commit e15cee685422e54e37237ac4203d0f3c4bf626f6 Author: Peter Lichard Date: Sat Jun 6 07:39:16 2020 +0200 Initial commit diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1e8d854 --- /dev/null +++ b/LICENSE @@ -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. + + opencn + Copyright (C) 2019 REDS institute + + 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..c631152 --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# OpenCN Release 1.0 + +# Qemu compilation + +./configure --target-list=x86_64-softmmu + + +# Linux compilation +make x86_64_defconfig + +# Rootfs +## rootfs in RAM +.config => INITRAMFS_SOURCE="../rootfs/images/rootfs.cpio" + + +# Build qemu-4.1.0 with qxl (spice) +## Install packages +**Debian** +sudo apt install libspice-protocol-dev libspice-server-dev libpixman-1-dev libepoxy-dev libgbm-dev libegl1-mesa-dev libsdl2-dev + +## Configure +./configure --target-list=x86_64-softmmu --enable-kvm --enable-spice --enable-avx2 --enable-opengl --enable-sdl diff --git a/banner b/banner new file mode 100644 index 0000000..2d56c1e --- /dev/null +++ b/banner @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2019 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License 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 St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ diff --git a/buildroot/.defconfig b/buildroot/.defconfig new file mode 100644 index 0000000..7ab0c3f --- /dev/null +++ b/buildroot/.defconfig @@ -0,0 +1,51 @@ +# +# Automatically generated make config: don't edit +# Mon Feb 18 09:11:56 2008 +# +BR2_HAVE_DOT_CONFIG=y +# BR2_alpha is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_cris is not set +# BR2_ia64 is not set +BR2_i386=y +# BR2_m68k is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_nios2 is not set +# BR2_powerpc is not set +# BR2_sh is not set +# BR2_sparc is not set +# BR2_sparc64 is not set +# BR2_x86_64 is not set +# BR2_x86_i486 is not set +# BR2_x86_i586 is not set +BR2_x86_i686=y +# BR2_x86_pentiumpro is not set +# BR2_x86_pentium_mmx is not set +# BR2_x86_pentium_m is not set +# BR2_x86_pentium2 is not set +# BR2_x86_pentium3 is not set +# BR2_x86_pentium4 is not set +# BR2_x86_prescott is not set +# BR2_x86_nocona is not set +# BR2_x86_core2 is not set +# BR2_x86_k6 is not set +# BR2_x86_k6_2 is not set +# BR2_x86_athlon is not set +# BR2_x86_athlon_4 is not set +# BR2_x86_opteron is not set +# BR2_x86_opteron_sse3 is not set +# BR2_x86_barcelona is not set +# BR2_x86_geode is not set +# BR2_x86_c3 is not set +# BR2_x86_winchip_c6 is not set +# BR2_x86_winchip2 is not set +BR2_ARCH="i686" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_TUNE="i686" +BR2_GCC_TARGET_ARCH="i686" + +# +# Target options +# diff --git a/buildroot/.flake8 b/buildroot/.flake8 new file mode 100644 index 0000000..afdb967 --- /dev/null +++ b/buildroot/.flake8 @@ -0,0 +1,2 @@ +[flake8] +max-line-length=132 diff --git a/buildroot/.gitignore b/buildroot/.gitignore new file mode 100644 index 0000000..bb02d9f --- /dev/null +++ b/buildroot/.gitignore @@ -0,0 +1,15 @@ +/output +/dl +/.auto.deps +/.config.cmd +/.config.old +/..config.tmp +/.config +*.depend +*.o +/*.patch +/*.diff +*.orig +*.rej +*~ +*.pyc diff --git a/buildroot/.gitlab-ci.yml b/buildroot/.gitlab-ci.yml new file mode 100644 index 0000000..59ce6ae --- /dev/null +++ b/buildroot/.gitlab-ci.yml @@ -0,0 +1,284 @@ +# Configuration for Gitlab-CI. +# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines +# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in. +# It needs to be regenerated every time a defconfig is added, using +# "make .gitlab-ci.yml". + +image: buildroot/base:20180318.1724 + +.defconfig_script: &defconfig_script + - echo 'Configure Buildroot' + - make ${CI_JOB_NAME} + - echo 'Build buildroot' + - | + make > >(tee build.log |grep '>>>') 2>&1 || { + echo 'Failed build last output' + tail -200 build.log + exit 1 + } + +check-gitlab-ci.yml: + script: + - mv .gitlab-ci.yml .gitlab-ci.yml.orig + - make .gitlab-ci.yml + - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml + +check-DEVELOPERS: + # get-developers should print just "No action specified"; if it prints + # anything else, it's a parse error. + # The initial ! is removed by YAML so we need to quote it. + script: + - "! utils/get-developers | grep -v 'No action specified'" + +check-package: + script: + - find . -type f \( -name '*.mk' -o -name '*.hash' \) -exec ./utils/check-package {} + + +.defconfig: &defconfig + # Running the defconfigs for every push is too much, so limit to + # explicit triggers through the API. + only: + - triggers + - tags + script: *defconfig_script + artifacts: + when: always + expire_in: 2 weeks + paths: + - build.log + - output/images/ + - output/build/build-time.log + - output/build/packages-file-list.txt + +.runtime_test: &runtime_test + # Keep build directories so the rootfs can be an artifact of the job. The + # runner will clean up those files for us. + # Multiply every emulator timeout by 10 to avoid sporadic failures in + # elastic runners. + script: ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${CI_JOB_NAME} + artifacts: + when: always + expire_in: 2 weeks + paths: + - test-output/*.log + - test-output/*/.config + - test-output/*/images/* +acmesystems_aria_g25_128mb_defconfig: *defconfig +acmesystems_aria_g25_256mb_defconfig: *defconfig +acmesystems_arietta_g25_128mb_defconfig: *defconfig +acmesystems_arietta_g25_256mb_defconfig: *defconfig +arcturus_ucp1020_defconfig: *defconfig +arm_foundationv8_defconfig: *defconfig +arm_juno_defconfig: *defconfig +armadeus_apf27_defconfig: *defconfig +armadeus_apf28_defconfig: *defconfig +armadeus_apf51_defconfig: *defconfig +at91sam9260eknf_defconfig: *defconfig +at91sam9g20dfc_defconfig: *defconfig +at91sam9g45m10ek_defconfig: *defconfig +at91sam9rlek_defconfig: *defconfig +at91sam9x5ek_defconfig: *defconfig +at91sam9x5ek_dev_defconfig: *defconfig +at91sam9x5ek_mmc_defconfig: *defconfig +at91sam9x5ek_mmc_dev_defconfig: *defconfig +atmel_sama5d27_som1_ek_mmc_dev_defconfig: *defconfig +atmel_sama5d2_xplained_mmc_defconfig: *defconfig +atmel_sama5d2_xplained_mmc_dev_defconfig: *defconfig +atmel_sama5d3_xplained_defconfig: *defconfig +atmel_sama5d3_xplained_dev_defconfig: *defconfig +atmel_sama5d3_xplained_mmc_defconfig: *defconfig +atmel_sama5d3_xplained_mmc_dev_defconfig: *defconfig +atmel_sama5d3xek_defconfig: *defconfig +atmel_sama5d4_xplained_defconfig: *defconfig +atmel_sama5d4_xplained_dev_defconfig: *defconfig +atmel_sama5d4_xplained_mmc_defconfig: *defconfig +atmel_sama5d4_xplained_mmc_dev_defconfig: *defconfig +bananapi_m1_defconfig: *defconfig +bananapi_m2_plus_defconfig: *defconfig +bananapi_m64_defconfig: *defconfig +bananapro_defconfig: *defconfig +beagleboardx15_defconfig: *defconfig +beaglebone_defconfig: *defconfig +beaglebone_qt5_defconfig: *defconfig +chromebook_snow_defconfig: *defconfig +ci20_defconfig: *defconfig +csky_gx6605s_defconfig: *defconfig +cubieboard2_defconfig: *defconfig +engicam_imx6qdl_icore_defconfig: *defconfig +engicam_imx6qdl_icore_qt5_defconfig: *defconfig +engicam_imx6qdl_icore_rqs_defconfig: *defconfig +engicam_imx6ul_geam_defconfig: *defconfig +engicam_imx6ul_isiot_defconfig: *defconfig +freescale_imx28evk_defconfig: *defconfig +freescale_imx6dlsabreauto_defconfig: *defconfig +freescale_imx6dlsabresd_defconfig: *defconfig +freescale_imx6qsabreauto_defconfig: *defconfig +freescale_imx6qsabresd_defconfig: *defconfig +freescale_imx6sxsabresd_defconfig: *defconfig +freescale_imx7dsabresd_defconfig: *defconfig +friendlyarm_nanopi_a64_defconfig: *defconfig +friendlyarm_nanopi_neo2_defconfig: *defconfig +galileo_defconfig: *defconfig +gdb_bfin_bf512_defconfig: *defconfig +grinn_chiliboard_defconfig: *defconfig +grinn_liteboard_defconfig: *defconfig +imx23evk_defconfig: *defconfig +imx6-sabreauto_defconfig: *defconfig +imx6-sabresd_defconfig: *defconfig +imx6-sabresd_qt5_defconfig: *defconfig +imx6slevk_defconfig: *defconfig +imx6sx-sdb_defconfig: *defconfig +imx6ulevk_defconfig: *defconfig +imx6ulpico_defconfig: *defconfig +imx7dpico_defconfig: *defconfig +lego_ev3_defconfig: *defconfig +linksprite_pcduino_defconfig: *defconfig +minnowboard_max-graphical_defconfig: *defconfig +minnowboard_max_defconfig: *defconfig +mx25pdk_defconfig: *defconfig +mx51evk_defconfig: *defconfig +mx53loco_defconfig: *defconfig +mx6cubox_defconfig: *defconfig +mx6sx_udoo_neo_defconfig: *defconfig +mx6udoo_defconfig: *defconfig +nanopi_m1_defconfig: *defconfig +nanopi_m1_plus_defconfig: *defconfig +nanopi_neo_defconfig: *defconfig +nexbox_a95x_defconfig: *defconfig +nitrogen6sx_defconfig: *defconfig +nitrogen6x_defconfig: *defconfig +nitrogen7_defconfig: *defconfig +odroidc2_defconfig: *defconfig +olimex_a13_olinuxino_defconfig: *defconfig +olimex_a20_olinuxino_lime2_defconfig: *defconfig +olimex_a20_olinuxino_lime_defconfig: *defconfig +olimex_a20_olinuxino_lime_mali_defconfig: *defconfig +olimex_a20_olinuxino_micro_defconfig: *defconfig +olimex_a64_olinuxino_defconfig: *defconfig +olimex_imx233_olinuxino_defconfig: *defconfig +openblocks_a6_defconfig: *defconfig +orangepi_lite_defconfig: *defconfig +orangepi_one_defconfig: *defconfig +orangepi_pc2_defconfig: *defconfig +orangepi_pc_defconfig: *defconfig +orangepi_pc_plus_defconfig: *defconfig +orangepi_plus_defconfig: *defconfig +orangepi_prime_defconfig: *defconfig +orangepi_win_defconfig: *defconfig +orangepi_zero_defconfig: *defconfig +orangepi_zero_plus2_defconfig: *defconfig +pandaboard_defconfig: *defconfig +pc_x86_64_bios_defconfig: *defconfig +pc_x86_64_efi_defconfig: *defconfig +pine64_defconfig: *defconfig +pine64_sopine_defconfig: *defconfig +qemu_aarch64_virt_defconfig: *defconfig +qemu_arm_versatile_defconfig: *defconfig +qemu_arm_versatile_nommu_defconfig: *defconfig +qemu_arm_vexpress_defconfig: *defconfig +qemu_m68k_mcf5208_defconfig: *defconfig +qemu_m68k_q800_defconfig: *defconfig +qemu_microblazebe_mmu_defconfig: *defconfig +qemu_microblazeel_mmu_defconfig: *defconfig +qemu_mips32r2_malta_defconfig: *defconfig +qemu_mips32r2el_malta_defconfig: *defconfig +qemu_mips32r6_malta_defconfig: *defconfig +qemu_mips32r6el_malta_defconfig: *defconfig +qemu_mips64_malta_defconfig: *defconfig +qemu_mips64el_malta_defconfig: *defconfig +qemu_mips64r6_malta_defconfig: *defconfig +qemu_mips64r6el_malta_defconfig: *defconfig +qemu_nios2_10m50_defconfig: *defconfig +qemu_or1k_defconfig: *defconfig +qemu_ppc64_pseries_defconfig: *defconfig +qemu_ppc64le_pseries_defconfig: *defconfig +qemu_ppc_g3beige_defconfig: *defconfig +qemu_ppc_mpc8544ds_defconfig: *defconfig +qemu_ppc_virtex_ml507_defconfig: *defconfig +qemu_sh4_r2d_defconfig: *defconfig +qemu_sh4eb_r2d_defconfig: *defconfig +qemu_sparc64_sun4u_defconfig: *defconfig +qemu_sparc_ss10_defconfig: *defconfig +qemu_x86_64_defconfig: *defconfig +qemu_x86_defconfig: *defconfig +qemu_xtensa_lx60_defconfig: *defconfig +qemu_xtensa_lx60_nommu_defconfig: *defconfig +raspberrypi0_defconfig: *defconfig +raspberrypi2_defconfig: *defconfig +raspberrypi3_64_defconfig: *defconfig +raspberrypi3_defconfig: *defconfig +raspberrypi3_qt5we_defconfig: *defconfig +raspberrypi_defconfig: *defconfig +roseapplepi_defconfig: *defconfig +s6lx9_microboard_defconfig: *defconfig +sheevaplug_defconfig: *defconfig +snps_aarch64_vdk_defconfig: *defconfig +snps_arc700_axs101_defconfig: *defconfig +snps_archs38_axs103_defconfig: *defconfig +snps_archs38_haps_defconfig: *defconfig +snps_archs38_vdk_defconfig: *defconfig +socrates_cyclone5_defconfig: *defconfig +solidrun_macchiatobin_mainline_defconfig: *defconfig +solidrun_macchiatobin_marvell_defconfig: *defconfig +stm32f429_disco_defconfig: *defconfig +stm32f469_disco_defconfig: *defconfig +toradex_apalis_imx6_defconfig: *defconfig +ts4800_defconfig: *defconfig +ts4900_defconfig: *defconfig +ts5500_defconfig: *defconfig +ts7680_defconfig: *defconfig +wandboard_defconfig: *defconfig +warp7_defconfig: *defconfig +warpboard_defconfig: *defconfig +zynq_microzed_defconfig: *defconfig +zynq_zc706_defconfig: *defconfig +zynq_zed_defconfig: *defconfig +zynq_zybo_defconfig: *defconfig +tests.boot.test_atf.TestATFAllwinner: *runtime_test +tests.boot.test_atf.TestATFMarvell: *runtime_test +tests.boot.test_atf.TestATFVexpress: *runtime_test +tests.core.test_post_scripts.TestPostScripts: *runtime_test +tests.core.test_rootfs_overlay.TestRootfsOverlay: *runtime_test +tests.core.test_timezone.TestGlibcAllTimezone: *runtime_test +tests.core.test_timezone.TestGlibcNonDefaultLimitedTimezone: *runtime_test +tests.core.test_timezone.TestNoTimezone: *runtime_test +tests.fs.test_ext.TestExt2: *runtime_test +tests.fs.test_ext.TestExt2r1: *runtime_test +tests.fs.test_ext.TestExt3: *runtime_test +tests.fs.test_ext.TestExt4: *runtime_test +tests.fs.test_iso9660.TestIso9660Grub2External: *runtime_test +tests.fs.test_iso9660.TestIso9660Grub2ExternalCompress: *runtime_test +tests.fs.test_iso9660.TestIso9660Grub2Internal: *runtime_test +tests.fs.test_iso9660.TestIso9660SyslinuxExternal: *runtime_test +tests.fs.test_iso9660.TestIso9660SyslinuxExternalCompress: *runtime_test +tests.fs.test_iso9660.TestIso9660SyslinuxInternal: *runtime_test +tests.fs.test_jffs2.TestJffs2: *runtime_test +tests.fs.test_squashfs.TestSquashfs: *runtime_test +tests.fs.test_ubi.TestUbi: *runtime_test +tests.fs.test_yaffs2.TestYaffs2: *runtime_test +tests.init.test_busybox.TestInitSystemBusyboxRo: *runtime_test +tests.init.test_busybox.TestInitSystemBusyboxRoNet: *runtime_test +tests.init.test_busybox.TestInitSystemBusyboxRw: *runtime_test +tests.init.test_busybox.TestInitSystemBusyboxRwNet: *runtime_test +tests.init.test_none.TestInitSystemNone: *runtime_test +tests.init.test_systemd.TestInitSystemSystemdRoFull: *runtime_test +tests.init.test_systemd.TestInitSystemSystemdRoIfupdown: *runtime_test +tests.init.test_systemd.TestInitSystemSystemdRoNetworkd: *runtime_test +tests.init.test_systemd.TestInitSystemSystemdRwFull: *runtime_test +tests.init.test_systemd.TestInitSystemSystemdRwIfupdown: *runtime_test +tests.init.test_systemd.TestInitSystemSystemdRwNetworkd: *runtime_test +tests.package.test_dropbear.TestDropbear: *runtime_test +tests.package.test_ipython.TestIPythonPy2: *runtime_test +tests.package.test_ipython.TestIPythonPy3: *runtime_test +tests.package.test_python.TestPython2: *runtime_test +tests.package.test_python.TestPython3: *runtime_test +tests.package.test_rust.TestRust: *runtime_test +tests.package.test_rust.TestRustBin: *runtime_test +tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test +tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test +tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test +tests.toolchain.test_external.TestExternalToolchainCtngMusl: *runtime_test +tests.toolchain.test_external.TestExternalToolchainLinaroArm: *runtime_test +tests.toolchain.test_external.TestExternalToolchainSourceryArmv4: *runtime_test +tests.toolchain.test_external.TestExternalToolchainSourceryArmv5: *runtime_test +tests.toolchain.test_external.TestExternalToolchainSourceryArmv7: *runtime_test diff --git a/buildroot/.gitlab-ci.yml.in b/buildroot/.gitlab-ci.yml.in new file mode 100644 index 0000000..c0e9563 --- /dev/null +++ b/buildroot/.gitlab-ci.yml.in @@ -0,0 +1,65 @@ +# Configuration for Gitlab-CI. +# Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines +# The .gitlab-ci.yml file is generated from .gitlab-ci.yml.in. +# It needs to be regenerated every time a defconfig is added, using +# "make .gitlab-ci.yml". + +image: buildroot/base:20180318.1724 + +.defconfig_script: &defconfig_script + - echo 'Configure Buildroot' + - make ${CI_JOB_NAME} + - echo 'Build buildroot' + - | + make > >(tee build.log |grep '>>>') 2>&1 || { + echo 'Failed build last output' + tail -200 build.log + exit 1 + } + +check-gitlab-ci.yml: + script: + - mv .gitlab-ci.yml .gitlab-ci.yml.orig + - make .gitlab-ci.yml + - diff -u .gitlab-ci.yml.orig .gitlab-ci.yml + +check-DEVELOPERS: + # get-developers should print just "No action specified"; if it prints + # anything else, it's a parse error. + # The initial ! is removed by YAML so we need to quote it. + script: + - "! utils/get-developers | grep -v 'No action specified'" + +check-package: + script: + - find . -type f \( -name '*.mk' -o -name '*.hash' \) -exec ./utils/check-package {} + + +.defconfig: &defconfig + # Running the defconfigs for every push is too much, so limit to + # explicit triggers through the API. + only: + - triggers + - tags + script: *defconfig_script + artifacts: + when: always + expire_in: 2 weeks + paths: + - build.log + - output/images/ + - output/build/build-time.log + - output/build/packages-file-list.txt + +.runtime_test: &runtime_test + # Keep build directories so the rootfs can be an artifact of the job. The + # runner will clean up those files for us. + # Multiply every emulator timeout by 10 to avoid sporadic failures in + # elastic runners. + script: ./support/testing/run-tests -o test-output/ -d test-dl/ -k --timeout-multiplier 10 ${CI_JOB_NAME} + artifacts: + when: always + expire_in: 2 weeks + paths: + - test-output/*.log + - test-output/*/.config + - test-output/*/images/* diff --git a/buildroot/CHANGES b/buildroot/CHANGES new file mode 100644 index 0000000..9acc9c2 --- /dev/null +++ b/buildroot/CHANGES @@ -0,0 +1,6511 @@ +2018.02.4, Released July 21th, 2018 + + Important / security related fixes. + + U-Boot: Ensure host version of ncurses is picked up and not + host-ncurses built by buildroot, as that otherwise causes + widechar/non-widechar conflicts and corrupted menuconfig + menus. + + Linux: Enable CONFIG_PERF_EVENTS when perf is enabled. + + Defconfigs: Raspberrypi3: Bump rootfs size, Minnowboard-max: + Support ethernet on Turbot variant. + + Updated/fixed packages: bind, clamav, collectd, dos2unix, + edid-decode, gcc, gdb, heimdal, hidapi, imx-gpu-viv, libcurl, + libglib2, liblogging, libostree, libsoup, libv4l, lm-sensors, + ncurses, network-manager, patchelf, pinentry, procps-ng, qpdf, + qt5, qt53d, qt5base, qt5charts, qt5script, qt5serialport, + systemd, wireguard, wireless-regdb + + Issues resolved (http://bugs.uclibc.org): + + #11101: host-patchelf Endian Issue with relative RPATH + +2018.02.3, Released June 18th, 2018 + + Important / security related fixes. + + Various fixes for building on modern distributions (GCC 8.x, + no rpcgen utility). + + ARM: Default to binutils 2.28 and warn about newer binutils + versions, which are known to cause boot failures for Linux + kernels built in thumb mode. + + Busybox/mdev: Fix module autoloading. + + Busybox/sysvinit: inittab: Add /dev/{stdin,stdout,stderr} + symlinks, call swapon -a to activate any configured swap + devices. + + Dependencies: Check that PATH does not contain current working + directory, which triggers a number of build failures. + + Infrastructure: Error out for packages erroneously using the + 'local' site method but not defining a _SITE. + + Linux: Fix cuImage. / simpleImage. handling. Ensure + kconfig uses ncurses from the host to fix a ncurses/ncursesw + mixup, causing menuconfig display corruption. + + Toolchain: Workarounds for fix-rpath issues with binutils and + elf2flt. + + Util-linux: Fix blocking on getrandom() issue with recent + kernels. + + Remove broken freescale_imx31_3stack, + freescale_imx6sololiteevk and freescale_imx6ulevk defconfigs. + + Updated/fixed packages: apr-util, asterisk, attr, audit, + autofs, binutils, busybox, cifs-utils, cups-filters, dash, + ebtables, exim, expect, f2fs-tools, faketime, file, gdb, git, + glibc, gnupg, gnupg2, gst1-plugins-bad, imagemagick, jamvm, + jpeg-turbo, libcap, libcoap, libcurl, libgcrypt, libjpeg, + libnss, libressl, libtirpc, libvncserver, libvorbis, libxslt, + log4cplus, lrzsz, ltrace, lynx, mariadb, mbedtls, mpg123, + nasm, netplug, network-manager, nfs-utils, nodejs, + openvmtools, patch, perl, php-amqp, poppler, procps-ng, + python, python-websockets, quota, redis, samba4, sysvinit, + transmission, triggerhappy, util-linux, wavpack, wget, + wireshark, xen, zmqpp + + Issues resolved (http://bugs.uclibc.org): + + #10986: Installing package attr when already supplied by busybox.. + #11031: ld-elf2flt: host/bin/ld.real': execvp: No such file or.. + +2018.02.2, Released May 4th, 2018 + + Important / security related fixes. + + Tweak package size/file instrumentation to better handle + package rebuilds. + + Revert /etc/shells creation when bash is enabled. + + Exclude /lib/firmware from the rpath fixup logic, as it may + contain non-native ELF files. + + Scanpypi: Support the new PyPi infrastructure. + + Handle GCC 8.x on the host. + + Ensure timestamp of /usr is updated to support the systemd + ConditionNeedsUpdate option. + + Updated/fixed packages: bluez5_utils, flann, gdb, gnupg2, + grub2, libcec, libcgi, libglib2, libgpg-error, libgpgme, + libtomcrypt, mbedtls, mkpasswd, php, python, python-requests, + python-watchdog, qt53d, qt5websockets, sdl2, sdl2_image, + syslog-ng, systemd, tcl, tcllib, uclibc, usb_modeswitch, + wireguard, wmctrl + + Issues resolved (http://bugs.uclibc.org): + + #10896: /bin/sh not in /etc/shells + #10961: Grub2 fails to build for x86_64 when BR2_SSP_ALL is enabled + +2018.02.1, Released April 9th, 2018 + + Important / security related fixes. + + Removed unmaintained defconfigs: Creator Ci40, Firefly rk3288, + Freescale mpc8315erdb / p1010rdb_pa, Riotboard, Teliv EVK + Pro3. + + Infrastructure: Speed up instrumentation for package size by + comparing timestamps instead of md5 checksums, as doing + checksums could lead to up to 25% longer build time for big + configurations. + + Rename the internal _BASE_NAME variable to _NASENAME + to avoid name clashes with packages ending on '-base'. + + Add a better fix for build issues for autotools based packages + checking for C++ support on toolchains without C++ support. + + Build host-tar if tar is older than 1.27 on the build machine + to work around reproducibility issues with git archives + containing long paths. + + check-unique-files: Fix for filenames not representable in the + users' locale. + + Check-bin-arch: Add support for per-package ignore paths + (_BIN_ARCH_EXCLUDE). + + Toolchain: Fix SSP support detection for external toolchains. + + linux: Add _NEEDS_HOST_OPENSSL / LIBELF options to ensure + these dependencies are available for Linux configurations + needed these dependencies, similar to how it is done for + U-Boot. + + Support custom (not in tree) device tree files in addition to + in-tree ones. + + U-Boot / uboot-tools: Fix header conflict with libfdt-devel + installed on host. + + Updated/fixed packages: apache, busybox, c-ares, cmake, + docker-engine, enlightenment, eudev, fbgrab, freescale-imx, + gtest, imagemagick, intel-microcode, irssi, jimtcl, kmod, + kodi, ktap, libcoap, libcurl, libfcgi, libhttpparser, + libminiupnpc, libopenssl, libpjsip, libss7, libssh2, libupnp + libupnpp, libuv, libvorbis, memcached, motion, musl, nodejs, + ntp, openblas, opencv3, openocd, opus-tools, patch, php, + pkgconf, postgresql, powerpc-utils, python-jsonschema, + python-webpy, qemu, qt5bsae, qt5script, qt5webkit, rapidjson, + rauc, sam-ba, samba4, sngrep, systemd, tremor, uboot-tools, + uclibc-ng-test, upmpdcli, wireshark, xerces, xterm, zstd + + New packages: docker-proxy, python-functools32 + + Issues resolved (http://bugs.uclibc.org): + + #10766: upmpdcli: Segmentation fault + #10776: ktap fails to build + #10846: error in compiling gnutls + #10856: openblas on qemu_x86_64_defconfig fails with "sgemm_.. + +2018.02, Released March 4th, 2018 + + Fixes all over the tree. + + Issues with systemd with a readonly rootfs and DBus fixed. + + Instructure: + - check-uniq-files: fix Python 2.6 compatibility. + - dependencies.sh: check for external argparse module for + Python 2.6. + - Add infrastructure to detect and use a UTF-8 locale on the + host, needed by systemd. + + Update/fixed packages: clamav, dash, dhcp, dovecot, efl, + ffmpeg, libv4l, mono, mosquitto, php, postgresql, qt, + scanpypi, sdl2, systemd, tor, tvheadend, uboot, wavpack + + Issues resolved (http://bugs.uclibc.org): + + #10831: qemu_x86_64_defconfig build fails on linux-headers.. + +2018.02-rc3, Released February 27th, 2018 + + Fixes all over the tree. + + check-bin-arch: skip /lib/modules to allow 32-bit userland + with 64bit kernel. + + dependencies: Blacklist tar 1.30+ and build our own host-tar + if needed as tar 1.30+ changed the --numeric-owner output for + long path names. Build host-tar before other host-dependencies + as they need it to extract their source tarballs. + + Update/fixed packages: asterisk, azmq, bluez5_utils, domoticz, + e2fsprogs, erlang, exim, glibc, gpsd, jq, libglib2, libvorbis, + mariadb, mbedtls, mesa3d, mesa3d-headers, mpv, patch, pcre2, + php, qt5, qt5multimedia, qt5wayland, qt5webengine, qt5webkit, + systemd, quagga, rustc, uboot, wireguard, zic, zlib-ng + + Issues resolved (http://bugs.uclibc.org): + + #10726: Current libglib2.mk creates broken libglib2 binary... + #10786: Linux fails to build unless make linux-menuconfig... + #10796: Cannot generate cpio image without selecting CON... + +2018.02-rc2, Released February 15th, 2018 + + Fixes all over the tree. + + Dependencies: Ensure C++ support is available like for C + support for packages needing 32bit host support. + + utils/genrandconfig: Check host dependencies for config. + + Updated/fixed packages: busybox, dnsmasq, dropbear, ffmpeg, + glibc, keepalived, libcpprestsdk, libgpiod, libmaxminddb, + librsvg, libtasn1, libv4l, libxml2, lightning, ltp-testsuite, + mesa3d, mesa3d-demos, mesa3d-headers, nftables, open-lldp, + php, postgresql, python-crossbar, qt5, qt53d, qt5enginio, + qt5tools, qt5webengine, qt5webkit, rsync, rust-bin, rustc, + systemd + + Issues resolved (http://bugs.uclibc.org): + + #9781: ti-sgx-km build on kernel >4.1 + #10141: Squashfs extended attribute failures + +2018.02-rc1, Released February 5th, 2018 + + The global source-check and per-package -source-check + targets have been removed. + + Architecture: Add x86 Silvermont variant. Add several new ARM + variants, rework MIPS NaN logic. Support mainline binutils/gcc + for ARC. + + Toolchains: Linaro toolchains upgraded to 2017.11 release, ARC + external toolchains upgraded to arc-2017.09. Libatomic is now + also copied for external musl based toolchains. + Add binutils 2.30.x and switch to binutils 2.29.x by default. + + Added hardening options to build with RELRO and FORTITY. + + New defconfigs: Bananapi M64, FriendlyARM Nanopi A64 & NEO2, + imx6slevk, imx6sx-sdb, imx6ulevk, Olimex A64-OLinuXino, + Orangepi lite / pc plus / pc / prime / win / win plus / zero + plus2, Pine64, Solidrun MacchiatoBin. Sopine. + + Add utils/diffconfig, a simple utility for comparing + configuration files - Adapted from the version in the + Linux kernel. + + Infrastructure: Check that the same file is not touched by + multiple packages, as a preparation for toplevel parallel + builds. + + Hashes for the license files for a large number of packages + have been added, ensuring that license changes will not be + missed when packages are bumped. + + Fix build issue for autotools based packages checking for C++ + support on toolchains without C++ support and on a distro + lacking /lib/cpp (E.G. Arch Linux). + + Support for the meson build system. + + Pie charts generated by 'graph-build' or 'graph-size' are now + sorted according to the size of each piece. + + System: Only show getty options when busybox init or sysvinit + are used. + + ARM-trusted-firmware: Support ATF bundled in U-Boot as + well as U-Boot bundled in ATF. + + Zlib is now a virtual package, provided by either libzlib or + zlib-ng, similar to openssl. + + Support for the Rust programming language. + + New packages: aoetools, armbian-firmware, binaries-marvell, + brltty, cargo, cargo-bin, cups-filters, curlpp, daq, + flatbuffers, gconf, glorytun, gstreamer1-mm, imx-m4fwloader, + imx-gpu-g2d, json-for-modern-cpp, libcpprestsdk, libgta, + libostree, libupnp18, luadbi, luadbi-sqlite3, lua-utf8, lynx, + meson, mv-ddr-marvell, nilfs-utils, opentracing-cpp, + open-lldp, pimd, proj, python-flask-cors, + python-jaraco-classes, python-more-itertools, python-oauthlib, + python-raven, python-remi, python-requests-oauthlib, + python-schedule, python-secretstorage, python-see, + python-tabledata, python-txtorcon, python-xlib, qt5charts, + rtl8189fs, rtl8723bu, rust, rustc, rust-bin, rygel, safeclib, + solatus, tcf-agent, traceroute, waylandpp, wolfssl, + zisofs-tools, zlib-ng + + Removed packages: eeprog + +2017.11.2, Released January 21st, 2018 + + Important / security related fixes. + + External toolchain: libatomic is now also copied for musl + based toolchains. + + nconfig: Fix for ncurses/ncursesw linking issue causing crashes. + + System: Only show getty options when busybox init or sysvinit + are used. + + Infrastructure: Fix build issue for autotools based packages + checking for C++ support on toolchains without C++ support and + on a distro lacking /lib/cpp (E.G. Arch Linux). + + Pie charts generated by 'graph-build' or 'graph-size' are now + sorted according to the size of each piece. + + Updated/fixed packages: asterisk, avahi, bind, busybox, + coreutils, eeprog, intel-microcode, iputils, irssi, kmsxx, + libiio, linux-firmware, lz4, mariadb, matchbox-lib, mcookie, + ntp, php, pound, rpcbind, tar, ti-cgt-pru, webkitgtk, xen, + xlib_libXpm + + Issues resolved (http://bugs.buildroot.org): + + #9996: lz4 package does not install lz4 binaries in target + #10176: Rsyslog's S01logging is deleted by Busybox.mk from... + #10216: package/x11r7/mcookie/mcookie.c:207: bad size ? + #10301: systemd/getty unused options + #10331: kmsxx, host installation fails with BR2_SHARED_... + #10556: Building ntp package with SSL library libressl... + #10641: avahi-autoipd not starting when using systemd-tmpfiles + +2017.11.1, Released December 31th, 2017 + + Important / security related fixes. + + Updated/fixed packages: asterisk, checkpolicy, dhcp, flann, + gdb, glibc, heimdal, kodi-pvr-mediaportal-tvserver, + kodi-pvr-stalker, libcue, libopenssl, libpqxx, libsoxr, + linknx, linux-tools, lldpd, ltp-testsuite, mariadb, mfgtools, + nodejs, nut, pulseaudio, python-cffi, qemu, rsync, tor, uboot, + uboot-tools, vlc, webkitgtk, weston, wireguard, wireshark, + xenomai, xfsprogs + +2017.11, Released November 30, 2017 + + Fixes all over the tree. + + Toolchain: Use github mirror for Glibc. + + Defconfigs: Correct boot.cmd for bananapi-m1. + + Makefiles: Workaround include order issues for certain make + versions by explicitly sorting the result of wildcard where it + matters. + + Download: Ensure subversion runs in non-interactive mode. + + Updated/fixed packages: asterisk, boost, chrony, dovecot, + dvb-apps, exim, feh, freerdp, fwup, google-breakpad, jose, + kvm-unit-test, lftp, libcurl, libevent, libfastjson, libpjsip, + libupnp, linphone, localedef, lttng-tools, mp4v2, mtools, + ndisc6, oracle-mysql, parted, pdbg, qt, qt5connectivity, + qt5declarative, qt5webkit, rauc, runc, samba4, shairport-sync, + systemd-bootchart, webkitgtk, wireguard, xlib_libXcursor, + xlib_libXfont, xlib_libXfont2, + + Issues resolved (http://bugs.buildroot.org): + + 10501: host-localedef fails to compile on Ubuntu 17.10 + 10506: Changed kernel image type (e.g. zImage to uImage)... + +2017.11-rc2, Released November 13th, 2017 + + Fixes all over the tree. + + Updated/fixed packages: collectd, ffmpeg, freerdp, + go-bootstrap, imagemagick, jimtcl, libpjsip, libplist, libuv, + mesa3d, nodejs, ntp, openjpeg, postgresql, python-numpy, ruby, + snmp++, usb_modeswitch, util-linux, vboot-utils, webkitgtk, + wireshark, wpa_supplicant, xapp_xdriinfo + + Issues resolved (http://bugs.buildroot.org): + + #10326: mesa3d package fails to build when BR2_SHARED_STATIC_LIBS=y + #10491: Cannot output security warning when compiled with buildroot.. + +2017.11-rc1, Released November 6th, 2017 + + Fixes all over the tree and new features. + + Openssl is now a virtual package, which may be provided by + OpenSSL (now renamed to libopenssl) or LibreSSL. + + libssh2: there is now an explicit choice of the backend to use + (mbedtls, gnutls or openssl). Previously, the choice was implicit + based on the TLS library that was selected. Now, it is possible to + choose the backend, which is important if several TLS libraries are + selected. + + netsnmp: all MIB files are now installed, making the target filesystem a + bit bigger than before. To remove unneeded MIBS, you should use a + post-build script. + + Toolchain: Linaro toolchains updated to 2017.08, ARC toolchain + updated to 2017.09, Glibc updated to 2.26, Glibc support for + ARCv2. The toolchain wrapper now handles SOURCE_DATE_EPOCH for + older (pre-gcc7.x) toolchains for BR2_REPRODUCIBLE. + + New defconfigs: Atmel SAM45D27, Bananapi M1 and M2 Plus, + Engicam i.CoreM6 Qt5 configuration, i.MX6 sabreauto (mainline + kernel/u-boot), i.MX6Q sabresd Qt5 configuration, i.MX7d-pico, + QEMU ppc64le, Raspberry pi3 Qt5 webengine configuration, + Technologic TS-7680. + + New packages: asterisk, azmq, bcg729, boinc, dahdi-linux, + dahdi-tools, freeswitch-mod-bcg729, fscryptctl, libb64, + libpri, libss7, lua-basexx, lua-compat53, lua-cqueues, + lua-curl, lua-datafile, lua-fifo, lua-httpd, + lua-lpeg-patterns, lua-markdown, lua-sailor, lua-value, + luksmeta, minetest, minetest-game, pdmenu, prosody, + python-aiocoap, python-automat, python-ibmiotf, + python-iso8601, python-m2r, python-simplesqlite, + python-websockets, python-xmltodict, qt5wayland, qt5webengine, + restorecond, selinux-python, semodule-utils, uhubctl, + wireguard, wsapi-fcgi, wsapi-xavante + + Removed packages: aiccu, rfkill, sepolgen + + Issues resolved (http://bugs.buildroot.org): + + #10281: lsblk does not compile for util-linux + #10336: lttng compilation fails : linking error + #10351: glibc missing in rootfs + #10356: nfs-utils missing header + #10361: python3 python-config script generates invalid includes + #10366: dropbear download url has changed + #10391: WiringPi retrieves wrong (old) version + #10406: Beaglebone black: Buggy SGX driver version, swapped... + #10426: uboot-tools' fw_setenv does not update the redundant... + #10451: libpcap 1.8.x and 1.7x does not compile on PPC + +2017.08.2, Released November 28th, 2017 + + Important / security related fixes. + + Qt: 5.6 version updated to 5.6.3. + + Reproducible: Do not override SOURCE_DATE_EPOCH if already set + in the environment. + + Makefiles: Workaround include order issues for certain make + versions by explicitly sorting the result of wildcard where it + matters. + + Updated/fixed packages: apr, apr-util, arqp-standalone, + azure-iot-sdk-c, collectd, dvb-apps, ffmpeg, go-bootstrap, + google-breakpad, gstreamer, imagemagick, irssi, jimtcl, + kvm-unit-test, libcurl, libfastjson, libglib2, libidn, + libpjsip, libplist, localedef, lttng-tools, luajit, mesa3d, + moarvm, mp4v2, openssh, openssl, oracle-mysql, postgresql, + python3, python-pyqt5, qt, qt5base, qt5canvas3d, + qt5connectivity, qt5declarative, qt5engineio, + qt5graphicaleffects, qt5imageformats, qt5location, + qt5multimedia, qt5quickcontrols, qt5quickcontrols2, qt5script, + qt5sensors, qt5serialbus, qt5serialport, qt5svg, qt5tools, + qt5webchannel, qt5webkit, qt5websockets, qt5x11extras, + qt5xmlpatterns, quagga, redis, ruby, samba4, sdl2, snmppp, + swupdate, ti-gfx, uboot-tools, usb_modeswitch, vboot-utils, + webkitgtk, wget, wireshark, xapp_xdriinfo. + + Issues resolved (http://bugs.buildroot.org): + + 10326: mesa3d package fails to build when BR2_SHARED_STATIC_LIBS=y + 10361: python3 python-config script generates invalid includes + 10501: host-localedef fails to compile on Ubuntu 17.10 + +2017.08.1, Released October 23rd, 2017 + + Important / security related fixes. + + Webkitgtk bumped to the 2.18.x series, fixing a large number + of security issues. + + Defconfigs: galileo: fix ext4 related kernel config, bump + kernel for gcc 6.x compatibility, enable wchar support for + grub2. wandboard: correct rootfs offset + + support: Ensure gzip compression level 6 is used for git + tarballs. check-bin-arch: Correctly handle (ignore) symbolic + links. check-rpath: Also handle PIE binaries + + External toolchain: Correctly handle glibc Buildroot + toolchains built with merged /usr + + musl: fix ARMv4 build with binutils 2.27.51+, fix for + CVE-2017-15650 + + Updated/fixed packages: apache, augeas, bind, bluez5_utils, + busybox, bzip2, cmake, dnsmasq, ejabberd, gcc, git, go, ffmpeg, file, + flashrom, gd, gdk-pixbug, gnupg2, hostapd, ifupdown-scripts, + imagemagick, iucode-tool, kernel-module-imx-gpu-viv, lame, + libarchive, libcurl, libffi, libidn, libmbim, libnspr, libnss, + libressl, librsync, libsoup, libxml2, libzip, mbedtls, musl, + netplug, nginx, openvpn, pkgconf, poppler, proxychains-ng, + qemu, qt, rpi-userland, syslog, ruby, samba4, softether, + sqlite, strongswan, subversion, supertuxkart, supervisor, tcpdump, + tor, unrar, urq, vboot-utils, webkitgtk, wpa_supplicant, xen, + xmlstarlet, xlib_libXfont, xlib_libXfont2, + xserver_xorg-server, zsh + +2017.08, Released September 1st, 2017 + + Minor fixes. + + Toolchain: Don't allow internal toolchain builds for MIPS + M6201/P6600, as support for these are not yet in mainline GCC. + + Updated/fixed packages: bcusdk, connman, dialog, dnsmasq, + gnupg, grub2, iostat, iucode-tool, libgcrypt, libkcapi, + libphidget, libv4l, linux-tools, mediastreamer, minidlna, + nss-pam-ldapd, nvidia-driver, qt-webkit-kiosk, rpcbind, squid, + transmission, vde2, vim + + Updated/fixed defconfigs: + + Removed packages: simicfs. + + Issues resolved (http://bugs.buildroot.org): + + #10261: Grub2 fails to build for x86_64 + +2017.08-rc3, Released August 23rd, 2017 + + Fixes all over the tree. + + Updated/fixed packages: alsa-lib, alsa-utils, cc-tool, + dbus-cpp, e2fsprogs, elf2flt, faad2, fakeroot, gcc, git, gpsd, + gst1-validate, kvmtool, libconfuse, libepoxy, librsync, + libspatialindex, libunwind, linux, linux-headers, lua, + mariadb, mesa3d, mtd, openocd, python3, syslinux, sysvinit, + whois, xen, zmqpp. + + Updated/fixed defconfigs: ci20, socrates_cyclone5, + toradex_apalis_imx6. + + Removed defconfig: Armadeus APF9328. + + skeleton-* packages introduced in -rc1 have been renamed to + skeleton-init-* instead. + + Issues resolved (http://bugs.buildroot.org): + + #10141: Squashfs extended attribute failures + +2017.08-rc2, Released August 11th, 2017 + + Fixes all over the tree. + + Updated/fixed packages: bind, dbus, erlang-p1-xml, faad2, + ficl, gcc, gdb, glibc, jack2, libcurl, linux, linux-headers, + lua, mutt, nvme, qt5base, skeleton-common, snappy, stella, + swupdate, uclibc, valgrind, webkitgtk. + + Updated/fixed defconfigs: beaglebone_qt5, minnowboard_max, + nanopi_m1{, _plus}, olimex_a20_olinuxino_lime, qemu_sparc, + qemu_sparc64. + + The cmake-package infrastructure for host packages has been + fixed to not incorrectly detect target packages through + pkg-config. + + Issues resolved (http://bugs.buildroot.org): + + #9926: systemd-resolved.service: Failed at step NAMESPACE (systemd 233) + #10021: libqeglfs-viv-integration.so file is missing for qt5 on armv7 + #10026: lua-5.3.4: fix lua linker error in swupdate + #10146: package/skeleton-common fix recursive variable + #10156: glibc compilation fails for X86 32bits (i386) + #10201: toolchain-wrapper.c:192: (error) Memory leak: + #10221: Buildroot Support + +2017.08-rc1, Released August 2nd, 2017 + + Infrastructure: + + - The skeleton package has been split into multiple packages: + skeleton-sysv (when Busybox or SysV init are used), + skeleton-systemd (when systemd is used), skeleton-none (when + no init system is used) and skeleton-custom (when a custom + skeleton is used). Those packages, except skeleton-custom, + share common logic and data in a new package called + skeleton-common. The skeleton package becomes a virtual + package. This change allows to generate a filesystem that is + compliant with systemd expectations. + + - Support for using a read-only filesystem with systemd has + been fixed. + + - Major revamp of the gettext handling, with user-visible + effect: + + - prior to this revamp, when BR2_ENABLE_LOCALE=y, each + package could decide to enable or not NLS support. When + BR2_ENABLE_LOCALE was disabled, NLS support was forced off + by passing --disable-nls to packages. + + - after this revamp, a new BR2_SYSTEM_ENABLE_NLS option + controls whether NLS support should be enabled or not in + packages. This option defaults to disabled, which means + that now, NLS support is by default disabled in all + packages. + + Therefore, if you need NLS support in packages, you must now + explicitly enable the BR2_SYSTEM_ENABLE_NLS option. + + - The host directory no longer has a usr/ component. This + makes it much more natural to use that directory as an + externally used toolchain. For compatibility with existing + scripts, a usr -> . link is still added. + + - Hashes are now checked on tarballs by Buildroot when a + package is sourced from a Git repository. + + - Patches are no longer being downloaded from Github, since + auto-generated patches could change over time, and break + hashes. All patches that were downloaded from Github are now + stored in their respective package directories. + + - Hash files in packages can now contain hashes for the + license files contained in the package source code. This + allows to detect changes in such license files. + + - Binaries in $(TARGET_DIR) are now cleaned up from invalid + RPATHs at the end of the build. + + - A new "make sdk" target prepares $(HOST_DIR) to be + relocatable: turns RPATHs in host binaries into relocatable + ones, removes bogus RPATHs from staging binaries/libraries, + and provides a relocate-sdk script that can be executed to + relocate the SDK after installation. + + - Addition of utils/genrandconfig which generates a random + configuration based on a set of pre-defined toolchain + configurations (support/config-fragments/autobuild/) and a + random selection of packages. It is now used by the + autobuilders to generate the random configurations. + + Filesystems: + + - ext2/3/4 filesystems are now generated using mkfs.ext from + e2fsprogs instead of using genext2fs. + + Architecture: + + - Addition of support for ARM big.LITTLE variants + - Improved MIPS support, with options to select NaN encoding + and FP32 mode. + + Toolchain: + + - Switch to gcc 6.x as the default gcc version, add support + for gcc 7.x, remove support for gcc 4.8 + - Switch to binutils 2.28 as the default binutils version, add + support for binutils 2.29, remove support for binutils 2.26 + - Support added for gdb 8.0 + - uClibc-ng bumped to 1.0.26 + - CodeSourcery toolchains for x86 and SuperH have been + removed, they were using a too old glibc version + (2.17). External toolchains with glibc 2.17 or earlier are + no longer supported. + - The version selection in the glibc package has been + removed. Like musl and uClibc-ng, we now use the latest + glibc version. + - Improved support for Xtensa toolchain overlays, which can + now be downloaded. + + Tools: + + - Numerous improvements to the runtime test infrastructure + - Tests are now executed by Gitlab CI on a regular basis + - Tools that are directly useful to the user have been moved + from support/scripts/ to utils/: brmake, check-package, + get-developers, scancpan, scanpipy, size-stats-compare, + test-pkg. + + New defconfigs: A13 Olinuxino, Engicam platforms (i.CoreM6 + Solo/Dual/DualLite/Quad, RQS SOM, GEAM6UL SOM, Is.IoT MX6UL + SOM), Nano Pi M1 (Plus), OrangePi Zero and Plus. + + New packages: azure-iot-sdk-c, cracklib, dt-utils, easy-rsa, + erlang-jiffy, erlang-p1-oauth2, erlang-p1-xmpp, + ifupdown-scripts, irrlicht, kodi-inputstream-adaptive, + kodi-inputstream-rtmp, kvazaar, let-me-create, libloki, + libpwquality, libressl, libspatialindex, libva-utils, + linuxconsoletools, linuxptp, luaossl, lua-sdl2, lua-stdlib, + lsscsi, paxtest, pcre2, pixz, python-asn1crypto, + python-backports-shutil-get-terminal-size, python-bcrypt, + python-cheroot, python-h2, python-hpack, python-hyperframe, + python-hyperlink, python-ipython-genutils, python-pathlib2, + python-pickleshare, python-priority, python-portend, + python-scandir, python-systemd, python-tempora, + python-traitlets, python-typepy, qt5virtualkeyboard, + ratpoison, rauc, refpolicy, rhash, sdl2_mixer, sdl2_net, + xr819-xradio, zstd + + Removed packages: cloog, input-tools, mke2img + + Issues resolved (http://bugs.buildroot.org): + + #7892: systemd-journald is broken + #9341: avahi-utils does not compile with uClibc + libglib2 + #9441: Link BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY to + BR2_ENABLE_DEBUG + #9746: ext4 image generated by Buildroot is not working + properly with U-Boot + #9886: Build fails with "unexpected EOF while looking for + matching `"'" if PATH contains a newline + #9891: parted 3.1 => 3.2? + #9911: qt5 does not build on sparc + #9916: qt5 does not build on + arm-buildroot-linux-uclibcgnueabihf for ARMv8 cores + #9936: Host QEMU does not build with SDL support because of + pkg-config + #9941: nodejs option disappears for arm + #9951: SCANCPAN failure + #9966: util-linux-2.30/.stamp_built' failed + #9976: License file for package 'rtl8821au' incorrect + #9991: SGX Error implicit declaration of function + ‘dmac_map_area’ + #10011: wget does not work from Buildroot + #10036: Buildroot builds Raspbian Jessie headless image + presenting incorrect prompt + #10051: make: *** No rule to make target + 'raspberrpi3_defconfig'. Stop reported with Buildroot + v2017.05.1 + #10056: No .config file was produced in /buildroot folder + #10061: gcc5.4 buildroot toolchain for powerpc libsanitizer + failure + #10071: fakeroot: replace hard-coded paths in post install + #10076: Makefile:4113: recipe for target 'all-gcc' failed + #10091: gcc7.1 does not build with graphite support due to old + isl + #10121: webkit without the multimedia option causes build + error + +2017.05.2, Released July 27th, 2017 + + Important / security related fixes. + + Webkitgtk bumped to the 2.16.x series, fixing a large number + of security issues. + + host-aespipe compile fix for Debian/Gentoo/Ubuntu toolchains + which default to PIE mode. + + Updated/fixed packages: aespipe, apache, bind, binutils, + busybox, ccache, collectd, dieharder, efibootmgr, efivar, + expat, ffmpeg, gcc, heimdal, iproute2, irssi, libglib2, + libmemcached, libosip2, libtirpc, libxml-parser-perl, + linux-fusion, linux-zigbee, mpg123, orc, pcre, php, protobuf, + pulseaudio, python-setproctitle, qt5base, rpi-firmware, + samba4, syslinux, systemd, spice, tcpdump, tiff, uboot-tools, + webkitgtk, x265, xserver_xorg-server, xvisor + + Issues resolved (http://bugs.buildroot.org): + + #10061: gcc5.4 buildroot toolchain for powerpc libsanitizer... + +2017.05.1, Released July 4th, 2017 + + Important / security related fixes. + + Update support/scripts/scancpan to use METACPAN v1 API as v0 + has been shutdown. + + Update support/scripts/mkusers to handle setups where + /etc/shadow is a symlink. + + External toolchain: Don't create musl dynamic loader symlink + for static builds. + + Setlocalversion: Correct detection of mercurial revisions for + non-tagged versions. + + Defconfigs: at91sam9x5ek_mmc: workaround boot rom issue. + + Updated/fixed packages: apache, automake, bind, botan, c-ares, + dhcp, expat, fcgiwrap, gcc, gdb, gesftpserver, glibc, glmark2, + gnutls, gst1-plugins-bad, imagemagick, imx-uuc, intltool, + iperf, ipsec-tools, irssi, kmod, libcurl, libgcrypt, libmad, + libnl, lugaro, mosquitto, mpg123, ncurses, nodejs, ntp, + openssh, openvpn, pngquant, python-simplegeneric, qt5base, + qt5multimedia, rtl8821au, socat, spice, systemd, tor, trinity, + tslib, vlc, x264, xen, xlib_libxshmfenc, xserver_xorg-server + + Issues resolved (http://bugs.buildroot.org): + + #9976: License file for package 'rtl8821au' incorrect + +2017.05, Released May 31st, 2017 + + Minor fixes. + + External toolchain: musl dynamic linker symlink for mips-sf + corrected. + + Updated/fixed packages: agentpp, bash, exim, hans, madplay, + qpid-proton, rtl8188eu, snmppp, stm32flash, strongswan, sudo, + xen + + Issues resolved (http://bugs.buildroot.org): + + #9906: genimage: Disk full + +2017.05-rc3, Released May 30th, 2017 + + Fixes all over the tree. + + ARC toolchain bumped to 2017.03 + + Runtime testing improvements and cleanups. + + Updated/fixed packages: acpica, armadillo, audiofile, c-icap, + cppcms, dhcp, docker-engine, dropbear, elfutils, erlang, + fbgrab, ffmpeg, flashrom, ftop, gnutls, google-breakpad, + keepalived, kodi, libcdio, libepoxy, libev, libminiupnpc, + libqmi, libtasn1, libv4l, mariadb, mono, mosh, mosquitto, + mxml, ntp, opencv, openpowerlink, oracle-mysql, popt, + pulseview, python-enum34, rabbitmq-c, redis, samba4, stella, + xen + + Removed packages: firejail, ola + + Issues resolved (http://bugs.buildroot.org): + + #9871: fbgrab 1.3 won't build with BR2_REPRODUCIBLE set + #9876: aarch64 support with gcc 4.8 toolchain + #9896: host-gcc-initial error downloading because incorrect URL + +2017.05-rc2, Released May 17th, 2017 + + Fixes all over the tree. + + ARC toolchain bumped to 2017.03-rc2 + + Updated/fixed packages: bluez_utils, boost, clamav, daemon, + efibootmgr, efl, espeak, expedite, faketime, ffmpeg, fxload, + git, gpsd, kvm-unit-tests, libcdio, libv4l, lua, mke2img, + mpir, mpv, odroid-scripts, openblas, opencv3, openvpn, php, + postgresql, protobuf, qt5declarative, qwt, radvd, rpcbind, + rtmpdump, strongswan, sudo, ltp-testsuite, uclibc-ng-test, + vlc, x11vnc, xfsprogs + + Issues resolved (http://bugs.buildroot.org): + + #9796: source-check broken for Git downloads + #9866: BASE_DIR usage + +2017.05-rc1, Released May 8th, 2017 + + Fixes all over the tree and new features. + + Infrastructure: + + - Installed binaries are now checked for correct architecture + to catch natively built binaries or binaries built for other + architecture variants. + + - Luarocks infrastructure improvements to extraction handling, + support for upstream name != Buildroot package name. + + - 'make printvars' output format has changed to make it easier + to use in scripts. It now has options to quote the variables + and to show the expanded/unexpanded values. + + - Automatic ext2 rootfs size calculation has been removed. The + logic was not working working reliable in all setups as it + depends on the host filesystem behaviour, so instead now the + size has to be specified explicitly (defaults to 60MB). + + - The git download infrastructure now ensures that GNU format + tar files are created. + + - Fixed a variable clashing issue in the mkusers script with + internal bash variables. + + - Fakeroot now links against libacl to fix issues on + distributions using acls. + + - Correct permissions for /dev/pts/ptmx when systemd is used + with recent glibc versions. + + - br2-external: Improve error reporting. + + - A wrapper script for genimage has been added in + support/scripts/genimage.sh for easy use of genimage from + post-image scripts. + + - A script to check for common style issues in new packages + before submitting has been added in support/scripts/check-package + + - Defconfigs are now tested by gitlab-CI instead of Travis: + https://gitlab.com/buildroot.org/buildroot + + - Infrastructure for runtime testing has been added to + support/testing + + Toolchain: + + - External linaro toolchains updated to 2017.02, ARC toolchain + updated to 2017.03-rc1, NIOSII CodeSourcery to 2017.05 + + - A number of fixes and improvements to the external toolchain + handling, including C library detection, multilib and ld.so + handling + + - Glibc 2.25 and uClibc-ng 1.0.24 added, wordexp support enabled + for uClibc-ng + + - Binutils 2.28 added and default changed to 2.27 + + + Architectures: + + - Support for the C-SKY architecture has been added. + + + License handling: + + - The package license markings for legal info now uses the + SPDX short identifiers for the license string where possible. + + - License info has been improved / added for a number of packages. + + + Misc: + + - Cmake 3.7.x installed on the host is no longer ignored as a + workaround for the RPATH issues has been implemented. + + - Docker-engine can now be built statically on an otherwise + dynamic linked build for docker-in-docker setups. + + - U-Boot now supports out-of-tree device trees, similar to + Linux + + - Nodejs 0.10.x support (and with it, support for -source-check fixed for packages from git. + + External toolchain: musl dynamic linker symlink for mips-sf + corrected. + + Updated/fixed packages: armadillo, audiofile, bash, + bluez_utils, cppcms, dbus, dhcp, dropbear, efibootmgr, efl, + elfutils, faketime, fbgrab, flashrom, ftop, gdb, git, + google-breakpad, gpsd, hans, kvm-unit-tests, kyua, libev, + libmicrohttpd, libminiupnpc, libtasn1, libubox, ltp-testsuite, + lua, madplay, mariadb, mono, mosquitto, mxml, ntp, + nvidia-driver, openblas, openvpn, oracle-mysql, picocom, popt, + postgresql, pulseview, qt5base, qwt, rabbitmq-c, redis, + rpcbind, rtmpdump, samba4, strongswan, sudo, vlc + + Issues resolved (http://bugs.buildroot.org): + + #9796: source-check broken for Git downloads + #9871: fbgrab 1.3 won't build with BR2_REPRODUCIBLE set + +2017.02.2, Released May 1st, 2017 + + Important / security related fixes. + + Use HTTPS for the Codesourcery external toolchains as the HTTP + URLs no longer work. + + Updated/fixed packages: bind, busybox, dovecot, freetype, + ghostscript, glibc, granite, hiredis, icu, imagemagick, + gst-plugins-base, gst1-plugins-base, libcroco, libcurl, libnl, + libnspr, libnss, libsamplerate, libsndfile, libunwind, + minicom, mplayer, mpv, nodejs, python-django, python-pyyaml, + python-web2py, samba4, syslinux, systemd, tiff, trinity, + uboot, wireshark, xen + + Issues resolved (http://bugs.buildroot.org): + + #9791: Python searches for packages in the user site directory + +2017.02.1, Released April 4th, 2017 + + Important / security related fixes. + + Fix a variable clashing issue in the mkusers script with + internal bash variables. + + Improve external toolchain version detection. + + Correct permissions for /dev/pts/ptmx when systemd is used + with recent glibc versions. + + Fix python module name clash for graph-depends. + + Fakeroot now links against libacl to fix issues on + distributions using acls. + + Ensure that the git download infrastructure creates GNU format + tar files. + + br2-external: Improve error reporting. + + Updated/fixed packages: acl, apr, audiofile, busybox, cairo, + dbus-cpp, dbus-glib, dbus-triggerd, domoticz, elfutils, + fakeroot, filemq, fmc, gdb, git, gnutls, gst-ffmpeg, + gst1-plygins-bad, harfbuzz, htop, imagemagick, jasper, libcec, + libiio, libplatform, librsvg, libselinux, libsidplay2, libsoc, + libwebsockets, libxkbcommon, linux-firmware, logrotate, + lpt-testsuite, lttng-libust, mariadb, mbedtls, memcached, + mesa3d, mpd, mplayer, nbd, ncftp, ntp, openssh, opentyrian, + pcre, perl-gd, python, qt5base, rpi-userland, rpm, samba4, + skalibs, slang, sngrep, squashfs, syslog-ng, taglib, + tcpreplay, tor, upmpdcli, wget, wireshark, + xdriver_xf86-video-vmware, xlib_libXv, zmqpp + + Issues resolved (http://bugs.buildroot.org): + + #9456: mkusers script bash errors + +2017.02, Released February 28th, 2017 + + Minor fixes, mainly fixing autobuilder issues. + + Don't use cmake 3.7.x from the build host as it is also + affected by the RPATH handling issues, and instead build our + own if needed. + + Updated/fixed packages: assimp, classpath, genimage, mplayer, + mpv, openocd, python-libconfig, qt5base, qt5quickcontrols, + vlc, xterm + +2017.02-rc3, Released February 26th, 2017 + + Fixes all over the tree. + + Cmake reverted to version 3.6.3 to workaround regressions + related to RPATH handling. + + Updated/fixed packages: bctoolbox, berkeleydb, binutils, + btrfs-progs, classpath, directfb, glibc, gstreamer1, + gst1-plugins-{base,good,bad,ugly}, gst1-libav, + gst1-rtsp-server, gst1-validate, gst-omx, htop, libcurl, + libepoxy, libimxvpuapi, libpcap, libuv, ncurses, openssh, + oracle-mysql, poco, python, qt5base, qt5webkit, sslh, synergy, + trousers, uclibc-ng-test, util-linux, vlc, xfsprogs + + Issues resolved (http://bugs.buildroot.org): + + #9251: Shared C++ libraries for Microblaze results in Segmentation... + #9456: mkusers script bash errors + #9506: Collectd 5.7.0 fails to build with libcrypt + #9581: VagrantFile provisioning step fails due to issue with grub-pc + #9586: usbmount: usbmount slows down the system... to a state of... + #9616: CMake host packages cannot provide CONF_ENV + #9641: Need raptor package installed in staging + #9671: stunnel build error + +2017.02-rc2, Released February 20th, 2017 + + Fixes all over the tree. + + Support for SOURCE_DATE_EPOCH in the toolchain wrapper for + older gcc versions for reproducible builds has been + (temporarily) reverted because of licensing compatiblity + concerns. + + Defconfigs: SD card generation fix for the Udoo Neo board + + Infrastructure to handle .lz compressed tarballs added, and + affected packages updated to use it. + + Updated/fixed packages: bctoolbox, bind, canelloni, + cbootimage, ccache, classpath, cups, dbus, ddrescue, directfb, + ed, erlang, gcc, gdb, glmark2, gstreamer, gstreamer1, hiredis, + kmod, kmsxx, lcdapi, libasplib, libgpiod, libnss, libraw, + libv4l, mesa3d-headers, mosquitto, mpd, mpv, musl, ntfs-3g, + ocrad, openswan, postgresql, qt5base, qt5quickcontrols, redis, + riemann-c-client, samba4, sunxi-mali, tcping, trousers, + uclibc, util-linux, vim, wavpack, wget, wiringpi, xfsprogs, + xserver_xorg-server + + Issues resolved (http://bugs.buildroot.org): + + #8941: Valgrind fails to build with stack protection turned on + #9291: perl: SysV message queues not configured, even if available + #9651: libxcb-1.12 built Error + #9656: util-linux: schedutils doesn't build on target w/o enabl... + #9666: qt5quickcontrols install fails + +2017.02-rc1, Released February 11th, 2017 + + Fixes all over the tree and new features. + + Infrastructure: + + - numerous improvements to support reproducible builds + + - new waf-package package infrastructure to support packages + that use the Waf build system. 6 packages converted to + this infrastructure. + + - add option _PREFER_INSTALLER to the perl package + infrastructure + + Architecture: + + - add support for the OpenRISC CPU architecture + + - merge description of the ARM and ARM64 options, and add + support for selecting a specific ARM64 core + + Toolchain: + + - major rework of the external toolchain support. It is now + split into several packages, one per external toolchain, + and a common infrastructure. + + - important fix for musl to prevent a conflict between musl + and kernel headers (fixes the build of numerous packages + with musl) + + - uClibc-ng bumped to 1.0.22, and therefore enable uClibc + for ARM64, mips32r6 and mips64r6 + + - add gdb 7.12.1, and switch to gdb 7.11 as the default + + - Linaro toolchains updated to 2016.11, ARC toolchain + components updated to arc-2016.09, MIPS Codescape + toolchains bumped to 2016.05-06, CodeSourcery AMD64 and + NIOS2 toolchains bumped + + - remove Analog Devices toolchain for the Blackfin + architecture, remove pre-built musl toolchains from + musl.codu.org + + New defconfigs: Freescale i.MX23EVK, Qemu OpenRISC emulation, + Qemu NIOS2 emulation, Grinn chiliBoard, Freescale i.MX6Q + SabreSD, BeagleBoard X15, OrangePi One, ARC HS38 HAPS + + New packages: angular-websocket, aubio, bctoolbox, darkhttpd, + ddrescue, easydbus, fakedate, git-crypt, hiredis, ifenslave, + jsmn, libgpiod, libgsm, linux-syscall-support, mariadb, mimic, + nginx-dav-ext, nmon, opkg-utils, policycoreutils, + pru-software-support, python-arrow, python-attrs, + python-babel, python-bitstring, python-chardet, + python-constantly, python-flask-babel, python-gunicorn, + python-incremental, python-jsonschema, python-logbook, + python-markdown2, python-mbstrdecoder, python-mutagen, + python-pathpy, python-pudb, python-pyqrcode, + python-pytablereader, python-setuptools-scm, python-sh, + python-toml, python-vcversioner, python-whoosh, + raspberrypi-usbboot, riemann-c-client, rtl8723bs, skalibs, + sslh, sngrep, ti-cgt-pru, uclibc-ng-test, udpxy, uhttpd, + upower, ustream-ssl, waf, xlib_libXfont2 + + Removed packages: perl-db-file, snowball-hdmiservice, + snowball-init + + Tooling: addition of a test-pkg script to help contributors + build test their package. + + Issues resolved (http://bugs.buildroot.org): + + #8946: Valgrind fails to build with stack protection turned on + #9461: odroidc2 - toolchain Linaro AArch64 2016.11 compile error + #9466: VIM_REMOVE_DOCS removes rgb.txt + #9486: xorg-server 1.19 fails to compile for glibc with systemd init (x86_64) + #9501: eudev fails to build with older kernel headers + #9526: Embedded NPM fails to start with "no such file or directory" error + #9541: Platform drivers autoloading from info in device tree does not work + #9546: seems BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS do nothing + #9551: Coreutils fails to build target src/src_libsinglebin_pinky_a-pinky.o + #9566: [kmod] Compilation fails with uclibc + #9571: buildroot fails while building opencv for arm64 platform + #9576: External tree with BR 2016.11 does not work anymore + #9606: xorg-server cannot build for ARM target + +2016.11.3, Released March 9th, 2017 + + Important / security related fixes. + + Updated/fixed packages: bind, dbus, gnutls, imagemagick, + lcms2, libcurl, ntfs-3g, ntp, openssl, php, quagga, redis, + squid, stunnel, tcpdump, vim, wavpack, wireshark, xlib_libXpm + +2016.11.2, Released January 25th, 2017 + + Important / security related fixes. + + A fix for BR2_EXTERNAL trees referenced using relative paths, + which broke in 2016.11. + + Updated/fixed packages: bind, docker-engine, gd, gnutls, go, + imagemagick, irssi, libpng, libvncserver, musl, opus, php, + php-imagick, rabbitmq-server, runc, wireshark, + + Issues resolved (http://bugs.buildroot.org): + + #9576: External tree with BR 2016.11 does not work anymore + +2016.11.1, Released December 29th, 2016 + + Important / security related fixes. + + Updated/fixed packages: apache, cryptopp, docker-engine, + dovecot, exim, gdk-pixbuf, libcurl, libupnp, links, monit, + nodejs, openssh, php, python, python-bottle, samba4, squid, + uboot, vim, wireshark, xorg-server uboot + + Issues resolved (http://bugs.buildroot.org): + + #9466: VIM_REMOVE_DOCS removes rgb.txt + +2016.11, Released November 30th, 2016 + + Minor fixes. + + Updated/fixed packages: bzip2, gcc, jasper, sane-backends, + uboot, uclibc + + Issues resolved (http://bugs.buildroot.org): + + #9451: packages/postgresql/postgresql.mk contains wrong POST... + +2016.11-rc3, Released November 28th, 2016 + + Fixes all over the tree, including a number of security fixes. + + The move from fakeroot to pseudo unfortunately brought a + number of issues. The SELinux issue described in #9386 which + triggered the move to pseudo has been investigated further and + a workaround implemented and the pseudo changes reverted. + + Linux kernel: update default to 4.8.11. + + Defconfigs: Updates/fixes for imx28ek, mx6udoo, imx6ulpico, + olimex a20 olinuxino lime mali, roseapplepi, synopsis aarch64 + vdk, axs101, axs103 and hs38 smd vdk. + + Updated/fixed packages: autossh, chrony, dosfstools, + dtv-scan-tables, e2fsprogs, gcc, gdb, gnuchess, gnuradio, + gpsd, gst1-plugins-bad, gst1-plugins-good, imagemagick, + kvm-unit-tests, libfribi, libuv, mesa3d, mpfr, mplayer, mpv, + ntp, ola, olsr, openblas, openjpeg, openssh, postgresql, + ptpd2python3, qemu, qextserialport, qt5base, quagga, xqwt, + taskd, tiff, tremor, trousers, udisks, uclibc, wireshark, + xapp_xload, xenomai, xmlstarlet + + Issues resolved (http://bugs.buildroot.org): + + #9386: ubinize fails with or without custom config + #9431: A misspelling + #9446: make raspberrypi3_defconfig compilation failure + +2016.11-rc2, Released November 13th, 2016 + + Fixes all over the tree. + + Architecture: add support for MIPS XBurst cores; remove MIPS + support for M5100 cores. + + Updated/fixed packages: mesa3d, lttng-babeltrace, tinyalsa, pseudo, + czmq, libxml2, makedevs, binutils, kvm-unit-tests, libnss, privoxy, + qemu, ser2net, net-tools, ffmpeg, assimp, libmpeg2, ccache, mpv, + libxslt, python, python3, php, valgrind, guile, domoticz, efl, + jasper, kvmtool, go, wget, sane-backends, weston, tinymembench, + strace, openjpeg, lcms2, quota. + + Linux kernel: update default to 4.8.7. + + CMake support: fix cmake wrapper to properly pass NDEBUG flag. + + Filesystems: use a wrapper to pseudo, to better mimick the behaviour + of fakeroot; makedevs no longer breaks of the destination already + exists and is of the correct type/major/minor. + + Defconfigs: a few legacy and broken defconfigs have been removed + because they now fail to build: kb9202_defconfig, mini2440_defconfig, + freescale_p2020ds, qmx6, calao*, atmel_sama5d4ek. Other defconfigs + have been updated: nanopi-neo, olimex_a20_olinuxino_lime_mali, + armadeus_apf51, armadeus_apf28, freescale_imx31_3stack, ci20, + olimex_a20_olinuxino_lime2, atmel_at91sam9260eknf, + atmel_at91sam9rlek, atmel_at91sam9g20dfc, atmel_at91sam9g45m10ek, + atmel_sama5d3xek. + +2016.11-rc1, Released November 3rd, 2016 + + Fixes all over the tree and new features. + + It is now possible to specify multiple BR2_EXTERNAL + directories. The required files in a BR2_EXTERNAL directory + have changed to accomodate this feature. Refer to the + documentation for details of how to update them. External + trees now have a name and a description. Also, it is possible + to override a defconfig in the external tree. + + The default skeleton now uses UID 65534 for the "nobody" + user instead of UID 99, like most distros do. See + https://lwn.net/Articles/695478/ for a complete discussion. + Programs and configuration files that explicitly refer to UID + 99 will have to be updated. + + When the build environment already has a suitable cmake version + (3.1 or later), that one will be used instead of building + host-cmake. This can speed up the build significantly. + + The ExtUtils::MakeMaker perl module is now required in the + build environment. + + An additional check is done during the build that files are + not installed in the output directory within the output + directory. This happens e.g. when the target directory is + contained both in --prefix and in DESTDIR. The build will + terminate with an error message that specifies which package + and which file caused the failure. + + The concept of "deprecated packages" and the BR2_DEPRECATED + option have been removed. Instead, packages are removed + immediately. Packages are only removed when they don't work + for some reason. If you still need a removed package and + you have a solution for the problem(s) that caused the + removal, please contribute it. + + Architecture: support for sh64 removed, improved support for + MIPS core selection. + + Toolchain: support for musl powerpc64le, mips64 and mipsr6 + toolchains, ARC toolchain components updates, gcc 6.x series + bumped to 6.2.0, default binutils version switched to 2.26, + default gcc version switched to gcc 5.x, Linaro toolchains + updated, uclibc-ng bumped to 1.0.19. GCC is now always built + with TLS support. Checking of unsafe compiler options (that + point to host directories) has been extended with -isystem, + -idirafter and -iquote. + + Package infrastructure: new variable $(PKG)_DL_OPTS, addition + of -show-rdepends to list reverse dependencies, and + -graph-rdepends to graph reverse dependencies. Linux tools + are now in a separate linux-tools package instead of in the + kernel build. Fakeroot has been replaced by pseudo. + + CMake support: the toolchainfile.cmake file now provides a + definition of the CMAKE_BUILD_TYPE variable. The + toolchainfile.cmake also no longer forces the compiler/linker + flags defined by Buildroot. + + New defconfigs: WaRP7, Solidrun's MX6 Cubox/Hummingboard, + TS-4900, Grinn's liteBoard, Udoo MX6Q/DL, Qemu ARM noMMU, + BeagleBone Qt5 demo, Digilent Zybo, FriendlyARM Nanopi NEO. + + New packages: arm-trusted-firmware, amd-catalyst, atop, aufs, + aufs-util, fwts, gst1-rtsp-server, libglob, libite, mfgtools, + mksh, motion, paho-mqtt-c, php-amqp, pseudo, python-couchdb, + python-crcmod, python-cssutils, python-docutils, + python-futures, python-mwclient, python-mwscrape, + python-mwscrape2slob, python-pyelftools, python-pyicu, + python-pylru, python-pyqt5, python-requests-toolbelt, + python-simpleaudio, python-slob, rabbitmq-server, shapelib, + vdr, vdr-plugin-vnsiserver, vexpress-firmware, xvisor, iio and + gpio linux tools. + + Removed packages: binutils 2.24, fakeroot, gcc 4.7, ipkg, + kodi-addon-xvdr, libgail, sstrip, torsmo, webkit, webkitgtk24, + wvdial, wvstreams. + + Documentation: the list of packages that was present in the + Buildroot manual has been removed. + + Legal info: the "licenses.txt" file that concatenates all + license texts is no longer generated - it was not considered + useful. The manifest.csv contains an empty cell instead of + "not saved" when no license file is available. + + Other: addition of a DEVELOPERS file listing developers taking + care of packages or architectures. + + Issues resolved (http://bugs.buildroot.org): + + #7802: host-python build hangs compiling getbuildinfo.o + #8206: mplayer uses host xorg development files + #8516: mkcubiecard.sh uses outdated sfdisk switch -D + #8536: Building sudo with PAM results in unusable sudo + #8646: check-host-rpath script returns false positives when rpath + contains symlink + #8696: xdriver_xf86-input-mouse install header files in target + directory + #8811: rp-pppoe - generated scripts commands use HOST pathnames, + not necessarily TARGET + #8846: Orphaned/missing toolchain borks eclipse plugin + #8856: python tornado runtime wasn't met on buildroot 2016.02 + #8901: gcc failes to build if fortran is enabled + #8916: LDFLAGS pass to openssh + #8941: "ls" of an NFSv4 share only works when pumped through strace + #8946: Valgrind fails to build with stack protection turned on + #9021: Kodi - Broken: Illegal instruction (core dumped) + #9096: rootfs.ubi not created + #9111: glibc 2.23: libmvec.so not copied + #9176: minnowboard : USB not mounted + #9196: raspberry pi 3 default build seem broken + #9201: Permission denied make: *** [core-dependencies] Error 126 in + Buildroot-2015.08.1 + #9216: log4cpp package build fails to build within install + #9221: Kodi needs "Python .py and .pyc support" otherwise it crashes when + pressing buttons. + #9229: Firefly boot fails with: "failed to find part:boot" + #9256: [Config file] New device: Odroid-U2/U3 + #9296: Buildroot Fails on applying patches + #9301: U-boot fails to build with default zynq_zed_defconfig configuration + #9316: U-boot fails to build if libssl-dev is not installed + #9321: Vanilla libcrypt++ v5.6.3 doesn't allow to work Nvidia Tegra's + flash utility (tegrarcm) + #9326: Odroid-C2 build results in non-bootable image + #9336: Improve iconv support for external toolchain based builds + #9356: gdb package + #9366: no link rootfs.ext4 -> rootfs.ext2 + #9371: openssl: download failes with "Only allow downloads from primary + download site" + local server + #9381: check-host-rpath issues + #9386: ubinize fails with or without custom config + +2016.08, Released September 1st, 2016 + + Minor fixes. + + Toolchain: ARC tools updated to arc-2016.09-eng010. + + Updated/fixed packages: libshout, luajit, mpd, mplayer + + Issues resolved (http://bugs.buildroot.org): + + #7520: CodeSourcery toolchain ARM: C++11 std::exception_ptr.. + #8341: Getting EGL Error: Could not create the egl surface:.. + #9121: gst1-imx for i.MX6 compile failed, cannot find PXP, .. + +2016.08-rc3, Released August 29th, 2016 + + Fixes all over the tree. + + Toolchain: C++ support for the internal blackfin toolchain + re-enabled. + + Architecture: Default to bf532 CPU variant for blackfin, + Fix flat one memory region support for m68k and disable flat + seperate data support because of compatibility issues. + + Defconfigs: Minnowboard and Raspberrypi: Fix errors with + post-build scripts when systemd is used. + Zynq microzed/zc706/zed: Fix u-booot configuration. + + netbsd-queue package extended and renamed to + musl-compat-headers. With this, a number of musl compatibility + patches are no longer needed. + + Updated/fixed packages: aircrack-ng, android-tools, babeld, + bcusdk, binutils, boa, busybox, connman, cpupower, + docker-engine, domoticz, elf2flt, ffmpeg, fwup, gcc, + glib-networking, gnupg, hplip, igd2-for-linux, imagemagick, + imx-uuc, iputils, jack2, kismet, kmsxx, libaio, libamcodec, + libconfuse, libffi, libfreeimage, libgcrypt, libgpg-error, + libiio, libraw, libsepol, libserialport, libxmlrpc, linknx, + linux-pam, lirc-tools, lldpd, logrotate, lshw, musl, ncurses, + neon, nettle, norm, ntfs-3g, openblas, openmpi, openswan, + pinentry, pixman, protobuf, python-meld3, qlibc, qt, qt5base, + quagga, rpcbind, rt-tests, runc, sane-backends, sconeserver, + squeezelite, stella, tftpd, tinycbor, tinydtls, trace-cmd, + trousers, tstools, uboot-tools, uclibc, ulogd, ustr, vlc, + webkitgtk, wireshark, xdriver_xf86-video-intel + + Issues resolved (http://bugs.buildroot.org): + + #9101: Error on support/download/git with system git older than 1.8.4 + #9181: Compiling linux kernel fails if BR2_LINUX_KERNEL_TOOL_CPU.. + +2016.08-rc2, Released August 17th, 2016 + + Fixes all over the tree. + + Toolchain: disable broken C++ support for internal blackfin + toolchains, ARC toolchain bumped to arc-2016.09-eng008 (GCC 6) + to fix various issues. + + System: Zoneinfo is available for the musl C library as well. + + Updated/fixed packages: am33x-cm3, axel, barebox, bdwgc, + blktrace, cairo, dante, enlightenment, fbterm, ffmpeg, flex, + fontconfig, gcc, gmp, gnuplot, gnuradio, gst1-imx, hidapi, + inotify_tools, iproute2, kmsxx, lftp, libaio, libcofi, + libical, libpjsip, libsidplay2, libunwindow, libxml2, + linux-zigbee, lttng-libust, mpv, mtd, ncdu, netplug, ntp, + openblas, openipmi, owfs, php, poco, procps, qt, quota, + sg3_utils, spidev_test, systemd-bootchart, thrift, + uboot-tools, uclibc, webrtc-audio-processing, wayland, weston, + xdriver_xf86-video-savage, xserver_xorg-server, xen + + Issues resolved (http://bugs.buildroot.org): + + #9136: make graph-size fails with "ValueError: too many values to.. + #9151: qt: fix build with ALSA >= 1.1.x + #9156: qt: Fix missing runtime Qt3Support dependency + #9161: modsetting patch not applied to xserver 1.18.4 + #9166: Missing overlays directory in VFAT image for raspberry pi 3 + +2016.08-rc1, Released August 6th, 2016 + + Fixes all over the tree and new features. + + Toolchain: Fortran support added. eglibc support removed, musl + support no longer experimental. Blackfin and Microblaze + support for internal uClibc-ng toolchain, m68k/coldfire + improvements. The check for unsafe (build host) directories + access (/usr/include and /usr/lib) is now enabled by default. + Unused locales are now purged by default to save space (and + the default list of locales shrunk). The option to control + this has now moved from the toolchain menu to system + configuration. + + Legal info improvements: sources are now hardlinked instead of + copied if possible to save space. Patches and extra downloads + are also saved. + + An experimental configuration knob (BR2_REPRODUCIBLE) has been + added to make the builds more reproducible (E.G. less + differences in the binary output between builds of the same + configuration). This is still work in progress. + + An option to execute a custom script inside the fakeroot + environment used to the generate the filesystem (E.G. to tweak + permissions or similar) has been added. + + Git support now supports git submodules if + _GIT_SUBMODULES is enabled. + + Hash files for integritry validation have been added for all + packages. + + Scanpypi utility to help creating packages from the Python + package index (pypi) has been added. + + The makedevs utility now has support for adding file + capabilities using extended attributes. + + New defconfigs: Arcturus uCP1020, Atmel sama5d{2,3,4} xplained + development configs, Blackfin GDB simulator, Linksprite + pcDuino, Minnow Board Max graphical demo, NXP i.MX25 PDK, + i.MX51 EVK, i.MX6UL Pico, i.MX7 sabresd, QEMU MIPS32r6{,el} and + MIPS64r6{,el} malta, Roseapple Pi, Samsung Snow chromebook, + Toradex Apalis i.MX6 COM, TS-4800, x86-64 PC BIOS and EFI + demos. A number of defconfigs have been updated and extended + to generate SD card images. Synopsys HS38 VDK defconfig removed. + + New packages: 4th, acpica, acpitool, alljoyn, alljoyn-base, + alljoyn-tcl, alljoyn-tcl-base, argparse, babeld, batman-adv, + circus, dante, docker-containerd, docker-engine, domoticz, + efibootmgr, efivar, ficl, fwup, gsettings-desktop-schemas, + gtksourceview, gupnp-dlna, gupnp-tools, igd2-for-linux, + jemalloc, kmsxx, lapack, lft, libaacs, libamcodec, libbdplus, + libcoap, libdvdcss, libebur128, libfastjson, libminiupnpc, + libnatpmp, libpqxx, libuio, libvdpau, log4cpp, minissdpd, + mxsldr, nginx-nasxi, nginx-upload, ninja, nodm, odroid-mali, + odroid-scripts, omxplayer, openblas, openmpi, openzwave, + p7zip, pdbg, python-argh, python-dataproperty, + python-dateutil, python-dialog3, python-dicttoxml, + python-dominate, python-engineio, python-flask-jsonrpc, + python-flask-login, python-humanize, python-pathtools, + python-pathvalidate, python-pillow, python-prompt-toolkit, + python-pytablewriter, python-pytz, python-scapy3k, + python-sdnotify, python-socketio, python-tomako, + python-ubjson, python-u-msgpack, python-watchdog, + python-wcwidth, python-xlrd, python-xlsxwriter, + python-xlutils, python-xlwt, rs485conf, runc, sdl2_gfx, + sdl2_image, sdl2_ttf, shellinabox, sphinxbase, stella, + supertuxkart, systemd-bootchart, tekui, terminology, tinycbor, + tinydtls, ti-sgx-demos, ti-sgx-km, ti-sgx-um, tunctl, wavemon, + wiringpi, xen + + Deprecated packages: ipkg, sstrip + + Removed packages: sunxi-mali-prop + + Issues resolved (http://bugs.buildroot.org): + + #8931: segment fault when compile argp-help.c using aarch64-bu... + #8966: eglfs error. buildroot don't compile the library libeglfs.so + #8971: build for beaglebone fails + #8986: qt5imageformats fails to build on AArch64 + #8991: grub2 fails to compile + #9001: Nodejs option not available + #9006: gcc with c++ support v4 and v5 fail to compile on fedora 24 + #9016: arceb-buildroot-linux-uclibc ld uses incorrect default format + #9066: 8139TOO - faulty behaviour + #9086: Syntax Error (missing ")" in boot/uboot/uboot.mk on line 203) + #9091: U-Boot fails to boot with large ramdisk + +2016.05, Released May 31st, 2016 + + Minor fixes. + + External toolchain: Fix for symlink handling when copying + links to target. + + Updated/fixed packages: gcc, grantlee, gst-ffmpeg, + ipsec-tools, iptraf-ng, libcurl, libdrm, libsigsegv, ltris, + lttng-babeltrace, mbedtls, mesa3d, moarvm, mplayer, mtools, + net-tools, openpowerlink, pulseview, rpm, tinyalsa, + xdriver_xf86-video-fbturbo, xserver_xorg-server + +2016.05-rc3, Released May 26th, 2016 + + Fixes all over the tree. + + Tweaks for SSP handling for external toolchains. + + Updated/fixed packages: aircrack-ng, bluez5_utils, connman, + cups, erlang-p1-stringprep, expat, ffmpeg, flann, flannel, go, + gst1-libav, hidapi, hplip, iptraf-ng, jamvm, kodi, + kodi-screensaver-matrixtrails, libcurl, libepoxy, libgpgme, + libsemanage, libxslt, liquid-dsp, ltris, lxc, mesa3d, midori, + mpg123, mtr, openpgm, openpowerlink, oprofile, php, + postgresql, putty, python-service-identity, python-treq, + qlibc, qt5serialbus, ruby, stress-ng, strongswan, time, tinc, + ustr, valgrind, webkitgtk, libxml2, xorriso, + xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #8936: Aircrack-ng - Alot of missing dependencies + +2016.05-rc2, Released May 17th, 2016 + + Fixes all over the tree. + + Rootfs overlay handling now refuses to overwrite + /{usr,bin,sbin,lib} symlinks from BR2_ROOTFS_MERGED_USR option + even if these directories are present in the overlay. + + External toolchain: Unbreak user provided libraries deployment + (BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS) handling after refactoring. + + QEMU coldfire: Fix for signal handling kernel issue, enable + networking support. + + Updated/fixed packages: android-tools, assimp, boost, gcc, + glibc, glmark2, gmrender-resurrect, go, go-bootstrap, iputils, + jack2, kodi-screensaver-asterwave, kodi-screensaver-rsxs, + kodi-visualisation-shadertoy, libarchive, libinput, libpjsip, + mali-t76x, mtr, nginx, opencv, openvpn, python-coherence, + qt5multimeda, quagga, samba4, sg3-utils, stress-ng, turbolua + +2016.05-rc1, Released May 10th, 2016 + + Fixes all over the tree and new features. + + Architectures: new ARM variants: Cortex A17 and M4, improved + nonmmu (cortex-M) support, m68k has been re-enabled with + support for ColdFire. For x86, support for the i386 variant + has been dropped. + + Toolchain: Add GCC 6 support, remove GCC 4.5, mark GCC 4.7 as + deprecated. Go programming language support, Add Binutils 2.26 + support. Old Sourcery PowerPC external toolchains removed, + Sourcery MIPS 2016.06-8, AMD64 2015.11-139, NiosII 2015.11-130 + added, Linaro ARM/ARMeb/Aarch64 toolchains updated. + + New defconfigs: Firefly RK3288, Boundary Devices i.MX7 Nitrogen7, + STM32F429 and STM32F469 Discovery boards, Hardkernel ODROID-C2, + Raspberry Pi Zero and Raspberry Pi 3. Some Qemu defconfigs were + added for m68k, eXtensa-nommu and ColdFire. + + Linux: use zImage by default on ARM, subversion repository + support (for u-boot as well). + + New packages: aer-inject, android-tools, cannelloni, + cbootimage, cgroupfs-mount, connman-gtk, crudini, dt, + gmrender-resurrect, flannel, font-awesome, freeswitch, go, + go-bootstrap, gr-osmosdr, granite, i7z, imx-uuc, + kodi-adsp-basic, kodi-adsp-freesurround, + kodi-audiodecoder-opus, kodi-pvr-hdhomerun, + kodi-screensaver-asterwave, kodi-screensaver-cpblobs, + kodi-screensaver-matrixtrails, kodi-screensaver-planestate, + kodi-screensaver-rsxs, kodi-visualisation-fishbmc, + kodi-visualisation-fountain, kodi-visualisation-goom, libgee, + libimxvpuapi, libpjsip, libtomcrypt, libtommath, libusbgx, + lksctp-tools, mali-t76x, mkpimage, mpv, msr-tools, nload, + norm, nvme, owfs, pound, privoxy, procrank_linux, putty, + python-autobahn, python-characteristic, python-crossbar, + python-cryptography, python-iniparse, python-iowait, + python-lmdb, python-pexpect, python-ptyprocess, + python-pyasn-modules, python-pygments, python-pymysql, + python-pynacl, python-pyopenssl, python-pysocks, + python-pytrie, python-rpi-gpio, python-service-identity, + python-setproctitle, python-shutilwhich, python-treq, + python-txaio, python-ujson, python-wsaccel, qt5canvas3d, + qt5location, qt5quickcontrols2, qt5serialbus, qt5tools, + raptor, scrub, taskd, tegrarcm, turbolua, valijson, + wayland-protocols, webkitgtk, wilc1000-firmware, wpan-tools, + xdriver_xf86-video-amdgpu + + Removed packages: foomatic-filters, python-m2crypto, + qt5quick1, qt5webkit-examples, samba, xdriver_xf86-input-void + + Issues resolved (http://bugs.buildroot.org): + + #6830: Qt5: no fonts are installed + #7562: musl buildroot-toolchain and BR2_MIPS_SOFT_FLOAT break + #7580: Invalid filesystem in Pandaboard defconfig + #8346: wf111 package removes all kernel module dependencies + #8436: xserver_xorg-server Segmentation fault + #8736: IPV6 forced on in busybox + #8746: At startup system stops with 'cannot set terminal proces.. + #8751: make fail [fio does not build on sh] + #8766: Compiling host-gcc-final-4.9.3 broken on i386 + #8771: make savedefconfig modifies sources + #8781: Unable to build uboot for imx28evk + #8786: gdb fails to build with xz and expat support at the same + #8801: Compilation of Buildroot 2016.2 for Raspberry Pi with... + #8806: Buildroot 2016.2 for Raspberry Pi requires that ext4... + #8836: Can't select Vim in menuconfig + #8851: Make sure fio can compile with libaio support if it... + #8861: With buildroot 2016.02 trying to build for corei7-avx + fails while trying to build host-binutils + #8866: Making an USB flash bootable with extlinux build with + buildroot does not work + +2016.02, Released March 1st, 2016 + + Minor fixes, mostly security related. + + Circular dependency issue with same-as-kernel linux-headers + option fixed. + + Updated/fixed packages: bluez5_utils, heirloom-mailx, + imx-gpu-viv, kodi-pvr-argustv, kodi-pvr-mediaportal-tvserver, + kodi-pvr-nextpvr, libfcgi, openssl, pifmrds, powerpc-utils, + python-m2crypto, slang, sox, squid, tn5250, xerces, zsh + +2016.02-rc3, Released February 27th, 2016 + + Fixes all over the tree. + + Defconfigs: Ensure EABIhf is correctly enabled for ARM cores + where VFP is optional (but present on the specific hw). Fix + ARM variant selection for freescale_imx31_3stack_defconfig. + + Ensure tarballs of downloaded git trees do not contain a + timestamp. + + Clarify license of patches in COPYING. + + Updated/fixed package: avahi, binutils, cairo, can-festival, + chrony, cifs-utils, dnsmasq, dvdauthor, e2fsprogs, efl, + erlang-rebar, eudev, fbterm, gawk, gnupg2, gnuradio, gpm, + gst1-plugins-good, hostapd, imagemagick, iproute2, iputils, + jack2, kexec, kismet, lftp, libarchive, libeXosip2, libfm, + libglib2, libsoil, libssh, libssh2, libuci, links, lshw, lxc, + mediastreamer, mono, mraa, mutt, nfs-utils, numactl, ofono, + omniorb, openipmi, openobex, patch, pax-utils, perf, + pulseaudio, pure-ftp, qhull, qt, quagga, quota, sdl_sound, + shairport-sync, spice, sysklogd, syslog-ng, trace-cmd, + trousers, tvheadend, util-linux, vim, webkitgtk24, wireshark, + wpa_supplicant, xerces, zsh + + Issues resolved (http://bugs.uclibc.org): + + #8651: libMonoPosixHelper.so wrong link reference in buildroot.. + +2016.02-rc2, Released February 18th, 2016 + + Fixes all over the tree. + + Toolchain: PR19405 backport to binutils 2.25.1 to fix NIOS ld + crash, backport of Xtensa .init/.fini literals handling. + glibc security patches for CVE-2014-8121, CVE-2015-1781 + and CVE-2015-7547. + + Defconfigs for Acmesystems Arietta g25 added. + + Updated/fixed packages: binutils, boost, chrony, dovecot, + e2fsprogs, fio, gdb, glibc, graphite2, icu, kbd, libbsd, + libcue, libgcrypt, libraw, links, mc, mosquitto, nodejs, + postgresql, pptp-linux, pulseaudio, samba4, spice, squid, + sysklogd, systemd, tiff, uclibc, ulogd, util-linux, valgrind. + + Issues resolved (http://bugs.uclibc.org): + + #8576: Building embedded Linux for Atmel SAMA5D4_Xplained... + #8606: Problem compiling on Arch Linux + #8681: kbd 2.0.3 does not build on rpi + +2016.02-rc1, Released February 10th, 2016 + + Fixes all over the tree and new features. + + Toolchain: Support for GCC 5.3.x. ARC toolchain updated to + arc-2015.12. Support for legacy uClibc dropped, default to + uClibc-ng instead. Added sys/queue.h implementation for MUSL + for compatibility. Updated versions of Code sourcery and + Linaro toolchains. MIPS Codescape toolchains added. Version + selection for preconfigured external toolchains removed. + + New Defconfigs: ARM Juno r0/r1 development boards, Freescale + i.MX6UL Evaluation Kit, Intel Galileo Gen 2, Orange Pi PC. + A number of defconfigs have been extended to generate complete + system images using genimage. + + Linux: Automatically patch timeconst.pl for <3.9 kernels, + which isn't compatible with modern perl versions, breaking the + build when building on recent (Fedora 23, Debian + Testing/Unstable, ..) distributions. + + Makedevs utility now accepts textual (non-numerical) user and + group names. + + Vagrant file to easily setup a working development environment + in a VM has been added. + + Size-stats-compare script to compare rootfs sizes between + builds has been added. + + Infozip package renamed to zip. EFL packages restructured. + + Updated/fixed packages: aespipe, aiccu, alsa-lib, alsa-utils, + angularjs, apache, apr, argp-standalone, armadillo, arptables, + at, atk, audiofile, aumix, autoconf-archive, avahi, bash, bc, + bcache-tools, bdwgc, beecrypt, bind, binutils, bluez5_utils, + bluez_utils, bonnie, boost, busybox, cairo, cdrkit, chrony, + clamav, cmake, collectd, connman, coreutils, cppcms, crda, + cryptodev-linux, cryptsetup, cups, cwiid, cxxtest, dbus, + dbus-cpp, dbus-glib, debianutils, dhcp, dhcpcd, dhrystone, + dillo, directfb, directfb-examples, dmraid, dnsmasq, doom-wad, + dovecot, dovecot-pigeonhole, dropbear, dtv-scan-tables, + dvb-apps, dvbsnoop, ecryptfs-utils, eigen, ejabberd, + elementary, elfutils, enlightenment, erlang, espeak, eudev, + eventlog, exfat, exfat-utils, exiv2, expedite, faifa, + fakeroot, fastd, fbgrab, fetchmail, ffmpeg, findutils, fio, + firmware-imx, flann, flashrom, flite, flot, fmlib, freerdp, + freescale-imx, freetype, gauche, gawk, gcc, gcc-final, gcr, + gdb, gdk-pixbuf, geoip, gesftpserver, gettext, giflib, git, + glibc, glibmm, glog, gmp, gnupg, gnupg2, gnutls, gob2, gpsd, + gptfdisk, grep, gst1-libav, gst1-plugins-{bad,base,good,ugly}, + gst-ffmpeg, gst-plugins-{bad,base,good,ugly}, gstreamer, + gstreamer1, guile, gvfs, gzip, harfbuzz, haserl, hiawatha, + hostapd, hplip, icu, ifupdown, imagemagick, imx-gpu-viv, + imx-kobs, imx-lib, input-tools, intel-microcode, iperf3, + ipmitool, iproute2, iprutils, ipsec-tools, ipset, iptables, + iputils, irda-utils, irssi, iucode-tool, jack2, janus-gateway, + jpeg-turbo, jquery-datetimepicker, jquery-keyboard, + jquery-sparkline, jquery-ui, jquery-ui-themes, + jquery-validation, json-c, kbd, kernel-module-imx-gpu-viv, + keyutils, kmod, knock, kodi, lcdproc, lcms2, leafnode2, + leafpad, libass, libatomic_ops, libbroadvoice, libbsd, + libcap-ng, libcdaudio, libcue, libcurl, libdrm, libecore, + libedbus, libedit, libedje, libeet, libefreet, libeina, + libeio, libelementary, libembryo, libepoxy, libethumb, libev, + libevas, libevas-generic-loaders, libevdev, libevent, libffi, + libfm, libfribidi, libfslcodec, libfslparser, libfslvpuwrap, + libftdi, libfuse, libgail, libglew, libglib2, libgtk2, + libgtk3, libgudev, libhttpparser, libidn, libinput, libiscsi, + libjpeg, liblinear, libmbim, libmicrohttpd, libndp, libnspr, + libnss, liboauth, liboping, libpciaccess, libplist, libpng, + libraw, libraw1394, librsvg, libseccomp, libsecret, + libserialport, libsigc, libsigrok, libsigrokdecode, + libsndfile, libsoc, libsodium, libsoup, libssh2, libsvg, + libsvg-cairo, libtasn1, libtirpc, libtorrent, libungif, + libunwind, libupnpp, liburcu, libuv, libv4l, libva, + libva-intel-driver, libvips, libvncserver, libxml2, libxmlpp, + lightning, lighttpd, linknx, linux-firmware, linux-fusion, + linux-headers, liquid-dsp, lirc-tools, live555, lm-sensors, + lockdev, lshw, ltp-testsuite, ltrace, lttng-babeltrace, + lttng-libust, lttng-modules, lttng-tools, lua, luabitop, + luarocks, luv, lvm2, lxc, makedevs, mc, memcached, memtest86, + mesa3d, mesa3d-demos, mesa3d-headers, micropython, + micropython-lib, minicom, minidlna, mjpg-streamer, mke2img, + moarvm, modem-manager, mongoose, mongrel2, monkey, mono, + monolite, mosh, mosquitto, mpd, mplayer, msgpack, mtdev2tuio, + musepack, musl, mysql, nano, nasm, nbd, neard, netatalk, + netsnmp, nettle, net-tools, network-manager, nfs-utils, nginx, + nmap, nodejs, ntfs-3g, ntp, numactl, nut, nvidia-driver, + odhcp6c, ofono, ola, olsr, omniorb, opencv, opencv3, openipmi, + openldap, openntpd, openobex, openocd, openpgm, + open-plc-utils, openpowerlink, openssh, openssl, openswan, + openvpn, opkg, oprofile, opus, opusfile, p11-kit, package, + pango, pax-utils, pciutils, pcmanfm, perl, perl-db-file, + perl-io-socket-ssl, perl-libwww-perl, perl-net-dns, perl-uri, + perl-xml-libxml, php, php-ssh2, picocom, pinentry, pixman, + polarssl, popt, portaudio, pppd, procps-ng, proftpd, protobuf, + psmisc, ptpd2, pulseaudio, pulseview, pv, python, python3, + python-alsaaudio, python-can, python-cffi, python-cherrypy, + python-httplib2, python-jinja2, python-lxml, python-m2crypto, + python-mako, python-msgpack, python-psutil, python-pyasn, + python-pycparser, python-pydal, python-pyftpdlib, + python-pyroute2, python-pyxml, python-pyzmq, python-requests, + python-serial, python-setuptools, python-six, python-spidev, + python-tornado, python-twisted, python-web2py, python-webpy, + python-werkzeug, python-zope-interface, qemu, qhull, qpdf, qt, + qt5, qt5base, qt5connectivity, qt5declarative, qt5enginio, + qt5graphicaleffects, qt5imageformats, qt5multimedia, + qt5quick1, qt5quickcontrols, qt5script, qt5sensors, + qt5serialport, qt5svg, qt5webchannel, qt5webkit, + qt5webkit-examples, qt5websockets, qt5x11extras, + qt5xmlpatterns, qt-webkit-kiosk, racehound, radvd, read-edid, + readline, redis, rpcbind, rpi-firmware, rpi-userland, rrdtool, + rsync, rsyslog, rtai, rtorrent, rt-tests, rubix, ruby, samba4, + sconeserver, setools, shairport-sync, sigrok-cli, skeleton, + smack, snowball-init, socat, sp-oops-extract, sqlite, + squashfs, squeezelite, squid, sredird, sshfs, + start-stop-daemon, strace, strongswan, stunnel, subversion, + sunxi-tools, swig, sysdig, syslog-ng, sysstat, systemd, + sysvinit, taglib, tcl, tcpreplay, thrift, ti-gfx, tinyalsa, + tor, torsmo, trace-cmd, transmission, tremor, triggerhappy, + trinity, tvheadend, tzdata, uboot-tools, uclibc, udisks, + udpcast, unionfs, upmpdcli, usb_modeswitch, + usb_modeswitch_data, ustr, util-linux, vala, valgrind, + vboot-utils, vde2, vlc, vnstat, webkit, webkitgtk24, weston, + wget, whetstone, whois, wine, wipe, wireless-regdb, wireshark, + wpa_supplicant, w_scan, x11r7, xapp_xbacklight, xapp_xcompmgr, + xapp_xinput, xapp_xkbcomp, xdriver_xf86-input-evdev, + xdriver_xf86-input-libinput, xdriver_xf86-input-synaptics, + xdriver_xf86-video-ati, xdriver_xf86-video-fbturbo, + xdriver_xf86-video-imx-viv, xdriver_xf86-video-intel, + xfont_encodings, xfont_font-adobe-100dpi, + xfont_font-adobe-75dpi, xfont_font-adobe-utopia-100dpi, + xfont_font-adobe-utopia-75dpi, xfont_font-adobe-utopia-type1, + xfont_font-alias, xfont_font-arabic-misc, + xfont_font-bh-100dpi, xfont_font-bh-75dpi, + xfont_font-bh-lucidatypewriter-100dpi, + xfont_font-bh-lucidatypewriter-75dpi, xfont_font-bh-ttf, + xfont_font-bh-type1, xfont_font-bitstream-100dpi, + xfont_font-bitstream-75dpi, xfont_font-bitstream-type1, + xfont_font-cronyx-cyrillic, xfont_font-cursor-misc, + xfont_font-daewoo-misc, xfont_font-dec-misc, + xfont_font-ibm-type1, xfont_font-isas-misc, + xfont_font-jis-misc, xfont_font-micro-misc, + xfont_font-misc-cyrillic, xfont_font-misc-ethiopic, + xfont_font-misc-meltho, xfont_font-misc-misc, + xfont_font-mutt-misc, xfont_font-schumacher-misc, + xfont_font-screen-cyrillic, xfont_font-sony-misc, + xfont_font-sun-misc, xfont_font-winitzki-cyrillic, + xfont_font-xfree86-type1, xfsprogs, xkeyboard-config, xl2tp, + xlib_libfontenc, xlib_libXi, xmlstarlet, xscreensaver, + xserver_xorg-server, xtables-addons, xvkbd, xz, yad, yasm, + ympd, zeromq, zic, znc, zsh, + + New packages: acsccid, assimp, atkmm, autofs, bcm2835, + cairomm, cantarell, chocolate-doom, comix-cursors, cxxtest, + edid-decode, emlog, gcr, gtkmm3, hidapi, jquery-sidebar, + kernel-module-imx-gpu-viv, libasplib, libcroco, libdvbpsi, + libfreeglut, libgdiplus, libglfw, libhdhomerun, libnet, + libsoil, lldpd, luvi, mbedtls, minizip, miraclecast, mongodb, + mraa, netbsd-queue, netsniff-ng, nss-pam-ldapd, + obsidian-cursors, openal, openbox, pangomm, + python-backports-abc, python-beautifulsoup4, python-cbor, + python-click, python-cssselect, python-ecdsa, python-html5lib, + python-idna, python-ipaddress, python-mistune, python-netaddr, + python-paho-mqtt, python-paramiko, python-pyparted, + python-pysmb, python-pyudev, python-singledispatch, + python-smbus-cffi, python-urllib3, qt53d, rabbitmq-c, rfkill, + sbc, spi-tools, tpm-tools, trousers, ubus, unrar, unscd, + unzip, v4l2grab, xdriver_xf86-video-nouveau, xdotool, zbar + + Removed packages: libungif, python-pyxml, + + Issues resolved (http://bugs.uclibc.org): + + #7886: gettext: link failure with locally-installed libxml2 + #7892: systemd-journald is broken + #8066: nodejs crashes when built with gcc 4.9 + #8296: nodejs 0.12.7 - npm crashes (seg core dump) + #8501: gunzip fails to uncompress files + #8541: fail to build host-fakeroot-1.20.2 + #8546: build instructions for raspberry pi don't work + #8571: strace for ARC compile error + #8581: pciutils.mk PCIUTILS_MAKE_OPTS typo + #8616: Fail to build for raspberrypi_defconfig with big endian + #8621: sqlite package, properly enable readline + +2015.11, Released November 30th, 2015 + + Minor fixes. + + Merged/seperate /usr handling is now also performed for + staging so cross-gdb / gdbserver can find the libraries. + + Updated/fixed packages: autossh, conntrack-tools, dcron, + espeak, gcc, glmark2, gpsd, gstreamer1, libglib2, libsigsegv, + libsoc, libv4l, minidlna, mongrel2, opencv, polarssl, + rpi-userland, rubix, skeleton, tovid, uemacs, valgrind, yad, + zmqpp + + Issues resolved (http://bugs.uclibc.org): + + #8441: Invalid directory for X11 fonts in target (RPi2) + #8491: libglib2 2.46.1 not Building for armv5 on 2015.11-rc3 + +2015.11-rc3, Released November 26th, 2015 + + Fixes all over the tree. + + We have a new modern website! + + Updated/fixed packages: apitrace, audiofile, autossh, bullet, + c-ares, collectd, conntrack-tools, cryptodev-linux, dropbear, + fastd, gmp, gpsd, gst-plugins-bad, gst-plugins-base, + gst-plugins-good, gst-plugins-ugly, gstreamer, gstreamer1, + guile, iodine, iproute2, jimtcl, kompexsqlite, libethumb, + libfreeimage, libgsasl, libgtk3, libxml2, localedef, + lttng-tools, macchanger, mongrel2, mpd, openntpd, openssl, + oprofile, pcre, qt5base, quagga, rpi-userland, sconeserver, + sdl, spidev_test, sqlite, strongswan, ustr, xapp_sessreg, + yajl, zmqpp + + Issues resolved (http://bugs.uclibc.org): + + #6872: gpsd: disabled on microblaze + #8321: invalid opcode error with minidlna and ffmpeg + #8336: Default systemd configuration fails to boot correctly in 2015-08 + #8446: rpi-userland failed to build with glibc 2.22 + +2015.11-rc2, Released November 19th, 2015 + + Fixes all over the tree. + + LD_LIBRARY_PATH is no longer used to ensure host binaries find + their libraries, fixing issues on recent Fedora. + + Toolchain fixes for powerpc e5500 / e6500. Fix for an issue + with ${TARGET}-cc after the move to use a toolchain wrapper + for the internal toolchain. + + Appy-patches.sh now correctly applies all files listed in + series files. + + Fixes for merged /usr handling when a custom skeleton is used. + + Updated/fixed packages: axfsutils, boost, busybox, dhcp, + directfb, dropbear, ebtables, fastd, ffmpeg, gauche, gcc, + gettext, gst1-plugins-bad, hostapd, ibrdtnd, libcurl, + libecore, libgudev, libnss, libpng, libserial, libssh2, + libuecc, libxml2, linux-headers, liquid-dsp, ltris, + lua-periphery, minidlna, mongrel2, mpd, mpg123, mplayer, + mysql, opencv, opencv3, package, perl-file-util, php-ssh2, + polarssl, pulseaudio, python-protobuf, qemu, qt5base, ranger, + ruby, skeleton, slang, squeezelite, strongswan, tovid, uclibc, + ushare, wine, wpa_supplicant, x265, + xdriver_xf86-video-siliconmotion, zxing-cpp + + Issues resolved (http://bugs.uclibc.org): + + #4790: Running udhcpc on a system with NFS root kills NFS + #8456: Building host-pkgconf on Fedora 23 fails due to.. + +2015.11-rc1, Released November, 7th 2015 + + Fixes all over the tree and new features. + + Architectures: + + - Support for sparc64 added (internal toolchain with glibc + only). + + - Support for mips32r6 and mips64r6 added. + + - Support for Intel Quark X1000 CPU. + + - Switch to EABIhf by default on ARM when a VFP is available. + + Toolchains: + + - glibc 2.22, gdb 7.10, use gdb 7.9 by default, musl 1.1.12, + uclibc-ng 1.0.8, host-gdb enabled on AArch64. + + - The toolchain wrapper which was used only for external + toolchains is now also used for Buildroot internal + toolchains. This allowed to fix the ccache support, prepare + the way for top-level parallel build support and remove gcc + patches used to detect header/library path poisoning. + + - Remove Analog Devices Blackfin toolchain 2012R2. + + - Fix several Xtensa build failures by switching from + text-section-literals to auto-litpools. + + - Enable MIPS64 support in uClibc-ng, use uClibc on ARC + rather than a specific fork. + + - Linaro toolchains for ARM, ARMeb and AArch64 updated to + 2015.08. 2014.09 version is kept since 2015.08 only runs on + x86_64 hosts. + + Bootloaders: + + - Fix ARM64 support in U-Boot. + + Defconfigs: + + - Added: ARC HS38 VDK virtual boards, Avnet Microzed, Boundary + Devices Nitrogen SoloX, Freescale i.MX6 SoloX Sabre SD, + OLinuxino A20 Lime2, Qemu Sparc64, Qemu SuperH 4 big endian, + Synopsys AArch64 VDK virtual platform. + + - Updated: calao_qil_a9260, calao_usb_a9g20_lpw, ci20, + cubieboad, freescale_imx6_*, imx53loco, imx6_vab820, + mpc8315erdb, qmx6, p1010rdb, qemu, raspberrypi, + raspberrypi2, riotboard, snps_axs10*, wandboard. + + - Removed: at91rm9200df, at91sam9260dfc, at91sam9263ek, + calao_snowball_defconfig, gnublin, integrator926_defconfig. + + Infrastructure: + + - Support for fetching from Mercurial tags fixed. + + - Introduce LINUX_NEEDS_MODULES, which allows to enforce + module support to be enabled in the kernel when a package + builds out-of-tree kernel modules (through the + pkg-kernel-module infrastructure or on its own). + + - Improve the perl package infrastructure to automatically add + the dependency to the perl interpreter to target perl module + packages. + + - Remove trailing slashes in _SITE and addition of a + check to ensure such trailing slashes are no longer added. + + - Extend the legal infrastructure to allow packages to declare + their actual source code. This is useful for packages for + which _SOURCE points to pre-built binaries (as is the + case for external toolchains). The new _ACTUAL_SOURCE + variable allows to point to the source code in such cases. + + - Improved ccache support, thanks to the usage of a toolchain + wrapper for internal toolchain. Now a single cache directory + can be shared between different Buildroot builds. + + - Addition of a 'graph-size' make targets, which generates a + PDF graph of per-package size of the root filesystem. + + - Addition of _EXCLUDES so that packages can request + certain parts of the source code tarball to not be + extracted. This feature is currently used by gcc and + toolchain-external. + + - Packages can now use the _PKGDIR variable, provided by + the package infrastructure, to reference their package + directory, instead of explicitly using package//. + + Filesystems: + + - Add high lz4 compression to squashfs. + + - Simplification of shell profile files in the default + skeleton. + + - Remove ftp user and /home/ftp from the skeleton, and let ftp + server packages create these when needed. + + - Add support for /bin, /sbin and /lib to be symlinks to their + corresponding directories in /usr. This is enforced for + systemd configurations, and optional for other + configurations. + + - Support for AXFS filesystem image generation added. + + - New options to add extra space/inodes to ext2/3/4 images. + + Updated/fixed packages: + + adwaita-icon-theme, apache, apitrace, atk, audit, avahi, + barebox, bash, batctl, bind, binutils, bluez_utils, boost, + bridge-utils, cairo, ccache, chrony, clapack, cloog, cmake, + collectd, connman, conntrack-tools, coreutils, cpio, + cryptsetup, dbus, dbus-cpp, devmem2, dhcp, dhcpcd, dhcpdump, + dhrystone, dillo, directfb, directfb-examples, dmraid, + dos2unix, dovecot, dovecot-pigeonhole, drbd-utils, dropbear, + dropwatch, dtc, e2fsprogs, ebtables, efl, eigen, ejabberd, + elf2flt, elfutils, erlang, ethtool, eudev, evemu, exfat, + exfat-utils, expat, faifa, fbterm, fdk-aac, feh, ffmpeg, file, + flashrom, fping, freerdp, freescale-imx, freetype, gdk-pixbuf, + genimage, gettext, git, glib-networking, glmark2, gnupg2, + gnuradio, gnutls, gpsd, grep, grub2, gst1-imx, gst1-libav, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst1-validate, gst-fsl-plugins, + gst-plugins-bad, gstreamer1, guile, gvfs, harfbuzz, haveged, + hostapd, icu, imagemagick, impiutil, imx-gpu-viv, imx-vpu, + inadyn, intltool, iostat, iperf3, ipmiutil, iproute2, + iptables, iw, jpeg-turbo, jq, jsoncpp, kexec-lite, kmod, kodi, + kodi-audioencoder-flac, kodi-pvr-argustv, kodi-pvr-filmon, + kodi-pvr-hts, kodi-pvr-mythtv, kodi-pvr-pctv, + kodi-pvr-stalker, kodi-pvr-vbox, + kodi-visualisation-waveforhue, less, lftp, libbluray, + libcgroup, libconfuse, libcurl, libdcadec, libdrm, libevdev, + libffi, libfribidi, libfslcodec, libfslparser, libfslvpuwrap, + libgcrypt, libglew, libglib2, libgtk3, libidn, liblinear, + liblockfile, libmicrohttpd, libnetfilter_conntrack, libnfs, + libnftnl, libnl, libnspr, libnss, libpcap, libpfm4, libpng, + libselinux, libserial, libsoup, libsoxr, libstrophe, libtasn1, + libtirpc, libtorrent, libupnpp, liburcu, libusb-compat, libuv, + libv4l, libva, libva-intel-driver, libxcb, lighttpd, links, + linux, linux-firmware, linux-fusion, linux-headers, + lirc-tools, localedef, lpeg, lsof, ltp-testsuite, + lttng-libust, lttng-tools, lua-periphery, luaposix, lvm2, lxc, + lz4, mdadm, mesa3d, mesa3d-headers, minicom, minidlna, moarvm, + modem-manager, mosquitto, mpd, mpdecimal, mpg123, mplayer, + mrouted, msmtp, mtd, mutt, nettle, network-manager, nfs-utils, + nftables, nginx, nodejs, noip, ntp, ofono, opencv3, openpgm, + openssl, openswan, openvpn, pango, parted, perl, perl-cross, + perl-crypt-openssl-random, perl-http-message, + perl-io-socket-ssl, perl-module-build, perl-mojolicious, + perl-netaddr-ip, perl-net-dns, perl-net-http, perl-net-ssleay, + perl-uri, perl-xml-libxml, php, picocom, pixman, pkgconf, + poco, polarssl, portaudio, portmap, postgresql, proftpd, + protobuf, protobuf-c, pulseaudio, python-configshell-fb, + python-networkmanager, python-numpy, python-pyparsing, + python-pypcap, python-rtslib-fb, python-spidev, python-urwid, + python-web2py, qemu, qt5base, redis, rngtools, rng-tools, + rpi-firmware, rpi-userland, rtmpdump, rtorrent, ruby, samba, + samba4, sane-backends, sconeserver, sdl, sed, setools, + shairport-sync, shared-mime-info, sland, smartmontools, + softether, spice-protocol, sqlcipher, sqlite, squid, + strongswan, stunnel, subversion, sudo, sunxi-tools, + supervisor, systemd, tar, targetcli-fb, tcpdump, tiff, tor, + tvheadend, tzdata, uboot-tools, udisks, unionfs, upmpdcli, + util-linux, vala, valgrind, vim, vlc, vorbis-tools, vsftpd, + vtun, wavpack, webkitgtk24, weston, whois, wireless-regdb, + wireshark, wpa_supplicant, xdriver_xf86-input-vmmouse, + xdriver_xf86-video-imx-viv, xdriver_xf86-video-intel, + xdriver_xf86-video-sis, xlib_libXi, xorg-server, + xtables-addons, xterm, xz, zic, znc, zsh + + New packages: + + axfsutils, bitstream, check, dvblast, eventlog, fastd, gauche, + gmock, graphite2, gssdp, gupnp, gupnp-av, ibrcommon, ibrdtn, + ibrdtnd, ibrdtn-tools, imx-kobs, iqvlinux, irssi, + kompexsqlite, libbroadvoice, libcddb, libcodec2, libcrossguid, + libg7221, libhttpparser, libilbc, libldns, libmng, + libopenh264, libpam-radius-auth, libpam-tacplus, libsilk, + libsoundtouch, libssh, libuecc, libyuv, liquid-dsp, luv, + micropython, micropython-libs, python-pyratemp, + python-pyroute2, python-ranger, rapidxml, scrypt, sdl2, + sp-oops-extract, squeezelite, stress-ng, swupdate, syslog-ng, + x265, xdriver_xf86-video-fbturbo, xxhash, yad, zxing-cpp + + Removed packages: + + blackbox (was deprecated), divine (merged in directfb), + kobs-ng (replaced by imx-kobs), mediactl (merged in libv4l), + sawman (merged in directfb), schifra (marked broken since a + long time), texinfo (host variant only, no longer used), zxing + (replaced by zxing-cpp), + + Issues resolved (http://bugs.uclibc.org): + + #4099: cut utility from GNU coreutils works incorrect + #7772: libxml-parser-perl build failure: missing dependency + ExtUtils/MakeMaker + #7931: Default configuration for Cubieboard v1 is outdated + #8116: 2015.05-rc2 raspberrypi2_defconfig network interface + not coming up + #8246: X.org DRI2 build issue + #8256: pointing to /usr/bin/objcopy old version (x86) instead + of the generated one + #8266: mplayer build issue + #8281: pyrexc fails to run when path is too long + #8316: lttng-tools and lttng-babeltrace executables contain + bad RPATH pointing to host machine + #8331: kexec wants shutdown in /sbin, but systemd installs it + in /usr/sbin + #8361: Buildroot 2015.08.1 skeleton inittab overwritten by + busybox's version + #8366: libevent does not build + #8386: build failed with external toolchain + #8391: Node.js 0.12.7 fails to build on raspberry_pi defconfig + #8396: CCACHE initialization + #8401: gpsd 3.15 NMEA support + #8416: cups depends on BR2_DEPRECATED_SINCE_2015_05 + #8421: util-linux installs systemd files in output/target/home/ + +2015.08, Released August 31st, 2015 + + Minor fixes. + + OpenCV 3.x package renamed to opencv3. OpenCV 2.4.x + reintroduced as opencv. + + Updated/fixed packages: bootutils, canfestival, cppcms, + curlftpfs, dhcpdump, dropbear, erlang-p1-tls, exfat, gnuradio, + ipkg, libgudev, libmbim, libwebsock, linux-pam, lm-sensors, + ltrace, midori, network-manager, openssh, perl-file-listing, + perl-http-cookies, perl-http-daemon, perl-http-negotiate, + perl-www-robotrules, python-can, qt5base, qt5multimedia, + setools, sysvinit, tinyalsa, tn5250, tvheadend, uboot, vlc, + x264, xserver_xorg-server, zyre + +2015.08-rc2, Released August, 24th 2015 + + Fixes all over the tree. + + Toolchain: fix gcc build on NIOS-II. + + Infrastructure: add _POST_GEN_HOOKS mechanism to fix + hybrid ISO image generation. + + Architectures: add arm1136j-s variant. + + Updated/fixed packages: apitrace, audit, bcusdk, bdwgc, + beecrypt, boost, bwm-ng, cdrkit, c-icap, cifs-utils, clapack, + c-periphery, cpio, cramfs, czmq, dawgdic, dnsmasq, dosfstools, + dropbear, elfutils, empty, eudev, fan-ctrl, filemq, gnutls, + guile, haveged, imlib2, libcec, libepoxy, libev, libgpgme, + libiio, libnetfilter_queue, libnfnetlink, libpfm4, libpthsem, + librtas, libselinux, libsigsegv, libsodium, libv4l, lightning, + linux, lirc-tools, lrzsz, mono, mosh, mpd, msmtp, nbd, + netatalk, nodejs, ola, opencv, oprofile, php, poco, + postgresql, powertop, protobuf, protobuf-c, qt5base, + qt5quickcontrols, rapidjson, rng-tools, squid, sysdig, + sysstat, tftpd, tinc, tz, util-linux, webkitgtk24, weston, + wireshark, wvstreams, xdriver_xf86-input-synaptics, zyre. + + Issues resolved (http://bugs.uclibc.org): + + #8276: package/dropbear: symlink resolution incorrect + #8286: Error with buildroot + #8301: ldconfig parameter in Makefile + +2015.08-rc1, Released August, 5th 2015 + + Fixes all over the tree and new features. + + Architectures: + + - Refactor how the availability of an MMU is described. + - Minimal support for Cortex-M3 + - Minimal support for AArch64 big-endian + + Toolchains: + + - Add CodeSourcery MIPS 2015.05, remove MIPS 2013.11 + - Use uClibc-ng as the default uClibc version, instead of the + official uClibc, which hasn't done any release since 3+ + years + - eglibc is now marked as deprecated + - GCC: gcc 4.9.x is now the default and was updated to 4.9.3, + support for gcc 5.x added. + - Binutils: use Binutils 2.24 as the default, 2.25.x series + bumped to 2.25.1, remove old Binutils 2.22. + - Update ARC toolchain components to 2015.06 + - Add support for Fortran when building gcc + + Bootloaders: + + - Support for using the kconfig configuration system in + U-Boot + + New Defconfigs: + + - VIA VAB-820/AMOS-820 + - OLimex OLinuxino A20 Lime + - Many new defconfigs for Atmel evaluation boards: + at91sam9rlek, at91sam9x5ek, sama5d3xek, sama5d4ek, sama5d4 + Xplained Ultra, sama5d3 Xplained. + - ACME Systems Aria G25 + - WarPboard + - Altera Cyclone 5 Development Board + - Xilinx zc706 + - ARC AXS101 and AXS103 Software Development Platforms + - Significant updates to Raspberry Pi / Raspberry Pi 2 + + Infrastructure: + + - Buildroot takes better care now of generating predictable + permissions in the target filesystem. However, existing + permissions on a custom skeleton or rootfs overlay will no + longer be preserved. Therefore, it is necessary to add a + permission table (BR2_ROOTFS_DEVICE_TABLE) to set the + required permissions. + - Add support for kconfig fragments. + - No longer pass --{enable,disable}-debug to autotools + packages depending on the value of + BR2_ENABLE_DEBUG. BR2_ENABLE_DEBUG now only controls + whether we build with -g or not. + - Support for extracting archives in .lzma in the generic + package infrastructure. + - Remove random-seed file from the default skeleton, since + seeding the entropy pool with a known seed makes more harm + than good. + - In the CVS download helper, add support to use a date as + the version. + - Add support for a per-package _STRIP_COMPONENTS + variable, which packages can use to specify how many path + components should be stripped when extracting the tarball. + - Addition of a 'kernel-module' package infrastructure, which + simplifies the packaging of external kernel modules. Many + existing packages are converted to use it. + - Allow bootloaders to be implemented in $(BR2_EXTERNAL) + - Remove /etc/securetty from the default skeleton. + - Migration of sysV initscripts from the default skeleton to + a package called 'initscripts', installed only when Busbox + init or sysvinit are used. + - Migration of the skeleton logic to a proper 'skeleton' + package. + - Addition of a 'linux-tools' infrastructure in the 'linux' + package, to support building user-space tools bundled + within the Linux kernel sources, such as perf and cpupower. + - Usage of backticks instead of make $(shell ...) to execute + shell commands. This allows to delay the evaluation of such + commands when actually needed, and not when expanding the + variables. It is useful to make 'make printvars' less + noisy, and as a preparation to support top-level parallel + build. + - Libtool .la files are not mungled for all package types, + instead of being handled only for packages using the + autotools-package infrastructure. + - Add mechanism to allow packages to express a dependency on + gcc versions. This is needed for packages that use C++11 or + C11 support for example. + + Important package updates: + + - Complete rework of the matchbox packaging + - Lots of fixes in packages for compatibility with musl and + gcc 5. + - Hash files added to a large number of packages. + - Update a significant number of packages to use a new + hosting, after the announcement of Google Code and + Gitorious closing. + - Major packages needed for SELinux support have been merged, + but the support is not complete yet. + - Significant update of OpenCV to version 3.0, and addition + of lots of eatures. + - Significant update of all packages supporting the GPU and + VPU of i.MX ARM processors. + - Addition of systemd support in a significant number of + packages. + - Qt5 updated to 5.5.0 + - Use modular X.org server by default instead of KDrive + + Filesystems: + + - Complete overhaul of the iso9660 support. Now allows to use + directly IS9660 as the root filesystem format and not only + an initrd, and supports Grub 2 and isolinux in addition to + Grub. + + Updated packages: a10disp, agentpp, apache, at91bootstrap3, + audit, barebox, bc, bind, bmon, boost, btrfs-progs, + ca-certificates, can-utils, ccache, cloog, collectd, connman, + coreutils, c-periphery, cryptsetup, dado, dbus, dejavu, + dhcpcd, dnsmasq, dosfstools, dovecot, dovecot-pigeonhole, + e2fsprogs, ejabberd, erlang-p1-cache-tab, erlang-p1-sip, + erlang-p1-stringprep, erlang-p1-stun, erlang-p1-tls, + erlang-p1-utils, erlang-p1-xml, erlang-p1-yaml, ethtool, + eudev, evtest, exim, expect, explorercanvas, feh, ffmpeg, + file, flashrom, freescale-imx, freetype, gawk, gcc, gdb, + gettext, git, glib-networking, gnupg2, gnutls, gpsd, gptfdisk, + gpu-viv-bin-mx6q, gst-fsl-plugins, harfbuzz, hdparm, heimdal, + i2c-tools, imagemagick, imx-vpu, iproute2, ipset, isl, iw, + kodi, kodi-addon-xvdr, kodi-audioencoder-flac, + kodi-audioencoder-lame, kodi-audioencoder-vorbis, + kodi-audioencoder-wav, lftp, libass, libassuan, libcec, + libconfi, libcurl, libdrm, libevdev, libfreefare, libfslcodec, + libfslparser, libfslvpuwrap, libfuse, libglib2, libgpgme, + libgtk2, libgtk3, libical, libidn, libiio, libinput, libiscsi, + libllcp, libmicrohttpd, libnfc, libnss, libpcap, libpciaccess, + libpng, libserialport, libsigrok, libsoc, libtirpc, libubox, + libunistring, libupnp, libuv, libv4l, libva, + libva-intel-driver, libXrandr, lighttpd, linenoise, linux, + linux-firmware, linux-headers, live555, ltrace, lua, + lua-csnappy, lua-ev, luajit, lua-messagepack, luaperiphery, + lvm2, lxc, lzo, mesa3d, mesa3d-headers, midori, mmc-utils, + modem-manager, mono, mosquitto, mpd, mpd-mpc, mpfr, mpg123, + mtd, musl, nano, netperf, network-manager, nfs-utils, nginx, + nodejs, ntp, ola, opencv, openldap, openssh, openssl, + openswan, openvmtools, openvpn, opkg, orbit, orc, pcmanfm, + perl-cross, perl-encode-locale, perl-io-socket-ssl, + perl-mojolicious, perl-net-ssleay, perl-path-tiny, perl-uri, + perl-xml-libxml, php, pinentry, polarssl, postgresql, + pulseview, pure-ftpd, python, python-dpkt, python-lxml, + python-networkmanager, python-pyinotify, python-pypcap, + python-tornado, qextserialport, qt, qt5, rapidjson, redis, + rpcbind, rpi-firmware, rpi-userland, samba4, shairport-sync, + snmpp, sqlite, squid, strongswan, stunnel, sudo, sunxi-boards, + sunxi-mali, sysdig, sysstat, systemd, tcpdump, tiff, tmux, + tor, txheadend, tzdata, uboot, uclibc, ulogd, upmpdcli, + usb_modeswitch, usb_modeswitch_data, vala, vsftpd, wayland, + weston, whois, wireless-regdb, wireshark, x264, xapp_xvinfo, + xdriver_xf86-input-libinput, xdriver_xf86-input-vmmouse, + xdriver_xf86-video-cirrus, xdriver_xf86-video-geode, + xdriver_xf86-video-imx-viv, xdriver_xf86-video-mach64, + xdriver_xf86-video-neomagic, xdriver_xf86-video-r128, + xdriver_xf86-video-savage, xdriver_xf86-video-siliconmotion, + xdriver_xf86-video-vesa, xkeyboard-config, xlib_libfontenc, + xlib_libFS, xlib_libXaw, xlib_libxkbfile, xlib_libXrender, + xlib_libXt, xproto_kbproto, xproto_xproto, xproto_xrandrproto, + xscreensaver, xserver_xorg-server, xtables-addons, yaml-cpp, + zic. + + New packages: angularjs, atf, audit, c-icap, c-icap-modules, + cpio, dawgdic, faketime, fcgiwrap, gflags, glog, initscripts, + jquery-datetimepicker, kodi-audioencoder-modplug, + kodi-audioencoder-nosefar, kodi-audioencoder-sidplay, + kodi-audioencoder-snesapu, kodi-audioencoder-stsound, + kodi-audioencoder-timidity, kodi-audioencoder-vgmstream, + kodi-platform, kodi-pvr-argustv, kodi-pvr-dvblink, + kodi-pvr-dvbviewer, kodi-pvr-filmon, kodi-pvr-hts, + kodi-pvr-iptvsimple, kodi-pvr-mediaportal-tvserver, + kodi-pvr-mythtv, kodi-pvr-nextpvr, kodi-pvr-njoy, + kodi-pvr-pctv, kodi-pvr-stalker, kodi-pvr-vbox, + kodi-pvr-vdr-vnsi, kodi-pvr-vuplus, kodi-pvr-wmc, + kodi-screensaver-asteroids, kodi-screensaver-biogenesis, + kodi-screensaver-crystalmorph, kodi-screensaver-greynetic, + kodi-screensaver-pingpong, kodi-screensaver-pyro, + kodi-screensaver-stars, kodi-visualisation-shadertoy, + kodi-visualisation-spectrum, kodi-visualisation-waveforhue, + kodi-visualisation-waveform, kvmtool, kyua, libfm, + libfm-extra, libplatform, librtas, libsodium, libsquish, + libucl, libump, linux-backports, lua-iconv, lutok, menu-cache, + moarvm, monkey, mono-gtksharp3, mosh, openipmi, python-can, + python-pycli, python-pydal, python-pyyaml, python-web2py, + qpid-proton, qt5webchannel, quazip, racehound, rtl8188eu, + rtl8821au, sepolgen, setools, skeleton, stm32flash, + webkitgtk24, xdriver_xf86-video-qxl, zynq-boot-bin. + + Deprecated packages: webkitgtk, libgail, eglibc support in + glibc package. + + Issues resolved (http://bugs.uclibc.org): + + #4291: Segmentation fault with all binaries that use threads + when compiled with gcc 4.6 + #6944: building toolchain for sh4 fails + #7592: Buildroot GCC: -lto requires plugin support in ranlib + #7628: Python SSL does not get built for Raspberry Pi + #7682: Missing dependencies for NFS + #7742: dhcp lacks important features when BR2_ENABLE_DEBUG + #7754: make: *** [/..../buildroot-2014.11/output/build/host-gcc-initial-4.8.3/.stamp_built] Error 2 + #7946: libglib2-2.42.2 fails to build for sparc-buildroot-linux-gnu + #7956: glibc 2.20 and 2.21 fail to build for sh64-buildroot-linux-gnu + #7971: python-flask, python-werkzeug. No module named zlib + #7981: Target file system skeleton permissions hazard + #8006: rpcdebug in nfs-utils built for the host + #8036: alsa-lib headers problem that prevents to compile alsa + dependent projects + #8081: systemd init system: /tmp is not mode 1777 + #8121: php opcache extension doesn't get installed + #8151: x86-64 make fails with ncurses 5.9 + #8156: pkg-kconfig infra broken for *-update-{config, defconfig} + #8161: default /bin/sh symlink to busybox is full path and not relative + #8171: glamor missing + #8191: Request update support for the cubieboard series + #8201: Important security upgrades for node.js + +2015.05, Released May 31st, 2015 + + Minor fixes. + + Updated/fixed packages: conntrack-tools, directfb, fio, flite, + gptfdisk, ipmiutil, iproute2, janus-gateway, keyutils, knock, + libelementary, libgcrypt, libgsasl, libjpeg, libstrophe, + lttng-libust, nbd, ncurses, nmap, php, postgresql, python, + python3, sconeserver, udpcast, upmpdcli + +2015.05-rc3, Released May 22nd, 2015 + + Several fixes, mainly related to static linking. + + Updated/fixed packages: acl, alsa-utils, apr, armadillo, attr, + autoconf-archive, binutils, boost, czmq, dhcpcd, duma, + enlightenment, exim, fbterm, freerdp, gcc, gdk-pixbuf, + google-breakpad, gpsd, heirloom-mailx, hwloc, ipmiutil, + iproute2, jack2, jasper, kmod, lcdproc, leafnode2, libcap-ng, + libftdi1, libmatroska, libmemcached, libmodbus, libnftnl, + libsigrok, libupnpp, libuv, libxml-parser-perl, linux, + linux-headers, lirc-tools, lua-periphery, lxc, mongoose, mono, + mpg123, mosquitto, neardal, newt, ntp, ola, openldap, opencv, + php, postgresql, protobuf, pulseaudio, python-pyqt, qemu, qt, + qt5base, rpi-userland, rsyslog, snmppp, sqlite, tiff, + tinyxml2, uboot-tools, unionfs, ux5000-firmware, usbredir, + ushare, vpnc, vsftpd, wavpack, wireless_tools, wsapi, + wvstreams, xmlstarlet, zeromq, zmqpp + + New packages: c-periphery + + Issues resolved (http://bugs.uclibc.org): + + #8106: mkfs.jffs2 uses the --pagesize parameter incorrectly + #8111: 2015.05.rc2 LIBFOO_CONF_OPTS not working + #8126: exim lacks plaintext and cram-md5 auth + +2015.05-rc2, Released May 11th, 2015 + + Minor fixes. + + Toolchain: PR56780 backport to GCC 4.8.4 to fix GDB linking + issues. Context functions enabled for uClibc snapshot / + uClibc-NG. + + Architectures: Endian handling symbol for Xtensa, binutils + fixes. + + Infrastructure: Fix for kernel module stripping when + localversion contains spaces. + + Updated/fixed packages: at, autoconf-archive, binutils, + cc-tool, cryptsetup, dstat, expedite, freerdp, giflib, + gnuchess, guile, ipmiutil, iproute2, mono, monolite, neard, + ola, poppler, postgresql, python-qt, qt, sqlite, valgrind, + xlib_libXfont + + Issues resolved (http://bugs.uclibc.org): + + #8086: Cannot select systemd as init with Linaro 2014.09... + +2015.05-rc1, Released May 4th, 2015 + + Fixes all over the tree and new features. + + Architectures: Removed AVR32 support, deprecate SH64, added + support for steamroller, corei7-avx and core-avx2 x86 + variants. + + Toolchains: IPv6 and Largefile support now enforced for + uClibc. Corresponding Kconfig symbols removed. + + External CodeSourcery AMD64 2014.05, MUSL-cross 1.1.6 added, + CS sh2, Xilinx microblaze v2/14.3 removed. Distro-class + external toolchains are now detected and blacklisted. + + Internal toolchain support for Nios2 added, Blackfin + removed. Aarch64 and sh musl support. uClibc-ng support added. + + Libatomic is now handled for internal and external + toolchains. Link time optimization (LTO) support. + + New Defconfigs: Freescale i.MX28 EVK, i.MX31 PDK and SABRE + Auto, Raspberry Pi 2, RIoTboard, + + Infrastructure: Hashes for a large number of packages have + been added. Missing hashes now stop the build unless + explicitly disabled. + + Spaces and colons (:) are now supported in package + versions. Dependencies can now be listed for the patch step + (_PATCH_DEPENDENCIES). Kconfig and Linux kernel + extensions infrastructure has been added. + + Makedevs now has a recursive (r) option. + + The variable containing the list of packages to build has been + renamed from TARGETS to PACKAGES. + + Make external-deps / legal-info / source / source-check have + been reimplemented using the package infrastructure, so their + output/behaviour may differ from earlier (some packages were + not included in the past). + + The old insecure DES password encoding is no longer supported. + + U-Boot patch option now support direct references to patch + files and URLs in addition to directories of patches. The + i.MX28 SD format (u-boot.sd) is now supported. + + Updated/fixed packages: agentpp, aircrack-ng, alsa-lib, + alsa-utils, apr-util, apr, atk, autossh, avahi, avrdude, + bcusdk, bdwgc, bind, binutils, bmon, boost, botan, + btrfs-progs, busybox, ca-certificates, cairo, can-utils, + canfestival, ccache, chrony, civetweb, clamav, cmake, + collectd, connman, copas, crda, cryptodev-linux, cryptsetup, + cups, czmq, dbus-cpp, dbus-glib, dbus-python, dbus, dfu-util, + dhcp, dhcpcd, dialog, dillo, dmraid, dnsmasq, dos2unix, + dosfstools, dovecot-pigeonhole, dovecot, dropbear, dropwatch, + dtv-scan-tables, dvdauthor, e2fsprogs, ecryptfs-utils, + libevas, elfutils, enscript, erlang, espeak, eudev, evemu, + exfat-utils, exim, f2fs-tools, feh, ffmpeg, fftw, flickcurl, + fltk, fluxbox, fmlib, fmtools, freeradius-client, freerdp, + gamin, gawk, gcc-final, gcc, gd, gdb, gengetopt, geoip, git, + glib-networking, gnu-efi, gnuchess, gnutls, gpsd, gptfdisk, + gpu-viv-bin-mx6q, gst-plugin-bad, gstreamer, gstreamer1, + gtest, gvfs, harfbuzz, haserl, haveged, hiawatha, + hicolor-icon-theme, hostapd, hplip, httping, i2c-tools, icu, + ifplugd, imagemagick, imlib2, iozone, iproute2, iptables, + iputils, irqbalance, iw, jack2, jhead, jimtcl, json-c, kexec, + kismet, kmod, kodi-audioencoder-flac, + kodi-audioencoder-vorbis, kodi-pvr-addons, kodi, ktap, lcms2, + libass, libatomic_ops, libbluray, libcap, libcgroup, libcurl, + libdrm, libdvbsi, libebml, libecore, libedit, liberation, + libev, libevas, libevdev, libftdi, libgcrypt, libglib2, + libgpgme, libgtk2, libgtk3, libiconv, libidn, libiio, + libinput, libiscsi, libksba, liblinear, libmatroska, + libmicrohttpd, libmodbus, libmpdclient, libnice, libnl, + libnspr, libnss, libpcap, libpciaccess, libphidget, libplayer, + libpthsem, libqmi, librsvg, libseccomp, libsigrok, libsoup, + libsrtp, libssh2, libtasn1, libtool, libunistring, liburcu, + libusb, libuv, libva-intel-driver, libva, libvncserver, + libvorbis, libvpx, libwebsockets, libxml2, libzip, lightning, + lighttpd, linknx, linphone, linux-firmware, linux-headers, + linux-pam, live555, ljsyscall, lmbench, lockdev, logrotate, + lpc3250loader, lpeg, lsof, lttng-libust, lttng-modules, + lttng-tools, lua, luacrypto, luafilesystem, luajit, luaposix, + luarocks, lvm2, lxc, make, + matchbox-{common,desktop,fakekey,keyboard,lib,startup-monitor,vm}, + matchbox, mcelog, memcached, memstat, memtest86, mesa3d, + minidlna, mjpegtools, mjpg-streamer, modem-manager, mongoose, + monit, mono, monolite, mp4v2, mpc, mpd, mpdecimal, mpg123, + mplayer, musl, nano, nbd, ncftp, ncmpc, ncurses, ne10, neard, + neardal, net-tools, netatalk, netsnmp, network-manager, nginx, + nodejs, ntfs-3g, ntp, numactl, odhcp6c, ofono, open2300, + opencv, openldap, openntpd, openocd, openssh, openssl, + openswan, opentyrian, openvmtools, openvpn, oprofile, p11-kit, + pango, patch, patchelf, pciutils, pcre, perf, perl-gdgraph, + perl-io-socket-ssl, perl-json-tiny, perl-module-build, + perl-mojolicious, perl-net-ssleay, perl-path-tiny, + perl-xml-libxml, perl, phidgetwebservice, php-gnupg, php, + pkgconf, polarssl, poppler, popt, postgresql, powerpc-utils, + pppd, prboom, procps-ng, proftpd, psplash, ptpd2, + python-{cheetah,coherence,django,markdown,netifaces,pam,six}, + python-tornado, python-twisted, python-zope-interface, python, + python3, qemu, qt, qt5, qt5base, qt5multimedia, + qt5xmlpatterns, qt5cinex, quagga, qwt, radvd, readline, + rng-tools, rpcbind, rpi-firmware, rpi-userland, rsync, + rsyslog, rtai, rtmpdump, ruby, sam-ba, samba, samba4, + sane-backends, sconeserver, shairport-sync, sigrok-cli, slang, + smcroute, snmppp, socat, socketcand, sofia-sip, sox, + spawn-fcgi, speex, sqlcipher, sqlite, squid, strace, + strongswan, stunnel, sudo, sunxi-boards, swig, sysstat, + systemd, tcpdump, tftpd, thrift, thttpd, ti-gfx, ti-utils, + tiff, tinyalsa, tn5250, transmission, trinity, tslib, + tvheadend, tzdata, uboot-tools, uclibc, ulogd, usb_modeswitch, + usbutils, ustr, util-linux, vala, valgrind, vlc, wayland, + webp, weston, wget, which, whois, wireless-regdb, + wireless_tools, wireshark, wpa_supplicant, wvstreams, + xapp_{bdftopcf,bitmap,fonttosfnt,fslsfonts}, + xapp_{fstobdf,iceauth,mkfontscale,oclock,rgb,sessreg,setxkbmap}, + xapp_{showfont,smproxy,twm,x11perf,xcalc,xclipboard,xcmsdb}, + xapp_{xdbedizzy,xditview,xdpyinfo,xdriinfo,xedit,xev,xeyes}, + xapp_{xf86dga,xfsinfo,xgamma,xgc,xhost,xinit,xinput,xkbcomp}, + xapp_{xkbevd,xkbprint,xlsatoms,xlsfonts,xmag,xman,xmh,xmodmap}, + xapp_xmore, xcb-util-image, xcb-util-keysyms, + xdata_xcursor-themes, + xdriver_xf86-input-{evdev,keyboard,synaptics,void}, + xdriver_xf86-video-{ati,cirrus,geode,mach64,mga,neomagic}, + xdriver_xf86-video-{r128,savage,siliconmotion,sis,tdfx}, + xdriver_xf86-video-{trident,vmware,voodoo}, xenomai, + xfont_font-util, xkeyboard-config, + xlib_lib{ICE,X11,Xdmcp,Xfont,Xpm,XvMC}, + xlib_lib{Xxf86vm,xshmfence,xtrans}, xproto_randrproto, + xproto_xproto, xserver_xorg-server, x11vnc, x264, xerces, + xorriso, xterm, xz, yaml-cpp, zeromq, zic, zmqpp + + New packages: apache, autoconf-archive, batctl, + bitstream-vera, bullet, cc-tool, doxygen, drbd-utils, + dvdrw-tools, gnuradio, gst1-imx, hans, hwloc, ijs, + imx-usb-loader, inconsolata, iodine, iotop, ipmiutil, jsoncpp, + leveldb, libdcadec, libdri2, libfreeimage, libftdi1, + libsidplay2, lirc-tools, lua-periphery, mc, mesa3d-headers, + mosquitto, nvidia-driver, nvidia-tegra23{,-binaries,-codecs}, + openjpeg, opusfile, perl-crypt-openssl-{random,rsa}, + perl-db-file, perl-digest-{hmac,sha1}, + perl-encode-{detect,locale}, perl-file-{listing,util}, + perl-html-{parser,tagset}, perl-http-cookies, + perl-http-{daemon,date,message,negotiate}, perl-io-html, + perl-libwww-perl, perl-lwp-mediatypes, perl-mail-dkim, + perl-mailtools, perl-mime-base64, perl-net-{dns,http}, + perl-netaddr-ip, perl-time-hires, perl-timedate, perl-uri, + perl-www-robotrules, powertop, pulseview, + python-{cherrypy,lxml,mako,pyqt,pyxml,sip,spidev,ws4py}, qpdf, + qt-webkit-kiosk, sl, softether, sysdig, tinyxml2, tor, tovid, + unixodbc, wf111, wine, libepoxy, xapp_xcompmgr, + xapp_xfindproxy, xcb-util-cursor, xcb-util-renderutil, + xdriver_xf86-input-libinput, xdriver_xf86-video-imx{,-viv}, + xproto_xproxymanagementprotocol + + Removed packages: gtk2-theme-hicolor + + Deprecated packages: samba + + Issues resolved (http://bugs.uclibc.org): + + #7478: Multiple chosen python modules are not built due to... + #7508: Use of BR2_EXTERNAL and dependencies to existing packages + #7676: Package procps-ng installs binaries to nonsensical folder + #7724: Startx is not installed in the target + #7760: botan: wrong prefix in botan-1.10.pc + #7826: Building of cdparanoia + #7844: Lua with hard-float on MIPS by buildroot doesn't work + #7874: X.org configure error + #7941: glibc-2.20 fails to build for sparc-buildroot-linux-gnu + #7951: gcc 4.9.2 fails to build for sparc-buildroot-linux-gnu + #7961: Qt5 fails to build for xtensa-buildroot-linux-uclibc + #7976: mkuser script fails with: user already exists with... + #8011: When building only busybox and strace, strace fails... + #8016: collectd fails to build, network.c:171:19: error:... + #8041: error on building libcurl7.42.0 + +2015.02, Released March 1st, 2015 + + Minor fixes. + + Updated/fixed packages: civetweb, ding-libs, + directfb-examples, glibc, gnupg, gnupg2, gpm, + gst-plugins-good, gst1-plugins-good, freetype, libao, libevas, + libevent, libfribidi, libgcrypt, libgtk2, libshout, libsrtp, + libtheora, libupnpp, libxmlrpc, linux, make, opus, pinentry, + rpi-firmware, shared-mime-info, vlc, vorbis-tools, + xcb-util-keysyms + + Removed packages: libgc + +2015.02-rc3, Released February 24th, 2015 + + Minor fixes. + + Cmake and rebar (erlang) infrastructure fixes. + + Updated/fixed packages: bind, btrfs-progs, busybox, e2fsprogs, + evtest, ffmpeg, fltk, gnutls, i2c-tools, imagemagick, libxcb, + make, mjpg-streamer, netsnmp, opentyrian, php, polarssl, + qt5base, samba, samba4, sudo, util-linux, xserver_xorg-server + +2015.02-rc2, Released February 15th, 2015 + + Minor fixes. + + raspberrypi: fix kernel sha1 for DT variant. + + Updated/fixed packages: dbus, dvdauthor, git, libsemanage, + libsepol, libssh2, mplayer, ntp, openvmtools, python3, + qt5base, qt5connectivity, xserver_xorg-server + +2015.02-rc1, Released February 8th, 2015 + + Fixes all over the tree and new features. + + Static/shared library handling reworked. This is now a + tristate (shared only / shared and static / static + only). Default is now shared only to speed up the + build. BR2_PREFER_STATIC_LIB is now called BR2_STATIC_LIBS. + + The toolchain (internal and external) will now warn when an + unsafe library or header path is used (such as /usr/include or + /usr/lib). If BR2_COMPILER_PARANOID_UNSAFE_PATH is enabled + under build options this instead becomes an error. + + A installation path issue with the internal musl toolchain + support has been fixed so it is now possible to reuse it as an + external toolchain. + + Architectures: Freescale E5500 and E6500 PowerPC support + added, deprecated MIPS 1/2/3/4 support removed. + + New defconfigs: Freescale p2020ds, MIPS creator CI20, + Raspberrypi with DT, UDOO Quad. + + 'make _defconfig' now saves the path to the defconfig in + the .config, so a 'make savedefconfig' automatically updates + it. + + Infrastructure for packages using the Erland rebar tool has + been added. + + Hashes for a large number of packages have been added. Hashes + are now checked for both target and host packages. + + The system menu now has an option to automatically configure a + network interface through DHCP at bootup. + + The default filesystem skeleton now uses a separate tmpfs for + /run instead of a symlink to /tmp/ for security reasons / to + protect against conflicts with user generated temporary files. + + BR2_EXTERNAL is now exported to post-build and post-image + scripts. + + New packages: bdwgc, benejson, blktrace, bootstrap, cgic, + ding-libs, dvdauthor, ejabberd, erlang-goldrush, erlang-lager, + erlang-p1-cache-tab, erlang-p1-iconv, erlang-p1-sip, + erlang-p1-stringprep, erlang-p1-stun, erlang-p1-tls, + erlang-p1-utils, erlang-p1-xml, erlang-p1-yaml, + erlang-p1-zlib, exiv2, freeradius-client, gengetopt, glmark2, + gpu-amd-bin-mx51, guile, host-qemu, ifupdown, iperf3, + janus-gateway, kodi, kodi-audioencoder-flac, + kodi-audioencoder-lame, kodi-audioencoder-vorbis, + kodi-audioencoder-wav, libcli, libiio, liblinear, libnice, + libselinux, libsemanage, libserialport, libsigro, + libsigrokdecode, libsrtp, liburiparser, libvips, libwebsock, + libz160, libzip, lightning, mcelog, memtest86, mjpegtools, + mjpg-streamer, mke2img, mpd-mpc, netsurf-buildsystem, odhcp6c, + openldap, python-alsaaudio, python-certifi, python-cheetah, + python-coherence, python-django, python-docopt, python-enum, + python-enum34, python-flask, python-gobject, python-httplib2, + python-ipaddr, python-itsdangerous, python-jinja, + python-markdown, python-markupsafe, python-networkmanager, + python-pam, python-psutil, python-pyftpdlib, python-pyinotify, + python-pysendfile, python-pyxb, python-requests, python-six, + python-twisted, python-webpy, python-werkzeug, + python-zope-interface, qt5cinex, sigrok-cli, sofia-sip, + start-stop-daemon, szip, triggerhappy, ustr, vnstat, xorriso, + xtables-addons + + Removed packages (target): bison, distcc, gob2, m4 + + Issues resolved (http://bugs.uclibc.org): + + #7556: make interactive CLI optional for nftables + #7730: Error while connecting Qt Cretaor to device + #7766: logrotate default gzip path is usually wrong + #7790: Invalid ext4 image generated by Buildroot + +2014.11, Released December 1st, 2014 + + Minor fixes. + + Infrastructure: LD_LIBRARY_PATH handling tweak to ensure + current working directory isn't searched. + + Updated/fixed packages: gd, gdb, libwebsockets, luajit, mono, + parted, shairport-sync, util-linux, xapp_bdftopcf, + xserver_xorg-server + +2014.11-rc3, Released November 28th, 2014 + + Fixes all over the tree. + + System: File permissions of /etc/random-seed made more + restrictive. + + Toolchain: Various fixes related to locale handling, a fix for + building the toolchain wrapper on MIPS. + + Updated/fixed packages: bind, binutils. botan, btrfsprogs, + clamav, czmq, dhcp, dillo, dovecot, erlang, flac, gd, glibc, + gptfdisk, gst1-validate, heirloom-mailx, lame, libksba, + libllcp, libnspr, libpng, libshairplay, libtirpc, linux, + linux-headers, mpdecimal, mpg123, network-manager, nfstables, + nfs-utils, openssl, pcituils, qt, radvd, rtai, sqlcipher, + sstrip, tcpdump, uclibc, uemacs, ushare, wayland, weston, + xl2tp, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #7670: Fails to build mpc-1.0.2 on latest Cygwin + +2014.11-rc2, Released November 21st, 2014 + + Fixes all over the tree. + + Inittab tweaks for shutdown handling (busybox and sysvinit). + + Updated/fixed packages: aircrack-ng, botan, canfestival, + clamav, coreutils, czmq, dbus, dovecot, duma, e2fsprogs, + erlang, gcc, iputils, libcap, libgcrypt, libmemcached, + libssh2, libunwind, libv4l, linux-headers, mesa3d-demos, mutt, + mysql, ndisc6, nodejs, omniorb, perl-cross, php, + python-tornado, python3, qemu, qt5base, qt5webkit, rpm, + rt-tests, ruby, schifra, sdl_sound, shairport-sync, sysvinit, + tstools, tzdata, wireshark, x264 + + Issues resolved (http://bugs.uclibc.org): + + #7646: strftime on datetime not works on python3 + +2014.11-rc1, Released November 12th, 2014 + + Fixes all over the tree and new features. + + Toolchains: Use -mcpu / -march instead of -mtune. Support + additional ARC and sparc variants. Updated Code sourcery + and Linaro external toolchains. + + Defconfigs: Freescale iMX6DL SabreSD, Minnowboard MAX, QEMU + powerpc64 pseries added and a number of updates to the + existing configurations. + + Infrastructure: Buildroot is now less noisy when built with + the silent option (make -s). + A number of package infrastructure variables have been renamed + from *_OPT to *_OPTS for constency. Buildroot will complain if + the old names are used to assist in updating out of tree + packages. + Fixes for host systems where bash isn't located in /bin, and + older systems not supporting mktemp --tmpdir. + Various cleanups of users/groups in the default skeleton. + There is now an option to choose what shell /bin/sh points to. + + Documentation: Various updates to the user manual. The + asciidoc documentation handling has now been extended so it + can be used by (BR2_EXTERNAL) packages. + + Updated/fixed packages: acl, acpid, agentpp, aircrack-ng, + alsa-lib, alsamixergui, alsa-utils, apitrace, apr, apr-util, + argus, arptables, at, atftp, atk, attr, audiofile, aumix, + automake, autossh, avahi, avrdude, axel, bandwidthd, bash, + bcusdk, beecrypt, bind, binutils, blackbox, bluez5_utils, + bluez_utils, bmon, boost, bootutils, bridge-utils, + btrfs-progs, busybox, bwm-ng, bzip2, ca-certificates, cairo, + ccache, ccid, ccrypt, cdrkit, cegui06, celt051, chrony, + cifs-utils, civetweb, cjson, clapack, classpath, cloog, cmake, + collectd, connman, copas, coreutils, coxpcall, cppcms, cppdb, + cppzmq, cramfs, crda, cryptsetup, ctorrent, cups, cvs, cwiid, + czmq, dash, dbus, dbus-cpp, dbus-glib, dbus-python, dejavu, + dhcp, dhcpcd, dhcpdump, dialog, dillo, directfb, distcc, + dmalloc, dmidecode, dmraid, dnsmasq, doc-asciidoc.mk, + dosfstools, dropbear, dropwatch, dstat, dtach, dtc, dvbsnoop, + e2fsprogs, ecryptfs-utils, ed, efl, eigen, elf2flt, elfutils, + enlightenment, enscript, erlang, espeak, ethtool, eudev, + evemu, evtest, exfat, exfat-utils, exim, expat, expect, + explorercanvas, faifa, fakeroot, fan-ctrl, fbdump, + fb-test-app, fetchmail, ffmpeg, file, filemq, findutils, flac, + flann, flickcurl, flite, fltk, fluxbox, fmc, fmlib, + fontconfig, foomatic-filters, freerdp, freescale-imx, + freetype, ftop, fxload, gamin, gcc, gd, gdb, gdk-pixbuf, + genimage, genpart, genromfs, geoip, gettext, giblib, git, + glibc, glib-networking, gmp, gmpc, gnu-efi, gnupg, gnupg2, + gnuplot, gnutls, google-breakpad, gpm, gpsd, gptfdisk, + gpu-viv-bin-mx6q, grantlee, grep, gsl, gst1-libav, + gst1-plugins-{bad,base,good,ugly}, gst-ffmpeg, + gst-fsl-plugins, gst-omx, gst-plugins-{bad,base,good,ugly}, + gst-plugin-x170, gstreamer, gstreamer1, gtest, gtk2-engines, + gutenprint, gvfs, harfbuzz, haserl, haveged, hdparm, heimdal, + heirloom-mailx, hiawatha, hostapd, hplip, htop, httping, + hwdata, i2c-tools, icu, ifplugd, igh-ethercat, imagemagick, + imlib2, imx-lib, imx-vpu, inadyn, inotify-tools, input-tools, + intltool, iperf, iproute2, iprutils, ipsec-tools, ipset, + iptables, iputils, iw, jamvm, jansson, jasper, jimtcl, joe, + jpeg-turbo, jq, jquery-keyboard, jquery-mobile, jquery-ui, + jquery-ui-themes, jquery-validation, jsmin, json-c, + json-javascript, kbd, kexec, kexec-lite, keyutils, kismet, + kmod, knock, ktap, lame, lbase64, lbreakout2, lcdproc, lcms2, + lesstif, lftp, libaio, libao, libarchive, libargtable2, + libass, libassuan, libatasmart, libbluray, libbsd, libcap, + libcap-ng, libcdio, libcec, libcgicc, libcgroup, libcofi, + libconfig, libconfuse, libcurl, libdaemon, libdnet, libdrm, + libdvdnav, libecore, libedbus, libedit, libedje, libeet, + libelementary, libelf, libenca, libethumb, libevas, + libevas-generic-loaders, libevent, libexif, libeXosip2, + libffi, libftdi, libfuse, libgail, libgcrypt, libgeotiff, + libglade, libglib2, libgpgme, libgtk2, libhid, libidn, + libinput, libiscsi, libjson, libksba, liblockfile, + liblog4c-localtime, liblogging, libmad, libmatroska, libmbim, + libmemcached, libmicrohttpd, libmpdclient, libmpeg2, libndp, + libnfc, libnfs, libnftnl, libnl, libnspr, libnss, liboauth, + libogg, liboping, libosip2, libpcap, libpciaccess, libpfm4, + libplayer, libplist, libpng, libpthsem, libqmi, libqrencode, + libraw, libreplaygain, libroxml, librsvg, librtlsdr, + libsamplerate, libseccomp, libsecret, libshairplay, libsoc, + libsoup, libsoxr, libssh2, libstrophe, libsvg, libsvg-cairo, + libtasn1, libtheora, libtirpc, libtorrent, libubox, libuci, + libungif, liburcu, libusb, libuv, libv4l, libva, + libva-intel-driver, libvncserver, libvorbis, libvpx, + libwebsockets, libxcb, libxml2, libxml-parser-perl, libxmlrpc, + libxslt, lighttpd, linenoise, linknx, links, linphone, + linux-firmware, linux-fusion, linux-headers, linux-pam, + linux-zigbee, lite, live555, ljlinenoise, lmbench, lm-sensors, + localedef, lockdev, lockfile-progs, log4cxx, lpty, lrandom, + lrzsz, lshw, lsof, lsqlite3, ltp-testsuite, ltrace, ltris, + lttng-babeltrace, lttng-libust, lttng-modules, lttng-tools, + lua, luabitop, lua-coat, lua-coatpersistent, lua-csnappy, + lua-ev, luajit, luajson, lualogging, lua-messagepack, + lua-msgpack-native, luaposix, luarocks, luasec, luasocket, + luasql-sqlite3, lua-testmore, lunit, lvm2, lxc, lz4, lzlib, + lzma, m4, madplay, make, makedevs, Makefile.in, + matchbox-common, matchbox-desktop, matchbox-fakekey, + matchbox-keyboard, matchbox-lib, matchbox-panel, + matchbox-startup-monitor, matchbox-wm, mcrypt, mdadm, + media-ctl, mediastreamer, memcached, memstat, memtester, + mesa3d, metacity, midori, mii-diag, minidlna, mmc-utils, + modem-manager, mongoose, mongrel2, monit, mpc, mpd, mpdecimal, + mpfr, mpg123, mplayer, mrouted, msmtp, mtd, mtools, mtr, + musepack, musl, mutt, mxml, mysql, nano, nanocom, nbd, ncftp, + ncurses, ndisc6, ne10, neard, neon, netatalk, netperf, + netsnmp, nettle, net-tools, network-manager, newt, nfs-utils, + ngrep, nmap, nodejs, nss-mdns, ntfs-3g, ntp, numactl, nut, + nuttcp, ofono, ola, omap-u-boot-utils, omniorb, + on2-8170-modules, opencore-amr, opencv, openntpd, openobex, + openocd, openpowerlink, openssh, openssl, openswan, + opentyrian, opentyrian-data, openvpn, opkg, oprofile, opus, + opus-tools, orbit, orc, ortp, p11-kit, pango, parted, + pciutils, pcmanfm, pcre, pcsc-lite, perf, perl, perl-gd, + perl-gdgraph, perl-io-socket-ssl, perl-json-tiny, + perl-module-build, perl-mojolicious, perl-net-ssleay, + perl-path-tiny, perl-xml-libxml, perl-xml-parser, php, + php-geoip, php-gnupg, php-imagick, php-memcached, php-ssh2, + php-yaml, php-zmq, picocom, pifmrds, pinentry, pixman, + pkg-autotools.mk, pkg-cmake.mk, pkg-download.mk, + pkg-generic.mk, pkg-kconfig.mk, pkg-luarocks.mk, pkg-perl.mk, + pkg-python.mk, pkg-utils.mk, poco, polarssl, polkit, poppler, + popt, portaudio, portmap, postgresql, powerpc-utils, pppd, + pptp-linux, prboom, procps-ng, proftpd, protobuf, protobuf-c, + psmisc, ptpd2, pulseaudio, pv, pwgen, python, python3, + python-dialog, python-ipy, python-keyring, python-mad, + python-netifaces, python-numpy, python-protobuf, python-pyasn, + python-pyparsing, python-pyro, python-pyusb, python-serial, + python-setuptools, qdecoder, qemu, qextserialport, qjson, qt, + qt5, qt5base, qt5connectivity, qt5declarative, qt5enginio, + qt5graphicaleffects, qt5imageformats, qt5multimedia, + qt5quick1, qt5quickcontrols, qt5script, qt5sensors, + qt5serialport, qt5svg, qt5webkit, qt5webkit-examples, + qt5websockets, qt5x11extras, qt5xmlpatterns, qtuio, quagga, + quota, qwt, radvd, rapidjson, rdesktop, redis, rings, rpcbind, + rpi-firmware, rpi-userland, rpm, rp-pppoe, rrdtool, + rsh-redone, rsync, rsyslog, rtai, rtmpdump, rt-tests, rubix, + ruby, samba, sam-ba, samba4, sane-backends, schifra, + sconeserver, scons, screen, sdl, sdl_gfx, sdl_image, + sdl_mixer, sdl_net, sdl_sound, sdl_ttf, sed, ser2net, + setserial, sg3_utils, shared-mime-info, simicsfs, sispmctl, + slang, slirp, smcroute, smstools3, snmppp, + snowball-hdmiservice, socat, socketcand, sox, spawn-fcgi, + speex, spice, spice-protocol, sqlcipher, sqlite, squashfs, + squid, sredird, startup-notification, strace, stress, + strongswan, stunnel, subversion, sudo, sunxi-boards, + sunxi-cedarx, swig, sylpheed, synergy, sysklogd, sysstat, + systemd, sysvinit, taglib, tar, tcl, tcllib, tcpdump, + tcpreplay, texinfo, tftpd, thrift, thttpd, tiff, ti-utils, + tn5250, torsmo, trace-cmd, transmission, tslib, tstools, + tvheadend, twolame, tz, uboot-tools, uclibc, udisks, ulogd, + upmpdcli, upx, urg, usb_modeswitch, usbmount, usbredir, + usbutils, util-linux, valgrind, vde2, vim, vlc, vo-aacenc, + vorbis-tools, vpnc, vsftpd, vtun, wayland, webkit, webp, + webrtc-audio-processing, weston, wget, whois, wireless-regdb, + wireshark, wpa_supplicant, wvstreams, x11r7, x11vnc, + xapp_xcalc, xapp_xdm, xapp_xdpyinfo, xapp_xf86dga, xapp_xfs, + xapp_xinit, xapp_xkbevd, xapp_xmh, xapp_xrandr, xapp_xsm, + xbmc, xbmc-pvr-addons, xcb-proto, xcursor-transparent-theme, + xdriver_xf86-input-mouse, xdriver_xf86-video-{ast,intel}, + xdriver_xf86-video-vmware, xenomai, xerces, + xfont_font-adobe-{100,75}dpi, + xfont_font-adobe-utopia-{100dpi,75dpi,type1}, + xfont_font-alias, xfont_font-arabic-misc, + xfont_font-bh-100dpi, xfont_font-bh-75dpi, + xfont_font-bh-lucidatypewriter-100dpi, + xfont_font-bh-lucidatypewriter-75dpi, xfont_font-bh-ttf, + xfont_font-bh-type1, xfont_font-bitstream-100dpi, + xfont_font-bitstream-75dpi, xfont_font-bitstream-type1, + xfont_font-cronyx-cyrillic, xfont_font-cursor-misc, + xfont_font-daewoo-misc, xfont_font-dec-misc, + xfont_font-ibm-type1, xfont_font-isas-misc, + xfont_font-jis-misc, xfont_font-micro-misc, + xfont_font-misc-cyrillic, xfont_font-misc-ethiopic, + xfont_font-misc-meltho, xfont_font-misc-misc, + xfont_font-mutt-misc, xfont_font-schumacher-misc, + xfont_font-screen-cyrillic, xfont_font-sony-misc, + xfont_font-sun-misc, xfont_font-winitzki-cyrillic, + xfont_font-xfree86-type1, xfsprogs, xinetd, xkeyboard-config, + xlib_libdmx, xlib_libFS, xlib_libpciaccess, xlib_libSM, + xlib_libX11, xlib_libXaw, xlib_libXext, xlib_libXfont, + xlib_libXi, xlib_libXinerama, xlib_libXrandr, xlib_libXrender, + xlib_libXres, xlib_libXScrnSaver, xlib_libXt, xlib_libXv, + xlib_libXvMC, xlib_libXxf86dga, xlib_libXxf86vm, xmlstarlet, + xproto_xcmiscproto, xproto_xextproto, xscreensaver, + xserver_xorg-server, xterm, xz, zeromq, zlib, zlog, zmqpp, + znc, zsh, zxing + + New packages: adwaita-icon-theme, am335x-pru-package, + bcache-tools, biosdevname, botan, canfestival, clamav, + cppunit, dos2unix, dovecot, dovecot-pigeonhole, getent, glm, + gst1-validate, hicolor-icon-theme, ipmitool, leafnode2, + libdvbcsa, libgtk3, libphidget, libshout, libunistring, + libupnpp, mesa3d-demos, modplugtools, mono, monolite, mp4v2, + netcat-openbsd, nginx, odhcploc, openvmtools, + phidgetwebservice, pps-tools, pure-ftpd, + python-configshell-fb, python-rtslib-fb, python-urwid, qlibc, + qt5location, shairport-sync, spidev_test, targetcli-fb, + tinyalsa, trinity, x264, yaml-cpp, ympd + + Removed packages: libelf + + Issues resolved (http://bugs.uclibc.org): + + #261: New package: wxWidgets + #325: New package: ratpoison + #405: New package: OpenVZ tools + #1309: New package: rdiff-backup + #3427: New package: nginx + #3655: New package: libav + #3991: New Package: open-vm-tools (Vmware Tools) + #6878: dmraid: disabled on ARC + #6950: Full unicode support in ncurses + #7010: jamvm builds and runs fine under mips (be) + #7088: elfutils on Blackfin doesn't build + #7142: ecryptfs needs getent to run + #7280: CMake toolchain file uses the FORCE attribute on CMAKE_CXX_FLAGS + #7346: [2014.08rc3] vim-8ae50e3ef8bf.tar.gz can not be downloaded, ... + #7352: [2014.08-rc3] diffutils-3.3 failed on building + #7358: rpi-userland: linking with bcm_host doesn't give vc_dispmanx_* + #7364: monit builds a static application, even though BR2_PREFER_... + #7370: ngrep - requires --with-pcap-includes fully defined to find... + #7442: rootfs remount does not work as expected with sysvinit + #7448: Having export MACHINE="something" breaks glibc build on IMX6... + #7568: musl buildroot-toolchain does not put libgcc_s.so.1 into place + #7574: quota-4.01 fails to build statically + +2014.08, Released September 1st, 2014 + + Minor manual fixes/additions. + + Updated/fixed packages: btrfs-progs, cmake, cppcms, exim, + lftp, libdaemon, libev, libgpgme, libiqrf, libnl, libplist, + libroxml, libwebsockets, mesa3d, mpd, mtdev2tuio, musepack, + perl-gd, php-geoip, php-gnupg, php-imagick, php-memcached, + php-ssh2, php-yaml, php-zmq, polarssl, ruby, systemd, taglib, + uboot-tools, upmpdcli, webkit, xapp_xfs, xapp_luit, + xscreensaver, yajl + + Issues resolved (http://bugs.uclibc.org): + + #7346: vim-8ae50e3ef8bf.tar.gz can not be downloaded, 404 not found + +2014.08-rc3, Released August 26th, 2014 + + Minor fixes. + + User manual update / restructuring. + + Updated/fixed packages: cairo, ecryptfs-utils, gettext, + gstreamer, gstreamer1, gutenprint, icu, imagemagick, jack2, + lbreakout2, libevas-generic-loaders, libftdi, libinput, + libtorrent, ltris, msgpack, ntp, php, procps-ng, pulseaudio, + thrift, tvheadend, usb_modeswitch, xmlstarlet, + + Issues resolved (http://bugs.uclibc.org): + + #7136: ecryptfs-utils needs gettext to run when glibc/eglibc... + #7322: libgomp dependency issue with imagemagick + #7328: Git dl of versions in x/y broken + +2014.08-rc2, Released August 18th, 2014 + + Fixes all over the tree. + + User manual restructured / reworked. + + Toolchain: Fix for C++ exceptions / pthread_exit() on + uClibc/glibc, C++-11 features with uClibc. + + Updated/fixed packages: bandwidthd, bluez5_utils, empty, + espeak, fbv, ffmpeg, gd, gnupg2, gst1-plugin-good, iftop, + infozip, libcuefile, libeml, libnftl, localedef, ltrace, + matchbox, mpd, network-manager, nftables, ngrep, nut, openssl, + oprofile, perl, perl-net-ssleay, postgresql, pppd, procps-ng, + qt, subversion, synergy, systemd, tar, tftpd, webkit, + xapp_rstart, xbmc, xbmc-pvr-addons + + Issues resolved (http://bugs.uclibc.org): + + #7124: Use BR toolchain externally results a non-bootable... + #7208: Glibc C++ aplications crash if they use exceptions + #7250: Cannot build with -std=c++11 + #7262: Generating locale en_US.UTF-8 fails on 64bit fedora.. + #7286: systemd 215 doesn't build + +2014.08-rc1, Released August 8th, 2014 + + Fixes all over the tree and new features. + + Architecture: Powerpc64 BE/LE added, AVR32 deprecated. + Improved altivec / SPE /atomic instructions + handling. Additional PowerPC CPU variants added. + + Defconfigs: Atmel SAMA5D3, Congatec QMX6, Lego ev3, TS-5x00, + qemu-system-xtensa, qemu-aarch64-virt added. A number of + tweaks to existing ones. lpc32xx defconfigs removed. + + Toolchain: Microblaze support for internal musl toolchain. + Default to GCC 4.8 for internal toolchain, remove deprecated + 4.3 and 4.6 versions. + External CodeSourcery / Linaro toolchain updates, option to + copy gconv libraries for external toolchains. + + Infrastructure: graph-depends: misc fixes, transitive + dependencies are not drawn by default. Download handling is + now done using helper scripts. Integrity of downloads can now + be verified using sha* hashes. Subversion download now uses + peg revisions for robustness. + Legal-info: License info of local or overridden packages are + saved as well. Toolchain packages are also taken into account. + autotools: Static linking with libtool / v1.5 improvements. + Gettextize support, similar to autoreconf. + kconfig package infrastructure added. + + Misc: Version selection for busybox dropped. + + Updated/fixed packages: aespipe, aiccu, alsa-lib, alsa-utils, + alsamixergui, argus, armadillo, at, atftp, atk, avahi, + avrdude, axel, b43-firmware, b43-fwcutter, bandwidthd, bc, + bcusdk, beecrypt, bind, binutils, blackbox, bluez5_utils, + bmon, boa, bonnie, bootutils, bsdiff, btrfs-progs, bustle, + busybox, bwm-ng, bzip2, ca-certificates, cairo, can-utils, + ccache, ccrypt, chrony, cifs-utils, classpath, cloog, cmake, + collectd, connman, coreutils, cosmo, cppcms, cramfs, crda, + cryptodev-linux, cryptodev, ctorrent, cvs, dbus-cpp, + dbus-glib, dbus-python, dbus, dcron, dejavu, devmem2, + dfu-util, dhcp, dhcpcd, dhcpdump, dhrystone, dialog, dillo, + distcc, dmidecode, dmraid, dnsmasq, doom-wad, dropbear, + dropwatch, dsp-tools, dtv-scan-tables, dvb-apps, e2fsprogs, + e2tools, eeprog, eigen, elf2flt, elftosb, enlightenment, + enscript, espeak, ethtool, eudev, evemu, exim, expedite, + explorercanvas, ezxml, faifa, fan-ctrl, fconfig, feh, + fetchmail, ffmpeg, fftw, file, fio, fis, flann, flashrom, + flex, flot, fltk, fontconfig, freerdp, freescale-imx, + freetype, ftop, gcc, gd, gdb, genimage, genromfs, gettext, + giblib, glib-networking, glibc, gmp, gnupg, gnutls, gpm, gpsd, + gptfdisk, gpu-viv-bin-imx6q, gqview, grantlee, gst-ffmpeg, + gst-fsl-plugins, gst1-libav, gst1-plugins-bad, + gst1-plugins-ugly, gtk2-engines, gtk2-theme-hicolor, gtkperf, + gvfs, haserl, hdparm, hostapd, httping, i2c-tools, icu, + imagemagick, imx-lib, inadyn, inotify-tools, input-tools, + ipkg, iproute2, iputils, irda-utils, iw, jack2, jpeg, jquery, + jquery-keyboard, jquery-mobile, jquery-validation, jsmin, kbd, + kexec, kmod, knock, latencytop, lcdapi, leafpad, lesstif, + lftp, libaio, libarchive, libargtable2, libart, libatasmart, + libatomic_ops, libbsd, libcap-ng, libcec, libcgicc, libcgroup, + libconfuse, libcurl, libdrm, libdvdnav, libdvdread, + libeXosip2, libedit, liberation, libesmtp, libev, libevas, + libevdev, libevent, libfcgi, libffi, libfreefare, libfslcodec, + libfslparser, libfslvpuwrap, libgail, libgcrypt, libglade, + libglib2, libgpgme, libgtk2, libhid, libical, libiconv, + libiqrf, libjpeg, liblog4c-localtime, libmbus, libmicrohttpd, + libmms, libndp, libnftnl, libnl, libnspr, libnss, liboauth, + libpcap, libpng, libpthsem, libqmi, libraw, libraw1394, + librsvg, libsoc, libsoup, libsvgtiny, libsysfs, libtasn1, + libtirpc, libtorrent, libusb, libv4l, libwebsockets, libxcb, + libxml2, libyaml, links, linux-firmware, linux-fusion, + linux-headers, linux-pam, lite, live555, lm-sensors, + lockfile-progs, lpc3250loader, lshw, lsof, lsuio, ltrace, + ltris, lua-messagepack, luainterpreter, luajit, luaposix, + luarocks, lvm2, lxc, lz4, lzo, make, makedevs, mdadm, + mediastreamer, mesa3d, metacity, minidlna, mkpasswd, + modem-manager, mongoose, mpd, mpg123, msgpack, mtd, mtools, + mtr, musepack, musl, mysql, nano, nasm, nbd, ncurses, ndisc6, + netatalk, netplug, network-manager, nftables, ngircd, nodejs, + nss-mdns, ntp, nut, olsr, open2300, opencv, openntpd, openocd, + openpgm, openpowerlink, openssh, openssl, openswan, openvpn, + opkg, oprofile, opus-tools, orc, p910nd, pango, parted, + pax-utils, pcmanfm, perf, perl, perl-module-build, php, + pixman, pkgconf, poco, polarssl, popt, portmap, postgresql, + prboom, protobuf-c, proxychains-ng, psmisc, psplash, ptpd2, + python, + python-{bottle,dpkt,id3,mad,msgpack,nfc,pygame,pyzmq,simplejson}, + python3, qhull, qt, qt5base, qt5connectivity, qt5declarative, + qt5graphicaleffects, qt5multimedia, qt5quickcontrols, + qt5sensors, qt5svg, qt5webkit, quagga, quota, radvd, rdesktop, + read-edid, rpcbind, rpi-firmware, rpi-userland, rpm, + rsh-redone, rsync, rt-tests, rtmpdump, rtorrent, rubix, ruby, + samba, samba4, sane-backends, sawman, sconeserver, setserial, + sg3_utils, shared-mime-info, smartmontools, smcroute, snappy, + socketcand, spawn-fcgi, sqlite, squashfs, squid, sredird, + startup-notification, statserial, strongswan, stunnel, + sunxi-mali, supervisor, synergy, sysklogd, sysprof, sysstat, + systemd, tcpdump, tcpreplay, texinfo, thrift, thttpd, ti-gfx, + ti-utils, tinyhttpd, torsmo, trace-cmd, transmission, tslib, + tstools, tvheadend, tzdata, uboot-tools, uclibc, udev, + udpcast, usb_modeswitch, usbmount, util-linux, valgrind, vim, + vlc, w_scan, wayland, webrtc-audio-processing, weston, wget, + wireless-regdb, wireless_tools, wireshark, wpa_supplicant, + xapp_{twm,xconsole,xcursorgen,xedit,xfs,xinit,xrandr}, + xdriver_xf86-video-intel, xlib_lib{FS,ICE,Xext,Xfont,Xft,Xi}, + xproto_fontsproto, xproto_inputproto, xserver_xorg-server, + x11vnc, xbmc, xbmc-addon-xvdr, xbmc-pvr-addons, xterm, xvkbd, + xz + + New packages: flickcurl, fmc, fmlib, geoip, gnupg2, + google-breakpad, imx-vpu, isl, kexec-lite, libglew, libglu, + libinput, libksba, libmemcached, libmpdclient, librtlsdr, + libuv, libva, libva-intel-driver, linux-zigbee, memcached, + mpdecimal, ncmpc, opencore-amr, patchelf, perl-datetime-tiny, + perl-gd, perl-gdgraph, perl-gdtextutil, perl-io-socket-ssl, + perl-json-tiny, perl-mojolicious, perl-net-ssleay, + perl-path-tiny, perl-try-tiny, perl-xml-libxml, + perl-xml-namespacesupport, perl-xml-sax, perl-xml-sax-base, + php-geoip, php-memcached, pifmrds, pinentry, powerpc-utils, + procps-ng, pwgen, python-cffi, python-daemon, python-flup, + python-ipython, python-numpy, qt5enginio, qt5webkit-examples, + qt5websockets, simicsfs, sispmctl, sox, sshpass, tclap, + twolame, upmpdcli, whois, xlib_libxshmfence, xproto_dri3proto + + Removed packages: procps + + Issues resolved (http://bugs.uclibc.org): + + #5750: Doing a Buildroot build from /usr doesn't work + #5900: config flags to the Xenomai build system + #6230: Cannot compile gcc without threads (uClibc-based) + #6626: procps Unknown HZ value! (XX) Assume 100 + #7118: Package "thrift" requires atomic operations + #7154: Local uClibc config file gets overwritten using ... + #7160: host-xz not built + #7166: hostapd: segfault when using RT5370 + #7172: Name collision of rpath token expansion and internal.. + #7178: NTPd package cannot sync time without a proper ntp.conf + #7184: supervisord depends on libxml2 implicitly + #7196: Unable to build on UBUNTU13.10 + #7268: python 2.7 compilation issue on a Debian/Ubuntu ... + +2014.05, Released May 31st, 2014 + + Minor fixes. + + Minor manual fixes. U-Boot now defaults to spl/u-boot-spl.bin + for the spl file. + + Updated/fixed packages: exim, glibc, gnutls, libfribidi, + qt5base, qt5webkit, sysklogd, thrift, u-boot + +2014.05-rc3, Released May 28th, 2014 + + Minor fixes. + + Updated/fixed packages: acl, attr, connman, dosfstools, + dropbear, dvb-apps, exim, flite, gdb, httping, hwdata, + lesstif, libnss, libv4l, lttng-babeltrace, midori, monit, + mplayer, php, python2, rdesktop, rpi-userland, ruby, samba, + samba4, slang, xbmc + + Issues resolved (http://bugs.uclibc.org): + + #7100: license info for package 'acl' missing + #7106: license info for package 'attr' missing + #7112: license info for package 'hwdata' + +2014.05-rc2, Released May 21st, 2014 + + Fixes all over the tree. + + Stripping using sstrip has been deprecated. + + BR2_EXTERNAL can now also be used to implement custom + filesystem types. + + The newly added BR2_GRAPH_DEPTH variable to limit the depth of + the generated dependency graph has been renamed to + BR2_GRAPH_DEPS_OPTS, so additional options can be supported in + the future. + + The virtual package infrastructure will now error out early + if multiple packages providing the same virtual package has + been enabled (E.G. opengl). This change requires that the + packages explicitly declare what virtual package(s) they + provide. + + Updated/fixed packages: acpid, armadillo, avahi, bellagio, + btrfs-progs, cairo, clapack, directfb, duma, ecryptfs-utils, + elfutils, eudev, fbgrab, fio, flann, fluxbox, gdb, gpm, + gpu-viv-bin-mx6q, gst1-plugins-good, gst-plugins-good, + imagemagick, iprutils, ipsec-tools, jack2, libdvdnav, + libdvdread, libnss, libunwind, linux-headers, lsof, lua, + luajit, matchbox-keyboard, mesa3d, mpd, mplayer, mtr, mysql, + netsnmp, nodejs, openpowerlink, openvpn, pciutils, + php-imagick, postgresql, pulseaudio, qt5quick1, rpi-userland, + rsyslog, samba, samba4, sane-backends, sunxi-mali, systemd, + ti-gfx, tstools, udev, webkit, wpa_supplicant, xbmc, + xlib_libXpm, xserver_xorg-server, zyre + + Issues resolved (http://bugs.uclibc.org): + + #5396: Boot hangs when starting samba if BR2_ENABLE_LOCALE... + #7016: Git issues in resulting buildroot tar + #7094: pciutils doesn't build on Blackfin + +2014.05-rc1, Released May 13th, 2014 + + Fixes all over the tree and new features. + + Architectures: Support for MIPS o32 ABI on MIPS-64 targets has + been removed. Building o32 ELF files for MIPS64 is an exotic + configuration that nobody should be using. If o32 is required, + then is better if it's built for MIPS 32-bit cores so only + 32-bit instructions will be used leading to a more efficient + o32 usage. + Support for the ARM A12 variant and Intel corei7. + + Configs: Minnowboard and Altera SoCkit added, QEMU updates. + + Bootloaders: Grub2 and gummiboot support, syslinux support + extended. + + Toolchains: GCC 4.9. Glibc 2.19. Support for the musl C + library for internal and external toolchains. 4.8-R3 support + for ARC, Internal toolchain support for Aarch64 and + Microblaze. Environment variable to control debug output of + toolchain wrapper renamed to BR2_DEBUG_WRAPPER to match the + other variables. Toolchain tuple vendor name can now be + customized. Updated external Linaro ARM/Aarch64 + toolchains. Added external Linaro ARMEB toolchain. + A GDB gdbinit file is now generated for external toolchains to + automatically set the correct sysroot. + + Kconfig handling for minimum kernel headers version required + for packages. Now packages needing specific kernel header + features can specify these requirements in Kconfig. + + Infrastructure: Support for (but disabled as it leads to + unreproducible builds) toplevel parallel builds. See the + comment at the top of Makefile for details about how to enable + it and what the problems are if you want to test it. + Python package infrastructure extended to support Python 3.x + Perl and virtual package infrastructure support added. + PRE_*_HOOKS support for all build steps. + + Updated/fixed packages: acpid, agentpp, aiccu, apr, avahi, + barebox, bash, beecrypt, bellagio, binutils, boost, + boot-wrapper-aarch64, bustle, busybox, ca-certificates, cairo, + ccache, ccid, cgilua, chrony, cifs-utils, civetweb, cmake, + collectd, connman, coreutils, coxpcall, cppcms, cppzmq, crda, + cryptodev, cryptsetup, cups, czmq, dbus, dhcpdump, directfb, + dmalloc, dmraid, dnsmasq, dosfstools, dsp-tools, dtc, + dvb-apps, ebtables, ecryptfs-utils, eigen, erlang, ethtool, + evemu, evtest, f2fs-tools, fdk-aac, feh, ffmpeg, file, filemq, + flac, flot, fmtools, fping, freetype, fswebcam, gcc, gd, gdb, + gettext, giblib, git, glibc, glibmm, glib-networking, gmp, + gnutls, gpm, gpsd, gpu-viv-bin-mx6q, grep, gst1-libav, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gst-ffmpeg, gst-fsl-plugins, gst-omx, + gst-plugins-good, gstreamer1, gvfs, harfbuzz, haveged, + hostapd, htop, httping, ifplugd, iftop, igmpproxy, + imagemagick, imlib2, imx-lib, infozip, intltool, iproute2, + ipsec-tools, ipset, jansson, jpeg, jpeg-turbo, jquery, + jquery-keyboard, jquery-ui, jquery-ui-themes, json-glib, + json-javascript, kexec, kmod, lame, lbase64, lbreakout2, + lcdproc, lftp, libao, libatasmart, libatomic_ops, libcap, + libcdio, libcec, libcgicc, libcgroup, libcurl, libdrm, + libdvdnav, libdvdread, libegl, libeio, libenca, libesmtp, + libevas, libevdev, libfribidi, libfslcodec, libfslparser, + libfslvpuwrap, libgail, libgles, libglib2, libgtk2, libhid, + libjpeg, libmbim, libmicrohttpd, libmodplug, libnftnl, + libnspr, libogg, libopenmax, libopenvg, libpcap, libplayer, + libpng, libpthread-stubs, librsvg, libsigsegv, libsocketcan, + libsoup, libtasn1, libtool, libtpl, libunwind, liburcu, + libusb, libwebsockets, libxcb, libxml2, libxmlpp, libyaml, + lighttpd, linphone, linux-firmware, linux-headers, ljsyscall, + lmbench, lsof, ltp-testsuite, ltris, lttng-babeltrace, + lttng-libust, lttng-modules, lttng-tools, lua, lua-cjson, + luacrypto, lua-ev, luaexpat, luaexpatutils, luafilesystem, + luainterpreter, luajit, lua-msgpack-native, luaposix, + luarocks, luasec, luasocket, luasql-sqlite3, lvm2, macchanger, + memstat, mesa3d, metacity, minidlna, mmc-utils, + mobile-broadband-provider-info, modem-manager, mongrel2, + monit, mpd, mplayer, msmtp, mtd, mtools, mutt, mysql, nasm, + ncurses, ne10, netatalk, netsnmp, nettle, network-manager, + newt, nfs-utils, nmap, nodejs, ntfs-3g, ntp, nut, ofono, ola, + olsr, omniorb, opencv, opengl, openpgm, openssh, openssl, + openswan, openvpn, orbit, orc, p11-kit, pango, parted, + pciutils, pcre, pcsc-lite, perf, perl, perl-xml-parser, php, + picocom, pixman, pkgconf, poppler, popt, portmap, powervr, + pppd, pptp-linux, proftpd, protobuf, protobuf-c, ptpd2, + pulseaudio, python, python3, python-bottle, python-m2crypto, + python-netifaces, python-pyasn, python-pycrypto, + python-pygame, python-pysnmp, python-pysnmp-apps, + python-pysnmp-mibs, python-serial, python-setuptools, + qextserialport, qt, qt5, qt5base, qt5connectivity, + qt5declarative, qt5graphicaleffects, qt5imageformats, + qt5multimedia, qt5quick1, qt5quickcontrols, qt5script, + qt5sensors, qt5serialport, qt5svg, qt5webkit, qt5x11extras, + qt5xmlpatterns, qtuio, qwt, radvd, readline, rings, + rpi-firmware, rpi-userland, rsh-redone, rsync, rsyslog, rtai, + rtmpdump, rt-tests, ruby, samba, sconeserver, scons, sdl, + sdl_image, sdl_mixer, sg3_utils, slang, smstools3, snmppp, + socat, speex, sqlcipher, sqlite, squashfs, squid, strongswan, + stunnel, sunxi-boards, sunxi-mali, sunxi-tools, sylpheed, + syslinux, sysstat, systemd, taglib, tcl, tcllib, tcpreplay, + tidsp-binaries, ti-gfx, tmux, tvheadend, tzdata, uboot, + uboot-tools, uclibc, udev, udisks, ulogd, usb_modeswitch, + usb_modeswitch_data, usbmount, util-linux, valgrind, vlc, + webkit, weston, wget, wireshark, wpa_supplicant, wsapi, + w_scan, xapp_appres, xapp_bdftopcf, xapp_beforelight, + xapp_bitmap, xapp_editres, xapp_fslsfonts, xapp_fstobdf, + xapp_iceauth, xapp_ico, xapp_mkfontscale, xapp_rgb, + xapp_rstart, xapp_sessreg, xapp_showfont, xapp_twm, + xapp_viewres, xapp_xauth, xapp_xbacklight, xapp_xcalc, + xapp_xclock, xapp_xditview, xapp_xdpyinfo, xapp_xdriinfo, + xapp_xev, xapp_xfd, xapp_xfontsel, xapp_xfs, xapp_xfsinfo, + xapp_xgc, xapp_xhost, xapp_xinit, xapp_xkbutils, xapp_xkill, + xapp_xload, xapp_xlsclients, xapp_xlsfonts, xapp_xmag, + xapp_xman, xapp_xmessage, xapp_xmodmap, xapp_xprop, + xapp_xrandr, xapp_xrdb, xapp_xrefresh, xapp_xset, + xapp_xsetroot, xapp_xsm, xapp_xstdcmap, xapp_xvidtune, + xapp_xvinfo, xapp_xwd, xapp_xwininfo, xcb-util-wm, + xdriver_xf86-input-evdev, xdriver_xf86-input-joystick, + xdriver_xf86-input-keyboard, xdriver_xf86-input-mouse, + xdriver_xf86-input-synaptics, xdriver_xf86-input-vmmouse, + xdriver_xf86-video-ark, xdriver_xf86-video-ast, + xdriver_xf86-video-ati, xdriver_xf86-video-cirrus, + xdriver_xf86-video-dummy, xdriver_xf86-video-fbdev, + xdriver_xf86-video-geode, xdriver_xf86-video-glide, + xdriver_xf86-video-glint, xdriver_xf86-video-i128, + xdriver_xf86-video-intel, xdriver_xf86-video-mach64, + xdriver_xf86-video-mga, xdriver_xf86-video-neomagic, + xdriver_xf86-video-newport, xdriver_xf86-video-nv, + xdriver_xf86-video-openchrome, xdriver_xf86-video-r128, + xdriver_xf86-video-savage, xdriver_xf86-video-siliconmotion, + xdriver_xf86-video-sis, xdriver_xf86-video-tdfx, + xdriver_xf86-video-tga, xdriver_xf86-video-trident, + xdriver_xf86-video-vesa, xdriver_xf86-video-vmware, + xdriver_xf86-video-voodoo, xenomai, xerces, xl2tp, xlib_libFS, + xlib_xtrans, xproto_xproto, xserver_xorg-server, + xutil_util-macros, zeromq, zic, zmqpp, zyre + + New packages: armadillo, btrfs-progs, clapack, cosmo, dado, + dbus-triggerd, dtv-scan-tables, e2tools, eudev, exim, expect, + fetchmail, flann, flite, gnu-efi, grub2, gummiboot, heimdal, + iprutils, iptraf-ng, jack2, jquery-mobile, libee, libestr, + libgc, libgl, liblogging, libndp, libsoxr, libstrophe, + libubox, libuci, libxmlrpc, ljlinenoise, lpeg, lpty, lrandom, + lsqlite3, lua-coat, lua-coatpersistent, lua-csnappy, luajson, + lualogging, lua-messagepack, lua-testmore, lunit, lzip, lzlib, + musl, nftables, opentyrian, opentyrian-data, + perl-module-build, php-gnupg, php-imagick, php-ssh2, php-yaml, + php-zmq, postgresql, python-libconfig, python-pypcap, + python-pyrex, qdecoder, qhull, samba4, smack, tz, tzdump, ucl, + upx, vo-aacenc, xbmc, xbmc-addon-xvdr, xbmc-pvr-addons, + yaffs2utils, zlog, znc + + Removed packages: crosstool-ng, python-distutilscross, vala + + Issues resolved (http://bugs.uclibc.org): + + #6842: Checking external toolchain for eabihf + #6956: Packaging libsoxr + #6986: Make legal-info fails on uboot versions before 2014.01 + #6992: Incorrect installation rights on external kernel module.. + +2014.02, Released February 27th, 2014 + + Minor fixes. + + Updated/fixed packages: cegui06, cppdb, e2fsprogs, gcc, gdb, + gst1-plugins-bad, gstreamer, gstreamer1, haserl, imagemagick, + libpng, libxml2, lua, luajit, luarock, ncftp, openswan, + pcsc-lite, qt5connectivity, ramsmp, strongswan, vlc + + Issues resolved (http://bugs.uclibc.org): + + #6938: mkuser script generates wrong password for new user in.. + +2014.02-rc3, Released February 25th, 2014 + + Minor fixes. + + Updated/fixed packages: aiccu, ala-lib, alsa-utils, binutils, + cairo, coreutils, dhcpcd, distcc, efl, evas, iputils, gdb, + gpsd, gst-fsl-plugins, icu, libcec, libcgi, libplayer, + libsecret, libsepol, libsigsegv, libtool, libv4l, + linux-headers, matchbox-lib, mpg123, ncftp, opencv, pcmanfm, + pixman, pv, qt, rt-tests, sawman, sconeserver, sdl, thrift, + tvheadend, util-linux, webkit, xscreensaver + + Issues resolved (http://bugs.uclibc.org): + + #4706: Removing .stamp_target_installed does not trigger... + #5030: busybox built fails if we use an override src dir... + #5420: Dbus and /var/run management + #5768: Not able to build ALSA-Lib for static build + #5774: Not able to build ALSA-Utils for static build + #6542: external python modules fail to compile to pyc if... + #6764: Support for kernel signed modules + #6794: Busybox compiled from buildroot hangs on pass from... + +2014.02-rc2, Released February 20th, 2014 + + Fixes all over the tree. Static linking / nommu fixes and + annotations for several packages. + + Updated/fixed packages: boost, busybox, collectd, coreutils, + dropbear, elfutils, feh, gcc, gst1-libav, imagemagick, iozone, + jimtcl, kexec, libvncserver, lvm2, lxc, mplayer, netsnmp, nut, + opencv, python, python3, qtuio, systemd, thrift, transmission, + uclibc, vlc, webkit + + Issues resolved (http://bugs.uclibc.org): + + #5450: AT91SAM9260 Bootstrap compilation problem + #5582: libiconv 1.14 failed to build + #5624: When building directfb, BR2_TARGET_LDFLAGS not used by.. + #5852: [2012.11] usb_modeswitch should depends of "BR2_PACK.. + #6218: binutils-2.23.2/gas fails with undefined reference to.. + #6236: binutils-2.23.2/bfd fails with undefined reference to.. + #6470: If the build directory is a child of /usr, the build.. + #6776: systemd error: static declaration of 'execvpe' follows.. + #6818: toolchainfile.cmake has absolut path references + +2014.02-rc1, Released February 11th, 2014 + + Fixes all over the tree and new features. + + Support for external packages/defconfigs (BR2_EXTERNAL). See + user manual for details. + + Cleanup of environment variable names for consistency. The + download directory location override (BUILDROOT_DL_DIR) is now + called BR2_DL_DIR. Likewise the name of the current .config is + renamed from BUILDROOT_CONFIG to BR2_CONFIG. Please update + your post build scripts if you use this! BUILD_DIR is now also + exported to the post build/image scripts. + + Toolchain: GCC 4.8 fix for ARM stack corruption, reverted + uClibc pread/pwrite backport as they cause issues on certain + architectures, new Linaro and Sourcery Codebench toolchains. + x86: Support for AMD Jaguar cores, SSE4.x, SH: SH2/SH3/SH3EB + variants removed, Microblaze: Internal toolchain support + + Legal infrastructure: Info is now split between host and + target packages, large number of license annotations. + + Lua: selection between lua 5.1 / 5.2, luarocks support + + Python: package infrastructure, many new packages. + + Defconfigs: Armadeus APF51 + Zedboard added, apf27, apf28, + beaglebone, microblaze, pandaboard, qemu, raspberry pi + updated. + + Updated/fixed packages: aiccu, alsa-lib, alsa-utils, + am33x-cm3, aumix, autoconf, automake, barebox, bellagio, + berkeleydb, binutils, bison, blackbox, bluez_utils, boost, + bustle, busybox, cairo, can-utils, ccache, ccid, cgilua, + cifs-utils, civetweb, cmake, collectd, connman, copas, + coreutils, coxpcall, cppzmq, cramfs, crda, cryptodev-linux, + cryptsetup, cups, czmq, dhcpcd, dhcpdump, dhrystone, dialog, + dmraid, dnsmasq, dosfstools, dropbear, dropwatch, dtc, duma, + dvb-apps, e2fsprogs, eglibc, eigen, elf2flt, erlang, ethtool, + f2fs-tools, ffmpeg, file, filemq, fio, flashrom, flex, + fluxbox, fontconfig freerdp, freetype, gadgetfs-test, gawk, + gcc, gdb, gdbm, gettext, git, glibc, gnupg, gnutls, gob2, + gpsd, grep, grub, gst-ffmpeg, gst-plugins-good, + gst1-plugins-bad, gst1-plugins-base, gst1-plugins-good, + gst1-plugins-ugly, gstreamer, gstreamer1, gtest, icu, iftop, + imagemagick, inadyn, infozip, iozone, iproute2, iptables, iw, + jpeg, jpeg-turbo, jq, kexec, kmod, knock, lbase64, lcdapi, + lftp, libcdaudio, libcgi, libcgicc, libcuefile, libcurl, + libdmtx, libdrm, libdvdnav, libdvdread, libegl, libevent, + libexif, libfcgi, libfreefare, libgles, libglib2, libllcp, + libmicrohttpd, libmpd, libnfc, libnl, libnss, libopenmax, + libopenvg, libpcap, libpfm4, libplayer, libpng, libqmi, + libreplaygain, libroxml, libsamplerate, libsexy, libsigsegv, + libsndfile, libsoc, libtasn1, libtorrent, libtpl, libupnp, + libusb, libusb-compat, libvorbis, libxcb, libxml2, libxmlpp, + libyaml, lighttpd, linknx, linux-firmware, linux-pam, live555, + lm_sensors, lmbench, lockdev, logrotate, lrzsz, ltrace, lua, + lua-ev, lua-msgpack-native, luabitop, luaexpat, luaexpatutils, + luafilesystem, luajit, luaposix, luasec, luasocket, + luasql-sqlite3, m4, matchbox, mdadm, minicom, mongrel2, mpc, + mpd, mpg123, mplayer, mtd, mysql, lvm2, mxml, ncurses, ne10, + neard, neardal, netsnmp, netstat-nat, network-manager, nodejs, + numactl, ofone, ola, olsr, omniorb, open2300, opencv, + openpowerlink, openssh, openssl, openvpn, oprofile, opus, + opus-tools, orbit, p11-kit, parted, pcre, pcsc-lite, perl, + php, poco, poppler, powervr, protobuf-c, psplash, python, + python-bottle, + python-{crc16,distutilscross,dpkt,id3,ipy,m2crypto,mad,meld}, + python-{netifaces,nfc,protobuf,pygame,pyparsing,pyro,pyzmq}, + python-{serial,setuptools}, qt, qt5base, qt5connectivity, + qt5declarative, qt5graphicaleffects, qt5jsbackend, + qt5multimedia, qt5quick1, qt5quickcontrols, qt5script, + qt5webkit, radvd, redis, rings, rng-tools, rpcbind, + rpi-firmware, rpi-userland, rt-tests, sam-ba, samba, sawman, + sconeserver, scons, sdl, sg3_utils, snappy, snmppp, + socketcand, spice, spice-protocol, sqlcipher, sqlite, squid, + sshfs, strace, subversion, sunxi-mali, supervisor, sysklogd, + sysprof, sysstat, systemd, sysvinit, taglib, tar, tcpdump, + ti-gfx, ti-utils, tinymembench, tn5250, trace-cmd, + transmission, tvheadend, tzdata, zxing, uboot, uboot-tools, + uclibc, udev, udpcast, ulogd, urg, usb_modeswitch_data, + util-linux, vala, valgrind, vorbis-tools, wavpack, wayland, + weston, wget, wireless-regdb, wireshark, wpa_supplicant, + wsapi, xavante, xapp_xdpyinfo, xapp_xrandr, xcb-proto, + xdriver_xf86-video-intel, xenomai, xkeyboard-config, xl2tp, + xlib_lib{FS,SM,X11}, + xlib_libX{au,aw,composite,cursor,damage,ext,fixes,font,i}, + xlib_libX{inerama,mu,pm,randr,render,res,t,tst,v,xf86dga}, + xlib_libXxf86vm, xlib_libdmx, xlib_libfontenc, + xlib_libpciaccess, xlib_xtrans, xproto_dri2proto, + xproto_{glproto,inputproto,presentproto,randrproto,videoproto}, + xproto_xextproto, xproto_xproto, xutil_util-macros, + xutil_makedepend, zic, zmqpp, zxing, zsh, zyre + + New packages: apitrace, avrdude, c-ares, ca-certificates, + cwiid, dbus-cpp, evemu, fping, fswebcam, gpm, gst1-libav, + haveged, intel-microcode, iucode-tools, jasper, joe, ktap, + lbreakout2, libass, libbluray, libcdio, libenca, libevdev, + libmbim, libmodplug, libnfs, libnftnl, libplist, libshairplay, + libsocketcan, ljsyscall, log4cplus, ltris, luainterpreter, + luarocks, minidlna, mmc-utils, modemmanager, mtr, net-tools, + python-configobj, python-dialog, python-json-schema-validator, + python-keyring, python-msgpack, python-posix-ipc, + python-pyasn, python-pycrypto, python-pysnmp, + python-pysnmp-apps, python-pysnmp-mibs, python-pyusb, + python-simplejson, python-tornado, python-versiontools, + rtmpdump, rtptools, smcroute, smstools3, tcpreplay, thrift, + ti-uim, tinyxml, tmux, vlc, wmctrl, xconsole + + Removed packages: autoconf, automake, ccache, cpanminus, lzma, + netkitbase, netkittelnet, pkg-config, squashfs3, ttcp, xstroke + + Issues resolved (http://bugs.uclibc.org): + + #65: new package: dbus c++ language bindings + #769: Update configuration menu for MIPS target + #2419: Add a bundle of Lua modules + #2629: Segmentation faults and division by zero in Grub on ext2 + #3811: Added auto-mount for USB and SD Card (mdev) (for 2011.05) + #4339: Allow override of DL_DIR in extract step + #4363: Make sure that copied linux and busybox defconfig are... + #4454: There should be simple way to update image, when chang... + #5024: grub fails to build for x86_64 target architecture + #5066: New-Package: net-tools + #5072: ncurses: add ncurses-progs to target + #5294: uclibc build ignores target CFLAGS and LDFLAGS + #5366: Login doesn't work with util-linux versions of login/agetty + #5378: dropbear Makefile broken + #5390: System banner - change to empty doesn't remove /etc/issue + #5780: spurious build failure because it cannot remove ubinize.cfg + #5798: ncurses-5.9 fails to compile statically + #5810: Buildroot 2012.11: Additional GCC option "-msoft-float" ... + #6080: Git fetch caching + #6092: Bootable ISO image creation seems to have stopped working.. + #6272: coreutils build fails + #6434: apply-patches.sh does not work recursively + #6446: eglibc doesn't install ldconfig to target + #6484: Add c-ares + #6596: Slow bootup if mdev is chosen + #6656: Build Qt5 with ccache + #6662: internal compiler error: Segmentation fault during making.. + #6722: Usage of $($(PKG)_DIR_PREFIX) is an issue with linux package + #6752: genext2fs: e2fsck must run before tunefs -U random + #6770: openssl 1.0.1f fails with ccache + #6830: Qt5: no fonts are installed + #6848: Qt5: no text shown in simple QWidget / frame-buffer setup + #6854: Update to Qt 5.2.1 + +2013.11, Released November 30th, 2013: + + Minor fixes. + + Updated/fixed packages: apr, binutils, dbus-python, dropwatch, + ecryptfs-utils, eglibc, gdb, gpsd, grantlee, hostapd, + iptables, qlibiscsi, libnspr, libnss, libpfm4, libtool, + lua-ev, lvm2, mplayer, qt, qt5, quagga, ruby, tinymembench, + tvheadend, util-linux, wpa_supplicant + + Issues resolved (http://bugs.uclibc.org): + + #1279: Buildroot compiled Busybox and Coreutils LFS issues + #2995: -fstack-protector-all causes ssh to SIGSEGV + #5570: Cannot compile software on the target machine + #6428: util-linux libmount segfaults with patch from buildroot + #6500: php fails to build for armel + #6554: gdb needs to dependents on host texinfo + #6692: GNU nano fails to compile for x86_64 + #6704: wpa_supplicant: fix wrong path to executable file in D-Bus + +2013.11-rc3, Released November 26th, 2013 + + Fixes all over the tree. + + Architecture: Mark MIPS I, II, III and IV as deprecated. + + Updated/fixed packages: beecrypt, dbus, e2fsprogs, libcap-ng, + libglib2, libroxml, libsigsegv, libvncserver, lxc, mdadm, + mongoose, nut, ola, omniorb, openssl, pcre, php, poco, + protobuf-c, pv, qt5base, ruby, schifra, squid, sunxi-mail, + swig, ti-gfx, tinymembench, uclibc, udisks, vim + +2013.11-rc2, Released November 18th, 2013 + + Fixes all over the tree. + + Defconfigs: qemu_arm_versatile, qemu_arm_nuri, sheevaplug: + Adjust kernel versions. + + Toolchain: avr32: fix for modern kernel headers + + Bootloader: Barebox updated to 2013.10.1 + + Updated/fixed packages: dhcp, e2fsprogs, gst1-plugins-bad, + libcurl, libvncserver, nano, pc, qt5base, squashfs, ttcp, + wayland, wvstreams + + Issues resolved (http://bugs.uclibc.org): + + #3601: DHCPD S80dhcp-server startup script issues + #6320: Fix kernel compile issue if BR2_LINUX_KERNEL_CUSTOM_GIT_VERS.. + #6416: Xenomai package, patch alternative + #6590: directfb-examples build failed whit linaro toolchain + +2013.11-rc1, Released November 12th, 2013 + + Architectures: Nios-II support, MIPS arch handling fixes + + Defconfigs: cubieboard2, freescale i.MX 6sololite evk, + sabre-sd, wandboard added, rpi renamed to raspberrypi_defconfig + + Toolchain: glibc support, upstream uClibc fixes, uClibc 0.9.31 + for avr32, crosstool-ng backend removed, external musl + toolchain support, gcc 4.8.2, updated Linaro external + toolchains. Fortran and objective-C support deprecated, + mudflap support + + Bootloaders: U-Boot: u-boot.imx support, version bumps + + Linux: use kmod instead of module-init-tools + + System: default to devtmpfs for /dev + + Infrastructure: Make 3.82 fixes, locales generation fixes, CVS + download support, post-rsync hooks + + Fs: u-boot image support for cpio + + Updated/fixed packages: aircrack-ng, alsamixergui, apr, + apr-util, atk, automake, bellagio, berkeleydb, bind, binutils, + bison, boost, busybox, can-utils, ccache, ccid, cgilua, + chrony, cifs-utils, cjson, collectd, connman, conntrack-tools, + copas, cppcms, cppzmq, czmq, dash, dbus, dhcpcd, diffutils, + directfb, dmidecode, dnsmaqs, docker, dosfstools, dropbear, + dropwatch, ebtables, eglibc, elf2flt, empty, enchant, erlang, + ethtool, fbgrab, fbv, fdk-aac, feh, ffmpeg, file, findutils, + fltk, fmtools, freetype, gdk-pixbuf, gettext, git, + glib-networking, gmp, gnupg, gnutls, gpu-viv-bin-mx6q, gsl, + gstreamer, gstreamer1, gst1-plugins-{bad,base,good,ugly}, + gtest, gutenprint, hplip, i2c-tools, icu, ifplugd, + imagemagick, iozone, iproute2, ipset, iptables, iw, jamvm, + jansson, jpeg-turbo, kismet, kmod, lcms2, libassuan, libcap, + libcap-ng, libcdaudio, libcec, libcue, libcurl, libdrm, + libedit, libevas, libevent, libfreefare, libfuse, + libgpg-error, libiconv, liblog4c-localtime, libmicrohttpd, + libmnl, libmodbus, + libnetfilter_{acct,conntrack,cthelper,cttimeout,log,queue}, + libnfnetlink, libnl, libpng, libqmi, libqrencode, libroxml, + libsecret, libsigsegv, libsoup, libtirpc, libunwind, libusb, + libvpx, lighttpd, linphone, linux-pam, lmbench, + lockfile-progs, log4cxx, logrotate, logsurfer, ltp-testsuite, + ltrace, luacrypto, luaposix, lvm2, m4, matchbox-lib, + media-ctl, mediastreamer, minicom, minidlna, mongoose, monit, + mpc, mpd, mpg123, mplayer, mrouted, mtdev, mutt, mysql_client, + nano, ncftp, ndisc6, neard, neardal, neon, net-snmp, netatalk, + netcat, netkitbase, netperf, netplug, nettle, nfacct, + nfs-utils, ngircd, ngrep, noip, nuttcp, olsr, openssh, opkg, + oprofile, opus-tools, orc, ortp, pciutils, pcre, pcsc-lite, + perf, perl, perl-cross, php, picocom, pkgconf, polarssl, + poppler, pppd, proftpd, protobuf, proxychains-ng, pulseaudio, + pv, qemu, qt, qt5base, qt5webkit, quagga, radvd, redis, + rpi-{firmware,userland}, rrdtool, rsync, rtorrent, ruby, + samba, scons, screen, sdl_sound, ser2net, setserial, + smartmontools, socat, socketcand, sqlcipher, sqlite, squid, + stress, strongswan, stunnel, sudo, syslinux, systemd, + sysvinit, tcl, ti-gfx, time, transmission, tremor, tslib, + tstools, tvheadend, tzdata, uboot-tools, uclibc, udpcast, + uemacs, ulogd, usb_modeswitch{,_data}, util-linux, vala, + valgrind, vde2, vorbus-tools, vpnc, vsftpd, vtun, wayland, + webkit, webp, webrtc-audio-processing, weston, wget, + wireshark, wsapi, xavante, xdriver_xf86-video-geode, xenomai, + xinetd, xlib_libpthread-stubs, xl2tp, xmlstarlet, + xserver_xorg-server, xz, zeromq, zic, zmqpp + + New packages: aiccu, autossh, bc, civetweb, cppdb, cryptsetup, + duma, eigen, harfbuzz, igmpproxy, iputils, jq, knock, kobs-ng, + lesstif, libcgroup, libsepol, libsoc, libssh2, luasec, luasql, + lxc, nut, ola, omniorb, openpowerlink, orbit, p910nd, psplash, + python-crc16, python-ipy, python-pyzmq, qt5sensors, + qt5serialport, qt5x11extras, snmppp, subversion, tcping, + trace-cmd, xscreensaver, zsh + + Removed packages: module-init-tools + + Issues resolved (http://bugs.uclibc.org): + + #1138: Buildroot fails to build packages if BR2_GCC_SHARED_LIBGCC=y + #5408: qt build failure with Sourcery CodeBench ARM 2010.09 + #5630: makefile error with toolchain helpers.mk + #5672: htop: remove X11 stuff + #5678: linux.mk: linux-menuconfig fails + #5696: python3 installation is too large, patches from python2 needed + #5978: Erlang does not build for arm in 2013.02-rc3 + #6392: Extended ARM uImage kernel options + #6404: Buildroot's coreutils 'uname -p' reports 'Unknown' on recent.. + #6428: util-linux libmount segfaults with patch from buildroot + #6452: eglibc from Linaro 2013.07 not copied to target correctly + #6566: PHP segfault when crosscompiled to mips64 - patch included + #6572: [PowerPC] Buildroot uses wrong external toolchain libraries.. + #6578: udisks package broken + #6602: ebtables 64 bit kernel + 32 bit userland alignment error.. + #6608: ebtables missing ethertypes - fix included + #6620: Sysvinit package missing killall5 and symlinks - patch included + #6632: CMake use host pkg-config + #6638: pkgconf doesn't download + #6644: "all" target doesn't work in out-of-tree builds + #6650: Segmentation fault when trying to build latest buildroot + #6668: iptables limit module alignment problem on mips64 + +2013.08, Released August 31th, 2013: + + Minor fixes. + + Documentation build fixed. + + Updated/fixed packages: ltrace, strongswan + +2013.08-rc3, Released August 29th, 2013: + + Fixes all over the tree. + + External toolchain lib32/lib64 handling, ABI name for EABIhf, + misc fixes for generatelocales, apply-patches and module + stripping. + + Top level menu names reordered and renamed for clarity. + + Updated/fixed packages: acl, attr, bash, dbus, directfb, + dvb-apps, kexec, kmod, libbsd, linux-fusion, mesa3d, minidlna, + openssh, openssl, pulseaudio, python-setuptools, qt5, + qt5webkit, redis, strongswan, sunxi-mali + + Issues resolved (http://bugs.uclibc.org): + + #6464: dbus-daemon-launch-helper needs setuid + +2013.08-rc2, Released August 16th 2013: + + Documentation improvements. + + External toolchains fixes. + + Updated/fixed packages: aircrack-ng, bash, boost, cairo, + cppcms, eglibc, ffmpeg, gcc, git, gnupg, imagemagick, libcec, + libffi, libgcrypt, linux, linux-headers, ltrace, netatalk, + opencv, opengl, readline, samba, strongswan, sunxi-cedarx, + uclibc, udev, wayland, webkit, zeromq. + + Issues resolved (http://bugs.uclibc.org): + + #6440: typo in ffmpeg makefile + +2013.08-rc1, Released August 5th, 2013: + + Architectures: + - improved support for floating point on ARM and Thumb/Thumb2 + - support for ARM OABI removed + + Toolchains: + - support added for Sourcery CodeBench ARM and MIPS 2013.05 + - Linaro ARM and Aarch64 toolchains updated + - support added for the Arago ARMv5 and ARMv7 toolchains + - gcc 4.8.x version bumped + - support for installing both FDPIC and FLAT libraries on + Blackfin + - support for uClibc 0.9.31 removed, + - convert the internal toolchain backend to use the package + infrastructure + - support added for eglibc in the internal toolchain backend + - toolchain components for the ARC architecture updated and + gdb for ARC added. + - support for Blackfin in the internal toolchain fixed + + Defconfigs: beaglebone_defconfig updated, new defconfig for + CubieBoard, for Olimex mx233 Olinuxino, for Calao Systems + TNY-A9G20-LPW. + + A number of packages have been fixed to use the + _CONFIG_SCRIPTS mechanism to get their -config shell + script installed and modified properly. Licensing informations + has been added to a number of packages. + + Use XZ tarballs for a number of packages. + + Noticeable package changes/additions: + - The glib2/libgtk2/webkit stack has been updated to recent + versions. + - Support for Gstreamer 1.x has been added. + - OpenGL support for TI OMAP platforms has been added. + - OpenGL support for Allwinner platforms has been added. + - OpenMAX support for RasberryPi has been added. + + Updated/fixed packages: acl, attr, autoconf, avahi, barebox, + bind, binutils, busybox, bwm-ng, bzip2, cifs-utils, colletctd, + cpanminus, cups, curl, dash, dbus, dhcp, directfb, + directfb-examples, dnsmasq, dosfstools, dropbear, dtc, + e2fsprogs, ed, efl, enlightenment, erlang, ethtool, fbgrab, + fftw, firmware-imx, flot, fltk, freetype, gawk, gdk-pixbuf, + gettext, gmp, gnutls, gsl, gutenprint, gvfs, gzip, haserl, + hiawatha, httping, icu, imagemagick, imlib2, imx-lib, + intltool, iozone, ipset, iptables, jquery, jquery-keyboard, + jquery-sparkline, kmod, less, libart, libcdaudio, libcgicc, + libesmtp, libftdi, libfuse, libglib2, libgtk, libgtk2, libidn, + libiqrf, liblog4c-localtime, libnspr, libnss, libpcap, + libroxml, libserial, libsigsev, libsoup, libtool, libtpl, + libvncserver, libxml2, linphone, lm_sensors, logrotate, + ltrace, lttng, luafilesystem, luajit, minicom, monit, mpg123, + mtd, mutt, mxml, neard, netatask, netsnmp, nettle, + network-manager, nodejs, nss-mdns, openssh, openswan, openvpn, + opkg, opus, pcre, perl-cross, php, pixman, poco, polarssl, + pulseaudio, pv, python, python3, qt, qt5, qt5declarative, + qt5jsbackend, qt5quick1, readline, rpi-firmware, ruby, samba, + sane-backends, sconeserver, sdl_image, sdparm, ser2net, + socketcand, sqlite, squid, strace, tcl, tcpdump, tinyhttpd, + tvheadend, tzdata, uboot, udpcast, usb_modeswitch, + usb_modeswitch_data, usbutils, webkit, wireshark, wvstreams, + xapp_luit, xapp_xmodmap, xenomai, xfsprogs, xlib_libX11, zic, + zlib. + + New packages: a10disp, aespipe, am33x-cm3, cppcms, dhcpcd, + dropwatch, dtc, ecryptfs-utils, eglibc, elf2flt, fdk-aac, + gcc-final, gcc-initial, gcc-intermediate, git, + gpu-viv-bin-mx6q, gst1-plugins-bad, gst1-plugins-base, + gst1-plugins-good, gst1-plugins-ugly, gst-omx, + gst-plugin-x170, gstreamer1, jimtcl, lbase64, libassuan, + libbsd, libcec, libdvbsi, libedit, libgpgme, libqmi, + libqrencode, libsvg, libsvg-cairo, libunwind, libvpx, + linux-headers, lockdev, luabitop, luacrypto, lua-ev, + luaexpatutils, msgpack, ocrad, on2-8170-libs, + on2-8170-modules, p11-kit, pax-utils, ptpd, ptpd2, + python-pyro, ramspeed/smp, snappy, strongswan, sunxi-boards, + sunxi-cedarx, sunxi-mali, sunxi-tools, ti-gfx, tinymembench, + tree, tstools, uclibc, w_scan. + + Issues resolved (http://bugs.uclibc.org): + + #4718: python (built for powerpc) distutils has paths to host + compiler toolchain + #5516: appended device tree blobs on uImage fails + #6302: Versions of packages retrieved from github.com are wrong + #6308: dosfstools download link is wrong + #6326: Dropbear: Add options to allow better config for + different target devices (e.g. routers) + #6338: Wrong download link for minicom package + #6344: Wrong handling of license text files with same name and + different directory + #6374: gnutls package broken if linux cryptodev module + selected + #6410: omap3_beagle has uimage error load address error + +2013.05, Released May 31th, 2013: + + Minor fixes. + + External toolchain wrapper fix for if host/usr/bin is placed + in the patch. + + Updated/fixed packages: acpid, at91bootstrap, czmq, elf2flt, + flex, jamvm, kmod, libplayer, libtirpc, libv4, + lttng-babeltrace, opengl, qt5jsbackend, udpcast, wvstreams + + Issues resolved (http://bugs.uclibc.org): + + #4868: Buildroot compile failure for toolchain/gdb-7.4/intl/reloc... + #4988: flex and m4 problems + #5912: obsolete CVS files + +2013.05-rc3, Released May 25th, 2013: + + Minor fixes. + + Updated/fixed packages: aircrack-ng, bellagio, boost, crda, + dvb-apps, flot, libatomic_ops, libeXosip2, libosip2, libxml2, + mongrel2, poco, portaudio, pptp-linux, tvheadend, urg, weston, + wireshark + +2013.05-rc2, Released May 15th, 2013: + + Fixes all over the tree. + + Default number of parallel jobs is now number of CPUs + 1. + + Defconfigs: Add Telit EVK-PRO3, AT91SAM9260-EK Nand flash. + + Updated/fixed packages: aircrack-ng, busybox, cairo, + classpath, curlftpfs, czmq, dbus, f2fs-tools, fan-ctrl, + filemq, gst-plugin-bad, gutenprint, hplip, json-c, + libatomic_ops, libcurl, libdrm, libglib2, libnspr, libnss, + libsha1, libsigsegv, libxcb, linknx, linux-pam, lttng-modules, + lttng-tools, matchbox-lib, mcookie, mesa3d, neon, pixman, + pulseaudio, python-nfc, qt5imageformats, quota, openssl, + sconeserver, strace, sylpheed, wvstreams, + xapp_{appres,bdftopcf,beforelight,bitmap,edires,fonttosfnt}, + xapp_{fslsfonts,fstobdf,iceauth,ico,listres,luit,mkfontdir}, + xapp_{mkfontscale,oclock,rgb,rstart,scripts,sessreg,setxkbmap}, + xapp_{showfont,smproxy,twm,viewres,x11perf,xauth,xbacklight}, + xapp_x{biff,calc,clipboard,clock,cmsdb,cursorgen,dbedizzy,ditview}, + xapp_x{dm,dpyinfo,driinfo,edit,ev,eyes,f86dga,fd,fontsel,fs,fsinfo}, + xapp_x{gamma,gc,host,input-calibrator,input,kbcomp,kbevd,kbprint}, + xapp_x{kbutils,kill,load,logo,lsatoms,lsclients,lsfonts,mag,man}, + xapp_x{message,mh,modmap,more,pr,prop,randr,rdb,refresh,set,setmode}, + xapp_x{setpointer,setroot,sm,stdcmap,vidtune,vinfo,wd,wininfo,wud}, + xcb-util, xcursor-transparent-theme, xdata_xbitmaps, + xdata_xcursor-themes, + xdriver_xf86-input-{evdev,joystick,keyboard,mouse,synaptics}, + xdriver_xf86-input-{tslib,vmmouse,void}, + xdriver_xf86-video-{ark,ast,ati,cirrus,dummy,fbdev,geode,glide}, + xdriver_xf86-video-{glint,i128,intel,mach64,mga,neomagic,newport}, + xdriver_xf86-video-{nv,openchrome,r128,savage,siliconmotion,sis}, + xdriver_xf86-video-{tdfx,tga,trident,v4l,vesa,vmware,voodoo,wsfb}, + xfont_encodings, xfont_font-adobe-{100,75}dpi, + xfont_font-utopia-{100dpi,75dpi,type1}, + xfont_font-{alias,arabic-misc,bh-100dpi,bh-75dpi}, + xfont_font-bh-lucidatypewriter-{100,75}dpi, xfont_font-bh-{ttf,type1}, + xfont_font-bitstream-{100dpi,75dpi,type1}, xfont_font-cronyx-cyrillic, + xfont_font-{cursor,daewoo,dec,isas,jis,micro}-misc, + xfont_font-ibm-type1, xfont_font-misc-{cyrillic,ethiopic,meltho,misc}, + xfont_font-{mutt,schumacher}-misc, + xfont_font-{screen-cyrillic,sony-misc,sun-misc,util}, + xfont_font-winitzki-cyrillic, xfont_font-xfree86-type1, + xlib_lib{FS,ICE,SM,X11,XScrnSaver,Xau,Xaw,Xcomposite,Xcursor}, + xlib_libX{damage,dmcp,ext,fixes,font,ft,i,inerama,mu,pm,randr}, + xlib_libX{render,res,t,tst,v,vMC,xf86dga,xf86vm}, + xlib_lib{dmx,fontenc,pciaccess,pthread-stubs,xkbfile}, xlib_xtrans, + xproto_{applewm,bigreqs,composite,damage,dmx,dri2,fixes}proto, + xproto_{fontcache,font,gl,input,kb,randr,record,render}proto, + xproto_{resource,scrnsaver,video,windowswm,xcmisc,xext}proto, + xproto_{xf86bigfont,xf86dga,xf86dri,xf86vidmode,xinerama,x}proto, + xserver_xorg-server, xutil_{makedepend,util-macros} + + Readded Packages: xapp_xinit + + Issues resolved (http://bugs.uclibc.org): + + #5054: amd64: cannot find init - due to missing /lib64 folder + +2013.05-rc1, Released May 8th, 2013: + + Architectures: ARC support, Blackfin support, FLAT binary + format, ARM: Drop old CPU variants, add fa526/626, Marvell PJ4 + + Toolchains: Add new Microblaze external toolchains, Linaro + ARM/Aarch64 updates, GCC 4.6.4 / 4.7.3 / 4.8.0 added to + internal toolchain, default to GCC 4.7.x. Internal + Crosstool-ng backend deprecated. + + Defconfigs: Add Atmel at91sam9g45m10ek, freescale mpc8315erdb + & p1010rdb, Armadeus apf27 / apf28, Openblocks A6, Raspberry + pi, gnublin board. + + FS: LZO and XZ compression methods, extra ubifs options, + ext2 rev 0/1 and ext3/4 support. + + Patch handling: apply-patches now has .patch.xz support, + Patch logic reworked as discussed during Febrary dev days: + http://elinux.org/Buildroot:DeveloperDaysFOSDEM2013 + + -rsync now excludes version control files. + + linux: uImage load address for ARM multiplatform kernels + + Infrastructure for multiple OpenGL / ES / EGL / OpenVG + providers, similar to how libjpeg / libjpeg-turbo is handled. + + Infrastructure for packages to add system users. + + kconfig: updated to 3.9-rc2, support make olddefconfig + + Updated/fixed packages: alsa-lib, alsa-utils, apr, apr-util, + argp-standalone, at, at91bootstrap, audiofile, aumix, avahi, + bash, blackbox, bind, binutils, bison, boost, bridge-utils, + busybox, ccache, cifs-utils, cmake, collectd, connman, + conntrack-tools, cpanminus, crosstool-ng, diffutils, directfb, + directfb-examples, divine, dmalloc, dnsmasq, dosfstools, + dropbear, e2fsprogs, ebtables, eeprog, erlang, ethtool, + fb-test-app, fbset, feh, ffmpeg, file, flex, flot, foomatic, + fxload, gd, gdb, gdisk, genimage, gettext, gmp, gnuchess, + gnutls, gob2, gperf, gpsd, gstreamer, haserl, hiawatha, htop, + httping, icu, inotify-tools, intltool, iproute2, ipset, + iptables, iw, jpeg, jquery, jquery-{sparkline,validation}, + json-c, kbd, kexec, kismet, kmod, lcdproc, libarchive, + libatasmart, libcap, libconfig, libconfuse, libcurl, libdrm, + libeet, libev, libevas, libeXosip2, libffi, libfribi, libfuse, + libgcrypt, libglib2, libgtk2, libid3tag, libmicrohttpd, + libnetfilter_acct, libnetfilter_conntrack, libnl, libpcap, + libplayer, libsigc, libv4l, libxcb, linenoise, linux-pam, + lm_sensors, ltp-testsuite, luajit, lzop, madplay, make, mdadm, + mediastreamer, memtester, mesa3d, + mobile-broadband-provider-info, monit, mpd, mpfr, mpg123, + mrouted, msmtp, nbd, ncurses, ndisc6, neard, neardal, neon, + netperf, netsnmp, nettle, nfacct, ntfs-3g, ofono, olsr, + omap-u-boot-utils, openssh, openssl, openswan, openvpn, + oprofile, orc, patch, pciutils, pcre, perl, php, poco, + polarssl, proftpd, psmisc, pulseaudio, python, + python-{bottle,netifaces,serial,setuptools}, qt, quagga, + quota, radvd, rpi-firmware, rpi-userland, rt-tests, sam-ba, + samba, sawman, sdl, ser2net, smartmontools, socat, socketcand, + speex, squid, stress, stunnel, sudo, syslinux, sysstat, + sysvinit, tcl, tcprelay, tinyhttpd, tslib, tvheadend, + uboot-tools, udev, ulogd, util-linux, vala, vtun, webkit, + xapp_{iceauth,luit,makefontscale,sessreg,setxkbmap,smproxy}, + xapp_{xauth,xcmsdb,xdpyinfo,xev,xgamma,xhost,xinput,xkbcomp}, + xapp_{xkbevd,xlsatoms,xlsclients,xmodmap,xpr,xprop,xrandr,xrdb}, + xapp_{xset,xwd,xwininfo}, xcb-{proto,util}, + xdriver_xf86-input-{evdev,joystick,keyboard,mouse,synptics}, + xdriver_xf86-input-{tslib,vmmouse,void}, + xdriver_xf86-video-{ark,ast,ati,cirrus,dummy,geode,glide,glint}, + xdriver_xf86-video-{i128,intel,mach64,mga,neomagic,newport}, + xdriver_xf86-video-{openchrome,r128,savage,siliconmotion,sis}, + xdriver_xf86-video-{tdfx,trident,vesa,vmware,wsfb}, xenomai, + xfont, xinetd, xkeyboard-config, xlib_lib{FS,ICE,SM,X11}, + xlib_libX{scrnSaver,au,aw,cursor,dmcp,ext,fixes,font,ft,i}, + xlib_libX{inerama,mu,pm,randr,res,tst,v,vMC,xf86dga,xf86vm}, + xlib_lib{dmx,fontenc,pciaccess,xkbfile}, xlib_xtrans, + xproto_{applevm,bigreqs,dri2,fonts,gl,input,kbd,record}proto, + xproto_{resource,scrnsaver,xcmisc,xext,x}proto, + xserver_xorg-server, xutil_makedepend, xz, zeromq + + New packages: aircrack-ng, bcusdk, chrony, crda, + cryptodev-linux, cppzmq, czmq, dtach, enscript, exfat, + exfat-utils, f2fs-tools, fan-ctrl, filemq, foomatic-filters, + genimage, genpart, glibmm, gnuplot, gtest, gutenprint, hplip, + iozone, jansson, jhead, jquery-keyboard, jquery-ui, + jquery-ui-themes, json-glib, json-javascript, lcms2, libpfm4, + libpthsem, libserial, libsigsegv, libtasn1, libwebsockets, + libxkbcommon, libxml++, linknx, log4cxx, mongoose, mongrel2, + mtools, ne10, nmap, nodejs, openobex, openpgm, poppler, + protobuf-c, python-m2crypto, python-thrift, qjson, qt5base, + qt5declarative, qt5graphicaleffects, qt5imageformats, + qt5jsbackend, qt5multimedia, qt5quick1, qt5script, qt5svg, + qt5webkit qt5xmlpatterns, rapidjson, redis, swig, texinfo, + tzdata, urg, ussp-push, wayland, webp, weston, wireless-regdb, + wireshark, wvdial, wvstreams, xcb-util-image, xcb-util-wm, + xcursor-transparent-theme, zic, zmqpp, zyre + + Removed packages: microperl, ocf-linux, xapp_xinit, + xapp_xplsprinters, xapp_xprehashprinterlist, + xfont_font-bitstream-speedo, + xlib_lib{Xfontcache,XprintAppUtil,XprintUtil,Xp,oldX,xkbui}, + xproto_{print,xf86rush}proto + + Deprecated packages: vala + + Issues resolved (http://bugs.uclibc.org): + + #1291: Add support for Faraday 526 arm processor (fa526) + #2683: cups does not install correctly to target + #3313: mesa3d fails to build + #5186: initramfs/cpio should support lzo compression + #5636: agetty - cannot get controlling tty error - need updated... + #5906: collectd client headers not exported + #5966: bison unnecessarily required as build dependency + #6140: --enable-fileinfo not applied for php package + #6164: openvpn usage of ip tool from Busybox + +2013.02, Released February 28th, 2013: + + Misc manual updates. + + Updated/fixed packages: busybox, collectd, flashbench, + libgtk2, libupnp, mii-diag, quota + +2013.02-rc3, Released February 26th, 2013 + + Minor fixes. + + Updated/fixed packages: conntrack-tools, dialog, + enlightenment, haserl, keyutils, libfif, libmad, + linux-firmware, linux-fusion, matchbox-desktop, matchbox-wm, + ruby, spawn-fcgi, vtun + + Issues resolved (http://bugs.uclibc.org): + + #5960: fusion.ko driver does not install to target rootfs + +2013.02-rc2, Released February 19th, 2013 + + Fixes all over the tree. + + Various manual updates and fixes. + + Updated/fixed packages: busybox, collectd, gesftpserver, + glib-networking, gnutls, inotify-tools, libcurl, libffi, + libglib2, libtorrent, libvorbis, neard, network-manager, + ntfs-3g, openssl, qt, rpi-userland, rtorrent, thttpd, vim. + + Issues resolved (http://bugs.uclibc.org): + + #5906: collectd client headers not exported + +2013.02-rc1, Released February 10th, 2013 + + Toolchain: Crosstool-ng 1.17.0, default to GCC 4.6.3, target + libraries install fixed. Add Linaro ARM + 2012.11/2012.12/2013.01, AArch64 12.11/12.12/13.01. Sourcery + CodeBench MIPS 2012.03/09. Infrastructure to warn about + missing 32bit support for binary toolchains. Toolchain wrapper + is now relocatable. Add GDB 7.5.1 / Remove 6.8 / 7.0 / + 7.1. Deprecate uClibc 0.9.31. + + Architecture: Xtensa fixes, add missing powerpc variants, arm + 1136jf-s rev1, add A5/A15, neon support toggle, OABI + deprecated. Sparc: drop old unused variants + + Bootloaders: At91bootstap: fix upstream URL, Barebox: add + 2012.12/2013.01/2013.02, remove 2012.08/09/10, lzop fixes, + environment image support, U-Boot: add 2013.01.01 + + Linux: fix appended dtb handling for v3.8+ kernels, support + multiple device trees + + Defconfigs: calao USB-A9260, snowball, QEMU PPC440 on ML507 + board, QEMU ARM Exynos4210, Kernel version in QEMU defconfigs + updated, at91rm9200df: misc fixes. Lock kernel headers to + match kernel. + + Infrastructure: Git download fixes. Toolchain make target + renamed from 'cross' to 'toolchain'. Eclipse integration + support. Option to set root password, post image scripts, + config scripts handling. + + Updated/fixed packages: alsa-lib, argp-standalone, argus, + arptables, atk, audiofile, axel, beecrypt, bind, bison, + bluez_utils, boost, cairo, can-utils, bmon, boa, busybox, + cairo, ccache, cdrkit, cifs-utils, cjson, cmake, collectd, + connman, coreutils, cpanminus, cups, dbus, dhcp, dialog, + diffutils, directfb, distcc, divine, dnsmasq, docker, + dosfstools, dstat, e2fsprogs, ebtables, ed, empty, ethtool, + expedite, fbset, fbv, ffmpeg, flex, fltk, fluxbox, freetype, + gadget-test, gawk, gdb, genext2fs, gettext, giblib, + glib-networking, gmp, gmpc, gnupg, gnutls, gpsd, + gst-plugins-{bad,base,good}, gstreamer, gzip, haserl, hdparm, + heirloom-mailx, hiawanta, hostapd, icu, imagemagick, imlib2, + inadyn, infozip, iproute2, ipset, iptables, iw, jpeg, jquery, + jquery-sparklines, jqeury-validation, kismet, kmod, lame, + libao, libcap, libcurl, libdvdnav, libdvdread, libecore, + libedbus, libedje, libeet, libefreet, libeina, libeio, + liberation, libelementary, libembryo, libethumb, libev, + libevas, libffi, libfribidi, libfuse, libgcrypt, libglib2, + libgpg-error, libgtk2, libhid, libidn, libmicrohttpd, libmpd, + libnl, libnspr, libnss, libogg, libpcap, libplayer, libpng, + libroxml, librsvg, libseccomp, libsigc, libsndfile, libungif, + libupnp, liburcu, libusb-compat, libvncserver, libvorbis, + libxml2, libxslt, lighttpd, links, linux-firmware, + linux-fusion, ltp-testsuite, ltrace, + lttng-{babel,libust,modules,tools}, lvm2, lua, luajit, lzop, + matchbox-{desktop,lib}, mdadm, metacity, midori, minicom, mpd, + mpfr, mplayer, mtd, mysql_client, ncurses, neon, netatalk, + networkmanager, nspr, ntfs-3g, nuttcp, ofone, olsr, openssl, + openvpn, opkg, oprofile, opus, opus-tools, orc, ortp, pango, + pciutils, pcmanfm, pcre, pcsc-lite, perl, php, pixman, + pkgconf, polarssl, pptp-linux, proxychains, pulseaudio, + python, python3, qemu, qextserialport, qt, quagga, radvd, + readline, rng-tools, rt-tests, rubix, ruby, sam-ba, samba, + sane-backends, sconeserver, scons, screen, sdl, sdl_gfx, + sdl_mixer, sdl_ttf, sdparm, sed, ser2net, smartmontools, + speex, sqlite, squid, sshfs, strace, sudo, sylpheed, tn5250, + taglib, tar, torsmo, transmission, tslib, uboot-tools, ulogd, + usb_modeswitch, util-linux, valgrind, vim, vsftpd, wavpack, + webkit, wipe, wireless_tools, wpa_supplicant, xapp_xinit, + xapp_xinput-calibrator, xapp_xman, xapp_xmh, xlib_libX11, + xlib_libXdmcp, xlib_libXft, xlib_libpthread-stubs, + xlib_xtrans, xproto_xcmiscproto, xproto_xextproto, + xserver_xorg-server, xstroke, xvkbd, xz + + New packages: b43-firmware, b43-fwcutter, bustle, + cache-calibrator, cegui06, celt051, classpath, curlftpfs, + dvb-apps, dvbsnoop, elfutils, enlightenment, firmware-imx, + flashbench, gd, gesftpserver, gst-fsl-plugins, httping, iftop, + imx-lib, jamvm, jpeg-turbo, keyutils, libatasmart, libcofi, + libebml, libevas-generic-loaders, libfslcodec, libfslparser, + libfslvpuwrap, libgsasl, libiscsi, libmatroska, libmcrypt, + libmhash, libqwt, libseccomp, libsha1, linenoise, mcrypt, + media-ctl, ncdu, neard, neardal, nettle, perf, polkit, + proxychains, python-bottle, python-pyparsing, rpi-firmware, + rpi-userland, sg3_utils, slirp, snowball-hdmiservice, spice, + spice-protocol, tcllib, tvheadend, udisks, usbredir + ux500-firmware, vde2, xcb-utils-keysyms, yavta, + zd1211-firmware + + Removed packages: customize, xdriver_xf86-input-{acecad,aiptek}, + xdriver_xf86-video-{apm,chips,i740,rendition,s3,s3virge,sisusb}, + xdriver_xf86-video-sun{cg14,cg3,cg6,ffb,leo,tcx}, + xdriver_xf86-video-{tsend,xgi,xgixp} + + Deprecated packages: xstroke + + Issues resolved (http://bugs.uclibc.org): + + #4237: building shared openssl w/-Os fails due to gcc bug + #5690: python3 does not obey to BR2_PACKAGE_PYTHON3_PYC_ONLY=y + #5602: python3 should install a "python" symbolic link + #5846: Extra slash added to last slash in URL + +2012.11.1, Released January 3rd, 2013: + + Toolchain: Fixed non-largefile builds on recent Ubuntu + versions. + + Arch: fix missing x86/generic handling, Build for Xtensa with + longcalls option. + + Updated/fixed packages: dosfstools, qt + +2012.11, Released December 2nd, 2012: + + Git shallow clone fix for older git version. + + Updated/fixed packages: ctuio, libtool + + Issues resolved (http://bugs.uclibc.org): + + #5726: List all the available hook points + +2012.11-rc2, Released November 30th, 2012: + + Minor fixes around the tree. + + Various manual updates and fixes. + + Add checks for legacy features. + + Updated/fixed packages: acpid, alsa-lib, arptables, binutils, + busybox, ccache, cjson, cramfs, directfb, flex, fluxbox, gdb, + hiawatha, igh-ethercat, imagemagick, imlib2, lcdproc, + libdaemon, libecore, libhid, libmad, libpcap, libsigc, libusb, + linux-fusion, matchbox, ocf-linux, owl-linux, python, rrdtool, + scons, strace, sylpheed + + Issues resolved (http://bugs.uclibc.org): + + #5732: Error : package/alsa-lib/alsa-lib.mk + +2012.11-rc1, Released November 17th, 2012 + + Fixes all over the tree and new features. + + Defconfigs: use u-boot 2012.10 on at91 and beaglebone, + sheevaplug + qemu: bump kernel version, add qemu-mips64-malta + + nitrogen6x defconfigs. + + Bootloaders: add u-boot 2012.07/10, ais target format, add + barebox 2012.08/09/10/11, linker overlap issue fix for + at91bootstrap, mxs-bootlets updated for new Barebox versions. + + Toolchains: binutils 2.23.1, gcc 4.7.2, default to gcc 4.6.x, + Codebench arm/sh/x86 2012.03/09, Linaro 2012.08/09/10. + Libtirpc support for modern glibc variants. Toolchain on + target has been deprecated. + + Initial Aarch64 support, Xtensa support re-added. + + Infrastructure: Use shallow git clone when possible, use + tarballs rather than git URLs for github. Moved to pkgconf + rather than pkg-config. System directory added, default + skeleton/device tables moved. More than 1 post-build script + can now be used. output/target now contains a + THIS_IS_NOT_YOUR_ROOT_FILESYSTEM warning, to help people + understand how to (not) use it. + + Manual has been reworked and extended. + + Legal-info: Lots of package annotations, CSV file fixes, + _LICENSE / _REDISTRIBUTE splitup, per-package hooks. + + Updated/fixed packages: acpid, alsa-lib, alsa-utils, + alsamixergui, attr, autoconf, automake, bash, bind, binutils, + bison, blackbox, bluez-utils, busybox, cairo, can-utils, + cifs-utils, cjson, cmake, collectd, connman, conntrack-tools, + coreutils, cups, cvs, dbus, dhcp, directfb, dmalloc, dnsmasq, + dropbear, e2fsprogs, ethtool, fbdump, feh, fftw, file, + flashrom, fluxbox, gdb, gdisk, gdk-pixbuf, genext2fs, gettext, + gnutls, gpsd, gqview, grep, gsl, gst-plugins-{bad,good}, + hdparm, hiawatha, hostapd, input-tools, iproute2, ipset, + iptables, iw, json-c, kexec, kmod, lcdproc, leafpad, less, + libcurl, libdrm, libdvdnav, libdvdread, libffi, libfuse, + libglib2, libhid, liblockfile, libmad, libmbus, libmnl, + libnetfilter_{acct,conntrack,cthelper,cttimeout,queue}, + libnfc, libnfc-llcp, libnfnetlink, libnl, libnspr, libnss, + libpcap, libplayer, libtool, libtorrent, liburcu, libv4l, + libxcb, libxml2, libxslt, links, linux-firmware, lm-sensors, + lmbench, lockfile-progs, logrotate, lshw, lsof, + lttng-babeltrace, lttng-tools, lua, luajit, mesa3d, microperl, + mii-diag, module-init-tools, mpc, mpd, mpg123, mplayer, + mtd-utils, mysql_client, nbd, ncurses, netatalk, netkitbase, + netkittelnet, netsnmp, newt, nfs-utils, openntpd, openssh, + openssl, opkg, patch, pciutils, pcre, php, poco, polarssl, + popt, portmap, pppd, procps, pulseaudio, python, python-nfc, + python-protobuf, qt, quota, rp-pppoe, rtorrent, sam-ba, samba, + scons, sdl_gfx, smartmontools, sqlite, squid, strace, sudo, + sylpheed, tcpdump, tremor, ttcp, tiff, unionfs, + usb_modeswitch, usbutils, util-linux, vala, valgrind, vpnc, + vsftpd, webkit, wget, which, wpa_supplicant, x11vnc, xapp_*, + xdriver_*, xenomai, xfont_*, xinetd, xl2tp, xlib_*, xlsclient, + xproto_*, xserver_xorg-server, xutil_util-macros, xz, zeromq + + New packages: arptables, at91bootstrap3, boot-wrapper-aarch64, + ccid, cpanminus, cpuload, erlang, evtest, fb-test-apps, + fxload, gdbm, gnupg, googlefontdirectory, grantlee, gsl, + lcdapi, liblo, liblog4c-localtime, libtirpc, linux-pam, + lua-msgpack-native, macchanger, mtdev, mtdev2tuio, nfacct, + opus, opus-tools, pcsc-lite, perl, pkgconf, python-meld3, + python3, qemu, qextserialport, qtuio, rpcbind, schifra, + sconeserver, supervisor, time, ulogd, usb_modeswitch_data, + yasm + + Deprecated packages: netkitbase, netkittelnet + + Issues resolved (http://bugs.uclibc.org): + + #807: [PATCH] samba - make iconv and smbd optional + #3049: binutils have a sysroot bug in ld + #5330: update vsftpd to 3.0.0 + #5486: libglib2 build fails on: libs/libglib-2.0.so: undefined... + #5666: Fails to build python 2.7.2 for 2440 arm + +2012.08, Release August 31th, 2012 + + Updated/fixed packages: microperl, cups, luajit, rrdtool, + prboom, oprofile. + + Added license information for: sqlite. + + Changed the source URLs of all packages located on Sourceforge + in order to use the automatic mirror selection URL + downloads.sourceforge.net, and get rid of the + BR2_SOURCEFORGE_MIRROR option. + +2012.08-rc3, Released August 25th, 2012 + + Updated/fixed packages: libglib2, netsnmp, freetype, libfuse, + libpng, x11vnc, zlib, gpsd, ifplugd, bash, distcc. + + Added license informations for: barebox, grub, syslinux, + uboot, xloader, yajl, zlib, zxing, alsa-lib, alsa-utils, + faad2, nano, fbdump, rsync, librsync, fontconfig, + inotify-tools, + +2012.08-rc2, Released August 15th, 2012 + + Updated/fixed packages: imagemagick, sudo, crosstool-ng. + + Added license informations for: mxml, nanocom, empty, expat, + lua, lucjson, xinetd, cjson, luaexpat, lmbench, bwm-ng, + input-event-daemon, luajit, cgilua, copas, coxpcall, + luafilesystem, luasocket, rings, wsapi, xavante, libtpl, + avahi, busybox, libfcgi, ifplugd, libcgicc, libcurl, + libdaemon, libdnet, libgpg-error, libpcap, libpng, lighttpd, + mtd, openssl, psmisc, socat, spawn-fcgi. + + Fixes to Microblaze external toolchains + configuration. Improvements of the pkg-stats + script. Out-of-tree fix for the graph-depends script. + + Kernel headers version bump. + +2012.08-rc1, Released August 1st, 2012 + + Fixes all over the tree and new features. + + Integration of a legal information reporting infrastructure, + which allows to generate detailed informations about the + licenses and source code of all components of a system + generated by Buildroot. License information will progressively + be added on packages. + + Default configuration files added for Calao-systems USB-A9263 + and Calao-systems USB-A9G20-LPW. + + External toolchains update: allow download of a custom + toolchain, add Linaro 2012.05 and 2012.06 for ARM, add + Blackfin toolchain 2012R1-BETA1, add Sourcery CodeBench MIPS + 2011.09. + + Allow the restriction of downloads to the primary site only. + This is useful for project developers who want to ensure that + the project can be built even if the upstream tarball + locations disappear. + + Add a 'System configuration' choice to select between 3 + different init systems: Busybox init, SysV init and Systemd + init. + + Cleanups to the package infrastructure. The visible change to + developers is that $(eval $(call AUTOTARGETS)) is now $(eval + $(autotools-package)), and similarly for other package + infrastructures and host packages. Refer to the documentation + for details. + + By default, automatic detection of the number of compilation + jobs to use, depending on the number of CPUs available. + + Improvements to generate systems with static libraries only + (infrastructure and package fixes). + + Add proper support in the Linux kernel package to generate + Device Tree Blobs or combined Device Tree / Kernel + images. This will be useful on Microblaze, PowerPC and ARM, + which are architectures making extensive use of the Device + Tree. + + Updated/fixed packages: audiofile, autoconf, automake, axel, + barebox, bash, beecrypt, berkeleydb, bind, bison, bluez_utils, + bonnie, boost, busybox, bsdiff, bwm-ng, bzip2, cifs-utils, + cgilua, cmake, connman, conntrack-tools, crosstool-ng, cups, + dbus, dhcp, dnsmasq, e2fsprogs, eeprog, ethtool, faad2, fbv, + ffmpeg, freetype, gmp, gnutls, gob2, gpsd, grep, + gst-plugins-base, gst-plugins-good, gzip, hiawatha, hostapd, + htop, icu, igh-ethercat, imagemagick, input-tools, iostat, + iproute2, ipset, iptables, iw, kmod, less, libcap, libgci, + libconfig, libcurl, libelf, libevas, libeXosip2, libexif, + libfuse, libidn, libmad, libmbus, libmnl, + libnetfilter-conntrack, libnl, libnspr, libnss, libogg, + libosip2, libpcap, libpng, libroxml, liburcu, libusb, libxml2, + libxslt, lighttpd, linux, ltrace, lttng-libust, lttng-modules, + lttng-tools, lua, m4, memtester, midori, mii-diag, + module-init-tools, mpfr, mpg123, mrouted, msmtp, mtd, mxml, + mysql_client, nasm, nbd, ncurses, nfs-utils, opencv, openocd, + openssl, pciutils, php, polarssl, portaudio, pppd, + pthread-stubs, pulseaudio, qt, quagga, quota, radvd, rpm, + rrdtool, samba, sam-ba, scons, sdl_gfx, sdl_sound, speex, + sqlite, squashfs, squid, sudo, synergy, syslinux, systemd, + tar, tcpdump, tcpreplay, udev, usbutils, valgrind, wget, + wpa_supplicant, wsapi, xavante, xserver_xorg-server, zlib + + New packages: cjson, collectd, dfu-util, dmidecode, elftosb, + fbterm, flashrom, freerdp, inadyn, libfreefare, + libnetfilter_cttimeout, libnfc, libnfc-llcp, liboping, + libtorrent, linphone, logsurfer, lshw, luacjson, luaexpat, + luajit, mediastreamer, mobile-broadband-provider-info, monit, + mxs-bootlets, nanocom, nss-mdns, ofone, omap-u-boot-utils, + opkg, ortp, owl-linux, python-id3, python-nfc, quota, + ramspeed, rtorrent, sound-theme-borealis, + sound-theme-freedesktop, sysprof, webrtc-audio-processing, + xinetd, zxing + + Issues resolved (http://bugs.uclibc.org): + + #1315: Allow use of older external toolchains without sysroot + support [won't fix] + #5276: Hiawatha needs to manage IPV6 if so [fixed] + #5360: buildroot fails when building "host-libglib2 2.30.2 + Building" [won't fix, upstream problem] + #5384: Can't build packages relying on gets on newer glibc + [fixed] + +2012.05, Released May 30th, 2012: + + Updated/fixed packages: busybox, netsnmp, pptp-linux + +2012.05-rc3, Released May 25th, 2012: + + Minor fixes around the tree. + + Infra: Fix for DOWNLOAD macro when using primary mirrors with + scp targets. + + Toolchain: Kernel headers 3.2.18 / 3.3.7. + + Updated/fixed packages: binutils, bison, busybox, cifs-utils, + gnuchess, gpsd, iperf, libmpeg2, mtd, ntfs-3g, oprofile, + xserver-xorg + +2012.05-rc2, Released May 18th, 2012: + + Fixes all over the tree. + + Toolchain: uClibc: Use 0.9.33.2, Crosstool-ng: fix gperf + dependency, disable decimal floats support, Linux 3.2.17 / + 3.3.6 kernel headers. Fix sysroot copy handling for toolchains + without C++ support. + + Updated/fixed packages: apr, apr-util, ccache, dnsmasq, + heirloom-mailx, gdb, ndisc6, opencv, openssl, socat, vala + +2012.05-rc1, Released May 10th, 2012: + + Fixes all over the tree and new features. + + Use /etc/os-release for version info rather than + /etc/br-version. + + CMake toolchain file moved to $HOST_DIR/usr/share/buildroot. + + Apply-patches.sh: cleanups, archived patches handling fixes, + support series files. + + Defconfigs: beaglebone, mx53qsb, pandaboard, qemu configs for + arm-vexpress/microblaze/ppc-mpc88544ds, use 3.2.x for + atngw100, use 3.3.x for qemu configs. + + Menu structure: Libraries moved out of multimedia section + + Atom processor support. Prescott fix, blackfin ABI fix, + Microblaze architecture support (using ext toolchain). Cleanup + architecture names, deprecate Xtensa support. + + Toolchain: Add GCC 4.4.7, 4.6.3, 4.7.0. uClibc 0.9.33.1, + default to uClibc 0.9.33.x, enable + UCLIBC_SUPPORT_AI_ADDRCONFIG by default, static and 64bit + fixes for external toolchains, linaro ext toolchains, new + sourcery codebench ext toolchains, GDB 7.4.1, crosstool-ng + 1.15.2. + + Bootloaders: U-Boot: add 2012.04.01, SPL and u-boot.img + support. Barebox: add 2012.04, remove 2011.12. + + Updated/fixed packages: alsa-lib, alsa-utils, at, atk, avahi, + barebox, berkeleydb, bind, bluez_utils, boost, busybox, + can-utils, ccache, cifs-utils, coreutils, cups, dbus, dhcp, + directfb, dnsmasq, doom-wad, dosfstools, e2fsprogs, expat, + fakeroot, feh, ffmpeg, file, fis, freetype, gamin, gawk, + gdk-pixbuf, gettext, giblib, glib-networking, gmp, gnutls, + gpsd, grep, gstreamer, gst-plugins-{bad,base,good,ugly}, + haserl, hdparm, imagemagick, iproute2, iptable, iw, kexec, + kmod, lame, libaio, libarchive, libatomic_ops, libconfig, + libcurl, libdvdnav, libdvdread, libedbus, libethumb, libffi, + libfuse, libglib2, libgtk2, libhid, libmad, libmbus, libmpeg2, + libnl, libplayer, libpng, libsigc, libsoup, libupnp, liburcu, + libusb, libusb-compat, libxml2, libxml-parser-perl, libxslt, + lighttpd, linux-firmware, linux-fusion, lite, lsof, ltrace, + lttng-libust, lua, m4, makedevs, microperl, mpd, mpfr, mpg123, + mrouted, mtd, mysql_client, nbd, ncftp, ncurses, neon, + netsnmp, network-manager, nfs-utils, ngrep, ntfs-3g, openntpd, + openssh, openssl, parted, pango, pcre, php, pixman, poco, + psmisc, pulseaudio, python, qt, quagga, radvd, rpm, rsync, + ruby, samba, sam-ba, sane-backends, sawman, screen, sdl_net, + smartmontools, speex, sqlite, squashfs3, squid, sshfs, sudo, + syslinux, sysstat, taglib, tcpdump, tftp-hpa, transmission, + tiff, tinyhttpd, uboot-tools, udev, uemacs, unionfs, usbutils, + util-linux, vala, valgrind, vim, vsftpd, wget, wipe, + wpa_supplicant, xdriver_xf86-{input-vmmouse,video-fbdev}, + xfsprogs, zlib + + New packages: apr, apr-util, audiofile, bellagio, + conntrack-tools, empty, fmtools, glib-networking, + heirloom-mailx, hiawatha, latencytop, lcdproc, libcap-ng, + libdmtx, libfcgi, libnetfilter_conntrack, libnfnetlink, + libtpl, localedef, minicom, msmtp, ndisc6, netatalk, + ocf-linux, openswan, parted, polarssl, protobuf, read-edid, + socketcand, stress, systemd, ushare, zeromq + + Deprecated packages: ttcp + + Removed packages: ntfsprogs + + Issues resolved (http://bugs.uclibc.org): + + #2353: [lua] fix build with 2010.08-rc1 + #2503: Microperl fails build on MIPSel or with Fedora13.x86_64 + #2557: [PATCH] mkfs.xfs complains about missing libxfs.so.0 + #2881: Can't build project statically with external toolchain + #3751: MIPS: fix BR2_GCC_TARGET_ABI for MIPS n64 + #4808: ccache may build against wrong zlib + #4880: New package lcdproc + #4886: New package protobuf + #4892: build fails on ltp-testsuite-20101031/testcases/kernel/fs/... + #4898: * make: [target-finalize] Error 1 (ignored)* + #4985: Qt 4.7.4 build crashes with Linux 2.6.29 + #4970: udev 181 fails to build if kernel version 3.3 is selected + #5018: dialog broken: exits with assert in uClibc + #5102: qt package moc, uic, rcc read from wrong place + #5144: Patch to fix ixon bug in uemacs + #5198: Line graphics output is broken in GNU Screen + #5204: Missing terminfo file(s) for GNU screen terminal type + +2012.02, Released February 29th, 2012: + + Updated/fixed packages: libecore + +2012.02-rc3, Released February 27th, 2012: + + Fixes all over the tree. + + Automatic host dependencies handling for cmake packages + fixed. Customize package deprecated as using a post-build + script is nowadays the preferred way of adding extra stuff to + the rootfs. + + Linux-headers 3.0.x / 3.2.x stable version bumped. + + QEMU defconfigs updated to 3.2.x kernels and readme fixed. + + Updated/fixed packages: dropbear, ffmpeg, libpng + +2012.02-rc2, Released February 19th, 2012: + + Fixes all over the tree. + + Toolchain: uClibc: Added upstream post-0.9.33 fixes, Bump + linux-headers 3.0.x / 3.2.x stable versions. + + Documentation: Added makedev / _DEVICES / + _PERMISSIONS documentation. + + Updated/fixed packages: busybox, ffmpeg, gst-dsp, libecore, + libvncserver, mxml, python. + +2012.02-rc1, Released February 12th, 2012: + + Fixes all over the tree and new features. + + Toolchain: Default to GCC 4.5.x, add binutils 2.22. Java + support removed, Powerpc SPE ABI support. GDB ELF support fix, + GDB 7.4, crosstool-NG 1.13.4. + + Gentargets: scp and mercurial support. + Autotools: derive host dependencies from target by default. + Packages can now declare device table snippets. + + Host utilities menu with commonly used host tools. + + defconfigs: qemu configs for x86-64, mips and sparc, at91 + defconfigs now use modern U-Boot / mainline Linux, added + lpc3250 defconfigs. + + uClibc: remove 0.9.30, backport unshare() support, add + 0.9.32.1 / 0.9.33, use same config for ctng. + + Bootloaders: U-Boot: add 2011.12, remove 2010.xx versions, + Barebox: add 2012.01/02, remove 2011.10/11, LPC32xx + bootloaders added. + + Various manual updates. Release tarballs now contain generated + manual in text/html/pdf formats. + + Buildroot now calls the stop function of scripts in + /etc/init.d at shutdown. + + Updated/fixed packages: atk, avahi, barebox, bash, beecrypt, + bind, binutils, bison, bluez_utils, bzip2, busybox, cairo, + ccache, cdrkit, coreutils, cramfs, dbus, dbus-glib, dialog, + diffutils, dmalloc, dropbear, e2fsprogs, ebtables, ed, + ethtool, expat, ffmpeg, file, fis, flex, fluxbox, fontconfig, + freetype, gawk, grep, gst-dsp, gst-ffmpeg, gst-plugins-base, + hdparm, hostapd, htop, i2c-tools, icu, iproute2, ipsec-tools, + ipset, iptables, iw, jpeg, kismet, lame, libcap, libcgi, + libev, libeXosip2, libffi, libftdi, libgpg-error, libgtk2, + libidn, libmms, libmnl, libmodbus, libnl, libogg, libosip, + libpcap, libpng, libraw1394, libroxml, libusb, libusb-compat, + libv4l, libvorbis, libxcb, libxml-parser-perl, libxslt, + lighttpd, links, lm-sensors, lua, m4, module-init-tools, mpc, + mesa3d, mpd, mpfr, mplayer, mtd-utils, nano, nbd, ncurses, + netperf, netsnmp, ntp, opencv, openocd, openssl, openvpn, orc, + pciutils, pcre, pixman, pkg-config, poco, popt, proftpd, + python, python-serial, qt, ruby, samba, sdl, sdparm, + squashfs3, sshfs, sqlite, squid, sudo, syslinux, tcl, tcpdump, + ti-utils, tiff, tremor, uboot, uboot-tools, udev, usbmount, + util-linux, vala, valgrind, vsftpd, wpa_supplicant, + xapp_{bdftopcf,mkfontdir,mkfontscale,xkbcomp,xcursorgen,xinit}, + xapp_xinput, xapp_xman, xcb-util, xdm, xenomai, + xf86-video-sis, xfont_{encodings,font-util}, + xlib_lib{fontenc,X11,Xau,Xcursor,Xdmcp,Xfixes,Xfont,Xrender}, + xlib_libxkbfile, xterm, xutil_makedepend, yajl + + New packages: boost, connman, dstat, expedite, explorercanvas, + feh, flot, giblib, igh-ethercat, imlib2, jquery, + jquery-sparklines, jquery-validation, jsmin, kmod, libecore, + libedbus, libedje, libeet, libeina, libelementary, libesmtp, + libethumb, libevas, libical, libmbus, liboauth, liburcu, + libvncserver, linux-firmware, + lttng-{babeltrace,libust,modules,tools}, NetworkManager, + open2300, python-distutilscross, python-dpkt, + python-netifaces, python-pygame, python-setuptools, rt-tests, + sam-ba, sane-backends, sqlcipher, transmission, unionfs, + xf86-input-tslib, xinput-calibrator + + Issues resolved (http://bugs.uclibc.org): + + #743: Add Transmission bit torrent option to buildroot + #755: Add Boost libraries as a package + #2299: Add crypto support to libsoup + #2617: Pixman 0.19.2 & Cairo 1.10.0 + #3403: libgpg-error: bump to version 1.10 + #3409: libgpg-error: download from gnupg.org + #3421: nano: make tiny flag optional + #3691: New EFL packages + #4664: Cannot patch AT91Bootstrap + #4700: setlocalversion not working for combination svn/ubuntu 11.10... + #4760: Qt: add host-pkg-config to dependency-list + +2011.11, Released November 30th, 2011: + + Fixes all over the tree. + + Bump kernel headers / default Linux version to 3.1.4. + + Updated/fixed packages: ruby + +2011.11-rc3, Released November 26th, 2011: + + Fixes all over the tree. + + Toolchain: Fix gdb dependencies for external toolchains, + adjust uClibc patches so they don't confuse modern versions of + patch, bump crosstool-ng, kernel headers and linux versions. + + Updated/fixed packages: busybox, freetype, mplayer, opencv, + php, rsyslog, ruby, thttpd, xapp_xf86dga + + Issues resolved (http://bugs.uclibc.org): + + #4357: Prevent patch commands from accessing source control + #4369: Fix permissions on untared lsof archive + +2011.11-rc2, Released November 18th, 2011: + + Fixes all over the tree and new features. + + Updated asciidoc documentation + + Toolchain: Bumped 3.x stable kernel headers, use wget in + crosstool-ng as well, bump crosstool-ng version, gdb fixes, + uClibc sparc fix. + + Updated/fixed packages: distcc, file, gst-plugins-bad, libxcb, + mplayer, newt, qt, rpm, rrdtool, tar, tftpd + + Issues resolved (http://bugs.uclibc.org): + + #3355: mplayer fails to build + #4021: uClibc: undefined reference to `__GI___errno_location' + #4297: Qt's qmake uses wrong pkg-config + +2011.11-rc1, Released November 11th, 2011: + + Fixes all over the tree and new features. + + Moved misc scripts and support stuff to support/. Renamed + patch-kernel.sh to support/scripts/apply-patches.sh. + + Documentation: Moved to asciidoc format, make targets to + generate text/html/pdf/epub output added. + + Defconfigs: Qemu configs updated to 3.1 kernel and readmes + added. + + Bootloaders: Add support for custom git tree / tarballs for + barebox, similar to how it's handled for u-boot. Clean up + menuconfig options. + + Toolchain: Update external codesourcery toolchain download + URLs after Codesourcery got bought by Mentor, add x86 + toolchain, update toolchain versions and optimize toolchain + sysroot copying. Fix uClibc 0.9.32 builds for e500 PPC, + updated GDB versions / download URLs. Binutils + libbfd/libopcodes static/dynamic linking fix. GCC 4.6.2 added, + use ctng-1.13.0. + + Package infrastructure: Support for local packages / + overrides, package dir / name arguments dropped from + {GEN,AUTO,CMAKE}TARGETS. + + Linux: Kernel extensions infrastructure support, Xenomai + + RTAI support. + + Updated/fixed packages: acpid, bind, busybox, dash, dbus, + dbus-glib, directfb, dnsmasq, drystone, e2fsprogs, ethtool, + fakeroot, fbdump, file, freetype, fuse, gamin, gmp, gmpc, + gnutls, gob2, gst-plugins-{base,bad,good,ugly}, gstreamer, + hostapd, ifplugd, imagemagick, intltool, ipsec-tools, ipset, + iptables, iw, jpeg, kexec, leafpad, less, libargtable2, libao, + libconfuse, libcuefile, libcurl, libdaemon, libevent, + libglib2, libiconv, libmpd, libreplaygain, libroxml, + libsamplerate, libsndfile, libsoup, libsvgtiny, libtool, + libxcb, lighttpd, links, linux-fusion, lite, lrzsz, lsof, lzo, + lzop, makedevs, mcookie, mpg123, mpd, mpfr, mtd, musepack, + mutt, mysql_client, ncftp, ncurses, neon, netcat, netsnmp, + ntfs-3g, ntfsprogs, ntp, openntpd, openssh, openssl, oprofile, + orc, pciutils, psmisc, python, qt, quagga, radvd, rpm, rsync, + samba, sawman, sdl_sound, smartmontools, sqlite, squid, + stunnel, sudo, sylpheed, sysstat, taglib, tar, tcpreplay, + tslib, usbutils, util-linux, valgrind, wget, whetstone, which, + wpa-supplicant, xdata_xcursor-themes, xmlstarlet, xterm + + New packages: bluez-utils, cifs-utils, fftw, fluxbox, json-c, + libev, libftdi, libgeotiff, libmodbus, libplayer, live555, + ngrep, noip, opencv, openocd, picocom, poco, portaudio, + pulseaudio, pv, rtai, vala, xenomai. + + Removed packages: liboil, sfdisk, swfdec, webif + + Issues resolved (http://bugs.uclibc.org): + + #505: live555: new package + #507: Enable live and tv options in MPlayer-1.0rc2 + #531: let e2fsprogs package to export headers to staging dir if needed + #1171: Linuxthreads new cannot find sysdep.h + #1357: Add bluez to buildroot system + #2107: New package: input-event-daemon + #2599: New package: orc (Oil Runtime Compiler) + #2605: gstreamer: Update to 0.10.30 + #2677: introducing util-linux-ng as replacement for util-linux + #2917: Qt: Add declarative module + #3145: jffs2 image generation fails + #3271: netperf-2.4.5 fails to compile + #3331: xdata_xcursor-themes depends on xcursorgen + #3343: Add file:// download SITE_METHOD + #3391: Add support for specifying an external kernel tree + #3631: Error while compiling with Xorg + #3709: oprofile doesn't build for mipsel + #3925: midori not getting compile + #4045: Add support for downloading i386 toolchains from codesourcery + #4165: lrzsz-fix-symlink-at-rebuild.patch + #4171: makedevs-unused-but-set-variable.patch + #4183: Codesourcery toolchain download site has changed + #4231: libneon.so: undefined reference to `SSL_SESSION_cmp' + #4381: Add option to lighttpd to enable Lua support + #4387: Make sure that dest dir exists before installing mtd files + +2011.08, Released August 31th, 2011: + + Fixes all over the tree. + + Toolchain: Fix codesourcery 2009q3 ARM download, Linux 3.0.4 + kernel headers. + + Updated/fixed packages: ipset, python + +2011.08-rc2, Released August 29th, 2011: + + Fixes all over the tree. + + Toolchain: crosstool-NG 1.12.1, use binutils 2.21 on + mips/sh/older uClibc, disallow uClibc 0.9.32 on avr32/sh + (broken). + + Defconfigs: kernel updates, fix mini2440 serial port config, + remove old arm toolchain configs. + + Bootloaders: Fix grub patching, add barebox-{n,x,menuconfig} + targets similar to linux/busybox. + + Updated/fixed packages: barebox, directfb, libsoup, + libxml-parser-perl, mtd, ncurses, python, ti-utils, udev, + usbmount, util-linux, xfont_font-misc-misc + + Issues resolved (http://bugs.uclibc.org): + + #3685: ncurses installation hangs due to old version of tic + #4093: Grub fails to install bz2 patch after conversion to... + +2011.08-rc1, Released August 4th, 2011: + + Fixes all over the tree and new features. + + Toolchain: uClibc 0.9.32 / NPTL support, 0.9.29 removed, + ext-toolchain-wrapper improvements, improved non-MMU + support. GCC 4.3.6 / 4.6.1. + + GENTARGETS infrastructure extended to cover bootloaders and + Linux kernel as well. Options to retrive Linux/U-Boot from a + custom git repo instead of upstream tarballs. + Support for Linux 3.x and release candidate tarballs. + X-Loader bootloader for omap added. + + Make source/external-deps now also works for external + toolchains / crosstool-ng backend. + + Updated/fixed packages: autoconf, berkeleydb, bind, binutils, + bmon, bridge-utils, busybox, cmake, dbus, dbus-glib, + e2fsprogs, ethtool, ffmpeg, gst-plugins-{bad,base,good,ugly}, + gvfs, hostapd, iproute2, iptables, iw, jpeg, lame, libarchive, + libdnet, libdrm, libgcrypt, libgtk2, libmpeg2, libpng, + libsoup, lighttpd, linux-fusion, lzo, midori, mtd-utils, + nfs-utils, openvpn, oprofile, orc, pkg-config, proftpd, qt, + ruby, samba, sdl, shared-mime-info, sudo, sqlite, squid, + synergy, udev, usbmount, usbutils, util-linux, valgrind, + webkit, xorg-xserver, xz, zlib + + New packages: acl, attr, ebtables, gnutls, inotify-tools, + ipset, libargtable2, libiqrf, libmnl, libnspr, libnss, + libroxml, libyaml, live555, mxml, orc, rsyslog, sredird, + statserial, stunnel, ti-utils, uboot-tools, yajl + + Deprecated packages: liboil, swfdec + + Removed packages: hal + + Issues resolved (http://bugs.uclibc.org): + + #3559: libnspr: Add new package + #3595: patch to add libroxml + #3565: libnss: Add new package + #3583: xfonts_font-adobe-100dpi fails due to missing map file + #3649: [PATCH] Add mapdir to existing pkg-config patch + #3907: 2011.05 - Qt 4.7.3 not building on ARM + #3961: Nfs-utils: Remove SUSv3-function index + #3985: "help" target's defconfig list needs sort + #3997: bump libroxml to v2.1.0 + +2011.05, Released May 27th, 2011: + + Updated/fixed packages: makedevs + +2011.05-rc2, Released May 24th, 2011: + + Fixes all over the tree. + + Toolchain: Code sourcery ARM 2009q1 download URL fixed / + 2009q3 external toolchains added. Crosstool-NG bumped to + 1.11.3, eglic/glibc configuration fixes. Linux kernel 2.6.38.x + bumped to 2.6.38.7. + + Updated/fixed packages: bind, fakeroot, kbd, psmisc, qt + +2011.05-rc1, Released May 18th, 2011: + + Fixes all over the tree and new features. + + External toolchain improvements: We now build a binary + toolchain wrapper and install it into HOST_DIR/usr/bin, which + enforces the correct compiler arguments, making an external + toolchain as easy to use outside of Buildroot as the internal + ones are. This also brought a cleanup of CFLAGS, making the + Buildroot build output easier to read. + + Rootfs device handling improvements: Choice between static + /dev, devtmpfs and devtmpfs with either mdev or udev. + + Toolchain: More preconfigured codesourcery external + toolchains, improved Crosstool-NG support, fix for GCC + snapshot versions, GCC 4.4.6 / 4.5.3, experimental GCC 4.6.0 + support, target-GCC fixes, uClibc fixes, 0.9.32-rc3 support. + + Bootloaders: U-boot 2011.03, Barebox 2011.05.0 + + Linux: support for custom kernel image targets, E.G. for + powerpc builds with embedded device trees. + + Misc fixes for qemu defconfigs, ensuring correct serial + terminal setup out of the box. + + Misc gentarget / autotools handling fixes. + + Updated/fixed packages: alsa-lib, alsa-utils, alsamixergui, + atk, avahi, bind, bison, busybox, copas, dbus-glib, dhcp, + dhcpdump, dnsmasq, dropbear, ethtool, fakeroot, ffmpeg, file, + gamin, gnuconfig, gst-ffmpeg, gst-plugins-good, gtk2-engines, + haserl, hostapd, icu, imagemagick, iproute2, iw, kismet, less, + libcap, libdnet, libglade, libglib2, libgtk2, libnl, libpng, + libxml2, libxml2, libxslt, lighttpd, lockfile-progs, makedevs, + midori, mpg123, mpc, mpd, mpfr, mplayer, mtd-utils, ncurses, + netsnmp, openssh, openssl, openvpn, pango, pkg-config, popt, + procps, proftpd, qt, quagga, readline, rsync, samba, sdl, + socat, squashfs, squid, sudo, tslib, udev, usbutils, webkit, + wpa_supplicant, xerces, xfont_font-misc-misc, xlib_libX11, + xlib_libXfont, xlib_xtrans, xorg-server, xterm, xz + + New packages: bonnie++, can-utils, gdisk, htop, + input-event-daemon, libexif, libraw, libv4l, ngircd + + Removed packages: festival + + Issues resolved (http://bugs.uclibc.org): + + #2131: Add OpenMP support to the toolchain + #3379: New Package: bonnie++ + #3445: Not working openssl-10.0.0d on 386sx + #3451: fakeroot package: wrong FAKEROOT_SITE variable + #3457: alsamixergui: broken URL + #3475: Calling sync on large filesystems when not always necessary + #3511: make busybox-menuconfig does not download busybox package + #3541: Quotes in the top Makefile:217 break buildroot/kernel config... + #3571: u-boot: fw_printenv does not build + #3643: popt source url is not responding + #3733: dropbear: make zlib optional + #3757: Buildroot can't build mplayer with libmad + +2011.02, Released February 28th, 2011: + + Fixes all over the tree. + + Updated/fixed packages: alsamixergui, avahi, ffmpeg, icu, mpd, + nuttcp, qt, slang, squashfs, sylpheed, synergy, xerces + + Deprecated packages: devmem2, webif + + Issues resolved (http://bugs.uclibc.org): + + #2911: Qt: Disable qt3support-option, if gui-module isn't selected + #3259: Unable to build webkit (on arm) + #3295: slang fails to build on mipsel + #3325: ffmpeg fails to build + +2011.02-rc2, Released February 24th, 2011: + + Fixes all over the tree. + + Festival packages marked as broken. Unless someone steps up + to support them, they will be removed during the 2011.05 + development cycle. + + Updated/fixed packages: atk, avahi, bind, cairo, dbus, + enchant, fakeroot, gmpc, gpsd, gvfs, iperf, jpeg, libarchive, + libcgicc, libdaemon, libdrm, libevent, libgail, libglib2, + libgpg-error, libmicrohttpd, librsvg, libsoup, libxcp, + makedevs, matchbox-fakekey, matchbox-startup-monitor, mdadm, + metacity, mpd, nasm, nfs-utils, olsr, openssl, popt, + pthread-stubs, quagga, rpm, samba, sdl, sdl_gfx, sdl_image, + sdl_mixer, sdl_sound, sdl_ttf, squashfs, synergy, taglib, + tcpreplay, tiff, wpa_supplicant, xcb-util, + xdriver_xf86-input-{acepad,aiptek,evdev,joystick,keyboard}, + xdriver_xf86-input-{mouse,synaptics,void}, + xdriver_xf86-video-{chips,dummy,geode,glide,intel,nv,wsfb}, + xlib_lib{ICE,SM,XScrnSaver,Xau,Xcursor,Xdmcp,Xi,Xinerama}, + xlib_lib{Xrandr,Xt,Xtst,Xxf86dga,Xxf86vm,dmx,fontenc,pciaccess}, + xserver_xorg-server, xz + + Removed packages: ace_of_penguins, vlc + + Issues resolved (http://bugs.uclibc.org): + + #3205: Failing chmod when running "make" in buildroot (openssl)... + #3277: quagga fails to build with SNMP support + #3283: See why nfs-utils needs fakeroot, and convert to autotools + #3307: synergy fails to build due to missing XTest library + +2011.02-rc1, Released February 14th, 2011: + + Fixes all over the tree and new features. + + External toolchain improvements: clarification of the options, + and introduction of the toolchain profile concept, for + well-known toolchains. Buildroot is now capable of + automatically downloading and extracting well-known toolchains + (for the moment, CodeSourcery ARM, PowerPC, MIPS and SuperH + toolchains are supported). Crosstool-NG backend updated and + improved. + + Complete rework of how hardware boards are supported. + Each board now only has a single defconfig file, and all + board-specific options have been removed. See + docs/buildroot.html#board_support for details. + + Added support for the following boards: Mini2440, Qemu ARM + Versatile, Qemu MIPSel Malta, Qemu PowerPC G3beige, Qemu SH4 + r2d and Qemu x86. The Qemu boards support allows to easily + build systems that are known to work under Qemu. + + Initial support for Blackfin processors. + + Staging directory moved into $(O)/host/usr//sysroot, in + preparation for support of SDK. For the same reason, the + toolchain binaries (cross-compiler and other related tools) + are now installed in $(O)/host/usr/bin/. The cross pkg-config + now also automatically returns correct values for cross + compilation, without needing any environment variables to be + set. + + Ccache support reworked. Now used for both host and target + compilation, and cache is stored in ~/.buildroot-ccache. + + Toolchain: uClibc 0.9.32-rc2, several components moved to + normal AUTOTARGET packages. + + Generic cmake infrastructure, similar to the existing + GENTARGETS/AUTOTARGETS. + + Support for bzr downloads, next to the existing git/svn support. + + Kconfig infrastructure rebased against 2.6.38-rc3, bringing + misc fixes. 'xconfig' now uses Qt4 rather than Qt3. + + EXT2 file system size handling improved, UBI image support, fs + configuration options cleanup, U-Boot/Barebox version bumps. + + Updated/fixed packages: alsa-utils, at, autoconf, automake, + bash, binutils, bison, busybox, bzip2, cdrkit, cloop, cmake, + coreutils, cups, dbus, dbus-python, dhcp, directfb, + direcfb-examples, dmalloc, dnsmasq, dosfstools, e2fsprogs, ed, + fbset, ffmpeg, findutils, flac, freetype, gdk-pixbuf, gmp, + grep, gperf, gst-ffmpeg, gst-plugins-bad, gst-plugins-base, + gst-plugins-good, gst-plugins-ugly, gstreamer, gvfs, hdparm, + hostapd, i2c-tools, icu, imagemagick, input-tools, iproute2, + iptables, iw, jpeg, kexec, libaio, libart, libcap, libconfig, + libfuse, libglib2, libidn, libmad, libogg, libpcap, libpng, + libsndfile, libtheora, libtool, libusb-compat, libvorbis, + libxcb, libxml2, libxslt, links, linux-fusion, lm-sensors, + lsof, ltp-testsuite, ltrace, lvm2, lzo, m4, makedevs, + memtester, mesa3d, mii-diag, mpc, mpfr, mpg123, mplayer, + mrouted, mtd-utils, nano, netperf, netplug, ntfs-3g, ntp, + openssh, openssl, openvpn, oprofile, pango, patch, pciutils, + php, pkgconfig, portmap, psmisc, python, qt, rsync, ruby, + sawman, screen, sdl_gfx, sdl_sound, smartmontools, socat, + sqlite, squid, sshfs, sstrip, sysklogd, sysstat, sysvinit, + tar, tcpdump, tslib, udev, usbutils, vim, vtun, webkit, wipe, + x11vnc, xapp_xlogo, xcb-proto, xfont_font-util, + xkeyboard-config, xlib_libX11, xz, zlib + + New packages: dhrystone, dsp-tools, faad2, fbgrab, gst-dsp, + gst-omapfb, irda-utils, lame, libao, libcue, libcuefile, + libffi, libhid, libreplaygain, libsamplerate, libsigc++, + lsuio, mpd, musepack, python-mad, python-serial, rsh-redone, + sdparm, tidsp-binaries, vorbis-tools, wavpack, whetstone, + xl2tp, xmlstarlet + + Removed packages: hotplug, l2tp, libfloat, microcom, + ng-spice-rework + + Issues resolved (http://bugs.uclibc.org): + + #267: The make target: cross fails because toolchain_build_... + #415: Berkeley DB: mut_pthread.o: relocation R_X86_64_32 against... + #561: ltp-testsuite failed to install + #1447: Installing gfortran on PowerPC + #1651: Build fail caused by ccache in module-init-tools + #1681: Cross-compiled binaries shouldn't be installed into staging + #1723: [PATCH] axel: convert to generic package infrastructure and... + #1735: [PATCH] mplayer: convert to autotools infrastructure + #2551: [PATCH] native toolchain in the target filesystem fails + #2623: buildroot-snapshot-20100922 fails when compiling development... + #2647: makedevs package lacks support for 16-bit major/minor numbers + #2371: QT MYSQL Module does not build when MySQL installed on the host + #2839: compile fails in various packages with a odd message "error:... + #2887: tar "buffer overflow detected" error + #2893: Broken "make source" with external toolchain + #2905: Qt: Speed up compilation, if gui-module isn't selected + #2929: genext2fs: couldn't allocate a block (no free space) + #2935: Ntpdate isn't installed + #2965: Broken linkage to xkbcomp (blocking X server startup) + #2983: xlib_libX11 build failed + #3007: kexec doesn't build: Missing regdef.h file + #3085: Init scripts are not compatible with sysVinit (when busybox... + #3103: make external-deps wants to download gcc-.tar.bz2 when... + #3109: abnormal `make busybox-menuconfig` + #3115: How about board specific makefiles? + #3169: python patch has typo, aborts build in scenario + #3181: dhcp.mk copies S80dhcp-server to etc/init.d, not etc/init.d/ + +2010.11, Released November 30th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: libgcrypt, qt, squid, sysstat, tcpdump, + xserver-xorg + + Issues resolved (http://bugs.uclibc.org): + + #2773: squid with openssl support needs openssl on the host + #2857: OBJDUMP definition is missing from TARGET_CONFIGURE_OPTS + +2010.11-rc2, Released November 25th, 2010: + + Fixes all over the tree. + + Add support for LEON Sparc architecture variants. Fix make + source/external-deps for host packages. + + Updated/fixed packages: bash, bind, busybox, dialog, gpsd, + libglib2, libcurl, libmad, lrzsz, midori, module-init-tools, + mtd-utils, openssh, openssl, pciutils, php, qt, sqlite, + sysstat, webkit, zlib + + Issues resolved (http://bugs.uclibc.org): + + #759: Sysstat build broken without libintl + #2479: host-module-init-tools 3.11 fails to build + #2725: Buildroot overrides kernel config + #2785: mtd-utils build fails due to missing libmtd + #2791: Added PHP-Process Control to the PHP-Package + #2797: pciutils dependencies on zlib not taken into account + #2809: failed to compile libglib2 + #2821: [PATCH] Patch for JavaScriptCore in QtWebKit module + #2827: qt-4.7.0-pthread_getattr_np.patch invalid for qt 4.6... + #2833: Failed to compile webkit without X11 + +2010.11-rc1, Released November 8th, 2010: + + Fixes all over the tree and new features. + + Kconfig infrastructure rebased against 2.6.36-rc1, bringing + misc fixes + nconfig and savedefconfig targets. + + Toolchain: ARM cortex A9 support, experimental crosstool-ng + backend, GCC 4.5.x. + + Fs: Squashfs 4.1 with lzo support + + Old-style package hooks (*_HOOK_POST_*) removed. Use the more + generic new-style ones instead. + + Download handling reworked and support for git/svn downloads + added. + + Removed experimental shared config.cache support, as it is + too unreliable. + + A convenience Makefile wrapper is created when using + out-of-tree building, similar to how it is done for the kernel. + + Alpha, Cris, IA64 and Sparc64 architecture support removed. + + New packages: argp-standalone, gdk-pixbuf, gpsd, gst-ffmpeg, + libmpeg2, kbd, librsvg, nuttcp, rng-tools, rrdtool, xz + + Updated/fixed packages: acpid, alsa-lib, argus, at, autoconf, + automake, avahi, axel, beecrypt, berkeleydb, bind, bmon, boa, + bootutils, bridge-utils, bsdiff, busybox, cvs, dbus, directfb, + dmraid, docker, dosfstools, dropbear, e2fsprogs, ethtool, + expat, ezxml, fbset, fconfig, ffmpeg, freetype, gadgetfs-test, + gamin, gawk, genext2fs, gperf, gst-plugins-base, + gst-plugins-ugly, gtk2-themes, gtkperf, gvfs, haserl, hdparm, + hostapd, hwdata, ifplugd, imagemagick, iperf, ipsec-tools, + iproute2, iptables, iw, jpeg, kexec, kismet, less, libcgi, + libcurl, libdaemon, libdnet, liberation, libevent, libeXosip2, + libglade, libgtk2, libiconv, libidn, libintl, libmms, libmpd, + libnl, liboil, libosip2, libpcap, libpng, libtool, libungif, + libxml2, libxslt, lighttpd, lite, lm-sensors, lockfile-progs, + logrotate, m4, matchbox, mdadm, mesa3d, metacity, mplayer, + mtd-utils, mysql_client, nano, nbd, ncftp, neon, netperf, + netsnmp, ng-spice-rework, ntfsprogs, ntp, openntpd, openssh, + openssl, openvpn, oprofile, pango, patch, pcre, php, + pkg-config, portmap, pppd, pptp-linux, prboom, proftpd, radvd, + rdesktop, readline, rp-pppoe, ruby, qt, quagga, samba, sawman, + sdl_mixer, sdl_sound, sed, setserial, shared-mime-info, slang, + speex, sqlite, squashfs, startup-notification, strace, + sylpheed, sysstat, taglib, tcpdump, thttpd, tiff, tn5250, + torsmo, tslib, udev, udpcast, usbmount, usbutils, vsftpd, + vtun, which, wireless-tools, wpa_supplicant, xapp_twm, + xapp_xbacklight, xapp_xcursorgen, xapp_xinit, xapp_xinput, + xapp_xmore, + xdriver_xf86-input-{acecad,aiptek,evdev,joystick,keyboard}, + xdriver-xf86-input-{mouse,synaptics,vmmouse,void}, + xdriver-xf86-video-{apm,ark,ast,ati,chips,cirrus,dummy,fbdev}, + xdriver-xf86-video-{geode,glide,glint,i128,i740,intel,mach64}, + xdriver-xf86-video-{mga,neomagic,newport,nv,openchrome,r128}, + xdriver-xf86-video-{rendition,s3,s3virge,savage,siliconmotion}, + xdriver-xf86-video-{sis,sisusb,suncg3,suncg6,suncg14,sunffb}, + xdriver-xf86-video-{sunleo,suntcx,tdfx,tga,trident,v4l,vesa}, + xdriver-xf86-video-{vmware,voodeo,wsfb,xgi,xgixp}, + xkeyboard-config, xlib_libX11, xserver_xorg-server, xstroke, + xterm, xvkbd, zlib + + Deprecated packages: hotplug, lzma, ng-spice-rework, sfdisk + + Removed packages: dillo, libglib12, libgtk12, microwin, + pcmcia + + Issues resolved (http://bugs.uclibc.org): + + #901: new package: gpsd + #2389: Generate a Makefile wrapper in $(O) + #2461: wireless_tools: install shared library if needed + #2521: Can't compile sdl_mixer, mikmod.h can't be found + #2533: xserver_xorg-server: Enable glx, if mesa3d is built + #2563: [PATCH] cairo: Expose the configure option to disable some... + #2581: libmms: Update to 0.6, and patch to work on architectures... + #2707: Can't compile linux kernel using buildroot + crosstool-ng + #2731: Build order + #2737: buildroot configuration tool crashing when the path exceeds... + #2767: Build for lsof broken in buildroot-2010.08 + +2010.08: Released August 31th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: atk, xstroke + + Removed packages: lxdoom + +2010.08-rc2, Released August 30th, 2010: + + Fixes all over the tree. + + Mark the combination of uClibc 0.9.31, gcc 4.2.x, C++ and + locale support as broken. Remove deprecated GCC 4.2.[1-3] + versions. + + Mark CRIS architecture as deprecated, as it is discontinued + upstream. + + Marked shared config.cache as experimental and disabled by + default as it is known to break with certain package + combinations. + + Toolchain: fixed gcc 4.2.x build after uClibc NPTL support got + added. + + fs: old-style squashfs for big endian archs fixed. + + Updated/fixed packages: busybox, gst-plugins-base, + imagemagick, kismet, libgail, libglib2, libgtk2, lua, + luafilesystem, lzo, ncurses, netcat, pango, php, pppd, + proftpd, qt, samba, startup-notification, swfdec, sysvinit, + util-linux + + Removed packages: stunnel + + Issues resolved (http://bugs.uclibc.org): + + #635: util-linux fails to build in 2009.08 + #2239: netcat package installs its binary to target as avr32-linux... + #2395: libglib2-2.24.1 and libxml2-2.7.7 fails build on MIPS because... + #2443: Initramfs: Don't overwrite $(TARGET_DIR)/init if it exists + #2449: Minor fixes for squashfs makefile and correct PowerPC e500 ... + +2010.08-rc1, Released July 30th, 2010: + + Fixes all over the tree and new features. + + Toolchain: GCC 4.3.5, older 4.3.x versions removed. GCC 4.1.2 + and non-sysroot support removed. Added support for (snapshot) + NPTL in uClibc, 0.9.28.3 removed, + + Bootloaders: Various cleanups, moved to boot/, added Barebox, + removed yaboot. Support building u-boot from custom tarball, + u-boot 2010.06. + + New GTK-based configurator, usable using 'make gconfig'. + + Java packages marked as broken. Unless someone steps up to + support this, they will be removed during the 2010.11 + development cycle. + + Alpha, IA64 and Sparc64 architectures marked as deprecated. + GTK+ on DirectFB has also been marked as deprecated, as it is + not supported in recent GTK+ versions, and more and more + packages depends on the new versions. + Unless someone steps up to support them, they will be removed + during the 2010.11 development cycle. + + New packages: cgilua, copas, coxpcall, ffmpeg, libsvgtiny, + libgail, luafilesystem, luasocket, rings, wsapi, xavante, xterm + + Updated/fixed packages: alsa-lib, alsamixergui, at, atk, + avahi, berkeleydb, bash, blackbox, busybox, bzip2, cairo, + cdrkit, cmake, dash, dhcp, dialog, diffutils, distcc, dmalloc, + dnsmasq, dropbear, e2fsprogs, fbv, file, flex, fontconfig, + gawk, gmpc, gnuchess, gst-plugins-base, gst-plugins-good, + gstreamer, gzip, icu, intltool, iostat, ipsec-tools, iptables, + iw, libart, libcgi, libcurl, libdrm, libeXosip, libfuse, + libglib2, libgpg-error, libiconv, libidn, liblockfile, libpng, + libsoup, lighttpd, links, linux-fusion, lmbench, lrzsz, + ltrace, make, midori, module-init-tools, mplayer, + mysql_client, nbd, ncurses, neon, netcat, netperf, netsnmp, + ntfsprogs, openssl, oprofile, pango, php, qt, quagga, samba, + setserial, sdl, sdl_mixer, sdl_sound, sdl_ttf, speech-tools, + sqlite, squashfs, swfdec, tftpd, thttpd, tn5250, tremor, + usbutils, webif, webkit, wireless_tools, xerces, + xkeyboard-config, xserver_xorg-server, xvkbd, zlib + + Removed packages: modutils, portage, rxvt + + Deprecated packages: dillo, libglib12, libgtk12, microwin, pcmcia + + Issues resolved (http://bugs.uclibc.org): + + #321: alsa-lib uses host include files for python which breaks ... + #361: linux kernel configuration choice works incorrectly + #387: Tremor not installed to toolchain + #401: new package: ffmpeg + #475: uImage target for U-boot failed generating + #543: ATK requires X11 on DirectFB target + #575: webkit: Buildroot Libtool Patch Fails + #583: build fails with external x86_64 toolchain + #729: sstrip creates corrupted headers + #829: Webkit r44552 needs libXt + #835: Package Dataflashboot-1.05 does not compile with buildroot... + #847: Compiling target-gcc v4.4 fails with "libc.so.0: cannot open... + #859: Add (head of) nptl branch to list of uClibc versions + #949: compile with debug info + #955: Grub fails to build with External Toolchain + #1051: Webkit doesn't compile (Linuxthreads new, x86) + #1213: Move .config into output directory + #1225: Buildroot fails to account for "nof" subdirectory (no float... + #1231: (sparc) Linux kernel fails to build + #1261: The getline() in output/build/linux-2.6.28/scripts/unifdef.c... + #1339: Busybox needs -fno-strict-aliasing to compile cleanly + #1393: neon config fails libxml/parser.h: libxml2 requires, but not ... + #1405: WebKit fails to build because pthread_getattr_np is not impl... + #1675: GMP Error during buildroot make process + #1741: external toolchain linking error + #1753: lmbench: convert to generic package infrastructure + #1771: Fakeroot and the target/generic/device_table.txt create bad... + #1807: LZMA 4.32.7, Required header file(s) are missing + #1813: xkeyboard-config fails to build because of intltool problem + #1879: Bump iptables to 1.4.8 + #1885: Add a bunch of lua modules + #1897: Bump libusb to 1.0.7 + #1903: Bump tn5250 to 0.17.4 and migrate to autotargets + #1909: netperf-2.4.5 fails to build because of undeclared SOCK_DCCP + #1927: Bump file to 5.03 and migrate to autotargets + #1933: Bump gawk to 3.1.8 and migrate to autotargets + #1945: PHP: add sqlite3 dependency when using external lib + #1951: Bump openssl to 0.9.8o + #1957: Bump sqlite to 3.6.23.1 + #1975: Package removal/deprecation + #1981: zlib: bump to 1.2.5 + #1987: intltool: Fix spelling mistake + #1993: Bump bash to 4.1.7(1) and migrate to autotargets + #1999: Typo in path checking + #2005: Bump dnsmasq to 2.55 and migrate to gentargets + #2035: ipsec-tools-0.7.2 fails to build with gcc-4.4.x + #2038: Bump ncurses to 5.7 + #2095: make gconfig: undefined reference to symbol 'dlsym@@GLIBC_2.2.5' + #2101: blackbox depends on locale support + #2119: Tries to build kernel, although disabled in config + #2125: libXfont build fail + #2143: buildroot compiler generates segfaulting statically linked exe.. + #2149: xterm build failure + #2155: Compression lzo don't set for ubifs + #2161: [SECURITY] Update libpng to 1.2.44 + #2167: Bump busybox to 1.17.0, convert to gentargets, drop 1.12, ... + #2181: pixman can't apply pixman-0.10.0-no-tests.patch + #2191: linux-fusion build fail + #2221: Qt does not compile (dependencies not taken into account?) + #2233: Atmel atstk target skeletons have /etc/mtab as a file, not ... + #2245: Netcat does not work due to incorrect assumptions about signed.. + #2251: directory output/build after make *_defconfig not found + #2257: Convert netsnmp package to autotargets + #2263: Bump samba to 3.3.13 + #2269: setserial causes make error + +2010.05, Released May 30th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: coreutils, hal, libcap, + lockfile-progs, ncftp, xserver_xorg-server + + Issues resolved (http://bugs.uclibc.org): + + #1789: binutils fails to build for i386 + #1843: Fix libcap build failure + #1855: XORG Keyboard driver fails to compile + +2010.05-rc3, Released May 27th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: aumix, atk, avahi, bmon, busybox, cairo, + cdrkit, dbus-glib, dbus-python, docker, enchant, fltk, gamin, + gettext, gmpc, gob2, grep, gstreamer, gst-plugins-bad, + gst-plugins-base, gvfs, hal, iconv, icu, iperf, libcgicc, + libdvdnav, libdvdread, libglade, libglib2, libgtk2, libidn, + libmms, libmpd, libpcap, libsoup, lmbench, lsof, ltrace, lvm2, + make, metacity, microperl, mtd-utils, mutt, nbd, netsnmp, + ntfsprogs, ntp, olsr, pango, pciutils, pcmanfm, php, + pkg-config, psmisc, qt, samba, shared-mime-info, squashfs, + squashfs3, sshfs, startup-notification, swfdec, sylpheed, + uemacs, util-linux, valgrind, vpnc, vsftpd, webkit, xstroke + + Issues resolved (http://bugs.uclibc.org): + + #75: arm buildroot "unrecognized option" error + #699: Buildroot fails to copy libstdc++ to target when using external... + #1693: NTP trys IPV6 even if not configured error: 'IPV6_MULTICAST... + #1729: alsamixergui fails to build + #1801: Avahi-autoipd doesn't create TARGET_DIR/var/lib + #1819: pciutils small bugs + #2065: Internal toolchain: bump gcc 4.3.x series to 4.3.5 + +2010.05-rc2, Released May 11th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: busybox, customize, gawk, gnuchess, + hal, hostapd, less, libgcrypt, libnl, libxcb, linux-fusion, + ltp-testsuite, mplayer, netplug, pciutils, php, sed, + shared-mime-info usb_modeswitch, usbutils, vlc wpa_supplicant, + xapp_bdftopcf, xapp_mkfontdir, xdriver_xf86-video-openchrome, + xfont_encodings, xlib_libX11, xlib_libXfont, xlib_xtrans, + xproto_fontcacheproto, xproto_fontsproto, xvkbd + + Removed packages: vice + + Issues resolved (http://bugs.uclibc.org): + + #849: "customize" package copies files to wrong place in target tree + #985: Bump usb_modeswitch package to 1.1.0 + #1135: Package customize. Wrong copying + #1525: Package hal deletes a whole /etc/rc.d directory + #1531: libxcb 1.5 build fails, due to missing xcbgen Python module + #1669: Busybox failed to compile when using an external toolchain + #1699: Fix usbutils dependencies and bump + #1705: Fix pciutils broken cross compiling + #1717: External toolchain fixes for hostapd & wpa_supplicant + +2010.05-rc1, Released May 3rd, 2010: + + Cleaned up / restructured package menu. + + Toolchain: uClibc 0.9.30.3 / 0.9.31, older 0.9.30.x removed. + 2.6.33 kernel headers, binutils 2.20.1, GCC 4.4.4, + removed broken nios2 support, ppc e300cX/e500mc support, + improved external toolchain support, GDB 7.x support. + + X.org updated to 7.5. + + New packages: cdrkit, cramfs, genext2fs, genromfs, + libatomic_ops, librsync, libusb-compat, lmbench, netperf, + squashfs, squashfs3, squid + + Updated/fixed packages: alsa-utils, argus, autoconf, bison, + busybox, bzip2, directfb, dnsmasq, dosfstools, e2fsprogs, + eeprog, fakeroot, fbv, findutils, freetype, haserl, hostapd, + iperf, iptables, iw, less, libaio, libcgi, libcgicc, libdrm, + libgcrypt, libglib2, libid3tag, libmad, liboil, libosip2, + libpng, libraw1394, libsysfs, libxml2, libxslt, linux-fusion, + ltrace, lua, lzma, madplay, makedevs, matchbox, mdadm, + memstat, mesa3d, mtd-utils, nano, ncurses, openssl, patch, + pciutils, php, pixman, portage, pppd, pthread-stubs, python, + qt, radvd, samba, setserial, smartmontools, tar, tslib, + udpcast, usb_modeswith, vtun, wget, xdata_xcursor-themes, + xdriver_xf86-video-intel, xkeyboard-config, xlib_libX11, + xlib_libXaw, xlib_libXfont, xlib_libXfontcache, + xlib_libXxf86misc, xlib_libXtst, xlib_libpciaccess, + xproto_dri2proto, xproto_eviext, xproto_fontcacheproto, + xproto_xf86miscproto, xserver_xorg-server + + Removed packages: xapp_xtrap, xlib_libXTrap, xlib_libXevie, + xlib_libXxf86misc, xxproto_evieext, proto_trapproto, + xproto_xf86miscproto + + Issues resolved (http://bugs.uclibc.org): + + #513: Add new squid package + #661: lmbench: new package + #719: Add lua option to haserl + #800: [PATCH] iperf update to 2.0.4 + #803: [PATCH] lua - add shared library patch and config option for... + #805: [PATCH] mdadm - version update + #817: integrator926_defconfig uses unsupported uboot board name + #851: Add option to specify --sysroot value for external toolchain + #1093: Upgrade libusb to v1.0.3 and add new libusb-compat + package for compatibility with old packages that expect + the pre-1.0 API. + #1105: Add new netperf package + #1111: Bump wget to 1.12 and migrate to Makefile.autotools.in + #1117: Bump nano to 2.2.3 and migrate to Makefile.autotools.in + #1123: Bump less to 436 and migrate to Makefile.autotools.in + #1129: Bump memstat to 0.8 and migrate to Makefile.package.in + #1189: Wrong u-boot configuration name for integrator926 target + #1219: kernel headers not correctly installed into toolchain/staging + #1267: Wrong BR2_EXTRA_VERSION + #1273: BR2_INET_IPV6 does not enable IPv6 in pppd + #1303: Add librsync package + #1321: Busybox link fails due to lack of --sysroot option + #1327: mtd-utils compile failure due to lack of --sysroot in CFLAGS + #1345: Bump pppd to 2.4.5 and convert to Makefile.autotools.in + #1369: cannot build radvd (flex problem) + #1387: xlib_libX11-1.3.2 can't find libjpeg + #1411: [SECURITY] Update openssl package to 0.9.8n + #1417: Bump iptables to 1.4.7 + #1423: Bump e2fsprogs to 1.41.11 + #1429: [SECURITY] Update php to 5.2.13 + #1441: Add binutils 2.20.1 + #1447: Package installation on target with debug symbols is broken + #1459: Misc QA fixes + #1489: radvd update to 1.6 + #1513: Enable powerpc e300c2, e300c3 and e500mc optimization + #1537: dev entries not created anymore + #1555: Fix default uclibc-0.9.31 configuration + #1561: [SECURITY] Update samba to 3.3.12 + #1567: openssl0.9.8n fails to compile + #1573: Alsa-utils alsactl/init/* not installed to target + #1591: portmap fails to compile + #1615: Convert eeprog package to gentargets + #1645: Bump hostapd package to 0.7.2 + +2010.02, Release February 26th, 2010: + + Fixes all over the tree. + + Updated/fixed packages: avahi, busybox, cramfs, ipsec-tools, libcgicc, + libgtk2, libraw1394, madplay, netsnmp, pango, squashfs, sylpheed, qt, + xfont_font-util + + Removed packages: hostap, openmotif, xpdf + + Issues resolved (http://bugs.uclibc.org): + + #165: openmotif does not build + #1147: Remove obsolete hostap package + #1183: make source fails to download gmp, mpfr and patches + +2010.02-rc2, Released February 23th, 2010: + + Fixes all over the tree and new features. + + New packages: intltool + + Updated/fixed packages: ace_of_penguins, alsa-lib, alsa-utils, argus, + at, automake, ccache, dosfstools, e2fsprogs, flex, gob2, gmpc, + gst-plugins-good, imagemagick, iw, kexec, libeXosip, libgtk2, + libpcap, libpng, libsoup, libxcb, libxml-parser-perl, libxml2, + libxslt, lvm2, matchbox, mplayer, rsync, rubix, shared-mime-info, + tcl, webkit, xapp_mkfontscale, xfont_encodings, xfont_font-util, + xlib_libfontenc, xproto_trapproto, zlib + + Removed package: xboard + + Issues resolved (http://bugs.uclibc.org): + + #335: atk looks for the path to the gnome library on the host + #355: Please update WebKit - it doesn't compile! + #453: libglib2 autoreconf + #457: e2fsprogs link problem + #459: libgtk2 autoreconf + #469: build of libgtk2 for host incorrectly assumes that X.org ... + #671: Bash fails to build when building buildront on Ubuntu 9.04 + #711: WebKit host dependencies problems + #821: cp: illegal operation + #1039: Not compiled on ubuntu karmic + #1069: [PATCH] The AT91BOOTSTRAP makefile contains a typo + +2010.02-rc1, Released February 9th, 2010: + + Fixes all over the tree and new features. + + Generalized autotools infrastructure to be usable for + non-autotools packages, see package/Makefile.package.in for + details. + + Cleaned up avr32 toolchain config, external source-based + toolchain support is gone. + + Dependency checks: Also check for makeinfo, only print output + on errors. + + Toolchain: uClibc 0.9.30.2, gcc 4.4.3 + + New packages: libcdaudio, libdvdnav, libdvdread, hostapd, ser2net, + tcpreplay + + Updated/fixed packages: alsa-lib, alsa-utils, at, autoconf, bash, + bind, binutils, bootutils, busybox, dbus, directfb, dnsmasq, + e2fsprogs, gstreamer, gperf, gst-plugins-bad, gvfs, fbdump, flex, + hal, iptables, iw, jpeg, kismet, libfuse, libglib2, liboil, libpcap, + libungif, libxml2, libxslt, lighttpd, mesa, mpg123, mtd-utils, nbd, + neon, netstat-nat, newt, openvpn, pcre, php, qt, rdesktop, readline, + rpm, sawman, sdl, sdl_ttf, sqlite, sshfs, tremor, u-boot, + usb_modeswitch, usbutils, webkit, wpa_supplicant, xfsprogs, zlib + + Removed package: asterisk, openswan + + Issues resolved (http://bugs.uclibc.org): + + #515: tcpreplay: new package + #553: Wrong DirectFB ps2mouse limitation + #559: mesa3d build fails + #679: Autoconf cannot find M4 + #739: New/updated hostapd package + #749: Bump usbutils package to version 0.86 + #751: Kernel 2.6 snapshot fetch fail + #753: Bump lighttpd package to 1.4.25 + #757: U-Boot: mkimage cannot be installed using external toolchain + #761: Add binutils 2.20 to toolchain options + #763: [SECURITY] Update pcre to 7.9 + #765: Add buildroot branding to gcc + #767: Bump iw package to 0.9.18 + #773: [SECURITY] Update bind to 9.5.2-P1 + #795: Minor edits to fix typos, grammar, spelling, usage in documen... + #813: Drop not very useful generic package selection options ... + #823: Editor backup files (~) is copied from the target_skeleton + #827: Bump mtd-utils package to version 1.2.0 + #841: Build error + #913: Bump iptables to 1.4.6 + #919: Bump usb_modeswitch package to 1.0.7 + #925: Bump wpa_supplicant package to 0.6.10 + #931: Bump kismet package to 2010-01-R1 + #937: Bump openvpn package to 2.1.1 + #943: Bump sqlite package to 3.6.22 + #961: Bump dnsmasq to 2.52 + #967: Bump netstat-nat to 1.4.10 + #973: Bump iw to 0.9.19 + #1003: DHCP options disabled with busybox-1.16.0 + #1009: [SECURITY] Bump php to 5.2.12 + #1015: [SECURITY] Bump bind to 9.5.1-P2 + #1027: Busybox flash commands conflict with those from mtd-utils + #1063: [SECURITY] Update lighttpd to 1.4.26 + +2009.11, Released December 1st, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: alsamixergui, autoconf, coreutils, fltk, + microperl, ncurses, vim + + Issues resolved (http://bugs.uclibc.org): + + #707: Cant configure fltk-1.1.7. configure: error: Configure could ... + +2009.11-rc2, Released November 29th, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: busybox, dbus, fltk, gvfs, ltrace + +2009.11-rc1, Released November 23rd, 2009: + + Fixes all over the tree and new features. + + Cleaned up / Simplified build directory layout. Refer to + docs/buildroot.html#using for details. + + Target defconfig files moved to configs/ and listed in 'make help' + output. + + Fixed *clean targets. Now clean removes everything generated, + so you can do a fresh rebuild. Distclean furthermore removes + kbuild tools and .config, bringing the source tree back in a + pristine state. + + Toolchain: ARM cortex A8 support, GCC 4.4.2, sensible default + soft / hardfloat setting for architecture, ensure target-ldd + gets installed. + + New packages: divine, gvfs, libarchive, libmicrohttpd, + sdl_sound, swfdec, sysstat + + Updated/fixed packages: alsa-lib, alsamixergui, autoconf, bootutils, + busybox, gcc, directfb, dnsmasq, e2fsprogs, festival, gamin, gperf, + gqview, gstreamer, gst-plugins-bad, gst-plugins-base, gst-plugins-good, + imagemagick, ipkg, iptables, iw, kernel-headers, kismet, leafpad, + libelf, libevent, libglib2, libidn, liblockfile, libmad, libpcap, + libupnp, libuuid, libxml2, lighttpd, ltrace, lua, lzma, magiccube4d, + matchbox, mdadm, nbd, ncftp, ncurses, netkittelnet, netsnmp, + ng-spice-rework, ntfs-3g, openntp, openssl, pcmanfm, php, psmisc, + python, quagga, radvd, rpm, rsync, rubix, samba, sawman, sdl, sdl_image, + shared-mime-info, sfdisk, spawn-fcgi, speech-tools, sqlite, squashfs, + synergy, syslinux, sysklogd, target-binutils, tcpdump, torsmo, u-boot, + udpcast, util-linux, valgrind, vsftpd, wipe, wpa-supplicant, x11vnc, + xdata_xcursor-themes, xboard, xfsprogs, xstroke, zlib[5~ + + Removed package: mdnsresponder, mpatrol, gcc 3.4.6 + 4.0.4, vice + + Issues resolved (http://bugs.uclibc.org): + + #301: allow to install libsmbclient + #303: add gvfs package + #477: Add sdl_sound package + #487: Make kismet package sexier + #511: New package usb_modeswitch + #527: misc fixes for dnsmasq package + #565: libevent: Bump version and clean up makefile + #587: Use iptables multipurpose binaries and bump to 1.4.4 + #593: Missing early check for patch(1) + #597: (REOP) Selecting busybox in buildroot's config clobbers ar ... + #609: libmicrohttpd: New package + #615: python: Don't delete .py files unless asked + #617: netkit/inetd requires RPC and fails to build if RPC is disabled + #619: netkittelnet requires netkitbase to install, but there's no ... + #645: allow to build nbd-server with NBD package + #653: [SECURITY] Update php package to version 5.2.11 + #655: Update sqlite package to version 3.6.18 + #657: Bug in imagemagick-clean target + #663: Add option for NAND flash with 512B Page and 16 kB erasesize ... + #665: [PATCH] Samba package + #667: [PATCH] e2fsprogs + #683: SDL-dfb does not select directfb + #701: make install problem with unstripped binaries + #703: [SECURITY] Update openssl package to 0.9.8l + #705: Bump spawn-fcgi package to 1.6.3 + #709: Bump lighttpd package to 1.4.24 + #713: Migrate openntpd package to Makefile.autotools.in + #715: Bump libidn package to 1.15 and other fixes + #717: Bump dnsmasq to 2.51 and introduce new IDN option + #731: Bump iw package to 0.9.17 + +2009.08, Released August 31th, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: ctorrent, saveconfig/getconfig, + sdl_net, util-linux. + + Issues resolved (http://bugs.uclibc.org): + + #529: util-linux doesn't find headers and include libs correctly + #557: Build ctorrent with SSL support if available + +2009.08-rc3, Released August 26th, 2009: + + Additional fixes and cleanups. + + Updated/fixed packages: alsa-utils, berkeleydb, busybox, dbus, + directfb, enchant, kernel headers. + + Issues resolved (http://bugs.uclibc.org): + + #471: Allow directfb compilation with debug + #541: Removal of CVS directories in target filesystem broken + #547: berkeleydb: Update config.{sub, guess} + #549: enchant: Fix dependencies. + #569: Fix alsa-utils build for x86 on x86-64 + +2009.08-rc2, Released August 6th, 2009: + + Additional fixes and new features. + + New packages: libuuid, gcc 4.3.4. + + Updated/fixed packages: busybox, classpath, gzip, ipsec-tools, + jamvm, libusb, microperl, neon, popt, sed, webkit. + + Fixed issue with 'make oldconfig' + + Issues resolved (http://bugs.uclibc.org): + + #525: sed broken with external toolchain + #537: Fix gzip build with recent glibc + +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 + Makefile.autotools.in and we now build host versions of + packages where needed for build time dependencies instead of + relying on the correct versions being available on the build + host. Ancient toolchain / busybox versions have furthermore + been removed as announced in the 2009.02 release notes. + + New packages: flac, gob2, lzop, taglib, wpa_supplicant + + Updated packages: avahi, bind, binutils, busybox, dbus, dbus-glib, + directfb, dnsmasq, freetype, gcc, gmp, gstreamer, iptables, kernel + headers, kexec, libglib2, libpng, libsndfile, lua, mpfr, ntfs-3g, + openssl, php, qtopia4, rsync, samba, sqlite, tar, uboot, uclibc, + util-linux, xorg7, xerces + + Issues resolved (http://bugs.uclibc.org): + + #5,#77,#141,#143: Convert php package to Makefile.autotools.in + and a ton of other improvements + #19: page.h missing by util-linux + #37: update libglib2 to version 2.18.4 + #61: tslib puts staging_dir into pkgconfig file + #69: tar refuses to build + #71,#175: ./wchar.h:41:12: error: empty filename in #include + #73: Bump openssl package to the latest version + #81: New package wpa_supplicant + #99: new package: flac + #101: update gstreamer packages + #105,#313: menuconfig segfaults on tinyx if wchar is not + selected + #107: convert libvorbis to Makefile.autotools.in + #109: Make pppd package avoid bsd err + #111: binutils 2.17 fails to build when texinfo >= 4.10 + #133: Modify ncurses5-config to get correct include path + #137: Bump php to version 5.2.9 + #139: Bump sqlite to 3.6.11 and convert to + Makefile.autotools.in + #145: Bump bind package to 9.5.1-P1 (security) + #147: buildroot toolchain fails to build w/binutils-2.19.1 + #151: openssl package trivial fixes + #161: vim fails on patching with errors in configure.patch + #169: blackbox-0.70.1 does not build + #177: xdriver_xf86-input-keyboard does not build + #179: Upgrade dropbear to Makefile.autotools.in + #181: Update to Xorg 7.4 + #187: ntfs-3g: could not build cross + #191: alsa-lib ARM binaries always built with EABI + #213: Bump wpa_supplicant package to version 0.6.9 + #217: Bump openssl package to 0.9.8k (security) + #219: Toolchain build fails on m4 + #225: m4 macros are out of place + #233: make ipv6 optional in iptables + #237: ncftp: convert to Makefile.autotools.in + #239: ntfs-3g: convert to Makefile.autotools.in + #245: lzop: new package + #271: Bump bind package to 9.5.1-P2 (security) + #277: Bump sqlite package to 3.6.16 + #279: update libglib2 to version 2.20.1 + #281: update DirectFB to version 1.2.8 + #283: add taglib + #285: compilation of samba fails if IPV6 support is missing + #293: update samba to version 3.3.3 + #299: add shared-mime-info package + #307: make openssl package respect build flags diff --git a/buildroot/COPYING b/buildroot/COPYING new file mode 100644 index 0000000..0c018b0 --- /dev/null +++ b/buildroot/COPYING @@ -0,0 +1,355 @@ +With the exceptions below, Buildroot is distributed under the terms of +the GNU General Public License, reproduced below; either version 2 of +the License, or (at your option) any later version. + +Some files in Buildroot contain a different license statement. Those +files are licensed under the license contained in the file itself. + +Buildroot also bundles patch files, which are applied to the sources +of the various packages. Those patches are not covered by the license +of Buildroot. Instead, they are covered by the license of the software +to which the patches are applied. When said software is available +under multiple licenses, the Buildroot patches are only provided under +the publicly accessible licenses. + +----------------------------------------------------------------- + + 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. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 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. + + , 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. diff --git a/buildroot/Config.in b/buildroot/Config.in new file mode 100644 index 0000000..52fb53b --- /dev/null +++ b/buildroot/Config.in @@ -0,0 +1,833 @@ +# + +mainmenu "Buildroot $BR2_VERSION Configuration" + +config BR2_HAVE_DOT_CONFIG + bool + default y + +config BR2_VERSION + string + option env="BR2_VERSION_FULL" + +config BR2_HOSTARCH + string + option env="HOSTARCH" + +config BR2_BUILD_DIR + string + option env="BUILD_DIR" + +# Hidden config symbols for packages to check system gcc version +config BR2_HOST_GCC_VERSION + string + option env="HOST_GCC_VERSION" + +config BR2_HOST_GCC_AT_LEAST_4_5 + bool + default y if BR2_HOST_GCC_VERSION = "4 5" + +config BR2_HOST_GCC_AT_LEAST_4_6 + bool + default y if BR2_HOST_GCC_VERSION = "4 6" + select BR2_HOST_GCC_AT_LEAST_4_5 + +config BR2_HOST_GCC_AT_LEAST_4_7 + bool + default y if BR2_HOST_GCC_VERSION = "4 7" + select BR2_HOST_GCC_AT_LEAST_4_6 + +config BR2_HOST_GCC_AT_LEAST_4_8 + bool + default y if BR2_HOST_GCC_VERSION = "4 8" + select BR2_HOST_GCC_AT_LEAST_4_7 + +config BR2_HOST_GCC_AT_LEAST_4_9 + bool + default y if BR2_HOST_GCC_VERSION = "4 9" + select BR2_HOST_GCC_AT_LEAST_4_8 + +config BR2_HOST_GCC_AT_LEAST_5 + bool + default y if BR2_HOST_GCC_VERSION = "5" + select BR2_HOST_GCC_AT_LEAST_4_9 + +config BR2_HOST_GCC_AT_LEAST_6 + bool + default y if BR2_HOST_GCC_VERSION = "6" + select BR2_HOST_GCC_AT_LEAST_5 + +config BR2_HOST_GCC_AT_LEAST_7 + bool + default y if BR2_HOST_GCC_VERSION = "7" + select BR2_HOST_GCC_AT_LEAST_6 + +config BR2_HOST_GCC_AT_LEAST_8 + bool + default y if BR2_HOST_GCC_VERSION = "8" + select BR2_HOST_GCC_AT_LEAST_7 + +# Hidden boolean selected by packages in need of Java in order to build +# (example: kodi) +config BR2_NEEDS_HOST_JAVA + bool + +# Hidden boolean selected by packages in need of javac in order to build +# (example: classpath) +config BR2_NEEDS_HOST_JAVAC + bool + +# Hidden boolean selected by packages in need of jar in order to build +# (example: classpath) +config BR2_NEEDS_HOST_JAR + bool + +# Hidden boolean selected by pre-built packages for x86, when they +# need to run on x86-64 machines (example: pre-built external +# toolchains, binary tools like SAM-BA, etc.). +config BR2_HOSTARCH_NEEDS_IA32_LIBS + bool + +# Hidden boolean selected by packages that need to build 32 bits +# binaries with the host compiler, even on 64 bits build machines (e.g +# bootloaders). +config BR2_HOSTARCH_NEEDS_IA32_COMPILER + bool + +# Hidden boolean selected by packages that need the host to have an +# UTF8 locale. +config BR2_NEEDS_HOST_UTF8_LOCALE + bool + +source "arch/Config.in" + +menu "Build options" + +menu "Commands" + +config BR2_WGET + string "Wget command" + default "wget --passive-ftp -nd -t 3" + +config BR2_SVN + string "Subversion (svn) command" + default "svn --non-interactive" + +config BR2_BZR + string "Bazaar (bzr) command" + default "bzr" + +config BR2_GIT + string "Git command" + default "git" + +config BR2_CVS + string "CVS command" + default "cvs" + +config BR2_LOCALFILES + string "Local files retrieval command" + default "cp" + +config BR2_SCP + string "Secure copy (scp) command" + default "scp" + +config BR2_SSH + string "Secure shell (ssh) command" + default "ssh" + +config BR2_HG + string "Mercurial (hg) command" + default "hg" + +config BR2_ZCAT + string "zcat command" + default "gzip -d -c" + help + Command to be used to extract a gzip'ed file to stdout. zcat + is identical to gunzip -c except that the former may not be + available on your system. + Default is "gzip -d -c" + Other possible values include "gunzip -c" or "zcat". + +config BR2_BZCAT + string "bzcat command" + default "bzcat" + help + Command to be used to extract a bzip2'ed file to stdout. + bzcat is identical to bunzip2 -c except that the former may + not be available on your system. + Default is "bzcat" + Other possible values include "bunzip2 -c" or "bzip2 -d -c". + +config BR2_XZCAT + string "xzcat command" + default "xzcat" + help + Command to be used to extract a xz'ed file to stdout. + Default is "xzcat" + +config BR2_LZCAT + string "lzcat command" + default "lzip -d -c" + help + Command to be used to extract a lzip'ed file to stdout. + Default is "lzip -d -c" + +config BR2_TAR_OPTIONS + string "Tar options" + default "" + help + Options to pass to tar when extracting the sources. + E.g. " -v --exclude='*.svn*'" to exclude all .svn internal files + and to be verbose. + +endmenu + +config BR2_DEFCONFIG_FROM_ENV + string + option env="BR2_DEFCONFIG" + +config BR2_DEFCONFIG + string "Location to save buildroot config" + default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != "" + default "$(CONFIG_DIR)/defconfig" + help + When running 'make savedefconfig', the defconfig file will be + saved in this location. + +config BR2_DL_DIR + string "Download dir" + default "$(TOPDIR)/dl" + help + Directory to store all the source files that we need to fetch. + If the Linux shell environment has defined the BR2_DL_DIR + environment variable, then this overrides this configuration + item. + + The default is $(TOPDIR)/dl + +config BR2_HOST_DIR + string "Host dir" + default "$(BASE_DIR)/host" + help + Directory to store all the binary files that are built for the + host. This includes the cross compilation toolchain when + building the internal buildroot toolchain. + + The default is $(BASE_DIR)/host + +menu "Mirrors and Download locations" + +config BR2_PRIMARY_SITE + string "Primary download site" + default "" + help + Primary site to download from. If this option is set then + buildroot will try to download package source first from this + site and try the default if the file is not found. + Valid URIs are: + - URIs recognized by $(WGET) + - local URIs of the form file://absolutepath + - scp URIs of the form scp://[user@]host:path. + +config BR2_PRIMARY_SITE_ONLY + bool "Only allow downloads from primary download site" + depends on BR2_PRIMARY_SITE != "" + help + If this option is enabled, downloads will only be attempted + from the primary download site. Other locations, like the + package's official download location or the backup download + site, will not be considered. Therefore, if the package is not + present on the primary site, the download fails. + + This is useful for project developers who want to ensure that + the project can be built even if the upstream tarball + locations disappear. + +if !BR2_PRIMARY_SITE_ONLY + +config BR2_BACKUP_SITE + string "Backup download site" + default "http://sources.buildroot.net" + help + Backup site to download from. If this option is set then + buildroot will fall back to download package sources from here + if the normal location fails. + +config BR2_KERNEL_MIRROR + string "Kernel.org mirror" + default "https://cdn.kernel.org/pub" + help + kernel.org is mirrored on a number of servers around the + world. The following allows you to select your preferred + mirror. By default, a CDN is used, which automatically + redirects to a mirror geographically close to you. + + Have a look on the kernel.org site for a list of mirrors, then + enter the URL to the base directory. Examples: + + http://www.XX.kernel.org/pub (XX = country code) + http://mirror.aarnet.edu.au/pub/ftp.kernel.org + +config BR2_GNU_MIRROR + string "GNU Software mirror" + default "http://ftpmirror.gnu.org" + help + GNU has multiple software mirrors scattered around the + world. The following allows you to select your preferred + mirror. By default, a generic address is used, which + automatically selects an up-to-date and local mirror. + + Have a look on the gnu.org site for a list of mirrors, then + enter the URL to the base directory. Examples: + + http://ftp.gnu.org/pub/gnu + http://mirror.aarnet.edu.au/pub/gnu + +config BR2_LUAROCKS_MIRROR + string "LuaRocks mirror" + default "http://rocks.moonscript.org" + help + LuaRocks repository. + + See http://luarocks.org + +config BR2_CPAN_MIRROR + string "CPAN mirror (Perl packages)" + default "http://cpan.metacpan.org" + help + CPAN (Comprehensive Perl Archive Network) is a repository of + Perl packages. It has multiple software mirrors scattered + around the world. This option allows you to select a mirror. + + The list of mirrors is available at: + http://search.cpan.org/mirror + +endif + +endmenu + +config BR2_JLEVEL + int "Number of jobs to run simultaneously (0 for auto)" + default "0" + help + Number of jobs to run simultaneously. If 0, determine + automatically according to number of CPUs on the host system. + +config BR2_CCACHE + bool "Enable compiler cache" + help + This option will enable the use of ccache, a compiler cache. + It will cache the result of previous builds to speed up future + builds. By default, the cache is stored in + $HOME/.buildroot-ccache. + + Note that Buildroot does not try to invalidate the cache + contents when the compiler changes in an incompatible way. + Therefore, if you make a change to the compiler version and/or + configuration, you are responsible for purging the ccache + cache by removing the $HOME/.buildroot-ccache directory. + +if BR2_CCACHE + +config BR2_CCACHE_DIR + string "Compiler cache location" + default "$(HOME)/.buildroot-ccache" + help + Where ccache should store cached files. + If the Linux shell environment has defined the BR2_CCACHE_DIR + environment variable, then this overrides this configuration + item. + +config BR2_CCACHE_INITIAL_SETUP + string "Compiler cache initial setup" + help + Initial ccache settings to apply, such as --max-files or + --max-size. + + For example, if your project is known to require more space + than the default max cache size, then you might want to + increase the cache size to a suitable amount using the -M + (--max-size) option. + + The string you specify here is passed verbatim to ccache. + Refer to ccache documentation for more details. + + These initial settings are applied after ccache has been + compiled. + +config BR2_CCACHE_USE_BASEDIR + bool "Use relative paths" + default y + help + Allow ccache to convert absolute paths within the output + directory into relative paths. + + During the build, many -I include directives are given with an + absolute path. These absolute paths end up in the hashes that + are computed by ccache. Therefore, when you build from a + different directory, the hash will be different and the cached + object will not be used. + + To improve cache performance, set this option to y. This + allows ccache to rewrite absolute paths within the output + directory into relative paths. Note that only paths within the + output directory will be rewritten; therefore, if you change + BR2_HOST_DIR to point outside the output directory and + subsequently move it to a different location, this will lead + to cache misses. + + This option has as a result that the debug information in the + object files also has only relative paths. Therefore, make + sure you cd to the build directory before starting gdb. See + the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache + manual for more information. + +endif + +config BR2_ENABLE_DEBUG + bool "build packages with debugging symbols" + help + Build packages with debugging symbols enabled. All libraries + and binaries in the 'staging' directory will have debugging + symbols, which allows remote debugging even if libraries and + binaries are stripped on the target. Whether libraries and + binaries are stripped on the target is controlled by the + BR2_STRIP_* options below. + +if BR2_ENABLE_DEBUG +choice + prompt "gcc debug level" + default BR2_DEBUG_2 + help + Set the debug level for gcc + +config BR2_DEBUG_1 + bool "debug level 1" + help + Debug level 1 produces minimal information, enough for making + backtraces in parts of the program that you don't plan to + debug. This includes descriptions of functions and external + variables, but no information about local variables and no + line numbers. + +config BR2_DEBUG_2 + bool "debug level 2" + help + The default gcc debug level is 2 + +config BR2_DEBUG_3 + bool "debug level 3" + help + Level 3 includes extra information, such as all the macro + definitions present in the program. Some debuggers support + macro expansion when you use -g3. +endchoice +endif + +config BR2_STRIP_strip + bool "strip target binaries" + depends on !BR2_PACKAGE_HOST_ELF2FLT + default y + help + Binaries and libraries in the target filesystem will be + stripped using the normal 'strip' command. This allows to save + space, mainly by removing debugging symbols. Debugging symbols + on the target are needed for native debugging, but not when + remote debugging is used. + +config BR2_STRIP_EXCLUDE_FILES + string "executables that should not be stripped" + depends on BR2_STRIP_strip + default "" + help + You may specify a space-separated list of binaries and + libraries here that should not be stripped on the target. + +config BR2_STRIP_EXCLUDE_DIRS + string "directories that should be skipped when stripping" + depends on BR2_STRIP_strip + default "" + help + You may specify a space-separated list of directories that + should be skipped when stripping. Binaries and libraries in + these directories will not be touched. The directories should + be specified relative to the target directory, without leading + slash. + +choice + prompt "gcc optimization level" + default BR2_OPTIMIZE_S + help + Set the optimization level for gcc + +config BR2_OPTIMIZE_0 + bool "optimization level 0" + help + Do not optimize. + +config BR2_OPTIMIZE_1 + bool "optimization level 1" + help + Optimize. Optimizing compilation takes somewhat more time, and + a lot more memory for a large function. With -O, the compiler + tries to reduce code size and execution time, without + performing any optimizations that take a great deal of + compilation time. -O turns on the following optimization + flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability + -fcprop-registers -floop-optimize -fif-conversion + -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts + -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename + -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O + also turns on -fomit-frame-pointer on machines where doing so + does not interfere with debugging. + +config BR2_OPTIMIZE_2 + bool "optimization level 2" + help + Optimize even more. GCC performs nearly all supported + optimizations that do not involve a space-speed tradeoff. The + compiler does not perform loop unrolling or function inlining + when you specify -O2. As compared to -O, this option increases + both compilation time and the performance of the generated + code. -O2 turns on all optimization flags specified by -O. It + also turns on the following optimization flags: + -fthread-jumps -fcrossjumping -foptimize-sibling-calls + -fcse-follow-jumps -fcse-skip-blocks -fgcse -fgcse-lm + -fexpensive-optimizations -fstrength-reduce + -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves + -fpeephole2 -fschedule-insns -fschedule-insns2 + -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing + -fdelete-null-pointer-checks -freorder-blocks + -freorder-functions -falign-functions -falign-jumps + -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please + note the warning under -fgcse about invoking -O2 on programs + that use computed gotos. + +config BR2_OPTIMIZE_3 + bool "optimization level 3" + help + Optimize yet more. -O3 turns on all optimizations specified by + -O2 and also turns on the -finline-functions, -funswitch-loops + and -fgcse-after-reload options. + +config BR2_OPTIMIZE_G + bool "optimize for debugging" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + help + Optimize for debugging. This enables optimizations that do not + interfere with debugging. It should be the optimization level + of choice for the standard edit-compile-debug cycle, offering + a reasonable level of optimization while maintaining fast + compilation and a good debugging experience. + +config BR2_OPTIMIZE_S + bool "optimize for size" + help + Optimize for size. -Os enables all -O2 optimizations that do + not typically increase code size. It also performs further + optimizations designed to reduce code size. -Os disables the + following optimization flags: -falign-functions -falign-jumps + -falign-loops -falign-labels -freorder-blocks + -freorder-blocks-and-partition -fprefetch-loop-arrays + -ftree-vect-loop-version + This is the default. + +endchoice + +config BR2_GOOGLE_BREAKPAD_ENABLE + bool "Enable google-breakpad support" + select BR2_PACKAGE_GOOGLE_BREAKPAD + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC) + depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + help + This option will enable the use of google breakpad, a library + and tool suite that allows you to distribute an application to + users with compiler-provided debugging information removed, + record crashes in compact "minidump" files, send them back to + your server and produce C and C++ stack traces from these + minidumps. Breakpad can also write minidumps on request for + programs that have not crashed. + +if BR2_GOOGLE_BREAKPAD_ENABLE + +config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES + string "List of executables and libraries to extract symbols from" + default "" + help + You may specify a space-separated list of binaries and + libraries with full paths relative to $(TARGET_DIR) of which + debug symbols will be dumped for further use with google + breakpad. + + A directory structure that can be used by minidump-stackwalk + will be created at: + + $(STAGING_DIR)/usr/share/google-breakpad-symbols + +endif + +choice + bool "libraries" + default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED + default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED + help + Select the type of libraries you want to use on the target. + + The default is to build dynamic libraries and use those on the + target filesystem, except when the architecture and/or the + selected binary format does not support shared libraries. + +config BR2_STATIC_LIBS + bool "static only" + help + Build and use only static libraries. No shared libraries will + be installed on the target. This potentially increases your + code size and should only be used if you know what you are + doing. Note that some packages may not be available when this + option is enabled, due to their need for dynamic library + support. + +config BR2_SHARED_LIBS + bool "shared only" + depends on BR2_BINFMT_SUPPORTS_SHARED + help + Build and use only shared libraries. This is the recommended + solution as it saves space and build time. + +config BR2_SHARED_STATIC_LIBS + bool "both static and shared" + depends on BR2_BINFMT_SUPPORTS_SHARED + help + Build both shared and static libraries, but link executables + dynamically. While building both shared and static libraries + take more time and more disk space, having static libraries + may be useful to link some of the applications statically. + +endchoice + + +config BR2_PACKAGE_OVERRIDE_FILE + string "location of a package override file" + default "$(CONFIG_DIR)/local.mk" + help + A package override file is a short makefile that contains + variable definitions of the form _OVERRIDE_SRCDIR, which + allows to tell Buildroot to use an existing directory as the + source directory for a particular package. See the Buildroot + documentation for more details on this feature. + +config BR2_GLOBAL_PATCH_DIR + string "global patch directories" + help + You may specify a space separated list of one or more + directories containing global package patches. For a specific + version of a specific package , + patches are applied as follows: + + First, the default Buildroot patch set for the package is + applied from the package's directory in Buildroot. + + Then for every directory - - that exists in + BR2_GLOBAL_PATCH_DIR, if the directory + /// exists, + then all *.patch files in this directory will be applied. + + Otherwise, if the directory / + exists, then all *.patch files in the directory will be + applied. + +menu "Advanced" + +config BR2_COMPILER_PARANOID_UNSAFE_PATH + bool "paranoid check of library/header paths" + default y + help + By default, when this option is disabled, when the Buildroot + cross-compiler will encounter an unsafe library or header path + (such as /usr/include, or /usr/lib), the compiler will display + a warning. + + By enabling this option, this warning is turned into an error, + which will completely abort the build when such unsafe paths + are encountered. + + Note that this mechanism is available for both the internal + toolchain (through the toolchain wrapper and binutils patches) + and external toolchain backends (through the toolchain wrapper). + +config BR2_REPRODUCIBLE + bool "Make the build reproducible (experimental)" + # SOURCE_DATE_EPOCH support in toolchain-wrapper requires GCC 4.4 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + help + This option will remove all sources of non-reproducibility + from the build process. For a given Buildroot configuration, + this allows to generate exactly identical binaries from one + build to the other, including on different machines. + + The current implementation is restricted to builds with the + same output directory. Many (absolute) paths are recorded in + intermediary files, and it is very likely that some of these + paths leak into the target rootfs. If you build with the + same O=... path, however, the result is identical. + + This is labeled as an experimental feature, as not all + packages behave properly to ensure reproducibility. + +endmenu + +comment "Security Hardening Options" + +choice + bool "Stack Smashing Protection" + default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy + depends on BR2_TOOLCHAIN_HAS_SSP + help + Enable stack smashing protection support using GCC's + -fstack-protector option family. + + See + http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt + for details. + + Note that this requires the toolchain to have SSP support. + This is always the case for glibc and eglibc toolchain, but is + optional in uClibc toolchains. + +config BR2_SSP_NONE + bool "None" + help + Disable stack-smashing protection. + +config BR2_SSP_REGULAR + bool "-fstack-protector" + help + Emit extra code to check for buffer overflows, such as stack + smashing attacks. This is done by adding a guard variable to + functions with vulnerable objects. This includes functions + that call alloca, and functions with buffers larger than 8 + bytes. The guards are initialized when a function is entered + and then checked when the function exits. If a guard check + fails, an error message is printed and the program exits. + +config BR2_SSP_STRONG + bool "-fstack-protector-strong" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Like -fstack-protector but includes additional functions to be + protected - those that have local array definitions, or have + references to local frame addresses. + +comment "Stack Smashing Protection strong needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_SSP_ALL + bool "-fstack-protector-all" + help + Like -fstack-protector except that all functions are + protected. This option might have a significant performance + impact on the compiled binaries. + +endchoice + +comment "Stack Smashing Protection needs a toolchain w/ SSP" + depends on !BR2_TOOLCHAIN_HAS_SSP + +choice + bool "RELRO Protection" + depends on BR2_SHARED_LIBS + help + Enable a link-time protection know as RELRO (RELocation Read Only) + which helps to protect from certain type of exploitation techniques + altering the content of some ELF sections. + +config BR2_RELRO_NONE + bool "None" + help + Disables Relocation link-time protections. + +config BR2_RELRO_PARTIAL + bool "Partial" + help + This option makes the dynamic section not writeable after + initialization (with almost no performance penalty). + +config BR2_RELRO_FULL + bool "Full" + help + This option includes the partial configuration, but also + marks the GOT as read-only at the cost of initialization time + during program loading, i.e every time an executable is started. + +endchoice + +comment "RELocation Read Only (RELRO) needs shared libraries" + depends on !BR2_SHARED_LIBS + +choice + bool "Buffer-overflow Detection (FORTIFY_SOURCE)" + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_OPTIMIZE_0 + help + Enable the _FORTIFY_SOURCE macro which introduces additional + checks to detect buffer-overflows in the following standard library + functions: memcpy, mempcpy, memmove, memset, strcpy, stpcpy, + strncpy, strcat, strncat, sprintf, vsprintf, snprintf, vsnprintf, + gets. + + NOTE: This feature requires an optimization level of s/1/2/3/g + + Support for this feature has been present since GCC 4.x. + +config BR2_FORTIFY_SOURCE_NONE + bool "None" + help + Disables additional checks to detect buffer-overflows. + +config BR2_FORTIFY_SOURCE_1 + bool "Conservative" + help + This option sets _FORTIFY_SOURCE to 1 and only introduces + checks that shouldn't change the behavior of conforming + programs. Adds checks at compile-time only. + +config BR2_FORTIFY_SOURCE_2 + bool "Aggressive" + help + This option sets _FORTIFY_SOURCES to 2 and some more + checking is added, but some conforming programs might fail. + Also adds checks at run-time (detected buffer overflow + terminates the program) + +endchoice + +comment "Fortify Source needs a glibc toolchain and optimization" + depends on (!BR2_TOOLCHAIN_USES_GLIBC || BR2_OPTIMIZE_0) +endmenu + +source "toolchain/Config.in" + +source "system/Config.in" + +source "linux/Config.in" + +source "package/Config.in" + +source "fs/Config.in" + +source "boot/Config.in" + +source "package/Config.in.host" + +source "Config.in.legacy" + +source "$BR2_BUILD_DIR/.br2-external.in" diff --git a/buildroot/Config.in.legacy b/buildroot/Config.in.legacy new file mode 100644 index 0000000..40f39e3 --- /dev/null +++ b/buildroot/Config.in.legacy @@ -0,0 +1,3140 @@ +# +# Config.in.legacy - support for backward compatibility +# +# When an existing Config.in symbol is removed, it should be added again in +# this file, and take appropriate action to approximate backward compatibility. +# This will make the transition for the user more convenient. +# +# When adding legacy symbols to this file, add them to the front. The oldest +# symbols will be removed again after about two years. +# +# The symbol should be copied as-is from the place where it was previously +# defined, but the help text should be removed or replaced with something that +# explains how to fix it. +# +# For bool options, the old symbol should select BR2_LEGACY, so that the user +# is informed at build-time about selected legacy options. +# If there is an equivalent (set of) new symbols, these should be select'ed by +# the old symbol for backwards compatibility. +# It is not possible to select an option that is part of a choice. In that +# case, the new option should use the old symbol as default. This requires a +# change outside of Config.in.legacy, and this should be clearly marked as such +# in a comment, so that removal of legacy options also include the removal of +# these external references. +# +# [Example: renaming a bool option that is part of a choice from FOO to BAR] +# original choice: +# choice +# prompt "Choose foobar" +# config BR2_FOO_1 +# bool "foobar 1" +# config BR2_FOO_2 +# bool "foobar 2" +# endchoice +# +# becomes: +# choice +# prompt "Choose foobar" +# default BR2_BAR_1 if BR2_FOO_1 # legacy +# default BR2_BAR_2 if BR2_FOO_2 # legacy +# config BR2_BAR_1 +# bool "foobar 1" +# config BR2_BAR_2 +# bool "foobar 2" +# endchoice +# +# and in Config.in.legacy: +# config BR2_FOO_1 +# bool "foobar 1 has been renamed" +# help +# +# # Note: BR2_FOO_1 is still referenced from package/foo/Config.in +# config BR2_FOO_2 +# bool "foobar 2 has been renamed" +# help +# +# # Note: BR2_FOO_2 is still referenced from package/foo/Config.in +# +# [End of example] +# +# For string options, it is not possible to directly select another symbol. In +# this case, a hidden wrap bool option has to be added, that defaults to y if +# the old string is not set at its default value. The wrap symbol should select +# BR2_LEGACY. +# If the original symbol has been renamed, the new symbol should use the value +# of the old symbol as default. Like for choice options, a comment should be +# added to flag that the symbol is still used in another file. +# +# [Example: renaming a string option from FOO to BAR] +# original symbol: +# config BR2_FOO_STRING +# string "Some foo string" +# +# becomes: +# config BR2_BAR_STRING +# string "Some bar string" +# default BR2_FOO_STRING if BR2_FOO_STRING != "" # legacy +# +# and in Config.in.legacy: +# config BR2_FOO_STRING +# string "The foo string has been renamed" +# help +# +# +# config BR2_FOO_STRING_WRAP +# bool +# default y if BR2_FOO_STRING != "" +# select BR2_LEGACY +# +# # Note: BR2_FOO_STRING is still referenced from package/foo/Config.in +# +# [End of example] + +config BR2_SKIP_LEGACY + bool + option env="SKIP_LEGACY" + +if !BR2_SKIP_LEGACY + +config BR2_LEGACY + bool + help + This option is selected automatically when your old .config uses an + option that no longer exists in current buildroot. In that case, the + build will fail. Look for config options which are selected in the + menu below: they no longer exist and should be replaced by something + else. + +# This comment fits exactly in a 80-column display +comment "Legacy detected: check the content of the menu below" + depends on BR2_LEGACY + +menu "Legacy config options" + +if BR2_LEGACY +comment "----------------------------------------------------" +comment "Your old configuration uses legacy options that no " +comment "longer exist in buildroot, as indicated in the menu " +comment "below. As long as these options stay selected, or in" +comment "case of string options are non-empty, the build " +comment "will fail. " +comment "* " +comment "Where possible, an automatic conversion from old to " +comment "new symbols has been performed. Before making any " +comment "change in this legacy menu, make sure to exit the " +comment "configuration editor a first time and save the " +comment "configuration. Otherwise, the automatic conversion " +comment "of symbols will be lost. " +comment "* " +comment "After this initial save, reopen the configuration " +comment "editor, inspect the options selected below, read " +comment "their help texts, and verify/update the new " +comment "configuration in the corresponding configuration " +comment "menus. When everything is ok, you can disable the " +comment "legacy options in the menu below. Once you have " +comment "disabled all legacy options, this text will " +comment "disappear and you will be able to start the build. " +comment "* " +comment "Note: legacy options older than 5 years have been " +comment "removed, and configuration files that still have " +comment "those options set, will fail to build, or run in " +comment "unpredictable ways. " +comment "----------------------------------------------------" +endif + +############################################################################### +comment "Legacy options removed in 2018.02" + +config BR2_PACKAGE_TRANSMISSION_REMOTE + bool "transmission remote tool option removed" + select BR2_LEGACY + select BR2_PACKAGE_TRANSMISSION_DAEMON + help + Upstream does not provide a separate configure option for + the tool transmission-remote, it is built when the + transmission daemon has been enabled. Therefore, Buildroot + has automatically enabled BR2_PACKAGE_TRANSMISSION_DAEMON + for you. + +config BR2_KERNEL_HEADERS_3_4 + bool "kernel headers version 3.4.x are no longer supported" + select BR2_KERNEL_HEADERS_4_1 + select BR2_LEGACY + help + Version 3.4.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.1.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_3_10 + bool "kernel headers version 3.10.x are no longer supported" + select BR2_KERNEL_HEADERS_4_1 + select BR2_LEGACY + help + Version 3.10.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.1.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_3_12 + bool "kernel headers version 3.12.x are no longer supported" + select BR2_KERNEL_HEADERS_4_1 + select BR2_LEGACY + help + Version 3.12.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.1.x of the headers have been automatically + selected in your configuration. + +config BR2_BINUTILS_VERSION_2_27_X + bool "binutils version 2.27 support removed" + select BR2_LEGACY + help + Support for binutils version 2.27 has been removed. The + current default version (2.29 or later) has been selected + instead. + +config BR2_PACKAGE_EEPROG + bool "eeprog package removed" + select BR2_LEGACY + select BR2_PACKAGE_I2C_TOOLS + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + The eeprog program is now provided by the i2c-tools package. + +config BR2_PACKAGE_GNUPG2_GPGV2 + bool "gnupg2 gpgv2 option removed" + select BR2_LEGACY + select BR2_PACKAGE_GNUPG2_GPGV + help + The gpgv2 executable is now named gpgv. The config option + has been renamed accordingly. + +config BR2_PACKAGE_IMX_GPU_VIV_APITRACE + bool "Vivante apitrace tool option removed" + select BR2_LEGACY + help + The apitrace tool for Vivante is not provided by the + imx-gpu-viv package any longer. + +config BR2_PACKAGE_IMX_GPU_VIV_G2D + bool "Vivante G2D libraries from imx-gpu-viv removed" + select BR2_LEGACY + select BR2_PACKAGE_IMX_GPU_G2D + help + The G2D libraries are now provided by the imx-gpu-g2d package. + +############################################################################### +comment "Legacy options removed in 2017.11" + +config BR2_PACKAGE_RFKILL + bool "rfkill package removed" + select BR2_LEGACY + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_RFKILL + help + The rfkill program is now provided by the util-linux package. + +config BR2_PACKAGE_UTIL_LINUX_RESET + bool "util-linux reset option removed" + select BR2_LEGACY + help + The util-linux package no longer offers a "reset" command. Use + either the reset command provided by BusyBox or select ncurses + programs, which will install a symlink from "tset" to reset. + +config BR2_PACKAGE_POLICYCOREUTILS_AUDIT2ALLOW + bool "policycoreutils audit2allow option removed" + select BR2_LEGACY + select BR2_PACKAGE_SELINUX_PYTHON + select BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW + help + The policycoreutils package no longer offers audit2allow + as a option. This package has been moved into the + selinux-python package by the SELinux maintainers. + +config BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND + bool "policycoreutils restorecond option removed" + select BR2_LEGACY + select BR2_PACKAGE_RESTORECOND + help + The policycoreutils package no longer offers restorecond + as a option. This package has been moved into a seperate + package maintained by the SELinux maintainers. + +config BR2_PACKAGE_SEPOLGEN + bool "sepolgen package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_SELINUX_PYTHON + select BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN + help + Sepolgen is no longer a individual package, but instead has + been moved into the selinux-python package by the SELinux + maintainers. + +config BR2_PACKAGE_OPENOBEX_BLUEZ + bool "openobex bluez option removed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ_UTILS + help + The OpenOBEX package no longer offers an option to enable or + disable BlueZ support. Instead, BlueZ support is always + included when the bluez5_utils or bluez_utils package is + selected. + +config BR2_PACKAGE_OPENOBEX_LIBUSB + bool "openobex libusb option removed" + select BR2_LEGACY + select BR2_PACKAGE_LIBUSB + help + The OpenOBEX package no longer offers an option to enable or + disable libusb support. Instead, USB support is always + included when the libusb package is selected. + +config BR2_PACKAGE_OPENOBEX_APPS + bool "openobex apps option removed" + select BR2_LEGACY + help + The OpenOBEX package no longer offers an option to enable or + disable apps support. + +config BR2_PACKAGE_OPENOBEX_SYSLOG + bool "openobex syslog option removed" + select BR2_LEGACY + help + The OpenOBEX package no longer offers an option to enable or + disable syslog support. + +config BR2_PACKAGE_OPENOBEX_DUMP + bool "openobex dump option removed" + select BR2_LEGACY + help + The OpenOBEX package no longer offers an option to enable or + disable dump support. + +config BR2_PACKAGE_AICCU + bool "aiccu utility removed" + select BR2_LEGACY + help + As the SixXS project has ceased its operation on 2017-06-06, + the AICCU utility has no use anymore and has been removed. + + https://www.sixxs.net/sunset/ + +config BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS + bool "util-linux login utilities option removed" + select BR2_LEGACY + select BR2_PACKAGE_UTIL_LINUX_LAST + select BR2_PACKAGE_UTIL_LINUX_LOGIN + select BR2_PACKAGE_UTIL_LINUX_RUNUSER + select BR2_PACKAGE_UTIL_LINUX_SU + select BR2_PACKAGE_UTIL_LINUX_SULOGIN + help + Login utilities (last, login, runuser, su, sulogin) now have + their own configuration options in the util-linux menu. + +############################################################################### +comment "Legacy options removed in 2017.08" + +config BR2_TARGET_GRUB + bool "grub (aka grub-legacy) has been removed" + select BR2_LEGACY + help + grub-legacy is no longer maintained, and no longer builds with + recent binutils versions. + + Use grub2 or syslinux instead. + +config BR2_PACKAGE_SIMICSFS + bool "simicsfs support removed" + select BR2_LEGACY + help + Support for simicsfs kernel driver that provides access to a + host computer's local filesystem when the target is + executing within a SIMICS simulation has been removed. + + Simics is now moving away from the simicsfs kernel module, + as the kernel module has required too much maintenance + work. Users should move to the user mode Simics agent + instead. + +config BR2_BINUTILS_VERSION_2_26_X + bool "binutils version 2.26 support removed" + select BR2_LEGACY + help + Support for binutils version 2.26 has been removed. The + current default version (2.28 or later) has been selected + instead. + +config BR2_XTENSA_OVERLAY_DIR + string "The BR2_XTENSA_OVERLAY_DIR option has been removed" + help + The BR2_XTENSA_OVERLAY_DIR has been removed in favour of + BR2_XTENSA_OVERLAY_FILE. You must now pass the complete + path to the overlay file, not to the directory containing + it. + +config BR2_XTENSA_OVERLAY_DIR_WRAP + bool + default y if BR2_XTENSA_OVERLAY_DIR != "" + select BR2_LEGACY + +config BR2_XTENSA_CUSTOM_NAME + string "The BR2_XTENSA_CUSTOM_NAME option has been removed" + help + The BR2_XTENSA_CUSTOM_NAME option has been removed. + +config BR2_XTENSA_CUSTOM_NAME_WRAP + bool + default y if BR2_XTENSA_CUSTOM_NAME != "" + select BR2_LEGACY + +config BR2_PACKAGE_HOST_MKE2IMG + bool "host mke2img has been removed" + select BR2_LEGACY + help + We now call mkfs directly to generate ext2/3/4 filesystem + image, so mke2img is no longer necessary. + +config BR2_TARGET_ROOTFS_EXT2_BLOCKS + int "exact size in blocks has been removed" + default 0 + help + This option has been removed in favor of + BR2_TARGET_ROOTFS_EXT2_SIZE. It has been set automatically + to the value you had before. Set to 0 here to remove the + warning. + +config BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP + bool + default y if BR2_TARGET_ROOTFS_EXT2_BLOCKS != 0 && \ + BR2_TARGET_ROOTFS_EXT2_BLOCKS != 61440 # deprecated default value + select BR2_LEGACY + +# Note: BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP still referenced in fs/ext2/Config.in + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES + int "ext2 extra inodes has been removed" if BR2_TARGET_ROOTFS_EXT2_INODES = 0 + default 0 + help + Buildroot now uses mkfs.ext2/3/4 to generate ext2/3/4 + images. It now automatically selects the number of inodes + based on the image size. The extra number of inodes can no + longer be provided; instead, provide the total number of + inodes needed in BR2_TARGET_ROOTFS_EXT2_INODES. + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES_WRAP + bool + default y if BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES != 0 + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE + bool "cdxaparse removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DATAURISRC + bool "dataurisrc moved to gstreamer1" + select BR2_LEGACY + help + Dataurisrc has moved to gstreamer core and is always built. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP + bool "dccp removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE + bool "hdvparse removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE + bool "mve removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX + bool "nuvdemux removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT + bool "patchdetect removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI + bool "sdi removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA + bool "tta removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOMEASURE + bool "videomeasure removed" + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA + select BR2_LEGACY + help + videomeasure plugin has been removed and has been replaced by + iqa, which has automatically been enabled. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK + bool "apexsink removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL + bool "sdl removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MAD + bool "mad (*.mp3 audio) removed" + select BR2_LEGACY + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC + bool "gst1-plugins-bad webrtc renamed to webrtcdsp" + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTCDSP + select BR2_LEGACY + help + The WebRTC plugin in GStreamer 1.x has always been named + webrtcdsp, but was wrongly introduced in Buildroot under the + name webrtc. Therefore, we have renamed the option to match + the actual name of the GStreamer plugin. + +config BR2_STRIP_none + bool "Strip command 'none' has been removed" + select BR2_LEGACY + help + The strip command choice has been changed into a single + boolean option. Please check that the new setting is + correct (in the "Build options" sub-menu) + +config BR2_PACKAGE_BEECRYPT_CPP + bool "C++ support removed in beecrypt" + select BR2_LEGACY + help + Support for C++ depends on icu. The beecrypt package is + incompatible with icu 59+. + +config BR2_PACKAGE_SPICE_CLIENT + bool "spice client support removed" + select BR2_LEGACY + help + Spice client support has been removed upstream. The + functionality now lives in the spice-gtk widget and + virt-viewer. + +config BR2_PACKAGE_SPICE_GUI + bool "spice gui support removed" + select BR2_LEGACY + help + Spice gui support has been removed upstream. The + functionality now lives in the spice-gtk widget and + virt-viewer. + +config BR2_PACKAGE_SPICE_TUNNEL + bool "spice network redirection removed" + select BR2_LEGACY + help + Spice network redirection, aka tunnelling has been removed + upstream. + +config BR2_PACKAGE_INPUT_TOOLS + bool "input-tools removed" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + help + input-tools has been removed, it is replaced by + linuxconsoletools, which has automatically been enabled. + +config BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH + bool "inputattach moved to linuxconsoletools" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + select BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH + help + input-tools has been removed, inputattach is now part + of linuxconsoletools, which has automatically been + enabled. + +config BR2_PACKAGE_INPUT_TOOLS_JSCAL + bool "jscal moved to linuxconsoletools" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + select BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK + help + input-tools has been removed, jscal is now part + of linuxconsoletools, which has automatically been + enabled. + +config BR2_PACKAGE_INPUT_TOOLS_JSTEST + bool "jstest moved to linuxconsoletools" + select BR2_LEGACY + select BR2_PACKAGE_LINUXCONSOLETOOLS + select BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK + help + input-tools has been removed, jstest is now part + of linuxconsoletools, which has automatically been + enabled. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH + bool "SH Sourcery toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the sh architecture has + been removed, since it uses glibc older than 2.17 that requires + -lrt to link executables using clock_* system calls. This makes + this toolchain difficult to maintain over time. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 + bool "x86 Sourcery toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the x86 architecture has + been removed, since it uses glibc older than 2.17 that requires + -lrt to link executables using clock_* system calls. This makes + this toolchain difficult to maintain over time. + +config BR2_GCC_VERSION_4_8_X + bool "gcc 4.8.x support removed" + select BR2_LEGACY + help + Support for gcc version 4.8.x has been removed. The current + default version (5.x or later) has been selected instead. + +############################################################################### +comment "Legacy options removed in 2017.05" + +config BR2_PACKAGE_SUNXI_MALI_R2P4 + bool "sunxi-mali r2p4 removed" + select BR2_LEGACY + help + sunxi-mali libMali for r2p4 Mali kernel module has been + removed since the libump package only provides libUMP.so.3. + libMali for r2p4 Mali kernel module requires libUMP.so.2. + +config BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT + bool "CoffeeScript option has been removed" + select BR2_LEGACY + help + The option to enable NodeJS CoffeeScript has been removed. + To continue using it, add "coffee-script" to + BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL. + +config BR2_PACKAGE_NODEJS_MODULES_EXPRESS + bool "Express web application framework option has been removed" + select BR2_LEGACY + help + The option to enable the NodeJS Express web application + framework has been removed. To continue using it, add + "express" to BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL. + +config BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL + bool "bluez5_utils gatttool install option removed" + select BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED + help + The option to install gatttool specifically has been removed. + Since version 5.44 gatttool is in the list of deprecated + tools. The option to build and install deprecated tools has + been automatically enabled. + +config BR2_PACKAGE_OPENOCD_FT2XXX + bool "openocd ft2232 support has been removed" + select BR2_PACKAGE_OPENOCD_FTDI + select BR2_LEGACY + help + FT2232 support in OpenOCD has been removed, it's replaced by + FDTI support, which has automatically been enabled. + +config BR2_PACKAGE_KODI_RTMPDUMP + bool "kodi rtmp has been removed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_INPUTSTREAM_RTMP + help + Internal rtmp support was removed from Kodi. + +config BR2_PACKAGE_KODI_VISUALISATION_FOUNTAIN + bool "kodi-visualisation-fountain has been removed" + select BR2_LEGACY + help + According to upstream 'the visualization is not currently + in a working shape.' + +config BR2_PACKAGE_PORTMAP + bool "portmap has been removed" + select BR2_LEGACY + select BR2_PACKAGE_RPCBIND + help + The portmap upstream tarball is removed, no releases since + ten years and latest change in upstream git in 2014. + You should better use rpcbind as a RPC portmapper. + +config BR2_BINUTILS_VERSION_2_25_X + bool "binutils version 2.25 support removed" + select BR2_LEGACY + help + Support for binutils version 2.25 has been removed. The + current default version (2.27 or later) has been selected + instead. + +config BR2_TOOLCHAIN_BUILDROOT_INET_RPC + bool "uclibc RPC support has been removed" + select BR2_LEGACY + help + uClibc-ng removed internal RPC implementation in 1.0.23. You + should use libtirpc instead. + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS + int "extra size in blocks has been removed" + default 0 + help + Since the support for auto calculation of the filesystem size has been + removed, this option is now useless and must be 0. + You may want to check that BR2_TARGET_ROOTFS_EXT2_BLOCKS matchs + your needs. + +config BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS_WRAP + bool + default y if BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS != 0 + select BR2_LEGACY + +config BR2_PACKAGE_SYSTEMD_KDBUS + bool "systemd-kdbus has been removed" + select BR2_LEGACY + help + --enable/disable-kdbus configure option has been removed since + systemd-231. + +config BR2_PACKAGE_POLARSSL + bool "polarssl has been removed" + select BR2_LEGACY + help + The polarssl crypto library has been removed since the 1.2.x + release branch is no longer maintained. Newer upstream + branches/releases (mbedtls) have API changes so they're not + drop-in replacements. + +config BR2_NBD_CLIENT + bool "nbd client option was renamed" + select BR2_LEGACY + select BR2_PACKAGE_NBD_CLIENT + help + The nbd client option has been renamed to BR2_PACKAGE_NBD_CLIENT. + +config BR2_NBD_SERVER + bool "nbd server option was renamed" + select BR2_LEGACY + select BR2_PACKAGE_NBD_SERVER + help + The nbd server option has been renamed to BR2_PACKAGE_NBD_SERVER. + +config BR2_PACKAGE_GMOCK + bool "gmock merged into gtest package" + select BR2_LEGACY + select BR2_PACKAGE_GTEST + select BR2_PACKAGE_GTEST_GMOCK + help + GMock is now a suboption of the GTest package. + +config BR2_KERNEL_HEADERS_4_8 + bool "kernel headers version 4.8.x are no longer supported" + select BR2_KERNEL_HEADERS_4_4 + select BR2_LEGACY + help + Version 4.8.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.4.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_3_18 + bool "kernel headers version 3.18.x are no longer supported" + select BR2_KERNEL_HEADERS_3_12 + select BR2_LEGACY + help + Version 3.18.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 3.12.x of the headers have been automatically + selected in your configuration. + +config BR2_GLIBC_VERSION_2_22 + bool "glibc 2.22 removed" + select BR2_LEGACY + help + Support for glibc version 2.22 has been removed. The current + default version has been selected instead. + +############################################################################### +comment "Legacy options removed in 2017.02" + +config BR2_PACKAGE_PERL_DB_FILE + bool "perl-db-file removed" + select BR2_LEGACY + select BR2_PACKAGE_BERKELEYDB + select BR2_PACKAGE_PERL + help + DB_File can be built as a core Perl module, so the separate + perl-db-file package has been removed. + +config BR2_KERNEL_HEADERS_4_7 + bool "kernel headers version 4.7.x are no longer supported" + select BR2_KERNEL_HEADERS_4_4 + select BR2_LEGACY + help + Version 4.7.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.4.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_4_6 + bool "kernel headers version 4.6.x are no longer supported" + select BR2_KERNEL_HEADERS_4_4 + select BR2_LEGACY + help + Version 4.6.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.4.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_4_5 + bool "kernel headers version 4.5.x are no longer supported" + select BR2_KERNEL_HEADERS_4_4 + select BR2_LEGACY + help + Version 4.5.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.4.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_3_14 + bool "kernel headers version 3.14.x are no longer supported" + select BR2_KERNEL_HEADERS_3_12 + select BR2_LEGACY + help + Version 3.14.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 3.12.x of the headers have been automatically + selected in your configuration. + +config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS + bool "musl-cross 1.1.12 toolchain removed" + select BR2_LEGACY + help + The support for the prebuilt toolchain based on the Musl C + library provided by the musl-cross project has been removed. + Upstream doesn't provide any prebuilt toolchain anymore, use the + Buildroot toolchain instead. + +config BR2_UCLIBC_INSTALL_TEST_SUITE + bool "uClibc tests now in uclibc-ng-test" + select BR2_LEGACY + select BR2_PACKAGE_UCLIBC_NG_TEST + help + The test suite of the uClibc C library has been moved into a + separate package, uclibc-ng-test. + +config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX + bool "Blackfin.uclinux.org 2014R1 toolchain removed" + select BR2_LEGACY + help + The ADI Blackfin toolchain has many bugs which are fixed in + more recent gcc and uClibc-ng releases. Use the Buildroot + toolchain instead. + +config BR2_PACKAGE_MAKEDEVS + bool "makedevs removed" + select BR2_LEGACY + help + The makedevs tool is part of busybox. The Buildroot fork + should not be used outside of the Buildroot infrastructure. + +config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A + bool "Arago ARMv7 2011.09 removed" + select BR2_LEGACY + help + The Arago toolchains are every old and not updated anymore. + +config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE + bool "Arago ARMv5 2011.09 removed" + select BR2_LEGACY + help + The Arago toolchains are every old and not updated anymore. + +config BR2_PACKAGE_SNOWBALL_HDMISERVICE + bool "snowball-hdmiservice removed" + select BR2_LEGACY + help + We no longer have support for the Snowball platform in + Buildroot, so this package was no longer useful. + +config BR2_PACKAGE_SNOWBALL_INIT + bool "snowball-init removed" + select BR2_LEGACY + help + We no longer have support for the Snowball platform in + Buildroot, so this package was no longer useful. + +config BR2_GDB_VERSION_7_9 + bool "gdb 7.9 has been removed" + select BR2_LEGACY + help + The 7.9 version of gdb has been removed. Use a newer version + instead. + +############################################################################### +comment "Legacy options removed in 2016.11" + +config BR2_PACKAGE_PHP_SAPI_CLI_CGI + bool "PHP CGI and CLI options are now seperate" + select BR2_PACKAGE_PHP_SAPI_CLI + select BR2_PACKAGE_PHP_SAPI_CGI + select BR2_LEGACY + help + The PHP Interface options have been split up into a + separate option for each interface. + +config BR2_PACKAGE_PHP_SAPI_CLI_FPM + bool "PHP CLI and FPM options are now separate" + select BR2_PACKAGE_PHP_SAPI_CLI + select BR2_PACKAGE_PHP_SAPI_FPM + select BR2_LEGACY + help + The PHP Interface options have been split up into a + separate option for each interface. + +config BR2_PACKAGE_WVSTREAMS + bool "wvstreams removed" + select BR2_LEGACY + help + wvstreams is not maintained anymore since about 2009. It also + doesn't build anymore with recent compilers (GCC 5+). + +config BR2_PACKAGE_WVDIAL + bool "wvdial removed" + select BR2_LEGACY + help + wvdial is not maintained anymore since about 2009. It also + doesn't build anymore with recent compilers (GCC 5+). + +config BR2_PACKAGE_WEBKITGTK24 + bool "webkitgtk 2.4.x removed" + select BR2_LEGACY + help + This legacy package only existed because some other packages + depended on that specific version of webkitgtk. However, the + other packages have been fixed. webkitgtk 2.4 is full of + security issues so it needs to be removed. + +config BR2_PACKAGE_TORSMO + bool "torsmo removed" + select BR2_LEGACY + help + torsmo has been unmaintained for a long time, and nobody + seems to be interested in it. + +config BR2_PACKAGE_SSTRIP + bool "sstrip removed" + select BR2_LEGACY + help + sstrip is unmaintained and potentially harmful. It doesn't + save so much compared to normal binutils strip, and there is + a big risk of binaries that don't work. Use normal strip + instead. + +config BR2_KERNEL_HEADERS_4_3 + bool "kernel headers version 4.3.x are no longer supported" + select BR2_KERNEL_HEADERS_4_1 + select BR2_LEGACY + help + Version 4.3.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.1.x of the headers have been automatically + selected in your configuration. + +config BR2_KERNEL_HEADERS_4_2 + bool "kernel headers version 4.2.x are no longer supported" + select BR2_KERNEL_HEADERS_4_1 + select BR2_LEGACY + help + Version 4.2.x of the Linux kernel headers are no longer + maintained upstream and are now removed. As an alternative, + version 4.1.x of the headers have been automatically + selected in your configuration. + +config BR2_PACKAGE_KODI_ADDON_XVDR + bool "kodi-addon-xvdr removed" + select BR2_LEGACY + help + According to the github project page: + https://github.com/pipelka/xbmc-addon-xvdr + this package is discontinued. + +config BR2_PACKAGE_IPKG + bool "ipkg removed" + select BR2_LEGACY + help + ipkg dates back to the early 2000s when Compaq started the + handhelds.org project and it hasn't seen development since 2006. + Use opkg as a replacement. + +config BR2_GCC_VERSION_4_7_X + bool "gcc 4.7.x support removed" + select BR2_LEGACY + help + Support for gcc version 4.7.x has been removed. The current + default version (4.9.x or later) has been selected instead. + +config BR2_BINUTILS_VERSION_2_24_X + bool "binutils version 2.24 support removed" + select BR2_LEGACY + help + Support for binutils version 2.24 has been removed. The + current default version (2.26 or later) has been selected + instead. + +config BR2_PACKAGE_WESTON_RPI + bool "Weston propietary RPI support is gone" + select BR2_LEGACY + help + Upstream decided the propietary (rpi-userland) weston composer + support wasn't worth the effort so it was removed. Switch to + the open VC4 support. + +config BR2_LINUX_KERNEL_TOOL_CPUPOWER + bool "linux-tool cpupower" + depends on BR2_LINUX_KERNEL + select BR2_LEGACY + select BR2_PACKAGE_LINUX_TOOLS_CPUPOWER + help + Linux tool cpupower option was renamed. + +config BR2_LINUX_KERNEL_TOOL_PERF + bool "linux-tool perf" + depends on BR2_LINUX_KERNEL + select BR2_LEGACY + select BR2_PACKAGE_LINUX_TOOLS_PERF + help + Linux tool perf option was renamed. + +config BR2_LINUX_KERNEL_TOOL_SELFTESTS + bool "linux-tool selftests" + depends on BR2_LINUX_KERNEL + select BR2_LEGACY + select BR2_PACKAGE_LINUX_TOOLS_SELFTESTS + help + Linux tool selftests option was renamed. + +config BR2_GCC_VERSION_4_8_ARC + bool "gcc arc option renamed" + select BR2_LEGACY + select BR2_GCC_VERSION_ARC + help + The option that selects the gcc version for the ARC + architecture has been renamed to BR2_GCC_VERSION_ARC. + +config BR2_KERNEL_HEADERS_4_0 + bool "kernel headers version 4.0.x are no longer supported" + select BR2_KERNEL_HEADERS_3_12 + select BR2_LEGACY + help + Version 4.0.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.12.x of the headers have been + automatically selected in your configuration. + +config BR2_KERNEL_HEADERS_3_19 + bool "kernel headers version 3.19.x are no longer supported" + select BR2_KERNEL_HEADERS_3_12 + select BR2_LEGACY + help + Version 3.19.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.12.x of the headers have been + automatically selected in your configuration. + +config BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS + bool "libevas-generic-loaders package removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.18, libevas-generic-loaders is now provided by the efl + package. + +config BR2_PACKAGE_ELEMENTARY + bool "elementary package removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.18, elementary is now provided by the efl package. + +config BR2_LINUX_KERNEL_CUSTOM_LOCAL + bool "Linux kernel local directory option removed" + help + The option to select a local directory as the source of the Linux + kernel has been removed. It hurts reproducibility of builds. + + In case you were using this option during development of your + Linux kernel, use the override mechanism instead. + +############################################################################### +comment "Legacy options removed in 2016.08" + +config BR2_PACKAGE_EFL_JP2K + bool "libevas jp2k loader has been removed" + select BR2_LEGACY + help + JP2K support in EFL requires openjpeg 1.x (libopenjpeg1.pc) + while Buildroot only packages openjpeg 2.x. Therefore, the + JP2K loader has been removed from EFL. + +config BR2_PACKAGE_SYSTEMD_COMPAT + bool "systemd compatibility libraries have been removed" + select BR2_LEGACY + help + The systemd option to enable the compatibility libraries has + been removed. Theses libraries have been useless since a few + version, and have been fully dropped from the source since + v230. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIVEADDER + bool "gst1-plugins-bad liveadder plugin removed" + select BR2_LEGACY + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER + help + The functionality of the liveadder plugin of the + gst1-plugins-bad package has been merged into audiomixer. + +config BR2_PACKAGE_LIBFSLVPUWRAP + bool "libfslvpuwrap has been renamed to imx-vpuwrap" + select BR2_LEGACY + select BR2_PACKAGE_IMX_VPUWRAP + help + The libfslvpuwrap has been renamed to match the renamed package. + +config BR2_PACKAGE_LIBFSLPARSER + bool "libfslparser has been renamed to imx-parser" + select BR2_LEGACY + select BR2_PACKAGE_IMX_PARSER + help + The libfslparser has been renamed to match the renamed package. + +config BR2_PACKAGE_LIBFSLCODEC + bool "libfslcodec has been renamed to imx-codec" + select BR2_LEGACY + select BR2_PACKAGE_IMX_CODEC + help + The libfslcodec has been renamed to match the renamed package. + +config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT + bool "FIT support in uboot-tools has been refactored" + select BR2_LEGACY + select BR2_PACKAGE_DTC + select BR2_PACKAGE_DTC_PROGRAMS + select BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT + select BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT + select BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE + help + This option has been removed in favor of a more fine-grained + configuration, which is recommended. Selecting this option + enables FIT and FIT signature support for the target packages. + It will also select the dtc and openssl packages. + +config BR2_PTHREADS_OLD + bool "linuxthreads (stable/old)" + select BR2_LEGACY + help + Linuxthreads have been reworked, BR2_PTHREADS_OLD is now + BR2_PTHREADS and the old BR2_PTHREADS - LT.new got removed. + +config BR2_BINUTILS_VERSION_2_23_X + bool "binutils 2.23 removed" + select BR2_LEGACY + help + Binutils 2.23 has been removed, using a newer version is + recommended. + +config BR2_TOOLCHAIN_BUILDROOT_EGLIBC + bool "eglibc support has been removed" + select BR2_LEGACY + help + The eglibc project no longer exists, as it has been merged + back into the glibc project. Therefore, support for eglibc + has been removed, and glibc should be used instead. + +config BR2_GDB_VERSION_7_8 + bool "gdb 7.8 has been removed" + select BR2_LEGACY + help + The 7.8 version of gdb has been removed. Use a newer version + instead. + +############################################################################### +comment "Legacy options removed in 2016.05" + +config BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL + bool "openvpn polarssl crypto backend removed" + select BR2_LEGACY + help + The OpenVPN polarssl crypto backend option has been removed. + Version from 2.3.10 onwards need polarssl >= 1.3.8 but aren't + compatible with mbedtls (polarssl) series 2.x which is the + version provided in buildroot. And both can't coexist. + It now uses OpenSSL as the only option. + + +config BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE + bool "nginx http spdy module removed" + select BR2_LEGACY + select BR2_PACKAGE_NGINX_HTTP_V2_MODULE + help + The ngx_http_spdy_module has been superseded by the + ngx_http_v2_module since nginx v1.9.5. The + ngx_http_v2_module modules has been automatically selected + in your configuration. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP + bool "gst1-plugins-bad rtp plugin moved to good" + select BR2_LEGACY + help + The rtp plugin has been moved from gst1-plugins-base to + gst1-plugins-good. + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPG123 + bool "gst1-plugins-bad mpg123 plugin moved to ugly" + select BR2_LEGACY + help + The mpg123 plugin has been moved from gst1-plugins-bad to + gst1-plugins-ugly. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC + bool "PowerPC Sourcery toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the PowerPC + architecture has been removed, as it was very old, not + maintained, and causing numerous build failures with modern + userspace packages. + +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC_E500V2 + bool "PowerPC Sourcery E500v2 toolchain has been removed" + select BR2_LEGACY + help + The Sourcery CodeBench toolchain for the PowerPC E500v2 + architecture has been removed, as it was very old, not + maintained, and causing numerous build failures with modern + userspace packages. + +config BR2_x86_i386 + bool "x86 i386 support removed" + select BR2_LEGACY + help + The support for the i386 processors of the x86 architecture + has been removed. + +config BR2_PACKAGE_QT5QUICK1 + bool "qt5quick1 package removed" + select BR2_LEGACY + help + The qt5quick1 package has been removed, since it was removed + from upstream starting from Qt 5.6. + +config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR + string "uboot custom patch dir has been removed" + help + The uboot custom patch directory option has been removed. Use + the improved BR2_TARGET_UBOOT_PATCH option instead. + +config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR_WRAP + bool + default y if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != "" + select BR2_LEGACY + +# Note: BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR is still referenced from +# boot/uboot/Config.in + +config BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID + bool "xf86-input-void removed" + select BR2_LEGACY + help + The xf86-input-void package has been removed, there's no need + for it in any modern (post-2007) xorg server. + +config BR2_KERNEL_HEADERS_3_17 + bool "kernel headers version 3.17.x are no longer supported" + select BR2_KERNEL_HEADERS_3_12 + select BR2_LEGACY + help + Version 3.17.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.12.x of the headers have been + automatically selected in your configuration. + +config BR2_GDB_VERSION_7_7 + bool "gdb 7.7 has been removed" + select BR2_LEGACY + help + The 7.7 version of gdb has been removed. Use a newer version + instead. + +config BR2_PACKAGE_FOOMATIC_FILTERS + bool "foomatic-filters" + select BR2_LEGACY + help + The foomatic-filters package was removed. + +config BR2_PACKAGE_SAMBA + bool "samba" + select BR2_LEGACY + help + The samba package was removed in favour of samba4 since the + 3.x series isn't supported by upstream any longer. + +config BR2_PACKAGE_KODI_WAVPACK + bool "wavpack" + select BR2_LEGACY + help + wavpack support was removed in favour of ffmpeg: + https://github.com/xbmc/xbmc/commit/7916902c9e6f7a523265594f3ad7f921f93f1cd4 + +config BR2_PACKAGE_KODI_RSXS + bool "rsxs support in Kodi was moved to an addon" + select BR2_LEGACY + select BR2_PACKAGE_KODI_SCREENSAVER_RSXS + help + rsxs support in Kodi was moved to an addon + +config BR2_PACKAGE_KODI_GOOM + bool "Goom support in Kodi was moved to an addon" + select BR2_LEGACY + select BR2_PACKAGE_KODI_VISUALISATION_GOOM + help + Goom support in Kodi was moved to an addon + +config BR2_PACKAGE_SYSTEMD_ALL_EXTRAS + bool "systemd all extras option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_XZ + select BR2_PACKAGE_LIBGCRYPT + help + The systemd option to enable "all extras" has been + removed. To get the same features, the libgcrypt and xz + package should now be enabled. + +config BR2_GCC_VERSION_4_5_X + bool "gcc 4.5.x has been removed" + select BR2_LEGACY + help + The 4.5.x version of gcc has been removed. Use a newer + version instead. + +config BR2_PACKAGE_SQLITE_READLINE + bool "sqlite command-line editing support was updated" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + select BR2_LEGACY + help + This option was removed in favour of the sqlite package + deciding itself depending on the enabled packages whether + command-line editing should be enabled, it also also takes + libedit into account. + +############################################################################### +comment "Legacy options removed in 2016.02" + +config BR2_PACKAGE_DOVECOT_BZIP2 + bool "bzip2 support option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_BZIP2 + help + Bzip2 support is built if the bzip2 package is selected. + +config BR2_PACKAGE_DOVECOT_ZLIB + bool "zlib support option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_ZLIB + help + Zlib support is built if the zlib package is selected. + +config BR2_PACKAGE_E2FSPROGS_FINDFS + bool "e2fsprogs findfs option has been removed" + select BR2_LEGACY + help + This option attempted to enable findfs capabilities from + e2fsprogs but has not worked since July 2015 (due to + packaging changes). One can use BusyBox's findfs support or + enable the BR2_PACKAGE_UTIL_LINUX_BINARIES option. + +config BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL + bool "openpowerlink debug option has been removed" + select BR2_LEGACY + help + This option depends on BR2_ENABLE_DEBUG which should not be used + by packages anymore. + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE + bool "openpowerlink package has been updated" + select BR2_LEGACY + select BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB + help + openpowerlink kernel modules are built if the + kernel stack library is selected. + +config BR2_PACKAGE_OPENPOWERLINK_LIBPCAP + bool "openpowerlink package has been updated" + select BR2_LEGACY + select BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB + help + The user space support has been split in two part: + - a monolitic user space library + - a user spae deamon driver + +config BR2_LINUX_KERNEL_SAME_AS_HEADERS + bool "using the linux headers version for the kernel has been removed" + select BR2_LEGACY + help + The option to use the version of the kernel headers for the + kernel to build has been removed. + + There is now the converse, better-suited and more versatile + option to use the kernel version for the linux headers. + +config BR2_PACKAGE_CUPS_PDFTOPS + bool "Pdftops support has been removed from Cups" + select BR2_PACKAGE_CUPS_FILTERS + select BR2_LEGACY + help + Pdftops support has been removed from the cups package + It is now part of the cups-filters package. + +config BR2_KERNEL_HEADERS_3_16 + bool "kernel headers version 3.16.x are no longer supported" + select BR2_KERNEL_HEADERS_3_12 + select BR2_LEGACY + help + Version 3.16.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.12.x of the headers have been + automatically selected in your configuration. + +config BR2_PACKAGE_PYTHON_PYXML + bool "python-pyxml package has been removed" + select BR2_LEGACY + help + PyXML is obsolete and its functionality is covered either via + native Python XML support or python-lxml package. + +# BR2_ENABLE_SSP is still referenced in Config.in (default in choice) +config BR2_ENABLE_SSP + bool "Stack Smashing protection now has different levels" + help + The protection offered by SSP can now be selected from different + protection levels. Be sure to review the SSP level in the build + options menu. + +config BR2_PACKAGE_DIRECTFB_CLE266 + bool "cle266 driver for directfb removed" + select BR2_LEGACY + help + The cle266 directfb driver support has been removed. + It doesn't build in the latest version and it's unlikely + anyone has any use for it. + +config BR2_PACKAGE_DIRECTFB_UNICHROME + bool "unichrome driver for directfb removed" + select BR2_LEGACY + help + The unichrome directfb driver support has been removed. + It doesn't build in the latest version and it's unlikely + anyone has any use for it. + +config BR2_PACKAGE_LIBELEMENTARY + bool "libelementary has been renamed to elementary" + select BR2_LEGACY + select BR2_PACKAGE_ELEMENTARY + help + The libelementary package has been renamed to match the upstream + name. + +config BR2_PACKAGE_LIBEINA + bool "libeina package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libeina is now provided by the efl package. + +config BR2_PACKAGE_LIBEET + bool "libeet package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libeet is now provided by the efl package. + +config BR2_PACKAGE_LIBEVAS + bool "libevas package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libevas is now provided by the efl package. + +config BR2_PACKAGE_LIBECORE + bool "libecore package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libecore is now provided by the efl package. + +config BR2_PACKAGE_LIBEDBUS + bool "libedbus package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libedbus is now provided by the efl package. + +config BR2_PACKAGE_LIBEFREET + bool "libefreet package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libefreet is now provided by the efl package. + +config BR2_PACKAGE_LIBEIO + bool "libeio package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libeio is now provided by the efl package. + +config BR2_PACKAGE_LIBEMBRYO + bool "libembryo package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libembryo is now provided by the efl package. + +config BR2_PACKAGE_LIBEDJE + bool "libedje package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libedje is now provided by the efl package. + +config BR2_PACKAGE_LIBETHUMB + bool "libethumb package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_EFL + help + With EFL 1.15, libethumb is now provided by the efl package. + +config BR2_PACKAGE_INFOZIP + bool "infozip option has been renamed to zip" + select BR2_LEGACY + select BR2_PACKAGE_ZIP + help + Info-Zip's Zip package has been renamed from infozip to zip, + to avoid ambiguities with Info-Zip's UnZip which has been added + in the unzip package. + +config BR2_BR2_PACKAGE_NODEJS_0_10_X + bool "nodejs 0.10.x option removed" + select BR2_LEGACY + select BR2_PACKAGE_NODEJS + help + nodejs 0.10.x option has been removed. 0.10.x is now + automatically chosen for ARMv5 architectures only and the latest + nodejs for all other supported architectures. The correct nodejs + version has been automatically selected in your configuration. + +config BR2_BR2_PACKAGE_NODEJS_0_12_X + bool "nodejs version 0.12.x has been removed" + select BR2_LEGACY + select BR2_PACKAGE_NODEJS + help + nodejs version 0.12.x has been removed. As an alternative, + the latest nodejs version has been automatically selected in + your configuration. + +config BR2_BR2_PACKAGE_NODEJS_4_X + bool "nodejs version 4.x has been removed" + select BR2_LEGACY + select BR2_PACKAGE_NODEJS + help + nodejs version 4.x has been removed. As an alternative, + the latest nodejs version has been automatically selected in + your configuration. + +############################################################################### +comment "Legacy options removed in 2015.11" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REAL + bool "gst1-plugins-bad real plugin has been removed" + select BR2_LEGACY + help + The real plugin from GStreamer 1 bad plugins has been + removed. + +config BR2_PACKAGE_MEDIA_CTL + bool "media-ctl package has been removed" + select BR2_LEGACY + select BR2_PACKAGE_LIBV4L + select BR2_PACKAGE_LIBV4L_UTILS + help + media-ctl source and developement have been moved to + v4l-utils since June 2014. For an up-to-date media-ctl + version select BR2_PACKAGE_LIBV4L and BR2_PACKAGE_LIBV4L_UTILS. + +config BR2_PACKAGE_SCHIFRA + bool "schifra package has been removed" + select BR2_LEGACY + help + Schifra package has been maked broken since 2014.11 release and + haven't been fixed since then. + +config BR2_PACKAGE_ZXING + bool "zxing option has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_ZXING_CPP + help + ZXing no longer provides the cpp bindings, it has been renamed to + BR2_PACKAGE_ZXING_CPP which uses a new upstream. + +# Since FreeRDP has new dependencies, protect this legacy to avoid the +# infamous "unmet direct dependencies" kconfig error. +config BR2_PACKAGE_FREERDP_CLIENT + bool "freerdp client option renamed" + depends on BR2_PACKAGE_FREERDP + select BR2_LEGACY + select BR2_PACKAGE_FREERDP_CLIENT_X11 + +config BR2_PACKAGE_BLACKBOX + bool "blackbox package has been removed" + select BR2_LEGACY + help + Upstream is dead and the package has been deprecated for + some time. There are other alternative maintained WMs. + +config BR2_KERNEL_HEADERS_3_0 + bool "kernel headers version 3.0.x are no longer supported" + select BR2_KERNEL_HEADERS_3_2 + select BR2_LEGACY + help + Version 3.0.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.2.x of the headers have been + automatically selected in your configuration. + +config BR2_KERNEL_HEADERS_3_11 + bool "kernel headers version 3.11.x are no longer supported" + select BR2_KERNEL_HEADERS_3_10 + select BR2_LEGACY + help + Version 3.11.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.10.x of the headers have been + automatically selected in your configuration. + +config BR2_KERNEL_HEADERS_3_13 + bool "kernel headers version 3.13.x are no longer supported" + select BR2_KERNEL_HEADERS_3_12 + select BR2_LEGACY + help + Version 3.13.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.12.x of the headers have been + automatically selected in your configuration. + +config BR2_KERNEL_HEADERS_3_15 + bool "kernel headers version 3.15.x are no longer supported" + select BR2_KERNEL_HEADERS_3_12 + select BR2_LEGACY + help + Version 3.15.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.12.x of the headers have been + automatically selected in your configuration. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI + bool "DirectFB example df_andi has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_BLTLOAD + bool "DirectFB example df_bltload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_CPULOAD + bool "DirectFB example df_cpuload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DATABUFFER + bool "DirectFB example df_databuffer has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DIOLOAD + bool "DirectFB example df_dioload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DOK + bool "DirectFB example df_dok has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_DRIVERTEST + bool "DirectFB example df_drivertest has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_FIRE + bool "DirectFB example df_fire has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_FLIP + bool "DirectFB example df_flip has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_FONTS + bool "DirectFB example df_fonts has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_INPUT + bool "DirectFB example df_input has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_JOYSTICK + bool "DirectFB example df_joystick has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_KNUCKLES + bool "DirectFB example df_knuckles has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_LAYER + bool "DirectFB example df_layer has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX + bool "DirectFB example df_matrix has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX_WATER + bool "DirectFB example df_matrix_water has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_NEO + bool "DirectFB example df_neo has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_NETLOAD + bool "DirectFB example df_netload has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_PALETTE + bool "DirectFB example df_palette has been removed" + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_PARTICLE + bool "DirectFB example df_particle has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_PORTER + bool "DirectFB example df_porter has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_STRESS + bool "DirectFB example df_stress has been removed" + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_TEXTURE + bool "DirectFB example df_texture has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO + bool "DirectFB example df_video has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO_PARTICLE + bool "DirectFB example df_video_particle has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_DIRECTFB_EXAMPLES_WINDOW + bool "DirectFB example df_window has been removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_EXAMPLES + help + The per-DirectFB example options have been removed. The + BR2_PACKAGE_DIRECTFB_EXAMPLES option now installs all + examples. + +config BR2_PACKAGE_KOBS_NG + bool "kobs-ng was replaced by imx-kobs" + select BR2_LEGACY + select BR2_PACKAGE_IMX_KOBS + help + The outdated kobs-ng has been replaced by the Freescale- + maintained imx-kobs package. + +config BR2_PACKAGE_SAWMAN + bool "sawman package removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_SAWMAN + help + This option has been removed because the sawman package no + longer exists: it was merged inside DirectFB itself. This + feature can now be enabled using the + BR2_PACKAGE_DIRECTFB_SAWMAN option. + +config BR2_PACKAGE_DIVINE + bool "divine package removed" + select BR2_LEGACY + select BR2_PACKAGE_DIRECTFB_DIVINE + help + This option has been removed because the divine package no + longer exists: it was merged inside DirectFB itself. This + feature can now be enabled using the + BR2_PACKAGE_DIRECTFB_DIVINE option. + +############################################################################### +comment "Legacy options removed in 2015.08" + +config BR2_PACKAGE_KODI_PVR_ADDONS + bool "Kodi PVR addon was split" + select BR2_LEGACY + select BR2_PACKAGE_KODI_PVR_ARGUSTV + select BR2_PACKAGE_KODI_PVR_DVBLINK + select BR2_PACKAGE_KODI_PVR_DVBVIEWER + select BR2_PACKAGE_KODI_PVR_FILMON + select BR2_PACKAGE_KODI_PVR_HTS + select BR2_PACKAGE_KODI_PVR_IPTVSIMPLE + select BR2_PACKAGE_KODI_PVR_MEDIAPORTAL_TVSERVER + select BR2_PACKAGE_KODI_PVR_MYTHTV + select BR2_PACKAGE_KODI_PVR_NEXTPVR + select BR2_PACKAGE_KODI_PVR_NJOY + select BR2_PACKAGE_KODI_PVR_PCTV + select BR2_PACKAGE_KODI_PVR_STALKER + select BR2_PACKAGE_KODI_PVR_VBOX + select BR2_PACKAGE_KODI_PVR_VDR_VNSI + select BR2_PACKAGE_KODI_PVR_VUPLUS + select BR2_PACKAGE_KODI_PVR_WMC + help + Kodi PVR addon was split into seperate modules + +config BR2_BINUTILS_VERSION_2_23_2 + bool "binutils 2.23 option renamed" + select BR2_LEGACY + help + Binutils 2.23.2 has been removed, using a newer version is + recommended. + +config BR2_BINUTILS_VERSION_2_24 + bool "binutils 2.24 option renamed" + select BR2_LEGACY + select BR2_BINUTILS_VERSION_2_24_X + help + The binutils version option has been renamed to match the + same patchlevel logic used by gcc. The new option is now + BR2_BINUTILS_VERSION_2_24_X. + +config BR2_BINUTILS_VERSION_2_25 + bool "binutils 2.25 option renamed" + select BR2_LEGACY + select BR2_BINUTILS_VERSION_2_25_X + help + The binutils version option has been renamed to match the + same patchlevel logic used by gcc. The new option is now + BR2_BINUTILS_VERSION_2_25_X. + +config BR2_PACKAGE_PERF + bool "perf option has been renamed" + select BR2_LEGACY + select BR2_LINUX_KERNEL_TOOL_PERF + help + The perf package has been moved as a Linux tools package, + and the option to enable it is now + BR2_LINUX_KERNEL_TOOL_PERF. + +config BR2_BINUTILS_VERSION_2_22 + bool "binutils 2.22 removed" + select BR2_LEGACY + help + Binutils 2.22 has been removed, using a newer version is + recommended. + +config BR2_PACKAGE_GPU_VIV_BIN_MX6Q + bool "gpu-viv-bin-mx6q" + select BR2_LEGACY + select BR2_PACKAGE_IMX_GPU_VIV + help + Vivante graphics libraries have been renamed to + BR2_PACKAGE_IMX_GPU_VIV to be aligned with upstream package + name. + +config BR2_PACKAGE_LIBSEMANAGE_PYTHON_BINDINGS + depends on BR2_PACKAGE_PYTHON + bool "libsemanage python bindings removed" + select BR2_LEGACY + help + This option has been removed, since the libsemanage Python + bindings on the target were not useful. + +config BR2_TARGET_UBOOT_NETWORK + bool "U-Boot custom network settings removed" + select BR2_LEGACY + help + U-Boot's custom network settings options have been removed. + +############################################################################### +comment "Legacy options removed in 2015.05" + +config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K + bool "jffs2 16kB erasesize NAND flash option renamed" + select BR2_LEGACY + select BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + help + The JFFS2 NAND flash options now longer include the page + size. + +config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K + bool "jffs2 128kB erasesize NAND flash option renamed" + select BR2_LEGACY + select BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + help + The JFFS2 NAND flash options now longer include the page + size. + +config BR2_PACKAGE_MONO_20 + bool "2.0/3.5 .Net Runtime" + select BR2_LEGACY + help + This option no longer exists, all versions of the .Net + runtime are now installed. + +config BR2_PACKAGE_MONO_40 + bool "4.0 .Net Runtime" + select BR2_LEGACY + help + This option no longer exists, all versions of the .Net + runtime are now installed. + +config BR2_PACKAGE_MONO_45 + bool "4.5 .Net Runtime" + select BR2_LEGACY + help + This option no longer exists, all versions of the .Net + runtime are now installed. + +config BR2_CIVETWEB_WITH_LUA + bool "civetweb lua option renamed" + select BR2_LEGACY + select BR2_PACKAGE_CIVETWEB_WITH_LUA + help + civetweb's lua option has been renamed to + BR2_PACKAGE_CIVETWEB_WITH_LUA to be aligned with how other + packages name options. + +config BR2_PACKAGE_TIFF_TIFF2PDF + bool "tiff utility-specific option removed" + select BR2_LEGACY + select BR2_PACKAGE_TIFF_UTILITIES + help + utility-specific options have been removed in favour of + the new option BR2_PACKAGE_TIFF_UTILITIES. + +config BR2_PACKAGE_TIFF_TIFFCP + bool "tiff utility-specific option removed" + select BR2_LEGACY + select BR2_PACKAGE_TIFF_UTILITIES + help + utility-specific options have been removed in favour of + the new option BR2_PACKAGE_TIFF_UTILITIES. + +config BR2_LINUX_KERNEL_EXT_RTAI_PATCH + bool "RTAI patch file path has been removed" + select BR2_LEGACY + help + This option has never worked, so it has been removed. + +config BR2_TARGET_GENERIC_PASSWD_DES + bool "Encoding passwords with DES has been removed" + select BR2_LEGACY + help + Paswords can now only be encoded with either of md5, sha256 or sha512. + The default is md5, which is stronger that DES (but still pretty weak). + +config BR2_PACKAGE_GTK2_THEME_HICOLOR + bool "hicolor (default theme) is a duplicate" + select BR2_LEGACY + select BR2_PACKAGE_HICOLOR_ICON_THEME + help + The option was just a duplicate of hicolor icon theme. + +config BR2_PACKAGE_VALGRIND_PTRCHECK + bool "valgrind's PTRCheck was renamed to SGCheck" + select BR2_LEGACY + select BR2_PACKAGE_VALGRIND_SGCHECK + help + PTRCheck was renamed to SGCheck in valgrind + +############################################################################### +comment "Legacy options removed in 2015.02" + +config BR2_PACKAGE_LIBGC + bool "libgc package removed" + select BR2_LEGACY + select BR2_PACKAGE_BDWGC + help + libgc has been removed because we have the same package under a + different name, bdwgc. + +config BR2_PACKAGE_WDCTL + bool "util-linux' wdctl option has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_UTIL_LINUX_WDCTL + help + util-linux' wdctl option has been renamed to BR2_PACKAGE_UTIL_LINUX_WDCTL + to be aligned with how the other options are named. + +config BR2_PACKAGE_UTIL_LINUX_ARCH + bool "util-linux' arch option has been removed" + select BR2_LEGACY + help + util-linux' arch was dropped in util-linux 2.23, in favor of + the coreutils version. + +config BR2_PACKAGE_UTIL_LINUX_DDATE + bool "util-linux' ddate option has been removed" + select BR2_LEGACY + help + util-linux' ddate was dropped in util-linux 2.23. + +config BR2_PACKAGE_RPM_BZIP2_PAYLOADS + bool "rpm's bzip2 payloads option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_BZIP2 + help + The bzip2 payloads option rely entirely on the dependant package bzip2. + So, you need to select it to enable this feature. + +config BR2_PACKAGE_RPM_XZ_PAYLOADS + bool "rpm's xz payloads option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_XZ + help + The xz payloads option rely entirely on the dependant package xz. + So, you need to select it to enable this feature. + +config BR2_PACKAGE_M4 + bool "m4 target package removed" + select BR2_LEGACY + help + The m4 target package has been removed, it's been + deprecated for some time now. + +config BR2_PACKAGE_FLEX_BINARY + bool "flex binary in target option removed" + select BR2_LEGACY + help + The flex binary in the target option has been removed. + It's been deprecated for some time now and is essentially a + development tool which isn't very useful in the target. + +config BR2_PACKAGE_BISON + bool "bison target package removed" + select BR2_LEGACY + help + The bison target package has been removed, it's been + deprecated for some time now and is essentially a development + tool which isn't very useful in the target. + +config BR2_PACKAGE_GOB2 + bool "gob2 target package removed" + select BR2_LEGACY + help + The gob2 target package has been removed, it's been + deprecated for some time now and was essentially useless + without a target toolchain. + +config BR2_PACKAGE_DISTCC + bool "distcc target package removed" + select BR2_LEGACY + help + The distcc target package has been removed, it's been + deprecated for some time now and was essentially useless + without a target toolchain. + +config BR2_PACKAGE_HASERL_VERSION_0_8_X + bool "haserl 0.8.x version removed" + select BR2_LEGACY + help + The 0.8.x version option for haserl has been removed since it + has been deprecated for some time now. + You should be able to use the 0.9.x version without issues. + +config BR2_PACKAGE_STRONGSWAN_TOOLS + bool "strongswan option has been removed" + select BR2_LEGACY + select BR2_PACKAGE_STRONGSWAN_PKI + select BR2_PACKAGE_STRONGSWAN_SCEP + help + The tools option has been removed upstream and the different tools + have been split between the pki and scep options, with others + deprecated. + +config BR2_PACKAGE_XBMC_ADDON_XVDR + bool "xbmc-addon-xvdr removed" + select BR2_LEGACY + help + According to the github project page: + https://github.com/pipelka/xbmc-addon-xvdr + this package is discontinued. + +config BR2_PACKAGE_XBMC_PVR_ADDONS + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_PVR_ADDONS + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_ALSA_LIB + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_ALSA_LIB + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_AVAHI + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_AVAHI + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_DBUS + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_DBUS + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_LIBBLURAY + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBBLURAY + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_GOOM + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_GOOM + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_RSXS + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_RSXS + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_LIBCEC + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBCEC + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_LIBMICROHTTPD + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBMICROHTTPD + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_LIBNFS + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBNFS + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_RTMPDUMP + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_RTMPDUMP + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_LIBSHAIRPLAY + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBSHAIRPLAY + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_LIBSMBCLIENT + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBSMBCLIENT + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_LIBTHEORA + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBTHEORA + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_LIBUSB + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBUSB + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_LIBVA + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_LIBVA + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PACKAGE_XBMC_WAVPACK + bool "xbmc options have been renamed" + select BR2_LEGACY + select BR2_PACKAGE_KODI_WAVPACK + help + The XBMC media center project was renamed to Kodi entertainment center + +config BR2_PREFER_STATIC_LIB + bool "static library option renamed" + select BR2_LEGACY + help + The BR2_PREFER_STATIC_LIB was renamed to BR2_STATIC_LIBS. It + highlights the fact that the option no longer "prefers" + static libraries, but "enforces" static libraries (i.e + shared libraries are completely unused). + + Take care of updating the type of libraries you want under the + "Build options" menu. + +############################################################################### +comment "Legacy options removed in 2014.11" + +config BR2_x86_generic + bool "x86 generic variant has been removed" + select BR2_LEGACY + help + The generic x86 CPU variant has been removed. Use another + CPU variant instead. + +config BR2_GCC_VERSION_4_4_X + bool "gcc 4.4.x has been removed" + select BR2_LEGACY + help + The 4.4.x version of gcc has been removed. Use a newer + version instead. + +config BR2_sparc_sparchfleon + bool "sparchfleon CPU has been removed" + select BR2_LEGACY + help + The sparchfleon CPU was only supported in a patched gcc 4.4 + version. Its support has been removed in favor of the leon3 + CPU starting from gcc 4.8.x. + +config BR2_sparc_sparchfleonv8 + bool "sparchfleonv8 CPU has been removed" + select BR2_LEGACY + help + The sparchfleonv8 CPU was only supported in a patched gcc + 4.4 version. Its support has been removed in favor of the + leon3 CPU starting from gcc 4.8.x. + +config BR2_sparc_sparcsfleon + bool "sparcsfleon CPU has been removed" + select BR2_LEGACY + help + The sparcsfleon CPU was only supported in a patched gcc 4.4 + version. Its support has been removed in favor of the leon3 + CPU starting from gcc 4.8.x. + +config BR2_sparc_sparcsfleonv8 + bool "sparcsfleonv8 CPU has been removed" + select BR2_LEGACY + help + The sparcsfleonv8 CPU was only supported in a patched gcc + 4.4 version. Its support has been removed in favor of the + leon3 CPU starting from gcc 4.8.x. + +config BR2_PACKAGE_XLIB_LIBPCIACCESS + bool "xlib-libpciaccess option has been renamed" + depends on BR2_PACKAGE_XORG7 + select BR2_LEGACY + select BR2_PACKAGE_LIBPCIACCESS + help + libpciaccess neither depends on X11 nor Xlib. Thus the + package has been renamed BR2_PACKAGE_LIBPCIACCESS + +config BR2_PACKAGE_LINUX_FIRMWARE_XC5000 + bool "Xceive xc5000 option has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_LINUX_FIRMWARE_XCx000 + help + The Xceive xc5000 option now also handles older firmwares from + Xceive (the xc4000 series), as well as new firmwares (the xc5000c) + from Cresta, who bought Xceive. + +config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 + bool "Chelsio T4 option has been renamed" + select BR2_LEGACY + select BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4 + help + The Chelsio T4 option BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 + has been renamed to BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4 + to better account for the fact that a T5 variant exists. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 + bool "BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 has been renamed" + select BR2_LEGACY + help + The option BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 was + renamed to BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_REV_7. You must + select it in: + Target packages -> Hardware handling -> + Firmware -> linux-firmware -> WiFi firmware -> + iwlwifi 3160/726x revision to use (revision 7) + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 + bool "BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 has been renamed" + select BR2_LEGACY + help + The option BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 was + renamed to BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_REV_8. You must + select it in: + Target packages -> Hardware handling -> + Firmware -> linux-firmware -> WiFi firmware -> + iwlwifi 3160/726x revision to use (revision 8) + +############################################################################### +comment "Legacy options removed in 2014.08" + +config BR2_PACKAGE_LIBELF + bool "libelf has been removed" + select BR2_PACKAGE_ELFUTILS + select BR2_LEGACY + help + The libelf package provided an old version of the libelf library + and is deprecated. The libelf library is now provided by the + elfutils package. + +config BR2_KERNEL_HEADERS_3_8 + bool "kernel headers version 3.8.x are no longer supported" + select BR2_KERNEL_HEADERS_3_4 + select BR2_LEGACY + help + Version 3.8.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.4.x of the headers have been + automatically selected in your configuration. + +config BR2_PACKAGE_GETTEXT_TOOLS + bool "support for gettext-tools on target has been removed" + select BR2_LEGACY + help + The option to install the gettext utilities on the target + has been removed. This is not necessary as Buildroot is not + designed to provide a full development environment on the + target. gettext tools should be used on the build machine + instead. + +config BR2_PACKAGE_PROCPS + bool "procps has been replaced by procps-ng" + select BR2_PACKAGE_PROCPS_NG + select BR2_LEGACY + help + The procps package has been replaced by the equivalent procps-ng. + +config BR2_BINUTILS_VERSION_2_20_1 + bool "binutils 2.20.1 has been removed" + select BR2_LEGACY + help + The 2.20.1 version of binutils has been removed. Use a newer + version instead. + +config BR2_BINUTILS_VERSION_2_21 + bool "binutils 2.21 has been removed" + select BR2_LEGACY + help + The 2.21 version of binutils has been removed. Use a newer + version instead. + +config BR2_BINUTILS_VERSION_2_23_1 + bool "binutils 2.23.1 has been removed" + select BR2_LEGACY + help + The 2.23.1 version of binutils has been removed. Use a newer + version instead. + +config BR2_UCLIBC_VERSION_0_9_32 + bool "uclibc 0.9.32 has been removed" + select BR2_LEGACY + help + The 0.9.32 version of uClibc has been removed. Use a newer + version instead. + +config BR2_GCC_VERSION_4_3_X + bool "gcc 4.3.x has been removed" + select BR2_LEGACY + help + The 4.3.x version of gcc has been removed. Use a newer + version instead. + +config BR2_GCC_VERSION_4_6_X + bool "gcc 4.6.x has been removed" + select BR2_LEGACY + help + The 4.6.x version of gcc has been removed. Use a newer + version instead. + +config BR2_GDB_VERSION_7_4 + bool "gdb 7.4 has been removed" + select BR2_LEGACY + help + The 7.4 version of gdb has been removed. Use a newer version + instead. + +config BR2_GDB_VERSION_7_5 + bool "gdb 7.5 has been removed" + select BR2_LEGACY + help + The 7.5 version of gdb has been removed. Use a newer version + instead. + +config BR2_BUSYBOX_VERSION_1_19_X + bool "busybox version selection has been removed" + select BR2_LEGACY + help + The possibility of selecting the Busybox version has been + removed. Use the latest version provided by the Busybox + package instead. + +config BR2_BUSYBOX_VERSION_1_20_X + bool "busybox version selection has been removed" + select BR2_LEGACY + help + The possibility of selecting the Busybox version has been + removed. Use the latest version provided by the Busybox + package instead. + +config BR2_BUSYBOX_VERSION_1_21_X + bool "busybox version selection has been removed" + select BR2_LEGACY + help + The possibility of selecting the Busybox version has been + removed. Use the latest version provided by the Busybox + package instead. + +config BR2_PACKAGE_LIBV4L_DECODE_TM6000 + bool "decode_tm6000" + select BR2_PACKAGE_LIBV4L_UTILS + select BR2_LEGACY + help + This libv4l option has been deprecated and replaced by a single + option to build all the libv4l utilities. + +config BR2_PACKAGE_LIBV4L_IR_KEYTABLE + bool "ir-keytable" + select BR2_PACKAGE_LIBV4L_UTILS + select BR2_LEGACY + help + This libv4l option has been deprecated and replaced by a single + option to build all the libv4l utilities. + +config BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE + bool "v4l2-compliance" + select BR2_PACKAGE_LIBV4L_UTILS + select BR2_LEGACY + help + This libv4l option has been deprecated and replaced by a single + option to build all the libv4l utilities. + +config BR2_PACKAGE_LIBV4L_V4L2_CTL + bool "v4l2-ctl" + select BR2_PACKAGE_LIBV4L_UTILS + select BR2_LEGACY + help + This libv4l option has been deprecated and replaced by a single + option to build all the libv4l utilities. + +config BR2_PACKAGE_LIBV4L_V4L2_DBG + bool "v4l2-dbg" + select BR2_PACKAGE_LIBV4L_UTILS + select BR2_LEGACY + help + This libv4l option has been deprecated and replaced by a single + option to build all the libv4l utilities. + +############################################################################### +comment "Legacy options removed in 2014.05" + +config BR2_PACKAGE_EVTEST_CAPTURE + bool "evtest-capture support removed (dropped since evtest 1.31)" + select BR2_LEGACY + help + Support for evtest-capture has been removed (dropped from + evtest package since version 1.31), use evemu package + instead. + +config BR2_KERNEL_HEADERS_3_6 + bool "kernel headers version 3.6.x are no longer supported" + select BR2_KERNEL_HEADERS_3_4 + select BR2_LEGACY + help + Version 3.6.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.4.x of the headers have been + automatically selected in your configuration. + +config BR2_KERNEL_HEADERS_3_7 + bool "kernel headers version 3.7.x are no longer supported" + select BR2_KERNEL_HEADERS_3_4 + select BR2_LEGACY + help + Version 3.7.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.4.x of the headers have been + automatically selected in your configuration. + +config BR2_PACKAGE_VALA + bool "vala target package has been removed" + select BR2_LEGACY + help + The 'vala' target package has been removed since it has been + deprecated for more than four buildroot releases. + Note: the host vala package still exists. + +config BR2_TARGET_TZ_ZONELIST + default BR2_PACKAGE_TZDATA_ZONELIST if BR2_PACKAGE_TZDATA_ZONELIST != "" + +config BR2_PACKAGE_TZDATA_ZONELIST + string "tzdata: the timezone list option has been renamed" + help + The option BR2_PACKAGE_TZDATA_ZONELIST has been renamed to + BR2_TARGET_TZ_ZONELIST, and moved to the "System configuration" + menu. You'll need to select BR2_TARGET_TZ_INFO. + +config BR2_PACKAGE_TZDATA_ZONELIST_WRAP + bool + default y if BR2_PACKAGE_TZDATA_ZONELIST != "" + select BR2_LEGACY + +config BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE + bool "Lua command-line editing none has been renamed" + select BR2_LEGACY + help + The BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE option has been + renamed to BR2_PACKAGE_LUA_EDITING_NONE. You will have to select + it in the corresponding choice. + +config BR2_PACKAGE_LUA_INTERPRETER_READLINE + bool "Lua command-line editing using readline has been renamed" + select BR2_LEGACY + help + The BR2_PACKAGE_LUA_INTERPRETER_READLINE option has been + renamed to BR2_PACKAGE_LUA_READLINE. You will have to select + it in the corresponding choice. + +config BR2_PACKAGE_LUA_INTERPRETER_LINENOISE + bool "Lua command-line editing using linenoise has been renamed" + select BR2_LEGACY + help + The BR2_PACKAGE_LUA_INTERPRETER_LINENOISE option has been + renamed to BR2_PACKAGE_LUA_LINENOISE. You will have to select + it in the corresponding choice. + +config BR2_PACKAGE_DVB_APPS_UTILS + bool "dvb-apps utilities now built by default" + select BR2_LEGACY + help + The dvb-apps utilities are now always built when the dvb-apps + package is selected. + +config BR2_KERNEL_HEADERS_SNAP + bool "Local Linux snapshot support removed" + select BR2_LEGACY + help + Support for using a custom snapshot to install the Linux + kernel headers has been removed. + +config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV + bool "/dev management by udev removed" + select BR2_LEGACY + help + The 'udev' package has been converted to a virtual package. + The providers for this feature are: 'eudev', 'systemd'. + + Therefore, if you are not using 'systemd' as init system, you + must choose 'Dynamic using eudev' in the '/dev management' + menu to get the same behaviour as in your old configuration. + + If you are using 'systemd', its internal implementation of + 'udev' will be used automatically. + + You must also check the packages depending on 'udev' are still + selected. + +config BR2_PACKAGE_UDEV + bool "udev is now a virtual package" + select BR2_LEGACY + select BR2_PACKAGE_HAS_UDEV + help + The 'udev' package has been converted to a virtual package. + The providers for this feature are: 'eudev', 'systemd'. + + Your old configuration refers to packages depending on 'udev', + either for build or at runtime. + + Check that a 'udev' provider is selected. If you are not using + 'systemd' as init system, 'eudev' should be selected, which is + the case if '/dev management' is set to 'Dynamic using eudev'. + + If you are using 'systemd', its internal implementation of 'udev' + is used. + +config BR2_PACKAGE_UDEV_RULES_GEN + bool "udev rules generation handled by provider" + select BR2_LEGACY + select BR2_PACKAGE_EUDEV if !BR2_INIT_SYSTEMD + select BR2_PACKAGE_EUDEV_RULES_GEN if !BR2_INIT_SYSTEMD + help + The 'udev' package has been converted to a virtual package. + The providers for this feature are: 'eudev', 'systemd'. + + If you are not using 'systemd' as init system, udev rules + generation will be handled by 'eudev'. Check that + '/dev management' is set to 'Dynamic using eudev' to get + the same behaviour as in your old configuration. + + If you are using 'systemd', it internal implementation of 'udev' + will generate the rules. + +config BR2_PACKAGE_UDEV_ALL_EXTRAS + bool "udev extras removed" + select BR2_LEGACY + help + The 'udev' package has been converted to a virtual package. + The providers for this feature are: 'eudev', 'systemd'. + + The option to enable the extra features of 'udev' (gudev, ...) + has been removed. These features are automatically enabled in + the 'udev' providers if the dependencies are selected. For + example, selecting 'libglib2' will trigger the build of gudev. + +config BR2_PACKAGE_XLIB_LIBPTHREAD_STUBS + bool "xlib-libpthread-stubs option has been renamed" + depends on BR2_PACKAGE_XORG7 + select BR2_LEGACY + select BR2_PACKAGE_LIBPTHREAD_STUBS + help + The pthread stubs neither depend on X11 nor Xlib. Thus the + package has been renamed BR2_PACKAGE_LIBPTHREAD_STUBS + +############################################################################### +comment "Legacy options removed in 2014.02" + +config BR2_sh2 + bool "sh2 support removed" + select BR2_LEGACY + help + Due to an inexistent user base and generally poor Linux + support, the support for the SH2 architecture was removed. + +config BR2_sh3 + bool "sh3 support removed" + select BR2_LEGACY + help + Due to an inexistent user base and generally poor Linux + support, the support for the SH3 architecture was removed. + +config BR2_sh3eb + bool "sh3eb support removed" + select BR2_LEGACY + help + Due to an inexistent user base and generally poor Linux + support, the support for the SH3eb architecture was removed. + +config BR2_KERNEL_HEADERS_3_1 + bool "kernel headers version 3.1.x are no longer supported" + select BR2_KERNEL_HEADERS_3_2 + select BR2_LEGACY + help + Version 3.1.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.2.x of the headers have been + automatically selected in your configuration. + +config BR2_KERNEL_HEADERS_3_3 + bool "kernel headers version 3.3.x are no longer supported" + select BR2_KERNEL_HEADERS_3_2 + select BR2_LEGACY + help + Version 3.3.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.2.x of the headers have been + automatically selected in your configuration. + +config BR2_KERNEL_HEADERS_3_5 + bool "kernel headers version 3.5.x are no longer supported" + select BR2_KERNEL_HEADERS_3_4 + select BR2_LEGACY + help + Version 3.5.x of the Linux kernel headers have been deprecated + for more than four buildroot releases and are now removed. + As an alternative, version 3.4.x of the headers have been + automatically selected in your configuration. + +config BR2_GDB_VERSION_7_2 + bool "gdb 7.2.x is no longer supported" + select BR2_GDB_VERSION_7_6 + select BR2_LEGACY + help + Version 7.2.x of gdb has been deprecated for more than four + buildroot releases and is now removed. As an alternative, gdb + 7.5.x has been automatically selected in your configuration. + +config BR2_GDB_VERSION_7_3 + bool "gdb 7.3.x is no longer supported" + select BR2_GDB_VERSION_7_6 + select BR2_LEGACY + help + Version 7.3.x of gdb has been deprecated for more than four + buildroot releases and is now removed. As an alternative, gdb + 7.5.x has been automatically selected in your configuration. + +config BR2_PACKAGE_CCACHE + bool "ccache target package has been removed" + select BR2_LEGACY + help + The 'ccache' target package has been removed since it has been + deprecated for more than four buildroot releases. + Note: using ccache for speeding up builds is still supported. + +config BR2_HAVE_DOCUMENTATION + bool "support for documentation on target has been removed" + select BR2_LEGACY + help + Support for documentation on target has been removed since it has + been deprecated for more than four buildroot releases. + +config BR2_PACKAGE_AUTOMAKE + bool "automake target package has been removed" + select BR2_LEGACY + help + The 'automake' target package has been removed since it has been + deprecated for more than four buildroot releases. + Note: the host automake still exists. + +config BR2_PACKAGE_AUTOCONF + bool "autoconf target package has been removed" + select BR2_LEGACY + help + The 'autoconf' target package has been removed since it has been + deprecated for more than four buildroot releases. + Note: the host autoconf still exists. + +config BR2_PACKAGE_XSTROKE + bool "xstroke has been removed" + select BR2_LEGACY + help + The 'xstroke' package has been removed since it has been + deprecated for more than four buildroot releases. + +config BR2_PACKAGE_LZMA + bool "lzma target package has been removed" + select BR2_LEGACY + help + The 'lzma' target package has been removed since it has been + deprecated for more than four buildroot releases. + Note: generating lzma-compressed rootfs images is still supported. + +config BR2_PACKAGE_TTCP + bool "ttcp has been removed" + select BR2_LEGACY + help + The 'ttcp' package has been removed since it has been + deprecated for more than four buildroot releases. + +config BR2_PACKAGE_LIBNFC_LLCP + bool "libnfc-llcp has been replaced by libllcp" + select BR2_LEGACY + select BR2_PACKAGE_LIBLLCP + help + The 'libnfc-llcp' package has been removed since upstream renamed + to 'libllcp'. We have added a new package for 'libllcp' and bumped + the version at the same time. + +config BR2_PACKAGE_MYSQL_CLIENT + bool "MySQL client renamed to MySQL" + select BR2_LEGACY + select BR2_PACKAGE_MYSQL + help + The option has been renamed BR2_PACKAGE_MYSQL + +config BR2_PACKAGE_SQUASHFS3 + bool "squashfs3 has been removed" + select BR2_LEGACY + select BR2_PACKAGE_SQUASHFS + help + The 'squashfs3' package has been removed since it has been + deprecated for more than four buildroot releases. Package + 'squashfs' (4) has been selected automatically as replacement. + +config BR2_TARGET_ROOTFS_SQUASHFS3 + bool "squashfs3 rootfs support has been removed" + select BR2_LEGACY + help + Together with the removal of the squashfs3 package, support + for squashfs3 root filesystems has been removed too. Squashfs + root filesystems will automatically use squashfs4 now. + +config BR2_PACKAGE_NETKITBASE + bool "netkitbase has been removed" + select BR2_LEGACY + help + The 'netkitbase' package has been removed since it has been + deprecated since 2012.11. This package provided 'inetd' + which is replaced by 'xinet' and 'ping' which is replaced by + 'busybox' or 'fping'. + +config BR2_PACKAGE_NETKITTELNET + bool "netkittelnet has been removed" + select BR2_LEGACY + help + The 'netkittelnet' package has been removed since it has + been deprecated since 2012.11. 'busybox' provides a telnet + client and should be used instead. + +config BR2_PACKAGE_LUASQL + bool "luasql has been replaced by luasql-sqlite3" + select BR2_PACKAGE_LUASQL_SQLITE3 + select BR2_LEGACY + help + The option has been renamed BR2_PACKAGE_LUASQL_SQLITE3. + +config BR2_PACKAGE_LUACJSON + bool "luacjson has been replaced by lua-cjson" + select BR2_PACKAGE_LUA_CJSON + select BR2_LEGACY + help + The option has been renamed BR2_PACKAGE_LUA_CJSON. + +############################################################################### +comment "Legacy options removed in 2013.11" + +config BR2_PACKAGE_LVM2_DMSETUP_ONLY + bool "lvm2's 'dmsetup only' option removed" + select BR2_LEGACY + help + The BR2_PACKAGE_LVM2_DMSETUP_ONLY was a negative option, which + led to problems with other packages that need the full lvm2 + suite. Therefore, the option has been replaced with the positive + BR2_PACKAGE_LVM2_STANDARD_INSTALL option. + +# Note: BR2_PACKAGE_LVM2_DMSETUP_ONLY is still referenced in package/lvm2/Config.in +# in order to automatically propagate old configs + +config BR2_PACKAGE_QT_JAVASCRIPTCORE + bool "qt javascriptcore option removed" + select BR2_LEGACY + help + The BR2_PACKAGE_QT_JAVASCRIPTCORE option was available to + force the activation or disabling of the JIT compiler in the + Qt Javascript interpreter. However, the JIT compiler is not + available for all architectures, so forcing its activation + does not always work. Moreover, Qt knows by itself for which + architectures JIT support is possible, and will + automatically enable it if possible. + + Therefore, this option was in fact useless, and causing + build problems when enabled on architectures for which the + JIT support was not available. It has been removed, and + there is no replacement: Qt will enable JIT at compile time + when possible. + +config BR2_PACKAGE_MODULE_INIT_TOOLS + bool "module-init-tools replaced by kmod" + select BR2_PACKAGE_KMOD + select BR2_PACKAGE_KMOD_TOOLS + select BR2_LEGACY + help + The 'module-init-tools' package has been removed, since it + has been depracated upstream and replaced by 'kmod'. + +config BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL + string "u-boot: the git repository URL option has been renamed" + help + The option BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL has + been renamed to BR2_TARGET_UBOOT_CUSTOM_REPO_URL. + +config BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL_WRAP + bool + default y if BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL != "" + select BR2_LEGACY + +# Note: BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL is still referenced from +# boot/uboot/Config.in + +config BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION + string "u-boot: the git repository version option has been renamed" + help + The option BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION has + been renamed to BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION. + +config BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION_WRAP + bool + default y if BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION != "" + select BR2_LEGACY + +# Note: BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION is still referenced from +# boot/uboot/Config.in + +config BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL + string "linux: the git repository URL option has been renamed" + help + The option BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL has + been renamed to + BR2_LINUX_KERNEL_CUSTOM_REPO_URL. + +config BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL_WRAP + bool + default y if BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL != "" + select BR2_LEGACY + +# Note: BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL is still referenced from +# linux/Config.in + +config BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION + string "linux: the git repository version option has been renamed" + help + The option BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION has + been renamed to + BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION. + +config BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION_WRAP + bool + default y if BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION != "" + select BR2_LEGACY + +# Note: BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION is still referenced from +# linux/Config.in + +############################################################################### +comment "Legacy options removed in 2013.08" + +config BR2_ARM_OABI + bool "ARM OABI support has been removed" + select BR2_LEGACY + help + The support for the ARM OABI was deprecated since a while, + and has been removed completely from Buildroot. It is also + deprecated in upstream gcc, since gcc 4.7. People should + switch to EABI instead, which should not be a problem as + long as you don't have pre-built OABI binaries in your + system that you can't recompile. + +config BR2_PACKAGE_DOSFSTOOLS_DOSFSCK + bool "dosfstools dosfsck renamed to fsck.fat" + select BR2_LEGACY + select BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT + help + dosfsck was renamed upstream to fsck.fat for consistency. + +config BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL + bool "dosfstools dosfslabel renamed to fatlabel" + select BR2_LEGACY + select BR2_PACKAGE_DOSFSTOOLS_FATLABEL + help + doslabel was renamed upstream to fatlabel for consistency. + +config BR2_PACKAGE_DOSFSTOOLS_MKDOSFS + bool "dosfstools mkdosfs renamed to mkfs.fat" + select BR2_LEGACY + select BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT + help + mkdosfs was renamed upstream to mkfs.fat for consistency. + +config BR2_ELF2FLT + bool "the elf2flt option has been renamed" + select BR2_LEGACY + help + The BR2_ELF2FLT option has been renamed to + BR2_PACKAGE_HOST_ELF2FLT due to the conversion of elf2flt to + the package infrastructure. + +config BR2_VFP_FLOAT + bool "the ARM VFP floating point option has been renamed" + select BR2_LEGACY + help + Due to a major refactoring of the floating-point handling of + the ARM architecture support, the BR2_VFP_FLOAT option has + been replaced with a choice of options that allows to select + between various VFP versions/capabilities. + +config BR2_PACKAGE_GCC_TARGET + bool "gcc on the target filesystem has been removed" + select BR2_LEGACY + help + The support for gcc in the target filesystem was deprecated + since a while, and has been removed completely from Buildroot. + See Buildroot's documentation for more explanations. + +config BR2_HAVE_DEVFILES + bool "development files in target filesystem has been removed" + select BR2_LEGACY + help + The installation of the development files in the target + filesystem was deprecated since a while, and has been removed + completely from Buildroot. + See Buildroot's documentation for more explanations. + +############################################################################### +comment "Legacy options removed in 2013.05" + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 + bool "Realtek 8192 replaced by Realtek 81xx" + select BR2_LEGACY + select BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX + help + Now covers the whole Realtek 81xx familly: 8188/8192. + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 + bool "Realtek 8712 replaced by Realtek 87xx" + select BR2_LEGACY + select BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX + help + Now covers the whole Realtek 87xx familly: 8712/8723. + +endmenu + +endif # !SKIP_LEGACY diff --git a/buildroot/DEVELOPERS b/buildroot/DEVELOPERS new file mode 100644 index 0000000..909b4ce --- /dev/null +++ b/buildroot/DEVELOPERS @@ -0,0 +1,1971 @@ +# Syntax: +# +# N: Firstname Lastname +# F: file pattern or directory +# F: file pattern or directory +# +# The "F" entries can be: +# +# - A directory, in which case all patches touching any file in this +# directory or its subdirectories will be CC'ed to the developer. +# - A pattern, in which case the pattern will be expanded, and then +# all files/directories (and their subdirectories) will be +# considered when matching against a patch +# +# Notes: +# +# - When a developer adds an "arch/Config.in." file to its list +# of files, he is considered a developer of this architecture. He +# will receive e-mail notifications about build failures occuring on +# this architecture. Not more than one e-mail per day is sent. +# - When a developer adds a directory that contains one or several +# packages, this developer will be notified when build failures +# occur. Not more than one e-mail per day is sent. +# - When a developer adds an "package/pkg-.mk" file to its list +# of files, he is considered interested by this package +# infrastructure, and will be CC'ed on all patches that add or +# modify packages that use this infrastructure. + +N: Abhilash Tuse +F: package/gstreamer1/gst1-rtsp-server/ + +N: Adam Duskett +F: package/audit/ +F: package/busybox/ +F: package/checkpolicy/ +F: package/cppdb/ +F: package/gstreamer1/gstreamer1/ +F: package/gstreamer1/gstreamer1-mm/ +F: package/gstreamer1/gst1-plugins-bad/ +F: package/gstreamer1/gst1-plugins-base/ +F: package/gstreamer1/gst1-plugins-good/ +F: package/gstreamer1/gst1-plugins-ugly/ +F: package/gstreamer1/gst1-vaapi/ +F: package/imx-usb-loader/ +F: package/janus-gateway/ +F: package/json-for-modern-cpp/ +F: package/libcpprestsdk/ +F: package/libressl/ +F: package/libselinux/ +F: package/libsemanage/ +F: package/libsepol/ +F: package/nginx-naxsi/ +F: package/policycoreutils/ +F: package/python-mutagen/ +F: package/restorecond/ +F: package/refpolicy/ +F: package/selinux-python/ +F: package/semodule-utils/ +F: package/setools/ +F: package/sngrep/ + +N: Adrian Perez de Castro +F: package/libepoxy/ +F: package/webkitgtk/ + +N: Adrien Gallouët +F: package/glorytun/ + +N: Aleksander Morgado +F: package/libmbim/ +F: package/libqmi/ +F: package/modem-manager/ + +N: Alex Suykov +F: package/vboot-utils/ + +N: Alexander Clouter +F: package/odhcp6c/ + +N: Alexander Dahl +F: package/fastd/ +F: package/libuecc/ +F: package/putty/ + +N: Alexander Lukichev +F: package/openpgm/ + +N: Alexander Mukhin +F: package/hostapd/ + +N: Alexander Varnin +F: package/liblog4c-localtime/ + +N: Alexandre Belloni +F: package/tz/ + +N: Alexandre Esse +F: package/kvazaar/ +F: package/v4l2loopback/ + +N: Alistair Francis +F: package/xen/ + +N: Alvaro G. M +F: package/dcron/ +F: package/libxmlrpc/ +F: package/python-docopt/ + +N: Anders Darander +F: package/ktap/ + +N: André Hentschel +F: package/azure-iot-sdk-c/ +F: package/openal/ +F: package/p7zip/ +F: package/wine/ + +N: Andrey Smirnov +F: package/python-backports-shutil-get-terminal-size/ +F: package/python-decorator/ +F: package/python-ipython-genutils/ +F: package/python-pathlib2/ +F: package/python-pickleshare/ +F: package/python-scandir/ +F: package/python-simplegeneric/ +F: package/python-systemd/ +F: package/python-traitlets/ +F: package/zstd/ + +N: Andrey Yurovsky +F: package/rauc/ + +N: Andy Kennedy +F: package/libunwind/ + +N: Angelo Compagnucci +F: package/i2c-tools/ +F: package/mono/ +F: package/mono-gtksharp3/ +F: package/monolite/ +F: package/python-can/ +F: package/python-pillow/ +F: package/python-pydal/ +F: package/python-web2py/ +F: package/sysdig/ + +N: Antony Pavlov +F: package/lsscsi/ + +N: Anthony Viallard +F: package/gnuplot/ + +N: Antoine Ténart +F: package/wf111/ + +N: ARC Maintainers +F: arch/Config.in.arc + +N: Ariel D'Alessandro +F: package/axfsutils/ +F: package/mali-t76x/ + +N: Arnaud Aujon +F: package/espeak/ + +N: Arnout Vandecappelle +F: package/arp-scan/ +F: package/freescale-imx/firmware-imx/ +F: package/freescale-imx/imx-lib/ +F: package/gstreamer/gst-fsl-plugins/ +F: package/lua-bit32/ +F: package/owfs/ +F: package/python-bottle/ +F: package/sqlcipher/ +F: package/stress/ + +N: Ash Charles +F: package/pru-software-support/ +F: package/ti-cgt-pru/ + +N: Assaf Inbal +F: package/lbase64/ +F: package/luabitop/ +F: package/luacrypto/ +F: package/luaexpatutils/ +F: package/luaposix/ +F: package/luasec/ +F: package/lua-ev/ +F: package/orbit/ + +N: Bartosz Bilas +F: package/qt5/qt5scxml/ + +N: Bartosz Golaszewski +F: package/autoconf-archive/ +F: package/doxygen/ +F: package/libgpiod/ +F: package/libserialport/ +F: package/libsigrok/ +F: package/libsigrokdecode/ +F: package/libzip/ +F: package/pulseview/ +F: package/sigrok-cli/ + +N: Baruch Siach +F: package/daemon/ +F: package/dropbear/ +F: package/ebtables/ +F: package/i2c-tools/ +F: package/libcurl/ +F: package/libpcap/ +F: package/openipmi/ +F: package/socat/ +F: package/strace/ +F: package/tcpdump/ +F: package/ti-uim/ +F: package/uhubctl/ + +N: Ben Boeckel +F: package/taskd/ + +N: Benjamin Kamath +F: package/lapack/ + +N: Bernd Kuhls +F: package/alsa-lib/ +F: package/alsa-utils/ +F: package/apache/ +F: package/apr/ +F: package/apr-util/ +F: package/bcg729/ +F: package/bluez-tools/ +F: package/boinc/ +F: package/clamav/ +F: package/dovecot/ +F: package/dovecot-pigeonhole/ +F: package/dtv-scan-tables/ +F: package/eudev/ +F: package/exim/ +F: package/fetchmail/ +F: package/freeswitch/ +F: package/freeswitch-mod-bcg729/ +F: package/ffmpeg/ +F: package/ghostscript/ +F: package/giflib/ +F: package/glmark2/ +F: package/hdparm/ +F: package/jsoncpp/ +F: package/kodi* +F: package/lame/ +F: package/leafnode2/ +F: package/libaacs/ +F: package/libasplib/ +F: package/libass/ +F: package/libbdplus/ +F: package/libbluray/ +F: package/libbroadvoice/ +F: package/libcdio/ +F: package/libcec/ +F: package/libcodec2/ +F: package/libcrossguid/ +F: package/libdcadec/ +F: package/libdrm/ +F: package/libdvbcsa/ +F: package/libdvdcss/ +F: package/libdvdnav/ +F: package/libdvdread/ +F: package/libebur128/ +F: package/libfreeglut/ +F: package/libg7221/ +F: package/libglew/ +F: package/libglfw/ +F: package/libglu/ +F: package/libhdhomerun/ +F: package/libilbc/ +F: package/libldns/ +F: package/libmicrohttpd/ +F: package/libminiupnpc/ +F: package/libnatpmp/ +F: package/libnpth/ +F: package/libogg/ +F: package/libopenh264/ +F: package/libpciaccess/ +F: package/libplatform/ +F: package/libpng/ +F: package/libsidplay2/ +F: package/libsilk/ +F: package/libsndfile/ +F: package/libsoil/ +F: package/libsoundtouch/ +F: package/libsquish/ +F: package/liburiparser/ +F: package/libva/ +F: package/libva-intel-driver/ +F: package/libva-utils/ +F: package/libvorbis/ +F: package/libvpx/ +F: package/libyuv/ +F: package/mesa3d/ +F: package/minidlna/ +F: package/mjpg-streamer/ +F: package/mplayer/ +F: package/perl-crypt-openssl-random/ +F: package/perl-crypt-openssl-rsa/ +F: package/perl-digest-sha1/ +F: package/perl-encode-detect/ +F: package/perl-encode-locale/ +F: package/perl-file-listing/ +F: package/perl-html-parser/ +F: package/perl-html-tagset/ +F: package/perl-http-cookies/ +F: package/perl-http-daemon/ +F: package/perl-http-date/ +F: package/perl-http-message/ +F: package/perl-http-negotiate/ +F: package/perl-io-html/ +F: package/perl-lwp-mediatypes/ +F: package/perl-mail-dkim/ +F: package/perl-mailtools/ +F: package/perl-mime-base64/ +F: package/perl-net-dns/ +F: package/perl-net-http/ +F: package/perl-netaddr-ip/ +F: package/perl-time-hires/ +F: package/perl-timedate/ +F: package/perl-uri/ +F: package/perl-www-robotrules/ +F: package/pixman/ +F: package/pngquant/ +F: package/pound/ +F: package/pure-ftpd/ +F: package/python-couchdb/ +F: package/python-cssutils/ +F: package/python-futures/ +F: package/python-mwclient/ +F: package/python-mwscrape/ +F: package/python-mwscrape2slob/ +F: package/python-mako/ +F: package/python-oauthlib/ +F: package/python-pyicu/ +F: package/python-pylru/ +F: package/python-requests-oauthlib/ +F: package/python-slob/ +F: package/rtmpdump/ +F: package/samba4/ +F: package/softether/ +F: package/taglib/ +F: package/tinyxml2/ +F: package/tor/ +F: package/transmission/ +F: package/tvheadend/ +F: package/unixodbc/ +F: package/vdr/ +F: package/vdr-plugin-vnsiserver/ +F: package/vlc/ +F: package/vnstat/ +F: package/waylandpp/ +F: package/x11r7/ +F: package/x264/ +F: package/x265/ +F: package/znc/ + +N: Biagio Montaruli +F: board/acmesystems/ +F: configs/acmesystems_* + +N: Bimal Jacob +F: package/nginx-upload/ + +N: Bogdan Radulescu +F: package/iftop/ +F: package/ncdu/ + +N: Brock Williams +F: package/pdmenu/ + +N: Bryan Brinsko +F: package/pps-tools/ + +N: Carlo Caione +F: package/sunxi-boards/ + +N: Carlos Santos +F: package/gtest/ +F: package/libpam-radius-auth/ +F: package/libpam-tacplus/ +F: package/perl-file-util/ +F: package/util-linux/ + +N: Carsten Schoenert +F: package/dvbsnoop/ +F: package/libdvbsi/ +F: package/libsvg/ +F: package/libsvg-cairo/ + +N: Chakra Divi +F: board/friendlyarm/nanopi-m1 +F: board/friendlyarm/nanopi-m1-plus +F: board/olimex/a13_olinuxino +F: board/orangepi/orangepi-plus +F: configs/nanopi_m1_defconfig +F: configs/nanopi_m1_plus_defconfig +F: configs/olimex_a13_olinuxino_defconfig +F: configs/orangepi_plus_defconfig + +N: Chris Packham +F: package/eventlog/ +F: package/micropython/ +F: package/micropython-lib/ +F: package/syslog-ng/ + +N: Christian Kellermann +F: package/python-pylibftdi/ + +N: Christian Stewart +F: linux/linux-ext-aufs.mk +F: package/aufs/ +F: package/aufs-util/ +F: package/batman-adv/ +F: package/docker-containerd/ +F: package/docker-engine/ +F: package/docker-proxy/ +F: package/mosh/ +F: package/rtl8821au/ +F: package/runc/ + +N: Christophe Vu-Brugier +F: package/drbd-utils/ +F: package/iotop/ +F: package/python-configshell-fb/ +F: package/python-rtslib-fb/ +F: package/python-urwid/ +F: package/targetcli-fb/ + +N: Clayton Shotwell +F: package/audit/ +F: package/checkpolicy/ +F: package/cpio/ +F: package/libcgroup/ +F: package/libee/ +F: package/libestr/ +F: package/liblogging/ +F: package/libselinux/ +F: package/libsemanage/ +F: package/libsepol/ +F: package/policycoreutils/ +F: package/ustr/ + +N: Corentin Guillevic +F: package/libloki/ + +N: Cédric Chépied +F: package/znc/ + +N: Cyril Bur +F: arch/Config.in.powerpc +F: package/kvm-unit-tests + +N: Dagg Stompler +F: package/libamcodec/ +F: package/odroid-mali/ +F: package/odroid-scripts/ + +N: Damien Lanson +F: package/libvdpau/ +F: package/log4cpp/ + +N: Daniel Nyström +F: package/e2tools/ + +N: Daniel Price +F: package/nodejs/ +F: package/redis/ + +N: Daniel Sangue +F: package/libftdi1/ + +N: Danomi Manchego +F: package/cjson/ +F: package/jq/ +F: package/libwebsockets/ +F: package/ljsyscall/ +F: package/lua-cjson/ +F: package/luaexpat/ +F: package/xinetd/ + +N: David Bachelart +F: package/ccrypt/ +F: package/dos2unix/ +F: package/ipmiutil/ +F: package/jsmn/ +F: package/python-daemon/ +F: package/sslh/ +F: package/udpxy/ + +N: David Bender +F: package/benejson/ +F: package/cgic/ +F: package/freeradius-client/ +F: package/openldap/ + +N: David du Colombier <0intro@gmail.com> +F: package/x264/ + +N: David Graziano +F: package/libcsv/ + +N: David Lechner +F: board/lego/ev3/ +F: configs/lego_ev3_defconfig +F: linux/linux-ext-ev3dev-linux-drivers.mk +F: package/ev3dev-linux-drivers/ + +N: Davide Viti +F: package/flann/ +F: package/python-paho-mqtt/ +F: package/qhull/ +F: package/tcllib/ + +N: Denis Bodor +F: package/libstrophe/ + +N: Dimitrios Siganos +F: package/wireless-regdb/ + +N: Dominik Faessler +F: package/logsurfer/ +F: package/python-id3/ + +N: Doug Kehn +F: package/nss-pam-ldapd/ +F: package/sp-oops-extract/ +F: package/unscd/ + +N: Dushara Jayasinghe +F: package/prosody/ + +N: Ed Swierk +F: package/xxhash/ + +N: Eric Le Bihan +F: docs/manual/adding-packages-meson.txt +F: package/adwaita-icon-theme/ +F: package/cargo-bin/ +F: package/cargo/ +F: package/darkhttpd/ +F: package/eudev/ +F: package/execline/ +F: package/hicolor-icon-theme/ +F: package/jemalloc/ +F: package/meson/ +F: package/ninja/ +F: package/rust-bin/ +F: package/rust/ +F: package/s6/ +F: package/s6-dns/ +F: package/s6-linux-init/ +F: package/s6-linux-utils/ +F: package/s6-networking/ +F: package/s6-portable-utils/ +F: package/s6-rc/ +F: package/skalibs/ +F: package/smack/ +F: package/xvisor/ + +N: Eric Limpens +F: package/pifmrds/ +F: package/ympd/ + +N: Erico Nunes +F: package/acpica/ +F: package/acpitool/ +F: package/efibootmgr/ +F: package/efivar/ +F: package/fwts/ +F: package/spi-tools/ +F: package/xdotool/ +F: configs/pc_x86_64_* + +N: Erik Stromdahl +F: package/mxsldr/ + +N: Ernesto L. Williams Jr +F: package/szip/ + +N: Evan Zelkowitz +F: package/sdl_gfx/ + +N: Ezequiel Garcia +F: board/ci20/ +F: configs/ci20_defconfig +F: arch/Config.in.nios2 +F: package/fio/ +F: package/iptraf-ng/ +F: package/jimtcl/ +F: package/mimic/ +F: package/nodm/ +F: package/openbox/ +F: package/rtl8723bs/ +F: package/supertuxkart/ + +N: Fabio Estevam +F: board/warp7/ +F: configs/freescale_imx* +F: configs/imx23evk_defconfig +F: configs/imx6-sabre* +F: configs/imx6slevk_defconfig +F: configs/imx6sx-sdb_defconfig +F: configs/imx6ulevk_defconfig +F: configs/imx6ulpico_defconfig +F: configs/imx7dpico_defconfig +F: configs/mx25pdk_defconfig +F: configs/mx51evk_defconfig +F: configs/mx53loco_defconfig +F: configs/mx6cubox_defconfig +F: configs/mx6sx_udoo_neo_defconfig +F: configs/mx6udoo_defconfig +F: configs/wandboard_defconfig +F: configs/warp7_defconfig +F: package/atest/ +F: package/kmscube/ + +N: Fabio Porcedda +F: package/netsurf-buildsystem/ + +N: Fabrice Fontaine +F: package/domoticz/ +F: package/libmediaart/ +F: package/libmaxminddb/ +F: package/openzwave/ + +N: Fabrice Fontaine +F: package/alljoyn/ +F: package/alljoyn-base/ +F: package/alljoyn-tcl/ +F: package/alljoyn-tcl-base/ +F: package/boinc/ +F: package/flatbuffers/ +F: package/gtksourceview/ +F: package/gssdp/ +F: package/gupnp/ +F: package/gupnp-dlna/ +F: package/gupnp-tools/ +F: package/hiredis/ +F: package/igd2-for-linux/ +F: package/libupnp/ +F: package/libupnp18/ +F: package/minissdpd/ +F: package/motion/ +F: package/rygel/ +F: package/safeclib/ +F: package/tinycbor/ +F: package/tinydtls/ + +N: Floris Bos +F: package/ipmitool/ +F: package/odhcploc/ + +N: Francisco Gonzalez +F: package/ser2net/ + +N: Francois Perrad +F: board/olimex/a20_olinuxino +F: configs/olimex_a20_olinuxino_* +F: package/4th/ +F: package/botan/ +F: package/dado/ +F: package/ficl/ +F: package/gdbm/ +F: package/libtomcrypt/ +F: package/libtommath/ +F: package/libump/ +F: package/linenoise/ +F: package/ljlinenoise/ +F: package/lpeg/ +F: package/lpty/ +F: package/lrandom/ +F: package/lsqlite3/ +F: package/lua* +F: package/lunit/ +F: package/lzlib/ +F: package/moarvm/ +F: package/perl* +F: package/pkg-perl.mk +F: package/pkg-luarocks.mk +F: package/qemu/ +F: package/sdl2_mixer/ +F: package/sdl2_net/ +F: package/tekui/ +F: package/wsapi-fcgi/ +F: package/wsapi-xavante/ +F: utils/scancpan + +N: Frank Hunleth +F: package/am335x-pru-package/ +F: package/libconfuse/ +F: package/libdmtx/ +F: package/libsodium/ +F: package/php-amqp/ +F: package/python-cherrypy/ +F: package/rabbitmq-server/ +F: package/sane-backends/ +F: package/ucl/ +F: package/upx/ +F: package/zxing-cpp/ + +N: Gaël Portay +F: package/qt5/qt5virtualkeyboard/ +F: package/qt5/qt5webengine/ +F: package/qt5/qt5webkit-examples/ + +N: Gary Bisson +F: board/boundarydevices/ +F: configs/nitrogen* +F: package/freescale-imx/ +F: package/gstreamer1/gst1-imx/ +F: package/libimxvpuapi/ +F: package/mfgtools/ +F: package/sshpass/ +F: package/x11r7/xdriver_xf86-video-imx-viv/ + +N: Geoff Levand +F: package/flannel/ + +N: Geoffrey Ragot +F: package/python-pycli/ +F: package/python-pyyaml/ + +N: Gilles Talis +F: package/fdk-aac/ +F: package/httping/ +F: package/iozone/ +F: package/leptonica/ +F: package/ocrad/ +F: package/tesseract-ocr/ +F: package/webp/ + +N: Gregory Dymarek +F: package/ding-libs/ +F: package/gengetopt/ +F: package/janus-gateway/ +F: package/libnice/ +F: package/libsrtp/ +F: package/libwebsock/ +F: package/sofia-sip/ + +N: Guillaume Gardet +F: package/c-icap/ +F: package/c-icap-modules/ +F: package/sdl2/ + +N: Guillaume William Brs +F: package/liquid-dsp/ + +N: Guo Ren +F: arch/Config.in.csky +F: board/csky/ +F: configs/csky_* + +N: Gwenhael Goavec-Merou +F: package/gnuradio/ +F: package/gqrx/ +F: package/gr-osmosdr/ +F: package/libusbgx/ +F: package/python-cheetah/ +F: package/python-markdown/ +F: package/python-pyqt/ +F: package/python-remi/ +F: package/python-sip/ + +N: Henrique Camargo +F: package/json-glib/ + +N: Hiroshi Kawashima +F: package/gauche/ +F: package/gmrender-resurrect/ +F: package/squeezelite/ + +N: Ian Haylock +F: package/python-rpi-gpio/ + +N: Ignacy Gawędzki +F: package/angularjs/ + +N: Ilias Apalodimas +F: package/keepalived/ + +N: Ismael Luceno +F: package/axel/ + +N: Jagan Teki +F: board/bananapi/ +F: board/engicam/ +F: board/friendlyarm/nanopi-a64/ +F: board/friendlyarm/nanopi-neo2/ +F: board/olimex/a64-olinuxino/ +F: board/orangepi/orangepi-pc2/ +F: board/orangepi/orangepi-prime/ +F: board/orangepi/orangepi-win/ +F: board/orangepi/orangepi-zero-plus2/ +F: board/pine64/ +F: configs/bananapi_m1_defconfig +F: configs/bananapi_m64_defconfig +F: configs/friendlyarm_nanopi_a64_defconfig +F: configs/friendlyarm_nanopi_neo2_defconfig +F: configs/olimex_a64_olinuxino_defconfig +F: configs/orangepi_pc2_defconfig +F: configs/orangepi_prime_defconfig +F: configs/orangepi_win_defconfig +F: configs/orangepi_zero_plus2_defconfig +F: configs/pine64_defconfig +F: configs/pine64_sopine_defconfig +F: configs/engicam_imx6qdl_icore_defconfig +F: configs/engicam_imx6qdl_icore_qt5_defconfig +F: configs/engicam_imx6qdl_icore_rqs_defconfig +F: configs/engicam_imx6ul_geam_defconfig +F: configs/engicam_imx6ul_isiot_defconfig + +N: James Knight +F: package/atkmm/ +F: package/cairomm/ +F: package/google-material-design-icons/ +F: package/glibmm/ +F: package/gtkmm3/ +F: package/libpqxx/ +F: package/pangomm/ +F: package/rpm/ +F: package/yad/ + +N: Jan Heylen +F: package/opentracing-cpp/ + +N: Jan Kraval +F: board/orangepi/orangepi-lite +F: configs/orangepi_lite_defconfig + +N: Jan Pedersen +F: package/zip/ + +N: Jan Viktorin +F: package/python-pexpect/ +F: package/python-ptyprocess/ +F: package/zynq-boot-bin/ + +N: Jarkko Sakkinen +F: package/quota/ + +N: Jason Pruitt +F: package/librtlsdr/ + +N: Jens Rosenboom +F: package/sl/ + +N: Jens Zettelmeyer +F: package/batctl/ + +N: Jeremy Rosen +F: package/fxload/ + +N: Joel Stanley +F: package/pdbg/ +F: board/qemu/ppc64le-pseries/ +F: configs/qemu_ppc64le_pseries_defconfig + +N: Joseph Kogut +F: package/gconf/ +F: package/python-raven/ +F: package/python-schedule/ +F: package/python-websockets/ +F: package/python-xlib/ + +N: Johan Derycke +F: package/python-libconfig/ + +N: Johan Oudinet +F: package/ejabberd/ +F: package/erlang-goldrush/ +F: package/erlang-jiffy/ +F: package/erlang-lager/ +F: package/erlang-p1-cache-tab/ +F: package/erlang-p1-iconv/ +F: package/erlang-p1-oauth2/ +F: package/erlang-p1-sip/ +F: package/erlang-p1-stringprep/ +F: package/erlang-p1-stun/ +F: package/erlang-p1-tls/ +F: package/erlang-p1-utils/ +F: package/erlang-p1-xml/ +F: package/erlang-p1-xmpp/ +F: package/erlang-p1-yaml/ +F: package/erlang-p1-zlib/ +F: package/nginx-dav-ext/ + +N: John Stile +F: package/dhcpcd/ + +N: Jonathan Ben Avraham +F: arch/Config.in.xtensa +F: package/autofs/ +F: package/dawgdic/ +F: package/libphidget/ +F: package/phidgetwebservice/ +F: package/rapidxml/ +F: package/sphinxbase/ + +N: Jonathan Liu +F: package/python-meld3/ +F: package/supervisor/ + +N: Joris Lijssens +F: package/emlog/ +F: package/libcoap/ +F: package/libnet/ +F: package/libuio/ +F: package/netsniff-ng/ +F: package/rabbitmq-c/ + +N: Joshua Henderson +F: package/qt5/qt5wayland/ + +N: Juha Rantanen +F: package/acsccid/ + +N: Julian Scheel +F: package/bitstream/ +F: package/cbootimage/ +F: package/cryptopp/ +F: package/dvblast/ +F: package/tegrarcm/ + +N: Julien Boibessot +F: board/armadeus/ +F: configs/armadeus* +F: package/gpm/ +F: package/lbreakout2/ +F: package/libcddb/ +F: package/libmodbus/ +F: package/ltris/ +F: package/opentyrian/ +F: package/python-pygame/ + +N: Julien Corjon +F: package/qt5/ + +N: Julien Floret +F: package/lldpd/ + +N: Laurent Charpentier +F: package/open-lldp/ + +N: Julien Viard de Galbert +F: package/dieharder/ +F: package/easy-rsa/ + +N: Justin Maggard +F: package/dtach/ + +N: Jérôme Oufella +F: package/libdri2/ +F: package/qt-webkit-kiosk/ + +N: Jérôme Pouiller +F: package/apitrace/ +F: package/freescale-imx/gpu-amd-bin-mx51/ +F: package/freescale-imx/libz160/ +F: package/lxc/ +F: package/strongswan/ +F: package/wmctrl/ +F: package/x11r7/xdriver_xf86-video-imx/ +F: package/x11r7/xdriver_xf86-video-imx-viv/ + +N: Jörg Krause +F: board/lemaker/bananapro/ +F: configs/bananapro_defconfig +F: package/augeas/ +F: package/bctoolbox/ +F: package/libshout/ +F: package/libupnpp/ +F: package/luv/ +F: package/luvi/ +F: package/mp4v2/ +F: package/mpd/ +F: package/shairport-sync/ +F: package/swupdate/ +F: package/upmpdcli/ +F: package/wavemon/ + +N: Karoly Kasza +F: package/irqbalance/ +F: package/openvmtools/ + +N: Kelvin Cheung +F: package/cpuload/ +F: package/bwm-ng/ +F: package/ramsmp/ + +N: Kevin Joly +F: package/libgphoto2/ + +N: Koen Martens +F: package/linuxconsoletools/ + +N: Kurt Van Dijck +F: package/bcusdk/ +F: package/libpthsem/ +F: package/nilfs-utils/ + +N: Laurent Cans +F: package/aircrack-ng/ + +N: Lee Jones +F: boot/afboot-stm32/ + +N: Lionel Flandrin +F: package/python-babel/ +F: package/python-flask/ +F: package/python-flask-babel/ +F: package/python-gunicorn/ + +N: Lionel Orry +F: package/mongrel2/ + +N: Lothar Felten +F: package/ti-sgx-demos/ +F: package/ti-sgx-km/ +F: package/ti-sgx-um/ + +N: Luca Ceresoli +F: board/olimex/a20_olinuxino/ +F: configs/olimex_a20_olinuxino_* +F: package/agentpp/ +F: package/exim/ +F: package/libpjsip/ +F: package/qpid-proton/ +F: package/rtl8188eu/ +F: package/snmppp/ +F: package/stm32flash/ +F: package/unzip/ +F: support/legal-info/ + +N: Lucas De Marchi +F: package/fswebcam/ + +N: Ludovic Desroches +F: board/atmel/ +F: configs/at91* +F: configs/atmel_* +F: package/fb-test-app/ +F: package/python-json-schema-validator/ +F: package/python-keyring/ +F: package/python-simplejson/ +F: package/python-versiontools/ +F: package/wilc1000-firmware/ + +N: Mahyar Koshkouei +F: package/ffmpeg/ +F: package/mpv/ +F: package/rpi-firmware/ +F: package/rpi-userland/ + +N: Mamatha Inamdar +F: package/nvme/ + +N: Manuel Vögele +F: package/python-pyqt5/ +F: package/python-requests-toolbelt/ + +N: Marcin Bis +F: package/bluez5_utils/ +F: package/cc-tool/ +F: package/ecryptfs-utils/ + +N: Marcin Niestroj +F: board/grinn/ +F: configs/grinn_* +F: package/argparse/ +F: package/dt-utils/ +F: package/easydbus/ +F: package/lua-flu/ +F: package/lua-stdlib/ +F: package/luaossl/ +F: package/rs485conf/ +F: package/turbolua/ + +N: Marcin Nowakowski +F: package/libkcapi/ + +N: Marcus Folkesson +F: package/libostree/ +F: package/libselinux/ +F: package/libsemanage/ +F: package/libsepol/ +F: package/selinux-python/ +F: utils/config +F: utils/diffconfig + +N: Marek Belisko +F: package/libatasmart/ +F: package/polkit/ +F: package/sg3_utils/ +F: package/udisks/ + +N: Mario Lang +F: package/brltty/ +F: package/lynx/ + +N: Mario Rugiero +F: package/ratpoison/ + +N: Markos Chandras +F: package/harfbuzz/ +F: package/libsecret/ + +N: Martin Bark +F: package/ca-certificates/ +F: package/connman/ +F: package/nodejs/ +F: package/tzdata/ +F: package/zic/ + +N: Martin Hicks +F: package/cryptsetup/ + +N: Martin Kepplinger +F: package/tslib/ +F: package/x11r7/xdriver_xf86-input-tslib/ +F: package/x11vnc/ + +N: Mathieu Audat +F: board/technologic/ts4900/ +F: configs/ts4900_defconfig +F: package/ts4900-fpga/ + +N: Matt Weber +F: package/argp-standalone/ +F: package/aufs/ +F: package/aufs-util/ +F: package/bc/ +F: package/bridge-utils/ +F: package/checkpolicy/ +F: package/cgroupfs-mount/ +F: package/crda/ +F: package/devmem2/ +F: package/dnsmasq/ +F: package/dosfstools/ +F: package/eigen/ +F: package/ethtool/ +F: package/flashbench/ +F: package/fmc/ +F: package/fmlib/ +F: package/git/ +F: package/gnutls/ +F: package/hostapd/ +F: package/i2c-tools/ +F: package/ifplugd/ +F: package/igmpproxy/ +F: package/iperf/ +F: package/iperf3/ +F: package/iputils/ +F: package/iw/ +F: package/kvm-unit-tests/ +F: package/kvmtool/ +F: package/libcsv/ +F: package/libcurl/ +F: package/libfcgi/ +F: package/libopenssl/ +F: package/libselinux/ +F: package/libsemanage/ +F: package/libsepol/ +F: package/libssh2/ +F: package/libqmi/ +F: package/lighttpd/ +F: package/logrotate/ +F: package/makedevs/ +F: package/memtester/ +F: package/mii-diag/ +F: package/mrouted/ +F: package/mtd/ +F: package/mtools/ +F: package/nginx-upload/ +F: package/omniorb/ +F: package/paxtest/ +F: package/picocom/ +F: package/policycoreutils/ +F: package/proftpd/ +F: package/protobuf-c/ +F: package/protobuf/ +F: package/python-flask-cors/ +F: package/python-ipy/ +F: package/python-posix-ipc/ +F: package/python-pypcap/ +F: package/python-pyrex/ +F: package/raptor/ +F: package/rng-tools/ +F: package/rsyslog/ +F: package/setools/ +F: package/smcroute/ +F: package/tclap/ +F: package/uboot-tools/ +F: package/unionfs/ +F: package/valijson/ +F: package/wpa_supplicant/ +F: package/wireless_tools/ +F: package/xen/ + +N: Mauro Condarelli +F: package/mc/ +F: package/python-autobahn/ +F: package/python-cbor/ +F: package/python-characteristic/ +F: package/python-click/ +F: package/python-crossbar/ +F: package/python-lmdb/ +F: package/python-mistune/ +F: package/python-netaddr/ +F: package/python-pyasn-modules/ +F: package/python-pygments/ +F: package/python-pynacl/ +F: package/python-pytrie/ +F: package/python-service-identity/ +F: package/python-setproctitle/ +F: package/python-shutilwhich/ +F: package/python-treq/ +F: package/python-txaio/ +F: package/python-ujson/ +F: package/python-wsaccel/ + +N: Max Filippov +F: arch/Config.in.xtensa + +N: Maxime Hadjinlian +F: package/babeld/ +F: package/dante/ +F: package/faifa/ +F: package/initscripts/ +F: package/intel-microcode/ +F: package/iucode-tool/ +F: package/jasper/ +F: package/kodi/ +F: package/libass/ +F: package/libbluray/ +F: package/libcdio/ +F: package/libcofi/ +F: package/libenca/ +F: package/libmodplug/ +F: package/libnfs/ +F: package/libplist/ +F: package/libshairplay/ +F: package/linux-zigbee/ +F: package/netcat-openbsd/ +F: package/open-plc-utils/ +F: package/rpi-firmware/ +F: package/rpi-userland/ +F: package/rtmpdump/ +F: package/skeleton/ +F: package/systemd/ +F: package/systemd-bootchart/ +F: package/tinyalsa/ +F: package/tinyxml/ + +N: Maxime Ripard +F: package/kmsxx/ + +N: Michael Rommel +F: package/knock/ +F: package/python-crc16/ +F: package/python-pyzmq/ + +N: Michael Trimarchi +F: package/python-spidev/ + +N: Michał Łyszczek +F: board/altera/socrates_cyclone5/ +F: configs/socrates_cyclone5_defconfig + +N: Mikhail Boiko +F: package/libfribidi/ + +N: Morgan Delestre +F: package/monkey/ + +N: Murat Demirten +F: package/jpeg-turbo/ +F: package/libgeotiff/ + +N: Mike Harmony +F: board/sinovoip/m2-plus/ +F: configs/bananapi_m2_plus_defconfig + +N: Mylène Josserand +F: package/rtl8723bu/ + +N: Nathan Lynch +F: package/chrony/ + +N: Nathaniel Roach +F: package/bandwidthd/ +F: package/libgudev/ + +N: Naumann Andreas +F: package/evemu/ +F: package/libevdev/ + +N: Nicolas Serafini +F: package/exiv2/ +F: package/nvidia-tegra23/nvidia-tegra23-binaries/ +F: package/nvidia-tegra23/nvidia-tegra23-codecs/ + +N: Nimai Mahajan +F: package/libucl/ + +N: Noé Rubinstein +F: package/tpm-tools/ +F: package/trousers/ + +N: Norbert Lange +F: package/tcf-agent/ + +N: Olaf Rempel +F: package/ctorrent/ + +N: Oli Vogt +F: package/python-django/ +F: package/python-flup/ + +N: Olivier Matz +F: package/python-pyelftools/ + +N: Olivier Schonken +F: package/cups/ +F: package/cups-filters/ +F: package/ijs/ +F: package/poppler/ +F: package/qpdf/ +F: package/openjpeg/ + +N: Olivier Singla +F: package/shellinabox/ + +N: Parnell Springmeyer +F: package/scrypt/ + +N: Pascal Huerst +F: package/google-breakpad/ + +N: Patrick Gerber +F: package/yavta/ + +N: Paul Cercueil +F: package/libiio/ +F: package/lightning/ + +N: Pedro Aguilar +F: package/libunistring/ + +N: Peter Korsgaard +F: board/orangepi/ +F: configs/orangepi_pc_defconfig +F: package/dump1090/ +F: package/flickcurl/ +F: package/fscryptctl/ +F: package/jo/ +F: package/jose/ +F: package/libfastjson/ +F: package/luksmeta/ +F: package/lzop/ +F: package/memtool/ +F: package/mosquitto/ +F: package/python-alsaaudio/ +F: package/python-enum/ +F: package/python-enum34/ +F: package/python-functools32/ +F: package/python-ipaddr/ +F: package/python-pam/ +F: package/python-psutil/ +F: package/triggerhappy/ + +N: Peter Seiderer +F: board/raspberrypi/ +F: configs/raspberrypi3_defconfig +F: package/assimp/ +F: package/bcm2835/ +F: package/ddrescue/ +F: package/dejavu/ +F: package/dillo/ +F: package/edid-decode/ +F: package/ghostscript-fonts/ +F: package/gstreamer1/gst1-validate/ +F: package/libevdev/ +F: package/log4cplus/ +F: package/postgresql/ +F: package/qt5/ +F: package/racehound/ +F: package/wiringpi/ + +N: Peter Thompson +F: package/sdl2_gfx/ +F: package/sdl2_image/ +F: package/sdl2_ttf/ + +N: Petr Kulhavy +F: package/linuxptp/ + +N: Petr Vorel +F: package/connman/ +F: package/feh/ +F: package/imlib2/ +F: package/iproute2/ +F: package/iputils/ +F: package/libmbim/ +F: package/libqmi/ +F: package/linux-backports/ +F: package/ltp-testsuite/ +F: package/modem-manager/ +F: package/network-manager/ +F: package/ofono/ +F: package/python-networkmanager/ + +N: Phil Eichinger +F: package/libqrencode/ +F: package/psplash/ +F: package/sispmctl/ +F: package/zsh/ + +N: Philipp Claves +F: package/libassuan/ +F: package/libgpgme/ + +N: Philippe Proulx +F: package/lttng-babeltrace/ +F: package/lttng-libust/ +F: package/lttng-modules/ +F: package/lttng-tools/ +F: package/python-ipython/ +F: package/liburcu/ + +N: Pierre Floury +F: package/trace-cmd/ + +N: Pieter De Gendt +F: package/libvips/ + +N: Pieterjan Camerlynck +F: package/libdvbpsi/ +F: package/mraa/ +F: package/synergy/ + +N: Pranit Sirsat +F: package/paho-mqtt-c/ + +N: Qais Yousef +F: package/bellagio/ + +N: Rahul Bedarkar +F: package/cxxtest/ +F: package/gflags/ +F: package/glog/ +F: package/gssdp/ +F: package/gupnp/ +F: package/gupnp-av/ +F: package/let-me-create/ +F: package/nanomsg/ + +N: Rahul Jain +F: package/uhttpd/ +F: package/ustream-ssl/ + +N: Renaud Aubin +F: package/libhttpparser/ + +N: Rhys Williams +F: package/lirc-tools/ + +N: Ricardo Martincoski +F: package/atop/ + +N: Ricardo Martincoski +F: support/testing/ +F: utils/check-package +F: utils/checkpackagelib/ + +N: Richard Braun +F: package/curlftpfs/ +F: package/tzdata/ + +N: Rico Bachmann +F: package/apr-util/ +F: package/subversion/ + +N: RJ Ascani +F: package/azmq/ + +N: Rodrigo Rebello +F: package/chocolate-doom/ +F: package/irssi/ +F: package/vnstat/ + +N: Romain Naour +F: package/aubio/ +F: package/bullet/ +F: package/efl/ +F: package/enlightenment/ +F: package/expedite/ +F: package/iqvlinux/ +F: package/irrlicht/ +F: package/liblinear/ +F: package/lensfun/ +F: package/libgta/ +F: package/libspatialindex/ +F: package/linux-syscall-support/ +F: package/lugaru/ +F: package/mcelog/ +F: package/mesa3d/ +F: package/minetest/ +F: package/minetest-game/ +F: package/openpowerlink/ +F: package/physfs/ +F: package/solarus/ +F: package/stress-ng/ +F: package/supertux/ +F: package/supertuxkart/ +F: package/terminology/ +F: package/upower/ +F: package/xenomai/ + +N: Ryan Barnett +F: package/atftp/ +F: package/miraclecast/ +F: package/python-pyasn/ +F: package/python-pycrypto/ +F: package/python-pysnmp/ +F: package/python-pysnmp-apps/ +F: package/python-pysnmp-mibs/ +F: package/python-tornado/ + +N: Ryan Coe +F: package/inadyn/ +F: package/libite/ +F: package/mariadb/ + +N: Ryan Wilkins +F: package/biosdevname/ + +N: Rémi Rérolle +F: package/libfreeimage/ + +N: Sam Bobroff +F: arch/Config.in.powerpc +F: package/librtas/ + +N: Samuel Martin +F: package/armadillo/ +F: package/canfestival/ +F: package/clapack/ +F: package/cwiid/ +F: package/flite/ +F: package/nginx/ +F: package/opencv/ +F: package/opencv3/ +F: package/openobex/ +F: package/pkg-cmake.mk +F: package/python-numpy/ +F: package/scrub/ +F: package/urg/ +F: package/ussp-push/ +F: support/misc/toolchainfile.cmake.in + +N: Santosh Multhalli +F: package/valijson/ + +N: Scott Fan +F: package/libssh/ +F: package/x11r7/xdriver_xf86-video-fbturbo/ + +N: Sebastien Bourdelin +F: package/atf/ +F: package/cppunit/ +F: package/kyua/ +F: package/lutok/ +F: package/yaml-cpp/ + +N: Semyon Kolganov +F: package/fmt/ +F: package/libbson/ +F: package/lua-resty-http/ +F: package/mpir/ + +N: Sergey Matyukevich +F: boot/arm-trusted-firmware/ +F: boot/binaries-marvell/ +F: boot/mv-ddr-marvell/ +F: board/linksprite/pcduino +F: board/orangepi/orangepi-zero +F: board/orangepi/orangepi-one +F: board/orangepi/orangepi-pc-plus/ +F: board/solidrun/macchiatobin +F: configs/linksprite_pcduino_defconfig +F: configs/orangepi_one_defconfig +F: configs/orangepi_pc_plus_defconfig +F: configs/orangepi_zero_defconfig +F: configs/solidrun_macchiatobin_mainline_defconfig +F: configs/solidrun_macchiatobin_marvell_defconfig +F: package/armbian-firmware/ +F: package/rtl8189fs/ +F: package/xr819-xradio/ + +N: Sergio Prado +F: package/aoetools/ +F: package/curlpp/ +F: package/daq/ +F: package/libgdiplus/ +F: package/mongodb/ +F: package/pimd/ +F: package/stella/ +F: package/traceroute/ +F: package/tunctl/ +F: package/ubus/ +F: package/wolfssl/ + +N: Simon Dawson +F: boot/at91bootstrap3/ +F: package/cppzmq/ +F: package/czmq/ +F: package/filemq/ +F: package/googlefontdirectory/ +F: package/jansson/ +F: package/jquery-ui/ +F: package/jquery-ui-themes/ +F: package/json-javascript/ +F: package/lcdapi/ +F: package/libfreefare/ +F: package/libjson/ +F: package/libnfc/ +F: package/libnfc/ +F: package/libserial/ +F: package/libsigsegv/ +F: package/macchanger/ +F: package/minicom/ +F: package/minidlna/ +F: package/msgpack/ +F: package/nanocom/ +F: package/neard/ +F: package/neardal/ +F: package/owl-linux/ +F: package/python-nfc/ +F: package/rapidjson/ +F: package/sconeserver/ +F: package/sound-theme-borealis/ +F: package/sound-theme-freedesktop/ +F: package/vlc/ +F: package/xscreensaver/ +F: package/zmqpp/ +F: package/zyre/ + +N: Spenser Gilliland +F: arch/Config.in.microblaze +F: package/a10disp/ +F: package/glmark2/ +F: package/libvpx/ +F: package/mesa3d-demos/ +F: package/sunxi-mali/ +F: package/ti-gfx/ + +N: Stefan Fröberg +F: package/elfutils/ +F: package/libtasn1/ +F: package/proxychains-ng/ +F: package/yasm/ +F: package/zlib-ng/ + +N: Stefan Sørensen +F: package/cracklib/ +F: package/libpwquality/ +F: package/libscrypt/ + +N: Stephan Hoffmann +F: package/cache-calibrator/ +F: package/gtest/ +F: package/mtdev/ +F: package/mtdev2tuio/ +F: package/qtuio/ + +N: Steve Calfee +F: package/python-pymysql/ +F: package/python-pyratemp/ + +N: Steve James +F: package/leveldb/ +F: package/libcli/ + +N: Steve Kenton +F: package/dvdauthor/ +F: package/dvdrw-tools/ +F: package/memtest86/ +F: package/mjpegtools/ +F: package/tovid/ +F: package/xorriso/ + +N: Steve Thomas +F: package/isl/ + +N: Steven Noonan +F: package/hwloc/ +F: package/powertop/ + +N: Sven Haardiek +F: package/lcdproc/ + +N: Sven Neumann +F: package/gstreamer1/gst1-libav/ + +N: Sven Neumann +F: package/glib-networking/ +F: package/libmms/ +F: package/orc/ + +N: Sébastien Szymanski +F: package/mmc-utils/ +F: package/python-flask-jsonrpc/ +F: package/python-flask-login/ +F: package/qt5/qt5charts/ + +N: Theo Debrouwere +F: package/pugixml/ + +N: Thierry Bultel +F: package/mpd-mpc/ + +N: Thijs Vermeir +F: package/ranger/ +F: package/x265/ + +N: Thomas Claveirole +F: package/fcgiwrap/ + +N: Thomas Davis +F: package/civetweb/ + +N: Thomas De Schampheleire +F: docs/manual/ +F: package/opkg-utils/ +F: support/scripts/size-stats +F: utils/size-stats-compare +F: toolchain/ + +N: Thomas Petazzoni +F: arch/Config.in.arm +F: boot/boot-wrapper-aarch64/ +F: boot/grub2/ +F: boot/gummiboot/ +F: package/android-tools/ +F: package/b43-firmware/ +F: package/b43-fwcutter/ +F: package/c-periphery/ +F: package/cdrkit/ +F: package/cifs-utils/ +F: package/cloop/ +F: package/cmake/ +F: package/cramfs/ +F: package/dmidecode/ +F: package/flashrom/ +F: package/gcc/ +F: package/genext2fs/ +F: package/genromfs/ +F: package/getent/ +F: package/gnu-efi/ +F: package/heirloom-mailx/ +F: package/hiawatha/ +F: package/igh-ethercat/ +F: package/intltool/ +F: package/libcap/ +F: package/libffi/ +F: package/libsha1/ +F: package/libtirpc/ +F: package/libxkbcommon/ +F: package/libxml-parser-perl/ +F: package/localedef/ +F: package/log4cxx/ +F: package/monit/ +F: package/mpdecimal/ +F: package/msmtp/ +F: package/musl/ +F: package/ne10/ +F: package/pkg-python.mk +F: package/pkg-autotools.mk +F: package/pkg-generic.mk +F: package/python/ +F: package/python3/ +F: package/python-mad/ +F: package/python-serial/ +F: package/qextserialport/ +F: package/rpcbind/ +F: package/rt-tests/ +F: package/sam-ba/ +F: package/scons/ +F: package/squashfs/ +F: package/wayland/ +F: package/weston/ +F: toolchain/ + +N: Tiago Brusamarello +F: package/aer-inject/ + +N: Timo Ketola +F: package/fbgrab/ + +N: Tzu-Jung Lee +F: package/dropwatch/ +F: package/tstools/ + +N: Vanya Sergeev +F: package/lua-periphery/ + +N: Vicente Olivert Riera +F: arch/Config.in.mips +F: package/gnupg2/ +F: package/hidapi/ +F: package/libfm/ +F: package/libfm-extra/ +F: package/libksba/ +F: package/menu-cache/ +F: package/openblas/ +F: package/openmpi/ +F: package/pinentry/ +F: package/trinity/ + +N: Vincent Stehlé +F: package/i7z/ +F: package/msr-tools/ +F: package/pixz/ + +N: Vinicius Tinti +F: package/python-thrift/ + +N: Vivien Didelot +F: board/technologic/ts5500/ +F: configs/ts5500_defconfig + +N: Volkov Viacheslav +F: package/v4l2grab/ +F: package/zbar/ + +N: Wade Berrier +F: package/ngrep/ + +N: Waldemar Brodkorb +F: arch/Config.in.bfin +F: arch/Config.in.m68k +F: arch/Config.in.or1k +F: arch/Config.in.sparc +F: package/glibc/ +F: package/mksh/ +F: package/uclibc/ +F: package/uclibc-ng-test/ + +N: Will Newton +F: package/enchant/ +F: package/erlang/ +F: package/libmicrohttpd/ +F: package/sysprof/ +F: package/time/ + +N: Will Wagner +F: package/yaffs2utils/ + +N: Wojciech M. Zabolotny +F: package/avrdude/ +F: package/jack2/ +F: package/python-msgpack/ +F: package/python-pyusb/ + +N: Wojciech Niziński +F: package/fwup/ + +N: Yann E. MORIN +F: fs/squashfs/ +F: package/asterisk/ +F: package/cegui06/ +F: package/celt051/ +F: package/dahdi-linux/ +F: package/dahdi-tools/ +F: package/dtc/ +F: package/dtv-scan-tables/ +F: package/dvb-apps/ +F: package/freerdp/ +F: package/keyutils/ +F: package/libbsd/ +F: package/libedit/ +F: package/libgsm/ +F: package/libinput/ +F: package/libiscsi/ +F: package/libpri/ +F: package/libseccomp/ +F: package/libss7/ +F: package/linux-firmware/ +F: package/linux-tools/ +F: package/matchbox* +F: package/mesa3d-headers/ +F: package/nbd/ +F: package/nut/ +F: package/nvidia-driver/ +F: package/omxplayer/ +F: package/python-pyparsing/ +F: package/pkg-download.mk +F: package/pkg-waf.mk +F: package/slirp/ +F: package/snappy/ +F: package/spice/ +F: package/spice-protocol/ +F: package/systemd/ +F: package/systemd-bootchart/ +F: package/tmux/ +F: package/tvheadend/ +F: package/usbredir/ +F: package/vde2/ +F: package/w_scan/ +F: package/wayland/ +F: package/weston/ +F: package/zisofs-tools/ +F: support/download/ + +N: Yegor Yefremov +F: package/acl/ +F: package/attr/ +F: package/bluez_utils/ +F: package/boost/ +F: package/bootstrap/ +F: package/cannelloni/ +F: package/can-utils/ +F: package/circus/ +F: package/feh/ +F: package/giblib/ +F: package/imlib2/ +F: package/jquery-datetimepicker/ +F: package/jquery-sidebar/ +F: package/kmod/ +F: package/libical/ +F: package/libmbim/ +F: package/libndp/ +F: package/libnftnl/ +F: package/libsoc/ +F: package/libsocketcan/ +F: package/libubox/ +F: package/libuci/ +F: package/linux-firmware/ +F: package/modem-manager/ +F: package/nuttcp/ +F: package/parted/ +F: package/phytool/ +F: package/poco/ +F: package/python* +F: package/ser2net/ +F: package/socketcand/ +F: package/qt5/qt5serialbus/ +F: package/sdparm/ +F: package/ti-utils/ +F: package/x11r7/xapp_xconsole/ +F: package/x11r7/xapp_xinput-calibrator/ +F: package/zlog/ +F: utils/scanpypi + +N: Zoltan Gyarmati +F: package/crudini/ +F: package/grantlee/ +F: package/proj/ +F: package/python-configobj/ +F: package/python-iniparse/ +F: package/qjson/ +F: package/quazip/ +F: package/shapelib/ +F: package/tinc/ diff --git a/buildroot/Makefile b/buildroot/Makefile new file mode 100644 index 0000000..af02e6f --- /dev/null +++ b/buildroot/Makefile @@ -0,0 +1,1135 @@ +# Makefile for buildroot +# +# Copyright (C) 1999-2005 by Erik Andersen +# Copyright (C) 2006-2014 by the Buildroot developers +# Copyright (C) 2014-2018 by the Buildroot developers +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +#-------------------------------------------------------------- +# Just run 'make menuconfig', configure stuff, then run 'make'. +# You shouldn't need to mess with anything beyond this point... +#-------------------------------------------------------------- + +# Delete default rules. We don't use them. This saves a bit of time. +.SUFFIXES: + +# we want bash as shell +SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ + else if [ -x /bin/bash ]; then echo /bin/bash; \ + else echo sh; fi; fi) + +# Set O variable if not already done on the command line; +# or avoid confusing packages that can use the O= syntax for out-of-tree +# build by preventing it from being forwarded to sub-make calls. +ifneq ("$(origin O)", "command line") +O := $(CURDIR)/output +endif + +# Check if the current Buildroot execution meets all the pre-requisites. +# If they are not met, Buildroot will actually do its job in a sub-make meeting +# its pre-requisites, which are: +# 1- Permissive enough umask: +# Wrong or too restrictive umask will prevent Buildroot and packages from +# creating files and directories. +# 2- Absolute canonical CWD (i.e. $(CURDIR)): +# Otherwise, some packages will use CWD as-is, others will compute its +# absolute canonical path. This makes harder tracking and fixing host +# machine path leaks. +# 3- Absolute canonical output location (i.e. $(O)): +# For the same reason as the one for CWD. + +# Remove the trailing '/.' from $(O) as it can be added by the makefile wrapper +# installed in the $(O) directory. +# Also remove the trailing '/' the user can set when on the command line. +override O := $(patsubst %/,%,$(patsubst %.,%,$(O))) +# Make sure $(O) actually exists before calling realpath on it; this is to +# avoid empty CANONICAL_O in case on non-existing entry. +CANONICAL_O := $(shell mkdir -p $(O) >/dev/null 2>&1)$(realpath $(O)) + +CANONICAL_CURDIR = $(realpath $(CURDIR)) + +REQ_UMASK = 0022 + +# Make sure O= is passed (with its absolute canonical path) everywhere the +# toplevel makefile is called back. +EXTRAMAKEARGS := O=$(CANONICAL_O) + +# Check Buildroot execution pre-requisites here. +ifneq ($(shell umask):$(CURDIR):$(O),$(REQ_UMASK):$(CANONICAL_CURDIR):$(CANONICAL_O)) +.PHONY: _all $(MAKECMDGOALS) + +$(MAKECMDGOALS): _all + @: + +_all: + @umask $(REQ_UMASK) && \ + $(MAKE) -C $(CANONICAL_CURDIR) --no-print-directory \ + $(MAKECMDGOALS) $(EXTRAMAKEARGS) + +else # umask / $(CURDIR) / $(O) + +# This is our default rule, so must come first +all: +.PHONY: all + +# Set and export the version string +export BR2_VERSION := 2018.02.4 +# Actual time the release is cut (for reproducible builds) +BR2_VERSION_EPOCH = 1532126000 + +# Save running make version since it's clobbered by the make package +RUNNING_MAKE_VERSION := $(MAKE_VERSION) + +# Check for minimal make version (note: this check will break at make 10.x) +MIN_MAKE_VERSION = 3.81 +ifneq ($(firstword $(sort $(RUNNING_MAKE_VERSION) $(MIN_MAKE_VERSION))),$(MIN_MAKE_VERSION)) +$(error You have make '$(RUNNING_MAKE_VERSION)' installed. GNU make >= $(MIN_MAKE_VERSION) is required) +endif + +# Parallel execution of this Makefile is disabled because it changes +# the packages building order, that can be a problem for two reasons: +# - If a package has an unspecified optional dependency and that +# dependency is present when the package is built, it is used, +# otherwise it isn't (but compilation happily proceeds) so the end +# result will differ if the order is swapped due to parallel +# building. +# - Also changing the building order can be a problem if two packages +# manipulate the same file in the target directory. +# +# Taking into account the above considerations, if you still want to execute +# this top-level Makefile in parallel comment the ".NOTPARALLEL" line and +# use the -j option when building, e.g: +# make -j$((`getconf _NPROCESSORS_ONLN`+1)) +.NOTPARALLEL: + +# absolute path +TOPDIR := $(CURDIR) +CONFIG_CONFIG_IN = Config.in +CONFIG = support/kconfig +DATE := $(shell date +%Y%m%d) + +# Compute the full local version string so packages can use it as-is +# Need to export it, so it can be got from environment in children (eg. mconf) +export BR2_VERSION_FULL := $(BR2_VERSION)$(shell $(TOPDIR)/support/scripts/setlocalversion) + +# List of targets and target patterns for which .config doesn't need to be read in +noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconfig \ + defconfig %_defconfig allyesconfig allnoconfig alldefconfig silentoldconfig release \ + randpackageconfig allyespackageconfig allnopackageconfig \ + print-version olddefconfig distclean manual manual-% + +# Some global targets do not trigger a build, but are used to collect +# metadata, or do various checks. When such targets are triggered, +# some packages should not do their configuration sanity +# checks. Provide them a BR_BUILDING variable set to 'y' when we're +# actually building and they should do their sanity checks. +# +# We're building in two situations: when MAKECMDGOALS is empty +# (default target is to build), or when MAKECMDGOALS contains +# something else than one of the nobuild_targets. +nobuild_targets := source %-source \ + legal-info %-legal-info external-deps _external-deps \ + clean distclean help show-targets graph-depends \ + %-graph-depends %-show-depends %-show-version \ + graph-build graph-size list-defconfigs \ + savedefconfig printvars +ifeq ($(MAKECMDGOALS),) +BR_BUILDING = y +else ifneq ($(filter-out $(nobuild_targets),$(MAKECMDGOALS)),) +BR_BUILDING = y +endif + +# We call make recursively to build packages. The command-line overrides that +# are passed to Buildroot don't apply to those package build systems. In +# particular, we don't want to pass down the O= option for out-of-tree +# builds, because the value specified on the command line will not be correct +# for packages. +MAKEOVERRIDES := + +# Include some helper macros and variables +include support/misc/utils.mk + +# Set variables related to in-tree or out-of-tree build. +# Here, both $(O) and $(CURDIR) are absolute canonical paths. +ifeq ($(O),$(CURDIR)/output) +CONFIG_DIR := $(CURDIR) +NEED_WRAPPER = +else +CONFIG_DIR := $(O) +NEED_WRAPPER = y +endif + +# bash prints the name of the directory on 'cd ' if CDPATH is +# set, so unset it here to not cause problems. Notice that the export +# line doesn't affect the environment of $(shell ..) calls. +export CDPATH := + +BASE_DIR := $(CANONICAL_O) +$(if $(BASE_DIR),, $(error output directory "$(O)" does not exist)) + +# paravirt: BR2_EXTERNAL is provided by the Makefile in the external directory +# Handling of BR2_EXTERNAL. +# +# The value of BR2_EXTERNAL is stored in .br-external in the output directory. +# The location of the external.mk makefile fragments is computed in that file. +# On subsequent invocations of make, this file is read in. BR2_EXTERNAL can +# still be overridden on the command line, therefore the file is re-created +# every time make is run. +# +#BR2_EXTERNAL_FILE = $(BASE_DIR)/.br-external.mk +#-include $(BR2_EXTERNAL_FILE) +#$(shell support/scripts/br2-external \ +# -m -o '$(BR2_EXTERNAL_FILE)' $(BR2_EXTERNAL)) +#BR2_EXTERNAL_ERROR = +#include $(BR2_EXTERNAL_FILE) +#ifneq ($(BR2_EXTERNAL_ERROR),) +#$(error $(BR2_EXTERNAL_ERROR)) +#endif + +# To make sure that the environment variable overrides the .config option, +# set this before including .config. +ifneq ($(BR2_DL_DIR),) +DL_DIR := $(BR2_DL_DIR) +endif +ifneq ($(BR2_CCACHE_DIR),) +BR_CACHE_DIR := $(BR2_CCACHE_DIR) +endif + +# Need that early, before we scan packages +# Avoids doing the $(or...) everytime +BR_GRAPH_OUT := $(or $(BR2_GRAPH_OUT),pdf) + +BUILD_DIR := $(BASE_DIR)/build +BINARIES_DIR := $(BASE_DIR)/images +TARGET_DIR := $(BASE_DIR)/target +# initial definition so that 'make clean' works for most users, even without +# .config. HOST_DIR will be overwritten later when .config is included. +HOST_DIR := $(BASE_DIR)/host +GRAPHS_DIR := $(BASE_DIR)/graphs + +LEGAL_INFO_DIR = $(BASE_DIR)/legal-info +REDIST_SOURCES_DIR_TARGET = $(LEGAL_INFO_DIR)/sources +REDIST_SOURCES_DIR_HOST = $(LEGAL_INFO_DIR)/host-sources +LICENSE_FILES_DIR_TARGET = $(LEGAL_INFO_DIR)/licenses +LICENSE_FILES_DIR_HOST = $(LEGAL_INFO_DIR)/host-licenses +LEGAL_MANIFEST_CSV_TARGET = $(LEGAL_INFO_DIR)/manifest.csv +LEGAL_MANIFEST_CSV_HOST = $(LEGAL_INFO_DIR)/host-manifest.csv +LEGAL_WARNINGS = $(LEGAL_INFO_DIR)/.warnings +LEGAL_REPORT = $(LEGAL_INFO_DIR)/README + +################################################################################ +# +# staging and target directories do NOT list these as +# dependencies anywhere else +# +################################################################################ +$(BUILD_DIR) $(TARGET_DIR) $(HOST_DIR) $(BINARIES_DIR) $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST): + @mkdir -p $@ + +BR2_CONFIG = $(CONFIG_DIR)/.config + +# Pull in the user's configuration file +ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),) +-include $(BR2_CONFIG) +endif + +# timezone and locale may affect build output +ifeq ($(BR2_REPRODUCIBLE),y) +export TZ = UTC +export LANG = C +export LC_ALL = C +export GZIP = -n +BR2_VERSION_GIT_EPOCH = $(shell GIT_DIR=$(TOPDIR)/.git $(GIT) log -1 --format=%at) +export SOURCE_DATE_EPOCH ?= $(if $(wildcard $(TOPDIR)/.git),$(BR2_VERSION_GIT_EPOCH),$(BR2_VERSION_EPOCH)) +DEPENDENCIES_HOST_PREREQ += host-fakedate +endif + +# To put more focus on warnings, be less verbose as default +# Use 'make V=1' to see the full commands +ifeq ("$(origin V)", "command line") + KBUILD_VERBOSE = $(V) +endif +ifndef KBUILD_VERBOSE + KBUILD_VERBOSE = 0 +endif + +ifeq ($(KBUILD_VERBOSE),1) + Q = +ifndef VERBOSE + VERBOSE = 1 +endif +export VERBOSE +else + Q = @ +endif + +# kconfig uses CONFIG_SHELL +CONFIG_SHELL := $(SHELL) + +export SHELL CONFIG_SHELL Q KBUILD_VERBOSE + +ifndef HOSTAR +HOSTAR := ar +endif +ifndef HOSTAS +HOSTAS := as +endif +ifndef HOSTCC +HOSTCC := gcc +HOSTCC := $(shell which $(HOSTCC) || type -p $(HOSTCC) || echo gcc) +endif +HOSTCC_NOCCACHE := $(HOSTCC) +ifndef HOSTCXX +HOSTCXX := g++ +HOSTCXX := $(shell which $(HOSTCXX) || type -p $(HOSTCXX) || echo g++) +endif +HOSTCXX_NOCCACHE := $(HOSTCXX) +ifndef HOSTCPP +HOSTCPP := cpp +endif +ifndef HOSTLD +HOSTLD := ld +endif +ifndef HOSTLN +HOSTLN := ln +endif +ifndef HOSTNM +HOSTNM := nm +endif +ifndef HOSTOBJCOPY +HOSTOBJCOPY := objcopy +endif +ifndef HOSTRANLIB +HOSTRANLIB := ranlib +endif +HOSTAR := $(shell which $(HOSTAR) || type -p $(HOSTAR) || echo ar) +HOSTAS := $(shell which $(HOSTAS) || type -p $(HOSTAS) || echo as) +HOSTCPP := $(shell which $(HOSTCPP) || type -p $(HOSTCPP) || echo cpp) +HOSTLD := $(shell which $(HOSTLD) || type -p $(HOSTLD) || echo ld) +HOSTLN := $(shell which $(HOSTLN) || type -p $(HOSTLN) || echo ln) +HOSTNM := $(shell which $(HOSTNM) || type -p $(HOSTNM) || echo nm) +HOSTOBJCOPY := $(shell which $(HOSTOBJCOPY) || type -p $(HOSTOBJCOPY) || echo objcopy) +HOSTRANLIB := $(shell which $(HOSTRANLIB) || type -p $(HOSTRANLIB) || echo ranlib) +SED := $(shell which sed || type -p sed) -i -e + +export HOSTAR HOSTAS HOSTCC HOSTCXX HOSTLD +export HOSTCC_NOCCACHE HOSTCXX_NOCCACHE + +# Determine the userland we are running on. +# +# Note that, despite its name, we are not interested in the actual +# architecture name. This is mostly used to determine whether some +# of the binary tools (e.g. pre-built external toolchains) can run +# on the current host. So we need to know if the userland we're +# running on can actually run those toolchains. +# +# For example, a 64-bit prebuilt toolchain will not run on a 64-bit +# kernel if the userland is 32-bit (e.g. in a chroot for example). +# +# So, we extract the first part of the tuple the host gcc was +# configured to generate code for; we assume this is our userland. +# +export HOSTARCH := $(shell LC_ALL=C $(HOSTCC_NOCCACHE) -v 2>&1 | \ + sed -e '/^Target: \([^-]*\).*/!d' \ + -e 's//\1/' \ + -e 's/i.86/x86/' \ + -e 's/sun4u/sparc64/' \ + -e 's/arm.*/arm/' \ + -e 's/sa110/arm/' \ + -e 's/ppc64/powerpc64/' \ + -e 's/ppc/powerpc/' \ + -e 's/macppc/powerpc/' \ + -e 's/sh.*/sh/' ) + +HOSTCC_VERSION := $(shell $(HOSTCC_NOCCACHE) --version | \ + sed -n -r 's/^.* ([0-9]*)\.([0-9]*)\.([0-9]*)[ ]*.*/\1 \2/p') + +# For gcc >= 5.x, we only need the major version. +ifneq ($(firstword $(HOSTCC_VERSION)),4) +HOSTCC_VERSION := $(firstword $(HOSTCC_VERSION)) +endif + +ifeq ($(BR2_NEEDS_HOST_UTF8_LOCALE),y) +# First, we try to use the user's configured locale (as that's the +# language they'd expect messages to be displayed), then we favour +# a non language-specific locale like C.UTF-8 if one is available, +# so we sort with the C locale to get it at the top. +# This is guaranteed to not be empty, because of the check in +# support/dependencies/dependencies.sh +HOST_UTF8_LOCALE := $(shell \ + ( echo $${LC_ALL:-$${LC_MESSAGES:-$${LANG}}}; \ + locale -a 2>/dev/null | LC_ALL=C sort \ + ) \ + | grep -i -E 'utf-?8$$' \ + | head -n 1) +HOST_UTF8_LOCALE_ENV := LC_ALL=$(HOST_UTF8_LOCALE) +endif + +# Make sure pkg-config doesn't look outside the buildroot tree +HOST_PKG_CONFIG_PATH := $(PKG_CONFIG_PATH) +unexport PKG_CONFIG_PATH +unexport PKG_CONFIG_SYSROOT_DIR +unexport PKG_CONFIG_LIBDIR + +# Having DESTDIR set in the environment confuses the installation +# steps of some packages. +unexport DESTDIR + +# Causes breakage with packages that needs host-ruby +unexport RUBYOPT + +include package/pkg-utils.mk +include package/doc-asciidoc.mk + +ifeq ($(BR2_HAVE_DOT_CONFIG),y) + +################################################################################ +# +# Hide troublesome environment variables from sub processes +# +################################################################################ +unexport CROSS_COMPILE +unexport ARCH +unexport CC +unexport LD +unexport AR +unexport CXX +unexport CPP +unexport RANLIB +unexport CFLAGS +unexport CXXFLAGS +unexport GREP_OPTIONS +unexport TAR_OPTIONS +unexport CONFIG_SITE +unexport QMAKESPEC +unexport TERMINFO +unexport MACHINE +unexport O +unexport GCC_COLORS + +GNU_HOST_NAME := $(shell support/gnuconfig/config.guess) + +PACKAGES := +PACKAGES_ALL := + +# silent mode requested? +QUIET := $(if $(findstring s,$(filter-out --%,$(MAKEFLAGS))),-q) + +# Strip off the annoying quoting +ARCH := $(call qstrip,$(BR2_ARCH)) + +KERNEL_ARCH := $(shell echo "$(ARCH)" | sed -e "s/-.*//" \ + -e s/i.86/i386/ -e s/sun4u/sparc64/ \ + -e s/arcle/arc/ \ + -e s/arceb/arc/ \ + -e s/arm.*/arm/ -e s/sa110/arm/ \ + -e s/aarch64.*/arm64/ \ + -e s/bfin/blackfin/ \ + -e s/or1k/openrisc/ \ + -e s/parisc64/parisc/ \ + -e s/powerpc64.*/powerpc/ \ + -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \ + -e s/sh.*/sh/ \ + -e s/microblazeel/microblaze/) + +ZCAT := $(call qstrip,$(BR2_ZCAT)) +BZCAT := $(call qstrip,$(BR2_BZCAT)) +XZCAT := $(call qstrip,$(BR2_XZCAT)) +LZCAT := $(call qstrip,$(BR2_LZCAT)) +TAR_OPTIONS = $(call qstrip,$(BR2_TAR_OPTIONS)) -xf + +# packages compiled for the host go here +HOST_DIR := $(call qstrip,$(BR2_HOST_DIR)) + +# Quotes are needed for spaces and all in the original PATH content. +BR_PATH = "$(HOST_DIR)/bin:$(HOST_DIR)/sbin:$(PATH)" + +# Location of a file giving a big fat warning that output/target +# should not be used as the root filesystem. +TARGET_DIR_WARNING_FILE = $(TARGET_DIR)/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM + +ifeq ($(BR2_CCACHE),y) +CCACHE := $(HOST_DIR)/bin/ccache +BR_CACHE_DIR ?= $(call qstrip,$(BR2_CCACHE_DIR)) +export BR_CACHE_DIR +HOSTCC := $(CCACHE) $(HOSTCC) +HOSTCXX := $(CCACHE) $(HOSTCXX) +else +export BR_NO_CCACHE +endif + +# Scripts in support/ or post-build scripts may need to reference +# these locations, so export them so it is easier to use +export BR2_CONFIG +export BR2_REPRODUCIBLE +export TARGET_DIR +export STAGING_DIR +export HOST_DIR +export BINARIES_DIR +export BASE_DIR + +################################################################################ +# +# You should probably leave this stuff alone unless you know +# what you are doing. +# +################################################################################ + +all: world + +# Include legacy before the other things, because package .mk files +# may rely on it. +include Makefile.legacy + +include system/system.mk +include package/Makefile.in +# arch/arch.mk.* must be after package/Makefile.in because it may need to +# complement variables defined therein, like BR_NO_CHECK_HASH_FOR. +-include $(sort $(wildcard arch/arch.mk.*)) +include support/dependencies/dependencies.mk + +PACKAGES += $(DEPENDENCIES_HOST_PREREQ) + +include $(sort $(wildcard toolchain/*.mk)) +include $(sort $(wildcard toolchain/*/*.mk)) + +# Include the package override file if one has been provided in the +# configuration. +PACKAGE_OVERRIDE_FILE = $(call qstrip,$(BR2_PACKAGE_OVERRIDE_FILE)) +ifneq ($(PACKAGE_OVERRIDE_FILE),) +-include $(PACKAGE_OVERRIDE_FILE) +endif + +include $(sort $(wildcard package/*/*.mk)) + +include boot/common.mk +include linux/linux.mk +include fs/common.mk + +# If using a br2-external tree, the BR2_EXTERNAL_$(NAME)_PATH variables +# are also present in the .config file. Since .config is included after +# we defined them in the Makefile, the values for those variables are +# quoted. We just include the generated Makefile fragment .br2-external.mk +# a third time, which will set those variables to the un-quoted values. +include $(BR2_EXTERNAL_FILE) + +# Nothing to include if no BR2_EXTERNAL tree in use +include $(BR2_EXTERNAL_MKS) + +# Now we are sure we have all the packages scanned and defined. We now +# check for each package in the list of enabled packages, that all its +# dependencies are indeed enabled. +# +# Only trigger the check for default builds. If the user forces building +# a package, even if not enabled in the configuration, we want to accept +# it. +# +ifeq ($(MAKECMDGOALS),) + +define CHECK_ONE_DEPENDENCY +ifeq ($$($(2)_TYPE),target) +ifeq ($$($(2)_IS_VIRTUAL),) +ifneq ($$($$($(2)_KCONFIG_VAR)),y) +$$(error $$($(2)_NAME) is in the dependency chain of $$($(1)_NAME) that \ +has added it to its _DEPENDENCIES variable without selecting it or \ +depending on it from Config.in) +endif +endif +endif +endef + +$(foreach pkg,$(call UPPERCASE,$(PACKAGES)),\ + $(foreach dep,$(call UPPERCASE,$($(pkg)_FINAL_ALL_DEPENDENCIES)),\ + $(eval $(call CHECK_ONE_DEPENDENCY,$(pkg),$(dep))$(sep)))) + +endif + +.PHONY: dirs +dirs: $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \ + $(HOST_DIR) $(HOST_DIR)/usr $(HOST_DIR)/lib $(BINARIES_DIR) + +$(BUILD_DIR)/buildroot-config/auto.conf: $(BR2_CONFIG) + $(MAKE1) $(EXTRAMAKEARGS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTCXX="$(HOSTCXX_NOCCACHE)" silentoldconfig + +.PHONY: prepare +prepare: $(BUILD_DIR)/buildroot-config/auto.conf + +.PHONY: world +world: target-post-image + +.PHONY: sdk +sdk: world + @$(call MESSAGE,"Rendering the SDK relocatable") + $(TOPDIR)/support/scripts/fix-rpath host + $(TOPDIR)/support/scripts/fix-rpath staging + $(INSTALL) -m 755 $(TOPDIR)/support/misc/relocate-sdk.sh $(HOST_DIR)/relocate-sdk.sh + echo $(HOST_DIR) > $(HOST_DIR)/share/buildroot/sdk-location + +# Compatibility symlink in case a post-build script still uses $(HOST_DIR)/usr +$(HOST_DIR)/usr: $(HOST_DIR) + @ln -snf . $@ + +$(HOST_DIR)/lib: $(HOST_DIR) + @mkdir -p $@ + @case $(HOSTARCH) in \ + (*64) ln -snf lib $(@D)/lib64;; \ + (*) ln -snf lib $(@D)/lib32;; \ + esac + +# Populating the staging with the base directories is handled by the skeleton package +$(STAGING_DIR): + @mkdir -p $(STAGING_DIR) + @ln -snf $(STAGING_DIR) $(BASE_DIR)/staging + +RSYNC_VCS_EXCLUSIONS = \ + --exclude .svn --exclude .git --exclude .hg --exclude .bzr \ + --exclude CVS + +STRIP_FIND_CMD = find $(TARGET_DIR) +ifneq (,$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))) +STRIP_FIND_CMD += \( $(call finddirclauses,$(TARGET_DIR),$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))) \) -prune -o +endif +STRIP_FIND_CMD += -type f \( -perm /111 -o -name '*.so*' \) +# file exclusions: +# - libpthread.so: a non-stripped libpthread shared library is needed for +# proper debugging of pthread programs using gdb. +# - ld.so: a non-stripped dynamic linker library is needed for valgrind +# - kernel modules (*.ko): do not function properly when stripped like normal +# applications and libraries. Normally kernel modules are already excluded +# by the executable permission check above, so the explicit exclusion is only +# done for kernel modules with incorrect permissions. +STRIP_FIND_CMD += -not \( $(call findfileclauses,libpthread*.so* ld-*.so* *.ko $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \) -print0 + +ifeq ($(BR2_ECLIPSE_REGISTER),y) +define TOOLCHAIN_ECLIPSE_REGISTER + ./support/scripts/eclipse-register-toolchain `readlink -f $(O)` \ + $(notdir $(TARGET_CROSS)) $(BR2_ARCH) +endef +TARGET_FINALIZE_HOOKS += TOOLCHAIN_ECLIPSE_REGISTER +endif + +# Generate locale data. Basically, we call the localedef program +# (built by the host-localedef package) for each locale. The input +# data comes preferably from the toolchain, or if the toolchain does +# not have them (Linaro toolchains), we use the ones available on the +# host machine. +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +GLIBC_GENERATE_LOCALES = $(call qstrip,$(BR2_GENERATE_LOCALE)) +ifneq ($(GLIBC_GENERATE_LOCALES),) +PACKAGES += host-localedef + +define GENERATE_GLIBC_LOCALES + $(Q)mkdir -p $(TARGET_DIR)/usr/lib/locale/ + $(Q)for locale in $(GLIBC_GENERATE_LOCALES) ; do \ + inputfile=`echo $${locale} | cut -f1 -d'.'` ; \ + charmap=`echo $${locale} | cut -f2 -d'.' -s` ; \ + if test -z "$${charmap}" ; then \ + charmap="UTF-8" ; \ + fi ; \ + echo "Generating locale $${inputfile}.$${charmap}" ; \ + I18NPATH=$(STAGING_DIR)/usr/share/i18n:/usr/share/i18n \ + $(HOST_DIR)/bin/localedef \ + --prefix=$(TARGET_DIR) \ + --$(call LOWERCASE,$(BR2_ENDIAN))-endian \ + -i $${inputfile} -f $${charmap} \ + $${locale} ; \ + done +endef +TARGET_FINALIZE_HOOKS += GENERATE_GLIBC_LOCALES +endif +endif + +ifeq ($(BR2_ENABLE_LOCALE_PURGE),y) +LOCALE_WHITELIST = $(BUILD_DIR)/locales.nopurge +LOCALE_NOPURGE = $(call qstrip,$(BR2_ENABLE_LOCALE_WHITELIST)) + +# This piece of junk does the following: +# First collect the whitelist in a file. +# Then go over all the locale dirs and for each subdir, check if it exists +# in the whitelist file. If it doesn't, kill it. +# Finally, specifically for X11, regenerate locale.dir from the whitelist. +define PURGE_LOCALES + rm -f $(LOCALE_WHITELIST) + for i in $(LOCALE_NOPURGE) locale-archive; do echo $$i >> $(LOCALE_WHITELIST); done + + for dir in $(wildcard $(addprefix $(TARGET_DIR),/usr/share/locale /usr/share/X11/locale /usr/lib/locale)); \ + do \ + for langdir in $$dir/*; \ + do \ + if [ -e "$${langdir}" ]; \ + then \ + grep -qx "$${langdir##*/}" $(LOCALE_WHITELIST) || rm -rf $$langdir; \ + fi \ + done; \ + done + if [ -d $(TARGET_DIR)/usr/share/X11/locale ]; \ + then \ + for lang in $(LOCALE_NOPURGE); \ + do \ + if [ -f $(TARGET_DIR)/usr/share/X11/locale/$$lang/XLC_LOCALE ]; \ + then \ + echo "$$lang/XLC_LOCALE: $$lang"; \ + fi \ + done > $(TARGET_DIR)/usr/share/X11/locale/locale.dir; \ + fi +endef +TARGET_FINALIZE_HOOKS += PURGE_LOCALES +endif + +$(TARGETS_ROOTFS): target-finalize + +.PHONY: target-finalize +target-finalize: $(PACKAGES) + @$(call MESSAGE,"Finalizing target directory") + # Check files that are touched by more than one package + ./support/scripts/check-uniq-files -t target $(BUILD_DIR)/packages-file-list.txt + ./support/scripts/check-uniq-files -t staging $(BUILD_DIR)/packages-file-list-staging.txt + ./support/scripts/check-uniq-files -t host $(BUILD_DIR)/packages-file-list-host.txt + $(foreach hook,$(TARGET_FINALIZE_HOOKS),$($(hook))$(sep)) + rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/share/aclocal \ + $(TARGET_DIR)/usr/lib/pkgconfig $(TARGET_DIR)/usr/share/pkgconfig \ + $(TARGET_DIR)/usr/lib/cmake $(TARGET_DIR)/usr/share/cmake + find $(TARGET_DIR)/usr/{lib,share}/ -name '*.cmake' -print0 | xargs -0 rm -f + find $(TARGET_DIR)/lib/ $(TARGET_DIR)/usr/lib/ $(TARGET_DIR)/usr/libexec/ \ + \( -name '*.a' -o -name '*.la' \) -print0 | xargs -0 rm -f +ifneq ($(BR2_PACKAGE_GDB),y) + rm -rf $(TARGET_DIR)/usr/share/gdb +endif +ifneq ($(BR2_PACKAGE_BASH),y) + rm -rf $(TARGET_DIR)/usr/share/bash-completion +endif +ifneq ($(BR2_PACKAGE_ZSH),y) + rm -rf $(TARGET_DIR)/usr/share/zsh +endif + rm -rf $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/man + rm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info + rm -rf $(TARGET_DIR)/usr/doc $(TARGET_DIR)/usr/share/doc + rm -rf $(TARGET_DIR)/usr/share/gtk-doc + rmdir $(TARGET_DIR)/usr/share 2>/dev/null || true + $(STRIP_FIND_CMD) | xargs -0 $(STRIPCMD) 2>/dev/null || true + +# See http://sourceware.org/gdb/wiki/FAQ, "GDB does not see any threads +# besides the one in which crash occurred; or SIGTRAP kills my program when +# I set a breakpoint" +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) + find $(TARGET_DIR)/lib/ -type f -name 'libpthread*.so*' | \ + xargs -r $(STRIPCMD) $(STRIP_STRIP_DEBUG) +endif + +# Valgrind needs ld.so with enough information, so only strip +# debugging symbols. + find $(TARGET_DIR)/lib/ -type f -name 'ld-*.so*' | \ + xargs -r $(STRIPCMD) $(STRIP_STRIP_DEBUG) + test -f $(TARGET_DIR)/etc/ld.so.conf && \ + { echo "ERROR: we shouldn't have a /etc/ld.so.conf file"; exit 1; } || true + test -d $(TARGET_DIR)/etc/ld.so.conf.d && \ + { echo "ERROR: we shouldn't have a /etc/ld.so.conf.d directory"; exit 1; } || true + mkdir -p $(TARGET_DIR)/etc + ( \ + echo "NAME=Buildroot"; \ + echo "VERSION=$(BR2_VERSION_FULL)"; \ + echo "ID=buildroot"; \ + echo "VERSION_ID=$(BR2_VERSION)"; \ + echo "PRETTY_NAME=\"Buildroot $(BR2_VERSION)\"" \ + ) > $(TARGET_DIR)/usr/lib/os-release + ln -sf ../usr/lib/os-release $(TARGET_DIR)/etc + + @$(call MESSAGE,"Sanitizing RPATH in target tree") + $(TOPDIR)/support/scripts/fix-rpath target + + @$(foreach d, $(call qstrip,$(BR2_ROOTFS_OVERLAY)), \ + $(call MESSAGE,"Copying overlay $(d)"); \ + rsync -a --ignore-times --keep-dirlinks $(RSYNC_VCS_EXCLUSIONS) \ + --chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \ + $(d)/ $(TARGET_DIR)$(sep)) + + @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_BUILD_SCRIPT)), \ + $(call MESSAGE,"Executing post-build script $(s)"); \ + $(EXTRA_ENV) $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) + + touch $(TARGET_DIR)/usr + +.PHONY: target-post-image +target-post-image: $(TARGETS_ROOTFS) target-finalize + @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \ + $(call MESSAGE,"Executing post-image script $(s)"); \ + $(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) + +.PHONY: source +source: $(foreach p,$(PACKAGES),$(p)-all-source) + +.PHONY: _external-deps external-deps +_external-deps: $(foreach p,$(PACKAGES),$(p)-all-external-deps) +external-deps: + @$(MAKE1) -Bs $(EXTRAMAKEARGS) _external-deps | sort -u + +.PHONY: legal-info-clean +legal-info-clean: + @rm -fr $(LEGAL_INFO_DIR) + +.PHONY: legal-info-prepare +legal-info-prepare: $(LEGAL_INFO_DIR) + @$(call MESSAGE,"Buildroot $(BR2_VERSION_FULL) Collecting legal info") + @$(call legal-license-file,buildroot,buildroot,support/legal-info,COPYING,COPYING,HOST) + @$(call legal-manifest,PACKAGE,VERSION,LICENSE,LICENSE FILES,SOURCE ARCHIVE,SOURCE SITE,TARGET) + @$(call legal-manifest,PACKAGE,VERSION,LICENSE,LICENSE FILES,SOURCE ARCHIVE,SOURCE SITE,HOST) + @$(call legal-manifest,buildroot,$(BR2_VERSION_FULL),GPL-2.0+,COPYING,not saved,not saved,HOST) + @$(call legal-warning,the Buildroot source code has not been saved) + @cp $(BR2_CONFIG) $(LEGAL_INFO_DIR)/buildroot.config + +.PHONY: legal-info +legal-info: dirs legal-info-clean legal-info-prepare $(foreach p,$(PACKAGES),$(p)-all-legal-info) \ + $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST) + @cat support/legal-info/README.header >>$(LEGAL_REPORT) + @if [ -r $(LEGAL_WARNINGS) ]; then \ + cat support/legal-info/README.warnings-header \ + $(LEGAL_WARNINGS) >>$(LEGAL_REPORT); \ + cat $(LEGAL_WARNINGS); fi + @rm -f $(LEGAL_WARNINGS) + @(cd $(LEGAL_INFO_DIR); \ + find * -type f -exec sha256sum {} + | LC_ALL=C sort -k2 \ + >.legal-info.sha256; \ + mv .legal-info.sha256 legal-info.sha256) + @echo "Legal info produced in $(LEGAL_INFO_DIR)" + +.PHONY: show-targets +show-targets: + @echo $(sort $(PACKAGES)) $(sort $(TARGETS_ROOTFS)) + +.PHONY: show-build-order +show-build-order: $(patsubst %,%-show-build-order,$(PACKAGES)) + +.PHONY: graph-build +graph-build: $(O)/build/build-time.log + @install -d $(GRAPHS_DIR) + $(foreach o,name build duration,./support/scripts/graph-build-time \ + --type=histogram --order=$(o) --input=$(<) \ + --output=$(GRAPHS_DIR)/build.hist-$(o).$(BR_GRAPH_OUT) \ + $(if $(BR2_GRAPH_ALT),--alternate-colors)$(sep)) + $(foreach t,packages steps,./support/scripts/graph-build-time \ + --type=pie-$(t) --input=$(<) \ + --output=$(GRAPHS_DIR)/build.pie-$(t).$(BR_GRAPH_OUT) \ + $(if $(BR2_GRAPH_ALT),--alternate-colors)$(sep)) + +.PHONY: graph-depends-requirements +graph-depends-requirements: + @dot -? >/dev/null 2>&1 || \ + { echo "ERROR: The 'dot' program from Graphviz is needed for graph-depends" >&2; exit 1; } + +.PHONY: graph-depends +graph-depends: graph-depends-requirements + @$(INSTALL) -d $(GRAPHS_DIR) + @cd "$(CONFIG_DIR)"; \ + $(TOPDIR)/support/scripts/graph-depends $(BR2_GRAPH_DEPS_OPTS) \ + --direct -o $(GRAPHS_DIR)/$(@).dot + dot $(BR2_GRAPH_DOT_OPTS) -T$(BR_GRAPH_OUT) \ + -o $(GRAPHS_DIR)/$(@).$(BR_GRAPH_OUT) \ + $(GRAPHS_DIR)/$(@).dot + +.PHONY: graph-size +graph-size: + $(Q)mkdir -p $(GRAPHS_DIR) + $(Q)$(TOPDIR)/support/scripts/size-stats --builddir $(BASE_DIR) \ + --graph $(GRAPHS_DIR)/graph-size.$(BR_GRAPH_OUT) \ + --file-size-csv $(GRAPHS_DIR)/file-size-stats.csv \ + --package-size-csv $(GRAPHS_DIR)/package-size-stats.csv + +.PHONY: check-dependencies +check-dependencies: + @cd "$(CONFIG_DIR)"; \ + $(TOPDIR)/support/scripts/graph-depends -C + +else # ifeq ($(BR2_HAVE_DOT_CONFIG),y) + +# Some subdirectories are also package names. To avoid that "make linux" +# on an unconfigured tree produces "Nothing to be done", add an explicit +# rule for it. +# Also for 'all' we error out and ask the user to configure first. +.PHONY: linux toolchain +linux toolchain all: outputmakefile + $(error Please configure Buildroot first (e.g. "make menuconfig")) + @exit 1 + +endif # ifeq ($(BR2_HAVE_DOT_CONFIG),y) + +# configuration +# --------------------------------------------------------------------------- + +HOSTCFLAGS = $(CFLAGS_FOR_BUILD) +export HOSTCFLAGS + +.PHONY: prepare-kconfig +prepare-kconfig: outputmakefile $(BUILD_DIR)/.br2-external.in + +$(BUILD_DIR)/buildroot-config/%onf: + mkdir -p $(@D)/lxdialog + PKG_CONFIG_PATH="$(HOST_PKG_CONFIG_PATH)" $(MAKE) CC="$(HOSTCC_NOCCACHE)" HOSTCC="$(HOSTCC_NOCCACHE)" \ + obj=$(@D) -C $(CONFIG) -f Makefile.br $(@F) + +DEFCONFIG = $(call qstrip,$(BR2_DEFCONFIG)) + +# We don't want to fully expand BR2_DEFCONFIG here, so Kconfig will +# recognize that if it's still at its default $(CONFIG_DIR)/defconfig +COMMON_CONFIG_ENV = \ + BR2_DEFCONFIG='$(call qstrip,$(value BR2_DEFCONFIG))' \ + KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \ + KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \ + KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \ + BR2_CONFIG=$(BR2_CONFIG) \ + HOST_GCC_VERSION="$(HOSTCC_VERSION)" \ + BUILD_DIR=$(BUILD_DIR) \ + SKIP_LEGACY= + +xconfig: $(BUILD_DIR)/buildroot-config/qconf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +gconfig: $(BUILD_DIR)/buildroot-config/gconf prepare-kconfig + @$(COMMON_CONFIG_ENV) srctree=$(TOPDIR) $< $(CONFIG_CONFIG_IN) + +menuconfig: $(BUILD_DIR)/buildroot-config/mconf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +nconfig: $(BUILD_DIR)/buildroot-config/nconf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +config: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN) + +# For the config targets that automatically select options, we pass +# SKIP_LEGACY=y to disable the legacy options. However, in that case +# no values are set for the legacy options so a subsequent oldconfig +# will query them. Therefore, run an additional olddefconfig. + +randconfig allyesconfig alldefconfig allnoconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --$@ $(CONFIG_CONFIG_IN) + @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null + +randpackageconfig allyespackageconfig allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @grep -v BR2_PACKAGE_ $(BR2_CONFIG) > $(CONFIG_DIR)/.config.nopkg + @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y \ + KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \ + $< --$(subst package,,$@) $(CONFIG_CONFIG_IN) + @rm -f $(CONFIG_DIR)/.config.nopkg + @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null + +oldconfig silentoldconfig olddefconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< --$@ $(CONFIG_CONFIG_IN) + +defconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< --defconfig$(if $(DEFCONFIG),=$(DEFCONFIG)) $(CONFIG_CONFIG_IN) + +define percent_defconfig +# Override the BR2_DEFCONFIG from COMMON_CONFIG_ENV with the new defconfig +%_defconfig: $(BUILD_DIR)/buildroot-config/conf $(1)/configs/%_defconfig prepare-kconfig + @$$(COMMON_CONFIG_ENV) BR2_DEFCONFIG=$(1)/configs/$$@ \ + $$< --defconfig=$(1)/configs/$$@ $$(CONFIG_CONFIG_IN) +endef +$(eval $(foreach d,$(call reverse,$(TOPDIR) $(BR2_EXTERNAL_DIRS)),$(call percent_defconfig,$(d))$(sep))) + +savedefconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig + @$(COMMON_CONFIG_ENV) $< \ + --savedefconfig=$(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig) \ + $(CONFIG_CONFIG_IN) + @$(SED) '/BR2_DEFCONFIG=/d' $(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig) + +.PHONY: defconfig savedefconfig + +################################################################################ +# +# Cleanup and misc junk +# +################################################################################ + +# outputmakefile generates a Makefile in the output directory, if using a +# separate output directory. This allows convenient use of make in the +# output directory. +.PHONY: outputmakefile +outputmakefile: +ifeq ($(NEED_WRAPPER),y) + @# paravirt: stop updating external Makefile + @#$(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O) +endif + +# Even though the target is a real file, we mark it as PHONY as we +# want it to be re-generated each time make is invoked, in case the +# value of BR2_EXTERNAL is changed. +.PHONY: $(BUILD_DIR)/.br2-external.in +$(BUILD_DIR)/.br2-external.in: $(BUILD_DIR) + $(Q)support/scripts/br2-external -k -o "$(@)" $(BR2_EXTERNAL) + +# printvars prints all the variables currently defined in our +# Makefiles. Alternatively, if a non-empty VARS variable is passed, +# only the variables matching the make pattern passed in VARS are +# displayed. +.PHONY: printvars +printvars: + @:$(foreach V, \ + $(sort $(if $(VARS),$(filter $(VARS),$(.VARIABLES)),$(.VARIABLES))), \ + $(if $(filter-out environment% default automatic, \ + $(origin $V)), \ + $(if $(QUOTED_VARS),\ + $(info $V='$(subst ','\'',$(if $(RAW_VARS),$(value $V),$($V)))'), \ + $(info $V=$(if $(RAW_VARS),$(value $V),$($V)))))) +# ' Syntax colouring... + +.PHONY: clean +clean: + rm -rf $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \ + $(BUILD_DIR) $(BASE_DIR)/staging \ + $(LEGAL_INFO_DIR) $(GRAPHS_DIR) + +.PHONY: distclean +distclean: clean +ifeq ($(O),$(CURDIR)/output) + rm -rf $(O) +endif + rm -rf $(TOPDIR)/dl $(BR2_CONFIG) $(CONFIG_DIR)/.config.old $(CONFIG_DIR)/..config.tmp \ + $(CONFIG_DIR)/.auto.deps $(BR2_EXTERNAL_FILE) + +.PHONY: help +help: + @echo 'Cleaning:' + @echo ' clean - delete all files created by build' + @echo ' distclean - delete all non-source files (including .config)' + @echo + @echo 'Build:' + @echo ' all - make world' + @echo ' toolchain - build toolchain' + @echo ' sdk - build relocatable SDK' + @echo + @echo 'Configuration:' + @echo ' menuconfig - interactive curses-based configurator' + @echo ' nconfig - interactive ncurses-based configurator' + @echo ' xconfig - interactive Qt-based configurator' + @echo ' gconfig - interactive GTK-based configurator' + @echo ' oldconfig - resolve any unresolved symbols in .config' + @echo ' silentoldconfig - Same as oldconfig, but quietly, additionally update deps' + @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their default value' + @echo ' randconfig - New config with random answer to all options' + @echo ' defconfig - New config with default answer to all options' + @echo ' BR2_DEFCONFIG, if set, is used as input' + @echo ' savedefconfig - Save current config to BR2_DEFCONFIG (minimal config)' + @echo ' allyesconfig - New config where all options are accepted with yes' + @echo ' allnoconfig - New config where all options are answered with no' + @echo ' alldefconfig - New config where all options are set to default' + @echo ' randpackageconfig - New config with random answer to package options' + @echo ' allyespackageconfig - New config where pkg options are accepted with yes' + @echo ' allnopackageconfig - New config where package options are answered with no' + @echo + @echo 'Package-specific:' + @echo ' - Build and install and all its dependencies' + @echo ' -source - Only download the source files for ' + @echo ' -extract - Extract sources' + @echo ' -patch - Apply patches to ' + @echo ' -depends - Build '\''s dependencies' + @echo ' -configure - Build up to the configure step' + @echo ' -build - Build up to the build step' + @echo ' -show-depends - List packages on which depends' + @echo ' -show-rdepends - List packages which have as a dependency' + @echo ' -graph-depends - Generate a graph of '\''s dependencies' + @echo ' -graph-rdepends - Generate a graph of '\''s reverse dependencies' + @echo ' -dirclean - Remove build directory' + @echo ' -reconfigure - Restart the build from the configure step' + @echo ' -rebuild - Restart the build from the build step' + $(foreach p,$(HELP_PACKAGES), \ + @echo $(sep) \ + @echo '$($(p)_NAME):' $(sep) \ + $($(p)_HELP_CMDS)$(sep)) + @echo + @echo 'Documentation:' + @echo ' manual - build manual in all formats' + @echo ' manual-html - build manual in HTML' + @echo ' manual-split-html - build manual in split HTML' + @echo ' manual-pdf - build manual in PDF' + @echo ' manual-text - build manual in text' + @echo ' manual-epub - build manual in ePub' + @echo ' graph-build - generate graphs of the build times' + @echo ' graph-depends - generate graph of the dependency tree' + @echo ' graph-size - generate stats of the filesystem size' + @echo ' list-defconfigs - list all defconfigs (pre-configured minimal systems)' + @echo + @echo 'Miscellaneous:' + @echo ' source - download all sources needed for offline-build' + @echo ' external-deps - list external packages used' + @echo ' legal-info - generate info about license compliance' + @echo ' printvars - dump all the internal variables' + @echo + @echo ' make V=0|1 - 0 => quiet build (default), 1 => verbose build' + @echo ' make O=dir - Locate all output files in "dir", including .config' + @echo + @echo 'For further details, see README, generate the Buildroot manual, or consult' + @echo 'it on-line at http://buildroot.org/docs.html' + @echo + +# List the defconfig files +# $(1): base directory +# $(2): br2-external name, empty for bundled +define list-defconfigs + @first=true; \ + for defconfig in $(1)/configs/*_defconfig; do \ + [ -f "$${defconfig}" ] || continue; \ + if $${first}; then \ + if [ "$(2)" ]; then \ + printf 'External configs in "$(call qstrip,$(2))":\n'; \ + else \ + printf "Built-in configs:\n"; \ + fi; \ + first=false; \ + fi; \ + defconfig="$${defconfig##*/}"; \ + printf " %-35s - Build for %s\n" "$${defconfig}" "$${defconfig%_defconfig}"; \ + done; \ + $${first} || printf "\n" +endef + +# We iterate over BR2_EXTERNAL_NAMES rather than BR2_EXTERNAL_DIRS, +# because we want to display the name of the br2-external tree. +.PHONY: list-defconfigs +list-defconfigs: + $(call list-defconfigs,$(TOPDIR)) + $(foreach name,$(BR2_EXTERNAL_NAMES),\ + $(call list-defconfigs,$(BR2_EXTERNAL_$(name)_PATH),\ + $(BR2_EXTERNAL_$(name)_DESC))$(sep)) + +release: OUT = buildroot-$(BR2_VERSION) + +# Create release tarballs. We need to fiddle a bit to add the generated +# documentation to the git output +release: + git archive --format=tar --prefix=$(OUT)/ HEAD > $(OUT).tar + $(MAKE) O=$(OUT) manual-html manual-text manual-pdf + $(MAKE) O=$(OUT) manual-clean + tar rf $(OUT).tar $(OUT) + gzip -9 -c < $(OUT).tar > $(OUT).tar.gz + bzip2 -9 -c < $(OUT).tar > $(OUT).tar.bz2 + rm -rf $(OUT) $(OUT).tar + +print-version: + @echo $(BR2_VERSION_FULL) + +.PHONY: .gitlab-ci.yml +.gitlab-ci.yml: .gitlab-ci.yml.in + cp $< $@ + (cd configs; LC_ALL=C ls -1 *_defconfig) | sed 's/$$/: *defconfig/' >> $@ + ./support/testing/run-tests -l 2>&1 | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' | LC_ALL=C sort >> $@ + +include docs/manual/manual.mk +-include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(sort $(wildcard $(dir)/docs/*/*.mk))) + +.PHONY: $(noconfig_targets) + +endif #umask / $(CURDIR) / $(O) diff --git a/buildroot/Makefile.legacy b/buildroot/Makefile.legacy new file mode 100644 index 0000000..800c089 --- /dev/null +++ b/buildroot/Makefile.legacy @@ -0,0 +1,59 @@ +# +# Makefile.legacy - support for backward compatibility +# +# This file contains placeholders to detect backward-compatibility problems. +# When a buildroot "API" feature is being deprecated, a rule should be added +# here that issues an error when the old feature is used. + +ifeq ($(BR2_LEGACY),y) +$(error "You have legacy configuration in your .config! Please check your configuration.") +endif + +# +# Legacy options from 2014.02 +# + +# The BUILDROOT_DL_DIR environment variable was renamed by BR2_DL_DIR. We +# want to detect someone using the old variable, _except_ if also the new +# variable was set. By the time we get here, however, we no longer have +# access to the BR2_DL_DIR environment variable (because it has been overridden +# by the .config inclusion). However, the environment variable (if defined) was +# saved in DL_DIR, so we can use that. +ifneq ($(BUILDROOT_DL_DIR),) +ifneq ($(BUILDROOT_DL_DIR),$(DL_DIR)) +$(error "The BUILDROOT_DL_DIR environment variable was renamed to BR2_DL_DIR.") +endif +endif + +# If a script is using the deprecated BUILDROOT_CONFIG, make sure it fails. +# Add some directories in front just in case someone used dirname on it. +BUILDROOT_CONFIG_FAKE = /tmp/deprecated/The-BUILDROOT_CONFIG-environment-variable-was-renamed-to-BR2_CONFIG + +# Similar to above for BUILDROOT_CONFIG, but here we have no .config equivalent. +ifneq ($(BUILDROOT_CONFIG),) +ifneq ($(BUILDROOT_CONFIG),$(BR2_CONFIG)) +ifneq ($(BUILDROOT_CONFIG),$(BUILDROOT_CONFIG_FAKE)) +$(error "The BUILDROOT_CONFIG environment variable was renamed to BR2_CONFIG.") +endif +endif +endif + +BUILDROOT_CONFIG = $(BUILDROOT_CONFIG_FAKE) +export BUILDROOT_CONFIG + +# +# Legacy options from 2012.08 +# + +host-pkg-config: + @$(call MESSAGE,host-pkg-config is replaced by host-pkgconf) + @$(call MESSAGE,please update your .mk files) + @false +.PHONY: host-pkg-config + +# +# Legacy options from 2012.05 +# +GENTARGETS = $$(error The GENTARGETS macro no longer exists; use $$$$(eval $$$$(generic-package)) or $$$$(eval $$$$(host-generic-package))) +AUTOTARGETS = $$(error The AUTOTARGETS macro no longer exists; use $$$$(eval $$$$(autotools-package)) or $$$$(eval $$$$(host-autotools-package))) +CMAKETARGETS = $$(error The CMAKETARGETS macro no longer exists; use $$$$(eval $$$$(cmake-package)) or $$$$(eval $$$$(host-cmake-package))) diff --git a/buildroot/README b/buildroot/README new file mode 100644 index 0000000..c617252 --- /dev/null +++ b/buildroot/README @@ -0,0 +1,26 @@ +Buildroot is a simple, efficient and easy-to-use tool to generate embedded +Linux systems through cross-compilation. + +The documentation can be found in docs/manual. You can generate a text +document with 'make manual-text' and read output/docs/manual/manual.text. +Online documentation can be found at http://buildroot.org/docs.html + +To build and use the buildroot stuff, do the following: + +1) run 'make menuconfig' +2) select the target architecture and the packages you wish to compile +3) run 'make' +4) wait while it compiles +5) find the kernel, bootloader, root filesystem, etc. in output/images + +You do not need to be root to build or run buildroot. Have fun! + +Buildroot comes with a basic configuration for a number of boards. Run +'make list-defconfigs' to view the list of provided configurations. + +Please feed suggestions, bug reports, insults, and bribes back to the +buildroot mailing list: buildroot@buildroot.org +You can also find us on #buildroot on Freenode IRC. + +If you would like to contribute patches, please read +https://buildroot.org/manual.html#submitting-patches diff --git a/buildroot/arch/Config.in b/buildroot/arch/Config.in new file mode 100644 index 0000000..d3f63da --- /dev/null +++ b/buildroot/arch/Config.in @@ -0,0 +1,469 @@ +menu "Target options" + +config BR2_ARCH_IS_64 + bool + +config BR2_KERNEL_64_USERLAND_32 + bool + +config BR2_SOFT_FLOAT + bool + +config BR2_ARCH_HAS_MMU_MANDATORY + bool + +config BR2_ARCH_HAS_MMU_OPTIONAL + bool + +config BR2_ARCH_HAS_FDPIC_SUPPORT + bool + +choice + prompt "Target Architecture" + default BR2_i386 + help + Select the target architecture family to build for. + +config BR2_arcle + bool "ARC (little endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Synopsys' DesignWare ARC Processor Cores are a family of 32-bit CPUs + that can be used from deeply embedded to high performance host + applications. Little endian. + +config BR2_arceb + bool "ARC (big endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Synopsys' DesignWare ARC Processor Cores are a family of 32-bit CPUs + that can be used from deeply embedded to high performance host + applications. Big endian. + +config BR2_arm + bool "ARM (little endian)" + # MMU support is set by the subarchitecture file, arch/Config.in.arm + help + ARM is a 32-bit reduced instruction set computer (RISC) instruction + set architecture (ISA) developed by ARM Holdings. Little endian. + http://www.arm.com/ + http://en.wikipedia.org/wiki/ARM + +config BR2_armeb + bool "ARM (big endian)" + # MMU support is set by the subarchitecture file, arch/Config.in.arm + help + ARM is a 32-bit reduced instruction set computer (RISC) instruction + set architecture (ISA) developed by ARM Holdings. Big endian. + http://www.arm.com/ + http://en.wikipedia.org/wiki/ARM + +config BR2_aarch64 + bool "AArch64 (little endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + Aarch64 is a 64-bit architecture developed by ARM Holdings. + http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php + http://en.wikipedia.org/wiki/ARM + +config BR2_aarch64_be + bool "AArch64 (big endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + Aarch64 is a 64-bit architecture developed by ARM Holdings. + http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php + http://en.wikipedia.org/wiki/ARM + +config BR2_bfin + bool "Blackfin" + select BR2_ARCH_HAS_FDPIC_SUPPORT + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + help + The Blackfin is a family of 16 or 32-bit microprocessors developed, + manufactured and marketed by Analog Devices. + http://www.analog.com/ + http://en.wikipedia.org/wiki/Blackfin + +config BR2_csky + bool "csky" + select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + select BR2_ARCH_HAS_MMU_MANDATORY + help + csky is processor IP from china. + http://www.c-sky.com/ + http://www.github.com/c-sky + +config BR2_i386 + bool "i386" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Intel i386 architecture compatible microprocessor + http://en.wikipedia.org/wiki/I386 + +config BR2_m68k + bool "m68k" + # MMU support is set by the subarchitecture file, arch/Config.in.m68k + help + Motorola 68000 family microprocessor + http://en.wikipedia.org/wiki/M68k + +config BR2_microblazeel + bool "Microblaze AXI (little endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Soft processor core designed for Xilinx FPGAs from Xilinx. AXI bus + based architecture (little endian) + http://www.xilinx.com + http://en.wikipedia.org/wiki/Microblaze + +config BR2_microblazebe + bool "Microblaze non-AXI (big endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Soft processor core designed for Xilinx FPGAs from Xilinx. PLB bus + based architecture (non-AXI, big endian) + http://www.xilinx.com + http://en.wikipedia.org/wiki/Microblaze + +config BR2_mips + bool "MIPS (big endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + MIPS is a RISC microprocessor from MIPS Technologies. Big endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_mipsel + bool "MIPS (little endian)" + select BR2_ARCH_HAS_MMU_MANDATORY + help + MIPS is a RISC microprocessor from MIPS Technologies. Little endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_mips64 + bool "MIPS64 (big endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + MIPS is a RISC microprocessor from MIPS Technologies. Big endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_mips64el + bool "MIPS64 (little endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + MIPS is a RISC microprocessor from MIPS Technologies. Little endian. + http://www.mips.com/ + http://en.wikipedia.org/wiki/MIPS_Technologies + +config BR2_nios2 + bool "Nios II" + select BR2_ARCH_HAS_MMU_MANDATORY + help + Nios II is a soft core processor from Altera Corporation. + http://www.altera.com/ + http://en.wikipedia.org/wiki/Nios_II + +config BR2_or1k + bool "OpenRISC" + select BR2_ARCH_HAS_MMU_MANDATORY + help + OpenRISC is a free and open processor for embedded system. + http://openrisc.io + +config BR2_powerpc + bool "PowerPC" + select BR2_ARCH_HAS_MMU_MANDATORY + help + PowerPC is a RISC architecture created by Apple-IBM-Motorola alliance. + Big endian. + http://www.power.org/ + http://en.wikipedia.org/wiki/Powerpc + +config BR2_powerpc64 + bool "PowerPC64 (big endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + PowerPC is a RISC architecture created by Apple-IBM-Motorola alliance. + Big endian. + http://www.power.org/ + http://en.wikipedia.org/wiki/Powerpc + +config BR2_powerpc64le + bool "PowerPC64 (little endian)" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + PowerPC is a RISC architecture created by Apple-IBM-Motorola alliance. + Little endian. + http://www.power.org/ + http://en.wikipedia.org/wiki/Powerpc + +config BR2_sh + bool "SuperH" + select BR2_ARCH_HAS_MMU_OPTIONAL + help + SuperH (or SH) is a 32-bit reduced instruction set computer (RISC) + instruction set architecture (ISA) developed by Hitachi. + http://www.hitachi.com/ + http://en.wikipedia.org/wiki/SuperH + +config BR2_sparc + bool "SPARC" + select BR2_ARCH_HAS_MMU_MANDATORY + help + SPARC (from Scalable Processor Architecture) is a RISC instruction + set architecture (ISA) developed by Sun Microsystems. + http://www.oracle.com/sun + http://en.wikipedia.org/wiki/Sparc + +config BR2_sparc64 + bool "SPARC64" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + SPARC (from Scalable Processor Architecture) is a RISC instruction + set architecture (ISA) developed by Sun Microsystems. + http://www.oracle.com/sun + http://en.wikipedia.org/wiki/Sparc + +config BR2_x86_64 + bool "x86_64" + select BR2_ARCH_IS_64 + select BR2_ARCH_HAS_MMU_MANDATORY + help + x86-64 is an extension of the x86 instruction set (Intel i386 + architecture compatible microprocessor). + http://en.wikipedia.org/wiki/X86_64 + +config BR2_xtensa + bool "Xtensa" + # MMU support is set by the subarchitecture file, arch/Config.in.xtensa + help + Xtensa is a Tensilica processor IP architecture. + http://en.wikipedia.org/wiki/Xtensa + http://www.tensilica.com/ + +endchoice + +# For some architectures or specific cores, our internal toolchain +# backend is not suitable (like, missing support in upstream gcc, or +# no ChipCo fork exists...) +config BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + bool + +config BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT + bool + default y if !BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + +# The following symbols are selected by the individual +# Config.in.$ARCH files +config BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + bool + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +config BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + +# The following string values are defined by the individual +# Config.in.$ARCH files +config BR2_ARCH + string + +config BR2_ENDIAN + string + +config BR2_GCC_TARGET_ARCH + string + +config BR2_GCC_TARGET_ABI + string + +config BR2_GCC_TARGET_NAN + string + +config BR2_GCC_TARGET_FP32_MODE + string + +config BR2_GCC_TARGET_CPU + string + +config BR2_GCC_TARGET_CPU_REVISION + string + +# The value of this option will be passed as --with-fpu= when +# building gcc (internal backend) or -mfpu= in the toolchain +# wrapper (external toolchain) +config BR2_GCC_TARGET_FPU + string + +# The value of this option will be passed as --with-float= when +# building gcc (internal backend) or -mfloat-abi= in the toolchain +# wrapper (external toolchain) +config BR2_GCC_TARGET_FLOAT_ABI + string + +# The value of this option will be passed as --with-mode= when +# building gcc (internal backend) or -m in the toolchain +# wrapper (external toolchain) +config BR2_GCC_TARGET_MODE + string + +# Must be selected by binary formats that support shared libraries. +config BR2_BINFMT_SUPPORTS_SHARED + bool + +# Must match the name of the architecture from readelf point of view, +# i.e the "Machine:" field of readelf output. See get_machine_name() +# in binutils/readelf.c for the list of possible values. +config BR2_READELF_ARCH_NAME + string + +# Set up target binary format +choice + prompt "Target Binary Format" + default BR2_BINFMT_ELF if BR2_USE_MMU + default BR2_BINFMT_FDPIC if BR2_ARCH_HAS_FDPIC_SUPPORT + default BR2_BINFMT_FLAT + +config BR2_BINFMT_ELF + bool "ELF" + depends on BR2_USE_MMU + select BR2_BINFMT_SUPPORTS_SHARED + help + ELF (Executable and Linkable Format) is a format for libraries and + executables used across different architectures and operating + systems. + +config BR2_BINFMT_FDPIC + bool "FDPIC" + depends on BR2_ARCH_HAS_FDPIC_SUPPORT + select BR2_BINFMT_SUPPORTS_SHARED + help + ELF FDPIC binaries are based on ELF, but allow the individual load + segments of a binary to be located in memory independently of each + other. This makes this format ideal for use in environments where no + MMU is available. + +config BR2_BINFMT_FLAT + bool "FLAT" + depends on !BR2_USE_MMU + help + FLAT binary is a relatively simple and lightweight executable format + based on the original a.out format. It is widely used in environment + where no MMU is available. + +endchoice + +# Set up flat binary type +choice + prompt "FLAT Binary type" + depends on BR2_BINFMT_FLAT + default BR2_BINFMT_FLAT_ONE + +config BR2_BINFMT_FLAT_ONE + bool "One memory region" + help + All segments are linked into one memory region. + +config BR2_BINFMT_FLAT_SEP_DATA + bool "Separate data and code region" + # this FLAT binary type technically exists on m68k, but fails + # to build numerous packages: due to architecture limitation, + # big functions cannot be built in this mode. They cause build + # failures such as "Tried to convert PC relative branch to + # absolute jump" or "error: value -yyyyy out of range". + depends on BR2_bfin + help + Allow for the data and text segments to be separated and placed in + different regions of memory. + +config BR2_BINFMT_FLAT_SHARED + bool "Shared binary" + depends on BR2_m68k || BR2_bfin + # Even though this really generates shared binaries, there is no libdl + # and dlopen() cannot be used. So packages that require shared + # libraries cannot be built. Therefore, we don't select + # BR2_BINFMT_SUPPORTS_SHARED and therefore force BR2_STATIC_LIBS. + # Although this adds -static to the compilation, that's not a problem + # because the -mid-shared-library option overrides it. + help + Allow to load and link indiviual FLAT binaries at run time. + +endchoice + +if BR2_arcle || BR2_arceb +source "arch/Config.in.arc" +endif + +if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be +source "arch/Config.in.arm" +endif + +if BR2_bfin +source "arch/Config.in.bfin" +endif + +if BR2_csky +source "arch/Config.in.csky" +endif + +if BR2_m68k +source "arch/Config.in.m68k" +endif + +if BR2_microblazeel || BR2_microblazebe +source "arch/Config.in.microblaze" +endif + +if BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el +source "arch/Config.in.mips" +endif + +if BR2_nios2 +source "arch/Config.in.nios2" +endif + +if BR2_or1k +source "arch/Config.in.or1k" +endif + +if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le +source "arch/Config.in.powerpc" +endif + +if BR2_sh +source "arch/Config.in.sh" +endif + +if BR2_sparc || BR2_sparc64 +source "arch/Config.in.sparc" +endif + +if BR2_i386 || BR2_x86_64 +source "arch/Config.in.x86" +endif + +if BR2_xtensa +source "arch/Config.in.xtensa" +endif + +endmenu # Target options diff --git a/buildroot/arch/Config.in.arc b/buildroot/arch/Config.in.arc new file mode 100644 index 0000000..92503a0 --- /dev/null +++ b/buildroot/arch/Config.in.arc @@ -0,0 +1,81 @@ +choice + prompt "Target CPU" + depends on BR2_arc + default BR2_arc770d + help + Specific CPU to use + +config BR2_arc750d + bool "ARC 750D" + +config BR2_arc770d + bool "ARC 770D" + +config BR2_archs38 + bool "ARC HS38" + +endchoice + +# Choice of atomic instructions presence +config BR2_ARC_ATOMIC_EXT + bool "Atomic extension (LLOCK/SCOND instructions)" + default y if BR2_arc770d || BR2_archs38 + +config BR2_ARCH + default "arc" if BR2_arcle + default "arceb" if BR2_arceb + +config BR2_arc + bool + default y if BR2_arcle || BR2_arceb + +config BR2_ENDIAN + default "LITTLE" if BR2_arcle + default "BIG" if BR2_arceb + +config BR2_GCC_TARGET_CPU + default "arc700" if BR2_arc750d + default "arc700" if BR2_arc770d + default "archs" if BR2_archs38 + +config BR2_READELF_ARCH_NAME + default "ARCompact" if BR2_arc750d || BR2_arc770d + default "ARCv2" if BR2_archs38 + +choice + prompt "MMU Page Size" + default BR2_ARC_PAGE_SIZE_8K + help + MMU starting from version 3 (found in ARC 770) and now + version 4 (found in ARC HS38) allows the selection of the + page size during ASIC design creation. + + The following options are available for MMU v3 and v4: 4kB, + 8kB and 16 kB. + + The default is 8 kB (that really matches the only page size + in MMU v2). It is important to build a toolchain with page + size matching the hardware configuration. Otherwise + user-space applications will fail at runtime. + +config BR2_ARC_PAGE_SIZE_4K + bool "4KB" + depends on BR2_arc770d || BR2_archs38 + +config BR2_ARC_PAGE_SIZE_8K + bool "8KB" + help + This is the one and only option available for MMUv2 and + default value for MMU v3 and v4. + +config BR2_ARC_PAGE_SIZE_16K + bool "16KB" + depends on BR2_arc770d || BR2_archs38 + +endchoice + +config BR2_ARC_PAGE_SIZE + string + default "4K" if BR2_ARC_PAGE_SIZE_4K + default "8K" if BR2_ARC_PAGE_SIZE_8K + default "16K" if BR2_ARC_PAGE_SIZE_16K diff --git a/buildroot/arch/Config.in.arm b/buildroot/arch/Config.in.arm new file mode 100644 index 0000000..b05e83e --- /dev/null +++ b/buildroot/arch/Config.in.arm @@ -0,0 +1,771 @@ +# arm cpu features +config BR2_ARM_CPU_HAS_NEON + bool + +# for some cores, NEON support is optional +config BR2_ARM_CPU_MAYBE_HAS_NEON + bool + +# for some cores, VFPv2 is optional +config BR2_ARM_CPU_MAYBE_HAS_VFPV2 + bool + +config BR2_ARM_CPU_HAS_VFPV2 + bool + +# for some cores, VFPv3 is optional +config BR2_ARM_CPU_MAYBE_HAS_VFPV3 + bool + select BR2_ARM_CPU_MAYBE_HAS_VFPV2 + +config BR2_ARM_CPU_HAS_VFPV3 + bool + select BR2_ARM_CPU_HAS_VFPV2 + +# for some cores, VFPv4 is optional +config BR2_ARM_CPU_MAYBE_HAS_VFPV4 + bool + select BR2_ARM_CPU_MAYBE_HAS_VFPV3 + +config BR2_ARM_CPU_HAS_VFPV4 + bool + select BR2_ARM_CPU_HAS_VFPV3 + +config BR2_ARM_CPU_HAS_FP_ARMV8 + bool + select BR2_ARM_CPU_HAS_VFPV4 + +config BR2_ARM_CPU_HAS_ARM + bool + +config BR2_ARM_CPU_HAS_THUMB + bool + +config BR2_ARM_CPU_HAS_THUMB2 + bool + +config BR2_ARM_CPU_ARMV4 + bool + +config BR2_ARM_CPU_ARMV5 + bool + +config BR2_ARM_CPU_ARMV6 + bool + +config BR2_ARM_CPU_ARMV7A + bool + +config BR2_ARM_CPU_ARMV7M + bool + +config BR2_ARM_CPU_ARMV8A + bool + +choice + prompt "Target Architecture Variant" + default BR2_cortex_a53 if BR2_ARCH_IS_64 + default BR2_arm926t + help + Specific CPU variant to use + +if !BR2_ARCH_IS_64 +comment "armv4 cores" +config BR2_arm920t + bool "arm920t" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV4 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_arm922t + bool "arm922t" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV4 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_fa526 + bool "fa526/626" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_ARMV4 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_strongarm + bool "strongarm sa110/sa1100" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_ARMV4 + select BR2_ARCH_HAS_MMU_OPTIONAL + +comment "armv5 cores" +config BR2_arm926t + bool "arm926t" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV5 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_iwmmxt + bool "iwmmxt" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_ARMV5 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_xscale + bool "xscale" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV5 + select BR2_ARCH_HAS_MMU_OPTIONAL + +comment "armv6 cores" +config BR2_arm1136j_s + bool "arm1136j-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_arm1136jf_s + bool "arm1136jf-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_arm1176jz_s + bool "arm1176jz-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_arm1176jzf_s + bool "arm1176jzf-s" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_arm11mpcore + bool "mpcore" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_VFPV2 + select BR2_ARM_CPU_HAS_THUMB + select BR2_ARM_CPU_ARMV6 + select BR2_ARCH_HAS_MMU_OPTIONAL + +comment "armv7a cores" +config BR2_cortex_a5 + bool "cortex-A5" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_NEON + select BR2_ARM_CPU_MAYBE_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a7 + bool "cortex-A7" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a8 + bool "cortex-A8" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV3 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a9 + bool "cortex-A9" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_MAYBE_HAS_NEON + select BR2_ARM_CPU_MAYBE_HAS_VFPV3 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a12 + bool "cortex-A12" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a15 + bool "cortex-A15" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a15_a7 + bool "cortex-A15/A7 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 +config BR2_cortex_a17 + bool "cortex-A17" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_cortex_a17_a7 + bool "cortex-A17/A7 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_VFPV4 + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_pj4 + bool "pj4" + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_VFPV3 + select BR2_ARM_CPU_ARMV7A + select BR2_ARCH_HAS_MMU_OPTIONAL + +comment "armv7m cores" +config BR2_cortex_m3 + bool "cortex-M3" + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7M +config BR2_cortex_m4 + bool "cortex-M4" + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_ARMV7M +endif # !BR2_ARCH_IS_64 + +comment "armv8 cores" +config BR2_cortex_a32 + bool "cortex-A32" + depends on !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_ARM + select BR2_ARM_CPU_HAS_NEON + select BR2_ARM_CPU_HAS_THUMB2 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a35 + bool "cortex-A35" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a53 + bool "cortex-A53" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a57 + bool "cortex-A57" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL +config BR2_cortex_a57_a53 + bool "cortex-A57/A53 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a72 + bool "cortex-A72" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_cortex_a72_a53 + bool "cortex-A72/A53 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_cortex_a73 + bool "cortex-A73" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_cortex_a73_a35 + bool "cortex-A73/A35 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_cortex_a73_a53 + bool "cortex-A73/A53 big.LITTLE" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_exynos_m1 + bool "exynos-m1" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_falkor + bool "falkor" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_qdf24xx + bool "qdf24xx" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +if BR2_ARCH_IS_64 +config BR2_thunderx + bool "thunderx" + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_thunderxt81 + bool "thunderxt81" + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderxt83 + bool "thunderxt83" + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderxt88 + bool "thunderxt88" + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderxt88p1 + bool "thunderxt88p1" + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +endif # BR2_ARCH_IS_64 +config BR2_xgene1 + bool "xgene1" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +if BR2_ARCH_IS_64 +comment "armv8.1a cores" +config BR2_thunderx2t99 + bool "thunderx2t99" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_thunderx2t99p1 + bool "thunderx2t99p1" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +config BR2_vulcan + bool "vulcan" + select BR2_ARM_CPU_HAS_ARM if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_NEON if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_THUMB2 if !BR2_ARCH_IS_64 + select BR2_ARM_CPU_HAS_FP_ARMV8 + select BR2_ARM_CPU_ARMV8A + select BR2_ARCH_HAS_MMU_OPTIONAL + select BR2_ARCH_NEEDS_GCC_AT_LEAST_7 +endif # BR2_ARCH_IS_64 +endchoice + +config BR2_ARM_ENABLE_NEON + bool "Enable NEON SIMD extension support" + depends on BR2_ARM_CPU_MAYBE_HAS_NEON + select BR2_ARM_CPU_HAS_NEON + help + For some CPU cores, the NEON SIMD extension is optional. + Select this option if you are certain your particular + implementation has NEON support and you want to use it. + +config BR2_ARM_ENABLE_VFP + bool "Enable VFP extension support" + depends on BR2_ARM_CPU_MAYBE_HAS_VFPV2 + select BR2_ARM_CPU_HAS_VFPV4 if BR2_ARM_CPU_MAYBE_HAS_VFPV4 + select BR2_ARM_CPU_HAS_VFPV3 if BR2_ARM_CPU_MAYBE_HAS_VFPV3 + select BR2_ARM_CPU_HAS_VFPV2 if BR2_ARM_CPU_MAYBE_HAS_VFPV2 + help + For some CPU cores, the VFP extension is optional. Select + this option if you are certain your particular + implementation has VFP support and you want to use it. + +choice + prompt "Target ABI" + depends on BR2_arm || BR2_armeb + default BR2_ARM_EABIHF if BR2_ARM_CPU_HAS_VFPV2 + default BR2_ARM_EABI + help + Application Binary Interface to use. The Application Binary + Interface describes the calling conventions (how arguments + are passed to functions, how the return value is passed, how + system calls are made, etc.). + +config BR2_ARM_EABI + bool "EABI" + help + The EABI is currently the standard ARM ABI, which is used in + most projects. It supports both the 'soft' floating point + model (in which floating point instructions are emulated in + software) and the 'softfp' floating point model (in which + floating point instructions are executed using an hardware + floating point unit, but floating point arguments to + functions are passed in integer registers). + + The 'softfp' floating point model is link-compatible with + the 'soft' floating point model, i.e you can link a library + built 'soft' with some other code built 'softfp'. + + However, passing the floating point arguments in integer + registers is a bit inefficient, so if your ARM processor has + a floating point unit, and you don't have pre-compiled + 'soft' or 'softfp' code, using the EABIhf ABI will provide + better floating point performances. + + If your processor does not have a floating point unit, then + you must use this ABI. + +config BR2_ARM_EABIHF + bool "EABIhf" + depends on BR2_ARM_CPU_HAS_VFPV2 + help + The EABIhf is an extension of EABI which supports the 'hard' + floating point model. This model uses the floating point + unit to execute floating point instructions, and passes + floating point arguments in floating point registers. + + It is more efficient than EABI for floating point related + workload. However, it does not allow to link against code + that has been pre-built for the 'soft' or 'softfp' floating + point models. + + If your processor has a floating point unit, and you don't + depend on existing pre-compiled code, this option is most + likely the best choice. + +endchoice + +choice + prompt "Floating point strategy" + default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8 + default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4 + default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3 + default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2 + default BR2_ARM_SOFT_FLOAT if !BR2_ARM_CPU_HAS_VFPV2 + +config BR2_ARM_SOFT_FLOAT + bool "Soft float" + depends on BR2_ARM_EABI + select BR2_SOFT_FLOAT + help + This option allows to use software emulated floating + point. It should be used for ARM cores that do not include a + Vector Floating Point unit, such as ARMv5 cores (ARM926 for + example) or certain ARMv6 cores. + +config BR2_ARM_FPU_VFPV2 + bool "VFPv2" + depends on BR2_ARM_CPU_HAS_VFPV2 + help + This option allows to use the VFPv2 floating point unit, as + available in some ARMv5 processors (ARM926EJ-S) and some + ARMv6 processors (ARM1136JF-S, ARM1176JZF-S and ARM11 + MPCore). + + Note that this option is also safe to use for newer cores + such as Cortex-A, because the VFPv3 and VFPv4 units are + backward compatible with VFPv2. + +config BR2_ARM_FPU_VFPV3 + bool "VFPv3" + depends on BR2_ARM_CPU_HAS_VFPV3 + help + This option allows to use the VFPv3 floating point unit, as + available in some ARMv7 processors (Cortex-A{8, 9}). This + option requires a VFPv3 unit that has 32 double-precision + registers, which is not necessarily the case in all SOCs + based on Cortex-A{8, 9}. If you're unsure, use VFPv3-D16 + instead, which is guaranteed to work on all Cortex-A{8, 9}. + + Note that this option is also safe to use for newer cores + that have a VFPv4 unit, because VFPv4 is backward compatible + with VFPv3. They must of course also have 32 + double-precision registers. + +config BR2_ARM_FPU_VFPV3D16 + bool "VFPv3-D16" + depends on BR2_ARM_CPU_HAS_VFPV3 + help + This option allows to use the VFPv3 floating point unit, as + available in some ARMv7 processors (Cortex-A{8, 9}). This + option requires a VFPv3 unit that has 16 double-precision + registers, which is generally the case in all SOCs based on + Cortex-A{8, 9}, even though VFPv3 is technically optional on + Cortex-A9. This is the safest option for those cores. + + Note that this option is also safe to use for newer cores + such that have a VFPv4 unit, because the VFPv4 is backward + compatible with VFPv3. + +config BR2_ARM_FPU_VFPV4 + bool "VFPv4" + depends on BR2_ARM_CPU_HAS_VFPV4 + help + This option allows to use the VFPv4 floating point unit, as + available in some ARMv7 processors (Cortex-A{5, 7, 12, + 15}). This option requires a VFPv4 unit that has 32 + double-precision registers, which is not necessarily the + case in all SOCs based on Cortex-A{5, 7, 12, 15}. If you're + unsure, you should probably use VFPv4-D16 instead. + + Note that if you want binary code that works on all ARMv7 + cores, including the earlier Cortex-A{8, 9}, you should + instead select VFPv3. + +config BR2_ARM_FPU_VFPV4D16 + bool "VFPv4-D16" + depends on BR2_ARM_CPU_HAS_VFPV4 + help + This option allows to use the VFPv4 floating point unit, as + available in some ARMv7 processors (Cortex-A{5, 7, 12, + 15}). This option requires a VFPv4 unit that has 16 + double-precision registers, which is always available on + Cortex-A12 and Cortex-A15, but optional on Cortex-A5 and + Cortex-A7. + + Note that if you want binary code that works on all ARMv7 + cores, including the earlier Cortex-A{8, 9}, you should + instead select VFPv3-D16. + +config BR2_ARM_FPU_NEON + bool "NEON" + depends on BR2_ARM_CPU_HAS_NEON + help + This option allows to use the NEON SIMD unit, as available + in some ARMv7 processors, as a floating-point unit. It + should however be noted that using NEON for floating point + operations doesn't provide a complete compatibility with the + IEEE 754. + +config BR2_ARM_FPU_NEON_VFPV4 + bool "NEON/VFPv4" + depends on BR2_ARM_CPU_HAS_VFPV4 + depends on BR2_ARM_CPU_HAS_NEON + help + This option allows to use both the VFPv4 and the NEON SIMD + units for floating point operations. Note that some ARMv7 + cores do not necessarily have VFPv4 and/or NEON support, for + example on Cortex-A5 and Cortex-A7, support for VFPv4 and + NEON is optional. + +config BR2_ARM_FPU_FP_ARMV8 + bool "FP-ARMv8" + depends on BR2_ARM_CPU_HAS_FP_ARMV8 + help + This option allows to use the ARMv8 floating point unit. + +config BR2_ARM_FPU_NEON_FP_ARMV8 + bool "NEON/FP-ARMv8" + depends on BR2_ARM_CPU_HAS_FP_ARMV8 + depends on BR2_ARM_CPU_HAS_NEON + help + This option allows to use both the ARMv8 floating point unit + and the NEON SIMD unit for floating point operations. + +endchoice + +choice + prompt "ARM instruction set" + depends on BR2_arm || BR2_armeb + +config BR2_ARM_INSTRUCTIONS_ARM + bool "ARM" + depends on BR2_ARM_CPU_HAS_ARM + help + This option instructs the compiler to generate regular ARM + instructions, that are all 32 bits wide. + +config BR2_ARM_INSTRUCTIONS_THUMB + bool "Thumb" + depends on BR2_ARM_CPU_HAS_THUMB + # Thumb-1 and VFP are not compatible + depends on BR2_ARM_SOFT_FLOAT + help + This option instructions the compiler to generate Thumb + instructions, which allows to mix 16 bits instructions and + 32 bits instructions. This generally provides a much smaller + compiled binary size. + +comment "Thumb1 is not compatible with VFP" + depends on BR2_ARM_CPU_HAS_THUMB + depends on !BR2_ARM_SOFT_FLOAT + +config BR2_ARM_INSTRUCTIONS_THUMB2 + bool "Thumb2" + depends on BR2_ARM_CPU_HAS_THUMB2 + help + This option instructions the compiler to generate Thumb2 + instructions, which allows to mix 16 bits instructions and + 32 bits instructions. This generally provides a much smaller + compiled binary size. + +endchoice + +config BR2_ARCH + default "arm" if BR2_arm + default "armeb" if BR2_armeb + default "aarch64" if BR2_aarch64 + default "aarch64_be" if BR2_aarch64_be + +config BR2_ENDIAN + default "LITTLE" if (BR2_arm || BR2_aarch64) + default "BIG" if (BR2_armeb || BR2_aarch64_be) + +config BR2_GCC_TARGET_CPU + # armv4 + default "arm920t" if BR2_arm920t + default "arm922t" if BR2_arm922t + default "fa526" if BR2_fa526 + default "strongarm" if BR2_strongarm + # armv5 + default "arm926ej-s" if BR2_arm926t + default "iwmmxt" if BR2_iwmmxt + default "xscale" if BR2_xscale + # armv6 + default "arm1136j-s" if BR2_arm1136j_s + default "arm1136jf-s" if BR2_arm1136jf_s + default "arm1176jz-s" if BR2_arm1176jz_s + default "arm1176jzf-s" if BR2_arm1176jzf_s + default "mpcore" if BR2_arm11mpcore && BR2_ARM_CPU_HAS_VFPV2 + default "mpcorenovfp" if BR2_arm11mpcore + # armv7a + default "cortex-a5" if BR2_cortex_a5 + default "cortex-a7" if BR2_cortex_a7 + default "cortex-a8" if BR2_cortex_a8 + default "cortex-a9" if BR2_cortex_a9 + default "cortex-a12" if BR2_cortex_a12 + default "cortex-a15" if BR2_cortex_a15 + default "cortex-a15.cortex-a7" if BR2_cortex_a15_a7 + default "cortex-a17" if BR2_cortex_a17 + default "cortex-a17.cortex-a7" if BR2_cortex_a17_a7 + default "marvell-pj4" if BR2_pj4 + # armv7m + default "cortex-m3" if BR2_cortex_m3 + default "cortex-m4" if BR2_cortex_m4 + # armv8a + default "cortex-a32" if BR2_cortex_a32 + default "cortex-a35" if BR2_cortex_a35 + default "cortex-a53" if BR2_cortex_a53 + default "cortex-a57" if BR2_cortex_a57 + default "cortex-a57.cortex-a53" if BR2_cortex_a57_a53 + default "cortex-a72" if BR2_cortex_a72 + default "cortex-a72.cortex-a53" if BR2_cortex_a72_a53 + default "cortex-a73" if BR2_cortex_a73 + default "cortex-a73.cortex-a35" if BR2_cortex_a73_a35 + default "cortex-a73.cortex-a53" if BR2_cortex_a73_a53 + default "exynos-m1" if BR2_exynos_m1 + default "falkor" if BR2_falkor + default "qdf24xx" if BR2_qdf24xx + default "thunderx" if BR2_thunderx + default "thunderxt81" if BR2_thunderxt81 + default "thunderxt83" if BR2_thunderxt83 + default "thunderxt88" if BR2_thunderxt88 + default "thunderxt88p1" if BR2_thunderxt88p1 + default "xgene1" if BR2_xgene1 + # armv8.1a + default "thunderx2t99" if BR2_thunderx2t99 + default "thunderx2t99p1" if BR2_thunderx2t99p1 + default "vulcan" if BR2_vulcan + +config BR2_GCC_TARGET_ABI + default "aapcs-linux" if BR2_arm || BR2_armeb + default "lp64" if BR2_aarch64 || BR2_aarch64_be + +config BR2_GCC_TARGET_FPU + depends on BR2_arm || BR2_armeb + default "vfp" if BR2_ARM_FPU_VFPV2 + default "vfpv3" if BR2_ARM_FPU_VFPV3 + default "vfpv3-d16" if BR2_ARM_FPU_VFPV3D16 + default "vfpv4" if BR2_ARM_FPU_VFPV4 + default "vfpv4-d16" if BR2_ARM_FPU_VFPV4D16 + default "neon" if BR2_ARM_FPU_NEON + default "neon-vfpv4" if BR2_ARM_FPU_NEON_VFPV4 + default "fp-armv8" if BR2_ARM_FPU_FP_ARMV8 + default "neon-fp-armv8" if BR2_ARM_FPU_NEON_FP_ARMV8 + +config BR2_GCC_TARGET_FLOAT_ABI + default "soft" if BR2_ARM_SOFT_FLOAT + default "softfp" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABI + default "hard" if !BR2_ARM_SOFT_FLOAT && BR2_ARM_EABIHF + +config BR2_GCC_TARGET_MODE + default "arm" if BR2_ARM_INSTRUCTIONS_ARM + default "thumb" if BR2_ARM_INSTRUCTIONS_THUMB || BR2_ARM_INSTRUCTIONS_THUMB2 + +config BR2_READELF_ARCH_NAME + default "ARM" if BR2_arm || BR2_armeb + default "AArch64" if BR2_aarch64 || BR2_aarch64_be diff --git a/buildroot/arch/Config.in.bfin b/buildroot/arch/Config.in.bfin new file mode 100644 index 0000000..bd9589c --- /dev/null +++ b/buildroot/arch/Config.in.bfin @@ -0,0 +1,102 @@ +choice + prompt "Target CPU" + depends on BR2_bfin + default BR2_bf532 + help + Specify target CPU +config BR2_bf512 + bool "bf512" +config BR2_bf514 + bool "bf514" +config BR2_bf516 + bool "bf516" +config BR2_bf518 + bool "bf518" +config BR2_bf522 + bool "bf522" +config BR2_bf523 + bool "bf523" +config BR2_bf524 + bool "bf524" +config BR2_bf525 + bool "bf525" +config BR2_bf526 + bool "bf526" +config BR2_bf527 + bool "bf527" +config BR2_bf531 + bool "bf531" +config BR2_bf532 + bool "bf532" +config BR2_bf533 + bool "bf533" +config BR2_bf534 + bool "bf534" +config BR2_bf536 + bool "bf536" +config BR2_bf537 + bool "bf537" +config BR2_bf538 + bool "bf538" +config BR2_bf539 + bool "bf539" +config BR2_bf542 + bool "bf542" +config BR2_bf544 + bool "bf544" +config BR2_bf547 + bool "bf547" +config BR2_bf548 + bool "bf548" +config BR2_bf549 + bool "bf549" +config BR2_bf561 + bool "bf561" +endchoice + +config BR2_ARCH + default "bfin" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_GCC_TARGET_CPU + default bf606 if BR2_bf606 + default bf607 if BR2_bf607 + default bf608 if BR2_bf608 + default bf609 if BR2_bf609 + default bf512 if BR2_bf512 + default bf514 if BR2_bf514 + default bf516 if BR2_bf516 + default bf518 if BR2_bf518 + default bf522 if BR2_bf522 + default bf523 if BR2_bf523 + default bf524 if BR2_bf524 + default bf525 if BR2_bf525 + default bf526 if BR2_bf526 + default bf527 if BR2_bf527 + default bf531 if BR2_bf531 + default bf532 if BR2_bf532 + default bf533 if BR2_bf533 + default bf534 if BR2_bf534 + default bf536 if BR2_bf536 + default bf537 if BR2_bf537 + default bf538 if BR2_bf538 + default bf539 if BR2_bf539 + default bf542 if BR2_bf542 + default bf544 if BR2_bf544 + default bf547 if BR2_bf547 + default bf548 if BR2_bf548 + default bf549 if BR2_bf549 + default bf561 if BR2_bf561 + +config BR2_GCC_TARGET_CPU_REVISION + string "Target CPU revision" + help + Specify a target CPU revision, which will be appended to the + value of the -mcpu option. For example, if the selected CPU is + bf609, and then selected CPU revision is "0.0", then gcc will + receive the -mcpu=bf609-0.0 option. + +config BR2_READELF_ARCH_NAME + default "Analog Devices Blackfin" diff --git a/buildroot/arch/Config.in.csky b/buildroot/arch/Config.in.csky new file mode 100644 index 0000000..e88e4e2 --- /dev/null +++ b/buildroot/arch/Config.in.csky @@ -0,0 +1,48 @@ +choice + prompt "Target Architecture Variant" + default BR2_ck610 + help + Specific CPU variant to use + +config BR2_ck610 + bool "ck610" + +config BR2_ck807 + bool "ck807" + +config BR2_ck810 + bool "ck810" + +endchoice + +config BR2_CSKY_FPU + bool "Enable FPU coprocessor" + depends on BR2_ck810 || BR2_ck807 + help + You can say N here if your C-SKY CPU doesn't have a + Floating-Point Coprocessor or if you don't need FPU support + for your user-space programs. + +config BR2_CSKY_DSP + bool "Enable DSP enhanced instructions" + depends on BR2_ck810 || BR2_ck807 + +config BR2_ARCH + default "csky" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_GCC_TARGET_CPU + default "ck610" if (BR2_ck610 && !BR2_CSKY_FPU && !BR2_CSKY_DSP) + default "ck807" if (BR2_ck807 && !BR2_CSKY_FPU && !BR2_CSKY_DSP) + default "ck807e" if (BR2_ck807 && !BR2_CSKY_FPU && BR2_CSKY_DSP) + default "ck807f" if (BR2_ck807 && BR2_CSKY_FPU && !BR2_CSKY_DSP) + default "ck807ef" if (BR2_ck807 && BR2_CSKY_FPU && BR2_CSKY_DSP) + default "ck810" if (BR2_ck810 && !BR2_CSKY_FPU && !BR2_CSKY_DSP) + default "ck810e" if (BR2_ck810 && !BR2_CSKY_FPU && BR2_CSKY_DSP) + default "ck810f" if (BR2_ck810 && BR2_CSKY_FPU && !BR2_CSKY_DSP) + default "ck810ef" if (BR2_ck810 && BR2_CSKY_FPU && BR2_CSKY_DSP) + +config BR2_READELF_ARCH_NAME + default "CSKY" diff --git a/buildroot/arch/Config.in.m68k b/buildroot/arch/Config.in.m68k new file mode 100644 index 0000000..c56031c --- /dev/null +++ b/buildroot/arch/Config.in.m68k @@ -0,0 +1,40 @@ +config BR2_ARCH + default "m68k" if BR2_m68k + +config BR2_ENDIAN + default "BIG" + +# symbols used to distinguish between m68k and coldfire +# for gcc multilib +config BR2_m68k_m68k + bool + +config BR2_m68k_cf + bool + +# coldfire variants will be added later +choice + prompt "Target CPU" + depends on BR2_m68k + default BR2_m68k_68040 + help + Specific CPU variant to use + +config BR2_m68k_68040 + bool "68040" + select BR2_m68k_m68k + select BR2_ARCH_HAS_MMU_MANDATORY + +config BR2_m68k_cf5208 + bool "5208" + select BR2_m68k_cf + select BR2_SOFT_FLOAT + +endchoice + +config BR2_GCC_TARGET_CPU + default "68040" if BR2_m68k_68040 + default "5208" if BR2_m68k_cf5208 + +config BR2_READELF_ARCH_NAME + default "MC68000" diff --git a/buildroot/arch/Config.in.microblaze b/buildroot/arch/Config.in.microblaze new file mode 100644 index 0000000..042712a --- /dev/null +++ b/buildroot/arch/Config.in.microblaze @@ -0,0 +1,14 @@ +config BR2_ARCH + default "microblazeel" if BR2_microblazeel + default "microblaze" if BR2_microblazebe + +config BR2_ENDIAN + default "LITTLE" if BR2_microblazeel + default "BIG" if BR2_microblazebe + +config BR2_READELF_ARCH_NAME + default "Xilinx MicroBlaze" + +config BR2_microblaze + bool + default y if BR2_microblazeel || BR2_microblazebe diff --git a/buildroot/arch/Config.in.mips b/buildroot/arch/Config.in.mips new file mode 100644 index 0000000..f8e57ba --- /dev/null +++ b/buildroot/arch/Config.in.mips @@ -0,0 +1,241 @@ +# mips default CPU ISAs +config BR2_MIPS_CPU_MIPS32 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS32R2 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS32R5 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_MIPS_CPU_MIPS32R6 + bool + select BR2_MIPS_NAN_2008 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_MIPS_CPU_MIPS64 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS64R2 + bool + select BR2_MIPS_NAN_LEGACY +config BR2_MIPS_CPU_MIPS64R5 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 +config BR2_MIPS_CPU_MIPS64R6 + bool + select BR2_MIPS_NAN_2008 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +choice + prompt "Target Architecture Variant" + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default BR2_mips_32 if BR2_mips || BR2_mipsel + default BR2_mips_64 if BR2_mips64 || BR2_mips64el + help + Specific CPU variant to use + + 64bit cabable: 64, 64r2, 64r5, 64r6 + non-64bit capable: 32, 32r2, 32r5, 32r6 + +config BR2_mips_32 + bool "Generic MIPS32" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32 +config BR2_mips_32r2 + bool "Generic MIPS32R2" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R2 +config BR2_mips_32r5 + bool "Generic MIPS32R5" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 +config BR2_mips_32r6 + bool "Generic MIPS32R6" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R6 +config BR2_mips_interaptiv + bool "interAptiv" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R2 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_mips_m5150 + bool "M5150" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 + select BR2_MIPS_NAN_2008 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_mips_m6250 + bool "M6250" + depends on !BR2_ARCH_IS_64 + select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + select BR2_MIPS_CPU_MIPS32R6 +config BR2_mips_p5600 + bool "P5600" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R5 + select BR2_MIPS_NAN_2008 +config BR2_mips_xburst + bool "XBurst" + depends on !BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS32R2 + help + The Ingenic XBurst is a MIPS32R2 microprocessor. It has a + bug in the FPU that can generate incorrect results in + certain cases. The problem shows up when you have several + fused madd instructions in sequence with dependant + operands. This requires the -mno-fused-madd compiler option + to be used in order to prevent emitting these instructions. + + See http://www.ingenic.com/en/?xburst.html +config BR2_mips_64 + bool "Generic MIPS64" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64 +config BR2_mips_64r2 + bool "Generic MIPS64R2" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R2 +config BR2_mips_64r5 + bool "Generic MIPS64R5" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R5 +config BR2_mips_64r6 + bool "Generic MIPS64R6" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R6 +config BR2_mips_i6400 + bool "I6400" + depends on BR2_ARCH_IS_64 + select BR2_MIPS_CPU_MIPS64R6 + select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 +config BR2_mips_p6600 + bool "P6600" + depends on BR2_ARCH_IS_64 + select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT + select BR2_MIPS_CPU_MIPS64R6 +endchoice + + +choice + prompt "Target ABI" + depends on BR2_mips64 || BR2_mips64el + default BR2_MIPS_NABI32 + + help + Application Binary Interface to use + +config BR2_MIPS_NABI32 + bool "n32" + depends on BR2_ARCH_IS_64 + select BR2_KERNEL_64_USERLAND_32 +config BR2_MIPS_NABI64 + bool "n64" + depends on BR2_ARCH_IS_64 +endchoice + +config BR2_MIPS_SOFT_FLOAT + bool "Use soft-float" + default y + select BR2_SOFT_FLOAT + help + If your target CPU does not have a Floating Point Unit (FPU) + or a kernel FPU emulator, but you still wish to support + floating point functions, then everything will need to be + compiled with soft floating point support (-msoft-float). + +choice + prompt "FP mode" + depends on !BR2_ARCH_IS_64 && !BR2_MIPS_SOFT_FLOAT + default BR2_MIPS_FP32_MODE_XX + help + MIPS32 supports different FP modes (32,xx,64). Information about FP + modes can be found here: + https://sourceware.org/binutils/docs/as/MIPS-Options.html + https://dmz-portal.imgtec.com/wiki/MIPS_O32_ABI_-_FR0_and_FR1_Interlinking#5._Generating_modeless_code + +config BR2_MIPS_FP32_MODE_32 + bool "32" + depends on !BR2_MIPS_CPU_MIPS32R6 + +config BR2_MIPS_FP32_MODE_XX + bool "xx" + select BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + +config BR2_MIPS_FP32_MODE_64 + bool "64" + depends on !BR2_MIPS_CPU_MIPS32 +endchoice + +config BR2_GCC_TARGET_FP32_MODE + default "32" if BR2_MIPS_FP32_MODE_32 + default "xx" if BR2_MIPS_FP32_MODE_XX + default "64" if BR2_MIPS_FP32_MODE_64 + +config BR2_MIPS_NAN_LEGACY + bool + +config BR2_MIPS_NAN_2008 + bool + select BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + +choice + prompt "Target NaN" + depends on BR2_mips_32r5 || BR2_mips_64r5 + default BR2_MIPS_ENABLE_NAN_2008 + help + MIPS supports two different NaN encodings, legacy and 2008. + Information about MIPS NaN encodings can be found here: + https://sourceware.org/binutils/docs/as/MIPS-NaN-Encodings.html + +config BR2_MIPS_ENABLE_NAN_LEGACY + bool "legacy" + select BR2_MIPS_NAN_LEGACY + +config BR2_MIPS_ENABLE_NAN_2008 + bool "2008" + depends on !BR2_MIPS_SOFT_FLOAT + select BR2_MIPS_NAN_2008 +endchoice + +config BR2_GCC_TARGET_NAN + default "legacy" if BR2_MIPS_NAN_LEGACY + default "2008" if BR2_MIPS_NAN_2008 + +config BR2_ARCH + default "mips" if BR2_mips + default "mipsel" if BR2_mipsel + default "mips64" if BR2_mips64 + default "mips64el" if BR2_mips64el + +config BR2_ENDIAN + default "LITTLE" if BR2_mipsel || BR2_mips64el + default "BIG" if BR2_mips || BR2_mips64 + +config BR2_GCC_TARGET_ARCH + default "mips32" if BR2_mips_32 + default "mips32r2" if BR2_mips_32r2 + default "mips32r5" if BR2_mips_32r5 + default "mips32r6" if BR2_mips_32r6 + default "interaptiv" if BR2_mips_interaptiv + default "m5101" if BR2_mips_m5150 + default "m6201" if BR2_mips_m6250 + default "p5600" if BR2_mips_p5600 + default "mips32r2" if BR2_mips_xburst + default "mips64" if BR2_mips_64 + default "mips64r2" if BR2_mips_64r2 + default "mips64r5" if BR2_mips_64r5 + default "mips64r6" if BR2_mips_64r6 + default "i6400" if BR2_mips_i6400 + default "p6600" if BR2_mips_p6600 + +config BR2_MIPS_OABI32 + bool + default y if BR2_mips || BR2_mipsel + +config BR2_GCC_TARGET_ABI + default "32" if BR2_MIPS_OABI32 + default "n32" if BR2_MIPS_NABI32 + default "64" if BR2_MIPS_NABI64 + +config BR2_READELF_ARCH_NAME + default "MIPS R3000" diff --git a/buildroot/arch/Config.in.nios2 b/buildroot/arch/Config.in.nios2 new file mode 100644 index 0000000..7466331 --- /dev/null +++ b/buildroot/arch/Config.in.nios2 @@ -0,0 +1,8 @@ +config BR2_ARCH + default "nios2" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_READELF_ARCH_NAME + default "Altera Nios II" diff --git a/buildroot/arch/Config.in.or1k b/buildroot/arch/Config.in.or1k new file mode 100644 index 0000000..b31ab3e --- /dev/null +++ b/buildroot/arch/Config.in.or1k @@ -0,0 +1,8 @@ +config BR2_ARCH + default "or1k" + +config BR2_ENDIAN + default "BIG" + +config BR2_READELF_ARCH_NAME + default "OpenRISC 1000" diff --git a/buildroot/arch/Config.in.powerpc b/buildroot/arch/Config.in.powerpc new file mode 100644 index 0000000..0968412 --- /dev/null +++ b/buildroot/arch/Config.in.powerpc @@ -0,0 +1,218 @@ +config BR2_POWERPC_CPU_HAS_ALTIVEC + bool + +config BR2_POWERPC_CPU_HAS_SPE + bool + +choice + prompt "Target Architecture Variant" + default BR2_generic_powerpc + help + Specific CPU variant to use +config BR2_generic_powerpc + bool "generic" +config BR2_powerpc_401 + bool "401" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_403 + bool "403" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_405 + bool "405" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_405fp + bool "405 with FPU" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_440 + bool "440" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_440fp + bool "440 with FPU" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_464 + bool "464" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_464fp + bool "464 with FPU" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_476 + bool "476" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_476fp + bool "476 with FPU" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_505 + bool "505" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_601 + bool "601" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_602 + bool "602" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_603 + bool "603" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_603e + bool "603e" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_604 + bool "604" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_604e + bool "604e" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_620 + bool "620" +config BR2_powerpc_630 + bool "630" +config BR2_powerpc_740 + bool "740" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_7400 + bool "7400" + select BR2_POWERPC_CPU_HAS_ALTIVEC + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_7450 + bool "7450" + select BR2_POWERPC_CPU_HAS_ALTIVEC + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_750 + bool "750" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_821 + bool "821" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_823 + bool "823" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_860 + bool "860" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_970 + bool "970" + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_8540 + bool "8540 / e500v1" + depends on !BR2_ARCH_IS_64 + select BR2_POWERPC_CPU_HAS_SPE +config BR2_powerpc_8548 + bool "8548 / e500v2" + depends on !BR2_ARCH_IS_64 + select BR2_POWERPC_CPU_HAS_SPE +config BR2_powerpc_e300c2 + bool "e300c2" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_e300c3 + bool "e300c3" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_e500mc + bool "e500mc" + depends on !BR2_ARCH_IS_64 +config BR2_powerpc_e5500 + bool "e5500" + depends on !BR2_powerpc64le +config BR2_powerpc_e6500 + bool "e6500" + depends on !BR2_powerpc64le + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_power4 + bool "power4" +config BR2_powerpc_power5 + bool "power5" +config BR2_powerpc_power6 + bool "power6" + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_power7 + bool "power7" + select BR2_POWERPC_CPU_HAS_ALTIVEC +config BR2_powerpc_power8 + bool "power8" + select BR2_POWERPC_CPU_HAS_ALTIVEC +endchoice + +choice + prompt "Target ABI" + default BR2_powerpc_SPE if BR2_POWERPC_CPU_HAS_SPE + default BR2_powerpc_CLASSIC + help + Application Binary Interface to use + +config BR2_powerpc_CLASSIC + bool "Classic" + depends on !BR2_POWERPC_CPU_HAS_SPE +config BR2_powerpc_SPE + bool "SPE" + depends on BR2_POWERPC_CPU_HAS_SPE +endchoice + +config BR2_POWERPC_SOFT_FLOAT + bool "Use soft-float" + select BR2_SOFT_FLOAT + help + If your target CPU does not have a Floating Point Unit (FPU) + or a kernel FPU emulator, but you still wish to support + floating point functions, then everything will need to be + compiled with soft floating point support (-msoft-float). + +config BR2_ARCH + default "powerpc" if BR2_powerpc + default "powerpc64" if BR2_powerpc64 + default "powerpc64le" if BR2_powerpc64le + +config BR2_ENDIAN + default "BIG" if BR2_powerpc || BR2_powerpc64 + default "LITTLE" if BR2_powerpc64le + +config BR2_GCC_TARGET_CPU + default "401" if BR2_powerpc_401 + default "403" if BR2_powerpc_403 + default "405" if BR2_powerpc_405 + default "405fp" if BR2_powerpc_405fp + default "440" if BR2_powerpc_440 + default "440fp" if BR2_powerpc_440fp + default "464" if BR2_powerpc_464 + default "464fp" if BR2_powerpc_464fp + default "476" if BR2_powerpc_476 + default "476fp" if BR2_powerpc_476fp + default "505" if BR2_powerpc_505 + default "601" if BR2_powerpc_601 + default "602" if BR2_powerpc_602 + default "603" if BR2_powerpc_603 + default "603e" if BR2_powerpc_603e + default "604" if BR2_powerpc_604 + default "604e" if BR2_powerpc_604e + default "620" if BR2_powerpc_620 + default "630" if BR2_powerpc_630 + default "740" if BR2_powerpc_740 + default "7400" if BR2_powerpc_7400 + default "7450" if BR2_powerpc_7450 + default "750" if BR2_powerpc_750 + default "821" if BR2_powerpc_821 + default "823" if BR2_powerpc_823 + default "860" if BR2_powerpc_860 + default "970" if BR2_powerpc_970 + default "8540" if BR2_powerpc_8540 + default "8548" if BR2_powerpc_8548 + default "e300c2" if BR2_powerpc_e300c2 + default "e300c3" if BR2_powerpc_e300c3 + default "e500mc" if BR2_powerpc_e500mc + default "e5500" if BR2_powerpc_e5500 + default "e6500" if BR2_powerpc_e6500 + default "power4" if BR2_powerpc_power4 + default "power5" if BR2_powerpc_power5 + default "power6" if BR2_powerpc_power6 + default "power7" if BR2_powerpc_power7 + default "power8" if BR2_powerpc_power8 + +config BR2_GCC_TARGET_ABI + default "altivec" if BR2_PPC_ABI_altivec + default "no-altivec" if BR2_PPC_ABI_no-altivec + default "spe" if BR2_PPC_ABI_spe + default "no-spe" if BR2_PPC_ABI_no-spe + default "ibmlongdouble" if BR2_PPC_ABI_ibmlongdouble + default "ieeelongdouble" if BR2_PPC_ABI_ieeelongdouble + +config BR2_READELF_ARCH_NAME + default "PowerPC" if BR2_powerpc + default "PowerPC64" if BR2_powerpc64 || BR2_powerpc64le diff --git a/buildroot/arch/Config.in.sh b/buildroot/arch/Config.in.sh new file mode 100644 index 0000000..deb7244 --- /dev/null +++ b/buildroot/arch/Config.in.sh @@ -0,0 +1,32 @@ +choice + prompt "Target Architecture Variant" + depends on BR2_sh + default BR2_sh4 + help + Specific CPU variant to use + +config BR2_sh2a + bool "sh2a (SH2A big endian)" +config BR2_sh4 + bool "sh4 (SH4 little endian)" +config BR2_sh4eb + bool "sh4eb (SH4 big endian)" +config BR2_sh4a + bool "sh4a (SH4A little endian)" +config BR2_sh4aeb + bool "sh4aeb (SH4A big endian)" +endchoice + +config BR2_ARCH + default "sh2a" if BR2_sh2a + default "sh4" if BR2_sh4 + default "sh4eb" if BR2_sh4eb + default "sh4a" if BR2_sh4a + default "sh4aeb" if BR2_sh4aeb + +config BR2_ENDIAN + default "LITTLE" if BR2_sh4 || BR2_sh4a + default "BIG" if BR2_sh2a || BR2_sh4eb || BR2_sh4aeb + +config BR2_READELF_ARCH_NAME + default "Renesas / SuperH SH" diff --git a/buildroot/arch/Config.in.sparc b/buildroot/arch/Config.in.sparc new file mode 100644 index 0000000..9b6a6aa --- /dev/null +++ b/buildroot/arch/Config.in.sparc @@ -0,0 +1,34 @@ +choice + prompt "Target Architecture Variant" + depends on BR2_sparc || BR2_sparc64 + default BR2_sparc_v8 if BR2_sparc + default BR2_sparc_v9 if BR2_sparc64 + help + Specific CPU variant to use + +config BR2_sparc_v8 + bool "v8" + depends on BR2_sparc +config BR2_sparc_leon3 + bool "leon3" + depends on BR2_sparc +config BR2_sparc_v9 + bool "v9" + depends on BR2_sparc64 +endchoice + +config BR2_ARCH + default "sparc" if BR2_sparc + default "sparc64" if BR2_sparc64 + +config BR2_ENDIAN + default "BIG" + +config BR2_GCC_TARGET_CPU + default "leon3" if BR2_sparc_leon3 + default "v8" if BR2_sparc_v8 + default "ultrasparc" if BR2_sparc_v9 + +config BR2_READELF_ARCH_NAME + default "Sparc" if BR2_sparc + default "Sparc v9" if BR2_sparc64 diff --git a/buildroot/arch/Config.in.x86 b/buildroot/arch/Config.in.x86 new file mode 100644 index 0000000..8e623b3 --- /dev/null +++ b/buildroot/arch/Config.in.x86 @@ -0,0 +1,292 @@ +# i386/x86_64 cpu features +config BR2_X86_CPU_HAS_MMX + bool +config BR2_X86_CPU_HAS_SSE + bool +config BR2_X86_CPU_HAS_SSE2 + bool +config BR2_X86_CPU_HAS_SSE3 + bool +config BR2_X86_CPU_HAS_SSSE3 + bool +config BR2_X86_CPU_HAS_SSE4 + bool +config BR2_X86_CPU_HAS_SSE42 + bool +config BR2_X86_CPU_HAS_AVX + bool +config BR2_X86_CPU_HAS_AVX2 + bool + +choice + prompt "Target Architecture Variant" + depends on BR2_i386 || BR2_x86_64 + default BR2_x86_i586 if BR2_i386 + help + Specific CPU variant to use + +config BR2_x86_i486 + bool "i486" + depends on !BR2_x86_64 +config BR2_x86_i586 + bool "i586" + depends on !BR2_x86_64 +config BR2_x86_x1000 + bool "x1000" + depends on !BR2_x86_64 + help + The Intel X1000 is a Pentium class microprocessor in the + Quark (sub-Atom) Product Line. The X1000 has a bug on the + lock prefix requiring that prefix must be stripped at build + time. + + See https://en.wikipedia.org/wiki/Intel_Quark + +config BR2_x86_i686 + bool "i686" + depends on !BR2_x86_64 +config BR2_x86_pentiumpro + bool "pentium pro" + depends on !BR2_x86_64 +config BR2_x86_pentium_mmx + bool "pentium MMX" + select BR2_X86_CPU_HAS_MMX + depends on !BR2_x86_64 +config BR2_x86_pentium_m + bool "pentium mobile" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + depends on !BR2_x86_64 +config BR2_x86_pentium2 + bool "pentium2" + select BR2_X86_CPU_HAS_MMX + depends on !BR2_x86_64 +config BR2_x86_pentium3 + bool "pentium3" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + depends on !BR2_x86_64 +config BR2_x86_pentium4 + bool "pentium4" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + depends on !BR2_x86_64 +config BR2_x86_prescott + bool "prescott" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + depends on !BR2_x86_64 +config BR2_x86_nocona + bool "nocona" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_core2 + bool "core2" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 +config BR2_x86_corei7 + bool "corei7" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 +config BR2_x86_corei7_avx + bool "corei7-avx" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX +config BR2_x86_core_avx2 + bool "core-avx2" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 + select BR2_X86_CPU_HAS_AVX + select BR2_X86_CPU_HAS_AVX2 +config BR2_x86_atom + bool "atom" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 +config BR2_x86_silvermont + bool "silvermont" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 +config BR2_x86_k6 + bool "k6" + select BR2_X86_CPU_HAS_MMX + depends on !BR2_x86_64 +config BR2_x86_k6_2 + bool "k6-2" + select BR2_X86_CPU_HAS_MMX + depends on !BR2_x86_64 +config BR2_x86_athlon + bool "athlon" + select BR2_X86_CPU_HAS_MMX + depends on !BR2_x86_64 +config BR2_x86_athlon_4 + bool "athlon-4" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + depends on !BR2_x86_64 +config BR2_x86_opteron + bool "opteron" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 +config BR2_x86_opteron_sse3 + bool "opteron w/ SSE3" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_barcelona + bool "barcelona" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 +config BR2_x86_jaguar + bool "jaguar" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 +config BR2_x86_steamroller + bool "steamroller" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + select BR2_X86_CPU_HAS_SSE2 + select BR2_X86_CPU_HAS_SSE3 + select BR2_X86_CPU_HAS_SSSE3 + select BR2_X86_CPU_HAS_SSE4 + select BR2_X86_CPU_HAS_SSE42 +config BR2_x86_geode + bool "geode" + # Don't include MMX support because there several variant of geode + # processor, some with MMX support, some without. + # See: http://en.wikipedia.org/wiki/Geode_%28processor%29 + depends on !BR2_x86_64 +config BR2_x86_c3 + bool "Via/Cyrix C3 (Samuel/Ezra cores)" + select BR2_X86_CPU_HAS_MMX + depends on !BR2_x86_64 +config BR2_x86_c32 + bool "Via C3-2 (Nehemiah cores)" + select BR2_X86_CPU_HAS_MMX + select BR2_X86_CPU_HAS_SSE + depends on !BR2_x86_64 +config BR2_x86_winchip_c6 + bool "IDT Winchip C6" + select BR2_X86_CPU_HAS_MMX + depends on !BR2_x86_64 +config BR2_x86_winchip2 + bool "IDT Winchip 2" + select BR2_X86_CPU_HAS_MMX + depends on !BR2_x86_64 +endchoice + +config BR2_ARCH + default "i486" if BR2_x86_i486 + default "i586" if BR2_x86_i586 + default "i586" if BR2_x86_x1000 + default "i586" if BR2_x86_pentium_mmx + default "i586" if BR2_x86_geode + default "i586" if BR2_x86_c3 + default "i686" if BR2_x86_c32 + default "i586" if BR2_x86_winchip_c6 + default "i586" if BR2_x86_winchip2 + default "i686" if BR2_x86_i686 + default "i686" if BR2_x86_pentium2 + default "i686" if BR2_x86_pentium3 + default "i686" if BR2_x86_pentium4 + default "i686" if BR2_x86_pentium_m + default "i686" if BR2_x86_pentiumpro + default "i686" if BR2_x86_prescott + default "i686" if BR2_x86_nocona && BR2_i386 + default "i686" if BR2_x86_core2 && BR2_i386 + default "i686" if BR2_x86_corei7 && BR2_i386 + default "i686" if BR2_x86_corei7_avx && BR2_i386 + default "i686" if BR2_x86_corei7_avx2 && BR2_i386 + default "i686" if BR2_x86_atom && BR2_i386 + default "i686" if BR2_x86_silvermont && BR2_i386 + default "i686" if BR2_x86_opteron && BR2_i386 + default "i686" if BR2_x86_opteron_sse3 && BR2_i386 + default "i686" if BR2_x86_barcelona && BR2_i386 + default "i686" if BR2_x86_jaguar && BR2_i386 + default "i686" if BR2_x86_steamroller && BR2_i386 + default "i686" if BR2_x86_k6 + default "i686" if BR2_x86_k6_2 + default "i686" if BR2_x86_athlon + default "i686" if BR2_x86_athlon_4 + default "x86_64" if BR2_x86_64 + +config BR2_ENDIAN + default "LITTLE" + +config BR2_GCC_TARGET_ARCH + default "i486" if BR2_x86_i486 + default "i586" if BR2_x86_i586 + default "i586" if BR2_x86_x1000 + default "pentium-mmx" if BR2_x86_pentium_mmx + default "i686" if BR2_x86_i686 + default "pentiumpro" if BR2_x86_pentiumpro + default "pentium-m" if BR2_x86_pentium_m + default "pentium2" if BR2_x86_pentium2 + default "pentium3" if BR2_x86_pentium3 + default "pentium4" if BR2_x86_pentium4 + default "prescott" if BR2_x86_prescott + default "nocona" if BR2_x86_nocona + default "core2" if BR2_x86_core2 + default "corei7" if BR2_x86_corei7 + default "corei7-avx" if BR2_x86_corei7_avx + default "core-avx2" if BR2_x86_core_avx2 + default "atom" if BR2_x86_atom + default "silvermont" if BR2_x86_silvermont + default "k8" if BR2_x86_opteron + default "k8-sse3" if BR2_x86_opteron_sse3 + default "barcelona" if BR2_x86_barcelona + default "btver2" if BR2_x86_jaguar + default "bdver3" if BR2_x86_steamroller + default "k6" if BR2_x86_k6 + default "k6-2" if BR2_x86_k6_2 + default "athlon" if BR2_x86_athlon + default "athlon-4" if BR2_x86_athlon_4 + default "winchip-c6" if BR2_x86_winchip_c6 + default "winchip2" if BR2_x86_winchip2 + default "c3" if BR2_x86_c3 + default "c3-2" if BR2_x86_c32 + default "geode" if BR2_x86_geode + +config BR2_READELF_ARCH_NAME + default "Intel 80386" if BR2_i386 + default "Advanced Micro Devices X86-64" if BR2_x86_64 diff --git a/buildroot/arch/Config.in.xtensa b/buildroot/arch/Config.in.xtensa new file mode 100644 index 0000000..5d5bcb4 --- /dev/null +++ b/buildroot/arch/Config.in.xtensa @@ -0,0 +1,52 @@ +choice + prompt "Target Architecture Variant" + depends on BR2_xtensa + default BR2_xtensa_fsf + +config BR2_XTENSA_CUSTOM + select BR2_ARCH_HAS_MMU_OPTIONAL + bool "Custom Xtensa processor configuration" + +config BR2_xtensa_fsf + select BR2_ARCH_HAS_MMU_MANDATORY + bool "fsf - Default configuration" + +endchoice + +config BR2_XTENSA_OVERLAY_FILE + string "Overlay file for custom configuration" + depends on BR2_XTENSA_CUSTOM + help + Enter the path to the overlay tarball for a custom processor + configuration. + + These overlay files are tar packages with updated configuration + files for various toolchain packages and Xtensa processor + configurations. They are provided by the processor vendor or + directly from Tensilica. + + The path can be either absolute, or relative to the top directory + of buildroot. + +choice + prompt "Target Architecture Endianness" + depends on BR2_XTENSA_CUSTOM + default BR2_XTENSA_LITTLE_ENDIAN + +config BR2_XTENSA_LITTLE_ENDIAN + bool "Little endian" + +config BR2_XTENSA_BIG_ENDIAN + bool "Big endian" + +endchoice + +config BR2_ENDIAN + default "LITTLE" if BR2_XTENSA_LITTLE_ENDIAN + default "BIG" if BR2_xtensa_fsf || BR2_XTENSA_BIG_ENDIAN + +config BR2_ARCH + default "xtensa" if BR2_xtensa + +config BR2_READELF_ARCH_NAME + default "Tensilica Xtensa Processor" diff --git a/buildroot/arch/arch.mk.xtensa b/buildroot/arch/arch.mk.xtensa new file mode 100644 index 0000000..2b6cd26 --- /dev/null +++ b/buildroot/arch/arch.mk.xtensa @@ -0,0 +1,36 @@ +################################################################################ +# This variable can be used by packages that need to extract the overlay. +# +# ARCH_XTENSA_OVERLAY_FILE is the path to the overlay tarball; empty if not +# using any overlay +# +# Example: +# ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +# tar xf $(ARCH_XTENSA_OVERLAY_FILE) -C $(@D) --strip-components=1 gcc +# endif +################################################################################ +BR_ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE)) +ifneq ($(filter http://% https://% ftp://% scp://%,$(BR_ARCH_XTENSA_OVERLAY_FILE)),) +ARCH_XTENSA_OVERLAY_URL = $(BR_ARCH_XTENSA_OVERLAY_FILE) +ARCH_XTENSA_OVERLAY_FILE = $(DL_DIR)/$(notdir $(BR_ARCH_XTENSA_OVERLAY_FILE)) +# Do not check that file, we can't know its hash +BR_NO_CHECK_HASH_FOR += $(notdir $(ARCH_XTENSA_OVERLAY_URL)) +else +ARCH_XTENSA_OVERLAY_FILE = $(BR_ARCH_XTENSA_OVERLAY_FILE) +endif + +################################################################################ +# arch-xtensa-overlay-extract -- extract an extensa overlay +# +# argument 1 is the path in which to extract +# argument 2 is the component to extract, one of: gcc, binutils, gdb, linux, +# u-boot +# +# Example: +# $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc) +################################################################################ +define arch-xtensa-overlay-extract + $(call suitable-extractor,$(ARCH_XTENSA_OVERLAY_FILE)) \ + $(ARCH_XTENSA_OVERLAY_FILE) | \ + $(TAR) --strip-components=1 -C $(1) $(TAR_OPTIONS) - $(2) +endef diff --git a/buildroot/board/acmesystems/aria-g25/genimage.cfg b/buildroot/board/acmesystems/aria-g25/genimage.cfg new file mode 100644 index 0000000..2e2eb12 --- /dev/null +++ b/buildroot/board/acmesystems/aria-g25/genimage.cfg @@ -0,0 +1,35 @@ +# Minimal SD card image for the Acmesystems Aria G25 + +image boot.vfat { + vfat { + file zImage { + image = "zImage" + } + + file at91-ariag25.dtb { + image = "at91-ariag25.dtb" + } + + file boot.bin { + image = "at91sam9x5_aria-sdcardboot-linux-zimage-dt-3.8.6.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/acmesystems/aria-g25/post-image.sh b/buildroot/board/acmesystems/aria-g25/post-image.sh new file mode 100755 index 0000000..2846f56 --- /dev/null +++ b/buildroot/board/acmesystems/aria-g25/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/acmesystems/aria-g25/readme.txt b/buildroot/board/acmesystems/aria-g25/readme.txt new file mode 100644 index 0000000..cb9e9ab --- /dev/null +++ b/buildroot/board/acmesystems/aria-g25/readme.txt @@ -0,0 +1,44 @@ +Acme Systems Aria G25 + +Build instructions +================== + +To build an image for the Aria G25 choose the configuration +corresponding to the Aria variant. + +For 128MB RAM variant type: + +$ make acmesystems_aria_g25_128mb_defconfig + +else for 256MB RAM variant type: + +$ make acmesystems_aria_g25_256mb_defconfig + +To customize the configuration choosed type: + +$ make menuconfig + +When you are ready to start building Buildroot type: + +$ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Write the bootable SD card image "sdcard.img" onto an SD card with +"dd" command: + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Assuming your Aria G25 baseboard has a MicroSD socket, for example +with the Terra baseboard, insert the microSD card into the baseboard +slot and power it. + +To get the kernel log messages you can use a DPI cable +(http://www.acmesystems.it/DPI) + +You can find additional informations, tutorials and a very +comprehensive documentation on http://www.acmesystems.it/aria. diff --git a/buildroot/board/acmesystems/arietta-g25/genimage.cfg b/buildroot/board/acmesystems/arietta-g25/genimage.cfg new file mode 100644 index 0000000..420f1b6 --- /dev/null +++ b/buildroot/board/acmesystems/arietta-g25/genimage.cfg @@ -0,0 +1,35 @@ +# Minimal SD card image for the Acmesystems Arietta G25 + +image boot.vfat { + vfat { + file zImage { + image = "zImage" + } + + file acme-arietta.dtb { + image = "at91-ariettag25.dtb" + } + + file boot.bin { + image = "at91sam9x5_arietta-sdcardboot-linux-zimage-dt-3.8.6.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/acmesystems/arietta-g25/post-image.sh b/buildroot/board/acmesystems/arietta-g25/post-image.sh new file mode 100755 index 0000000..2846f56 --- /dev/null +++ b/buildroot/board/acmesystems/arietta-g25/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/acmesystems/arietta-g25/readme.txt b/buildroot/board/acmesystems/arietta-g25/readme.txt new file mode 100644 index 0000000..f356b0a --- /dev/null +++ b/buildroot/board/acmesystems/arietta-g25/readme.txt @@ -0,0 +1,49 @@ +Acme Systems Arietta G25 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Arietta G25. With the current configuration +it will bring-up the board, and allow access through the serial console. + +You can find additional informations, tutorials and a very comprehensive +documentation on http://www.acmesystems.it/arietta. + +Build instructions +================== + +To build an image for the Arietta G25 choose the configuration +corresponding to the Arietta variant. + +For 128MB RAM variant type: + +$ make acmesystems_arietta_g25_128mb_defconfig + +else for 256MB RAM variant type: + +$ make acmesystems_arietta_g25_256mb_defconfig + +To customize the configuration chosen type: + +$ make menuconfig + +When you are ready to start building Buildroot type: + +$ make + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the microSD card into the Arietta slot and power it. + +The image just built is fairly basic and the only output +you will get is on serial console, please consider to use a DPI +cable (http://www.acmesystems.it/DPI) diff --git a/buildroot/board/altera/socrates_cyclone5/boot-env.txt b/buildroot/board/altera/socrates_cyclone5/boot-env.txt new file mode 100644 index 0000000..ed5b613 --- /dev/null +++ b/buildroot/board/altera/socrates_cyclone5/boot-env.txt @@ -0,0 +1,8 @@ +linux_load_address=0x100000 +linux_dtb_load_address=0x100 +linux_dtb=socfpga_cyclone5_socrates.dtb +linux_load=mmc rescan; fatload mmc 0:1 ${linux_load_address} zImage; fatload mmc 0:1 ${linux_dtb_load_address} ${linux_dtb} +bootargs=console=ttyS0,115200 root=/dev/mmcblk0p3 ro rootwait +source_env=fatload mmc 0:1 0x2000000 boot.scr; source 0x2000000 +bootcmd=run linux_load; bootz ${linux_load_address} - ${linux_dtb_load_address} +bootdelay=1 diff --git a/buildroot/board/altera/socrates_cyclone5/genimage.cfg b/buildroot/board/altera/socrates_cyclone5/genimage.cfg new file mode 100644 index 0000000..63fef8b --- /dev/null +++ b/buildroot/board/altera/socrates_cyclone5/genimage.cfg @@ -0,0 +1,58 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "socfpga_cyclone5_socrates.dtb" + } + } + size = 8M +} + +image uboot.img { + hdimage { + partition-table = "no" + } + + partition spl { + in-partition-table = "no" + image = "u-boot-spl.bin.crc" + offset = 0 + size = 64k + } + + partition uboot-full { + in-partition-table = "no" + image = "u-boot.img" + offset = 256k + } + + size = 1M +} + +image sdcard.img { + hdimage { + } + + partition uboot-env { + in-partition-table = "no" + image = "uboot-env.bin" + offset = 17408 # 512 * 34 -> just after gpt + } + + partition boot { + partition-type = 0xc + bootable = "true" + image = "boot.vfat" + } + + partition uboot { + partition-type = 0xa2 + image = "uboot.img" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 500M + } +} diff --git a/buildroot/board/altera/socrates_cyclone5/readme.txt b/buildroot/board/altera/socrates_cyclone5/readme.txt new file mode 100644 index 0000000..4e78fee --- /dev/null +++ b/buildroot/board/altera/socrates_cyclone5/readme.txt @@ -0,0 +1,52 @@ +EBV SoCrates Evaluation Board + +Intro +===== + +More information about this board can be found here: +https://rocketboards.org/foswiki/Documentation/EBVSoCratesEvaluationBoard + +Build +===== + +First, load socrates config for buildroot + + make socrates_cyclone5_defconfig + +Build everything + + make + +Following files will be generated in output/images + +. +├── boot.vfat +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── socfpga_cyclone5_socrates.dtb +├── u-boot-spl.bin +├── u-boot-spl.bin.crc +├── u-boot.bin +├── u-boot.img +├── uboot-env.bin +├── uboot.img +└── zImage + + +Creating bootable SD card +========================= + +Simply invoke + +dd if=output/images/sdcard.img of=/dev/sdX + +Where X is your SD card device (not partition) + +Booting +======= + +Pins 6:8 on P18 selector is used to determine boot device. To boot socrates from +sdcard set these pins to value 0x5 (101b). Remaining pins are used to determine +how to configure FPGA and are not associated with booting into Linux kernel. diff --git a/buildroot/board/arcturus/ppc-ucp1020/configs/linux-4.1.x.config b/buildroot/board/arcturus/ppc-ucp1020/configs/linux-4.1.x.config new file mode 100644 index 0000000..a371df8 --- /dev/null +++ b/buildroot/board/arcturus/ppc-ucp1020/configs/linux-4.1.x.config @@ -0,0 +1,269 @@ +CONFIG_PPC_85xx=y +CONFIG_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_CROSS_COMPILE="powerpc-linux-" +CONFIG_LOCALVERSION="-ANI-uCP1020-64EE512" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_DEFAULT_HOSTNAME="uCP1020-64EE512" +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_AUDIT=y +CONFIG_NO_HZ_IDLE=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=14 +CONFIG_SYSFS_DEPRECATED=y +CONFIG_BLK_DEV_INITRD=y +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +CONFIG_SYSCTL_SYSCALL=y +CONFIG_EMBEDDED=y +# CONFIG_SLUB_DEBUG is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_JUMP_LABEL=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +CONFIG_PARTITION_ADVANCED=y +CONFIG_MAC_PARTITION=y +# CONFIG_EFI_PARTITION is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_UCP1020_SOM=y +CONFIG_HIGHMEM=y +CONFIG_PREEMPT=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_MATH_EMULATION=y +CONFIG_MATH_EMULATION_HW_UNIMPLEMENTED=y +CONFIG_SWIOTLB=y +# CONFIG_COMPACTION is not set +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +# CONFIG_PCIEAER is not set +# CONFIG_PCIEASPM is not set +CONFIG_PCI_MSI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=y +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_SYN_COOKIES=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_IPV6 is not set +CONFIG_NETFILTER=y +CONFIG_BRIDGE_NETFILTER=y +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_FTP=y +CONFIG_NETFILTER_XT_TARGET_CONNMARK=y +CONFIG_NETFILTER_XT_TARGET_MARK=y +CONFIG_NETFILTER_XT_MATCH_COMMENT=y +CONFIG_NETFILTER_XT_MATCH_CONNMARK=y +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +CONFIG_NETFILTER_XT_MATCH_HELPER=y +CONFIG_NETFILTER_XT_MATCH_MARK=y +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y +CONFIG_NETFILTER_XT_MATCH_STATE=y +CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_NAT=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +CONFIG_IP_NF_TARGET_NETMAP=y +CONFIG_IP_NF_TARGET_REDIRECT=y +CONFIG_IP_NF_MANGLE=y +CONFIG_BRIDGE=y +CONFIG_VLAN_8021Q=y +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_HTB=y +CONFIG_CFG80211=y +# CONFIG_CFG80211_DEFAULT_PS is not set +CONFIG_MAC80211=y +# CONFIG_MAC80211_RC_MINSTREL is not set +CONFIG_UEVENT_HELPER_PATH="/bin/hotplug" +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_FTL=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_PHYSMAP_OF=y +CONFIG_MTD_M25P80=y +CONFIG_MTD_SST25L=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_PLATFORM=y +CONFIG_MTD_NAND_FSL_ELBC=y +CONFIG_MTD_NAND_FSL_UPM=y +CONFIG_MTD_SPI_NOR=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=131072 +CONFIG_EEPROM_AT25=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_LOGGING=y +CONFIG_NETDEVICES=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_CADENCE is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EXAR is not set +CONFIG_GIANFAR=y +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NET_VENDOR_XILINX is not set +CONFIG_MICREL_PHY=y +CONFIG_IWLWIFI=m +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +CONFIG_SERIO_LIBPS2=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_NOZOMI=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=2 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_NVRAM=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MPC=y +CONFIG_SPI=y +CONFIG_SPI_BITBANG=y +CONFIG_SPI_FSL_ESPI=y +CONFIG_SPI_SPIDEV=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_MPC8XXX=y +CONFIG_SENSORS_LM90=y +CONFIG_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_BOOKE_WDT=y +CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=36 +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=y +CONFIG_USB_GSPCA=y +CONFIG_USB_PWC=y +CONFIG_USB_ZR364XX=y +CONFIG_USB_STKWEBCAM=y +CONFIG_VIDEO_EM28XX=y +CONFIG_VIDEO_EM28XX_V4L2=y +# CONFIG_HID is not set +# CONFIG_USB_HID is not set +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_DYNAMIC_MINORS=y +CONFIG_USB_MON=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_FSL=y +CONFIG_USB_ACM=y +CONFIG_USB_WDM=y +CONFIG_USB_TMC=y +CONFIG_USB_STORAGE=y +CONFIG_USB_STORAGE_DEBUG=y +CONFIG_USB_MDC800=y +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_ESDHC=y +CONFIG_DMADEVICES=y +CONFIG_FSL_DMA=y +CONFIG_ASYNC_TX_DMA=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS_XATTR is not set +CONFIG_EXT4_FS=y +CONFIG_XFS_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_NTFS_FS=y +CONFIG_PROC_KCORE=y +CONFIG_TMPFS=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_WBUF_VERIFY=y +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RUBIN=y +CONFIG_CRAMFS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V4=y +CONFIG_NFSD=y +CONFIG_CIFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_DEBUG_PREEMPT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_CPU_STALL_INFO is not set +# CONFIG_FTRACE is not set +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_PCBC=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA1_PPC=y +CONFIG_CRYPTO_DEFLATE=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DEV_TALITOS=y diff --git a/buildroot/board/arcturus/ppc-ucp1020/patches/linux/0001-Arcturus-uCP1020-BSP-support.patch b/buildroot/board/arcturus/ppc-ucp1020/patches/linux/0001-Arcturus-uCP1020-BSP-support.patch new file mode 100644 index 0000000..7597127 --- /dev/null +++ b/buildroot/board/arcturus/ppc-ucp1020/patches/linux/0001-Arcturus-uCP1020-BSP-support.patch @@ -0,0 +1,462 @@ +From a243628639e12a4bd0a737eac78a12ed240cd137 Mon Sep 17 00:00:00 2001 +From: Oleksandr G Zhadan +Date: Mon, 18 Jul 2016 10:40:16 -0400 +Subject: [PATCH] Arcturus uCP1020 BSP support + +The uCP1020 product family (ucp1020) is an Arcturus Networks Inc. +System on Modules product featuring a NXP QorIQ P1020 CPU, +optionally populated with 1 or 2 Gig-Ethernet PHYs, +DDR3, NOR Flash, eMMC NAND Flash and/or SPI Flash. + +Signed-off-by: Oleksandr G Zhadan +Signed-off-by: Michael Durrant +--- + arch/powerpc/boot/dts/ucp1020.dts | 87 ++++++++++++ + arch/powerpc/boot/dts/ucp1020.dtsi | 211 ++++++++++++++++++++++++++++++ + arch/powerpc/platforms/85xx/Kconfig | 7 + + arch/powerpc/platforms/85xx/Makefile | 1 + + arch/powerpc/platforms/85xx/ucp1020_som.c | 92 +++++++++++++ + 5 files changed, 398 insertions(+) + create mode 100644 arch/powerpc/boot/dts/ucp1020.dts + create mode 100644 arch/powerpc/boot/dts/ucp1020.dtsi + create mode 100644 arch/powerpc/platforms/85xx/ucp1020_som.c + +diff --git a/arch/powerpc/boot/dts/ucp1020.dts b/arch/powerpc/boot/dts/ucp1020.dts +new file mode 100644 +index 0000000..291e70a +--- /dev/null ++++ b/arch/powerpc/boot/dts/ucp1020.dts +@@ -0,0 +1,87 @@ ++/* ++ * uCP1020 Tree Source (32-bit address map) ++ * ++ * Copyright 2013-2016 Arcturus Networks Inc. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are met: ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * * Neither the name of Freescale Semiconductor nor the ++ * names of its contributors may be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * ++ * ALTERNATIVELY, this software may be distributed under the terms of the ++ * GNU General Public License ("GPL") as published by the Free Software ++ * Foundation, either version 2 of that License or (at your option) any ++ * later version. ++ * ++ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY ++ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY ++ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ++ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++/include/ "fsl/p1020si-pre.dtsi" ++/ { ++ model = "arcturus,uCP1020"; ++ compatible = "arcturus,uCP1020"; ++ ++ memory { ++ device_type = "memory"; ++ }; ++ ++ lbc: localbus@ffe05000 { ++ reg = <0 0xffe05000 0 0x1000>; ++ ++ /* NOR Flash */ ++ ranges = <0x0 0x0 0x0 0xec000000 0x04000000>; ++ }; ++ ++ soc: soc@ffe00000 { ++ ranges = <0x0 0x0 0xffe00000 0x100000>; ++ }; ++ ++ pci0: pcie@ffe09000 { ++ ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000 ++ 0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>; ++ reg = <0 0xffe09000 0 0x1000>; ++ pcie@0 { ++ ranges = <0x2000000 0x0 0xa0000000 ++ 0x2000000 0x0 0xa0000000 ++ 0x0 0x20000000 ++ ++ 0x1000000 0x0 0x0 ++ 0x1000000 0x0 0x0 ++ 0x0 0x100000>; ++ }; ++ }; ++ ++ pci1: pcie@ffe0a000 { ++ reg = <0 0xffe0a000 0 0x1000>; ++ ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000 ++ 0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>; ++ pcie@0 { ++ ranges = <0x2000000 0x0 0x80000000 ++ 0x2000000 0x0 0x80000000 ++ 0x0 0x20000000 ++ ++ 0x1000000 0x0 0x0 ++ 0x1000000 0x0 0x0 ++ 0x0 0x100000>; ++ }; ++ }; ++}; ++ ++/include/ "ucp1020.dtsi" ++/include/ "fsl/p1020si-post.dtsi" +diff --git a/arch/powerpc/boot/dts/ucp1020.dtsi b/arch/powerpc/boot/dts/ucp1020.dtsi +new file mode 100644 +index 0000000..7cff949 +--- /dev/null ++++ b/arch/powerpc/boot/dts/ucp1020.dtsi +@@ -0,0 +1,211 @@ ++/* ++ * uCP1020 Device Tree Source stub (no addresses or top-level ranges) ++ * ++ * Copyright 2013-2016 Arcturus Networks Inc. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are met: ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * * Neither the name of Freescale Semiconductor nor the ++ * names of its contributors may be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * ++ * ALTERNATIVELY, this software may be distributed under the terms of the ++ * GNU General Public License ("GPL") as published by the Free Software ++ * Foundation, either version 2 of that License or (at your option) any ++ * later version. ++ * ++ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY ++ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY ++ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ++ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++&lbc { ++ nor@0,0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "cfi-flash"; ++ reg = <0x0 0x0 0x04000000>; ++ bank-width = <2>; ++ device-width = <1>; ++ ++ partition@100000 { ++ /* 7MB - PART 0 */ ++ reg = <0x00100000 0x00700000>; ++ label = "0"; ++ }; ++ ++ partition@800000 { ++ /* 32MB - PART 1 */ ++ reg = <0x0800000 0x02000000>; ++ label = "1"; ++ }; ++ ++ partition@2800000 { ++ /* 8MB - PART 2 */ ++ reg = <0x02800000 0x00800000>; ++ label = "2"; ++ }; ++ ++ partition@3000000 { ++ /* (16MB - 512K) - PART 3 JFFS 2 */ ++ reg = <0x03000000 0x00f80000>; ++ label = "3"; ++ }; ++ ++ partition@0 { ++ /* 512KB - bootloader[u-boot, uCbootloader] */ ++ reg = <0x0 0x00080000>; ++ label = "BOOT_SPI"; ++ }; ++ ++ partition@3f80000 { ++ /* 512KB - bootloade NOR r[u-boot, uCbootloader] */ ++ reg = <0x03f80000 0x00080000>; ++ label = "B"; ++ }; ++ ++ partition@80000 { ++ /* 256KB - bootloaders environment (uCenv) */ ++ reg = <0x00080000 0x00040000>; ++ ++ label = "E"; ++ }; ++ ++ partition@C0000 { ++ /* 256KB - bootloaders environment (u-boot) */ ++ reg = <0x000C0000 0x00040000>; ++ label = "UENV"; ++ }; ++ }; ++}; ++ ++&soc { ++ i2c@3000 { ++ spoc@14 { ++ compatible = "conexant,cx2070x"; ++ reg = <0x14>; ++ }; ++ }; ++ ++ i2c@3100 { ++ dtt@4C { ++ compatible = "national,lm90"; ++ reg = <0x4C>; ++ }; ++ }; ++ ++ spi@7000 { ++ flash@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "winbond,w25q80bl"; ++ reg = <0>; ++ spi-max-frequency = <40000000>; /* input clock */ ++ ++ partition@0 { ++ label = "SPI MBR"; ++ reg = <0x00000000 0x00002000>; ++ read-only; ++ }; ++ partition@2000 { ++ label = "SPI ENV"; ++ reg = <0x00002000 0x00006000>; ++ read-only; ++ }; ++ partition@8000 { ++ label = "SPI FS"; ++ reg = <0x00008000 0x000F8000>; ++ }; ++ }; ++ flash@3 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "spansion,s25fl008k"; ++ reg = <3>; ++ spi-max-frequency = <40000000>; /* input clock */ ++ partition@0 { ++ label = "SPI USER"; ++ reg = <0x00000000 0x00100000>; ++ }; ++ }; ++ }; ++ ++ usb@22000 { ++ phy_type = "ulpi"; ++ dr_mode = "host"; ++ }; ++ ++ mdio@24000 { ++ phy0: ethernet-phy@4 { ++ interrupt-parent = <&mpic>; ++ interrupts = <4 1>; ++ reg = <0x04>; ++ }; ++ ++ phy1: ethernet-phy@6 { ++ interrupt-parent = <&mpic>; ++ interrupts = <8 1>; ++ reg = <0x6>; ++ }; ++ }; ++ ++ enet0: ethernet@b0000 { ++ phy-handle = <&phy0>; ++ phy-connection-type = "rgmii-id"; ++ }; ++ ++ enet1: ethernet@b1000 { ++ status = "disabled"; ++ }; ++ ++ enet2: ethernet@b2000 { ++ phy-handle = <&phy1>; ++ phy-connection-type = "rgmii-id"; ++ }; ++ ++ gpio0: gpio@f000 { ++ compatible = "fsl,mpc8572-gpio", "fsl,pq3-gpio"; ++ reg = <0xf000 0x1000>; ++ interrupts = <47 2>; ++ interrupt-parent = <&mpic>; ++ #gpio-cells = <2>; ++ gpio-controller; ++ }; ++ ++ gpio-leds { ++ compatible = "gpio-leds"; ++ gpio5 { ++ label = "led1"; /* LED15 */ ++ gpios = <&gpio0 5 0>; ++ }; ++ gpio12 { ++ label = "led2"; /* LED16 */ ++ gpios = <&gpio0 12 0>; ++ }; ++ gpio13 { ++ label = "led3"; /* LED17 */ ++ gpios = <&gpio0 13 0>; ++ }; ++ gpio7 { ++ label = "led4"; /* LED18 */ ++ gpios = <&gpio0 7 0>; ++ }; ++ gpio6 { ++ label = "led5"; /* LED19 */ ++ gpios = <&gpio0 6 0>; ++ }; ++ }; ++}; +diff --git a/arch/powerpc/platforms/85xx/Kconfig b/arch/powerpc/platforms/85xx/Kconfig +index 2fb4b24..81a944f 100644 +--- a/arch/powerpc/platforms/85xx/Kconfig ++++ b/arch/powerpc/platforms/85xx/Kconfig +@@ -241,6 +241,13 @@ config SGY_CTS1000 + help + Enable this to support functionality in Servergy's CTS-1000 systems. + ++config UCP1020_SOM ++ bool "Arcturus uCP1020 Rev.1.3 System on Module" ++ select DEFAULT_UIMAGE ++ help ++ This option enables support for the Arcturus Networks Inc. ++ uCP1020 System on Module. ++ + config MVME2500 + bool "Artesyn MVME2500" + select DEFAULT_UIMAGE +diff --git a/arch/powerpc/platforms/85xx/Makefile b/arch/powerpc/platforms/85xx/Makefile +index 1fe7fb9..84f2b9a 100644 +--- a/arch/powerpc/platforms/85xx/Makefile ++++ b/arch/powerpc/platforms/85xx/Makefile +@@ -31,4 +31,5 @@ obj-$(CONFIG_XES_MPC85xx) += xes_mpc85xx.o + obj-$(CONFIG_GE_IMP3A) += ge_imp3a.o + obj-$(CONFIG_PPC_QEMU_E500) += qemu_e500.o + obj-$(CONFIG_SGY_CTS1000) += sgy_cts1000.o ++obj-$(CONFIG_UCP1020_SOM) += ucp1020_som.o + obj-$(CONFIG_MVME2500) += mvme2500.o +diff --git a/arch/powerpc/platforms/85xx/ucp1020_som.c b/arch/powerpc/platforms/85xx/ucp1020_som.c +new file mode 100644 +index 0000000..777e8ad +--- /dev/null ++++ b/arch/powerpc/platforms/85xx/ucp1020_som.c +@@ -0,0 +1,92 @@ ++/* ++ * Arcturus Networks Inc. uCP1020 module Setup ++ * ++ * Copyright 2014-2016 Arcturus Networks Inc. ++ * ++ * by Oleksandr G Zhadan & Michael Durrant (www.ArcturusNetworks.com) ++ * ++ * 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. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include "smp.h" ++ ++#include "mpc85xx.h" ++ ++void __init ucp1020_som_pic_init(void) ++{ ++ struct mpic *mpic = mpic_alloc(NULL, 0, MPIC_BIG_ENDIAN | ++ MPIC_SINGLE_DEST_CPU, ++ 0, 256, " OpenPIC "); ++ ++ BUG_ON(mpic == NULL); ++ ++ mpic_init(mpic); ++} ++ ++/* ++ * Setup the architecture ++ */ ++static void __init ucp1020_som_setup_arch(void) ++{ ++ if (ppc_md.progress) ++ ppc_md.progress("uCP1020_SoM_setup_arch()", 0); ++ ++ mpc85xx_smp_init(); ++ ++ fsl_pci_assign_primary(); ++ pr_info("\n\t%s (http://www.arcturusnetworks.com)\n", ppc_md.name); ++} ++ ++machine_arch_initcall(ucp1020, mpc85xx_common_publish_devices); ++machine_arch_initcall(ucp1020, swiotlb_setup_bus_notifier); ++ ++/* ++ * Called very early, device-tree isn't unflattened ++ */ ++static int __init ucp1020_probe(void) ++{ ++ unsigned long root = of_get_flat_dt_root(); ++ ++ if (of_flat_dt_is_compatible(root, "arcturus,uCP1020")) ++ return 1; ++ return 0; ++} ++ ++define_machine(ucp1020) { ++ .name = "uCP1020 SoM - Arcturus Networks Inc.", ++ .probe = ucp1020_probe, ++ .setup_arch = ucp1020_som_setup_arch, ++ .init_IRQ = ucp1020_som_pic_init, ++#ifdef CONFIG_PCI ++ .pcibios_fixup_bus = fsl_pcibios_fixup_bus, ++#endif ++ .get_irq = mpic_get_irq, ++ .restart = fsl_rstcr_restart, ++ .calibrate_decr = generic_calibrate_decr, ++#ifdef DEBUG ++ .progress = udbg_progress, ++#endif ++}; +-- +2.1.4 + diff --git a/buildroot/board/arcturus/ppc-ucp1020/patches/linux/0002-p1020-esdhc-controller-reserved-bit.patch b/buildroot/board/arcturus/ppc-ucp1020/patches/linux/0002-p1020-esdhc-controller-reserved-bit.patch new file mode 100644 index 0000000..9694140 --- /dev/null +++ b/buildroot/board/arcturus/ppc-ucp1020/patches/linux/0002-p1020-esdhc-controller-reserved-bit.patch @@ -0,0 +1,28 @@ +From 4c74fd1266287deca0c1ff091071c5b8558b9735 Mon Sep 17 00:00:00 2001 +From: Oleksandr G Zhadan +Date: Mon, 18 Jul 2016 10:45:41 -0400 +Subject: [PATCH 1/1] p1020 esdhc controller reserved bit + +Prevent SDHCI core from writing reserved bits, where +p1020 reserved bit is SDHCI_CTRL_HISPD, not 0x01(SDHCI_CTRL_LED). + +Signed-off-by: Oleksandr G Zhadan +Signed-off-by: Michael Durrant +--- + drivers/mmc/host/sdhci-esdhc.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/mmc/host/sdhci-esdhc.h b/drivers/mmc/host/sdhci-esdhc.h +index a870c42..b45de0a 100644 +--- a/drivers/mmc/host/sdhci-esdhc.h ++++ b/drivers/mmc/host/sdhci-esdhc.h +@@ -45,6 +45,6 @@ + #define ESDHC_DMA_SYSCTL 0x40c + #define ESDHC_DMA_SNOOP 0x00000040 + +-#define ESDHC_HOST_CONTROL_RES 0x01 ++#define ESDHC_HOST_CONTROL_RES (SDHCI_CTRL_HISPD) + + #endif /* _DRIVERS_MMC_SDHCI_ESDHC_H */ +-- +2.1.4 diff --git a/buildroot/board/arcturus/ppc-ucp1020/patches/linux/0003-powerpc-ptrace-Fix-out-of-bounds-array-access-warning.patch b/buildroot/board/arcturus/ppc-ucp1020/patches/linux/0003-powerpc-ptrace-Fix-out-of-bounds-array-access-warning.patch new file mode 100644 index 0000000..aac15a1 --- /dev/null +++ b/buildroot/board/arcturus/ppc-ucp1020/patches/linux/0003-powerpc-ptrace-Fix-out-of-bounds-array-access-warning.patch @@ -0,0 +1,53 @@ +From 35b7ce4f8f290794d3b89db7461e8c568b5defa1 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 25 Apr 2016 09:19:17 -0700 +Subject: powerpc/ptrace: Fix out of bounds array access warning + +commit 1e407ee3b21f981140491d5b8a36422979ca246f upstream. + +gcc-6 correctly warns about a out of bounds access + +arch/powerpc/kernel/ptrace.c:407:24: warning: index 32 denotes an offset greater than size of 'u64[32][1] {aka long long unsigned int[32][1]}' [-Warray-bounds] + offsetof(struct thread_fp_state, fpr[32][0])); + ^ + +check the end of array instead of beginning of next element to fix this + +Signed-off-by: Khem Raj +Cc: Kees Cook +Cc: Michael Ellerman +Cc: Segher Boessenkool +Tested-by: Aaro Koskinen +Acked-by: Olof Johansson +Cc: Arnd Bergmann +Signed-off-by: Michael Ellerman +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Oleksandr Zhadan +--- + arch/powerpc/kernel/ptrace.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c +index f21897b..93f200f 100644 +--- a/arch/powerpc/kernel/ptrace.c ++++ b/arch/powerpc/kernel/ptrace.c +@@ -376,7 +376,7 @@ static int fpr_get(struct task_struct *target, const struct user_regset *regset, + + #else + BUILD_BUG_ON(offsetof(struct thread_fp_state, fpscr) != +- offsetof(struct thread_fp_state, fpr[32][0])); ++ offsetof(struct thread_fp_state, fpr[32])); + + return user_regset_copyout(&pos, &count, &kbuf, &ubuf, + &target->thread.fp_state, 0, -1); +@@ -404,7 +404,7 @@ static int fpr_set(struct task_struct *target, const struct user_regset *regset, + return 0; + #else + BUILD_BUG_ON(offsetof(struct thread_fp_state, fpscr) != +- offsetof(struct thread_fp_state, fpr[32][0])); ++ offsetof(struct thread_fp_state, fpr[32])); + + return user_regset_copyin(&pos, &count, &kbuf, &ubuf, + &target->thread.fp_state, 0, -1); +-- +cgit v1.1 diff --git a/buildroot/board/arcturus/ppc-ucp1020/readme.txt b/buildroot/board/arcturus/ppc-ucp1020/readme.txt new file mode 100644 index 0000000..c46fd80 --- /dev/null +++ b/buildroot/board/arcturus/ppc-ucp1020/readme.txt @@ -0,0 +1,73 @@ +Arcturus uCP1020 SoM +==================== + +This tutorial describes how to use the predefined Buildroot +configuration for the Arcturus uCP1020 SoM platform. + +Additional information about this module can be found at + + +Building +-------- + + make arcturus_ucp1020_defconfig + make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- rootfs.jffs2 + +-- rootfs.tar + +-- u-boot.bin + +-- ucp1020.dtb + +-- uImage + +Flashing +-------- + +You'll need to program the files created by buildroot into the NOR flash. + +1. Program the new U-Boot binary (optional) + If you don't feel confident upgrading your bootloader then don't do it, + it's unnecessary most of the time. + + B$ tftp u-boot.bin + B$ protect off 0xeff80000 +$filesize + B$ erase 0xeff80000 +$filesize + B$ cp.b $loadaddr 0xeff80000 $filesize + +2. Program the kernel + + B$ tftp uImage + B$ erase 0xec140000 +$filesize + B$ cp.b $loadaddr 0xec140000 $filesize + +3. Program the DTB + + B$ tftp ucp1020.dtb + B$ erase 0xec100000 +$filesize + B$ cp.b $loadaddr 0xec100000 $filesize + +4. Program the jffs2 root filesystem + + B$ tftp rootfs.jffs2 + B$ erase 0xec800000 0xee8fffff + B$ cp.b $loadaddr 0xec800000 $filesize + +5. Booting your new system + + B$ setenv norboot 'setenv bootargs root=/dev/mtdblock1 rootfstype=jffs2 console=$consoledev,$baudrate;bootm 0xec140000 - 0xec100000' + + If you want to set this boot option as default: + + B$ setenv bootcmd 'run norboot' + B$ saveenv + + ...or for a single boot: + + B$ run norboot + +Good Luck ! diff --git a/buildroot/board/arm/foundation-v8/readme.txt b/buildroot/board/arm/foundation-v8/readme.txt new file mode 100644 index 0000000..1dedf68 --- /dev/null +++ b/buildroot/board/arm/foundation-v8/readme.txt @@ -0,0 +1,19 @@ +This is the support for the ARM Foundation v8 machine emulated by the +ARM software simulator of the AArch64 architecture. + +First, one has to download the AArch64 software simulator from: + + https://silver.arm.com/download/download.tm?pv=2663527 + +Then, use the arm_foundationv8_defconfig configuration to build your +Buildroot system. + +Finally, boot your system with: + + ${LOCATION_OF_FOUNDATIONV8_SIMULATOR}/models/Linux64_GCC-4.7/Foundation_Platform \ + --image output/images/linux-system.axf \ + --block-device output/images/rootfs.ext2 \ + --network=nat + +You can get network access from within the simulated environment +by requesting an IP address using DHCP (run the command 'udhcpc'). diff --git a/buildroot/board/arm/juno/linux-juno-defconfig b/buildroot/board/arm/juno/linux-juno-defconfig new file mode 100644 index 0000000..64598d2 --- /dev/null +++ b/buildroot/board/arm/juno/linux-juno-defconfig @@ -0,0 +1,169 @@ +CONFIG_SMP=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_FHANDLE=y +CONFIG_AUDIT=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_MEMCG_KMEM=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_KALLSYMS_ALL=y +CONFIG_PROFILING=y +CONFIG_JUMP_LABEL=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_PCI=y +CONFIG_PCI_MSI=y +CONFIG_PCI_HOST_GENERIC=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI=y +CONFIG_NR_CPUS=6 +CONFIG_PREEMPT=y +CONFIG_KSM=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_CMA=y +CONFIG_CMDLINE="console=ttyAMA0" +CONFIG_COMPAT=y +CONFIG_CPU_IDLE=y +CONFIG_ARM_CPUIDLE=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_INTERACTIVE=y +CONFIG_ARM_BIG_LITTLE_CPUFREQ=y +CONFIG_ARM_DT_BL_CPUFREQ=y +CONFIG_ARM_SCPI_CPUFREQ=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_BPF_JIT=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_AHCI_PLATFORM=y +CONFIG_AHCI_XGENE=y +CONFIG_PATA_PLATFORM=y +CONFIG_PATA_OF_PLATFORM=y +CONFIG_NETDEVICES=y +CONFIG_TUN=y +CONFIG_SKY2=y +CONFIG_SMC91X=y +CONFIG_SMSC911X=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIO_AMBAKMI=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_XILINX_PS_UART=y +CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_SLAVE=y +CONFIG_SPI=y +CONFIG_SPI_PL022=y +CONFIG_PTP_1588_CLOCK=m +CONFIG_GPIO_PL061=y +CONFIG_GPIO_XGENE=y +CONFIG_POWER_RESET_XGENE=y +CONFIG_POWER_RESET_SYSCON=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_VEXPRESS=m +CONFIG_DRM=y +CONFIG_DRM_I2C_NXP_TDA998X=y +CONFIG_DRM_ARM=y +CONFIG_DRM_HDLCD=y +CONFIG_DRM_VIRTUAL_HDLCD=y +CONFIG_FB_ARMCLCD=y +CONFIG_LOGO=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_ISP1760=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_ULPI=y +CONFIG_MMC=y +CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SPI=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_EFI=y +CONFIG_RTC_DRV_PL030=y +CONFIG_RTC_DRV_PL031=y +CONFIG_DMADEVICES=y +CONFIG_PL330_DMA=y +CONFIG_COMMON_CLK_SCPI=y +CONFIG_ARM_TIMER_SP804=y +CONFIG_MAILBOX=y +CONFIG_ARM_MHU=y +CONFIG_PHY_XGENE=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_QUOTA=y +CONFIG_AUTOFS4_FS=y +CONFIG_FUSE_FS=y +CONFIG_CUSE=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_HUGETLBFS=y +CONFIG_EFIVAR_FS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_FS=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_KERNEL=y +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SECURITY=y +CONFIG_CRYPTO_ANSI_CPRNG=y +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SOC=y +CONFIG_SND_SIMPLE_CARD=y +CONFIG_SND_DESIGNWARE_I2S=y +CONFIG_CMA=y +CONFIG_CMA_SIZE_MBYTES=64 diff --git a/buildroot/board/arm/juno/readme.txt b/buildroot/board/arm/juno/readme.txt new file mode 100644 index 0000000..b292d96 --- /dev/null +++ b/buildroot/board/arm/juno/readme.txt @@ -0,0 +1,134 @@ +ARM Juno r1/r0 + +Intro +===== + +These instructions apply to all models of the ARM Juno: + - Juno r0 (does not support PCIe) + - Juno r1 (supports PCIe) + - Juno r2 (Big Cluster with A72) + +Buildroot will generate the kernel image, device tree blob, bootloader binaries +and a minimal root filesystem. + +How to build it +=============== + +Configure Buildroot +------------------- + +Configuring Buildroot is pretty simple, just execute: + + $ make arm_juno_defconfig + +Build the rootfs, kernel and DTB +-------------------------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while) + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- rootfs.tar + +-- juno.dtb (if Juno r0 is used) + +-- juno-r1.dtb (if Juno r1 is used) + +-- juno-r2.dtb (if Juno r2 is used) + +-- Image + +-- bl1.bin + +-- bl2.bin + +-- bl2u.bin + +-- bl31.bin + +-- fip.bin + +-- scp-fw.bin + +-- u-boot.bin + +Preparing your rootfs +====================== + +Format your pen drive as a ext3 filesystem by executing: + + $ mkfs.ext3 /dev/ + +Preparing your rootfs +====================== + +Format your pen drive as a ext3 filesystem by executing: + + $ mkfs.ext3 /dev/ + +Installing your rootfs +====================== + +After mounting the pen drive please execute the following: + + $ sudo tar -xvf output/images/rootfs.tar -C + +When completed make sure to unmount the device: + + $ umount + +Insert the pen drive in one of the ARM Juno' USB type A connectors. + +Configure *.dtb in the boot configuration for Juno r0 +===================================================== + +SITE1/HBI0262B/images.txt +..... +NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE +NOR3ADDRESS: 0x00C00000 ;Image Flash Address +NOR3FILE: \SOFTWARE\juno.dtb ;Image File Name +NOR3NAME: board.dtb ;Specify Image name to preserve file extension +NOR3LOAD: 00000000 ;Image Load Address +NOR3ENTRY: 00000000 ;Image Entry Point +...... + +Configure *.dtb in the boot configuration for Juno r1 +===================================================== + +SITE1/HBI0262C/images.txt +...... +NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE +NOR3ADDRESS: 0x00C00000 ;Image Flash Address +NOR3FILE: \SOFTWARE\juno-r1.dtb ;Image File Name +NOR3NAME: board.dtb ;Specify target filename to preserve file extension +NOR3LOAD: 00000000 ;Image Load Address +NOR3ENTRY: 00000000 ;Image Entry Point +...... + +Configure *.dtb in the boot configuration for Juno r2 +===================================================== + +SITE1/HBI0262D/images.txt +...... +NOR3UPDATE: AUTO ;Image Update:NONE/AUTO/FORCE +NOR3ADDRESS: 0x02000000 ;Image Flash Address +NOR3FILE: \SOFTWARE\juno-r2.dtb ;Image File Name +NOR3NAME: board.dtb ;Specify target filename to preserve file extension +NOR3LOAD: 00000000 ;Image Load Address +NOR3ENTRY: 00000000 ;Image Entry Point +...... + +Installing kernel image and DTB +=============================== + +1. Connect to the ARM Juno UART0 and execute USB_ON in the terminal +2. Connect a USB cable between your PC and ARM Juno USB type B connector + A mass storage device should appear in your desktop. +3. Open the software/ folder +4. Copy the 'Image' file to software/ +5. Copy the 'juno-r1.dtb' (r1), 'juno.dtb' (r0) or juno-r2.dtb (r2) file to software/ +6. Copy the bootloader binaries (bl1.bin and fip.bin) to software/ +7. Press the red button in the front pannel of ARM Juno + +At this time, the board will erase the Flash entry for each new item and +replace it with the lastest ones. diff --git a/buildroot/board/armadeus/apf27/linux-4.12.config b/buildroot/board/armadeus/apf27/linux-4.12.config new file mode 100644 index 0000000..d0fb5d3 --- /dev/null +++ b/buildroot/board/armadeus/apf27/linux-4.12.config @@ -0,0 +1,216 @@ +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_CGROUPS=y +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SLAB=y +CONFIG_PROFILING=y +CONFIG_OPROFILE=m +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +# CONFIG_ARCH_MULTI_V7 is not set +CONFIG_ARCH_MXC=y +CONFIG_MACH_IMX27_DT=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_PM_DEBUG=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_DIAG is not set +CONFIG_CAN=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_MCP251X=m +CONFIG_BT=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_HIDP=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_CFG80211=m +CONFIG_MAC80211=m +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_GEOMETRY=y +# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set +# CONFIG_MTD_CFI_I2 is not set +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_MXC=y +CONFIG_MTD_UBI=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_NETDEVICES=y +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CIRRUS is not set +# CONFIG_NET_VENDOR_FARADAY is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_SMSC_PHY=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_RT2X00=m +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RTL8187=m +CONFIG_RTL8192CU=m +CONFIG_ZD1211RW=m +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_GPIO=y +CONFIG_KEYBOARD_IMX=m +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_TOUCHSCREEN=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_IMX=y +CONFIG_SPI=y +CONFIG_SPI_IMX=y +CONFIG_SPI_SPIDEV=m +CONFIG_GPIO_SYSFS=y +CONFIG_W1=y +CONFIG_W1_MASTER_MXC=y +CONFIG_W1_SLAVE_THERM=y +CONFIG_WATCHDOG=y +CONFIG_IMX2_WDT=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_PWC=m +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_SOC_CAMERA=m +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +CONFIG_FB=y +# CONFIG_FB_MX3 is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_SOUND=m +CONFIG_SND=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=m +CONFIG_SND_IMX_SOC=m +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_MXC=y +CONFIG_USB_ACM=y +CONFIG_USB_PRINTER=y +CONFIG_USB_STORAGE=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_FTDI_SIO=y +CONFIG_USB_SERIAL_PL2303=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_ETH=m +CONFIG_USB_GADGETFS=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_HID=m +CONFIG_MMC=y +CONFIG_MMC_MXC=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_LEDS_TRIGGER_TRANSIENT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_DS1374=y +CONFIG_RTC_DRV_MXC=m +CONFIG_DMADEVICES=y +CONFIG_IMX_DMA=y +CONFIG_IMX_SDMA=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_IIO=y +CONFIG_MAX1027=y +CONFIG_MAX5821=y +CONFIG_PWM=y +CONFIG_PWM_IMX=y +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +# CONFIG_DNOTIFY is not set +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_TMPFS=y +CONFIG_JFFS2_FS=y +CONFIG_UBIFS_FS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=m +CONFIG_PRINTK_TIME=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_FS=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_DEBUG_PREEMPT is not set +# CONFIG_FTRACE is not set +CONFIG_DEBUG_LL=y +CONFIG_EARLY_PRINTK=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y diff --git a/buildroot/board/armadeus/apf51/linux-4.4.config b/buildroot/board/armadeus/apf51/linux-4.4.config new file mode 100644 index 0000000..6957b63 --- /dev/null +++ b/buildroot/board/armadeus/apf51/linux-4.4.config @@ -0,0 +1,278 @@ +CONFIG_EXPERIMENTAL=y +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SLAB=y +CONFIG_PROFILING=y +CONFIG_OPROFILE=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +CONFIG_PARTITION_ADVANCED=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_IOSCHED_CFQ is not set +CONFIG_ARCH_MXC=y +CONFIG_MXC_IRQ_PRIOR=y +CONFIG_SOC_IMX51=y +CONFIG_ARM_THUMBEE=y +CONFIG_PREEMPT=y +CONFIG_AEABI=y +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_IMX=y +CONFIG_CPU_IDLE=y +CONFIG_VFP=y +CONFIG_NEON=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_SUSPEND is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +CONFIG_IPV6=y +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_MCP251X=m +CONFIG_BT=m +CONFIG_BT_L2CAP=y +CONFIG_BT_SCO=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_HIDP=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_CFG80211=m +CONFIG_MAC80211=m +CONFIG_MAC80211_RC_PID=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_FW_LOADER=m +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_MXC=y +CONFIG_MTD_UBI=y +CONFIG_MISC_DEVICES=y +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_SCH=y +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_SMSC_PHY=y +CONFIG_NET_ETHERNET=y +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set +CONFIG_RTL8187=m +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_RT2X00=m +CONFIG_RT73USB=m +CONFIG_ZD1211RW=m +CONFIG_INPUT_JOYDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_IMX=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_WM831X=y +CONFIG_TOUCHSCREEN_MC13XXX=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_UINPUT=m +CONFIG_INPUT_WM831X_ON=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_IMX=y +CONFIG_SPI=y +CONFIG_SPI_IMX=y +CONFIG_SPI_SPIDEV=m +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_WM831X=m +CONFIG_POWER_SUPPLY=y +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_HWMON=m +CONFIG_SENSORS_AS1531=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_WM831X=m +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_NOWAYOUT=y +CONFIG_WM831X_WATCHDOG=m +CONFIG_IMX2_WDT=y +CONFIG_MFD_MC13XXX_I2C=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_MC13892=m +CONFIG_IMX_IPUV3_CORE=y +CONFIG_DRM=y +CONFIG_MFD_IMX_IPU_V3=y +CONFIG_MEDIA_SUPPORT=m +CONFIG_VIDEO_DEV=m +# CONFIG_RC_CORE is not set +# CONFIG_MEDIA_TUNER_SIMPLE is not set +# CONFIG_MEDIA_TUNER_TDA8290 is not set +# CONFIG_MEDIA_TUNER_TDA827X is not set +# CONFIG_MEDIA_TUNER_TDA18271 is not set +# CONFIG_MEDIA_TUNER_TDA9887 is not set +# CONFIG_MEDIA_TUNER_TEA5761 is not set +# CONFIG_MEDIA_TUNER_TEA5767 is not set +# CONFIG_MEDIA_TUNER_MT20XX is not set +# CONFIG_MEDIA_TUNER_MT2060 is not set +# CONFIG_MEDIA_TUNER_MT2266 is not set +# CONFIG_MEDIA_TUNER_MT2131 is not set +# CONFIG_MEDIA_TUNER_QT1010 is not set +# CONFIG_MEDIA_TUNER_XC2028 is not set +# CONFIG_MEDIA_TUNER_XC5000 is not set +# CONFIG_MEDIA_TUNER_MXL5005S is not set +# CONFIG_MEDIA_TUNER_MXL5007T is not set +# CONFIG_MEDIA_TUNER_MC44S803 is not set +# CONFIG_MEDIA_TUNER_MAX2165 is not set +# CONFIG_MEDIA_TUNER_TDA18218 is not set +CONFIG_VIDEO_VIVI=m +CONFIG_USB_VIDEO_CLASS=m +# CONFIG_RADIO_ADAPTERS is not set +CONFIG_FB=y +CONFIG_FB_MX5=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_SOUND=m +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SND=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=m +CONFIG_SND_IMX_SOC=m +CONFIG_SND_SOC_APF51_DEV_WM8960=m +CONFIG_USB=y +CONFIG_USB_DEBUG=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_MON=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_MXC=y +CONFIG_USB_ACM=y +CONFIG_USB_PRINTER=y +CONFIG_USB_WDM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_PHY=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_GPIO_VBUS=y +CONFIG_USB_ULPI=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DEBUG_FILES=y +CONFIG_USB_GADGET_DEBUG_FS=y +CONFIG_USB_ETH=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_G_MULTI=m +CONFIG_USB_G_MULTI_CDC=y +CONFIG_USB_G_HID=m +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MMC_SPI=m +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_MXC=y +CONFIG_RTC_DRV_WM831X=y +CONFIG_RTC_DRV_MC13XXX=m +CONFIG_STAGING=y +CONFIG_DRM_IMX=y +CONFIG_DRM_IMX_FB_HELPER=y +CONFIG_DRM_IMX_PARALLEL_DISPLAY=y +CONFIG_DRM_IMX_TVE=y +CONFIG_DRM_IMX_IPUV3=y +CONFIG_IIO=m +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XIP=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_UBIFS_FS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ISO8859_1=y +CONFIG_DEBUG_FS=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_HW is not set diff --git a/buildroot/board/armadeus/readme.txt b/buildroot/board/armadeus/readme.txt new file mode 100644 index 0000000..98c7b08 --- /dev/null +++ b/buildroot/board/armadeus/readme.txt @@ -0,0 +1,84 @@ +Introduction +============ + +Armadeus APFxx are Systems On Module (SOM) based on Freescale/NXP i.MX +processors associated with an FPGA (except on APF28). Non volatile +data are stored in on-module NOR or NAND Flash, depending on the +model. These SOM can be used on Armadeus development boards or with +custom docking boards. + +Supported platforms +=================== + +Buildroot currently supports the following Armadeus platforms with the +associated defconfigs: + + * APF27 SOM + devt board -> armadeus_apf27_defconfig + * APF51 SOM + devt board -> armadeus_apf51_defconfig + * APF28 SOM + devt board -> armadeus_apf28_defconfig + +Vanilla Linux versions are preferred to Freescale's one in these +configurations. + +How to build it +=============== + +Configure Buildroot +------------------- + +Let's say you own an APFxx SOM with it's corresponding development +board, all you have to do is: + + $ make armadeus_apfxx_defconfig + +where "apfxx" is the version of your SOM. + +Launch build +------------ + + $ make + +Result of the build +------------------- + +When the build is finished, you will end up with: + + output/images/ + ├── imx**-apfxxdev.dtb [1] + ├── rootfs.tar + ├── rootfs.ubi + ├── rootfs.ubifs + └── uImage + +[1] Only if the kernel version used uses a Device Tree. + +Building U-Boot is currently not supported in these configurations. + +Installation +============ + +You will require a serial connection to the board and a TFTP server on +your Host PC. Assuming your server is configured for exporting +/tftpboot/ directory, you will have to copy the generated images to +it: + + $ cp output/images/uImage /tftpboot/apfxx-linux.bin + $ cp output/images/*.dtb /tftpboot/ + $ cp output/images/rootfs.ubi /tftpboot/apfxx-rootfs.ubi + +where "apfxx" is the version of your SOM, as used with _defconfigs. + +Then on your serial terminal, all you have to do is: + +* interrupt the boot process and access U-Boot console by pressing any + key when booting, +* configure board and server IP addresses with "ipaddr" and "serverip" + environment variables, +* if you want to update kernel: + BIOS > run update_kernel +* if you want to update device tree: + BIOS > run update_dtb +* if you want to update rootfs: + BIOS > run update_rootfs + +That's it ! diff --git a/buildroot/board/atmel/at91sam9x5ek_mmc/genimage.cfg b/buildroot/board/atmel/at91sam9x5ek_mmc/genimage.cfg new file mode 100644 index 0000000..7a55266 --- /dev/null +++ b/buildroot/board/atmel/at91sam9x5ek_mmc/genimage.cfg @@ -0,0 +1,39 @@ +# Image for SD card boot on Atmel at91sam9x5ek boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91sam9g15ek.dtb", + "at91sam9g25ek.dtb", + "at91sam9g35ek.dtb", + "at91sam9x25ek.dtb", + "at91sam9x35ek.dtb", + "boot.bin", + "u-boot.bin" + } + + file uboot.env { + image = "uboot-env.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/atmel/at91sam9x5ek_mmc/uboot-env.txt b/buildroot/board/atmel/at91sam9x5ek_mmc/uboot-env.txt new file mode 100644 index 0000000..568e4bc --- /dev/null +++ b/buildroot/board/atmel/at91sam9x5ek_mmc/uboot-env.txt @@ -0,0 +1,7 @@ +bootargs=console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait video=Unknown-1:800x480-16 +bootcmd=fatload mmc 0:1 0x21000000 at91sam9g35ek.dtb; fatload mmc 0:1 0x22000000 zImage; bootz 0x22000000 - 0x21000000 +bootdelay=1 +ethact=gmac0 +stderr=serial +stdin=serial +stdout=serial diff --git a/buildroot/board/atmel/flasher.sh b/buildroot/board/atmel/flasher.sh new file mode 100755 index 0000000..c122760 --- /dev/null +++ b/buildroot/board/atmel/flasher.sh @@ -0,0 +1,135 @@ +#!/usr/bin/env bash + +BUILDIR=$1 +TTY=$2 +BOARD=$3 + +family_at91sam9g45m10ek="at91sam9m10g45ek" +mach_at91sam9g45m10ek="at91sam9m10-g45-ek" +dtb_at91sam9g45m10ek="at91sam9m10g45ek.dtb" + +family_at91sam9rlek="at91sam9rlek" +mach_at91sam9rlek="at91sam9rl64-ek" +dtb_at91sam9rlek="at91sam9rlek.dtb" + +family_at91sam9g15ek="at91sam9x5ek" +mach_at91sam9g15ek="at91sam9g15-ek" +dtb_at91sam9g15ek="at91sam9g15ek.dtb" + +family_at91sam9g25ek="at91sam9x5ek" +mach_at91sam9g25ek="at91sam9g25-ek" +dtb_at91sam9g25ek="at91sam9g25ek.dtb" + +family_at91sam9g35ek="at91sam9x5ek" +mach_at91sam9g35ek="at91sam9g35-ek" +dtb_at91sam9g35ek="at91sam9g35ek.dtb" + +family_at91sam9x25ek="at91sam9x5ek" +mach_at91sam9x25ek="at91sam9x25-ek" +dtb_at91sam9x25ek="at91sam9x25ek.dtb" + +family_at91sam9x35ek="at91sam9x5ek" +mach_at91sam9x35ek="at91sam9x35-ek" +dtb_at91sam9x35ek="at91sam9x35ek.dtb" + +family_sama5d31ek="sama5d3xek" +mach_sama5d31ek="at91sama5d3x-ek" +dtb_sama5d31ek="sama5d31ek.dtb" + +family_sama5d31ek_revc="sama5d3xek" +mach_sama5d31ek_revc="at91sama5d3x-ek" +dtb_sama5d31ek_revc="sama5d31ek_revc.dtb" + +family_sama5d33ek="sama5d3xek" +mach_sama5d33ek="at91sama5d3x-ek" +dtb_sama5d33ek="sama5d33ek.dtb" + +family_sama5d33ek_revc="sama5d3xek" +mach_sama5d33ek_revc="at91sama5d3x-ek" +dtb_sama5d33ek_revc="sama5d33ek_revc.dtb" + +family_sama5d34ek="sama5d3xek" +mach_sama5d34ek="at91sama5d3x-ek" +dtb_sama5d34ek="sama5d34ek.dtb" + +family_sama5d34ek_revc="sama5d3xek" +mach_sama5d34ek_revc="at91sama5d3x-ek" +dtb_sama5d34ek_revc="sama5d34ek_revc.dtb" + +family_sama5d35ek="sama5d3xek" +mach_sama5d35ek="at91sama5d3x-ek" +dtb_sama5d35ek="sama5d35ek.dtb" + +family_sama5d35ek_revc="sama5d3xek" +mach_sama5d35ek_revc="at91sama5d3x-ek" +dtb_sama5d35ek_revc="sama5d35ek_revc.dtb" + +family_sama5d36ek="sama5d3xek" +mach_sama5d36ek="at91sama5d3x-ek" +dtb_sama5d36ek="sama5d36ek.dtb" + +family_sama5d36ek_revc="sama5d3xek" +mach_sama5d36ek_revc="at91sama5d3x-ek" +dtb_sama5d36ek_revc="sama5d36ek_revc.dtb" + +family_sama5d3_xplained="sama5d3_xplained" +mach_sama5d3_xplained="at91sama5d3x-xplained" +dtb_sama5d3_xplained="at91-sama5d3_xplained.dtb" + +family_sama5d4ek="sama5d4ek" +mach_sama5d4ek="at91sama5d4x-ek" +dtb_sama5d4ek="at91-sama5d4ek.dtb" + +family_sama5d4_xplained="sama5d4_xplained" +mach_sama5d4_xplained="at91sama5d4x-ek" +dtb_sama5d4_xplained="at91-sama5d4_xplained.dtb" + +usage() { + cat << EOF +Usage: + $0 + +Available boards: + at91sam9g45m10ek + at91sam9rlek + at91sam9g15ek + at91sam9g25ek + at91sam9x25ek + at91sam9g35ek + at91sam9x35ek + sama5d31ek + sama5d33ek + sama5d34ek + sama5d35ek + sama5d36ek + sama5d31ek_revc (Until rev. C) + sama5d33ek_revc (Until rev. C) + sama5d34ek_revc (Until rev. C) + sama5d35ek_revc (Until rev. C) + sama5d36ek_revc (Until rev. C) + sama5d3_xplained + sama5d4ek + sama5d4_xplained + +Example: + $0 ./output /dev/ttyACM0 at91sam9g45m10ek +EOF +} + +F="family_$BOARD" +M="mach_$BOARD" +D="dtb_$BOARD" + +if [[ $# != 3 || -z ${!F} ]]; then + usage + exit 1 +fi + +video_mode="video=LVDS-1:800x480-16" +if [[ $BOARD == "*pda4" ]]; then + video_mode="video=LVDS-1:480x272-16" +fi + +echo "Executing: ${!F} O=$1/images $1/host/bin/sam-ba $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} ${!D} $video_mode" +export O=$1/images +$1/host/bin/sam-ba $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} ${!D} $video_mode diff --git a/buildroot/board/atmel/nandflash.tcl b/buildroot/board/atmel/nandflash.tcl new file mode 100644 index 0000000..3955b34 --- /dev/null +++ b/buildroot/board/atmel/nandflash.tcl @@ -0,0 +1,358 @@ +# ---------------------------------------------------------------------------- +# ATMEL Microcontroller +# ---------------------------------------------------------------------------- +# Copyright (c) 2015, Atmel Corporation +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# - Redistributions of source code must retain the above copyright notice, +# this list of conditions and the disclaimer below. +# +# Atmel's name may not be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE +# DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ---------------------------------------------------------------------------- + +################################################################################ +# Script data +################################################################################ +# DBGU address for rm9200, 9260/9g20, 9261/9g10, 9rl, 9x5 +set at91_base_dbgu0 0xfffff200 +# DBGU address for 9263, 9g45, sama5d3 +set at91_base_dbgu1 0xffffee00 +# DBGU address for sama5d4 +set at91_base_dbgu2 0xfc069000 + +set arch_exid_offset 0x44 + +# arch id +set arch_id_at91sam9g20 0x019905a0 +set arch_id_at91sam9g45 0x819b05a0 +set arch_id_at91sam9x5 0x819a05a0 +set arch_id_at91sam9n12 0x819a07a0 +set arch_id_sama5d3 0x8a5c07c0 + +## Find out at91sam9x5 variant to load the corresponding dtb file +array set at91sam9x5_variant { + 0x00000000 at91sam9g15 + 0x00000001 at91sam9g35 + 0x00000002 at91sam9x35 + 0x00000003 at91sam9g25 + 0x00000004 at91sam9x25 +} + +## Find out sama5d3 variant to load the corresponding dtb file +array set sama5d3_variant { + 0x00444300 sama5d31 + 0x00414300 sama5d33 + 0x00414301 sama5d34 + 0x00584300 sama5d35 + 0x00004301 sama5d36 +} + +## Find out sama5d4 variant +array set sama5d4_variant { + 0x00000001 sama5d41 + 0x00000002 sama5d42 + 0x00000003 sama5d43 + 0x00000004 sama5d44 +} + +################################################################################ +# proc uboot_env: Convert u-boot variables in a string ready to be flashed +# in the region reserved for environment variables +################################################################################ +proc set_uboot_env {nameOfLstOfVar} { + upvar $nameOfLstOfVar lstOfVar + + # sector size is the size defined in u-boot CFG_ENV_SIZE + set sectorSize [expr 0x20000 - 5] + + set strEnv [join $lstOfVar "\0"] + while {[string length $strEnv] < $sectorSize} { + append strEnv "\0" + } + # \0 between crc and strEnv is the flag value for redundant environment + set strCrc [binary format i [::vfs::crc $strEnv]] + return "$strCrc\0$strEnv" +} + +################################################################################ +proc find_variant_name {boardType} { + global at91_base_dbgu0 + global at91_base_dbgu1 + global at91_base_dbgu2 + global arch_exid_offset + global at91sam9x5_variant + global sama5d3_variant + global sama5d4_variant + set socName "none" + + switch $boardType { + at91sam9x5ek { + set exidAddr [expr {$at91_base_dbgu0 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get at91sam9x5_variant] { + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d3xek { + set exidAddr [expr {$at91_base_dbgu1 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d3_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d3_xplained { + set exidAddr [expr {$at91_base_dbgu1 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d3_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d4ek { + set exidAddr [expr {$at91_base_dbgu2 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d4_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + sama5d4_xplained { + set exidAddr [expr {$at91_base_dbgu2 + $arch_exid_offset}] + set chip_variant [format "0x%08x" [read_int $exidAddr]] + + foreach {key value} [array get sama5d4_variant] { + #puts "-I- === $chip_variant ? $key ($value) ===" + if {$key == $chip_variant} { + set socName "$value" + break; + } + } + } + } + + return "$socName" +} + +proc find_variant_ecc {boardType} { + set eccType "none" + + switch $boardType { + at91sam9x5ek { + set eccType 0xc0c00405 + } + at91sam9n12ek { + set eccType 0xc0c00405 + } + sama5d3xek { + set eccType 0xc0902405 + } + sama5d3_xplained { + set eccType 0xc0902405 + } + sama5d4ek { + set eccType 0xc1e04e07 + } + sama5d4_xplained { + set eccType 0xc1e04e07 + } + } + + puts "-I- === eccType is $eccType ===" + return $eccType +} + +proc get_kernel_load_addr {boardType} { + set kernel_load_addr 0x22000000 + + switch $boardType { + at91sam9m10g45ek { + set kernel_load_addr 0x72000000 + } + } + + return $kernel_load_addr +} + +proc get_dtb_load_addr {boardType} { + set dtb_load_addr 0x21000000 + + switch $boardType { + at91sam9m10g45ek { + set dtb_load_addr 0x71000000 + } + } + + return $dtb_load_addr +} + +################################################################################ +# Main script: Load the linux demo in NandFlash, +# Update the environment variables +################################################################################ + +################################################################################ + +# check for proper variable initialization +if {! [info exists boardFamily]} { + puts "-I- === Parsing script arguments ===" + if {! [info exists env(O)]} { + puts "-E- === Binaries path not defined ===" + exit + } + + set bootstrapFile "$env(O)/at91bootstrap.bin" + set ubootFile "$env(O)/u-boot.bin" + set kernelFile "$env(O)/zImage" + set rootfsFile "$env(O)/rootfs.ubi" + set build_uboot_env "yes" + + set i 1 + foreach arg $::argv { + puts "argument $i is $arg" + switch $i { + 4 { set boardFamily $arg } + 5 { set dtbFile "$env(O)/$arg" } + 6 { set videoMode $arg } + } + incr i + } +} + +puts "-I- === Board Family is $boardFamily ===" + +set pmeccConfig [find_variant_ecc $boardFamily] + +## Now check for the needed files +if {! [file exists $bootstrapFile]} { + puts "-E- === AT91Bootstrap file not found ===" + exit +} + +if {! [file exists $ubootFile]} { + puts "-E- === U-Boot file not found ===" + exit +} + +if {! [file exists $kernelFile]} { + puts "-E- === Linux kernel file not found ===" + exit +} + +if {! [file exists $dtbFile]} { + puts "-E- === Device Tree binary: $dtbFile file not found ===" + exit +} + +if {! [file exists $rootfsFile]} { + puts "-E- === Rootfs file not found ===" + exit +} + +## NandFlash Mapping +set bootStrapAddr 0x00000000 +set ubootAddr 0x00040000 +set ubootEnvAddr 0x000c0000 +set dtbAddr 0x00180000 +set kernelAddr 0x00200000 +set rootfsAddr 0x00800000 + +## u-boot variable +set kernelLoadAddr [get_kernel_load_addr $boardFamily] +set dtbLoadAddr [get_dtb_load_addr $boardFamily] + +## NandFlash Mapping +set kernelSize [format "0x%08X" [file size $kernelFile]] +set dtbSize [format "0x%08X" [file size $dtbFile]] +set bootCmd "bootcmd=nand read $dtbLoadAddr $dtbAddr $dtbSize; nand read $kernelLoadAddr $kernelAddr $kernelSize; bootz $kernelLoadAddr - $dtbLoadAddr" +set rootfsSize [format "0x%08X" [file size $rootfsFile]] + +lappend u_boot_variables \ + "bootdelay=1" \ + "baudrate=115200" \ + "stdin=serial" \ + "stdout=serial" \ + "stderr=serial" \ + "bootargs=console=ttyS0,115200 mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,256k(env),256k(env_redundant),256k(spare),512k(dtb),6M(kernel)ro,-(rootfs) rootfstype=ubifs ubi.mtd=7 root=ubi0:rootfs rw $videoMode" \ + "$bootCmd" + +## Additional files to load +set ubootEnvFile "ubootEnvtFileNandFlash.bin" + + +## Start flashing procedure ################################################## +puts "-I- === Initialize the NAND access ===" +NANDFLASH::Init + +if {$pmeccConfig != "none"} { + puts "-I- === Enable PMECC OS Parameters ===" + NANDFLASH::NandHeaderValue HEADER $pmeccConfig +} + +puts "-I- === Erase all the NAND flash blocs and test the erasing ===" +NANDFLASH::EraseAllNandFlash + +puts "-I- === Load AT91Bootstrap in the first sector ===" +if {$pmeccConfig != "none"} { + NANDFLASH::SendBootFilePmeccCmd $bootstrapFile +} else { + NANDFLASH::sendBootFile $bootstrapFile +} + +puts "-I- === Load u-boot in the next sectors ===" +send_file {NandFlash} "$ubootFile" $ubootAddr 0 + +if {$build_uboot_env == "yes"} { + puts "-I- === Load the u-boot environment variables ===" + set fh [open "$ubootEnvFile" w] + fconfigure $fh -translation binary + puts -nonewline $fh [set_uboot_env u_boot_variables] + close $fh + send_file {NandFlash} "$ubootEnvFile" $ubootEnvAddr 0 +} + +puts "-I- === Load the Kernel image and device tree database ===" +send_file {NandFlash} "$dtbFile" $dtbAddr 0 +send_file {NandFlash} "$kernelFile" $kernelAddr 0 + +if {$pmeccConfig != "none"} { + puts "-I- === Enable trimffs ===" + NANDFLASH::NandSetTrimffs 1 +} + +puts "-I- === Load the linux file system ===" +send_file {NandFlash} "$rootfsFile" $rootfsAddr 0 + +puts "-I- === DONE. ===" diff --git a/buildroot/board/atmel/readme.txt b/buildroot/board/atmel/readme.txt new file mode 100644 index 0000000..4f90e4b --- /dev/null +++ b/buildroot/board/atmel/readme.txt @@ -0,0 +1,173 @@ +This document explains how to set up a basic Buildroot system on various +Atmel boards. Additional details can also be found on the Linux4SAM website: +http://www.at91.com/linux4sam/bin/view/Linux4SAM/ + +This guide covers the following configurations: + - at91sam9g45m10ek_defconfig + - at91sam9rlek_defconfig + - at91sam9x5ek_defconfig (at91sam9g15, at91sam9g25, at91sam9x25, + at91sam9g35 and at91sam9x35) + - atmel_sama5d3xek_defconfig (sama5d31, sama5d33, sama5d34, sama5d35, + sama5d36) + - atmel_sama5d3_xplained_defconfig + - atmel_sama5d3_xplained_dev_defconfig + - atmel_sama5d3_xplained_mmc_defconfig + - atmel_sama5d3_xplained_mmc_dev_defconfig + - atmel_sama5d4_xplained_defconfig + - atmel_sama5d4_xplained_dev_defconfig + - atmel_sama5d4_xplained_mmc_defconfig + - atmel_sama5d4_xplained_mmc_dev_defconfig + - atmel_sama5d2_xplained_mmc_defconfig + - atmel_sama5d2_xplained_mmc_dev_defconfig + +These configurations will use AT91Bootstrap, u-boot and a linux kernel from +the git trees maintained by Atmel. + +The configurations labeled as 'dev' provide a development rootfs with tools to +tests the features of the SoC: +- ALSA tools to test audio +- FFMPEG to record video from the ISI/ISC +- I2C, SPI, CAN, etc. tools +- modetest for LCD screens, HDMI +- Wilc1000 firmware for the Atmel Wireless sdio module +- SSH for convenience +- GDB/GDB server for debug + +Configuring and building Buildroot +================================== + +For most configurations listed above, the Buildroot configuration +assumes the system will be flashed on NAND. In this case, after +building Buildroot, follow the instructions in the "Flashing the NAND +using SAM-BA" section below. + +For the Xplained boards, an alternative Buildroot configuration is +provided to boot from an SD card. Those configurations are labeled as +'mmc'. In this case, after building Buildroot, follow the instructions +in the "Preparing the SD card" section. + +To configure and build Buildroot, run: + + make _defconfig + make + +Flashing the NAND using SAM-BA +============================== + +Flashing the board +------------------ + +Connect the board: + o at91sam9g45m10ek: DBGU: J10, USB sam-ba: J14 + o at91sam9rlek: DBGU: J19, USB sam-ba: J21 + o at91sam9x5ek: DBGU: J11, USB sam-ba: J20 + o sama5d3xek: DBGU: J14, USB sam-ba: J20 + o sama5d3 Xplained: DBGU: J23, USB sam-ba: J6 + o sama5d4ek: DBGU: J22 or J24, USB sam-ba: J1 + o sama5d4 Xplained: DBGU: J1, USB sam-ba: J11 + +Start the board in RomBOOT: + o at91sam9g45m10ek: + 1. open JP8, JP10 and JP12 + 2. start the board + 3. close JP8, JP10 and JP12 + + o at91sam9rlek: + 1. J11 on 1-2 (BMS=1), open J12 and J13 + 2. start the board + 3. close J12 and J13 + + o at91sam9x5ek: + 1. open JP9 and: + - Cogent: open *NCS jumper + - Embest: open SW1 + - Ronetix: open J1 and J2 + 2. start the board + 3. close JP9 and: + - Cogent: close *NCS jumper + - Embest: close SW1 (ON position) + - Ronetix: close J1 and J2 + + o sama5d3xek: + 1. start the board + 2. push BP4 and BP1 + 3. release BP1 + 4. release BP4 + + o sama5d3 Xplained: + 1. open JP5 (NANDCS) and JP6 (SPICS) + 2. start the board + 3. close JP5 ans JP6 + + o sama5d4ek: + 1. start the board + 2. push BP3 and BP4 + 3. release BP4 + 4. release BP3 + + o sama5d4 Xplained: + 1. close JP7 (BOOT_DIS) + 2. start the board + 3. open JP7 + +"RomBOOT" should appear on your console (this should be ttyUSBx or ttyACMx) + +Now locate the USB sam-ba interface it should be ttyACMx, usually ttyACM0 +dmesg on your machine should give: +usb 1-2.1.4: New USB device found, idVendor=03eb, idProduct=6124 +usb 1-2.1.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0 +cdc_acm 1-2.1.4:1.0: ttyACM0: USB ACM device + +Look for idVendor=03eb, idProduct=6124, this is the interface you want to use. + +You can then flash the board using the provided flasher.sh script in board/atmel: + +board/atmel/flasher.sh + +For example, for an out of tree build made in +/tmp/atmel_sama5d3_xplained/ for the sama5d3 Xplained, you would use: +board/atmel/flasher.sh /tmp/atmel_sama5d3_xplained/ /dev/ttyACM0 sama5d3_xplained + +Reboot, the system should boot up to the buildroot login invite. + +Preparing the SD card +===================== + +An image named sdcard.img is automatically generated. With this image, +you no longer have to care about the creation of the partition and +copying files to the SD card. + +You need at least a 1GB SD card. All the data on the SD card will be +lost. To copy the image on the SD card: + +/!\ Caution be sure to do it on the right mmcblk device /!\ + +dd if=output/images/sdcard.img of=/dev/mmcblk0 + +Insert your SD card in your Xplained board, and enjoy. The default +U-Boot environment will load properly the kernel and Device Tree blob +from the first partition of the SD card, so everything works +automatically. + +By default a 16MB FAT partition is created. It contains at91bootstrap, +u-boot, the kernel image and all dtb variants for your board. The dtb +used is the basic one: + +U-Boot> print +[...] +bootcmd=fatload mmc 1:1 0x21000000 at91-sama5d2_xplained.dtb; fatload mmc 1:1 0x22000000 zImage; bootz 0x22000000 - 0x21000000 +[...] + +If you want to use a variant such as the _pda7 one, you will have to +update your u-boot environment: + +U-Boot> setenv bootcmd 'fatload mmc 1:1 0x21000000 at91-sama5d2_xplained_pda7.dtb; fatload mmc 1:1 0x22000000 zImage; bootz 0x22000000 - 0x21000000' +U-Boot> save +Saving Environment to FAT... +writing uboot.env +done + +A 512MB ext4 partition is also created to store the rootfs generated. + +If you want to customize the size of the partitions and their content, +take a look at the the genimage.cfg file in the board directory. diff --git a/buildroot/board/atmel/sama5d27_som1_ek_mmc/genimage.cfg b/buildroot/board/atmel/sama5d27_som1_ek_mmc/genimage.cfg new file mode 100644 index 0000000..f5222ff --- /dev/null +++ b/buildroot/board/atmel/sama5d27_som1_ek_mmc/genimage.cfg @@ -0,0 +1,34 @@ +# Image for SD card boot on Atmel SAMA5D2 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d27_som1_ek.dtb", + "at91-sama5d27_som1_ek_pda4.dtb", + "at91-sama5d27_som1_ek_pda7.dtb", + "at91-sama5d27_som1_ek_pda7b.dtb", + "boot.bin", + "u-boot.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg b/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg new file mode 100644 index 0000000..d3b7af5 --- /dev/null +++ b/buildroot/board/atmel/sama5d2_xplained_mmc/genimage.cfg @@ -0,0 +1,34 @@ +# Image for SD card boot on Atmel SAMA5D2 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d2_xplained.dtb", + "at91-sama5d2_xplained_pda4.dtb", + "at91-sama5d2_xplained_pda7.dtb", + "at91-sama5d2_xplained_pda7b.dtb", + "boot.bin", + "u-boot.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg b/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg new file mode 100644 index 0000000..277ce5f --- /dev/null +++ b/buildroot/board/atmel/sama5d3_xplained_mmc/genimage.cfg @@ -0,0 +1,34 @@ +# Image for SD card boot on Atmel SAMA5D3 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d3_xplained.dtb", + "at91-sama5d3_xplained_pda4.dtb", + "at91-sama5d3_xplained_pda7.dtb", + "at91-sama5d3_xplained_pda7b.dtb", + "boot.bin", + "u-boot.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg b/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg new file mode 100644 index 0000000..70bb3e4 --- /dev/null +++ b/buildroot/board/atmel/sama5d4_xplained_mmc/genimage.cfg @@ -0,0 +1,35 @@ +# Image for SD card boot on Atmel SAMA5D4 Xplained boards +# +image boot.vfat { + vfat { + files = { + "zImage", + "at91-sama5d4_xplained.dtb", + "at91-sama5d4_xplained_hdmi.dtb", + "at91-sama5d4_xplained_pda4.dtb", + "at91-sama5d4_xplained_pda7.dtb", + "at91-sama5d4_xplained_pda7b.dtb", + "boot.bin", + "u-boot.bin" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/avnet/s6lx9_microboard/lx9_mmu.dts b/buildroot/board/avnet/s6lx9_microboard/lx9_mmu.dts new file mode 100644 index 0000000..8ffedd9 --- /dev/null +++ b/buildroot/board/avnet/s6lx9_microboard/lx9_mmu.dts @@ -0,0 +1,247 @@ +/* + * Device Tree Generator version: 1.3 + * + * (C) Copyright 2007-2008 Xilinx, Inc. + * (C) Copyright 2007-2009 Michal Simek + * + * Michal SIMEK + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * CAUTION: This file is automatically generated by libgen. + * Version: Xilinx EDK 13.2 EDK_O.61xd + * + * XPS project directory: device-tree_bsp_230-orig + */ + +/dts-v1/; +/ { + #address-cells = <1>; + #size-cells = <1>; + compatible = "xlnx,microblaze"; + model = "testing"; + MCB3_LPDDR: memory@80000000 { + device_type = "memory"; + reg = < 0x80000000 0x4000000 >; + } ; + aliases { + ethernet0 = &Ethernet_MAC; + serial0 = &USB_Uart; + } ; + chosen { + bootargs = "console=ttyUL0"; + linux,stdout-path = "/axi@0/serial@40600000"; + } ; + cpus { + #address-cells = <1>; + #cpus = <0x1>; + #size-cells = <0>; + microblaze_0: cpu@0 { + clock-frequency = <66666667>; + compatible = "xlnx,microblaze-8.20.a"; + d-cache-baseaddr = <0x80000000>; + d-cache-highaddr = <0x83ffffff>; + d-cache-line-size = <0x10>; + d-cache-size = <0x2000>; + device_type = "cpu"; + i-cache-baseaddr = <0x80000000>; + i-cache-highaddr = <0x83ffffff>; + i-cache-line-size = <0x10>; + i-cache-size = <0x2000>; + model = "microblaze,8.20.a"; + reg = <0>; + timebase-frequency = <66666667>; + xlnx,addr-tag-bits = <0xd>; + xlnx,allow-dcache-wr = <0x1>; + xlnx,allow-icache-wr = <0x1>; + xlnx,area-optimized = <0x0>; + xlnx,avoid-primitives = <0x0>; + xlnx,branch-target-cache-size = <0x0>; + xlnx,cache-byte-size = <0x2000>; + xlnx,d-axi = <0x1>; + xlnx,d-lmb = <0x1>; + xlnx,d-plb = <0x0>; + xlnx,data-size = <0x20>; + xlnx,dcache-addr-tag = <0xd>; + xlnx,dcache-always-used = <0x1>; + xlnx,dcache-byte-size = <0x2000>; + xlnx,dcache-data-width = <0x0>; + xlnx,dcache-force-tag-lutram = <0x0>; + xlnx,dcache-interface = <0x0>; + xlnx,dcache-line-len = <0x4>; + xlnx,dcache-use-fsl = <0x0>; + xlnx,dcache-use-writeback = <0x0>; + xlnx,dcache-victims = <0x0>; + xlnx,debug-enabled = <0x1>; + xlnx,div-zero-exception = <0x0>; + xlnx,dynamic-bus-sizing = <0x1>; + xlnx,ecc-use-ce-exception = <0x0>; + xlnx,edge-is-positive = <0x1>; + xlnx,endianness = <0x1>; + xlnx,family = "spartan6"; + xlnx,fault-tolerant = <0x0>; + xlnx,fpu-exception = <0x0>; + xlnx,freq = <0x3f940ab>; + xlnx,fsl-data-size = <0x20>; + xlnx,fsl-exception = <0x0>; + xlnx,fsl-links = <0x0>; + xlnx,i-axi = <0x0>; + xlnx,i-lmb = <0x1>; + xlnx,i-plb = <0x0>; + xlnx,icache-always-used = <0x1>; + xlnx,icache-data-width = <0x0>; + xlnx,icache-force-tag-lutram = <0x0>; + xlnx,icache-interface = <0x0>; + xlnx,icache-line-len = <0x4>; + xlnx,icache-streams = <0x0>; + xlnx,icache-use-fsl = <0x0>; + xlnx,icache-victims = <0x0>; + xlnx,ill-opcode-exception = <0x0>; + xlnx,instance = "microblaze_0"; + xlnx,interconnect = <0x2>; + xlnx,interconnect-m-axi-dc-aw-register = <0x0>; + xlnx,interconnect-m-axi-dc-read-issuing = <0x2>; + xlnx,interconnect-m-axi-dc-w-register = <0x0>; + xlnx,interconnect-m-axi-dc-write-issuing = <0x20>; + xlnx,interconnect-m-axi-dp-read-issuing = <0x1>; + xlnx,interconnect-m-axi-dp-write-issuing = <0x1>; + xlnx,interconnect-m-axi-ic-read-issuing = <0x2>; + xlnx,interconnect-m-axi-ip-read-issuing = <0x1>; + xlnx,interrupt-is-edge = <0x0>; + xlnx,lockstep-slave = <0x0>; + xlnx,mmu-dtlb-size = <0x1>; + xlnx,mmu-itlb-size = <0x1>; + xlnx,mmu-privileged-instr = <0x0>; + xlnx,mmu-tlb-access = <0x3>; + xlnx,mmu-zones = <0x2>; + xlnx,number-of-pc-brk = <0x1>; + xlnx,number-of-rd-addr-brk = <0x0>; + xlnx,number-of-wr-addr-brk = <0x0>; + xlnx,opcode-0x0-illegal = <0x0>; + xlnx,optimization = <0x0>; + xlnx,pvr = <0x0>; + xlnx,pvr-user1 = <0x0>; + xlnx,pvr-user2 = <0x0>; + xlnx,reset-msr = <0x0>; + xlnx,sco = <0x0>; + xlnx,stream-interconnect = <0x0>; + xlnx,unaligned-exceptions = <0x0>; + xlnx,use-barrel = <0x1>; + xlnx,use-branch-target-cache = <0x0>; + xlnx,use-dcache = <0x1>; + xlnx,use-div = <0x0>; + xlnx,use-ext-brk = <0x1>; + xlnx,use-ext-nm-brk = <0x1>; + xlnx,use-extended-fsl-instr = <0x0>; + xlnx,use-fpu = <0x0>; + xlnx,use-hw-mul = <0x1>; + xlnx,use-icache = <0x1>; + xlnx,use-interrupt = <0x1>; + xlnx,use-mmu = <0x3>; + xlnx,use-msr-instr = <0x1>; + xlnx,use-pcmp-instr = <0x0>; + xlnx,use-stack-protection = <0x0>; + } ; + } ; + axi4lite_0: axi@0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "xlnx,axi-interconnect-1.03.a", "simple-bus"; + ranges ; + Ethernet_MAC: ethernet@40e00000 { + compatible = "xlnx,axi-ethernetlite-1.00.a", "xlnx,xps-ethernetlite-1.00.a"; + device_type = "network"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 2 0 >; + local-mac-address = [ 00 0a 35 aa de 00 ]; +// phy-handle = <&phy0>; + reg = < 0x40e00000 0x10000 >; + xlnx,duplex = <0x1>; + xlnx,family = "spartan6"; + xlnx,include-global-buffers = <0x0>; + xlnx,include-internal-loopback = <0x0>; + xlnx,include-mdio = <0x1>; + xlnx,include-phy-constraints = <0x1>; + xlnx,interconnect-s-axi-read-acceptance = <0x1>; + xlnx,interconnect-s-axi-write-acceptance = <0x1>; + xlnx,rx-ping-pong = <0x0>; + xlnx,s-axi-aclk-period-ps = <0x3a98>; + xlnx,s-axi-id-width = <0x1>; + xlnx,s-axi-supports-narrow-burst = <0x0>; + xlnx,tx-ping-pong = <0x0>; +/* + mdio { + #address-cells = <1>; + #size-cells = <0>; + phy0: phy@7 { + compatible = "marvell,88e1111"; + device_type = "ethernet-phy"; + reg = <7>; + } ; + } ; +*/ + } ; + SPI_FLASH: spi@40a00000 { + compatible = "xlnx,axi-spi-1.01.a", "xlnx,xps-spi-2.00.a"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 1 2 >; + reg = < 0x40a00000 0x10000 >; + xlnx,family = "spartan6"; + xlnx,fifo-exist = <0x1>; + xlnx,num-ss-bits = <0x1>; + xlnx,num-transfer-bits = <0x8>; + xlnx,sck-ratio = <0x4>; + } ; + USB_Uart: serial@40600000 { + clock-frequency = <66666667>; + compatible = "xlnx,axi-uartlite-1.02.a", "xlnx,xps-uartlite-1.00.a"; + current-speed = <115200>; + device_type = "serial"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 3 0 >; + port-number = <0>; + reg = < 0x40600000 0x10000 >; + xlnx,baudrate = <0x1c200>; + xlnx,data-bits = <0x8>; + xlnx,family = "spartan6"; + xlnx,odd-parity = <0x1>; + xlnx,s-axi-aclk-freq-hz = <0x3f940ab>; + xlnx,use-parity = <0x0>; + } ; + microblaze_0_intc: interrupt-controller@41200000 { + #interrupt-cells = <0x2>; + compatible = "xlnx,axi-intc-1.01.a", "xlnx,xps-intc-1.00.a"; + interrupt-controller ; + reg = < 0x41200000 0x10000 >; + xlnx,kind-of-intr = <0xc>; + xlnx,num-intr-inputs = <0x4>; + } ; + system_timer: timer@41c00000 { + clock-frequency = <66666667>; + compatible = "xlnx,axi-timer-1.02.a", "xlnx,xps-timer-1.00.a"; + interrupt-parent = <µblaze_0_intc>; + interrupts = < 0 2 >; + reg = < 0x41c00000 0x10000 >; + xlnx,count-width = <0x20>; + xlnx,family = "spartan6"; + xlnx,gen0-assert = <0x1>; + xlnx,gen1-assert = <0x1>; + xlnx,one-timer-only = <0x0>; + xlnx,trig0-assert = <0x1>; + xlnx,trig1-assert = <0x1>; + } ; + } ; +} ; diff --git a/buildroot/board/avnet/s6lx9_microboard/lx9_mmu_defconfig b/buildroot/board/avnet/s6lx9_microboard/lx9_mmu_defconfig new file mode 100644 index 0000000..5d01ca0 --- /dev/null +++ b/buildroot/board/avnet/s6lx9_microboard/lx9_mmu_defconfig @@ -0,0 +1,68 @@ +CONFIG_EXPERIMENTAL=y +CONFIG_SYSVIPC=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="rootfs.cpio" +CONFIG_INITRAMFS_COMPRESSION_GZIP=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_EXPERT=y +CONFIG_KALLSYMS_ALL=y +CONFIG_KALLSYMS_EXTRA_PASS=y +# CONFIG_HOTPLUG is not set +# CONFIG_BASE_FULL is not set +# CONFIG_FUTEX is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_SHMEM is not set +CONFIG_SLAB=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_OPT_LIB_ASM is not set +CONFIG_KERNEL_BASE_ADDR=0x80000000 +CONFIG_XILINX_MICROBLAZE0_FAMILY="spartan6" +CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 +# CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR is not set +CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 +CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=1 +CONFIG_XILINX_MICROBLAZE0_HW_VER="8.20.a" +CONFIG_HZ_100=y +CONFIG_MMU=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE_FORCE=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_LRO is not set +# CONFIG_IPV6 is not set +CONFIG_PROC_DEVICETREE=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_NETDEVICES=y +CONFIG_NET_ETHERNET=y +CONFIG_XILINX_EMACLITE=y +# CONFIG_INPUT is not set +# CONFIG_SERIO is not set +# CONFIG_VT is not set +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_HWMON is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_EXT2_FS=y +# CONFIG_DNOTIFY is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_CIFS=y +CONFIG_CIFS_STATS=y +CONFIG_CIFS_STATS2=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEBUG_SLAB=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_INFO=y +CONFIG_EARLY_PRINTK=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set diff --git a/buildroot/board/avnet/s6lx9_microboard/readme.txt b/buildroot/board/avnet/s6lx9_microboard/readme.txt new file mode 100644 index 0000000..3cb2ce9 --- /dev/null +++ b/buildroot/board/avnet/s6lx9_microboard/readme.txt @@ -0,0 +1,70 @@ +This is the buildroot board support for the Avnet Spartan6 LX9 MicroBoard. + +The Avnet S6LX9 Microboard is a small USB-Stick sized module containing +a Spartan6 FPGA capable of running the Microblaze softcore processor +together with RAM and FLASH memory. + +The board can be bought from Avnet (avnet.com) or from Trenz Electronic +(www.trenz-electronic.de) for a low price. + +To run the Linux built with buildroot you have to install the FPGA bitfile +and u-boot as described in the tutorial AvtS6LX9MicroBoard_SW302_PetaLinux +available on http://www.em.avnet.com/s6microboard + +On this site also is a forum containing information on how to build your own +Microblaze processor for the Microboard. + +The image file (default name is simpleImage.lx9_mmu.ub) has to be copied +to your tftp folder (often /tftpboot/) or can be programmed into the +board's SPI flash. + +Sample session: + +$ make s6lx9_microboard_defconfig +$ make +$ cp build/linux-/arch/microblaze/boot/simpleImage.lx9_mmu.ub /tftpboot/br12.2a.ub +$ minicom + + + Icache:ON + Dcache:ON + U-Boot Start:0x83f00000 +SF: Got idcode 20 ba 18 10 01 +*** Warning - bad CRC, using default environment + +Net: Xilinx_Emaclite +MAC: 00:0a:35:00:63:37 +U-BOOT for Avnet-LX9-Microboard-AXI-tiny-13.1 + +BOOTP broadcast 1 +DHCP client bound to address 192.168.11.122 +Hit any key to stop autoboot: 0 +U-Boot-PetaLinux> tftp br12.2a.ub +Using Xilinx_Emaclite device +TFTP from server 192.168.11.10; our IP address is 192.168.11.122 +Filename 'br12.2a.ub'. +Load address: 0x80002000 +Loading: ################################################################# + ################################################################# + ################################################################# + ################################################################# + ################################################################# + ############################## +done +Bytes transferred = 5207724 (4f76ac hex) +U-Boot-PetaLinux> bootm +## Booting kernel from Legacy Image at 80002000 ... + Image Name: Linux-3.1.0 + Image Type: MicroBlaze Linux Kernel Image (uncompressed) + Data Size: 5207660 Bytes = 5 MB + Load Address: 80000000 + Entry Point: 80000000 + Verifying Checksum ... OK + Loading Kernel Image ... OK +OK +## Transferring control to Linux (at address 80000000), 0x80000000 ramdisk 0x00000000, FDT 0x00000000... +Early console on uartlite at 0x40600000 +..... boot log skipped + +Welcome to Microblaze Buildroot +Microblaze login: diff --git a/buildroot/board/bananapi/bananapi-m1/boot.cmd b/buildroot/board/bananapi/bananapi-m1/boot.cmd new file mode 100644 index 0000000..0cf6f4d --- /dev/null +++ b/buildroot/board/bananapi/bananapi-m1/boot.cmd @@ -0,0 +1,7 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +mmc dev 0 +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun7i-a20-bananapi.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/bananapi/bananapi-m1/genimage.cfg b/buildroot/board/bananapi/bananapi-m1/genimage.cfg new file mode 100644 index 0000000..e2e1311 --- /dev/null +++ b/buildroot/board/bananapi/bananapi-m1/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun7i-a20-bananapi.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/bananapi/bananapi-m1/readme.txt b/buildroot/board/bananapi/bananapi-m1/readme.txt new file mode 100644 index 0000000..382ba63 --- /dev/null +++ b/buildroot/board/bananapi/bananapi-m1/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Bananapi M1. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Bananapi M1 link: +http://www.banana-pi.org/m1.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Bananapi+M1 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make bananapi_m1_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Bananapi M1 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/bananapi/bananapi-m64/boot.cmd b/buildroot/board/bananapi/bananapi-m64/boot.cmd new file mode 100644 index 0000000..d35c9b0 --- /dev/null +++ b/buildroot/board/bananapi/bananapi-m64/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-bananapi-m64.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/bananapi/bananapi-m64/genimage.cfg b/buildroot/board/bananapi/bananapi-m64/genimage.cfg new file mode 100644 index 0000000..9730d8f --- /dev/null +++ b/buildroot/board/bananapi/bananapi-m64/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-bananapi-m64.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/bananapi/bananapi-m64/readme.txt b/buildroot/board/bananapi/bananapi-m64/readme.txt new file mode 100644 index 0000000..0dec3e5 --- /dev/null +++ b/buildroot/board/bananapi/bananapi-m64/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Bananapi M64. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Bananapi M64 link: +http://www.banana-pi.org/m64.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Bananapi+M64 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make bananapi_m64_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Bananapi M64 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/beagleboardx15/genimage.cfg b/buildroot/board/beagleboardx15/genimage.cfg new file mode 100644 index 0000000..d27eff6 --- /dev/null +++ b/buildroot/board/beagleboardx15/genimage.cfg @@ -0,0 +1,26 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img" + } + } + size = 4M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/beagleboardx15/post-image.sh b/buildroot/board/beagleboardx15/post-image.sh new file mode 100755 index 0000000..f52682f --- /dev/null +++ b/buildroot/board/beagleboardx15/post-image.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/beagleboardx15/readme.txt b/buildroot/board/beagleboardx15/readme.txt new file mode 100644 index 0000000..56ebca8 --- /dev/null +++ b/buildroot/board/beagleboardx15/readme.txt @@ -0,0 +1,49 @@ +BeagleBoard X15 + +Intro +===== +This config currently supports the beagleboard x15, +and generates a barebone image. + +The image must be flashed to a SD card to be used. + +How to build it +=============== + + $ make beagleboardx15_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build a sdcard image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + ├── am57xx-beagle-x15.dtb + ├── am57xx-beagle-x15-revb1.dtb + ├── boot.vfat + ├── MLO + ├── rootfs.ext2 + ├── rootfs.ext4 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot.img + ├── u-boot-spl.bin + └── zImage + +How to write the microSD card +============================= + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/buildroot/board/beaglebone/genimage.cfg b/buildroot/board/beaglebone/genimage.cfg new file mode 100644 index 0000000..cfc1039 --- /dev/null +++ b/buildroot/board/beaglebone/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img", + "zImage", + "uEnv.txt", + "am335x-evm.dtb", + "am335x-evmsk.dtb", + "am335x-bone.dtb", + "am335x-boneblack.dtb", + "am335x-bonegreen.dtb", + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/beaglebone/genimage_linux41.cfg b/buildroot/board/beaglebone/genimage_linux41.cfg new file mode 100644 index 0000000..ba60297 --- /dev/null +++ b/buildroot/board/beaglebone/genimage_linux41.cfg @@ -0,0 +1,32 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img", + "zImage", + "uEnv.txt", + "am335x-evm.dtb", + "am335x-evmsk.dtb", + "am335x-bone.dtb", + "am335x-boneblack.dtb", + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/beaglebone/linux-4.1-sgx.fragment b/buildroot/board/beaglebone/linux-4.1-sgx.fragment new file mode 100644 index 0000000..c0d2e7b --- /dev/null +++ b/buildroot/board/beaglebone/linux-4.1-sgx.fragment @@ -0,0 +1,12 @@ +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y +CONFIG_OMAP2_DSS_INIT=y +CONFIG_OMAP_DSS_BASE=y +CONFIG_OMAP2_DSS=y +CONFIG_OMAP2_DSS_DPI=y +CONFIG_DRM_OMAP=y +CONFIG_DRM_OMAP_NUM_CRTCS=2 +CONFIG_DRM_OMAP_WB_M2M=y +CONFIG_DRM_TILCDC=y +CONFIG_DRM_I2C_NXP_TDA998X=y +CONFIG_DRM=y diff --git a/buildroot/board/beaglebone/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch b/buildroot/board/beaglebone/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch new file mode 100644 index 0000000..8e36d9a --- /dev/null +++ b/buildroot/board/beaglebone/patches/linux/0001-keep-jtag-clock-alive-for-debugger.patch @@ -0,0 +1,16 @@ +This patch keeps the debugSS clock alive, it clocks the JTAG macro and enables +access to the SoC via JTAG after the kernel booted. + +Signed-off-by: Lothar Felten +--- +diff -Naur linux-orig/arch/arm/mach-omap2/omap_hwmod_33xx_data.c linux-52c4aa7cdb93d61f8008f380135beaf7b8fa6593/arch/arm/mach-omap2/omap_hwmod_33xx_data.c +--- linux-orig/arch/arm/mach-omap2/omap_hwmod_33xx_data.c 2015-10-02 17:30:56.000000000 +0200 ++++ linux-52c4aa7cdb93d61f8008f380135beaf7b8fa6593/arch/arm/mach-omap2/omap_hwmod_33xx_data.c 2016-08-15 11:28:55.017617612 +0200 +@@ -208,6 +208,7 @@ + .name = "debugss", + .class = &am33xx_debugss_hwmod_class, + .clkdm_name = "l3_aon_clkdm", ++ .flags = (HWMOD_INIT_NO_IDLE|HWMOD_INIT_NO_RESET), /* keep debugSS clock alive for JTAG */ + .main_clk = "trace_clk_div_ck", + .prcm = { + .omap4 = { diff --git a/buildroot/board/beaglebone/post-image.sh b/buildroot/board/beaglebone/post-image.sh new file mode 100755 index 0000000..68fe089 --- /dev/null +++ b/buildroot/board/beaglebone/post-image.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# post-image.sh for CircuitCo BeagleBone and TI am335x-evm +# 2014, Marcin Jabrzyk +# 2016, Lothar Felten + +BOARD_DIR="$(dirname $0)" + +# copy the uEnv.txt to the output/images directory +cp board/beaglebone/uEnv.txt $BINARIES_DIR/uEnv.txt + +# the 4.1 kernel does not provide a dtb for beaglebone green, so we +# use a different genimage config if am335x-bonegreen.dtb is not +# built: +if [ -e ${BINARIES_DIR}/am335x-bonegreen.dtb ] ; then + GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +else + GENIMAGE_CFG="${BOARD_DIR}/genimage_linux41.cfg" +fi + +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/beaglebone/readme.txt b/buildroot/board/beaglebone/readme.txt new file mode 100644 index 0000000..e908b22 --- /dev/null +++ b/buildroot/board/beaglebone/readme.txt @@ -0,0 +1,52 @@ +CircuitCo BeagleBone +Texas Instuments AM335x Evaluation Module (TMDXEVM3358) + +Description +=========== + +This configuration will build a complete image for the beaglebone and +the TI AM335x-EVM, the board type is identified by the on-board +EEPROM. The configuration is based on the +ti-processor-sdk-02.00.00.00. Device tree blobs for beaglebone +variants and the evm-sk are built too. + +For Qt5 support support use the beaglebone_qt5_defconfig. + +How to build it +=============== + +Select the default configuration for the target: +$ make beaglebone_defconfig + +Optional: modify the configuration: +$ make menuconfig + +Build: +$ make + +Result of the build +=================== +output/images/ +├── am335x-boneblack.dtb +├── am335x-bone.dtb +├── am335x-evm.dtb +├── am335x-evmsk.dtb +├── boot.vfat +├── MLO +├── rootfs.ext2 +├── rootfs.tar +├── sdcard.img +├── u-boot.img +├── uEnv.txt +└── zImage + +To copy the image file to the sdcard use dd: +$ dd if=output/images/sdcard.img of=/dev/XXX + +Tested hardware +=============== +am335x-evm (rev. 1.1A) +beagleboneblack (rev. A5A) +beaglebone (rev. A6) + +2016, Lothar Felten diff --git a/buildroot/board/beaglebone/uEnv.txt b/buildroot/board/beaglebone/uEnv.txt new file mode 100644 index 0000000..70b3b72 --- /dev/null +++ b/buildroot/board/beaglebone/uEnv.txt @@ -0,0 +1,4 @@ +bootpart=0:1 +bootdir= +bootargs=console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait +uenvcmd=run loadimage;run loadfdt;printenv bootargs;bootz ${loadaddr} - ${fdtaddr}; diff --git a/buildroot/board/boundarydevices/common/6x_bootscript.txt b/buildroot/board/boundarydevices/common/6x_bootscript.txt new file mode 100644 index 0000000..af5822a --- /dev/null +++ b/buildroot/board/boundarydevices/common/6x_bootscript.txt @@ -0,0 +1,131 @@ +setenv bootargs '' + +if itest.s x6SX == "x${cpu}" || itest.s x7D == "x${cpu}"; then + a_script=0x80800000 + a_zImage=0x80800000 + a_fdt=0x83000000 + m4='' + if itest.s "x1" == "x$m4enabled" ; then + run m4boot; + m4='-m4'; + fi +else + a_script=0x10800000 + a_zImage=0x10800000 + a_fdt=0x13000000 +fi + +setenv initrd_high 0xffffffff +if itest.s "x" == "x${dtbname}" ; then + if itest.s x6SOLO == "x${cpu}" ; then + dtbname=imx6dl-${board}.dtb; + elif itest.s x6DL == "x${cpu}" ; then + dtbname=imx6dl-${board}.dtb; + elif itest.s x6QP == "x${cpu}" ; then + dtbname=imx6qp-${board}.dtb; + elif itest.s x6SX == "x${cpu}" ; then + dtbname=imx6sx-${board}${m4}.dtb; + elif itest.s x7D == "x${cpu}" ; then + dtbname=imx7d-${board}${m4}.dtb; + else + dtbname=imx6q-${board}.dtb; + fi +fi + +if load ${dtype} ${disk}:1 ${a_script} uEnv.txt ; then + env import -t ${a_script} ${filesize} +fi + +if itest.s x == x${bootdir} ; then + bootdir=/boot/ +fi + +if itest.s x${bootpart} == x ; then + bootpart=1 +fi + +if load ${dtype} ${disk}:${bootpart} ${a_fdt} ${bootdir}${dtbname} ; then + fdt addr ${a_fdt} + setenv fdt_high 0xffffffff +else + echo "!!!! Error loading ${bootdir}${dtbname}"; + exit; +fi + +cmd_xxx_present= +fdt resize +if itest.s "x" != "x${cmd_custom}" ; then + run cmd_custom + cmd_xxx_present=1; +fi + +if itest.s "x" != "x${cmd_hdmi}" ; then + run cmd_hdmi + cmd_xxx_present=1; + if itest.s x == x${allow_noncea} ; then + setenv bootargs ${bootargs} mxc_hdmi.only_cea=1; + echo "only CEA modes allowed on HDMI port"; + else + setenv bootargs ${bootargs} mxc_hdmi.only_cea=0; + echo "non-CEA modes allowed on HDMI, audio may be affected"; + fi +fi + +if itest.s "x" != "x${cmd_lcd}" ; then + run cmd_lcd + cmd_xxx_present=1; +fi +if itest.s "x" != "x${cmd_lvds}" ; then + run cmd_lvds + cmd_xxx_present=1; +fi +if itest.s "x" != "x${cmd_lvds2}" ; then + run cmd_lvds2 + cmd_xxx_present=1; +fi + +if itest.s "x" == "x${cmd_xxx_present}" ; then + echo "!!!!!!!!!!!!!!!!" + echo "warning: your u-boot may be outdated, please upgrade" + echo "!!!!!!!!!!!!!!!!" +fi + +setenv bootargs "${bootargs} console=${console},115200 vmalloc=400M consoleblank=0 rootwait fixrtc" + +if test "sata" = "${dtype}" ; then + setenv bootargs "${bootargs} root=/dev/sda${bootpart}" ; +elif test "usb" = "${dtype}" ; then + setenv bootargs "${bootargs} root=/dev/sda${bootpart}" ; +else + setenv bootargs "${bootargs} root=/dev/mmcblk${disk}p${bootpart}" +fi + +if itest.s "x" != "x${disable_giga}" ; then + setenv bootargs ${bootargs} fec.disable_giga=1 +fi + +if itest.s "x" != "x${wlmac}" ; then + setenv bootargs ${bootargs} wlcore.mac=${wlmac} + setenv bootargs ${bootargs} wlan.mac=${wlmac} +fi + +if itest.s "x" != "x${gpumem}" ; then + setenv bootargs ${bootargs} galcore.contiguousSize=${gpumem} +fi + +if itest.s "x" != "x${cma}" ; then + setenv bootargs ${bootargs} cma=${cma} +fi + +if itest.s "x" != "x${show_fdt}" ; then + fdt print / +fi + +if itest.s "x" != "x${show_env}" ; then + printenv +fi + +if load ${dtype} ${disk}:${bootpart} ${a_zImage} ${bootdir}/zImage ; then + bootz ${a_zImage} - ${a_fdt} +fi +echo "Error loading kernel image" diff --git a/buildroot/board/boundarydevices/common/6x_upgrade.txt b/buildroot/board/boundarydevices/common/6x_upgrade.txt new file mode 100644 index 0000000..e012ff9 --- /dev/null +++ b/buildroot/board/boundarydevices/common/6x_upgrade.txt @@ -0,0 +1,69 @@ +if itest.s a$uboot_defconfig == a; then + echo "Please set uboot_defconfig to the appropriate value" + exit +fi + +offset=0x400 +a_uImage1=0x12000000 +a_uImage2=0x12400000 + +if itest.s x6SX == "x${cpu}" || itest.s x7D == "x${cpu}"; then + a_uImage1=0x82000000 + a_uImage2=0x82400000 +fi + +setenv stdout serial,vga +echo "check U-Boot" ; + +if load ${dtype} ${disk}:1 ${a_uImage1} u-boot.$uboot_defconfig ; then +else + echo "No U-Boot image found on SD card" ; + exit +fi +echo "read $filesize bytes from SD card" ; +if sf probe || sf probe || sf probe 1 27000000 || sf probe 1 27000000 ; then + echo "probed SPI ROM" ; +else + echo "Error initializing EEPROM" ; + exit +fi ; +if sf read ${a_uImage2} $offset $filesize ; then +else + echo "Error reading boot loader from EEPROM" ; + exit +fi +if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then + echo "------- U-Boot versions match" ; + exit +fi +echo "Need U-Boot upgrade" ; +echo "Program in 5 seconds" ; +for n in 5 4 3 2 1 ; do + echo $n ; + sleep 1 ; +done +echo "erasing" ; +sf erase 0 0xC0000 ; + +# two steps to prevent bricking +echo "programming" ; +setexpr a1 ${a_uImage1} + 0x400 +setexpr o1 ${offset} + 0x400 +setexpr s1 ${filesize} - 0x400 +sf write ${a1} ${o1} ${s1} ; +sf write ${a_uImage1} $offset 0x400 ; + +echo "verifying" ; +if sf read ${a_uImage2} $offset $filesize ; then +else + echo "Error re-reading EEPROM" ; + exit +fi +if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then +else + echo "Read verification error" ; + exit +fi +while echo "---- U-Boot upgraded. reset" ; do + sleep 120 +done diff --git a/buildroot/board/boundarydevices/common/boot.cmd b/buildroot/board/boundarydevices/common/boot.cmd new file mode 100644 index 0000000..7602b01 --- /dev/null +++ b/buildroot/board/boundarydevices/common/boot.cmd @@ -0,0 +1,155 @@ +setenv bootargs '' + +setenv initrd_high 0xffffffff +m4='' +a_base=0x10000000 +if itest.s x51 == "x${imx_cpu}" ; then + a_base=0x90000000 +elif itest.s x53 == "x${imx_cpu}"; then + a_base=0x70000000 +elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then + a_base=0x80000000 + if itest.s "x1" == "x$m4enabled" ; then + run m4boot; + m4='-m4'; + fi +fi + +setexpr a_script ${a_base} + 0x00800000 +setexpr a_zImage ${a_base} + 0x00800000 +setexpr a_fdt ${a_base} + 0x03000000 +setexpr a_ramdisk ${a_base} + 0x03800000 +setexpr a_initrd ${a_base} + 0x03a00000 +setexpr a_reset_cause_marker ${a_base} + 0x80 +setexpr a_reset_cause ${a_base} + 0x84 + +if itest.s "x" == "x${board}" ; then + echo "!!!! Error: Your u-boot is outdated. Please upgrade."; + exit; +fi + +if itest.s "x" == "x${fdt_file}" ; then + if itest.s x6SOLO == "x${imx_cpu}" ; then + fdt_file=imx6dl-${board}.dtb; + elif itest.s x6DL == "x${imx_cpu}" ; then + fdt_file=imx6dl-${board}.dtb; + elif itest.s x6QP == "x${imx_cpu}" ; then + fdt_file=imx6qp-${board}.dtb; + elif itest.s x6SX == "x${imx_cpu}" ; then + fdt_file=imx6sx-${board}${m4}.dtb; + elif itest.s x7D == "x${imx_cpu}" ; then + fdt_file=imx7d-${board}${m4}.dtb; + elif itest.s x51 == "x${imx_cpu}" ; then + fdt_file=imx51-${board}${m4}.dtb; + elif itest.s x53 == "x${imx_cpu}" ; then + fdt_file=imx53-${board}${m4}.dtb; + else + fdt_file=imx6q-${board}.dtb; + fi +fi + +if itest.s x${distro_bootpart} == x ; then + distro_bootpart=1 +fi + +if load ${devtype} ${devnum}:${distro_bootpart} ${a_script} uEnv.txt ; then + env import -t ${a_script} ${filesize} +fi + +setenv bootargs ${bootargs} console=${console},115200 vmalloc=400M consoleblank=0 rootwait fixrtc cpu=${imx_cpu} board=${board} + +if load ${devtype} ${devnum}:${distro_bootpart} ${a_fdt} ${prefix}${fdt_file} ; then + fdt addr ${a_fdt} + setenv fdt_high 0xffffffff +else + echo "!!!! Error loading ${prefix}${fdt_file}"; + exit; +fi + +cmd_xxx_present= +fdt resize +if itest.s "x" != "x${cmd_custom}" ; then + run cmd_custom + cmd_xxx_present=1; +fi + +if itest.s "x" != "x${cmd_hdmi}" ; then + run cmd_hdmi + cmd_xxx_present=1; + if itest.s x == x${allow_noncea} ; then + setenv bootargs ${bootargs} mxc_hdmi.only_cea=1; + echo "only CEA modes allowed on HDMI port"; + else + setenv bootargs ${bootargs} mxc_hdmi.only_cea=0; + echo "non-CEA modes allowed on HDMI, audio may be affected"; + fi +fi + +if itest.s "x" != "x${cmd_lcd}" ; then + run cmd_lcd + cmd_xxx_present=1; +fi +if itest.s "x" != "x${cmd_lcd2}" ; then + run cmd_lcd2 + cmd_xxx_present=1; +fi +if itest.s "x" != "x${cmd_lvds}" ; then + run cmd_lvds + cmd_xxx_present=1; +fi +if itest.s "x" != "x${cmd_lvds2}" ; then + run cmd_lvds2 + cmd_xxx_present=1; +fi + +if itest.s "x" == "x${cmd_xxx_present}" ; then + echo "!!!!!!!!!!!!!!!!" + echo "warning: your u-boot may be outdated, please upgrade" + echo "!!!!!!!!!!!!!!!!" +fi + +if test "sata" = "${devtype}" ; then + setenv bootargs "${bootargs} root=/dev/sda${distro_bootpart}" ; +elif test "usb" = "${devtype}" ; then + setenv bootargs "${bootargs} root=/dev/sda${distro_bootpart}" ; +else + setenv bootargs "${bootargs} root=/dev/mmcblk${devnum}p${distro_bootpart}" +fi + +if itest.s "x" != "x${disable_msi}" ; then + setenv bootargs ${bootargs} pci=nomsi +fi; + +if itest.s "x" != "x${disable_giga}" ; then + setenv bootargs ${bootargs} fec.disable_giga=1 +fi + +if itest.s "x" != "x${wlmac}" ; then + setenv bootargs ${bootargs} wlcore.mac=${wlmac} + setenv bootargs ${bootargs} wlan.mac=${wlmac} +fi + +if itest.s "x" != "x${gpumem}" ; then + setenv bootargs ${bootargs} galcore.contiguousSize=${gpumem} +fi + +if itest.s "x" != "x${cma}" ; then + setenv bootargs ${bootargs} cma=${cma} +fi + +if itest.s "x" != "x${loglevel}" ; then + setenv bootargs ${bootargs} loglevel=${loglevel} +fi + +if itest.s "x" != "x${show_fdt}" ; then + fdt print / +fi + +if itest.s "x" != "x${show_env}" ; then + printenv +fi + +if load ${devtype} ${devnum}:${distro_bootpart} ${a_zImage} ${prefix}zImage ; then + bootz ${a_zImage} - ${a_fdt} +fi +echo "Error loading kernel image" diff --git a/buildroot/board/boundarydevices/common/genimage.cfg b/buildroot/board/boundarydevices/common/genimage.cfg new file mode 100644 index 0000000..a383fb7 --- /dev/null +++ b/buildroot/board/boundarydevices/common/genimage.cfg @@ -0,0 +1,18 @@ +# Minimal SD card image for Boundary Devices platforms +# +# It does not need a boot section for a bootloader since it is booted +# from its NOR flash memory. +# +# To update the bootloader, execute the following from U-Boot prompt: +# => run upgradeu + +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/boundarydevices/common/post-build.sh b/buildroot/board/boundarydevices/common/post-build.sh new file mode 100755 index 0000000..b8abb26 --- /dev/null +++ b/buildroot/board/boundarydevices/common/post-build.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# post-build fixups +# for further details, see +# +# http://boundarydevices.com/u-boot-on-i-mx6/ +# + +BOARD_DIR="$(dirname $0)" + +# bd u-boot looks for standard bootscript +install -m 0644 -D $BINARIES_DIR/boot.scr $TARGET_DIR/boot/ +# legacy 6x_bootscript script +$HOST_DIR/bin/mkimage -A arm -O linux -T script -C none -a 0 -e 0 \ +-n "boot script" -d $BOARD_DIR/6x_bootscript.txt $TARGET_DIR/6x_bootscript + +# u-boot / update script for bd upgradeu command +if [ -e $BINARIES_DIR/u-boot.imx ]; +then + install -D -m 0644 $BINARIES_DIR/u-boot.imx $TARGET_DIR/u-boot.imx + $HOST_DIR/bin/mkimage -A arm -O linux -T script -C none -a 0 -e 0 \ + -n "upgrade script" -d $BOARD_DIR/upgrade.cmd $TARGET_DIR/upgrade.scr + # legacy 6x_upgrade script + $HOST_DIR/bin/mkimage -A arm -O linux -T script -C none -a 0 -e 0 \ + -n "upgrade script" -d $BOARD_DIR/6x_upgrade.txt $TARGET_DIR/6x_upgrade +fi diff --git a/buildroot/board/boundarydevices/common/post-image.sh b/buildroot/board/boundarydevices/common/post-image.sh new file mode 100755 index 0000000..9cca1b1 --- /dev/null +++ b/buildroot/board/boundarydevices/common/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/buildroot/board/boundarydevices/common/readme.txt b/buildroot/board/boundarydevices/common/readme.txt new file mode 100644 index 0000000..0625dee --- /dev/null +++ b/buildroot/board/boundarydevices/common/readme.txt @@ -0,0 +1,30 @@ +Buildroot for Boundary Devices platforms: + +https://boundarydevices.com/product-category/popular-sbc-and-som-modules/ + +Here is the list of targeted platforms per defconfig: + +- nitrogen6x_defconfig + - BD-SL-i.MX6 (SABRE-Lite) + - Nitrogen6X + - Nitrogen6_Lite + - Nitrogen6_MAX + - Nitrogen6_VM + - Nitrogen6_SOM + - Nitrogen6_SOMv2 + +- nitrogen6sx_defconfig + - Nitrogen6_SoloX + +- nitrogen7_defconfig + - Nitrogen7 + +To install, simply copy the image to a uSD card: + +$ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the uSD partition. + +To upgrade u-boot, cancel autoboot and type: + +> run upgradeu diff --git a/buildroot/board/boundarydevices/common/upgrade.cmd b/buildroot/board/boundarydevices/common/upgrade.cmd new file mode 100644 index 0000000..249185d --- /dev/null +++ b/buildroot/board/boundarydevices/common/upgrade.cmd @@ -0,0 +1,154 @@ +if itest.s a$uboot_defconfig == a; then + echo "Please set uboot_defconfig to the appropriate value" + exit +fi + +offset=0x400 +erase_size=0xC0000 +qspi_offset=0x0 +a_base=0x12000000 + +if itest.s x51 == "x${imx_cpu}"; then + a_base=0x92000000 +elif itest.s x53 == "x${imx_cpu}"; then + a_base=0x72000000 +elif itest.s x6SX == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then + a_base=0x82000000 +fi + +qspi_match=1 +setexpr a_qspi1 ${a_base} +setexpr a_qspi2 ${a_qspi1} + 0x400000 +setexpr a_uImage1 ${a_qspi1} + 0x400 +setexpr a_uImage2 ${a_qspi2} + 0x400 +setexpr a_script ${a_base} + +setenv stdout serial,vga + +if sf probe || sf probe || sf probe 1 27000000 || sf probe 1 27000000 ; then + echo "probed SPI ROM" ; +else + echo "Error initializing EEPROM" + exit +fi + +if itest.s x7D == "x${imx_cpu}"; then + echo "check qspi parameter block" ; + if ${fs}load ${devtype} ${devnum}:1 ${a_qspi1} qspi-${sfname}.${uboot_defconfig} ; then + else + echo "parameter file qspi-${sfname}.${uboot_defconfig} not found on SD card" + exit + fi + if itest ${filesize} != 0x200 ; then + echo "------- qspi-${sfname}.${uboot_defconfig} 0x${filesize} != 0x200 bytes" ; + exit + fi + setexpr a_marker ${a_qspi1} + 0x1fc + if itest *${a_marker} != c0ffee01 ; then + echo "------- qspi-${sfname}.${uboot_defconfig} c0ffee01 marker missing" ; + exit + fi + if sf read ${a_qspi2} ${qspi_offset} 0x200 ; then + else + echo "Error reading qspi parameter from EEPROM" + exit + fi + if cmp.b ${a_qspi1} ${a_qspi2} 0x200 ; then + echo "------- qspi parameters match" + else + echo "------- qspi parameters mismatch" + qspi_match=0 + fi +fi + +echo "check U-Boot" ; + +if ${fs}load ${devtype} ${devnum}:1 ${a_uImage1} u-boot.$uboot_defconfig ; then +else + echo "File u-boot.$uboot_defconfig not found on SD card" ; + exit +fi +echo "read $filesize bytes from SD card" ; +if sf read ${a_uImage2} $offset $filesize ; then +else + echo "Error reading boot loader from EEPROM" ; + exit +fi + +if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then + echo "------- U-Boot versions match" ; + if itest.s "${qspi_match}" == "1" ; then + echo "------- upgrade not needed" ; + if itest.s "x" != "x${next}" ; then + if ${fs}load ${devtype} ${devnum}:1 ${a_script} ${next} ; then + source ${a_script} + else + echo "${next} not found on SD card" + fi + fi + exit + fi + erase_size=0x1000 + if itest.s xMX25L6405D == "x${sfname}"; then + erase_size=0x10000 + fi + setexpr filesize ${erase_size} - ${offset} +fi + +echo "Need U-Boot upgrade" ; +echo "Program in 5 seconds" ; +for n in 5 4 3 2 1 ; do + echo $n ; + sleep 1 ; +done +echo "erasing" ; +sf erase 0 ${erase_size} ; + +# two steps to prevent bricking +echo "programming" ; +setexpr a1 ${a_uImage1} + 0x400 +setexpr o1 ${offset} + 0x400 +setexpr s1 ${filesize} - 0x400 +sf write ${a1} ${o1} ${s1} ; +sf write ${a_uImage1} $offset 0x400 ; + +if itest.s x7D == "x${imx_cpu}"; then + sf write ${a_qspi1} ${qspi_offset} 0x200 +fi + +echo "verifying" ; +if sf read ${a_uImage2} $offset $filesize ; then +else + echo "Error re-reading EEPROM" ; + exit +fi +if cmp.b ${a_uImage1} ${a_uImage2} $filesize ; then +else + echo "Read verification error" ; + exit +fi + +if itest.s x7D == "x${imx_cpu}"; then + if sf read ${a_qspi2} ${qspi_offset} 0x200 ; then + else + echo "Error re-reading qspi" ; + exit + fi + if cmp.b ${a_qspi1} ${a_qspi2} 0x200 ; then + else + echo "qspi parameter block verification error" ; + exit + fi +fi + +if itest.s "x" != "x${next}" ; then + if ${fs}load ${devtype} ${devnum}:1 ${a_script} ${next} ; then + source ${a_script} + else + echo "${next} not found on ${devtype} ${devnum}" + fi +fi + +while echo "---- U-Boot upgraded. reset" ; do + sleep 120 +done diff --git a/buildroot/board/chromebook/snow/kernel.args b/buildroot/board/chromebook/snow/kernel.args new file mode 100644 index 0000000..1220bf8 --- /dev/null +++ b/buildroot/board/chromebook/snow/kernel.args @@ -0,0 +1 @@ +console=tty1 clk_ignore_unused root=/dev/mmcblk1p2 rootfstype=ext4 ro diff --git a/buildroot/board/chromebook/snow/kernel.its b/buildroot/board/chromebook/snow/kernel.its new file mode 100644 index 0000000..c8766ef --- /dev/null +++ b/buildroot/board/chromebook/snow/kernel.its @@ -0,0 +1,37 @@ +/dts-v1/; + +/ { + description = "Buildroot kernel for Chromebook Snow"; + images { + kernel@1 { + description = "kernel"; + data = /incbin/("zImage"); + type = "kernel_noload"; + arch = "arm"; + os = "linux"; + compression = "none"; + load = <0>; + entry = <0>; + hash@1 { + algo = "sha1"; + }; + }; + fdt@1{ + description = "exynos5250-snow.dtb"; + data = /incbin/("exynos5250-snow.dtb"); + type = "flat_dt"; + arch = "arm"; + compression = "none"; + hash@1 { + algo = "sha1"; + }; + }; + }; + configurations { + default = "conf@1"; + conf@1{ + kernel = "kernel@1"; + fdt = "fdt@1"; + }; + }; +}; diff --git a/buildroot/board/chromebook/snow/linux-4.6-dts-tpm.patch b/buildroot/board/chromebook/snow/linux-4.6-dts-tpm.patch new file mode 100644 index 0000000..c71ff1b --- /dev/null +++ b/buildroot/board/chromebook/snow/linux-4.6-dts-tpm.patch @@ -0,0 +1,27 @@ +Some versions of u-boot for this Chromebook check for tpm node +in the device tree and fail badly (reboot) if it is not found. + +While not exactly correct, it is much easier to patch the mainline +device tree to match u-boot expectations than to fix u-boot on +this device. + +See https://code.google.com/p/chromium/issues/detail?id=220169 +and https://lkml.org/lkml/2013/3/4/242 + +Signed-off-by: Alex Suykov + +--- a/arch/arm/boot/dts/exynos5250-snow-common.dtsi ++++ b/arch/arm/boot/dts/exynos5250-snow-common.dtsi +@@ -466,6 +466,11 @@ + status = "okay"; + samsung,i2c-sda-delay = <100>; + samsung,i2c-max-bus-freq = <66000>; ++ ++ tpm { ++ compatible = "infineon,slb9635tt"; ++ reg = <0x20>; ++ }; + }; + + &i2c_5 { + diff --git a/buildroot/board/chromebook/snow/linux-4.6.fragment b/buildroot/board/chromebook/snow/linux-4.6.fragment new file mode 100644 index 0000000..e2786da --- /dev/null +++ b/buildroot/board/chromebook/snow/linux-4.6.fragment @@ -0,0 +1,2 @@ +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m diff --git a/buildroot/board/chromebook/snow/mksd.sh b/buildroot/board/chromebook/snow/mksd.sh new file mode 100755 index 0000000..cba1578 --- /dev/null +++ b/buildroot/board/chromebook/snow/mksd.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +# This scripts makes a minimal bootable SD card image for the Chromebook. +# The resulting file is called bootsd.img. It should be written directly +# to the card: +# +# SD=/dev/mmcblk1 # check your device name! +# dd if=output/images/bootsd.img of=$SD +# +# The partitions are created just large enough to hold the kernel and +# the rootfs image. Most of the card will be empty, and the secondary +# GPT will not be in its proper location. + +# cgpt does not create protective MBR, and the kernel refuses to read +# GPT unless there's some kind of MBR in sector 0. So we need parted +# to write that single sector before doing anything with the GPT. +cgpt=$HOST_DIR/bin/cgpt +parted=$HOST_DIR/sbin/parted +kernel=$BINARIES_DIR/uImage.kpart +rootfs=$BINARIES_DIR/rootfs.ext2 + +run() { echo "$@"; "$@"; } +die() { echo "$@" >&2; exit 1; } +test -f $kernel || die "No kernel image found" +test -f $rootfs || die "No rootfs image found" +test -x $cgpt || die "cgpt not found (host-vboot-utils have not been built?)" + +# True file sizes in bytes +kernelsize=`stat -t $kernel | cut -d\ -f2` +rootfssize=`stat -t $rootfs | cut -d\ -f2` + +# The card is partitioned in sectors of 8KB. +# 4 sectors are reserved for MBR+GPT. Their actual size turns out +# to be 33 512-blocks which is just over 2 sectors, but we align +# it to a nice round number. +sec=8192 +kernelsec=$(((kernelsize+8191)>>13)) +rootfssec=$(((rootfssize+8191)>>13)) +headersec=4 + +# There is also a copy of MBR+GPT at the end of the image. +# It's going to be useless but both tools assume it's there. +imagesec=$((2*headersec+kernelsec+rootfssec)) +bootsd="$BINARIES_DIR/bootsd.img" +run dd bs=$sec count=$imagesec if=/dev/zero of=$bootsd + +# cgpt needs offsets and sizes in 512-blocks. +block=512 +kernelstart=$((headersec<<4)) +kernelblocks=$((kernelsec<<4)) +rootfsblocks=$((rootfssec<<4)) +rootfsstart=$((kernelstart+kernelblocks)) + +# This command initializes both GPT and MBR +run $parted -s $bootsd mklabel gpt + +# The kernel partition must be marked as bootable, that's why -S -T -P +run $cgpt add -i 1 -b $kernelstart -s $kernelblocks \ + -t kernel -l kernel \ + -S 1 -T 1 -P 10 $bootsd + +# It does not really matter where the rootfs partition is located as long +# as the kernel can find it. +# However, if anything is changed here, kernel.args must be updated as well. +run $cgpt add -i 2 -b $rootfsstart -s $rootfsblocks \ + -t data -l rootfs $bootsd + +run dd bs=$block if=$kernel of=$bootsd seek=$kernelstart +run dd bs=$block if=$rootfs of=$bootsd seek=$rootfsstart diff --git a/buildroot/board/chromebook/snow/readme.txt b/buildroot/board/chromebook/snow/readme.txt new file mode 100644 index 0000000..1afd949 --- /dev/null +++ b/buildroot/board/chromebook/snow/readme.txt @@ -0,0 +1,137 @@ +Samsung XE303C12 aka Chromebook Snow +==================================== + +This file describes booting the Chromebook from an SD card containing +Buildroot kernel and rootfs, using the original bootloader. This is +the least invasive way to get Buildroot onto the devices and a good +starting point. + +The bootloader will only boot a kernel from a GPT partition marked +bootable with cgpt tool from vboot-utils package. +The kernel image must be signed using futility from the same package. +The signing part is done by sign.sh script in this directory. + +It does not really matter where rootfs is as long as the kernel is able +to find it, but this particular configuration assumes the kernel is on +partition 1 and rootfs is on partition 2 of the SD card. +Make sure to check kernel.args if you change this. + +Making the boot media +--------------------- +Start by configuring and building the images. + + make chromebook_snow_defconfig + make menuconfig # if necessary + make + +The important files are: + + uImage.kpart (kernel and device tree, signed) + rootfs.tar + bootsd.img (SD card image containing both kernel and rootfs) + +Write the image directly to some SD card. +WARNING: make sure there is nothing important on that card, +and double-check the device name! + + SD=/dev/mmcblk1 # may be /dev/sdX on some hosts + dd if=output/images/bootsd.img of=$SD + +Switching to developer mode and booting from SD +----------------------------------------------- +Power Chromebook down, then power it up while holding Esc+F3. +BEWARE: switching to developer mode deletes all user data. +Create backups if you need them. + +While in developer mode, Chromebook will boot into a white screen saying +"OS verification is off". + +Press Ctrl-D at this screen to boot Chromium OS from eMMC. +Press Ctrl-U at this screen to boot from SD (or USB) +Press Power to power it off. +Do NOT press Space unless you mean it. +This will switch it back to normal mode. + +The is no way to get rid of the white screen without re-flashing the bootloader. + +Troubleshooting +--------------- +Loud *BEEP* after pressing Ctrl-U means there's no valid partition to boot from. +Which in turn means either bad GPT or improperly signed kernel. + +Return to the OS verification screen without any sounds means the code managed +to reboot the board. May indicate properly signed but invalid image. + +Blank screen means the image is valid and properly signed but cannot boot +for some reason, like missing or incorrect DT. + +In case the board becomes unresponsive: + +* Press Esc+F3+Power. The board should reboot instantly. + Remove SD card to prevent it from attempting a system recovery. + +* Hold Power button for around 10s. The board should shut down into + its soft-off mode. Press Power button again or open the lid to turn in on. + +* If that does not work, disconnect the charger and push a hidden + button on the underside with a pin of some sort. The board should shut + down completely. Opening the lid and pressing Power button will not work. + To turn it back on, connect the charger. + +Partitioning SD card manually +----------------------------- +Check mksd.sh for partitioning commands. + +Use parted and cgpt on a real device, and calculate the partition +sizes properly. The kernel partition may be as small as 4MB, but +you will probably want the rootfs to occupy the whole remaining space. + +cgpt may be used to check current layout: + + output/host/bin/cgpt show $SD + +All sizes and all offsets are in 512-byte blocks. + +Writing kernel and rootfs to a partitioned SD card +-------------------------------------------------- +Write .kpart directly to the bootable partition: + + dd if=output/images/uImage.kpart of=${SD}1 + +Make a new filesystem on the rootfs partition, and unpack rootfs.tar there: + + mkfs.ext4 ${SD}2 + mount ${SD2} /mnt/ + tar -xvf output/images/rootfs.tar -C /mnt/ + umount /mnt/ + +This will require root permissions even if you can write to $SD. + +Kernel command line +------------------- +The command line is taken from board/chromebook/snow/kernel.args and stored +in the vboot header (which also holds the signature). + +The original bootloader prepends "cros_secure console= " to the supplied +command line. The only way to suppress this is to enable CMDLINE_FORCE +in the kernel config, disabling external command line completely. + +That's not necessary however. The mainline kernel ignores cros_secure, +and supplying console=tty1 in kernel.args undoes the effect of console= + +Booting with console= suppresses all kernel output. +As a side effect, it makes /dev/console unusable, which the init in use must +be able to handle. + +WiFi card +--------- +Run modprobe mwifiex_sdio to load the driver. +The name of the device should be mlan0. + +Further reading +--------------- +https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices/samsung-arm-chromebook +http://linux-exynos.org/wiki/Samsung_Chromebook_XE303C12/Installing_Linux +http://archlinuxarm.org/platforms/armv7/samsung/samsung-chromebook +http://www.de7ec7ed.com/2013/05/application-processor-ap-uart-samsung.html +http://www.de7ec7ed.com/2013/05/embedded-controller-ec-uart-samsung.html diff --git a/buildroot/board/chromebook/snow/sign.sh b/buildroot/board/chromebook/snow/sign.sh new file mode 100755 index 0000000..e8f111f --- /dev/null +++ b/buildroot/board/chromebook/snow/sign.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# This script creates u-boot FIT image containing the kernel and the DT, +# then signs it using futility from vboot-utils. +# The resulting file is called uImage.kpart. + +BOARD_DIR=$(dirname $0) +mkimage=$HOST_DIR/bin/mkimage +futility=$HOST_DIR/bin/futility +devkeys=$HOST_DIR/share/vboot/devkeys + +run() { echo "$@"; "$@"; } +die() { echo "$@" >&2; exit 1; } +test -f $BINARIES_DIR/zImage || \ + die "No kernel image found" +test -x $mkimage || \ + die "No mkimage found (host-uboot-tools has not been built?)" +test -x $futility || \ + die "No futility found (host-vboot-utils has not been built?)" + +# kernel.its references zImage and exynos5250-snow.dtb, and all three +# files must be in current directory for mkimage. +run cp $BOARD_DIR/kernel.its $BINARIES_DIR/kernel.its || exit 1 +echo "# entering $BINARIES_DIR for the next command" +(cd $BINARIES_DIR && run $mkimage -f kernel.its uImage.itb) || exit 1 + +# futility requires non-empty file to be supplied with --bootloader +# even if it does not make sense for the target platform. +echo > $BINARIES_DIR/dummy.txt + +run $futility vbutil_kernel \ + --keyblock $devkeys/kernel.keyblock \ + --signprivate $devkeys/kernel_data_key.vbprivk \ + --arch arm \ + --version 1 \ + --config $BOARD_DIR/kernel.args \ + --vmlinuz $BINARIES_DIR/uImage.itb \ + --bootloader $BINARIES_DIR/dummy.txt \ + --pack $BINARIES_DIR/uImage.kpart || exit 1 + +rm -f $BINARIES_DIR/kernel.its $BINARIES_DIR/dummy.txt diff --git a/buildroot/board/ci20/genimage.cfg b/buildroot/board/ci20/genimage.cfg new file mode 100644 index 0000000..fa3e736 --- /dev/null +++ b/buildroot/board/ci20/genimage.cfg @@ -0,0 +1,29 @@ +image sdcard.img { + hdimage { + } + + partition uboot-spl { + in-partition-table = "no" + image = "u-boot-spl.bin" + offset = 512 + } + + partition uboot { + in-partition-table = "no" + image = "u-boot.img" + offset = 14k + } + + partition uboot-env { + in-partition-table = "no" + image = "uboot-env.bin" + offset = 526k + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 2M + size = 60M + } +} diff --git a/buildroot/board/ci20/readme.txt b/buildroot/board/ci20/readme.txt new file mode 100644 index 0000000..71d5070 --- /dev/null +++ b/buildroot/board/ci20/readme.txt @@ -0,0 +1,46 @@ +********************* +* MIPS Creator CI20 * +********************* + +Introduction +============ + +The 'ci20_defconfig' will create a root filesystem and a kernel image +under the 'output/images/' directory. This document will try to explain how +to use them in order to run Buildroot in the MIPS Creator CI20 board. + +How to build it +=============== + +Configure Buildroot +------------------- + + $ make ci20_defconfig + +Build the rootfs +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while, consider getting yourself a coffee ;-) ) + +How to write the SD card +======================== + +Once the build process is finished you will have an image called +"sdcard.img" in the output/images/ directory. + +Make sure the SD card is not mounted then copy the bootable "sdcard.img" onto +it with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your ci20, and power it up. Your new system +should come up now and start a console on the UART HEADER. + +see: https://elinux.org/CI20_Hardware#Dedicated_UART_header diff --git a/buildroot/board/ci20/uboot-env.txt b/buildroot/board/ci20/uboot-env.txt new file mode 100644 index 0000000..3093496 --- /dev/null +++ b/buildroot/board/ci20/uboot-env.txt @@ -0,0 +1,10 @@ +baudrate=115200 +board_mfr=NP +bootargs=console=ttyS4,115200 console=tty0 mem=256M@0x0 mem=768M@0x30000000 rootwait root=/dev/mmcblk0p1 devtmpfs.mount=1 ip=dhcp +bootcmd=run ethargs; ext4load mmc 0:1 0x88000000 /boot/uImage; bootm 0x88000000 +bootdelay=1 +ethargs=env set bootargs ${bootargs} +loads_echo=1 +stderr=eserial0,eserial4 +stdin=eserial0,eserial4 +stdout=eserial0,eserial4 diff --git a/buildroot/board/csky/gx6605s/gdbinit b/buildroot/board/csky/gx6605s/gdbinit new file mode 100644 index 0000000..d602aad --- /dev/null +++ b/buildroot/board/csky/gx6605s/gdbinit @@ -0,0 +1,25 @@ +tar jtag jtag://127.0.0.1:1025 +reset + +# setup CCR (Cache Config Reg) +# 0-1:MP,2:IE,3:DE,4:WB,5:RS,6:Z,7:BE +set $cr18 = 0x7d + +# vendor custom setup, double cache line & preload +set $cr30 = 0xc + +# pin mux for serial8250 +set *(unsigned int *) 0xa030a14c |= (1 << 22) | (1 << 23) + +# pass devicetree blob +# r2 is magic +# r3 is address +set $r2 = 0x20150401 +set $r3 = 0x92000000 +restore gx6605s.dtb binary 0x92000000 + +# flush cache +set $cr17 = 0x33 + +load + diff --git a/buildroot/board/csky/readme.txt b/buildroot/board/csky/readme.txt new file mode 100644 index 0000000..b4605c5 --- /dev/null +++ b/buildroot/board/csky/readme.txt @@ -0,0 +1,88 @@ +C-SKY Development Kit + +Intro +===== + +C-SKY is a CPU Architecture from www.c-sky.com and has it own instruction set. +Just like arm and mips in linux/arch, it named as 'csky'. + +gx6605s develop board is made by Hangzhou Nationalchip and C-SKY. + +Hardware Spec: + * CPU: ck610 up to 594Mhz + * Integrate with 64MB ddr2 in SOC. + * Integrate with hardware Jtag. + * Integrate with usb-to-serial chip. + * USB ehci controller in SOC. + * Power Supply: DC 5V from two micro-usb. + +How to build it +=============== + +Configure Buildroot +------------------- + +The csky_gx6605s_defconfig configuration is a sample configuration with +all that is required to bring the gx6605s Development Board: + + $ make csky_gx6605s_defconfig + +Build everything +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + + $ make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + ├── vmlinux + ├── rootfs.ext2 + └── .dtb + +How to run it +============= + +Prepare Jtag-Server +------------------- + + Download the Jtag-Server here: + + https://github.com/c-sky/tools/raw/master/DebugServerConsole-linux-x86_64-V4.2.00-20161213.tar.gz + + Go to the unpacked directory: + + $./DebugServerConsole -ddc -rstwait 1000 -prereset -port 1025 + + Perhaps you need to use "sudo", which need libusb to detect c510:b210 + + $ sudo ./DebugServerConsole -ddc -rstwait 1000 -prereset -port 1025 + +Prepare USB drive +----------------- + + You sould determine which device associated to the usb drive + carefully. eg: + + $ cat /proc/partitions + 8 48 1971712 sdd + 8 49 976720 sdd1 + + $ sudo dd if=rootfs.ext2 of=/dev/sdd1 + $ sudo sync + +Run +--- + + Plug the usb drive on gx6605s dev board. + + Setup the Console with the rate 115200/8-N-1. + + $ cd output/images + $ ../host/bin/csky-linux-gdb -x ../../board/csky/gx6605s/gdbinit vmlinux + diff --git a/buildroot/board/cubietech/cubieboard2/boot.cmd b/buildroot/board/cubietech/cubieboard2/boot.cmd new file mode 100644 index 0000000..a9ae0e2 --- /dev/null +++ b/buildroot/board/cubietech/cubieboard2/boot.cmd @@ -0,0 +1,5 @@ +setenv fdt_high ffffffff +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun7i-a20-cubieboard2.dtb +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/cubietech/cubieboard2/genimage.cfg b/buildroot/board/cubietech/cubieboard2/genimage.cfg new file mode 100644 index 0000000..b082ab0 --- /dev/null +++ b/buildroot/board/cubietech/cubieboard2/genimage.cfg @@ -0,0 +1,37 @@ +# Minimal SD card image for the Cubieboard2 +# Based in the Orange Pi genimage.cfg + +image boot.vfat { + vfat { + files = { + "zImage", + "sun7i-a20-cubieboard2.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/cubietech/cubieboard2/post-image.sh b/buildroot/board/cubietech/cubieboard2/post-image.sh new file mode 100755 index 0000000..9cca1b1 --- /dev/null +++ b/buildroot/board/cubietech/cubieboard2/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/buildroot/board/digilent/zybo/genimage.cfg b/buildroot/board/digilent/zybo/genimage.cfg new file mode 100644 index 0000000..f39186d --- /dev/null +++ b/buildroot/board/digilent/zybo/genimage.cfg @@ -0,0 +1,29 @@ +image boot.vfat { + vfat { + files = { + "BOOT.BIN", + "uEnv.txt", + "system.bit", + "zynq-zybo.dtb", + "u-boot-dtb.img", + "uImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/digilent/zybo/post-image.sh b/buildroot/board/digilent/zybo/post-image.sh new file mode 100755 index 0000000..619cb90 --- /dev/null +++ b/buildroot/board/digilent/zybo/post-image.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" +OUTPUT_DIR="${O}/images" + +rm -rf "${GENIMAGE_TMP}" + +cp board/digilent/zybo/uEnv.txt ${BINARIES_DIR} +cp board/digilent/zybo/system.bit ${BINARIES_DIR} + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/digilent/zybo/readme.txt b/buildroot/board/digilent/zybo/readme.txt new file mode 100644 index 0000000..4e7454c --- /dev/null +++ b/buildroot/board/digilent/zybo/readme.txt @@ -0,0 +1,76 @@ +Digilent Zybo +============= + +This is the Buildroot board support for the Digilent Zybo. The Zybo is +a development board based on the Xilinx Zynq-7000 based All-Programmable +System-On-Chip. + +Zybo information including schematics, reference designs, and manuals are +available from http://store.digilentinc.com/zybo-zynq-7000-arm-fpga-soc-trainer-board/ . + +If you want a custom FPGA bitstream to be loaded by U-Boot, copy it as +system.bit in board/digilent/zybo/. + +Steps to create a working system for Zybo: + +1) make zynq_zybo_defconfig +2) make +3) write your SD Card with the sdcard.img file using dd by doing + $ sudo dd if=output/images/sdcard.img of=/dev/sdX +4) insert the SD Card and power up your Zybo +5) Expect serial console on the second USB serial port exposed by the board + +The expected output: + + U-Boot SPL 2016.05 (May 20 2016 - 16:16:24) + mmc boot + Trying to boot from MMC1 + reading system.dtb + spl_load_image_fat_os: error reading image system.dtb, err - -1 + reading u-boot-dtb.img + reading u-boot-dtb.img + + + U-Boot 2016.05 (May 20 2016 - 16:16:24 +0200) + + Model: Zynq ZYBO Development Board + Board: Xilinx Zynq + I2C: ready + DRAM: ECC disabled 512 MiB + MMC: sdhci@e0100000: 0 + SF: Detected S25FL128S_64K with page size 256 Bytes, erase size 64 KiB, total 16 MiB + In: serial@e0001000 + Out: serial@e0001000 + Err: serial@e0001000 + Model: Zynq ZYBO Development Board + Board: Xilinx Zynq + Net: ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id + I2C EEPROM MAC address read failed + + Warning: ethernet@e000b000 (eth0) using random MAC address - 56:64:dd:a7:6d:94 + eth0: ethernet@e000b000 + ... + +Resulting system +---------------- +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +The first partition is a FAT32 partition created at the beginning of the SD Card +that contains the following files : + /BOOT.BIN + /zynq-zybo.dtb + /uEnv.txt + /system.bit + /uImage + /u-boot-dtb.img + +The second partition is an ext4 partition that contains the root filesystem. + +You can alter the booting procedure by modifying the uEnv.txt file +in first partition of the SD card. It is a plain text file in format += one per line: + +kernel_image=myimage +modeboot=myboot +myboot=... diff --git a/buildroot/board/digilent/zybo/system.bit b/buildroot/board/digilent/zybo/system.bit new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/board/digilent/zybo/uEnv.txt b/buildroot/board/digilent/zybo/uEnv.txt new file mode 100644 index 0000000..1042538 --- /dev/null +++ b/buildroot/board/digilent/zybo/uEnv.txt @@ -0,0 +1,5 @@ +bootargs=root=/dev/mmcblk0p2 rootwait rw rootfstype=ext4 +fpga_image=system.bit +fpgaboot=if fatload mmc 0 0x1000000 ${fpga_image}; then echo Booting FPGA from ${fpga_image}; fpga info 0 && fpga loadb 0 0x1000000 $filesize; else echo FPGA image ${fpga_image} was not found, skipping...; fi; +kernel_image=uImage +sdboot=echo Booting from SD...; run fpgaboot; fatload mmc 0 0x1000000 ${kernel_image} && fatload mmc 0 0x2000000 zynq-zybo.dtb && bootm 0x1000000 - 0x2000000 diff --git a/buildroot/board/engicam/geam6ul/genimage.cfg b/buildroot/board/engicam/geam6ul/genimage.cfg new file mode 100644 index 0000000..fcca6e1 --- /dev/null +++ b/buildroot/board/engicam/geam6ul/genimage.cfg @@ -0,0 +1,38 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6ul-geam-kit.dtb" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/buildroot/board/engicam/geam6ul/readme.txt b/buildroot/board/engicam/geam6ul/readme.txt new file mode 100644 index 0000000..ace993a --- /dev/null +++ b/buildroot/board/engicam/geam6ul/readme.txt @@ -0,0 +1,66 @@ +******************************************** +Buildroot for Engicam GEAM6UL SOM platforms: +******************************************** + +This file documents the Buildroot support for all Engicam GEAM6UL +SOM platform boards. + +GEAM6UL SOM Starter kits: +https://www.engicam.com/vis-prod/101115 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam GEAM6UL SOM: + +- for GEAM6UL SOM: + + make engicam_imx6ul_geam_defconfig + +Build all components: + + make + +You will find the following files in output/images/: + - imx6ul-geam-kit.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/geam6ul/genimage.cfg + +Boot the GEAM6UL boards with SD boot: +==================================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J28 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM3 for sd boot. +- power on the board. + +Enjoy! diff --git a/buildroot/board/engicam/icorem6/genimage.cfg b/buildroot/board/engicam/icorem6/genimage.cfg new file mode 100644 index 0000000..835d905 --- /dev/null +++ b/buildroot/board/engicam/icorem6/genimage.cfg @@ -0,0 +1,41 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6dl-icore.dtb", + "imx6q-icore.dtb", + "imx6q-icore-ofcap10.dtb", + "imx6q-icore-ofcap12.dtb" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/buildroot/board/engicam/icorem6/linux_qt5.fragment b/buildroot/board/engicam/icorem6/linux_qt5.fragment new file mode 100644 index 0000000..5c0505e --- /dev/null +++ b/buildroot/board/engicam/icorem6/linux_qt5.fragment @@ -0,0 +1,4 @@ +# Currently kernel mainline exhibits issues when running cpufreq as ondemand +# governor on mx6. +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y diff --git a/buildroot/board/engicam/icorem6/readme.txt b/buildroot/board/engicam/icorem6/readme.txt new file mode 100644 index 0000000..bd78c5a --- /dev/null +++ b/buildroot/board/engicam/icorem6/readme.txt @@ -0,0 +1,93 @@ +********************************************* +Buildroot for Engicam i.CoreM6 SOM platforms: +********************************************* + +This file documents the Buildroot support for Engicam i.CoreM6 +platform boards. + +i.CoreM6 Quad/Dual/DualLite/Solo SOM Starter kits: +https://www.engicam.com/vis-prod/101120 +i.CoreM6 Quad/Dual/DualLite/Solo Open Frame 10.1 C.TOUCH kits: +https://www.engicam.com/vis-prod/101133 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam i.CoreM6: + + make engicam_imx6qdl_icore_defconfig + +Build all components: + + make + +You will find the following files in output/images/: + - imx6q-icore.dtb (for i.CoreM6 Quad/Dual) + - imx6dl-icore.dtb (for i.CoreM6 DualLite/Solo) + - imx6q-icore-ofcap10.dtb (for i.CoreM6 Quad/Dual ofcap 10) + - imx6q-icore-ofcap12.dtb (for i.CoreM6 Quad/Dual ofcap 12) + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/icorem6/genimage.cfg + +Boot the i.CoreM6 boards with SD boot: +===================================== + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J28 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM3 for sd boot. +- power on the board. + +Testing graphics on i.CoreM6: +============================ + +Build with support for Etnaviv, Qt5 and demo applications: + + make engicam_imx6qdl_icore_qt5_defconfig + make + +Running kmscube +# kmscube -D /dev/dri/card1 + +Running glmark2-es2-drm +# glmark2-es2-drm + +Running Qt5 Cinematic Demo: +- for i.CoreM6 Starter Kit +# export QT_QPA_EGLFS_KMS_CONFIG=/root/imx6qdl-icore.json +- for i.CoreM6 ofcap10 +# export QT_QPA_EGLFS_KMS_CONFIG=/root/imx6qdl-icore-ofcap10.json +- for i.CoreM6 ofcap12 +# export QT_QPA_EGLFS_KMS_CONFIG=/root/imx6qdl-icore-ofcap12.json + +# CinematicExperience-demo + +Enjoy! diff --git a/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap10.json b/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap10.json new file mode 100644 index 0000000..963c7c0 --- /dev/null +++ b/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap10.json @@ -0,0 +1,11 @@ +{ + "device": "/dev/dri/card1", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "LVDS-1", + "mode": "1280x800" + } + ] +} diff --git a/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap12.json b/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap12.json new file mode 100644 index 0000000..36700af --- /dev/null +++ b/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore-ofcap12.json @@ -0,0 +1,11 @@ +{ + "device": "/dev/dri/card1", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "LVDS-1", + "mode": "1280x480" + } + ] +} diff --git a/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore.json b/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore.json new file mode 100644 index 0000000..ac139a3 --- /dev/null +++ b/buildroot/board/engicam/icorem6/rootfs_overlay/root/imx6qdl-icore.json @@ -0,0 +1,11 @@ +{ + "device": "/dev/dri/card1", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "LVDS-1", + "mode": "800x480" + } + ] +} diff --git a/buildroot/board/engicam/icorem6_rqs/genimage.cfg b/buildroot/board/engicam/icorem6_rqs/genimage.cfg new file mode 100644 index 0000000..967d10b --- /dev/null +++ b/buildroot/board/engicam/icorem6_rqs/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6dl-icore-rqs.dtb", + "imx6q-icore-rqs.dtb" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/buildroot/board/engicam/icorem6_rqs/readme.txt b/buildroot/board/engicam/icorem6_rqs/readme.txt new file mode 100644 index 0000000..a0bf6f5 --- /dev/null +++ b/buildroot/board/engicam/icorem6_rqs/readme.txt @@ -0,0 +1,69 @@ +************************************************* +Buildroot for Engicam i.CoreM6 RQS SOM platforms: +************************************************* + +This file documents the Buildroot support for Engicam i.CoreM6 RQS +SOM platform boards. + +i.CoreM6 Quad/Dual/DualLite/Solo RQS SOM Starter kits: +https://www.engicam.com/vis-prod/101124 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam i.CoreM6 RQS: + +- for i.CoreM6 RQS Quad/Dual/DualLite/Solo: + + make engicam_imx6qdl_icore_rqs_defconfig + +Build all components: + + make + +You will find the following files in output/images/: +- for i.CoreM6 Quad/Dual RQS: + - imx6q-icore-rqs.dtb +- for i.CoreM6 DualLite/Solo RQS: + - imx6dl-icore-rqs.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/icorem6_rqs/genimage.cfg + +Boot the i.CoreM6 RQS boards with SD boot: +========================================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J7 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM2 for sd boot. +- power on the board. + +Enjoy! diff --git a/buildroot/board/engicam/isiot/genimage.cfg b/buildroot/board/engicam/isiot/genimage.cfg new file mode 100644 index 0000000..dc8c20d --- /dev/null +++ b/buildroot/board/engicam/isiot/genimage.cfg @@ -0,0 +1,38 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "imx6ul-isiot-emmc.dtb" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot-dtb { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/buildroot/board/engicam/isiot/readme.txt b/buildroot/board/engicam/isiot/readme.txt new file mode 100644 index 0000000..5394007 --- /dev/null +++ b/buildroot/board/engicam/isiot/readme.txt @@ -0,0 +1,66 @@ +******************************************** +Buildroot for Engicam Is.IoT SOM platforms: +******************************************** + +This file documents the Buildroot support for all Engicam Is.IoT MX6UL +SOM platform boards. + +Is.IoT MX6UL SOM Starter kits: +https://www.engicam.com/vis-prod/101122 + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the Engicam Is.IoT MX6UL SOM: + +- for Is.IoT MX6UL SOM: + + make engicam_imx6ul_isiot_defconfig + +Build all components: + + make + +You will find the following files in output/images/: + - imx6ul-isiot-emmc.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - SPL + - u-boot-dtb.img + - uImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + sync + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/engicam/isiot/genimage.cfg + +Boot the Is.IoT MX6UL boards with SD boot: +========================================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- connect 3-wire RS232 serial port J28 on board, and connect with other + serial end or USB cable(if serial-to-usb converter used) using + a terminal emulator at 115200 bps, 8n1; +- close JM3 for sd boot. +- power on the board. + +Enjoy! diff --git a/buildroot/board/freescale/common/imx/genimage.cfg.template b/buildroot/board/freescale/common/imx/genimage.cfg.template new file mode 100644 index 0000000..acce058 --- /dev/null +++ b/buildroot/board/freescale/common/imx/genimage.cfg.template @@ -0,0 +1,40 @@ +# Minimal SD card image for the Freescale boards Template +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 1 kB free space at the beginning, +# * U-Boot is dumped as is, +# * a FAT partition at offset 8 MB is containing zImage/uImage and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + files = { + %FILES% + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.imx" + offset = 1024 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/buildroot/board/freescale/common/imx/genimage.cfg.template_spl b/buildroot/board/freescale/common/imx/genimage.cfg.template_spl new file mode 100644 index 0000000..0b6e228 --- /dev/null +++ b/buildroot/board/freescale/common/imx/genimage.cfg.template_spl @@ -0,0 +1,46 @@ +# Minimal SD card image for the Freescale boards Template for SPL Boot +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 1 kB free space at the beginning, +# * U-Boot is dumped as is, +# * a FAT partition at offset 8MB is containing zImage/uImage and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + files = { + %FILES% + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot-img { + in-partition-table = "no" + image = "u-boot.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/buildroot/board/freescale/common/imx/post-image.sh b/buildroot/board/freescale/common/imx/post-image.sh new file mode 100755 index 0000000..b239743 --- /dev/null +++ b/buildroot/board/freescale/common/imx/post-image.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +# +# dtb_list extracts the list of DTB files from BR2_LINUX_KERNEL_INTREE_DTS_NAME +# in ${BR_CONFIG}, then prints the corresponding list of file names for the +# genimage configuration file +# +dtb_list() +{ + local DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([a-z0-9 \-]*\)"$/\1/p' ${BR2_CONFIG})" + + for dt in $DTB_LIST; do + echo -n "\"$dt.dtb\", " + done +} + +# +# linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in +# ${BR_CONFIG}, then prints the corresponding file name for the genimage +# configuration file +# +linux_image() +{ + if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then + echo "\"uImage\"" + else + echo "\"zImage\"" + fi +} + +genimage_type() +{ + if grep -Eq "^BR2_TARGET_UBOOT_SPL=y$" ${BR2_CONFIG}; then + echo "genimage.cfg.template_spl" + else + echo "genimage.cfg.template" + fi +} + +main() +{ + local FILES="$(dtb_list) $(linux_image)" + local GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)" + local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + + sed -e "s/%FILES%/${FILES}/" \ + board/freescale/common/imx/$(genimage_type) > ${GENIMAGE_CFG} + + rm -rf "${GENIMAGE_TMP}" + + genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + + rm -f ${GENIMAGE_CFG} + + exit $? +} + +main $@ diff --git a/buildroot/board/freescale/common/mxs/genimage.cfg.template b/buildroot/board/freescale/common/mxs/genimage.cfg.template new file mode 100644 index 0000000..e094fb7 --- /dev/null +++ b/buildroot/board/freescale/common/mxs/genimage.cfg.template @@ -0,0 +1,39 @@ +# Minimal SD card image for the Freescale MX23/MX28 Template +# +# We mimic the .sdcard Freescale's MX23/MX28 image format: +# * u-boot.sb is placed at offset 1M, +# * a FAT partition at offset 16 MB is containing zImage/uImage and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + files = { + %FILES% + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0x53 + image = "u-boot.sd" + offset = 1M + size = 16M + } + + partition kernel { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/buildroot/board/freescale/common/mxs/post-image.sh b/buildroot/board/freescale/common/mxs/post-image.sh new file mode 100755 index 0000000..0bfb835 --- /dev/null +++ b/buildroot/board/freescale/common/mxs/post-image.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +# +# dtb_list extracts the list of DTB files from BR2_LINUX_KERNEL_INTREE_DTS_NAME +# in ${BR_CONFIG}, then prints the corresponding list of file names for the +# genimage configuration file +# +dtb_list() +{ + local DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([a-z0-9 \-]*\)"$/\1/p' ${BR2_CONFIG})" + + for dt in $DTB_LIST; do + echo -n "\"$dt.dtb\", " + done +} + +# +# linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in +# ${BR_CONFIG}, then prints the corresponding file name for the genimage +# configuration file +# +linux_image() +{ + if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then + echo "\"uImage\"" + else + echo "\"zImage\"" + fi +} + +main() +{ + local FILES="$(dtb_list) $(linux_image)" + local GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)" + local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + + sed -e "s/%FILES%/${FILES}/" \ + board/freescale/common/mxs/genimage.cfg.template > ${GENIMAGE_CFG} + + rm -rf "${GENIMAGE_TMP}" + + genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + + rm -f ${GENIMAGE_CFG} + + exit $? +} + +main $@ diff --git a/buildroot/board/freescale/imx23evk/readme.txt b/buildroot/board/freescale/imx23evk/readme.txt new file mode 100644 index 0000000..6574577 --- /dev/null +++ b/buildroot/board/freescale/imx23evk/readme.txt @@ -0,0 +1,48 @@ +************************** +Freescale i.MX23 EVK board +************************** + +This file documents the Buildroot support for the Freescale i.MX23 EVK board. + +Build +===== + +First, configure Buildroot for your i.MX23 EVK board: + + make imx23evk_defconfig + +Build all components: + + make + +You will find in output/images/ directory the following files: + - imx23-evk.dtb + - rootfs.tar + - u-boot.sd + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Then, run the following command: + +*** WARNING! The command will destroy all the card content. Use with care! *** + + sudo dd if=output/images/sdcard.img of=/dev/ + +Boot the i.MX23 EVK board +========================= + +- Put the Boot Mode Select jumper as 1 0 0 1 so that it can boot + from the SD card +- Insert the SD card in the SD Card slot of the board; +- Connect an RS232 UART cable to the Debug UART Port and connect using a + terminal emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/buildroot/board/freescale/imx25pdk/readme.txt b/buildroot/board/freescale/imx25pdk/readme.txt new file mode 100644 index 0000000..1aece6c --- /dev/null +++ b/buildroot/board/freescale/imx25pdk/readme.txt @@ -0,0 +1,54 @@ +************************** +Freescale i.MX25 PDK board +************************** + +This file documents the Buildroot support for the Freescale i.MX25 PDK board. + +Build +===== + +First, configure Buildroot for the i.MX25 PDK board: + + make mx25pdk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx25-pdk.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX25 PDK board +========================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- put a USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/buildroot/board/freescale/imx28evk/readme.txt b/buildroot/board/freescale/imx28evk/readme.txt new file mode 100644 index 0000000..2920cb0 --- /dev/null +++ b/buildroot/board/freescale/imx28evk/readme.txt @@ -0,0 +1,57 @@ +************************** +Freescale i.MX28 EVK board +************************** + +This file documents the Buildroot support for the Freescale i.MX28 EVK board. + +Read the i.MX28 Evaluation Kit Quick Start Guide [1] for an introduction to the +board. + +Build +===== + +First, configure Buildroot for your i.MX28 EVK board: + + make freescale_imx28evk_defconfig + +Build all components: + + make + +You will find in ./output/images/ the following files: + - imx28-evk.dtb + - rootfs.tar + - u-boot.sd + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Then, run the following command as root: + +*** WARNING! The command will destroy all the card content. Use with care! *** + + sudo dd if=output/images/sdcard.img of=/dev/ + +Boot the i.MX28 EVK board +========================= + +To boot your newly created system (refer to the i.MX28 EVK Quick Start Guide +[1] for guidance): +- insert the SD card in the SD Card Socket 0 of the board; +- verify that your i.MX28 EVK board jumpers and switches are set as mentioned + in the i.MX28 EVK Quick Start Guide [1]; +- connect an RS232 UART cable to the Debug UART Port and connect using a + terminal emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] http://cache.freescale.com/files/32bit/doc/user_guide/EVK_imx28_QuickStart.pdf diff --git a/buildroot/board/freescale/imx51evk/readme.txt b/buildroot/board/freescale/imx51evk/readme.txt new file mode 100644 index 0000000..d67a3fd --- /dev/null +++ b/buildroot/board/freescale/imx51evk/readme.txt @@ -0,0 +1,54 @@ +************************** +Freescale i.MX51 EVK board +************************** + +This file documents the Buildroot support for the Freescale i.MX51 EVK board. + +Build +===== + +First, configure Buildroot for the i.MX51 EVK board: + + make mx51evk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx51-babbage.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX51 EVK board +========================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/buildroot/board/freescale/imx6-sabresd/linux_qt5.fragment b/buildroot/board/freescale/imx6-sabresd/linux_qt5.fragment new file mode 100644 index 0000000..d4f26b1 --- /dev/null +++ b/buildroot/board/freescale/imx6-sabresd/linux_qt5.fragment @@ -0,0 +1,5 @@ +# Currently mx6sabresd exhibits touchscreen issues when running cpufreq as +# ondemand governor with a mainline kernel. +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +CONFIG_VIDEO_CODA=m diff --git a/buildroot/board/freescale/imx6-sabresd/readme.txt b/buildroot/board/freescale/imx6-sabresd/readme.txt new file mode 100644 index 0000000..f09ff5c --- /dev/null +++ b/buildroot/board/freescale/imx6-sabresd/readme.txt @@ -0,0 +1,110 @@ +******************************* +Freescale i.MX6 Sabre SD boards +******************************* + +This file documents the Buildroot support for the Freescale i.MX6 Sabre SD +boards based on i.MX6Q, i.MX6DL and iMX6QP. + +Thanks to the SPL support in U-Boot it is possible to run a single +sdcard.img in all i.MX6 Sabre SD board variants. + +This configuration uses U-Boot mainline and kernel mainline. + +Build +===== + +First, configure Buildroot for the i.MX6 Sabre SD board: + + make imx6-sabresd_defconfig + +Build all components: + + make + +You will find the following files in output/images/ : + - imx6q-sabresd.dtb + - imx6dl-sabresd.dtb + - imx6qp-sabresd.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX6 Sabre SD board +============================= + +To boot your newly created system: +- insert the SD card in the SD3 slot of the board (close to the HDMI connector); +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Testing graphics on the i.MX6 Sabre SD board +============================================ + +The imx6-sabresd_qt5_defconfig allows to quickly test the graphics +capabilities of i.MX6 using the opensource Etnaviv graphics stack +and kernel mainline. + +In order to build it: + +make imx6-sabresd_qt5_defconfig +make + +Then flash the SD card as explained above. + +Running kmscube application: + +# kmscube + +Running Qt5 Cinematic Demo: + +# export QT_QPA_EGLFS_KMS_CONFIG=/root/sabresd.json +# /usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience + +Running gl2mark benchmark: + +# glmark2-es2-drm + +Testing video playback on the i.MX6 Sabre SD board +================================================== + +As the mx6sabresd has two display outputs (LVDS and HDMI), it is necessary to +know what is the connector that corresponds to the HDMI output. + +This information can be found by running: + +# modetest + +And search for the HDMI connector number. In our case it shows up as 37. + +In the mx6sabresd prompt run the following Gstreamer pipeline: + +# gst-launch-1.0 filesrc location=/root/trailer_1080p_h264_mp3.avi ! avidemux ! \ +h264parse ! v4l2video1dec capture-io-mode=dmabuf ! kmssink connector-id=37 \ +name=imx-drm sync=0 + +(The video used on this example was retrieved from: +http://linode.boundarydevices.com/videos/trailer_1080p_h264_mp3.avi) + +Enjoy! diff --git a/buildroot/board/freescale/imx6-sabresd/rootfs_overlay/root/sabresd.json b/buildroot/board/freescale/imx6-sabresd/rootfs_overlay/root/sabresd.json new file mode 100644 index 0000000..d5d063a --- /dev/null +++ b/buildroot/board/freescale/imx6-sabresd/rootfs_overlay/root/sabresd.json @@ -0,0 +1,15 @@ +{ + "device": "/dev/dri/card0", + "hwcursor": false, + "pbuffers": true, + "outputs": [ + { + "name": "HDMI-1", + "mode": "off" + }, + { + "name": "LVDS-1", + "mode": "1024x768" + } + ] +} diff --git a/buildroot/board/freescale/imx6sabre/patches/uboot/0002-imximage-Remove-failure-when-no-IVT-offset-is-found.patch b/buildroot/board/freescale/imx6sabre/patches/uboot/0002-imximage-Remove-failure-when-no-IVT-offset-is-found.patch new file mode 100644 index 0000000..92eff75 --- /dev/null +++ b/buildroot/board/freescale/imx6sabre/patches/uboot/0002-imximage-Remove-failure-when-no-IVT-offset-is-found.patch @@ -0,0 +1,55 @@ +From 24ba28680abe868e8db3442a9bf523ad3af1febd Mon Sep 17 00:00:00 2001 +From: Fabio Estevam +Date: Fri, 9 Mar 2018 08:25:00 -0300 +Subject: [PATCH] imximage: Remove failure when no IVT offset is found + +Sometimes imximage throws the following error: + + CFGS board/freescale/vf610twr/imximage.cfg.cfgtmp + CFGS board/freescale/vf610twr/imximage.cfg.cfgtmp + MKIMAGE u-boot-dtb.imx +Error: No BOOT_FROM tag in board/freescale/vf610twr/imximage.cfg.cfgtmp +arch/arm/mach-imx/Makefile:100: recipe for target 'u-boot-dtb.imx' failed + +Later on, when running mkimage for the u-boot.imx it will succeed in +finding the IVT offset. + +Looks like some race condition happening during parallel build when +processing mkimage for u-boot-dtb.imx and u-boot.imx. + +A proper fix still needs to be implemented, but as a workaround let's +remove the error when the IVT offset is not found. + +It is useful to have such message, especially during bring-up phase, +but the build error that it causes is severe, so better avoid the +build error for now. + +The error checking can be re-implemented later when we have a proper +fix. + +Reported-by: Breno Lima +Reported-by: Thomas Petazzoni +Signed-off-by: Fabio Estevam +--- + tools/imximage.c | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/tools/imximage.c b/tools/imximage.c +index 0c43196..bef56f8 100644 +--- a/tools/imximage.c ++++ b/tools/imximage.c +@@ -765,11 +765,6 @@ static uint32_t parse_cfg_file(struct imx_header *imxhdr, char *name) + (*set_dcd_rst)(imxhdr, dcd_len, name, lineno); + fclose(fd); + +- /* Exit if there is no BOOT_FROM field specifying the flash_offset */ +- if (imximage_ivt_offset == FLASH_OFFSET_UNDEFINED) { +- fprintf(stderr, "Error: No BOOT_FROM tag in %s\n", name); +- exit(EXIT_FAILURE); +- } + return dcd_len; + } + +-- +2.7.4 + diff --git a/buildroot/board/freescale/imx6sabre/patches/uboot/uboot-0001-mx6qsabre_common-boot-Linux-to-init-in-mfgtools-mode.patch b/buildroot/board/freescale/imx6sabre/patches/uboot/uboot-0001-mx6qsabre_common-boot-Linux-to-init-in-mfgtools-mode.patch new file mode 100644 index 0000000..d57875f --- /dev/null +++ b/buildroot/board/freescale/imx6sabre/patches/uboot/uboot-0001-mx6qsabre_common-boot-Linux-to-init-in-mfgtools-mode.patch @@ -0,0 +1,36 @@ +From 90ecc0ad14337898b75843efc6530fc4a34f7808 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= +Date: Tue, 12 Aug 2014 10:17:31 +0200 +Subject: [PATCH] mx6qsabre_common: boot Linux to /init in mfgtools mode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Buildroot supplies a nice /init wrapper script to use when booting from a +ramdisk. + +This patch tells u-boot to tell the kernel to boot into /init (instead of +/linuxrc) on i.MX6, when booting in mfgtools mode. This way we can boot a +buildroot system entirely through USB. + +Signed-off-by: Vincent Stehlé +--- + include/configs/mx6sabre_common.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/configs/mx6sabre_common.h b/include/configs/mx6sabre_common.h +index 93d4c4b..d2e7efd 100644 +--- a/include/configs/mx6sabre_common.h ++++ b/include/configs/mx6sabre_common.h +@@ -52,7 +52,7 @@ + + #define CONFIG_MFG_ENV_SETTINGS \ + "mfgtool_args=setenv bootargs console=" CONSOLE_DEV ",115200 " \ +- "rdinit=/linuxrc " \ ++ "rdinit=/init " \ + "g_mass_storage.stall=0 g_mass_storage.removable=1 " \ + "g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF "\ + "g_mass_storage.iSerialNumber=\"\" "\ +-- +2.1.4 + diff --git a/buildroot/board/freescale/imx6sabre/readme.txt b/buildroot/board/freescale/imx6sabre/readme.txt new file mode 100644 index 0000000..4b8db52 --- /dev/null +++ b/buildroot/board/freescale/imx6sabre/readme.txt @@ -0,0 +1,171 @@ +******************************************************** +Freescale i.MX6 Q, DL and SoloX SABRE development boards +******************************************************** + +This file documents the Buildroot support for the Freescale SABRE Board +for Smart Devices Based on the i.MX 6 and i.MX 6SoloX Series (SABRESD), +as well as the Freescale SABRE Board for Automotive Infotainment. + +Read the i.MX 6 SABRESD Quick Start Guide for an introduction to the +board: +http://cache.freescale.com/files/32bit/doc/quick_start_guide/SABRESDB_IMX6_QSG.pdf + +Read the i.MX 6 SoloX SABRESD Quick Start Guide for an introduction to +the board: +http://cache.freescale.com/files/32bit/doc/user_guide/IMX6SOLOXQSG.pdf + +Read the SABRE for Automotive Infotainment Quick Start Guide for an +introduction to the board: +http://cache.freescale.com/files/32bit/doc/user_guide/IMX6SABREINFOQSG.pdf + +Building with NXP kernel and NXP U-Boot +======================================= + +First, configure Buildroot for your SABRE board. +For i.MX6Q SABRE SD board: + + make freescale_imx6qsabresd_defconfig + +For i.MX6DL SABRE SD board: + + make freescale_imx6dlsabresd_defconfig + +For i.MX6 SoloX SABRE SD board: + + make freescale_imx6sxsabresd_defconfig + +For i.MX6Q SABRE Auto board: + + make freescale_imx6qsabreauto_defconfig + +For i.MX6DL SABRE Auto board: + + make freescale_imx6dlsabreauto_defconfig + +Build all components: + + make + +You will find in ./output/images/ the following files: + - imx6dl-sabresd.dtb or imx6q-sabresd.dtb or imx6sx-sdb.dtb or + imx6q-sabreauto.dtb or imx6dl-sabreauto.dtb + - rootfs.ext2 + - rootfs.tar + - u-boot.imx + - uImage, or zImage for i.MX6 SoloX + +Building with mainline kernel and mainline U-Boot +================================================= + +Mainline U-Boot uses SPL and can support the three +variants of mx6sabreauto boards: mx6q, mx6dl and mx6qp. + +First, configure Buildroot for your mx6sabreauto board + + make imx6-sabreauto_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx6dl-sabresd.dtb, imx6q-sabresd.dtb, imx6q-sabresd.dtb + - rootfs.ext2 + - SPL and u-boot.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a microSD card. Launch the following +command as root: + + dd if=./output/images/sdcard.img of=/dev/ + +*** WARNING! The script will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the SABRE board +==================== + +i.MX6 SABRE SD +-------------- + +To boot your newly created system on an i.MX6 SABRE SD Board (refer to +the i.MX6 SABRE SD Quick Start Guide for guidance): +- insert the SD card in the SD3 slot of the board; +- locate the BOOT dip switches (SW6), set dips 2 and 7 to ON, all others to OFF; +- connect a Micro USB cable to Debug Port and connect using a terminal emulator + at 115200 bps, 8n1; +- power on the board. + +i.MX6 SoloX SABRE SD +-------------------- + +To boot your newly created system on an i.MX6 SoloX SABRE SD Board +(refer to the i.MX6 SoloX SABRE SD Quick Start Guide for guidance): +- insert the SD card in the J4-SD4 socket at the bottom of the board; +- Set the SW10, SW11 and SW12 DIP switches at the top of the board in + their default position, to boot from SD card. Reference configuration: + + SW10 + 1 2 3 4 5 6 7 8 + off off off off off off off off + + SW11 + 1 2 3 4 5 6 7 8 + off off ON ON ON off off off + + SW12 + 1 2 3 4 5 6 7 8 + off ON off off off off off off + +- connect a Micro USB cable to the J16 Debug Port at the bottom of the + board. This is a dual UART debug port; connect to the first tty using + a terminal emulator at 115200 bps, 8n1; +- power on the board with the SW1-PWR switch at the top of the board. + +SABRE Auto +---------- + +To boot your newly created system on a SABRE Auto Board (refer to the SABRE for +Automotive Infotainment Quick Start Guide for guidance): +- insert the SD card in the CPU card SD card socket J14; +- Set the S1, S2 and S3 DIP switches and J3 jumper to boot from SD on CPU card. + Reference configuration: + + S1 + 1 2 3 4 5 6 7 8 9 10 + off ON off off ON off off off off off + + S2 + 1 2 3 4 + off off ON off + + S3 + 1 2 3 4 + off off ON ON + + J3: 1-2 + +- connect an RS-232 UART cable to CPU card debug port J18 UART DB9 and + connect using a terminal emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== + +https://community.freescale.com/docs/DOC-95015 +https://community.freescale.com/docs/DOC-95017 +https://community.freescale.com/docs/DOC-99218 diff --git a/buildroot/board/freescale/imx6slevk/readme.txt b/buildroot/board/freescale/imx6slevk/readme.txt new file mode 100644 index 0000000..424380e --- /dev/null +++ b/buildroot/board/freescale/imx6slevk/readme.txt @@ -0,0 +1,14 @@ +NXP i.MX6SL EVK board +--------------------- + +To build a minimal support for this board: + +$ make imx6slevk_defconfig +$ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be flashed into the SD card: + +$ sudo dd if=output/images/sdcard.img of=/dev/; sync + +Then insert the SD card into the SD2 slot and boot the board. diff --git a/buildroot/board/freescale/imx6sxsdb/readme.txt b/buildroot/board/freescale/imx6sxsdb/readme.txt new file mode 100644 index 0000000..2779075 --- /dev/null +++ b/buildroot/board/freescale/imx6sxsdb/readme.txt @@ -0,0 +1,14 @@ +NXP i.MX6SX SDB board +--------------------- + +To build a minimal support for this board: + +$ make imx6sx-sdb_defconfig +$ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be flashed into the SD card: + +$ sudo dd if=output/images/sdcard.img of=/dev/; sync + +Then insert the SD card into the SD4 boot slot and boot the board. diff --git a/buildroot/board/freescale/imx6ulevk/readme.txt b/buildroot/board/freescale/imx6ulevk/readme.txt new file mode 100644 index 0000000..90355f3 --- /dev/null +++ b/buildroot/board/freescale/imx6ulevk/readme.txt @@ -0,0 +1,74 @@ +*************************** +Freescale i.MX6UL EVK board +*************************** + +This file documents the Buildroot support for the Freescale i.MX6UL EVK board. + +Please read the i.MX6UL Evaluation Kit Quick Start Guide [1] for an +introduction to the board. + +Build +===== + +First, configure Buildroot for your i.MX6UL EVK board: + +In order to to do so there are two supported options: + + make freescale_imx6ulevk_defconfig + +if you plan to use NXP provided U-Boot and kernel. + +or + + make imx6ulevk_defconfig + +if you plan to use mainline U-Boot and mainline kernel. + +Build all components: + + make + +You will find in ./output/images/ the following files: + - imx6ul-14x14-evk.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable microSD card +============================== + +To determine the device associated to the microSD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a microSD card. Launch the following +command as root: + + dd if=./output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX6UL EVK board +========================= + +To boot your newly created system (refer to the i.MX6UL EVK Quick Start Guide +[1] for guidance): +- insert the microSD card in the microSD slot of the board; +- verify that your i.MX6UL EVK board jumpers and switches are set as mentioned + in the i.MX6UL EVK Quick Start Guide [1]; +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! + +References +========== +[1] http://cache.freescale.com/files/32bit/doc/quick_start_guide/IMX6ULTRALITEQSG.pdf diff --git a/buildroot/board/freescale/imx7dsdb/readme.txt b/buildroot/board/freescale/imx7dsdb/readme.txt new file mode 100644 index 0000000..c6030f6 --- /dev/null +++ b/buildroot/board/freescale/imx7dsdb/readme.txt @@ -0,0 +1,54 @@ +*************************** +Freescale i.MX7D SDB board +*************************** + +This file documents the Buildroot support for the Freescale i.MX7D SDB board. + +Build +===== + +First, configure Buildroot for your i.MX7D SDB board: + + make freescale_imx7dsabresd_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx7d-sdb.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a SD card. Launch the following +command as root: + + dd if=./output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX7D SDB board +========================= + +To boot your newly created system: +- insert the SD card in the SD slot of the board; +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/buildroot/board/freescale/warpboard/README b/buildroot/board/freescale/warpboard/README new file mode 100644 index 0000000..67d4e04 --- /dev/null +++ b/buildroot/board/freescale/warpboard/README @@ -0,0 +1,77 @@ +Build +===== + +First, configure Buildroot for your WarpBoard. + make warpboard_defconfig + +Build all components: + make + +You will find in ./output/images/ the following files: + - imx6sl-warp.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Update uboot +============ + +- Put warpboard in USB download mode by closing the j2 jumper on the + daugther board + +- Load u-boot.imx in the WarpBoard by using the imx-usb-loader host utility: + + $ ./output/host/bin/imx_usb -c output/host/etc/imx-loader.d/ output/images/u-boot.imx + +- U-Boot will appear in minicom + +- Reset the U-Boot environment to its default: + => env default -f -a + => saveenv + +- Run the DFU command in U-Boot: + => dfu 0 mmc 0 + +- Transfer U-Boot into flash by running this command in host side: + + $ sudo ./output/host/bin/dfu-util -D output/images/u-boot.imx -a boot + +- remove power and put the WarpBoard back into normal boot mode by + opening the j2 jumper. + +Update linux & rootfs +===================== + +Run the 'ums' command from the U-Boot prompt to mount the eMMC as USB mass +storage: + +=> ums 0 mmc 0 + +And then flash the sdcard.img into the eMMC: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use it with care! *** + +Using bluetooth +================ + +Enable the bluez_utils or bluez5_utils package, and then run: + +$ hciattach /dev/ttymxc4 any +$ hciconfig hci0 up + +Using Wifi +========== + +# modprobe brcmfmac +# iwconfig wlan0 essid ACCESSPOINTNAME +# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf +(enter the wifi password and press enter) +# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf & +# udhcpc -i wlan0 +# ping buildroot.org + +Enjoy! diff --git a/buildroot/board/freescale/warpboard/linux.fragment b/buildroot/board/freescale/warpboard/linux.fragment new file mode 100644 index 0000000..892d0cb --- /dev/null +++ b/buildroot/board/freescale/warpboard/linux.fragment @@ -0,0 +1 @@ +CONFIG_CFG80211_WEXT=y diff --git a/buildroot/board/freescale/warpboard/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt b/buildroot/board/freescale/warpboard/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt new file mode 100644 index 0000000..9546246 --- /dev/null +++ b/buildroot/board/freescale/warpboard/rootfs_overlay/lib/firmware/brcm/brcmfmac4330-sdio.txt @@ -0,0 +1,40 @@ +# bcm94330wlsdgb.txt +manfid=0x2d0 +prodid=0x0552 +vendid=0x14e4 +devid=0x4360 +boardtype=0x0552 +boardrev=0x11 +# this design has 2.4GHz SP3T switch +boardflags=0x00080200 +nocrc=1 +xtalfreq=37400 +boardnum=22 +macaddr=00:90:4c:c5:12:38 +ag0=255 +aa2g=1 +ccode=CN +pa0b0=0x14d0 +pa0b1=0xfd98 +pa0b2=0xff78 +rssismf2g=0xa +rssismc2g=0x3 +rssisav2g=0x7 +maxp2ga0=0x50 +sromrev=3 +il0macaddr=00:90:4c:c5:12:38 +wl0id=0x431b +cckPwrOffset=5 +ofdm2gpo=0x66666666 +mcs2gpo0=0x6666 +mcs2gpo1=0x6666 +swctrlmap_2g=0x04040404,0x02020202,0x02020404,0x10202,0x1ff +swctrlmap_5g=0x00100010,0x00280020,0x00200010,0x14202,0x2f8 +rfreg033=0x19 +rfreg033_cck=0x1f +dacrate2g=160 +txalpfbyp2g=1 +bphyscale=17 +cckPwrIdxCorr=-15 +pacalidx2g=45 +txgaintbl=1 diff --git a/buildroot/board/friendlyarm/nanopi-a64/boot.cmd b/buildroot/board/friendlyarm/nanopi-a64/boot.cmd new file mode 100644 index 0000000..446bd85 --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-a64/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-nanopi-a64.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/friendlyarm/nanopi-a64/genimage.cfg b/buildroot/board/friendlyarm/nanopi-a64/genimage.cfg new file mode 100644 index 0000000..66b6c5f --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-a64/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-nanopi-a64.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/friendlyarm/nanopi-a64/readme.txt b/buildroot/board/friendlyarm/nanopi-a64/readme.txt new file mode 100644 index 0000000..88c4e66 --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-a64/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Nanopi A64. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Nanopi A64 link: +http://nanopi.io/nanopi-a64.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/FriendlyARM+Nanopi+A64 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make friendlyarm_nanopi_a64_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Nanopi A64 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/friendlyarm/nanopi-m1-plus/boot.cmd b/buildroot/board/friendlyarm/nanopi-m1-plus/boot.cmd new file mode 100644 index 0000000..35a1d65 --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-m1-plus/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-nanopi-m1-plus.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/friendlyarm/nanopi-m1-plus/genimage.cfg b/buildroot/board/friendlyarm/nanopi-m1-plus/genimage.cfg new file mode 100644 index 0000000..fdb3b90 --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-m1-plus/genimage.cfg @@ -0,0 +1,35 @@ +# Minimal SD card image for the NanoPi M1 Plus +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-nanopi-m1-plus.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/friendlyarm/nanopi-m1-plus/patches/linux/0001-ARM-dts-nanopi-m1-plus-add-dts-to-linux-4.11.5.patch b/buildroot/board/friendlyarm/nanopi-m1-plus/patches/linux/0001-ARM-dts-nanopi-m1-plus-add-dts-to-linux-4.11.5.patch new file mode 100644 index 0000000..c052732 --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-m1-plus/patches/linux/0001-ARM-dts-nanopi-m1-plus-add-dts-to-linux-4.11.5.patch @@ -0,0 +1,103 @@ +From 4ec28d4e1040b94c66e97aa77071c9ef3478f022 Mon Sep 17 00:00:00 2001 +From: Chakra Divi +Date: Thu, 6 Jul 2017 18:22:35 +0530 +Subject: [PATCH] ARM: dts: nanopi-m1-plus : add dts to linux 4.11.5 + +This patch is used to add nanopi-m1-plus dts +file in linux source code helps to add nanopi-m1-plus +board support in buildroot and is part of the linux +main-line ; refer to the below link for info +[https://patchwork.kernel.org/patch/9755033] + +Signed-off-by: Chakra Divi +--- + arch/arm/boot/dts/Makefile | 1 + + arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts | 64 +++++++++++++++++++++++++ + 2 files changed, 65 insertions(+) + create mode 100644 arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts + +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index 0118084..928e5d3 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -867,6 +867,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \ + sun8i-h3-bananapi-m2-plus.dtb \ + sun8i-h3-beelink-x2.dtb \ + sun8i-h3-nanopi-m1.dtb \ ++ sun8i-h3-nanopi-m1-plus.dtb \ + sun8i-h3-nanopi-neo.dtb \ + sun8i-h3-orangepi-2.dtb \ + sun8i-h3-orangepi-lite.dtb \ +diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts b/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts +new file mode 100644 +index 0000000..8ddd1b2 +--- /dev/null ++++ b/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts +@@ -0,0 +1,64 @@ ++/* ++ * Copyright (C) 2017 Jagan Teki ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file 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 file 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. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++#include "sun8i-h3-nanopi.dtsi" ++ ++/ { ++ model = "FriendlyArm NanoPi M1 Plus"; ++ compatible = "friendlyarm,nanopi-m1-plus", "allwinner,sun8i-h3"; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++&ehci2 { ++ status = "okay"; ++}; ++ ++&ohci1 { ++ status = "okay"; ++}; ++ ++&ohci2 { ++ status = "okay"; ++}; +-- +1.7.9.5 + diff --git a/buildroot/board/friendlyarm/nanopi-m1-plus/readme.txt b/buildroot/board/friendlyarm/nanopi-m1-plus/readme.txt new file mode 100644 index 0000000..3e16c8a --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-m1-plus/readme.txt @@ -0,0 +1,29 @@ +NanoPi M1 Plus + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the NanoPi M1 Plus. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make nanopi_m1_plus_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/buildroot/board/friendlyarm/nanopi-m1/boot.cmd b/buildroot/board/friendlyarm/nanopi-m1/boot.cmd new file mode 100644 index 0000000..b4d612e --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-m1/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-nanopi-m1.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/friendlyarm/nanopi-m1/genimage.cfg b/buildroot/board/friendlyarm/nanopi-m1/genimage.cfg new file mode 100644 index 0000000..23c9c7d --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-m1/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the NanoPi M1 +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-nanopi-m1.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/friendlyarm/nanopi-m1/readme.txt b/buildroot/board/friendlyarm/nanopi-m1/readme.txt new file mode 100644 index 0000000..8b10e4b --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-m1/readme.txt @@ -0,0 +1,29 @@ +NanoPi M1 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the NanoPi M1. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make nanopi_m1_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/buildroot/board/friendlyarm/nanopi-neo/boot.cmd b/buildroot/board/friendlyarm/nanopi-neo/boot.cmd new file mode 100644 index 0000000..7874057 --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-neo/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-nanopi-neo.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/friendlyarm/nanopi-neo/genimage.cfg b/buildroot/board/friendlyarm/nanopi-neo/genimage.cfg new file mode 100644 index 0000000..ad43d31 --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-neo/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-nanopi-neo.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 32M + } +} diff --git a/buildroot/board/friendlyarm/nanopi-neo/post-build.sh b/buildroot/board/friendlyarm/nanopi-neo/post-build.sh new file mode 100755 index 0000000..9759efb --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-neo/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# post-build.sh for Nanopi NEO, based on the Orange Pi PC +# 2013, Carlo Caione +# 2016, "Yann E. MORIN" + +BOARD_DIR="$( dirname "${0}" )" +MKIMAGE="${HOST_DIR}/bin/mkimage" +BOOT_CMD="${BOARD_DIR}/boot.cmd" +BOOT_CMD_H="${BINARIES_DIR}/boot.scr" + +# U-Boot script +"${MKIMAGE}" -C none -A arm -T script -d "${BOOT_CMD}" "${BOOT_CMD_H}" diff --git a/buildroot/board/friendlyarm/nanopi-neo/post-image.sh b/buildroot/board/friendlyarm/nanopi-neo/post-image.sh new file mode 100755 index 0000000..740386e --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-neo/post-image.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# post-image.sh for Nanopi NEO, based on the Orange Pi PC + +BOARD_DIR="$( dirname "${0}" )" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/friendlyarm/nanopi-neo/readme.txt b/buildroot/board/friendlyarm/nanopi-neo/readme.txt new file mode 100644 index 0000000..539df54 --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-neo/readme.txt @@ -0,0 +1,42 @@ +Intro +===== + +The instructions herein are valid for the FriendlyARM NanoPi NEO, +both the 256MiB and 512MiB versions. They should also work for the +NanoPi NEO Air, but this is untested so far. + +The FriendlyARM Nanopi NEO is a 4x4cm² board with an Allwiner H3 SoC: + - quad-core Cortex-A7 @1.2GHz + - 256 or 512MiB of DDR + - uSDCard as only storage option + - 3x USB 2.0 host (one socket, two on expansion pin-holes) + - 1x USB 2.0 OTG (also used as power source) + - 10/100 ethernet MAC + - GPIOs, SPI, I2c... + +Support for the Nanopi NEO in U-Boot and Linux is very recent, so only +core, basic features are available. + +Unfortunately, support for the ethernet MAC and the USB OTG are not +yet upstream, but are being actively worked on. + + +How to build +============ + + $ make nanopi_neo_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +You will then obtain an image ready to be written to your micro SDcard: + + $ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +Notes: + - replace 'sdX' with the actual device with your micro SDcard, + - you may need to be root to do that (use 'sudo'). + +Insert the micro SDcard in your NanoPi NEO and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/friendlyarm/nanopi-neo2/boot.cmd b/buildroot/board/friendlyarm/nanopi-neo2/boot.cmd new file mode 100644 index 0000000..9a39f4a --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-neo2/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-h5-nanopi-neo2.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/friendlyarm/nanopi-neo2/genimage.cfg b/buildroot/board/friendlyarm/nanopi-neo2/genimage.cfg new file mode 100644 index 0000000..ebe123b --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-neo2/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h5-nanopi-neo2.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/friendlyarm/nanopi-neo2/readme.txt b/buildroot/board/friendlyarm/nanopi-neo2/readme.txt new file mode 100644 index 0000000..0f445e2 --- /dev/null +++ b/buildroot/board/friendlyarm/nanopi-neo2/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Nanopi NEO2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Nanopi NEO2 link: +http://nanopi.io/nanopi-neo2.html + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/FriendlyARM+NanoPi+NEO2 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make friendlyarm_nanopi_neo2_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Nanopi NEO2 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/gdb/bfin-bf512/linux.config b/buildroot/board/gdb/bfin-bf512/linux.config new file mode 100644 index 0000000..bc2a907 --- /dev/null +++ b/buildroot/board/gdb/bfin-bf512/linux.config @@ -0,0 +1,87 @@ +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_SYSVIPC=y +CONFIG_BLK_DEV_INITRD=y +# CONFIG_RD_GZIP is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_UID16 is not set +# CONFIG_SGETMASK_SYSCALL is not set +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_KALLSYMS is not set +# CONFIG_BUG is not set +# CONFIG_BASE_FULL is not set +# CONFIG_ADVISE_SYSCALLS is not set +# CONFIG_MEMBARRIER is not set +CONFIG_EMBEDDED=y +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_SLUB_DEBUG is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_MODULES=y +# CONFIG_BLOCK is not set +CONFIG_BF512=y +# CONFIG_SET_GENERIC_CLOCKEVENTS is not set +# CONFIG_I_ENTRY_L1 is not set +# CONFIG_EXCPT_IRQ_SYSC_L1 is not set +# CONFIG_DO_IRQ_L1 is not set +# CONFIG_CORE_TIMER_IRQ_L1 is not set +# CONFIG_IDLE_L1 is not set +# CONFIG_SCHEDULE_L1 is not set +# CONFIG_ARITHMETIC_OPS_L1 is not set +# CONFIG_ACCESS_OK_L1 is not set +# CONFIG_MEMSET_L1 is not set +# CONFIG_MEMCPY_L1 is not set +# CONFIG_STRCMP_L1 is not set +# CONFIG_STRNCMP_L1 is not set +# CONFIG_STRCPY_L1 is not set +# CONFIG_STRNCPY_L1 is not set +# CONFIG_SYS_BFIN_SPINLOCK_L1 is not set +# CONFIG_CACHELINE_ALIGNED_L1 is not set +# CONFIG_DCACHE_FLUSH_L1 is not set +# CONFIG_APP_STACK_L1 is not set +# CONFIG_BFIN_INS_LOWOVERHEAD is not set +# CONFIG_BFIN_ICACHE is not set +# CONFIG_BFIN_DCACHE is not set +# CONFIG_C_AMCKEN is not set +CONFIG_BINFMT_ELF_FDPIC=y +CONFIG_BINFMT_FLAT=y +# CONFIG_COREDUMP is not set +# CONFIG_SUSPEND is not set +# CONFIG_UEVENT_HELPER is not set +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set +# CONFIG_FW_LOADER is not set +# CONFIG_ALLOW_DEV_COREDUMP is not set +# CONFIG_INPUT is not set +# CONFIG_SERIO is not set +# CONFIG_VT is not set +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_BFIN=y +CONFIG_SERIAL_BFIN_CONSOLE=y +CONFIG_SERIAL_BFIN_UART0=y +CONFIG_SERIAL_BFIN_UART1=y +# CONFIG_BFIN_OTP is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_HWMON is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_MANDATORY_FILE_LOCKING is not set +# CONFIG_DNOTIFY is not set +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf-8" +CONFIG_PRINTK_TIME=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_SCHED_DEBUG is not set +# CONFIG_FTRACE is not set +# CONFIG_DEBUG_VERBOSE is not set +# CONFIG_DEBUG_HUNT_FOR_ZERO is not set +# CONFIG_DEBUG_BFIN_HWTRACE_ON is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_ACCESS_CHECK is not set +# CONFIG_CRC32 is not set diff --git a/buildroot/board/gdb/bfin-bf512/readme.txt b/buildroot/board/gdb/bfin-bf512/readme.txt new file mode 100644 index 0000000..b8ff250 --- /dev/null +++ b/buildroot/board/gdb/bfin-bf512/readme.txt @@ -0,0 +1,11 @@ +Run the simulation with GDB for FDPIC: + + ./output/host/bin/bfin-buildroot-linux-uclibc-run --env operating --model bf512 output/images/vmlinux + +Run the simulation with GDB for FLAT: + + ./output/host/bin/bfin-buildroot-uclinux-uclibc-run --env operating --model bf512 output/images/vmlinux + +The login prompt will appear in the terminal that started GDB. + +Tested with GDB 7.9 diff --git a/buildroot/board/gdb/post-build.sh b/buildroot/board/gdb/post-build.sh new file mode 100755 index 0000000..8933d50 --- /dev/null +++ b/buildroot/board/gdb/post-build.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# no simulated network devices at the moment +rm -f ${TARGET_DIR}/etc/init.d/S40network +rm -rf ${TARGET_DIR}/etc/network/ diff --git a/buildroot/board/grinn/chiliboard/genimage.cfg b/buildroot/board/grinn/chiliboard/genimage.cfg new file mode 100644 index 0000000..ffe027e --- /dev/null +++ b/buildroot/board/grinn/chiliboard/genimage.cfg @@ -0,0 +1,31 @@ +# Minimal microSD card image for Grinn's chiliBoard +# + +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img", + "am335x-chiliboard.dtb", + "zImage" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/grinn/chiliboard/post-image.sh b/buildroot/board/grinn/chiliboard/post-image.sh new file mode 100755 index 0000000..1a076ee --- /dev/null +++ b/buildroot/board/grinn/chiliboard/post-image.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/grinn/chiliboard/readme.txt b/buildroot/board/grinn/chiliboard/readme.txt new file mode 100644 index 0000000..676aa70 --- /dev/null +++ b/buildroot/board/grinn/chiliboard/readme.txt @@ -0,0 +1,46 @@ +********** +chiliBoard +********** + +Build +===== + +First, configure Buildroot for your chiliBoard: + + make grinn_chiliboard_defconfig + +Build image: + + make + +After building you should get a tree like this: + + output/images/ + ├── am335x-chiliboard.dtb + ├── boot.vfat + ├── MLO + ├── rootfs.ext2 + ├── rootfs.ext4 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot.img + └── zImage + +Create a bootable microSD card +============================== + +Buildroot prepares a bootable microSD card image "sdcard.img" in output/images/ +directory, To flash SD card just run the following command: + + sudo dd if=output/images/sdcard.img of=/dev/ bs=1M + +where can be sdX or mmcblkX + +*** WARNING! This will destroy all contents of device you specify! *** + +Boot chiliBoard +=============== + +- insert the microSD card in the microSD slot of the board; +- plug micro USB cable to provide power and console interface +- use terminal emulator with 115200 bps, 8n1 diff --git a/buildroot/board/grinn/liteboard/genimage.cfg b/buildroot/board/grinn/liteboard/genimage.cfg new file mode 100644 index 0000000..cbce2db --- /dev/null +++ b/buildroot/board/grinn/liteboard/genimage.cfg @@ -0,0 +1,48 @@ +# Minimal microSD card image for Grinn's liteBoard +# +# We mimic the .sdcard Freescale's image format for i.MX6UL: +# * the microSD card must have 1 kB free space at the beginning, +# * SPL is dumped as is, +# * U-Boot is dumped at 69K offset, as configured in SPL +# * a FAT partition at offset 8 MB is containing zImage and dtbs, +# * a single root filesystem partition is required (Ext4 in this case). +# + +image boot.vfat { + vfat { + files = { + "imx6ul-liteboard.dtb", + "zImage" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + + partition SPL { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.img" + offset = 69K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/grinn/liteboard/post-image.sh b/buildroot/board/grinn/liteboard/post-image.sh new file mode 100755 index 0000000..1a076ee --- /dev/null +++ b/buildroot/board/grinn/liteboard/post-image.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/grinn/liteboard/readme.txt b/buildroot/board/grinn/liteboard/readme.txt new file mode 100644 index 0000000..fe1386a --- /dev/null +++ b/buildroot/board/grinn/liteboard/readme.txt @@ -0,0 +1,45 @@ +********* +liteBoard +********* + +Build +===== + +First, configure Buildroot for your liteBoard: + + make grinn_liteboard_defconfig + +Build image: + + make + +After building you should get a tree like this: + + output/images/ + ├── boot.vfat + ├── imx6ul-liteboard.dtb + ├── rootfs.ext2 + ├── rootfs.ext4 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot.imx + └── zImage + +Create a bootable microSD card +============================== + +Buildroot prepares a bootable microSD card image "sdcard.img" in output/images/ +directory, To flash SD card just run the following command: + + sudo dd if=output/images/sdcard.img of=/dev/ bs=1M + +where can be sdX or mmcblkX + +*** WARNING! This will destroy all contents of device you specify! *** + +Boot liteBoard +============== + +- insert the microSD card in the microSD slot of the board; +- plug micro USB cable to provide power and console interface +- use terminal emulator with 115200 bps, 8n1 diff --git a/buildroot/board/hardkernel/odroidc2/boot.ini b/buildroot/board/hardkernel/odroidc2/boot.ini new file mode 100644 index 0000000..2fdffa3 --- /dev/null +++ b/buildroot/board/hardkernel/odroidc2/boot.ini @@ -0,0 +1,176 @@ +ODROIDC2-UBOOT-CONFIG + +######################################################################## +# Changes made to this are overwritten every time there's a new upgrade +# To make your changes permanent change it on +# boot.ini.default +# After changing it on boot.ini.default run the bootini command to +# rewrite this file with your personal permanent settings. +# Documentation: http://odroid.com/dokuwiki/doku.php?id=en:c2_persistent_bootini +######################################################################## + +# Possible screen resolutions +# Uncomment only a single Line! The line with setenv written. +# At least one mode must be selected. + +# Custom modeline! +# To use custom modeline you need to disable all the below resolutions +# and setup your own! +# For more information check our wiki: +# http://odroid.com/dokuwiki/doku.php?id=en:c2_hdmi_autosetting +# Example below: +# setenv m "custombuilt" +# setenv modeline "1920,1200,154000,74040,60,1920,1968,2000,2080,1200,1202,1208,1235,1,0,1" + +# 480 Lines (720x480) +# setenv m "480i60hz" # Interlaced 60Hz +# setenv m "480i_rpt" # Interlaced for Rear Projection Televisions 60Hz +# setenv m "480p60hz" # 480 Progressive 60Hz +# setenv m "480p_rpt" # 480 Progressive for Rear Projection Televisions 60Hz + +# 576 Lines (720x576) +# setenv m "576i50hz" # Interlaced 50Hz +# setenv m "576i_rpt" # Interlaced for Rear Projection Televisions 50Hz +# setenv m "576p50hz" # Progressive 50Hz +# setenv m "576p_rpt" # Progressive for Rear Projection Televisions 50Hz + +# 720 Lines (1280x720) +# setenv m "720p50hz" # 50Hz +# setenv m "720p60hz" # 60Hz + +# 1080 Lines (1920x1080) +# setenv m "1080i60hz" # Interlaced 60Hz +setenv m "1080p60hz" # Progressive 60Hz +# setenv m "1080i50hz" # Interlaced 50Hz +# setenv m "1080p50hz" # Progressive 50Hz +# setenv m "1080p24hz" # Progressive 24Hz + +# 4K (3840x2160) +# setenv m "2160p30hz" # Progressive 30Hz +# setenv m "2160p25hz" # Progressive 25Hz +# setenv m "2160p24hz" # Progressive 24Hz +# setenv m "smpte24hz" # Progressive 24Hz SMPTE +# setenv m "2160p50hz" # Progressive 50Hz +# setenv m "2160p60hz" # Progressive 60Hz +# setenv m "2160p50hz420" # Progressive 50Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) +# setenv m "2160p60hz420" # Progressive 60Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it) + +### VESA modes ### +# setenv m "640x480p60hz" +# setenv m "800x480p60hz" +# setenv m "480x800p60hz" +# setenv m "800x600p60hz" +# setenv m "1024x600p60hz" +# setenv m "1024x768p60hz" +# setenv m "1280x800p60hz" +# setenv m "1280x1024p60hz" +# setenv m "1360x768p60hz" +# setenv m "1440x900p60hz" +# setenv m "1600x900p60hz" +# setenv m "1680x1050p60hz" +# setenv m "1600x1200p60hz" +# setenv m "1920x1200p60hz" +# setenv m "2560x1080p60hz" +# setenv m "2560x1440p60hz" +# setenv m "2560x1600p60hz" +# setenv m "3440x1440p60hz" + +# HDMI BPP Mode +setenv m_bpp "32" +# setenv m_bpp "24" +# setenv m_bpp "16" + +# HDMI DVI/VGA modes +# By default its set to HDMI, if needed change below. +# Uncomment only a single Line. +# setenv vout "dvi" +# setenv vout "vga" + +# HDMI HotPlug Detection control +# Allows you to force HDMI thinking that the cable is connected. +# true = HDMI will believe that cable is always connected +# false = will let board/monitor negotiate the connection status +setenv hpd "true" +# setenv hpd "false" + +# Monitor output +# Controls if HDMI PHY should output anything to the monitor +setenv monitor_onoff "false" # true or false + +# Server Mode (aka. No Graphics) +# Setting nographics to 1 will disable all video subsystem +# This mode is ideal of server type usage. (Saves ~300Mb of RAM) +setenv nographics "0" + +# Meson Timer +# 1 - Meson Timer +# 0 - Arch Timer +# Using meson_timer improves the video playback however it breaks KVM (virtualization). +# Using arch timer allows KVM/Virtualization to work however you'll experience poor video +setenv mesontimer "1" + +# UHS (Ultra High Speed) MicroSD mode enable/disable +setenv disableuhs "false" + +# MicroSD Card Detection enable/disable +# Force the MMC controlled to believe that a card is connected. +setenv mmc_removable "true" + +# USB Multi WebCam tweak +# Only enable this if you use it. +setenv usbmulticam "false" + +# Default Console Device Setting +setenv condev "console=ttyS0,115200n8 console=tty0" # on both + +# CPU Frequency / Cores control +########################################### +### WARNING!!! WARNING!!! WARNING!!! +# Before changing anything here please read the wiki entry: +# http://odroid.com/dokuwiki/doku.php?id=en:c2_set_cpu_freq +# +# MAX CPU's +# setenv maxcpus "1" +# setenv maxcpus "2" +# setenv maxcpus "3" +setenv maxcpus "4" + +# MAX Frequency +# setenv max_freq "2016" # 2.016GHz +# setenv max_freq "1944" # 1.944GHz +# setenv max_freq "1944" # 1.944GHz +# setenv max_freq "1920" # 1.920GHz +# setenv max_freq "1896" # 1.896GHz +# setenv max_freq "1752" # 1.752GHz +# setenv max_freq "1680" # 1.680GHz +# setenv max_freq "1656" # 1.656GHz +setenv max_freq "1536" # 1.536GHz + + + +########################################### + +# Boot Arguments +if test "${m}" = "custombuilt"; then setenv cmode "modeline=${modeline}"; fi + +setenv bootargs "root=/dev/mmcblk0p2 rootwait ro ${condev} no_console_suspend hdmimode=${m} ${cmode} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=${hpd} max_freq=${max_freq} maxcpus=${maxcpus} monitor_onoff=${monitor_onoff} disableuhs=${disableuhs} mmc_removable=${mmc_removable} usbmulticam=${usbmulticam}" + +# Booting + +setenv loadaddr "0x11000000" +setenv dtb_loadaddr "0x1000000" +setenv initrd_loadaddr "0x13000000" + +fatload mmc 0:1 ${loadaddr} Image +fatload mmc 0:1 ${dtb_loadaddr} meson64_odroidc2.dtb +fdt addr ${dtb_loadaddr} + +if test "${mesontimer}" = "0"; then fdt rm /meson_timer; fdt rm /cpus/cpu@0/timer; fdt rm /cpus/cpu@1/timer; fdt rm /cpus/cpu@2/timer; fdt rm /cpus/cpu@3/timer; fi +if test "${mesontimer}" = "1"; then fdt rm /timer; fi + +if test "${nographics}" = "1"; then fdt rm /reserved-memory; fdt rm /aocec; fi +if test "${nographics}" = "1"; then fdt rm /meson-fb; fdt rm /amhdmitx; fdt rm /picdec; fdt rm /ppmgr; fi +if test "${nographics}" = "1"; then fdt rm /meson-vout; fdt rm /mesonstream; fdt rm /meson-fb; fi +if test "${nographics}" = "1"; then fdt rm /deinterlace; fdt rm /codec_mm; fi + +booti ${loadaddr} - ${dtb_loadaddr} diff --git a/buildroot/board/hardkernel/odroidc2/genimage.cfg b/buildroot/board/hardkernel/odroidc2/genimage.cfg new file mode 100644 index 0000000..15f97d4 --- /dev/null +++ b/buildroot/board/hardkernel/odroidc2/genimage.cfg @@ -0,0 +1,27 @@ +image boot.vfat { + vfat { + files = { + "boot.ini", + "Image", + "meson64_odroidc2.dtb" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition vfat { + partition-type = 0xC + image = "boot.vfat" + offset = 1048576 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/hardkernel/odroidc2/post-image.sh b/buildroot/board/hardkernel/odroidc2/post-image.sh new file mode 100755 index 0000000..aaf12c1 --- /dev/null +++ b/buildroot/board/hardkernel/odroidc2/post-image.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +cp ${BOARD_DIR}/boot.ini ${BINARIES_DIR}/ + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +dd if=${BINARIES_DIR}/u-boot.bin of=${BINARIES_DIR}/sdcard.img bs=1 count=442 conv=sync,notrunc +dd if=${BINARIES_DIR}/u-boot.bin of=${BINARIES_DIR}/sdcard.img bs=512 skip=1 seek=1 conv=fsync,notrunc diff --git a/buildroot/board/hardkernel/odroidc2/readme.txt b/buildroot/board/hardkernel/odroidc2/readme.txt new file mode 100644 index 0000000..b44aa67 --- /dev/null +++ b/buildroot/board/hardkernel/odroidc2/readme.txt @@ -0,0 +1,53 @@ +ODROID-C2 + +Intro +===== +To be able to use ODROID-C2 board with the images generated by +Buildroot, you have to prepare the SDCard or eMMC. + +How to build it +=============== + + $ make odroidc2_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- Image + +-- boot.ini [1] + +-- boot.vfat + +-- meson64_odroidc2.dtb + +-- rootfs.ext2 + +-- rootfs.ext4 + +-- rootfs.tar + +-- sdcard.img + `-- u-boot.bin + +[1] This is the ODROID-C2 configuration file used in u-boot. + +How to write the SD card or eMMC +================================ + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card or eMMC with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your ODROID-C2, and power it up. Your new system +should come up now. diff --git a/buildroot/board/intel/galileo/genimage.cfg b/buildroot/board/intel/galileo/genimage.cfg new file mode 100644 index 0000000..31add21 --- /dev/null +++ b/buildroot/board/intel/galileo/genimage.cfg @@ -0,0 +1,31 @@ +# Create an image of the efi partition +image efi-part.vfat { + vfat { + file startup.nsh { + image = "efi-part/startup.nsh" + } + file EFI { + image = "efi-part/EFI" + } + } + size=512K +} + +# Create the sdcard image, pulling in +# * the image created by buildroot +# * the efi-partition created above +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + image = "efi-part.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 512M + } +} diff --git a/buildroot/board/intel/galileo/grub.cfg b/buildroot/board/intel/galileo/grub.cfg new file mode 100644 index 0000000..dde2f76 --- /dev/null +++ b/buildroot/board/intel/galileo/grub.cfg @@ -0,0 +1,11 @@ +set default="0" +set timeout="0" + +menuentry "Buildroot" { + # Grub2 supports ext4, load the kernel from the Linux rootfs partition + # Set root tells grub to search the 2nd partition for the bzImage + set root=(hd0,msdos2) + + # Set Linux to boot from the 2nd partition, SD/MMC support is baked into the kernel + linux /boot/bzImage root=/dev/mmcblk0p2 rootwait console=ttyS1,115200n8 earlycon=uart8250,mmio32,0x9000b000,115200n8 reboot=efi,warm apic=debug rw +} diff --git a/buildroot/board/intel/galileo/linux-3.14.config b/buildroot/board/intel/galileo/linux-3.14.config new file mode 100644 index 0000000..e7aa9cf --- /dev/null +++ b/buildroot/board/intel/galileo/linux-3.14.config @@ -0,0 +1,308 @@ +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_FHANDLE=y +CONFIG_KERNEL_LZMA=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_CGROUPS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_CGROUP_SCHED=y +CONFIG_NAMESPACES=y +CONFIG_RELAY=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_SYSCTL_SYSCALL=y +# CONFIG_PCSPKR_PLATFORM is not set +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_JUMP_LABEL=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_LBDAF=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_ZONE_DMA is not set +CONFIG_X86_INTEL_QUARK=y +CONFIG_M586TSC=y +CONFIG_X86_GENERIC=y +CONFIG_HPET_TIMER=y +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_X86_UP_IOAPIC=y +# CONFIG_X86_MCE_AMD is not set +# CONFIG_X86_16BIT is not set +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_MICROCODE=y +CONFIG_X86_MSR=y +CONFIG_X86_CPUID=y +CONFIG_HIGHMEM64G=y +# CONFIG_COMPACTION is not set +# CONFIG_MTRR is not set +# CONFIG_ARCH_RANDOM is not set +CONFIG_EFI=y +CONFIG_EFI_STUB=y +CONFIG_EFI_CAPSULE=m +CONFIG_HZ_100=y +CONFIG_KEXEC=y +CONFIG_PHYSICAL_START=0x400000 +CONFIG_PHYSICAL_ALIGN=0x1000000 +# CONFIG_COMPAT_VDSO is not set +CONFIG_PM_RUNTIME=y +CONFIG_PM_DEBUG=y +CONFIG_PM_TRACE_RTC=y +CONFIG_ACPI_PROCFS=y +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_EC_DEBUGFS=y +# CONFIG_ACPI_BATTERY is not set +# CONFIG_ACPI_FAN is not set +CONFIG_ACPI_DEBUG=y +CONFIG_ACPI_PCI_SLOT=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_MSI=y +CONFIG_PCI_DEBUG=y +CONFIG_PCI_IOAPIC=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_SYN_COOKIES=y +# CONFIG_IPV6_SIT is not set +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_CAN=m +# CONFIG_CAN_GW is not set +CONFIG_CAN_J1939=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_SLCAN=m +# CONFIG_CAN_DEV is not set +CONFIG_BT=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m +CONFIG_BT_HCIBTUSB=m +CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_MAC80211_LEDS=y +CONFIG_RFKILL=m +CONFIG_RFKILL_INPUT=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_FW_LOADER_USER_HELPER is not set +CONFIG_DEBUG_DEVRES=y +CONFIG_MTD=y +CONFIG_MTD_BLOCK=m +# CONFIG_PNP_DEBUG_MESSAGES is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=2 +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=81920 +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_93CX6=m +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_NETDEVICES=y +CONFIG_TUN=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EXAR is not set +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_I825XX is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_PLATFORM is not set +CONFIG_STMMAC_PCI=m +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_PHYLIB=y +CONFIG_PPP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_ASYNC=m +# CONFIG_RTL_CARDS is not set +# CONFIG_INPUT_MOUSEDEV is not set +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_LEGACY_PTY_COUNT=32 +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_PNP is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=8 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_SPI=m +# CONFIG_HW_RANDOM is not set +CONFIG_HPET=y +# CONFIG_HPET_MMAP is not set +CONFIG_I2C=y +CONFIG_SPI_DEBUG=y +CONFIG_SPI_GPIO=y +CONFIG_SPI_PXA2XX=y +CONFIG_PTP_1588_CLOCK=y +CONFIG_GPIO_SCH=y +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_PCF857X=y +CONFIG_HWMON=m +CONFIG_SENSORS_LM75=m +# CONFIG_X86_PKG_TEMP_THERMAL is not set +CONFIG_MFD_INTEL_QUARK_HSUART_DMA=y +CONFIG_CY8C9540A=m +CONFIG_MFD_PCA9685=m +CONFIG_INTEL_QRK_GIP=m +CONFIG_INTEL_QRK_GIP_TEST=m +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +# CONFIG_USB_GSPCA is not set +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +# CONFIG_VGA_ARB is not set +# CONFIG_VGA_CONSOLE is not set +CONFIG_SOUND=m +CONFIG_SND=m +CONFIG_SND_USB_AUDIO=m +CONFIG_USB=m +# CONFIG_USB_DEFAULT_PERSIST is not set +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_UHCI_HCD=m +CONFIG_USB_ACM=m +CONFIG_USB_STORAGE=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_GADGET=m +CONFIG_USB_EG20T=m +CONFIG_USB_ZERO=m +CONFIG_USB_ETH=m +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=y +CONFIG_USB_G_ACM_MS=m +CONFIG_MMC=y +CONFIG_MMC_UNSAFE_RESUME=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=m +CONFIG_RTC_CLASS=y +# CONFIG_RTC_SYSTOHC is not set +CONFIG_DMADEVICES=y +CONFIG_DW_DMAC=y +CONFIG_UIO=y +CONFIG_STAGING=y +CONFIG_INTEL_QRK_THERMAL=y +CONFIG_INTEL_QRK_AUDIO_CTRL=m +CONFIG_INTEL_QRK_J1708=m +CONFIG_INTEL_QRK_ESRAM=y +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_IIO=y +CONFIG_IIO_BUFFER_CB=y +CONFIG_IIO_LIS331DLH_INTEL_QRK=y +CONFIG_IIO_ST_ACCEL_3AXIS=y +CONFIG_AD7298=m +CONFIG_ADC1x8S102=m +CONFIG_IIO_SYSFS_TRIGGER=m +CONFIG_IIO_HRTIMER_TRIGGER=m +CONFIG_PWM=y +CONFIG_DMI_SYSFS=y +CONFIG_EFI_VARS=m +# CONFIG_EFI_RUNTIME_MAP is not set +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=y +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS=y +CONFIG_VFAT_FS=y +CONFIG_PROC_KCORE=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_PRINTK_TIME=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_FRAME_WARN=2048 +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_HEADERS_CHECK=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_DEBUG_STACKOVERFLOW=y +CONFIG_TIMER_STATS=y +CONFIG_LATENCYTOP=y +# CONFIG_FTRACE is not set +CONFIG_X86_PTDUMP=y +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_DEBUG_SET_MODULE_RONX=y +# CONFIG_DOUBLEFAULT is not set +CONFIG_OPTIMIZE_INLINING=y +CONFIG_KEYS=y +CONFIG_KEYS_DEBUG_PROC_KEYS=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_VIRTUALIZATION is not set +CONFIG_CRC_T10DIF=y diff --git a/buildroot/board/intel/galileo/post-build.sh b/buildroot/board/intel/galileo/post-build.sh new file mode 100755 index 0000000..2b34cb4 --- /dev/null +++ b/buildroot/board/intel/galileo/post-build.sh @@ -0,0 +1,2 @@ +#!/bin/sh -e +cp board/intel/galileo/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg diff --git a/buildroot/board/intel/galileo/post-image.sh b/buildroot/board/intel/galileo/post-image.sh new file mode 100755 index 0000000..f9aef0b --- /dev/null +++ b/buildroot/board/intel/galileo/post-image.sh @@ -0,0 +1,13 @@ +#!/bin/sh -e + +GENIMAGE_CFG="board/intel/galileo/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/intel/galileo/readme.txt b/buildroot/board/intel/galileo/readme.txt new file mode 100644 index 0000000..7a3abd4 --- /dev/null +++ b/buildroot/board/intel/galileo/readme.txt @@ -0,0 +1,52 @@ + +Intel Galileo Gen 1/2 + +Intro +============ + +These instructions apply to both the Intel Galileo Gen 1/2 development boards +based on the Intel Quark X1000. + +How to build +============ + +Apply the defconfig for the Intel Galileo Gen 1/2 + + $ make galileo_defconfig + +Add any additional packages required and build. + + $ make + +The build process will create a SD card image and place it in output/images. + + $ ls -lh output/images/sdcard.img + -rw-r--r--. 1 foo foo 11M Nov 17 16:19 output/images/sdcard.img + +Write the image to an mSD card, insert into the Galileo and power on. + + $ dd if=output/images/sdcard.img of=/dev/mmcblk0; sync + +Accessing the console +===================== + +During power-on the console will become available on the Galileo's ttyS1. This +may be accessed as follows. + + * Galileo Gen 1 + + http://clayskits.com/products/galileo-gen-1-serial-cable + + A USB to RS-232 to 3.5mm Jack cable is required. Connect to the 3.5mm + Jack next to the Ethernet Header. + + * Galileo Gen 2 + + http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm + + A FTDI TTL-232R-3V3 cable may be used to connect to the FTDI header + next to the Ethernet connector on the Galileo Gen 2. + +The console should now be visible at 115200 baud. + + $ picocom -b 115200 /dev/ttyUSB0 diff --git a/buildroot/board/intel/galileo/rootfs_overlay/etc/init.d/S09modload b/buildroot/board/intel/galileo/rootfs_overlay/etc/init.d/S09modload new file mode 100755 index 0000000..359d607 --- /dev/null +++ b/buildroot/board/intel/galileo/rootfs_overlay/etc/init.d/S09modload @@ -0,0 +1,33 @@ +#!/bin/sh +# + +load_drivers() +{ + while IFS= read -r line; do + modprobe $line + done < "/etc/modules-load.galileo/$1.conf" +} + +do_board() +{ + board=$(cat /sys/devices/virtual/dmi/id/board_name) + case "$board" in + *"GalileoGen2" ) + load_drivers "galileo_gen2" ;; + *"Galileo" ) + load_drivers "galileo" ;; + esac +} + +case "$1" in + start) + do_board + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo.conf b/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo.conf new file mode 100644 index 0000000..b658261 --- /dev/null +++ b/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo.conf @@ -0,0 +1,3 @@ +intel_qrk_gip +cy8c9540a +ad7298 diff --git a/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo_gen2.conf b/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo_gen2.conf new file mode 100644 index 0000000..4f80a33 --- /dev/null +++ b/buildroot/board/intel/galileo/rootfs_overlay/etc/modules-load.galileo/galileo_gen2.conf @@ -0,0 +1,4 @@ +intel_qrk_gip +gpio-pca953x +pca9685 +adc1x8s102 diff --git a/buildroot/board/lego/ev3/busybox.fragment b/buildroot/board/lego/ev3/busybox.fragment new file mode 100644 index 0000000..901274d --- /dev/null +++ b/buildroot/board/lego/ev3/busybox.fragment @@ -0,0 +1,3 @@ +CONFIG_BEEP=y +CONFIG_FEATURE_BEEP_FREQ=440 +CONFIG_FEATURE_BEEP_LENGTH_MS=250 diff --git a/buildroot/board/lego/ev3/genimage.cfg b/buildroot/board/lego/ev3/genimage.cfg new file mode 100644 index 0000000..3da3048 --- /dev/null +++ b/buildroot/board/lego/ev3/genimage.cfg @@ -0,0 +1,57 @@ +# LEGO MINDSTORMS EV3 can boot from a 16MB flash or from a microSD card. +# The U-Boot bootloader from the flash is always used, even when booting +# from a microSD card. + +# The Flash image + +flash nor-16M-256 { + pebsize = 4096 + numpebs = 4096 + minimum-io-unit-size = 256 +} + +image flash.bin { + flash { + } + flashtype = "nor-16M-256" + partition uboot { + image = "u-boot.bin" + size = 320K + } + partition uimage { + image = "uImage.da850-lego-ev3" + size = 4M + offset = 0x50000 + } + partition rootfs { + image = "rootfs.squashfs" + size = 10M + offset = 0x450000 + } +} + +# The SD card image + +image boot.vfat { + vfat { + file uImage { + image = "uImage.da850-lego-ev3" + } + } + size = 16M +} + +image sdcard.img { + hdimage { + } + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 4M + } + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/buildroot/board/lego/ev3/linux.fragment b/buildroot/board/lego/ev3/linux.fragment new file mode 100644 index 0000000..30dea57 --- /dev/null +++ b/buildroot/board/lego/ev3/linux.fragment @@ -0,0 +1,62 @@ +CONFIG_ARCH_DAVINCI_DM644x=n +CONFIG_ARCH_DAVINCI_DM355=n +CONFIG_ARCH_DAVINCI_DM646x=n +CONFIG_ARCH_DAVINCI_DA830=n +CONFIG_ARCH_DAVINCI_DM365=n +CONFIG_MACH_SFFSDR=n +CONFIG_MACH_NEUROS_OSD2=n +CONFIG_MACH_DM355_LEOPARD=n +CONFIG_MACH_MITYOMAPL138=n +CONFIG_MACH_OMAPL138_HAWKBOARD=n +CONFIG_MACH_DAVINCI_DA850_EVM=n +CONFIG_ATA=n +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_M25P80=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_UBI=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=1 +CONFIG_BLK_DEV_RAM_SIZE=32768 +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_PWM_BEEPER=y +CONFIG_SPI_DAVINCI=y +CONFIG_PINCTRL_DA850_PUPD=y +CONFIG_V4L_PLATFORM_DRIVERS=n +CONFIG_SOUND=n +CONFIG_SND=n +CONFIG_SND_SOC=n +CONFIG_SND_EDMA_SOC=n +CONFIG_SND_DAVINCI_SOC_MCASP=n +CONFIG_SND_SOC_TLV320AIC3X=n +CONFIG_SND_SIMPLE_CARD=n +CONFIG_DAVINCI_WATCHDOG=y +CONFIG_USB=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_DAVINCI=y +CONFIG_USB_MUSB_HDRC=y +CONFIG_USB_MUSB_GADGET=y +CONFIG_USB_MUSB_DA8XX=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_GADGET=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGER_MTD=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +CONFIG_RTC_DRV_OMAP=y +CONFIG_IIO=y +CONFIG_TI_ADS7950=y +CONFIG_PWM_TIECAP=y +CONFIG_PWM_TIEHRPWM=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_DRM=y +CONFIG_DRM_TILCDC=n +CONFIG_DRM_DUMB_VGA_DAC=n +CONFIG_DRM_TINYDRM=y +CONFIG_TINYDRM_ST7586=y +CONFIG_FB_DA8XX=n diff --git a/buildroot/board/lego/ev3/patches/uboot/configs-legoev3-increase-flash-image-sizes.patch b/buildroot/board/lego/ev3/patches/uboot/configs-legoev3-increase-flash-image-sizes.patch new file mode 100644 index 0000000..ee0ce61 --- /dev/null +++ b/buildroot/board/lego/ev3/patches/uboot/configs-legoev3-increase-flash-image-sizes.patch @@ -0,0 +1,31 @@ +From cdd8d11858fa34f6e813fae46b5556e9fb3570dc Mon Sep 17 00:00:00 2001 +From: David Lechner +Date: Sun, 19 Nov 2017 19:54:32 -0600 +Subject: [PATCH] configs: legoev3: increase flash image sizes + +This increases the kernel image to 4M and the rootfs image to 10M. + +It is getting hard to get a kernel image to fit in 3M and the rootfs image +size now matches the filesyssize variable. + +Signed-off-by: David Lechner +--- + include/configs/legoev3.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/configs/legoev3.h b/include/configs/legoev3.h +index 79fa3c4..2eeaf85 100644 +--- a/include/configs/legoev3.h ++++ b/include/configs/legoev3.h +@@ -204,7 +204,7 @@ + "mmcargs=setenv bootargs mem=${memsize} console=${console} root=/dev/mmcblk0p2 rw rootwait lpj=747520\0" \ + "mmcboot=bootm ${loadaddr}\0" \ + "flashargs=setenv bootargs mem=${memsize} initrd=${filesysaddr},${filesyssize} root=/dev/ram0 rw rootfstype=squashfs console=${console} lpj=747520\0" \ +- "flashboot=sf probe 0; sf read ${loadaddr} 0x50000 0x300000; sf read ${filesysaddr} 0x350000 0x960000; bootm ${loadaddr}\0" \ ++ "flashboot=sf probe 0; sf read ${loadaddr} 0x50000 0x400000; sf read ${filesysaddr} 0x450000 0xA00000; bootm ${loadaddr}\0" \ + "loadimage=fatload mmc 0 ${loadaddr} uImage\0" \ + "loadbootscr=fatload mmc 0 ${bootscraddr} boot.scr\0" \ + "bootscript=source ${bootscraddr}\0" \ +-- +2.7.4 + diff --git a/buildroot/board/lego/ev3/post-image.sh b/buildroot/board/lego/ev3/post-image.sh new file mode 100755 index 0000000..81626dc --- /dev/null +++ b/buildroot/board/lego/ev3/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/lego/ev3/readme.txt b/buildroot/board/lego/ev3/readme.txt new file mode 100644 index 0000000..8df91ac --- /dev/null +++ b/buildroot/board/lego/ev3/readme.txt @@ -0,0 +1,82 @@ +Lego Mindstorms EV3 + +Intro +===== + +This is the buildroot basic board support for the Lego Mindstorms EV3 +programmable brick. + +The Lego Mindstorms EV3 brick comprises a Texas Instruments AM1808 SoC, with +an ARM 926EJ-S main processor running at 300 MHz. +See: +- https://en.wikipedia.org/wiki/Lego_Mindstorms_EV3 +- http://www.lego.com/en-us/mindstorms/products/ev3/31313-mindstorms-ev3/ +- http://www.ti.com/product/am1808 + +How it works +============ + +Boot process : +-------------- + +The EV3 boots from an EEPROM. This loads whatever is on the built-in 16MB flash +(usually U-Boot) and runs it. The U-Boot from the official LEGO firmware and +mainline U-Boot will attempt to boot a Linux kernel from the external µSD card. +It will try to load a uImage (and optional boot.scr) from the first µSD card +partition, which must be formatted with a FAT filesystem. If no µSD is found or +it does not contain a uImage file, then the EV3 will boot the uImage from the +built-in 16MB flash. + +How to build it +=============== + +Configure Buildroot +------------------- + +The lego_ev3_defconfig configuration provides basic support to boot on the Lego +Mindstorms EV3 programmable brick: + + $ make lego_ev3_defconfig + +Build everything +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + + $ make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + ├── boot.vfat + ├── flash.bin + ├── rootfs.ext2 + ├── rootfs.ext3 -> rootfs.ext2 + ├── rootfs.squashfs + ├── sdcard.img + ├── u-boot.bin + ├── uImage -> uImage.da850-lego-ev3 + └── uImage.da850-lego-ev3 + +Installation +============ + +You can use either flash.bin or the sdcard.img. To load flash.bin, use the +official Lego Mindstorms EV3 programming software firmware update tool to load +the image. To use sdcard.img, use a disk writing tool such as Etcher or dd to +write the image to the µSD card. + +Finish +====== + +To have a serial console, you will need a proper USB to Lego serial port +adapter plugged into the EV3 sensors port 1. +See: +- http://botbench.com/blog/2013/08/15/ev3-creating-console-cable/ +- http://botbench.com/blog/2013/08/05/mindsensors-ev3-usb-console-adapter/ + +The serial port config to use is 115200/8-N-1. diff --git a/buildroot/board/lemaker/bananapro/boot.cmd b/buildroot/board/lemaker/bananapro/boot.cmd new file mode 100644 index 0000000..439f5b1 --- /dev/null +++ b/buildroot/board/lemaker/bananapro/boot.cmd @@ -0,0 +1,5 @@ +setenv fdt_high ffffffff +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun7i-a20-bananapro.dtb +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/lemaker/bananapro/genimage.cfg b/buildroot/board/lemaker/bananapro/genimage.cfg new file mode 100644 index 0000000..190a4b1 --- /dev/null +++ b/buildroot/board/lemaker/bananapro/genimage.cfg @@ -0,0 +1,37 @@ +# Minimal SD card image for the Banana Pro +# Based in the Orange Pi genimage.cfg + +image boot.vfat { + vfat { + files = { + "zImage", + "sun7i-a20-bananapro.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/lemaker/bananapro/linux-wifi.fragment b/buildroot/board/lemaker/bananapro/linux-wifi.fragment new file mode 100644 index 0000000..8e4bd5c --- /dev/null +++ b/buildroot/board/lemaker/bananapro/linux-wifi.fragment @@ -0,0 +1,23 @@ +# Networking support +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_CFG80211_WEXT=y + +# Network device support +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_BRCMFMAC=m +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set +# CONFIG_WLAN_VENDOR_MEDIATEK is not set +# CONFIG_WLAN_VENDOR_RALINK is not set +# CONFIG_WLAN_VENDOR_REALTEK is not set +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set diff --git a/buildroot/board/lemaker/bananapro/post-build.sh b/buildroot/board/lemaker/bananapro/post-build.sh new file mode 100755 index 0000000..a335310 --- /dev/null +++ b/buildroot/board/lemaker/bananapro/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +# Remove all but the brcmfmac43362 firmware files +find $TARGET_DIR/lib/firmware/brcm -type f -not -name "brcmfmac43362*" -delete + +BOARD_DIR="$(dirname $0)" +MKIMAGE=$HOST_DIR/bin/mkimage +BOOT_CMD=$BOARD_DIR/boot.cmd +BOOT_CMD_H=$BINARIES_DIR/boot.scr + +# U-Boot script +$MKIMAGE -C none -A arm -T script -d $BOOT_CMD $BOOT_CMD_H diff --git a/buildroot/board/lemaker/bananapro/post-image.sh b/buildroot/board/lemaker/bananapro/post-image.sh new file mode 100755 index 0000000..9cca1b1 --- /dev/null +++ b/buildroot/board/lemaker/bananapro/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/buildroot/board/lemaker/bananapro/readme.txt b/buildroot/board/lemaker/bananapro/readme.txt new file mode 100644 index 0000000..27b922e --- /dev/null +++ b/buildroot/board/lemaker/bananapro/readme.txt @@ -0,0 +1,62 @@ +Banana Pro + +Intro +===== + +This default configuration will allow you to start experimenting with the +Buildroot environment for the Banana Pro. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make bananapro_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ dd if=output/images/sdcard.img of=/dev/sdX + +Notes: + - replace 'sdX' with the actual device with your micro SD card + - you may need to be root to do that (use 'sudo') + +Insert the micro SD card in your Banana Pro and power it up. The console +is on the debug TTL UART, 115200 8N1. + +Ethernet +========== + + # udhcpc -i eth0 + +Wifi +========== + + # wpa_passphrase YOUR_SSID >> /etc/wpa_supplicant.conf + (enter the wifi password and press enter) + # wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B + # udhcpc -i wlan0 + +Note: + - replace 'YOUR_SSID' with the actual SSID from your access point + +Audio +========== + +Connect a headphone to the 3.5mm jack (TRRS). Note, that the Banana Pro +has an on-board microphone, too. + + # amixer cset name='Power Amplifier DAC Playback Switch' on + # amixer cset name='Power Amplifier Mute Switch' on + # amixer cset name='Power Amplifier Volume' 42 diff --git a/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.txt b/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.txt new file mode 100644 index 0000000..14a554f --- /dev/null +++ b/buildroot/board/lemaker/bananapro/rootfs_overlay/lib/firmware/brcm/brcmfmac43362-sdio.txt @@ -0,0 +1,56 @@ +#AP6210_NVRAM_V1.2_03192013 +manfid=0x2d0 +prodid=0x492 +vendid=0x14e4 +devid=0x4343 +boardtype=0x0598 + +# Board Revision is P307, same nvram file can be used for P304, P305, P306 and P307 as the tssi pa params used are same +#Please force the automatic RX PER data to the respective board directory if not using P307 board, for e.g. for P305 boards force the data into the following directory /projects/BCM43362/a1_labdata/boardtests/results/sdg_rev0305 +boardrev=0x1307 +boardnum=777 +xtalfreq=26000 +boardflags=0x80201 +boardflags2=0x80 +sromrev=3 +wl0id=0x431b +macaddr=00:90:4c:07:71:12 +aa2g=1 +ag0=2 +maxp2ga0=74 +cck2gpo=0x2222 +ofdm2gpo=0x44444444 +mcs2gpo0=0x6666 +mcs2gpo1=0x6666 +pa0maxpwr=56 + +#P207 PA params +#pa0b0=5447 +#pa0b1=-658 +#pa0b2=-175 + +#Same PA params for P304,P305, P306, P307 + +pa0b0=5447 +pa0b1=-607 +pa0b2=-160 +pa0itssit=62 +pa1itssit=62 + + +cckPwrOffset=5 +ccode=0 +rssismf2g=0xa +rssismc2g=0x3 +rssisav2g=0x7 +triso2g=0 +noise_cal_enable_2g=0 +noise_cal_po_2g=0 +swctrlmap_2g=0x04040404,0x02020202,0x02020202,0x010101,0x1ff +temp_add=29767 +temp_mult=425 + +btc_flags=0x6 +btc_params0=5000 +btc_params1=1000 +btc_params6=63 diff --git a/buildroot/board/linksprite/pcduino/boot.cmd b/buildroot/board/linksprite/pcduino/boot.cmd new file mode 100644 index 0000000..0db8363 --- /dev/null +++ b/buildroot/board/linksprite/pcduino/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 console=tty1 earlyprintk root=/dev/mmcblk0p2 rootwait panic=10 ${extra} + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun4i-a10-pcduino.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/linksprite/pcduino/genimage.cfg b/buildroot/board/linksprite/pcduino/genimage.cfg new file mode 100644 index 0000000..9cbc383 --- /dev/null +++ b/buildroot/board/linksprite/pcduino/genimage.cfg @@ -0,0 +1,42 @@ +# +# Minimal SD card image for the pcDuino +# + +image boot.vfat { + vfat { + files = { + "zImage", + "sun4i-a10-pcduino.dtb", + "boot.scr" + } + } + size = 16M +} + +# +# Note: u-boot environment is stored between u-boot and boot partitions +# + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 1M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/linksprite/pcduino/linux-extras.config b/buildroot/board/linksprite/pcduino/linux-extras.config new file mode 100644 index 0000000..670f83f --- /dev/null +++ b/buildroot/board/linksprite/pcduino/linux-extras.config @@ -0,0 +1,16 @@ +# spidev +CONFIG_SPI_SPIDEV=y + +# wireless core +CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m + +# wireless drivers +CONFIG_WLAN=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CU=m +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_USB=m +CONFIG_RTLWIFI_DEBUG=y +CONFIG_RTL8192C_COMMON=m diff --git a/buildroot/board/linksprite/pcduino/post-build.sh b/buildroot/board/linksprite/pcduino/post-build.sh new file mode 100755 index 0000000..e1e1877 --- /dev/null +++ b/buildroot/board/linksprite/pcduino/post-build.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# post-build.sh for pcDuino taken from OrangePi post-build.sh +# 2013, Carlo Caione + +BOARD_DIR="$(dirname $0)" +MKIMAGE=$HOST_DIR/bin/mkimage +BOOT_CMD=$BOARD_DIR/boot.cmd +BOOT_CMD_H=$BINARIES_DIR/boot.scr + +# U-Boot script +$MKIMAGE -C none -A arm -T script -d $BOOT_CMD $BOOT_CMD_H diff --git a/buildroot/board/linksprite/pcduino/post-image.sh b/buildroot/board/linksprite/pcduino/post-image.sh new file mode 100755 index 0000000..c82b189 --- /dev/null +++ b/buildroot/board/linksprite/pcduino/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/buildroot/board/linksprite/pcduino/readme.txt b/buildroot/board/linksprite/pcduino/readme.txt new file mode 100644 index 0000000..08f380f --- /dev/null +++ b/buildroot/board/linksprite/pcduino/readme.txt @@ -0,0 +1,42 @@ +pcDuino v1 boards (http://www.linksprite.com/linksprite-pcduino) + +Intro +===== + +This default configuration will allow you to start experimenting +with the buildroot environment for the LinkSprite pcDuino v1 board +including its flavors pcDuino-Lite and pcDuino-Lite-WiFi. With the +current configuration it will bring-up the board and allow access +through the serial console as well as ethernet and wireless +network interfaces. + +How to build it +=============== + +Configure Buildroot: + + $ make linksprite_pcduino_defconfig + +Modify configuration if needed, e.g. add more packages to target: + + $ make menuconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image +called "sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +How to boot new image +===================== + +Insert SD card and reset the board. By default pcDuino board +boots from SD card. diff --git a/buildroot/board/minnowboard/fs-overlay-graphical/etc/X11/Xsession b/buildroot/board/minnowboard/fs-overlay-graphical/etc/X11/Xsession new file mode 100755 index 0000000..d8862f1 --- /dev/null +++ b/buildroot/board/minnowboard/fs-overlay-graphical/etc/X11/Xsession @@ -0,0 +1,7 @@ +# Start a terminal on the top left corner +xterm -geom 80x30+0+0 & + +# OpenGL demo +glmark2 & + +exec /usr/bin/openbox-session diff --git a/buildroot/board/minnowboard/fs-overlay-graphical/etc/asound.conf b/buildroot/board/minnowboard/fs-overlay-graphical/etc/asound.conf new file mode 100644 index 0000000..b75b238 --- /dev/null +++ b/buildroot/board/minnowboard/fs-overlay-graphical/etc/asound.conf @@ -0,0 +1,4 @@ +# Customize ALSA: +# the HDMI PCM is at card=0, device=3 (i.e. hw:0,3) +defaults.pcm.card 0 +defaults.pcm.device 3 diff --git a/buildroot/board/minnowboard/genimage.cfg b/buildroot/board/minnowboard/genimage.cfg new file mode 100644 index 0000000..6cf7874 --- /dev/null +++ b/buildroot/board/minnowboard/genimage.cfg @@ -0,0 +1,34 @@ +# Create an image of the efi partition +image efi-part.vfat { + vfat { + file startup.nsh { + image = "efi-part/startup.nsh" + } + file EFI { + image = "efi-part/EFI" + } + file bzImage { + image = "bzImage" + } + } + size=10M +} + +# Create the sdcard image, pulling in +# * the image created by buildroot +# * the efi-partition created above +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xEF + image = "efi-part.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/minnowboard/grub.cfg b/buildroot/board/minnowboard/grub.cfg new file mode 100644 index 0000000..3d6feb7 --- /dev/null +++ b/buildroot/board/minnowboard/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /bzImage root=/dev/mmcblk2p2 rootwait console=tty0 console=ttyS0,115200 +} diff --git a/buildroot/board/minnowboard/linux.config b/buildroot/board/minnowboard/linux.config new file mode 100644 index 0000000..27077db --- /dev/null +++ b/buildroot/board/minnowboard/linux.config @@ -0,0 +1,60 @@ +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_SMP=y +CONFIG_X86_INTEL_LPSS=y +CONFIG_MATOM=y +CONFIG_EFI=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_ACPI_CPUFREQ=y +CONFIG_INTEL_IDLE=y +CONFIG_IA32_EMULATION=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_SG=y +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_R8169=y +CONFIG_IGB=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DW=y +CONFIG_I2C_I801=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_DESIGNWARE_PCI=y +CONFIG_SPI=y +CONFIG_SPI_DESIGNWARE=y +CONFIG_SPI_PXA2XX=y +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_AGP=y +CONFIG_DRM=y +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_I915=y +CONFIG_SOUND=y +CONFIG_SND=y +# CONFIG_SND_DRIVERS is not set +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_CODEC_HDMI=y +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PCI=y +CONFIG_MMC_SDHCI_ACPI=y +CONFIG_PWM=y +CONFIG_EXT4_FS=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/buildroot/board/minnowboard/post-build.sh b/buildroot/board/minnowboard/post-build.sh new file mode 100755 index 0000000..24b8c05 --- /dev/null +++ b/buildroot/board/minnowboard/post-build.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +cp -v board/minnowboard/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg + +# Add a console on tty1 +if [ -e ${TARGET_DIR}/etc/inittab ]; then + grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \ + sed -i '/GENERIC_SERIAL/a\ +tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console' ${TARGET_DIR}/etc/inittab +fi diff --git a/buildroot/board/minnowboard/post-image.sh b/buildroot/board/minnowboard/post-image.sh new file mode 100755 index 0000000..428baa5 --- /dev/null +++ b/buildroot/board/minnowboard/post-image.sh @@ -0,0 +1,13 @@ +#!/bin/sh -e + +GENIMAGE_CFG="board/minnowboard/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/minnowboard/readme.txt b/buildroot/board/minnowboard/readme.txt new file mode 100644 index 0000000..fdbb81e --- /dev/null +++ b/buildroot/board/minnowboard/readme.txt @@ -0,0 +1,28 @@ +How to get started with the MinnowBoard MAX +=========================================== + +1. Build + + Apply the defconfig: + + $ make minnowboard_max_defconfig + + Add any additional packages required and build: + + $ make + +2. Write the SD card + + The build process will create a SD card image in output/images. + Write the image to an mSD card, insert into the MinnowBoard MAX + and power the board on. + + $ dd if=output/images/sdcard.img of=/dev/mmcblk0; sync + + The system starts two consoles: one on the serial port + and one on HDMI. + +3. Enjoy + +Additional information about this board can be found at +http://www.minnowboard.org/. diff --git a/buildroot/board/nexbox/a95x/boot.txt b/buildroot/board/nexbox/a95x/boot.txt new file mode 100644 index 0000000..f388ba8 --- /dev/null +++ b/buildroot/board/nexbox/a95x/boot.txt @@ -0,0 +1,11 @@ +setenv bootargs console=ttyAML0,115200 earlyprintk root=/dev/mmcblk1p2 rootwait + +fatload mmc 0:1 0x01080000 uImage + +if itest.s "${aml_dt}" == "gxl_p212_2g"; then + fatload mmc 0:1 $dtb_mem_addr meson-gxl-s905x-nexbox-a95x.dtb +else + fatload mmc 0:1 $dtb_mem_addr meson-gxbb-nexbox-a95x.dtb +fi + +bootm 0x1080000 - $dtb_mem_addr diff --git a/buildroot/board/nexbox/a95x/genimage.cfg b/buildroot/board/nexbox/a95x/genimage.cfg new file mode 100644 index 0000000..74e2d3a --- /dev/null +++ b/buildroot/board/nexbox/a95x/genimage.cfg @@ -0,0 +1,28 @@ +image boot.vfat { + vfat { + files = { + "uImage", + "meson-gxbb-nexbox-a95x.dtb", + "meson-gxl-s905x-nexbox-a95x.dtb", + "boot.scr" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/nexbox/a95x/post-build.sh b/buildroot/board/nexbox/a95x/post-build.sh new file mode 100755 index 0000000..f8706f2 --- /dev/null +++ b/buildroot/board/nexbox/a95x/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +MKIMAGE=$HOST_DIR/bin/mkimage + +$MKIMAGE -C none -A arm64 -T script -d $BOARD_DIR/boot.txt $BINARIES_DIR/boot.scr + +# vendor u-boot uses uImage +if [ -e $BINARIES_DIR/Image ]; then + $MKIMAGE -A arm64 -O linux -T kernel -C none -a 0x1080000 -e 0x1080000 \ + -n linux -d $BINARIES_DIR/Image $BINARIES_DIR/uImage +fi diff --git a/buildroot/board/nexbox/a95x/post-image.sh b/buildroot/board/nexbox/a95x/post-image.sh new file mode 100755 index 0000000..359b4c9 --- /dev/null +++ b/buildroot/board/nexbox/a95x/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/nexbox/a95x/readme.txt b/buildroot/board/nexbox/a95x/readme.txt new file mode 100644 index 0000000..e08b4e4 --- /dev/null +++ b/buildroot/board/nexbox/a95x/readme.txt @@ -0,0 +1,48 @@ +Nexbox A95X + +Intro +===== + +Nexbox A95X is a low cost Android STB based around an Amlogic s905(x) SoC +(quad A53), 8/16GB eMMC and 1/2GB RAM. To use this defconfig, wires to the +internal UART solder pads must be added. See the linux-meson page for +details: + +http://linux-meson.com/doku.php?id=nexbox_a95x_s905 + +Both the s905 (gxbb) and s905x (gxl) variant is supported. + +This default configuration will allow you to start experimenting with the +buildroot environment for the A95X. With the current configuration it will +bring-up the board from microSD, and allow access through the serial +console. + +How to build it +=============== + +Configure Buildroot: + + $ make nexbox_a95x_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto a microSD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +How to boot +=========== + +Insert microSD card and connect serial cable. Power board and stop +U-Boot by pressing any key. Boot the system by typing: + +fatload mmc 0:1 0x1070000 boot.scr +autoscr 0x1070000 diff --git a/buildroot/board/olimex/a13_olinuxino/boot.cmd b/buildroot/board/olimex/a13_olinuxino/boot.cmd new file mode 100644 index 0000000..4dd1c7b --- /dev/null +++ b/buildroot/board/olimex/a13_olinuxino/boot.cmd @@ -0,0 +1,7 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +mmc dev 0 +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun5i-a13-olinuxino.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/olimex/a13_olinuxino/genimage.cfg b/buildroot/board/olimex/a13_olinuxino/genimage.cfg new file mode 100644 index 0000000..6f6b0b0 --- /dev/null +++ b/buildroot/board/olimex/a13_olinuxino/genimage.cfg @@ -0,0 +1,34 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun5i-a13-olinuxino.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/olimex/a13_olinuxino/post-build.sh b/buildroot/board/olimex/a13_olinuxino/post-build.sh new file mode 100755 index 0000000..aa2a76b --- /dev/null +++ b/buildroot/board/olimex/a13_olinuxino/post-build.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage + +$MKIMAGE -A arm -O linux -T script -C none \ + -d board/olimex/a13_olinuxino/boot.cmd \ + ${BINARIES_DIR}/boot.scr diff --git a/buildroot/board/olimex/a13_olinuxino/readme.txt b/buildroot/board/olimex/a13_olinuxino/readme.txt new file mode 100644 index 0000000..b64e339 --- /dev/null +++ b/buildroot/board/olimex/a13_olinuxino/readme.txt @@ -0,0 +1,43 @@ +A13-OLinuXino + +Intro +===== + +This default configuration will allow you to start experimenting with +the buildroot environment for the A13-OLinuXino. With the current +configuration it will bring-up the board, and allow access through the +serial console. + +For more details about the A13-OLinuXino: + +https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino/open-source-hardware + +How to build it +=============== + +Configure Buildroot: + + $ make olimex_a13_olinuxino_defconfig + +Compile everything and build the rootfs image: + + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to a micro SD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Notes: + - replace 'sdX' with the actual device with your micro SDcard, + - you may need to be root to do that (use 'sudo'). + +Eject the SD card, insert it in the A13-OLinuXino board, and power it +up. diff --git a/buildroot/board/olimex/a20_olinuxino/boot-mali.cmd b/buildroot/board/olimex/a20_olinuxino/boot-mali.cmd new file mode 100644 index 0000000..9fa5d65 --- /dev/null +++ b/buildroot/board/olimex/a20_olinuxino/boot-mali.cmd @@ -0,0 +1,5 @@ +setenv bootm_boot_mode sec +setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rootwait panic=10 sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_no_mali_mem_reserve sunxi_fb_mem_reserve=16 consoleblank=0 ${extra} +ext4load mmc 0 0x43000000 /boot/script.bin +ext4load mmc 0 0x48000000 /boot/zImage +bootz 0x48000000 diff --git a/buildroot/board/olimex/a20_olinuxino/boot.cmd b/buildroot/board/olimex/a20_olinuxino/boot.cmd new file mode 100644 index 0000000..44d9239 --- /dev/null +++ b/buildroot/board/olimex/a20_olinuxino/boot.cmd @@ -0,0 +1,5 @@ +setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1 rootwait panic=10 ${extra} +ext4load mmc 0 0x49000000 /boot/${fdtfile} +ext4load mmc 0 0x46000000 /boot/zImage +env set fdt_high ffffffff +bootz 0x46000000 - 0x49000000 diff --git a/buildroot/board/olimex/a20_olinuxino/genimage.cfg b/buildroot/board/olimex/a20_olinuxino/genimage.cfg new file mode 100644 index 0000000..fc2f7f8 --- /dev/null +++ b/buildroot/board/olimex/a20_olinuxino/genimage.cfg @@ -0,0 +1,17 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/olimex/a20_olinuxino/post-build.sh b/buildroot/board/olimex/a20_olinuxino/post-build.sh new file mode 100755 index 0000000..7a8a427 --- /dev/null +++ b/buildroot/board/olimex/a20_olinuxino/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +cp $BINARIES_DIR/boot.scr $TARGET_DIR/boot/boot.scr + +if [ -e $BINARIES_DIR/script.bin ]; then + # mali requires a legacy kernel + cp $BINARIES_DIR/script.bin $TARGET_DIR/boot/script.bin +fi diff --git a/buildroot/board/olimex/a20_olinuxino/readme.txt b/buildroot/board/olimex/a20_olinuxino/readme.txt new file mode 100644 index 0000000..070b7a5 --- /dev/null +++ b/buildroot/board/olimex/a20_olinuxino/readme.txt @@ -0,0 +1,76 @@ +A20-OLinuXino-LIME and A20-OLinuXino-MICRO + +Intro +===== + +These are open hardware boards, all based on the Allwinner A20 SoC. + +for more details about the boards see the following pages: + - https://www.olimex.com/Products/OLinuXino/open-source-hardware + - https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-MICRO/ + - https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME/ + - https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXino-LIME2/ + +The following defconfigs are available: + - olimex_a20_olinuxino_micro_defconfig + for the A20-OLinuXino-MICRO board using mainline kernel + - olimex_a20_olinuxino_lime_defconfig + for the A20-OLinuXino-LIME board using mainline kernel + - olimex_a20_olinuxino_lime_mali_defconfig + for the A20-OLinuXino-LIME board using legacy linux-sunxi kernel + - olimex_a20_olinuxino_lime2_defconfig + for the A20-OLinuXino-LIME2 board using mainline kernel + +The legacy linux-sunxi kernels are based on the vendor code drops. +They are only useful when accelerated 3D graphics and multimedia support +is strictly necessary. + +The Mainline Kernel is already a much better choice for a headless server. +And also the mainline kernel works fine even for a basic Linux desktop +system running on top of a simple framebuffer, which may be good enough for +the users who do not need fancy 3D graphics or video playback acceleration. + +(see http://linux-sunxi.org/Linux_Kernel for more details) + +How to build it +=============== + +Configure Buildroot: + + $ make _defconfig + +Compile everything and build the rootfs image: + + $ make + +Result of the build +------------------- + +After building, you should get a tree like this: + + output/images/ + +-- rootfs.ext2 + +-- rootfs.ext4 -> rootfs.ext2 + +-- script.bin (lime_mali) + +-- sdcard.img + +-- sun7i-a20-olinuxino-lime.dtb (lime, mainline) + +-- sun7i-a20-olinuxino-lime2.dtb (lime2, mainline) + +-- sun7i-a20-olinuxino-micro.dtb (micro, mainline) + +-- u-boot.bin + +-- u-boot-sunxi-with-spl.bin + `-- zImage + + +How to write the SD card +======================== + +The sdcard.img file is a complete bootable image ready to be written +on the boot medium. To install it, simply copy the image to a uSD +card: + + # dd if=output/images/sdcard.img of=/dev/sdX + +Where 'sdX' is the device node of the uSD. + +Eject the SD card, insert it in the A20-OLinuXino board, and power it up. + diff --git a/buildroot/board/olimex/a64-olinuxino/boot.cmd b/buildroot/board/olimex/a64-olinuxino/boot.cmd new file mode 100644 index 0000000..28ed6d9 --- /dev/null +++ b/buildroot/board/olimex/a64-olinuxino/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-olinuxino.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/olimex/a64-olinuxino/genimage.cfg b/buildroot/board/olimex/a64-olinuxino/genimage.cfg new file mode 100644 index 0000000..328b68b --- /dev/null +++ b/buildroot/board/olimex/a64-olinuxino/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-olinuxino.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/olimex/a64-olinuxino/readme.txt b/buildroot/board/olimex/a64-olinuxino/readme.txt new file mode 100644 index 0000000..342bdc7 --- /dev/null +++ b/buildroot/board/olimex/a64-olinuxino/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the A64-OLinuXino. With the current configuration +it will bring-up the board, and allow access through the serial console. + +A64-OLinuXino link: +https://www.olimex.com/Products/OLinuXino/A64/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Olimex+A64-Olinuxino + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make olimex_a64_olinuxino_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your A64-OLinuXino and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/olimex/imx233_olinuxino/linux-wifi.fragment b/buildroot/board/olimex/imx233_olinuxino/linux-wifi.fragment new file mode 100644 index 0000000..b70dea2 --- /dev/null +++ b/buildroot/board/olimex/imx233_olinuxino/linux-wifi.fragment @@ -0,0 +1,18 @@ +# Network testing +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=y +# MII PHY device drivers +CONFIG_WLAN=y +CONFIG_RTL8187=m +CONFIG_ATH9K_HTC=m +CONFIG_RT2X00=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CU=m +CONFIG_ZD1211RW=m diff --git a/buildroot/board/olimex/imx233_olinuxino/readme.txt b/buildroot/board/olimex/imx233_olinuxino/readme.txt new file mode 100644 index 0000000..1e676c4 --- /dev/null +++ b/buildroot/board/olimex/imx233_olinuxino/readme.txt @@ -0,0 +1,29 @@ +This configuration is intended as a base image. +It includes kernel and firmware support for the common USB WiFi hardware. +Packages for WiFi support are up to the user, you'll probably want +one or more of: hostapd, iw, wireless_tools and/or wpa_supplicant. + +It also pulls up the console on the serial port, not on TV output. + +=== Output files after building ============================================== + +output/images ++-- boot.vfat (VFAT kernel partition image generated by genimage) ++-- imx23-olinuxino.dtb (device tree blob) ++-- rootfs.ext2 (Root file system) ++-- sdcard.img (Complete SD card image generated by genimage) ++-- u-boot.sd (U-Boot image) ++-- uImage (Kernel binary) + +=== Use of generated SD card image =========================================== + +To determine the device associated to the SD card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Then, run the following command as root: + +*** WARNING! The command will destroy all the card content. Use with care! *** + + sudo dd if=output/images/sdcard.img of=/dev/ diff --git a/buildroot/board/openblocks/a6/readme.txt b/buildroot/board/openblocks/a6/readme.txt new file mode 100644 index 0000000..10a78bb --- /dev/null +++ b/buildroot/board/openblocks/a6/readme.txt @@ -0,0 +1,78 @@ +Openblocks A6 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Openblocks A6. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make openblocks_a6_defconfig + +Compile everything: + + $ make + +Updating board over TFTP +======================== + +Copy the content of output/images to the root of your TFTP server. + +Connect serial and ethernet, power up board and stop it in U-Boot: + +DRAM (DDR2) CAS Latency = 5 tRP = 5 tRAS = 14 tRCD=5 +DRAM CS[0] base 0x00000000 size 512MB +DRAM Total size 512MB 16bit width +Addresses 8M - 0M are saved for the U-Boot usage. +Mem malloc Initialization (8M - 7M): Done +NAND:64 MB +POST: mac verify Eth0 PASSED + +CPU : Marvell Feroceon (Rev 1) + +Streaming disabled +Write allocate disabled + + +USB 0: host mode +Net: egiga0 +Hit any key to stop autoboot: 0 +openblocks>> + + +Load kernel from tftp: + +setenv serverip +setenv bootfile uImage.kirkwood-openblocks_a6 +bootp && tftp + + +Write it to nand: + +nand erase 0x590000 0x1c5c000 +nand write.e $loadaddr 0x590000 0x1c5c000 + + +Load rootfs from tftp: + +setenv serverip +setenv bootfile rootfs.jffs2 +bootp && tftp + + +Write it to nand: + +nand erase 0x2214000 0x1dc4000 +nand write.jffs2 $loadaddr 0x2214000 0x1dc4000 + + +Configure kernel to use rootfs: + +setenv root /dev/mtdblock5 rootfstype=jffs2 +saveenv +boot diff --git a/buildroot/board/orangepi/orangepi-lite/boot.cmd b/buildroot/board/orangepi/orangepi-lite/boot.cmd new file mode 100644 index 0000000..5c29dab --- /dev/null +++ b/buildroot/board/orangepi/orangepi-lite/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-lite.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/orangepi/orangepi-lite/genimage.cfg b/buildroot/board/orangepi/orangepi-lite/genimage.cfg new file mode 100644 index 0000000..cd81f98 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-lite/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi Lite +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-orangepi-lite.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/orangepi/orangepi-lite/linux-extras.config b/buildroot/board/orangepi/orangepi-lite/linux-extras.config new file mode 100644 index 0000000..5e3af2b --- /dev/null +++ b/buildroot/board/orangepi/orangepi-lite/linux-extras.config @@ -0,0 +1,8 @@ +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y diff --git a/buildroot/board/orangepi/orangepi-lite/readme.txt b/buildroot/board/orangepi/orangepi-lite/readme.txt new file mode 100644 index 0000000..5f402bf --- /dev/null +++ b/buildroot/board/orangepi/orangepi-lite/readme.txt @@ -0,0 +1,29 @@ +OrangePi Lite + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Lite. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_lite_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/buildroot/board/orangepi/orangepi-one/boot.cmd b/buildroot/board/orangepi/orangepi-one/boot.cmd new file mode 100644 index 0000000..ab616e6 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-one/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-one.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/orangepi/orangepi-one/genimage.cfg b/buildroot/board/orangepi/orangepi-one/genimage.cfg new file mode 100644 index 0000000..4640ff2 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-one/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi PC +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-orangepi-one.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/orangepi/orangepi-one/readme.txt b/buildroot/board/orangepi/orangepi-one/readme.txt new file mode 100644 index 0000000..e650f82 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-one/readme.txt @@ -0,0 +1,29 @@ +OrangePi One + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi One. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_one_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/buildroot/board/orangepi/orangepi-pc-plus/boot.cmd b/buildroot/board/orangepi/orangepi-pc-plus/boot.cmd new file mode 100644 index 0000000..0c75c86 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-pc-plus/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-pc-plus.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/orangepi/orangepi-pc-plus/genimage.cfg b/buildroot/board/orangepi/orangepi-pc-plus/genimage.cfg new file mode 100644 index 0000000..9ffa1a2 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-pc-plus/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi PC Plus +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-orangepi-pc-plus.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/orangepi/orangepi-pc-plus/linux-extras.config b/buildroot/board/orangepi/orangepi-pc-plus/linux-extras.config new file mode 100644 index 0000000..5e3af2b --- /dev/null +++ b/buildroot/board/orangepi/orangepi-pc-plus/linux-extras.config @@ -0,0 +1,8 @@ +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y diff --git a/buildroot/board/orangepi/orangepi-pc-plus/readme.txt b/buildroot/board/orangepi/orangepi-pc-plus/readme.txt new file mode 100644 index 0000000..4920694 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-pc-plus/readme.txt @@ -0,0 +1,29 @@ +OrangePi PC Plus + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi PC Plus. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_pc_plus_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/buildroot/board/orangepi/orangepi-pc/boot.cmd b/buildroot/board/orangepi/orangepi-pc/boot.cmd new file mode 100644 index 0000000..9da625c --- /dev/null +++ b/buildroot/board/orangepi/orangepi-pc/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-pc.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/orangepi/orangepi-pc/genimage.cfg b/buildroot/board/orangepi/orangepi-pc/genimage.cfg new file mode 100644 index 0000000..932d81c --- /dev/null +++ b/buildroot/board/orangepi/orangepi-pc/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi PC +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-orangepi-pc.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/orangepi/orangepi-pc/readme.txt b/buildroot/board/orangepi/orangepi-pc/readme.txt new file mode 100644 index 0000000..d316b6f --- /dev/null +++ b/buildroot/board/orangepi/orangepi-pc/readme.txt @@ -0,0 +1,29 @@ +OrangePi PC + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi PC. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_pc_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/buildroot/board/orangepi/orangepi-pc2/boot.cmd b/buildroot/board/orangepi/orangepi-pc2/boot.cmd new file mode 100644 index 0000000..4d4fc7b --- /dev/null +++ b/buildroot/board/orangepi/orangepi-pc2/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-h5-orangepi-pc2.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/orangepi/orangepi-pc2/genimage.cfg b/buildroot/board/orangepi/orangepi-pc2/genimage.cfg new file mode 100644 index 0000000..e10c67f --- /dev/null +++ b/buildroot/board/orangepi/orangepi-pc2/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h5-orangepi-pc2.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/orangepi/orangepi-pc2/readme.txt b/buildroot/board/orangepi/orangepi-pc2/readme.txt new file mode 100644 index 0000000..1200481 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-pc2/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi PC2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi PC2 link: +http://www.orangepi.org/orangepipc2/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+PC2 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_pc2_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi PC2 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/orangepi/orangepi-plus/boot.cmd b/buildroot/board/orangepi/orangepi-plus/boot.cmd new file mode 100644 index 0000000..1a378cb --- /dev/null +++ b/buildroot/board/orangepi/orangepi-plus/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-orangepi-plus.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/orangepi/orangepi-plus/genimage.cfg b/buildroot/board/orangepi/orangepi-plus/genimage.cfg new file mode 100644 index 0000000..391678b --- /dev/null +++ b/buildroot/board/orangepi/orangepi-plus/genimage.cfg @@ -0,0 +1,35 @@ +# Minimal SD card image for the OrangePi Plus\Plus2 +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-orangepi-plus.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/orangepi/orangepi-plus/readme.txt b/buildroot/board/orangepi/orangepi-plus/readme.txt new file mode 100644 index 0000000..7f871bc --- /dev/null +++ b/buildroot/board/orangepi/orangepi-plus/readme.txt @@ -0,0 +1,29 @@ +OrangePi Plus/Plus2 + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Plus/Plus2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_plus_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/buildroot/board/orangepi/orangepi-prime/boot.cmd b/buildroot/board/orangepi/orangepi-prime/boot.cmd new file mode 100644 index 0000000..3488788 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-prime/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-h5-orangepi-prime.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/orangepi/orangepi-prime/genimage.cfg b/buildroot/board/orangepi/orangepi-prime/genimage.cfg new file mode 100644 index 0000000..bb01ed9 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-prime/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h5-orangepi-prime.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/orangepi/orangepi-prime/readme.txt b/buildroot/board/orangepi/orangepi-prime/readme.txt new file mode 100644 index 0000000..5811884 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-prime/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi Prime. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi Prime link: +http://www.orangepi.org/OrangePiPrime/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Prime + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_prime_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Prime and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/orangepi/orangepi-win/boot.cmd b/buildroot/board/orangepi/orangepi-win/boot.cmd new file mode 100644 index 0000000..2ddb769 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-win/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-orangepi-win.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/orangepi/orangepi-win/genimage.cfg b/buildroot/board/orangepi/orangepi-win/genimage.cfg new file mode 100644 index 0000000..db025d5 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-win/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-orangepi-win.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/orangepi/orangepi-win/readme.txt b/buildroot/board/orangepi/orangepi-win/readme.txt new file mode 100644 index 0000000..93adddd --- /dev/null +++ b/buildroot/board/orangepi/orangepi-win/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi Win/Win Plus. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi Win/Win Plus link: +http://www.orangepi.org/OrangePiWin_WinPlus/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Win + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_win_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Win/Win Plus and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/orangepi/orangepi-zero-plus2/boot.cmd b/buildroot/board/orangepi/orangepi-zero-plus2/boot.cmd new file mode 100644 index 0000000..4772a9b --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero-plus2/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-h5-orangepi-zero-plus2.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/orangepi/orangepi-zero-plus2/genimage.cfg b/buildroot/board/orangepi/orangepi-zero-plus2/genimage.cfg new file mode 100644 index 0000000..8091eda --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero-plus2/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-h5-orangepi-zero-plus2.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-fix-sdcard-detect.patch b/buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-fix-sdcard-detect.patch new file mode 100644 index 0000000..2034029 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-fix-sdcard-detect.patch @@ -0,0 +1,30 @@ +From f88e9301948173dd35afad4a6939092c7f269aed Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Fri, 3 Nov 2017 22:58:54 +0300 +Subject: [PATCH] arm64: dts: orange-pi-zero-plus2: fix sdcard detect + +The sdcard detect pin on orange-pi-zero-plus2 is pulled up. +Fix cd-gpio description to enable sdcard detect. + +Signed-off-by: Sergey Matyukevich +Signed-off-by: Maxime Ripard +--- + arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts +index b6b7a56..a42fd79 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts +@@ -71,7 +71,7 @@ + pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>; + vmmc-supply = <®_vcc3v3>; + bus-width = <4>; +- cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; + status = "okay"; + }; + +-- +1.9.1 + diff --git a/buildroot/board/orangepi/orangepi-zero-plus2/readme.txt b/buildroot/board/orangepi/orangepi-zero-plus2/readme.txt new file mode 100644 index 0000000..322ba0e --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero-plus2/readme.txt @@ -0,0 +1,37 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Orangepi Zero Plus2. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Orangepi Zero Plus2 link: +http://www.orangepi.org/OrangePiZeroPlus2/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Orangepi+Zero+Plus2 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make orangepi_zero_plus2_defconfig + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Orangepi Zero Plus2 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/orangepi/orangepi-zero/boot.cmd b/buildroot/board/orangepi/orangepi-zero/boot.cmd new file mode 100644 index 0000000..44f0885 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero/boot.cmd @@ -0,0 +1,8 @@ +setenv fdt_high ffffffff + +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h2-plus-orangepi-zero.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/orangepi/orangepi-zero/genimage.cfg b/buildroot/board/orangepi/orangepi-zero/genimage.cfg new file mode 100644 index 0000000..017435f --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero/genimage.cfg @@ -0,0 +1,36 @@ +# Minimal SD card image for the OrangePi Zero +# +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h2-plus-orangepi-zero.dtb", + "boot.scr" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/orangepi/orangepi-zero/linux-extras.config b/buildroot/board/orangepi/orangepi-zero/linux-extras.config new file mode 100644 index 0000000..fe00af5 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero/linux-extras.config @@ -0,0 +1,17 @@ +# spidev +CONFIG_SPI_SPIDEV=y + +# spi nor +CONFIG_MTD=y +CONFIG_MTD_OF_PARTS=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_M25P80=y + +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y diff --git a/buildroot/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch b/buildroot/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch new file mode 100644 index 0000000..146d23d --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero/patches/linux/0001-ARM-dts-orange-pi-zero-interrupt-triggering-xr819.patch @@ -0,0 +1,35 @@ +From 321faaf4b78d46a0c77782c1798856746f0619e9 Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Fri, 19 May 2017 23:39:48 +0300 +Subject: [PATCH 1/3] ARM: dts: orange-pi-zero: specify XR819 WiFi chip + interrupts + +The orange-pi-zero board has Allwinner XR819 SDIO wifi chip. The board +dts file provides a node enabling mmc1 controller. Together with an +out-of-tree driver https://github.com/fifteenhex/xradio this node +enables using the wifi chip. + +This commit specifies XR819 interrupt configuration for the driver. + +Signed-off-by: Sergey Matyukevich +--- + arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +index b7ca916d871d..4e1a9050c6b4 100644 +--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +@@ -125,6 +125,9 @@ + */ + xr819: sdio_wifi@1 { + reg = <1>; ++ compatible = "xradio,xr819"; ++ interrupt-parent = <&pio>; ++ interrupts = <6 10 IRQ_TYPE_EDGE_RISING>; + }; + }; + +-- +2.11.0 + diff --git a/buildroot/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch b/buildroot/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch new file mode 100644 index 0000000..fc24e7b --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero/patches/linux/0002-ARM-dts-orange-pi-zero-enable-spi-nor.patch @@ -0,0 +1,42 @@ +From 068c3baff3048a3db4ef2518ff917ce749cd8169 Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Sat, 20 May 2017 11:24:26 +0300 +Subject: [PATCH 2/3] ARM: dts: orange-pi-zero: enable SPI NOR + +Enable SPI NOR on orange-pi-zero board. + +For more information see: +- http://linux-sunxi.org/Orange_Pi_Zero#SPI_NOR_flash + +Signed-off-by: Sergey Matyukevich +--- + arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +index 4e1a9050c6b4..cdf19821b1f3 100644 +--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +@@ -161,3 +161,19 @@ + /* USB VBUS is always on */ + status = "okay"; + }; ++ ++&spi0 { ++ status = "okay"; ++ ++ flash@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "mxicy,mx25l1606e", "winbond,w25q128"; ++ reg = <0>; ++ spi-max-frequency = <40000000>; ++ ++ partition@00000000 { ++ reg = <0x00000000 0x200000>; /* 2Mb */ ++ }; ++ }; ++}; +-- +2.11.0 + diff --git a/buildroot/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch b/buildroot/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch new file mode 100644 index 0000000..553155c --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero/patches/linux/0003-ARM-dts-orange-pi-zero-enable-spidev.patch @@ -0,0 +1,42 @@ +From 8dd1b2a696bb7e9914abd11cc6f5c0f54c33d626 Mon Sep 17 00:00:00 2001 +From: Sergey Matyukevich +Date: Sat, 20 May 2017 15:36:51 +0300 +Subject: [PATCH 3/3] ARM: dts: orange-pi-zero: enable spidev + +On orange-pi-zero board SPI1 pins are accessible via GPIO expansion port. +This patch enables spidev driver for SPI1. + +Signed-off-by: Sergey Matyukevich +--- + arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +index cdf19821b1f3..7242aaecb14f 100644 +--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +@@ -59,6 +59,7 @@ + serial0 = &uart0; + /* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */ + ethernet1 = &xr819; ++ spi1 = &spi1; + }; + + chosen { +@@ -177,3 +178,13 @@ + }; + }; + }; ++ ++&spi1 { ++ status = "okay"; ++ ++ spidev@0 { ++ compatible = "rohm,dh2228fv"; ++ reg = <0>; ++ spi-max-frequency = <10000000>; ++ }; ++}; +-- +2.11.0 + diff --git a/buildroot/board/orangepi/orangepi-zero/readme.txt b/buildroot/board/orangepi/orangepi-zero/readme.txt new file mode 100644 index 0000000..1afdbb7 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero/readme.txt @@ -0,0 +1,29 @@ +OrangePi Zero + +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the OrangePi Zero. With the current configuration +it will bring-up the board, and allow access through the serial console. + +How to build it +=============== + +Configure Buildroot: + + $ make orangepi_zero_defconfig + +Compile everything and build the SD card image: + + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX diff --git a/buildroot/board/pandaboard/genimage.cfg b/buildroot/board/pandaboard/genimage.cfg new file mode 100644 index 0000000..f30033f --- /dev/null +++ b/buildroot/board/pandaboard/genimage.cfg @@ -0,0 +1,26 @@ +image boot.vfat { + vfat { + files = { + "MLO", + "u-boot.img" + } + } + size = 8M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/pandaboard/post-image.sh b/buildroot/board/pandaboard/post-image.sh new file mode 100755 index 0000000..9cca1b1 --- /dev/null +++ b/buildroot/board/pandaboard/post-image.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/buildroot/board/pandaboard/readme.txt b/buildroot/board/pandaboard/readme.txt new file mode 100644 index 0000000..1e4820b --- /dev/null +++ b/buildroot/board/pandaboard/readme.txt @@ -0,0 +1,46 @@ +Pandaboard +========== + +This file documents the Buildroot support for the Pandaboard, a +low-power, low-cost single-board computer development platform based +on the Texas Instruments OMAP4 system on a chip (SoC). + +Configuring and building Buildroot +---------------------------------- + +Start from the defconfig: + + $ make pandaboard_defconfig + +You can edit build options the usual way: + + $ make menuconfig + +When you are happy with the setup, run: + + $ make + +The result of the build with the default settings should be these files: + + output/images + ├── MLO + ├── omap4-panda-a4.dtb + ├── omap4-panda.dtb + ├── omap4-panda-es.dtb + ├── rootfs.ext4 + ├── sdcard.img + ├── u-boot.img + └── zImage + +How to write the SD card +------------------------ + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Where /dev/sdX is the device node of your SD card (may be /dev/mmcblkX +instead depending on setup). diff --git a/buildroot/board/pc/genimage-bios.cfg b/buildroot/board/pc/genimage-bios.cfg new file mode 100644 index 0000000..c669499 --- /dev/null +++ b/buildroot/board/pc/genimage-bios.cfg @@ -0,0 +1,24 @@ +image disk.img { + + hdimage { + } + + partition boot { + in-partition-table = "no" + image = "boot.img" + offset = 0 + size = 512 + } + + partition grub { + in-partition-table = "no" + image = "grub.img" + offset = 512 + } + + partition root { + partition-type = 0x83 + image = "rootfs.ext2" + } + +} diff --git a/buildroot/board/pc/genimage-efi.cfg b/buildroot/board/pc/genimage-efi.cfg new file mode 100644 index 0000000..ec96d73 --- /dev/null +++ b/buildroot/board/pc/genimage-efi.cfg @@ -0,0 +1,31 @@ +image efi-part.vfat { + vfat { + file startup.nsh { + image = "efi-part/startup.nsh" + } + file EFI { + image = "efi-part/EFI" + } + file bzImage { + image = "bzImage" + } + } + size = 16M +} + +image disk.img { + + hdimage { + } + + partition boot { + partition-type = 0xEF + image = "efi-part.vfat" + } + + partition root { + partition-type = 0x83 + image = "rootfs.ext2" + } + +} diff --git a/buildroot/board/pc/grub-bios.cfg b/buildroot/board/pc/grub-bios.cfg new file mode 100644 index 0000000..bd3e3f0 --- /dev/null +++ b/buildroot/board/pc/grub-bios.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /boot/bzImage root=/dev/sda1 rootwait console=tty1 +} diff --git a/buildroot/board/pc/grub-efi.cfg b/buildroot/board/pc/grub-efi.cfg new file mode 100755 index 0000000..222301a --- /dev/null +++ b/buildroot/board/pc/grub-efi.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /bzImage root=/dev/sda2 rootwait console=tty1 +} diff --git a/buildroot/board/pc/linux.config b/buildroot/board/pc/linux.config new file mode 100644 index 0000000..0fff117 --- /dev/null +++ b/buildroot/board/pc/linux.config @@ -0,0 +1,84 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_EFI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETFILTER=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_FILTER=y +CONFIG_CFG80211=m +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_ATL2=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_ALX=m +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IGB=m +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +CONFIG_R8169=m +CONFIG_ATH9K=m +CONFIG_ATH9K_HTC=m +CONFIG_CARL9170=m +CONFIG_ATH10K=m +CONFIG_ATH10K_PCI=m +CONFIG_IWL4965=m +CONFIG_IWL3945=m +CONFIG_IWLWIFI=m +CONFIG_RT2X00=m +CONFIG_RT2800PCI=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +# CONFIG_RTL_CARDS is not set +CONFIG_RTL8XXXU=m +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_I915=y +CONFIG_DRM_QXL=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_FB_VESA=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_FUSE_FS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_SQUASHFS=y diff --git a/buildroot/board/pc/post-image.sh b/buildroot/board/pc/post-image.sh new file mode 100755 index 0000000..bdd0847 --- /dev/null +++ b/buildroot/board/pc/post-image.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +# Detect boot strategy, EFI or BIOS +if [ -f ${BINARIES_DIR}/efi-part/startup.nsh ]; then + cp -f ${BOARD_DIR}/grub-efi.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg +else + cp -f ${BOARD_DIR}/grub-bios.cfg ${TARGET_DIR}/boot/grub/grub.cfg + # Copy grub 1st stage to binaries, required for genimage + cp -f ${HOST_DIR}/lib/grub/i386-pc/boot.img ${BINARIES_DIR} +fi + +exit $? diff --git a/buildroot/board/pc/readme.txt b/buildroot/board/pc/readme.txt new file mode 100644 index 0000000..ca3b512 --- /dev/null +++ b/buildroot/board/pc/readme.txt @@ -0,0 +1,78 @@ +Bare PC sample config +===================== + +1. Build + + First select the appropriate target you want. + + For BIOS-based boot strategy: + + $ make pc_x86_64_bios_defconfig + + Or for EFI: + + $ make pc_x86_64_efi_defconfig + + Add any additional packages required and build: + + $ make + +2. Write the pendrive + + The build process will create a pendrive image called sdcard.img in + output/images. + + Write the image to a pendrive: + + $ dd if=output/images/disk.img of=/dev/sdc; sync + + Once it's done insert it into the target PC and boot. + + Remember that if said PC has another boot device you might need to + select this alternative for it to boot. + + In the case of EFI boot you might need to disable Secure Boot from + the setup as well. + +3. Enjoy + +Emulation in qemu (BIOS) +======================== + +1. Edit grub-bios.cfg + + Since the driver will show up in the virtual machine as /dev/vda, + change board/pc/grub-bios.cfg to use root=/dev/vda2 instead of + root=/dev/sda2. Then rebuild grub2 and the image. + +2. Run the emulation with: + +qemu-system-x86_64 \ + -M pc \ + -drive file=output/images/disk.img,if=virtio,format=raw \ + -net nic,model=virtio \ + -net user + + +Emulation in qemu (UEFI) +======================== + +1. Edit grub-efi.cfg + + Since the driver will show up in the virtual machine as /dev/vda, + change board/pc/grub-efi.cfg to use root=/dev/vda2 instead of + root=/dev/sda2. Then rebuild grub2 and the image. + +2. Run the emulation with: + +qemu-system-x86_64 \ + -M pc \ + -bios \ + -drive file=output/images/disk.img,if=virtio,format=raw \ + -net nic,model=virtio \ + -net user + +Note that needs to point to a valid x86_64 UEFI +firmware image for qemu. It may be provided by your distribution as a +edk2 or OVMF package, in path such as +/usr/share/edk2/ovmf/OVMF_CODE.fd . diff --git a/buildroot/board/pine64/pine64/boot.cmd b/buildroot/board/pine64/pine64/boot.cmd new file mode 100644 index 0000000..14f5610 --- /dev/null +++ b/buildroot/board/pine64/pine64/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-pine64.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/pine64/pine64/genimage.cfg b/buildroot/board/pine64/pine64/genimage.cfg new file mode 100644 index 0000000..2ff38d5 --- /dev/null +++ b/buildroot/board/pine64/pine64/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-pine64.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/pine64/pine64/readme.txt b/buildroot/board/pine64/pine64/readme.txt new file mode 100644 index 0000000..85226fd --- /dev/null +++ b/buildroot/board/pine64/pine64/readme.txt @@ -0,0 +1,38 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the Pine64. With the current configuration +it will bring-up the board, and allow access through the serial console. + +Pine64 link: +https://www.pine64.org/?page_id=1194 + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Pine64 + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make pine64_defconfig + + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your Pine64 and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/pine64/sopine/boot.cmd b/buildroot/board/pine64/sopine/boot.cmd new file mode 100644 index 0000000..2eab642 --- /dev/null +++ b/buildroot/board/pine64/sopine/boot.cmd @@ -0,0 +1,6 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +fatload mmc 0 $kernel_addr_r Image +fatload mmc 0 $fdt_addr_r sun50i-a64-sopine-baseboard.dtb + +booti $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/pine64/sopine/genimage.cfg b/buildroot/board/pine64/sopine/genimage.cfg new file mode 100644 index 0000000..02ebe7a --- /dev/null +++ b/buildroot/board/pine64/sopine/genimage.cfg @@ -0,0 +1,39 @@ +image boot.vfat { + vfat { + files = { + "Image", + "sun50i-a64-sopine-baseboard.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "sunxi-spl.bin" + offset = 8192 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.itb" + offset = 40K + size = 1M # 1MB - 40K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/pine64/sopine/readme.txt b/buildroot/board/pine64/sopine/readme.txt new file mode 100644 index 0000000..08cb380 --- /dev/null +++ b/buildroot/board/pine64/sopine/readme.txt @@ -0,0 +1,38 @@ +Intro +===== + +This default configuration will allow you to start experimenting with the +buildroot environment for the SoPine. With the current configuration +it will bring-up the board, and allow access through the serial console. + +SoPINE link: +https://www.pine64.org/?page_id=1491 + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/SoPine + +This configuration uses U-Boot mainline and kernel mainline. + +How to build +============ + + $ make pine64_sopine_defconfig + + $ make + +Note: you will need access to the internet to download the required +sources. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + $ sudo sync + +Insert the micro SDcard in your SoPine and power it up. The console +is on the serial line, 115200 8N1. diff --git a/buildroot/board/qemu/aarch64-virt/linux-4.13.config b/buildroot/board/qemu/aarch64-virt/linux-4.13.config new file mode 100644 index 0000000..93cb42f --- /dev/null +++ b/buildroot/board/qemu/aarch64-virt/linux-4.13.config @@ -0,0 +1,56 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_FHANDLE=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_TASKSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_PROFILING=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_SMP=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_BINFMT_MISC=y +CONFIG_COMPAT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=y +CONFIG_UNIX=y +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_BRIDGE=m +CONFIG_NET_SCHED=y +CONFIG_VSOCKETS=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_NETDEVICES=y +CONFIG_DUMMY=y +CONFIG_MACVLAN=y +CONFIG_VIRTIO_NET=y +CONFIG_NLMON=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_RTC_CLASS=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_MAILBOX=y +CONFIG_PL320_MBOX=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/aarch64-virt/readme.txt b/buildroot/board/qemu/aarch64-virt/readme.txt new file mode 100644 index 0000000..9e09d95 --- /dev/null +++ b/buildroot/board/qemu/aarch64-virt/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-aarch64 -M virt -cpu cortex-a57 -nographic -smp 1 -kernel output/images/Image -append "root=/dev/vda console=ttyAMA0" -netdev user,id=eth0 -device virtio-net-device,netdev=eth0 -drive file=output/images/rootfs.ext4,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/arm-versatile/linux-4.13.config b/buildroot/board/qemu/arm-versatile/linux-4.13.config new file mode 100644 index 0000000..b1001d8 --- /dev/null +++ b/buildroot/board/qemu/arm-versatile/linux-4.13.config @@ -0,0 +1,43 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_ARCH_MULTI_V7 is not set +CONFIG_ARCH_VERSATILE=y +CONFIG_PCI=y +CONFIG_PCI_VERSATILE=y +CONFIG_AEABI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_SYM53C8XX_2=y +CONFIG_NETDEVICES=y +CONFIG_8139CP=y +CONFIG_PHYLIB=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIO_AMBAKMI=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=m +CONFIG_FB=y +CONFIG_FB_ARMCLCD=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_SOUND=y +CONFIG_SND=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_ARMAACI=m +CONFIG_EXT4_FS=y +CONFIG_VFAT_FS=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_MAGIC_SYSRQ=y diff --git a/buildroot/board/qemu/arm-versatile/linux-4.4-nommu.config b/buildroot/board/qemu/arm-versatile/linux-4.4-nommu.config new file mode 100644 index 0000000..e1264dc --- /dev/null +++ b/buildroot/board/qemu/arm-versatile/linux-4.4-nommu.config @@ -0,0 +1,46 @@ +# CONFIG_MMU is not set +CONFIG_ARCH_VERSATILE=y +CONFIG_SET_MEM_PARAM=y +CONFIG_DRAM_BASE=0x00000000 +CONFIG_DRAM_SIZE=0x08000000 +CONFIG_ARCH_VERSATILE_PB=y +CONFIG_MACH_VERSATILE_AB=y +# CONFIG_MACH_VERSATILE_DT is not set +CONFIG_BINFMT_FLAT=y +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_ARCH_MULTI_V7 is not set +CONFIG_AEABI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_SMC91X=y +CONFIG_PHYLIB=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIO_AMBAKMI=y +CONFIG_LEGACY_PTY_COUNT=16 +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=m +CONFIG_FB=y +CONFIG_FB_ARMCLCD=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_SOUND=y +CONFIG_SND=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_ARMAACI=m +CONFIG_EXT4_FS=y +CONFIG_VFAT_FS=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_MAGIC_SYSRQ=y diff --git a/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch b/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch new file mode 100644 index 0000000..961b6c3 --- /dev/null +++ b/buildroot/board/qemu/arm-versatile/patches/linux/versatile-nommu.patch @@ -0,0 +1,30 @@ +From b7c1666813424d329868335c8faf8886b0f85b6c Mon Sep 17 00:00:00 2001 +From: Greg Ungerer +Date: Thu, 11 Aug 2016 21:33:11 +1000 +Subject: [PATCH] arm: fix versatile platform to work in no-MMU mode + +If CONFIG_MMU is disabled then do not carry out the virtual memory address +translation for IO devices. + +With this fix in place we can run the ARM Versatile board (including its +qemu emulation) as a no-MMU Linux system. + +Signed-off-by: Greg Ungerer +Signed-off-by: Waldemar Brodkorb + +diff -Nur linux-4.4.17.orig/arch/arm/mach-versatile/include/mach/hardware.h linux-4.4.17/arch/arm/mach-versatile/include/mach/hardware.h +--- linux-4.4.17.orig/arch/arm/mach-versatile/include/mach/hardware.h 2016-08-10 11:49:43.000000000 +0200 ++++ linux-4.4.17/arch/arm/mach-versatile/include/mach/hardware.h 2016-08-25 23:19:03.691716292 +0200 +@@ -30,8 +30,12 @@ + #define VERSATILE_PCI_VIRT_BASE (void __iomem *)0xe8000000ul + #define VERSATILE_PCI_CFG_VIRT_BASE (void __iomem *)0xe9000000ul + ++#ifdef CONFIG_MMU + /* macro to get at MMIO space when running virtually */ + #define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) ++#else ++#define IO_ADDRESS(x) (x) ++#endif + + #define __io_address(n) ((void __iomem __force *)IO_ADDRESS(n)) + diff --git a/buildroot/board/qemu/arm-versatile/readme.txt b/buildroot/board/qemu/arm-versatile/readme.txt new file mode 100644 index 0000000..6e899f4 --- /dev/null +++ b/buildroot/board/qemu/arm-versatile/readme.txt @@ -0,0 +1,12 @@ +Run the emulation with: + + qemu-system-arm -M versatilepb -kernel output/images/zImage -dtb output/images/versatile-pb.dtb -drive file=output/images/rootfs.ext2,if=scsi,format=raw -append "root=/dev/sda console=ttyAMA0,115200" -serial stdio -net nic,model=rtl8139 -net user + +Or for the noMMU emulation: + + qemu-system-arm -M versatilepb -kernel output/images/zImage -append "console=ttyAMA0,115200" -serial stdio -net user -net nic,model=smc91c111 + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/arm-vexpress/readme.txt b/buildroot/board/qemu/arm-vexpress/readme.txt new file mode 100644 index 0000000..57bb814 --- /dev/null +++ b/buildroot/board/qemu/arm-vexpress/readme.txt @@ -0,0 +1,11 @@ +Run the emulation with: + + qemu-system-arm -M vexpress-a9 -smp 1 -m 256 -kernel output/images/zImage -dtb output/images/vexpress-v2p-ca9.dtb -drive file=output/images/rootfs.ext2,if=sd,format=raw -append "console=ttyAMA0,115200 root=/dev/mmcblk0" -serial stdio -net nic,model=lan9118 -net user + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +If you want to emulate more cores change "-smp 1" to "-smp 2" for +dual-core or even "smp -4" for a quad-core configuration. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/m68k-mcf5208/linux-4.11.config b/buildroot/board/qemu/m68k-mcf5208/linux-4.11.config new file mode 100644 index 0000000..09a89d7 --- /dev/null +++ b/buildroot/board/qemu/m68k-mcf5208/linux-4.11.config @@ -0,0 +1,28 @@ +CONFIG_M68K=y +CONFIG_COLDFIRE=y +# CONFIG_MMU is not set +CONFIG_M520x=y +CONFIG_CLOCK_SET=y +CONFIG_CLOCK_FREQ=66666666 +CONFIG_CLOCK_DIV=1 +CONFIG_M5208EVB=y +CONFIG_FREESCALE=y +CONFIG_RAMBASE=0x40000000 +CONFIG_RAMSIZE=0x0 +CONFIG_VECTORBASE=0x40000000 +CONFIG_KERNELBASE=0x40020000 +CONFIG_4KSTACKS=y +CONFIG_RAMKERNEL=y +CONFIG_BINFMT_FLAT=y +CONFIG_SERIAL_MCF=y +CONFIG_SERIAL_MCF_BAUDRATE=115200 +CONFIG_SERIAL_MCF_CONSOLE=y +CONFIG_BOOTPARAM=y +CONFIG_BOOTPARAM_STRING="console=ttyS0,115200" +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_NET_VENDOR_FREESCALE=y +CONFIG_FEC=y diff --git a/buildroot/board/qemu/m68k-mcf5208/readme.txt b/buildroot/board/qemu/m68k-mcf5208/readme.txt new file mode 100644 index 0000000..014a0dc --- /dev/null +++ b/buildroot/board/qemu/m68k-mcf5208/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-m68k -M mcf5208evb -cpu m5208 -kernel output/images/vmlinux -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/m68k-q800/linux-4.11.config b/buildroot/board/qemu/m68k-q800/linux-4.11.config new file mode 100644 index 0000000..44eb70e --- /dev/null +++ b/buildroot/board/qemu/m68k-q800/linux-4.11.config @@ -0,0 +1,26 @@ +CONFIG_M68K=y +CONFIG_M68040=y +CONFIG_M68KFPU_EMU=y +CONFIG_MAC=y +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_ADB=y +CONFIG_ADB_MACII=y +CONFIG_TTY=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_MACSONIC=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_LOWLEVEL=y +CONFIG_SCSI_MAC_ESP=y +CONFIG_BLK_DEV_SD=y +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y diff --git a/buildroot/board/qemu/m68k-q800/readme.txt b/buildroot/board/qemu/m68k-q800/readme.txt new file mode 100644 index 0000000..78267a3 --- /dev/null +++ b/buildroot/board/qemu/m68k-q800/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-m68k -M q800 -kernel output/images/vmlinux -nographic -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/sda console=ttyS0" + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.4.0 from https://github.com/vivier/qemu-m68k +You need following branch: q800-v2.4.0 diff --git a/buildroot/board/qemu/microblazebe-mmu/linux-4.11.config b/buildroot/board/qemu/microblazebe-mmu/linux-4.11.config new file mode 100644 index 0000000..7bcd382 --- /dev/null +++ b/buildroot/board/qemu/microblazebe-mmu/linux-4.11.config @@ -0,0 +1,20 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_OPT_LIB_ASM=y +CONFIG_XILINX_MICROBLAZE0_FAMILY="spartan3adsp" +CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 +CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=1 +CONFIG_MMU=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_XILINX_EMACLITE=y +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y diff --git a/buildroot/board/qemu/microblazebe-mmu/readme.txt b/buildroot/board/qemu/microblazebe-mmu/readme.txt new file mode 100644 index 0000000..cf0afda --- /dev/null +++ b/buildroot/board/qemu/microblazebe-mmu/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-microblaze -M petalogix-s3adsp1800 -kernel output/images/linux.bin -serial stdio + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/microblazebe-mmu/xilinx-xemaclite.patch b/buildroot/board/qemu/microblazebe-mmu/xilinx-xemaclite.patch new file mode 100644 index 0000000..756bfae --- /dev/null +++ b/buildroot/board/qemu/microblazebe-mmu/xilinx-xemaclite.patch @@ -0,0 +1,11 @@ +diff -Nur linux-3.14.orig/drivers/net/ethernet/xilinx/xilinx_emaclite.c linux-3.14/drivers/net/ethernet/xilinx/xilinx_emaclite.c +--- linux-3.14.orig/drivers/net/ethernet/xilinx/xilinx_emaclite.c 2014-03-31 05:40:15.000000000 +0200 ++++ linux-3.14/drivers/net/ethernet/xilinx/xilinx_emaclite.c 2014-04-11 22:53:42.000000000 +0200 +@@ -1249,6 +1249,7 @@ + { .compatible = "xlnx,opb-ethernetlite-1.01.b", }, + { .compatible = "xlnx,xps-ethernetlite-1.00.a", }, + { .compatible = "xlnx,xps-ethernetlite-2.00.a", }, ++ { .compatible = "xlnx,xps-ethernetlite-2.00.b", }, + { .compatible = "xlnx,xps-ethernetlite-2.01.a", }, + { .compatible = "xlnx,xps-ethernetlite-3.00.a", }, + { /* end of list */ }, diff --git a/buildroot/board/qemu/microblazeel-mmu/linux-4.11.config b/buildroot/board/qemu/microblazeel-mmu/linux-4.11.config new file mode 100644 index 0000000..a622828 --- /dev/null +++ b/buildroot/board/qemu/microblazeel-mmu/linux-4.11.config @@ -0,0 +1,19 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_XILINX_MICROBLAZE0_FAMILY="spartan3adsp" +CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_PCMP_INSTR=1 +CONFIG_XILINX_MICROBLAZE0_USE_BARREL=1 +CONFIG_XILINX_MICROBLAZE0_USE_HW_MUL=1 +CONFIG_MMU=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_NETDEVICES=y +CONFIG_XILINX_EMACLITE=y +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y diff --git a/buildroot/board/qemu/microblazeel-mmu/readme.txt b/buildroot/board/qemu/microblazeel-mmu/readme.txt new file mode 100644 index 0000000..9edf101 --- /dev/null +++ b/buildroot/board/qemu/microblazeel-mmu/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-microblazeel -M petalogix-s3adsp1800 -kernel output/images/linux.bin -serial stdio + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/microblazeel-mmu/xilinx-xemaclite.patch b/buildroot/board/qemu/microblazeel-mmu/xilinx-xemaclite.patch new file mode 100644 index 0000000..756bfae --- /dev/null +++ b/buildroot/board/qemu/microblazeel-mmu/xilinx-xemaclite.patch @@ -0,0 +1,11 @@ +diff -Nur linux-3.14.orig/drivers/net/ethernet/xilinx/xilinx_emaclite.c linux-3.14/drivers/net/ethernet/xilinx/xilinx_emaclite.c +--- linux-3.14.orig/drivers/net/ethernet/xilinx/xilinx_emaclite.c 2014-03-31 05:40:15.000000000 +0200 ++++ linux-3.14/drivers/net/ethernet/xilinx/xilinx_emaclite.c 2014-04-11 22:53:42.000000000 +0200 +@@ -1249,6 +1249,7 @@ + { .compatible = "xlnx,opb-ethernetlite-1.01.b", }, + { .compatible = "xlnx,xps-ethernetlite-1.00.a", }, + { .compatible = "xlnx,xps-ethernetlite-2.00.a", }, ++ { .compatible = "xlnx,xps-ethernetlite-2.00.b", }, + { .compatible = "xlnx,xps-ethernetlite-2.01.a", }, + { .compatible = "xlnx,xps-ethernetlite-3.00.a", }, + { /* end of list */ }, diff --git a/buildroot/board/qemu/mips32r2-malta/linux-4.11.config b/buildroot/board/qemu/mips32r2-malta/linux-4.11.config new file mode 100644 index 0000000..3a26ac8 --- /dev/null +++ b/buildroot/board/qemu/mips32r2-malta/linux-4.11.config @@ -0,0 +1,30 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/mips32r2-malta/readme.txt b/buildroot/board/qemu/mips32r2-malta/readme.txt new file mode 100644 index 0000000..7002ab1 --- /dev/null +++ b/buildroot/board/qemu/mips32r2-malta/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-mips -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -net nic,model=pcnet -net user + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. No keyboard support has been +enabled. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/mips32r2el-malta/linux-4.11.config b/buildroot/board/qemu/mips32r2el-malta/linux-4.11.config new file mode 100644 index 0000000..79d7352 --- /dev/null +++ b/buildroot/board/qemu/mips32r2el-malta/linux-4.11.config @@ -0,0 +1,31 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/mips32r2el-malta/readme.txt b/buildroot/board/qemu/mips32r2el-malta/readme.txt new file mode 100644 index 0000000..bfc9c49 --- /dev/null +++ b/buildroot/board/qemu/mips32r2el-malta/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-mipsel -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -net nic,model=pcnet -net user + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. No keyboard support has been +enabled. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/mips32r6-malta/linux-4.11.config b/buildroot/board/qemu/mips32r6-malta/linux-4.11.config new file mode 100644 index 0000000..d559676 --- /dev/null +++ b/buildroot/board/qemu/mips32r6-malta/linux-4.11.config @@ -0,0 +1,30 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS32_R6=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/mips32r6-malta/readme.txt b/buildroot/board/qemu/mips32r6-malta/readme.txt new file mode 100644 index 0000000..7d79c66 --- /dev/null +++ b/buildroot/board/qemu/mips32r6-malta/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + +qemu-system-mips -M malta -cpu mips32r6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/mips32r6el-malta/linux-4.11.config b/buildroot/board/qemu/mips32r6el-malta/linux-4.11.config new file mode 100644 index 0000000..d559676 --- /dev/null +++ b/buildroot/board/qemu/mips32r6el-malta/linux-4.11.config @@ -0,0 +1,30 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS32_R6=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/mips32r6el-malta/readme.txt b/buildroot/board/qemu/mips32r6el-malta/readme.txt new file mode 100644 index 0000000..78f8350 --- /dev/null +++ b/buildroot/board/qemu/mips32r6el-malta/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + +qemu-system-mipsel -M malta -cpu mips32r6-generic -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -net nic,model=pcnet -net user -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/mips64-malta/linux-4.11.config b/buildroot/board/qemu/mips64-malta/linux-4.11.config new file mode 100644 index 0000000..cd0b560 --- /dev/null +++ b/buildroot/board/qemu/mips64-malta/linux-4.11.config @@ -0,0 +1,34 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS64_R1=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/mips64-malta/readme.txt b/buildroot/board/qemu/mips64-malta/readme.txt new file mode 100644 index 0000000..8a73210 --- /dev/null +++ b/buildroot/board/qemu/mips64-malta/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-mips64 -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/mips64el-malta/linux-4.11.config b/buildroot/board/qemu/mips64el-malta/linux-4.11.config new file mode 100644 index 0000000..c6b46d4 --- /dev/null +++ b/buildroot/board/qemu/mips64el-malta/linux-4.11.config @@ -0,0 +1,35 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS64_R1=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/mips64el-malta/readme.txt b/buildroot/board/qemu/mips64el-malta/readme.txt new file mode 100644 index 0000000..25fc9ee --- /dev/null +++ b/buildroot/board/qemu/mips64el-malta/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-mips64el -M malta -kernel output/images/vmlinux -serial stdio -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +Tested with QEMU 2.5.0 diff --git a/buildroot/board/qemu/mips64r6-malta/linux-4.11.config b/buildroot/board/qemu/mips64r6-malta/linux-4.11.config new file mode 100644 index 0000000..0ebfdbd --- /dev/null +++ b/buildroot/board/qemu/mips64r6-malta/linux-4.11.config @@ -0,0 +1,34 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS64_R6=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/mips64r6-malta/readme.txt b/buildroot/board/qemu/mips64r6-malta/readme.txt new file mode 100644 index 0000000..4a6c5fe --- /dev/null +++ b/buildroot/board/qemu/mips64r6-malta/readme.txt @@ -0,0 +1,10 @@ +Run the emulation with: + + qemu-system-mips64 -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.7.0 + +Might work with 2.6.0 by changing the -cpu entry to MIPS64R6-generic +since the naming was updated and the old name removed in 2.7.0 diff --git a/buildroot/board/qemu/mips64r6el-malta/linux-4.11.config b/buildroot/board/qemu/mips64r6el-malta/linux-4.11.config new file mode 100644 index 0000000..0ebfdbd --- /dev/null +++ b/buildroot/board/qemu/mips64r6el-malta/linux-4.11.config @@ -0,0 +1,34 @@ +CONFIG_MIPS_MALTA=y +CONFIG_CPU_MIPS64_R6=y +CONFIG_64BIT=y +CONFIG_MIPS_MT_SMP=y +CONFIG_NR_CPUS=2 +CONFIG_SYSVIPC=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_GENERIC=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FB=y +CONFIG_FB_CIRRUS=y +CONFIG_USB=y +CONFIG_USB_UHCI_HCD=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/mips64r6el-malta/readme.txt b/buildroot/board/qemu/mips64r6el-malta/readme.txt new file mode 100644 index 0000000..9250cf3 --- /dev/null +++ b/buildroot/board/qemu/mips64r6el-malta/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-mips64el -M malta -cpu I6400 -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/hda" -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/nios2-10m50/linux-4.11.fragment b/buildroot/board/qemu/nios2-10m50/linux-4.11.fragment new file mode 100644 index 0000000..76c864f --- /dev/null +++ b/buildroot/board/qemu/nios2-10m50/linux-4.11.fragment @@ -0,0 +1,3 @@ +# Embed the DTB in the kernel image +CONFIG_NIOS2_DTB_SOURCE_BOOL=y +CONFIG_NIOS2_DTB_SOURCE="arch/nios2/boot/dts/10m50_devboard.dts" diff --git a/buildroot/board/qemu/nios2-10m50/readme.txt b/buildroot/board/qemu/nios2-10m50/readme.txt new file mode 100644 index 0000000..f7dee37 --- /dev/null +++ b/buildroot/board/qemu/nios2-10m50/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-nios2 -kernel output/images/vmlinux -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0. diff --git a/buildroot/board/qemu/or1k/linux.config b/buildroot/board/qemu/or1k/linux.config new file mode 100644 index 0000000..0a817b1 --- /dev/null +++ b/buildroot/board/qemu/or1k/linux.config @@ -0,0 +1,30 @@ +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" +CONFIG_OPENRISC_BUILTIN_DTB="or1ksim" +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_TMPFS=y +CONFIG_NETDEVICES=y +CONFIG_ETHOC=y +# CONFIG_WLAN is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +# CONFIG_HWMON is not set +# CONFIG_VGA_CONSOLE is not set +# CONFIG_USB_SUPPORT is not set diff --git a/buildroot/board/qemu/or1k/readme.txt b/buildroot/board/qemu/or1k/readme.txt new file mode 100644 index 0000000..a04314e --- /dev/null +++ b/buildroot/board/qemu/or1k/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-or1k -kernel output/images/vmlinux -nographic + +The login prompt will appear in the terminal that started Qemu. + +Ethernet support is not working, yet. + +Tested with QEMU 2.9.0. diff --git a/buildroot/board/qemu/ppc-g3beige/linux-4.11.config b/buildroot/board/qemu/ppc-g3beige/linux-4.11.config new file mode 100644 index 0000000..7994553 --- /dev/null +++ b/buildroot/board/qemu/ppc-g3beige/linux-4.11.config @@ -0,0 +1,25 @@ +CONFIG_ALTIVEC=y +CONFIG_SYSVIPC=y +CONFIG_HIGHMEM=y +CONFIG_YENTA=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IDE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_BLK_DEV_CMD64X=y +CONFIG_BLK_DEV_IDE_PMAC=y +CONFIG_ADB=y +CONFIG_ADB_CUDA=y +CONFIG_ADB_PMU=y +CONFIG_NETDEVICES=y +CONFIG_PCNET32=y +CONFIG_8139CP=y +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_BOOTX_TEXT=y diff --git a/buildroot/board/qemu/ppc-g3beige/readme.txt b/buildroot/board/qemu/ppc-g3beige/readme.txt new file mode 100644 index 0000000..42c97a0 --- /dev/null +++ b/buildroot/board/qemu/ppc-g3beige/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-ppc -M g3beige -kernel output/images/vmlinux -drive file=output/images/rootfs.ext2,format=raw -append "console=ttyS0 root=/dev/hda" -serial stdio -net nic,model=rtl8139 -net user + +The login prompt will appear in the terminal that started Qemu. The +graphical window is the framebuffer. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/ppc-mpc8544ds/linux-4.11.config b/buildroot/board/qemu/ppc-mpc8544ds/linux-4.11.config new file mode 100644 index 0000000..b36847c --- /dev/null +++ b/buildroot/board/qemu/ppc-mpc8544ds/linux-4.11.config @@ -0,0 +1,38 @@ +CONFIG_PPC_85xx=y +CONFIG_PHYS_64BIT=y +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio" +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MPC8540_ADS=y +CONFIG_MPC85xx_DS=y +CONFIG_HIGHMEM=y +CONFIG_MATH_EMULATION=y +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_MSI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_NETDEVICES=y +CONFIG_E1000=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=6 +CONFIG_SERIAL_8250_RUNTIME_UARTS=6 +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_FSL=y +CONFIG_USB_OHCI_HCD=y +CONFIG_TMPFS=y diff --git a/buildroot/board/qemu/ppc-mpc8544ds/readme.txt b/buildroot/board/qemu/ppc-mpc8544ds/readme.txt new file mode 100644 index 0000000..0008c84 --- /dev/null +++ b/buildroot/board/qemu/ppc-mpc8544ds/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-ppc -M mpc8544ds -kernel output/images/vmlinux -serial stdio -net nic,model=e1000 -net user + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/ppc-virtex-ml507/linux-4.9.config b/buildroot/board/qemu/ppc-virtex-ml507/linux-4.9.config new file mode 100644 index 0000000..ed4eb79 --- /dev/null +++ b/buildroot/board/qemu/ppc-virtex-ml507/linux-4.9.config @@ -0,0 +1,36 @@ +CONFIG_44x=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_SLAB=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_EBONY is not set +CONFIG_XILINX_VIRTEX440_GENERIC_BOARD=y +CONFIG_MATH_EMULATION=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_XILINX_SYSACE=y +CONFIG_NETDEVICES=y +CONFIG_SERIO_XILINX_XPS_PS2=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_UARTLITE=y +CONFIG_SERIAL_UARTLITE_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_XILINX_HWICAP=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_XILINX=y +CONFIG_FB=y +CONFIG_FB_XILINX=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y diff --git a/buildroot/board/qemu/ppc-virtex-ml507/readme.txt b/buildroot/board/qemu/ppc-virtex-ml507/readme.txt new file mode 100644 index 0000000..42aa204 --- /dev/null +++ b/buildroot/board/qemu/ppc-virtex-ml507/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-ppc -M virtex-ml507 -kernel output/images/vmlinux -m 256 -nographic -append "console=ttyS0" -dtb output/images/virtex440-ml507.dtb + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.5.0 diff --git a/buildroot/board/qemu/ppc64-pseries/readme.txt b/buildroot/board/qemu/ppc64-pseries/readme.txt new file mode 100644 index 0000000..9de1377 --- /dev/null +++ b/buildroot/board/qemu/ppc64-pseries/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-ppc64 -M pseries -cpu POWER7 -m 256 -kernel output/images/vmlinux -append "console=hvc0 root=/dev/sda" -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/ppc64le-pseries/readme.txt b/buildroot/board/qemu/ppc64le-pseries/readme.txt new file mode 100644 index 0000000..95455e9 --- /dev/null +++ b/buildroot/board/qemu/ppc64le-pseries/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + +qemu-system-ppc64 -M pseries -cpu POWER8 -m 256 -kernel output/images/vmlinux -append "console=hvc0 root=/dev/sda" -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses + +The login prompt will appear in the terminal window. + +Tested with QEMU 2.10.0 diff --git a/buildroot/board/qemu/sh4-r2d/linux-4.9.config b/buildroot/board/qemu/sh4-r2d/linux-4.9.config new file mode 100644 index 0000000..a3d6544 --- /dev/null +++ b/buildroot/board/qemu/sh4-r2d/linux-4.9.config @@ -0,0 +1,38 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_CPU_SUBTYPE_SH7751R=y +CONFIG_MEMORY_START=0x0c000000 +CONFIG_FLATMEM_MANUAL=y +CONFIG_SH_RTS7751R2D=y +CONFIG_RTS7751R2D_PLUS=y +CONFIG_HEARTBEAT=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_PATA_PLATFORM=y +CONFIG_NETDEVICES=y +CONFIG_8139CP=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_CONSOLE=y +CONFIG_SPI=y +CONFIG_SPI_SH_SCI=y +CONFIG_MFD_SM501=y +CONFIG_FB=y +CONFIG_FB_SH_MOBILE_LCDC=y +CONFIG_FB_SH_MOBILE_HDMI=y +CONFIG_FB_SM501=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_SOUND=y +CONFIG_SND_YMFPCI=y +CONFIG_SOUND_PRIME=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_R9701=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/sh4-r2d/readme.txt b/buildroot/board/qemu/sh4-r2d/readme.txt new file mode 100644 index 0000000..aa0e369 --- /dev/null +++ b/buildroot/board/qemu/sh4-r2d/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-sh4 -M r2d -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=ide,format=raw -append "root=/dev/sda console=ttySC1,115200 noiotrap" -serial null -serial stdio -net nic,model=rtl8139 -net user + +The login prompt will appear in the terminal that started Qemu. +The graphical window is the framebuffer. + +Tested with QEMU 2.5.0 diff --git a/buildroot/board/qemu/sh4eb-r2d/linux-4.9.config b/buildroot/board/qemu/sh4eb-r2d/linux-4.9.config new file mode 100644 index 0000000..6ead626 --- /dev/null +++ b/buildroot/board/qemu/sh4eb-r2d/linux-4.9.config @@ -0,0 +1,38 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_CPU_SUBTYPE_SH7751R=y +CONFIG_MEMORY_START=0x0c000000 +CONFIG_FLATMEM_MANUAL=y +CONFIG_CPU_BIG_ENDIAN=y +CONFIG_SH_RTS7751R2D=y +CONFIG_RTS7751R2D_PLUS=y +CONFIG_HEARTBEAT=y +CONFIG_PCI=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_PATA_PLATFORM=y +CONFIG_NETDEVICES=y +CONFIG_8139CP=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_CONSOLE=y +CONFIG_SPI=y +CONFIG_SPI_SH_SCI=y +CONFIG_MFD_SM501=y +CONFIG_FB=y +CONFIG_FB_SH_MOBILE_LCDC=y +CONFIG_FB_SH_MOBILE_HDMI=y +CONFIG_FB_SM501=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_SND_YMFPCI=y +CONFIG_SOUND_PRIME=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_R9701=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/sh4eb-r2d/readme.txt b/buildroot/board/qemu/sh4eb-r2d/readme.txt new file mode 100644 index 0000000..147adc6 --- /dev/null +++ b/buildroot/board/qemu/sh4eb-r2d/readme.txt @@ -0,0 +1,8 @@ +Run the emulation with: + + qemu-system-sh4eb -M r2d -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=ide,format=raw -append "root=/dev/sda console=ttySC1,115200 noiotrap" -serial null -serial stdio -net nic,model=rtl8139 -net user + +The login prompt will appear in the terminal that started Qemu. +The graphical window is the framebuffer. + +Tested with QEMU 2.5.0 diff --git a/buildroot/board/qemu/sparc-ss10/linux-4.11.config b/buildroot/board/qemu/sparc-ss10/linux-4.11.config new file mode 100644 index 0000000..cb8d01d --- /dev/null +++ b/buildroot/board/qemu/sparc-ss10/linux-4.11.config @@ -0,0 +1,31 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_PCI=y +CONFIG_SUN_OPENPROMFS=m +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_WIRELESS is not set +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_SUNESP=y +CONFIG_NETDEVICES=y +CONFIG_SUNLANCE=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_SUNKBD=y +CONFIG_MOUSE_SERIAL=y +CONFIG_SERIAL_SUNZILOG=y +CONFIG_SERIAL_SUNZILOG_CONSOLE=y +CONFIG_SERIAL_SUNSU=y +CONFIG_SERIAL_SUNSU_CONSOLE=y +CONFIG_SUN_OPENPROMIO=m +CONFIG_EXT4_FS=y +CONFIG_ISO9660_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/sparc-ss10/readme.txt b/buildroot/board/qemu/sparc-ss10/readme.txt new file mode 100644 index 0000000..0ce461d --- /dev/null +++ b/buildroot/board/qemu/sparc-ss10/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-sparc -M SS-10 -kernel output/images/zImage -drive file=output/images/rootfs.ext2,format=raw -append "root=/dev/sda console=ttyS0,115200" -serial stdio -net nic,model=lance -net user + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/sparc64-sun4u/linux-4.11.config b/buildroot/board/qemu/sparc64-sun4u/linux-4.11.config new file mode 100644 index 0000000..0e1e168 --- /dev/null +++ b/buildroot/board/qemu/sparc64-sun4u/linux-4.11.config @@ -0,0 +1,25 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ_IDLE=y +CONFIG_EMBEDDED=y +CONFIG_MODULES=y +CONFIG_PCI=y +CONFIG_SUN_OPENPROMFS=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_BLK_DEV_SD=y +CONFIG_ATA=y +CONFIG_PATA_CMD64X=y +CONFIG_NETDEVICES=y +CONFIG_E1000=y +CONFIG_SERIAL_SUNSU=y +CONFIG_SERIAL_SUNSU_CONSOLE=y +CONFIG_EXT4_FS=y +CONFIG_TMPFS=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf-8" +CONFIG_MAGIC_SYSRQ=y diff --git a/buildroot/board/qemu/sparc64-sun4u/readme.txt b/buildroot/board/qemu/sparc64-sun4u/readme.txt new file mode 100644 index 0000000..adfff70 --- /dev/null +++ b/buildroot/board/qemu/sparc64-sun4u/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-sparc64 -M sun4u -kernel output/images/vmlinux -append "root=/dev/sda console=ttyS0,115200" -serial stdio -drive file=output/images/rootfs.ext2,format=raw -net nic,model=e1000 -net user + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/x86/linux-4.15.config b/buildroot/board/qemu/x86/linux-4.15.config new file mode 100644 index 0000000..79f7537 --- /dev/null +++ b/buildroot/board/qemu/x86/linux-4.15.config @@ -0,0 +1,51 @@ +CONFIG_SYSVIPC=y +CONFIG_CGROUPS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_QXL=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/board/qemu/x86/readme.txt b/buildroot/board/qemu/x86/readme.txt new file mode 100644 index 0000000..b003ad5 --- /dev/null +++ b/buildroot/board/qemu/x86/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-i386 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "root=/dev/vda" -net nic,model=virtio -net user + +Optionally add -smp N to emulate a SMP system with N CPUs. + +The login prompt will appear in the graphical window. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/x86_64/linux-4.15.config b/buildroot/board/qemu/x86_64/linux-4.15.config new file mode 100644 index 0000000..5fa33d4 --- /dev/null +++ b/buildroot/board/qemu/x86_64/linux-4.15.config @@ -0,0 +1,52 @@ +CONFIG_SYSVIPC=y +CONFIG_CGROUPS=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_QXL=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_AUTOFS4_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/buildroot/board/qemu/x86_64/readme.txt b/buildroot/board/qemu/x86_64/readme.txt new file mode 100644 index 0000000..ed7b5f5 --- /dev/null +++ b/buildroot/board/qemu/x86_64/readme.txt @@ -0,0 +1,9 @@ +Run the emulation with: + + qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "root=/dev/vda" -net nic,model=virtio -net user + +Optionally add -smp N to emulate a SMP system with N CPUs. + +The login prompt will appear in the graphical window. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/qemu/xtensa-lx60/linux-4.11-nommu.config b/buildroot/board/qemu/xtensa-lx60/linux-4.11-nommu.config new file mode 100644 index 0000000..10f7ee1 --- /dev/null +++ b/buildroot/board/qemu/xtensa-lx60/linux-4.11-nommu.config @@ -0,0 +1,38 @@ +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_XTENSA_VARIANT_CUSTOM=y +CONFIG_XTENSA_VARIANT_CUSTOM_NAME="dc233c" +# CONFIG_XTENSA_VARIANT_MMU is not set +CONFIG_XTENSA_UNALIGNED_USER=y +CONFIG_PREEMPT=y +CONFIG_KERNEL_LOAD_ADDRESS=0x00003000 +# CONFIG_PCI is not set +CONFIG_XTENSA_PLATFORM_XTFPGA=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="earlycon=uart8250,mmio32,0xfd050020,115200n8 console=ttyS0,115200n8 memmap=0x04000000@0" +CONFIG_DEFAULT_MEM_START=0x00000000 +CONFIG_BINFMT_FLAT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IPV6 is not set +CONFIG_NETFILTER=y +CONFIG_DNS_RESOLVER=y +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_NETDEVICES=y +CONFIG_MARVELL_PHY=y +# CONFIG_WLAN is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_HWMON is not set +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y +CONFIG_FANOTIFY=y +CONFIG_PRINTK_TIME=y +# CONFIG_S32C1I_SELFTEST is not set diff --git a/buildroot/board/qemu/xtensa-lx60/linux-4.11.config b/buildroot/board/qemu/xtensa-lx60/linux-4.11.config new file mode 100644 index 0000000..625b860 --- /dev/null +++ b/buildroot/board/qemu/xtensa-lx60/linux-4.11.config @@ -0,0 +1,36 @@ +# CONFIG_SWAP is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_XTENSA_VARIANT_DC233C=y +CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX=y +CONFIG_XTENSA_PLATFORM_XTFPGA=y +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="console=ttyS0,38400 memmap=0x04000000@0" +# CONFIG_COMPACTION is not set +# CONFIG_BOUNCE is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_DIAG is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_NETDEVICES=y +# CONFIG_WLAN is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_HW_RANDOM is not set +# CONFIG_HWMON is not set +# CONFIG_VGA_CONSOLE is not set +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_LD_NO_RELAX=y +# CONFIG_S32C1I_SELFTEST is not set diff --git a/buildroot/board/qemu/xtensa-lx60/readme.txt b/buildroot/board/qemu/xtensa-lx60/readme.txt new file mode 100644 index 0000000..9a82c53 --- /dev/null +++ b/buildroot/board/qemu/xtensa-lx60/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-xtensa -M lx60 -cpu dc233c -monitor null -nographic -kernel output/images/Image.elf + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.9.0 diff --git a/buildroot/board/raspberrypi/genimage-raspberrypi.cfg b/buildroot/board/raspberrypi/genimage-raspberrypi.cfg new file mode 100644 index 0000000..bd5166a --- /dev/null +++ b/buildroot/board/raspberrypi/genimage-raspberrypi.cfg @@ -0,0 +1,32 @@ +image boot.vfat { + vfat { + files = { + "bcm2708-rpi-b.dtb", + "bcm2708-rpi-b-plus.dtb", + "bcm2708-rpi-cm.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "zImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg b/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg new file mode 100644 index 0000000..212c306 --- /dev/null +++ b/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg @@ -0,0 +1,31 @@ +image boot.vfat { + vfat { + files = { + "bcm2708-rpi-b-plus.dtb", + "bcm2708-rpi-0-w.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "zImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg b/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg new file mode 100644 index 0000000..a3be2a3 --- /dev/null +++ b/buildroot/board/raspberrypi/genimage-raspberrypi2.cfg @@ -0,0 +1,30 @@ +image boot.vfat { + vfat { + files = { + "bcm2709-rpi-2-b.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "zImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/raspberrypi/genimage-raspberrypi3-64.cfg b/buildroot/board/raspberrypi/genimage-raspberrypi3-64.cfg new file mode 100644 index 0000000..c5f8652 --- /dev/null +++ b/buildroot/board/raspberrypi/genimage-raspberrypi3-64.cfg @@ -0,0 +1,31 @@ +image boot.vfat { + vfat { + files = { + "bcm2710-rpi-3-b.dtb", + "bcm2837-rpi-3-b.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "Image" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg b/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg new file mode 100644 index 0000000..98ff709 --- /dev/null +++ b/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg @@ -0,0 +1,32 @@ +image boot.vfat { + vfat { + files = { + "bcm2710-rpi-3-b.dtb", + "bcm2710-rpi-cm3.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "rpi-firmware/overlays", + "zImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/raspberrypi/post-build.sh b/buildroot/board/raspberrypi/post-build.sh new file mode 100755 index 0000000..5e5eb71 --- /dev/null +++ b/buildroot/board/raspberrypi/post-build.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -u +set -e + +# Add a console on tty1 +if [ -e ${TARGET_DIR}/etc/inittab ]; then + grep -qE '^tty1::' ${TARGET_DIR}/etc/inittab || \ + sed -i '/GENERIC_SERIAL/a\ +tty1::respawn:/sbin/getty -L tty1 0 vt100 # HDMI console' ${TARGET_DIR}/etc/inittab +fi diff --git a/buildroot/board/raspberrypi/post-image.sh b/buildroot/board/raspberrypi/post-image.sh new file mode 100755 index 0000000..3c6c938 --- /dev/null +++ b/buildroot/board/raspberrypi/post-image.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -e + +BOARD_DIR="$(dirname $0)" +BOARD_NAME="$(basename ${BOARD_DIR})" +GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +for arg in "$@" +do + case "${arg}" in + --add-pi3-miniuart-bt-overlay) + if ! grep -qE '^dtoverlay=' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + echo "Adding 'dtoverlay=pi3-miniuart-bt' to config.txt (fixes ttyAMA0 serial console)." + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" + +# fixes rpi3 ttyAMA0 serial console +dtoverlay=pi3-miniuart-bt +__EOF__ + fi + ;; + --aarch64) + # Run a 64bits kernel (armv8) + sed -e '/^kernel=/s,=.*,=Image,' -i "${BINARIES_DIR}/rpi-firmware/config.txt" + if ! grep -qE '^arm_control=0x200' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" + +# enable 64bits support +arm_control=0x200 +__EOF__ + fi + + # Enable uart console + if ! grep -qE '^enable_uart=1' "${BINARIES_DIR}/rpi-firmware/config.txt"; then + cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" + +# enable rpi3 ttyS0 serial console +enable_uart=1 +__EOF__ + fi + ;; + --gpu_mem_256=*|--gpu_mem_512=*|--gpu_mem_1024=*) + # Set GPU memory + gpu_mem="${arg:2}" + sed -e "/^${gpu_mem%=*}=/s,=.*,=${gpu_mem##*=}," -i "${BINARIES_DIR}/rpi-firmware/config.txt" + ;; + esac + +done + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/buildroot/board/raspberrypi/readme.txt b/buildroot/board/raspberrypi/readme.txt new file mode 100644 index 0000000..9482693 --- /dev/null +++ b/buildroot/board/raspberrypi/readme.txt @@ -0,0 +1,92 @@ +Raspberry Pi + +Intro +===== + +These instructions apply to all models of the Raspberry Pi: + - the original models A and B, + - the "enhanced" models A+ and B+, + - the model B2 (aka Raspberry Pi 2) + - the model B3 (aka Raspberry Pi 3). + +How to build it +=============== + +Configure Buildroot +------------------- + +There are two RaspberryPi defconfig files in Buildroot, one for each +major variant, which you should base your work on: + +For models A, B, A+ or B+: + + $ make raspberrypi_defconfig + +For model Zero (model A+ in smaller form factor): + + $ make raspberrypi0_defconfig + +For model 2 B: + + $ make raspberrypi2_defconfig + +For model 3 B: + + $ make raspberrypi3_defconfig + +Build the rootfs +---------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while, consider getting yourself a coffee ;-) ) + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- bcm2708-rpi-b.dtb [1] + +-- bcm2708-rpi-b-plus.dtb [1] + +-- bcm2709-rpi-2-b.dtb [1] + +-- bcm2710-rpi-3-b.dtb [1] + +-- boot.vfat + +-- rootfs.ext4 + +-- rpi-firmware/ + | +-- bootcode.bin + | +-- cmdline.txt + | +-- config.txt + | +-- fixup.dat + | +-- start.elf + | `-- overlays/ [2] + +-- sdcard.img + `-- zImage + +[1] Not all of them will be present, depending on the RaspberryPi + model you are using. + +[2] Only for the Raspberry Pi 3 Model (overlay pi3-miniuart-bt is needed + to enable the RPi3 serial console otherwise occupied by the bluetooth + chip). Alternative would be to disable the serial console in cmdline.txt + and /etc/inittab. + +How to write the SD card +======================== + +Once the build process is finished you will have an image called "sdcard.img" +in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX + +Insert the SDcard into your Raspberry Pi, and power it up. Your new system +should come up now and start two consoles: one on the serial port on +the P1 header, one on the HDMI output where you can login using a USB +keyboard. diff --git a/buildroot/board/raspberrypi0 b/buildroot/board/raspberrypi0 new file mode 120000 index 0000000..fcdafc8 --- /dev/null +++ b/buildroot/board/raspberrypi0 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/buildroot/board/raspberrypi2 b/buildroot/board/raspberrypi2 new file mode 120000 index 0000000..fcdafc8 --- /dev/null +++ b/buildroot/board/raspberrypi2 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/buildroot/board/raspberrypi3 b/buildroot/board/raspberrypi3 new file mode 120000 index 0000000..fcdafc8 --- /dev/null +++ b/buildroot/board/raspberrypi3 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/buildroot/board/raspberrypi3-64 b/buildroot/board/raspberrypi3-64 new file mode 120000 index 0000000..fcdafc8 --- /dev/null +++ b/buildroot/board/raspberrypi3-64 @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/buildroot/board/roseapplepi/genimage.cfg b/buildroot/board/roseapplepi/genimage.cfg new file mode 100644 index 0000000..4d40e65 --- /dev/null +++ b/buildroot/board/roseapplepi/genimage.cfg @@ -0,0 +1,43 @@ +# Minimal SD card image for the Roseapple Pi +# +image boot.vfat { + vfat { + files = { + "uEnv.txt", + "uImage" + } + file kernel.dtb { + image = "actduino_bubble_gum_sdboot_linux.dtb" + } + } + size = 10M +} + +image sdcard.img { + hdimage { + } + + partition s500-bootloader { + in-partition-table = "no" + image = "s500-bootloader.bin" + offset = 0x200200 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-dtb.img" + offset = 0x300000 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 512M + } +} diff --git a/buildroot/board/roseapplepi/patches/linux/0001-unbreak-xhci-trace.patch b/buildroot/board/roseapplepi/patches/linux/0001-unbreak-xhci-trace.patch new file mode 100644 index 0000000..79e8c80 --- /dev/null +++ b/buildroot/board/roseapplepi/patches/linux/0001-unbreak-xhci-trace.patch @@ -0,0 +1,31 @@ +[PATCH] unbreak xhci-trace compilation + +When commit 84a99f6fc5d4 (xhci: add traces for debug messages in +xhci_address_device) was backported to the owl tree as part of commit +5b2ea66f15396 (usb: add owl usb driver), the specific CFLAGS needed for +xhci-trace.c were missed, causing build breakage: + + CC drivers/usb/host/xhci-trace.o +In file included from drivers/usb/host/xhci-trace.h:151:0, + from drivers/usb/host/xhci-trace.c:15: +include/trace/define_trace.h:79:43: fatal error: ./xhci-trace.h: No such file or directory + +Signed-off-by: Peter Korsgaard +--- + drivers/usb/host/Makefile | 3 +++ + 1 file changed, 3 insertions(+) + +Index: linux-59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b/drivers/usb/host/Makefile +=================================================================== +--- linux-59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b.orig/drivers/usb/host/Makefile ++++ linux-59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b/drivers/usb/host/Makefile +@@ -4,6 +4,9 @@ + + ccflags-$(CONFIG_USB_DEBUG) := -DDEBUG + ++# tell define_trace.h where to find the xhci trace header ++CFLAGS_xhci-trace.o := -I$(src) ++ + isp1760-y := isp1760-hcd.o isp1760-if.o + + fhci-y := fhci-hcd.o fhci-hub.o fhci-q.o diff --git a/buildroot/board/roseapplepi/patches/linux/0002-kernel-add-support-for-gcc-5.patch b/buildroot/board/roseapplepi/patches/linux/0002-kernel-add-support-for-gcc-5.patch new file mode 100644 index 0000000..8d3c703 --- /dev/null +++ b/buildroot/board/roseapplepi/patches/linux/0002-kernel-add-support-for-gcc-5.patch @@ -0,0 +1,99 @@ +From 96b4fb75d15be65edc5494579e4a944534042f99 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 13 Oct 2014 15:51:05 -0700 +Subject: [PATCH] kernel: add support for gcc 5 + +We're missing include/linux/compiler-gcc5.h which is required now +because gcc branched off to v5 in trunk. + +Just copy the relevant bits out of include/linux/compiler-gcc4.h, +no new code is added as of now. + +This fixes a build error when using gcc 5. + +Signed-off-by: Sasha Levin +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +(cherry picked from commit 71458cfc782eafe4b27656e078d379a34e472adf) +Signed-off-by: Peter Korsgaard +--- + include/linux/compiler-gcc5.h | 66 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 66 insertions(+) + create mode 100644 include/linux/compiler-gcc5.h + +diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h +new file mode 100644 +index 0000000..cdd1cc2 +--- /dev/null ++++ b/include/linux/compiler-gcc5.h +@@ -0,0 +1,66 @@ ++#ifndef __LINUX_COMPILER_H ++#error "Please don't include directly, include instead." ++#endif ++ ++#define __used __attribute__((__used__)) ++#define __must_check __attribute__((warn_unused_result)) ++#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) ++ ++/* Mark functions as cold. gcc will assume any path leading to a call ++ to them will be unlikely. This means a lot of manual unlikely()s ++ are unnecessary now for any paths leading to the usual suspects ++ like BUG(), printk(), panic() etc. [but let's keep them for now for ++ older compilers] ++ ++ Early snapshots of gcc 4.3 don't support this and we can't detect this ++ in the preprocessor, but we can live with this because they're unreleased. ++ Maketime probing would be overkill here. ++ ++ gcc also has a __attribute__((__hot__)) to move hot functions into ++ a special section, but I don't see any sense in this right now in ++ the kernel context */ ++#define __cold __attribute__((__cold__)) ++ ++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ++ ++#ifndef __CHECKER__ ++# define __compiletime_warning(message) __attribute__((warning(message))) ++# define __compiletime_error(message) __attribute__((error(message))) ++#endif /* __CHECKER__ */ ++ ++/* ++ * Mark a position in code as unreachable. This can be used to ++ * suppress control flow warnings after asm blocks that transfer ++ * control elsewhere. ++ * ++ * Early snapshots of gcc 4.5 don't support this and we can't detect ++ * this in the preprocessor, but we can live with this because they're ++ * unreleased. Really, we need to have autoconf for the kernel. ++ */ ++#define unreachable() __builtin_unreachable() ++ ++/* Mark a function definition as prohibited from being cloned. */ ++#define __noclone __attribute__((__noclone__)) ++ ++/* ++ * Tell the optimizer that something else uses this function or variable. ++ */ ++#define __visible __attribute__((externally_visible)) ++ ++/* ++ * GCC 'asm goto' miscompiles certain code sequences: ++ * ++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 ++ * ++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. ++ * Fixed in GCC 4.8.2 and later versions. ++ * ++ * (asm goto is automatically volatile - the naming reflects this.) ++ */ ++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ++ ++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP ++#define __HAVE_BUILTIN_BSWAP32__ ++#define __HAVE_BUILTIN_BSWAP64__ ++#define __HAVE_BUILTIN_BSWAP16__ ++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +-- +2.10.2 + diff --git a/buildroot/board/roseapplepi/patches/linux/0003-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch b/buildroot/board/roseapplepi/patches/linux/0003-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch new file mode 100644 index 0000000..da38f26 --- /dev/null +++ b/buildroot/board/roseapplepi/patches/linux/0003-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch @@ -0,0 +1,54 @@ +From 8ac9a3f6dbf00d861134bea3f2c930defed6311a Mon Sep 17 00:00:00 2001 +From: Behan Webster +Date: Wed, 24 Sep 2014 01:06:46 +0100 +Subject: [PATCH] ARM: 8158/1: LLVMLinux: use static inline in ARM ftrace.h + +With compilers which follow the C99 standard (like modern versions of gcc and +clang), "extern inline" does the wrong thing (emits code for an externally +linkable version of the inline function). In this case using static inline +and removing the NULL version of return_address in return_address.c does +the right thing. + +Signed-off-by: Behan Webster +Reviewed-by: Mark Charlebois +Acked-by: Steven Rostedt +Signed-off-by: Russell King +(cherry picked from commit aeea3592a13bf12861943e44fc48f1f270941f8d) +Signed-off-by: Peter Korsgaard +--- + arch/arm/include/asm/ftrace.h | 2 +- + arch/arm/kernel/return_address.c | 5 ----- + 2 files changed, 1 insertion(+), 6 deletions(-) + +diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h +index f89515a..2bb8cac 100644 +--- a/arch/arm/include/asm/ftrace.h ++++ b/arch/arm/include/asm/ftrace.h +@@ -45,7 +45,7 @@ void *return_address(unsigned int); + + #else + +-extern inline void *return_address(unsigned int level) ++static inline void *return_address(unsigned int level) + { + return NULL; + } +diff --git a/arch/arm/kernel/return_address.c b/arch/arm/kernel/return_address.c +index 2f8f523..a3b587f 100755 +--- a/arch/arm/kernel/return_address.c ++++ b/arch/arm/kernel/return_address.c +@@ -63,11 +63,6 @@ void *return_address(unsigned int level) + //#warning "TODO: return_address should use unwind tables" + //#endif + +-void *return_address(unsigned int level) +-{ +- return NULL; +-} +- + #endif /* if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) / else */ + + EXPORT_SYMBOL_GPL(return_address); +-- +2.10.2 + diff --git a/buildroot/board/roseapplepi/patches/linux/0004-Fix-compile-errors-with-gcc5.patch b/buildroot/board/roseapplepi/patches/linux/0004-Fix-compile-errors-with-gcc5.patch new file mode 100644 index 0000000..d76e285 --- /dev/null +++ b/buildroot/board/roseapplepi/patches/linux/0004-Fix-compile-errors-with-gcc5.patch @@ -0,0 +1,121 @@ +From ef34609395c72a1e777ef9c3fb6ce60aa92976bb Mon Sep 17 00:00:00 2001 +From: Marco Franceschetti +Date: Sun, 13 Mar 2016 09:44:54 +0100 +Subject: [PATCH] Fix compile errors with gcc5 + +(cherry picked from commit e824d45043efd49607f66c89c921b07c1523bf9e) +Signed-off-by: Peter Korsgaard +--- + drivers/net/wireless/actions/rtl8188etv/include/ieee80211.h | 6 +++--- + drivers/net/wireless/actions/rtl8723bs/include/ieee80211.h | 6 +++--- + drivers/net/wireless/actions/rtl8723bs_vq0/include/ieee80211.h | 6 +++--- + drivers/net/wireless/actions/rtl8723bu/include/ieee80211.h | 6 +++--- + 4 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/drivers/net/wireless/actions/rtl8188etv/include/ieee80211.h b/drivers/net/wireless/actions/rtl8188etv/include/ieee80211.h +index fc293c4..0898cd4 100755 +--- a/drivers/net/wireless/actions/rtl8188etv/include/ieee80211.h ++++ b/drivers/net/wireless/actions/rtl8188etv/include/ieee80211.h +@@ -1314,18 +1314,18 @@ enum ieee80211_state { + (((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ + (((Addr[5]) & 0xff) == 0xff)) + #else +-extern __inline int is_multicast_mac_addr(const u8 *addr) ++static __inline int is_multicast_mac_addr(const u8 *addr) + { + return ((addr[0] != 0xff) && (0x01 & addr[0])); + } + +-extern __inline int is_broadcast_mac_addr(const u8 *addr) ++static __inline int is_broadcast_mac_addr(const u8 *addr) + { + return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ + (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); + } + +-extern __inline int is_zero_mac_addr(const u8 *addr) ++static __inline int is_zero_mac_addr(const u8 *addr) + { + return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ + (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); +diff --git a/drivers/net/wireless/actions/rtl8723bs/include/ieee80211.h b/drivers/net/wireless/actions/rtl8723bs/include/ieee80211.h +index 09475ef..56e0f5a 100755 +--- a/drivers/net/wireless/actions/rtl8723bs/include/ieee80211.h ++++ b/drivers/net/wireless/actions/rtl8723bs/include/ieee80211.h +@@ -1318,18 +1318,18 @@ enum ieee80211_state { + (((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ + (((Addr[5]) & 0xff) == 0xff)) + #else +-extern __inline int is_multicast_mac_addr(const u8 *addr) ++static __inline int is_multicast_mac_addr(const u8 *addr) + { + return ((addr[0] != 0xff) && (0x01 & addr[0])); + } + +-extern __inline int is_broadcast_mac_addr(const u8 *addr) ++static __inline int is_broadcast_mac_addr(const u8 *addr) + { + return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ + (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); + } + +-extern __inline int is_zero_mac_addr(const u8 *addr) ++static __inline int is_zero_mac_addr(const u8 *addr) + { + return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ + (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); +diff --git a/drivers/net/wireless/actions/rtl8723bs_vq0/include/ieee80211.h b/drivers/net/wireless/actions/rtl8723bs_vq0/include/ieee80211.h +index 5dfc421..95144b6 100755 +--- a/drivers/net/wireless/actions/rtl8723bs_vq0/include/ieee80211.h ++++ b/drivers/net/wireless/actions/rtl8723bs_vq0/include/ieee80211.h +@@ -1314,18 +1314,18 @@ enum ieee80211_state { + (((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ + (((Addr[5]) & 0xff) == 0xff)) + #else +-extern __inline int is_multicast_mac_addr(const u8 *addr) ++static __inline int is_multicast_mac_addr(const u8 *addr) + { + return ((addr[0] != 0xff) && (0x01 & addr[0])); + } + +-extern __inline int is_broadcast_mac_addr(const u8 *addr) ++static __inline int is_broadcast_mac_addr(const u8 *addr) + { + return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ + (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); + } + +-extern __inline int is_zero_mac_addr(const u8 *addr) ++static __inline int is_zero_mac_addr(const u8 *addr) + { + return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ + (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); +diff --git a/drivers/net/wireless/actions/rtl8723bu/include/ieee80211.h b/drivers/net/wireless/actions/rtl8723bu/include/ieee80211.h +index 09475ef..56e0f5a 100755 +--- a/drivers/net/wireless/actions/rtl8723bu/include/ieee80211.h ++++ b/drivers/net/wireless/actions/rtl8723bu/include/ieee80211.h +@@ -1318,18 +1318,18 @@ enum ieee80211_state { + (((Addr[2]) & 0xff) == 0xff) && (((Addr[3]) & 0xff) == 0xff) && (((Addr[4]) & 0xff) == 0xff) && \ + (((Addr[5]) & 0xff) == 0xff)) + #else +-extern __inline int is_multicast_mac_addr(const u8 *addr) ++static __inline int is_multicast_mac_addr(const u8 *addr) + { + return ((addr[0] != 0xff) && (0x01 & addr[0])); + } + +-extern __inline int is_broadcast_mac_addr(const u8 *addr) ++static __inline int is_broadcast_mac_addr(const u8 *addr) + { + return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ + (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); + } + +-extern __inline int is_zero_mac_addr(const u8 *addr) ++static __inline int is_zero_mac_addr(const u8 *addr) + { + return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ + (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); +-- +2.10.2 + diff --git a/buildroot/board/roseapplepi/patches/linux/0005-compiler-gcc-integrate-the-various-compiler-gcc-345-.patch b/buildroot/board/roseapplepi/patches/linux/0005-compiler-gcc-integrate-the-various-compiler-gcc-345-.patch new file mode 100644 index 0000000..791dd93 --- /dev/null +++ b/buildroot/board/roseapplepi/patches/linux/0005-compiler-gcc-integrate-the-various-compiler-gcc-345-.patch @@ -0,0 +1,363 @@ +From 21be6b635320321216dde9201fa57a3aed60ee12 Mon Sep 17 00:00:00 2001 +From: Joe Perches +Date: Thu, 25 Jun 2015 15:01:02 -0700 +Subject: [PATCH] compiler-gcc: integrate the various compiler-gcc[345].h files + +As gcc major version numbers are going to advance rather rapidly in the +future, there's no real value in separate files for each compiler +version. + +Deduplicate some of the macros #defined in each file too. + +Neaten comments using normal kernel commenting style. + +Signed-off-by: Joe Perches +Cc: Andi Kleen +Cc: Michal Marek +Cc: Segher Boessenkool +Cc: Sasha Levin +Cc: Anton Blanchard +Cc: Alan Modra +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +(cherry picked from commit cb984d101b30eb7478d32df56a0023e4603cba7f) +Signed-off-by: Peter Korsgaard +--- + include/linux/compiler-gcc.h | 120 ++++++++++++++++++++++++++++++++++++++++-- + include/linux/compiler-gcc3.h | 23 -------- + include/linux/compiler-gcc4.h | 88 ------------------------------- + include/linux/compiler-gcc5.h | 66 ----------------------- + 4 files changed, 116 insertions(+), 181 deletions(-) + delete mode 100644 include/linux/compiler-gcc3.h + delete mode 100644 include/linux/compiler-gcc4.h + delete mode 100644 include/linux/compiler-gcc5.h + +diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h +index 24545cd90a25..0c5d746850c2 100644 +--- a/include/linux/compiler-gcc.h ++++ b/include/linux/compiler-gcc.h +@@ -97,10 +97,122 @@ + #define __maybe_unused __attribute__((unused)) + #define __always_unused __attribute__((unused)) + +-#define __gcc_header(x) #x +-#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h) +-#define gcc_header(x) _gcc_header(x) +-#include gcc_header(__GNUC__) ++/* gcc version specific checks */ ++ ++#if GCC_VERSION < 30200 ++# error Sorry, your compiler is too old - please upgrade it. ++#endif ++ ++#if GCC_VERSION < 30300 ++# define __used __attribute__((__unused__)) ++#else ++# define __used __attribute__((__used__)) ++#endif ++ ++#ifdef CONFIG_GCOV_KERNEL ++# if GCC_VERSION < 30400 ++# error "GCOV profiling support for gcc versions below 3.4 not included" ++# endif /* __GNUC_MINOR__ */ ++#endif /* CONFIG_GCOV_KERNEL */ ++ ++#if GCC_VERSION >= 30400 ++#define __must_check __attribute__((warn_unused_result)) ++#endif ++ ++#if GCC_VERSION >= 40000 ++ ++/* GCC 4.1.[01] miscompiles __weak */ ++#ifdef __KERNEL__ ++# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 ++# error Your version of gcc miscompiles the __weak directive ++# endif ++#endif ++ ++#define __used __attribute__((__used__)) ++#define __compiler_offsetof(a, b) \ ++ __builtin_offsetof(a, b) ++ ++#if GCC_VERSION >= 40100 && GCC_VERSION < 40600 ++# define __compiletime_object_size(obj) __builtin_object_size(obj, 0) ++#endif ++ ++#if GCC_VERSION >= 40300 ++/* Mark functions as cold. gcc will assume any path leading to a call ++ * to them will be unlikely. This means a lot of manual unlikely()s ++ * are unnecessary now for any paths leading to the usual suspects ++ * like BUG(), printk(), panic() etc. [but let's keep them for now for ++ * older compilers] ++ * ++ * Early snapshots of gcc 4.3 don't support this and we can't detect this ++ * in the preprocessor, but we can live with this because they're unreleased. ++ * Maketime probing would be overkill here. ++ * ++ * gcc also has a __attribute__((__hot__)) to move hot functions into ++ * a special section, but I don't see any sense in this right now in ++ * the kernel context ++ */ ++#define __cold __attribute__((__cold__)) ++ ++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ++ ++#ifndef __CHECKER__ ++# define __compiletime_warning(message) __attribute__((warning(message))) ++# define __compiletime_error(message) __attribute__((error(message))) ++#endif /* __CHECKER__ */ ++#endif /* GCC_VERSION >= 40300 */ ++ ++#if GCC_VERSION >= 40500 ++/* ++ * Mark a position in code as unreachable. This can be used to ++ * suppress control flow warnings after asm blocks that transfer ++ * control elsewhere. ++ * ++ * Early snapshots of gcc 4.5 don't support this and we can't detect ++ * this in the preprocessor, but we can live with this because they're ++ * unreleased. Really, we need to have autoconf for the kernel. ++ */ ++#define unreachable() __builtin_unreachable() ++ ++/* Mark a function definition as prohibited from being cloned. */ ++#define __noclone __attribute__((__noclone__)) ++ ++#endif /* GCC_VERSION >= 40500 */ ++ ++#if GCC_VERSION >= 40600 ++/* ++ * Tell the optimizer that something else uses this function or variable. ++ */ ++#define __visible __attribute__((externally_visible)) ++#endif ++ ++/* ++ * GCC 'asm goto' miscompiles certain code sequences: ++ * ++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 ++ * ++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. ++ * ++ * (asm goto is automatically volatile - the naming reflects this.) ++ */ ++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ++ ++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP ++#if GCC_VERSION >= 40400 ++#define __HAVE_BUILTIN_BSWAP32__ ++#define __HAVE_BUILTIN_BSWAP64__ ++#endif ++#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) ++#define __HAVE_BUILTIN_BSWAP16__ ++#endif ++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ ++ ++#if GCC_VERSION >= 50000 ++#define KASAN_ABI_VERSION 4 ++#elif GCC_VERSION >= 40902 ++#define KASAN_ABI_VERSION 3 ++#endif ++ ++#endif /* gcc version >= 40000 specific checks */ + + #if !defined(__noclone) + #define __noclone /* not needed */ +diff --git a/include/linux/compiler-gcc3.h b/include/linux/compiler-gcc3.h +deleted file mode 100644 +index 7d89febe4d79..000000000000 +--- a/include/linux/compiler-gcc3.h ++++ /dev/null +@@ -1,23 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-#if GCC_VERSION < 30200 +-# error Sorry, your compiler is too old - please upgrade it. +-#endif +- +-#if GCC_VERSION >= 30300 +-# define __used __attribute__((__used__)) +-#else +-# define __used __attribute__((__unused__)) +-#endif +- +-#if GCC_VERSION >= 30400 +-#define __must_check __attribute__((warn_unused_result)) +-#endif +- +-#ifdef CONFIG_GCOV_KERNEL +-# if GCC_VERSION < 30400 +-# error "GCOV profiling support for gcc versions below 3.4 not included" +-# endif /* __GNUC_MINOR__ */ +-#endif /* CONFIG_GCOV_KERNEL */ +diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h +deleted file mode 100644 +index 2507fd2a1eb4..000000000000 +--- a/include/linux/compiler-gcc4.h ++++ /dev/null +@@ -1,88 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-/* GCC 4.1.[01] miscompiles __weak */ +-#ifdef __KERNEL__ +-# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 +-# error Your version of gcc miscompiles the __weak directive +-# endif +-#endif +- +-#define __used __attribute__((__used__)) +-#define __must_check __attribute__((warn_unused_result)) +-#define __compiler_offsetof(a,b) __builtin_offsetof(a,b) +- +-#if GCC_VERSION >= 40100 && GCC_VERSION < 40600 +-# define __compiletime_object_size(obj) __builtin_object_size(obj, 0) +-#endif +- +-#if GCC_VERSION >= 40300 +-/* Mark functions as cold. gcc will assume any path leading to a call +- to them will be unlikely. This means a lot of manual unlikely()s +- are unnecessary now for any paths leading to the usual suspects +- like BUG(), printk(), panic() etc. [but let's keep them for now for +- older compilers] +- +- Early snapshots of gcc 4.3 don't support this and we can't detect this +- in the preprocessor, but we can live with this because they're unreleased. +- Maketime probing would be overkill here. +- +- gcc also has a __attribute__((__hot__)) to move hot functions into +- a special section, but I don't see any sense in this right now in +- the kernel context */ +-#define __cold __attribute__((__cold__)) +- +-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +- +-#ifndef __CHECKER__ +-# define __compiletime_warning(message) __attribute__((warning(message))) +-# define __compiletime_error(message) __attribute__((error(message))) +-#endif /* __CHECKER__ */ +-#endif /* GCC_VERSION >= 40300 */ +- +-#if GCC_VERSION >= 40500 +-/* +- * Mark a position in code as unreachable. This can be used to +- * suppress control flow warnings after asm blocks that transfer +- * control elsewhere. +- * +- * Early snapshots of gcc 4.5 don't support this and we can't detect +- * this in the preprocessor, but we can live with this because they're +- * unreleased. Really, we need to have autoconf for the kernel. +- */ +-#define unreachable() __builtin_unreachable() +- +-/* Mark a function definition as prohibited from being cloned. */ +-#define __noclone __attribute__((__noclone__)) +- +-#endif /* GCC_VERSION >= 40500 */ +- +-#if GCC_VERSION >= 40600 +-/* +- * Tell the optimizer that something else uses this function or variable. +- */ +-#define __visible __attribute__((externally_visible)) +-#endif +- +-/* +- * GCC 'asm goto' miscompiles certain code sequences: +- * +- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 +- * +- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. +- * Fixed in GCC 4.8.2 and later versions. +- * +- * (asm goto is automatically volatile - the naming reflects this.) +- */ +-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) +- +-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +-#if GCC_VERSION >= 40400 +-#define __HAVE_BUILTIN_BSWAP32__ +-#define __HAVE_BUILTIN_BSWAP64__ +-#endif +-#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) +-#define __HAVE_BUILTIN_BSWAP16__ +-#endif +-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h +deleted file mode 100644 +index cdd1cc202d51..000000000000 +--- a/include/linux/compiler-gcc5.h ++++ /dev/null +@@ -1,66 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-#define __used __attribute__((__used__)) +-#define __must_check __attribute__((warn_unused_result)) +-#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) +- +-/* Mark functions as cold. gcc will assume any path leading to a call +- to them will be unlikely. This means a lot of manual unlikely()s +- are unnecessary now for any paths leading to the usual suspects +- like BUG(), printk(), panic() etc. [but let's keep them for now for +- older compilers] +- +- Early snapshots of gcc 4.3 don't support this and we can't detect this +- in the preprocessor, but we can live with this because they're unreleased. +- Maketime probing would be overkill here. +- +- gcc also has a __attribute__((__hot__)) to move hot functions into +- a special section, but I don't see any sense in this right now in +- the kernel context */ +-#define __cold __attribute__((__cold__)) +- +-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +- +-#ifndef __CHECKER__ +-# define __compiletime_warning(message) __attribute__((warning(message))) +-# define __compiletime_error(message) __attribute__((error(message))) +-#endif /* __CHECKER__ */ +- +-/* +- * Mark a position in code as unreachable. This can be used to +- * suppress control flow warnings after asm blocks that transfer +- * control elsewhere. +- * +- * Early snapshots of gcc 4.5 don't support this and we can't detect +- * this in the preprocessor, but we can live with this because they're +- * unreleased. Really, we need to have autoconf for the kernel. +- */ +-#define unreachable() __builtin_unreachable() +- +-/* Mark a function definition as prohibited from being cloned. */ +-#define __noclone __attribute__((__noclone__)) +- +-/* +- * Tell the optimizer that something else uses this function or variable. +- */ +-#define __visible __attribute__((externally_visible)) +- +-/* +- * GCC 'asm goto' miscompiles certain code sequences: +- * +- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 +- * +- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. +- * Fixed in GCC 4.8.2 and later versions. +- * +- * (asm goto is automatically volatile - the naming reflects this.) +- */ +-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) +- +-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +-#define __HAVE_BUILTIN_BSWAP32__ +-#define __HAVE_BUILTIN_BSWAP64__ +-#define __HAVE_BUILTIN_BSWAP16__ +-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +-- +2.11.0 + diff --git a/buildroot/board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch b/buildroot/board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch new file mode 100644 index 0000000..ae19a49 --- /dev/null +++ b/buildroot/board/roseapplepi/patches/uboot/0001-compiler-.h-sync-include-linux-compiler-.h-with-Linu.patch @@ -0,0 +1,809 @@ +From 9b2c282b348dfe966bbba967dc7a45ce817cce50 Mon Sep 17 00:00:00 2001 +From: Tom Rini +Date: Mon, 29 Feb 2016 11:34:15 -0500 +Subject: [PATCH] compiler*.h: sync include/linux/compiler*.h with Linux + 4.5-rc6 + +Copy these from Linux v4.5-rc6 tag. + +This is needed so that we can keep up with newer gcc versions. Note +that we don't have the uapi/ hierarchy from the kernel so continue to +use + +Signed-off-by: Tom Rini +Signed-off-by: Peter Korsgaard +--- + include/linux/compiler-gcc.h | 259 ++++++++++++++++++++++++++++++++--------- + include/linux/compiler-gcc3.h | 23 ---- + include/linux/compiler-gcc4.h | 88 -------------- + include/linux/compiler-gcc5.h | 65 ----------- + include/linux/compiler-intel.h | 5 + + include/linux/compiler.h | 178 ++++++++++++++++++++++++++-- + 6 files changed, 383 insertions(+), 235 deletions(-) + delete mode 100644 include/linux/compiler-gcc3.h + delete mode 100644 include/linux/compiler-gcc4.h + delete mode 100644 include/linux/compiler-gcc5.h + +diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h +index e057bd2a84..22ab246fee 100644 +--- a/include/linux/compiler-gcc.h ++++ b/include/linux/compiler-gcc.h +@@ -5,14 +5,28 @@ + /* + * Common definitions for all gcc versions go here. + */ +-#define GCC_VERSION (__GNUC__ * 10000 \ +- + __GNUC_MINOR__ * 100 \ +- + __GNUC_PATCHLEVEL__) +- ++#define GCC_VERSION (__GNUC__ * 10000 \ ++ + __GNUC_MINOR__ * 100 \ ++ + __GNUC_PATCHLEVEL__) + + /* Optimization barrier */ ++ + /* The "volatile" is due to gcc bugs */ + #define barrier() __asm__ __volatile__("": : :"memory") ++/* ++ * This version is i.e. to prevent dead stores elimination on @ptr ++ * where gcc and llvm may behave differently when otherwise using ++ * normal barrier(): while gcc behavior gets along with a normal ++ * barrier(), llvm needs an explicit input variable to be assumed ++ * clobbered. The issue is as follows: while the inline asm might ++ * access any memory it wants, the compiler could have fit all of ++ * @ptr into memory registers instead, and since @ptr never escaped ++ * from that, it proofed that the inline asm wasn't touching any of ++ * it. This version works well with both compilers, i.e. we're telling ++ * the compiler that the inline asm absolutely may see the contents ++ * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495 ++ */ ++#define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory") + + /* + * This macro obfuscates arithmetic on a variable address so that gcc +@@ -32,58 +46,63 @@ + * the inline assembly constraint from =g to =r, in this particular + * case either is valid. + */ +-#define RELOC_HIDE(ptr, off) \ +- ({ unsigned long __ptr; \ +- __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ +- (typeof(ptr)) (__ptr + (off)); }) ++#define RELOC_HIDE(ptr, off) \ ++({ \ ++ unsigned long __ptr; \ ++ __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ ++ (typeof(ptr)) (__ptr + (off)); \ ++}) + + /* Make the optimizer believe the variable can be manipulated arbitrarily. */ +-#define OPTIMIZER_HIDE_VAR(var) __asm__ ("" : "=r" (var) : "0" (var)) ++#define OPTIMIZER_HIDE_VAR(var) \ ++ __asm__ ("" : "=r" (var) : "0" (var)) + + #ifdef __CHECKER__ +-#define __must_be_array(arr) 0 ++#define __must_be_array(a) 0 + #else + /* &a[0] degrades to a pointer: a different type from an array */ +-#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) ++#define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) + #endif + + /* + * Force always-inline if the user requests it so via the .config, + * or if gcc is too old: + */ +-#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \ ++#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \ + !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4) +-# define inline inline __attribute__((always_inline)) notrace +-# define __inline__ __inline__ __attribute__((always_inline)) notrace +-# define __inline __inline __attribute__((always_inline)) notrace ++#define inline inline __attribute__((always_inline)) notrace ++#define __inline__ __inline__ __attribute__((always_inline)) notrace ++#define __inline __inline __attribute__((always_inline)) notrace + #else + /* A lot of inline functions can cause havoc with function tracing */ +-# define inline inline notrace +-# define __inline__ __inline__ notrace +-# define __inline __inline notrace ++#define inline inline notrace ++#define __inline__ __inline__ notrace ++#define __inline __inline notrace + #endif + +-#define __deprecated __attribute__((deprecated)) +-#ifndef __packed +-#define __packed __attribute__((packed)) +-#endif +-#ifndef __weak +-#define __weak __attribute__((weak)) +-#endif ++#define __always_inline inline __attribute__((always_inline)) ++#define noinline __attribute__((noinline)) ++ ++#define __deprecated __attribute__((deprecated)) ++#define __packed __attribute__((packed)) ++#define __weak __attribute__((weak)) ++#define __alias(symbol) __attribute__((alias(#symbol))) + + /* +- * it doesn't make sense on ARM (currently the only user of __naked) to trace +- * naked functions because then mcount is called without stack and frame pointer +- * being set up and there is no chance to restore the lr register to the value +- * before mcount was called. ++ * it doesn't make sense on ARM (currently the only user of __naked) ++ * to trace naked functions because then mcount is called without ++ * stack and frame pointer being set up and there is no chance to ++ * restore the lr register to the value before mcount was called. ++ * ++ * The asm() bodies of naked functions often depend on standard calling ++ * conventions, therefore they must be noinline and noclone. + * +- * The asm() bodies of naked functions often depend on standard calling conventions, +- * therefore they must be noinline and noclone. GCC 4.[56] currently fail to enforce +- * this, so we must do so ourselves. See GCC PR44290. ++ * GCC 4.[56] currently fail to enforce this, so we must do so ourselves. ++ * See GCC PR44290. + */ +-#define __naked __attribute__((naked)) noinline __noclone notrace ++#define __naked __attribute__((naked)) noinline __noclone notrace + +-#define __noreturn __attribute__((noreturn)) ++#define __noreturn __attribute__((noreturn)) + + /* + * From the GCC manual: +@@ -95,34 +114,170 @@ + * would be. + * [...] + */ +-#ifndef __pure +-#define __pure __attribute__((pure)) ++#define __pure __attribute__((pure)) ++#define __aligned(x) __attribute__((aligned(x))) ++#define __printf(a, b) __attribute__((format(printf, a, b))) ++#define __scanf(a, b) __attribute__((format(scanf, a, b))) ++#define __attribute_const__ __attribute__((__const__)) ++#define __maybe_unused __attribute__((unused)) ++#define __always_unused __attribute__((unused)) ++ ++/* gcc version specific checks */ ++ ++#if GCC_VERSION < 30200 ++# error Sorry, your compiler is too old - please upgrade it. ++#endif ++ ++#if GCC_VERSION < 30300 ++# define __used __attribute__((__unused__)) ++#else ++# define __used __attribute__((__used__)) ++#endif ++ ++#ifdef CONFIG_GCOV_KERNEL ++# if GCC_VERSION < 30400 ++# error "GCOV profiling support for gcc versions below 3.4 not included" ++# endif /* __GNUC_MINOR__ */ ++#endif /* CONFIG_GCOV_KERNEL */ ++ ++#if GCC_VERSION >= 30400 ++#define __must_check __attribute__((warn_unused_result)) ++#endif ++ ++#if GCC_VERSION >= 40000 ++ ++/* GCC 4.1.[01] miscompiles __weak */ ++#ifdef __KERNEL__ ++# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 ++# error Your version of gcc miscompiles the __weak directive ++# endif ++#endif ++ ++#define __used __attribute__((__used__)) ++#define __compiler_offsetof(a, b) \ ++ __builtin_offsetof(a, b) ++ ++#if GCC_VERSION >= 40100 && GCC_VERSION < 40600 ++# define __compiletime_object_size(obj) __builtin_object_size(obj, 0) ++#endif ++ ++#if GCC_VERSION >= 40300 ++/* Mark functions as cold. gcc will assume any path leading to a call ++ * to them will be unlikely. This means a lot of manual unlikely()s ++ * are unnecessary now for any paths leading to the usual suspects ++ * like BUG(), printk(), panic() etc. [but let's keep them for now for ++ * older compilers] ++ * ++ * Early snapshots of gcc 4.3 don't support this and we can't detect this ++ * in the preprocessor, but we can live with this because they're unreleased. ++ * Maketime probing would be overkill here. ++ * ++ * gcc also has a __attribute__((__hot__)) to move hot functions into ++ * a special section, but I don't see any sense in this right now in ++ * the kernel context ++ */ ++#define __cold __attribute__((__cold__)) ++ ++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) ++ ++#ifndef __CHECKER__ ++# define __compiletime_warning(message) __attribute__((warning(message))) ++# define __compiletime_error(message) __attribute__((error(message))) ++#endif /* __CHECKER__ */ ++#endif /* GCC_VERSION >= 40300 */ ++ ++#if GCC_VERSION >= 40500 ++/* ++ * Mark a position in code as unreachable. This can be used to ++ * suppress control flow warnings after asm blocks that transfer ++ * control elsewhere. ++ * ++ * Early snapshots of gcc 4.5 don't support this and we can't detect ++ * this in the preprocessor, but we can live with this because they're ++ * unreleased. Really, we need to have autoconf for the kernel. ++ */ ++#define unreachable() __builtin_unreachable() ++ ++/* Mark a function definition as prohibited from being cloned. */ ++#define __noclone __attribute__((__noclone__)) ++ ++#endif /* GCC_VERSION >= 40500 */ ++ ++#if GCC_VERSION >= 40600 ++/* ++ * When used with Link Time Optimization, gcc can optimize away C functions or ++ * variables which are referenced only from assembly code. __visible tells the ++ * optimizer that something else uses this function or variable, thus preventing ++ * this. ++ */ ++#define __visible __attribute__((externally_visible)) + #endif +-#ifndef __aligned +-#define __aligned(x) __attribute__((aligned(x))) ++ ++ ++#if GCC_VERSION >= 40900 && !defined(__CHECKER__) ++/* ++ * __assume_aligned(n, k): Tell the optimizer that the returned ++ * pointer can be assumed to be k modulo n. The second argument is ++ * optional (default 0), so we use a variadic macro to make the ++ * shorthand. ++ * ++ * Beware: Do not apply this to functions which may return ++ * ERR_PTRs. Also, it is probably unwise to apply it to functions ++ * returning extra information in the low bits (but in that case the ++ * compiler should see some alignment anyway, when the return value is ++ * massaged by 'flags = ptr & 3; ptr &= ~3;'). ++ */ ++#define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__))) + #endif +-#define __printf(a, b) __attribute__((format(printf, a, b))) +-#define __scanf(a, b) __attribute__((format(scanf, a, b))) +-#define noinline __attribute__((noinline)) +-#define __attribute_const__ __attribute__((__const__)) +-#define __maybe_unused __attribute__((unused)) +-#define __always_unused __attribute__((unused)) + +-#define __gcc_header(x) #x +-#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h) +-#define gcc_header(x) _gcc_header(x) +-#include gcc_header(__GNUC__) ++/* ++ * GCC 'asm goto' miscompiles certain code sequences: ++ * ++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 ++ * ++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. ++ * ++ * (asm goto is automatically volatile - the naming reflects this.) ++ */ ++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ++ ++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP ++#if GCC_VERSION >= 40400 ++#define __HAVE_BUILTIN_BSWAP32__ ++#define __HAVE_BUILTIN_BSWAP64__ ++#endif ++#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) ++#define __HAVE_BUILTIN_BSWAP16__ ++#endif ++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ ++ ++#if GCC_VERSION >= 50000 ++#define KASAN_ABI_VERSION 4 ++#elif GCC_VERSION >= 40902 ++#define KASAN_ABI_VERSION 3 ++#endif ++ ++#if GCC_VERSION >= 40902 ++/* ++ * Tell the compiler that address safety instrumentation (KASAN) ++ * should not be applied to that function. ++ * Conflicts with inlining: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368 ++ */ ++#define __no_sanitize_address __attribute__((no_sanitize_address)) ++#endif ++ ++#endif /* gcc version >= 40000 specific checks */ + + #if !defined(__noclone) + #define __noclone /* not needed */ + #endif + ++#if !defined(__no_sanitize_address) ++#define __no_sanitize_address ++#endif ++ + /* + * A trick to suppress uninitialized variable warning without generating any + * code + */ + #define uninitialized_var(x) x = x +- +-#ifndef __always_inline +-#define __always_inline inline __attribute__((always_inline)) +-#endif +diff --git a/include/linux/compiler-gcc3.h b/include/linux/compiler-gcc3.h +deleted file mode 100644 +index 7d89febe4d..0000000000 +--- a/include/linux/compiler-gcc3.h ++++ /dev/null +@@ -1,23 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-#if GCC_VERSION < 30200 +-# error Sorry, your compiler is too old - please upgrade it. +-#endif +- +-#if GCC_VERSION >= 30300 +-# define __used __attribute__((__used__)) +-#else +-# define __used __attribute__((__unused__)) +-#endif +- +-#if GCC_VERSION >= 30400 +-#define __must_check __attribute__((warn_unused_result)) +-#endif +- +-#ifdef CONFIG_GCOV_KERNEL +-# if GCC_VERSION < 30400 +-# error "GCOV profiling support for gcc versions below 3.4 not included" +-# endif /* __GNUC_MINOR__ */ +-#endif /* CONFIG_GCOV_KERNEL */ +diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h +deleted file mode 100644 +index 2507fd2a1e..0000000000 +--- a/include/linux/compiler-gcc4.h ++++ /dev/null +@@ -1,88 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-/* GCC 4.1.[01] miscompiles __weak */ +-#ifdef __KERNEL__ +-# if GCC_VERSION >= 40100 && GCC_VERSION <= 40101 +-# error Your version of gcc miscompiles the __weak directive +-# endif +-#endif +- +-#define __used __attribute__((__used__)) +-#define __must_check __attribute__((warn_unused_result)) +-#define __compiler_offsetof(a,b) __builtin_offsetof(a,b) +- +-#if GCC_VERSION >= 40100 && GCC_VERSION < 40600 +-# define __compiletime_object_size(obj) __builtin_object_size(obj, 0) +-#endif +- +-#if GCC_VERSION >= 40300 +-/* Mark functions as cold. gcc will assume any path leading to a call +- to them will be unlikely. This means a lot of manual unlikely()s +- are unnecessary now for any paths leading to the usual suspects +- like BUG(), printk(), panic() etc. [but let's keep them for now for +- older compilers] +- +- Early snapshots of gcc 4.3 don't support this and we can't detect this +- in the preprocessor, but we can live with this because they're unreleased. +- Maketime probing would be overkill here. +- +- gcc also has a __attribute__((__hot__)) to move hot functions into +- a special section, but I don't see any sense in this right now in +- the kernel context */ +-#define __cold __attribute__((__cold__)) +- +-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +- +-#ifndef __CHECKER__ +-# define __compiletime_warning(message) __attribute__((warning(message))) +-# define __compiletime_error(message) __attribute__((error(message))) +-#endif /* __CHECKER__ */ +-#endif /* GCC_VERSION >= 40300 */ +- +-#if GCC_VERSION >= 40500 +-/* +- * Mark a position in code as unreachable. This can be used to +- * suppress control flow warnings after asm blocks that transfer +- * control elsewhere. +- * +- * Early snapshots of gcc 4.5 don't support this and we can't detect +- * this in the preprocessor, but we can live with this because they're +- * unreleased. Really, we need to have autoconf for the kernel. +- */ +-#define unreachable() __builtin_unreachable() +- +-/* Mark a function definition as prohibited from being cloned. */ +-#define __noclone __attribute__((__noclone__)) +- +-#endif /* GCC_VERSION >= 40500 */ +- +-#if GCC_VERSION >= 40600 +-/* +- * Tell the optimizer that something else uses this function or variable. +- */ +-#define __visible __attribute__((externally_visible)) +-#endif +- +-/* +- * GCC 'asm goto' miscompiles certain code sequences: +- * +- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 +- * +- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. +- * Fixed in GCC 4.8.2 and later versions. +- * +- * (asm goto is automatically volatile - the naming reflects this.) +- */ +-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) +- +-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +-#if GCC_VERSION >= 40400 +-#define __HAVE_BUILTIN_BSWAP32__ +-#define __HAVE_BUILTIN_BSWAP64__ +-#endif +-#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) +-#define __HAVE_BUILTIN_BSWAP16__ +-#endif +-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h +deleted file mode 100644 +index c8c5659525..0000000000 +--- a/include/linux/compiler-gcc5.h ++++ /dev/null +@@ -1,65 +0,0 @@ +-#ifndef __LINUX_COMPILER_H +-#error "Please don't include directly, include instead." +-#endif +- +-#define __used __attribute__((__used__)) +-#define __must_check __attribute__((warn_unused_result)) +-#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) +- +-/* Mark functions as cold. gcc will assume any path leading to a call +- to them will be unlikely. This means a lot of manual unlikely()s +- are unnecessary now for any paths leading to the usual suspects +- like BUG(), printk(), panic() etc. [but let's keep them for now for +- older compilers] +- +- Early snapshots of gcc 4.3 don't support this and we can't detect this +- in the preprocessor, but we can live with this because they're unreleased. +- Maketime probing would be overkill here. +- +- gcc also has a __attribute__((__hot__)) to move hot functions into +- a special section, but I don't see any sense in this right now in +- the kernel context */ +-#define __cold __attribute__((__cold__)) +- +-#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +- +-#ifndef __CHECKER__ +-# define __compiletime_warning(message) __attribute__((warning(message))) +-# define __compiletime_error(message) __attribute__((error(message))) +-#endif /* __CHECKER__ */ +- +-/* +- * Mark a position in code as unreachable. This can be used to +- * suppress control flow warnings after asm blocks that transfer +- * control elsewhere. +- * +- * Early snapshots of gcc 4.5 don't support this and we can't detect +- * this in the preprocessor, but we can live with this because they're +- * unreleased. Really, we need to have autoconf for the kernel. +- */ +-#define unreachable() __builtin_unreachable() +- +-/* Mark a function definition as prohibited from being cloned. */ +-#define __noclone __attribute__((__noclone__)) +- +-/* +- * Tell the optimizer that something else uses this function or variable. +- */ +-#define __visible __attribute__((externally_visible)) +- +-/* +- * GCC 'asm goto' miscompiles certain code sequences: +- * +- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 +- * +- * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. +- * +- * (asm goto is automatically volatile - the naming reflects this.) +- */ +-#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) +- +-#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +-#define __HAVE_BUILTIN_BSWAP32__ +-#define __HAVE_BUILTIN_BSWAP64__ +-#define __HAVE_BUILTIN_BSWAP16__ +-#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ +diff --git a/include/linux/compiler-intel.h b/include/linux/compiler-intel.h +index ba147a1727..d4c71132d0 100644 +--- a/include/linux/compiler-intel.h ++++ b/include/linux/compiler-intel.h +@@ -13,9 +13,14 @@ + /* Intel ECC compiler doesn't support gcc specific asm stmts. + * It uses intrinsics to do the equivalent things. + */ ++#undef barrier ++#undef barrier_data + #undef RELOC_HIDE + #undef OPTIMIZER_HIDE_VAR + ++#define barrier() __memory_barrier() ++#define barrier_data(ptr) barrier() ++ + #define RELOC_HIDE(ptr, off) \ + ({ unsigned long __ptr; \ + __ptr = (unsigned long) (ptr); \ +diff --git a/include/linux/compiler.h b/include/linux/compiler.h +index d5ad7b1118..020ad16a04 100644 +--- a/include/linux/compiler.h ++++ b/include/linux/compiler.h +@@ -17,6 +17,7 @@ + # define __release(x) __context__(x,-1) + # define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) + # define __percpu __attribute__((noderef, address_space(3))) ++# define __pmem __attribute__((noderef, address_space(5))) + #ifdef CONFIG_SPARSE_RCU_POINTER + # define __rcu __attribute__((noderef, address_space(4))) + #else +@@ -42,6 +43,7 @@ extern void __chk_io_ptr(const volatile void __iomem *); + # define __cond_lock(x,c) (c) + # define __percpu + # define __rcu ++# define __pmem + #endif + + /* Indirect macros required for expanded argument pasting, eg. __LINE__. */ +@@ -54,7 +56,11 @@ extern void __chk_io_ptr(const volatile void __iomem *); + #include + #endif + ++#if defined(CC_USING_HOTPATCH) && !defined(__CHECKER__) ++#define notrace __attribute__((hotpatch(0,0))) ++#else + #define notrace __attribute__((no_instrument_function)) ++#endif + + /* Intel compiler defines __GNUC__. So we will overwrite implementations + * coming from above header files here +@@ -138,7 +144,7 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + */ + #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) ) + #define __trace_if(cond) \ +- if (__builtin_constant_p((cond)) ? !!(cond) : \ ++ if (__builtin_constant_p(!!(cond)) ? !!(cond) : \ + ({ \ + int ______r; \ + static struct ftrace_branch_data \ +@@ -165,6 +171,10 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + # define barrier() __memory_barrier() + #endif + ++#ifndef barrier_data ++# define barrier_data(ptr) barrier() ++#endif ++ + /* Unreachable code */ + #ifndef unreachable + # define unreachable() do { } while (1) +@@ -186,6 +196,126 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + # define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __LINE__) + #endif + ++#include ++ ++#define __READ_ONCE_SIZE \ ++({ \ ++ switch (size) { \ ++ case 1: *(__u8 *)res = *(volatile __u8 *)p; break; \ ++ case 2: *(__u16 *)res = *(volatile __u16 *)p; break; \ ++ case 4: *(__u32 *)res = *(volatile __u32 *)p; break; \ ++ case 8: *(__u64 *)res = *(volatile __u64 *)p; break; \ ++ default: \ ++ barrier(); \ ++ __builtin_memcpy((void *)res, (const void *)p, size); \ ++ barrier(); \ ++ } \ ++}) ++ ++static __always_inline ++void __read_once_size(const volatile void *p, void *res, int size) ++{ ++ __READ_ONCE_SIZE; ++} ++ ++#ifdef CONFIG_KASAN ++/* ++ * This function is not 'inline' because __no_sanitize_address confilcts ++ * with inlining. Attempt to inline it may cause a build failure. ++ * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368 ++ * '__maybe_unused' allows us to avoid defined-but-not-used warnings. ++ */ ++static __no_sanitize_address __maybe_unused ++void __read_once_size_nocheck(const volatile void *p, void *res, int size) ++{ ++ __READ_ONCE_SIZE; ++} ++#else ++static __always_inline ++void __read_once_size_nocheck(const volatile void *p, void *res, int size) ++{ ++ __READ_ONCE_SIZE; ++} ++#endif ++ ++static __always_inline void __write_once_size(volatile void *p, void *res, int size) ++{ ++ switch (size) { ++ case 1: *(volatile __u8 *)p = *(__u8 *)res; break; ++ case 2: *(volatile __u16 *)p = *(__u16 *)res; break; ++ case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ++ case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ++ default: ++ barrier(); ++ __builtin_memcpy((void *)p, (const void *)res, size); ++ barrier(); ++ } ++} ++ ++/* ++ * Prevent the compiler from merging or refetching reads or writes. The ++ * compiler is also forbidden from reordering successive instances of ++ * READ_ONCE, WRITE_ONCE and ACCESS_ONCE (see below), but only when the ++ * compiler is aware of some particular ordering. One way to make the ++ * compiler aware of ordering is to put the two invocations of READ_ONCE, ++ * WRITE_ONCE or ACCESS_ONCE() in different C statements. ++ * ++ * In contrast to ACCESS_ONCE these two macros will also work on aggregate ++ * data types like structs or unions. If the size of the accessed data ++ * type exceeds the word size of the machine (e.g., 32 bits or 64 bits) ++ * READ_ONCE() and WRITE_ONCE() will fall back to memcpy and print a ++ * compile-time warning. ++ * ++ * Their two major use cases are: (1) Mediating communication between ++ * process-level code and irq/NMI handlers, all running on the same CPU, ++ * and (2) Ensuring that the compiler does not fold, spindle, or otherwise ++ * mutilate accesses that either do not require ordering or that interact ++ * with an explicit memory barrier or atomic instruction that provides the ++ * required ordering. ++ */ ++ ++#define __READ_ONCE(x, check) \ ++({ \ ++ union { typeof(x) __val; char __c[1]; } __u; \ ++ if (check) \ ++ __read_once_size(&(x), __u.__c, sizeof(x)); \ ++ else \ ++ __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \ ++ __u.__val; \ ++}) ++#define READ_ONCE(x) __READ_ONCE(x, 1) ++ ++/* ++ * Use READ_ONCE_NOCHECK() instead of READ_ONCE() if you need ++ * to hide memory access from KASAN. ++ */ ++#define READ_ONCE_NOCHECK(x) __READ_ONCE(x, 0) ++ ++#define WRITE_ONCE(x, val) \ ++({ \ ++ union { typeof(x) __val; char __c[1]; } __u = \ ++ { .__val = (__force typeof(x)) (val) }; \ ++ __write_once_size(&(x), __u.__c, sizeof(x)); \ ++ __u.__val; \ ++}) ++ ++/** ++ * smp_cond_acquire() - Spin wait for cond with ACQUIRE ordering ++ * @cond: boolean expression to wait for ++ * ++ * Equivalent to using smp_load_acquire() on the condition variable but employs ++ * the control dependency of the wait to reduce the barrier on many platforms. ++ * ++ * The control dependency provides a LOAD->STORE order, the additional RMB ++ * provides LOAD->LOAD order, together they provide LOAD->{LOAD,STORE} order, ++ * aka. ACQUIRE. ++ */ ++#define smp_cond_acquire(cond) do { \ ++ while (!(cond)) \ ++ cpu_relax(); \ ++ smp_rmb(); /* ctrl + rmb := acquire */ \ ++} while (0) ++ + #endif /* __KERNEL__ */ + + #endif /* __ASSEMBLY__ */ +@@ -304,6 +434,14 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + #define __visible + #endif + ++/* ++ * Assume alignment of return value. ++ */ ++#ifndef __assume_aligned ++#define __assume_aligned(a, ...) ++#endif ++ ++ + /* Are two types/vars the same type (ignoring qualifiers)? */ + #ifndef __same_type + # define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) +@@ -311,7 +449,7 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + + /* Is this type a native word size -- useful for atomic operations */ + #ifndef __native_word +-# define __native_word(t) (sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) ++# define __native_word(t) (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long)) + #endif + + /* Compile time object size, -1 for unknown */ +@@ -373,12 +511,38 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); + * to make the compiler aware of ordering is to put the two invocations of + * ACCESS_ONCE() in different C statements. + * +- * This macro does absolutely -nothing- to prevent the CPU from reordering, +- * merging, or refetching absolutely anything at any time. Its main intended +- * use is to mediate communication between process-level code and irq/NMI +- * handlers, all running on the same CPU. ++ * ACCESS_ONCE will only work on scalar types. For union types, ACCESS_ONCE ++ * on a union member will work as long as the size of the member matches the ++ * size of the union and the size is smaller than word size. ++ * ++ * The major use cases of ACCESS_ONCE used to be (1) Mediating communication ++ * between process-level code and irq/NMI handlers, all running on the same CPU, ++ * and (2) Ensuring that the compiler does not fold, spindle, or otherwise ++ * mutilate accesses that either do not require ordering or that interact ++ * with an explicit memory barrier or atomic instruction that provides the ++ * required ordering. ++ * ++ * If possible use READ_ONCE()/WRITE_ONCE() instead. ++ */ ++#define __ACCESS_ONCE(x) ({ \ ++ __maybe_unused typeof(x) __var = (__force typeof(x)) 0; \ ++ (volatile typeof(x) *)&(x); }) ++#define ACCESS_ONCE(x) (*__ACCESS_ONCE(x)) ++ ++/** ++ * lockless_dereference() - safely load a pointer for later dereference ++ * @p: The pointer to load ++ * ++ * Similar to rcu_dereference(), but for situations where the pointed-to ++ * object's lifetime is managed by something other than RCU. That ++ * "something other" might be reference counting or simple immortality. + */ +-#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) ++#define lockless_dereference(p) \ ++({ \ ++ typeof(p) _________p1 = READ_ONCE(p); \ ++ smp_read_barrier_depends(); /* Dependency order vs. p above. */ \ ++ (_________p1); \ ++}) + + /* Ignore/forbid kprobes attach on very low level functions marked by this attribute: */ + #ifdef CONFIG_KPROBES +-- +2.11.0 + diff --git a/buildroot/board/roseapplepi/post-image.sh b/buildroot/board/roseapplepi/post-image.sh new file mode 100755 index 0000000..e8f2df2 --- /dev/null +++ b/buildroot/board/roseapplepi/post-image.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +cp "${BOARD_DIR}/uEnv.txt" "${BINARIES_DIR}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +exit $? diff --git a/buildroot/board/roseapplepi/uEnv.txt b/buildroot/board/roseapplepi/uEnv.txt new file mode 100755 index 0000000..f9646e4 --- /dev/null +++ b/buildroot/board/roseapplepi/uEnv.txt @@ -0,0 +1,3 @@ +# no ramdisk +ramdisk_addr_r=- +bootargs=clk_ignore_unused root=/dev/mmcblk0p2 diff --git a/buildroot/board/sinovoip/m2-plus/boot.cmd b/buildroot/board/sinovoip/m2-plus/boot.cmd new file mode 100644 index 0000000..d22464a --- /dev/null +++ b/buildroot/board/sinovoip/m2-plus/boot.cmd @@ -0,0 +1,7 @@ +setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait + +mmc dev 0 +fatload mmc 0 $kernel_addr_r zImage +fatload mmc 0 $fdt_addr_r sun8i-h3-bananapi-m2-plus.dtb + +bootz $kernel_addr_r - $fdt_addr_r diff --git a/buildroot/board/sinovoip/m2-plus/genimage.cfg b/buildroot/board/sinovoip/m2-plus/genimage.cfg new file mode 100644 index 0000000..cde0669 --- /dev/null +++ b/buildroot/board/sinovoip/m2-plus/genimage.cfg @@ -0,0 +1,33 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "sun8i-h3-bananapi-m2-plus.dtb", + "boot.scr" + } + } + size = 64M +} + +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-sunxi-with-spl.bin" + offset = 8192 + size = 1040384 # 1MB - 8192 + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/solidrun/macchiatobin/genimage.cfg b/buildroot/board/solidrun/macchiatobin/genimage.cfg new file mode 100644 index 0000000..fdcda36 --- /dev/null +++ b/buildroot/board/solidrun/macchiatobin/genimage.cfg @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition uboot { + in-partition-table = "no" + image = "flash-image.bin" + offset = 0x200000 + } + + partition rootfs { + partition-type = 0x83 + offset = 0x2200000 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/solidrun/macchiatobin/linux-extras.config b/buildroot/board/solidrun/macchiatobin/linux-extras.config new file mode 100644 index 0000000..11267d2 --- /dev/null +++ b/buildroot/board/solidrun/macchiatobin/linux-extras.config @@ -0,0 +1,3 @@ +CONFIG_MARVELL_PHY=y +CONFIG_MARVELL_10G_PHY=y +CONFIG_PHY_MVEBU_CP110_COMPHY=y diff --git a/buildroot/board/solidrun/macchiatobin/post-build.sh b/buildroot/board/solidrun/macchiatobin/post-build.sh new file mode 100755 index 0000000..9c1b5b8 --- /dev/null +++ b/buildroot/board/solidrun/macchiatobin/post-build.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +install -m 0644 -D ${BOARD_DIR}/uEnv-example.txt ${TARGET_DIR}/boot/uEnv-example.txt diff --git a/buildroot/board/solidrun/macchiatobin/readme.txt b/buildroot/board/solidrun/macchiatobin/readme.txt new file mode 100644 index 0000000..dfbd6e7 --- /dev/null +++ b/buildroot/board/solidrun/macchiatobin/readme.txt @@ -0,0 +1,91 @@ +Intro +===== + +This default configuration will allow you to start experimenting with +the buildroot environment for the MacchiatoBin board based on the +Marvell Armada 8040 SoC. Documentation for the board hardware and +software is available on the wiki at: http://wiki.macchiatobin.net + +This default configuration will bring up the board and allow access +through the serial console. + +How to build +============ + +There are two build options: mainline support and vendor support. + +For the mainline BSP, we use: + - Linux v4.15 + - U-Boot v2018.01 + +For the vendor BSP, we use the sources available from Marvell Github +page at https://github.com/MarvellEmbeddedProcessors, which uses: + - Linux v4.4.52 + - U-Boot v2017.03 + +At the moment mainline support for the board is a work in progress. +Mainline kernel 4.15 enables eth2 in 1Gb (RJ45 connector J5) and +eth0 in 10Gb (SFP connector CON15 and RJ45 connector CON16). +The vendor BSP enables more hardware features out of the box, +e.g. all the network interfaces. + +To use the mainline BSP run the following commands: + + $ make solidrun_macchiatobin_mainline_defconfig + $ make + +To use the vendor BSP run the following commands: + + $ make solidrun_macchiatobin_marvell_defconfig + $ make + +How to write the SD card +======================== + +Once the build process is finished you will have an image +called "sdcard.img" in the output/images/ directory. + +Copy the bootable "sdcard.img" onto an SD card with "dd": + + $ sudo dd if=output/images/sdcard.img of=/dev/sdX bs=1M conv=fsync + $ sudo sync + +How to boot the board +===================== + +The MacchiatoBin board can be setup to load the bootloader from +different sources including eMMC, SPI flash, and SD-card. + +On Rev 1.2 board to select boot from SD-card the DIP switches +SW1 and SW2 should be configured as follows: + +SW2: 01110 +SW1: 1xxxx + +The upcoming Rev 1.3 board will have a single pins header J1 instead +of the SW1/2 DIP switches. To boot from SD-card the setting of J1 +jumpers should match the DIP switches of Rev v1.2 board +from left to right: + +J1: 011101xxxx + +Insert the micro SDcard in the MacchiatoBin board and power it up. +The serial console is accessible at the micro-USB Type-B connector +marked CON9. The serial line settings are 115200 8N1. + +By default U-Boot will load its environment from the SPI flash. On the +first boot SPI flash may be empty or it may contain a legacy +environment incompatible with up-to-date mainline U-Boot and +kernel. Then the following commands can be used to boot the board: + +=> ext4load mmc 1:1 0x01700000 /boot/uEnv-example.txt +=> env import -t 0x01700000 $filesize +=> boot + +The example environment from uEnv-example.txt can be written to +SPI flash using the following commands: + +=> env default -f -a +=> ext4load mmc 1:1 0x01700000 /boot/uEnv-example.txt +=> env import -t 0x01700000 $filesize +=> saveenv diff --git a/buildroot/board/solidrun/macchiatobin/uEnv-example.txt b/buildroot/board/solidrun/macchiatobin/uEnv-example.txt new file mode 100644 index 0000000..1967e2b --- /dev/null +++ b/buildroot/board/solidrun/macchiatobin/uEnv-example.txt @@ -0,0 +1,7 @@ +bootargs=console=ttyS0,115200 root=/dev/mmcblk1p1 rw rootwait +fdt_addr=0x1000000 +fdt_high=0xffffffffffffffff +fdt_name=boot/armada-8040-mcbin.dtb +kernel_addr=0x2000000 +image_name=boot/Image +bootcmd=mmc dev 1; ext4load mmc 1:1 $kernel_addr $image_name; ext4load mmc 1:1 $fdt_addr $fdt_name; booti $kernel_addr - $fdt_addr diff --git a/buildroot/board/solidrun/mx6cubox/boot.scr.txt b/buildroot/board/solidrun/mx6cubox/boot.scr.txt new file mode 100644 index 0000000..7a8aa4b --- /dev/null +++ b/buildroot/board/solidrun/mx6cubox/boot.scr.txt @@ -0,0 +1,7 @@ +setenv finduuid "part uuid mmc 0:1 uuid" +run finduuid +run findfdt +setenv bootargs "console=ttymxc0,115200 root=PARTUUID=${uuid} rootwait rootfstype=ext4" +load mmc 0:1 ${fdt_addr} boot/${fdtfile} +load mmc 0:1 ${loadaddr} boot/zImage +bootz ${loadaddr} - ${fdt_addr} diff --git a/buildroot/board/solidrun/mx6cubox/genimage.cfg b/buildroot/board/solidrun/mx6cubox/genimage.cfg new file mode 100644 index 0000000..490986a --- /dev/null +++ b/buildroot/board/solidrun/mx6cubox/genimage.cfg @@ -0,0 +1,29 @@ +# Minimal SD card image for the MX6 Cubox/Hummingboard +# +# U-Boot SPL and u-boot.img are flashed in the first 1MB raw partition. +# A single root filesystem partition is used (Ext4 in this case). +# + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.img" + offset = 69K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 1M + size = 512M + } +} diff --git a/buildroot/board/solidrun/mx6cubox/post-build.sh b/buildroot/board/solidrun/mx6cubox/post-build.sh new file mode 100755 index 0000000..43e091c --- /dev/null +++ b/buildroot/board/solidrun/mx6cubox/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +$HOST_DIR/bin/mkimage -A arm -O linux -T script -C none \ +-n "boot script" -d $BOARD_DIR/boot.scr.txt $BOARD_DIR/boot.scr + +install -m 0644 -D $BOARD_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/buildroot/board/solidrun/mx6cubox/post-image.sh b/buildroot/board/solidrun/mx6cubox/post-image.sh new file mode 100755 index 0000000..b4ac460 --- /dev/null +++ b/buildroot/board/solidrun/mx6cubox/post-image.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/board/solidrun/mx6cubox/readme.txt b/buildroot/board/solidrun/mx6cubox/readme.txt new file mode 100644 index 0000000..630ab6c --- /dev/null +++ b/buildroot/board/solidrun/mx6cubox/readme.txt @@ -0,0 +1,18 @@ +Solidrun's MX6 Cubox/Hummingboard + +https://www.solid-run.com/freescale-imx6-family/hummingboard/ + +https://www.solid-run.com/freescale-imx6-family/cubox-i/ + +To build a minimal support for these boards: + + $ make mx6cubox_defconfig + $ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on an SD card: + +dd if=output/images/sdcard.img of=/dev/ + +For details about the medium image layout, see the definition in +board/solidrun/mx6cubox/genimage.cfg. diff --git a/buildroot/board/stmicroelectronics/stm32-post-build.sh b/buildroot/board/stmicroelectronics/stm32-post-build.sh new file mode 100755 index 0000000..e324afe --- /dev/null +++ b/buildroot/board/stmicroelectronics/stm32-post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# Kernel is built without devpts support +sed -i '/^devpts/d' ${TARGET_DIR}/etc/fstab + +# Kernel is built without network support +rm -f ${TARGET_DIR}/etc/init.d/S40network +rm -rf ${TARGET_DIR}/etc/network/ diff --git a/buildroot/board/stmicroelectronics/stm32f429-disco/flash.sh b/buildroot/board/stmicroelectronics/stm32f429-disco/flash.sh new file mode 100755 index 0000000..b19e0a6 --- /dev/null +++ b/buildroot/board/stmicroelectronics/stm32f429-disco/flash.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +OUTPUT_DIR=$1 +BOARD_NAME=${2:-stm32f429discovery} + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR BOARD_NAME" + echo "" + echo "Arguments:" + echo " OUTPUT_DIR The Buildroot output directory." + echo " BOARD_NAME One of the available boards among:" + echo " stm32f429discovery, stm32f429disc1" + exit 1 +fi + +${OUTPUT_DIR}/host/bin/openocd -f board/${BOARD_NAME}.cfg \ + -c "init" \ + -c "reset init" \ + -c "flash probe 0" \ + -c "flash info 0" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f429i-disco.bin 0x08000000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f429-disco.dtb 0x08004000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/xipImage 0x08008000" \ + -c "reset run" \ + -c "shutdown" diff --git a/buildroot/board/stmicroelectronics/stm32f429-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch b/buildroot/board/stmicroelectronics/stm32f429-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch new file mode 100644 index 0000000..d6d5c61 --- /dev/null +++ b/buildroot/board/stmicroelectronics/stm32f429-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch @@ -0,0 +1,32 @@ +From ded9afa688184b3240a92c2b8f114c545a09bc3f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 12 Mar 2016 23:14:41 +0100 +Subject: [PATCH] ARM: stm32f249-disco: don't force init= in /chosen/bootargs + +There is no reason to override the kernel's default init= value, as +this breaks userspace that assumes the kernel default of /init is +used. Since stm32 is often used with a minimal bootloader +(afboot-stm32) that doesn't provide any mechanism to override the DTB, +we need to adjust the kernel command line in the Device Tree source. + +Signed-off-by: Thomas Petazzoni +--- + arch/arm/boot/dts/stm32f429-disco.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/stm32f429-disco.dts b/arch/arm/boot/dts/stm32f429-disco.dts +index f0b731d..2bae81c 100644 +--- a/arch/arm/boot/dts/stm32f429-disco.dts ++++ b/arch/arm/boot/dts/stm32f429-disco.dts +@@ -53,7 +53,7 @@ + compatible = "st,stm32f429i-disco", "st,stm32f429"; + + chosen { +- bootargs = "root=/dev/ram rdinit=/linuxrc"; ++ bootargs = "root=/dev/ram"; + stdout-path = "serial0:115200n8"; + }; + +-- +2.6.4 + diff --git a/buildroot/board/stmicroelectronics/stm32f429-disco/readme.txt b/buildroot/board/stmicroelectronics/stm32f429-disco/readme.txt new file mode 100644 index 0000000..f512cb2 --- /dev/null +++ b/buildroot/board/stmicroelectronics/stm32f429-disco/readme.txt @@ -0,0 +1,37 @@ +STM32F429 Discovery +=================== + +This tutorial describes how to use the predefined Buildroot +configuration for the STM32F429 Discovery evaluation platform. + +Supported HW +------------ + + - STM32F429I-DISCO evaluation board + - STM32F429I-DISC1 evaluation board + +Building +-------- + + make stm32f429_disco_defconfig + make + +Wire the UART +------------- + +Use a USB to TTL adapter, and connect: + + - RX to PA9 + - TX to PA10 + - GND to one of the GND available on the board + +The UART is configured at 115200. + +Flashing +-------- + + ./board/stmicroelectronics/stm32f429-disco/flash.sh output/ \ + {stm32f429discovery|stm32f429disc1} + +It will flash the minimal bootloader, the Device Tree Blob, and the +kernel image which includes the root filesystem as initramfs. diff --git a/buildroot/board/stmicroelectronics/stm32f469-disco/flash.sh b/buildroot/board/stmicroelectronics/stm32f469-disco/flash.sh new file mode 100755 index 0000000..0ec0beb --- /dev/null +++ b/buildroot/board/stmicroelectronics/stm32f469-disco/flash.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +OUTPUT_DIR=$1 + +if ! test -d "${OUTPUT_DIR}" ; then + echo "ERROR: no output directory specified." + echo "Usage: $0 OUTPUT_DIR" + exit 1 +fi + +${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.cfg \ + -c "init" \ + -c "reset init" \ + -c "flash probe 0" \ + -c "flash info 0" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f469i-disco.bin 0x08000000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f469-disco.dtb 0x08004000" \ + -c "flash write_image erase ${OUTPUT_DIR}/images/xipImage 0x08008000" \ + -c "reset run" \ + -c "shutdown" diff --git a/buildroot/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch b/buildroot/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch new file mode 100644 index 0000000..750e477 --- /dev/null +++ b/buildroot/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch @@ -0,0 +1,33 @@ +From c8f8f33c2f0460a34c9545b01a7972a7ed2df0e9 Mon Sep 17 00:00:00 2001 +From: Christophe Priouzeau +Date: Mon, 29 May 2017 13:38:16 +0200 +Subject: [PATCH] ARM: stm32f249-disco: don't force init= in /chosen/bootargs + +There is no reason to override the kernel's default init= value, as +this breaks userspace that assumes the kernel default of /init is +used. Since stm32 is often used with a minimal bootloader +(afboot-stm32) that doesn't provide any mechanism to override the DTB, +we need to adjust the kernel command line in the Device Tree source. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Christophe Priouzeau +--- + arch/arm/boot/dts/stm32f469-disco.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts +index 0dd56ef..93ee1b2 100644 +--- a/arch/arm/boot/dts/stm32f469-disco.dts ++++ b/arch/arm/boot/dts/stm32f469-disco.dts +@@ -53,7 +53,7 @@ + compatible = "st,stm32f469i-disco", "st,stm32f469"; + + chosen { +- bootargs = "root=/dev/ram rdinit=/linuxrc"; ++ bootargs = "root=/dev/ram"; + stdout-path = "serial0:115200n8"; + }; + +-- +2.7.4 + diff --git a/buildroot/board/stmicroelectronics/stm32f469-disco/readme.txt b/buildroot/board/stmicroelectronics/stm32f469-disco/readme.txt new file mode 100644 index 0000000..888bff0 --- /dev/null +++ b/buildroot/board/stmicroelectronics/stm32f469-disco/readme.txt @@ -0,0 +1,19 @@ +STM32F469 Discovery +=================== + +This tutorial describes how to use the predefined Buildroot +configuration for the STM32F469 Discovery evaluation platform. + +Building +-------- + + make stm32f469_disco_defconfig + make + +Flashing +-------- + + ./board/stmicroelectronics/stm32f469-disco/flash.sh output/ + +It will flash the minimal bootloader, the Device Tree Blob, and the +kernel image which includes the root filesystem as initramfs. diff --git a/buildroot/board/synopsys/axs10x/fs-overlay/etc/inittab b/buildroot/board/synopsys/axs10x/fs-overlay/etc/inittab new file mode 100644 index 0000000..7412a27 --- /dev/null +++ b/buildroot/board/synopsys/axs10x/fs-overlay/etc/inittab @@ -0,0 +1,42 @@ +# /etc/inittab +# +# Copyright (C) 2001 Erik Andersen +# +# Note: BusyBox init doesn't support runlevels. The runlevels field is +# completely ignored by BusyBox init. If you want runlevels, use +# sysvinit. +# +# Format for each entry: ::: +# +# id == tty to run on, or empty for /dev/console +# runlevels == ignored +# action == one of sysinit, respawn, askfirst, wait, and once +# process == program to run + +# Startup the system +::sysinit:/bin/mount -t proc proc /proc +::sysinit:/bin/mount -o remount,rw / +::sysinit:/bin/mkdir -p /dev/pts /dev/shm +::sysinit:/bin/mount -a +::sysinit:/sbin/swapon -a +null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd +null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin +null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout +null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr +::sysinit:/bin/hostname -F /etc/hostname +# now run any rc scripts +::sysinit:/etc/init.d/rcS + +# /sbin/getty invocation for tty0 +tty0::respawn:/sbin/getty 115200 tty0 + +# Put a getty on the serial port +console::respawn:/sbin/getty -L console 0 vt100 + +# Stuff to do for the 3-finger salute +::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +::shutdown:/etc/init.d/rcK +::shutdown:/sbin/swapoff -a +::shutdown:/bin/umount -a -r diff --git a/buildroot/board/synopsys/axs10x/patches/u-boot/0001-axs103-Clean-up-smp_kick_all_cpus.patch b/buildroot/board/synopsys/axs10x/patches/u-boot/0001-axs103-Clean-up-smp_kick_all_cpus.patch new file mode 100644 index 0000000..7af878d --- /dev/null +++ b/buildroot/board/synopsys/axs10x/patches/u-boot/0001-axs103-Clean-up-smp_kick_all_cpus.patch @@ -0,0 +1,48 @@ +From ee5a5a51780bcb17e5240335ddfa9c98a0e6f890 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Thu, 30 Mar 2017 19:18:30 +0300 +Subject: [PATCH] axs103: Clean-up smp_kick_all_cpus() + + * Rely on default pulse polarity value + * Don't mess with "multicore" value as it doesn't affect execution + +In essence we now do a bare minimal stuff: + 1) Select HS38x2_1 with CORE_SEL=1 bits + 2) Select "manual" core start (via CREG) with START_MODE=0 + 3) Generate cpu_start pulse with START=1 + +Signed-off-by: Alexey Brodkin +Signed-off-by: Vlad Zakharov +--- + board/synopsys/axs10x/axs10x.c | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/board/synopsys/axs10x/axs10x.c b/board/synopsys/axs10x/axs10x.c +index a5e774b2cf7b..57c790220f71 100644 +--- a/board/synopsys/axs10x/axs10x.c ++++ b/board/synopsys/axs10x/axs10x.c +@@ -61,16 +61,14 @@ void smp_kick_all_cpus(void) + { + /* CPU start CREG */ + #define AXC003_CREG_CPU_START 0xF0001400 +- + /* Bits positions in CPU start CREG */ + #define BITS_START 0 +-#define BITS_POLARITY 8 ++#define BITS_START_MODE 4 + #define BITS_CORE_SEL 9 +-#define BITS_MULTICORE 12 +- +-#define CMD (1 << BITS_MULTICORE) | (1 << BITS_CORE_SEL) | \ +- (1 << BITS_POLARITY) | (1 << BITS_START) + +- writel(CMD, (void __iomem *)AXC003_CREG_CPU_START); ++ int cmd = readl((void __iomem *)AXC003_CREG_CPU_START); ++ cmd |= (1 << BITS_CORE_SEL) | (1 << BITS_START); ++ cmd &= ~(1 << BITS_START_MODE); ++ writel(cmd, (void __iomem *)AXC003_CREG_CPU_START); + } + #endif +-- +2.7.4 + diff --git a/buildroot/board/synopsys/axs10x/patches/u-boot/0002-axs103-Support-slave-core-kick-start-on-axs103-v1.1-.patch b/buildroot/board/synopsys/axs10x/patches/u-boot/0002-axs103-Support-slave-core-kick-start-on-axs103-v1.1-.patch new file mode 100644 index 0000000..0fcc0e6 --- /dev/null +++ b/buildroot/board/synopsys/axs10x/patches/u-boot/0002-axs103-Support-slave-core-kick-start-on-axs103-v1.1-.patch @@ -0,0 +1,72 @@ +From a5fa3b17cb10ce020f8b7fe6a26c45d75f55b481 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Fri, 31 Mar 2017 11:14:35 +0300 +Subject: [PATCH] axs103: Support slave core kick-start on axs103 v1.1 + firmware + +In axs103 v1.1 procedure to kick-start slave cores has changed quite a bit +compared to previous implementation. + +In particular: + * We used to have a generic START bit for all cores selected by CORE_SEL + mask. But now we don't touch CORE_SEL at all because we have a dedicated + START bit for each core: + bit 0: Core 0 (master) + bit 1: Core 1 (slave) + * Now there's no need to select "manual" mode of core start + +Additional challenge for us is how to tell which axs103 firmware we're +dealing with. For now we'll rely on ARC core version which was bumped +from 2.1c to 3.0. + +Signed-off-by: Alexey Brodkin +Signed-off-by: Vlad Zakharov +--- + board/synopsys/axs10x/axs10x.c | 23 +++++++++++++++++++++-- + 1 file changed, 21 insertions(+), 2 deletions(-) + +diff --git a/board/synopsys/axs10x/axs10x.c b/board/synopsys/axs10x/axs10x.c +index 57c790220f71..e6b69da3da7f 100644 +--- a/board/synopsys/axs10x/axs10x.c ++++ b/board/synopsys/axs10x/axs10x.c +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + #include "axs10x.h" + + DECLARE_GLOBAL_DATA_PTR; +@@ -66,9 +67,27 @@ void smp_kick_all_cpus(void) + #define BITS_START_MODE 4 + #define BITS_CORE_SEL 9 + ++/* ++ * In axs103 v1.1 START bits semantics has changed quite a bit. ++ * We used to have a generic START bit for all cores selected by CORE_SEL mask. ++ * But now we don't touch CORE_SEL at all because we have a dedicated START bit ++ * for each core: ++ * bit 0: Core 0 (master) ++ * bit 1: Core 1 (slave) ++ */ ++#define BITS_START_CORE1 1 ++ ++#define ARCVER_HS38_3_0 0x53 ++ ++ int core_family = read_aux_reg(ARC_AUX_IDENTITY) & 0xff; + int cmd = readl((void __iomem *)AXC003_CREG_CPU_START); +- cmd |= (1 << BITS_CORE_SEL) | (1 << BITS_START); +- cmd &= ~(1 << BITS_START_MODE); ++ ++ if (core_family < ARCVER_HS38_3_0) { ++ cmd |= (1 << BITS_CORE_SEL) | (1 << BITS_START); ++ cmd &= ~(1 << BITS_START_MODE); ++ } else { ++ cmd |= (1 << BITS_START_CORE1); ++ } + writel(cmd, (void __iomem *)AXC003_CREG_CPU_START); + } + #endif +-- +2.7.4 + diff --git a/buildroot/board/synopsys/vdk/linux-vdk-aarch64-defconfig b/buildroot/board/synopsys/vdk/linux-vdk-aarch64-defconfig new file mode 100644 index 0000000..8109e16 --- /dev/null +++ b/buildroot/board/synopsys/vdk/linux-vdk-aarch64-defconfig @@ -0,0 +1,143 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=16 +CONFIG_CGROUPS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_EMBEDDED=y +CONFIG_SLAB=y +CONFIG_PROFILING=y +CONFIG_CC_STACKPROTECTOR_REGULAR=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +CONFIG_NR_CPUS=8 +CONFIG_PREEMPT=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_CMDLINE="console=ttyAMA0 earlyprintk=pl011,0x1c090000 debug user_debug=31 loglevel=9 root=/dev/vda" +CONFIG_CMDLINE_FORCE=y +CONFIG_BINFMT_MISC=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_ARM_BIG_LITTLE_CPUFREQ=y +CONFIG_ARM_DT_BL_CPUFREQ=y +CONFIG_ARM_SPCI_CPUFREQ=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=y +CONFIG_NET_KEY=y +CONFIG_NET_KEY_MIGRATE=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_SYN_COOKIES=y +CONFIG_NETWORK_PHY_TIMESTAMPING=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_VEXPRESS_CONFIG=y +CONFIG_CONNECTOR=m +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_NBD=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_VIRTIO_BLK=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_DM=y +CONFIG_NETDEVICES=y +CONFIG_STMMAC_ETH=m +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_MISC=y +CONFIG_INPUT_UINPUT=y +CONFIG_SERIO_AMBAKMI=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_POWER_RESET_VEXPRESS=y +CONFIG_FB=y +CONFIG_FB_ARMCLCD=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_LOGO=y +CONFIG_USB_HIDDEV=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_SYNOPSYS=y +CONFIG_USB_OHCI_HCD=y +CONFIG_NOP_USB_XCEIV=y +CONFIG_USB_ULPI=y +CONFIG_USB_DUMMY_HCD=m +CONFIG_USB_G_SERIAL=m +CONFIG_MMC=y +CONFIG_MMC_ARMMMCI=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_SWITCH=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PL031=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_COMMON_CLK_VERSATILE=y +CONFIG_CLK_SP810=y +CONFIG_CLK_VEXPRESS_OSC=y +CONFIG_COMMON_CLK_SCPI=y +CONFIG_MAILBOX=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_BTRFS_FS=m +CONFIG_QFMT_V2=y +CONFIG_AUTOFS4_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=m +CONFIG_ECRYPT_FS=m +CONFIG_CRAMFS=m +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DEBUG_INFO=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y +CONFIG_FUNCTION_TRACER=y +CONFIG_STRICT_DEVMEM=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_LSM_MMAP_MIN_ADDR=0 + diff --git a/buildroot/board/synopsys/vdk/readme.txt b/buildroot/board/synopsys/vdk/readme.txt new file mode 100644 index 0000000..9804647 --- /dev/null +++ b/buildroot/board/synopsys/vdk/readme.txt @@ -0,0 +1,65 @@ +Synopsys VDK Software Development Platform + +Intro +===== + +The Virtualizer Development Kit (VDK) Family for ARM Cortex Products +consists of a set of virtual prototypes that provide a virtualizer for +the ARM core variants. The VDK is a standalone package that runs on an +host computer. + +Buildroot will generate the kernel image and a minimal root filesystem. + +How to build it +=============== + +Configure Buildroot +------------------- + +Configuring Buildroot is pretty simple, just execute: + + $ make snps_aarch64_vdk_defconfig + +Build the rootfs and kernel +--------------------------- + +Note: you will need to have access to the network, since Buildroot will +download the packages' sources. + +You may now build your rootfs with: + + $ make + +(This may take a while) + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + -- rootfs.ext2 + -- Image + +Installing your rootfs and Image +================================ + +Now copy the content of the output/images folder to the VDK' skins +folder: + + $ cp rootfs.ext2 Image /skins/Vanilla-Cortex/ARMv8 + + +Starting the VDK +================================ + +Go the VDK' installation root and execute the 'start' script: + + $ cd + $ ./start.sh + +The VP Explorer application will be executed, starting the simulation +automatically. + +For more information about Synopsys' VDK please check: +http://www.synopsys.com/Prototyping/VirtualPrototyping/Pages/default.aspx diff --git a/buildroot/board/technexion/imx6ulpico/linux.fragment b/buildroot/board/technexion/imx6ulpico/linux.fragment new file mode 100644 index 0000000..892d0cb --- /dev/null +++ b/buildroot/board/technexion/imx6ulpico/linux.fragment @@ -0,0 +1 @@ +CONFIG_CFG80211_WEXT=y diff --git a/buildroot/board/technexion/imx6ulpico/readme.txt b/buildroot/board/technexion/imx6ulpico/readme.txt new file mode 100644 index 0000000..7eab3f6 --- /dev/null +++ b/buildroot/board/technexion/imx6ulpico/readme.txt @@ -0,0 +1,70 @@ +***************************** +Technexion i.MX6UL Pico board +***************************** + +This file documents the Buildroot support for the Technexion i.MX6UL Pico board. + +Build +===== + +First, configure Buildroot for the i.MX6UL Pico board: + + make imx6ulpico_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx6ul-pico-hobbit.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Create a bootable SD card +========================= + +In the U-Boot prompt lauch: + +=> ums 0 mmc 0 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on the eMMC card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the card content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX6UL Pico board +========================= + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Using Wifi +========== + +# modprobe brcmfmac +# iwconfig wlan0 essid ACCESSPOINTNAME +# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf +(enter the wifi password and press enter) +# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf & +# udhcpc -i wlan0 +# ping buildroot.org + +Enjoy! diff --git a/buildroot/board/technexion/imx6ulpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt b/buildroot/board/technexion/imx6ulpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt new file mode 100644 index 0000000..4716c7e --- /dev/null +++ b/buildroot/board/technexion/imx6ulpico/rootfs_overlay/lib/firmware/brcm/brcmfmac4339-sdio.txt @@ -0,0 +1,102 @@ +# Sample NVRAM for BCM94339 WLCSP with eTR,iPA, and eLNA. +sromrev=11 +boardrev=0x1100 +boardtype=0x06c9 +boardflags=0x10081401 +boardflags2=0x00000000 +boardflags3=0x08001188 +#boardnum=57410 +macaddr=00:90:4c:c5:12:38 +ccode=0 +regrev=0 +antswitch=0 +pdgain2g=7 +pdgain5g=7 +tworangetssi2g=0 +tworangetssi5g=0 +vendid=0x14e4 +devid=0x43ae +manfid=0x2d0 +#prodid=0x052e +nocrc=1 +otpimagesize=502 +xtalfreq=37400 +extpagain2g=2 +pdetrange2g=2 +extpagain5g=2 +pdetrange5g=2 +rxgains2gelnagaina0=2 +rxgains2gtrisoa0=6 +rxgains2gtrelnabypa0=1 +rxgains5gelnagaina0=4 +rxgains5gtrisoa0=4 +rxgains5gtrelnabypa0=1 +rxchain=1 +txchain=1 +aa2g=1 +aa5g=1 +tssipos5g=0 +tssipos2g=0 +pa2ga0=0xFF47,0x17B5,0xFD2B +pa2gccka0=0xFF5F,0x1B46,0xFCCC +pa5ga0=0xff54,0x16ec,0xfd45,0xff52,0x16a1,0xfd4d,0xff46,0x15b7,0xfd5a,0xff56,0x156d,0xfd79 +pa5gbw40a0=0xff59,0x17ca,0xfd30,0xff42,0x163d,0xfd4b,0xff31,0x152e,0xfd55,0xff60,0x16d8,0xfd54 +pa5gbw80a0=0xff56,0x1740,0xfd3f,0xff50,0x1738,0xfd3d,0xff4d,0x16b4,0xfd42,0xff58,0x1634,0xfd60 +# Default Target Power for 2G -- 17dBm(11)/14dBm(54)/13dBm(MCS7)/12dBm(MCS8)/12dBm(MCS9) +maxp2ga0=74 +maxp5ga0=74,74,74,74 +cckbw202gpo=0x0000 +cckbw20ul2gpo=0x0000 +mcsbw202gpo=0xaa888888 +mcsbw402gpo=0xaa888888 +dot11agofdmhrbw202gpo=0x6666 +ofdmlrbw202gpo=0x0066 +tssifloor2g=500 +# Default Target Power for 5G -- 14dBm(54)/13dBm(MCS7)/12dBm(MCS8)/12dBm(MCS9) +mcsbw205glpo=0xaa866666 +mcsbw405glpo=0xaa866666 +mcsbw805glpo=0xaa866666 +mcsbw205gmpo=0xaa866666 +mcsbw405gmpo=0xaa866666 +mcsbw805gmpo=0xaa866666 +mcsbw205ghpo=0xaa866666 +mcsbw405ghpo=0xaa866666 +mcsbw805ghpo=0xaa866666 +mcslr5glpo=0x0000 +mcslr5gmpo=0x0000 +mcslr5ghpo=0x0000 +sb20in40hrpo=0x0 +sb20in80and160hr5glpo=0x0 +sb40and80hr5glpo=0x0 +sb20in80and160hr5gmpo=0x0 +sb40and80hr5gmpo=0x0 +sb20in80and160hr5ghpo=0x0 +sb40and80hr5ghpo=0x0 +sb20in40lrpo=0x0 +sb20in80and160lr5glpo=0x0 +sb40and80lr5glpo=0x0 +sb20in80and160lr5gmpo=0x0 +sb40and80lr5gmpo=0x0 +sb20in80and160lr5ghpo=0x0 +sb40and80lr5ghpo=0x0 +dot11agduphrpo=0x0 +dot11agduplrpo=0x0 +phycal_tempdelta=25 +cckdigfilttype=2 +swctrlmap_5g=0x00080008,0x00500010,0x00100008,0x000000,0x078 +swctrlmap_2g=0x00010001,0x00220002,0x00020001,0x042202,0x1ff +swctrlmapext_5g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +swctrlmapext_2g=0x00000000,0x00000000,0x00000000,0x000000,0x000 +# +#GPIO 0 for SDIO HW OOB interruption +#muxenab=0x10 +#sd_gpout=0 +#sd_oobonly=1 +# +rssicorrnorm_c0=-2,0 +rssicorrnorm5g_c0=3,5,2,3,4,2,2,3,1,2,3,1 +## ED threshold level to address the new ETSI requirement - 10/31/2013 +ed_thresh2g=-77 +ed_thresh5g=-77 +# +paparambwver=1 diff --git a/buildroot/board/technexion/imx7dpico/readme.txt b/buildroot/board/technexion/imx7dpico/readme.txt new file mode 100644 index 0000000..cda3f28 --- /dev/null +++ b/buildroot/board/technexion/imx7dpico/readme.txt @@ -0,0 +1,59 @@ +**************************** +Technexion i.MX7D Pico board +**************************** + +This file documents the Buildroot support for the Technexion i.MX7D Pico board. + +Build +===== + +First, configure Buildroot for the i.MX7D Pico board: + + make imx7dpico_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx7d-pico.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Flash the eMMC +============== + +In the U-Boot prompt lauch: + +=> ums 0 mmc 0 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC card have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on the eMMC card. Launch the following +command as root: + + dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use with care! *** + +For details about the medium image layout, see the definition in +board/freescale/common/imx/genimage.cfg.template. + +Boot the i.MX7D Pico board +========================== + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Enjoy! diff --git a/buildroot/board/technologic/ts4800/genimage.cfg b/buildroot/board/technologic/ts4800/genimage.cfg new file mode 100644 index 0000000..2070cc5 --- /dev/null +++ b/buildroot/board/technologic/ts4800/genimage.cfg @@ -0,0 +1,37 @@ +image boot.vfat { + vfat { + files = { + "zImage", + "imx51-ts4800.dtb" + } + } + size = 8M +} + +image sdcard.img { + hdimage { + } + + partition mbrboot { + in-partition-table = "no" + image = "mbrboot.bin" + offset = 0 + } + + partition uboot { + partition-type = 0xda + image = "u-boot.bin" + size = 256k + } + + partition kernel { + partition-type = 0xC + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 256M + } +} diff --git a/buildroot/board/technologic/ts4800/linux.fragment b/buildroot/board/technologic/ts4800/linux.fragment new file mode 100644 index 0000000..0451c86 --- /dev/null +++ b/buildroot/board/technologic/ts4800/linux.fragment @@ -0,0 +1,3 @@ +CONFIG_TOUCHSCREEN_TS4800=y +CONFIG_TS4800_WATCHDOG=y +CONFIG_TS4800_IRQ=y diff --git a/buildroot/board/technologic/ts4800/post-image.sh b/buildroot/board/technologic/ts4800/post-image.sh new file mode 100755 index 0000000..cc8e5da --- /dev/null +++ b/buildroot/board/technologic/ts4800/post-image.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# +# Copyright (C) 2015 Savoir-faire Linux +# Post image generation script. + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP=${BUILD_DIR}/.genimage_tmp + +rm -rf ${GENIMAGE_TMP} + +${HOST_DIR}/bin/genimage \ + --config ${GENIMAGE_CFG} \ + --rootpath ${TARGET_DIR} \ + --tmppath ${GENIMAGE_TMP} \ + --inputpath $BINARIES_DIR \ + --outputpath $BINARIES_DIR + +exit $? diff --git a/buildroot/board/technologic/ts4800/readme.txt b/buildroot/board/technologic/ts4800/readme.txt new file mode 100644 index 0000000..20b50e9 --- /dev/null +++ b/buildroot/board/technologic/ts4800/readme.txt @@ -0,0 +1,50 @@ +Technologic Systems TS-4800 +=========================== + +This document explains how to set up a basic Buildroot system for the +Technologic Systems TS-4800 System on Module. + +The TS-4800 is a TS-SOCKET macrocontroller board based on the Freescale +i.MX515 ARM Cortex-A8 CPU running at 800MHz. The TS-4800 features 10/100 +Ethernet, high speed USB host and device (OTG), microSD card, and 256MB +XNAND drive. More details on the board here: + http://wiki.embeddedarm.com/wiki/TS-4800 + +The TS-4800 is supported by mainline Linux as of 4.5 and by U-boot as of +v2016-07. The defconfig includes a custom 1st level bootloader located +in boot/ts4800-mbrboot. This one scans the SD card's partition table to +find partition having the 0xDA type, corresponding to U-boot. + +To build the default configuration you only have to: + + $ make ts4800_defconfig + $ make + +The ouput looks like: + output/images/ + ├── boot.vfat + ├── imx51-ts4800.dtb + ├── mbrboot.bin + ├── rootfs.ext2 + ├── rootfs.ext4 -> rootfs.ext2 + ├── rootfs.tar + ├── sdcard.img + ├── u-boot.bin + └── zImage + +The provided post-image script generates an image file containing 3 +partitions for U-boot, Linux kernel + device tree and rootfs +respectively: + $ fdisk output/images/sdcard.img + Device Boot Start End Blocks Id System + output/images/sdcard.img1 1 512 256 da Non-FS data + output/images/sdcard.img2 513 16896 8192 c W95 FAT32 (LBA) + output/images/sdcard.img3 16897 541184 262144 83 Linux + +This image can be directly written to an SD card. + + $ sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 + +In order to test the image on TS-4800 board, a TS baseboard, such as +TS-8xxx the serie, is needed to provide power, console header, RJ45 +connector etc. diff --git a/buildroot/board/technologic/ts4900/genimage.cfg b/buildroot/board/technologic/ts4900/genimage.cfg new file mode 100644 index 0000000..7e580eb --- /dev/null +++ b/buildroot/board/technologic/ts4900/genimage.cfg @@ -0,0 +1,10 @@ +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 256M + } +} diff --git a/buildroot/board/technologic/ts4900/post-image.sh b/buildroot/board/technologic/ts4900/post-image.sh new file mode 100755 index 0000000..cb966d8 --- /dev/null +++ b/buildroot/board/technologic/ts4900/post-image.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# +# Copyright (C) 2015-2016 Savoir-Faire Linux +# Post image generation script. + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG=$BOARD_DIR/genimage.cfg +GENIMAGE_TMP=$BUILD_DIR/.genimage_tmp + +rm -rf $GENIMAGE_TMP + +${HOST_DIR}/bin/genimage \ + --config ${GENIMAGE_CFG} \ + --rootpath $TARGET_DIR \ + --tmppath $GENIMAGE_TMP \ + --inputpath $BINARIES_DIR \ + --outputpath $BINARIES_DIR diff --git a/buildroot/board/technologic/ts4900/readme.txt b/buildroot/board/technologic/ts4900/readme.txt new file mode 100644 index 0000000..679454f --- /dev/null +++ b/buildroot/board/technologic/ts4900/readme.txt @@ -0,0 +1,52 @@ +Technologic Systems TS-4900 +=========================== + +This document explains how to set up a basic Buildroot system for the +Technologic Systems TS-4900 System on Module. + +The TS-4900 is a TS-SOCKET macrocontroller board based on the +Freescale i.MX6 Single or Quad Core ARM Cortex-A9 CPU clocked at +1GHz. The TS-4900 features Gigabit Ethernet, SATA II Port, PCI Express +Bus, high speed USB host and device (OTG), and microSD card. +More details on the board here: + http://wiki.embeddedarm.com/wiki/TS-4900 + +The TS-4900 is not currently supported by mainline Linux, so a +Technologic Systems Linux is used based on Linux 4.1. +The default U-boot configuration flashed scans the SD card to find the +0x83 partition type, corresponding to the rootfs. Then it will load +both uImage and dts from the /boot directory. +To build the default configuration you only have to: + + $ make ts4900_defconfig + $ make + +The output looks like: +output/images/ +├── imx6q-ts4900.dtb +├── rootfs.ext2 +├── rootfs.tar +├── sdcard.img +└── uImage + +Since both the uImage and the dts are contained in the /boot +directory, the provided post-image script generates an image file +containing only one partition for the rootfs: + + $ fdisk output/images/sdcard.img + Device Boot Start End Blocks Id System +output/images/sdcard.img1 1 524288 262144 83 Linux + +This image can be directly written to an SD card. + + $ sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 + +In order to test the image on TS-4900 board, a TS baseboard, such as +the TS-9xxx series, is needed to provide power, console header, RJ45 +connector etc. + +The bootloader comes pre-flashed on the board on an SPI flash. Since +updating the bootloader is risky and not trivial, it is not included +in the Buildroot defconfig. Refer to +http://wiki.embeddedarm.com/wiki/TS-4900#U-Boot for details on which +U-Boot config to use and how to flash it. diff --git a/buildroot/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg b/buildroot/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg new file mode 100644 index 0000000..64f8187 --- /dev/null +++ b/buildroot/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg @@ -0,0 +1,9 @@ +SERIAL 1 115200 +CONSOLE 0 + +DEFAULT linux + +LABEL linux + SAY Now booting the kernel from SYSLINUX... + LINUX /boot/bzImage + APPEND console=ttyS1,115200n8 root=/dev/sda1 rootfstype=ext4 rw diff --git a/buildroot/board/technologic/ts5500/linux-4.14.config b/buildroot/board/technologic/ts5500/linux-4.14.config new file mode 100644 index 0000000..eb81596 --- /dev/null +++ b/buildroot/board/technologic/ts5500/linux-4.14.config @@ -0,0 +1,111 @@ +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_PARTITION_ADVANCED=y +# CONFIG_X86_EXTENDED_PLATFORM is not set +CONFIG_MELAN=y +CONFIG_X86_GENERIC=y +CONFIG_X86_REBOOTFIXUPS=y +CONFIG_NOHIGHMEM=y +# CONFIG_COMPACTION is not set +# CONFIG_BOUNCE is not set +# CONFIG_RELOCATABLE is not set +# CONFIG_SUSPEND is not set +# CONFIG_ACPI is not set +CONFIG_CPU_IDLE=y +CONFIG_TS5500=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_DIAG is not set +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_BLK_DEV is not set +CONFIG_BLK_DEV_SD=y +# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_ATA=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_SATA_PMP is not set +CONFIG_ATA_GENERIC=y +CONFIG_PATA_LEGACY=y +CONFIG_NETDEVICES=y +# CONFIG_NET_CORE is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +CONFIG_NET_TULIP=y +CONFIG_DM9102=y +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EXAR is not set +# CONFIG_NET_VENDOR_HP is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_REALTEK is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_PHYLIB=y +CONFIG_DAVICOM_PHY=y +# CONFIG_WLAN is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_HW_RANDOM is not set +CONFIG_GPIOLIB=y +CONFIG_GPIO_TS5500=y +CONFIG_SENSORS_MAX197=y +CONFIG_WATCHDOG=y +CONFIG_SC520_WDT=y +CONFIG_USB=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_FTDI_SIO=y +CONFIG_USB_SERIAL_PL2303=y +# CONFIG_X86_PLATFORM_DEVICES is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_DMIID is not set +CONFIG_EXT4_FS=y +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +# CONFIG_MISC_FILESYSTEMS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=y +CONFIG_NLS_UTF8=y +# CONFIG_VIRTUALIZATION is not set +CONFIG_XZ_DEC=y diff --git a/buildroot/board/technologic/ts5500/readme.txt b/buildroot/board/technologic/ts5500/readme.txt new file mode 100644 index 0000000..1e73ab3 --- /dev/null +++ b/buildroot/board/technologic/ts5500/readme.txt @@ -0,0 +1,52 @@ +Technologic Systems TS-5x00 SBCs +================================ + +This document explains how to set up a basic Buildroot system for the +Technologic Systems TS-5x00 serie of x86-based Single Board Computers. + +TS-5x00 Single Board Computers are based on the AMD Elan520 processor. For more +information please have a look at http://wiki.embeddedarm.com/wiki/#AMD + +The kernel configuration works for any AMD Elan520-based SBCs, but the support +is enhanced for the TS-5500 and TS-5400 models (on-board devices registration +and additional sysfs attributes under /sys/devices/platform/). + +To build the default configuration you only have to: + + $ make ts5500_defconfig + $ make + +You will need a Compact Flash card of sufficient size and the first or only +partition configured as Linux type, with the bootable flag. + +You can transfer the system on the partition then optionally resize it with: + + # dd if=output/images/rootfs.ext4 of=/dev/sdX1 + # resize2fs /dev/sdX1 + +Or you can just extract the root filesystem to the partition with: + + # mount /dev/sdX1 /mnt + # tar -pxf output/images/rootfs.tar -C /mnt + # umount /mnt + +To install the bootloader, you will need to copy the MBR: + + # cat output/images/syslinux/mbr.bin > /dev/sdX + +Then install SYSLINUX in the mounted partition: + + # mount /dev/sdX1 /mnt + # output/host/sbin/extlinux --install /mnt/boot/syslinux + # umount /mnt + +IMPORTANT: In order for the board to boot the Compact Flash with a recent +config, the BIOS must use Logical Block Addressing (LBA). You can do it by +choosing "Ide 0: AUTOCONFIG, LBA" under "IDE DRIVE GEOMETRY" in the "Basic CMOS +Configuration" screen. Also, don't forget to set the 'active' (or 'bootable') +flag on partition 1. For details about the CMOS setup, please see: +http://wiki.embeddedarm.com/wiki/TS-5500#System_BIOS_Setup_Screens + +Connect a terminal program to the rs232 connector marked "COM2" +with baudrate set to 115200, insert the Compact Flash card into the socket, +power up the board, and enjoy. diff --git a/buildroot/board/technologic/ts7680/genimage.cfg b/buildroot/board/technologic/ts7680/genimage.cfg new file mode 100644 index 0000000..b559982 --- /dev/null +++ b/buildroot/board/technologic/ts7680/genimage.cfg @@ -0,0 +1,14 @@ +image sdcard.img { + hdimage { + } + + partition unused { + size = 512B + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + size = 256M + } +} diff --git a/buildroot/board/technologic/ts7680/readme.txt b/buildroot/board/technologic/ts7680/readme.txt new file mode 100644 index 0000000..4ddd491 --- /dev/null +++ b/buildroot/board/technologic/ts7680/readme.txt @@ -0,0 +1,51 @@ +Technologic Systems TS-7680 SBC +=============================== + +This document explains how to set up a basic Buildroot system for +the Technologic Systems TS-7680 Single Board Computer. + +The TS-7680 SBC is based on the Freescale i.MX286 ARM ARM926EJ-S +running at 454MHz. The TS-7680 features are 10/100 Ethernet ports, +Wi-Fi, microSD card, eMMC, NOR Flash, USB host port, CAN ports, +relays and ADC/DAC. More details on the board here: +https://wiki.embeddedarm.com/wiki/TS-7680 + +The TS-7680 uses a 3.14.28 Linux kernel provided by +Technologic Systems. + +To build the default configuration you only have to run: + + $ make ts7680_defconfig + $ make + +The output looks like: +output/images +├── imx28-ts7680.dtb +├── rootfs.ext2 +├── rootfs.ext4 -> rootfs.ext2 +├── rootfs.tar +├── sdcard.img +└── uImage + +The provided genimage configuration generates an image file containing +two partitions. The first one is unused, but mandatory as the +TS-7680 built-in bootloader loads the Linux uImage from the /boot +directory in the second partition. The second partition contains the +rootfs with the Linux uImage into the /boot directory. + + $ fdisk output/images/sdcard.img + output/images/sdcard.img1 1 1 1 512B 0 Empty + output/images/sdcard.img2 2 524289 524288 256M 83 Linux + +This image can be directly written to an SD card. + + $ sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 + +To boot with Buildroot, insert this SD card on the board, make sure +the SD jumper is present and the U-Boot jumper is not. + +The bootloader comes pre-flashed on the board on an SPI flash. Since +updating the bootloader is risky and not trivial, it is not included +in the Buildroot defconfig. Refer to +https://wiki.embeddedarm.com/wiki/TS-7680#U-Boot for details on +which U-Boot config to use and how to flash it. diff --git a/buildroot/board/toradex/apalis-imx6/genimage.cfg b/buildroot/board/toradex/apalis-imx6/genimage.cfg new file mode 100644 index 0000000..fe359bd --- /dev/null +++ b/buildroot/board/toradex/apalis-imx6/genimage.cfg @@ -0,0 +1,15 @@ +# Minimal SD card image for the Toradex Apalis i.MX6 COM +# +# It does not need a boot section for a bootloader since it is booted +# from its internal flash memory (eMMC). + +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + size = 512M + } +} diff --git a/buildroot/board/toradex/apalis-imx6/post-image.sh b/buildroot/board/toradex/apalis-imx6/post-image.sh new file mode 100755 index 0000000..2b49f9d --- /dev/null +++ b/buildroot/board/toradex/apalis-imx6/post-image.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +GENIMAGE_CFG="$(dirname $0)/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +# copy the uEnv.txt to the output/images directory +cp board/toradex/apalis-imx6/uEnv.txt $BINARIES_DIR/uEnv.txt + +rm -rf "${GENIMAGE_TMP}" + +# generate rootfs.img +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + +RET=${?} +exit ${RET} diff --git a/buildroot/board/toradex/apalis-imx6/readme.txt b/buildroot/board/toradex/apalis-imx6/readme.txt new file mode 100644 index 0000000..feddad6 --- /dev/null +++ b/buildroot/board/toradex/apalis-imx6/readme.txt @@ -0,0 +1,53 @@ +Toradex Apalis i.MX6 Computer on Module + +Intro +===== + +The Apalis iMX6 is a small form-factor Computer on Module that comes +in both quad core and dual core versions based on Freescale i.MX6Q and +Freescale i.MX6D SoCs respectively. The Cortex A9 quad core and dual +core CPU peaks at 1 GHz for commercial temperature variant, while the +industrial temperature variant has a peak frequency of 800 MHz. + +https://www.toradex.com/computer-on-modules/apalis-arm-family/freescale-imx-6 + +It supports two carrier boards: + +Apalis Evaluation Board +https://www.toradex.com/products/carrier-boards/apalis-evaluation-board + +Ixora Carrier Board +https://www.toradex.com/products/carrier-boards/ixora-carrier-board + +How to build it +=============== + +Configure Buildroot: + + $ make toradex_apalis_imx6_defconfig + +Compile everything and build the rootfs image: + + $ make + +How to boot the image +===================== + +The board only boots from its internal flash memory eMMC, so the +bootloader image should be copied to it, following the procedures +described in Toradex website. + +http://developer.toradex.com/knowledge-base/flashing-linux-on-imx6-modules + +Buildroot prepares a "sdcard.img" in output/images/ with the kernel +image, device tree and a root filesystem, ready to be dumped on an SD +card. + + $ dd if=output/images/sdcard.img of=/dev/sdX bs=1M + +To boot from the SD card, you should change the U-Boot +environment. Since U-Boot is running from internal eMMC, you will need +to access its command line prompt and manually set the necessary +variables to boot from the external SD card. For convenience, you can +use uEnv.txt provided in output/images/ as a reference to create the +necessary U-Boot variables to boot from the SD card. diff --git a/buildroot/board/toradex/apalis-imx6/uEnv.txt b/buildroot/board/toradex/apalis-imx6/uEnv.txt new file mode 100644 index 0000000..96ab80c --- /dev/null +++ b/buildroot/board/toradex/apalis-imx6/uEnv.txt @@ -0,0 +1,6 @@ +boot_file=zImage +fdt_file=imx6q-apalis_v1_0-ixora.dtb +sdargs=ip=off root=/dev/mmcblk1p1 rw,noatime rootfstype=ext4 rootwait +sddtbload=ext2load mmc 2:1 ${fdt_addr_r} boot/${fdt_file} +sdkernelload=ext2load mmc 2:1 ${kernel_addr_r} boot/${boot_file} +bootcmd=run setup; setenv bootargs ${defargs} ${sdargs} ${setupargs} ${vidargs}; echo Booting from SD card...; run sddtbload; run sdkernelload; bootz ${kernel_addr_r} - ${fdt_addr_r} diff --git a/buildroot/board/udoo/mx6qdl/linux.fragment b/buildroot/board/udoo/mx6qdl/linux.fragment new file mode 100644 index 0000000..1d25099 --- /dev/null +++ b/buildroot/board/udoo/mx6qdl/linux.fragment @@ -0,0 +1 @@ +# CONFIG_USB is not set diff --git a/buildroot/board/udoo/mx6qdl/readme.txt b/buildroot/board/udoo/mx6qdl/readme.txt new file mode 100644 index 0000000..cf1a610 --- /dev/null +++ b/buildroot/board/udoo/mx6qdl/readme.txt @@ -0,0 +1,17 @@ +Udoo MX6Q/DL board + +For information about MX6 Udoo boards: +http://www.udoo.org/ + +To build a minimal support for these boards: + + $ make mx6udoo_defconfig + $ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on a micro SD card: + +dd if=output/images/sdcard.img of=/dev/ + +For details about the medium image layout, see the definition in +board/udoo/mx6qdl/genimage.cfg. diff --git a/buildroot/board/udoo/neo/boot.scr.txt b/buildroot/board/udoo/neo/boot.scr.txt new file mode 100644 index 0000000..7a8aa4b --- /dev/null +++ b/buildroot/board/udoo/neo/boot.scr.txt @@ -0,0 +1,7 @@ +setenv finduuid "part uuid mmc 0:1 uuid" +run finduuid +run findfdt +setenv bootargs "console=ttymxc0,115200 root=PARTUUID=${uuid} rootwait rootfstype=ext4" +load mmc 0:1 ${fdt_addr} boot/${fdtfile} +load mmc 0:1 ${loadaddr} boot/zImage +bootz ${loadaddr} - ${fdt_addr} diff --git a/buildroot/board/udoo/neo/genimage.cfg b/buildroot/board/udoo/neo/genimage.cfg new file mode 100644 index 0000000..4620912 --- /dev/null +++ b/buildroot/board/udoo/neo/genimage.cfg @@ -0,0 +1,32 @@ +# Minimal SD card image for the MX6SX Udoo Neo board +# +# The SD card must have at least 1 MB free at the beginning. +# U-Boot and its environment are dumped as is. +# A single root filesystem partition is required (Ext4 in this case). +# +# For details about the layout, see: +# http://wiki.wandboard.org/index.php/Boot-process + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1K + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.img" + offset = 69K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 1M + size = 512M + } +} diff --git a/buildroot/board/udoo/neo/post-build.sh b/buildroot/board/udoo/neo/post-build.sh new file mode 100755 index 0000000..43e091c --- /dev/null +++ b/buildroot/board/udoo/neo/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +$HOST_DIR/bin/mkimage -A arm -O linux -T script -C none \ +-n "boot script" -d $BOARD_DIR/boot.scr.txt $BOARD_DIR/boot.scr + +install -m 0644 -D $BOARD_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/buildroot/board/udoo/neo/post-image.sh b/buildroot/board/udoo/neo/post-image.sh new file mode 100755 index 0000000..18e76aa --- /dev/null +++ b/buildroot/board/udoo/neo/post-image.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + diff --git a/buildroot/board/udoo/neo/readme.txt b/buildroot/board/udoo/neo/readme.txt new file mode 100644 index 0000000..f037ad4 --- /dev/null +++ b/buildroot/board/udoo/neo/readme.txt @@ -0,0 +1,16 @@ +MX6X Udoo Neo board + +http://www.udoo.org/udoo-neo/ + +To build a minimal support for these boards: + + $ make mx6sx_udoo_neo_defconfig + $ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on an SD card: + +dd if=output/images/sdcard.img of=/dev/ + +For details about the medium image layout, see the definition in +board/udoo/neo/genimage.cfg. diff --git a/buildroot/board/wandboard/boot.scr.txt b/buildroot/board/wandboard/boot.scr.txt new file mode 100644 index 0000000..7a8aa4b --- /dev/null +++ b/buildroot/board/wandboard/boot.scr.txt @@ -0,0 +1,7 @@ +setenv finduuid "part uuid mmc 0:1 uuid" +run finduuid +run findfdt +setenv bootargs "console=ttymxc0,115200 root=PARTUUID=${uuid} rootwait rootfstype=ext4" +load mmc 0:1 ${fdt_addr} boot/${fdtfile} +load mmc 0:1 ${loadaddr} boot/zImage +bootz ${loadaddr} - ${fdt_addr} diff --git a/buildroot/board/wandboard/genimage.cfg b/buildroot/board/wandboard/genimage.cfg new file mode 100644 index 0000000..ad4a6a5 --- /dev/null +++ b/buildroot/board/wandboard/genimage.cfg @@ -0,0 +1,32 @@ +# Minimal SD card image for the Wandboard +# +# The SD card must have at least 1 MB free at the beginning. +# U-Boot and its environment are dumped as is. +# A single root filesystem partition is required (Ext4 in this case). +# +# For details about the layout, see: +# http://wiki.wandboard.org/index.php/Boot-process + +image sdcard.img { + hdimage { + } + + partition spl { + in-partition-table = "no" + image = "SPL" + offset = 1024 + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot.img" + offset = 70656 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 1M + size = 512M + } +} diff --git a/buildroot/board/wandboard/post-build.sh b/buildroot/board/wandboard/post-build.sh new file mode 100755 index 0000000..43e091c --- /dev/null +++ b/buildroot/board/wandboard/post-build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +BOARD_DIR="$(dirname $0)" + +$HOST_DIR/bin/mkimage -A arm -O linux -T script -C none \ +-n "boot script" -d $BOARD_DIR/boot.scr.txt $BOARD_DIR/boot.scr + +install -m 0644 -D $BOARD_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/buildroot/board/wandboard/post-image.sh b/buildroot/board/wandboard/post-image.sh new file mode 100755 index 0000000..18e76aa --- /dev/null +++ b/buildroot/board/wandboard/post-image.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" + diff --git a/buildroot/board/wandboard/readme.txt b/buildroot/board/wandboard/readme.txt new file mode 100644 index 0000000..adc4e5c --- /dev/null +++ b/buildroot/board/wandboard/readme.txt @@ -0,0 +1,14 @@ +Wandboard + +http://www.wandboard.org + +To build a minimal support for this board: + + $ make wandboard_defconfig + $ make + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped on an SD card. + +For details about the medium image layout, see the definition in +board/wandboard/genimage.cfg. diff --git a/buildroot/board/warp7/readme.txt b/buildroot/board/warp7/readme.txt new file mode 100644 index 0000000..47458e9 --- /dev/null +++ b/buildroot/board/warp7/readme.txt @@ -0,0 +1,104 @@ +***************** +Warp i.MX7S board +***************** + +This file documents the Buildroot support for the Warp i.MX7S board. + +Build +===== + +First, configure Buildroot for the Warp i.MX7S board: + + make warp7_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - imx7s-warp.dtb + - rootfs.ext4 + - rootfs.tar + - sdcard.img + - u-boot.imx + - zImage + +Flash the eMMC image +==================== + +In the U-Boot prompt lauch: + +=> ums 0 mmc 0 + +This will mount the eMMC content in the host PC as a mass storage device. + +To determine the device associated to the eMMC have a look in the +/proc/partitions file: + + cat /proc/partitions + +Buildroot prepares a bootable "sdcard.img" image in the output/images/ +directory, ready to be dumped into the eMMC. Launch the following +command: + +sudo dd if=output/images/sdcard.img of=/dev/ + +*** WARNING! This will destroy all the eMMC content. Use it with care! *** + +For details about the medium image layout, see the definition in +board/warp7/genimage.cfg. + +How to recover from a bad eMMC image +==================================== + +In case a bad U-Boot has been flashed to the eMMC and the board no +longer boots, it is possible to recover using the imx_usb_loader utility. + +Put the warp7 board in USB download mode by removing the CPU board +from the base board then putting switch 2 in the upper position. + +Connect a USB to serial adapter between the host PC and warp7 serial +USB port, and also a USB cable between the OTG warp7 port and the host +PC. + +Copy u-boot.imx to the imx_usb_loader folder. + +Load u-boot.imx via USB: + +$ sudo ./imx_usb u-boot.imx + +Then U-Boot should start and its messages will appear in the console program. + +Open a terminal program such as minicom. + +Use the default environment variables: + +=> env default -f -a +=> saveenv +=> ums 0 mmc 0 + +sudo dd if=output/images/sdcard.img of=/dev/ + +Put warp7 back in eMMC boot mode by placing switch 2 in the lower position +and reboot the board. + +Boot the Warp i.MX7S board +========================== + +To boot your newly created system: +- put a micro USB cable into the Debug USB Port and connect using a terminal + emulator at 115200 bps, 8n1; +- power on the board. + +Using Wifi +========== + +# modprobe brcmfmac +# iwconfig wlan0 essid ACCESSPOINTNAME +# wpa_passphrase ACCESSPOINTNAME > /etc/wpa.conf +(enter the wifi password and press enter) +# wpa_supplicant -Dwext -iwlan0 -c /etc/wpa.conf & +# udhcpc -i wlan0 +# ping buildroot.org + +Enjoy! diff --git a/buildroot/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt b/buildroot/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt new file mode 100644 index 0000000..a1dc203 --- /dev/null +++ b/buildroot/board/warp7/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt @@ -0,0 +1,42 @@ +# 2.4 GHz, 20 MHz BW mode +manfid=0x2d0 +prodid=0x0726 +vendid=0x14e4 +devid=0x43e2 +boardtype=0x0726 +boardrev=0x1202 +boardnum=22 +macaddr=00:90:4c:c5:12:38 +sromrev=11 +boardflags=0x00404201 +boardflags3=0x08000000 +xtalfreq=37400 +nocrc=1 +ag0=0 +aa2g=1 +ccode=ALL +#pa0itssit=0x20 +extpagain2g=0 +pa2ga0=-168,7161,-820 +AvVmid_c0=0x0,0xc8 +cckpwroffset0=5 +maxp2ga0=90 +#txpwrbckof=6 +cckbw202gpo=0 +legofdmbw202gpo=0x66111111 +mcsbw202gpo=0x77711111 +propbw202gpo=0xdd +ofdmdigfilttype=18 +ofdmdigfilttypebe=18 +papdmode=1 +papdvalidtest=1 +pacalidx2g=48 +papdepsoffset=-22 +papdendidx=58 +il0macaddr=00:90:4c:c5:12:38 +wl0id=0x431b +#muxenab=0x10 +#BT COEX deferral limit setting +#btc_params 8 45000 +#btc_params 10 20000 +#spurconfig=0x3 diff --git a/buildroot/board/zynq/genimage.cfg b/buildroot/board/zynq/genimage.cfg new file mode 100644 index 0000000..76e61c3 --- /dev/null +++ b/buildroot/board/zynq/genimage.cfg @@ -0,0 +1,25 @@ +image boot.vfat { + vfat { + files = { + "boot.bin", + "u-boot.img", + "devicetree.dtb", + "uImage" + } + file uramdisk.image.gz { + image = "rootfs.cpio.uboot" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } +} diff --git a/buildroot/board/zynq/post-image.sh b/buildroot/board/zynq/post-image.sh new file mode 100755 index 0000000..0cf92e0 --- /dev/null +++ b/buildroot/board/zynq/post-image.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +# By default U-Boot loads DTB from a file named "devicetree.dtb", so +# let's use a symlink with that name that points to the *first* +# devicetree listed in the config. + +FIRST_DT=$(sed -n \ + 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([a-z0-9\-]*\).*"$/\1/p' \ + ${BR2_CONFIG}) + +[ -z "${FIRST_DT}" ] || ln -fs ${FIRST_DT}.dtb ${BINARIES_DIR}/devicetree.dtb + +support/scripts/genimage.sh -c board/zynq/genimage.cfg diff --git a/buildroot/board/zynq/readme.txt b/buildroot/board/zynq/readme.txt new file mode 100644 index 0000000..1627349 --- /dev/null +++ b/buildroot/board/zynq/readme.txt @@ -0,0 +1,86 @@ +This is the Buildroot support for Zynq boards. Zynq boards are available from +Xilinx and some third party vendors, but the build procedure is very similar. + +Currently, three boards are natively supported by Buildroot: + - Xilinx ZC706 board (zynq_zc706_defconfig) + - Avnet ZedBoard (zynq_zed_defconfig) + - Avnet MicroZed (zynq_microzed_defconfig) + +Steps to create a working system for a Zynq board: + +1) Configuration (do one of the following) + make zynq_zc706_defconfig (ZC706) + make zynq_zed_defconfig (Zedboard) + make zynq_microzed_defconfig (MicroZed) +2) make +3) All needed files will be available in the output/images directory. + The sdcard.img file is a complete bootable image ready to be written + on the boot medium. To install it, simply copy the image to an SD + card: + + # dd if=output/images/sdcard.img of=/dev/sdX + + Where 'sdX' is the device node of the uSD. +4) boot your board + +You can alter the booting procedure by creating a file uEnv.txt +in the root of the SD card. It is a plain text file in format += one per line: + +kernel_image=myimage +modeboot=myboot +myboot=... + +Note: +The DTB for MicroZed is the same as the one for the Zedboard (zynq-zed.dtb), +and this is the recommended solution, see +https://forums.xilinx.com/t5/Embedded-Linux/Microzed-default-device-tree-dts/td-p/432856. + +References: + - ZC706 information including schematics, reference designs, and manuals are + available from + http://www.xilinx.com/products/boards-and-kits/ek-z7-zc706-g.html. + + - Zedboard/Microzed information including schematics, reference designs, and + manuals are available from http://www.zedboard.org . + +Support for other boards: + +If you want to build a system for other boards based on the same SoC +(for ex. Digilent Zybo board), and the board is already supported by +the upstream kernel and U-Boot, you simply need to change the +following Buildroot options: + + - Kernel Device Tree file name (BR2_LINUX_KERNEL_INTREE_DTS_NAME) + - U-Boot board defconfig (BR2_TARGET_UBOOT_BOARD_DEFCONFIG) + +Custom ps7_init_gpl.c/h support: + +To generate a working boot.bin image, ps7_init_gpl.c/h are required in +the U-Boot source tree. Without those files, boot.bin will be built +successfully but it will not be functional at all. Those files are +output from the Xilinx tools, but for convenience, U-Boot includes the +default ps7_init_gpl.c/h of popular boards. Those files may need to be +updated for any programmable logic customizations which impact +ps7_init (clock/pin setup & mapping/AXI bridge setup/etc). See +board/xilinx/zynq/ directory of U-Boot for natively supported ps7_init +files. If the ps7_init files for your board are not found in U-Boot, +you need to add them by yourself. + +1) Start with a defconfig supported by Buildroot (e.g. Zedboard) + make zynq_zed_defconfig + +2) make uboot-menuconfig + Visit the following menu and enable CONFIG_ZYNQ_CUSTOM_INIT. + + ARM architecture ---> + [*] Use custom ps7_init provided by Xilinx tool + +3) Copy ps7_init_gpl.c/h generated by the Xilinx tools into + output/build/uboot-xilinx-/board/xilinx/zynq/custom_hw_platform/ + +4) make + +Note: The files in step 3 will need to be re-copied after cleaning the +output directory and at this time, there is no way to save them as +part of the buildroot configuration, except as a U-Boot patch. diff --git a/buildroot/boot/Config.in b/buildroot/boot/Config.in new file mode 100644 index 0000000..3687c41 --- /dev/null +++ b/buildroot/boot/Config.in @@ -0,0 +1,23 @@ +menu "Bootloaders" + +source "boot/afboot-stm32/Config.in" +source "boot/at91bootstrap/Config.in" +source "boot/at91bootstrap3/Config.in" +source "boot/at91dataflashboot/Config.in" +source "boot/arm-trusted-firmware/Config.in" +source "boot/barebox/Config.in" +source "boot/binaries-marvell/Config.in" +source "boot/boot-wrapper-aarch64/Config.in" +source "boot/grub2/Config.in" +source "boot/gummiboot/Config.in" +source "boot/lpc32xxcdl/Config.in" +source "boot/mv-ddr-marvell/Config.in" +source "boot/mxs-bootlets/Config.in" +source "boot/s500-bootloader/Config.in" +source "boot/syslinux/Config.in" +source "boot/ts4800-mbrboot/Config.in" +source "boot/uboot/Config.in" +source "boot/vexpress-firmware/Config.in" +source "boot/xloader/Config.in" + +endmenu diff --git a/buildroot/boot/afboot-stm32/0001-Use-ld-instead-of-gcc-for-linking.patch b/buildroot/boot/afboot-stm32/0001-Use-ld-instead-of-gcc-for-linking.patch new file mode 100644 index 0000000..3f359dc --- /dev/null +++ b/buildroot/boot/afboot-stm32/0001-Use-ld-instead-of-gcc-for-linking.patch @@ -0,0 +1,61 @@ +From 0d581abe6620ac69adec321b94390e009802f36a Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 13 Mar 2016 14:32:33 +0100 +Subject: [PATCH] Use ld instead of gcc for linking + +Signed-off-by: Thomas Petazzoni +--- + Makefile | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index ce40314..271bb4f 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,6 +1,7 @@ + CROSS_COMPILE ?= arm-none-eabi- + + CC = $(CROSS_COMPILE)gcc ++LD = $(CROSS_COMPILE)ld + OBJCOPY = $(CROSS_COMPILE)objcopy + OBJDUMP = $(CROSS_COMPILE)objdump + SIZE = $(CROSS_COMPILE)size +@@ -10,7 +11,7 @@ OPENOCD = openocd + CFLAGS := -mthumb -mcpu=cortex-m4 + CFLAGS += -ffunction-sections -fdata-sections + CFLAGS += -Os -std=gnu99 -Wall +-LDFLAGS := -nostartfiles -Wl,--gc-sections ++LINKERFLAGS := -nostartfiles --gc-sections + + obj-y += gpio.o mpu.o + obj-f4 += $(obj-y) usart-f4.o +@@ -22,22 +23,22 @@ all: stm32f429i-disco stm32429i-eval stm32f469i-disco stm32746g-eval + $(CC) -c $(CFLAGS) $< -o $@ + + stm32f429i-disco: stm32f429i-disco.o $(obj-f4) +- $(CC) -T stm32f429.lds $(LDFLAGS) -o stm32f429i-disco.elf stm32f429i-disco.o $(obj-f4) ++ $(LD) -T stm32f429.lds $(LINKERFLAGS) -o stm32f429i-disco.elf stm32f429i-disco.o $(obj-f4) + $(OBJCOPY) -Obinary stm32f429i-disco.elf stm32f429i-disco.bin + $(SIZE) stm32f429i-disco.elf + + stm32429i-eval: stm32429i-eval.o $(obj-f4) +- $(CC) -T stm32f429.lds $(LDFLAGS) -o stm32429i-eval.elf stm32429i-eval.o $(obj-f4) ++ $(LD) -T stm32f429.lds $(LINKERFLAGS) -o stm32429i-eval.elf stm32429i-eval.o $(obj-f4) + $(OBJCOPY) -Obinary stm32429i-eval.elf stm32429i-eval.bin + $(SIZE) stm32429i-eval.elf + + stm32f469i-disco: stm32f469i-disco.o $(obj-f4) +- $(CC) -T stm32f429.lds $(LDFLAGS) -o stm32f469i-disco.elf stm32f469i-disco.o $(obj-f4) ++ $(LD) -T stm32f429.lds $(LINKERFLAGS) -o stm32f469i-disco.elf stm32f469i-disco.o $(obj-f4) + $(OBJCOPY) -Obinary stm32f469i-disco.elf stm32f469i-disco.bin + $(SIZE) stm32f469i-disco.elf + + stm32746g-eval: stm32746g-eval.o $(obj-f7) +- $(CC) -T stm32f429.lds $(LDFLAGS) -o stm32746g-eval.elf stm32746g-eval.o $(obj-f7) ++ $(LD) -T stm32f429.lds $(LINKERFLAGS) -o stm32746g-eval.elf stm32746g-eval.o $(obj-f7) + $(OBJCOPY) -Obinary stm32746g-eval.elf stm32746g-eval.bin + $(SIZE) stm32746g-eval.elf + +-- +2.6.4 + diff --git a/buildroot/boot/afboot-stm32/Config.in b/buildroot/boot/afboot-stm32/Config.in new file mode 100644 index 0000000..309b9e0 --- /dev/null +++ b/buildroot/boot/afboot-stm32/Config.in @@ -0,0 +1,7 @@ +config BR2_TARGET_AFBOOT_STM32 + bool "afboot-stm32" + depends on BR2_arm + help + afboot-stm32 is a very small bootloader for STM32 platforms + + https://github.com/mcoquelin-stm32/afboot-stm32 diff --git a/buildroot/boot/afboot-stm32/afboot-stm32.hash b/buildroot/boot/afboot-stm32/afboot-stm32.hash new file mode 100644 index 0000000..d23b74a --- /dev/null +++ b/buildroot/boot/afboot-stm32/afboot-stm32.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 dbd715c8b99f7d266f74a04707a4dac76b75b31321f24dee5256a6348260530c afboot-stm32-v0.1.tar.gz diff --git a/buildroot/boot/afboot-stm32/afboot-stm32.mk b/buildroot/boot/afboot-stm32/afboot-stm32.mk new file mode 100644 index 0000000..042b21f --- /dev/null +++ b/buildroot/boot/afboot-stm32/afboot-stm32.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# afboot-stm32 +# +################################################################################ + +AFBOOT_STM32_VERSION = v0.1 +AFBOOT_STM32_SITE = $(call github,mcoquelin-stm32,afboot-stm32,$(AFBOOT_STM32_VERSION)) + +define AFBOOT_STM32_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CROSS_COMPILE=$(TARGET_CROSS) all +endef + +define AFBOOT_STM32_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/stm32*.bin $(BINARIES_DIR) +endef + +$(eval $(generic-package)) diff --git a/buildroot/boot/arm-trusted-firmware/Config.in b/buildroot/boot/arm-trusted-firmware/Config.in new file mode 100644 index 0000000..7aef87c --- /dev/null +++ b/buildroot/boot/arm-trusted-firmware/Config.in @@ -0,0 +1,89 @@ +config BR2_TARGET_ARM_TRUSTED_FIRMWARE + bool "ARM Trusted Firmware (ATF)" + depends on BR2_aarch64 && BR2_TARGET_UBOOT + help + Enable this option if you want to build the ATF for your ARM + based embedded device. + + https://github.com/ARM-software/arm-trusted-firmware + +if BR2_TARGET_ARM_TRUSTED_FIRMWARE +choice + prompt "ATF Version" + help + Select the specific ATF version you want to use + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION + bool "v1.4" + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION + string "URL of custom ATF tarball" + +endif + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_VERSION + string + default "v1.4" if BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION + default "custom" if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL + default BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION \ + if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT + +if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by Git + E.G. a sha id, a tag, .. + +endif + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM + string "ATF platform" + help + Target plaform to build for. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP + bool "Build FIP image" + help + This option enables building the FIP image (Firmware Image + Package). This is typically the image format used by + platforms were ATF encapsulates the second stage bootloader + (such as U-Boot). + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31 + bool "Build BL31 image" + help + This option enables building the BL31 image. This is + typically used on platforms where another bootloader (e.g + U-Boot) encapsulates ATF BL31. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33 + bool "Use U-Boot as BL33" + depends on BR2_TARGET_UBOOT + help + This option allows to embed u-boot.bin as the BL33 part of + the ARM Trusted Firmware. It ensures that the u-boot package + gets built before ATF, and that the appropriate BL33 + variable pointing to u-boot.bin is passed when building ATF. + +config BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES + string "Additional ATF build variables" + help + Additional parameters for the ATF build + E.G. 'DEBUG=1 LOG_LEVEL=20' + +endif diff --git a/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash b/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash new file mode 100644 index 0000000..3940718 --- /dev/null +++ b/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 6dae02acd85278394bfad6e2683e186e5332a711e4491ac4632ad6480f6e5494 arm-trusted-firmware-v1.4.tar.gz +sha256 487795b8023df866259fa159bab94706b747fb0d623b7913f1c4955c0ab5f164 license.rst diff --git a/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk b/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk new file mode 100644 index 0000000..4bac916 --- /dev/null +++ b/buildroot/boot/arm-trusted-firmware/arm-trusted-firmware.mk @@ -0,0 +1,105 @@ +################################################################################ +# +# arm-trusted-firmware +# +################################################################################ + +ARM_TRUSTED_FIRMWARE_VERSION = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_VERSION)) +ARM_TRUSTED_FIRMWARE_LICENSE = BSD-3-Clause +ARM_TRUSTED_FIRMWARE_LICENSE_FILES = license.rst + +ifeq ($(ARM_TRUSTED_FIRMWARE_VERSION),custom) +# Handle custom ATF tarballs as specified by the configuration +ARM_TRUSTED_FIRMWARE_TARBALL = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION)) +ARM_TRUSTED_FIRMWARE_SITE = $(patsubst %/,%,$(dir $(ARM_TRUSTED_FIRMWARE_TARBALL))) +ARM_TRUSTED_FIRMWARE_SOURCE = $(notdir $(ARM_TRUSTED_FIRMWARE_TARBALL)) +BR_NO_CHECK_HASH_FOR += $(ARM_TRUSTED_FIRMWARE_SOURCE) +else ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT),y) +ARM_TRUSTED_FIRMWARE_SITE = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL)) +ARM_TRUSTED_FIRMWARE_SITE_METHOD = git +BR_NO_CHECK_HASH_FOR += $(ARM_TRUSTED_FIRMWARE_SOURCE) +else +ARM_TRUSTED_FIRMWARE_SITE = $(call github,ARM-software,arm-trusted-firmware,$(ARM_TRUSTED_FIRMWARE_VERSION)) +endif + +ARM_TRUSTED_FIRMWARE_INSTALL_IMAGES = YES + +ARM_TRUSTED_FIRMWARE_PLATFORM = $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM)) + +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + $(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES)) \ + PLAT=$(ARM_TRUSTED_FIRMWARE_PLATFORM) + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += BL33=$(BINARIES_DIR)/u-boot.bin +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += uboot +endif + +ifeq ($(BR2_TARGET_VEXPRESS_FIRMWARE),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += SCP_BL2=$(BINARIES_DIR)/scp-fw.bin +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += vexpress-firmware +endif + +ifeq ($(BR2_TARGET_BINARIES_MARVELL),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += SCP_BL2=$(BINARIES_DIR)/scp-fw.bin +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += binaries-marvell +endif + +ifeq ($(BR2_TARGET_MV_DDR_MARVELL),y) +ARM_TRUSTED_FIRMWARE_MAKE_OPTS += MV_DDR_PATH=$(MV_DDR_MARVELL_DIR) +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += mv-ddr-marvell +endif + +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS = all + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP),y) +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS += fip +ARM_TRUSTED_FIRMWARE_DEPENDENCIES += host-openssl +# fiptool only exists in newer (>= 1.3) versions of ATF, so we build +# it conditionally. We need to explicitly build it as it requires +# OpenSSL, and therefore needs to be passed proper variables to find +# the host OpenSSL. +define ARM_TRUSTED_FIRMWARE_BUILD_FIPTOOL + if test -d $(@D)/tools/fiptool; then \ + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/tools/fiptool \ + $(ARM_TRUSTED_FIRMWARE_MAKE_OPTS) \ + CPPFLAGS="$(HOST_CPPFLAGS)" \ + LDLIBS="$(HOST_LDFLAGS) -lcrypto" ; \ + fi +endef +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31),y) +ARM_TRUSTED_FIRMWARE_MAKE_TARGETS += bl31 +endif + +define ARM_TRUSTED_FIRMWARE_BUILD_CMDS + $(ARM_TRUSTED_FIRMWARE_BUILD_FIPTOOL) + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) $(ARM_TRUSTED_FIRMWARE_MAKE_OPTS) \ + $(ARM_TRUSTED_FIRMWARE_MAKE_TARGETS) +endef + +define ARM_TRUSTED_FIRMWARE_INSTALL_IMAGES_CMDS + cp -dpf $(@D)/build/$(ARM_TRUSTED_FIRMWARE_PLATFORM)/release/*.bin $(BINARIES_DIR)/ +endef + +# Configuration check +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE)$(BR_BUILDING),yy) + +ifeq ($(ARM_TRUSTED_FIRMWARE_VERSION),custom) +ifeq ($(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION))),) +$(error No tarball location specified. Please check BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION)) +endif +endif + +ifeq ($(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT),y) +ifeq ($(call qstrip,$(BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL)),) +$(error No repository specified. Please check BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL) +endif +endif + +endif + +$(eval $(generic-package)) diff --git a/buildroot/boot/at91bootstrap/Config.in b/buildroot/boot/at91bootstrap/Config.in new file mode 100644 index 0000000..57fdeda --- /dev/null +++ b/buildroot/boot/at91bootstrap/Config.in @@ -0,0 +1,47 @@ +config BR2_TARGET_AT91BOOTSTRAP + depends on BR2_arm926t + bool "AT91 Bootstrap" + help + AT91Bootstrap is a first level bootloader for the Atmel AT91 + devices. It integrates algorithms for: + - Device initialization such as clock configuration, PIO settings... + - Peripheral drivers such as PIO, PMC or SDRAMC... + - Physical media algorithm such as DataFlash, NandFlash, NOR Flash... + +if BR2_TARGET_AT91BOOTSTRAP + +config BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR + string "custom patch dir" + help + If your board requires custom patches, add the path to the + directory containing the patches here. The patches must be + named at91bootstrap--.patch. + + Most users may leave this empty + +config BR2_TARGET_AT91BOOTSTRAP_BOARD + string "Bootstrap board" + default "" + help + This is used to do a make _config + +choice + prompt "Boot Memory" + default BR2_TARGET_AT91BOOTSTRAP_DATAFLASH + help + Select Chip for which AT91 bootstrap should be built + +config BR2_TARGET_AT91BOOTSTRAP_DATAFLASH + bool "Data Flash" + +config BR2_TARGET_AT91BOOTSTRAP_NANDFLASH + bool "NAND Flash" + +endchoice + +config BR2_TARGET_AT91BOOTSTRAP_MEMORY + string + default "dataflash" if BR2_TARGET_AT91BOOTSTRAP_DATAFLASH + default "nandflash" if BR2_TARGET_AT91BOOTSTRAP_NANDFLASH + +endif diff --git a/buildroot/boot/at91bootstrap/at91bootstrap-1.16-eabi-fix.patch b/buildroot/boot/at91bootstrap/at91bootstrap-1.16-eabi-fix.patch new file mode 100644 index 0000000..eab3c20 --- /dev/null +++ b/buildroot/boot/at91bootstrap/at91bootstrap-1.16-eabi-fix.patch @@ -0,0 +1,334 @@ +When using an EABI toolchain, the default compilation generates +references to __aeabi_unwind_cpp_pr0(). This symbol is defined in +libgcc, but we don't want to use it for a bootloader. + +Therefore, this patch passes some additional CFLAGS to disable the +generation of such references by avoiding unwind tables, exceptions, +etc. + +Signed-off-by: Thomas Petazzoni +--- + board/at91cap9adk/dataflash/Makefile | 2 +- + board/at91cap9adk/norflash/Makefile | 2 +- + board/at91cap9stk/nandflash/Makefile | 2 +- + board/at91sam9260ek/dataflash/Makefile | 2 +- + board/at91sam9260ek/nandflash/Makefile | 2 +- + board/at91sam9261ek/dataflash/Makefile | 2 +- + board/at91sam9261ek/nandflash/Makefile | 2 +- + board/at91sam9263ek/dataflash/Makefile | 2 +- + board/at91sam9263ek/nandflash/Makefile | 2 +- + board/at91sam9g10ek/dataflash/Makefile | 2 +- + board/at91sam9g10ek/nandflash/Makefile | 2 +- + board/at91sam9g20ek/dataflash/Makefile | 2 +- + board/at91sam9g20ek/nandflash/Makefile | 2 +- + board/at91sam9g45ekes/nandflash/Makefile | 2 +- + board/at91sam9m10ekes/dataflash/Makefile | 2 +- + board/at91sam9m10ekes/nandflash/Makefile | 2 +- + board/at91sam9m10g45ek/dataflash/Makefile | 2 +- + board/at91sam9m10g45ek/nandflash/Makefile | 2 +- + board/at91sam9rlek/dataflash/Makefile | 2 +- + board/at91sam9rlek/nandflash/Makefile | 2 +- + board/at91sam9xeek/dataflash/Makefile | 2 +- + board/at91sam9xeek/nandflash/Makefile | 2 +- + lib/Makefile | 2 +- + 23 files changed, 23 insertions(+), 23 deletions(-) + +Index: Bootstrap-v1.16/board/at91cap9adk/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91cap9adk/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91cap9adk/dataflash/Makefile +@@ -34,7 +34,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91cap9adk/norflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91cap9adk/norflash/Makefile ++++ Bootstrap-v1.16/board/at91cap9adk/norflash/Makefile +@@ -34,7 +34,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91cap9stk/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91cap9stk/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91cap9stk/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -D$(BOARD) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + +Index: Bootstrap-v1.16/board/at91sam9260ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9260ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9260ek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9260ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9260ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9260ek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9261ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9261ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9261ek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9261ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9261ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9261ek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9263ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9263ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9263ek/dataflash/Makefile +@@ -34,7 +34,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9263ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9263ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9263ek/nandflash/Makefile +@@ -33,7 +33,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -O0 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -O0 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9g10ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9g10ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9g10ek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9g10ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9g10ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9g10ek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9g20ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9g20ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9g20ek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9g20ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9g20ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9g20ek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9g45ekes/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9g45ekes/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9g45ekes/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9m10ekes/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9m10ekes/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9m10ekes/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9m10ekes/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9m10ekes/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9m10ekes/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9m10g45ek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9m10g45ek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9m10g45ek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9m10g45ek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9m10g45ek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9m10g45ek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -O2 -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -O2 -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9rlek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9rlek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9rlek/dataflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9rlek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9rlek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9rlek/nandflash/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9xeek/dataflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9xeek/dataflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9xeek/dataflash/Makefile +@@ -38,7 +38,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/board/at91sam9xeek/nandflash/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/board/at91sam9xeek/nandflash/Makefile ++++ Bootstrap-v1.16/board/at91sam9xeek/nandflash/Makefile +@@ -38,7 +38,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm9 -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm9 -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. +Index: Bootstrap-v1.16/lib/Makefile +=================================================================== +--- Bootstrap-v1.16.orig/lib/Makefile ++++ Bootstrap-v1.16/lib/Makefile +@@ -37,7 +37,7 @@ + SIZE=$(CROSS_COMPILE)size + OBJCOPY=$(CROSS_COMPILE)objcopy + OBJDUMP=$(CROSS_COMPILE)objdump +-CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) ++CCFLAGS=-g -mcpu=arm926ej-s -Os -Wall -D$(TARGET) -I$(INCL) -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables + ASFLAGS=-g -mcpu=arm926ej-s -c -Os -Wall -D$(TARGET) -I$(INCL) -DTOP_OF_MEM=$(TOP_OF_MEMORY) + + # Linker flags. diff --git a/buildroot/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch b/buildroot/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch new file mode 100644 index 0000000..e4ed04e --- /dev/null +++ b/buildroot/boot/at91bootstrap/at91bootstrap-1.16-gcc-4.6.x-ldscript-fix.patch @@ -0,0 +1,29 @@ +From b783d1f9bf985c0981e755bd2c13e091e9d6837f Mon Sep 17 00:00:00 2001 +From: Gregory Hermant +Date: Tue, 6 Nov 2012 09:38:50 +0100 +Subject: [PATCH] at91bootstrap: fix overlap linker issue + +The linker script of the at91bootstrap package has to be modified when +built from gcc-4.6.x version. Indeed a section named text.startup is +created and has to be added into the text section. + +Signed-off-by: Gregory Hermant +--- + elf32-littlearm.lds | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/elf32-littlearm.lds b/elf32-littlearm.lds +index a33952f..4f3ba25 100644 +--- a/elf32-littlearm.lds ++++ b/elf32-littlearm.lds +@@ -7,6 +7,7 @@ SECTIONS + .text : { + _stext = .; + *(.text) ++ *(.text*) + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + . = ALIGN(4); +-- +1.7.9.5 + diff --git a/buildroot/boot/at91bootstrap/at91bootstrap-1.16-u-boot-relocation-fix.patch b/buildroot/boot/at91bootstrap/at91bootstrap-1.16-u-boot-relocation-fix.patch new file mode 100644 index 0000000..0c9b911 --- /dev/null +++ b/buildroot/boot/at91bootstrap/at91bootstrap-1.16-u-boot-relocation-fix.patch @@ -0,0 +1,284 @@ +From d4e4a1aad559e35d84b445d1379be94ad036984e Mon Sep 17 00:00:00 2001 +From: Alexandre Belloni +Date: Thu, 25 Oct 2012 22:57:14 +0200 +Subject: [PATCH] u-boot relocation fix + +Every AT91SAM plaforms were broken between 2010.12 and 2011.03 because +of the relocation changes. + +We have to get JUMP_ADDR consistant with what is used by u-boot +(CONFIG_SYS_TEXT_BASE). + +I didn't know what to do with at91sam9m10g45ek as it doesn't seems to be +converted yet. But anyway, that means that it is either not working or +doesn't care so changing it here shouldn't harm. + +We also have to increase the IMG_SIZE as u-boot as grown larger than the +default value. As requested on the u-boot ML, we assume that it could +be up to 495kB big. + +It means that now, you have to flash your kernel at 0x00084000 instead +of 0x00042000. And so you also have to load it from that adress from +u-boot. + +Then, remember that you could decrease IMG_SIZE to boot faster. + +Signed-off-by: Alexandre Belloni +--- + board/at91sam9260ek/dataflash/at91sam9260ek.h | 4 ++-- + board/at91sam9260ek/nandflash/at91sam9260ek.h | 2 +- + board/at91sam9261ek/dataflash/at91sam9261ek.h | 4 ++-- + board/at91sam9261ek/nandflash/at91sam9261ek.h | 2 +- + board/at91sam9263ek/dataflash/at91sam9263ek.h | 4 ++-- + board/at91sam9263ek/nandflash/at91sam9263ek.h | 2 +- + board/at91sam9g10ek/dataflash/at91sam9g10ek.h | 4 ++-- + board/at91sam9g10ek/nandflash/at91sam9g10ek.h | 2 +- + board/at91sam9g20ek/dataflash/at91sam9g20ek.h | 4 ++-- + board/at91sam9g20ek/nandflash/at91sam9g20ek.h | 2 +- + board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h | 2 +- + .../at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h | 2 +- + board/at91sam9rlek/dataflash/at91sam9rlek.h | 4 ++-- + board/at91sam9rlek/nandflash/at91sam9rlek.h | 2 +- + board/at91sam9xeek/dataflash/at91sam9xeek.h | 4 ++-- + board/at91sam9xeek/nandflash/at91sam9xeek.h | 2 +- + 16 files changed, 23 insertions(+), 23 deletions(-) + +diff --git a/board/at91sam9260ek/dataflash/at91sam9260ek.h b/board/at91sam9260ek/dataflash/at91sam9260ek.h +index 1834246..91081a1 100644 +--- a/board/at91sam9260ek/dataflash/at91sam9260ek.h ++++ b/board/at91sam9260ek/dataflash/at91sam9260ek.h +@@ -74,10 +74,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS1_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x44B /* AT91SAM9260-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9260ek/nandflash/at91sam9260ek.h b/board/at91sam9260ek/nandflash/at91sam9260ek.h +index 2cac601..f8fdff2 100644 +--- a/board/at91sam9260ek/nandflash/at91sam9260ek.h ++++ b/board/at91sam9260ek/nandflash/at91sam9260ek.h +@@ -92,7 +92,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 0x44B /* AT91SAM9260-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9261ek/dataflash/at91sam9261ek.h b/board/at91sam9261ek/dataflash/at91sam9261ek.h +index 8ce30e9..276ba3d 100644 +--- a/board/at91sam9261ek/dataflash/at91sam9261ek.h ++++ b/board/at91sam9261ek/dataflash/at91sam9261ek.h +@@ -97,10 +97,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x350 /* AT91SAM9261-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9261ek/nandflash/at91sam9261ek.h b/board/at91sam9261ek/nandflash/at91sam9261ek.h +index badc3ac..e628c97 100644 +--- a/board/at91sam9261ek/nandflash/at91sam9261ek.h ++++ b/board/at91sam9261ek/nandflash/at91sam9261ek.h +@@ -114,7 +114,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 0x350 /* AT91SAM9261-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9263ek/dataflash/at91sam9263ek.h b/board/at91sam9263ek/dataflash/at91sam9263ek.h +index 5c9da4b..870f9e2 100644 +--- a/board/at91sam9263ek/dataflash/at91sam9263ek.h ++++ b/board/at91sam9263ek/dataflash/at91sam9263ek.h +@@ -96,10 +96,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x4B2 /* AT91SAM9263-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9263ek/nandflash/at91sam9263ek.h b/board/at91sam9263ek/nandflash/at91sam9263ek.h +index 505afc7..8ab4f46 100644 +--- a/board/at91sam9263ek/nandflash/at91sam9263ek.h ++++ b/board/at91sam9263ek/nandflash/at91sam9263ek.h +@@ -108,7 +108,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 1202 /* AT91SAM9263-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9g10ek/dataflash/at91sam9g10ek.h b/board/at91sam9g10ek/dataflash/at91sam9g10ek.h +index b2faf44..f4f556b 100644 +--- a/board/at91sam9g10ek/dataflash/at91sam9g10ek.h ++++ b/board/at91sam9g10ek/dataflash/at91sam9g10ek.h +@@ -98,10 +98,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x350 /* AT91SAM9261-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9g10ek/nandflash/at91sam9g10ek.h b/board/at91sam9g10ek/nandflash/at91sam9g10ek.h +index 66c40a3..6c3ecda 100644 +--- a/board/at91sam9g10ek/nandflash/at91sam9g10ek.h ++++ b/board/at91sam9g10ek/nandflash/at91sam9g10ek.h +@@ -115,7 +115,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 0x350 /* AT91SAM9G10-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9g20ek/dataflash/at91sam9g20ek.h b/board/at91sam9g20ek/dataflash/at91sam9g20ek.h +index eea0439..7fc70d6 100644 +--- a/board/at91sam9g20ek/dataflash/at91sam9g20ek.h ++++ b/board/at91sam9g20ek/dataflash/at91sam9g20ek.h +@@ -75,10 +75,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS1_DATAFLASH /* Boot on SPI NCS1 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x658 /* AT91SAM9G20-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9g20ek/nandflash/at91sam9g20ek.h b/board/at91sam9g20ek/nandflash/at91sam9g20ek.h +index 31bd499..e797e4d 100644 +--- a/board/at91sam9g20ek/nandflash/at91sam9g20ek.h ++++ b/board/at91sam9g20ek/nandflash/at91sam9g20ek.h +@@ -93,7 +93,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 0x658 /* AT91SAM9G20-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h b/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h +index a60fd41..5587a00 100644 +--- a/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h ++++ b/board/at91sam9m10ekes/dataflash/at91sam9m10ekes.h +@@ -89,7 +89,7 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x9CD /* AT91SAM9M10-EKES */ + #define JUMP_ADDR 0x73F00000 /* Final Jump Address */ +diff --git a/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h b/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h +index 5c726b5..9090097 100644 +--- a/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h ++++ b/board/at91sam9m10g45ek/dataflash/at91sam9m10g45ek.h +@@ -85,7 +85,7 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x726 /* AT91SAM9M10G45-EK */ + #define JUMP_ADDR 0x73F00000 /* Final Jump Address */ +diff --git a/board/at91sam9rlek/dataflash/at91sam9rlek.h b/board/at91sam9rlek/dataflash/at91sam9rlek.h +index 05c42dc..150f17e 100644 +--- a/board/at91sam9rlek/dataflash/at91sam9rlek.h ++++ b/board/at91sam9rlek/dataflash/at91sam9rlek.h +@@ -89,10 +89,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS0_DATAFLASH /* Boot on SPI NCS0 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 1326 /* AT91SAM9RL-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9rlek/nandflash/at91sam9rlek.h b/board/at91sam9rlek/nandflash/at91sam9rlek.h +index 656b4ba..594db8f 100644 +--- a/board/at91sam9rlek/nandflash/at91sam9rlek.h ++++ b/board/at91sam9rlek/nandflash/at91sam9rlek.h +@@ -112,7 +112,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 1326 /* AT91SAM9RL-EK */ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9xeek/dataflash/at91sam9xeek.h b/board/at91sam9xeek/dataflash/at91sam9xeek.h +index 27d1822..08e515d 100644 +--- a/board/at91sam9xeek/dataflash/at91sam9xeek.h ++++ b/board/at91sam9xeek/dataflash/at91sam9xeek.h +@@ -74,10 +74,10 @@ + #define AT91C_SPI_PCS_DATAFLASH AT91C_SPI_PCS1_DATAFLASH /* Boot on SPI NCS1 */ + + #define IMG_ADDRESS 0x8400 /* Image Address in DataFlash */ +-#define IMG_SIZE 0x33900 /* Image Size in DataFlash */ ++#define IMG_SIZE 0x7BC00 /* Image Size in DataFlash */ + + #define MACH_TYPE 0x44B /* AT91SAM9XE-EK same id as AT91SAM9260-EK*/ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +diff --git a/board/at91sam9xeek/nandflash/at91sam9xeek.h b/board/at91sam9xeek/nandflash/at91sam9xeek.h +index 5dbc63e..9fac7cb 100644 +--- a/board/at91sam9xeek/nandflash/at91sam9xeek.h ++++ b/board/at91sam9xeek/nandflash/at91sam9xeek.h +@@ -94,7 +94,7 @@ + #define IMG_SIZE 0x40000 /* Image Size in NandFlash */ + + #define MACH_TYPE 0x44B /* AT91SAM9XE-EK same id as AT91SAM9260-EK*/ +-#define JUMP_ADDR 0x23F00000 /* Final Jump Address */ ++#define JUMP_ADDR 0x21F00000 /* Final Jump Address */ + + /* ******************************************************************* */ + /* Application Settings */ +-- +1.7.9.5 + diff --git a/buildroot/boot/at91bootstrap/at91bootstrap.hash b/buildroot/boot/at91bootstrap/at91bootstrap.hash new file mode 100644 index 0000000..b1f963b --- /dev/null +++ b/buildroot/boot/at91bootstrap/at91bootstrap.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 d66192a274247f4baa39fa932eadf903d7add55641d89d30402f967c4f2282a5 AT91Bootstrap1.16.zip diff --git a/buildroot/boot/at91bootstrap/at91bootstrap.mk b/buildroot/boot/at91bootstrap/at91bootstrap.mk new file mode 100644 index 0000000..f655058 --- /dev/null +++ b/buildroot/boot/at91bootstrap/at91bootstrap.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# at91bootstrap +# +################################################################################ + +AT91BOOTSTRAP_VERSION = 1.16 +AT91BOOTSTRAP_SITE = ftp://www.at91.com/pub/at91bootstrap +AT91BOOTSTRAP_SOURCE = AT91Bootstrap$(AT91BOOTSTRAP_VERSION).zip + +AT91BOOTSTRAP_BOARD = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_BOARD)) +AT91BOOTSTRAP_MEMORY = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_MEMORY)) +AT91BOOTSTRAP_MAKE_SUBDIR = board/$(AT91BOOTSTRAP_BOARD)/$(AT91BOOTSTRAP_MEMORY) +AT91BOOTSTRAP_BINARY = $(AT91BOOTSTRAP_MAKE_SUBDIR)/$(AT91BOOTSTRAP_MEMORY)_$(AT91BOOTSTRAP_BOARD).bin + +AT91BOOTSTRAP_INSTALL_IMAGES = YES +AT91BOOTSTRAP_INSTALL_TARGET = NO + +define AT91BOOTSTRAP_EXTRACT_CMDS + $(UNZIP) -d $(BUILD_DIR) $(DL_DIR)/$(AT91BOOTSTRAP_SOURCE) + mv $(BUILD_DIR)/Bootstrap-v$(AT91BOOTSTRAP_VERSION)/* $(@D) + rmdir $(BUILD_DIR)/Bootstrap-v$(AT91BOOTSTRAP_VERSION) +endef + +ifneq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR)),) +define AT91BOOTSTRAP_APPLY_CUSTOM_PATCHES + $(APPLY_PATCHES) $(@D) $(BR2_TARGET_AT91BOOTSTRAP_CUSTOM_PATCH_DIR) \*.patch +endef + +AT91BOOTSTRAP_POST_PATCH_HOOKS += AT91BOOTSTRAP_APPLY_CUSTOM_PATCHES +endif + +define AT91BOOTSTRAP_BUILD_CMDS + $(MAKE1) CROSS_COMPILE=$(TARGET_CROSS) -C $(@D)/$(AT91BOOTSTRAP_MAKE_SUBDIR) +endef + +define AT91BOOTSTRAP_INSTALL_IMAGES_CMDS + cp $(@D)/$(AT91BOOTSTRAP_BINARY) $(BINARIES_DIR) +endef + +$(eval $(generic-package)) + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP)$(BR_BUILDING),yy) +ifeq ($(AT91BOOTSTRAP_BOARD),) +$(error No AT91Bootstrap board name set. Check your BR2_TARGET_AT91BOOTSTRAP_BOARD setting) +endif +endif diff --git a/buildroot/boot/at91bootstrap3/Config.in b/buildroot/boot/at91bootstrap3/Config.in new file mode 100644 index 0000000..237deb9 --- /dev/null +++ b/buildroot/boot/at91bootstrap3/Config.in @@ -0,0 +1,87 @@ +config BR2_TARGET_AT91BOOTSTRAP3 + depends on BR2_arm926t || BR2_cortex_a5 + bool "AT91 Bootstrap 3" + help + AT91Bootstrap is a first level bootloader for the Atmel AT91 + devices. It integrates algorithms for: + - Device initialization such as clock configuration, PIO settings... + - Peripheral drivers such as PIO, PMC or SDRAMC... + - Physical media algorithm such as DataFlash, NandFlash, NOR Flash... + +if BR2_TARGET_AT91BOOTSTRAP3 + +choice + + prompt "AT91 Bootstrap 3 version" + +config BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION + bool "3.8.6" + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT + bool "Custom Git repository" + help + This option allows Buildroot to get the AT91 Bootstrap 3 source + code from a Git repository. + +endchoice + +if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL + string "URL of custom repository" + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION + string "Custom repository version" + help + Revision to use in the typical format used by Git + E.G. a sha id, a tag, branch, .. + +endif + +config BR2_TARGET_AT91BOOTSTRAP3_VERSION + string + default "v3.8.6" if BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION + default BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION \ + if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_PATCH_DIR + string "custom patch dir" + help + If your board requires custom patches, add the path to the + directory containing the patches here. The patches must be + named at91bootstrap3-.patch. + + Most users may leave this empty + +# +# Configuration selection +# + +choice + prompt "AT91 Bootstrap 3 configuration" + default BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG + +config BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG + bool "Using a defconfig" + +config BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG + bool "Using a custom config file" + +endchoice + +config BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG + string "Defconfig name" + depends on BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG + help + Name of the at91bootstrap3 defconfig file to use, without the + trailing _defconfig. The defconfig is located at + board//_defconfig in the at91bootstrap3 + tree. + +config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG + help + Path to the at91bootstrap3 configuration file + +endif # BR2_TARGET_AT91BOOTSTRAP3 diff --git a/buildroot/boot/at91bootstrap3/at91bootstrap3.hash b/buildroot/boot/at91bootstrap3/at91bootstrap3.hash new file mode 100644 index 0000000..e904a46 --- /dev/null +++ b/buildroot/boot/at91bootstrap3/at91bootstrap3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a2e9ec6f42ee3b5a805fe215257b63070b6c498d57c568c46fcb18fd1b38ea7e at91bootstrap3-v3.8.6.tar.gz diff --git a/buildroot/boot/at91bootstrap3/at91bootstrap3.mk b/buildroot/boot/at91bootstrap3/at91bootstrap3.mk new file mode 100644 index 0000000..685be5b --- /dev/null +++ b/buildroot/boot/at91bootstrap3/at91bootstrap3.mk @@ -0,0 +1,83 @@ +################################################################################ +# +# at91bootstrap3 +# +################################################################################ + +AT91BOOTSTRAP3_VERSION = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_VERSION)) + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT),y) +AT91BOOTSTRAP3_SITE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL)) +AT91BOOTSTRAP3_SITE_METHOD = git +BR_NO_CHECK_HASH_FOR += $(AT91BOOTSTRAP3_SOURCE) +else +AT91BOOTSTRAP3_SITE = $(call github,linux4sam,at91bootstrap,$(AT91BOOTSTRAP3_VERSION)) +endif + +AT91BOOTSTRAP3_LICENSE = Atmel License +AT91BOOTSTRAP3_LICENSE_FILES = main.c + +AT91BOOTSTRAP3_INSTALL_IMAGES = YES +AT91BOOTSTRAP3_INSTALL_TARGET = NO + +AT91BOOTSTRAP3_CUSTOM_PATCH_DIR = \ + $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_PATCH_DIR)) + +AT91BOOTSTRAP3_MAKE_OPTS = CROSS_COMPILE=$(TARGET_CROSS) DESTDIR=$(BINARIES_DIR) + +ifneq ($(AT91BOOTSTRAP3_CUSTOM_PATCH_DIR),) +define AT91BOOTSTRAP3_APPLY_CUSTOM_PATCHES + $(APPLY_PATCHES) $(@D) $(AT91BOOTSTRAP3_CUSTOM_PATCH_DIR) \*.patch +endef + +AT91BOOTSTRAP3_POST_PATCH_HOOKS += AT91BOOTSTRAP3_APPLY_CUSTOM_PATCHES +endif + +define AT91BOOTSTRAP3_BUILD_CMDS + $(MAKE) $(AT91BOOTSTRAP3_MAKE_OPTS) -C $(@D) +endef + +define AT91BOOTSTRAP3_INSTALL_IMAGES_CMDS + cp $(@D)/binaries/*.bin $(BINARIES_DIR) +endef + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y) +AT91BOOTSTRAP3_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG))_defconfig +else ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG),y) +AT91BOOTSTRAP3_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE)) +endif + +AT91BOOTSTRAP3_KCONFIG_EDITORS = menuconfig xconfig gconfig +AT91BOOTSTRAP3_KCONFIG_OPTS = $(AT91BOOTSTRAP3_MAKE_OPTS) + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR_BUILDING),y) + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y) +# We must use the user-supplied kconfig value, because +# AT91BOOTSTRAP3_KCONFIG_DEFCONFIG will at least contain +# the trailing _defconfig +ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG)),) +$(error No at91bootstrap3 defconfig name specified, check your BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG setting) +endif +endif + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG),y) +ifeq ($(AT91BOOTSTRAP3_KCONFIG_FILE),) +$(error No at91bootstrap3 configuration file specified, check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE setting) +endif +endif + +ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT),y) +ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL)),) +$(error No custom at91bootstrap3 repository URL specified. Check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL setting) +endif +ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION)),) +$(error No custom at91bootstrap3 repository version specified. Check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION setting) +endif +endif + +endif # BR_BUILDING + +$(eval $(kconfig-package)) diff --git a/buildroot/boot/at91dataflashboot/Config.in b/buildroot/boot/at91dataflashboot/Config.in new file mode 100644 index 0000000..80b57a4 --- /dev/null +++ b/buildroot/boot/at91dataflashboot/Config.in @@ -0,0 +1,3 @@ +config BR2_TARGET_AT91DATAFLASHBOOT + depends on BR2_arm926t + bool "AT91 DataFlashBoot" diff --git a/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch b/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch new file mode 100644 index 0000000..41d97ad --- /dev/null +++ b/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-do-not-install.patch @@ -0,0 +1,22 @@ +Disable the automatic installation of at91dataflashboot since it tries +to install things to /tftpboot, which is not possible when not +building as root. + +Signed-off-by: Thomas Petazzoni +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: at91dataflashboot-1.05/Makefile +=================================================================== +--- at91dataflashboot-1.05.orig/Makefile ++++ at91dataflashboot-1.05/Makefile +@@ -40,7 +40,7 @@ + + I=config.h com.h dataflash.h embedded_services.h main.h stdio.h include/AT91RM9200.h include/lib_AT91RM9200.h + +-all: clean $(BINNAME) $(LSSNAME) install ++all: clean $(BINNAME) $(LSSNAME) + $(SIZE) $(OUTNAME) + + # C objects here diff --git a/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch b/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch new file mode 100644 index 0000000..e38905f --- /dev/null +++ b/buildroot/boot/at91dataflashboot/at91dataflashboot-1.05-eabi-fixes.patch @@ -0,0 +1,43 @@ +Get at91dataflashboot to build with EABI toolchains, by providing the +__aeabi_uidiv and __aeabi_uidivmod symbols. The code is based on +U-Boot's code. + +Signed-off-by: Thomas Petazzoni +--- + _udivsi3.S | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +Index: DataflashBoot-1.05/_udivsi3.S +=================================================================== +--- DataflashBoot-1.05.orig/_udivsi3.S ++++ DataflashBoot-1.05/_udivsi3.S +@@ -12,8 +12,11 @@ + .text + .globl __udivsi3 + .type __udivsi3 ,function ++ .globl __aeabi_uidiv ++ .type __aeabi_uidiv ,function + .align 0 + __udivsi3 : ++ __aeabi_uidiv: + cmp divisor, #0 + beq Ldiv0 + mov curbit, #1 +@@ -68,6 +71,17 @@ + mov r0, #0 @ about as wrong as it could be + ldmia sp!, {pc} + .size __udivsi3 , . - __udivsi3 ++ ++.globl __aeabi_uidivmod ++__aeabi_uidivmod: ++ ++ stmfd sp!, {r0, r1, ip, lr} ++ bl __aeabi_uidiv ++ ldmfd sp!, {r1, r2, ip, lr} ++ mul r3, r0, r2 ++ sub r1, r1, r3 ++ mov pc, lr ++ + /* # 235 "libgcc1.S" */ + /* # 320 "libgcc1.S" */ + /* # 421 "libgcc1.S" */ diff --git a/buildroot/boot/at91dataflashboot/at91dataflashboot.hash b/buildroot/boot/at91dataflashboot/at91dataflashboot.hash new file mode 100644 index 0000000..57df4e5 --- /dev/null +++ b/buildroot/boot/at91dataflashboot/at91dataflashboot.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 2cfeb6a9236e1a743c8010f05e504dbc92169ef42d9a6cf7948954a577bfc386 DataflashBoot-1.05.tar.bz2 diff --git a/buildroot/boot/at91dataflashboot/at91dataflashboot.mk b/buildroot/boot/at91dataflashboot/at91dataflashboot.mk new file mode 100644 index 0000000..0ad8b6f --- /dev/null +++ b/buildroot/boot/at91dataflashboot/at91dataflashboot.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# at91dataflashboot +# +################################################################################ + +AT91DATAFLASHBOOT_VERSION = 1.05 +AT91DATAFLASHBOOT_SOURCE = DataflashBoot-$(AT91DATAFLASHBOOT_VERSION).tar.bz2 +AT91DATAFLASHBOOT_SITE = ftp://www.at91.com/pub/buildroot + +AT91DATAFLASHBOOT_INSTALL_TARGET = NO +AT91DATAFLASHBOOT_INSTALL_IMAGES = YES + +define AT91DATAFLASHBOOT_BUILD_CMDS + make -C $(@D) CROSS_COMPILE=$(TARGET_CROSS) +endef + +define AT91DATAFLASHBOOT_INSTALL_IMAGES_CMDS + cp $(@D)/DataflashBoot-$(AT91DATAFLASHBOOT_VERSION).bin $(BINARIES_DIR) +endef + +$(eval $(generic-package)) diff --git a/buildroot/boot/barebox/Config.in b/buildroot/boot/barebox/Config.in new file mode 100644 index 0000000..fd22d90 --- /dev/null +++ b/buildroot/boot/barebox/Config.in @@ -0,0 +1,85 @@ +config BR2_TARGET_BAREBOX + bool "Barebox" + help + The Barebox bootloader, formerly known as U-Boot v2. + + http://www.barebox.org + +if BR2_TARGET_BAREBOX +choice + prompt "version" + help + Select the specific Barebox version you want to use + +config BR2_TARGET_BAREBOX_LATEST_VERSION + bool "2017.09.0" + +config BR2_TARGET_BAREBOX_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_BAREBOX_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_BAREBOX_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +config BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE + string "Barebox version" + depends on BR2_TARGET_BAREBOX_CUSTOM_VERSION + +if BR2_TARGET_BAREBOX_CUSTOM_TARBALL + +config BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION + string "URL of custom Barebox tarball" + +endif + +config BR2_TARGET_BAREBOX_VERSION + string + default "2017.09.0" if BR2_TARGET_BAREBOX_LATEST_VERSION + default BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE if BR2_TARGET_BAREBOX_CUSTOM_VERSION + default "custom" if BR2_TARGET_BAREBOX_CUSTOM_TARBALL + default BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION if BR2_TARGET_BAREBOX_CUSTOM_GIT + +config BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR + string "custom patch dir" + help + If your board requires custom patches, add the path to the + directory containing the patches here. The patches must be + named barebox--.patch. + + Most users may leave this empty + +if BR2_TARGET_BAREBOX_CUSTOM_GIT + +config BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL + string "URL of custom Git repository" + +config BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION + string "Custom Git version" + +endif + +source boot/barebox/barebox/Config.in + +menuconfig BR2_TARGET_BAREBOX_AUX + bool "Build barebox with an auxiliary config" + help + Build barebox with an auxiliary configuration. + + Useful for building an SPL (Secondary Program Loader) in + addition to the traditional TPL (Tertiary Program Loader), + such as the X-Loader or MLO for Texas Instruments + processors. + +if BR2_TARGET_BAREBOX_AUX + +source boot/barebox/barebox-aux/Config.in + +endif + +endif diff --git a/buildroot/boot/barebox/barebox-aux/Config.in b/buildroot/boot/barebox/barebox-aux/Config.in new file mode 100644 index 0000000..d39d24f --- /dev/null +++ b/buildroot/boot/barebox/barebox-aux/Config.in @@ -0,0 +1,75 @@ +choice + prompt "Barebox configuration" + default BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG + +config BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG + bool "Using a defconfig" + +config BR2_TARGET_BAREBOX_AUX_USE_CUSTOM_CONFIG + bool "Using a custom config file" + +endchoice + +config BR2_TARGET_BAREBOX_AUX_BOARD_DEFCONFIG + string "board defconfig" + depends on BR2_TARGET_BAREBOX_AUX_USE_DEFCONFIG + help + Name of the board for which Barebox should be built, without + the _defconfig suffix. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_BAREBOX_AUX_USE_CUSTOM_CONFIG + help + Path to the barebox configuration file + +config BR2_TARGET_BAREBOX_AUX_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main Barebox configuration file. + +config BR2_TARGET_BAREBOX_AUX_IMAGE_FILE + string "Image file names" + help + Space-separated list of barebox images which will be copied to + the images directory. + + If left empty, defaults to: + - barebox.bin for barebox versions older than 2012.10. + - barebox-flash-image for later versions. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV + bool "Generate an environment image" + help + Generate a custom environment image. This environment will + contain the variables and scripts to be used at boot by + barebox. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV_PATH + string "Environment path" + depends on BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV + help + Path to the directory containing the custom barebox + environment. Depending on your setup, it will probably be + based on either the content of the defaultenv or + defaultenv-2 directories in the barebox source code, plus + the additions needed. The output will be an image in the + barebox devfs format, stored in the images directory, with + the same name as the directory name given here. + +config BR2_TARGET_BAREBOX_AUX_CUSTOM_EMBEDDED_ENV_PATH + string "Embedded environment path" + help + If this option is not empty, it is the path to a custom + embedded barebox environment. This image will be used when + the environment found in the environment sector is + invalid. This option sets the barebox Kconfig option + CONFIG_DEFAULT_ENVIRONMENT_PATH to the specified path. This + way it is possible to use Buildroot variables like + TOPDIR etc. to refer to the custom environment. + + Depending on your setup, the custom embedded environment + will probably be based on either the content of the + defaultenv or defaultenv-2 directories in the barebox source + code. diff --git a/buildroot/boot/barebox/barebox-aux/barebox-aux.hash b/buildroot/boot/barebox/barebox-aux/barebox-aux.hash new file mode 120000 index 0000000..b6462b8 --- /dev/null +++ b/buildroot/boot/barebox/barebox-aux/barebox-aux.hash @@ -0,0 +1 @@ +../barebox.hash \ No newline at end of file diff --git a/buildroot/boot/barebox/barebox-aux/barebox-aux.mk b/buildroot/boot/barebox/barebox-aux/barebox-aux.mk new file mode 100644 index 0000000..fb287d3 --- /dev/null +++ b/buildroot/boot/barebox/barebox-aux/barebox-aux.mk @@ -0,0 +1,8 @@ +################################################################################ +# +# barebox-aux +# +################################################################################ + +# Instantiate the auxiliary barebox package +$(eval $(barebox-package)) diff --git a/buildroot/boot/barebox/barebox.hash b/buildroot/boot/barebox/barebox.hash new file mode 100644 index 0000000..b241970 --- /dev/null +++ b/buildroot/boot/barebox/barebox.hash @@ -0,0 +1,5 @@ +# http://www.barebox.org/download/barebox-2017.09.0.tar.bz2.md5 +md5 b92e9c99cda7fbb61d01baf5679df261 barebox-2017.09.0.tar.bz2 + +# Locally calculated +sha256 43283edc019f95a53fdb7d1b7c294afc4741bfcace348d6beeded5fe5147a81b barebox-2017.09.0.tar.bz2 diff --git a/buildroot/boot/barebox/barebox.mk b/buildroot/boot/barebox/barebox.mk new file mode 100644 index 0000000..b811e32 --- /dev/null +++ b/buildroot/boot/barebox/barebox.mk @@ -0,0 +1,157 @@ +################################################################################ +# +# barebox +# +################################################################################ + +################################################################################ +# inner-barebox-package -- generates the KConfig logic and make targets needed +# to support a barebox package. All barebox packages are built from the same +# source (origin, version and patches). The remainder of the package +# configuration is unique to each barebox package. +# +# argument 1 is the uppercase package name (used for variable name-space) +################################################################################ + +define inner-barebox-package + +$(1)_VERSION = $$(call qstrip,$$(BR2_TARGET_BAREBOX_VERSION)) + +ifeq ($$($(1)_VERSION),custom) +# Handle custom Barebox tarballs as specified by the configuration +$(1)_TARBALL = $$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION)) +$(1)_SITE = $$(patsubst %/,%,$$(dir $$($(1)_TARBALL))) +$(1)_SOURCE = $$(notdir $$($(1)_TARBALL)) +else ifeq ($$(BR2_TARGET_BAREBOX_CUSTOM_GIT),y) +$(1)_SITE = $$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL)) +$(1)_SITE_METHOD = git +else +# Handle stable official Barebox versions +$(1)_SOURCE = barebox-$$($(1)_VERSION).tar.bz2 +$(1)_SITE = http://www.barebox.org/download +endif + +$(1)_DEPENDENCIES = host-lzop +$(1)_LICENSE = GPL-2.0 with exceptions +$(1)_LICENSE_FILES = COPYING + +$(1)_CUSTOM_EMBEDDED_ENV_PATH = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_EMBEDDED_ENV_PATH)) + +ifneq ($$(call qstrip,$$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR)),) +define $(1)_APPLY_CUSTOM_PATCHES + $$(APPLY_PATCHES) $$(@D) \ + $$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR) \*.patch +endef + +$(1)_POST_PATCH_HOOKS += $(1)_APPLY_CUSTOM_PATCHES +endif + +$(1)_INSTALL_IMAGES = YES +ifneq ($$(BR2_TARGET_$(1)_BAREBOXENV),y) +$(1)_INSTALL_TARGET = NO +endif + +ifeq ($$(KERNEL_ARCH),i386) +$(1)_ARCH = x86 +else ifeq ($$(KERNEL_ARCH),x86_64) +$(1)_ARCH = x86 +else ifeq ($$(KERNEL_ARCH),powerpc) +$(1)_ARCH = ppc +else ifeq ($$(KERNEL_ARCH),arm64) +$(1)_ARCH = arm +else +$(1)_ARCH = $$(KERNEL_ARCH) +endif + +$(1)_MAKE_FLAGS = ARCH=$$($(1)_ARCH) CROSS_COMPILE="$$(TARGET_CROSS)" +$(1)_MAKE_ENV = $$(TARGET_MAKE_ENV) + +ifeq ($$(BR2_TARGET_$(1)_USE_DEFCONFIG),y) +$(1)_KCONFIG_DEFCONFIG = $$(call qstrip,$$(BR2_TARGET_$(1)_BOARD_DEFCONFIG))_defconfig +else ifeq ($$(BR2_TARGET_$(1)_USE_CUSTOM_CONFIG),y) +$(1)_KCONFIG_FILE = $$(call qstrip,$$(BR2_TARGET_$(1)_CUSTOM_CONFIG_FILE)) +endif + +$(1)_KCONFIG_FRAGMENT_FILES = $$(call qstrip,$$(BR2_TARGET_$(1)_CONFIG_FRAGMENT_FILES)) +$(1)_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig +$(1)_KCONFIG_OPTS = $$($(1)_MAKE_FLAGS) + +ifeq ($$(BR2_TARGET_$(1)_BAREBOXENV),y) +define $(1)_BUILD_BAREBOXENV_CMDS + $$(TARGET_CC) $$(TARGET_CFLAGS) $$(TARGET_LDFLAGS) -o $$(@D)/bareboxenv \ + $$(@D)/scripts/bareboxenv.c +endef +endif + +ifeq ($$(BR2_TARGET_$(1)_CUSTOM_ENV),y) +$(1)_ENV_NAME = $$(notdir $$(call qstrip,\ + $$(BR2_TARGET_$(1)_CUSTOM_ENV_PATH))) +define $(1)_BUILD_CUSTOM_ENV + $$(@D)/scripts/bareboxenv -s \ + $$(call qstrip, $$(BR2_TARGET_$(1)_CUSTOM_ENV_PATH)) \ + $$(@D)/$$($(1)_ENV_NAME) +endef +define $(1)_INSTALL_CUSTOM_ENV + cp $$(@D)/$$($(1)_ENV_NAME) $$(BINARIES_DIR) +endef +endif + +ifneq ($$($(1)_CUSTOM_EMBEDDED_ENV_PATH),) +define $(1)_KCONFIG_FIXUP_CMDS + $$(call KCONFIG_ENABLE_OPT,CONFIG_DEFAULT_ENVIRONMENT,$$(@D)/.config) + $$(call KCONFIG_SET_OPT,CONFIG_DEFAULT_ENVIRONMENT_PATH,"$$($(1)_CUSTOM_EMBEDDED_ENV_PATH)",$$(@D)/.config) +endef +endif + +define $(1)_BUILD_CMDS + $$($(1)_BUILD_BAREBOXENV_CMDS) + $$(TARGET_MAKE_ENV) $$(MAKE) $$($(1)_MAKE_FLAGS) -C $$(@D) + $$($(1)_BUILD_CUSTOM_ENV) +endef + +$(1)_IMAGE_FILES = $$(call qstrip,$$(BR2_TARGET_$(1)_IMAGE_FILE)) + +define $(1)_INSTALL_IMAGES_CMDS + if test -n "$$($(1)_IMAGE_FILES)"; then \ + cp -L $$(foreach image,$$($(1)_IMAGE_FILES),$$(@D)/$$(image)) $$(BINARIES_DIR) ; \ + elif test -h $$(@D)/barebox-flash-image ; then \ + cp -L $$(@D)/barebox-flash-image $$(BINARIES_DIR)/barebox.bin ; \ + else \ + cp $$(@D)/barebox.bin $$(BINARIES_DIR);\ + fi + $$($(1)_INSTALL_CUSTOM_ENV) +endef + +ifeq ($$(BR2_TARGET_$(1)_BAREBOXENV),y) +define $(1)_INSTALL_TARGET_CMDS + cp $$(@D)/bareboxenv $$(TARGET_DIR)/usr/bin +endef +endif + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($$(BR2_TARGET_$(1))$$(BR_BUILDING),yy) +# We must use the user-supplied kconfig value, because +# $(1)_KCONFIG_DEFCONFIG will at least contain the +# trailing _defconfig +ifeq ($$(or $$($(1)_KCONFIG_FILE),$$(call qstrip,$$(BR2_TARGET_$(1)_BOARD_DEFCONFIG))),) +$$(error No Barebox config. Check your BR2_TARGET_$(1)_BOARD_DEFCONFIG or BR2_TARGET_$(1)_CUSTOM_CONFIG_FILE settings) +endif +endif + +$$(eval $$(kconfig-package)) + +endef + +################################################################################ +# barebox-package -- the target generator macro for barebox packages +################################################################################ + +barebox-package=$(call inner-barebox-package,$(call UPPERCASE,$(pkgname))) + +include boot/barebox/barebox/barebox.mk +include boot/barebox/barebox-aux/barebox-aux.mk + +ifeq ($(BR2_TARGET_BAREBOX)$(BR2_TARGET_BAREBOX_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(BAREBOX_SOURCE) +endif diff --git a/buildroot/boot/barebox/barebox/Config.in b/buildroot/boot/barebox/barebox/Config.in new file mode 100644 index 0000000..0be26ad --- /dev/null +++ b/buildroot/boot/barebox/barebox/Config.in @@ -0,0 +1,81 @@ +choice + prompt "Barebox configuration" + default BR2_TARGET_BAREBOX_USE_DEFCONFIG + +config BR2_TARGET_BAREBOX_USE_DEFCONFIG + bool "Using a defconfig" + +config BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG + bool "Using a custom config file" + +endchoice + +config BR2_TARGET_BAREBOX_BOARD_DEFCONFIG + string "board defconfig" + depends on BR2_TARGET_BAREBOX_USE_DEFCONFIG + help + Name of the board for which Barebox should be built, without + the _defconfig suffix. + + +config BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG + help + Path to the barebox configuration file + +config BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main Barebox configuration file. + +config BR2_TARGET_BAREBOX_IMAGE_FILE + string "Image file names" + help + Space-separated list of barebox images which will be copied to + the images directory. + + If left empty, defaults to: + - barebox.bin for barebox versions older than 2012.10. + - barebox-flash-image for later versions. + +config BR2_TARGET_BAREBOX_BAREBOXENV + bool "bareboxenv tool in target" + help + Install bareboxenv tool in target. + +config BR2_TARGET_BAREBOX_CUSTOM_ENV + bool "Generate an environment image" + help + Generate a custom environment image. This environment will + contain the variables and scripts to be used at boot by + barebox. + +config BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH + string "Environment path" + depends on BR2_TARGET_BAREBOX_CUSTOM_ENV + help + Path to the directory containing the custom barebox + environment. Depending on your setup, it will probably be + based on either the content of the defaultenv or + defaultenv-2 directories in the barebox source code, plus + the additions needed. The output will be an image in the + barebox devfs format, stored in the images directory, with + the same name as the directory name given here. + +config BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH + string "Embedded environment path" + help + If this option is not empty, it is the path to a custom + embedded barebox environment. This image will be used when + the environment found in the environment sector is + invalid. This option sets the barebox Kconfig option + CONFIG_DEFAULT_ENVIRONMENT_PATH to the specified path. This + way it is possible to use Buildroot variables like + TOPDIR etc. to refer to the custom environment. + + Depending on your setup, the custom embedded environment + will probably be based on either the content of the + defaultenv or defaultenv-2 directories in the barebox source + code. diff --git a/buildroot/boot/barebox/barebox/barebox.hash b/buildroot/boot/barebox/barebox/barebox.hash new file mode 120000 index 0000000..b6462b8 --- /dev/null +++ b/buildroot/boot/barebox/barebox/barebox.hash @@ -0,0 +1 @@ +../barebox.hash \ No newline at end of file diff --git a/buildroot/boot/barebox/barebox/barebox.mk b/buildroot/boot/barebox/barebox/barebox.mk new file mode 100644 index 0000000..39afb0f --- /dev/null +++ b/buildroot/boot/barebox/barebox/barebox.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# barebox +# +################################################################################ + +define BAREBOX_HELP_CMDS + @echo ' barebox-menuconfig - Run barebox menuconfig' + @echo ' barebox-savedefconfig - Run barebox savedefconfig' +endef + +# Instantiate the barebox package +$(eval $(barebox-package)) diff --git a/buildroot/boot/binaries-marvell/Config.in b/buildroot/boot/binaries-marvell/Config.in new file mode 100644 index 0000000..d565e4d --- /dev/null +++ b/buildroot/boot/binaries-marvell/Config.in @@ -0,0 +1,32 @@ +config BR2_TARGET_BINARIES_MARVELL + bool "binaries-marvell" + depends on BR2_aarch64 + help + Some systems, including Marvell Armada SoC, have a separate + System Control Processor (SCP) for power management, clocks, + reset and system control. ATF Boot Loader stage 2 (BL2) loads + optional SCP_BL2 image into a platform-specific region + of secure memory. This package downloads and installs such + firmwares, which are needed to build ATF. + + https://github.com/MarvellEmbeddedProcessors/binaries-marvell/ + +if BR2_TARGET_BINARIES_MARVELL + +choice + prompt "Marvell Armada platform" + +config BR2_TARGET_BINARIES_MARVELL_7040 + bool "7040" + +config BR2_TARGET_BINARIES_MARVELL_8040 + bool "8040" + +endchoice + +config BR2_TARGET_BINARIES_MARVELL_IMAGE + string + default "mrvl_scp_bl2_8040.img" if BR2_TARGET_BINARIES_MARVELL_8040 + default "mrvl_scp_bl2_7040.img" if BR2_TARGET_BINARIES_MARVELL_7040 + +endif diff --git a/buildroot/boot/binaries-marvell/binaries-marvell.hash b/buildroot/boot/binaries-marvell/binaries-marvell.hash new file mode 100644 index 0000000..94c6603 --- /dev/null +++ b/buildroot/boot/binaries-marvell/binaries-marvell.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7c41cddc2ce46038b630b59d2e9e50e903d27032bcfbf38019eaed14fcfdbe40 binaries-marvell-a8ac27b7884ed2c1efcf9f3326de3e0ed7b94e91.tar.gz +sha256 d8560ab4ea4042a55eee6857ded1d7e4bca2d9120b8c7a86d2a7fdc4ba4994e0 README.md diff --git a/buildroot/boot/binaries-marvell/binaries-marvell.mk b/buildroot/boot/binaries-marvell/binaries-marvell.mk new file mode 100644 index 0000000..152c9cd --- /dev/null +++ b/buildroot/boot/binaries-marvell/binaries-marvell.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# binaries-marvell +# +################################################################################ + +BINARIES_MARVELL_VERSION = a8ac27b7884ed2c1efcf9f3326de3e0ed7b94e91 +BINARIES_MARVELL_SITE = $(call github,MarvellEmbeddedProcessors,binaries-marvell,$(BINARIES_MARVELL_VERSION)) + +BINARIES_MARVELL_LICENSE = GPL-2.0 with freertos-exception-2.0 +BINARIES_MARVELL_LICENSE_FILES = README.md + +BINARIES_MARVELL_IMAGE = $(call qstrip,$(BR2_TARGET_BINARIES_MARVELL_IMAGE)) +BINARIES_MARVELL_INSTALL_IMAGES = YES + +define BINARIES_MARVELL_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/$(BINARIES_MARVELL_IMAGE) $(BINARIES_DIR)/scp-fw.bin +endef + +$(eval $(generic-package)) diff --git a/buildroot/boot/boot-wrapper-aarch64/Config.in b/buildroot/boot/boot-wrapper-aarch64/Config.in new file mode 100644 index 0000000..efb70dc --- /dev/null +++ b/buildroot/boot/boot-wrapper-aarch64/Config.in @@ -0,0 +1,41 @@ +comment "boot-wrapper-aarch64 needs a Linux kernel to be built" + depends on BR2_aarch64 + depends on !BR2_LINUX_KERNEL + +config BR2_TARGET_BOOT_WRAPPER_AARCH64 + bool "boot-wrapper-aarch64" + depends on BR2_aarch64 + depends on BR2_LINUX_KERNEL + help + The boot-wrapper-aarch64 is a small bootloader that makes it + possible to start an Aarch64 kernel inside the available + software simulators for the Aarch64 architecture. + + git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git + +if BR2_TARGET_BOOT_WRAPPER_AARCH64 + +config BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS + string "Device Tree Source name" + default "" + help + Name of the Device Tree Source file to use to generate the + Device Tree Blob that will be embedded in the image + generated by the boot wrapper. Valid names are the .dts + files from arch/arm64/boot/dts/ in the kernel source + tree. The name must be specified without the .dts suffix. + +config BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS + string "Kernel bootargs" + default "" + help + Kernel bootargs to embed inside the image generated by the + boot wrapper. + +config BR2_TARGET_BOOT_WRAPPER_AARCH64_PSCI + bool "Boot secondary SMP cores using PSCI" + help + Boot secondary SMP cores using PSCI firmware calls. If + disabled, the spin-table method is used instead. + +endif diff --git a/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk b/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk new file mode 100644 index 0000000..601cfab --- /dev/null +++ b/buildroot/boot/boot-wrapper-aarch64/boot-wrapper-aarch64.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# boot-wrapper-aarch64 +# +################################################################################ + +BOOT_WRAPPER_AARCH64_VERSION = 4266507a84f8c06452109d38e0350d4759740694 +BOOT_WRAPPER_AARCH64_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/mark/boot-wrapper-aarch64.git +BOOT_WRAPPER_AARCH64_LICENSE = BSD3c +BOOT_WRAPPER_AARCH64_LICENSE_FILES = LICENSE.txt +BOOT_WRAPPER_AARCH64_DEPENDENCIES = linux +BOOT_WRAPPER_AARCH64_INSTALL_IMAGES = YES + +# The Git repository does not have the generated configure script and +# Makefile. +BOOT_WRAPPER_AARCH64_AUTORECONF = YES + +BOOT_WRAPPER_AARCH64_DTB = /arch/arm64/boot/dts/$(basename $(call qstrip,$(BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS))).dtb + +# Fixup the path to the DTB in configure.ac. In the future, this +# should hopefully be made more configurable by the +# boot-wrapper-aarch64 developers. +define BOOT_WRAPPER_AARCH64_FIX_DTB_NAME + $(SED) 's%^KERN_DTB=.*%KERN_DTB=$(BOOT_WRAPPER_AARCH64_DTB)%' $(@D)/configure.ac +endef + +BOOT_WRAPPER_AARCH64_PRE_PATCH_HOOKS += BOOT_WRAPPER_AARCH64_FIX_DTB_NAME + +BOOT_WRAPPER_AARCH64_CONF_OPTS = \ + --with-kernel-dir=$(LINUX_DIR) \ + --with-cmdline=$(BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS) + +ifeq ($(BR2_TARGET_BOOT_WRAPPER_AARCH64_PSCI),y) +BOOT_WRAPPER_AARCH64_CONF_OPTS += --enable-psci +else +BOOT_WRAPPER_AARCH64_CONF_OPTS += --disable-psci +endif + +# We need to convince the configure script that the Linux kernel tree +# exists, as well as the DTB and the kernel Image. Even though those +# are available on the build machine, the configure script uses +# AC_CHECK_FILE tests, which are always disabled in cross-compilation +# situations. +BOOT_WRAPPER_AARCH64_CONF_ENV = \ + $(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR))=yes \ + $(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR)$(BOOT_WRAPPER_AARCH64_DTB))=yes \ + $(call AUTOCONF_AC_CHECK_FILE_VAL,$(LINUX_DIR)/arch/arm64/boot/Image)=yes + +define BOOT_WRAPPER_AARCH64_INSTALL_IMAGES_CMDS + cp $(@D)/linux-system.axf $(BINARIES_DIR) +endef + +$(eval $(autotools-package)) diff --git a/buildroot/boot/common.mk b/buildroot/boot/common.mk new file mode 100644 index 0000000..3021e51 --- /dev/null +++ b/buildroot/boot/common.mk @@ -0,0 +1 @@ +include $(sort $(wildcard boot/*/*.mk)) diff --git a/buildroot/boot/grub2/Config.in b/buildroot/boot/grub2/Config.in new file mode 100644 index 0000000..9a61b3b --- /dev/null +++ b/buildroot/boot/grub2/Config.in @@ -0,0 +1,83 @@ +config BR2_TARGET_GRUB2_ARCH_SUPPORTS + bool + default y if BR2_i386 + default y if BR2_x86_64 + +config BR2_TARGET_GRUB2 + bool "grub2" + depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS + depends on BR2_USE_WCHAR + help + GNU GRUB is a Multiboot boot loader. It was derived from + GRUB, the GRand Unified Bootloader, which was originally + designed and implemented by Erich Stefan Boleyn. GRUB 2 has + replaced what was formerly known as GRUB (i.e. version + 0.9x), which has, in turn, become GRUB Legacy. + + Amongst others, GRUB2 offers EFI support, which GRUB Legacy + doesn't provide. + + For additional notes on using Grub 2 with Buildroot, see + boot/grub2/readme.txt + + http://www.gnu.org/software/grub/ + +if BR2_TARGET_GRUB2 + +choice + prompt "Platform" + +config BR2_TARGET_GRUB2_I386_PC + bool "i386-pc" + help + Select this option if the platform you're targetting is a + x86 or x86-64 legacy BIOS based platform. + +config BR2_TARGET_GRUB2_I386_EFI + bool "i386-efi" + help + Select this option if the platform you're targetting has a + 32 bits EFI BIOS. Note that some x86-64 platforms use a 32 + bits EFI BIOS, and this option should be used in this case. + +config BR2_TARGET_GRUB2_X86_64_EFI + bool "x86-64-efi" + depends on BR2_ARCH_IS_64 + help + Select this option if the platform you're targetting has a + 64 bits EFI BIOS. + +endchoice + +if BR2_TARGET_GRUB2_I386_PC + +config BR2_TARGET_GRUB2_BOOT_PARTITION + string "boot partition" + default "hd0,msdos1" + help + Specify the partition where the /boot/grub/grub.cfg file is + located. Use 'hd0,msdos1' for the first partition of the + first disk if using a legacy partition table, or 'hd0,gpt1' + if using GPT partition table. + +endif # BR2_TARGET_GRUB2_I386_PC + +config BR2_TARGET_GRUB2_BUILTIN_MODULES + string "builtin modules" + default "boot linux ext2 fat squash4 part_msdos part_gpt normal biosdisk" if BR2_TARGET_GRUB2_I386_PC + default "boot linux ext2 fat squash4 part_msdos part_gpt normal efi_gop" \ + if BR2_TARGET_GRUB2_I386_EFI || BR2_TARGET_GRUB2_X86_64_EFI + +config BR2_TARGET_GRUB2_BUILTIN_CONFIG + string "builtin config" + help + Path to a Grub 2 configuration file that will be embedded + into the Grub image itself. This allows to set the root + device and other configuration parameters, but however menu + entries cannot be described in this embedded configuration. + +endif # BR2_TARGET_GRUB2 + +comment "grub2 needs a toolchain w/ wchar" + depends on BR2_TARGET_GRUB2_ARCH_SUPPORTS + depends on !BR2_USE_WCHAR diff --git a/buildroot/boot/grub2/grub.cfg b/buildroot/boot/grub2/grub.cfg new file mode 100644 index 0000000..bd3e3f0 --- /dev/null +++ b/buildroot/boot/grub2/grub.cfg @@ -0,0 +1,6 @@ +set default="0" +set timeout="5" + +menuentry "Buildroot" { + linux /boot/bzImage root=/dev/sda1 rootwait console=tty1 +} diff --git a/buildroot/boot/grub2/grub2.hash b/buildroot/boot/grub2/grub2.hash new file mode 100644 index 0000000..7f0679f --- /dev/null +++ b/buildroot/boot/grub2/grub2.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 810b3798d316394f94096ec2797909dbf23c858e48f7b3830826b8daa06b7b0f grub-2.02.tar.xz diff --git a/buildroot/boot/grub2/grub2.mk b/buildroot/boot/grub2/grub2.mk new file mode 100644 index 0000000..35aea41 --- /dev/null +++ b/buildroot/boot/grub2/grub2.mk @@ -0,0 +1,112 @@ +################################################################################ +# +# grub2 +# +################################################################################ + +GRUB2_VERSION = 2.02 +GRUB2_SITE = http://ftp.gnu.org/gnu/grub +GRUB2_SOURCE = grub-$(GRUB2_VERSION).tar.xz +GRUB2_LICENSE = GPL-3.0+ +GRUB2_LICENSE_FILES = COPYING +GRUB2_DEPENDENCIES = host-bison host-flex + +GRUB2_BUILTIN_MODULES = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES)) +GRUB2_BUILTIN_CONFIG = $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_CONFIG)) +GRUB2_BOOT_PARTITION = $(call qstrip,$(BR2_TARGET_GRUB2_BOOT_PARTITION)) + +ifeq ($(BR2_TARGET_GRUB2_I386_PC),y) +GRUB2_IMAGE = $(BINARIES_DIR)/grub.img +GRUB2_CFG = $(TARGET_DIR)/boot/grub/grub.cfg +GRUB2_PREFIX = ($(GRUB2_BOOT_PARTITION))/boot/grub +GRUB2_TUPLE = i386-pc +GRUB2_TARGET = i386 +GRUB2_PLATFORM = pc +else ifeq ($(BR2_TARGET_GRUB2_I386_EFI),y) +GRUB2_IMAGE = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootia32.efi +GRUB2_CFG = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX = /EFI/BOOT +GRUB2_TUPLE = i386-efi +GRUB2_TARGET = i386 +GRUB2_PLATFORM = efi +else ifeq ($(BR2_TARGET_GRUB2_X86_64_EFI),y) +GRUB2_IMAGE = $(BINARIES_DIR)/efi-part/EFI/BOOT/bootx64.efi +GRUB2_CFG = $(BINARIES_DIR)/efi-part/EFI/BOOT/grub.cfg +GRUB2_PREFIX = /EFI/BOOT +GRUB2_TUPLE = x86_64-efi +GRUB2_TARGET = x86_64 +GRUB2_PLATFORM = efi +endif + +# Grub2 is kind of special: it considers CC, LD and so on to be the +# tools to build the native tools (i.e to be executed on the build +# machine), and uses TARGET_CC, TARGET_CFLAGS, TARGET_CPPFLAGS, +# TARGET_LDFLAGS to build the bootloader itself. However, to add to +# the confusion, it also uses NM, OBJCOPY and STRIP to build the +# bootloader itself; none of these are used to build the native +# tools. +# +# NOTE: TARGET_STRIP is overridden by !BR2_STRIP_strip, so always +# use the cross compile variant to ensure grub2 builds + +GRUB2_CONF_ENV = \ + $(HOST_CONFIGURE_OPTS) \ + CPP="$(HOSTCC) -E" \ + TARGET_CC="$(TARGET_CC)" \ + TARGET_CFLAGS="$(TARGET_CFLAGS)" \ + TARGET_CPPFLAGS="$(TARGET_CPPFLAGS) -fno-stack-protector" \ + TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \ + NM="$(TARGET_NM)" \ + OBJCOPY="$(TARGET_OBJCOPY)" \ + STRIP="$(TARGET_CROSS)strip" + +GRUB2_CONF_OPTS = \ + --target=$(GRUB2_TARGET) \ + --with-platform=$(GRUB2_PLATFORM) \ + --prefix=/ \ + --exec-prefix=/ \ + --disable-grub-mkfont \ + --enable-efiemu=no \ + ac_cv_lib_lzma_lzma_code=no \ + --enable-device-mapper=no \ + --enable-libzfs=no \ + --disable-werror + +# We don't want all the native tools and Grub2 modules to be installed +# in the target. So we in fact install everything into the host +# directory, and the image generation process (below) will use the +# grub-mkimage tool and Grub2 modules from the host directory. + +GRUB2_INSTALL_TARGET_OPTS = DESTDIR=$(HOST_DIR) install + +ifeq ($(BR2_TARGET_GRUB2_I386_PC),y) +define GRUB2_IMAGE_INSTALL_ELTORITO + cat $(HOST_DIR)/lib/grub/$(GRUB2_TUPLE)/cdboot.img $(GRUB2_IMAGE) > \ + $(BINARIES_DIR)/grub-eltorito.img +endef +endif + +define GRUB2_IMAGE_INSTALLATION + mkdir -p $(dir $(GRUB2_IMAGE)) + $(HOST_DIR)/bin/grub-mkimage \ + -d $(HOST_DIR)/lib/grub/$(GRUB2_TUPLE) \ + -O $(GRUB2_TUPLE) \ + -o $(GRUB2_IMAGE) \ + -p "$(GRUB2_PREFIX)" \ + $(if $(GRUB2_BUILTIN_CONFIG),-c $(GRUB2_BUILTIN_CONFIG)) \ + $(GRUB2_BUILTIN_MODULES) + mkdir -p $(dir $(GRUB2_CFG)) + $(INSTALL) -D -m 0644 boot/grub2/grub.cfg $(GRUB2_CFG) + $(GRUB2_IMAGE_INSTALL_ELTORITO) +endef +GRUB2_POST_INSTALL_TARGET_HOOKS += GRUB2_IMAGE_INSTALLATION + +ifeq ($(GRUB2_PLATFORM),efi) +define GRUB2_EFI_STARTUP_NSH + echo $(notdir $(GRUB2_IMAGE)) > \ + $(BINARIES_DIR)/efi-part/startup.nsh +endef +GRUB2_POST_INSTALL_TARGET_HOOKS += GRUB2_EFI_STARTUP_NSH +endif + +$(eval $(autotools-package)) diff --git a/buildroot/boot/grub2/readme.txt b/buildroot/boot/grub2/readme.txt new file mode 100644 index 0000000..f6fd456 --- /dev/null +++ b/buildroot/boot/grub2/readme.txt @@ -0,0 +1,98 @@ +Notes on using Grub2 for BIOS-based platforms +============================================= + +1. Create a disk image + dd if=/dev/zero of=disk.img bs=1M count=32 +2. Partition it (either legacy or GPT style partitions work) + cfdisk disk.img + - Create one partition, type Linux, for the root + filesystem. The only constraint is to make sure there + is enough free space *before* the first partition to + store Grub2. Leaving 1 MB of free space is safe. +3. Setup loop device and loop partitions + sudo losetup -f disk.img + sudo partx -a /dev/loop0 +4. Prepare the root partition + sudo mkfs.ext3 -L root /dev/loop0p1 + sudo mount /dev/loop0p1 /mnt + sudo tar -C /mnt -xf output/images/rootfs.tar + sudo umount /mnt +5. Install Grub2 + sudo ./output/host/sbin/grub-bios-setup \ + -b ./output/host/lib/grub/i386-pc/boot.img \ + -c ./output/images/grub.img -d . /dev/loop0 +6. Cleanup loop device + sudo partx -d /dev/loop0 + sudo losetup -d /dev/loop0 +7. Your disk.img is ready! + +Using genimage +-------------- + +If you use genimage to generate your complete image, +installing Grub can be tricky. Here is how to achieve Grub's +installation with genimage: + +partition boot { + in-partition-table = "no" + image = "path_to_boot.img" + offset = 0 + size = 512 +} +partition grub { + in-partition-table = "no" + image = "path_to_grub.img" + offset = 512 +} + +The result is not byte to byte identical to what +grub-bios-setup does but it works anyway. + +To test your BIOS image in Qemu +------------------------------- + +qemu-system-{i386,x86-64} -hda disk.img + +Notes on using Grub2 for EFI-based platforms +============================================ + +1. Create a disk image + dd if=/dev/zero of=disk.img bs=1M count=32 +2. Partition it with GPT partitions + cgdisk disk.img + - Create a first partition, type EF00, for the + bootloader and kernel image + - Create a second partition, type 8300, for the root + filesystem. +3. Setup loop device and loop partitions + sudo losetup -f disk.img + sudo partx -a /dev/loop0 +4. Prepare the boot partition + sudo mkfs.vfat -n boot /dev/loop0p1 + sudo mount /dev/loop0p1 /mnt + sudo cp -a output/images/efi-part/* /mnt/ + sudo cp output/images/bzImage /mnt/ + sudo umount /mnt +5. Prepare the root partition + sudo mkfs.ext3 -L root /dev/loop0p2 + sudo mount /dev/loop0p2 /mnt + sudo tar -C /mnt -xf output/images/rootfs.tar + sudo umount /mnt +6 Cleanup loop device + sudo partx -d /dev/loop0 + sudo losetup -d /dev/loop0 +7. Your disk.img is ready! + +To test your EFI image in Qemu +------------------------------ + +1. Download the EFI BIOS for Qemu + Version IA32 or X64 depending on the chosen Grub2 + platform (i386-efi vs. x86-64-efi) + http://sourceforge.net/projects/edk2/files/OVMF/ +2. Extract, and rename OVMF.fd to bios.bin and + CirrusLogic5446.rom to vgabios-cirrus.bin. +3. qemu-system-{i386,x86-64} -L ovmf-dir/ -hda disk.img +4. Make sure to pass pci=nocrs to the kernel command line, + to workaround a bug in the EFI BIOS regarding the + EFI framebuffer. diff --git a/buildroot/boot/gummiboot/Config.in b/buildroot/boot/gummiboot/Config.in new file mode 100644 index 0000000..11dbc4f --- /dev/null +++ b/buildroot/boot/gummiboot/Config.in @@ -0,0 +1,23 @@ +config BR2_TARGET_GUMMIBOOT + bool "gummiboot" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_GNU_EFI + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + gummiboot is a simple UEFI boot manager which executes + configured EFI images. The default entry is selected by a + configured pattern (glob) or an on-screen menu. + + gummiboot operates on the EFI System Partition (ESP) + only. Configuration file fragments, kernels, initrds, other + EFI images need to reside on the ESP. Linux kernels need to + be built with CONFIG_EFI_STUB to be able to be directly + executed as an EFI image. + + See the Grub2 help text for details on preparing an EFI + capable disk image using Gummiboot: the instructions are + exactly the same, except that the Gummiboot configuration + files will be located in /loader/ inside the EFI partition. + + http://freedesktop.org/wiki/Software/gummiboot/ diff --git a/buildroot/boot/gummiboot/buildroot.conf b/buildroot/boot/gummiboot/buildroot.conf new file mode 100644 index 0000000..8a6f02e --- /dev/null +++ b/buildroot/boot/gummiboot/buildroot.conf @@ -0,0 +1,4 @@ +title Buildroot +version 1 +linux /bzImage +options console=ttyS0 root=/dev/sda2 diff --git a/buildroot/boot/gummiboot/gummiboot.mk b/buildroot/boot/gummiboot/gummiboot.mk new file mode 100644 index 0000000..85a5daa --- /dev/null +++ b/buildroot/boot/gummiboot/gummiboot.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# gummiboot +# +################################################################################ + +GUMMIBOOT_SITE = http://cgit.freedesktop.org/gummiboot +GUMMIBOOT_SITE_METHOD = git +GUMMIBOOT_VERSION = 43 +GUMMIBOOT_LICENSE = LGPL-2.1+ +GUMMIBOOT_LICENSE_FILES = LICENSE + +# The git archive does not have the autoconf/automake stuff generated. +GUMMIBOOT_AUTORECONF = YES +GUMMIBOOT_DEPENDENCIES = gnu-efi host-pkgconf util-linux +GUMMIBOOT_INSTALL_TARGET = NO +GUMMIBOOT_INSTALL_IMAGES = YES + +ifeq ($(BR2_i386),y) +GUMMIBOOT_IMGARCH = ia32 +else ifeq ($(BR2_x86_64),y) +GUMMIBOOT_IMGARCH = x64 +endif + +GUMMIBOOT_CONF_OPTS = \ + --host=$(BR2_ARCH) \ + --with-efi-libdir=$(STAGING_DIR)/usr/lib \ + --with-efi-ldsdir=$(STAGING_DIR)/usr/lib \ + --with-efi-includedir=$(STAGING_DIR)/usr/include \ + --disable-manpages + +define GUMMIBOOT_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/gummiboot$(GUMMIBOOT_IMGARCH).efi \ + $(BINARIES_DIR)/efi-part/EFI/BOOT/boot$(GUMMIBOOT_IMGARCH).efi + echo "boot$(GUMMIBOOT_IMGARCH).efi" > \ + $(BINARIES_DIR)/efi-part/startup.nsh + $(INSTALL) -D -m 0644 boot/gummiboot/loader.conf \ + $(BINARIES_DIR)/efi-part/loader/loader.conf + $(INSTALL) -D -m 0644 boot/gummiboot/buildroot.conf \ + $(BINARIES_DIR)/efi-part/loader/entries/buildroot.conf +endef + +$(eval $(autotools-package)) diff --git a/buildroot/boot/gummiboot/loader.conf b/buildroot/boot/gummiboot/loader.conf new file mode 100644 index 0000000..93b77b8 --- /dev/null +++ b/buildroot/boot/gummiboot/loader.conf @@ -0,0 +1,2 @@ +timeout 3 +default buildroot diff --git a/buildroot/boot/lpc32xxcdl/Config.in b/buildroot/boot/lpc32xxcdl/Config.in new file mode 100644 index 0000000..ce7589c --- /dev/null +++ b/buildroot/boot/lpc32xxcdl/Config.in @@ -0,0 +1,10 @@ +config BR2_TARGET_LPC32XXCDL + depends on BR2_arm926t + bool "LPC32XX CDL (kickstart and S1L)" + +if BR2_TARGET_LPC32XXCDL + +config BR2_TARGET_LPC32XXCDL_BOARDNAME + string "LPC32xx board name" + +endif #BR2_TARGET_LPC32XXCDL diff --git a/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-compiler_name.patch b/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-compiler_name.patch new file mode 100644 index 0000000..6aecbde --- /dev/null +++ b/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-compiler_name.patch @@ -0,0 +1,52 @@ +Use CROSS_COMPILE as compiler name and stop using libc + +Signed-off-by: Alexandre Belloni +--- + makerule/lpc32xx/make.lpc32xx.gnu | 22 +++++++++++----------- + 1 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/makerule/lpc32xx/make.lpc32xx.gnu b/makerule/lpc32xx/make.lpc32xx.gnu +index 1014c28..3277d99 100644 +--- a/makerule/lpc32xx/make.lpc32xx.gnu ++++ b/makerule/lpc32xx/make.lpc32xx.gnu +@@ -27,19 +27,19 @@ CFLAGS += -mno-sched-prolog -fno-hosted -mno-thumb-interwork -ffunction-sectio + CFLAGS += -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) + AFLAGS = -mcpu=arm926ej-s + AFLAGS += -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) +-CC = arm-none-eabi-gcc +-AS = arm-none-eabi-as +-AR = arm-none-eabi-ar -r +-LD = arm-none-eabi-gcc +-NM = arm-none-eabi-nm +-OBJDUMP = arm-none-eabi-objdump +-OBJCOPY = arm-none-eabi-objcopy +-READELF = arm-none-eabi-readelf ++CC = $(CROSS_COMPILE)gcc ++AS = $(CROSS_COMPILE)as ++AR = $(CROSS_COMPILE)ar -r ++LD = $(CROSS_COMPILE)gcc ++NM = $(CROSS_COMPILE)nm ++OBJDUMP = $(CROSS_COMPILE)objdump ++OBJCOPY = $(CROSS_COMPILE)objcopy ++READELF = $(CROSS_COMPILE)readelf + LDFLAGS += -Wl,--gc-sections + + LK = -static + LK += -Wl,--start-group $(TARGET_CSP_LIB) $(TARGET_BSP_LIB) $(TARGET_GEN_LIB) +-LK += -lgcc -lc -lg -lm -lstdc++ -lsupc++ ++LK += -nostdlib -lgcc #-lc -lg -lm -lstdc++ -lsupc++ + LK += -Wl,--end-group + MAP = -Xlinker -Map -Xlinker + LDESC = -Xlinker -T +@@ -47,6 +47,6 @@ ENTRY = -e + BIN = -bin + EXT = .elf + LEXT = +-ELFTOREC =arm-none-eabi-objcopy -O srec --strip-all --verbose +-ELFTOBIN =arm-none-eabi-objcopy -I elf32-littlearm -O binary --strip-all --verbose ++ELFTOREC = $(OBJCOPY) -O srec --strip-all --verbose ++ELFTOBIN = $(OBJCOPY) -I elf32-littlearm -O binary --strip-all --verbose + REC =.srec +-- +1.7.7.3 + diff --git a/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-delete_redundant_files.patch b/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-delete_redundant_files.patch new file mode 100644 index 0000000..39966f0 --- /dev/null +++ b/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-delete_redundant_files.patch @@ -0,0 +1,969 @@ +Remove duplicated files to stop the linker from complaining about duplicate +symbols + +Signed-off-by: Alexandre Belloni +--- +--- a/csps/lpc32xx/bsps/fdi3250/startup/examples/s1l/sysapi_timer.c 2011-10-05 19:10:37.000000000 +0200 ++++ /dev/null 2012-01-01 16:39:47.918907000 +0100 +@@ -1,212 +0,0 @@ +-/*********************************************************************** +- * $Id:: sysapi_timer.c 3394 2010-05-06 17:56:27Z usb10132 $ +- * +- * Project: Time support functions +- * +- * Description: +- * Implements the following functions required for the S1L API +- * time_init +- * time_reset +- * time_start +- * time_stop +- * time_get +- * time_get_rate +- * +- *********************************************************************** +- * Software that is described herein is for illustrative purposes only +- * which provides customers with programming information regarding the +- * products. This software is supplied "AS IS" without any warranties. +- * NXP Semiconductors assumes no responsibility or liability for the +- * use of the software, conveys no license or title under any patent, +- * copyright, or mask work right to the product. NXP Semiconductors +- * reserves the right to make changes in the software without +- * notification. NXP Semiconductors also make no representation or +- * warranty that such application will be suitable for the specified +- * use without further testing or modification. +- **********************************************************************/ +- +-#include "s1l_sys_inf.h" +-#include "lpc32xx_intc_driver.h" +-#include "lpc32xx_timer_driver.h" +- +-static UNS_64 base_rate; +-static INT_32 tdev = 0; +- +-/*********************************************************************** +- * +- * Function: time_init +- * +- * Purpose: Initializes time system +- * +- * Processing: Initializes the system timer. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: 0 if the init failed, otherwise non-zero +- * +- * Notes: None +- * +- **********************************************************************/ +-INT_32 time_init(void) +-{ +- TMR_PSCALE_SETUP_T pscale; +- +- /* Open timer driver */ +- if (tdev == 0) +- { +- tdev = timer_open((void *) TIMER_CNTR0, 0); +- if (tdev != 0) +- { +- /* Use a prescale count to 100000 */ +- pscale.ps_tick_val = 100000; +- pscale.ps_us_val = 0; /* Not needed when ps_tick_val != 0 */ +- timer_ioctl(tdev, TMR_SETUP_PSCALE, (INT_32) &pscale); +- +- /* Get timer clock rate */ +- base_rate = (UNS_64) timer_ioctl(tdev, TMR_GET_STATUS, +- TMR_GET_CLOCK); +- } +- } +- +- return tdev; +-} +- +-/*********************************************************************** +- * +- * Function: time_reset +- * +- * Purpose: Resets system timer +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: Nothing +- * +- * Notes: None +- * +- **********************************************************************/ +-void time_reset(void) +-{ +- if (tdev != 0) +- { +- timer_ioctl(tdev, TMR_RESET, 1); +- } +-} +- +-/*********************************************************************** +- * +- * Function: time_start +- * +- * Purpose: Starts system timer +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: Nothing +- * +- * Notes: None +- * +- **********************************************************************/ +-void time_start(void) +-{ +- if (tdev != 0) +- { +- timer_ioctl(tdev, TMR_ENABLE, 1); +- } +-} +- +-/*********************************************************************** +- * +- * Function: time_stop +- * +- * Purpose: Stops system timer +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: Nothing +- * +- * Notes: None +- * +- **********************************************************************/ +-void time_stop(void) +-{ +- if (tdev != 0) +- { +- timer_ioctl(tdev, TMR_ENABLE, 0); +- } +-} +- +-/*********************************************************************** +- * +- * Function: time_get +- * +- * Purpose: Returns current system time value +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: The number of ticks of the timer counter +- * +- * Notes: None +- * +- **********************************************************************/ +-UNS_64 time_get(void) +-{ +- TMR_COUNTS_T tcounts; +- UNS_64 ticks = 0; +- +- if (tdev != 0) +- { +- timer_ioctl(tdev, TMR_GET_COUNTS, (INT_32) &tcounts); +- +- /* Compute number of timer ticks */ +- ticks = (UNS_64) tcounts.count_val * 100000; +- ticks = ticks + (UNS_64) tcounts.ps_count_val; +- } +- +- return ticks; +-} +- +-/*********************************************************************** +- * +- * Function: time_get_rate +- * +- * Purpose: +- * Returns base tick rate (ticks per second) of the time counter +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: The timer tick rate (in ticks per second) +- * +- * Notes: None +- * +- **********************************************************************/ +-UNS_64 time_get_rate(void) +-{ +- return base_rate; +-} +- +--- a/csps/lpc32xx/bsps/fdi3250/startup/examples/s1l/sys_mmu_cmd_group.c 2011-10-05 19:10:37.000000000 +0200 ++++ /dev/null 2012-01-01 16:39:47.918907000 +0100 +@@ -1,746 +0,0 @@ +-/*********************************************************************** +- * $Id:: sys_mmu_cmd_group.c 3430 2010-05-07 17:39:08Z usb10132 $ +- * +- * Project: Command processor for peek, poke, dump, and fill +- * +- * Description: +- * Processes commands from the command prompt +- * +- *********************************************************************** +- * Software that is described herein is for illustrative purposes only +- * which provides customers with programming information regarding the +- * products. This software is supplied "AS IS" without any warranties. +- * NXP Semiconductors assumes no responsibility or liability for the +- * use of the software, conveys no license or title under any patent, +- * copyright, or mask work right to the product. NXP Semiconductors +- * reserves the right to make changes in the software without +- * notification. NXP Semiconductors also make no representation or +- * warranty that such application will be suitable for the specified +- * use without further testing or modification. +- **********************************************************************/ +- +-#include "lpc_arm922t_cp15_driver.h" +-#include "lpc_string.h" +-#include "startup.h" +-#include "s1l_cmds.h" +-#include "s1l_sys_inf.h" +- +-/* dcache command */ +-BOOL_32 cmd_dcache(void); +-static UNS_32 cmd_dcache_plist[] = +-{ +- (PARSE_TYPE_STR), /* The "dcache" command */ +- (PARSE_TYPE_DEC | PARSE_TYPE_END) +-}; +-static CMD_ROUTE_T core_dcache_cmd = +-{ +- (UNS_8 *) "dcache", +- cmd_dcache, +- (UNS_8 *) "Enables, disables, or flushes data cache", +- (UNS_8 *) "dcache [0(disable), 1(enable), 2(flush)]", +- cmd_dcache_plist, +- NULL +-}; +- +-/* icache command */ +-BOOL_32 cmd_icache(void); +-static UNS_32 cmd_icache_plist[] = +-{ +- (PARSE_TYPE_STR), /* The "icache" command */ +- (PARSE_TYPE_DEC | PARSE_TYPE_END) +-}; +-static CMD_ROUTE_T core_icache_cmd = +-{ +- (UNS_8 *) "icache", +- cmd_icache, +- (UNS_8 *) "Enables or disables instruction cache", +- (UNS_8 *) "icache [0(disable), 1(enable)]", +- cmd_icache_plist, +- NULL +-}; +- +-/* inval command */ +-BOOL_32 cmd_inval(void); +-static UNS_32 cmd_inval_plist[] = +-{ +- (PARSE_TYPE_STR | PARSE_TYPE_END) /* The "inval" command */ +-}; +-static CMD_ROUTE_T core_inval_cmd = +-{ +- (UNS_8 *) "inval", +- cmd_inval, +- (UNS_8 *) "Flushes data cache and invalidates instruction cache", +- (UNS_8 *) "inval", +- cmd_inval_plist, +- NULL +-}; +- +-/* mmuenab command */ +-BOOL_32 cmd_mmuenab(void); +-static UNS_32 cmd_mmuenab_plist[] = +-{ +- (PARSE_TYPE_STR), /* The "mmuenab" command */ +- (PARSE_TYPE_DEC | PARSE_TYPE_END) +-}; +-static CMD_ROUTE_T core_mmuenab_cmd = +-{ +- (UNS_8 *) "mmuenab", +- cmd_mmuenab, +- (UNS_8 *) "Enables or disables the MMU", +- (UNS_8 *) "mmuenab [0(disable), 1(enable)]", +- cmd_mmuenab_plist, +- NULL +-}; +- +-/* map command */ +-BOOL_32 cmd_map(void); +-static UNS_32 cmd_map_plist[] = +-{ +- (PARSE_TYPE_STR), /* The "map" command */ +- (PARSE_TYPE_HEX), +- (PARSE_TYPE_HEX), +- (PARSE_TYPE_DEC), +- (PARSE_TYPE_DEC | PARSE_TYPE_END), +-}; +-static CMD_ROUTE_T core_map_cmd = +-{ +- (UNS_8 *) "map", +- cmd_map, +- (UNS_8 *) "Maps a range of physical address sections to virtual addresses", +- (UNS_8 *) "map [virt hex addr][phy hex addr][sections][0(uncached), 1(cached), 2(unmap)]", +- cmd_map_plist, +- NULL +-}; +- +-/* mmuinfo command */ +-static BOOL_32 cmd_mmuinfo(void); +-static UNS_32 cmd_mmuinfo_plist[] = +-{ +- (PARSE_TYPE_STR | PARSE_TYPE_END) /* The "mmuinfo" command */ +-}; +-static CMD_ROUTE_T core_mmuinfo_cmd = +-{ +- (UNS_8 *) "mmuinfo", +- cmd_mmuinfo, +- (UNS_8 *) "Dumps page table and MMU info", +- (UNS_8 *) "mmuinfo", +- cmd_mmuinfo_plist, +- NULL +-}; +- +-/* MMU group */ +-static GROUP_LIST_T mmu_group = +-{ +- (UNS_8 *) "mmu", /* mmu group */ +- (UNS_8 *) "MMU command group", +- NULL, +- NULL +-}; +- +-static UNS_8 enabled_msg [] =" enabled"; +-static UNS_8 disabled_msg [] =" disabled"; +-static UNS_8 dcache_msg[] = "Data cache"; +-static UNS_8 icache_msg[] = "Instruction cache"; +-static UNS_8 pagetab_msg[] = "Page table at address: "; +-static UNS_8 slist_msg[] = "Type Virt Phy fl Size"; +-static UNS_8 mmu_msg [] ="MMU"; +-static UNS_8 cpage_msg[] = "Coarse page:"; +-static UNS_8 fpage_msg[] = "Fine page :"; +-static UNS_8 sect_msg[] = "Section :"; +-static UNS_8 mbytes_msg[] = "M"; +-static UNS_8 map1_err_msg[] = +- "Error : section addresses must be aligned on a 32-bit boundary"; +-static UNS_8 map2_err_msg[] = +- "Error : Number of sections exceeds address range of device"; +-static UNS_8 phya_msg[] = "Virtual address "; +-static UNS_8 mapped_msg[] = " mapped to physical address "; +-static UNS_8 unmapped_msg[] = " unmapped from physical address "; +-static UNS_8 cached_msg[] = " (cached)"; +-static UNS_8 inval_msg[] = " invalidated"; +-static UNS_8 caches_msg [] ="Caches"; +-static UNS_8 flushed_msg[] = " flushed"; +- +-/*********************************************************************** +- * +- * Function: show_section +- * +- * Purpose: Display section information +- * +- * Processing: +- * See function. +- * +- * Parameters: +- * mmu_reg : MMU settings for this section +- * virt_addr : Starting virtual address for this section +- * segs : Number of 1M segments for this section +- * +- * Outputs: None +- * +- * Returns: Nothing +- * +- * Notes: None +- * +- **********************************************************************/ +-static void show_section(UNS_32 mmu_reg, +- UNS_32 virt_addr, +- UNS_32 segs) +-{ +- UNS_8 straddr [16]; +- UNS_32 mmu_phy; +- +- if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) != +- ARM922T_L1D_TYPE_FAULT) +- { +- if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) == +- ARM922T_L1D_TYPE_CPAGE) +- { +- term_dat_out(cpage_msg); +- } +- else if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) == +- ARM922T_L1D_TYPE_FPAGE) +- { +- term_dat_out(fpage_msg); +- } +- else +- { +- term_dat_out(sect_msg); +- } +- +- /* Compute virtual address */ +- str_makehex(straddr, virt_addr, 8); +- term_dat_out(straddr); +- term_dat_out((UNS_8 *) " "); +- +- /* Compute mapped physical address */ +- if ((mmu_reg & ARM922T_L1D_TYPE_PG_SN_MASK) == +- ARM922T_L1D_TYPE_SECTION) +- { +- mmu_phy = mmu_reg & 0xFFF00000; +- } +- else +- { +- /* Don't compute addresses for non-sections */ +- mmu_phy = 0; +- } +- str_makehex(straddr, mmu_phy, 8); +- term_dat_out(straddr); +- term_dat_out((UNS_8 *) " "); +- +- /* MMU flags */ +- if ((mmu_reg & ARM922T_L1D_BUFFERABLE) != 0) +- { +- term_dat_out((UNS_8 *) "b"); +- } +- else +- { +- term_dat_out((UNS_8 *) " "); +- } +- if ((mmu_reg & ARM922T_L1D_CACHEABLE) != 0) +- { +- term_dat_out((UNS_8 *) "c"); +- } +- else +- { +- term_dat_out((UNS_8 *) " "); +- } +- term_dat_out((UNS_8 *) " "); +- +- /* Displays used megabytes */ +- str_makedec(straddr, segs); +- term_dat_out(straddr); +- term_dat_out_crlf(mbytes_msg); +- } +-} +- +-/*********************************************************************** +- * +- * Function: mmu_dumpinfo +- * +- * Purpose: Display MMU info +- * +- * Processing: +- * Display the MMU information, including enable status, cache +- * status, and page table. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-static BOOL_32 mmu_dumpinfo(void) +-{ +- UNS_32 segsz, last_mmu_reg, mmu_vrt, mmu_reg, mmu_vrtsav = 0, *pt; +- UNS_32 mlast_mmu_reg, mmmu_reg; +- int idx; +- UNS_8 hexaddr [16]; +- +- term_dat_out(mmu_msg); +- if (cp15_mmu_enabled() == FALSE) +- { +- term_dat_out_crlf(disabled_msg); +- } +- else +- { +- term_dat_out_crlf(enabled_msg); +- +- /* Get MMU control register word */ +- mmu_reg = cp15_get_mmu_control_reg(); +- +- /* Instruction cache status */ +- term_dat_out(icache_msg); +- if ((mmu_reg & ARM922T_MMU_CONTROL_I) == 0) +- { +- term_dat_out_crlf(disabled_msg); +- } +- else +- { +- term_dat_out_crlf(enabled_msg); +- } +- +- /* Data cache status */ +- term_dat_out(dcache_msg); +- if ((mmu_reg & ARM922T_MMU_CONTROL_C) == 0) +- { +- term_dat_out_crlf(disabled_msg); +- } +- else +- { +- term_dat_out_crlf(enabled_msg); +- } +- +- term_dat_out(pagetab_msg); +- mmu_reg = (UNS_32) cp15_get_ttb(); +- str_makehex(hexaddr, mmu_reg, 8); +- term_dat_out_crlf(hexaddr); +- term_dat_out_crlf(slist_msg); +- +- /* Process MMU table - assume that the physical and +- virtual locations of table are the same */ +- pt = (UNS_32 *) mmu_reg; +- mmu_vrt = 0x0; +- segsz = 0xFFFFFFFF; +- last_mmu_reg = mlast_mmu_reg = 0xFFFFFFFF; +- for (idx = 0; idx < 4096; idx++) +- { +- mmu_reg = *pt; +- mmmu_reg = (mmu_reg & (ARM922T_L1D_TYPE_PG_SN_MASK | +- ARM922T_L1D_BUFFERABLE | ARM922T_L1D_CACHEABLE)); +- segsz = segsz + 1; +- +- if ((last_mmu_reg != 0xFFFFFFFF) && +- (mlast_mmu_reg != mmmu_reg)) +- { +- show_section(last_mmu_reg, mmu_vrtsav, segsz); +- segsz = 0; +- } +- +- if (mlast_mmu_reg != mmmu_reg) +- { +- mmu_vrtsav = mmu_vrt; +- last_mmu_reg = mmu_reg; +- mlast_mmu_reg = mmmu_reg; +- } +- +- pt++; +- mmu_vrt += 0x00100000; +- } +- } +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: mmu_dumpmap +- * +- * Purpose: Map a virtual address range to a physical range +- * +- * Processing: +- * From the input addresses and number of sections, generate the +- * appropriate entries in the page table. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-static BOOL_32 mmu_dumpmap(UNS_32 vrt, +- UNS_32 phy, +- UNS_32 sections, +- UNS_32 cache) +-{ +- BOOL_32 processed = FALSE; +- UNS_32 mmu_phy, mmu_vrt, tmp1 = 0, tmp2, *pt; +- UNS_8 hexaddr [16]; +- +- /* Verify address boundaries are sectional */ +- mmu_vrt = vrt & ~ARM922T_L2D_SN_BASE_MASK; +- mmu_phy = phy & ~ARM922T_L2D_SN_BASE_MASK; +- if ((mmu_vrt != 0) || (mmu_phy != 0)) +- { +- term_dat_out_crlf(map1_err_msg); +- } +- else +- { +- /* Verify that address range and section count will not +- exceed address range of device */ +- tmp1 = vrt >> 20; +- tmp1 = (tmp1 + sections) - 1; +- tmp2 = phy >> 20; +- tmp2 = (tmp2 + sections) - 1; +- if ((tmp1 < 4096) && (tmp2 < 4096)) +- { +- /* Good address range and good section count */ +- processed = TRUE; +- } +- else +- { +- term_dat_out_crlf(map2_err_msg); +- } +- } +- +- /* Generate static part of MMU word */ +- if (cache == 0) +- { +- /* Section mapped with cache disabled */ +- tmp1 = ARM922T_L1D_TYPE_SECTION; +- } +- else if (cache == 1) +- { +- /* Section mapped with cache enabled */ +- tmp1 = (ARM922T_L1D_BUFFERABLE | ARM922T_L1D_CACHEABLE | +- ARM922T_L1D_TYPE_SECTION); +- } +- else if (cache == 2) +- { +- /* Section unmapped */ +- tmp1 = ARM922T_L1D_TYPE_FAULT; +- } +- tmp1 |= ARM922T_L1D_AP_ALL; +- +- /* Offset into page table for virtual address */ +- tmp2 = (vrt >> 20); +- pt = cp15_get_ttb() + tmp2; +- +- /* Loop until all sections are complete */ +- while ((sections > 0) && (processed == TRUE)) +- { +- /* Add in physical address */ +- tmp2 = tmp1 | (phy & ARM922T_L2D_SN_BASE_MASK); +- +- /* Save new section descriptor for virtual address */ +- *pt = tmp2; +- +- /* Output message shown the map */ +- term_dat_out(phya_msg); +- str_makehex(hexaddr, phy, 8); +- term_dat_out(hexaddr); +- if (cache == 2) +- { +- term_dat_out(unmapped_msg); +- } +- else +- { +- term_dat_out(mapped_msg); +- } +- str_makehex(hexaddr, vrt, 8); +- term_dat_out(hexaddr); +- if (cache == 1) +- { +- term_dat_out(cached_msg); +- } +- term_dat_out_crlf((UNS_8 *) ""); +- +- /* Next section and page table entry*/ +- phy += 0x00100000; +- vrt += 0x00100000; +- pt++; +- sections--; +- } +- +- return processed; +-} +- +-/*********************************************************************** +- * +- * Function: cmd_mmuinfo +- * +- * Purpose: Display MMU information +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-static BOOL_32 cmd_mmuinfo(void) +-{ +- mmu_dumpinfo(); +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: cmd_map +- * +- * Purpose: Map a physical address region to a virtual region +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-BOOL_32 cmd_map(void) +-{ +- UNS_32 phy, virt, sects, ce = 0; +- +- /* Get arguments */ +- virt = cmd_get_field_val(1); +- phy = cmd_get_field_val(2); +- sects = cmd_get_field_val(3); +- ce = cmd_get_field_val(4); +- +- if (ce <= 2) +- { +- mmu_dumpmap(virt, phy, sects, ce); +- } +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: cmd_inval +- * +- * Purpose: MMU cache flush and invalidate +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-BOOL_32 cmd_inval(void) +-{ +- dcache_flush(); +- icache_inval(); +- term_dat_out(caches_msg); +- term_dat_out(inval_msg); +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: cmd_dcache +- * +- * Purpose: MMU data cache enable and disable +- * +- * Processing: +- * If the value passed in the parser is 1, enable the data cache, +- * otherwise disable the data cache. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-BOOL_32 cmd_dcache(void) +-{ +- UNS_32 cenable; +- UNS_8 *ppar; +- +- /* Get argument */ +- cenable = cmd_get_field_val(1); +- +- switch (cenable) +- { +- case 0: +- dcache_flush(); +- cp15_set_dcache(0); +- ppar = disabled_msg; +- break; +- +- case 1: +- cp15_invalidate_cache(); +- cp15_set_dcache(1); +- ppar = enabled_msg; +- break; +- +- case 2: +- default: +- dcache_flush(); +- ppar = flushed_msg; +- break; +- } +- +- term_dat_out(dcache_msg); +- term_dat_out_crlf(ppar); +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: cmd_icache +- * +- * Purpose: MMU instruction cache enable and disable +- * +- * Processing: +- * If the value passed in the parser is 1, enable the instruction +- * cache, otherwise disable the instruction cache. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-BOOL_32 cmd_icache(void) +-{ +- UNS_32 cenable; +- UNS_8 *ppar; +- +- /* Get argument */ +- cenable = cmd_get_field_val(1); +- +- if (cenable == 1) +- { +- dcache_flush(); +- cp15_invalidate_cache(); +- cp15_set_icache(1); +- ppar = enabled_msg; +- } +- else +- { +- cp15_set_icache(0); +- ppar = disabled_msg; +- } +- +- term_dat_out(icache_msg); +- term_dat_out_crlf(ppar); +- +- return TRUE; +-} +- +- +-/*********************************************************************** +- * +- * Function: cmd_mmuenab +- * +- * Purpose: Enable or disable MMU +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: TRUE if the command was processed, otherwise FALSE +- * +- * Notes: None +- * +- **********************************************************************/ +-BOOL_32 cmd_mmuenab(void) +-{ +- UNS_8 *ppar; +- UNS_32 cenable; +- +- term_dat_out_crlf((UNS_8 *) "Warning: Changing MMU status on " +- " cached and buffered code can cause system crashes."); +- +- /* Get argument */ +- cenable = cmd_get_field_val(1); +- +- if (cenable == 1) +- { +- if ((cp15_get_mmu_control_reg() & ARM922T_MMU_CONTROL_C) != 0) +- { +- cp15_invalidate_cache(); +- } +- +- cp15_set_mmu(1); +- ppar = enabled_msg; +- } +- else +- { +- cp15_dcache_flush(); +- cp15_write_buffer_flush(); +- cp15_invalidate_cache(); +- cp15_set_mmu(0); +- ppar = disabled_msg; +- } +- +- term_dat_out(mmu_msg); +- term_dat_out_crlf(ppar); +- +- return TRUE; +-} +- +-/*********************************************************************** +- * +- * Function: mmu_cmd_group_init +- * +- * Purpose: Initialize MMU command group +- * +- * Processing: +- * See function. +- * +- * Parameters: None +- * +- * Outputs: None +- * +- * Returns: Nothin +- * +- * Notes: None +- * +- **********************************************************************/ +-void mmu_cmd_group_init(void) +-{ +- /* Add MMU group */ +- cmd_add_group(&mmu_group); +- +- /* Add commands to the MMU group */ +- cmd_add_new_command(&mmu_group, &core_dcache_cmd); +- cmd_add_new_command(&mmu_group, &core_icache_cmd); +- cmd_add_new_command(&mmu_group, &core_inval_cmd); +- cmd_add_new_command(&mmu_group, &core_mmuenab_cmd); +- cmd_add_new_command(&mmu_group, &core_map_cmd); +- cmd_add_new_command(&mmu_group, &core_mmuinfo_cmd); +-} diff --git a/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-libnosys_gnu.patch b/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-libnosys_gnu.patch new file mode 100644 index 0000000..cfd77be --- /dev/null +++ b/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-libnosys_gnu.patch @@ -0,0 +1,188 @@ +Fix compilation and eabi issues + +Since we are not linking with libc anymore, we need to define our own memset, +strlen and memcpy. Also, as we are using a *libc compiler, we need to "handle" +exceptions (mostly division by 0) by defining raise() and +__aeabi_unwind_cpp_pr0. + +Signed-off-by: Alexandre Belloni +--- + csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c | 41 +++++++++++++++++++++++ + csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c | 41 +++++++++++++++++++++++ + csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c | 41 +++++++++++++++++++++++ + 3 files changed, 123 insertions(+), 0 deletions(-) + +diff --git a/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c b/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c +index 385b0ab..f1f0a0a 100644 +--- a/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c ++++ b/csps/lpc32xx/bsps/ea3250/source/libnosys_gnu.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + /* errno definition */ + #undef errno +@@ -125,4 +126,44 @@ int _write(int file, char *ptr, int len){ + return 0; + } + ++void * memset(void * s,int c,size_t count) ++{ ++ char *xs = (char *) s; ++ ++ while (count--) ++ *xs++ = c; ++ ++ return s; ++} ++ ++ ++size_t strlen(const char * s) ++{ ++ const char *sc; ++ ++ for (sc = s; *sc != '\0'; ++sc) ++ /* nothing */; ++ return sc - s; ++} ++ ++void * memcpy(void * dest,const void *src,size_t count) ++{ ++ char *tmp = (char *) dest, *s = (char *) src; ++ ++ while (count--) ++ *tmp++ = *s++; ++ ++ return dest; ++} ++ ++ ++/* Dummy functions to avoid linker complaints */ ++void __aeabi_unwind_cpp_pr0(void) ++{ ++}; ++ ++void raise(void) ++{ ++}; ++ + #endif /*__GNUC__*/ +diff --git a/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c b/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c +index 385b0ab..f1f0a0a 100644 +--- a/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c ++++ b/csps/lpc32xx/bsps/fdi3250/source/libnosys_gnu.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + /* errno definition */ + #undef errno +@@ -125,4 +126,44 @@ int _write(int file, char *ptr, int len){ + return 0; + } + ++void * memset(void * s,int c,size_t count) ++{ ++ char *xs = (char *) s; ++ ++ while (count--) ++ *xs++ = c; ++ ++ return s; ++} ++ ++ ++size_t strlen(const char * s) ++{ ++ const char *sc; ++ ++ for (sc = s; *sc != '\0'; ++sc) ++ /* nothing */; ++ return sc - s; ++} ++ ++void * memcpy(void * dest,const void *src,size_t count) ++{ ++ char *tmp = (char *) dest, *s = (char *) src; ++ ++ while (count--) ++ *tmp++ = *s++; ++ ++ return dest; ++} ++ ++ ++/* Dummy functions to avoid linker complaints */ ++void __aeabi_unwind_cpp_pr0(void) ++{ ++}; ++ ++void raise(void) ++{ ++}; ++ + #endif /*__GNUC__*/ +diff --git a/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c b/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c +index cfdb674..6b50c60 100644 +--- a/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c ++++ b/csps/lpc32xx/bsps/phy3250/source/libnosys_gnu.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + + /* errno definition */ + #undef errno +@@ -125,4 +126,44 @@ int _write(int file, char *ptr, int len){ + return 0; + } + ++void * memset(void * s,int c,size_t count) ++{ ++ char *xs = (char *) s; ++ ++ while (count--) ++ *xs++ = c; ++ ++ return s; ++} ++ ++ ++size_t strlen(const char * s) ++{ ++ const char *sc; ++ ++ for (sc = s; *sc != '\0'; ++sc) ++ /* nothing */; ++ return sc - s; ++} ++ ++void * memcpy(void * dest,const void *src,size_t count) ++{ ++ char *tmp = (char *) dest, *s = (char *) src; ++ ++ while (count--) ++ *tmp++ = *s++; ++ ++ return dest; ++} ++ ++ ++/* Dummy functions to avoid linker complaints */ ++void __aeabi_unwind_cpp_pr0(void) ++{ ++}; ++ ++void raise(void) ++{ ++}; ++ + #endif /*__GNUC__*/ +-- +1.7.7.3 + diff --git a/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-slashes.patch b/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-slashes.patch new file mode 100644 index 0000000..94c1847 --- /dev/null +++ b/buildroot/boot/lpc32xxcdl/lpc32xxcdl-2.11-slashes.patch @@ -0,0 +1,521 @@ +Use slashes instead of backslashes + +Signed-off-by: Alexandre Belloni +--- + .../bsps/common/examples/buildfiles/makefile | 10 +++--- + .../startup/examples/burners/makefile.burner | 16 +++++----- + csps/lpc32xx/bsps/ea3250/source/makefile | 10 +++--- + csps/lpc32xx/bsps/fdi3250/source/makefile | 12 ++++---- + csps/lpc32xx/bsps/phy3250/examples/makefile | 2 +- + csps/lpc32xx/bsps/phy3250/source/makefile | 2 +- + .../examples/Burners/nor/kickstart/makefile | 2 +- + .../startup/examples/Burners/nor/norerase/makefile | 2 +- + .../startup/examples/Burners/nor/s1lapp/makefile | 2 +- + .../examples/Burners/spi/kickstart/makefile | 2 +- + csps/lpc32xx/source/makefile | 10 +++--- + lpc/source/makefile | 10 +++--- + makefile | 2 +- + makerule/common/make.rules.environment | 30 ++++++++++---------- + makerule/lpc32xx/make.lpc32xx.gnu | 2 +- + makerule/lpc32xx/make.lpc32xx.iar | 12 ++++---- + makerule/lpc32xx/make.lpc32xx.keil | 6 ++-- + makerule/lpc32xx/make.lpc32xx.rvw | 2 +- + 18 files changed, 67 insertions(+), 67 deletions(-) + +diff --git a/csps/lpc32xx/bsps/common/examples/buildfiles/makefile b/csps/lpc32xx/bsps/common/examples/buildfiles/makefile +index cf4977c..1da2201 100644 +--- a/csps/lpc32xx/bsps/common/examples/buildfiles/makefile ++++ b/csps/lpc32xx/bsps/common/examples/buildfiles/makefile +@@ -25,16 +25,16 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes +-AFLAGS +=-I..\Include +-CFLAGS +=-I..\Include ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes ++AFLAGS +=-I../Include ++CFLAGS +=-I../Include + + ######################################################################## + # +@@ -42,6 +42,6 @@ CFLAGS +=-I..\Include + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + +diff --git a/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner b/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner +index fca3947..18bd703 100644 +--- a/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner ++++ b/csps/lpc32xx/bsps/common/startup/examples/burners/makefile.burner +@@ -22,9 +22,9 @@ + # + ######################################################################## + +-COMMON_BASE := $(NXPMCU_SOFTWARE)\csps\$(CSP)\bsps\common +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) +-include $(COMMON_BASE)\startup\examples\buildfiles\make.env ++COMMON_BASE := $(NXPMCU_SOFTWARE)/csps/$(CSP)/bsps/common ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) ++include $(COMMON_BASE)/startup/examples/buildfiles/make.env + + ######################################################################## + # ARM Realview +@@ -38,7 +38,7 @@ AFLAGS += --predefine "USE_ALL_STACKS SETL {TRUE}" + #AFLAGS += --predefine "RW_RELOC SETL {TRUE}" + + # This runs from IRAM +-LDSCRIPT =$(COMMON_BASE)\startup\examples\buildfiles\ldscript_iram_rvw.ld ++LDSCRIPT =$(COMMON_BASE)/startup/examples/buildfiles/ldscript_iram_rvw.ld + LDFLAGS = --remove + MAP = --map --info=totals,sizes,unused --symbols --list + endif +@@ -55,7 +55,7 @@ AFLAGS += --predefine "USE_ALL_STACKS SETL {TRUE}" + #AFLAGS += --predefine "RW_RELOC SETL {TRUE}" + + # This runs from IRAM +-LDSCRIPT =$(COMMON_BASE)\startup\examples\buildfiles\ldscript_iram_rvw.ld ++LDSCRIPT =$(COMMON_BASE)/startup/examples/buildfiles/ldscript_iram_rvw.ld + LDFLAGS = --remove + MAP = --map --info=totals,sizes,unused --symbols --list + endif +@@ -72,7 +72,7 @@ AFLAGS += --defsym USE_ALL_STACKS=1 + #AFLAGS += --defsym RW_RELOC=1 + + # This runs from IRAM +-LDSCRIPT =$(COMMON_BASE)\startup\examples\buildfiles\ldscript_iram_gnu.ld ++LDSCRIPT =$(COMMON_BASE)/startup/examples/buildfiles/ldscript_iram_gnu.ld + + endif + +@@ -108,7 +108,7 @@ endif + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes + + ######################################################################## + # +@@ -157,6 +157,6 @@ endif + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + .PHONY: debug bin +diff --git a/csps/lpc32xx/bsps/ea3250/source/makefile b/csps/lpc32xx/bsps/ea3250/source/makefile +index 7cada25..2899b20 100644 +--- a/csps/lpc32xx/bsps/ea3250/source/makefile ++++ b/csps/lpc32xx/bsps/ea3250/source/makefile +@@ -22,16 +22,16 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes +-AFLAGS +=-I..\Include +-CFLAGS +=-I..\Include ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes ++AFLAGS +=-I../Include ++CFLAGS +=-I../Include + + ######################################################################## + # +@@ -64,7 +64,7 @@ realclean: lib_realclean + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + .PHONY: all lib_clean lib_realclean + +diff --git a/csps/lpc32xx/bsps/fdi3250/source/makefile b/csps/lpc32xx/bsps/fdi3250/source/makefile +index 4e153bb..11e4b63 100644 +--- a/csps/lpc32xx/bsps/fdi3250/source/makefile ++++ b/csps/lpc32xx/bsps/fdi3250/source/makefile +@@ -22,16 +22,16 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes +-AFLAGS +=-I..\Include +-CFLAGS +=-I..\Include ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes ++AFLAGS +=-I../Include ++CFLAGS +=-I../Include + + ######################################################################## + # +@@ -53,7 +53,7 @@ lib_clean: + # delete all targets this Makefile can make and all built libraries + # linked in + lib_realclean: +- -@$(RM) $(BSP_LIB_DIR)\*.a ++ -@$(RM) $(BSP_LIB_DIR)/*.a + -@$(RMDIR) $(BSP_LIB_DIR) + + clean: lib_clean +@@ -65,7 +65,7 @@ realclean: lib_realclean + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + .PHONY: all lib_clean lib_realclean + +diff --git a/csps/lpc32xx/bsps/phy3250/examples/makefile b/csps/lpc32xx/bsps/phy3250/examples/makefile +index b939252..e7feaa6 100644 +--- a/csps/lpc32xx/bsps/phy3250/examples/makefile ++++ b/csps/lpc32xx/bsps/phy3250/examples/makefile +@@ -25,7 +25,7 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + SUBDIRS = adc dram_self_refresh hstimer hsuart i2c kscan lcd_colorbars + SUBDIRS += lcd_tsc mi2c mstimer pwm pwm_simple rtc sdcard sdcard_dma +diff --git a/csps/lpc32xx/bsps/phy3250/source/makefile b/csps/lpc32xx/bsps/phy3250/source/makefile +index 7c48e7d..750b776 100644 +--- a/csps/lpc32xx/bsps/phy3250/source/makefile ++++ b/csps/lpc32xx/bsps/phy3250/source/makefile +@@ -32,7 +32,7 @@ include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes + AFLAGS +=-I../Include + CFLAGS +=-I../Include + +diff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile +index 01e2b38..526d6cc 100644 +--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile ++++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/kickstart/makefile +@@ -78,7 +78,7 @@ endif + + ######################################################################## + # +-# Compiler\linker specific stuff ++# Compiler/linker specific stuff + # + ######################################################################## + +diff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile +index ce329f5..e81b8db 100644 +--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile ++++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/norerase/makefile +@@ -77,7 +77,7 @@ endif + + ######################################################################## + # +-# Compiler\linker specific stuff ++# Compiler/linker specific stuff + # + ######################################################################## + +diff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile +index 4426fc7..196faec 100644 +--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile ++++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/nor/s1lapp/makefile +@@ -77,7 +77,7 @@ endif + + ######################################################################## + # +-# Compiler\linker specific stuff ++# Compiler/linker specific stuff + # + ######################################################################## + +diff --git a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile +index dc73b64..39fc304 100644 +--- a/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile ++++ b/csps/lpc32xx/bsps/phy3250/startup/examples/Burners/spi/kickstart/makefile +@@ -78,7 +78,7 @@ endif + + ######################################################################## + # +-# Compiler\linker specific stuff ++# Compiler/linker specific stuff + # + ######################################################################## + +diff --git a/csps/lpc32xx/source/makefile b/csps/lpc32xx/source/makefile +index 8e05456..16bd944 100644 +--- a/csps/lpc32xx/source/makefile ++++ b/csps/lpc32xx/source/makefile +@@ -25,16 +25,16 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes +-AFLAGS +=-I..\Include +-CFLAGS +=-I..\Include ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes ++AFLAGS +=-I../Include ++CFLAGS +=-I../Include + + + ######################################################################## +@@ -68,7 +68,7 @@ realclean: lib_realclean + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + .PHONY: all lib_clean lib_realclean + +diff --git a/lpc/source/makefile b/lpc/source/makefile +index 2860db9..ae7d612 100644 +--- a/lpc/source/makefile ++++ b/lpc/source/makefile +@@ -25,16 +25,16 @@ + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # + # Pick up the assembler and C source files in the directory + # + ######################################################################## +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.ftypes +-AFLAGS +=-I..\Include +-CFLAGS +=-I..\Include ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.ftypes ++AFLAGS +=-I../Include ++CFLAGS +=-I../Include + + ######################################################################## + # +@@ -67,7 +67,7 @@ realclean: lib_realclean + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.build ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.build + + .PHONY: all lib_clean lib_realclean + +diff --git a/makefile b/makefile +index 8645fcc..86fa6bc 100644 +--- a/makefile ++++ b/makefile +@@ -34,7 +34,7 @@ TARGETS_CLN =gen_clean csp_clean bsp_clean + # + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\$(CSP)\make.$(CSP).$(TOOL) ++include $(NXPMCU_SOFTWARE)/makerule/$(CSP)/make.$(CSP).$(TOOL) + + ######################################################################## + # +diff --git a/makerule/common/make.rules.environment b/makerule/common/make.rules.environment +index d5737fe..4e6df48 100644 +--- a/makerule/common/make.rules.environment ++++ b/makerule/common/make.rules.environment +@@ -52,7 +52,7 @@ ASTYLE =astyle --options=$(BUILD_ROOT)/tools/astyle.cfg + # + ######################################################################## + +-CSP_LIB_DIR =$(BUILD_ROOT)\csps\$(CSP)\lib ++CSP_LIB_DIR =$(BUILD_ROOT)/csps/$(CSP)/lib + + ######################################################################## + # +@@ -60,7 +60,7 @@ CSP_LIB_DIR =$(BUILD_ROOT)\csps\$(CSP)\lib + # + ######################################################################## + +-BSP_LIB_DIR =$(BUILD_ROOT)\csps\$(CSP)\bsps\$(BSP)\lib ++BSP_LIB_DIR =$(BUILD_ROOT)/csps/$(CSP)/bsps/$(BSP)/lib + + ######################################################################## + # +@@ -68,7 +68,7 @@ BSP_LIB_DIR =$(BUILD_ROOT)\csps\$(CSP)\bsps\$(BSP)\lib + # + ######################################################################## + +-GEN_LIB_DIR =$(BUILD_ROOT)\$(GEN)\lib ++GEN_LIB_DIR =$(BUILD_ROOT)/$(GEN)/lib + + ######################################################################## + # +@@ -76,9 +76,9 @@ GEN_LIB_DIR =$(BUILD_ROOT)\$(GEN)\lib + # + ######################################################################## + +-CSP_DIR =$(BUILD_ROOT)\csps\$(CSP) +-CSP_SRC_DIR =$(CSP_DIR)\source +-CSP_INC_DIR =$(CSP_DIR)\include ++CSP_DIR =$(BUILD_ROOT)/csps/$(CSP) ++CSP_SRC_DIR =$(CSP_DIR)/source ++CSP_INC_DIR =$(CSP_DIR)/include + + ######################################################################## + # +@@ -86,9 +86,9 @@ CSP_INC_DIR =$(CSP_DIR)\include + # + ######################################################################## + +-BSP_DIR =$(BUILD_ROOT)\csps\$(CSP)\bsps\$(BSP) +-BSP_SRC_DIR =$(BSP_DIR)\source +-BSP_INC_DIR =$(BSP_DIR)\include ++BSP_DIR =$(BUILD_ROOT)/csps/$(CSP)/bsps/$(BSP) ++BSP_SRC_DIR =$(BSP_DIR)/source ++BSP_INC_DIR =$(BSP_DIR)/include + + ######################################################################## + # +@@ -96,9 +96,9 @@ BSP_INC_DIR =$(BSP_DIR)\include + # + ######################################################################## + +-GEN_DIR =$(BUILD_ROOT)\$(GEN) +-GEN_SRC_DIR =$(GEN_DIR)\source +-GEN_INC_DIR =$(GEN_DIR)\include ++GEN_DIR =$(BUILD_ROOT)/$(GEN) ++GEN_SRC_DIR =$(GEN_DIR)/source ++GEN_INC_DIR =$(GEN_DIR)/include + + ######################################################################## + # +@@ -151,6 +151,6 @@ endif + # + ######################################################################## + +-TARGET_CSP_LIB =$(CSP_LIB_DIR)\$(CSP_ARCHIVE) +-TARGET_BSP_LIB =$(BSP_LIB_DIR)\$(BSP_ARCHIVE) +-TARGET_GEN_LIB =$(GEN_LIB_DIR)\$(GEN_ARCHIVE) ++TARGET_CSP_LIB =$(CSP_LIB_DIR)/$(CSP_ARCHIVE) ++TARGET_BSP_LIB =$(BSP_LIB_DIR)/$(BSP_ARCHIVE) ++TARGET_GEN_LIB =$(GEN_LIB_DIR)/$(GEN_ARCHIVE) +diff --git a/makerule/lpc32xx/make.lpc32xx.gnu b/makerule/lpc32xx/make.lpc32xx.gnu +index 3277d99..d80b98d 100644 +--- a/makerule/lpc32xx/make.lpc32xx.gnu ++++ b/makerule/lpc32xx/make.lpc32xx.gnu +@@ -19,7 +19,7 @@ + # use without further testing or modification. + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.environment ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment + + CPU = arm926ej-s + CFLAGS = -mcpu=arm926ej-s -Wall -Os +diff --git a/makerule/lpc32xx/make.lpc32xx.iar b/makerule/lpc32xx/make.lpc32xx.iar +index 238ebbf..27d163f 100644 +--- a/makerule/lpc32xx/make.lpc32xx.iar ++++ b/makerule/lpc32xx/make.lpc32xx.iar +@@ -19,12 +19,12 @@ + # use without further testing or modification. + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.environment ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment + +-IARBASE = $(IAR_ROOT)\ARM +-IARTOOLS = $(IARBASE)\bin +-IAR_LIB = $(IARBASE)\lib +-IAR_INC = $(IARBASE)\inc ++IARBASE = $(IAR_ROOT)/ARM ++IARTOOLS = $(IARBASE)/bin ++IAR_LIB = $(IARBASE)/lib ++IAR_INC = $(IARBASE)/inc + CC = iccarm + CCP = iccarm + AS = iasmarm +@@ -36,7 +36,7 @@ CFLAGS += -I"$(IAR_INC)" + AFLAGS = --cpu 5TEJ + LDFLAGS = + LK = "$(TARGET_GEN_LIB)" "$(TARGET_CSP_LIB)" "$(TARGET_BSP_LIB)" +-;LK += "$(IAR_LIB)\dl4tpannl8f.r79" ++;LK += "$(IAR_LIB)/dl4tpannl8f.r79" + MAP = --map + LDESC = --config + ENTRY = --entry +diff --git a/makerule/lpc32xx/make.lpc32xx.keil b/makerule/lpc32xx/make.lpc32xx.keil +index dd27583..7334d3f 100644 +--- a/makerule/lpc32xx/make.lpc32xx.keil ++++ b/makerule/lpc32xx/make.lpc32xx.keil +@@ -19,7 +19,7 @@ + # use without further testing or modification. + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.environment ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment + + CC =armcc + CCP =armcc +@@ -27,11 +27,11 @@ AS =armasm + LD =armlink + AR =armar -r -s + CFLAGS =--arm -O3 -g --device DARMP3 -D__MICROLIB +-CFLAGS +=-I$(KEIL_RVCT)\inc -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) ++CFLAGS +=-I$(KEIL_RVCT)/inc -I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) + AFLAGS =--arm --device=DARMP3 + AFLAGS +=-I$(CSP_INC_DIR) -I$(BSP_INC_DIR) -I$(GEN_INC_DIR) + LDFLAGS =--noremove +-LK =--device DARMP3 --libpath $(KEIL_RVCT)\lib --scan $(TARGET_CSP_LIB) ++LK =--device DARMP3 --libpath $(KEIL_RVCT)/lib --scan $(TARGET_CSP_LIB) + LK +=--scan $(TARGET_BSP_LIB) + LK +=--scan $(TARGET_GEN_LIB) + MAP =--map --list +diff --git a/makerule/lpc32xx/make.lpc32xx.rvw b/makerule/lpc32xx/make.lpc32xx.rvw +index 59961dd..2419976 100644 +--- a/makerule/lpc32xx/make.lpc32xx.rvw ++++ b/makerule/lpc32xx/make.lpc32xx.rvw +@@ -19,7 +19,7 @@ + # use without further testing or modification. + ######################################################################## + +-include $(NXPMCU_SOFTWARE)\makerule\common\make.rules.environment ++include $(NXPMCU_SOFTWARE)/makerule/common/make.rules.environment + + CC =armcc + CCP =armcpp +-- +1.7.7.3 + diff --git a/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk b/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk new file mode 100644 index 0000000..04c1c7f --- /dev/null +++ b/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# lpc32xxcdl +# +################################################################################ + +LPC32XXCDL_VERSION = lpc32xx_cdl_v2.11 +LPC32XXCDL_SITE = http://git.lpcware.com/lpc3xxx_cdl.git +LPC32XXCDL_SITE_METHOD = git + +LPC32XXCDL_INSTALL_TARGET = NO +LPC32XXCDL_INSTALL_IMAGES = YES + +ifeq ($(BR2_TARGET_LPC32XXCDL_BOARDNAME),"ea3250") +LPC32XXCDL_KICKSTART = kickstart/nand +LPC32XXCDL_KICKSTART_BURNER = nand/kickstart +LPC32XXCDL_S1L = s1l +LPC32XXCDL_S1L_BURNER = nand/s1lapp +endif + +ifeq ($(BR2_TARGET_LPC32XXCDL_BOARDNAME),"phy3250") +LPC32XXCDL_KICKSTART = kickstart/kickstart_nand +LPC32XXCDL_KICKSTART_BURNER = nand/kickstart +LPC32XXCDL_S1L = s1l/s1l_nand_boot +LPC32XXCDL_S1L_BURNER = nand/s1lapp +endif + +ifeq ($(BR2_TARGET_LPC32XXCDL_BOARDNAME),"fdi3250") +LPC32XXCDL_KICKSTART = kickstart/nand +LPC32XXCDL_KICKSTART_BURNER = nand/kickstart_jtag +LPC32XXCDL_S1L = s1l +LPC32XXCDL_S1L_BURNER = nand/s1lapp_jtag +endif + +LPC32XXCDL_BUILD_FLAGS = \ + CROSS_COMPILE=$(TARGET_CROSS) \ + NXPMCU_WINBASE=$(@D) \ + NXPMCU_SOFTWARE=$(@D) \ + BSP=$(BR2_TARGET_LPC32XXCDL_BOARDNAME) \ + CSP=lpc32xx TOOL=gnu GEN=lpc + +LPC32XXCDL_BOARD_STARTUP_DIR = \ + csps/lpc32xx/bsps/$(BR2_TARGET_LPC32XXCDL_BOARDNAME)/startup/examples/ + +# Source files are with dos newlines, which our patch infrastructure doesn't +# handle. Work around it by converting the affected files to unix newlines +# before patching +define LPC32XXCDL_DOS2UNIX_FOR_PATCH + sed -n 's|^[+-]\{3\} [^/]\+\([^ \t]*\)\(.*\)|$(@D)\1|p' \ + boot/lpc32xxcdl/*.patch| sort -u | xargs $(SED) 's/\x0D$$//' +endef + +LPC32XXCDL_POST_EXTRACT_HOOKS += LPC32XXCDL_DOS2UNIX_FOR_PATCH + +define LPC32XXCDL_BUILD_CMDS + $(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D) + $(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_KICKSTART_BURNER) + $(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_KICKSTART) + $(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_S1L_BURNER) + $(MAKE1) $(LPC32XXCDL_BUILD_FLAGS) -C $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_S1L) +endef + +define LPC32XXCDL_INSTALL_IMAGES_CMDS + cp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_KICKSTART_BURNER)/*gnu.bin $(BINARIES_DIR) + cp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_KICKSTART)/*gnu.bin $(BINARIES_DIR) + cp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/Burners/$(LPC32XXCDL_S1L_BURNER)/*gnu.bin $(BINARIES_DIR) + cp $(@D)/$(LPC32XXCDL_BOARD_STARTUP_DIR)/$(LPC32XXCDL_S1L)/*gnu.bin $(BINARIES_DIR) +endef + +$(eval $(generic-package)) diff --git a/buildroot/boot/mv-ddr-marvell/Config.in b/buildroot/boot/mv-ddr-marvell/Config.in new file mode 100644 index 0000000..4ee8c95 --- /dev/null +++ b/buildroot/boot/mv-ddr-marvell/Config.in @@ -0,0 +1,10 @@ +config BR2_TARGET_MV_DDR_MARVELL + bool "mv-ddr-marvell" + depends on BR2_aarch64 + help + Marvell keeps algorithms for DDR training in a separate + repository. This code is not built separately, it is needed + as a dependency to build ATF firmware for Marvell Armada 7040 + and 8040 SoCs. + + https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/ diff --git a/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.hash b/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.hash new file mode 100644 index 0000000..b96d4d2 --- /dev/null +++ b/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d413546367ffa3b5f4373a777b9efeb32dcc74d6106897c248935ecb79afc454 mv-ddr-marvell-656440a9690f3d07be9e3d2c39d7cf56fd96eb7b.tar.gz diff --git a/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.mk b/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.mk new file mode 100644 index 0000000..0f98fc2 --- /dev/null +++ b/buildroot/boot/mv-ddr-marvell/mv-ddr-marvell.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# mv-ddr-marvell +# +################################################################################ + +MV_DDR_MARVELL_VERSION = 656440a9690f3d07be9e3d2c39d7cf56fd96eb7b +MV_DDR_MARVELL_SITE = $(call github,MarvellEmbeddedProcessors,mv-ddr-marvell,$(MV_DDR_MARVELL_VERSION)) +MV_DDR_MARVELL_LICENSE = GPL-2.0+ or LGPL-2.1 with freertos-exception-2.0, BSD-3-Clause, Marvell Commercial +MV_DDR_MARVELL_LICENSE_FILES = ddr3_init.c + +$(eval $(generic-package)) diff --git a/buildroot/boot/mxs-bootlets/Config.in b/buildroot/boot/mxs-bootlets/Config.in new file mode 100644 index 0000000..4bb07a0 --- /dev/null +++ b/buildroot/boot/mxs-bootlets/Config.in @@ -0,0 +1,90 @@ +config BR2_TARGET_MXS_BOOTLETS + bool "mxs-bootlets" + depends on BR2_arm + help + Stage1 bootloaders for Freescale iMX23/iMX28 SoCs + +if BR2_TARGET_MXS_BOOTLETS + +choice + prompt "Source" + default BR2_TARGET_MXS_BOOTLETS_FREESCALE + help + Select the location of the bootlets you want to use + +config BR2_TARGET_MXS_BOOTLETS_FREESCALE + bool "Freescale 10.12.01 version" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT + bool "Custom Git repository" + +endchoice + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL + depends on BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL + string "URL of custom bootlets tarball" + +if BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL + string "URL of custom Git repository" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_VERSION + string "Custom Git version" + +endif + +choice + prompt "Bootstream" + help + Select which bootstream to generate + +config BR2_TARGET_MXS_BOOTLETS_BAREBOX + depends on BR2_TARGET_BAREBOX + bool "Barebox Bootloader" + +config BR2_TARGET_MXS_BOOTLETS_LINUX + depends on BR2_LINUX_KERNEL + bool "Linux Kernel" + +config BR2_TARGET_MXS_BOOTLETS_UBOOT + depends on BR2_TARGET_UBOOT + bool "U-boot bootloader" + +endchoice + +config BR2_TARGET_MXS_BOOTLETS_HAS_IVT + bool "HAB Support" + help + Enable this option if you are building bootlets + for the iMX28 platform that needs to include instructions + for the secure boot mechanism present on these SoCs + +choice + prompt "Board" + help + Select the board to build the bootlets for + +config BR2_TARGET_MXS_BOOTLETS_STMP37xx + bool "Sigmatel ST-MP3-7xx Board" + +config BR2_TARGET_MXS_BOOTLETS_STMP378x + bool "Sigmatel ST-MP3-78x Board" + +config BR2_TARGET_MXS_BOOTLETS_IMX28EVK + bool "Freescale iMX28 EVK Board" + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD + bool "Custom board" +endchoice + +config BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME + string "Custom board name" + depends on BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD + help + Name of the board to build the bootlets for + +endif diff --git a/buildroot/boot/mxs-bootlets/barebox_ivt.bd b/buildroot/boot/mxs-bootlets/barebox_ivt.bd new file mode 100644 index 0000000..0c67e9c --- /dev/null +++ b/buildroot/boot/mxs-bootlets/barebox_ivt.bd @@ -0,0 +1,34 @@ +// STMP378x ROM command script to load and run U-Boot + +sources { + power_prep="./power_prep/power_prep"; + sdram_prep="./boot_prep/boot_prep"; + barebox="./barebox"; +} + +section (0) { + + //---------------------------------------------------------- + // Power Supply initialization + //---------------------------------------------------------- + + load power_prep; + load ivt (entry = power_prep:_start) > 0x8000; + hab call 0x8000; + + //---------------------------------------------------------- + // SDRAM initialization + //---------------------------------------------------------- + + load sdram_prep; + load ivt (entry = sdram_prep:_start) > 0x8000; + hab call 0x8000; + //---------------------------------------------------------- + // Load and call u_boot - ELF ARM image + //---------------------------------------------------------- + + load barebox; + load ivt (entry = barebox:start) > 0x8000; + hab call 0x8000; + +} diff --git a/buildroot/boot/mxs-bootlets/mxs-bootlets.hash b/buildroot/boot/mxs-bootlets/mxs-bootlets.hash new file mode 100644 index 0000000..6d3483c --- /dev/null +++ b/buildroot/boot/mxs-bootlets/mxs-bootlets.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 63f6068ae36884adef4259bbb1fe2591755718f22c46d0a59d854883dfab1ffc imx-bootlets-src-10.12.01.tar.gz diff --git a/buildroot/boot/mxs-bootlets/mxs-bootlets.mk b/buildroot/boot/mxs-bootlets/mxs-bootlets.mk new file mode 100644 index 0000000..adc2276 --- /dev/null +++ b/buildroot/boot/mxs-bootlets/mxs-bootlets.mk @@ -0,0 +1,106 @@ +################################################################################ +# +# mxs-bootlets +# +################################################################################ + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL),y) +MXS_BOOTLETS_TARBALL = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL)) +MXS_BOOTLETS_SITE = $(patsubst %/,%,$(dir $(MXS_BOOTLETS_TARBALL))) +MXS_BOOTLETS_SOURCE = $(notdir $(MXS_BOOTLETS_TARBALL)) +BR_NO_CHECK_HASH_FOR += $(MXS_BOOTLETS_SOURCE) +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT),y) +MXS_BOOTLETS_SITE = $(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_URL) +MXS_BOOTLETS_SITE_METHOD = git +MXS_BOOTLETS_VERSION = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT_VERSION)) +BR_NO_CHECK_HASH_FOR += $(MXS_BOOTLETS_SOURCE) +else +MXS_BOOTLETS_VERSION = 10.12.01 +MXS_BOOTLETS_SITE = http://download.ossystems.com.br/bsp/freescale/source +MXS_BOOTLETS_SOURCE = imx-bootlets-src-$(MXS_BOOTLETS_VERSION).tar.gz +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_STMP37xx),y) +MXS_BOOTLETS_BOARD = stmp37xx_dev +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_STMP378x),y) +MXS_BOOTLETS_BOARD = stmp378x_dev +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_IMX28EVK),y) +MXS_BOOTLETS_BOARD = iMX28_EVK +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD),y) +MXS_BOOTLETS_BOARD = $(call qstrip,$(BR2_TARGET_MXS_BOOTLETS_CUSTOM_BOARD_NAME)) +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_HAS_IVT),y) +MXS_BOOTLETS_IVT_SUFFIX = _ivt +MXS_BOOTLETS_ELFTOSB_OPTIONS += -f imx28 +endif + +MXS_BOOTLETS_DEPENDENCIES = host-elftosb +MXS_BOOTLETS_LICENSE = GPL-2.0+ + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_BAREBOX),y) +MXS_BOOTLETS_DEPENDENCIES += barebox +MXS_BOOTLETS_BOOTDESC = barebox$(MXS_BOOTLETS_IVT_SUFFIX).bd +MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_barebox$(MXS_BOOTLETS_IVT_SUFFIX).sb + +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_LINUX),y) +MXS_BOOTLETS_DEPENDENCIES += linux +MXS_BOOTLETS_BOOTDESC = linux$(MXS_BOOTLETS_IVT_SUFFIX).bd +MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_linux$(MXS_BOOTLETS_IVT_SUFFIX).sb + +else ifeq ($(BR2_TARGET_MXS_BOOTLETS_UBOOT),y) +MXS_BOOTLETS_DEPENDENCIES += uboot +MXS_BOOTLETS_BOOTDESC = uboot$(MXS_BOOTLETS_IVT_SUFFIX).bd +MXS_BOOTLETS_BOOTSTREAM = $(MXS_BOOTLETS_BOARD)_uboot$(MXS_BOOTLETS_IVT_SUFFIX).sb +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_BAREBOX),y) +define MXS_BOOTLETS_SED_BAREBOX + sed -i 's,[^ *]barebox.*;,\tbarebox="$(BAREBOX_DIR)/barebox";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) +endef +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_LINUX),y) +define MXS_BOOTLETS_BUILD_LINUX_PREP + BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \ + $(MAKE1) -C $(@D) linux_prep +endef +define MXS_BOOTLETS_SED_LINUX + sed -i 's,[^ *]linux_prep.*;,\tlinux_prep="$(@D)/linux_prep/output-target/linux_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) + sed -i 's,[^ *]zImage.*;,\tzImage="$(LINUX_DIR)/arch/arm/boot/zImage";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) +endef +endif + +ifeq ($(BR2_TARGET_MXS_BOOTLETS_UBOOT),y) +define MXS_BOOTLETS_SED_UBOOT + sed -i 's,[^ *]u_boot.*;,\tu_boot="$(UBOOT_DIR)/u-boot";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) +endef +endif + +define MXS_BOOTLETS_INSTALL_BAREBOX_BOOTDESC + cp boot/mxs-bootlets/barebox_ivt.bd $(@D)/ +endef + +MXS_BOOTLETS_POST_EXTRACT_HOOKS += MXS_BOOTLETS_INSTALL_BAREBOX_BOOTDESC + +define MXS_BOOTLETS_BUILD_CMDS + BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \ + $(MAKE1) -C $(@D) power_prep + BOARD=$(MXS_BOOTLETS_BOARD) CROSS_COMPILE="$(TARGET_CROSS)" \ + $(MAKE1) -C $(@D) boot_prep + $(MXS_BOOTLETS_BUILD_LINUX_PREP) + sed -i 's,[^ *]power_prep.*;,\tpower_prep="$(@D)/power_prep/power_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) + sed -i 's,[^ *]sdram_prep.*;,\tsdram_prep="$(@D)/boot_prep/boot_prep";,' $(@D)/$(MXS_BOOTLETS_BOOTDESC) + $(MXS_BOOTLETS_SED_BAREBOX) + $(MXS_BOOTLETS_SED_LINUX) + $(MXS_BOOTLETS_SED_UBOOT) + $(HOST_DIR)/bin/elftosb $(MXS_BOOTLETS_ELFTOSB_OPTIONS) \ + -z -c $(@D)/$(MXS_BOOTLETS_BOOTDESC) \ + -o $(@D)/$(MXS_BOOTLETS_BOOTSTREAM) +endef + +define MXS_BOOTLETS_INSTALL_TARGET_CMDS + cp $(@D)/$(MXS_BOOTLETS_BOOTSTREAM) $(BINARIES_DIR)/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/boot/s500-bootloader/Config.in b/buildroot/boot/s500-bootloader/Config.in new file mode 100644 index 0000000..7bb689f --- /dev/null +++ b/buildroot/boot/s500-bootloader/Config.in @@ -0,0 +1,17 @@ +config BR2_TARGET_S500_BOOTLOADER + bool "s500-bootloader" + depends on BR2_arm + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_HOSTARCH_NEEDS_IA32_LIBS + help + 1st level bootloader for Actions Semiconductor S500 SoC. + + https://github.com/xapp-le/owl + +config BR2_TARGET_S500_BOOTLOADER_BOARD + string "board to configure for" + depends on BR2_TARGET_S500_BOOTLOADER + help + Specify the board to configure the bootloader for. + This should be the name of a directory under s500/boards + containing a suitable bootloader.ini file. diff --git a/buildroot/boot/s500-bootloader/s500-bootloader.hash b/buildroot/boot/s500-bootloader/s500-bootloader.hash new file mode 100644 index 0000000..d538f23 --- /dev/null +++ b/buildroot/boot/s500-bootloader/s500-bootloader.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b183024ac69f51ea7befd28d03b2ec35a7280e270405600fb4f37aa91d9c9571 s500-bootloader-a8d7fa1d9a7f353ec4613febf30f4ca99a10a106.tar.gz diff --git a/buildroot/boot/s500-bootloader/s500-bootloader.mk b/buildroot/boot/s500-bootloader/s500-bootloader.mk new file mode 100644 index 0000000..bc87b09 --- /dev/null +++ b/buildroot/boot/s500-bootloader/s500-bootloader.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# s500-bootloader +# +################################################################################ + +S500_BOOTLOADER_VERSION = a8d7fa1d9a7f353ec4613febf30f4ca99a10a106 +S500_BOOTLOADER_SITE = $(call github,xapp-le,owl,$(S500_BOOTLOADER_VERSION)) +S500_BOOTLOADER_LICENSE = PROPRIETARY +S500_BOOTLOADER_INSTALL_TARGET = NO +S500_BOOTLOADER_INSTALL_IMAGES = YES + +S500_BOOTLOADER_BOARD = $(call qstrip,$(BR2_TARGET_S500_BOOTLOADER_BOARD)) + +define S500_BOOTLOADER_BUILD_CMDS + cd $(@D) && ./tools/utils/bootloader_pack \ + s500/bootloader/bootloader.bin \ + s500/boards/$(S500_BOOTLOADER_BOARD)/bootloader.ini \ + s500-bootloader.bin +endef + +define S500_BOOTLOADER_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0644 -D $(@D)/s500-bootloader.bin \ + $(BINARIES_DIR)/s500-bootloader.bin +endef + +$(eval $(generic-package)) + +ifeq ($(BR2_TARGET_S500_BOOTLOADER)$(BR_BUILDING),yy) +# we NEED a board name +ifeq ($(S500_BOOTLOADER_BOARD),) +$(error No s500-bootloader board specified. Check your BR2_TARGET_S500_BOOTLOADER settings) +endif +endif diff --git a/buildroot/boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch b/buildroot/boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch new file mode 100644 index 0000000..633d996 --- /dev/null +++ b/buildroot/boot/syslinux/0001-bios-Fix-alignment-change-with-gcc-5.patch @@ -0,0 +1,82 @@ +From da5cbd1a3b248f2d32281a1766a3d1414c0e8e03 Mon Sep 17 00:00:00 2001 +From: Sylvain Gault +Date: Tue, 29 Sep 2015 02:38:25 +0200 +Subject: [PATCH] bios: Fix alignment change with gcc 5 + +The section aligment specified in the ld scripts have to be greater or +equal to those in the .o files generated by gcc. + +Signed-off-by: Sylvain Gault +Tested-by: poma +Signed-off-by: Paulo Alcantara +Signed-off-by: Frank Hunleth +--- + core/i386/syslinux.ld | 6 +++--- + core/x86_64/syslinux.ld | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld +index 7b4e012..7390451 100644 +--- a/core/i386/syslinux.ld ++++ b/core/i386/syslinux.ld +@@ -266,7 +266,7 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __rodata_vma = .; + __rodata_lma = __rodata_vma + __text_lma - __text_vma; +@@ -361,7 +361,7 @@ SECTIONS + __dynamic_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __data_vma = .; + __data_lma = __data_vma + __text_lma - __text_vma; +@@ -377,7 +377,7 @@ SECTIONS + __pm_code_dwords = (__pm_code_len + 3) >> 2; + + . = ALIGN(128); +- ++ + __bss_vma = .; + __bss_lma = .; /* Dummy */ + .bss (NOLOAD) : AT (__bss_lma) { +diff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld +index 1057112..bf815c4 100644 +--- a/core/x86_64/syslinux.ld ++++ b/core/x86_64/syslinux.ld +@@ -266,7 +266,7 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __rodata_vma = .; + __rodata_lma = __rodata_vma + __text_lma - __text_vma; +@@ -361,7 +361,7 @@ SECTIONS + __dynamic_end = .; + } + +- . = ALIGN(16); ++ . = ALIGN(32); + + __data_vma = .; + __data_lma = __data_vma + __text_lma - __text_vma; +@@ -377,7 +377,7 @@ SECTIONS + __pm_code_dwords = (__pm_code_len + 3) >> 2; + + . = ALIGN(128); +- ++ + __bss_vma = .; + __bss_lma = .; /* Dummy */ + .bss (NOLOAD) : AT (__bss_lma) { +-- +2.7.4 + diff --git a/buildroot/boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch b/buildroot/boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch new file mode 100644 index 0000000..64a08b8 --- /dev/null +++ b/buildroot/boot/syslinux/0002-Disable-PIE-to-avoid-FTBFS-on-amd64.patch @@ -0,0 +1,30 @@ +From 250bf2c921713434627dc7bc8b0918fa0841f9b7 Mon Sep 17 00:00:00 2001 +From: Graham Inggs +Date: Wed, 5 Apr 2017 22:03:12 +0200 +Subject: [PATCH] Disable PIE to avoid FTBFS on amd64 + +gcc 6.x has PIE support enabled by default, which causes a build issue +with syslinux. This patch disables PIE support in the relevant +syslinux Makefile. + +Signed-off-by: Ryan Coe +--- + gpxe/src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gpxe/src/Makefile b/gpxe/src/Makefile +index cc91d78..077af64 100644 +--- a/gpxe/src/Makefile ++++ b/gpxe/src/Makefile +@@ -4,7 +4,7 @@ + # + + CLEANUP := +-CFLAGS := ++CFLAGS := -fno-PIE + ASFLAGS := + LDFLAGS := + MAKEDEPS := Makefile +-- +2.7.4 + diff --git a/buildroot/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch b/buildroot/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch new file mode 100644 index 0000000..4eedf49 --- /dev/null +++ b/buildroot/boot/syslinux/0003-memdisk-Force-ld-output-format-to-32-bits.patch @@ -0,0 +1,32 @@ +From c0287594239d5af2082cac20817f8e8b11a4b1b2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Wed, 5 Apr 2017 14:18:09 +0200 +Subject: [PATCH] memdisk: Force ld output format to 32-bits +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On toolchains where the default output is x86_64, we need to be +consistent with the other .o files + +Signed-off-by: Benoît Allard +--- + memdisk/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/memdisk/Makefile b/memdisk/Makefile +index e6557d8..06613ff 100644 +--- a/memdisk/Makefile ++++ b/memdisk/Makefile +@@ -78,7 +78,7 @@ memdisk16.o: memdisk16.asm + $(NASM) -f bin $(NASMOPT) $(NFLAGS) $(NINCLUDE) -o $@ -l $*.lst $< + + memdisk_%.o: memdisk_%.bin +- $(LD) -r -b binary -o $@ $< ++ $(LD) --oformat elf32-i386 -r -b binary -o $@ $< + + memdisk16.elf: $(OBJS16) + $(LD) -Ttext 0 -o $@ $^ +-- +2.7.4 + diff --git a/buildroot/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch b/buildroot/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch new file mode 100644 index 0000000..e091a3a --- /dev/null +++ b/buildroot/boot/syslinux/0004-utils-Use-the-host-toolchain-to-build.patch @@ -0,0 +1,60 @@ +From e000251144056c99e390a2a4449d06cbd2a19c0a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Wed, 5 Apr 2017 14:25:02 +0200 +Subject: [PATCH] utils: Use the host toolchain to build. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The utilities are meant to run on the host machine, hence must be built using +the host toolchain. + +Signed-off-by: Benoît Allard +--- + utils/Makefile | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/utils/Makefile b/utils/Makefile +index dfe6259..ac91aaa 100644 +--- a/utils/Makefile ++++ b/utils/Makefile +@@ -17,8 +17,8 @@ + VPATH = $(SRC) + include $(MAKEDIR)/syslinux.mk + +-CFLAGS = $(GCCWARN) -Os -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -I$(SRC) +-LDFLAGS = -O2 ++CFLAGS = $(CFLAGS_FOR_BUILD) $(GCCWARN) -Os -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -I$(SRC) ++LDFLAGS = $(LDFLAGS_FOR_BUILD) -O2 + + C_TARGETS = isohybrid gethostip memdiskfind + SCRIPT_TARGETS = mkdiskimage +@@ -35,7 +35,7 @@ ISOHDPFX = $(addprefix $(OBJ)/,../mbr/isohdpfx.bin ../mbr/isohdpfx_f.bin \ + all: $(TARGETS) + + %.o: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< + + mkdiskimage: mkdiskimage.in ../mbr/mbr.bin bin2hex.pl + $(PERL) $(SRC)/bin2hex.pl < $(OBJ)/../mbr/mbr.bin | cat $(SRC)/mkdiskimage.in - > $@ +@@ -51,13 +51,13 @@ isohdpfx.c: $(ISOHDPFX) isohdpfxarray.pl + $(PERL) $(SRC)/isohdpfxarray.pl $(ISOHDPFX) > $@ + + isohybrid: isohybrid.o isohdpfx.o +- $(CC) $(LDFLAGS) -o $@ $^ -luuid ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ -luuid + + gethostip: gethostip.o +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ + + memdiskfind: memdiskfind.o +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ + + tidy dist: + rm -f *.o .*.d isohdpfx.c +-- +2.1.4 + diff --git a/buildroot/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch b/buildroot/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch new file mode 100644 index 0000000..c6fa7fe --- /dev/null +++ b/buildroot/boot/syslinux/0005-lzo-Use-the-host-toolchain-for-prepcore.patch @@ -0,0 +1,44 @@ +From 83e1f00990c25554723609bb549e18b987034317 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Thu, 6 Apr 2017 09:43:46 +0200 +Subject: [PATCH] lzo: Use the host toolchain for prepcore +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Benoît Allard +--- + lzo/Makefile | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/lzo/Makefile b/lzo/Makefile +index 29f1fa6..c016e5a 100644 +--- a/lzo/Makefile ++++ b/lzo/Makefile +@@ -11,10 +11,13 @@ + ## ----------------------------------------------------------------------- + + VPATH = $(SRC) +-include $(MAKEDIR)/build.mk ++include $(MAKEDIR)/syslinux.mk + + INCLUDES += -I$(SRC)/include + ++%.o: %.c ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS_FOR_BUILD) $(INCLUDES) -c -o $@ $< ++ + LIBOBJS = $(patsubst %.c,%.o,$(subst $(SRC)/,,$(wildcard $(SRC)/src/*.c))) + LIB = lzo.a + BINS = prepcore +@@ -30,7 +33,7 @@ $(LIB) : $(LIBOBJS) + $(RANLIB) $@ + + prepcore : prepcore.o $(LIB) +- $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) ++ $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ $^ $(LIBS) + + tidy dist clean spotless: + rm -f $(BINS) +-- +2.1.4 + diff --git a/buildroot/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch b/buildroot/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch new file mode 100644 index 0000000..c376010 --- /dev/null +++ b/buildroot/boot/syslinux/0006-The-VPrint-definition-is-now-part-of-the-exports-of-.patch @@ -0,0 +1,37 @@ +From 39274503292a6003b1b0c93f694e34f11e85ea44 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Fri, 9 Jun 2017 11:55:14 +0200 +Subject: [PATCH] The VPrint definition is now part of the exports of + gnu-efi +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Benoît Allard +--- + efi/fio.h | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/efi/fio.h b/efi/fio.h +index 65fff8d..a1bfe68 100644 +--- a/efi/fio.h ++++ b/efi/fio.h +@@ -11,15 +11,6 @@ + #define MAX_EFI_ARGS 64 + #define WS(c16) (c16 == L' ' || c16 == CHAR_TAB) + +-/* VPrint is not in export declarations in gnu-efi lib yet +- * although it is a global function; declare it here +- */ +-extern UINTN +-VPrint ( +- IN CHAR16 *fmt, +- va_list args +- ); +- + extern EFI_STATUS efi_errno; + + void efi_memcpy(unsigned char *dst, unsigned char *src, size_t len); +-- +2.1.4 + diff --git a/buildroot/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch b/buildroot/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch new file mode 100644 index 0000000..90d0b81 --- /dev/null +++ b/buildroot/boot/syslinux/0007-Update-the-longjump-calls-to-fit-the-new-declaration.patch @@ -0,0 +1,37 @@ +From 3bd5c2d951421a89f76b2423e5810862f53486c1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Fri, 9 Jun 2017 11:59:43 +0200 +Subject: [PATCH] Update the longjump calls to fit the new declaration +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Benoît Allard +--- + efi/main.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/efi/main.c b/efi/main.c +index 208fee4f..71d31a5c 100644 +--- a/efi/main.c ++++ b/efi/main.c +@@ -10,7 +10,6 @@ + #include + #include + #include +-#include + + #include "efi.h" + #include "fio.h" +@@ -30,7 +29,7 @@ uint32_t timer_irq; + __export uint8_t KbdMap[256]; + char aux_seg[256]; + +-static jmp_buf load_error_buf; ++static jmp_buf *load_error_buf; + + static inline EFI_STATUS + efi_close_protocol(EFI_HANDLE handle, EFI_GUID *guid, EFI_HANDLE agent, +-- +2.13.3 + diff --git a/buildroot/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch b/buildroot/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch new file mode 100644 index 0000000..9ec12a1 --- /dev/null +++ b/buildroot/boot/syslinux/0008-efi-wrapper-build-it-with-the-host-toolchain.patch @@ -0,0 +1,32 @@ +From ca8aaded0c7c3900397029bd9520132b62629308 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Beno=C3=AEt=20Allard?= +Date: Mon, 12 Jun 2017 14:59:16 +0200 +Subject: [PATCH] efi/wrapper: build it with the host toolchain. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The wrapper program is executed on the build machine, so it should be +built with CC_FOR_BUILD. + +Signed-off-by: Benoît Allard +--- + efi/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/efi/Makefile b/efi/Makefile +index d5443bd5..d24d16db 100644 +--- a/efi/Makefile ++++ b/efi/Makefile +@@ -79,7 +79,7 @@ syslinux.so: $(OBJS) $(CORE_OBJS) $(LIB_OBJS) + # cp $^ $@ + + wrapper: wrapper.c +- $(CC) $^ -o $@ ++ $(CC_FOR_BUILD) $^ -o $@ + + # + # Build the wrapper app and wrap our .so to produce a .efi +-- +2.13.3 + diff --git a/buildroot/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch b/buildroot/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch new file mode 100644 index 0000000..916012f --- /dev/null +++ b/buildroot/boot/syslinux/0009-bios-Don-t-try-to-guess-the-sections-alignment.patch @@ -0,0 +1,295 @@ +From 76946dd67bc856eaf4fe69d0826547a794176f78 Mon Sep 17 00:00:00 2001 +From: Sylvain Gault +Date: Tue, 29 Sep 2015 04:45:09 +0200 +Subject: [PATCH] bios: Don't try to guess the sections alignment + +For the compression / decompression to succeed, the sections layout must +be the same between the virtual memory and load memory. The section +alignment was kept in sync by introducing aligment that should be +greater or equal to the actual section alignment. + +This patch compute the load memory addresses of the sections so that +the layout is the same as the virtual memory addresses. + +Signed-off-by: Sylvain Gault +Tested-by: poma +Signed-off-by: Paulo Alcantara + +Upstream: 0cc9a99e560a2f52bcf052fd85b1efae35ee812f +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + core/i386/syslinux.ld | 63 ++++++++++--------------------------------------- + core/x86_64/syslinux.ld | 63 ++++++++++--------------------------------------- + 2 files changed, 24 insertions(+), 102 deletions(-) + +diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld +index 73904510..92b75b11 100644 +--- a/core/i386/syslinux.ld ++++ b/core/i386/syslinux.ld +@@ -255,10 +255,9 @@ SECTIONS + . = 0x100000; + + __pm_code_start = .; ++ __vma_to_lma = __pm_code_lma - __pm_code_start; + +- __text_vma = .; +- __text_lma = __pm_code_lma; +- .text : AT(__text_lma) { ++ .text : AT(ADDR(.text) + __vma_to_lma) { + FILL(0x90909090) + __text_start = .; + *(.text) +@@ -266,106 +265,68 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(32); +- +- __rodata_vma = .; +- __rodata_lma = __rodata_vma + __text_lma - __text_vma; +- .rodata : AT(__rodata_lma) { ++ .rodata : AT(ADDR(.rodata) + __vma_to_lma) { + __rodata_start = .; + *(.rodata) + *(.rodata.*) + __rodata_end = .; + } + +- . = ALIGN(4); +- +- __ctors_vma = .; +- __ctors_lma = __ctors_vma + __text_lma - __text_vma; +- .ctors : AT(__ctors_lma) { ++ .ctors : AT(ADDR(.ctors) + __vma_to_lma) { + __ctors_start = .; + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __ctors_end = .; + } + +- __dtors_vma = .; +- __dtors_lma = __dtors_vma + __text_lma - __text_vma; +- .dtors : AT(__dtors_lma) { ++ .dtors : AT(ADDR(.dtors) + __vma_to_lma) { + __dtors_start = .; + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + __dtors_end = .; + } + +- . = ALIGN(4); +- +- __dynsym_vma = .; +- __dynsym_lma = __dynsym_vma + __text_lma - __text_vma; +- .dynsym : AT(__dynsym_lma) { ++ .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { + __dynsym_start = .; + *(.dynsym) + __dynsym_end = .; + } + __dynsym_len = __dynsym_end - __dynsym_start; + +- . = ALIGN(4); +- +- __dynstr_vma = .; +- __dynstr_lma = __dynstr_vma + __text_lma - __text_vma; +- .dynstr : AT(__dynstr_lma) { ++ .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { + __dynstr_start = .; + *(.dynstr) + __dynstr_end = .; + } + __dynstr_len = __dynstr_end - __dynstr_start; + +- . = ALIGN(4); +- +- __gnu_hash_vma = .; +- __gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma; +- .gnu.hash : AT(__gnu_hash_lma) { ++ .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { + __gnu_hash_start = .; + *(.gnu.hash) + __gnu_hash_end = .; + } + + +- . = ALIGN(4); +- +- __dynlink_vma = .; +- __dynlink_lma = __dynlink_vma + __text_lma - __text_vma; +- .dynlink : AT(__dynlink_lma) { ++ .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { + __dynlink_start = .; + *(.dynlink) + __dynlink_end = .; + } + +- . = ALIGN(4); +- +- __got_vma = .; +- __got_lma = __got_vma + __text_lma - __text_vma; +- .got : AT(__got_lma) { ++ .got : AT(ADDR(.got) + __vma_to_lma) { + __got_start = .; + KEEP (*(.got.plt)) + KEEP (*(.got)) + __got_end = .; + } + +- . = ALIGN(4); +- +- __dynamic_vma = .; +- __dynamic_lma = __dynamic_vma + __text_lma - __text_vma; +- .dynamic : AT(__dynamic_lma) { ++ .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { + __dynamic_start = .; + *(.dynamic) + __dynamic_end = .; + } + +- . = ALIGN(32); +- +- __data_vma = .; +- __data_lma = __data_vma + __text_lma - __text_vma; +- .data : AT(__data_lma) { ++ .data : AT(ADDR(.data) + __vma_to_lma) { + __data_start = .; + *(.data) + *(.data.*) +diff --git a/core/x86_64/syslinux.ld b/core/x86_64/syslinux.ld +index bf815c46..70c6e00a 100644 +--- a/core/x86_64/syslinux.ld ++++ b/core/x86_64/syslinux.ld +@@ -255,10 +255,9 @@ SECTIONS + . = 0x100000; + + __pm_code_start = .; ++ __vma_to_lma = __pm_code_lma - __pm_code_start; + +- __text_vma = .; +- __text_lma = __pm_code_lma; +- .text : AT(__text_lma) { ++ .text : AT(ADDR(.text) + __vma_to_lma) { + FILL(0x90909090) + __text_start = .; + *(.text) +@@ -266,106 +265,68 @@ SECTIONS + __text_end = .; + } + +- . = ALIGN(32); +- +- __rodata_vma = .; +- __rodata_lma = __rodata_vma + __text_lma - __text_vma; +- .rodata : AT(__rodata_lma) { ++ .rodata : AT(ADDR(.rodata) + __vma_to_lma) { + __rodata_start = .; + *(.rodata) + *(.rodata.*) + __rodata_end = .; + } + +- . = ALIGN(4); +- +- __ctors_vma = .; +- __ctors_lma = __ctors_vma + __text_lma - __text_vma; +- .ctors : AT(__ctors_lma) { ++ .ctors : AT(ADDR(.ctors) + __vma_to_lma) { + __ctors_start = .; + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __ctors_end = .; + } + +- __dtors_vma = .; +- __dtors_lma = __dtors_vma + __text_lma - __text_vma; +- .dtors : AT(__dtors_lma) { ++ .dtors : AT(ADDR(.dtors) + __vma_to_lma) { + __dtors_start = .; + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + __dtors_end = .; + } + +- . = ALIGN(4); +- +- __dynsym_vma = .; +- __dynsym_lma = __dynsym_vma + __text_lma - __text_vma; +- .dynsym : AT(__dynsym_lma) { ++ .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { + __dynsym_start = .; + *(.dynsym) + __dynsym_end = .; + } + __dynsym_len = __dynsym_end - __dynsym_start; + +- . = ALIGN(4); +- +- __dynstr_vma = .; +- __dynstr_lma = __dynstr_vma + __text_lma - __text_vma; +- .dynstr : AT(__dynstr_lma) { ++ .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { + __dynstr_start = .; + *(.dynstr) + __dynstr_end = .; + } + __dynstr_len = __dynstr_end - __dynstr_start; + +- . = ALIGN(4); +- +- __gnu_hash_vma = .; +- __gnu_hash_lma = __gnu_hash_vma + __text_lma - __text_vma; +- .gnu.hash : AT(__gnu_hash_lma) { ++ .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { + __gnu_hash_start = .; + *(.gnu.hash) + __gnu_hash_end = .; + } + + +- . = ALIGN(4); +- +- __dynlink_vma = .; +- __dynlink_lma = __dynlink_vma + __text_lma - __text_vma; +- .dynlink : AT(__dynlink_lma) { ++ .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { + __dynlink_start = .; + *(.dynlink) + __dynlink_end = .; + } + +- . = ALIGN(4); +- +- __got_vma = .; +- __got_lma = __got_vma + __text_lma - __text_vma; +- .got : AT(__got_lma) { ++ .got : AT(ADDR(.got) + __vma_to_lma) { + __got_start = .; + KEEP (*(.got.plt)) + KEEP (*(.got)) + __got_end = .; + } + +- . = ALIGN(4); +- +- __dynamic_vma = .; +- __dynamic_lma = __dynamic_vma + __text_lma - __text_vma; +- .dynamic : AT(__dynamic_lma) { ++ .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { + __dynamic_start = .; + *(.dynamic) + __dynamic_end = .; + } + +- . = ALIGN(32); +- +- __data_vma = .; +- __data_lma = __data_vma + __text_lma - __text_vma; +- .data : AT(__data_lma) { ++ .data : AT(ADDR(.data) + __vma_to_lma) { + __data_start = .; + *(.data) + *(.data.*) +-- +2.13.3 + diff --git a/buildroot/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch b/buildroot/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch new file mode 100644 index 0000000..8b6d525 --- /dev/null +++ b/buildroot/boot/syslinux/0010-core-Clean-up-the-i386-bios-build.patch @@ -0,0 +1,622 @@ +From a14b1b3d3e375d2e8af8804171ef5e52574dbb2a Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" +Date: Tue, 9 Feb 2016 18:15:50 -0800 +Subject: [PATCH] core: Clean up the i386-bios build + +Remove symbols and data structures not used in the i386-bios build, +and clean up the linker script so that most internal symbols are +HIDDEN. + +Signed-off-by: H. Peter Anvin + +Upstream: ff859050fa4e6535cae098dc35d88a265466448d + +This patch fixes the following build failure with i386 binutils 2.28.1: + +/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld -Bsymbolic -pie -E --hash-style=gnu -T +/builds/arnout/buildroot/output/build/syslinux-6.03/core/i386/syslinux.ld -M -o ldlinux.elf ldlinux.o \ + --start-group libcom32.a --whole-archive /builds/arnout/buildroot/output/build/syslinux-6.03/bios/com32/lib/libcom32core.a libldlinux.a --end-group -N +--no-omagic \ + > ldlinux.map +/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: ldlinux.elf: Not enough room for program headers, try linking with -N +/builds/arnout/buildroot/output/host/bin/i586-buildroot-linux-uclibc-ld: final link failed: Bad value +/builds/arnout/buildroot/output/build/syslinux-6.03/core/Makefile:167: recipe for target 'ldlinux.elf' failed + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + core/extern.inc | 17 +-- + core/i386/syslinux.ld | 287 +++++++++++++++++++++++++------------------------- + core/layout.inc | 11 -- + 3 files changed, 143 insertions(+), 172 deletions(-) + +diff --git a/core/extern.inc b/core/extern.inc +index af8eb04c..ce4abfab 100644 +--- a/core/extern.inc ++++ b/core/extern.inc +@@ -12,27 +12,17 @@ + ; hello.c + extern hello + +- ;abort.c +- extern abort_load_new +- + ; elflink/load_env32.c + extern load_env32, pm_env32_run + +- ; memscan.c +- extern highmem_init +- +- extern linux_kernel +- + extern mp1, mp2, mp3, mp4, mp5 + +- extern hexdump, mydump ++ extern hexdump + + extern mem_init + + ; fs.c +- extern pm_fs_init, pm_searchdir, getfssec, getfsbytes +- extern pm_mangle_name, pm_load_config +- extern pm_open_file, pm_close_file ++ extern pm_fs_init + extern SectorSize, SectorShift + + ; chdir.c +@@ -41,9 +31,6 @@ + ; readdir.c + extern opendir, readdir, closedir + +- ; newconfig.c +- extern pm_is_config_file +- + ; idle.c + extern __idle + +diff --git a/core/i386/syslinux.ld b/core/i386/syslinux.ld +index 92b75b11..39198d75 100644 +--- a/core/i386/syslinux.ld ++++ b/core/i386/syslinux.ld +@@ -1,7 +1,7 @@ + /* ----------------------------------------------------------------------- + * + * Copyright 2008-2009 H. Peter Anvin - All Rights Reserved +- * Copyright 2009 Intel Corporation; author: H. Peter Anvin ++ * Copyright 2009-2016 Intel Corporation; author: H. Peter Anvin + * + * 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 +@@ -12,7 +12,7 @@ + * ----------------------------------------------------------------------- */ + + /* +- * Linker script for the SYSLINUX core ++ * Linker script for the SYSLINUX core when built for i386-bios + */ + + OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") +@@ -26,7 +26,7 @@ SECTIONS + { + /* Prefix structure for the compression program */ + . = 0; +- __module_start = .; ++ HIDDEN(__module_start = ABSOLUTE(.)); + .prefix : { + *(.prefix) + } +@@ -35,81 +35,82 @@ SECTIONS + . = 0x1000; + + .earlybss (NOLOAD) : { +- __earlybss_start = .; ++ HIDDEN(__earlybss_start = .); + *(.earlybss) +- __earlybss_end = .; ++ HIDDEN(__earlybss_end = .); + } +- __earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start); +- __earlybss_dwords = (__earlybss_len + 3) >> 2; ++ HIDDEN(__earlybss_len = ABSOLUTE(__earlybss_end) - ABSOLUTE(__earlybss_start)); ++ HIDDEN(__earlybss_dwords = (__earlybss_len + 3) >> 2); + + . = ALIGN(4); + .bss16 (NOLOAD) : { +- __bss16_start = .; ++ HIDDEN(__bss16_start = .); + *(.bss16) +- __bss16_end = .; ++ HIDDEN(__bss16_end = .); + } +- __bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start); +- __bss16_dwords = (__bss16_len + 3) >> 2; ++ HIDDEN(__bss16_len = ABSOLUTE(__bss16_end) - ABSOLUTE(__bss16_start)); ++ HIDDEN(__bss16_dwords = (__bss16_len + 3) >> 2); + + . = ALIGN(4); + .config : AT (__config_lma) { +- __config_start = .; ++ HIDDEN(__config_start = .); + *(.config) +- __config_end = .; ++ HIDDEN(__config_end = .); + } +- __config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start); +- __config_dwords = (__config_len + 3) >> 2; ++ HIDDEN(__config_len = ABSOLUTE(__config_end) - ABSOLUTE(__config_start)); ++ HIDDEN(__config_dwords = (__config_len + 3) >> 2); + + /* Generated and/or copied code */ + + . = ALIGN(128); /* Minimum separation from mutable data */ + .replacestub : AT (__replacestub_lma) { +- __replacestub_start = .; ++ HIDDEN(__replacestub_start = .); + *(.replacestub) +- __replacestub_end = .; ++ HIDDEN(__replacestub_end = .); + } +- __replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start); +- __replacestub_dwords = (__replacestub_len + 3) >> 2; ++ HIDDEN(__replacestub_len = ABSOLUTE(__replacestub_end) - ABSOLUTE(__replacestub_start)); ++ HIDDEN(__replacestub_dwords = (__replacestub_len + 3) >> 2); + + . = ALIGN(16); +- __gentextnr_lma = .; ++ HIDDEN(__gentextnr_lma = .); + .gentextnr : AT(__gentextnr_lma) { +- __gentextnr_start = .; ++ HIDDEN(__gentextnr_start = .); + *(.gentextnr) +- __gentextnr_end = .; ++ HIDDEN(__gentextnr_end = .); + } +- __gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start); +- __gentextnr_dwords = (__gentextnr_len + 3) >> 2; ++ HIDDEN(__gentextnr_len = ABSOLUTE(__gentextnr_end) - ABSOLUTE(__gentextnr_start)); ++ HIDDEN(__gentextnr_dwords = (__gentextnr_len + 3) >> 2); + + . = STACK_BASE; + .stack16 : AT(STACK_BASE) { +- __stack16_start = .; ++ HIDDEN(__stack16_start = .); + . += STACK_LEN; +- __stack16_end = .; ++ HIDDEN(__stack16_end = .); + } +- __stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start); +- __stack16_dwords = (__stack16_len + 3) >> 2; ++ HIDDEN(__stack16_len = ABSOLUTE(__stack16_end) - ABSOLUTE(__stack16_start)); ++ HIDDEN(__stack16_dwords = (__stack16_len + 3) >> 2); + + /* Initialized sections */ + + . = 0x7c00; + .init : { + FILL(0x90909090) +- __init_start = .; ++ HIDDEN(__init_start = .); + *(.init) +- __init_end = .; ++ HIDDEN(__init_end = .); + } +- __init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start); +- __init_dwords = (__init_len + 3) >> 2; ++ HIDDEN(__init_len = ABSOLUTE(__init_end) - ABSOLUTE(__init_start)); ++ HIDDEN(__init_dwords = (__init_len + 3) >> 2); + ++ . = ALIGN(4); + .text16 : { + FILL(0x90909090) +- __text16_start = .; ++ HIDDEN(__text16_start = .); + *(.text16) +- __text16_end = .; ++ HIDDEN(__text16_end = .); + } +- __text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start); +- __text16_dwords = (__text16_len + 3) >> 2; ++ HIDDEN(__text16_len = ABSOLUTE(__text16_end) - ABSOLUTE(__text16_start)); ++ HIDDEN(__text16_dwords = (__text16_len + 3) >> 2); + + /* + * .textnr is used for 32-bit code that is used on the code +@@ -118,99 +119,92 @@ SECTIONS + . = ALIGN(16); + .textnr : { + FILL(0x90909090) +- __textnr_start = .; ++ HIDDEN(__textnr_start = .); + *(.textnr) +- __textnr_end = .; ++ HIDDEN(__textnr_end = .); + } +- __textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start); +- __textnr_dwords = (__textnr_len + 3) >> 2; ++ HIDDEN(__textnr_len = ABSOLUTE(__textnr_end) - ABSOLUTE(__textnr_start)); ++ HIDDEN(__textnr_dwords = (__textnr_len + 3) >> 2); + + . = ALIGN(16); +- __bcopyxx_start = .; ++ HIDDEN(__bcopyxx_start = .); + + .bcopyxx.text : { + FILL(0x90909090) +- __bcopyxx_text_start = .; ++ HIDDEN(__bcopyxx_text_start = .); + *(.bcopyxx.text) +- __bcopyxx_text_end = .; ++ HIDDEN(__bcopyxx_text_end = .); + } +- __bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start); +- __bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2; ++ HIDDEN(__bcopyxx_text_len = ABSOLUTE(__bcopyxx_text_end) - ABSOLUTE(__bcopyxx_text_start)); ++ HIDDEN(__bcopyxx_text_dwords = (__bcopyxx_text_len + 3) >> 2); + + .bcopyxx.data : { +- __bcopyxx_data_start = .; ++ HIDDEN(__bcopyxx_data_start = .); + *(.bcopyxx.text) +- __bcopyxx_data_end = .; ++ HIDDEN(__bcopyxx_data_end = .); + } +- __bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start); +- __bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2; ++ HIDDEN(__bcopyxx_data_len = ABSOLUTE(__bcopyxx_data_end) - ABSOLUTE(__bcopyxx_data_start)); ++ HIDDEN(__bcopyxx_data_dwords = (__bcopyxx_data_len + 3) >> 2); + +- __bcopyxx_end = .; +- __bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start); +- __bcopyxx_dwords = (__bcopyxx_len + 3) >> 2; ++ HIDDEN(__bcopyxx_end = .); ++ HIDDEN(__bcopyxx_len = ABSOLUTE(__bcopyxx_end) - ABSOLUTE(__bcopyxx_start)); ++ HIDDEN(__bcopyxx_dwords = (__bcopyxx_len + 3) >> 2); + + . = ALIGN(4); + .data16 : { +- __data16_start = .; ++ HIDDEN(__data16_start = .); + *(.data16) +- __data16_end = .; ++ HIDDEN(__data16_end = .); + } +- __data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start); +- __data16_dwords = (__data16_len + 3) >> 2; ++ HIDDEN(__data16_len = ABSOLUTE(__data16_end) - ABSOLUTE(__data16_start)); ++ HIDDEN(__data16_dwords = (__data16_len + 3) >> 2); + + . = ALIGN(4); +- __config_lma = .; ++ HIDDEN(__config_lma = ABSOLUTE(.)); + . += SIZEOF(.config); + + . = ALIGN(4); +- __replacestub_lma = .; ++ HIDDEN(__replacestub_lma = ABSOLUTE(.)); + . += SIZEOF(.replacestub); + + /* The 32-bit code loads above the non-progbits sections */ + + . = ALIGN(16); +- __pm_code_lma = .; ++ HIDDEN(__pm_code_lma = ABSOLUTE(.)); + +- __high_clear_start = .; ++ HIDDEN(__high_clear_start = .); + + . = ALIGN(512); + .adv (NOLOAD) : { +- __adv_start = .; ++ HIDDEN(__adv_start = .); + *(.adv) +- __adv_end = .; ++ HIDDEN(__adv_end = .); + } +- __adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start); +- __adv_dwords = (__adv_len + 3) >> 2; ++ HIDDEN(__adv_len = ABSOLUTE(__adv_end) - ABSOLUTE(__adv_start)); ++ HIDDEN(__adv_dwords = (__adv_len + 3) >> 2); + + /* Late uninitialized sections */ + + . = ALIGN(4); + .uibss (NOLOAD) : { +- __uibss_start = .; ++ HIDDEN(__uibss_start = .); + *(.uibss) +- __uibss_end = .; ++ HIDDEN(__uibss_end = .); + } +- __uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start); +- __uibss_dwords = (__uibss_len + 3) >> 2; ++ HIDDEN(__uibss_len = ABSOLUTE(__uibss_end) - ABSOLUTE(__uibss_start)); ++ HIDDEN(__uibss_dwords = (__uibss_len + 3) >> 2); + +- _end16 = .; +- __assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow"); ++ HIDDEN(_end16 = .); ++ HIDDEN(__assert_end16 = ASSERT(_end16 <= 0x10000, "64K overflow")); + + /* + * Special 16-bit segments + */ +- +- . = ALIGN(65536); +- .real_mode (NOLOAD) : { +- *(.real_mode) +- } +- real_mode_seg = core_real_mode >> 4; +- + . = ALIGN(65536); + .xfer_buf (NOLOAD) : { + *(.xfer_buf) + } +- xfer_buf_seg = core_xfer_buf >> 4; ++ HIDDEN(xfer_buf_seg = core_xfer_buf >> 4); + + /* + * The auxilliary data segment is used by the 16-bit code +@@ -219,33 +213,33 @@ SECTIONS + + . = ALIGN(16); + .auxseg (NOLOAD) : { +- __auxseg_start = .; ++ HIDDEN(__auxseg_start = .); + *(.auxseg) +- __auxseg_end = .; ++ HIDDEN(__auxseg_end = .); + } +- __auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start); +- __auxseg_dwords = (__auxseg_len + 3) >> 2; +- aux_seg = __auxseg_start >> 4; ++ HIDDEN(__auxseg_len = ABSOLUTE(__auxseg_end) - ABSOLUTE(__auxseg_start)); ++ HIDDEN(__auxseg_dwords = (__auxseg_len + 3) >> 2); ++ HIDDEN(aux_seg = __auxseg_start >> 4); + + /* + * Used to allocate lowmem buffers from 32-bit code + */ + .lowmem (NOLOAD) : { +- __lowmem_start = .; ++ HIDDEN(__lowmem_start = .); + *(.lowmem) +- __lowmem_end = .; ++ HIDDEN(__lowmem_end = .); + } +- __lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start); +- __lowmem_dwords = (__lowmem_len + 3) >> 2; ++ HIDDEN(__lowmem_len = ABSOLUTE(__lowmem_end) - ABSOLUTE(__lowmem_start)); ++ HIDDEN(__lowmem_dwords = (__lowmem_len + 3) >> 2); + +- __high_clear_end = .; ++ HIDDEN(__high_clear_end = .); + +- __high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start); +- __high_clear_dwords = (__high_clear_len + 3) >> 2; ++ HIDDEN(__high_clear_len = ABSOLUTE(__high_clear_end) - ABSOLUTE(__high_clear_start)); ++ HIDDEN(__high_clear_dwords = (__high_clear_len + 3) >> 2); + + /* Start of the lowmem heap */ + . = ALIGN(16); +- __lowmem_heap = .; ++ HIDDEN(__lowmem_heap = .); + + /* + * 32-bit code. This is a hack for the moment due to the +@@ -254,136 +248,137 @@ SECTIONS + + . = 0x100000; + +- __pm_code_start = .; +- __vma_to_lma = __pm_code_lma - __pm_code_start; ++ HIDDEN(__pm_code_start = .); ++ HIDDEN(__vma_to_lma = ABSOLUTE(__pm_code_lma - __pm_code_start)); + + .text : AT(ADDR(.text) + __vma_to_lma) { + FILL(0x90909090) +- __text_start = .; ++ HIDDEN(__text_start = .); + *(.text) + *(.text.*) +- __text_end = .; ++ HIDDEN(__text_end = .); + } + + .rodata : AT(ADDR(.rodata) + __vma_to_lma) { +- __rodata_start = .; ++ HIDDEN(__rodata_start = .); + *(.rodata) + *(.rodata.*) +- __rodata_end = .; ++ HIDDEN(__rodata_end = .); + } + + .ctors : AT(ADDR(.ctors) + __vma_to_lma) { +- __ctors_start = .; ++ HIDDEN(__ctors_start = .); + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) +- __ctors_end = .; ++ HIDDEN(__ctors_end = .); + } + + .dtors : AT(ADDR(.dtors) + __vma_to_lma) { +- __dtors_start = .; ++ HIDDEN(__dtors_start = .); + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) +- __dtors_end = .; ++ HIDDEN(__dtors_end = .); + } + + .dynsym : AT(ADDR(.dynsym) + __vma_to_lma) { +- __dynsym_start = .; +- *(.dynsym) +- __dynsym_end = .; ++ HIDDEN(__dynsym_start = .); ++ KEEP (*(.dynsym)) ++ HIDDEN(__dynsym_end = .); + } +- __dynsym_len = __dynsym_end - __dynsym_start; ++ HIDDEN(__dynsym_len = __dynsym_end - __dynsym_start); + + .dynstr : AT(ADDR(.dynstr) + __vma_to_lma) { +- __dynstr_start = .; +- *(.dynstr) +- __dynstr_end = .; ++ HIDDEN(__dynstr_start = .); ++ KEEP (*(.dynstr)) ++ HIDDEN(__dynstr_end = .); + } +- __dynstr_len = __dynstr_end - __dynstr_start; ++ HIDDEN(__dynstr_len = __dynstr_end - __dynstr_start); + + .gnu.hash : AT(ADDR(.gnu.hash) + __vma_to_lma) { +- __gnu_hash_start = .; +- *(.gnu.hash) +- __gnu_hash_end = .; ++ HIDDEN(__gnu_hash_start = .); ++ KEEP (*(.gnu.hash)) ++ HIDDEN(__gnu_hash_end = .); + } + + + .dynlink : AT(ADDR(.dynlink) + __vma_to_lma) { +- __dynlink_start = .; +- *(.dynlink) +- __dynlink_end = .; ++ HIDDEN(__dynlink_start = .); ++ KEEP (*(.dynlink)) ++ HIDDEN(__dynlink_end = .); + } + + .got : AT(ADDR(.got) + __vma_to_lma) { +- __got_start = .; +- KEEP (*(.got.plt)) ++ HIDDEN(__got_start = .); + KEEP (*(.got)) +- __got_end = .; ++ KEEP (*(.got.plt)) ++ HIDDEN(__got_end = .); + } + + .dynamic : AT(ADDR(.dynamic) + __vma_to_lma) { +- __dynamic_start = .; +- *(.dynamic) +- __dynamic_end = .; ++ HIDDEN(__dynamic_start = .); ++ KEEP (*(.dynamic)) ++ HIDDEN(__dynamic_end = .); + } + + .data : AT(ADDR(.data) + __vma_to_lma) { +- __data_start = .; ++ HIDDEN(__data_start = .); + *(.data) + *(.data.*) +- __data_end = .; ++ HIDDEN(__data_end = .); + } + +- __pm_code_end = .; +- __pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start); +- __pm_code_dwords = (__pm_code_len + 3) >> 2; ++ HIDDEN(__pm_code_end = .); ++ HIDDEN(__pm_code_len = ABSOLUTE(__pm_code_end) - ABSOLUTE(__pm_code_start)); ++ HIDDEN(__pm_code_dwords = (__pm_code_len + 3) >> 2); + + . = ALIGN(128); + +- __bss_vma = .; +- __bss_lma = .; /* Dummy */ ++ HIDDEN(__bss_vma = .); ++ HIDDEN(__bss_lma = ABSOLUTE(.)); /* Dummy */ + .bss (NOLOAD) : AT (__bss_lma) { +- __bss_start = .; ++ HIDDEN(__bss_start = .); + *(.bss) + *(.bss.*) + *(COMMON) +- __bss_end = .; ++ HIDDEN(__bss_end = .); + } +- __bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start); +- __bss_dwords = (__bss_len + 3) >> 2; ++ HIDDEN(__bss_len = ABSOLUTE(__bss_end) - ABSOLUTE(__bss_start)); ++ HIDDEN(__bss_dwords = (__bss_len + 3) >> 2); + + /* Very large objects which don't need to be zeroed */ + +- __hugebss_vma = .; +- __hugebss_lma = .; /* Dummy */ ++ HIDDEN(__hugebss_vma = .); ++ HIDDEN(__hugebss_lma = ABSOLUTE(.)); /* Dummy */ + .hugebss (NOLOAD) : AT (__hugebss_lma) { +- __hugebss_start = .; ++ HIDDEN(__hugebss_start = .); + *(.hugebss) + *(.hugebss.*) +- __hugebss_end = .; ++ HIDDEN(__hugebss_end = .); + } +- __hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start); +- __hugebss_dwords = (__hugebss_len + 3) >> 2; ++ HIDDEN(__hugebss_len = ABSOLUTE(__hugebss_end) - ABSOLUTE(__hugebss_start)); ++ HIDDEN(__hugebss_dwords = (__hugebss_len + 3) >> 2); + + + /* XXX: This stack should be unified with the COM32 stack */ +- __stack_vma = .; +- __stack_lma = .; /* Dummy */ ++ HIDDEN(__stack_vma = .); ++ HIDDEN(__stack_lma = ABSOLUTE(.)); /* Dummy */ + .stack (NOLOAD) : AT(__stack_lma) { +- __stack_start = .; ++ HIDDEN(__stack_start = .); + *(.stack) +- __stack_end = .; ++ HIDDEN(__stack_end = .); + } +- __stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start); +- __stack_dwords = (__stack_len + 3) >> 2; ++ HIDDEN(__stack_len = ABSOLUTE(__stack_end) - ABSOLUTE(__stack_start)); ++ HIDDEN(__stack_dwords = (__stack_len + 3) >> 2); + +- _end = .; ++ HIDDEN(_end = .); + + /* COM32R and kernels are loaded after our own PM code */ + . = ALIGN(65536); +- free_high_memory = .; ++ HIDDEN(free_high_memory = .); + + /* Stuff we don't need... */ + /DISCARD/ : { + *(.eh_frame) ++ *(.interp) + } + } +diff --git a/core/layout.inc b/core/layout.inc +index 53ca783d..635df537 100644 +--- a/core/layout.inc ++++ b/core/layout.inc +@@ -139,17 +139,6 @@ serial_buf_size equ 4096 ; Should be a power of 2 + core_xfer_buf resb 65536 + + ; +-; Segment for the real mode code (needed as long as we have a in-kernel +-; loader and/or COM16 support. +-; One symbol for the segment number, one for the absolute address +-; +- extern real_mode_seg +- section .real_mode write nobits align=65536 +- global core_real_mode:data hidden +-core_real_mode resb 65536 +-comboot_seg equ real_mode_seg ; COMBOOT image loading zone +- +-; + ; At the very end, the lowmem heap + ; + extern __lowmem_heap +-- +2.13.3 + diff --git a/buildroot/boot/syslinux/Config.in b/buildroot/boot/syslinux/Config.in new file mode 100644 index 0000000..da03549 --- /dev/null +++ b/buildroot/boot/syslinux/Config.in @@ -0,0 +1,62 @@ +config BR2_TARGET_SYSLINUX + bool "syslinux" + depends on BR2_i386 || BR2_x86_64 + # Make sure at least one of the flavors is installed + select BR2_TARGET_SYSLINUX_ISOLINUX \ + if !BR2_TARGET_SYSLINUX_PXELINUX && \ + !BR2_TARGET_SYSLINUX_MBR && \ + !BR2_TARGET_SYSLINUX_EFI + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + The syslinux bootloader for x86 systems. + This includes: syslinux, pxelinux, extlinux. + + http://syslinux.org + +if BR2_TARGET_SYSLINUX + +config BR2_TARGET_SYSLINUX_LEGACY_BIOS + bool + +config BR2_TARGET_SYSLINUX_ISOLINUX + bool "install isolinux" + select BR2_TARGET_SYSLINUX_LEGACY_BIOS + help + Install the legacy-BIOS 'isolinux' image, to boot off + optical media (CDROM, DVD.) + +config BR2_TARGET_SYSLINUX_PXELINUX + bool "install pxelinux" + select BR2_TARGET_SYSLINUX_LEGACY_BIOS + help + Install the legacy-BIOS 'pxelinux' image, to boot off + the network using PXE. + +config BR2_TARGET_SYSLINUX_MBR + bool "install mbr" + depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19615 + select BR2_TARGET_SYSLINUX_LEGACY_BIOS + help + Install the legacy-BIOS 'mbr' image, to boot off a + local MBR-partition (e.g. prepared with 'extlinux' + or 'syslinux'). + +config BR2_TARGET_SYSLINUX_EFI + bool "install efi" + select BR2_PACKAGE_GNU_EFI + help + Install the 'efi' image, to boot from an EFI environment. + + +if BR2_TARGET_SYSLINUX_LEGACY_BIOS + +config BR2_TARGET_SYSLINUX_C32 + string "modules to install" + help + Enter a space-separated list of .c32 modules to install. + Leave empty to install no module. + +endif # BR2_TARGET_SYSLINUX_LEGACY_BIOS + +endif # BR2_TARGET_SYSLINUX diff --git a/buildroot/boot/syslinux/syslinux.hash b/buildroot/boot/syslinux/syslinux.hash new file mode 100644 index 0000000..5303f4d --- /dev/null +++ b/buildroot/boot/syslinux/syslinux.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/utils/boot/syslinux/sha256sums.asc +sha256 26d3986d2bea109d5dc0e4f8c4822a459276cf021125e8c9f23c3cca5d8c850e syslinux-6.03.tar.xz diff --git a/buildroot/boot/syslinux/syslinux.mk b/buildroot/boot/syslinux/syslinux.mk new file mode 100644 index 0000000..1349641 --- /dev/null +++ b/buildroot/boot/syslinux/syslinux.mk @@ -0,0 +1,105 @@ +################################################################################ +# +# syslinux to make target msdos/iso9660 filesystems bootable +# +################################################################################ + +SYSLINUX_VERSION = 6.03 +SYSLINUX_SOURCE = syslinux-$(SYSLINUX_VERSION).tar.xz +SYSLINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/boot/syslinux + +SYSLINUX_LICENSE = GPL-2.0+ +SYSLINUX_LICENSE_FILES = COPYING + +SYSLINUX_INSTALL_IMAGES = YES + +# host-util-linux needed to provide libuuid when building host tools +SYSLINUX_DEPENDENCIES = host-nasm host-upx util-linux host-util-linux + +ifeq ($(BR2_TARGET_SYSLINUX_LEGACY_BIOS),y) +SYSLINUX_TARGET += bios +endif + +# The syslinux build system must be forced to use Buildroot's gnu-efi +# package by setting EFIINC, LIBDIR and LIBEFI. Otherwise, it uses its +# own copy of gnu-efi included in syslinux's sources since 6.03 +# release. +ifeq ($(BR2_TARGET_SYSLINUX_EFI),y) +ifeq ($(BR2_ARCH_IS_64),y) +SYSLINUX_EFI_BITS = efi64 +else +SYSLINUX_EFI_BITS = efi32 +endif # 64-bit +SYSLINUX_DEPENDENCIES += gnu-efi +SYSLINUX_TARGET += $(SYSLINUX_EFI_BITS) +SYSLINUX_EFI_ARGS = \ + EFIINC=$(STAGING_DIR)/usr/include/efi \ + LIBDIR=$(STAGING_DIR)/usr/lib \ + LIBEFI=$(STAGING_DIR)/usr/lib/libefi.a +endif # EFI + +# The syslinux tarball comes with pre-compiled binaries. +# Since timestamps might not be in the correct order, a rebuild is +# not always triggered for all the different images. +# Cleanup the mess even before we attempt a build, so we indeed +# build everything from source. +define SYSLINUX_CLEANUP + rm -rf $(@D)/bios $(@D)/efi32 $(@D)/efi64 +endef +SYSLINUX_POST_PATCH_HOOKS += SYSLINUX_CLEANUP + +# syslinux build system has no convenient way to pass CFLAGS, +# and the internal zlib should take precedence so -I shouldn't +# be used. +define SYSLINUX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) \ + CC="$(TARGET_CC)" \ + LD="$(TARGET_LD)" \ + NASM="$(HOST_DIR)/bin/nasm" \ + CC_FOR_BUILD="$(HOSTCC)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \ + $(SYSLINUX_EFI_ARGS) -C $(@D) $(SYSLINUX_TARGET) +endef + +# While the actual bootloader is compiled for the target, several +# utilities for installing the bootloader are meant for the host. +# Repeat the target, otherwise syslinux will try to build everything +# Repeat LD (and CC) as it happens that some binaries are linked at +# install-time. +define SYSLINUX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(SYSLINUX_EFI_ARGS) INSTALLROOT=$(HOST_DIR) \ + CC="$(TARGET_CC)" \ + LD="$(TARGET_LD)" \ + -C $(@D) $(SYSLINUX_TARGET) install +endef + +# That 'syslinux' binary is an installer actually built for the target. +# However, buildroot makes no usage of it, so better delete it than have it +# installed at the wrong place +define SYSLINUX_POST_INSTALL_CLEANUP + rm -rf $(HOST_DIR)/bin/syslinux +endef +SYSLINUX_POST_INSTALL_TARGET_HOOKS += SYSLINUX_POST_INSTALL_CLEANUP + +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_ISOLINUX) += bios/core/isolinux.bin +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_PXELINUX) += bios/core/pxelinux.bin +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_MBR) += bios/mbr/mbr.bin +SYSLINUX_IMAGES-$(BR2_TARGET_SYSLINUX_EFI) += $(SYSLINUX_EFI_BITS)/efi/syslinux.efi + +SYSLINUX_C32 = $(call qstrip,$(BR2_TARGET_SYSLINUX_C32)) + +# We install the c32 modules from the host-installed tree, where they +# are all neatly installed in a single location, while they are +# scattered around everywhere in the build tree. +define SYSLINUX_INSTALL_IMAGES_CMDS + for i in $(SYSLINUX_IMAGES-y); do \ + $(INSTALL) -D -m 0755 $(@D)/$$i $(BINARIES_DIR)/syslinux/$${i##*/}; \ + done + for i in $(SYSLINUX_C32); do \ + $(INSTALL) -D -m 0755 $(HOST_DIR)/share/syslinux/$${i} \ + $(BINARIES_DIR)/syslinux/$${i}; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/boot/ts4800-mbrboot/Config.in b/buildroot/boot/ts4800-mbrboot/Config.in new file mode 100644 index 0000000..7ed0b21 --- /dev/null +++ b/buildroot/boot/ts4800-mbrboot/Config.in @@ -0,0 +1,7 @@ +config BR2_TARGET_TS4800_MBRBOOT + bool "ts4800-mbrboot" + depends on BR2_ARM_CPU_ARMV7A + help + First level bootloader for TS4800 board + + https://github.com/embeddedarm/ts4800-mbrboot diff --git a/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.hash b/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.hash new file mode 100644 index 0000000..04e7072 --- /dev/null +++ b/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 617c70dcf50b7ad35ed3f40666ff2a9a654a5440b522ad73662abdf9f843cee9 ts4800-mbrboot-cf8f7072ed5a4a4e48fcb9841b2e31e519ec5dca.tar.gz diff --git a/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.mk b/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.mk new file mode 100644 index 0000000..3dde6c6 --- /dev/null +++ b/buildroot/boot/ts4800-mbrboot/ts4800-mbrboot.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ts4800-mbrboot +# +################################################################################ + +TS4800_MBRBOOT_VERSION = cf8f7072ed5a4a4e48fcb9841b2e31e519ec5dca +TS4800_MBRBOOT_SITE = $(call github,embeddedarm,ts4800-mbrboot,$(TS4800_MBRBOOT_VERSION)) +TS4800_MBRBOOT_LICENSE = BSD-2-Clause +TS4800_MBRBOOT_LICENSE_FILES = LICENSE +TS4800_MBRBOOT_INSTALL_IMAGES = YES + +define TS4800_MBRBOOT_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define TS4800_MBRBOOT_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/mbrboot.bin $(BINARIES_DIR)/mbrboot.bin +endef + +$(eval $(generic-package)) diff --git a/buildroot/boot/uboot/2015.07/0001-Revert-arch-Make-board-selection-choices-optional.patch b/buildroot/boot/uboot/2015.07/0001-Revert-arch-Make-board-selection-choices-optional.patch new file mode 100644 index 0000000..8b814f2 --- /dev/null +++ b/buildroot/boot/uboot/2015.07/0001-Revert-arch-Make-board-selection-choices-optional.patch @@ -0,0 +1,742 @@ +From ee11fed43e2bd029f71af1e72ab9bb5652f5fc54 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Wed, 29 Jul 2015 20:32:59 +0300 +Subject: [PATCH] Revert "arch: Make board selection choices optional" + +This reverts commit a26cd04920dc069fd6e91abb785426cf6c29f45f. + +Reverted commit caused an issue with "make oldconfig" - default prompt +for target selection was set as No that lead to missing platform +selection by automated scripts like that: +------------------>8------------------ +"yes "" | make oldconfig" on defconfig +------------------>8------------------ + +And that lead to build failure: +------------------>8------------------ +$ make +scripts/kconfig/conf --silentoldconfig Kconfig + CHK include/config.h + UPD include/config.h + GEN include/autoconf.mk +In file included from ./include/common.h:18:0: +include/config.h:5:22: fatal error: configs/.h: No such file or directory + #include + ^ +compilation terminated. +scripts/Makefile.autoconf:72: recipe for target 'include/autoconf.mk' failed +make[1]: *** [include/autoconf.mk] Error 1 +------------------>8------------------ + +Signed-off-by: Alexey Brodkin +--- + arch/arc/Kconfig | 1 - + arch/arm/Kconfig | 1 - + arch/arm/cpu/armv7/exynos/Kconfig | 1 - + arch/arm/cpu/armv7/mx5/Kconfig | 1 - + arch/arm/cpu/armv7/mx6/Kconfig | 1 - + arch/arm/cpu/armv7/omap3/Kconfig | 1 - + arch/arm/cpu/armv7/omap4/Kconfig | 1 - + arch/arm/cpu/armv7/omap5/Kconfig | 1 - + arch/arm/cpu/armv7/rmobile/Kconfig | 1 - + arch/arm/cpu/armv7/s5pc1xx/Kconfig | 1 - + arch/arm/mach-at91/Kconfig | 1 - + arch/arm/mach-bcm283x/Kconfig | 1 - + arch/arm/mach-davinci/Kconfig | 1 - + arch/arm/mach-integrator/Kconfig | 2 -- + arch/arm/mach-keystone/Kconfig | 1 - + arch/arm/mach-kirkwood/Kconfig | 1 - + arch/arm/mach-nomadik/Kconfig | 1 - + arch/arm/mach-orion5x/Kconfig | 1 - + arch/arm/mach-socfpga/Kconfig | 1 - + arch/arm/mach-tegra/Kconfig | 1 - + arch/arm/mach-tegra/tegra114/Kconfig | 1 - + arch/arm/mach-tegra/tegra124/Kconfig | 1 - + arch/arm/mach-tegra/tegra20/Kconfig | 1 - + arch/arm/mach-tegra/tegra30/Kconfig | 1 - + arch/arm/mach-zynq/Kconfig | 1 - + arch/avr32/Kconfig | 1 - + arch/blackfin/Kconfig | 1 - + arch/m68k/Kconfig | 1 - + arch/microblaze/Kconfig | 1 - + arch/mips/Kconfig | 1 - + arch/nds32/Kconfig | 1 - + arch/nios2/Kconfig | 1 - + arch/openrisc/Kconfig | 1 - + arch/powerpc/Kconfig | 1 - + arch/powerpc/cpu/mpc512x/Kconfig | 1 - + arch/powerpc/cpu/mpc5xx/Kconfig | 1 - + arch/powerpc/cpu/mpc5xxx/Kconfig | 1 - + arch/powerpc/cpu/mpc8260/Kconfig | 1 - + arch/powerpc/cpu/mpc83xx/Kconfig | 1 - + arch/powerpc/cpu/mpc85xx/Kconfig | 1 - + arch/powerpc/cpu/mpc86xx/Kconfig | 1 - + arch/powerpc/cpu/mpc8xx/Kconfig | 1 - + arch/powerpc/cpu/ppc4xx/Kconfig | 1 - + arch/sh/Kconfig | 1 - + arch/sparc/Kconfig | 1 - + board/amcc/canyonlands/Kconfig | 1 - + board/coreboot/Kconfig | 1 - + board/dbau1x00/Kconfig | 1 - + board/google/Kconfig | 1 - + board/intel/Kconfig | 1 - + board/micronas/vct/Kconfig | 1 - + board/seco/Kconfig | 2 -- + board/sunxi/Kconfig | 1 - + 53 files changed, 55 deletions(-) + +diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig +index 925e312..640cda8 100644 +--- a/arch/arc/Kconfig ++++ b/arch/arc/Kconfig +@@ -129,7 +129,6 @@ config ARC_CACHE_LINE_SHIFT + + choice + prompt "Target select" +- optional + + config TARGET_TB100 + bool "Support tb100" +diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig +index 9908b43..8eeb46c 100644 +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -64,7 +64,6 @@ config SEMIHOSTING + + choice + prompt "Target select" +- optional + + config ARCH_AT91 + bool "Atmel AT91" +diff --git a/arch/arm/cpu/armv7/exynos/Kconfig b/arch/arm/cpu/armv7/exynos/Kconfig +index 4a7d82f..f2fe748 100644 +--- a/arch/arm/cpu/armv7/exynos/Kconfig ++++ b/arch/arm/cpu/armv7/exynos/Kconfig +@@ -2,7 +2,6 @@ if ARCH_EXYNOS + + choice + prompt "EXYNOS board select" +- optional + + config TARGET_SMDKV310 + select SUPPORT_SPL +diff --git a/arch/arm/cpu/armv7/mx5/Kconfig b/arch/arm/cpu/armv7/mx5/Kconfig +index 9f250c6..2d6c0ce 100644 +--- a/arch/arm/cpu/armv7/mx5/Kconfig ++++ b/arch/arm/cpu/armv7/mx5/Kconfig +@@ -12,7 +12,6 @@ config MX53 + + choice + prompt "MX5 board select" +- optional + + config TARGET_USBARMORY + bool "Support USB armory" +diff --git a/arch/arm/cpu/armv7/mx6/Kconfig b/arch/arm/cpu/armv7/mx6/Kconfig +index 10908c4..662596f 100644 +--- a/arch/arm/cpu/armv7/mx6/Kconfig ++++ b/arch/arm/cpu/armv7/mx6/Kconfig +@@ -27,7 +27,6 @@ config MX6SX + + choice + prompt "MX6 board select" +- optional + + config TARGET_SECOMX6 + bool "Support secomx6 boards" +diff --git a/arch/arm/cpu/armv7/omap3/Kconfig b/arch/arm/cpu/armv7/omap3/Kconfig +index b32a6b0..cc82c50 100644 +--- a/arch/arm/cpu/armv7/omap3/Kconfig ++++ b/arch/arm/cpu/armv7/omap3/Kconfig +@@ -2,7 +2,6 @@ if OMAP34XX + + choice + prompt "OMAP3 board select" +- optional + + config TARGET_AM3517_EVM + bool "AM3517 EVM" +diff --git a/arch/arm/cpu/armv7/omap4/Kconfig b/arch/arm/cpu/armv7/omap4/Kconfig +index df27ea1..eccf897 100644 +--- a/arch/arm/cpu/armv7/omap4/Kconfig ++++ b/arch/arm/cpu/armv7/omap4/Kconfig +@@ -2,7 +2,6 @@ if OMAP44XX + + choice + prompt "OMAP4 board select" +- optional + + config TARGET_DUOVERO + bool "OMAP4430 Gumstix Duovero" +diff --git a/arch/arm/cpu/armv7/omap5/Kconfig b/arch/arm/cpu/armv7/omap5/Kconfig +index 20c3bd9..aca862d 100644 +--- a/arch/arm/cpu/armv7/omap5/Kconfig ++++ b/arch/arm/cpu/armv7/omap5/Kconfig +@@ -2,7 +2,6 @@ if OMAP54XX + + choice + prompt "OMAP5 board select" +- optional + + config TARGET_CM_T54 + bool "CompuLab CM-T54" +diff --git a/arch/arm/cpu/armv7/rmobile/Kconfig b/arch/arm/cpu/armv7/rmobile/Kconfig +index ef56286..638b63d 100644 +--- a/arch/arm/cpu/armv7/rmobile/Kconfig ++++ b/arch/arm/cpu/armv7/rmobile/Kconfig +@@ -2,7 +2,6 @@ if RMOBILE + + choice + prompt "Renesus ARM SoCs board select" +- optional + + config TARGET_ARMADILLO_800EVA + bool "armadillo 800 eva board" +diff --git a/arch/arm/cpu/armv7/s5pc1xx/Kconfig b/arch/arm/cpu/armv7/s5pc1xx/Kconfig +index 792ef59..65cc9eb 100644 +--- a/arch/arm/cpu/armv7/s5pc1xx/Kconfig ++++ b/arch/arm/cpu/armv7/s5pc1xx/Kconfig +@@ -2,7 +2,6 @@ if ARCH_S5PC1XX + + choice + prompt "S5PC1XX board select" +- optional + + config TARGET_S5P_GONI + bool "S5P Goni board" +diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig +index bbf4228..5dc2cb2 100644 +--- a/arch/arm/mach-at91/Kconfig ++++ b/arch/arm/mach-at91/Kconfig +@@ -2,7 +2,6 @@ if ARCH_AT91 + + choice + prompt "Atmel AT91 board select" +- optional + + config TARGET_AT91RM9200EK + bool "Atmel AT91RM9200 evaluation kit" +diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig +index 2315a13..d40f505 100644 +--- a/arch/arm/mach-bcm283x/Kconfig ++++ b/arch/arm/mach-bcm283x/Kconfig +@@ -3,7 +3,6 @@ menu "Broadcom BCM283X family" + + choice + prompt "Broadcom BCM283X board select" +- optional + + config TARGET_RPI + bool "Raspberry Pi" +diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig +index e6cb390..3ef55d3 100644 +--- a/arch/arm/mach-davinci/Kconfig ++++ b/arch/arm/mach-davinci/Kconfig +@@ -2,7 +2,6 @@ if ARCH_DAVINCI + + choice + prompt "DaVinci board select" +- optional + + config TARGET_ENBW_CMC + bool "EnBW CMC board" +diff --git a/arch/arm/mach-integrator/Kconfig b/arch/arm/mach-integrator/Kconfig +index c54d69d..8ffc544 100644 +--- a/arch/arm/mach-integrator/Kconfig ++++ b/arch/arm/mach-integrator/Kconfig +@@ -3,7 +3,6 @@ menu "Integrator Options" + + choice + prompt "Integrator platform select" +- optional + + config ARCH_INTEGRATOR_AP + bool "Support Integrator/AP platform" +@@ -19,7 +18,6 @@ config ARCH_CINTEGRATOR + + choice + prompt "Integrator core module select" +- optional + + config CM720T + bool "Core Module for ARM720T" +diff --git a/arch/arm/mach-keystone/Kconfig b/arch/arm/mach-keystone/Kconfig +index 67f1a33..134ae87 100644 +--- a/arch/arm/mach-keystone/Kconfig ++++ b/arch/arm/mach-keystone/Kconfig +@@ -2,7 +2,6 @@ if ARCH_KEYSTONE + + choice + prompt "TI Keystone board select" +- optional + + config TARGET_K2HK_EVM + bool "TI Keystone 2 Kepler/Hawking EVM" +diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig +index 1261885..45c6687 100644 +--- a/arch/arm/mach-kirkwood/Kconfig ++++ b/arch/arm/mach-kirkwood/Kconfig +@@ -2,7 +2,6 @@ if KIRKWOOD + + choice + prompt "Marvell Kirkwood board select" +- optional + + config TARGET_OPENRD + bool "Marvell OpenRD Board" +diff --git a/arch/arm/mach-nomadik/Kconfig b/arch/arm/mach-nomadik/Kconfig +index ba72a41..265f336 100644 +--- a/arch/arm/mach-nomadik/Kconfig ++++ b/arch/arm/mach-nomadik/Kconfig +@@ -2,7 +2,6 @@ if ARCH_NOMADIK + + choice + prompt "Nomadik board select" +- optional + + config NOMADIK_NHK8815 + bool "ST 8815 Nomadik Hardware Kit" +diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig +index 7644b8d..291c511 100644 +--- a/arch/arm/mach-orion5x/Kconfig ++++ b/arch/arm/mach-orion5x/Kconfig +@@ -2,7 +2,6 @@ if ORION5X + + choice + prompt "Marvell Orion board select" +- optional + + config TARGET_EDMINIV2 + bool "LaCie Ethernet Disk mini V2" +diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig +index e46c348..204efca 100644 +--- a/arch/arm/mach-socfpga/Kconfig ++++ b/arch/arm/mach-socfpga/Kconfig +@@ -2,7 +2,6 @@ if ARCH_SOCFPGA + + choice + prompt "Altera SOCFPGA board select" +- optional + + config TARGET_SOCFPGA_ARRIA5 + bool "Altera SOCFPGA Arria V" +diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig +index 54bd648..ef77c84 100644 +--- a/arch/arm/mach-tegra/Kconfig ++++ b/arch/arm/mach-tegra/Kconfig +@@ -2,7 +2,6 @@ if TEGRA + + choice + prompt "Tegra SoC select" +- optional + + config TEGRA20 + bool "Tegra20 family" +diff --git a/arch/arm/mach-tegra/tegra114/Kconfig b/arch/arm/mach-tegra/tegra114/Kconfig +index 1047b92..31012bc 100644 +--- a/arch/arm/mach-tegra/tegra114/Kconfig ++++ b/arch/arm/mach-tegra/tegra114/Kconfig +@@ -2,7 +2,6 @@ if TEGRA114 + + choice + prompt "Tegra114 board select" +- optional + + config TARGET_DALMORE + bool "NVIDIA Tegra114 Dalmore evaluation board" +diff --git a/arch/arm/mach-tegra/tegra124/Kconfig b/arch/arm/mach-tegra/tegra124/Kconfig +index f3324ff..86c1301 100644 +--- a/arch/arm/mach-tegra/tegra124/Kconfig ++++ b/arch/arm/mach-tegra/tegra124/Kconfig +@@ -2,7 +2,6 @@ if TEGRA124 + + choice + prompt "Tegra124 board select" +- optional + + config TARGET_JETSON_TK1 + bool "NVIDIA Tegra124 Jetson TK1 board" +diff --git a/arch/arm/mach-tegra/tegra20/Kconfig b/arch/arm/mach-tegra/tegra20/Kconfig +index 1bb8dff..7f09f81 100644 +--- a/arch/arm/mach-tegra/tegra20/Kconfig ++++ b/arch/arm/mach-tegra/tegra20/Kconfig +@@ -2,7 +2,6 @@ if TEGRA20 + + choice + prompt "Tegra20 board select" +- optional + + config TARGET_HARMONY + bool "NVIDIA Tegra20 Harmony evaluation board" +diff --git a/arch/arm/mach-tegra/tegra30/Kconfig b/arch/arm/mach-tegra/tegra30/Kconfig +index e78331e..3abdc7b 100644 +--- a/arch/arm/mach-tegra/tegra30/Kconfig ++++ b/arch/arm/mach-tegra/tegra30/Kconfig +@@ -2,7 +2,6 @@ if TEGRA30 + + choice + prompt "Tegra30 board select" +- optional + + config TARGET_APALIS_T30 + bool "Toradex Apalis T30 board" +diff --git a/arch/arm/mach-zynq/Kconfig b/arch/arm/mach-zynq/Kconfig +index 1de5b07..6b0e295 100644 +--- a/arch/arm/mach-zynq/Kconfig ++++ b/arch/arm/mach-zynq/Kconfig +@@ -10,7 +10,6 @@ config ZYNQ_CUSTOM_INIT + + choice + prompt "Xilinx Zynq board select" +- optional + + config TARGET_ZYNQ_ZED + bool "Zynq ZedBoard" +diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig +index eb33774..801b9cc 100644 +--- a/arch/avr32/Kconfig ++++ b/arch/avr32/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_ATNGW100 + bool "Support atngw100" +diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig +index 0a2fb4d..31913fe 100644 +--- a/arch/blackfin/Kconfig ++++ b/arch/blackfin/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_BCT_BRETTL2 + bool "Support bct-brettl2" +diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig +index 26509b7..69cb0f7 100644 +--- a/arch/m68k/Kconfig ++++ b/arch/m68k/Kconfig +@@ -114,7 +114,6 @@ config M548x + + choice + prompt "Target select" +- optional + + config TARGET_M52277EVB + bool "Support M52277EVB" +diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig +index 077b2a7..6f419f0 100644 +--- a/arch/microblaze/Kconfig ++++ b/arch/microblaze/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_MICROBLAZE_GENERIC + bool "Support microblaze-generic" +diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig +index 7f7e258..87b94ac 100644 +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -10,7 +10,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_QEMU_MIPS + bool "Support qemu-mips" +diff --git a/arch/nds32/Kconfig b/arch/nds32/Kconfig +index 98b0282..81b0a01 100644 +--- a/arch/nds32/Kconfig ++++ b/arch/nds32/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_ADP_AG101 + bool "Support adp-ag101" +diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig +index 8ae7f6e..b3be7b5 100644 +--- a/arch/nios2/Kconfig ++++ b/arch/nios2/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_NIOS2_GENERIC + bool "Support nios2-generic" +diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig +index 11014d1..4d62b4c 100644 +--- a/arch/openrisc/Kconfig ++++ b/arch/openrisc/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "Target select" +- optional + + config TARGET_OPENRISC_GENERIC + bool "Support openrisc-generic" +diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig +index 3b3f446..8e5a3e2 100644 +--- a/arch/powerpc/Kconfig ++++ b/arch/powerpc/Kconfig +@@ -6,7 +6,6 @@ config SYS_ARCH + + choice + prompt "CPU select" +- optional + + config MPC512X + bool "MPC512X" +diff --git a/arch/powerpc/cpu/mpc512x/Kconfig b/arch/powerpc/cpu/mpc512x/Kconfig +index 53450ae..a0f0ede 100644 +--- a/arch/powerpc/cpu/mpc512x/Kconfig ++++ b/arch/powerpc/cpu/mpc512x/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_PDM360NG + bool "Support pdm360ng" +diff --git a/arch/powerpc/cpu/mpc5xx/Kconfig b/arch/powerpc/cpu/mpc5xx/Kconfig +index 5275447..aad4a7c 100644 +--- a/arch/powerpc/cpu/mpc5xx/Kconfig ++++ b/arch/powerpc/cpu/mpc5xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_CMI_MPC5XX + bool "Support cmi_mpc5xx" +diff --git a/arch/powerpc/cpu/mpc5xxx/Kconfig b/arch/powerpc/cpu/mpc5xxx/Kconfig +index 5d49228..eec9d7d 100644 +--- a/arch/powerpc/cpu/mpc5xxx/Kconfig ++++ b/arch/powerpc/cpu/mpc5xxx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_A3M071 + bool "Support a3m071" +diff --git a/arch/powerpc/cpu/mpc8260/Kconfig b/arch/powerpc/cpu/mpc8260/Kconfig +index e93732d..55941c8 100644 +--- a/arch/powerpc/cpu/mpc8260/Kconfig ++++ b/arch/powerpc/cpu/mpc8260/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_KM82XX + bool "Support km82xx" +diff --git a/arch/powerpc/cpu/mpc83xx/Kconfig b/arch/powerpc/cpu/mpc83xx/Kconfig +index 3fb901f..88a3bd6 100644 +--- a/arch/powerpc/cpu/mpc83xx/Kconfig ++++ b/arch/powerpc/cpu/mpc83xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_MPC8308_P1M + bool "Support mpc8308_p1m" +diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig +index 3e8d0b1..aff5fdb 100644 +--- a/arch/powerpc/cpu/mpc85xx/Kconfig ++++ b/arch/powerpc/cpu/mpc85xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_SBC8548 + bool "Support sbc8548" +diff --git a/arch/powerpc/cpu/mpc86xx/Kconfig b/arch/powerpc/cpu/mpc86xx/Kconfig +index fe1859d..14e8b1a 100644 +--- a/arch/powerpc/cpu/mpc86xx/Kconfig ++++ b/arch/powerpc/cpu/mpc86xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_SBC8641D + bool "Support sbc8641d" +diff --git a/arch/powerpc/cpu/mpc8xx/Kconfig b/arch/powerpc/cpu/mpc8xx/Kconfig +index 79cee35..e8bcbe9 100644 +--- a/arch/powerpc/cpu/mpc8xx/Kconfig ++++ b/arch/powerpc/cpu/mpc8xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_TQM823L + bool "Support TQM823L" +diff --git a/arch/powerpc/cpu/ppc4xx/Kconfig b/arch/powerpc/cpu/ppc4xx/Kconfig +index 10b86e0..4d5954a 100644 +--- a/arch/powerpc/cpu/ppc4xx/Kconfig ++++ b/arch/powerpc/cpu/ppc4xx/Kconfig +@@ -6,7 +6,6 @@ config SYS_CPU + + choice + prompt "Target select" +- optional + + config TARGET_CSB272 + bool "Support csb272" +diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig +index 6ac22af..ff8f5b5 100644 +--- a/arch/sh/Kconfig ++++ b/arch/sh/Kconfig +@@ -29,7 +29,6 @@ config SH_32BIT + + choice + prompt "Target select" +- optional + + config TARGET_RSK7203 + bool "RSK+ 7203" +diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig +index 04dc08f..2df09b2 100644 +--- a/arch/sparc/Kconfig ++++ b/arch/sparc/Kconfig +@@ -14,7 +14,6 @@ config LEON3 + + choice + prompt "Board select" +- optional + + config TARGET_GRSIM_LEON2 + bool "GRSIM simulating a LEON2 board" +diff --git a/board/amcc/canyonlands/Kconfig b/board/amcc/canyonlands/Kconfig +index a655dbc..ef66ad4 100644 +--- a/board/amcc/canyonlands/Kconfig ++++ b/board/amcc/canyonlands/Kconfig +@@ -11,7 +11,6 @@ config SYS_CONFIG_NAME + + choice BOARD_TYPE + prompt "Select which board to build for" +- optional + + config CANYONLANDS + bool "Glacier" +diff --git a/board/coreboot/Kconfig b/board/coreboot/Kconfig +index ede6065..dc9b70f 100644 +--- a/board/coreboot/Kconfig ++++ b/board/coreboot/Kconfig +@@ -8,7 +8,6 @@ if VENDOR_COREBOOT + + choice + prompt "Mainboard model" +- optional + + config TARGET_COREBOOT + bool "coreboot" +diff --git a/board/dbau1x00/Kconfig b/board/dbau1x00/Kconfig +index b813adb..1286e45 100644 +--- a/board/dbau1x00/Kconfig ++++ b/board/dbau1x00/Kconfig +@@ -13,7 +13,6 @@ menu "dbau1x00 board options" + + choice + prompt "Select au1x00 SoC type" +- optional + + config DBAU1100 + bool "Select AU1100" +diff --git a/board/google/Kconfig b/board/google/Kconfig +index e9559c9..302f68e 100644 +--- a/board/google/Kconfig ++++ b/board/google/Kconfig +@@ -8,7 +8,6 @@ if VENDOR_GOOGLE + + choice + prompt "Mainboard model" +- optional + + config TARGET_CHROMEBOOK_LINK + bool "Chromebook link" +diff --git a/board/intel/Kconfig b/board/intel/Kconfig +index 3d9ecf0..7fe21b9 100644 +--- a/board/intel/Kconfig ++++ b/board/intel/Kconfig +@@ -8,7 +8,6 @@ if VENDOR_INTEL + + choice + prompt "Mainboard model" +- optional + + config TARGET_CROWNBAY + bool "Crown Bay" +diff --git a/board/micronas/vct/Kconfig b/board/micronas/vct/Kconfig +index c518079..288a1ae 100644 +--- a/board/micronas/vct/Kconfig ++++ b/board/micronas/vct/Kconfig +@@ -13,7 +13,6 @@ menu "vct board options" + + choice + prompt "Board variant" +- optional + + config VCT_PLATINUM + bool "Enable VCT_PLATINUM" +diff --git a/board/seco/Kconfig b/board/seco/Kconfig +index af16697..dcb1ac8 100644 +--- a/board/seco/Kconfig ++++ b/board/seco/Kconfig +@@ -2,7 +2,6 @@ if TARGET_SECOMX6 + + choice + prompt "SECO i.MX6 Board variant" +- optional + + config SECOMX6_Q7 + bool "Q7" +@@ -17,7 +16,6 @@ endchoice + + choice + prompt "SECO i.MX6 SoC variant" +- optional + + config SECOMX6Q + bool "i.MX6Q" +diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig +index 2a1cd3c..808de26 100644 +--- a/board/sunxi/Kconfig ++++ b/board/sunxi/Kconfig +@@ -18,7 +18,6 @@ config SUNXI_GEN_SUN6I + + choice + prompt "Sunxi SoC Variant" +- optional + + config MACH_SUN4I + bool "sun4i (Allwinner A10)" +-- +2.4.3 + diff --git a/buildroot/boot/uboot/2016.07/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch b/buildroot/boot/uboot/2016.07/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch new file mode 100644 index 0000000..eded9a3 --- /dev/null +++ b/buildroot/boot/uboot/2016.07/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch @@ -0,0 +1,39 @@ +From 7c8d81605302e7d7fdd3e7d8eb69302bddc64a2c Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Fri, 16 Sep 2016 12:12:26 +0300 +Subject: [PATCH] arc: Use -mcpu=XXX instead of obsolete -marcXXX + +With newer ARC tools old way of CPU specification gets obsolete, +so we're switching to newer and more common way of setting "-mcpu". + +Signed-off-by: Alexey Brodkin +--- + arch/arc/config.mk | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/arch/arc/config.mk b/arch/arc/config.mk +index 7c974f0..13676bd 100644 +--- a/arch/arc/config.mk ++++ b/arch/arc/config.mk +@@ -31,15 +31,15 @@ CONFIG_MMU = 1 + endif + + ifdef CONFIG_CPU_ARC750D +-PLATFORM_CPPFLAGS += -marc700 ++PLATFORM_CPPFLAGS += -mcpu=arc700 + endif + + ifdef CONFIG_CPU_ARC770D +-PLATFORM_CPPFLAGS += -marc700 -mlock -mswape ++PLATFORM_CPPFLAGS += -mcpu=arc700 -mlock -mswape + endif + + ifdef CONFIG_CPU_ARCEM6 +-PLATFORM_CPPFLAGS += -marcem ++PLATFORM_CPPFLAGS += -mcpu=arcem + endif + + ifdef CONFIG_CPU_ARCHS34 +-- +2.7.4 + diff --git a/buildroot/boot/uboot/2016.09.01/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch b/buildroot/boot/uboot/2016.09.01/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch new file mode 100644 index 0000000..eded9a3 --- /dev/null +++ b/buildroot/boot/uboot/2016.09.01/0001-arc-Use-mcpu-XXX-instead-of-obsolete-marcXXX.patch @@ -0,0 +1,39 @@ +From 7c8d81605302e7d7fdd3e7d8eb69302bddc64a2c Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Fri, 16 Sep 2016 12:12:26 +0300 +Subject: [PATCH] arc: Use -mcpu=XXX instead of obsolete -marcXXX + +With newer ARC tools old way of CPU specification gets obsolete, +so we're switching to newer and more common way of setting "-mcpu". + +Signed-off-by: Alexey Brodkin +--- + arch/arc/config.mk | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/arch/arc/config.mk b/arch/arc/config.mk +index 7c974f0..13676bd 100644 +--- a/arch/arc/config.mk ++++ b/arch/arc/config.mk +@@ -31,15 +31,15 @@ CONFIG_MMU = 1 + endif + + ifdef CONFIG_CPU_ARC750D +-PLATFORM_CPPFLAGS += -marc700 ++PLATFORM_CPPFLAGS += -mcpu=arc700 + endif + + ifdef CONFIG_CPU_ARC770D +-PLATFORM_CPPFLAGS += -marc700 -mlock -mswape ++PLATFORM_CPPFLAGS += -mcpu=arc700 -mlock -mswape + endif + + ifdef CONFIG_CPU_ARCEM6 +-PLATFORM_CPPFLAGS += -marcem ++PLATFORM_CPPFLAGS += -mcpu=arcem + endif + + ifdef CONFIG_CPU_ARCHS34 +-- +2.7.4 + diff --git a/buildroot/boot/uboot/Config.in b/buildroot/boot/uboot/Config.in new file mode 100644 index 0000000..264f343 --- /dev/null +++ b/buildroot/boot/uboot/Config.in @@ -0,0 +1,465 @@ +config BR2_TARGET_UBOOT + bool "U-Boot" + help + Build "Das U-Boot" Boot Monitor + +if BR2_TARGET_UBOOT +choice + prompt "Build system" + default BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + +config BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + bool "Legacy" + help + Select this option if you use an old U-Boot (older than 2015.04), + so that we use the old build system. + +config BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + bool "Kconfig" + help + Select this option if you use a recent U-Boot version (2015.04 or + newer), so that we use the Kconfig build system. + +endchoice + +if BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY +config BR2_TARGET_UBOOT_BOARDNAME + string "U-Boot board name" + help + One of U-Boot supported boards to be built. + This will be suffixed with _config to meet U-Boot standard naming. + See boards.cfg in U-Boot source code for the list of available + configurations. +endif + +choice + prompt "U-Boot Version" + help + Select the specific U-Boot version you want to use + +config BR2_TARGET_UBOOT_LATEST_VERSION + bool "2018.01" + +config BR2_TARGET_UBOOT_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official versions + +config BR2_TARGET_UBOOT_CUSTOM_TARBALL + bool "Custom tarball" + +config BR2_TARGET_UBOOT_CUSTOM_GIT + bool "Custom Git repository" + +config BR2_TARGET_UBOOT_CUSTOM_HG + bool "Custom Mercurial repository" + +config BR2_TARGET_UBOOT_CUSTOM_SVN + bool "Custom Subversion repository" + +endchoice + +config BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE + string "U-Boot version" + depends on BR2_TARGET_UBOOT_CUSTOM_VERSION + +config BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION + string "URL of custom U-Boot tarball" + depends on BR2_TARGET_UBOOT_CUSTOM_TARBALL + +if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN + +config BR2_TARGET_UBOOT_CUSTOM_REPO_URL + string "URL of custom repository" + default BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL \ + if BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL != "" # legacy + +config BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION + string "Custom repository version" + default BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION \ + if BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION != "" # legacy + help + Revision to use in the typical format used by Git/Mercurial/Subversion + E.G. a sha id, a tag, branch, .. + +endif + +config BR2_TARGET_UBOOT_VERSION + string + default "2018.01" if BR2_TARGET_UBOOT_LATEST_VERSION + default BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \ + if BR2_TARGET_UBOOT_CUSTOM_VERSION + default "custom" if BR2_TARGET_UBOOT_CUSTOM_TARBALL + default BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION \ + if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN + +config BR2_TARGET_UBOOT_PATCH + string "Custom U-Boot patches" + default BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != "" # legacy + help + A space-separated list of patches to apply to U-Boot. + Each patch can be described as an URL, a local file path, + or a directory. In the case of a directory, all files + matching *.patch in the directory will be applied. + + Most users may leave this empty + +if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG +choice + prompt "U-Boot configuration" + default BR2_TARGET_UBOOT_USE_DEFCONFIG + +config BR2_TARGET_UBOOT_USE_DEFCONFIG + bool "Using an in-tree board defconfig file" + +config BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG + bool "Using a custom board (def)config file" + +endchoice + +config BR2_TARGET_UBOOT_BOARD_DEFCONFIG + string "Board defconfig" + depends on BR2_TARGET_UBOOT_USE_DEFCONFIG + help + Name of the board for which U-Boot should be built, without + the _defconfig suffix. + +config BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG + help + Path to the U-Boot configuration file. + +config BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main U-Boot configuration file. +endif + +config BR2_TARGET_UBOOT_NEEDS_DTC + bool "U-Boot needs dtc" + select BR2_PACKAGE_HOST_DTC + help + Select this option if your U-Boot board configuration + requires the Device Tree compiler to be available. + +config BR2_TARGET_UBOOT_NEEDS_PYLIBFDT + bool "U-Boot needs pylibfdt" + help + Select this option if your U-Boot board configuration + requires the Python libfdt library to be available. + +config BR2_TARGET_UBOOT_NEEDS_OPENSSL + bool "U-Boot needs OpenSSL" + help + Select this option if your U-Boot board configuration + requires OpenSSL to be available on the host. This is + typically the case when the board configuration has + CONFIG_FIT_SIGNATURE enabled. + +config BR2_TARGET_UBOOT_NEEDS_ATF_BL31 + bool "U-Boot needs ATF BL31" + depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE + depends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33 + select BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31 + help + Some specific platforms (such as Allwinner A64/H5) + encapsulate the BL31 part of ATF inside U-Boot. This option + makes sure ATF gets built prior to U-Boot, and that the BL31 + variable pointing to ATF's BL31 binary, is passed during the + Buildroot build. + +menu "U-Boot binary format" + +config BR2_TARGET_UBOOT_FORMAT_AIS + bool "u-boot.ais" + help + AIS (Application Image Script) is a format defined by TI. + It is required to load code/data on OMAP-L1 processors. + u-boot.ais contains U-Boot with the SPL support. + +config BR2_TARGET_UBOOT_FORMAT_BIN + bool "u-boot.bin" + default y + +config BR2_TARGET_UBOOT_FORMAT_DTB_BIN + bool "u-boot-dtb.bin" + +config BR2_TARGET_UBOOT_FORMAT_DTB_IMG + bool "u-boot-dtb.img" + +config BR2_TARGET_UBOOT_FORMAT_IMG + bool "u-boot.img" + +config BR2_TARGET_UBOOT_FORMAT_IMX + bool "u-boot.imx" + +config BR2_TARGET_UBOOT_FORMAT_NAND_BIN + bool "u-boot-nand.bin" + +config BR2_TARGET_UBOOT_FORMAT_KWB + depends on BR2_arm + bool "u-boot.kwb (Marvell)" + +config BR2_TARGET_UBOOT_FORMAT_LDR + depends on BR2_bfin + bool "u-boot.ldr" + +config BR2_TARGET_UBOOT_FORMAT_ELF + bool "u-boot.elf" + +config BR2_TARGET_UBOOT_FORMAT_SB + depends on BR2_arm + bool "u-boot.sb (Freescale i.MX28)" + +config BR2_TARGET_UBOOT_FORMAT_SD + depends on BR2_arm + bool "u-boot.sd (Freescale i.MX28)" + help + This is Freescale i.MX28 SB format, with a header for booting + from an SD card. + + U-boot includes an mxsboot tool to generate this format, + starting from 2011.12. + + See doc/README.mxs (or doc/README.mx28_common before 2013.07) + +config BR2_TARGET_UBOOT_FORMAT_NAND + depends on BR2_arm + bool "u-boot.nand (Freescale i.MX28)" + help + This is Freescale i.MX28 BootStream format (.sb), with a header + for booting from a NAND flash. + + U-boot includes an mxsboot tool to generate this format, + starting from 2011.12. + + There are two possibilities when preparing an image writable to + NAND flash: + 1) The NAND was not written at all yet or the BCB (Boot Control + Blocks) is broken. In this case, the NAND image 'u-boot.nand' + needs to written. + 2) The NAND flash was already written with a good BCB. This + applies after 'u-boot.nand' was correctly written. There is no + need to write the BCB again. In this case, the bootloader can be + upgraded by writing 'u-boot.sb'. + + To satisfy both cases, the 'u-boot.nand' image obtained from + mxsboot as well as the U-Boot make target 'u-boot.sb' are copied + to the binaries directory. + + See doc/README.mxs (or doc/README.mx28_common before 2013.07) + +if BR2_TARGET_UBOOT_FORMAT_NAND + +config BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE + int "NAND page size" + default 2048 + help + The NAND page size of the targets NAND flash in bytes as a + decimal integer value. + + The value provided here is passed to the -w option of mxsboot. + +config BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE + int "NAND OOB size" + default 64 + help + The NAND OOB size of the targets NAND flash in bytes as a + decimal integer value. + + The value provided here is passed to the -o option of mxsboot. + +config BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE + int "NAND erase size" + default 131072 + help + The NAND eraseblock size of the targets NAND flash in bytes as + a decimal integer value. + + The value provided here is passed to the -e option of mxsboot. + +endif + +config BR2_TARGET_UBOOT_FORMAT_CUSTOM + bool "Custom (specify below)" + help + On some platforms, the standard U-Boot binary is not called + u-boot.bin, but u-boot.bin. If this is your case, + you should select this option and specify the correct name(s) + in BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME. + +config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME + string "U-Boot binary format: custom names" + depends on BR2_TARGET_UBOOT_FORMAT_CUSTOM + help + In case the U-Boot binary for the target platform is not among + the default names, one or more custom names can be listed here. + Use space to separate multiple names. + Example: + u-boot_magic.bin + +endmenu + +config BR2_TARGET_UBOOT_OMAP_IFT + depends on BR2_TARGET_UBOOT_FORMAT_BIN + depends on BR2_arm || BR2_armeb + select BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS + bool "produce a .ift signed image (OMAP)" + help + Use gpsign to produce an image of u-boot.bin signed with + a Configuration Header for booting on OMAP processors. + This allows U-Boot to boot without the need for an + intermediate bootloader (e.g. x-loader) if it is written + on the first sector of the boot medium. + This only works for some media, such as NAND. Check your + chip documentation for details. You might also want to + read the documentation of gpsign, the tool that generates + the .ift image, at: + https://github.com/nmenon/omap-u-boot-utils/blob/master/README + +if BR2_TARGET_UBOOT_OMAP_IFT + +config BR2_TARGET_UBOOT_OMAP_IFT_CONFIG + string "gpsign Configuration Header config file" + help + The Configuration Header (CH) config file defines the + desired content of the CH for the signed image. + It usually contains external RAM settings and + possibly other external devices initialization. + The omap-u-boot-utils software contains example + configuration files for some boards: + https://github.com/nmenon/omap-u-boot-utils/tree/master/configs + +endif + +config BR2_TARGET_UBOOT_SPL + bool "Install U-Boot SPL binary image" + depends on !BR2_TARGET_XLOADER + help + Install the U-Boot SPL binary image to the images + directory. + SPL is a first stage bootloader loaded into internal + memory in charge of enabling and configuring the + external memory (DDR), and load the u-boot program + into DDR. + +config BR2_TARGET_UBOOT_SPL_NAME + string "U-Boot SPL/TPL binary image name(s)" + default "spl/u-boot-spl.bin" + depends on BR2_TARGET_UBOOT_SPL + help + A space-separated list of SPL/TPL binaries, generated during + u-boot build. For most platform SPL name is spl/u-boot-spl.bin + and TPL name is tpl/u-boot-tpl.bin but not always. SPL name is + MLO on OMAP and SPL on i.MX6 for example. + +config BR2_TARGET_UBOOT_ZYNQ_IMAGE + bool "Generate image for Xilinx Zynq" + depends on BR2_arm + depends on BR2_TARGET_UBOOT_SPL + depends on BR2_TARGET_UBOOT_FORMAT_DTB_IMG + help + Generate the BOOT.BIN file from U-Boot's SPL. The image + boots the Xilinx Zynq chip without any FPGA bitstream. + A bitstream can be loaded by the U-Boot. The SPL searchs + for u-boot-dtb.img file so this U-Boot format is required + to be set. + +config BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC + bool "CRC image for Altera SoC FPGA (mkpimage)" + depends on BR2_arm + depends on BR2_TARGET_UBOOT_SPL || BR2_TARGET_UBOOT_FORMAT_DTB_BIN + help + Pass the U-Boot image through the mkpimage tool to enable + booting on the Altera SoC FPGA based platforms. + + On some platforms, it's the SPL that needs to be passed + through mkpimage. On some other platforms there is no SPL + because the internal SRAM is big enough to store the full + U-Boot. In this case, it's directly the full U-Boot image + that is passed through mkpimage. + + If BR2_TARGET_UBOOT_SPL is enabled then + BR2_TARGET_UBOOT_SPL_NAME is converted by mkpimage using + header version 0. + + Otherwise the full u-boot-dtb.bin is converted using + mkpimage header version 1. + + In either case the resulting file will be given a .crc + extension. + +menuconfig BR2_TARGET_UBOOT_ENVIMAGE + bool "Environment image" + help + Generate a valid binary environment image from a text file + describing the key=value pairs of the environment. + + The environment image will be called uboot-env.bin. + +if BR2_TARGET_UBOOT_ENVIMAGE + +config BR2_TARGET_UBOOT_ENVIMAGE_SOURCE + string "Source files for environment" + help + Text files describing the environment. Files should have + lines of the form var=value, one per line. Blank lines and + lines starting with a # are ignored. + + Multiple source files are concatenated in the order listed. + +config BR2_TARGET_UBOOT_ENVIMAGE_SIZE + string "Size of environment" + help + Size of envronment, can be prefixed with 0x for hexadecimal + values. + +config BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT + bool "Environment has two copies" + help + Some platforms define in their U-Boot configuration that the + U-Boot environment should be duplicated in two locations (for + extra safety). Check your U-Boot configuration for the + CONFIG_ENV_ADDR_REDUND and CONFIG_ENV_SIZE_REDUND settings to + see if this is the case for your platform. + + If it is the case, then you should enable this option to + ensure that the U-Boot environment image generated by + Buildroot is compatible with the "redundant environment" + mechanism of U-Boot. + +endif # BR2_TARGET_UBOOT_ENVIMAGE + +config BR2_TARGET_UBOOT_BOOT_SCRIPT + bool "Generate a U-Boot boot script" + help + Generate a U-Boot boot script, given a file listing U-Boot + commands to be executed at boot time. The generated boot + script will be called 'boot.scr'. + +if BR2_TARGET_UBOOT_BOOT_SCRIPT + +config BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE + string "U-Boot boot script source" + help + Source file to generate the U-Boot boot script. + +endif + +if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG + +config BR2_TARGET_UBOOT_CUSTOM_DTS_PATH + string "Device Tree Source file paths" + help + Space-separated list of paths to device tree source files + that will be copied to arch/ARCH/dts/ before starting the + build. + + To use this device tree source file, the U-Boot configuration + file must refer to it. + +endif + +endif # BR2_TARGET_UBOOT diff --git a/buildroot/boot/uboot/uboot.hash b/buildroot/boot/uboot/uboot.hash new file mode 100644 index 0000000..9425df3 --- /dev/null +++ b/buildroot/boot/uboot/uboot.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 938f597394b33e82e5af8c98bd5ea1a238f61892aabef36384adbf7ca5b52dda u-boot-2018.01.tar.bz2 diff --git a/buildroot/boot/uboot/uboot.mk b/buildroot/boot/uboot/uboot.mk new file mode 100644 index 0000000..27946d9 --- /dev/null +++ b/buildroot/boot/uboot/uboot.mk @@ -0,0 +1,418 @@ +################################################################################ +# +# uboot +# +################################################################################ + +UBOOT_VERSION = $(call qstrip,$(BR2_TARGET_UBOOT_VERSION)) +UBOOT_BOARD_NAME = $(call qstrip,$(BR2_TARGET_UBOOT_BOARDNAME)) + +UBOOT_LICENSE = GPL-2.0+ +UBOOT_LICENSE_FILES = Licenses/gpl-2.0.txt + +UBOOT_INSTALL_IMAGES = YES + +ifeq ($(UBOOT_VERSION),custom) +# Handle custom U-Boot tarballs as specified by the configuration +UBOOT_TARBALL = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION)) +UBOOT_SITE = $(patsubst %/,%,$(dir $(UBOOT_TARBALL))) +UBOOT_SOURCE = $(notdir $(UBOOT_TARBALL)) +else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT),y) +UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)) +UBOOT_SITE_METHOD = git +else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_HG),y) +UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)) +UBOOT_SITE_METHOD = hg +else ifeq ($(BR2_TARGET_UBOOT_CUSTOM_SVN),y) +UBOOT_SITE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)) +UBOOT_SITE_METHOD = svn +else +# Handle stable official U-Boot versions +UBOOT_SITE = ftp://ftp.denx.de/pub/u-boot +UBOOT_SOURCE = u-boot-$(UBOOT_VERSION).tar.bz2 +endif + +ifeq ($(BR2_TARGET_UBOOT)$(BR2_TARGET_UBOOT_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(UBOOT_SOURCE) +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_BIN),y) +UBOOT_BINS += u-boot.bin +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_ELF),y) +UBOOT_BINS += u-boot +# To make elf usable for debuging on ARC use special target +ifeq ($(BR2_arc),y) +UBOOT_MAKE_TARGET += mdbtrick +endif +endif + +# Call 'make all' unconditionally +UBOOT_MAKE_TARGET += all + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y) +UBOOT_BINS += u-boot.kwb +UBOOT_MAKE_TARGET += u-boot.kwb +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_AIS),y) +UBOOT_BINS += u-boot.ais +UBOOT_MAKE_TARGET += u-boot.ais +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y) +UBOOT_BINS += u-boot.ldr +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y) +UBOOT_BINS += u-boot-nand.bin +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_IMG),y) +UBOOT_BINS += u-boot-dtb.img +UBOOT_MAKE_TARGET += u-boot-dtb.img +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_DTB_BIN),y) +UBOOT_BINS += u-boot-dtb.bin +UBOOT_MAKE_TARGET += u-boot-dtb.bin +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMG),y) +UBOOT_BINS += u-boot.img +UBOOT_MAKE_TARGET += u-boot.img +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_IMX),y) +UBOOT_BINS += u-boot.imx +UBOOT_MAKE_TARGET += u-boot.imx +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_SB),y) +UBOOT_BINS += u-boot.sb +UBOOT_MAKE_TARGET += u-boot.sb +# mxsimage needs OpenSSL +UBOOT_DEPENDENCIES += host-elftosb host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_SD),y) +# BootStream (.sb) is generated by U-Boot, we convert it to SD format +UBOOT_BINS += u-boot.sd +UBOOT_MAKE_TARGET += u-boot.sb +UBOOT_DEPENDENCIES += host-elftosb host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND),y) +UBOOT_BINS += u-boot.nand +UBOOT_MAKE_TARGET += u-boot.sb +UBOOT_DEPENDENCIES += host-elftosb host-openssl +endif + +ifeq ($(BR2_TARGET_UBOOT_FORMAT_CUSTOM),y) +UBOOT_BINS += $(call qstrip,$(BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME)) +endif + +ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y) +UBOOT_BINS += u-boot.bin +UBOOT_BIN_IFT = u-boot.bin.ift +endif + +# The kernel calls AArch64 'arm64', but U-Boot calls it just 'arm', so +# we have to special case it. Similar for i386/x86_64 -> x86 +ifeq ($(KERNEL_ARCH),arm64) +UBOOT_ARCH = arm +else ifneq ($(filter $(KERNEL_ARCH),i386 x86_64),) +UBOOT_ARCH = x86 +else +UBOOT_ARCH = $(KERNEL_ARCH) +endif + +UBOOT_MAKE_OPTS += \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + ARCH=$(UBOOT_ARCH) \ + HOSTCC="$(HOSTCC) $(subst -I/,-isystem /,$(subst -I /,-isystem /,$(HOST_CFLAGS)))" \ + HOSTLDFLAGS="$(HOST_LDFLAGS)" + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_ATF_BL31),y) +UBOOT_DEPENDENCIES += arm-trusted-firmware +UBOOT_MAKE_OPTS += BL31=$(BINARIES_DIR)/bl31.bin +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_DTC),y) +UBOOT_DEPENDENCIES += host-dtc +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_PYLIBFDT),y) +UBOOT_DEPENDENCIES += host-python host-swig +endif + +ifeq ($(BR2_TARGET_UBOOT_NEEDS_OPENSSL),y) +UBOOT_DEPENDENCIES += host-openssl +endif + +# prior to u-boot 2013.10 the license info was in COPYING. Copy it so +# legal-info finds it +define UBOOT_COPY_OLD_LICENSE_FILE + if [ -f $(@D)/COPYING ]; then \ + $(INSTALL) -m 0644 -D $(@D)/COPYING $(@D)/Licenses/gpl-2.0.txt; \ + fi +endef + +UBOOT_POST_EXTRACT_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE +UBOOT_POST_RSYNC_HOOKS += UBOOT_COPY_OLD_LICENSE_FILE + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define UBOOT_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),u-boot) +endef +UBOOT_POST_EXTRACT_HOOKS += UBOOT_XTENSA_OVERLAY_EXTRACT +UBOOT_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +# Analogous code exists in linux/linux.mk. Basically, the generic +# package infrastructure handles downloading and applying remote +# patches. Local patches are handled depending on whether they are +# directories or files. +UBOOT_PATCHES = $(call qstrip,$(BR2_TARGET_UBOOT_PATCH)) +UBOOT_PATCH = $(filter ftp://% http://% https://%,$(UBOOT_PATCHES)) + +define UBOOT_APPLY_LOCAL_PATCHES + for p in $(filter-out ftp://% http://% https://%,$(UBOOT_PATCHES)) ; do \ + if test -d $$p ; then \ + $(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \ + else \ + $(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \ + fi \ + done +endef +UBOOT_POST_PATCH_HOOKS += UBOOT_APPLY_LOCAL_PATCHES + +# This is equivalent to upstream commit +# http://git.denx.de/?p=u-boot.git;a=commitdiff;h=e0d20dc1521e74b82dbd69be53a048847798a90a. It +# fixes a build failure when libfdt-devel is installed system-wide. +# This only works when scripts/dtc/libfdt exists (E.G. versions containing +# http://git.denx.de/?p=u-boot.git;a=commitdiff;h=c0e032e0090d6541549b19cc47e06ccd1f302893) +define UBOOT_FIXUP_LIBFDT_INCLUDE + if [ -d $(@D)/scripts/dtc/libfdt ]; then \ + $(SED) 's%-I$$(srctree)/lib/libfdt%-I$$(srctree)/scripts/dtc/libfdt%' $(@D)/tools/Makefile; \ + fi +endef +UBOOT_POST_PATCH_HOOKS += UBOOT_FIXUP_LIBFDT_INCLUDE + +ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y) +define UBOOT_CONFIGURE_CMDS + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ + $(UBOOT_BOARD_NAME)_config +endef +else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y) +ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y) +UBOOT_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG))_defconfig +else ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y) +UBOOT_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE)) +endif # BR2_TARGET_UBOOT_USE_DEFCONFIG + +UBOOT_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES)) +UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig + +# UBOOT_MAKE_OPTS overrides HOSTCC / HOSTLDFLAGS to allow the build to +# find our host-openssl. However, this triggers a bug in the kconfig +# build script that causes it to build with /usr/include/ncurses.h +# (which is typically wchar) but link with +# $(HOST_DIR)/lib/libncurses.so (which is not). We don't actually +# need any host-package for kconfig, so remove the HOSTCC/HOSTLDFLAGS +# override again. +UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC)" HOSTLDFLAGS="" +define UBOOT_HELP_CMDS + @echo ' uboot-menuconfig - Run U-Boot menuconfig' + @echo ' uboot-savedefconfig - Run U-Boot savedefconfig' + @echo ' uboot-update-defconfig - Save the U-Boot configuration to the path specified' + @echo ' by BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE' +endef +endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + +UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) + +define UBOOT_BUILD_CMDS + $(if $(UBOOT_CUSTOM_DTS_PATH), + cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ + ) + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ + $(UBOOT_MAKE_TARGET) + $(if $(BR2_TARGET_UBOOT_FORMAT_SD), + $(@D)/tools/mxsboot sd $(@D)/u-boot.sb $(@D)/u-boot.sd) + $(if $(BR2_TARGET_UBOOT_FORMAT_NAND), + $(@D)/tools/mxsboot \ + -w $(BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE) \ + -o $(BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE) \ + -e $(BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE) \ + nand $(@D)/u-boot.sb $(@D)/u-boot.nand) +endef + +define UBOOT_BUILD_OMAP_IFT + $(HOST_DIR)/bin/gpsign -f $(@D)/u-boot.bin \ + -c $(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG)) +endef + +ifneq ($(BR2_TARGET_UBOOT_ENVIMAGE),) +define UBOOT_GENERATE_ENV_IMAGE + cat $(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE)) \ + >$(@D)/buildroot-env.txt + $(HOST_DIR)/bin/mkenvimage -s $(BR2_TARGET_UBOOT_ENVIMAGE_SIZE) \ + $(if $(BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT),-r) \ + $(if $(filter BIG,$(BR2_ENDIAN)),-b) \ + -o $(BINARIES_DIR)/uboot-env.bin \ + $(@D)/buildroot-env.txt +endef +endif + +define UBOOT_INSTALL_IMAGES_CMDS + $(foreach f,$(UBOOT_BINS), \ + cp -dpf $(@D)/$(f) $(BINARIES_DIR)/ + ) + $(if $(BR2_TARGET_UBOOT_FORMAT_NAND), + cp -dpf $(@D)/u-boot.sb $(BINARIES_DIR)) + $(if $(BR2_TARGET_UBOOT_SPL), + $(foreach f,$(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)), \ + cp -dpf $(@D)/$(f) $(BINARIES_DIR)/ + ) + ) + $(UBOOT_GENERATE_ENV_IMAGE) + $(if $(BR2_TARGET_UBOOT_BOOT_SCRIPT), + $(HOST_DIR)/bin/mkimage -C none -A $(MKIMAGE_ARCH) -T script \ + -d $(call qstrip,$(BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE)) \ + $(BINARIES_DIR)/boot.scr) +endef + +define UBOOT_INSTALL_OMAP_IFT_IMAGE + cp -dpf $(@D)/$(UBOOT_BIN_IFT) $(BINARIES_DIR)/ +endef + +ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y) +ifeq ($(BR_BUILDING),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG)),) +$(error No gpsign config file. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting) +endif +ifeq ($(wildcard $(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG))),) +$(error gpsign config file $(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG) not found. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting) +endif +endif +UBOOT_DEPENDENCIES += host-omap-u-boot-utils +UBOOT_POST_BUILD_HOOKS += UBOOT_BUILD_OMAP_IFT +UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_INSTALL_OMAP_IFT_IMAGE +endif + +ifeq ($(BR2_TARGET_UBOOT_ZYNQ_IMAGE),y) +define UBOOT_GENERATE_ZYNQ_IMAGE + $(HOST_DIR)/bin/python2 \ + $(HOST_DIR)/bin/zynq-boot-bin.py \ + -u $(@D)/$(firstword $(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME))) \ + -o $(BINARIES_DIR)/BOOT.BIN +endef +UBOOT_DEPENDENCIES += host-zynq-boot-bin +UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_GENERATE_ZYNQ_IMAGE +endif + +ifeq ($(BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC),y) +ifeq ($(BR2_TARGET_UBOOT_SPL),y) +UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES = $(call qstrip,$(BR2_TARGET_UBOOT_SPL_NAME)) +UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION = 0 +else +UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES = u-boot-dtb.bin +UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION = 1 +endif +define UBOOT_CRC_ALTERA_SOCFPGA_IMAGE + $(foreach f,$(UBOOT_CRC_ALTERA_SOCFPGA_INPUT_IMAGES), \ + $(HOST_DIR)/bin/mkpimage \ + -v $(UBOOT_CRC_ALTERA_SOCFPGA_HEADER_VERSION) \ + -o $(BINARIES_DIR)/$(notdir $(call qstrip,$(f))).crc \ + $(@D)/$(call qstrip,$(f)) + ) +endef +UBOOT_DEPENDENCIES += host-mkpimage +UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_CRC_ALTERA_SOCFPGA_IMAGE +endif + +ifeq ($(BR2_TARGET_UBOOT_ENVIMAGE),y) +ifeq ($(BR_BUILDING),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE)),) +$(error Please define a source file for Uboot environment (BR2_TARGET_UBOOT_ENVIMAGE_SOURCE setting)) +endif +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SIZE)),) +$(error Please provide Uboot environment size (BR2_TARGET_UBOOT_ENVIMAGE_SIZE setting)) +endif +endif +UBOOT_DEPENDENCIES += host-uboot-tools +endif + +ifeq ($(BR2_TARGET_UBOOT_BOOT_SCRIPT),y) +ifeq ($(BR_BUILDING),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE)),) +$(error Please define a source file for Uboot boot script (BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE setting)) +endif +endif +UBOOT_DEPENDENCIES += host-uboot-tools +endif + +ifeq ($(BR2_TARGET_UBOOT)$(BR_BUILDING),yy) + +# +# Check U-Boot board name (for legacy) or the defconfig/custom config +# file options (for kconfig) +# +ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y) +ifeq ($(UBOOT_BOARD_NAME),) +$(error No U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting) +endif # UBOOT_BOARD_NAME +else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y) +ifeq ($(BR2_TARGET_UBOOT_USE_DEFCONFIG),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_BOARD_DEFCONFIG)),) +$(error No board defconfig name specified, check your BR2_TARGET_UBOOT_BOARD_DEFCONFIG setting) +endif # qstrip BR2_TARGET_UBOOT_BOARD_DEFCONFIG +endif # BR2_TARGET_UBOOT_USE_DEFCONFIG +ifeq ($(BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE)),) +$(error No board configuration file specified, check your BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE +endif # BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG +endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY + +# +# Check custom version option +# +ifeq ($(BR2_TARGET_UBOOT_CUSTOM_VERSION),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE)),) +$(error No custom U-Boot version specified. Check your BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE +endif # BR2_TARGET_UBOOT_CUSTOM_VERSION + +# +# Check custom tarball option +# +ifeq ($(BR2_TARGET_UBOOT_CUSTOM_TARBALL),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION)),) +$(error No custom U-Boot tarball specified. Check your BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION +endif # BR2_TARGET_UBOOT_CUSTOM_TARBALL + +# +# Check Git/Mercurial repo options +# +ifeq ($(BR2_TARGET_UBOOT_CUSTOM_GIT)$(BR2_TARGET_UBOOT_CUSTOM_HG),y) +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_URL)),) +$(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_URL setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_URL +ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION)),) +$(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION setting) +endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_VERSION +endif # BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG + +endif # BR2_TARGET_UBOOT && BR_BUILDING + +ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y) +$(eval $(generic-package)) +else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y) +$(eval $(kconfig-package)) +endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY diff --git a/buildroot/boot/vexpress-firmware/Config.in b/buildroot/boot/vexpress-firmware/Config.in new file mode 100644 index 0000000..8479df3 --- /dev/null +++ b/buildroot/boot/vexpress-firmware/Config.in @@ -0,0 +1,6 @@ +config BR2_TARGET_VEXPRESS_FIRMWARE + bool "vexpress-firmware" + depends on BR2_aarch64 + help + Versatile Express firmware from ARM, with Linaro mods last + change. diff --git a/buildroot/boot/vexpress-firmware/vexpress-firmware.hash b/buildroot/boot/vexpress-firmware/vexpress-firmware.hash new file mode 100644 index 0000000..40f64c7 --- /dev/null +++ b/buildroot/boot/vexpress-firmware/vexpress-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 def599c86ab3606f7f67c0190e9b237fbc0cf934a951ffb1c5fb0c47d8a8f3d2 vexpress-firmware-901f81977c3b367a2e0bf3d6444be302822d97a3.tar.gz diff --git a/buildroot/boot/vexpress-firmware/vexpress-firmware.mk b/buildroot/boot/vexpress-firmware/vexpress-firmware.mk new file mode 100644 index 0000000..693a9cb --- /dev/null +++ b/buildroot/boot/vexpress-firmware/vexpress-firmware.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# vexpress-firmware +# +################################################################################ + +VEXPRESS_FIRMWARE_VERSION = 901f81977c3b367a2e0bf3d6444be302822d97a3 +VEXPRESS_FIRMWARE_SITE = https://git.linaro.org/arm/vexpress-firmware.git +VEXPRESS_FIRMWARE_SITE_METHOD = git +# The only available license files are in PDF and RTF formats, and we +# support only plain text. +VEXPRESS_FIRMWARE_LICENSE = ARM EULA + +VEXPRESS_FIRMWARE_INSTALL_IMAGES = YES + +define VEXPRESS_FIRMWARE_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/SOFTWARE/bl30.bin $(BINARIES_DIR)/scp-fw.bin +endef + +$(eval $(generic-package)) diff --git a/buildroot/boot/xloader/Config.in b/buildroot/boot/xloader/Config.in new file mode 100644 index 0000000..c411be4 --- /dev/null +++ b/buildroot/boot/xloader/Config.in @@ -0,0 +1,15 @@ +config BR2_TARGET_XLOADER + bool "X-loader" + depends on BR2_cortex_a8 || BR2_cortex_a9 + help + The x-loader bootloader. It is mainly used on OMAP-based + platforms. + +if BR2_TARGET_XLOADER +config BR2_TARGET_XLOADER_BOARDNAME + string "x-loader board name" + help + One of x-loader supported boards to be built. + This will be suffixed with _config to meet x-loader + standard naming. +endif diff --git a/buildroot/boot/xloader/xloader.mk b/buildroot/boot/xloader/xloader.mk new file mode 100644 index 0000000..7e0b286 --- /dev/null +++ b/buildroot/boot/xloader/xloader.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# x-loader +# +################################################################################ + +XLOADER_VERSION = 6f3a26101303051e0f91b6213735b68ce804e94e +XLOADER_SITE = git://gitorious.org/x-loader/x-loader.git +XLOADER_BOARD_NAME = $(call qstrip,$(BR2_TARGET_XLOADER_BOARDNAME)) + +XLOADER_LICENSE = GPL-2.0+ +XLOADER_LICENSE_FILES = README + +XLOADER_INSTALL_IMAGES = YES + +define XLOADER_BUILD_CMDS + $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) $(XLOADER_BOARD_NAME)_config + $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) all + $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) ift +endef + +define XLOADER_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0755 $(@D)/MLO $(BINARIES_DIR)/ +endef + +$(eval $(generic-package)) + +ifeq ($(BR2_TARGET_XLOADER)$(BR_BUILDING),yy) +ifeq ($(XLOADER_BOARD_NAME),) +$(error NO x-loader board name set. Check your BR2_BOOT_XLOADER_BOARDNAME setting) +endif +endif diff --git a/buildroot/configs/acmesystems_aria_g25_128mb_defconfig b/buildroot/configs/acmesystems_aria_g25_128mb_defconfig new file mode 100644 index 0000000..0ec210f --- /dev/null +++ b/buildroot/configs/acmesystems_aria_g25_128mb_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_arm=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# System configuration +BR2_TARGET_GENERIC_ISSUE="Welcome to Aria-G25 Buildroot" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/acmesystems/aria-g25/post-image.sh" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7.4" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariag25" + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs" + +# AT91bootstrap bootloader +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.6" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="aria-128m" + +# Tools to build sdcard.img +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/acmesystems_aria_g25_256mb_defconfig b/buildroot/configs/acmesystems_aria_g25_256mb_defconfig new file mode 100644 index 0000000..a480287 --- /dev/null +++ b/buildroot/configs/acmesystems_aria_g25_256mb_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_arm=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# System configuration +BR2_TARGET_GENERIC_ISSUE="Welcome to Aria-G25 Buildroot" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/acmesystems/aria-g25/post-image.sh" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7.4" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariag25" + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs" + +# AT91bootstrap bootloader +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.6" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="aria-256m" + +# Tools to build sdcard.img +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig b/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig new file mode 100644 index 0000000..a68ac57 --- /dev/null +++ b/buildroot/configs/acmesystems_arietta_g25_128mb_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_arm=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# System configuration +BR2_TARGET_GENERIC_ISSUE="Welcome to Arietta-G25 Buildroot" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/acmesystems/arietta-g25/post-image.sh" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7.4" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariettag25" + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs" + +# AT91bootstrap bootloader +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.6" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="arietta-128m" + +# Tools to build sdcard.img +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig b/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig new file mode 100644 index 0000000..ce9ebac --- /dev/null +++ b/buildroot/configs/acmesystems_arietta_g25_256mb_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_arm=y + +# Kernel headers +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_7=y + +# System configuration +BR2_TARGET_GENERIC_ISSUE="Welcome to Arietta-G25 Buildroot" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/acmesystems/arietta-g25/post-image.sh" + +# Kernel configuration +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.7.4" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariettag25" + +# Root filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs" + +# AT91bootstrap bootloader +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.6" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="arietta-256m" + +# Tools to build sdcard.img +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/arcturus_ucp1020_defconfig b/buildroot/configs/arcturus_ucp1020_defconfig new file mode 100644 index 0000000..cc1297c --- /dev/null +++ b/buildroot/configs/arcturus_ucp1020_defconfig @@ -0,0 +1,31 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_8548=y + +# Linux headers same as kernel, a 4.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y + +# System settings +BR2_TARGET_GENERIC_HOSTNAME="UCP1020" +BR2_TARGET_GENERIC_ISSUE="Welcome to Arcturus uCP1020 System on Module" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.1.27" +BR2_LINUX_KERNEL_PATCH="board/arcturus/ppc-ucp1020/patches/linux" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/arcturus/ppc-ucp1020/configs/linux-4.1.x.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="ucp1020" + +# Filesystem +BR2_TARGET_ROOTFS_JFFS2=y + +# U-boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="UCP1020" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.07" diff --git a/buildroot/configs/arm_foundationv8_defconfig b/buildroot/configs/arm_foundationv8_defconfig new file mode 100644 index 0000000..d31f69d --- /dev/null +++ b/buildroot/configs/arm_foundationv8_defconfig @@ -0,0 +1,16 @@ +BR2_aarch64=y +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(LINUX_DIR)/arch/arm64/configs/defconfig" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arm/foundation-v8" +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_BOOT_WRAPPER_AARCH64=y +BR2_TARGET_BOOT_WRAPPER_AARCH64_DTS="arm/foundation-v8" +BR2_TARGET_BOOT_WRAPPER_AARCH64_BOOTARGS="root=/dev/vda consolelog=9 console=ttyAMA0 rw" diff --git a/buildroot/configs/arm_juno_defconfig b/buildroot/configs/arm_juno_defconfig new file mode 100644 index 0000000..54506d8 --- /dev/null +++ b/buildroot/configs/arm_juno_defconfig @@ -0,0 +1,23 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_TARGET_GENERIC_HOSTNAME="juno-buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to SNPS Juno by Buildroot" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/arm/juno/linux-juno-defconfig" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arm/juno arm/juno-r1 arm/juno-r2" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v1.2" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="juno" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="vexpress_aemv8a_juno" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.03" +BR2_TARGET_VEXPRESS_FIRMWARE=y diff --git a/buildroot/configs/armadeus_apf27_defconfig b/buildroot/configs/armadeus_apf27_defconfig new file mode 100644 index 0000000..6f78b74 --- /dev/null +++ b/buildroot/configs/armadeus_apf27_defconfig @@ -0,0 +1,31 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.12 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="apf27" +BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 +BR2_TARGET_ROOTFS_UBI=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.12.4" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/armadeus/apf27/linux-4.12.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0xA0008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx27-apf27dev" + +# U-boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="apf27" diff --git a/buildroot/configs/armadeus_apf28_defconfig b/buildroot/configs/armadeus_apf28_defconfig new file mode 100644 index 0000000..51e05f5 --- /dev/null +++ b/buildroot/configs/armadeus_apf28_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="apf28" +BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.64" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx28-apf28dev" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=4227 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 diff --git a/buildroot/configs/armadeus_apf51_defconfig b/buildroot/configs/armadeus_apf51_defconfig new file mode 100644 index 0000000..e834626 --- /dev/null +++ b/buildroot/configs/armadeus_apf51_defconfig @@ -0,0 +1,27 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 3.12 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="apf51" +BR2_TARGET_GENERIC_ISSUE="Welcome to Armadeus development platform !" +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc2" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.30" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/armadeus/apf51/linux-4.4.config" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x90008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx51-apf51dev" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=135301 +BR2_TARGET_ROOTFS_UBI=y diff --git a/buildroot/configs/at91sam9260eknf_defconfig b/buildroot/configs/at91sam9260eknf_defconfig new file mode 100644 index 0000000..d91fcb0 --- /dev/null +++ b/buildroot/configs/at91sam9260eknf_defconfig @@ -0,0 +1,33 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9260ek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBI=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9260eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9260ek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/at91sam9g20dfc_defconfig b/buildroot/configs/at91sam9g20dfc_defconfig new file mode 100644 index 0000000..15a8d87 --- /dev/null +++ b/buildroot/configs/at91sam9g20dfc_defconfig @@ -0,0 +1,32 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g20ek" + +# Filesystem +BR2_TARGET_ROOTFS_TAR=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9g20eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9g20ek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/at91sam9g45m10ek_defconfig b/buildroot/configs/at91sam9g45m10ek_defconfig new file mode 100644 index 0000000..2bf7179 --- /dev/null +++ b/buildroot/configs/at91sam9g45m10ek_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9m10g45ek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 +BR2_TARGET_ROOTFS_UBI=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9m10g45eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9m10g45ek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/at91sam9rlek_defconfig b/buildroot/configs/at91sam9rlek_defconfig new file mode 100644 index 0000000..bc1be16 --- /dev/null +++ b/buildroot/configs/at91sam9rlek_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9rlek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 +BR2_TARGET_ROOTFS_UBI=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9rleknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9rlek_nandflash" + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/at91sam9x5ek_defconfig b/buildroot/configs/at91sam9x5ek_defconfig new file mode 100644 index 0000000..a536230 --- /dev/null +++ b/buildroot/configs/at91sam9x5ek_defconfig @@ -0,0 +1,28 @@ +BR2_arm=y +BR2_arm926t=y +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/at91sam9x5ek_dev_defconfig b/buildroot/configs/at91sam9x5ek_dev_defconfig new file mode 100644 index 0000000..3af4ba7 --- /dev/null +++ b/buildroot/configs/at91sam9x5ek_dev_defconfig @@ -0,0 +1,100 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/at91sam9x5ek_mmc_defconfig b/buildroot/configs/at91sam9x5ek_mmc_defconfig new file mode 100644 index 0000000..6964d58 --- /dev/null +++ b/buildroot/configs/at91sam9x5ek_mmc_defconfig @@ -0,0 +1,46 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/at91sam9x5ek_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_ENVIMAGE=y +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/atmel/at91sam9x5ek_mmc/uboot-env.txt" +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000" + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig b/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig new file mode 100644 index 0000000..931cf7d --- /dev/null +++ b/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig @@ -0,0 +1,108 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/at91sam9x5ek_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_ENVIMAGE=y +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/atmel/at91sam9x5ek_mmc/uboot-env.txt" +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000" + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig b/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig new file mode 100644 index 0000000..3752129 --- /dev/null +++ b/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig @@ -0,0 +1,86 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_PTHREAD_DEBUG=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d27_som1_ek_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d27_som1_ek at91-sama5d27_som1_ek_pda4 at91-sama5d27_som1_ek_pda7 at91-sama5d27_som1_ek_pda7b" +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d27_som1_eksd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d27_som1_ek_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig b/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig new file mode 100644 index 0000000..8889978 --- /dev/null +++ b/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d2_xplained_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d2_xplained at91-sama5d2_xplained_pda4 at91-sama5d2_xplained_pda7 at91-sama5d2_xplained_pda7b" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d2_xplainedsd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig b/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig new file mode 100644 index 0000000..23a2582 --- /dev/null +++ b/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig @@ -0,0 +1,107 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d2_xplained_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d2_xplained at91-sama5d2_xplained_pda4 at91-sama5d2_xplained_pda7 at91-sama5d2_xplained_pda7b" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d2_xplainedsd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/atmel_sama5d3_xplained_defconfig b/buildroot/configs/atmel_sama5d3_xplained_defconfig new file mode 100644 index 0000000..b65c389 --- /dev/null +++ b/buildroot/configs/atmel_sama5d3_xplained_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainednf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig b/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig new file mode 100644 index 0000000..f403e23 --- /dev/null +++ b/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig @@ -0,0 +1,102 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainednf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig b/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig new file mode 100644 index 0000000..4ddb171 --- /dev/null +++ b/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d3_xplained_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainedsd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig b/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig new file mode 100644 index 0000000..a335148 --- /dev/null +++ b/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig @@ -0,0 +1,106 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d3_xplained_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainedsd_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/atmel_sama5d3xek_defconfig b/buildroot/configs/atmel_sama5d3xek_defconfig new file mode 100644 index 0000000..c57076c --- /dev/null +++ b/buildroot/configs/atmel_sama5d3xek_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sama5d31ek sama5d33ek sama5d34ek sama5d35ek sama5d36ek" + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3xeknf_uboot" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3xek_nandflash" +BR2_TARGET_UBOOT_SPL=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/atmel_sama5d4_xplained_defconfig b/buildroot/configs/atmel_sama5d4_xplained_defconfig new file mode 100644 index 0000000..feedf1f --- /dev/null +++ b/buildroot/configs/atmel_sama5d4_xplained_defconfig @@ -0,0 +1,33 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x3e000 +BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x1000 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2082 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x40000 +BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainednf_uboot_secure" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig b/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig new file mode 100644 index 0000000..7ebfde1 --- /dev/null +++ b/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig @@ -0,0 +1,106 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x3e000 +BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x1000 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2082 +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x40000 +BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainednf_uboot_secure" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig b/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig new file mode 100644 index 0000000..b8b21e7 --- /dev/null +++ b/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig @@ -0,0 +1,32 @@ +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d4_xplained_mmc/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainedsd_uboot_secure" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig b/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig new file mode 100644 index 0000000..c31f15a --- /dev/null +++ b/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig @@ -0,0 +1,107 @@ +# Architecture +BR2_arm=y +BR2_cortex_a5=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_INSTRUCTIONS_THUMB2=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Needed for gdb +BR2_PTHREAD_DEBUG=y +# Needed for some packages +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System Configuration +# Needed for usb-utils +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +# Creation of the SD card image +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d4_xplained_mmc/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_DEFCONFIG="sama5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" + +# Packages +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_ALSACONF=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y +BR2_PACKAGE_FFMPEG=y +BR2_PACKAGE_FFMPEG_GPL=y +BR2_PACKAGE_FFMPEG_SWSCALE=y +BR2_PACKAGE_MPG123=y +BR2_PACKAGE_BZIP2=y +BR2_PACKAGE_GZIP=y +BR2_PACKAGE_UNZIP=y +BR2_PACKAGE_XZ=y +BR2_PACKAGE_ZIP=y +BR2_PACKAGE_GDB=y +BR2_PACKAGE_LMBENCH=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y +BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y +BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y +BR2_PACKAGE_MMC_UTILS=y +BR2_PACKAGE_MTD=y +BR2_PACKAGE_WILC1000_FIRMWARE=y +BR2_PACKAGE_DEVMEM2=y +BR2_PACKAGE_EVTEST=y +BR2_PACKAGE_I2C_TOOLS=y +BR2_PACKAGE_SETSERIAL=y +BR2_PACKAGE_SPI_TOOLS=y +BR2_PACKAGE_USBUTILS=y +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y +BR2_PACKAGE_DTC=y +BR2_PACKAGE_DTC_PROGRAMS=y +BR2_PACKAGE_BLUEZ_UTILS=y +BR2_PACKAGE_BRIDGE_UTILS=y +BR2_PACKAGE_CAN_UTILS=y +BR2_PACKAGE_DROPBEAR=y +BR2_PACKAGE_ETHTOOL=y +BR2_PACKAGE_IPERF=y +BR2_PACKAGE_IPROUTE2=y +BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_IW=y +BR2_PACKAGE_LRZSZ=y +BR2_PACKAGE_MII_DIAG=y +BR2_PACKAGE_OPENSSH=y +BR2_PACKAGE_WGET=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_BASH=y +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_VIM=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloaders +BR2_TARGET_AT91BOOTSTRAP3=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainedsd_uboot_secure" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Host packages +# Needed to generate the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/bananapi_m1_defconfig b/buildroot/configs/bananapi_m1_defconfig new file mode 100644 index 0000000..f8c66a3 --- /dev/null +++ b/buildroot/configs/bananapi_m1_defconfig @@ -0,0 +1,38 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.09" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Bananapi" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/bananapi/bananapi-m1/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.7" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-bananapi" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Bananapi M1" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/bananapi/bananapi-m1/genimage.cfg" diff --git a/buildroot/configs/bananapi_m2_plus_defconfig b/buildroot/configs/bananapi_m2_plus_defconfig new file mode 100644 index 0000000..bbc3eb0 --- /dev/null +++ b/buildroot/configs/bananapi_m2_plus_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y +BR2_TARGET_GENERIC_ISSUE="Welcome to Bananapi M2 Plus" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/sinovoip/m2-plus/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.3" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-bananapi-m2-plus" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Sinovoip_BPI_M2_Plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/sinovoip/m2-plus/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/bananapi_m64_defconfig b/buildroot/configs/bananapi_m64_defconfig new file mode 100644 index 0000000..7d1ed18 --- /dev/null +++ b/buildroot/configs/bananapi_m64_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="bananapi_m64" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/bananapi/bananapi-m64/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-bananapi-m64" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Bananapi M64" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/bananapi/bananapi-m64/genimage.cfg" diff --git a/buildroot/configs/bananapro_defconfig b/buildroot/configs/bananapro_defconfig new file mode 100644 index 0000000..5a71d75 --- /dev/null +++ b/buildroot/configs/bananapro_defconfig @@ -0,0 +1,73 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Toolchain +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="bananapro" +BR2_TARGET_GENERIC_ISSUE="Welcome to Banana Pro!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_OVERLAY="board/lemaker/bananapro/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/lemaker/bananapro/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/lemaker/bananapro/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.11" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/lemaker/bananapro/linux-wifi.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-bananapro" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Bananapro" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Wifi firmware for brcm43362 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y + +# Audio +BR2_PACKAGE_ALSA_UTILS=y +# BR2_PACKAGE_ALSA_UTILS_ALSAMIXER is not set +BR2_PACKAGE_ALSA_UTILS_AMIXER=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# Wireless packages +BR2_PACKAGE_IW=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# Host tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/buildroot/configs/beagleboardx15_defconfig b/buildroot/configs/beagleboardx15_defconfig new file mode 100644 index 0000000..393b29e --- /dev/null +++ b/buildroot/configs/beagleboardx15_defconfig @@ -0,0 +1,28 @@ +BR2_arm=y +BR2_cortex_a15=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/beagleboardx15/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am57xx-beagle-x15 am57xx-beagle-x15-revb1" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am57xx_evm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/beaglebone_defconfig b/buildroot/configs/beaglebone_defconfig new file mode 100644 index 0000000..611b694 --- /dev/null +++ b/buildroot/configs/beaglebone_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_GLOBAL_PATCH_DIR="board/beaglebone/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyO0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/beaglebone/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.ti.com/processor-sdk/processor-sdk-linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="f9f6f0db2d5e4f9d2ff46eb31a5a05276a92ed7d" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-evm am335x-bone am335x-boneblack am335x-bonegreen am335x-evmsk" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am335x_evm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/beaglebone_qt5_defconfig b/buildroot/configs/beaglebone_qt5_defconfig new file mode 100644 index 0000000..fb61bf5 --- /dev/null +++ b/buildroot/configs/beaglebone_qt5_defconfig @@ -0,0 +1,44 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_GLOBAL_PATCH_DIR="board/beaglebone/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_GCC_VERSION_5_X=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyO0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/beaglebone/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.ti.com/processor-sdk/processor-sdk-linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="52c4aa7cdb93d61f8008f380135beaf7b8fa6593" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/beaglebone/linux-4.1-sgx.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-evm am335x-bone am335x-boneblack am335x-evmsk" +BR2_PACKAGE_FBV=y +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_EXAMPLES=y +BR2_PACKAGE_QT5BASE_EGLFS=y +BR2_PACKAGE_QT5QUICKCONTROLS=y +BR2_PACKAGE_TI_SGX_DEMOS=y +BR2_PACKAGE_TI_SGX_KM=y +BR2_PACKAGE_TI_SGX_UM=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="124M" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am335x_evm" +BR2_TARGET_UBOOT_NEEDS_DTC=y +# BR2_TARGET_UBOOT_FORMAT_BIN is not set +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/chromebook_snow_defconfig b/buildroot/configs/chromebook_snow_defconfig new file mode 100644 index 0000000..70cd42b --- /dev/null +++ b/buildroot/configs/chromebook_snow_defconfig @@ -0,0 +1,23 @@ +BR2_arm=y +BR2_cortex_a15=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_TARGET_GENERIC_GETTY_TERM="linux" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/chromebook/snow/sign.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/chromebook/snow/mksd.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6.3" +BR2_LINUX_KERNEL_PATCH="board/chromebook/snow/linux-4.6-dts-tpm.patch" +BR2_LINUX_KERNEL_DEFCONFIG="exynos" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/chromebook/snow/linux-4.6.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="exynos5250-snow" +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_PARTED=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y +BR2_PACKAGE_HOST_VBOOT_UTILS=y diff --git a/buildroot/configs/ci20_defconfig b/buildroot/configs/ci20_defconfig new file mode 100644 index 0000000..f28dd4d --- /dev/null +++ b/buildroot/configs/ci20_defconfig @@ -0,0 +1,39 @@ +# architecture +BR2_mipsel=y +BR2_mips_xburst=y +# BR2_MIPS_SOFT_FLOAT is not set + +# Linux headers same as kernel, a 3.18 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttyS4" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/ci20/genimage.cfg" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/MIPS/CI20_linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="7dff33297116643485ca37141d804eddd793e834" +BR2_LINUX_KERNEL_DEFCONFIG="ci20" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# u-boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY=y +BR2_TARGET_UBOOT_BOARDNAME="ci20_mmc" +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/MIPS/CI20_u-boot" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="dd3c1b95dac7d10b2ca5806f65e5c1050d7dd0fa" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl.bin" +BR2_TARGET_UBOOT_ENVIMAGE=y +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/ci20/uboot-env.txt" +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="32768" + +# host +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/buildroot/configs/csky_gx6605s_defconfig b/buildroot/configs/csky_gx6605s_defconfig new file mode 100644 index 0000000..5f39c53 --- /dev/null +++ b/buildroot/configs/csky_gx6605s_defconfig @@ -0,0 +1,17 @@ +BR2_csky=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="https://github.com/c-sky/tools/raw/master/csky-linux-tools-x86_64-glibc-linux-4.9.2-20170227.tar.gz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="csky-linux" +BR2_TOOLCHAIN_EXTERNAL_GCC_4_5=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y +BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/c-sky/linux-4.9.y/archive/314c498ddc8c43a66ca96ff3af7da98e10fa1cc6.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="gx66xx" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="gx6605s" +BR2_TARGET_ROOTFS_EXT2=y diff --git a/buildroot/configs/cubieboard2_defconfig b/buildroot/configs/cubieboard2_defconfig new file mode 100644 index 0000000..a0d2399 --- /dev/null +++ b/buildroot/configs/cubieboard2_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y +# Linux headers same as kernel, a 4.6 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_TARGET_GENERIC_HOSTNAME="Cubieboard2" +BR2_TARGET_GENERIC_ISSUE="Welcome to Cubieboard2!" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/cubietech/cubieboard2/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-cubieboard2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Cubieboard2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/cubietech/cubieboard2/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/engicam_imx6qdl_icore_defconfig b/buildroot/configs/engicam_imx6qdl_icore_defconfig new file mode 100644 index 0000000..6090360 --- /dev/null +++ b/buildroot/configs/engicam_imx6qdl_icore_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6qdl_icore_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-icore imx6q-icore imx6q-icore-ofcap10 imx6q-icore-ofcap12" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam i.CoreM6 Quad/Dual/DualLite/Solo" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/icorem6/genimage.cfg" diff --git a/buildroot/configs/engicam_imx6qdl_icore_qt5_defconfig b/buildroot/configs/engicam_imx6qdl_icore_qt5_defconfig new file mode 100644 index 0000000..2da0a65 --- /dev/null +++ b/buildroot/configs/engicam_imx6qdl_icore_qt5_defconfig @@ -0,0 +1,81 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6qdl_icore_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-icore imx6q-icore imx6q-icore-ofcap10 imx6q-icore-ofcap12" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/engicam/icorem6/linux_qt5.fragment" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam i.CoreM6 Quad/Dual/DualLite/Solo" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/icorem6/genimage.cfg" +BR2_ROOTFS_OVERLAY="board/engicam/icorem6/rootfs_overlay" + +# qt5 dependencies +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# qt5 +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y +BR2_PACKAGE_QT5BASE_OPENGL_LIB=y +BR2_PACKAGE_QT5BASE_LINUXFB=y +BR2_PACKAGE_QT5BASE_FONTCONFIG=y +BR2_PACKAGE_QT5BASE_GIF=y +BR2_PACKAGE_QT5BASE_JPEG=y + +# mesa3d +BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y +BR2_PACKAGE_MESA3D_OPENGL_ES=y + +# qt5 demo packages +BR2_PACKAGE_GLMARK2=y +BR2_PACKAGE_MESA3D_DEMOS=y +BR2_PACKAGE_KMSCUBE=y +BR2_PACKAGE_QT5CINEX=y +BR2_PACKAGE_QT5CINEX_HD=y + +# fonts +BR2_PACKAGE_BITSTREAM_VERA=y +BR2_PACKAGE_CANTARELL=y +BR2_PACKAGE_DEJAVU=y +BR2_PACKAGE_FONT_AWESOME=y +BR2_PACKAGE_GHOSTSCRIPT_FONTS=y +BR2_PACKAGE_INCONSOLATA=y +BR2_PACKAGE_LIBERATION=y diff --git a/buildroot/configs/engicam_imx6qdl_icore_rqs_defconfig b/buildroot/configs/engicam_imx6qdl_icore_rqs_defconfig new file mode 100644 index 0000000..4cea880 --- /dev/null +++ b/buildroot/configs/engicam_imx6qdl_icore_rqs_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07-rc1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6qdl_icore_rqs_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.5" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-icore-rqs imx6q-icore-rqs" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam i.CoreM6 Quad/Dual/DualLite/Solo RQS Starter Kit" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/icorem6_rqs/genimage.cfg" diff --git a/buildroot/configs/engicam_imx6ul_geam_defconfig b/buildroot/configs/engicam_imx6ul_geam_defconfig new file mode 100644 index 0000000..aac8432 --- /dev/null +++ b/buildroot/configs/engicam_imx6ul_geam_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07-rc1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6ul_geam_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.5" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-geam-kit" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam GEAM6UL Starter Kit" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/geam6ul/genimage.cfg" diff --git a/buildroot/configs/engicam_imx6ul_isiot_defconfig b/buildroot/configs/engicam_imx6ul_isiot_defconfig new file mode 100644 index 0000000..78a5cae --- /dev/null +++ b/buildroot/configs/engicam_imx6ul_isiot_defconfig @@ -0,0 +1,43 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07-rc1" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx6ul_isiot_mmc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.5" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-isiot-emmc" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Engicam Is.IoT eMMC Starter Kit" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/engicam/isiot/genimage.cfg" diff --git a/buildroot/configs/freescale_imx28evk_defconfig b/buildroot/configs/freescale_imx28evk_defconfig new file mode 100644 index 0000000..181c9ab --- /dev/null +++ b/buildroot/configs/freescale_imx28evk_defconfig @@ -0,0 +1,34 @@ +# architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.13" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx28-evk" + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx28evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_FORMAT_SD=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT4=y + +# To generate SD Image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh" diff --git a/buildroot/configs/freescale_imx6dlsabreauto_defconfig b/buildroot/configs/freescale_imx6dlsabreauto_defconfig new file mode 100644 index 0000000..55db461 --- /dev/null +++ b/buildroot/configs/freescale_imx6dlsabreauto_defconfig @@ -0,0 +1,43 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-sabreauto" + +# filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6dlsabreauto" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/freescale_imx6dlsabresd_defconfig b/buildroot/configs/freescale_imx6dlsabresd_defconfig new file mode 100644 index 0000000..dc9b498 --- /dev/null +++ b/buildroot/configs/freescale_imx6dlsabresd_defconfig @@ -0,0 +1,42 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-sabresd" + +# filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6dlsabresd" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/freescale_imx6qsabreauto_defconfig b/buildroot/configs/freescale_imx6qsabreauto_defconfig new file mode 100644 index 0000000..bc333e1 --- /dev/null +++ b/buildroot/configs/freescale_imx6qsabreauto_defconfig @@ -0,0 +1,43 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabreauto" + +# filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6qsabreauto" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/freescale_imx6qsabresd_defconfig b/buildroot/configs/freescale_imx6qsabresd_defconfig new file mode 100644 index 0000000..e0ef20c --- /dev/null +++ b/buildroot/configs/freescale_imx6qsabresd_defconfig @@ -0,0 +1,43 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabresd" + +# filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6qsabresd" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/freescale_imx6sxsabresd_defconfig b/buildroot/configs/freescale_imx6sxsabresd_defconfig new file mode 100644 index 0000000..eb11fb8 --- /dev/null +++ b/buildroot/configs/freescale_imx6sxsabresd_defconfig @@ -0,0 +1,42 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# patches +BR2_GLOBAL_PATCH_DIR="board/freescale/imx6sabre/patches" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-sdb" + +# filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sxsabresd" +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/freescale_imx7dsabresd_defconfig b/buildroot/configs/freescale_imx7dsabresd_defconfig new file mode 100644 index 0000000..3563d1e --- /dev/null +++ b/buildroot/configs/freescale_imx7dsabresd_defconfig @@ -0,0 +1,37 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-sdb" + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx7dsabresd" +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# required tools to create the microSD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" diff --git a/buildroot/configs/friendlyarm_nanopi_a64_defconfig b/buildroot/configs/friendlyarm_nanopi_a64_defconfig new file mode 100644 index 0000000..1b668be --- /dev/null +++ b/buildroot/configs/friendlyarm_nanopi_a64_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_a64" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/friendlyarm/nanopi-a64/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-nanopi-a64" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to FriendlyARM Nanopi A64" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-a64/genimage.cfg" diff --git a/buildroot/configs/friendlyarm_nanopi_neo2_defconfig b/buildroot/configs/friendlyarm_nanopi_neo2_defconfig new file mode 100644 index 0000000..f133e80 --- /dev/null +++ b/buildroot/configs/friendlyarm_nanopi_neo2_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +R2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_neo2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/friendlyarm/nanopi-neo2/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-nanopi-neo2" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to FriendlyARM Nanopi NEO2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-neo2/genimage.cfg" diff --git a/buildroot/configs/galileo_defconfig b/buildroot/configs/galileo_defconfig new file mode 100644 index 0000000..72ab0ff --- /dev/null +++ b/buildroot/configs/galileo_defconfig @@ -0,0 +1,25 @@ +BR2_x86_x1000=y +# Needed for TARGET_GRUB2 +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +# Linux headers same as kernel, a 3.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y +BR2_ROOTFS_OVERLAY="board/intel/galileo/rootfs_overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/intel/galileo/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/intel/galileo/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/mdr78/Linux-x1000.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="8b3c9d8ce1656a26b1097d9091d53bfb39fef640" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/intel/galileo/linux-3.14.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_I386_EFI=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/gdb_bfin_bf512_defconfig b/buildroot/configs/gdb_bfin_bf512_defconfig new file mode 100644 index 0000000..6740647 --- /dev/null +++ b/buildroot/configs/gdb_bfin_bf512_defconfig @@ -0,0 +1,33 @@ +# Architecture +BR2_bfin=y +BR2_bf512=y + +# Filesystem +BR2_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set + +BR2_ROOTFS_POST_BUILD_SCRIPT="board/gdb/post-build.sh" + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.14" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/gdb/bfin-bf512/linux.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyBF0" + +# use minimal busybox with hush +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" + +# compile gdb sim +BR2_PACKAGE_HOST_GDB=y +# BR2_PACKAGE_HOST_GDB_TUI is not set +# BR2_PACKAGE_HOST_GDB_PYTHON is not set +BR2_PACKAGE_HOST_GDB_SIM=y diff --git a/buildroot/configs/grinn_chiliboard_defconfig b/buildroot/configs/grinn_chiliboard_defconfig new file mode 100644 index 0000000..cfd22b8 --- /dev/null +++ b/buildroot/configs/grinn_chiliboard_defconfig @@ -0,0 +1,28 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyO0" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/grinn/chiliboard/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-chiliboard" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="http://git.denx.de/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="aac477eca88dd81b18b48573ababee5112d571f3" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="chiliboard" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/grinn_liteboard_defconfig b/buildroot/configs/grinn_liteboard_defconfig new file mode 100644 index 0000000..70ec296 --- /dev/null +++ b/buildroot/configs/grinn_liteboard_defconfig @@ -0,0 +1,25 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_10=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/grinn/liteboard/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-liteboard" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="liteboard" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/imx23evk_defconfig b/buildroot/configs/imx23evk_defconfig new file mode 100644 index 0000000..fe07440 --- /dev/null +++ b/buildroot/configs/imx23evk_defconfig @@ -0,0 +1,34 @@ +# architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.8 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx23-evk" + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx23evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_FORMAT_SD=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT4=y + +# To generate SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh" diff --git a/buildroot/configs/imx6-sabreauto_defconfig b/buildroot/configs/imx6-sabreauto_defconfig new file mode 100644 index 0000000..d9a08bb --- /dev/null +++ b/buildroot/configs/imx6-sabreauto_defconfig @@ -0,0 +1,38 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc3" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sabreauto" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabreauto imx6dl-sabreauto imx6qp-sabreauto" diff --git a/buildroot/configs/imx6-sabresd_defconfig b/buildroot/configs/imx6-sabresd_defconfig new file mode 100644 index 0000000..9999513 --- /dev/null +++ b/buildroot/configs/imx6-sabresd_defconfig @@ -0,0 +1,39 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabresd imx6dl-sabresd imx6qp-sabresd" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/buildroot/configs/imx6-sabresd_qt5_defconfig b/buildroot/configs/imx6-sabresd_qt5_defconfig new file mode 100644 index 0000000..8e6065d --- /dev/null +++ b/buildroot/configs/imx6-sabresd_qt5_defconfig @@ -0,0 +1,97 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Additional features needed for packages +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="320M" +BR2_ROOTFS_OVERLAY="board/freescale/imx6-sabresd/rootfs_overlay" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.14" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabresd imx6dl-sabresd imx6qp-sabresd" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/freescale/imx6-sabresd/linux_qt5.fragment" + +# GL driver +BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y +BR2_PACKAGE_MESA3D_OPENGL_ES=y + +# Fonts +BR2_PACKAGE_BITSTREAM_VERA=y +BR2_PACKAGE_CANTARELL=y +BR2_PACKAGE_DEJAVU=y +BR2_PACKAGE_FONT_AWESOME=y +BR2_PACKAGE_GHOSTSCRIPT_FONTS=y +BR2_PACKAGE_INCONSOLATA=y +BR2_PACKAGE_LIBERATION=y + +# GL demos +BR2_PACKAGE_GLMARK2=y +BR2_PACKAGE_KMSCUBE=y +BR2_PACKAGE_LIBV4L=y +BR2_PACKAGE_MESA3D_DEMOS=y + +# Qt5 +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y +BR2_PACKAGE_QT5BASE_OPENGL_LIB=y +BR2_PACKAGE_QT5BASE_LINUXFB=y +BR2_PACKAGE_QT5BASE_FONTCONFIG=y +BR2_PACKAGE_QT5BASE_GIF=y +BR2_PACKAGE_QT5BASE_JPEG=y +BR2_PACKAGE_QT5CINEX=y +BR2_PACKAGE_QT5CINEX_HD=y + +# NXP firmware package +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y +BR2_PACKAGE_FIRMWARE_IMX=y + +# libdrm tests +BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y + +# gstreamer-1.0 +BR2_PACKAGE_GSTREAMER1=y +BR2_PACKAGE_GST1_PLUGINS_GOOD=y +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y +BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y +BR2_PACKAGE_GST1_PLUGINS_BAD=y +BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS=y +BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_KMS=y + +# For automatic kernel module loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y diff --git a/buildroot/configs/imx6slevk_defconfig b/buildroot/configs/imx6slevk_defconfig new file mode 100644 index 0000000..be4b42e --- /dev/null +++ b/buildroot/configs/imx6slevk_defconfig @@ -0,0 +1,26 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6slevk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sl-evk" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/imx6sx-sdb_defconfig b/buildroot/configs/imx6sx-sdb_defconfig new file mode 100644 index 0000000..a87bdf8 --- /dev/null +++ b/buildroot/configs/imx6sx-sdb_defconfig @@ -0,0 +1,26 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6sxsabresd" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.14" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-sdb imx6sx-sdb-reva" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/imx6ulevk_defconfig b/buildroot/configs/imx6ulevk_defconfig new file mode 100644 index 0000000..069f8cf --- /dev/null +++ b/buildroot/configs/imx6ulevk_defconfig @@ -0,0 +1,38 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-14x14-evk" + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6ul_14x14_evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# filesystem / image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y diff --git a/buildroot/configs/imx6ulpico_defconfig b/buildroot/configs/imx6ulpico_defconfig new file mode 100644 index 0000000..96ac038 --- /dev/null +++ b/buildroot/configs/imx6ulpico_defconfig @@ -0,0 +1,51 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc5" + +# rootfs overlay +BR2_ROOTFS_OVERLAY="board/technexion/imx6ulpico/rootfs_overlay" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/technexion/imx6ulpico/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-pico-hobbit" + +# wifi firmware for brcm4339 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# wireless packages +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="pico-imx6ul" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# filesystem / image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y diff --git a/buildroot/configs/imx7dpico_defconfig b/buildroot/configs/imx7dpico_defconfig new file mode 100644 index 0000000..b72d56b --- /dev/null +++ b/buildroot/configs/imx7dpico_defconfig @@ -0,0 +1,35 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc4" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-pico" + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="pico-imx7d" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# filesystem / image +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y diff --git a/buildroot/configs/lego_ev3_defconfig b/buildroot/configs/lego_ev3_defconfig new file mode 100644 index 0000000..0281924 --- /dev/null +++ b/buildroot/configs/lego_ev3_defconfig @@ -0,0 +1,45 @@ +# architecture +BR2_arm=y +BR2_arm926t=y + +# Build options +BR2_GLOBAL_PATCH_DIR="board/lego/ev3/patches" + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/lego/ev3/post-image.sh" +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_DEFCONFIG="davinci_all" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/lego/ev3/linux.fragment" +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0xc0008000" +BR2_LINUX_KERNEL_APPENDED_UIMAGE=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="da850-lego-ev3" + +# Target packages +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/lego/ev3/busybox.fragment" + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_SQUASHFS=y +BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y +# BR2_TARGET_ROOTFS_TAR is not set + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="legoev3" + +# host +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/linksprite_pcduino_defconfig b/buildroot/configs/linksprite_pcduino_defconfig new file mode 100644 index 0000000..dd9bcdc --- /dev/null +++ b/buildroot/configs/linksprite_pcduino_defconfig @@ -0,0 +1,63 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# System settings +BR2_TARGET_GENERIC_HOSTNAME="pcduino" +BR2_TARGET_GENERIC_ISSUE="pcDuino buildroot is ready" + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# SD image scripts +BR2_ROOTFS_POST_BUILD_SCRIPT="board/linksprite/pcduino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/linksprite/pcduino/post-image.sh" + +# For kernel modules autoloading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun4i-a10-pcduino" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/linksprite/pcduino/linux-extras.config" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.09" +BR2_TARGET_UBOOT_USE_DEFCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Linksprite_pcDuino" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Host packages +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# Target packages: wireless support for pcduino-lite-wifi +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y diff --git a/buildroot/configs/minnowboard_max-graphical_defconfig b/buildroot/configs/minnowboard_max-graphical_defconfig new file mode 100644 index 0000000..f05e791 --- /dev/null +++ b/buildroot/configs/minnowboard_max-graphical_defconfig @@ -0,0 +1,74 @@ +# Architecture +BR2_x86_64=y +BR2_x86_silvermont=y + +# Toolchain +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +# needed for TARGET_GRUB2 +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +# System configuration +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_OVERLAY="board/minnowboard/fs-overlay-graphical" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/minnowboard/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/minnowboard/post-image.sh" + +# Host packages +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Linux +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.13" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/minnowboard/linux.config" + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_X86_64_EFI=y + +# ALSA +BR2_PACKAGE_ALSA_UTILS=y +BR2_PACKAGE_ALSA_UTILS_APLAY=y + +# OpenGL +BR2_PACKAGE_GLMARK2=y +BR2_PACKAGE_MESA3D_DEMOS=y +BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST=y +BR2_PACKAGE_MESA3D_DRI_DRIVER_I965=y + +# Framebuffer (just for testing purposes) +BR2_PACKAGE_FB_TEST_APP=y + +# X +BR2_PACKAGE_XORG7=y +BR2_PACKAGE_XSERVER_XORG_SERVER=y +BR2_PACKAGE_XAPP_XRANDR=y +BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y +BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y +BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y +BR2_PACKAGE_XDRIVER_XF86_VIDEO_INTEL=y +BR2_PACKAGE_NODM=y +BR2_PACKAGE_XTERM=y +BR2_PACKAGE_OPENBOX=y + +# Firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y + +# Libraries +BR2_PACKAGE_IMLIB2=y +BR2_PACKAGE_IMLIB2_JPEG=y +BR2_PACKAGE_IMLIB2_PNG=y +BR2_PACKAGE_STARTUP_NOTIFICATION=y + +# Filesystem image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/buildroot/configs/minnowboard_max_defconfig b/buildroot/configs/minnowboard_max_defconfig new file mode 100644 index 0000000..9495bf3 --- /dev/null +++ b/buildroot/configs/minnowboard_max_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_x86_64=y +BR2_x86_silvermont=y + +# Misc +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/minnowboard/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/minnowboard/post-image.sh" + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +# Needed for grub2 +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Needed for ethernet +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.13" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/minnowboard/linux.config" + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_X86_64_EFI=y + +# Filesystem image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/buildroot/configs/mx25pdk_defconfig b/buildroot/configs/mx25pdk_defconfig new file mode 100644 index 0000000..a88fb2a --- /dev/null +++ b/buildroot/configs/mx25pdk_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx25pdk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.11" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v4_v5" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx25-pdk" diff --git a/buildroot/configs/mx51evk_defconfig b/buildroot/configs/mx51evk_defconfig new file mode 100644 index 0000000..368e9be --- /dev/null +++ b/buildroot/configs/mx51evk_defconfig @@ -0,0 +1,34 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx51evk" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.3" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx51-babbage" diff --git a/buildroot/configs/mx53loco_defconfig b/buildroot/configs/mx53loco_defconfig new file mode 100644 index 0000000..8bb4014 --- /dev/null +++ b/buildroot/configs/mx53loco_defconfig @@ -0,0 +1,35 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx53loco" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.1" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx53-qsb imx53-qsrb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/buildroot/configs/mx6cubox_defconfig b/buildroot/configs/mx6cubox_defconfig new file mode 100644 index 0000000..5cb44fd --- /dev/null +++ b/buildroot/configs/mx6cubox_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/mx6cubox/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/solidrun/mx6cubox/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mx6cuboxi" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-cubox-i imx6dl-cubox-i imx6q-hummingboard imx6dl-hummingboard" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/buildroot/configs/mx6sx_udoo_neo_defconfig b/buildroot/configs/mx6sx_udoo_neo_defconfig new file mode 100644 index 0000000..e2e36b9 --- /dev/null +++ b/buildroot/configs/mx6sx_udoo_neo_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/udoo/neo/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/udoo/neo/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="udoo_neo" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.09" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.3" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-udoo-neo-basic imx6sx-udoo-neo-full imx6sx-udoo-neo-extended" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/buildroot/configs/mx6udoo_defconfig b/buildroot/configs/mx6udoo_defconfig new file mode 100644 index 0000000..86ad13b --- /dev/null +++ b/buildroot/configs/mx6udoo_defconfig @@ -0,0 +1,29 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="udoo" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.13" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/udoo/mx6qdl/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-udoo imx6dl-udoo" +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/nanopi_m1_defconfig b/buildroot/configs/nanopi_m1_defconfig new file mode 100644 index 0000000..323015e --- /dev/null +++ b/buildroot/configs/nanopi_m1_defconfig @@ -0,0 +1,44 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="nanopi-m1" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the NanoPi M1" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_m1" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.5" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-nanopi-m1" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/friendlyarm/nanopi-m1/boot.cmd" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-m1/genimage.cfg" +# BR2_TARGET_ROOTFS_TAR is not set + +# Additional tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/nanopi_m1_plus_defconfig b/buildroot/configs/nanopi_m1_plus_defconfig new file mode 100644 index 0000000..da707fd --- /dev/null +++ b/buildroot/configs/nanopi_m1_plus_defconfig @@ -0,0 +1,45 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="nanopi-m1-plus" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the NanoPi M1 Plus" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_m1_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.5" +BR2_GLOBAL_PATCH_DIR="board/friendlyarm/nanopi-m1-plus/patches/" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-nanopi-m1-plus" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/friendlyarm/nanopi-m1-plus/boot.cmd" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/friendlyarm/nanopi-m1-plus/genimage.cfg" +# BR2_TARGET_ROOTFS_TAR is not set + +# Additional tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/nanopi_neo_defconfig b/buildroot/configs/nanopi_neo_defconfig new file mode 100644 index 0000000..aa46491 --- /dev/null +++ b/buildroot/configs/nanopi_neo_defconfig @@ -0,0 +1,40 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +BR2_TARGET_GENERIC_HOSTNAME="nanopi-neo" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the NanoPi NEO" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/friendlyarm/nanopi-neo/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/friendlyarm/nanopi-neo/post-image.sh" + +# Linux headers same as kernel, a 4.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_10=y + +# Use a -rc kernel to get the DTS +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.1" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-nanopi-neo" + +# Use an -rc tag because the defconfig is very recent +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nanopi_neo" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Build an sdcard image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="32M" +BR2_TARGET_ROOTFS_EXT2_INODES=8192 +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/buildroot/configs/nexbox_a95x_defconfig b/buildroot/configs/nexbox_a95x_defconfig new file mode 100644 index 0000000..5fc0099 --- /dev/null +++ b/buildroot/configs/nexbox_a95x_defconfig @@ -0,0 +1,20 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/nexbox/a95x/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/nexbox/a95x/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.4" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="amlogic/meson-gxbb-nexbox-a95x amlogic/meson-gxl-s905x-nexbox-a95x" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/buildroot/configs/nitrogen6sx_defconfig b/buildroot/configs/nitrogen6sx_defconfig new file mode 100644 index 0000000..b29adf2 --- /dev/null +++ b/buildroot/configs/nitrogen6sx_defconfig @@ -0,0 +1,42 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Last version of branch boundary-v2017.07 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/1530219d.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6sx" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Last version of branch boundary-imx_4.9.x_1.0.0_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/2aef1ef6.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-nitrogen6sx imx6sx-nitrogen6sx-m4" diff --git a/buildroot/configs/nitrogen6x_defconfig b/buildroot/configs/nitrogen6x_defconfig new file mode 100644 index 0000000..5905a40 --- /dev/null +++ b/buildroot/configs/nitrogen6x_defconfig @@ -0,0 +1,42 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Last version of branch boundary-v2017.07 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/1530219d.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen6q" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Last version of branch boundary-imx_4.9.x_1.0.0_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/2aef1ef6.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6dl-nitrogen6_som2 imx6q-nitrogen6_som2 imx6qp-nitrogen6_som2 imx6q-nitrogen6_max imx6qp-nitrogen6_max imx6q-sabrelite" diff --git a/buildroot/configs/nitrogen7_defconfig b/buildroot/configs/nitrogen7_defconfig new file mode 100644 index 0000000..fa8f36c --- /dev/null +++ b/buildroot/configs/nitrogen7_defconfig @@ -0,0 +1,41 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/common/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/boundarydevices/common/post-image.sh" +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y + +# filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_TARBALL=y +# Last version of branch boundary-v2017.07 +BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/u-boot-imx6/archive/1530219d.tar.gz" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="nitrogen7" +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/boundarydevices/common/boot.cmd" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +# Last version of branch boundary-imx_4.9.x_1.0.0_ga +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/archive/2aef1ef6.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="boundary" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-nitrogen7 imx7d-nitrogen7-m4" diff --git a/buildroot/configs/odroidc2_defconfig b/buildroot/configs/odroidc2_defconfig new file mode 100644 index 0000000..f52f29a --- /dev/null +++ b/buildroot/configs/odroidc2_defconfig @@ -0,0 +1,37 @@ +# Architecture +BR2_aarch64=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="odroidc2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/hardkernel/odroidc2/post-image.sh" +BR2_PACKAGE_ODROID_SCRIPTS=y +BR2_GCC_VERSION_4_9_X=y + +# Kernel +BR2_KERNEL_HEADERS_VERSION=y +BR2_DEFAULT_KERNEL_VERSION="3.14.79" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/hardkernel/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="f966ebfc0e8dc88c7931b4640b8a1b4bc2e13faa" +BR2_LINUX_KERNEL_DEFCONFIG="odroidc2" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_BUILD_DEFAULT_DTS=y +BR2_LINUX_KERNEL_USE_INTREE_DTS=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="meson64_odroidc2" +BR2_LINUX_KERNEL_IMAGE=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/hardkernel/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="cff3edb675933ea2e2ecd659eab127a42f3777df" +BR2_TARGET_UBOOT_BOARDNAME="odroidc2" + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/olimex_a13_olinuxino_defconfig b/buildroot/configs/olimex_a13_olinuxino_defconfig new file mode 100644 index 0000000..df2a722 --- /dev/null +++ b/buildroot/configs/olimex_a13_olinuxino_defconfig @@ -0,0 +1,46 @@ +# Architecture +BR2_arm=y +BR2_cortex_a8=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a13-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A13-OLinuXino" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.5" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun5i-a13-olinuxino" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a13_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a13_olinuxino/genimage.cfg" + +# Additional tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig b/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig new file mode 100644 index 0000000..509b050 --- /dev/null +++ b/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig @@ -0,0 +1,48 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a20_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.12" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-olinuxino-lime2" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/olimex/a20_olinuxino/boot.cmd" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/buildroot/configs/olimex_a20_olinuxino_lime_defconfig b/buildroot/configs/olimex_a20_olinuxino_lime_defconfig new file mode 100644 index 0000000..6c926b5 --- /dev/null +++ b/buildroot/configs/olimex_a20_olinuxino_lime_defconfig @@ -0,0 +1,48 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a20_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.12" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-olinuxino-lime" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/olimex/a20_olinuxino/boot.cmd" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig b/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig new file mode 100644 index 0000000..d240e79 --- /dev/null +++ b/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig @@ -0,0 +1,55 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 3.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_4=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a20_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/dan-and/linux-sunxi.git" +# based on Linux version 3.4.113 +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="fc385cc6dfa350382ecc94a520a716b57e654410" +BR2_LINUX_KERNEL_USE_DEFCONFIG=y +BR2_LINUX_KERNEL_DEFCONFIG="sun7i" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# sunxi packages +BR2_PACKAGE_SUNXI_TOOLS=y +BR2_PACKAGE_SUNXI_BOARDS=y +BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE="a20/a20-olinuxino_lime.fex" +BR2_PACKAGE_SUNXI_MALI=y +BR2_PACKAGE_SUNXI_MALI_DBG=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/olimex/a20_olinuxino/boot-mali.cmd" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/buildroot/configs/olimex_a20_olinuxino_micro_defconfig b/buildroot/configs/olimex_a20_olinuxino_micro_defconfig new file mode 100644 index 0000000..a2aff0c --- /dev/null +++ b/buildroot/configs/olimex_a20_olinuxino_micro_defconfig @@ -0,0 +1,45 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.12 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="a20-olinuxino" +BR2_TARGET_GENERIC_ISSUE="Welcome to OLinuXino!" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/olimex/a20_olinuxino/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.12" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun7i-a20-olinuxino-micro" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino_MICRO" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/olimex/a20_olinuxino/boot.cmd" + +# Additional tools +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/buildroot/configs/olimex_a64_olinuxino_defconfig b/buildroot/configs/olimex_a64_olinuxino_defconfig new file mode 100644 index 0000000..b12229f --- /dev/null +++ b/buildroot/configs/olimex_a64_olinuxino_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="a64-olinuxino" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/olimex/a64-olinuxino/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-olinuxino" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Olimex A64-OLinuXino" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a64-olinuxino/genimage.cfg" diff --git a/buildroot/configs/olimex_imx233_olinuxino_defconfig b/buildroot/configs/olimex_imx233_olinuxino_defconfig new file mode 100644 index 0000000..89ab595 --- /dev/null +++ b/buildroot/configs/olimex_imx233_olinuxino_defconfig @@ -0,0 +1,52 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_DEFCONFIG="mxs" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/imx233_olinuxino/linux-wifi.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx23-olinuxino" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x42000000" + +# Firmware for WiFi +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y +BR2_PACKAGE_ZD1211_FIRMWARE=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx23_olinuxino" +BR2_TARGET_UBOOT_FORMAT_SD=y + +# To generate SD Image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh" + diff --git a/buildroot/configs/openblocks_a6_defconfig b/buildroot/configs/openblocks_a6_defconfig new file mode 100644 index 0000000..c805ae9 --- /dev/null +++ b/buildroot/configs/openblocks_a6_defconfig @@ -0,0 +1,24 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# system +BR2_TARGET_GENERIC_HOSTNAME="openblocks-a6" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" + +# filesystem +BR2_TARGET_ROOTFS_JFFS2=y +BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.13" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" +BR2_LINUX_KERNEL_APPENDED_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="kirkwood-openblocks_a6" diff --git a/buildroot/configs/orangepi_lite_defconfig b/buildroot/configs/orangepi_lite_defconfig new file mode 100644 index 0000000..1e5fca8 --- /dev/null +++ b/buildroot/configs/orangepi_lite_defconfig @@ -0,0 +1,37 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Lite" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Lite" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.4" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-lite/linux-extras.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-lite" +BR2_PACKAGE_RTL8189FS=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_lite" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-lite/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-lite/genimage.cfg" diff --git a/buildroot/configs/orangepi_one_defconfig b/buildroot/configs/orangepi_one_defconfig new file mode 100644 index 0000000..3715f1d --- /dev/null +++ b/buildroot/configs/orangepi_one_defconfig @@ -0,0 +1,33 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_One" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi One" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-one" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_one" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-one/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-one/genimage.cfg" diff --git a/buildroot/configs/orangepi_pc2_defconfig b/buildroot/configs/orangepi_pc2_defconfig new file mode 100644 index 0000000..83be936 --- /dev/null +++ b/buildroot/configs/orangepi_pc2_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-pc2/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-orangepi-pc2" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi PC2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-pc2/genimage.cfg" diff --git a/buildroot/configs/orangepi_pc_defconfig b/buildroot/configs/orangepi_pc_defconfig new file mode 100644 index 0000000..aa559e7 --- /dev/null +++ b/buildroot/configs/orangepi_pc_defconfig @@ -0,0 +1,33 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-pc/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-pc/genimage.cfg" diff --git a/buildroot/configs/orangepi_pc_plus_defconfig b/buildroot/configs/orangepi_pc_plus_defconfig new file mode 100644 index 0000000..edc3909 --- /dev/null +++ b/buildroot/configs/orangepi_pc_plus_defconfig @@ -0,0 +1,49 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_PC_Plus" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi PC Plus" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc-plus" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-pc-plus/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_pc_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-pc-plus/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-pc-plus/genimage.cfg" + +# wireless driver and firmware +BR2_PACKAGE_RTL8189FS=y +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y + +# wireless tools +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y diff --git a/buildroot/configs/orangepi_plus_defconfig b/buildroot/configs/orangepi_plus_defconfig new file mode 100644 index 0000000..cf725ef --- /dev/null +++ b/buildroot/configs/orangepi_plus_defconfig @@ -0,0 +1,42 @@ +# Architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# System configuration +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Plus" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Plus" + +# Bootloaders +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.5" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-plus" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-plus/boot.cmd" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-plus/genimage.cfg" + +# Additional tools +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/orangepi_prime_defconfig b/buildroot/configs/orangepi_prime_defconfig new file mode 100644 index 0000000..861fc21 --- /dev/null +++ b/buildroot/configs/orangepi_prime_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_prime" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-prime/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-orangepi-prime" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Prime" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-prime/genimage.cfg" diff --git a/buildroot/configs/orangepi_win_defconfig b/buildroot/configs/orangepi_win_defconfig new file mode 100644 index 0000000..8aae602 --- /dev/null +++ b/buildroot/configs/orangepi_win_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_win" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-win/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-orangepi-win" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Win/Win Plus" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-win/genimage.cfg" diff --git a/buildroot/configs/orangepi_zero_defconfig b/buildroot/configs/orangepi_zero_defconfig new file mode 100644 index 0000000..fcf9b32 --- /dev/null +++ b/buildroot/configs/orangepi_zero_defconfig @@ -0,0 +1,53 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_VFPV4=y +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero/patches" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Zero" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Zero" +BR2_SYSTEM_DHCP="eth0" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="sunxi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-zero" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-sunxi-with-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-zero/boot.cmd" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-zero/genimage.cfg" + +# wireless driver and firmware +BR2_PACKAGE_XR819_XRADIO=y +BR2_PACKAGE_ARMBIAN_FIRMWARE=y +BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819=y + +# wireless support +BR2_PACKAGE_IW=y +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WIRELESS_TOOLS_LIB=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y +BR2_PACKAGE_WPA_SUPPLICANT_CLI=y + +# spi flash support +BR2_PACKAGE_MTD=y diff --git a/buildroot/configs/orangepi_zero_plus2_defconfig b/buildroot/configs/orangepi_zero_plus2_defconfig new file mode 100644 index 0000000..5b1ff35 --- /dev/null +++ b/buildroot/configs/orangepi_zero_plus2_defconfig @@ -0,0 +1,50 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Patch dir +BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero-plus2/patches" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero_plus2" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-zero-plus2/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-h5-orangepi-zero-plus2" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to Orangepi Zero Plus2" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-zero-plus2/genimage.cfg" diff --git a/buildroot/configs/pandaboard_defconfig b/buildroot/configs/pandaboard_defconfig new file mode 100644 index 0000000..9b7c962 --- /dev/null +++ b/buildroot/configs/pandaboard_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_5=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyO2" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pandaboard/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.5" +BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="omap4-panda-es omap4-panda omap4-panda-a4" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="omap4_panda" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="MLO" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/pc_x86_64_bios_defconfig b/buildroot/configs/pc_x86_64_bios_defconfig new file mode 100644 index 0000000..47787bc --- /dev/null +++ b/buildroot/configs/pc_x86_64_bios_defconfig @@ -0,0 +1,63 @@ +# Architecture +BR2_x86_64=y + +# Toolchain, required for eudev (to autoload drivers) +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Required tools to create bootable media +BR2_PACKAGE_HOST_GENIMAGE=y + +# Bootloader +BR2_TARGET_GRUB2=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image.sh support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pc/genimage-bios.cfg" + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.8" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y + +# Packages +# +# Use connman so that networking setup is simpler, via connmanctl tool +# acpid is for seamless power button support +BR2_PACKAGE_ACPID=y +BR2_PACKAGE_CONNMAN=y +BR2_PACKAGE_CONNMAN_CLIENT=y +BR2_PACKAGE_CONNMAN_WIFI=y diff --git a/buildroot/configs/pc_x86_64_efi_defconfig b/buildroot/configs/pc_x86_64_efi_defconfig new file mode 100644 index 0000000..67ba5bc --- /dev/null +++ b/buildroot/configs/pc_x86_64_efi_defconfig @@ -0,0 +1,66 @@ +# Architecture +BR2_x86_64=y + +# Toolchain, required for eudev (to autoload drivers) +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y + +# Required tools to create bootable media +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Bootloader +BR2_TARGET_GRUB2=y +BR2_TARGET_GRUB2_X86_64_EFI=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/pc/post-image.sh support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pc/genimage-efi.cfg" + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.8" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/pc/linux.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Firmware +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y +BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y +BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y +BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y +BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y + +# Packages +# +# Use connman so that networking setup is simpler, via connmanctl tool +# acpid is for seamless power button support +BR2_PACKAGE_ACPID=y +BR2_PACKAGE_CONNMAN=y +BR2_PACKAGE_CONNMAN_CLIENT=y +BR2_PACKAGE_CONNMAN_WIFI=y diff --git a/buildroot/configs/pine64_defconfig b/buildroot/configs/pine64_defconfig new file mode 100644 index 0000000..6e8eb15 --- /dev/null +++ b/buildroot/configs/pine64_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pine64_plus" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/pine64/pine64/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-pine64" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to PINE64" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/pine64/genimage.cfg" diff --git a/buildroot/configs/pine64_sopine_defconfig b/buildroot/configs/pine64_sopine_defconfig new file mode 100644 index 0000000..b076681 --- /dev/null +++ b/buildroot/configs/pine64_sopine_defconfig @@ -0,0 +1,47 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sopine_baseboard" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/pine64/sopine/boot.cmd" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="allwinner/sun50i-a64-sopine-baseboard" + +# Filesystem +BR2_TARGET_GENERIC_ISSUE="Welcome to PINE64 SOPINE" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/pine64/sopine/genimage.cfg" diff --git a/buildroot/configs/qemu_aarch64_virt_defconfig b/buildroot/configs/qemu_aarch64_virt_defconfig new file mode 100644 index 0000000..c94c4ac --- /dev/null +++ b/buildroot/configs/qemu_aarch64_virt_defconfig @@ -0,0 +1,21 @@ +# Architecture +BR2_aarch64=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux-4.13.config" diff --git a/buildroot/configs/qemu_arm_versatile_defconfig b/buildroot/configs/qemu_arm_versatile_defconfig new file mode 100644 index 0000000..0423dc0 --- /dev/null +++ b/buildroot/configs/qemu_arm_versatile_defconfig @@ -0,0 +1,23 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-4.13.config" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="versatile-pb" diff --git a/buildroot/configs/qemu_arm_versatile_nommu_defconfig b/buildroot/configs/qemu_arm_versatile_nommu_defconfig new file mode 100644 index 0000000..9c48172 --- /dev/null +++ b/buildroot/configs/qemu_arm_versatile_nommu_defconfig @@ -0,0 +1,32 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# Toolchain +BR2_PACKAGE_HOST_ELF2FLT=y +# BR2_USE_MMU is not set + +# Patches +BR2_GLOBAL_PATCH_DIR="board/qemu/arm-versatile/patches" + +# Busybox with hush +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +# BR2_TARGET_ROOTFS_EXT2 is not set +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.70" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-4.4-nommu.config" diff --git a/buildroot/configs/qemu_arm_vexpress_defconfig b/buildroot/configs/qemu_arm_vexpress_defconfig new file mode 100644 index 0000000..faba6a6 --- /dev/null +++ b/buildroot/configs/qemu_arm_vexpress_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3D16=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_DEFCONFIG="vexpress" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" diff --git a/buildroot/configs/qemu_m68k_mcf5208_defconfig b/buildroot/configs/qemu_m68k_mcf5208_defconfig new file mode 100644 index 0000000..ccbdcfa --- /dev/null +++ b/buildroot/configs/qemu_m68k_mcf5208_defconfig @@ -0,0 +1,28 @@ +# Architecture +BR2_m68k=y +BR2_m68k_cf5208=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-mcf5208/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# use minimal busybox with hush and networking tools +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" diff --git a/buildroot/configs/qemu_m68k_q800_defconfig b/buildroot/configs/qemu_m68k_q800_defconfig new file mode 100644 index 0000000..6dc50a7 --- /dev/null +++ b/buildroot/configs/qemu_m68k_q800_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_m68k=y +BR2_m68k_68040=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/m68k-q800/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_microblazebe_mmu_defconfig b/buildroot/configs/qemu_microblazebe_mmu_defconfig new file mode 100644 index 0000000..ae736ff --- /dev/null +++ b/buildroot/configs/qemu_microblazebe_mmu_defconfig @@ -0,0 +1,23 @@ +# Architecture +BR2_microblaze=y +BR2_microblazebe=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazebe-mmu/linux-4.11.config" +BR2_LINUX_KERNEL_LINUX_BIN=y +BR2_LINUX_KERNEL_PATCH="board/qemu/microblazebe-mmu/xilinx-xemaclite.patch" diff --git a/buildroot/configs/qemu_microblazeel_mmu_defconfig b/buildroot/configs/qemu_microblazeel_mmu_defconfig new file mode 100644 index 0000000..3dedecf --- /dev/null +++ b/buildroot/configs/qemu_microblazeel_mmu_defconfig @@ -0,0 +1,23 @@ +# Architecture +BR2_microblaze=y +BR2_microblazeel=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/microblazeel-mmu/linux-4.11.config" +BR2_LINUX_KERNEL_LINUX_BIN=y +BR2_LINUX_KERNEL_PATCH="board/qemu/microblazeel-mmu/xilinx-xemaclite.patch" diff --git a/buildroot/configs/qemu_mips32r2_malta_defconfig b/buildroot/configs/qemu_mips32r2_malta_defconfig new file mode 100644 index 0000000..db408b0 --- /dev/null +++ b/buildroot/configs/qemu_mips32r2_malta_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_mips=y +BR2_mips_32r2=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2-malta/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_mips32r2el_malta_defconfig b/buildroot/configs/qemu_mips32r2el_malta_defconfig new file mode 100644 index 0000000..ccec419 --- /dev/null +++ b/buildroot/configs/qemu_mips32r2el_malta_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_mipsel=y +BR2_mips_32r2=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r2el-malta/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_mips32r6_malta_defconfig b/buildroot/configs/qemu_mips32r6_malta_defconfig new file mode 100644 index 0000000..3aee84c --- /dev/null +++ b/buildroot/configs/qemu_mips32r6_malta_defconfig @@ -0,0 +1,29 @@ +# Architecture +BR2_mips=y +BR2_mips_32r6=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6-malta/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Compiler +# linux >= 4.4 uses -mcompact-branches which is only available since gcc-6 +BR2_GCC_VERSION_6_X=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_mips32r6el_malta_defconfig b/buildroot/configs/qemu_mips32r6el_malta_defconfig new file mode 100644 index 0000000..aa43dce --- /dev/null +++ b/buildroot/configs/qemu_mips32r6el_malta_defconfig @@ -0,0 +1,29 @@ +# Architecture +BR2_mipsel=y +BR2_mips_32r6=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips32r6el-malta/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Compiler +# linux >= 4.4 uses -mcompact-branches which is only available since GCC 6.x +BR2_GCC_VERSION_6_X=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_mips64_malta_defconfig b/buildroot/configs/qemu_mips64_malta_defconfig new file mode 100644 index 0000000..52e4299 --- /dev/null +++ b/buildroot/configs/qemu_mips64_malta_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_mips64=y +BR2_MIPS_NABI64=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64-malta/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_mips64el_malta_defconfig b/buildroot/configs/qemu_mips64el_malta_defconfig new file mode 100644 index 0000000..2b35c1a --- /dev/null +++ b/buildroot/configs/qemu_mips64el_malta_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_mips64el=y +BR2_MIPS_NABI64=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64el-malta/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_mips64r6_malta_defconfig b/buildroot/configs/qemu_mips64r6_malta_defconfig new file mode 100644 index 0000000..06c0133 --- /dev/null +++ b/buildroot/configs/qemu_mips64r6_malta_defconfig @@ -0,0 +1,30 @@ +# Architecture +BR2_mips64=y +BR2_mips_64r6=y +BR2_MIPS_NABI64=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6-malta/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Compiler +# linux >= 4.4 uses -mcompact-branches which is only available since gcc-6 +BR2_GCC_VERSION_6_X=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_mips64r6el_malta_defconfig b/buildroot/configs/qemu_mips64r6el_malta_defconfig new file mode 100644 index 0000000..e80e728 --- /dev/null +++ b/buildroot/configs/qemu_mips64r6el_malta_defconfig @@ -0,0 +1,30 @@ +# Architecture +BR2_mips64el=y +BR2_mips_64r6=y +BR2_MIPS_NABI64=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/mips64r6el-malta/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Compiler +# linux >= 4.4 uses -mcompact-branches which is only available since gcc-6 +BR2_GCC_VERSION_6_X=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_nios2_10m50_defconfig b/buildroot/configs/qemu_nios2_10m50_defconfig new file mode 100644 index 0000000..a9eaf08 --- /dev/null +++ b/buildroot/configs/qemu_nios2_10m50_defconfig @@ -0,0 +1,10 @@ +BR2_nios2=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_DEFCONFIG="10m50" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/nios2-10m50/linux-4.11.fragment" +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y diff --git a/buildroot/configs/qemu_or1k_defconfig b/buildroot/configs/qemu_or1k_defconfig new file mode 100644 index 0000000..c667142 --- /dev/null +++ b/buildroot/configs/qemu_or1k_defconfig @@ -0,0 +1,16 @@ +# Architecture +BR2_or1k=y + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4,14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.2" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/or1k/linux.config" diff --git a/buildroot/configs/qemu_ppc64_pseries_defconfig b/buildroot/configs/qemu_ppc64_pseries_defconfig new file mode 100644 index 0000000..8407631 --- /dev/null +++ b/buildroot/configs/qemu_ppc64_pseries_defconfig @@ -0,0 +1,21 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_power7=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="hvc0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.1" +BR2_LINUX_KERNEL_DEFCONFIG="pseries" +BR2_LINUX_KERNEL_VMLINUX=y diff --git a/buildroot/configs/qemu_ppc64le_pseries_defconfig b/buildroot/configs/qemu_ppc64le_pseries_defconfig new file mode 100644 index 0000000..62e729d --- /dev/null +++ b/buildroot/configs/qemu_ppc64le_pseries_defconfig @@ -0,0 +1,21 @@ +# Architecture +BR2_powerpc64le=y +BR2_powerpc_power8=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="hvc0" +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.1" +BR2_LINUX_KERNEL_DEFCONFIG="pseries_le" +BR2_LINUX_KERNEL_VMLINUX=y diff --git a/buildroot/configs/qemu_ppc_g3beige_defconfig b/buildroot/configs/qemu_ppc_g3beige_defconfig new file mode 100644 index 0000000..9482aaa --- /dev/null +++ b/buildroot/configs/qemu_ppc_g3beige_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_750=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-g3beige/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_ppc_mpc8544ds_defconfig b/buildroot/configs/qemu_ppc_mpc8544ds_defconfig new file mode 100644 index 0000000..d2d92b6 --- /dev/null +++ b/buildroot/configs/qemu_ppc_mpc8544ds_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_8548=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-mpc8544ds/linux-4.11.config" +BR2_LINUX_KERNEL_VMLINUX=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/qemu_ppc_virtex_ml507_defconfig b/buildroot/configs/qemu_ppc_virtex_ml507_defconfig new file mode 100644 index 0000000..84cb329 --- /dev/null +++ b/buildroot/configs/qemu_ppc_virtex_ml507_defconfig @@ -0,0 +1,23 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_440=y + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# Use soft float +BR2_SOFT_FLOAT=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/ppc-virtex-ml507/linux-4.9.config" +BR2_LINUX_KERNEL_VMLINUX=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="virtex440-ml507" diff --git a/buildroot/configs/qemu_sh4_r2d_defconfig b/buildroot/configs/qemu_sh4_r2d_defconfig new file mode 100644 index 0000000..becce23 --- /dev/null +++ b/buildroot/configs/qemu_sh4_r2d_defconfig @@ -0,0 +1,22 @@ +# Architecture +BR2_sh=y +BR2_sh4=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttySC1" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4-r2d/linux-4.9.config" +BR2_LINUX_KERNEL_ZIMAGE=y diff --git a/buildroot/configs/qemu_sh4eb_r2d_defconfig b/buildroot/configs/qemu_sh4eb_r2d_defconfig new file mode 100644 index 0000000..61d9ac9 --- /dev/null +++ b/buildroot/configs/qemu_sh4eb_r2d_defconfig @@ -0,0 +1,21 @@ +# Architecture +BR2_sh=y +BR2_sh4eb=y + +# System +BR2_TARGET_GENERIC_GETTY_PORT="ttySC1" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sh4eb-r2d/linux-4.9.config" +BR2_LINUX_KERNEL_ZIMAGE=y diff --git a/buildroot/configs/qemu_sparc64_sun4u_defconfig b/buildroot/configs/qemu_sparc64_sun4u_defconfig new file mode 100644 index 0000000..072fba7 --- /dev/null +++ b/buildroot/configs/qemu_sparc64_sun4u_defconfig @@ -0,0 +1,20 @@ +# Architecture +BR2_sparc64=y +BR2_sparc_v9=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.12" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc64-sun4u/linux-4.11.config" diff --git a/buildroot/configs/qemu_sparc_ss10_defconfig b/buildroot/configs/qemu_sparc_ss10_defconfig new file mode 100644 index 0000000..8c6b563 --- /dev/null +++ b/buildroot/configs/qemu_sparc_ss10_defconfig @@ -0,0 +1,20 @@ +# Architecture +BR2_sparc=y +BR2_sparc_v8=y + +# System +BR2_SYSTEM_DHCP="eth0" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Linux kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.12" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/sparc-ss10/linux-4.11.config" diff --git a/buildroot/configs/qemu_x86_64_defconfig b/buildroot/configs/qemu_x86_64_defconfig new file mode 100644 index 0000000..b92ae17 --- /dev/null +++ b/buildroot/configs/qemu_x86_64_defconfig @@ -0,0 +1,20 @@ +# Architecture +BR2_x86_64=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="tty1" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86_64/linux-4.15.config" diff --git a/buildroot/configs/qemu_x86_defconfig b/buildroot/configs/qemu_x86_defconfig new file mode 100644 index 0000000..ed6c198 --- /dev/null +++ b/buildroot/configs/qemu_x86_defconfig @@ -0,0 +1,21 @@ +# Architecture +BR2_i386=y +BR2_x86_pentiumpro=y + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="tty1" + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux-4.15.config" diff --git a/buildroot/configs/qemu_xtensa_lx60_defconfig b/buildroot/configs/qemu_xtensa_lx60_defconfig new file mode 100644 index 0000000..d8614ef --- /dev/null +++ b/buildroot/configs/qemu_xtensa_lx60_defconfig @@ -0,0 +1,25 @@ +# Architecture +BR2_xtensa=y +BR2_XTENSA_CUSTOM=y +BR2_XTENSA_OVERLAY_FILE="https://github.com/jcmvbkbc/xtensa-toolchain-build/raw/95291b7c39e6f790d0b2f062c945a630290f2c81/overlays/xtensa_dc233c.tar.gz" + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux-4.11.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="Image.elf" +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="Image" diff --git a/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig b/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig new file mode 100644 index 0000000..174ebd3 --- /dev/null +++ b/buildroot/configs/qemu_xtensa_lx60_nommu_defconfig @@ -0,0 +1,29 @@ +# Architecture +BR2_xtensa=y +BR2_XTENSA_CUSTOM=y +BR2_XTENSA_OVERLAY_FILE="https://github.com/jcmvbkbc/xtensa-toolchain-build/raw/95291b7c39e6f790d0b2f062c945a630290f2c81/overlays/xtensa_dc233c.tar.gz" + +# Toolchain +BR2_PACKAGE_HOST_ELF2FLT=y +# BR2_USE_MMU is not set + +# System +BR2_SYSTEM_DHCP="eth0" +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Filesystem +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.11 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/xtensa-lx60/linux-4.11-nommu.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_NAME="Image.elf" +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="Image" diff --git a/buildroot/configs/raspberrypi0_defconfig b/buildroot/configs/raspberrypi0_defconfig new file mode 100644 index 0000000..0fb8a99 --- /dev/null +++ b/buildroot/configs/raspberrypi0_defconfig @@ -0,0 +1,34 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" + +# Build the DTBs for A/B from the kernel sources: the zero is the same +# as the A+ model, just in a different form-factor +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-b-plus bcm2708-rpi-0-w" + +BR2_PACKAGE_RPI_FIRMWARE=y +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi0/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi0/post-image.sh" diff --git a/buildroot/configs/raspberrypi2_defconfig b/buildroot/configs/raspberrypi2_defconfig new file mode 100644 index 0000000..962a58c --- /dev/null +++ b/buildroot/configs/raspberrypi2_defconfig @@ -0,0 +1,36 @@ +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_EABIHF=y +BR2_ARM_FPU_NEON_VFPV4=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" + +# Build the DTB from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2709-rpi-2-b" + +BR2_PACKAGE_RPI_FIRMWARE=y +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi2/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi2/post-image.sh" diff --git a/buildroot/configs/raspberrypi3_64_defconfig b/buildroot/configs/raspberrypi3_64_defconfig new file mode 100644 index 0000000..6a35ac3 --- /dev/null +++ b/buildroot/configs/raspberrypi3_64_defconfig @@ -0,0 +1,37 @@ +BR2_aarch64=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3" + +# Build the DTB from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2837-rpi-3-b" + +BR2_PACKAGE_RPI_FIRMWARE=y +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3-64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3-64/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="--aarch64" diff --git a/buildroot/configs/raspberrypi3_defconfig b/buildroot/configs/raspberrypi3_defconfig new file mode 100644 index 0000000..359d549 --- /dev/null +++ b/buildroot/configs/raspberrypi3_defconfig @@ -0,0 +1,36 @@ +BR2_arm=y +BR2_cortex_a53=y +BR2_ARM_FPU_NEON_VFPV4=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" + +# Build the DTB from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-cm3" + +BR2_PACKAGE_RPI_FIRMWARE=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="--add-pi3-miniuart-bt-overlay" diff --git a/buildroot/configs/raspberrypi3_qt5we_defconfig b/buildroot/configs/raspberrypi3_qt5we_defconfig new file mode 100644 index 0000000..d4ada47 --- /dev/null +++ b/buildroot/configs/raspberrypi3_qt5we_defconfig @@ -0,0 +1,50 @@ +BR2_arm=y +BR2_cortex_a53=y +BR2_ARM_FPU_NEON_VFPV4=y + +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" + +# Build the DTB from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-cm3" + +# Build Qt5 WebEngine +BR2_PACKAGE_LIBERATION=y +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5BASE_EXAMPLES=y +BR2_PACKAGE_QT5BASE_GIF=y +BR2_PACKAGE_QT5BASE_JPEG=y +BR2_PACKAGE_QT5BASE_PNG=y +BR2_PACKAGE_QT5WEBENGINE=y +BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS=y +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_USERLAND=y +BR2_PACKAGE_CA_CERTIFICATES=y +BR2_PACKAGE_NTP=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="360M" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="--add-pi3-miniuart-bt-overlay --gpu_mem_1024=200" diff --git a/buildroot/configs/raspberrypi_defconfig b/buildroot/configs/raspberrypi_defconfig new file mode 100644 index 0000000..daca836 --- /dev/null +++ b/buildroot/configs/raspberrypi_defconfig @@ -0,0 +1,35 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_ARM_EABIHF=y + +BR2_SYSTEM_DHCP="eth0" + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +BR2_TOOLCHAIN_BUILDROOT_CXX=y + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" + +# Build the DTBs for A/B, A+/B+ and compute module from the kernel sources +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-b bcm2708-rpi-b-plus bcm2708-rpi-cm" + +BR2_PACKAGE_RPI_FIRMWARE=y +# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi/post-image.sh" diff --git a/buildroot/configs/roseapplepi_defconfig b/buildroot/configs/roseapplepi_defconfig new file mode 100644 index 0000000..6627ff4 --- /dev/null +++ b/buildroot/configs/roseapplepi_defconfig @@ -0,0 +1,40 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y + +BR2_GLOBAL_PATCH_DIR="board/roseapplepi/patches" +# Linux headers same as kernel, a 3.10 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/roseapplepi/post-image.sh" + +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/xapp-le/kernel.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b" +BR2_LINUX_KERNEL_DEFCONFIG="actduino_bubble_gum_linux" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="actduino_bubble_gum_sdboot_linux" + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set + +# Bootloaders +BR2_TARGET_S500_BOOTLOADER=y +BR2_TARGET_S500_BOOTLOADER_BOARD="linux/bubble_gum_sd" +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/xapp-le/u-boot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="a035d2673a90143a1a74557503b2e137b1447ae6" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="actduino_bubble_gum_v10" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/s6lx9_microboard_defconfig b/buildroot/configs/s6lx9_microboard_defconfig new file mode 100644 index 0000000..f77c80b --- /dev/null +++ b/buildroot/configs/s6lx9_microboard_defconfig @@ -0,0 +1,14 @@ +BR2_microblaze=y +BR2_microblazeel=y +# Linux headers same as kernel, a 4.4 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.4.7" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/avnet/s6lx9_microboard/lx9_mmu_defconfig" +BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y +BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/avnet/s6lx9_microboard/lx9_mmu.dts" diff --git a/buildroot/configs/sheevaplug_defconfig b/buildroot/configs/sheevaplug_defconfig new file mode 100644 index 0000000..edafffe --- /dev/null +++ b/buildroot/configs/sheevaplug_defconfig @@ -0,0 +1,33 @@ +# Architecture +BR2_arm=y +BR2_arm926t=y + +# system +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_SYSTEM_DHCP="eth0" + +# filesystem +BR2_TARGET_ROOTFS_JFFS2=y +BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sheevaplug" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.05" +BR2_TARGET_UBOOT_FORMAT_KWB=y +# BR2_TARGET_UBOOT_NETWORK is not set + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.13" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v5" +BR2_LINUX_KERNEL_APPENDED_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="kirkwood-sheevaplug" diff --git a/buildroot/configs/snps_aarch64_vdk_defconfig b/buildroot/configs/snps_aarch64_vdk_defconfig new file mode 100644 index 0000000..b55dce1 --- /dev/null +++ b/buildroot/configs/snps_aarch64_vdk_defconfig @@ -0,0 +1,12 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_TARGET_GENERIC_HOSTNAME="vdk-buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to SNPS VDK by Buildroot" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/synopsys/vdk/linux-vdk-aarch64-defconfig" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/buildroot/configs/snps_arc700_axs101_defconfig b/buildroot/configs/snps_arc700_axs101_defconfig new file mode 100644 index 0000000..0fefaf4 --- /dev/null +++ b/buildroot/configs/snps_arc700_axs101_defconfig @@ -0,0 +1,27 @@ +# Architecture +BR2_arcle=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="axs101" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC Software Development Platform" +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/synopsys/axs10x/fs-overlay" + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="axs101" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.01" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="axs101" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/snps_archs38_axs103_defconfig b/buildroot/configs/snps_archs38_axs103_defconfig new file mode 100644 index 0000000..39ceeae --- /dev/null +++ b/buildroot/configs/snps_archs38_axs103_defconfig @@ -0,0 +1,29 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="axs103" +BR2_TARGET_GENERIC_ISSUE="Welcome to the ARC Software Development Platform" +BR2_TARGET_ROOTFS_INITRAMFS=y +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/synopsys/axs10x/fs-overlay" + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="axs103_smp" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.01" +BR2_TARGET_UBOOT_PATCH="board/synopsys/axs10x/patches/u-boot" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="axs103" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/snps_archs38_haps_defconfig b/buildroot/configs/snps_archs38_haps_defconfig new file mode 100644 index 0000000..6583c1e --- /dev/null +++ b/buildroot/configs/snps_archs38_haps_defconfig @@ -0,0 +1,18 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="zebu_hs" +BR2_TARGET_GENERIC_ISSUE="Welcome to the HAPS Development Platform" +BR2_TARGET_ROOTFS_INITRAMFS=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="haps_hs_smp" +BR2_LINUX_KERNEL_VMLINUX=y diff --git a/buildroot/configs/snps_archs38_vdk_defconfig b/buildroot/configs/snps_archs38_vdk_defconfig new file mode 100644 index 0000000..46b539b --- /dev/null +++ b/buildroot/configs/snps_archs38_vdk_defconfig @@ -0,0 +1,20 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="archs38_vdk" +BR2_TARGET_GENERIC_ISSUE="Welcome to the HS38 VDK Software Development Platform" +BR2_ROOTFS_OVERLAY="board/synopsys/axs10x/fs-overlay" +BR2_TARGET_ROOTFS_EXT2=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_DEFCONFIG="vdk_hs38_smp" +BR2_LINUX_KERNEL_VMLINUX=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/buildroot/configs/socrates_cyclone5_defconfig b/buildroot/configs/socrates_cyclone5_defconfig new file mode 100644 index 0000000..45355c1 --- /dev/null +++ b/buildroot/configs/socrates_cyclone5_defconfig @@ -0,0 +1,33 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_NEON=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/altera/socrates_cyclone5/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/altera-opensource/linux-socfpga.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_socfpga-4.1.33-ltsi_17.07.02_pr" +BR2_LINUX_KERNEL_DEFCONFIG="socfpga" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="socfpga_cyclone5_socrates" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/altera-opensource/u-boot-socfpga.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="v2017.07" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="socfpga_socrates" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC=y +BR2_TARGET_UBOOT_ENVIMAGE=y +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/altera/socrates_cyclone5/boot-env.txt" +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="8192" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/solidrun_macchiatobin_mainline_defconfig b/buildroot/configs/solidrun_macchiatobin_mainline_defconfig new file mode 100644 index 0000000..17fb9d0 --- /dev/null +++ b/buildroot/configs/solidrun_macchiatobin_mainline_defconfig @@ -0,0 +1,43 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +BR2_TARGET_GENERIC_HOSTNAME="mcbin" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for Marvell MacchiatoBin" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/atf-marvell.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="43965481990fd92e9666cf9371a8cf478055ec7c" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="USE_COHERENT_MEM=0" +BR2_TARGET_BINARIES_MARVELL=y +BR2_TARGET_BINARIES_MARVELL_8040=y +BR2_TARGET_MV_DDR_MARVELL=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="mvebu_mcbin-88f8040" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-8040-mcbin" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/solidrun/macchiatobin/linux-extras.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# rootfs +BR2_TARGET_ROOTFS_TAR=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/macchiatobin/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/macchiatobin/post-build.sh" diff --git a/buildroot/configs/solidrun_macchiatobin_marvell_defconfig b/buildroot/configs/solidrun_macchiatobin_marvell_defconfig new file mode 100644 index 0000000..201562b --- /dev/null +++ b/buildroot/configs/solidrun_macchiatobin_marvell_defconfig @@ -0,0 +1,44 @@ +BR2_aarch64=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +BR2_TARGET_GENERIC_HOSTNAME="mcbin" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for Marvell MacchiatoBin" + +# Firmware +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/atf-marvell.git" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="43965481990fd92e9666cf9371a8cf478055ec7c" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="USE_COHERENT_MEM=0" +BR2_TARGET_BINARIES_MARVELL=y +BR2_TARGET_BINARIES_MARVELL_8040=y +BR2_TARGET_MV_DDR_MARVELL=y + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/u-boot-marvell" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="u-boot-2017.03-armada-17.10" +BR2_TARGET_UBOOT_BOARDNAME="mvebu_mcbin-88f8040" +BR2_TARGET_UBOOT_NEEDS_DTC=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/linux-marvell" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux-4.4.52-armada-17.10" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v8_lsp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-8040-mcbin" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# rootfs +BR2_TARGET_ROOTFS_TAR=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/macchiatobin/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/macchiatobin/post-build.sh" diff --git a/buildroot/configs/stm32f429_disco_defconfig b/buildroot/configs/stm32f429_disco_defconfig new file mode 100644 index 0000000..5237e9a --- /dev/null +++ b/buildroot/configs/stm32f429_disco_defconfig @@ -0,0 +1,18 @@ +BR2_arm=y +BR2_cortex_m4=y +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f429-disco/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32-post-build.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11" +BR2_LINUX_KERNEL_DEFCONFIG="stm32" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="xipImage" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f429-disco" +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" +BR2_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_AFBOOT_STM32=y +BR2_PACKAGE_HOST_OPENOCD=y diff --git a/buildroot/configs/stm32f469_disco_defconfig b/buildroot/configs/stm32f469_disco_defconfig new file mode 100644 index 0000000..8b77d8c --- /dev/null +++ b/buildroot/configs/stm32f469_disco_defconfig @@ -0,0 +1,19 @@ +BR2_arm=y +BR2_cortex_m4=y +BR2_GLOBAL_PATCH_DIR="board/stmicroelectronics/stm32f469-disco/patches" +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y +BR2_ROOTFS_POST_BUILD_SCRIPT="board/stmicroelectronics/stm32-post-build.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11" +BR2_LINUX_KERNEL_DEFCONFIG="stm32" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(LINUX_DIR)/arch/arm/configs/dram_0x00000000.config" +BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y +BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="xipImage" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="stm32f469-disco" +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" +BR2_TARGET_ROOTFS_INITRAMFS=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_AFBOOT_STM32=y +BR2_PACKAGE_HOST_OPENOCD=y diff --git a/buildroot/configs/toradex_apalis_imx6_defconfig b/buildroot/configs/toradex_apalis_imx6_defconfig new file mode 100644 index 0000000..b7ef980 --- /dev/null +++ b/buildroot/configs/toradex_apalis_imx6_defconfig @@ -0,0 +1,25 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/toradex/apalis-imx6/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.toradex.com/linux-toradex.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="18717e2b1ca9b0fbf8bafa2717719e1f2c8f1114" +BR2_LINUX_KERNEL_DEFCONFIG="apalis_imx6" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-apalis-eval imx6q-apalis-ixora imx6q-apalis_v1_0-eval imx6q-apalis_v1_0-ixora" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="git://git.toradex.com/u-boot-toradex.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="30a1208727729dae22cb42f9ba9ba17efe5e6f77" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="apalis_imx6" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/buildroot/configs/ts4800_defconfig b/buildroot/configs/ts4800_defconfig new file mode 100644 index 0000000..0999ebc --- /dev/null +++ b/buildroot/configs/ts4800_defconfig @@ -0,0 +1,22 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/technologic/ts4800/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6.3" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/technologic/ts4800/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx51-ts4800" +BR2_PACKAGE_BUSYBOX_WATCHDOG=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_TS4800_MBRBOOT=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="ts4800" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.07" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/ts4900_defconfig b/buildroot/configs/ts4900_defconfig new file mode 100644 index 0000000..e7950ce --- /dev/null +++ b/buildroot/configs/ts4900_defconfig @@ -0,0 +1,16 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/technologic/ts4900/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.12" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x10008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-ts4900" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_PACKAGE_TS4900_FPGA=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/buildroot/configs/ts5500_defconfig b/buildroot/configs/ts5500_defconfig new file mode 100644 index 0000000..871c02e --- /dev/null +++ b/buildroot/configs/ts5500_defconfig @@ -0,0 +1,26 @@ +# architecture +BR2_i386=y +BR2_x86_i586=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" +BR2_ROOTFS_OVERLAY="board/technologic/ts5500/fs-overlay" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/technologic/ts5500/linux-4.14.config" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# rootfs +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# bootloader +BR2_TARGET_SYSLINUX=y +BR2_TARGET_SYSLINUX_MBR=y diff --git a/buildroot/configs/ts7680_defconfig b/buildroot/configs/ts7680_defconfig new file mode 100644 index 0000000..09629a7 --- /dev/null +++ b/buildroot/configs/ts7680_defconfig @@ -0,0 +1,17 @@ +BR2_arm=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/technologic/ts7680/genimage.cfg" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/embeddedarm/linux-3.14.28-imx28.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="ff01621df09b97d9fd546d1b49f4013060142892" +BR2_LINUX_KERNEL_DEFCONFIG="ts76xx" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx28-ts7680" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/buildroot/configs/wandboard_defconfig b/buildroot/configs/wandboard_defconfig new file mode 100644 index 0000000..e6ba1d4 --- /dev/null +++ b/buildroot/configs/wandboard_defconfig @@ -0,0 +1,31 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y +# Linux headers same as kernel, a 4.13 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/wandboard/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/wandboard/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="wandboard" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.09" +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.3" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-wandboard imx6dl-wandboard imx6q-wandboard-revb1 imx6dl-wandboard-revb1" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +# required tools to create the SD card image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/buildroot/configs/warp7_defconfig b/buildroot/configs/warp7_defconfig new file mode 100644 index 0000000..7de4bb5 --- /dev/null +++ b/buildroot/configs/warp7_defconfig @@ -0,0 +1,50 @@ +# architecture +BR2_arm=y +BR2_cortex_a7=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.12 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y + +# system +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# rootfs overlay +BR2_ROOTFS_OVERLAY="board/warp7/rootfs_overlay" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.12.3" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7s-warp" + +# U-Boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="warp7" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# wifi firmware for brcm43430 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# wireless packages +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/warpboard_defconfig b/buildroot/configs/warpboard_defconfig new file mode 100644 index 0000000..1655381 --- /dev/null +++ b/buildroot/configs/warpboard_defconfig @@ -0,0 +1,58 @@ +# architecture +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_ARM_FPU_VFPV3=y + +# Linux headers same as kernel, a 4.9 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y + +# system +BR2_TARGET_GENERIC_HOSTNAME="warpboard" +BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" + +# rootfs overlay +BR2_ROOTFS_OVERLAY="board/freescale/warpboard/rootfs_overlay" + +# kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9" +BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/freescale/warpboard/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sl-warp" + +# wifi firmware for brcm4330 +BR2_PACKAGE_LINUX_FIRMWARE=y +BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y + +# For automatic firmware loading +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y + +# wireless packages +BR2_PACKAGE_WIRELESS_TOOLS=y +BR2_PACKAGE_WPA_SUPPLICANT=y +BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y + +# uboot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BOARDNAME="warp" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11" +BR2_TARGET_UBOOT_FORMAT_IMX=y + +# host utility +BR2_PACKAGE_HOST_DFU_UTIL=y +BR2_PACKAGE_HOST_IMX_USB_LOADER=y + +# Filesystem +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y + +# required tools to create the eMMC image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/zynq_microzed_defconfig b/buildroot/configs/zynq_microzed_defconfig new file mode 100644 index 0000000..a6366ee --- /dev/null +++ b/buildroot/configs/zynq_microzed_defconfig @@ -0,0 +1,33 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Xilinx/linux-xlnx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="xilinx-v2017.3" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="zynq-zed" +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/Xilinx/u-boot-xlnx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="xilinx-v2017.3" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="zynq_microzed" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/zynq_zc706_defconfig b/buildroot/configs/zynq_zc706_defconfig new file mode 100644 index 0000000..0690340 --- /dev/null +++ b/buildroot/configs/zynq_zc706_defconfig @@ -0,0 +1,33 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Xilinx/linux-xlnx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="xilinx-v2017.3" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="zynq-zc706" +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/Xilinx/u-boot-xlnx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="xilinx-v2017.3" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="zynq_zc706" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/zynq_zed_defconfig b/buildroot/configs/zynq_zed_defconfig new file mode 100644 index 0000000..d08f83d --- /dev/null +++ b/buildroot/configs/zynq_zed_defconfig @@ -0,0 +1,33 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Xilinx/linux-xlnx.git" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="xilinx-v2017.3" +BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="zynq-zed" +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/Xilinx/u-boot-xlnx.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="xilinx-v2017.3" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="zynq_zed" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/boot.bin" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/configs/zynq_zybo_defconfig b/buildroot/configs/zynq_zybo_defconfig new file mode 100644 index 0000000..ee6fa06 --- /dev/null +++ b/buildroot/configs/zynq_zybo_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/digilent/zybo/post-image.sh" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6.4" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="zynq-zybo" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.05" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="zynq_zybo" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_ZYNQ_IMAGE=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y diff --git a/buildroot/docs/conf/asciidoc-text.conf b/buildroot/docs/conf/asciidoc-text.conf new file mode 100644 index 0000000..470bdec --- /dev/null +++ b/buildroot/docs/conf/asciidoc-text.conf @@ -0,0 +1,23 @@ +# Refer to following asciidoc documentation: +# http://www.methods.co.nz/asciidoc/userguide.html +# In particular sections "Macros" and "Attribute References" +# +# For hyperlinks, show 'link text [URL]' (if link text provided) or 'URL' +[http-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[https-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[ftp-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[file-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[irc-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} +[mailto-inlinemacro] +{0=}{0? [}{name}:{target}{0?]} + +# Hide image representation from text manual +[image-inlinemacro] +{empty} +[image-blockmacro] +{empty} diff --git a/buildroot/docs/images b/buildroot/docs/images new file mode 120000 index 0000000..7356350 --- /dev/null +++ b/buildroot/docs/images @@ -0,0 +1 @@ +website/images \ No newline at end of file diff --git a/buildroot/docs/manual/adding-board-support.txt b/buildroot/docs/manual/adding-board-support.txt new file mode 100644 index 0000000..f6d74ae --- /dev/null +++ b/buildroot/docs/manual/adding-board-support.txt @@ -0,0 +1,38 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[adding-board-support]] +== Adding support for a particular board + +Buildroot contains basic configurations for several publicly available +hardware boards, so that users of such a board can easily build a system +that is known to work. You are welcome to add support for other boards +to Buildroot too. + +To do so, you need to create a normal Buildroot configuration that +builds a basic system for the hardware: toolchain, kernel, bootloader, +filesystem and a simple BusyBox-only userspace. No specific package +should be selected: the configuration should be as minimal as +possible, and should only build a working basic BusyBox system for the +target platform. You can of course use more complicated configurations +for your internal projects, but the Buildroot project will only +integrate basic board configurations. This is because package +selections are highly application-specific. + +Once you have a known working configuration, run +make +savedefconfig+. This will generate a minimal +defconfig+ file at the +root of the Buildroot source tree. Move this file into the +configs/+ +directory, and rename it +_defconfig+. + +It is recommended to use as much as possible upstream versions of the +Linux kernel and bootloaders, and to use as much as possible default +kernel and bootloader configurations. If they are incorrect for your +board, or no default exists, we encourage you to send fixes to the +corresponding upstream projects. + +However, in the mean time, you may want to store kernel or bootloader +configuration or patches specific to your target platform. To do so, +create a directory +board/+ and a subdirectory ++board//+. You can then store your patches +and configurations in these directories, and reference them from the main +Buildroot configuration. Refer to xref:customize[] for more details. diff --git a/buildroot/docs/manual/adding-packages-asciidoc.txt b/buildroot/docs/manual/adding-packages-asciidoc.txt new file mode 100644 index 0000000..d870c51 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-asciidoc.txt @@ -0,0 +1,124 @@ +// -*- mode:doc; -*- +// vim: syntax=asciidoc + +=== Infrastructure for asciidoc documents + +[[asciidoc-documents-tutorial]] + +The Buildroot manual, which you are currently reading, is entirely written +using the http://asciidoc.org/[AsciiDoc] mark-up syntax. The manual is then +rendered to many formats: + +* html +* split-html +* pdf +* epub +* text + +Although Buildroot only contains one document written in AsciiDoc, there +is, as for packages, an infrastructure for rendering documents using the +AsciiDoc syntax. + +Also as for packages, the AsciiDoc infrastructure is available from a +xref:outside-br-custom[br2-external tree]. This allows documentation for +a br2-external tree to match the Buildroot documentation, as it will be +rendered to the same formats and use the same layout and theme. + +==== +asciidoc-document+ tutorial + +Whereas package infrastructures are suffixed with +-package+, the document +infrastructures are suffixed with +-document+. So, the AsciiDoc infrastructure +is named +asciidoc-document+. + +Here is an example to render a simple AsciiDoc document. + +---- +01: ################################################################################ +02: # +03: # foo-document +04: # +05: ################################################################################ +06: +07: FOO_SOURCES = $(sort $(wildcard $(pkgdir)/*)) +08: $(eval $(call asciidoc-document)) +---- + +On line 7, the Makefile declares what the sources of the document are. +Currently, it is expected that the document's sources are only local; +Buildroot will not attempt to download anything to render a document. +Thus, you must indicate where the sources are. Usually, the string +above is sufficient for a document with no sub-directory structure. + +On line 8, we call the +asciidoc-document+ function, which generates all +the Makefile code necessary to render the document. + +==== +asciidoc-document+ reference + +The list of variables that can be set in a +.mk+ file to give metadata +information is (assuming the document name is +foo+) : + +* +FOO_SOURCES+, mandatory, defines the source files for the document. + +* +FOO_RESOURCES+, optional, may contain a space-separated list of paths + to one or more directories containing so-called resources (like CSS or + images). By default, empty. + +* +FOO_DEPENDENCIES+, optional, the list of packages (most probably, + host-packages) that must be built before building this document. + If a hook of your document needs to access the _Kconfig_ structure, + you may add +prepare-kconfig+ to the list of dependencies. + +There are also additional hooks (see xref:hooks[] for general information +on hooks), that a document may set to define extra actions to be done at +various steps: + +* +FOO_POST_RSYNC_HOOKS+ to run additional commands after the sources + have been copied by Buildroot. This can for example be used to + generate part of the manual with information extracted from the + tree. As an example, Buildroot uses this hook to generate the tables + in the appendices. + +* +FOO_CHECK_DEPENDENCIES_HOOKS+ to run additional tests on required + components to generate the document. In AsciiDoc, it is possible to + call filters, that is, programs that will parse an AsciiDoc block and + render it appropriately (e.g. http://ditaa.sourceforge.net/[ditaa] or + https://pythonhosted.org/aafigure/[aafigure]). + +* +FOO_CHECK_DEPENDENCIES__HOOKS+, to run additional tests for + the specified format ++ (see the list of rendered formats, above). + +Here is a complete example that uses all variables and all hooks: + +---- +01: ################################################################################ +02: # +03: # foo-document +04: # +05: ################################################################################ +06: +07: FOO_SOURCES = $(sort $(wildcard $(pkgdir)/*)) +08: FOO_RESOURCES = $(sort $(wildcard $(pkgdir)/ressources)) +09: +10: define FOO_GEN_EXTRA_DOC +11: /path/to/generate-script --outdir=$(@D) +12: endef +13: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC +14: +15: define FOO_CHECK_MY_PROG +16: if ! which my-prog >/dev/null 2>&1; then \ +17: echo "You need my-prog to generate the foo document"; \ +18: exit 1; \ +19: fi +20: endef +21: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG +22: +23: define FOO_CHECK_MY_OTHER_PROG +24: if ! which my-other-prog >/dev/null 2>&1; then \ +25: echo "You need my-other-prog to generate the foo document as PDF"; \ +26: exit 1; \ +27: fi +28: endef +29: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG +30: +31: $(eval $(call asciidoc-document)) +---- diff --git a/buildroot/docs/manual/adding-packages-autotools.txt b/buildroot/docs/manual/adding-packages-autotools.txt new file mode 100644 index 0000000..a041d91 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-autotools.txt @@ -0,0 +1,175 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for autotools-based packages + +[[autotools-package-tutorial]] + +==== +autotools-package+ tutorial + +First, let's see how to write a +.mk+ file for an autotools-based +package, with an example : + +------------------------ +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_INSTALL_STAGING = YES +11: LIBFOO_INSTALL_TARGET = NO +12: LIBFOO_CONF_OPTS = --disable-shared +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf +14: +15: $(eval $(autotools-package)) +------------------------ + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended) +and the location of the tarball on the Web. Buildroot will automatically +download the tarball from this location. + +On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in +output/staging/+ +is the directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed in +the staging directory: their development files are needed to compile +other libraries or applications depending on them. Also by default, when +staging installation is enabled, packages are installed in this location +using the +make install+ command. + +On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they will +not be used at runtime. By default, target installation is enabled; setting +this variable to NO is almost never needed. Also by default, packages are +installed in this location using the +make install+ command. + +On line 12, we tell Buildroot to pass a custom configure option, that +will be passed to the +./configure+ script before configuring +and building the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line line 15, we invoke the +autotools-package+ +macro that generates all the Makefile rules that actually allows the +package to be built. + +[[autotools-package-reference]] + +==== +autotools-package+ reference + +The main macro of the autotools package infrastructure is ++autotools-package+. It is similar to the +generic-package+ macro. The ability to +have target and host packages is also available, with the ++host-autotools-package+ macro. + +Just like the generic infrastructure, the autotools infrastructure +works by defining a number of variables before calling the ++autotools-package+ macro. + +First, all the package metadata information variables that exist in the +generic infrastructure also exist in the autotools infrastructure: ++LIBFOO_VERSION+, +LIBFOO_SOURCE+, ++LIBFOO_PATCH+, +LIBFOO_SITE+, ++LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+, ++LIBFOO_INSTALL_STAGING+, +LIBFOO_INSTALL_TARGET+. + +A few additional variables, specific to the autotools infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + +* +LIBFOO_SUBDIR+ may contain the name of a subdirectory + inside the package that contains the configure script. This is useful, + if for example, the main configure script is not at the root of the + tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is + not specified, it defaults to +LIBFOO_SUBDIR+. + +* +LIBFOO_CONF_ENV+, to specify additional environment + variables to pass to the configure script. By default, empty. + +* +LIBFOO_CONF_OPTS+, to specify additional configure + options to pass to the configure script. By default, empty. + +* +LIBFOO_MAKE+, to specify an alternate +make+ + command. This is typically useful when parallel make is enabled in + the configuration (using +BR2_JLEVEL+) but that this + feature should be disabled for the given package, for one reason or + another. By default, set to +$(MAKE)+. If parallel building + is not supported by the package, then it should be set to + +LIBFOO_MAKE=$(MAKE1)+. + +* +LIBFOO_MAKE_ENV+, to specify additional environment + variables to pass to make in the build step. These are passed before + the +make+ command. By default, empty. + +* +LIBFOO_MAKE_OPTS+, to specify additional variables to + pass to make in the build step. These are passed after the + +make+ command. By default, empty. + +* +LIBFOO_AUTORECONF+, tells whether the package should + be autoreconfigured or not (i.e. if the configure script and + Makefile.in files should be re-generated by re-running autoconf, + automake, libtool, etc.). Valid values are +YES+ and + +NO+. By default, the value is +NO+ + +* +LIBFOO_AUTORECONF_ENV+, to specify additional environment + variables to pass to the 'autoreconf' program if + +LIBFOO_AUTORECONF=YES+. These are passed in the environment of + the 'autoreconf' command. By default, empty. + +* +LIBFOO_AUTORECONF_OPTS+ to specify additional options + passed to the 'autoreconf' program if + +LIBFOO_AUTORECONF=YES+. By default, empty. + +* +LIBFOO_GETTEXTIZE+, tells whether the package should be + gettextized or not (i.e. if the package uses a different gettext + version than Buildroot provides, and it is needed to run + 'gettextize'.) Only valid when +LIBFOO_AUTORECONF=YES+. Valid + values are +YES+ and +NO+. The default is +NO+. + +* +LIBFOO_GETTEXTIZE_OPTS+, to specify additional options passed to + the 'gettextize' program, if +LIBFOO_GETTEXTIZE=YES+. You may + use that if, for example, the +.po+ files are not located in the + standard place (i.e. in +po/+ at the root of the package.) By + default, '-f'. + +* +LIBFOO_LIBTOOL_PATCH+ tells whether the Buildroot + patch to fix libtool cross-compilation issues should be applied or + not. Valid values are +YES+ and +NO+. By + default, the value is +YES+ + +* +LIBFOO_INSTALL_STAGING_OPTS+ contains the make options + used to install the package to the staging directory. By default, the + value is +DESTDIR=$(STAGING_DIR) install+, which is + correct for most autotools packages. It is still possible to override + it. + +* +LIBFOO_INSTALL_TARGET_OPTS+ contains the make options + used to install the package to the target directory. By default, the + value is +DESTDIR=$(TARGET_DIR) install+. The default + value is correct for most autotools packages, but it is still possible + to override it if needed. + +With the autotools infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most autotools-based packages. However, when required, it is +still possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the autotools + infrastructure is used, if the package +.mk+ file defines its + own +LIBFOO_CONFIGURE_CMDS+ variable, it will be used + instead of the default autotools one. However, using this method + should be restricted to very specific cases. Do not use it in the + general case. diff --git a/buildroot/docs/manual/adding-packages-cargo.txt b/buildroot/docs/manual/adding-packages-cargo.txt new file mode 100644 index 0000000..b7fc09a --- /dev/null +++ b/buildroot/docs/manual/adding-packages-cargo.txt @@ -0,0 +1,110 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Integration of Cargo-based packages + +Cargo is the package manager for the Rust programming language. It allows the +user to build programs or libraries written in Rust, but it also downloads and +manages their dependencies, to ensure repeatable builds. Cargo packages are +called "crates". + +[[cargo-package-tutorial]] + +==== Cargo-based package's +Config.in+ file + +The +Config.in+ file of Cargo-based package 'foo' should contain: + +--------------------------- +01: config BR2_PACKAGE_FOO +02: bool "foo" +03: depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS +04: select BR2_PACKAGE_HOST_CARGO +05: help +06: This is a comment that explains what foo is. +07: +08: http://foosoftware.org/foo/ +--------------------------- + +==== Cargo-based package's +.mk+ file + +Buildroot does not (yet) provide a dedicated package infrastructure for +Cargo-based packages. So, we will explain how to write a +.mk+ file for such a +package. Let's start with an example: + +------------------------------ +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-3.0+ +11: FOO_LICENSE_FILES = COPYING +12: +13: FOO_DEPENDENCIES = host-cargo +14: +15: FOO_CARGO_ENV = CARGO_HOME=$(HOST_DIR)/share/cargo +16: FOO_CARGO_MODE = $(if $(BR2_ENABLE_DEBUG),debug,release) +17: +18: FOO_BIN_DIR = target/$(RUSTC_TARGET_NAME)/$(FOO_CARGO_MODE) +19: +20: FOO_CARGO_OPTS = \ +21: --$(FOO_CARGO_MODE) \ +22: --target=$(RUSTC_TARGET_NAME) \ +23: --manifest-path=$(@D)/Cargo.toml +24: +25: define FOO_BUILD_CMDS +26: $(TARGET_MAKE_ENV) $(FOO_CARGO_ENV) \ +27: cargo build $(FOO_CARGO_OPTS) +28: endef +29: +30: define FOO_INSTALL_TARGET_CMDS +31: $(INSTALL) -D -m 0755 $(@D)/$(FOO_BIN_DIR)/foo \ +32: $(TARGET_DIR)/usr/bin/foo +33: endef +34: +35: $(eval $(generic-package)) +-------------------------------- + +The Makefile starts with the definition of the standard variables for package +declaration (lines 7 to 11). + +As seen in line 35, it is based on the +xref:generic-package-tutorial[+generic-package+ infrastructure]. So, it defines +the variables required by this particular infrastructure, where Cargo is +invoked: + +* +FOO_BUILD_CMDS+: Cargo is invoked to perform the build. The options required + to configure the cross-compilation of the package are passed via + +FOO_CONF_OPTS+. + +* +FOO_INSTALL_TARGET_CMDS+: The binary executable generated is installed on + the target. + +In order to have Cargo available for the build, +FOO_DEPENDENCIES+ needs to +contain +host-cargo+. + +To sum it up, to add a new Cargo-based package, the Makefile example can be +copied verbatim then edited to replace all occurences of +FOO+ with the +uppercase name of the new package and update the values of the standard +variables. + +==== About Dependencies Management + +A crate can depend on other libraries from crates.io or git repositories, listed +in its Cargo.toml file. Before starting a build, Cargo usually downloads +automatically them. This step can also be performed independently, via the ++cargo fetch+ command. + +Cargo maintains a local cache of the registry index and of git checkouts of the +crates, whose location is given by +$CARGO_HOME+. As seen in the package +Makefile example at line 15, this environment variable is set to ++$(HOST_DIR)/share/cargo+. + +This dependency download mechanism is not convenient when performing an offline +build, as Cargo will fail to fetch the dependencies. In that case, it is advised +to generate a tarball of the dependencies using the +cargo vendor+ and add it to ++FOO_EXTRA_DOWNLOADS+. diff --git a/buildroot/docs/manual/adding-packages-cmake.txt b/buildroot/docs/manual/adding-packages-cmake.txt new file mode 100644 index 0000000..6ccf390 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-cmake.txt @@ -0,0 +1,152 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for CMake-based packages + +[[cmake-package-tutorial]] + +==== +cmake-package+ tutorial + +First, let's see how to write a +.mk+ file for a CMake-based package, +with an example : + +------------------------ +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_INSTALL_STAGING = YES +11: LIBFOO_INSTALL_TARGET = NO +12: LIBFOO_CONF_OPTS = -DBUILD_DEMOS=ON +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf +14: +15: $(eval $(cmake-package)) +------------------------ + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended) +and the location of the tarball on the Web. Buildroot will automatically +download the tarball from this location. + +On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in +output/staging/+ +is the directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed in +the staging directory: their development files are needed to compile +other libraries or applications depending on them. Also by default, when +staging installation is enabled, packages are installed in this location +using the +make install+ command. + +On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they will +not be used at runtime. By default, target installation is enabled; setting +this variable to NO is almost never needed. Also by default, packages are +installed in this location using the +make install+ command. + +On line 12, we tell Buildroot to pass custom options to CMake when it is +configuring the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line line 15, we invoke the +cmake-package+ +macro that generates all the Makefile rules that actually allows the +package to be built. + +[[cmake-package-reference]] + +==== +cmake-package+ reference + +The main macro of the CMake package infrastructure is ++cmake-package+. It is similar to the +generic-package+ macro. The ability to +have target and host packages is also available, with the ++host-cmake-package+ macro. + +Just like the generic infrastructure, the CMake infrastructure works +by defining a number of variables before calling the +cmake-package+ +macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the CMake infrastructure: ++LIBFOO_VERSION+, +LIBFOO_SOURCE+, +LIBFOO_PATCH+, +LIBFOO_SITE+, ++LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+, +LIBFOO_INSTALL_STAGING+, ++LIBFOO_INSTALL_TARGET+. + +A few additional variables, specific to the CMake infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + +* +LIBFOO_SUBDIR+ may contain the name of a subdirectory inside the + package that contains the main CMakeLists.txt file. This is useful, + if for example, the main CMakeLists.txt file is not at the root of + the tree extracted by the tarball. If +HOST_LIBFOO_SUBDIR+ is not + specified, it defaults to +LIBFOO_SUBDIR+. + +* +LIBFOO_CONF_ENV+, to specify additional environment variables to + pass to CMake. By default, empty. + +* +LIBFOO_CONF_OPTS+, to specify additional configure options to pass + to CMake. By default, empty. A number of common CMake options are + set by the +cmake-package+ infrastructure; so it is normally not + necessary to set them in the package's +*.mk+ file unless you want + to override them: + +** +CMAKE_BUILD_TYPE+ is driven by +BR2_ENABLE_DEBUG+; +** +CMAKE_INSTALL_PREFIX+; +** +BUILD_SHARED_LIBS+ is driven by +BR2_STATIC_LIBS+; +** +BUILD_DOC+, +BUILD_DOCS+ are disabled; +** +BUILD_EXAMPLE+, +BUILD_EXAMPLES+ are disabled; +** +BUILD_TEST+, +BUILD_TESTS+, +BUILD_TESTING+ are disabled. + +* +LIBFOO_SUPPORTS_IN_SOURCE_BUILD = NO+ should be set when the package + cannot be built inside the source tree but needs a separate build + directory. + +* +LIBFOO_MAKE+, to specify an alternate +make+ command. This is + typically useful when parallel make is enabled in the configuration + (using +BR2_JLEVEL+) but that this feature should be disabled for + the given package, for one reason or another. By default, set to + +$(MAKE)+. If parallel building is not supported by the package, + then it should be set to +LIBFOO_MAKE=$(MAKE1)+. + +* +LIBFOO_MAKE_ENV+, to specify additional environment variables to + pass to make in the build step. These are passed before the +make+ + command. By default, empty. + +* +LIBFOO_MAKE_OPTS+, to specify additional variables to pass to make + in the build step. These are passed after the +make+ command. By + default, empty. + +* +LIBFOO_INSTALL_STAGING_OPTS+ contains the make options used to + install the package to the staging directory. By default, the value + is +DESTDIR=$(STAGING_DIR) install+, which is correct for most + CMake packages. It is still possible to override it. + +* +LIBFOO_INSTALL_TARGET_OPTS+ contains the make options used to + install the package to the target directory. By default, the value + is +DESTDIR=$(TARGET_DIR) install+. The default value is correct + for most CMake packages, but it is still possible to override it if + needed. + +With the CMake infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most CMake-based packages. However, when required, it is still +possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the CMake + infrastructure is used, if the package +.mk+ file defines its own + +LIBFOO_CONFIGURE_CMDS+ variable, it will be used instead of the + default CMake one. However, using this method should be restricted + to very specific cases. Do not use it in the general case. diff --git a/buildroot/docs/manual/adding-packages-conclusion.txt b/buildroot/docs/manual/adding-packages-conclusion.txt new file mode 100644 index 0000000..93f90a4 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-conclusion.txt @@ -0,0 +1,13 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Conclusion + +As you can see, adding a software package to Buildroot is simply a +matter of writing a Makefile using an existing example and modifying it +according to the compilation process required by the package. + +If you package software that might be useful for other people, don't +forget to send a patch to the Buildroot mailing list (see +xref:submitting-patches[])! + diff --git a/buildroot/docs/manual/adding-packages-directory.txt b/buildroot/docs/manual/adding-packages-directory.txt new file mode 100644 index 0000000..c9857a8 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-directory.txt @@ -0,0 +1,547 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Package directory + +First of all, create a directory under the +package+ directory for +your software, for example +libfoo+. + +Some packages have been grouped by topic in a sub-directory: ++x11r7+, +qt5+ and +gstreamer+. If your package fits in +one of these categories, then create your package directory in these. +New subdirectories are discouraged, however. + +=== Config files + +For the package to be displayed in the configuration tool, you need to +create a Config file in your package directory. There are two types: ++Config.in+ and +Config.in.host+. + +==== +Config.in+ file + +For packages used on the target, create a file named +Config.in+. This +file will contain the option descriptions related to our +libfoo+ software +that will be used and displayed in the configuration tool. It should basically +contain: + +--------------------------- +config BR2_PACKAGE_LIBFOO + bool "libfoo" + help + This is a comment that explains what libfoo is. The help text + should be wrapped. + + http://foosoftware.org/libfoo/ +--------------------------- + +The +bool+ line, +help+ line and other metadata information about the +configuration option must be indented with one tab. The help text +itself should be indented with one tab and two spaces, lines should +be wrapped to fit 72 columns, where tab counts for 8, so 62 characters +in the text itself. The help text must mention the upstream URL of the +project after an empty line. + +As a convention specific to Buildroot, the ordering of the attributes +is as follows: + +1. The type of option: +bool+, +string+... with the prompt +2. If needed, the +default+ value(s) +3. Any dependency of the +depends on+ form +4. Any dependency of the +select+ form +5. The help keyword and help text. + +You can add other sub-options into a +if BR2_PACKAGE_LIBFOO...endif+ +statement to configure particular things in your software. You can look at +examples in other packages. The syntax of the +Config.in+ file is the same +as the one for the kernel Kconfig file. The documentation for this syntax is +available at http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt[] + +Finally you have to add your new +libfoo/Config.in+ to ++package/Config.in+ (or in a category subdirectory if you decided to +put your package in one of the existing categories). The files +included there are 'sorted alphabetically' per category and are 'NOT' +supposed to contain anything but the 'bare' name of the package. + +-------------------------- +source "package/libfoo/Config.in" +-------------------------- + + +==== +Config.in.host+ file + +Some packages also need to be built for the host system. There are two +options here: + +* The host package is only required to satisfy build-time + dependencies of one or more target packages. In this case, add + +host-foo+ to the target package's +BAR_DEPENDENCIES+ variable. No + +Config.in.host+ file should be created. + +* The host package should be explicitly selectable by the user from + the configuration menu. In this case, create a +Config.in.host+ file + for that host package: ++ +--------------------------- +config BR2_PACKAGE_HOST_FOO + bool "host foo" + help + This is a comment that explains what foo for the host is. + + http://foosoftware.org/foo/ +--------------------------- ++ +The same coding style and options as for the +Config.in+ file are valid. ++ +Finally you have to add your new +libfoo/Config.in.host+ to ++package/Config.in.host+. The files included there are 'sorted alphabetically' +and are 'NOT' supposed to contain anything but the 'bare' name of the package. ++ +-------------------------- +source "package/foo/Config.in.host" +-------------------------- ++ +The host package will then be available from the +Host utilities+ menu. + +[[depends-on-vs-select]] +==== Choosing +depends on+ or +select+ + +The +Config.in+ file of your package must also ensure that +dependencies are enabled. Typically, Buildroot uses the following +rules: + +* Use a +select+ type of dependency for dependencies on + libraries. These dependencies are generally not obvious and it + therefore make sense to have the kconfig system ensure that the + dependencies are selected. For example, the _libgtk2_ package uses + +select BR2_PACKAGE_LIBGLIB2+ to make sure this library is also + enabled. + The +select+ keyword expresses the dependency with a backward + semantic. + +* Use a +depends on+ type of dependency when the user really needs to + be aware of the dependency. Typically, Buildroot uses this type of + dependency for dependencies on target architecture, MMU support and + toolchain options (see xref:dependencies-target-toolchain-options[]), + or for dependencies on "big" things, such as the X.org system. + The +depends on+ keyword expresses the dependency with a forward + semantic. + +.Note +The current problem with the _kconfig_ language is that these two +dependency semantics are not internally linked. Therefore, it may be +possible to select a package, whom one of its dependencies/requirement +is not met. + +An example illustrates both the usage of +select+ and +depends on+. + +-------------------------- +config BR2_PACKAGE_RRDTOOL + bool "rrdtool" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBART + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + help + RRDtool is the OpenSource industry standard, high performance + data logging and graphing system for time series data. + + http://oss.oetiker.ch/rrdtool/ + +comment "rrdtool needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR +-------------------------- + + +Note that these two dependency types are only transitive with the +dependencies of the same kind. + +This means, in the following example: + +-------------------------- +config BR2_PACKAGE_A + bool "Package A" + +config BR2_PACKAGE_B + bool "Package B" + depends on BR2_PACKAGE_A + +config BR2_PACKAGE_C + bool "Package C" + depends on BR2_PACKAGE_B + +config BR2_PACKAGE_D + bool "Package D" + select BR2_PACKAGE_B + +config BR2_PACKAGE_E + bool "Package E" + select BR2_PACKAGE_D +-------------------------- + +* Selecting +Package C+ will be visible if +Package B+ has been + selected, which in turn is only visible if +Package A+ has been + selected. + +* Selecting +Package E+ will select +Package D+, which will select + +Package B+, it will not check for the dependencies of +Package B+, + so it will not select +Package A+. + +* Since +Package B+ is selected but +Package A+ is not, this violates + the dependency of +Package B+ on +Package A+. Therefore, in such a + situation, the transitive dependency has to be added explicitly: + +-------------------------- +config BR2_PACKAGE_D + bool "Package D" + select BR2_PACKAGE_B + depends on BR2_PACKAGE_A + +config BR2_PACKAGE_E + bool "Package E" + select BR2_PACKAGE_D + depends on BR2_PACKAGE_A +-------------------------- + +Overall, for package library dependencies, +select+ should be +preferred. + +Note that such dependencies will ensure that the dependency option +is also enabled, but not necessarily built before your package. To do +so, the dependency also needs to be expressed in the +.mk+ file of the +package. + +Further formatting details: see xref:writing-rules-config-in[the +coding style]. + +[[dependencies-target-toolchain-options]] +==== Dependencies on target and toolchain options + +Many packages depend on certain options of the toolchain: the choice of +C library, C++ support, thread support, RPC support, wchar support, +or dynamic library support. Some packages can only be built on certain +target architectures, or if an MMU is available in the processor. + +These dependencies have to be expressed with the appropriate 'depends +on' statements in the Config.in file. Additionally, for dependencies on +toolchain options, a +comment+ should be displayed when the option is +not enabled, so that the user knows why the package is not available. +Dependencies on target architecture or MMU support should not be +made visible in a comment: since it is unlikely that the user can +freely choose another target, it makes little sense to show these +dependencies explicitly. + +The +comment+ should only be visible if the +config+ option itself would +be visible when the toolchain option dependencies are met. This means +that all other dependencies of the package (including dependencies on +target architecture and MMU support) have to be repeated on the ++comment+ definition. To keep it clear, the +depends on+ statement for +these non-toolchain option should be kept separate from the +depends on+ +statement for the toolchain options. +If there is a dependency on a config option in that same file (typically +the main package) it is preferable to have a global +if ... endif+ +construct rather than repeating the +depends on+ statement on the +comment and other config options. + +The general format of a dependency +comment+ for package foo is: + +-------------------------- +foo needs a toolchain w/ featA, featB, featC +-------------------------- + +for example: + +-------------------------- +mpd needs a toolchain w/ C++, threads, wchar +-------------------------- + +or + +-------------------------- +crda needs a toolchain w/ threads +-------------------------- + +Note that this text is kept brief on purpose, so that it will fit on a +80-character terminal. + +The rest of this section enumerates the different target and toolchain +options, the corresponding config symbols to depend on, and the text to +use in the comment. + +* Target architecture +** Dependency symbol: +BR2_powerpc+, +BR2_mips+, ... (see +arch/Config.in+) +** Comment string: no comment to be added + +* MMU support +** Dependency symbol: +BR2_USE_MMU+ +** Comment string: no comment to be added + +* Gcc +__sync_*+ built-ins used for atomic operations. They are + available in variants operating on 1 byte, 2 bytes, 4 bytes and 8 + bytes. Since different architectures support atomic operations on + different sizes, one dependency symbol is available for each size: +** Dependency symbol: +BR2_TOOLCHAIN_HAS_SYNC_1+ for 1 byte, + +BR2_TOOLCHAIN_HAS_SYNC_2+ for 2 bytes, + +BR2_TOOLCHAIN_HAS_SYNC_4+ for 4 bytes, +BR2_TOOLCHAIN_HAS_SYNC_8+ + for 8 bytes. +** Comment string: no comment to be added + +* Gcc +__atomic_*+ built-ins used for atomic operations. +** Dependency symbol: +BR2_TOOLCHAIN_HAS_ATOMIC+. +** Comment string: no comment to be added + +* Kernel headers +** Dependency symbol: +BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y+, (replace + +X_Y+ with the proper version, see +toolchain/toolchain-common.in+) +** Comment string: +headers >= X.Y+ and/or `headers <= X.Y` (replace + +X.Y+ with the proper version) + +* GCC version +** Dependency symbol: +BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y+, (replace + +X_Y+ with the proper version, see +toolchain/toolchain-common.in+) +** Comment string: +gcc >= X.Y+ and/or `gcc <= X.Y` (replace + +X.Y+ with the proper version) + +* Host GCC version +** Dependency symbol: +BR2_HOST_GCC_AT_LEAST_X_Y+, (replace + +X_Y+ with the proper version, see +Config.in+) +** Comment string: no comment to be added +** Note that it is usually not the package itself that has a minimum + host GCC version, but rather a host-package on which it depends. + +* C library +** Dependency symbol: +BR2_TOOLCHAIN_USES_GLIBC+, + +BR2_TOOLCHAIN_USES_MUSL+, +BR2_TOOLCHAIN_USES_UCLIBC+ +** Comment string: for the C library, a slightly different comment text + is used: +foo needs a glibc toolchain+, or `foo needs a glibc + toolchain w/ C++` + +* C++ support +** Dependency symbol: +BR2_INSTALL_LIBSTDCPP+ +** Comment string: `C++` + +* Fortran support +** Dependency symbol: +BR2_TOOLCHAIN_HAS_FORTRAN+ +** Comment string: `fortran` + +* thread support +** Dependency symbol: +BR2_TOOLCHAIN_HAS_THREADS+ +** Comment string: +threads+ (unless +BR2_TOOLCHAIN_HAS_THREADS_NPTL+ + is also needed, in which case, specifying only +NPTL+ is sufficient) + +* NPTL thread support +** Dependency symbol: +BR2_TOOLCHAIN_HAS_THREADS_NPTL+ +** Comment string: +NPTL+ + +* RPC support +** Dependency symbol: +BR2_TOOLCHAIN_HAS_NATIVE_RPC+ +** Comment string: +RPC+ + +* wchar support +** Dependency symbol: +BR2_USE_WCHAR+ +** Comment string: +wchar+ + +* dynamic library +** Dependency symbol: +!BR2_STATIC_LIBS+ +** Comment string: +dynamic library+ + +==== Dependencies on a Linux kernel built by buildroot + +Some packages need a Linux kernel to be built by buildroot. These are +typically kernel modules or firmware. A comment should be added in the +Config.in file to express this dependency, similar to dependencies on +toolchain options. The general format is: + +-------------------------- +foo needs a Linux kernel to be built +-------------------------- + +If there is a dependency on both toolchain options and the Linux +kernel, use this format: + +-------------------------- +foo needs a toolchain w/ featA, featB, featC and a Linux kernel to be built +-------------------------- + +==== Dependencies on udev /dev management + +If a package needs udev /dev management, it should depend on symbol ++BR2_PACKAGE_HAS_UDEV+, and the following comment should be added: + +-------------------------- +foo needs udev /dev management +-------------------------- + +If there is a dependency on both toolchain options and udev /dev +management, use this format: + +-------------------------- +foo needs udev /dev management and a toolchain w/ featA, featB, featC +-------------------------- + +==== Dependencies on features provided by virtual packages + +Some features can be provided by more than one package, such as the +openGL libraries. + +See xref:virtual-package-tutorial[] for more on the virtual packages. + +=== The +.mk+ file + +[[adding-packages-mk]] + +Finally, here's the hardest part. Create a file named +libfoo.mk+. It +describes how the package should be downloaded, configured, built, +installed, etc. + +Depending on the package type, the +.mk+ file must be written in a +different way, using different infrastructures: + +* *Makefiles for generic packages* (not using autotools or CMake): + These are based on an infrastructure similar to the one used for + autotools-based packages, but require a little more work from the + developer. They specify what should be done for the configuration, + compilation and installation of the package. This + infrastructure must be used for all packages that do not use the + autotools as their build system. In the future, other specialized + infrastructures might be written for other build systems. We cover + them through in a xref:generic-package-tutorial[tutorial] and a + xref:generic-package-reference[reference]. + +* *Makefiles for autotools-based software* (autoconf, automake, etc.): + We provide a dedicated infrastructure for such packages, since + autotools is a very common build system. This infrastructure 'must' + be used for new packages that rely on the autotools as their build + system. We cover them through a xref:autotools-package-tutorial[tutorial] + and xref:autotools-package-reference[reference]. + +* *Makefiles for cmake-based software*: We provide a dedicated + infrastructure for such packages, as CMake is a more and more + commonly used build system and has a standardized behaviour. This + infrastructure 'must' be used for new packages that rely on + CMake. We cover them through a xref:cmake-package-tutorial[tutorial] + and xref:cmake-package-reference[reference]. + +* *Makefiles for Python modules*: We have a dedicated infrastructure + for Python modules that use either the +distutils+ or the + +setuptools+ mechanism. We cover them through a + xref:python-package-tutorial[tutorial] and a + xref:python-package-reference[reference]. + +* *Makefiles for Lua modules*: We have a dedicated infrastructure for + Lua modules available through the LuaRocks web site. We cover them + through a xref:luarocks-package-tutorial[tutorial] and a + xref:luarocks-package-reference[reference]. + +Further formatting details: see xref:writing-rules-mk[the writing +rules]. + +[[adding-packages-hash]] +=== The +.hash+ file + +When possible, you must add a third file, named +libfoo.hash+, that +contains the hashes of the downloaded files for the +libfoo+ +package. The only reason for not adding a +.hash+ file is when hash +checking is not possible due to how the package is downloaded. + +The hashes stored in that file are used to validate the integrity of the +downloaded files and of the license files. + +The format of this file is one line for each file for which to check the +hash, each line being space-separated, with these three fields: + +* the type of hash, one of: +** +md5+, +sha1+, +sha224+, +sha256+, +sha384+, +sha512+, +none+ +* the hash of the file: +** for +none+, one or more non-space chars, usually just the string +xxx+ +** for +md5+, 32 hexadecimal characters +** for +sha1+, 40 hexadecimal characters +** for +sha224+, 56 hexadecimal characters +** for +sha256+, 64 hexadecimal characters +** for +sha384+, 96 hexadecimal characters +** for +sha512+, 128 hexadecimal characters +* the name of the file: +** for a source archive: the basename of the file, without any directory + component, +** for a license file: the path as it appears in +FOO_LICENSE_FILES+. + +Lines starting with a +#+ sign are considered comments, and ignored. Empty +lines are ignored. + +There can be more than one hash for a single file, each on its own line. In +this case, all hashes must match. + +.Note +Ideally, the hashes stored in this file should match the hashes published by +upstream, e.g. on their website, in the e-mail announcement... If upstream +provides more than one type of hash (e.g. +sha1+ and +sha512+), then it is +best to add all those hashes in the +.hash+ file. If upstream does not +provide any hash, or only provides an +md5+ hash, then compute at least one +strong hash yourself (preferably +sha256+, but not +md5+), and mention +this in a comment line above the hashes. + +.Note +The hashes for license files are used to detect a license change when a +package version is bumped. The hashes are checked during the make legal-info +target run. For a package with multiple versions (like Qt5), +create the hash file in a subdirectory ++ of that package +(see also xref:patch-apply-order[]). + +.Note +The number of spaces does not matter, so one can use spaces (or tabs) to +properly align the different fields. + +The +none+ hash type is reserved to those archives downloaded from a +repository, like a 'git clone', a 'subversion checkout'... + +The example below defines a +sha1+ and a +sha256+ published by upstream for +the main +libfoo-1.2.3.tar.bz2+ tarball, an +md5+ from upstream and a +locally-computed +sha256+ hashes for a binary blob, a +sha256+ for a +downloaded patch, and an archive with no hash: + +---- +# Hashes from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.{sha1,sha256}: +sha1 486fb55c3efa71148fe07895fd713ea3a5ae343a libfoo-1.2.3.tar.bz2 +sha256 efc8103cc3bcb06bda6a781532d12701eb081ad83e8f90004b39ab81b65d4369 libfoo-1.2.3.tar.bz2 + +# md5 from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.md5, sha256 locally computed: +md5 2d608f3c318c6b7557d551a5a09314f03452f1a1 libfoo-data.bin +sha256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b libfoo-data.bin + +# Locally computed: +sha256 ff52101fb90bbfc3fe9475e425688c660f46216d7e751c4bbdb1dc85cdccacb9 libfoo-fix-blabla.patch + +# No hash for 1234: +none xxx libfoo-1234.tar.gz + +# Hash for license files: +sha256 a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8 COPYING +sha256 01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55 doc/COPYING.LGPL +---- + +If the +.hash+ file is present, and it contains one or more hashes for a +downloaded file, the hash(es) computed by Buildroot (after download) must +match the hash(es) stored in the +.hash+ file. If one or more hashes do +not match, Buildroot considers this an error, deletes the downloaded file, +and aborts. + +If the +.hash+ file is present, but it does not contain a hash for a +downloaded file, Buildroot considers this an error and aborts. However, +the downloaded file is left in the download directory since this +typically indicates that the +.hash+ file is wrong but the downloaded +file is probably OK. + +Hashes are currently checked for files fetched from http/ftp servers, +Git repositories, files copied using scp and local files. Hashes are +not checked for other version control systems (such as Subversion, +CVS, etc.) because Buildroot currently does not generate reproducible +tarballs when source code is fetched from such version control +systems. + +Hashes should only be added in +.hash+ files for files that are +guaranteed to be stable. For example, patches auto-generated by Github +are not guaranteed to be stable, and therefore their hashes can change +over time. Such patches should not be downloaded, and instead be added +locally to the package folder. + +If the +.hash+ file is missing, then no check is done at all. diff --git a/buildroot/docs/manual/adding-packages-generic.txt b/buildroot/docs/manual/adding-packages-generic.txt new file mode 100644 index 0000000..ff8de69 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-generic.txt @@ -0,0 +1,561 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for packages with specific build systems + +By 'packages with specific build systems' we mean all the packages +whose build system is not one of the standard ones, such as +'autotools' or 'CMake'. This typically includes packages whose build +system is based on hand-written Makefiles or shell scripts. + +[[generic-package-tutorial]] + +==== +generic-package+ tutorial + +------------------------------ +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_LICENSE = GPL-3.0+ +11: LIBFOO_LICENSE_FILES = COPYING +12: LIBFOO_INSTALL_STAGING = YES +13: LIBFOO_CONFIG_SCRIPTS = libfoo-config +14: LIBFOO_DEPENDENCIES = host-libaaa libbbb +15: +16: define LIBFOO_BUILD_CMDS +17: $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +18: endef +19: +20: define LIBFOO_INSTALL_STAGING_CMDS +21: $(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a +22: $(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h +23: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib +24: endef +25: +26: define LIBFOO_INSTALL_TARGET_CMDS +27: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib +28: $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d +29: endef +30: +31: define LIBFOO_USERS +32: foo -1 libfoo -1 * - - - LibFoo daemon +33: endef +34: +35: define LIBFOO_DEVICES +36: /dev/foo c 666 0 0 42 0 - - - +37: endef +38: +39: define LIBFOO_PERMISSIONS +40: /bin/foo f 4755 foo libfoo - - - - - +41: endef +42: +43: $(eval $(generic-package)) +-------------------------------- + +The Makefile begins on line 7 to 11 with metadata information: the +version of the package (+LIBFOO_VERSION+), the name of the +tarball containing the package (+LIBFOO_SOURCE+) (xz-ed tarball recommended) +the Internet location at which the tarball can be downloaded from +(+LIBFOO_SITE+), the license (+LIBFOO_LICENSE+) and file with the +license text (+LIBFOO_LICENSE_FILES+). All variables must start with +the same prefix, +LIBFOO_+ in this case. This prefix is always the +uppercased version of the package name (see below to understand where +the package name is defined). + +On line 12, we specify that this package wants to install something to +the staging space. This is often needed for libraries, since they must +install header files and other development files in the staging space. +This will ensure that the commands listed in the ++LIBFOO_INSTALL_STAGING_CMDS+ variable will be executed. + +On line 13, we specify that there is some fixing to be done to some +of the 'libfoo-config' files that were installed during ++LIBFOO_INSTALL_STAGING_CMDS+ phase. +These *-config files are executable shell script files that are +located in '$(STAGING_DIR)/usr/bin' directory and are executed +by other 3rd party packages to find out the location and the linking +flags of this particular package. + +The problem is that all these *-config files by default give wrong, +host system linking flags that are unsuitable for cross-compiling. + +For example: '-I/usr/include' instead of '-I$(STAGING_DIR)/usr/include' +or: '-L/usr/lib' instead of '-L$(STAGING_DIR)/usr/lib' + +So some sed magic is done to these scripts to make them give correct +flags. +The argument to be given to +LIBFOO_CONFIG_SCRIPTS+ is the file name(s) +of the shell script(s) needing fixing. All these names are relative to +'$(STAGING_DIR)/usr/bin' and if needed multiple names can be given. + +In addition, the scripts listed in +LIBFOO_CONFIG_SCRIPTS+ are removed +from +$(TARGET_DIR)/usr/bin+, since they are not needed on the target. + +.Config script: 'divine' package +================================ +Package divine installs shell script '$(STAGING_DIR)/usr/bin/divine-config'. + +So its fixup would be: + +-------------------------------- +DIVINE_CONFIG_SCRIPTS = divine-config +-------------------------------- +================================ + +.Config script: 'imagemagick' package: +================================ +Package imagemagick installs the following scripts: +'$(STAGING_DIR)/usr/bin/{Magick,Magick++,MagickCore,MagickWand,Wand}-config' + +So it's fixup would be: + +-------------------------------- +IMAGEMAGICK_CONFIG_SCRIPTS = \ + Magick-config Magick++-config \ + MagickCore-config MagickWand-config Wand-config +-------------------------------- +================================ + +On line 14, we specify the list of dependencies this package relies +on. These dependencies are listed in terms of lower-case package names, +which can be packages for the target (without the +host-+ +prefix) or packages for the host (with the +host-+) prefix). +Buildroot will ensure that all these packages are built and installed +'before' the current package starts its configuration. + +The rest of the Makefile, lines 16..29, defines what should be done +at the different steps of the package configuration, compilation and +installation. ++LIBFOO_BUILD_CMDS+ tells what steps should be performed to +build the package. +LIBFOO_INSTALL_STAGING_CMDS+ tells what +steps should be performed to install the package in the staging space. ++LIBFOO_INSTALL_TARGET_CMDS+ tells what steps should be +performed to install the package in the target space. + +All these steps rely on the +$(@D)+ variable, which +contains the directory where the source code of the package has been +extracted. + +On lines 31..43, we define a user that is used by this package (e.g. +to run a daemon as non-root) (+LIBFOO_USERS+). + +On line 35..37, we define a device-node file used by this package +(+LIBFOO_DEVICES+). + +On line 39..41, we define the permissions to set to specific files +installed by this package (+LIBFOO_PERMISSIONS+). + +Finally, on line 43, we call the +generic-package+ function, which +generates, according to the variables defined previously, all the +Makefile code necessary to make your package working. + +[[generic-package-reference]] + +==== +generic-package+ reference + +There are two variants of the generic target. The +generic-package+ macro is +used for packages to be cross-compiled for the target. The ++host-generic-package+ macro is used for host packages, natively compiled +for the host. It is possible to call both of them in a single +.mk+ +file: once to create the rules to generate a target +package and once to create the rules to generate a host package: + +---------------------- +$(eval $(generic-package)) +$(eval $(host-generic-package)) +---------------------- + +This might be useful if the compilation of the target package requires +some tools to be installed on the host. If the package name is ++libfoo+, then the name of the package for the target is also ++libfoo+, while the name of the package for the host is ++host-libfoo+. These names should be used in the DEPENDENCIES +variables of other packages, if they depend on +libfoo+ or ++host-libfoo+. + +The call to the +generic-package+ and/or +host-generic-package+ macro *must* be +at the end of the +.mk+ file, after all variable definitions. + +For the target package, the +generic-package+ uses the variables defined by +the .mk file and prefixed by the uppercased package name: ++LIBFOO_*+. +host-generic-package+ uses the +HOST_LIBFOO_*+ variables. For +'some' variables, if the +HOST_LIBFOO_+ prefixed variable doesn't +exist, the package infrastructure uses the corresponding variable +prefixed by +LIBFOO_+. This is done for variables that are likely to +have the same value for both the target and host packages. See below +for details. + +The list of variables that can be set in a +.mk+ file to give metadata +information is (assuming the package name is +libfoo+) : + +* +LIBFOO_VERSION+, mandatory, must contain the version of the + package. Note that if +HOST_LIBFOO_VERSION+ doesn't exist, it is + assumed to be the same as +LIBFOO_VERSION+. It can also be a + revision number or a tag for packages that are fetched directly + from their version control system. Do not use a branch name as + version; it does not work. Examples: + ** a version for a release tarball: +LIBFOO_VERSION = 0.1.2+ + ** a sha1 for a git tree: +LIBFOO_VERSION = cb9d6aa9429e838f0e54faa3d455bcbab5eef057+ + ** a tag for a git tree +LIBFOO_VERSION = v0.1.2+ + +* +LIBFOO_SOURCE+ may contain the name of the tarball of the package, + which Buildroot will use to download the tarball from + +LIBFOO_SITE+. If +HOST_LIBFOO_SOURCE+ is not specified, it defaults + to +LIBFOO_SOURCE+. If none are specified, then the value is assumed + to be +libfoo-$(LIBFOO_VERSION).tar.gz+. + + Example: +LIBFOO_SOURCE = foobar-$(LIBFOO_VERSION).tar.bz2+ + +* +LIBFOO_PATCH+ may contain a space-separated list of patch file + names, that Buildroot will download and apply to the package source + code. If an entry contains +://+, then Buildroot will assume it is a + full URL and download the patch from this location. Otherwise, + Buildroot will assume that the patch should be downloaded from + +LIBFOO_SITE+. If +HOST_LIBFOO_PATCH+ is not specified, it defaults + to +LIBFOO_PATCH+. Note that patches that are included in Buildroot + itself use a different mechanism: all files of the form + +*.patch+ present in the package directory inside + Buildroot will be applied to the package after extraction (see + xref:patch-policy[patching a package]). Finally, patches listed in + the +LIBFOO_PATCH+ variable are applied _before_ the patches stored + in the Buildroot package directory. + +* +LIBFOO_SITE+ provides the location of the package, which can be a + URL or a local filesystem path. HTTP, FTP and SCP are supported URL + types for retrieving package tarballs. In these cases don't include a + trailing slash: it will be added by Buildroot between the directory + and the filename as appropriate. Git, Subversion, Mercurial, + and Bazaar are supported URL types for retrieving packages directly + from source code management systems. There is a helper function to make + it easier to download source tarballs from GitHub (refer to + xref:github-download-url[] for details). A filesystem path may be used + to specify either a tarball or a directory containing the package + source code. See +LIBFOO_SITE_METHOD+ below for more details on how + retrieval works. + + Note that SCP URLs should be of the form + +scp://[user@]host:filepath+, and that filepath is relative to the + user's home directory, so you may want to prepend the path with a + slash for absolute paths: + +scp://[user@]host:/absolutepath+. + + If +HOST_LIBFOO_SITE+ is not specified, it defaults to + +LIBFOO_SITE+. + Examples: + + +LIBFOO_SITE=http://www.libfoosoftware.org/libfoo+ + + +LIBFOO_SITE=http://svn.xiph.org/trunk/Tremor+ + + +LIBFOO_SITE=/opt/software/libfoo.tar.gz+ + + +LIBFOO_SITE=$(TOPDIR)/../src/libfoo+ + +* +LIBFOO_DL_OPTS+ is a space-separated list of additional options to + pass to the downloader. Useful for retrieving documents with + server-side checking for user logins and passwords, or to use a proxy. + All download methods valid for +LIBFOO_SITE_METHOD+ are supported; + valid options depend on the download method (consult the man page + for the respective download utilities). + +* +LIBFOO_EXTRA_DOWNLOADS+ is a space-separated list of additional + files that Buildroot should download. If an entry contains +://+ + then Buildroot will assume it is a complete URL and will download + the file using this URL. Otherwise, Buildroot will assume the file + to be downloaded is located at +LIBFOO_SITE+. Buildroot will not do + anything with those additional files, except download them: it will + be up to the package recipe to use them from +$(DL_DIR)+. + +* +LIBFOO_SITE_METHOD+ determines the method used to fetch or copy the + package source code. In many cases, Buildroot guesses the method + from the contents of +LIBFOO_SITE+ and setting +LIBFOO_SITE_METHOD+ + is unnecessary. When +HOST_LIBFOO_SITE_METHOD+ is not specified, it + defaults to the value of +LIBFOO_SITE_METHOD+. + + The possible values of +LIBFOO_SITE_METHOD+ are: + ** +wget+ for normal FTP/HTTP downloads of tarballs. Used by + default when +LIBFOO_SITE+ begins with +http://+, +https://+ or + +ftp://+. + ** +scp+ for downloads of tarballs over SSH with scp. Used by + default when +LIBFOO_SITE+ begins with +scp://+. + ** +svn+ for retrieving source code from a Subversion repository. + Used by default when +LIBFOO_SITE+ begins with +svn://+. When a + +http://+ Subversion repository URL is specified in + +LIBFOO_SITE+, one 'must' specify +LIBFOO_SITE_METHOD=svn+. + Buildroot performs a checkout which is preserved as a tarball in + the download cache; subsequent builds use the tarball instead of + performing another checkout. + ** +cvs+ for retrieving source code from a CVS repository. + Used by default when +LIBFOO_SITE+ begins with +cvs://+. + The downloaded source code is cached as with the +svn+ method. + Anonymous pserver mode is assumed otherwise explicitly defined + on +LIBFOO_SITE+. Both + +LIBFOO_SITE=cvs://libfoo.net:/cvsroot/libfoo+ and + +LIBFOO_SITE=cvs://:ext:libfoo.net:/cvsroot/libfoo+ + are accepted, on the former anonymous pserver access mode is + assumed. + +LIBFOO_SITE+ 'must' contain the source URL as well as the remote + repository directory. The module is the package name. + +LIBFOO_VERSION+ is 'mandatory' and 'must' be a tag, a branch, or + a date (e.g. "2014-10-20", "2014-10-20 13:45", "2014-10-20 + 13:45+01" see "man cvs" for further details). + ** +git+ for retrieving source code from a Git repository. Used by + default when +LIBFOO_SITE+ begins with +git://+. The downloaded + source code is cached as with the +svn+ + method. + ** +hg+ for retrieving source code from a Mercurial repository. One + 'must' specify +LIBFOO_SITE_METHOD=hg+ when +LIBFOO_SITE+ + contains a Mercurial repository URL. The downloaded source code + is cached as with the +svn+ method. + ** +bzr+ for retrieving source code from a Bazaar repository. Used + by default when +LIBFOO_SITE+ begins with +bzr://+. The + downloaded source code is cached as with the +svn+ method. + ** +file+ for a local tarball. One should use this when + +LIBFOO_SITE+ specifies a package tarball as a local filename. + Useful for software that isn't available publicly or in version + control. + ** +local+ for a local source code directory. One should use this + when +LIBFOO_SITE+ specifies a local directory path containing + the package source code. Buildroot copies the contents of the + source directory into the package's build directory. Note that + for +local+ packages, no patches are applied. If you need to + still patch the source code, use +LIBFOO_POST_RSYNC_HOOKS+, see + xref:hooks-rsync[]. + +* +LIBFOO_GIT_SUBMODULES+ can be set to +YES+ to create an archive + with the git submodules in the repository. This is only available + for packages downloaded with git (i.e. when + +LIBFOO_SITE_METHOD=git+). Note that we try not to use such git + submodules when they contain bundled libraries, in which case we + prefer to use those libraries from their own package. + +* +LIBFOO_STRIP_COMPONENTS+ is the number of leading components + (directories) that tar must strip from file names on extraction. + The tarball for most packages has one leading component named + "-", thus Buildroot passes + --strip-components=1 to tar to remove it. + For non-standard packages that don't have this component, or + that have more than one leading component to strip, set this + variable with the value to be passed to tar. Default: 1. + +* +LIBFOO_EXCLUDES+ is a space-separated list of patterns to exclude + when extracting the archive. Each item from that list is passed as + a tar's +--exclude+ option. By default, empty. + +* +LIBFOO_DEPENDENCIES+ lists the dependencies (in terms of package + name) that are required for the current target package to + compile. These dependencies are guaranteed to be compiled and + installed before the configuration of the current package starts. In + a similar way, +HOST_LIBFOO_DEPENDENCIES+ lists the dependencies for + the current host package. + +* +LIBFOO_PATCH_DEPENDENCIES+ lists the dependencies (in terms of + package name) that are required for the current package to be + patched. These dependencies are guaranteed to be extracted and + patched before the current package is patched. In a similar way, + +HOST_LIBFOO_PATCH_DEPENDENCIES+ lists the dependencies for the + current host package. + This is seldom used; usually, +LIBFOO_DEPENDENCIES+ is what you + really want to use. + +* +LIBFOO_PROVIDES+ lists all the virtual packages +libfoo+ is an + implementation of. See xref:virtual-package-tutorial[]. + +* +LIBFOO_INSTALL_STAGING+ can be set to +YES+ or +NO+ (default). If + set to +YES+, then the commands in the +LIBFOO_INSTALL_STAGING_CMDS+ + variables are executed to install the package into the staging + directory. + +* +LIBFOO_INSTALL_TARGET+ can be set to +YES+ (default) or +NO+. If + set to +YES+, then the commands in the +LIBFOO_INSTALL_TARGET_CMDS+ + variables are executed to install the package into the target + directory. + +* +LIBFOO_INSTALL_IMAGES+ can be set to +YES+ or +NO+ (default). If + set to +YES+, then the commands in the +LIBFOO_INSTALL_IMAGES_CMDS+ + variable are executed to install the package into the images + directory. + +* +LIBFOO_CONFIG_SCRIPTS+ lists the names of the files in + '$(STAGING_DIR)/usr/bin' that need some special fixing to make them + cross-compiling friendly. Multiple file names separated by space can + be given and all are relative to '$(STAGING_DIR)/usr/bin'. The files + listed in +LIBFOO_CONFIG_SCRIPTS+ are also removed from + +$(TARGET_DIR)/usr/bin+ since they are not needed on the target. + +* +LIBFOO_DEVICES+ lists the device files to be created by Buildroot + when using the static device table. The syntax to use is the + makedevs one. You can find some documentation for this syntax in the + xref:makedev-syntax[]. This variable is optional. + +* +LIBFOO_PERMISSIONS+ lists the changes of permissions to be done at + the end of the build process. The syntax is once again the makedevs one. + You can find some documentation for this syntax in the xref:makedev-syntax[]. + This variable is optional. + +* +LIBFOO_USERS+ lists the users to create for this package, if it installs + a program you want to run as a specific user (e.g. as a daemon, or as a + cron-job). The syntax is similar in spirit to the makedevs one, and is + described in the xref:makeuser-syntax[]. This variable is optional. + +* +LIBFOO_LICENSE+ defines the license (or licenses) under which the package + is released. + This name will appear in the manifest file produced by +make legal-info+. + If the license appears in https://spdx.org/licenses/[the SPDX License List], + use the SPDX short identifier to make the manifest file uniform. + Otherwise, describe the license in a precise and concise way, avoiding + ambiguous names such as +BSD+ which actually name a family of licenses. + This variable is optional. If it is not defined, +unknown+ will appear in + the +license+ field of the manifest file for this package. + + The expected format for this variable must comply with the following rules: + ** If different parts of the package are released under different + licenses, then +comma+ separate licenses (e.g. +`LIBFOO_LICENSE = + GPL-2.0+, LGPL-2.1+`+). If there is clear distinction between which + component is licensed under what license, then annotate the license + with that component, between parenthesis (e.g. +`LIBFOO_LICENSE = + GPL-2.0+ (programs), LGPL-2.1+ (libraries)`+). + ** If the package is dual licensed, then separate licenses with the + +or+ keyword (e.g. +`LIBFOO_LICENSE = AFL-2.1 or GPL-2.0+`+). + +* +LIBFOO_LICENSE_FILES+ is a space-separated list of files in the package + tarball that contain the license(s) under which the package is released. + +make legal-info+ copies all of these files in the +legal-info+ directory. + See xref:legal-info[] for more information. + This variable is optional. If it is not defined, a warning will be produced + to let you know, and +not saved+ will appear in the +license files+ field + of the manifest file for this package. + +* +LIBFOO_ACTUAL_SOURCE_TARBALL+ only applies to packages whose + +LIBFOO_SITE+ / +LIBTOO_SOURCE+ pair points to an archive that does + not actually contain source code, but binary code. This a very + uncommon case, only known to apply to external toolchains which come + already compiled, although theoretically it might apply to other + packages. In such cases a separate tarball is usually available with + the actual source code. Set +LIBFOO_ACTUAL_SOURCE_TARBALL+ to the + name of the actual source code archive and Buildroot will download + it and use it when you run +make legal-info+ to collect + legally-relevant material. Note this file will not be downloaded + during regular builds nor by +make source+. + +* +LIBFOO_ACTUAL_SOURCE_SITE+ provides the location of the actual + source tarball. The default value is +LIBFOO_SITE+, so you don't + need to set this variable if the binary and source archives are + hosted on the same directory. If +LIBFOO_ACTUAL_SOURCE_TARBALL+ is + not set, it doesn't make sense to define + +LIBFOO_ACTUAL_SOURCE_SITE+. + +* +LIBFOO_REDISTRIBUTE+ can be set to +YES+ (default) or +NO+ to indicate if + the package source code is allowed to be redistributed. Set it to +NO+ for + non-opensource packages: Buildroot will not save the source code for this + package when collecting the +legal-info+. + +* +LIBFOO_FLAT_STACKSIZE+ defines the stack size of an application built into + the FLAT binary format. The application stack size on the NOMMU architecture + processors can't be enlarged at run time. The default stack size for the + FLAT binary format is only 4k bytes. If the application consumes more stack, + append the required number here. + +* +LIBFOO_BIN_ARCH_EXCLUDE+ is a space-separated list of paths (relative + to the target directory) to ignore when checking that the package + installs correctly cross-compiled binaries. You seldom need to set this + variable, unless the package installs binary blobs outside the default + locations, `/lib/firmware`, `/usr/lib/firmware`, `/lib/modules`, + `/usr/lib/modules`, and `/usr/share`, which are automatically excluded. + +The recommended way to define these variables is to use the following +syntax: + +---------------------- +LIBFOO_VERSION = 2.32 +---------------------- + +Now, the variables that define what should be performed at the +different steps of the build process. + +* +LIBFOO_EXTRACT_CMDS+ lists the actions to be performed to extract + the package. This is generally not needed as tarballs are + automatically handled by Buildroot. However, if the package uses a + non-standard archive format, such as a ZIP or RAR file, or has a + tarball with a non-standard organization, this variable allows to + override the package infrastructure default behavior. + +* +LIBFOO_CONFIGURE_CMDS+ lists the actions to be performed to + configure the package before its compilation. + +* +LIBFOO_BUILD_CMDS+ lists the actions to be performed to + compile the package. + +* +HOST_LIBFOO_INSTALL_CMDS+ lists the actions to be performed + to install the package, when the package is a host package. The + package must install its files to the directory given by + +$(HOST_DIR)+. All files, including development files such as + headers should be installed, since other packages might be compiled + on top of this package. + +* +LIBFOO_INSTALL_TARGET_CMDS+ lists the actions to be + performed to install the package to the target directory, when the + package is a target package. The package must install its files to + the directory given by +$(TARGET_DIR)+. Only the files required for + 'execution' of the package have to be + installed. Header files, static libraries and documentation will be + removed again when the target filesystem is finalized. + +* +LIBFOO_INSTALL_STAGING_CMDS+ lists the actions to be + performed to install the package to the staging directory, when the + package is a target package. The package must install its files to + the directory given by +$(STAGING_DIR)+. All development files + should be installed, since they might be needed to compile other + packages. + +* +LIBFOO_INSTALL_IMAGES_CMDS+ lists the actions to be performed to + install the package to the images directory, when the package is a + target package. The package must install its files to the directory + given by +$(BINARIES_DIR)+. Only files that are binary images (aka + images) that do not belong in the +TARGET_DIR+ but are necessary + for booting the board should be placed here. For example, a package + should utilize this step if it has binaries which would be similar + to the kernel image, bootloader or root filesystem images. + +* +LIBFOO_INSTALL_INIT_SYSV+ and +LIBFOO_INSTALL_INIT_SYSTEMD+ list the + actions to install init scripts either for the systemV-like init systems + (busybox, sysvinit, etc.) or for the systemd units. These commands + will be run only when the relevant init system is installed (i.e. if + systemd is selected as the init system in the configuration, only + +LIBFOO_INSTALL_INIT_SYSTEMD+ will be run). + +* +LIBFOO_HELP_CMDS+ lists the actions to print the package help, which + is included to the main +make help+ output. These commands can print + anything in any format. + This is seldom used, as packages rarely have custom rules. *Do not use + this variable*, unless you really know that you need to print help. + +The preferred way to define these variables is: + +---------------------- +define LIBFOO_CONFIGURE_CMDS + action 1 + action 2 + action 3 +endef +---------------------- + +In the action definitions, you can use the following variables: + +* +$(LIBFOO_PKGDIR)+ contains the path to the directory containing the + +libfoo.mk+ and +Config.in+ files. This variable is useful when it is + necessary to install a file bundled in Buildroot, like a runtime + configuration file, a splashscreen image... + +* +$(@D)+, which contains the directory in which the package source + code has been uncompressed. + +* +$(DL_DIR)+ contains the path to the directory where all the downloads made + by Buildroot are stored. + +* +$(TARGET_CC)+, +$(TARGET_LD)+, etc. to get the target + cross-compilation utilities + +* +$(TARGET_CROSS)+ to get the cross-compilation toolchain prefix + +* Of course the +$(HOST_DIR)+, +$(STAGING_DIR)+ and +$(TARGET_DIR)+ + variables to install the packages properly. + +Finally, you can also use hooks. See xref:hooks[] for more information. diff --git a/buildroot/docs/manual/adding-packages-gettext.txt b/buildroot/docs/manual/adding-packages-gettext.txt new file mode 100644 index 0000000..e9c6968 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-gettext.txt @@ -0,0 +1,62 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Gettext integration and interaction with packages + +Many packages that support internationalization use the gettext +library. Dependencies for this library are fairly complicated and +therefore, deserve some explanation. + +The 'glibc' C library integrates a full-blown implementation of +'gettext', supporting translation. Native Language Support is +therefore built-in in 'glibc'. + +On the other hand, the 'uClibc' and 'musl' C libraries only provide a +stub implementation of the gettext functionality, which allows to +compile libraries and programs using gettext functions, but without +providing the translation capabilities of a full-blown gettext +implementation. With such C libraries, if real Native Language Support +is necessary, it can be provided by the +libintl+ library of the ++gettext+ package. + +Due to this, and in order to make sure that Native Language Support is +properly handled, packages in Buildroot that can use NLS support +should: + +1. Ensure NLS support is enabled when +BR2_SYSTEM_ENABLE_NLS=y+. This + is done automatically for 'autotools' packages and therefore should + only be done for packages using other package infrastructures. + +1. Add +$(TARGET_NLS_DEPENDENCIES)+ to the package + +_DEPENDENCIES+ variable. This addition should be done + unconditionally: the value of this variable is automatically + adjusted by the core infrastructure to contain the relevant list of + packages. If NLS support is disabled, this variable is empty. If + NLS support is enabled, this variable contains +host-gettext+ so + that tools needed to compile translation files are available on the + host. In addition, if 'uClibc' or 'musl' are used, this variable + also contains +gettext+ in order to get the full-blown 'gettext' + implementation. + +1. If needed, add +$(TARGET_NLS_LIBS)+ to the linker flags, so that + the package gets linked with +libintl+. This is generally not + needed with 'autotools' packages as they usually detect + automatically that they should link with +libintl+. However, + packages using other build systems, or problematic autotools-based + packages may need this. +$(TARGET_NLS_LIBS)+ should be added + unconditionally to the linker flags, as the core automatically + makes it empty or defined to +-lintl+ depending on the + configuration. + +No changes should be made to the +Config.in+ file to support NLS. + +Finally, certain packages need some gettext utilities on the target, +such as the +gettext+ program itself, which allows to retrieve +translated strings, from the command line. In such a case, the package +should: + +* use +select BR2_PACKAGE_GETTEXT+ in their +Config.in+ file, + indicating in a comment above that it's a runtime dependency only. + +* not add any +gettext+ dependency in the +DEPENDENCIES+ variable of + their +.mk+ file. diff --git a/buildroot/docs/manual/adding-packages-hooks.txt b/buildroot/docs/manual/adding-packages-hooks.txt new file mode 100644 index 0000000..0ce79f8 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-hooks.txt @@ -0,0 +1,87 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[hooks]] +=== Hooks available in the various build steps + +The generic infrastructure (and as a result also the derived autotools +and cmake infrastructures) allow packages to specify hooks. +These define further actions to perform after existing steps. +Most hooks aren't really useful for generic packages, since the +.mk+ +file already has full control over the actions performed in each step +of the package construction. + +The following hook points are available: + +* +LIBFOO_PRE_DOWNLOAD_HOOKS+ +* +LIBFOO_POST_DOWNLOAD_HOOKS+ + +* +LIBFOO_PRE_EXTRACT_HOOKS+ +* +LIBFOO_POST_EXTRACT_HOOKS+ + +* +LIBFOO_PRE_RSYNC_HOOKS+ +* +LIBFOO_POST_RSYNC_HOOKS+ + +* +LIBFOO_PRE_PATCH_HOOKS+ +* +LIBFOO_POST_PATCH_HOOKS+ + +* +LIBFOO_PRE_CONFIGURE_HOOKS+ +* +LIBFOO_POST_CONFIGURE_HOOKS+ + +* +LIBFOO_PRE_BUILD_HOOKS+ +* +LIBFOO_POST_BUILD_HOOKS+ + +* +LIBFOO_PRE_INSTALL_HOOKS+ (for host packages only) +* +LIBFOO_POST_INSTALL_HOOKS+ (for host packages only) + +* +LIBFOO_PRE_INSTALL_STAGING_HOOKS+ (for target packages only) +* +LIBFOO_POST_INSTALL_STAGING_HOOKS+ (for target packages only) + +* +LIBFOO_PRE_INSTALL_TARGET_HOOKS+ (for target packages only) +* +LIBFOO_POST_INSTALL_TARGET_HOOKS+ (for target packages only) + +* +LIBFOO_PRE_INSTALL_IMAGES_HOOKS+ +* +LIBFOO_POST_INSTALL_IMAGES_HOOKS+ + +* +LIBFOO_PRE_LEGAL_INFO_HOOKS+ +* +LIBFOO_POST_LEGAL_INFO_HOOKS+ + +These variables are 'lists' of variable names containing actions to be +performed at this hook point. This allows several hooks to be +registered at a given hook point. Here is an example: + +---------------------- +define LIBFOO_POST_PATCH_FIXUP + action1 + action2 +endef + +LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP +---------------------- + +[[hooks-rsync]] +==== Using the +POST_RSYNC+ hook +The +POST_RSYNC+ hook is run only for packages that use a local source, +either through the +local+ site method or the +OVERRIDE_SRCDIR+ +mechanism. In this case, package sources are copied using +rsync+ from +the local location into the buildroot build directory. The +rsync+ +command does not copy all files from the source directory, though. +Files belonging to a version control system, like the directories ++.git+, +.hg+, etc. are not copied. For most packages this is +sufficient, but a given package can perform additional actions using +the +POST_RSYNC+ hook. + +In principle, the hook can contain any command you want. One specific +use case, though, is the intentional copying of the version control +directory using +rsync+. The +rsync+ command you use in the hook can, among +others, use the following variables: + +* +$(SRCDIR)+: the path to the overridden source directory +* +$(@D)+: the path to the build directory + +==== Target-finalize hook + +Packages may also register hooks in +LIBFOO_TARGET_FINALIZE_HOOKS+. +These hooks are run after all packages are built, but before the +filesystem images are generated. They are seldom used, and your +package probably do not need them. diff --git a/buildroot/docs/manual/adding-packages-kconfig.txt b/buildroot/docs/manual/adding-packages-kconfig.txt new file mode 100644 index 0000000..d4d8630 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-kconfig.txt @@ -0,0 +1,83 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for packages using kconfig for configuration files + +A popular way for a software package to handle user-specified +configuration is +kconfig+. Among others, it is used by the Linux +kernel, Busybox, and Buildroot itself. The presence of a .config file +and a +menuconfig+ target are two well-known symptoms of kconfig being +used. + +Buildroot features an infrastructure for packages that use kconfig for +their configuration. This infrastructure provides the necessary logic to +expose the package's +menuconfig+ target as +foo-menuconfig+ in +Buildroot, and to handle the copying back and forth of the configuration +file in a correct way. + +The +kconfig-package+ infrastructure is based on the +generic-package+ +infrastructure. All variables supported by +generic-package+ are +available in +kconfig-package+ as well. See +xref:generic-package-reference[] for more details. + +In order to use the +kconfig-package+ infrastructure for a Buildroot +package, the minimally required lines in the +.mk+ file, in addition to +the variables required by the +generic-package+ infrastructure, are: + +------------------------------ +FOO_KCONFIG_FILE = reference-to-source-configuration-file + +$(eval $(kconfig-package)) +------------------------------ + +This snippet creates the following make targets: + +* +foo-menuconfig+, which calls the package's +menuconfig+ target + +* +foo-update-config+, which copies the configuration back to the + source configuration file. It is not possible to use this target + when fragment files are set. + +* +foo-update-defconfig+, which copies the configuration back to the + source configuration file. The configuration file will only list the + options that differ from the default values. It is not possible to + use this target when fragment files are set. + +and ensures that the source configuration file is copied to the build +directory at the right moment. + +There are two options to specify a configuration file to use, either ++FOO_KCONFIG_FILE+ (as in the example, above) or +FOO_KCONFIG_DEFCONFIG+. +It is mandatory to provide either, but not both: + +* +FOO_KCONFIG_FILE+ specifies the path to a defconfig or full-config file + to be used to configure the package. + +* +FOO_KCONFIG_DEFCONFIG+ specifies the defconfig 'make' rule to call to + configure the package. + +In addition to these minimally required lines, several optional variables can +be set to suit the needs of the package under consideration: + +* +FOO_KCONFIG_EDITORS+: a space-separated list of kconfig editors to + support, for example 'menuconfig xconfig'. By default, 'menuconfig'. + +* +FOO_KCONFIG_FRAGMENT_FILES+: a space-separated list of configuration + fragment files that are merged to the main configuration file. + Fragment files are typically used when there is a desire to stay in sync + with an upstream (def)config file, with some minor modifications. + +* +FOO_KCONFIG_OPTS+: extra options to pass when calling the kconfig + editors. This may need to include '$(FOO_MAKE_OPTS)', for example. By + default, empty. + +* +FOO_KCONFIG_FIXUP_CMDS+: a list of shell commands needed to fixup the + configuration file after copying it or running a kconfig editor. Such + commands may be needed to ensure a configuration consistent with other + configuration of Buildroot, for example. By default, empty. + +* +FOO_KCONFIG_DOTCONFIG+: path (with filename) of the +.config+ file, + relative to the package source tree. The default, +.config+, should + be well suited for all packages that use the standard kconfig + infrastructure as inherited from the Linux kernel; some packages use + a derivative of kconfig that use a different location. diff --git a/buildroot/docs/manual/adding-packages-kernel-module.txt b/buildroot/docs/manual/adding-packages-kernel-module.txt new file mode 100644 index 0000000..b609ecc --- /dev/null +++ b/buildroot/docs/manual/adding-packages-kernel-module.txt @@ -0,0 +1,143 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for packages building kernel modules + +Buildroot offers a helper infrastructure to make it easy to write packages that +build and install Linux kernel modules. Some packages only contain a kernel +module, other packages contain programs and libraries in addition to kernel +modules. Buildroot's helper infrastructure supports either case. + +[[kernel-module-tutorial]] +==== +kernel-module+ tutorial + +Let's start with an example on how to prepare a simple package that only +builds a kernel module, and no other component: + +---- +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.2.3 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-2.0 +11: FOO_LICENSE_FILES = COPYING +12: +13: $(eval $(kernel-module)) +14: $(eval $(generic-package)) +---- + +Lines 7-11 define the usual meta-data to specify the version, archive name, +remote URI where to find the package source, licensing information. + +On line 13, we invoke the +kernel-module+ helper infrastructure, that +generates all the appropriate Makefile rules and variables to build +that kernel module. + +Finally, on line 14, we invoke the +xref:generic-package-tutorial[+generic-package+ infrastructure]. + +The dependency on +linux+ is automatically added, so it is not needed to +specify it in +FOO_DEPENDENCIES+. + +What you may have noticed is that, unlike other package infrastructures, +we explicitly invoke a second infrastructure. This allows a package to +build a kernel module, but also, if needed, use any one of other package +infrastructures to build normal userland components (libraries, +executables...). Using the +kernel-module+ infrastructure on its own is +not sufficient; another package infrastructure *must* be used. + +Let's look at a more complex example: + +---- +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.2.3 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-2.0 +11: FOO_LICENSE_FILES = COPYING +12: +13: FOO_MODULE_SUBDIRS = driver/base +14: FOO_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED) +15: +16: ifeq ($(BR2_PACKAGE_LIBBAR),y) +17: FOO_DEPENDENCIES = libbar +18: FOO_CONF_OPTS = --enable-bar +19: FOO_MODULE_SUBDIRS += driver/bar +20: else +21: FOO_CONF_OPTS = --disable-bar +22: endif +23: +24: $(eval $(kernel-module)) +26: $(eval $(autotools-package)) +---- + +Here, we see that we have an autotools-based package, that also builds +the kernel module located in sub-directory +driver/base+ and, if libbar +is enabled, the kernel module located in sub-directory +driver/bar+, and +defines the variable +KVERSION+ to be passed to the Linux buildsystem +when building the module(s). + + +[[kernel-module-reference]] +==== +kernel-module+ reference + +The main macro for the kernel module infrastructure is +kernel-module+. +Unlike other package infrastructures, it is not stand-alone, and requires +any of the other +*-package+ macros be called after it. + +The +kernel-module+ macro defines post-build and post-target-install +hooks to build the kernel modules. If the package's +.mk+ needs access +to the built kernel modules, it should do so in a post-build hook, +*registered after* the call to +kernel-module+. Similarly, if the +package's +.mk+ needs access to the kernel module after it has been +installed, it should do so in a post-install hook, *registered after* +the call to +kernel-module+. Here's an example: + +---- +$(eval $(kernel-module)) + +define FOO_DO_STUFF_WITH_KERNEL_MODULE + # Do something with it... +endef +FOO_POST_BUILD_HOOKS += FOO_DO_STUFF_WITH_KERNEL_MODULE + +$(eval $(generic-package)) +---- + +Finally, unlike the other package infrastructures, there is no ++host-kernel-module+ variant to build a host kernel module. + +The following additional variables can optionally be defined to further +configure the build of the kernel module: + +* +FOO_MODULE_SUBDIRS+ may be set to one or more sub-directories (relative + to the package source top-directory) where the kernel module sources are. + If empty or not set, the sources for the kernel module(s) are considered + to be located at the top of the package source tree. + +* +FOO_MODULE_MAKE_OPTS+ may be set to contain extra variable definitions + to pass to the Linux buildsystem. + +[[kernel-variables]] +You may also reference (but you may *not* set!) those variables: + + * +LINUX_DIR+ contains the path to where the Linux kernel has been + extracted and built. + + * +LINUX_VERSION+ contains the version string as configured by the user. + + * +LINUX_VERSION_PROBED+ contains the real version string of the kernel, + retrieved with running `make -C $(LINUX_DIR) kernelrelease` + + * +KERNEL_ARCH+ contains the name of the current architecture, like `arm`, + `mips`... diff --git a/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt b/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt new file mode 100644 index 0000000..b948e20 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-linux-kernel-spec-infra.txt @@ -0,0 +1,152 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[linux-kernel-specific-infra]] +=== Infrastructure specific to the Linux kernel package + +The Linux kernel package can use some specific infrastructures based on package +hooks for building Linux kernel tools or/and building Linux kernel extensions. + +[[linux-kernel-tools]] +==== linux-kernel-tools + +Buildroot offers a helper infrastructure to build some userspace tools +for the target available within the Linux kernel sources. Since their +source code is part of the kernel source code, a special package, ++linux-tools+, exists and re-uses the sources of the Linux kernel that +runs on the target. + +Let's look at an example of a Linux tool. For a new Linux tool named ++foo+, create a new menu entry in the existing ++package/linux-tools/Config.in+. This file will contain the option +descriptions related to each kernel tool that will be used and +displayed in the configuration tool. It would basically look like: + +------------------------------ +01: config BR2_PACKAGE_LINUX_TOOLS_FOO +02: bool "foo" +03: select BR2_PACKAGE_LINUX_TOOLS +04: help +05: This is a comment that explains what foo kernel tool is. +06: +07: http://foosoftware.org/foo/ +------------------------------ + +The name of the option starts with the prefix +BR2_PACKAGE_LINUX_TOOLS_+, +followed by the uppercase name of the tool (like is done for packages). + +.Note +Unlike other packages, the +linux-tools+ package options appear in the ++linux+ kernel menu, under the `Linux Kernel Tools` sub-menu, not under +the `Target packages` main menu. + +Then for each linux tool, add a new +.mk.in+ file named ++package/linux-tools/linux-tool-foo.mk.in+. It would basically look like: + +------------------------------ +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: LINUX_TOOLS += foo +08: +09: FOO_DEPENDENCIES = libbbb +10: +11: define FOO_BUILD_CMDS +12: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools foo +13: endef +14: +15: define FOO_INSTALL_STAGING_CMDS +16: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +17: DESTDIR=$(STAGING_DIR) \ +18: foo_install +19: endef +20: +21: define FOO_INSTALL_TARGET_CMDS +22: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +23: DESTDIR=$(TARGET_DIR) \ +24: foo_install +25: endef +-------------------------------- + +On line 7, we register the Linux tool +foo+ to the list of available +Linux tools. + +On line 9, we specify the list of dependencies this tool relies on. These +dependencies are added to the Linux package dependencies list only when the ++foo+ tool is selected. + +The rest of the Makefile, lines 11-25 defines what should be done at the +different steps of the Linux tool build process like for a +xref:generic-package-tutorial[+generic package+]. They will actually be +used only when the +foo+ tool is selected. The only supported commands are ++_BUILD_CMDS+, +_INSTALL_STAGING_CMDS+ and +_INSTALL_TARGET_CMDS+. + +.Note +One *must not* call +$(eval $(generic-package))+ or any other +package infrastructure! Linux tools are not packages by themselves, +they are part of the +linux-tools+ package. + +[[linux-kernel-ext]] +==== linux-kernel-extensions + +Some packages provide new features that require the Linux kernel tree +to be modified. This can be in the form of patches to be applied on +the kernel tree, or in the form of new files to be added to the +tree. The Buildroot's Linux kernel extensions infrastructure provides +a simple solution to automatically do this, just after the kernel +sources are extracted and before the kernel patches are +applied. Examples of extensions packaged using this mechanism are the +real-time extensions Xenomai and RTAI, as well as the set of +out-of-tree LCD screens drivers +fbtft+. + +Let's look at an example on how to add a new Linux extension +foo+. + +First, create the package +foo+ that provides the extension: this +package is a standard package; see the previous chapters on how to +create such a package. This package is in charge of downloading the +sources archive, checking the hash, defining the licence informations +and building user space tools if any. + +Then create the 'Linux extension' proper: create a new menu entry in +the existing +linux/Config.ext.in+. This file contains the option +descriptions related to each kernel extension that will be used and +displayed in the configuration tool. It would basically look like: + +------------------------------ +01: config BR2_LINUX_KERNEL_EXT_FOO +02: bool "foo" +03: help +04: This is a comment that explains what foo kernel extension is. +05: +06: http://foosoftware.org/foo/ +------------------------------ + +Then for each linux extension, add a new +.mk+ file named ++linux/linux-ext-foo.mk+. It should basically contain: + +------------------------------ +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: LINUX_EXTENSIONS += foo +08: +09: define FOO_PREPARE_KERNEL +10: $(FOO_DIR)/prepare-kernel-tree.sh --linux-dir=$(@D) +11: endef +-------------------------------- + +On line 7, we add the Linux extension +foo+ to the list of available +Linux extensions. + +On line 9-11, we define what should be done by the extension to modify +the Linux kernel tree; this is specific to the linux extension and can +use the variables defined by the +foo+ package, like: +$(FOO_DIR)+ or ++$(FOO_VERSION)+... as well as all the Linux variables, like: ++$(LINUX_VERSION)+ or +$(LINUX_VERSION_PROBED)+, +$(KERNEL_ARCH)+... +See the xref:kernel-variables[definition of those kernel variables]. diff --git a/buildroot/docs/manual/adding-packages-luarocks.txt b/buildroot/docs/manual/adding-packages-luarocks.txt new file mode 100644 index 0000000..ec3d4e7 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-luarocks.txt @@ -0,0 +1,101 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for LuaRocks-based packages + +[[luarocks-package-tutorial]] + +==== +luarocks-package+ tutorial + +First, let's see how to write a +.mk+ file for a LuaRocks-based package, +with an example : + +------------------------ +01: ################################################################################ +02: # +03: # lua-foo +04: # +05: ################################################################################ +06: +07: LUA_FOO_VERSION = 1.0.2-1 +08: LUA_FOO_NAME_UPSTREAM = foo +09: LUA_FOO_DEPENDENCIES = bar +10: +11: LUA_FOO_BUILD_OPTS += BAR_INCDIR=$(STAGING_DIR)/usr/include +12: LUA_FOO_BUILD_OPTS += BAR_LIBDIR=$(STAGING_DIR)/usr/lib +13: LUA_FOO_LICENSE = luaFoo license +14: LUA_FOO_LICENSE_FILES = $(LUA_FOO_SUBDIR)/COPYING +15: +16: $(eval $(luarocks-package)) +------------------------ + +On line 7, we declare the version of the package (the same as in the rockspec, +which is the concatenation of the upstream version and the rockspec revision, +separated by a hyphen '-'). + +On line 8, we declare that the package is called "foo" on LuaRocks. In +Buildroot, we give Lua-related packages a name that starts with "lua", so the +Buildroot name is different from the upstream name. +LUA_FOO_NAME_UPSTREAM+ +makes the link between the two names. + +On line 9, we declare our dependencies against native libraries, so that they +are built before the build process of our package starts. + +On lines 11-12, we tell Buildroot to pass custom options to LuaRocks when it is +building the package. + +On lines 13-14, we specify the licensing terms for the package. + +Finally, on line 16, we invoke the +luarocks-package+ +macro that generates all the Makefile rules that actually allows the +package to be built. + +[[luarocks-package-reference]] + +==== +luarocks-package+ reference + +LuaRocks is a deployment and management system for Lua modules, and supports +various +build.type+: +builtin+, +make+ and +cmake+. In the context of +Buildroot, the +luarocks-package+ infrastructure only supports the +builtin+ +mode. LuaRocks packages that use the +make+ or +cmake+ build mechanisms +should instead be packaged using the +generic-package+ and +cmake-package+ +infrastructures in Buildroot, respectively. + +The main macro of the LuaRocks package infrastructure is +luarocks-package+: +like +generic-package+ it works by defining a number of variables providing +metadata information about the package, and then calling +luarocks-package+. It +is worth mentioning that building LuaRocks packages for the host is not +supported, so the macro +host-luarocks-package+ is not implemented. + +Just like the generic infrastructure, the LuaRocks infrastructure works +by defining a number of variables before calling the +luarocks-package+ +macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the LuaRocks infrastructure: ++LUA_FOO_VERSION+, +LUA_FOO_SOURCE+, +LUA_FOO_SITE+, ++LUA_FOO_DEPENDENCIES+, +LUA_FOO_LICENSE+, +LUA_FOO_LICENSE_FILES+. + +Two of them are populated by the LuaRocks infrastructure (for the ++download+ step). If your package is not hosted on the LuaRocks mirror ++$(BR2_LUAROCKS_MIRROR)+, you can override them: + +* +LUA_FOO_SITE+, which defaults to +$(BR2_LUAROCKS_MIRROR)+ + +* +LUA_FOO_SOURCE+, which defaults to + +$(lowercase LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).src.rock+ + +A few additional variables, specific to the LuaRocks infrastructure, are +also defined. They can be overridden in specific cases. + +* +LUA_FOO_NAME_UPSTREAM+, which defaults to +lua-foo+, i.e. the Buildroot + package name + +* +LUA_FOO_ROCKSPEC+, which defaults to + +$(lowercase LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).rockspec+ + +* +LUA_FOO_SUBDIR+, which defaults to + +$(LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION_WITHOUT_ROCKSPEC_REVISION)+ + +* +LUA_FOO_BUILD_OPTS+ contains additional build options for the + +luarocks build+ call. diff --git a/buildroot/docs/manual/adding-packages-meson.txt b/buildroot/docs/manual/adding-packages-meson.txt new file mode 100644 index 0000000..f8aa08f --- /dev/null +++ b/buildroot/docs/manual/adding-packages-meson.txt @@ -0,0 +1,101 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Integration of Meson-based packages + +[[meson-package-tutorial]] + +==== +meson-package+ tutorial + +http://mesonbuild.com[Meson] is an open source build system meant to be both +extremely fast, and, even more importantly, as user friendly as possible. + +Buildroot does not (yet) provide a dedicated package infrastructure for +meson-based packages. So, we will explain how to write a +.mk+ file for such a +package. Let's start with an example: + +------------------------------ +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-3.0+ +11: FOO_LICENSE_FILES = COPYING +12: FOO_INSTALL_STAGING = YES +13: +14: FOO_DEPENDENCIES = host-meson host-pkgconf bar +15: +16: FOO_CONF_OPTS += \ +17: --prefix=/usr \ +18: --buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \ +19: --cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf +20: +21: FOO_NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) +22: +23: ifeq ($(BR2_PACKAGE_BAZ),y) +24: FOO_CONF_OPTS += -Dbaz +25: endif +26: +27: define FOO_CONFIGURE_CMDS +28: rm -rf $(@D)/build +29: mkdir -p $(@D)/build +30: $(TARGET_MAKE_ENV) meson $(FOO_CONF_OPTS) $(@D) $(@D)/build +31: endef +32: +33: define FOO_BUILD_CMDS +34: $(TARGET_MAKE_ENV) ninja $(FOO_NINJA_OPTS) -C $(@D)/build +35: endef +36: +37: define FOO_INSTALL_TARGET_CMDS +38: $(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) ninja $(FOO_NINJA_OPTS) \ +39: -C $(@D)/build install +40: endef +41: +42: define FOO_INSTALL_STAGING_CMDS +43: $(TARGET_MAKE_ENV) DESTDIR=$(STAGING_DIR) ninja $(FOO_NINJA_OPTS) \ +44: -C $(@D)/build install +45: endef +46: +47: $(eval $(generic-package)) +-------------------------------- + +The Makefile starts with the definition of the standard variables for package +declaration (lines 7 to 11). + +As seen in line 47, it is based on the +xref:generic-package-tutorial[+generic-package+ infrastructure]. So, it defines +the variables required by this particular infrastructure, where Meson and its +companion tool, Ninja, are invoked: + +* +FOO_CONFIGURE_CMDS+: the build directory required by Meson is created, and + Meson is invoked to generate the Ninja build file. The options required to + configure the cross-compilation of the package are passed via + +FOO_CONF_OPTS+. + +* +FOO_BUILD_CMDS+: Ninja is invoked to perform the build. + +* +FOO_INSTALL_TARGET_CMDS+: Ninja is invoked to install the files generated + during the build step in the target directory. + +* +FOO_INSTALL_STAGING_CMDS+: Ninja is invoked to install the files generated + during the build step in the staging directory, as +FOO_INSTALL_STAGING+ is + set to "YES". + +In order to have Meson available for the build, +FOO_DEPENDENCIES+ needs to +contain +host-meson+. In the example, +host-pkgconf+ and +bar+ are also +declared as dependencies because the Meson build file of +foo+ uses `pkg-config` +to determine the compilation flags and libraries of package +bar+. + +If the "baz" package is selected, then support for the "baz" feature in "foo" +is activated by adding +-Dbaz+ to +FOO_CONF_OPTS+, as specified in the ++meson_options.txt+ file in "foo" source tree. + +To sum it up, to add a new meson-based package, the Makefile example can be +copied verbatim then edited to replace all occurences of +FOO+ with the +uppercase name of the new package and update the values of the standard +variables. diff --git a/buildroot/docs/manual/adding-packages-perl.txt b/buildroot/docs/manual/adding-packages-perl.txt new file mode 100644 index 0000000..eb14d9d --- /dev/null +++ b/buildroot/docs/manual/adding-packages-perl.txt @@ -0,0 +1,125 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Perl/CPAN packages + +[[perl-package-tutorial]] + +==== +perl-package+ tutorial + +First, let's see how to write a +.mk+ file for a Perl/CPAN package, +with an example : + +------------------------ +01: ################################################################################ +02: # +03: # perl-foo-bar +04: # +05: ################################################################################ +06: +07: PERL_FOO_BAR_VERSION = 0.02 +08: PERL_FOO_BAR_SOURCE = Foo-Bar-$(PERL_FOO_BAR_VERSION).tar.gz +09: PERL_FOO_BAR_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MO/MONGER +10: PERL_FOO_BAR_DEPENDENCIES = perl-strictures +11: PERL_FOO_BAR_LICENSE = Artistic or GPL-1.0+ +12: PERL_FOO_BAR_LICENSE_FILES = LICENSE +13: +14: $(eval $(perl-package)) +------------------------ + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball and the location +of the tarball on a CPAN server. Buildroot will automatically download +the tarball from this location. + +On line 10, we declare our dependencies, so that they are built +before the build process of our package starts. + +On line 11 and 12, we give licensing details about the package (its +license on line 11, and the file containing the license text on line +12). + +Finally, on line 14, we invoke the +perl-package+ macro that +generates all the Makefile rules that actually allow the package to be +built. + +Most of these data can be retrieved from https://metacpan.org/. +So, this file and the Config.in can be generated by running +the script +utils/scancpan Foo-Bar+ in the Buildroot directory +(or in a br2-external tree). +This script creates a Config.in file and foo-bar.mk file for the +requested package, and also recursively for all dependencies specified by +CPAN. You should still manually edit the result. In particular, the +following things should be checked. + +* If the perl module links with a shared library that is provided by + another (non-perl) package, this dependency is not added automatically. + It has to be added manually to +PERL_FOO_BAR_DEPENDENCIES+. +* The +package/Config.in+ file has to be updated manually to include the + generated Config.in files. As a hint, the +scancpan+ script prints out + the required +source "..."+ statements, sorted alphabetically. + +[[perl-package-reference]] + +==== +perl-package+ reference + +As a policy, packages that provide Perl/CPAN modules should all be +named +perl-+ in Buildroot. + +This infrastructure handles various Perl build systems : ++ExtUtils-MakeMaker+ (EUMM), +Module-Build+ (MB) and +Module-Build-Tiny+. ++Build.PL+ is preferred by default when a package provides a +Makefile.PL+ +and a +Build.PL+. + +The main macro of the Perl/CPAN package infrastructure is ++perl-package+. It is similar to the +generic-package+ macro. The ability to +have target and host packages is also available, with the ++host-perl-package+ macro. + +Just like the generic infrastructure, the Perl/CPAN infrastructure +works by defining a number of variables before calling the ++perl-package+ macro. + +First, all the package metadata information variables that exist in the +generic infrastructure also exist in the Perl/CPAN infrastructure: ++PERL_FOO_VERSION+, +PERL_FOO_SOURCE+, ++PERL_FOO_PATCH+, +PERL_FOO_SITE+, ++PERL_FOO_SUBDIR+, +PERL_FOO_DEPENDENCIES+, ++PERL_FOO_INSTALL_TARGET+. + +Note that setting +PERL_FOO_INSTALL_STAGING+ to +YES+ has no effect +unless a +PERL_FOO_INSTALL_STAGING_CMDS+ variable is defined. The perl +infrastructure doesn't define these commands since Perl modules generally +don't need to be installed to the +staging+ directory. + +A few additional variables, specific to the Perl/CPAN infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + +* +PERL_FOO_PREFER_INSTALLER+/+HOST_PERL_FOO_PREFER_INSTALLER+, + specifies the preferred installation method. Possible values are + +EUMM+ (for +Makefile.PL+ based installation using + +ExtUtils-MakeMaker+) and +MB+ (for +Build.PL+ based installation + using +Module-Build+). This variable is only used when the package + provides both installation methods. + +* +PERL_FOO_CONF_ENV+/+HOST_PERL_FOO_CONF_ENV+, to specify additional + environment variables to pass to the +perl Makefile.PL+ or +perl Build.PL+. + By default, empty. + +* +PERL_FOO_CONF_OPTS+/+HOST_PERL_FOO_CONF_OPTS+, to specify additional + configure options to pass to the +perl Makefile.PL+ or +perl Build.PL+. + By default, empty. + +* +PERL_FOO_BUILD_OPTS+/+HOST_PERL_FOO_BUILD_OPTS+, to specify additional + options to pass to +make pure_all+ or +perl Build build+ in the build step. + By default, empty. + +* +PERL_FOO_INSTALL_TARGET_OPTS+, to specify additional options to + pass to +make pure_install+ or +perl Build install+ in the install step. + By default, empty. + +* +HOST_PERL_FOO_INSTALL_OPTS+, to specify additional options to + pass to +make pure_install+ or +perl Build install+ in the install step. + By default, empty. diff --git a/buildroot/docs/manual/adding-packages-python.txt b/buildroot/docs/manual/adding-packages-python.txt new file mode 100644 index 0000000..5eb6ba5 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-python.txt @@ -0,0 +1,251 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Python packages + +This infrastructure applies to Python packages that use the standard +Python setuptools mechanism as their build system, generally +recognizable by the usage of a +setup.py+ script. + +[[python-package-tutorial]] + +==== +python-package+ tutorial + +First, let's see how to write a +.mk+ file for a Python package, +with an example : + +------------------------ +01: ################################################################################ +02: # +03: # python-foo +04: # +05: ################################################################################ +06: +07: PYTHON_FOO_VERSION = 1.0 +08: PYTHON_FOO_SOURCE = python-foo-$(PYTHON_FOO_VERSION).tar.xz +09: PYTHON_FOO_SITE = http://www.foosoftware.org/download +10: PYTHON_FOO_LICENSE = BSD-3-Clause +11: PYTHON_FOO_LICENSE_FILES = LICENSE +12: PYTHON_FOO_ENV = SOME_VAR=1 +13: PYTHON_FOO_DEPENDENCIES = libmad +14: PYTHON_FOO_SETUP_TYPE = distutils +15: +16: $(eval $(python-package)) +------------------------ + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10 and 11, we give licensing details about the package (its +license on line 10, and the file containing the license text on line +11). + +On line 12, we tell Buildroot to pass custom options to the Python ++setup.py+ script when it is configuring the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +On line 14, we declare the specific Python build system being used. In +this case the +distutils+ Python build system is used. The two +supported ones are +distutils+ and +setuptools+. + +Finally, on line 16, we invoke the +python-package+ macro that +generates all the Makefile rules that actually allow the package to be +built. + +[[python-package-reference]] + +==== +python-package+ reference + +As a policy, packages that merely provide Python modules should all be +named +python-+ in Buildroot. Other packages that use the +Python build system, but are not Python modules, can freely choose +their name (existing examples in Buildroot are +scons+ and ++supervisor+). + +In their +Config.in+ file, they should depend on +BR2_PACKAGE_PYTHON+ +so that when Buildroot will enable Python 3 usage for modules, we will +be able to enable Python modules progressively on Python 3. + +The main macro of the Python package infrastructure is ++python-package+. It is similar to the +generic-package+ macro. It is +also possible to create Python host packages with the ++host-python-package+ macro. + +Just like the generic infrastructure, the Python infrastructure works +by defining a number of variables before calling the +python-package+ +or +host-python-package+ macros. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the Python infrastructure: +PYTHON_FOO_VERSION+, ++PYTHON_FOO_SOURCE+, +PYTHON_FOO_PATCH+, +PYTHON_FOO_SITE+, ++PYTHON_FOO_SUBDIR+, +PYTHON_FOO_DEPENDENCIES+, +PYTHON_FOO_LICENSE+, ++PYTHON_FOO_LICENSE_FILES+, +PYTHON_FOO_INSTALL_STAGING+, etc. + +Note that: + + * It is not necessary to add +python+ or +host-python+ in the + +PYTHON_FOO_DEPENDENCIES+ variable of a package, since these basic + dependencies are automatically added as needed by the Python + package infrastructure. + + * Similarly, it is not needed to add +host-setuptools+ and/or + +host-distutilscross+ dependencies to +PYTHON_FOO_DEPENDENCIES+ for + setuptools-based packages, since these are automatically added by + the Python infrastructure as needed. + +One variable specific to the Python infrastructure is mandatory: + +* +PYTHON_FOO_SETUP_TYPE+, to define which Python build system is used + by the package. The two supported values are +distutils+ and + +setuptools+. If you don't know which one is used in your package, + look at the +setup.py+ file in your package source code, and see + whether it imports things from the +distutils+ module or the + +setuptools+ module. + +A few additional variables, specific to the Python infrastructure, can +optionally be defined, depending on the package's needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + +* +PYTHON_FOO_ENV+, to specify additional environment variables to + pass to the Python +setup.py+ script (for both the build and install + steps). Note that the infrastructure is automatically passing + several standard variables, defined in +PKG_PYTHON_DISTUTILS_ENV+ + (for distutils target packages), +HOST_PKG_PYTHON_DISTUTILS_ENV+ + (for distutils host packages), +PKG_PYTHON_SETUPTOOLS_ENV+ (for + setuptools target packages) and +HOST_PKG_PYTHON_SETUPTOOLS_ENV+ + (for setuptools host packages). + +* +PYTHON_FOO_BUILD_OPTS+, to specify additional options to pass to the + Python +setup.py+ script during the build step. For target distutils + packages, the +PKG_PYTHON_DISTUTILS_BUILD_OPTS+ options are already + passed automatically by the infrastructure. + +* +PYTHON_FOO_INSTALL_TARGET_OPTS+, +PYTHON_FOO_INSTALL_STAGING_OPTS+, + +HOST_PYTHON_FOO_INSTALL_OPTS+ to specify additional options to pass + to the Python +setup.py+ script during the target installation step, + the staging installation step or the host installation, + respectively. Note that the infrastructure is automatically passing + some options, defined in +PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS+ + or +PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS+ (for target distutils + packages), +HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS+ (for host + distutils packages), +PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS+ or + +PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_OPTS+ (for target setuptools + packages) and +HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS+ (for host + setuptools packages). + +* +HOST_PYTHON_FOO_NEEDS_HOST_PYTHON+, to define the host python + interpreter. The usage of this variable is limited to host + packages. The two supported value are +python2+ and +python3+. It + will ensure the right host python package is available and will + invoke it for the build. If some build steps are overloaded, the + right python interpreter must be explicitly called in the commands. + +With the Python infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most Python-based packages. However, when required, it is still +possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the Python + infrastructure is used, if the package +.mk+ file defines its own + +PYTHON_FOO_BUILD_CMDS+ variable, it will be used instead of the + default Python one. However, using this method should be restricted + to very specific cases. Do not use it in the general case. + +[[scanpypi]] + +==== Generating a +python-package+ from a PyPI repository + +If the Python package for which you would like to create a Buildroot +package is available on PyPI, you may want to use the +scanpypi+ tool +located in +utils/+ to automate the process. + +You can find the list of existing PyPI packages +https://pypi.python.org[here]. + ++scanpypi+ requires Python's +setuptools+ package to be installed on +your host. + +When at the root of your buildroot directory just do : + +----------------------- +utils/scanpypi foo bar -o package +----------------------- + +This will generate packages +python-foo+ and +python-bar+ in the package +folder if they exist on https://pypi.python.org. + +Find the +external python modules+ menu and insert your package inside. +Keep in mind that the items inside a menu should be in alphabetical order. + +Please keep in mind that you'll most likely have to manually check the +package for any mistakes as there are things that cannot be guessed by +the generator (e.g. dependencies on any of the python core modules +such as BR2_PACKAGE_PYTHON_ZLIB). Also, please take note that the +license and license files are guessed and must be checked. You also +need to manually add the package to the +package/Config.in+ file. + +If your Buildroot package is not in the official Buildroot tree but in +a br2-external tree, use the -o flag as follows: + +----------------------- +utils/scanpypi foo bar -o other_package_dir +----------------------- + +This will generate packages +python-foo+ and +python-bar+ in the ++other_package_directory+ instead of +package+. + +Option +-h+ will list the available options: + +----------------------- +utils/scanpypi -h +----------------------- + +[[python-package-cffi-backend]] + +==== +python-package+ CFFI backend + +C Foreign Function Interface for Python (CFFI) provides a convenient +and reliable way to call compiled C code from Python using interface +declarations written in C. Python packages relying on this backend can +be identified by the appearance of a +cffi+ dependency in the ++install_requires+ field of their +setup.py+ file. + +Such a package should: + + * add +python-cffi+ as a runtime dependency in order to install the +compiled C library wrapper on the target. This is achieved by adding ++select BR2_PACKAGE_PYTHON_CFFI+ to the package +Config.in+. + +------------------------ +config BR2_PACKAGE_PYTHON_FOO + bool "python-foo" + select BR2_PACKAGE_PYTHON_CFFI # runtime +------------------------ + + * add +host-python-cffi+ as a build-time dependency in order to +cross-compile the C wrapper. This is achieved by adding ++host-python-cffi+ to the +PYTHON_FOO_DEPENDENCIES+ variable. + +------------------------ +################################################################################ +# +# python-foo +# +################################################################################ + +... + +PYTHON_FOO_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) +------------------------ diff --git a/buildroot/docs/manual/adding-packages-rebar.txt b/buildroot/docs/manual/adding-packages-rebar.txt new file mode 100644 index 0000000..be9ede0 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-rebar.txt @@ -0,0 +1,102 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for rebar-based packages + +[[rebar-package-tutorial]] + +==== +rebar-package+ tutorial + +First, let's see how to write a +.mk+ file for a rebar-based package, +with an example : + +------------------------------ +01: ################################################################################ +02: # +03: # erlang-foobar +04: # +05: ################################################################################ +06: +07: ERLANG_FOOBAR_VERSION = 1.0 +08: ERLANG_FOOBAR_SOURCE = erlang-foobar-$(ERLANG_FOOBAR_VERSION).tar.xz +09: ERLANG_FOOBAR_SITE = http://www.foosoftware.org/download +10: ERLANG_FOOBAR_DEPENDENCIES = host-libaaa libbbb +11: +12: $(eval $(rebar-package)) +-------------------------------- + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line 12, we invoke the +rebar-package+ macro that +generates all the Makefile rules that actually allows the package to +be built. + +[[rebar-package-reference]] + +==== +rebar-package+ reference + +The main macro of the +rebar+ package infrastructure is ++rebar-package+. It is similar to the +generic-package+ macro. The +ability to have host packages is also available, with the ++host-rebar-package+ macro. + +Just like the generic infrastructure, the +rebar+ infrastructure works +by defining a number of variables before calling the +rebar-package+ +macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the +rebar+ infrastructure: ++ERLANG_FOOBAR_VERSION+, +ERLANG_FOOBAR_SOURCE+, ++ERLANG_FOOBAR_PATCH+, +ERLANG_FOOBAR_SITE+, ++ERLANG_FOOBAR_SUBDIR+, +ERLANG_FOOBAR_DEPENDENCIES+, ++ERLANG_FOOBAR_INSTALL_STAGING+, +ERLANG_FOOBAR_INSTALL_TARGET+, ++ERLANG_FOOBAR_LICENSE+ and +ERLANG_FOOBAR_LICENSE_FILES+. + +A few additional variables, specific to the +rebar+ infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + +* +ERLANG_FOOBAR_USE_AUTOCONF+, to specify that the package uses + _autoconf_ at the configuration step. When a package sets this + variable to +YES+, the +autotools+ infrastructure is used. ++ +.Note +You can also use some of the variables from the +autotools+ + infrastructure: +ERLANG_FOOBAR_CONF_ENV+, +ERLANG_FOOBAR_CONF_OPTS+, + +ERLANG_FOOBAR_AUTORECONF+, +ERLANG_FOOBAR_AUTORECONF_ENV+ and + +ERLANG_FOOBAR_AUTORECONF_OPTS+. + +* +ERLANG_FOOBAR_USE_BUNDLED_REBAR+, to specify that the package has + a bundled version of _rebar_ *and* that it shall be used. Valid + values are +YES+ or +NO+ (the default). ++ +.Note +If the package bundles a _rebar_ utility, but can use the generic + one that Buildroot provides, just say +NO+ (i.e., do not specify + this variable). Only set if it is mandatory to use the _rebar_ + utility bundled in this package. + +* +ERLANG_FOOBAR_REBAR_ENV+, to specify additional environment + variables to pass to the _rebar_ utility. + +With the rebar infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most rebar-based packages. However, when required, it is +still possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the rebar + infrastructure is used, if the package +.mk+ file defines its + own +ERLANG_FOOBAR_BUILD_CMDS+ variable, it will be used instead + of the default rebar one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. diff --git a/buildroot/docs/manual/adding-packages-tips.txt b/buildroot/docs/manual/adding-packages-tips.txt new file mode 100644 index 0000000..19577fa --- /dev/null +++ b/buildroot/docs/manual/adding-packages-tips.txt @@ -0,0 +1,169 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Tips and tricks + +[[package-name-variable-relation]] +==== Package name, config entry name and makefile variable relationship + +In Buildroot, there is some relationship between: + +* the _package name_, which is the package directory name (and the + name of the +*.mk+ file); + +* the config entry name that is declared in the +Config.in+ file; + +* the makefile variable prefix. + +It is mandatory to maintain consistency between these elements, +using the following rules: + +* the package directory and the +*.mk+ name are the _package name_ + itself (e.g.: +package/foo-bar_boo/foo-bar_boo.mk+); + +* the _make_ target name is the _package name_ itself (e.g.: + +foo-bar_boo+); + +* the config entry is the upper case _package name_ with `.` and `-` + characters substituted with `_`, prefixed with +BR2_PACKAGE_+ (e.g.: + +BR2_PACKAGE_FOO_BAR_BOO+); + +* the +*.mk+ file variable prefix is the upper case _package name_ + with `.` and `-` characters substituted with `_` (e.g.: + +FOO_BAR_BOO_VERSION+). + +[[testing-package]] +==== How to test your package + +Once you have added your new package, it is important that you test it +under various conditions: does it build for all architectures? Does it +build with the different C libraries? Does it need threads, NPTL? And +so on... + +Buildroot runs http://autobuild.buildroot.org/[autobuilders] which +continuously test random configurations. However, these only build the +`master` branch of the git tree, and your new fancy package is not yet +there. + +Buildroot provides a script in +utils/test-pkg+ that uses the same base +configurations as used by the autobuilders so you can test your package +in the same conditions. + +First, create a config snippet that contains all the necessary options +needed to enable your package, but without any architecture or toolchain +option. For example, let's create a config snippet that just enables ++libcurl+, without any TLS backend: + +---- +$ cat libcurl.config +BR2_PACKAGE_LIBCURL=y +---- + +If your package needs more configuration options, you can add them to the +config snippet. For example, here's how you would test +libcurl+ with ++openssl+ as a TLS backend and the +curl+ program: + +---- +$ cat libcurl.config +BR2_PACKAGE_LIBCURL=y +BR2_PACKAGE_CURL=y +BR2_PACKAGE_OPENSSL=y +---- + +Then run the +test-pkg+ script, by telling it what config snippet to use +and what package to test: + +---- +$ ./utils/test-pkg -c libcurl.config -p libcurl +---- + +This will try to build your package against all the toolchains used +by the autobuilders (except for the internal toolchains, because it takes +too long to do so). The output lists all toolchains and the corresponding +result (excerpt, results are fake): + +---- +$ ./utils/test-pkg -c libcurl.config -p libcurl + armv5-ctng-linux-gnueabi [ 1/11]: OK + armv7-ctng-linux-gnueabihf [ 2/11]: OK + br-aarch64-glibc [ 3/11]: SKIPPED + br-arcle-hs38 [ 4/11]: SKIPPED + br-arm-basic [ 5/11]: FAILED + br-arm-cortex-a9-glibc [ 6/11]: OK + br-arm-cortex-a9-musl [ 7/11]: FAILED + br-arm-cortex-m4-full [ 8/11]: OK + br-arm-full [ 9/11]: OK + br-arm-full-nothread [10/11]: FAILED + br-arm-full-static [11/11]: OK +11 builds, 2 skipped, 2 build failed, 1 legal-info failed +---- + +The results mean: + +* `OK`: the build was successful. +* `SKIPPED`: one or more configuration options listed in the config + snippet were not present in the final configuration. This is due to + options having dependencies not satisfied by the toolchain, such as + for example a package that +depends on BR2_USE_MMU+ with a noMMU + toolchain. The missing options are reported in +missing.config+ in + the output build directory (+~/br-test-pkg/TOOLCHAIN_NAME/+ by + default). +* `FAILED`: the build failed. Inspect the +logfile+ file in the output + build directory to see what went wrong: +** the actual build failed, +** the legal-info failed, +** one of the preliminary steps (downloading the config file, applying + the configuration, running `dirclean` for the package) failed. + +When there are failures, you can just re-run the script with the same +options (after you fixed your package); the script will attempt to +re-build the package specified with +-p+ for all toolchains, without +the need to re-build all the dependencies of that package. + +The +test-pkg+ script accepts a few options, for which you can get some +help by running: + +---- +$ ./utils/test-pkg -h +---- + +[[github-download-url]] +==== How to add a package from GitHub + +Packages on GitHub often don't have a download area with release tarballs. +However, it is possible to download tarballs directly from the repository +on GitHub. As GitHub is known to have changed download mechanisms in the +past, the 'github' helper function should be used as shown below. + +------------------------ +# Use a tag or a full commit ID +FOO_VERSION = v1.0 +FOO_SITE = $(call github,,,$(FOO_VERSION)) +------------------------ + +.Notes +- The FOO_VERSION can either be a tag or a commit ID. +- The tarball name generated by github matches the default one from + Buildroot (e.g.: +foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz+), + so it is not necessary to specify it in the +.mk+ file. +- When using a commit ID as version, you should use the full 40 hex characters. + +If the package you wish to add does have a release section on GitHub, the +maintainer may have uploaded a release tarball, or the release may just point +to the automatically generated tarball from the git tag. If there is a +release tarball uploaded by the maintainer, we prefer to use that since it +may be slightly different (e.g. it contains a configure script so we don't +need to do AUTORECONF). + +You can see on the release page if it's an uploaded tarball or a git tag: + +image::github_hash_mongrel2.png[] + +- If it looks like the image above then it was uploaded by the + maintainer and you should use that link (in that example: + 'mongrel2-v1.9.2.tar.bz2') to specify +FOO_SITE+, and not use the + 'github' helper. + +- On the other hand, if there's is *only* the "Source code" link, then + it's an automatically generated tarball and you should use the + 'github' helper function. diff --git a/buildroot/docs/manual/adding-packages-virtual.txt b/buildroot/docs/manual/adding-packages-virtual.txt new file mode 100644 index 0000000..6326bb5 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-virtual.txt @@ -0,0 +1,144 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for virtual packages + +[[virtual-package-tutorial]] + +In Buildroot, a virtual package is a package whose functionalities are +provided by one or more packages, referred to as 'providers'. The virtual +package management is an extensible mechanism allowing the user to choose +the provider used in the rootfs. + +For example, 'OpenGL ES' is an API for 2D and 3D graphics on embedded systems. +The implementation of this API is different for the 'Allwinner Tech Sunxi' and +the 'Texas Instruments OMAP35xx' platforms. So +libgles+ will be a virtual +package and +sunxi-mali+ and +ti-gfx+ will be the providers. + +==== +virtual-package+ tutorial + +In the following example, we will explain how to add a new virtual package +('something-virtual') and a provider for it ('some-provider'). + +First, let's create the virtual package. + +==== Virtual package's +Config.in+ file + +The +Config.in+ file of virtual package 'something-virtual' should contain: + +--------------------------- +01: config BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +02: bool +03: +04: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL +05: depends on BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +06: string +--------------------------- + +In this file, we declare two options, +BR2_PACKAGE_HAS_SOMETHING_VIRTUAL+ and ++BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL+, whose values will be used by the +providers. + +==== Virtual package's +.mk+ file + +The +.mk+ for the virtual package should just evaluate the +virtual-package+ macro: + +--------------------------- +01: ################################################################################ +02: # +03: # something-virtual +04: # +05: ################################################################################ +06: +07: $(eval $(virtual-package)) +--------------------------- + +The ability to have target and host packages is also available, with the ++host-virtual-package+ macro. + +==== Provider's +Config.in+ file + +When adding a package as a provider, only the +Config.in+ file requires some +modifications. + +The +Config.in+ file of the package 'some-provider', which provides the +functionalities of 'something-virtual', should contain: + +--------------------------- +01: config BR2_PACKAGE_SOME_PROVIDER +02: bool "some-provider" +03: select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +04: help +05: This is a comment that explains what some-provider is. +06: +07: http://foosoftware.org/some-provider/ +08: +09: if BR2_PACKAGE_SOME_PROVIDER +10: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL +11: default "some-provider" +12: endif +--------------------------- + +On line 3, we select +BR2_PACKAGE_HAS_SOMETHING_VIRTUAL+, and on line 11, we +set the value of +BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL+ to the name of the +provider, but only if it is selected. + +==== Provider's +.mk+ file + +The +.mk+ file should also declare an additional variable ++SOME_PROVIDER_PROVIDES+ to contain the names of all the virtual +packages it is an implementation of: + +--------------------------- +01: SOME_PROVIDER_PROVIDES = something-virtual +--------------------------- + +Of course, do not forget to add the proper build and runtime dependencies for +this package! + +==== Notes on depending on a virtual package + +When adding a package that requires a certain +FEATURE+ provided by a virtual +package, you have to use +depends on BR2_PACKAGE_HAS_FEATURE+, like so: + +--------------------------- +config BR2_PACKAGE_HAS_FEATURE + bool + +config BR2_PACKAGE_FOO + bool "foo" + depends on BR2_PACKAGE_HAS_FEATURE +--------------------------- + +==== Notes on depending on a specific provider + +If your package really requires a specific provider, then you'll have to +make your package +depends on+ this provider; you can _not_ +select+ a +provider. + +Let's take an example with two providers for a +FEATURE+: + +--------------------------- +config BR2_PACKAGE_HAS_FEATURE + bool + +config BR2_PACKAGE_FOO + bool "foo" + select BR2_PACKAGE_HAS_FEATURE + +config BR2_PACKAGE_BAR + bool "bar" + select BR2_PACKAGE_HAS_FEATURE +--------------------------- + +And you are adding a package that needs +FEATURE+ as provided by +foo+, +but not as provided by +bar+. + +If you were to use +select BR2_PACKAGE_FOO+, then the user would still +be able to select +BR2_PACKAGE_BAR+ in the menuconfig. This would create +a configuration inconsistency, whereby two providers of the same +FEATURE+ +would be enabled at once, one explicitly set by the user, the other +implicitly by your +select+. + +Instead, you have to use +depends on BR2_PACKAGE_FOO+, which avoids any +implicit configuration inconsistency. diff --git a/buildroot/docs/manual/adding-packages-waf.txt b/buildroot/docs/manual/adding-packages-waf.txt new file mode 100644 index 0000000..43b557c --- /dev/null +++ b/buildroot/docs/manual/adding-packages-waf.txt @@ -0,0 +1,85 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Infrastructure for Waf-based packages + +[[waf-package-tutorial]] + +==== +waf-package+ tutorial + +First, let's see how to write a +.mk+ file for a Waf-based package, with +an example : + +------------------------ +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_CONF_OPTS = --enable-bar --disable-baz +11: LIBFOO_DEPENDENCIES = bar +12: +13: $(eval $(waf-package)) +------------------------ + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot what options to enable for libfoo. + +On line 11, we tell Buildroot the depednencies of libfoo. + +Finally, on line line 13, we invoke the +waf-package+ +macro that generates all the Makefile rules that actually allows the +package to be built. + +[[waf-package-reference]] + +==== +waf-package+ reference + +The main macro of the Waf package infrastructure is +waf-package+. +It is similar to the +generic-package+ macro. + +Just like the generic infrastructure, the Waf infrastructure works +by defining a number of variables before calling the +waf-package+ +macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Waf infrastructure: ++LIBFOO_VERSION+, +LIBFOO_SOURCE+, +LIBFOO_PATCH+, +LIBFOO_SITE+, ++LIBFOO_SUBDIR+, +LIBFOO_DEPENDENCIES+, +LIBFOO_INSTALL_STAGING+, ++LIBFOO_INSTALL_TARGET+. + +An additional variable, specific to the Waf infrastructure, can +also be defined. + +* +LIBFOO_NEEDS_EXTERNAL_WAF+ can be set to +YES+ or +NO+ to tell + Buildroot to use the bundled +waf+ executable. If set to +NO+, the + default, then Buildroot will use the waf executable provided in the + package source tree; if set to +YES+, then Buidlroot will download, + install waf as a host tool and use it to build the package. + +* +LIBFOO_WAF_OPTS+, to specify additional options to pass to the + +waf+ script at every step of the package build process: configure, + build and installation. By default, empty. + +* +LIBFOO_CONF_OPTS+, to specify additional options to pass to the + +waf+ script for the configuration step. By default, empty. + +* +LIBFOO_BUILD_OPTS+, to specify additional options to pass to the + +waf+ script during the build step. By default, empty. + +* +LIBFOO_INSTALL_STAGING_OPTS+, to specify additional options to pass + to the +waf+ script during the staging installation step. By default, + empty. + +* +LIBFOO_INSTALL_TARGET_OPTS+, to specify additional options to pass + to the +waf+ script during the target installation step. By default, + empty. diff --git a/buildroot/docs/manual/adding-packages.txt b/buildroot/docs/manual/adding-packages.txt new file mode 100644 index 0000000..e8d40da --- /dev/null +++ b/buildroot/docs/manual/adding-packages.txt @@ -0,0 +1,53 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[adding-packages]] +== Adding new packages to Buildroot + +This section covers how new packages (userspace libraries or +applications) can be integrated into Buildroot. It also shows how +existing packages are integrated, which is needed for fixing issues or +tuning their configuration. + +When you add a new package, be sure to test it in various conditions; +see xref:testing-package[] + +include::adding-packages-directory.txt[] + +include::adding-packages-generic.txt[] + +include::adding-packages-autotools.txt[] + +include::adding-packages-cmake.txt[] + +include::adding-packages-python.txt[] + +include::adding-packages-luarocks.txt[] + +include::adding-packages-perl.txt[] + +include::adding-packages-virtual.txt[] + +include::adding-packages-kconfig.txt[] + +include::adding-packages-rebar.txt[] + +include::adding-packages-waf.txt[] + +include::adding-packages-meson.txt[] + +include::adding-packages-cargo.txt[] + +include::adding-packages-kernel-module.txt[] + +include::adding-packages-asciidoc.txt[] + +include::adding-packages-linux-kernel-spec-infra.txt[] + +include::adding-packages-hooks.txt[] + +include::adding-packages-gettext.txt[] + +include::adding-packages-tips.txt[] + +include::adding-packages-conclusion.txt[] diff --git a/buildroot/docs/manual/advanced.txt b/buildroot/docs/manual/advanced.txt new file mode 100644 index 0000000..b7bfc49 --- /dev/null +++ b/buildroot/docs/manual/advanced.txt @@ -0,0 +1,16 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Advanced usage + +include::using-buildroot-toolchain.txt[] + +include::using-buildroot-debugger.txt[] + +include::ccache-support.txt[] + +include::download-location.txt[] + +include::package-make-target.txt[] + +include::using-buildroot-development.txt[] diff --git a/buildroot/docs/manual/appendix.txt b/buildroot/docs/manual/appendix.txt new file mode 100644 index 0000000..86afa4b --- /dev/null +++ b/buildroot/docs/manual/appendix.txt @@ -0,0 +1,6 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +include::makedev-syntax.txt[] +include::makeusers-syntax.txt[] +include::migrating.txt[] diff --git a/buildroot/docs/manual/beyond-buildroot.txt b/buildroot/docs/manual/beyond-buildroot.txt new file mode 100644 index 0000000..eefea1f --- /dev/null +++ b/buildroot/docs/manual/beyond-buildroot.txt @@ -0,0 +1,66 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Beyond Buildroot + +=== Boot the generated images + +==== NFS boot + +To achieve NFS-boot, enable _tar root filesystem_ in the _Filesystem +images_ menu. + +After a complete build, just run the following commands to setup the +NFS-root directory: + +------------------- +sudo tar -xavf /path/to/output_dir/rootfs.tar -C /path/to/nfs_root_dir +------------------- + +Remember to add this path to +/etc/exports+. + +Then, you can execute a NFS-boot from your target. + +==== Live CD + +To build a live CD image, enable the _iso image_ option in the +_Filesystem images_ menu. Note that this option is only available on +the x86 and x86-64 architectures, and if you are building your kernel +with Buildroot. + +You can build a live CD image with either IsoLinux, Grub or Grub 2 as +a bootloader, but only Isolinux supports making this image usable both +as a live CD and live USB (through the _Build hybrid image_ option). + +You can test your live CD image using QEMU: + +------------------- +qemu-system-i386 -cdrom output/images/rootfs.iso9660 +------------------- + +Or use it as a hard-drive image if it is a hybrid ISO: + +------------------- +qemu-system-i386 -hda output/images/rootfs.iso9660 +------------------- + +It can be easily flashed to a USB drive with +dd+: + +------------------- +dd if=output/images/rootfs.iso9660 of=/dev/sdb +------------------- + +=== Chroot + +If you want to chroot in a generated image, then there are few thing +you should be aware of: + +* you should setup the new root from the _tar root filesystem_ image; + +* either the selected target architecture is compatible with your host + machine, or you should use some +qemu-*+ binary and correctly set it + within the +binfmt+ properties to be able to run the binaries built + for the target on your host machine; + +* Buildroot does not currently provide +host-qemu+ and +binfmt+ + correctly built and set for that kind of use. diff --git a/buildroot/docs/manual/ccache-support.txt b/buildroot/docs/manual/ccache-support.txt new file mode 100644 index 0000000..f6746ad --- /dev/null +++ b/buildroot/docs/manual/ccache-support.txt @@ -0,0 +1,55 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[ccache]] +==== Using +ccache+ in Buildroot + +http://ccache.samba.org[ccache] is a compiler cache. It stores the +object files resulting from each compilation process, and is able to +skip future compilation of the same source file (with same compiler +and same arguments) by using the pre-existing object files. When doing +almost identical builds from scratch a number of times, it can nicely +speed up the build process. + ++ccache+ support is integrated in Buildroot. You just have to enable ++Enable compiler cache+ in +Build options+. This will automatically +build +ccache+ and use it for every host and target compilation. + +The cache is located in +$HOME/.buildroot-ccache+. It is stored +outside of Buildroot output directory so that it can be shared by +separate Buildroot builds. If you want to get rid of the cache, simply +remove this directory. + +You can get statistics on the cache (its size, number of hits, +misses, etc.) by running +make ccache-stats+. + +The make target +ccache-options+ and the +CCACHE_OPTIONS+ variable +provide more generic access to the ccache. For example + +----------------- +# set cache limit size +make CCACHE_OPTIONS="--max-size=5G" ccache-options + +# zero statistics counters +make CCACHE_OPTIONS="--zero-stats" ccache-options +----------------- + ++ccache+ makes a hash of the source files and of the compiler options. +If a compiler option is different, the cached object file will not be +used. Many compiler options, however, contain an absolute path to the +staging directory. Because of this, building in a different output +directory would lead to many cache misses. + +To avoid this issue, buildroot has the +Use relative paths+ option +(+BR2_CCACHE_USE_BASEDIR+). This will rewrite all absolute paths that +point inside the output directory into relative paths. Thus, changing +the output directory no longer leads to cache misses. + +A disadvantage of the relative paths is that they also end up to be +relative paths in the object file. Therefore, for example, the debugger +will no longer find the file, unless you cd to the output directory +first. + +See https://ccache.samba.org/manual.html#_compiling_in_different_directories[the +ccache manual's section on "Compiling in different directories"] for +more details about this rewriting of absolute paths. diff --git a/buildroot/docs/manual/common-usage.txt b/buildroot/docs/manual/common-usage.txt new file mode 100644 index 0000000..a22da20 --- /dev/null +++ b/buildroot/docs/manual/common-usage.txt @@ -0,0 +1,334 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== General Buildroot usage + +include::make-tips.txt[] + +include::rebuilding-packages.txt[] + +=== Offline builds + +If you intend to do an offline build and just want to download +all sources that you previously selected in the configurator +('menuconfig', 'nconfig', 'xconfig' or 'gconfig'), then issue: + +-------------------- + $ make source +-------------------- + +You can now disconnect or copy the content of your +dl+ +directory to the build-host. + +=== Building out-of-tree + +As default, everything built by Buildroot is stored in the directory ++output+ in the Buildroot tree. + +Buildroot also supports building out of tree with a syntax similar to +the Linux kernel. To use it, add +O=+ to the make command +line: + +-------------------- + $ make O=/tmp/build +-------------------- + +Or: + +-------------------- + $ cd /tmp/build; make O=$PWD -C path/to/buildroot +-------------------- + +All the output files will be located under +/tmp/build+. If the +O+ +path does not exist, Buildroot will create it. + +*Note:* the +O+ path can be either an absolute or a relative path, but if it's +passed as a relative path, it is important to note that it is interpreted +relative to the main Buildroot source directory, *not* the current working +directory. + +When using out-of-tree builds, the Buildroot +.config+ and temporary +files are also stored in the output directory. This means that you can +safely run multiple builds in parallel using the same source tree as +long as they use unique output directories. + +For ease of use, Buildroot generates a Makefile wrapper in the output +directory - so after the first run, you no longer need to pass +O=<...>+ +and +-C <...>+, simply run (in the output directory): + +-------------------- + $ make +-------------------- + +[[env-vars]] + +=== Environment variables + +Buildroot also honors some environment variables, when they are passed +to +make+ or set in the environment: + +* +HOSTCXX+, the host C++ compiler to use +* +HOSTCC+, the host C compiler to use +* +UCLIBC_CONFIG_FILE=+, path to + the uClibc configuration file, used to compile uClibc, if an + internal toolchain is being built. + + + Note that the uClibc configuration file can also be set from the + configuration interface, so through the Buildroot +.config+ file; this + is the recommended way of setting it. + + +* +BUSYBOX_CONFIG_FILE=+, path to + the BusyBox configuration file. + + + Note that the BusyBox configuration file can also be set from the + configuration interface, so through the Buildroot +.config+ file; this + is the recommended way of setting it. + + +* +BR2_CCACHE_DIR+ to override the directory where + Buildroot stores the cached files when using ccache. + + +* +BR2_DL_DIR+ to override the directory in which + Buildroot stores/retrieves downloaded files + + + Note that the Buildroot download directory can also be set from the + configuration interface, so through the Buildroot +.config+ file. See + xref:download-location[] for more details on how you can set the download + directory. +* +BR2_GRAPH_ALT+, if set and non-empty, to use an alternate color-scheme in + build-time graphs +* +BR2_GRAPH_OUT+ to set the filetype of generated graphs, either +pdf+ (the + default), or +png+. +* +BR2_GRAPH_DEPS_OPTS+ to pass extra options to the dependency graph; see + xref:graph-depends[] for the accepted options +* +BR2_GRAPH_DOT_OPTS+ is passed verbatim as options to the +dot+ utility to + draw the dependency graph. + +An example that uses config files located in the toplevel directory and +in your $HOME: + +-------------------- + $ make UCLIBC_CONFIG_FILE=uClibc.config BUSYBOX_CONFIG_FILE=$HOME/bb.config +-------------------- + +If you want to use a compiler other than the default +gcc+ +or +g+++ for building helper-binaries on your host, then do + +-------------------- + $ make HOSTCXX=g++-4.3-HEAD HOSTCC=gcc-4.3-HEAD +-------------------- + +=== Dealing efficiently with filesystem images + +Filesystem images can get pretty big, depending on the filesystem you choose, +the number of packages, whether you provisioned free space... Yet, some +locations in the filesystems images may just be _empty_ (e.g. a long run of +'zeroes'); such a file is called a _sparse_ file. + +Most tools can handle sparse files efficiently, and will only store or write +those parts of a sparse file that are not empty. + +For example: + +* +tar+ accepts the +-S+ option to tell it to only store non-zero blocks + of sparse files: +** +tar cf archive.tar -S [files...]+ will efficiently store sparse files + in a tarball +** +tar xf archive.tar -S+ will efficiently store sparse files extracted + from a tarball + +* +cp+ accepts the +--sparse=WHEN+ option (+WHEN+ is one of +auto+, + +never+ or +always+): +** +cp --sparse=always source.file dest.file+ will make +dest.file+ a + sparse file if +source.file+ has long runs of zeroes + +Other tools may have similar options. Please consult their respective man +pages. + +You can use sparse files if you need to store the filesystem images (e.g. +to transfer from one machine to another), or if you need to send them (e.g. +to the Q&A team). + +Note however that flashing a filesystem image to a device while using the +sparse mode of +dd+ may result in a broken filesystem (e.g. the block bitmap +of an ext2 filesystem may be corrupted; or, if you have sparse files in +your filesystem, those parts may not be all-zeroes when read back). You +should only use sparse files when handling files on the build machine, not +when transferring them to an actual device that will be used on the target. + +=== Graphing the dependencies between packages + +[[graph-depends]] + +One of Buildroot's jobs is to know the dependencies between packages, +and make sure they are built in the right order. These dependencies +can sometimes be quite complicated, and for a given system, it is +often not easy to understand why such or such package was brought into +the build by Buildroot. + +In order to help understanding the dependencies, and therefore better +understand what is the role of the different components in your +embedded Linux system, Buildroot is capable of generating dependency +graphs. + +To generate a dependency graph of the full system you have compiled, +simply run: + +------------------------ +make graph-depends +------------------------ + +You will find the generated graph in ++output/graphs/graph-depends.pdf+. + +If your system is quite large, the dependency graph may be too complex +and difficult to read. It is therefore possible to generate the +dependency graph just for a given package: + +------------------------ +make -graph-depends +------------------------ + +You will find the generated graph in ++output/graph/-graph-depends.pdf+. + +Note that the dependency graphs are generated using the +dot+ tool +from the _Graphviz_ project, which you must have installed on your +system to use this feature. In most distributions, it is available as +the +graphviz+ package. + +By default, the dependency graphs are generated in the PDF +format. However, by passing the +BR2_GRAPH_OUT+ environment variable, you +can switch to other output formats, such as PNG, PostScript or +SVG. All formats supported by the +-T+ option of the +dot+ tool are +supported. + +-------------------------------- +BR2_GRAPH_OUT=svg make graph-depends +-------------------------------- + +The +graph-depends+ behaviour can be controlled by setting options in the ++BR2_GRAPH_DEPS_OPTS+ environment variable. The accepted options are: + +* +--depth N+, +-d N+, to limit the dependency depth to +N+ levels. The + default, +0+, means no limit. + +* +--stop-on PKG+, +-s PKG+, to stop the graph on the package +PKG+. + +PKG+ can be an actual package name, a glob, the keyword 'virtual' + (to stop on virtual packages), or the keyword 'host' (to stop on + host packages). The package is still present on the graph, but its + dependencies are not. + +* +--exclude PKG+, +-x PKG+, like +--stop-on+, but also omits +PKG+ from + the graph. + +* +--transitive+, +--no-transitive+, to draw (or not) the transitive + dependencies. The default is to not draw transitive dependencies. + +* +--colours R,T,H+, the comma-separated list of colours to draw the + root package (+R+), the target packages (+T+) and the host packages + (+H+). Defaults to: +lightblue,grey,gainsboro+ + +-------------------------------- +BR2_GRAPH_DEPS_OPTS='-d 3 --no-transitive --colours=red,green,blue' make graph-depends +-------------------------------- + +=== Graphing the build duration + +[[graph-duration]] + +When the build of a system takes a long time, it is sometimes useful +to be able to understand which packages are the longest to build, to +see if anything can be done to speed up the build. In order to help +such build time analysis, Buildroot collects the build time of each +step of each package, and allows to generate graphs from this data. + +To generate the build time graph after a build, run: + +---------------- +make graph-build +---------------- + +This will generate a set of files in +output/graphs+ : + +* +build.hist-build.pdf+, a histogram of the build time for each + package, ordered in the build order. + +* +build.hist-duration.pdf+, a histogram of the build time for each + package, ordered by duration (longest first) + +* +build.hist-name.pdf+, a histogram of the build time for each + package, order by package name. + +* +build.pie-packages.pdf+, a pie chart of the build time per package + +* +build.pie-steps.pdf+, a pie chart of the global time spent in each + step of the packages build process. + +This +graph-build+ target requires the Python Matplotlib and Numpy +libraries to be installed (+python-matplotlib+ and +python-numpy+ on +most distributions), and also the +argparse+ module if you're using a +Python version older than 2.7 (+python-argparse+ on most +distributions). + +By default, the output format for the graph is PDF, but a different +format can be selected using the +BR2_GRAPH_OUT+ environment variable. The +only other format supported is PNG: + +---------------- +BR2_GRAPH_OUT=png make graph-build +---------------- + +=== Graphing the filesystem size contribution of packages + +When your target system grows, it is sometimes useful to understand +how much each Buildroot package is contributing to the overall root +filesystem size. To help with such an analysis, Buildroot collects +data about files installed by each package and using this data, +generates a graph and CSV files detailing the size contribution of +the different packages. + +To generate these data after a build, run: + +---------------- +make graph-size +---------------- + +This will generate: + +* +output/graphs/graph-size.pdf+, a pie chart of the contribution of + each package to the overall root filesystem size + +* +output/graphs/package-size-stats.csv+, a CSV file giving the size + contribution of each package to the overall root filesystem size + +* +output/graphs/file-size-stats.csv+, a CSV file giving the size + contribution of each installed file to the package it belongs, and + to the overall filesystem size. + +This +graph-size+ target requires the Python Matplotlib library to be +installed (+python-matplotlib+ on most distributions), and also the ++argparse+ module if you're using a Python version older than 2.7 +(+python-argparse+ on most distributions). + +Just like for the duration graph, a +BR2_GRAPH_OUT+ environment is +supported to adjust the output file format. See xref:graph-depends[] +for details about this environment variable. + +.Note +The collected filesystem size data is only meaningful after a complete +clean rebuild. Be sure to run +make clean all+ before using +make +graph-size+. + +To compare the root filesystem size of two different Buildroot compilations, +for example after adjusting the configuration or when switching to another +Buildroot release, use the +size-stats-compare+ script. It takes two ++file-size-stats.csv+ files (produced by +make graph-size+) as input. +Refer to the help text of this script for more details: + +---------------- +utils/size-stats-compare -h +---------------- + +include::eclipse-integration.txt[] + +include::advanced.txt[] diff --git a/buildroot/docs/manual/configure-other-components.txt b/buildroot/docs/manual/configure-other-components.txt new file mode 100644 index 0000000..60a80f0 --- /dev/null +++ b/buildroot/docs/manual/configure-other-components.txt @@ -0,0 +1,60 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Configuration of other components + +Before attempting to modify any of the components below, make sure you +have already configured Buildroot itself, and have enabled the +corresponding package. + +BusyBox:: ++ +If you already have a BusyBox configuration file, you can directly +specify this file in the Buildroot configuration, using ++BR2_PACKAGE_BUSYBOX_CONFIG+. Otherwise, Buildroot will start from a +default BusyBox configuration file. ++ +To make subsequent changes to the configuration, use +make +busybox-menuconfig+ to open the BusyBox configuration editor. ++ +It is also possible to specify a BusyBox configuration file through an +environment variable, although this is not recommended. Refer to +xref:env-vars[] for more details. + +uClibc:: ++ +Configuration of uClibc is done in the same way as for BusyBox. The +configuration variable to specify an existing configuration file is ++BR2_UCLIBC_CONFIG+. The command to make subsequent changes is +make +uclibc-menuconfig+. + +Linux kernel:: ++ +If you already have a kernel configuration file, you can directly +specify this file in the Buildroot configuration, using ++BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG+. ++ +If you do not yet have a kernel configuration file, you can either start +by specifying a defconfig in the Buildroot configuration, using ++BR2_LINUX_KERNEL_USE_DEFCONFIG+, or start by creating an empty file and +specifying it as custom configuration file, using ++BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG+. ++ +To make subsequent changes to the configuration, use +make +linux-menuconfig+ to open the Linux configuration editor. + +Barebox:: ++ +Configuration of Barebox is done in the same way as for the Linux +kernel. The corresponding configuration variables are ++BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG+ and ++BR2_TARGET_BAREBOX_USE_DEFCONFIG+. To open the configuration editor, +use +make barebox-menuconfig+. + +U-Boot:: ++ +Configuration of U-Boot (version 2015.04 or newer) is done in the same +way as for the Linux kernel. The corresponding configuration variables +are +BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG+ and ++BR2_TARGET_UBOOT_USE_DEFCONFIG+. To open the configuration editor, +use +make uboot-menuconfig+. diff --git a/buildroot/docs/manual/configure.txt b/buildroot/docs/manual/configure.txt new file mode 100644 index 0000000..008813c --- /dev/null +++ b/buildroot/docs/manual/configure.txt @@ -0,0 +1,384 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[configure]] +== Buildroot configuration + +All the configuration options in +make *config+ have a help text +providing details about the option. + +The +make *config+ commands also offer a search tool. Read the help +message in the different frontend menus to know how to use it: + +* in _menuconfig_, the search tool is called by pressing +/+; +* in _xconfig_, the search tool is called by pressing +Ctrl+ + +f+. + +The result of the search shows the help message of the matching items. +In _menuconfig_, numbers in the left column provide a shortcut to the +corresponding entry. Just type this number to directly jump to the +entry, or to the containing menu in case the entry is not selectable due +to a missing dependency. + +Although the menu structure and the help text of the entries should be +sufficiently self-explanatory, a number of topics require additional +explanation that cannot easily be covered in the help text and are +therefore covered in the following sections. + +=== Cross-compilation toolchain + +A compilation toolchain is the set of tools that allows you to compile +code for your system. It consists of a compiler (in our case, +gcc+), +binary utils like assembler and linker (in our case, +binutils+) and a +C standard library (for example +http://www.gnu.org/software/libc/libc.html[GNU Libc], +http://www.uclibc-ng.org/[uClibc-ng]). + +The system installed on your development station certainly already has +a compilation toolchain that you can use to compile an application +that runs on your system. If you're using a PC, your compilation +toolchain runs on an x86 processor and generates code for an x86 +processor. Under most Linux systems, the compilation toolchain uses +the GNU libc (glibc) as the C standard library. This compilation +toolchain is called the "host compilation toolchain". The machine on +which it is running, and on which you're working, is called the "host +system" footnote:[This terminology differs from what is used by GNU +configure, where the host is the machine on which the application will +run (which is usually the same as target)]. + +The compilation toolchain is provided by your distribution, and +Buildroot has nothing to do with it (other than using it to build a +cross-compilation toolchain and other tools that are run on the +development host). + +As said above, the compilation toolchain that comes with your system +runs on and generates code for the processor in your host system. As +your embedded system has a different processor, you need a +cross-compilation toolchain - a compilation toolchain that runs on +your _host system_ but generates code for your _target system_ (and +target processor). For example, if your host system uses x86 and your +target system uses ARM, the regular compilation toolchain on your host +runs on x86 and generates code for x86, while the cross-compilation +toolchain runs on x86 and generates code for ARM. + +Buildroot provides two solutions for the cross-compilation toolchain: + + * The *internal toolchain backend*, called +Buildroot toolchain+ in + the configuration interface. + + * The *external toolchain backend*, called +External toolchain+ in + the configuration interface. + +The choice between these two solutions is done using the +Toolchain +Type+ option in the +Toolchain+ menu. Once one solution has been +chosen, a number of configuration options appear, they are detailed in +the following sections. + +[[internal-toolchain-backend]] +==== Internal toolchain backend + +The _internal toolchain backend_ is the backend where Buildroot builds +by itself a cross-compilation toolchain, before building the userspace +applications and libraries for your target embedded system. + +This backend supports several C libraries: +http://www.uclibc-ng.org[uClibc-ng], +http://www.gnu.org/software/libc/libc.html[glibc] and +http://www.musl-libc.org[musl]. + +Once you have selected this backend, a number of options appear. The +most important ones allow to: + + * Change the version of the Linux kernel headers used to build the + toolchain. This item deserves a few explanations. In the process of + building a cross-compilation toolchain, the C library is being + built. This library provides the interface between userspace + applications and the Linux kernel. In order to know how to "talk" + to the Linux kernel, the C library needs to have access to the + _Linux kernel headers_ (i.e. the +.h+ files from the kernel), which + define the interface between userspace and the kernel (system + calls, data structures, etc.). Since this interface is backward + compatible, the version of the Linux kernel headers used to build + your toolchain do not need to match _exactly_ the version of the + Linux kernel you intend to run on your embedded system. They only + need to have a version equal or older to the version of the Linux + kernel you intend to run. If you use kernel headers that are more + recent than the Linux kernel you run on your embedded system, then + the C library might be using interfaces that are not provided by + your Linux kernel. + + * Change the version of the GCC compiler, binutils and the C library. + + * Select a number of toolchain options (uClibc only): whether the + toolchain should have RPC support (used mainly for NFS), + wide-char support, locale support (for internationalization), + C++ support or thread support. Depending on which options you choose, + the number of userspace applications and libraries visible in + Buildroot menus will change: many applications and libraries require + certain toolchain options to be enabled. Most packages show a comment + when a certain toolchain option is required to be able to enable + those packages. If needed, you can further refine the uClibc + configuration by running +make uclibc-menuconfig+. Note however that + all packages in Buildroot are tested against the default uClibc + configuration bundled in Buildroot: if you deviate from this + configuration by removing features from uClibc, some packages may no + longer build. + +It is worth noting that whenever one of those options is modified, +then the entire toolchain and system must be rebuilt. See +xref:full-rebuild[]. + +Advantages of this backend: + +* Well integrated with Buildroot +* Fast, only builds what's necessary + +Drawbacks of this backend: + +* Rebuilding the toolchain is needed when doing +make clean+, which + takes time. If you're trying to reduce your build time, consider + using the _External toolchain backend_. + +[[external-toolchain-backend]] +==== External toolchain backend + +The _external toolchain backend_ allows to use existing pre-built +cross-compilation toolchains. Buildroot knows about a number of +well-known cross-compilation toolchains (from +http://www.linaro.org[Linaro] for ARM, +http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/[Sourcery +CodeBench] for ARM, x86-64, PowerPC, and MIPS, and is capable of +downloading them automatically, or it can be pointed to a custom +toolchain, either available for download or installed locally. + +Then, you have three solutions to use an external toolchain: + +* Use a predefined external toolchain profile, and let Buildroot + download, extract and install the toolchain. Buildroot already knows + about a few CodeSourcery and Linaro toolchains. Just select the + toolchain profile in +Toolchain+ from the available ones. This is + definitely the easiest solution. + +* Use a predefined external toolchain profile, but instead of having + Buildroot download and extract the toolchain, you can tell Buildroot + where your toolchain is already installed on your system. Just + select the toolchain profile in +Toolchain+ through the available + ones, unselect +Download toolchain automatically+, and fill the + +Toolchain path+ text entry with the path to your cross-compiling + toolchain. + +* Use a completely custom external toolchain. This is particularly + useful for toolchains generated using crosstool-NG or with Buildroot + itself. To do this, select the +Custom toolchain+ solution in the + +Toolchain+ list. You need to fill the +Toolchain path+, +Toolchain + prefix+ and +External toolchain C library+ options. Then, you have + to tell Buildroot what your external toolchain supports. If your + external toolchain uses the 'glibc' library, you only have to tell + whether your toolchain supports C\++ or not and whether it has + built-in RPC support. If your external toolchain uses the 'uClibc' + library, then you have to tell Buildroot if it supports RPC, + wide-char, locale, program invocation, threads and C++. + At the beginning of the execution, Buildroot will tell you if + the selected options do not match the toolchain configuration. + +Our external toolchain support has been tested with toolchains from +CodeSourcery and Linaro, toolchains generated by +http://crosstool-ng.org[crosstool-NG], and toolchains generated by +Buildroot itself. In general, all toolchains that support the +'sysroot' feature should work. If not, do not hesitate to contact the +developers. + +We do not support toolchains or SDK generated by OpenEmbedded or +Yocto, because these toolchains are not pure toolchains (i.e. just the +compiler, binutils, the C and C++ libraries). Instead these toolchains +come with a very large set of pre-compiled libraries and +programs. Therefore, Buildroot cannot import the 'sysroot' of the +toolchain, as it would contain hundreds of megabytes of pre-compiled +libraries that are normally built by Buildroot. + +We also do not support using the distribution toolchain (i.e. the +gcc/binutils/C library installed by your distribution) as the +toolchain to build software for the target. This is because your +distribution toolchain is not a "pure" toolchain (i.e. only with the +C/C++ library), so we cannot import it properly into the Buildroot +build environment. So even if you are building a system for a x86 or +x86_64 target, you have to generate a cross-compilation toolchain with +Buildroot or crosstool-NG. + +If you want to generate a custom toolchain for your project, that can +be used as an external toolchain in Buildroot, our recommendation is +definitely to build it with http://crosstool-ng.org[crosstool-NG]. We +recommend to build the toolchain separately from Buildroot, and then +_import_ it in Buildroot using the external toolchain backend. + +Advantages of this backend: + +* Allows to use well-known and well-tested cross-compilation + toolchains. + +* Avoids the build time of the cross-compilation toolchain, which is + often very significant in the overall build time of an embedded + Linux system. + +Drawbacks of this backend: + +* If your pre-built external toolchain has a bug, may be hard to get a + fix from the toolchain vendor, unless you build your external + toolchain by yourself using Crosstool-NG. + +===== External toolchain wrapper + +When using an external toolchain, Buildroot generates a wrapper program, +that transparently passes the appropriate options (according to the +configuration) to the external toolchain programs. In case you need to +debug this wrapper to check exactly what arguments are passed, you can +set the environment variable +BR2_DEBUG_WRAPPER+ to either one of: + +* +0+, empty or not set: no debug + +* +1+: trace all arguments on a single line + +* +2+: trace one argument per line + +=== /dev management + +On a Linux system, the +/dev+ directory contains special files, called +_device files_, that allow userspace applications to access the +hardware devices managed by the Linux kernel. Without these _device +files_, your userspace applications would not be able to use the +hardware devices, even if they are properly recognized by the Linux +kernel. + +Under +System configuration+, +/dev management+, Buildroot offers four +different solutions to handle the +/dev+ directory : + + * The first solution is *Static using device table*. This is the old + classical way of handling device files in Linux. With this method, + the device files are persistently stored in the root filesystem + (i.e. they persist across reboots), and there is nothing that will + automatically create and remove those device files when hardware + devices are added or removed from the system. Buildroot therefore + creates a standard set of device files using a _device table_, the + default one being stored in +system/device_table_dev.txt+ in the + Buildroot source code. This file is processed when Buildroot + generates the final root filesystem image, and the _device files_ + are therefore not visible in the +output/target+ directory. The + +BR2_ROOTFS_STATIC_DEVICE_TABLE+ option allows to change the + default device table used by Buildroot, or to add an additional + device table, so that additional _device files_ are created by + Buildroot during the build. So, if you use this method, and a + _device file_ is missing in your system, you can for example create + a +board///device_table_dev.txt+ file + that contains the description of your additional _device files_, + and then you can set +BR2_ROOTFS_STATIC_DEVICE_TABLE+ to + +system/device_table_dev.txt + board///device_table_dev.txt+. For more + details about the format of the device table file, see + xref:makedev-syntax[]. + + * The second solution is *Dynamic using devtmpfs only*. _devtmpfs_ is + a virtual filesystem inside the Linux kernel that has been + introduced in kernel 2.6.32 (if you use an older kernel, it is not + possible to use this option). When mounted in +/dev+, this virtual + filesystem will automatically make _device files_ appear and + disappear as hardware devices are added and removed from the + system. This filesystem is not persistent across reboots: it is + filled dynamically by the kernel. Using _devtmpfs_ requires the + following kernel configuration options to be enabled: + +CONFIG_DEVTMPFS+ and +CONFIG_DEVTMPFS_MOUNT+. When Buildroot is in + charge of building the Linux kernel for your embedded device, it + makes sure that those two options are enabled. However, if you + build your Linux kernel outside of Buildroot, then it is your + responsibility to enable those two options (if you fail to do so, + your Buildroot system will not boot). + + * The third solution is *Dynamic using devtmpfs + mdev*. This method + also relies on the _devtmpfs_ virtual filesystem detailed above (so + the requirement to have +CONFIG_DEVTMPFS+ and + +CONFIG_DEVTMPFS_MOUNT+ enabled in the kernel configuration still + apply), but adds the +mdev+ userspace utility on top of it. +mdev+ + is a program part of BusyBox that the kernel will call every time a + device is added or removed. Thanks to the +/etc/mdev.conf+ + configuration file, +mdev+ can be configured to for example, set + specific permissions or ownership on a device file, call a script + or application whenever a device appears or disappear, + etc. Basically, it allows _userspace_ to react on device addition + and removal events. +mdev+ can for example be used to automatically + load kernel modules when devices appear on the system. +mdev+ is + also important if you have devices that require a firmware, as it + will be responsible for pushing the firmware contents to the + kernel. +mdev+ is a lightweight implementation (with fewer + features) of +udev+. For more details about +mdev+ and the syntax + of its configuration file, see + http://git.busybox.net/busybox/tree/docs/mdev.txt. + + * The fourth solution is *Dynamic using devtmpfs + eudev*. This + method also relies on the _devtmpfs_ virtual filesystem detailed + above, but adds the +eudev+ userspace daemon on top of it. +eudev+ + is a daemon that runs in the background, and gets called by the + kernel when a device gets added or removed from the system. It is a + more heavyweight solution than +mdev+, but provides higher + flexibility. +eudev+ is a standalone version of +udev+, the + original userspace daemon used in most desktop Linux distributions, + which is now part of Systemd. For more details, see + http://en.wikipedia.org/wiki/Udev. + +The Buildroot developers recommendation is to start with the *Dynamic +using devtmpfs only* solution, until you have the need for userspace +to be notified when devices are added/removed, or if firmwares are +needed, in which case *Dynamic using devtmpfs + mdev* is usually a +good solution. + +Note that if +systemd+ is chosen as init system, /dev management will +be performed by the +udev+ program provided by +systemd+. + +=== init system + +The _init_ program is the first userspace program started by the +kernel (it carries the PID number 1), and is responsible for starting +the userspace services and programs (for example: web server, +graphical applications, other network servers, etc.). + +Buildroot allows to use three different types of init systems, which +can be chosen from +System configuration+, +Init system+: + + * The first solution is *BusyBox*. Amongst many programs, BusyBox has + an implementation of a basic +init+ program, which is sufficient + for most embedded systems. Enabling the +BR2_INIT_BUSYBOX+ will + ensure BusyBox will build and install its +init+ program. This is + the default solution in Buildroot. The BusyBox +init+ program will + read the +/etc/inittab+ file at boot to know what to do. The syntax + of this file can be found in + http://git.busybox.net/busybox/tree/examples/inittab (note that + BusyBox +inittab+ syntax is special: do not use a random +inittab+ + documentation from the Internet to learn about BusyBox + +inittab+). The default +inittab+ in Buildroot is stored in + +system/skeleton/etc/inittab+. Apart from mounting a few important + filesystems, the main job the default inittab does is to start the + +/etc/init.d/rcS+ shell script, and start a +getty+ program (which + provides a login prompt). + + * The second solution is *systemV*. This solution uses the old + traditional _sysvinit_ program, packed in Buildroot in + +package/sysvinit+. This was the solution used in most desktop + Linux distributions, until they switched to more recent + alternatives such as Upstart or Systemd. +sysvinit+ also works with + an +inittab+ file (which has a slightly different syntax than the + one from BusyBox). The default +inittab+ installed with this init + solution is located in +package/sysvinit/inittab+. + + * The third solution is *systemd*. +systemd+ is the new generation + init system for Linux. It does far more than traditional _init_ + programs: aggressive parallelization capabilities, uses socket and + D-Bus activation for starting services, offers on-demand starting + of daemons, keeps track of processes using Linux control groups, + supports snapshotting and restoring of the system state, + etc. +systemd+ will be useful on relatively complex embedded + systems, for example the ones requiring D-Bus and services + communicating between each other. It is worth noting that +systemd+ + brings a fairly big number of large dependencies: +dbus+, +udev+ + and more. For more details about +systemd+, see + http://www.freedesktop.org/wiki/Software/systemd. + +The solution recommended by Buildroot developers is to use the +*BusyBox init* as it is sufficient for most embedded +systems. *systemd* can be used for more complex situations. diff --git a/buildroot/docs/manual/contribute.txt b/buildroot/docs/manual/contribute.txt new file mode 100644 index 0000000..8bbc2b9 --- /dev/null +++ b/buildroot/docs/manual/contribute.txt @@ -0,0 +1,448 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Contributing to Buildroot + +There are many ways in which you can contribute to Buildroot: analyzing +and fixing bugs, analyzing and fixing package build failures detected by +the autobuilders, testing and reviewing patches sent by other +developers, working on the items in our TODO list and sending your own +improvements to Buildroot or its manual. The following sections give a +little more detail on each of these items. + +If you are interested in contributing to Buildroot, the first thing you +should do is to subscribe to the Buildroot mailing list. This list is +the main way of interacting with other Buildroot developers and to send +contributions to. If you aren't subscribed yet, then refer to +xref:community-resources[] for the subscription link. + +If you are going to touch the code, it is highly recommended to use a +git repository of Buildroot, rather than starting from an extracted +source code tarball. Git is the easiest way to develop from and directly +send your patches to the mailing list. Refer to xref:getting-buildroot[] +for more information on obtaining a Buildroot git tree. + +=== Reproducing, analyzing and fixing bugs + +A first way of contributing is to have a look at the open bug reports in +the https://bugs.buildroot.org/buglist.cgi?product=buildroot[Buildroot bug +tracker]. As we strive to keep the bug count as small as possible, all +help in reproducing, analyzing and fixing reported bugs is more than +welcome. Don't hesitate to add a comment to bug reports reporting your +findings, even if you don't yet see the full picture. + +=== Analyzing and fixing autobuild failures + +The Buildroot autobuilders are a set of build machines that continuously +run Buildroot builds based on random configurations. This is done for +all architectures supported by Buildroot, with various toolchains, and +with a random selection of packages. With the large commit activity on +Buildroot, these autobuilders are a great help in detecting problems +very early after commit. + +All build results are available at http://autobuild.buildroot.org[], +statistics are at http://autobuild.buildroot.org/stats.php[]. Every day, +an overview of all failed packages is sent to the mailing list. + +Detecting problems is great, but obviously these problems have to be +fixed as well. Your contribution is very welcome here! There are +basically two things that can be done: + +- Analyzing the problems. The daily summary mails do not contain details + about the actual failures: in order to see what's going on you have to + open the build log and check the last output. Having someone doing + this for all packages in the mail is very useful for other developers, + as they can make a quick initial analysis based on this output alone. + +- Fixing a problem. When fixing autobuild failures, you should follow + these steps: + . Check if you can reproduce the problem by building with the same + configuration. You can do this manually, or use the + http://git.buildroot.org/buildroot-test/tree/utils/br-reproduce-build[br-reproduce-build] + script that will automatically clone a Buildroot git repository, + checkout the correct revision, download and set the right + configuration, and start the build. + . Analyze the problem and create a fix. + . Verify that the problem is really fixed by starting from a clean + Buildroot tree and only applying your fix. + . Send the fix to the Buildroot mailing list (see + xref:submitting-patches[]). In case you created a patch against the + package sources, you should also send the patch upstream so that the + problem will be fixed in a later release, and the patch in Buildroot + can be removed. + In the commit message of a patch fixing an autobuild failure, add a + reference to the build result directory, as follows: +--------------------- +Fixes http://autobuild.buildroot.org/results/51000a9d4656afe9e0ea6f07b9f8ed374c2e4069 +--------------------- + +=== Reviewing and testing patches + +With the amount of patches sent to the mailing list each day, the +maintainer has a very hard job to judge which patches are ready to apply +and which ones aren't. Contributors can greatly help here by reviewing +and testing these patches. + +In the review process, do not hesitate to respond to patch submissions +for remarks, suggestions or anything that will help everyone to +understand the patches and make them better. Please use internet +style replies in plain text emails when responding to patch +submissions. + +To indicate approval of a patch, there are three formal tags that keep +track of this approval. To add your tag to a patch, reply to it with the +approval tag below the original author's Signed-off-by line. These tags +will be picked up automatically by patchwork (see +xref:apply-patches-patchwork[]) and will be part of the commit log when +the patch is accepted. + +Tested-by:: Indicates that the patch has been tested successfully. + You are encouraged to specify what kind of testing you performed + (compile-test on architecture X and Y, runtime test on target A, + ...). This additional information helps other testers and the + maintainer. + +Reviewed-by:: Indicates that you code-reviewed the patch and did your + best in spotting problems, but you are not sufficiently familiar with + the area touched to provide an Acked-by tag. This means that there + may be remaining problems in the patch that would be spotted by + someone with more experience in that area. Should such problems be + detected, your Reviewed-by tag remains appropriate and you cannot + be blamed. + +Acked-by:: Indicates that you code-reviewed the patch and you are + familiar enough with the area touched to feel that the patch can be + committed as-is (no additional changes required). In case it later + turns out that something is wrong with the patch, your Acked-by could + be considered inappropriate. The difference between Acked-by and + Reviewed-by is thus mainly that you are prepared to take the blame on + Acked patches, but not on Reviewed ones. + +If you reviewed a patch and have comments on it, you should simply reply +to the patch stating these comments, without providing a Reviewed-by or +Acked-by tag. These tags should only be provided if you judge the patch +to be good as it is. + +It is important to note that neither Reviewed-by nor Acked-by imply +that testing has been performed. To indicate that you both reviewed and +tested the patch, provide two separate tags (Reviewed/Acked-by and +Tested-by). + +Note also that _any developer_ can provide Tested/Reviewed/Acked-by +tags, without exception, and we encourage everyone to do this. Buildroot +does not have a defined group of _core_ developers, it just so happens +that some developers are more active than others. The maintainer will +value tags according to the track record of their submitter. Tags +provided by a regular contributor will naturally be trusted more than +tags provided by a newcomer. As you provide tags more regularly, your +'trustworthiness' (in the eyes of the maintainer) will go up, but _any_ +tag provided is valuable. + +Buildroot's Patchwork website can be used to pull in patches for testing +purposes. Please see xref:apply-patches-patchwork[] for more +information on using Buildroot's Patchwork website to apply patches. + +[[apply-patches-patchwork]] +==== Applying Patches from Patchwork + +The main use of Buildroot's Patchwork website for a developer is for +pulling in patches into their local git repository for testing +purposes. + +When browsing patches in the patchwork management interface, an +mbox+ +link is provided at the top of the page. Copy this link address and +run the following commands: + +--------------------- +$ git checkout -b +$ wget -O - | git am +--------------------- + +Another option for applying patches is to create a bundle. A bundle is +a set of patches that you can group together using the patchwork +interface. Once the bundle is created and the bundle is made public, +you can copy the +mbox+ link for the bundle and apply the bundle +using the above commands. + + +=== Work on items from the TODO list + +If you want to contribute to Buildroot but don't know where to start, +and you don't like any of the above topics, you can always work on items +from the http://elinux.org/Buildroot#Todo_list[Buildroot TODO list]. +Don't hesitate to discuss an item first on the mailing list or on IRC. +Do edit the wiki to indicate when you start working on an item, so we +avoid duplicate efforts. + +[[submitting-patches]] +=== Submitting patches + +[NOTE] +_Please, do not attach patches to bugs, send them to the mailing list +instead_. + +If you made some changes to Buildroot and you would like to contribute +them to the Buildroot project, proceed as follows. + +==== The formatting of a patch + +We expect patches to be formatted in a specific way. This is necessary +to make it easy to review patches, to be able to apply them easily to +the git repository, to make it easy to find back in the history how +and why things have changed, and to make it possible to use +git +bisect+ to locate the origin of a problem. + +First of all, it is essential that the patch has a good commit +message. The commit message should start with a separate line with a +brief summary of the change, starting with the name of the affected +package. The body of the commit message should describe _why_ this +change is needed, and if necessary also give details about _how_ it +was done. When writing the commit message, think of how the reviewers +will read it, but also think about how you will read it when you look +at this change again a few years down the line. + +Second, the patch itself should do only one change, but do it +completely. Two unrelated or weakly related changes should usually be +done in two separate patches. This usually means that a patch affects +only a single package. If several changes are related, it is often +still possible to split them up in small patches and apply them in a +specific order. Small patches make it easier to review, and often +make it easier to understand afterwards why a change was done. +However, each patch must be complete. It is not allowed that the +build is broken when only the first but not the second patch is +applied. This is necessary to be able to use +git bisect+ afterwards. + +Of course, while you're doing your development, you're probably going +back and forth between packages, and certainly not committing things +immediately in a way that is clean enough for submission. So most +developers rewrite the history of commits to produce a clean set of +commits that is appropriate for submission. To do this, you need to +use _interactive rebasing_. You can learn about it +https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History[in the Pro +Git book]. Sometimes, it is even easier to discard you history with ++git reset --soft origin/master+ and select individual changes with ++git add -i+ or +git add -p+. + +Finally, the patch should be signed off. This is done by adding ++Signed-off-by: Your Real Name + at the end of the +commit message. +git commit -s+ does that for you, if configured +properly. The +Signed-off-by+ tag means that you publish the patch +under the Buildroot license (i.e. GPL-2.0+, except for package patches, +which have the upstream license), and that you are allowed to do so. +See http://developercertificate.org/[the Developer Certificate of +Origin] for details. + +When adding new packages, you should submit every package in a +separate patch. This patch should have the update to ++package/Config.in+, the package +Config.in+ file, the +.mk+ file, the ++.hash+ file, any init script, and all package patches. If the package +has many sub-options, these are sometimes better added as separate +follow-up patches. The summary line should be something like ++: new package+. The body of the commit message can be +empty for simple packages, or it can contain the description of the +package (like the Config.in help text). If anything special has to be +done to build the package, this should also be explained explicitly in +the commit message body. + +When you bump a package to a new version, you should also submit a +separate patch for each package. Don't forget to update the +.hash+ +file, or add it if it doesn't exist yet. Also don't forget to check if +the +_LICENSE+ and +_LICENSE_FILES+ are still valid. The summary line +should be something like +: bump to version +. If the new version only contains security updates compared +to the existing one, the summary should be +: security +bump to version + and the commit message body should show +the CVE numbers that are fixed. If some package patches can be removed +in the new version, it should be explained explicitly why they can be +removed, preferably with the upstream commit ID. Also any other +required changes should be explained explicitly, like configure +options that no longer exist or are no longer needed. + +If you are interested in getting notified of build failures and of +further changes in the packages you added or modified, please add +yourself to the DEVELOPERS file. This should be done in the same patch +creating or modifying the package. See xref:DEVELOPERS[the DEVELOPERS file] +for more information. + +==== Preparing a patch series + +Starting from the changes committed in your local git view, _rebase_ +your development branch on top of the upstream tree before generating +a patch set. To do so, run: + +--------------------- +$ git fetch --all --tags +$ git rebase origin/master +--------------------- + +Now, you are ready to generate then submit your patch set. + +To generate it, run: + +--------------------- +$ git format-patch -M -n -s -o outgoing origin/master +--------------------- + +This will generate patch files in the +outgoing+ subdirectory, +automatically adding the +Signed-off-by+ line. + +Once patch files are generated, you can review/edit the commit message +before submitting them, using your favorite text editor. + +Buildroot provides a handy tool to know to whom your patches should be +sent, called +get-developers+ (see xref:DEVELOPERS[] for more +information). This tool reads your patches and outputs the appropriate ++git send-email+ command to use: + +--------------------- +$ ./utils/get-developers outgoing/* +--------------------- + +Use the output of +get-developers+ to send your patches: + +--------------------- +$ git send-email --to buildroot@buildroot.org --cc bob --cc alice outgoing/* +--------------------- + +Note that +git+ should be configured to use your mail account. +To configure +git+, see +man git-send-email+ or google it. + +If you do not use +git send-email+, make sure posted *patches are not +line-wrapped*, otherwise they cannot easily be applied. In such a case, +fix your e-mail client, or better yet, learn to use +git send-email+. + +==== Cover letter + +If you want to present the whole patch set in a separate mail, add ++--cover-letter+ to the +git format-patch+ command (see +man +git-format-patch+ for further information). This will generate a +template for an introduction e-mail to your patch series. + +A 'cover letter' may be useful to introduce the changes you propose +in the following cases: + +* large number of commits in the series; + +* deep impact of the changes in the rest of the project; + +* RFC footnote:[RFC: (Request for comments) change proposal]; + +* whenever you feel it will help presenting your work, your choices, + the review process, etc. + +==== Patch revision changelog + +When improvements are requested, the new revision of each commit +should include a changelog of the modifications between each +submission. Note that when your patch series is introduced by a cover +letter, an overall changelog may be added to the cover letter in +addition to the changelog in the individual commits. +The best thing to rework a patch series is by interactive rebasing: ++git rebase -i origin/master+. Consult the git manual for more +information. + +When added to the individual commits, this changelog is added when +editing the commit message. Below the +Signed-off-by+ section, add ++---+ and your changelog. + +Although the changelog will be visible for the reviewers in the mail +thread, as well as in http://patchwork.buildroot.org[patchwork], +git+ +will automatically ignores lines below +---+ when the patch will be +merged. This is the intended behavior: the changelog is not meant to +be preserved forever in the +git+ history of the project. + +Hereafter the recommended layout: + +--------------- +Patch title: short explanation, max 72 chars + +A paragraph that explains the problem, and how it manifests itself. If +the problem is complex, it is OK to add more paragraphs. All paragraphs +should be wrapped at 72 characters. + +A paragraph that explains the root cause of the problem. Again, more +than on paragraph is OK. + +Finally, one or more paragraphs that explain how the problem is solved. +Don't hesitate to explain complex solutions in detail. + +Signed-off-by: John DOE + +--- +Changes v2 -> v3: + - foo bar (suggested by Jane) + - bar buz + +Changes v1 -> v2: + - alpha bravo (suggested by John) + - charly delta +--------------- + +Any patch revision should include the version number. The version number +is simply composed of the letter +v+ followed by an +integer+ greater or +equal to two (i.e. "PATCH v2", "PATCH v3" ...). + +This can be easily handled with +git format-patch+ by using the option ++--subject-prefix+: + +--------------------- +$ git format-patch --subject-prefix "PATCH v4" \ + -M -s -o outgoing origin/master +--------------------- + +Since git version 1.8.1, you can also use +-v + (where is the +version number): + +--------------------- +$ git format-patch -v4 -M -s -o outgoing origin/master +--------------------- + +When you provide a new version of a patch, please mark the old one as +superseded in http://patchwork.buildroot.org[patchwork]. You need to +create an account on http://patchwork.buildroot.org[patchwork] to be +able to modify the status of your patches. Note that you can only change +the status of patches you submitted yourself, which means the email +address you register in http://patchwork.buildroot.org[patchwork] should +match the one you use for sending patches to the mailing list. + +You can also add the +--in-reply-to + option when +submitting a patch to the mailing list. The id of the mail to reply to +can be found under the "Message Id" tag on +http://patchwork.buildroot.org[patchwork]. The advantage of +*in-reply-to* is that patchwork will automatically mark the previous +version of the patch as superseded. + +[[reporting-bugs]] +=== Reporting issues/bugs or getting help + +Before reporting any issue, please check in +xref:community-resources[the mailing list archive] whether someone has +already reported and/or fixed a similar problem. + +However you choose to report bugs or get help, either by +opening a bug in the xref:community-resources[bug tracker] or by +xref:community-resources[sending a mail to the mailing list], there are +a number of details to provide in order to help people reproduce and +find a solution to the issue. + +Try to think as if you were trying to help someone else; in +that case, what would you need? + +Here is a short list of details to provide in such case: + +* host machine (OS/release) +* version of Buildroot +* target for which the build fails +* package(s) for which the build fails +* the command that fails and its output +* any information you think that may be relevant + +Additionally, you should add the +.config+ file (or if you know how, a ++defconfig+; see xref:customize-store-buildroot-config[]). + +If some of these details are too large, do not hesitate to use a +pastebin service. Note that not all available pastebin services will +preserve Unix-style line terminators when downloading raw pastes. +Following pastebin services are known to work correctly: +- https://gist.github.com/ +- http://code.bulix.org/ diff --git a/buildroot/docs/manual/customize-configuration.txt b/buildroot/docs/manual/customize-configuration.txt new file mode 100644 index 0000000..ae6cebe --- /dev/null +++ b/buildroot/docs/manual/customize-configuration.txt @@ -0,0 +1,64 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-store-buildroot-config]] +=== Storing the Buildroot configuration + +The Buildroot configuration can be stored using the command + +make savedefconfig+. + +This strips the Buildroot configuration down by removing configuration +options that are at their default value. The result is stored in a file +called +defconfig+. If you want to save it in another place, change the ++BR2_DEFCONFIG+ option in the Buildroot configuration itself, or call +make with +make savedefconfig BR2_DEFCONFIG=+. + +The recommended place to store this defconfig is ++configs/_defconfig+. If you follow this recommendation, the +configuration will be listed in +make help+ and can be set again by +running +make _defconfig+. + +Alternatively, you can copy the file to any other place and rebuild with ++make defconfig BR2_DEFCONFIG=+. + +[[customize-store-package-config]] +=== Storing the configuration of other components + +The configuration files for BusyBox, the Linux kernel, Barebox, U-Boot +and uClibc should be stored as well if changed. For each of these +components, a Buildroot configuration option exists to point to an input +configuration file, e.g. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+. To store +their configuration, set these configuration options to a path where you +want to save the configuration files, and then use the helper targets +described below to actually store the configuration. + +As explained in xref:customize-dir-structure[], the recommended path to +store these configuration files is ++board///foo.config+. + +Make sure that you create a configuration file 'before' changing +the +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+ etc. options. Otherwise, +Buildroot will try to access this config file, which doesn't exist +yet, and will fail. You can create the configuration file by running ++make linux-menuconfig+ etc. + +Buildroot provides a few helper targets to make the saving of +configuration files easier. + +* +make linux-update-defconfig+ saves the linux configuration to the + path specified by +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+. It + simplifies the config file by removing default values. However, + this only works with kernels starting from 2.6.33. For earlier + kernels, use +make linux-update-config+. +* +make busybox-update-config+ saves the busybox configuration to the + path specified by +BR2_PACKAGE_BUSYBOX_CONFIG+. +* +make uclibc-update-config+ saves the uClibc configuration to the + path specified by +BR2_UCLIBC_CONFIG+. +* +make barebox-update-defconfig+ saves the barebox configuration to the + path specified by +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE+. +* +make uboot-update-defconfig+ saves the U-Boot configuration to the + path specified by +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE+. +* For at91bootstrap3, no helper exists so you have to copy the config + file manually to +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE+. + + diff --git a/buildroot/docs/manual/customize-device-permission-tables.txt b/buildroot/docs/manual/customize-device-permission-tables.txt new file mode 100644 index 0000000..02dd8ad --- /dev/null +++ b/buildroot/docs/manual/customize-device-permission-tables.txt @@ -0,0 +1,30 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-device-permission]] +==== Setting file permissions and ownership and adding custom devices nodes + +Sometimes it is needed to set specific permissions or ownership on files +or device nodes. For example, certain files may need to be owned by +root. Since the post-build scripts are not run as root, you cannot do +such changes from there unless you use an explicit fakeroot from the +post-build script. + +Instead, Buildroot provides support for so-called _permission tables_. +To use this feature, set config option +BR2_ROOTFS_DEVICE_TABLE+ to a +space-separated list of permission tables, regular text files following +the xref:makedev-syntax[makedev syntax]. + +If you are using a static device table (i.e. not using +devtmpfs+, ++mdev+, or +(e)udev+) then you can add device nodes using the same +syntax, in so-called _device tables_. To use this feature, set config +option +BR2_ROOTFS_STATIC_DEVICE_TABLE+ to a space-separated list of +device tables. + +As shown in xref:customize-dir-structure[], the recommended location for +such files is +board///+. + +It should be noted that if the specific permissions or device nodes are +related to a specific application, you should set variables ++FOO_PERMISSIONS+ and +FOO_DEVICES+ in the package's +.mk+ file instead +(see xref:generic-package-reference[]). diff --git a/buildroot/docs/manual/customize-directory-structure.txt b/buildroot/docs/manual/customize-directory-structure.txt new file mode 100644 index 0000000..b177319 --- /dev/null +++ b/buildroot/docs/manual/customize-directory-structure.txt @@ -0,0 +1,110 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-dir-structure]] +=== Recommended directory structure + +When customizing Buildroot for your project, you will be creating one or +more project-specific files that need to be stored somewhere. While most +of these files could be placed in _any_ location as their path is to be +specified in the Buildroot configuration, the Buildroot developers +recommend a specific directory structure which is described in this +section. + +Orthogonal to this directory structure, you can choose _where_ you place +this structure itself: either inside the Buildroot tree, or outside of +it using a br2-external tree. Both options are valid, the choice is up +to you. + +----- ++-- board/ +| +-- / +| +-- / +| +-- linux.config +| +-- busybox.config +| +-- +| +-- post_build.sh +| +-- post_image.sh +| +-- rootfs_overlay/ +| | +-- etc/ +| | +-- +| +-- patches/ +| +-- foo/ +| | +-- +| +-- libbar/ +| +-- +| ++-- configs/ +| +-- _defconfig +| ++-- package/ +| +-- / +| +-- Config.in (if not using a br2-external tree) +| +-- .mk (if not using a br2-external tree) +| +-- package1/ +| | +-- Config.in +| | +-- package1.mk +| +-- package2/ +| +-- Config.in +| +-- package2.mk +| ++-- Config.in (if using a br2-external tree) ++-- external.mk (if using a br2-external tree) +------ + +Details on the files shown above are given further in this chapter. + +Note: if you choose to place this structure outside of the Buildroot +tree but in a br2-external tree, the and possibly +components may be superfluous and can be left out. + +==== Implementing layered customizations + +It is quite common for a user to have several related projects that partly +need the same customizations. Instead of duplicating these +customizations for each project, it is recommended to use a layered +customization approach, as explained in this section. + +Almost all of the customization methods available in Buildroot, like +post-build scripts and root filesystem overlays, accept a +space-separated list of items. The specified items are always treated in +order, from left to right. By creating more than one such item, one for +the common customizations and another one for the really +project-specific customizations, you can avoid unnecessary duplication. +Each layer is typically embodied by a separate directory inside ++board//+. Depending on your projects, you could even introduce +more than two layers. + +An example directory structure for where a user has two customization +layers 'common' and 'fooboard' is: + +----- ++-- board/ + +-- / + +-- common/ + | +-- post_build.sh + | +-- rootfs_overlay/ + | | +-- ... + | +-- patches/ + | +-- ... + | + +-- fooboard/ + +-- linux.config + +-- busybox.config + +-- + +-- post_build.sh + +-- rootfs_overlay/ + | +-- ... + +-- patches/ + +-- ... +----- + +For example, if the user has the +BR2_GLOBAL_PATCH_DIR+ configuration +option set as: + +----- +BR2_GLOBAL_PATCH_DIR="board//common/patches board//fooboard/patches" +----- + +then first the patches from the 'common' layer would be applied, +followed by the patches from the 'fooboard' layer. diff --git a/buildroot/docs/manual/customize-outside-br.txt b/buildroot/docs/manual/customize-outside-br.txt new file mode 100644 index 0000000..b1eed32 --- /dev/null +++ b/buildroot/docs/manual/customize-outside-br.txt @@ -0,0 +1,313 @@ +// -*- mode:doc -*- ; +// vim: set syntax=asciidoc: + +[[outside-br-custom]] +=== Keeping customizations outside of Buildroot + +As already briefly mentioned in xref:customize-dir-structure[], you can +place project-specific customizations in two locations: + + * directly within the Buildroot tree, typically maintaining them using + branches in a version control system so that upgrading to a newer + Buildroot release is easy. + + * outside of the Buildroot tree, using the _br2-external_ mechanism. + This mechanism allows to keep package recipes, board support and + configuration files outside of the Buildroot tree, while still + having them nicely integrated in the build logic. We call this + location a _br2-external tree_. This section explains how to use + the br2-external mechanism and what to provide in a br2-external + tree. + +One can tell Buildroot to use one or more br2-external trees by setting +the +BR2_EXTERNAL+ make variable set to the path(s) of the br2-external +tree(s) to use. It can be passed to any Buildroot +make+ invocation. It +is automatically saved in the hidden +.br-external.mk+ file in the output +directory. Thanks to this, there is no need to pass +BR2_EXTERNAL+ at +every +make+ invocation. It can however be changed at any time by +passing a new value, and can be removed by passing an empty value. + +.Note +The path to a br2-external tree can be either absolute or relative. +If it is passed as a relative path, it is important to note that it is +interpreted relative to the main Buildroot source directory, *not* to +the Buildroot output directory. + +.Note: +If using an br2-external tree from before Buildroot 2016.11, you need to +convert it before you can use it with Buildroot 2016.11 onward. See +xref:br2-external-converting[] for help on doing so. + +Some examples: + +----- +buildroot/ $ make BR2_EXTERNAL=/path/to/foo menuconfig +----- + +From now on, definitions from the +/path/to/foo+ br2-external tree +will be used: + +----- +buildroot/ $ make +buildroot/ $ make legal-info +----- + +We can switch to another br2-external tree at any time: + +----- +buildroot/ $ make BR2_EXTERNAL=/where/we/have/bar xconfig +----- + +We can also use multiple br2-external trees: + +---- +buildroot/ $ make BR2_EXTERNAL=/path/to/foo:/where/we/have/bar menuconfig +---- + +Or disable the usage of any br2-external tree: + +----- +buildroot/ $ make BR2_EXTERNAL= xconfig +----- + +==== Layout of a br2-external tree + +A br2-external tree must contain at least those three files, described +in the following chapters: + + * +external.desc+ + * +external.mk+ + * +Config.in+ + +Apart from those mandatory files, there may be additional and optional +content that may be present in a br2-external tree, like the +configs/+ +directory. They are described in the following chapters as well. + +A complete example br2-external tree layout is also described later. + +===== The +external.desc+ file + +That file describes the br2-external tree: the _name_ and _description_ +for that br2-external tree. + +The format for this file is line based, with each line starting by a +keyword, followed by a colon and one or more spaces, followed by the +value assigned to that keyword. There are two keywords currently +recognised: + + * +name+, mandatory, defines the name for that br2-external tree. That + name must only use ASCII characters in the set +[A-Za-z0-9_]+; any + other character is forbidden. Buildroot sets the variable + +BR2_EXTERNAL_$(NAME)_PATH+ to the absolute path of the br2-external + tree, so that you can use it to refer to your br2-external tree. This + variable is available both in Kconfig, so you can use it to source your + Kconfig files (see below) and in the Makefile, so that you can use it + to include other Makefiles (see below) or refer to other files (like + data files) from your br2-external tree. ++ +.Note: +Since it is possible to use multiple br2-external trees at once, this + name is used by Buildroot to generate variables for each of those trees. + That name is used to identify your br2-external tree, so try to come up + with a name that really describes your br2-external tree, in order for + it to be relatively unique, so that it does not clash with another name + from another br2-external tree, especially if you are planning on + somehow sharing your br2-external tree with third parties or using + br2-external trees from third parties. + + * +desc+, optional, provides a short description for that br2-external + tree. It shall fit on a single line, is mostly free-form (see below), + and is used when displaying information about a br2-external tree (e.g. + above the list of defconfig files, or as the prompt in the menuconfig); + as such, it should relatively brief (40 chars is probably a good upper + limit). The description is available in the +BR2_EXTERNAL_$(NAME)_DESC+ + variable. + +Examples of names and the corresponding +BR2_EXTERNAL_$(NAME)_PATH+ +variables: + + * +FOO+ -> +BR2_EXTERNAL_FOO_PATH+ + * +BAR_42+ -> +BR2_EXTERNAL_BAR_42_PATH+ + +In the following examples, it is assumed the name to be set to +BAR_42+. + +.Note: +Both +BR2_EXTERNAL_$(NAME)_PATH+ and `BR2_EXTERNAL_$(NAME)_DESC` are + available in the Kconfig files and the Makefiles. They are also + exported in the environment so are available in post-build, post-image + and in-fakeroot scripts. + +===== The +Config.in+ and +external.mk+ files + +Those files (which may each be empty) can be used to define package +recipes (i.e. +foo/Config.in+ and +foo/foo.mk+ like for packages bundled +in Buildroot itself) or other custom configuration options or make logic. + +Buildroot automatically includes the +Config.in+ from each br2-external +tree to make it appear in the top-level configuration menu, and includes +the +external.mk+ from each br2-external tree with the rest of the +makefile logic. + +The main usage of this is to store package recipes. The recommended way +to do this is to write a +Config.in+ file that looks like: + +------ +source "$BR2_EXTERNAL_BAR_42_PATH/package/package1/Config.in" +source "$BR2_EXTERNAL_BAR_42_PATH/package/package2/Config.in" +------ + +Then, have an +external.mk+ file that looks like: + +------ +include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk)) +------ + +And then in +$(BR2_EXTERNAL_BAR_42_PATH)/package/package1+ and ++$(BR2_EXTERNAL_BAR_42_PATH)/package/package2+ create normal +Buildroot package recipes, as explained in xref:adding-packages[]. +If you prefer, you can also group the packages in subdirectories +called and adapt the above paths accordingly. + +You can also define custom configuration options in +Config.in+ and +custom make logic in +external.mk+. + +===== The +configs/+ directory + +One can store Buildroot defconfigs in the +configs+ subdirectory of +the br2-external tree. Buildroot will automatically show them in the +output of +make list-defconfigs+ and allow them to be loaded with the +normal +make _defconfig+ command. They will be visible in the +'make list-defconfigs' output, below an +External configs+ label that +contains the name of the br2-external tree they are defined in. + +.Note: +If a defconfig file is present in more than one br2-external tree, then +the one from the last br2-external tree is used. It is thus possible +to override a defconfig bundled in Buildroot or another br2-external +tree. + +===== Free-form content + +One can store all the board-specific configuration files there, such +as the kernel configuration, the root filesystem overlay, or any other +configuration file for which Buildroot allows to set the location (by +using the +BR2_EXTERNAL_$(NAME)_PATH+ variable). For example, you +could set the paths to a global patch directory, to a rootfs overlay +and to the kernel configuration file as follows (e.g. by running +`make menuconfig` and filling in these options): + +---- +BR2_GLOBAL_PATCH_DIR=$(BR2_EXTERNAL_BAR_42_PATH)/patches/ +BR2_ROOTFS_OVERLAY=$(BR2_EXTERNAL_BAR_42_PATH)/board//overlay/ +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=$(BR2_EXTERNAL_BAR_42_PATH)/board//kernel.config +---- + +===== Example layout + +Here is an example layout using all features of br2-external (the sample +content is shown for the file above it, when it is relevant to explain +the br2-external tree; this is all entirely made up just for the sake of +illustration, of course): + +---- +/path/to/br2-ext-tree/ + |- external.desc + | |name: BAR_42 + | |desc: Example br2-external tree + | `---- + | + |- Config.in + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-1/Config.in" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/Config.in" + | | + | |config BAR_42_FLASH_ADDR + | | hex "my-board flash address" + | | default 0x10AD + | `---- + | + |- external.mk + | |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk)) + | | + | |flash-my-board: + | | $(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/flash-image \ + | | --image $(BINARIES_DIR)/image.bin \ + | | --address $(BAR_42_FLASH_ADDR) + | `---- + | + |- package/pkg-1/Config.in + | |config BR2_PACKAGE_PKG_1 + | | bool "pkg-1" + | | help + | | Some help about pkg-1 + | `---- + |- package/pkg-1/pkg-1.hash + |- package/pkg-1/pkg-1.mk + | |PKG_1_VERSION = 1.2.3 + | |PKG_1_SITE = /some/where/to/get/pkg-1 + | |PKG_1_LICENSE = blabla + | | + | |define PKG_1_INSTALL_INIT_SYSV + | | $(INSTALL) -D -m 0755 $(PKG_1_PKGDIR)/S99my-daemon \ + | | $(TARGET_DIR)/etc/init.d/S99my-daemon + | |endef + | | + | |$(eval $(autotools-package)) + | `---- + |- package/pkg-1/S99my-daemon + | + |- package/pkg-2/Config.in + |- package/pkg-2/pkg-2.hash + |- package/pkg-2/pkg-2.mk + | + |- configs/my-board_defconfig + | |BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_BAR_42_PATH)/patches/" + | |BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/overlay/" + | |BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/post-image.sh" + | |BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/kernel.config" + | `---- + | + |- patches/linux/0001-some-change.patch + |- patches/linux/0002-some-other-change.patch + |- patches/busybox/0001-fix-something.patch + | + |- board/my-board/kernel.config + |- board/my-board/overlay/var/www/index.html + |- board/my-board/overlay/var/www/my.css + |- board/my-board/flash-image + `- board/my-board/post-image.sh + |#!/bin/sh + |generate-my-binary-image \ + | --root ${BINARIES_DIR}/rootfs.tar \ + | --kernel ${BINARIES_DIR}/zImage \ + | --dtb ${BINARIES_DIR}/my-board.dtb \ + | --output ${BINARIES_DIR}/image.bin + `---- +---- + +The br2-external tree will then be visible in the menuconfig (with +the layout expanded): + +---- +External options ---> + *** Example br2-external tree (in /path/to/br2-ext-tree/) + [ ] pkg-1 + [ ] pkg-2 + (0x10AD) my-board flash address +---- + +If you are using more than one br2-external tree, it would look like +(with the layout expanded and the second one with name +FOO_27+ but no ++desc:+ field in +external.desc+): + +---- +External options ---> + Example br2-external tree ---> + *** Example br2-external tree (in /path/to/br2-ext-tree) + [ ] pkg-1 + [ ] pkg-2 + (0x10AD) my-board flash address + FOO_27 ---> + *** FOO_27 (in /path/to/another-br2-ext) + [ ] foo + [ ] bar +---- diff --git a/buildroot/docs/manual/customize-packages.txt b/buildroot/docs/manual/customize-packages.txt new file mode 100644 index 0000000..b57280e --- /dev/null +++ b/buildroot/docs/manual/customize-packages.txt @@ -0,0 +1,56 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-packages]] +=== Adding project-specific packages + +In general, any new package should be added directly in the +package+ +directory and submitted to the Buildroot upstream project. How to add +packages to Buildroot in general is explained in full detail in +xref:adding-packages[] and will not be repeated here. However, your +project may need some proprietary packages that cannot be upstreamed. +This section will explain how you can keep such project-specific +packages in a project-specific directory. + +As shown in xref:customize-dir-structure[], the recommended location for +project-specific packages is +package//+. If you are using the +br2-external tree feature (see xref:outside-br-custom[]) the recommended +location is to put them in a sub-directory named +package/+ in your +br2-external tree. + +However, Buildroot will not be aware of the packages in this location, +unless we perform some additional steps. As explained in +xref:adding-packages[], a package in Buildroot basically consists of two +files: a +.mk+ file (describing how to build the package) and a ++Config.in+ file (describing the configuration options for this +package). + +Buildroot will automatically include the +.mk+ files in first-level +subdirectories of the +package+ directory (using the pattern ++package/\*/*.mk+). If we want Buildroot to include +.mk+ files from +deeper subdirectories (like +package//package1/+) then we +simply have to add a +.mk+ file in a first-level subdirectory that +includes these additional +.mk+ files. Therefore, create a file ++package//.mk+ with following contents (assuming you +have only one extra directory level below +package//+): + +----- +include $(sort $(wildcard package//*/*.mk)) +----- + +For the +Config.in+ files, create a file +package//Config.in+ +that includes the +Config.in+ files of all your packages. An exhaustive +list has to be provided since wildcards are not supported in the source command of kconfig. +For example: + +----- +source "package//package1/Config.in" +source "package//package2/Config.in" +----- + +Include this new file +package//Config.in+ from ++package/Config.in+, preferably in a company-specific menu to make +merges with future Buildroot versions easier. + +If using a br2-external tree, refer to xref:outside-br-custom[] for how +to fill in those files. diff --git a/buildroot/docs/manual/customize-patches.txt b/buildroot/docs/manual/customize-patches.txt new file mode 100644 index 0000000..fa63541 --- /dev/null +++ b/buildroot/docs/manual/customize-patches.txt @@ -0,0 +1,59 @@ +// -*- mode:doc -*- ; +// vim: set syntax=asciidoc: + +[[customize-patches]] +=== Adding project-specific patches + +It is sometimes useful to apply 'extra' patches to packages - on top of +those provided in Buildroot. This might be used to support custom +features in a project, for example, or when working on a new +architecture. + +The +BR2_GLOBAL_PATCH_DIR+ configuration option can be used to specify +a space separated list of one or more directories containing package +patches. + +For a specific version ++ of a specific package +++, patches are applied from +BR2_GLOBAL_PATCH_DIR+ as +follows: + +. For every directory - ++ - that exists in + +BR2_GLOBAL_PATCH_DIR+, a ++ will be determined as + follows: ++ +* +///+ if the + directory exists. ++ +* Otherwise, +/+ if the directory + exists. + +. Patches will then be applied from a ++ as + follows: ++ +* If a +series+ file exists in the package directory, then patches are + applied according to the +series+ file; ++ +* Otherwise, patch files matching +*.patch+ are applied in + alphabetical order. So, to ensure they are applied in the right + order, it is highly recommended to name the patch files like this: + +-.patch+, where ++ refers to the + 'apply order'. + +For information about how patches are applied for a package, see +xref:patch-apply-order[] + +The +BR2_GLOBAL_PATCH_DIR+ option is the preferred method for +specifying a custom patch directory for packages. It can be used to +specify a patch directory for any package in buildroot. It should also +be used in place of the custom patch directory options that are +available for packages such as U-Boot and Barebox. By doing this, it +will allow a user to manage their patches from one top-level +directory. + +The exception to +BR2_GLOBAL_PATCH_DIR+ being the preferred method for +specifying custom patches is +BR2_LINUX_KERNEL_PATCH+. ++BR2_LINUX_KERNEL_PATCH+ should be used to specify kernel patches that +are available at an URL. *Note:* +BR2_LINUX_KERNEL_PATCH+ specifies kernel +patches that are applied after patches available in +BR2_GLOBAL_PATCH_DIR+, +as it is done from a post-patch hook of the Linux package. + diff --git a/buildroot/docs/manual/customize-post-image.txt b/buildroot/docs/manual/customize-post-image.txt new file mode 100644 index 0000000..90ea2b9 --- /dev/null +++ b/buildroot/docs/manual/customize-post-image.txt @@ -0,0 +1,37 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Customization _after_ the images have been created + +While post-build scripts (xref:rootfs-custom[]) are run _before_ +building the filesystem image, kernel and bootloader, *post-image +scripts* can be used to perform some specific actions _after_ all images +have been created. + +Post-image scripts can for example be used to automatically extract your +root filesystem tarball in a location exported by your NFS server, or +to create a special firmware image that bundles your root filesystem and +kernel image, or any other custom action required for your project. + +To enable this feature, specify a space-separated list of post-image +scripts in config option +BR2_ROOTFS_POST_IMAGE_SCRIPT+ (in the +System +configuration+ menu). If you specify a relative path, it will be +relative to the root of the Buildroot tree. + +Just like post-build scripts, post-image scripts are run with the main +Buildroot tree as current working directory. The path to the +images+ +output directory is passed as the first argument to each script. If the +config option +BR2_ROOTFS_POST_SCRIPT_ARGS+ is not empty, these +arguments will be passed to the script too. All the scripts will be +passed the exact same set of arguments, it is not possible to pass +different sets of arguments to each script. + +Again just like for the post-build scripts, the scripts have access to +the environment variables +BR2_CONFIG+, +HOST_DIR+, +STAGING_DIR+, ++TARGET_DIR+, +BUILD_DIR+, +BINARIES_DIR+ and +BASE_DIR+. + +The post-image scripts will be executed as the user that executes +Buildroot, which should normally _not_ be the root user. Therefore, any +action requiring root permissions in one of these scripts will require +special handling (usage of fakeroot or sudo), which is left to the +script developer. diff --git a/buildroot/docs/manual/customize-quick-guide.txt b/buildroot/docs/manual/customize-quick-guide.txt new file mode 100644 index 0000000..627ecba --- /dev/null +++ b/buildroot/docs/manual/customize-quick-guide.txt @@ -0,0 +1,66 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Quick guide to storing your project-specific customizations + +Earlier in this chapter, the different methods for making +project-specific customizations have been described. This section will +now summarize all this by providing step-by-step instructions to storing your +project-specific customizations. Clearly, the steps that are not relevant to +your project can be skipped. + +1. +make menuconfig+ to configure toolchain, packages and kernel. +1. +make linux-menuconfig+ to update the kernel config, similar for + other configuration like busybox, uclibc, ... +1. +mkdir -p board//+ +1. Set the following options to +board///.config+ + (as far as they are relevant): + * +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+ + * +BR2_PACKAGE_BUSYBOX_CONFIG+ + * +BR2_UCLIBC_CONFIG+ + * +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE+ + * +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE+ + * +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE+ +1. Write the configuration files: + * +make linux-update-defconfig+ + * +make busybox-update-config+ + * +make uclibc-update-config+ + * +cp /build/at91bootstrap3-*/.config + board///at91bootstrap3.config+ + * +make barebox-update-defconfig+ + * +make uboot-update-defconfig+ +1. Create +board///rootfs-overlay/+ and fill it + with additional files you need on your rootfs, e.g. + +board///rootfs-overlay/etc/inittab+. + Set +BR2_ROOTFS_OVERLAY+ + to +board///rootfs-overlay+. +1. Create a post-build script + +board///post_build.sh+. Set + +BR2_ROOTFS_POST_BUILD_SCRIPT+ to + +board///post_build.sh+ +1. If additional setuid permissions have to be set or device nodes have + to be created, create +board///device_table.txt+ + and add that path to +BR2_ROOTFS_DEVICE_TABLE+. +1. If additional user accounts have to be created, create + +board///users_table.txt+ and add that path + to +BR2_ROOTFS_USERS_TABLES+. +1. To add custom patches to certain packages, set +BR2_GLOBAL_PATCH_DIR+ + to +board///patches/+ and add your patches + for each package in a subdirectory named after the package. Each + patch should be called +--.patch+. +1. Specifically for the Linux kernel, there also exists the option + +BR2_LINUX_KERNEL_PATCH+ with as main advantage that it can also + download patches from a URL. If you do not need this, + +BR2_GLOBAL_PATCH_DIR+ is preferred. U-Boot, Barebox, at91bootstrap + and at91bootstrap3 also have separate options, but these do not + provide any advantage over +BR2_GLOBAL_PATCH_DIR+ and will likely be + removed in the future. +1. If you need to add project-specific packages, create + +package//+ and place your packages in that + directory. Create an overall +.mk+ file that + includes the +.mk+ files of all your packages. Create an overall + +Config.in+ file that sources the +Config.in+ files of all your + packages. Include this +Config.in+ file from Buildroot's + +package/Config.in+ file. +1. +make savedefconfig+ to save the buildroot configuration. +1. +cp defconfig configs/_defconfig+ diff --git a/buildroot/docs/manual/customize-rootfs.txt b/buildroot/docs/manual/customize-rootfs.txt new file mode 100644 index 0000000..44fc460 --- /dev/null +++ b/buildroot/docs/manual/customize-rootfs.txt @@ -0,0 +1,138 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[rootfs-custom]] +=== Customizing the generated target filesystem + +Besides changing the configuration through +make *config+, +there are a few other ways to customize the resulting target filesystem. + +The two recommended methods, which can co-exist, are root filesystem +overlay(s) and post build script(s). + +Root filesystem overlays (+BR2_ROOTFS_OVERLAY+):: ++ +A filesystem overlay is a tree of files that is copied directly + over the target filesystem after it has been built. To enable this + feature, set config option +BR2_ROOTFS_OVERLAY+ (in the +System + configuration+ menu) to the root of the overlay. You can even specify + multiple overlays, space-separated. If you specify a relative path, + it will be relative to the root of the Buildroot tree. Hidden + directories of version control systems, like +.git+, +.svn+, +.hg+, + etc., files called +.empty+ and files ending in +~+ are excluded from + the copy. ++ +As shown in xref:customize-dir-structure[], the recommended path for + this overlay is +board///rootfs-overlay+. + +Post-build scripts (+BR2_ROOTFS_POST_BUILD_SCRIPT+):: ++ +Post-build scripts are shell scripts called 'after' Buildroot builds + all the selected software, but 'before' the rootfs images are + assembled. To enable this feature, specify a space-separated list of + post-build scripts in config option +BR2_ROOTFS_POST_BUILD_SCRIPT+ (in + the +System configuration+ menu). If you specify a relative path, it + will be relative to the root of the Buildroot tree. ++ +Using post-build scripts, you can remove or modify any file in your + target filesystem. You should, however, use this feature with care. + Whenever you find that a certain package generates wrong or unneeded + files, you should fix that package rather than work around it with some + post-build cleanup scripts. ++ +As shown in xref:customize-dir-structure[], the recommended path for + this script is +board///post_build.sh+. ++ +The post-build scripts are run with the main Buildroot tree as current + working directory. The path to the target filesystem is passed as the + first argument to each script. If the config option + +BR2_ROOTFS_POST_SCRIPT_ARGS+ is not empty, these arguments will be + passed to the script too. All the scripts will be passed the exact + same set of arguments, it is not possible to pass different sets of + arguments to each script. ++ +In addition, you may also use these environment variables: + + - +BR2_CONFIG+: the path to the Buildroot .config file + - +HOST_DIR+, +STAGING_DIR+, +TARGET_DIR+: see + xref:generic-package-reference[] + - +BUILD_DIR+: the directory where packages are extracted and built + - +BINARIES_DIR+: the place where all binary files (aka images) are + stored + - +BASE_DIR+: the base output directory + +Below three more methods of customizing the target filesystem are +described, but they are not recommended. + +Direct modification of the target filesystem:: ++ +For temporary modifications, you can modify the target filesystem + directly and rebuild the image. The target filesystem is available + under +output/target/+. After making your changes, run +make+ to + rebuild the target filesystem image. ++ +This method allows you to do anything to the target filesystem, but if + you need to clean your Buildroot tree using +make clean+, these + changes will be lost. Such cleaning is necessary in several cases, + refer to xref:full-rebuild[] for details. This solution is therefore + only useful for quick tests: _changes do not survive the +make clean+ + command_. Once you have validated your changes, you should make sure + that they will persist after a +make clean+, using a root filesystem + overlay or a post-build script. + +Custom target skeleton (+BR2_ROOTFS_SKELETON_CUSTOM+):: ++ +The root filesystem image is created from a target skeleton, on top of + which all packages install their files. The skeleton is copied to the + target directory +output/target+ before any package is built and + installed. The default target skeleton provides the standard Unix + filesystem layout and some basic init scripts and configuration files. ++ +If the default skeleton (available under +system/skeleton+) does not + match your needs, you would typically use a root filesystem overlay or + post-build script to adapt it. However, if the default skeleton is + entirely different than what you need, using a custom skeleton may be + more suitable. ++ +To enable this feature, enable config option + +BR2_ROOTFS_SKELETON_CUSTOM+ and set +BR2_ROOTFS_SKELETON_CUSTOM_PATH+ + to the path of your custom skeleton. Both options are available in the + +System configuration+ menu. If you specify a relative path, it will + be relative to the root of the Buildroot tree. ++ +This method is not recommended because it duplicates the entire + skeleton, which prevents taking advantage of the fixes or improvements + brought to the default skeleton in later Buildroot releases. + +Post-fakeroot scripts (+BR2_ROOTFS_POST_FAKEROOT_SCRIPT+):: ++ +When aggregating the final images, some parts of the process requires + root rights: creating device nodes in `/dev`, setting permissions or + ownership to files and directories... To avoid requiring actual root + rights, Buildroot uses +fakeroot+ to simulate root rights. This is not + a complete substitute for actually being root, but is enough for what + Buildroot needs. ++ +Post-fakeroot scripts are shell scripts that are called at the 'end' of + the fakeroot phase, 'right before' the filesystem image generator is + called. As such, they are called in the fakeroot context. ++ +Post-fakeroot scripts can be useful in case you need to tweak the + filesystem to do modifications that are usually only available to the + root user. ++ +.Note: +It is recommended to use the existing mechanisms to set file permissions + or create entries in `/dev` (see xref:customize-device-permission[]) or + to create users (see xref:customize-users[]) ++ +.Note: +The difference between post-build scripts (above) and fakeroot scripts, + is that post-build scripts are not called in the fakeroot context. ++ +.Note; +Using `fakeroot` is not an absolute substitute for actually being root. + `fakeroot` only ever fakes the file access rights and types (regular, + block-or-char device...) and uid/gid; these are emulated in-memory. + +include::customize-device-permission-tables.txt[] diff --git a/buildroot/docs/manual/customize-users-tables.txt b/buildroot/docs/manual/customize-users-tables.txt new file mode 100644 index 0000000..e2d32e2 --- /dev/null +++ b/buildroot/docs/manual/customize-users-tables.txt @@ -0,0 +1,18 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize-users]] +=== Adding custom user accounts + +Sometimes it is needed to add specific users in the target system. +To cover this requirement, Buildroot provides support for so-called +_users tables_. To use this feature, set config option ++BR2_ROOTFS_USERS_TABLES+ to a space-separated list of users tables, +regular text files following the xref:makeuser-syntax[makeusers syntax]. + +As shown in xref:customize-dir-structure[], the recommended location for +such files is +board///+. + +It should be noted that if the custom users are related to a specific +application, you should set variable +FOO_USERS+ in the package's +.mk+ +file instead (see xref:generic-package-reference[]). diff --git a/buildroot/docs/manual/customize.txt b/buildroot/docs/manual/customize.txt new file mode 100644 index 0000000..484413e --- /dev/null +++ b/buildroot/docs/manual/customize.txt @@ -0,0 +1,60 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[customize]] +== Project-specific customization + +Typical actions you may need to perform for a given project are: + +* configuring Buildroot (including build options and toolchain, + bootloader, kernel, package and filesystem image type selection) +* configuring other components, like the Linux kernel and BusyBox +* customizing the generated target filesystem + ** adding or overwriting files on the target filesystem (using + +BR2_ROOTFS_OVERLAY+) + ** modifying or deleting files on the target filesystem (using + +BR2_ROOTFS_POST_BUILD_SCRIPT+) + ** running arbitrary commands prior to generating the filesystem image + (using +BR2_ROOTFS_POST_BUILD_SCRIPT+) + ** setting file permissions and ownership (using + +BR2_ROOTFS_DEVICE_TABLE+) + ** adding custom devices nodes (using + +BR2_ROOTFS_STATIC_DEVICE_TABLE+) +* adding custom user accounts (using +BR2_ROOTFS_USERS_TABLES+) +* running arbitrary commands after generating the filesystem image + (using +BR2_ROOTFS_POST_IMAGE_SCRIPT+) +* adding project-specific patches to some packages (using + +BR2_GLOBAL_PATCH_DIR+) +* adding project-specific packages + +An important note regarding such 'project-specific' customizations: +please carefully consider which changes are indeed project-specific and +which changes are also useful to developers outside your project. The +Buildroot community highly recommends and encourages the upstreaming of +improvements, packages and board support to the official Buildroot +project. Of course, it is sometimes not possible or desirable to +upstream because the changes are highly specific or proprietary. + +This chapter describes how to make such project-specific customizations +in Buildroot and how to store them in a way that you can build the same +image in a reproducible way, even after running 'make clean'. By +following the recommended strategy, you can even use the same Buildroot +tree to build multiple distinct projects! + +include::customize-directory-structure.txt[] + +include::customize-outside-br.txt[] + +include::customize-configuration.txt[] + +include::customize-rootfs.txt[] + +include::customize-users-tables.txt[] + +include::customize-post-image.txt[] + +include::customize-patches.txt[] + +include::customize-packages.txt[] + +include::customize-quick-guide.txt[] diff --git a/buildroot/docs/manual/debugging-buildroot.txt b/buildroot/docs/manual/debugging-buildroot.txt new file mode 100644 index 0000000..f575fc4 --- /dev/null +++ b/buildroot/docs/manual/debugging-buildroot.txt @@ -0,0 +1,43 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[debugging-buildroot]] + +== Debugging Buildroot + +It is possible to instrument the steps +Buildroot+ does when building +packages. Define the variable +BR2_INSTRUMENTATION_SCRIPTS+ to contain +the path of one or more scripts (or other executables), in a +space-separated list, you want called before and after each step. The +scripts are called in sequence, with three parameters: + + - +start+ or +end+ to denote the start (resp. the end) of a step; + - the name of the step about to be started, or which just ended; + - the name of the package. + +For example : + +---- +make BR2_INSTRUMENTATION_SCRIPTS="/path/to/my/script1 /path/to/my/script2" +---- + +The list of steps is: + + - +extract+ + - +patch+ + - +configure+ + - +build+ + - +install-host+, when a host-package is installed in +$(HOST_DIR)+ + - +install-target+, when a target-package is installed in +$(TARGET_DIR)+ + - +install-staging+, when a target-package is installed in +$(STAGING_DIR)+ + - +install-image+, when a target-package installs files in +$(BINARIES_DIR)+ + +The script has access to the following variables: + + - +BR2_CONFIG+: the path to the Buildroot .config file + - +HOST_DIR+, +STAGING_DIR+, +TARGET_DIR+: see + xref:generic-package-reference[] + - +BUILD_DIR+: the directory where packages are extracted and built + - +BINARIES_DIR+: the place where all binary files (aka images) are + stored + - +BASE_DIR+: the base output directory diff --git a/buildroot/docs/manual/developers.txt b/buildroot/docs/manual/developers.txt new file mode 100644 index 0000000..a0a3668 --- /dev/null +++ b/buildroot/docs/manual/developers.txt @@ -0,0 +1,48 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[DEVELOPERS]] +== DEVELOPERS file and get-developers + +The main Buildroot directory contains a file named +DEVELOPERS+ that +lists the developers involved with various areas of Buildroot. Thanks +to this file, the +get-developer+ tool allows to: + +- Calculate the list of developers to whom patches should be sent, by + parsing the patches and matching the modified files with the + relevant developers. See xref:submitting-patches[] for details. + +- Find which developers are taking care of a given architecture or + package, so that they can be notified when a build failure occurs on + this architecture or package. This is done in interaction with + Buildroot's autobuild infrastructure. + +We ask developers adding new packages, new boards, or generally new +functionality in Buildroot, to register themselves in the +DEVELOPERS+ +file. As an example, we expect a developer contributing a new package +to include in his patch the appropriate modification to the ++DEVELOPERS+ file. + +The +DEVELOPERS+ file format is documented in detail inside the file +itself. + +The +get-developer+ tool, located in +utils/+ allows to use +the +DEVELOPERS+ file for various tasks: + +- When passing one or several patches as command line argument, + +get-developer+ will return the appropriate +git send-email+ + command. + +- When using the +-a + command line option, +get-developer+ will + return the list of developers in charge of the given architecture. + +- When using the +-p + command line option, +get-developer+ + will return the list of developers in charge of the given package. + +- When using the +-c+ command line option, +get-developer+ will look + at all files under version control in the Buildroot repository, and + list the ones that are not handled by any developer. The purpose of + this option is to help completing the +DEVELOPERS+ file. + +- When using without any arguments, it validates the integrity of the + DEVELOPERS file and will note WARNINGS for items that don't match. diff --git a/buildroot/docs/manual/docbook-xsl.css b/buildroot/docs/manual/docbook-xsl.css new file mode 100644 index 0000000..ee9ca46 --- /dev/null +++ b/buildroot/docs/manual/docbook-xsl.css @@ -0,0 +1,329 @@ +/* + CSS stylesheet for XHTML produced by DocBook XSL stylesheets. +*/ + +body { + font-family: Georgia,serif; +} + +code, pre { + font-family: "Courier New", Courier, monospace; +} + +span.strong { + font-weight: bold; +} + +body blockquote { + margin-top: .75em; + line-height: 1.5; + margin-bottom: .75em; +} + +html body { + margin: 1em 5% 1em 5%; + line-height: 1.2; +} + +body div { + margin: 0; +} + +h1, h2, h3, h4, h5, h6 +{ + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; +} + +div.toc p:first-child, +div.list-of-figures p:first-child, +div.list-of-tables p:first-child, +div.list-of-examples p:first-child, +div.example p.title, +div.sidebar p.title +{ + font-weight: bold; + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; + margin-bottom: 0.2em; +} + +body h1 { + margin: .0em 0 0 -4%; + line-height: 1.3; + border-bottom: 2px solid silver; +} + +body h2 { + margin: 0.5em 0 0 -4%; + line-height: 1.3; + border-bottom: 2px solid silver; +} + +body h3 { + margin: .8em 0 0 -3%; + line-height: 1.3; +} + +body h4 { + margin: .8em 0 0 -3%; + line-height: 1.3; +} + +body h5 { + margin: .8em 0 0 -2%; + line-height: 1.3; +} + +body h6 { + margin: .8em 0 0 -1%; + line-height: 1.3; +} + +body hr { + border: none; /* Broken on IE6 */ +} +div.footnotes hr { + border: 1px solid silver; +} + +div.navheader th, div.navheader td, div.navfooter td { + font-family: Arial,Helvetica,sans-serif; + font-size: 0.9em; + font-weight: bold; + color: #527bbd; +} +div.navheader img, div.navfooter img { + border-style: none; +} +div.navheader a, div.navfooter a { + font-weight: normal; +} +div.navfooter hr { + border: 1px solid silver; +} + +body td { + line-height: 1.2 +} + +body th { + line-height: 1.2; +} + +ol { + line-height: 1.2; +} + +ul, body dir, body menu { + line-height: 1.2; +} + +html { + margin: 0; + padding: 0; +} + +body h1, body h2, body h3, body h4, body h5, body h6 { + margin-left: 0 +} + +body pre { + margin: 0.5em 10% 0.5em 1em; + line-height: 1.0; + color: navy; +} + +tt.literal, code.literal { + color: navy; +} + +.programlisting, .screen { + border: 1px solid silver; + background: #f4f4f4; + margin: 0.5em 10% 0.5em 0; + padding: 0.5em 1em; +} + +div.sidebar { + background: #ffffee; + margin: 1.0em 10% 0.5em 0; + padding: 0.5em 1em; + border: 1px solid silver; +} +div.sidebar * { padding: 0; } +div.sidebar div { margin: 0; } +div.sidebar p.title { + margin-top: 0.5em; + margin-bottom: 0.2em; +} + +div.bibliomixed { + margin: 0.5em 5% 0.5em 1em; +} + +div.glossary dt { + font-weight: bold; +} +div.glossary dd p { + margin-top: 0.2em; +} + +dl { + margin: .8em 0; + line-height: 1.2; +} + +dt { + margin-top: 0.5em; +} + +dt span.term { + font-style: normal; + color: navy; +} + +div.variablelist dd p { + margin-top: 0; +} + +div.itemizedlist li, div.orderedlist li { + margin-left: -0.8em; + margin-top: 0.5em; +} + +ul, ol { + list-style-position: outside; +} + +div.sidebar ul, div.sidebar ol { + margin-left: 2.8em; +} + +div.itemizedlist p.title, +div.orderedlist p.title, +div.variablelist p.title +{ + margin-bottom: -0.8em; +} + +div.revhistory table { + border-collapse: collapse; + border: none; +} +div.revhistory th { + border: none; + color: #527bbd; + font-family: Arial,Helvetica,sans-serif; +} +div.revhistory td { + border: 1px solid silver; +} + +/* Keep TOC and index lines close together. */ +div.toc dl, div.toc dt, +div.list-of-figures dl, div.list-of-figures dt, +div.list-of-tables dl, div.list-of-tables dt, +div.indexdiv dl, div.indexdiv dt +{ + line-height: normal; + margin-top: 0; + margin-bottom: 0; +} + +/* + Table styling does not work because of overriding attributes in + generated HTML. +*/ +div.table table, +div.informaltable table +{ + margin-left: 0; + margin-right: 5%; + margin-bottom: 0.8em; +} +div.informaltable table +{ + margin-top: 0.4em +} +div.table thead, +div.table tfoot, +div.table tbody, +div.informaltable thead, +div.informaltable tfoot, +div.informaltable tbody +{ + /* No effect in IE6. */ + border-top: 3px solid #527bbd; + border-bottom: 3px solid #527bbd; +} +div.table thead, div.table tfoot, +div.informaltable thead, div.informaltable tfoot +{ + font-weight: bold; +} + +div.mediaobject img { + margin-bottom: 0.8em; +} +div.figure p.title, +div.table p.title +{ + margin-top: 1em; + margin-bottom: 0.4em; +} + +div.calloutlist p +{ + margin-top: 0em; + margin-bottom: 0.4em; +} + +a img { + border-style: none; +} + +@media print { + div.navheader, div.navfooter { display: none; } +} + +span.aqua { color: aqua; } +span.black { color: black; } +span.blue { color: blue; } +span.fuchsia { color: fuchsia; } +span.gray { color: gray; } +span.green { color: green; } +span.lime { color: lime; } +span.maroon { color: maroon; } +span.navy { color: navy; } +span.olive { color: olive; } +span.purple { color: purple; } +span.red { color: red; } +span.silver { color: silver; } +span.teal { color: teal; } +span.white { color: white; } +span.yellow { color: yellow; } + +span.aqua-background { background: aqua; } +span.black-background { background: black; } +span.blue-background { background: blue; } +span.fuchsia-background { background: fuchsia; } +span.gray-background { background: gray; } +span.green-background { background: green; } +span.lime-background { background: lime; } +span.maroon-background { background: maroon; } +span.navy-background { background: navy; } +span.olive-background { background: olive; } +span.purple-background { background: purple; } +span.red-background { background: red; } +span.silver-background { background: silver; } +span.teal-background { background: teal; } +span.white-background { background: white; } +span.yellow-background { background: yellow; } + +span.big { font-size: 2em; } +span.small { font-size: 0.6em; } + +span.underline { text-decoration: underline; } +span.overline { text-decoration: overline; } +span.line-through { text-decoration: line-through; } diff --git a/buildroot/docs/manual/download-infra.txt b/buildroot/docs/manual/download-infra.txt new file mode 100644 index 0000000..f2ccd14 --- /dev/null +++ b/buildroot/docs/manual/download-infra.txt @@ -0,0 +1,8 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[download-infra]] + +== Download infrastructure + +TODO diff --git a/buildroot/docs/manual/download-location.txt b/buildroot/docs/manual/download-location.txt new file mode 100644 index 0000000..d485df9 --- /dev/null +++ b/buildroot/docs/manual/download-location.txt @@ -0,0 +1,27 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[download-location]] + +==== Location of downloaded packages + +The various tarballs that are downloaded by Buildroot are all stored +in +BR2_DL_DIR+, which by default is the +dl+ directory. If you want +to keep a complete version of Buildroot which is known to be working +with the associated tarballs, you can make a copy of this directory. +This will allow you to regenerate the toolchain and the target +filesystem with exactly the same versions. + +If you maintain several Buildroot trees, it might be better to have a +shared download location. This can be achieved by pointing the ++BR2_DL_DIR+ environment variable to a directory. If this is +set, then the value of +BR2_DL_DIR+ in the Buildroot configuration is +overridden. The following line should be added to +<~/.bashrc>+. + +----------------- + export BR2_DL_DIR= +----------------- + +The download location can also be set in the +.config+ file, with the ++BR2_DL_DIR+ option. Unlike most options in the .config file, this value +is overridden by the +BR2_DL_DIR+ environment variable. diff --git a/buildroot/docs/manual/eclipse-integration.txt b/buildroot/docs/manual/eclipse-integration.txt new file mode 100644 index 0000000..1f726d8 --- /dev/null +++ b/buildroot/docs/manual/eclipse-integration.txt @@ -0,0 +1,30 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +=== Integration with Eclipse + +While a part of the embedded Linux developers like classical text +editors like Vim or Emacs, and command-line based interfaces, a number +of other embedded Linux developers like richer graphical interfaces to +do their development work. Eclipse being one of the most popular +Integrated Development Environment, Buildroot integrates with Eclipse +in order to ease the development work of Eclipse users. + +Our integration with Eclipse simplifies the compilation, remote +execution and remote debugging of applications and libraries that are +built on top of a Buildroot system. It does not integrate the +Buildroot configuration and build processes themselves with +Eclipse. Therefore, the typical usage model of our Eclipse integration +would be: + +* Configure your Buildroot system with +make menuconfig+, +make + xconfig+ or any other configuration interface provided with + Buildroot. +* Build your Buildroot system by running +make+. +* Start Eclipse to develop, execute and debug your own custom + applications and libraries, that will rely on the libraries built + and installed by Buildroot. + +The Buildroot Eclipse integration installation process and usage is +described in detail at +https://github.com/mbats/eclipse-buildroot-bundle/wiki. diff --git a/buildroot/docs/manual/faq-troubleshooting.txt b/buildroot/docs/manual/faq-troubleshooting.txt new file mode 100644 index 0000000..b144c9e --- /dev/null +++ b/buildroot/docs/manual/faq-troubleshooting.txt @@ -0,0 +1,241 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Frequently Asked Questions & Troubleshooting + +[[faq-boot-hang-after-starting]] +=== The boot hangs after 'Starting network...' + +If the boot process seems to hang after the following messages +(messages not necessarily exactly similar, depending on the list of +packages selected): + +------------------------ +Freeing init memory: 3972K +Initializing random number generator... done. +Starting network... +Starting dropbear sshd: generating rsa key... generating dsa key... OK +------------------------ + +then it means that your system is running, but didn't start a shell on +the serial console. In order to have the system start a shell on your +serial console, you have to go into the Buildroot configuration, in ++System configuration+, modify +Run a getty (login prompt) after boot+ +and set the appropriate port and baud rate in the +getty options+ +submenu. This will automatically tune the +/etc/inittab+ file of the +generated system so that a shell starts on the correct serial port. + +[[faq-no-compiler-on-target]] +=== Why is there no compiler on the target? + +It has been decided that support for the _native compiler on the +target_ would be stopped from the Buildroot-2012.11 release because: + +* this feature was neither maintained nor tested, and often broken; +* this feature was only available for Buildroot toolchains; +* Buildroot mostly targets _small_ or _very small_ target hardware + with limited resource onboard (CPU, ram, mass-storage), for which + compiling on the target does not make much sense; +* Buildroot aims at easing the cross-compilation, making native + compilation on the target unnecessary. + +If you need a compiler on your target anyway, then Buildroot is not +suitable for your purpose. In such case, you need a _real +distribution_ and you should opt for something like: + +* http://www.openembedded.org[openembedded] +* https://www.yoctoproject.org[yocto] +* http://www.emdebian.org[emdebian] +* https://fedoraproject.org/wiki/Architectures[Fedora] +* http://en.opensuse.org/Portal:ARM[openSUSE ARM] +* http://archlinuxarm.org[Arch Linux ARM] +* ... + +[[faq-no-dev-files-on-target]] +=== Why are there no development files on the target? + +Since there is no compiler available on the target (see +xref:faq-no-compiler-on-target[]), it does not make sense to waste +space with headers or static libraries. + +Therefore, those files are always removed from the target since the +Buildroot-2012.11 release. + +[[faq-no-doc-on-target]] +=== Why is there no documentation on the target? + +Because Buildroot mostly targets _small_ or _very small_ target +hardware with limited resource onboard (CPU, ram, mass-storage), it +does not make sense to waste space with the documentation data. + +If you need documentation data on your target anyway, then Buildroot +is not suitable for your purpose, and you should look for a _real +distribution_ (see: xref:faq-no-compiler-on-target[]). + +[[faq-why-not-visible-package]] +=== Why are some packages not visible in the Buildroot config menu? + +If a package exists in the Buildroot tree and does not appear in the +config menu, this most likely means that some of the package's +dependencies are not met. + +To know more about the dependencies of a package, search for the +package symbol in the config menu (see xref:make-tips[]). + +Then, you may have to recursively enable several options (which +correspond to the unmet dependencies) to finally be able to select +the package. + +If the package is not visible due to some unmet toolchain options, +then you should certainly run a full rebuild (see xref:make-tips[] for +more explanations). + +[[faq-why-not-use-target-as-chroot]] +=== Why not use the target directory as a chroot directory? + +There are plenty of reasons to *not* use the target directory a chroot +one, among these: + +* file ownerships, modes and permissions are not correctly set in the + target directory; +* device nodes are not created in the target directory. + +For these reasons, commands run through chroot, using the target +directory as the new root, will most likely fail. + +If you want to run the target filesystem inside a chroot, or as an NFS +root, then use the tarball image generated in +images/+ and extract it +as root. + +[[faq-no-binary-packages]] +=== Why doesn't Buildroot generate binary packages (.deb, .ipkg...)? + +One feature that is often discussed on the Buildroot list is the +general topic of "package management". To summarize, the idea +would be to add some tracking of which Buildroot package installs +what files, with the goals of: + + * being able to remove files installed by a package when this package + gets unselected from the menuconfig; + + * being able to generate binary packages (ipk or other format) that + can be installed on the target without re-generating a new root + filesystem image. + +In general, most people think it is easy to do: just track which package +installed what and remove it when the package is unselected. However, it +is much more complicated than that: + + * It is not only about the +target/+ directory, but also the sysroot in + +host//sysroot+ and the +host/+ directory itself. All files + installed in those directories by various packages must be tracked. + + * When a package is unselected from the configuration, it is not + sufficient to remove just the files it installed. One must also + remove all its reverse dependencies (i.e. packages relying on it) + and rebuild all those packages. For example, package A depends + optionally on the OpenSSL library. Both are selected, and Buildroot + is built. Package A is built with crypto support using OpenSSL. + Later on, OpenSSL gets unselected from the configuration, but + package A remains (since OpenSSL is an optional dependency, this + is possible.) If only OpenSSL files are removed, then the files + installed by package A are broken: they use a library that is no + longer present on the target. Although this is technically doable, + it adds a lot of complexity to Buildroot, which goes against the + simplicity we try to stick to. + + * In addition to the previous problem, there is the case where the + optional dependency is not even known to Buildroot. For example, + package A in version 1.0 never used OpenSSL, but in version 2.0 it + automatically uses OpenSSL if available. If the Buildroot .mk file + hasn't been updated to take this into account, then package A will + not be part of the reverse dependencies of OpenSSL and will not be + removed and rebuilt when OpenSSL is removed. For sure, the .mk file + of package A should be fixed to mention this optional dependency, + but in the mean time, you can have non-reproducible behaviors. + + * The request is to also allow changes in the menuconfig to be + applied on the output directory without having to rebuild + everything from scratch. However, this is very difficult to achieve + in a reliable way: what happens when the suboptions of a package + are changed (we would have to detect this, and rebuild the package + from scratch and potentially all its reverse dependencies), what + happens if toolchain options are changed, etc. At the moment, what + Buildroot does is clear and simple so its behaviour is very + reliable and it is easy to support users. If configuration changes + done in menuconfig are applied after the next make, then it has to + work correctly and properly in all situations, and not have some + bizarre corner cases. The risk is to get bug reports like "I have + enabled package A, B and C, then ran make, then disabled package + C and enabled package D and ran make, then re-enabled package C + and enabled package E and then there is a build failure". Or worse + "I did some configuration, then built, then did some changes, + built, some more changes, built, some more changes, built, and now + it fails, but I don't remember all the changes I did and in which + order". This will be impossible to support. + +For all these reasons, the conclusion is that adding tracking of +installed files to remove them when the package is unselected, or to +generate a repository of binary packages, is something that is very +hard to achieve reliably and will add a lot of complexity. + +On this matter, the Buildroot developers make this position statement: + + * Buildroot strives to make it easy to generate a root filesystem (hence + the name, by the way.) That is what we want to make Buildroot good at: + building root filesystems. + + * Buildroot is not meant to be a distribution (or rather, a distribution + generator.) It is the opinion of most Buildroot developers that this + is not a goal we should pursue. We believe that there are other tools + better suited to generate a distro than Buildroot is. For example, + http://openembedded.org/[Open Embedded], or https://openwrt.org/[openWRT], + are such tools. + + * We prefer to push Buildroot in a direction that makes it easy (or even + easier) to generate complete root filesystems. This is what makes + Buildroot stands out in the crowd (among other things, of course!) + + * We believe that for most embedded Linux systems, binary packages are + not necessary, and potentially harmful. When binary packages are + used, it means that the system can be partially upgraded, which + creates an enormous number of possible combinations of package + versions that should be tested before doing the upgrade on the + embedded device. On the other hand, by doing complete system + upgrades by upgrading the entire root filesystem image at once, + the image deployed to the embedded system is guaranteed to really + be the one that has been tested and validated. + +[[faq-speeding-up-build]] +=== How to speed-up the build process? + +Since Buildroot often involves doing full rebuilds of the entire +system that can be quite long, we provide below a number of tips to +help reduce the build time: + + * Use a pre-built external toolchain instead of the default Buildroot + internal toolchain. By using a pre-built Linaro toolchain (on ARM) + or a Sourcery CodeBench toolchain (for ARM, x86, x86-64, MIPS, + etc.), you will save the build time of the toolchain at each + complete rebuild, approximately 15 to 20 minutes. Note that + temporarily using an external toolchain does not prevent you to + switch back to an internal toolchain (that may provide a higher + level of customization) once the rest of your system is working; + + * Use the +ccache+ compiler cache (see: xref:ccache[]); + + * Learn about rebuilding only the few packages you actually care + about (see xref:rebuild-pkg[]), but beware that sometimes full + rebuilds are anyway necessary (see xref:full-rebuild[]); + + * Make sure you are not using a virtual machine for the Linux system + used to run Buildroot. Most of the virtual machine technologies are + known to cause a significant performance impact on I/O, which is + really important for building source code; + + * Make sure that you're using only local files: do not attempt to do + a build over NFS, which significantly slows down the build. Having + the Buildroot download folder available locally also helps a bit. + + * Buy new hardware. SSDs and lots of RAM are key to speeding up the + builds. diff --git a/buildroot/docs/manual/getting.txt b/buildroot/docs/manual/getting.txt new file mode 100644 index 0000000..549938a --- /dev/null +++ b/buildroot/docs/manual/getting.txt @@ -0,0 +1,36 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[getting-buildroot]] +== Getting Buildroot + +Buildroot releases are made every 3 months, in February, May, August and +November. Release numbers are in the format YYYY.MM, so for example +2013.02, 2014.08. + +Release tarballs are available at http://buildroot.org/downloads/[]. + +For your convenience, a https://www.vagrantup.com/[Vagrantfile] is +available in `support/misc/Vagrantfile` in the Buildroot source tree +to quickly set up a virtual machine with the needed dependencies to +get started. + +If you want to setup an isolated buildroot environment on Linux or Mac +Os X, paste this line onto your terminal: + +-------------------- +curl -O https://buildroot.org/downloads/Vagrantfile; vagrant up +-------------------- + +If you are on Windows, paste this into your powershell: + +-------------------- +(new-object System.Net.WebClient).DownloadFile( +"https://buildroot.org/downloads/Vagrantfile","Vagrantfile"); +vagrant up +-------------------- + +If you want to follow development, you can use the daily snapshots or +make a clone of the Git repository. Refer to the +http://buildroot.org/download[Download page] of the Buildroot website +for more details. diff --git a/buildroot/docs/manual/github_hash_mongrel2.png b/buildroot/docs/manual/github_hash_mongrel2.png new file mode 100644 index 0000000..c695c31 Binary files /dev/null and b/buildroot/docs/manual/github_hash_mongrel2.png differ diff --git a/buildroot/docs/manual/how-buildroot-works.txt b/buildroot/docs/manual/how-buildroot-works.txt new file mode 100644 index 0000000..1204d1e --- /dev/null +++ b/buildroot/docs/manual/how-buildroot-works.txt @@ -0,0 +1,69 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== How Buildroot works + +As mentioned above, Buildroot is basically a set of Makefiles that +download, configure, and compile software with the correct options. It +also includes patches for various software packages - mainly the ones +involved in the cross-compilation toolchain (+gcc+, +binutils+ and ++uClibc+). + +There is basically one Makefile per software package, and they are +named with the +.mk+ extension. Makefiles are split into many different +parts. + +* The +toolchain/+ directory contains the Makefiles + and associated files for all software related to the + cross-compilation toolchain: +binutils+, +gcc+, +gdb+, + +kernel-headers+ and +uClibc+. + +* The +arch/+ directory contains the definitions for all the processor + architectures that are supported by Buildroot. + +* The +package/+ directory contains the Makefiles and + associated files for all user-space tools and libraries that Buildroot + can compile and add to the target root filesystem. There is one + sub-directory per package. + +* The +linux/+ directory contains the Makefiles and associated files for + the Linux kernel. + +* The +boot/+ directory contains the Makefiles and associated files for + the bootloaders supported by Buildroot. + +* The +system/+ directory contains support for system integration, e.g. + the target filesystem skeleton and the selection of an init system. + +* The +fs/+ directory contains the Makefiles and + associated files for software related to the generation of the + target root filesystem image. + +Each directory contains at least 2 files: + +* +something.mk+ is the Makefile that downloads, configures, + compiles and installs the package +something+. + +* +Config.in+ is a part of the configuration tool + description file. It describes the options related to the + package. + +The main Makefile performs the following steps (once the +configuration is done): + +* Create all the output directories: +staging+, +target+, +build+, + etc. in the output directory (+output/+ by default, + another value can be specified using +O=+) + +* Generate the toolchain target. When an internal toolchain is used, this + means generating the cross-compilation toolchain. When an external + toolchain is used, this means checking the features of the external + toolchain and importing it into the Buildroot environment. + +* Generate all the targets listed in the +TARGETS+ variable. This + variable is filled by all the individual components' + Makefiles. Generating these targets will trigger the compilation of + the userspace packages (libraries, programs), the kernel, the + bootloader and the generation of the root filesystem images, + depending on the configuration. + diff --git a/buildroot/docs/manual/introduction.txt b/buildroot/docs/manual/introduction.txt new file mode 100644 index 0000000..476aa81 --- /dev/null +++ b/buildroot/docs/manual/introduction.txt @@ -0,0 +1,26 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== About Buildroot + +Buildroot is a tool that simplifies and automates the process of +building a complete Linux system for an embedded system, using +cross-compilation. + +In order to achieve this, Buildroot is able to generate a +cross-compilation toolchain, a root filesystem, a Linux kernel image +and a bootloader for your target. Buildroot can be used for any +combination of these options, independently (you can for example use +an existing cross-compilation toolchain, and build only your root +filesystem with Buildroot). + +Buildroot is useful mainly for people working with embedded systems. +Embedded systems often use processors that are not the regular x86 +processors everyone is used to having in his PC. They can be PowerPC +processors, MIPS processors, ARM processors, etc. + +Buildroot supports numerous processors and their variants; it also +comes with default configurations for several boards available +off-the-shelf. Besides this, a number of third-party projects are based on, +or develop their BSP footnote:[BSP: Board Support Package] or +SDK footnote:[SDK: Software Development Kit] on top of Buildroot. diff --git a/buildroot/docs/manual/known-issues.txt b/buildroot/docs/manual/known-issues.txt new file mode 100644 index 0000000..ae29a48 --- /dev/null +++ b/buildroot/docs/manual/known-issues.txt @@ -0,0 +1,15 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Known issues + +* It is not possible to pass extra linker options via +BR2_TARGET_LDFLAGS+ + if such options contain a +$+ sign. For example, the following is known + to break: +BR2_TARGET_LDFLAGS="-Wl,-rpath=\'$ORIGIN/../lib'"+ + +* The +libffi+ package is not supported on the SuperH 2 and ARC + architectures. + +* The +prboom+ package triggers a compiler failure with the SuperH 4 + compiler from Sourcery CodeBench, version 2012.09. + diff --git a/buildroot/docs/manual/legal-notice.txt b/buildroot/docs/manual/legal-notice.txt new file mode 100644 index 0000000..6975328 --- /dev/null +++ b/buildroot/docs/manual/legal-notice.txt @@ -0,0 +1,123 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[legal-info]] + +== Legal notice and licensing + +=== Complying with open source licenses + +All of the end products of Buildroot (toolchain, root filesystem, kernel, +bootloaders) contain open source software, released under various licenses. + +Using open source software gives you the freedom to build rich embedded +systems, choosing from a wide range of packages, but also imposes some +obligations that you must know and honour. +Some licenses require you to publish the license text in the documentation of +your product. Others require you to redistribute the source code of the +software to those that receive your product. + +The exact requirements of each license are documented in each package, and +it is your responsibility (or that of your legal office) to comply with those +requirements. +To make this easier for you, Buildroot can collect for you some material you +will probably need. To produce this material, after you have configured +Buildroot with +make menuconfig+, +make xconfig+ or +make gconfig+, run: + +-------------------- +make legal-info +-------------------- + +Buildroot will collect legally-relevant material in your output directory, +under the +legal-info/+ subdirectory. +There you will find: + +* A +README+ file, that summarizes the produced material and contains warnings + about material that Buildroot could not produce. +* +buildroot.config+: this is the Buildroot configuration file that is usually + produced with +make menuconfig+, and which is necessary to reproduce the + build. +* The source code for all packages; this is saved in the +sources/+ and + +host-sources/+ subdirectories for target and host packages respectively. + The source code for packages that set +_REDISTRIBUTE = NO+ will not be + saved. + Patches that were applied are also saved, along with a file named +series+ + that lists the patches in the order they were applied. Patches are under the + same license as the files that they modify. + Note: Buildroot applies additional patches to Libtool scripts of + autotools-based packages. These patches can be found under + +support/libtool+ in the Buildroot source and, due to technical + limitations, are not saved with the package sources. You may need to + collect them manually. +* A manifest file (one for host and one for target packages) listing the + configured packages, their version, license and related information. + Some of this information might not be defined in Buildroot; such items are + marked as "unknown". +* The license texts of all packages, in the +licenses/+ and +host-licenses/+ + subdirectories for target and host packages respectively. + If the license file(s) are not defined in Buildroot, the file is not produced + and a warning in the +README+ indicates this. + +Please note that the aim of the +legal-info+ feature of Buildroot is to +produce all the material that is somehow relevant for legal compliance with the +package licenses. Buildroot does not try to produce the exact material that +you must somehow make public. Certainly, more material is produced than is +needed for a strict legal compliance. For example, it produces the source code +for packages released under BSD-like licenses, that you are not required to +redistribute in source form. + +Moreover, due to technical limitations, Buildroot does not produce some +material that you will or may need, such as the toolchain source code and the +Buildroot source code itself (including patches to packages for which source +distribution is required). +When you run +make legal-info+, Buildroot produces warnings in the +README+ +file to inform you of relevant material that could not be saved. + +Finally, keep in mind that the output of +make legal-info+ is based on +declarative statements in each of the packages recipes. The Buildroot +developers try to do their best to keep those declarative statements as +accurate as possible, to the best of their knowledge. However, it is very +well possible that those declarative statements are not all fully accurate +nor exhaustive. You (or your legal department) _have_ to check the output +of +make legal-info+ before using it as your own compliance delivery. See +the _NO WARRANTY_ clauses (clauses 11 and 12) in the +COPYING+ file at the +root of the Buildroot distribution. + +[[legal-info-buildroot]] +=== Complying with the Buildroot license + +Buildroot itself is an open source software, released under the +http://www.gnu.org/licenses/old-licenses/gpl-2.0.html[GNU General +Public License, version 2] or (at your option) any later version, with +the exception of the package patches detailed below. +However, being a build system, it is not normally part of the end product: +if you develop the root filesystem, kernel, bootloader or toolchain for a +device, the code of Buildroot is only present on the development machine, not +in the device storage. + +Nevertheless, the general view of the Buildroot developers is that you should +release the Buildroot source code along with the source code of other packages +when releasing a product that contains GPL-licensed software. +This is because the +http://www.gnu.org/licenses/old-licenses/gpl-2.0.html[GNU GPL] +defines the "'complete source code'" for an executable work as "'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'". +Buildroot is part of the 'scripts used to control compilation and +installation of the executable', and as such it is considered part of the +material that must be redistributed. + +Keep in mind that this is only the Buildroot developers' opinion, and you +should consult your legal department or lawyer in case of any doubt. + +==== Patches to packages + +Buildroot also bundles patch files, which are applied to the sources +of the various packages. Those patches are not covered by the license +of Buildroot. Instead, they are covered by the license of the software +to which the patches are applied. When said software is available +under multiple licenses, the Buildroot patches are only provided under +the publicly accessible licenses. + +See xref:patch-policy[] for the technical details. diff --git a/buildroot/docs/manual/logo.png b/buildroot/docs/manual/logo.png new file mode 100644 index 0000000..2db743b Binary files /dev/null and b/buildroot/docs/manual/logo.png differ diff --git a/buildroot/docs/manual/make-tips.txt b/buildroot/docs/manual/make-tips.txt new file mode 100644 index 0000000..ea1d825 --- /dev/null +++ b/buildroot/docs/manual/make-tips.txt @@ -0,0 +1,133 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[make-tips]] +=== 'make' tips + +This is a collection of tips that help you make the most of Buildroot. + +.Display all commands executed by make: + +-------------------- + $ make V=1 +-------------------- + +.Display the list of boards with a defconfig: + +-------------------- + $ make list-defconfigs +-------------------- + +.Display all available targets: + +-------------------- + $ make help +-------------------- + +Not all targets are always available, +some settings in the +.config+ file may hide some targets: + +* +busybox-menuconfig+ only works when +busybox+ is enabled; +* +linux-menuconfig+ and +linux-savedefconfig+ only work when + +linux+ is enabled; +* +uclibc-menuconfig+ is only available when the uClibc C library is + selected in the internal toolchain backend; +* +barebox-menuconfig+ and +barebox-savedefconfig+ only work when the + +barebox+ bootloader is enabled. +* +uboot-menuconfig+ and +uboot-savedefconfig+ only work when the + +U-Boot+ bootloader is enabled. + +.Cleaning: + +Explicit cleaning is required when any of the architecture or toolchain +configuration options are changed. + +To delete all build products (including build directories, host, staging +and target trees, the images and the toolchain): + +-------------------- + $ make clean +-------------------- + +.Generating the manual: + +The present manual sources are located in the 'docs/manual' directory. +To generate the manual: + +--------------------------------- + $ make manual-clean + $ make manual +--------------------------------- + +The manual outputs will be generated in 'output/docs/manual'. + +.Notes +- A few tools are required to build the documentation (see: + xref:requirement-optional[]). + +.Resetting Buildroot for a new target: + +To delete all build products as well as the configuration: + +-------------------- + $ make distclean +-------------------- + +.Notes +If +ccache+ is enabled, running +make clean+ or +distclean+ does +not empty the compiler cache used by Buildroot. To delete it, refer +to xref:ccache[]. + +.Dumping the internal make variables: + +One can dump all the variables known to make, along with their values: + +---- + $ make -s printvars + VARIABLE=value_of_variable + ... +---- + +It is possible to tweak the output using some variables: + +- +VARS+ will limit the listing to variables which names match the + specified make-pattern +- +QUOTED_VARS+, if set to +YES+, will single-quote the value +- +RAW_VARS+, if set to +YES+, will print the unexpanded value + +For example: + +---- + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES + BUSYBOX_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_ALL_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_PATCH_DEPENDENCIES= + BUSYBOX_RDEPENDENCIES=ncurses util-linux +---- + +---- + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES QUOTED_VARS=YES + BUSYBOX_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_ALL_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_PATCH_DEPENDENCIES='' + BUSYBOX_RDEPENDENCIES='ncurses util-linux' +---- + +---- + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES RAW_VARS=YES + BUSYBOX_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_ALL_DEPENDENCIES=$(sort $(BUSYBOX_FINAL_DEPENDENCIES) $(BUSYBOX_FINAL_PATCH_DEPENDENCIES)) + BUSYBOX_FINAL_DEPENDENCIES=$(sort $(BUSYBOX_DEPENDENCIES)) + BUSYBOX_FINAL_PATCH_DEPENDENCIES=$(sort $(BUSYBOX_PATCH_DEPENDENCIES)) + BUSYBOX_RDEPENDENCIES=ncurses util-linux +---- + +The output of quoted variables can be reused in shell scripts, for example: + +---- + $ eval $(make -s printvars VARS=BUSYBOX_DEPENDENCIES QUOTED_VARS=YES) + $ echo $BUSYBOX_DEPENDENCIES + skeleton toolchain +---- diff --git a/buildroot/docs/manual/makedev-syntax.txt b/buildroot/docs/manual/makedev-syntax.txt new file mode 100644 index 0000000..d6efb31 --- /dev/null +++ b/buildroot/docs/manual/makedev-syntax.txt @@ -0,0 +1,103 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[makedev-syntax]] +== Makedev syntax documentation + +The makedev syntax is used in several places in Buildroot to +define changes to be made for permissions, or which device files to +create and how to create them, in order to avoid calls to mknod. + +This syntax is derived from the makedev utility, and more complete +documentation can be found in the +package/makedevs/README+ file. + +It takes the form of a space separated list of fields, one file per +line; the fields are: + +|=========================================================== +|name |type |mode |uid |gid |major |minor |start |inc |count +|=========================================================== + +There are a few non-trivial blocks: + +- +name+ is the path to the file you want to create/modify +- +type+ is the type of the file, being one of: + * f: a regular file + * d: a directory + * r: a directory recursively + * c: a character device file + * b: a block device file + * p: a named pipe +- +mode+ are the usual permissions settings (only numerical values + are allowed) +- +uid+ and +gid+ are the UID and GID to set on this file; can be + either numerical values or actual names +- +major+ and +minor+ are here for device files, set to +-+ for other + files +- +start+, +inc+ and +count+ are for when you want to create a batch + of files, and can be reduced to a loop, beginning at +start+, + incrementing its counter by +inc+ until it reaches +count+ + +Let's say you want to change the permissions of a given file; using +this syntax, you will need to write: + +---- +/usr/bin/foo f 755 0 0 - - - - - +/usr/bin/bar f 755 root root - - - - - +/data/buz f 644 buz-user buz-group - - - - - +---- + +Alternatively, if you want to change owner/permission of a directory +recursively, you can write (to set UID to foo, GID to bar and access +rights to rwxr-x--- for the directory /usr/share/myapp and all files +and directories below it): + +---- +/usr/share/myapp r 750 foo bar - - - - - +---- + +On the other hand, if you want to create the device file +/dev/hda+ +and the corresponding 15 files for the partitions, you will need for ++/dev/hda+: + +---- +/dev/hda b 640 root root 3 0 0 0 - +---- + +and then for device files corresponding to the partitions of ++/dev/hda+, +/dev/hdaX+, +X+ ranging from 1 to 15: + +---- +/dev/hda b 640 root root 3 1 1 1 15 +---- + +Extended attributes are supported if ++BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES+ is enabled. +This is done by adding a line starting with +|xattr+ after +the line describing the file. Right now, only capability +is supported as extended attribute. + +|===================== +| \|xattr | capability +|===================== + +- +|xattr+ is a "flag" that indicate an extended attribute +- +capability+ is a capability to add to the previous file + +If you want to add the capability cap_sys_admin to the binary foo, +you will write : + +---- +/usr/bin/foo f 755 root root - - - - - +|xattr cap_sys_admin+eip +---- + +You can add several capabilities to a file by using several +|xattr+ lines. +If you want to add the capability cap_sys_admin and cap_net_admin to the +binary foo, you will write : + +---- +/usr/bin/foo f 755 root root - - - - - +|xattr cap_sys_admin+eip +|xattr cap_net_admin+eip +---- diff --git a/buildroot/docs/manual/makeusers-syntax.txt b/buildroot/docs/manual/makeusers-syntax.txt new file mode 100644 index 0000000..467e596 --- /dev/null +++ b/buildroot/docs/manual/makeusers-syntax.txt @@ -0,0 +1,89 @@ +// -*- mode:doc -*- ; +// vim: set syntax=asciidoc: + +[[makeuser-syntax]] +== Makeusers syntax documentation + +The syntax to create users is inspired by the makedev syntax, above, but +is specific to Buildroot. + +The syntax for adding a user is a space-separated list of fields, one +user per line; the fields are: + +|================================================================= +|username |uid |group |gid |password |home |shell |groups |comment +|================================================================= + +Where: + +- +username+ is the desired user name (aka login name) for the user. + It can not be +root+, and must be unique. If set to +-+, then just a + group will be created. +- +uid+ is the desired UID for the user. It must be unique, and not + +0+. If set to +-1+, then a unique UID will be computed by Buildroot + in the range [1000...1999] +- +group+ is the desired name for the user's main group. It can not + be +root+. If the group does not exist, it will be created. +- +gid+ is the desired GID for the user's main group. It must be unique, + and not +0+. If set to +-1+, and the group does not already exist, then + a unique GID will be computed by Buildroot in the range [1000..1999] +- +password+ is the crypt(3)-encoded password. If prefixed with +!+, + then login is disabled. If prefixed with +=+, then it is interpreted + as clear-text, and will be crypt-encoded (using MD5). If prefixed with + +!=+, then the password will be crypt-encoded (using MD5) and login + will be disabled. If set to +*+, then login is not allowed. If set to + +-+, then no password value will be set. +- +home+ is the desired home directory for the user. If set to '-', no + home directory will be created, and the user's home will be +/+. + Explicitly setting +home+ to +/+ is not allowed. +- +shell+ is the desired shell for the user. If set to +-+, then + +/bin/false+ is set as the user's shell. +- +groups+ is the comma-separated list of additional groups the user + should be part of. If set to +-+, then the user will be a member of + no additional group. Missing groups will be created with an arbitrary + +gid+. +- +comment+ (aka https://en.wikipedia.org/wiki/Gecos_field[GECOS] + field) is an almost-free-form text. + +There are a few restrictions on the content of each field: + +* except for +comment+, all fields are mandatory. +* except for +comment+, fields may not contain spaces. +* no field may contain a colon (+:+). + +If +home+ is not +-+, then the home directory, and all files below, +will belong to the user and its main group. + +Examples: + +---- +foo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user +---- + +This will create this user: + +- +username+ (aka login name) is: +foo+ +- +uid+ is computed by Buildroot +- main +group+ is: +bar+ +- main group +gid+ is computed by Buildroot +- clear-text +password+ is: +blabla+, will be crypt(3)-encoded, and login is disabled. +- +home+ is: +/home/foo+ +- +shell+ is: +/bin/sh+ +- +foo+ is also a member of +groups+: +alpha+ and +bravo+ +- +comment+ is: +Foo user+ + +---- +test 8000 wheel -1 = - /bin/sh - Test user +---- + +This will create this user: + +- +username+ (aka login name) is: +test+ +- +uid+ is : +8000+ +- main +group+ is: +wheel+ +- main group +gid+ is computed by Buildroot, and will use the value defined in the rootfs skeleton +- +password+ is empty (aka no password). +- +home+ is +/+ but will not belong to +test+ +- +shell+ is: +/bin/sh+ +- +test+ is not a member of any additional +groups+ +- +comment+ is: +Test user+ diff --git a/buildroot/docs/manual/manual.html b/buildroot/docs/manual/manual.html new file mode 100644 index 0000000..5b1a69a --- /dev/null +++ b/buildroot/docs/manual/manual.html @@ -0,0 +1,5068 @@ + +The Buildroot user manual

The Buildroot user manual


Table of Contents

I. Getting started
1. About Buildroot
2. System requirements
2.1. Mandatory packages
2.2. Optional packages
3. Getting Buildroot
4. Buildroot quick start
5. Community resources
II. User guide
6. Buildroot configuration
6.1. Cross-compilation toolchain
6.2. /dev management
6.3. init system
7. Configuration of other components
8. General Buildroot usage
8.1. make tips
8.2. Understanding when a full rebuild is necessary
8.3. Understanding how to rebuild packages
8.4. Offline builds
8.5. Building out-of-tree
8.6. Environment variables
8.7. Dealing efficiently with filesystem images
8.8. Graphing the dependencies between packages
8.9. Graphing the build duration
8.10. Graphing the filesystem size contribution of packages
8.11. Integration with Eclipse
8.12. Advanced usage
9. Project-specific customization
9.1. Recommended directory structure
9.2. Keeping customizations outside of Buildroot
9.3. Storing the Buildroot configuration
9.4. Storing the configuration of other components
9.5. Customizing the generated target filesystem
9.6. Adding custom user accounts
9.7. Customization after the images have been created
9.8. Adding project-specific patches
9.9. Adding project-specific packages
9.10. Quick guide to storing your project-specific customizations
10. Frequently Asked Questions & Troubleshooting
10.1. The boot hangs after Starting network…
10.2. Why is there no compiler on the target?
10.3. Why are there no development files on the target?
10.4. Why is there no documentation on the target?
10.5. Why are some packages not visible in the Buildroot config menu?
10.6. Why not use the target directory as a chroot directory?
10.7. Why doesn’t Buildroot generate binary packages (.deb, .ipkg…)?
10.8. How to speed-up the build process?
11. Known issues
12. Legal notice and licensing
12.1. Complying with open source licenses
12.2. Complying with the Buildroot license
13. Beyond Buildroot
13.1. Boot the generated images
13.2. Chroot
III. Developer guide
14. How Buildroot works
15. Coding style
15.1. Config.in file
15.2. The .mk file
15.3. The documentation
15.4. Support scripts
16. Adding support for a particular board
17. Adding new packages to Buildroot
17.1. Package directory
17.2. Config files
17.3. The .mk file
17.4. The .hash file
17.5. Infrastructure for packages with specific build systems
17.6. Infrastructure for autotools-based packages
17.7. Infrastructure for CMake-based packages
17.8. Infrastructure for Python packages
17.9. Infrastructure for LuaRocks-based packages
17.10. Infrastructure for Perl/CPAN packages
17.11. Infrastructure for virtual packages
17.12. Infrastructure for packages using kconfig for configuration files
17.13. Infrastructure for rebar-based packages
17.14. Infrastructure for Waf-based packages
17.15. Integration of Meson-based packages
17.16. Integration of Cargo-based packages
17.17. Infrastructure for packages building kernel modules
17.18. Infrastructure for asciidoc documents
17.19. Infrastructure specific to the Linux kernel package
17.20. Hooks available in the various build steps
17.21. Gettext integration and interaction with packages
17.22. Tips and tricks
17.23. Conclusion
18. Patching a package
18.1. Providing patches
18.2. How patches are applied
18.3. Format and licensing of the package patches
18.4. Integrating patches found on the Web
19. Download infrastructure
20. Debugging Buildroot
21. Contributing to Buildroot
21.1. Reproducing, analyzing and fixing bugs
21.2. Analyzing and fixing autobuild failures
21.3. Reviewing and testing patches
21.4. Work on items from the TODO list
21.5. Submitting patches
21.6. Reporting issues/bugs or getting help
22. DEVELOPERS file and get-developers
IV. Appendix
23. Makedev syntax documentation
24. Makeusers syntax documentation
25. Migrating from older Buildroot versions
25.1. Migrating to 2016.11
25.2. Migrating to 2017.08

Buildroot 2018.02.4 manual generated on 2018-07-20 +22:26:13 UTC from git revision e4eaf7311d

The Buildroot manual is written by the Buildroot developers. +It is licensed under the GNU General Public License, version 2. Refer to the +COPYING +file in the Buildroot sources for the full text of this license.

Copyright © 2004-2018 The Buildroot developers

logo.png

Part I. Getting started

Chapter 1. About Buildroot

Buildroot is a tool that simplifies and automates the process of +building a complete Linux system for an embedded system, using +cross-compilation.

In order to achieve this, Buildroot is able to generate a +cross-compilation toolchain, a root filesystem, a Linux kernel image +and a bootloader for your target. Buildroot can be used for any +combination of these options, independently (you can for example use +an existing cross-compilation toolchain, and build only your root +filesystem with Buildroot).

Buildroot is useful mainly for people working with embedded systems. +Embedded systems often use processors that are not the regular x86 +processors everyone is used to having in his PC. They can be PowerPC +processors, MIPS processors, ARM processors, etc.

Buildroot supports numerous processors and their variants; it also +comes with default configurations for several boards available +off-the-shelf. Besides this, a number of third-party projects are based on, +or develop their BSP [1] or +SDK [2] on top of Buildroot.



[1] BSP: Board Support Package

[2] SDK: Software Development Kit

Chapter 2. System requirements

Buildroot is designed to run on Linux systems.

While Buildroot itself will build most host packages it needs for the +compilation, certain standard Linux utilities are expected to be +already installed on the host system. Below you will find an overview of +the mandatory and optional packages (note that package names may vary +between distributions).

2.1. Mandatory packages

  • +Build tools: +

    • +which +
    • +sed +
    • +make (version 3.81 or any later) +
    • +binutils +
    • +build-essential (only for Debian based systems) +
    • +gcc (version 2.95 or any later) +
    • +g++ (version 2.95 or any later) +
    • +bash +
    • +patch +
    • +gzip +
    • +bzip2 +
    • +perl (version 5.8.7 or any later) +
    • +tar +
    • +cpio +
    • +python (version 2.6 or any later) +
    • +unzip +
    • +rsync +
    • +file (must be in /usr/bin/file) +
    • +bc +
  • +Source fetching tools: +

    • +wget +

2.2. Optional packages

  • +Configuration interface dependencies: +

    For these libraries, you need to install both runtime and development +data, which in many distributions are packaged separately. The +development packages typically have a -dev or -devel suffix.

    • +ncurses5 to use the menuconfig interface +
    • +qt4 to use the xconfig interface +
    • +glib2, gtk2 and glade2 to use the gconfig interface +
  • +Source fetching tools: +

    In the official tree, most of the package sources are retrieved using +wget from ftp, http or https locations. A few packages are only +available through a version control system. Moreover, Buildroot is +capable of downloading sources via other tools, like rsync or scp +(refer to Chapter 19, Download infrastructure for more details). If you enable +packages using any of these methods, you will need to install the +corresponding tool on the host system:

    • +bazaar +
    • +cvs +
    • +git +
    • +mercurial +
    • +rsync +
    • +scp +
    • +subversion +
  • +Java-related packages, if the Java Classpath needs to be built for + the target system: +

    • +The javac compiler +
    • +The jar tool +
  • +Documentation generation tools: +

    • +asciidoc, version 8.6.3 or higher +
    • +w3m +
    • +python with the argparse module (automatically present in 2.7+ and 3.2+) +
    • +dblatex (required for the pdf manual only) +
  • +Graph generation tools: +

    • +graphviz to use graph-depends and <pkg>-graph-depends +
    • +python-matplotlib to use graph-build +

Chapter 3. Getting Buildroot

Buildroot releases are made every 3 months, in February, May, August and +November. Release numbers are in the format YYYY.MM, so for example +2013.02, 2014.08.

Release tarballs are available at http://buildroot.org/downloads/.

For your convenience, a Vagrantfile is +available in support/misc/Vagrantfile in the Buildroot source tree +to quickly set up a virtual machine with the needed dependencies to +get started.

If you want to setup an isolated buildroot environment on Linux or Mac +Os X, paste this line onto your terminal:

curl -O https://buildroot.org/downloads/Vagrantfile; vagrant up

If you are on Windows, paste this into your powershell:

(new-object System.Net.WebClient).DownloadFile(
+"https://buildroot.org/downloads/Vagrantfile","Vagrantfile");
+vagrant up

If you want to follow development, you can use the daily snapshots or +make a clone of the Git repository. Refer to the +Download page of the Buildroot website +for more details.

Chapter 4. Buildroot quick start

Important: you can and should build everything as a normal user. There +is no need to be root to configure and use Buildroot. By running all +commands as a regular user, you protect your system against packages +behaving badly during compilation and installation.

The first step when using Buildroot is to create a configuration. +Buildroot has a nice configuration tool similar to the one you can +find in the Linux kernel or in +BusyBox.

From the buildroot directory, run

 $ make menuconfig

for the original curses-based configurator, or

 $ make nconfig

for the new curses-based configurator, or

 $ make xconfig

for the Qt-based configurator, or

 $ make gconfig

for the GTK-based configurator.

All of these "make" commands will need to build a configuration +utility (including the interface), so you may need to install +"development" packages for relevant libraries used by the +configuration utilities. Refer to Chapter 2, System requirements for more details, +specifically the optional requirements +Section 2.2, “Optional packages” +to get the dependencies of your favorite interface.

For each menu entry in the configuration tool, you can find associated +help that describes the purpose of the entry. Refer to Chapter 6, Buildroot configuration +for details on some specific configuration aspects.

Once everything is configured, the configuration tool generates a +.config file that contains the entire configuration. This file will be +read by the top-level Makefile.

To start the build process, simply run:

 $ make

You should never use make -jN with Buildroot: top-level parallel +make is currently not supported. Instead, use the BR2_JLEVEL option +to tell Buildroot to run the compilation of each individual package +with make -jN.

The make command will generally perform the following steps:

  • +download source files (as required); +
  • +configure, build and install the cross-compilation toolchain, or + simply import an external toolchain; +
  • +configure, build and install selected target packages; +
  • +build a kernel image, if selected; +
  • +build a bootloader image, if selected; +
  • +create a root filesystem in selected formats. +

Buildroot output is stored in a single directory, output/. +This directory contains several subdirectories:

  • +images/ where all the images (kernel image, bootloader and root + filesystem images) are stored. These are the files you need to put + on your target system. +
  • +build/ where all the components are built (this includes tools + needed by Buildroot on the host and packages compiled for the + target). This directory contains one subdirectory for each of these + components. +
  • +staging/ which contains a hierarchy similar to a root filesystem + hierarchy. This directory contains the headers and libraries of the + cross-compilation toolchain and all the userspace packages selected + for the target. However, this directory is not intended to be + the root filesystem for the target: it contains a lot of development + files, unstripped binaries and libraries that make it far too big + for an embedded system. These development files are used to compile + libraries and applications for the target that depend on other + libraries. +
  • +target/ which contains almost the complete root filesystem for + the target: everything needed is present except the device files in + /dev/ (Buildroot can’t create them because Buildroot doesn’t run + as root and doesn’t want to run as root). Also, it doesn’t have the correct + permissions (e.g. setuid for the busybox binary). Therefore, this directory + should not be used on your target. Instead, you should use one of + the images built in the images/ directory. If you need an + extracted image of the root filesystem for booting over NFS, then + use the tarball image generated in images/ and extract it as + root. Compared to staging/, target/ contains only the files and + libraries needed to run the selected target applications: the + development files (headers, etc.) are not present, the binaries are + stripped. +
  • +host/ contains the installation of tools compiled for the host + that are needed for the proper execution of Buildroot, including the + cross-compilation toolchain. +

These commands, make menuconfig|nconfig|gconfig|xconfig and make, are the +basic ones that allow to easily and quickly generate images fitting +your needs, with all the features and applications you enabled.

More details about the "make" command usage are given in +Section 8.1, “make tips”.

Chapter 5. Community resources

Like any open source project, Buildroot has different ways to share +information in its community and outside.

Each of those ways may interest you if you are looking for some help, +want to understand Buildroot or contribute to the project.

+Mailing List +

Buildroot has a mailing list for discussion and development. It is the +main method of interaction for Buildroot users and developers.

Only subscribers to the Buildroot mailing list are allowed to post to +this list. You can subscribe via the +mailing list info +page.

Mails that are sent to the mailing list are also available in the +mailing list archives and +via Gmane, at +gmane.comp.lib.uclibc.buildroot. +Please search the mailing list archives before asking questions, since +there is a good chance someone else has asked the same question before.

+IRC +

The Buildroot IRC channel #buildroot is +hosted on Freenode. It is a useful place to +ask quick questions or discuss on certain topics.

When asking for help on IRC, share relevant logs or pieces of code +using a code sharing website, such as http://code.bulix.org.

Note that for certain questions, posting to the mailing list may be +better as it will reach more people, both developers and users.

+Bug tracker +
Bugs in Buildroot can be reported via the mailing list or alternatively +via the Buildroot +bugtracker. Please refer to Section 21.6, “Reporting issues/bugs or getting help” before creating a bug +report.
+Wiki +
The Buildroot wiki page is hosted on +the eLinux wiki. It contains some useful links, an +overview of past and upcoming events, and a TODO list.
+Patchwork +

Patchwork is a web-based patch tracking system designed to facilitate +the contribution and management of contributions to an open-source +project. Patches that have been sent to a mailing list are 'caught' by +the system, and appear on a web page. Any comments posted that +reference the patch are appended to the patch page too. For more +information on Patchwork see +http://jk.ozlabs.org/projects/patchwork/.

Buildroot’s Patchwork website is mainly for use by Buildroot’s +maintainer to ensure patches aren’t missed. It is also used by Buildroot +patch reviewers (see also Section 21.3.1, “Applying Patches from Patchwork”). +However, since the website exposes patches and their corresponding +review comments in a clean and concise web interface, it can be useful +for all Buildroot developers.

The Buildroot patch management interface is available at +http://patchwork.buildroot.org.

Part II. User guide

Chapter 6. Buildroot configuration

All the configuration options in make *config have a help text +providing details about the option.

The make *config commands also offer a search tool. Read the help +message in the different frontend menus to know how to use it:

  • +in menuconfig, the search tool is called by pressing /; +
  • +in xconfig, the search tool is called by pressing Ctrl + f. +

The result of the search shows the help message of the matching items. +In menuconfig, numbers in the left column provide a shortcut to the +corresponding entry. Just type this number to directly jump to the +entry, or to the containing menu in case the entry is not selectable due +to a missing dependency.

Although the menu structure and the help text of the entries should be +sufficiently self-explanatory, a number of topics require additional +explanation that cannot easily be covered in the help text and are +therefore covered in the following sections.

6.1. Cross-compilation toolchain

A compilation toolchain is the set of tools that allows you to compile +code for your system. It consists of a compiler (in our case, gcc), +binary utils like assembler and linker (in our case, binutils) and a +C standard library (for example +GNU Libc, +uClibc-ng).

The system installed on your development station certainly already has +a compilation toolchain that you can use to compile an application +that runs on your system. If you’re using a PC, your compilation +toolchain runs on an x86 processor and generates code for an x86 +processor. Under most Linux systems, the compilation toolchain uses +the GNU libc (glibc) as the C standard library. This compilation +toolchain is called the "host compilation toolchain". The machine on +which it is running, and on which you’re working, is called the "host +system" [3].

The compilation toolchain is provided by your distribution, and +Buildroot has nothing to do with it (other than using it to build a +cross-compilation toolchain and other tools that are run on the +development host).

As said above, the compilation toolchain that comes with your system +runs on and generates code for the processor in your host system. As +your embedded system has a different processor, you need a +cross-compilation toolchain - a compilation toolchain that runs on +your host system but generates code for your target system (and +target processor). For example, if your host system uses x86 and your +target system uses ARM, the regular compilation toolchain on your host +runs on x86 and generates code for x86, while the cross-compilation +toolchain runs on x86 and generates code for ARM.

Buildroot provides two solutions for the cross-compilation toolchain:

  • +The internal toolchain backend, called Buildroot toolchain in + the configuration interface. +
  • +The external toolchain backend, called External toolchain in + the configuration interface. +

The choice between these two solutions is done using the Toolchain +Type option in the Toolchain menu. Once one solution has been +chosen, a number of configuration options appear, they are detailed in +the following sections.

6.1.1. Internal toolchain backend

The internal toolchain backend is the backend where Buildroot builds +by itself a cross-compilation toolchain, before building the userspace +applications and libraries for your target embedded system.

This backend supports several C libraries: +uClibc-ng, +glibc and +musl.

Once you have selected this backend, a number of options appear. The +most important ones allow to:

  • +Change the version of the Linux kernel headers used to build the + toolchain. This item deserves a few explanations. In the process of + building a cross-compilation toolchain, the C library is being + built. This library provides the interface between userspace + applications and the Linux kernel. In order to know how to "talk" + to the Linux kernel, the C library needs to have access to the + Linux kernel headers (i.e. the .h files from the kernel), which + define the interface between userspace and the kernel (system + calls, data structures, etc.). Since this interface is backward + compatible, the version of the Linux kernel headers used to build + your toolchain do not need to match exactly the version of the + Linux kernel you intend to run on your embedded system. They only + need to have a version equal or older to the version of the Linux + kernel you intend to run. If you use kernel headers that are more + recent than the Linux kernel you run on your embedded system, then + the C library might be using interfaces that are not provided by + your Linux kernel. +
  • +Change the version of the GCC compiler, binutils and the C library. +
  • +Select a number of toolchain options (uClibc only): whether the + toolchain should have RPC support (used mainly for NFS), + wide-char support, locale support (for internationalization), + C++ support or thread support. Depending on which options you choose, + the number of userspace applications and libraries visible in + Buildroot menus will change: many applications and libraries require + certain toolchain options to be enabled. Most packages show a comment + when a certain toolchain option is required to be able to enable + those packages. If needed, you can further refine the uClibc + configuration by running make uclibc-menuconfig. Note however that + all packages in Buildroot are tested against the default uClibc + configuration bundled in Buildroot: if you deviate from this + configuration by removing features from uClibc, some packages may no + longer build. +

It is worth noting that whenever one of those options is modified, +then the entire toolchain and system must be rebuilt. See +Section 8.2, “Understanding when a full rebuild is necessary”.

Advantages of this backend:

  • +Well integrated with Buildroot +
  • +Fast, only builds what’s necessary +

Drawbacks of this backend:

  • +Rebuilding the toolchain is needed when doing make clean, which + takes time. If you’re trying to reduce your build time, consider + using the External toolchain backend. +

6.1.2. External toolchain backend

The external toolchain backend allows to use existing pre-built +cross-compilation toolchains. Buildroot knows about a number of +well-known cross-compilation toolchains (from +Linaro for ARM, +Sourcery +CodeBench for ARM, x86-64, PowerPC, and MIPS, and is capable of +downloading them automatically, or it can be pointed to a custom +toolchain, either available for download or installed locally.

Then, you have three solutions to use an external toolchain:

  • +Use a predefined external toolchain profile, and let Buildroot + download, extract and install the toolchain. Buildroot already knows + about a few CodeSourcery and Linaro toolchains. Just select the + toolchain profile in Toolchain from the available ones. This is + definitely the easiest solution. +
  • +Use a predefined external toolchain profile, but instead of having + Buildroot download and extract the toolchain, you can tell Buildroot + where your toolchain is already installed on your system. Just + select the toolchain profile in Toolchain through the available + ones, unselect Download toolchain automatically, and fill the + Toolchain path text entry with the path to your cross-compiling + toolchain. +
  • +Use a completely custom external toolchain. This is particularly + useful for toolchains generated using crosstool-NG or with Buildroot + itself. To do this, select the Custom toolchain solution in the + Toolchain list. You need to fill the Toolchain path, Toolchain + prefix and External toolchain C library options. Then, you have + to tell Buildroot what your external toolchain supports. If your + external toolchain uses the glibc library, you only have to tell + whether your toolchain supports C++ or not and whether it has + built-in RPC support. If your external toolchain uses the uClibc + library, then you have to tell Buildroot if it supports RPC, + wide-char, locale, program invocation, threads and C++. + At the beginning of the execution, Buildroot will tell you if + the selected options do not match the toolchain configuration. +

Our external toolchain support has been tested with toolchains from +CodeSourcery and Linaro, toolchains generated by +crosstool-NG, and toolchains generated by +Buildroot itself. In general, all toolchains that support the +sysroot feature should work. If not, do not hesitate to contact the +developers.

We do not support toolchains or SDK generated by OpenEmbedded or +Yocto, because these toolchains are not pure toolchains (i.e. just the +compiler, binutils, the C and C++ libraries). Instead these toolchains +come with a very large set of pre-compiled libraries and +programs. Therefore, Buildroot cannot import the sysroot of the +toolchain, as it would contain hundreds of megabytes of pre-compiled +libraries that are normally built by Buildroot.

We also do not support using the distribution toolchain (i.e. the +gcc/binutils/C library installed by your distribution) as the +toolchain to build software for the target. This is because your +distribution toolchain is not a "pure" toolchain (i.e. only with the +C/C++ library), so we cannot import it properly into the Buildroot +build environment. So even if you are building a system for a x86 or +x86_64 target, you have to generate a cross-compilation toolchain with +Buildroot or crosstool-NG.

If you want to generate a custom toolchain for your project, that can +be used as an external toolchain in Buildroot, our recommendation is +definitely to build it with crosstool-NG. We +recommend to build the toolchain separately from Buildroot, and then +import it in Buildroot using the external toolchain backend.

Advantages of this backend:

  • +Allows to use well-known and well-tested cross-compilation + toolchains. +
  • +Avoids the build time of the cross-compilation toolchain, which is + often very significant in the overall build time of an embedded + Linux system. +

Drawbacks of this backend:

  • +If your pre-built external toolchain has a bug, may be hard to get a + fix from the toolchain vendor, unless you build your external + toolchain by yourself using Crosstool-NG. +

External toolchain wrapper

When using an external toolchain, Buildroot generates a wrapper program, +that transparently passes the appropriate options (according to the +configuration) to the external toolchain programs. In case you need to +debug this wrapper to check exactly what arguments are passed, you can +set the environment variable BR2_DEBUG_WRAPPER to either one of:

  • +0, empty or not set: no debug +
  • +1: trace all arguments on a single line +
  • +2: trace one argument per line +

6.2. /dev management

On a Linux system, the /dev directory contains special files, called +device files, that allow userspace applications to access the +hardware devices managed by the Linux kernel. Without these device +files, your userspace applications would not be able to use the +hardware devices, even if they are properly recognized by the Linux +kernel.

Under System configuration, /dev management, Buildroot offers four +different solutions to handle the /dev directory :

  • +The first solution is Static using device table. This is the old + classical way of handling device files in Linux. With this method, + the device files are persistently stored in the root filesystem + (i.e. they persist across reboots), and there is nothing that will + automatically create and remove those device files when hardware + devices are added or removed from the system. Buildroot therefore + creates a standard set of device files using a device table, the + default one being stored in system/device_table_dev.txt in the + Buildroot source code. This file is processed when Buildroot + generates the final root filesystem image, and the device files + are therefore not visible in the output/target directory. The + BR2_ROOTFS_STATIC_DEVICE_TABLE option allows to change the + default device table used by Buildroot, or to add an additional + device table, so that additional device files are created by + Buildroot during the build. So, if you use this method, and a + device file is missing in your system, you can for example create + a board/<yourcompany>/<yourproject>/device_table_dev.txt file + that contains the description of your additional device files, + and then you can set BR2_ROOTFS_STATIC_DEVICE_TABLE to + system/device_table_dev.txt + board/<yourcompany>/<yourproject>/device_table_dev.txt. For more + details about the format of the device table file, see + Chapter 23, Makedev syntax documentation. +
  • +The second solution is Dynamic using devtmpfs only. devtmpfs is + a virtual filesystem inside the Linux kernel that has been + introduced in kernel 2.6.32 (if you use an older kernel, it is not + possible to use this option). When mounted in /dev, this virtual + filesystem will automatically make device files appear and + disappear as hardware devices are added and removed from the + system. This filesystem is not persistent across reboots: it is + filled dynamically by the kernel. Using devtmpfs requires the + following kernel configuration options to be enabled: + CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT. When Buildroot is in + charge of building the Linux kernel for your embedded device, it + makes sure that those two options are enabled. However, if you + build your Linux kernel outside of Buildroot, then it is your + responsibility to enable those two options (if you fail to do so, + your Buildroot system will not boot). +
  • +The third solution is Dynamic using devtmpfs + mdev. This method + also relies on the devtmpfs virtual filesystem detailed above (so + the requirement to have CONFIG_DEVTMPFS and + CONFIG_DEVTMPFS_MOUNT enabled in the kernel configuration still + apply), but adds the mdev userspace utility on top of it. mdev + is a program part of BusyBox that the kernel will call every time a + device is added or removed. Thanks to the /etc/mdev.conf + configuration file, mdev can be configured to for example, set + specific permissions or ownership on a device file, call a script + or application whenever a device appears or disappear, + etc. Basically, it allows userspace to react on device addition + and removal events. mdev can for example be used to automatically + load kernel modules when devices appear on the system. mdev is + also important if you have devices that require a firmware, as it + will be responsible for pushing the firmware contents to the + kernel. mdev is a lightweight implementation (with fewer + features) of udev. For more details about mdev and the syntax + of its configuration file, see + http://git.busybox.net/busybox/tree/docs/mdev.txt. +
  • +The fourth solution is Dynamic using devtmpfs + eudev. This + method also relies on the devtmpfs virtual filesystem detailed + above, but adds the eudev userspace daemon on top of it. eudev + is a daemon that runs in the background, and gets called by the + kernel when a device gets added or removed from the system. It is a + more heavyweight solution than mdev, but provides higher + flexibility. eudev is a standalone version of udev, the + original userspace daemon used in most desktop Linux distributions, + which is now part of Systemd. For more details, see + http://en.wikipedia.org/wiki/Udev. +

The Buildroot developers recommendation is to start with the Dynamic +using devtmpfs only solution, until you have the need for userspace +to be notified when devices are added/removed, or if firmwares are +needed, in which case Dynamic using devtmpfs + mdev is usually a +good solution.

Note that if systemd is chosen as init system, /dev management will +be performed by the udev program provided by systemd.

6.3. init system

The init program is the first userspace program started by the +kernel (it carries the PID number 1), and is responsible for starting +the userspace services and programs (for example: web server, +graphical applications, other network servers, etc.).

Buildroot allows to use three different types of init systems, which +can be chosen from System configuration, Init system:

  • +The first solution is BusyBox. Amongst many programs, BusyBox has + an implementation of a basic init program, which is sufficient + for most embedded systems. Enabling the BR2_INIT_BUSYBOX will + ensure BusyBox will build and install its init program. This is + the default solution in Buildroot. The BusyBox init program will + read the /etc/inittab file at boot to know what to do. The syntax + of this file can be found in + http://git.busybox.net/busybox/tree/examples/inittab (note that + BusyBox inittab syntax is special: do not use a random inittab + documentation from the Internet to learn about BusyBox + inittab). The default inittab in Buildroot is stored in + system/skeleton/etc/inittab. Apart from mounting a few important + filesystems, the main job the default inittab does is to start the + /etc/init.d/rcS shell script, and start a getty program (which + provides a login prompt). +
  • +The second solution is systemV. This solution uses the old + traditional sysvinit program, packed in Buildroot in + package/sysvinit. This was the solution used in most desktop + Linux distributions, until they switched to more recent + alternatives such as Upstart or Systemd. sysvinit also works with + an inittab file (which has a slightly different syntax than the + one from BusyBox). The default inittab installed with this init + solution is located in package/sysvinit/inittab. +
  • +The third solution is systemd. systemd is the new generation + init system for Linux. It does far more than traditional init + programs: aggressive parallelization capabilities, uses socket and + D-Bus activation for starting services, offers on-demand starting + of daemons, keeps track of processes using Linux control groups, + supports snapshotting and restoring of the system state, + etc. systemd will be useful on relatively complex embedded + systems, for example the ones requiring D-Bus and services + communicating between each other. It is worth noting that systemd + brings a fairly big number of large dependencies: dbus, udev + and more. For more details about systemd, see + http://www.freedesktop.org/wiki/Software/systemd. +

The solution recommended by Buildroot developers is to use the +BusyBox init as it is sufficient for most embedded +systems. systemd can be used for more complex situations.



[3] This terminology differs from what is used by GNU +configure, where the host is the machine on which the application will +run (which is usually the same as target)

Chapter 7. Configuration of other components

Before attempting to modify any of the components below, make sure you +have already configured Buildroot itself, and have enabled the +corresponding package.

+BusyBox +

If you already have a BusyBox configuration file, you can directly +specify this file in the Buildroot configuration, using +BR2_PACKAGE_BUSYBOX_CONFIG. Otherwise, Buildroot will start from a +default BusyBox configuration file.

To make subsequent changes to the configuration, use make +busybox-menuconfig to open the BusyBox configuration editor.

It is also possible to specify a BusyBox configuration file through an +environment variable, although this is not recommended. Refer to +Section 8.6, “Environment variables” for more details.

+uClibc +
Configuration of uClibc is done in the same way as for BusyBox. The +configuration variable to specify an existing configuration file is +BR2_UCLIBC_CONFIG. The command to make subsequent changes is make +uclibc-menuconfig.
+Linux kernel +

If you already have a kernel configuration file, you can directly +specify this file in the Buildroot configuration, using +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG.

If you do not yet have a kernel configuration file, you can either start +by specifying a defconfig in the Buildroot configuration, using +BR2_LINUX_KERNEL_USE_DEFCONFIG, or start by creating an empty file and +specifying it as custom configuration file, using +BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG.

To make subsequent changes to the configuration, use make +linux-menuconfig to open the Linux configuration editor.

+Barebox +
Configuration of Barebox is done in the same way as for the Linux +kernel. The corresponding configuration variables are +BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG and +BR2_TARGET_BAREBOX_USE_DEFCONFIG. To open the configuration editor, +use make barebox-menuconfig.
+U-Boot +
Configuration of U-Boot (version 2015.04 or newer) is done in the same +way as for the Linux kernel. The corresponding configuration variables +are BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG and +BR2_TARGET_UBOOT_USE_DEFCONFIG. To open the configuration editor, +use make uboot-menuconfig.

Chapter 8. General Buildroot usage

8.1. make tips

This is a collection of tips that help you make the most of Buildroot.

Display all commands executed by make:  +

 $ make V=1 <target>

+

Display the list of boards with a defconfig:  +

 $ make list-defconfigs

+

Display all available targets:  +

 $ make help

+

Not all targets are always available, +some settings in the .config file may hide some targets:

  • +busybox-menuconfig only works when busybox is enabled; +
  • +linux-menuconfig and linux-savedefconfig only work when + linux is enabled; +
  • +uclibc-menuconfig is only available when the uClibc C library is + selected in the internal toolchain backend; +
  • +barebox-menuconfig and barebox-savedefconfig only work when the + barebox bootloader is enabled. +
  • +uboot-menuconfig and uboot-savedefconfig only work when the + U-Boot bootloader is enabled. +

Cleaning: Explicit cleaning is required when any of the architecture or toolchain +configuration options are changed.

To delete all build products (including build directories, host, staging +and target trees, the images and the toolchain):

 $ make clean

Generating the manual: The present manual sources are located in the docs/manual directory. +To generate the manual:

 $ make manual-clean
+ $ make manual

The manual outputs will be generated in output/docs/manual.

Notes

Resetting Buildroot for a new target: To delete all build products as well as the configuration:

 $ make distclean

Notes. If ccache is enabled, running make clean or distclean does +not empty the compiler cache used by Buildroot. To delete it, refer +to Section 8.12.3, “Using ccache in Buildroot”.

Dumping the internal make variables: One can dump all the variables known to make, along with their values:

 $ make -s printvars
+ VARIABLE=value_of_variable
+ ...

It is possible to tweak the output using some variables:

  • +VARS will limit the listing to variables which names match the + specified make-pattern +
  • +QUOTED_VARS, if set to YES, will single-quote the value +
  • +RAW_VARS, if set to YES, will print the unexpanded value +

For example:

 $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES
+ BUSYBOX_DEPENDENCIES=skeleton toolchain
+ BUSYBOX_FINAL_ALL_DEPENDENCIES=skeleton toolchain
+ BUSYBOX_FINAL_DEPENDENCIES=skeleton toolchain
+ BUSYBOX_FINAL_PATCH_DEPENDENCIES=
+ BUSYBOX_RDEPENDENCIES=ncurses util-linux
 $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES QUOTED_VARS=YES
+ BUSYBOX_DEPENDENCIES='skeleton toolchain'
+ BUSYBOX_FINAL_ALL_DEPENDENCIES='skeleton toolchain'
+ BUSYBOX_FINAL_DEPENDENCIES='skeleton toolchain'
+ BUSYBOX_FINAL_PATCH_DEPENDENCIES=''
+ BUSYBOX_RDEPENDENCIES='ncurses util-linux'
 $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES RAW_VARS=YES
+ BUSYBOX_DEPENDENCIES=skeleton toolchain
+ BUSYBOX_FINAL_ALL_DEPENDENCIES=$(sort $(BUSYBOX_FINAL_DEPENDENCIES) $(BUSYBOX_FINAL_PATCH_DEPENDENCIES))
+ BUSYBOX_FINAL_DEPENDENCIES=$(sort $(BUSYBOX_DEPENDENCIES))
+ BUSYBOX_FINAL_PATCH_DEPENDENCIES=$(sort $(BUSYBOX_PATCH_DEPENDENCIES))
+ BUSYBOX_RDEPENDENCIES=ncurses util-linux

The output of quoted variables can be reused in shell scripts, for example:

 $ eval $(make -s printvars VARS=BUSYBOX_DEPENDENCIES QUOTED_VARS=YES)
+ $ echo $BUSYBOX_DEPENDENCIES
+ skeleton toolchain

8.2. Understanding when a full rebuild is necessary

Buildroot does not attempt to detect what parts of the system should +be rebuilt when the system configuration is changed through make +menuconfig, make xconfig or one of the other configuration +tools. In some cases, Buildroot should rebuild the entire system, in +some cases, only a specific subset of packages. But detecting this in +a completely reliable manner is very difficult, and therefore the +Buildroot developers have decided to simply not attempt to do this.

Instead, it is the responsibility of the user to know when a full +rebuild is necessary. As a hint, here are a few rules of thumb that +can help you understand how to work with Buildroot:

  • +When the target architecture configuration is changed, a complete + rebuild is needed. Changing the architecture variant, the binary + format or the floating point strategy for example has an impact on + the entire system. +
  • +When the toolchain configuration is changed, a complete rebuild + generally is needed. Changing the toolchain configuration often + involves changing the compiler version, the type of C library or + its configuration, or some other fundamental configuration item, + and these changes have an impact on the entire system. +
  • +When an additional package is added to the configuration, a full + rebuild is not necessarily needed. Buildroot will detect that this + package has never been built, and will build it. However, if this + package is a library that can optionally be used by packages that + have already been built, Buildroot will not automatically rebuild + those. Either you know which packages should be rebuilt, and you + can rebuild them manually, or you should do a full rebuild. For + example, let’s suppose you have built a system with the ctorrent + package, but without openssl. Your system works, but you realize + you would like to have SSL support in ctorrent, so you enable the + openssl package in Buildroot configuration and restart the + build. Buildroot will detect that openssl should be built and + will be build it, but it will not detect that ctorrent should be + rebuilt to benefit from openssl to add OpenSSL support. You will + either have to do a full rebuild, or rebuild ctorrent itself. +
  • +When a package is removed from the configuration, Buildroot does + not do anything special. It does not remove the files installed by + this package from the target root filesystem or from the toolchain + sysroot. A full rebuild is needed to get rid of this + package. However, generally you don’t necessarily need this package + to be removed right now: you can wait for the next lunch break to + restart the build from scratch. +
  • +When the sub-options of a package are changed, the package is not + automatically rebuilt. After making such changes, rebuilding only + this package is often sufficient, unless enabling the package + sub-option adds some features to the package that are useful for + another package which has already been built. Again, Buildroot does + not track when a package should be rebuilt: once a package has been + built, it is never rebuilt unless explicitly told to do so. +
  • +When a change to the root filesystem skeleton is made, a full + rebuild is needed. However, when changes to the root filesystem + overlay, a post-build script or a post-image script are made, + there is no need for a full rebuild: a simple make invocation + will take the changes into account. +

Generally speaking, when you’re facing a build error and you’re unsure +of the potential consequences of the configuration changes you’ve +made, do a full rebuild. If you get the same build error, then you are +sure that the error is not related to partial rebuilds of packages, +and if this error occurs with packages from the official Buildroot, do +not hesitate to report the problem! As your experience with Buildroot +progresses, you will progressively learn when a full rebuild is really +necessary, and you will save more and more time.

For reference, a full rebuild is achieved by running:

$ make clean all

8.3. Understanding how to rebuild packages

One of the most common questions asked by Buildroot users is how to +rebuild a given package or how to remove a package without rebuilding +everything from scratch.

Removing a package is unsupported by Buildroot without +rebuilding from scratch. This is because Buildroot doesn’t keep track +of which package installs what files in the output/staging and +output/target directories, or which package would be compiled differently +depending on the availability of another package.

The easiest way to rebuild a single package from scratch is to remove +its build directory in output/build. Buildroot will then re-extract, +re-configure, re-compile and re-install this package from scratch. You +can ask buildroot to do this with the make <package>-dirclean command.

On the other hand, if you only want to restart the build process of a +package from its compilation step, you can run make +<package>-rebuild, followed by make or make <package>. It will +restart the compilation and installation of the package, but not from +scratch: it basically re-executes make and make install +inside the package, so it will only rebuild files that changed.

If you want to restart the build process of a package from its +configuration step, you can run make <package>-reconfigure, followed +by make or make <package>. It will restart the configuration, +compilation and installation of the package.

Internally, Buildroot creates so-called stamp files to keep track of +which build steps have been completed for each package. They are +stored in the package build directory, +output/build/<package>-<version>/ and are named +.stamp_<step-name>. The commands detailed above simply manipulate +these stamp files to force Buildroot to restart a specific set of +steps of a package build process.

Further details about package special make targets are explained in +Section 8.12.5, “Package-specific make targets”.

8.4. Offline builds

If you intend to do an offline build and just want to download +all sources that you previously selected in the configurator +(menuconfig, nconfig, xconfig or gconfig), then issue:

 $ make source

You can now disconnect or copy the content of your dl +directory to the build-host.

8.5. Building out-of-tree

As default, everything built by Buildroot is stored in the directory +output in the Buildroot tree.

Buildroot also supports building out of tree with a syntax similar to +the Linux kernel. To use it, add O=<directory> to the make command +line:

 $ make O=/tmp/build

Or:

 $ cd /tmp/build; make O=$PWD -C path/to/buildroot

All the output files will be located under /tmp/build. If the O +path does not exist, Buildroot will create it.

Note: the O path can be either an absolute or a relative path, but if it’s +passed as a relative path, it is important to note that it is interpreted +relative to the main Buildroot source directory, not the current working +directory.

When using out-of-tree builds, the Buildroot .config and temporary +files are also stored in the output directory. This means that you can +safely run multiple builds in parallel using the same source tree as +long as they use unique output directories.

For ease of use, Buildroot generates a Makefile wrapper in the output +directory - so after the first run, you no longer need to pass O=<…> +and -C <…>, simply run (in the output directory):

 $ make <target>

8.6. Environment variables

Buildroot also honors some environment variables, when they are passed +to make or set in the environment:

  • +HOSTCXX, the host C++ compiler to use +
  • +HOSTCC, the host C compiler to use +
  • +UCLIBC_CONFIG_FILE=<path/to/.config>, path to + the uClibc configuration file, used to compile uClibc, if an + internal toolchain is being built. + + Note that the uClibc configuration file can also be set from the + configuration interface, so through the Buildroot .config file; this + is the recommended way of setting it. + +
  • +BUSYBOX_CONFIG_FILE=<path/to/.config>, path to + the BusyBox configuration file. + + Note that the BusyBox configuration file can also be set from the + configuration interface, so through the Buildroot .config file; this + is the recommended way of setting it. + +
  • +BR2_CCACHE_DIR to override the directory where + Buildroot stores the cached files when using ccache. + +
  • +BR2_DL_DIR to override the directory in which + Buildroot stores/retrieves downloaded files + + Note that the Buildroot download directory can also be set from the + configuration interface, so through the Buildroot .config file. See + Section 8.12.4, “Location of downloaded packages” for more details on how you can set the download + directory. +
  • +BR2_GRAPH_ALT, if set and non-empty, to use an alternate color-scheme in + build-time graphs +
  • +BR2_GRAPH_OUT to set the filetype of generated graphs, either pdf (the + default), or png. +
  • +BR2_GRAPH_DEPS_OPTS to pass extra options to the dependency graph; see + Section 8.8, “Graphing the dependencies between packages” for the accepted options +
  • +BR2_GRAPH_DOT_OPTS is passed verbatim as options to the dot utility to + draw the dependency graph. +

An example that uses config files located in the toplevel directory and +in your $HOME:

 $ make UCLIBC_CONFIG_FILE=uClibc.config BUSYBOX_CONFIG_FILE=$HOME/bb.config

If you want to use a compiler other than the default gcc +or g++ for building helper-binaries on your host, then do

 $ make HOSTCXX=g++-4.3-HEAD HOSTCC=gcc-4.3-HEAD

8.7. Dealing efficiently with filesystem images

Filesystem images can get pretty big, depending on the filesystem you choose, +the number of packages, whether you provisioned free space… Yet, some +locations in the filesystems images may just be empty (e.g. a long run of +zeroes); such a file is called a sparse file.

Most tools can handle sparse files efficiently, and will only store or write +those parts of a sparse file that are not empty.

For example:

  • +tar accepts the -S option to tell it to only store non-zero blocks + of sparse files: +

    • +tar cf archive.tar -S [files…] will efficiently store sparse files + in a tarball +
    • +tar xf archive.tar -S will efficiently store sparse files extracted + from a tarball +
  • +cp accepts the --sparse=WHEN option (WHEN is one of auto, + never or always): +

    • +cp --sparse=always source.file dest.file will make dest.file a + sparse file if source.file has long runs of zeroes +

Other tools may have similar options. Please consult their respective man +pages.

You can use sparse files if you need to store the filesystem images (e.g. +to transfer from one machine to another), or if you need to send them (e.g. +to the Q&A team).

Note however that flashing a filesystem image to a device while using the +sparse mode of dd may result in a broken filesystem (e.g. the block bitmap +of an ext2 filesystem may be corrupted; or, if you have sparse files in +your filesystem, those parts may not be all-zeroes when read back). You +should only use sparse files when handling files on the build machine, not +when transferring them to an actual device that will be used on the target.

8.8. Graphing the dependencies between packages

One of Buildroot’s jobs is to know the dependencies between packages, +and make sure they are built in the right order. These dependencies +can sometimes be quite complicated, and for a given system, it is +often not easy to understand why such or such package was brought into +the build by Buildroot.

In order to help understanding the dependencies, and therefore better +understand what is the role of the different components in your +embedded Linux system, Buildroot is capable of generating dependency +graphs.

To generate a dependency graph of the full system you have compiled, +simply run:

make graph-depends

You will find the generated graph in +output/graphs/graph-depends.pdf.

If your system is quite large, the dependency graph may be too complex +and difficult to read. It is therefore possible to generate the +dependency graph just for a given package:

make <pkg>-graph-depends

You will find the generated graph in +output/graph/<pkg>-graph-depends.pdf.

Note that the dependency graphs are generated using the dot tool +from the Graphviz project, which you must have installed on your +system to use this feature. In most distributions, it is available as +the graphviz package.

By default, the dependency graphs are generated in the PDF +format. However, by passing the BR2_GRAPH_OUT environment variable, you +can switch to other output formats, such as PNG, PostScript or +SVG. All formats supported by the -T option of the dot tool are +supported.

BR2_GRAPH_OUT=svg make graph-depends

The graph-depends behaviour can be controlled by setting options in the +BR2_GRAPH_DEPS_OPTS environment variable. The accepted options are:

  • +--depth N, -d N, to limit the dependency depth to N levels. The + default, 0, means no limit. +
  • +--stop-on PKG, -s PKG, to stop the graph on the package PKG. + PKG can be an actual package name, a glob, the keyword virtual + (to stop on virtual packages), or the keyword host (to stop on + host packages). The package is still present on the graph, but its + dependencies are not. +
  • +--exclude PKG, -x PKG, like --stop-on, but also omits PKG from + the graph. +
  • +--transitive, --no-transitive, to draw (or not) the transitive + dependencies. The default is to not draw transitive dependencies. +
  • +--colours R,T,H, the comma-separated list of colours to draw the + root package (R), the target packages (T) and the host packages + (H). Defaults to: lightblue,grey,gainsboro +
BR2_GRAPH_DEPS_OPTS='-d 3 --no-transitive --colours=red,green,blue' make graph-depends

8.9. Graphing the build duration

When the build of a system takes a long time, it is sometimes useful +to be able to understand which packages are the longest to build, to +see if anything can be done to speed up the build. In order to help +such build time analysis, Buildroot collects the build time of each +step of each package, and allows to generate graphs from this data.

To generate the build time graph after a build, run:

make graph-build

This will generate a set of files in output/graphs :

  • +build.hist-build.pdf, a histogram of the build time for each + package, ordered in the build order. +
  • +build.hist-duration.pdf, a histogram of the build time for each + package, ordered by duration (longest first) +
  • +build.hist-name.pdf, a histogram of the build time for each + package, order by package name. +
  • +build.pie-packages.pdf, a pie chart of the build time per package +
  • +build.pie-steps.pdf, a pie chart of the global time spent in each + step of the packages build process. +

This graph-build target requires the Python Matplotlib and Numpy +libraries to be installed (python-matplotlib and python-numpy on +most distributions), and also the argparse module if you’re using a +Python version older than 2.7 (python-argparse on most +distributions).

By default, the output format for the graph is PDF, but a different +format can be selected using the BR2_GRAPH_OUT environment variable. The +only other format supported is PNG:

BR2_GRAPH_OUT=png make graph-build

8.10. Graphing the filesystem size contribution of packages

When your target system grows, it is sometimes useful to understand +how much each Buildroot package is contributing to the overall root +filesystem size. To help with such an analysis, Buildroot collects +data about files installed by each package and using this data, +generates a graph and CSV files detailing the size contribution of +the different packages.

To generate these data after a build, run:

make graph-size

This will generate:

  • +output/graphs/graph-size.pdf, a pie chart of the contribution of + each package to the overall root filesystem size +
  • +output/graphs/package-size-stats.csv, a CSV file giving the size + contribution of each package to the overall root filesystem size +
  • +output/graphs/file-size-stats.csv, a CSV file giving the size + contribution of each installed file to the package it belongs, and + to the overall filesystem size. +

This graph-size target requires the Python Matplotlib library to be +installed (python-matplotlib on most distributions), and also the +argparse module if you’re using a Python version older than 2.7 +(python-argparse on most distributions).

Just like for the duration graph, a BR2_GRAPH_OUT environment is +supported to adjust the output file format. See Section 8.8, “Graphing the dependencies between packages” +for details about this environment variable.

Note. The collected filesystem size data is only meaningful after a complete +clean rebuild. Be sure to run make clean all before using make +graph-size.

To compare the root filesystem size of two different Buildroot compilations, +for example after adjusting the configuration or when switching to another +Buildroot release, use the size-stats-compare script. It takes two +file-size-stats.csv files (produced by make graph-size) as input. +Refer to the help text of this script for more details:

utils/size-stats-compare -h

8.11. Integration with Eclipse

While a part of the embedded Linux developers like classical text +editors like Vim or Emacs, and command-line based interfaces, a number +of other embedded Linux developers like richer graphical interfaces to +do their development work. Eclipse being one of the most popular +Integrated Development Environment, Buildroot integrates with Eclipse +in order to ease the development work of Eclipse users.

Our integration with Eclipse simplifies the compilation, remote +execution and remote debugging of applications and libraries that are +built on top of a Buildroot system. It does not integrate the +Buildroot configuration and build processes themselves with +Eclipse. Therefore, the typical usage model of our Eclipse integration +would be:

  • +Configure your Buildroot system with make menuconfig, make + xconfig or any other configuration interface provided with + Buildroot. +
  • +Build your Buildroot system by running make. +
  • +Start Eclipse to develop, execute and debug your own custom + applications and libraries, that will rely on the libraries built + and installed by Buildroot. +

The Buildroot Eclipse integration installation process and usage is +described in detail at +https://github.com/mbats/eclipse-buildroot-bundle/wiki.

8.12. Advanced usage

8.12.1. Using the generated toolchain outside Buildroot

You may want to compile, for your target, your own programs or other +software that are not packaged in Buildroot. In order to do this you +can use the toolchain that was generated by Buildroot.

The toolchain generated by Buildroot is located by default in +output/host/. The simplest way to use it is to add +output/host/bin/ to your PATH environment variable and then to +use ARCH-linux-gcc, ARCH-linux-objdump, ARCH-linux-ld, etc.

It is possible to relocate the toolchain, this allows to distribute +the toolchain to other developers to build applications for your +target. To achieve this:

  • +run make sdk, which prepares the toolchain to be relocatable; +
  • +tarball the contents of the output/host directory; +
  • +distribute the resulting tarball. +

Once the toolchain is installed to the new location, the user must run +the relocate-sdk.sh script to make sure all paths are updated with +the new location.

8.12.2. Using gdb in Buildroot

Buildroot allows to do cross-debugging, where the debugger runs on the +build machine and communicates with gdbserver on the target to +control the execution of the program.

To achieve this:

  • +If you are using an internal toolchain (built by Buildroot), you + must enable BR2_PACKAGE_HOST_GDB, BR2_PACKAGE_GDB and + BR2_PACKAGE_GDB_SERVER. This ensures that both the cross gdb and + gdbserver get built, and that gdbserver gets installed to your target. +
  • +If you are using an external toolchain, you should enable + BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY, which will copy the + gdbserver included with the external toolchain to the target. If your + external toolchain does not have a cross gdb or gdbserver, it is also + possible to let Buildroot build them, by enabling the same options as + for the internal toolchain backend. +

Now, to start debugging a program called foo, you should run on the +target:

gdbserver :2345 foo

This will cause gdbserver to listen on TCP port 2345 for a connection +from the cross gdb.

Then, on the host, you should start the cross gdb using the following +command line:

<buildroot>/output/host/bin/<tuple>-gdb -x <buildroot>/output/staging/usr/share/buildroot/gdbinit foo

Of course, foo must be available in the current directory, built +with debugging symbols. Typically you start this command from the +directory where foo is built (and not from output/target/ as the +binaries in that directory are stripped).

The <buildroot>/output/staging/usr/share/buildroot/gdbinit file will tell the +cross gdb where to find the libraries of the target.

Finally, to connect to the target from the cross gdb:

(gdb) target remote <target ip address>:2345

8.12.3. Using ccache in Buildroot

ccache is a compiler cache. It stores the +object files resulting from each compilation process, and is able to +skip future compilation of the same source file (with same compiler +and same arguments) by using the pre-existing object files. When doing +almost identical builds from scratch a number of times, it can nicely +speed up the build process.

ccache support is integrated in Buildroot. You just have to enable +Enable compiler cache in Build options. This will automatically +build ccache and use it for every host and target compilation.

The cache is located in $HOME/.buildroot-ccache. It is stored +outside of Buildroot output directory so that it can be shared by +separate Buildroot builds. If you want to get rid of the cache, simply +remove this directory.

You can get statistics on the cache (its size, number of hits, +misses, etc.) by running make ccache-stats.

The make target ccache-options and the CCACHE_OPTIONS variable +provide more generic access to the ccache. For example

# set cache limit size
+make CCACHE_OPTIONS="--max-size=5G" ccache-options
+
+# zero statistics counters
+make CCACHE_OPTIONS="--zero-stats" ccache-options

ccache makes a hash of the source files and of the compiler options. +If a compiler option is different, the cached object file will not be +used. Many compiler options, however, contain an absolute path to the +staging directory. Because of this, building in a different output +directory would lead to many cache misses.

To avoid this issue, buildroot has the Use relative paths option +(BR2_CCACHE_USE_BASEDIR). This will rewrite all absolute paths that +point inside the output directory into relative paths. Thus, changing +the output directory no longer leads to cache misses.

A disadvantage of the relative paths is that they also end up to be +relative paths in the object file. Therefore, for example, the debugger +will no longer find the file, unless you cd to the output directory +first.

See the +ccache manual’s section on "Compiling in different directories" for +more details about this rewriting of absolute paths.

8.12.4. Location of downloaded packages

The various tarballs that are downloaded by Buildroot are all stored +in BR2_DL_DIR, which by default is the dl directory. If you want +to keep a complete version of Buildroot which is known to be working +with the associated tarballs, you can make a copy of this directory. +This will allow you to regenerate the toolchain and the target +filesystem with exactly the same versions.

If you maintain several Buildroot trees, it might be better to have a +shared download location. This can be achieved by pointing the +BR2_DL_DIR environment variable to a directory. If this is +set, then the value of BR2_DL_DIR in the Buildroot configuration is +overridden. The following line should be added to <~/.bashrc>.

 export BR2_DL_DIR=<shared download location>

The download location can also be set in the .config file, with the +BR2_DL_DIR option. Unlike most options in the .config file, this value +is overridden by the BR2_DL_DIR environment variable.

8.12.5. Package-specific make targets

Running make <package> builds and installs that particular package +and its dependencies.

For packages relying on the Buildroot infrastructure, there are +numerous special make targets that can be called independently like +this:

make <package>-<target>

The package build targets are (in the order they are executed):

command/target Description

source

Fetch the source (download the tarball, clone +the source repository, etc)

depends

Build and install all dependencies required to +build the package

extract

Put the source in the package build directory +(extract the tarball, copy the source, etc)

patch

Apply the patches, if any

configure

Run the configure commands, if any

build

Run the compilation commands

install-staging

target package: Run the installation of the package in the +staging directory, if necessary

install-target

target package: Run the installation of the package in the +target directory, if necessary

install

target package: Run the 2 previous installation commands

+

host package: Run the installation of the package in the host +directory

Additionally, there are some other useful make targets:

command/target Description

show-depends

Displays the dependencies required to build the +package

graph-depends

Generate a dependency graph of the package, in the +context of the current Buildroot configuration. See +this section +Section 8.8, “Graphing the dependencies between packages” for more details about dependency +graphs.

dirclean

Remove the whole package build directory

reinstall

Re-run the install commands

rebuild

Re-run the compilation commands - this only makes +sense when using the OVERRIDE_SRCDIR feature or when you modified a file +directly in the build directory

reconfigure

Re-run the configure commands, then rebuild - this only +makes sense when using the OVERRIDE_SRCDIR feature or when you modified a +file directly in the build directory

8.12.6. Using Buildroot during development

The normal operation of Buildroot is to download a tarball, extract +it, configure, compile and install the software component found inside +this tarball. The source code is extracted in +output/build/<package>-<version>, which is a temporary directory: +whenever make clean is used, this directory is entirely removed, and +re-created at the next make invocation. Even when a Git or +Subversion repository is used as the input for the package source +code, Buildroot creates a tarball out of it, and then behaves as it +normally does with tarballs.

This behavior is well-suited when Buildroot is used mainly as an +integration tool, to build and integrate all the components of an +embedded Linux system. However, if one uses Buildroot during the +development of certain components of the system, this behavior is not +very convenient: one would instead like to make a small change to the +source code of one package, and be able to quickly rebuild the system +with Buildroot.

Making changes directly in output/build/<package>-<version> is not +an appropriate solution, because this directory is removed on make +clean.

Therefore, Buildroot provides a specific mechanism for this use case: +the <pkg>_OVERRIDE_SRCDIR mechanism. Buildroot reads an override +file, which allows the user to tell Buildroot the location of the +source for certain packages. By default this override file is named +local.mk and located in the top directory of the Buildroot source +tree, but a different location can be specified through the +BR2_PACKAGE_OVERRIDE_FILE configuration option.

In this override file, Buildroot expects to find lines of the form:

<pkg1>_OVERRIDE_SRCDIR = /path/to/pkg1/sources
+<pkg2>_OVERRIDE_SRCDIR = /path/to/pkg2/sources

For example:

LINUX_OVERRIDE_SRCDIR = /home/bob/linux/
+BUSYBOX_OVERRIDE_SRCDIR = /home/bob/busybox/

When Buildroot finds that for a given package, an +<pkg>_OVERRIDE_SRCDIR has been defined, it will no longer attempt to +download, extract and patch the package. Instead, it will directly use +the source code available in the specified directory and make clean +will not touch this directory. This allows to point Buildroot to your +own directories, that can be managed by Git, Subversion, or any other +version control system. To achieve this, Buildroot will use rsync to +copy the source code of the component from the specified +<pkg>_OVERRIDE_SRCDIR to output/build/<package>-custom/.

This mechanism is best used in conjunction with the make +<pkg>-rebuild and make <pkg>-reconfigure targets. A make +<pkg>-rebuild all sequence will rsync the source code from +<pkg>_OVERRIDE_SRCDIR to output/build/<package>-custom (thanks to +rsync, only the modified files are copied), and restart the build +process of just this package.

In the example of the linux package above, the developer can then +make a source code change in /home/bob/linux and then run:

make linux-rebuild all

and in a matter of seconds gets the updated Linux kernel image in +output/images. Similarly, a change can be made to the BusyBox source +code in /home/bob/busybox, and after:

make busybox-rebuild all

the root filesystem image in output/images contains the updated +BusyBox.

Chapter 9. Project-specific customization

Typical actions you may need to perform for a given project are:

  • +configuring Buildroot (including build options and toolchain, + bootloader, kernel, package and filesystem image type selection) +
  • +configuring other components, like the Linux kernel and BusyBox +
  • +customizing the generated target filesystem +

    • +adding or overwriting files on the target filesystem (using + BR2_ROOTFS_OVERLAY) +
    • +modifying or deleting files on the target filesystem (using + BR2_ROOTFS_POST_BUILD_SCRIPT) +
    • +running arbitrary commands prior to generating the filesystem image + (using BR2_ROOTFS_POST_BUILD_SCRIPT) +
    • +setting file permissions and ownership (using + BR2_ROOTFS_DEVICE_TABLE) +
    • +adding custom devices nodes (using + BR2_ROOTFS_STATIC_DEVICE_TABLE) +
  • +adding custom user accounts (using BR2_ROOTFS_USERS_TABLES) +
  • +running arbitrary commands after generating the filesystem image + (using BR2_ROOTFS_POST_IMAGE_SCRIPT) +
  • +adding project-specific patches to some packages (using + BR2_GLOBAL_PATCH_DIR) +
  • +adding project-specific packages +

An important note regarding such project-specific customizations: +please carefully consider which changes are indeed project-specific and +which changes are also useful to developers outside your project. The +Buildroot community highly recommends and encourages the upstreaming of +improvements, packages and board support to the official Buildroot +project. Of course, it is sometimes not possible or desirable to +upstream because the changes are highly specific or proprietary.

This chapter describes how to make such project-specific customizations +in Buildroot and how to store them in a way that you can build the same +image in a reproducible way, even after running make clean. By +following the recommended strategy, you can even use the same Buildroot +tree to build multiple distinct projects!

9.1. Recommended directory structure

When customizing Buildroot for your project, you will be creating one or +more project-specific files that need to be stored somewhere. While most +of these files could be placed in any location as their path is to be +specified in the Buildroot configuration, the Buildroot developers +recommend a specific directory structure which is described in this +section.

Orthogonal to this directory structure, you can choose where you place +this structure itself: either inside the Buildroot tree, or outside of +it using a br2-external tree. Both options are valid, the choice is up +to you.

+-- board/
+|   +-- <company>/
+|       +-- <boardname>/
+|           +-- linux.config
+|           +-- busybox.config
+|           +-- <other configuration files>
+|           +-- post_build.sh
+|           +-- post_image.sh
+|           +-- rootfs_overlay/
+|           |   +-- etc/
+|           |   +-- <some file>
+|           +-- patches/
+|               +-- foo/
+|               |   +-- <some patch>
+|               +-- libbar/
+|                   +-- <some other patches>
+|
++-- configs/
+|   +-- <boardname>_defconfig
+|
++-- package/
+|   +-- <company>/
+|       +-- Config.in (if not using a br2-external tree)
+|       +-- <company>.mk (if not using a br2-external tree)
+|       +-- package1/
+|       |    +-- Config.in
+|       |    +-- package1.mk
+|       +-- package2/
+|           +-- Config.in
+|           +-- package2.mk
+|
++-- Config.in (if using a br2-external tree)
++-- external.mk (if using a br2-external tree)

Details on the files shown above are given further in this chapter.

Note: if you choose to place this structure outside of the Buildroot +tree but in a br2-external tree, the <company> and possibly <boardname> +components may be superfluous and can be left out.

9.1.1. Implementing layered customizations

It is quite common for a user to have several related projects that partly +need the same customizations. Instead of duplicating these +customizations for each project, it is recommended to use a layered +customization approach, as explained in this section.

Almost all of the customization methods available in Buildroot, like +post-build scripts and root filesystem overlays, accept a +space-separated list of items. The specified items are always treated in +order, from left to right. By creating more than one such item, one for +the common customizations and another one for the really +project-specific customizations, you can avoid unnecessary duplication. +Each layer is typically embodied by a separate directory inside +board/<company>/. Depending on your projects, you could even introduce +more than two layers.

An example directory structure for where a user has two customization +layers common and fooboard is:

+-- board/
+    +-- <company>/
+        +-- common/
+        |   +-- post_build.sh
+        |   +-- rootfs_overlay/
+        |   |   +-- ...
+        |   +-- patches/
+        |       +-- ...
+        |
+        +-- fooboard/
+            +-- linux.config
+            +-- busybox.config
+            +-- <other configuration files>
+            +-- post_build.sh
+            +-- rootfs_overlay/
+            |   +-- ...
+            +-- patches/
+                +-- ...

For example, if the user has the BR2_GLOBAL_PATCH_DIR configuration +option set as:

BR2_GLOBAL_PATCH_DIR="board/<company>/common/patches board/<company>/fooboard/patches"

then first the patches from the common layer would be applied, +followed by the patches from the fooboard layer.

9.2. Keeping customizations outside of Buildroot

As already briefly mentioned in Section 9.1, “Recommended directory structure”, you can +place project-specific customizations in two locations:

  • +directly within the Buildroot tree, typically maintaining them using + branches in a version control system so that upgrading to a newer + Buildroot release is easy. +
  • +outside of the Buildroot tree, using the br2-external mechanism. + This mechanism allows to keep package recipes, board support and + configuration files outside of the Buildroot tree, while still + having them nicely integrated in the build logic. We call this + location a br2-external tree. This section explains how to use + the br2-external mechanism and what to provide in a br2-external + tree. +

One can tell Buildroot to use one or more br2-external trees by setting +the BR2_EXTERNAL make variable set to the path(s) of the br2-external +tree(s) to use. It can be passed to any Buildroot make invocation. It +is automatically saved in the hidden .br-external.mk file in the output +directory. Thanks to this, there is no need to pass BR2_EXTERNAL at +every make invocation. It can however be changed at any time by +passing a new value, and can be removed by passing an empty value.

Note. The path to a br2-external tree can be either absolute or relative. +If it is passed as a relative path, it is important to note that it is +interpreted relative to the main Buildroot source directory, not to +the Buildroot output directory.

Note: If using an br2-external tree from before Buildroot 2016.11, you need to +convert it before you can use it with Buildroot 2016.11 onward. See +Section 25.1, “Migrating to 2016.11” for help on doing so.

Some examples:

buildroot/ $ make BR2_EXTERNAL=/path/to/foo menuconfig

From now on, definitions from the /path/to/foo br2-external tree +will be used:

buildroot/ $ make
+buildroot/ $ make legal-info

We can switch to another br2-external tree at any time:

buildroot/ $ make BR2_EXTERNAL=/where/we/have/bar xconfig

We can also use multiple br2-external trees:

buildroot/ $ make BR2_EXTERNAL=/path/to/foo:/where/we/have/bar menuconfig

Or disable the usage of any br2-external tree:

buildroot/ $ make BR2_EXTERNAL= xconfig

9.2.1. Layout of a br2-external tree

A br2-external tree must contain at least those three files, described +in the following chapters:

  • +external.desc +
  • +external.mk +
  • +Config.in +

Apart from those mandatory files, there may be additional and optional +content that may be present in a br2-external tree, like the configs/ +directory. They are described in the following chapters as well.

A complete example br2-external tree layout is also described later.

The external.desc file

That file describes the br2-external tree: the name and description +for that br2-external tree.

The format for this file is line based, with each line starting by a +keyword, followed by a colon and one or more spaces, followed by the +value assigned to that keyword. There are two keywords currently +recognised:

  • +name, mandatory, defines the name for that br2-external tree. That + name must only use ASCII characters in the set [A-Za-z0-9_]; any + other character is forbidden. Buildroot sets the variable + BR2_EXTERNAL_$(NAME)_PATH to the absolute path of the br2-external + tree, so that you can use it to refer to your br2-external tree. This + variable is available both in Kconfig, so you can use it to source your + Kconfig files (see below) and in the Makefile, so that you can use it + to include other Makefiles (see below) or refer to other files (like + data files) from your br2-external tree. +

    Note: Since it is possible to use multiple br2-external trees at once, this + name is used by Buildroot to generate variables for each of those trees. + That name is used to identify your br2-external tree, so try to come up + with a name that really describes your br2-external tree, in order for + it to be relatively unique, so that it does not clash with another name + from another br2-external tree, especially if you are planning on + somehow sharing your br2-external tree with third parties or using + br2-external trees from third parties.

  • +desc, optional, provides a short description for that br2-external + tree. It shall fit on a single line, is mostly free-form (see below), + and is used when displaying information about a br2-external tree (e.g. + above the list of defconfig files, or as the prompt in the menuconfig); + as such, it should relatively brief (40 chars is probably a good upper + limit). The description is available in the BR2_EXTERNAL_$(NAME)_DESC + variable. +

Examples of names and the corresponding BR2_EXTERNAL_$(NAME)_PATH +variables:

  • +FOOBR2_EXTERNAL_FOO_PATH +
  • +BAR_42BR2_EXTERNAL_BAR_42_PATH +

In the following examples, it is assumed the name to be set to BAR_42.

Note: Both BR2_EXTERNAL_$(NAME)_PATH and BR2_EXTERNAL_$(NAME)_DESC are + available in the Kconfig files and the Makefiles. They are also + exported in the environment so are available in post-build, post-image + and in-fakeroot scripts.

The Config.in and external.mk files

Those files (which may each be empty) can be used to define package +recipes (i.e. foo/Config.in and foo/foo.mk like for packages bundled +in Buildroot itself) or other custom configuration options or make logic.

Buildroot automatically includes the Config.in from each br2-external +tree to make it appear in the top-level configuration menu, and includes +the external.mk from each br2-external tree with the rest of the +makefile logic.

The main usage of this is to store package recipes. The recommended way +to do this is to write a Config.in file that looks like:

source "$BR2_EXTERNAL_BAR_42_PATH/package/package1/Config.in"
+source "$BR2_EXTERNAL_BAR_42_PATH/package/package2/Config.in"

Then, have an external.mk file that looks like:

include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk))

And then in $(BR2_EXTERNAL_BAR_42_PATH)/package/package1 and +$(BR2_EXTERNAL_BAR_42_PATH)/package/package2 create normal +Buildroot package recipes, as explained in Chapter 17, Adding new packages to Buildroot. +If you prefer, you can also group the packages in subdirectories +called <boardname> and adapt the above paths accordingly.

You can also define custom configuration options in Config.in and +custom make logic in external.mk.

The configs/ directory

One can store Buildroot defconfigs in the configs subdirectory of +the br2-external tree. Buildroot will automatically show them in the +output of make list-defconfigs and allow them to be loaded with the +normal make <name>_defconfig command. They will be visible in the +make list-defconfigs output, below an External configs label that +contains the name of the br2-external tree they are defined in.

Note: If a defconfig file is present in more than one br2-external tree, then +the one from the last br2-external tree is used. It is thus possible +to override a defconfig bundled in Buildroot or another br2-external +tree.

Free-form content

One can store all the board-specific configuration files there, such +as the kernel configuration, the root filesystem overlay, or any other +configuration file for which Buildroot allows to set the location (by +using the BR2_EXTERNAL_$(NAME)_PATH variable). For example, you +could set the paths to a global patch directory, to a rootfs overlay +and to the kernel configuration file as follows (e.g. by running +make menuconfig and filling in these options):

BR2_GLOBAL_PATCH_DIR=$(BR2_EXTERNAL_BAR_42_PATH)/patches/
+BR2_ROOTFS_OVERLAY=$(BR2_EXTERNAL_BAR_42_PATH)/board/<boardname>/overlay/
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=$(BR2_EXTERNAL_BAR_42_PATH)/board/<boardname>/kernel.config

Example layout

Here is an example layout using all features of br2-external (the sample +content is shown for the file above it, when it is relevant to explain +the br2-external tree; this is all entirely made up just for the sake of +illustration, of course):

/path/to/br2-ext-tree/
+  |- external.desc
+  |     |name: BAR_42
+  |     |desc: Example br2-external tree
+  |     `----
+  |
+  |- Config.in
+  |     |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-1/Config.in"
+  |     |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/Config.in"
+  |     |
+  |     |config BAR_42_FLASH_ADDR
+  |     |    hex "my-board flash address"
+  |     |    default 0x10AD
+  |     `----
+  |
+  |- external.mk
+  |     |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk))
+  |     |
+  |     |flash-my-board:
+  |     |    $(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/flash-image \
+  |     |        --image $(BINARIES_DIR)/image.bin \
+  |     |        --address $(BAR_42_FLASH_ADDR)
+  |     `----
+  |
+  |- package/pkg-1/Config.in
+  |     |config BR2_PACKAGE_PKG_1
+  |     |    bool "pkg-1"
+  |     |    help
+  |     |      Some help about pkg-1
+  |     `----
+  |- package/pkg-1/pkg-1.hash
+  |- package/pkg-1/pkg-1.mk
+  |     |PKG_1_VERSION = 1.2.3
+  |     |PKG_1_SITE = /some/where/to/get/pkg-1
+  |     |PKG_1_LICENSE = blabla
+  |     |
+  |     |define PKG_1_INSTALL_INIT_SYSV
+  |     |    $(INSTALL) -D -m 0755 $(PKG_1_PKGDIR)/S99my-daemon \
+  |     |                          $(TARGET_DIR)/etc/init.d/S99my-daemon
+  |     |endef
+  |     |
+  |     |$(eval $(autotools-package))
+  |     `----
+  |- package/pkg-1/S99my-daemon
+  |
+  |- package/pkg-2/Config.in
+  |- package/pkg-2/pkg-2.hash
+  |- package/pkg-2/pkg-2.mk
+  |
+  |- configs/my-board_defconfig
+  |     |BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_BAR_42_PATH)/patches/"
+  |     |BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/overlay/"
+  |     |BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/post-image.sh"
+  |     |BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/kernel.config"
+  |     `----
+  |
+  |- patches/linux/0001-some-change.patch
+  |- patches/linux/0002-some-other-change.patch
+  |- patches/busybox/0001-fix-something.patch
+  |
+  |- board/my-board/kernel.config
+  |- board/my-board/overlay/var/www/index.html
+  |- board/my-board/overlay/var/www/my.css
+  |- board/my-board/flash-image
+  `- board/my-board/post-image.sh
+        |#!/bin/sh
+        |generate-my-binary-image \
+        |    --root ${BINARIES_DIR}/rootfs.tar \
+        |    --kernel ${BINARIES_DIR}/zImage \
+        |    --dtb ${BINARIES_DIR}/my-board.dtb \
+        |    --output ${BINARIES_DIR}/image.bin
+        `----

The br2-external tree will then be visible in the menuconfig (with +the layout expanded):

External options  --->
+    *** Example br2-external tree (in /path/to/br2-ext-tree/)
+    [ ] pkg-1
+    [ ] pkg-2
+    (0x10AD) my-board flash address

If you are using more than one br2-external tree, it would look like +(with the layout expanded and the second one with name FOO_27 but no +desc: field in external.desc):

External options  --->
+    Example br2-external tree  --->
+        *** Example br2-external tree (in /path/to/br2-ext-tree)
+        [ ] pkg-1
+        [ ] pkg-2
+        (0x10AD) my-board flash address
+    FOO_27  --->
+        *** FOO_27 (in /path/to/another-br2-ext)
+        [ ] foo
+        [ ] bar

9.3. Storing the Buildroot configuration

The Buildroot configuration can be stored using the command + make savedefconfig.

This strips the Buildroot configuration down by removing configuration +options that are at their default value. The result is stored in a file +called defconfig. If you want to save it in another place, change the +BR2_DEFCONFIG option in the Buildroot configuration itself, or call +make with make savedefconfig BR2_DEFCONFIG=<path-to-defconfig>.

The recommended place to store this defconfig is +configs/<boardname>_defconfig. If you follow this recommendation, the +configuration will be listed in make help and can be set again by +running make <boardname>_defconfig.

Alternatively, you can copy the file to any other place and rebuild with +make defconfig BR2_DEFCONFIG=<path-to-defconfig-file>.

9.4. Storing the configuration of other components

The configuration files for BusyBox, the Linux kernel, Barebox, U-Boot +and uClibc should be stored as well if changed. For each of these +components, a Buildroot configuration option exists to point to an input +configuration file, e.g. BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE. To store +their configuration, set these configuration options to a path where you +want to save the configuration files, and then use the helper targets +described below to actually store the configuration.

As explained in Section 9.1, “Recommended directory structure”, the recommended path to +store these configuration files is +board/<company>/<boardname>/foo.config.

Make sure that you create a configuration file before changing +the BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE etc. options. Otherwise, +Buildroot will try to access this config file, which doesn’t exist +yet, and will fail. You can create the configuration file by running +make linux-menuconfig etc.

Buildroot provides a few helper targets to make the saving of +configuration files easier.

  • +make linux-update-defconfig saves the linux configuration to the + path specified by BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE. It + simplifies the config file by removing default values. However, + this only works with kernels starting from 2.6.33. For earlier + kernels, use make linux-update-config. +
  • +make busybox-update-config saves the busybox configuration to the + path specified by BR2_PACKAGE_BUSYBOX_CONFIG. +
  • +make uclibc-update-config saves the uClibc configuration to the + path specified by BR2_UCLIBC_CONFIG. +
  • +make barebox-update-defconfig saves the barebox configuration to the + path specified by BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE. +
  • +make uboot-update-defconfig saves the U-Boot configuration to the + path specified by BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE. +
  • +For at91bootstrap3, no helper exists so you have to copy the config + file manually to BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE. +

9.5. Customizing the generated target filesystem

Besides changing the configuration through make *config, +there are a few other ways to customize the resulting target filesystem.

The two recommended methods, which can co-exist, are root filesystem +overlay(s) and post build script(s).

+Root filesystem overlays (BR2_ROOTFS_OVERLAY) +

A filesystem overlay is a tree of files that is copied directly + over the target filesystem after it has been built. To enable this + feature, set config option BR2_ROOTFS_OVERLAY (in the System + configuration menu) to the root of the overlay. You can even specify + multiple overlays, space-separated. If you specify a relative path, + it will be relative to the root of the Buildroot tree. Hidden + directories of version control systems, like .git, .svn, .hg, + etc., files called .empty and files ending in ~ are excluded from + the copy.

As shown in Section 9.1, “Recommended directory structure”, the recommended path for + this overlay is board/<company>/<boardname>/rootfs-overlay.

+Post-build scripts (BR2_ROOTFS_POST_BUILD_SCRIPT) +

Post-build scripts are shell scripts called after Buildroot builds + all the selected software, but before the rootfs images are + assembled. To enable this feature, specify a space-separated list of + post-build scripts in config option BR2_ROOTFS_POST_BUILD_SCRIPT (in + the System configuration menu). If you specify a relative path, it + will be relative to the root of the Buildroot tree.

Using post-build scripts, you can remove or modify any file in your + target filesystem. You should, however, use this feature with care. + Whenever you find that a certain package generates wrong or unneeded + files, you should fix that package rather than work around it with some + post-build cleanup scripts.

As shown in Section 9.1, “Recommended directory structure”, the recommended path for + this script is board/<company>/<boardname>/post_build.sh.

The post-build scripts are run with the main Buildroot tree as current + working directory. The path to the target filesystem is passed as the + first argument to each script. If the config option + BR2_ROOTFS_POST_SCRIPT_ARGS is not empty, these arguments will be + passed to the script too. All the scripts will be passed the exact + same set of arguments, it is not possible to pass different sets of + arguments to each script.

In addition, you may also use these environment variables:

  • +BR2_CONFIG: the path to the Buildroot .config file +
  • +HOST_DIR, STAGING_DIR, TARGET_DIR: see + Section 17.5.2, “generic-package reference” +
  • +BUILD_DIR: the directory where packages are extracted and built +
  • +BINARIES_DIR: the place where all binary files (aka images) are + stored +
  • +BASE_DIR: the base output directory +

Below three more methods of customizing the target filesystem are +described, but they are not recommended.

+Direct modification of the target filesystem +

For temporary modifications, you can modify the target filesystem + directly and rebuild the image. The target filesystem is available + under output/target/. After making your changes, run make to + rebuild the target filesystem image.

This method allows you to do anything to the target filesystem, but if + you need to clean your Buildroot tree using make clean, these + changes will be lost. Such cleaning is necessary in several cases, + refer to Section 8.2, “Understanding when a full rebuild is necessary” for details. This solution is therefore + only useful for quick tests: changes do not survive the make clean + command. Once you have validated your changes, you should make sure + that they will persist after a make clean, using a root filesystem + overlay or a post-build script.

+Custom target skeleton (BR2_ROOTFS_SKELETON_CUSTOM) +

The root filesystem image is created from a target skeleton, on top of + which all packages install their files. The skeleton is copied to the + target directory output/target before any package is built and + installed. The default target skeleton provides the standard Unix + filesystem layout and some basic init scripts and configuration files.

If the default skeleton (available under system/skeleton) does not + match your needs, you would typically use a root filesystem overlay or + post-build script to adapt it. However, if the default skeleton is + entirely different than what you need, using a custom skeleton may be + more suitable.

To enable this feature, enable config option + BR2_ROOTFS_SKELETON_CUSTOM and set BR2_ROOTFS_SKELETON_CUSTOM_PATH + to the path of your custom skeleton. Both options are available in the + System configuration menu. If you specify a relative path, it will + be relative to the root of the Buildroot tree.

This method is not recommended because it duplicates the entire + skeleton, which prevents taking advantage of the fixes or improvements + brought to the default skeleton in later Buildroot releases.

+Post-fakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) +

When aggregating the final images, some parts of the process requires + root rights: creating device nodes in /dev, setting permissions or + ownership to files and directories… To avoid requiring actual root + rights, Buildroot uses fakeroot to simulate root rights. This is not + a complete substitute for actually being root, but is enough for what + Buildroot needs.

Post-fakeroot scripts are shell scripts that are called at the end of + the fakeroot phase, right before the filesystem image generator is + called. As such, they are called in the fakeroot context.

Post-fakeroot scripts can be useful in case you need to tweak the + filesystem to do modifications that are usually only available to the + root user.

Note: It is recommended to use the existing mechanisms to set file permissions + or create entries in /dev (see Section 9.5.1, “Setting file permissions and ownership and adding custom devices nodes”) or + to create users (see Section 9.6, “Adding custom user accounts”)

Note: The difference between post-build scripts (above) and fakeroot scripts, + is that post-build scripts are not called in the fakeroot context.

Note;. Using fakeroot is not an absolute substitute for actually being root. + fakeroot only ever fakes the file access rights and types (regular, + block-or-char device…) and uid/gid; these are emulated in-memory.

9.5.1. Setting file permissions and ownership and adding custom devices nodes

Sometimes it is needed to set specific permissions or ownership on files +or device nodes. For example, certain files may need to be owned by +root. Since the post-build scripts are not run as root, you cannot do +such changes from there unless you use an explicit fakeroot from the +post-build script.

Instead, Buildroot provides support for so-called permission tables. +To use this feature, set config option BR2_ROOTFS_DEVICE_TABLE to a +space-separated list of permission tables, regular text files following +the makedev syntax +Chapter 23, Makedev syntax documentation.

If you are using a static device table (i.e. not using devtmpfs, +mdev, or (e)udev) then you can add device nodes using the same +syntax, in so-called device tables. To use this feature, set config +option BR2_ROOTFS_STATIC_DEVICE_TABLE to a space-separated list of +device tables.

As shown in Section 9.1, “Recommended directory structure”, the recommended location for +such files is board/<company>/<boardname>/.

It should be noted that if the specific permissions or device nodes are +related to a specific application, you should set variables +FOO_PERMISSIONS and FOO_DEVICES in the package’s .mk file instead +(see Section 17.5.2, “generic-package reference”).

9.6. Adding custom user accounts

Sometimes it is needed to add specific users in the target system. +To cover this requirement, Buildroot provides support for so-called +users tables. To use this feature, set config option +BR2_ROOTFS_USERS_TABLES to a space-separated list of users tables, +regular text files following the makeusers syntax +Chapter 24, Makeusers syntax documentation.

As shown in Section 9.1, “Recommended directory structure”, the recommended location for +such files is board/<company>/<boardname>/.

It should be noted that if the custom users are related to a specific +application, you should set variable FOO_USERS in the package’s .mk +file instead (see Section 17.5.2, “generic-package reference”).

9.7. Customization after the images have been created

While post-build scripts (Section 9.5, “Customizing the generated target filesystem”) are run before +building the filesystem image, kernel and bootloader, post-image +scripts can be used to perform some specific actions after all images +have been created.

Post-image scripts can for example be used to automatically extract your +root filesystem tarball in a location exported by your NFS server, or +to create a special firmware image that bundles your root filesystem and +kernel image, or any other custom action required for your project.

To enable this feature, specify a space-separated list of post-image +scripts in config option BR2_ROOTFS_POST_IMAGE_SCRIPT (in the System +configuration menu). If you specify a relative path, it will be +relative to the root of the Buildroot tree.

Just like post-build scripts, post-image scripts are run with the main +Buildroot tree as current working directory. The path to the images +output directory is passed as the first argument to each script. If the +config option BR2_ROOTFS_POST_SCRIPT_ARGS is not empty, these +arguments will be passed to the script too. All the scripts will be +passed the exact same set of arguments, it is not possible to pass +different sets of arguments to each script.

Again just like for the post-build scripts, the scripts have access to +the environment variables BR2_CONFIG, HOST_DIR, STAGING_DIR, +TARGET_DIR, BUILD_DIR, BINARIES_DIR and BASE_DIR.

The post-image scripts will be executed as the user that executes +Buildroot, which should normally not be the root user. Therefore, any +action requiring root permissions in one of these scripts will require +special handling (usage of fakeroot or sudo), which is left to the +script developer.

9.8. Adding project-specific patches

It is sometimes useful to apply extra patches to packages - on top of +those provided in Buildroot. This might be used to support custom +features in a project, for example, or when working on a new +architecture.

The BR2_GLOBAL_PATCH_DIR configuration option can be used to specify +a space separated list of one or more directories containing package +patches.

For a specific version <packageversion> of a specific package +<packagename>, patches are applied from BR2_GLOBAL_PATCH_DIR as +follows:

  1. +For every directory - <global-patch-dir> - that exists in + BR2_GLOBAL_PATCH_DIR, a <package-patch-dir> will be determined as + follows: +

    • +<global-patch-dir>/<packagename>/<packageversion>/ if the + directory exists. +
    • +Otherwise, <global-patch-dir>/<packagename> if the directory + exists. +
  2. +Patches will then be applied from a <package-patch-dir> as + follows: +

    • +If a series file exists in the package directory, then patches are + applied according to the series file; +
    • +Otherwise, patch files matching *.patch are applied in + alphabetical order. So, to ensure they are applied in the right + order, it is highly recommended to name the patch files like this: + <number>-<description>.patch, where <number> refers to the + apply order. +

For information about how patches are applied for a package, see +Section 18.2, “How patches are applied”

The BR2_GLOBAL_PATCH_DIR option is the preferred method for +specifying a custom patch directory for packages. It can be used to +specify a patch directory for any package in buildroot. It should also +be used in place of the custom patch directory options that are +available for packages such as U-Boot and Barebox. By doing this, it +will allow a user to manage their patches from one top-level +directory.

The exception to BR2_GLOBAL_PATCH_DIR being the preferred method for +specifying custom patches is BR2_LINUX_KERNEL_PATCH. +BR2_LINUX_KERNEL_PATCH should be used to specify kernel patches that +are available at an URL. Note: BR2_LINUX_KERNEL_PATCH specifies kernel +patches that are applied after patches available in BR2_GLOBAL_PATCH_DIR, +as it is done from a post-patch hook of the Linux package.

9.9. Adding project-specific packages

In general, any new package should be added directly in the package +directory and submitted to the Buildroot upstream project. How to add +packages to Buildroot in general is explained in full detail in +Chapter 17, Adding new packages to Buildroot and will not be repeated here. However, your +project may need some proprietary packages that cannot be upstreamed. +This section will explain how you can keep such project-specific +packages in a project-specific directory.

As shown in Section 9.1, “Recommended directory structure”, the recommended location for +project-specific packages is package/<company>/. If you are using the +br2-external tree feature (see Section 9.2, “Keeping customizations outside of Buildroot”) the recommended +location is to put them in a sub-directory named package/ in your +br2-external tree.

However, Buildroot will not be aware of the packages in this location, +unless we perform some additional steps. As explained in +Chapter 17, Adding new packages to Buildroot, a package in Buildroot basically consists of two +files: a .mk file (describing how to build the package) and a +Config.in file (describing the configuration options for this +package).

Buildroot will automatically include the .mk files in first-level +subdirectories of the package directory (using the pattern +package/*/*.mk). If we want Buildroot to include .mk files from +deeper subdirectories (like package/<company>/package1/) then we +simply have to add a .mk file in a first-level subdirectory that +includes these additional .mk files. Therefore, create a file +package/<company>/<company>.mk with following contents (assuming you +have only one extra directory level below package/<company>/):

include $(sort $(wildcard package/<company>/*/*.mk))

For the Config.in files, create a file package/<company>/Config.in +that includes the Config.in files of all your packages. An exhaustive +list has to be provided since wildcards are not supported in the source command of kconfig. +For example:

source "package/<company>/package1/Config.in"
+source "package/<company>/package2/Config.in"

Include this new file package/<company>/Config.in from +package/Config.in, preferably in a company-specific menu to make +merges with future Buildroot versions easier.

If using a br2-external tree, refer to Section 9.2, “Keeping customizations outside of Buildroot” for how +to fill in those files.

9.10. Quick guide to storing your project-specific customizations

Earlier in this chapter, the different methods for making +project-specific customizations have been described. This section will +now summarize all this by providing step-by-step instructions to storing your +project-specific customizations. Clearly, the steps that are not relevant to +your project can be skipped.

  1. +make menuconfig to configure toolchain, packages and kernel. +
  2. +make linux-menuconfig to update the kernel config, similar for + other configuration like busybox, uclibc, … +
  3. +mkdir -p board/<manufacturer>/<boardname> +
  4. +Set the following options to board/<manufacturer>/<boardname>/<package>.config + (as far as they are relevant): +

    • +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE +
    • +BR2_PACKAGE_BUSYBOX_CONFIG +
    • +BR2_UCLIBC_CONFIG +
    • +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE +
    • +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE +
    • +BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE +
  5. +Write the configuration files: +

    • +make linux-update-defconfig +
    • +make busybox-update-config +
    • +make uclibc-update-config +
    • +cp <output>/build/at91bootstrap3-*/.config + board/<manufacturer>/<boardname>/at91bootstrap3.config +
    • +make barebox-update-defconfig +
    • +make uboot-update-defconfig +
  6. +Create board/<manufacturer>/<boardname>/rootfs-overlay/ and fill it + with additional files you need on your rootfs, e.g. + board/<manufacturer>/<boardname>/rootfs-overlay/etc/inittab. + Set BR2_ROOTFS_OVERLAY + to board/<manufacturer>/<boardname>/rootfs-overlay. +
  7. +Create a post-build script + board/<manufacturer>/<boardname>/post_build.sh. Set + BR2_ROOTFS_POST_BUILD_SCRIPT to + board/<manufacturer>/<boardname>/post_build.sh +
  8. +If additional setuid permissions have to be set or device nodes have + to be created, create board/<manufacturer>/<boardname>/device_table.txt + and add that path to BR2_ROOTFS_DEVICE_TABLE. +
  9. +If additional user accounts have to be created, create + board/<manufacturer>/<boardname>/users_table.txt and add that path + to BR2_ROOTFS_USERS_TABLES. +
  10. +To add custom patches to certain packages, set BR2_GLOBAL_PATCH_DIR + to board/<manufacturer>/<boardname>/patches/ and add your patches + for each package in a subdirectory named after the package. Each + patch should be called <packagename>-<num>-<description>.patch. +
  11. +Specifically for the Linux kernel, there also exists the option + BR2_LINUX_KERNEL_PATCH with as main advantage that it can also + download patches from a URL. If you do not need this, + BR2_GLOBAL_PATCH_DIR is preferred. U-Boot, Barebox, at91bootstrap + and at91bootstrap3 also have separate options, but these do not + provide any advantage over BR2_GLOBAL_PATCH_DIR and will likely be + removed in the future. +
  12. +If you need to add project-specific packages, create + package/<manufacturer>/ and place your packages in that + directory. Create an overall <manufacturer>.mk file that + includes the .mk files of all your packages. Create an overall + Config.in file that sources the Config.in files of all your + packages. Include this Config.in file from Buildroot’s + package/Config.in file. +
  13. +make savedefconfig to save the buildroot configuration. +
  14. +cp defconfig configs/<boardname>_defconfig +

Chapter 10. Frequently Asked Questions & Troubleshooting

10.1. The boot hangs after Starting network…

If the boot process seems to hang after the following messages +(messages not necessarily exactly similar, depending on the list of +packages selected):

Freeing init memory: 3972K
+Initializing random number generator... done.
+Starting network...
+Starting dropbear sshd: generating rsa key... generating dsa key... OK

then it means that your system is running, but didn’t start a shell on +the serial console. In order to have the system start a shell on your +serial console, you have to go into the Buildroot configuration, in +System configuration, modify Run a getty (login prompt) after boot +and set the appropriate port and baud rate in the getty options +submenu. This will automatically tune the /etc/inittab file of the +generated system so that a shell starts on the correct serial port.

10.2. Why is there no compiler on the target?

It has been decided that support for the native compiler on the +target would be stopped from the Buildroot-2012.11 release because:

  • +this feature was neither maintained nor tested, and often broken; +
  • +this feature was only available for Buildroot toolchains; +
  • +Buildroot mostly targets small or very small target hardware + with limited resource onboard (CPU, ram, mass-storage), for which + compiling on the target does not make much sense; +
  • +Buildroot aims at easing the cross-compilation, making native + compilation on the target unnecessary. +

If you need a compiler on your target anyway, then Buildroot is not +suitable for your purpose. In such case, you need a real +distribution and you should opt for something like:

10.3. Why are there no development files on the target?

Since there is no compiler available on the target (see +Section 10.2, “Why is there no compiler on the target?”), it does not make sense to waste +space with headers or static libraries.

Therefore, those files are always removed from the target since the +Buildroot-2012.11 release.

10.4. Why is there no documentation on the target?

Because Buildroot mostly targets small or very small target +hardware with limited resource onboard (CPU, ram, mass-storage), it +does not make sense to waste space with the documentation data.

If you need documentation data on your target anyway, then Buildroot +is not suitable for your purpose, and you should look for a real +distribution (see: Section 10.2, “Why is there no compiler on the target?”).

10.5. Why are some packages not visible in the Buildroot config menu?

If a package exists in the Buildroot tree and does not appear in the +config menu, this most likely means that some of the package’s +dependencies are not met.

To know more about the dependencies of a package, search for the +package symbol in the config menu (see Section 8.1, “make tips”).

Then, you may have to recursively enable several options (which +correspond to the unmet dependencies) to finally be able to select +the package.

If the package is not visible due to some unmet toolchain options, +then you should certainly run a full rebuild (see Section 8.1, “make tips” for +more explanations).

10.6. Why not use the target directory as a chroot directory?

There are plenty of reasons to not use the target directory a chroot +one, among these:

  • +file ownerships, modes and permissions are not correctly set in the + target directory; +
  • +device nodes are not created in the target directory. +

For these reasons, commands run through chroot, using the target +directory as the new root, will most likely fail.

If you want to run the target filesystem inside a chroot, or as an NFS +root, then use the tarball image generated in images/ and extract it +as root.

10.7. Why doesn’t Buildroot generate binary packages (.deb, .ipkg…)?

One feature that is often discussed on the Buildroot list is the +general topic of "package management". To summarize, the idea +would be to add some tracking of which Buildroot package installs +what files, with the goals of:

  • +being able to remove files installed by a package when this package + gets unselected from the menuconfig; +
  • +being able to generate binary packages (ipk or other format) that + can be installed on the target without re-generating a new root + filesystem image. +

In general, most people think it is easy to do: just track which package +installed what and remove it when the package is unselected. However, it +is much more complicated than that:

  • +It is not only about the target/ directory, but also the sysroot in + host/<tuple>/sysroot and the host/ directory itself. All files + installed in those directories by various packages must be tracked. +
  • +When a package is unselected from the configuration, it is not + sufficient to remove just the files it installed. One must also + remove all its reverse dependencies (i.e. packages relying on it) + and rebuild all those packages. For example, package A depends + optionally on the OpenSSL library. Both are selected, and Buildroot + is built. Package A is built with crypto support using OpenSSL. + Later on, OpenSSL gets unselected from the configuration, but + package A remains (since OpenSSL is an optional dependency, this + is possible.) If only OpenSSL files are removed, then the files + installed by package A are broken: they use a library that is no + longer present on the target. Although this is technically doable, + it adds a lot of complexity to Buildroot, which goes against the + simplicity we try to stick to. +
  • +In addition to the previous problem, there is the case where the + optional dependency is not even known to Buildroot. For example, + package A in version 1.0 never used OpenSSL, but in version 2.0 it + automatically uses OpenSSL if available. If the Buildroot .mk file + hasn’t been updated to take this into account, then package A will + not be part of the reverse dependencies of OpenSSL and will not be + removed and rebuilt when OpenSSL is removed. For sure, the .mk file + of package A should be fixed to mention this optional dependency, + but in the mean time, you can have non-reproducible behaviors. +
  • +The request is to also allow changes in the menuconfig to be + applied on the output directory without having to rebuild + everything from scratch. However, this is very difficult to achieve + in a reliable way: what happens when the suboptions of a package + are changed (we would have to detect this, and rebuild the package + from scratch and potentially all its reverse dependencies), what + happens if toolchain options are changed, etc. At the moment, what + Buildroot does is clear and simple so its behaviour is very + reliable and it is easy to support users. If configuration changes + done in menuconfig are applied after the next make, then it has to + work correctly and properly in all situations, and not have some + bizarre corner cases. The risk is to get bug reports like "I have + enabled package A, B and C, then ran make, then disabled package + C and enabled package D and ran make, then re-enabled package C + and enabled package E and then there is a build failure". Or worse + "I did some configuration, then built, then did some changes, + built, some more changes, built, some more changes, built, and now + it fails, but I don’t remember all the changes I did and in which + order". This will be impossible to support. +

For all these reasons, the conclusion is that adding tracking of +installed files to remove them when the package is unselected, or to +generate a repository of binary packages, is something that is very +hard to achieve reliably and will add a lot of complexity.

On this matter, the Buildroot developers make this position statement:

  • +Buildroot strives to make it easy to generate a root filesystem (hence + the name, by the way.) That is what we want to make Buildroot good at: + building root filesystems. +
  • +Buildroot is not meant to be a distribution (or rather, a distribution + generator.) It is the opinion of most Buildroot developers that this + is not a goal we should pursue. We believe that there are other tools + better suited to generate a distro than Buildroot is. For example, + Open Embedded, or openWRT, + are such tools. +
  • +We prefer to push Buildroot in a direction that makes it easy (or even + easier) to generate complete root filesystems. This is what makes + Buildroot stands out in the crowd (among other things, of course!) +
  • +We believe that for most embedded Linux systems, binary packages are + not necessary, and potentially harmful. When binary packages are + used, it means that the system can be partially upgraded, which + creates an enormous number of possible combinations of package + versions that should be tested before doing the upgrade on the + embedded device. On the other hand, by doing complete system + upgrades by upgrading the entire root filesystem image at once, + the image deployed to the embedded system is guaranteed to really + be the one that has been tested and validated. +

10.8. How to speed-up the build process?

Since Buildroot often involves doing full rebuilds of the entire +system that can be quite long, we provide below a number of tips to +help reduce the build time:

  • +Use a pre-built external toolchain instead of the default Buildroot + internal toolchain. By using a pre-built Linaro toolchain (on ARM) + or a Sourcery CodeBench toolchain (for ARM, x86, x86-64, MIPS, + etc.), you will save the build time of the toolchain at each + complete rebuild, approximately 15 to 20 minutes. Note that + temporarily using an external toolchain does not prevent you to + switch back to an internal toolchain (that may provide a higher + level of customization) once the rest of your system is working; +
  • +Use the ccache compiler cache (see: Section 8.12.3, “Using ccache in Buildroot”); +
  • +Learn about rebuilding only the few packages you actually care + about (see Section 8.3, “Understanding how to rebuild packages”), but beware that sometimes full + rebuilds are anyway necessary (see Section 8.2, “Understanding when a full rebuild is necessary”); +
  • +Make sure you are not using a virtual machine for the Linux system + used to run Buildroot. Most of the virtual machine technologies are + known to cause a significant performance impact on I/O, which is + really important for building source code; +
  • +Make sure that you’re using only local files: do not attempt to do + a build over NFS, which significantly slows down the build. Having + the Buildroot download folder available locally also helps a bit. +
  • +Buy new hardware. SSDs and lots of RAM are key to speeding up the + builds. +

Chapter 11. Known issues

  • +It is not possible to pass extra linker options via BR2_TARGET_LDFLAGS + if such options contain a $ sign. For example, the following is known + to break: BR2_TARGET_LDFLAGS="-Wl,-rpath='$ORIGIN/../lib'" +
  • +The libffi package is not supported on the SuperH 2 and ARC + architectures. +
  • +The prboom package triggers a compiler failure with the SuperH 4 + compiler from Sourcery CodeBench, version 2012.09. +

Chapter 12. Legal notice and licensing

12.1. Complying with open source licenses

All of the end products of Buildroot (toolchain, root filesystem, kernel, +bootloaders) contain open source software, released under various licenses.

Using open source software gives you the freedom to build rich embedded +systems, choosing from a wide range of packages, but also imposes some +obligations that you must know and honour. +Some licenses require you to publish the license text in the documentation of +your product. Others require you to redistribute the source code of the +software to those that receive your product.

The exact requirements of each license are documented in each package, and +it is your responsibility (or that of your legal office) to comply with those +requirements. +To make this easier for you, Buildroot can collect for you some material you +will probably need. To produce this material, after you have configured +Buildroot with make menuconfig, make xconfig or make gconfig, run:

make legal-info

Buildroot will collect legally-relevant material in your output directory, +under the legal-info/ subdirectory. +There you will find:

  • +A README file, that summarizes the produced material and contains warnings + about material that Buildroot could not produce. +
  • +buildroot.config: this is the Buildroot configuration file that is usually + produced with make menuconfig, and which is necessary to reproduce the + build. +
  • +The source code for all packages; this is saved in the sources/ and + host-sources/ subdirectories for target and host packages respectively. + The source code for packages that set <PKG>_REDISTRIBUTE = NO will not be + saved. + Patches that were applied are also saved, along with a file named series + that lists the patches in the order they were applied. Patches are under the + same license as the files that they modify. + Note: Buildroot applies additional patches to Libtool scripts of + autotools-based packages. These patches can be found under + support/libtool in the Buildroot source and, due to technical + limitations, are not saved with the package sources. You may need to + collect them manually. +
  • +A manifest file (one for host and one for target packages) listing the + configured packages, their version, license and related information. + Some of this information might not be defined in Buildroot; such items are + marked as "unknown". +
  • +The license texts of all packages, in the licenses/ and host-licenses/ + subdirectories for target and host packages respectively. + If the license file(s) are not defined in Buildroot, the file is not produced + and a warning in the README indicates this. +

Please note that the aim of the legal-info feature of Buildroot is to +produce all the material that is somehow relevant for legal compliance with the +package licenses. Buildroot does not try to produce the exact material that +you must somehow make public. Certainly, more material is produced than is +needed for a strict legal compliance. For example, it produces the source code +for packages released under BSD-like licenses, that you are not required to +redistribute in source form.

Moreover, due to technical limitations, Buildroot does not produce some +material that you will or may need, such as the toolchain source code and the +Buildroot source code itself (including patches to packages for which source +distribution is required). +When you run make legal-info, Buildroot produces warnings in the README +file to inform you of relevant material that could not be saved.

Finally, keep in mind that the output of make legal-info is based on +declarative statements in each of the packages recipes. The Buildroot +developers try to do their best to keep those declarative statements as +accurate as possible, to the best of their knowledge. However, it is very +well possible that those declarative statements are not all fully accurate +nor exhaustive. You (or your legal department) have to check the output +of make legal-info before using it as your own compliance delivery. See +the NO WARRANTY clauses (clauses 11 and 12) in the COPYING file at the +root of the Buildroot distribution.

12.2. Complying with the Buildroot license

Buildroot itself is an open source software, released under the +GNU General +Public License, version 2 or (at your option) any later version, with +the exception of the package patches detailed below. +However, being a build system, it is not normally part of the end product: +if you develop the root filesystem, kernel, bootloader or toolchain for a +device, the code of Buildroot is only present on the development machine, not +in the device storage.

Nevertheless, the general view of the Buildroot developers is that you should +release the Buildroot source code along with the source code of other packages +when releasing a product that contains GPL-licensed software. +This is because the +GNU GPL +defines the "complete source code" for an executable work as "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". +Buildroot is part of the scripts used to control compilation and +installation of the executable, and as such it is considered part of the +material that must be redistributed.

Keep in mind that this is only the Buildroot developers' opinion, and you +should consult your legal department or lawyer in case of any doubt.

12.2.1. Patches to packages

Buildroot also bundles patch files, which are applied to the sources +of the various packages. Those patches are not covered by the license +of Buildroot. Instead, they are covered by the license of the software +to which the patches are applied. When said software is available +under multiple licenses, the Buildroot patches are only provided under +the publicly accessible licenses.

See Chapter 18, Patching a package for the technical details.

Chapter 13. Beyond Buildroot

13.1. Boot the generated images

13.1.1. NFS boot

To achieve NFS-boot, enable tar root filesystem in the Filesystem +images menu.

After a complete build, just run the following commands to setup the +NFS-root directory:

sudo tar -xavf /path/to/output_dir/rootfs.tar -C /path/to/nfs_root_dir

Remember to add this path to /etc/exports.

Then, you can execute a NFS-boot from your target.

13.1.2. Live CD

To build a live CD image, enable the iso image option in the +Filesystem images menu. Note that this option is only available on +the x86 and x86-64 architectures, and if you are building your kernel +with Buildroot.

You can build a live CD image with either IsoLinux, Grub or Grub 2 as +a bootloader, but only Isolinux supports making this image usable both +as a live CD and live USB (through the Build hybrid image option).

You can test your live CD image using QEMU:

qemu-system-i386 -cdrom output/images/rootfs.iso9660

Or use it as a hard-drive image if it is a hybrid ISO:

qemu-system-i386 -hda output/images/rootfs.iso9660

It can be easily flashed to a USB drive with dd:

dd if=output/images/rootfs.iso9660 of=/dev/sdb

13.2. Chroot

If you want to chroot in a generated image, then there are few thing +you should be aware of:

  • +you should setup the new root from the tar root filesystem image; +
  • +either the selected target architecture is compatible with your host + machine, or you should use some qemu-* binary and correctly set it + within the binfmt properties to be able to run the binaries built + for the target on your host machine; +
  • +Buildroot does not currently provide host-qemu and binfmt + correctly built and set for that kind of use. +

Part III. Developer guide

Chapter 14. How Buildroot works

As mentioned above, Buildroot is basically a set of Makefiles that +download, configure, and compile software with the correct options. It +also includes patches for various software packages - mainly the ones +involved in the cross-compilation toolchain (gcc, binutils and +uClibc).

There is basically one Makefile per software package, and they are +named with the .mk extension. Makefiles are split into many different +parts.

  • +The toolchain/ directory contains the Makefiles + and associated files for all software related to the + cross-compilation toolchain: binutils, gcc, gdb, + kernel-headers and uClibc. +
  • +The arch/ directory contains the definitions for all the processor + architectures that are supported by Buildroot. +
  • +The package/ directory contains the Makefiles and + associated files for all user-space tools and libraries that Buildroot + can compile and add to the target root filesystem. There is one + sub-directory per package. +
  • +The linux/ directory contains the Makefiles and associated files for + the Linux kernel. +
  • +The boot/ directory contains the Makefiles and associated files for + the bootloaders supported by Buildroot. +
  • +The system/ directory contains support for system integration, e.g. + the target filesystem skeleton and the selection of an init system. +
  • +The fs/ directory contains the Makefiles and + associated files for software related to the generation of the + target root filesystem image. +

Each directory contains at least 2 files:

  • +something.mk is the Makefile that downloads, configures, + compiles and installs the package something. +
  • +Config.in is a part of the configuration tool + description file. It describes the options related to the + package. +

The main Makefile performs the following steps (once the +configuration is done):

  • +Create all the output directories: staging, target, build, + etc. in the output directory (output/ by default, + another value can be specified using O=) +
  • +Generate the toolchain target. When an internal toolchain is used, this + means generating the cross-compilation toolchain. When an external + toolchain is used, this means checking the features of the external + toolchain and importing it into the Buildroot environment. +
  • +Generate all the targets listed in the TARGETS variable. This + variable is filled by all the individual components' + Makefiles. Generating these targets will trigger the compilation of + the userspace packages (libraries, programs), the kernel, the + bootloader and the generation of the root filesystem images, + depending on the configuration. +

Chapter 15. Coding style

Overall, these coding style rules are here to help you to add new files in +Buildroot or refactor existing ones.

If you slightly modify some existing file, the important thing is +to keep the consistency of the whole file, so you can:

  • +either follow the potentially deprecated coding style used in this +file, +
  • +or entirely rework it in order to make it comply with these rules. +

15.1. Config.in file

Config.in files contain entries for almost anything configurable in +Buildroot.

An entry has the following pattern:

config BR2_PACKAGE_LIBFOO
+        bool "libfoo"
+        depends on BR2_PACKAGE_LIBBAZ
+        select BR2_PACKAGE_LIBBAR
+        help
+          This is a comment that explains what libfoo is. The help text
+          should be wrapped.
+
+          http://foosoftware.org/libfoo/
  • +The bool, depends on, select and help lines are indented + with one tab. +
  • +The help text itself should be indented with one tab and two + spaces. +
  • +The help text should be wrapped to fit 72 columns, where tab counts + for 8, so 62 characters in the text itself. +

The Config.in files are the input for the configuration tool +used in Buildroot, which is the regular Kconfig. For further +details about the Kconfig language, refer to +http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt.

15.2. The .mk file

  • +Header: The file starts with a header. It contains the module name, +preferably in lowercase, enclosed between separators made of 80 hashes. A +blank line is mandatory after the header: +

    ################################################################################
    +#
    +# libfoo
    +#
    +################################################################################
  • +Assignment: use = preceded and followed by one space: +

    LIBFOO_VERSION = 1.0
    +LIBFOO_CONF_OPTS += --without-python-support

    Do not align the = signs.

  • +Indentation: use tab only: +

    define LIBFOO_REMOVE_DOC
    +        $(RM) -fr $(TARGET_DIR)/usr/share/libfoo/doc \
    +                $(TARGET_DIR)/usr/share/man/man3/libfoo*
    +endef

    Note that commands inside a define block should always start with a tab, +so make recognizes them as commands.

  • +Optional dependency: +

    • +Prefer multi-line syntax. +

      YES:

      ifeq ($(BR2_PACKAGE_PYTHON),y)
      +LIBFOO_CONF_OPTS += --with-python-support
      +LIBFOO_DEPENDENCIES += python
      +else
      +LIBFOO_CONF_OPTS += --without-python-support
      +endif

      NO:

      LIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON),,out)-python-support
      +LIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,)
    • +Keep configure options and dependencies close together. +
  • +Optional hooks: keep hook definition and assignment together in one + if block. +

    YES:

    ifneq ($(BR2_LIBFOO_INSTALL_DATA),y)
    +define LIBFOO_REMOVE_DATA
    +        $(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data
    +endef
    +LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA
    +endif

    NO:

    define LIBFOO_REMOVE_DATA
    +        $(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data
    +endef
    +
    +ifneq ($(BR2_LIBFOO_INSTALL_DATA),y)
    +LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA
    +endif

15.3. The documentation

The documentation uses the +asciidoc format.

For further details about the asciidoc +syntax, refer to http://www.methods.co.nz/asciidoc/userguide.html.

15.4. Support scripts

Some scripts in the support/ and utils/ directories are written in +Python and should follow the +PEP8 Style Guide for Python Code.

Chapter 16. Adding support for a particular board

Buildroot contains basic configurations for several publicly available +hardware boards, so that users of such a board can easily build a system +that is known to work. You are welcome to add support for other boards +to Buildroot too.

To do so, you need to create a normal Buildroot configuration that +builds a basic system for the hardware: toolchain, kernel, bootloader, +filesystem and a simple BusyBox-only userspace. No specific package +should be selected: the configuration should be as minimal as +possible, and should only build a working basic BusyBox system for the +target platform. You can of course use more complicated configurations +for your internal projects, but the Buildroot project will only +integrate basic board configurations. This is because package +selections are highly application-specific.

Once you have a known working configuration, run make +savedefconfig. This will generate a minimal defconfig file at the +root of the Buildroot source tree. Move this file into the configs/ +directory, and rename it <boardname>_defconfig.

It is recommended to use as much as possible upstream versions of the +Linux kernel and bootloaders, and to use as much as possible default +kernel and bootloader configurations. If they are incorrect for your +board, or no default exists, we encourage you to send fixes to the +corresponding upstream projects.

However, in the mean time, you may want to store kernel or bootloader +configuration or patches specific to your target platform. To do so, +create a directory board/<manufacturer> and a subdirectory +board/<manufacturer>/<boardname>. You can then store your patches +and configurations in these directories, and reference them from the main +Buildroot configuration. Refer to Chapter 9, Project-specific customization for more details.

Chapter 17. Adding new packages to Buildroot

This section covers how new packages (userspace libraries or +applications) can be integrated into Buildroot. It also shows how +existing packages are integrated, which is needed for fixing issues or +tuning their configuration.

When you add a new package, be sure to test it in various conditions; +see Section 17.22.2, “How to test your package”

17.1. Package directory

First of all, create a directory under the package directory for +your software, for example libfoo.

Some packages have been grouped by topic in a sub-directory: +x11r7, qt5 and gstreamer. If your package fits in +one of these categories, then create your package directory in these. +New subdirectories are discouraged, however.

17.2. Config files

For the package to be displayed in the configuration tool, you need to +create a Config file in your package directory. There are two types: +Config.in and Config.in.host.

17.2.1. Config.in file

For packages used on the target, create a file named Config.in. This +file will contain the option descriptions related to our libfoo software +that will be used and displayed in the configuration tool. It should basically +contain:

config BR2_PACKAGE_LIBFOO
+        bool "libfoo"
+        help
+          This is a comment that explains what libfoo is. The help text
+          should be wrapped.
+
+          http://foosoftware.org/libfoo/

The bool line, help line and other metadata information about the +configuration option must be indented with one tab. The help text +itself should be indented with one tab and two spaces, lines should +be wrapped to fit 72 columns, where tab counts for 8, so 62 characters +in the text itself. The help text must mention the upstream URL of the +project after an empty line.

As a convention specific to Buildroot, the ordering of the attributes +is as follows:

  1. +The type of option: bool, string… with the prompt +
  2. +If needed, the default value(s) +
  3. +Any dependency of the depends on form +
  4. +Any dependency of the select form +
  5. +The help keyword and help text. +

You can add other sub-options into a if BR2_PACKAGE_LIBFOO…endif +statement to configure particular things in your software. You can look at +examples in other packages. The syntax of the Config.in file is the same +as the one for the kernel Kconfig file. The documentation for this syntax is +available at http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt

Finally you have to add your new libfoo/Config.in to +package/Config.in (or in a category subdirectory if you decided to +put your package in one of the existing categories). The files +included there are sorted alphabetically per category and are NOT +supposed to contain anything but the bare name of the package.

source "package/libfoo/Config.in"

17.2.2. Config.in.host file

Some packages also need to be built for the host system. There are two +options here:

  • +The host package is only required to satisfy build-time + dependencies of one or more target packages. In this case, add + host-foo to the target package’s BAR_DEPENDENCIES variable. No + Config.in.host file should be created. +
  • +The host package should be explicitly selectable by the user from + the configuration menu. In this case, create a Config.in.host file + for that host package: +

    config BR2_PACKAGE_HOST_FOO
    +        bool "host foo"
    +        help
    +          This is a comment that explains what foo for the host is.
    +
    +          http://foosoftware.org/foo/

    The same coding style and options as for the Config.in file are valid.

    Finally you have to add your new libfoo/Config.in.host to +package/Config.in.host. The files included there are sorted alphabetically +and are NOT supposed to contain anything but the bare name of the package.

    source "package/foo/Config.in.host"

    The host package will then be available from the Host utilities menu.

17.2.3. Choosing depends on or select

The Config.in file of your package must also ensure that +dependencies are enabled. Typically, Buildroot uses the following +rules:

  • +Use a select type of dependency for dependencies on + libraries. These dependencies are generally not obvious and it + therefore make sense to have the kconfig system ensure that the + dependencies are selected. For example, the libgtk2 package uses + select BR2_PACKAGE_LIBGLIB2 to make sure this library is also + enabled. + The select keyword expresses the dependency with a backward + semantic. +
  • +Use a depends on type of dependency when the user really needs to + be aware of the dependency. Typically, Buildroot uses this type of + dependency for dependencies on target architecture, MMU support and + toolchain options (see Section 17.2.4, “Dependencies on target and toolchain options”), + or for dependencies on "big" things, such as the X.org system. + The depends on keyword expresses the dependency with a forward + semantic. +

Note. The current problem with the kconfig language is that these two +dependency semantics are not internally linked. Therefore, it may be +possible to select a package, whom one of its dependencies/requirement +is not met.

An example illustrates both the usage of select and depends on.

config BR2_PACKAGE_RRDTOOL
+        bool "rrdtool"
+        depends on BR2_USE_WCHAR
+        select BR2_PACKAGE_FREETYPE
+        select BR2_PACKAGE_LIBART
+        select BR2_PACKAGE_LIBPNG
+        select BR2_PACKAGE_ZLIB
+        help
+          RRDtool is the OpenSource industry standard, high performance
+          data logging and graphing system for time series data.
+
+          http://oss.oetiker.ch/rrdtool/
+
+comment "rrdtool needs a toolchain w/ wchar"
+        depends on !BR2_USE_WCHAR

Note that these two dependency types are only transitive with the +dependencies of the same kind.

This means, in the following example:

config BR2_PACKAGE_A
+        bool "Package A"
+
+config BR2_PACKAGE_B
+        bool "Package B"
+        depends on BR2_PACKAGE_A
+
+config BR2_PACKAGE_C
+        bool "Package C"
+        depends on BR2_PACKAGE_B
+
+config BR2_PACKAGE_D
+        bool "Package D"
+        select BR2_PACKAGE_B
+
+config BR2_PACKAGE_E
+        bool "Package E"
+        select BR2_PACKAGE_D
  • +Selecting Package C will be visible if Package B has been + selected, which in turn is only visible if Package A has been + selected. +
  • +Selecting Package E will select Package D, which will select + Package B, it will not check for the dependencies of Package B, + so it will not select Package A. +
  • +Since Package B is selected but Package A is not, this violates + the dependency of Package B on Package A. Therefore, in such a + situation, the transitive dependency has to be added explicitly: +
config BR2_PACKAGE_D
+        bool "Package D"
+        select BR2_PACKAGE_B
+        depends on BR2_PACKAGE_A
+
+config BR2_PACKAGE_E
+        bool "Package E"
+        select BR2_PACKAGE_D
+        depends on BR2_PACKAGE_A

Overall, for package library dependencies, select should be +preferred.

Note that such dependencies will ensure that the dependency option +is also enabled, but not necessarily built before your package. To do +so, the dependency also needs to be expressed in the .mk file of the +package.

Further formatting details: see the +coding style +Section 15.1, “Config.in file”.

17.2.4. Dependencies on target and toolchain options

Many packages depend on certain options of the toolchain: the choice of +C library, C++ support, thread support, RPC support, wchar support, +or dynamic library support. Some packages can only be built on certain +target architectures, or if an MMU is available in the processor.

These dependencies have to be expressed with the appropriate depends +on statements in the Config.in file. Additionally, for dependencies on +toolchain options, a comment should be displayed when the option is +not enabled, so that the user knows why the package is not available. +Dependencies on target architecture or MMU support should not be +made visible in a comment: since it is unlikely that the user can +freely choose another target, it makes little sense to show these +dependencies explicitly.

The comment should only be visible if the config option itself would +be visible when the toolchain option dependencies are met. This means +that all other dependencies of the package (including dependencies on +target architecture and MMU support) have to be repeated on the +comment definition. To keep it clear, the depends on statement for +these non-toolchain option should be kept separate from the depends on +statement for the toolchain options. +If there is a dependency on a config option in that same file (typically +the main package) it is preferable to have a global if … endif +construct rather than repeating the depends on statement on the +comment and other config options.

The general format of a dependency comment for package foo is:

foo needs a toolchain w/ featA, featB, featC

for example:

mpd needs a toolchain w/ C++, threads, wchar

or

crda needs a toolchain w/ threads

Note that this text is kept brief on purpose, so that it will fit on a +80-character terminal.

The rest of this section enumerates the different target and toolchain +options, the corresponding config symbols to depend on, and the text to +use in the comment.

  • +Target architecture +

    • +Dependency symbol: BR2_powerpc, BR2_mips, … (see arch/Config.in) +
    • +Comment string: no comment to be added +
  • +MMU support +

    • +Dependency symbol: BR2_USE_MMU +
    • +Comment string: no comment to be added +
  • +Gcc _sync* built-ins used for atomic operations. They are + available in variants operating on 1 byte, 2 bytes, 4 bytes and 8 + bytes. Since different architectures support atomic operations on + different sizes, one dependency symbol is available for each size: +

    • +Dependency symbol: BR2_TOOLCHAIN_HAS_SYNC_1 for 1 byte, + BR2_TOOLCHAIN_HAS_SYNC_2 for 2 bytes, + BR2_TOOLCHAIN_HAS_SYNC_4 for 4 bytes, BR2_TOOLCHAIN_HAS_SYNC_8 + for 8 bytes. +
    • +Comment string: no comment to be added +
  • +Gcc _atomic* built-ins used for atomic operations. +

    • +Dependency symbol: BR2_TOOLCHAIN_HAS_ATOMIC. +
    • +Comment string: no comment to be added +
  • +Kernel headers +

    • +Dependency symbol: BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y, (replace + X_Y with the proper version, see toolchain/toolchain-common.in) +
    • +Comment string: headers >= X.Y and/or headers <= X.Y (replace + X.Y with the proper version) +
  • +GCC version +

    • +Dependency symbol: BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y, (replace + X_Y with the proper version, see toolchain/toolchain-common.in) +
    • +Comment string: gcc >= X.Y and/or gcc <= X.Y (replace + X.Y with the proper version) +
  • +Host GCC version +

    • +Dependency symbol: BR2_HOST_GCC_AT_LEAST_X_Y, (replace + X_Y with the proper version, see Config.in) +
    • +Comment string: no comment to be added +
    • +Note that it is usually not the package itself that has a minimum + host GCC version, but rather a host-package on which it depends. +
  • +C library +

    • +Dependency symbol: BR2_TOOLCHAIN_USES_GLIBC, + BR2_TOOLCHAIN_USES_MUSL, BR2_TOOLCHAIN_USES_UCLIBC +
    • +Comment string: for the C library, a slightly different comment text + is used: foo needs a glibc toolchain, or foo needs a glibc + toolchain w/ C++ +
  • +C++ support +

    • +Dependency symbol: BR2_INSTALL_LIBSTDCPP +
    • +Comment string: C++ +
  • +Fortran support +

    • +Dependency symbol: BR2_TOOLCHAIN_HAS_FORTRAN +
    • +Comment string: fortran +
  • +thread support +

    • +Dependency symbol: BR2_TOOLCHAIN_HAS_THREADS +
    • +Comment string: threads (unless BR2_TOOLCHAIN_HAS_THREADS_NPTL + is also needed, in which case, specifying only NPTL is sufficient) +
  • +NPTL thread support +

    • +Dependency symbol: BR2_TOOLCHAIN_HAS_THREADS_NPTL +
    • +Comment string: NPTL +
  • +RPC support +

    • +Dependency symbol: BR2_TOOLCHAIN_HAS_NATIVE_RPC +
    • +Comment string: RPC +
  • +wchar support +

    • +Dependency symbol: BR2_USE_WCHAR +
    • +Comment string: wchar +
  • +dynamic library +

    • +Dependency symbol: !BR2_STATIC_LIBS +
    • +Comment string: dynamic library +

17.2.5. Dependencies on a Linux kernel built by buildroot

Some packages need a Linux kernel to be built by buildroot. These are +typically kernel modules or firmware. A comment should be added in the +Config.in file to express this dependency, similar to dependencies on +toolchain options. The general format is:

foo needs a Linux kernel to be built

If there is a dependency on both toolchain options and the Linux +kernel, use this format:

foo needs a toolchain w/ featA, featB, featC and a Linux kernel to be built

17.2.6. Dependencies on udev /dev management

If a package needs udev /dev management, it should depend on symbol +BR2_PACKAGE_HAS_UDEV, and the following comment should be added:

foo needs udev /dev management

If there is a dependency on both toolchain options and udev /dev +management, use this format:

foo needs udev /dev management and a toolchain w/ featA, featB, featC

17.2.7. Dependencies on features provided by virtual packages

Some features can be provided by more than one package, such as the +openGL libraries.

See Section 17.11, “Infrastructure for virtual packages” for more on the virtual packages.

17.3. The .mk file

Finally, here’s the hardest part. Create a file named libfoo.mk. It +describes how the package should be downloaded, configured, built, +installed, etc.

Depending on the package type, the .mk file must be written in a +different way, using different infrastructures:

Further formatting details: see the writing +rules +Section 15.2, “The .mk file”.

17.4. The .hash file

When possible, you must add a third file, named libfoo.hash, that +contains the hashes of the downloaded files for the libfoo +package. The only reason for not adding a .hash file is when hash +checking is not possible due to how the package is downloaded.

The hashes stored in that file are used to validate the integrity of the +downloaded files and of the license files.

The format of this file is one line for each file for which to check the +hash, each line being space-separated, with these three fields:

  • +the type of hash, one of: +

    • +md5, sha1, sha224, sha256, sha384, sha512, none +
  • +the hash of the file: +

    • +for none, one or more non-space chars, usually just the string xxx +
    • +for md5, 32 hexadecimal characters +
    • +for sha1, 40 hexadecimal characters +
    • +for sha224, 56 hexadecimal characters +
    • +for sha256, 64 hexadecimal characters +
    • +for sha384, 96 hexadecimal characters +
    • +for sha512, 128 hexadecimal characters +
  • +the name of the file: +

    • +for a source archive: the basename of the file, without any directory + component, +
    • +for a license file: the path as it appears in FOO_LICENSE_FILES. +

Lines starting with a # sign are considered comments, and ignored. Empty +lines are ignored.

There can be more than one hash for a single file, each on its own line. In +this case, all hashes must match.

Note. Ideally, the hashes stored in this file should match the hashes published by +upstream, e.g. on their website, in the e-mail announcement… If upstream +provides more than one type of hash (e.g. sha1 and sha512), then it is +best to add all those hashes in the .hash file. If upstream does not +provide any hash, or only provides an md5 hash, then compute at least one +strong hash yourself (preferably sha256, but not md5), and mention +this in a comment line above the hashes.

Note. The hashes for license files are used to detect a license change when a +package version is bumped. The hashes are checked during the make legal-info +target run. For a package with multiple versions (like Qt5), +create the hash file in a subdirectory <packageversion> of that package +(see also Section 18.2, “How patches are applied”).

Note. The number of spaces does not matter, so one can use spaces (or tabs) to +properly align the different fields.

The none hash type is reserved to those archives downloaded from a +repository, like a git clone, a subversion checkout

The example below defines a sha1 and a sha256 published by upstream for +the main libfoo-1.2.3.tar.bz2 tarball, an md5 from upstream and a +locally-computed sha256 hashes for a binary blob, a sha256 for a +downloaded patch, and an archive with no hash:

# Hashes from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.{sha1,sha256}:
+sha1   486fb55c3efa71148fe07895fd713ea3a5ae343a                         libfoo-1.2.3.tar.bz2
+sha256 efc8103cc3bcb06bda6a781532d12701eb081ad83e8f90004b39ab81b65d4369 libfoo-1.2.3.tar.bz2
+
+# md5 from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.md5, sha256 locally computed:
+md5    2d608f3c318c6b7557d551a5a09314f03452f1a1                         libfoo-data.bin
+sha256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b libfoo-data.bin
+
+# Locally computed:
+sha256 ff52101fb90bbfc3fe9475e425688c660f46216d7e751c4bbdb1dc85cdccacb9 libfoo-fix-blabla.patch
+
+# No hash for 1234:
+none   xxx                                                              libfoo-1234.tar.gz
+
+# Hash for license files:
+sha256 a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8  COPYING
+sha256 01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55  doc/COPYING.LGPL

If the .hash file is present, and it contains one or more hashes for a +downloaded file, the hash(es) computed by Buildroot (after download) must +match the hash(es) stored in the .hash file. If one or more hashes do +not match, Buildroot considers this an error, deletes the downloaded file, +and aborts.

If the .hash file is present, but it does not contain a hash for a +downloaded file, Buildroot considers this an error and aborts. However, +the downloaded file is left in the download directory since this +typically indicates that the .hash file is wrong but the downloaded +file is probably OK.

Hashes are currently checked for files fetched from http/ftp servers, +Git repositories, files copied using scp and local files. Hashes are +not checked for other version control systems (such as Subversion, +CVS, etc.) because Buildroot currently does not generate reproducible +tarballs when source code is fetched from such version control +systems.

Hashes should only be added in .hash files for files that are +guaranteed to be stable. For example, patches auto-generated by Github +are not guaranteed to be stable, and therefore their hashes can change +over time. Such patches should not be downloaded, and instead be added +locally to the package folder.

If the .hash file is missing, then no check is done at all.

17.5. Infrastructure for packages with specific build systems

By packages with specific build systems we mean all the packages +whose build system is not one of the standard ones, such as +autotools or CMake. This typically includes packages whose build +system is based on hand-written Makefiles or shell scripts.

17.5.1. generic-package tutorial

01: ################################################################################
+02: #
+03: # libfoo
+04: #
+05: ################################################################################
+06:
+07: LIBFOO_VERSION = 1.0
+08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
+09: LIBFOO_SITE = http://www.foosoftware.org/download
+10: LIBFOO_LICENSE = GPL-3.0+
+11: LIBFOO_LICENSE_FILES = COPYING
+12: LIBFOO_INSTALL_STAGING = YES
+13: LIBFOO_CONFIG_SCRIPTS = libfoo-config
+14: LIBFOO_DEPENDENCIES = host-libaaa libbbb
+15:
+16: define LIBFOO_BUILD_CMDS
+17:     $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all
+18: endef
+19:
+20: define LIBFOO_INSTALL_STAGING_CMDS
+21:     $(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a
+22:     $(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h
+23:     $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib
+24: endef
+25:
+26: define LIBFOO_INSTALL_TARGET_CMDS
+27:     $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib
+28:     $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d
+29: endef
+30:
+31: define LIBFOO_USERS
+32:     foo -1 libfoo -1 * - - - LibFoo daemon
+33: endef
+34:
+35: define LIBFOO_DEVICES
+36:     /dev/foo  c  666  0  0  42  0  -  -  -
+37: endef
+38:
+39: define LIBFOO_PERMISSIONS
+40:     /bin/foo  f  4755  foo  libfoo   -  -  -  -  -
+41: endef
+42:
+43: $(eval $(generic-package))

The Makefile begins on line 7 to 11 with metadata information: the +version of the package (LIBFOO_VERSION), the name of the +tarball containing the package (LIBFOO_SOURCE) (xz-ed tarball recommended) +the Internet location at which the tarball can be downloaded from +(LIBFOO_SITE), the license (LIBFOO_LICENSE) and file with the +license text (LIBFOO_LICENSE_FILES). All variables must start with +the same prefix, LIBFOO_ in this case. This prefix is always the +uppercased version of the package name (see below to understand where +the package name is defined).

On line 12, we specify that this package wants to install something to +the staging space. This is often needed for libraries, since they must +install header files and other development files in the staging space. +This will ensure that the commands listed in the +LIBFOO_INSTALL_STAGING_CMDS variable will be executed.

On line 13, we specify that there is some fixing to be done to some +of the libfoo-config files that were installed during +LIBFOO_INSTALL_STAGING_CMDS phase. +These *-config files are executable shell script files that are +located in $(STAGING_DIR)/usr/bin directory and are executed +by other 3rd party packages to find out the location and the linking +flags of this particular package.

The problem is that all these *-config files by default give wrong, +host system linking flags that are unsuitable for cross-compiling.

For example: -I/usr/include instead of -I$(STAGING_DIR)/usr/include +or: -L/usr/lib instead of -L$(STAGING_DIR)/usr/lib

So some sed magic is done to these scripts to make them give correct +flags. +The argument to be given to LIBFOO_CONFIG_SCRIPTS is the file name(s) +of the shell script(s) needing fixing. All these names are relative to +$(STAGING_DIR)/usr/bin and if needed multiple names can be given.

In addition, the scripts listed in LIBFOO_CONFIG_SCRIPTS are removed +from $(TARGET_DIR)/usr/bin, since they are not needed on the target.

Example 17.1. Config script: divine package

Package divine installs shell script $(STAGING_DIR)/usr/bin/divine-config.

So its fixup would be:

DIVINE_CONFIG_SCRIPTS = divine-config

Example 17.2. Config script: imagemagick package:

Package imagemagick installs the following scripts: +$(STAGING_DIR)/usr/bin/{Magick,Magick++,MagickCore,MagickWand,Wand}-config

So it’s fixup would be:

IMAGEMAGICK_CONFIG_SCRIPTS = \
+   Magick-config Magick++-config \
+   MagickCore-config MagickWand-config Wand-config

On line 14, we specify the list of dependencies this package relies +on. These dependencies are listed in terms of lower-case package names, +which can be packages for the target (without the host- +prefix) or packages for the host (with the host-) prefix). +Buildroot will ensure that all these packages are built and installed +before the current package starts its configuration.

The rest of the Makefile, lines 16..29, defines what should be done +at the different steps of the package configuration, compilation and +installation. +LIBFOO_BUILD_CMDS tells what steps should be performed to +build the package. LIBFOO_INSTALL_STAGING_CMDS tells what +steps should be performed to install the package in the staging space. +LIBFOO_INSTALL_TARGET_CMDS tells what steps should be +performed to install the package in the target space.

All these steps rely on the $(@D) variable, which +contains the directory where the source code of the package has been +extracted.

On lines 31..43, we define a user that is used by this package (e.g. +to run a daemon as non-root) (LIBFOO_USERS).

On line 35..37, we define a device-node file used by this package +(LIBFOO_DEVICES).

On line 39..41, we define the permissions to set to specific files +installed by this package (LIBFOO_PERMISSIONS).

Finally, on line 43, we call the generic-package function, which +generates, according to the variables defined previously, all the +Makefile code necessary to make your package working.

17.5.2. generic-package reference

There are two variants of the generic target. The generic-package macro is +used for packages to be cross-compiled for the target. The +host-generic-package macro is used for host packages, natively compiled +for the host. It is possible to call both of them in a single .mk +file: once to create the rules to generate a target +package and once to create the rules to generate a host package:

$(eval $(generic-package))
+$(eval $(host-generic-package))

This might be useful if the compilation of the target package requires +some tools to be installed on the host. If the package name is +libfoo, then the name of the package for the target is also +libfoo, while the name of the package for the host is +host-libfoo. These names should be used in the DEPENDENCIES +variables of other packages, if they depend on libfoo or +host-libfoo.

The call to the generic-package and/or host-generic-package macro must be +at the end of the .mk file, after all variable definitions.

For the target package, the generic-package uses the variables defined by +the .mk file and prefixed by the uppercased package name: +LIBFOO_*. host-generic-package uses the HOST_LIBFOO_* variables. For +some variables, if the HOST_LIBFOO_ prefixed variable doesn’t +exist, the package infrastructure uses the corresponding variable +prefixed by LIBFOO_. This is done for variables that are likely to +have the same value for both the target and host packages. See below +for details.

The list of variables that can be set in a .mk file to give metadata +information is (assuming the package name is libfoo) :

  • +LIBFOO_VERSION, mandatory, must contain the version of the + package. Note that if HOST_LIBFOO_VERSION doesn’t exist, it is + assumed to be the same as LIBFOO_VERSION. It can also be a + revision number or a tag for packages that are fetched directly + from their version control system. Do not use a branch name as + version; it does not work. Examples: +

    • +a version for a release tarball: LIBFOO_VERSION = 0.1.2 +
    • +a sha1 for a git tree: LIBFOO_VERSION = cb9d6aa9429e838f0e54faa3d455bcbab5eef057 +
    • +a tag for a git tree LIBFOO_VERSION = v0.1.2 +
  • +LIBFOO_SOURCE may contain the name of the tarball of the package, + which Buildroot will use to download the tarball from + LIBFOO_SITE. If HOST_LIBFOO_SOURCE is not specified, it defaults + to LIBFOO_SOURCE. If none are specified, then the value is assumed + to be libfoo-$(LIBFOO_VERSION).tar.gz. + Example: LIBFOO_SOURCE = foobar-$(LIBFOO_VERSION).tar.bz2 +
  • +LIBFOO_PATCH may contain a space-separated list of patch file + names, that Buildroot will download and apply to the package source + code. If an entry contains ://, then Buildroot will assume it is a + full URL and download the patch from this location. Otherwise, + Buildroot will assume that the patch should be downloaded from + LIBFOO_SITE. If HOST_LIBFOO_PATCH is not specified, it defaults + to LIBFOO_PATCH. Note that patches that are included in Buildroot + itself use a different mechanism: all files of the form + *.patch present in the package directory inside + Buildroot will be applied to the package after extraction (see + patching a package +Chapter 18, Patching a package). Finally, patches listed in + the LIBFOO_PATCH variable are applied before the patches stored + in the Buildroot package directory. +
  • +LIBFOO_SITE provides the location of the package, which can be a + URL or a local filesystem path. HTTP, FTP and SCP are supported URL + types for retrieving package tarballs. In these cases don’t include a + trailing slash: it will be added by Buildroot between the directory + and the filename as appropriate. Git, Subversion, Mercurial, + and Bazaar are supported URL types for retrieving packages directly + from source code management systems. There is a helper function to make + it easier to download source tarballs from GitHub (refer to + Section 17.22.3, “How to add a package from GitHub” for details). A filesystem path may be used + to specify either a tarball or a directory containing the package + source code. See LIBFOO_SITE_METHOD below for more details on how + retrieval works. + Note that SCP URLs should be of the form + scp://[user@]host:filepath, and that filepath is relative to the + user’s home directory, so you may want to prepend the path with a + slash for absolute paths: + scp://[user@]host:/absolutepath. + If HOST_LIBFOO_SITE is not specified, it defaults to + LIBFOO_SITE. + Examples: + LIBFOO_SITE=http://www.libfoosoftware.org/libfoo + LIBFOO_SITE=http://svn.xiph.org/trunk/Tremor + LIBFOO_SITE=/opt/software/libfoo.tar.gz + LIBFOO_SITE=$(TOPDIR)/../src/libfoo +
  • +LIBFOO_DL_OPTS is a space-separated list of additional options to + pass to the downloader. Useful for retrieving documents with + server-side checking for user logins and passwords, or to use a proxy. + All download methods valid for LIBFOO_SITE_METHOD are supported; + valid options depend on the download method (consult the man page + for the respective download utilities). +
  • +LIBFOO_EXTRA_DOWNLOADS is a space-separated list of additional + files that Buildroot should download. If an entry contains :// + then Buildroot will assume it is a complete URL and will download + the file using this URL. Otherwise, Buildroot will assume the file + to be downloaded is located at LIBFOO_SITE. Buildroot will not do + anything with those additional files, except download them: it will + be up to the package recipe to use them from $(DL_DIR). +
  • +LIBFOO_SITE_METHOD determines the method used to fetch or copy the + package source code. In many cases, Buildroot guesses the method + from the contents of LIBFOO_SITE and setting LIBFOO_SITE_METHOD + is unnecessary. When HOST_LIBFOO_SITE_METHOD is not specified, it + defaults to the value of LIBFOO_SITE_METHOD. + The possible values of LIBFOO_SITE_METHOD are: +

    • +wget for normal FTP/HTTP downloads of tarballs. Used by + default when LIBFOO_SITE begins with http://, https:// or + ftp://. +
    • +scp for downloads of tarballs over SSH with scp. Used by + default when LIBFOO_SITE begins with scp://. +
    • +svn for retrieving source code from a Subversion repository. + Used by default when LIBFOO_SITE begins with svn://. When a + http:// Subversion repository URL is specified in + LIBFOO_SITE, one must specify LIBFOO_SITE_METHOD=svn. + Buildroot performs a checkout which is preserved as a tarball in + the download cache; subsequent builds use the tarball instead of + performing another checkout. +
    • +cvs for retrieving source code from a CVS repository. + Used by default when LIBFOO_SITE begins with cvs://. + The downloaded source code is cached as with the svn method. + Anonymous pserver mode is assumed otherwise explicitly defined + on LIBFOO_SITE. Both + LIBFOO_SITE=cvs://libfoo.net:/cvsroot/libfoo and + LIBFOO_SITE=cvs://:ext:libfoo.net:/cvsroot/libfoo + are accepted, on the former anonymous pserver access mode is + assumed. + LIBFOO_SITE must contain the source URL as well as the remote + repository directory. The module is the package name. + LIBFOO_VERSION is mandatory and must be a tag, a branch, or + a date (e.g. "2014-10-20", "2014-10-20 13:45", "2014-10-20 + 13:45+01" see "man cvs" for further details). +
    • +git for retrieving source code from a Git repository. Used by + default when LIBFOO_SITE begins with git://. The downloaded + source code is cached as with the svn + method. +
    • +hg for retrieving source code from a Mercurial repository. One + must specify LIBFOO_SITE_METHOD=hg when LIBFOO_SITE + contains a Mercurial repository URL. The downloaded source code + is cached as with the svn method. +
    • +bzr for retrieving source code from a Bazaar repository. Used + by default when LIBFOO_SITE begins with bzr://. The + downloaded source code is cached as with the svn method. +
    • +file for a local tarball. One should use this when + LIBFOO_SITE specifies a package tarball as a local filename. + Useful for software that isn’t available publicly or in version + control. +
    • +local for a local source code directory. One should use this + when LIBFOO_SITE specifies a local directory path containing + the package source code. Buildroot copies the contents of the + source directory into the package’s build directory. Note that + for local packages, no patches are applied. If you need to + still patch the source code, use LIBFOO_POST_RSYNC_HOOKS, see + Section 17.20.1, “Using the POST_RSYNC hook”. +
  • +LIBFOO_GIT_SUBMODULES can be set to YES to create an archive + with the git submodules in the repository. This is only available + for packages downloaded with git (i.e. when + LIBFOO_SITE_METHOD=git). Note that we try not to use such git + submodules when they contain bundled libraries, in which case we + prefer to use those libraries from their own package. +
  • +LIBFOO_STRIP_COMPONENTS is the number of leading components + (directories) that tar must strip from file names on extraction. + The tarball for most packages has one leading component named + "<pkg-name>-<pkg-version>", thus Buildroot passes + --strip-components=1 to tar to remove it. + For non-standard packages that don’t have this component, or + that have more than one leading component to strip, set this + variable with the value to be passed to tar. Default: 1. +
  • +LIBFOO_EXCLUDES is a space-separated list of patterns to exclude + when extracting the archive. Each item from that list is passed as + a tar’s --exclude option. By default, empty. +
  • +LIBFOO_DEPENDENCIES lists the dependencies (in terms of package + name) that are required for the current target package to + compile. These dependencies are guaranteed to be compiled and + installed before the configuration of the current package starts. In + a similar way, HOST_LIBFOO_DEPENDENCIES lists the dependencies for + the current host package. +
  • +LIBFOO_PATCH_DEPENDENCIES lists the dependencies (in terms of + package name) that are required for the current package to be + patched. These dependencies are guaranteed to be extracted and + patched before the current package is patched. In a similar way, + HOST_LIBFOO_PATCH_DEPENDENCIES lists the dependencies for the + current host package. + This is seldom used; usually, LIBFOO_DEPENDENCIES is what you + really want to use. +
  • +LIBFOO_PROVIDES lists all the virtual packages libfoo is an + implementation of. See Section 17.11, “Infrastructure for virtual packages”. +
  • +LIBFOO_INSTALL_STAGING can be set to YES or NO (default). If + set to YES, then the commands in the LIBFOO_INSTALL_STAGING_CMDS + variables are executed to install the package into the staging + directory. +
  • +LIBFOO_INSTALL_TARGET can be set to YES (default) or NO. If + set to YES, then the commands in the LIBFOO_INSTALL_TARGET_CMDS + variables are executed to install the package into the target + directory. +
  • +LIBFOO_INSTALL_IMAGES can be set to YES or NO (default). If + set to YES, then the commands in the LIBFOO_INSTALL_IMAGES_CMDS + variable are executed to install the package into the images + directory. +
  • +LIBFOO_CONFIG_SCRIPTS lists the names of the files in + $(STAGING_DIR)/usr/bin that need some special fixing to make them + cross-compiling friendly. Multiple file names separated by space can + be given and all are relative to $(STAGING_DIR)/usr/bin. The files + listed in LIBFOO_CONFIG_SCRIPTS are also removed from + $(TARGET_DIR)/usr/bin since they are not needed on the target. +
  • +LIBFOO_DEVICES lists the device files to be created by Buildroot + when using the static device table. The syntax to use is the + makedevs one. You can find some documentation for this syntax in the + Chapter 23, Makedev syntax documentation. This variable is optional. +
  • +LIBFOO_PERMISSIONS lists the changes of permissions to be done at + the end of the build process. The syntax is once again the makedevs one. + You can find some documentation for this syntax in the Chapter 23, Makedev syntax documentation. + This variable is optional. +
  • +LIBFOO_USERS lists the users to create for this package, if it installs + a program you want to run as a specific user (e.g. as a daemon, or as a + cron-job). The syntax is similar in spirit to the makedevs one, and is + described in the Chapter 24, Makeusers syntax documentation. This variable is optional. +
  • +LIBFOO_LICENSE defines the license (or licenses) under which the package + is released. + This name will appear in the manifest file produced by make legal-info. + If the license appears in the SPDX License List, + use the SPDX short identifier to make the manifest file uniform. + Otherwise, describe the license in a precise and concise way, avoiding + ambiguous names such as BSD which actually name a family of licenses. + This variable is optional. If it is not defined, unknown will appear in + the license field of the manifest file for this package. + The expected format for this variable must comply with the following rules: +

    • +If different parts of the package are released under different + licenses, then comma separate licenses (e.g. LIBFOO_LICENSE = + GPL-2.0+, LGPL-2.1+). If there is clear distinction between which + component is licensed under what license, then annotate the license + with that component, between parenthesis (e.g. LIBFOO_LICENSE = + GPL-2.0+ (programs), LGPL-2.1+ (libraries)). +
    • +If the package is dual licensed, then separate licenses with the + or keyword (e.g. LIBFOO_LICENSE = AFL-2.1 or GPL-2.0+). +
  • +LIBFOO_LICENSE_FILES is a space-separated list of files in the package + tarball that contain the license(s) under which the package is released. + make legal-info copies all of these files in the legal-info directory. + See Chapter 12, Legal notice and licensing for more information. + This variable is optional. If it is not defined, a warning will be produced + to let you know, and not saved will appear in the license files field + of the manifest file for this package. +
  • +LIBFOO_ACTUAL_SOURCE_TARBALL only applies to packages whose + LIBFOO_SITE / LIBTOO_SOURCE pair points to an archive that does + not actually contain source code, but binary code. This a very + uncommon case, only known to apply to external toolchains which come + already compiled, although theoretically it might apply to other + packages. In such cases a separate tarball is usually available with + the actual source code. Set LIBFOO_ACTUAL_SOURCE_TARBALL to the + name of the actual source code archive and Buildroot will download + it and use it when you run make legal-info to collect + legally-relevant material. Note this file will not be downloaded + during regular builds nor by make source. +
  • +LIBFOO_ACTUAL_SOURCE_SITE provides the location of the actual + source tarball. The default value is LIBFOO_SITE, so you don’t + need to set this variable if the binary and source archives are + hosted on the same directory. If LIBFOO_ACTUAL_SOURCE_TARBALL is + not set, it doesn’t make sense to define + LIBFOO_ACTUAL_SOURCE_SITE. +
  • +LIBFOO_REDISTRIBUTE can be set to YES (default) or NO to indicate if + the package source code is allowed to be redistributed. Set it to NO for + non-opensource packages: Buildroot will not save the source code for this + package when collecting the legal-info. +
  • +LIBFOO_FLAT_STACKSIZE defines the stack size of an application built into + the FLAT binary format. The application stack size on the NOMMU architecture + processors can’t be enlarged at run time. The default stack size for the + FLAT binary format is only 4k bytes. If the application consumes more stack, + append the required number here. +
  • +LIBFOO_BIN_ARCH_EXCLUDE is a space-separated list of paths (relative + to the target directory) to ignore when checking that the package + installs correctly cross-compiled binaries. You seldom need to set this + variable, unless the package installs binary blobs outside the default + locations, /lib/firmware, /usr/lib/firmware, /lib/modules, + /usr/lib/modules, and /usr/share, which are automatically excluded. +

The recommended way to define these variables is to use the following +syntax:

LIBFOO_VERSION = 2.32

Now, the variables that define what should be performed at the +different steps of the build process.

  • +LIBFOO_EXTRACT_CMDS lists the actions to be performed to extract + the package. This is generally not needed as tarballs are + automatically handled by Buildroot. However, if the package uses a + non-standard archive format, such as a ZIP or RAR file, or has a + tarball with a non-standard organization, this variable allows to + override the package infrastructure default behavior. +
  • +LIBFOO_CONFIGURE_CMDS lists the actions to be performed to + configure the package before its compilation. +
  • +LIBFOO_BUILD_CMDS lists the actions to be performed to + compile the package. +
  • +HOST_LIBFOO_INSTALL_CMDS lists the actions to be performed + to install the package, when the package is a host package. The + package must install its files to the directory given by + $(HOST_DIR). All files, including development files such as + headers should be installed, since other packages might be compiled + on top of this package. +
  • +LIBFOO_INSTALL_TARGET_CMDS lists the actions to be + performed to install the package to the target directory, when the + package is a target package. The package must install its files to + the directory given by $(TARGET_DIR). Only the files required for + execution of the package have to be + installed. Header files, static libraries and documentation will be + removed again when the target filesystem is finalized. +
  • +LIBFOO_INSTALL_STAGING_CMDS lists the actions to be + performed to install the package to the staging directory, when the + package is a target package. The package must install its files to + the directory given by $(STAGING_DIR). All development files + should be installed, since they might be needed to compile other + packages. +
  • +LIBFOO_INSTALL_IMAGES_CMDS lists the actions to be performed to + install the package to the images directory, when the package is a + target package. The package must install its files to the directory + given by $(BINARIES_DIR). Only files that are binary images (aka + images) that do not belong in the TARGET_DIR but are necessary + for booting the board should be placed here. For example, a package + should utilize this step if it has binaries which would be similar + to the kernel image, bootloader or root filesystem images. +
  • +LIBFOO_INSTALL_INIT_SYSV and LIBFOO_INSTALL_INIT_SYSTEMD list the + actions to install init scripts either for the systemV-like init systems + (busybox, sysvinit, etc.) or for the systemd units. These commands + will be run only when the relevant init system is installed (i.e. if + systemd is selected as the init system in the configuration, only + LIBFOO_INSTALL_INIT_SYSTEMD will be run). +
  • +LIBFOO_HELP_CMDS lists the actions to print the package help, which + is included to the main make help output. These commands can print + anything in any format. + This is seldom used, as packages rarely have custom rules. Do not use + this variable, unless you really know that you need to print help. +

The preferred way to define these variables is:

define LIBFOO_CONFIGURE_CMDS
+        action 1
+        action 2
+        action 3
+endef

In the action definitions, you can use the following variables:

  • +$(LIBFOO_PKGDIR) contains the path to the directory containing the + libfoo.mk and Config.in files. This variable is useful when it is + necessary to install a file bundled in Buildroot, like a runtime + configuration file, a splashscreen image… +
  • +$(@D), which contains the directory in which the package source + code has been uncompressed. +
  • +$(DL_DIR) contains the path to the directory where all the downloads made + by Buildroot are stored. +
  • +$(TARGET_CC), $(TARGET_LD), etc. to get the target + cross-compilation utilities +
  • +$(TARGET_CROSS) to get the cross-compilation toolchain prefix +
  • +Of course the $(HOST_DIR), $(STAGING_DIR) and $(TARGET_DIR) + variables to install the packages properly. +

Finally, you can also use hooks. See Section 17.20, “Hooks available in the various build steps” for more information.

17.6. Infrastructure for autotools-based packages

17.6.1. autotools-package tutorial

First, let’s see how to write a .mk file for an autotools-based +package, with an example :

01: ################################################################################
+02: #
+03: # libfoo
+04: #
+05: ################################################################################
+06:
+07: LIBFOO_VERSION = 1.0
+08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
+09: LIBFOO_SITE = http://www.foosoftware.org/download
+10: LIBFOO_INSTALL_STAGING = YES
+11: LIBFOO_INSTALL_TARGET = NO
+12: LIBFOO_CONF_OPTS = --disable-shared
+13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf
+14:
+15: $(eval $(autotools-package))

On line 7, we declare the version of the package.

On line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended) +and the location of the tarball on the Web. Buildroot will automatically +download the tarball from this location.

On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in output/staging/ +is the directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed in +the staging directory: their development files are needed to compile +other libraries or applications depending on them. Also by default, when +staging installation is enabled, packages are installed in this location +using the make install command.

On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they will +not be used at runtime. By default, target installation is enabled; setting +this variable to NO is almost never needed. Also by default, packages are +installed in this location using the make install command.

On line 12, we tell Buildroot to pass a custom configure option, that +will be passed to the ./configure script before configuring +and building the package.

On line 13, we declare our dependencies, so that they are built +before the build process of our package starts.

Finally, on line line 15, we invoke the autotools-package +macro that generates all the Makefile rules that actually allows the +package to be built.

17.6.2. autotools-package reference

The main macro of the autotools package infrastructure is +autotools-package. It is similar to the generic-package macro. The ability to +have target and host packages is also available, with the +host-autotools-package macro.

Just like the generic infrastructure, the autotools infrastructure +works by defining a number of variables before calling the +autotools-package macro.

First, all the package metadata information variables that exist in the +generic infrastructure also exist in the autotools infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, +LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, +LIBFOO_INSTALL_STAGING, LIBFOO_INSTALL_TARGET.

A few additional variables, specific to the autotools infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them.

  • +LIBFOO_SUBDIR may contain the name of a subdirectory + inside the package that contains the configure script. This is useful, + if for example, the main configure script is not at the root of the + tree extracted by the tarball. If HOST_LIBFOO_SUBDIR is + not specified, it defaults to LIBFOO_SUBDIR. +
  • +LIBFOO_CONF_ENV, to specify additional environment + variables to pass to the configure script. By default, empty. +
  • +LIBFOO_CONF_OPTS, to specify additional configure + options to pass to the configure script. By default, empty. +
  • +LIBFOO_MAKE, to specify an alternate make + command. This is typically useful when parallel make is enabled in + the configuration (using BR2_JLEVEL) but that this + feature should be disabled for the given package, for one reason or + another. By default, set to $(MAKE). If parallel building + is not supported by the package, then it should be set to + LIBFOO_MAKE=$(MAKE1). +
  • +LIBFOO_MAKE_ENV, to specify additional environment + variables to pass to make in the build step. These are passed before + the make command. By default, empty. +
  • +LIBFOO_MAKE_OPTS, to specify additional variables to + pass to make in the build step. These are passed after the + make command. By default, empty. +
  • +LIBFOO_AUTORECONF, tells whether the package should + be autoreconfigured or not (i.e. if the configure script and + Makefile.in files should be re-generated by re-running autoconf, + automake, libtool, etc.). Valid values are YES and + NO. By default, the value is NO +
  • +LIBFOO_AUTORECONF_ENV, to specify additional environment + variables to pass to the autoreconf program if + LIBFOO_AUTORECONF=YES. These are passed in the environment of + the autoreconf command. By default, empty. +
  • +LIBFOO_AUTORECONF_OPTS to specify additional options + passed to the autoreconf program if + LIBFOO_AUTORECONF=YES. By default, empty. +
  • +LIBFOO_GETTEXTIZE, tells whether the package should be + gettextized or not (i.e. if the package uses a different gettext + version than Buildroot provides, and it is needed to run + gettextize.) Only valid when LIBFOO_AUTORECONF=YES. Valid + values are YES and NO. The default is NO. +
  • +LIBFOO_GETTEXTIZE_OPTS, to specify additional options passed to + the gettextize program, if LIBFOO_GETTEXTIZE=YES. You may + use that if, for example, the .po files are not located in the + standard place (i.e. in po/ at the root of the package.) By + default, -f. +
  • +LIBFOO_LIBTOOL_PATCH tells whether the Buildroot + patch to fix libtool cross-compilation issues should be applied or + not. Valid values are YES and NO. By + default, the value is YES +
  • +LIBFOO_INSTALL_STAGING_OPTS contains the make options + used to install the package to the staging directory. By default, the + value is DESTDIR=$(STAGING_DIR) install, which is + correct for most autotools packages. It is still possible to override + it. +
  • +LIBFOO_INSTALL_TARGET_OPTS contains the make options + used to install the package to the target directory. By default, the + value is DESTDIR=$(TARGET_DIR) install. The default + value is correct for most autotools packages, but it is still possible + to override it if needed. +

With the autotools infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most autotools-based packages. However, when required, it is +still possible to customize what is done in any particular step:

  • +By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 17.20, “Hooks available in the various build steps” for details. +
  • +By overriding one of the steps. For example, even if the autotools + infrastructure is used, if the package .mk file defines its + own LIBFOO_CONFIGURE_CMDS variable, it will be used + instead of the default autotools one. However, using this method + should be restricted to very specific cases. Do not use it in the + general case. +

17.7. Infrastructure for CMake-based packages

17.7.1. cmake-package tutorial

First, let’s see how to write a .mk file for a CMake-based package, +with an example :

01: ################################################################################
+02: #
+03: # libfoo
+04: #
+05: ################################################################################
+06:
+07: LIBFOO_VERSION = 1.0
+08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
+09: LIBFOO_SITE = http://www.foosoftware.org/download
+10: LIBFOO_INSTALL_STAGING = YES
+11: LIBFOO_INSTALL_TARGET = NO
+12: LIBFOO_CONF_OPTS = -DBUILD_DEMOS=ON
+13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf
+14:
+15: $(eval $(cmake-package))

On line 7, we declare the version of the package.

On line 8 and 9, we declare the name of the tarball (xz-ed tarball recommended) +and the location of the tarball on the Web. Buildroot will automatically +download the tarball from this location.

On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in output/staging/ +is the directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed in +the staging directory: their development files are needed to compile +other libraries or applications depending on them. Also by default, when +staging installation is enabled, packages are installed in this location +using the make install command.

On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they will +not be used at runtime. By default, target installation is enabled; setting +this variable to NO is almost never needed. Also by default, packages are +installed in this location using the make install command.

On line 12, we tell Buildroot to pass custom options to CMake when it is +configuring the package.

On line 13, we declare our dependencies, so that they are built +before the build process of our package starts.

Finally, on line line 15, we invoke the cmake-package +macro that generates all the Makefile rules that actually allows the +package to be built.

17.7.2. cmake-package reference

The main macro of the CMake package infrastructure is +cmake-package. It is similar to the generic-package macro. The ability to +have target and host packages is also available, with the +host-cmake-package macro.

Just like the generic infrastructure, the CMake infrastructure works +by defining a number of variables before calling the cmake-package +macro.

First, all the package metadata information variables that exist in +the generic infrastructure also exist in the CMake infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET.

A few additional variables, specific to the CMake infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them.

  • +LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main CMakeLists.txt file. This is useful, + if for example, the main CMakeLists.txt file is not at the root of + the tree extracted by the tarball. If HOST_LIBFOO_SUBDIR is not + specified, it defaults to LIBFOO_SUBDIR. +
  • +LIBFOO_CONF_ENV, to specify additional environment variables to + pass to CMake. By default, empty. +
  • +LIBFOO_CONF_OPTS, to specify additional configure options to pass + to CMake. By default, empty. A number of common CMake options are + set by the cmake-package infrastructure; so it is normally not + necessary to set them in the package’s *.mk file unless you want + to override them: +

    • +CMAKE_BUILD_TYPE is driven by BR2_ENABLE_DEBUG; +
    • +CMAKE_INSTALL_PREFIX; +
    • +BUILD_SHARED_LIBS is driven by BR2_STATIC_LIBS; +
    • +BUILD_DOC, BUILD_DOCS are disabled; +
    • +BUILD_EXAMPLE, BUILD_EXAMPLES are disabled; +
    • +BUILD_TEST, BUILD_TESTS, BUILD_TESTING are disabled. +
  • +LIBFOO_SUPPORTS_IN_SOURCE_BUILD = NO should be set when the package + cannot be built inside the source tree but needs a separate build + directory. +
  • +LIBFOO_MAKE, to specify an alternate make command. This is + typically useful when parallel make is enabled in the configuration + (using BR2_JLEVEL) but that this feature should be disabled for + the given package, for one reason or another. By default, set to + $(MAKE). If parallel building is not supported by the package, + then it should be set to LIBFOO_MAKE=$(MAKE1). +
  • +LIBFOO_MAKE_ENV, to specify additional environment variables to + pass to make in the build step. These are passed before the make + command. By default, empty. +
  • +LIBFOO_MAKE_OPTS, to specify additional variables to pass to make + in the build step. These are passed after the make command. By + default, empty. +
  • +LIBFOO_INSTALL_STAGING_OPTS contains the make options used to + install the package to the staging directory. By default, the value + is DESTDIR=$(STAGING_DIR) install, which is correct for most + CMake packages. It is still possible to override it. +
  • +LIBFOO_INSTALL_TARGET_OPTS contains the make options used to + install the package to the target directory. By default, the value + is DESTDIR=$(TARGET_DIR) install. The default value is correct + for most CMake packages, but it is still possible to override it if + needed. +

With the CMake infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most CMake-based packages. However, when required, it is still +possible to customize what is done in any particular step:

  • +By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 17.20, “Hooks available in the various build steps” for details. +
  • +By overriding one of the steps. For example, even if the CMake + infrastructure is used, if the package .mk file defines its own + LIBFOO_CONFIGURE_CMDS variable, it will be used instead of the + default CMake one. However, using this method should be restricted + to very specific cases. Do not use it in the general case. +

17.8. Infrastructure for Python packages

This infrastructure applies to Python packages that use the standard +Python setuptools mechanism as their build system, generally +recognizable by the usage of a setup.py script.

17.8.1. python-package tutorial

First, let’s see how to write a .mk file for a Python package, +with an example :

01: ################################################################################
+02: #
+03: # python-foo
+04: #
+05: ################################################################################
+06:
+07: PYTHON_FOO_VERSION = 1.0
+08: PYTHON_FOO_SOURCE = python-foo-$(PYTHON_FOO_VERSION).tar.xz
+09: PYTHON_FOO_SITE = http://www.foosoftware.org/download
+10: PYTHON_FOO_LICENSE = BSD-3-Clause
+11: PYTHON_FOO_LICENSE_FILES = LICENSE
+12: PYTHON_FOO_ENV = SOME_VAR=1
+13: PYTHON_FOO_DEPENDENCIES = libmad
+14: PYTHON_FOO_SETUP_TYPE = distutils
+15:
+16: $(eval $(python-package))

On line 7, we declare the version of the package.

On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location.

On line 10 and 11, we give licensing details about the package (its +license on line 10, and the file containing the license text on line +11).

On line 12, we tell Buildroot to pass custom options to the Python +setup.py script when it is configuring the package.

On line 13, we declare our dependencies, so that they are built +before the build process of our package starts.

On line 14, we declare the specific Python build system being used. In +this case the distutils Python build system is used. The two +supported ones are distutils and setuptools.

Finally, on line 16, we invoke the python-package macro that +generates all the Makefile rules that actually allow the package to be +built.

17.8.2. python-package reference

As a policy, packages that merely provide Python modules should all be +named python-<something> in Buildroot. Other packages that use the +Python build system, but are not Python modules, can freely choose +their name (existing examples in Buildroot are scons and +supervisor).

In their Config.in file, they should depend on BR2_PACKAGE_PYTHON +so that when Buildroot will enable Python 3 usage for modules, we will +be able to enable Python modules progressively on Python 3.

The main macro of the Python package infrastructure is +python-package. It is similar to the generic-package macro. It is +also possible to create Python host packages with the +host-python-package macro.

Just like the generic infrastructure, the Python infrastructure works +by defining a number of variables before calling the python-package +or host-python-package macros.

All the package metadata information variables that exist in the +generic package infrastructure +Section 17.5.2, “generic-package reference” also +exist in the Python infrastructure: PYTHON_FOO_VERSION, +PYTHON_FOO_SOURCE, PYTHON_FOO_PATCH, PYTHON_FOO_SITE, +PYTHON_FOO_SUBDIR, PYTHON_FOO_DEPENDENCIES, PYTHON_FOO_LICENSE, +PYTHON_FOO_LICENSE_FILES, PYTHON_FOO_INSTALL_STAGING, etc.

Note that:

  • +It is not necessary to add python or host-python in the + PYTHON_FOO_DEPENDENCIES variable of a package, since these basic + dependencies are automatically added as needed by the Python + package infrastructure. +
  • +Similarly, it is not needed to add host-setuptools and/or + host-distutilscross dependencies to PYTHON_FOO_DEPENDENCIES for + setuptools-based packages, since these are automatically added by + the Python infrastructure as needed. +

One variable specific to the Python infrastructure is mandatory:

  • +PYTHON_FOO_SETUP_TYPE, to define which Python build system is used + by the package. The two supported values are distutils and + setuptools. If you don’t know which one is used in your package, + look at the setup.py file in your package source code, and see + whether it imports things from the distutils module or the + setuptools module. +

A few additional variables, specific to the Python infrastructure, can +optionally be defined, depending on the package’s needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none.

  • +PYTHON_FOO_ENV, to specify additional environment variables to + pass to the Python setup.py script (for both the build and install + steps). Note that the infrastructure is automatically passing + several standard variables, defined in PKG_PYTHON_DISTUTILS_ENV + (for distutils target packages), HOST_PKG_PYTHON_DISTUTILS_ENV + (for distutils host packages), PKG_PYTHON_SETUPTOOLS_ENV (for + setuptools target packages) and HOST_PKG_PYTHON_SETUPTOOLS_ENV + (for setuptools host packages). +
  • +PYTHON_FOO_BUILD_OPTS, to specify additional options to pass to the + Python setup.py script during the build step. For target distutils + packages, the PKG_PYTHON_DISTUTILS_BUILD_OPTS options are already + passed automatically by the infrastructure. +
  • +PYTHON_FOO_INSTALL_TARGET_OPTS, PYTHON_FOO_INSTALL_STAGING_OPTS, + HOST_PYTHON_FOO_INSTALL_OPTS to specify additional options to pass + to the Python setup.py script during the target installation step, + the staging installation step or the host installation, + respectively. Note that the infrastructure is automatically passing + some options, defined in PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS + or PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS (for target distutils + packages), HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS (for host + distutils packages), PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS or + PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_OPTS (for target setuptools + packages) and HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS (for host + setuptools packages). +
  • +HOST_PYTHON_FOO_NEEDS_HOST_PYTHON, to define the host python + interpreter. The usage of this variable is limited to host + packages. The two supported value are python2 and python3. It + will ensure the right host python package is available and will + invoke it for the build. If some build steps are overloaded, the + right python interpreter must be explicitly called in the commands. +

With the Python infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most Python-based packages. However, when required, it is still +possible to customize what is done in any particular step:

  • +By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 17.20, “Hooks available in the various build steps” for details. +
  • +By overriding one of the steps. For example, even if the Python + infrastructure is used, if the package .mk file defines its own + PYTHON_FOO_BUILD_CMDS variable, it will be used instead of the + default Python one. However, using this method should be restricted + to very specific cases. Do not use it in the general case. +

17.8.3. Generating a python-package from a PyPI repository

If the Python package for which you would like to create a Buildroot +package is available on PyPI, you may want to use the scanpypi tool +located in utils/ to automate the process.

You can find the list of existing PyPI packages +here.

scanpypi requires Python’s setuptools package to be installed on +your host.

When at the root of your buildroot directory just do :

utils/scanpypi foo bar -o package

This will generate packages python-foo and python-bar in the package +folder if they exist on https://pypi.python.org.

Find the external python modules menu and insert your package inside. +Keep in mind that the items inside a menu should be in alphabetical order.

Please keep in mind that you’ll most likely have to manually check the +package for any mistakes as there are things that cannot be guessed by +the generator (e.g. dependencies on any of the python core modules +such as BR2_PACKAGE_PYTHON_ZLIB). Also, please take note that the +license and license files are guessed and must be checked. You also +need to manually add the package to the package/Config.in file.

If your Buildroot package is not in the official Buildroot tree but in +a br2-external tree, use the -o flag as follows:

utils/scanpypi foo bar -o other_package_dir

This will generate packages python-foo and python-bar in the +other_package_directory instead of package.

Option -h will list the available options:

utils/scanpypi -h

17.8.4. python-package CFFI backend

C Foreign Function Interface for Python (CFFI) provides a convenient +and reliable way to call compiled C code from Python using interface +declarations written in C. Python packages relying on this backend can +be identified by the appearance of a cffi dependency in the +install_requires field of their setup.py file.

Such a package should:

  • +add python-cffi as a runtime dependency in order to install the +compiled C library wrapper on the target. This is achieved by adding +select BR2_PACKAGE_PYTHON_CFFI to the package Config.in. +
config BR2_PACKAGE_PYTHON_FOO
+        bool "python-foo"
+        select BR2_PACKAGE_PYTHON_CFFI # runtime
  • +add host-python-cffi as a build-time dependency in order to +cross-compile the C wrapper. This is achieved by adding +host-python-cffi to the PYTHON_FOO_DEPENDENCIES variable. +
################################################################################
+#
+# python-foo
+#
+################################################################################
+
+...
+
+PYTHON_FOO_DEPENDENCIES = host-python-cffi
+
+$(eval $(python-package))

17.9. Infrastructure for LuaRocks-based packages

17.9.1. luarocks-package tutorial

First, let’s see how to write a .mk file for a LuaRocks-based package, +with an example :

01: ################################################################################
+02: #
+03: # lua-foo
+04: #
+05: ################################################################################
+06:
+07: LUA_FOO_VERSION = 1.0.2-1
+08: LUA_FOO_NAME_UPSTREAM = foo
+09: LUA_FOO_DEPENDENCIES = bar
+10:
+11: LUA_FOO_BUILD_OPTS += BAR_INCDIR=$(STAGING_DIR)/usr/include
+12: LUA_FOO_BUILD_OPTS += BAR_LIBDIR=$(STAGING_DIR)/usr/lib
+13: LUA_FOO_LICENSE = luaFoo license
+14: LUA_FOO_LICENSE_FILES = $(LUA_FOO_SUBDIR)/COPYING
+15:
+16: $(eval $(luarocks-package))

On line 7, we declare the version of the package (the same as in the rockspec, +which is the concatenation of the upstream version and the rockspec revision, +separated by a hyphen -).

On line 8, we declare that the package is called "foo" on LuaRocks. In +Buildroot, we give Lua-related packages a name that starts with "lua", so the +Buildroot name is different from the upstream name. LUA_FOO_NAME_UPSTREAM +makes the link between the two names.

On line 9, we declare our dependencies against native libraries, so that they +are built before the build process of our package starts.

On lines 11-12, we tell Buildroot to pass custom options to LuaRocks when it is +building the package.

On lines 13-14, we specify the licensing terms for the package.

Finally, on line 16, we invoke the luarocks-package +macro that generates all the Makefile rules that actually allows the +package to be built.

17.9.2. luarocks-package reference

LuaRocks is a deployment and management system for Lua modules, and supports +various build.type: builtin, make and cmake. In the context of +Buildroot, the luarocks-package infrastructure only supports the builtin +mode. LuaRocks packages that use the make or cmake build mechanisms +should instead be packaged using the generic-package and cmake-package +infrastructures in Buildroot, respectively.

The main macro of the LuaRocks package infrastructure is luarocks-package: +like generic-package it works by defining a number of variables providing +metadata information about the package, and then calling luarocks-package. It +is worth mentioning that building LuaRocks packages for the host is not +supported, so the macro host-luarocks-package is not implemented.

Just like the generic infrastructure, the LuaRocks infrastructure works +by defining a number of variables before calling the luarocks-package +macro.

First, all the package metadata information variables that exist in +the generic infrastructure also exist in the LuaRocks infrastructure: +LUA_FOO_VERSION, LUA_FOO_SOURCE, LUA_FOO_SITE, +LUA_FOO_DEPENDENCIES, LUA_FOO_LICENSE, LUA_FOO_LICENSE_FILES.

Two of them are populated by the LuaRocks infrastructure (for the +download step). If your package is not hosted on the LuaRocks mirror +$(BR2_LUAROCKS_MIRROR), you can override them:

  • +LUA_FOO_SITE, which defaults to $(BR2_LUAROCKS_MIRROR) +
  • +LUA_FOO_SOURCE, which defaults to + $(lowercase LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).src.rock +

A few additional variables, specific to the LuaRocks infrastructure, are +also defined. They can be overridden in specific cases.

  • +LUA_FOO_NAME_UPSTREAM, which defaults to lua-foo, i.e. the Buildroot + package name +
  • +LUA_FOO_ROCKSPEC, which defaults to + $(lowercase LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).rockspec +
  • +LUA_FOO_SUBDIR, which defaults to + $(LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION_WITHOUT_ROCKSPEC_REVISION) +
  • +LUA_FOO_BUILD_OPTS contains additional build options for the + luarocks build call. +

17.10. Infrastructure for Perl/CPAN packages

17.10.1. perl-package tutorial

First, let’s see how to write a .mk file for a Perl/CPAN package, +with an example :

01: ################################################################################
+02: #
+03: # perl-foo-bar
+04: #
+05: ################################################################################
+06:
+07: PERL_FOO_BAR_VERSION = 0.02
+08: PERL_FOO_BAR_SOURCE = Foo-Bar-$(PERL_FOO_BAR_VERSION).tar.gz
+09: PERL_FOO_BAR_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MO/MONGER
+10: PERL_FOO_BAR_DEPENDENCIES = perl-strictures
+11: PERL_FOO_BAR_LICENSE = Artistic or GPL-1.0+
+12: PERL_FOO_BAR_LICENSE_FILES = LICENSE
+13:
+14: $(eval $(perl-package))

On line 7, we declare the version of the package.

On line 8 and 9, we declare the name of the tarball and the location +of the tarball on a CPAN server. Buildroot will automatically download +the tarball from this location.

On line 10, we declare our dependencies, so that they are built +before the build process of our package starts.

On line 11 and 12, we give licensing details about the package (its +license on line 11, and the file containing the license text on line +12).

Finally, on line 14, we invoke the perl-package macro that +generates all the Makefile rules that actually allow the package to be +built.

Most of these data can be retrieved from https://metacpan.org/. +So, this file and the Config.in can be generated by running +the script utils/scancpan Foo-Bar in the Buildroot directory +(or in a br2-external tree). +This script creates a Config.in file and foo-bar.mk file for the +requested package, and also recursively for all dependencies specified by +CPAN. You should still manually edit the result. In particular, the +following things should be checked.

  • +If the perl module links with a shared library that is provided by + another (non-perl) package, this dependency is not added automatically. + It has to be added manually to PERL_FOO_BAR_DEPENDENCIES. +
  • +The package/Config.in file has to be updated manually to include the + generated Config.in files. As a hint, the scancpan script prints out + the required source "…" statements, sorted alphabetically. +

17.10.2. perl-package reference

As a policy, packages that provide Perl/CPAN modules should all be +named perl-<something> in Buildroot.

This infrastructure handles various Perl build systems : +ExtUtils-MakeMaker (EUMM), Module-Build (MB) and Module-Build-Tiny. +Build.PL is preferred by default when a package provides a Makefile.PL +and a Build.PL.

The main macro of the Perl/CPAN package infrastructure is +perl-package. It is similar to the generic-package macro. The ability to +have target and host packages is also available, with the +host-perl-package macro.

Just like the generic infrastructure, the Perl/CPAN infrastructure +works by defining a number of variables before calling the +perl-package macro.

First, all the package metadata information variables that exist in the +generic infrastructure also exist in the Perl/CPAN infrastructure: +PERL_FOO_VERSION, PERL_FOO_SOURCE, +PERL_FOO_PATCH, PERL_FOO_SITE, +PERL_FOO_SUBDIR, PERL_FOO_DEPENDENCIES, +PERL_FOO_INSTALL_TARGET.

Note that setting PERL_FOO_INSTALL_STAGING to YES has no effect +unless a PERL_FOO_INSTALL_STAGING_CMDS variable is defined. The perl +infrastructure doesn’t define these commands since Perl modules generally +don’t need to be installed to the staging directory.

A few additional variables, specific to the Perl/CPAN infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them.

  • +PERL_FOO_PREFER_INSTALLER/HOST_PERL_FOO_PREFER_INSTALLER, + specifies the preferred installation method. Possible values are + EUMM (for Makefile.PL based installation using + ExtUtils-MakeMaker) and MB (for Build.PL based installation + using Module-Build). This variable is only used when the package + provides both installation methods. +
  • +PERL_FOO_CONF_ENV/HOST_PERL_FOO_CONF_ENV, to specify additional + environment variables to pass to the perl Makefile.PL or perl Build.PL. + By default, empty. +
  • +PERL_FOO_CONF_OPTS/HOST_PERL_FOO_CONF_OPTS, to specify additional + configure options to pass to the perl Makefile.PL or perl Build.PL. + By default, empty. +
  • +PERL_FOO_BUILD_OPTS/HOST_PERL_FOO_BUILD_OPTS, to specify additional + options to pass to make pure_all or perl Build build in the build step. + By default, empty. +
  • +PERL_FOO_INSTALL_TARGET_OPTS, to specify additional options to + pass to make pure_install or perl Build install in the install step. + By default, empty. +
  • +HOST_PERL_FOO_INSTALL_OPTS, to specify additional options to + pass to make pure_install or perl Build install in the install step. + By default, empty. +

17.11. Infrastructure for virtual packages

In Buildroot, a virtual package is a package whose functionalities are +provided by one or more packages, referred to as providers. The virtual +package management is an extensible mechanism allowing the user to choose +the provider used in the rootfs.

For example, OpenGL ES is an API for 2D and 3D graphics on embedded systems. +The implementation of this API is different for the Allwinner Tech Sunxi and +the Texas Instruments OMAP35xx platforms. So libgles will be a virtual +package and sunxi-mali and ti-gfx will be the providers.

17.11.1. virtual-package tutorial

In the following example, we will explain how to add a new virtual package +(something-virtual) and a provider for it (some-provider).

First, let’s create the virtual package.

17.11.2. Virtual package’s Config.in file

The Config.in file of virtual package something-virtual should contain:

01: config BR2_PACKAGE_HAS_SOMETHING_VIRTUAL
+02:     bool
+03:
+04: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL
+05:     depends on BR2_PACKAGE_HAS_SOMETHING_VIRTUAL
+06:     string

In this file, we declare two options, BR2_PACKAGE_HAS_SOMETHING_VIRTUAL and +BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL, whose values will be used by the +providers.

17.11.3. Virtual package’s .mk file

The .mk for the virtual package should just evaluate the virtual-package macro:

01: ################################################################################
+02: #
+03: # something-virtual
+04: #
+05: ################################################################################
+06:
+07: $(eval $(virtual-package))

The ability to have target and host packages is also available, with the +host-virtual-package macro.

17.11.4. Provider’s Config.in file

When adding a package as a provider, only the Config.in file requires some +modifications.

The Config.in file of the package some-provider, which provides the +functionalities of something-virtual, should contain:

01: config BR2_PACKAGE_SOME_PROVIDER
+02:     bool "some-provider"
+03:     select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL
+04:     help
+05:       This is a comment that explains what some-provider is.
+06:
+07:       http://foosoftware.org/some-provider/
+08:
+09: if BR2_PACKAGE_SOME_PROVIDER
+10: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL
+11:     default "some-provider"
+12: endif

On line 3, we select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL, and on line 11, we +set the value of BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL to the name of the +provider, but only if it is selected.

17.11.5. Provider’s .mk file

The .mk file should also declare an additional variable +SOME_PROVIDER_PROVIDES to contain the names of all the virtual +packages it is an implementation of:

01: SOME_PROVIDER_PROVIDES = something-virtual

Of course, do not forget to add the proper build and runtime dependencies for +this package!

17.11.6. Notes on depending on a virtual package

When adding a package that requires a certain FEATURE provided by a virtual +package, you have to use depends on BR2_PACKAGE_HAS_FEATURE, like so:

config BR2_PACKAGE_HAS_FEATURE
+    bool
+
+config BR2_PACKAGE_FOO
+    bool "foo"
+    depends on BR2_PACKAGE_HAS_FEATURE

17.11.7. Notes on depending on a specific provider

If your package really requires a specific provider, then you’ll have to +make your package depends on this provider; you can not select a +provider.

Let’s take an example with two providers for a FEATURE:

config BR2_PACKAGE_HAS_FEATURE
+    bool
+
+config BR2_PACKAGE_FOO
+    bool "foo"
+    select BR2_PACKAGE_HAS_FEATURE
+
+config BR2_PACKAGE_BAR
+    bool "bar"
+    select BR2_PACKAGE_HAS_FEATURE

And you are adding a package that needs FEATURE as provided by foo, +but not as provided by bar.

If you were to use select BR2_PACKAGE_FOO, then the user would still +be able to select BR2_PACKAGE_BAR in the menuconfig. This would create +a configuration inconsistency, whereby two providers of the same FEATURE +would be enabled at once, one explicitly set by the user, the other +implicitly by your select.

Instead, you have to use depends on BR2_PACKAGE_FOO, which avoids any +implicit configuration inconsistency.

17.12. Infrastructure for packages using kconfig for configuration files

A popular way for a software package to handle user-specified +configuration is kconfig. Among others, it is used by the Linux +kernel, Busybox, and Buildroot itself. The presence of a .config file +and a menuconfig target are two well-known symptoms of kconfig being +used.

Buildroot features an infrastructure for packages that use kconfig for +their configuration. This infrastructure provides the necessary logic to +expose the package’s menuconfig target as foo-menuconfig in +Buildroot, and to handle the copying back and forth of the configuration +file in a correct way.

The kconfig-package infrastructure is based on the generic-package +infrastructure. All variables supported by generic-package are +available in kconfig-package as well. See +Section 17.5.2, “generic-package reference” for more details.

In order to use the kconfig-package infrastructure for a Buildroot +package, the minimally required lines in the .mk file, in addition to +the variables required by the generic-package infrastructure, are:

FOO_KCONFIG_FILE = reference-to-source-configuration-file
+
+$(eval $(kconfig-package))

This snippet creates the following make targets:

  • +foo-menuconfig, which calls the package’s menuconfig target +
  • +foo-update-config, which copies the configuration back to the + source configuration file. It is not possible to use this target + when fragment files are set. +
  • +foo-update-defconfig, which copies the configuration back to the + source configuration file. The configuration file will only list the + options that differ from the default values. It is not possible to + use this target when fragment files are set. +

and ensures that the source configuration file is copied to the build +directory at the right moment.

There are two options to specify a configuration file to use, either +FOO_KCONFIG_FILE (as in the example, above) or FOO_KCONFIG_DEFCONFIG. +It is mandatory to provide either, but not both:

  • +FOO_KCONFIG_FILE specifies the path to a defconfig or full-config file + to be used to configure the package. +
  • +FOO_KCONFIG_DEFCONFIG specifies the defconfig make rule to call to + configure the package. +

In addition to these minimally required lines, several optional variables can +be set to suit the needs of the package under consideration:

  • +FOO_KCONFIG_EDITORS: a space-separated list of kconfig editors to + support, for example menuconfig xconfig. By default, menuconfig. +
  • +FOO_KCONFIG_FRAGMENT_FILES: a space-separated list of configuration + fragment files that are merged to the main configuration file. + Fragment files are typically used when there is a desire to stay in sync + with an upstream (def)config file, with some minor modifications. +
  • +FOO_KCONFIG_OPTS: extra options to pass when calling the kconfig + editors. This may need to include $(FOO_MAKE_OPTS), for example. By + default, empty. +
  • +FOO_KCONFIG_FIXUP_CMDS: a list of shell commands needed to fixup the + configuration file after copying it or running a kconfig editor. Such + commands may be needed to ensure a configuration consistent with other + configuration of Buildroot, for example. By default, empty. +
  • +FOO_KCONFIG_DOTCONFIG: path (with filename) of the .config file, + relative to the package source tree. The default, .config, should + be well suited for all packages that use the standard kconfig + infrastructure as inherited from the Linux kernel; some packages use + a derivative of kconfig that use a different location. +

17.13. Infrastructure for rebar-based packages

17.13.1. rebar-package tutorial

First, let’s see how to write a .mk file for a rebar-based package, +with an example :

01: ################################################################################
+02: #
+03: # erlang-foobar
+04: #
+05: ################################################################################
+06:
+07: ERLANG_FOOBAR_VERSION = 1.0
+08: ERLANG_FOOBAR_SOURCE = erlang-foobar-$(ERLANG_FOOBAR_VERSION).tar.xz
+09: ERLANG_FOOBAR_SITE = http://www.foosoftware.org/download
+10: ERLANG_FOOBAR_DEPENDENCIES = host-libaaa libbbb
+11:
+12: $(eval $(rebar-package))

On line 7, we declare the version of the package.

On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location.

On line 10, we declare our dependencies, so that they are built +before the build process of our package starts.

Finally, on line 12, we invoke the rebar-package macro that +generates all the Makefile rules that actually allows the package to +be built.

17.13.2. rebar-package reference

The main macro of the rebar package infrastructure is +rebar-package. It is similar to the generic-package macro. The +ability to have host packages is also available, with the +host-rebar-package macro.

Just like the generic infrastructure, the rebar infrastructure works +by defining a number of variables before calling the rebar-package +macro.

First, all the package metadata information variables that exist in +the generic infrastructure also exist in the rebar infrastructure: +ERLANG_FOOBAR_VERSION, ERLANG_FOOBAR_SOURCE, +ERLANG_FOOBAR_PATCH, ERLANG_FOOBAR_SITE, +ERLANG_FOOBAR_SUBDIR, ERLANG_FOOBAR_DEPENDENCIES, +ERLANG_FOOBAR_INSTALL_STAGING, ERLANG_FOOBAR_INSTALL_TARGET, +ERLANG_FOOBAR_LICENSE and ERLANG_FOOBAR_LICENSE_FILES.

A few additional variables, specific to the rebar infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them.

  • +ERLANG_FOOBAR_USE_AUTOCONF, to specify that the package uses + autoconf at the configuration step. When a package sets this + variable to YES, the autotools infrastructure is used. +

    Note. You can also use some of the variables from the autotools + infrastructure: ERLANG_FOOBAR_CONF_ENV, ERLANG_FOOBAR_CONF_OPTS, + ERLANG_FOOBAR_AUTORECONF, ERLANG_FOOBAR_AUTORECONF_ENV and + ERLANG_FOOBAR_AUTORECONF_OPTS.

  • +ERLANG_FOOBAR_USE_BUNDLED_REBAR, to specify that the package has + a bundled version of rebar and that it shall be used. Valid + values are YES or NO (the default). +

    Note. If the package bundles a rebar utility, but can use the generic + one that Buildroot provides, just say NO (i.e., do not specify + this variable). Only set if it is mandatory to use the rebar + utility bundled in this package.

  • +ERLANG_FOOBAR_REBAR_ENV, to specify additional environment + variables to pass to the rebar utility. +

With the rebar infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most rebar-based packages. However, when required, it is +still possible to customize what is done in any particular step:

  • +By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 17.20, “Hooks available in the various build steps” for details. +
  • +By overriding one of the steps. For example, even if the rebar + infrastructure is used, if the package .mk file defines its + own ERLANG_FOOBAR_BUILD_CMDS variable, it will be used instead + of the default rebar one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. +

17.14. Infrastructure for Waf-based packages

17.14.1. waf-package tutorial

First, let’s see how to write a .mk file for a Waf-based package, with +an example :

01: ################################################################################
+02: #
+03: # libfoo
+04: #
+05: ################################################################################
+06:
+07: LIBFOO_VERSION = 1.0
+08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
+09: LIBFOO_SITE = http://www.foosoftware.org/download
+10: LIBFOO_CONF_OPTS = --enable-bar --disable-baz
+11: LIBFOO_DEPENDENCIES = bar
+12:
+13: $(eval $(waf-package))

On line 7, we declare the version of the package.

On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location.

On line 10, we tell Buildroot what options to enable for libfoo.

On line 11, we tell Buildroot the depednencies of libfoo.

Finally, on line line 13, we invoke the waf-package +macro that generates all the Makefile rules that actually allows the +package to be built.

17.14.2. waf-package reference

The main macro of the Waf package infrastructure is waf-package. +It is similar to the generic-package macro.

Just like the generic infrastructure, the Waf infrastructure works +by defining a number of variables before calling the waf-package +macro.

First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Waf infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET.

An additional variable, specific to the Waf infrastructure, can +also be defined.

  • +LIBFOO_NEEDS_EXTERNAL_WAF can be set to YES or NO to tell + Buildroot to use the bundled waf executable. If set to NO, the + default, then Buildroot will use the waf executable provided in the + package source tree; if set to YES, then Buidlroot will download, + install waf as a host tool and use it to build the package. +
  • +LIBFOO_WAF_OPTS, to specify additional options to pass to the + waf script at every step of the package build process: configure, + build and installation. By default, empty. +
  • +LIBFOO_CONF_OPTS, to specify additional options to pass to the + waf script for the configuration step. By default, empty. +
  • +LIBFOO_BUILD_OPTS, to specify additional options to pass to the + waf script during the build step. By default, empty. +
  • +LIBFOO_INSTALL_STAGING_OPTS, to specify additional options to pass + to the waf script during the staging installation step. By default, + empty. +
  • +LIBFOO_INSTALL_TARGET_OPTS, to specify additional options to pass + to the waf script during the target installation step. By default, + empty. +

17.15. Integration of Meson-based packages

17.15.1. meson-package tutorial

Meson is an open source build system meant to be both +extremely fast, and, even more importantly, as user friendly as possible.

Buildroot does not (yet) provide a dedicated package infrastructure for +meson-based packages. So, we will explain how to write a .mk file for such a +package. Let’s start with an example:

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: FOO_VERSION = 1.0
+08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz
+09: FOO_SITE = http://www.foosoftware.org/download
+10: FOO_LICENSE = GPL-3.0+
+11: FOO_LICENSE_FILES = COPYING
+12: FOO_INSTALL_STAGING = YES
+13:
+14: FOO_DEPENDENCIES = host-meson host-pkgconf bar
+15:
+16: FOO_CONF_OPTS += \
+17:     --prefix=/usr \
+18:     --buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \
+19:     --cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf
+20:
+21: FOO_NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS)
+22:
+23: ifeq ($(BR2_PACKAGE_BAZ),y)
+24: FOO_CONF_OPTS += -Dbaz
+25: endif
+26:
+27: define FOO_CONFIGURE_CMDS
+28:     rm -rf $(@D)/build
+29:     mkdir -p $(@D)/build
+30:     $(TARGET_MAKE_ENV) meson $(FOO_CONF_OPTS) $(@D) $(@D)/build
+31: endef
+32:
+33: define FOO_BUILD_CMDS
+34:     $(TARGET_MAKE_ENV) ninja $(FOO_NINJA_OPTS) -C $(@D)/build
+35: endef
+36:
+37: define FOO_INSTALL_TARGET_CMDS
+38:     $(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) ninja $(FOO_NINJA_OPTS) \
+39:             -C $(@D)/build install
+40: endef
+41:
+42: define FOO_INSTALL_STAGING_CMDS
+43:     $(TARGET_MAKE_ENV) DESTDIR=$(STAGING_DIR) ninja $(FOO_NINJA_OPTS) \
+44:             -C $(@D)/build install
+45: endef
+46:
+47: $(eval $(generic-package))

The Makefile starts with the definition of the standard variables for package +declaration (lines 7 to 11).

As seen in line 47, it is based on the +generic-package infrastructure +Section 17.5.1, “generic-package tutorial”. So, it defines +the variables required by this particular infrastructure, where Meson and its +companion tool, Ninja, are invoked:

  • +FOO_CONFIGURE_CMDS: the build directory required by Meson is created, and + Meson is invoked to generate the Ninja build file. The options required to + configure the cross-compilation of the package are passed via + FOO_CONF_OPTS. +
  • +FOO_BUILD_CMDS: Ninja is invoked to perform the build. +
  • +FOO_INSTALL_TARGET_CMDS: Ninja is invoked to install the files generated + during the build step in the target directory. +
  • +FOO_INSTALL_STAGING_CMDS: Ninja is invoked to install the files generated + during the build step in the staging directory, as FOO_INSTALL_STAGING is + set to "YES". +

In order to have Meson available for the build, FOO_DEPENDENCIES needs to +contain host-meson. In the example, host-pkgconf and bar are also +declared as dependencies because the Meson build file of foo uses pkg-config +to determine the compilation flags and libraries of package bar.

If the "baz" package is selected, then support for the "baz" feature in "foo" +is activated by adding -Dbaz to FOO_CONF_OPTS, as specified in the +meson_options.txt file in "foo" source tree.

To sum it up, to add a new meson-based package, the Makefile example can be +copied verbatim then edited to replace all occurences of FOO with the +uppercase name of the new package and update the values of the standard +variables.

17.16. Integration of Cargo-based packages

Cargo is the package manager for the Rust programming language. It allows the +user to build programs or libraries written in Rust, but it also downloads and +manages their dependencies, to ensure repeatable builds. Cargo packages are +called "crates".

17.16.1. Cargo-based package’s Config.in file

The Config.in file of Cargo-based package foo should contain:

01: config BR2_PACKAGE_FOO
+02:     bool "foo"
+03:     depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS
+04:     select BR2_PACKAGE_HOST_CARGO
+05:     help
+06:       This is a comment that explains what foo is.
+07:
+08:       http://foosoftware.org/foo/

17.16.2. Cargo-based package’s .mk file

Buildroot does not (yet) provide a dedicated package infrastructure for +Cargo-based packages. So, we will explain how to write a .mk file for such a +package. Let’s start with an example:

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: FOO_VERSION = 1.0
+08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz
+09: FOO_SITE = http://www.foosoftware.org/download
+10: FOO_LICENSE = GPL-3.0+
+11: FOO_LICENSE_FILES = COPYING
+12:
+13: FOO_DEPENDENCIES = host-cargo
+14:
+15: FOO_CARGO_ENV = CARGO_HOME=$(HOST_DIR)/share/cargo
+16: FOO_CARGO_MODE = $(if $(BR2_ENABLE_DEBUG),debug,release)
+17:
+18: FOO_BIN_DIR = target/$(RUSTC_TARGET_NAME)/$(FOO_CARGO_MODE)
+19:
+20: FOO_CARGO_OPTS = \
+21:   --$(FOO_CARGO_MODE) \
+22:     --target=$(RUSTC_TARGET_NAME) \
+23:     --manifest-path=$(@D)/Cargo.toml
+24:
+25: define FOO_BUILD_CMDS
+26:     $(TARGET_MAKE_ENV) $(FOO_CARGO_ENV) \
+27:             cargo build $(FOO_CARGO_OPTS)
+28: endef
+29:
+30: define FOO_INSTALL_TARGET_CMDS
+31:     $(INSTALL) -D -m 0755 $(@D)/$(FOO_BIN_DIR)/foo \
+32:             $(TARGET_DIR)/usr/bin/foo
+33: endef
+34:
+35: $(eval $(generic-package))

The Makefile starts with the definition of the standard variables for package +declaration (lines 7 to 11).

As seen in line 35, it is based on the +generic-package infrastructure +Section 17.5.1, “generic-package tutorial”. So, it defines +the variables required by this particular infrastructure, where Cargo is +invoked:

  • +FOO_BUILD_CMDS: Cargo is invoked to perform the build. The options required + to configure the cross-compilation of the package are passed via + FOO_CONF_OPTS. +
  • +FOO_INSTALL_TARGET_CMDS: The binary executable generated is installed on + the target. +

In order to have Cargo available for the build, FOO_DEPENDENCIES needs to +contain host-cargo.

To sum it up, to add a new Cargo-based package, the Makefile example can be +copied verbatim then edited to replace all occurences of FOO with the +uppercase name of the new package and update the values of the standard +variables.

17.16.3. About Dependencies Management

A crate can depend on other libraries from crates.io or git repositories, listed +in its Cargo.toml file. Before starting a build, Cargo usually downloads +automatically them. This step can also be performed independently, via the +cargo fetch command.

Cargo maintains a local cache of the registry index and of git checkouts of the +crates, whose location is given by $CARGO_HOME. As seen in the package +Makefile example at line 15, this environment variable is set to +$(HOST_DIR)/share/cargo.

This dependency download mechanism is not convenient when performing an offline +build, as Cargo will fail to fetch the dependencies. In that case, it is advised +to generate a tarball of the dependencies using the cargo vendor and add it to +FOO_EXTRA_DOWNLOADS.

17.17. Infrastructure for packages building kernel modules

Buildroot offers a helper infrastructure to make it easy to write packages that +build and install Linux kernel modules. Some packages only contain a kernel +module, other packages contain programs and libraries in addition to kernel +modules. Buildroot’s helper infrastructure supports either case.

17.17.1. kernel-module tutorial

Let’s start with an example on how to prepare a simple package that only +builds a kernel module, and no other component:

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: FOO_VERSION = 1.2.3
+08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz
+09: FOO_SITE = http://www.foosoftware.org/download
+10: FOO_LICENSE = GPL-2.0
+11: FOO_LICENSE_FILES = COPYING
+12:
+13: $(eval $(kernel-module))
+14: $(eval $(generic-package))

Lines 7-11 define the usual meta-data to specify the version, archive name, +remote URI where to find the package source, licensing information.

On line 13, we invoke the kernel-module helper infrastructure, that +generates all the appropriate Makefile rules and variables to build +that kernel module.

Finally, on line 14, we invoke the +generic-package infrastructure +Section 17.5.1, “generic-package tutorial”.

The dependency on linux is automatically added, so it is not needed to +specify it in FOO_DEPENDENCIES.

What you may have noticed is that, unlike other package infrastructures, +we explicitly invoke a second infrastructure. This allows a package to +build a kernel module, but also, if needed, use any one of other package +infrastructures to build normal userland components (libraries, +executables…). Using the kernel-module infrastructure on its own is +not sufficient; another package infrastructure must be used.

Let’s look at a more complex example:

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: FOO_VERSION = 1.2.3
+08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz
+09: FOO_SITE = http://www.foosoftware.org/download
+10: FOO_LICENSE = GPL-2.0
+11: FOO_LICENSE_FILES = COPYING
+12:
+13: FOO_MODULE_SUBDIRS = driver/base
+14: FOO_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED)
+15:
+16: ifeq ($(BR2_PACKAGE_LIBBAR),y)
+17: FOO_DEPENDENCIES = libbar
+18: FOO_CONF_OPTS = --enable-bar
+19: FOO_MODULE_SUBDIRS += driver/bar
+20: else
+21: FOO_CONF_OPTS = --disable-bar
+22: endif
+23:
+24: $(eval $(kernel-module))
+26: $(eval $(autotools-package))

Here, we see that we have an autotools-based package, that also builds +the kernel module located in sub-directory driver/base and, if libbar +is enabled, the kernel module located in sub-directory driver/bar, and +defines the variable KVERSION to be passed to the Linux buildsystem +when building the module(s).

17.17.2. kernel-module reference

The main macro for the kernel module infrastructure is kernel-module. +Unlike other package infrastructures, it is not stand-alone, and requires +any of the other *-package macros be called after it.

The kernel-module macro defines post-build and post-target-install +hooks to build the kernel modules. If the package’s .mk needs access +to the built kernel modules, it should do so in a post-build hook, +registered after the call to kernel-module. Similarly, if the +package’s .mk needs access to the kernel module after it has been +installed, it should do so in a post-install hook, registered after +the call to kernel-module. Here’s an example:

$(eval $(kernel-module))
+
+define FOO_DO_STUFF_WITH_KERNEL_MODULE
+    # Do something with it...
+endef
+FOO_POST_BUILD_HOOKS += FOO_DO_STUFF_WITH_KERNEL_MODULE
+
+$(eval $(generic-package))

Finally, unlike the other package infrastructures, there is no +host-kernel-module variant to build a host kernel module.

The following additional variables can optionally be defined to further +configure the build of the kernel module:

  • +FOO_MODULE_SUBDIRS may be set to one or more sub-directories (relative + to the package source top-directory) where the kernel module sources are. + If empty or not set, the sources for the kernel module(s) are considered + to be located at the top of the package source tree. +
  • +FOO_MODULE_MAKE_OPTS may be set to contain extra variable definitions + to pass to the Linux buildsystem. +

You may also reference (but you may not set!) those variables:

  • +LINUX_DIR contains the path to where the Linux kernel has been + extracted and built. +
  • +LINUX_VERSION contains the version string as configured by the user. +
  • +LINUX_VERSION_PROBED contains the real version string of the kernel, + retrieved with running make -C $(LINUX_DIR) kernelrelease +
  • +KERNEL_ARCH contains the name of the current architecture, like arm, + mips… +

17.18. Infrastructure for asciidoc documents

The Buildroot manual, which you are currently reading, is entirely written +using the AsciiDoc mark-up syntax. The manual is then +rendered to many formats:

  • +html +
  • +split-html +
  • +pdf +
  • +epub +
  • +text +

Although Buildroot only contains one document written in AsciiDoc, there +is, as for packages, an infrastructure for rendering documents using the +AsciiDoc syntax.

Also as for packages, the AsciiDoc infrastructure is available from a +br2-external tree +Section 9.2, “Keeping customizations outside of Buildroot”. This allows documentation for +a br2-external tree to match the Buildroot documentation, as it will be +rendered to the same formats and use the same layout and theme.

17.18.1. asciidoc-document tutorial

Whereas package infrastructures are suffixed with -package, the document +infrastructures are suffixed with -document. So, the AsciiDoc infrastructure +is named asciidoc-document.

Here is an example to render a simple AsciiDoc document.

01: ################################################################################
+02: #
+03: # foo-document
+04: #
+05: ################################################################################
+06:
+07: FOO_SOURCES = $(sort $(wildcard $(pkgdir)/*))
+08: $(eval $(call asciidoc-document))

On line 7, the Makefile declares what the sources of the document are. +Currently, it is expected that the document’s sources are only local; +Buildroot will not attempt to download anything to render a document. +Thus, you must indicate where the sources are. Usually, the string +above is sufficient for a document with no sub-directory structure.

On line 8, we call the asciidoc-document function, which generates all +the Makefile code necessary to render the document.

17.18.2. asciidoc-document reference

The list of variables that can be set in a .mk file to give metadata +information is (assuming the document name is foo) :

  • +FOO_SOURCES, mandatory, defines the source files for the document. +
  • +FOO_RESOURCES, optional, may contain a space-separated list of paths + to one or more directories containing so-called resources (like CSS or + images). By default, empty. +
  • +FOO_DEPENDENCIES, optional, the list of packages (most probably, + host-packages) that must be built before building this document. + If a hook of your document needs to access the Kconfig structure, + you may add prepare-kconfig to the list of dependencies. +

There are also additional hooks (see Section 17.20, “Hooks available in the various build steps” for general information +on hooks), that a document may set to define extra actions to be done at +various steps:

  • +FOO_POST_RSYNC_HOOKS to run additional commands after the sources + have been copied by Buildroot. This can for example be used to + generate part of the manual with information extracted from the + tree. As an example, Buildroot uses this hook to generate the tables + in the appendices. +
  • +FOO_CHECK_DEPENDENCIES_HOOKS to run additional tests on required + components to generate the document. In AsciiDoc, it is possible to + call filters, that is, programs that will parse an AsciiDoc block and + render it appropriately (e.g. ditaa or + aafigure). +
  • +FOO_CHECK_DEPENDENCIES_<FMT>_HOOKS, to run additional tests for + the specified format <FMT> (see the list of rendered formats, above). +

Here is a complete example that uses all variables and all hooks:

01: ################################################################################
+02: #
+03: # foo-document
+04: #
+05: ################################################################################
+06:
+07: FOO_SOURCES = $(sort $(wildcard $(pkgdir)/*))
+08: FOO_RESOURCES = $(sort $(wildcard $(pkgdir)/ressources))
+09:
+10: define FOO_GEN_EXTRA_DOC
+11:     /path/to/generate-script --outdir=$(@D)
+12: endef
+13: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC
+14:
+15: define FOO_CHECK_MY_PROG
+16:     if ! which my-prog >/dev/null 2>&1; then \
+17:         echo "You need my-prog to generate the foo document"; \
+18:         exit 1; \
+19:     fi
+20: endef
+21: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG
+22:
+23: define FOO_CHECK_MY_OTHER_PROG
+24:     if ! which my-other-prog >/dev/null 2>&1; then \
+25:         echo "You need my-other-prog to generate the foo document as PDF"; \
+26:         exit 1; \
+27:     fi
+28: endef
+29: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG
+30:
+31: $(eval $(call asciidoc-document))

17.19. Infrastructure specific to the Linux kernel package

The Linux kernel package can use some specific infrastructures based on package +hooks for building Linux kernel tools or/and building Linux kernel extensions.

17.19.1. linux-kernel-tools

Buildroot offers a helper infrastructure to build some userspace tools +for the target available within the Linux kernel sources. Since their +source code is part of the kernel source code, a special package, +linux-tools, exists and re-uses the sources of the Linux kernel that +runs on the target.

Let’s look at an example of a Linux tool. For a new Linux tool named +foo, create a new menu entry in the existing +package/linux-tools/Config.in. This file will contain the option +descriptions related to each kernel tool that will be used and +displayed in the configuration tool. It would basically look like:

01: config BR2_PACKAGE_LINUX_TOOLS_FOO
+02:     bool "foo"
+03:     select BR2_PACKAGE_LINUX_TOOLS
+04:     help
+05:       This is a comment that explains what foo kernel tool is.
+06:
+07:       http://foosoftware.org/foo/

The name of the option starts with the prefix BR2_PACKAGE_LINUX_TOOLS_, +followed by the uppercase name of the tool (like is done for packages).

Note. Unlike other packages, the linux-tools package options appear in the +linux kernel menu, under the Linux Kernel Tools sub-menu, not under +the Target packages main menu.

Then for each linux tool, add a new .mk.in file named +package/linux-tools/linux-tool-foo.mk.in. It would basically look like:

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: LINUX_TOOLS += foo
+08:
+09: FOO_DEPENDENCIES = libbbb
+10:
+11: define FOO_BUILD_CMDS
+12:     $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools foo
+13: endef
+14:
+15: define FOO_INSTALL_STAGING_CMDS
+16:     $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \
+17:             DESTDIR=$(STAGING_DIR) \
+18:             foo_install
+19: endef
+20:
+21: define FOO_INSTALL_TARGET_CMDS
+22:     $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \
+23:             DESTDIR=$(TARGET_DIR) \
+24:             foo_install
+25: endef

On line 7, we register the Linux tool foo to the list of available +Linux tools.

On line 9, we specify the list of dependencies this tool relies on. These +dependencies are added to the Linux package dependencies list only when the +foo tool is selected.

The rest of the Makefile, lines 11-25 defines what should be done at the +different steps of the Linux tool build process like for a +generic package +Section 17.5.1, “generic-package tutorial”. They will actually be +used only when the foo tool is selected. The only supported commands are +_BUILD_CMDS, _INSTALL_STAGING_CMDS and _INSTALL_TARGET_CMDS.

Note. One must not call $(eval $(generic-package)) or any other +package infrastructure! Linux tools are not packages by themselves, +they are part of the linux-tools package.

17.19.2. linux-kernel-extensions

Some packages provide new features that require the Linux kernel tree +to be modified. This can be in the form of patches to be applied on +the kernel tree, or in the form of new files to be added to the +tree. The Buildroot’s Linux kernel extensions infrastructure provides +a simple solution to automatically do this, just after the kernel +sources are extracted and before the kernel patches are +applied. Examples of extensions packaged using this mechanism are the +real-time extensions Xenomai and RTAI, as well as the set of +out-of-tree LCD screens drivers fbtft.

Let’s look at an example on how to add a new Linux extension foo.

First, create the package foo that provides the extension: this +package is a standard package; see the previous chapters on how to +create such a package. This package is in charge of downloading the +sources archive, checking the hash, defining the licence informations +and building user space tools if any.

Then create the Linux extension proper: create a new menu entry in +the existing linux/Config.ext.in. This file contains the option +descriptions related to each kernel extension that will be used and +displayed in the configuration tool. It would basically look like:

01: config BR2_LINUX_KERNEL_EXT_FOO
+02:     bool "foo"
+03:     help
+04:       This is a comment that explains what foo kernel extension is.
+05:
+06:       http://foosoftware.org/foo/

Then for each linux extension, add a new .mk file named +linux/linux-ext-foo.mk. It should basically contain:

01: ################################################################################
+02: #
+03: # foo
+04: #
+05: ################################################################################
+06:
+07: LINUX_EXTENSIONS += foo
+08:
+09: define FOO_PREPARE_KERNEL
+10:     $(FOO_DIR)/prepare-kernel-tree.sh --linux-dir=$(@D)
+11: endef

On line 7, we add the Linux extension foo to the list of available +Linux extensions.

On line 9-11, we define what should be done by the extension to modify +the Linux kernel tree; this is specific to the linux extension and can +use the variables defined by the foo package, like: $(FOO_DIR) or +$(FOO_VERSION)… as well as all the Linux variables, like: +$(LINUX_VERSION) or $(LINUX_VERSION_PROBED), $(KERNEL_ARCH)… +See the definition of those kernel variables +Section 17.17.2, “kernel-module reference”.

17.20. Hooks available in the various build steps

The generic infrastructure (and as a result also the derived autotools +and cmake infrastructures) allow packages to specify hooks. +These define further actions to perform after existing steps. +Most hooks aren’t really useful for generic packages, since the .mk +file already has full control over the actions performed in each step +of the package construction.

The following hook points are available:

  • +LIBFOO_PRE_DOWNLOAD_HOOKS +
  • +LIBFOO_POST_DOWNLOAD_HOOKS +
  • +LIBFOO_PRE_EXTRACT_HOOKS +
  • +LIBFOO_POST_EXTRACT_HOOKS +
  • +LIBFOO_PRE_RSYNC_HOOKS +
  • +LIBFOO_POST_RSYNC_HOOKS +
  • +LIBFOO_PRE_PATCH_HOOKS +
  • +LIBFOO_POST_PATCH_HOOKS +
  • +LIBFOO_PRE_CONFIGURE_HOOKS +
  • +LIBFOO_POST_CONFIGURE_HOOKS +
  • +LIBFOO_PRE_BUILD_HOOKS +
  • +LIBFOO_POST_BUILD_HOOKS +
  • +LIBFOO_PRE_INSTALL_HOOKS (for host packages only) +
  • +LIBFOO_POST_INSTALL_HOOKS (for host packages only) +
  • +LIBFOO_PRE_INSTALL_STAGING_HOOKS (for target packages only) +
  • +LIBFOO_POST_INSTALL_STAGING_HOOKS (for target packages only) +
  • +LIBFOO_PRE_INSTALL_TARGET_HOOKS (for target packages only) +
  • +LIBFOO_POST_INSTALL_TARGET_HOOKS (for target packages only) +
  • +LIBFOO_PRE_INSTALL_IMAGES_HOOKS +
  • +LIBFOO_POST_INSTALL_IMAGES_HOOKS +
  • +LIBFOO_PRE_LEGAL_INFO_HOOKS +
  • +LIBFOO_POST_LEGAL_INFO_HOOKS +

These variables are lists of variable names containing actions to be +performed at this hook point. This allows several hooks to be +registered at a given hook point. Here is an example:

define LIBFOO_POST_PATCH_FIXUP
+        action1
+        action2
+endef
+
+LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP

17.20.1. Using the POST_RSYNC hook

The POST_RSYNC hook is run only for packages that use a local source, +either through the local site method or the OVERRIDE_SRCDIR +mechanism. In this case, package sources are copied using rsync from +the local location into the buildroot build directory. The rsync +command does not copy all files from the source directory, though. +Files belonging to a version control system, like the directories +.git, .hg, etc. are not copied. For most packages this is +sufficient, but a given package can perform additional actions using +the POST_RSYNC hook.

In principle, the hook can contain any command you want. One specific +use case, though, is the intentional copying of the version control +directory using rsync. The rsync command you use in the hook can, among +others, use the following variables:

  • +$(SRCDIR): the path to the overridden source directory +
  • +$(@D): the path to the build directory +

17.20.2. Target-finalize hook

Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. +These hooks are run after all packages are built, but before the +filesystem images are generated. They are seldom used, and your +package probably do not need them.

17.21. Gettext integration and interaction with packages

Many packages that support internationalization use the gettext +library. Dependencies for this library are fairly complicated and +therefore, deserve some explanation.

The glibc C library integrates a full-blown implementation of +gettext, supporting translation. Native Language Support is +therefore built-in in glibc.

On the other hand, the uClibc and musl C libraries only provide a +stub implementation of the gettext functionality, which allows to +compile libraries and programs using gettext functions, but without +providing the translation capabilities of a full-blown gettext +implementation. With such C libraries, if real Native Language Support +is necessary, it can be provided by the libintl library of the +gettext package.

Due to this, and in order to make sure that Native Language Support is +properly handled, packages in Buildroot that can use NLS support +should:

  1. +Ensure NLS support is enabled when BR2_SYSTEM_ENABLE_NLS=y. This + is done automatically for autotools packages and therefore should + only be done for packages using other package infrastructures. +
  2. +Add $(TARGET_NLS_DEPENDENCIES) to the package + <pkg>_DEPENDENCIES variable. This addition should be done + unconditionally: the value of this variable is automatically + adjusted by the core infrastructure to contain the relevant list of + packages. If NLS support is disabled, this variable is empty. If + NLS support is enabled, this variable contains host-gettext so + that tools needed to compile translation files are available on the + host. In addition, if uClibc or musl are used, this variable + also contains gettext in order to get the full-blown gettext + implementation. +
  3. +If needed, add $(TARGET_NLS_LIBS) to the linker flags, so that + the package gets linked with libintl. This is generally not + needed with autotools packages as they usually detect + automatically that they should link with libintl. However, + packages using other build systems, or problematic autotools-based + packages may need this. $(TARGET_NLS_LIBS) should be added + unconditionally to the linker flags, as the core automatically + makes it empty or defined to -lintl depending on the + configuration. +

No changes should be made to the Config.in file to support NLS.

Finally, certain packages need some gettext utilities on the target, +such as the gettext program itself, which allows to retrieve +translated strings, from the command line. In such a case, the package +should:

  • +use select BR2_PACKAGE_GETTEXT in their Config.in file, + indicating in a comment above that it’s a runtime dependency only. +
  • +not add any gettext dependency in the DEPENDENCIES variable of + their .mk file. +

17.22. Tips and tricks

17.22.1. Package name, config entry name and makefile variable relationship

In Buildroot, there is some relationship between:

  • +the package name, which is the package directory name (and the + name of the *.mk file); +
  • +the config entry name that is declared in the Config.in file; +
  • +the makefile variable prefix. +

It is mandatory to maintain consistency between these elements, +using the following rules:

  • +the package directory and the *.mk name are the package name + itself (e.g.: package/foo-bar_boo/foo-bar_boo.mk); +
  • +the make target name is the package name itself (e.g.: + foo-bar_boo); +
  • +the config entry is the upper case package name with . and - + characters substituted with _, prefixed with BR2_PACKAGE_ (e.g.: + BR2_PACKAGE_FOO_BAR_BOO); +
  • +the *.mk file variable prefix is the upper case package name + with . and - characters substituted with _ (e.g.: + FOO_BAR_BOO_VERSION). +

17.22.2. How to test your package

Once you have added your new package, it is important that you test it +under various conditions: does it build for all architectures? Does it +build with the different C libraries? Does it need threads, NPTL? And +so on…

Buildroot runs autobuilders which +continuously test random configurations. However, these only build the +master branch of the git tree, and your new fancy package is not yet +there.

Buildroot provides a script in utils/test-pkg that uses the same base +configurations as used by the autobuilders so you can test your package +in the same conditions.

First, create a config snippet that contains all the necessary options +needed to enable your package, but without any architecture or toolchain +option. For example, let’s create a config snippet that just enables +libcurl, without any TLS backend:

$ cat libcurl.config
+BR2_PACKAGE_LIBCURL=y

If your package needs more configuration options, you can add them to the +config snippet. For example, here’s how you would test libcurl with +openssl as a TLS backend and the curl program:

$ cat libcurl.config
+BR2_PACKAGE_LIBCURL=y
+BR2_PACKAGE_CURL=y
+BR2_PACKAGE_OPENSSL=y

Then run the test-pkg script, by telling it what config snippet to use +and what package to test:

$ ./utils/test-pkg -c libcurl.config -p libcurl

This will try to build your package against all the toolchains used +by the autobuilders (except for the internal toolchains, because it takes +too long to do so). The output lists all toolchains and the corresponding +result (excerpt, results are fake):

$ ./utils/test-pkg -c libcurl.config -p libcurl
+                armv5-ctng-linux-gnueabi [ 1/11]: OK
+              armv7-ctng-linux-gnueabihf [ 2/11]: OK
+                        br-aarch64-glibc [ 3/11]: SKIPPED
+                           br-arcle-hs38 [ 4/11]: SKIPPED
+                            br-arm-basic [ 5/11]: FAILED
+                  br-arm-cortex-a9-glibc [ 6/11]: OK
+                   br-arm-cortex-a9-musl [ 7/11]: FAILED
+                   br-arm-cortex-m4-full [ 8/11]: OK
+                             br-arm-full [ 9/11]: OK
+                    br-arm-full-nothread [10/11]: FAILED
+                      br-arm-full-static [11/11]: OK
+11 builds, 2 skipped, 2 build failed, 1 legal-info failed

The results mean:

  • +OK: the build was successful. +
  • +SKIPPED: one or more configuration options listed in the config + snippet were not present in the final configuration. This is due to + options having dependencies not satisfied by the toolchain, such as + for example a package that depends on BR2_USE_MMU with a noMMU + toolchain. The missing options are reported in missing.config in + the output build directory (~/br-test-pkg/TOOLCHAIN_NAME/ by + default). +
  • +FAILED: the build failed. Inspect the logfile file in the output + build directory to see what went wrong: +

    • +the actual build failed, +
    • +the legal-info failed, +
    • +one of the preliminary steps (downloading the config file, applying + the configuration, running dirclean for the package) failed. +

When there are failures, you can just re-run the script with the same +options (after you fixed your package); the script will attempt to +re-build the package specified with -p for all toolchains, without +the need to re-build all the dependencies of that package.

The test-pkg script accepts a few options, for which you can get some +help by running:

$ ./utils/test-pkg -h

17.22.3. How to add a package from GitHub

Packages on GitHub often don’t have a download area with release tarballs. +However, it is possible to download tarballs directly from the repository +on GitHub. As GitHub is known to have changed download mechanisms in the +past, the github helper function should be used as shown below.

# Use a tag or a full commit ID
+FOO_VERSION = v1.0
+FOO_SITE = $(call github,<user>,<package>,$(FOO_VERSION))

Notes

  • +The FOO_VERSION can either be a tag or a commit ID. +
  • +The tarball name generated by github matches the default one from + Buildroot (e.g.: foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz), + so it is not necessary to specify it in the .mk file. +
  • +When using a commit ID as version, you should use the full 40 hex characters. +

If the package you wish to add does have a release section on GitHub, the +maintainer may have uploaded a release tarball, or the release may just point +to the automatically generated tarball from the git tag. If there is a +release tarball uploaded by the maintainer, we prefer to use that since it +may be slightly different (e.g. it contains a configure script so we don’t +need to do AUTORECONF).

You can see on the release page if it’s an uploaded tarball or a git tag:

github_hash_mongrel2.png
  • +If it looks like the image above then it was uploaded by the + maintainer and you should use that link (in that example: + mongrel2-v1.9.2.tar.bz2) to specify FOO_SITE, and not use the + github helper. +
  • +On the other hand, if there’s is only the "Source code" link, then + it’s an automatically generated tarball and you should use the + github helper function. +

17.23. Conclusion

As you can see, adding a software package to Buildroot is simply a +matter of writing a Makefile using an existing example and modifying it +according to the compilation process required by the package.

If you package software that might be useful for other people, don’t +forget to send a patch to the Buildroot mailing list (see +Section 21.5, “Submitting patches”)!

Chapter 18. Patching a package

While integrating a new package or updating an existing one, it may be +necessary to patch the source of the software to get it cross-built within +Buildroot.

Buildroot offers an infrastructure to automatically handle this during +the builds. It supports three ways of applying patch sets: downloaded patches, +patches supplied within buildroot and patches located in a user-defined +global patch directory.

18.1. Providing patches

18.1.1. Downloaded

If it is necessary to apply a patch that is available for download, then add it +to the <packagename>_PATCH variable. If an entry contains ://, +then Buildroot will assume it is a full URL and download the patch +from this location. Otherwise, Buildroot will assume that the patch should be +downloaded from <packagename>_SITE. It can be a single patch, +or a tarball containing a patch series.

Like for all downloads, a hash should be added to the <packagename>.hash +file.

This method is typically used for packages from Debian.

18.1.2. Within Buildroot

Most patches are provided within Buildroot, in the package +directory; these typically aim to fix cross-compilation, libc support, +or other such issues.

These patch files should be named <number>-<description>.patch.

Notes

  • +The patch files coming with Buildroot should not contain any package version + reference in their filename. +
  • +The field <number> in the patch file name refers to the apply order, + and shall start at 1; It is preferred to pad the number with zeros up to 4 + digits, like git-format-patch does. E.g.: 0001-foobar-the-buz.patch +
  • +Previously, it was mandatory for patches to be prefixed with the name of + the package, like <package>-<number>-<description>.patch, but that is + no longer the case. Existing packages will be fixed as time passes. Do + not prefix patches with the package name. +
  • +Previously, a series file, as used by quilt, could also be added in + the package directory. In that case, the series file defines the patch + application order. This is deprecated, and will be removed in the future. + Do not use a series file. +

18.1.3. Global patch directory

The BR2_GLOBAL_PATCH_DIR configuration file option can be +used to specify a space separated list of one or more directories +containing global package patches. See Section 9.8, “Adding project-specific patches” for +details.

18.2. How patches are applied

  1. +Run the <packagename>_PRE_PATCH_HOOKS commands if defined; +
  2. +Cleanup the build directory, removing any existing *.rej files; +
  3. +If <packagename>_PATCH is defined, then patches from these + tarballs are applied; +
  4. +If there are some *.patch files in the package’s Buildroot + directory or in a package subdirectory named <packageversion>, + then: +

    • +If a series file exists in the package directory, then patches are + applied according to the series file; +
    • +Otherwise, patch files matching *.patch are applied in alphabetical + order. + So, to ensure they are applied in the right order, it is highly + recommended to name the patch files like this: + <number>-<description>.patch, where <number> refers to the + apply order. +
  5. +If BR2_GLOBAL_PATCH_DIR is defined, the directories will be + enumerated in the order they are specified. The patches are applied + as described in the previous step. +
  6. +Run the <packagename>_POST_PATCH_HOOKS commands if defined. +

If something goes wrong in the steps 3 or 4, then the build fails.

18.3. Format and licensing of the package patches

Patches are released under the same license as the software they apply +to (see Section 12.2, “Complying with the Buildroot license”).

A message explaining what the patch does, and why it is needed, should +be added in the header commentary of the patch.

You should add a Signed-off-by statement in the header of the each +patch to help with keeping track of the changes and to certify that the +patch is released under the same license as the software that is modified.

If the software is under version control, it is recommended to use the +upstream SCM software to generate the patch set.

Otherwise, concatenate the header with the output of the +diff -purN package-version.orig/ package-version/ command.

If you update an existing patch (e.g. when bumping the package version), +make sure the existing From header and Signed-off-by tags are not +removed, but do update the rest of the patch comment when appropriate.

At the end, the patch should look like:

configure.ac: add C++ support test
+
+Signed-off-by: John Doe <john.doe@noname.org>
+
+--- configure.ac.orig
++++ configure.ac
+@@ -40,2 +40,12 @@
+
+AC_PROG_MAKE_SET
++
++AC_CACHE_CHECK([whether the C++ compiler works],
++               [rw_cv_prog_cxx_works],
++               [AC_LANG_PUSH([C++])
++                AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
++                               [rw_cv_prog_cxx_works=yes],
++                               [rw_cv_prog_cxx_works=no])
++                AC_LANG_POP([C++])])
++
++AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"])

18.4. Integrating patches found on the Web

When integrating a patch of which you are not the author, you have to +add a few things in the header of the patch itself.

Depending on whether the patch has been obtained from the project +repository itself, or from somewhere on the web, add one of the +following tags:

Backported from: <some commit id>

or

Fetch from: <some url>

It is also sensible to add a few words about any changes to the patch +that may have been necessary.

Chapter 19. Download infrastructure

TODO

Chapter 20. Debugging Buildroot

It is possible to instrument the steps Buildroot does when building +packages. Define the variable BR2_INSTRUMENTATION_SCRIPTS to contain +the path of one or more scripts (or other executables), in a +space-separated list, you want called before and after each step. The +scripts are called in sequence, with three parameters:

  • +start or end to denote the start (resp. the end) of a step; +
  • +the name of the step about to be started, or which just ended; +
  • +the name of the package. +

For example :

make BR2_INSTRUMENTATION_SCRIPTS="/path/to/my/script1 /path/to/my/script2"

The list of steps is:

  • +extract +
  • +patch +
  • +configure +
  • +build +
  • +install-host, when a host-package is installed in $(HOST_DIR) +
  • +install-target, when a target-package is installed in $(TARGET_DIR) +
  • +install-staging, when a target-package is installed in $(STAGING_DIR) +
  • +install-image, when a target-package installs files in $(BINARIES_DIR) +

The script has access to the following variables:

  • +BR2_CONFIG: the path to the Buildroot .config file +
  • +HOST_DIR, STAGING_DIR, TARGET_DIR: see + Section 17.5.2, “generic-package reference” +
  • +BUILD_DIR: the directory where packages are extracted and built +
  • +BINARIES_DIR: the place where all binary files (aka images) are + stored +
  • +BASE_DIR: the base output directory +

Chapter 21. Contributing to Buildroot

There are many ways in which you can contribute to Buildroot: analyzing +and fixing bugs, analyzing and fixing package build failures detected by +the autobuilders, testing and reviewing patches sent by other +developers, working on the items in our TODO list and sending your own +improvements to Buildroot or its manual. The following sections give a +little more detail on each of these items.

If you are interested in contributing to Buildroot, the first thing you +should do is to subscribe to the Buildroot mailing list. This list is +the main way of interacting with other Buildroot developers and to send +contributions to. If you aren’t subscribed yet, then refer to +Chapter 5, Community resources for the subscription link.

If you are going to touch the code, it is highly recommended to use a +git repository of Buildroot, rather than starting from an extracted +source code tarball. Git is the easiest way to develop from and directly +send your patches to the mailing list. Refer to Chapter 3, Getting Buildroot +for more information on obtaining a Buildroot git tree.

21.1. Reproducing, analyzing and fixing bugs

A first way of contributing is to have a look at the open bug reports in +the Buildroot bug +tracker. As we strive to keep the bug count as small as possible, all +help in reproducing, analyzing and fixing reported bugs is more than +welcome. Don’t hesitate to add a comment to bug reports reporting your +findings, even if you don’t yet see the full picture.

21.2. Analyzing and fixing autobuild failures

The Buildroot autobuilders are a set of build machines that continuously +run Buildroot builds based on random configurations. This is done for +all architectures supported by Buildroot, with various toolchains, and +with a random selection of packages. With the large commit activity on +Buildroot, these autobuilders are a great help in detecting problems +very early after commit.

All build results are available at http://autobuild.buildroot.org, +statistics are at http://autobuild.buildroot.org/stats.php. Every day, +an overview of all failed packages is sent to the mailing list.

Detecting problems is great, but obviously these problems have to be +fixed as well. Your contribution is very welcome here! There are +basically two things that can be done:

  • +Analyzing the problems. The daily summary mails do not contain details + about the actual failures: in order to see what’s going on you have to + open the build log and check the last output. Having someone doing + this for all packages in the mail is very useful for other developers, + as they can make a quick initial analysis based on this output alone. +
  • +Fixing a problem. When fixing autobuild failures, you should follow + these steps: +

    1. +Check if you can reproduce the problem by building with the same + configuration. You can do this manually, or use the + br-reproduce-build + script that will automatically clone a Buildroot git repository, + checkout the correct revision, download and set the right + configuration, and start the build. +
    2. +Analyze the problem and create a fix. +
    3. +Verify that the problem is really fixed by starting from a clean + Buildroot tree and only applying your fix. +
    4. +Send the fix to the Buildroot mailing list (see + Section 21.5, “Submitting patches”). In case you created a patch against the + package sources, you should also send the patch upstream so that the + problem will be fixed in a later release, and the patch in Buildroot + can be removed. + In the commit message of a patch fixing an autobuild failure, add a + reference to the build result directory, as follows: +
Fixes http://autobuild.buildroot.org/results/51000a9d4656afe9e0ea6f07b9f8ed374c2e4069

21.3. Reviewing and testing patches

With the amount of patches sent to the mailing list each day, the +maintainer has a very hard job to judge which patches are ready to apply +and which ones aren’t. Contributors can greatly help here by reviewing +and testing these patches.

In the review process, do not hesitate to respond to patch submissions +for remarks, suggestions or anything that will help everyone to +understand the patches and make them better. Please use internet +style replies in plain text emails when responding to patch +submissions.

To indicate approval of a patch, there are three formal tags that keep +track of this approval. To add your tag to a patch, reply to it with the +approval tag below the original author’s Signed-off-by line. These tags +will be picked up automatically by patchwork (see +Section 21.3.1, “Applying Patches from Patchwork”) and will be part of the commit log when +the patch is accepted.

+Tested-by +
+Indicates that the patch has been tested successfully. + You are encouraged to specify what kind of testing you performed + (compile-test on architecture X and Y, runtime test on target A, + …). This additional information helps other testers and the + maintainer. +
+Reviewed-by +
+Indicates that you code-reviewed the patch and did your + best in spotting problems, but you are not sufficiently familiar with + the area touched to provide an Acked-by tag. This means that there + may be remaining problems in the patch that would be spotted by + someone with more experience in that area. Should such problems be + detected, your Reviewed-by tag remains appropriate and you cannot + be blamed. +
+Acked-by +
+Indicates that you code-reviewed the patch and you are + familiar enough with the area touched to feel that the patch can be + committed as-is (no additional changes required). In case it later + turns out that something is wrong with the patch, your Acked-by could + be considered inappropriate. The difference between Acked-by and + Reviewed-by is thus mainly that you are prepared to take the blame on + Acked patches, but not on Reviewed ones. +

If you reviewed a patch and have comments on it, you should simply reply +to the patch stating these comments, without providing a Reviewed-by or +Acked-by tag. These tags should only be provided if you judge the patch +to be good as it is.

It is important to note that neither Reviewed-by nor Acked-by imply +that testing has been performed. To indicate that you both reviewed and +tested the patch, provide two separate tags (Reviewed/Acked-by and +Tested-by).

Note also that any developer can provide Tested/Reviewed/Acked-by +tags, without exception, and we encourage everyone to do this. Buildroot +does not have a defined group of core developers, it just so happens +that some developers are more active than others. The maintainer will +value tags according to the track record of their submitter. Tags +provided by a regular contributor will naturally be trusted more than +tags provided by a newcomer. As you provide tags more regularly, your +trustworthiness (in the eyes of the maintainer) will go up, but any +tag provided is valuable.

Buildroot’s Patchwork website can be used to pull in patches for testing +purposes. Please see Section 21.3.1, “Applying Patches from Patchwork” for more +information on using Buildroot’s Patchwork website to apply patches.

21.3.1. Applying Patches from Patchwork

The main use of Buildroot’s Patchwork website for a developer is for +pulling in patches into their local git repository for testing +purposes.

When browsing patches in the patchwork management interface, an mbox +link is provided at the top of the page. Copy this link address and +run the following commands:

$ git checkout -b <test-branch-name>
+$ wget -O - <mbox-url> | git am

Another option for applying patches is to create a bundle. A bundle is +a set of patches that you can group together using the patchwork +interface. Once the bundle is created and the bundle is made public, +you can copy the mbox link for the bundle and apply the bundle +using the above commands.

21.4. Work on items from the TODO list

If you want to contribute to Buildroot but don’t know where to start, +and you don’t like any of the above topics, you can always work on items +from the Buildroot TODO list. +Don’t hesitate to discuss an item first on the mailing list or on IRC. +Do edit the wiki to indicate when you start working on an item, so we +avoid duplicate efforts.

21.5. Submitting patches

Note

Please, do not attach patches to bugs, send them to the mailing list +instead.

If you made some changes to Buildroot and you would like to contribute +them to the Buildroot project, proceed as follows.

21.5.1. The formatting of a patch

We expect patches to be formatted in a specific way. This is necessary +to make it easy to review patches, to be able to apply them easily to +the git repository, to make it easy to find back in the history how +and why things have changed, and to make it possible to use git +bisect to locate the origin of a problem.

First of all, it is essential that the patch has a good commit +message. The commit message should start with a separate line with a +brief summary of the change, starting with the name of the affected +package. The body of the commit message should describe why this +change is needed, and if necessary also give details about how it +was done. When writing the commit message, think of how the reviewers +will read it, but also think about how you will read it when you look +at this change again a few years down the line.

Second, the patch itself should do only one change, but do it +completely. Two unrelated or weakly related changes should usually be +done in two separate patches. This usually means that a patch affects +only a single package. If several changes are related, it is often +still possible to split them up in small patches and apply them in a +specific order. Small patches make it easier to review, and often +make it easier to understand afterwards why a change was done. +However, each patch must be complete. It is not allowed that the +build is broken when only the first but not the second patch is +applied. This is necessary to be able to use git bisect afterwards.

Of course, while you’re doing your development, you’re probably going +back and forth between packages, and certainly not committing things +immediately in a way that is clean enough for submission. So most +developers rewrite the history of commits to produce a clean set of +commits that is appropriate for submission. To do this, you need to +use interactive rebasing. You can learn about it +in the Pro +Git book. Sometimes, it is even easier to discard you history with +git reset --soft origin/master and select individual changes with +git add -i or git add -p.

Finally, the patch should be signed off. This is done by adding +Signed-off-by: Your Real Name <your@email.address> at the end of the +commit message. git commit -s does that for you, if configured +properly. The Signed-off-by tag means that you publish the patch +under the Buildroot license (i.e. GPL-2.0+, except for package patches, +which have the upstream license), and that you are allowed to do so. +See the Developer Certificate of +Origin for details.

When adding new packages, you should submit every package in a +separate patch. This patch should have the update to +package/Config.in, the package Config.in file, the .mk file, the +.hash file, any init script, and all package patches. If the package +has many sub-options, these are sometimes better added as separate +follow-up patches. The summary line should be something like +<packagename>: new package. The body of the commit message can be +empty for simple packages, or it can contain the description of the +package (like the Config.in help text). If anything special has to be +done to build the package, this should also be explained explicitly in +the commit message body.

When you bump a package to a new version, you should also submit a +separate patch for each package. Don’t forget to update the .hash +file, or add it if it doesn’t exist yet. Also don’t forget to check if +the _LICENSE and _LICENSE_FILES are still valid. The summary line +should be something like <packagename>: bump to version <new +version>. If the new version only contains security updates compared +to the existing one, the summary should be <packagename>: security +bump to version <new version> and the commit message body should show +the CVE numbers that are fixed. If some package patches can be removed +in the new version, it should be explained explicitly why they can be +removed, preferably with the upstream commit ID. Also any other +required changes should be explained explicitly, like configure +options that no longer exist or are no longer needed.

If you are interested in getting notified of build failures and of +further changes in the packages you added or modified, please add +yourself to the DEVELOPERS file. This should be done in the same patch +creating or modifying the package. See the DEVELOPERS file +Chapter 22, DEVELOPERS file and get-developers +for more information.

21.5.2. Preparing a patch series

Starting from the changes committed in your local git view, rebase +your development branch on top of the upstream tree before generating +a patch set. To do so, run:

$ git fetch --all --tags
+$ git rebase origin/master

Now, you are ready to generate then submit your patch set.

To generate it, run:

$ git format-patch -M -n -s -o outgoing origin/master

This will generate patch files in the outgoing subdirectory, +automatically adding the Signed-off-by line.

Once patch files are generated, you can review/edit the commit message +before submitting them, using your favorite text editor.

Buildroot provides a handy tool to know to whom your patches should be +sent, called get-developers (see Chapter 22, DEVELOPERS file and get-developers for more +information). This tool reads your patches and outputs the appropriate +git send-email command to use:

$ ./utils/get-developers outgoing/*

Use the output of get-developers to send your patches:

$ git send-email --to buildroot@buildroot.org --cc bob --cc alice outgoing/*

Note that git should be configured to use your mail account. +To configure git, see man git-send-email or google it.

If you do not use git send-email, make sure posted patches are not +line-wrapped, otherwise they cannot easily be applied. In such a case, +fix your e-mail client, or better yet, learn to use git send-email.

21.5.3. Cover letter

If you want to present the whole patch set in a separate mail, add +--cover-letter to the git format-patch command (see man +git-format-patch for further information). This will generate a +template for an introduction e-mail to your patch series.

A cover letter may be useful to introduce the changes you propose +in the following cases:

  • +large number of commits in the series; +
  • +deep impact of the changes in the rest of the project; +
  • +RFC [4]; +
  • +whenever you feel it will help presenting your work, your choices, + the review process, etc. +

21.5.4. Patch revision changelog

When improvements are requested, the new revision of each commit +should include a changelog of the modifications between each +submission. Note that when your patch series is introduced by a cover +letter, an overall changelog may be added to the cover letter in +addition to the changelog in the individual commits. +The best thing to rework a patch series is by interactive rebasing: +git rebase -i origin/master. Consult the git manual for more +information.

When added to the individual commits, this changelog is added when +editing the commit message. Below the Signed-off-by section, add +--- and your changelog.

Although the changelog will be visible for the reviewers in the mail +thread, as well as in patchwork, git +will automatically ignores lines below --- when the patch will be +merged. This is the intended behavior: the changelog is not meant to +be preserved forever in the git history of the project.

Hereafter the recommended layout:

Patch title: short explanation, max 72 chars
+
+A paragraph that explains the problem, and how it manifests itself. If
+the problem is complex, it is OK to add more paragraphs. All paragraphs
+should be wrapped at 72 characters.
+
+A paragraph that explains the root cause of the problem. Again, more
+than on paragraph is OK.
+
+Finally, one or more paragraphs that explain how the problem is solved.
+Don't hesitate to explain complex solutions in detail.
+
+Signed-off-by: John DOE <john.doe@example.net>
+
+---
+Changes v2 -> v3:
+  - foo bar  (suggested by Jane)
+  - bar buz
+
+Changes v1 -> v2:
+  - alpha bravo  (suggested by John)
+  - charly delta

Any patch revision should include the version number. The version number +is simply composed of the letter v followed by an integer greater or +equal to two (i.e. "PATCH v2", "PATCH v3" …).

This can be easily handled with git format-patch by using the option +--subject-prefix:

$ git format-patch --subject-prefix "PATCH v4" \
+    -M -s -o outgoing origin/master

Since git version 1.8.1, you can also use -v <n> (where <n> is the +version number):

$ git format-patch -v4 -M -s -o outgoing origin/master

When you provide a new version of a patch, please mark the old one as +superseded in patchwork. You need to +create an account on patchwork to be +able to modify the status of your patches. Note that you can only change +the status of patches you submitted yourself, which means the email +address you register in patchwork should +match the one you use for sending patches to the mailing list.

You can also add the --in-reply-to <message-id> option when +submitting a patch to the mailing list. The id of the mail to reply to +can be found under the "Message Id" tag on +patchwork. The advantage of +in-reply-to is that patchwork will automatically mark the previous +version of the patch as superseded.

21.6. Reporting issues/bugs or getting help

Before reporting any issue, please check in +the mailing list archive +Chapter 5, Community resources whether someone has +already reported and/or fixed a similar problem.

However you choose to report bugs or get help, either by +opening a bug in the bug tracker +Chapter 5, Community resources or by +sending a mail to the mailing list +Chapter 5, Community resources, there are +a number of details to provide in order to help people reproduce and +find a solution to the issue.

Try to think as if you were trying to help someone else; in +that case, what would you need?

Here is a short list of details to provide in such case:

  • +host machine (OS/release) +
  • +version of Buildroot +
  • +target for which the build fails +
  • +package(s) for which the build fails +
  • +the command that fails and its output +
  • +any information you think that may be relevant +

Additionally, you should add the .config file (or if you know how, a +defconfig; see Section 9.3, “Storing the Buildroot configuration”).

If some of these details are too large, do not hesitate to use a +pastebin service. Note that not all available pastebin services will +preserve Unix-style line terminators when downloading raw pastes. +Following pastebin services are known to work correctly: +- https://gist.github.com/ +- http://code.bulix.org/



[4] RFC: (Request for comments) change proposal

Chapter 22. DEVELOPERS file and get-developers

The main Buildroot directory contains a file named DEVELOPERS that +lists the developers involved with various areas of Buildroot. Thanks +to this file, the get-developer tool allows to:

  • +Calculate the list of developers to whom patches should be sent, by + parsing the patches and matching the modified files with the + relevant developers. See Section 21.5, “Submitting patches” for details. +
  • +Find which developers are taking care of a given architecture or + package, so that they can be notified when a build failure occurs on + this architecture or package. This is done in interaction with + Buildroot’s autobuild infrastructure. +

We ask developers adding new packages, new boards, or generally new +functionality in Buildroot, to register themselves in the DEVELOPERS +file. As an example, we expect a developer contributing a new package +to include in his patch the appropriate modification to the +DEVELOPERS file.

The DEVELOPERS file format is documented in detail inside the file +itself.

The get-developer tool, located in utils/ allows to use +the DEVELOPERS file for various tasks:

  • +When passing one or several patches as command line argument, + get-developer will return the appropriate git send-email + command. +
  • +When using the -a <arch> command line option, get-developer will + return the list of developers in charge of the given architecture. +
  • +When using the -p <package> command line option, get-developer + will return the list of developers in charge of the given package. +
  • +When using the -c command line option, get-developer will look + at all files under version control in the Buildroot repository, and + list the ones that are not handled by any developer. The purpose of + this option is to help completing the DEVELOPERS file. +
  • +When using without any arguments, it validates the integrity of the + DEVELOPERS file and will note WARNINGS for items that don’t match. +

Part IV. Appendix

Chapter 23. Makedev syntax documentation

The makedev syntax is used in several places in Buildroot to +define changes to be made for permissions, or which device files to +create and how to create them, in order to avoid calls to mknod.

This syntax is derived from the makedev utility, and more complete +documentation can be found in the package/makedevs/README file.

It takes the form of a space separated list of fields, one file per +line; the fields are:

name

type

mode

uid

gid

major

minor

start

inc

count

There are a few non-trivial blocks:

  • +name is the path to the file you want to create/modify +
  • +type is the type of the file, being one of: +

    • +f: a regular file +
    • +d: a directory +
    • +r: a directory recursively +
    • +c: a character device file +
    • +b: a block device file +
    • +p: a named pipe +
  • +mode are the usual permissions settings (only numerical values + are allowed) +
  • +uid and gid are the UID and GID to set on this file; can be + either numerical values or actual names +
  • +major and minor are here for device files, set to - for other + files +
  • +start, inc and count are for when you want to create a batch + of files, and can be reduced to a loop, beginning at start, + incrementing its counter by inc until it reaches count +

Let’s say you want to change the permissions of a given file; using +this syntax, you will need to write:

/usr/bin/foo f 755 0 0 - - - - -
+/usr/bin/bar f 755 root root - - - - -
+/data/buz f 644 buz-user buz-group - - - - -

Alternatively, if you want to change owner/permission of a directory +recursively, you can write (to set UID to foo, GID to bar and access +rights to rwxr-x--- for the directory /usr/share/myapp and all files +and directories below it):

/usr/share/myapp r 750 foo bar - - - - -

On the other hand, if you want to create the device file /dev/hda +and the corresponding 15 files for the partitions, you will need for +/dev/hda:

/dev/hda b 640 root root 3 0 0 0 -

and then for device files corresponding to the partitions of +/dev/hda, /dev/hdaX, X ranging from 1 to 15:

/dev/hda b 640 root root 3 1 1 1 15

Extended attributes are supported if +BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is enabled. +This is done by adding a line starting with |xattr after +the line describing the file. Right now, only capability +is supported as extended attribute.

|xattr

capability

  • +|xattr is a "flag" that indicate an extended attribute +
  • +capability is a capability to add to the previous file +

If you want to add the capability cap_sys_admin to the binary foo, +you will write :

/usr/bin/foo f 755 root root - - - - -
+|xattr cap_sys_admin+eip

You can add several capabilities to a file by using several |xattr lines. +If you want to add the capability cap_sys_admin and cap_net_admin to the +binary foo, you will write :

/usr/bin/foo f 755 root root - - - - -
+|xattr cap_sys_admin+eip
+|xattr cap_net_admin+eip

Chapter 24. Makeusers syntax documentation

The syntax to create users is inspired by the makedev syntax, above, but +is specific to Buildroot.

The syntax for adding a user is a space-separated list of fields, one +user per line; the fields are:

username

uid

group

gid

password

home

shell

groups

comment

Where:

  • +username is the desired user name (aka login name) for the user. + It can not be root, and must be unique. If set to -, then just a + group will be created. +
  • +uid is the desired UID for the user. It must be unique, and not + 0. If set to -1, then a unique UID will be computed by Buildroot + in the range [1000…1999] +
  • +group is the desired name for the user’s main group. It can not + be root. If the group does not exist, it will be created. +
  • +gid is the desired GID for the user’s main group. It must be unique, + and not 0. If set to -1, and the group does not already exist, then + a unique GID will be computed by Buildroot in the range [1000..1999] +
  • +password is the crypt(3)-encoded password. If prefixed with !, + then login is disabled. If prefixed with =, then it is interpreted + as clear-text, and will be crypt-encoded (using MD5). If prefixed with + !=, then the password will be crypt-encoded (using MD5) and login + will be disabled. If set to *, then login is not allowed. If set to + -, then no password value will be set. +
  • +home is the desired home directory for the user. If set to -, no + home directory will be created, and the user’s home will be /. + Explicitly setting home to / is not allowed. +
  • +shell is the desired shell for the user. If set to -, then + /bin/false is set as the user’s shell. +
  • +groups is the comma-separated list of additional groups the user + should be part of. If set to -, then the user will be a member of + no additional group. Missing groups will be created with an arbitrary + gid. +
  • +comment (aka GECOS + field) is an almost-free-form text. +

There are a few restrictions on the content of each field:

  • +except for comment, all fields are mandatory. +
  • +except for comment, fields may not contain spaces. +
  • +no field may contain a colon (:). +

If home is not -, then the home directory, and all files below, +will belong to the user and its main group.

Examples:

foo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user

This will create this user:

  • +username (aka login name) is: foo +
  • +uid is computed by Buildroot +
  • +main group is: bar +
  • +main group gid is computed by Buildroot +
  • +clear-text password is: blabla, will be crypt(3)-encoded, and login is disabled. +
  • +home is: /home/foo +
  • +shell is: /bin/sh +
  • +foo is also a member of groups: alpha and bravo +
  • +comment is: Foo user +
test 8000 wheel -1 = - /bin/sh - Test user

This will create this user:

  • +username (aka login name) is: test +
  • +uid is : 8000 +
  • +main group is: wheel +
  • +main group gid is computed by Buildroot, and will use the value defined in the rootfs skeleton +
  • +password is empty (aka no password). +
  • +home is / but will not belong to test +
  • +shell is: /bin/sh +
  • +test is not a member of any additional groups +
  • +comment is: Test user + +

Chapter 25. Migrating from older Buildroot versions

Some versions have introduced backward incompatibilities. This section +explains those incompatibilities, and for each explains what to do to +complete the migration.

25.1. Migrating to 2016.11

Before Buildroot 2016.11, it was possible to use only one br2-external +tree at once. With Buildroot 2016.11 came the possibility to use more +than one simultaneously (for details, see Section 9.2, “Keeping customizations outside of Buildroot”).

This however means that older br2-external trees are not usable as-is. +A minor change has to be made: adding a name to your br2-external tree.

This can be done very easily in just a few steps:

  • +First, create a new file named external.desc, at the root of your + br2-external tree, with a single line defining the name of your + br2-external tree: +

    $ echo 'name: NAME_OF_YOUR_TREE' >external.desc

    Note. Be careful when choosing a name: It has to be unique and be made +with only ASCII characters from the set [A-Za-z0-9_].

  • +Then, change every occurence of BR2_EXTERNAL in your br2-external + tree with the new variable: +

    $ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g'

Now, your br2-external tree can be used with Buildroot 2016.11 onward.

Note: This change makes your br2-external tree incompatible with Buildroot +before 2016.11.

25.2. Migrating to 2017.08

Before Buildroot 2017.08, host packages were installed in $(HOST_DIR)/usr +(with e.g. the autotools' --prefix=$(HOST_DIR)/usr). With Buildroot +2017.08, they are now installed directly in $(HOST_DIR).

Whenever a package installs an executable that is linked with a library +in $(HOST_DIR)/lib, it must have an RPATH pointing to that directory.

An RPATH pointing to $(HOST_DIR)/usr/lib is no longer accepted.

\ No newline at end of file diff --git a/buildroot/docs/manual/manual.mk b/buildroot/docs/manual/manual.mk new file mode 100644 index 0000000..1d03b21 --- /dev/null +++ b/buildroot/docs/manual/manual.mk @@ -0,0 +1,10 @@ +################################################################################ +# +# The Buildroot manual +# +################################################################################ + +MANUAL_SOURCES = $(sort $(wildcard docs/manual/*.txt) $(wildcard docs/images/*)) +MANUAL_RESOURCES = $(TOPDIR)/docs/images + +$(eval $(call asciidoc-document)) diff --git a/buildroot/docs/manual/manual.pdf b/buildroot/docs/manual/manual.pdf new file mode 100644 index 0000000..f54cf16 Binary files /dev/null and b/buildroot/docs/manual/manual.pdf differ diff --git a/buildroot/docs/manual/manual.text b/buildroot/docs/manual/manual.text new file mode 100644 index 0000000..a50cc62 --- /dev/null +++ b/buildroot/docs/manual/manual.text @@ -0,0 +1,7294 @@ + +--------------------------------------------------------------------- + +The Buildroot user manual + +--------------------------------------------------------------------- +--------------------------------------------------------------------- + +Table of Contents + + +I. Getting started + + 1. About Buildroot + 2. System requirements + + 2.1. Mandatory packages + 2.2. Optional packages + + 3. Getting Buildroot + 4. Buildroot quick start + 5. Community resources + +II. User guide + + 6. Buildroot configuration + + 6.1. Cross-compilation toolchain + 6.2. /dev management + 6.3. init system + + 7. Configuration of other components + 8. General Buildroot usage + + 8.1. make tips + 8.2. Understanding when a full rebuild is necessary + 8.3. Understanding how to rebuild packages + 8.4. Offline builds + 8.5. Building out-of-tree + 8.6. Environment variables + 8.7. Dealing efficiently with filesystem images + 8.8. Graphing the dependencies between packages + 8.9. Graphing the build duration + 8.10. Graphing the filesystem size contribution of packages + 8.11. Integration with Eclipse + 8.12. Advanced usage + + 9. Project-specific customization + + 9.1. Recommended directory structure + 9.2. Keeping customizations outside of Buildroot + 9.3. Storing the Buildroot configuration + 9.4. Storing the configuration of other components + 9.5. Customizing the generated target filesystem + 9.6. Adding custom user accounts + 9.7. Customization after the images have been created + 9.8. Adding project-specific patches + 9.9. Adding project-specific packages + 9.10. Quick guide to storing your project-specific + customizations + + 10. Frequently Asked Questions & Troubleshooting + + 10.1. The boot hangs after Starting network… + 10.2. Why is there no compiler on the target? + 10.3. Why are there no development files on the target? + 10.4. Why is there no documentation on the target? + 10.5. Why are some packages not visible in the Buildroot + config menu? + 10.6. Why not use the target directory as a chroot directory? + 10.7. Why doesn’t Buildroot generate binary packages (.deb, + .ipkg…)? + 10.8. How to speed-up the build process? + + 11. Known issues + 12. Legal notice and licensing + + 12.1. Complying with open source licenses + 12.2. Complying with the Buildroot license + + 13. Beyond Buildroot + + 13.1. Boot the generated images + 13.2. Chroot + +III. Developer guide + + 14. How Buildroot works + 15. Coding style + + 15.1. Config.in file + 15.2. The .mk file + 15.3. The documentation + 15.4. Support scripts + + 16. Adding support for a particular board + 17. Adding new packages to Buildroot + + 17.1. Package directory + 17.2. Config files + 17.3. The .mk file + 17.4. The .hash file + 17.5. Infrastructure for packages with specific build systems + 17.6. Infrastructure for autotools-based packages + 17.7. Infrastructure for CMake-based packages + 17.8. Infrastructure for Python packages + 17.9. Infrastructure for LuaRocks-based packages + 17.10. Infrastructure for Perl/CPAN packages + 17.11. Infrastructure for virtual packages + 17.12. Infrastructure for packages using kconfig for + configuration files + 17.13. Infrastructure for rebar-based packages + 17.14. Infrastructure for Waf-based packages + 17.15. Integration of Meson-based packages + 17.16. Integration of Cargo-based packages + 17.17. Infrastructure for packages building kernel modules + 17.18. Infrastructure for asciidoc documents + 17.19. Infrastructure specific to the Linux kernel package + 17.20. Hooks available in the various build steps + 17.21. Gettext integration and interaction with packages + 17.22. Tips and tricks + 17.23. Conclusion + + 18. Patching a package + + 18.1. Providing patches + 18.2. How patches are applied + 18.3. Format and licensing of the package patches + 18.4. Integrating patches found on the Web + + 19. Download infrastructure + 20. Debugging Buildroot + 21. Contributing to Buildroot + + 21.1. Reproducing, analyzing and fixing bugs + 21.2. Analyzing and fixing autobuild failures + 21.3. Reviewing and testing patches + 21.4. Work on items from the TODO list + 21.5. Submitting patches + 21.6. Reporting issues/bugs or getting help + + 22. DEVELOPERS file and get-developers + +IV. Appendix + + 23. Makedev syntax documentation + 24. Makeusers syntax documentation + 25. Migrating from older Buildroot versions + + 25.1. Migrating to 2016.11 + 25.2. Migrating to 2017.08 + +List of Examples + +17.1. Config script: divine package +17.2. Config script: imagemagick package: + + +--------------------------------------------------------------------- + +--------------------------------------------------------------------- + +Buildroot 2018.02.4 manual generated on 2018-07-20 22:26:18 UTC from +git revision e4eaf7311d + +The Buildroot manual is written by the Buildroot developers. It is +licensed under the GNU General Public License, version 2. Refer to +the COPYING [http://git.buildroot.org/buildroot/tree/COPYING?id= +e4eaf7311dfffff7fd753f24ce2d01a6f5188292] file in the Buildroot +sources for the full text of this license. + +Copyright © 2004-2018 The Buildroot developers + +Part I. Getting started + +Table of Contents + +1. About Buildroot +2. System requirements + + 2.1. Mandatory packages + 2.2. Optional packages + +3. Getting Buildroot +4. Buildroot quick start +5. Community resources + +Chapter 1. About Buildroot + +Buildroot is a tool that simplifies and automates the process of +building a complete Linux system for an embedded system, using +cross-compilation. + +In order to achieve this, Buildroot is able to generate a +cross-compilation toolchain, a root filesystem, a Linux kernel image +and a bootloader for your target. Buildroot can be used for any +combination of these options, independently (you can for example use +an existing cross-compilation toolchain, and build only your root +filesystem with Buildroot). + +Buildroot is useful mainly for people working with embedded systems. +Embedded systems often use processors that are not the regular x86 +processors everyone is used to having in his PC. They can be PowerPC +processors, MIPS processors, ARM processors, etc. + +Buildroot supports numerous processors and their variants; it also +comes with default configurations for several boards available +off-the-shelf. Besides this, a number of third-party projects are +based on, or develop their BSP ^[1] or SDK ^[2] on top of Buildroot. + + +--------------------------------------------------------------------- + +^[1] BSP: Board Support Package + +^[2] SDK: Software Development Kit + +Chapter 2. System requirements + +Buildroot is designed to run on Linux systems. + +While Buildroot itself will build most host packages it needs for the +compilation, certain standard Linux utilities are expected to be +already installed on the host system. Below you will find an overview +of the mandatory and optional packages (note that package names may +vary between distributions). + +2.1. Mandatory packages + + * Build tools: + + + which + + sed + + make (version 3.81 or any later) + + binutils + + build-essential (only for Debian based systems) + + gcc (version 2.95 or any later) + + g++ (version 2.95 or any later) + + bash + + patch + + gzip + + bzip2 + + perl (version 5.8.7 or any later) + + tar + + cpio + + python (version 2.6 or any later) + + unzip + + rsync + + file (must be in /usr/bin/file) + + bc + * Source fetching tools: + + + wget + +2.2. Optional packages + + * Configuration interface dependencies: + + For these libraries, you need to install both runtime and + development data, which in many distributions are packaged + separately. The development packages typically have a -dev or + -devel suffix. + + + ncurses5 to use the menuconfig interface + + qt4 to use the xconfig interface + + glib2, gtk2 and glade2 to use the gconfig interface + * Source fetching tools: + + In the official tree, most of the package sources are retrieved + using wget from ftp, http or https locations. A few packages are + only available through a version control system. Moreover, + Buildroot is capable of downloading sources via other tools, like + rsync or scp (refer to Chapter 19, Download infrastructure for + more details). If you enable packages using any of these methods, + you will need to install the corresponding tool on the host + system: + + + bazaar + + cvs + + git + + mercurial + + rsync + + scp + + subversion + * Java-related packages, if the Java Classpath needs to be built + for the target system: + + + The javac compiler + + The jar tool + * Documentation generation tools: + + + asciidoc, version 8.6.3 or higher + + w3m + + python with the argparse module (automatically present in + 2.7+ and 3.2+) + + dblatex (required for the pdf manual only) + * Graph generation tools: + + + graphviz to use graph-depends and -graph-depends + + python-matplotlib to use graph-build + +Chapter 3. Getting Buildroot + +Buildroot releases are made every 3 months, in February, May, August +and November. Release numbers are in the format YYYY.MM, so for +example 2013.02, 2014.08. + +Release tarballs are available at http://buildroot.org/downloads/. + +For your convenience, a Vagrantfile [https://www.vagrantup.com/] is +available in support/misc/Vagrantfile in the Buildroot source tree to +quickly set up a virtual machine with the needed dependencies to get +started. + +If you want to setup an isolated buildroot environment on Linux or +Mac Os X, paste this line onto your terminal: + +curl -O https://buildroot.org/downloads/Vagrantfile; vagrant up + +If you are on Windows, paste this into your powershell: + +(new-object System.Net.WebClient).DownloadFile( +"https://buildroot.org/downloads/Vagrantfile","Vagrantfile"); +vagrant up + +If you want to follow development, you can use the daily snapshots or +make a clone of the Git repository. Refer to the Download page [http: +//buildroot.org/download] of the Buildroot website for more details. + +Chapter 4. Buildroot quick start + +Important: you can and should build everything as a normal user. +There is no need to be root to configure and use Buildroot. By +running all commands as a regular user, you protect your system +against packages behaving badly during compilation and installation. + +The first step when using Buildroot is to create a configuration. +Buildroot has a nice configuration tool similar to the one you can +find in the Linux kernel [http://www.kernel.org/] or in BusyBox +[http://www.busybox.net/]. + +From the buildroot directory, run + + $ make menuconfig + +for the original curses-based configurator, or + + $ make nconfig + +for the new curses-based configurator, or + + $ make xconfig + +for the Qt-based configurator, or + + $ make gconfig + +for the GTK-based configurator. + +All of these "make" commands will need to build a configuration +utility (including the interface), so you may need to install +"development" packages for relevant libraries used by the +configuration utilities. Refer to Chapter 2, System requirements for +more details, specifically the optional requirements Section 2.2, +“Optional packages” to get the dependencies of your favorite +interface. + +For each menu entry in the configuration tool, you can find +associated help that describes the purpose of the entry. Refer to +Chapter 6, Buildroot configuration for details on some specific +configuration aspects. + +Once everything is configured, the configuration tool generates a +.config file that contains the entire configuration. This file will +be read by the top-level Makefile. + +To start the build process, simply run: + + $ make + +You should never use make -jN with Buildroot: top-level parallel make +is currently not supported. Instead, use the BR2_JLEVEL option to +tell Buildroot to run the compilation of each individual package with +make -jN. + +The make command will generally perform the following steps: + + * download source files (as required); + * configure, build and install the cross-compilation toolchain, or + simply import an external toolchain; + * configure, build and install selected target packages; + * build a kernel image, if selected; + * build a bootloader image, if selected; + * create a root filesystem in selected formats. + +Buildroot output is stored in a single directory, output/. This +directory contains several subdirectories: + + * images/ where all the images (kernel image, bootloader and root + filesystem images) are stored. These are the files you need to + put on your target system. + * build/ where all the components are built (this includes tools + needed by Buildroot on the host and packages compiled for the + target). This directory contains one subdirectory for each of + these components. + * staging/ which contains a hierarchy similar to a root filesystem + hierarchy. This directory contains the headers and libraries of + the cross-compilation toolchain and all the userspace packages + selected for the target. However, this directory is not intended + to be the root filesystem for the target: it contains a lot of + development files, unstripped binaries and libraries that make it + far too big for an embedded system. These development files are + used to compile libraries and applications for the target that + depend on other libraries. + * target/ which contains almost the complete root filesystem for + the target: everything needed is present except the device files + in /dev/ (Buildroot can’t create them because Buildroot doesn’t + run as root and doesn’t want to run as root). Also, it doesn’t + have the correct permissions (e.g. setuid for the busybox + binary). Therefore, this directory should not be used on your + target. Instead, you should use one of the images built in the + images/ directory. If you need an extracted image of the root + filesystem for booting over NFS, then use the tarball image + generated in images/ and extract it as root. Compared to staging + /, target/ contains only the files and libraries needed to run + the selected target applications: the development files (headers, + etc.) are not present, the binaries are stripped. + * host/ contains the installation of tools compiled for the host + that are needed for the proper execution of Buildroot, including + the cross-compilation toolchain. + +These commands, make menuconfig|nconfig|gconfig|xconfig and make, are +the basic ones that allow to easily and quickly generate images +fitting your needs, with all the features and applications you +enabled. + +More details about the "make" command usage are given in Section 8.1, +“make tips”. + +Chapter 5. Community resources + +Like any open source project, Buildroot has different ways to share +information in its community and outside. + +Each of those ways may interest you if you are looking for some help, +want to understand Buildroot or contribute to the project. + +Mailing List + + Buildroot has a mailing list for discussion and development. It + is the main method of interaction for Buildroot users and + developers. + + Only subscribers to the Buildroot mailing list are allowed to + post to this list. You can subscribe via the mailing list info + page [http://lists.buildroot.org/mailman/listinfo/buildroot]. + + Mails that are sent to the mailing list are also available in the + mailing list archives [http://lists.buildroot.org/pipermail/ + buildroot] and via Gmane [http://gmane.org], at + gmane.comp.lib.uclibc.buildroot [http://dir.gmane.org/ + gmane.comp.lib.uclibc.buildroot]. Please search the mailing list + archives before asking questions, since there is a good chance + someone else has asked the same question before. + +IRC + + The Buildroot IRC channel #buildroot [irc://freenode.net/# + buildroot] is hosted on Freenode [http://webchat.freenode.net]. + It is a useful place to ask quick questions or discuss on certain + topics. + + When asking for help on IRC, share relevant logs or pieces of + code using a code sharing website, such as http://code.bulix.org. + + Note that for certain questions, posting to the mailing list may + be better as it will reach more people, both developers and + users. + +Bug tracker + Bugs in Buildroot can be reported via the mailing list or + alternatively via the Buildroot bugtracker [https:// + bugs.buildroot.org/buglist.cgi?product=buildroot]. Please refer + to Section 21.6, “Reporting issues/bugs or getting help” before + creating a bug report. +Wiki + The Buildroot wiki page [http://elinux.org/Buildroot] is hosted + on the eLinux [http://elinux.org] wiki. It contains some useful + links, an overview of past and upcoming events, and a TODO list. +Patchwork + + Patchwork is a web-based patch tracking system designed to + facilitate the contribution and management of contributions to an + open-source project. Patches that have been sent to a mailing + list are 'caught' by the system, and appear on a web page. Any + comments posted that reference the patch are appended to the + patch page too. For more information on Patchwork see http:// + jk.ozlabs.org/projects/patchwork/. + + Buildroot’s Patchwork website is mainly for use by Buildroot’s + maintainer to ensure patches aren’t missed. It is also used by + Buildroot patch reviewers (see also Section 21.3.1, “Applying + Patches from Patchwork”). However, since the website exposes + patches and their corresponding review comments in a clean and + concise web interface, it can be useful for all Buildroot + developers. + + The Buildroot patch management interface is available at http:// + patchwork.buildroot.org. + +Part II. User guide + +Table of Contents + +6. Buildroot configuration + + 6.1. Cross-compilation toolchain + 6.2. /dev management + 6.3. init system + +7. Configuration of other components +8. General Buildroot usage + + 8.1. make tips + 8.2. Understanding when a full rebuild is necessary + 8.3. Understanding how to rebuild packages + 8.4. Offline builds + 8.5. Building out-of-tree + 8.6. Environment variables + 8.7. Dealing efficiently with filesystem images + 8.8. Graphing the dependencies between packages + 8.9. Graphing the build duration + 8.10. Graphing the filesystem size contribution of packages + 8.11. Integration with Eclipse + 8.12. Advanced usage + +9. Project-specific customization + + 9.1. Recommended directory structure + 9.2. Keeping customizations outside of Buildroot + 9.3. Storing the Buildroot configuration + 9.4. Storing the configuration of other components + 9.5. Customizing the generated target filesystem + 9.6. Adding custom user accounts + 9.7. Customization after the images have been created + 9.8. Adding project-specific patches + 9.9. Adding project-specific packages + 9.10. Quick guide to storing your project-specific customizations + +10. Frequently Asked Questions & Troubleshooting + + 10.1. The boot hangs after Starting network… + 10.2. Why is there no compiler on the target? + 10.3. Why are there no development files on the target? + 10.4. Why is there no documentation on the target? + 10.5. Why are some packages not visible in the Buildroot config + menu? + 10.6. Why not use the target directory as a chroot directory? + 10.7. Why doesn’t Buildroot generate binary packages (.deb, + .ipkg…)? + 10.8. How to speed-up the build process? + +11. Known issues +12. Legal notice and licensing + + 12.1. Complying with open source licenses + 12.2. Complying with the Buildroot license + +13. Beyond Buildroot + + 13.1. Boot the generated images + 13.2. Chroot + +Chapter 6. Buildroot configuration + +All the configuration options in make *config have a help text +providing details about the option. + +The make *config commands also offer a search tool. Read the help +message in the different frontend menus to know how to use it: + + * in menuconfig, the search tool is called by pressing /; + * in xconfig, the search tool is called by pressing Ctrl + f. + +The result of the search shows the help message of the matching +items. In menuconfig, numbers in the left column provide a shortcut +to the corresponding entry. Just type this number to directly jump to +the entry, or to the containing menu in case the entry is not +selectable due to a missing dependency. + +Although the menu structure and the help text of the entries should +be sufficiently self-explanatory, a number of topics require +additional explanation that cannot easily be covered in the help text +and are therefore covered in the following sections. + +6.1. Cross-compilation toolchain + +A compilation toolchain is the set of tools that allows you to +compile code for your system. It consists of a compiler (in our case, +gcc), binary utils like assembler and linker (in our case, binutils) +and a C standard library (for example GNU Libc [http://www.gnu.org/ +software/libc/libc.html], uClibc-ng [http://www.uclibc-ng.org/]). + +The system installed on your development station certainly already +has a compilation toolchain that you can use to compile an +application that runs on your system. If you’re using a PC, your +compilation toolchain runs on an x86 processor and generates code for +an x86 processor. Under most Linux systems, the compilation toolchain +uses the GNU libc (glibc) as the C standard library. This compilation +toolchain is called the "host compilation toolchain". The machine on +which it is running, and on which you’re working, is called the "host +system" ^[3]. + +The compilation toolchain is provided by your distribution, and +Buildroot has nothing to do with it (other than using it to build a +cross-compilation toolchain and other tools that are run on the +development host). + +As said above, the compilation toolchain that comes with your system +runs on and generates code for the processor in your host system. As +your embedded system has a different processor, you need a +cross-compilation toolchain - a compilation toolchain that runs on +your host system but generates code for your target system (and +target processor). For example, if your host system uses x86 and your +target system uses ARM, the regular compilation toolchain on your +host runs on x86 and generates code for x86, while the +cross-compilation toolchain runs on x86 and generates code for ARM. + +Buildroot provides two solutions for the cross-compilation toolchain: + + * The internal toolchain backend, called Buildroot toolchain in the + configuration interface. + * The external toolchain backend, called External toolchain in the + configuration interface. + +The choice between these two solutions is done using the Toolchain +Type option in the Toolchain menu. Once one solution has been chosen, +a number of configuration options appear, they are detailed in the +following sections. + +6.1.1. Internal toolchain backend + +The internal toolchain backend is the backend where Buildroot builds +by itself a cross-compilation toolchain, before building the +userspace applications and libraries for your target embedded system. + +This backend supports several C libraries: uClibc-ng [http:// +www.uclibc-ng.org], glibc [http://www.gnu.org/software/libc/ +libc.html] and musl [http://www.musl-libc.org]. + +Once you have selected this backend, a number of options appear. The +most important ones allow to: + + * Change the version of the Linux kernel headers used to build the + toolchain. This item deserves a few explanations. In the process + of building a cross-compilation toolchain, the C library is being + built. This library provides the interface between userspace + applications and the Linux kernel. In order to know how to "talk" + to the Linux kernel, the C library needs to have access to the + Linux kernel headers (i.e. the .h files from the kernel), which + define the interface between userspace and the kernel (system + calls, data structures, etc.). Since this interface is backward + compatible, the version of the Linux kernel headers used to build + your toolchain do not need to match exactly the version of the + Linux kernel you intend to run on your embedded system. They only + need to have a version equal or older to the version of the Linux + kernel you intend to run. If you use kernel headers that are more + recent than the Linux kernel you run on your embedded system, + then the C library might be using interfaces that are not + provided by your Linux kernel. + * Change the version of the GCC compiler, binutils and the C + library. + * Select a number of toolchain options (uClibc only): whether the + toolchain should have RPC support (used mainly for NFS), + wide-char support, locale support (for internationalization), C++ + support or thread support. Depending on which options you choose, + the number of userspace applications and libraries visible in + Buildroot menus will change: many applications and libraries + require certain toolchain options to be enabled. Most packages + show a comment when a certain toolchain option is required to be + able to enable those packages. If needed, you can further refine + the uClibc configuration by running make uclibc-menuconfig. Note + however that all packages in Buildroot are tested against the + default uClibc configuration bundled in Buildroot: if you deviate + from this configuration by removing features from uClibc, some + packages may no longer build. + +It is worth noting that whenever one of those options is modified, +then the entire toolchain and system must be rebuilt. See +Section 8.2, “Understanding when a full rebuild is necessary”. + +Advantages of this backend: + + * Well integrated with Buildroot + * Fast, only builds what’s necessary + +Drawbacks of this backend: + + * Rebuilding the toolchain is needed when doing make clean, which + takes time. If you’re trying to reduce your build time, consider + using the External toolchain backend. + +6.1.2. External toolchain backend + +The external toolchain backend allows to use existing pre-built +cross-compilation toolchains. Buildroot knows about a number of +well-known cross-compilation toolchains (from Linaro [http:// +www.linaro.org] for ARM, Sourcery CodeBench [http://www.mentor.com/ +embedded-software/sourcery-tools/sourcery-codebench/editions/ +lite-edition/] for ARM, x86-64, PowerPC, and MIPS, and is capable of +downloading them automatically, or it can be pointed to a custom +toolchain, either available for download or installed locally. + +Then, you have three solutions to use an external toolchain: + + * Use a predefined external toolchain profile, and let Buildroot + download, extract and install the toolchain. Buildroot already + knows about a few CodeSourcery and Linaro toolchains. Just select + the toolchain profile in Toolchain from the available ones. This + is definitely the easiest solution. + * Use a predefined external toolchain profile, but instead of + having Buildroot download and extract the toolchain, you can tell + Buildroot where your toolchain is already installed on your + system. Just select the toolchain profile in Toolchain through + the available ones, unselect Download toolchain automatically, + and fill the Toolchain path text entry with the path to your + cross-compiling toolchain. + * Use a completely custom external toolchain. This is particularly + useful for toolchains generated using crosstool-NG or with + Buildroot itself. To do this, select the Custom toolchain + solution in the Toolchain list. You need to fill the Toolchain + path, Toolchain prefix and External toolchain C library options. + Then, you have to tell Buildroot what your external toolchain + supports. If your external toolchain uses the glibc library, you + only have to tell whether your toolchain supports C++ or not and + whether it has built-in RPC support. If your external toolchain + uses the uClibc library, then you have to tell Buildroot if it + supports RPC, wide-char, locale, program invocation, threads and + C++. At the beginning of the execution, Buildroot will tell you + if the selected options do not match the toolchain configuration. + +Our external toolchain support has been tested with toolchains from +CodeSourcery and Linaro, toolchains generated by crosstool-NG [http:/ +/crosstool-ng.org], and toolchains generated by Buildroot itself. In +general, all toolchains that support the sysroot feature should work. +If not, do not hesitate to contact the developers. + +We do not support toolchains or SDK generated by OpenEmbedded or +Yocto, because these toolchains are not pure toolchains (i.e. just +the compiler, binutils, the C and C++ libraries). Instead these +toolchains come with a very large set of pre-compiled libraries and +programs. Therefore, Buildroot cannot import the sysroot of the +toolchain, as it would contain hundreds of megabytes of pre-compiled +libraries that are normally built by Buildroot. + +We also do not support using the distribution toolchain (i.e. the gcc +/binutils/C library installed by your distribution) as the toolchain +to build software for the target. This is because your distribution +toolchain is not a "pure" toolchain (i.e. only with the C/C++ +library), so we cannot import it properly into the Buildroot build +environment. So even if you are building a system for a x86 or x86_64 +target, you have to generate a cross-compilation toolchain with +Buildroot or crosstool-NG. + +If you want to generate a custom toolchain for your project, that can +be used as an external toolchain in Buildroot, our recommendation is +definitely to build it with crosstool-NG [http://crosstool-ng.org]. +We recommend to build the toolchain separately from Buildroot, and +then import it in Buildroot using the external toolchain backend. + +Advantages of this backend: + + * Allows to use well-known and well-tested cross-compilation + toolchains. + * Avoids the build time of the cross-compilation toolchain, which + is often very significant in the overall build time of an + embedded Linux system. + +Drawbacks of this backend: + + * If your pre-built external toolchain has a bug, may be hard to + get a fix from the toolchain vendor, unless you build your + external toolchain by yourself using Crosstool-NG. + +6.1.2.1. External toolchain wrapper + +When using an external toolchain, Buildroot generates a wrapper +program, that transparently passes the appropriate options (according +to the configuration) to the external toolchain programs. In case you +need to debug this wrapper to check exactly what arguments are +passed, you can set the environment variable BR2_DEBUG_WRAPPER to +either one of: + + * 0, empty or not set: no debug + * 1: trace all arguments on a single line + * 2: trace one argument per line + +6.2. /dev management + +On a Linux system, the /dev directory contains special files, called +device files, that allow userspace applications to access the +hardware devices managed by the Linux kernel. Without these device +files, your userspace applications would not be able to use the +hardware devices, even if they are properly recognized by the Linux +kernel. + +Under System configuration, /dev management, Buildroot offers four +different solutions to handle the /dev directory : + + * The first solution is Static using device table. This is the old + classical way of handling device files in Linux. With this + method, the device files are persistently stored in the root + filesystem (i.e. they persist across reboots), and there is + nothing that will automatically create and remove those device + files when hardware devices are added or removed from the system. + Buildroot therefore creates a standard set of device files using + a device table, the default one being stored in system/ + device_table_dev.txt in the Buildroot source code. This file is + processed when Buildroot generates the final root filesystem + image, and the device files are therefore not visible in the + output/target directory. The BR2_ROOTFS_STATIC_DEVICE_TABLE + option allows to change the default device table used by + Buildroot, or to add an additional device table, so that + additional device files are created by Buildroot during the + build. So, if you use this method, and a device file is missing + in your system, you can for example create a board// + /device_table_dev.txt file that contains the + description of your additional device files, and then you can set + BR2_ROOTFS_STATIC_DEVICE_TABLE to system/device_table_dev.txt + board///device_table_dev.txt. For more + details about the format of the device table file, see + Chapter 23, Makedev syntax documentation. + * The second solution is Dynamic using devtmpfs only. devtmpfs is a + virtual filesystem inside the Linux kernel that has been + introduced in kernel 2.6.32 (if you use an older kernel, it is + not possible to use this option). When mounted in /dev, this + virtual filesystem will automatically make device files appear + and disappear as hardware devices are added and removed from the + system. This filesystem is not persistent across reboots: it is + filled dynamically by the kernel. Using devtmpfs requires the + following kernel configuration options to be enabled: + CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT. When Buildroot is in + charge of building the Linux kernel for your embedded device, it + makes sure that those two options are enabled. However, if you + build your Linux kernel outside of Buildroot, then it is your + responsibility to enable those two options (if you fail to do so, + your Buildroot system will not boot). + * The third solution is Dynamic using devtmpfs + mdev. This method + also relies on the devtmpfs virtual filesystem detailed above (so + the requirement to have CONFIG_DEVTMPFS and CONFIG_DEVTMPFS_MOUNT + enabled in the kernel configuration still apply), but adds the + mdev userspace utility on top of it. mdev is a program part of + BusyBox that the kernel will call every time a device is added or + removed. Thanks to the /etc/mdev.conf configuration file, mdev + can be configured to for example, set specific permissions or + ownership on a device file, call a script or application whenever + a device appears or disappear, etc. Basically, it allows + userspace to react on device addition and removal events. mdev + can for example be used to automatically load kernel modules when + devices appear on the system. mdev is also important if you have + devices that require a firmware, as it will be responsible for + pushing the firmware contents to the kernel. mdev is a + lightweight implementation (with fewer features) of udev. For + more details about mdev and the syntax of its configuration file, + see http://git.busybox.net/busybox/tree/docs/mdev.txt. + * The fourth solution is Dynamic using devtmpfs + eudev. This + method also relies on the devtmpfs virtual filesystem detailed + above, but adds the eudev userspace daemon on top of it. eudev is + a daemon that runs in the background, and gets called by the + kernel when a device gets added or removed from the system. It is + a more heavyweight solution than mdev, but provides higher + flexibility. eudev is a standalone version of udev, the original + userspace daemon used in most desktop Linux distributions, which + is now part of Systemd. For more details, see http:// + en.wikipedia.org/wiki/Udev. + +The Buildroot developers recommendation is to start with the Dynamic +using devtmpfs only solution, until you have the need for userspace +to be notified when devices are added/removed, or if firmwares are +needed, in which case Dynamic using devtmpfs + mdev is usually a good +solution. + +Note that if systemd is chosen as init system, /dev management will +be performed by the udev program provided by systemd. + +6.3. init system + +The init program is the first userspace program started by the kernel +(it carries the PID number 1), and is responsible for starting the +userspace services and programs (for example: web server, graphical +applications, other network servers, etc.). + +Buildroot allows to use three different types of init systems, which +can be chosen from System configuration, Init system: + + * The first solution is BusyBox. Amongst many programs, BusyBox has + an implementation of a basic init program, which is sufficient + for most embedded systems. Enabling the BR2_INIT_BUSYBOX will + ensure BusyBox will build and install its init program. This is + the default solution in Buildroot. The BusyBox init program will + read the /etc/inittab file at boot to know what to do. The syntax + of this file can be found in http://git.busybox.net/busybox/tree/ + examples/inittab (note that BusyBox inittab syntax is special: do + not use a random inittab documentation from the Internet to learn + about BusyBox inittab). The default inittab in Buildroot is + stored in system/skeleton/etc/inittab. Apart from mounting a few + important filesystems, the main job the default inittab does is + to start the /etc/init.d/rcS shell script, and start a getty + program (which provides a login prompt). + * The second solution is systemV. This solution uses the old + traditional sysvinit program, packed in Buildroot in package/ + sysvinit. This was the solution used in most desktop Linux + distributions, until they switched to more recent alternatives + such as Upstart or Systemd. sysvinit also works with an inittab + file (which has a slightly different syntax than the one from + BusyBox). The default inittab installed with this init solution + is located in package/sysvinit/inittab. + * The third solution is systemd. systemd is the new generation init + system for Linux. It does far more than traditional init + programs: aggressive parallelization capabilities, uses socket + and D-Bus activation for starting services, offers on-demand + starting of daemons, keeps track of processes using Linux control + groups, supports snapshotting and restoring of the system state, + etc. systemd will be useful on relatively complex embedded + systems, for example the ones requiring D-Bus and services + communicating between each other. It is worth noting that systemd + brings a fairly big number of large dependencies: dbus, udev and + more. For more details about systemd, see http:// + www.freedesktop.org/wiki/Software/systemd. + +The solution recommended by Buildroot developers is to use the +BusyBox init as it is sufficient for most embedded systems. systemd +can be used for more complex situations. + + +--------------------------------------------------------------------- + +^[3] This terminology differs from what is used by GNU configure, +where the host is the machine on which the application will run +(which is usually the same as target) + +Chapter 7. Configuration of other components + +Before attempting to modify any of the components below, make sure +you have already configured Buildroot itself, and have enabled the +corresponding package. + +BusyBox + + If you already have a BusyBox configuration file, you can + directly specify this file in the Buildroot configuration, using + BR2_PACKAGE_BUSYBOX_CONFIG. Otherwise, Buildroot will start from + a default BusyBox configuration file. + + To make subsequent changes to the configuration, use make + busybox-menuconfig to open the BusyBox configuration editor. + + It is also possible to specify a BusyBox configuration file + through an environment variable, although this is not + recommended. Refer to Section 8.6, “Environment variables” for + more details. + +uClibc + Configuration of uClibc is done in the same way as for BusyBox. + The configuration variable to specify an existing configuration + file is BR2_UCLIBC_CONFIG. The command to make subsequent changes + is make uclibc-menuconfig. +Linux kernel + + If you already have a kernel configuration file, you can directly + specify this file in the Buildroot configuration, using + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG. + + If you do not yet have a kernel configuration file, you can + either start by specifying a defconfig in the Buildroot + configuration, using BR2_LINUX_KERNEL_USE_DEFCONFIG, or start by + creating an empty file and specifying it as custom configuration + file, using BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG. + + To make subsequent changes to the configuration, use make + linux-menuconfig to open the Linux configuration editor. + +Barebox + Configuration of Barebox is done in the same way as for the Linux + kernel. The corresponding configuration variables are + BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG and + BR2_TARGET_BAREBOX_USE_DEFCONFIG. To open the configuration + editor, use make barebox-menuconfig. +U-Boot + Configuration of U-Boot (version 2015.04 or newer) is done in the + same way as for the Linux kernel. The corresponding configuration + variables are BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG and + BR2_TARGET_UBOOT_USE_DEFCONFIG. To open the configuration editor, + use make uboot-menuconfig. + +Chapter 8. General Buildroot usage + +8.1. make tips + +This is a collection of tips that help you make the most of +Buildroot. + +Display all commands executed by make:  + + $ make V=1 + +Display the list of boards with a defconfig:  + + $ make list-defconfigs + +Display all available targets:  + + $ make help + +Not all targets are always available, some settings in the .config +file may hide some targets: + + * busybox-menuconfig only works when busybox is enabled; + * linux-menuconfig and linux-savedefconfig only work when linux is + enabled; + * uclibc-menuconfig is only available when the uClibc C library is + selected in the internal toolchain backend; + * barebox-menuconfig and barebox-savedefconfig only work when the + barebox bootloader is enabled. + * uboot-menuconfig and uboot-savedefconfig only work when the + U-Boot bootloader is enabled. + +Cleaning: Explicit cleaning is required when any of the architecture +or toolchain configuration options are changed. + +To delete all build products (including build directories, host, +staging and target trees, the images and the toolchain): + + $ make clean + +Generating the manual: The present manual sources are located in the +docs/manual directory. To generate the manual: + + $ make manual-clean + $ make manual + +The manual outputs will be generated in output/docs/manual. + +Notes + + * A few tools are required to build the documentation (see: + Section 2.2, “Optional packages”). + +Resetting Buildroot for a new target: To delete all build products as +well as the configuration: + + $ make distclean + +Notes. If ccache is enabled, running make clean or distclean does not +empty the compiler cache used by Buildroot. To delete it, refer to +Section 8.12.3, “Using ccache in Buildroot”. + +Dumping the internal make variables: One can dump all the variables +known to make, along with their values: + + $ make -s printvars + VARIABLE=value_of_variable + ... + +It is possible to tweak the output using some variables: + + * VARS will limit the listing to variables which names match the + specified make-pattern + * QUOTED_VARS, if set to YES, will single-quote the value + * RAW_VARS, if set to YES, will print the unexpanded value + +For example: + + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES + BUSYBOX_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_ALL_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_PATCH_DEPENDENCIES= + BUSYBOX_RDEPENDENCIES=ncurses util-linux + + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES QUOTED_VARS=YES + BUSYBOX_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_ALL_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_DEPENDENCIES='skeleton toolchain' + BUSYBOX_FINAL_PATCH_DEPENDENCIES='' + BUSYBOX_RDEPENDENCIES='ncurses util-linux' + + $ make -s printvars VARS=BUSYBOX_%DEPENDENCIES RAW_VARS=YES + BUSYBOX_DEPENDENCIES=skeleton toolchain + BUSYBOX_FINAL_ALL_DEPENDENCIES=$(sort $(BUSYBOX_FINAL_DEPENDENCIES) $(BUSYBOX_FINAL_PATCH_DEPENDENCIES)) + BUSYBOX_FINAL_DEPENDENCIES=$(sort $(BUSYBOX_DEPENDENCIES)) + BUSYBOX_FINAL_PATCH_DEPENDENCIES=$(sort $(BUSYBOX_PATCH_DEPENDENCIES)) + BUSYBOX_RDEPENDENCIES=ncurses util-linux + +The output of quoted variables can be reused in shell scripts, for +example: + + $ eval $(make -s printvars VARS=BUSYBOX_DEPENDENCIES QUOTED_VARS=YES) + $ echo $BUSYBOX_DEPENDENCIES + skeleton toolchain + +8.2. Understanding when a full rebuild is necessary + +Buildroot does not attempt to detect what parts of the system should +be rebuilt when the system configuration is changed through make +menuconfig, make xconfig or one of the other configuration tools. In +some cases, Buildroot should rebuild the entire system, in some +cases, only a specific subset of packages. But detecting this in a +completely reliable manner is very difficult, and therefore the +Buildroot developers have decided to simply not attempt to do this. + +Instead, it is the responsibility of the user to know when a full +rebuild is necessary. As a hint, here are a few rules of thumb that +can help you understand how to work with Buildroot: + + * When the target architecture configuration is changed, a complete + rebuild is needed. Changing the architecture variant, the binary + format or the floating point strategy for example has an impact + on the entire system. + * When the toolchain configuration is changed, a complete rebuild + generally is needed. Changing the toolchain configuration often + involves changing the compiler version, the type of C library or + its configuration, or some other fundamental configuration item, + and these changes have an impact on the entire system. + * When an additional package is added to the configuration, a full + rebuild is not necessarily needed. Buildroot will detect that + this package has never been built, and will build it. However, if + this package is a library that can optionally be used by packages + that have already been built, Buildroot will not automatically + rebuild those. Either you know which packages should be rebuilt, + and you can rebuild them manually, or you should do a full + rebuild. For example, let’s suppose you have built a system with + the ctorrent package, but without openssl. Your system works, but + you realize you would like to have SSL support in ctorrent, so + you enable the openssl package in Buildroot configuration and + restart the build. Buildroot will detect that openssl should be + built and will be build it, but it will not detect that ctorrent + should be rebuilt to benefit from openssl to add OpenSSL support. + You will either have to do a full rebuild, or rebuild ctorrent + itself. + * When a package is removed from the configuration, Buildroot does + not do anything special. It does not remove the files installed + by this package from the target root filesystem or from the + toolchain sysroot. A full rebuild is needed to get rid of this + package. However, generally you don’t necessarily need this + package to be removed right now: you can wait for the next lunch + break to restart the build from scratch. + * When the sub-options of a package are changed, the package is not + automatically rebuilt. After making such changes, rebuilding only + this package is often sufficient, unless enabling the package + sub-option adds some features to the package that are useful for + another package which has already been built. Again, Buildroot + does not track when a package should be rebuilt: once a package + has been built, it is never rebuilt unless explicitly told to do + so. + * When a change to the root filesystem skeleton is made, a full + rebuild is needed. However, when changes to the root filesystem + overlay, a post-build script or a post-image script are made, + there is no need for a full rebuild: a simple make invocation + will take the changes into account. + +Generally speaking, when you’re facing a build error and you’re +unsure of the potential consequences of the configuration changes +you’ve made, do a full rebuild. If you get the same build error, then +you are sure that the error is not related to partial rebuilds of +packages, and if this error occurs with packages from the official +Buildroot, do not hesitate to report the problem! As your experience +with Buildroot progresses, you will progressively learn when a full +rebuild is really necessary, and you will save more and more time. + +For reference, a full rebuild is achieved by running: + +$ make clean all + +8.3. Understanding how to rebuild packages + +One of the most common questions asked by Buildroot users is how to +rebuild a given package or how to remove a package without rebuilding +everything from scratch. + +Removing a package is unsupported by Buildroot without rebuilding +from scratch. This is because Buildroot doesn’t keep track of which +package installs what files in the output/staging and output/target +directories, or which package would be compiled differently depending +on the availability of another package. + +The easiest way to rebuild a single package from scratch is to remove +its build directory in output/build. Buildroot will then re-extract, +re-configure, re-compile and re-install this package from scratch. +You can ask buildroot to do this with the make -dirclean +command. + +On the other hand, if you only want to restart the build process of a +package from its compilation step, you can run make +-rebuild, followed by make or make . It will restart the +compilation and installation of the package, but not from scratch: it +basically re-executes make and make install inside the package, so it +will only rebuild files that changed. + +If you want to restart the build process of a package from its +configuration step, you can run make -reconfigure, followed +by make or make . It will restart the configuration, +compilation and installation of the package. + +Internally, Buildroot creates so-called stamp files to keep track of +which build steps have been completed for each package. They are +stored in the package build directory, output/build/- +/ and are named .stamp_. The commands detailed +above simply manipulate these stamp files to force Buildroot to +restart a specific set of steps of a package build process. + +Further details about package special make targets are explained in +Section 8.12.5, “Package-specific make targets”. + +8.4. Offline builds + +If you intend to do an offline build and just want to download all +sources that you previously selected in the configurator (menuconfig, +nconfig, xconfig or gconfig), then issue: + + $ make source + +You can now disconnect or copy the content of your dl directory to +the build-host. + +8.5. Building out-of-tree + +As default, everything built by Buildroot is stored in the directory +output in the Buildroot tree. + +Buildroot also supports building out of tree with a syntax similar to +the Linux kernel. To use it, add O= to the make command +line: + + $ make O=/tmp/build + +Or: + + $ cd /tmp/build; make O=$PWD -C path/to/buildroot + +All the output files will be located under /tmp/build. If the O path +does not exist, Buildroot will create it. + +Note: the O path can be either an absolute or a relative path, but if +it’s passed as a relative path, it is important to note that it is +interpreted relative to the main Buildroot source directory, not the +current working directory. + +When using out-of-tree builds, the Buildroot .config and temporary +files are also stored in the output directory. This means that you +can safely run multiple builds in parallel using the same source tree +as long as they use unique output directories. + +For ease of use, Buildroot generates a Makefile wrapper in the output +directory - so after the first run, you no longer need to pass O=<…> +and -C <…>, simply run (in the output directory): + + $ make + +8.6. Environment variables + +Buildroot also honors some environment variables, when they are +passed to make or set in the environment: + + * HOSTCXX, the host C++ compiler to use + * HOSTCC, the host C compiler to use + * UCLIBC_CONFIG_FILE=, path to the uClibc + configuration file, used to compile uClibc, if an internal + toolchain is being built. Note that the uClibc configuration file + can also be set from the configuration interface, so through the + Buildroot .config file; this is the recommended way of setting + it. + * BUSYBOX_CONFIG_FILE=, path to the BusyBox + configuration file. Note that the BusyBox configuration file can + also be set from the configuration interface, so through the + Buildroot .config file; this is the recommended way of setting + it. + * BR2_CCACHE_DIR to override the directory where Buildroot stores + the cached files when using ccache. + * BR2_DL_DIR to override the directory in which Buildroot stores/ + retrieves downloaded files Note that the Buildroot download + directory can also be set from the configuration interface, so + through the Buildroot .config file. See Section 8.12.4, “Location + of downloaded packages” for more details on how you can set the + download directory. + * BR2_GRAPH_ALT, if set and non-empty, to use an alternate + color-scheme in build-time graphs + * BR2_GRAPH_OUT to set the filetype of generated graphs, either pdf + (the default), or png. + * BR2_GRAPH_DEPS_OPTS to pass extra options to the dependency + graph; see Section 8.8, “Graphing the dependencies between + packages” for the accepted options + * BR2_GRAPH_DOT_OPTS is passed verbatim as options to the dot + utility to draw the dependency graph. + +An example that uses config files located in the toplevel directory +and in your $HOME: + + $ make UCLIBC_CONFIG_FILE=uClibc.config BUSYBOX_CONFIG_FILE=$HOME/bb.config + +If you want to use a compiler other than the default gcc or g++ for +building helper-binaries on your host, then do + + $ make HOSTCXX=g++-4.3-HEAD HOSTCC=gcc-4.3-HEAD + +8.7. Dealing efficiently with filesystem images + +Filesystem images can get pretty big, depending on the filesystem you +choose, the number of packages, whether you provisioned free space… +Yet, some locations in the filesystems images may just be empty (e.g. +a long run of zeroes); such a file is called a sparse file. + +Most tools can handle sparse files efficiently, and will only store +or write those parts of a sparse file that are not empty. + +For example: + + * tar accepts the -S option to tell it to only store non-zero + blocks of sparse files: + + + tar cf archive.tar -S [files…] will efficiently store sparse + files in a tarball + + tar xf archive.tar -S will efficiently store sparse files + extracted from a tarball + * cp accepts the --sparse=WHEN option (WHEN is one of auto, never + or always): + + + cp --sparse=always source.file dest.file will make dest.file + a sparse file if source.file has long runs of zeroes + +Other tools may have similar options. Please consult their respective +man pages. + +You can use sparse files if you need to store the filesystem images +(e.g. to transfer from one machine to another), or if you need to +send them (e.g. to the Q&A team). + +Note however that flashing a filesystem image to a device while using +the sparse mode of dd may result in a broken filesystem (e.g. the +block bitmap of an ext2 filesystem may be corrupted; or, if you have +sparse files in your filesystem, those parts may not be all-zeroes +when read back). You should only use sparse files when handling files +on the build machine, not when transferring them to an actual device +that will be used on the target. + +8.8. Graphing the dependencies between packages + +One of Buildroot’s jobs is to know the dependencies between packages, +and make sure they are built in the right order. These dependencies +can sometimes be quite complicated, and for a given system, it is +often not easy to understand why such or such package was brought +into the build by Buildroot. + +In order to help understanding the dependencies, and therefore better +understand what is the role of the different components in your +embedded Linux system, Buildroot is capable of generating dependency +graphs. + +To generate a dependency graph of the full system you have compiled, +simply run: + +make graph-depends + +You will find the generated graph in output/graphs/graph-depends.pdf. + +If your system is quite large, the dependency graph may be too +complex and difficult to read. It is therefore possible to generate +the dependency graph just for a given package: + +make -graph-depends + +You will find the generated graph in output/graph/ +-graph-depends.pdf. + +Note that the dependency graphs are generated using the dot tool from +the Graphviz project, which you must have installed on your system to +use this feature. In most distributions, it is available as the +graphviz package. + +By default, the dependency graphs are generated in the PDF format. +However, by passing the BR2_GRAPH_OUT environment variable, you can +switch to other output formats, such as PNG, PostScript or SVG. All +formats supported by the -T option of the dot tool are supported. + +BR2_GRAPH_OUT=svg make graph-depends + +The graph-depends behaviour can be controlled by setting options in +the BR2_GRAPH_DEPS_OPTS environment variable. The accepted options +are: + + * --depth N, -d N, to limit the dependency depth to N levels. The + default, 0, means no limit. + * --stop-on PKG, -s PKG, to stop the graph on the package PKG. PKG + can be an actual package name, a glob, the keyword virtual (to + stop on virtual packages), or the keyword host (to stop on host + packages). The package is still present on the graph, but its + dependencies are not. + * --exclude PKG, -x PKG, like --stop-on, but also omits PKG from + the graph. + * --transitive, --no-transitive, to draw (or not) the transitive + dependencies. The default is to not draw transitive dependencies. + * --colours R,T,H, the comma-separated list of colours to draw the + root package (R), the target packages (T) and the host packages + (H). Defaults to: lightblue,grey,gainsboro + +BR2_GRAPH_DEPS_OPTS='-d 3 --no-transitive --colours=red,green,blue' make graph-depends + +8.9. Graphing the build duration + +When the build of a system takes a long time, it is sometimes useful +to be able to understand which packages are the longest to build, to +see if anything can be done to speed up the build. In order to help +such build time analysis, Buildroot collects the build time of each +step of each package, and allows to generate graphs from this data. + +To generate the build time graph after a build, run: + +make graph-build + +This will generate a set of files in output/graphs : + + * build.hist-build.pdf, a histogram of the build time for each + package, ordered in the build order. + * build.hist-duration.pdf, a histogram of the build time for each + package, ordered by duration (longest first) + * build.hist-name.pdf, a histogram of the build time for each + package, order by package name. + * build.pie-packages.pdf, a pie chart of the build time per package + * build.pie-steps.pdf, a pie chart of the global time spent in each + step of the packages build process. + +This graph-build target requires the Python Matplotlib and Numpy +libraries to be installed (python-matplotlib and python-numpy on most +distributions), and also the argparse module if you’re using a Python +version older than 2.7 (python-argparse on most distributions). + +By default, the output format for the graph is PDF, but a different +format can be selected using the BR2_GRAPH_OUT environment variable. +The only other format supported is PNG: + +BR2_GRAPH_OUT=png make graph-build + +8.10. Graphing the filesystem size contribution of packages + +When your target system grows, it is sometimes useful to understand +how much each Buildroot package is contributing to the overall root +filesystem size. To help with such an analysis, Buildroot collects +data about files installed by each package and using this data, +generates a graph and CSV files detailing the size contribution of +the different packages. + +To generate these data after a build, run: + +make graph-size + +This will generate: + + * output/graphs/graph-size.pdf, a pie chart of the contribution of + each package to the overall root filesystem size + * output/graphs/package-size-stats.csv, a CSV file giving the size + contribution of each package to the overall root filesystem size + * output/graphs/file-size-stats.csv, a CSV file giving the size + contribution of each installed file to the package it belongs, + and to the overall filesystem size. + +This graph-size target requires the Python Matplotlib library to be +installed (python-matplotlib on most distributions), and also the +argparse module if you’re using a Python version older than 2.7 +(python-argparse on most distributions). + +Just like for the duration graph, a BR2_GRAPH_OUT environment is +supported to adjust the output file format. See Section 8.8, +“Graphing the dependencies between packages” for details about this +environment variable. + +Note. The collected filesystem size data is only meaningful after a +complete clean rebuild. Be sure to run make clean all before using +make graph-size. + +To compare the root filesystem size of two different Buildroot +compilations, for example after adjusting the configuration or when +switching to another Buildroot release, use the size-stats-compare +script. It takes two file-size-stats.csv files (produced by make +graph-size) as input. Refer to the help text of this script for more +details: + +utils/size-stats-compare -h + +8.11. Integration with Eclipse + +While a part of the embedded Linux developers like classical text +editors like Vim or Emacs, and command-line based interfaces, a +number of other embedded Linux developers like richer graphical +interfaces to do their development work. Eclipse being one of the +most popular Integrated Development Environment, Buildroot integrates +with Eclipse in order to ease the development work of Eclipse users. + +Our integration with Eclipse simplifies the compilation, remote +execution and remote debugging of applications and libraries that are +built on top of a Buildroot system. It does not integrate the +Buildroot configuration and build processes themselves with Eclipse. +Therefore, the typical usage model of our Eclipse integration would +be: + + * Configure your Buildroot system with make menuconfig, make + xconfig or any other configuration interface provided with + Buildroot. + * Build your Buildroot system by running make. + * Start Eclipse to develop, execute and debug your own custom + applications and libraries, that will rely on the libraries built + and installed by Buildroot. + +The Buildroot Eclipse integration installation process and usage is +described in detail at https://github.com/mbats/ +eclipse-buildroot-bundle/wiki. + +8.12. Advanced usage + +8.12.1. Using the generated toolchain outside Buildroot + +You may want to compile, for your target, your own programs or other +software that are not packaged in Buildroot. In order to do this you +can use the toolchain that was generated by Buildroot. + +The toolchain generated by Buildroot is located by default in output/ +host/. The simplest way to use it is to add output/host/bin/ to your +PATH environment variable and then to use ARCH-linux-gcc, +ARCH-linux-objdump, ARCH-linux-ld, etc. + +It is possible to relocate the toolchain, this allows to distribute +the toolchain to other developers to build applications for your +target. To achieve this: + + * run make sdk, which prepares the toolchain to be relocatable; + * tarball the contents of the output/host directory; + * distribute the resulting tarball. + +Once the toolchain is installed to the new location, the user must +run the relocate-sdk.sh script to make sure all paths are updated +with the new location. + +8.12.2. Using gdb in Buildroot + +Buildroot allows to do cross-debugging, where the debugger runs on +the build machine and communicates with gdbserver on the target to +control the execution of the program. + +To achieve this: + + * If you are using an internal toolchain (built by Buildroot), you + must enable BR2_PACKAGE_HOST_GDB, BR2_PACKAGE_GDB and + BR2_PACKAGE_GDB_SERVER. This ensures that both the cross gdb and + gdbserver get built, and that gdbserver gets installed to your + target. + * If you are using an external toolchain, you should enable + BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY, which will copy the + gdbserver included with the external toolchain to the target. If + your external toolchain does not have a cross gdb or gdbserver, + it is also possible to let Buildroot build them, by enabling the + same options as for the internal toolchain backend. + +Now, to start debugging a program called foo, you should run on the +target: + +gdbserver :2345 foo + +This will cause gdbserver to listen on TCP port 2345 for a connection +from the cross gdb. + +Then, on the host, you should start the cross gdb using the following +command line: + +/output/host/bin/-gdb -x /output/staging/usr/share/buildroot/gdbinit foo + +Of course, foo must be available in the current directory, built with +debugging symbols. Typically you start this command from the +directory where foo is built (and not from output/target/ as the +binaries in that directory are stripped). + +The /output/staging/usr/share/buildroot/gdbinit file will +tell the cross gdb where to find the libraries of the target. + +Finally, to connect to the target from the cross gdb: + +(gdb) target remote :2345 + +8.12.3. Using ccache in Buildroot + +ccache [http://ccache.samba.org] is a compiler cache. It stores the +object files resulting from each compilation process, and is able to +skip future compilation of the same source file (with same compiler +and same arguments) by using the pre-existing object files. When +doing almost identical builds from scratch a number of times, it can +nicely speed up the build process. + +ccache support is integrated in Buildroot. You just have to enable +Enable compiler cache in Build options. This will automatically build +ccache and use it for every host and target compilation. + +The cache is located in $HOME/.buildroot-ccache. It is stored outside +of Buildroot output directory so that it can be shared by separate +Buildroot builds. If you want to get rid of the cache, simply remove +this directory. + +You can get statistics on the cache (its size, number of hits, +misses, etc.) by running make ccache-stats. + +The make target ccache-options and the CCACHE_OPTIONS variable +provide more generic access to the ccache. For example + +# set cache limit size +make CCACHE_OPTIONS="--max-size=5G" ccache-options + +# zero statistics counters +make CCACHE_OPTIONS="--zero-stats" ccache-options + +ccache makes a hash of the source files and of the compiler options. +If a compiler option is different, the cached object file will not be +used. Many compiler options, however, contain an absolute path to the +staging directory. Because of this, building in a different output +directory would lead to many cache misses. + +To avoid this issue, buildroot has the Use relative paths option +(BR2_CCACHE_USE_BASEDIR). This will rewrite all absolute paths that +point inside the output directory into relative paths. Thus, changing +the output directory no longer leads to cache misses. + +A disadvantage of the relative paths is that they also end up to be +relative paths in the object file. Therefore, for example, the +debugger will no longer find the file, unless you cd to the output +directory first. + +See the ccache manual’s section on "Compiling in different +directories" [https://ccache.samba.org/manual.html# +_compiling_in_different_directories] for more details about this +rewriting of absolute paths. + +8.12.4. Location of downloaded packages + +The various tarballs that are downloaded by Buildroot are all stored +in BR2_DL_DIR, which by default is the dl directory. If you want to +keep a complete version of Buildroot which is known to be working +with the associated tarballs, you can make a copy of this directory. +This will allow you to regenerate the toolchain and the target +filesystem with exactly the same versions. + +If you maintain several Buildroot trees, it might be better to have a +shared download location. This can be achieved by pointing the +BR2_DL_DIR environment variable to a directory. If this is set, then +the value of BR2_DL_DIR in the Buildroot configuration is overridden. +The following line should be added to <~/.bashrc>. + + export BR2_DL_DIR= + +The download location can also be set in the .config file, with the +BR2_DL_DIR option. Unlike most options in the .config file, this +value is overridden by the BR2_DL_DIR environment variable. + +8.12.5. Package-specific make targets + +Running make builds and installs that particular package +and its dependencies. + +For packages relying on the Buildroot infrastructure, there are +numerous special make targets that can be called independently like +this: + +make - + +The package build targets are (in the order they are executed): + ++------------------------------------------------------------+ +|command/target |Description | +|---------------+--------------------------------------------| +| source |Fetch the source (download the tarball, | +| |clone the source repository, etc) | +|---------------+--------------------------------------------| +| depends |Build and install all dependencies required | +| |to build the package | +|---------------+--------------------------------------------| +| extract |Put the source in the package build | +| |directory (extract the tarball, copy the | +| |source, etc) | +|---------------+--------------------------------------------| +| patch |Apply the patches, if any | +|---------------+--------------------------------------------| +| configure |Run the configure commands, if any | +|---------------+--------------------------------------------| +| build |Run the compilation commands | +|---------------+--------------------------------------------| +|install-staging|target package: Run the installation of the | +| |package in the staging directory, if | +| |necessary | +|---------------+--------------------------------------------| +|install-target |target package: Run the installation of the | +| |package in the target directory, if | +| |necessary | +|---------------+--------------------------------------------| +| install |target package: Run the 2 previous | +| |installation commands | +| | | +| |host package: Run the installation of the | +| |package in the host directory | ++------------------------------------------------------------+ + +Additionally, there are some other useful make targets: + ++------------------------------------------------------------+ +| command/ |Description | +| target | | +|-------------+----------------------------------------------| +|show-depends |Displays the dependencies required to build | +| |the package | +|-------------+----------------------------------------------| +|graph-depends|Generate a dependency graph of the package, in| +| |the context of the current Buildroot | +| |configuration. See this section Section 8.8, | +| |“Graphing the dependencies between packages” | +| |for more details about dependency graphs. | +|-------------+----------------------------------------------| +| dirclean |Remove the whole package build directory | +|-------------+----------------------------------------------| +| reinstall |Re-run the install commands | +|-------------+----------------------------------------------| +| rebuild |Re-run the compilation commands - this only | +| |makes sense when using the OVERRIDE_SRCDIR | +| |feature or when you modified a file directly | +| |in the build directory | +|-------------+----------------------------------------------| +| reconfigure |Re-run the configure commands, then rebuild - | +| |this only makes sense when using the | +| |OVERRIDE_SRCDIR feature or when you modified a| +| |file directly in the build directory | ++------------------------------------------------------------+ + +8.12.6. Using Buildroot during development + +The normal operation of Buildroot is to download a tarball, extract +it, configure, compile and install the software component found +inside this tarball. The source code is extracted in output/build/ +-, which is a temporary directory: whenever make +clean is used, this directory is entirely removed, and re-created at +the next make invocation. Even when a Git or Subversion repository is +used as the input for the package source code, Buildroot creates a +tarball out of it, and then behaves as it normally does with +tarballs. + +This behavior is well-suited when Buildroot is used mainly as an +integration tool, to build and integrate all the components of an +embedded Linux system. However, if one uses Buildroot during the +development of certain components of the system, this behavior is not +very convenient: one would instead like to make a small change to the +source code of one package, and be able to quickly rebuild the system +with Buildroot. + +Making changes directly in output/build/- is not an +appropriate solution, because this directory is removed on make +clean. + +Therefore, Buildroot provides a specific mechanism for this use case: +the _OVERRIDE_SRCDIR mechanism. Buildroot reads an override +file, which allows the user to tell Buildroot the location of the +source for certain packages. By default this override file is named +local.mk and located in the top directory of the Buildroot source +tree, but a different location can be specified through the +BR2_PACKAGE_OVERRIDE_FILE configuration option. + +In this override file, Buildroot expects to find lines of the form: + +_OVERRIDE_SRCDIR = /path/to/pkg1/sources +_OVERRIDE_SRCDIR = /path/to/pkg2/sources + +For example: + +LINUX_OVERRIDE_SRCDIR = /home/bob/linux/ +BUSYBOX_OVERRIDE_SRCDIR = /home/bob/busybox/ + +When Buildroot finds that for a given package, an +_OVERRIDE_SRCDIR has been defined, it will no longer attempt to +download, extract and patch the package. Instead, it will directly +use the source code available in the specified directory and make +clean will not touch this directory. This allows to point Buildroot +to your own directories, that can be managed by Git, Subversion, or +any other version control system. To achieve this, Buildroot will use +rsync to copy the source code of the component from the specified +_OVERRIDE_SRCDIR to output/build/-custom/. + +This mechanism is best used in conjunction with the make +-rebuild and make -reconfigure targets. A make -rebuild all +sequence will rsync the source code from _OVERRIDE_SRCDIR to +output/build/-custom (thanks to rsync, only the modified +files are copied), and restart the build process of just this +package. + +In the example of the linux package above, the developer can then +make a source code change in /home/bob/linux and then run: + +make linux-rebuild all + +and in a matter of seconds gets the updated Linux kernel image in +output/images. Similarly, a change can be made to the BusyBox source +code in /home/bob/busybox, and after: + +make busybox-rebuild all + +the root filesystem image in output/images contains the updated +BusyBox. + +Chapter 9. Project-specific customization + +Typical actions you may need to perform for a given project are: + + * configuring Buildroot (including build options and toolchain, + bootloader, kernel, package and filesystem image type selection) + * configuring other components, like the Linux kernel and BusyBox + * customizing the generated target filesystem + + + adding or overwriting files on the target filesystem (using + BR2_ROOTFS_OVERLAY) + + modifying or deleting files on the target filesystem (using + BR2_ROOTFS_POST_BUILD_SCRIPT) + + running arbitrary commands prior to generating the filesystem + image (using BR2_ROOTFS_POST_BUILD_SCRIPT) + + setting file permissions and ownership (using + BR2_ROOTFS_DEVICE_TABLE) + + adding custom devices nodes (using + BR2_ROOTFS_STATIC_DEVICE_TABLE) + * adding custom user accounts (using BR2_ROOTFS_USERS_TABLES) + * running arbitrary commands after generating the filesystem image + (using BR2_ROOTFS_POST_IMAGE_SCRIPT) + * adding project-specific patches to some packages (using + BR2_GLOBAL_PATCH_DIR) + * adding project-specific packages + +An important note regarding such project-specific customizations: +please carefully consider which changes are indeed project-specific +and which changes are also useful to developers outside your project. +The Buildroot community highly recommends and encourages the +upstreaming of improvements, packages and board support to the +official Buildroot project. Of course, it is sometimes not possible +or desirable to upstream because the changes are highly specific or +proprietary. + +This chapter describes how to make such project-specific +customizations in Buildroot and how to store them in a way that you +can build the same image in a reproducible way, even after running +make clean. By following the recommended strategy, you can even use +the same Buildroot tree to build multiple distinct projects! + +9.1. Recommended directory structure + +When customizing Buildroot for your project, you will be creating one +or more project-specific files that need to be stored somewhere. +While most of these files could be placed in any location as their +path is to be specified in the Buildroot configuration, the Buildroot +developers recommend a specific directory structure which is +described in this section. + +Orthogonal to this directory structure, you can choose where you +place this structure itself: either inside the Buildroot tree, or +outside of it using a br2-external tree. Both options are valid, the +choice is up to you. + ++-- board/ +| +-- / +| +-- / +| +-- linux.config +| +-- busybox.config +| +-- +| +-- post_build.sh +| +-- post_image.sh +| +-- rootfs_overlay/ +| | +-- etc/ +| | +-- +| +-- patches/ +| +-- foo/ +| | +-- +| +-- libbar/ +| +-- +| ++-- configs/ +| +-- _defconfig +| ++-- package/ +| +-- / +| +-- Config.in (if not using a br2-external tree) +| +-- .mk (if not using a br2-external tree) +| +-- package1/ +| | +-- Config.in +| | +-- package1.mk +| +-- package2/ +| +-- Config.in +| +-- package2.mk +| ++-- Config.in (if using a br2-external tree) ++-- external.mk (if using a br2-external tree) + +Details on the files shown above are given further in this chapter. + +Note: if you choose to place this structure outside of the Buildroot +tree but in a br2-external tree, the and possibly + components may be superfluous and can be left out. + +9.1.1. Implementing layered customizations + +It is quite common for a user to have several related projects that +partly need the same customizations. Instead of duplicating these +customizations for each project, it is recommended to use a layered +customization approach, as explained in this section. + +Almost all of the customization methods available in Buildroot, like +post-build scripts and root filesystem overlays, accept a +space-separated list of items. The specified items are always treated +in order, from left to right. By creating more than one such item, +one for the common customizations and another one for the really +project-specific customizations, you can avoid unnecessary +duplication. Each layer is typically embodied by a separate directory +inside board//. Depending on your projects, you could even +introduce more than two layers. + +An example directory structure for where a user has two customization +layers common and fooboard is: + ++-- board/ + +-- / + +-- common/ + | +-- post_build.sh + | +-- rootfs_overlay/ + | | +-- ... + | +-- patches/ + | +-- ... + | + +-- fooboard/ + +-- linux.config + +-- busybox.config + +-- + +-- post_build.sh + +-- rootfs_overlay/ + | +-- ... + +-- patches/ + +-- ... + +For example, if the user has the BR2_GLOBAL_PATCH_DIR configuration +option set as: + +BR2_GLOBAL_PATCH_DIR="board//common/patches board//fooboard/patches" + +then first the patches from the common layer would be applied, +followed by the patches from the fooboard layer. + +9.2. Keeping customizations outside of Buildroot + +As already briefly mentioned in Section 9.1, “Recommended directory +structure”, you can place project-specific customizations in two +locations: + + * directly within the Buildroot tree, typically maintaining them + using branches in a version control system so that upgrading to a + newer Buildroot release is easy. + * outside of the Buildroot tree, using the br2-external mechanism. + This mechanism allows to keep package recipes, board support and + configuration files outside of the Buildroot tree, while still + having them nicely integrated in the build logic. We call this + location a br2-external tree. This section explains how to use + the br2-external mechanism and what to provide in a br2-external + tree. + +One can tell Buildroot to use one or more br2-external trees by +setting the BR2_EXTERNAL make variable set to the path(s) of the +br2-external tree(s) to use. It can be passed to any Buildroot make +invocation. It is automatically saved in the hidden .br-external.mk +file in the output directory. Thanks to this, there is no need to +pass BR2_EXTERNAL at every make invocation. It can however be changed +at any time by passing a new value, and can be removed by passing an +empty value. + +Note. The path to a br2-external tree can be either absolute or +relative. If it is passed as a relative path, it is important to note +that it is interpreted relative to the main Buildroot source +directory, not to the Buildroot output directory. + +Note: If using an br2-external tree from before Buildroot 2016.11, +you need to convert it before you can use it with Buildroot 2016.11 +onward. See Section 25.1, “Migrating to 2016.11” for help on doing +so. + +Some examples: + +buildroot/ $ make BR2_EXTERNAL=/path/to/foo menuconfig + +From now on, definitions from the /path/to/foo br2-external tree will +be used: + +buildroot/ $ make +buildroot/ $ make legal-info + +We can switch to another br2-external tree at any time: + +buildroot/ $ make BR2_EXTERNAL=/where/we/have/bar xconfig + +We can also use multiple br2-external trees: + +buildroot/ $ make BR2_EXTERNAL=/path/to/foo:/where/we/have/bar menuconfig + +Or disable the usage of any br2-external tree: + +buildroot/ $ make BR2_EXTERNAL= xconfig + +9.2.1. Layout of a br2-external tree + +A br2-external tree must contain at least those three files, +described in the following chapters: + + * external.desc + * external.mk + * Config.in + +Apart from those mandatory files, there may be additional and +optional content that may be present in a br2-external tree, like the +configs/ directory. They are described in the following chapters as +well. + +A complete example br2-external tree layout is also described later. + +9.2.1.1. The external.desc file + +That file describes the br2-external tree: the name and description +for that br2-external tree. + +The format for this file is line based, with each line starting by a +keyword, followed by a colon and one or more spaces, followed by the +value assigned to that keyword. There are two keywords currently +recognised: + + * name, mandatory, defines the name for that br2-external tree. + That name must only use ASCII characters in the set [A-Za-z0-9_]; + any other character is forbidden. Buildroot sets the variable + BR2_EXTERNAL_$(NAME)_PATH to the absolute path of the + br2-external tree, so that you can use it to refer to your + br2-external tree. This variable is available both in Kconfig, so + you can use it to source your Kconfig files (see below) and in + the Makefile, so that you can use it to include other Makefiles + (see below) or refer to other files (like data files) from your + br2-external tree. + + Note: Since it is possible to use multiple br2-external trees at + once, this name is used by Buildroot to generate variables for + each of those trees. That name is used to identify your + br2-external tree, so try to come up with a name that really + describes your br2-external tree, in order for it to be + relatively unique, so that it does not clash with another name + from another br2-external tree, especially if you are planning on + somehow sharing your br2-external tree with third parties or + using br2-external trees from third parties. + + * desc, optional, provides a short description for that + br2-external tree. It shall fit on a single line, is mostly + free-form (see below), and is used when displaying information + about a br2-external tree (e.g. above the list of defconfig + files, or as the prompt in the menuconfig); as such, it should + relatively brief (40 chars is probably a good upper limit). The + description is available in the BR2_EXTERNAL_$(NAME)_DESC + variable. + +Examples of names and the corresponding BR2_EXTERNAL_$(NAME)_PATH +variables: + + * FOO → BR2_EXTERNAL_FOO_PATH + * BAR_42 → BR2_EXTERNAL_BAR_42_PATH + +In the following examples, it is assumed the name to be set to +BAR_42. + +Note: Both BR2_EXTERNAL_$(NAME)_PATH and BR2_EXTERNAL_$(NAME)_DESC +are available in the Kconfig files and the Makefiles. They are also +exported in the environment so are available in post-build, +post-image and in-fakeroot scripts. + +9.2.1.2. The Config.in and external.mk files + +Those files (which may each be empty) can be used to define package +recipes (i.e. foo/Config.in and foo/foo.mk like for packages bundled +in Buildroot itself) or other custom configuration options or make +logic. + +Buildroot automatically includes the Config.in from each br2-external +tree to make it appear in the top-level configuration menu, and +includes the external.mk from each br2-external tree with the rest of +the makefile logic. + +The main usage of this is to store package recipes. The recommended +way to do this is to write a Config.in file that looks like: + +source "$BR2_EXTERNAL_BAR_42_PATH/package/package1/Config.in" +source "$BR2_EXTERNAL_BAR_42_PATH/package/package2/Config.in" + +Then, have an external.mk file that looks like: + +include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk)) + +And then in $(BR2_EXTERNAL_BAR_42_PATH)/package/package1 and $ +(BR2_EXTERNAL_BAR_42_PATH)/package/package2 create normal Buildroot +package recipes, as explained in Chapter 17, Adding new packages to +Buildroot. If you prefer, you can also group the packages in +subdirectories called and adapt the above paths +accordingly. + +You can also define custom configuration options in Config.in and +custom make logic in external.mk. + +9.2.1.3. The configs/ directory + +One can store Buildroot defconfigs in the configs subdirectory of the +br2-external tree. Buildroot will automatically show them in the +output of make list-defconfigs and allow them to be loaded with the +normal make _defconfig command. They will be visible in the +make list-defconfigs output, below an External configs label that +contains the name of the br2-external tree they are defined in. + +Note: If a defconfig file is present in more than one br2-external +tree, then the one from the last br2-external tree is used. It is +thus possible to override a defconfig bundled in Buildroot or another +br2-external tree. + +9.2.1.4. Free-form content + +One can store all the board-specific configuration files there, such +as the kernel configuration, the root filesystem overlay, or any +other configuration file for which Buildroot allows to set the +location (by using the BR2_EXTERNAL_$(NAME)_PATH variable). For +example, you could set the paths to a global patch directory, to a +rootfs overlay and to the kernel configuration file as follows (e.g. +by running make menuconfig and filling in these options): + +BR2_GLOBAL_PATCH_DIR=$(BR2_EXTERNAL_BAR_42_PATH)/patches/ +BR2_ROOTFS_OVERLAY=$(BR2_EXTERNAL_BAR_42_PATH)/board//overlay/ +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE=$(BR2_EXTERNAL_BAR_42_PATH)/board//kernel.config + +9.2.1.5. Example layout + +Here is an example layout using all features of br2-external (the +sample content is shown for the file above it, when it is relevant to +explain the br2-external tree; this is all entirely made up just for +the sake of illustration, of course): + +/path/to/br2-ext-tree/ + |- external.desc + | |name: BAR_42 + | |desc: Example br2-external tree + | `---- + | + |- Config.in + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-1/Config.in" + | |source "$BR2_EXTERNAL_BAR_42_PATH/package/pkg-2/Config.in" + | | + | |config BAR_42_FLASH_ADDR + | | hex "my-board flash address" + | | default 0x10AD + | `---- + | + |- external.mk + | |include $(sort $(wildcard $(BR2_EXTERNAL_BAR_42_PATH)/package/*/*.mk)) + | | + | |flash-my-board: + | | $(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/flash-image \ + | | --image $(BINARIES_DIR)/image.bin \ + | | --address $(BAR_42_FLASH_ADDR) + | `---- + | + |- package/pkg-1/Config.in + | |config BR2_PACKAGE_PKG_1 + | | bool "pkg-1" + | | help + | | Some help about pkg-1 + | `---- + |- package/pkg-1/pkg-1.hash + |- package/pkg-1/pkg-1.mk + | |PKG_1_VERSION = 1.2.3 + | |PKG_1_SITE = /some/where/to/get/pkg-1 + | |PKG_1_LICENSE = blabla + | | + | |define PKG_1_INSTALL_INIT_SYSV + | | $(INSTALL) -D -m 0755 $(PKG_1_PKGDIR)/S99my-daemon \ + | | $(TARGET_DIR)/etc/init.d/S99my-daemon + | |endef + | | + | |$(eval $(autotools-package)) + | `---- + |- package/pkg-1/S99my-daemon + | + |- package/pkg-2/Config.in + |- package/pkg-2/pkg-2.hash + |- package/pkg-2/pkg-2.mk + | + |- configs/my-board_defconfig + | |BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_BAR_42_PATH)/patches/" + | |BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/overlay/" + | |BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/post-image.sh" + | |BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_BAR_42_PATH)/board/my-board/kernel.config" + | `---- + | + |- patches/linux/0001-some-change.patch + |- patches/linux/0002-some-other-change.patch + |- patches/busybox/0001-fix-something.patch + | + |- board/my-board/kernel.config + |- board/my-board/overlay/var/www/index.html + |- board/my-board/overlay/var/www/my.css + |- board/my-board/flash-image + `- board/my-board/post-image.sh + |#!/bin/sh + |generate-my-binary-image \ + | --root ${BINARIES_DIR}/rootfs.tar \ + | --kernel ${BINARIES_DIR}/zImage \ + | --dtb ${BINARIES_DIR}/my-board.dtb \ + | --output ${BINARIES_DIR}/image.bin + `---- + +The br2-external tree will then be visible in the menuconfig (with +the layout expanded): + +External options ---> + *** Example br2-external tree (in /path/to/br2-ext-tree/) + [ ] pkg-1 + [ ] pkg-2 + (0x10AD) my-board flash address + +If you are using more than one br2-external tree, it would look like +(with the layout expanded and the second one with name FOO_27 but no +desc: field in external.desc): + +External options ---> + Example br2-external tree ---> + *** Example br2-external tree (in /path/to/br2-ext-tree) + [ ] pkg-1 + [ ] pkg-2 + (0x10AD) my-board flash address + FOO_27 ---> + *** FOO_27 (in /path/to/another-br2-ext) + [ ] foo + [ ] bar + +9.3. Storing the Buildroot configuration + +The Buildroot configuration can be stored using the command make +savedefconfig. + +This strips the Buildroot configuration down by removing +configuration options that are at their default value. The result is +stored in a file called defconfig. If you want to save it in another +place, change the BR2_DEFCONFIG option in the Buildroot configuration +itself, or call make with make savedefconfig BR2_DEFCONFIG= +. + +The recommended place to store this defconfig is configs/ +_defconfig. If you follow this recommendation, the configuration will +be listed in make help and can be set again by running make +_defconfig. + +Alternatively, you can copy the file to any other place and rebuild +with make defconfig BR2_DEFCONFIG=. + +9.4. Storing the configuration of other components + +The configuration files for BusyBox, the Linux kernel, Barebox, +U-Boot and uClibc should be stored as well if changed. For each of +these components, a Buildroot configuration option exists to point to +an input configuration file, e.g. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE. To store their configuration, +set these configuration options to a path where you want to save the +configuration files, and then use the helper targets described below +to actually store the configuration. + +As explained in Section 9.1, “Recommended directory structure”, the +recommended path to store these configuration files is board/ +//foo.config. + +Make sure that you create a configuration file before changing the +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE etc. options. Otherwise, +Buildroot will try to access this config file, which doesn’t exist +yet, and will fail. You can create the configuration file by running +make linux-menuconfig etc. + +Buildroot provides a few helper targets to make the saving of +configuration files easier. + + * make linux-update-defconfig saves the linux configuration to the + path specified by BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE. It + simplifies the config file by removing default values. However, + this only works with kernels starting from 2.6.33. For earlier + kernels, use make linux-update-config. + * make busybox-update-config saves the busybox configuration to the + path specified by BR2_PACKAGE_BUSYBOX_CONFIG. + * make uclibc-update-config saves the uClibc configuration to the + path specified by BR2_UCLIBC_CONFIG. + * make barebox-update-defconfig saves the barebox configuration to + the path specified by BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE. + * make uboot-update-defconfig saves the U-Boot configuration to the + path specified by BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE. + * For at91bootstrap3, no helper exists so you have to copy the + config file manually to + BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE. + +9.5. Customizing the generated target filesystem + +Besides changing the configuration through make *config, there are a +few other ways to customize the resulting target filesystem. + +The two recommended methods, which can co-exist, are root filesystem +overlay(s) and post build script(s). + +Root filesystem overlays (BR2_ROOTFS_OVERLAY) + + A filesystem overlay is a tree of files that is copied directly + over the target filesystem after it has been built. To enable + this feature, set config option BR2_ROOTFS_OVERLAY (in the System + configuration menu) to the root of the overlay. You can even + specify multiple overlays, space-separated. If you specify a + relative path, it will be relative to the root of the Buildroot + tree. Hidden directories of version control systems, like .git, + .svn, .hg, etc., files called .empty and files ending in ~ are + excluded from the copy. + + As shown in Section 9.1, “Recommended directory structure”, the + recommended path for this overlay is board/// + rootfs-overlay. + +Post-build scripts (BR2_ROOTFS_POST_BUILD_SCRIPT) + + Post-build scripts are shell scripts called after Buildroot + builds all the selected software, but before the rootfs images + are assembled. To enable this feature, specify a space-separated + list of post-build scripts in config option + BR2_ROOTFS_POST_BUILD_SCRIPT (in the System configuration menu). + If you specify a relative path, it will be relative to the root + of the Buildroot tree. + + Using post-build scripts, you can remove or modify any file in + your target filesystem. You should, however, use this feature + with care. Whenever you find that a certain package generates + wrong or unneeded files, you should fix that package rather than + work around it with some post-build cleanup scripts. + + As shown in Section 9.1, “Recommended directory structure”, the + recommended path for this script is board/// + post_build.sh. + + The post-build scripts are run with the main Buildroot tree as + current working directory. The path to the target filesystem is + passed as the first argument to each script. If the config option + BR2_ROOTFS_POST_SCRIPT_ARGS is not empty, these arguments will be + passed to the script too. All the scripts will be passed the + exact same set of arguments, it is not possible to pass different + sets of arguments to each script. + + In addition, you may also use these environment variables: + + + BR2_CONFIG: the path to the Buildroot .config file + + HOST_DIR, STAGING_DIR, TARGET_DIR: see Section 17.5.2, + “generic-package reference” + + BUILD_DIR: the directory where packages are extracted and + built + + BINARIES_DIR: the place where all binary files (aka images) + are stored + + BASE_DIR: the base output directory + +Below three more methods of customizing the target filesystem are +described, but they are not recommended. + +Direct modification of the target filesystem + + For temporary modifications, you can modify the target filesystem + directly and rebuild the image. The target filesystem is + available under output/target/. After making your changes, run + make to rebuild the target filesystem image. + + This method allows you to do anything to the target filesystem, + but if you need to clean your Buildroot tree using make clean, + these changes will be lost. Such cleaning is necessary in several + cases, refer to Section 8.2, “Understanding when a full rebuild + is necessary” for details. This solution is therefore only useful + for quick tests: changes do not survive the make clean command. + Once you have validated your changes, you should make sure that + they will persist after a make clean, using a root filesystem + overlay or a post-build script. + +Custom target skeleton (BR2_ROOTFS_SKELETON_CUSTOM) + + The root filesystem image is created from a target skeleton, on + top of which all packages install their files. The skeleton is + copied to the target directory output/target before any package + is built and installed. The default target skeleton provides the + standard Unix filesystem layout and some basic init scripts and + configuration files. + + If the default skeleton (available under system/skeleton) does + not match your needs, you would typically use a root filesystem + overlay or post-build script to adapt it. However, if the default + skeleton is entirely different than what you need, using a custom + skeleton may be more suitable. + + To enable this feature, enable config option + BR2_ROOTFS_SKELETON_CUSTOM and set + BR2_ROOTFS_SKELETON_CUSTOM_PATH to the path of your custom + skeleton. Both options are available in the System configuration + menu. If you specify a relative path, it will be relative to the + root of the Buildroot tree. + + This method is not recommended because it duplicates the entire + skeleton, which prevents taking advantage of the fixes or + improvements brought to the default skeleton in later Buildroot + releases. + +Post-fakeroot scripts (BR2_ROOTFS_POST_FAKEROOT_SCRIPT) + + When aggregating the final images, some parts of the process + requires root rights: creating device nodes in /dev, setting + permissions or ownership to files and directories… To avoid + requiring actual root rights, Buildroot uses fakeroot to simulate + root rights. This is not a complete substitute for actually being + root, but is enough for what Buildroot needs. + + Post-fakeroot scripts are shell scripts that are called at the + end of the fakeroot phase, right before the filesystem image + generator is called. As such, they are called in the fakeroot + context. + + Post-fakeroot scripts can be useful in case you need to tweak the + filesystem to do modifications that are usually only available to + the root user. + + Note: It is recommended to use the existing mechanisms to set + file permissions or create entries in /dev (see Section 9.5.1, + “Setting file permissions and ownership and adding custom devices + nodes”) or to create users (see Section 9.6, “Adding custom user + accounts”) + + Note: The difference between post-build scripts (above) and + fakeroot scripts, is that post-build scripts are not called in + the fakeroot context. + + Note;. Using fakeroot is not an absolute substitute for actually + being root. fakeroot only ever fakes the file access rights and + types (regular, block-or-char device…) and uid/gid; these are + emulated in-memory. + +9.5.1. Setting file permissions and ownership and adding custom +devices nodes + +Sometimes it is needed to set specific permissions or ownership on +files or device nodes. For example, certain files may need to be +owned by root. Since the post-build scripts are not run as root, you +cannot do such changes from there unless you use an explicit fakeroot +from the post-build script. + +Instead, Buildroot provides support for so-called permission tables. +To use this feature, set config option BR2_ROOTFS_DEVICE_TABLE to a +space-separated list of permission tables, regular text files +following the makedev syntax Chapter 23, Makedev syntax documentation +. + +If you are using a static device table (i.e. not using devtmpfs, +mdev, or (e)udev) then you can add device nodes using the same +syntax, in so-called device tables. To use this feature, set config +option BR2_ROOTFS_STATIC_DEVICE_TABLE to a space-separated list of +device tables. + +As shown in Section 9.1, “Recommended directory structure”, the +recommended location for such files is board///. + +It should be noted that if the specific permissions or device nodes +are related to a specific application, you should set variables +FOO_PERMISSIONS and FOO_DEVICES in the package’s .mk file instead +(see Section 17.5.2, “generic-package reference”). + +9.6. Adding custom user accounts + +Sometimes it is needed to add specific users in the target system. To +cover this requirement, Buildroot provides support for so-called +users tables. To use this feature, set config option +BR2_ROOTFS_USERS_TABLES to a space-separated list of users tables, +regular text files following the makeusers syntax Chapter 24, +Makeusers syntax documentation. + +As shown in Section 9.1, “Recommended directory structure”, the +recommended location for such files is board///. + +It should be noted that if the custom users are related to a specific +application, you should set variable FOO_USERS in the package’s .mk +file instead (see Section 17.5.2, “generic-package reference”). + +9.7. Customization after the images have been created + +While post-build scripts (Section 9.5, “Customizing the generated +target filesystem”) are run before building the filesystem image, +kernel and bootloader, post-image scripts can be used to perform some +specific actions after all images have been created. + +Post-image scripts can for example be used to automatically extract +your root filesystem tarball in a location exported by your NFS +server, or to create a special firmware image that bundles your root +filesystem and kernel image, or any other custom action required for +your project. + +To enable this feature, specify a space-separated list of post-image +scripts in config option BR2_ROOTFS_POST_IMAGE_SCRIPT (in the System +configuration menu). If you specify a relative path, it will be +relative to the root of the Buildroot tree. + +Just like post-build scripts, post-image scripts are run with the +main Buildroot tree as current working directory. The path to the +images output directory is passed as the first argument to each +script. If the config option BR2_ROOTFS_POST_SCRIPT_ARGS is not +empty, these arguments will be passed to the script too. All the +scripts will be passed the exact same set of arguments, it is not +possible to pass different sets of arguments to each script. + +Again just like for the post-build scripts, the scripts have access +to the environment variables BR2_CONFIG, HOST_DIR, STAGING_DIR, +TARGET_DIR, BUILD_DIR, BINARIES_DIR and BASE_DIR. + +The post-image scripts will be executed as the user that executes +Buildroot, which should normally not be the root user. Therefore, any +action requiring root permissions in one of these scripts will +require special handling (usage of fakeroot or sudo), which is left +to the script developer. + +9.8. Adding project-specific patches + +It is sometimes useful to apply extra patches to packages - on top of +those provided in Buildroot. This might be used to support custom +features in a project, for example, or when working on a new +architecture. + +The BR2_GLOBAL_PATCH_DIR configuration option can be used to specify +a space separated list of one or more directories containing package +patches. + +For a specific version of a specific package +, patches are applied from BR2_GLOBAL_PATCH_DIR as +follows: + + 1. For every directory - - that exists in + BR2_GLOBAL_PATCH_DIR, a will be determined as + follows: + + + /// if the + directory exists. + + Otherwise, / if the directory + exists. + 2. Patches will then be applied from a as + follows: + + + If a series file exists in the package directory, then + patches are applied according to the series file; + + Otherwise, patch files matching *.patch are applied in + alphabetical order. So, to ensure they are applied in the + right order, it is highly recommended to name the patch files + like this: -.patch, where + refers to the apply order. + +For information about how patches are applied for a package, see +Section 18.2, “How patches are applied” + +The BR2_GLOBAL_PATCH_DIR option is the preferred method for +specifying a custom patch directory for packages. It can be used to +specify a patch directory for any package in buildroot. It should +also be used in place of the custom patch directory options that are +available for packages such as U-Boot and Barebox. By doing this, it +will allow a user to manage their patches from one top-level +directory. + +The exception to BR2_GLOBAL_PATCH_DIR being the preferred method for +specifying custom patches is BR2_LINUX_KERNEL_PATCH. +BR2_LINUX_KERNEL_PATCH should be used to specify kernel patches that +are available at an URL. Note: BR2_LINUX_KERNEL_PATCH specifies +kernel patches that are applied after patches available in +BR2_GLOBAL_PATCH_DIR, as it is done from a post-patch hook of the +Linux package. + +9.9. Adding project-specific packages + +In general, any new package should be added directly in the package +directory and submitted to the Buildroot upstream project. How to add +packages to Buildroot in general is explained in full detail in +Chapter 17, Adding new packages to Buildroot and will not be repeated +here. However, your project may need some proprietary packages that +cannot be upstreamed. This section will explain how you can keep such +project-specific packages in a project-specific directory. + +As shown in Section 9.1, “Recommended directory structure”, the +recommended location for project-specific packages is package/ +/. If you are using the br2-external tree feature (see +Section 9.2, “Keeping customizations outside of Buildroot”) the +recommended location is to put them in a sub-directory named package/ +in your br2-external tree. + +However, Buildroot will not be aware of the packages in this +location, unless we perform some additional steps. As explained in +Chapter 17, Adding new packages to Buildroot, a package in Buildroot +basically consists of two files: a .mk file (describing how to build +the package) and a Config.in file (describing the configuration +options for this package). + +Buildroot will automatically include the .mk files in first-level +subdirectories of the package directory (using the pattern package/*/ +*.mk). If we want Buildroot to include .mk files from deeper +subdirectories (like package//package1/) then we simply have +to add a .mk file in a first-level subdirectory that includes these +additional .mk files. Therefore, create a file package// +.mk with following contents (assuming you have only one +extra directory level below package//): + +include $(sort $(wildcard package//*/*.mk)) + +For the Config.in files, create a file package//Config.in +that includes the Config.in files of all your packages. An exhaustive +list has to be provided since wildcards are not supported in the +source command of kconfig. For example: + +source "package//package1/Config.in" +source "package//package2/Config.in" + +Include this new file package//Config.in from package/ +Config.in, preferably in a company-specific menu to make merges with +future Buildroot versions easier. + +If using a br2-external tree, refer to Section 9.2, “Keeping +customizations outside of Buildroot” for how to fill in those files. + +9.10. Quick guide to storing your project-specific customizations + +Earlier in this chapter, the different methods for making +project-specific customizations have been described. This section +will now summarize all this by providing step-by-step instructions to +storing your project-specific customizations. Clearly, the steps that +are not relevant to your project can be skipped. + + 1. make menuconfig to configure toolchain, packages and kernel. + 2. make linux-menuconfig to update the kernel config, similar for + other configuration like busybox, uclibc, … + 3. mkdir -p board// + 4. Set the following options to board/// + .config (as far as they are relevant): + + + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE + + BR2_PACKAGE_BUSYBOX_CONFIG + + BR2_UCLIBC_CONFIG + + BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE + + BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE + + BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE + 5. Write the configuration files: + + + make linux-update-defconfig + + make busybox-update-config + + make uclibc-update-config + + cp /build/at91bootstrap3-*/.config board/ + //at91bootstrap3.config + + make barebox-update-defconfig + + make uboot-update-defconfig + 6. Create board///rootfs-overlay/ and fill + it with additional files you need on your rootfs, e.g. board/ + //rootfs-overlay/etc/inittab. Set + BR2_ROOTFS_OVERLAY to board/// + rootfs-overlay. + 7. Create a post-build script board/// + post_build.sh. Set BR2_ROOTFS_POST_BUILD_SCRIPT to board/ + //post_build.sh + 8. If additional setuid permissions have to be set or device nodes + have to be created, create board/// + device_table.txt and add that path to BR2_ROOTFS_DEVICE_TABLE. + 9. If additional user accounts have to be created, create board/ + //users_table.txt and add that path to + BR2_ROOTFS_USERS_TABLES. +10. To add custom patches to certain packages, set + BR2_GLOBAL_PATCH_DIR to board///patches/ + and add your patches for each package in a subdirectory named + after the package. Each patch should be called - + -.patch. +11. Specifically for the Linux kernel, there also exists the option + BR2_LINUX_KERNEL_PATCH with as main advantage that it can also + download patches from a URL. If you do not need this, + BR2_GLOBAL_PATCH_DIR is preferred. U-Boot, Barebox, at91bootstrap + and at91bootstrap3 also have separate options, but these do not + provide any advantage over BR2_GLOBAL_PATCH_DIR and will likely + be removed in the future. +12. If you need to add project-specific packages, create package/ + / and place your packages in that directory. Create + an overall .mk file that includes the .mk files of + all your packages. Create an overall Config.in file that sources + the Config.in files of all your packages. Include this Config.in + file from Buildroot’s package/Config.in file. +13. make savedefconfig to save the buildroot configuration. +14. cp defconfig configs/_defconfig + +Chapter 10. Frequently Asked Questions & Troubleshooting + +10.1. The boot hangs after Starting network… + +If the boot process seems to hang after the following messages +(messages not necessarily exactly similar, depending on the list of +packages selected): + +Freeing init memory: 3972K +Initializing random number generator... done. +Starting network... +Starting dropbear sshd: generating rsa key... generating dsa key... OK + +then it means that your system is running, but didn’t start a shell +on the serial console. In order to have the system start a shell on +your serial console, you have to go into the Buildroot configuration, +in System configuration, modify Run a getty (login prompt) after boot +and set the appropriate port and baud rate in the getty options +submenu. This will automatically tune the /etc/inittab file of the +generated system so that a shell starts on the correct serial port. + +10.2. Why is there no compiler on the target? + +It has been decided that support for the native compiler on the +target would be stopped from the Buildroot-2012.11 release because: + + * this feature was neither maintained nor tested, and often broken; + * this feature was only available for Buildroot toolchains; + * Buildroot mostly targets small or very small target hardware with + limited resource onboard (CPU, ram, mass-storage), for which + compiling on the target does not make much sense; + * Buildroot aims at easing the cross-compilation, making native + compilation on the target unnecessary. + +If you need a compiler on your target anyway, then Buildroot is not +suitable for your purpose. In such case, you need a real distribution +and you should opt for something like: + + * openembedded [http://www.openembedded.org] + * yocto [https://www.yoctoproject.org] + * emdebian [http://www.emdebian.org] + * Fedora [https://fedoraproject.org/wiki/Architectures] + * openSUSE ARM [http://en.opensuse.org/Portal:ARM] + * Arch Linux ARM [http://archlinuxarm.org] + * … + +10.3. Why are there no development files on the target? + +Since there is no compiler available on the target (see Section 10.2, +“Why is there no compiler on the target?”), it does not make sense to +waste space with headers or static libraries. + +Therefore, those files are always removed from the target since the +Buildroot-2012.11 release. + +10.4. Why is there no documentation on the target? + +Because Buildroot mostly targets small or very small target hardware +with limited resource onboard (CPU, ram, mass-storage), it does not +make sense to waste space with the documentation data. + +If you need documentation data on your target anyway, then Buildroot +is not suitable for your purpose, and you should look for a real +distribution (see: Section 10.2, “Why is there no compiler on the +target?”). + +10.5. Why are some packages not visible in the Buildroot config menu? + +If a package exists in the Buildroot tree and does not appear in the +config menu, this most likely means that some of the package’s +dependencies are not met. + +To know more about the dependencies of a package, search for the +package symbol in the config menu (see Section 8.1, “make tips”). + +Then, you may have to recursively enable several options (which +correspond to the unmet dependencies) to finally be able to select +the package. + +If the package is not visible due to some unmet toolchain options, +then you should certainly run a full rebuild (see Section 8.1, “make +tips” for more explanations). + +10.6. Why not use the target directory as a chroot directory? + +There are plenty of reasons to not use the target directory a chroot +one, among these: + + * file ownerships, modes and permissions are not correctly set in + the target directory; + * device nodes are not created in the target directory. + +For these reasons, commands run through chroot, using the target +directory as the new root, will most likely fail. + +If you want to run the target filesystem inside a chroot, or as an +NFS root, then use the tarball image generated in images/ and extract +it as root. + +10.7. Why doesn’t Buildroot generate binary packages (.deb, .ipkg…)? + +One feature that is often discussed on the Buildroot list is the +general topic of "package management". To summarize, the idea would +be to add some tracking of which Buildroot package installs what +files, with the goals of: + + * being able to remove files installed by a package when this + package gets unselected from the menuconfig; + * being able to generate binary packages (ipk or other format) that + can be installed on the target without re-generating a new root + filesystem image. + +In general, most people think it is easy to do: just track which +package installed what and remove it when the package is unselected. +However, it is much more complicated than that: + + * It is not only about the target/ directory, but also the sysroot + in host//sysroot and the host/ directory itself. All files + installed in those directories by various packages must be + tracked. + * When a package is unselected from the configuration, it is not + sufficient to remove just the files it installed. One must also + remove all its reverse dependencies (i.e. packages relying on it) + and rebuild all those packages. For example, package A depends + optionally on the OpenSSL library. Both are selected, and + Buildroot is built. Package A is built with crypto support using + OpenSSL. Later on, OpenSSL gets unselected from the + configuration, but package A remains (since OpenSSL is an + optional dependency, this is possible.) If only OpenSSL files are + removed, then the files installed by package A are broken: they + use a library that is no longer present on the target. Although + this is technically doable, it adds a lot of complexity to + Buildroot, which goes against the simplicity we try to stick to. + * In addition to the previous problem, there is the case where the + optional dependency is not even known to Buildroot. For example, + package A in version 1.0 never used OpenSSL, but in version 2.0 + it automatically uses OpenSSL if available. If the Buildroot .mk + file hasn’t been updated to take this into account, then package + A will not be part of the reverse dependencies of OpenSSL and + will not be removed and rebuilt when OpenSSL is removed. For + sure, the .mk file of package A should be fixed to mention this + optional dependency, but in the mean time, you can have + non-reproducible behaviors. + * The request is to also allow changes in the menuconfig to be + applied on the output directory without having to rebuild + everything from scratch. However, this is very difficult to + achieve in a reliable way: what happens when the suboptions of a + package are changed (we would have to detect this, and rebuild + the package from scratch and potentially all its reverse + dependencies), what happens if toolchain options are changed, + etc. At the moment, what Buildroot does is clear and simple so + its behaviour is very reliable and it is easy to support users. + If configuration changes done in menuconfig are applied after the + next make, then it has to work correctly and properly in all + situations, and not have some bizarre corner cases. The risk is + to get bug reports like "I have enabled package A, B and C, then + ran make, then disabled package C and enabled package D and ran + make, then re-enabled package C and enabled package E and then + there is a build failure". Or worse "I did some configuration, + then built, then did some changes, built, some more changes, + built, some more changes, built, and now it fails, but I don’t + remember all the changes I did and in which order". This will be + impossible to support. + +For all these reasons, the conclusion is that adding tracking of +installed files to remove them when the package is unselected, or to +generate a repository of binary packages, is something that is very +hard to achieve reliably and will add a lot of complexity. + +On this matter, the Buildroot developers make this position +statement: + + * Buildroot strives to make it easy to generate a root filesystem + (hence the name, by the way.) That is what we want to make + Buildroot good at: building root filesystems. + * Buildroot is not meant to be a distribution (or rather, a + distribution generator.) It is the opinion of most Buildroot + developers that this is not a goal we should pursue. We believe + that there are other tools better suited to generate a distro + than Buildroot is. For example, Open Embedded [http:// + openembedded.org/], or openWRT [https://openwrt.org/], are such + tools. + * We prefer to push Buildroot in a direction that makes it easy (or + even easier) to generate complete root filesystems. This is what + makes Buildroot stands out in the crowd (among other things, of + course!) + * We believe that for most embedded Linux systems, binary packages + are not necessary, and potentially harmful. When binary packages + are used, it means that the system can be partially upgraded, + which creates an enormous number of possible combinations of + package versions that should be tested before doing the upgrade + on the embedded device. On the other hand, by doing complete + system upgrades by upgrading the entire root filesystem image at + once, the image deployed to the embedded system is guaranteed to + really be the one that has been tested and validated. + +10.8. How to speed-up the build process? + +Since Buildroot often involves doing full rebuilds of the entire +system that can be quite long, we provide below a number of tips to +help reduce the build time: + + * Use a pre-built external toolchain instead of the default + Buildroot internal toolchain. By using a pre-built Linaro + toolchain (on ARM) or a Sourcery CodeBench toolchain (for ARM, + x86, x86-64, MIPS, etc.), you will save the build time of the + toolchain at each complete rebuild, approximately 15 to 20 + minutes. Note that temporarily using an external toolchain does + not prevent you to switch back to an internal toolchain (that may + provide a higher level of customization) once the rest of your + system is working; + * Use the ccache compiler cache (see: Section 8.12.3, “Using ccache + in Buildroot”); + * Learn about rebuilding only the few packages you actually care + about (see Section 8.3, “Understanding how to rebuild packages”), + but beware that sometimes full rebuilds are anyway necessary (see + Section 8.2, “Understanding when a full rebuild is necessary”); + * Make sure you are not using a virtual machine for the Linux + system used to run Buildroot. Most of the virtual machine + technologies are known to cause a significant performance impact + on I/O, which is really important for building source code; + * Make sure that you’re using only local files: do not attempt to + do a build over NFS, which significantly slows down the build. + Having the Buildroot download folder available locally also helps + a bit. + * Buy new hardware. SSDs and lots of RAM are key to speeding up the + builds. + +Chapter 11. Known issues + + * It is not possible to pass extra linker options via + BR2_TARGET_LDFLAGS if such options contain a $ sign. For example, + the following is known to break: BR2_TARGET_LDFLAGS="-Wl,-rpath= + '$ORIGIN/../lib'" + * The libffi package is not supported on the SuperH 2 and ARC + architectures. + * The prboom package triggers a compiler failure with the SuperH 4 + compiler from Sourcery CodeBench, version 2012.09. + +Chapter 12. Legal notice and licensing + +12.1. Complying with open source licenses + +All of the end products of Buildroot (toolchain, root filesystem, +kernel, bootloaders) contain open source software, released under +various licenses. + +Using open source software gives you the freedom to build rich +embedded systems, choosing from a wide range of packages, but also +imposes some obligations that you must know and honour. Some licenses +require you to publish the license text in the documentation of your +product. Others require you to redistribute the source code of the +software to those that receive your product. + +The exact requirements of each license are documented in each +package, and it is your responsibility (or that of your legal office) +to comply with those requirements. To make this easier for you, +Buildroot can collect for you some material you will probably need. +To produce this material, after you have configured Buildroot with +make menuconfig, make xconfig or make gconfig, run: + +make legal-info + +Buildroot will collect legally-relevant material in your output +directory, under the legal-info/ subdirectory. There you will find: + + * A README file, that summarizes the produced material and contains + warnings about material that Buildroot could not produce. + * buildroot.config: this is the Buildroot configuration file that + is usually produced with make menuconfig, and which is necessary + to reproduce the build. + * The source code for all packages; this is saved in the sources/ + and host-sources/ subdirectories for target and host packages + respectively. The source code for packages that set + _REDISTRIBUTE = NO will not be saved. Patches that were applied + are also saved, along with a file named series that lists the + patches in the order they were applied. Patches are under the + same license as the files that they modify. Note: Buildroot + applies additional patches to Libtool scripts of autotools-based + packages. These patches can be found under support/libtool in the + Buildroot source and, due to technical limitations, are not saved + with the package sources. You may need to collect them manually. + * A manifest file (one for host and one for target packages) + listing the configured packages, their version, license and + related information. Some of this information might not be + defined in Buildroot; such items are marked as "unknown". + * The license texts of all packages, in the licenses/ and + host-licenses/ subdirectories for target and host packages + respectively. If the license file(s) are not defined in + Buildroot, the file is not produced and a warning in the README + indicates this. + +Please note that the aim of the legal-info feature of Buildroot is to +produce all the material that is somehow relevant for legal +compliance with the package licenses. Buildroot does not try to +produce the exact material that you must somehow make public. +Certainly, more material is produced than is needed for a strict +legal compliance. For example, it produces the source code for +packages released under BSD-like licenses, that you are not required +to redistribute in source form. + +Moreover, due to technical limitations, Buildroot does not produce +some material that you will or may need, such as the toolchain source +code and the Buildroot source code itself (including patches to +packages for which source distribution is required). When you run +make legal-info, Buildroot produces warnings in the README file to +inform you of relevant material that could not be saved. + +Finally, keep in mind that the output of make legal-info is based on +declarative statements in each of the packages recipes. The Buildroot +developers try to do their best to keep those declarative statements +as accurate as possible, to the best of their knowledge. However, it +is very well possible that those declarative statements are not all +fully accurate nor exhaustive. You (or your legal department) have to +check the output of make legal-info before using it as your own +compliance delivery. See the NO WARRANTY clauses (clauses 11 and 12) +in the COPYING file at the root of the Buildroot distribution. + +12.2. Complying with the Buildroot license + +Buildroot itself is an open source software, released under the GNU +General Public License, version 2 [http://www.gnu.org/licenses/ +old-licenses/gpl-2.0.html] or (at your option) any later version, +with the exception of the package patches detailed below. However, +being a build system, it is not normally part of the end product: if +you develop the root filesystem, kernel, bootloader or toolchain for +a device, the code of Buildroot is only present on the development +machine, not in the device storage. + +Nevertheless, the general view of the Buildroot developers is that +you should release the Buildroot source code along with the source +code of other packages when releasing a product that contains +GPL-licensed software. This is because the GNU GPL [http:// +www.gnu.org/licenses/old-licenses/gpl-2.0.html] defines the "complete +source code" for an executable work as "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". Buildroot is part of the scripts used to control +compilation and installation of the executable, and as such it is +considered part of the material that must be redistributed. + +Keep in mind that this is only the Buildroot developers' opinion, and +you should consult your legal department or lawyer in case of any +doubt. + +12.2.1. Patches to packages + +Buildroot also bundles patch files, which are applied to the sources +of the various packages. Those patches are not covered by the license +of Buildroot. Instead, they are covered by the license of the +software to which the patches are applied. When said software is +available under multiple licenses, the Buildroot patches are only +provided under the publicly accessible licenses. + +See Chapter 18, Patching a package for the technical details. + +Chapter 13. Beyond Buildroot + +13.1. Boot the generated images + +13.1.1. NFS boot + +To achieve NFS-boot, enable tar root filesystem in the Filesystem +images menu. + +After a complete build, just run the following commands to setup the +NFS-root directory: + +sudo tar -xavf /path/to/output_dir/rootfs.tar -C /path/to/nfs_root_dir + +Remember to add this path to /etc/exports. + +Then, you can execute a NFS-boot from your target. + +13.1.2. Live CD + +To build a live CD image, enable the iso image option in the +Filesystem images menu. Note that this option is only available on +the x86 and x86-64 architectures, and if you are building your kernel +with Buildroot. + +You can build a live CD image with either IsoLinux, Grub or Grub 2 as +a bootloader, but only Isolinux supports making this image usable +both as a live CD and live USB (through the Build hybrid image +option). + +You can test your live CD image using QEMU: + +qemu-system-i386 -cdrom output/images/rootfs.iso9660 + +Or use it as a hard-drive image if it is a hybrid ISO: + +qemu-system-i386 -hda output/images/rootfs.iso9660 + +It can be easily flashed to a USB drive with dd: + +dd if=output/images/rootfs.iso9660 of=/dev/sdb + +13.2. Chroot + +If you want to chroot in a generated image, then there are few thing +you should be aware of: + + * you should setup the new root from the tar root filesystem image; + * either the selected target architecture is compatible with your + host machine, or you should use some qemu-* binary and correctly + set it within the binfmt properties to be able to run the + binaries built for the target on your host machine; + * Buildroot does not currently provide host-qemu and binfmt + correctly built and set for that kind of use. + +Part III. Developer guide + +Table of Contents + +14. How Buildroot works +15. Coding style + + 15.1. Config.in file + 15.2. The .mk file + 15.3. The documentation + 15.4. Support scripts + +16. Adding support for a particular board +17. Adding new packages to Buildroot + + 17.1. Package directory + 17.2. Config files + 17.3. The .mk file + 17.4. The .hash file + 17.5. Infrastructure for packages with specific build systems + 17.6. Infrastructure for autotools-based packages + 17.7. Infrastructure for CMake-based packages + 17.8. Infrastructure for Python packages + 17.9. Infrastructure for LuaRocks-based packages + 17.10. Infrastructure for Perl/CPAN packages + 17.11. Infrastructure for virtual packages + 17.12. Infrastructure for packages using kconfig for + configuration files + 17.13. Infrastructure for rebar-based packages + 17.14. Infrastructure for Waf-based packages + 17.15. Integration of Meson-based packages + 17.16. Integration of Cargo-based packages + 17.17. Infrastructure for packages building kernel modules + 17.18. Infrastructure for asciidoc documents + 17.19. Infrastructure specific to the Linux kernel package + 17.20. Hooks available in the various build steps + 17.21. Gettext integration and interaction with packages + 17.22. Tips and tricks + 17.23. Conclusion + +18. Patching a package + + 18.1. Providing patches + 18.2. How patches are applied + 18.3. Format and licensing of the package patches + 18.4. Integrating patches found on the Web + +19. Download infrastructure +20. Debugging Buildroot +21. Contributing to Buildroot + + 21.1. Reproducing, analyzing and fixing bugs + 21.2. Analyzing and fixing autobuild failures + 21.3. Reviewing and testing patches + 21.4. Work on items from the TODO list + 21.5. Submitting patches + 21.6. Reporting issues/bugs or getting help + +22. DEVELOPERS file and get-developers + +Chapter 14. How Buildroot works + +As mentioned above, Buildroot is basically a set of Makefiles that +download, configure, and compile software with the correct options. +It also includes patches for various software packages - mainly the +ones involved in the cross-compilation toolchain (gcc, binutils and +uClibc). + +There is basically one Makefile per software package, and they are +named with the .mk extension. Makefiles are split into many different +parts. + + * The toolchain/ directory contains the Makefiles and associated + files for all software related to the cross-compilation + toolchain: binutils, gcc, gdb, kernel-headers and uClibc. + * The arch/ directory contains the definitions for all the + processor architectures that are supported by Buildroot. + * The package/ directory contains the Makefiles and associated + files for all user-space tools and libraries that Buildroot can + compile and add to the target root filesystem. There is one + sub-directory per package. + * The linux/ directory contains the Makefiles and associated files + for the Linux kernel. + * The boot/ directory contains the Makefiles and associated files + for the bootloaders supported by Buildroot. + * The system/ directory contains support for system integration, + e.g. the target filesystem skeleton and the selection of an init + system. + * The fs/ directory contains the Makefiles and associated files for + software related to the generation of the target root filesystem + image. + +Each directory contains at least 2 files: + + * something.mk is the Makefile that downloads, configures, compiles + and installs the package something. + * Config.in is a part of the configuration tool description file. + It describes the options related to the package. + +The main Makefile performs the following steps (once the +configuration is done): + + * Create all the output directories: staging, target, build, etc. + in the output directory (output/ by default, another value can be + specified using O=) + * Generate the toolchain target. When an internal toolchain is + used, this means generating the cross-compilation toolchain. When + an external toolchain is used, this means checking the features + of the external toolchain and importing it into the Buildroot + environment. + * Generate all the targets listed in the TARGETS variable. This + variable is filled by all the individual components' Makefiles. + Generating these targets will trigger the compilation of the + userspace packages (libraries, programs), the kernel, the + bootloader and the generation of the root filesystem images, + depending on the configuration. + +Chapter 15. Coding style + +Overall, these coding style rules are here to help you to add new +files in Buildroot or refactor existing ones. + +If you slightly modify some existing file, the important thing is to +keep the consistency of the whole file, so you can: + + * either follow the potentially deprecated coding style used in + this file, + * or entirely rework it in order to make it comply with these + rules. + +15.1. Config.in file + +Config.in files contain entries for almost anything configurable in +Buildroot. + +An entry has the following pattern: + +config BR2_PACKAGE_LIBFOO + bool "libfoo" + depends on BR2_PACKAGE_LIBBAZ + select BR2_PACKAGE_LIBBAR + help + This is a comment that explains what libfoo is. The help text + should be wrapped. + + http://foosoftware.org/libfoo/ + + * The bool, depends on, select and help lines are indented with one + tab. + * The help text itself should be indented with one tab and two + spaces. + * The help text should be wrapped to fit 72 columns, where tab + counts for 8, so 62 characters in the text itself. + +The Config.in files are the input for the configuration tool used in +Buildroot, which is the regular Kconfig. For further details about +the Kconfig language, refer to http://kernel.org/doc/Documentation/ +kbuild/kconfig-language.txt. + +15.2. The .mk file + + * Header: The file starts with a header. It contains the module + name, preferably in lowercase, enclosed between separators made + of 80 hashes. A blank line is mandatory after the header: + + ################################################################################ + # + # libfoo + # + ################################################################################ + + * Assignment: use = preceded and followed by one space: + + LIBFOO_VERSION = 1.0 + LIBFOO_CONF_OPTS += --without-python-support + + Do not align the = signs. + + * Indentation: use tab only: + + define LIBFOO_REMOVE_DOC + $(RM) -fr $(TARGET_DIR)/usr/share/libfoo/doc \ + $(TARGET_DIR)/usr/share/man/man3/libfoo* + endef + + Note that commands inside a define block should always start with + a tab, so make recognizes them as commands. + + * Optional dependency: + + + Prefer multi-line syntax. + + YES: + + ifeq ($(BR2_PACKAGE_PYTHON),y) + LIBFOO_CONF_OPTS += --with-python-support + LIBFOO_DEPENDENCIES += python + else + LIBFOO_CONF_OPTS += --without-python-support + endif + + NO: + + LIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON),,out)-python-support + LIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,) + + + Keep configure options and dependencies close together. + * Optional hooks: keep hook definition and assignment together in + one if block. + + YES: + + ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) + define LIBFOO_REMOVE_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data + endef + LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA + endif + + NO: + + define LIBFOO_REMOVE_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data + endef + + ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) + LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA + endif + +15.3. The documentation + +The documentation uses the asciidoc [http://www.methods.co.nz/ +asciidoc/] format. + +For further details about the asciidoc [http://www.methods.co.nz/ +asciidoc/] syntax, refer to http://www.methods.co.nz/asciidoc/ +userguide.html. + +15.4. Support scripts + +Some scripts in the support/ and utils/ directories are written in +Python and should follow the PEP8 Style Guide for Python Code [https: +//www.python.org/dev/peps/pep-0008/]. + +Chapter 16. Adding support for a particular board + +Buildroot contains basic configurations for several publicly +available hardware boards, so that users of such a board can easily +build a system that is known to work. You are welcome to add support +for other boards to Buildroot too. + +To do so, you need to create a normal Buildroot configuration that +builds a basic system for the hardware: toolchain, kernel, +bootloader, filesystem and a simple BusyBox-only userspace. No +specific package should be selected: the configuration should be as +minimal as possible, and should only build a working basic BusyBox +system for the target platform. You can of course use more +complicated configurations for your internal projects, but the +Buildroot project will only integrate basic board configurations. +This is because package selections are highly application-specific. + +Once you have a known working configuration, run make savedefconfig. +This will generate a minimal defconfig file at the root of the +Buildroot source tree. Move this file into the configs/ directory, +and rename it _defconfig. + +It is recommended to use as much as possible upstream versions of the +Linux kernel and bootloaders, and to use as much as possible default +kernel and bootloader configurations. If they are incorrect for your +board, or no default exists, we encourage you to send fixes to the +corresponding upstream projects. + +However, in the mean time, you may want to store kernel or bootloader +configuration or patches specific to your target platform. To do so, +create a directory board/ and a subdirectory board/ +/. You can then store your patches and +configurations in these directories, and reference them from the main +Buildroot configuration. Refer to Chapter 9, Project-specific +customization for more details. + +Chapter 17. Adding new packages to Buildroot + +This section covers how new packages (userspace libraries or +applications) can be integrated into Buildroot. It also shows how +existing packages are integrated, which is needed for fixing issues +or tuning their configuration. + +When you add a new package, be sure to test it in various conditions; +see Section 17.22.2, “How to test your package” + +17.1. Package directory + +First of all, create a directory under the package directory for your +software, for example libfoo. + +Some packages have been grouped by topic in a sub-directory: x11r7, +qt5 and gstreamer. If your package fits in one of these categories, +then create your package directory in these. New subdirectories are +discouraged, however. + +17.2. Config files + +For the package to be displayed in the configuration tool, you need +to create a Config file in your package directory. There are two +types: Config.in and Config.in.host. + +17.2.1. Config.in file + +For packages used on the target, create a file named Config.in. This +file will contain the option descriptions related to our libfoo +software that will be used and displayed in the configuration tool. +It should basically contain: + +config BR2_PACKAGE_LIBFOO + bool "libfoo" + help + This is a comment that explains what libfoo is. The help text + should be wrapped. + + http://foosoftware.org/libfoo/ + +The bool line, help line and other metadata information about the +configuration option must be indented with one tab. The help text +itself should be indented with one tab and two spaces, lines should +be wrapped to fit 72 columns, where tab counts for 8, so 62 +characters in the text itself. The help text must mention the +upstream URL of the project after an empty line. + +As a convention specific to Buildroot, the ordering of the attributes +is as follows: + + 1. The type of option: bool, string… with the prompt + 2. If needed, the default value(s) + 3. Any dependency of the depends on form + 4. Any dependency of the select form + 5. The help keyword and help text. + +You can add other sub-options into a if BR2_PACKAGE_LIBFOO…endif +statement to configure particular things in your software. You can +look at examples in other packages. The syntax of the Config.in file +is the same as the one for the kernel Kconfig file. The documentation +for this syntax is available at http://kernel.org/doc/Documentation/ +kbuild/kconfig-language.txt + +Finally you have to add your new libfoo/Config.in to package/ +Config.in (or in a category subdirectory if you decided to put your +package in one of the existing categories). The files included there +are sorted alphabetically per category and are NOT supposed to +contain anything but the bare name of the package. + +source "package/libfoo/Config.in" + +17.2.2. Config.in.host file + +Some packages also need to be built for the host system. There are +two options here: + + * The host package is only required to satisfy build-time + dependencies of one or more target packages. In this case, add + host-foo to the target package’s BAR_DEPENDENCIES variable. No + Config.in.host file should be created. + * The host package should be explicitly selectable by the user from + the configuration menu. In this case, create a Config.in.host + file for that host package: + + config BR2_PACKAGE_HOST_FOO + bool "host foo" + help + This is a comment that explains what foo for the host is. + + http://foosoftware.org/foo/ + + The same coding style and options as for the Config.in file are + valid. + + Finally you have to add your new libfoo/Config.in.host to package + /Config.in.host. The files included there are sorted + alphabetically and are NOT supposed to contain anything but the + bare name of the package. + + source "package/foo/Config.in.host" + + The host package will then be available from the Host utilities + menu. + +17.2.3. Choosing depends on or select + +The Config.in file of your package must also ensure that dependencies +are enabled. Typically, Buildroot uses the following rules: + + * Use a select type of dependency for dependencies on libraries. + These dependencies are generally not obvious and it therefore + make sense to have the kconfig system ensure that the + dependencies are selected. For example, the libgtk2 package uses + select BR2_PACKAGE_LIBGLIB2 to make sure this library is also + enabled. The select keyword expresses the dependency with a + backward semantic. + * Use a depends on type of dependency when the user really needs to + be aware of the dependency. Typically, Buildroot uses this type + of dependency for dependencies on target architecture, MMU + support and toolchain options (see Section 17.2.4, “Dependencies + on target and toolchain options”), or for dependencies on "big" + things, such as the X.org system. The depends on keyword + expresses the dependency with a forward semantic. + +Note. The current problem with the kconfig language is that these two +dependency semantics are not internally linked. Therefore, it may be +possible to select a package, whom one of its dependencies/ +requirement is not met. + +An example illustrates both the usage of select and depends on. + +config BR2_PACKAGE_RRDTOOL + bool "rrdtool" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBART + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + help + RRDtool is the OpenSource industry standard, high performance + data logging and graphing system for time series data. + + http://oss.oetiker.ch/rrdtool/ + +comment "rrdtool needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +Note that these two dependency types are only transitive with the +dependencies of the same kind. + +This means, in the following example: + +config BR2_PACKAGE_A + bool "Package A" + +config BR2_PACKAGE_B + bool "Package B" + depends on BR2_PACKAGE_A + +config BR2_PACKAGE_C + bool "Package C" + depends on BR2_PACKAGE_B + +config BR2_PACKAGE_D + bool "Package D" + select BR2_PACKAGE_B + +config BR2_PACKAGE_E + bool "Package E" + select BR2_PACKAGE_D + + * Selecting Package C will be visible if Package B has been + selected, which in turn is only visible if Package A has been + selected. + * Selecting Package E will select Package D, which will select + Package B, it will not check for the dependencies of Package B, + so it will not select Package A. + * Since Package B is selected but Package A is not, this violates + the dependency of Package B on Package A. Therefore, in such a + situation, the transitive dependency has to be added explicitly: + +config BR2_PACKAGE_D + bool "Package D" + select BR2_PACKAGE_B + depends on BR2_PACKAGE_A + +config BR2_PACKAGE_E + bool "Package E" + select BR2_PACKAGE_D + depends on BR2_PACKAGE_A + +Overall, for package library dependencies, select should be +preferred. + +Note that such dependencies will ensure that the dependency option is +also enabled, but not necessarily built before your package. To do +so, the dependency also needs to be expressed in the .mk file of the +package. + +Further formatting details: see the coding style Section 15.1, +“Config.in file”. + +17.2.4. Dependencies on target and toolchain options + +Many packages depend on certain options of the toolchain: the choice +of C library, C++ support, thread support, RPC support, wchar +support, or dynamic library support. Some packages can only be built +on certain target architectures, or if an MMU is available in the +processor. + +These dependencies have to be expressed with the appropriate depends +on statements in the Config.in file. Additionally, for dependencies +on toolchain options, a comment should be displayed when the option +is not enabled, so that the user knows why the package is not +available. Dependencies on target architecture or MMU support should +not be made visible in a comment: since it is unlikely that the user +can freely choose another target, it makes little sense to show these +dependencies explicitly. + +The comment should only be visible if the config option itself would +be visible when the toolchain option dependencies are met. This means +that all other dependencies of the package (including dependencies on +target architecture and MMU support) have to be repeated on the +comment definition. To keep it clear, the depends on statement for +these non-toolchain option should be kept separate from the depends +on statement for the toolchain options. If there is a dependency on a +config option in that same file (typically the main package) it is +preferable to have a global if … endif construct rather than +repeating the depends on statement on the comment and other config +options. + +The general format of a dependency comment for package foo is: + +foo needs a toolchain w/ featA, featB, featC + +for example: + +mpd needs a toolchain w/ C++, threads, wchar + +or + +crda needs a toolchain w/ threads + +Note that this text is kept brief on purpose, so that it will fit on +a 80-character terminal. + +The rest of this section enumerates the different target and +toolchain options, the corresponding config symbols to depend on, and +the text to use in the comment. + + * Target architecture + + + Dependency symbol: BR2_powerpc, BR2_mips, … (see arch/ + Config.in) + + Comment string: no comment to be added + * MMU support + + + Dependency symbol: BR2_USE_MMU + + Comment string: no comment to be added + * Gcc _sync* built-ins used for atomic operations. They are + available in variants operating on 1 byte, 2 bytes, 4 bytes and 8 + bytes. Since different architectures support atomic operations on + different sizes, one dependency symbol is available for each + size: + + + Dependency symbol: BR2_TOOLCHAIN_HAS_SYNC_1 for 1 byte, + BR2_TOOLCHAIN_HAS_SYNC_2 for 2 bytes, + BR2_TOOLCHAIN_HAS_SYNC_4 for 4 bytes, + BR2_TOOLCHAIN_HAS_SYNC_8 for 8 bytes. + + Comment string: no comment to be added + * Gcc _atomic* built-ins used for atomic operations. + + + Dependency symbol: BR2_TOOLCHAIN_HAS_ATOMIC. + + Comment string: no comment to be added + * Kernel headers + + + Dependency symbol: BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y, + (replace X_Y with the proper version, see toolchain/ + toolchain-common.in) + + Comment string: headers >= X.Y and/or headers <= X.Y (replace + X.Y with the proper version) + * GCC version + + + Dependency symbol: BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y, (replace + X_Y with the proper version, see toolchain/ + toolchain-common.in) + + Comment string: gcc >= X.Y and/or gcc <= X.Y (replace X.Y + with the proper version) + * Host GCC version + + + Dependency symbol: BR2_HOST_GCC_AT_LEAST_X_Y, (replace X_Y + with the proper version, see Config.in) + + Comment string: no comment to be added + + Note that it is usually not the package itself that has a + minimum host GCC version, but rather a host-package on which + it depends. + * C library + + + Dependency symbol: BR2_TOOLCHAIN_USES_GLIBC, + BR2_TOOLCHAIN_USES_MUSL, BR2_TOOLCHAIN_USES_UCLIBC + + Comment string: for the C library, a slightly different + comment text is used: foo needs a glibc toolchain, or foo + needs a glibc toolchain w/ C++ + * C++ support + + + Dependency symbol: BR2_INSTALL_LIBSTDCPP + + Comment string: C++ + * Fortran support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_FORTRAN + + Comment string: fortran + * thread support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_THREADS + + Comment string: threads (unless + BR2_TOOLCHAIN_HAS_THREADS_NPTL is also needed, in which case, + specifying only NPTL is sufficient) + * NPTL thread support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_THREADS_NPTL + + Comment string: NPTL + * RPC support + + + Dependency symbol: BR2_TOOLCHAIN_HAS_NATIVE_RPC + + Comment string: RPC + * wchar support + + + Dependency symbol: BR2_USE_WCHAR + + Comment string: wchar + * dynamic library + + + Dependency symbol: !BR2_STATIC_LIBS + + Comment string: dynamic library + +17.2.5. Dependencies on a Linux kernel built by buildroot + +Some packages need a Linux kernel to be built by buildroot. These are +typically kernel modules or firmware. A comment should be added in +the Config.in file to express this dependency, similar to +dependencies on toolchain options. The general format is: + +foo needs a Linux kernel to be built + +If there is a dependency on both toolchain options and the Linux +kernel, use this format: + +foo needs a toolchain w/ featA, featB, featC and a Linux kernel to be built + +17.2.6. Dependencies on udev /dev management + +If a package needs udev /dev management, it should depend on symbol +BR2_PACKAGE_HAS_UDEV, and the following comment should be added: + +foo needs udev /dev management + +If there is a dependency on both toolchain options and udev /dev +management, use this format: + +foo needs udev /dev management and a toolchain w/ featA, featB, featC + +17.2.7. Dependencies on features provided by virtual packages + +Some features can be provided by more than one package, such as the +openGL libraries. + +See Section 17.11, “Infrastructure for virtual packages” for more on +the virtual packages. + +17.3. The .mk file + +Finally, here’s the hardest part. Create a file named libfoo.mk. It +describes how the package should be downloaded, configured, built, +installed, etc. + +Depending on the package type, the .mk file must be written in a +different way, using different infrastructures: + + * Makefiles for generic packages (not using autotools or CMake): + These are based on an infrastructure similar to the one used for + autotools-based packages, but require a little more work from the + developer. They specify what should be done for the + configuration, compilation and installation of the package. This + infrastructure must be used for all packages that do not use the + autotools as their build system. In the future, other specialized + infrastructures might be written for other build systems. We + cover them through in a tutorial Section 17.5.1, “generic-package + tutorial” and a reference Section 17.5.2, “generic-package + reference”. + * Makefiles for autotools-based software (autoconf, automake, + etc.): We provide a dedicated infrastructure for such packages, + since autotools is a very common build system. This + infrastructure must be used for new packages that rely on the + autotools as their build system. We cover them through a tutorial + Section 17.6.1, “autotools-package tutorial” and reference + Section 17.6.2, “autotools-package reference”. + * Makefiles for cmake-based software: We provide a dedicated + infrastructure for such packages, as CMake is a more and more + commonly used build system and has a standardized behaviour. This + infrastructure must be used for new packages that rely on CMake. + We cover them through a tutorial Section 17.7.1, “cmake-package + tutorial” and reference Section 17.7.2, “cmake-package reference” + . + * Makefiles for Python modules: We have a dedicated infrastructure + for Python modules that use either the distutils or the + setuptools mechanism. We cover them through a tutorial + Section 17.8.1, “python-package tutorial” and a reference + Section 17.8.2, “python-package reference”. + * Makefiles for Lua modules: We have a dedicated infrastructure for + Lua modules available through the LuaRocks web site. We cover + them through a tutorial Section 17.9.1, “luarocks-package + tutorial” and a reference Section 17.9.2, “luarocks-package + reference”. + +Further formatting details: see the writing rules Section 15.2, “The +.mk file”. + +17.4. The .hash file + +When possible, you must add a third file, named libfoo.hash, that +contains the hashes of the downloaded files for the libfoo package. +The only reason for not adding a .hash file is when hash checking is +not possible due to how the package is downloaded. + +The hashes stored in that file are used to validate the integrity of +the downloaded files and of the license files. + +The format of this file is one line for each file for which to check +the hash, each line being space-separated, with these three fields: + + * the type of hash, one of: + + + md5, sha1, sha224, sha256, sha384, sha512, none + * the hash of the file: + + + for none, one or more non-space chars, usually just the + string xxx + + for md5, 32 hexadecimal characters + + for sha1, 40 hexadecimal characters + + for sha224, 56 hexadecimal characters + + for sha256, 64 hexadecimal characters + + for sha384, 96 hexadecimal characters + + for sha512, 128 hexadecimal characters + * the name of the file: + + + for a source archive: the basename of the file, without any + directory component, + + for a license file: the path as it appears in + FOO_LICENSE_FILES. + +Lines starting with a # sign are considered comments, and ignored. +Empty lines are ignored. + +There can be more than one hash for a single file, each on its own +line. In this case, all hashes must match. + +Note. Ideally, the hashes stored in this file should match the hashes +published by upstream, e.g. on their website, in the e-mail +announcement… If upstream provides more than one type of hash (e.g. +sha1 and sha512), then it is best to add all those hashes in the +.hash file. If upstream does not provide any hash, or only provides +an md5 hash, then compute at least one strong hash yourself +(preferably sha256, but not md5), and mention this in a comment line +above the hashes. + +Note. The hashes for license files are used to detect a license +change when a package version is bumped. The hashes are checked +during the make legal-info target run. For a package with multiple +versions (like Qt5), create the hash file in a subdirectory + of that package (see also Section 18.2, “How patches +are applied”). + +Note. The number of spaces does not matter, so one can use spaces (or +tabs) to properly align the different fields. + +The none hash type is reserved to those archives downloaded from a +repository, like a git clone, a subversion checkout… + +The example below defines a sha1 and a sha256 published by upstream +for the main libfoo-1.2.3.tar.bz2 tarball, an md5 from upstream and a +locally-computed sha256 hashes for a binary blob, a sha256 for a +downloaded patch, and an archive with no hash: + +# Hashes from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.{sha1,sha256}: +sha1 486fb55c3efa71148fe07895fd713ea3a5ae343a libfoo-1.2.3.tar.bz2 +sha256 efc8103cc3bcb06bda6a781532d12701eb081ad83e8f90004b39ab81b65d4369 libfoo-1.2.3.tar.bz2 + +# md5 from: http://www.foosoftware.org/download/libfoo-1.2.3.tar.bz2.md5, sha256 locally computed: +md5 2d608f3c318c6b7557d551a5a09314f03452f1a1 libfoo-data.bin +sha256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b libfoo-data.bin + +# Locally computed: +sha256 ff52101fb90bbfc3fe9475e425688c660f46216d7e751c4bbdb1dc85cdccacb9 libfoo-fix-blabla.patch + +# No hash for 1234: +none xxx libfoo-1234.tar.gz + +# Hash for license files: +sha256 a45a845012742796534f7e91fe623262ccfb99460a2bd04015bd28d66fba95b8 COPYING +sha256 01b1f9f2c8ee648a7a596a1abe8aa4ed7899b1c9e5551bda06da6e422b04aa55 doc/COPYING.LGPL + +If the .hash file is present, and it contains one or more hashes for +a downloaded file, the hash(es) computed by Buildroot (after +download) must match the hash(es) stored in the .hash file. If one or +more hashes do not match, Buildroot considers this an error, deletes +the downloaded file, and aborts. + +If the .hash file is present, but it does not contain a hash for a +downloaded file, Buildroot considers this an error and aborts. +However, the downloaded file is left in the download directory since +this typically indicates that the .hash file is wrong but the +downloaded file is probably OK. + +Hashes are currently checked for files fetched from http/ftp servers, +Git repositories, files copied using scp and local files. Hashes are +not checked for other version control systems (such as Subversion, +CVS, etc.) because Buildroot currently does not generate reproducible +tarballs when source code is fetched from such version control +systems. + +Hashes should only be added in .hash files for files that are +guaranteed to be stable. For example, patches auto-generated by +Github are not guaranteed to be stable, and therefore their hashes +can change over time. Such patches should not be downloaded, and +instead be added locally to the package folder. + +If the .hash file is missing, then no check is done at all. + +17.5. Infrastructure for packages with specific build systems + +By packages with specific build systems we mean all the packages +whose build system is not one of the standard ones, such as autotools +or CMake. This typically includes packages whose build system is +based on hand-written Makefiles or shell scripts. + +17.5.1. generic-package tutorial + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_LICENSE = GPL-3.0+ +11: LIBFOO_LICENSE_FILES = COPYING +12: LIBFOO_INSTALL_STAGING = YES +13: LIBFOO_CONFIG_SCRIPTS = libfoo-config +14: LIBFOO_DEPENDENCIES = host-libaaa libbbb +15: +16: define LIBFOO_BUILD_CMDS +17: $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +18: endef +19: +20: define LIBFOO_INSTALL_STAGING_CMDS +21: $(INSTALL) -D -m 0755 $(@D)/libfoo.a $(STAGING_DIR)/usr/lib/libfoo.a +22: $(INSTALL) -D -m 0644 $(@D)/foo.h $(STAGING_DIR)/usr/include/foo.h +23: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(STAGING_DIR)/usr/lib +24: endef +25: +26: define LIBFOO_INSTALL_TARGET_CMDS +27: $(INSTALL) -D -m 0755 $(@D)/libfoo.so* $(TARGET_DIR)/usr/lib +28: $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/foo.d +29: endef +30: +31: define LIBFOO_USERS +32: foo -1 libfoo -1 * - - - LibFoo daemon +33: endef +34: +35: define LIBFOO_DEVICES +36: /dev/foo c 666 0 0 42 0 - - - +37: endef +38: +39: define LIBFOO_PERMISSIONS +40: /bin/foo f 4755 foo libfoo - - - - - +41: endef +42: +43: $(eval $(generic-package)) + +The Makefile begins on line 7 to 11 with metadata information: the +version of the package (LIBFOO_VERSION), the name of the tarball +containing the package (LIBFOO_SOURCE) (xz-ed tarball recommended) +the Internet location at which the tarball can be downloaded from +(LIBFOO_SITE), the license (LIBFOO_LICENSE) and file with the license +text (LIBFOO_LICENSE_FILES). All variables must start with the same +prefix, LIBFOO_ in this case. This prefix is always the uppercased +version of the package name (see below to understand where the +package name is defined). + +On line 12, we specify that this package wants to install something +to the staging space. This is often needed for libraries, since they +must install header files and other development files in the staging +space. This will ensure that the commands listed in the +LIBFOO_INSTALL_STAGING_CMDS variable will be executed. + +On line 13, we specify that there is some fixing to be done to some +of the libfoo-config files that were installed during +LIBFOO_INSTALL_STAGING_CMDS phase. These *-config files are +executable shell script files that are located in $(STAGING_DIR)/usr/ +bin directory and are executed by other 3rd party packages to find +out the location and the linking flags of this particular package. + +The problem is that all these *-config files by default give wrong, +host system linking flags that are unsuitable for cross-compiling. + +For example: -I/usr/include instead of -I$(STAGING_DIR)/usr/include +or: -L/usr/lib instead of -L$(STAGING_DIR)/usr/lib + +So some sed magic is done to these scripts to make them give correct +flags. The argument to be given to LIBFOO_CONFIG_SCRIPTS is the file +name(s) of the shell script(s) needing fixing. All these names are +relative to $(STAGING_DIR)/usr/bin and if needed multiple names can +be given. + +In addition, the scripts listed in LIBFOO_CONFIG_SCRIPTS are removed +from $(TARGET_DIR)/usr/bin, since they are not needed on the target. + +Example 17.1. Config script: divine package + +Package divine installs shell script $(STAGING_DIR)/usr/bin/ +divine-config. + +So its fixup would be: + +DIVINE_CONFIG_SCRIPTS = divine-config + + +Example 17.2. Config script: imagemagick package: + +Package imagemagick installs the following scripts: $(STAGING_DIR)/ +usr/bin/{Magick,Magick++,MagickCore,MagickWand,Wand}-config + +So it’s fixup would be: + +IMAGEMAGICK_CONFIG_SCRIPTS = \ + Magick-config Magick++-config \ + MagickCore-config MagickWand-config Wand-config + + +On line 14, we specify the list of dependencies this package relies +on. These dependencies are listed in terms of lower-case package +names, which can be packages for the target (without the host- +prefix) or packages for the host (with the host-) prefix). Buildroot +will ensure that all these packages are built and installed before +the current package starts its configuration. + +The rest of the Makefile, lines 16..29, defines what should be done +at the different steps of the package configuration, compilation and +installation. LIBFOO_BUILD_CMDS tells what steps should be performed +to build the package. LIBFOO_INSTALL_STAGING_CMDS tells what steps +should be performed to install the package in the staging space. +LIBFOO_INSTALL_TARGET_CMDS tells what steps should be performed to +install the package in the target space. + +All these steps rely on the $(@D) variable, which contains the +directory where the source code of the package has been extracted. + +On lines 31..43, we define a user that is used by this package (e.g. +to run a daemon as non-root) (LIBFOO_USERS). + +On line 35..37, we define a device-node file used by this package +(LIBFOO_DEVICES). + +On line 39..41, we define the permissions to set to specific files +installed by this package (LIBFOO_PERMISSIONS). + +Finally, on line 43, we call the generic-package function, which +generates, according to the variables defined previously, all the +Makefile code necessary to make your package working. + +17.5.2. generic-package reference + +There are two variants of the generic target. The generic-package +macro is used for packages to be cross-compiled for the target. The +host-generic-package macro is used for host packages, natively +compiled for the host. It is possible to call both of them in a +single .mk file: once to create the rules to generate a target +package and once to create the rules to generate a host package: + +$(eval $(generic-package)) +$(eval $(host-generic-package)) + +This might be useful if the compilation of the target package +requires some tools to be installed on the host. If the package name +is libfoo, then the name of the package for the target is also +libfoo, while the name of the package for the host is host-libfoo. +These names should be used in the DEPENDENCIES variables of other +packages, if they depend on libfoo or host-libfoo. + +The call to the generic-package and/or host-generic-package macro +must be at the end of the .mk file, after all variable definitions. + +For the target package, the generic-package uses the variables +defined by the .mk file and prefixed by the uppercased package name: +LIBFOO_*. host-generic-package uses the HOST_LIBFOO_* variables. For +some variables, if the HOST_LIBFOO_ prefixed variable doesn’t exist, +the package infrastructure uses the corresponding variable prefixed +by LIBFOO_. This is done for variables that are likely to have the +same value for both the target and host packages. See below for +details. + +The list of variables that can be set in a .mk file to give metadata +information is (assuming the package name is libfoo) : + + * LIBFOO_VERSION, mandatory, must contain the version of the + package. Note that if HOST_LIBFOO_VERSION doesn’t exist, it is + assumed to be the same as LIBFOO_VERSION. It can also be a + revision number or a tag for packages that are fetched directly + from their version control system. Do not use a branch name as + version; it does not work. Examples: + + + a version for a release tarball: LIBFOO_VERSION = 0.1.2 + + a sha1 for a git tree: LIBFOO_VERSION = + cb9d6aa9429e838f0e54faa3d455bcbab5eef057 + + a tag for a git tree LIBFOO_VERSION = v0.1.2 + * LIBFOO_SOURCE may contain the name of the tarball of the package, + which Buildroot will use to download the tarball from + LIBFOO_SITE. If HOST_LIBFOO_SOURCE is not specified, it defaults + to LIBFOO_SOURCE. If none are specified, then the value is + assumed to be libfoo-$(LIBFOO_VERSION).tar.gz. Example: + LIBFOO_SOURCE = foobar-$(LIBFOO_VERSION).tar.bz2 + * LIBFOO_PATCH may contain a space-separated list of patch file + names, that Buildroot will download and apply to the package + source code. If an entry contains ://, then Buildroot will assume + it is a full URL and download the patch from this location. + Otherwise, Buildroot will assume that the patch should be + downloaded from LIBFOO_SITE. If HOST_LIBFOO_PATCH is not + specified, it defaults to LIBFOO_PATCH. Note that patches that + are included in Buildroot itself use a different mechanism: all + files of the form *.patch present in the package directory inside + Buildroot will be applied to the package after extraction (see + patching a package Chapter 18, Patching a package). Finally, + patches listed in the LIBFOO_PATCH variable are applied before + the patches stored in the Buildroot package directory. + * LIBFOO_SITE provides the location of the package, which can be a + URL or a local filesystem path. HTTP, FTP and SCP are supported + URL types for retrieving package tarballs. In these cases don’t + include a trailing slash: it will be added by Buildroot between + the directory and the filename as appropriate. Git, Subversion, + Mercurial, and Bazaar are supported URL types for retrieving + packages directly from source code management systems. There is a + helper function to make it easier to download source tarballs + from GitHub (refer to Section 17.22.3, “How to add a package from + GitHub” for details). A filesystem path may be used to specify + either a tarball or a directory containing the package source + code. See LIBFOO_SITE_METHOD below for more details on how + retrieval works. Note that SCP URLs should be of the form scp:// + [user@]host:filepath, and that filepath is relative to the user’s + home directory, so you may want to prepend the path with a slash + for absolute paths: scp://[user@]host:/absolutepath. If + HOST_LIBFOO_SITE is not specified, it defaults to LIBFOO_SITE. + Examples: LIBFOO_SITE=http://www.libfoosoftware.org/libfoo + LIBFOO_SITE=http://svn.xiph.org/trunk/Tremor LIBFOO_SITE=/opt/ + software/libfoo.tar.gz LIBFOO_SITE=$(TOPDIR)/../src/libfoo + * LIBFOO_DL_OPTS is a space-separated list of additional options to + pass to the downloader. Useful for retrieving documents with + server-side checking for user logins and passwords, or to use a + proxy. All download methods valid for LIBFOO_SITE_METHOD are + supported; valid options depend on the download method (consult + the man page for the respective download utilities). + * LIBFOO_EXTRA_DOWNLOADS is a space-separated list of additional + files that Buildroot should download. If an entry contains :// + then Buildroot will assume it is a complete URL and will download + the file using this URL. Otherwise, Buildroot will assume the + file to be downloaded is located at LIBFOO_SITE. Buildroot will + not do anything with those additional files, except download + them: it will be up to the package recipe to use them from $ + (DL_DIR). + * LIBFOO_SITE_METHOD determines the method used to fetch or copy + the package source code. In many cases, Buildroot guesses the + method from the contents of LIBFOO_SITE and setting + LIBFOO_SITE_METHOD is unnecessary. When HOST_LIBFOO_SITE_METHOD + is not specified, it defaults to the value of LIBFOO_SITE_METHOD. + The possible values of LIBFOO_SITE_METHOD are: + + + wget for normal FTP/HTTP downloads of tarballs. Used by + default when LIBFOO_SITE begins with http://, https:// or + ftp://. + + scp for downloads of tarballs over SSH with scp. Used by + default when LIBFOO_SITE begins with scp://. + + svn for retrieving source code from a Subversion repository. + Used by default when LIBFOO_SITE begins with svn://. When a + http:// Subversion repository URL is specified in + LIBFOO_SITE, one must specify LIBFOO_SITE_METHOD=svn. + Buildroot performs a checkout which is preserved as a tarball + in the download cache; subsequent builds use the tarball + instead of performing another checkout. + + cvs for retrieving source code from a CVS repository. Used by + default when LIBFOO_SITE begins with cvs://. The downloaded + source code is cached as with the svn method. Anonymous + pserver mode is assumed otherwise explicitly defined on + LIBFOO_SITE. Both LIBFOO_SITE=cvs://libfoo.net:/cvsroot/ + libfoo and LIBFOO_SITE=cvs://:ext:libfoo.net:/cvsroot/libfoo + are accepted, on the former anonymous pserver access mode is + assumed. LIBFOO_SITE must contain the source URL as well as + the remote repository directory. The module is the package + name. LIBFOO_VERSION is mandatory and must be a tag, a + branch, or a date (e.g. "2014-10-20", "2014-10-20 13:45", + "2014-10-20 13:45+01" see "man cvs" for further details). + + git for retrieving source code from a Git repository. Used by + default when LIBFOO_SITE begins with git://. The downloaded + source code is cached as with the svn method. + + hg for retrieving source code from a Mercurial repository. + One must specify LIBFOO_SITE_METHOD=hg when LIBFOO_SITE + contains a Mercurial repository URL. The downloaded source + code is cached as with the svn method. + + bzr for retrieving source code from a Bazaar repository. Used + by default when LIBFOO_SITE begins with bzr://. The + downloaded source code is cached as with the svn method. + + file for a local tarball. One should use this when + LIBFOO_SITE specifies a package tarball as a local filename. + Useful for software that isn’t available publicly or in + version control. + + local for a local source code directory. One should use this + when LIBFOO_SITE specifies a local directory path containing + the package source code. Buildroot copies the contents of the + source directory into the package’s build directory. Note + that for local packages, no patches are applied. If you need + to still patch the source code, use LIBFOO_POST_RSYNC_HOOKS, + see Section 17.20.1, “Using the POST_RSYNC hook”. + * LIBFOO_GIT_SUBMODULES can be set to YES to create an archive with + the git submodules in the repository. This is only available for + packages downloaded with git (i.e. when LIBFOO_SITE_METHOD=git). + Note that we try not to use such git submodules when they contain + bundled libraries, in which case we prefer to use those libraries + from their own package. + * LIBFOO_STRIP_COMPONENTS is the number of leading components + (directories) that tar must strip from file names on extraction. + The tarball for most packages has one leading component named " + -", thus Buildroot passes + --strip-components=1 to tar to remove it. For non-standard + packages that don’t have this component, or that have more than + one leading component to strip, set this variable with the value + to be passed to tar. Default: 1. + * LIBFOO_EXCLUDES is a space-separated list of patterns to exclude + when extracting the archive. Each item from that list is passed + as a tar’s --exclude option. By default, empty. + * LIBFOO_DEPENDENCIES lists the dependencies (in terms of package + name) that are required for the current target package to + compile. These dependencies are guaranteed to be compiled and + installed before the configuration of the current package starts. + In a similar way, HOST_LIBFOO_DEPENDENCIES lists the dependencies + for the current host package. + * LIBFOO_PATCH_DEPENDENCIES lists the dependencies (in terms of + package name) that are required for the current package to be + patched. These dependencies are guaranteed to be extracted and + patched before the current package is patched. In a similar way, + HOST_LIBFOO_PATCH_DEPENDENCIES lists the dependencies for the + current host package. This is seldom used; usually, + LIBFOO_DEPENDENCIES is what you really want to use. + * LIBFOO_PROVIDES lists all the virtual packages libfoo is an + implementation of. See Section 17.11, “Infrastructure for virtual + packages”. + * LIBFOO_INSTALL_STAGING can be set to YES or NO (default). If set + to YES, then the commands in the LIBFOO_INSTALL_STAGING_CMDS + variables are executed to install the package into the staging + directory. + * LIBFOO_INSTALL_TARGET can be set to YES (default) or NO. If set + to YES, then the commands in the LIBFOO_INSTALL_TARGET_CMDS + variables are executed to install the package into the target + directory. + * LIBFOO_INSTALL_IMAGES can be set to YES or NO (default). If set + to YES, then the commands in the LIBFOO_INSTALL_IMAGES_CMDS + variable are executed to install the package into the images + directory. + * LIBFOO_CONFIG_SCRIPTS lists the names of the files in $ + (STAGING_DIR)/usr/bin that need some special fixing to make them + cross-compiling friendly. Multiple file names separated by space + can be given and all are relative to $(STAGING_DIR)/usr/bin. The + files listed in LIBFOO_CONFIG_SCRIPTS are also removed from $ + (TARGET_DIR)/usr/bin since they are not needed on the target. + * LIBFOO_DEVICES lists the device files to be created by Buildroot + when using the static device table. The syntax to use is the + makedevs one. You can find some documentation for this syntax in + the Chapter 23, Makedev syntax documentation. This variable is + optional. + * LIBFOO_PERMISSIONS lists the changes of permissions to be done at + the end of the build process. The syntax is once again the + makedevs one. You can find some documentation for this syntax in + the Chapter 23, Makedev syntax documentation. This variable is + optional. + * LIBFOO_USERS lists the users to create for this package, if it + installs a program you want to run as a specific user (e.g. as a + daemon, or as a cron-job). The syntax is similar in spirit to the + makedevs one, and is described in the Chapter 24, Makeusers + syntax documentation. This variable is optional. + * LIBFOO_LICENSE defines the license (or licenses) under which the + package is released. This name will appear in the manifest file + produced by make legal-info. If the license appears in the SPDX + License List [https://spdx.org/licenses/], use the SPDX short + identifier to make the manifest file uniform. Otherwise, describe + the license in a precise and concise way, avoiding ambiguous + names such as BSD which actually name a family of licenses. This + variable is optional. If it is not defined, unknown will appear + in the license field of the manifest file for this package. The + expected format for this variable must comply with the following + rules: + + + If different parts of the package are released under + different licenses, then comma separate licenses (e.g. + LIBFOO_LICENSE = GPL-2.0+, LGPL-2.1+). If there is clear + distinction between which component is licensed under what + license, then annotate the license with that component, + between parenthesis (e.g. LIBFOO_LICENSE = GPL-2.0+ + (programs), LGPL-2.1+ (libraries)). + + If the package is dual licensed, then separate licenses with + the or keyword (e.g. LIBFOO_LICENSE = AFL-2.1 or GPL-2.0+). + * LIBFOO_LICENSE_FILES is a space-separated list of files in the + package tarball that contain the license(s) under which the + package is released. make legal-info copies all of these files in + the legal-info directory. See Chapter 12, Legal notice and + licensing for more information. This variable is optional. If it + is not defined, a warning will be produced to let you know, and + not saved will appear in the license files field of the manifest + file for this package. + * LIBFOO_ACTUAL_SOURCE_TARBALL only applies to packages whose + LIBFOO_SITE / LIBTOO_SOURCE pair points to an archive that does + not actually contain source code, but binary code. This a very + uncommon case, only known to apply to external toolchains which + come already compiled, although theoretically it might apply to + other packages. In such cases a separate tarball is usually + available with the actual source code. Set + LIBFOO_ACTUAL_SOURCE_TARBALL to the name of the actual source + code archive and Buildroot will download it and use it when you + run make legal-info to collect legally-relevant material. Note + this file will not be downloaded during regular builds nor by + make source. + * LIBFOO_ACTUAL_SOURCE_SITE provides the location of the actual + source tarball. The default value is LIBFOO_SITE, so you don’t + need to set this variable if the binary and source archives are + hosted on the same directory. If LIBFOO_ACTUAL_SOURCE_TARBALL is + not set, it doesn’t make sense to define + LIBFOO_ACTUAL_SOURCE_SITE. + * LIBFOO_REDISTRIBUTE can be set to YES (default) or NO to indicate + if the package source code is allowed to be redistributed. Set it + to NO for non-opensource packages: Buildroot will not save the + source code for this package when collecting the legal-info. + * LIBFOO_FLAT_STACKSIZE defines the stack size of an application + built into the FLAT binary format. The application stack size on + the NOMMU architecture processors can’t be enlarged at run time. + The default stack size for the FLAT binary format is only 4k + bytes. If the application consumes more stack, append the + required number here. + * LIBFOO_BIN_ARCH_EXCLUDE is a space-separated list of paths + (relative to the target directory) to ignore when checking that + the package installs correctly cross-compiled binaries. You + seldom need to set this variable, unless the package installs + binary blobs outside the default locations, /lib/firmware, /usr/ + lib/firmware, /lib/modules, /usr/lib/modules, and /usr/share, + which are automatically excluded. + +The recommended way to define these variables is to use the following +syntax: + +LIBFOO_VERSION = 2.32 + +Now, the variables that define what should be performed at the +different steps of the build process. + + * LIBFOO_EXTRACT_CMDS lists the actions to be performed to extract + the package. This is generally not needed as tarballs are + automatically handled by Buildroot. However, if the package uses + a non-standard archive format, such as a ZIP or RAR file, or has + a tarball with a non-standard organization, this variable allows + to override the package infrastructure default behavior. + * LIBFOO_CONFIGURE_CMDS lists the actions to be performed to + configure the package before its compilation. + * LIBFOO_BUILD_CMDS lists the actions to be performed to compile + the package. + * HOST_LIBFOO_INSTALL_CMDS lists the actions to be performed to + install the package, when the package is a host package. The + package must install its files to the directory given by $ + (HOST_DIR). All files, including development files such as + headers should be installed, since other packages might be + compiled on top of this package. + * LIBFOO_INSTALL_TARGET_CMDS lists the actions to be performed to + install the package to the target directory, when the package is + a target package. The package must install its files to the + directory given by $(TARGET_DIR). Only the files required for + execution of the package have to be installed. Header files, + static libraries and documentation will be removed again when the + target filesystem is finalized. + * LIBFOO_INSTALL_STAGING_CMDS lists the actions to be performed to + install the package to the staging directory, when the package is + a target package. The package must install its files to the + directory given by $(STAGING_DIR). All development files should + be installed, since they might be needed to compile other + packages. + * LIBFOO_INSTALL_IMAGES_CMDS lists the actions to be performed to + install the package to the images directory, when the package is + a target package. The package must install its files to the + directory given by $(BINARIES_DIR). Only files that are binary + images (aka images) that do not belong in the TARGET_DIR but are + necessary for booting the board should be placed here. For + example, a package should utilize this step if it has binaries + which would be similar to the kernel image, bootloader or root + filesystem images. + * LIBFOO_INSTALL_INIT_SYSV and LIBFOO_INSTALL_INIT_SYSTEMD list the + actions to install init scripts either for the systemV-like init + systems (busybox, sysvinit, etc.) or for the systemd units. These + commands will be run only when the relevant init system is + installed (i.e. if systemd is selected as the init system in the + configuration, only LIBFOO_INSTALL_INIT_SYSTEMD will be run). + * LIBFOO_HELP_CMDS lists the actions to print the package help, + which is included to the main make help output. These commands + can print anything in any format. This is seldom used, as + packages rarely have custom rules. Do not use this variable, + unless you really know that you need to print help. + +The preferred way to define these variables is: + +define LIBFOO_CONFIGURE_CMDS + action 1 + action 2 + action 3 +endef + +In the action definitions, you can use the following variables: + + * $(LIBFOO_PKGDIR) contains the path to the directory containing + the libfoo.mk and Config.in files. This variable is useful when + it is necessary to install a file bundled in Buildroot, like a + runtime configuration file, a splashscreen image… + * $(@D), which contains the directory in which the package source + code has been uncompressed. + * $(DL_DIR) contains the path to the directory where all the + downloads made by Buildroot are stored. + * $(TARGET_CC), $(TARGET_LD), etc. to get the target + cross-compilation utilities + * $(TARGET_CROSS) to get the cross-compilation toolchain prefix + * Of course the $(HOST_DIR), $(STAGING_DIR) and $(TARGET_DIR) + variables to install the packages properly. + +Finally, you can also use hooks. See Section 17.20, “Hooks available +in the various build steps” for more information. + +17.6. Infrastructure for autotools-based packages + +17.6.1. autotools-package tutorial + +First, let’s see how to write a .mk file for an autotools-based +package, with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_INSTALL_STAGING = YES +11: LIBFOO_INSTALL_TARGET = NO +12: LIBFOO_CONF_OPTS = --disable-shared +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf +14: +15: $(eval $(autotools-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in output/staging/ is the +directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed +in the staging directory: their development files are needed to +compile other libraries or applications depending on them. Also by +default, when staging installation is enabled, packages are installed +in this location using the make install command. + +On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they +will not be used at runtime. By default, target installation is +enabled; setting this variable to NO is almost never needed. Also by +default, packages are installed in this location using the make +install command. + +On line 12, we tell Buildroot to pass a custom configure option, that +will be passed to the ./configure script before configuring and +building the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line line 15, we invoke the autotools-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +17.6.2. autotools-package reference + +The main macro of the autotools package infrastructure is +autotools-package. It is similar to the generic-package macro. The +ability to have target and host packages is also available, with the +host-autotools-package macro. + +Just like the generic infrastructure, the autotools infrastructure +works by defining a number of variables before calling the +autotools-package macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the autotools +infrastructure: LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, +LIBFOO_SITE, LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, +LIBFOO_INSTALL_STAGING, LIBFOO_INSTALL_TARGET. + +A few additional variables, specific to the autotools infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + + * LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the configure script. This is useful, if + for example, the main configure script is not at the root of the + tree extracted by the tarball. If HOST_LIBFOO_SUBDIR is not + specified, it defaults to LIBFOO_SUBDIR. + * LIBFOO_CONF_ENV, to specify additional environment variables to + pass to the configure script. By default, empty. + * LIBFOO_CONF_OPTS, to specify additional configure options to pass + to the configure script. By default, empty. + * LIBFOO_MAKE, to specify an alternate make command. This is + typically useful when parallel make is enabled in the + configuration (using BR2_JLEVEL) but that this feature should be + disabled for the given package, for one reason or another. By + default, set to $(MAKE). If parallel building is not supported by + the package, then it should be set to LIBFOO_MAKE=$(MAKE1). + * LIBFOO_MAKE_ENV, to specify additional environment variables to + pass to make in the build step. These are passed before the make + command. By default, empty. + * LIBFOO_MAKE_OPTS, to specify additional variables to pass to make + in the build step. These are passed after the make command. By + default, empty. + * LIBFOO_AUTORECONF, tells whether the package should be + autoreconfigured or not (i.e. if the configure script and + Makefile.in files should be re-generated by re-running autoconf, + automake, libtool, etc.). Valid values are YES and NO. By + default, the value is NO + * LIBFOO_AUTORECONF_ENV, to specify additional environment + variables to pass to the autoreconf program if LIBFOO_AUTORECONF= + YES. These are passed in the environment of the autoreconf + command. By default, empty. + * LIBFOO_AUTORECONF_OPTS to specify additional options passed to + the autoreconf program if LIBFOO_AUTORECONF=YES. By default, + empty. + * LIBFOO_GETTEXTIZE, tells whether the package should be + gettextized or not (i.e. if the package uses a different gettext + version than Buildroot provides, and it is needed to run + gettextize.) Only valid when LIBFOO_AUTORECONF=YES. Valid values + are YES and NO. The default is NO. + * LIBFOO_GETTEXTIZE_OPTS, to specify additional options passed to + the gettextize program, if LIBFOO_GETTEXTIZE=YES. You may use + that if, for example, the .po files are not located in the + standard place (i.e. in po/ at the root of the package.) By + default, -f. + * LIBFOO_LIBTOOL_PATCH tells whether the Buildroot patch to fix + libtool cross-compilation issues should be applied or not. Valid + values are YES and NO. By default, the value is YES + * LIBFOO_INSTALL_STAGING_OPTS contains the make options used to + install the package to the staging directory. By default, the + value is DESTDIR=$(STAGING_DIR) install, which is correct for + most autotools packages. It is still possible to override it. + * LIBFOO_INSTALL_TARGET_OPTS contains the make options used to + install the package to the target directory. By default, the + value is DESTDIR=$(TARGET_DIR) install. The default value is + correct for most autotools packages, but it is still possible to + override it if needed. + +With the autotools infrastructure, all the steps required to build +and install the packages are already defined, and they generally work +well for most autotools-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 17.20, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the + autotools infrastructure is used, if the package .mk file defines + its own LIBFOO_CONFIGURE_CMDS variable, it will be used instead + of the default autotools one. However, using this method should + be restricted to very specific cases. Do not use it in the + general case. + +17.7. Infrastructure for CMake-based packages + +17.7.1. cmake-package tutorial + +First, let’s see how to write a .mk file for a CMake-based package, +with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_INSTALL_STAGING = YES +11: LIBFOO_INSTALL_TARGET = NO +12: LIBFOO_CONF_OPTS = -DBUILD_DEMOS=ON +13: LIBFOO_DEPENDENCIES = libglib2 host-pkgconf +14: +15: $(eval $(cmake-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot to install the package to the staging +directory. The staging directory, located in output/staging/ is the +directory where all the packages are installed, including their +development files, etc. By default, packages are not installed to the +staging directory, since usually, only libraries need to be installed +in the staging directory: their development files are needed to +compile other libraries or applications depending on them. Also by +default, when staging installation is enabled, packages are installed +in this location using the make install command. + +On line 11, we tell Buildroot to not install the package to the +target directory. This directory contains what will become the root +filesystem running on the target. For purely static libraries, it is +not necessary to install them in the target directory because they +will not be used at runtime. By default, target installation is +enabled; setting this variable to NO is almost never needed. Also by +default, packages are installed in this location using the make +install command. + +On line 12, we tell Buildroot to pass custom options to CMake when it +is configuring the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line line 15, we invoke the cmake-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +17.7.2. cmake-package reference + +The main macro of the CMake package infrastructure is cmake-package. +It is similar to the generic-package macro. The ability to have +target and host packages is also available, with the +host-cmake-package macro. + +Just like the generic infrastructure, the CMake infrastructure works +by defining a number of variables before calling the cmake-package +macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the CMake infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET. + +A few additional variables, specific to the CMake infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + + * LIBFOO_SUBDIR may contain the name of a subdirectory inside the + package that contains the main CMakeLists.txt file. This is + useful, if for example, the main CMakeLists.txt file is not at + the root of the tree extracted by the tarball. If + HOST_LIBFOO_SUBDIR is not specified, it defaults to + LIBFOO_SUBDIR. + * LIBFOO_CONF_ENV, to specify additional environment variables to + pass to CMake. By default, empty. + * LIBFOO_CONF_OPTS, to specify additional configure options to pass + to CMake. By default, empty. A number of common CMake options are + set by the cmake-package infrastructure; so it is normally not + necessary to set them in the package’s *.mk file unless you want + to override them: + + + CMAKE_BUILD_TYPE is driven by BR2_ENABLE_DEBUG; + + CMAKE_INSTALL_PREFIX; + + BUILD_SHARED_LIBS is driven by BR2_STATIC_LIBS; + + BUILD_DOC, BUILD_DOCS are disabled; + + BUILD_EXAMPLE, BUILD_EXAMPLES are disabled; + + BUILD_TEST, BUILD_TESTS, BUILD_TESTING are disabled. + * LIBFOO_SUPPORTS_IN_SOURCE_BUILD = NO should be set when the + package cannot be built inside the source tree but needs a + separate build directory. + * LIBFOO_MAKE, to specify an alternate make command. This is + typically useful when parallel make is enabled in the + configuration (using BR2_JLEVEL) but that this feature should be + disabled for the given package, for one reason or another. By + default, set to $(MAKE). If parallel building is not supported by + the package, then it should be set to LIBFOO_MAKE=$(MAKE1). + * LIBFOO_MAKE_ENV, to specify additional environment variables to + pass to make in the build step. These are passed before the make + command. By default, empty. + * LIBFOO_MAKE_OPTS, to specify additional variables to pass to make + in the build step. These are passed after the make command. By + default, empty. + * LIBFOO_INSTALL_STAGING_OPTS contains the make options used to + install the package to the staging directory. By default, the + value is DESTDIR=$(STAGING_DIR) install, which is correct for + most CMake packages. It is still possible to override it. + * LIBFOO_INSTALL_TARGET_OPTS contains the make options used to + install the package to the target directory. By default, the + value is DESTDIR=$(TARGET_DIR) install. The default value is + correct for most CMake packages, but it is still possible to + override it if needed. + +With the CMake infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most CMake-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 17.20, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the CMake + infrastructure is used, if the package .mk file defines its own + LIBFOO_CONFIGURE_CMDS variable, it will be used instead of the + default CMake one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. + +17.8. Infrastructure for Python packages + +This infrastructure applies to Python packages that use the standard +Python setuptools mechanism as their build system, generally +recognizable by the usage of a setup.py script. + +17.8.1. python-package tutorial + +First, let’s see how to write a .mk file for a Python package, with +an example : + +01: ################################################################################ +02: # +03: # python-foo +04: # +05: ################################################################################ +06: +07: PYTHON_FOO_VERSION = 1.0 +08: PYTHON_FOO_SOURCE = python-foo-$(PYTHON_FOO_VERSION).tar.xz +09: PYTHON_FOO_SITE = http://www.foosoftware.org/download +10: PYTHON_FOO_LICENSE = BSD-3-Clause +11: PYTHON_FOO_LICENSE_FILES = LICENSE +12: PYTHON_FOO_ENV = SOME_VAR=1 +13: PYTHON_FOO_DEPENDENCIES = libmad +14: PYTHON_FOO_SETUP_TYPE = distutils +15: +16: $(eval $(python-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10 and 11, we give licensing details about the package (its +license on line 10, and the file containing the license text on line +11). + +On line 12, we tell Buildroot to pass custom options to the Python +setup.py script when it is configuring the package. + +On line 13, we declare our dependencies, so that they are built +before the build process of our package starts. + +On line 14, we declare the specific Python build system being used. +In this case the distutils Python build system is used. The two +supported ones are distutils and setuptools. + +Finally, on line 16, we invoke the python-package macro that +generates all the Makefile rules that actually allow the package to +be built. + +17.8.2. python-package reference + +As a policy, packages that merely provide Python modules should all +be named python- in Buildroot. Other packages that use the +Python build system, but are not Python modules, can freely choose +their name (existing examples in Buildroot are scons and supervisor). + +In their Config.in file, they should depend on BR2_PACKAGE_PYTHON so +that when Buildroot will enable Python 3 usage for modules, we will +be able to enable Python modules progressively on Python 3. + +The main macro of the Python package infrastructure is +python-package. It is similar to the generic-package macro. It is +also possible to create Python host packages with the +host-python-package macro. + +Just like the generic infrastructure, the Python infrastructure works +by defining a number of variables before calling the python-package +or host-python-package macros. + +All the package metadata information variables that exist in the +generic package infrastructure Section 17.5.2, “generic-package +reference” also exist in the Python infrastructure: +PYTHON_FOO_VERSION, PYTHON_FOO_SOURCE, PYTHON_FOO_PATCH, +PYTHON_FOO_SITE, PYTHON_FOO_SUBDIR, PYTHON_FOO_DEPENDENCIES, +PYTHON_FOO_LICENSE, PYTHON_FOO_LICENSE_FILES, +PYTHON_FOO_INSTALL_STAGING, etc. + +Note that: + + * It is not necessary to add python or host-python in the + PYTHON_FOO_DEPENDENCIES variable of a package, since these basic + dependencies are automatically added as needed by the Python + package infrastructure. + * Similarly, it is not needed to add host-setuptools and/or + host-distutilscross dependencies to PYTHON_FOO_DEPENDENCIES for + setuptools-based packages, since these are automatically added by + the Python infrastructure as needed. + +One variable specific to the Python infrastructure is mandatory: + + * PYTHON_FOO_SETUP_TYPE, to define which Python build system is + used by the package. The two supported values are distutils and + setuptools. If you don’t know which one is used in your package, + look at the setup.py file in your package source code, and see + whether it imports things from the distutils module or the + setuptools module. + +A few additional variables, specific to the Python infrastructure, +can optionally be defined, depending on the package’s needs. Many of +them are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + + * PYTHON_FOO_ENV, to specify additional environment variables to + pass to the Python setup.py script (for both the build and + install steps). Note that the infrastructure is automatically + passing several standard variables, defined in + PKG_PYTHON_DISTUTILS_ENV (for distutils target packages), + HOST_PKG_PYTHON_DISTUTILS_ENV (for distutils host packages), + PKG_PYTHON_SETUPTOOLS_ENV (for setuptools target packages) and + HOST_PKG_PYTHON_SETUPTOOLS_ENV (for setuptools host packages). + * PYTHON_FOO_BUILD_OPTS, to specify additional options to pass to + the Python setup.py script during the build step. For target + distutils packages, the PKG_PYTHON_DISTUTILS_BUILD_OPTS options + are already passed automatically by the infrastructure. + * PYTHON_FOO_INSTALL_TARGET_OPTS, PYTHON_FOO_INSTALL_STAGING_OPTS, + HOST_PYTHON_FOO_INSTALL_OPTS to specify additional options to + pass to the Python setup.py script during the target installation + step, the staging installation step or the host installation, + respectively. Note that the infrastructure is automatically + passing some options, defined in + PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS or + PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS (for target distutils + packages), HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS (for host + distutils packages), PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS or + PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_OPTS (for target setuptools + packages) and HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS (for host + setuptools packages). + * HOST_PYTHON_FOO_NEEDS_HOST_PYTHON, to define the host python + interpreter. The usage of this variable is limited to host + packages. The two supported value are python2 and python3. It + will ensure the right host python package is available and will + invoke it for the build. If some build steps are overloaded, the + right python interpreter must be explicitly called in the + commands. + +With the Python infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most Python-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 17.20, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the Python + infrastructure is used, if the package .mk file defines its own + PYTHON_FOO_BUILD_CMDS variable, it will be used instead of the + default Python one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. + +17.8.3. Generating a python-package from a PyPI repository + +If the Python package for which you would like to create a Buildroot +package is available on PyPI, you may want to use the scanpypi tool +located in utils/ to automate the process. + +You can find the list of existing PyPI packages here [https:// +pypi.python.org]. + +scanpypi requires Python’s setuptools package to be installed on your +host. + +When at the root of your buildroot directory just do : + +utils/scanpypi foo bar -o package + +This will generate packages python-foo and python-bar in the package +folder if they exist on https://pypi.python.org. + +Find the external python modules menu and insert your package inside. +Keep in mind that the items inside a menu should be in alphabetical +order. + +Please keep in mind that you’ll most likely have to manually check +the package for any mistakes as there are things that cannot be +guessed by the generator (e.g. dependencies on any of the python core +modules such as BR2_PACKAGE_PYTHON_ZLIB). Also, please take note that +the license and license files are guessed and must be checked. You +also need to manually add the package to the package/Config.in file. + +If your Buildroot package is not in the official Buildroot tree but +in a br2-external tree, use the -o flag as follows: + +utils/scanpypi foo bar -o other_package_dir + +This will generate packages python-foo and python-bar in the +other_package_directory instead of package. + +Option -h will list the available options: + +utils/scanpypi -h + +17.8.4. python-package CFFI backend + +C Foreign Function Interface for Python (CFFI) provides a convenient +and reliable way to call compiled C code from Python using interface +declarations written in C. Python packages relying on this backend +can be identified by the appearance of a cffi dependency in the +install_requires field of their setup.py file. + +Such a package should: + + * add python-cffi as a runtime dependency in order to install the + compiled C library wrapper on the target. This is achieved by + adding select BR2_PACKAGE_PYTHON_CFFI to the package Config.in. + +config BR2_PACKAGE_PYTHON_FOO + bool "python-foo" + select BR2_PACKAGE_PYTHON_CFFI # runtime + + * add host-python-cffi as a build-time dependency in order to + cross-compile the C wrapper. This is achieved by adding + host-python-cffi to the PYTHON_FOO_DEPENDENCIES variable. + +################################################################################ +# +# python-foo +# +################################################################################ + +... + +PYTHON_FOO_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) + +17.9. Infrastructure for LuaRocks-based packages + +17.9.1. luarocks-package tutorial + +First, let’s see how to write a .mk file for a LuaRocks-based +package, with an example : + +01: ################################################################################ +02: # +03: # lua-foo +04: # +05: ################################################################################ +06: +07: LUA_FOO_VERSION = 1.0.2-1 +08: LUA_FOO_NAME_UPSTREAM = foo +09: LUA_FOO_DEPENDENCIES = bar +10: +11: LUA_FOO_BUILD_OPTS += BAR_INCDIR=$(STAGING_DIR)/usr/include +12: LUA_FOO_BUILD_OPTS += BAR_LIBDIR=$(STAGING_DIR)/usr/lib +13: LUA_FOO_LICENSE = luaFoo license +14: LUA_FOO_LICENSE_FILES = $(LUA_FOO_SUBDIR)/COPYING +15: +16: $(eval $(luarocks-package)) + +On line 7, we declare the version of the package (the same as in the +rockspec, which is the concatenation of the upstream version and the +rockspec revision, separated by a hyphen -). + +On line 8, we declare that the package is called "foo" on LuaRocks. +In Buildroot, we give Lua-related packages a name that starts with +"lua", so the Buildroot name is different from the upstream name. +LUA_FOO_NAME_UPSTREAM makes the link between the two names. + +On line 9, we declare our dependencies against native libraries, so +that they are built before the build process of our package starts. + +On lines 11-12, we tell Buildroot to pass custom options to LuaRocks +when it is building the package. + +On lines 13-14, we specify the licensing terms for the package. + +Finally, on line 16, we invoke the luarocks-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +17.9.2. luarocks-package reference + +LuaRocks is a deployment and management system for Lua modules, and +supports various build.type: builtin, make and cmake. In the context +of Buildroot, the luarocks-package infrastructure only supports the +builtin mode. LuaRocks packages that use the make or cmake build +mechanisms should instead be packaged using the generic-package and +cmake-package infrastructures in Buildroot, respectively. + +The main macro of the LuaRocks package infrastructure is +luarocks-package: like generic-package it works by defining a number +of variables providing metadata information about the package, and +then calling luarocks-package. It is worth mentioning that building +LuaRocks packages for the host is not supported, so the macro +host-luarocks-package is not implemented. + +Just like the generic infrastructure, the LuaRocks infrastructure +works by defining a number of variables before calling the +luarocks-package macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the LuaRocks infrastructure: +LUA_FOO_VERSION, LUA_FOO_SOURCE, LUA_FOO_SITE, LUA_FOO_DEPENDENCIES, +LUA_FOO_LICENSE, LUA_FOO_LICENSE_FILES. + +Two of them are populated by the LuaRocks infrastructure (for the +download step). If your package is not hosted on the LuaRocks mirror +$(BR2_LUAROCKS_MIRROR), you can override them: + + * LUA_FOO_SITE, which defaults to $(BR2_LUAROCKS_MIRROR) + * LUA_FOO_SOURCE, which defaults to $(lowercase + LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).src.rock + +A few additional variables, specific to the LuaRocks infrastructure, +are also defined. They can be overridden in specific cases. + + * LUA_FOO_NAME_UPSTREAM, which defaults to lua-foo, i.e. the + Buildroot package name + * LUA_FOO_ROCKSPEC, which defaults to $(lowercase + LUA_FOO_NAME_UPSTREAM)-$(LUA_FOO_VERSION).rockspec + * LUA_FOO_SUBDIR, which defaults to $(LUA_FOO_NAME_UPSTREAM)-$ + (LUA_FOO_VERSION_WITHOUT_ROCKSPEC_REVISION) + * LUA_FOO_BUILD_OPTS contains additional build options for the + luarocks build call. + +17.10. Infrastructure for Perl/CPAN packages + +17.10.1. perl-package tutorial + +First, let’s see how to write a .mk file for a Perl/CPAN package, +with an example : + +01: ################################################################################ +02: # +03: # perl-foo-bar +04: # +05: ################################################################################ +06: +07: PERL_FOO_BAR_VERSION = 0.02 +08: PERL_FOO_BAR_SOURCE = Foo-Bar-$(PERL_FOO_BAR_VERSION).tar.gz +09: PERL_FOO_BAR_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MO/MONGER +10: PERL_FOO_BAR_DEPENDENCIES = perl-strictures +11: PERL_FOO_BAR_LICENSE = Artistic or GPL-1.0+ +12: PERL_FOO_BAR_LICENSE_FILES = LICENSE +13: +14: $(eval $(perl-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball and the location +of the tarball on a CPAN server. Buildroot will automatically +download the tarball from this location. + +On line 10, we declare our dependencies, so that they are built +before the build process of our package starts. + +On line 11 and 12, we give licensing details about the package (its +license on line 11, and the file containing the license text on line +12). + +Finally, on line 14, we invoke the perl-package macro that generates +all the Makefile rules that actually allow the package to be built. + +Most of these data can be retrieved from https://metacpan.org/. So, +this file and the Config.in can be generated by running the script +utils/scancpan Foo-Bar in the Buildroot directory (or in a +br2-external tree). This script creates a Config.in file and +foo-bar.mk file for the requested package, and also recursively for +all dependencies specified by CPAN. You should still manually edit +the result. In particular, the following things should be checked. + + * If the perl module links with a shared library that is provided + by another (non-perl) package, this dependency is not added + automatically. It has to be added manually to + PERL_FOO_BAR_DEPENDENCIES. + * The package/Config.in file has to be updated manually to include + the generated Config.in files. As a hint, the scancpan script + prints out the required source "…" statements, sorted + alphabetically. + +17.10.2. perl-package reference + +As a policy, packages that provide Perl/CPAN modules should all be +named perl- in Buildroot. + +This infrastructure handles various Perl build systems : +ExtUtils-MakeMaker (EUMM), Module-Build (MB) and Module-Build-Tiny. +Build.PL is preferred by default when a package provides a +Makefile.PL and a Build.PL. + +The main macro of the Perl/CPAN package infrastructure is +perl-package. It is similar to the generic-package macro. The ability +to have target and host packages is also available, with the +host-perl-package macro. + +Just like the generic infrastructure, the Perl/CPAN infrastructure +works by defining a number of variables before calling the +perl-package macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Perl/CPAN +infrastructure: PERL_FOO_VERSION, PERL_FOO_SOURCE, PERL_FOO_PATCH, +PERL_FOO_SITE, PERL_FOO_SUBDIR, PERL_FOO_DEPENDENCIES, +PERL_FOO_INSTALL_TARGET. + +Note that setting PERL_FOO_INSTALL_STAGING to YES has no effect +unless a PERL_FOO_INSTALL_STAGING_CMDS variable is defined. The perl +infrastructure doesn’t define these commands since Perl modules +generally don’t need to be installed to the staging directory. + +A few additional variables, specific to the Perl/CPAN infrastructure, +can also be defined. Many of them are only useful in very specific +cases, typical packages will therefore only use a few of them. + + * PERL_FOO_PREFER_INSTALLER/HOST_PERL_FOO_PREFER_INSTALLER, + specifies the preferred installation method. Possible values are + EUMM (for Makefile.PL based installation using + ExtUtils-MakeMaker) and MB (for Build.PL based installation using + Module-Build). This variable is only used when the package + provides both installation methods. + * PERL_FOO_CONF_ENV/HOST_PERL_FOO_CONF_ENV, to specify additional + environment variables to pass to the perl Makefile.PL or perl + Build.PL. By default, empty. + * PERL_FOO_CONF_OPTS/HOST_PERL_FOO_CONF_OPTS, to specify additional + configure options to pass to the perl Makefile.PL or perl + Build.PL. By default, empty. + * PERL_FOO_BUILD_OPTS/HOST_PERL_FOO_BUILD_OPTS, to specify + additional options to pass to make pure_all or perl Build build + in the build step. By default, empty. + * PERL_FOO_INSTALL_TARGET_OPTS, to specify additional options to + pass to make pure_install or perl Build install in the install + step. By default, empty. + * HOST_PERL_FOO_INSTALL_OPTS, to specify additional options to pass + to make pure_install or perl Build install in the install step. + By default, empty. + +17.11. Infrastructure for virtual packages + +In Buildroot, a virtual package is a package whose functionalities +are provided by one or more packages, referred to as providers. The +virtual package management is an extensible mechanism allowing the +user to choose the provider used in the rootfs. + +For example, OpenGL ES is an API for 2D and 3D graphics on embedded +systems. The implementation of this API is different for the +Allwinner Tech Sunxi and the Texas Instruments OMAP35xx platforms. So +libgles will be a virtual package and sunxi-mali and ti-gfx will be +the providers. + +17.11.1. virtual-package tutorial + +In the following example, we will explain how to add a new virtual +package (something-virtual) and a provider for it (some-provider). + +First, let’s create the virtual package. + +17.11.2. Virtual package’s Config.in file + +The Config.in file of virtual package something-virtual should +contain: + +01: config BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +02: bool +03: +04: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL +05: depends on BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +06: string + +In this file, we declare two options, +BR2_PACKAGE_HAS_SOMETHING_VIRTUAL and +BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL, whose values will be used by +the providers. + +17.11.3. Virtual package’s .mk file + +The .mk for the virtual package should just evaluate the +virtual-package macro: + +01: ################################################################################ +02: # +03: # something-virtual +04: # +05: ################################################################################ +06: +07: $(eval $(virtual-package)) + +The ability to have target and host packages is also available, with +the host-virtual-package macro. + +17.11.4. Provider’s Config.in file + +When adding a package as a provider, only the Config.in file requires +some modifications. + +The Config.in file of the package some-provider, which provides the +functionalities of something-virtual, should contain: + +01: config BR2_PACKAGE_SOME_PROVIDER +02: bool "some-provider" +03: select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL +04: help +05: This is a comment that explains what some-provider is. +06: +07: http://foosoftware.org/some-provider/ +08: +09: if BR2_PACKAGE_SOME_PROVIDER +10: config BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL +11: default "some-provider" +12: endif + +On line 3, we select BR2_PACKAGE_HAS_SOMETHING_VIRTUAL, and on line +11, we set the value of BR2_PACKAGE_PROVIDES_SOMETHING_VIRTUAL to the +name of the provider, but only if it is selected. + +17.11.5. Provider’s .mk file + +The .mk file should also declare an additional variable +SOME_PROVIDER_PROVIDES to contain the names of all the virtual +packages it is an implementation of: + +01: SOME_PROVIDER_PROVIDES = something-virtual + +Of course, do not forget to add the proper build and runtime +dependencies for this package! + +17.11.6. Notes on depending on a virtual package + +When adding a package that requires a certain FEATURE provided by a +virtual package, you have to use depends on BR2_PACKAGE_HAS_FEATURE, +like so: + +config BR2_PACKAGE_HAS_FEATURE + bool + +config BR2_PACKAGE_FOO + bool "foo" + depends on BR2_PACKAGE_HAS_FEATURE + +17.11.7. Notes on depending on a specific provider + +If your package really requires a specific provider, then you’ll have +to make your package depends on this provider; you can not select a +provider. + +Let’s take an example with two providers for a FEATURE: + +config BR2_PACKAGE_HAS_FEATURE + bool + +config BR2_PACKAGE_FOO + bool "foo" + select BR2_PACKAGE_HAS_FEATURE + +config BR2_PACKAGE_BAR + bool "bar" + select BR2_PACKAGE_HAS_FEATURE + +And you are adding a package that needs FEATURE as provided by foo, +but not as provided by bar. + +If you were to use select BR2_PACKAGE_FOO, then the user would still +be able to select BR2_PACKAGE_BAR in the menuconfig. This would +create a configuration inconsistency, whereby two providers of the +same FEATURE would be enabled at once, one explicitly set by the +user, the other implicitly by your select. + +Instead, you have to use depends on BR2_PACKAGE_FOO, which avoids any +implicit configuration inconsistency. + +17.12. Infrastructure for packages using kconfig for configuration +files + +A popular way for a software package to handle user-specified +configuration is kconfig. Among others, it is used by the Linux +kernel, Busybox, and Buildroot itself. The presence of a .config file +and a menuconfig target are two well-known symptoms of kconfig being +used. + +Buildroot features an infrastructure for packages that use kconfig +for their configuration. This infrastructure provides the necessary +logic to expose the package’s menuconfig target as foo-menuconfig in +Buildroot, and to handle the copying back and forth of the +configuration file in a correct way. + +The kconfig-package infrastructure is based on the generic-package +infrastructure. All variables supported by generic-package are +available in kconfig-package as well. See Section 17.5.2, +“generic-package reference” for more details. + +In order to use the kconfig-package infrastructure for a Buildroot +package, the minimally required lines in the .mk file, in addition to +the variables required by the generic-package infrastructure, are: + +FOO_KCONFIG_FILE = reference-to-source-configuration-file + +$(eval $(kconfig-package)) + +This snippet creates the following make targets: + + * foo-menuconfig, which calls the package’s menuconfig target + * foo-update-config, which copies the configuration back to the + source configuration file. It is not possible to use this target + when fragment files are set. + * foo-update-defconfig, which copies the configuration back to the + source configuration file. The configuration file will only list + the options that differ from the default values. It is not + possible to use this target when fragment files are set. + +and ensures that the source configuration file is copied to the build +directory at the right moment. + +There are two options to specify a configuration file to use, either +FOO_KCONFIG_FILE (as in the example, above) or FOO_KCONFIG_DEFCONFIG. +It is mandatory to provide either, but not both: + + * FOO_KCONFIG_FILE specifies the path to a defconfig or full-config + file to be used to configure the package. + * FOO_KCONFIG_DEFCONFIG specifies the defconfig make rule to call + to configure the package. + +In addition to these minimally required lines, several optional +variables can be set to suit the needs of the package under +consideration: + + * FOO_KCONFIG_EDITORS: a space-separated list of kconfig editors to + support, for example menuconfig xconfig. By default, menuconfig. + * FOO_KCONFIG_FRAGMENT_FILES: a space-separated list of + configuration fragment files that are merged to the main + configuration file. Fragment files are typically used when there + is a desire to stay in sync with an upstream (def)config file, + with some minor modifications. + * FOO_KCONFIG_OPTS: extra options to pass when calling the kconfig + editors. This may need to include $(FOO_MAKE_OPTS), for example. + By default, empty. + * FOO_KCONFIG_FIXUP_CMDS: a list of shell commands needed to fixup + the configuration file after copying it or running a kconfig + editor. Such commands may be needed to ensure a configuration + consistent with other configuration of Buildroot, for example. By + default, empty. + * FOO_KCONFIG_DOTCONFIG: path (with filename) of the .config file, + relative to the package source tree. The default, .config, should + be well suited for all packages that use the standard kconfig + infrastructure as inherited from the Linux kernel; some packages + use a derivative of kconfig that use a different location. + +17.13. Infrastructure for rebar-based packages + +17.13.1. rebar-package tutorial + +First, let’s see how to write a .mk file for a rebar-based package, +with an example : + +01: ################################################################################ +02: # +03: # erlang-foobar +04: # +05: ################################################################################ +06: +07: ERLANG_FOOBAR_VERSION = 1.0 +08: ERLANG_FOOBAR_SOURCE = erlang-foobar-$(ERLANG_FOOBAR_VERSION).tar.xz +09: ERLANG_FOOBAR_SITE = http://www.foosoftware.org/download +10: ERLANG_FOOBAR_DEPENDENCIES = host-libaaa libbbb +11: +12: $(eval $(rebar-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we declare our dependencies, so that they are built +before the build process of our package starts. + +Finally, on line 12, we invoke the rebar-package macro that generates +all the Makefile rules that actually allows the package to be built. + +17.13.2. rebar-package reference + +The main macro of the rebar package infrastructure is rebar-package. +It is similar to the generic-package macro. The ability to have host +packages is also available, with the host-rebar-package macro. + +Just like the generic infrastructure, the rebar infrastructure works +by defining a number of variables before calling the rebar-package +macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the rebar infrastructure: +ERLANG_FOOBAR_VERSION, ERLANG_FOOBAR_SOURCE, ERLANG_FOOBAR_PATCH, +ERLANG_FOOBAR_SITE, ERLANG_FOOBAR_SUBDIR, ERLANG_FOOBAR_DEPENDENCIES, +ERLANG_FOOBAR_INSTALL_STAGING, ERLANG_FOOBAR_INSTALL_TARGET, +ERLANG_FOOBAR_LICENSE and ERLANG_FOOBAR_LICENSE_FILES. + +A few additional variables, specific to the rebar infrastructure, can +also be defined. Many of them are only useful in very specific cases, +typical packages will therefore only use a few of them. + + * ERLANG_FOOBAR_USE_AUTOCONF, to specify that the package uses + autoconf at the configuration step. When a package sets this + variable to YES, the autotools infrastructure is used. + + Note. You can also use some of the variables from the autotools + infrastructure: ERLANG_FOOBAR_CONF_ENV, ERLANG_FOOBAR_CONF_OPTS, + ERLANG_FOOBAR_AUTORECONF, ERLANG_FOOBAR_AUTORECONF_ENV and + ERLANG_FOOBAR_AUTORECONF_OPTS. + + * ERLANG_FOOBAR_USE_BUNDLED_REBAR, to specify that the package has + a bundled version of rebar and that it shall be used. Valid + values are YES or NO (the default). + + Note. If the package bundles a rebar utility, but can use the + generic one that Buildroot provides, just say NO (i.e., do not + specify this variable). Only set if it is mandatory to use the + rebar utility bundled in this package. + + * ERLANG_FOOBAR_REBAR_ENV, to specify additional environment + variables to pass to the rebar utility. + +With the rebar infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most rebar-based packages. However, when required, it is +still possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Section 17.20, “Hooks available in the + various build steps” for details. + * By overriding one of the steps. For example, even if the rebar + infrastructure is used, if the package .mk file defines its own + ERLANG_FOOBAR_BUILD_CMDS variable, it will be used instead of the + default rebar one. However, using this method should be + restricted to very specific cases. Do not use it in the general + case. + +17.14. Infrastructure for Waf-based packages + +17.14.1. waf-package tutorial + +First, let’s see how to write a .mk file for a Waf-based package, +with an example : + +01: ################################################################################ +02: # +03: # libfoo +04: # +05: ################################################################################ +06: +07: LIBFOO_VERSION = 1.0 +08: LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz +09: LIBFOO_SITE = http://www.foosoftware.org/download +10: LIBFOO_CONF_OPTS = --enable-bar --disable-baz +11: LIBFOO_DEPENDENCIES = bar +12: +13: $(eval $(waf-package)) + +On line 7, we declare the version of the package. + +On line 8 and 9, we declare the name of the tarball (xz-ed tarball +recommended) and the location of the tarball on the Web. Buildroot +will automatically download the tarball from this location. + +On line 10, we tell Buildroot what options to enable for libfoo. + +On line 11, we tell Buildroot the depednencies of libfoo. + +Finally, on line line 13, we invoke the waf-package macro that +generates all the Makefile rules that actually allows the package to +be built. + +17.14.2. waf-package reference + +The main macro of the Waf package infrastructure is waf-package. It +is similar to the generic-package macro. + +Just like the generic infrastructure, the Waf infrastructure works by +defining a number of variables before calling the waf-package macro. + +First, all the package metadata information variables that exist in +the generic infrastructure also exist in the Waf infrastructure: +LIBFOO_VERSION, LIBFOO_SOURCE, LIBFOO_PATCH, LIBFOO_SITE, +LIBFOO_SUBDIR, LIBFOO_DEPENDENCIES, LIBFOO_INSTALL_STAGING, +LIBFOO_INSTALL_TARGET. + +An additional variable, specific to the Waf infrastructure, can also +be defined. + + * LIBFOO_NEEDS_EXTERNAL_WAF can be set to YES or NO to tell + Buildroot to use the bundled waf executable. If set to NO, the + default, then Buildroot will use the waf executable provided in + the package source tree; if set to YES, then Buidlroot will + download, install waf as a host tool and use it to build the + package. + * LIBFOO_WAF_OPTS, to specify additional options to pass to the waf + script at every step of the package build process: configure, + build and installation. By default, empty. + * LIBFOO_CONF_OPTS, to specify additional options to pass to the + waf script for the configuration step. By default, empty. + * LIBFOO_BUILD_OPTS, to specify additional options to pass to the + waf script during the build step. By default, empty. + * LIBFOO_INSTALL_STAGING_OPTS, to specify additional options to + pass to the waf script during the staging installation step. By + default, empty. + * LIBFOO_INSTALL_TARGET_OPTS, to specify additional options to pass + to the waf script during the target installation step. By + default, empty. + +17.15. Integration of Meson-based packages + +17.15.1. meson-package tutorial + +Meson [http://mesonbuild.com] is an open source build system meant to +be both extremely fast, and, even more importantly, as user friendly +as possible. + +Buildroot does not (yet) provide a dedicated package infrastructure +for meson-based packages. So, we will explain how to write a .mk file +for such a package. Let’s start with an example: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-3.0+ +11: FOO_LICENSE_FILES = COPYING +12: FOO_INSTALL_STAGING = YES +13: +14: FOO_DEPENDENCIES = host-meson host-pkgconf bar +15: +16: FOO_CONF_OPTS += \ +17: --prefix=/usr \ +18: --buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \ +19: --cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf +20: +21: FOO_NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) +22: +23: ifeq ($(BR2_PACKAGE_BAZ),y) +24: FOO_CONF_OPTS += -Dbaz +25: endif +26: +27: define FOO_CONFIGURE_CMDS +28: rm -rf $(@D)/build +29: mkdir -p $(@D)/build +30: $(TARGET_MAKE_ENV) meson $(FOO_CONF_OPTS) $(@D) $(@D)/build +31: endef +32: +33: define FOO_BUILD_CMDS +34: $(TARGET_MAKE_ENV) ninja $(FOO_NINJA_OPTS) -C $(@D)/build +35: endef +36: +37: define FOO_INSTALL_TARGET_CMDS +38: $(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) ninja $(FOO_NINJA_OPTS) \ +39: -C $(@D)/build install +40: endef +41: +42: define FOO_INSTALL_STAGING_CMDS +43: $(TARGET_MAKE_ENV) DESTDIR=$(STAGING_DIR) ninja $(FOO_NINJA_OPTS) \ +44: -C $(@D)/build install +45: endef +46: +47: $(eval $(generic-package)) + +The Makefile starts with the definition of the standard variables for +package declaration (lines 7 to 11). + +As seen in line 47, it is based on the generic-package infrastructure +Section 17.5.1, “generic-package tutorial”. So, it defines the +variables required by this particular infrastructure, where Meson and +its companion tool, Ninja, are invoked: + + * FOO_CONFIGURE_CMDS: the build directory required by Meson is + created, and Meson is invoked to generate the Ninja build file. + The options required to configure the cross-compilation of the + package are passed via FOO_CONF_OPTS. + * FOO_BUILD_CMDS: Ninja is invoked to perform the build. + * FOO_INSTALL_TARGET_CMDS: Ninja is invoked to install the files + generated during the build step in the target directory. + * FOO_INSTALL_STAGING_CMDS: Ninja is invoked to install the files + generated during the build step in the staging directory, as + FOO_INSTALL_STAGING is set to "YES". + +In order to have Meson available for the build, FOO_DEPENDENCIES +needs to contain host-meson. In the example, host-pkgconf and bar are +also declared as dependencies because the Meson build file of foo +uses pkg-config to determine the compilation flags and libraries of +package bar. + +If the "baz" package is selected, then support for the "baz" feature +in "foo" is activated by adding -Dbaz to FOO_CONF_OPTS, as specified +in the meson_options.txt file in "foo" source tree. + +To sum it up, to add a new meson-based package, the Makefile example +can be copied verbatim then edited to replace all occurences of FOO +with the uppercase name of the new package and update the values of +the standard variables. + +17.16. Integration of Cargo-based packages + +Cargo is the package manager for the Rust programming language. It +allows the user to build programs or libraries written in Rust, but +it also downloads and manages their dependencies, to ensure +repeatable builds. Cargo packages are called "crates". + +17.16.1. Cargo-based package’s Config.in file + +The Config.in file of Cargo-based package foo should contain: + +01: config BR2_PACKAGE_FOO +02: bool "foo" +03: depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS +04: select BR2_PACKAGE_HOST_CARGO +05: help +06: This is a comment that explains what foo is. +07: +08: http://foosoftware.org/foo/ + +17.16.2. Cargo-based package’s .mk file + +Buildroot does not (yet) provide a dedicated package infrastructure +for Cargo-based packages. So, we will explain how to write a .mk file +for such a package. Let’s start with an example: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.0 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-3.0+ +11: FOO_LICENSE_FILES = COPYING +12: +13: FOO_DEPENDENCIES = host-cargo +14: +15: FOO_CARGO_ENV = CARGO_HOME=$(HOST_DIR)/share/cargo +16: FOO_CARGO_MODE = $(if $(BR2_ENABLE_DEBUG),debug,release) +17: +18: FOO_BIN_DIR = target/$(RUSTC_TARGET_NAME)/$(FOO_CARGO_MODE) +19: +20: FOO_CARGO_OPTS = \ +21: --$(FOO_CARGO_MODE) \ +22: --target=$(RUSTC_TARGET_NAME) \ +23: --manifest-path=$(@D)/Cargo.toml +24: +25: define FOO_BUILD_CMDS +26: $(TARGET_MAKE_ENV) $(FOO_CARGO_ENV) \ +27: cargo build $(FOO_CARGO_OPTS) +28: endef +29: +30: define FOO_INSTALL_TARGET_CMDS +31: $(INSTALL) -D -m 0755 $(@D)/$(FOO_BIN_DIR)/foo \ +32: $(TARGET_DIR)/usr/bin/foo +33: endef +34: +35: $(eval $(generic-package)) + +The Makefile starts with the definition of the standard variables for +package declaration (lines 7 to 11). + +As seen in line 35, it is based on the generic-package infrastructure +Section 17.5.1, “generic-package tutorial”. So, it defines the +variables required by this particular infrastructure, where Cargo is +invoked: + + * FOO_BUILD_CMDS: Cargo is invoked to perform the build. The + options required to configure the cross-compilation of the + package are passed via FOO_CONF_OPTS. + * FOO_INSTALL_TARGET_CMDS: The binary executable generated is + installed on the target. + +In order to have Cargo available for the build, FOO_DEPENDENCIES +needs to contain host-cargo. + +To sum it up, to add a new Cargo-based package, the Makefile example +can be copied verbatim then edited to replace all occurences of FOO +with the uppercase name of the new package and update the values of +the standard variables. + +17.16.3. About Dependencies Management + +A crate can depend on other libraries from crates.io or git +repositories, listed in its Cargo.toml file. Before starting a build, +Cargo usually downloads automatically them. This step can also be +performed independently, via the cargo fetch command. + +Cargo maintains a local cache of the registry index and of git +checkouts of the crates, whose location is given by $CARGO_HOME. As +seen in the package Makefile example at line 15, this environment +variable is set to $(HOST_DIR)/share/cargo. + +This dependency download mechanism is not convenient when performing +an offline build, as Cargo will fail to fetch the dependencies. In +that case, it is advised to generate a tarball of the dependencies +using the cargo vendor and add it to FOO_EXTRA_DOWNLOADS. + +17.17. Infrastructure for packages building kernel modules + +Buildroot offers a helper infrastructure to make it easy to write +packages that build and install Linux kernel modules. Some packages +only contain a kernel module, other packages contain programs and +libraries in addition to kernel modules. Buildroot’s helper +infrastructure supports either case. + +17.17.1. kernel-module tutorial + +Let’s start with an example on how to prepare a simple package that +only builds a kernel module, and no other component: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.2.3 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-2.0 +11: FOO_LICENSE_FILES = COPYING +12: +13: $(eval $(kernel-module)) +14: $(eval $(generic-package)) + +Lines 7-11 define the usual meta-data to specify the version, archive +name, remote URI where to find the package source, licensing +information. + +On line 13, we invoke the kernel-module helper infrastructure, that +generates all the appropriate Makefile rules and variables to build +that kernel module. + +Finally, on line 14, we invoke the generic-package infrastructure +Section 17.5.1, “generic-package tutorial”. + +The dependency on linux is automatically added, so it is not needed +to specify it in FOO_DEPENDENCIES. + +What you may have noticed is that, unlike other package +infrastructures, we explicitly invoke a second infrastructure. This +allows a package to build a kernel module, but also, if needed, use +any one of other package infrastructures to build normal userland +components (libraries, executables…). Using the kernel-module +infrastructure on its own is not sufficient; another package +infrastructure must be used. + +Let’s look at a more complex example: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: FOO_VERSION = 1.2.3 +08: FOO_SOURCE = foo-$(FOO_VERSION).tar.xz +09: FOO_SITE = http://www.foosoftware.org/download +10: FOO_LICENSE = GPL-2.0 +11: FOO_LICENSE_FILES = COPYING +12: +13: FOO_MODULE_SUBDIRS = driver/base +14: FOO_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED) +15: +16: ifeq ($(BR2_PACKAGE_LIBBAR),y) +17: FOO_DEPENDENCIES = libbar +18: FOO_CONF_OPTS = --enable-bar +19: FOO_MODULE_SUBDIRS += driver/bar +20: else +21: FOO_CONF_OPTS = --disable-bar +22: endif +23: +24: $(eval $(kernel-module)) +26: $(eval $(autotools-package)) + +Here, we see that we have an autotools-based package, that also +builds the kernel module located in sub-directory driver/base and, if +libbar is enabled, the kernel module located in sub-directory driver/ +bar, and defines the variable KVERSION to be passed to the Linux +buildsystem when building the module(s). + +17.17.2. kernel-module reference + +The main macro for the kernel module infrastructure is kernel-module. +Unlike other package infrastructures, it is not stand-alone, and +requires any of the other *-package macros be called after it. + +The kernel-module macro defines post-build and post-target-install +hooks to build the kernel modules. If the package’s .mk needs access +to the built kernel modules, it should do so in a post-build hook, +registered after the call to kernel-module. Similarly, if the +package’s .mk needs access to the kernel module after it has been +installed, it should do so in a post-install hook, registered after +the call to kernel-module. Here’s an example: + +$(eval $(kernel-module)) + +define FOO_DO_STUFF_WITH_KERNEL_MODULE + # Do something with it... +endef +FOO_POST_BUILD_HOOKS += FOO_DO_STUFF_WITH_KERNEL_MODULE + +$(eval $(generic-package)) + +Finally, unlike the other package infrastructures, there is no +host-kernel-module variant to build a host kernel module. + +The following additional variables can optionally be defined to +further configure the build of the kernel module: + + * FOO_MODULE_SUBDIRS may be set to one or more sub-directories + (relative to the package source top-directory) where the kernel + module sources are. If empty or not set, the sources for the + kernel module(s) are considered to be located at the top of the + package source tree. + * FOO_MODULE_MAKE_OPTS may be set to contain extra variable + definitions to pass to the Linux buildsystem. + +You may also reference (but you may not set!) those variables: + + * LINUX_DIR contains the path to where the Linux kernel has been + extracted and built. + * LINUX_VERSION contains the version string as configured by the + user. + * LINUX_VERSION_PROBED contains the real version string of the + kernel, retrieved with running make -C $(LINUX_DIR) kernelrelease + * KERNEL_ARCH contains the name of the current architecture, like + arm, mips… + +17.18. Infrastructure for asciidoc documents + +The Buildroot manual, which you are currently reading, is entirely +written using the AsciiDoc [http://asciidoc.org/] mark-up syntax. The +manual is then rendered to many formats: + + * html + * split-html + * pdf + * epub + * text + +Although Buildroot only contains one document written in AsciiDoc, +there is, as for packages, an infrastructure for rendering documents +using the AsciiDoc syntax. + +Also as for packages, the AsciiDoc infrastructure is available from a +br2-external tree Section 9.2, “Keeping customizations outside of +Buildroot”. This allows documentation for a br2-external tree to +match the Buildroot documentation, as it will be rendered to the same +formats and use the same layout and theme. + +17.18.1. asciidoc-document tutorial + +Whereas package infrastructures are suffixed with -package, the +document infrastructures are suffixed with -document. So, the +AsciiDoc infrastructure is named asciidoc-document. + +Here is an example to render a simple AsciiDoc document. + +01: ################################################################################ +02: # +03: # foo-document +04: # +05: ################################################################################ +06: +07: FOO_SOURCES = $(sort $(wildcard $(pkgdir)/*)) +08: $(eval $(call asciidoc-document)) + +On line 7, the Makefile declares what the sources of the document +are. Currently, it is expected that the document’s sources are only +local; Buildroot will not attempt to download anything to render a +document. Thus, you must indicate where the sources are. Usually, the +string above is sufficient for a document with no sub-directory +structure. + +On line 8, we call the asciidoc-document function, which generates +all the Makefile code necessary to render the document. + +17.18.2. asciidoc-document reference + +The list of variables that can be set in a .mk file to give metadata +information is (assuming the document name is foo) : + + * FOO_SOURCES, mandatory, defines the source files for the + document. + * FOO_RESOURCES, optional, may contain a space-separated list of + paths to one or more directories containing so-called resources + (like CSS or images). By default, empty. + * FOO_DEPENDENCIES, optional, the list of packages (most probably, + host-packages) that must be built before building this document. + If a hook of your document needs to access the Kconfig structure, + you may add prepare-kconfig to the list of dependencies. + +There are also additional hooks (see Section 17.20, “Hooks available +in the various build steps” for general information on hooks), that a +document may set to define extra actions to be done at various steps: + + * FOO_POST_RSYNC_HOOKS to run additional commands after the sources + have been copied by Buildroot. This can for example be used to + generate part of the manual with information extracted from the + tree. As an example, Buildroot uses this hook to generate the + tables in the appendices. + * FOO_CHECK_DEPENDENCIES_HOOKS to run additional tests on required + components to generate the document. In AsciiDoc, it is possible + to call filters, that is, programs that will parse an AsciiDoc + block and render it appropriately (e.g. ditaa [http:// + ditaa.sourceforge.net/] or aafigure [https://pythonhosted.org/ + aafigure/]). + * FOO_CHECK_DEPENDENCIES__HOOKS, to run additional tests for + the specified format (see the list of rendered formats, + above). + +Here is a complete example that uses all variables and all hooks: + +01: ################################################################################ +02: # +03: # foo-document +04: # +05: ################################################################################ +06: +07: FOO_SOURCES = $(sort $(wildcard $(pkgdir)/*)) +08: FOO_RESOURCES = $(sort $(wildcard $(pkgdir)/ressources)) +09: +10: define FOO_GEN_EXTRA_DOC +11: /path/to/generate-script --outdir=$(@D) +12: endef +13: FOO_POST_RSYNC_HOOKS += FOO_GEN_EXTRA_DOC +14: +15: define FOO_CHECK_MY_PROG +16: if ! which my-prog >/dev/null 2>&1; then \ +17: echo "You need my-prog to generate the foo document"; \ +18: exit 1; \ +19: fi +20: endef +21: FOO_CHECK_DEPENDENCIES_HOOKS += FOO_CHECK_MY_PROG +22: +23: define FOO_CHECK_MY_OTHER_PROG +24: if ! which my-other-prog >/dev/null 2>&1; then \ +25: echo "You need my-other-prog to generate the foo document as PDF"; \ +26: exit 1; \ +27: fi +28: endef +29: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG +30: +31: $(eval $(call asciidoc-document)) + +17.19. Infrastructure specific to the Linux kernel package + +The Linux kernel package can use some specific infrastructures based +on package hooks for building Linux kernel tools or/and building +Linux kernel extensions. + +17.19.1. linux-kernel-tools + +Buildroot offers a helper infrastructure to build some userspace +tools for the target available within the Linux kernel sources. Since +their source code is part of the kernel source code, a special +package, linux-tools, exists and re-uses the sources of the Linux +kernel that runs on the target. + +Let’s look at an example of a Linux tool. For a new Linux tool named +foo, create a new menu entry in the existing package/linux-tools/ +Config.in. This file will contain the option descriptions related to +each kernel tool that will be used and displayed in the configuration +tool. It would basically look like: + +01: config BR2_PACKAGE_LINUX_TOOLS_FOO +02: bool "foo" +03: select BR2_PACKAGE_LINUX_TOOLS +04: help +05: This is a comment that explains what foo kernel tool is. +06: +07: http://foosoftware.org/foo/ + +The name of the option starts with the prefix +BR2_PACKAGE_LINUX_TOOLS_, followed by the uppercase name of the tool +(like is done for packages). + +Note. Unlike other packages, the linux-tools package options appear +in the linux kernel menu, under the Linux Kernel Tools sub-menu, not +under the Target packages main menu. + +Then for each linux tool, add a new .mk.in file named package/ +linux-tools/linux-tool-foo.mk.in. It would basically look like: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: LINUX_TOOLS += foo +08: +09: FOO_DEPENDENCIES = libbbb +10: +11: define FOO_BUILD_CMDS +12: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools foo +13: endef +14: +15: define FOO_INSTALL_STAGING_CMDS +16: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +17: DESTDIR=$(STAGING_DIR) \ +18: foo_install +19: endef +20: +21: define FOO_INSTALL_TARGET_CMDS +22: $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ +23: DESTDIR=$(TARGET_DIR) \ +24: foo_install +25: endef + +On line 7, we register the Linux tool foo to the list of available +Linux tools. + +On line 9, we specify the list of dependencies this tool relies on. +These dependencies are added to the Linux package dependencies list +only when the foo tool is selected. + +The rest of the Makefile, lines 11-25 defines what should be done at +the different steps of the Linux tool build process like for a +generic package Section 17.5.1, “generic-package tutorial”. They will +actually be used only when the foo tool is selected. The only +supported commands are _BUILD_CMDS, _INSTALL_STAGING_CMDS and +_INSTALL_TARGET_CMDS. + +Note. One must not call $(eval $(generic-package)) or any other +package infrastructure! Linux tools are not packages by themselves, +they are part of the linux-tools package. + +17.19.2. linux-kernel-extensions + +Some packages provide new features that require the Linux kernel tree +to be modified. This can be in the form of patches to be applied on +the kernel tree, or in the form of new files to be added to the tree. +The Buildroot’s Linux kernel extensions infrastructure provides a +simple solution to automatically do this, just after the kernel +sources are extracted and before the kernel patches are applied. +Examples of extensions packaged using this mechanism are the +real-time extensions Xenomai and RTAI, as well as the set of +out-of-tree LCD screens drivers fbtft. + +Let’s look at an example on how to add a new Linux extension foo. + +First, create the package foo that provides the extension: this +package is a standard package; see the previous chapters on how to +create such a package. This package is in charge of downloading the +sources archive, checking the hash, defining the licence informations +and building user space tools if any. + +Then create the Linux extension proper: create a new menu entry in +the existing linux/Config.ext.in. This file contains the option +descriptions related to each kernel extension that will be used and +displayed in the configuration tool. It would basically look like: + +01: config BR2_LINUX_KERNEL_EXT_FOO +02: bool "foo" +03: help +04: This is a comment that explains what foo kernel extension is. +05: +06: http://foosoftware.org/foo/ + +Then for each linux extension, add a new .mk file named linux/ +linux-ext-foo.mk. It should basically contain: + +01: ################################################################################ +02: # +03: # foo +04: # +05: ################################################################################ +06: +07: LINUX_EXTENSIONS += foo +08: +09: define FOO_PREPARE_KERNEL +10: $(FOO_DIR)/prepare-kernel-tree.sh --linux-dir=$(@D) +11: endef + +On line 7, we add the Linux extension foo to the list of available +Linux extensions. + +On line 9-11, we define what should be done by the extension to +modify the Linux kernel tree; this is specific to the linux extension +and can use the variables defined by the foo package, like: $ +(FOO_DIR) or $(FOO_VERSION)… as well as all the Linux variables, +like: $(LINUX_VERSION) or $(LINUX_VERSION_PROBED), $(KERNEL_ARCH)… +See the definition of those kernel variables Section 17.17.2, +“kernel-module reference”. + +17.20. Hooks available in the various build steps + +The generic infrastructure (and as a result also the derived +autotools and cmake infrastructures) allow packages to specify hooks. +These define further actions to perform after existing steps. Most +hooks aren’t really useful for generic packages, since the .mk file +already has full control over the actions performed in each step of +the package construction. + +The following hook points are available: + + * LIBFOO_PRE_DOWNLOAD_HOOKS + * LIBFOO_POST_DOWNLOAD_HOOKS + * LIBFOO_PRE_EXTRACT_HOOKS + * LIBFOO_POST_EXTRACT_HOOKS + * LIBFOO_PRE_RSYNC_HOOKS + * LIBFOO_POST_RSYNC_HOOKS + * LIBFOO_PRE_PATCH_HOOKS + * LIBFOO_POST_PATCH_HOOKS + * LIBFOO_PRE_CONFIGURE_HOOKS + * LIBFOO_POST_CONFIGURE_HOOKS + * LIBFOO_PRE_BUILD_HOOKS + * LIBFOO_POST_BUILD_HOOKS + * LIBFOO_PRE_INSTALL_HOOKS (for host packages only) + * LIBFOO_POST_INSTALL_HOOKS (for host packages only) + * LIBFOO_PRE_INSTALL_STAGING_HOOKS (for target packages only) + * LIBFOO_POST_INSTALL_STAGING_HOOKS (for target packages only) + * LIBFOO_PRE_INSTALL_TARGET_HOOKS (for target packages only) + * LIBFOO_POST_INSTALL_TARGET_HOOKS (for target packages only) + * LIBFOO_PRE_INSTALL_IMAGES_HOOKS + * LIBFOO_POST_INSTALL_IMAGES_HOOKS + * LIBFOO_PRE_LEGAL_INFO_HOOKS + * LIBFOO_POST_LEGAL_INFO_HOOKS + +These variables are lists of variable names containing actions to be +performed at this hook point. This allows several hooks to be +registered at a given hook point. Here is an example: + +define LIBFOO_POST_PATCH_FIXUP + action1 + action2 +endef + +LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP + +17.20.1. Using the POST_RSYNC hook + +The POST_RSYNC hook is run only for packages that use a local source, +either through the local site method or the OVERRIDE_SRCDIR +mechanism. In this case, package sources are copied using rsync from +the local location into the buildroot build directory. The rsync +command does not copy all files from the source directory, though. +Files belonging to a version control system, like the directories +.git, .hg, etc. are not copied. For most packages this is sufficient, +but a given package can perform additional actions using the +POST_RSYNC hook. + +In principle, the hook can contain any command you want. One specific +use case, though, is the intentional copying of the version control +directory using rsync. The rsync command you use in the hook can, +among others, use the following variables: + + * $(SRCDIR): the path to the overridden source directory + * $(@D): the path to the build directory + +17.20.2. Target-finalize hook + +Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. +These hooks are run after all packages are built, but before the +filesystem images are generated. They are seldom used, and your +package probably do not need them. + +17.21. Gettext integration and interaction with packages + +Many packages that support internationalization use the gettext +library. Dependencies for this library are fairly complicated and +therefore, deserve some explanation. + +The glibc C library integrates a full-blown implementation of gettext +, supporting translation. Native Language Support is therefore +built-in in glibc. + +On the other hand, the uClibc and musl C libraries only provide a +stub implementation of the gettext functionality, which allows to +compile libraries and programs using gettext functions, but without +providing the translation capabilities of a full-blown gettext +implementation. With such C libraries, if real Native Language +Support is necessary, it can be provided by the libintl library of +the gettext package. + +Due to this, and in order to make sure that Native Language Support +is properly handled, packages in Buildroot that can use NLS support +should: + + 1. Ensure NLS support is enabled when BR2_SYSTEM_ENABLE_NLS=y. This + is done automatically for autotools packages and therefore should + only be done for packages using other package infrastructures. + 2. Add $(TARGET_NLS_DEPENDENCIES) to the package _DEPENDENCIES + variable. This addition should be done unconditionally: the value + of this variable is automatically adjusted by the core + infrastructure to contain the relevant list of packages. If NLS + support is disabled, this variable is empty. If NLS support is + enabled, this variable contains host-gettext so that tools needed + to compile translation files are available on the host. In + addition, if uClibc or musl are used, this variable also contains + gettext in order to get the full-blown gettext implementation. + 3. If needed, add $(TARGET_NLS_LIBS) to the linker flags, so that + the package gets linked with libintl. This is generally not + needed with autotools packages as they usually detect + automatically that they should link with libintl. However, + packages using other build systems, or problematic + autotools-based packages may need this. $(TARGET_NLS_LIBS) should + be added unconditionally to the linker flags, as the core + automatically makes it empty or defined to -lintl depending on + the configuration. + +No changes should be made to the Config.in file to support NLS. + +Finally, certain packages need some gettext utilities on the target, +such as the gettext program itself, which allows to retrieve +translated strings, from the command line. In such a case, the +package should: + + * use select BR2_PACKAGE_GETTEXT in their Config.in file, + indicating in a comment above that it’s a runtime dependency + only. + * not add any gettext dependency in the DEPENDENCIES variable of + their .mk file. + +17.22. Tips and tricks + +17.22.1. Package name, config entry name and makefile variable +relationship + +In Buildroot, there is some relationship between: + + * the package name, which is the package directory name (and the + name of the *.mk file); + * the config entry name that is declared in the Config.in file; + * the makefile variable prefix. + +It is mandatory to maintain consistency between these elements, using +the following rules: + + * the package directory and the *.mk name are the package name + itself (e.g.: package/foo-bar_boo/foo-bar_boo.mk); + * the make target name is the package name itself (e.g.: + foo-bar_boo); + * the config entry is the upper case package name with . and - + characters substituted with _, prefixed with BR2_PACKAGE_ (e.g.: + BR2_PACKAGE_FOO_BAR_BOO); + * the *.mk file variable prefix is the upper case package name with + . and - characters substituted with _ (e.g.: + FOO_BAR_BOO_VERSION). + +17.22.2. How to test your package + +Once you have added your new package, it is important that you test +it under various conditions: does it build for all architectures? +Does it build with the different C libraries? Does it need threads, +NPTL? And so on… + +Buildroot runs autobuilders [http://autobuild.buildroot.org/] which +continuously test random configurations. However, these only build +the master branch of the git tree, and your new fancy package is not +yet there. + +Buildroot provides a script in utils/test-pkg that uses the same base +configurations as used by the autobuilders so you can test your +package in the same conditions. + +First, create a config snippet that contains all the necessary +options needed to enable your package, but without any architecture +or toolchain option. For example, let’s create a config snippet that +just enables libcurl, without any TLS backend: + +$ cat libcurl.config +BR2_PACKAGE_LIBCURL=y + +If your package needs more configuration options, you can add them to +the config snippet. For example, here’s how you would test libcurl +with openssl as a TLS backend and the curl program: + +$ cat libcurl.config +BR2_PACKAGE_LIBCURL=y +BR2_PACKAGE_CURL=y +BR2_PACKAGE_OPENSSL=y + +Then run the test-pkg script, by telling it what config snippet to +use and what package to test: + +$ ./utils/test-pkg -c libcurl.config -p libcurl + +This will try to build your package against all the toolchains used +by the autobuilders (except for the internal toolchains, because it +takes too long to do so). The output lists all toolchains and the +corresponding result (excerpt, results are fake): + +$ ./utils/test-pkg -c libcurl.config -p libcurl + armv5-ctng-linux-gnueabi [ 1/11]: OK + armv7-ctng-linux-gnueabihf [ 2/11]: OK + br-aarch64-glibc [ 3/11]: SKIPPED + br-arcle-hs38 [ 4/11]: SKIPPED + br-arm-basic [ 5/11]: FAILED + br-arm-cortex-a9-glibc [ 6/11]: OK + br-arm-cortex-a9-musl [ 7/11]: FAILED + br-arm-cortex-m4-full [ 8/11]: OK + br-arm-full [ 9/11]: OK + br-arm-full-nothread [10/11]: FAILED + br-arm-full-static [11/11]: OK +11 builds, 2 skipped, 2 build failed, 1 legal-info failed + +The results mean: + + * OK: the build was successful. + * SKIPPED: one or more configuration options listed in the config + snippet were not present in the final configuration. This is due + to options having dependencies not satisfied by the toolchain, + such as for example a package that depends on BR2_USE_MMU with a + noMMU toolchain. The missing options are reported in + missing.config in the output build directory (~/br-test-pkg/ + TOOLCHAIN_NAME/ by default). + * FAILED: the build failed. Inspect the logfile file in the output + build directory to see what went wrong: + + + the actual build failed, + + the legal-info failed, + + one of the preliminary steps (downloading the config file, + applying the configuration, running dirclean for the package) + failed. + +When there are failures, you can just re-run the script with the same +options (after you fixed your package); the script will attempt to +re-build the package specified with -p for all toolchains, without +the need to re-build all the dependencies of that package. + +The test-pkg script accepts a few options, for which you can get some +help by running: + +$ ./utils/test-pkg -h + +17.22.3. How to add a package from GitHub + +Packages on GitHub often don’t have a download area with release +tarballs. However, it is possible to download tarballs directly from +the repository on GitHub. As GitHub is known to have changed download +mechanisms in the past, the github helper function should be used as +shown below. + +# Use a tag or a full commit ID +FOO_VERSION = v1.0 +FOO_SITE = $(call github,,,$(FOO_VERSION)) + +Notes + + * The FOO_VERSION can either be a tag or a commit ID. + * The tarball name generated by github matches the default one from + Buildroot (e.g.: + foo-f6fb6654af62045239caed5950bc6c7971965e60.tar.gz), so it is + not necessary to specify it in the .mk file. + * When using a commit ID as version, you should use the full 40 hex + characters. + +If the package you wish to add does have a release section on GitHub, +the maintainer may have uploaded a release tarball, or the release +may just point to the automatically generated tarball from the git +tag. If there is a release tarball uploaded by the maintainer, we +prefer to use that since it may be slightly different (e.g. it +contains a configure script so we don’t need to do AUTORECONF). + +You can see on the release page if it’s an uploaded tarball or a git +tag: + + * If it looks like the image above then it was uploaded by the + maintainer and you should use that link (in that example: + mongrel2-v1.9.2.tar.bz2) to specify FOO_SITE, and not use the + github helper. + * On the other hand, if there’s is only the "Source code" link, + then it’s an automatically generated tarball and you should use + the github helper function. + +17.23. Conclusion + +As you can see, adding a software package to Buildroot is simply a +matter of writing a Makefile using an existing example and modifying +it according to the compilation process required by the package. + +If you package software that might be useful for other people, don’t +forget to send a patch to the Buildroot mailing list (see +Section 21.5, “Submitting patches”)! + +Chapter 18. Patching a package + +While integrating a new package or updating an existing one, it may +be necessary to patch the source of the software to get it +cross-built within Buildroot. + +Buildroot offers an infrastructure to automatically handle this +during the builds. It supports three ways of applying patch sets: +downloaded patches, patches supplied within buildroot and patches +located in a user-defined global patch directory. + +18.1. Providing patches + +18.1.1. Downloaded + +If it is necessary to apply a patch that is available for download, +then add it to the _PATCH variable. If an entry contains +://, then Buildroot will assume it is a full URL and download the +patch from this location. Otherwise, Buildroot will assume that the +patch should be downloaded from _SITE. It can be a +single patch, or a tarball containing a patch series. + +Like for all downloads, a hash should be added to the +.hash file. + +This method is typically used for packages from Debian. + +18.1.2. Within Buildroot + +Most patches are provided within Buildroot, in the package directory; +these typically aim to fix cross-compilation, libc support, or other +such issues. + +These patch files should be named -.patch. + +Notes + + * The patch files coming with Buildroot should not contain any + package version reference in their filename. + * The field in the patch file name refers to the apply + order, and shall start at 1; It is preferred to pad the number + with zeros up to 4 digits, like git-format-patch does. E.g.: + 0001-foobar-the-buz.patch + * Previously, it was mandatory for patches to be prefixed with the + name of the package, like --.patch, + but that is no longer the case. Existing packages will be fixed + as time passes. Do not prefix patches with the package name. + * Previously, a series file, as used by quilt, could also be added + in the package directory. In that case, the series file defines + the patch application order. This is deprecated, and will be + removed in the future. Do not use a series file. + +18.1.3. Global patch directory + +The BR2_GLOBAL_PATCH_DIR configuration file option can be used to +specify a space separated list of one or more directories containing +global package patches. See Section 9.8, “Adding project-specific +patches” for details. + +18.2. How patches are applied + + 1. Run the _PRE_PATCH_HOOKS commands if defined; + 2. Cleanup the build directory, removing any existing *.rej files; + 3. If _PATCH is defined, then patches from these + tarballs are applied; + 4. If there are some *.patch files in the package’s Buildroot + directory or in a package subdirectory named , + then: + + + If a series file exists in the package directory, then + patches are applied according to the series file; + + Otherwise, patch files matching *.patch are applied in + alphabetical order. So, to ensure they are applied in the + right order, it is highly recommended to name the patch files + like this: -.patch, where + refers to the apply order. + 5. If BR2_GLOBAL_PATCH_DIR is defined, the directories will be + enumerated in the order they are specified. The patches are + applied as described in the previous step. + 6. Run the _POST_PATCH_HOOKS commands if defined. + +If something goes wrong in the steps 3 or 4, then the build fails. + +18.3. Format and licensing of the package patches + +Patches are released under the same license as the software they +apply to (see Section 12.2, “Complying with the Buildroot license”). + +A message explaining what the patch does, and why it is needed, +should be added in the header commentary of the patch. + +You should add a Signed-off-by statement in the header of the each +patch to help with keeping track of the changes and to certify that +the patch is released under the same license as the software that is +modified. + +If the software is under version control, it is recommended to use +the upstream SCM software to generate the patch set. + +Otherwise, concatenate the header with the output of the diff -purN +package-version.orig/ package-version/ command. + +If you update an existing patch (e.g. when bumping the package +version), make sure the existing From header and Signed-off-by tags +are not removed, but do update the rest of the patch comment when +appropriate. + +At the end, the patch should look like: + +configure.ac: add C++ support test + +Signed-off-by: John Doe + +--- configure.ac.orig ++++ configure.ac +@@ -40,2 +40,12 @@ + +AC_PROG_MAKE_SET ++ ++AC_CACHE_CHECK([whether the C++ compiler works], ++ [rw_cv_prog_cxx_works], ++ [AC_LANG_PUSH([C++]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], ++ [rw_cv_prog_cxx_works=yes], ++ [rw_cv_prog_cxx_works=no]) ++ AC_LANG_POP([C++])]) ++ ++AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"]) + +18.4. Integrating patches found on the Web + +When integrating a patch of which you are not the author, you have to +add a few things in the header of the patch itself. + +Depending on whether the patch has been obtained from the project +repository itself, or from somewhere on the web, add one of the +following tags: + +Backported from: + +or + +Fetch from: + +It is also sensible to add a few words about any changes to the patch +that may have been necessary. + +Chapter 19. Download infrastructure + +TODO + +Chapter 20. Debugging Buildroot + +It is possible to instrument the steps Buildroot does when building +packages. Define the variable BR2_INSTRUMENTATION_SCRIPTS to contain +the path of one or more scripts (or other executables), in a +space-separated list, you want called before and after each step. The +scripts are called in sequence, with three parameters: + + * start or end to denote the start (resp. the end) of a step; + * the name of the step about to be started, or which just ended; + * the name of the package. + +For example : + +make BR2_INSTRUMENTATION_SCRIPTS="/path/to/my/script1 /path/to/my/script2" + +The list of steps is: + + * extract + * patch + * configure + * build + * install-host, when a host-package is installed in $(HOST_DIR) + * install-target, when a target-package is installed in $ + (TARGET_DIR) + * install-staging, when a target-package is installed in $ + (STAGING_DIR) + * install-image, when a target-package installs files in $ + (BINARIES_DIR) + +The script has access to the following variables: + + * BR2_CONFIG: the path to the Buildroot .config file + * HOST_DIR, STAGING_DIR, TARGET_DIR: see Section 17.5.2, + “generic-package reference” + * BUILD_DIR: the directory where packages are extracted and built + * BINARIES_DIR: the place where all binary files (aka images) are + stored + * BASE_DIR: the base output directory + +Chapter 21. Contributing to Buildroot + +There are many ways in which you can contribute to Buildroot: +analyzing and fixing bugs, analyzing and fixing package build +failures detected by the autobuilders, testing and reviewing patches +sent by other developers, working on the items in our TODO list and +sending your own improvements to Buildroot or its manual. The +following sections give a little more detail on each of these items. + +If you are interested in contributing to Buildroot, the first thing +you should do is to subscribe to the Buildroot mailing list. This +list is the main way of interacting with other Buildroot developers +and to send contributions to. If you aren’t subscribed yet, then +refer to Chapter 5, Community resources for the subscription link. + +If you are going to touch the code, it is highly recommended to use a +git repository of Buildroot, rather than starting from an extracted +source code tarball. Git is the easiest way to develop from and +directly send your patches to the mailing list. Refer to Chapter 3, +Getting Buildroot for more information on obtaining a Buildroot git +tree. + +21.1. Reproducing, analyzing and fixing bugs + +A first way of contributing is to have a look at the open bug reports +in the Buildroot bug tracker [https://bugs.buildroot.org/buglist.cgi? +product=buildroot]. As we strive to keep the bug count as small as +possible, all help in reproducing, analyzing and fixing reported bugs +is more than welcome. Don’t hesitate to add a comment to bug reports +reporting your findings, even if you don’t yet see the full picture. + +21.2. Analyzing and fixing autobuild failures + +The Buildroot autobuilders are a set of build machines that +continuously run Buildroot builds based on random configurations. +This is done for all architectures supported by Buildroot, with +various toolchains, and with a random selection of packages. With the +large commit activity on Buildroot, these autobuilders are a great +help in detecting problems very early after commit. + +All build results are available at http://autobuild.buildroot.org, +statistics are at http://autobuild.buildroot.org/stats.php. Every +day, an overview of all failed packages is sent to the mailing list. + +Detecting problems is great, but obviously these problems have to be +fixed as well. Your contribution is very welcome here! There are +basically two things that can be done: + + * Analyzing the problems. The daily summary mails do not contain + details about the actual failures: in order to see what’s going + on you have to open the build log and check the last output. + Having someone doing this for all packages in the mail is very + useful for other developers, as they can make a quick initial + analysis based on this output alone. + * Fixing a problem. When fixing autobuild failures, you should + follow these steps: + + 1. Check if you can reproduce the problem by building with the + same configuration. You can do this manually, or use the + br-reproduce-build [http://git.buildroot.org/buildroot-test/ + tree/utils/br-reproduce-build] script that will automatically + clone a Buildroot git repository, checkout the correct + revision, download and set the right configuration, and start + the build. + 2. Analyze the problem and create a fix. + 3. Verify that the problem is really fixed by starting from a + clean Buildroot tree and only applying your fix. + 4. Send the fix to the Buildroot mailing list (see Section 21.5, + “Submitting patches”). In case you created a patch against + the package sources, you should also send the patch upstream + so that the problem will be fixed in a later release, and the + patch in Buildroot can be removed. In the commit message of a + patch fixing an autobuild failure, add a reference to the + build result directory, as follows: + +Fixes http://autobuild.buildroot.org/results/51000a9d4656afe9e0ea6f07b9f8ed374c2e4069 + +21.3. Reviewing and testing patches + +With the amount of patches sent to the mailing list each day, the +maintainer has a very hard job to judge which patches are ready to +apply and which ones aren’t. Contributors can greatly help here by +reviewing and testing these patches. + +In the review process, do not hesitate to respond to patch +submissions for remarks, suggestions or anything that will help +everyone to understand the patches and make them better. Please use +internet style replies in plain text emails when responding to patch +submissions. + +To indicate approval of a patch, there are three formal tags that +keep track of this approval. To add your tag to a patch, reply to it +with the approval tag below the original author’s Signed-off-by line. +These tags will be picked up automatically by patchwork (see +Section 21.3.1, “Applying Patches from Patchwork”) and will be part +of the commit log when the patch is accepted. + +Tested-by + Indicates that the patch has been tested successfully. You are + encouraged to specify what kind of testing you performed + (compile-test on architecture X and Y, runtime test on target A, + …). This additional information helps other testers and the + maintainer. +Reviewed-by + Indicates that you code-reviewed the patch and did your best in + spotting problems, but you are not sufficiently familiar with the + area touched to provide an Acked-by tag. This means that there + may be remaining problems in the patch that would be spotted by + someone with more experience in that area. Should such problems + be detected, your Reviewed-by tag remains appropriate and you + cannot be blamed. +Acked-by + Indicates that you code-reviewed the patch and you are familiar + enough with the area touched to feel that the patch can be + committed as-is (no additional changes required). In case it + later turns out that something is wrong with the patch, your + Acked-by could be considered inappropriate. The difference + between Acked-by and Reviewed-by is thus mainly that you are + prepared to take the blame on Acked patches, but not on Reviewed + ones. + +If you reviewed a patch and have comments on it, you should simply +reply to the patch stating these comments, without providing a +Reviewed-by or Acked-by tag. These tags should only be provided if +you judge the patch to be good as it is. + +It is important to note that neither Reviewed-by nor Acked-by imply +that testing has been performed. To indicate that you both reviewed +and tested the patch, provide two separate tags (Reviewed/Acked-by +and Tested-by). + +Note also that any developer can provide Tested/Reviewed/Acked-by +tags, without exception, and we encourage everyone to do this. +Buildroot does not have a defined group of core developers, it just +so happens that some developers are more active than others. The +maintainer will value tags according to the track record of their +submitter. Tags provided by a regular contributor will naturally be +trusted more than tags provided by a newcomer. As you provide tags +more regularly, your trustworthiness (in the eyes of the maintainer) +will go up, but any tag provided is valuable. + +Buildroot’s Patchwork website can be used to pull in patches for +testing purposes. Please see Section 21.3.1, “Applying Patches from +Patchwork” for more information on using Buildroot’s Patchwork +website to apply patches. + +21.3.1. Applying Patches from Patchwork + +The main use of Buildroot’s Patchwork website for a developer is for +pulling in patches into their local git repository for testing +purposes. + +When browsing patches in the patchwork management interface, an mbox +link is provided at the top of the page. Copy this link address and +run the following commands: + +$ git checkout -b +$ wget -O - | git am + +Another option for applying patches is to create a bundle. A bundle +is a set of patches that you can group together using the patchwork +interface. Once the bundle is created and the bundle is made public, +you can copy the mbox link for the bundle and apply the bundle using +the above commands. + +21.4. Work on items from the TODO list + +If you want to contribute to Buildroot but don’t know where to start, +and you don’t like any of the above topics, you can always work on +items from the Buildroot TODO list [http://elinux.org/Buildroot# +Todo_list]. Don’t hesitate to discuss an item first on the mailing +list or on IRC. Do edit the wiki to indicate when you start working +on an item, so we avoid duplicate efforts. + +21.5. Submitting patches + +Note + +Please, do not attach patches to bugs, send them to the mailing list +instead. + +If you made some changes to Buildroot and you would like to +contribute them to the Buildroot project, proceed as follows. + +21.5.1. The formatting of a patch + +We expect patches to be formatted in a specific way. This is +necessary to make it easy to review patches, to be able to apply them +easily to the git repository, to make it easy to find back in the +history how and why things have changed, and to make it possible to +use git bisect to locate the origin of a problem. + +First of all, it is essential that the patch has a good commit +message. The commit message should start with a separate line with a +brief summary of the change, starting with the name of the affected +package. The body of the commit message should describe why this +change is needed, and if necessary also give details about how it was +done. When writing the commit message, think of how the reviewers +will read it, but also think about how you will read it when you look +at this change again a few years down the line. + +Second, the patch itself should do only one change, but do it +completely. Two unrelated or weakly related changes should usually be +done in two separate patches. This usually means that a patch affects +only a single package. If several changes are related, it is often +still possible to split them up in small patches and apply them in a +specific order. Small patches make it easier to review, and often +make it easier to understand afterwards why a change was done. +However, each patch must be complete. It is not allowed that the +build is broken when only the first but not the second patch is +applied. This is necessary to be able to use git bisect afterwards. + +Of course, while you’re doing your development, you’re probably going +back and forth between packages, and certainly not committing things +immediately in a way that is clean enough for submission. So most +developers rewrite the history of commits to produce a clean set of +commits that is appropriate for submission. To do this, you need to +use interactive rebasing. You can learn about it in the Pro Git book +[https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History]. +Sometimes, it is even easier to discard you history with git reset +--soft origin/master and select individual changes with git add -i or +git add -p. + +Finally, the patch should be signed off. This is done by adding +Signed-off-by: Your Real Name <> at the end of the commit message. +git commit -s does that for you, if configured properly. The +Signed-off-by tag means that you publish the patch under the +Buildroot license (i.e. GPL-2.0+, except for package patches, which +have the upstream license), and that you are allowed to do so. See +the Developer Certificate of Origin [http://developercertificate.org +/] for details. + +When adding new packages, you should submit every package in a +separate patch. This patch should have the update to package/ +Config.in, the package Config.in file, the .mk file, the .hash file, +any init script, and all package patches. If the package has many +sub-options, these are sometimes better added as separate follow-up +patches. The summary line should be something like : new +package. The body of the commit message can be empty for simple +packages, or it can contain the description of the package (like the +Config.in help text). If anything special has to be done to build the +package, this should also be explained explicitly in the commit +message body. + +When you bump a package to a new version, you should also submit a +separate patch for each package. Don’t forget to update the .hash +file, or add it if it doesn’t exist yet. Also don’t forget to check +if the _LICENSE and _LICENSE_FILES are still valid. The summary line +should be something like : bump to version . If the new version only contains security updates compared +to the existing one, the summary should be : security +bump to version and the commit message body should show +the CVE numbers that are fixed. If some package patches can be +removed in the new version, it should be explained explicitly why +they can be removed, preferably with the upstream commit ID. Also any +other required changes should be explained explicitly, like configure +options that no longer exist or are no longer needed. + +If you are interested in getting notified of build failures and of +further changes in the packages you added or modified, please add +yourself to the DEVELOPERS file. This should be done in the same +patch creating or modifying the package. See the DEVELOPERS file +Chapter 22, DEVELOPERS file and get-developers for more information. + +21.5.2. Preparing a patch series + +Starting from the changes committed in your local git view, rebase +your development branch on top of the upstream tree before generating +a patch set. To do so, run: + +$ git fetch --all --tags +$ git rebase origin/master + +Now, you are ready to generate then submit your patch set. + +To generate it, run: + +$ git format-patch -M -n -s -o outgoing origin/master + +This will generate patch files in the outgoing subdirectory, +automatically adding the Signed-off-by line. + +Once patch files are generated, you can review/edit the commit +message before submitting them, using your favorite text editor. + +Buildroot provides a handy tool to know to whom your patches should +be sent, called get-developers (see Chapter 22, DEVELOPERS file and +get-developers for more information). This tool reads your patches +and outputs the appropriate git send-email command to use: + +$ ./utils/get-developers outgoing/* + +Use the output of get-developers to send your patches: + +$ git send-email --to buildroot@buildroot.org --cc bob --cc alice outgoing/* + +Note that git should be configured to use your mail account. To +configure git, see man git-send-email or google it. + +If you do not use git send-email, make sure posted patches are not +line-wrapped, otherwise they cannot easily be applied. In such a +case, fix your e-mail client, or better yet, learn to use git +send-email. + +21.5.3. Cover letter + +If you want to present the whole patch set in a separate mail, add +--cover-letter to the git format-patch command (see man +git-format-patch for further information). This will generate a +template for an introduction e-mail to your patch series. + +A cover letter may be useful to introduce the changes you propose in +the following cases: + + * large number of commits in the series; + * deep impact of the changes in the rest of the project; + * RFC ^[4]; + * whenever you feel it will help presenting your work, your + choices, the review process, etc. + +21.5.4. Patch revision changelog + +When improvements are requested, the new revision of each commit +should include a changelog of the modifications between each +submission. Note that when your patch series is introduced by a cover +letter, an overall changelog may be added to the cover letter in +addition to the changelog in the individual commits. The best thing +to rework a patch series is by interactive rebasing: git rebase -i +origin/master. Consult the git manual for more information. + +When added to the individual commits, this changelog is added when +editing the commit message. Below the Signed-off-by section, add --- +and your changelog. + +Although the changelog will be visible for the reviewers in the mail +thread, as well as in patchwork [http://patchwork.buildroot.org], git +will automatically ignores lines below --- when the patch will be +merged. This is the intended behavior: the changelog is not meant to +be preserved forever in the git history of the project. + +Hereafter the recommended layout: + +Patch title: short explanation, max 72 chars + +A paragraph that explains the problem, and how it manifests itself. If +the problem is complex, it is OK to add more paragraphs. All paragraphs +should be wrapped at 72 characters. + +A paragraph that explains the root cause of the problem. Again, more +than on paragraph is OK. + +Finally, one or more paragraphs that explain how the problem is solved. +Don't hesitate to explain complex solutions in detail. + +Signed-off-by: John DOE + +--- +Changes v2 -> v3: + - foo bar (suggested by Jane) + - bar buz + +Changes v1 -> v2: + - alpha bravo (suggested by John) + - charly delta + +Any patch revision should include the version number. The version +number is simply composed of the letter v followed by an integer +greater or equal to two (i.e. "PATCH v2", "PATCH v3" …). + +This can be easily handled with git format-patch by using the option +--subject-prefix: + +$ git format-patch --subject-prefix "PATCH v4" \ + -M -s -o outgoing origin/master + +Since git version 1.8.1, you can also use -v (where is the +version number): + +$ git format-patch -v4 -M -s -o outgoing origin/master + +When you provide a new version of a patch, please mark the old one as +superseded in patchwork [http://patchwork.buildroot.org]. You need to +create an account on patchwork [http://patchwork.buildroot.org] to be +able to modify the status of your patches. Note that you can only +change the status of patches you submitted yourself, which means the +email address you register in patchwork [http:// +patchwork.buildroot.org] should match the one you use for sending +patches to the mailing list. + +You can also add the --in-reply-to option when +submitting a patch to the mailing list. The id of the mail to reply +to can be found under the "Message Id" tag on patchwork [http:// +patchwork.buildroot.org]. The advantage of in-reply-to is that +patchwork will automatically mark the previous version of the patch +as superseded. + +21.6. Reporting issues/bugs or getting help + +Before reporting any issue, please check in the mailing list archive +Chapter 5, Community resources whether someone has already reported +and/or fixed a similar problem. + +However you choose to report bugs or get help, either by opening a +bug in the bug tracker Chapter 5, Community resources or by sending a +mail to the mailing list Chapter 5, Community resources, there are a +number of details to provide in order to help people reproduce and +find a solution to the issue. + +Try to think as if you were trying to help someone else; in that +case, what would you need? + +Here is a short list of details to provide in such case: + + * host machine (OS/release) + * version of Buildroot + * target for which the build fails + * package(s) for which the build fails + * the command that fails and its output + * any information you think that may be relevant + +Additionally, you should add the .config file (or if you know how, a +defconfig; see Section 9.3, “Storing the Buildroot configuration”). + +If some of these details are too large, do not hesitate to use a +pastebin service. Note that not all available pastebin services will +preserve Unix-style line terminators when downloading raw pastes. +Following pastebin services are known to work correctly: - https:// +gist.github.com/ - http://code.bulix.org/ + + +--------------------------------------------------------------------- + +^[4] RFC: (Request for comments) change proposal + +Chapter 22. DEVELOPERS file and get-developers + +The main Buildroot directory contains a file named DEVELOPERS that +lists the developers involved with various areas of Buildroot. Thanks +to this file, the get-developer tool allows to: + + * Calculate the list of developers to whom patches should be sent, + by parsing the patches and matching the modified files with the + relevant developers. See Section 21.5, “Submitting patches” for + details. + * Find which developers are taking care of a given architecture or + package, so that they can be notified when a build failure occurs + on this architecture or package. This is done in interaction with + Buildroot’s autobuild infrastructure. + +We ask developers adding new packages, new boards, or generally new +functionality in Buildroot, to register themselves in the DEVELOPERS +file. As an example, we expect a developer contributing a new package +to include in his patch the appropriate modification to the +DEVELOPERS file. + +The DEVELOPERS file format is documented in detail inside the file +itself. + +The get-developer tool, located in utils/ allows to use the +DEVELOPERS file for various tasks: + + * When passing one or several patches as command line argument, + get-developer will return the appropriate git send-email command. + * When using the -a command line option, get-developer will + return the list of developers in charge of the given + architecture. + * When using the -p command line option, get-developer + will return the list of developers in charge of the given + package. + * When using the -c command line option, get-developer will look at + all files under version control in the Buildroot repository, and + list the ones that are not handled by any developer. The purpose + of this option is to help completing the DEVELOPERS file. + * When using without any arguments, it validates the integrity of + the DEVELOPERS file and will note WARNINGS for items that don’t + match. + +Part IV. Appendix + +Table of Contents + +23. Makedev syntax documentation +24. Makeusers syntax documentation +25. Migrating from older Buildroot versions + + 25.1. Migrating to 2016.11 + 25.2. Migrating to 2017.08 + +Chapter 23. Makedev syntax documentation + +The makedev syntax is used in several places in Buildroot to define +changes to be made for permissions, or which device files to create +and how to create them, in order to avoid calls to mknod. + +This syntax is derived from the makedev utility, and more complete +documentation can be found in the package/makedevs/README file. + +It takes the form of a space separated list of fields, one file per +line; the fields are: + ++--------------------------------------------------+ +|name|type|mode|uid|gid|major|minor|start|inc|count| ++--------------------------------------------------+ + +There are a few non-trivial blocks: + + * name is the path to the file you want to create/modify + * type is the type of the file, being one of: + + + f: a regular file + + d: a directory + + r: a directory recursively + + c: a character device file + + b: a block device file + + p: a named pipe + * mode are the usual permissions settings (only numerical values + are allowed) + * uid and gid are the UID and GID to set on this file; can be + either numerical values or actual names + * major and minor are here for device files, set to - for other + files + * start, inc and count are for when you want to create a batch of + files, and can be reduced to a loop, beginning at start, + incrementing its counter by inc until it reaches count + +Let’s say you want to change the permissions of a given file; using +this syntax, you will need to write: + +/usr/bin/foo f 755 0 0 - - - - - +/usr/bin/bar f 755 root root - - - - - +/data/buz f 644 buz-user buz-group - - - - - + +Alternatively, if you want to change owner/permission of a directory +recursively, you can write (to set UID to foo, GID to bar and access +rights to rwxr-x--- for the directory /usr/share/myapp and all files +and directories below it): + +/usr/share/myapp r 750 foo bar - - - - - + +On the other hand, if you want to create the device file /dev/hda and +the corresponding 15 files for the partitions, you will need for /dev +/hda: + +/dev/hda b 640 root root 3 0 0 0 - + +and then for device files corresponding to the partitions of /dev/ +hda, /dev/hdaX, X ranging from 1 to 15: + +/dev/hda b 640 root root 3 1 1 1 15 + +Extended attributes are supported if +BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is enabled. This +is done by adding a line starting with |xattr after the line +describing the file. Right now, only capability is supported as +extended attribute. + ++------------------+ +||xattr|capability | ++------------------+ + + * |xattr is a "flag" that indicate an extended attribute + * capability is a capability to add to the previous file + +If you want to add the capability cap_sys_admin to the binary foo, +you will write : + +/usr/bin/foo f 755 root root - - - - - +|xattr cap_sys_admin+eip + +You can add several capabilities to a file by using several |xattr +lines. If you want to add the capability cap_sys_admin and +cap_net_admin to the binary foo, you will write : + +/usr/bin/foo f 755 root root - - - - - +|xattr cap_sys_admin+eip +|xattr cap_net_admin+eip + +Chapter 24. Makeusers syntax documentation + +The syntax to create users is inspired by the makedev syntax, above, +but is specific to Buildroot. + +The syntax for adding a user is a space-separated list of fields, one +user per line; the fields are: + ++---------------------------------------------------------+ +|username|uid|group|gid|password|home|shell|groups|comment| ++---------------------------------------------------------+ + +Where: + + * username is the desired user name (aka login name) for the user. + It can not be root, and must be unique. If set to -, then just a + group will be created. + * uid is the desired UID for the user. It must be unique, and not + 0. If set to -1, then a unique UID will be computed by Buildroot + in the range [1000…1999] + * group is the desired name for the user’s main group. It can not + be root. If the group does not exist, it will be created. + * gid is the desired GID for the user’s main group. It must be + unique, and not 0. If set to -1, and the group does not already + exist, then a unique GID will be computed by Buildroot in the + range [1000..1999] + * password is the crypt(3)-encoded password. If prefixed with !, + then login is disabled. If prefixed with =, then it is + interpreted as clear-text, and will be crypt-encoded (using MD5). + If prefixed with !=, then the password will be crypt-encoded + (using MD5) and login will be disabled. If set to *, then login + is not allowed. If set to -, then no password value will be set. + * home is the desired home directory for the user. If set to -, no + home directory will be created, and the user’s home will be /. + Explicitly setting home to / is not allowed. + * shell is the desired shell for the user. If set to -, then /bin/ + false is set as the user’s shell. + * groups is the comma-separated list of additional groups the user + should be part of. If set to -, then the user will be a member of + no additional group. Missing groups will be created with an + arbitrary gid. + * comment (aka GECOS [https://en.wikipedia.org/wiki/Gecos_field] + field) is an almost-free-form text. + +There are a few restrictions on the content of each field: + + * except for comment, all fields are mandatory. + * except for comment, fields may not contain spaces. + * no field may contain a colon (:). + +If home is not -, then the home directory, and all files below, will +belong to the user and its main group. + +Examples: + +foo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user + +This will create this user: + + * username (aka login name) is: foo + * uid is computed by Buildroot + * main group is: bar + * main group gid is computed by Buildroot + * clear-text password is: blabla, will be crypt(3)-encoded, and + login is disabled. + * home is: /home/foo + * shell is: /bin/sh + * foo is also a member of groups: alpha and bravo + * comment is: Foo user + +test 8000 wheel -1 = - /bin/sh - Test user + +This will create this user: + + * username (aka login name) is: test + * uid is : 8000 + * main group is: wheel + * main group gid is computed by Buildroot, and will use the value + defined in the rootfs skeleton + * password is empty (aka no password). + * home is / but will not belong to test + * shell is: /bin/sh + * test is not a member of any additional groups + * comment is: Test user + +Chapter 25. Migrating from older Buildroot versions + +Some versions have introduced backward incompatibilities. This +section explains those incompatibilities, and for each explains what +to do to complete the migration. + +25.1. Migrating to 2016.11 + +Before Buildroot 2016.11, it was possible to use only one +br2-external tree at once. With Buildroot 2016.11 came the +possibility to use more than one simultaneously (for details, see +Section 9.2, “Keeping customizations outside of Buildroot”). + +This however means that older br2-external trees are not usable +as-is. A minor change has to be made: adding a name to your +br2-external tree. + +This can be done very easily in just a few steps: + + * First, create a new file named external.desc, at the root of your + br2-external tree, with a single line defining the name of your + br2-external tree: + + $ echo 'name: NAME_OF_YOUR_TREE' >external.desc + + Note. Be careful when choosing a name: It has to be unique and be + made with only ASCII characters from the set [A-Za-z0-9_]. + + * Then, change every occurence of BR2_EXTERNAL in your br2-external + tree with the new variable: + + $ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g' + +Now, your br2-external tree can be used with Buildroot 2016.11 +onward. + +Note: This change makes your br2-external tree incompatible with +Buildroot before 2016.11. + +25.2. Migrating to 2017.08 + +Before Buildroot 2017.08, host packages were installed in $(HOST_DIR) +/usr (with e.g. the autotools' --prefix=$(HOST_DIR)/usr). With +Buildroot 2017.08, they are now installed directly in $(HOST_DIR). + +Whenever a package installs an executable that is linked with a +library in $(HOST_DIR)/lib, it must have an RPATH pointing to that +directory. + +An RPATH pointing to $(HOST_DIR)/usr/lib is no longer accepted. + diff --git a/buildroot/docs/manual/manual.txt b/buildroot/docs/manual/manual.txt new file mode 100644 index 0000000..9d50760 --- /dev/null +++ b/buildroot/docs/manual/manual.txt @@ -0,0 +1,71 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + += The Buildroot user manual +:toc: + +Buildroot {sys:echo $\{BR2_VERSION%%-git*\}} manual generated on {localdate} +{localtime} from git revision {sys:git rev-parse --short HEAD} + +The Buildroot manual is written by the Buildroot developers. +It is licensed under the GNU General Public License, version 2. Refer to the +http://git.buildroot.org/buildroot/tree/COPYING?id={sys:git rev-parse HEAD}[COPYING] +file in the Buildroot sources for the full text of this license. + +Copyright (C) 2004-2018 The Buildroot developers + +image::logo.png[] + += Getting started + +include::introduction.txt[] + +include::prerequisite.txt[] + +include::getting.txt[] + +include::quickstart.txt[] + +include::resources.txt[] + += User guide + +include::configure.txt[] + +include::configure-other-components.txt[] + +include::common-usage.txt[] + +include::customize.txt[] + +include::faq-troubleshooting.txt[] + +include::known-issues.txt[] + +include::legal-notice.txt[] + +include::beyond-buildroot.txt[] + += Developer guide + +include::how-buildroot-works.txt[] + +include::writing-rules.txt[] + +include::adding-board-support.txt[] + +include::adding-packages.txt[] + +include::patch-policy.txt[] + +include::download-infra.txt[] + +include::debugging-buildroot.txt[] + +include::contribute.txt[] + +include::developers.txt[] + += Appendix + +include::appendix.txt[] diff --git a/buildroot/docs/manual/migrating.txt b/buildroot/docs/manual/migrating.txt new file mode 100644 index 0000000..92e487c --- /dev/null +++ b/buildroot/docs/manual/migrating.txt @@ -0,0 +1,58 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[migrating-from-ol-versions]] +== Migrating from older Buildroot versions + +Some versions have introduced backward incompatibilities. This section +explains those incompatibilities, and for each explains what to do to +complete the migration. + +[[br2-external-converting]] +=== Migrating to 2016.11 + +Before Buildroot 2016.11, it was possible to use only one br2-external +tree at once. With Buildroot 2016.11 came the possibility to use more +than one simultaneously (for details, see xref:outside-br-custom[]). + +This however means that older br2-external trees are not usable as-is. +A minor change has to be made: adding a name to your br2-external tree. + +This can be done very easily in just a few steps: + + * First, create a new file named +external.desc+, at the root of your + br2-external tree, with a single line defining the name of your + br2-external tree: ++ +---- +$ echo 'name: NAME_OF_YOUR_TREE' >external.desc +---- ++ +.Note +Be careful when choosing a name: It has to be unique and be made +with only ASCII characters from the set +[A-Za-z0-9_]+. + + * Then, change every occurence of +BR2_EXTERNAL+ in your br2-external + tree with the new variable: ++ +---- +$ find . -type f | xargs sed -i 's/BR2_EXTERNAL/BR2_EXTERNAL_NAME_OF_YOUR_TREE_PATH/g' +---- + +Now, your br2-external tree can be used with Buildroot 2016.11 onward. + +.Note: +This change makes your br2-external tree incompatible with Buildroot +before 2016.11. + +[[migrating-host-usr]] +=== Migrating to 2017.08 + +Before Buildroot 2017.08, host packages were installed in +$(HOST_DIR)/usr+ +(with e.g. the autotools' +--prefix=$(HOST_DIR)/usr+). With Buildroot +2017.08, they are now installed directly in +$(HOST_DIR)+. + +Whenever a package installs an executable that is linked with a library +in +$(HOST_DIR)/lib+, it must have an RPATH pointing to that directory. + +An RPATH pointing to +$(HOST_DIR)/usr/lib+ is no longer accepted. diff --git a/buildroot/docs/manual/package-make-target.txt b/buildroot/docs/manual/package-make-target.txt new file mode 100644 index 0000000..c91106e --- /dev/null +++ b/buildroot/docs/manual/package-make-target.txt @@ -0,0 +1,82 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[pkg-build-steps]] + +==== Package-specific _make_ targets + +Running +make + builds and installs that particular package +and its dependencies. + +For packages relying on the Buildroot infrastructure, there are +numerous special make targets that can be called independently like +this: + +------------ +make - +------------ + +The package build targets are (in the order they are executed): + +[width="90%",cols="^1,4",options="header"] +|=================================================== +| command/target | Description + +| +source+ | Fetch the source (download the tarball, clone +the source repository, etc) + +| +depends+ | Build and install all dependencies required to +build the package + +| +extract+ | Put the source in the package build directory +(extract the tarball, copy the source, etc) + +| +patch+ | Apply the patches, if any + +| +configure+ | Run the configure commands, if any + +| +build+ | Run the compilation commands + +| +install-staging+ | +*target package:* Run the installation of the package in the +staging directory, if necessary + +| +install-target+ | +*target package:* Run the installation of the package in the +target directory, if necessary + +| +install+ | +*target package:* Run the 2 previous installation commands + +*host package:* Run the installation of the package in the host +directory + +|=================================================== + +Additionally, there are some other useful make targets: + +[width="90%",cols="^1,4",options="header"] +|=================================================== +| command/target | Description + +| +show-depends+ | Displays the dependencies required to build the +package + +| +graph-depends+ | Generate a dependency graph of the package, in the +context of the current Buildroot configuration. See +xref:graph-depends[this section] for more details about dependency +graphs. + +| +dirclean+ | Remove the whole package build directory + +| +reinstall+ | Re-run the install commands + +| +rebuild+ | Re-run the compilation commands - this only makes +sense when using the +OVERRIDE_SRCDIR+ feature or when you modified a file +directly in the build directory + +| +reconfigure+ | Re-run the configure commands, then rebuild - this only +makes sense when using the +OVERRIDE_SRCDIR+ feature or when you modified a +file directly in the build directory + +|=================================================== diff --git a/buildroot/docs/manual/patch-policy.txt b/buildroot/docs/manual/patch-policy.txt new file mode 100644 index 0000000..e704a0d --- /dev/null +++ b/buildroot/docs/manual/patch-policy.txt @@ -0,0 +1,162 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[patch-policy]] + +== Patching a package + +While integrating a new package or updating an existing one, it may be +necessary to patch the source of the software to get it cross-built within +Buildroot. + +Buildroot offers an infrastructure to automatically handle this during +the builds. It supports three ways of applying patch sets: downloaded patches, +patches supplied within buildroot and patches located in a user-defined +global patch directory. + +=== Providing patches + +==== Downloaded + +If it is necessary to apply a patch that is available for download, then add it +to the +_PATCH+ variable. If an entry contains +://+, +then Buildroot will assume it is a full URL and download the patch +from this location. Otherwise, Buildroot will assume that the patch should be +downloaded from +_SITE+. It can be a single patch, +or a tarball containing a patch series. + +Like for all downloads, a hash should be added to the +.hash+ +file. + +This method is typically used for packages from Debian. + +==== Within Buildroot + +Most patches are provided within Buildroot, in the package +directory; these typically aim to fix cross-compilation, libc support, +or other such issues. + +These patch files should be named +-.patch+. + +.Notes +- The patch files coming with Buildroot should not contain any package version + reference in their filename. +- The field ++ in the patch file name refers to the 'apply order', + and shall start at 1; It is preferred to pad the number with zeros up to 4 + digits, like 'git-format-patch' does. E.g.: +0001-foobar-the-buz.patch+ +- Previously, it was mandatory for patches to be prefixed with the name of + the package, like +--.patch+, but that is + no longer the case. Existing packages will be fixed as time passes. 'Do + not prefix patches with the package name.' +- Previously, a +series+ file, as used by +quilt+, could also be added in + the package directory. In that case, the +series+ file defines the patch + application order. This is deprecated, and will be removed in the future. + 'Do not use a series file.' + + +==== Global patch directory + +The +BR2_GLOBAL_PATCH_DIR+ configuration file option can be +used to specify a space separated list of one or more directories +containing global package patches. See xref:customize-patches[] for +details. + +[[patch-apply-order]] +=== How patches are applied + +. Run the +_PRE_PATCH_HOOKS+ commands if defined; + +. Cleanup the build directory, removing any existing +*.rej+ files; + +. If +_PATCH+ is defined, then patches from these + tarballs are applied; + +. If there are some +*.patch+ files in the package's Buildroot + directory or in a package subdirectory named ++, + then: ++ +* If a +series+ file exists in the package directory, then patches are + applied according to the +series+ file; ++ +* Otherwise, patch files matching +*.patch+ are applied in alphabetical + order. + So, to ensure they are applied in the right order, it is highly + recommended to name the patch files like this: + +-.patch+, where ++ refers to the + 'apply order'. + +. If +BR2_GLOBAL_PATCH_DIR+ is defined, the directories will be + enumerated in the order they are specified. The patches are applied + as described in the previous step. + +. Run the +_POST_PATCH_HOOKS+ commands if defined. + +If something goes wrong in the steps _3_ or _4_, then the build fails. + +=== Format and licensing of the package patches + +Patches are released under the same license as the software they apply +to (see xref:legal-info-buildroot[]). + +A message explaining what the patch does, and why it is needed, should +be added in the header commentary of the patch. + +You should add a +Signed-off-by+ statement in the header of the each +patch to help with keeping track of the changes and to certify that the +patch is released under the same license as the software that is modified. + +If the software is under version control, it is recommended to use the +upstream SCM software to generate the patch set. + +Otherwise, concatenate the header with the output of the ++diff -purN package-version.orig/ package-version/+ command. + +If you update an existing patch (e.g. when bumping the package version), +make sure the existing From header and Signed-off-by tags are not +removed, but do update the rest of the patch comment when appropriate. + +At the end, the patch should look like: + +--------------- +configure.ac: add C++ support test + +Signed-off-by: John Doe + +--- configure.ac.orig ++++ configure.ac +@@ -40,2 +40,12 @@ + +AC_PROG_MAKE_SET ++ ++AC_CACHE_CHECK([whether the C++ compiler works], ++ [rw_cv_prog_cxx_works], ++ [AC_LANG_PUSH([C++]) ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], ++ [rw_cv_prog_cxx_works=yes], ++ [rw_cv_prog_cxx_works=no]) ++ AC_LANG_POP([C++])]) ++ ++AM_CONDITIONAL([CXX_WORKS], [test "x$rw_cv_prog_cxx_works" = "xyes"]) +--------------- + +=== Integrating patches found on the Web + +When integrating a patch of which you are not the author, you have to +add a few things in the header of the patch itself. + +Depending on whether the patch has been obtained from the project +repository itself, or from somewhere on the web, add one of the +following tags: + +--------------- +Backported from: +--------------- + +or + +--------------- +Fetch from: +--------------- + +It is also sensible to add a few words about any changes to the patch +that may have been necessary. diff --git a/buildroot/docs/manual/prerequisite.txt b/buildroot/docs/manual/prerequisite.txt new file mode 100644 index 0000000..110fab4 --- /dev/null +++ b/buildroot/docs/manual/prerequisite.txt @@ -0,0 +1,89 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[requirement]] +== System requirements + +Buildroot is designed to run on Linux systems. + +While Buildroot itself will build most host packages it needs for the +compilation, certain standard Linux utilities are expected to be +already installed on the host system. Below you will find an overview of +the mandatory and optional packages (note that package names may vary +between distributions). + +[[requirement-mandatory]] + +=== Mandatory packages + +* Build tools: + +** +which+ +** +sed+ +** +make+ (version 3.81 or any later) +** +binutils+ +** +build-essential+ (only for Debian based systems) +** +gcc+ (version 2.95 or any later) +** `g++` (version 2.95 or any later) +** +bash+ +** +patch+ +** +gzip+ +** +bzip2+ +** +perl+ (version 5.8.7 or any later) +** +tar+ +** +cpio+ +** +python+ (version 2.6 or any later) +** +unzip+ +** +rsync+ +** +file+ (must be in +/usr/bin/file+) +** +bc+ + +* Source fetching tools: +** +wget+ + +[[requirement-optional]] + +=== Optional packages + +* Configuration interface dependencies: ++ +For these libraries, you need to install both runtime and development +data, which in many distributions are packaged separately. The +development packages typically have a _-dev_ or _-devel_ suffix. ++ +** +ncurses5+ to use the 'menuconfig' interface +** +qt4+ to use the 'xconfig' interface +** +glib2+, +gtk2+ and +glade2+ to use the 'gconfig' interface + +* Source fetching tools: ++ +In the official tree, most of the package sources are retrieved using ++wget+ from _ftp_, _http_ or _https_ locations. A few packages are only +available through a version control system. Moreover, Buildroot is +capable of downloading sources via other tools, like +rsync+ or +scp+ +(refer to xref:download-infra[] for more details). If you enable +packages using any of these methods, you will need to install the +corresponding tool on the host system: ++ +** +bazaar+ +** +cvs+ +** +git+ +** +mercurial+ +** +rsync+ +** +scp+ +** +subversion+ + +* Java-related packages, if the Java Classpath needs to be built for + the target system: +** The +javac+ compiler +** The +jar+ tool + +* Documentation generation tools: +** +asciidoc+, version 8.6.3 or higher +** +w3m+ +** +python+ with the +argparse+ module (automatically present in 2.7+ and 3.2+) +** +dblatex+ (required for the pdf manual only) + +* Graph generation tools: +** +graphviz+ to use 'graph-depends' and '-graph-depends' +** +python-matplotlib+ to use 'graph-build' diff --git a/buildroot/docs/manual/quickstart.txt b/buildroot/docs/manual/quickstart.txt new file mode 100644 index 0000000..74158ae --- /dev/null +++ b/buildroot/docs/manual/quickstart.txt @@ -0,0 +1,123 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Buildroot quick start + +*Important*: you can and should *build everything as a normal user*. There +is no need to be root to configure and use Buildroot. By running all +commands as a regular user, you protect your system against packages +behaving badly during compilation and installation. + +The first step when using Buildroot is to create a configuration. +Buildroot has a nice configuration tool similar to the one you can +find in the http://www.kernel.org/[Linux kernel] or in +http://www.busybox.net/[BusyBox]. + +From the buildroot directory, run + +-------------------- + $ make menuconfig +-------------------- + +for the original curses-based configurator, or + +-------------------- + $ make nconfig +-------------------- + +for the new curses-based configurator, or + +-------------------- + $ make xconfig +-------------------- + +for the Qt-based configurator, or + +-------------------- + $ make gconfig +-------------------- + +for the GTK-based configurator. + +All of these "make" commands will need to build a configuration +utility (including the interface), so you may need to install +"development" packages for relevant libraries used by the +configuration utilities. Refer to xref:requirement[] for more details, +specifically the xref:requirement-optional[optional requirements] +to get the dependencies of your favorite interface. + +For each menu entry in the configuration tool, you can find associated +help that describes the purpose of the entry. Refer to xref:configure[] +for details on some specific configuration aspects. + +Once everything is configured, the configuration tool generates a ++.config+ file that contains the entire configuration. This file will be +read by the top-level Makefile. + +To start the build process, simply run: + +-------------------- + $ make +-------------------- + +You *should never* use +make -jN+ with Buildroot: top-level parallel +make is currently not supported. Instead, use the +BR2_JLEVEL+ option +to tell Buildroot to run the compilation of each individual package +with +make -jN+. + +The `make` command will generally perform the following steps: + +* download source files (as required); +* configure, build and install the cross-compilation toolchain, or + simply import an external toolchain; +* configure, build and install selected target packages; +* build a kernel image, if selected; +* build a bootloader image, if selected; +* create a root filesystem in selected formats. + +Buildroot output is stored in a single directory, +output/+. +This directory contains several subdirectories: + +* +images/+ where all the images (kernel image, bootloader and root + filesystem images) are stored. These are the files you need to put + on your target system. + +* +build/+ where all the components are built (this includes tools + needed by Buildroot on the host and packages compiled for the + target). This directory contains one subdirectory for each of these + components. + +* +staging/+ which contains a hierarchy similar to a root filesystem + hierarchy. This directory contains the headers and libraries of the + cross-compilation toolchain and all the userspace packages selected + for the target. However, this directory is 'not' intended to be + the root filesystem for the target: it contains a lot of development + files, unstripped binaries and libraries that make it far too big + for an embedded system. These development files are used to compile + libraries and applications for the target that depend on other + libraries. + +* +target/+ which contains 'almost' the complete root filesystem for + the target: everything needed is present except the device files in + +/dev/+ (Buildroot can't create them because Buildroot doesn't run + as root and doesn't want to run as root). Also, it doesn't have the correct + permissions (e.g. setuid for the busybox binary). Therefore, this directory + *should not be used on your target*. Instead, you should use one of + the images built in the +images/+ directory. If you need an + extracted image of the root filesystem for booting over NFS, then + use the tarball image generated in +images/+ and extract it as + root. Compared to +staging/+, +target/+ contains only the files and + libraries needed to run the selected target applications: the + development files (headers, etc.) are not present, the binaries are + stripped. + +* +host/+ contains the installation of tools compiled for the host + that are needed for the proper execution of Buildroot, including the + cross-compilation toolchain. + +These commands, +make menuconfig|nconfig|gconfig|xconfig+ and +make+, are the +basic ones that allow to easily and quickly generate images fitting +your needs, with all the features and applications you enabled. + +More details about the "make" command usage are given in +xref:make-tips[]. diff --git a/buildroot/docs/manual/rebuilding-packages.txt b/buildroot/docs/manual/rebuilding-packages.txt new file mode 100644 index 0000000..6faa67a --- /dev/null +++ b/buildroot/docs/manual/rebuilding-packages.txt @@ -0,0 +1,122 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[full-rebuild]] +=== Understanding when a full rebuild is necessary + +Buildroot does not attempt to detect what parts of the system should +be rebuilt when the system configuration is changed through +make +menuconfig+, +make xconfig+ or one of the other configuration +tools. In some cases, Buildroot should rebuild the entire system, in +some cases, only a specific subset of packages. But detecting this in +a completely reliable manner is very difficult, and therefore the +Buildroot developers have decided to simply not attempt to do this. + +Instead, it is the responsibility of the user to know when a full +rebuild is necessary. As a hint, here are a few rules of thumb that +can help you understand how to work with Buildroot: + + * When the target architecture configuration is changed, a complete + rebuild is needed. Changing the architecture variant, the binary + format or the floating point strategy for example has an impact on + the entire system. + + * When the toolchain configuration is changed, a complete rebuild + generally is needed. Changing the toolchain configuration often + involves changing the compiler version, the type of C library or + its configuration, or some other fundamental configuration item, + and these changes have an impact on the entire system. + + * When an additional package is added to the configuration, a full + rebuild is not necessarily needed. Buildroot will detect that this + package has never been built, and will build it. However, if this + package is a library that can optionally be used by packages that + have already been built, Buildroot will not automatically rebuild + those. Either you know which packages should be rebuilt, and you + can rebuild them manually, or you should do a full rebuild. For + example, let's suppose you have built a system with the +ctorrent+ + package, but without +openssl+. Your system works, but you realize + you would like to have SSL support in +ctorrent+, so you enable the + +openssl+ package in Buildroot configuration and restart the + build. Buildroot will detect that +openssl+ should be built and + will be build it, but it will not detect that +ctorrent+ should be + rebuilt to benefit from +openssl+ to add OpenSSL support. You will + either have to do a full rebuild, or rebuild +ctorrent+ itself. + + * When a package is removed from the configuration, Buildroot does + not do anything special. It does not remove the files installed by + this package from the target root filesystem or from the toolchain + _sysroot_. A full rebuild is needed to get rid of this + package. However, generally you don't necessarily need this package + to be removed right now: you can wait for the next lunch break to + restart the build from scratch. + + * When the sub-options of a package are changed, the package is not + automatically rebuilt. After making such changes, rebuilding only + this package is often sufficient, unless enabling the package + sub-option adds some features to the package that are useful for + another package which has already been built. Again, Buildroot does + not track when a package should be rebuilt: once a package has been + built, it is never rebuilt unless explicitly told to do so. + + * When a change to the root filesystem skeleton is made, a full + rebuild is needed. However, when changes to the root filesystem + overlay, a post-build script or a post-image script are made, + there is no need for a full rebuild: a simple +make+ invocation + will take the changes into account. + +Generally speaking, when you're facing a build error and you're unsure +of the potential consequences of the configuration changes you've +made, do a full rebuild. If you get the same build error, then you are +sure that the error is not related to partial rebuilds of packages, +and if this error occurs with packages from the official Buildroot, do +not hesitate to report the problem! As your experience with Buildroot +progresses, you will progressively learn when a full rebuild is really +necessary, and you will save more and more time. + +For reference, a full rebuild is achieved by running: + +--------------- +$ make clean all +--------------- + +[[rebuild-pkg]] +=== Understanding how to rebuild packages + +One of the most common questions asked by Buildroot users is how to +rebuild a given package or how to remove a package without rebuilding +everything from scratch. + +Removing a package is unsupported by Buildroot without +rebuilding from scratch. This is because Buildroot doesn't keep track +of which package installs what files in the +output/staging+ and ++output/target+ directories, or which package would be compiled differently +depending on the availability of another package. + +The easiest way to rebuild a single package from scratch is to remove +its build directory in +output/build+. Buildroot will then re-extract, +re-configure, re-compile and re-install this package from scratch. You +can ask buildroot to do this with the +make -dirclean+ command. + +On the other hand, if you only want to restart the build process of a +package from its compilation step, you can run +make +-rebuild+, followed by +make+ or +make +. It will +restart the compilation and installation of the package, but not from +scratch: it basically re-executes +make+ and +make install+ +inside the package, so it will only rebuild files that changed. + +If you want to restart the build process of a package from its +configuration step, you can run +make -reconfigure+, followed +by +make+ or +make +. It will restart the configuration, +compilation and installation of the package. + +Internally, Buildroot creates so-called _stamp files_ to keep track of +which build steps have been completed for each package. They are +stored in the package build directory, ++output/build/-/+ and are named ++.stamp_+. The commands detailed above simply manipulate +these stamp files to force Buildroot to restart a specific set of +steps of a package build process. + +Further details about package special make targets are explained in +xref:pkg-build-steps[]. diff --git a/buildroot/docs/manual/resources.txt b/buildroot/docs/manual/resources.txt new file mode 100644 index 0000000..69bfff8 --- /dev/null +++ b/buildroot/docs/manual/resources.txt @@ -0,0 +1,73 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +[[community-resources]] +== Community resources + +Like any open source project, Buildroot has different ways to share +information in its community and outside. + +Each of those ways may interest you if you are looking for some help, +want to understand Buildroot or contribute to the project. + +Mailing List:: ++ +Buildroot has a mailing list for discussion and development. It is the +main method of interaction for Buildroot users and developers. ++ +Only subscribers to the Buildroot mailing list are allowed to post to +this list. You can subscribe via the +http://lists.buildroot.org/mailman/listinfo/buildroot[mailing list info +page]. ++ +Mails that are sent to the mailing list are also available in the +http://lists.buildroot.org/pipermail/buildroot[mailing list archives] and +via http://gmane.org[Gmane], at +http://dir.gmane.org/gmane.comp.lib.uclibc.buildroot[+gmane.comp.lib.uclibc.buildroot+]. +Please search the mailing list archives before asking questions, since +there is a good chance someone else has asked the same question before. + +IRC:: ++ +The Buildroot IRC channel irc://freenode.net/#buildroot[#buildroot] is +hosted on http://webchat.freenode.net[Freenode]. It is a useful place to +ask quick questions or discuss on certain topics. ++ +When asking for help on IRC, share relevant logs or pieces of code +using a code sharing website, such as http://code.bulix.org. ++ +Note that for certain questions, posting to the mailing list may be +better as it will reach more people, both developers and users. + +Bug tracker:: ++ +Bugs in Buildroot can be reported via the mailing list or alternatively +via the https://bugs.buildroot.org/buglist.cgi?product=buildroot[Buildroot +bugtracker]. Please refer to xref:reporting-bugs[] before creating a bug +report. + +Wiki:: ++ +http://elinux.org/Buildroot[The Buildroot wiki page] is hosted on +the http://elinux.org[eLinux] wiki. It contains some useful links, an +overview of past and upcoming events, and a TODO list. + +Patchwork:: ++ +Patchwork is a web-based patch tracking system designed to facilitate +the contribution and management of contributions to an open-source +project. Patches that have been sent to a mailing list are \'caught' by +the system, and appear on a web page. Any comments posted that +reference the patch are appended to the patch page too. For more +information on Patchwork see +http://jk.ozlabs.org/projects/patchwork/[]. ++ +Buildroot's Patchwork website is mainly for use by Buildroot's +maintainer to ensure patches aren't missed. It is also used by Buildroot +patch reviewers (see also xref:apply-patches-patchwork[]). +However, since the website exposes patches and their corresponding +review comments in a clean and concise web interface, it can be useful +for all Buildroot developers. ++ +The Buildroot patch management interface is available at +http://patchwork.buildroot.org[]. diff --git a/buildroot/docs/manual/using-buildroot-debugger.txt b/buildroot/docs/manual/using-buildroot-debugger.txt new file mode 100644 index 0000000..d5293be --- /dev/null +++ b/buildroot/docs/manual/using-buildroot-debugger.txt @@ -0,0 +1,53 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +==== Using +gdb+ in Buildroot + +Buildroot allows to do cross-debugging, where the debugger runs on the +build machine and communicates with +gdbserver+ on the target to +control the execution of the program. + +To achieve this: + +* If you are using an _internal toolchain_ (built by Buildroot), you + must enable +BR2_PACKAGE_HOST_GDB+, +BR2_PACKAGE_GDB+ and + +BR2_PACKAGE_GDB_SERVER+. This ensures that both the cross gdb and + gdbserver get built, and that gdbserver gets installed to your target. + +* If you are using an _external toolchain_, you should enable + +BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY+, which will copy the + gdbserver included with the external toolchain to the target. If your + external toolchain does not have a cross gdb or gdbserver, it is also + possible to let Buildroot build them, by enabling the same options as + for the _internal toolchain backend_. + +Now, to start debugging a program called +foo+, you should run on the +target: + +---------------------------- +gdbserver :2345 foo +---------------------------- + +This will cause +gdbserver+ to listen on TCP port 2345 for a connection +from the cross gdb. + +Then, on the host, you should start the cross gdb using the following +command line: + +---------------------------- +/output/host/bin/-gdb -x /output/staging/usr/share/buildroot/gdbinit foo +---------------------------- + +Of course, +foo+ must be available in the current directory, built +with debugging symbols. Typically you start this command from the +directory where +foo+ is built (and not from +output/target/+ as the +binaries in that directory are stripped). + +The +/output/staging/usr/share/buildroot/gdbinit+ file will tell the +cross gdb where to find the libraries of the target. + +Finally, to connect to the target from the cross gdb: + +---------------------------- +(gdb) target remote :2345 +---------------------------- diff --git a/buildroot/docs/manual/using-buildroot-development.txt b/buildroot/docs/manual/using-buildroot-development.txt new file mode 100644 index 0000000..1071de5 --- /dev/null +++ b/buildroot/docs/manual/using-buildroot-development.txt @@ -0,0 +1,83 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +==== Using Buildroot during development + +The normal operation of Buildroot is to download a tarball, extract +it, configure, compile and install the software component found inside +this tarball. The source code is extracted in ++output/build/-+, which is a temporary directory: +whenever +make clean+ is used, this directory is entirely removed, and +re-created at the next +make+ invocation. Even when a Git or +Subversion repository is used as the input for the package source +code, Buildroot creates a tarball out of it, and then behaves as it +normally does with tarballs. + +This behavior is well-suited when Buildroot is used mainly as an +integration tool, to build and integrate all the components of an +embedded Linux system. However, if one uses Buildroot during the +development of certain components of the system, this behavior is not +very convenient: one would instead like to make a small change to the +source code of one package, and be able to quickly rebuild the system +with Buildroot. + +Making changes directly in +output/build/-+ is not +an appropriate solution, because this directory is removed on +make +clean+. + +Therefore, Buildroot provides a specific mechanism for this use case: +the +_OVERRIDE_SRCDIR+ mechanism. Buildroot reads an _override_ +file, which allows the user to tell Buildroot the location of the +source for certain packages. By default this _override_ file is named ++local.mk+ and located in the top directory of the Buildroot source +tree, but a different location can be specified through the ++BR2_PACKAGE_OVERRIDE_FILE+ configuration option. + +In this _override_ file, Buildroot expects to find lines of the form: + +------------------ +_OVERRIDE_SRCDIR = /path/to/pkg1/sources +_OVERRIDE_SRCDIR = /path/to/pkg2/sources +------------------ + +For example: + +------------------ +LINUX_OVERRIDE_SRCDIR = /home/bob/linux/ +BUSYBOX_OVERRIDE_SRCDIR = /home/bob/busybox/ +------------------ + +When Buildroot finds that for a given package, an ++_OVERRIDE_SRCDIR+ has been defined, it will no longer attempt to +download, extract and patch the package. Instead, it will directly use +the source code available in the specified directory and +make clean+ +will not touch this directory. This allows to point Buildroot to your +own directories, that can be managed by Git, Subversion, or any other +version control system. To achieve this, Buildroot will use _rsync_ to +copy the source code of the component from the specified ++_OVERRIDE_SRCDIR+ to +output/build/-custom/+. + +This mechanism is best used in conjunction with the +make +-rebuild+ and +make -reconfigure+ targets. A +make +-rebuild all+ sequence will _rsync_ the source code from ++_OVERRIDE_SRCDIR+ to +output/build/-custom+ (thanks to +_rsync_, only the modified files are copied), and restart the build +process of just this package. + +In the example of the +linux+ package above, the developer can then +make a source code change in +/home/bob/linux+ and then run: + +----------------------- +make linux-rebuild all +----------------------- + +and in a matter of seconds gets the updated Linux kernel image in ++output/images+. Similarly, a change can be made to the BusyBox source +code in +/home/bob/busybox+, and after: + +----------------------- +make busybox-rebuild all +----------------------- + +the root filesystem image in +output/images+ contains the updated +BusyBox. diff --git a/buildroot/docs/manual/using-buildroot-toolchain.txt b/buildroot/docs/manual/using-buildroot-toolchain.txt new file mode 100644 index 0000000..3246dc2 --- /dev/null +++ b/buildroot/docs/manual/using-buildroot-toolchain.txt @@ -0,0 +1,26 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +==== Using the generated toolchain outside Buildroot + +You may want to compile, for your target, your own programs or other +software that are not packaged in Buildroot. In order to do this you +can use the toolchain that was generated by Buildroot. + +The toolchain generated by Buildroot is located by default in ++output/host/+. The simplest way to use it is to add ++output/host/bin/+ to your PATH environment variable and then to +use +ARCH-linux-gcc+, +ARCH-linux-objdump+, +ARCH-linux-ld+, etc. + +It is possible to relocate the toolchain, this allows to distribute +the toolchain to other developers to build applications for your +target. To achieve this: + +* run +make sdk+, which prepares the toolchain to be relocatable; +* tarball the contents of the +output/host+ directory; +* distribute the resulting tarball. + +Once the toolchain is installed to the new location, the user must run +the +relocate-sdk.sh+ script to make sure all paths are updated with +the new location. + diff --git a/buildroot/docs/manual/writing-rules.txt b/buildroot/docs/manual/writing-rules.txt new file mode 100644 index 0000000..ca43272 --- /dev/null +++ b/buildroot/docs/manual/writing-rules.txt @@ -0,0 +1,151 @@ +// -*- mode:doc; -*- +// vim: set syntax=asciidoc: + +== Coding style + +Overall, these coding style rules are here to help you to add new files in +Buildroot or refactor existing ones. + +If you slightly modify some existing file, the important thing is +to keep the consistency of the whole file, so you can: + +* either follow the potentially deprecated coding style used in this +file, + +* or entirely rework it in order to make it comply with these rules. + +[[writing-rules-config-in]] + +=== +Config.in+ file + ++Config.in+ files contain entries for almost anything configurable in +Buildroot. + +An entry has the following pattern: + +--------------------- +config BR2_PACKAGE_LIBFOO + bool "libfoo" + depends on BR2_PACKAGE_LIBBAZ + select BR2_PACKAGE_LIBBAR + help + This is a comment that explains what libfoo is. The help text + should be wrapped. + + http://foosoftware.org/libfoo/ +--------------------- + +* The +bool+, +depends on+, +select+ and +help+ lines are indented + with one tab. + +* The help text itself should be indented with one tab and two + spaces. + +* The help text should be wrapped to fit 72 columns, where tab counts + for 8, so 62 characters in the text itself. + +The +Config.in+ files are the input for the configuration tool +used in Buildroot, which is the regular _Kconfig_. For further +details about the _Kconfig_ language, refer to +http://kernel.org/doc/Documentation/kbuild/kconfig-language.txt[]. + +[[writing-rules-mk]] + +=== The +.mk+ file + +* Header: The file starts with a header. It contains the module name, +preferably in lowercase, enclosed between separators made of 80 hashes. A +blank line is mandatory after the header: ++ +--------------------- +################################################################################ +# +# libfoo +# +################################################################################ +--------------------- ++ +* Assignment: use +=+ preceded and followed by one space: ++ +--------------------- +LIBFOO_VERSION = 1.0 +LIBFOO_CONF_OPTS += --without-python-support +--------------------- ++ +Do not align the +=+ signs. + +* Indentation: use tab only: ++ +--------------------- +define LIBFOO_REMOVE_DOC + $(RM) -fr $(TARGET_DIR)/usr/share/libfoo/doc \ + $(TARGET_DIR)/usr/share/man/man3/libfoo* +endef +--------------------- ++ +Note that commands inside a +define+ block should always start with a tab, +so _make_ recognizes them as commands. + +* Optional dependency: + +** Prefer multi-line syntax. ++ +YES: ++ +--------------------- +ifeq ($(BR2_PACKAGE_PYTHON),y) +LIBFOO_CONF_OPTS += --with-python-support +LIBFOO_DEPENDENCIES += python +else +LIBFOO_CONF_OPTS += --without-python-support +endif +--------------------- ++ +NO: ++ +--------------------- +LIBFOO_CONF_OPTS += --with$(if $(BR2_PACKAGE_PYTHON),,out)-python-support +LIBFOO_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,) +--------------------- + +** Keep configure options and dependencies close together. + +* Optional hooks: keep hook definition and assignment together in one + if block. ++ +YES: ++ +--------------------- +ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) +define LIBFOO_REMOVE_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data +endef +LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA +endif +--------------------- ++ +NO: ++ +--------------------- +define LIBFOO_REMOVE_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/libfoo/data +endef + +ifneq ($(BR2_LIBFOO_INSTALL_DATA),y) +LIBFOO_POST_INSTALL_TARGET_HOOKS += LIBFOO_REMOVE_DATA +endif +--------------------- + +=== The documentation + +The documentation uses the +http://www.methods.co.nz/asciidoc/[asciidoc] format. + +For further details about the http://www.methods.co.nz/asciidoc/[asciidoc] +syntax, refer to http://www.methods.co.nz/asciidoc/userguide.html[]. + +=== Support scripts + +Some scripts in the +support/+ and +utils/+ directories are written in +Python and should follow the +https://www.python.org/dev/peps/pep-0008/[PEP8 Style Guide for Python Code]. diff --git a/buildroot/docs/website/.htaccess b/buildroot/docs/website/.htaccess new file mode 100644 index 0000000..b02beb8 --- /dev/null +++ b/buildroot/docs/website/.htaccess @@ -0,0 +1,62 @@ +# BEGIN Compress text files + + + SetOutputFilter DEFLATE + + +# END Compress text files + +# BEGIN Expire headers + + ExpiresActive On + ExpiresDefault "access plus 1 seconds" + ExpiresByType image/x-icon "access plus 2592000 seconds" + ExpiresByType image/jpeg "access plus 2592000 seconds" + ExpiresByType image/png "access plus 2592000 seconds" + ExpiresByType image/gif "access plus 2592000 seconds" + ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" + ExpiresByType text/css "access plus 604800 seconds" + ExpiresByType text/javascript "access plus 216000 seconds" + ExpiresByType application/javascript "access plus 216000 seconds" + ExpiresByType application/x-javascript "access plus 216000 seconds" + ExpiresByType text/html "access plus 600 seconds" + ExpiresByType application/xhtml+xml "access plus 600 seconds" + +# END Expire headers + +# BEGIN Cache-Control Headers + + + Header set Cache-Control "max-age=2592000, public" + + + Header set Cache-Control "max-age=604800, public" + + + Header set Cache-Control "max-age=216000, private" + + + Header set Cache-Control "max-age=600, private, must-revalidate" + + +# END Cache-Control Headers + +# BEGIN Turn ETags Off + + Header unset ETag + +FileETag None +# END Turn ETags Off + +# BEGIN gzip + +mod_gzip_on Yes +mod_gzip_dechunk Yes +mod_gzip_item_include file .(html?|txt|css|js)$ +mod_gzip_item_include handler ^cgi-script$ +mod_gzip_item_include mime ^text/.* +mod_gzip_item_include mime ^application/x-javascript.* +mod_gzip_item_exclude mime ^image/.* +mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* + +# END gzip diff --git a/buildroot/docs/website/contribute.html b/buildroot/docs/website/contribute.html new file mode 100644 index 0000000..721729b --- /dev/null +++ b/buildroot/docs/website/contribute.html @@ -0,0 +1,44 @@ + + +
+
+
+ +
+
Contribute
+
+

Buildroot is an open source project and you are very welcome to contribute to + it.
+ There are many different ways to contribute:

+ + + +

For more details on these topics, check out the + + Contributing to buildroot chapter in the Buildroot manual. Thanks for your help!

+ +

If you need any support yourself, have a look at + Support.

+
+
+ +
+
+
+ + diff --git a/buildroot/docs/website/copyright.txt b/buildroot/docs/website/copyright.txt new file mode 100644 index 0000000..b8ad36a --- /dev/null +++ b/buildroot/docs/website/copyright.txt @@ -0,0 +1,30 @@ + +The code and graphics on this website (and it's mirror sites, if any) are +Copyright (c) 1999-2005 by Erik Andersen, 2006-2018 The Buildroot +developers. All rights reserved. + +Documents on this Web site including their graphical elements, design, and +layout are protected by trade dress and other laws and MAY BE COPIED OR +IMITATED IN WHOLE OR IN PART. THIS WEBSITE IS LICENSED FREE OF CHARGE, THERE +IS NO WARRANTY FOR THE WEBSITE TO THE EXTENT PERMITTED BY APPLICABLE LAW. +SHOULD THIS WEBSITE PROVE DEFECTIVE, YOU MAY ASSUME THAT SOMEONE MIGHT GET +AROUND TO SERVICING, REPAIRING OR CORRECTING IT SOMETIME WHEN THEY HAVE NOTHING +BETTER TO DO. REGARDLESS, YOU GET TO KEEP BOTH PIECES. + +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 THIS +WEBSITE 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 THIS WEBSITE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR +LOSS OF HAIR, LOSS OF LIFE, LOSS OF MEMORY, LOSS OF YOUR CARKEYS, MISPLACEMENT +OF YOUR PAYCHECK, OR COMMANDER DATA BEING RENDERED UNABLE TO ASSIST THE +STARFLEET OFFICERS ABORD THE STARSHIP ENTERPRISE TO RECALIBRATE THE MAIN +DEFLECTOR ARRAY, LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +WEBSITE TO OPERATE WITH YOUR WEBBROWSER), EVEN IF SUCH HOLDER OR OTHER PARTY +HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +You have been warned. + +You can contact the webmaster at if you have some sort +of problem with this. + diff --git a/buildroot/docs/website/css/main.css b/buildroot/docs/website/css/main.css new file mode 100644 index 0000000..5255531 --- /dev/null +++ b/buildroot/docs/website/css/main.css @@ -0,0 +1,260 @@ +/* + * Author: Carlos Alvarez + * URL: http://alvarez.is + * + * Project Name: FLATTY - Free Bootstrap 3 Theme + * Version: 1.0 + * URL: http://blacktie.co + */ + +body { + background-color: #f2f2f2; + font-family: 'Roboto', sans-serif; + font-weight: 300; + font-size: 16px; + color: #555; + + -webkit-font-smoothing: antialiased; + -webkit-overflow-scrolling: touch; +} + +/* Titles */ +h1, h2, h3, h4, h5, h6 { + font-family: 'Roboto', sans-serif; + font-weight: 300; + color: #333; +} + +h1 { + font-size: 40px; +} + +h3 { + color: #95a5a6; + font-weight: 400; +} + +h4 { + color: #95a5a6; + font-weight: 400; + font-size: 20px; +} + +.ellipsis p { + margin-bottom:10px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.centered { + text-align: center; +} + +/* Links */ +a { + color: #3498db; + word-wrap: break-word; + + -webkit-transition: color 0.1s ease-in, background 0.1s ease-in; + -moz-transition: color 0.1s ease-in, background 0.1s ease-in; + -ms-transition: color 0.1s ease-in, background 0.1s ease-in; + -o-transition: color 0.1s ease-in, background 0.1s ease-in; + transition: color 0.1s ease-in, background 0.1s ease-in; +} + +a:hover, +a:focus { + color: #7b7b7b; + text-decoration: none; + outline: 0; +} + +a:before, +a:after { + -webkit-transition: color 0.1s ease-in, background 0.1s ease-in; + -moz-transition: color 0.1s ease-in, background 0.1s ease-in; + -ms-transition: color 0.1s ease-in, background 0.1s ease-in; + -o-transition: color 0.1s ease-in, background 0.1s ease-in; + transition: color 0.1s ease-in, background 0.1s ease-in; +} + + hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; +} + +.navbar-default { + background-color: #3498db; + border-color: transparent; +} + +.navbar-default .navbar-brand { + color: white; +} + +.navbar-default .navbar-nav > li > a { + color: white; +} + +/* Helpers */ + +.mt { + margin-top: 40px; + margin-bottom: 40px; +} + +.nh { + margin-top: 80px; + margin-bottom: 40px; +} + +.form-control { + height: 42px; + font-size: 18px; + width: 280px; +} + +i { + margin: 8px; + color: #3498db; +} + + +/* HeaderWrap */ +#headerwrap { + /* background: url(../img/bg01.jpg) no-repeat center top; */ + background-color: #3498db; + margin-top: -20px; + padding-top:120px; + background-attachment: relative; + background-position: center center; + min-height: 400px; + max-height: 800px; + width: 100%; + + -webkit-background-size: 100%; + -moz-background-size: 100%; + -o-background-size: 100%; + background-size: 100%; + + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; +} + +#headerwrap h1 { + color: white; + font-size: 60px; + font-weight: bold; + letter-spacing: 1px; +} + +#menubutton { + max-height: 50px; + margin-top: 6px; + padding-top: 15px; + margin-left: 10px; +} + +.panel-sponsor { + min-height: 350px; + text-align: justify; + text-justify: inter-word; +} + +@media (min-width: 768px) and (max-width: 991px) { + .navbar-collapse.collapse { + display: none !important; + } + .navbar-collapse.collapse.in { + display: block !important; + } + .navbar-header .collapse, .navbar-toggle { + display:block !important; + } + .navbar-header { + float:none; + } + .navbar-collapse { + overflow:hidden; + } + #menubutton { + margin-right: 40px; + width: 45px; + } + .text-shrink { + visibility: hidden; + } +} + +@media (max-width:767px) { + #menubutton { + max-height: 50px; + margin-top: 6px; + padding-top: 15px; + margin-left: 15px; + margin-right: 15px; + } +} + +/* entire container, keeps perspective */ +.flip-container { + perspective: 1000; +} + /* flip the pane when hovered */ + .flip-container:hover .flipper, .flip-container.hover .flipper { + transform: rotateY(180deg); + } + +.flip-container, .front, .back { + width: 180px; + height: 180px; +} + +/* flip speed goes here */ +.flipper { + transition: 0.6s; + transform-style: preserve-3d; + + position: relative; +} + +/* hide back of pane during swap */ +.front, .back { + backface-visibility: hidden; + + position: absolute; + top: 0; + left: 0; +} + +/* front pane, placed above back */ +.front { + z-index: 2; + /* for firefox 31 */ + transform: rotateY(0deg); +} + +/* back, initially hidden pane */ +.back { + transform: rotateY(180deg); +} + +.back img { + -moz-transform: scaleX(-1); + -o-transform: scaleX(-1); + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} + +.panel-box p { + height: 1.5em; +} diff --git a/buildroot/docs/website/css/timeline.css b/buildroot/docs/website/css/timeline.css new file mode 100644 index 0000000..df58461 --- /dev/null +++ b/buildroot/docs/website/css/timeline.css @@ -0,0 +1,184 @@ +.timeline { + list-style: none; + padding: 20px 0 20px; + position: relative; +} + +.timeline:before { + top: 0; + bottom: 0; + position: absolute; + content: " "; + width: 3px; + background-color: #E4E4E4; + left: 50%; + margin-left: -1.5px; + } + +.timeline > li { + margin-bottom: 20px; + position: relative; +} + +.timeline > li:before, +.timeline > li:after { + content: " "; + display: table; +} + +.timeline > li:after { + clear: both; +} + +.timeline > li:before, +.timeline > li:after { + content: " "; + display: table; +} + +.timeline > li:after { + clear: both; +} + +.timeline > li > .timeline-panel { + width: 46%; + float: left; + border: 1px solid #d4d4d4; + border-radius: 2px; + padding: 20px; + position: relative; + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.175); + background-color: white; +} + +.timeline > li > .timeline-panel:before { + position: absolute; + top: 26px; + right: -15px; + display: inline-block; + border-top: 15px solid transparent; + border-left: 15px solid #ccc; + border-right: 0 solid #ccc; + border-bottom: 15px solid transparent; + content: " "; +} + +.timeline > li > .timeline-panel:after { + position: absolute; + top: 27px; + right: -14px; + display: inline-block; + border-top: 14px solid transparent; + border-left: 14px solid #fff; + border-right: 0 solid #fff; + border-bottom: 14px solid transparent; + content: " "; +} + +.timeline > li > .timeline-badge { + color: #fff; + width: 50px; + height: 50px; + line-height: 50px; + font-size: 1.4em; + text-align: center; + position: absolute; + top: 16px; + left: 50%; + margin-left: -25px; + background-color: #E6E6E6; + z-index: 100; + border-top-right-radius: 50%; + border-top-left-radius: 50%; + border-bottom-right-radius: 50%; + border-bottom-left-radius: 50%; +} + +.timeline > li.timeline-inverted > .timeline-panel { + float: right; +} + +.timeline > li.timeline-inverted > .timeline-panel:before { + border-left-width: 0; + border-right-width: 15px; + left: -15px; + right: auto; +} + +.timeline > li.timeline-inverted > .timeline-panel:after { + border-left-width: 0; + border-right-width: 14px; + left: -14px; + right: auto; +} + +.timeline-badge.primary { + background-color: #2e6da4 !important; +} + +.timeline-badge.success { + background-color: #3f903f !important; +} + +.timeline-badge.warning { + background-color: #f0ad4e !important; +} + +.timeline-badge.danger { + background-color: #d9534f !important; +} + +.timeline-badge.info { + background-color: #5bc0de !important; +} + +.timeline-title { + margin-top: 0; + color: inherit; +} + +.timeline-body > p, +.timeline-body > ul { + margin-bottom: 0; +} + +.timeline-body > p + p { + margin-top: 5px; +} + +@media (max-width: 767px) { + ul.timeline:before { + left: 40px; + } + + ul.timeline > li > .timeline-panel { + width: calc(100% - 90px); + width: -moz-calc(100% - 90px); + width: -webkit-calc(100% - 90px); + } + + ul.timeline > li > .timeline-badge { + left: 15px; + margin-left: 0; + top: 16px; + } + + ul.timeline > li > .timeline-panel { + float: right; + } + + ul.timeline > li > .timeline-panel:before { + border-left-width: 0; + border-right-width: 15px; + left: -15px; + right: auto; + } + + ul.timeline > li > .timeline-panel:after { + border-left-width: 0; + border-right-width: 14px; + left: -14px; + right: auto; + } +} diff --git a/buildroot/docs/website/docs.html b/buildroot/docs/website/docs.html new file mode 100644 index 0000000..9ef202f --- /dev/null +++ b/buildroot/docs/website/docs.html @@ -0,0 +1,119 @@ + + +
+
+
+ +
+
Documentation
+
+

The Buildroot user manual is where you want to start reading if you + wish to understand how Buildroot works, or wish to change/extend/fix + things. It is available as:

+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

HTML
+ Stable | + Nightly +

+ +
+ +
+
+
+
+ +
+
+ +
+
+
+ +

PDF
+ Stable | + Nightly +

+ +
+ +
+
+
+
+ +
+
+ +
+
+
+ +

ASCII
+ Stable | + Nightly +

+ +
+
+ +

If you find any errors (factual, grammatical, whatever) please + report them to us.

+
+
+ +
+
Training
+
+

Bootlin (formerly Free Electrons) + offers a complete 3-days + training course on Buildroot. They also make the training + materials freely available:

+ +
+
+
+
Slides preview
+
+
+ buildroot slides +
+
+
+
+ +
+
+
Training materials
+ +
+
+
+
+
+ +
+
+
+ + + diff --git a/buildroot/docs/website/download.html b/buildroot/docs/website/download.html new file mode 100644 index 0000000..cf99b22 --- /dev/null +++ b/buildroot/docs/website/download.html @@ -0,0 +1,217 @@ + + +
+
+
+ +
+
Download
+
+ +

Latest stable / long term support release: 2018.02

+ +
+
+
+
+
+ +
+
+ +
+
+
+

buildroot-2018.02.tar.gz

+

PGP signature

+
+
+
+
+
+ +
+
+ +
+
+
+ +

buildroot-2018.02.tar.bz2

+

PGP signature

+
+
+ + This and earlier releases (and their PGP signatures) can always be downloaded from + http://buildroot.net/downloads/. +
+
+ +
+
Source code
+
+ +
+
+
+
Repository
+
+

The buildroot repository can be browsed online through cgit at + http://git.buildroot.net/buildroot. + To grab a copy of the repository use

+ + +
+ + + + +

+ +

+ Or if you're behind a firewall blocking git: +

+ +
+ + + + +

+ +

+ + Please use the native git protocol if at all possible, as it's a lot + more efficient than HTTP. + +

+ + If you are not already familiar with using Git, we recommend you visit the Git website. + +

+ + Once you've checked out a copy of the source tree, you can update your source + tree at any time so it is in sync with the latest and greatest by entering your + buildroot directory and running the command: + +

+git pull
+
+ + Because you've only been granted anonymous access to the tree, you won't be + able to push your changes to the repo. Changes can instead be submitted for + inclusion by posting them to the buildroot mailing list. +
+
+
+ +
+
+
Tarballs
+
+ You can also obtain daily snapshots of the latest Buildroot source tree if you + want to follow development, but cannot or do not wish to use Git. + + + +

+ Older versions can be downloaded from the release archive. +

+
+
+
+
+
+
+ +
+
+
+ + diff --git a/buildroot/docs/website/favicon.ico b/buildroot/docs/website/favicon.ico new file mode 100644 index 0000000..fa9d240 Binary files /dev/null and b/buildroot/docs/website/favicon.ico differ diff --git a/buildroot/docs/website/fonts/glyphicons-halflings-regular.woff b/buildroot/docs/website/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..d83c539 Binary files /dev/null and b/buildroot/docs/website/fonts/glyphicons-halflings-regular.woff differ diff --git a/buildroot/docs/website/footer.html b/buildroot/docs/website/footer.html new file mode 100644 index 0000000..279c8b1 --- /dev/null +++ b/buildroot/docs/website/footer.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/buildroot/docs/website/header.html b/buildroot/docs/website/header.html new file mode 100644 index 0000000..ef6724f --- /dev/null +++ b/buildroot/docs/website/header.html @@ -0,0 +1,52 @@ + + + + + + + + + + + Buildroot - Making Embedded Linux Easy + + + + + + + + + + diff --git a/buildroot/docs/website/images/boundary-devices-logo.png b/buildroot/docs/website/images/boundary-devices-logo.png new file mode 100644 index 0000000..35d7a93 Binary files /dev/null and b/buildroot/docs/website/images/boundary-devices-logo.png differ diff --git a/buildroot/docs/website/images/browser.png b/buildroot/docs/website/images/browser.png new file mode 100644 index 0000000..56039df Binary files /dev/null and b/buildroot/docs/website/images/browser.png differ diff --git a/buildroot/docs/website/images/bug-buddy.png b/buildroot/docs/website/images/bug-buddy.png new file mode 100644 index 0000000..5d38fd8 Binary files /dev/null and b/buildroot/docs/website/images/bug-buddy.png differ diff --git a/buildroot/docs/website/images/buildroot-slides.png b/buildroot/docs/website/images/buildroot-slides.png new file mode 100644 index 0000000..6ecba3d Binary files /dev/null and b/buildroot/docs/website/images/buildroot-slides.png differ diff --git a/buildroot/docs/website/images/calao-logo.png b/buildroot/docs/website/images/calao-logo.png new file mode 100644 index 0000000..c01ecf6 Binary files /dev/null and b/buildroot/docs/website/images/calao-logo.png differ diff --git a/buildroot/docs/website/images/circuitco-logo.png b/buildroot/docs/website/images/circuitco-logo.png new file mode 100644 index 0000000..8b315da Binary files /dev/null and b/buildroot/docs/website/images/circuitco-logo.png differ diff --git a/buildroot/docs/website/images/clippy.svg b/buildroot/docs/website/images/clippy.svg new file mode 100644 index 0000000..d827e82 --- /dev/null +++ b/buildroot/docs/website/images/clippy.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/buildroot/docs/website/images/email.png b/buildroot/docs/website/images/email.png new file mode 100644 index 0000000..367dadc Binary files /dev/null and b/buildroot/docs/website/images/email.png differ diff --git a/buildroot/docs/website/images/fluendo-logo.png b/buildroot/docs/website/images/fluendo-logo.png new file mode 100644 index 0000000..b4d02cb Binary files /dev/null and b/buildroot/docs/website/images/fluendo-logo.png differ diff --git a/buildroot/docs/website/images/free-electrons-logo.png b/buildroot/docs/website/images/free-electrons-logo.png new file mode 100644 index 0000000..0a77404 Binary files /dev/null and b/buildroot/docs/website/images/free-electrons-logo.png differ diff --git a/buildroot/docs/website/images/gift.png b/buildroot/docs/website/images/gift.png new file mode 100644 index 0000000..f527f82 Binary files /dev/null and b/buildroot/docs/website/images/gift.png differ diff --git a/buildroot/docs/website/images/github_hash_mongrel2.png b/buildroot/docs/website/images/github_hash_mongrel2.png new file mode 100644 index 0000000..c695c31 Binary files /dev/null and b/buildroot/docs/website/images/github_hash_mongrel2.png differ diff --git a/buildroot/docs/website/images/google-logo.png b/buildroot/docs/website/images/google-logo.png new file mode 100644 index 0000000..bceab16 Binary files /dev/null and b/buildroot/docs/website/images/google-logo.png differ diff --git a/buildroot/docs/website/images/hammer.png b/buildroot/docs/website/images/hammer.png new file mode 100644 index 0000000..454a5e5 Binary files /dev/null and b/buildroot/docs/website/images/hammer.png differ diff --git a/buildroot/docs/website/images/imgtec-logo.png b/buildroot/docs/website/images/imgtec-logo.png new file mode 100644 index 0000000..f8a0ffa Binary files /dev/null and b/buildroot/docs/website/images/imgtec-logo.png differ diff --git a/buildroot/docs/website/images/irc.png b/buildroot/docs/website/images/irc.png new file mode 100644 index 0000000..442be4d Binary files /dev/null and b/buildroot/docs/website/images/irc.png differ diff --git a/buildroot/docs/website/images/logo.png b/buildroot/docs/website/images/logo.png new file mode 100644 index 0000000..2db743b Binary files /dev/null and b/buildroot/docs/website/images/logo.png differ diff --git a/buildroot/docs/website/images/logo.xcf b/buildroot/docs/website/images/logo.xcf new file mode 100644 index 0000000..9724890 Binary files /dev/null and b/buildroot/docs/website/images/logo.xcf differ diff --git a/buildroot/docs/website/images/logo_small.png b/buildroot/docs/website/images/logo_small.png new file mode 100644 index 0000000..eab9540 Binary files /dev/null and b/buildroot/docs/website/images/logo_small.png differ diff --git a/buildroot/docs/website/images/menuconfig.png b/buildroot/docs/website/images/menuconfig.png new file mode 100644 index 0000000..423694f Binary files /dev/null and b/buildroot/docs/website/images/menuconfig.png differ diff --git a/buildroot/docs/website/images/mind-logo.png b/buildroot/docs/website/images/mind-logo.png new file mode 100644 index 0000000..ecc3fa0 Binary files /dev/null and b/buildroot/docs/website/images/mind-logo.png differ diff --git a/buildroot/docs/website/images/nconfig.png b/buildroot/docs/website/images/nconfig.png new file mode 100644 index 0000000..cc05d6e Binary files /dev/null and b/buildroot/docs/website/images/nconfig.png differ diff --git a/buildroot/docs/website/images/owi-smile-logo.png b/buildroot/docs/website/images/owi-smile-logo.png new file mode 100644 index 0000000..9744ca1 Binary files /dev/null and b/buildroot/docs/website/images/owi-smile-logo.png differ diff --git a/buildroot/docs/website/images/package.png b/buildroot/docs/website/images/package.png new file mode 100644 index 0000000..9dd8b1e Binary files /dev/null and b/buildroot/docs/website/images/package.png differ diff --git a/buildroot/docs/website/images/pdf-icon.png b/buildroot/docs/website/images/pdf-icon.png new file mode 100644 index 0000000..71ae983 Binary files /dev/null and b/buildroot/docs/website/images/pdf-icon.png differ diff --git a/buildroot/docs/website/images/synopsys-logo.png b/buildroot/docs/website/images/synopsys-logo.png new file mode 100644 index 0000000..d4fbd89 Binary files /dev/null and b/buildroot/docs/website/images/synopsys-logo.png differ diff --git a/buildroot/docs/website/images/text.png b/buildroot/docs/website/images/text.png new file mode 100644 index 0000000..e2eee54 Binary files /dev/null and b/buildroot/docs/website/images/text.png differ diff --git a/buildroot/docs/website/images/tux-flat.png b/buildroot/docs/website/images/tux-flat.png new file mode 100644 index 0000000..782699f Binary files /dev/null and b/buildroot/docs/website/images/tux-flat.png differ diff --git a/buildroot/docs/website/images/xconfig.png b/buildroot/docs/website/images/xconfig.png new file mode 100644 index 0000000..cb99a3a Binary files /dev/null and b/buildroot/docs/website/images/xconfig.png differ diff --git a/buildroot/docs/website/images/zip.png b/buildroot/docs/website/images/zip.png new file mode 100644 index 0000000..02a1dc1 Binary files /dev/null and b/buildroot/docs/website/images/zip.png differ diff --git a/buildroot/docs/website/index.html b/buildroot/docs/website/index.html new file mode 100644 index 0000000..300adbb --- /dev/null +++ b/buildroot/docs/website/index.html @@ -0,0 +1,151 @@ + + +
+
+
+
+ +
+
+

Buildroot
+ Making Embedded Linux Easy

+ + +
+
+
+
+ + +
+
+
+

Buildroot is a simple, efficient and easy-to-use tool to + generate embedded Linux systems through cross-compilation.

+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ +

Can handle everything

+

Cross-compilation toolchain, root filesystem generation, + kernel image compilation and bootloader compilation.

+
+ +
+
+
+
+ +
+
+ +
+
+
+ +

Is very easy

+

Thanks to its kernel-like menuconfig, gconfig and + xconfig configuration interfaces, building a basic system with + Buildroot is easy and typically takes 15-30 minutes.

+ +
+ +
+
+
+
+ +
+
+ +
+
+
+ +

Supports several thousand packages

+

X.org stack, Gtk3, Qt 5, GStreamer, Webkit, Kodi, a large number of network-related and system-related utilities are supported.

+ +
+
+
+
+ +
+
+
+

Buildroot is for Everyone.

+

Has a simple structure that makes it easy to understand and extend. It relies only on the well-known Makefile language.

+
+
+ +
+
+ +
+
+
+ +
+
+
+

Our recent activity.

+

Buildroot is an open source project: many developers contribute to it daily.

+
+
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+ + diff --git a/buildroot/docs/website/js/buildroot.js b/buildroot/docs/website/js/buildroot.js new file mode 100644 index 0000000..ec28cbb --- /dev/null +++ b/buildroot/docs/website/js/buildroot.js @@ -0,0 +1,94 @@ +function load_activity(feedurl, divid) { + var yqlURL = "https://query.yahooapis.com/v1/public/yql"; + var yqlQS = "?q=select%20entry%20from%20xml%20where%20url%20%3D%20'"; + var yqlOPTS = "'%20limit%2010&format=json&callback="; + var container = document.getElementById(divid); + var url = yqlURL + yqlQS + encodeURIComponent(feedurl) + yqlOPTS; + + $.getJSON(url, function(data){ + var result = data.query.results; + var loaded = 0; + var nb_display = 8; + if (result==null) return; + for (var i = 0; i < result.feed.length; i++) { + var entry = result.feed[i].entry; + if (entry.title.indexOf("git commit") != -1) + continue; + loaded += 1; + if (loaded > nb_display) + break; + var div = document.createElement("p"); + var link = document.createElement("a"); + var d = new Date(entry.published); + var data = '[' + d.toLocaleDateString() + '] ' + entry.title + var text = document.createTextNode(data); + link.appendChild(text); + link.title = entry.title; + link.href = entry.link.href; + div.appendChild(link); + container.appendChild(div); + } + var empty = nb_display - loaded; + for (var i = 0; i < empty; i++) { + container.appendChild(document.createElement("p")); + } + }); +} + +function google_analytics() { + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-21761074-1']); + _gaq.push(['_setDomainName', 'none']); + _gaq.push(['_setAllowLinker', true]); + _gaq.push(['_trackPageview']); + + var ga = document.createElement('script'); + ga.type = 'text/javascript'; + ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(ga, s); +} + +function showTooltip(elem, msg) { + elem.setAttribute('class', 'btn tooltipped tooltipped-s'); + elem.setAttribute('aria-label', msg); +} + +var clipboard = new Clipboard('.btn'); + +$(function () { + $('[data-toggle="tooltip"]').tooltip() +}) + +clipboard.on('success', function(e) { + e.clearSelection(); + $(e.trigger).tooltip('show'); +}); + +$(function() { + $('a[href*=\\#]:not([href=\\#])').click(function() { + if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { + var target = $(this.hash); + target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); + if (target.length) { + $('html,body').animate({ + scrollTop: target.offset().top + }, 1000); + return false; + } + } + }); +}); + +jQuery(document).ready(function($) { + var url = window.location.href; + // Get the basename of the URL + url = url.split(/[\\/]/).pop() + $('.nav a[href="/' + url + '"]').parent().addClass('active'); + + load_activity("http://buildroot-busybox.2317881.n4.nabble.com/Buildroot-busybox-ft2.xml", "mailing-list-activity"); + load_activity("http://git.buildroot.org/buildroot/atom/?h=master", "commit-activity"); + + $('#slides').html('') +}); diff --git a/buildroot/docs/website/news.html b/buildroot/docs/website/news.html new file mode 100644 index 0000000..f729a59 --- /dev/null +++ b/buildroot/docs/website/news.html @@ -0,0 +1,3946 @@ + + + + +
+
+
+ +

News

+
    + +
  • +
    +
    +
    +

    2018.02 released

    +

    4 March 2018

    +
    +
    +

    The stable 2018.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details + and go to the downloads page to pick up the + 2018.02 release.

    + +

    Notice that this is a long term support release which will be + supported with security and other important fixes until February 2019.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02-rc3 released

    +

    27 February 2018

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2018.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02-rc2 released

    +

    15 February 2018

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2018.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2018.02-rc1 released

    +

    5 February 2018

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the + CHANGES + file for details and read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2018.02-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.10 released

    +

    31 January 2018

    +
    +
    +

    The 2017.02.10 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.9 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.10 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.11.2 released

    +

    21 January 2018

    +
    +
    +

    The 2017.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.11.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.9 released

    +

    1 January 2018

    +
    +
    +

    The 2017.02.9 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.8 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.9 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.11.1 released

    +

    31 December 2017

    +
    +
    +

    The 2017.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.11 released

    +

    30 November 2017

    +
    +
    +

    The stable 2017.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08.2 released

    +

    29 November 2017

    +
    +
    +

    The 2017.08.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.08.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.08.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.8 released

    +

    27 November 2017

    +
    +
    +

    The 2017.02.8 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.7 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.8 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.11-rc2 released

    +

    13 November 2017

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2017.11-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.11-rc1 released

    +

    6 November 2017

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.11-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.7 released

    +

    28 October 2017

    +
    +
    +

    The 2017.02.7 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.6 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.7 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08.1 released

    +

    23 October 2017

    +
    +
    +

    The 2017.08.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.08 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.6 released

    +

    24 September 2017

    +
    +
    +

    The 2017.02.6 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.5 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.6 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08 released

    +

    1 September 2017

    +
    +
    +

    The stable 2017.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details + and go to the downloads page to pick up the + 2017.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08-rc3 released

    +

    23 August 2017

    +
    +
    +

    Another release candidate, on the road to the final 2017.08 + release. A number of fixes and cleanups in various packages + and defconfigs. See + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.08-rc3 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08-rc2 released

    +

    11 August 2017

    +
    +
    +

    Another release candidate, on the road to the final 2017.08 + release. A number of fixes and cleanups in various packages + and defconfigs. See + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.08-rc2 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.08-rc1 released

    +

    2 August 2017

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.08-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05.2 released

    +

    27 July 2017

    +
    +
    +

    The 2017.05.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.05.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.05.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.5 released

    +

    27 July 2017

    +
    +
    +

    The 2017.02.5 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.4 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.5 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05.1 released

    +

    4 July 2017

    +
    +
    +

    The 2017.05.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.05 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.05.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.4 released

    +

    4 July 2017

    +
    +
    +

    The 2017.02.4 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.3 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.4 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.3 released

    +

    2 June 2017

    +
    +
    +

    The 2017.02.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.3 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05 released

    +

    31 May 2017

    +
    +
    +

    The stable 2017.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05-rc3 released

    +

    30 May 2017

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2017.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05-rc2 released

    +

    17 May 2017

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2017.05-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.05-rc1 released

    +

    8 May 2017

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.05-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.2 released

    +

    1 May 2017

    +
    +
    +

    The 2017.02.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02.1 released

    +

    4 April 2017

    +
    +
    +

    The 2017.02.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2017.02 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11.3 released

    +

    10 March 2017

    +
    +
    +

    The 2016.11.3 bugfix release is out, fixing a number of important / + security related issues discovered since the 2016.11.2 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11.3 release.

    +

    Notice that this is the final 2016.11.x release. Users are + urged to migrate to the 2017.02.x series instead.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02 released

    +

    28 February 2017

    +
    +
    +

    The stable 2017.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2017.02 release.

    + +

    Notice that this is a long term support release which will be + supported with security and other important fixes until February 2018.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02-rc3 released

    +

    26 February 2017

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2017.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02-rc2 released

    +

    20 February 2017

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2017.02-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2017.02-rc1 released

    +

    11 February 2017

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, read + the announcement. +

    + +

    Head to the downloads page to pick up the + 2017.12-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11.2 released

    +

    25 January 2017

    +
    +
    +

    The 2016.11.2 bugfix release is out, fixing a number of important / + security related issues discovered since the 2016.11.1 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11.2 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11.1 released

    +

    29 December 2016

    +
    +
    +

    The 2016.11.1 bugfix release is out, fixing a number of important / + security related issues discovered since the 2016.11 release. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11 released

    +

    30 November 2016

    +
    +
    +

    The stable 2016.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11-rc3 released

    +

    28 November 2016

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2016.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11-rc2 released

    +

    13 November 2016

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details. +

    + +

    Head to the downloads page to pick up the + 2016.11-rc2 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.11-rc1 released

    +

    3 November 2016

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details, read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2016.11-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.08.1 released

    +

    21 September 2016

    +
    +
    +

    The 2016.08.1 bugfix release is out. This release fixes a + potential entire root filesystem removal issue with the + external toolchain handling discovered since the 2016.08 + release. See the + CHANGES + file for more details, read the + announcement and go to the + downloads page to pick up the + 2016.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.08 released

    +

    1 September 2016

    +
    +
    +

    The stable 2016.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.08-rc3 released

    +

    30 August 2016

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2016.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.08-rc2 released

    +

    17 August 2016

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2016.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.08-rc1 released

    +

    6 August 2016

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details and read the + announcement +

    + +

    Head to the downloads page to pick up the + 2016.08-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.05 released

    +

    1 March 2016

    +
    +
    +

    The stable 2016.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.05-rc3 released

    +

    26 May 2016

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2016.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.05-rc2 released

    +

    17 May 2016

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2016.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.05-rc1 released

    +

    10 May 2016

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details and read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2016.05-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.02 released

    +

    1 March 2016

    +
    +
    +

    The stable 2016.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2016.02 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.02-rc3 released

    +

    27 February 2016

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2016.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.02-rc2 released

    +

    18 February 2016

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2016.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2016.02-rc1 released

    +

    10 February 2016

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details and read the + announcement. +

    + +

    Head to the downloads page to pick up the + 2016.02-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.11.1 released

    +

    5 December 2015

    +
    +
    +

    The 2015.11.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered + since the 2015.11 release. See the + CHANGES + file for more details, and go to the + downloads page to pick up the + 2015.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.11 released

    +

    30 November 2015

    +
    +
    +

    The stable 2015.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.11-rc3 released

    +

    26 November 2015

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2015.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.11-rc2 released

    +

    19 November 2015

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See the + CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2015.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.11-rc1 released

    +

    7 November 2015

    +
    +
    +

    We have a new release candidate! Lots of + changes all over the tree, see + the CHANGES + file for details. See also + the announcement + e-mail.

    + +

    Head to the downloads page to pick up the + 2015.11-rc1 + release candidate, and report any + problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.08.1 released

    +

    6 September 2015

    +
    +
    +

    The 2015.08.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered since + the 2015.08 release. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2015.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.08 released

    +

    31 August 2015

    +
    +
    +

    The stable 2015.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.08-rc2 released

    +

    24 August 2015

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see + the CHANGES + file for details, and + the release + announcement.

    + +

    Head to the downloads page to pick up the + 2015.08-rc2 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.08-rc1 released

    +

    5 August 2015

    +
    +
    +

    We have a new release candidate! Lots of changes all over the tree, see + the CHANGES + file for details, read + the announcement.

    + +

    Head to the downloads page to pick up the + 2015.08-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.05 released

    +

    31 May 2015

    +
    +
    +

    The stable 2015.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.05-rc3 released

    +

    22 May 2015

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up + the 2015.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.05-rc2 released

    +

    11 May 2015

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up the + 2015.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.05-rc1 released

    +

    4 May 2015

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2015.05-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.02 released

    +

    1 March 2015

    +
    +
    +

    The stable 2015.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2015.02 release.

    +
    +
    +
  • + + +
  • +
    +
    +
    +

    2015.02-rc3 released

    +

    24 February 2015

    +
    +
    +

    Release candidate 3 is out with more cleanups and security + / build fixes. See + the CHANGES + file for details.

    +

    Head to the downloads page to + pick up the + 2015.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.02-rc2 released

    +

    15 February 2015

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2015.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2015.02-rc1 released

    +

    8 February 2015

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2015.02-rc1 + release candidate, and report any problems found to + the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.11 released

    +

    1 December 2014

    +
    +
    +

    The stable 2014.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2014.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.11-rc3 released

    +

    28 November 2014

    +
    +
    +

    Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to + pick up the + 2014.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.11-rc2 released

    +

    21 November 2014

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Report from Buildroot Developers Meeting

    +

    13 November 2014

    +
    +
    +

    A report from the recent + + Buildroot Developers Meeting is now + available.

    + +

    Once again, thanks to all the participants and to + Mind for sponsoring the event.

    + +

    The next Developer Days will take place on February 2nd and + 3rd in Brussels, Belgium, right + after FOSDEM. See + the wiki + for more details.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.11-rc1 released

    +

    12 November 2014

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2014.11-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.08 released

    +

    1 September 2014

    +
    +
    +

    The stable 2014.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2014.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.08-rc3 released

    +

    26 August 2014

    +
    +
    +

    Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.08-rc2 released

    +

    18 August 2014

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.08-rc1 released

    +

    8 August 2014

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2014.08-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.05 released

    +

    31 May 2014

    +
    +
    +

    The stable 2014.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2014.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.05-rc3 released

    +

    28 May 2014

    +
    +
    +

    Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.05-rc2 released

    +

    21 May 2014

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to + pick up the + 2014.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.05-rc1 released

    +

    13 May 2014

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2014.05-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    27 February 2014

    +

    2014.02 released

    +
    +
    +

    The stable 2014.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2014.02 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    25 February 2014

    +

    2014.02-rc3 released

    +
    +
    +

    Release candidate 3 is out with more cleanups and build + fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    20 February 2014

    +

    2014.02-rc2 released

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2014.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2014.02-rc1 released

    +

    11 February 2014

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2014.02-rc1 + release candidate, and report any problems found to the + mailing list or + bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    9 February 2014

    +

    Report from Buildroot Developers Meeting

    +
    +
    +

    A report from the recent + + Buildroot Developers Meeting is now + available.

    + +

    Once again, thanks to all the participants and to + Google and + Mind for sponsoring the event.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Upcoming Buildroot Developers meeting

    +

    30 January 2014

    +
    +
    +

    The upcoming Buildroot Developers meeting will take place in + Brussels on February, 3rd and 4th, after the + FOSDEM conference. Additional + details about the meeting can be found on the corresponding + + wiki page.

    + +

    Persons not able to join the meeting in Brussels can participate + remotely using Google Hangouts. Simply give your Google address to + thomas.petazzoni@free-electrons.com.

    + +

    This meeting is sponsored by + Google (for the meeting room) + and Mind (for the dinner). + Thanks to our sponsors!

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.11 released

    +

    30 November 2013

    +
    +
    +

    The stable 2013.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the announcement + and go to the downloads page to pick up the + 2013.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Slides from Embedded Linux Conference Europe

    +

    30 November 2013

    +
    +
    +

    The slides from the Buildroot presentation at the recent + Embedded Linux Conference Europe 2013 + are now + available.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.11-rc3 released

    +

    18 November 2013

    +
    +
    +

    Another week, another release candidate with more + fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.11-rc2 released

    +

    18 November 2013

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Announcement of the next Buildroot Developer Days

    +

    13 November 2013

    +
    +
    +

    The next Buildroot Developer Days meeting will take + place on Monday 3rd and Tuesday 4th February 2014 in Brussels, + Belgium - Just after + FOSDEM (February + 1st/2nd). This two days meeting is mainly open to Buildroot + developers and contributors, or Buildroot users having a prior + experience with the tool. It will allow developers to work on + Buildroot and discuss current issues, the future directions, and + more.

    + +

    In addition to the Buildroot event, we encourage embedded Linux + developers to propose talks for the Embedded and Mobile Developer + Room at FOSDEM. See + the CFP.

    + +

    We would like to thank our + sponsor Google for sponsoring + the event by providing all the needed logistics.

    + +

    For more details, see the + wiki + page dedicated to the meeting.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.11-rc1 released

    +

    12 November 2013

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2013.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Report from Buildroot Developers Meeting

    +

    11 November 2013

    +
    +
    +

    A report from the recent + + Buildroot Developers Meeting is now + available.

    + +

    Once again, thanks to all the participants and to + Imagination Technologies + for sponsoring the event.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.08.1 released

    +

    17 September 2013

    +
    +
    +

    The 2013.08.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered since + the 2013.08 release. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2013.08.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot Developer Days

    +

    16 September 2013

    +
    +
    +

    The next Buildroot Developer Days meeting will take + place on Saturday October 26th and Sunday October 27th 2013 in + Edinburgh, UK - Just after the + Embedded Linux Conference Europe (October 23th-24th). This two + days meeting is mainly open to Buildroot developers and + contributors, or Buildroot users having a prior experience with + the tool. It will allow developers to work on Buildroot and + discuss current issues, the future directions, and more.

    + +

    For more details, see the + wiki + page dedicated to the meeting.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.08 released

    +

    31 August 2013

    +
    +
    +

    The stable 2013.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the announcement + and go to the downloads page to pick up the + 2013.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.08-rc3 released

    +

    29 August 2013

    +
    +
    +

    Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.08-rc3 + release candidate, and report any problems found to the mailing list or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.08-rc2 released

    +

    16 August 2013

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.08-rc1 released

    +

    5 August 2013

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.05 released

    +

    31 May 2013

    +
    +
    +

    The stable 2013.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2013.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.05-rc3 released

    +

    25 May 2013

    +
    +
    +

    Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.05-rc2 released

    +

    15 May 2013

    +
    +
    +

    Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.05-rc1 released

    +

    8 May 2013

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2013.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.02 released

    +

    28 February 2013

    +
    +
    +

    The stable 2013.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details + and go to the downloads page to pick up the + 2013.02 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.02-rc3 released

    +

    26 February 2013

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.02-rc2 released

    +

    19 February 2013

    +
    +
    +

    Another week, another release candidate with more cleanups and + build fixes. See the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2013.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2013.02-rc1 released

    +

    10 February 2013

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2013.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Report from Buildroot Developers Meeting

    +

    10 February 2013

    +
    +
    +

    A report from the recent Buildroot Developers Meeting is now + available. + Embedded Linux News also has a + + writeup about the event, including photos.

    + +

    Once again, thanks to all the participants and to + Google for sponsoring the event.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Next Buildroot Developers Meeting next to FOSDEM, Brussels

    +

    12 January 2013

    +
    +
    +

    The next Buildroot Developers Meeting will take place on Monday + 4th February 2013 and Tuesday 5th February 2013 in Brussels, + Belgium. Those dates have been chosen to immediately follow the + great FOSDEM conference.

    + +

    Attending this meeting is free, after registration by + contacting Thomas + Petazzoni. For more details about the meeting, please see + the related + Wiki page.

    + +

    We would like to + thank Google for providing the + meeting location and the Internet connection, and offering free + lunch and refreshments to the participants.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.11.1 released

    +

    3 January 2013

    +
    +
    +

    The 2012.11.1 bugfix release is out - Thanks to everyone + contributing. This release fixes critical issues discovered since + the 2012.11 release, most importantly with non-largefile builds on + recent Ubuntu versions. See the + CHANGES + file for more details, + and go to the downloads page to pick up the + 2012.11.1 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.11 released

    +

    2 December 2012

    +
    +
    +

    The stable 2012.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details + and go to the downloads page to pick up the + 2012.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.11-rc2 released

    +

    30 November 2012

    +
    +
    +

    RC2 is out with more bugfixes - See + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2012.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.11-rc1 released

    +

    17 November 2012

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2012.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot Developer Day

    +

    17 November 2012

    +
    +
    +

    A report from the recent Buildroot Developer Days + meeting in Barcelona, Spain is + now available. + Many thanks to all the participants, and a special thanks to + Arnout Vandecappelle from mind + for taking notes and Thomas Petazzoni + from Free Electrons + for handling all the practical arrangements, and naturally + our sponsors, Fluendo + and Synopsis. +

    +

    The next Developer Days will take place on February 4th and + 5th in Brussels, Belgium, right + after FOSDEM.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.08 released

    +

    31 August 2012

    +
    +
    +

    The stable 2012.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details and go to the downloads page to pick up the + 2012.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.08-rc3 released

    +

    25 August 2012

    +
    +
    +

    We have a new release candidate! Various fixes, and + addition of licensing informations on many + packages. See CHANGES + file for details

    + +

    Head to the downloads page to pick up the + 2012.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.08-rc2 released

    +

    15 August 2012

    +
    +
    +

    We have a new release candidate! Various fixes, and addition + of licensing informations on many + packages. See CHANGES + file for details

    + +

    Head to the downloads page to pick up the + 2012.08-rc2 + release candidate, and report any problems found to the mailing list or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.08-rc1 released

    +

    1 August 2012

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details

    + +

    Head to the downloads page to pick up the + 2012.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot Developer Day

    +

    22 July 2012

    +
    +
    +

    The next Buildroot Developer Day meeting will take place + on Saturday November 3th and Sunday November 4th 2012 in + Barcelona, Spain, just before + the Embedded + Linux Conference Europe (November 5th-7th). This two days + meeting is mainly opened to Buildroot developers and contributors, + or Buildroot users having a prior experience with the tool. This + meeting will allow developers to work and Buildroot, and discuss + current issues, the future directions, and more.

    + +

    For more details, see + the wiki + page dedicated to the meeting.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.05 released

    +

    30 May 2012

    +
    +
    +

    The stable 2012.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2012.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.05-rc3 released

    +

    25 May 2012

    +
    +
    +

    RC3 is out with more bugfixes - See + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2012.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.05-rc2 released

    +

    18 May 2012

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2012.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.05-rc1 released

    +

    10 May 2012

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2012.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Autobuilder Results Online

    +

    20 April 2012

    +
    +
    +

    The status of the autobuilders, which do repeated + randpackageconfig builds for continuous + integration testing, is now online + at autobuild.buildroot.org. The + code behind it can be found + in git.

    + +

    Thanks to Thomas Petazzoni for running the web interface, and + to The GCC Compile + Farm and Free + Electrons for hosting builders. Thomas also sends out a daily + summary of the build status to the mailing list.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.02 released

    +

    29 February 2012

    +
    +
    +

    The stable 2012.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2012.02 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.02-rc3 released

    +

    27 February 2012

    +
    +
    +

    RC3 is out with more bugfixes - See + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2012.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.02-rc2 released

    +

    19 February 2012

    +
    +
    +

    Another week, another release candidate with more cleanups + and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2012.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2012.02-rc1 released

    +

    12 February 2012

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement.

    + +

    Head to the downloads page to pick up the + 2012.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot Developer Day

    +

    31 January 2012

    +
    +
    +

    Another Buildroot Developer Day will take place on + Friday, February 3rd in Brussels, Belgium - The day + before FOSDEM. See the + announcement + or + the Free + Electrons blog for more info.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.11 released

    +

    30 November 2011

    +
    +
    +

    The stable 2011.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2011.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.11-rc3 released

    +

    26 November 2011

    +
    +
    +

    RC3 is out with more bugfixes - See + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2011.11-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.11-rc2 released

    +

    18 November 2011

    +
    +
    +

    Another week, another release candidate with a bunch of + cleanups and build fixes. See + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2011.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.11-rc1 released

    +

    11 November 2011

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement + +

    Head to the downloads page to pick up the + 2011.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.08 released

    +

    31 August 2011

    +
    +
    +

    The stable 2011.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, and go to the downloads page to pick up the + 2011.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.08-rc2 released

    +

    29 August 2011

    +
    +
    +

    RC2 is out with more bugfixes. See + the CHANGES + file for details, and read the + announcement. + +

    Head to the downloads page to pick up the + 2011.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.08-rc1 released

    +

    4 August 2011

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

    Head to the downloads page to pick up the + 2011.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.05 released

    +

    27 May 2011

    +
    +
    +

    The stable 2011.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, and go to the downloads page to pick up the + 2011.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.05-rc2 released

    +

    24 May 2011

    +
    +
    +

    RC2 is out with more bugfixes. See + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2011.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.05-rc1 released

    +

    18 May 2011

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

    Head to the downloads page to pick up the + 2011.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.02 released

    +

    28 February 2011

    +
    +
    +

    The stable 2011.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2011.02 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.02-rc2 released

    +

    24 February 2011

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2011.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2011.02-rc1 released

    +

    14 February 2011

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

    Head to the downloads page to pick up the + 2011.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.11 released

    +

    30 November 2010

    +
    +
    +

    The stable 2010.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2010.11 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.11-rc2 released

    +

    25 November 2010

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details.

    + +

    Head to the downloads page to pick up the + 2010.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.11-rc1 released

    +

    8 November 2010

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details, and read the + announcement. + +

    Head to the downloads page to pick up the + 2010.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot Developer Day

    +

    28 September 2010

    +
    +
    +

    A Buildroot Developer Day will take place on + Friday, October 29th in Cambridge, UK - Just the day after the + Embedded + Linux Conference Europe. This Developer Day + aims at allowing Buildroot developers to meet and exchange + ideas on the project and its future. See the + announcement + for more info.

    + +

    Thanks to Thomas Petazzoni for taking care of the practical + arrangements.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.08 released

    +

    31 August 2010

    +
    +
    +

    The stable 2010.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2010.08 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.08-rc2 released

    +

    30 August 2010

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    + + This is very much expected to be the final release candidate, + so give it a good test and expect a final 2010.08 release + before September unless critical issues are found.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.08-rc1 released

    +

    30 July 2010

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.05 released

    +

    30 May 2010

    +
    +
    +

    The stable 2010.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, read the + announcement + and go to the downloads page to pick up the + 2010.05 release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.05-rc3 released

    +

    27 May 2010

    +
    +
    +

    RC3 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.05-rc2 released

    +

    11 May 2010

    +
    +
    +

    Another week, another release candidate with a bunch of + cleanups and build fixes.

    + +

    Head to the downloads page to pick up the + 2010.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.05-rc1 released

    +

    3 May 2010

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    FOSDEM slides online

    +

    2 May 2010

    +
    +
    +

    The slides from + the Cross + Build Systems: Present & Future session + at FOSDEM are + now online. +

    +
    +
  • + +
  • +
    +
    +
    +

    2010.02 released

    +

    26 February 2010

    +
    +
    +

    The stable 2010.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + CHANGES + file for more details, and go to + the downloads page to pick up + the 2010.02 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.02-rc2 released

    +

    23 February 2010

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2010.02-rc1 released

    +

    9 February 2010

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2010.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.11 released

    +

    1 December 2009

    +
    +
    +

    The stable 2009.11 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + or CHANGES + for more details, and go to the downloads page + to pick up the 2009.11 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.11-rc2 released

    +

    29 November 2009

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2009.11-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.11-rc1 released

    +

    23 November 2009

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2009.11-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    First Buildroot Developer Day

    +

    7 September 2009

    +
    +
    +

    The first Buildroot Developer Day will take place on + Saturday, October 17th in Grenoble, France, just the day after + Embedded Linux Conference Europe. This Developer Day aims + at allowing Buildroot developers to meet and exchange ideas on the + project and its future.

    + +

    As the number of places is limited, interested candidates are + invited to send an e-mail to Peter Korsgaard (jacmet at + uclibc dot org) and Thomas Petazzoni (thomas dot + petazzoni at free-electrons dot com).

    + +

    This Developer Day will take place thanks to the + sponsoring of Calao + Systems and Free + Electrons.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.08 released

    +

    31 August 2009

    +
    +
    +

    The stable 2009.08 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + or CHANGES + for more details, and go to the downloads page + to pick up the 2009.08 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.08-rc3 released

    +

    26 August 2009

    +
    +
    +

    A number of bugfixes have been added to the tree since RC2 + (especially thanks to Thomas Petazzoni) - See + the CHANGES + file for details. This is very much expected to be the final + release candidate, so give it a good test and expect a final + 2009.08 release next weekend unless critical issues are + found.

    + +

    Head to the downloads page to + pick up the + 2009.08-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.08-rc2 released

    +

    6 August 2009

    +
    +
    +

    RC2 is out with more cleanups and bugfixes, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2009.08-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.08-rc1 released

    +

    2 August 2009

    +
    +
    +

    We have a new release candidate! Lots of changes all over + the tree, see + the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2009.08-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.05 released

    +

    1 June 2009

    +
    +
    +

    The stable 2009.05 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + or CHANGES + for more details, and go to the downloads page + to pick up the 2009.05 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.05-rc3 released

    +

    27 May 2009

    +
    +
    +

    We had a number of fixes post-RC2, so RC3 is out + (see CHANGES + 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.

    + +

    Head to the downloads page to pick up the + 2009.05-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.05-rc2 released

    +

    19 May 2009

    +
    +
    +

    RC2 is out with more cleanups and bug fixes + (see CHANGES). + Unless big issues are found, expect this to be the last + release candidate before the release - So give it a good + test.

    + +

    Head to the downloads page to pick up the + 2009.05-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot.org

    +

    14 May 2009

    +
    +
    +

    Earl Levine has been so kind to donate + the buildroot.org domain to us, so the website can + now also be reached + at www.buildroot.org + (and git at + git.buildroot.org). + + Thanks a lot Earl!

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.05-rc1 released

    +

    5 May 2009

    +
    +
    +

    We have a new release candidate! Lots of changes all over the + tree, see the CHANGES + file for details. + +

    Head to the downloads page to pick up the + 2009.05-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Moved to git

    +

    3 May 2009

    +
    +
    +

    We've moved the source code + from Subversion + to Git. You can browse the + repo online + here, and clone + the repo using: +

    git clone git://git.buildroot.net/buildroot
    + See the Git Access page for more details. +

    +
    +
    +
  • + +
  • +
    +
    +
    +

    +

    27 March 2009

    +

    +
    +

    We have a logo! We have so + far been using the Busybox + logo on the website, as the website was a copy of + the Busybox one - But not + anymore, we now have a shiny new logo of our own.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.02 released

    +

    12 February 2009

    +
    +
    +

    The stable 2009.02 release is out - Thanks to everyone + contributing and testing the release candidates. See the + announcement + for more details, and go to the downloads page + to pick up the 2009.02 + release.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.02-rc4 released

    +

    9 February 2009

    +
    +
    +

    We had more than 50 changes since RC3, several of them + toolchain related, so decided to make a RC4 as well. This is + very much expected to be the final release candidate, so + give it a good test and expect a final 2009.02 release this + week unless critical issues are found.

    + +

    Head to the downloads page to + pick up the + 2009.02-rc4 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.02-rc3 released

    +

    31 January 2009

    +
    +
    +

    RC3 is out with more cleanups and bug fixes. Unless big + issues are found, expect this to be the last release + candidate before the release - So give it a good test.

    + +

    Head to the downloads page to + pick up the + 2009.02-rc3 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    2009.02-rc2 released

    +

    23 January 2009

    +
    +
    +

    Another week, another release candidate with a bunch of + cleanups and build fixes.

    +

    Head to the downloads page to + pick up the + 2009.02-rc2 + release candidate, and report any problems found to + the mailing list + or bug tracker.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Release candidate and new maintainer

    +

    16 January 2009

    +
    +
    + +

    It has been a long time coming, but we finally have a new + release candidate! - And a new maintainer to match (Peter + Korsgaard).

    + +

    Head to the downloads page to + pick up the + 2009.02-rc1 + release candidate, and report any problems found to + the mailing list + or bug tracker. The + plan is to release 2009.02 in time + for FOSDEM.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot mailing list

    +

    16 July 2006

    +
    +
    +

    Buildroot now has its own mailing list.

    +
    +
    +
  • + +
  • +
    +
    +
    +

    Buildroot webpage added

    +

    21 February 2005

    + +

    Buildroot is a set of Makefiles and patches that makes it easy generate a + cross-compilation toolchain and root filesystem for your target Linux + system using the uClibc C library. + Buildroot is useful mainly for people working with small or embedded + systems. Embedded systems often use processors that are not the regular + x86 processors everyone is used to using on their PC. It can be PowerPC + processors, MIPS processors, ARM processors, etc. And to be extra safe, + you do not need to be root to build or run buildroot.

    + +

    And as of today buildroot even has its own webpage, making it a first class + citizen of uclibc.org and busybox.net, and more importantly, make it easy + to find and point to buildroot.

    + +

    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 Bug and Patch + Tracking System to post the details, to make certain + your work is not lost

    +
    +
    +
  • +
+ +
+
+
+ + + diff --git a/buildroot/docs/website/robots.txt b/buildroot/docs/website/robots.txt new file mode 100644 index 0000000..1b425ee --- /dev/null +++ b/buildroot/docs/website/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: /cgi-bin/ diff --git a/buildroot/docs/website/sponsors.html b/buildroot/docs/website/sponsors.html new file mode 100644 index 0000000..13ff6cc --- /dev/null +++ b/buildroot/docs/website/sponsors.html @@ -0,0 +1,235 @@ + + +
+
+
+ +
+
Current sponsors
+
+ +
+ +
+
+
+
+ + + +
+
+ Google is + sponsoring + the Buildroot + Developers Meeting at FOSDEM 2018 in Brussels, by + providing logistics for the meeting: a free meeting + room and lunch for the participants. +
+
+
+ +
+
+
+
+ + + +
+
+ As it did in previous years, Mind + is sponsoring the Monday night dinner at the Buildroot + Developers Meeting at FOSDEM 2018 in Brussels. +
+
+
+
+
+
+ +
+
Past sponsors
+
+

Throughout its history, the Buildroot project has been sponsored by + various companies, that we would like to thank below.

+ +
+
+
+
+
+ + + +
+
+ OpenWide/Smile sponsored + the Buildroot Summer Camp that took place on July 1-5 2016 in Toulouse, France. OpenWide/Smile is + sponsoring the participation of Romain Naour and paid the food expenses for the meeting participants. +
+
+
+
+ +
+
+
+
+ + + +
+
+ Mind sponsored the + dinner of the FOSDEM 2014, 2015, 2016 and 2017 + Developers Meeting (Brussels) and ELCE 2016 (Berlin) + and 2017 (Prague), and the meeting room and the dinner for + the ELCE 2014 Developers Meeting (Düsseldorf). +
+
+
+
+ +
+
+
+
+

+

+
+
+

Google provided + the logistics for the FOSDEM 2013, FOSDEM 2014, + FOSDEM 2015, FOSDEM 2016 and FOSDEM 2017 Developer Days + in Brussels, Belgium.

+
+
+
+
+
+ +
+
+
+
+
+

+

+
+
+ Imagination Technologies + sponsored the meeting room and dinner of the ELCE 2013 + Developer Days in Edinburgh, UK. +
+
+
+
+ +
+
+
+
+

+

+
+
+

CircuitCo sponsored + several development boards for the Google Summer of Code + 2013 project on Buildroot.

+
+
+
+
+ +
+
+
+
+

+

+
+
+

BoundaryDevices + sponsored an i.MX6 development board for the Google Summer of + Code 2013 project on Buildroot.

+
+
+
+
+
+ +
+
+
+
+
+

+

+
+
+

Fluendo sponsored the + meeting room for the ELCE 2012 Developer Days in Barcelona + Spain.

+
+
+
+
+ +
+
+
+
+

+

+
+
+

Synopsys sponsored the + dinner for the ELCE 2012 Developer Days in Barcelona, Spain.

+
+
+
+
+ +
+
+
+
+

+

+
+
+

Calao Systems + provided a a meeting room for the ELCE 2009 Developer Days + in Grenoble, France.

+
+
+
+
+
+ +
+
+
+
+
+

+

+
+
+

Free + Electrons sponsored the meeting location for the + ELCE 2016 Developer Days in Berlin, Germany, and the + lunch for the ELCE 2009 Developer Days in Grenoble, + France.

+
+
+
+
+
+ +
+
+
+ + diff --git a/buildroot/docs/website/support.html b/buildroot/docs/website/support.html new file mode 100644 index 0000000..23a5db7 --- /dev/null +++ b/buildroot/docs/website/support.html @@ -0,0 +1,93 @@ + + +
+
+
+ +
+
Support
+
+

You can get support for Buildroot through three main channels:

+ +
+
+
+
IRC
+
+
+
+ +
+
+

The Buildroot IRC channel is + #buildroot, hosted on Freenode. If you do not have an IRC client, you can + use the Freenode web interface. + When asking for help on IRC, share relevant logs or pieces of code using a code + sharing website.

+
+
+
+
+
+ +
+
+
Mailing List Information
+
+
+
+ +
+
+

The mailing list is for discussion and + development. You can subscribe by visiting + this page. + Only subscribers to the Buildroot mailing list are allowed to post + to this list.

+ +

Search the List Archives

+

Please search the mailing list archives before asking questions on the mailing + list, since there is a good chance someone else has asked the same question + before.

+ +
+ + + + + +
+
+
+
+
+
+ +
+
+
Bug Tracker
+
+
+
+ +
+
+

If you think you found a bug in Buildroot, you can use the + Bug Tracker to post your bugs and/or + participate to find solutions to existing problems.

+ +

Note: patches are only accepted through the mailing list.

+
+
+
+
+
+
+
+
+ +
+
+
+ + diff --git a/buildroot/fs/Config.in b/buildroot/fs/Config.in new file mode 100644 index 0000000..c25b01c --- /dev/null +++ b/buildroot/fs/Config.in @@ -0,0 +1,18 @@ +menu "Filesystem images" + +source "fs/axfs/Config.in" +source "fs/cloop/Config.in" +source "fs/cpio/Config.in" +source "fs/cramfs/Config.in" +source "fs/ext2/Config.in" +source "fs/initramfs/Config.in" +source "fs/iso9660/Config.in" +source "fs/jffs2/Config.in" +source "fs/romfs/Config.in" +source "fs/squashfs/Config.in" +source "fs/tar/Config.in" +source "fs/ubi/Config.in" +source "fs/ubifs/Config.in" +source "fs/yaffs2/Config.in" + +endmenu diff --git a/buildroot/fs/axfs/Config.in b/buildroot/fs/axfs/Config.in new file mode 100644 index 0000000..8dfaffa --- /dev/null +++ b/buildroot/fs/axfs/Config.in @@ -0,0 +1,17 @@ +config BR2_TARGET_ROOTFS_AXFS + bool "axfs root filesystem" + help + The Advanced XIP File System is a Linux kernel filesystem + driver that enables files to be executed directly from flash + or ROM memory rather than being copied into RAM. It has the + ability to store individual *pages* in a file + uncompressed/XIP or compressed/Demand Paged. + + So far, the only supported mode is 'XIP all', so all the + files that have the execute attribute set will be XIP'ed. + + At the moment, the FS is not supported in Linux mainline + (v4.3-rc5), so the kernel has to be built with the axfs + patches to be able to read it. Patches can be found at: + + https://github.com/jaredeh/axfs diff --git a/buildroot/fs/axfs/axfs.mk b/buildroot/fs/axfs/axfs.mk new file mode 100644 index 0000000..4b93df5 --- /dev/null +++ b/buildroot/fs/axfs/axfs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# Build the axfs root filesystem image +# +################################################################################ + +ROOTFS_AXFS_DEPENDENCIES = host-axfsutils + +define ROOTFS_AXFS_CMD + $(HOST_DIR)/bin/mkfs.axfs -s -a $(TARGET_DIR) $@ +endef + +$(eval $(rootfs)) diff --git a/buildroot/fs/cloop/Config.in b/buildroot/fs/cloop/Config.in new file mode 100644 index 0000000..3e01067 --- /dev/null +++ b/buildroot/fs/cloop/Config.in @@ -0,0 +1,10 @@ +config BR2_TARGET_ROOTFS_CLOOP + bool "cloop root filesystem for the target device" + help + Build a cloop root filesystem + + cloop is a Linux kernel module that enables compressed + loopback filesystem support. With it you can mount a + compressed filesystem like a block device and seamlessly + decompress its data while accessing it. The majority of the + software on an LNX-BBC is accessed in this fashion. diff --git a/buildroot/fs/cloop/cloop.mk b/buildroot/fs/cloop/cloop.mk new file mode 100644 index 0000000..17749c5 --- /dev/null +++ b/buildroot/fs/cloop/cloop.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# Build the compressed loop root filesystem image +# +################################################################################ + +ROOTFS_CLOOP_DEPENDENCIES = host-cloop host-cdrkit + +define ROOTFS_CLOOP_CMD + $(HOST_DIR)/bin/genisoimage -r $(TARGET_DIR) | \ + $(HOST_DIR)/bin/create_compressed_fs - 65536 > $@ +endef + +$(eval $(rootfs)) diff --git a/buildroot/fs/common.mk b/buildroot/fs/common.mk new file mode 100644 index 0000000..6d579db --- /dev/null +++ b/buildroot/fs/common.mk @@ -0,0 +1,139 @@ +# +# Macro that builds the needed Makefile target to create a root +# filesystem image. +# +# The following variable must be defined before calling this macro +# +# ROOTFS_$(FSTYPE)_CMD, the command that generates the root +# filesystem image. A single command is allowed. The filename of the +# filesystem image that it must generate is $$@. +# +# The following variables can optionaly be defined +# +# ROOTFS_$(FSTYPE)_DEPENDENCIES, the list of dependencies needed to +# build the root filesystem (usually host tools) +# +# ROOTFS_$(FSTYPE)_PRE_GEN_HOOKS, a list of hooks to call before +# generating the filesystem image +# +# ROOTFS_$(FSTYPE)_POST_GEN_HOOKS, a list of hooks to call after +# generating the filesystem image +# +# In terms of configuration option, this macro assumes that the +# BR2_TARGET_ROOTFS_$(FSTYPE) config option allows to enable/disable +# the generation of a filesystem image of a particular type. If +# the configuration options BR2_TARGET_ROOTFS_$(FSTYPE)_GZIP, +# BR2_TARGET_ROOTFS_$(FSTYPE)_BZIP2 or +# BR2_TARGET_ROOTFS_$(FSTYPE)_LZMA exist and are enabled, then the +# macro will automatically generate a compressed filesystem image. + +FS_DIR = $(BUILD_DIR)/buildroot-fs +FAKEROOT_SCRIPT = $(FS_DIR)/fakeroot.fs +FULL_DEVICE_TABLE = $(FS_DIR)/device_table.txt +ROOTFS_DEVICE_TABLES = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE) \ + $(BR2_ROOTFS_STATIC_DEVICE_TABLE)) +USERS_TABLE = $(FS_DIR)/users_table.txt +ROOTFS_USERS_TABLES = $(call qstrip,$(BR2_ROOTFS_USERS_TABLES)) + +# Since this function will be called from within an $(eval ...) +# all variable references except the arguments must be $$-quoted. +define inner-rootfs + +# extra deps +ROOTFS_$(2)_DEPENDENCIES += host-fakeroot host-makedevs \ + $$(if $$(PACKAGES_USERS)$$(ROOTFS_USERS_TABLES),host-mkpasswd) + +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_GZIP),y) +ROOTFS_$(2)_COMPRESS_EXT = .gz +ROOTFS_$(2)_COMPRESS_CMD = gzip -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_BZIP2),y) +ROOTFS_$(2)_COMPRESS_EXT = .bz2 +ROOTFS_$(2)_COMPRESS_CMD = bzip2 -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZMA),y) +ROOTFS_$(2)_DEPENDENCIES += host-lzma +ROOTFS_$(2)_COMPRESS_EXT = .lzma +ROOTFS_$(2)_COMPRESS_CMD = $$(LZMA) -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZ4),y) +ROOTFS_$(2)_DEPENDENCIES += host-lz4 +ROOTFS_$(2)_COMPRESS_EXT = .lz4 +ROOTFS_$(2)_COMPRESS_CMD = lz4 -l -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_LZO),y) +ROOTFS_$(2)_DEPENDENCIES += host-lzop +ROOTFS_$(2)_COMPRESS_EXT = .lzo +ROOTFS_$(2)_COMPRESS_CMD = $$(LZOP) -9 -c +endif +ifeq ($$(BR2_TARGET_ROOTFS_$(2)_XZ),y) +ROOTFS_$(2)_DEPENDENCIES += host-xz +ROOTFS_$(2)_COMPRESS_EXT = .xz +ROOTFS_$(2)_COMPRESS_CMD = xz -9 -C crc32 -c +endif + +$$(BINARIES_DIR)/rootfs.$(1): target-finalize $$(ROOTFS_$(2)_DEPENDENCIES) + @$$(call MESSAGE,"Generating root filesystem image rootfs.$(1)") + rm -rf $(FS_DIR) + mkdir -p $(FS_DIR) + $$(foreach hook,$$(ROOTFS_$(2)_PRE_GEN_HOOKS),$$(call $$(hook))$$(sep)) + echo '#!/bin/sh' > $$(FAKEROOT_SCRIPT) + echo "set -e" >> $$(FAKEROOT_SCRIPT) + echo "chown -h -R 0:0 $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT) +ifneq ($$(ROOTFS_USERS_TABLES),) + cat $$(ROOTFS_USERS_TABLES) >> $$(USERS_TABLE) +endif + $$(call PRINTF,$$(PACKAGES_USERS)) >> $$(USERS_TABLE) + PATH=$$(BR_PATH) $$(TOPDIR)/support/scripts/mkusers $$(USERS_TABLE) $$(TARGET_DIR) >> $$(FAKEROOT_SCRIPT) +ifneq ($$(ROOTFS_DEVICE_TABLES),) + cat $$(ROOTFS_DEVICE_TABLES) > $$(FULL_DEVICE_TABLE) +ifeq ($$(BR2_ROOTFS_DEVICE_CREATION_STATIC),y) + $$(call PRINTF,$$(PACKAGES_DEVICES_TABLE)) >> $$(FULL_DEVICE_TABLE) +endif +endif + $$(call PRINTF,$$(PACKAGES_PERMISSIONS_TABLE)) >> $$(FULL_DEVICE_TABLE) + echo "$$(HOST_DIR)/bin/makedevs -d $$(FULL_DEVICE_TABLE) $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT) + $$(foreach s,$$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT)),\ + echo "echo '$$(TERM_BOLD)>>> Executing fakeroot script $$(s)$$(TERM_RESET)'" >> $$(FAKEROOT_SCRIPT); \ + echo $$(EXTRA_ENV) $$(s) $$(TARGET_DIR) $$(BR2_ROOTFS_POST_SCRIPT_ARGS) >> $$(FAKEROOT_SCRIPT)$$(sep)) + $$(foreach hook,$$(ROOTFS_PRE_CMD_HOOKS),\ + $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) +ifeq ($$(BR2_REPRODUCIBLE),y) + echo "find $$(TARGET_DIR) -print0 | xargs -0 -r touch -hd @$$(SOURCE_DATE_EPOCH)" >> $$(FAKEROOT_SCRIPT) +endif + $$(call PRINTF,$$(ROOTFS_$(2)_CMD)) >> $$(FAKEROOT_SCRIPT) + $$(foreach hook,$$(ROOTFS_POST_CMD_HOOKS),\ + $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) + chmod a+x $$(FAKEROOT_SCRIPT) + rm -f $$(TARGET_DIR_WARNING_FILE) + PATH=$$(BR_PATH) $$(HOST_DIR)/bin/fakeroot -- $$(FAKEROOT_SCRIPT) + $$(INSTALL) -m 0644 support/misc/target-dir-warning.txt $$(TARGET_DIR_WARNING_FILE) +ifneq ($$(ROOTFS_$(2)_COMPRESS_CMD),) + PATH=$$(BR_PATH) $$(ROOTFS_$(2)_COMPRESS_CMD) $$@ > $$@$$(ROOTFS_$(2)_COMPRESS_EXT) +endif + $$(foreach hook,$$(ROOTFS_$(2)_POST_GEN_HOOKS),$$(call $$(hook))$$(sep)) + +rootfs-$(1)-show-depends: + @echo $$(ROOTFS_$(2)_DEPENDENCIES) + +rootfs-$(1): $$(BINARIES_DIR)/rootfs.$(1) + +.PHONY: rootfs-$(1) rootfs-$(1)-show-depends + +ifeq ($$(BR2_TARGET_ROOTFS_$(2)),y) +TARGETS_ROOTFS += rootfs-$(1) +PACKAGES += $$(filter-out rootfs-%,$$(ROOTFS_$(2)_DEPENDENCIES)) +endif + +# Check for legacy POST_TARGETS rules +ifneq ($$(ROOTFS_$(2)_POST_TARGETS),) +$$(error Filesystem $(1) uses post-target rules, which are no longer supported.\ + Update $(1) to use post-gen hooks instead) +endif + +endef + +# $(pkgname) also works well to return the filesystem name +rootfs = $(call inner-rootfs,$(pkgname),$(call UPPERCASE,$(pkgname))) + +include $(sort $(wildcard fs/*/*.mk)) diff --git a/buildroot/fs/cpio/Config.in b/buildroot/fs/cpio/Config.in new file mode 100644 index 0000000..679959d --- /dev/null +++ b/buildroot/fs/cpio/Config.in @@ -0,0 +1,65 @@ +config BR2_TARGET_ROOTFS_CPIO + bool "cpio the root filesystem (for use as an initial RAM filesystem)" + help + Build a cpio archive of the root filesystem. This is typically + used for an initial RAM filesystem that is passed to the kernel + by the bootloader. + +if BR2_TARGET_ROOTFS_CPIO + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_CPIO_NONE + help + Select compressor for cpio filesystem of the root filesystem. + If you use the cpio archive as an initial RAM filesystem, make + sure the kernel contains the decompression algorithm selected + here. + +config BR2_TARGET_ROOTFS_CPIO_NONE + bool "no compression" + help + Do not compress the cpio filesystem. + +config BR2_TARGET_ROOTFS_CPIO_GZIP + bool "gzip" + help + Do compress the cpio filesystem with gzip. + +config BR2_TARGET_ROOTFS_CPIO_BZIP2 + bool "bzip2" + help + Do compress the cpio filesystem with bzip2. + +config BR2_TARGET_ROOTFS_CPIO_LZ4 + bool "lz4" + help + Do compress the cpio filesystem with lz4. + +config BR2_TARGET_ROOTFS_CPIO_LZMA + bool "lzma" + help + Do compress the cpio filesystem with lzma. + +config BR2_TARGET_ROOTFS_CPIO_LZO + bool "lzo" + help + Do compress the cpio filesystem with lzop. + +config BR2_TARGET_ROOTFS_CPIO_XZ + bool "xz" + help + Do compress the cpio filesystem with xz. + +endchoice + +config BR2_TARGET_ROOTFS_CPIO_UIMAGE + bool "Create U-Boot image of the root filesystem" + select BR2_PACKAGE_HOST_UBOOT_TOOLS + help + Add a U-Boot header to the cpio root filesystem. This allows + the initramfs to be loaded with the bootm command in U-Boot. + + The U-Boot image will be called rootfs.cpio.uboot + +endif # BR2_TARGET_ROOTFS_CPIO diff --git a/buildroot/fs/cpio/cpio.mk b/buildroot/fs/cpio/cpio.mk new file mode 100644 index 0000000..aa4d947 --- /dev/null +++ b/buildroot/fs/cpio/cpio.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# cpio to archive target filesystem +# +################################################################################ + +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y) + +define ROOTFS_CPIO_ADD_INIT + if [ ! -e $(TARGET_DIR)/init ]; then \ + ln -sf sbin/init $(TARGET_DIR)/init; \ + fi +endef + +else +# devtmpfs does not get automounted when initramfs is used. +# Add a pre-init script to mount it before running init +define ROOTFS_CPIO_ADD_INIT + if [ ! -e $(TARGET_DIR)/init ]; then \ + $(INSTALL) -m 0755 fs/cpio/init $(TARGET_DIR)/init; \ + fi +endef + +PACKAGES_PERMISSIONS_TABLE += /dev/console c 622 0 0 5 1 - - -$(sep) + +endif # BR2_ROOTFS_DEVICE_CREATION_STATIC + +ROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_ADD_INIT + +define ROOTFS_CPIO_CMD + cd $(TARGET_DIR) && find . | cpio --quiet -o -H newc > $@ +endef + +ifeq ($(BR2_TARGET_ROOTFS_CPIO_UIMAGE),y) +ROOTFS_CPIO_DEPENDENCIES += host-uboot-tools +define ROOTFS_CPIO_UBOOT_MKIMAGE + $(MKIMAGE) -A $(MKIMAGE_ARCH) -T ramdisk \ + -C none -d $@$(ROOTFS_CPIO_COMPRESS_EXT) $@.uboot +endef +ROOTFS_CPIO_POST_GEN_HOOKS += ROOTFS_CPIO_UBOOT_MKIMAGE +endif + +$(eval $(rootfs)) diff --git a/buildroot/fs/cpio/init b/buildroot/fs/cpio/init new file mode 100755 index 0000000..dbe09ac --- /dev/null +++ b/buildroot/fs/cpio/init @@ -0,0 +1,7 @@ +#!/bin/sh +# devtmpfs does not get automounted for initramfs +/bin/mount -t devtmpfs devtmpfs /dev +exec 0/dev/console +exec 2>/dev/console +exec /sbin/init "$@" diff --git a/buildroot/fs/cramfs/Config.in b/buildroot/fs/cramfs/Config.in new file mode 100644 index 0000000..1a4e326 --- /dev/null +++ b/buildroot/fs/cramfs/Config.in @@ -0,0 +1,6 @@ +config BR2_TARGET_ROOTFS_CRAMFS + bool "cramfs root filesystem" + help + Build a cramfs root filesystem + + http://sourceforge.net/projects/cramfs/ diff --git a/buildroot/fs/cramfs/cramfs.mk b/buildroot/fs/cramfs/cramfs.mk new file mode 100644 index 0000000..f880871 --- /dev/null +++ b/buildroot/fs/cramfs/cramfs.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# Build the cramfs root filesystem image +# +################################################################################ + +ifeq ($(BR2_ENDIAN),"BIG") +CRAMFS_OPTS = -b +else +CRAMFS_OPTS = -l +endif + +define ROOTFS_CRAMFS_CMD + $(HOST_DIR)/bin/mkcramfs $(CRAMFS_OPTS) $(TARGET_DIR) $@ +endef + +ROOTFS_CRAMFS_DEPENDENCIES = host-cramfs + +$(eval $(rootfs)) diff --git a/buildroot/fs/ext2/Config.in b/buildroot/fs/ext2/Config.in new file mode 100644 index 0000000..27ad69f --- /dev/null +++ b/buildroot/fs/ext2/Config.in @@ -0,0 +1,133 @@ +config BR2_TARGET_ROOTFS_EXT2 + bool "ext2/3/4 root filesystem" + select BR2_PACKAGE_HOST_E2FSPROGS + help + Build an ext2/3/4 root filesystem + +if BR2_TARGET_ROOTFS_EXT2 + +config BR2_TARGET_ROOTFS_EXT2_2 + bool + +choice + bool "ext2/3/4 variant" + default BR2_TARGET_ROOTFS_EXT2_2r1 + +config BR2_TARGET_ROOTFS_EXT2_2r0 + bool "ext2 (rev0)" + select BR2_TARGET_ROOTFS_EXT2_2 + +config BR2_TARGET_ROOTFS_EXT2_2r1 + bool "ext2 (rev1)" + select BR2_TARGET_ROOTFS_EXT2_2 + +config BR2_TARGET_ROOTFS_EXT2_3 + bool "ext3" + +config BR2_TARGET_ROOTFS_EXT2_4 + bool "ext4" + +endchoice + +config BR2_TARGET_ROOTFS_EXT2_GEN + int + default 2 if BR2_TARGET_ROOTFS_EXT2_2 + default 3 if BR2_TARGET_ROOTFS_EXT2_3 + default 4 if BR2_TARGET_ROOTFS_EXT2_4 + +# All ext generations are revision 1, except ext2r0, which is revision 0 +config BR2_TARGET_ROOTFS_EXT2_REV + int + default 0 if BR2_TARGET_ROOTFS_EXT2_2r0 + default 1 if !BR2_TARGET_ROOTFS_EXT2_2r0 + +config BR2_TARGET_ROOTFS_EXT2_LABEL + string "filesystem label" + +config BR2_TARGET_ROOTFS_EXT2_SIZE + string "exact size" + default BR2_TARGET_ROOTFS_EXT2_BLOCKS if BR2_TARGET_ROOTFS_EXT2_BLOCKS_WRAP # legacy 2017.08 + default "60M" + help + The size of the filesystem image. If it does not have a suffix, + it is interpreted as power-of-two kilobytes. If it is suffixed + by 'k', 'm', 'g', 't' (either upper-case or lower-case), then + it is interpreted in power-of-two kilobytes, megabytes, + gigabytes, terabytes, etc. + +config BR2_TARGET_ROOTFS_EXT2_INODES + int "exact number of inodes (leave at 0 for auto calculation)" + default 0 + +config BR2_TARGET_ROOTFS_EXT2_RESBLKS + int "reserved blocks percentage" + default 5 + help + The number of blocks on the filesystem (as a percentage of the + total number of blocks), that are reserved for use by root. + Traditionally, this has been 5%, and all ext-related tools still + default to reserving 5% when creating a new ext filesystem. + +config BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS + string "additional mke2fs options" + default "-O ^64bit" + help + Specify a space-separated list of mke2fs options, including any + ext2/3/4 filesystem features. + + For more information about the mke2fs options, see the manual + page mke2fs(8). + + For more information about the ext2/3/4 features which can be + set, see the manual page ext4(5). + + The default is "-O ^64bit", i.e. disable 64-bit filesystem + support. This default value has been chosen because U-Boot + versions before 2017.02 don't support this filesystem + option: using it may make the filesystem unreadable by + U-Boot. + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_EXT2_NONE + help + Select compressor for ext2/3/4 filesystem of the root filesystem + +config BR2_TARGET_ROOTFS_EXT2_NONE + bool "no compression" + help + Do not compress the ext2/3/4 filesystem. + +config BR2_TARGET_ROOTFS_EXT2_GZIP + bool "gzip" + help + Do compress the ext2/3/4 filesystem with gzip. + +config BR2_TARGET_ROOTFS_EXT2_BZIP2 + bool "bzip2" + help + Do compress the ext2/3/4 filesystem with bzip2. + +config BR2_TARGET_ROOTFS_EXT2_LZ4 + bool "lz4" + help + Do compress the ext2 filesystem with lz4. + +config BR2_TARGET_ROOTFS_EXT2_LZMA + bool "lzma" + help + Do compress the ext2/3/4 filesystem with lzma. + +config BR2_TARGET_ROOTFS_EXT2_LZO + bool "lzo" + help + Do compress the ext2 filesystem with lzop. + +config BR2_TARGET_ROOTFS_EXT2_XZ + bool "xz" + help + Do compress the ext2 filesystem with xz. + +endchoice + +endif # BR2_TARGET_ROOTFS_EXT2 diff --git a/buildroot/fs/ext2/ext2.mk b/buildroot/fs/ext2/ext2.mk new file mode 100644 index 0000000..6bb4b1c --- /dev/null +++ b/buildroot/fs/ext2/ext2.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# Build the ext2 root filesystem image +# +################################################################################ + +EXT2_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_EXT2_SIZE)) +ifeq ($(BR2_TARGET_ROOTFS_EXT2)-$(EXT2_SIZE),y-) +$(error BR2_TARGET_ROOTFS_EXT2_SIZE cannot be empty) +endif + +EXT2_MKFS_OPTS = $(call qstrip,$(BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS)) + +# qstrip results in stripping consecutive spaces into a single one. So the +# variable is not qstrip-ed to preserve the integrity of the string value. +EXT2_LABEL := $(subst ",,$(BR2_TARGET_ROOTFS_EXT2_LABEL)) +#" Syntax highlighting... :-/ ) + +EXT2_OPTS = \ + -d $(TARGET_DIR) \ + -r $(BR2_TARGET_ROOTFS_EXT2_REV) \ + -N $(BR2_TARGET_ROOTFS_EXT2_INODES) \ + -m $(BR2_TARGET_ROOTFS_EXT2_RESBLKS) \ + -L "$(EXT2_LABEL)" \ + $(EXT2_MKFS_OPTS) + +ROOTFS_EXT2_DEPENDENCIES = host-e2fsprogs + +define ROOTFS_EXT2_CMD + rm -f $@ + $(HOST_DIR)/sbin/mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(EXT2_OPTS) $@ \ + "$(EXT2_SIZE)" \ + || { ret=$$?; \ + echo "*** Maybe you need to increase the filesystem size (BR2_TARGET_ROOTFS_EXT2_SIZE)" 1>&2; \ + exit $$ret; \ + } +endef + +ifneq ($(BR2_TARGET_ROOTFS_EXT2_GEN),2) +define ROOTFS_EXT2_SYMLINK + ln -sf rootfs.ext2$(ROOTFS_EXT2_COMPRESS_EXT) $(BINARIES_DIR)/rootfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN)$(ROOTFS_EXT2_COMPRESS_EXT) +endef +ROOTFS_EXT2_POST_GEN_HOOKS += ROOTFS_EXT2_SYMLINK +endif + +$(eval $(rootfs)) diff --git a/buildroot/fs/initramfs/Config.in b/buildroot/fs/initramfs/Config.in new file mode 100644 index 0000000..8ed9f7e --- /dev/null +++ b/buildroot/fs/initramfs/Config.in @@ -0,0 +1,21 @@ +config BR2_TARGET_ROOTFS_INITRAMFS + bool "initial RAM filesystem linked into linux kernel" + depends on BR2_LINUX_KERNEL + select BR2_TARGET_ROOTFS_CPIO + help + Integrate the root filesystem generated by Buildroot as an + initramfs inside the kernel image. This integration will + take place automatically. + + A rootfs.cpio file will be generated in the images/ directory. + This is the archive that will be included in the kernel image. + The default rootfs compression set in the kernel configuration + is used, regardless of how buildroot's cpio archive is configured. + + Note that enabling initramfs together with another filesystem + formats doesn't make sense: you would end up having two + identical root filesystems, one embedded inside the kernel + image, and one separately. + +comment "initramfs needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/fs/initramfs/initramfs.mk b/buildroot/fs/initramfs/initramfs.mk new file mode 100644 index 0000000..b8dee18 --- /dev/null +++ b/buildroot/fs/initramfs/initramfs.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# Build a kernel with an integrated initial ramdisk +# filesystem based on cpio. +# +################################################################################ + +# The generic fs infrastructure isn't very useful here. +# +# The initramfs image does not actually build an image; its only purpose is: +# 1- to ensure rootfs.cpio is generated, +# 2- to then rebuild the kernel with rootfs.cpio as initramfs +# +# Note: ordering of the dependencies is not guaranteed here, but in +# linux/linux.mk, via the linux-rebuild-with-initramfs rule, which depends +# on the rootfs-cpio filesystem rule. +# +# Note: the trick here is that we directly depend on rebuilding the Linux +# kernel image (which itself depends on the rootfs-cpio rule), while we +# advertise that our dependency is on the rootfs-cpio rule, which is +# cleaner in the dependency graph. + +rootfs-initramfs: linux-rebuild-with-initramfs + +rootfs-initramfs-show-depends: + @echo rootfs-cpio + +.PHONY: rootfs-initramfs rootfs-initramfs-show-depends + +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +TARGETS_ROOTFS += rootfs-initramfs +endif diff --git a/buildroot/fs/iso9660/Config.in b/buildroot/fs/iso9660/Config.in new file mode 100644 index 0000000..6f001c0 --- /dev/null +++ b/buildroot/fs/iso9660/Config.in @@ -0,0 +1,89 @@ +config BR2_TARGET_ROOTFS_ISO9660 + bool "iso image" + depends on (BR2_i386 || BR2_x86_64) + depends on BR2_LINUX_KERNEL + depends on BR2_TARGET_GRUB2_I386_PC || \ + BR2_TARGET_SYSLINUX_ISOLINUX + select BR2_LINUX_KERNEL_INSTALL_TARGET \ + if (!BR2_TARGET_ROOTFS_ISO9660_INITRD && !BR2_TARGET_ROOTFS_INITRAMFS) + help + Build a bootable ISO9660 image. By default, the root + filesystem is directly packed as the ISO9660 filesystem, + which means the root filesystem will be read-only. It + requires ISO9660 filesystem support and CDROM support in the + kernel. + + However, if BR2_TARGET_ROOTFS_INITRAMFS or + BR2_TARGET_ROOTFS_ISO9660_INITRD have been enabled, the + ISO9660 filesystem will only contain a kernel image and + optionally an external initrd image. In this case, the + filesystem being in RAM, it will be read/write. No ISO9660 + or CDROM support is needed in the kernel. + +if BR2_TARGET_ROOTFS_ISO9660 + +choice + prompt "Bootloader" + +config BR2_TARGET_ROOTFS_ISO9660_GRUB2 + bool "grub2" + depends on BR2_TARGET_GRUB2_I386_PC + help + Use Grub 2 as the bootloader for the ISO9660 image. Make + sure to enable the 'iso9660' module in + BR2_TARGET_GRUB2_BUILTIN_MODULES and to use 'cd' as the boot + partition in BR2_TARGET_GRUB2_BOOT_PARTITION=. + +config BR2_TARGET_ROOTFS_ISO9660_ISOLINUX + bool "isolinux" + depends on BR2_TARGET_SYSLINUX_ISOLINUX + +endchoice + +config BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU + string "Boot menu config file" + default "fs/iso9660/grub.cfg" if BR2_TARGET_ROOTFS_ISO9660_GRUB2 + default "fs/iso9660/isolinux.cfg" if BR2_TARGET_ROOTFS_ISO9660_ISOLINUX + help + Use this option to provide a custom bootloader configuration + file (grub.cfg for Grub 2, isolinux.cfg for isolinux). + + Note that the strings __KERNEL_PATH__ and __INITRD_PATH__ + will automatically be replaced by the path to the kernel and + initrd images respectively. + +config BR2_TARGET_ROOTFS_ISO9660_INITRD + bool "Use initrd" + default y + select BR2_TARGET_ROOTFS_CPIO + help + Enable this option to have the root filesystem bundled as an + initrd/initramfs rather than directly as the ISO9660 + filesystem. With this option enabled, the ISO9660 will only + contain a kernel image, an initrd image (unless an initramfs + linked into the kernel is used) and the bootloader. + +config BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION + bool "transparent compression" + depends on !BR2_TARGET_ROOTFS_ISO9660_INITRD + depends on !BR2_TARGET_ROOTFS_INITRAMFS + help + Say 'y' to enable use of transparent (de)compression. Files + are stored compressed and will be decompressed on-the-fly + upon access at runtime. + +config BR2_TARGET_ROOTFS_ISO9660_HYBRID + bool "Build hybrid image" + depends on BR2_TARGET_ROOTFS_ISO9660_ISOLINUX + help + Enable this option to build an hybrid image, i.e an image + which can either be booted from a CD-ROM or from a device + which BIOS considers a hard disk or ZIP disk, e.g. a USB key + or similar. + +endif + +comment "iso image needs a Linux kernel and either grub2 i386-pc or isolinux to be built" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_LINUX_KERNEL || \ + !(BR2_TARGET_GRUB2_I386_PC || BR2_TARGET_SYSLINUX_ISOLINUX) diff --git a/buildroot/fs/iso9660/grub.cfg b/buildroot/fs/iso9660/grub.cfg new file mode 100644 index 0000000..5a74b23 --- /dev/null +++ b/buildroot/fs/iso9660/grub.cfg @@ -0,0 +1,7 @@ +set default="0" +set timeout="10" + +menuentry "Buildroot" { + linux __KERNEL_PATH__ root=/dev/sr0 + initrd __INITRD_PATH__ +} diff --git a/buildroot/fs/iso9660/iso9660.mk b/buildroot/fs/iso9660/iso9660.mk new file mode 100644 index 0000000..207c6aa --- /dev/null +++ b/buildroot/fs/iso9660/iso9660.mk @@ -0,0 +1,147 @@ +################################################################################ +# +# Build the iso96600 root filesystem image +# +################################################################################ + +# +# We need to handle three cases: +# +# 1. The ISO9660 filesystem will really be the real root filesystem +# itself. This is when BR2_TARGET_ROOTFS_ISO9660_INITRD is +# disabled. +# +# 2. The ISO9660 filesystem will be a filesystem with just a kernel +# image, initrd and grub. This is when +# BR2_TARGET_ROOTFS_ISO9660_INITRD is enabled, but +# BR2_TARGET_ROOTFS_INITRAMFS is disabled. +# +# 3. The ISO9660 filesystem will be a filesystem with just a kernel +# image and grub. This is like (2), except that the initrd is +# built into the kernel image. This is when +# BR2_TARGET_ROOTFS_INITRAMFS is enabled (regardless of the value +# of BR2_TARGET_ROOTFS_ISO9660_INITRD). + +ROOTFS_ISO9660_BOOT_MENU = $(call qstrip,$(BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU)) + +ROOTFS_ISO9660_DEPENDENCIES = host-cdrkit linux + +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +ROOTFS_ISO9660_USE_INITRD = YES +endif + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_INITRD),y) +ROOTFS_ISO9660_USE_INITRD = YES +endif + +ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES) +ROOTFS_ISO9660_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp +define ROOTFS_ISO9660_CREATE_TEMPDIR + $(RM) -rf $(ROOTFS_ISO9660_TARGET_DIR) + mkdir -p $(ROOTFS_ISO9660_TARGET_DIR) +endef +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_CREATE_TEMPDIR +else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y) +ROOTFS_ISO9660_DEPENDENCIES += host-zisofs-tools +ROOTFS_ISO9660_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp +# This must be early, before we copy the bootloader files. +define ROOTFS_ISO9660_MKZFTREE + $(RM) -rf $(ROOTFS_ISO9660_TARGET_DIR) + $(HOST_DIR)/bin/mkzftree -X -z 9 -p $(PARALLEL_JOBS) \ + $(TARGET_DIR) \ + $(ROOTFS_ISO9660_TARGET_DIR) +endef +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_MKZFTREE +ROOTFS_ISO9660_GENISOIMAGE_OPTS += -z +else +ROOTFS_ISO9660_TARGET_DIR = $(TARGET_DIR) +endif + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2),y) +ROOTFS_ISO9660_DEPENDENCIES += grub2 +ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \ + $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/grub.cfg +ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img +define ROOTFS_ISO9660_INSTALL_BOOTLOADER + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \ + $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/grub-eltorito.img +endef +else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y) +ROOTFS_ISO9660_DEPENDENCIES += syslinux +ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \ + $(ROOTFS_ISO9660_TARGET_DIR)/isolinux/isolinux.cfg +ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin +define ROOTFS_ISO9660_INSTALL_BOOTLOADER + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \ + $(ROOTFS_ISO9660_TARGET_DIR)/isolinux/ + $(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/ldlinux.c32 \ + $(ROOTFS_ISO9660_TARGET_DIR)/isolinux/ldlinux.c32 +endef +endif + +define ROOTFS_ISO9660_PREPARATION + $(INSTALL) -D -m 0644 $(ROOTFS_ISO9660_BOOT_MENU) \ + $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) + $(SED) "s%__KERNEL_PATH__%/boot/$(LINUX_IMAGE_NAME)%" \ + $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) + $(ROOTFS_ISO9660_INSTALL_BOOTLOADER) +endef + +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_PREPARATION + +define ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD + $(SED) '/__INITRD_PATH__/d' $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) +endef + +# Copy the kernel to temporary filesystem +define ROOTFS_ISO9660_COPY_KERNEL + $(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \ + $(ROOTFS_ISO9660_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME) +endef + +ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES) +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL + +# If initramfs is used, disable loading the initrd as the rootfs is +# already inside the kernel image. Otherwise, make sure a cpio is +# generated and use it as the initrd. +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD +else +ROOTFS_ISO9660_DEPENDENCIES += rootfs-cpio +define ROOTFS_ISO9660_COPY_INITRD + $(INSTALL) -D -m 0644 $(BINARIES_DIR)/rootfs.cpio$(ROOTFS_CPIO_COMPRESS_EXT) \ + $(ROOTFS_ISO9660_TARGET_DIR)/boot/initrd + $(SED) "s%__INITRD_PATH__%/boot/initrd%" \ + $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) +endef +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_INITRD +endif + +else # ROOTFS_ISO9660_USE_INITRD +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION),y) +# We must use the uncompressed kernel image +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_COPY_KERNEL +endif + +ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD + +endif # ROOTFS_ISO9660_USE_INITRD + + +define ROOTFS_ISO9660_CMD + $(HOST_DIR)/bin/genisoimage -J -R -b $(ROOTFS_ISO9660_BOOT_IMAGE) \ + -no-emul-boot -boot-load-size 4 -boot-info-table \ + $(ROOTFS_ISO9660_GENISOIMAGE_OPTS) \ + -o $@ $(ROOTFS_ISO9660_TARGET_DIR) +endef + +ifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y) +define ROOTFS_ISO9660_GEN_HYBRID + $(HOST_DIR)/bin/isohybrid -t 0x96 $@ +endef + +ROOTFS_ISO9660_POST_GEN_HOOKS += ROOTFS_ISO9660_GEN_HYBRID +endif + +$(eval $(rootfs)) diff --git a/buildroot/fs/iso9660/isolinux.cfg b/buildroot/fs/iso9660/isolinux.cfg new file mode 100644 index 0000000..28be4fa --- /dev/null +++ b/buildroot/fs/iso9660/isolinux.cfg @@ -0,0 +1,5 @@ +default 1 +label 1 + kernel __KERNEL_PATH__ + initrd __INITRD_PATH__ + append root=/dev/sr0 diff --git a/buildroot/fs/jffs2/Config.in b/buildroot/fs/jffs2/Config.in new file mode 100644 index 0000000..1010216 --- /dev/null +++ b/buildroot/fs/jffs2/Config.in @@ -0,0 +1,112 @@ +config BR2_TARGET_ROOTFS_JFFS2 + bool "jffs2 root filesystem" + help + Build a jffs2 root filesystem + +if BR2_TARGET_ROOTFS_JFFS2 + +choice + prompt "Flash Type" + default BR2_TARGET_ROOTFS_JFFS2_FLASH_128 + +config BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056 + bool "AT45 dataflash with 1056 byte pagesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528 + bool "AT45 dataflash with 528 byte pagesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + bool "NAND flash with 16 kB erasesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + bool "NAND flash with 128 kB erasesize" + select BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + +config BR2_TARGET_ROOTFS_JFFS2_FLASH_128 + bool "Parallel flash with 128 kB erase size" + +config BR2_TARGET_ROOTFS_JFFS2_FLASH_64 + bool "Parallel flash with 64 kB erase size" + +config BR2_TARGET_ROOTFS_JFFS2_CUSTOM + bool "Select custom erase size" + +endchoice + +config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE + hex "Erase block size" + depends on BR2_TARGET_ROOTFS_JFFS2_CUSTOM + default 0x20000 + help + Set to erase size of memory + +config BR2_TARGET_ROOTFS_JFFS2_EBSIZE + hex + default 0x2100 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056 + default 0x1080 if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528 + default 0x4000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + default 0x20000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_128 + default 0x10000 if BR2_TARGET_ROOTFS_JFFS2_FLASH_64 + default BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE if BR2_TARGET_ROOTFS_JFFS2_CUSTOM + +config BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER + bool "Do not use Cleanmarker" + default y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_1056 + default y if BR2_TARGET_ROOTFS_JFFS2_DATAFLASH_528 + default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_16K + default y if BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_128K + help + Do not use cleanmarkers if using NAND flash or Dataflash where + the pagesize is not a power of 2 + +config BR2_TARGET_ROOTFS_JFFS2_PAD + bool "Pad output" + +config BR2_TARGET_ROOTFS_JFFS2_PADSIZE + hex "Pad output size (0x0 = to end of EB)" + depends on BR2_TARGET_ROOTFS_JFFS2_PAD + default 0x0 + help + Set to 0x0 to pad to end of erase block. + +choice + prompt "Endianess" + default BR2_TARGET_ROOTFS_JFFS2_BE if BR2_ENDIAN = "BIG" + +config BR2_TARGET_ROOTFS_JFFS2_LE + bool "little-endian" + +config BR2_TARGET_ROOTFS_JFFS2_BE + bool "big-endian" + +endchoice + +config BR2_TARGET_ROOTFS_JFFS2_SUMMARY + bool "Produce a summarized JFFS2 image" + help + A summarised image can be mounted faster if support is + enabled in the kernel (CONFIG_JFFS2_SUMMARY) + +config BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE + bool "Select custom virtual memory page size" + help + Use a custom virtual memory page size. Note that this is not related to + the flash memory page size. Using this option is only needed if Linux is + configured to use a page size different than 4kB. + + +config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE + hex "Virtual memory page size" + depends on BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE + default 0x1000 + help + Set to virtual memory page size of target system (in bytes). This value + should match the virtual page size in Linux (i.e. this should have the + same value as the value of the PAGE_SIZE macro in Linux). It is not + related to the flash memory page size. + +endif diff --git a/buildroot/fs/jffs2/jffs2.mk b/buildroot/fs/jffs2/jffs2.mk new file mode 100644 index 0000000..740ab3e --- /dev/null +++ b/buildroot/fs/jffs2/jffs2.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# Build the jffs2 root filesystem image +# +################################################################################ + +JFFS2_OPTS := -e $(BR2_TARGET_ROOTFS_JFFS2_EBSIZE) +SUMTOOL_OPTS := $(JFFS2_OPTS) + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_PAD),y) +ifneq ($(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)),0x0) +JFFS2_OPTS += --pad=$(strip $(BR2_TARGET_ROOTFS_JFFS2_PADSIZE)) +else +JFFS2_OPTS += -p +endif +SUMTOOL_OPTS += -p +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_LE),y) +JFFS2_OPTS += -l +SUMTOOL_OPTS += -l +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_BE),y) +JFFS2_OPTS += -b +SUMTOOL_OPTS += -b +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE),y) +JFFS2_OPTS += -s $(BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE) +endif + +ifeq ($(BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER),y) +JFFS2_OPTS += -n +SUMTOOL_OPTS += -n +endif + +ROOTFS_JFFS2_DEPENDENCIES = host-mtd + +ifneq ($(BR2_TARGET_ROOTFS_JFFS2_SUMMARY),) +define ROOTFS_JFFS2_CMD + $(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $@.nosummary + $(SUMTOOL) $(SUMTOOL_OPTS) -i $@.nosummary -o $@ + rm $@.nosummary +endef +else +define ROOTFS_JFFS2_CMD + $(MKFS_JFFS2) $(JFFS2_OPTS) -d $(TARGET_DIR) -o $@ +endef +endif + +$(eval $(rootfs)) diff --git a/buildroot/fs/romfs/Config.in b/buildroot/fs/romfs/Config.in new file mode 100644 index 0000000..84944a0 --- /dev/null +++ b/buildroot/fs/romfs/Config.in @@ -0,0 +1,4 @@ +config BR2_TARGET_ROOTFS_ROMFS + bool "romfs root filesystem" + help + Build a romfs image of the root filesystem. diff --git a/buildroot/fs/romfs/romfs.mk b/buildroot/fs/romfs/romfs.mk new file mode 100644 index 0000000..163751b --- /dev/null +++ b/buildroot/fs/romfs/romfs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# Build the romfs root filesystem image +# +################################################################################ + +ROOTFS_ROMFS_DEPENDENCIES = host-genromfs + +define ROOTFS_ROMFS_CMD + $(HOST_DIR)/bin/genromfs -d $(TARGET_DIR) -f $@ +endef + +$(eval $(rootfs)) diff --git a/buildroot/fs/squashfs/Config.in b/buildroot/fs/squashfs/Config.in new file mode 100644 index 0000000..ca9ddb2 --- /dev/null +++ b/buildroot/fs/squashfs/Config.in @@ -0,0 +1,31 @@ +config BR2_TARGET_ROOTFS_SQUASHFS + bool "squashfs root filesystem" + help + Build a squashfs root filesystem + +if BR2_TARGET_ROOTFS_SQUASHFS + +choice + prompt "Compression algorithm" + default BR2_TARGET_ROOTFS_SQUASHFS4_GZIP + help + Select the squashfs compression algorithm to use when + generating the filesystem. + +config BR2_TARGET_ROOTFS_SQUASHFS4_GZIP + bool "gzip" + +config BR2_TARGET_ROOTFS_SQUASHFS4_LZ4 + bool "lz4" + +config BR2_TARGET_ROOTFS_SQUASHFS4_LZMA + bool "lzma" + +config BR2_TARGET_ROOTFS_SQUASHFS4_LZO + bool "lzo" + +config BR2_TARGET_ROOTFS_SQUASHFS4_XZ + bool "xz" + +endchoice +endif diff --git a/buildroot/fs/squashfs/squashfs.mk b/buildroot/fs/squashfs/squashfs.mk new file mode 100644 index 0000000..51abd5d --- /dev/null +++ b/buildroot/fs/squashfs/squashfs.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# Build the squashfs root filesystem image +# +################################################################################ + +ROOTFS_SQUASHFS_DEPENDENCIES = host-squashfs + +ROOTFS_SQUASHFS_ARGS = -noappend -processors $(PARALLEL_JOBS) + +ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZ4),y) +ROOTFS_SQUASHFS_ARGS += -comp lz4 -Xhc +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZO),y) +ROOTFS_SQUASHFS_ARGS += -comp lzo +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZMA),y) +ROOTFS_SQUASHFS_ARGS += -comp lzma +else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_XZ),y) +ROOTFS_SQUASHFS_ARGS += -comp xz +else +ROOTFS_SQUASHFS_ARGS += -comp gzip +endif + +define ROOTFS_SQUASHFS_CMD + $(HOST_DIR)/bin/mksquashfs $(TARGET_DIR) $@ $(ROOTFS_SQUASHFS_ARGS) +endef + +$(eval $(rootfs)) diff --git a/buildroot/fs/tar/Config.in b/buildroot/fs/tar/Config.in new file mode 100644 index 0000000..2116edf --- /dev/null +++ b/buildroot/fs/tar/Config.in @@ -0,0 +1,57 @@ +config BR2_TARGET_ROOTFS_TAR + bool "tar the root filesystem" + default y + help + Build a tar archive of the root filesystem + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_TAR_NONE + depends on BR2_TARGET_ROOTFS_TAR + help + Select compressor for tar archive of the root filesystem + +config BR2_TARGET_ROOTFS_TAR_NONE + bool "no compression" + help + Do not compress the tarball. + +config BR2_TARGET_ROOTFS_TAR_GZIP + bool "gzip" + help + Do compress the tarball with gzip. + +config BR2_TARGET_ROOTFS_TAR_BZIP2 + bool "bzip2" + help + Do compress the tarball with bzip2. + +config BR2_TARGET_ROOTFS_TAR_LZ4 + bool "lz4" + help + Do compress the tarball with lz4. + +config BR2_TARGET_ROOTFS_TAR_LZMA + bool "lzma" + help + Do compress the tarball with lzma. + +config BR2_TARGET_ROOTFS_TAR_LZO + bool "lzo" + help + Do compress the tarball with lzop. + +config BR2_TARGET_ROOTFS_TAR_XZ + bool "xz" + help + Do compress the tarball with xz. + +endchoice + +config BR2_TARGET_ROOTFS_TAR_OPTIONS + string "other random options to pass to tar" + depends on BR2_TARGET_ROOTFS_TAR + default "" + help + Any other flags you want to pass to tar + Refer to tar --help for details diff --git a/buildroot/fs/tar/tar.mk b/buildroot/fs/tar/tar.mk new file mode 100644 index 0000000..e39c2fd --- /dev/null +++ b/buildroot/fs/tar/tar.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# tar to archive target filesystem +# +################################################################################ + +TAR_OPTS := $(call qstrip,$(BR2_TARGET_ROOTFS_TAR_OPTIONS)) + +define ROOTFS_TAR_CMD + (cd $(TARGET_DIR); find -print0 | LC_ALL=C sort -z | \ + tar $(TAR_OPTS) -cf $@ --null --no-recursion -T - --numeric-owner) +endef + +$(eval $(rootfs)) diff --git a/buildroot/fs/ubi/Config.in b/buildroot/fs/ubi/Config.in new file mode 100644 index 0000000..5fa2f1f --- /dev/null +++ b/buildroot/fs/ubi/Config.in @@ -0,0 +1,51 @@ +config BR2_TARGET_ROOTFS_UBI + bool "ubi image containing an ubifs root filesystem" + select BR2_TARGET_ROOTFS_UBIFS + help + Build an ubi image from the ubifs one (with ubinize). + +if BR2_TARGET_ROOTFS_UBI + +config BR2_TARGET_ROOTFS_UBI_PEBSIZE + hex "physical eraseblock size" + default 0x20000 + help + Tells ubinize the physical eraseblock (PEB) size of the + flash chip the ubi image is created for. The value provided + here is passed to the -p/--peb-size option of ubinize. + +config BR2_TARGET_ROOTFS_UBI_SUBSIZE + int "sub-page size" + default 512 + help + Tells ubinize that the flash supports sub-pages and the sub-page + size. Use 0 if sub-pages are not supported on flash chip. + The value provided here is passed to the -s/--sub-page-size + option of ubinize. + +config BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG + bool "Use custom config file" + help + Select this option to use a custom ubinize configuration file, + rather than the default configuration used by Buildroot (which + defines a single dynamic volume marked as auto-resize). Passing + a custom ubinize configuration file allows you to create several + volumes, specify volume types, etc. + + As a convenience, buildroot replaces the string + "BR2_ROOTFS_UBIFS_PATH" with the path to the built ubifs file. + So the volume defined for the root filesystem can specify the + image path as: image=BR2_ROOTFS_UBIFS_PATH + +config BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG + help + Path to the ubinize configuration file. + +config BR2_TARGET_ROOTFS_UBI_OPTS + string "Additional ubinize options" + help + Any additional ubinize options you may want to include. + +endif # BR2_TARGET_ROOTFS_UBI diff --git a/buildroot/fs/ubi/ubi.mk b/buildroot/fs/ubi/ubi.mk new file mode 100644 index 0000000..c78feda --- /dev/null +++ b/buildroot/fs/ubi/ubi.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# Embed the ubifs image into an ubi image +# +################################################################################ + +UBI_UBINIZE_OPTS := -m $(BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE) +UBI_UBINIZE_OPTS += -p $(BR2_TARGET_ROOTFS_UBI_PEBSIZE) +ifneq ($(BR2_TARGET_ROOTFS_UBI_SUBSIZE),0) +UBI_UBINIZE_OPTS += -s $(BR2_TARGET_ROOTFS_UBI_SUBSIZE) +endif + +UBI_UBINIZE_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_OPTS)) + +ROOTFS_UBI_DEPENDENCIES = rootfs-ubifs + +ifeq ($(BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG),y) +UBINIZE_CONFIG_FILE_PATH = $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE)) +else +UBINIZE_CONFIG_FILE_PATH = fs/ubi/ubinize.cfg +endif + +# don't use sed -i as it misbehaves on systems with SELinux enabled when this is +# executed through fakeroot (see #9386) +define ROOTFS_UBI_CMD + sed 's;BR2_ROOTFS_UBIFS_PATH;$@fs;' \ + $(UBINIZE_CONFIG_FILE_PATH) > $(BUILD_DIR)/ubinize.cfg + $(HOST_DIR)/sbin/ubinize -o $@ $(UBI_UBINIZE_OPTS) $(BUILD_DIR)/ubinize.cfg + rm $(BUILD_DIR)/ubinize.cfg +endef + +$(eval $(rootfs)) diff --git a/buildroot/fs/ubi/ubinize.cfg b/buildroot/fs/ubi/ubinize.cfg new file mode 100644 index 0000000..b0aace7 --- /dev/null +++ b/buildroot/fs/ubi/ubinize.cfg @@ -0,0 +1,8 @@ +[ubifs] +mode=ubi +vol_id=0 +vol_type=dynamic +vol_name=rootfs +vol_alignment=1 +vol_flags=autoresize +image=BR2_ROOTFS_UBIFS_PATH diff --git a/buildroot/fs/ubifs/Config.in b/buildroot/fs/ubifs/Config.in new file mode 100644 index 0000000..e79ab9a --- /dev/null +++ b/buildroot/fs/ubifs/Config.in @@ -0,0 +1,98 @@ +config BR2_TARGET_ROOTFS_UBIFS + bool "ubifs root filesystem" + help + Build a ubifs root filesystem + +if BR2_TARGET_ROOTFS_UBIFS + +config BR2_TARGET_ROOTFS_UBIFS_LEBSIZE + hex "logical eraseblock size" + default 0x1f800 + help + Logical eraseblock (LEB) size. The value provided here is + passed to the -e/--leb-size option of mkfs.ubifs. + +config BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE + hex "minimum I/O unit size" + default 0x800 + help + Minimum I/O unit size. The value provided here is passed + to the -m/--min-io-size option of mkfs.ubifs/ubinize. + +config BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT + int "maximum logical eraseblock count" + default 2048 + help + Maximum logical eraseblock (LEB) count. The value provided + here is passed to the -c/--max-leb-cnt option of mkfs.ubifs. + +choice + prompt "ubifs runtime compression" + default BR2_TARGET_ROOTFS_UBIFS_RT_LZO + help + Select which compression format to use at run-time within + the ubifs file system. The choice made here is passed to + the -x/--compr option of mkfs.ubifs + +config BR2_TARGET_ROOTFS_UBIFS_RT_NONE + bool "no compression" + help + Don't use run-time compression. + +config BR2_TARGET_ROOTFS_UBIFS_RT_ZLIB + bool "gzip" + help + Use zlib compression at run-time. + +config BR2_TARGET_ROOTFS_UBIFS_RT_LZO + bool "lzo" + help + Use lzo compression at run-time. + +endchoice + +choice + prompt "Compression method" + default BR2_TARGET_ROOTFS_UBIFS_NONE + help + Select which compression format to compress the final image + into. + +config BR2_TARGET_ROOTFS_UBIFS_NONE + bool "no compression" + help + Do not compress the ubifs filesystem. + +config BR2_TARGET_ROOTFS_UBIFS_GZIP + bool "gzip" + help + Do compress the ubifs filesystem with gzip. + +config BR2_TARGET_ROOTFS_UBIFS_BZIP2 + bool "bzip2" + help + Do compress the ubifs filesystem with bzip2. + +config BR2_TARGET_ROOTFS_UBIFS_LZMA + bool "lzma" + help + Do compress the ubifs filesystem with lzma. + +config BR2_TARGET_ROOTFS_UBIFS_LZO + bool "lzo" + help + Do compress the ubifs filesystem with lzop. + +config BR2_TARGET_ROOTFS_UBIFS_XZ + bool "xz" + help + Do compress the ubifs filesystem with xz. + +endchoice + +config BR2_TARGET_ROOTFS_UBIFS_OPTS + string "Additional mkfs.ubifs options" + help + Any additional mkfs.ubifs options you may want to include. + +endif # BR2_TARGET_ROOTFS_UBIFS diff --git a/buildroot/fs/ubifs/ubifs.mk b/buildroot/fs/ubifs/ubifs.mk new file mode 100644 index 0000000..2cfc397 --- /dev/null +++ b/buildroot/fs/ubifs/ubifs.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# Build the ubifs root filesystem image +# +################################################################################ + +UBIFS_OPTS = \ + -e $(BR2_TARGET_ROOTFS_UBIFS_LEBSIZE) \ + -c $(BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT) \ + -m $(BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE) + +ifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_ZLIB),y) +UBIFS_OPTS += -x zlib +endif +ifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_LZO),y) +UBIFS_OPTS += -x lzo +endif +ifeq ($(BR2_TARGET_ROOTFS_UBIFS_RT_NONE),y) +UBIFS_OPTS += -x none +endif + +UBIFS_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBIFS_OPTS)) + +ROOTFS_UBIFS_DEPENDENCIES = host-mtd + +define ROOTFS_UBIFS_CMD + $(HOST_DIR)/sbin/mkfs.ubifs -d $(TARGET_DIR) $(UBIFS_OPTS) -o $@ +endef + +$(eval $(rootfs)) diff --git a/buildroot/fs/yaffs2/Config.in b/buildroot/fs/yaffs2/Config.in new file mode 100644 index 0000000..27da4ba --- /dev/null +++ b/buildroot/fs/yaffs2/Config.in @@ -0,0 +1,4 @@ +config BR2_TARGET_ROOTFS_YAFFS2 + bool "yaffs2 root filesystem" + help + Build a yaffs2 root filesystem diff --git a/buildroot/fs/yaffs2/yaffs.mk b/buildroot/fs/yaffs2/yaffs.mk new file mode 100644 index 0000000..9cba27a --- /dev/null +++ b/buildroot/fs/yaffs2/yaffs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# Build the yaffs2 root filesystem image +# +################################################################################ + +ROOTFS_YAFFS2_DEPENDENCIES = host-yaffs2utils + +define ROOTFS_YAFFS2_CMD + $(HOST_DIR)/bin/mkyaffs2 --all-root $(TARGET_DIR) $@ +endef + +$(eval $(rootfs)) diff --git a/buildroot/linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional b/buildroot/linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional new file mode 100644 index 0000000..02abadd --- /dev/null +++ b/buildroot/linux/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional @@ -0,0 +1,45 @@ +From 63a3f603413ffe82ad775f2d62a5afff87fd94a0 Mon Sep 17 00:00:00 2001 +From: "H. Peter Anvin" +Date: Thu, 7 Feb 2013 17:14:08 -0800 +Subject: [PATCH] timeconst.pl: Eliminate Perl warning + +defined(@array) is deprecated in Perl and gives off a warning. +Restructure the code to remove that warning. + +[ hpa: it would be interesting to revert to the timeconst.bc script. + It appears that the failures reported by akpm during testing of + that script was due to a known broken version of make, not a problem + with bc. The Makefile rules could probably be restructured to avoid + the make bug, or it is probably old enough that it doesn't matter. ] + +Reported-by: Andi Kleen +Signed-off-by: H. Peter Anvin +Cc: Andrew Morton +Cc: +Signed-off-by: Gustavo Zacarias +--- +Patch status: upstream + + kernel/timeconst.pl | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/kernel/timeconst.pl b/kernel/timeconst.pl +index eb51d76..3f42652 100644 +--- a/kernel/timeconst.pl ++++ b/kernel/timeconst.pl +@@ -369,10 +369,8 @@ if ($hz eq '--can') { + die "Usage: $0 HZ\n"; + } + +- @val = @{$canned_values{$hz}}; +- if (!defined(@val)) { +- @val = compute_values($hz); +- } ++ $cv = $canned_values{$hz}; ++ @val = defined($cv) ? @$cv : compute_values($hz); + output($hz, @val); + } + exit 0; +-- +2.4.10 + diff --git a/buildroot/linux/Config.ext.in b/buildroot/linux/Config.ext.in new file mode 100644 index 0000000..011dffb --- /dev/null +++ b/buildroot/linux/Config.ext.in @@ -0,0 +1,131 @@ +menu "Linux Kernel Extensions" + +#------------------------------------------------------------------------------- +# Xenomai +config BR2_LINUX_KERNEL_EXT_XENOMAI + bool "Adeos/Xenomai Real-time patch" + depends on BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_XENOMAI + help + Xenomai is split in two parts: a kernel part and a userspace + part. Enabling this option automatically selects the Xenomai + package and helps in patching the Linux kernel built by + Buildroot with the Xenomai kernel part (ie Adeos/Ipipe). + + You can find the currently supported kernel versions by + looking at the available patches in the Xenomai sources + tree: ksrc/arch/$(ARCH)/patches + + However, it is recommended to use the latest version of the + Adeos/Ipipe patch available at + http://download.gna.org/adeos/patches + + Xenomai is know to support Blackfin, SH4, x86, ARM, NIOS2 + and PowerPC architectures. + +config BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH + string "Path for Adeos patch file" + depends on BR2_LINUX_KERNEL_EXT_XENOMAI + help + Optionally, explicitly specify the Adeos patch to use. + Download it at http://download.gna.org/adeos/patches + and verify that your kernel version in buildroot matches. + +comment "xenomai needs a uClibc or glibc toolchain w/ threads" + depends on BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL + +#------------------------------------------------------------------------------- +# RTAI +config BR2_LINUX_KERNEL_EXT_RTAI + bool "RTAI Real-time patch" + select BR2_PACKAGE_RTAI + help + RTAI Kernel part. + +#------------------------------------------------------------------------------- +# ev3dev Linux drivers +config BR2_LINUX_KERNEL_EXT_EV3DEV_LINUX_DRIVERS + bool "ev3dev Linux drivers" + select BR2_PACKAGE_EV3DEV_LINUX_DRIVERS + help + Linux drivers for LEGO MINDSTORMS EV3 from the ev3dev project. + + https://github.com/ev3dev/lego-linux-drivers + +#------------------------------------------------------------------------------- +# fbtft +config BR2_LINUX_KERNEL_EXT_FBTFT + bool "FB TFT drivers" + select BR2_PACKAGE_FBTFT + help + Linux Framebuffer drivers for small TFT LCD display modules, + e.g. Adafruit PiTFT displays for Raspberry Pi (this extra + package is only needed for linux kernels until v3.19, since + v4.0 the drivers are included in the staging area). + + To enable fbtft, e.g. for Adafruit 2.8 PiTFT, enable the + following kernel configurations: + - CONFIG_SPI + - CONFIG_GPIOLIB + - CONFIG_FB + - CONFIG_FB_TFT + - CONFIG_FB_TFT_ILI9341 + + https://github.com/notro/fbtft + +# aufs-standalone +config BR2_LINUX_KERNEL_EXT_AUFS + bool "Aufs Filesystem Module patch" + select BR2_PACKAGE_AUFS + help + Aufs is split in two parts: a kernel part and a userspace + part. Enabling this option automatically selects the aufs + standalone (module) package and patches the Linux kernel + built by Buildroot with the aufs kernel part (ie fs/aufs). + + It is important to use the correct branch of aufs-standalone. + +if BR2_LINUX_KERNEL_EXT_AUFS + +choice + bool "aufs-standalone series" + help + Select the major series of this version. This must match the + major version of your kernel (e.g. for kernels 3.x, select + aufs3.x; for kernels 4.x, select aufs4.x). + + Note: neither aufs1.x nor aufs2.x (both for kernels older than + 3.x) are supported. + +config BR2_LINUX_KERNEL_EXT_AUFS_SERIES_3 + bool "aufs3.x" + +config BR2_LINUX_KERNEL_EXT_AUFS_SERIES_4 + bool "aufs4.x" + +endchoice + +config BR2_LINUX_KERNEL_EXT_AUFS_SERIES + int + default 3 if BR2_LINUX_KERNEL_EXT_AUFS_SERIES_3 + default 4 if BR2_LINUX_KERNEL_EXT_AUFS_SERIES_4 + +config BR2_LINUX_KERNEL_EXT_AUFS_VERSION + string "aufs-standalone version" + default "" + help + The version you choose must match that of your kernel. Usually, + the sha1 of the cset you want to use; avoid using a branch name + as this yields non-reproducible builds. + + See the following resources to see what versions are available: + + For aufs3.x: https://sourceforge.net/p/aufs/aufs3-standalone/ref/master/branches/ + For aufs4.x: https://github.com/sfjro/aufs4-standalone/branches/all + +endif # aufs + +endmenu diff --git a/buildroot/linux/Config.in b/buildroot/linux/Config.in new file mode 100644 index 0000000..6f5c0ea --- /dev/null +++ b/buildroot/linux/Config.in @@ -0,0 +1,432 @@ +menu "Kernel" + +config BR2_LINUX_KERNEL + bool "Linux Kernel" + help + Enable this option if you want to build a Linux kernel for + your embedded device + +if BR2_LINUX_KERNEL + +comment "Linux kernel in thumb mode may be broken with binutils >= 2.29" + depends on BR2_arm || BR2_armeb + depends on !BR2_BINUTILS_VERSION_2_28_X + +# Packages that need to have a kernel with support for loadable modules, +# but do not use the kernel-modules infrastructure, should select that +# option. +config BR2_LINUX_NEEDS_MODULES + bool + +# +# Version selection. We provide the choice between: +# +# 1. A single fairly recent stable kernel version +# 2. A custom stable version +# 3. A custom tarball +# 4. A set of custom repository locations +# +choice + prompt "Kernel version" + +config BR2_LINUX_KERNEL_LATEST_VERSION + bool "Latest version (4.15)" + +config BR2_LINUX_KERNEL_LATEST_CIP_VERSION + bool "Latest CIP SLTS version (v4.4.130-cip23)" + help + CIP launched in the spring of 2016 to address the needs of + organizations in industries such as power generation and + distribution, water, oil and gas, transportation, building + automation and more for reliable and secure Linux-based + embedded systems that can be sustained over a period of + 10 to as many as 60 years. + The project's goal is to provide an open source base layer + of industrial-grade software that permits the use and + implementation of software building blocks that meet + these requirements. + + The CIP community plans to maintain 4.4 for security and + bug fixes for more than 10 years. + + https://www.cip-project.org + +config BR2_LINUX_KERNEL_CUSTOM_VERSION + bool "Custom version" + help + This option allows to use a specific official version from + kernel.org, like 2.6.x, 2.6.x.y, 3.x.y, ... + + Note: you cannot use this option to select a _longterm_ 2.6 + kernel, because these kernels are not located at the standard + URL at kernel.org. Instead, select "Custom tarball" and + specify the right URL directly. + +config BR2_LINUX_KERNEL_CUSTOM_TARBALL + bool "Custom tarball" + help + This option allows to specify a URL pointing to a kernel source + tarball. This URL can use any protocol recognized by Buildroot, + like http://, ftp://, file:// or scp://. + + When pointing to a local tarball using file://, you may want to + use a make variable like $(TOPDIR) to reference the root of the + Buildroot tree. + +config BR2_LINUX_KERNEL_CUSTOM_GIT + bool "Custom Git repository" + help + This option allows Buildroot to get the Linux kernel source + code from a Git repository. + +config BR2_LINUX_KERNEL_CUSTOM_HG + bool "Custom Mercurial repository" + help + This option allows Buildroot to get the Linux kernel source + code from a Mercurial repository. + +config BR2_LINUX_KERNEL_CUSTOM_SVN + bool "Custom Subversion repository" + help + This option allows Buildroot to get the Linux kernel source + code from a Subversion repository. + +endchoice + +config BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE + string "Kernel version" + depends on BR2_LINUX_KERNEL_CUSTOM_VERSION + +config BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION + string "URL of custom kernel tarball" + depends on BR2_LINUX_KERNEL_CUSTOM_TARBALL + +if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN + +config BR2_LINUX_KERNEL_CUSTOM_REPO_URL + string "URL of custom repository" + default BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL \ + if BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL != "" # legacy + +config BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION + string "Custom repository version" + default BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION \ + if BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION != "" # legacy + help + Revision to use in the typical format used by Git/Mercurial/Subversion + E.G. a sha id, a tag, branch, .. + +endif + +config BR2_LINUX_KERNEL_VERSION + string + default "4.15.16" if BR2_LINUX_KERNEL_LATEST_VERSION + default "v4.4.130-cip23" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION + default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \ + if BR2_LINUX_KERNEL_CUSTOM_VERSION + default "custom" if BR2_LINUX_KERNEL_CUSTOM_TARBALL + default BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION \ + if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN + +# +# Patch selection +# + +config BR2_LINUX_KERNEL_PATCH + string "Custom kernel patches" + help + A space-separated list of patches to apply to the + kernel. Each patch can be described as an URL, a local file + path, or a directory. In the case of a directory, all files + matching *.patch in the directory will be applied. + +# +# Configuration selection +# + +choice + prompt "Kernel configuration" + default BR2_LINUX_KERNEL_USE_DEFCONFIG + +config BR2_LINUX_KERNEL_USE_DEFCONFIG + bool "Using an in-tree defconfig file" + +config BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG + bool "Use the architecture default configuration" + help + This option will use the default configuration for the + selected architecture. I.e, it is equivalent to running + "make ARCH= defconfig". This is useful on architectures + that have a single defconfig file, such as ARM64. + +config BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG + bool "Using a custom (def)config file" + +endchoice + +config BR2_LINUX_KERNEL_DEFCONFIG + string "Defconfig name" + depends on BR2_LINUX_KERNEL_USE_DEFCONFIG + help + Name of the kernel defconfig file to use, without the + trailing _defconfig. The defconfig is located in + arch//configs in the kernel tree. + +config BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG + help + Path to the kernel configuration file + + Note: this can be a defconfig file or a complete .config file, + which can later be saved back with make linux-update-(def)config. + +config BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of kernel configuration fragment files, + that will be merged to the main kernel configuration file. + +# +# Binary format +# + +choice + prompt "Kernel binary format" + default BR2_LINUX_KERNEL_ZIMAGE if BR2_arm || BR2_armeb + +config BR2_LINUX_KERNEL_UIMAGE + bool "uImage" + depends on BR2_arc || BR2_arm || BR2_armeb || BR2_bfin || \ + BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \ + BR2_sh || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_xtensa + select BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_LINUX_KERNEL_APPENDED_UIMAGE + bool "uImage with appended DT" + depends on BR2_arm || BR2_armeb + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_APPENDED_DTB + select BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_LINUX_KERNEL_BZIMAGE + bool "bzImage" + depends on BR2_i386 || BR2_x86_64 + +config BR2_LINUX_KERNEL_ZIMAGE + bool "zImage" + depends on BR2_arm || BR2_armeb || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \ + BR2_sh || BR2_xtensa + +config BR2_LINUX_KERNEL_ZIMAGE_EPAPR + bool "zImage.epapr" + depends on BR2_powerpc64 || BR2_powerpc64le + +config BR2_LINUX_KERNEL_APPENDED_ZIMAGE + bool "zImage with appended DT" + depends on BR2_arm || BR2_armeb + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_APPENDED_DTB + +config BR2_LINUX_KERNEL_CUIMAGE + bool "cuImage" + depends on BR2_powerpc + select BR2_PACKAGE_HOST_UBOOT_TOOLS + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT + +config BR2_LINUX_KERNEL_SIMPLEIMAGE + bool "simpleImage" + depends on BR2_microblaze + select BR2_PACKAGE_HOST_UBOOT_TOOLS + select BR2_LINUX_KERNEL_DTS_SUPPORT + select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT + +config BR2_LINUX_KERNEL_IMAGE + bool "Image" + depends on BR2_aarch64 + +config BR2_LINUX_KERNEL_LINUX_BIN + bool "linux.bin" + depends on BR2_microblaze + select BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_LINUX_KERNEL_VMLINUX_BIN + bool "vmlinux.bin" + depends on BR2_mips || BR2_mipsel || BR2_sh + +config BR2_LINUX_KERNEL_VMLINUX + bool "vmlinux" + +config BR2_LINUX_KERNEL_VMLINUZ + bool "vmlinuz" + depends on BR2_mips || BR2_mipsel + +config BR2_LINUX_KERNEL_VMLINUZ_BIN + bool "vmlinuz.bin" + depends on BR2_mips || BR2_mipsel + +config BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM + bool "custom target" + help + For certain cases a board-specific target image must be + used. For example, on powerPC where the OpenFirmware + description is attached in a board-specific kernel image + target like 'cuImage.mpc8379_rdb'. + + Select this option and specify the make target in "Kernel + image target name". + +endchoice + +# +# Kernel compression format +# + +choice + prompt "Kernel compression format" + help + This selection will just ensure that the correct host tools are built. + The actual compression for the kernel should be selected in the + kernel configuration menu. + +config BR2_LINUX_KERNEL_GZIP + bool "gzip compression" + +config BR2_LINUX_KERNEL_LZ4 + bool "lz4 compression" + +config BR2_LINUX_KERNEL_LZMA + bool "lzma compression" + +config BR2_LINUX_KERNEL_LZO + bool "lzo compression" + +config BR2_LINUX_KERNEL_XZ + bool "xz compression" + +endchoice + +config BR2_LINUX_KERNEL_IMAGE_TARGET_NAME + string "Kernel image target name" + depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM + help + Specify the kernel make target to build the kernel that you + need. + +config BR2_LINUX_KERNEL_IMAGE_NAME + string "Kernel image name" + depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM + help + The filename of the kernel image, if it is different from the + make target (above). Only Xtensa uses a filename different from + the make target. Defaults to BR2_LINUX_KERNEL_IMAGE_TARGET_NAME. + + If unsure, leave it empty. + +config BR2_LINUX_KERNEL_UIMAGE_LOADADDR + string "load address (for 3.7+ multi-platform image)" + depends on BR2_arm || BR2_armeb + depends on BR2_LINUX_KERNEL_UIMAGE || BR2_LINUX_KERNEL_APPENDED_UIMAGE + help + If your ARM system's Linux kernel is configured with the new (3.7+) + multi-architecture support (CONFIG_ARCH_MULTIPLATFORM=y in your + kernel config), then it is necessary to specify a kernel load address + when building the uImage. This should be a hexadecimal string + beginning with 0x, for example: 0x00008000. + + If unsure, let this option empty. + +config BR2_LINUX_KERNEL_DTS_SUPPORT + bool "Build a Device Tree Blob (DTB)" + help + Compile one or more device tree sources into device tree blobs. + Select the dts files to compile in the options below. + +if BR2_LINUX_KERNEL_DTS_SUPPORT + +# We have mainly three cases when it comes to device tree support: +# 1) We don't want any support at all. Then the ..DTS_SUPPORT +# variable won't be set +# 2) We want device tree support, so we need the user to enter the +# device tree name or the path to the custom device he uses, but +# the kernel abstracts this from us and only build an image that +# looks like a regular kernel image. In this case, we only need +# to derive the kernel image name from the given device tree +# name, and all the rest is as usual +# 3) We want device tree support, but the kernel requires us to +# build the device tree blob separately. In this case, some +# more logic will be needed. +# The variable below address the second case, were you only want +# limited actions from buildroot. +config BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT + bool + +config BR2_LINUX_KERNEL_APPENDED_DTB + bool + +config BR2_LINUX_KERNEL_INTREE_DTS_NAME + string "In-tree Device Tree Source file names" + help + Name of in-tree device tree source file, without + the trailing .dts. You can provide a list of + dts files to build, separated by spaces. + +config BR2_LINUX_KERNEL_CUSTOM_DTS_PATH + string "Out-of-tree Device Tree Source file paths" + help + Path to to out-of-tree device tree source files. + You can provide a list of dts paths to copy and + build, separated by spaces. + +endif + +config BR2_LINUX_KERNEL_INSTALL_TARGET + bool "Install kernel image to /boot in target" + depends on !BR2_TARGET_ROOTFS_INITRAMFS + help + Select this option to have the kernel image installed to + /boot in the target root filesystem, as is typically done on + x86/x86_64 systems. + + Note that this option also installs the Device Tree Blobs to + /boot if DTBs have been generated by the kernel build + process. + +config BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL + bool "Needs host OpenSSL" + help + Some Linux kernel configuration options (such as + CONFIG_SYSTEM_TRUSTED_KEYRING) require building a host + program called extract-cert, which itself needs + OpenSSL. Enabling this option will ensure host-openssl gets + built before the Linux kernel. + + Enable this option if you get a Linux kernel build failure + such as "scripts/extract-cert.c:21:25: fatal error: + openssl/bio.h: No such file or directory". + +config BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF + bool "Needs host libelf" + help + Some Linux kernel configuration options (such as + CONFIG_UNWINDER_ORC) require building a host program that + needs libelf. Enabling this option will ensure host-elfutils + (which provides libelf) gets built before the Linux kernel. + + Enable this option if you get a Linux kernel build failure + such as "Cannot generate ORC metadata for + CONFIG_UNWINDER_ORC=y, please install libelf-dev, + libelf-devel or elfutils-libelf-devel". + +# Linux extensions +source "linux/Config.ext.in" + +# Linux tools +source "package/linux-tools/Config.in" + +endif # BR2_LINUX_KERNEL + +endmenu diff --git a/buildroot/linux/linux-ext-aufs.mk b/buildroot/linux/linux-ext-aufs.mk new file mode 100644 index 0000000..fb2f356 --- /dev/null +++ b/buildroot/linux/linux-ext-aufs.mk @@ -0,0 +1,21 @@ +################################################################################ +# Linux Aufs extensions +# +# Patch the linux kernel with aufs extension +################################################################################ + +LINUX_EXTENSIONS += aufs + +define AUFS_PREPARE_KERNEL + if test -d $(@D)/fs/aufs/; then \ + echo "Your kernel already supports AUFS."; \ + exit 1; \ + fi + $(APPLY_PATCHES) $(@D) $(AUFS_DIR) \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-kbuild.patch \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-base.patch \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-mmap.patch \ + aufs$(BR2_PACKAGE_AUFS_SERIES)-standalone.patch + cp -r $(AUFS_DIR)/fs/aufs/ $(@D)/fs/ + cp $(AUFS_DIR)/include/uapi/linux/aufs_type.h $(@D)/include/uapi/linux/ +endef diff --git a/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk b/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk new file mode 100644 index 0000000..c8afeeb --- /dev/null +++ b/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk @@ -0,0 +1,12 @@ +################################################################################ +# Linux ev3dev extensions +# +# Patch the linux kernel with ev3dev extension +################################################################################ + +LINUX_EXTENSIONS += ev3dev-linux-drivers + +define EV3DEV_LINUX_DRIVERS_PREPARE_KERNEL + mkdir -p $(LINUX_DIR)/drivers/lego + cp -dpfr $(EV3DEV_LINUX_DRIVERS_DIR)/* $(LINUX_DIR)/drivers/lego/ +endef diff --git a/buildroot/linux/linux-ext-fbtft.mk b/buildroot/linux/linux-ext-fbtft.mk new file mode 100644 index 0000000..5eb3d94 --- /dev/null +++ b/buildroot/linux/linux-ext-fbtft.mk @@ -0,0 +1,22 @@ +################################################################################ +# Linux fbtft extensions +# +# Patch the linux kernel with fbtft extension +################################################################################ + +LINUX_EXTENSIONS += fbtft + +# for linux >= 3.15 install to drivers/video/fbdev/fbtft +# for linux < 3.15 install to drivers/video/fbtft +define FBTFT_PREPARE_KERNEL + if [ -e $(LINUX_DIR)/drivers/video/fbdev ]; then \ + dest=drivers/video/fbdev ; \ + else \ + dest=drivers/video ; \ + fi ; \ + mkdir -p $(LINUX_DIR)/$${dest}/fbtft; \ + cp -dpfr $(FBTFT_DIR)/* $(LINUX_DIR)/$${dest}/fbtft/ ; \ + echo "source \"$${dest}/fbtft/Kconfig\"" \ + >> $(LINUX_DIR)/$${dest}/Kconfig ; \ + echo 'obj-y += fbtft/' >> $(LINUX_DIR)/$${dest}/Makefile +endef diff --git a/buildroot/linux/linux-ext-rtai.mk b/buildroot/linux/linux-ext-rtai.mk new file mode 100644 index 0000000..fb483aa --- /dev/null +++ b/buildroot/linux/linux-ext-rtai.mk @@ -0,0 +1,30 @@ +################################################################################ +# Linux RTAI extensions +# +# Patch the linux kernel with RTAI extension +################################################################################ + +LINUX_EXTENSIONS += rtai + +ifeq ($(KERNEL_ARCH),i386) +RTAI_ARCH = x86 +else ifeq ($(KERNEL_ARCH),x86_64) +RTAI_ARCH = x86 +else ifeq ($(KERNEL_ARCH),powerpc) +RTAI_ARCH = ppc +else +RTAI_ARCH = $(KERNEL_ARCH) +endif + +# Prepare kernel patch +define RTAI_PREPARE_KERNEL + kver=`$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelversion` ; \ + if test -f $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/hal-linux-$${kver}-*patch ; then \ + $(APPLY_PATCHES) $(LINUX_DIR) \ + $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/ \ + hal-linux-$${kver}-*patch ; \ + else \ + echo "No RTAI patch for your kernel version" ; \ + exit 1 ; \ + fi +endef diff --git a/buildroot/linux/linux-ext-xenomai.mk b/buildroot/linux/linux-ext-xenomai.mk new file mode 100644 index 0000000..76a9786 --- /dev/null +++ b/buildroot/linux/linux-ext-xenomai.mk @@ -0,0 +1,24 @@ +################################################################################ +# Linux Adeos/Xenomai extensions +# +# Patch the linux kernel with xenomai extension +################################################################################ + +LINUX_EXTENSIONS += xenomai + +# Adeos patch version +XENOMAI_ADEOS_PATCH = $(call qstrip,$(BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH)) +ifeq ($(XENOMAI_ADEOS_PATCH),) +XENOMAI_ADEOS_OPTS = --default +else +XENOMAI_ADEOS_OPTS = --adeos=$(XENOMAI_ADEOS_PATCH) +endif + +# Prepare kernel patch +define XENOMAI_PREPARE_KERNEL + $(XENOMAI_DIR)/scripts/prepare-kernel.sh \ + --linux=$(LINUX_DIR) \ + --arch=$(KERNEL_ARCH) \ + $(XENOMAI_ADEOS_OPTS) \ + --verbose +endef diff --git a/buildroot/linux/linux.mk b/buildroot/linux/linux.mk new file mode 100644 index 0000000..cc5aeb6 --- /dev/null +++ b/buildroot/linux/linux.mk @@ -0,0 +1,515 @@ +################################################################################ +# +# Linux kernel target +# +################################################################################ + +LINUX_VERSION = $(call qstrip,$(BR2_LINUX_KERNEL_VERSION)) +LINUX_LICENSE = GPL-2.0 +LINUX_LICENSE_FILES = COPYING + +define LINUX_HELP_CMDS + @echo ' linux-menuconfig - Run Linux kernel menuconfig' + @echo ' linux-savedefconfig - Run Linux kernel savedefconfig' + @echo ' linux-update-defconfig - Save the Linux configuration to the path specified' + @echo ' by BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE' +endef + +# Compute LINUX_SOURCE and LINUX_SITE from the configuration +ifeq ($(BR2_LINUX_KERNEL_CUSTOM_TARBALL),y) +LINUX_TARBALL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION)) +LINUX_SITE = $(patsubst %/,%,$(dir $(LINUX_TARBALL))) +LINUX_SOURCE = $(notdir $(LINUX_TARBALL)) +else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_GIT),y) +LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)) +LINUX_SITE_METHOD = git +else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_HG),y) +LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)) +LINUX_SITE_METHOD = hg +else ifeq ($(BR2_LINUX_KERNEL_CUSTOM_SVN),y) +LINUX_SITE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)) +LINUX_SITE_METHOD = svn +else ifeq ($(BR2_LINUX_KERNEL_LATEST_CIP_VERSION),y) +LINUX_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/bwh/linux-cip.git +else ifneq ($(findstring -rc,$(LINUX_VERSION)),) +# Since 4.12-rc1, -rc kernels are generated from cgit. This also works for +# older -rc kernels. +LINUX_SITE = https://git.kernel.org/torvalds/t +else +LINUX_SOURCE = linux-$(LINUX_VERSION).tar.xz +# In X.Y.Z, get X and Y. We replace dots and dashes by spaces in order +# to use the $(word) function. We support versions such as 4.0, 3.1, +# 2.6.32, 2.6.32-rc1, 3.0-rc6, etc. +ifeq ($(findstring x2.6.,x$(LINUX_VERSION)),x2.6.) +LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6 +else ifeq ($(findstring x3.,x$(LINUX_VERSION)),x3.) +LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v3.x +else ifeq ($(findstring x4.,x$(LINUX_VERSION)),x4.) +LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v4.x +endif +endif + +ifeq ($(BR2_LINUX_KERNEL)$(BR2_LINUX_KERNEL_LATEST_VERSION),y) +BR_NO_CHECK_HASH_FOR += $(LINUX_SOURCE) +endif + +LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH)) + +# We rely on the generic package infrastructure to download and apply +# remote patches (downloaded from ftp, http or https). For local +# patches, we can't rely on that infrastructure, because there might +# be directories in the patch list (unlike for other packages). +LINUX_PATCH = $(filter ftp://% http://% https://%,$(LINUX_PATCHES)) + +LINUX_INSTALL_IMAGES = YES +LINUX_DEPENDENCIES += host-kmod + +# host tools needed for kernel compression +ifeq ($(BR2_LINUX_KERNEL_LZ4),y) +LINUX_DEPENDENCIES += host-lz4 +else ifeq ($(BR2_LINUX_KERNEL_LZMA),y) +LINUX_DEPENDENCIES += host-lzma +else ifeq ($(BR2_LINUX_KERNEL_LZO),y) +LINUX_DEPENDENCIES += host-lzop +else ifeq ($(BR2_LINUX_KERNEL_XZ),y) +LINUX_DEPENDENCIES += host-xz +endif +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_GZIP) += CONFIG_KERNEL_GZIP +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZ4) += CONFIG_KERNEL_LZ4 +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZMA) += CONFIG_KERNEL_LZMA +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZO) += CONFIG_KERNEL_LZO +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) += CONFIG_KERNEL_XZ + +ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL),y) +LINUX_DEPENDENCIES += host-openssl +endif + +ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF),y) +LINUX_DEPENDENCIES += host-elfutils +endif + +# If host-uboot-tools is selected by the user, assume it is needed to +# create a custom image +ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS),y) +LINUX_DEPENDENCIES += host-uboot-tools +endif + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define LINUX_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),linux) +endef +LINUX_POST_EXTRACT_HOOKS += LINUX_XTENSA_OVERLAY_EXTRACT +LINUX_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +LINUX_MAKE_FLAGS = \ + HOSTCC="$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS)" \ + ARCH=$(KERNEL_ARCH) \ + INSTALL_MOD_PATH=$(TARGET_DIR) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + DEPMOD=$(HOST_DIR)/sbin/depmod + +LINUX_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + BR_BINARIES_DIR=$(BINARIES_DIR) + +ifeq ($(BR2_REPRODUCIBLE),y) +LINUX_MAKE_ENV += \ + KBUILD_BUILD_VERSION=1 \ + KBUILD_BUILD_USER=buildroot \ + KBUILD_BUILD_HOST=buildroot \ + KBUILD_BUILD_TIMESTAMP="$(shell LC_ALL=C date -d @$(SOURCE_DATE_EPOCH))" +endif + +# Get the real Linux version, which tells us where kernel modules are +# going to be installed in the target filesystem. +LINUX_VERSION_PROBED = `$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease 2>/dev/null` + +KERNEL_DTS_NAME += $(call qstrip,$(BR2_LINUX_KERNEL_INTREE_DTS_NAME)) + +# We keep only the .dts files, so that the user can specify both .dts +# and .dtsi files in BR2_LINUX_KERNEL_CUSTOM_DTS_PATH. Both will be +# copied to arch//boot/dts, but only the .dts files will +# actually be generated as .dtb. +KERNEL_DTS_NAME += $(basename $(filter %.dts,$(notdir $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH))))) + +KERNEL_DTBS = $(addsuffix .dtb,$(KERNEL_DTS_NAME)) + +ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y) +LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME)) +LINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME)) +ifeq ($(LINUX_IMAGE_NAME),) +LINUX_IMAGE_NAME = $(LINUX_TARGET_NAME) +endif +else +ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y) +LINUX_IMAGE_NAME = uImage +else ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y) +LINUX_IMAGE_NAME = uImage +else ifeq ($(BR2_LINUX_KERNEL_BZIMAGE),y) +LINUX_IMAGE_NAME = bzImage +else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE),y) +LINUX_IMAGE_NAME = zImage +else ifeq ($(BR2_LINUX_KERNEL_ZIMAGE_EPAPR),y) +LINUX_IMAGE_NAME = zImage.epapr +else ifeq ($(BR2_LINUX_KERNEL_APPENDED_ZIMAGE),y) +LINUX_IMAGE_NAME = zImage +else ifeq ($(BR2_LINUX_KERNEL_CUIMAGE),y) +LINUX_IMAGE_NAME = cuImage.$(firstword $(KERNEL_DTS_NAME)) +else ifeq ($(BR2_LINUX_KERNEL_SIMPLEIMAGE),y) +LINUX_IMAGE_NAME = simpleImage.$(firstword $(KERNEL_DTS_NAME)) +else ifeq ($(BR2_LINUX_KERNEL_IMAGE),y) +LINUX_IMAGE_NAME = Image +else ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y) +LINUX_IMAGE_NAME = linux.bin +else ifeq ($(BR2_LINUX_KERNEL_VMLINUX_BIN),y) +LINUX_IMAGE_NAME = vmlinux.bin +else ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) +LINUX_IMAGE_NAME = vmlinux +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y) +LINUX_IMAGE_NAME = vmlinuz +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ_BIN),y) +LINUX_IMAGE_NAME = vmlinuz.bin +endif +# The if-else blocks above are all the image types we know of, and all +# come from a Kconfig choice, so we know we have LINUX_IMAGE_NAME set +# to something +LINUX_TARGET_NAME = $(LINUX_IMAGE_NAME) +endif + +LINUX_KERNEL_UIMAGE_LOADADDR = $(call qstrip,$(BR2_LINUX_KERNEL_UIMAGE_LOADADDR)) +ifneq ($(LINUX_KERNEL_UIMAGE_LOADADDR),) +LINUX_MAKE_FLAGS += LOADADDR="$(LINUX_KERNEL_UIMAGE_LOADADDR)" +endif + +# Compute the arch path, since i386 and x86_64 are in arch/x86 and not +# in arch/$(KERNEL_ARCH). Even if the kernel creates symbolic links +# for bzImage, arch/i386 and arch/x86_64 do not exist when copying the +# defconfig file. +ifeq ($(KERNEL_ARCH),i386) +KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/x86 +else ifeq ($(KERNEL_ARCH),x86_64) +KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/x86 +else +KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/$(KERNEL_ARCH) +endif + +ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) +LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME) +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y) +LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME) +else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ_BIN),y) +LINUX_IMAGE_PATH = $(LINUX_DIR)/$(LINUX_IMAGE_NAME) +else +LINUX_IMAGE_PATH = $(KERNEL_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME) +endif # BR2_LINUX_KERNEL_VMLINUX + +define LINUX_APPLY_LOCAL_PATCHES + for p in $(filter-out ftp://% http://% https://%,$(LINUX_PATCHES)) ; do \ + if test -d $$p ; then \ + $(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \ + else \ + $(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \ + fi \ + done +endef + +LINUX_POST_PATCH_HOOKS += LINUX_APPLY_LOCAL_PATCHES + +# Older linux kernels use deprecated perl constructs in timeconst.pl +# that were removed for perl 5.22+ so it breaks on newer distributions +# Try a dry-run patch to see if this applies, if it does go ahead +define LINUX_TRY_PATCH_TIMECONST + @if patch -p1 --dry-run -f -s -d $(@D) <$(LINUX_PKGDIR)/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional >/dev/null ; then \ + $(APPLY_PATCHES) $(@D) $(LINUX_PKGDIR) 0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional ; \ + fi +endef +LINUX_POST_PATCH_HOOKS += LINUX_TRY_PATCH_TIMECONST + +ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y) +LINUX_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG))_defconfig +else ifeq ($(BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG),y) +LINUX_KCONFIG_DEFCONFIG = defconfig +else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y) +LINUX_KCONFIG_FILE = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE)) +endif +LINUX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES)) +LINUX_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig + +# LINUX_MAKE_FLAGS overrides HOSTCC to allow the kernel build to find our +# host-openssl and host-libelf. However, this triggers a bug in the kconfig +# build script that causes it to build with /usr/include/ncurses.h (which is +# typically wchar) but link with $(HOST_DIR)/lib/libncurses.so (which is not). +# We don't actually need any host-package for kconfig, so remove the HOSTCC +# override again. +LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS) HOSTCC="$(HOSTCC)" + +# If no package has yet set it, set it from the Kconfig option +LINUX_NEEDS_MODULES ?= $(BR2_LINUX_NEEDS_MODULES) + +# Make sure the Linux kernel is built with the right endianness. Not +# all architectures support +# CONFIG_CPU_BIG_ENDIAN/CONFIG_CPU_LITTLE_ENDIAN in Linux, but the +# option will be thrown away and ignored if it doesn't exist. +ifeq ($(BR2_ENDIAN),"BIG") +define LINUX_FIXUP_CONFIG_ENDIANNESS + $(call KCONFIG_ENABLE_OPT,CONFIG_CPU_BIG_ENDIAN,$(@D)/.config) +endef +else +define LINUX_FIXUP_CONFIG_ENDIANNESS + $(call KCONFIG_ENABLE_OPT,CONFIG_CPU_LITTLE_ENDIAN,$(@D)/.config) +endef +endif + +define LINUX_KCONFIG_FIXUP_CMDS + $(if $(LINUX_NEEDS_MODULES), + $(call KCONFIG_ENABLE_OPT,CONFIG_MODULES,$(@D)/.config)) + $(call KCONFIG_ENABLE_OPT,$(strip $(LINUX_COMPRESSION_OPT_y)),$(@D)/.config) + $(foreach opt, $(LINUX_COMPRESSION_OPT_), + $(call KCONFIG_DISABLE_OPT,$(opt),$(@D)/.config) + ) + $(LINUX_FIXUP_CONFIG_ENDIANNESS) + $(if $(BR2_arm)$(BR2_armeb), + $(call KCONFIG_ENABLE_OPT,CONFIG_AEABI,$(@D)/.config)) + $(if $(BR2_TARGET_ROOTFS_CPIO), + $(call KCONFIG_ENABLE_OPT,CONFIG_BLK_DEV_INITRD,$(@D)/.config)) + # As the kernel gets compiled before root filesystems are + # built, we create a fake cpio file. It'll be + # replaced later by the real cpio archive, and the kernel will be + # rebuilt using the linux-rebuild-with-initramfs target. + $(if $(BR2_TARGET_ROOTFS_INITRAMFS), + touch $(BINARIES_DIR)/rootfs.cpio + $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_SOURCE,"$${BR_BINARIES_DIR}/rootfs.cpio",$(@D)/.config) + $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_UID,0,$(@D)/.config) + $(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0,$(@D)/.config)) + $(if $(BR2_ROOTFS_DEVICE_CREATION_STATIC),, + $(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS_MOUNT,$(@D)/.config)) + $(if $(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV), + $(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER,$(@D)/.config)) + $(if $(BR2_PACKAGE_KTAP), + $(call KCONFIG_ENABLE_OPT,CONFIG_DEBUG_FS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_ENABLE_DEFAULT_TRACERS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_FUNCTION_TRACER,$(@D)/.config)) + $(if $(BR2_PACKAGE_LINUX_TOOLS_PERF), + $(call KCONFIG_ENABLE_OPT,CONFIG_PERF_EVENTS,$(@D)/.config)) + $(if $(BR2_PACKAGE_SYSTEMD), + $(call KCONFIG_ENABLE_OPT,CONFIG_CGROUPS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_INOTIFY_USER,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_FHANDLE,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_AUTOFS4_FS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_POSIX_ACL,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_TMPFS_XATTR,$(@D)/.config)) + $(if $(BR2_PACKAGE_SMACK), + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_SMACK,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_NETWORK,$(@D)/.config)) + $(if $(BR2_PACKAGE_IPTABLES), + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_XTABLES,$(@D)/.config)) + $(if $(BR2_PACKAGE_XTABLES_ADDONS), + $(call KCONFIG_ENABLE_OPT,CONFIG_NETFILTER_ADVANCED,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NF_CONNTRACK_MARK,$(@D)/.config)) + $(if $(BR2_PACKAGE_WIREGUARD), + $(call KCONFIG_ENABLE_OPT,CONFIG_INET,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_NET_FOU,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_CRYPTO_MANAGER,$(@D)/.config)) + $(if $(BR2_LINUX_KERNEL_APPENDED_DTB), + $(call KCONFIG_ENABLE_OPT,CONFIG_ARM_APPENDED_DTB,$(@D)/.config)) + $(if $(BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV), + $(call KCONFIG_DISABLE_OPT,CONFIG_MXC_GPU_VIV,$(@D)/.config)) +endef + +ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT),y) +ifeq ($(BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT),) +define LINUX_BUILD_DTB + $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(KERNEL_DTBS) +endef +ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),) +define LINUX_INSTALL_DTB + # dtbs moved from arch//boot to arch//boot/dts since 3.8-rc1 + cp $(addprefix \ + $(KERNEL_ARCH_PATH)/boot/$(if $(wildcard \ + $(addprefix $(KERNEL_ARCH_PATH)/boot/dts/,$(KERNEL_DTBS))),dts/),$(KERNEL_DTBS)) \ + $(1) +endef +endif # BR2_LINUX_KERNEL_APPENDED_DTB +endif # BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT +endif # BR2_LINUX_KERNEL_DTS_SUPPORT + +ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y) +# dtbs moved from arch/$ARCH/boot to arch/$ARCH/boot/dts since 3.8-rc1 +define LINUX_APPEND_DTB + (cd $(KERNEL_ARCH_PATH)/boot; \ + for dtb in $(KERNEL_DTS_NAME); do \ + if test -e $${dtb}.dtb ; then \ + dtbpath=$${dtb}.dtb ; \ + else \ + dtbpath=dts/$${dtb}.dtb ; \ + fi ; \ + cat zImage $${dtbpath} > zImage.$${dtb} || exit 1; \ + done) +endef +ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y) +# We need to generate a new u-boot image that takes into +# account the extra-size added by the device tree at the end +# of the image. To do so, we first need to retrieve both load +# address and entry point for the kernel from the already +# generate uboot image before using mkimage -l. +LINUX_APPEND_DTB += ; \ + MKIMAGE_ARGS=`$(MKIMAGE) -l $(LINUX_IMAGE_PATH) |\ + sed -n -e 's/Image Name:[ ]*\(.*\)/-n \1/p' -e 's/Load Address:/-a/p' -e 's/Entry Point:/-e/p'`; \ + for dtb in $(KERNEL_DTS_NAME); do \ + $(MKIMAGE) -A $(MKIMAGE_ARCH) -O linux \ + -T kernel -C none $${MKIMAGE_ARGS} \ + -d $(KERNEL_ARCH_PATH)/boot/zImage.$${dtb} $(LINUX_IMAGE_PATH).$${dtb}; \ + done +endif +endif + +# Compilation. We make sure the kernel gets rebuilt when the +# configuration has changed. +define LINUX_BUILD_CMDS + @for dts in $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)); do \ + cp -f $${dts} $(KERNEL_ARCH_PATH)/boot/dts/ ; \ + done + $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME) + @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \ + $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) modules ; \ + fi + $(LINUX_BUILD_DTB) + $(LINUX_APPEND_DTB) +endef + +ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y) +# When a DTB was appended, install the potential several images with +# appended DTBs. +define LINUX_INSTALL_IMAGE + mkdir -p $(1) + cp $(KERNEL_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME).* $(1) +endef +else +# Otherwise, just install the unique image generated by the kernel +# build process. +define LINUX_INSTALL_IMAGE + $(INSTALL) -m 0644 -D $(LINUX_IMAGE_PATH) $(1)/$(LINUX_IMAGE_NAME) +endef +endif + +ifeq ($(BR2_LINUX_KERNEL_INSTALL_TARGET),y) +define LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET + $(call LINUX_INSTALL_IMAGE,$(TARGET_DIR)/boot) + $(call LINUX_INSTALL_DTB,$(TARGET_DIR)/boot) +endef +endif + +define LINUX_INSTALL_HOST_TOOLS + # Installing dtc (device tree compiler) as host tool, if selected + if grep -q "CONFIG_DTC=y" $(@D)/.config; then \ + $(INSTALL) -D -m 0755 $(@D)/scripts/dtc/dtc $(HOST_DIR)/bin/linux-dtc ; \ + if [ ! -e $(HOST_DIR)/bin/dtc ]; then \ + ln -sf linux-dtc $(HOST_DIR)/bin/dtc ; \ + fi \ + fi +endef + + +define LINUX_INSTALL_IMAGES_CMDS + $(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR)) + $(call LINUX_INSTALL_DTB,$(BINARIES_DIR)) +endef + +ifeq ($(BR2_STRIP_strip),y) +LINUX_MAKE_FLAGS += INSTALL_MOD_STRIP=1 +endif + +define LINUX_INSTALL_TARGET_CMDS + $(LINUX_INSTALL_KERNEL_IMAGE_TO_TARGET) + # Install modules and remove symbolic links pointing to build + # directories, not relevant on the target + @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \ + $(LINUX_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) modules_install; \ + rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/build ; \ + rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/source ; \ + fi + $(LINUX_INSTALL_HOST_TOOLS) +endef + +# Include all our extensions. +# +# Note: our package infrastructure uses the full-path of the last-scanned +# Makefile to determine what package we're currently defining, using the +# last directory component in the path. As such, including other Makefile, +# like below, before we call one of the *-package macro is usally not +# working. +# However, since the files we include here are in the same directory as +# the current Makefile, we are OK. But this is a hard requirement: files +# included here *must* be in the same directory! +include $(sort $(wildcard linux/linux-ext-*.mk)) + +LINUX_PATCH_DEPENDENCIES += $(foreach ext,$(LINUX_EXTENSIONS),\ + $(if $(BR2_LINUX_KERNEL_EXT_$(call UPPERCASE,$(ext))),$(ext))) + +LINUX_PRE_PATCH_HOOKS += $(foreach ext,$(LINUX_EXTENSIONS),\ + $(if $(BR2_LINUX_KERNEL_EXT_$(call UPPERCASE,$(ext))),\ + $(call UPPERCASE,$(ext))_PREPARE_KERNEL)) + +# Checks to give errors that the user can understand + +# When a custom repository has been set, check for the repository version +ifeq ($(BR2_LINUX_KERNEL_CUSTOM_SVN)$(BR2_LINUX_KERNEL_CUSTOM_GIT)$(BR2_LINUX_KERNEL_CUSTOM_HG),y) +ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION)),) +$(error No custom repository version set. Check your BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION setting) +endif +ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL)),) +$(error No custom repo URL set. Check your BR2_LINUX_KERNEL_CUSTOM_REPO_URL setting) +endif +endif + +ifeq ($(BR_BUILDING),y) + +ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y) +# We must use the user-supplied kconfig value, because +# LINUX_KCONFIG_DEFCONFIG will at least contain the +# trailing _defconfig +ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG)),) +$(error No kernel defconfig name specified, check your BR2_LINUX_KERNEL_DEFCONFIG setting) +endif +endif + +ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y) +ifeq ($(LINUX_KCONFIG_FILE),) +$(error No kernel configuration file specified, check your BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE setting) +endif +endif + +ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT):$(strip $(KERNEL_DTS_NAME)),y:) +$(error No kernel device tree source specified, check your \ +BR2_LINUX_KERNEL_INTREE_DTS_NAME / BR2_LINUX_KERNEL_CUSTOM_DTS_PATH settings) +endif + +endif # BR_BUILDING + +$(eval $(kconfig-package)) + +# Support for rebuilding the kernel after the cpio archive has +# been generated. +.PHONY: linux-rebuild-with-initramfs +linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_target_installed +linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_images_installed +linux-rebuild-with-initramfs: rootfs-cpio +linux-rebuild-with-initramfs: + @$(call MESSAGE,"Rebuilding kernel with initramfs") + # Build the kernel. + $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) $(LINUX_TARGET_NAME) + $(LINUX_APPEND_DTB) + # Copy the kernel image(s) to its(their) final destination + $(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR)) + # If there is a .ub file copy it to the final destination + test ! -f $(LINUX_IMAGE_PATH).ub || cp $(LINUX_IMAGE_PATH).ub $(BINARIES_DIR) diff --git a/buildroot/package/4th/0001-avoid-regen-during-install.patch b/buildroot/package/4th/0001-avoid-regen-during-install.patch new file mode 100644 index 0000000..436cff1 --- /dev/null +++ b/buildroot/package/4th/0001-avoid-regen-during-install.patch @@ -0,0 +1,17 @@ +avoid regen during install + +Signed-off-by: Francois Perrad + +--- a/sources/Makefile ++++ b/sources/Makefile +@@ -120,7 +120,7 @@ + ln -sf $(SHARED_LIB) $(LIBRARIES)/lib4th.so + endif + +-mostlyinstall: libinstall all ++mostlyinstall: libinstall + cp 4th 4tsh pp4th $(BINARIES) + + install: mostlyinstall +-- + diff --git a/buildroot/package/4th/4th.hash b/buildroot/package/4th/4th.hash new file mode 100644 index 0000000..97083da --- /dev/null +++ b/buildroot/package/4th/4th.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 1c7adbb1a56dad4c4c781e6e023d77ac862842560c05246b691d07e9a4460ab2 4th-3.62.4-unix.tar.gz diff --git a/buildroot/package/4th/4th.mk b/buildroot/package/4th/4th.mk new file mode 100644 index 0000000..f272e02 --- /dev/null +++ b/buildroot/package/4th/4th.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# 4th +# +################################################################################ + +4TH_VERSION = 3.62.4 +4TH_SOURCE = 4th-$(4TH_VERSION)-unix.tar.gz +4TH_SITE = http://downloads.sourceforge.net/project/forth-4th/4th-$(4TH_VERSION) +4TH_LICENSE = GPL-3.0+, LGPL-3.0+ +# The COPYING file only contains the text of the LGPL-3.0, but the +# source code really contains parts under GPL-3.0+. +4TH_LICENSE_FILES = COPYING +4TH_DEPENDENCIES = host-4th +4TH_INSTALL_STAGING = YES + +4TH_CFLAGS = $(TARGET_CFLAGS) -DUNIX -fsigned-char + +ifeq ($(BR2_STATIC_LIBS),y) +4TH_MAKE_ENV = $(TARGET_MAKE_ENV) STATIC=1 +else +4TH_MAKE_ENV = $(TARGET_MAKE_ENV) SHARED=1 +4TH_CFLAGS += -fPIC +endif + +define 4TH_BUILD_CMDS + $(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources all \ + CROSS="$(TARGET_CROSS)" \ + CFLAGS="$(4TH_CFLAGS)" \ + FOURTH=$(HOST_DIR)/bin/4th +endef + +define 4TH_INSTALL_STAGING_CMDS + $(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources libinstall \ + LIBRARIES=$(STAGING_DIR)/usr/lib + $(INSTALL) -D -m 0644 $(@D)/sources/4th.h \ + $(STAGING_DIR)/usr/include/4th.h +endef + +define 4TH_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/bin + mkdir -p $(TARGET_DIR)/usr/lib + $(4TH_MAKE_ENV) $(MAKE) -C $(@D)/sources mostlyinstall \ + BINARIES=$(TARGET_DIR)/usr/bin \ + LIBRARIES=$(TARGET_DIR)/usr/lib + mkdir -p $(TARGET_DIR)/usr/share/4th/lib + cp -dpf $(@D)/4th/*.4th $(TARGET_DIR)/usr/share/4th + cp -dpf $(@D)/4th/lib/*.4th $(TARGET_DIR)/usr/share/4th/lib + mkdir -p $(TARGET_DIR)/usr/share/4th/demo + cp -dpf $(@D)/4th/demo/*.4th $(TARGET_DIR)/usr/share/4th/demo + mkdir -p $(TARGET_DIR)/usr/share/4th/4pp/lib + cp -dpf $(@D)/4th/4pp/*.4pp $(TARGET_DIR)/usr/share/4th/4pp + cp -dpf $(@D)/4th/4pp/lib/*.4pp $(TARGET_DIR)/usr/share/4th/4pp/lib +endef + +define HOST_4TH_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sources all \ + CFLAGS="$(HOST_CFLAGS) -DUNIX -fsigned-char" +endef + +define HOST_4TH_INSTALL_CMDS + mkdir -p $(HOST_DIR)/bin + mkdir -p $(HOST_DIR)/lib + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sources mostlyinstall \ + BINARIES=$(HOST_DIR)/bin \ + LIBRARIES=$(HOST_DIR)/lib +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/4th/Config.in b/buildroot/package/4th/Config.in new file mode 100644 index 0000000..4554664 --- /dev/null +++ b/buildroot/package/4th/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_4TH + bool "4th" + help + 4tH is a Forth compiler that can create bytecode, + C-embeddable bytecode, standalone executables, but also + works fine as a scripting language + + http://thebeez.home.xs4all.nl/4tH/ diff --git a/buildroot/package/Config.in b/buildroot/package/Config.in new file mode 100644 index 0000000..55bb235 --- /dev/null +++ b/buildroot/package/Config.in @@ -0,0 +1,2021 @@ +menu "Target packages" + + source "package/busybox/Config.in" + source "package/skeleton/Config.in" + source "package/skeleton-custom/Config.in" + source "package/skeleton-init-common/Config.in" + source "package/skeleton-init-none/Config.in" + source "package/skeleton-init-systemd/Config.in" + source "package/skeleton-init-sysv/Config.in" + +menu "Audio and video applications" + source "package/alsa-utils/Config.in" + source "package/atest/Config.in" + source "package/aumix/Config.in" + source "package/bellagio/Config.in" + source "package/dvblast/Config.in" + source "package/dvdauthor/Config.in" + source "package/dvdrw-tools/Config.in" + source "package/espeak/Config.in" + source "package/faad2/Config.in" + source "package/ffmpeg/Config.in" + source "package/flac/Config.in" + source "package/flite/Config.in" + source "package/gmrender-resurrect/Config.in" + source "package/gstreamer/Config.in" + source "package/gstreamer1/Config.in" + source "package/jack2/Config.in" + source "package/kodi/Config.in" + source "package/lame/Config.in" + source "package/madplay/Config.in" + source "package/mimic/Config.in" + source "package/miraclecast/Config.in" + source "package/mjpegtools/Config.in" + source "package/modplugtools/Config.in" + source "package/motion/Config.in" + source "package/mpd/Config.in" + source "package/mpd-mpc/Config.in" + source "package/mpg123/Config.in" + source "package/mplayer/Config.in" + source "package/mpv/Config.in" + source "package/multicat/Config.in" + source "package/musepack/Config.in" + source "package/ncmpc/Config.in" + source "package/omxplayer/Config.in" + source "package/on2-8170-libs/Config.in" + source "package/opus-tools/Config.in" + source "package/pulseaudio/Config.in" + source "package/sox/Config.in" + source "package/squeezelite/Config.in" + source "package/tidsp-binaries/Config.in" + source "package/tovid/Config.in" + source "package/tstools/Config.in" + source "package/twolame/Config.in" + source "package/udpxy/Config.in" + source "package/upmpdcli/Config.in" + source "package/v4l2grab/Config.in" + source "package/v4l2loopback/Config.in" + source "package/vlc/Config.in" + source "package/vorbis-tools/Config.in" + source "package/wavpack/Config.in" + source "package/yavta/Config.in" + source "package/ympd/Config.in" +endmenu + +menu "Compressors and decompressors" + source "package/bzip2/Config.in" + source "package/gzip/Config.in" + source "package/lz4/Config.in" + source "package/lzip/Config.in" + source "package/lzop/Config.in" + source "package/p7zip/Config.in" + source "package/pixz/Config.in" + source "package/unrar/Config.in" + source "package/unzip/Config.in" + source "package/xz/Config.in" + source "package/zip/Config.in" + source "package/zstd/Config.in" +endmenu + +menu "Debugging, profiling and benchmark" + source "package/blktrace/Config.in" + source "package/bonnie/Config.in" + source "package/cache-calibrator/Config.in" + source "package/dhrystone/Config.in" + source "package/dieharder/Config.in" + source "package/dmalloc/Config.in" + source "package/dropwatch/Config.in" + source "package/dstat/Config.in" + source "package/dt/Config.in" + source "package/duma/Config.in" + source "package/fio/Config.in" + source "package/fwts/Config.in" + source "package/gdb/Config.in" + source "package/google-breakpad/Config.in" + source "package/iozone/Config.in" + source "package/kexec/Config.in" + source "package/kexec-lite/Config.in" + source "package/ktap/Config.in" + source "package/kvm-unit-tests/Config.in" + source "package/kyua/Config.in" + source "package/latencytop/Config.in" + source "package/lmbench/Config.in" + source "package/lsof/Config.in" + source "package/ltp-testsuite/Config.in" + source "package/ltrace/Config.in" + source "package/lttng-babeltrace/Config.in" + source "package/lttng-modules/Config.in" + source "package/lttng-tools/Config.in" + source "package/mcelog/Config.in" + source "package/memstat/Config.in" + source "package/netperf/Config.in" + source "package/netsniff-ng/Config.in" + source "package/nmon/Config.in" + source "package/oprofile/Config.in" + source "package/pax-utils/Config.in" + source "package/pv/Config.in" + source "package/racehound/Config.in" + source "package/ramsmp/Config.in" + source "package/ramspeed/Config.in" + source "package/rt-tests/Config.in" + source "package/spidev_test/Config.in" + source "package/strace/Config.in" + source "package/stress/Config.in" + source "package/stress-ng/Config.in" + source "package/sysdig/Config.in" + source "package/sysprof/Config.in" + source "package/tcf-agent/Config.in" + source "package/tinymembench/Config.in" + source "package/trace-cmd/Config.in" + source "package/trinity/Config.in" + source "package/uclibc-ng-test/Config.in" + source "package/valgrind/Config.in" + source "package/whetstone/Config.in" +endmenu + +menu "Development tools" + source "package/binutils/Config.in" + source "package/bsdiff/Config.in" + source "package/bustle/Config.in" + source "package/check/Config.in" + source "package/cmake/Config.in" + source "package/cppunit/Config.in" + source "package/cvs/Config.in" + source "package/cxxtest/Config.in" + source "package/diffutils/Config.in" + source "package/dos2unix/Config.in" + source "package/findutils/Config.in" + source "package/flex/Config.in" + source "package/gawk/Config.in" + source "package/gettext/Config.in" + source "package/git/Config.in" + source "package/git-crypt/Config.in" + source "package/gperf/Config.in" + source "package/grep/Config.in" + source "package/jo/Config.in" + source "package/jq/Config.in" + source "package/libtool/Config.in" + source "package/make/Config.in" + source "package/patch/Config.in" + source "package/pkgconf/Config.in" + source "package/sed/Config.in" + source "package/subversion/Config.in" + source "package/tree/Config.in" + source "package/yasm/Config.in" +endmenu + +menu "Filesystem and flash utilities" + source "package/aufs/Config.in" + source "package/aufs-util/Config.in" + source "package/autofs/Config.in" + source "package/btrfs-progs/Config.in" + source "package/cifs-utils/Config.in" + source "package/cpio/Config.in" + source "package/cramfs/Config.in" + source "package/curlftpfs/Config.in" + source "package/dosfstools/Config.in" + source "package/e2fsprogs/Config.in" + source "package/e2tools/Config.in" + source "package/ecryptfs-utils/Config.in" + source "package/exfat/Config.in" + source "package/exfat-utils/Config.in" + source "package/f2fs-tools/Config.in" + source "package/flashbench/Config.in" + source "package/fscryptctl/Config.in" + source "package/fwup/Config.in" + source "package/genext2fs/Config.in" + source "package/genpart/Config.in" + source "package/genromfs/Config.in" + source "package/mmc-utils/Config.in" + source "package/mtd/Config.in" + source "package/mtools/Config.in" + source "package/nfs-utils/Config.in" + source "package/nilfs-utils/Config.in" + source "package/ntfs-3g/Config.in" + source "package/sp-oops-extract/Config.in" + source "package/squashfs/Config.in" + source "package/sshfs/Config.in" + source "package/sunxi-tools/Config.in" + source "package/unionfs/Config.in" + source "package/xfsprogs/Config.in" +endmenu + +menu "Fonts, cursors, icons, sounds and themes" + +comment "Cursors" + source "package/comix-cursors/Config.in" + source "package/obsidian-cursors/Config.in" + +comment "Fonts" + source "package/bitstream-vera/Config.in" + source "package/cantarell/Config.in" + source "package/dejavu/Config.in" + source "package/font-awesome/Config.in" + source "package/ghostscript-fonts/Config.in" + source "package/inconsolata/Config.in" + source "package/liberation/Config.in" + +comment "Icons" + source "package/adwaita-icon-theme/Config.in" + source "package/google-material-design-icons/Config.in" + source "package/hicolor-icon-theme/Config.in" + +comment "Sounds" + source "package/sound-theme-borealis/Config.in" + source "package/sound-theme-freedesktop/Config.in" + +comment "Themes" + source "package/gtk2-engines/Config.in" + +endmenu + +menu "Games" + source "package/chocolate-doom/Config.in" + source "package/doom-wad/Config.in" + source "package/gnuchess/Config.in" + source "package/lbreakout2/Config.in" + source "package/ltris/Config.in" + source "package/lugaru/Config.in" + source "package/minetest/Config.in" + source "package/minetest-game/Config.in" + source "package/opentyrian/Config.in" + source "package/opentyrian-data/Config.in" + source "package/prboom/Config.in" + source "package/rubix/Config.in" + source "package/sl/Config.in" + source "package/solarus/Config.in" + source "package/stella/Config.in" + source "package/supertux/Config.in" + source "package/supertuxkart/Config.in" +endmenu + +menu "Graphic libraries and applications (graphic/text)" + +comment "Graphic applications" + source "package/expedite/Config.in" + source "package/fswebcam/Config.in" + source "package/ghostscript/Config.in" + source "package/glmark2/Config.in" + source "package/gnuplot/Config.in" + source "package/jhead/Config.in" + source "package/kmscube/Config.in" + source "package/libva-utils/Config.in" + source "package/mesa3d-demos/Config.in" + source "package/pngquant/Config.in" + source "package/qt5cinex/Config.in" + source "package/rrdtool/Config.in" + source "package/tesseract-ocr/Config.in" + +comment "Graphic libraries" + source "package/cegui06/Config.in" + source "package/directfb/Config.in" + source "package/directfb-examples/Config.in" + source "package/efl/Config.in" + source "package/fbdump/Config.in" + source "package/fbgrab/Config.in" + source "package/fbset/Config.in" + source "package/fb-test-app/Config.in" + source "package/fbterm/Config.in" + source "package/fbv/Config.in" + source "package/freerdp/Config.in" + source "package/imagemagick/Config.in" + source "package/linux-fusion/Config.in" + source "package/lite/Config.in" + source "package/mesa3d/Config.in" + source "package/mesa3d-headers/Config.in" + source "package/ocrad/Config.in" + source "package/psplash/Config.in" + source "package/sdl/Config.in" + source "package/sdl_gfx/Config.in" + source "package/sdl_image/Config.in" + source "package/sdl_mixer/Config.in" + source "package/sdl_net/Config.in" + source "package/sdl_sound/Config.in" + source "package/sdl_ttf/Config.in" + source "package/sdl2/Config.in" + source "package/sdl2_gfx/Config.in" + source "package/sdl2_image/Config.in" + source "package/sdl2_mixer/Config.in" + source "package/sdl2_net/Config.in" + source "package/sdl2_ttf/Config.in" + +comment "Other GUIs" + source "package/qt/Config.in" + source "package/qt5/Config.in" +if BR2_PACKAGE_QT || BR2_PACKAGE_QT5 +comment "QT libraries and helper libraries" + source "package/grantlee/Config.in" + source "package/qextserialport/Config.in" + source "package/qjson/Config.in" + source "package/qtuio/Config.in" + source "package/quazip/Config.in" + source "package/qwt/Config.in" +endif + source "package/tekui/Config.in" + source "package/weston/Config.in" + source "package/x11r7/Config.in" + +comment "X applications" + depends on BR2_PACKAGE_XORG7 + + source "package/alsamixergui/Config.in" + source "package/apitrace/Config.in" + source "package/dillo/Config.in" + source "package/docker/Config.in" + source "package/feh/Config.in" + source "package/gmpc/Config.in" + source "package/gqview/Config.in" + source "package/gtkperf/Config.in" + source "package/leafpad/Config.in" + source "package/midori/Config.in" + source "package/nodm/Config.in" + source "package/pcmanfm/Config.in" + source "package/qt-webkit-kiosk/Config.in" + source "package/rdesktop/Config.in" + source "package/synergy/Config.in" + source "package/wmctrl/Config.in" + source "package/x11vnc/Config.in" + source "package/xdotool/Config.in" + source "package/xscreensaver/Config.in" + source "package/xterm/Config.in" + source "package/xvkbd/Config.in" + source "package/yad/Config.in" + +comment "X libraries and helper libraries" + depends on BR2_PACKAGE_XORG7 + + source "package/libsexy/Config.in" + source "package/x11r7/xkeyboard-config/Config.in" + +comment "X window managers" + depends on BR2_PACKAGE_XORG7 + + source "package/enlightenment/Config.in" + source "package/fluxbox/Config.in" + source "package/matchbox/Config.in" + source "package/metacity/Config.in" + source "package/openbox/Config.in" + source "package/ratpoison/Config.in" +endmenu + +menu "Hardware handling" +menu "Firmware" + source "package/am33x-cm3/Config.in" + source "package/armbian-firmware/Config.in" + source "package/b43-firmware/Config.in" + source "package/linux-firmware/Config.in" + source "package/rpi-bt-firmware/Config.in" + source "package/rpi-firmware/Config.in" + source "package/rpi-wifi-firmware/Config.in" + source "package/sunxi-boards/Config.in" + source "package/ts4900-fpga/Config.in" + source "package/ux500-firmware/Config.in" + source "package/wilc1000-firmware/Config.in" + source "package/wilink-bt-firmware/Config.in" + source "package/zd1211-firmware/Config.in" +endmenu + source "package/a10disp/Config.in" + source "package/acpica/Config.in" + source "package/acpid/Config.in" + source "package/acpitool/Config.in" + source "package/aer-inject/Config.in" + source "package/am335x-pru-package/Config.in" + source "package/amd-catalyst/Config.in" + source "package/avrdude/Config.in" + source "package/bcache-tools/Config.in" + source "package/biosdevname/Config.in" + source "package/brltty/Config.in" + source "package/cbootimage/Config.in" + source "package/cc-tool/Config.in" + source "package/cdrkit/Config.in" + source "package/cryptsetup/Config.in" + source "package/cwiid/Config.in" + source "package/dahdi-linux/Config.in" + source "package/dahdi-tools/Config.in" + source "package/dbus/Config.in" + source "package/dbus-cpp/Config.in" + source "package/dbus-glib/Config.in" + source "package/dbus-python/Config.in" + source "package/dbus-triggerd/Config.in" + source "package/devmem2/Config.in" + source "package/dfu-util/Config.in" + source "package/dmidecode/Config.in" + source "package/dmraid/Config.in" + source "package/dt-utils/Config.in" + source "package/dtv-scan-tables/Config.in" + source "package/dump1090/Config.in" + source "package/dvb-apps/Config.in" + source "package/dvbsnoop/Config.in" + source "package/edid-decode/Config.in" + source "package/eudev/Config.in" + source "package/ev3dev-linux-drivers/Config.in" + source "package/evemu/Config.in" + source "package/evtest/Config.in" + source "package/fan-ctrl/Config.in" + source "package/fbtft/Config.in" + source "package/fconfig/Config.in" + source "package/fis/Config.in" + source "package/flashrom/Config.in" + source "package/fmtools/Config.in" + source "package/freescale-imx/Config.in" + source "package/fxload/Config.in" + source "package/gadgetfs-test/Config.in" + source "package/gpm/Config.in" + source "package/gpsd/Config.in" + source "package/gptfdisk/Config.in" + source "package/gvfs/Config.in" + source "package/hdparm/Config.in" + source "package/hwdata/Config.in" + source "package/hwloc/Config.in" + source "package/i2c-tools/Config.in" + source "package/i7z/Config.in" + source "package/input-event-daemon/Config.in" + source "package/intel-microcode/Config.in" + source "package/iostat/Config.in" + source "package/ipmitool/Config.in" + source "package/ipmiutil/Config.in" + source "package/iqvlinux/Config.in" + source "package/irda-utils/Config.in" + source "package/iucode-tool/Config.in" + source "package/kbd/Config.in" + source "package/lcdproc/Config.in" + source "package/libuio/Config.in" + source "package/libump/Config.in" + source "package/linuxconsoletools/Config.in" + source "package/linux-backports/Config.in" + source "package/lirc-tools/Config.in" + source "package/lm-sensors/Config.in" + source "package/lshw/Config.in" + source "package/lsscsi/Config.in" + source "package/lsuio/Config.in" + source "package/luksmeta/Config.in" + source "package/lvm2/Config.in" + source "package/mali-t76x/Config.in" + source "package/mdadm/Config.in" + source "package/memtest86/Config.in" + source "package/memtester/Config.in" + source "package/memtool/Config.in" + source "package/minicom/Config.in" + source "package/msr-tools/Config.in" + source "package/nanocom/Config.in" + source "package/neard/Config.in" + source "package/nvidia-driver/Config.in" + source "package/nvidia-tegra23/Config.in" + source "package/nvme/Config.in" + source "package/odroid-mali/Config.in" + source "package/odroid-scripts/Config.in" + source "package/ofono/Config.in" + source "package/on2-8170-modules/Config.in" + source "package/open2300/Config.in" + source "package/openipmi/Config.in" + source "package/openocd/Config.in" + source "package/openpowerlink/Config.in" + source "package/owl-linux/Config.in" + source "package/parted/Config.in" + source "package/pciutils/Config.in" + source "package/pdbg/Config.in" + source "package/picocom/Config.in" + source "package/pifmrds/Config.in" + source "package/powertop/Config.in" + source "package/pps-tools/Config.in" + source "package/pru-software-support/Config.in" + source "package/pulseview/Config.in" + source "package/read-edid/Config.in" + source "package/rng-tools/Config.in" + source "package/rpi-userland/Config.in" + source "package/rs485conf/Config.in" + source "package/rtl8188eu/Config.in" + source "package/rtl8723bs/Config.in" + source "package/rtl8723bu/Config.in" + source "package/rtl8821au/Config.in" + source "package/rtl8189fs/Config.in" + source "package/sane-backends/Config.in" + source "package/sdparm/Config.in" + source "package/setserial/Config.in" + source "package/sg3_utils/Config.in" + source "package/sigrok-cli/Config.in" + source "package/sispmctl/Config.in" + source "package/smartmontools/Config.in" + source "package/smstools3/Config.in" + source "package/spi-tools/Config.in" + source "package/sredird/Config.in" + source "package/statserial/Config.in" + source "package/stm32flash/Config.in" + source "package/sunxi-cedarx/Config.in" + source "package/sunxi-mali/Config.in" + source "package/sysstat/Config.in" + source "package/targetcli-fb/Config.in" + source "package/ti-gfx/Config.in" + source "package/ti-sgx-demos/Config.in" + source "package/ti-sgx-km/Config.in" + source "package/ti-sgx-um/Config.in" + source "package/ti-uim/Config.in" + source "package/ti-utils/Config.in" + source "package/triggerhappy/Config.in" + source "package/uboot-tools/Config.in" + source "package/ubus/Config.in" + source "package/uccp420wlan/Config.in" + source "package/udev/Config.in" + source "package/udisks/Config.in" + source "package/uhubctl/Config.in" + source "package/upower/Config.in" + source "package/usb_modeswitch/Config.in" + source "package/usb_modeswitch_data/Config.in" + source "package/usbmount/Config.in" + source "package/usbutils/Config.in" + source "package/w_scan/Config.in" + source "package/wf111/Config.in" + source "package/wipe/Config.in" + source "package/xorriso/Config.in" + source "package/xr819-xradio/Config.in" +endmenu + +menu "Interpreter languages and scripting" + source "package/4th/Config.in" + source "package/enscript/Config.in" + source "package/erlang/Config.in" +if BR2_PACKAGE_ERLANG +menu "Erlang libraries/modules" + source "package/erlang-goldrush/Config.in" + source "package/erlang-jiffy/Config.in" + source "package/erlang-lager/Config.in" + source "package/erlang-p1-cache-tab/Config.in" + source "package/erlang-p1-iconv/Config.in" + source "package/erlang-p1-oauth2/Config.in" + source "package/erlang-p1-sip/Config.in" + source "package/erlang-p1-stringprep/Config.in" + source "package/erlang-p1-stun/Config.in" + source "package/erlang-p1-tls/Config.in" + source "package/erlang-p1-utils/Config.in" + source "package/erlang-p1-xml/Config.in" + source "package/erlang-p1-xmpp/Config.in" + source "package/erlang-p1-yaml/Config.in" + source "package/erlang-p1-zlib/Config.in" +endmenu +endif + source "package/execline/Config.in" + source "package/ficl/Config.in" + source "package/gauche/Config.in" + source "package/guile/Config.in" + source "package/haserl/Config.in" + source "package/jamvm/Config.in" + source "package/jimtcl/Config.in" + source "package/lua/Config.in" + source "package/luainterpreter/Config.in" + source "package/luajit/Config.in" +if BR2_PACKAGE_HAS_LUAINTERPRETER && !BR2_STATIC_LIBS +# lua modules are dynamically loaded, so not available on static builds +menu "Lua libraries/modules" +# When adding lua packages, make sure the name start with "lua". If the +# upstream package is "luafoo", call it "luafoo" in Buildroot; if the upstream +# package is "foo", call it "lua-foo". Many packages currently don't follow +# this convention, but that's historical accident. + source "package/argparse/Config.in" + source "package/cgilua/Config.in" + source "package/copas/Config.in" + source "package/coxpcall/Config.in" + source "package/dado/Config.in" + source "package/easydbus/Config.in" + source "package/lbase64/Config.in" + source "package/ljlinenoise/Config.in" + source "package/ljsyscall/Config.in" + source "package/lpeg/Config.in" + source "package/lpty/Config.in" + source "package/lrandom/Config.in" + source "package/lsqlite3/Config.in" + source "package/lua-basexx/Config.in" + source "package/lua-bit32/Config.in" + source "package/lua-cjson/Config.in" + source "package/lua-coat/Config.in" + source "package/lua-coatpersistent/Config.in" + source "package/lua-compat53/Config.in" + source "package/lua-cqueues/Config.in" + source "package/lua-csnappy/Config.in" + source "package/lua-curl/Config.in" + source "package/lua-datafile/Config.in" + source "package/lua-ev/Config.in" + source "package/lua-fifo/Config.in" + source "package/lua-flu/Config.in" + source "package/lua-http/Config.in" + source "package/lua-iconv/Config.in" + source "package/lua-lpeg-patterns/Config.in" + source "package/lua-markdown/Config.in" + source "package/lua-messagepack/Config.in" + source "package/lua-msgpack-native/Config.in" + source "package/lua-periphery/Config.in" + source "package/lua-sdl2/Config.in" + source "package/lua-stdlib/Config.in" + source "package/lua-testmore/Config.in" + source "package/lua-utf8/Config.in" + source "package/luabitop/Config.in" + source "package/luacrypto/Config.in" + source "package/luadbi/Config.in" + source "package/luadbi-sqlite3/Config.in" + source "package/luaexpat/Config.in" + source "package/luaexpatutils/Config.in" + source "package/luafilesystem/Config.in" + source "package/luajson/Config.in" + source "package/lualogging/Config.in" + source "package/luaossl/Config.in" + source "package/luaposix/Config.in" + source "package/lua-resty-http/Config.in" + source "package/lua-sailor/Config.in" + source "package/luasec/Config.in" + source "package/luasocket/Config.in" + source "package/luasql-sqlite3/Config.in" + source "package/lua-valua/Config.in" + source "package/lunit/Config.in" + source "package/lutok/Config.in" + source "package/luv/Config.in" + source "package/luvi/Config.in" + source "package/lzlib/Config.in" + source "package/orbit/Config.in" + source "package/rings/Config.in" + source "package/turbolua/Config.in" + source "package/wsapi/Config.in" + source "package/wsapi-fcgi/Config.in" + source "package/wsapi-xavante/Config.in" + source "package/xavante/Config.in" +endmenu +endif + source "package/micropython/Config.in" + source "package/micropython-lib/Config.in" + source "package/moarvm/Config.in" + source "package/mono/Config.in" +if BR2_PACKAGE_MONO +menu "Mono libraries/modules" + source "package/mono-gtksharp3/Config.in" +endmenu +endif + source "package/nodejs/Config.in" + source "package/perl/Config.in" +if BR2_PACKAGE_PERL +menu "Perl libraries/modules" + source "package/perl-crypt-openssl-random/Config.in" + source "package/perl-crypt-openssl-rsa/Config.in" + source "package/perl-datetime-tiny/Config.in" + source "package/perl-digest-hmac/Config.in" + source "package/perl-digest-sha1/Config.in" + source "package/perl-encode-detect/Config.in" + source "package/perl-encode-locale/Config.in" + source "package/perl-file-listing/Config.in" + source "package/perl-file-util/Config.in" + source "package/perl-gd/Config.in" + source "package/perl-gdgraph/Config.in" + source "package/perl-gdtextutil/Config.in" + source "package/perl-html-parser/Config.in" + source "package/perl-html-tagset/Config.in" + source "package/perl-http-cookies/Config.in" + source "package/perl-http-daemon/Config.in" + source "package/perl-http-date/Config.in" + source "package/perl-http-message/Config.in" + source "package/perl-http-negotiate/Config.in" + source "package/perl-io-html/Config.in" + source "package/perl-io-socket-ssl/Config.in" + source "package/perl-json-tiny/Config.in" + source "package/perl-libwww-perl/Config.in" + source "package/perl-lwp-mediatypes/Config.in" + source "package/perl-mail-dkim/Config.in" + source "package/perl-mailtools/Config.in" + source "package/perl-mime-base64/Config.in" + source "package/perl-mojolicious/Config.in" + source "package/perl-net-dns/Config.in" + source "package/perl-net-http/Config.in" + source "package/perl-net-ssleay/Config.in" + source "package/perl-netaddr-ip/Config.in" + source "package/perl-path-tiny/Config.in" + source "package/perl-time-hires/Config.in" + source "package/perl-timedate/Config.in" + source "package/perl-try-tiny/Config.in" + source "package/perl-uri/Config.in" + source "package/perl-www-robotrules/Config.in" + source "package/perl-xml-libxml/Config.in" + source "package/perl-xml-namespacesupport/Config.in" + source "package/perl-xml-sax/Config.in" + source "package/perl-xml-sax-base/Config.in" +endmenu +endif + source "package/php/Config.in" +if BR2_PACKAGE_PHP +if !BR2_STATIC_LIBS +menu "External php extensions" + source "package/php-amqp/Config.in" + source "package/php-geoip/Config.in" + source "package/php-gnupg/Config.in" + source "package/php-imagick/Config.in" + source "package/php-memcached/Config.in" + source "package/php-ssh2/Config.in" + source "package/php-yaml/Config.in" + source "package/php-zmq/Config.in" +endmenu +endif +if BR2_STATIC_LIBS +comment "External PHP extensions need a toolchain w/ dynamic library" +endif +endif + source "package/python/Config.in" + source "package/python3/Config.in" +if BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 +menu "External python modules" + source "package/python-aiocoap/Config.in" + source "package/python-alsaaudio/Config.in" + source "package/python-argh/Config.in" + source "package/python-arrow/Config.in" + source "package/python-asn1crypto/Config.in" + source "package/python-attrs/Config.in" + source "package/python-autobahn/Config.in" + source "package/python-automat/Config.in" + source "package/python-babel/Config.in" + source "package/python-backports-abc/Config.in" + source "package/python-backports-shutil-get-terminal-size/Config.in" + source "package/python-bcrypt/Config.in" + source "package/python-beautifulsoup4/Config.in" + source "package/python-bitstring/Config.in" + source "package/python-bottle/Config.in" + source "package/python-can/Config.in" + source "package/python-cbor/Config.in" + source "package/python-certifi/Config.in" + source "package/python-cffi/Config.in" + source "package/python-characteristic/Config.in" + source "package/python-chardet/Config.in" + source "package/python-cheetah/Config.in" + source "package/python-cheroot/Config.in" + source "package/python-cherrypy/Config.in" + source "package/python-click/Config.in" + source "package/python-coherence/Config.in" + source "package/python-configobj/Config.in" + source "package/python-configshell-fb/Config.in" + source "package/python-constantly/Config.in" + source "package/python-couchdb/Config.in" + source "package/python-crc16/Config.in" + source "package/python-crcmod/Config.in" + source "package/python-crossbar/Config.in" + source "package/python-cryptography/Config.in" + source "package/python-cssselect/Config.in" + source "package/python-cssutils/Config.in" + source "package/python-daemon/Config.in" + source "package/python-dataproperty/Config.in" + source "package/python-dateutil/Config.in" + source "package/python-decorator/Config.in" + source "package/python-dialog/Config.in" + source "package/python-dialog3/Config.in" + source "package/python-dicttoxml/Config.in" + source "package/python-django/Config.in" + source "package/python-docopt/Config.in" + source "package/python-docutils/Config.in" + source "package/python-dominate/Config.in" + source "package/python-dpkt/Config.in" + source "package/python-ecdsa/Config.in" + source "package/python-engineio/Config.in" + source "package/python-enum/Config.in" + source "package/python-enum34/Config.in" + source "package/python-flask/Config.in" + source "package/python-flask-cors/Config.in" + source "package/python-flask-babel/Config.in" + source "package/python-flask-jsonrpc/Config.in" + source "package/python-flask-login/Config.in" + source "package/python-flup/Config.in" + source "package/python-functools32/Config.in" + source "package/python-futures/Config.in" + source "package/python-gobject/Config.in" + source "package/python-gunicorn/Config.in" + source "package/python-h2/Config.in" + source "package/python-hpack/Config.in" + source "package/python-html5lib/Config.in" + source "package/python-httplib2/Config.in" + source "package/python-humanize/Config.in" + source "package/python-hyperframe/Config.in" + source "package/python-hyperlink/Config.in" + source "package/python-ibmiotf/Config.in" + source "package/python-id3/Config.in" + source "package/python-idna/Config.in" + source "package/python-incremental/Config.in" + source "package/python-iniparse/Config.in" + source "package/python-iowait/Config.in" + source "package/python-ipaddr/Config.in" + source "package/python-ipaddress/Config.in" + source "package/python-ipy/Config.in" + source "package/python-ipython/Config.in" + source "package/python-ipython-genutils/Config.in" + source "package/python-iso8601/Config.in" + source "package/python-itsdangerous/Config.in" + source "package/python-jaraco-classes/Config.in" + source "package/python-jinja2/Config.in" + source "package/python-jsonschema/Config.in" + source "package/python-json-schema-validator/Config.in" + source "package/python-keyring/Config.in" + source "package/python-libconfig/Config.in" + source "package/python-lmdb/Config.in" + source "package/python-logbook/Config.in" + source "package/python-lxml/Config.in" + source "package/python-m2r/Config.in" + source "package/python-mad/Config.in" + source "package/python-mako/Config.in" + source "package/python-markdown/Config.in" + source "package/python-markdown2/Config.in" + source "package/python-markupsafe/Config.in" + source "package/python-mbstrdecoder/Config.in" + source "package/python-meld3/Config.in" + source "package/python-mistune/Config.in" + source "package/python-more-itertools/Config.in" + source "package/python-msgpack/Config.in" + source "package/python-mutagen/Config.in" + source "package/python-mwclient/Config.in" + source "package/python-mwscrape/Config.in" + source "package/python-mwscrape2slob/Config.in" + source "package/python-netaddr/Config.in" + source "package/python-netifaces/Config.in" + source "package/python-networkmanager/Config.in" + source "package/python-nfc/Config.in" + source "package/python-numpy/Config.in" + source "package/python-oauthlib/Config.in" + source "package/python-paho-mqtt/Config.in" + source "package/python-pam/Config.in" + source "package/python-paramiko/Config.in" + source "package/python-pathlib2/Config.in" + source "package/python-pathpy/Config.in" + source "package/python-pathtools/Config.in" + source "package/python-pathvalidate/Config.in" + source "package/python-pexpect/Config.in" + source "package/python-pickleshare/Config.in" + source "package/python-pillow/Config.in" + source "package/python-portend/Config.in" + source "package/python-posix-ipc/Config.in" + source "package/python-priority/Config.in" + source "package/python-prompt-toolkit/Config.in" + source "package/python-protobuf/Config.in" + source "package/python-psutil/Config.in" + source "package/python-ptyprocess/Config.in" + source "package/python-pudb/Config.in" + source "package/python-pyasn/Config.in" + source "package/python-pyasn-modules/Config.in" + source "package/python-pycli/Config.in" + source "package/python-pycparser/Config.in" + source "package/python-pycrypto/Config.in" + source "package/python-pydal/Config.in" + source "package/python-pyelftools/Config.in" + source "package/python-pyftpdlib/Config.in" + source "package/python-pygame/Config.in" + source "package/python-pygments/Config.in" + source "package/python-pyicu/Config.in" + source "package/python-pyinotify/Config.in" + source "package/python-pylibftdi/Config.in" + source "package/python-pylru/Config.in" + source "package/python-pymysql/Config.in" + source "package/python-pynacl/Config.in" + source "package/python-pyopenssl/Config.in" + source "package/python-pyparsing/Config.in" + source "package/python-pyparted/Config.in" + source "package/python-pypcap/Config.in" + source "package/python-pyqrcode/Config.in" + source "package/python-pyqt/Config.in" + source "package/python-pyqt5/Config.in" + source "package/python-pyratemp/Config.in" + source "package/python-pyro/Config.in" + source "package/python-pyroute2/Config.in" + source "package/python-pysendfile/Config.in" + source "package/python-pysmb/Config.in" + source "package/python-pysnmp/Config.in" + source "package/python-pysnmp-apps/Config.in" + source "package/python-pysnmp-mibs/Config.in" + source "package/python-pysocks/Config.in" + source "package/python-pytablereader/Config.in" + source "package/python-pytablewriter/Config.in" + source "package/python-pytrie/Config.in" + source "package/python-pytz/Config.in" + source "package/python-pyudev/Config.in" + source "package/python-pyusb/Config.in" + source "package/python-pyxb/Config.in" + source "package/python-pyyaml/Config.in" + source "package/python-pyzmq/Config.in" + source "package/python-raven/Config.in" + source "package/python-remi/Config.in" + source "package/python-requests/Config.in" + source "package/python-requests-oauthlib/Config.in" + source "package/python-requests-toolbelt/Config.in" + source "package/python-rpi-gpio/Config.in" + source "package/python-rtslib-fb/Config.in" + source "package/python-scandir/Config.in" + source "package/python-scapy3k/Config.in" + source "package/python-schedule/Config.in" + source "package/python-sdnotify/Config.in" + source "package/python-secretstorage/Config.in" + source "package/python-see/Config.in" + source "package/python-serial/Config.in" + source "package/python-service-identity/Config.in" + source "package/python-setproctitle/Config.in" + source "package/python-setuptools/Config.in" + source "package/python-sh/Config.in" + source "package/python-shutilwhich/Config.in" + source "package/python-simpleaudio/Config.in" + source "package/python-simplegeneric/Config.in" + source "package/python-simplejson/Config.in" + source "package/python-simplesqlite/Config.in" + source "package/python-singledispatch/Config.in" + source "package/python-sip/Config.in" + source "package/python-six/Config.in" + source "package/python-slob/Config.in" + source "package/python-smbus-cffi/Config.in" + source "package/python-socketio/Config.in" + source "package/python-sortedcontainers//Config.in" + source "package/python-spidev/Config.in" + source "package/python-systemd/Config.in" + source "package/python-tabledata/Config.in" + source "package/python-tempora/Config.in" + source "package/python-typepy/Config.in" + source "package/python-thrift/Config.in" + source "package/python-tomako/Config.in" + source "package/python-toml/Config.in" + source "package/python-tornado/Config.in" + source "package/python-traitlets/Config.in" + source "package/python-treq/Config.in" + source "package/python-twisted/Config.in" + source "package/python-txaio/Config.in" + source "package/python-txtorcon/Config.in" + source "package/python-u-msgpack/Config.in" + source "package/python-ubjson/Config.in" + source "package/python-ujson/Config.in" + source "package/python-urllib3/Config.in" + source "package/python-urwid/Config.in" + source "package/python-versiontools/Config.in" + source "package/python-watchdog/Config.in" + source "package/python-wcwidth/Config.in" + source "package/python-web2py/Config.in" + source "package/python-webpy/Config.in" + source "package/python-websockets/Config.in" + source "package/python-werkzeug/Config.in" + source "package/python-whoosh/Config.in" + source "package/python-ws4py/Config.in" + source "package/python-wsaccel/Config.in" + source "package/python-xlib/Config.in" + source "package/python-xlrd/Config.in" + source "package/python-xlsxwriter/Config.in" + source "package/python-xlutils/Config.in" + source "package/python-xlwt/Config.in" + source "package/python-xmltodict/Config.in" + source "package/python-zope-interface/Config.in" +endmenu +endif + source "package/ruby/Config.in" + source "package/tcl/Config.in" +if BR2_PACKAGE_TCL +menu "Tcl libraries/modules" + source "package/expect/Config.in" + source "package/tcllib/Config.in" +endmenu +endif +endmenu + +menu "Libraries" + +menu "Audio/Sound" + source "package/alsa-lib/Config.in" + source "package/aubio/Config.in" + source "package/audiofile/Config.in" + source "package/bcg729/Config.in" + source "package/celt051/Config.in" + source "package/fdk-aac/Config.in" + source "package/libao/Config.in" + source "package/libasplib/Config.in" + source "package/libbroadvoice/Config.in" + source "package/libcdaudio/Config.in" + source "package/libcddb/Config.in" + source "package/libcdio/Config.in" + source "package/libcodec2/Config.in" + source "package/libcue/Config.in" + source "package/libcuefile/Config.in" + source "package/libebur128/Config.in" + source "package/libg7221/Config.in" + source "package/libgsm/Config.in" + source "package/libid3tag/Config.in" + source "package/libilbc/Config.in" + source "package/liblo/Config.in" + source "package/libmad/Config.in" + source "package/libmodplug/Config.in" + source "package/libmpd/Config.in" + source "package/libmpdclient/Config.in" + source "package/libreplaygain/Config.in" + source "package/libsamplerate/Config.in" + source "package/libsidplay2/Config.in" + source "package/libsilk/Config.in" + source "package/libsndfile/Config.in" + source "package/libsoundtouch/Config.in" + source "package/libsoxr/Config.in" + source "package/libvorbis/Config.in" + source "package/mp4v2/Config.in" + source "package/openal/Config.in" + source "package/opencore-amr/Config.in" + source "package/opus/Config.in" + source "package/opusfile/Config.in" + source "package/portaudio/Config.in" + source "package/sbc/Config.in" + source "package/speex/Config.in" + source "package/taglib/Config.in" + source "package/tinyalsa/Config.in" + source "package/tremor/Config.in" + source "package/vo-aacenc/Config.in" + source "package/webrtc-audio-processing/Config.in" +endmenu + +menu "Compression and decompression" + source "package/libarchive/Config.in" + source "package/libsquish/Config.in" + source "package/libzip/Config.in" + source "package/lzo/Config.in" + source "package/minizip/Config.in" + source "package/snappy/Config.in" + source "package/szip/Config.in" + source "package/zlib/Config.in" +endmenu + +menu "Crypto" + source "package/beecrypt/Config.in" + source "package/botan/Config.in" + source "package/ca-certificates/Config.in" + source "package/cryptodev/Config.in" + source "package/gcr/Config.in" + source "package/gnutls/Config.in" + source "package/libassuan/Config.in" + source "package/libgcrypt/Config.in" + source "package/libgpg-error/Config.in" + source "package/libgpgme/Config.in" + source "package/libkcapi/Config.in" + source "package/libksba/Config.in" + source "package/libmcrypt/Config.in" + source "package/libmhash/Config.in" + source "package/libnss/Config.in" + source "package/libscrypt/Config.in" + source "package/libsecret/Config.in" + source "package/libsha1/Config.in" + source "package/libsodium/Config.in" + source "package/libssh/Config.in" + source "package/libssh2/Config.in" + source "package/libtomcrypt/Config.in" + source "package/libuecc/Config.in" + source "package/mbedtls/Config.in" + source "package/nettle/Config.in" + source "package/openssl/Config.in" + source "package/rhash/Config.in" + source "package/tinydtls/Config.in" + source "package/trousers/Config.in" + source "package/ustream-ssl/Config.in" + source "package/wolfssl/Config.in" +endmenu + +menu "Database" + source "package/berkeleydb/Config.in" + source "package/cppdb/Config.in" + source "package/gdbm/Config.in" + source "package/hiredis/Config.in" + source "package/kompexsqlite/Config.in" + source "package/leveldb/Config.in" + source "package/libpqxx/Config.in" + source "package/mongodb/Config.in" + source "package/mysql/Config.in" + source "package/postgresql/Config.in" + source "package/redis/Config.in" + source "package/sqlcipher/Config.in" + source "package/sqlite/Config.in" + source "package/unixodbc/Config.in" +endmenu + +menu "Filesystem" + source "package/gamin/Config.in" + source "package/libconfig/Config.in" + source "package/libconfuse/Config.in" + source "package/libfuse/Config.in" + source "package/liblockfile/Config.in" + source "package/libnfs/Config.in" + source "package/libsysfs/Config.in" + source "package/lockdev/Config.in" + source "package/physfs/Config.in" +endmenu + +menu "Graphics" + source "package/assimp/Config.in" + source "package/atk/Config.in" + source "package/atkmm/Config.in" + source "package/bullet/Config.in" + source "package/cairo/Config.in" + source "package/cairomm/Config.in" + source "package/exiv2/Config.in" + source "package/fltk/Config.in" + source "package/fontconfig/Config.in" + source "package/freetype/Config.in" + source "package/gd/Config.in" + source "package/gdk-pixbuf/Config.in" + source "package/giblib/Config.in" + source "package/giflib/Config.in" + source "package/granite/Config.in" + source "package/graphite2/Config.in" + source "package/gtkmm3/Config.in" + source "package/gtksourceview/Config.in" + source "package/harfbuzz/Config.in" + source "package/ijs/Config.in" + source "package/imlib2/Config.in" + source "package/irrlicht/Config.in" + source "package/jasper/Config.in" + source "package/jpeg/Config.in" + source "package/kmsxx/Config.in" + source "package/lcms2/Config.in" + source "package/lensfun/Config.in" + source "package/leptonica/Config.in" + source "package/lesstif/Config.in" + source "package/libart/Config.in" + source "package/libdmtx/Config.in" + source "package/libdri2/Config.in" + source "package/libdrm/Config.in" + source "package/libepoxy/Config.in" + source "package/libexif/Config.in" + source "package/libfm/Config.in" + source "package/libfm-extra/Config.in" + source "package/libfreeglut/Config.in" + source "package/libfreeimage/Config.in" + source "package/libgdiplus/Config.in" + source "package/libgeotiff/Config.in" + source "package/libglade/Config.in" + source "package/libglew/Config.in" + source "package/libglfw/Config.in" + source "package/libglu/Config.in" + source "package/libgta/Config.in" + source "package/libgtk2/Config.in" + source "package/libgtk3/Config.in" + source "package/libmediaart/Config.in" + source "package/libmng/Config.in" + source "package/libpng/Config.in" + source "package/libqrencode/Config.in" + source "package/libraw/Config.in" + source "package/librsvg/Config.in" + source "package/libsoil/Config.in" + source "package/libsvg/Config.in" + source "package/libsvg-cairo/Config.in" + source "package/libsvgtiny/Config.in" + source "package/libva/Config.in" + source "package/libva-intel-driver/Config.in" + source "package/libvdpau/Config.in" + source "package/libvips/Config.in" + source "package/menu-cache/Config.in" + source "package/opencv/Config.in" + source "package/opencv3/Config.in" + source "package/opengl/Config.in" + source "package/openjpeg/Config.in" + source "package/pango/Config.in" + source "package/pangomm/Config.in" + source "package/pixman/Config.in" + source "package/poppler/Config.in" + source "package/powervr/Config.in" + source "package/tiff/Config.in" + source "package/wayland/Config.in" + source "package/wayland-protocols/Config.in" + source "package/waylandpp/Config.in" + source "package/webkitgtk/Config.in" + source "package/webp/Config.in" + source "package/zbar/Config.in" + source "package/zxing-cpp/Config.in" +endmenu + +menu "Hardware handling" + source "package/acsccid/Config.in" + source "package/bcm2835/Config.in" + source "package/c-periphery/Config.in" + source "package/ccid/Config.in" + source "package/dtc/Config.in" + source "package/gnu-efi/Config.in" + source "package/hidapi/Config.in" + source "package/lcdapi/Config.in" + source "package/let-me-create/Config.in" + source "package/libaio/Config.in" + source "package/libatasmart/Config.in" + source "package/libcec/Config.in" + source "package/libfreefare/Config.in" + source "package/libftdi/Config.in" + source "package/libftdi1/Config.in" + source "package/libgphoto2/Config.in" + source "package/libgpiod/Config.in" + source "package/libgudev/Config.in" + source "package/libhid/Config.in" + source "package/libiio/Config.in" + source "package/libinput/Config.in" + source "package/libiqrf/Config.in" + source "package/libllcp/Config.in" + source "package/libmbim/Config.in" + source "package/libnfc/Config.in" + source "package/libpciaccess/Config.in" + source "package/libphidget/Config.in" + source "package/libpri/Config.in" + source "package/libqmi/Config.in" + source "package/libraw1394/Config.in" + source "package/librtas/Config.in" + source "package/librtlsdr/Config.in" + source "package/libserial/Config.in" + source "package/libserialport/Config.in" + source "package/libsigrok/Config.in" + source "package/libsigrokdecode/Config.in" + source "package/libsoc/Config.in" + source "package/libss7/Config.in" + source "package/libusb/Config.in" + source "package/libusb-compat/Config.in" + source "package/libusbgx/Config.in" + source "package/libv4l/Config.in" + source "package/libxkbcommon/Config.in" + source "package/mraa/Config.in" + source "package/mtdev/Config.in" + source "package/ne10/Config.in" + source "package/neardal/Config.in" + source "package/owfs/Config.in" + source "package/pcsc-lite/Config.in" + source "package/tslib/Config.in" + source "package/urg/Config.in" + source "package/wiringpi/Config.in" +endmenu + +menu "Javascript" + source "package/angularjs/Config.in" +if BR2_PACKAGE_ANGULARJS +menu "External AngularJS plugins" + source "package/angular-websocket/Config.in" +endmenu +endif + source "package/bootstrap/Config.in" + source "package/explorercanvas/Config.in" + source "package/flot/Config.in" + source "package/jquery/Config.in" +if BR2_PACKAGE_JQUERY +menu "External jQuery plugins" + source "package/jquery-datetimepicker/Config.in" + source "package/jquery-keyboard/Config.in" + source "package/jquery-mobile/Config.in" + source "package/jquery-sidebar/Config.in" + source "package/jquery-sparkline/Config.in" + source "package/jquery-ui/Config.in" + source "package/jquery-ui-themes/Config.in" + source "package/jquery-validation/Config.in" +endmenu +endif + source "package/jsmin/Config.in" + source "package/json-javascript/Config.in" +endmenu + +menu "JSON/XML" + source "package/benejson/Config.in" + source "package/cjson/Config.in" + source "package/expat/Config.in" + source "package/ezxml/Config.in" + source "package/jansson/Config.in" + source "package/jose/Config.in" + source "package/jsmn/Config.in" + source "package/json-c/Config.in" + source "package/json-for-modern-cpp/Config.in" + source "package/json-glib/Config.in" + source "package/jsoncpp/Config.in" + source "package/libbson/Config.in" + source "package/libfastjson/Config.in" + source "package/libjson/Config.in" + source "package/libroxml/Config.in" + source "package/libucl/Config.in" + source "package/libxml2/Config.in" + source "package/libxmlpp/Config.in" + source "package/libxmlrpc/Config.in" + source "package/libxslt/Config.in" + source "package/libyaml/Config.in" + source "package/mxml/Config.in" + source "package/pugixml/Config.in" + source "package/rapidjson/Config.in" + source "package/rapidxml/Config.in" + source "package/raptor/Config.in" + source "package/tinyxml/Config.in" + source "package/tinyxml2/Config.in" + source "package/valijson/Config.in" + source "package/xerces/Config.in" + source "package/yajl/Config.in" + source "package/yaml-cpp/Config.in" +endmenu + +menu "Logging" + source "package/eventlog/Config.in" + source "package/glog/Config.in" + source "package/liblog4c-localtime/Config.in" + source "package/liblogging/Config.in" + source "package/log4cplus/Config.in" + source "package/log4cpp/Config.in" + source "package/log4cxx/Config.in" + source "package/opentracing-cpp/Config.in" + source "package/zlog/Config.in" +endmenu + +menu "Multimedia" + source "package/bitstream/Config.in" + source "package/kvazaar/Config.in" + source "package/libaacs/Config.in" + source "package/libamcodec/Config.in" + source "package/libass/Config.in" + source "package/libbdplus/Config.in" + source "package/libbluray/Config.in" + source "package/libdcadec/Config.in" + source "package/libdvbcsa/Config.in" + source "package/libdvbpsi/Config.in" + source "package/libdvbsi/Config.in" + source "package/libdvdcss/Config.in" + source "package/libdvdnav/Config.in" + source "package/libdvdread/Config.in" + source "package/libebml/Config.in" + source "package/libhdhomerun/Config.in" + source "package/libimxvpuapi/Config.in" + source "package/libmatroska/Config.in" + source "package/libmms/Config.in" + source "package/libmpeg2/Config.in" + source "package/libogg/Config.in" + source "package/libopenh264/Config.in" + source "package/libplayer/Config.in" + source "package/libtheora/Config.in" + source "package/libvpx/Config.in" + source "package/libyuv/Config.in" + source "package/live555/Config.in" + source "package/mediastreamer/Config.in" + source "package/x264/Config.in" + source "package/x265/Config.in" +endmenu + +menu "Networking" + source "package/agentpp/Config.in" + source "package/alljoyn/Config.in" + source "package/alljoyn-base/Config.in" + source "package/alljoyn-tcl/Config.in" + source "package/alljoyn-tcl-base/Config.in" + source "package/azmq/Config.in" + source "package/azure-iot-sdk-c/Config.in" + source "package/batman-adv/Config.in" + source "package/c-ares/Config.in" + source "package/canfestival/Config.in" + source "package/cgic/Config.in" + source "package/cppzmq/Config.in" + source "package/curlpp/Config.in" + source "package/czmq/Config.in" + source "package/daq/Config.in" + source "package/filemq/Config.in" + source "package/flickcurl/Config.in" + source "package/fmlib/Config.in" + source "package/freeradius-client/Config.in" + source "package/geoip/Config.in" + source "package/glib-networking/Config.in" + source "package/gssdp/Config.in" + source "package/gupnp/Config.in" + source "package/gupnp-av/Config.in" + source "package/gupnp-dlna/Config.in" + source "package/ibrcommon/Config.in" + source "package/ibrdtn/Config.in" + source "package/libcgi/Config.in" + source "package/libcgicc/Config.in" + source "package/libcoap/Config.in" + source "package/libcpprestsdk/Config.in" + source "package/libcurl/Config.in" + source "package/libdnet/Config.in" + source "package/libeXosip2/Config.in" + source "package/libfcgi/Config.in" + source "package/libgsasl/Config.in" + source "package/libhttpparser/Config.in" + source "package/libidn/Config.in" + source "package/libiscsi/Config.in" + source "package/libldns/Config.in" + source "package/libmaxminddb/Config.in" + source "package/libmbus/Config.in" + source "package/libmemcached/Config.in" + source "package/libmicrohttpd/Config.in" + source "package/libminiupnpc/Config.in" + source "package/libmnl/Config.in" + source "package/libmodbus/Config.in" + source "package/libnatpmp/Config.in" + source "package/libndp/Config.in" + source "package/libnet/Config.in" + source "package/libnetfilter_acct/Config.in" + source "package/libnetfilter_conntrack/Config.in" + source "package/libnetfilter_cthelper/Config.in" + source "package/libnetfilter_cttimeout/Config.in" + source "package/libnetfilter_log/Config.in" + source "package/libnetfilter_queue/Config.in" + source "package/libnfnetlink/Config.in" + source "package/libnftnl/Config.in" + source "package/libnice/Config.in" + source "package/libnl/Config.in" + source "package/liboauth/Config.in" + source "package/liboping/Config.in" + source "package/libosip2/Config.in" + source "package/libpcap/Config.in" + source "package/libpjsip/Config.in" + source "package/librsync/Config.in" + source "package/libshairplay/Config.in" + source "package/libshout/Config.in" + source "package/libsocketcan/Config.in" + source "package/libsoup/Config.in" + source "package/libsrtp/Config.in" + source "package/libstrophe/Config.in" + source "package/libtirpc/Config.in" + source "package/libtorrent/Config.in" + source "package/libupnp/Config.in" + source "package/libupnp18/Config.in" + source "package/libupnpp/Config.in" + source "package/liburiparser/Config.in" + source "package/libvncserver/Config.in" + source "package/libwebsock/Config.in" + source "package/libwebsockets/Config.in" + source "package/lksctp-tools/Config.in" + source "package/mongoose/Config.in" + source "package/nanomsg/Config.in" + source "package/neon/Config.in" + source "package/norm/Config.in" + source "package/nss-mdns/Config.in" + source "package/nss-pam-ldapd/Config.in" + source "package/omniorb/Config.in" + source "package/openldap/Config.in" + source "package/openmpi/Config.in" + source "package/openpgm/Config.in" + source "package/openzwave/Config.in" + source "package/ortp/Config.in" + source "package/paho-mqtt-c/Config.in" + source "package/qdecoder/Config.in" + source "package/qpid-proton/Config.in" + source "package/rabbitmq-c/Config.in" + source "package/rtmpdump/Config.in" + source "package/slirp/Config.in" + source "package/snmppp/Config.in" + source "package/sofia-sip/Config.in" + source "package/thrift/Config.in" + source "package/usbredir/Config.in" + source "package/zeromq/Config.in" + source "package/zmqpp/Config.in" + source "package/zyre/Config.in" +endmenu + +menu "Other" + source "package/apr/Config.in" + source "package/apr-util/Config.in" + source "package/argp-standalone/Config.in" + source "package/armadillo/Config.in" + source "package/atf/Config.in" + source "package/bctoolbox/Config.in" + source "package/bdwgc/Config.in" + source "package/boost/Config.in" + source "package/capnproto/Config.in" + source "package/clapack/Config.in" + source "package/classpath/Config.in" + source "package/clp/Config.in" + source "package/coinutils/Config.in" + source "package/cppcms/Config.in" + source "package/cracklib/Config.in" + source "package/dawgdic/Config.in" + source "package/ding-libs/Config.in" + source "package/eigen/Config.in" + source "package/elfutils/Config.in" + source "package/fftw/Config.in" + source "package/flann/Config.in" + source "package/flatbuffers/Config.in" + source "package/gconf/Config.in" + source "package/gflags/Config.in" + source "package/glibmm/Config.in" + source "package/glm/Config.in" + source "package/glpk/Config.in" + source "package/gmp/Config.in" + source "package/gsl/Config.in" + source "package/gtest/Config.in" + source "package/jemalloc/Config.in" + source "package/lapack/Config.in" + source "package/libargtable2/Config.in" + source "package/libatomic_ops/Config.in" + source "package/libb64/Config.in" + source "package/libbsd/Config.in" + source "package/libcap/Config.in" + source "package/libcap-ng/Config.in" + source "package/libcgroup/Config.in" + source "package/libcofi/Config.in" + source "package/libcroco/Config.in" + source "package/libcrossguid/Config.in" + source "package/libcsv/Config.in" + source "package/libdaemon/Config.in" + source "package/libee/Config.in" + source "package/libev/Config.in" + source "package/libevdev/Config.in" + source "package/libevent/Config.in" + source "package/libffi/Config.in" + source "package/libgee/Config.in" + source "package/libglib2/Config.in" + source "package/libglob/Config.in" + source "package/libical/Config.in" + source "package/libite/Config.in" + source "package/liblinear/Config.in" + source "package/libloki/Config.in" + source "package/libnpth/Config.in" + source "package/libnspr/Config.in" + source "package/libpfm4/Config.in" + source "package/libplatform/Config.in" + source "package/libplist/Config.in" + source "package/libpthread-stubs/Config.in" + source "package/libpthsem/Config.in" + source "package/libpwquality/Config.in" + source "package/libseccomp/Config.in" + source "package/libsigc/Config.in" + source "package/libsigsegv/Config.in" + source "package/libspatialindex/Config.in" + source "package/libtasn1/Config.in" + source "package/libtommath/Config.in" + source "package/libtpl/Config.in" + source "package/libubox/Config.in" + source "package/libuci/Config.in" + source "package/libunwind/Config.in" + source "package/liburcu/Config.in" + source "package/libuv/Config.in" + source "package/lightning/Config.in" + source "package/linux-pam/Config.in" +if BR2_PACKAGE_LINUX_PAM +comment "linux-pam plugins" + source "package/libpam-radius-auth/Config.in" + source "package/libpam-tacplus/Config.in" +endif + source "package/liquid-dsp/Config.in" + source "package/lttng-libust/Config.in" + source "package/mpc/Config.in" + source "package/mpdecimal/Config.in" + source "package/mpfr/Config.in" + source "package/mpir/Config.in" + source "package/msgpack/Config.in" + source "package/mtdev2tuio/Config.in" + source "package/musl-compat-headers/Config.in" + source "package/openblas/Config.in" + source "package/orc/Config.in" + source "package/p11-kit/Config.in" + source "package/poco/Config.in" + source "package/protobuf/Config.in" + source "package/protobuf-c/Config.in" + source "package/qhull/Config.in" + source "package/qlibc/Config.in" + source "package/riemann-c-client/Config.in" + source "package/shapelib/Config.in" + source "package/skalibs/Config.in" + source "package/sphinxbase/Config.in" + source "package/startup-notification/Config.in" + source "package/tinycbor/Config.in" + source "package/tz/Config.in" + source "package/tzdata/Config.in" +endmenu + +menu "Security" + source "package/libselinux/Config.in" + source "package/libsemanage/Config.in" + source "package/libsepol/Config.in" + source "package/safeclib/Config.in" +endmenu + +menu "Text and terminal handling" + source "package/augeas/Config.in" + source "package/enchant/Config.in" + source "package/fmt/Config.in" + source "package/icu/Config.in" + source "package/libcli/Config.in" + source "package/libedit/Config.in" + source "package/libenca/Config.in" + source "package/libestr/Config.in" + source "package/libfribidi/Config.in" + source "package/libiconv/Config.in" + source "package/libunistring/Config.in" + source "package/linenoise/Config.in" + source "package/ncurses/Config.in" + source "package/newt/Config.in" + source "package/pcre/Config.in" + source "package/pcre2/Config.in" + source "package/popt/Config.in" + source "package/readline/Config.in" + source "package/slang/Config.in" + source "package/tclap/Config.in" + source "package/ustr/Config.in" +endmenu + +endmenu + +menu "Mail" + source "package/dovecot/Config.in" + source "package/exim/Config.in" + source "package/fetchmail/Config.in" + source "package/heirloom-mailx/Config.in" + source "package/libesmtp/Config.in" + source "package/msmtp/Config.in" + source "package/mutt/Config.in" + source "package/sylpheed/Config.in" +endmenu + +menu "Miscellaneous" + source "package/aespipe/Config.in" + source "package/bc/Config.in" + source "package/clamav/Config.in" + source "package/collectd/Config.in" + source "package/domoticz/Config.in" + source "package/empty/Config.in" + source "package/gnuradio/Config.in" + source "package/googlefontdirectory/Config.in" + source "package/gqrx/Config.in" + source "package/gr-osmosdr/Config.in" + source "package/gsettings-desktop-schemas/Config.in" + source "package/haveged/Config.in" + source "package/linux-syscall-support/Config.in" + source "package/mcrypt/Config.in" + source "package/mobile-broadband-provider-info/Config.in" + source "package/proj/Config.in" + source "package/qemu/Config.in" + source "package/qpdf/Config.in" + source "package/shared-mime-info/Config.in" + source "package/taskd/Config.in" + source "package/wine/Config.in" + source "package/xutil_util-macros/Config.in" +endmenu + +menu "Networking applications" + source "package/aircrack-ng/Config.in" + source "package/aoetools/Config.in" + source "package/apache/Config.in" + source "package/argus/Config.in" + source "package/arp-scan/Config.in" + source "package/arptables/Config.in" + source "package/asterisk/Config.in" + source "package/atftp/Config.in" + source "package/autossh/Config.in" + source "package/avahi/Config.in" + source "package/axel/Config.in" + source "package/babeld/Config.in" + source "package/bandwidthd/Config.in" + source "package/batctl/Config.in" + source "package/bcusdk/Config.in" + source "package/bind/Config.in" + source "package/bluez-tools/Config.in" + source "package/bluez_utils/Config.in" + source "package/bluez5_utils/Config.in" + source "package/bmon/Config.in" + source "package/boa/Config.in" + source "package/boinc/Config.in" + source "package/bridge-utils/Config.in" + source "package/bwm-ng/Config.in" + source "package/c-icap/Config.in" + source "package/c-icap-modules/Config.in" + source "package/can-utils/Config.in" + source "package/cannelloni/Config.in" + source "package/chrony/Config.in" + source "package/civetweb/Config.in" + source "package/connman/Config.in" + source "package/connman-gtk/Config.in" + source "package/conntrack-tools/Config.in" + source "package/crda/Config.in" + source "package/ctorrent/Config.in" + source "package/cups/Config.in" + source "package/cups-filters/Config.in" + source "package/dante/Config.in" + source "package/darkhttpd/Config.in" + source "package/dhcp/Config.in" + source "package/dhcpcd/Config.in" + source "package/dhcpdump/Config.in" + source "package/dnsmasq/Config.in" + source "package/drbd-utils/Config.in" + source "package/dropbear/Config.in" + source "package/ebtables/Config.in" + source "package/ejabberd/Config.in" + source "package/ethtool/Config.in" + source "package/faifa/Config.in" + source "package/fastd/Config.in" + source "package/fcgiwrap/Config.in" + source "package/flannel/Config.in" + source "package/fmc/Config.in" + source "package/fping/Config.in" + source "package/freeswitch/Config.in" + source "package/freeswitch-mod-bcg729/Config.in" + source "package/gesftpserver/Config.in" + source "package/glorytun/Config.in" + source "package/gupnp-tools/Config.in" + source "package/gutenprint/Config.in" + source "package/hans/Config.in" + source "package/hiawatha/Config.in" + source "package/hostapd/Config.in" + source "package/hplip/Config.in" + source "package/httping/Config.in" + source "package/ibrdtn-tools/Config.in" + source "package/ibrdtnd/Config.in" + source "package/ifenslave/Config.in" + source "package/ifplugd/Config.in" + source "package/iftop/Config.in" + source "package/ifupdown/Config.in" + source "package/ifupdown-scripts/Config.in" + source "package/igd2-for-linux/Config.in" + source "package/igh-ethercat/Config.in" + source "package/igmpproxy/Config.in" + source "package/inadyn/Config.in" + source "package/iodine/Config.in" + source "package/iperf/Config.in" + source "package/iperf3/Config.in" + source "package/iproute2/Config.in" + source "package/ipsec-tools/Config.in" + source "package/ipset/Config.in" + source "package/iptables/Config.in" + source "package/iptraf-ng/Config.in" + source "package/iputils/Config.in" + source "package/irssi/Config.in" + source "package/iw/Config.in" + source "package/janus-gateway/Config.in" + source "package/keepalived/Config.in" + source "package/kismet/Config.in" + source "package/knock/Config.in" + source "package/leafnode2/Config.in" + source "package/lft/Config.in" + source "package/lftp/Config.in" + source "package/lighttpd/Config.in" + source "package/linknx/Config.in" + source "package/links/Config.in" + source "package/linphone/Config.in" + source "package/linux-zigbee/Config.in" + source "package/linuxptp/Config.in" + source "package/lldpd/Config.in" + source "package/lrzsz/Config.in" + source "package/lynx/Config.in" + source "package/macchanger/Config.in" + source "package/memcached/Config.in" + source "package/mii-diag/Config.in" + source "package/minidlna/Config.in" + source "package/minissdpd/Config.in" + source "package/mjpg-streamer/Config.in" + source "package/modem-manager/Config.in" + source "package/mongrel2/Config.in" + source "package/monkey/Config.in" + source "package/mosh/Config.in" + source "package/mosquitto/Config.in" + source "package/mrouted/Config.in" + source "package/mtr/Config.in" + source "package/nbd/Config.in" + source "package/ncftp/Config.in" + source "package/ndisc6/Config.in" + source "package/netatalk/Config.in" + source "package/netcat/Config.in" + source "package/netcat-openbsd/Config.in" + source "package/netplug/Config.in" + source "package/netsnmp/Config.in" + source "package/netstat-nat/Config.in" + source "package/net-tools/Config.in" + source "package/network-manager/Config.in" + source "package/nfacct/Config.in" + source "package/nftables/Config.in" + source "package/nginx/Config.in" +if BR2_PACKAGE_NGINX +menu "External nginx modules" + source "package/nginx-dav-ext/Config.in" + source "package/nginx-naxsi/Config.in" + source "package/nginx-upload/Config.in" +endmenu +endif + source "package/ngircd/Config.in" + source "package/ngrep/Config.in" + source "package/nload/Config.in" + source "package/nmap/Config.in" + source "package/noip/Config.in" + source "package/ntp/Config.in" + source "package/nuttcp/Config.in" + source "package/odhcp6c/Config.in" + source "package/odhcploc/Config.in" + source "package/olsr/Config.in" + source "package/open-lldp/Config.in" + source "package/open-plc-utils/Config.in" + source "package/openntpd/Config.in" + source "package/openobex/Config.in" + source "package/openssh/Config.in" + source "package/openswan/Config.in" + source "package/openvpn/Config.in" + source "package/p910nd/Config.in" + source "package/phidgetwebservice/Config.in" + source "package/phytool/Config.in" + source "package/pimd/Config.in" + source "package/pound/Config.in" + source "package/pppd/Config.in" + source "package/pptp-linux/Config.in" + source "package/privoxy/Config.in" + source "package/proftpd/Config.in" + source "package/prosody/Config.in" + source "package/proxychains-ng/Config.in" + source "package/ptpd/Config.in" + source "package/ptpd2/Config.in" + source "package/pure-ftpd/Config.in" + source "package/putty/Config.in" + source "package/quagga/Config.in" + source "package/rabbitmq-server/Config.in" + source "package/radvd/Config.in" + source "package/rp-pppoe/Config.in" + source "package/rpcbind/Config.in" + source "package/rsh-redone/Config.in" + source "package/rsync/Config.in" + source "package/rtorrent/Config.in" + source "package/rtptools/Config.in" + source "package/rygel/Config.in" + source "package/s6-dns/Config.in" + source "package/s6-networking/Config.in" + source "package/samba4/Config.in" + source "package/sconeserver/Config.in" + source "package/ser2net/Config.in" + source "package/shairport-sync/Config.in" + source "package/shellinabox/Config.in" + source "package/smcroute/Config.in" + source "package/sngrep/Config.in" + source "package/socat/Config.in" + source "package/socketcand/Config.in" + source "package/softether/Config.in" + source "package/spawn-fcgi/Config.in" + source "package/spice/Config.in" + source "package/spice-protocol/Config.in" + source "package/squid/Config.in" + source "package/sshpass/Config.in" + source "package/sslh/Config.in" + source "package/strongswan/Config.in" + source "package/stunnel/Config.in" + source "package/tcpdump/Config.in" + source "package/tcping/Config.in" + source "package/tcpreplay/Config.in" + source "package/tftpd/Config.in" + source "package/thttpd/Config.in" + source "package/tinc/Config.in" + source "package/tinyhttpd/Config.in" + source "package/tn5250/Config.in" + source "package/tor/Config.in" + source "package/traceroute/Config.in" + source "package/transmission/Config.in" + source "package/tunctl/Config.in" + source "package/tvheadend/Config.in" + source "package/udpcast/Config.in" + source "package/uhttpd/Config.in" + source "package/ulogd/Config.in" + source "package/ushare/Config.in" + source "package/ussp-push/Config.in" + source "package/vde2/Config.in" + source "package/vdr/Config.in" + source "package/vdr-plugin-vnsiserver/Config.in" + source "package/vnstat/Config.in" + source "package/vpnc/Config.in" + source "package/vsftpd/Config.in" + source "package/vtun/Config.in" + source "package/wavemon/Config.in" + source "package/wget/Config.in" + source "package/whois/Config.in" + source "package/wireguard/Config.in" + source "package/wireless-regdb/Config.in" + source "package/wireless_tools/Config.in" + source "package/wireshark/Config.in" + source "package/wpa_supplicant/Config.in" + source "package/wpan-tools/Config.in" + source "package/xinetd/Config.in" + source "package/xl2tp/Config.in" + source "package/xtables-addons/Config.in" + source "package/znc/Config.in" + +endmenu + +menu "Package managers" +comment "-------------------------------------------------------" +comment "Please note: " +comment "- Buildroot does *not* generate binary packages, " +comment "- Buildroot does *not* install any package database. " +comment "* " +comment "It is up to you to provide those by yourself if you " +comment "want to use any of those package managers. " +comment "* " +comment "See the manual: " +comment "http://buildroot.org/manual.html#faq-no-binary-packages" +comment "-------------------------------------------------------" + source "package/opkg/Config.in" + source "package/rpm/Config.in" +endmenu + +menu "Real-Time" + source "package/rtai/Config.in" + source "package/xenomai/Config.in" +endmenu + +menu "Security" + source "package/checkpolicy/Config.in" + source "package/paxtest/Config.in" + source "package/policycoreutils/Config.in" + source "package/refpolicy/Config.in" + source "package/restorecond/Config.in" + source "package/selinux-python/Config.in" + source "package/semodule-utils/Config.in" + source "package/setools/Config.in" +endmenu + +menu "Shell and utilities" +comment "Shells" + source "package/bash/Config.in" + source "package/dash/Config.in" + source "package/mksh/Config.in" + source "package/zsh/Config.in" +comment "Utilities" + source "package/at/Config.in" +# paravirt: +auto-getty + source "package/auto-getty/Config.in" + source "package/ccrypt/Config.in" + source "package/crudini/Config.in" + source "package/dialog/Config.in" + source "package/dtach/Config.in" + source "package/easy-rsa/Config.in" + source "package/file/Config.in" + source "package/gnupg/Config.in" + source "package/gnupg2/Config.in" + source "package/inotify-tools/Config.in" + source "package/lockfile-progs/Config.in" + source "package/logrotate/Config.in" + source "package/logsurfer/Config.in" + source "package/pdmenu/Config.in" + source "package/pinentry/Config.in" + source "package/ranger/Config.in" + source "package/screen/Config.in" + source "package/sudo/Config.in" + source "package/terminology/Config.in" + source "package/time/Config.in" + source "package/tmux/Config.in" + source "package/which/Config.in" + source "package/xmlstarlet/Config.in" + source "package/xxhash/Config.in" +endmenu + +menu "System tools" + source "package/acl/Config.in" + source "package/android-tools/Config.in" + source "package/atop/Config.in" + source "package/attr/Config.in" + source "package/audit/Config.in" + source "package/bootutils/Config.in" + source "package/cgroupfs-mount/Config.in" + source "package/circus/Config.in" + source "package/coreutils/Config.in" + source "package/cpuload/Config.in" + source "package/daemon/Config.in" + source "package/dc3dd/Config.in" + source "package/dcron/Config.in" + source "package/ddrescue/Config.in" + source "package/debianutils/Config.in" + source "package/docker-containerd/Config.in" + source "package/docker-engine/Config.in" + source "package/docker-proxy/Config.in" + source "package/dsp-tools/Config.in" + source "package/efibootmgr/Config.in" + source "package/efivar/Config.in" + source "package/emlog/Config.in" + source "package/ftop/Config.in" + source "package/getent/Config.in" + source "package/htop/Config.in" + source "package/initscripts/Config.in" + source "package/iotop/Config.in" + source "package/iprutils/Config.in" + source "package/irqbalance/Config.in" + source "package/keyutils/Config.in" + source "package/kmod/Config.in" + source "package/kvmtool/Config.in" + source "package/libostree/Config.in" + source "package/lxc/Config.in" + source "package/monit/Config.in" + source "package/ncdu/Config.in" + source "package/numactl/Config.in" + source "package/nut/Config.in" + source "package/openvmtools/Config.in" + source "package/polkit/Config.in" + source "package/powerpc-utils/Config.in" + source "package/procps-ng/Config.in" + source "package/procrank_linux/Config.in" + source "package/psmisc/Config.in" + source "package/pwgen/Config.in" + source "package/quota/Config.in" + source "package/rauc/Config.in" + source "package/rsyslog/Config.in" + source "package/runc/Config.in" + source "package/s6/Config.in" + source "package/s6-linux-init/Config.in" + source "package/s6-linux-utils/Config.in" + source "package/s6-portable-utils/Config.in" + source "package/s6-rc/Config.in" + source "package/scrub/Config.in" + source "package/scrypt/Config.in" + source "package/smack/Config.in" + source "package/start-stop-daemon/Config.in" + source "package/supervisor/Config.in" + source "package/swupdate/Config.in" + source "package/sysklogd/Config.in" + source "package/syslog-ng/Config.in" + source "package/systemd/Config.in" + source "package/systemd-bootchart/Config.in" + source "package/sysvinit/Config.in" + source "package/tar/Config.in" + source "package/tpm-tools/Config.in" + source "package/unscd/Config.in" + source "package/util-linux/Config.in" + source "package/xen/Config.in" + source "package/xvisor/Config.in" +endmenu + +menu "Text editors and viewers" + source "package/ed/Config.in" + source "package/joe/Config.in" + source "package/less/Config.in" + source "package/mc/Config.in" + source "package/nano/Config.in" + source "package/uemacs/Config.in" + source "package/vim/Config.in" +endmenu + +endmenu diff --git a/buildroot/package/Config.in.host b/buildroot/package/Config.in.host new file mode 100644 index 0000000..199a8e9 --- /dev/null +++ b/buildroot/package/Config.in.host @@ -0,0 +1,63 @@ +menu "Host utilities" + + source "package/aespipe/Config.in.host" + source "package/android-tools/Config.in.host" + source "package/cargo/Config.in.host" + source "package/cbootimage/Config.in.host" + source "package/checkpolicy/Config.in.host" + source "package/cmake/Config.in.host" + source "package/cramfs/Config.in.host" + source "package/cryptsetup/Config.in.host" + source "package/dfu-util/Config.in.host" + source "package/dos2unix/Config.in.host" + source "package/dosfstools/Config.in.host" + source "package/dtc/Config.in.host" + source "package/e2fsprogs/Config.in.host" + source "package/e2tools/Config.in.host" + source "package/faketime/Config.in.host" + source "package/fwup/Config.in.host" + source "package/genext2fs/Config.in.host" + source "package/genimage/Config.in.host" + source "package/genpart/Config.in.host" + source "package/gnupg/Config.in.host" + source "package/go/Config.in.host" + source "package/go-bootstrap/Config.in.host" + source "package/google-breakpad/Config.in.host" + source "package/gptfdisk/Config.in.host" + source "package/imx-usb-loader/Config.in.host" + source "package/jq/Config.in.host" + source "package/jsmin/Config.in.host" + source "package/lpc3250loader/Config.in.host" + source "package/lttng-babeltrace/Config.in.host" + source "package/mfgtools/Config.in.host" + source "package/mkpasswd/Config.in.host" + source "package/mtd/Config.in.host" + source "package/mtools/Config.in.host" + source "package/mxsldr/Config.in.host" + source "package/omap-u-boot-utils/Config.in.host" + source "package/openocd/Config.in.host" + source "package/opkg-utils/Config.in.host" + source "package/parted/Config.in.host" + source "package/patchelf/Config.in.host" + source "package/pkgconf/Config.in.host" + source "package/pru-software-support/Config.in.host" + source "package/pwgen/Config.in.host" + source "package/python-lxml/Config.in.host" + source "package/python-six/Config.in.host" + source "package/qemu/Config.in.host" + source "package/raspberrypi-usbboot/Config.in.host" + source "package/rauc/Config.in.host" + source "package/rustc/Config.in.host" + source "package/s6-rc/Config.in.host" + source "package/sam-ba/Config.in.host" + source "package/squashfs/Config.in.host" + source "package/sunxi-tools/Config.in.host" + source "package/tegrarcm/Config.in.host" + source "package/ti-cgt-pru/Config.in.host" + source "package/uboot-tools/Config.in.host" + source "package/util-linux/Config.in.host" + source "package/vboot-utils/Config.in.host" + source "package/xorriso/Config.in.host" + source "package/zip/Config.in.host" + +endmenu diff --git a/buildroot/package/Makefile.in b/buildroot/package/Makefile.in new file mode 100644 index 0000000..58af2ef --- /dev/null +++ b/buildroot/package/Makefile.in @@ -0,0 +1,451 @@ +ifndef MAKE +MAKE := make +endif +ifndef HOSTMAKE +HOSTMAKE = $(MAKE) +endif +HOSTMAKE := $(shell which $(HOSTMAKE) || type -p $(HOSTMAKE) || echo make) + +# If BR2_JLEVEL is 0, scale the maximum concurrency with the number of +# CPUs. An additional job is used in order to keep processors busy +# while waiting on I/O. +# If the number of processors is not available, assume one. +ifeq ($(BR2_JLEVEL),0) +PARALLEL_JOBS := $(shell echo \ + $$((1 + `getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`))) +else +PARALLEL_JOBS := $(BR2_JLEVEL) +endif + +MAKE1 := $(HOSTMAKE) -j1 +override MAKE = $(HOSTMAKE) \ + $(if $(findstring j,$(filter-out --%,$(MAKEFLAGS))),,-j$(PARALLEL_JOBS)) + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) +TARGET_VENDOR = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_VENDOR)) +else +TARGET_VENDOR = buildroot +endif + +# Sanity checks +ifeq ($(TARGET_VENDOR),) +$(error BR2_TOOLCHAIN_BUILDROOT_VENDOR is not allowed to be empty) +endif +ifeq ($(TARGET_VENDOR),unknown) +$(error BR2_TOOLCHAIN_BUILDROOT_VENDOR cannot be 'unknown'. \ + It might be confused with the native toolchain) +endif + +# Compute GNU_TARGET_NAME +GNU_TARGET_NAME = $(ARCH)-$(TARGET_VENDOR)-$(TARGET_OS)-$(LIBC)$(ABI) + +# FLAT binary format needs uclinux +ifeq ($(BR2_BINFMT_FLAT),y) +TARGET_OS = uclinux +else +TARGET_OS = linux +endif + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +LIBC = uclibc +else ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LIBC = musl +else +LIBC = gnu +endif + +# The ABI suffix is a bit special on ARM, as it needs to be +# -uclibcgnueabi for uClibc EABI, and -gnueabi for glibc EABI. +# This means that the LIBC and ABI aren't strictly orthogonal, +# which explains why we need the test on LIBC below. +ifeq ($(BR2_arm)$(BR2_armeb),y) +ifeq ($(LIBC),uclibc) +ABI = gnueabi +else +ABI = eabi +endif + +ifeq ($(BR2_ARM_EABIHF),y) +ABI := $(ABI)hf +endif +endif + +# For FSL PowerPC there's SPE +ifeq ($(BR2_powerpc_SPE),y) +ABI = spe +# MPC8540s are e500v1 with single precision FP +ifeq ($(BR2_powerpc_8540),y) +TARGET_ABI += -mabi=spe -mfloat-gprs=single -Wa,-me500 +endif +ifeq ($(BR2_powerpc_8548),y) +TARGET_ABI += -mabi=spe -mfloat-gprs=double -Wa,-me500x2 +endif +ifeq ($(BR2_powerpc_e500mc),y) +TARGET_ABI += -mabi=spe -mfloat-gprs=double -Wa,-me500mc +endif +endif + +# Use longcalls option for Xtensa globally. +# The 'longcalls' option allows calls across a greater range of addresses, +# and is required for some packages. While this option can degrade both +# code size and performance, the linker can usually optimize away the +# overhead when a call ends up within a certain range. +# +# Use auto-litpools for Xtensa globally. +# Collecting literals into separate section can be advantageous if that +# section is placed into DTCM at link time. This is applicable for code +# running on bare metal, but makes no sense under linux, where userspace +# is isolated from the physical memory details. OTOH placing literals into +# separate section breaks build of huge source files, because l32r +# instruction can only access literals in 256 KBytes range. +# +ifeq ($(BR2_xtensa),y) +TARGET_ABI += -mlongcalls -mauto-litpools +endif + +ifeq ($(BR2_arc)$(BR2_ARC_ATOMIC_EXT),yy) +TARGET_ABI += -matomic +endif + +STAGING_SUBDIR = $(GNU_TARGET_NAME)/sysroot +STAGING_DIR = $(HOST_DIR)/$(STAGING_SUBDIR) + +ifeq ($(BR2_OPTIMIZE_0),y) +TARGET_OPTIMIZATION = -O0 +endif +ifeq ($(BR2_OPTIMIZE_1),y) +TARGET_OPTIMIZATION = -O1 +endif +ifeq ($(BR2_OPTIMIZE_2),y) +TARGET_OPTIMIZATION = -O2 +endif +ifeq ($(BR2_OPTIMIZE_3),y) +TARGET_OPTIMIZATION = -O3 +endif +ifeq ($(BR2_OPTIMIZE_G),y) +TARGET_OPTIMIZATION = -Og +endif +ifeq ($(BR2_OPTIMIZE_S),y) +TARGET_OPTIMIZATION = -Os +endif +ifeq ($(BR2_DEBUG_1),y) +TARGET_DEBUGGING = -g1 +endif +ifeq ($(BR2_DEBUG_2),y) +TARGET_DEBUGGING = -g2 +endif +ifeq ($(BR2_DEBUG_3),y) +TARGET_DEBUGGING = -g3 +endif + +TARGET_CFLAGS_RELRO = -Wl,-z,relro +TARGET_CFLAGS_RELRO_FULL = -Wl,-z,now $(TARGET_CFLAGS_RELRO) + +TARGET_LDFLAGS = $(call qstrip,$(BR2_TARGET_LDFLAGS)) + +ifeq ($(BR2_SSP_REGULAR),y) +TARGET_CPPFLAGS += -fstack-protector +else ifeq ($(BR2_SSP_STRONG),y) +TARGET_CPPFLAGS += -fstack-protector-strong +else ifeq ($(BR2_SSP_ALL),y) +TARGET_CPPFLAGS += -fstack-protector-all +endif + +ifeq ($(BR2_RELRO_PARTIAL),y) +TARGET_CPPFLAGS += $(TARGET_CFLAGS_RELRO) +TARGET_LDFLAGS += $(TARGET_CFLAGS_RELRO) +else ifeq ($(BR2_RELRO_FULL),y) +TARGET_CPPFLAGS += -fPIE $(TARGET_CFLAGS_RELRO_FULL) +TARGET_LDFLAGS += -pie +endif + +ifeq ($(BR2_FORTIFY_SOURCE_1),y) +TARGET_CPPFLAGS += -D_FORTIFY_SOURCE=1 +else ifeq ($(BR2_FORTIFY_SOURCE_2),y) +TARGET_CPPFLAGS += -D_FORTIFY_SOURCE=2 +endif + +TARGET_CPPFLAGS += -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 +TARGET_CFLAGS = $(TARGET_CPPFLAGS) $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) +TARGET_CXXFLAGS = $(TARGET_CFLAGS) +TARGET_FCFLAGS = $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) + +ifeq ($(BR2_BINFMT_FLAT),y) +TARGET_CFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ + -Wl$(comma)-elf2flt) +TARGET_CXXFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ + -Wl$(comma)-elf2flt) +TARGET_FCFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),\ + -Wl$(comma)-elf2flt) +TARGET_LDFLAGS += $(if $($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt=-s$($(PKG)_FLAT_STACKSIZE),-Wl$(comma)-elf2flt) +endif + +ifeq ($(BR2_BINFMT_FLAT_SHARED),y) +TARGET_LDFLAGS += -mid-shared-library -mshared-library-id=0 +TARGET_CFLAGS += -mid-shared-library -mshared-library-id=0 +TARGET_FCFLAGS += -mid-shared-library -mshared-library-id=0 +TARGET_CXXFLAGS += -mid-shared-library -mshared-library-id=0 +endif +ifeq ($(BR2_BINFMT_FLAT_SEP_DATA),y) +TARGET_LDFLAGS += -msep-data +TARGET_CFLAGS += -msep-data +TARGET_FCFLAGS += -msep-data +TARGET_CXXFLAGS += -msep-data +endif + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) +TARGET_CROSS = $(HOST_DIR)/bin/$(GNU_TARGET_NAME)- +else +TARGET_CROSS = $(HOST_DIR)/bin/$(TOOLCHAIN_EXTERNAL_PREFIX)- +endif + +# Define TARGET_xx variables for all common binutils/gcc +TARGET_AR = $(TARGET_CROSS)ar +TARGET_AS = $(TARGET_CROSS)as +TARGET_CC = $(TARGET_CROSS)gcc +TARGET_CPP = $(TARGET_CROSS)cpp +TARGET_CXX = $(TARGET_CROSS)g++ +TARGET_FC = $(TARGET_CROSS)gfortran +TARGET_LD = $(TARGET_CROSS)ld +TARGET_NM = $(TARGET_CROSS)nm +TARGET_RANLIB = $(TARGET_CROSS)ranlib +TARGET_READELF = $(TARGET_CROSS)readelf +TARGET_OBJCOPY = $(TARGET_CROSS)objcopy +TARGET_OBJDUMP = $(TARGET_CROSS)objdump + +ifeq ($(BR2_STRIP_strip),y) +STRIP_STRIP_DEBUG := --strip-debug +TARGET_STRIP = $(TARGET_CROSS)strip +STRIPCMD = $(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note +else +TARGET_STRIP = /bin/true +STRIPCMD = $(TARGET_STRIP) +endif +INSTALL := $(shell which install || type -p install) +FLEX := $(shell which flex || type -p flex) +BISON := $(shell which bison || type -p bison) +UNZIP := $(shell which unzip || type -p unzip) -q + +APPLY_PATCHES = PATH=$(HOST_DIR)/bin:$$PATH support/scripts/apply-patches.sh $(if $(QUIET),-s) + +HOST_CPPFLAGS = -I$(HOST_DIR)/include +HOST_CFLAGS ?= -O2 +HOST_CFLAGS += $(HOST_CPPFLAGS) +HOST_CXXFLAGS += $(HOST_CFLAGS) +HOST_LDFLAGS += -L$(HOST_DIR)/lib -Wl,-rpath,$(HOST_DIR)/lib + +# The macros below are taken from linux 4.11 and adapted slightly. +# Copy more when needed. + +# try-run +# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise) +# Exit code chooses option. "$$TMP" is can be used as temporary file and +# is automatically cleaned up. +try-run = $(shell set -e; \ + TMP="$$(mktemp)"; \ + if ($(1)) >/dev/null 2>&1; \ + then echo "$(2)"; \ + else echo "$(3)"; \ + fi; \ + rm -f "$$TMP") + +# host-cc-option +# Usage: HOST_FOO_CFLAGS += $(call host-cc-option,-no-pie,) +host-cc-option = $(call try-run,\ + $(HOSTCC) $(HOST_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2)) + + +# host-intltool should be executed with the system perl, so we save +# the path to the system perl, before a host-perl built by Buildroot +# might get installed into $(HOST_DIR)/bin and therefore appears +# in our PATH. This system perl will be used as INTLTOOL_PERL. +export PERL=$(shell which perl) + +# host-intltool needs libxml-parser-perl, which Buildroot installs in +# $(HOST_DIR)/lib/perl, so we must make sure that the system perl +# finds this perl module by exporting the proper value for PERL5LIB. +export PERL5LIB=$(HOST_DIR)/lib/perl + +TARGET_MAKE_ENV = PATH=$(BR_PATH) + +TARGET_CONFIGURE_OPTS = \ + $(TARGET_MAKE_ENV) \ + AR="$(TARGET_AR)" \ + AS="$(TARGET_AS)" \ + LD="$(TARGET_LD)" \ + NM="$(TARGET_NM)" \ + CC="$(TARGET_CC)" \ + GCC="$(TARGET_CC)" \ + CPP="$(TARGET_CPP)" \ + CXX="$(TARGET_CXX)" \ + FC="$(TARGET_FC)" \ + F77="$(TARGET_FC)" \ + RANLIB="$(TARGET_RANLIB)" \ + READELF="$(TARGET_READELF)" \ + STRIP="$(TARGET_STRIP)" \ + OBJCOPY="$(TARGET_OBJCOPY)" \ + OBJDUMP="$(TARGET_OBJDUMP)" \ + AR_FOR_BUILD="$(HOSTAR)" \ + AS_FOR_BUILD="$(HOSTAS)" \ + CC_FOR_BUILD="$(HOSTCC)" \ + GCC_FOR_BUILD="$(HOSTCC)" \ + CXX_FOR_BUILD="$(HOSTCXX)" \ + LD_FOR_BUILD="$(HOSTLD)" \ + CPPFLAGS_FOR_BUILD="$(HOST_CPPFLAGS)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + CXXFLAGS_FOR_BUILD="$(HOST_CXXFLAGS)" \ + LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \ + FCFLAGS_FOR_BUILD="$(HOST_FCFLAGS)" \ + DEFAULT_ASSEMBLER="$(TARGET_AS)" \ + DEFAULT_LINKER="$(TARGET_LD)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + CXXFLAGS="$(TARGET_CXXFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + FCFLAGS="$(TARGET_FCFLAGS)" \ + FFLAGS="$(TARGET_FCFLAGS)" \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + STAGING_DIR="$(STAGING_DIR)" \ + INTLTOOL_PERL=$(PERL) + + +HOST_MAKE_ENV = \ + PATH=$(BR_PATH) \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_SYSROOT_DIR="/" \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ + PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ + PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" + +HOST_CONFIGURE_OPTS = \ + $(HOST_MAKE_ENV) \ + AR="$(HOSTAR)" \ + AS="$(HOSTAS)" \ + LD="$(HOSTLD)" \ + NM="$(HOSTNM)" \ + CC="$(HOSTCC)" \ + GCC="$(HOSTCC)" \ + CXX="$(HOSTCXX)" \ + CPP="$(HOSTCPP)" \ + OBJCOPY="$(HOSTOBJCOPY)" \ + RANLIB="$(HOSTRANLIB)" \ + CPPFLAGS="$(HOST_CPPFLAGS)" \ + CFLAGS="$(HOST_CFLAGS)" \ + CXXFLAGS="$(HOST_CXXFLAGS)" \ + LDFLAGS="$(HOST_LDFLAGS)" \ + INTLTOOL_PERL=$(PERL) + +# This is extra environment we can not export ourselves (eg. because some +# packages use that variable internally, eg. uboot), so we have to +# explicitly pass it to user-supplied external hooks (eg. post-build, +# post-images) +EXTRA_ENV = \ + PATH=$(BR_PATH) \ + BR2_DL_DIR=$(BR2_DL_DIR) \ + BUILD_DIR=$(BUILD_DIR) \ + O=$(CANONICAL_O) + +################################################################################ +# settings we need to pass to configure + +# does unaligned access trap? +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=yes +ifeq ($(BR2_i386),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif +ifeq ($(BR2_x86_64),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif +ifeq ($(BR2_m68k),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif +ifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y) +BR2_AC_CV_TRAP_CHECK = ac_cv_lbl_unaligned_fail=no +endif + +ifeq ($(BR2_ENDIAN),"BIG") +BR2_AC_CV_C_BIGENDIAN = ac_cv_c_bigendian=yes +else +BR2_AC_CV_C_BIGENDIAN = ac_cv_c_bigendian=no +endif + +# AM_GNU_GETTEXT misdetects musl gettext support. +# musl currently implements api level 1 and 2 (basic + ngettext) +# http://www.openwall.com/lists/musl/2015/04/16/3 +# +# These autoconf variables should only be pre-seeded when the minimal +# gettext implementation of musl is used. When the full blown +# implementation provided by gettext libintl is used, auto-detection +# works fine, and pre-seeding those values is actually wrong. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y:) +BR2_GT_CV_FUNC_GNUGETTEXT_LIBC = \ + gt_cv_func_gnugettext1_libc=yes \ + gt_cv_func_gnugettext2_libc=yes +endif + +TARGET_CONFIGURE_ARGS = \ + $(BR2_AC_CV_TRAP_CHECK) \ + ac_cv_func_mmap_fixed_mapped=yes \ + ac_cv_func_memcmp_working=yes \ + 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 \ + lt_cv_sys_lib_search_path_spec="" \ + $(BR2_AC_CV_C_BIGENDIAN) \ + $(BR2_GT_CV_FUNC_GNUGETTEXT_LIBC) + +################################################################################ + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +NLS_OPTS = --enable-nls +TARGET_NLS_DEPENDENCIES = host-gettext +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +TARGET_NLS_DEPENDENCIES += gettext +TARGET_NLS_LIBS += -lintl +endif +else +NLS_OPTS = --disable-nls +endif + +# We need anything that is invalid. Traditionally, we'd have used 'false' (and +# we did so in the past). However, that breaks libtool for packages that have +# optional C++ support (e.g. gnutls), because libtool will *require* a *valid* +# C++ preprocessor as long as CXX is not 'no'. +# Now, whether we use 'no' or 'false' for CXX as the same side effect: it is an +# invalid C++ compiler, and thus will cause detection of C++ to fail (which is +# expected and what we want), while at the same time taming libtool into +# silence. +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +TARGET_CONFIGURE_OPTS += CXX=no +endif + +ifeq ($(BR2_STATIC_LIBS),y) +SHARED_STATIC_LIBS_OPTS = --enable-static --disable-shared +TARGET_CFLAGS += -static +TARGET_CXXFLAGS += -static +TARGET_FCFLAGS += -static +TARGET_LDFLAGS += -static +else ifeq ($(BR2_SHARED_LIBS),y) +SHARED_STATIC_LIBS_OPTS = --disable-static --enable-shared +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +SHARED_STATIC_LIBS_OPTS = --enable-static --enable-shared +endif + +ifeq ($(BR2_COMPILER_PARANOID_UNSAFE_PATH),y) +export BR_COMPILER_PARANOID_UNSAFE_PATH=enabled +endif + +include package/pkg-download.mk +include package/pkg-autotools.mk +include package/pkg-cmake.mk +include package/pkg-luarocks.mk +include package/pkg-perl.mk +include package/pkg-python.mk +include package/pkg-virtual.mk +include package/pkg-generic.mk +include package/pkg-kconfig.mk +include package/pkg-rebar.mk +include package/pkg-kernel-module.mk +include package/pkg-waf.mk diff --git a/buildroot/package/a10disp/Config.in b/buildroot/package/a10disp/Config.in new file mode 100644 index 0000000..99ae0aa --- /dev/null +++ b/buildroot/package/a10disp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_A10DISP + bool "a10disp" + depends on BR2_arm + depends on BR2_LINUX_KERNEL + help + Program to change the display mode of Allwinner ARM SOCs + running the linux-sunxi kernel (and not the mainline kernel.) + + http://github.com/hglm/a10disp + +comment "a10disp needs a Linux kernel to be built" + depends on BR2_arm + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/a10disp/a10disp.hash b/buildroot/package/a10disp/a10disp.hash new file mode 100644 index 0000000..a1ec11c --- /dev/null +++ b/buildroot/package/a10disp/a10disp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5077405030e8f97a1edd4b86d469466abbc4d32b4a4609e58459347fcd1ba35b a10disp-v0.6.1.tar.gz diff --git a/buildroot/package/a10disp/a10disp.mk b/buildroot/package/a10disp/a10disp.mk new file mode 100644 index 0000000..7353ede --- /dev/null +++ b/buildroot/package/a10disp/a10disp.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# a10disp +# +################################################################################ + +A10DISP_VERSION = v0.6.1 +A10DISP_SITE = $(call github,hglm,a10disp,$(A10DISP_VERSION)) +A10DISP_LICENSE = MIT + +A10DISP_DEPENDENCIES = linux + +define A10DISP_BUILD_CMDS + cp -f $(LINUX_DIR)/include/video/sunxi_disp_ioctl.h $(@D)/ + $(TARGET_CC) $(TARGET_CFLAGS) $(@D)/a10disp.c -o $(@D)/a10disp +endef + +define A10DISP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/a10disp $(TARGET_DIR)/usr/bin/a10disp +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/acl/0001-support-static-installation.patch b/buildroot/package/acl/0001-support-static-installation.patch new file mode 100644 index 0000000..4cb473f --- /dev/null +++ b/buildroot/package/acl/0001-support-static-installation.patch @@ -0,0 +1,29 @@ +Support installation of .a file when doing static linking + +When doing static linking (i.e ENABLE_SHARED != yes), the acl build +logic wasn't installing any library at all, not even the .a file which +is needed for static linking. This patch fixes that. + +Signed-off-by: Thomas Petazzoni + +Index: b/include/buildmacros +=================================================================== +--- a/include/buildmacros ++++ b/include/buildmacros +@@ -97,7 +97,15 @@ + + INSTALL_LTLIB_STATIC = \ + cd $(TOPDIR)/$(LIBNAME)/.libs; \ +- ../$(INSTALL) -m 755 -d $(PKG_DEVLIB_DIR); ++ ../$(INSTALL) -m 755 -d $(PKG_DEVLIB_DIR); \ ++ ../$(INSTALL) -m 644 -T old_lib $(LIBNAME).la $(PKG_DEVLIB_DIR); \ ++ ../$(INSTALL) -m 644 $(LIBNAME).la $(PKG_DEVLIB_DIR)/$(LIBNAME).la ; \ ++ ../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \ ++ ../$(INSTALL) -T so_base $(LIBNAME).la $(PKG_LIB_DIR); \ ++ if test "x$(PKG_DEVLIB_DIR)" != "x$(PKG_LIB_DIR)" ; then \ ++ ../$(INSTALL) -S $(PKG_DEVLIB_DIR)/$(LIBNAME).a $(PKG_LIB_DIR)/$(LIBNAME).a; \ ++ ../$(INSTALL) -S $(PKG_DEVLIB_DIR)/$(LIBNAME).la $(PKG_LIB_DIR)/$(LIBNAME).la; \ ++ fi + + INSTALL_MAN = \ + @for d in $(MAN_PAGES); do \ diff --git a/buildroot/package/acl/0002-add-__acl_-prefixes-to-internal-symbols.patch b/buildroot/package/acl/0002-add-__acl_-prefixes-to-internal-symbols.patch new file mode 100644 index 0000000..f9a5d9b --- /dev/null +++ b/buildroot/package/acl/0002-add-__acl_-prefixes-to-internal-symbols.patch @@ -0,0 +1,292 @@ +From debbe4f7b591b3f35d0ed65c17fa81b196b2eb2d Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Tue, 12 Aug 2014 08:37:25 -0400 +Subject: [PATCH] add __acl_ prefixes to internal symbols + +When static linking libacl, people sometimes run into symbol collisions +because their own code defines symbols like "quote". So for acl internal +symbols, use an __acl_ prefix. + +[Rahul Bedarkar: backported from upstream + http://git.savannah.gnu.org/cgit/acl.git/commit/?id=a2c4d71c2e84419a49db503ed59de4d3d1dca7dd ] +Signed-off-by: Rahul Bedarkar +--- + exports | 12 ++---------- + getfacl/getfacl.c | 4 ++-- + include/misc.h | 8 ++++---- + libacl/__acl_to_any_text.c | 4 ++-- + libacl/acl_from_text.c | 4 ++-- + libmisc/high_water_alloc.c | 2 +- + libmisc/next_line.c | 6 +++--- + libmisc/quote.c | 4 ++-- + libmisc/unquote.c | 2 +- + setfacl/parse.c | 10 +++++----- + setfacl/setfacl.c | 4 ++-- + 11 files changed, 26 insertions(+), 34 deletions(-) + +diff --git a/exports b/exports +index 7d8e69e..bf15d84 100644 +--- a/exports ++++ b/exports +@@ -59,22 +59,14 @@ ACL_1.0 { + acl_to_any_text; + + local: +- # Library internal stuff ++ # Library internal stuff + __new_var_obj_p; + __new_obj_p_here; + __free_obj_p; + __check_obj_p; + __ext2int_and_check; +- __acl_reorder_entry_obj_p; +- __acl_reorder_obj_p; +- __acl_init_obj; +- __acl_create_entry_obj; +- __acl_free_acl_obj; +- __acl_to_any_text; ++ __acl_*; + __apply_mask_to_mode; +- +- quote; +- unquote; + }; + + ACL_1.1 { +diff --git a/getfacl/getfacl.c b/getfacl/getfacl.c +index f8eaf25..af9e225 100644 +--- a/getfacl/getfacl.c ++++ b/getfacl/getfacl.c +@@ -90,7 +90,7 @@ int opt_numeric; /* don't convert id's to symbolic names */ + + static const char *xquote(const char *str, const char *quote_chars) + { +- const char *q = quote(str, quote_chars); ++ const char *q = __acl_quote(str, quote_chars); + if (q == NULL) { + fprintf(stderr, "%s: %s\n", progname, strerror(errno)); + exit(1); +@@ -718,7 +718,7 @@ int main(int argc, char *argv[]) + do { + if (optind == argc || + strcmp(argv[optind], "-") == 0) { +- while ((line = next_line(stdin)) != NULL) { ++ while ((line = __acl_next_line(stdin)) != NULL) { + if (*line == '\0') + continue; + +diff --git a/include/misc.h b/include/misc.h +index 0c5fdcc..c25accf 100644 +--- a/include/misc.h ++++ b/include/misc.h +@@ -15,9 +15,9 @@ + along with this program. If not, see . + */ + +-extern int high_water_alloc(void **buf, size_t *bufsize, size_t newsize); ++extern int __acl_high_water_alloc(void **buf, size_t *bufsize, size_t newsize); + +-extern const char *quote(const char *str, const char *quote_chars); +-extern char *unquote(char *str); ++extern const char *__acl_quote(const char *str, const char *quote_chars); ++extern char *__acl_unquote(char *str); + +-extern char *next_line(FILE *file); ++extern char *__acl_next_line(FILE *file); +diff --git a/libacl/__acl_to_any_text.c b/libacl/__acl_to_any_text.c +index a4f9c34..19f1ccc 100644 +--- a/libacl/__acl_to_any_text.c ++++ b/libacl/__acl_to_any_text.c +@@ -159,7 +159,7 @@ acl_entry_to_any_str(const acl_entry_t entry_d, char *text_p, ssize_t size, + if (options & TEXT_NUMERIC_IDS) + str = NULL; + else +- str = quote(user_name( ++ str = __acl_quote(user_name( + entry_obj_p->eid.qid), ":, \t\n\r"); + if (str != NULL) { + strncpy(text_p, str, size); +@@ -182,7 +182,7 @@ acl_entry_to_any_str(const acl_entry_t entry_d, char *text_p, ssize_t size, + if (options & TEXT_NUMERIC_IDS) + str = NULL; + else +- str = quote(group_name( ++ str = __acl_quote(group_name( + entry_obj_p->eid.qid), ":, \t\n\r"); + if (str != NULL) { + strncpy(text_p, str, size); +diff --git a/libacl/acl_from_text.c b/libacl/acl_from_text.c +index 1e05322..f6165be 100644 +--- a/libacl/acl_from_text.c ++++ b/libacl/acl_from_text.c +@@ -206,7 +206,7 @@ parse_acl_entry(const char **text_p, acl_t *acl_p) + str = get_token(text_p); + if (str) { + entry_obj.etag = ACL_USER; +- error = get_uid(unquote(str), ++ error = get_uid(__acl_unquote(str), + &entry_obj.eid.qid); + free(str); + if (error) { +@@ -225,7 +225,7 @@ parse_acl_entry(const char **text_p, acl_t *acl_p) + str = get_token(text_p); + if (str) { + entry_obj.etag = ACL_GROUP; +- error = get_gid(unquote(str), ++ error = get_gid(__acl_unquote(str), + &entry_obj.eid.qid); + free(str); + if (error) { +diff --git a/libmisc/high_water_alloc.c b/libmisc/high_water_alloc.c +index c127dc1..951f4bb 100644 +--- a/libmisc/high_water_alloc.c ++++ b/libmisc/high_water_alloc.c +@@ -21,7 +21,7 @@ + #include + #include "misc.h" + +-int high_water_alloc(void **buf, size_t *bufsize, size_t newsize) ++int __acl_high_water_alloc(void **buf, size_t *bufsize, size_t newsize) + { + #define CHUNK_SIZE 256 + /* +diff --git a/libmisc/next_line.c b/libmisc/next_line.c +index 0566d7a..126a364 100644 +--- a/libmisc/next_line.c ++++ b/libmisc/next_line.c +@@ -23,7 +23,7 @@ + + #define LINE_SIZE getpagesize() + +-char *next_line(FILE *file) ++char *__acl_next_line(FILE *file) + { + static char *line; + static size_t line_size; +@@ -31,7 +31,7 @@ char *next_line(FILE *file) + int eol = 0; + + if (!line) { +- if (high_water_alloc((void **)&line, &line_size, LINE_SIZE)) ++ if (__acl_high_water_alloc((void **)&line, &line_size, LINE_SIZE)) + return NULL; + } + c = line; +@@ -47,7 +47,7 @@ char *next_line(FILE *file) + if (feof(file)) + break; + if (!eol) { +- if (high_water_alloc((void **)&line, &line_size, ++ if (__acl_high_water_alloc((void **)&line, &line_size, + 2 * line_size)) + return NULL; + c = strrchr(line, '\0'); +diff --git a/libmisc/quote.c b/libmisc/quote.c +index bf8f9eb..a28800c 100644 +--- a/libmisc/quote.c ++++ b/libmisc/quote.c +@@ -23,7 +23,7 @@ + #include + #include "misc.h" + +-const char *quote(const char *str, const char *quote_chars) ++const char *__acl_quote(const char *str, const char *quote_chars) + { + static char *quoted_str; + static size_t quoted_str_len; +@@ -40,7 +40,7 @@ const char *quote(const char *str, const char *quote_chars) + if (nonpr == 0) + return str; + +- if (high_water_alloc((void **)"ed_str, "ed_str_len, ++ if (__acl_high_water_alloc((void **)"ed_str, "ed_str_len, + (s - (unsigned char *)str) + nonpr * 3 + 1)) + return NULL; + for (s = (unsigned char *)str, q = quoted_str; *s != '\0'; s++) { +diff --git a/libmisc/unquote.c b/libmisc/unquote.c +index bffebf9..4f4ce7c 100644 +--- a/libmisc/unquote.c ++++ b/libmisc/unquote.c +@@ -22,7 +22,7 @@ + #include + #include "misc.h" + +-char *unquote(char *str) ++char *__acl_unquote(char *str) + { + unsigned char *s, *t; + +diff --git a/setfacl/parse.c b/setfacl/parse.c +index e7e6add..7433459 100644 +--- a/setfacl/parse.c ++++ b/setfacl/parse.c +@@ -226,7 +226,7 @@ user_entry: + str = get_token(text_p); + if (str) { + cmd->c_tag = ACL_USER; +- error = get_uid(unquote(str), &cmd->c_id); ++ error = get_uid(__acl_unquote(str), &cmd->c_id); + free(str); + if (error) { + *text_p = backup; +@@ -245,7 +245,7 @@ user_entry: + str = get_token(text_p); + if (str) { + cmd->c_tag = ACL_GROUP; +- error = get_gid(unquote(str), &cmd->c_id); ++ error = get_gid(__acl_unquote(str), &cmd->c_id); + free(str); + if (error) { + *text_p = backup; +@@ -466,7 +466,7 @@ read_acl_comments( + if (strncmp(cp, "file:", 5) == 0) { + cp += 5; + SKIP_WS(cp); +- cp = unquote(cp); ++ cp = __acl_unquote(cp); + + if (path_p) { + if (*path_p) +@@ -483,7 +483,7 @@ read_acl_comments( + if (uid_p) { + if (*uid_p != ACL_UNDEFINED_ID) + goto fail; +- if (get_uid(unquote(cp), uid_p) != 0) ++ if (get_uid(__acl_unquote(cp), uid_p) != 0) + continue; + } + } else if (strncmp(cp, "group:", 6) == 0) { +@@ -493,7 +493,7 @@ read_acl_comments( + if (gid_p) { + if (*gid_p != ACL_UNDEFINED_ID) + goto fail; +- if (get_gid(unquote(cp), gid_p) != 0) ++ if (get_gid(__acl_unquote(cp), gid_p) != 0) + continue; + } + } else if (strncmp(cp, "flags:", 6) == 0) { +diff --git a/setfacl/setfacl.c b/setfacl/setfacl.c +index 81062a6..fb2d172 100644 +--- a/setfacl/setfacl.c ++++ b/setfacl/setfacl.c +@@ -92,7 +92,7 @@ int promote_warning; + + static const char *xquote(const char *str, const char *quote_chars) + { +- const char *q = quote(str, quote_chars); ++ const char *q = __acl_quote(str, quote_chars); + if (q == NULL) { + fprintf(stderr, "%s: %s\n", progname, strerror(errno)); + exit(1); +@@ -311,7 +311,7 @@ int next_file(const char *arg, seq_t seq) + args.seq = seq; + + if (strcmp(arg, "-") == 0) { +- while ((line = next_line(stdin))) ++ while ((line = __acl_next_line(stdin))) + errors = walk_tree(line, walk_flags, 0, do_set, &args); + if (!feof(stdin)) { + fprintf(stderr, _("%s: Standard input: %s\n"), +-- +2.6.2 + diff --git a/buildroot/package/acl/0003-all-use-install-1-to-install-executables.patch b/buildroot/package/acl/0003-all-use-install-1-to-install-executables.patch new file mode 100644 index 0000000..9640dd8 --- /dev/null +++ b/buildroot/package/acl/0003-all-use-install-1-to-install-executables.patch @@ -0,0 +1,67 @@ +From d3bd7b29b79147b4155e78a8ea06ded98b91f92a Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 8 May 2018 15:23:57 +0200 +Subject: [PATCH] all: use install(1) to install executables + +When the destination file already exists, the current install script +will overwrite it with the new executable. + +However, when the existing executable is a symlink or hardlink to +something else, like busybox, this effectively overwrites that something +with the new executable, and thus replaces busybox and all its applets +with the code for either of the three commands. + +We fix that by simply calling install(1). install(1) is sufficiently +widespread that we don't bother checking for it, as tis is just a +workaround while waiting for the version bump that will eventually fix +it for good. + +Signed-off-by: "Yann E. MORIN" +--- + chacl/Makefile | 4 ++-- + getfacl/Makefile | 4 ++-- + setfacl/Makefile | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/chacl/Makefile b/chacl/Makefile +index 33858d6..c857329 100644 +--- a/chacl/Makefile ++++ b/chacl/Makefile +@@ -30,6 +30,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +diff --git a/getfacl/Makefile b/getfacl/Makefile +index 7fbafda..8ac63e0 100644 +--- a/getfacl/Makefile ++++ b/getfacl/Makefile +@@ -31,6 +31,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +diff --git a/setfacl/Makefile b/setfacl/Makefile +index c44e7c0..eea2ede 100644 +--- a/setfacl/Makefile ++++ b/setfacl/Makefile +@@ -31,6 +31,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +-- +2.14.1 + diff --git a/buildroot/package/acl/Config.in b/buildroot/package/acl/Config.in new file mode 100644 index 0000000..92f2251 --- /dev/null +++ b/buildroot/package/acl/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ACL + bool "acl" + select BR2_PACKAGE_ATTR + help + POSIX Access Control Lists, which are used to define more + fine-grained discretionary access rights for files and + directories. + This package also provides libacl. + + http://savannah.nongnu.org/projects/acl diff --git a/buildroot/package/acl/acl.hash b/buildroot/package/acl/acl.hash new file mode 100644 index 0000000..3f9d790 --- /dev/null +++ b/buildroot/package/acl/acl.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 179074bb0580c06c4b4137be4c5a92a701583277967acdb5546043c7874e0d23 acl-2.2.52.src.tar.gz diff --git a/buildroot/package/acl/acl.mk b/buildroot/package/acl/acl.mk new file mode 100644 index 0000000..4d30059 --- /dev/null +++ b/buildroot/package/acl/acl.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# acl +# +################################################################################ + +ACL_VERSION = 2.2.52 +ACL_SOURCE = acl-$(ACL_VERSION).src.tar.gz +ACL_SITE = http://download.savannah.gnu.org/releases/acl +ACL_INSTALL_STAGING = YES +ACL_DEPENDENCIES = attr +ACL_CONF_OPTS = --enable-gettext=no +ACL_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +ACL_LICENSE_FILES = doc/COPYING doc/COPYING.LGPL + +# While the configuration system uses autoconf, the Makefiles are +# hand-written and do not use automake. Therefore, we have to hack +# around their deficiencies by: +# - explicitly passing CFLAGS (LDFLAGS are passed on from configure, +# CFLAGS are not). +# - explicitly passing the installation prefix, not using DESTDIR. + +ACL_MAKE_ENV = CFLAGS="$(TARGET_CFLAGS)" + +ACL_INSTALL_STAGING_OPTS = \ + prefix=$(STAGING_DIR)/usr \ + exec_prefix=$(STAGING_DIR)/usr \ + PKG_DEVLIB_DIR=$(STAGING_DIR)/usr/lib \ + install-dev install-lib + +ACL_INSTALL_TARGET_OPTS = \ + prefix=$(TARGET_DIR)/usr \ + exec_prefix=$(TARGET_DIR)/usr \ + install install-lib + +# The libdir variable in libacl.la is empty, so let's fix it. This is +# probably due to acl not using automake, and not doing fully the +# right thing with libtool. +define ACL_FIX_LIBTOOL_LA_LIBDIR + $(SED) "s,libdir=.*,libdir='$(STAGING_DIR)'," \ + $(STAGING_DIR)/usr/lib/libacl.la +endef + +ACL_POST_INSTALL_STAGING_HOOKS += ACL_FIX_LIBTOOL_LA_LIBDIR + +HOST_ACL_DEPENDENCIES = host-attr +HOST_ACL_CONF_OPTS = --enable-gettext=no +HOST_ACL_MAKE_ENV = CFLAGS="$(HOST_CFLAGS)" +HOST_ACL_INSTALL_OPTS = \ + prefix=$(HOST_DIR) \ + exec_prefix=$(HOST_DIR) \ + PKG_DEVLIB_DIR=$(HOST_DIR)/lib \ + install-dev install-lib +# For the host, libacl.la is correct, no fixup needed. + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/acpica/0001-build-do-not-use-Werror.patch b/buildroot/package/acpica/0001-build-do-not-use-Werror.patch new file mode 100644 index 0000000..e7449e9 --- /dev/null +++ b/buildroot/package/acpica/0001-build-do-not-use-Werror.patch @@ -0,0 +1,67 @@ +From 9382ae2431d2962c430e7149302c8690f5bc159c Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 10 Jul 2016 15:06:15 +0200 +Subject: [PATCH] build: do not use -Werror + +Warnings come and go with various compiler versions, so using -Werror is +prone to cause build failures with various compiler versions, especially +newer versions that introduce new warnings. + +Remove use of -Werror. + +[Vincent: tweak patch for 20170531 release] + +Signed-off-by: "Yann E. MORIN" +Signed-off-by: "Vicente Olivert Riera" +--- + generate/unix/Makefile.config | 1 - + generate/unix/iasl/Makefile | 12 ++++++------ + 2 files changed, 6 insertions(+), 7 deletions(-) + +diff --git a/generate/unix/Makefile.config b/generate/unix/Makefile.config +index 4d4f182..a7120e3 100644 +--- a/generate/unix/Makefile.config ++++ b/generate/unix/Makefile.config +@@ -194,7 +194,6 @@ CWARNINGFLAGS = \ + -Wall\ + -Wbad-function-cast\ + -Wdeclaration-after-statement\ +- -Werror\ + -Wformat=2\ + -Wmissing-declarations\ + -Wmissing-prototypes\ +diff --git a/generate/unix/iasl/Makefile b/generate/unix/iasl/Makefile +index 156c23a..28ffc06 100644 +--- a/generate/unix/iasl/Makefile ++++ b/generate/unix/iasl/Makefile +@@ -335,24 +335,24 @@ $(OBJDIR)/prparserparse.c $(OBJDIR)/prparser.y.h : $(ASL_COMPILER)/prparse + # + $(OBJDIR)/aslcompilerlex.o : $(OBJDIR)/aslcompilerlex.c + @echo "- " "Intermediate" $< +- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< ++ @$(CC) -c $(CFLAGS) -Wall -o$@ $< + + $(OBJDIR)/aslcompilerparse.o : $(OBJDIR)/aslcompilerparse.c + @echo "- " "Intermediate" $< +- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< ++ @$(CC) -c $(CFLAGS) -Wall -o$@ $< + + $(OBJDIR)/dtparserlex.o : $(OBJDIR)/dtparserlex.c + @echo "- " "Intermediate" $< +- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< ++ @$(CC) -c $(CFLAGS) -Wall -o$@ $< + + $(OBJDIR)/dtparserparse.o : $(OBJDIR)/dtparserparse.c + @echo "- " "Intermediate" $< +- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< ++ @$(CC) -c $(CFLAGS) -Wall -o$@ $< + + $(OBJDIR)/prparserlex.o : $(OBJDIR)/prparserlex.c + @echo "- " "Intermediate" $< +- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< ++ @$(CC) -c $(CFLAGS) -Wall -o$@ $< + + $(OBJDIR)/prparserparse.o : $(OBJDIR)/prparserparse.c + @echo "- " "Intermediate" $< +- @$(CC) -c $(CFLAGS) -Wall -Werror -o$@ $< ++ @$(CC) -c $(CFLAGS) -Wall -o$@ $< diff --git a/buildroot/package/acpica/Config.in b/buildroot/package/acpica/Config.in new file mode 100644 index 0000000..c5ffb00 --- /dev/null +++ b/buildroot/package/acpica/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ACPICA + bool "acpica" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The ACPI Component Architecture (ACPICA) project provides an + operating system (OS)-independent reference implementation + of the Advanced Configuration and Power Interface + Specification (ACPI). + + https://www.acpica.org + +comment "acpica needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/acpica/acpica.hash b/buildroot/package/acpica/acpica.hash new file mode 100644 index 0000000..4942fe4 --- /dev/null +++ b/buildroot/package/acpica/acpica.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 0b979b778bcf711a2b8702b1831affd7dac4a776235d7877fd185651b6a390a3 acpica-unix2-20170531.tar.gz diff --git a/buildroot/package/acpica/acpica.mk b/buildroot/package/acpica/acpica.mk new file mode 100644 index 0000000..57cc37f --- /dev/null +++ b/buildroot/package/acpica/acpica.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# acpica +# +################################################################################ + +ACPICA_VERSION = 20170531 +ACPICA_SOURCE = acpica-unix2-$(ACPICA_VERSION).tar.gz +ACPICA_SITE = https://acpica.org/sites/acpica/files +ACPICA_LICENSE = BSD-3-Clause or GPL-2.0 +ACPICA_LICENSE_FILES = source/include/acpi.h +ACPICA_DEPENDENCIES = host-bison host-flex + +define ACPICA_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + HARDWARE_NAME=$(BR2_ARCH) HOST=_LINUX CC="$(TARGET_CC)" \ + all +endef + +define HOST_ACPICA_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + all +endef + +define ACPICA_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + HARDWARE_NAME=$(BR2_ARCH) DESTDIR="$(TARGET_DIR)" \ + INSTALLFLAGS=-m755 install +endef + +define HOST_ACPICA_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX="$(HOST_DIR)" \ + INSTALLFLAGS=-m755 install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/acpid/0001-dont-use-isfdtype.patch b/buildroot/package/acpid/0001-dont-use-isfdtype.patch new file mode 100644 index 0000000..2fe6c21 --- /dev/null +++ b/buildroot/package/acpid/0001-dont-use-isfdtype.patch @@ -0,0 +1,20 @@ +Partially roll back upstream commit 4711119089e1ad08dad206f4fded68f1972fdeed +since released versions of uClibc don't support isfdtype(). + +Signed-off-by: Gustavo Zaarias + +diff -Nura acpid-2.0.22.orig/sock.c acpid-2.0.22/sock.c +--- acpid-2.0.22.orig/sock.c 2014-04-22 18:04:19.706841764 -0300 ++++ acpid-2.0.22/sock.c 2014-04-22 18:05:08.285479625 -0300 +@@ -53,7 +53,10 @@ + int + is_socket(int fd) + { +- return (isfdtype(fd, S_IFSOCK) == 1); ++ int v; ++ socklen_t l = sizeof(int); ++ ++ return (getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&v, &l) == 0); + } + + /* accept a new client connection */ diff --git a/buildroot/package/acpid/0002-add-missing-defines.patch b/buildroot/package/acpid/0002-add-missing-defines.patch new file mode 100644 index 0000000..a853159 --- /dev/null +++ b/buildroot/package/acpid/0002-add-missing-defines.patch @@ -0,0 +1,40 @@ +Add missing MSG_CMSG_CLOEXEC + +Unpatched uClibc toolchains, even using the latest 0.9.33.2, do not +have the MSG_CMSG_CLOEXEC definition. Even though the Buildroot +internal toolchain backend has a uClibc patch to provide it, it +doesn't apply to external toolchains. This patch provides the +definition of MSG_CMSG_CLOEXEC. + +Signed-off-by: Thomas Petazzoni + +Index: b/libnetlink.h +=================================================================== +--- a/libnetlink.h ++++ b/libnetlink.h +@@ -7,6 +7,10 @@ + #include + #include + ++#ifndef MSG_CMSG_CLOEXEC ++#define MSG_CMSG_CLOEXEC 0x40000000 ++#endif ++ + struct rtnl_handle + { + int fd; +Index: b/kacpimon/libnetlink.h +=================================================================== +--- a/kacpimon/libnetlink.h ++++ b/kacpimon/libnetlink.h +@@ -7,6 +7,10 @@ + #include + #include + ++#ifndef MSG_CMSG_CLOEXEC ++#define MSG_CMSG_CLOEXEC 0x40000000 ++#endif ++ + struct rtnl_handle + { + int fd; diff --git a/buildroot/package/acpid/Config.in b/buildroot/package/acpid/Config.in new file mode 100644 index 0000000..2bd83ea --- /dev/null +++ b/buildroot/package/acpid/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_ACPID + bool "acpid" + depends on BR2_x86_64 || BR2_i386 + help + Advanced Configuration and Power Interface event daemon. + + Acpid is designed to notify user-space programs of ACPI + events, and allows you to configure specific actions for + specific events. + + http://sourceforge.net/projects/acpid2/ diff --git a/buildroot/package/acpid/S02acpid b/buildroot/package/acpid/S02acpid new file mode 100755 index 0000000..e8d3661 --- /dev/null +++ b/buildroot/package/acpid/S02acpid @@ -0,0 +1,22 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting acpid: " + start-stop-daemon -S -q -m -b -p /var/run/acpid.pid --exec /usr/sbin/acpid -- -n + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping acpid: " + start-stop-daemon -K -q -p /var/run/acpid.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + "$0" stop + sleep 1 + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + ;; +esac diff --git a/buildroot/package/acpid/acpid.hash b/buildroot/package/acpid/acpid.hash new file mode 100644 index 0000000..9cf91d9 --- /dev/null +++ b/buildroot/package/acpid/acpid.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/acpid2/files/ +md5 0432407b5ff75ae8e08afb43052fde2b acpid-2.0.28.tar.xz +sha1 a5cb34d53eb6965293c436db23dc81550273975b acpid-2.0.28.tar.xz diff --git a/buildroot/package/acpid/acpid.mk b/buildroot/package/acpid/acpid.mk new file mode 100644 index 0000000..2141a1a --- /dev/null +++ b/buildroot/package/acpid/acpid.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# acpid +# +################################################################################ + +ACPID_VERSION = 2.0.28 +ACPID_SOURCE = acpid-$(ACPID_VERSION).tar.xz +ACPID_SITE = http://downloads.sourceforge.net/project/acpid2 +ACPID_LICENSE = GPL-2.0+ +ACPID_LICENSE_FILES = COPYING + +define ACPID_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/acpid/S02acpid \ + $(TARGET_DIR)/etc/init.d/S02acpid +endef + +define ACPID_SET_EVENTS + mkdir -p $(TARGET_DIR)/etc/acpi/events + printf "event=button[ /]power\naction=/sbin/poweroff\n" \ + >$(TARGET_DIR)/etc/acpi/events/powerbtn +endef + +ACPID_POST_INSTALL_TARGET_HOOKS += ACPID_SET_EVENTS + +$(eval $(autotools-package)) diff --git a/buildroot/package/acpitool/Config.in b/buildroot/package/acpitool/Config.in new file mode 100644 index 0000000..a6f082c --- /dev/null +++ b/buildroot/package/acpitool/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_ACPITOOL + bool "acpitool" + depends on !BR2_bfin + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + help + A small, convenient command-line ACPI client with a lot of + features for Linux + + http://acpitool.sourceforge.net + +comment "acpitool needs a toolchain w/ threads, C++, dynamic library" + depends on !BR2_bfin + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/acpitool/acpitool.hash b/buildroot/package/acpitool/acpitool.hash new file mode 100644 index 0000000..e25dc54 --- /dev/null +++ b/buildroot/package/acpitool/acpitool.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 004fb6cd43102918b6302cf537a2db7ceadda04aef2e0906ddf230f820dad34f acpitool-0.5.1.tar.bz2 diff --git a/buildroot/package/acpitool/acpitool.mk b/buildroot/package/acpitool/acpitool.mk new file mode 100644 index 0000000..547da37 --- /dev/null +++ b/buildroot/package/acpitool/acpitool.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# acpitool +# +################################################################################ + +ACPITOOL_VERSION = 0.5.1 +ACPITOOL_SOURCE = acpitool-$(ACPITOOL_VERSION).tar.bz2 +ACPITOOL_SITE = http://downloads.sourceforge.net/sourceforge/acpitool +ACPITOOL_LICENSE = GPL-2.0+ +ACPITOOL_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/acsccid/Config.in b/buildroot/package/acsccid/Config.in new file mode 100644 index 0000000..90624ee --- /dev/null +++ b/buildroot/package/acsccid/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_ACSCCID + bool "acsccid" + depends on BR2_TOOLCHAIN_HAS_THREADS # pcsc-lite, libusb + depends on BR2_USE_MMU # pcsc-lite + depends on !BR2_STATIC_LIBS # pcsc-lite + select BR2_PACKAGE_PCSC_LITE + # Even though there is a --disable-libusb option, it has in + # fact no effect, and acsccid really requires libusb. + select BR2_PACKAGE_LIBUSB + help + acsccid is a PC/SC driver for Linux/Mac OS X and it supports + ACS CCID smart card readers. + + http://acsccid.sourceforge.net/ + +comment "acsccid needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/acsccid/acsccid.hash b/buildroot/package/acsccid/acsccid.hash new file mode 100644 index 0000000..24d2fa7 --- /dev/null +++ b/buildroot/package/acsccid/acsccid.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/acsccid/files/acsccid/1.1.4/ +sha1 8c0b42ff79032289731916d18a2698b258dfd6a2 acsccid-1.1.4.tar.bz2 +md5 ac77b3aeae0a11723c96c7f98769490e acsccid-1.1.4.tar.bz2 diff --git a/buildroot/package/acsccid/acsccid.mk b/buildroot/package/acsccid/acsccid.mk new file mode 100644 index 0000000..06a0418 --- /dev/null +++ b/buildroot/package/acsccid/acsccid.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# acsccid +# +################################################################################ + +ACSCCID_VERSION = 1.1.4 +ACSCCID_SOURCE = acsccid-$(ACSCCID_VERSION).tar.bz2 +ACSCCID_SITE = http://downloads.sourceforge.net/acsccid +ACSCCID_LICENSE = LGPL-2.1+ +ACSCCID_LICENSE_FILES = COPYING +ACSCCID_INSTALL_STAGING = YES +ACSCCID_DEPENDENCIES = pcsc-lite host-flex host-pkgconf libusb + +$(eval $(autotools-package)) diff --git a/buildroot/package/adwaita-icon-theme/Config.in b/buildroot/package/adwaita-icon-theme/Config.in new file mode 100644 index 0000000..d200570 --- /dev/null +++ b/buildroot/package/adwaita-icon-theme/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_ADWAITA_ICON_THEME + bool "adwaita icon theme" + depends on BR2_PACKAGE_LIBGTK2 || BR2_PACKAGE_LIBGTK3 + help + Adwaita icon theme diff --git a/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.hash b/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.hash new file mode 100644 index 0000000..61b5f14 --- /dev/null +++ b/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/adwaita-icon-theme/3.22/adwaita-icon-theme-3.22.0.sha256sum +sha256 c18bf6e26087d9819a962c77288b291efab25d0419b73d909dd771716a45dcb7 adwaita-icon-theme-3.22.0.tar.xz diff --git a/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.mk b/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.mk new file mode 100644 index 0000000..8c9dec1 --- /dev/null +++ b/buildroot/package/adwaita-icon-theme/adwaita-icon-theme.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# adwaita-icon-theme +# +################################################################################ + +ADWAITA_ICON_THEME_VERSION_MAJOR = 3.22 +ADWAITA_ICON_THEME_VERSION = $(ADWAITA_ICON_THEME_VERSION_MAJOR).0 +ADWAITA_ICON_THEME_SITE = http://ftp.gnome.org/pub/gnome/sources/adwaita-icon-theme/$(ADWAITA_ICON_THEME_VERSION_MAJOR) +ADWAITA_ICON_THEME_SOURCE = adwaita-icon-theme-$(ADWAITA_ICON_THEME_VERSION).tar.xz +ADWAITA_ICON_THEME_INSTALL_STAGING = YES +ADWAITA_ICON_THEME_LICENSE = LGPL-3.0 or CC-BY-SA-3.0 +ADWAITA_ICON_THEME_LICENSE_FILES = COPYING COPYING_LGPL COPYING_CCBYSA3 +ADWAITA_ICON_THEME_DEPENDENCIES = host-intltool host-libgtk3 + +$(eval $(autotools-package)) diff --git a/buildroot/package/aer-inject/Config.in b/buildroot/package/aer-inject/Config.in new file mode 100644 index 0000000..7c737d4 --- /dev/null +++ b/buildroot/package/aer-inject/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AER_INJECT + bool "aer-inject" + help + aer-inject allows to inject PCIE AER errors on the software + level into a running Linux kernel. This is intended for + validation of the PCIE driver error recovery handler and + PCIE AER core handler. + + Requires a new Linux kernel with PCIE AER error injection + patches. + + https://git.kernel.org/cgit/linux/kernel/git/gong.chen/aer-inject.git/ diff --git a/buildroot/package/aer-inject/aer-inject.hash b/buildroot/package/aer-inject/aer-inject.hash new file mode 100644 index 0000000..6329de6 --- /dev/null +++ b/buildroot/package/aer-inject/aer-inject.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 49a44b7a9e3983dc15fdc5bacd0e095df650296024f43f9d6c080ad54de0b07f aer-inject-9bd5e2c7886fca72f139cd8402488a2235957d41.tar.gz diff --git a/buildroot/package/aer-inject/aer-inject.mk b/buildroot/package/aer-inject/aer-inject.mk new file mode 100644 index 0000000..72495bb --- /dev/null +++ b/buildroot/package/aer-inject/aer-inject.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# aer-inject +# +################################################################################ + +AER_INJECT_VERSION = 9bd5e2c7886fca72f139cd8402488a2235957d41 +AER_INJECT_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/gong.chen/aer-inject.git +AER_INJECT_LICENSE = GPL-2.0 +AER_INJECT_LICENSE_FILES = README +AER_INJECT_DEPENDENCIES = host-flex host-bison + +define AER_INJECT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define AER_INJECT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) PREFIX=/usr/bin install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/aespipe/Config.in b/buildroot/package/aespipe/Config.in new file mode 100644 index 0000000..2c2ff5c --- /dev/null +++ b/buildroot/package/aespipe/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_AESPIPE + bool "aespipe" + depends on BR2_USE_MMU # fork() + help + aespipe program is AES encrypting or decrypting pipe. It reads + from standard input and writes to standard output. It can be + used to create and restore encrypted tar or cpio archives. + It can be used to encrypt and decrypt loop-AES compatible + encrypted disk images. + + http://koti.tnnet.fi/jari.ruusu/linux/ diff --git a/buildroot/package/aespipe/Config.in.host b/buildroot/package/aespipe/Config.in.host new file mode 100644 index 0000000..b64868c --- /dev/null +++ b/buildroot/package/aespipe/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_AESPIPE + bool "host aespipe" + help + aespipe program is AES encrypting or decrypting pipe. It + reads from standard input and writes to standard output. It + can be used to create and restore encrypted tar or cpio + archives. It can be used to encrypt and decrypt loop-AES + compatible encrypted disk images. + + http://koti.tnnet.fi/jari.ruusu/linux/ diff --git a/buildroot/package/aespipe/aespipe.hash b/buildroot/package/aespipe/aespipe.hash new file mode 100644 index 0000000..cc7640a --- /dev/null +++ b/buildroot/package/aespipe/aespipe.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 c5ce656e0ade49b93e1163ec7b35450721d5743d8d804ad3a9e39add0389e50f aespipe-v2.4d.tar.bz2 diff --git a/buildroot/package/aespipe/aespipe.mk b/buildroot/package/aespipe/aespipe.mk new file mode 100644 index 0000000..5ef95d5 --- /dev/null +++ b/buildroot/package/aespipe/aespipe.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# aespipe +# +################################################################################ + +AESPIPE_VERSION = 2.4d +AESPIPE_SOURCE = aespipe-v$(AESPIPE_VERSION).tar.bz2 +AESPIPE_SITE = http://loop-aes.sourceforge.net/aespipe +AESPIPE_LICENSE = GPL + +# Recent Debian, Gentoo and Ubuntu enable -fPIE by default, breaking the build: +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=837393 +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835148 +# Older gcc versions however don't support the -no-pie flag, so we have to +# check its availability. +HOST_AESPIPE_NO_PIE_FLAG = $(call host-cc-option,-no-pie) +HOST_AESPIPE_CONF_ENV = \ + CFLAGS="$(HOST_CFLAGS) $(HOST_AESPIPE_NO_PIE_FLAG)" \ + LDFLAGS="$(HOST_LDFLAGS) $(HOST_AESPIPE_NO_PIE_FLAG)" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/agentpp/Config.in b/buildroot/package/agentpp/Config.in new file mode 100644 index 0000000..8c6b11d --- /dev/null +++ b/buildroot/package/agentpp/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_AGENTPP + bool "agent++" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # snmp++ + depends on !BR2_STATIC_LIBS # snmp++ + select BR2_PACKAGE_SNMPPP + help + AGENT++ is a set of C++ classes which provides a complete + protocol engine and dispatch table for the development of + SNMP agents. AGENT++ is a multilingual API which supports + SNMPv1, SNMPv2c, and SNMPv3. It provides various C++ classes + implementing prototypes for scalar and table SNMP managed + objects that can be customized by derivation. Additional + classes support the development of proxy agents as well as + sending notifications. + + SNMPv3 support is enabled if SNMP++ enables it. + + http://www.agentpp.com/agentpp3_5/agentpp3_5.html + +comment "agent++ needs a toolchain w/ threads, C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/agentpp/agentpp.hash b/buildroot/package/agentpp/agentpp.hash new file mode 100644 index 0000000..131edc4 --- /dev/null +++ b/buildroot/package/agentpp/agentpp.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 6775fa2a038801edddedc148d7846427ddc4d438e3bb33362d9eec6074918a88 agent++-4.0.7.tar.gz diff --git a/buildroot/package/agentpp/agentpp.mk b/buildroot/package/agentpp/agentpp.mk new file mode 100644 index 0000000..12cf208 --- /dev/null +++ b/buildroot/package/agentpp/agentpp.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# agentpp +# +################################################################################ + +AGENTPP_VERSION = 4.0.7 +AGENTPP_SOURCE = agent++-$(AGENTPP_VERSION).tar.gz +AGENTPP_SITE = http://www.agentpp.com/download +AGENTPP_LICENSE = Apache-2.0 +AGENTPP_LICENSE_FILES = LICENSE-2_0.txt +AGENTPP_INSTALL_STAGING = YES +AGENTPP_DEPENDENCIES = host-pkgconf snmppp +AGENTPP_CONF_OPTS += \ + --disable-proxy \ + --disable-forwarder \ + --disable-rpath + +$(eval $(autotools-package)) diff --git a/buildroot/package/aircrack-ng/0001-stack-protector.patch b/buildroot/package/aircrack-ng/0001-stack-protector.patch new file mode 100644 index 0000000..5f2bd1b --- /dev/null +++ b/buildroot/package/aircrack-ng/0001-stack-protector.patch @@ -0,0 +1,58 @@ +Added option to disable stack-protector support auto-detection in gcc. + +Downloaded from upstream commit: +http://trac.aircrack-ng.org/changeset/2889/ + +Signed-off-by: Bernd Kuhls + +Index: /trunk/INSTALLING +=================================================================== +--- trunk/INSTALLING (revision 2888) ++++ trunk/INSTALLING (revision 2889) +@@ -83,4 +83,6 @@ + * macport: Set this flag to true to compile on OS X with macports. + ++* stackprotector: Allows to enable/disable auto-detection of stack-protector support in gcc ++ + Example: + +Index: /trunk/common.mak +=================================================================== +--- trunk/common.mak (revision 2888) ++++ trunk/common.mak (revision 2889) +@@ -64,4 +64,13 @@ + ifeq ($(PCRE), true) + COMMON_CFLAGS += $(shell $(PKG_CONFIG) --cflags libpcre) -DHAVE_PCRE ++endif ++ ++STACK_PROTECTOR = true ++ifeq ($(stackprotector), false) ++ STACK_PROTECTOR = false ++endif ++ ++ifeq ($(STACKPROTECTOR), false) ++ STACK_PROTECTOR = false + endif + +@@ -235,12 +244,14 @@ + endif + +-ifeq ($(GCC_OVER49), 0) +- ifeq ($(GCC_OVER41), 1) +- COMMON_CFLAGS += -fstack-protector ++ifeq ($(STACK_PROTECTOR), true) ++ ifeq ($(GCC_OVER49), 0) ++ ifeq ($(GCC_OVER41), 1) ++ COMMON_CFLAGS += -fstack-protector ++ endif + endif +-endif +- +-ifeq ($(GCC_OVER49), 1) +- COMMON_CFLAGS += -fstack-protector-strong ++ ++ ifeq ($(GCC_OVER49), 1) ++ COMMON_CFLAGS += -fstack-protector-strong ++ endif + endif + diff --git a/buildroot/package/aircrack-ng/Config.in b/buildroot/package/aircrack-ng/Config.in new file mode 100644 index 0000000..12fda1c --- /dev/null +++ b/buildroot/package/aircrack-ng/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_AIRCRACK_NG + bool "aircrack-ng" + depends on BR2_USE_MMU # uses fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + # libnl has issues when linking statically + # they need fixing in libnl itself + select BR2_PACKAGE_LIBNL if !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + A set of tools for auditing wireless networks + + For complete functionality, also select ethtool, iw, + util-linux (utilities and rfkill), and wireless_tools. + + http://www.aircrack-ng.org/ + +comment "aircrack-ng needs a toolchain w/ threads, C++" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/aircrack-ng/aircrack-ng.hash b/buildroot/package/aircrack-ng/aircrack-ng.hash new file mode 100644 index 0000000..e210ad2 --- /dev/null +++ b/buildroot/package/aircrack-ng/aircrack-ng.hash @@ -0,0 +1,3 @@ +# From http://www.aircrack-ng.org/downloads.html +sha1 2b2fbe50fedb606b3bd96a34d49f07760e8e618a aircrack-ng-1.2-rc4.tar.gz +md5 3bbc7d5035a98ec01e78774d05c3fcce aircrack-ng-1.2-rc4.tar.gz diff --git a/buildroot/package/aircrack-ng/aircrack-ng.mk b/buildroot/package/aircrack-ng/aircrack-ng.mk new file mode 100644 index 0000000..6b384c0 --- /dev/null +++ b/buildroot/package/aircrack-ng/aircrack-ng.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# aircrack-ng +# +################################################################################ + +AIRCRACK_NG_VERSION = 1.2-rc4 +AIRCRACK_NG_SITE = http://download.aircrack-ng.org +AIRCRACK_NG_LICENSE = GPL-2.0+ +AIRCRACK_NG_LICENSE_FILES = LICENSE +AIRCRACK_NG_DEPENDENCIES = openssl zlib host-pkgconf +# Enable buddy-ng, easside-ng, tkiptun-ng, wesside-ng +AIRCRACK_NG_MAKE_OPTS = unstable=true + +# Account for libpthread in static +AIRCRACK_NG_LDFLAGS = $(TARGET_LDFLAGS) \ + $(if $(BR2_STATIC_LIBS),-lpthread -lz) + +# libnl support has issues when building static +ifeq ($(BR2_STATIC_LIBS),y) +AIRCRACK_NG_MAKE_OPTS += libnl=false +else +AIRCRACK_NG_MAKE_OPTS += libnl=true +AIRCRACK_NG_DEPENDENCIES += libnl +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y) +AIRCRACK_NG_MAKE_OPTS += STACK_PROTECTOR=true +else +AIRCRACK_NG_MAKE_OPTS += STACK_PROTECTOR=false +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +AIRCRACK_NG_DEPENDENCIES += libpcap +AIRCRACK_NG_MAKE_OPTS += HAVE_PCAP=yes \ + $(if $(BR2_STATIC_LIBS),LIBPCAP="-lpcap `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`") +else +AIRCRACK_NG_MAKE_OPTS += HAVE_PCAP=no +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +AIRCRACK_NG_DEPENDENCIES += pcre +AIRCRACK_NG_MAKE_OPTS += pcre=true +else +AIRCRACK_NG_MAKE_OPTS += pcre=false +endif + +# Duplicate -lpthread, because it is also needed by sqlite +ifeq ($(BR2_PACKAGE_SQLITE),y) +AIRCRACK_NG_DEPENDENCIES += sqlite +AIRCRACK_NG_MAKE_OPTS += sqlite=true LIBSQL="-lsqlite3 $(if $(BR2_STATIC_LIBS),-lpthread)" +else +AIRCRACK_NG_MAKE_OPTS += sqlite=false +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +AIRCRACK_NG_MAKE_OPTS += NEWSSE=true +else +AIRCRACK_NG_MAKE_OPTS += NEWSSE=false +endif + +define AIRCRACK_NG_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) LDFLAGS="$(AIRCRACK_NG_LDFLAGS)" \ + $(MAKE) -C $(@D) $(AIRCRACK_NG_MAKE_OPTS) +endef + +define AIRCRACK_NG_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \ + prefix=/usr $(AIRCRACK_NG_MAKE_OPTS) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/alljoyn-base/Config.in b/buildroot/package/alljoyn-base/Config.in new file mode 100644 index 0000000..8556d66 --- /dev/null +++ b/buildroot/package/alljoyn-base/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_ALLJOYN_BASE + bool "alljoyn-base" + depends on BR2_USE_MMU # alljoyn + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # alljoyn + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # alljoyn + select BR2_PACKAGE_ALLJOYN + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL if \ + !BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION && \ + !BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING + help + + AllJoyn Base Services are common services used by many + devices, providing a set of interfaces for different devices + to interact and interoperate with one another. + + https://allseenalliance.org + +if BR2_PACKAGE_ALLJOYN_BASE + +config BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL + bool "controlpanel" + help + Enable AllJoyn Control Panel base service which allows + devices to advertise a virtual control panel to be + controlled remotely. + +config BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION + bool "notification" + help + Enable AllJoyn Notification base service which allows + text-based notifications to be sent and received by devices + on the AllJoyn network. Also supports audio and images via + URLs. + +config BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING + bool "onboarding" + help + Enable AllJoyn Onboarding base service which provides a + consistent way to bring a new device onto the Wi-Fi network. + +endif # BR2_PACKAGE_ALLJOYN_BASE + +comment "alljoyn-base needs a toolchain w/ C++, threads, wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/buildroot/package/alljoyn-base/alljoyn-base.hash b/buildroot/package/alljoyn-base/alljoyn-base.hash new file mode 100644 index 0000000..dbec3a3 --- /dev/null +++ b/buildroot/package/alljoyn-base/alljoyn-base.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 742f724b3a06c8fc4039591dba24871755728221ca5dc4afb78ebd9a7e3beb44 alljoyn-base-16.04.00.tar.gz diff --git a/buildroot/package/alljoyn-base/alljoyn-base.mk b/buildroot/package/alljoyn-base/alljoyn-base.mk new file mode 100644 index 0000000..ad19802 --- /dev/null +++ b/buildroot/package/alljoyn-base/alljoyn-base.mk @@ -0,0 +1,91 @@ +################################################################################ +# +# alljoyn-base +# +################################################################################ + +ALLJOYN_BASE_REV = 16.04 +ALLJOYN_BASE_VERSION = $(ALLJOYN_BASE_REV).00 +ALLJOYN_BASE_SITE = \ + https://mirrors.kernel.org/allseenalliance/alljoyn/$(ALLJOYN_BASE_REV) +# See https://allseenalliance.org/alliance/ip-policy +ALLJOYN_BASE_LICENSE = ISC + +ALLJOYN_BASE_DEPENDENCIES = host-scons alljoyn openssl +ALLJOYN_BASE_INSTALL_STAGING = YES + +ALLJOYN_BASE_CRYPTO = openssl + +# AllJoyn can be compiled in debug or release mode. By default, +# AllJoyn is built in debug mode. +ALLJOYN_BASE_VARIANT = release + +ALLJOYN_BASE_BINDINGS = c,cpp + +# By setting openwrt for OS and CPU, AllJoyn cross-compilation can be finely +# tuned through TARGET_xxx options. All TARGET_xxx variables must be defined +# otherwise compilation will fail. +# CROSS_COMPILE option should not be used as it works only for linux/ARM. +ALLJOYN_BASE_OS = openwrt +ALLJOYN_BASE_CPU = openwrt + +# AllJoyn install everything in this relative path +ALLJOYN_BASE_DISTDIR = \ + build/$(ALLJOYN_OS)/$(ALLJOYN_CPU)/$(ALLJOYN_VARIANT)/dist + +ALLJOYN_BASE_SCONS_OPTS = \ + -j$(PARALLEL_JOBS) \ + V=1 \ + OS=$(ALLJOYN_BASE_OS) \ + CPU=$(ALLJOYN_BASE_CPU) \ + VARIANT=$(ALLJOYN_BASE_VARIANT) \ + BR=off \ + CRYPTO=$(ALLJOYN_BASE_CRYPTO) \ + BINDINGS=$(ALLJOYN_BASE_BINDINGS) \ + ALLJOYN_DISTDIR="$(STAGING_DIR)"\ + TARGET_CFLAGS="$(TARGET_CFLAGS)" \ + TARGET_CPPFLAGS="$(TARGET_CPPFLAGS)" \ + TARGET_LINKFLAGS="$(TARGET_LINKFLAGS)" \ + TARGET_CC="$(TARGET_CC)" \ + TARGET_CXX="$(TARGET_CXX)" \ + TARGET_LD="$(TARGET_LD)" \ + TARGET_LINK="$(TARGET_CXX)" \ + TARGET_AR="$(TARGET_AR)" \ + TARGET_RANLIB="$(TARGET_RANLIB)" \ + TARGET_PATH="$(BR_PATH)" + +ifeq ($(BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL), y) +ALLJOYN_BASE_TARGETS += controlpanel +endif + +ifeq ($(BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION), y) +ALLJOYN_BASE_TARGETS += notification +endif + +ifeq ($(BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING), y) +ALLJOYN_BASE_TARGETS += onboarding +endif + +define ALLJOYN_BASE_BUILD_CMDS + $(foreach target,$(ALLJOYN_BASE_TARGETS),\ + cd $(@D)/$(target); $(SCONS) $(ALLJOYN_BASE_SCONS_OPTS) + ) +endef + +define ALLJOYN_BASE_INSTALL_STAGING_CMDS + $(foreach target,$(ALLJOYN_BASE_TARGETS),\ + cp -a $(@D)/$(target)/$(ALLJOYN_BASE_DISTDIR)/*/lib/lib* \ + $(STAGING_DIR)/usr/lib/ + cp -a $(@D)/$(target)/$(ALLJOYN_BASE_DISTDIR)/*/inc/* \ + $(STAGING_DIR)/usr/include/ + ) +endef + +define ALLJOYN_BASE_INSTALL_TARGET_CMDS + $(foreach target,$(ALLJOYN_BASE_TARGETS),\ + cp -a $(@D)/$(target)/$(ALLJOYN_BASE_DISTDIR)/*/lib/lib* \ + $(TARGET_DIR)/usr/lib/ + ) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/alljoyn-tcl-base/Config.in b/buildroot/package/alljoyn-tcl-base/Config.in new file mode 100644 index 0000000..ebc3370 --- /dev/null +++ b/buildroot/package/alljoyn-tcl-base/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_ALLJOYN_TCL_BASE + bool "alljoyn-tcl-base" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS # alljoyn-tcl + select BR2_PACKAGE_ALLJOYN_TCL + help + AllJoyn Base Services are common services used by many + devices, providing a set of interfaces for different devices + to interact and interoperate with one another. + + Thin Client Library is designed to bring the benefits of the + AllJoyn distributed programming environment to embedded + systems. + + https://allseenalliance.org + +comment "alljoyn-tcl-base needs a toolchain w/ threads and dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.hash b/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.hash new file mode 100644 index 0000000..882839d --- /dev/null +++ b/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 741f7a71929ccd6a66bf75d2b03affc62411e229b70bb89399be9b1b2ce40629 alljoyn-base_tcl-16.04.00.tar.gz diff --git a/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.mk b/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.mk new file mode 100644 index 0000000..461cd09 --- /dev/null +++ b/buildroot/package/alljoyn-tcl-base/alljoyn-tcl-base.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# alljoyn-tcl-base +# +################################################################################ + +ALLJOYN_TCL_BASE_REV = 16.04 +ALLJOYN_TCL_BASE_VERSION = $(ALLJOYN_TCL_BASE_REV).00 +ALLJOYN_TCL_BASE_SOURCE = alljoyn-base_tcl-$(ALLJOYN_TCL_BASE_VERSION).tar.gz +ALLJOYN_TCL_BASE_SITE = \ + https://mirrors.kernel.org/allseenalliance/alljoyn/$(ALLJOYN_TCL_BASE_REV) +# See https://allseenalliance.org/alliance/ip-policy +ALLJOYN_TCL_BASE_LICENSE = ISC + +ALLJOYN_TCL_BASE_DEPENDENCIES = host-scons alljoyn-tcl +ALLJOYN_TCL_BASE_INSTALL_STAGING = YES + +# AllJoyn Base Thin Core can be compiled in debug or release mode. By default, +# AllJoyn Base Thin Core is built in debug mode. +ALLJOYN_TCL_BASE_VARIANT = release + +ALLJOYN_TCL_BASE_SCONS_OPTS = \ + -j$(PARALLEL_JOBS) \ + V=1 \ + VARIANT=$(ALLJOYN_TCL_BASE_VARIANT) \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + AJTCL_DIST=$(STAGING_DIR) \ + WS=off + +define ALLJOYN_TCL_BASE_BUILD_CMDS + cd $(@D); $(SCONS) $(ALLJOYN_TCL_BASE_SCONS_OPTS) +endef + +define ALLJOYN_TCL_BASE_INSTALL_STAGING_CMDS + cp -a $(@D)/dist/lib/lib* $(STAGING_DIR)/usr/lib/ + cp -a $(@D)/dist/include/* $(STAGING_DIR)/usr/include/ +endef + +# Only install AllJoyn Base Thin Core dynamic libraries into target directory +define ALLJOYN_TCL_BASE_INSTALL_TARGET_CMDS + cp -a $(@D)/dist/lib/lib*.so* $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/alljoyn-tcl/Config.in b/buildroot/package/alljoyn-tcl/Config.in new file mode 100644 index 0000000..fe54af0 --- /dev/null +++ b/buildroot/package/alljoyn-tcl/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_ALLJOYN_TCL + bool "alljoyn-tcl" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The AllJoyn framework defines a common way for devices and + apps to communicate with one another regardless of brands, + categories, transports, and OSes. Developers write + applications that discover nearby devices, and communicate + with each other directly and through the cloud, unleashing + new possibilities in the Internet of Things. + + AllJoyn Thin Core Library (AJTCL) is designed to bring the + benefits of the AllJoyn distributed programming environment + to embedded systems. + + https://allseenalliance.org + +comment "alljoyn-tcl needs a toolchain w/ threads and dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/alljoyn-tcl/alljoyn-tcl.hash b/buildroot/package/alljoyn-tcl/alljoyn-tcl.hash new file mode 100644 index 0000000..208d676 --- /dev/null +++ b/buildroot/package/alljoyn-tcl/alljoyn-tcl.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 da13614a9db79067937b744a87328fed84d99ba62e3de19b0ddc4a83e4b2447e ajtcl-16.04.00a-src.tar.gz diff --git a/buildroot/package/alljoyn-tcl/alljoyn-tcl.mk b/buildroot/package/alljoyn-tcl/alljoyn-tcl.mk new file mode 100644 index 0000000..cabdf89 --- /dev/null +++ b/buildroot/package/alljoyn-tcl/alljoyn-tcl.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# alljoyn-tcl +# +################################################################################ + +ALLJOYN_TCL_REV = 16.04 +ALLJOYN_TCL_VERSION = $(ALLJOYN_TCL_REV).00a +ALLJOYN_TCL_SOURCE = ajtcl-$(ALLJOYN_TCL_VERSION)-src.tar.gz +ALLJOYN_TCL_SITE = \ + https://mirrors.kernel.org/allseenalliance/alljoyn/$(ALLJOYN_TCL_REV) +# See https://allseenalliance.org/alliance/ip-policy +ALLJOYN_TCL_LICENSE = ISC + +ALLJOYN_TCL_DEPENDENCIES = host-scons +ALLJOYN_TCL_INSTALL_STAGING = YES + +# AllJoyn Thin Core can be compiled in debug or release mode. By default, +# AllJoyn Thin Core is built in debug mode. +ALLJOYN_TCL_VARIANT = release + +ALLJOYN_TCL_SCONS_OPTS = \ + -j$(PARALLEL_JOBS) \ + V=1 \ + VARIANT=$(ALLJOYN_TCL_VARIANT) \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" + +define ALLJOYN_TCL_BUILD_CMDS + cd $(@D); $(SCONS) $(ALLJOYN_TCL_SCONS_OPTS) +endef + +define ALLJOYN_TCL_INSTALL_STAGING_CMDS + cp -a $(@D)/dist/lib/lib* $(STAGING_DIR)/usr/lib/ + cp -a $(@D)/dist/include/* $(STAGING_DIR)/usr/include/ +endef + +# Only install AllJoyn Thin Core dynamic libraries into target directory +define ALLJOYN_TCL_INSTALL_TARGET_CMDS + cp -a $(@D)/dist/lib/lib*.so* $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/alljoyn/0001-UARTStreamLinux-fix-build-on-sparc.patch b/buildroot/package/alljoyn/0001-UARTStreamLinux-fix-build-on-sparc.patch new file mode 100644 index 0000000..efca67f --- /dev/null +++ b/buildroot/package/alljoyn/0001-UARTStreamLinux-fix-build-on-sparc.patch @@ -0,0 +1,56 @@ +From b8e35cf95184ff18bcf923f900439f56c93609db Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 16 Jul 2016 15:23:41 +0200 +Subject: [PATCH] UARTStreamLinux: fix build on sparc + +Some of the serial port highest speed are not defined on SPARC, so +alljoyn should not use them, so we add a patch to fix that. + +From: +https://git.buildroot.org/buildroot/commit/?id=c5e96d8935016456bea342db170ae6a139a8470f + +Fixes: +http://autobuild.buildroot.net/results/e5b/e5b30b5e0d86b44b97410d434b771e1fb7b18de0 + +Signed-off-by: Romain Naour +--- + common/os/posix/UARTStreamLinux.cc | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/common/os/posix/UARTStreamLinux.cc b/common/os/posix/UARTStreamLinux.cc +index c193b70..ae81d9d 100644 +--- a/common/os/posix/UARTStreamLinux.cc ++++ b/common/os/posix/UARTStreamLinux.cc +@@ -111,21 +111,29 @@ QStatus UART(const qcc::String& devName, uint32_t baud, uint8_t databits, const + speed = B2000000; + break; + ++#ifdef B2500000 + case 2500000: + speed = B2500000; + break; ++#endif + ++#ifdef B3000000 + case 3000000: + speed = B3000000; + break; ++#endif + ++#ifdef B3500000 + case 3500000: + speed = B3500000; + break; ++#endif + ++#ifdef B4000000 + case 4000000: + speed = B4000000; + break; ++#endif + + default: + QCC_LogError(ER_BAD_ARG_2, ("Invalid baud %d", baud)); +-- +2.5.5 + diff --git a/buildroot/package/alljoyn/Config.in b/buildroot/package/alljoyn/Config.in new file mode 100644 index 0000000..6eb417d --- /dev/null +++ b/buildroot/package/alljoyn/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_ALLJOYN + bool "alljoyn" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_OPENSSL + help + The AllJoyn framework defines a common way for devices and + apps to communicate with one another regardless of brands, + categories, transports, and OSes. Developers write + applications that discover nearby devices, and communicate + with each other directly and through the cloud, unleashing + new possibilities in the Internet of Things. + + https://allseenalliance.org + +comment "alljoyn needs a toolchain w/ C++, threads, wchar and dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/buildroot/package/alljoyn/alljoyn.hash b/buildroot/package/alljoyn/alljoyn.hash new file mode 100644 index 0000000..47dd0d4 --- /dev/null +++ b/buildroot/package/alljoyn/alljoyn.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 fc437d96cf1213f18048240b5d12a374b31894d21830a0a6ccf562ffa13425d5 alljoyn-16.04.00a-src.tar.gz diff --git a/buildroot/package/alljoyn/alljoyn.mk b/buildroot/package/alljoyn/alljoyn.mk new file mode 100644 index 0000000..69d5ded --- /dev/null +++ b/buildroot/package/alljoyn/alljoyn.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# alljoyn +# +################################################################################ + +ALLJOYN_REV = 16.04 +ALLJOYN_VERSION = $(ALLJOYN_REV).00a +ALLJOYN_SOURCE = alljoyn-$(ALLJOYN_VERSION)-src.tar.gz +ALLJOYN_SITE = https://mirrors.kernel.org/allseenalliance/alljoyn/$(ALLJOYN_REV) +# See https://allseenalliance.org/alliance/ip-policy +ALLJOYN_LICENSE = ISC + +ALLJOYN_DEPENDENCIES = host-scons libcap openssl +ALLJOYN_INSTALL_STAGING = YES + +ALLJOYN_CRYPTO = openssl + +# AllJoyn can be compiled in debug or release mode. By default, AllJoyn is built +# in debug mode. +ALLJOYN_VARIANT = release + +ALLJOYN_BINDINGS = c,cpp + +# By setting openwrt for OS and CPU, AllJoyn cross-compilation can be finely +# tuned through TARGET_xxx options. All TARGET_xxx variables must be defined +# otherwise compilation will fail. +# CROSS_COMPILE option should not be used as it works only for linux/ARM. +ALLJOYN_OS = openwrt +ALLJOYN_CPU = openwrt + +# AllJoyn installs everything in this relative path +ALLJOYN_DISTDIR = build/$(ALLJOYN_OS)/$(ALLJOYN_CPU)/$(ALLJOYN_VARIANT)/dist/ + +ALLJOYN_SCONS_OPTS = \ + -j$(PARALLEL_JOBS) \ + V=1 \ + OS=$(ALLJOYN_OS) \ + CPU=$(ALLJOYN_CPU) \ + VARIANT=$(ALLJOYN_VARIANT) \ + BR=off \ + CRYPTO=$(ALLJOYN_CRYPTO) \ + BINDINGS=$(ALLJOYN_BINDINGS) \ + TARGET_CFLAGS="$(TARGET_CFLAGS)" \ + TARGET_CPPFLAGS="$(TARGET_CPPFLAGS)" \ + TARGET_LINKFLAGS="$(TARGET_LINKFLAGS)" \ + TARGET_CC="$(TARGET_CC)" \ + TARGET_CXX="$(TARGET_CXX)" \ + TARGET_LD="$(TARGET_LD)" \ + TARGET_LINK="$(TARGET_CXX)" \ + TARGET_AR="$(TARGET_AR)" \ + TARGET_RANLIB="$(TARGET_RANLIB)" \ + TARGET_PATH="$(BR_PATH)" + +define ALLJOYN_BUILD_CMDS + cd $(@D); $(SCONS) $(ALLJOYN_SCONS_OPTS) +endef + +define ALLJOYN_INSTALL_STAGING_CMDS + cp -a $(@D)/$(ALLJOYN_DISTDIR)/*/lib/lib* $(STAGING_DIR)/usr/lib/ + cp -a $(@D)/$(ALLJOYN_DISTDIR)/*/inc/* $(STAGING_DIR)/usr/include/ +endef + +# Only install alljoyn dynamic libraries into target directory +define ALLJOYN_INSTALL_TARGET_CMDS + cp -a $(@D)/$(ALLJOYN_DISTDIR)/*/lib/lib*.so* $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/alsa-lib/0001-no-mmu.patch b/buildroot/package/alsa-lib/0001-no-mmu.patch new file mode 100644 index 0000000..2ae0f67 --- /dev/null +++ b/buildroot/package/alsa-lib/0001-no-mmu.patch @@ -0,0 +1,45 @@ +Don't use fork() on noMMU platforms + +[Gustavo: update patch for 1.0.28] +Signed-off-by: Thomas Petazzoni + +Index: alsa-lib-1.0.26/configure.ac +=================================================================== +--- alsa-lib-1.0.26.orig/configure.ac 2012-09-06 10:55:14.000000000 +0200 ++++ alsa-lib-1.0.26/configure.ac 2013-03-09 16:22:08.000000000 +0100 +@@ -66,6 +66,8 @@ + AM_CONDITIONAL(ALSA_HSEARCH_R, [test "x$HAVE_HSEARCH_R" != xyes]) + AC_CHECK_FUNCS([uselocale]) + ++AC_CHECK_FUNC([fork]) ++ + SAVE_LIBRARY_VERSION + AC_SUBST(LIBTOOL_VERSION_INFO) + +Index: alsa-lib-1.0.26/src/pcm/pcm_direct.c +=================================================================== +--- alsa-lib-1.0.26.orig/src/pcm/pcm_direct.c 2012-09-06 10:55:14.000000000 +0200 ++++ alsa-lib-1.0.26/src/pcm/pcm_direct.c 2013-03-09 16:22:51.000000000 +0100 +@@ -424,13 +424,21 @@ + close(dmix->server_fd); + return ret; + } +- ++ ++#ifdef HAVE_FORK + ret = fork(); ++#else ++ ret = vfork(); ++#endif + if (ret < 0) { + close(dmix->server_fd); + return ret; + } else if (ret == 0) { ++#ifdef HAVE_FORK + ret = fork(); ++#else ++ ret = vfork(); ++#endif + if (ret == 0) + server_job(dmix); + _exit(EXIT_SUCCESS); diff --git a/buildroot/package/alsa-lib/0002-dlmisc.patch b/buildroot/package/alsa-lib/0002-dlmisc.patch new file mode 100644 index 0000000..24b7230 --- /dev/null +++ b/buildroot/package/alsa-lib/0002-dlmisc.patch @@ -0,0 +1,59 @@ +alsa-lib: provide dummy definitions of RTLD_* if necessary + +The FLAT GNU toolchain (e.g. blackfin) doesn't include the dlfcn.h header +file, so we need to guard that include. Additionally, provide dummy +definitions for parameters RTLD_GLOBAL / RTLD_NOW which are normally +provided by dlfcn.h. + +Signed-off-by: Sonic Zhang +[Thomas: don't add separate dlmisc.h, move dummy defs to global.h] +Signed-off-by: Thomas De Schampheleire + +diff --git a/include/global.h b/include/global.h +--- a/include/global.h ++++ b/include/global.h +@@ -97,6 +97,16 @@ extern struct snd_dlsym_link *snd_dlsym_ + /** \brief Returns the version of a dynamic symbol as a string. */ + #define SND_DLSYM_VERSION(version) __STRING(version) + ++/* RTLD_NOW and RTLD_GLOBAL (used for 'mode' in snd_dlopen) are not defined ++ * on all arches (e.g. blackfin), so provide a dummy definition here. */ ++#ifndef RTLD_NOW ++#define RTLD_NOW 0 ++#endif ++ ++#ifndef RTLD_GLOBAL ++#define RTLD_GLOBAL 0 ++#endif ++ + void *snd_dlopen(const char *file, int mode); + void *snd_dlsym(void *handle, const char *name, const char *version); + int snd_dlclose(void *handle); +diff --git a/modules/mixer/simple/sbasedl.c b/modules/mixer/simple/sbasedl.c +--- a/modules/mixer/simple/sbasedl.c ++++ b/modules/mixer/simple/sbasedl.c +@@ -27,7 +27,9 @@ + #include + #include + #include ++#include "config.h" ++#ifdef HAVE_DLFCN + #include ++#endif +-#include "config.h" + #include "asoundlib.h" + #include "mixer_abst.h" +diff --git a/src/mixer/simple_abst.c b/src/mixer/simple_abst.c +--- a/src/mixer/simple_abst.c ++++ b/src/mixer/simple_abst.c +@@ -34,7 +34,9 @@ + #include + #include + #include ++#include "config.h" ++#ifdef HAVE_DLFCN + #include ++#endif +-#include "config.h" + #include "asoundlib.h" + #include "mixer_simple.h" diff --git a/buildroot/package/alsa-lib/0003-conditional-enabling-of-libdl-in-m4.patch b/buildroot/package/alsa-lib/0003-conditional-enabling-of-libdl-in-m4.patch new file mode 100644 index 0000000..c533419 --- /dev/null +++ b/buildroot/package/alsa-lib/0003-conditional-enabling-of-libdl-in-m4.patch @@ -0,0 +1,35 @@ +alsa-lib: conditionally enable libdl in AM_PATH_ALSA m4 macro + +The AM_PATH_ALSA macro in utils/alsa.m4 unconditionally uses -ldl. This +breaks compilation of alsa-utils (and probably other packages using this +macro) for targets that do not support dynamic loading, such as for +Blackfin FLAT binaries. + +This patch updates the macro to check if dlopen is available, and use that +result to conditionally add -ldl to the list of libraries. + +Signed-off-by: Thomas De Schampheleire + +--- + +diff --git a/utils/alsa.m4 b/utils/alsa.m4 +--- a/utils/alsa.m4 ++++ b/utils/alsa.m4 +@@ -44,6 +44,8 @@ if test "$alsa_inc_prefix" != "" ; then + fi + AC_MSG_RESULT($ALSA_CFLAGS) + ++AC_CHECK_LIB(c, dlopen, LIBDL="", [AC_CHECK_LIB(dl, dlopen, LIBDL="-ldl")]) ++ + dnl add any special lib dirs + AC_MSG_CHECKING(for ALSA LDFLAGS) + if test "$alsa_prefix" != "" ; then +@@ -52,7 +54,7 @@ if test "$alsa_prefix" != "" ; then + fi + + dnl add the alsa library +-ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" ++ALSA_LIBS="$ALSA_LIBS -lasound -lm $LIBDL -lpthread" + LIBS="$ALSA_LIBS $LIBS" + AC_MSG_RESULT($ALSA_LIBS) + diff --git a/buildroot/package/alsa-lib/Config.in b/buildroot/package/alsa-lib/Config.in new file mode 100644 index 0000000..995d379 --- /dev/null +++ b/buildroot/package/alsa-lib/Config.in @@ -0,0 +1,78 @@ +comment "alsa-lib needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +menuconfig BR2_PACKAGE_ALSA_LIB + bool "alsa-lib" + # Even though some parts of alsa-lib use threads only when + # available, some PCM plugins use them unconditionally. Since + # the usage of alsa-lib on no-thread systems is pretty + # unlikely, just require thread support globally for alsa-lib. + depends on BR2_TOOLCHAIN_HAS_THREADS + # Temporary until + # https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4913 + # is fixed + select BR2_PACKAGE_ALSA_LIB_PCM + help + The Advanced Linux Sound Architecture (ALSA) provides audio + and MIDI functionality to the Linux operating system. + + http://www.alsa-project.org/ + +if BR2_PACKAGE_ALSA_LIB + +config BR2_PACKAGE_ALSA_LIB_PYTHON + bool "Python support for alsa-lib" + depends on BR2_PACKAGE_PYTHON + help + Add python support for alsa-lib. + Python will be built and libpython will be installed + in the target directory + http://www.alsa-project.org/ + +config BR2_PACKAGE_ALSA_LIB_DEVDIR + string "directory with ALSA device files" + default "/dev/snd" + +config BR2_PACKAGE_ALSA_LIB_PCM_PLUGINS + string "built PCM plugins" + default "all" if BR2_USE_MMU + default "copy linear route mulaw alaw adpcm rate plug multi file null empty share meter hooks lfloat ladspa dmix dshare dsnoop asym iec958 softvol extplug ioplug mmap_emul" if !BR2_USE_MMU + +config BR2_PACKAGE_ALSA_LIB_CTL_PLUGINS + string "built control plugins" + default "all" + +config BR2_PACKAGE_ALSA_LIB_ALOAD + bool "aload" + default y + +config BR2_PACKAGE_ALSA_LIB_MIXER + bool "mixer" + default y + +config BR2_PACKAGE_ALSA_LIB_PCM + bool "pcm" + default y + +config BR2_PACKAGE_ALSA_LIB_RAWMIDI + bool "rawmidi" + default y + +config BR2_PACKAGE_ALSA_LIB_HWDEP + bool "hwdep" + default y + +config BR2_PACKAGE_ALSA_LIB_SEQ + bool "seq" + default y + +config BR2_PACKAGE_ALSA_LIB_ALISP + bool "alisp" + default y + depends on BR2_USE_MMU + +config BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS + bool "old-symbols" + default y + +endif diff --git a/buildroot/package/alsa-lib/alsa-lib.hash b/buildroot/package/alsa-lib/alsa-lib.hash new file mode 100644 index 0000000..8853093 --- /dev/null +++ b/buildroot/package/alsa-lib/alsa-lib.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 f4f68ad3c6da36b0b5241ac3c798a7a71e0e97d51f972e9f723b3f20a9650ae6 alsa-lib-1.1.5.tar.bz2 +sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 COPYING +sha256 bfe16cf823bcff261fc6a062c07ee96660e3c39678f42f39a788a68dbc234ced aserver/COPYING diff --git a/buildroot/package/alsa-lib/alsa-lib.mk b/buildroot/package/alsa-lib/alsa-lib.mk new file mode 100644 index 0000000..3235502 --- /dev/null +++ b/buildroot/package/alsa-lib/alsa-lib.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# alsa-lib +# +################################################################################ + +ALSA_LIB_VERSION = 1.1.5 +ALSA_LIB_SOURCE = alsa-lib-$(ALSA_LIB_VERSION).tar.bz2 +ALSA_LIB_SITE = ftp://ftp.alsa-project.org/pub/lib +ALSA_LIB_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (aserver) +ALSA_LIB_LICENSE_FILES = COPYING aserver/COPYING +ALSA_LIB_INSTALL_STAGING = YES +ALSA_LIB_CFLAGS = $(TARGET_CFLAGS) +ALSA_LIB_AUTORECONF = YES +ALSA_LIB_CONF_OPTS = \ + --with-alsa-devdir=$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_DEVDIR)) \ + --with-pcm-plugins="$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_PCM_PLUGINS))" \ + --with-ctl-plugins="$(call qstrip,$(BR2_PACKAGE_ALSA_LIB_CTL_PLUGINS))" \ + --without-versioned + +# Can't build with static & shared at the same time (1.0.25+) +ifeq ($(BR2_STATIC_LIBS),y) +ALSA_LIB_CONF_OPTS += \ + --enable-shared=no \ + --without-libdl +else +ALSA_LIB_CONF_OPTS += --enable-static=no +endif + +ifneq ($(BR2_PACKAGE_ALSA_LIB_ALOAD),y) +ALSA_LIB_CONF_OPTS += --disable-aload +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_MIXER),y) +ALSA_LIB_CONF_OPTS += --disable-mixer +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_PCM),y) +ALSA_LIB_CONF_OPTS += --disable-pcm +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_RAWMIDI),y) +ALSA_LIB_CONF_OPTS += --disable-rawmidi +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_HWDEP),y) +ALSA_LIB_CONF_OPTS += --disable-hwdep +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_SEQ),y) +ALSA_LIB_CONF_OPTS += --disable-seq +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_ALISP),y) +ALSA_LIB_CONF_OPTS += --disable-alisp +endif +ifneq ($(BR2_PACKAGE_ALSA_LIB_OLD_SYMBOLS),y) +ALSA_LIB_CONF_OPTS += --disable-old-symbols +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB_PYTHON),y) +ALSA_LIB_CONF_OPTS += \ + --with-pythonlibs=-lpython$(PYTHON_VERSION_MAJOR) \ + --with-pythonincludes=$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) +ALSA_LIB_CFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) +ALSA_LIB_DEPENDENCIES = python +else +ALSA_LIB_CONF_OPTS += --disable-python +endif + +ifeq ($(BR2_bfin),y) +# blackfin external toolchains don't have versionsort. Fake it using alphasort +# instead +ALSA_LIB_CFLAGS += -Dversionsort=alphasort +endif + +ALSA_LIB_CONF_ENV = \ + CFLAGS="$(ALSA_LIB_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS) -lm" + +$(eval $(autotools-package)) diff --git a/buildroot/package/alsa-utils/Config.in b/buildroot/package/alsa-utils/Config.in new file mode 100644 index 0000000..1a48fc0 --- /dev/null +++ b/buildroot/package/alsa-utils/Config.in @@ -0,0 +1,89 @@ +comment "alsa-utils needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU # fork + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +menuconfig BR2_PACKAGE_ALSA_UTILS + bool "alsa-utils" + depends on BR2_USE_MMU # fork + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + depends on !BR2_STATIC_LIBS # uses dlfcn.h + select BR2_PACKAGE_ALSA_LIB + help + This package contains the command line utilities for the ALSA + project. + + http://www.alsa-project.org/ + +if BR2_PACKAGE_ALSA_UTILS + +config BR2_PACKAGE_ALSA_UTILS_ALSACONF + bool "alsaconf" + +config BR2_PACKAGE_ALSA_UTILS_ACONNECT + bool "aconnect" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ALSACTL + bool "alsactl" + default y + +config BR2_PACKAGE_ALSA_UTILS_ALSALOOP + bool "alsaloop" + +config BR2_PACKAGE_ALSA_UTILS_ALSAMIXER + bool "alsamixer" + default y + depends on BR2_USE_WCHAR + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_ALSA_LIB_MIXER + +comment "alsamixer needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_ALSA_UTILS_ALSAUCM + bool "alsaucm" + +config BR2_PACKAGE_ALSA_UTILS_ALSATPLG + bool "alsatplg" + +config BR2_PACKAGE_ALSA_UTILS_AMIDI + bool "amidi" + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + +config BR2_PACKAGE_ALSA_UTILS_AMIXER + bool "amixer" + select BR2_PACKAGE_ALSA_LIB_MIXER + +config BR2_PACKAGE_ALSA_UTILS_APLAY + bool "aplay/arecord" + select BR2_PACKAGE_ALSA_LIB_PCM + +config BR2_PACKAGE_ALSA_UTILS_APLAYMIDI + bool "aplaymidi" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI + bool "arecordmidi" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ASEQDUMP + bool "aseqdump" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_ASEQNET + bool "aseqnet" + select BR2_PACKAGE_ALSA_LIB_SEQ + +config BR2_PACKAGE_ALSA_UTILS_BAT + bool "bat" + select BR2_PACKAGE_FFTW + +config BR2_PACKAGE_ALSA_UTILS_IECSET + bool "iecset" + select BR2_PACKAGE_ALSA_LIB_PCM + +config BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST + bool "speaker-test" + select BR2_PACKAGE_ALSA_LIB_PCM + +endif diff --git a/buildroot/package/alsa-utils/alsa-utils.hash b/buildroot/package/alsa-utils/alsa-utils.hash new file mode 100644 index 0000000..41cf946 --- /dev/null +++ b/buildroot/package/alsa-utils/alsa-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 320bd285e91db6e7fd7db3c9ec6f55b02f35449ff273c7844780ac6a5a3de2e8 alsa-utils-1.1.5.tar.bz2 +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/buildroot/package/alsa-utils/alsa-utils.mk b/buildroot/package/alsa-utils/alsa-utils.mk new file mode 100644 index 0000000..2d3407d --- /dev/null +++ b/buildroot/package/alsa-utils/alsa-utils.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# alsa-utils +# +################################################################################ + +ALSA_UTILS_VERSION = 1.1.5 +ALSA_UTILS_SOURCE = alsa-utils-$(ALSA_UTILS_VERSION).tar.bz2 +ALSA_UTILS_SITE = ftp://ftp.alsa-project.org/pub/utils +ALSA_UTILS_LICENSE = GPL-2.0 +ALSA_UTILS_LICENSE_FILES = COPYING +ALSA_UTILS_INSTALL_STAGING = YES +ALSA_UTILS_DEPENDENCIES = host-pkgconf alsa-lib \ + $(if $(BR2_PACKAGE_NCURSES),ncurses) \ + $(if $(BR2_PACKAGE_LIBSAMPLERATE),libsamplerate) \ + $(TARGET_NLS_DEPENDENCIES) +# Regenerate aclocal.m4 to pick the patched +# version of alsa.m4 from alsa-lib +ALSA_UTILS_AUTORECONF = YES +ALSA_UTILS_GETTEXTIZE = YES + +ALSA_UTILS_CONF_ENV = \ + ac_cv_prog_ncurses5_config=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) \ + LIBS=$(TARGET_NLS_LIBS) + +ALSA_UTILS_CONF_OPTS = \ + --disable-xmlto \ + --disable-rst2man \ + --with-curses=$(if $(BR2_PACKAGE_NCURSES_WCHAR),ncursesw,ncurses) + +ifeq ($(BR2_PACKAGE_ALSA_UTILS_ALSALOOP),y) +ALSA_UTILS_CONF_OPTS += --enable-alsaloop +else +ALSA_UTILS_CONF_OPTS += --disable-alsaloop +endif + +ifneq ($(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER),y) +ALSA_UTILS_CONF_OPTS += --disable-alsamixer --disable-alsatest +endif + +ifeq ($(BR2_PACKAGE_ALSA_UTILS_BAT),y) +ALSA_UTILS_CONF_OPTS += --enable-bat +ALSA_UTILS_DEPENDENCIES += fftw +else +ALSA_UTILS_CONF_OPTS += --disable-bat +endif + +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACONF) += usr/sbin/alsaconf +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSACTL) += usr/sbin/alsactl +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSALOOP) += usr/bin/alsaloop +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSAMIXER) += usr/bin/alsamixer +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSATPLG) += usr/bin/alsatplg +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIDI) += usr/bin/amidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_AMIXER) += usr/bin/amixer +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAY) += usr/bin/aplay usr/bin/arecord +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_BAT) += usr/bin/alsabat +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_IECSET) += usr/bin/iecset +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ACONNECT) += usr/bin/aconnect +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ALSAUCM) += usr/bin/alsaucm +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_APLAYMIDI) += usr/bin/aplaymidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ARECORDMIDI) += usr/bin/arecordmidi +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQDUMP) += usr/bin/aseqdump +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_ASEQNET) += usr/bin/aseqnet +ALSA_UTILS_TARGETS_$(BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST) += usr/bin/speaker-test + +define ALSA_UTILS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/var/lib/alsa + for i in $(ALSA_UTILS_TARGETS_y); do \ + $(INSTALL) -D -m 755 $(STAGING_DIR)/$$i $(TARGET_DIR)/$$i || exit 1; \ + done + if [ -x "$(TARGET_DIR)/usr/bin/speaker-test" ]; then \ + mkdir -p $(TARGET_DIR)/usr/share/alsa/speaker-test; \ + mkdir -p $(TARGET_DIR)/usr/share/sounds/alsa; \ + cp -rdpf $(STAGING_DIR)/usr/share/alsa/speaker-test/* $(TARGET_DIR)/usr/share/alsa/speaker-test/; \ + cp -rdpf $(STAGING_DIR)/usr/share/sounds/alsa/* $(TARGET_DIR)/usr/share/sounds/alsa/; \ + fi + if [ -x "$(TARGET_DIR)/usr/sbin/alsactl" ]; then \ + mkdir -p $(TARGET_DIR)/usr/share/; \ + rm -rf $(TARGET_DIR)/usr/share/alsa/; \ + cp -rdpf $(STAGING_DIR)/usr/share/alsa/ $(TARGET_DIR)/usr/share/alsa/; \ + fi +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/alsamixergui/0001-misc-fixes.patch b/buildroot/package/alsamixergui/0001-misc-fixes.patch new file mode 100644 index 0000000..6b498da --- /dev/null +++ b/buildroot/package/alsamixergui/0001-misc-fixes.patch @@ -0,0 +1,40 @@ +--- a/configure.in ++++ b/configure.in +@@ -11,7 +11,10 @@ + AC_PROG_LN_S + + dnl Checks for libraries. +-AC_CHECK_LIB(fltk,numericsort,,AC_MSG_ERROR("missing fltk")) ++AC_CHECK_LIB(fltk,numericsort,, ++AC_CHECK_LIB(fltk,fl_numericsort,, ++AC_MSG_ERROR("missing fltk")) ++) + AM_PATH_ALSA(0.9.0) + + dnl Checks for header files. +--- a/src/alsamixer.cxx 2007-10-21 12:39:11.000000000 -0400 ++++ b/src/alsamixer.cxx 2007-10-21 12:49:10.000000000 -0400 +@@ -2081,8 +2081,8 @@ static void + mixer_signal_handler (int signal) + { + if (signal != SIGSEGV) +- mixer_abort (ERR_SIGNAL, sys_siglist[signal], 0); +- else ++ // mixer_abort (ERR_SIGNAL, sys_siglist[signal], 0); ++ //else + { + fprintf (stderr, "\nSegmentation fault.\n"); + _exit (11); +--- a/src/alsamixer.cxx 2006-01-16 12:41:54.000000000 -0600 ++++ b/src/alsamixer.cxx 2006-01-16 12:45:44.000000000 -0600 +@@ -653,8 +653,8 @@ + if (vleft >= 0 && vright >= 0) { + if (joined) { + #ifdef ALSAMIXER_GUI +- for (chn = snd_mixer_selem_channel_id_t(0); chn < SND_MIXER_SCHN_LAST; +- snd_mixer_selem_channel_id_t(int(chn)++)) ++ for (chn = snd_mixer_selem_channel_id_t(0); chn < SND_MIXER_SCHN_LAST; ++ snd_mixer_selem_channel_id_t(int(chn)+1)) + #else + for (chn = 0; chn < SND_MIXER_SCHN_LAST; chn++) + #endif diff --git a/buildroot/package/alsamixergui/Config.in b/buildroot/package/alsamixergui/Config.in new file mode 100644 index 0000000..2016a28 --- /dev/null +++ b/buildroot/package/alsamixergui/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_ALSAMIXERGUI + bool "alsamixergui" + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fltk fork() + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_FLTK + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_PCM + select BR2_PACKAGE_ALSA_LIB_MIXER + help + A nice GUI mixer for Alsa using fltk + + http://www.iua.upf.es/~mdeboer/projects/alsamixergui/ + +comment "alsamixergui needs a toolchain w/ C++, threads" + depends on BR2_PACKAGE_XORG7 && BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/alsamixergui/alsamixergui.hash b/buildroot/package/alsamixergui/alsamixergui.hash new file mode 100644 index 0000000..5cea490 --- /dev/null +++ b/buildroot/package/alsamixergui/alsamixergui.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/a/alsamixergui/alsamixergui_0.9.0rc2-1-9.dsc +md5 af942a41b81ba27e2e4d0a1e1ab0decb alsamixergui_0.9.0rc2-1.orig.tar.gz diff --git a/buildroot/package/alsamixergui/alsamixergui.mk b/buildroot/package/alsamixergui/alsamixergui.mk new file mode 100644 index 0000000..24e2497 --- /dev/null +++ b/buildroot/package/alsamixergui/alsamixergui.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# alsamixergui +# +################################################################################ + +ALSAMIXERGUI_VERSION = 0.9.0rc2-1 +ALSAMIXERGUI_SOURCE = alsamixergui_$(ALSAMIXERGUI_VERSION).orig.tar.gz +ALSAMIXERGUI_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/a/alsamixergui +ALSAMIXERGUI_LICENSE = GPL-2.0+ +ALSAMIXERGUI_LICENSE_FILES = debian/copyright +ALSAMIXERGUI_AUTORECONF = YES + +ALSAMIXERGUI_CONF_ENV = \ + ac_cv_lib_fltk_numericsort=yes \ + ac_cv_lib_fltk_fl_numericsort=yes \ + ac_cv_lib_asound_snd_ctl_open=yes + +ALSAMIXERGUI_DEPENDENCIES = fltk alsa-lib + +$(eval $(autotools-package)) diff --git a/buildroot/package/am335x-pru-package/0001-install-does-not-build.patch b/buildroot/package/am335x-pru-package/0001-install-does-not-build.patch new file mode 100644 index 0000000..e2f2928 --- /dev/null +++ b/buildroot/package/am335x-pru-package/0001-install-does-not-build.patch @@ -0,0 +1,23 @@ +Makefile: do not force the release build on install + +If we did build any of the other targets, and are just interested +in those and not the release one, we still want to use the 'install' +rule, but not build (and install) the release libraries. + +So, remove the dependency on the 'release' target from the 'install' +rule. + +Signed-off-by: "Yann E. MORIN" + +diff -durN am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea.orig/pru_sw/app_loader/interface/Makefile am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea/pru_sw/app_loader/interface/Makefile +--- am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea.orig/pru_sw/app_loader/interface/Makefile 2014-08-18 00:24:36.000000000 +0200 ++++ am335x-pru-package-506e074859891a2b350eb4f5fcb451c4961410ea/pru_sw/app_loader/interface/Makefile 2014-10-12 11:39:17.144682697 +0200 +@@ -38,7 +38,7 @@ + + all: debug release sodebug sorelease + +-install: release ++install: + install -m 0755 -d $(DESTDIR)$(PREFIX)/lib + install -m 0755 -d $(DESTDIR)$(PREFIX)/include + install -m 0644 $(LIBDIR)/* $(DESTDIR)$(PREFIX)/lib diff --git a/buildroot/package/am335x-pru-package/Config.in b/buildroot/package/am335x-pru-package/Config.in new file mode 100644 index 0000000..66d7773 --- /dev/null +++ b/buildroot/package/am335x-pru-package/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_AM335X_PRU_PACKAGE + bool "am335x-pru-package" + depends on BR2_arm # only relevant for TI am335x + help + TI AM335X PRU program loader + + https://github.com/beagleboard/am335x_pru_package diff --git a/buildroot/package/am335x-pru-package/am335x-pru-package.hash b/buildroot/package/am335x-pru-package/am335x-pru-package.hash new file mode 100644 index 0000000..36671b4 --- /dev/null +++ b/buildroot/package/am335x-pru-package/am335x-pru-package.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2a902f825ccc1885c5dccd83e1ccee104aa30e601c9964a24f49459f76f674b9 am335x-pru-package-5f374ad57cc195f28bf5e585c3d446aba6ee7096.tar.gz diff --git a/buildroot/package/am335x-pru-package/am335x-pru-package.mk b/buildroot/package/am335x-pru-package/am335x-pru-package.mk new file mode 100644 index 0000000..24a5df4 --- /dev/null +++ b/buildroot/package/am335x-pru-package/am335x-pru-package.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# am335x-pru-package +# +################################################################################ + +AM335X_PRU_PACKAGE_VERSION = 5f374ad57cc195f28bf5e585c3d446aba6ee7096 +AM335X_PRU_PACKAGE_SITE = $(call github,beagleboard,am335x_pru_package,$(AM335X_PRU_PACKAGE_VERSION)) +AM335X_PRU_PACKAGE_LICENSE = BSD-3-Clause +AM335X_PRU_PACKAGE_LICENSE_FILES = pru_sw/utils/LICENCE.txt +AM335X_PRU_PACKAGE_DEPENDENCIES = host-am335x-pru-package +AM335X_PRU_PACKAGE_INSTALL_STAGING = YES + +# The default 'all' rule builds everything, when we just need the library +ifeq ($(BR2_ENABLE_DEBUG),y) +AM335X_PRU_PACKAGE_MAKE_TARGET = debug $(if $(BR2_STATIC_LIBS),,sodebug) +else +AM335X_PRU_PACKAGE_MAKE_TARGET = release $(if $(BR2_STATIC_LIBS),,sorelease) +endif + +define AM335X_PRU_PACKAGE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" \ + -C $(@D)/pru_sw/app_loader/interface $(AM335X_PRU_PACKAGE_MAKE_TARGET) +endef + +# 'install' installs whatever was built, and our patch removes the dependency +# on the release build, so we can use it to install whatever we built above. +define AM335X_PRU_PACKAGE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) DESTDIR="$(STAGING_DIR)" PREFIX="/usr" \ + -C $(@D)/pru_sw/app_loader/interface install +endef + +define AM335X_PRU_PACKAGE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) DESTDIR="$(TARGET_DIR)" PREFIX="/usr" \ + -C $(@D)/pru_sw/app_loader/interface install +endef + +# The debug libraries are named differently than the release ones, +# so we must provide a symlink to still be able to link with them. +ifeq ($(BR2_ENABLE_DEBUG),y) + +define AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_STATIC + ln -sf libprussdrvd.a $(STAGING_DIR)/usr/lib/libprussdrv.a +endef +AM335X_PRU_PACKAGE_POST_INSTALL_STAGING_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_STATIC + +ifeq ($(BR2_STATIC_LIBS),) + +define AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_SHARED + ln -sf libprussdrvd.so $(STAGING_DIR)/usr/lib/libprussdrv.so +endef +AM335X_PRU_PACKAGE_POST_INSTALL_STAGING_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_STAGING_SHARED + +define AM335X_PRU_PACKAGE_LN_DEBUG_TARGET + ln -sf libprussdrvd.so $(TARGET_DIR)/usr/lib/libprussdrv.so +endef +AM335X_PRU_PACKAGE_POST_INSTALL_TARGET_HOOKS += AM335X_PRU_PACKAGE_LN_DEBUG_TARGET + +endif # !STATIC + +endif # DEBUG + +define HOST_AM335X_PRU_PACKAGE_BUILD_CMDS + cd $(@D)/pru_sw/utils/pasm_source; \ + $(HOSTCC) -Wall -D_UNIX_ pasm.c pasmpp.c pasmexp.c pasmop.c \ + pasmdot.c pasmstruct.c pasmmacro.c path_utils.c -o ../pasm +endef + +define HOST_AM335X_PRU_PACKAGE_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/pru_sw/utils/pasm $(HOST_DIR)/bin/pasm +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/am33x-cm3/0001-fix-makefile.patch b/buildroot/package/am33x-cm3/0001-fix-makefile.patch new file mode 100644 index 0000000..f3cdb5e --- /dev/null +++ b/buildroot/package/am33x-cm3/0001-fix-makefile.patch @@ -0,0 +1,30 @@ +Enforce correct -march option + +Buildroot uses a normal ARM compiler to build the AM33X CM3 firmware +(which runs on a Cortex-M3 processor), but Buildroot will have a +default -march value that doesn't necessarily match the one needed for +Cortex-M3, leading to build failures (gcc complains that the +-mcpu=cortex-m3 option being passed is not compatible with the +selected -march). + +Fix this by explicitly indicating -march=armv7-m. + +Signed-off-by: Thomas Petazzoni + +Updated the patch to the latest version of the Makefile + +Signed-off-by: Anders Darander + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -13,7 +13,7 @@ SRCDIR = src + BINDIR = bin + + INCLUDES = $(SRCDIR)/include +-CFLAGS =-mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \ ++CFLAGS =-march=armv7-m -mcpu=cortex-m3 -mthumb -nostdlib -Wall -Wundef \ + -Werror-implicit-function-declaration -Wstrict-prototypes \ + -Wdeclaration-after-statement -fno-delete-null-pointer-checks \ + -Wempty-body -fno-strict-overflow -g -I$(INCLUDES) -O2 diff --git a/buildroot/package/am33x-cm3/Config.in b/buildroot/package/am33x-cm3/Config.in new file mode 100644 index 0000000..d33dfaa --- /dev/null +++ b/buildroot/package/am33x-cm3/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_AM33X_CM3 + bool "am33x-cm3" + depends on BR2_arm # only relevant for TI am335x + depends on BR2_BINFMT_ELF # assumes the compiler builds ELF file + help + Cortex-M3 binary blob for suspend-resume on am335x + + http://arago-project.org/git/projects/am33x-cm3.git diff --git a/buildroot/package/am33x-cm3/S93-am335x-pm-firmware-load b/buildroot/package/am33x-cm3/S93-am335x-pm-firmware-load new file mode 100755 index 0000000..56c17b3 --- /dev/null +++ b/buildroot/package/am33x-cm3/S93-am335x-pm-firmware-load @@ -0,0 +1,6 @@ +#!/bin/sh + +# Load the PM CM3 firmware +echo 1 > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/loading +cat /lib/firmware/am335x-pm-firmware.bin > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/data +echo 0 > /sys/devices/ocp.2/44d00000.wkup_m3/firmware/am335x-pm-firmware.bin/loading diff --git a/buildroot/package/am33x-cm3/am33x-cm3.hash b/buildroot/package/am33x-cm3/am33x-cm3.hash new file mode 100644 index 0000000..bb8c2f6 --- /dev/null +++ b/buildroot/package/am33x-cm3/am33x-cm3.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 a722098b362f58f4dfb2a7c30afd604424d435b3d5ebe6ebf5d76ad942f796d0 am33x-cm3-11107db2f1e9e58ee75d4fe9cc38423c9a6e4365.tar.gz diff --git a/buildroot/package/am33x-cm3/am33x-cm3.mk b/buildroot/package/am33x-cm3/am33x-cm3.mk new file mode 100644 index 0000000..629a832 --- /dev/null +++ b/buildroot/package/am33x-cm3/am33x-cm3.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# am33x-cm3 +# +################################################################################ + +# This should correpsond to v05.00.00.02 +AM33X_CM3_VERSION = 11107db2f1e9e58ee75d4fe9cc38423c9a6e4365 +AM33X_CM3_SITE = http://arago-project.org/git/projects/am33x-cm3.git +AM33X_CM3_SITE_METHOD = git +AM33X_CM3_LICENSE = TI Publicly Available Software License +AM33X_CM3_LICENSE_FILES = License.txt + +# The build command below will use the standard cross-compiler (normally +# build for Cortex-A8, to build the FW for the Cortex-M3. +define AM33X_CM3_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) all +endef + +# Not all of the firmware files are used +define AM33X_CM3_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/bin/am335x-pm-firmware.bin \ + $(TARGET_DIR)/lib/firmware/am335x-pm-firmware.bin +endef + +define AM33X_CM3_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/am33x-cm3/S93-am335x-pm-firmware-load \ + $(TARGET_DIR)/etc/init.d/S93-am335x-pm-firmware-load +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch b/buildroot/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch new file mode 100644 index 0000000..a0db962 --- /dev/null +++ b/buildroot/package/amd-catalyst/0001-Add-support-for-Linux-4.0.patch @@ -0,0 +1,45 @@ +From c35482bc0cc56b40263b74c3e58e42be867fd9f2 Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Thu, 17 Sep 2015 15:41:46 +0200 +Subject: [PATCH] Add support for Linux 4.0 + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 5 +++++ + common/lib/modules/fglrx/build_mod/kcl_str.c | 4 ++++ + 2 files changed, 9 insertions(+) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 677565d..6017e89 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -285,6 +285,11 @@ MODULE_DEVICE_TABLE(pci, fglrx_pci_table); + + MODULE_INFO(supported, "external"); + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) ++#define read_cr4() __read_cr4() ++#define write_cr4(cr4) __write_cr4(cr4) ++#endif ++ + /* globals constants */ + const char* KCL_SYSINFO_OsVersionString = UTS_RELEASE; + const unsigned int KCL_SYSINFO_PageSize = PAGE_SIZE; +diff --git a/common/lib/modules/fglrx/build_mod/kcl_str.c b/common/lib/modules/fglrx/build_mod/kcl_str.c +index 2d89eb0..bacdb69 100755 +--- a/common/lib/modules/fglrx/build_mod/kcl_str.c ++++ b/common/lib/modules/fglrx/build_mod/kcl_str.c +@@ -42,6 +42,10 @@ + #include "kcl_type.h" + #include "kcl_str.h" + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) ++#define strnicmp strncasecmp ++#endif ++ + /** \brief Fill memory with a constant byte + * \param s Pointer to memory + * \param c Initializing value +-- +2.8.1 + diff --git a/buildroot/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch b/buildroot/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch new file mode 100644 index 0000000..cc95916 --- /dev/null +++ b/buildroot/package/amd-catalyst/0002-Add-support-for-Linux-4.1.patch @@ -0,0 +1,31 @@ +From e9c8ccb4c8c842042542b792c51f9a7ec6c85e06 Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Thu, 17 Sep 2015 15:44:59 +0200 +Subject: [PATCH] Add support for Linux 4.1 + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 6017e89..94778f1 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -3508,10 +3508,12 @@ int ATI_API_CALL KCL_InstallInterruptHandler( + KCL_PUB_InterruptHandlerWrap, + #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22) + ((useMSI) ? (SA_INTERRUPT) : (SA_SHIRQ)), +-#else ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,1,0) + //when MSI enabled. keep irq disabled when calling the action handler, + //exclude this IRQ from irq balancing (only on one CPU) + ((useMSI) ? (IRQF_DISABLED) : (IRQF_SHARED)), ++#else ++ ((useMSI) ? (0x0) : (IRQF_SHARED)), + #endif + dev_name, + context); +-- +2.8.1 + diff --git a/buildroot/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch b/buildroot/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch new file mode 100644 index 0000000..7458162 --- /dev/null +++ b/buildroot/package/amd-catalyst/0003-Add-support-for-Linux-4.2.patch @@ -0,0 +1,121 @@ +From e2e6c2dac2a0311a022208dd289374b832538329 Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Tue, 14 Jul 2015 12:56:37 +0200 +Subject: [PATCH] Add support for Linux 4.2 + +Deal with the FPU code renaming + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 38 ++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 94778f1..749ea51 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -191,9 +191,17 @@ + #include + #include + #include ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + #include "asm/i387.h" ++#else ++#include ++#endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + #include ++#else ++#include ++#endif + #endif + + #include "firegl_public.h" +@@ -1711,6 +1719,9 @@ void ATI_API_CALL KCL_SetCurrentProcessState(KCL_ENUM_ProcessState state) + + #if defined(__i386__) + #ifndef __HAVE_ARCH_CMPXCHG ++#ifndef __xg ++#define __xg(x) ((volatile long *)(x)) ++#endif + static inline + unsigned long __fgl_cmpxchg(volatile void *ptr, unsigned long old, + unsigned long new, int size) +@@ -1747,7 +1758,11 @@ unsigned long ATI_API_CALL kcl__cmpxchg(volatile void *ptr, unsigned long old, + unsigned long new, int size) + { + #ifndef __HAVE_ARCH_CMPXCHG ++#if defined(__i386__) + return __fgl_cmpxchg(ptr,old,new,size); ++#elif defined(__x86_64__) ++ return cmpxchg((unsigned long*)ptr,old,new); ++#endif + #else + /* On kernel version 2.6.34 passing a variable or unsupported size + * argument to the __cmpxchg macro causes the default-clause of a +@@ -6443,21 +6458,36 @@ static int KCL_fpu_save_init(struct task_struct *tsk) + struct fpu *fpu = &tsk->thread.fpu; + + if(static_cpu_has(X86_FEATURE_XSAVE)) { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + fpu_xsave(fpu); + if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP)) ++#else ++ copy_xregs_to_kernel(&fpu->state.xsave); ++ if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP)) ++#endif + return 1; + } else if (static_cpu_has(X86_FEATURE_FXSR)) { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + fpu_fxsave(fpu); ++#else ++ copy_fxregs_to_kernel(fpu); ++#endif + } else { + asm volatile("fnsave %[fx]; fwait" ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + : [fx] "=m" (fpu->state->fsave)); ++#else ++ : [fx] "=m" (fpu->state.fsave)); ++#endif + return 0; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + if (unlikely(fpu->state->fxsave.swd & X87_FSW_ES)) { + asm volatile("fnclex"); + return 0; + } ++#endif + return 1; + } + #endif +@@ -6469,8 +6499,12 @@ static int KCL_fpu_save_init(struct task_struct *tsk) + void ATI_API_CALL KCL_fpu_begin(void) + { + #ifdef CONFIG_X86_64 ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + kernel_fpu_begin(); + #else ++ __kernel_fpu_begin(); ++#endif ++#else + #ifdef TS_USEDFPU + struct thread_info *cur_thread = current_thread_info(); + struct task_struct *cur_task = get_current(); +@@ -6515,7 +6549,11 @@ void ATI_API_CALL KCL_fpu_begin(void) + */ + void ATI_API_CALL KCL_fpu_end(void) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) + kernel_fpu_end(); ++#else ++ __kernel_fpu_end(); ++#endif + } + + /** Create new directory entry under "/proc/...." +-- +2.8.1 + diff --git a/buildroot/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch b/buildroot/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch new file mode 100644 index 0000000..4d375b8 --- /dev/null +++ b/buildroot/package/amd-catalyst/0004-Use-fpregs_active-instead-of-has_fpu.patch @@ -0,0 +1,33 @@ +From 7120f00015570a2e4d9b6532731960d509c71cba Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Thu, 17 Sep 2015 15:48:30 +0200 +Subject: [PATCH] Use fpregs_active instead of has_fpu + +This is for Linux 4.2 + +Thanks to Tim Gardner for the patch. + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 749ea51..4c1f9a5 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -6528,7 +6528,11 @@ void ATI_API_CALL KCL_fpu_begin(void) + /* The thread structure is changed with the commit below for kernel 3.3: + * https://github.com/torvalds/linux/commit/7e16838d94b566a17b65231073d179bc04d590c8 + */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) ++ if (cur_task->thread.fpu.fpregs_active) ++#else + if (cur_task->thread.fpu.has_fpu) ++#endif + #else + if (cur_task->thread.has_fpu) + #endif +-- +2.8.1 + diff --git a/buildroot/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch b/buildroot/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch new file mode 100644 index 0000000..c9513ef --- /dev/null +++ b/buildroot/package/amd-catalyst/0005-Use-a-local-copy-of-copy_xregs_to_kernel.patch @@ -0,0 +1,79 @@ +From eb703737be5c91c1a0817351db8ec152c523c85d Mon Sep 17 00:00:00 2001 +From: Alberto Milone +Date: Thu, 17 Sep 2015 15:49:46 +0200 +Subject: [PATCH] Use a local copy of copy_xregs_to_kernel + +This is needed for Linux 4.2. + +Thanks to Tim Gardner for the patch. + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 44 +++++++++++++++++++++- + 1 file changed, 43 insertions(+), 1 deletion(-) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index 4c1f9a5..bb67bba 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -6443,6 +6443,48 @@ int ATI_API_CALL kcl_sscanf(const char * buf, const char * fmt, ...) + return i; + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0) ++/* ++ * Save processor xstate to xsave area. ++ */ ++static void _copy_xregs_to_kernel(struct xregs_state *xstate) ++{ ++ u64 mask = -1; ++ u32 lmask = mask; ++ u32 hmask = mask >> 32; ++ int err = 0; ++ ++ /*WARN_ON(!alternatives_patched);*/ ++ ++ /* ++ * If xsaves is enabled, xsaves replaces xsaveopt because ++ * it supports compact format and supervisor states in addition to ++ * modified optimization in xsaveopt. ++ * ++ * Otherwise, if xsaveopt is enabled, xsaveopt replaces xsave ++ * because xsaveopt supports modified optimization which is not ++ * supported by xsave. ++ * ++ * If none of xsaves and xsaveopt is enabled, use xsave. ++ */ ++ alternative_input_2( ++ "1:"XSAVE, ++ XSAVEOPT, ++ X86_FEATURE_XSAVEOPT, ++ XSAVES, ++ X86_FEATURE_XSAVES, ++ [xstate] "D" (xstate), "a" (lmask), "d" (hmask) : ++ "memory"); ++ asm volatile("2:\n\t" ++ xstate_fault(err) ++ : "0" (err) ++ : "memory"); ++ ++ /* We should never fault when copying to a kernel buffer: */ ++ WARN_ON_FPU(err); ++} ++#endif ++ + /** \brief Generate UUID + * \param buf pointer to the generated UUID + * \return None +@@ -6462,7 +6504,7 @@ static int KCL_fpu_save_init(struct task_struct *tsk) + fpu_xsave(fpu); + if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP)) + #else +- copy_xregs_to_kernel(&fpu->state.xsave); ++ _copy_xregs_to_kernel(&fpu->state.xsave); + if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP)) + #endif + return 1; +-- +2.8.1 + diff --git a/buildroot/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch b/buildroot/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch new file mode 100644 index 0000000..104e2c5 --- /dev/null +++ b/buildroot/package/amd-catalyst/0006-Add-support-for-Linux-4.4.patch @@ -0,0 +1,78 @@ +From 54b230e26a1889c08507e791ab043f8a4b4ff771 Mon Sep 17 00:00:00 2001 +From: Romain Perier +Date: Thu, 7 Jul 2016 14:40:53 +0200 +Subject: [PATCH] Add support for Linux 4.4 + +It fixes various things like the use of seq_printf because its API +changed. It also replaces the call to mtrr_add and mtrr_del by +arch_phys_wc_add and arch_phys_wc_del because these symbols are +no longer exported for Linux >= 4.3.x. + +Signed-off-by: Romain Perier +--- + common/lib/modules/fglrx/build_mod/firegl_public.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/common/lib/modules/fglrx/build_mod/firegl_public.c b/common/lib/modules/fglrx/build_mod/firegl_public.c +index bb67bba..b4b2d30 100755 +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c +@@ -636,9 +636,16 @@ static int firegl_major_proc_read(struct seq_file *m, void* data) + + len = snprintf(buf, request, "%d\n", major); + #else ++ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0) ++ seq_printf(m, "%d\n", major); ++ len = 0; ++#else + len = seq_printf(m, "%d\n", major); + #endif + ++#endif ++ + KCL_DEBUG1(FN_FIREGL_PROC, "return len=%i\n",len); + + return len; +@@ -3432,7 +3439,11 @@ int ATI_API_CALL KCL_MEM_MTRR_Support(void) + int ATI_API_CALL KCL_MEM_MTRR_AddRegionWc(unsigned long base, unsigned long size) + { + #ifdef CONFIG_MTRR ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0) ++ return arch_phys_wc_add(base, size); ++#else + return mtrr_add(base, size, MTRR_TYPE_WRCOMB, 1); ++#endif + #else /* !CONFIG_MTRR */ + return -EPERM; + #endif /* !CONFIG_MTRR */ +@@ -3441,7 +3452,12 @@ int ATI_API_CALL KCL_MEM_MTRR_AddRegionWc(unsigned long base, unsigned long size + int ATI_API_CALL KCL_MEM_MTRR_DeleteRegion(int reg, unsigned long base, unsigned long size) + { + #ifdef CONFIG_MTRR ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0) ++ arch_phys_wc_del(reg); ++ return 0; ++#else + return mtrr_del(reg, base, size); ++#endif + #else /* !CONFIG_MTRR */ + return -EPERM; + #endif /* !CONFIG_MTRR */ +@@ -6505,8 +6521,13 @@ static int KCL_fpu_save_init(struct task_struct *tsk) + if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP)) + #else + _copy_xregs_to_kernel(&fpu->state.xsave); ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0) ++ if (!(fpu->state.xsave.header.xfeatures & XFEATURE_MASK_FP)) ++#else + if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP)) + #endif ++ ++#endif + return 1; + } else if (static_cpu_has(X86_FEATURE_FXSR)) { + #if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) +-- +2.8.1 + diff --git a/buildroot/package/amd-catalyst/0007-remove-gpl-symbols.patch b/buildroot/package/amd-catalyst/0007-remove-gpl-symbols.patch new file mode 100644 index 0000000..d0094b0 --- /dev/null +++ b/buildroot/package/amd-catalyst/0007-remove-gpl-symbols.patch @@ -0,0 +1,54 @@ +Author: Manuel Rüger +Date: Sat, 2 Jan 2016 17:24:30 +0100 +URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/x11-drivers/ati-drivers/files?id=179aa11ed2f1bd79cf1b190263c3a7a07279fc50 + +Signed-off-by: Romain Perier +--- +--- a/common/lib/modules/fglrx/build_mod/firegl_public.c 2015-09-18 23:57:02.000000000 -0400 ++++ b/common/lib/modules/fglrx/build_mod/firegl_public.c 2015-09-18 23:57:11.000000000 -0400 +@@ -136,7 +136,6 @@ + #include + #include + #include +-#include // for flush_tlb_page + #include + #ifdef CONFIG_MTRR + #include +@@ -251,6 +250,26 @@ + #define WRITE_CR4(x) write_cr4(x) + #endif + ++#define __flush_tlb_one(addr) asm volatile("invlpg (%0)" ::"r" (addr) : "memory") ++#define __flush_tlb() native_write_cr3(native_read_cr3()) ++ ++static inline void __flush_tlb_all(void) ++{ ++ if (cpu_has_pge) ++ { ++ unsigned long flags, cr4; ++ raw_local_irq_save(flags); ++ cr4 = native_read_cr4(); ++ native_write_cr4(cr4 & ~X86_CR4_PGE); ++ native_write_cr4(cr4); ++ raw_local_irq_restore(flags); ++ } ++ else ++ { ++ __flush_tlb(); ++ } ++} ++ + // ============================================================ + /* globals */ + +--- a/common/lib/modules/fglrx/build_mod/kcl_acpi.c 2015-09-19 00:43:35.000000000 -0400 ++++ b/common/lib/modules/fglrx/build_mod/kcl_acpi.c 2015-09-19 00:43:48.000000000 -0400 +@@ -868,7 +868,7 @@ void ATI_API_CALL KCL_ACPI_No_Hotplug(vo + #elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,17,0) + if(pdev) + { +-#if (UTS_UBUNTU_RELEASE_ABI < 0 && LINUX_VERSION_CODE < KERNEL_VERSION(4,1,3)) || (UTS_UBUNTU_RELEASE_ABI >= 0 && UTS_UBUNTU_RELEASE_ABI < 26 && LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,8)) ++#if 0 && (UTS_UBUNTU_RELEASE_ABI < 0 && LINUX_VERSION_CODE < KERNEL_VERSION(4,1,3)) || (UTS_UBUNTU_RELEASE_ABI >= 0 && UTS_UBUNTU_RELEASE_ABI < 26 && LINUX_VERSION_CODE <= KERNEL_VERSION(3,19,8)) + pci_ignore_hotplug(pdev); + #else + pdev->ignore_hotplug = 1; diff --git a/buildroot/package/amd-catalyst/20-fglrx.conf b/buildroot/package/amd-catalyst/20-fglrx.conf new file mode 100644 index 0000000..d83ff58 --- /dev/null +++ b/buildroot/package/amd-catalyst/20-fglrx.conf @@ -0,0 +1,4 @@ +Section "Device" + Identifier "AMD Radeon GPU" + Driver "fglrx" +EndSection diff --git a/buildroot/package/amd-catalyst/Config.in b/buildroot/package/amd-catalyst/Config.in new file mode 100644 index 0000000..85551ed --- /dev/null +++ b/buildroot/package/amd-catalyst/Config.in @@ -0,0 +1,81 @@ +comment "amd-catalyst needs a glibc toolchain" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_AMD_CATALYST + bool "amd-catalyst" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_USES_GLIBC + help + The binary-only driver blob for AMD cards. + This driver supports AMD Radeon HD 5xxx and newer graphics + cards. + + http://www.amd.com/ + +if BR2_PACKAGE_AMD_CATALYST + +comment "amd-catalyst X.org drivers needs a modular Xorg server <= 1.17" + depends on !BR2_PACKAGE_XORG7 \ + || !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR \ + || !BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19 + +config BR2_PACKAGE_AMD_CATALYST_XORG + bool "X.org drivers" + default y + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR + depends on BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19 + select BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX + select BR2_PACKAGE_ACPID # runtime + select BR2_PACKAGE_XLIB_LIBX11 # runtime + select BR2_PACKAGE_XLIB_LIBXEXT # runtime + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE # runtime + # This package does not have standard GL headers + select BR2_PACKAGE_MESA3D_HEADERS + select BR2_PACKAGE_HAS_LIBGL + +if BR2_PACKAGE_AMD_CATALYST_XORG + +config BR2_PACKAGE_PROVIDES_LIBGL + default "amd-catalyst" + +config BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS + bool "command-line configuration tools" + help + Build and install the AMD command line tools. + +comment "Catalyst Control Center needs Qt4 with X11 and PNG support" + depends on !BR2_PACKAGE_QT || !BR2_PACKAGE_QT_X11 \ + || BR2_PACKAGE_QT_NOPNG + +config BR2_PACKAGE_AMD_CATALYST_CCCLE + bool "Catalyst Control Center" + depends on BR2_PACKAGE_QT + depends on BR2_PACKAGE_QT_X11 + depends on !BR2_PACKAGE_QT_NOPNG + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # procps-ng + select BR2_PACKAGE_PROCPS_NG # runtime + select BR2_PACKAGE_QT_ACCESSIBILITY + help + Installs the Catalyst Control Center, a Qt graphical tool to + control AMD graphics accelerators. + +endif + +comment "amd-catalyst kernel module needs a kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_AMD_CATALYST_MODULE + bool "fglrx kernel module" + depends on BR2_LINUX_KERNEL + help + Builds and install the fglrx kernel module + +config BR2_PACKAGE_AMD_CATALYST_OPENCL + bool "OpenCL support" + help + Installs the OpenCL binary blobs and the ICD profile + for GPGPU computing. + +endif # BR2_PACKAGE_AMD_CATALYST diff --git a/buildroot/package/amd-catalyst/amd-catalyst.hash b/buildroot/package/amd-catalyst/amd-catalyst.hash new file mode 100644 index 0000000..9f9b0a3 --- /dev/null +++ b/buildroot/package/amd-catalyst/amd-catalyst.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 bf3e6e7d5c51db3d075410a3f116f865b82823debc1d66698d187249feec6a91 amd-catalyst-15.9-linux-installer-15.201.1151-x86.x86_64.zip diff --git a/buildroot/package/amd-catalyst/amd-catalyst.mk b/buildroot/package/amd-catalyst/amd-catalyst.mk new file mode 100644 index 0000000..b9396e1 --- /dev/null +++ b/buildroot/package/amd-catalyst/amd-catalyst.mk @@ -0,0 +1,172 @@ +################################################################################ +# +# amd-catalyst +# +################################################################################ + +AMD_CATALYST_VERSION = 15.9 +AMD_CATALYST_VERBOSE_VER = 15.201.1151 +AMD_CATALYST_SITE = http://www2.ati.com/drivers/linux +AMD_CATALYST_DL_OPTS = --referer='http://support.amd.com' +AMD_CATALYST_SOURCE = amd-catalyst-$(AMD_CATALYST_VERSION)-linux-installer-$(AMD_CATALYST_VERBOSE_VER)-x86.x86_64.zip +AMD_CATALYST_LICENSE = AMD Software License +AMD_CATALYST_LICENSE_FILES = LICENSE.TXT +AMD_CATALYST_INSTALL_STAGING = YES +AMD_CATALYST_SUFFIX = $(if $(BR2_x86_64),_64) +AMD_CATALYST_ARCH_DIR = $(@D)/arch/x86$(AMD_CATALYST_SUFFIX) +AMD_CATALYST_LIB_SUFFIX = $(if $(BR2_x86_64),64) + +define AMD_CATALYST_EXTRACT_CMDS + unzip -q $(DL_DIR)/$(AMD_CATALYST_SOURCE) -d $(@D) + $(SHELL) $(@D)/AMD-Catalyst-$(AMD_CATALYST_VERSION)-Linux-installer-$(AMD_CATALYST_VERBOSE_VER)-x86.x86_64.run --extract $(@D) +endef + +ifeq ($(BR2_PACKAGE_AMD_CATALYST_MODULE),y) +AMD_CATALYST_MODULE_SUBDIRS = common/lib/modules/fglrx/build_mod/2.6.x +AMD_CATALYST_MODULE_MAKE_OPTS = \ + CFLAGS_MODULE="-DCOMPAT_ALLOC_USER_SPACE=arch_compat_alloc_user_space" + +define AMD_CATALYST_PREPARE_MODULE + # The Makefile expects to have source in the folder 2.6.x + cp $(@D)/common/lib/modules/fglrx/build_mod/*.{c,h} \ + $(@D)/common/lib/modules/fglrx/build_mod/2.6.x + # This static lib is required during the link + cp $(@D)/arch/x86$(AMD_CATALYST_SUFFIX)/lib/modules/fglrx/build_mod/libfglrx_ip.a \ + $(@D)/common/lib/modules/fglrx/build_mod/2.6.x +endef + +AMD_CATALYST_POST_PATCH_HOOKS += AMD_CATALYST_PREPARE_MODULE + +$(eval $(kernel-module)) +endif + +ifeq ($(BR2_PACKAGE_AMD_CATALYST_OPENCL),y) + +AMD_CATALYST_OCL_SUFFIX = $(if $(BR2_x86_64),64,32) +AMD_CATALYST_OPENCL_FILES = \ + libOpenCL.so.1 \ + libaticalcl.so \ + libamdocl$(AMD_CATALYST_OCL_SUFFIX).so \ + libamdocl12cl$(AMD_CATALYST_OCL_SUFFIX).so + +define AMD_CATALYST_INSTALL_OPENCL + $(foreach f,$(AMD_CATALYST_OPENCL_FILES), \ + $(INSTALL) -D -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/lib$(AMD_CATALYST_LIB_SUFFIX)/$(f) $(TARGET_DIR)/usr/lib/$(f) + ) + ln -sf libOpenCL.so.1 \ + $(TARGET_DIR)/usr/lib/libOpenCL.so + $(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/bin/clinfo \ + $(TARGET_DIR)/usr/bin/clinfo + $(INSTALL) -D -m 0644 $(AMD_CATALYST_ARCH_DIR)/etc/OpenCL/vendors/amdocl$(AMD_CATALYST_OCL_SUFFIX).icd \ + $(TARGET_DIR)/etc/OpenCL/vendors/amdocl$(AMD_CATALYST_OCL_SUFFIX).icd +endef + +endif + +ifeq ($(BR2_PACKAGE_AMD_CATALYST_XORG), y) + +# GL headers are needed by any package that wants to use libgl, so they need to +# be installed before any user of it. The only way to do so is to have this +# package depends on mesa3d-headers. +AMD_CATALYST_DEPENDENCIES += mesa3d-headers +AMD_CATALYST_PROVIDES = libgl +AMD_CATALYST_X11R6_LIB = $(@D)/xpic$(if $(BR2_x86_64),_64a)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX) + +define AMD_CATALYST_INSTALL_GL_LIBS + $(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/fglrx/fglrx-libGL.so.1.2 \ + $(1)/usr/lib + ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so.1.2 + ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so.1 + ln -sf fglrx-libGL.so.1.2 $(1)/usr/lib/libGL.so +endef + +define AMD_CATALYST_INSTALL_STAGING_XORG + $(call AMD_CATALYST_INSTALL_GL_LIBS,$(STAGING_DIR)) + $(INSTALL) -D -m 0644 package/amd-catalyst/gl.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/gl.pc +endef + +AMD_CATALYST_XORG_DRIVERS_FILES = modules/amdxmm.so \ + modules/drivers/fglrx_drv.so \ + modules/linux/libfglrxdrm.so + +define AMD_CATALYST_INSTALL_XORG + # Xorg drivers + $(foreach f,$(AMD_CATALYST_XORG_DRIVERS_FILES), \ + $(INSTALL) -D -m 0755 $(AMD_CATALYST_X11R6_LIB)/$(f) \ + $(TARGET_DIR)/usr/lib/xorg/$(f) + ) + + # Xorg is not able to detect the driver automatically + $(INSTALL) -D -m 0644 package/amd-catalyst/20-fglrx.conf \ + $(TARGET_DIR)/etc/X11/xorg.conf.d/20-fglrx.conf + + # Common files: containing binary profiles about GPUs, + # required by the fglrx_drv xorg driver + $(INSTALL) -d $(TARGET_DIR)/etc/ati + $(INSTALL) -m 0644 $(@D)/common/etc/ati/* $(TARGET_DIR)/etc/ati/ + + # DRI and GLX xorg modules: by default DRI is activated, + # these modules are required by the fglrx_drv.so xorg driver + $(INSTALL) -D -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/modules/dri/fglrx_dri.so \ + $(TARGET_DIR)/usr/lib/dri/fglrx_dri.so + $(INSTALL) -D -m 0644 $(AMD_CATALYST_X11R6_LIB)/modules/extensions/fglrx/fglrx-libglx.so \ + $(TARGET_DIR)/usr/lib/xorg/modules/extensions/libglx.so + $(INSTALL) -D -m 0644 $(AMD_CATALYST_X11R6_LIB)/modules/glesx.so \ + $(TARGET_DIR)/usr/lib/xorg/modules/glesx.so + + # Userspace GL libraries, also runtime dependency of most of the cmdline + # tools + $(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/lib$(AMD_CATALYST_LIB_SUFFIX)/*.so \ + $(TARGET_DIR)/usr/lib/ + $(call AMD_CATALYST_INSTALL_GL_LIBS,$(TARGET_DIR)) + + # Runtime dependency required by libfglrxdrm.so + $(INSTALL) -m 0644 $(AMD_CATALYST_ARCH_DIR)/usr/lib$(AMD_CATALYST_LIB_SUFFIX)/libatiuki.so.1.0 \ + $(TARGET_DIR)/usr/lib/ + ln -sf libatiuki.so.1.0 \ + $(TARGET_DIR)/usr/lib/libatiuki.so.1 +endef + +endif + +ifeq ($(BR2_PACKAGE_AMD_CATALYST_CMDLINE_TOOLS), y) +AMD_CATALYST_CMDLINE_TOOLS_FILES = \ + atiode \ + atiodcli \ + fgl_glxgears \ + aticonfig \ + amd-console-helper \ + fglrxinfo + +define AMD_CATALYST_INSTALL_CMDLINE_TOOLS + $(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/sbin/atieventsd \ + $(TARGET_DIR)/usr/sbin + $(foreach f,$(AMD_CATALYST_CMDLINE_TOOLS_FILES), \ + $(INSTALL) -D -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/bin/$(f) \ + $(TARGET_DIR)/usr/bin/$(f) + ) +endef +endif + +ifeq ($(BR2_PACKAGE_AMD_CATALYST_CCCLE), y) +define AMD_CATALYST_INSTALL_CCCLE + $(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/X11R6/bin/amdcccle \ + $(TARGET_DIR)/usr/bin/amdcccle + $(INSTALL) -m 0755 $(AMD_CATALYST_ARCH_DIR)/usr/sbin/amdnotifyui \ + $(TARGET_DIR)/usr/sbin/amdnotifyui +endef +endif + +define AMD_CATALYST_INSTALL_STAGING_CMDS + $(call AMD_CATALYST_INSTALL_STAGING_XORG) +endef + +define AMD_CATALYST_INSTALL_TARGET_CMDS + $(call AMD_CATALYST_INSTALL_XORG) + $(call AMD_CATALYST_INSTALL_CMDLINE_TOOLS) + $(call AMD_CATALYST_INSTALL_CCCLE) + $(call AMD_CATALYST_INSTALL_OPENCL) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/amd-catalyst/gl.pc b/buildroot/package/amd-catalyst/gl.pc new file mode 100644 index 0000000..8729271 --- /dev/null +++ b/buildroot/package/amd-catalyst/gl.pc @@ -0,0 +1,12 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: gl +Description: AMD Catalyst OpenGL library +Version: 15.9 +Libs: -L${libdir} -lGL -lm -lXext -lX11 -ldl +Cflags: -I${includedir} +glx_tls: no + diff --git a/buildroot/package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch b/buildroot/package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch new file mode 100644 index 0000000..af07236 --- /dev/null +++ b/buildroot/package/android-tools/0001-Fix-makefiles-for-out-of-tree-build.patch @@ -0,0 +1,162 @@ +[PATCH] Fix makefiles for out-of-tree build + +Signed-off-by: Gary Bisson +--- + debian/makefiles/adb.mk | 10 +++++----- + debian/makefiles/adbd.mk | 33 ++++++++++++++++----------------- + debian/makefiles/fastboot.mk | 17 +++++++++-------- + 3 files changed, 30 insertions(+), 30 deletions(-) + +diff --git a/debian/makefiles/adb.mk b/debian/makefiles/adb.mk +index d9d4feb..654b9f1 100644 +--- a/debian/makefiles/adb.mk ++++ b/debian/makefiles/adb.mk +@@ -1,5 +1,6 @@ + # Makefile for adb; from https://heiher.info/2227.html + ++VPATH+= $(SRCDIR)/core/adb + SRCS+= adb.c + SRCS+= adb_client.c + SRCS+= adb_auth_host.c +@@ -17,7 +18,7 @@ SRCS+= usb_linux.c + SRCS+= usb_vendors.c + SRCS+= utils.c + +-VPATH+= ../libcutils ++VPATH+= $(SRCDIR)/core/libcutils + SRCS+= abort_socket.c + SRCS+= socket_inaddr_any_server.c + SRCS+= socket_local_client.c +@@ -28,7 +29,7 @@ SRCS+= socket_network_client.c + SRCS+= list.c + SRCS+= load_file.c + +-VPATH+= ../libzipfile ++VPATH+= $(SRCDIR)/core/libzipfile + SRCS+= centraldir.c + SRCS+= zipfile.c + +@@ -37,9 +38,8 @@ CPPFLAGS+= -DADB_HOST=1 + CPPFLAGS+= -DHAVE_FORKEXEC=1 + CPPFLAGS+= -DHAVE_SYMLINKS + CPPFLAGS+= -DHAVE_TERMIO_H +-CPPFLAGS+= -I. +-CPPFLAGS+= -I../include +-CPPFLAGS+= -I../../../external/zlib ++CPPFLAGS+= -I$(SRCDIR)/core/adb ++CPPFLAGS+= -I$(SRCDIR)/core/include + + LIBS+= -lc -lpthread -lz -lcrypto + +diff --git a/debian/makefiles/adbd.mk b/debian/makefiles/adbd.mk +index 94d3a90..49dab8c 100644 +--- a/debian/makefiles/adbd.mk ++++ b/debian/makefiles/adbd.mk +@@ -1,18 +1,6 @@ + # Makefile for adbd + +-VPATH+= ../libcutils +-SRCS+= abort_socket.c +-SRCS+= socket_inaddr_any_server.c +-SRCS+= socket_local_client.c +-SRCS+= socket_local_server.c +-SRCS+= socket_loopback_client.c +-SRCS+= socket_loopback_server.c +-SRCS+= socket_network_client.c +-SRCS+= list.c +-SRCS+= load_file.c +-SRCS+= android_reboot.c +- +-#VPATH+= ../adb ++VPATH+= $(SRCDIR)/core/adbd + SRCS+= adb.c + SRCS+= backup_service.c + SRCS+= fdevent.c +@@ -31,7 +19,19 @@ SRCS+= log_service.c + SRCS+= utils.c + SRCS+= base64.c + +-VPATH+= ../libzipfile ++VPATH+= $(SRCDIR)/core/libcutils ++SRCS+= abort_socket.c ++SRCS+= socket_inaddr_any_server.c ++SRCS+= socket_local_client.c ++SRCS+= socket_local_server.c ++SRCS+= socket_loopback_client.c ++SRCS+= socket_loopback_server.c ++SRCS+= socket_network_client.c ++SRCS+= list.c ++SRCS+= load_file.c ++SRCS+= android_reboot.c ++ ++VPATH+= $(SRCDIR)/core/libzipfile + SRCS+= centraldir.c + SRCS+= zipfile.c + +@@ -40,10 +40,9 @@ CPPFLAGS+= -O2 -g -Wall -Wno-unused-parameter + CPPFLAGS+= -DADB_HOST=0 -DHAVE_FORKEXEC=1 -D_XOPEN_SOURCE -D_GNU_SOURCE -DALLOW_ADBD_ROOT=1 + CPPFLAGS+= -DHAVE_SYMLINKS -DBOARD_ALWAYS_INSECURE + CPPFLAGS+= -DHAVE_TERMIO_H +-CPPFLAGS+= -I. +-CPPFLAGS+= -I../include +-CPPFLAGS+= -I../../../external/zlib + CPPFLAGS+= `pkg-config --cflags glib-2.0 gio-2.0` ++CPPFLAGS+= -I$(SRCDIR)/core/adbd ++CPPFLAGS+= -I$(SRCDIR)/core/include + + LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0` + +diff --git a/debian/makefiles/fastboot.mk b/debian/makefiles/fastboot.mk +index 9e8b751..94a069b 100644 +--- a/debian/makefiles/fastboot.mk ++++ b/debian/makefiles/fastboot.mk +@@ -1,5 +1,6 @@ + # Makefile for fastboot; from https://heiher.info/2227.html + ++VPATH+= $(SRCDIR)/core/fastboot + SRCS+= bootimg.c + SRCS+= engine.c + SRCS+= fastboot.c +@@ -7,11 +8,11 @@ SRCS+= protocol.c + SRCS+= usb_linux.c + SRCS+= util_linux.c + +-VPATH+= ../libzipfile ++VPATH+= $(SRCDIR)/core/libzipfile + SRCS+= centraldir.c + SRCS+= zipfile.c + +-VPATH+= ../libsparse ++VPATH+= $(SRCDIR)/core/libsparse + SRCS+= backed_block.c + SRCS+= sparse_crc32.c + SRCS+= sparse.c +@@ -19,7 +20,7 @@ SRCS+= sparse_read.c + SRCS+= sparse_err.c + SRCS+= output_file.c + +-VPATH+= ../../extras/ext4_utils/ ++VPATH+= $(SRCDIR)/extras/ext4_utils/ + SRCS+= make_ext4fs.c + SRCS+= crc16.c + SRCS+= ext4_utils.c +@@ -31,11 +32,11 @@ SRCS+= extent.c + SRCS+= wipe.c + SRCS+= sha1.c + +-CPPFLAGS+= -I. +-CPPFLAGS+= -I../include +-CPPFLAGS+= -I../mkbootimg +-CPPFLAGS+= -I../../extras/ext4_utils/ +-CPPFLAGS+= -I../libsparse/include/ ++CPPFLAGS+= -I$(SRCDIR)/core/fastboot ++CPPFLAGS+= -I$(SRCDIR)/core/include ++CPPFLAGS+= -I$(SRCDIR)/core/mkbootimg ++CPPFLAGS+= -I$(SRCDIR)/extras/ext4_utils/ ++CPPFLAGS+= -I$(SRCDIR)/core/libsparse/include/ + + LIBS+= -lz -lselinux + +-- +2.5.1 + diff --git a/buildroot/package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch b/buildroot/package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch new file mode 100644 index 0000000..35f6c8a --- /dev/null +++ b/buildroot/package/android-tools/0002-Fix-adbd-for-non-Ubuntu-systems.patch @@ -0,0 +1,264 @@ +[PATCH] Fix adbd for non-Ubuntu systems + +Remove glib/dbus dependencies and partially restore services.c to be +closer to the original source code in order to run on systems without +sudo. + +Signed-off-by: Gary Bisson +--- + core/adbd/adb.c | 1 - + core/adbd/services.c | 160 ++++------------------------------------------- + debian/makefiles/adbd.mk | 4 +- + 3 files changed, 14 insertions(+), 151 deletions(-) + +diff --git a/core/adbd/adb.c b/core/adbd/adb.c +index d90e6b8..7fe6445 100644 +--- a/core/adbd/adb.c ++++ b/core/adbd/adb.c +@@ -1165,7 +1165,6 @@ void build_local_name(char* target_str, size_t target_size, int server_port) + + #if !ADB_HOST + static int should_drop_privileges() { +- return 1; + #ifndef ALLOW_ADBD_ROOT + return 1; + #else /* ALLOW_ADBD_ROOT */ +diff --git a/core/adbd/services.c b/core/adbd/services.c +index 05bd0d0..5adcefe 100644 +--- a/core/adbd/services.c ++++ b/core/adbd/services.c +@@ -20,15 +20,6 @@ + #include + #include + #include +-#include +-#include +- +-#define UNITY_SERVICE "com.canonical.UnityGreeter" +-#define GREETER_OBJ "/" +-#define GREETER_INTERFACE "com.canonical.UnityGreeter" +-#define PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties" +-#define ACTIVE_PROPERTY "IsActive" +-#define UNLOCK_PATH "/userdata/.adb_onlock" + + #include "sysdeps.h" + +@@ -268,11 +259,11 @@ static int create_service_thread(void (*func)(int, void *), void *cookie) + } + + #if !ADB_HOST +-static int create_subprocess(const char *cmd, const char *arg0, const char *arg1, const char *arg2, const char *arg3, const char *arg4, pid_t *pid) ++static int create_subprocess(const char *cmd, const char *arg0, const char *arg1, pid_t *pid) + { + #ifdef HAVE_WIN32_PROC +- D("create_subprocess(cmd=%s, arg0=%s, arg1=%s, arg2=%s, arg3=%, arg4=%ss)\n", cmd, arg0, arg1, arg2, arg3, arg4); +- fprintf(stderr, "error: create_subprocess not implemented on Win32 (%s %s %s %s %s %s)\n", cmd, arg0, arg1, arg2, arg3, arg4); ++ D("create_subprocess(cmd=%s, arg0=%s, arg1=%s)\n", cmd, arg0, arg1); ++ fprintf(stderr, "error: create_subprocess not implemented on Win32 (%s %s %s)\n", cmd, arg0, arg1); + return -1; + #else /* !HAVE_WIN32_PROC */ + char *devname; +@@ -327,7 +318,7 @@ static int create_subprocess(const char *cmd, const char *arg0, const char *arg1 + } else { + D("adb: unable to open %s\n", text); + } +- execl(cmd, cmd, arg0, arg1, arg2, arg3, arg4, NULL); ++ execl(cmd, cmd, arg0, arg1, NULL); + fprintf(stderr, "- exec '%s' failed: %s (%d) -\n", + cmd, strerror(errno), errno); + exit(-1); +@@ -342,7 +333,7 @@ static int create_subprocess(const char *cmd, const char *arg0, const char *arg1 + } + #endif /* !ABD_HOST */ + +-#if ADB_HOST ++#if ADB_HOST || ADBD_NON_ANDROID + #define SHELL_COMMAND "/bin/sh" + #else + #define SHELL_COMMAND "/system/bin/sh" +@@ -380,139 +371,16 @@ static void subproc_waiter_service(int fd, void *cookie) + } + } + +-int is_phone_locked() { +- GError *error = NULL; +- GVariant *variant = NULL; +- GDBusConnection *connection = NULL; +- +- if (g_file_test(UNLOCK_PATH, G_FILE_TEST_EXISTS)) { +- D("unlock path present."); +- return 0; +- } +- +- // check if the environment variable is present, if not we grab it from +- // the phablet user +- if (g_getenv("DBUS_SESSION_BUS_ADDRESS") == NULL) { +- D("DBUS_SESSION_BUS_ADDRESS missing.\n"); +- struct passwd *pw = getpwuid(AID_SHELL); +- char user_id[15]; +- gchar *path = NULL; +- gchar *contents = NULL; +- gchar *session_path = NULL; +- +- snprintf(user_id, sizeof user_id, "%d", pw->pw_uid); +- +- path = g_build_filename("/run", "user", user_id, "dbus-session", NULL); +- +- g_file_get_contents(path, &contents, NULL, &error); +- session_path = g_strstrip(g_strsplit(contents, "DBUS_SESSION_BUS_ADDRESS=", -1)[1]); +- D("Session bus is %s\n", session_path); +- +- // path is not longer used +- g_free(path); +- +- if (error != NULL) { +- g_clear_error(&error); +- D("Couldn't set session bus\n"); +- return 1; +- } +- +- g_setenv("DBUS_SESSION_BUS_ADDRESS", session_path, TRUE); +- g_free(contents); +- } +- +- // set the uid to be able to connect to the phablet user session bus +- setuid(AID_SHELL); +- connection = g_dbus_connection_new_for_address_sync(g_getenv("DBUS_SESSION_BUS_ADDRESS"), +- G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, +- NULL, +- NULL, +- &error); +- if (connection == NULL) { +- D("session bus not available: %s", error->message); +- g_error_free (error); +- return 1; +- } +- +- variant = g_dbus_connection_call_sync(connection, +- UNITY_SERVICE, +- GREETER_OBJ, +- PROPERTIES_INTERFACE, +- "Get", +- g_variant_new("(ss)", GREETER_INTERFACE, ACTIVE_PROPERTY), +- g_variant_type_new("(v)"), +- G_DBUS_CALL_FLAGS_NONE, +- -1, +- NULL, +- &error); +- +- if (error != NULL) { +- D("Could not get property: %s", error->message); +- g_object_unref(connection); +- g_error_free(error); +- return 1; +- } +- +- if (variant == NULL) { +- D("Failed to get property '%s': %s", "IsActive", error->message); +- g_object_unref(connection); +- g_error_free(error); +- return 1; +- } +- +- variant = g_variant_get_variant(g_variant_get_child_value(variant, 0)); +- +- int active = 1; +- if (!g_variant_get_boolean(variant)) { +- active = 0; +- } +- +- // get back to be root and return the value +- g_object_unref(connection); +- g_variant_unref(variant); +- setuid(0); +- return active; +-} +- + static int create_subproc_thread(const char *name) + { +- if (is_phone_locked() ) { +- fprintf(stderr, "device is locked\n"); +- return -1; +- } +- + stinfo *sti; + adb_thread_t t; + int ret_fd; + pid_t pid; +- +- struct passwd *user = getpwuid(getuid()); +- char *shell; +- char *shellopts = "-c"; +- char *home; +- char *sudo = "/usr/bin/sudo"; +- char useropt[256] = "-u"; +- +- if (user->pw_name) +- strcat(useropt, user->pw_name); +- +- if (user && user->pw_shell) { +- shell = user->pw_shell; +- shellopts = "-cl"; +- } else { +- shell = SHELL_COMMAND; +- } +- +- if (user->pw_dir) +- home = user->pw_dir; +- if(chdir(home) < 0 ) +- return 1; +- + if(name) { +- ret_fd = create_subprocess(sudo, useropt, "-i", shell, shellopts, name, &pid); ++ ret_fd = create_subprocess(SHELL_COMMAND, "-c", name, &pid); + } else { +- shellopts = "-l"; +- ret_fd = create_subprocess(sudo, useropt, "-i", shell, shellopts, 0, &pid); ++ ret_fd = create_subprocess(SHELL_COMMAND, "-", 0, &pid); + } + D("create_subprocess() ret_fd=%d pid=%d\n", ret_fd, pid); + +@@ -585,17 +453,13 @@ int service_to_fd(const char *name) + } else if (!strncmp(name, "log:", 4)) { + ret = create_service_thread(log_service, get_log_file_path(name + 4)); + } else if(!HOST && !strncmp(name, "shell:", 6)) { +- if (!is_phone_locked() ) { +- if(name[6]) { +- ret = create_subproc_thread(name + 6); +- } else { +- ret = create_subproc_thread(0); +- } ++ if(name[6]) { ++ ret = create_subproc_thread(name + 6); ++ } else { ++ ret = create_subproc_thread(0); + } + } else if(!strncmp(name, "sync:", 5)) { +- if (!is_phone_locked() ) { +- ret = create_service_thread(file_sync_service, NULL); +- } ++ ret = create_service_thread(file_sync_service, NULL); + } else if(!strncmp(name, "remount:", 8)) { + ret = create_service_thread(remount_service, NULL); + } else if(!strncmp(name, "reboot:", 7)) { +diff --git a/debian/makefiles/adbd.mk b/debian/makefiles/adbd.mk +index 49dab8c..22c1816 100644 +--- a/debian/makefiles/adbd.mk ++++ b/debian/makefiles/adbd.mk +@@ -40,11 +40,11 @@ CPPFLAGS+= -O2 -g -Wall -Wno-unused-parameter + CPPFLAGS+= -DADB_HOST=0 -DHAVE_FORKEXEC=1 -D_XOPEN_SOURCE -D_GNU_SOURCE -DALLOW_ADBD_ROOT=1 + CPPFLAGS+= -DHAVE_SYMLINKS -DBOARD_ALWAYS_INSECURE + CPPFLAGS+= -DHAVE_TERMIO_H +-CPPFLAGS+= `pkg-config --cflags glib-2.0 gio-2.0` ++CPPFLAGS+= -DADBD_NON_ANDROID + CPPFLAGS+= -I$(SRCDIR)/core/adbd + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt `pkg-config --libs glib-2.0 gio-2.0` ++LIBS+= -lc -lpthread -lz -lcrypto -lcrypt + + OBJS= $(patsubst %, %.o, $(basename $(SRCS))) + +-- +2.5.1 + diff --git a/buildroot/package/android-tools/0003-Fix-build-issue-with-uclibc.patch b/buildroot/package/android-tools/0003-Fix-build-issue-with-uclibc.patch new file mode 100644 index 0000000..95517c3 --- /dev/null +++ b/buildroot/package/android-tools/0003-Fix-build-issue-with-uclibc.patch @@ -0,0 +1,36 @@ +[PATCH] Fix build issue with uclibc + +Signed-off-by: Gary Bisson +--- + core/adbd/adb_auth_client.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/core/adb/adb_auth_client.c b/core/adb/adb_auth_client.c +index 0b4913e..068d837 100644 +--- a/core/adb/adb_auth_client.c ++++ b/core/adb/adb_auth_client.c +@@ -72,7 +72,7 @@ static void read_keys(const char *file, struct listnode *list) + if (sep) + *sep = '\0'; + +- ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); ++ ret = b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); + if (ret != sizeof(key->key)) { + D("%s: Invalid base64 data ret=%d\n", file, ret); + free(key); +diff --git a/core/adbd/adb_auth_client.c b/core/adbd/adb_auth_client.c +index 0b4913e..068d837 100644 +--- a/core/adbd/adb_auth_client.c ++++ b/core/adbd/adb_auth_client.c +@@ -72,7 +72,7 @@ static void read_keys(const char *file, struct listnode *list) + if (sep) + *sep = '\0'; + +- ret = __b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); ++ ret = b64_pton(buf, (u_char *)&key->key, sizeof(key->key) + 4); + if (ret != sizeof(key->key)) { + D("%s: Invalid base64 data ret=%d\n", file, ret); + free(key); +-- +2.6.1 + diff --git a/buildroot/package/android-tools/0004-Fix-build-issue-with-musl.patch b/buildroot/package/android-tools/0004-Fix-build-issue-with-musl.patch new file mode 100644 index 0000000..964eb87 --- /dev/null +++ b/buildroot/package/android-tools/0004-Fix-build-issue-with-musl.patch @@ -0,0 +1,54 @@ +[PATCH] Fix build issue with musl + +arpa/nameser.h doesn't use the same macro name to avoid several +inclusions. + +Finally had an issue with framebuffer_service.c since it was missing the +TEMP_FAILURE_RETRY macro. + +Signed-off-by: Gary Bisson +--- + core/adbd/arpa_nameser.h | 12 +++++++++--- + core/adbd/base64.c | 1 - + core/adbd/framebuffer_service.c | 1 + + core/adbd/qemu_pipe.h | 1 - + core/include/cutils/android_reboot.h | 8 ++++++-- + core/include/cutils/bitops.h | 10 ++++++---- + core/include/cutils/partition_utils.h | 8 ++++++-- + extras/ext4_utils/sha1.c | 3 --- + extras/ext4_utils/sha1.h | 13 ++++++------- + 9 files changed, 34 insertions(+), 23 deletions(-) + +diff --git a/core/adbd/arpa_nameser.h b/core/adbd/arpa_nameser.h +index 438dc04..b2a28d6 100644 +--- a/core/adbd/arpa_nameser.h ++++ b/core/adbd/arpa_nameser.h +@@ -52,6 +52,8 @@ + + #ifndef _ARPA_NAMESER_H_ + #define _ARPA_NAMESER_H_ ++#ifndef _ARPA_NAMESER_H ++#define _ARPA_NAMESER_H + + #define BIND_4_COMPAT + +@@ -574,4 +579,5 @@ __END_DECLS + #define XLOG(...) do {} while (0) + #endif + ++#endif /* !_ARPA_NAMESER_H */ + #endif /* !_ARPA_NAMESER_H_ */ +diff --git a/core/adbd/framebuffer_service.c b/core/adbd/framebuffer_service.c +index 20c08d2..48e0241 100644 +--- a/core/adbd/framebuffer_service.c ++++ b/core/adbd/framebuffer_service.c +@@ -26,6 +26,7 @@ + #include "fdevent.h" + #include "adb.h" + ++#include + #include + #include + #include +-- +2.6.1 diff --git a/buildroot/package/android-tools/0005-fix-static-link-zlib.patch b/buildroot/package/android-tools/0005-fix-static-link-zlib.patch new file mode 100644 index 0000000..dff4df6 --- /dev/null +++ b/buildroot/package/android-tools/0005-fix-static-link-zlib.patch @@ -0,0 +1,36 @@ +Fix static linking of adb/adbd + +Both adb and adbd use OpenSSL, which indirectly uses zlib. Since +adb/adbd also use zlib directly -lz is included in the linker flags, +but not at the right position to ensure that static linking works: to +make it possible for OpenSSL symbols to see zlib symbols, -lz must +appear after -lcrypto. + +Signed-off-by: Thomas Petazzoni + +Index: b/debian/makefiles/adb.mk +=================================================================== +--- a/debian/makefiles/adb.mk ++++ b/debian/makefiles/adb.mk +@@ -41,7 +41,7 @@ + CPPFLAGS+= -I$(SRCDIR)/core/adb + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto ++LIBS+= -lc -lpthread -lcrypto -lz + + OBJS= $(SRCS:.c=.o) + +Index: b/debian/makefiles/adbd.mk +=================================================================== +--- a/debian/makefiles/adbd.mk ++++ b/debian/makefiles/adbd.mk +@@ -44,7 +44,7 @@ + CPPFLAGS+= -I$(SRCDIR)/core/adbd + CPPFLAGS+= -I$(SRCDIR)/core/include + +-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt ++LIBS+= -lc -lpthread -lcrypto -lz -lcrypt + + OBJS= $(patsubst %, %.o, $(basename $(SRCS))) + diff --git a/buildroot/package/android-tools/0006-fix-big-endian-build.patch b/buildroot/package/android-tools/0006-fix-big-endian-build.patch new file mode 100644 index 0000000..c35fdcb --- /dev/null +++ b/buildroot/package/android-tools/0006-fix-big-endian-build.patch @@ -0,0 +1,61 @@ +Fix build on big endian systems + +The usb_linux_client.c file defines cpu_to_le16/32 by using the C +library htole16/32 function calls. However, cpu_to_le16/32 are used +when initializing structures, i.e in a context where a function call +is not allowed. + +It works fine on little endian systems because htole16/32 are defined +by the C library as no-ops. But on big-endian systems, they are +actually doing something, which might involve calling a function, +causing build failures. + +To solve this, we simply open-code cpu_to_le16/32 in a way that allows +them to be used when initializing structures. + +Signed-off-by: Thomas Petazzoni + +Index: b/core/adb/usb_linux_client.c +=================================================================== +--- a/core/adb/usb_linux_client.c ++++ b/core/adb/usb_linux_client.c +@@ -34,8 +34,15 @@ + #define MAX_PACKET_SIZE_FS 64 + #define MAX_PACKET_SIZE_HS 512 + +-#define cpu_to_le16(x) htole16(x) +-#define cpu_to_le32(x) htole32(x) ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++# define cpu_to_le16(x) (x) ++# define cpu_to_le32(x) (x) ++#else ++# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)) ++# define cpu_to_le32(x) \ ++ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \ ++ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) ++#endif + + struct usb_handle + { +Index: b/core/adbd/usb_linux_client.c +=================================================================== +--- a/core/adbd/usb_linux_client.c ++++ b/core/adbd/usb_linux_client.c +@@ -34,8 +34,15 @@ + #define MAX_PACKET_SIZE_FS 64 + #define MAX_PACKET_SIZE_HS 512 + +-#define cpu_to_le16(x) htole16(x) +-#define cpu_to_le32(x) htole32(x) ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++# define cpu_to_le16(x) (x) ++# define cpu_to_le32(x) (x) ++#else ++# define cpu_to_le16(x) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)) ++# define cpu_to_le32(x) \ ++ ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | \ ++ (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) ++#endif + + struct usb_handle + { diff --git a/buildroot/package/android-tools/0007-include-cdefs-h-when-needed.patch b/buildroot/package/android-tools/0007-include-cdefs-h-when-needed.patch new file mode 100644 index 0000000..da4ee13 --- /dev/null +++ b/buildroot/package/android-tools/0007-include-cdefs-h-when-needed.patch @@ -0,0 +1,41 @@ +Include cdefs.h wherever it is needed + +cdefs.h is included from within a lot of glibc headers, so it almost +invariably and automagically gets pulled in with glibc. + +However, this might not be the case with other C libraries. musl does +not provide cdefs.h so it does not include it from its own headers +(cdefs.h must be provided separately). + +So we must include it when we are going to use macros it provides. + +Signed-off-by: "Yann E. MORIN" +--- + core/adbd/services.c | 1 + + core/libcutils/android_reboot.c | 1 + + 2 files changed, 2 insertions(+), 0 deletion(-) + +diff --git a/core/adbd/services.c b/core/adbd/services.c +index 20c08d2..48e0241 100644 +--- a/core/adbd/services.c ++++ b/core/adbd/services.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + #include "sysdeps.h" + +diff --git a/core/libcutils/android_reboot.c b/core/libcutils/android_reboot.c +index 20c08d2..48e0241 100644 +--- a/core/libcutils/android_reboot.c ++++ b/core/libcutils/android_reboot.c +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + #include + diff --git a/buildroot/package/android-tools/Config.in b/buildroot/package/android-tools/Config.in new file mode 100644 index 0000000..96e36e6 --- /dev/null +++ b/buildroot/package/android-tools/Config.in @@ -0,0 +1,82 @@ +config BR2_PACKAGE_ANDROID_TOOLS + bool "android-tools" + # Technically, fastboot could build on noMMU systems. But + # since we need at least one of the three sub-options enabled, + # and adb/adbd can't be built on noMMU systems, and fastboot + # has some complicated dependencies, we simply make the whole + # package not available on noMMU platforms. + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ANDROID_TOOLS_ADBD if \ + !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT && \ + !BR2_PACKAGE_ANDROID_TOOLS_ADB + help + This package contains the fastboot and adb utilities, that + can be used to interact with target devices using of these + protocols. + +if BR2_PACKAGE_ANDROID_TOOLS + +# We need kernel headers that support the __SANE_USERSPACE_TYPES__ +# mechanism for 64 bits architectures, so that u64 gets defined as +# "unsigned long long" and not "unsigned long". We know that >= 3.16 +# is needed for MIPS64 (kernel commit +# f4b3aa7cd9d32407670e67238c5ee752bb98f481) and >= 3.10 is needed for +# PowerPC64 (kernel commit +# 2c9c6ce0199a4d252e20c531cfdc9d24e39235c0). Without this, the build +# fails with a bad redefinition of u64 (the android-tools fastboot +# code defines it as "unsigned long long"). +config BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS + bool + default y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 && (BR2_powerpc64 || BR2_powerpc64le) + default y if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 && (BR2_mips64 || BR2_mips64el) + default y if !BR2_powerpc64 && !BR2_powerpc64le && !BR2_mips64 && !BR2_mips64el + +config BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT + bool "fastboot" + depends on BR2_TOOLCHAIN_HAS_THREADS # libselinux + depends on !BR2_STATIC_LIBS # libselinux + depends on BR2_TOOLCHAIN_USES_GLIBC # libselinux + depends on !BR2_arc # libselinux + depends on BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS + select BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_ZLIB + help + This option will build and install the fastboot utility for + the target, which can be used to reflash other target devices + implementing the fastboot protocol. + +comment "fastboot needs a glibc toolchain w/ threads, dynamic library" + depends on !BR2_arc + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_USES_GLIBC + +comment "fastboot needs headers >= 3.10 (PowerPC64), headers >= 3.16 (MIPS64)" + depends on !BR2_arc + depends on !BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT_GOOD_KERNEL_HEADERS + +config BR2_PACKAGE_ANDROID_TOOLS_ADB + bool "adb" + depends on BR2_USE_MMU # uses fork() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + This option will build and install the adb utility for the + target, which can be used to interact with other target + devices implementing the ADB protocol. + +config BR2_PACKAGE_ANDROID_TOOLS_ADBD + bool "adbd" + depends on BR2_USE_MMU # uses fork() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + This option will build and install the adbd utility for the + target, which can be used to interact with a host machine + implementing the ADB protocol. + +endif + +comment "android-tools needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/android-tools/Config.in.host b/buildroot/package/android-tools/Config.in.host new file mode 100644 index 0000000..993c4c9 --- /dev/null +++ b/buildroot/package/android-tools/Config.in.host @@ -0,0 +1,26 @@ +config BR2_PACKAGE_HOST_ANDROID_TOOLS + bool "host android-tools" + select BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB if \ + !BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT + help + This package contains the fastboot and adb utilities, that + can be used to interact with target devices using of these + protocols. + +if BR2_PACKAGE_HOST_ANDROID_TOOLS + +config BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT + bool "fastboot" + help + This option will build and install the fastboot utility for + the host, which can be used to reflash target devices + implementing the fastboot protocol. + +config BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB + bool "adb" + help + This option will build and install the adb utility for the + host, which can be used to interact with target devices + implementing the ADB protocol. + +endif diff --git a/buildroot/package/android-tools/android-tools.hash b/buildroot/package/android-tools/android-tools.hash new file mode 100644 index 0000000..7afa044 --- /dev/null +++ b/buildroot/package/android-tools/android-tools.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 9bfba987e1351b12aa983787b9ae4424ab752e9e646d8e93771538dc1e5d932f android-tools_4.2.2+git20130218.orig.tar.xz +sha256 73c3078de3e44d8a3cadf7a360863c63155d9d558c2f0933cf38ad901a3f5998 android-tools_4.2.2+git20130218-3ubuntu41.debian.tar.gz diff --git a/buildroot/package/android-tools/android-tools.mk b/buildroot/package/android-tools/android-tools.mk new file mode 100644 index 0000000..f6c6913 --- /dev/null +++ b/buildroot/package/android-tools/android-tools.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# android-tools +# +################################################################################ + +ANDROID_TOOLS_SITE = https://launchpad.net/ubuntu/+archive/primary/+files +ANDROID_TOOLS_VERSION = 4.2.2+git20130218 +ANDROID_TOOLS_SOURCE = android-tools_$(ANDROID_TOOLS_VERSION).orig.tar.xz +ANDROID_TOOLS_EXTRA_DOWNLOADS = android-tools_$(ANDROID_TOOLS_VERSION)-3ubuntu41.debian.tar.gz +HOST_ANDROID_TOOLS_EXTRA_DOWNLOADS = $(ANDROID_TOOLS_EXTRA_DOWNLOADS) +ANDROID_TOOLS_LICENSE = Apache-2.0 +ANDROID_TOOLS_LICENSE_FILES = debian/copyright + +# Extract the Debian tarball inside the sources +define ANDROID_TOOLS_DEBIAN_EXTRACT + $(call suitable-extractor,$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS))) \ + $(DL_DIR)/$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS)) | \ + $(TAR) -C $(@D) $(TAR_OPTIONS) - +endef + +HOST_ANDROID_TOOLS_POST_EXTRACT_HOOKS += ANDROID_TOOLS_DEBIAN_EXTRACT +ANDROID_TOOLS_POST_EXTRACT_HOOKS += ANDROID_TOOLS_DEBIAN_EXTRACT + +# Apply the Debian patches before applying the Buildroot patches +define ANDROID_TOOLS_DEBIAN_PATCH + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches \* +endef + +HOST_ANDROID_TOOLS_PRE_PATCH_HOOKS += ANDROID_TOOLS_DEBIAN_PATCH +ANDROID_TOOLS_PRE_PATCH_HOOKS += ANDROID_TOOLS_DEBIAN_PATCH + +ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_FASTBOOT),y) +HOST_ANDROID_TOOLS_TARGETS += fastboot +HOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-libselinux +endif + +ifeq ($(BR2_PACKAGE_HOST_ANDROID_TOOLS_ADB),y) +HOST_ANDROID_TOOLS_TARGETS += adb +HOST_ANDROID_TOOLS_DEPENDENCIES += host-zlib host-openssl +endif + +ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_FASTBOOT),y) +ANDROID_TOOLS_TARGETS += fastboot +ANDROID_TOOLS_DEPENDENCIES += zlib libselinux +endif + +ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_ADB),y) +ANDROID_TOOLS_TARGETS += adb +ANDROID_TOOLS_DEPENDENCIES += zlib openssl +endif + +ifeq ($(BR2_PACKAGE_ANDROID_TOOLS_ADBD),y) +ANDROID_TOOLS_TARGETS += adbd +ANDROID_TOOLS_DEPENDENCIES += zlib openssl +endif + +# Build each tool in its own directory not to share object files + +define HOST_ANDROID_TOOLS_BUILD_CMDS + $(foreach t,$(HOST_ANDROID_TOOLS_TARGETS),\ + mkdir -p $(@D)/build-$(t) && \ + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \ + -C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep)) +endef + +define ANDROID_TOOLS_BUILD_CMDS + $(foreach t,$(ANDROID_TOOLS_TARGETS),\ + mkdir -p $(@D)/build-$(t) && \ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) SRCDIR=$(@D) \ + -C $(@D)/build-$(t) -f $(@D)/debian/makefiles/$(t).mk$(sep)) +endef + +define HOST_ANDROID_TOOLS_INSTALL_CMDS + $(foreach t,$(HOST_ANDROID_TOOLS_TARGETS),\ + $(INSTALL) -D -m 0755 $(@D)/build-$(t)/$(t) $(HOST_DIR)/bin/$(t)$(sep)) +endef + +define ANDROID_TOOLS_INSTALL_TARGET_CMDS + $(foreach t,$(ANDROID_TOOLS_TARGETS),\ + $(INSTALL) -D -m 0755 $(@D)/build-$(t)/$(t) $(TARGET_DIR)/usr/bin/$(t)$(sep)) +endef + +$(eval $(host-generic-package)) +$(eval $(generic-package)) diff --git a/buildroot/package/angular-websocket/Config.in b/buildroot/package/angular-websocket/Config.in new file mode 100644 index 0000000..0981bd0 --- /dev/null +++ b/buildroot/package/angular-websocket/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ANGULAR_WEBSOCKET + bool "angular-websocket" + help + An AngularJS WebSocket service for connecting client + applications to servers. + + https://github.com/AngularClass/angular-websocket diff --git a/buildroot/package/angular-websocket/angular-websocket.hash b/buildroot/package/angular-websocket/angular-websocket.hash new file mode 100644 index 0000000..3670068 --- /dev/null +++ b/buildroot/package/angular-websocket/angular-websocket.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 69d752896bc17c08750a2fda24b5eb3c6d653afc6f406dd90a6b7c920b22a14a angular-websocket-v2.0.0.tar.gz diff --git a/buildroot/package/angular-websocket/angular-websocket.mk b/buildroot/package/angular-websocket/angular-websocket.mk new file mode 100644 index 0000000..b422847 --- /dev/null +++ b/buildroot/package/angular-websocket/angular-websocket.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# angular-websocket +# +################################################################################ + +ANGULAR_WEBSOCKET_VERSION = v2.0.0 +ANGULAR_WEBSOCKET_SITE = $(call github,AngularClass,angular-websocket,$(ANGULAR_WEBSOCKET_VERSION)) +ANGULAR_WEBSOCKET_LICENSE = MIT +ANGULAR_WEBSOCKET_LICENSE_FILES = LICENSE + +# install .min.js as .js +define ANGULAR_WEBSOCKET_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/dist/angular-websocket.min.js \ + $(TARGET_DIR)/var/www/angular-websocket.js +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/angularjs/Config.in b/buildroot/package/angularjs/Config.in new file mode 100644 index 0000000..f0d2015 --- /dev/null +++ b/buildroot/package/angularjs/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ANGULARJS + bool "angularjs" + help + AngularJS web application framework. + + http://angularjs.org diff --git a/buildroot/package/angularjs/angularjs.hash b/buildroot/package/angularjs/angularjs.hash new file mode 100644 index 0000000..918c049 --- /dev/null +++ b/buildroot/package/angularjs/angularjs.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 4d4e87d24c7d522f4ee765e4f7d454b9cf2a0f6407248545528064e66ad7b085 angular-1.6.7.zip +sha256 cec36623ceba33c503784164917c206047079159bf88f51a695a4dfb9d9b7ede angular.js diff --git a/buildroot/package/angularjs/angularjs.mk b/buildroot/package/angularjs/angularjs.mk new file mode 100644 index 0000000..60702a2 --- /dev/null +++ b/buildroot/package/angularjs/angularjs.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# angularjs +# +################################################################################ + +ANGULARJS_VERSION = 1.6.7 +ANGULARJS_SOURCE = angular-$(ANGULARJS_VERSION).zip +ANGULARJS_SITE = https://code.angularjs.org/$(ANGULARJS_VERSION) +ANGULARJS_LICENSE = MIT +# There's no separate license file in the archive, so use angular.js instead. +ANGULARJS_LICENSE_FILES = angular.js + +define ANGULARJS_EXTRACT_CMDS + unzip $(DL_DIR)/$(ANGULARJS_SOURCE) -d $(@D) + mv $(@D)/angular-$(ANGULARJS_VERSION)/* $(@D) + rmdir $(@D)/angular-$(ANGULARJS_VERSION) +endef + +# install .min.js as .js +define ANGULARJS_INSTALL_TARGET_CMDS + $(foreach f,$(notdir $(wildcard $(@D)/*.min.js)), + $(INSTALL) -m 0644 -D $(@D)/$(f) \ + $(TARGET_DIR)/var/www/$(f:.min.js=.js)$(sep)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch b/buildroot/package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch new file mode 100644 index 0000000..00b24c8 --- /dev/null +++ b/buildroot/package/aoetools/0001-Change-shell-script-interpreter-from-bin-bash-to-bin.patch @@ -0,0 +1,26 @@ +From 4ef42740538cefd3c1554aa4df5bcb1388ac927b Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Tue, 16 Jan 2018 22:28:32 -0200 +Subject: [PATCH] Change shell script interpreter from /bin/bash to /bin/sh + +This will make the script more portable, making it possible to run on +systems that do not have bash. + +Signed-off-by: Sergio Prado +--- + aoe-stat.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/aoe-stat.in b/aoe-stat.in +index 50e6ac674169..0c1d6f5ebe1e 100755 +--- a/aoe-stat.in ++++ b/aoe-stat.in +@@ -1,4 +1,4 @@ +-#! /bin/bash ++#! /bin/sh + # aoe-stat - collate and present information about AoE storage + # Copyright 2012, CORAID, Inc., and licensed under GPL v.2. + +-- +1.9.1 + diff --git a/buildroot/package/aoetools/Config.in b/buildroot/package/aoetools/Config.in new file mode 100644 index 0000000..70a838f --- /dev/null +++ b/buildroot/package/aoetools/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AOETOOLS + bool "aoetools" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The aoetools are programs for users of the ATA over Ethernet + (AoE) network storage protocol, a simple protocol for using + storage over an ethernet LAN. + + http://aoetools.sourceforge.net/ + +comment "aoetools needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/aoetools/aoetools.hash b/buildroot/package/aoetools/aoetools.hash new file mode 100644 index 0000000..76c3056 --- /dev/null +++ b/buildroot/package/aoetools/aoetools.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 477e796f5c18e8c0e61b5d88e1759c68249e8e0210c2f3de2b98680e2cc63e32 aoetools-37.tar.gz + +# Hash for license files: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/aoetools/aoetools.mk b/buildroot/package/aoetools/aoetools.mk new file mode 100644 index 0000000..3f6340f --- /dev/null +++ b/buildroot/package/aoetools/aoetools.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# aoetools +# +################################################################################ + +AOETOOLS_VERSION = 37 +AOETOOLS_SITE = $(call github,OpenAoE,aoetools,aoetools-$(AOETOOLS_VERSION)) +AOETOOLS_LICENSE = GPL-2.0 +AOETOOLS_LICENSE_FILES = COPYING + +define AOETOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define AOETOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) \ + -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/apache/0001-cross-compile.patch b/buildroot/package/apache/0001-cross-compile.patch new file mode 100644 index 0000000..790b7a0 --- /dev/null +++ b/buildroot/package/apache/0001-cross-compile.patch @@ -0,0 +1,63 @@ +Fix cross-compilation + +Fetched httpd-2.4.x-cross_compile.diff from upstream bugtracker: +https://issues.apache.org/bugzilla/show_bug.cgi?id=51257#c6 + +which is a bundle of upstream revisions: + http://svn.apache.org/viewvc?view=revision&revision=1327907 + http://svn.apache.org/viewvc?view=revision&revision=1328390 + http://svn.apache.org/viewvc?view=revision&revision=1328714 + +Signed-off-by: Bernd Kuhls + +Index: server/Makefile.in +=================================================================== +--- a/server/Makefile.in (revision 1328714) ++++ b/server/Makefile.in (working copy) +@@ -22,9 +22,14 @@ + include $(top_builddir)/build/rules.mk + include $(top_srcdir)/build/library.mk + ++ifdef CC_FOR_BUILD ++gen_test_char: gen_test_char.c ++ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $< ++else + gen_test_char_OBJECTS = gen_test_char.lo + gen_test_char: $(gen_test_char_OBJECTS) + $(LINK) $(EXTRA_LDFLAGS) $(gen_test_char_OBJECTS) $(EXTRA_LIBS) ++endif + + test_char.h: gen_test_char + ./gen_test_char > test_char.h +Index: configure.in +=================================================================== +--- a/configure.in (revision 1328714) ++++ b/configure.in (working copy) +@@ -193,6 +193,14 @@ + dnl Try to get c99 support for variadic macros + ifdef([AC_PROG_CC_C99], [AC_PROG_CC_C99]) + ++dnl In case of cross compilation we set CC_FOR_BUILD to cc unless ++dnl we got already CC_FOR_BUILD from environment. ++if test "x${build_alias}" != "x${host_alias}"; then ++ if test "x${CC_FOR_BUILD}" = "x"; then ++ CC_FOR_BUILD=cc ++ fi ++fi ++ + if test "x${cache_file}" = "x/dev/null"; then + # Likewise, ensure that CC and CPP are passed through to the pcre + # configure script iff caching is disabled (the autoconf 2.5x default). +Index: acinclude.m4 +=================================================================== +--- a/acinclude.m4 (revision 1328714) ++++ ab/cinclude.m4 (working copy) +@@ -53,6 +53,8 @@ + APACHE_SUBST(CPPFLAGS) + APACHE_SUBST(CFLAGS) + APACHE_SUBST(CXXFLAGS) ++ APACHE_SUBST(CC_FOR_BUILD) ++ APACHE_SUBST(CFLAGS_FOR_BUILD) + APACHE_SUBST(LTFLAGS) + APACHE_SUBST(LDFLAGS) + APACHE_SUBST(LT_LDFLAGS) diff --git a/buildroot/package/apache/0002-nios2_is_not_os2.patch b/buildroot/package/apache/0002-nios2_is_not_os2.patch new file mode 100644 index 0000000..9da8cca --- /dev/null +++ b/buildroot/package/apache/0002-nios2_is_not_os2.patch @@ -0,0 +1,18 @@ +Fix nios2 detection. + +Apache treats nios2 as OS/2. + +Signed-off-by: Bernd Kuhls + +diff -uNr httpd-2.4.12.org/configure.in httpd-2.4.12/configure.in +--- httpd-2.4.12.org/configure.in 2015-01-22 18:33:07.000000000 +0100 ++++ httpd-2.4.12/configure.in 2015-04-02 22:01:32.851102219 +0200 +@@ -268,7 +268,7 @@ + AC_MSG_NOTICE([]) + + case $host in +- *os2*) ++ *-os2*) + # Use a custom made libtool replacement + echo "using aplibtool" + LIBTOOL="$abs_srcdir/srclib/apr/build/aplibtool" diff --git a/buildroot/package/apache/Config.in b/buildroot/package/apache/Config.in new file mode 100644 index 0000000..693ee20 --- /dev/null +++ b/buildroot/package/apache/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_APACHE + bool "apache" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # apr + select BR2_PACKAGE_APR_UTIL + select BR2_PACKAGE_PCRE + help + The Apache HTTP Server Project is an effort to develop and + maintain an open-source HTTP server for modern operating + systems including UNIX and Windows NT. The goal of this + project is to provide a secure, efficient and extensible + server that provides HTTP services in sync with the current + HTTP standards. + + http://httpd.apache.org + +if BR2_PACKAGE_APACHE + +choice + prompt "Multi-Processing Module (MPM)" + default BR2_PACKAGE_APACHE_MPM_WORKER + help + Select the Multi-Processing Module (MPM). + +config BR2_PACKAGE_APACHE_MPM_EVENT + bool "event" + help + A variant of the worker MPM with the goal of consuming threads + only for connections with active processing + +config BR2_PACKAGE_APACHE_MPM_PREFORK + bool "prefork" + help + Implements a non-threaded, pre-forking web server + +config BR2_PACKAGE_APACHE_MPM_WORKER + bool "worker" + help + Implements a hybrid multi-threaded multi-process web server + +endchoice + +endif + +comment "apache needs a toolchain w/ dynamic library, threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/apache/apache.hash b/buildroot/package/apache/apache.hash new file mode 100644 index 0000000..76c7c76 --- /dev/null +++ b/buildroot/package/apache/apache.hash @@ -0,0 +1,3 @@ +# From http://archive.apache.org/dist/httpd/httpd-2.4.33.tar.bz2.sha256 +sha256 de02511859b00d17845b9abdd1f975d5ccb5d0b280c567da5bf2ad4b70846f05 httpd-2.4.33.tar.bz2 +sha256 c49c0819a726b70142621715dae3159c47b0349c2bc9db079070f28dadac0229 LICENSE diff --git a/buildroot/package/apache/apache.mk b/buildroot/package/apache/apache.mk new file mode 100644 index 0000000..eaf7b9c --- /dev/null +++ b/buildroot/package/apache/apache.mk @@ -0,0 +1,89 @@ +################################################################################ +# +# apache +# +################################################################################ + +APACHE_VERSION = 2.4.33 +APACHE_SOURCE = httpd-$(APACHE_VERSION).tar.bz2 +APACHE_SITE = http://archive.apache.org/dist/httpd +APACHE_LICENSE = Apache-2.0 +APACHE_LICENSE_FILES = LICENSE +# Needed for mod_php +APACHE_INSTALL_STAGING = YES +# We have a patch touching configure.in and Makefile.in, +# so we need to autoreconf: +APACHE_AUTORECONF = YES +APACHE_DEPENDENCIES = apr apr-util pcre + +APACHE_CONF_ENV= \ + ap_cv_void_ptr_lt_long=no \ + PCRE_CONFIG=$(STAGING_DIR)/usr/bin/pcre-config + +ifeq ($(BR2_PACKAGE_APACHE_MPM_EVENT),y) +APACHE_MPM = event +else ifeq ($(BR2_PACKAGE_APACHE_MPM_PREFORK),y) +APACHE_MPM = prefork +else ifeq ($(BR2_PACKAGE_APACHE_MPM_WORKER),y) +APACHE_MPM = worker +endif + +APACHE_CONF_OPTS = \ + --sysconfdir=/etc/apache2 \ + --with-apr=$(STAGING_DIR)/usr \ + --with-apr-util=$(STAGING_DIR)/usr \ + --with-pcre=$(STAGING_DIR)/usr/bin/pcre-config \ + --enable-http \ + --enable-dbd \ + --enable-proxy \ + --enable-mime-magic \ + --without-suexec-bin \ + --enable-mods-shared=all \ + --with-mpm=$(APACHE_MPM) \ + --disable-lua \ + --disable-luajit + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +APACHE_DEPENDENCIES += libxml2 +# Apache wants the path to the header file, where it can find +# . +APACHE_CONF_OPTS += \ + --enable-xml2enc \ + --enable-proxy-html \ + --with-libxml2=$(STAGING_DIR)/usr/include/libxml2 +else +APACHE_CONF_OPTS += \ + --disable-xml2enc \ + --disable-proxy-html +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +APACHE_DEPENDENCIES += openssl +APACHE_CONF_OPTS += \ + --enable-ssl \ + --with-ssl=$(STAGING_DIR)/usr +else +APACHE_CONF_OPTS += --disable-ssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +APACHE_DEPENDENCIES += zlib +APACHE_CONF_OPTS += \ + --enable-deflate \ + --with-z=$(STAGING_DIR)/usr +else +APACHE_CONF_OPTS += --disable-deflate +endif + +define APACHE_FIX_STAGING_APACHE_CONFIG + $(SED) 's%/usr/build%$(STAGING_DIR)/usr/build%' $(STAGING_DIR)/usr/bin/apxs + $(SED) 's%^prefix =.*%prefix = $(STAGING_DIR)/usr%' $(STAGING_DIR)/usr/build/config_vars.mk +endef +APACHE_POST_INSTALL_STAGING_HOOKS += APACHE_FIX_STAGING_APACHE_CONFIG + +define APACHE_CLEANUP_TARGET + $(RM) -rf $(TARGET_DIR)/usr/manual $(TARGET_DIR)/usr/build +endef +APACHE_POST_INSTALL_TARGET_HOOKS += APACHE_CLEANUP_TARGET + +$(eval $(autotools-package)) diff --git a/buildroot/package/apitrace/Config.in b/buildroot/package/apitrace/Config.in new file mode 100644 index 0000000..b622823 --- /dev/null +++ b/buildroot/package/apitrace/Config.in @@ -0,0 +1,19 @@ +comment "apitrace needs a glibc toolchain w/ C++, gcc >= 4.9" + depends on BR2_PACKAGE_XORG7 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_PACKAGE_APITRACE + bool "apitrace" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_USES_GLIBC # uses glibc specific __libc_dlsym + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_LIBPNG + help + Trace and replay OpenGL and OpenGL ES APIs calls to/from a + file. You may install apitrace GUI from your distribution to + inspect generated traces. + + http://apitrace.github.io/ diff --git a/buildroot/package/apitrace/apitrace.hash b/buildroot/package/apitrace/apitrace.hash new file mode 100644 index 0000000..1daaa46 --- /dev/null +++ b/buildroot/package/apitrace/apitrace.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0aae8902696ad23ba91d61c57007861a3f6e3c2d4f0f43b783b4b7a58e3f9172 apitrace-15d7f975f9688372467ebd63d2a57d3957823f93.tar.gz diff --git a/buildroot/package/apitrace/apitrace.mk b/buildroot/package/apitrace/apitrace.mk new file mode 100644 index 0000000..c66f6b3 --- /dev/null +++ b/buildroot/package/apitrace/apitrace.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# apitrace +# +################################################################################ + +APITRACE_VERSION = 15d7f975f9688372467ebd63d2a57d3957823f93 +APITRACE_SITE = $(call github,apitrace,apitrace,$(APITRACE_VERSION)) +APITRACE_LICENSE = MIT +APITRACE_LICENSE_FILES = LICENSE + +APITRACE_DEPENDENCIES = xlib_libX11 host-python libpng + +# Gui was never tested, so we prefer to explicitly disable it +APITRACE_CONF_OPTS += -DENABLE_GUI=false + +$(eval $(cmake-package)) diff --git a/buildroot/package/apr-util/0001-remove-checkapr.patch b/buildroot/package/apr-util/0001-remove-checkapr.patch new file mode 100644 index 0000000..42ad12f --- /dev/null +++ b/buildroot/package/apr-util/0001-remove-checkapr.patch @@ -0,0 +1,21 @@ +remove check apr + +this patch removes the check of apr which fails the build + +Signed-off-by: Rico Bachmann +--- +v1: disable the check for APU_FIND_APR because the check only looks into folders +named apr, and our source-tree is called apr-versionnumber (e.g. apr-1.4.6) + +diff -rupN apr-util-1.4.1/configure.in apr-util-1.4.1-fix/configure.in +--- apr-util-1.4.1/configure.in 2009-12-17 20:15:19.000000000 +0100 ++++ apr-util-1.4.1-fix/configure.in 2012-04-24 10:10:32.000000000 +0200 +@@ -99,7 +99,7 @@ fi + dnl + dnl Find the APR includes directory and (possibly) the source (base) dir. + dnl +-APU_FIND_APR ++dnl APU_FIND_APR + + dnl + dnl even though we use apr_rules.mk for building apr-util, we need diff --git a/buildroot/package/apr-util/Config.in b/buildroot/package/apr-util/Config.in new file mode 100644 index 0000000..6c5e3bb --- /dev/null +++ b/buildroot/package/apr-util/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_APR_UTIL + bool "apr-util" + # apr really needs shared library support + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # apr + select BR2_PACKAGE_APR + select BR2_PACKAGE_EXPAT + help + The utility library for the apache runtime project + + http://apr.apache.org/ + +comment "apr-util needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/apr-util/apr-util.hash b/buildroot/package/apr-util/apr-util.hash new file mode 100644 index 0000000..82ad475 --- /dev/null +++ b/buildroot/package/apr-util/apr-util.hash @@ -0,0 +1,4 @@ +# From http://www.apache.org/dist/apr/apr-util-1.6.1.tar.bz2.sha256 +sha256 d3e12f7b6ad12687572a3a39475545a072608f4ba03a6ce8a3778f607dd0035b apr-util-1.6.1.tar.bz2 +# Locally calculated +sha256 ef5609d18601645ad6fe22c6c122094be40e976725c1d0490778abacc836e7a2 LICENSE diff --git a/buildroot/package/apr-util/apr-util.mk b/buildroot/package/apr-util/apr-util.mk new file mode 100644 index 0000000..b006964 --- /dev/null +++ b/buildroot/package/apr-util/apr-util.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# apr-util +# +################################################################################ + +APR_UTIL_VERSION = 1.6.1 +APR_UTIL_SOURCE = apr-util-$(APR_UTIL_VERSION).tar.bz2 +APR_UTIL_SITE = http://archive.apache.org/dist/apr +APR_UTIL_LICENSE = Apache-2.0 +APR_UTIL_LICENSE_FILES = LICENSE +APR_UTIL_INSTALL_STAGING = YES +APR_UTIL_DEPENDENCIES = apr expat +APR_UTIL_CONF_OPTS = \ + --with-apr=$(STAGING_DIR)/usr/bin/apr-1-config +APR_UTIL_CONFIG_SCRIPTS = apu-1-config + +# When iconv is available, then use it to provide charset conversion +# features. +APR_UTIL_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +APR_UTIL_CONF_OPTS += --with-dbm=db53 --with-berkeley-db="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += berkeleydb +else +APR_UTIL_CONF_OPTS += --without-berkeley-db +endif + +ifeq ($(BR2_PACKAGE_GDBM),y) +APR_UTIL_CONF_OPTS += --with-gdbm="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += gdbm +else +APR_UTIL_CONF_OPTS += --without-gdbm +endif + +ifeq ($(BR2_PACKAGE_MYSQL),y) +APR_UTIL_CONF_OPTS += --with-mysql="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += mysql +else +APR_UTIL_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +APR_UTIL_CONF_OPTS += --with-sqlite3="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += sqlite +else +APR_UTIL_CONF_OPTS += --without-sqlite3 +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +APR_UTIL_CONF_ENV += ac_cv_ldap_set_rebind_proc_style=three +APR_UTIL_CONF_OPTS += \ + --with-ldap \ + --with-ldap-include="$(STAGING_DIR)/usr/include/" \ + --with-ldap-lib="$(STAGING_DIR)/usr/lib" +APR_UTIL_DEPENDENCIES += openldap +else +APR_UTIL_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +APR_UTIL_CONF_OPTS += --with-crypto --with-openssl="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += openssl +else +APR_UTIL_CONF_OPTS += --without-crypto +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +APR_UTIL_CONF_OPTS += --with-pgsql="$(STAGING_DIR)/usr" +APR_UTIL_DEPENDENCIES += postgresql +else +APR_UTIL_CONF_OPTS += --without-pgsql +endif + +ifeq ($(BR2_PACKAGE_UNIXODBC),y) +APR_UTIL_CONF_OPTS += --with-odbc="$(STAGING_DIR)/usr" +# avoid using target binary $(STAGING_DIR)/usr/bin/odbc_config +APR_UTIL_CONF_ENV += ac_cv_path_ODBC_CONFIG="" +APR_UTIL_DEPENDENCIES += unixodbc +else +APR_UTIL_CONF_OPTS += --without-odbc +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/apr/0001-cross-compile.patch b/buildroot/package/apr/0001-cross-compile.patch new file mode 100644 index 0000000..559ebb7 --- /dev/null +++ b/buildroot/package/apr/0001-cross-compile.patch @@ -0,0 +1,58 @@ +Fix cross-compilation + +Patch was backported from Apache httpd: +http://svn.apache.org/viewvc?view=revision&revision=1327907 +http://svn.apache.org/viewvc?view=revision&revision=1328390 +http://svn.apache.org/viewvc?view=revision&revision=1328714 + +Patch submitted upstream: +https://issues.apache.org/bugzilla/show_bug.cgi?id=57058 + +Signed-off-by: Bernd Kuhls + +diff -uNr apr-1.5.1.org/configure.in apr-1.5.1/configure.in +--- apr-1.5.1.org/configure.in 2014-01-25 16:17:29.000000000 +0100 ++++ apr-1.5.1/configure.in 2014-10-05 11:20:40.080746760 +0200 +@@ -118,6 +118,16 @@ + echo "Configuring APR library" + echo "Platform: $host" + ++dnl In case of cross compilation we set CC_FOR_BUILD to cc unless ++dnl we got already CC_FOR_BUILD from environment. ++if test "x${build_alias}" != "x${host_alias}"; then ++ if test "x${CC_FOR_BUILD}" = "x"; then ++ CC_FOR_BUILD=cc ++ fi ++fi ++AC_SUBST(CC_FOR_BUILD) ++AC_SUBST(CFLAGS_FOR_BUILD) ++ + dnl Some initial steps for configuration. We setup the default directory + dnl and which files are to be configured. + +diff -uNr apr-1.5.1.org/Makefile.in apr-1.5.1/Makefile.in +--- apr-1.5.1.org/Makefile.in 2014-03-17 16:10:26.000000000 +0100 ++++ apr-1.5.1/Makefile.in 2014-10-05 11:22:53.031070519 +0200 +@@ -8,6 +8,8 @@ + # APR (Apache Portable Runtime) library Makefile. + # + CPP = @CPP@ ++CC_FOR_BUILD = @CC_FOR_BUILD@ ++CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ + + # get substituted into some targets + APR_MAJOR_VERSION=@APR_MAJOR_VERSION@ +@@ -134,8 +134,13 @@ + $(APR_MKDIR) tools + $(LT_COMPILE) + ++ifdef CC_FOR_BUILD ++tools/gen_test_char@EXEEXT@: tools/gen_test_char.c $(LOCAL_LIBS) ++ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) -DCROSS_COMPILE -o $@ $< ++else + tools/gen_test_char@EXEEXT@: $(OBJECTS_gen_test_char) + $(LINK_PROG) $(OBJECTS_gen_test_char) $(ALL_LIBS) ++endif + + include/private/apr_escape_test_char.h: tools/gen_test_char@EXEEXT@ + $(APR_MKDIR) include/private diff --git a/buildroot/package/apr/Config.in b/buildroot/package/apr/Config.in new file mode 100644 index 0000000..67de925 --- /dev/null +++ b/buildroot/package/apr/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_APR + bool "apr" + # apr really needs shared library support + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() in apr_proc_fork() + help + The mission of the Apache Portable Runtime (APR) project is to + create and maintain software libraries that provide a + predictable and consistent interface to underlying + platform-specific implementations + + http://apr.apache.org/ + +comment "apr needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/apr/apr.hash b/buildroot/package/apr/apr.hash new file mode 100644 index 0000000..be130a5 --- /dev/null +++ b/buildroot/package/apr/apr.hash @@ -0,0 +1,4 @@ +# From http://www.apache.org/dist/apr/apr-1.6.3.tar.bz2.sha256 +sha256 131f06d16d7aabd097fa992a33eec2b6af3962f93e6d570a9bd4d85e95993172 apr-1.6.3.tar.bz2 +# Locally calculated +sha256 f854aeef66ecd55a126226e82b3f26793fc3b1c584647f6a0edc5639974c38ad LICENSE diff --git a/buildroot/package/apr/apr.mk b/buildroot/package/apr/apr.mk new file mode 100644 index 0000000..58b1d86 --- /dev/null +++ b/buildroot/package/apr/apr.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# apr +# +################################################################################ + +APR_VERSION = 1.6.3 +APR_SOURCE = apr-$(APR_VERSION).tar.bz2 +APR_SITE = http://archive.apache.org/dist/apr +APR_LICENSE = Apache-2.0 +APR_LICENSE_FILES = LICENSE +APR_INSTALL_STAGING = YES +# We have a patch touching configure.in and Makefile.in, +# so we need to autoreconf: +APR_AUTORECONF = YES + +APR_CONF_ENV = \ + CC_FOR_BUILD="$(HOSTCC)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + ac_cv_file__dev_zero=yes \ + ac_cv_func_setpgrp_void=yes \ + apr_cv_process_shared_works=yes \ + apr_cv_mutex_robust_shared=no \ + apr_cv_tcp_nodelay_with_cork=yes \ + ac_cv_sizeof_struct_iovec=8 \ + ac_cv_sizeof_pid_t=4 \ + ac_cv_struct_rlimit=yes \ + ac_cv_o_nonblock_inherited=no \ + apr_cv_mutex_recursive=yes +APR_CONFIG_SCRIPTS = apr-1-config + +# Doesn't even try to guess when cross compiling +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +APR_CONF_ENV += apr_cv_pthreads_lib="-lpthread" +endif + +# Fix lfs detection when cross compiling +APR_CONF_ENV += apr_cv_use_lfs64=yes + +# Use non-portable atomics when available: 8 bytes atomics are used on +# 64-bits architectures, 4 bytes atomics on 32-bits architectures. We +# have to override ap_cv_atomic_builtins because the test used to +# check for atomic builtins uses AC_TRY_RUN, which doesn't work when +# cross-compiling. +ifeq ($(BR2_ARCH_IS_64):$(BR2_TOOLCHAIN_HAS_SYNC_8),y:y) +APR_CONF_OPTS += --enable-nonportable-atomics +APR_CONF_ENV += ap_cv_atomic_builtins=yes +else ifeq ($(BR2_ARCH_IS_64):$(BR2_TOOLCHAIN_HAS_SYNC_4),:y) +APR_CONF_OPTS += --enable-nonportable-atomics +APR_CONF_ENV += ap_cv_atomic_builtins=yes +else +APR_CONF_OPTS += --disable-nonportable-atomics +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +APR_DEPENDENCIES += util-linux +endif + +define APR_CLEANUP_UNNEEDED_FILES + $(RM) -rf $(TARGET_DIR)/usr/build-1/ +endef + +APR_POST_INSTALL_TARGET_HOOKS += APR_CLEANUP_UNNEEDED_FILES + +define APR_FIXUP_RULES_MK + $(SED) 's%apr_builddir=%apr_builddir=$(STAGING_DIR)%' \ + $(STAGING_DIR)/usr/build-1/apr_rules.mk + $(SED) 's%apr_builders=%apr_builders=$(STAGING_DIR)%' \ + $(STAGING_DIR)/usr/build-1/apr_rules.mk + $(SED) 's%top_builddir=%top_builddir=$(STAGING_DIR)%' \ + $(STAGING_DIR)/usr/build-1/apr_rules.mk +endef + +APR_POST_INSTALL_STAGING_HOOKS += APR_FIXUP_RULES_MK + +$(eval $(autotools-package)) diff --git a/buildroot/package/argp-standalone/0001-throw-in-funcdef.patch b/buildroot/package/argp-standalone/0001-throw-in-funcdef.patch new file mode 100644 index 0000000..4a90751 --- /dev/null +++ b/buildroot/package/argp-standalone/0001-throw-in-funcdef.patch @@ -0,0 +1,79 @@ +# --- T2-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# T2 SDE: package/.../rng-tools/throw-in-funcdef.patch.argp-standalone +# Copyright (C) 2006 The T2 SDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or 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. +# --- T2-COPYRIGHT-NOTE-END --- + + +No __THROW in function implementation. + --jsaw + +--- argp-standalone-1.4-test2/argp.h.orig 2006-01-06 02:29:59.000000000 +0100 ++++ argp-standalone-1.4-test2/argp.h 2006-01-06 02:41:10.000000000 +0100 +@@ -560,17 +560,17 @@ + # endif + + # ifndef ARGP_EI +-# define ARGP_EI extern __inline__ ++# define ARGP_EI extern inline + # endif + + ARGP_EI void +-__argp_usage (__const struct argp_state *__state) __THROW ++__argp_usage (__const struct argp_state *__state) + { + __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); + } + + ARGP_EI int +-__option_is_short (__const struct argp_option *__opt) __THROW ++__option_is_short (__const struct argp_option *__opt) + { + if (__opt->flags & OPTION_DOC) + return 0; +@@ -582,7 +582,7 @@ + } + + ARGP_EI int +-__option_is_end (__const struct argp_option *__opt) __THROW ++__option_is_end (__const struct argp_option *__opt) + { + return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; + } +--- argp-standalone-1.4-test2/argp-parse.c.orig 2006-01-06 02:47:48.000000000 +0100 ++++ argp-standalone-1.4-test2/argp-parse.c 2006-01-06 02:48:16.000000000 +0100 +@@ -1290,13 +1290,13 @@ + /* Defined here, in case a user is not inlining the definitions in + * argp.h */ + void +-__argp_usage (__const struct argp_state *__state) __THROW ++__argp_usage (__const struct argp_state *__state) + { + __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE); + } + + int +-__option_is_short (__const struct argp_option *__opt) __THROW ++__option_is_short (__const struct argp_option *__opt) + { + if (__opt->flags & OPTION_DOC) + return 0; +@@ -1310,7 +1310,7 @@ + } + + int +-__option_is_end (__const struct argp_option *__opt) __THROW ++__option_is_end (__const struct argp_option *__opt) + { + return !__opt->key && !__opt->name && !__opt->doc && !__opt->group; + } diff --git a/buildroot/package/argp-standalone/0002-isprint.patch b/buildroot/package/argp-standalone/0002-isprint.patch new file mode 100644 index 0000000..9c08366 --- /dev/null +++ b/buildroot/package/argp-standalone/0002-isprint.patch @@ -0,0 +1,45 @@ +Subject: restrict value range passed to isprint function + +According to C standards isprint argument shall be representable as an +unsigned char or be equal to EOF, otherwise the behaviour is undefined. + +Passing arbitrary ints leads to segfault in nm program from elfutils. + +Restrict isprint argument range to values representable by unsigned char. + +Signed-off-by: Max Filippov +--- +Index: b/argp.h +=================================================================== +--- a/argp.h ++++ b/argp.h +@@ -23,6 +23,7 @@ + + #include + #include ++#include + + #define __need_error_t + #include +@@ -577,7 +578,7 @@ + else + { + int __key = __opt->key; +- return __key > 0 && isprint (__key); ++ return __key > 0 && __key <= UCHAR_MAX && isprint (__key); + } + } + +Index: b/argp-parse.c +=================================================================== +--- a/argp-parse.c ++++ b/argp-parse.c +@@ -1292,7 +1292,7 @@ + int __key = __opt->key; + /* FIXME: whether or not a particular key implies a short option + * ought not to be locale dependent. */ +- return __key > 0 && isprint (__key); ++ return __key > 0 && __key <= UCHAR_MAX && isprint (__key); + } + } + diff --git a/buildroot/package/argp-standalone/0003-fix_build_with_c99_compilers.patch b/buildroot/package/argp-standalone/0003-fix_build_with_c99_compilers.patch new file mode 100644 index 0000000..56b753b --- /dev/null +++ b/buildroot/package/argp-standalone/0003-fix_build_with_c99_compilers.patch @@ -0,0 +1,68 @@ +From b2dfa011a3fdcb7d22764d143517d0fbd1c2a201 Mon Sep 17 00:00:00 2001 +From: Emmanuel Dreyfus +Date: Wed, 22 Jan 2014 14:47:23 +0100 +Subject: [PATCH] Fix build with c99 compilers + +BUG: 764655 +Change-Id: If5dfdc9c7427bd3d39d8da8f79e33ae2da6a3137 +Signed-off-by: Emmanuel Dreyfus +Reviewed-on: http://review.gluster.org/6034 +Reviewed-by: Harshavardhana +Tested-by: Gluster Build System +--- + +diff --git a/argp-fmtstream.c b/argp-fmtstream.c +index 7f79285..494b6b3 100644 +--- a/argp-fmtstream.c ++++ b/argp-fmtstream.c +@@ -389,6 +389,7 @@ + weak_alias (__argp_fmtstream_printf, argp_fmtstream_printf) + #endif + ++#if __STDC_VERSION__ - 199900L < 1 + /* Duplicate the inline definitions in argp-fmtstream.h, for compilers + * that don't do inlining. */ + size_t +@@ -471,5 +472,6 @@ + __argp_fmtstream_update (__fs); + return __fs->point_col >= 0 ? __fs->point_col : 0; + } ++#endif /* __STDC_VERSION__ - 199900L < 1 */ + + #endif /* !ARGP_FMTSTREAM_USE_LINEWRAP */ +diff --git a/argp-fmtstream.h b/argp-fmtstream.h +index e797b11..828f435 100644 +--- a/argp-fmtstream.h ++++ b/argp-fmtstream.h +@@ -153,6 +153,7 @@ + __const char *__fmt, ...) + PRINTF_STYLE(2,3); + ++#if __STDC_VERSION__ - 199900L < 1 + extern int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch); + extern int argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch); + +@@ -163,6 +164,7 @@ + __const char *__str, size_t __len); + extern size_t argp_fmtstream_write (argp_fmtstream_t __fs, + __const char *__str, size_t __len); ++#endif /* __STDC_VERSION__ - 199900L < 1 */ + + /* Access macros for various bits of state. */ + #define argp_fmtstream_lmargin(__fs) ((__fs)->lmargin) +@@ -172,6 +174,7 @@ + #define __argp_fmtstream_rmargin argp_fmtstream_rmargin + #define __argp_fmtstream_wmargin argp_fmtstream_wmargin + ++#if __STDC_VERSION__ - 199900L < 1 + /* Set __FS's left margin to LMARGIN and return the old value. */ + extern size_t argp_fmtstream_set_lmargin (argp_fmtstream_t __fs, + size_t __lmargin); +@@ -193,6 +196,7 @@ + /* Return the column number of the current output point in __FS. */ + extern size_t argp_fmtstream_point (argp_fmtstream_t __fs); + extern size_t __argp_fmtstream_point (argp_fmtstream_t __fs); ++#endif /* __STDC_VERSION__ - 199900L < 1 */ + + /* Internal routines. */ + extern void _argp_fmtstream_update (argp_fmtstream_t __fs); diff --git a/buildroot/package/argp-standalone/Config.in b/buildroot/package/argp-standalone/Config.in new file mode 100644 index 0000000..3319dd9 --- /dev/null +++ b/buildroot/package/argp-standalone/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ARGP_STANDALONE + bool "argp-standalone" + # glibc provides its own argp implementation. + depends on !BR2_TOOLCHAIN_USES_GLIBC + help + Glibc hierarchical argument parsing standalone library. + + http://www.lysator.liu.se/~nisse/misc/ diff --git a/buildroot/package/argp-standalone/argp-standalone.hash b/buildroot/package/argp-standalone/argp-standalone.hash new file mode 100644 index 0000000..5798214 --- /dev/null +++ b/buildroot/package/argp-standalone/argp-standalone.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 dec79694da1319acd2238ce95df57f3680fea2482096e483323fddf3d818d8be argp-standalone-1.3.tar.gz diff --git a/buildroot/package/argp-standalone/argp-standalone.mk b/buildroot/package/argp-standalone/argp-standalone.mk new file mode 100644 index 0000000..977b954 --- /dev/null +++ b/buildroot/package/argp-standalone/argp-standalone.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# argp-standalone +# +################################################################################ + +ARGP_STANDALONE_VERSION = 1.3 +ARGP_STANDALONE_SITE = http://www.lysator.liu.se/~nisse/archive +ARGP_STANDALONE_INSTALL_STAGING = YES +ARGP_STANDALONE_LICENSE = LGPL-2.0+ + +ARGP_STANDALONE_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) -fPIC -fgnu89-inline" + +define ARGP_STANDALONE_INSTALL_STAGING_CMDS + $(INSTALL) -D $(@D)/libargp.a $(STAGING_DIR)/usr/lib/libargp.a + $(INSTALL) -D $(@D)/argp.h $(STAGING_DIR)/usr/include/argp.h +endef + +define ARGP_STANDALONE_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/libargp.a $(TARGET_DIR)/usr/lib/libargp.a + $(INSTALL) -D $(@D)/argp.h $(TARGET_DIR)/usr/include/argp.h +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/argparse/Config.in b/buildroot/package/argparse/Config.in new file mode 100644 index 0000000..d207b04 --- /dev/null +++ b/buildroot/package/argparse/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ARGPARSE + bool "argparse" + help + Argparse is a feature-rich command line parser for Lua + inspired by argparse for Python. Argparse supports + positional arguments, options, flags, optional arguments, + subcommands and more. Argparse automatically generates + usage, help and error messages. + + https://github.com/mpeterv/argparse diff --git a/buildroot/package/argparse/argparse.hash b/buildroot/package/argparse/argparse.hash new file mode 100644 index 0000000..a4746bc --- /dev/null +++ b/buildroot/package/argparse/argparse.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e00e5637c937d7bfca96025f2c598ba4fffe9eb818d69952e77b4c08167a6be3 argparse-0.5.0-1.src.rock diff --git a/buildroot/package/argparse/argparse.mk b/buildroot/package/argparse/argparse.mk new file mode 100644 index 0000000..095f0a3 --- /dev/null +++ b/buildroot/package/argparse/argparse.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# argparse +# +################################################################################ + +ARGPARSE_VERSION_UPSTREAM = 0.5.0 +ARGPARSE_VERSION = $(ARGPARSE_VERSION_UPSTREAM)-1 +ARGPARSE_SUBDIR = argparse +ARGPARSE_LICENSE = MIT +ARGPARSE_LICENSE_FILES = $(ARGPARSE_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/argus/Config.in b/buildroot/package/argus/Config.in new file mode 100644 index 0000000..7a7d2b6 --- /dev/null +++ b/buildroot/package/argus/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ARGUS + bool "argus" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + A Real Time Flow Monitor-based audit engine. + + http://qosient.com/argus/ + +comment "argus needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/argus/argus.hash b/buildroot/package/argus/argus.hash new file mode 100644 index 0000000..84edce6 --- /dev/null +++ b/buildroot/package/argus/argus.hash @@ -0,0 +1,2 @@ +# From http://qosient.com/argus/src/argus-3.0.8.tar.gz.md5 +md5 84daae71a502e4f6d088c279de3aa36b argus-3.0.8.tar.gz diff --git a/buildroot/package/argus/argus.mk b/buildroot/package/argus/argus.mk new file mode 100644 index 0000000..941f439 --- /dev/null +++ b/buildroot/package/argus/argus.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# argus +# +################################################################################ + +ARGUS_VERSION = 3.0.8 +ARGUS_SITE = http://qosient.com/argus/src +ARGUS_DEPENDENCIES = libpcap +ARGUS_CONF_ENV = arg_cv_sys_errlist=yes +# Code is really v2+ though COPYING is v3 so ship README to avoid confusion +ARGUS_LICENSE = GPL-2.0+ +ARGUS_LICENSE_FILES = README + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +ARGUS_DEPENDENCIES += libtirpc host-pkgconf +ARGUS_CONF_ENV += \ + CFLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" \ + LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/armadillo/Config.in b/buildroot/package/armadillo/Config.in new file mode 100644 index 0000000..9483f18 --- /dev/null +++ b/buildroot/package/armadillo/Config.in @@ -0,0 +1,24 @@ +comment "armadillo needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on !(BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) + depends on !BR2_powerpc + depends on !BR2_bfin + depends on !BR2_m68k_cf + +comment "armadillo needs a glibc toolchain w/ C++" + depends on BR2_powerpc + depends on !BR2_INSTALL_LIBSTDCPP || BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_PACKAGE_ARMADILLO + bool "armadillo" + depends on BR2_INSTALL_LIBSTDCPP + depends on !(BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) # clapack + depends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC # clapack + depends on !BR2_bfin # clapack + depends on !BR2_m68k_cf # clapack + select BR2_PACKAGE_CLAPACK + help + Armadillo: An Open Source C++ Linear Algebra Library for + Fast Prototyping and Computationally Intensive Experiments. + + http://arma.sourceforge.net/ diff --git a/buildroot/package/armadillo/armadillo.hash b/buildroot/package/armadillo/armadillo.hash new file mode 100644 index 0000000..6b3c4a8 --- /dev/null +++ b/buildroot/package/armadillo/armadillo.hash @@ -0,0 +1,7 @@ +# From http://sourceforge.net/projects/arma/files/?source=navbar +md5 5ef71763bd429a3d481499878351f3be armadillo-7.900.1.tar.xz +sha1 8118faf1c6a7a39c55a1103a1f90e85e613cc377 armadillo-7.900.1.tar.xz +# Locally computed: +sha256 33eec7013990b5477ccc5ad3abc68bc2326c7a7a2790014d625cfcf37c0e07d3 armadillo-7.900.1.tar.xz +# License files, locally calculated +sha256 3ddf9be5c28fe27dad143a5dc76eea25222ad1dd68934a047064e56ed2fa40c5 LICENSE.txt diff --git a/buildroot/package/armadillo/armadillo.mk b/buildroot/package/armadillo/armadillo.mk new file mode 100644 index 0000000..b5fe403 --- /dev/null +++ b/buildroot/package/armadillo/armadillo.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# armadillo +# +################################################################################ + +ARMADILLO_VERSION = 7.900.1 +ARMADILLO_SOURCE = armadillo-$(ARMADILLO_VERSION).tar.xz +ARMADILLO_SITE = https://downloads.sourceforge.net/project/arma +ARMADILLO_DEPENDENCIES = clapack +ARMADILLO_INSTALL_STAGING = YES +ARMADILLO_LICENSE = MPL-2.0 +ARMADILLO_LICENSE_FILES = LICENSE.txt + +$(eval $(cmake-package)) diff --git a/buildroot/package/armbian-firmware/Config.in b/buildroot/package/armbian-firmware/Config.in new file mode 100644 index 0000000..761c316 --- /dev/null +++ b/buildroot/package/armbian-firmware/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_ARMBIAN_FIRMWARE + bool "armbian-firmware" + help + This package enables access to various firmware + blobs from the Armbian firmware repository. + + https://github.com/armbian/firmware + +if BR2_PACKAGE_ARMBIAN_FIRMWARE + +config BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819 + bool "XR819 WiFi" + help + Firmware files for XR819 WiFi SDIO chip. + +config BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212 + bool "AP6212 WiFi/BT" + help + Firmware files for AP6212 WiFi/BT combo chip. + +endif diff --git a/buildroot/package/armbian-firmware/armbian-firmware.hash b/buildroot/package/armbian-firmware/armbian-firmware.hash new file mode 100644 index 0000000..0f3858d --- /dev/null +++ b/buildroot/package/armbian-firmware/armbian-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 876958ce6ba8a4a01a424f2b4455208b7a989eaba96015649c774340553f0c35 armbian-firmware-455d6b6701178dafe7fd0168eb4a4ef78a8d24a3.tar.gz diff --git a/buildroot/package/armbian-firmware/armbian-firmware.mk b/buildroot/package/armbian-firmware/armbian-firmware.mk new file mode 100644 index 0000000..77e5185 --- /dev/null +++ b/buildroot/package/armbian-firmware/armbian-firmware.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# armbian-firmware +# +################################################################################ + +ARMBIAN_FIRMWARE_VERSION = 455d6b6701178dafe7fd0168eb4a4ef78a8d24a3 +ARMBIAN_FIRMWARE_SITE = https://github.com/armbian/firmware +ARMBIAN_FIRMWARE_SITE_METHOD = git + +# XR819 WiFi firmware +ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819),y) +ARMBIAN_FIRMWARE_FILES += \ + xr819/boot_xr819.bin \ + xr819/fw_xr819.bin \ + xr819/sdd_xr819.bin +endif + +# AP6212 WiFi/BT combo firmware +ifeq ($(BR2_PACKAGE_ARMBIAN_FIRMWARE_AP6212),y) +ARMBIAN_FIRMWARE_DIRS += ap6212 +endif + +ifneq ($(ARMBIAN_FIRMWARE_FILES),) +define ARMBIAN_FIRMWARE_INSTALL_FILES + cd $(@D) && \ + $(TAR) cf install.tar $(sort $(ARMBIAN_FIRMWARE_FILES)) && \ + $(TAR) xf install.tar -C $(TARGET_DIR)/lib/firmware +endef +endif + +ifneq ($(ARMBIAN_FIRMWARE_DIRS),) +# We need to rm -rf the destination directory to avoid copying +# into it in itself, should we re-install the package. +define ARMBIAN_FIRMWARE_INSTALL_DIRS + $(foreach d,$(ARMBIAN_FIRMWARE_DIRS), \ + rm -rf $(TARGET_DIR)/lib/firmware/$(d); \ + cp -a $(@D)/$(d) $(TARGET_DIR)/lib/firmware/$(d)$(sep)) +endef +endif + +ifneq ($(ARMBIAN_FIRMWARE_FILES)$(ARMBIAN_FIRMWARE_DIRS),) +ARMBIAN_FIRMWARE_LICENSE = PROPRIETARY +ARMBIAN_FIRMWARE_REDISTRIBUTE = NO +endif + +define ARMBIAN_FIRMWARE_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware + $(ARMBIAN_FIRMWARE_INSTALL_FILES) + $(ARMBIAN_FIRMWARE_INSTALL_DIRS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/arp-scan/0001-configure-try-linking-to-detect-stack-protector-supp.patch b/buildroot/package/arp-scan/0001-configure-try-linking-to-detect-stack-protector-supp.patch new file mode 100644 index 0000000..8eb9d6e --- /dev/null +++ b/buildroot/package/arp-scan/0001-configure-try-linking-to-detect-stack-protector-supp.patch @@ -0,0 +1,39 @@ +From f406041b58eadc716d6227408d3af553d566ffeb Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Tue, 4 Apr 2017 17:31:29 +0200 +Subject: [PATCH] configure: try linking to detect stack-protector support + +Even if gcc accepts the -fstack-protector argument, it is possible that +the libssp support library is missing. Detect this by linking instead +of just compiling. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + acinclude.m4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/acinclude.m4 b/acinclude.m4 +index 3c84118..4725154 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -243,7 +243,7 @@ AC_DEFUN([GCC_STACK_PROTECT_CC],[ + AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector]) + ssp_old_cflags="$CFLAGS" + CFLAGS="$CFLAGS -fstack-protector" +- AC_TRY_COMPILE(,,, ssp_cc=no) ++ AC_TRY_LINK(,,, ssp_cc=no) + echo $ssp_cc + if test "X$ssp_cc" = "Xno"; then + CFLAGS="$ssp_old_cflags" +@@ -259,7 +259,7 @@ AC_DEFUN([GCC_STACK_PROTECT_CXX],[ + AC_MSG_CHECKING([whether ${CXX} accepts -fstack-protector]) + ssp_old_cxxflags="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fstack-protector" +- AC_TRY_COMPILE(,,, ssp_cxx=no) ++ AC_TRY_LINK(,,, ssp_cxx=no) + echo $ssp_cxx + if test "X$ssp_cxx" = "Xno"; then + CXXFLAGS="$ssp_old_cxxflags" +-- +2.11.0 + diff --git a/buildroot/package/arp-scan/Config.in b/buildroot/package/arp-scan/Config.in new file mode 100644 index 0000000..cc47a72 --- /dev/null +++ b/buildroot/package/arp-scan/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ARP_SCAN + bool "arp-scan" + select BR2_PACKAGE_LIBPCAP + help + The ARP scanner + + arp-scan is a command-line tool that uses the ARP protocol to + discover and fingerprint IP hosts on the local network. + + http://www.nta-monitor.com/wiki/index.php/Arp-scan_Documentation diff --git a/buildroot/package/arp-scan/arp-scan.hash b/buildroot/package/arp-scan/arp-scan.hash new file mode 100644 index 0000000..4b2ddf1 --- /dev/null +++ b/buildroot/package/arp-scan/arp-scan.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ce908ac71c48e85dddf6dd4fe5151d13c7528b1f49717a98b2a2535bd797d892 arp-scan-1.9.tar.gz diff --git a/buildroot/package/arp-scan/arp-scan.mk b/buildroot/package/arp-scan/arp-scan.mk new file mode 100644 index 0000000..b46e941 --- /dev/null +++ b/buildroot/package/arp-scan/arp-scan.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# arp-scan +# +################################################################################ + +ARP_SCAN_VERSION = 1.9 +ARP_SCAN_SITE = https://github.com/royhills/arp-scan/releases/download/$(ARP_SCAN_VERSION) +ARP_SCAN_LICENSE = GPL-3.0+ +ARP_SCAN_LICENSE_FILES = COPYING +ARP_SCAN_DEPENDENCIES = libpcap + +# 0001-configure-try-linking-to-detect-stack-protector-supp.patch touches acinclude.m4 +ARP_SCAN_AUTORECONF = YES + +ifeq ($(BR2_STATIC_LIBS),y) +ARP_SCAN_CONF_OPTS = LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +ARP_SCAN_CONF_ENV = pgac_cv_snprintf_long_long_int_format='%lld' + +$(eval $(autotools-package)) diff --git a/buildroot/package/arptables/0001-arptables-disable-dlfcn.h-include.patch b/buildroot/package/arptables/0001-arptables-disable-dlfcn.h-include.patch new file mode 100644 index 0000000..a5d56d2 --- /dev/null +++ b/buildroot/package/arptables/0001-arptables-disable-dlfcn.h-include.patch @@ -0,0 +1,32 @@ +From 948a96d710f377fb0ed8d78c7fb85b299c80ef13 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sat, 8 Nov 2014 10:12:54 -0300 +Subject: [PATCH] arptables: disable dlfcn.h include + +The relevant code is disabled in libarptc_incl.c so it's not required +and breaks the ability to build it in a pure-static toolchain. + +Status: sent upstream. + +Signed-off-by: Gustavo Zacarias +--- + arptables.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arptables.c b/arptables.c +index 64ac3aa..fe270bc 100644 +--- a/arptables.c ++++ b/arptables.c +@@ -35,7 +35,9 @@ + #include + #include + #include ++#if 0 + #include ++#endif + #include + #include + #include +-- +2.0.4 + diff --git a/buildroot/package/arptables/0002-src-Use-stdint-types.patch b/buildroot/package/arptables/0002-src-Use-stdint-types.patch new file mode 100644 index 0000000..8a85e70 --- /dev/null +++ b/buildroot/package/arptables/0002-src-Use-stdint-types.patch @@ -0,0 +1,134 @@ +From 24957c135eaacd718f3c788285de33d64316b32e Mon Sep 17 00:00:00 2001 +From: Felix Janda +Date: Sat, 16 May 2015 10:31:24 +0200 +Subject: [PATCH 1/2] src: Use stdint types + +Backport of upstream commit 047f37b1d5d865084a435fd7594b8c5c332ccb8d + +Please note that the backported patch does not include two changes +to arptables.h from the upstream - these modified lines added in commit +dbbe9f7de36aa3c7dd61dc89092c03f7902e474e which was committed after +the 0.0.4 release. + +Upstream-status: backport +Signed-off-by: Felix Janda +Signed-off-by: Pablo Neira Ayuso +Signed-off-by: Brendan Heading +--- + arptables.c | 8 ++++---- + include/arptables.h | 3 ++- + include/libarptc/libarptc.h | 7 ++++--- + libarptc/libarptc.c | 4 ++-- + libarptc/libarptc_incl.c | 2 +- + 5 files changed, 13 insertions(+), 11 deletions(-) + +diff --git a/arptables.c b/arptables.c +index 5535ab2..6d1377f 100644 +--- a/arptables.c ++++ b/arptables.c +@@ -230,7 +230,7 @@ extern void dump_entries(const arptc_handle_t handle); + /etc/protocols */ + struct pprot { + char *name; +- u_int8_t num; ++ uint8_t num; + }; + + /* Primitive headers... */ +@@ -925,7 +925,7 @@ mask_to_dotted(const struct in_addr *mask) + { + int i; + static char buf[20]; +- u_int32_t maskaddr, bits; ++ uint32_t maskaddr, bits; + + maskaddr = ntohl(mask->s_addr); + +@@ -967,7 +967,7 @@ string_to_number(const char *s, unsigned int min, unsigned int max, + } + + static void +-set_option(unsigned int *options, unsigned int option, u_int16_t *invflg, ++set_option(unsigned int *options, unsigned int option, uint16_t *invflg, + int invert) + { + if (*options & option) +@@ -1107,7 +1107,7 @@ register_target(struct arptables_target *me) + } + + static void +-print_num(u_int64_t number, unsigned int format) ++print_num(uint64_t number, unsigned int format) + { + if (format & FMT_KILOMEGAGIGA) { + if (number > 99999) { +diff --git a/include/arptables.h b/include/arptables.h +index 820b664..e6a6ba6 100644 +--- a/include/arptables.h ++++ b/include/arptables.h +@@ -1,6 +1,7 @@ + #ifndef _ARPTABLES_USER_H + #define _ARPTABLES_USER_H + ++#include + #include "arptables_common.h" + #include "libarptc/libarptc.h" + +@@ -126,7 +127,7 @@ extern char *mask_to_dotted(const struct in_addr *mask); + + extern void parse_hostnetworkmask(const char *name, struct in_addr **addrpp, + struct in_addr *maskp, unsigned int *naddrs); +-extern u_int16_t parse_protocol(const char *s); ++extern uint16_t parse_protocol(const char *s); + + extern int do_command(int argc, char *argv[], char **table, + arptc_handle_t *handle); +diff --git a/include/libarptc/libarptc.h b/include/libarptc/libarptc.h +index e4f1175..76fbfab 100644 +--- a/include/libarptc/libarptc.h ++++ b/include/libarptc/libarptc.h +@@ -6,9 +6,10 @@ + #include + + #ifndef ARPT_MIN_ALIGN +-/* arpt_entry has pointers and u_int64_t's in it, so if you align to +- it, you'll also align to any crazy matches and targets someone +- might write */ ++/* arpt_entry has pointers and uint64_t's in it, so if you align to ++ * it, you'll also align to any crazy matches and targets someone ++ * might write. ++ */ + #define ARPT_MIN_ALIGN (__alignof__(struct arpt_entry)) + #endif + +diff --git a/libarptc/libarptc.c b/libarptc/libarptc.c +index 2dcaaef..701bae0 100644 +--- a/libarptc/libarptc.c ++++ b/libarptc/libarptc.c +@@ -256,8 +256,8 @@ unconditional(const struct arpt_arp *arp) + { + unsigned int i; + +- for (i = 0; i < sizeof(*arp)/sizeof(u_int32_t); i++) +- if (((u_int32_t *)arp)[i]) ++ for (i = 0; i < sizeof(*arp) / sizeof(uint32_t); i++) ++ if (((uint32_t *)arp)[i]) + return 0; + + return 1; +diff --git a/libarptc/libarptc_incl.c b/libarptc/libarptc_incl.c +index 2fa3d43..b41fcb2 100644 +--- a/libarptc/libarptc_incl.c ++++ b/libarptc/libarptc_incl.c +@@ -1706,7 +1706,7 @@ TC_COMMIT(TC_HANDLE_T *handle) + /* Kernel will think that pointer should be 64-bits, and get + padding. So we accomodate here (assumption: alignment of + `counters' is on 64-bit boundary). */ +- u_int64_t *kernptr = (u_int64_t *)&newcounters->counters; ++ uint64_t *kernptr = (uint64_t *)&newcounters->counters; + if ((unsigned long)&newcounters->counters % 8 != 0) { + fprintf(stderr, + "counters alignment incorrect! Mail rusty!\n"); +-- +2.4.3 + diff --git a/buildroot/package/arptables/0003-src-Remove-support-for-libc5.patch b/buildroot/package/arptables/0003-src-Remove-support-for-libc5.patch new file mode 100644 index 0000000..15e893d --- /dev/null +++ b/buildroot/package/arptables/0003-src-Remove-support-for-libc5.patch @@ -0,0 +1,64 @@ +From 5f1379ff68bfedb56309527bee266a591b27a19e Mon Sep 17 00:00:00 2001 +From: Felix Janda +Date: Sat, 16 May 2015 10:31:41 +0200 +Subject: [PATCH 2/2] src: Remove support for libc5 + +Fixes compilation with musl libc + +Backport of upstream commit f4ab8f63f11a72f14687a6646d04ae1bae3fa45f +Upstream status: backport +Signed-off-by: Felix Janda +Signed-off-by: Pablo Neira Ayuso +Signed-off-by: Brendan Heading +--- + include/libarptc/arpt_kernel_headers.h | 12 ------------ + libarptc/libarptc.c | 4 ---- + 2 files changed, 16 deletions(-) + +diff --git a/include/libarptc/arpt_kernel_headers.h b/include/libarptc/arpt_kernel_headers.h +index 442cc54..140e999 100644 +--- a/include/libarptc/arpt_kernel_headers.h ++++ b/include/libarptc/arpt_kernel_headers.h +@@ -5,7 +5,6 @@ + + #include + +-#if defined(__GLIBC__) && __GLIBC__ == 2 + #include + #include + #include +@@ -14,16 +13,5 @@ + #include + #include + #include +-#else +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-#endif + + #endif +diff --git a/libarptc/libarptc.c b/libarptc/libarptc.c +index 701bae0..9c5a5b0 100644 +--- a/libarptc/libarptc.c ++++ b/libarptc/libarptc.c +@@ -23,10 +23,6 @@ + #define inline + #endif + +-#if !defined(__GLIBC__) || (__GLIBC__ < 2) +-typedef unsigned int socklen_t; +-#endif +- + #include "libarptc/libarptc.h" + + #define IP_VERSION 4 +-- +2.4.3 + diff --git a/buildroot/package/arptables/0004-Fix-musl-build-issue.patch b/buildroot/package/arptables/0004-Fix-musl-build-issue.patch new file mode 100644 index 0000000..e9419b0 --- /dev/null +++ b/buildroot/package/arptables/0004-Fix-musl-build-issue.patch @@ -0,0 +1,71 @@ +From cbf84a0bc377c6a368d30571f37ebfab27784697 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Wed, 2 Dec 2015 04:57:33 +0100 +Subject: [PATCH 4/4] Fix musl build issue +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Due to clashes in the namespace between the Linux Kernel headers and the +netinet headers building arptables with the musl C library fails. + +Best advice from the musl developers is to not include both headers in a +userspace tool (see the thread on the musl mailing list [1], especially [2]). + +Since arptables only requires a few definitions from the Linux Kernel headers +we opt-out the clashing header files and define the needed definitions. + +[1] http://www.openwall.com/lists/musl/2012/10/09/1 +[2] http://www.openwall.com/lists/musl/2012/10/11/1 + +Signed-off-by: Jörg Krause +--- + extensions/arpt_CLASSIFY.c | 7 +++++++ + include/linux/netfilter_arp.h | 11 +++++++++++ + 2 files changed, 18 insertions(+) + +diff --git a/extensions/arpt_CLASSIFY.c b/extensions/arpt_CLASSIFY.c +index cb5770b..c58129f 100644 +--- a/extensions/arpt_CLASSIFY.c ++++ b/extensions/arpt_CLASSIFY.c +@@ -21,7 +21,14 @@ + #include + #include + #include ++ ++#ifdef __KERNEL__ + #include ++#else ++struct xt_classify_target_info { ++ uint32_t priority; ++}; ++#endif + + #define TC_H_MAJ_MASK (0xFFFF0000U) + #define TC_H_MIN_MASK (0x0000FFFFU) +diff --git a/include/linux/netfilter_arp.h b/include/linux/netfilter_arp.h +index 92bc6dd..2a63e82 100644 +--- a/include/linux/netfilter_arp.h ++++ b/include/linux/netfilter_arp.h +@@ -5,7 +5,18 @@ + * (C)2002 Rusty Russell IBM -- This code is GPL. + */ + ++#ifdef __KERNEL__ + #include ++#else ++/* Responses from hook functions. */ ++#define NF_DROP 0 ++#define NF_ACCEPT 1 ++#define NF_STOLEN 2 ++#define NF_QUEUE 3 ++#define NF_REPEAT 4 ++#define NF_STOP 5 ++#define NF_MAX_VERDICT NF_STOP ++#endif + + /* There is no PF_ARP. */ + #define NF_ARP 0 +-- +2.6.2 + diff --git a/buildroot/package/arptables/Config.in b/buildroot/package/arptables/Config.in new file mode 100644 index 0000000..873e791 --- /dev/null +++ b/buildroot/package/arptables/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ARPTABLES + bool "arptables" + depends on BR2_USE_MMU # needs fork() + help + Tool to set up, maintain, and inspect the tables of ARP rules. + + http://ebtables.sourceforge.net diff --git a/buildroot/package/arptables/arptables.hash b/buildroot/package/arptables/arptables.hash new file mode 100644 index 0000000..95b9997 --- /dev/null +++ b/buildroot/package/arptables/arptables.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 277985e29ecd93bd759a58242cad0e02ba9d4a6e1b7795235e3b507661bc0049 arptables-v0.0.4.tar.gz diff --git a/buildroot/package/arptables/arptables.mk b/buildroot/package/arptables/arptables.mk new file mode 100644 index 0000000..257b636 --- /dev/null +++ b/buildroot/package/arptables/arptables.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# arptables +# +################################################################################ + +ARPTABLES_VERSION = 0.0.4 +ARPTABLES_SOURCE = arptables-v$(ARPTABLES_VERSION).tar.gz +ARPTABLES_SITE = http://downloads.sourceforge.net/project/ebtables/arptables/arptables-v$(ARPTABLES_VERSION) +ARPTABLES_LICENSE = GPL-2.0+ + +define ARPTABLES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" COPT_FLAGS="$(TARGET_CFLAGS)" +endef + +define ARPTABLES_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/arptables $(TARGET_DIR)/usr/sbin/arptables +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/assimp/0001-Fix-FBXConverter-use-proper-64-bit-constant.patch b/buildroot/package/assimp/0001-Fix-FBXConverter-use-proper-64-bit-constant.patch new file mode 100644 index 0000000..bfcbeb5 --- /dev/null +++ b/buildroot/package/assimp/0001-Fix-FBXConverter-use-proper-64-bit-constant.patch @@ -0,0 +1,35 @@ +From 30a2ecc7939449f235282eb6de42e367fc5b1867 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 14 Jan 2016 22:13:15 +0100 +Subject: [PATCH] Fix FBXConverter: use proper 64-bit constant + +Use proper 64-bit constant for CONVERT_FBX_TIME(time) conversion, fixes: + + code/FBXConverter.cpp:2025: error: integer constant is too large for 'long' type + code/FBXConverter.cpp:2026: error: integer constant is too large for 'long' type + code/FBXConverter.cpp:2794: error: integer constant is too large for 'long' type + code/FBXConverter.cpp:2868: error: integer constant is too large for 'long' type + code/FBXConverter.cpp:2878: error: integer constant is too large for 'long' type + code/FBXConverter.cpp:2888: error: integer constant is too large for 'long' type + +Signed-off-by: Peter Seiderer +--- + code/FBXConverter.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp +index e0c6b9c..b1e9a71 100644 +--- a/code/FBXConverter.cpp ++++ b/code/FBXConverter.cpp +@@ -67,7 +67,7 @@ namespace FBX { + + #define MAGIC_NODE_TAG "_$AssimpFbx$" + +-#define CONVERT_FBX_TIME(time) static_cast(time) / 46186158000L ++#define CONVERT_FBX_TIME(time) static_cast(time) / 46186158000LL + + // XXX vc9's debugger won't step into anonymous namespaces + //namespace { +-- +2.1.4 + diff --git a/buildroot/package/assimp/0002-fix-compilation-on-BigEndian.patch b/buildroot/package/assimp/0002-fix-compilation-on-BigEndian.patch new file mode 100644 index 0000000..93cba5d --- /dev/null +++ b/buildroot/package/assimp/0002-fix-compilation-on-BigEndian.patch @@ -0,0 +1,40 @@ +From 8457f3eff89dae35d43f679a66842ceedfd08808 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= + +Date: Fri, 13 Nov 2015 22:33:20 +0100 +Subject: [PATCH] fix compilation on BigEndian + +cannot pass a function by reference where an lvalue is expected +(only applies to bigendian, where a macro expands to a byteswap function) + +Closes https://github.com/assimp/assimp/issues/613 + +Taken from [1] for buildroot assimp package compile fix. + +[1] https://github.com/assimp/assimp/commit/756cfd4f74b866e3183caede69daa8c105b73bab.patch + +Signed-off-by: Peter Seiderer +--- + code/Bitmap.cpp | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/code/Bitmap.cpp b/code/Bitmap.cpp +index 13ec372..829fd02 100644 +--- a/code/Bitmap.cpp ++++ b/code/Bitmap.cpp +@@ -84,7 +84,12 @@ namespace Assimp { + + template + inline std::size_t Copy(uint8_t* data, T& field) { ++#ifdef AI_BUILD_BIG_ENDIAN ++ T field_swapped=AI_BE(field); ++ std::memcpy(data, &field_swapped, sizeof(field)); return sizeof(field); ++#else + std::memcpy(data, &AI_BE(field), sizeof(field)); return sizeof(field); ++#endif + } + + void Bitmap::WriteHeader(Header& header, IOStream* file) { +-- +2.1.4 + diff --git a/buildroot/package/assimp/Config.in b/buildroot/package/assimp/Config.in new file mode 100644 index 0000000..41c1bb3 --- /dev/null +++ b/buildroot/package/assimp/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_ASSIMP + bool "assimp" + # All gcc versions affected by + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71124, that + # cause an infinite loop in gcc when building this package. + depends on !BR2_microblaze + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_ZLIB + help + Open Asset Import Library (assimp) is a portable Open Source + library to import various well-known 3D model formats in a + uniform manner. The most recent version also knows how to + export 3d files and is therefore suitable as a general-purpose + 3D model converter. + + http://www.assimp.org + +comment "assimp needs a toolchain w/ C++" + depends on !BR2_microblaze + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/assimp/assimp.hash b/buildroot/package/assimp/assimp.hash new file mode 100644 index 0000000..bee26fb --- /dev/null +++ b/buildroot/package/assimp/assimp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 187f825c563e84b1b17527a4da0351aa3d575dfd696a9d204ae4bb19ee7df94a assimp-v3.2.tar.gz diff --git a/buildroot/package/assimp/assimp.mk b/buildroot/package/assimp/assimp.mk new file mode 100644 index 0000000..4d44748 --- /dev/null +++ b/buildroot/package/assimp/assimp.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# assimp +# +################################################################################ + +ASSIMP_VERSION = v3.2 +ASSIMP_SITE = $(call github,assimp,assimp,$(ASSIMP_VERSION)) +ASSIMP_LICENSE = BSD-3-Clause +ASSIMP_LICENSE_FILES = LICENSE +ASSIMP_DEPENDENCIES = zlib +ASSIMP_INSTALL_STAGING = YES + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k),y) +ASSIMP_CXXFLAGS += -mxgot +endif + +# workaround SuperH compiler failure when static linking (i.e -fPIC is +# not passed) in gcc versions 5.x or older. The -Os optimization level +# causes a "unable to find a register to spill in class +# ‘GENERAL_REGS’" error. -O2 works fine. +ifeq ($(BR2_sh):$(BR2_STATIC_LIBS):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:y:) +ASSIMP_CXXFLAGS += -O2 +endif + +ASSIMP_CONF_OPTS += -DASSIMP_BUILD_TESTS=OFF \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) $(ASSIMP_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/buildroot/package/asterisk/0001-configure-do-not-configure-in-menuselect.patch b/buildroot/package/asterisk/0001-configure-do-not-configure-in-menuselect.patch new file mode 100644 index 0000000..d6d02d2 --- /dev/null +++ b/buildroot/package/asterisk/0001-configure-do-not-configure-in-menuselect.patch @@ -0,0 +1,58 @@ +From cc5daff874779475742bdb89a9328bb4fc4c4e09 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 27 Dec 2016 11:20:19 +0100 +Subject: [PATCH] configure: do not configure in menuselect + +When cross-compiling, the arguments and environment for ./configure are +different for the host and the target, and we want menuselect to be +compiled for the build machine, not the target. + +Although we do not pass any option to ./configure for menuselect, the +environment may still reference variables for the target, like CC or +CFLAGS and so on... We can not build menuselect with those variables. + +Instead, just assume that menuselect will be pre-compiled. + +Signed-off-by: "Yann E. MORIN" +--- + configure | 16 ---------------- + configure.ac | 16 ---------------- + 2 files changed, 32 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 66c8971..121dd93 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2662,12 +2662,6 @@ fi + + AC_SUBST([PBX_SYSLOG]) + +-if test -f makeopts; then +- ${ac_cv_path_EGREP} 'CURSES|GTK2|OSARCH|NEWT' makeopts > makeopts.acbak +-else +- touch makeopts.acbak +-fi +- + AC_CONFIG_FILES([build_tools/menuselect-deps makeopts]) + AST_CHECK_MANDATORY + +@@ -2683,16 +2677,6 @@ fi + + AC_OUTPUT + +-${ac_cv_path_EGREP} 'CURSES|GTK2|OSARCH|NEWT' makeopts > makeopts.acbak2 +-if test "x${ac_cv_path_CMP}" = "x:"; then +- ( cd `pwd`/menuselect && ./configure ) +-else if ${ac_cv_path_CMP} -s makeopts.acbak makeopts.acbak2; then : ; else +- ( cd `pwd`/menuselect && ./configure ) +-fi ; fi +- +-rm makeopts.acbak makeopts.acbak2 +- +- + if test "x${silent}" != "xyes" ; then + echo + echo " .\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$=.. " +-- +2.7.4 + diff --git a/buildroot/package/asterisk/0002-sounds-do-not-download-and-check-sha1s.patch b/buildroot/package/asterisk/0002-sounds-do-not-download-and-check-sha1s.patch new file mode 100644 index 0000000..8412843 --- /dev/null +++ b/buildroot/package/asterisk/0002-sounds-do-not-download-and-check-sha1s.patch @@ -0,0 +1,52 @@ +From 3e8a9e9a1c7eae515eb628778c3c8a04338b3bb3 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 27 Dec 2016 11:21:09 +0100 +Subject: [PATCH] sounds: do not download and check sha1s + +To validate the sound archives, the corresponding sha1s are also +downloaded from the same location, and that download is done at install +time. + +However, that poses at least two problems: + + - in Buildroot, we already have validated the downloads with the sha1s + anyway, and trying to download anything at install time is not + always possible (e.g. for off-line builds); + + - since the download scheme is not secured (plain http), a + man-in-the-middle for the sounds will also be able to MITM the + download of the sha1s, so there is absolutely no additional safety + in doing so. + +So we just do without the sha1 download and checks. + +Signed-off-by: "Yann E. MORIN" +--- + sounds/Makefile | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/sounds/Makefile b/sounds/Makefile +index 84d0f45..7a80d56 100644 +--- a/sounds/Makefile ++++ b/sounds/Makefile +@@ -100,17 +100,7 @@ ifneq ($(SOUNDS_CACHE_DIR),) + if test ! -f "$$(SOUNDS_CACHE_DIR)/$$@"; then \ + (cd "$$(SOUNDS_CACHE_DIR)"; $$(DOWNLOAD) $$(SOUNDS_URL)/$$@); \ + fi; \ +- if test ! -f "$$(SOUNDS_CACHE_DIR)/$$@.sha1"; then \ +- (cd "$$(SOUNDS_CACHE_DIR)"; $$(DOWNLOAD) $$(SOUNDS_URL)/$$@.sha1); \ +- fi; \ + $$(LN) -sf "$$(SOUNDS_CACHE_DIR)/$$@" .; \ +- $$(LN) -sf "$$(SOUNDS_CACHE_DIR)/$$@.sha1" .; \ +- $$(SHA1SUM) -c --status $$@.sha1 || \ +- ( \ +- rm -f "$$(SOUNDS_CACHE_DIR)/$$@" "$$(SOUNDS_CACHE_DIR)/$$@.sha1" $$@ $$@.sha1; \ +- echo "Bad checksum: $$@" 1>&2; \ +- exit 1; \ +- ) || exit 1; \ + fi + else + $(CMD_PREFIX) \ +-- +2.7.4 + diff --git a/buildroot/package/asterisk/0003-configure-fix-detection-of-libcrypt.patch b/buildroot/package/asterisk/0003-configure-fix-detection-of-libcrypt.patch new file mode 100644 index 0000000..d82f508 --- /dev/null +++ b/buildroot/package/asterisk/0003-configure-fix-detection-of-libcrypt.patch @@ -0,0 +1,43 @@ +From 8996503f6c55e55f326ab11c18278954ad7abaf3 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 27 Dec 2016 11:21:57 +0100 +Subject: [PATCH] configure: fix detection of libcrypt + +The crypt() function is searched in two locations: -lcrypt and the +standard C library. + +The result of the former is stored in the LIBCRYPT 'scheme' while that +of the latter is stored in the 'SYSCRYPT' scheme. + +However, the check for mandatory modules looks at the CRYPT 'scheme', +and thus concludes that crypt is missing when it was successfully found. + +Fix that by also storing the result of either check in the 'CRYPT' +scheme. + +Signed-off-by: "Yann E. MORIN" +--- + configure | 2 ++ + configure.ac | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 121dd93..d459ff5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2406,10 +2406,12 @@ AC_CHECK_FUNC([crypt], [SYSCRYPT=true], [SYSCRYPT=""]) + if test "x$LIBCRYPT_LIB" != "x" ; then + CRYPT_LIB="$LIBCRYPT_LIB" + CRYPT_INCLUDE="$LIBCRYPT_INCLUDE" ++ PBX_CRYPT=1 + AC_DEFINE([HAVE_CRYPT], [1], [Define to 1 if you have the 'crypt' function.]) + elif test "x$SYSCRYPT" != "x" ; then + CRYPT_LIB="" + CRYPT_INCLUDE="" ++ PBX_CRYPT=1 + AC_DEFINE([HAVE_CRYPT], [1], [Define to 1 if you have the 'crypt' function.]) + fi + +-- +2.7.4 + diff --git a/buildroot/package/asterisk/0004-build-ensure-target-directory-for-modules-exists.patch b/buildroot/package/asterisk/0004-build-ensure-target-directory-for-modules-exists.patch new file mode 100644 index 0000000..20cfc93 --- /dev/null +++ b/buildroot/package/asterisk/0004-build-ensure-target-directory-for-modules-exists.patch @@ -0,0 +1,32 @@ +From 933b2554a40f932571bdbdbb5217cda3e35fd61f Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 27 Nov 2017 12:52:52 +0100 +Subject: [PATCH] build: ensure target directory for modules exists + +Currently, in highly-parallel builds, it is possible that installing +modules fails because the target directory does not exist yet. + +We fix that by instructing $(INSTALL) to create the destination directory +first. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.moddir_rules | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.moddir_rules b/Makefile.moddir_rules +index 59190bece9..b73153a9a5 100644 +--- a/Makefile.moddir_rules ++++ b/Makefile.moddir_rules +@@ -110,7 +110,7 @@ clean:: + + install:: all + @echo "Installing modules from `basename $(CURDIR)`..." +- @for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -m 755 $$x "$(DESTDIR)$(ASTMODDIR)" ; done ++ @for x in $(LOADABLE_MODS:%=%.so); do $(INSTALL) -D -m 755 $$x "$(DESTDIR)$(ASTMODDIR)" ; done + ifneq ($(findstring :,$(XMLSTARLET)$(BASH)),:) + @if [ -f .moduleinfo ] ; then \ + declare -A DISABLED_MODS ;\ +-- +2.11.0 + diff --git a/buildroot/package/asterisk/0005-install-samples-need-the-data-files.patch b/buildroot/package/asterisk/0005-install-samples-need-the-data-files.patch new file mode 100644 index 0000000..a9560e8 --- /dev/null +++ b/buildroot/package/asterisk/0005-install-samples-need-the-data-files.patch @@ -0,0 +1,35 @@ +From 05680ea9899c2246c23d11860c2c8e10aa8f80c7 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Fri, 1 Dec 2017 11:08:16 +0100 +Subject: [PATCH] install: samples need the data files + +When installing samples, "sample voicemail" is generated from the +already-installed sound files. + +However, when doing the install and the samples at the same time in a +parallel install, it is possible that the sound files are not already +installed at the time we try to generate the voicemail data. + +Ensure the needed dependency. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index f29c07f680..b58f707b61 100644 +--- a/Makefile ++++ b/Makefile +@@ -779,7 +779,7 @@ adsi: + $(INSTALL) -m 644 "$$x" "$(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x`" ; \ + done + +-samples: adsi ++samples: adsi datafiles + @echo Installing other config files... + $(call INSTALL_CONFIGS,samples,.sample) + $(INSTALL) -d "$(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX" +-- +2.11.0 + diff --git a/buildroot/package/asterisk/0006-build-fix-issues-building-without-ssl.patch b/buildroot/package/asterisk/0006-build-fix-issues-building-without-ssl.patch new file mode 100644 index 0000000..b02031e --- /dev/null +++ b/buildroot/package/asterisk/0006-build-fix-issues-building-without-ssl.patch @@ -0,0 +1,57 @@ +From 999e0c17d7e4139d36730752a34fbfde18a4f9f1 Mon Sep 17 00:00:00 2001 +From: Corey Farrell +Date: Sun, 19 Nov 2017 14:52:59 -0500 +Subject: [PATCH] Build: Fix issues building without SSL. + +* Fix conditional in libasteriskssl. +* Use variables produced by configure to link the SSL and uuid libraries + into libasteriskpj.so instead of hard-coding them. + +ASTERISK-27431 + +Change-Id: I3977931fd3ef8c4e4376349ccddb354eb839b58d + +Downloaded from upstream master branch +https://github.com/asterisk/asterisk/commit/999e0c17d7e4139d36730752a34fbfde18a4f9f1 + +Signed-off-by: Bernd Kuhls +--- + main/Makefile | 4 ++-- + main/libasteriskssl.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/main/Makefile b/main/Makefile +index 08d1f65580e..c724e2012b0 100644 +--- a/main/Makefile ++++ b/main/Makefile +@@ -273,7 +273,7 @@ endif + + $(ASTPJ_LIB).$(ASTPJ_SO_VERSION): _ASTLDFLAGS+=-Wl,-soname=$(ASTPJ_LIB).$(ASTPJ_SO_VERSION) $(PJ_LDFLAGS) + $(ASTPJ_LIB).$(ASTPJ_SO_VERSION): _ASTCFLAGS+=-fPIC -DAST_MODULE=\"asteriskpj\" -DAST_NOT_MODULE $(PJ_CFLAGS) +-$(ASTPJ_LIB).$(ASTPJ_SO_VERSION): LIBS+=$(PJPROJECT_LDLIBS) -lssl -lcrypto -luuid -lm -lpthread $(RT_LIB) ++$(ASTPJ_LIB).$(ASTPJ_SO_VERSION): LIBS+=$(PJPROJECT_LDLIBS) $(OPENSSL_LIB) $(UUID_LIB) -lm -lpthread $(RT_LIB) + ifeq ($(GNU_LD),1) + $(ASTPJ_LIB).$(ASTPJ_SO_VERSION): SO_SUPPRESS_SYMBOLS=-Wl,--version-script,libasteriskpj.exports,--warn-common + endif +@@ -298,7 +298,7 @@ ASTPJ_LIB:=libasteriskpj.dylib + # /lib or /usr/lib + $(ASTPJ_LIB): _ASTLDFLAGS+=-dynamiclib -install_name $(ASTLIBDIR)/$(ASTPJ_LIB) $(PJ_LDFLAGS) + $(ASTPJ_LIB): _ASTCFLAGS+=-fPIC -DAST_MODULE=\"asteriskpj\" $(PJ_CFLAGS) -DAST_NOT_MODULE +-$(ASTPJ_LIB): LIBS+=$(PJPROJECT_LIBS) -lssl -lcrypto -luuid -lm -lpthread $(RT_LIB) ++$(ASTPJ_LIB): LIBS+=$(PJPROJECT_LIBS) $(OPENSSL_LIB) $(UUID_LIB) -lm -lpthread $(RT_LIB) + $(ASTPJ_LIB): SOLINK=$(DYLINK) + + # Special rules for building a shared library (not a dynamically loadable module) +diff --git a/main/libasteriskssl.c b/main/libasteriskssl.c +index 8b19e247da9..e2e256f8ffe 100644 +--- a/main/libasteriskssl.c ++++ b/main/libasteriskssl.c +@@ -37,7 +37,7 @@ + #endif + + #if defined(HAVE_OPENSSL) && \ +- !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ++ (!defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)) + + #include + diff --git a/buildroot/package/asterisk/Config.in b/buildroot/package/asterisk/Config.in new file mode 100644 index 0000000..17ac22b --- /dev/null +++ b/buildroot/package/asterisk/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_ASTERISK + bool "asterisk" + # Uses glibc resolver function res_nsearch() + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBILBC + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Asterisk is an open source framework for building + communications applications. Asterisk turns an ordinary + computer into a communications server. Asterisk powers IP PBX + systems, VoIP gateways, conference servers and other custom + solutions. It is used by small businesses, large businesses, + call centers, carriers and government agencies, worldwide. + Asterisk is free and open source. + + http://www.asterisk.org/ + +comment "asterisk needs a glibc toolchain w/ C++" + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/asterisk/asterisk.hash b/buildroot/package/asterisk/asterisk.hash new file mode 100644 index 0000000..a3e9d10 --- /dev/null +++ b/buildroot/package/asterisk/asterisk.hash @@ -0,0 +1,15 @@ +# Locally computed +sha256 249cf223ef4dd7aea01f0d250a6b9cad661ebd78910c73adb7f59c1c46f9fed8 asterisk-14.7.6.tar.gz + +# sha1 from: http://downloads.asterisk.org/pub/telephony/sounds/releases +# sha256 locally computed +sha1 65ee068462c6645ed14a28d6b34eb0e9aa7a6c8d asterisk-core-sounds-en-gsm-1.5.tar.gz +sha256 8d1118c6e0a0c614fafe297e3789f924ef5b04285cf6a8cffb8501dfcf5bbf07 asterisk-core-sounds-en-gsm-1.5.tar.gz +sha1 f40fd6ea03dfe8d72ada2540b2288bfdc006381d asterisk-moh-opsound-wav-2.03.tar.gz +sha256 449fb810d16502c3052fedf02f7e77b36206ac5a145f3dacf4177843a2fcb538 asterisk-moh-opsound-wav-2.03.tar.gz + +# License files, locally computed +sha256 82af40ed7f49c08685360811993d9396320842f021df828801d733e8fdc0312f COPYING +sha256 ac5571f00e558e3b7c9b3f13f421b874cc12cf4250c4f70094c71544cf486312 main/sha1.c +sha256 0fcdb946955d20c2819a51f3fe613d8f22da2ea793bd50acb30ce156499acc88 codecs/speex/speex_resampler.h +sha256 e6e7b7204d34a3dcdf17389a9c8cf64721ec0d15a797fd51c8c1ed8517cc3038 utils/db1-ast/include/db.h diff --git a/buildroot/package/asterisk/asterisk.mk b/buildroot/package/asterisk/asterisk.mk new file mode 100644 index 0000000..28b85da --- /dev/null +++ b/buildroot/package/asterisk/asterisk.mk @@ -0,0 +1,316 @@ +################################################################################ +# +# asterisk +# +################################################################################ + +ASTERISK_VERSION = 14.7.6 +# Use the github mirror: it's an official mirror maintained by Digium, and +# provides tarballs, which the main Asterisk git tree (behind Gerrit) does not. +ASTERISK_SITE = $(call github,asterisk,asterisk,$(ASTERISK_VERSION)) + +ASTERISK_SOUNDS_BASE_URL = http://downloads.asterisk.org/pub/telephony/sounds/releases +ASTERISK_EXTRA_DOWNLOADS = \ + $(ASTERISK_SOUNDS_BASE_URL)/asterisk-core-sounds-en-gsm-1.5.tar.gz \ + $(ASTERISK_SOUNDS_BASE_URL)/asterisk-moh-opsound-wav-2.03.tar.gz + +ASTERISK_LICENSE = GPL-2.0, BSD-3c (SHA1, resample), BSD-4c (db1-ast) +ASTERISK_LICENSE_FILES = \ + COPYING \ + main/sha1.c \ + codecs/speex/speex_resampler.h \ + utils/db1-ast/include/db.h + +# For patches 0001, 0003 and 0004 +ASTERISK_AUTORECONF = YES +ASTERISK_AUTORECONF_OPTS = -Iautoconf -Ithird-party -Ithird-party/pjproject + +ASTERISK_DEPENDENCIES = \ + host-asterisk \ + jansson \ + libcurl \ + libxml2 \ + ncurses \ + sqlite \ + util-linux + +# Asterisk wants to run its menuselect tool (a highly tweaked derivative of +# kconfig), but builds it using the target tools. So we build it in the host +# variant (see below), and copy the full build tree of menuselect. +define ASTERISK_COPY_MENUSELECT + rm -rf $(@D)/menuselect + cp -a $(HOST_ASTERISK_DIR)/menuselect $(@D)/menuselect +endef +ASTERISK_PRE_CONFIGURE_HOOKS += ASTERISK_COPY_MENUSELECT + +ASTERISK_CONF_OPTS = \ + --disable-xmldoc \ + --disable-internal-poll \ + --disable-asteriskssl \ + --disable-rpath \ + --without-bfd \ + --without-cap \ + --without-cpg \ + --without-curses \ + --without-gtk2 \ + --without-gmime \ + --without-h323 \ + --without-hoard \ + --without-iconv \ + --without-iksemel \ + --without-imap \ + --without-inotify \ + --without-iodbc \ + --without-isdnnet \ + --without-jack \ + --without-uriparser \ + --without-kqueue \ + --without-libedit \ + --without-libxslt \ + --without-ltdl \ + --without-lua \ + --without-misdn \ + --without-mysqlclient \ + --without-nbs \ + --without-neon29 \ + --without-newt \ + --without-openr2 \ + --without-osptk \ + --without-oss \ + --without-postgres \ + --without-pjproject \ + --without-popt \ + --without-pwlib \ + --without-resample \ + --without-sdl \ + --without-SDL_image \ + --without-spandsp \ + --without-sqlite \ + --without-suppserv \ + --without-tds \ + --without-termcap \ + --without-timerfd \ + --without-tinfo \ + --without-unbound \ + --without-unixodbc \ + --without-vpb \ + --without-x11 \ + --with-crypt \ + --with-jansson \ + --with-libcurl \ + --with-ilbc \ + --with-libxml2 \ + --with-ncurses="$(STAGING_DIR)/usr" \ + --with-sqlite3="$(STAGING_DIR)/usr" \ + --with-sounds-cache=$(BR2_DL_DIR) + +# avcodec are from ffmpeg. There is virtually zero chance this could +# even work; asterisk is looking for ffmpeg/avcodec.h which has not +# been installed in this location since early 2007 (~10 years ago at +# the time of this writing). +ASTERISK_CONF_OPTS += --without-avcodec + +ASTERISK_CONF_ENV = \ + ac_cv_path_CONFIG_LIBXML2=$(STAGING_DIR)/usr/bin/xml2-config + +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +ASTERISK_CONF_OPTS += --with-execinfo +else +ASTERISK_CONF_OPTS += --without-execinfo +endif + +ifeq ($(BR2_PACKAGE_LIBGSM),y) +ASTERISK_DEPENDENCIES += libgsm +ASTERISK_CONF_OPTS += --with-gsm +else +ASTERISK_CONF_OPTS += --without-gsm +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +ASTERISK_DEPENDENCIES += alsa-lib +ASTERISK_CONF_OPTS += --with-asound +else +ASTERISK_CONF_OPTS += --without-asound +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +ASTERISK_DEPENDENCIES += bluez_utils +ASTERISK_CONF_OPTS += --with-bluetooth +else +ASTERISK_CONF_OPTS += --without-bluetooth +endif + +ifeq ($(BR2_PACKAGE_LIBICAL),y) +ASTERISK_DEPENDENCIES += libical +ASTERISK_CONF_OPTS += --with-ical +else +ASTERISK_CONF_OPTS += --without-ical +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +ASTERISK_DEPENDENCIES += openldap +ASTERISK_CONF_OPTS += --with-ldap +else +ASTERISK_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_NEON),y) +ASTERISK_DEPENDENCIES += neon +ASTERISK_CONF_OPTS += --with-neon +ASTERISK_CONF_ENV += \ + ac_cv_path_CONFIG_NEON=$(STAGING_DIR)/usr/bin/neon-config +else +ASTERISK_CONF_OPTS += --without-neon +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +ASTERISK_DEPENDENCIES += netsnmp +ASTERISK_CONF_OPTS += --with-netsnmp=$(STAGING_DIR)/usr +else +ASTERISK_CONF_OPTS += --without-netsnmp +endif + +ifeq ($(BR2_PACKAGE_LIBOGG),y) +ASTERISK_DEPENDENCIES += libogg +ASTERISK_CONF_OPTS += --with-ogg +else +ASTERISK_CONF_OPTS += --without-ogg +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +ASTERISK_DEPENDENCIES += opus +ASTERISK_CONF_OPTS += --with-opus +else +ASTERISK_CONF_OPTS += --without-opus +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +ASTERISK_DEPENDENCIES += portaudio +ASTERISK_CONF_OPTS += --with-portaudio +else +ASTERISK_CONF_OPTS += --without-portaudio +endif + +ifeq ($(BR2_PACKAGE_FREERADIUS_CLIENT),y) +ASTERISK_DEPENDENCIES += freeradius-client +ASTERISK_CONF_OPTS += --with-radius +else +ASTERISK_CONF_OPTS += --without-radius +endif + +ifeq ($(BR2_PACKAGE_DAHDI_LINUX)$(BR2_PACKAGE_DAHDI_TOOLS),yy) +ASTERISK_DEPENDENCIES += dahdi-linux dahdi-tools +ASTERISK_CONF_OPTS += --with-dahdi --with-tonezone + +ifeq ($(BR2_PACKAGE_LIBPRI),y) +ASTERISK_DEPENDENCIES += libpri +ASTERISK_CONF_OPTS += --with-pri +else +ASTERISK_CONF_OPTS += --without-pri +endif # PRI + +ifeq ($(BR2_PACKAGE_LIBSS7),y) +ASTERISK_DEPENDENCIES += libss7 +ASTERISK_CONF_OPTS += --with-ss7 +else +ASTERISK_CONF_OPTS += --without-ss7 +endif # SS7 + +else +ASTERISK_CONF_OPTS += \ + --without-dahdi --without-tonezone \ + --without-pri --without-ss7 +endif # DAHDI + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ASTERISK_DEPENDENCIES += openssl +ASTERISK_CONF_OPTS += --with-ssl +else +ASTERISK_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +ASTERISK_DEPENDENCIES += speex +ASTERISK_CONF_OPTS += --with-speex --with-speexdsp +else +ASTERISK_CONF_OPTS += --without-speex --without-speexdsp +endif + +ifeq ($(BR2_PACKAGE_LIBSRTP),y) +ASTERISK_DEPENDENCIES += libsrtp +ASTERISK_CONF_OPTS += --with-srtp +else +ASTERISK_CONF_OPTS += --without-srtp +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +ASTERISK_DEPENDENCIES += libvorbis +ASTERISK_CONF_OPTS += --with-vorbis +else +ASTERISK_CONF_OPTS += --without-vorbis +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ASTERISK_DEPENDENCIES += zlib +ASTERISK_CONF_OPTS += --with-z +else +ASTERISK_CONF_OPTS += --without-z +endif + +ASTERISK_DIRS = \ + ASTVARLIBDIR="/usr/lib/asterisk" \ + ASTDATADIR="/usr/lib/asterisk" \ + ASTKEYDIR="/usr/lib/asterisk" \ + ASTDBDIR="/usr/lib/asterisk" + +ASTERISK_MAKE_OPTS = $(ASTERISK_DIRS) + +# We want to install sample configuration files, too. +ASTERISK_INSTALL_TARGET_OPTS = \ + $(ASTERISK_DIRS) \ + DESTDIR=$(TARGET_DIR) \ + LDCONFIG=true \ + install samples + +$(eval $(autotools-package)) + +#------------------------------------------------------------------------------- +# This part deals with building the menuselect tool as a host package + +HOST_ASTERISK_DEPENDENCIES = host-pkgconf host-libxml2 host-ncurses +HOST_ASTERISK_SUBDIR = menuselect + +HOST_ASTERISK_LICENSE = GPL-2.0 +HOST_ASTERISK_LICENSE_FILES = COPYING + +# No need to autoreconf for the host variant, +# so do not inherit the target setup. +HOST_ASTERISK_AUTORECONF = NO + +HOST_ASTERISK_CONF_ENV = CONFIG_LIBXML2=$(HOST_DIR)/bin/xml2-config + +HOST_ASTERISK_CONF_OPTS = \ + --without-newt \ + --without-curses \ + --with-ncurses=$(HOST_DIR)/usr + +# Not an automake package, so does not inherit LDFLAGS et al. from +# the configure run. +HOST_ASTERISK_MAKE_ENV = $(HOST_CONFIGURE_OPTS) + +# Even though menuselect is an autotools package, it is not an automake +# package and does not have an 'install' rule, as asterisk does expect +# it to be in a sub-directory of its source tree. We do so by copying +# the full menuselect build tree as a pre-configure hook in the target +# variant. +# However, the sanity checks on host packages are not run on menuselect. +# But we still want to catch that menuselect has the proper rpath set, +# for example, as it uses host libraries that we do build, like +# host-libxml2. +# So we do manually install the menuselect tool. +define HOST_ASTERISK_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/menuselect/menuselect \ + $(HOST_DIR)/bin/asterisk-menuselect +endef + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/at/0001-configure.ac-convert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch b/buildroot/package/at/0001-configure.ac-convert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch new file mode 100644 index 0000000..e4276ac --- /dev/null +++ b/buildroot/package/at/0001-configure.ac-convert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch @@ -0,0 +1,34 @@ +From e12c96cccab550eda31cf7bb1dedddd3670ffe69 Mon Sep 17 00:00:00 2001 +From: Marc Kleine-Budde +Date: Tue, 1 Dec 2009 17:22:22 +0100 +Subject: [PATCH 2/5] configure.ac: convert AC_TRY_COMPILE -> AC_COMPILE_IFELSE + +Signed-off-by: Marc Kleine-Budde +--- + configure.ac | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 997a37f..cab80ed 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -40,11 +40,11 @@ case "$host" in + esac + + AC_MSG_CHECKING(__attribute__((noreturn))) +-AC_TRY_COMPILE([], [void __attribute__((noreturn)) panic(void);], +- AC_MSG_RESULT(yes) +- AC_DEFINE(HAVE_ATTRIBUTE_NORETURN, 1, +- [Define to 1 if compiler supports __attribute__((noreturn))]), +- AC_MSG_RESULT(no) ++AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM([[]], [[void __attribute__((noreturn)) panic(void);]])], ++ [AC_MSG_RESULT(yes) ++ AC_DEFINE(HAVE_ATTRIBUTE_NORETURN, 1, Define to 1 if compiler supports __attribute__((noreturn)))], ++ [AC_MSG_RESULT(no)] + ) + dnl Checks for libraries. + +-- +1.6.5.3 + diff --git a/buildroot/package/at/0002-Makefile.in-replace-IROOT-by-DESTDIR.patch b/buildroot/package/at/0002-Makefile.in-replace-IROOT-by-DESTDIR.patch new file mode 100644 index 0000000..856b6c8 --- /dev/null +++ b/buildroot/package/at/0002-Makefile.in-replace-IROOT-by-DESTDIR.patch @@ -0,0 +1,108 @@ +From 195d30e2e01fe2f91ed3bdaeec3982aa66b309dd Mon Sep 17 00:00:00 2001 +From: Marc Kleine-Budde +Date: Tue, 1 Dec 2009 20:57:45 +0100 +Subject: [PATCH 5/5] Makefile.in: replace IROOT by DESTDIR + +This patch replaces IROOT by DESTDIR, which is the autotools standard +variable. For backwards compatibilty IROOT overwrites the DESTDIR. + +[Vincent: tweak the patch for the new version] + +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Vicente Olivert Riera +--- + Makefile.in | 68 ++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 36 insertions(+), 32 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 06544f9..1f699d9 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -17,6 +17,10 @@ atdocdir = $(docdir)/at + etcdir = @ETCDIR@ + systemdsystemunitdir = @systemdsystemunitdir@ + ++ifdef IROOT ++DESTDIR = $(DESTDIR) ++endif ++ + DAEMON_USERNAME = @DAEMON_USERNAME@ + DAEMON_GROUPNAME= @DAEMON_GROUPNAME@ + LOADAVG_MX = @LOADAVG_MX@ +@@ -91,41 +95,41 @@ atrun: atrun.in + $(CC) -c $(CFLAGS) $(DEFS) $*.c + + install: all +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(etcdir) +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(bindir) +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(sbindir) +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(docdir) +- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdocdir) +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) +- chmod 1770 $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) +- touch $(IROOT)$(LFILE) +- chmod 600 $(IROOT)$(LFILE) +- chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(LFILE) +- test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(IROOT)$(etcdir)/ +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(IROOT)$(bindir) +- $(LN_S) -f at $(IROOT)$(bindir)/atq +- $(LN_S) -f at $(IROOT)$(bindir)/atrm +- $(INSTALL) -g root -o root -m 755 batch $(IROOT)$(bindir) +- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man1dir) +- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man5dir) +- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man8dir) +- $(INSTALL) -g root -o root -m 755 atd $(IROOT)$(sbindir) +- $(INSTALL) -g root -o root -m 755 atrun $(IROOT)$(sbindir) +- $(INSTALL) -g root -o root -m 644 at.1 $(IROOT)$(man1dir)/ +- cd $(IROOT)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1 +- $(INSTALL) -g root -o root -m 644 atd.8 $(IROOT)$(man8dir)/ ++ $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir) ++ $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir) ++ $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir) ++ $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir) ++ $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir) ++ $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) ++ chmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) ++ touch $(DESTDIR)$(LFILE) ++ chmod 600 $(DESTDIR)$(LFILE) ++ chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(LFILE) ++ test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(DESTDIR)$(etcdir)/ ++ $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir) ++ $(LN_S) -f at $(DESTDIR)$(bindir)/atq ++ $(LN_S) -f at $(DESTDIR)$(bindir)/atrm ++ $(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir) ++ $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir) ++ $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir) ++ $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir) ++ $(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir) ++ $(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir) ++ $(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/ ++ cd $(DESTDIR)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1 ++ $(INSTALL) -g root -o root -m 644 atd.8 $(DESTDIR)$(man8dir)/ + sed "s,\$${exec_prefix},$(exec_prefix),g" tmpman +- $(INSTALL) -g root -o root -m 644 tmpman $(IROOT)$(man8dir)/atrun.8 ++ $(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 + rm -f tmpman +- $(INSTALL) -g root -o root -m 644 at.allow.5 $(IROOT)$(man5dir)/ +- cd $(IROOT)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5 +- $(INSTALL) -g root -o root -m 644 $(DOCS) $(IROOT)$(atdocdir) +- rm -f $(IROOT)$(mandir)/cat1/at.1* $(IROOT)$(mandir)/cat1/batch.1* \ +- $(IROOT)$(mandir)/cat1/atq.1* +- rm -f $(IROOT)$(mandir)/cat1/atd.8* ++ $(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ ++ cd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5 ++ $(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir) ++ rm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \ ++ $(DESTDIR)$(mandir)/cat1/atq.1* ++ rm -f $(DESTDIR)$(mandir)/cat1/atd.8* + if test x"$(systemdsystemunitdir)" != xno; then \ +- $(INSTALL) -o root -g root -m 755 -d $(IROOT)$(systemdsystemunitdir); \ +- $(INSTALL) -o root -g root -m 644 atd.service $(IROOT)$(systemdsystemunitdir); \ ++ $(INSTALL) -o root -g root -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \ ++ $(INSTALL) -o root -g root -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \ + fi + + dist: checkin $(DIST) $(LIST) Filelist.asc +-- +2.4.10 + diff --git a/buildroot/package/at/0003-Makefile.in-make-install-fix.patch b/buildroot/package/at/0003-Makefile.in-make-install-fix.patch new file mode 100644 index 0000000..831ea1a --- /dev/null +++ b/buildroot/package/at/0003-Makefile.in-make-install-fix.patch @@ -0,0 +1,83 @@ +[PATCH]: Makefile.in: fix make install for non-root, don't strip + +Buildroot will ensure all files are owned by root and stripped anyway +(if needed) before the rootfs is created. + +[Vincent: tweak the patch for the new version] + +Signed-off-by: Peter Korsgaard +Signed-off-by: Vicente Olivert Riera +--- + Makefile.in | 43 +++++++++++++++++++++---------------------- + 1 file changed, 21 insertions(+), 22 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 1f699d9..f313f9b 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -95,41 +95,40 @@ atrun: atrun.in + $(CC) -c $(CFLAGS) $(DEFS) $*.c + + install: all +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir) +- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir) +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(bindir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(docdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(atdocdir) ++ $(INSTALL) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) + chmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR) + touch $(DESTDIR)$(LFILE) + chmod 600 $(DESTDIR)$(LFILE) +- chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(LFILE) +- test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(DESTDIR)$(etcdir)/ +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir) ++ test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -m 640 at.deny $(DESTDIR)$(etcdir)/ ++ $(INSTALL) -m 6755 at $(DESTDIR)$(bindir) + $(LN_S) -f at $(DESTDIR)$(bindir)/atq + $(LN_S) -f at $(DESTDIR)$(bindir)/atrm +- $(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir) +- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir) +- $(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir) +- $(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/ ++ $(INSTALL) -m 755 batch $(DESTDIR)$(bindir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir) ++ $(INSTALL) -d -m 755 $(DESTDIR)$(man8dir) ++ $(INSTALL) -m 755 atd $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 755 atrun $(DESTDIR)$(sbindir) ++ $(INSTALL) -m 644 at.1 $(DESTDIR)$(man1dir)/ + cd $(DESTDIR)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1 +- $(INSTALL) -g root -o root -m 644 atd.8 $(DESTDIR)$(man8dir)/ ++ $(INSTALL) -m 644 atd.8 $(DESTDIR)$(man8dir)/ + sed "s,\$${exec_prefix},$(exec_prefix),g" tmpman +- $(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 ++ $(INSTALL) -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8 + rm -f tmpman +- $(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ ++ $(INSTALL) -m 644 at.allow.5 $(DESTDIR)$(man5dir)/ + cd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5 +- $(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir) ++ $(INSTALL) -m 644 $(DOCS) $(DESTDIR)$(atdocdir) + rm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \ + $(DESTDIR)$(mandir)/cat1/atq.1* + rm -f $(DESTDIR)$(mandir)/cat1/atd.8* + if test x"$(systemdsystemunitdir)" != xno; then \ +- $(INSTALL) -o root -g root -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \ +- $(INSTALL) -o root -g root -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \ ++ $(INSTALL) -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \ ++ $(INSTALL) -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \ + fi + + dist: checkin $(DIST) $(LIST) Filelist.asc +-- +2.4.10 + diff --git a/buildroot/package/at/0004-getloadavg.c-fix.patch b/buildroot/package/at/0004-getloadavg.c-fix.patch new file mode 100644 index 0000000..e073927 --- /dev/null +++ b/buildroot/package/at/0004-getloadavg.c-fix.patch @@ -0,0 +1,30 @@ +[PATCH]: fix getloadavg.c compilation, revert to 3.1.10 version + +getloadavg.c shipped with 3.1.13 doesn't compile because it references +headers not shipped. Fix it by simply reverting to the 3.1.10 version. + +Signed-off-by: Peter Korsgaard +--- + getloadavg.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +Index: at-3.1.13/getloadavg.c +=================================================================== +--- at-3.1.13.orig/getloadavg.c ++++ at-3.1.13/getloadavg.c +@@ -66,11 +66,12 @@ Boston, MA 02110-1301 USA */ + + /* This should always be first. */ + #ifdef HAVE_CONFIG_H +-#include ++#include "config.h" + #endif + +-#include "lisp.h" +-#include "sysfile.h" /* for encapsulated open, close, read, write */ ++#include ++#include ++#include + + #ifndef HAVE_GETLOADAVG + diff --git a/buildroot/package/at/0005-parsetime.l-include-config-h.patch b/buildroot/package/at/0005-parsetime.l-include-config-h.patch new file mode 100644 index 0000000..f4111eb --- /dev/null +++ b/buildroot/package/at/0005-parsetime.l-include-config-h.patch @@ -0,0 +1,16 @@ +Make sure to include config.h so that NEEDS_* macros are properly +taken into account. This was a problem for NEEDS_YYWRAP, which was set +to 1 in config.h, but the corresponding code wasn't compiled in. + +Index: at-3.1.13/parsetime.l +=================================================================== +--- at-3.1.13.orig/parsetime.l ++++ at-3.1.13/parsetime.l +@@ -4,6 +4,7 @@ + #include + #include "y.tab.h" + #include "parsetime.h" ++#include "config.h" + + char *last_token = NULL; + char **my_argv; diff --git a/buildroot/package/at/0006-remove-glibc-__isleap-assumption.patch b/buildroot/package/at/0006-remove-glibc-__isleap-assumption.patch new file mode 100644 index 0000000..2152249 --- /dev/null +++ b/buildroot/package/at/0006-remove-glibc-__isleap-assumption.patch @@ -0,0 +1,59 @@ +From 7f811d9c4ebc9444e613e251c31d6bf537a24dc1 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 13 Apr 2015 16:35:30 -0700 +Subject: [PATCH] remove glibc assumption + +glibc time.h header has an undocumented __isleap macro +that we are using anf musl is missing it. +Since it is undocumented & does not appear +on any other libc, stop using it and just define the macro in +locally instead. + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +[patch from: http://patchwork.openembedded.org/patch/91893/ ] +Signed-off-by: "Yann E. MORIN" + +--- + parsetime.y | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/parsetime.y b/parsetime.y +index 7005e88..324e6d3 100644 +--- a/parsetime.y ++++ b/parsetime.y +@@ -8,6 +8,9 @@ + + #define YYDEBUG 1 + ++#define is_leap_year(y) \ ++ ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0)) ++ + struct tm exectm; + static int isgmt; + static int yearspec; +@@ -217,8 +220,8 @@ date : month_name day_number + mnum == 12) && dnum > 31) + || ((mnum == 4 || mnum == 6 || mnum == 9 || + mnum == 11) && dnum > 30) +- || (mnum == 2 && dnum > 29 && __isleap(ynum+1900)) +- || (mnum == 2 && dnum > 28 && !__isleap(ynum+1900)) ++ || (mnum == 2 && dnum > 29 && is_leap_year(ynum+1900)) ++ || (mnum == 2 && dnum > 28 && !is_leap_year(ynum+1900)) + ) + { + yyerror("Error in day of month"); +@@ -261,8 +264,8 @@ date : month_name day_number + mnum == 12) && dnum > 31) + || ((mnum == 4 || mnum == 6 || mnum == 9 || + mnum == 11) && dnum > 30) +- || (mnum == 2 && dnum > 29 && __isleap(ynum+1900)) +- || (mnum == 2 && dnum > 28 && !__isleap(ynum+1900)) ++ || (mnum == 2 && dnum > 29 && is_leap_year(ynum+1900)) ++ || (mnum == 2 && dnum > 28 && !is_leap_year(ynum+1900)) + ) + { + yyerror("Error in day of month"); +-- +2.1.4 diff --git a/buildroot/package/at/Config.in b/buildroot/package/at/Config.in new file mode 100644 index 0000000..17fabf7 --- /dev/null +++ b/buildroot/package/at/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_AT + bool "at" + depends on BR2_USE_MMU + help + At and batch read shell commands from standard input and + store them as jobs to be scheduled for execution in the + future. + + at - run the job at a specified time + batch - run the job when system load levels permit diff --git a/buildroot/package/at/S99at b/buildroot/package/at/S99at new file mode 100755 index 0000000..666d39b --- /dev/null +++ b/buildroot/package/at/S99at @@ -0,0 +1,38 @@ +#!/bin/sh +# +# Starts at daemon +# + +umask 077 + +start() { + printf "Starting atd: " + start-stop-daemon --start --quiet --make-pidfile --pidfile /var/run/atd.pid --background --exec /usr/sbin/atd -- -f + echo "OK" +} +stop() { + printf "Stopping atd: " + start-stop-daemon --stop --quiet --pidfile /var/run/atd.pid + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/at/at.hash b/buildroot/package/at/at.hash new file mode 100644 index 0000000..22c732c --- /dev/null +++ b/buildroot/package/at/at.hash @@ -0,0 +1,2 @@ +# From: http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/a/at/at_3.1.16-1.dsc +sha256 cb9af59c6a54edce9536ba629841055409d1f89d8ae26494727a97141fb4d5c1 at_3.1.16.orig.tar.gz diff --git a/buildroot/package/at/at.mk b/buildroot/package/at/at.mk new file mode 100644 index 0000000..058ebac --- /dev/null +++ b/buildroot/package/at/at.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# at +# +################################################################################ + +AT_VERSION = 3.1.16 +AT_SOURCE = at_$(AT_VERSION).orig.tar.gz +AT_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/a/at +# missing deps for parsetime.l +AT_MAKE = $(MAKE1) +AT_AUTORECONF = YES +AT_DEPENDENCIES = $(if $(BR2_PACKAGE_FLEX),flex) host-bison host-flex +AT_LICENSE = GPL-2.0+, GPL-3.0+, ISC +AT_LICENSE_FILES = Copyright COPYING + +AT_CONF_OPTS = \ + --with-jobdir=/var/spool/cron/atjobs \ + --with-atspool=/var/spool/cron/atspool \ + --with-daemon_username=root \ + --with-daemon_groupname=root \ + SENDMAIL=/usr/sbin/sendmail + +define AT_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/at/S99at $(TARGET_DIR)/etc/init.d/S99at +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/atest/Config.in b/buildroot/package/atest/Config.in new file mode 100644 index 0000000..9a2e342 --- /dev/null +++ b/buildroot/package/atest/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_ATEST + bool "atest" + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + depends on !BR2_bfin # libev + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_LIBEV + help + atest is a test software for checking ALSA Asoc drivers + concerning the proper frame generation and capture. + + https://github.com/amouiche/atest + +comment "atest needs a toolchain w/ threads" + depends on !BR2_bfin + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/atest/atest.hash b/buildroot/package/atest/atest.hash new file mode 100644 index 0000000..78e3ff8 --- /dev/null +++ b/buildroot/package/atest/atest.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 91da5a6d4d0b0a8d4bae156a40e91a6dccf62863bfa7acae948efbbd2b4154ca atest-895b0183a89c15f5e2305a6795bb1667753cd3f0.tar.gz diff --git a/buildroot/package/atest/atest.mk b/buildroot/package/atest/atest.mk new file mode 100644 index 0000000..2effda5 --- /dev/null +++ b/buildroot/package/atest/atest.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# atest +# +################################################################################ + +ATEST_VERSION = 895b0183a89c15f5e2305a6795bb1667753cd3f0 +ATEST_SITE = $(call github,amouiche,atest,$(ATEST_VERSION)) +ATEST_LICENSE = GPL-2.0+ +ATEST_LICENSE_FILES = COPYING +ATEST_DEPENDENCIES = host-pkgconf libev alsa-lib +# Fetched from Github, with no configure script +ATEST_AUTORECONF = YES + +# Autoreconf requires an existing m4 directory +define ATEST_PATCH_M4 + mkdir -p $(@D)/m4 +endef +ATEST_POST_PATCH_HOOKS += ATEST_PATCH_M4 + +$(eval $(autotools-package)) diff --git a/buildroot/package/atf/Config.in b/buildroot/package/atf/Config.in new file mode 100644 index 0000000..43a5d4f --- /dev/null +++ b/buildroot/package/atf/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ATF + bool "atf" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + help + ATF, or Automated Testing Framework, is a collection of + libraries to write test programs in C, C++ and POSIX shell. + + https://github.com/jmmv/atf + +comment "atf needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU diff --git a/buildroot/package/atf/atf.hash b/buildroot/package/atf/atf.hash new file mode 100644 index 0000000..78cd3c6 --- /dev/null +++ b/buildroot/package/atf/atf.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 92bc64180135eea8fe84c91c9f894e678767764f6dbc8482021d4dde09857505 atf-0.21.tar.gz diff --git a/buildroot/package/atf/atf.mk b/buildroot/package/atf/atf.mk new file mode 100644 index 0000000..9630cf1 --- /dev/null +++ b/buildroot/package/atf/atf.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# atf +# +################################################################################ + +ATF_VERSION = 0.21 +ATF_SITE = https://github.com/jmmv/atf/releases/download/atf-$(ATF_VERSION) +ATF_INSTALL_STAGING = YES +ATF_LICENSE = BSD-2-Clause, BSD-3-Clause +ATF_LICENSE_FILES = COPYING +# Ships a beta libtool version hence our patch doesn't apply. +ATF_AUTORECONF = YES +# Do not install precompiled tests. +ATF_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec + +# ATF_SHELL defaults to the host's bash +ATF_CONF_ENV = \ + kyua_cv_getopt_plus=yes \ + kyua_cv_attribute_noreturn=yes \ + kyua_cv_getcwd_works=yes \ + ATF_SHELL=/bin/sh + +$(eval $(autotools-package)) diff --git a/buildroot/package/atftp/0001-Makefile.am-link-against-libpthread-for-atftp.patch b/buildroot/package/atftp/0001-Makefile.am-link-against-libpthread-for-atftp.patch new file mode 100644 index 0000000..e879df5 --- /dev/null +++ b/buildroot/package/atftp/0001-Makefile.am-link-against-libpthread-for-atftp.patch @@ -0,0 +1,26 @@ +Makefile.am: link against libpthread for atftp + +atftp client needs to link against libpthread as static builds do not +work otherwise. + +Signed-off-by: Ryan Barnett +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index e59592f..200829a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -28,7 +28,7 @@ noinst_HEADERS = argz.h logger.h options.h stats.h tftp.h tftp_def.h tftp_io.h + tftpd.h tftpd_pcre.h tftpd_mtftp.h + + bin_PROGRAMS = atftp +-atftp_LDADD = $(LIBTERMCAP) $(LIBREADLINE) ++atftp_LDADD = $(LIBTERMCAP) $(LIBREADLINE) $(LIBPTHREAD) + atftp_SOURCES = tftp.c tftp_io.c logger.c options.c tftp_def.c tftp_file.c \ + argz.c tftp_mtftp.c + +-- +1.9.1 + diff --git a/buildroot/package/atftp/0002-argz.h-fix-musl-compile-add-missing-defines.patch b/buildroot/package/atftp/0002-argz.h-fix-musl-compile-add-missing-defines.patch new file mode 100644 index 0000000..0679ef3 --- /dev/null +++ b/buildroot/package/atftp/0002-argz.h-fix-musl-compile-add-missing-defines.patch @@ -0,0 +1,42 @@ +From 543e67919f5cacf309ac88ab091331e41af4224b Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 16 Apr 2015 22:41:57 +0200 +Subject: [PATCH] argz.h: fix musl compile (add missing defines) + +Add __THROW, __BEGIN_DECLS, __END_DECLS and __attribute_pure__ defines. + +Signed-off-by: Peter Seiderer +--- + argz.h | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/argz.h b/argz.h +index 582be55..bdf9f62 100644 +--- a/argz.h ++++ b/argz.h +@@ -48,6 +48,22 @@ + # define __const const + #endif + ++#ifndef __THROW ++# define __THROW ++#endif ++ ++#ifndef __BEGIN_DECLS ++# define __BEGIN_DECLS ++#endif ++ ++#ifndef __END_DECLS ++# define __END_DECLS ++#endif ++ ++#ifndef __attribute_pure__ ++# define __attribute_pure__ ++#endif ++ + #ifndef __error_t_defined + typedef int error_t; + #endif +-- +2.1.4 + diff --git a/buildroot/package/atftp/0003-tftp.h-tftpd.h-fix-musl-compile-missing-include.patch b/buildroot/package/atftp/0003-tftp.h-tftpd.h-fix-musl-compile-missing-include.patch new file mode 100644 index 0000000..485e71a --- /dev/null +++ b/buildroot/package/atftp/0003-tftp.h-tftpd.h-fix-musl-compile-missing-include.patch @@ -0,0 +1,40 @@ +From 77e399899d9d7297d23c321811b628febdf0fd92 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 16 Apr 2015 22:43:49 +0200 +Subject: [PATCH] tftp.h/tftpd.h: fix musl compile (missing include) + +Add sys/types.h include for u_char typedef. + +Signed-off-by: Peter Seiderer +--- + tftp.h | 1 + + tftpd.h | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/tftp.h b/tftp.h +index 12bd6aa..32a3f63 100644 +--- a/tftp.h ++++ b/tftp.h +@@ -19,6 +19,7 @@ + + #include + #include ++#include + #include "tftp_def.h" + #include "config.h" + +diff --git a/tftpd.h b/tftpd.h +index 945065e..60d3a49 100644 +--- a/tftpd.h ++++ b/tftpd.h +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include "tftp_io.h" + + /* +-- +2.1.4 + diff --git a/buildroot/package/atftp/Config.in b/buildroot/package/atftp/Config.in new file mode 100644 index 0000000..7074716 --- /dev/null +++ b/buildroot/package/atftp/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_ATFTP + bool "atftp" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + atftp is a client/server implementation of the TFTP + protocol that implements RFCs 1350, 2090, 2347, 2348, + and 2349. The server is multi-threaded and the client + presents a friendly interface using libreadline + (if enabled). + + http://sourceforge.net/projects/atftp/ + +comment "atftp needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/atftp/atftp.hash b/buildroot/package/atftp/atftp.hash new file mode 100644 index 0000000..b7860c7 --- /dev/null +++ b/buildroot/package/atftp/atftp.hash @@ -0,0 +1,2 @@ +# Locally computed +sha1 fc9e9f821dfd2f257b4a5c32b948ed60b4e31fd1 atftp-0.7.1.tar.gz diff --git a/buildroot/package/atftp/atftp.mk b/buildroot/package/atftp/atftp.mk new file mode 100644 index 0000000..e1c257c --- /dev/null +++ b/buildroot/package/atftp/atftp.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# atftp +# +################################################################################ + +ATFTP_VERSION = 0.7.1 +ATFTP_SITE = http://sourceforge.net/projects/atftp/files +ATFTP_LICENSE = GPL-2.0+ +ATFTP_LICENSE_FILES = LICENSE +ATFTP_CONF_OPTS = --disable-libwrap --disable-mtftp +# For static we need to explicitly link against libpthread +ATFTP_LIBS = -lpthread +# We use CPPFLAGS for -fgnu89-inline even though it's a compiler flag +# because atftp discards configure environment CFLAGS. -fgnu89-inline +# is needed to avoid multiple definition error with gcc 5. See +# https://gcc.gnu.org/gcc-5/porting_to.html. +ATFTP_CONF_ENV = LIBS="$(ATFTP_LIBS)" \ + CPPFLAGS="$(TARGET_CPPFLAGS) -fgnu89-inline" + +ifeq ($(BR2_PACKAGE_READLINE),y) +ATFTP_DEPENDENCIES += readline +ATFTP_CONF_OPTS += --enable-libreadline +# For static, readline links with ncurses +ATFTP_LIBS += -lncurses +else +ATFTP_CONF_OPTS += --disable-libreadline +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +ATFTP_DEPENDENCIES += pcre +ATFTP_CONF_OPTS += --enable-libpcre +else +ATFTP_CONF_OPTS += --disable-libpcre +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/atk/Config.in b/buildroot/package/atk/Config.in new file mode 100644 index 0000000..c980614 --- /dev/null +++ b/buildroot/package/atk/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ATK + bool "atk" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + The ATK accessibility toolkit, needed to build GTK+-2.x. + +comment "atk needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/atk/atk.hash b/buildroot/package/atk/atk.hash new file mode 100644 index 0000000..12c9870 --- /dev/null +++ b/buildroot/package/atk/atk.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/atk/2.22/atk-2.22.0.sha256sum +sha256 d349f5ca4974c9c76a4963e5b254720523b0c78672cbc0e1a3475dbd9b3d44b6 atk-2.22.0.tar.xz diff --git a/buildroot/package/atk/atk.mk b/buildroot/package/atk/atk.mk new file mode 100644 index 0000000..88cf5fb --- /dev/null +++ b/buildroot/package/atk/atk.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# atk +# +################################################################################ + +ATK_VERSION_MAJOR = 2.22 +ATK_VERSION = $(ATK_VERSION_MAJOR).0 +ATK_SOURCE = atk-$(ATK_VERSION).tar.xz +ATK_SITE = http://ftp.gnome.org/pub/gnome/sources/atk/$(ATK_VERSION_MAJOR) +ATK_LICENSE = LGPL-2.0+ +ATK_LICENSE_FILES = COPYING +ATK_INSTALL_STAGING = YES +ATK_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install +ATK_CONF_OPTS = --disable-glibtest --enable-explicit-deps=no +ATK_DEPENDENCIES = libglib2 host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/atkmm/Config.in b/buildroot/package/atkmm/Config.in new file mode 100644 index 0000000..ce1e24d --- /dev/null +++ b/buildroot/package/atkmm/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_ATKMM + bool "atkmm" + depends on BR2_INSTALL_LIBSTDCPP # glibmm + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # atk/glibmm -> libglib2 + depends on BR2_USE_MMU # atk/glibmm -> libglib2 + depends on BR2_USE_WCHAR # atk/glibmm -> libglib2 + select BR2_PACKAGE_ATK + select BR2_PACKAGE_GLIBMM + select BR2_PACKAGE_LIBSIGC + + help + The atkmm package is a set of C++ bindings for Atk. + + http://www.gtkmm.org/ + +comment "atkmm needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/atkmm/atkmm.hash b/buildroot/package/atkmm/atkmm.hash new file mode 100644 index 0000000..4b3577c --- /dev/null +++ b/buildroot/package/atkmm/atkmm.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/atkmm/2.24/atkmm-2.24.2.sha256sum +sha256 ff95385759e2af23828d4056356f25376cfabc41e690ac1df055371537e458bd atkmm-2.24.2.tar.xz diff --git a/buildroot/package/atkmm/atkmm.mk b/buildroot/package/atkmm/atkmm.mk new file mode 100644 index 0000000..234a937 --- /dev/null +++ b/buildroot/package/atkmm/atkmm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# atkmm +# +################################################################################ + +ATKMM_VERSION_MAJOR = 2.24 +ATKMM_VERSION = $(ATKMM_VERSION_MAJOR).2 +ATKMM_SOURCE = atkmm-$(ATKMM_VERSION).tar.xz +ATKMM_SITE = http://ftp.gnome.org/pub/gnome/sources/atkmm/$(ATKMM_VERSION_MAJOR) +ATKMM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +ATKMM_LICENSE_FILES = COPYING COPYING.tools +ATKMM_INSTALL_STAGING = YES +ATKMM_DEPENDENCIES = atk glibmm libsigc host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/atop/Config.in b/buildroot/package/atop/Config.in new file mode 100644 index 0000000..d42a201 --- /dev/null +++ b/buildroot/package/atop/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_ATOP + bool "atop" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_ZLIB + help + Atop is an ASCII full-screen performance monitor for Linux + that is capable of reporting the activity of all processes + (even if processes have finished during the interval), daily + logging of system and process activity for long-term analysis, + highlighting overloaded system resources by using colors, etc. + At regular intervals, it shows system-level activity related + to the CPU, memory, swap, disks (including LVM) and network + layers, and for every process (and thread) it shows e.g. the + CPU utilization, memory growth, disk utilization, priority, + username, state, and exit code. + + http://www.atoptool.nl diff --git a/buildroot/package/atop/atop.hash b/buildroot/package/atop/atop.hash new file mode 100644 index 0000000..9ee0d62 --- /dev/null +++ b/buildroot/package/atop/atop.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 73e4725de0bafac8c63b032e8479e2305e3962afbe977ec1abd45f9e104eb264 atop-2.3.0.tar.gz + +# Hash for license file: +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/buildroot/package/atop/atop.mk b/buildroot/package/atop/atop.mk new file mode 100644 index 0000000..2cc0da6 --- /dev/null +++ b/buildroot/package/atop/atop.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# atop +# +################################################################################ + +ATOP_VERSION = 2.3.0 +ATOP_SITE = http://www.atoptool.nl/download +ATOP_LICENSE = GPL-2.0+ +ATOP_LICENSE_FILES = COPYING +ATOP_DEPENDENCIES = ncurses zlib + +define ATOP_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define ATOP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/atop $(TARGET_DIR)/usr/bin/atop +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/attr/0001-support-static-installation.patch b/buildroot/package/attr/0001-support-static-installation.patch new file mode 100644 index 0000000..87858ac --- /dev/null +++ b/buildroot/package/attr/0001-support-static-installation.patch @@ -0,0 +1,29 @@ +Support installation of .a file when doing static linking + +When doing static linking (i.e ENABLE_SHARED != yes), the attr build +logic wasn't installing any library at all, not even the .a file which +is needed for static linking. This patch fixes that. + +Signed-off-by: Thomas Petazzoni + +Index: b/include/buildmacros +=================================================================== +--- a/include/buildmacros ++++ b/include/buildmacros +@@ -97,7 +97,15 @@ + + INSTALL_LTLIB_STATIC = \ + cd $(TOPDIR)/$(LIBNAME)/.libs; \ +- ../$(INSTALL) -m 755 -d $(PKG_DEVLIB_DIR); ++ ../$(INSTALL) -m 755 -d $(PKG_DEVLIB_DIR); \ ++ ../$(INSTALL) -m 644 -T old_lib $(LIBNAME).la $(PKG_DEVLIB_DIR); \ ++ ../$(INSTALL) -m 644 $(LIBNAME).la $(PKG_DEVLIB_DIR)/$(LIBNAME).la ; \ ++ ../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \ ++ ../$(INSTALL) -T so_base $(LIBNAME).la $(PKG_LIB_DIR); \ ++ if test "x$(PKG_DEVLIB_DIR)" != "x$(PKG_LIB_DIR)" ; then \ ++ ../$(INSTALL) -S $(PKG_DEVLIB_DIR)/$(LIBNAME).a $(PKG_LIB_DIR)/$(LIBNAME).a; \ ++ ../$(INSTALL) -S $(PKG_DEVLIB_DIR)/$(LIBNAME).la $(PKG_LIB_DIR)/$(LIBNAME).la; \ ++ fi + + INSTALL_MAN = \ + @for d in $(MAN_PAGES); do \ diff --git a/buildroot/package/attr/0002-avoid-glibc-specific-decls-defines.patch b/buildroot/package/attr/0002-avoid-glibc-specific-decls-defines.patch new file mode 100644 index 0000000..8c71678 --- /dev/null +++ b/buildroot/package/attr/0002-avoid-glibc-specific-decls-defines.patch @@ -0,0 +1,37 @@ +From 667137acaffb8d0cc62b47821a67a52ba0637d5c Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Fri, 10 Jan 2014 13:56:37 +0000 +Subject: avoid glibc-specific DECLS defines + +This matches what we do in all the other headers. + +Signed-off-by: Thomas Petazzoni +--- +diff --git a/include/xattr.h b/include/xattr.h +index 70a84be..070d7c5 100644 +--- a/include/xattr.h ++++ b/include/xattr.h +@@ -30,8 +30,9 @@ + #define XATTR_CREATE 0x1 /* set value, fail if attr already exists */ + #define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */ + +- +-__BEGIN_DECLS ++#ifdef __cplusplus ++extern "C" { ++#endif + + extern int setxattr (const char *__path, const char *__name, + const void *__value, size_t __size, int __flags) __THROW; +@@ -58,6 +59,8 @@ extern int removexattr (const char *__path, const char *__name) __THROW; + extern int lremovexattr (const char *__path, const char *__name) __THROW; + extern int fremovexattr (int __filedes, const char *__name) __THROW; + +-__END_DECLS ++#ifdef __cplusplus ++} ++#endif + + #endif /* __XATTR_H__ */ +-- +cgit v0.9.0.2 diff --git a/buildroot/package/attr/0003-portability-fixes.patch b/buildroot/package/attr/0003-portability-fixes.patch new file mode 100644 index 0000000..c5dc8c8 --- /dev/null +++ b/buildroot/package/attr/0003-portability-fixes.patch @@ -0,0 +1,37 @@ +From 92247401984dd9a80d9d0c8c030692323f980678 Mon Sep 17 00:00:00 2001 +From: Emmanuel Dreyfus +Date: Mon, 30 Jun 2014 13:06:05 +0000 +Subject: Portability fixes + +- is Linux specific +- Define __THROW for non glibc based systems + +Signed-off-by: Thomas Petazzoni +--- +(limited to 'include/xattr.h') + +diff --git a/include/xattr.h b/include/xattr.h +index 070d7c5..fd1f268 100644 +--- a/include/xattr.h ++++ b/include/xattr.h +@@ -20,7 +20,18 @@ + #ifndef __XATTR_H__ + #define __XATTR_H__ + ++#if defined(linux) + #include ++#endif ++ ++/* Portability non glibc c++ build systems */ ++#ifndef __THROW ++# if defined __cplusplus ++# define __THROW throw () ++# else ++# define __THROW ++# endif ++#endif + + #include + #ifndef ENOATTR +-- +cgit v0.9.0.2 diff --git a/buildroot/package/attr/0004-all-use-install-1-to-install-executables.patch b/buildroot/package/attr/0004-all-use-install-1-to-install-executables.patch new file mode 100644 index 0000000..ef59bb7 --- /dev/null +++ b/buildroot/package/attr/0004-all-use-install-1-to-install-executables.patch @@ -0,0 +1,67 @@ +From 4187e60ab52cac3ed36036a354977310dab68dcb Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 8 May 2018 15:16:10 +0200 +Subject: [PATCH] all: use install(1) to install executables + +When the destination file already exists, the current install script +will overwrite it with the new executable. + +However, when the existing executable is a symlink or hardlink to +something else, like busybox, this effectively overwrites that something +with the new executable, and thus replaces busybox and all its applets +with the code for either of the three commands. + +We fix that by simply calling install(1). install(1) is sufficiently +widespread that we don't bother checking for it, as this is just a +workaround while waiting for the version bump that will eventually fix +it for good. + +Signed-off-by: "Yann E. MORIN" +--- + attr/Makefile | 4 ++-- + getfattr/Makefile | 4 ++-- + setfattr/Makefile | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/attr/Makefile b/attr/Makefile +index 1c467e8..326dd7e 100644 +--- a/attr/Makefile ++++ b/attr/Makefile +@@ -29,6 +29,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +diff --git a/getfattr/Makefile b/getfattr/Makefile +index 91d3df2..f913172 100644 +--- a/getfattr/Makefile ++++ b/getfattr/Makefile +@@ -30,6 +30,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +diff --git a/setfattr/Makefile b/setfattr/Makefile +index d55461b..26dc5d8 100644 +--- a/setfattr/Makefile ++++ b/setfattr/Makefile +@@ -30,6 +30,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +-- +2.14.1 + diff --git a/buildroot/package/attr/Config.in b/buildroot/package/attr/Config.in new file mode 100644 index 0000000..554772b --- /dev/null +++ b/buildroot/package/attr/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ATTR + bool "attr" + help + Commands for Manipulating Filesystem Extended Attributes. + This package also provides libattr. + + http://savannah.nongnu.org/projects/attr diff --git a/buildroot/package/attr/attr.hash b/buildroot/package/attr/attr.hash new file mode 100644 index 0000000..d2d1c2e --- /dev/null +++ b/buildroot/package/attr/attr.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 25772f653ac5b2e3ceeb89df50e4688891e21f723c460636548971652af0a859 attr-2.4.47.src.tar.gz diff --git a/buildroot/package/attr/attr.mk b/buildroot/package/attr/attr.mk new file mode 100644 index 0000000..8d25060 --- /dev/null +++ b/buildroot/package/attr/attr.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# attr +# +################################################################################ + +ATTR_VERSION = 2.4.47 +ATTR_SOURCE = attr-$(ATTR_VERSION).src.tar.gz +ATTR_SITE = http://download.savannah.gnu.org/releases/attr +ATTR_INSTALL_STAGING = YES +ATTR_CONF_OPTS = --enable-gettext=no +HOST_ATTR_CONF_OPTS = --enable-gettext=no +ATTR_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +ATTR_LICENSE_FILES = doc/COPYING doc/COPYING.LGPL + +# While the configuration system uses autoconf, the Makefiles are +# hand-written and do not use automake. Therefore, we have to hack +# around their deficiencies by passing installation paths. +ATTR_INSTALL_STAGING_OPTS = \ + prefix=$(STAGING_DIR)/usr \ + exec_prefix=$(STAGING_DIR)/usr \ + PKG_DEVLIB_DIR=$(STAGING_DIR)/usr/lib \ + install-dev install-lib + +ATTR_INSTALL_TARGET_OPTS = \ + prefix=$(TARGET_DIR)/usr \ + exec_prefix=$(TARGET_DIR)/usr \ + install install-lib + +HOST_ATTR_INSTALL_OPTS = \ + prefix=$(HOST_DIR) \ + exec_prefix=$(HOST_DIR) \ + install-dev install-lib + +# The libdir variable in libattr.la is empty, so let's fix it. This is +# probably due to attr not using automake, and not doing fully the +# right thing with libtool. +define ATTR_FIX_LIBTOOL_LA_LIBDIR + $(SED) "s,libdir=.*,libdir='$(STAGING_DIR)'," \ + $(STAGING_DIR)/usr/lib/libattr.la +endef + +ATTR_POST_INSTALL_STAGING_HOOKS += ATTR_FIX_LIBTOOL_LA_LIBDIR + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/aubio/Config.in b/buildroot/package/aubio/Config.in new file mode 100644 index 0000000..18e7c4c --- /dev/null +++ b/buildroot/package/aubio/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_AUBIO + bool "aubio" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + aubio is a tool designed for the extraction of annotations + from audio signals. Its features include segmenting a sound + file before each of its attacks, performing pitch detection, + tapping the beat and producing midi streams from live audio. + + Because these tasks are difficult, we thought it was important + to gather them in a dedicated library. To increase the fun, we + have made these algorithms work in a causal way, so as to be + used in real time applications with as low delay as possible. + Functions can be used offline in sound editors and software + samplers, or online in audio effects and virtual instruments. + + https://aubio.org + +comment "aubio needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/aubio/aubio.hash b/buildroot/package/aubio/aubio.hash new file mode 100644 index 0000000..b4233ae --- /dev/null +++ b/buildroot/package/aubio/aubio.hash @@ -0,0 +1,2 @@ +# From https://aubio.org/pub/aubio-0.4.5.tar.bz2.sha256 +sha256 70c2804e6f4fbf0ebc0fb9ac8cc9d465ef4a4d438311c074c9a7364e98827af6 aubio-0.4.5.tar.bz2 diff --git a/buildroot/package/aubio/aubio.mk b/buildroot/package/aubio/aubio.mk new file mode 100644 index 0000000..2a09ebb --- /dev/null +++ b/buildroot/package/aubio/aubio.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# aubio +# +################################################################################ + +AUBIO_VERSION = 0.4.5 +AUBIO_SITE = https://aubio.org/pub +AUBIO_SOURCE = aubio-$(AUBIO_VERSION).tar.bz2 +AUBIO_LICENSE = GPL-3.0+ +AUBIO_LICENSE_FILES = COPYING +AUBIO_INSTALL_STAGING = YES + +AUBIO_CONF_OPTS = \ + --disable-docs \ + --disable-atlas + +# Add --notests for each build step to avoid running unit tests on the +# build machine. +AUBIO_WAF_OPTS = --notests + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +AUBIO_DEPENDENCIES += libsndfile +AUBIO_CONF_OPTS += --enable-sndfile +else +AUBIO_CONF_OPTS += --disable-sndfile +endif + +# Could not compile aubio in double precision mode with libsamplerate +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE)$(BR2_PACKAGE_FFTW_PRECISION_SINGLE),yy) +AUBIO_DEPENDENCIES += libsamplerate +AUBIO_CONF_OPTS += --enable-samplerate +else +AUBIO_CONF_OPTS += --disable-samplerate +endif + +ifeq ($(BR2_PACKAGE_JACK2),y) +AUBIO_DEPENDENCIES += jack2 +AUBIO_CONF_OPTS += --enable-jack +else +AUBIO_CONF_OPTS += --disable-jack +endif + +ifeq ($(BR2_PACKAGE_FFTW),y) +AUBIO_DEPENDENCIES += fftw +# fftw3 require double otherwise it will look for fftw3f +ifeq ($(BR2_PACKAGE_FFTW_PRECISION_DOUBLE),y) +AUBIO_CONF_OPTS += --enable-fftw3 --enable-double +else ifeq ($(BR2_PACKAGE_FFTW_PRECISION_SINGLE),y) +AUBIO_CONF_OPTS += --enable-fftw3f --disable-double +endif +else # !BR2_PACKAGE_FFTW +AUBIO_CONF_OPTS += --disable-fftw3 +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_AVRESAMPLE),y) +AUBIO_DEPENDENCIES += ffmpeg +AUBIO_CONF_OPTS += --enable-avcodec +else +AUBIO_CONF_OPTS += --disable-avcodec +endif + +$(eval $(waf-package)) diff --git a/buildroot/package/audiofile/0001-Fix-pkg-config-for-static-linking.patch b/buildroot/package/audiofile/0001-Fix-pkg-config-for-static-linking.patch new file mode 100644 index 0000000..54757ab --- /dev/null +++ b/buildroot/package/audiofile/0001-Fix-pkg-config-for-static-linking.patch @@ -0,0 +1,56 @@ +From 2abf7d2e5c533bf4d7407c2c8057a329cd49a3cd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Tue, 24 Nov 2015 21:57:27 +0100 +Subject: [PATCH 1/1] Fix pkg-config for static linking +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Static linking userspace programs such as MPD against libaudiofile fails if +FLAC is available, because libaudiofile is linked against FLAC, but this isn't +expressed in the pkg-config file: + +[..] +arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libaudiofile.a(FLAC.o): In function `FLACDecoder::reset2()': +FLAC.cpp:(.text+0x58): undefined reference to `FLAC__stream_decoder_seek_absolute' +/home/buildroot/build/instance-1/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libaudiofile.a(FLAC.o): In function `FLACEncoder::sync2()': +FLAC.cpp:(.text+0x88): undefined reference to `FLAC__stream_encoder_finish' +/home/buildroot/build/instance-1/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libaudiofile.a(FLAC.o): In function `FLACDecoder::~FLACDecoder()': +FLAC.cpp:(.text+0xc4): undefined reference to `FLAC__stream_decoder_delete' +/home/buildroot/build/instance-1/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libaudiofile.a(FLAC.o): In function `FLACEncoder::~FLACEncoder()': +FLAC.cpp:(.text+0x164): undefined reference to `FLAC__stream_encoder_delete' +/home/buildroot/build/instance-1/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libaudiofile.a(FLAC.o): In function `FLACDecoder::runPull()': +[..] + +The Libs.private field is specifically designed for such usage: + +From pkg-config documentation: + + Libs.private: + + This line should list any private libraries in use. Private + libraries are libraries which are not exposed through your + library, but are needed in the case of static linking. + +Therefore, this patch adds a reference to FLAC as well as to lcov in the +Libs.private field of the pkg-config file. + +Signed-off-by: Jörg Krause +--- + audiofile.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/audiofile.pc.in b/audiofile.pc.in +index ad5956a..d6055ef 100644 +--- a/audiofile.pc.in ++++ b/audiofile.pc.in +@@ -8,5 +8,5 @@ Description: audiofile + Requires: + Version: @VERSION@ + Libs: -L${libdir} -laudiofile +-Libs.private: -lm ++Libs.private: @FLAC_LIBS@ @COVERAGE_LIBS@ -lm + Cflags: -I${includedir} +-- +2.6.2 + diff --git a/buildroot/package/audiofile/0002-cast-to-unsigned-gcc6.patch b/buildroot/package/audiofile/0002-cast-to-unsigned-gcc6.patch new file mode 100644 index 0000000..01baeb5 --- /dev/null +++ b/buildroot/package/audiofile/0002-cast-to-unsigned-gcc6.patch @@ -0,0 +1,28 @@ +From 28cfdbbcb96a69087c3d21faf69b5eae7bcf6d69 Mon Sep 17 00:00:00 2001 +From: Hodorgasm +Date: Wed, 11 May 2016 21:42:07 -0400 +Subject: [PATCH] Cast to unsigned while left bit-shifting + +GCC-6 now treats the left bitwise-shift of a negative integer as nonconformant so explicitly cast to an unsigned int while bit-shifting. + +Downloaded from upstream PR: +https://github.com/mpruett/audiofile/pull/28 + +Signed-off-by: Bernd Kuhls +--- + libaudiofile/modules/SimpleModule.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libaudiofile/modules/SimpleModule.h b/libaudiofile/modules/SimpleModule.h +index 03c6c69..4014fb2 100644 +--- a/libaudiofile/modules/SimpleModule.h ++++ b/libaudiofile/modules/SimpleModule.h +@@ -123,7 +123,7 @@ struct signConverter + typedef typename IntTypes::UnsignedType UnsignedType; + + static const int kScaleBits = (Format + 1) * CHAR_BIT - 1; +- static const int kMinSignedValue = -1 << kScaleBits; ++ static const int kMinSignedValue = static_cast(static_cast(-1) << kScaleBits);; + + struct signedToUnsigned : public std::unary_function + { diff --git a/buildroot/package/audiofile/0003-Always-check-the-number-of-coefficients.patch b/buildroot/package/audiofile/0003-Always-check-the-number-of-coefficients.patch new file mode 100644 index 0000000..5c99c3c --- /dev/null +++ b/buildroot/package/audiofile/0003-Always-check-the-number-of-coefficients.patch @@ -0,0 +1,36 @@ +From c48e4c6503f7dabd41f11d4c9c7b7f8960e7f2c0 Mon Sep 17 00:00:00 2001 +From: Antonio Larrosa +Date: Mon, 6 Mar 2017 12:51:22 +0100 +Subject: [PATCH] Always check the number of coefficients + +When building the library with NDEBUG, asserts are eliminated +so it's better to always check that the number of coefficients +is inside the array range. + +This fixes the 00191-audiofile-indexoob issue in #41 + +Signed-off-by: Peter Korsgaard +--- + libaudiofile/WAVE.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/libaudiofile/WAVE.cpp b/libaudiofile/WAVE.cpp +index 0e81cf7..61f9541 100644 +--- a/libaudiofile/WAVE.cpp ++++ b/libaudiofile/WAVE.cpp +@@ -281,6 +281,12 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size) + + /* numCoefficients should be at least 7. */ + assert(numCoefficients >= 7 && numCoefficients <= 255); ++ if (numCoefficients < 7 || numCoefficients > 255) ++ { ++ _af_error(AF_BAD_HEADER, ++ "Bad number of coefficients"); ++ return AF_FAIL; ++ } + + m_msadpcmNumCoefficients = numCoefficients; + +-- +2.11.0 + diff --git a/buildroot/package/audiofile/0004-clamp-index-values-to-fix-index-overflow-in-IMA.cpp.patch b/buildroot/package/audiofile/0004-clamp-index-values-to-fix-index-overflow-in-IMA.cpp.patch new file mode 100644 index 0000000..21f899a --- /dev/null +++ b/buildroot/package/audiofile/0004-clamp-index-values-to-fix-index-overflow-in-IMA.cpp.patch @@ -0,0 +1,39 @@ +From 25eb00ce913452c2e614548d7df93070bf0d066f Mon Sep 17 00:00:00 2001 +From: Antonio Larrosa +Date: Mon, 6 Mar 2017 18:02:31 +0100 +Subject: [PATCH] clamp index values to fix index overflow in IMA.cpp + +This fixes #33 +(also reported at https://bugzilla.opensuse.org/show_bug.cgi?id=1026981 +and https://blogs.gentoo.org/ago/2017/02/20/audiofile-global-buffer-overflow-in-decodesample-ima-cpp/) + +Signed-off-by: Peter Korsgaard +--- + libaudiofile/modules/IMA.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libaudiofile/modules/IMA.cpp b/libaudiofile/modules/IMA.cpp +index 7476d44..df4aad6 100644 +--- a/libaudiofile/modules/IMA.cpp ++++ b/libaudiofile/modules/IMA.cpp +@@ -169,7 +169,7 @@ int IMA::decodeBlockWAVE(const uint8_t *encoded, int16_t *decoded) + if (encoded[1] & 0x80) + m_adpcmState[c].previousValue -= 0x10000; + +- m_adpcmState[c].index = encoded[2]; ++ m_adpcmState[c].index = clamp(encoded[2], 0, 88); + + *decoded++ = m_adpcmState[c].previousValue; + +@@ -210,7 +210,7 @@ int IMA::decodeBlockQT(const uint8_t *encoded, int16_t *decoded) + predictor -= 0x10000; + + state.previousValue = clamp(predictor, MIN_INT16, MAX_INT16); +- state.index = encoded[1] & 0x7f; ++ state.index = clamp(encoded[1] & 0x7f, 0, 88); + encoded += 2; + + for (int n=0; n +Date: Mon, 6 Mar 2017 13:54:52 +0100 +Subject: [PATCH] Check for multiplication overflow in sfconvert + +Checks that a multiplication doesn't overflow when +calculating the buffer size, and if it overflows, +reduce the buffer size instead of failing. + +This fixes the 00192-audiofile-signintoverflow-sfconvert case +in #41 + +Signed-off-by: Peter Korsgaard +--- + sfcommands/sfconvert.c | 34 ++++++++++++++++++++++++++++++++-- + 1 file changed, 32 insertions(+), 2 deletions(-) + +diff --git a/sfcommands/sfconvert.c b/sfcommands/sfconvert.c +index 80a1bc4..970a3e4 100644 +--- a/sfcommands/sfconvert.c ++++ b/sfcommands/sfconvert.c +@@ -45,6 +45,33 @@ void printusage (void); + void usageerror (void); + bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid); + ++int firstBitSet(int x) ++{ ++ int position=0; ++ while (x!=0) ++ { ++ x>>=1; ++ ++position; ++ } ++ return position; ++} ++ ++#ifndef __has_builtin ++#define __has_builtin(x) 0 ++#endif ++ ++int multiplyCheckOverflow(int a, int b, int *result) ++{ ++#if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow)) ++ return __builtin_mul_overflow(a, b, result); ++#else ++ if (firstBitSet(a)+firstBitSet(b)>31) // int is signed, so we can't use 32 bits ++ return true; ++ *result = a * b; ++ return false; ++#endif ++} ++ + int main (int argc, char **argv) + { + if (argc == 2) +@@ -323,8 +350,11 @@ bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid) + { + int frameSize = afGetVirtualFrameSize(infile, trackid, 1); + +- const int kBufferFrameCount = 65536; +- void *buffer = malloc(kBufferFrameCount * frameSize); ++ int kBufferFrameCount = 65536; ++ int bufferSize; ++ while (multiplyCheckOverflow(kBufferFrameCount, frameSize, &bufferSize)) ++ kBufferFrameCount /= 2; ++ void *buffer = malloc(bufferSize); + + AFframecount totalFrames = afGetFrameCount(infile, AF_DEFAULT_TRACK); + AFframecount totalFramesWritten = 0; +-- +2.11.0 + diff --git a/buildroot/package/audiofile/0006-Actually-fail-when-error-occurs-in-parseFormat.patch b/buildroot/package/audiofile/0006-Actually-fail-when-error-occurs-in-parseFormat.patch new file mode 100644 index 0000000..0c6be2a --- /dev/null +++ b/buildroot/package/audiofile/0006-Actually-fail-when-error-occurs-in-parseFormat.patch @@ -0,0 +1,42 @@ +From a2e9eab8ea87c4ffc494d839ebb4ea145eb9f2e6 Mon Sep 17 00:00:00 2001 +From: Antonio Larrosa +Date: Mon, 6 Mar 2017 18:59:26 +0100 +Subject: [PATCH] Actually fail when error occurs in parseFormat + +When there's an unsupported number of bits per sample or an invalid +number of samples per block, don't only print an error message using +the error handler, but actually stop parsing the file. + +This fixes #35 (also reported at +https://bugzilla.opensuse.org/show_bug.cgi?id=1026983 and +https://blogs.gentoo.org/ago/2017/02/20/audiofile-heap-based-buffer-overflow-in-imadecodeblockwave-ima-cpp/ +) + +Signed-off-by: Peter Korsgaard +--- + libaudiofile/WAVE.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libaudiofile/WAVE.cpp b/libaudiofile/WAVE.cpp +index 0e81cf7..d762249 100644 +--- a/libaudiofile/WAVE.cpp ++++ b/libaudiofile/WAVE.cpp +@@ -326,6 +326,7 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size) + { + _af_error(AF_BAD_NOT_IMPLEMENTED, + "IMA ADPCM compression supports only 4 bits per sample"); ++ return AF_FAIL; + } + + int bytesPerBlock = (samplesPerBlock + 14) / 8 * 4 * channelCount; +@@ -333,6 +334,7 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size) + { + _af_error(AF_BAD_CODEC_CONFIG, + "Invalid samples per block for IMA ADPCM compression"); ++ return AF_FAIL; + } + + track->f.sampleWidth = 16; +-- +2.11.0 + diff --git a/buildroot/package/audiofile/0007-Check-for-multiplication-overflow-in-MSADPCM-decodeS.patch b/buildroot/package/audiofile/0007-Check-for-multiplication-overflow-in-MSADPCM-decodeS.patch new file mode 100644 index 0000000..5411f13 --- /dev/null +++ b/buildroot/package/audiofile/0007-Check-for-multiplication-overflow-in-MSADPCM-decodeS.patch @@ -0,0 +1,122 @@ +From beacc44eb8cdf6d58717ec1a5103c5141f1b37f9 Mon Sep 17 00:00:00 2001 +From: Antonio Larrosa +Date: Mon, 6 Mar 2017 13:43:53 +0100 +Subject: [PATCH] Check for multiplication overflow in MSADPCM decodeSample + +Check for multiplication overflow (using __builtin_mul_overflow +if available) in MSADPCM.cpp decodeSample and return an empty +decoded block if an error occurs. + +This fixes the 00193-audiofile-signintoverflow-MSADPCM case of #41 + +Signed-off-by: Peter Korsgaard +--- + libaudiofile/modules/BlockCodec.cpp | 5 ++-- + libaudiofile/modules/MSADPCM.cpp | 47 +++++++++++++++++++++++++++++++++---- + 2 files changed, 46 insertions(+), 6 deletions(-) + +diff --git a/libaudiofile/modules/BlockCodec.cpp b/libaudiofile/modules/BlockCodec.cpp +index 45925e8..4731be1 100644 +--- a/libaudiofile/modules/BlockCodec.cpp ++++ b/libaudiofile/modules/BlockCodec.cpp +@@ -52,8 +52,9 @@ void BlockCodec::runPull() + // Decompress into m_outChunk. + for (int i=0; i(m_inChunk->buffer) + i * m_bytesPerPacket, +- static_cast(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount); ++ if (decodeBlock(static_cast(m_inChunk->buffer) + i * m_bytesPerPacket, ++ static_cast(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount)==0) ++ break; + + framesRead += m_framesPerPacket; + } +diff --git a/libaudiofile/modules/MSADPCM.cpp b/libaudiofile/modules/MSADPCM.cpp +index 8ea3c85..ef9c38c 100644 +--- a/libaudiofile/modules/MSADPCM.cpp ++++ b/libaudiofile/modules/MSADPCM.cpp +@@ -101,24 +101,60 @@ static const int16_t adaptationTable[] = + 768, 614, 512, 409, 307, 230, 230, 230 + }; + ++int firstBitSet(int x) ++{ ++ int position=0; ++ while (x!=0) ++ { ++ x>>=1; ++ ++position; ++ } ++ return position; ++} ++ ++#ifndef __has_builtin ++#define __has_builtin(x) 0 ++#endif ++ ++int multiplyCheckOverflow(int a, int b, int *result) ++{ ++#if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow)) ++ return __builtin_mul_overflow(a, b, result); ++#else ++ if (firstBitSet(a)+firstBitSet(b)>31) // int is signed, so we can't use 32 bits ++ return true; ++ *result = a * b; ++ return false; ++#endif ++} ++ ++ + // Compute a linear PCM value from the given differential coded value. + static int16_t decodeSample(ms_adpcm_state &state, +- uint8_t code, const int16_t *coefficient) ++ uint8_t code, const int16_t *coefficient, bool *ok=NULL) + { + int linearSample = (state.sample1 * coefficient[0] + + state.sample2 * coefficient[1]) >> 8; ++ int delta; + + linearSample += ((code & 0x08) ? (code - 0x10) : code) * state.delta; + + linearSample = clamp(linearSample, MIN_INT16, MAX_INT16); + +- int delta = (state.delta * adaptationTable[code]) >> 8; ++ if (multiplyCheckOverflow(state.delta, adaptationTable[code], &delta)) ++ { ++ if (ok) *ok=false; ++ _af_error(AF_BAD_COMPRESSION, "Error decoding sample"); ++ return 0; ++ } ++ delta >>= 8; + if (delta < 16) + delta = 16; + + state.delta = delta; + state.sample2 = state.sample1; + state.sample1 = linearSample; ++ if (ok) *ok=true; + + return static_cast(linearSample); + } +@@ -212,13 +248,16 @@ int MSADPCM::decodeBlock(const uint8_t *encoded, int16_t *decoded) + { + uint8_t code; + int16_t newSample; ++ bool ok; + + code = *encoded >> 4; +- newSample = decodeSample(*state[0], code, coefficient[0]); ++ newSample = decodeSample(*state[0], code, coefficient[0], &ok); ++ if (!ok) return 0; + *decoded++ = newSample; + + code = *encoded & 0x0f; +- newSample = decodeSample(*state[1], code, coefficient[1]); ++ newSample = decodeSample(*state[1], code, coefficient[1], &ok); ++ if (!ok) return 0; + *decoded++ = newSample; + + encoded++; +-- +2.11.0 + diff --git a/buildroot/package/audiofile/0008-CVE-2015-7747.patch b/buildroot/package/audiofile/0008-CVE-2015-7747.patch new file mode 100644 index 0000000..1325612 --- /dev/null +++ b/buildroot/package/audiofile/0008-CVE-2015-7747.patch @@ -0,0 +1,161 @@ +Description: fix buffer overflow when changing both sample format and + number of channels +Origin: https://github.com/mpruett/audiofile/pull/25 +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/audiofile/+bug/1502721 +Bug-Debian: https://bugs.debian.org/801102 + +Downloaded from +https://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/audiofile/files/audiofile-0.3.6-CVE-2015-7747.patch + +Signed-off-by: Bernd Kuhls + +--- a/libaudiofile/modules/ModuleState.cpp ++++ b/libaudiofile/modules/ModuleState.cpp +@@ -402,7 +402,7 @@ status ModuleState::arrange(AFfilehandle + addModule(new Transform(outfc, in.pcm, out.pcm)); + + if (in.channelCount != out.channelCount) +- addModule(new ApplyChannelMatrix(infc, isReading, ++ addModule(new ApplyChannelMatrix(outfc, isReading, + in.channelCount, out.channelCount, + in.pcm.minClip, in.pcm.maxClip, + track->channelMatrix)); +--- a/test/Makefile.am ++++ b/test/Makefile.am +@@ -26,6 +26,7 @@ TESTS = \ + VirtualFile \ + floatto24 \ + query2 \ ++ sixteen-stereo-to-eight-mono \ + sixteen-to-eight \ + testchannelmatrix \ + testdouble \ +@@ -139,6 +140,7 @@ printmarkers_SOURCES = printmarkers.c + printmarkers_LDADD = $(LIBAUDIOFILE) -lm + + sixteen_to_eight_SOURCES = sixteen-to-eight.c TestUtilities.cpp TestUtilities.h ++sixteen_stereo_to_eight_mono_SOURCES = sixteen-stereo-to-eight-mono.c TestUtilities.cpp TestUtilities.h + + testchannelmatrix_SOURCES = testchannelmatrix.c TestUtilities.cpp TestUtilities.h + +--- /dev/null ++++ b/test/sixteen-stereo-to-eight-mono.c +@@ -0,0 +1,118 @@ ++/* ++ Audio File Library ++ ++ Copyright 2000, Silicon Graphics, Inc. ++ ++ 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. ++*/ ++ ++/* ++ sixteen-stereo-to-eight-mono.c ++ ++ This program tests the conversion from 2-channel 16-bit integers to ++ 1-channel 8-bit integers. ++*/ ++ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++ ++#include "TestUtilities.h" ++ ++int main (int argc, char **argv) ++{ ++ AFfilehandle file; ++ AFfilesetup setup; ++ int16_t frames16[] = {14298, 392, 3923, -683, 958, -1921}; ++ int8_t frames8[] = {28, 6, -2}; ++ int i, frameCount = 3; ++ int8_t byte; ++ AFframecount result; ++ ++ setup = afNewFileSetup(); ++ ++ afInitFileFormat(setup, AF_FILE_WAVE); ++ ++ afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16); ++ afInitChannels(setup, AF_DEFAULT_TRACK, 2); ++ ++ char *testFileName; ++ if (!createTemporaryFile("sixteen-to-eight", &testFileName)) ++ { ++ fprintf(stderr, "Could not create temporary file.\n"); ++ exit(EXIT_FAILURE); ++ } ++ ++ file = afOpenFile(testFileName, "w", setup); ++ if (file == AF_NULL_FILEHANDLE) ++ { ++ fprintf(stderr, "could not open file for writing\n"); ++ exit(EXIT_FAILURE); ++ } ++ ++ afFreeFileSetup(setup); ++ ++ afWriteFrames(file, AF_DEFAULT_TRACK, frames16, frameCount); ++ ++ afCloseFile(file); ++ ++ file = afOpenFile(testFileName, "r", AF_NULL_FILESETUP); ++ if (file == AF_NULL_FILEHANDLE) ++ { ++ fprintf(stderr, "could not open file for reading\n"); ++ exit(EXIT_FAILURE); ++ } ++ ++ afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 8); ++ afSetVirtualChannels(file, AF_DEFAULT_TRACK, 1); ++ ++ for (i=0; i +Date: Sat, 27 May 2017 17:53:33 +0200 +Subject: [PATCH 1/1] Fix static linking with libsndfile + +libsndfile and audiofile both contain mixXX functions in their alac +code which lead to symbol name clashes when apps like mpd try to +statically link to both audiofile and libsndfile at the same time. + +This patch renames these functions to avoid the problem which was +detected by the buildroot autobuilders: +http://autobuild.buildroot.net/results/799/7997ccd698f03885f98d00bd150dc3a578e4b161/ + +Patch sent upstream: https://github.com/mpruett/audiofile/pull/45 + +Signed-off-by: Bernd Kuhls +--- + libaudiofile/alac/ALACEncoder.cpp | 28 ++++++++++++++-------------- + libaudiofile/alac/matrix_enc.c | 8 ++++---- + libaudiofile/alac/matrixlib.h | 8 ++++---- + 3 files changed, 22 insertions(+), 22 deletions(-) + +diff --git a/libaudiofile/alac/ALACEncoder.cpp b/libaudiofile/alac/ALACEncoder.cpp +index da922c2..3d088cc 100644 +--- a/libaudiofile/alac/ALACEncoder.cpp ++++ b/libaudiofile/alac/ALACEncoder.cpp +@@ -332,19 +332,19 @@ int32_t ALACEncoder::EncodeStereo( BitBuffer * bitstream, void * inputBuffer, ui + switch ( mBitDepth ) + { + case 16: +- mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes ); ++ audiofile_alac_mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes ); + break; + case 20: +- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes ); ++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes ); + break; + case 24: + // includes extraction of shifted-off bytes +- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, ++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + case 32: + // includes extraction of shifted-off bytes +- mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, ++ audiofile_alac_mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + } +@@ -379,19 +379,19 @@ int32_t ALACEncoder::EncodeStereo( BitBuffer * bitstream, void * inputBuffer, ui + switch ( mBitDepth ) + { + case 16: +- mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); ++ audiofile_alac_mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); + break; + case 20: +- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); ++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); + break; + case 24: + // also extracts the shifted off bytes into the shift buffers +- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, ++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + case 32: + // also extracts the shifted off bytes into the shift buffers +- mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, ++ audiofile_alac_mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + } +@@ -605,19 +605,19 @@ int32_t ALACEncoder::EncodeStereoFast( BitBuffer * bitstream, void * inputBuffer + switch ( mBitDepth ) + { + case 16: +- mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); ++ audiofile_alac_mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); + break; + case 20: +- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); ++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes ); + break; + case 24: + // also extracts the shifted off bytes into the shift buffers +- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, ++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + case 32: + // also extracts the shifted off bytes into the shift buffers +- mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, ++ audiofile_alac_mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, + mixBits, mixRes, mShiftBufferUV, bytesShifted ); + break; + } +@@ -756,7 +756,7 @@ int32_t ALACEncoder::EncodeStereoEscape( BitBuffer * bitstream, void * inputBuff + break; + case 20: + // mix20() with mixres param = 0 means de-interleave so use it to simplify things +- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0 ); ++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0 ); + for ( index = 0; index < numSamples; index++ ) + { + BitBufferWrite( bitstream, mMixBufferU[index], 20 ); +@@ -765,7 +765,7 @@ int32_t ALACEncoder::EncodeStereoEscape( BitBuffer * bitstream, void * inputBuff + break; + case 24: + // mix24() with mixres param = 0 means de-interleave so use it to simplify things +- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0, mShiftBufferUV, 0 ); ++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0, mShiftBufferUV, 0 ); + for ( index = 0; index < numSamples; index++ ) + { + BitBufferWrite( bitstream, mMixBufferU[index], 24 ); +diff --git a/libaudiofile/alac/matrix_enc.c b/libaudiofile/alac/matrix_enc.c +index e194330..8abd556 100644 +--- a/libaudiofile/alac/matrix_enc.c ++++ b/libaudiofile/alac/matrix_enc.c +@@ -57,7 +57,7 @@ + + // 16-bit routines + +-void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ) ++void audiofile_alac_mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ) + { + int16_t * ip = in; + int32_t j; +@@ -95,7 +95,7 @@ void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t num + // 20-bit routines + // - the 20 bits of data are left-justified in 3 bytes of storage but right-aligned for input/output predictor buffers + +-void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ) ++void audiofile_alac_mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ) + { + int32_t l, r; + uint8_t * ip = in; +@@ -140,7 +140,7 @@ void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t num + // 24-bit routines + // - the 24 bits of data are right-justified in the input/output predictor buffers + +-void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, ++void audiofile_alac_mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ) + { + int32_t l, r; +@@ -240,7 +240,7 @@ void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t num + // - otherwise, the calculations might overflow into the 33rd bit and be lost + // - therefore, these routines deal with the specified "unused lower" bytes in the "shift" buffers + +-void mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, ++void audiofile_alac_mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ) + { + int32_t * ip = in; +diff --git a/libaudiofile/alac/matrixlib.h b/libaudiofile/alac/matrixlib.h +index 0a4f371..5728b6d 100644 +--- a/libaudiofile/alac/matrixlib.h ++++ b/libaudiofile/alac/matrixlib.h +@@ -38,17 +38,17 @@ extern "C" { + #endif + + // 16-bit routines +-void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ); ++void audiofile_alac_mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ); + void unmix16( int32_t * u, int32_t * v, int16_t * out, uint32_t stride, int32_t numSamples, int32_t mixbits, int32_t mixres ); + + // 20-bit routines +-void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ); ++void audiofile_alac_mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres ); + void unmix20( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t numSamples, int32_t mixbits, int32_t mixres ); + + // 24-bit routines + // - 24-bit data sometimes compresses better by shifting off the bottom byte so these routines deal with + // the specified "unused lower bytes" in the combined "shift" buffer +-void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, ++void audiofile_alac_mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); + void unmix24( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); +@@ -57,7 +57,7 @@ void unmix24( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t + // - note that these really expect the internal data width to be < 32-bit but the arrays are 32-bit + // - otherwise, the calculations might overflow into the 33rd bit and be lost + // - therefore, these routines deal with the specified "unused lower" bytes in the combined "shift" buffer +-void mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, ++void audiofile_alac_mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); + void unmix32( int32_t * u, int32_t * v, int32_t * out, uint32_t stride, int32_t numSamples, + int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted ); +-- +2.11.0 + diff --git a/buildroot/package/audiofile/Config.in b/buildroot/package/audiofile/Config.in new file mode 100644 index 0000000..4aa8d69 --- /dev/null +++ b/buildroot/package/audiofile/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_AUDIOFILE + bool "audiofile" + depends on BR2_INSTALL_LIBSTDCPP + help + The Audio File Library handles reading and writing audio files + in many common formats. + + http://www.68k.org/~michael/audiofile/ + +comment "audiofile needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/audiofile/audiofile.hash b/buildroot/package/audiofile/audiofile.hash new file mode 100644 index 0000000..3b9cba6 --- /dev/null +++ b/buildroot/package/audiofile/audiofile.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cdc60df19ab08bfe55344395739bb08f50fc15c92da3962fac334d3bff116965 audiofile-0.3.6.tar.gz diff --git a/buildroot/package/audiofile/audiofile.mk b/buildroot/package/audiofile/audiofile.mk new file mode 100644 index 0000000..2f2e890 --- /dev/null +++ b/buildroot/package/audiofile/audiofile.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# audiofile +# +################################################################################ + +AUDIOFILE_VERSION = 0.3.6 +AUDIOFILE_SITE = http://audiofile.68k.org +AUDIOFILE_INSTALL_STAGING = YES +AUDIOFILE_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +AUDIOFILE_CONF_OPTS = --disable-examples +AUDIOFILE_DEPENDENCIES = host-pkgconf +# configure is outdated and has old bugs because of it +AUDIOFILE_AUTORECONF = YES +AUDIOFILE_LICENSE = GPL-2.0+, LGPL-2.1+ +AUDIOFILE_LICENSE_FILES = COPYING COPYING.GPL + +ifeq ($(BR2_PACKAGE_FLAC),y) +AUDIOFILE_DEPENDENCIES += flac +AUDIOFILE_CONF_OPTS += --enable-flac +else +AUDIOFILE_CONF_OPTS += --disable-flac +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/audit/Config.in b/buildroot/package/audit/Config.in new file mode 100644 index 0000000..023ac79 --- /dev/null +++ b/buildroot/package/audit/Config.in @@ -0,0 +1,26 @@ +# audit has some builtin per-architecture system call tables +config BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_arm || BR2_armeb || \ + BR2_i386 || BR2_powerpc || BR2_powerpc64 || \ + BR2_x86_64 + +config BR2_PACKAGE_AUDIT + bool "audit" + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL # strndupa() + help + The audit package contains the user space utilities for + storing and searching the audit records generated by + the audit subsystem in the Linux 2.6 kernel + + Note: The z/OS remote plugin is disabled in this package + + http://people.redhat.com/sgrubb/audit/ + +comment "audit needs a uClibc or glibc toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS diff --git a/buildroot/package/audit/S01auditd b/buildroot/package/audit/S01auditd new file mode 100644 index 0000000..2ecf0f1 --- /dev/null +++ b/buildroot/package/audit/S01auditd @@ -0,0 +1,80 @@ +#!/bin/sh +# +# auditd This starts and stops auditd +# +# description: This starts the Linux Auditing System Daemon, +# which collects security related events in a dedicated +# audit log. If this daemon is turned off, audit events +# will be sent to syslog. +# + +NAME=auditd +DAEMON=/usr/sbin/${NAME} +CONFIG=/etc/audit/auditd.conf +PIDFILE=/var/run/${NAME}.pid + +start(){ + printf "Starting ${NAME}: " + + # Create dir to store log files in if one doesn't exist. Create + # the directory with SELinux permissions if possible + command -v matchpathcon >/dev/null 2>&1 + if [ $? = 0 ]; then + mkdir -p /var/log/audit -Z `matchpathcon -n /var/log/audit` + else + mkdir -p /var/log/audit + fi + + # Run audit daemon executable + start-stop-daemon -S -q -p ${PIDFILE} --exec ${DAEMON} + + if [ $? = 0 ]; then + # Load the default rules + test -f /etc/audit/rules.d/audit.rules && /usr/sbin/auditctl -R /etc/audit/rules.d/audit.rules >/dev/null + echo "OK" + else + echo "FAIL" + fi +} + +stop(){ + printf "Stopping ${NAME}: " + + start-stop-daemon -K -q -p ${PIDFILE} + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +reload(){ + printf "Reloading ${NAME} configuration: " + start-stop-daemon --stop -s 1 -p ${PIDFILE} 1>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +rotate(){ + printf "Rotating ${NAME} logs: " + start-stop-daemon --stop -s 10 -p ${PIDFILE} 1>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + reload) + reload + ;; + rotate) + rotate + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|rotate}" + exit 1 + ;; +esac diff --git a/buildroot/package/audit/audit.hash b/buildroot/package/audit/audit.hash new file mode 100644 index 0000000..fb37577 --- /dev/null +++ b/buildroot/package/audit/audit.hash @@ -0,0 +1,4 @@ +#Locally computed +sha256 67b59b2b77afee9ed87afa4d80ffc8e6f3a1f4bbedd5f2871f387c952147bcba audit-2.8.2.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa COPYING.LIB diff --git a/buildroot/package/audit/audit.mk b/buildroot/package/audit/audit.mk new file mode 100644 index 0000000..2f6e665 --- /dev/null +++ b/buildroot/package/audit/audit.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# audit +# +################################################################################ + +AUDIT_VERSION = 2.8.2 +AUDIT_SITE = http://people.redhat.com/sgrubb/audit +AUDIT_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +AUDIT_LICENSE_FILES = COPYING COPYING.LIB + +AUDIT_INSTALL_STAGING = YES + +AUDIT_CONF_OPTS = --without-python --without-python3 --disable-zos-remote + +ifeq ($(BR2_PACKAGE_LIBCAP_NG),y) +AUDIT_DEPENDENCIES += libcap-ng +AUDIT_CONF_OPTS += --with-libcap-ng=yes +else +AUDIT_CONF_OPTS += --with-libcap-ng=no +endif + +# For i386, x86-64 and PowerPC, the system call tables are +# unconditionally included. However, for ARM(eb) and AArch64, then +# need to be explicitly enabled. + +ifeq ($(BR2_arm)$(BR2_armeb),y) +AUDIT_CONF_OPTS += --with-arm +endif +ifeq ($(BR2_aarch64),y) +AUDIT_CONF_OPTS += --with-aarch64 +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +AUDIT_CONF_OPTS += --enable-systemd +else +AUDIT_CONF_OPTS += --disable-systemd +endif + +define AUDIT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/audit/S01auditd $(TARGET_DIR)/etc/init.d/S01auditd +endef + +define AUDIT_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/auditd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/auditd.service + + $(INSTALL) -D -m 644 package/audit/audit_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/audit.conf +endef + +define AUDIT_INSTALL_CLEANUP + $(RM) $(TARGET_DIR)/etc/rc.d/init.d/auditd + $(RM) $(TARGET_DIR)/etc/sysconfig/auditd +endef +AUDIT_POST_INSTALL_TARGET_HOOKS += AUDIT_INSTALL_CLEANUP + +HOST_AUDIT_CONF_OPTS = \ + --without-python \ + --without-python3 \ + --disable-zos-remote \ + --without-libcap-ng + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/audit/audit_tmpfiles.conf b/buildroot/package/audit/audit_tmpfiles.conf new file mode 100644 index 0000000..6b8325b --- /dev/null +++ b/buildroot/package/audit/audit_tmpfiles.conf @@ -0,0 +1 @@ +d /var/log/audit 0755 - - diff --git a/buildroot/package/aufs-util/0001-remove-user-settings.patch b/buildroot/package/aufs-util/0001-remove-user-settings.patch new file mode 100644 index 0000000..7eebc95 --- /dev/null +++ b/buildroot/package/aufs-util/0001-remove-user-settings.patch @@ -0,0 +1,16 @@ +install: drop setting ownership + +Signed-off-by: "Yann E. MORIN" + +diff --git a/Makefile b/Makefile +--- a/Makefile ++++ b/Makefile +@@ -21,7 +21,7 @@ + override CPPFLAGS += -DAUFHSM_CMD=\"/usr/bin/aufhsm\" + override CFLAGS += -O -Wall + INSTALL ?= install +-Install = ${INSTALL} -o root -g root -p ++Install = ${INSTALL} -p + ManDir = /usr/share/man + + # diff --git a/buildroot/package/aufs-util/0002-no-check-ver.patch b/buildroot/package/aufs-util/0002-no-check-ver.patch new file mode 100644 index 0000000..5fe6920 --- /dev/null +++ b/buildroot/package/aufs-util/0002-no-check-ver.patch @@ -0,0 +1,24 @@ +Makefile: do not check version + +The aufs-util package tries to ensure that its version is compatible +with the one in the running kernel. However, this test is flawed: the +version string in the aufs4x branch for aufs-util is aufs3.x, so it does +not match the version in the kernel when it is aufs4.x. + +Disengage this check, ion the assumption the user knows what he is +doing. + +Signed-off-by: "Yann E. MORIN" + +diff --git a/Makefile b/Makefile +--- a/Makefile ++++ b/Makefile +@@ -62,7 +62,7 @@ + $(foreach v, CPPFLAGS CFLAGS INSTALL Install ManDir LibUtilHdr, \ + $(eval MAKE += ${v}="$${${v}}")) + +-all: ver_test ${Man} ${Bin} ${Etc} ++all: ${Man} ${Bin} ${Etc} + ${MAKE} -C libau $@ + ln -sf ./libau/libau*.so . + $(call MakeFHSM, $@) diff --git a/buildroot/package/aufs-util/0003-no-strip-lib.patch b/buildroot/package/aufs-util/0003-no-strip-lib.patch new file mode 100644 index 0000000..1583050 --- /dev/null +++ b/buildroot/package/aufs-util/0003-no-strip-lib.patch @@ -0,0 +1,18 @@ +install: do not strip libs when installing + +We want unstripped binaries in staging; stripping is done by Buildroot +as a whole in target-finalize if needed, anyway. + +Signed-off-by: "Yann E. MORIN" + +diff --git a/libau/Makefile b/libau/Makefile +--- a/libau/Makefile ++++ b/libau/Makefile +@@ -37,7 +37,6 @@ + ln -sf $< $@ + ${LibSo}.${LibSoMajor}: ${LibSo}.${LibSoMajor}.${LibSoMinor} + ln -sf $< $@ +-${LibSo}.${LibSoMajor}.${LibSoMinor}: override LDFLAGS += -s + ${LibSo}.${LibSoMajor}.${LibSoMinor}: override LDLIBS += -ldl -lpthread + ${LibSo}.${LibSoMajor}.${LibSoMinor}: ${LibSoObj} + ${CC} --shared -Wl,-soname,${LibSo}.${LibSoMajor} ${LDFLAGS} \ diff --git a/buildroot/package/aufs-util/Config.in b/buildroot/package/aufs-util/Config.in new file mode 100644 index 0000000..a426343 --- /dev/null +++ b/buildroot/package/aufs-util/Config.in @@ -0,0 +1,36 @@ +comment "aufs-util needs a linux kernel and a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_LINUX_KERNEL || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_AUFS_UTIL + bool "aufs-util" + depends on BR2_USE_MMU + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Aufs command line utilities. + + Needs a kernel with aufs support. A kernel + extension package is available. + + http://sourceforge.net/p/aufs/aufs-util/ + +if BR2_PACKAGE_AUFS_UTIL + +config BR2_PACKAGE_AUFS_UTIL_VERSION + string "aufs-util version" + default "" + help + The version you choose must match that of the aufs support + in your kernel. Usually, this is aufs3.x for 3.x kernels and + aufs4.x for 4.x kernels. + + Usually, the sha1 of the cset you want to use; avoid using a + branch name as this yields non-reproducible builds. + + See the following resources to see what versions are + available: + + https://sourceforge.net/p/aufs/aufs-util/ci/master/tree/ + +endif diff --git a/buildroot/package/aufs-util/aufs-util.mk b/buildroot/package/aufs-util/aufs-util.mk new file mode 100644 index 0000000..d954f02 --- /dev/null +++ b/buildroot/package/aufs-util/aufs-util.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# aufs-util +# +################################################################################ + +# linux-headers +AUFS_UTIL_VERSION = $(call qstrip,$(BR2_PACKAGE_AUFS_UTIL_VERSION)) +AUFS_UTIL_SITE = http://git.code.sf.net/p/aufs/aufs-util +AUFS_UTIL_SITE_METHOD = git +AUFS_UTIL_LICENSE = GPL-2.0 +AUFS_UTIL_LICENSE_FILES = COPYING + +AUFS_UTIL_DEPENDENCIES = linux + +# Building aufs-util requires access to the kernel headers of aufs, +# which are only available in the kernel build directory, which is why +# we add -I$(LINUX_DIR)/include/uapi. These headers have not been +# prepared for usage by userspace, so to workaround this we have to +# defined the "__user" macro as empty. +AUFS_UTIL_HOST_CPPFLAGS = \ + $(HOST_CPPFLAGS) \ + -I$(LINUX_DIR)/include/uapi \ + -D__user= + +AUFS_UTIL_CPPFLAGS = \ + $(TARGET_CPPFLAGS) \ + -I$(LINUX_DIR)/include/uapi \ + -D__user= + +# rdu64 is supposed to provide the LFS variant of readdir(), +# readdir64(). However, because Buildroot is always LFS-enabled, +# readdir() is always the LFS variant. Drop rdu64 from the build, as +# it causes build failures due to multiple implementations of +# readdir64(). +define AUFS_UTIL_REMOVE_RDU64 + $(SED) 's% rdu64.o%%' $(@D)/libau/Makefile +endef + +AUFS_UTIL_POST_PATCH_HOOKS += AUFS_UTIL_REMOVE_RDU64 + +# First, we build the host tools, needed to build the target tools. +define AUFS_UTIL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + $(HOST_CONFIGURE_OPTS) \ + CPPFLAGS="$(AUFS_UTIL_HOST_CPPFLAGS)" \ + HOSTCC="$(HOSTCC)" HOSTLD="$(HOSTLD)" \ + INSTALL="$(INSTALL)" c2sh c2tmac + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + CPPFLAGS="$(AUFS_UTIL_CPPFLAGS)" \ + INSTALL="$(INSTALL)" all +endef + +define AUFS_UTIL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) INSTALL="$(INSTALL)" DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/aufs/Config.in b/buildroot/package/aufs/Config.in new file mode 100644 index 0000000..cc5ff36 --- /dev/null +++ b/buildroot/package/aufs/Config.in @@ -0,0 +1,16 @@ +# Automatically selected by the corresponding linux extension +config BR2_PACKAGE_AUFS + bool + +if BR2_PACKAGE_AUFS + +# Both come from the selection of the linux extension. +config BR2_PACKAGE_AUFS_SERIES + int + default BR2_LINUX_KERNEL_EXT_AUFS_SERIES + +config BR2_PACKAGE_AUFS_VERSION + string + default BR2_LINUX_KERNEL_EXT_AUFS_VERSION + +endif diff --git a/buildroot/package/aufs/aufs.mk b/buildroot/package/aufs/aufs.mk new file mode 100644 index 0000000..55dbf94 --- /dev/null +++ b/buildroot/package/aufs/aufs.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# aufs +# +################################################################################ + +AUFS_VERSION = $(call qstrip,$(BR2_PACKAGE_AUFS_VERSION)) +AUFS_LICENSE = GPL-2.0 +AUFS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_AUFS_SERIES),3) +AUFS_SITE = http://git.code.sf.net/p/aufs/aufs3-standalone +AUFS_SITE_METHOD = git +else ifeq ($(BR2_PACKAGE_AUFS_SERIES),4) +AUFS_SITE = $(call github,sfjro,aufs4-standalone,$(AUFS_VERSION)) +endif + +ifeq ($(BR_BUILDING):$(BR2_PACKAGE_AUFS):$(AUFS_VERSION),y:y:) +$(error No aufs version specified) +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/augeas/Config.in b/buildroot/package/augeas/Config.in new file mode 100644 index 0000000..df8c517 --- /dev/null +++ b/buildroot/package/augeas/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_AUGEAS + bool "augeas" + # ARC toolchain issue: + # https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/issues/108 + depends on !BR2_arc + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_READLINE + help + Augeas is a configuration editing tool. It parses + configuration files in their native formats and transforms + them into a tree. Configuration changes are made by + manipulating this tree and saving it back into native config + files. + + http://augeas.net + +comment "augeas needs a toolchain w/ wchar" + depends on !BR2_arc + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/augeas/augeas.hash b/buildroot/package/augeas/augeas.hash new file mode 100644 index 0000000..46b99dd --- /dev/null +++ b/buildroot/package/augeas/augeas.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature from +# http://download.augeas.net/augeas-1.10.1.tar.gz.sig +sha256 52db256afab261d31cc147eaa1a71795a5fec59e888dfd0b65a84c7aacd6364d augeas-1.10.1.tar.gz +sha256 ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532 COPYING diff --git a/buildroot/package/augeas/augeas.mk b/buildroot/package/augeas/augeas.mk new file mode 100644 index 0000000..c4b8b7e --- /dev/null +++ b/buildroot/package/augeas/augeas.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# augeas +# +################################################################################ + +AUGEAS_VERSION = 1.10.1 +AUGEAS_SITE = http://download.augeas.net +AUGEAS_INSTALL_STAGING = YES +AUGEAS_LICENSE = LGPL-2.1+ +AUGEAS_LICENSE_FILES = COPYING +AUGEAS_DEPENDENCIES = host-pkgconf readline libxml2 + +# patching examples/Makefile.am, can be removed when updating from version 1.9.0 +AUGEAS_AUTORECONF = YES + +AUGEAS_CONF_OPTS = --disable-gnulib-tests + +# Remove the test lenses which occupy about 1.4 MB on the target +define AUGEAS_REMOVE_TEST_LENSES + rm -rf $(TARGET_DIR)/usr/share/augeas/lenses/dist/tests +endef +AUGEAS_POST_INSTALL_TARGET_HOOKS += AUGEAS_REMOVE_TEST_LENSES + +$(eval $(autotools-package)) diff --git a/buildroot/package/aumix/0001-fix-incorrect-makefile-am.patch b/buildroot/package/aumix/0001-fix-incorrect-makefile-am.patch new file mode 100644 index 0000000..143174d --- /dev/null +++ b/buildroot/package/aumix/0001-fix-incorrect-makefile-am.patch @@ -0,0 +1,28 @@ +Aumix's src/Makefile.am incorrect adds @includedir@ to the list of +include paths and @libdir@ to the list of libraries paths. This is +incorrect, as @includedir@ and @libdir@ are respectively /usr/include +and /usr/lib, even in cross-compilation mode. + +At the same time, use AM_CFLAGS instead of CFLAGS, as is done on the +similar patch found in OpenEmbedded. + +Signed-off-by: Thomas Petazzoni +--- + src/Makefile.am | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +Index: aumix-2.8/src/Makefile.am +=================================================================== +--- aumix-2.8.orig/src/Makefile.am ++++ aumix-2.8/src/Makefile.am +@@ -9,9 +9,8 @@ + mouse.c common.h curses.h gpm-xterm.h gtk.h interactive.h \ + mouse.h play.xpm record.xpm + localedir = $(datadir)/locale +-INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\" -I@includedir@ ++INCLUDES = -I../intl -DLOCALEDIR=\"$(localedir)\" + AM_CFLAGS = @CFLAGS@ @GLIB_CFLAGS@ @GTK_CFLAGS@ +-LDADD = -L@libdir@ + LIBS = @LIBS@ @GTK_LIBS@ @LIBINTL@ + DEFS = @DEFS@ + diff --git a/buildroot/package/aumix/Config.in b/buildroot/package/aumix/Config.in new file mode 100644 index 0000000..3d32082 --- /dev/null +++ b/buildroot/package/aumix/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_AUMIX + bool "aumix" + select BR2_PACKAGE_NCURSES + help + aumix is a small, easy-to-use program to control the mixer + of your sound card. It runs in text mode using the ncurses + library, or from the command line (non-interactively). + It can read default settings from a file, and it can also + automatically save and restore the mixer settings at shutdown + and boot. + + http://jpj.net/~trevor/aumix.html diff --git a/buildroot/package/aumix/aumix.hash b/buildroot/package/aumix/aumix.hash new file mode 100644 index 0000000..0463ea0 --- /dev/null +++ b/buildroot/package/aumix/aumix.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d2ce43d532ef75072c8d4e7922e3bc06be6d97765a508d9ceb0d1766bbe70e29 aumix-2.9.1.tar.bz2 diff --git a/buildroot/package/aumix/aumix.mk b/buildroot/package/aumix/aumix.mk new file mode 100644 index 0000000..9bcc19a --- /dev/null +++ b/buildroot/package/aumix/aumix.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# aumix +# +################################################################################ + +AUMIX_VERSION = 2.9.1 +AUMIX_SOURCE = aumix-$(AUMIX_VERSION).tar.bz2 +AUMIX_SITE = http://jpj.net/~trevor/aumix/releases +AUMIX_AUTORECONF = YES +AUMIX_GETTEXTIZE = YES +AUMIX_LICENSE = GPL-2.0+ +AUMIX_LICENSE_FILES = COPYING + +AUMIX_CONF_OPTS = \ + --without-gtk \ + --without-gtk1 \ + --without-alsa \ + --without-gpm \ + --without-sysmouse + +AUMIX_DEPENDENCIES = host-gettext ncurses + +$(eval $(autotools-package)) diff --git a/buildroot/package/auto-getty/Config.in b/buildroot/package/auto-getty/Config.in new file mode 100644 index 0000000..94b7abd --- /dev/null +++ b/buildroot/package/auto-getty/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_AUTO_GETTY_SUPPORT + bool "auto-getty: Enable auto console support" + +config BR2_PACKAGE_AUTO_GETTY + bool "Auto getty console" + depends on BR2_PACKAGE_AUTO_GETTY_SUPPORT && !BR2_TARGET_GENERIC_GETTY + help + Automagically use the correct console device for getty based on kernel boot console. + +config BR2_PACKAGE_AUTO_GETTY_ROOT_LOGIN + bool "Auto login as root" + depends on BR2_PACKAGE_AUTO_GETTY + +comment "Please deactivate buildroot getty option first!" + depends on BR2_PACKAGE_AUTO_GETTY_SUPPORT && BR2_TARGET_GENERIC_GETTY + diff --git a/buildroot/package/auto-getty/auto-getty.mk b/buildroot/package/auto-getty/auto-getty.mk new file mode 100644 index 0000000..f334970 --- /dev/null +++ b/buildroot/package/auto-getty/auto-getty.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# auto-getty +# +################################################################################ + +# +# Guidelines: +# http://buildroot.uclibc.org/downloads/manual/manual.html#generic-package-tutorial +# + +# config +AUTO_GETTY_VERSION = 0.1 +AUTO_GETTY_SITE = $(TOPDIR)/package/$(AUTO_GETTY_NAME)/src +AUTO_GETTY_SITE_METHOD = local + +# hooks +define AUTO_GETTY_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/auto-getty $(TARGET_DIR)/usr/bin/ + #$(INSTALL) -D -m 0755 $(@D)/S91auto-getty $(TARGET_DIR)/etc/init.d/ + +endef + +ifeq ($(BR2_PACKAGE_AUTO_GETTY_ROOT_LOGIN),y) +define AUTO_GETTY_ROOT_LOGIN_INSTALL + $(INSTALL) -D -m 0755 $(@D)/auto-root-login $(TARGET_DIR)/usr/bin/ + $(INSTALL) -D -m 0755 -d $(TARGET_DIR)/etc/default + $(INSTALL) -D -m 0644 $(@D)/autogetty $(TARGET_DIR)/etc/default/autogetty +endef +AUTO_GETTY_INSTALL_TARGET_CMDS += $(AUTO_GETTY_ROOT_LOGIN_INSTALL) +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/auto-getty/src/S91auto-getty b/buildroot/package/auto-getty/src/S91auto-getty new file mode 100644 index 0000000..ab88033 --- /dev/null +++ b/buildroot/package/auto-getty/src/S91auto-getty @@ -0,0 +1,28 @@ +#!/bin/sh + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/bin/auto-getty +NAME="auto-getty" + +case "$1" in + start) + echo -n "Starting ${NAME}... " + start-stop-daemon -S -b -n $NAME --exec $DAEMON + echo "done" + ;; + stop) + echo -n "Stopping ${NAME}... " + start-stop-daemon -K -n $NAME + echo "done" + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: S91S{NAME} { start | stop | restart }" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/buildroot/package/auto-getty/src/auto-getty b/buildroot/package/auto-getty/src/auto-getty new file mode 100644 index 0000000..1d3b867 --- /dev/null +++ b/buildroot/package/auto-getty/src/auto-getty @@ -0,0 +1,36 @@ +#!/bin/sh -e + +# taken from https://github.com/Angstrom-distribution/meta-linaro + +# load config +[ -f /etc/default/autogetty ] && . /etc/default/autogetty + +while true; do + for arg in $(cat /proc/cmdline); do + case $arg in + console=*) + tty=${arg#console=} + tty=${tty#/dev/} + + case $tty in tty[a-zA-Z]* ) + PORT=${tty%%,*} + + tmp=${tty##$PORT,} + SPEED=${tmp%%n*} + + # if console=/dev/tty* without speed is given + [ $SPEED = $PORT ] && SPEED=115200 + BITS=${tmp##${SPEED}n} + + # 8bit serial is default + [ -z $BITS ] && BITS=8 + # [ 8 -eq $BITS ] && GETTY_ARGS="$GETTY_ARGS -8 " + + [ -z $SPEED ] && SPEED='115200,57600,38400,19200,9600' + + GETTY_ARGS="$AUTOGETTY_ARGS $GETTY_ARGS $SPEED $PORT" + /sbin/getty $GETTY_ARGS + esac + esac + done +done diff --git a/buildroot/package/auto-getty/src/auto-root-login b/buildroot/package/auto-getty/src/auto-root-login new file mode 100644 index 0000000..c9b1092 --- /dev/null +++ b/buildroot/package/auto-getty/src/auto-root-login @@ -0,0 +1,3 @@ +#!/bin/sh + +exec /bin/login -f root diff --git a/buildroot/package/auto-getty/src/autogetty b/buildroot/package/auto-getty/src/autogetty new file mode 100644 index 0000000..da20c26 --- /dev/null +++ b/buildroot/package/auto-getty/src/autogetty @@ -0,0 +1,2 @@ +# here you can provide what to run instead of /bin/login +AUTOGETTY_ARGS="-n -l /usr/bin/auto-root-login" diff --git a/buildroot/package/autoconf-archive/0001-AX_TLS-fix-syntax-error.patch b/buildroot/package/autoconf-archive/0001-AX_TLS-fix-syntax-error.patch new file mode 100644 index 0000000..c0efeb3 --- /dev/null +++ b/buildroot/package/autoconf-archive/0001-AX_TLS-fix-syntax-error.patch @@ -0,0 +1,48 @@ +From 1870301013d79be781ead2b0e62fc08f91715ca9 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 3 May 2015 23:02:34 +0200 +Subject: [PATCH] AX_TLS: fix syntax error + +The commit e012eb17b3d67f31dee477592328207437206c33 introduce +a syntax error due to an empty "else" statement. + +confifure: +if test "$ac_cv_tls" != "none"; then : +cat >>confdefs.h <<_ACEOF +_ACEOF +else + +fi + +Remove the [] on the third part of AS_IF. + +Signed-off-by: Romain Naour +(rebased against version 2017.03.21) +Signed-off-by: Bernd Kuhls +--- + m4/ax_tls.m4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/m4/ax_tls.m4 b/m4/ax_tls.m4 +index 809b761..2135dd2 100644 +--- a/m4/ax_tls.m4 ++++ b/m4/ax_tls.m4 +@@ -44,7 +44,7 @@ + # modified version of the Autoconf Macro, you may extend this special + # exception to the GPL to apply to your modified version as well. + +-#serial 13 ++#serial 14 + + AC_DEFUN([AX_TLS], [ + AC_MSG_CHECKING([for thread local storage (TLS) class]) +@@ -70,5 +70,5 @@ AC_DEFUN([AX_TLS], [ + AS_IF([test "$ac_cv_tls" != "none"], + [AC_DEFINE_UNQUOTED([TLS],[$ac_cv_tls],[If the compiler supports a TLS storage class define it to that here]) + m4_ifnblank([$1],[$1])], +- [m4_ifnblank([$2],[$2])]) ++ m4_ifnblank([$2],[$2])) + ]) +-- +1.9.3 + diff --git a/buildroot/package/autoconf-archive/autoconf-archive.hash b/buildroot/package/autoconf-archive/autoconf-archive.hash new file mode 100644 index 0000000..2c537b3 --- /dev/null +++ b/buildroot/package/autoconf-archive/autoconf-archive.hash @@ -0,0 +1,2 @@ +# Computed locally +sha256 386ad455f12bdeb3a7d19280441a5ab77355142349200ff11040a8d9d455d765 autoconf-archive-2017.03.21.tar.xz diff --git a/buildroot/package/autoconf-archive/autoconf-archive.mk b/buildroot/package/autoconf-archive/autoconf-archive.mk new file mode 100644 index 0000000..8a6d595 --- /dev/null +++ b/buildroot/package/autoconf-archive/autoconf-archive.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# autoconf-archive +# +################################################################################ + +AUTOCONF_ARCHIVE_VERSION = 2017.03.21 +AUTOCONF_ARCHIVE_SOURCE = autoconf-archive-$(AUTOCONF_ARCHIVE_VERSION).tar.xz +AUTOCONF_ARCHIVE_SITE = $(BR2_GNU_MIRROR)/autoconf-archive +AUTOCONF_ARCHIVE_LICENSE = GPL-3.0+ with exception +AUTOCONF_ARCHIVE_LICENSE_FILES = COPYING COPYING.EXCEPTION +HOST_AUTOCONF_ARCHIVE_INSTALL_OPTS = aclocaldir=$(HOST_DIR)/share/autoconf-archive install + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/autoconf/0001-dont-add-dirty-to-version.patch b/buildroot/package/autoconf/0001-dont-add-dirty-to-version.patch new file mode 100644 index 0000000..e8d9f6a --- /dev/null +++ b/buildroot/package/autoconf/0001-dont-add-dirty-to-version.patch @@ -0,0 +1,28 @@ +autoconf: don't append -dirty to version + +Don't append -dirty to autoconf version number if the buildroot git tree +has uncommited changes. + +This script is meant for the autoconf developers, but it also activates +if you build autoconf in a subdirectory of a git tree (E.G. like how it's +commonly done in buildroot). + +The affect is that autoconf gets built as being version 2.65-dirty, which +breaks programs (like Python) which explicitly checks for autoconf-2.65. + +[Gustavo: update for autoconf 2.69] +Signed-off-by: Peter Korsgaard +Signed-off-by: Gustavo Zacarias + +diff -Nura autoconf-2.69.orig/build-aux/git-version-gen autoconf-2.69/build-aux/git-version-gen +--- autoconf-2.69.orig/build-aux/git-version-gen 2013-06-27 11:31:02.340200154 -0300 ++++ autoconf-2.69/build-aux/git-version-gen 2013-06-27 11:31:13.734577033 -0300 +@@ -203,7 +203,7 @@ + *) # Append the suffix only if there isn't one already. + case $v in + *-dirty) ;; +- *) v="$v-dirty" ;; ++ #*) v="$v-dirty" ;; + esac ;; + esac + fi diff --git a/buildroot/package/autoconf/autoconf.hash b/buildroot/package/autoconf/autoconf.hash new file mode 100644 index 0000000..f35f6f8 --- /dev/null +++ b/buildroot/package/autoconf/autoconf.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 64ebcec9f8ac5b2487125a86a7760d2591ac9e1d3dbd59489633f9de62a57684 autoconf-2.69.tar.xz diff --git a/buildroot/package/autoconf/autoconf.mk b/buildroot/package/autoconf/autoconf.mk new file mode 100644 index 0000000..e5f474c --- /dev/null +++ b/buildroot/package/autoconf/autoconf.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# autoconf +# +################################################################################ + +AUTOCONF_VERSION = 2.69 +AUTOCONF_SOURCE = autoconf-$(AUTOCONF_VERSION).tar.xz +AUTOCONF_SITE = $(BR2_GNU_MIRROR)/autoconf + +AUTOCONF_LICENSE = GPL-3.0+ with exceptions +AUTOCONF_LICENSE_FILES = COPYINGv3 COPYING.EXCEPTION + +HOST_AUTOCONF_CONF_ENV = \ + EMACS="no" \ + ac_cv_path_M4=$(HOST_DIR)/bin/m4 \ + ac_cv_prog_gnu_m4_gnu=no + +HOST_AUTOCONF_DEPENDENCIES = host-m4 host-libtool + +$(eval $(host-autotools-package)) + +# variables used by other packages +AUTOCONF = $(HOST_DIR)/bin/autoconf +AUTOHEADER = $(HOST_DIR)/bin/autoheader +AUTORECONF = $(HOST_CONFIGURE_OPTS) ACLOCAL="$(ACLOCAL)" AUTOCONF="$(AUTOCONF)" AUTOHEADER="$(AUTOHEADER)" AUTOMAKE="$(AUTOMAKE)" AUTOPOINT=/bin/true $(HOST_DIR)/bin/autoreconf -f -i -I "$(ACLOCAL_DIR)" -I "$(ACLOCAL_HOST_DIR)" diff --git a/buildroot/package/autofs/0001-include-linux-nfs.h-directly-in-rpc_sub.patch b/buildroot/package/autofs/0001-include-linux-nfs.h-directly-in-rpc_sub.patch new file mode 100644 index 0000000..26f2265 --- /dev/null +++ b/buildroot/package/autofs/0001-include-linux-nfs.h-directly-in-rpc_sub.patch @@ -0,0 +1,32 @@ +From 44bdce8c6ed9b30c1643e5981172a4f9025f013c Mon Sep 17 00:00:00 2001 +From: Andreas Oberritter +Date: Wed, 13 Mar 2013 16:17:08 +0100 +Subject: [PATCH] autofs-5.0.7: include linux/nfs.h directly in rpc_subs.h + +Fixes compile error with uclibc. Glibc's nfs/nfs.h contains +nothing but "#include linux/nfs.h". rpc_subs.h already includes +other linux/nfs*.h files directly. + +Signed-off-by: Andreas Oberritter +Signed-off-by: Thomas Petazzoni +Upstream-Status: Pending +--- + include/rpc_subs.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/rpc_subs.h b/include/rpc_subs.h +index b6d59f9..a2d9648 100644 +--- a/include/rpc_subs.h ++++ b/include/rpc_subs.h +@@ -18,7 +18,7 @@ + + #include + #include +-#include ++#include + #include + #include + +-- +1.7.10.4 + diff --git a/buildroot/package/autofs/Config.in b/buildroot/package/autofs/Config.in new file mode 100644 index 0000000..8e08357 --- /dev/null +++ b/buildroot/package/autofs/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_AUTOFS + bool "autofs" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC + depends on !BR2_STATIC_LIBS # dlfcn + help + Autofs controls the operation of the automount daemons. The + automount daemons automatically mount filesystems when they + are used and unmount them after a period of inactivity based + on a set of pre-configured maps defined by default in + /etc/auto.master. The kernel automounter implements SunOS + style automounter under Linux and requires a kernel version + of at least 2.6.17 and the autofs4 kernel module. + + http://www.linuxfromscratch.org/blfs/view/svn/general/autofs.html + +comment "autofs needs a toolchain w/ NPTL, RPC, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_NATIVE_RPC diff --git a/buildroot/package/autofs/autofs.hash b/buildroot/package/autofs/autofs.hash new file mode 100644 index 0000000..1f2060b --- /dev/null +++ b/buildroot/package/autofs/autofs.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/daemons/autofs/v5/sha256sums.asc +sha256 8fce30ee51ffd528fe1a4e8374ef57f43367e1f123030e175fb1b1cf15bc1722 autofs-5.1.4.tar.xz diff --git a/buildroot/package/autofs/autofs.mk b/buildroot/package/autofs/autofs.mk new file mode 100644 index 0000000..befee15 --- /dev/null +++ b/buildroot/package/autofs/autofs.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# autofs +# +################################################################################ + +AUTOFS_VERSION = 5.1.4 +AUTOFS_SOURCE = autofs-$(AUTOFS_VERSION).tar.xz +AUTOFS_SITE = $(BR2_KERNEL_MIRROR)/linux/daemons/autofs/v5 +AUTOFS_LICENSE = GPL-2.0+ +AUTOFS_LICENSE_FILES = COPYING COPYRIGHT +AUTOFS_DEPENDENCIES = host-flex host-bison host-nfs-utils + +# autofs looks on the build machine for the path of modprobe, so tell +# it explicitly where it will be located on the target. +AUTOFS_CONF_ENV = \ + ac_cv_path_KRB5_CONFIG=no \ + ac_cv_path_MODPROBE=/sbin/modprobe \ + ac_cv_linux_procfs=yes + +# instead of looking in the PATH like any reasonable package, autofs +# configure looks only in an hardcoded search path for host tools, +# which we have to override with --with-path. +AUTOFS_CONF_OPTS = \ + --disable-mount-locking \ + --enable-ignore-busy \ + --without-openldap \ + --without-sasl \ + --with-path="$(BR_PATH)" \ + --with-hesiod=no + +AUTOFS_MAKE_ENV = DONTSTRIP=1 + +$(eval $(autotools-package)) diff --git a/buildroot/package/automake/0001-noman.patch b/buildroot/package/automake/0001-noman.patch new file mode 100644 index 0000000..a4ad16d --- /dev/null +++ b/buildroot/package/automake/0001-noman.patch @@ -0,0 +1,27 @@ +Disable manpages build and installation, seems the bundled version of +help2man is somewhat old and breaks on modern distributions such as +Fedora 20, as reported by Kanibal on IRC. + +Signed-off-by: Gustavo Zacarias + +diff -Nura automake-1.14.1.orig/Makefile.in automake-1.14.1/Makefile.in +--- automake-1.14.1.orig/Makefile.in 2014-09-10 18:40:57.554164448 -0300 ++++ automake-1.14.1/Makefile.in 2014-09-10 18:42:01.050348068 -0300 +@@ -3387,7 +3387,7 @@ + check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local + check: check-am +-all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(MANS) $(DATA) ++all-am: Makefile $(INFO_DEPS) $(SCRIPTS) $(DATA) + installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(amdir)" "$(DESTDIR)$(automake_acdir)" "$(DESTDIR)$(automake_internal_acdir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(perllibdir)" "$(DESTDIR)$(pkgvdatadir)" "$(DESTDIR)$(scriptdir)" "$(DESTDIR)$(system_acdir)" "$(DESTDIR)$(perllibdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ +@@ -3454,7 +3454,7 @@ + install-dist_automake_internal_acDATA install-dist_docDATA \ + install-dist_perllibDATA install-dist_pkgvdataDATA \ + install-dist_scriptDATA install-dist_system_acDATA \ +- install-info-am install-man install-nodist_perllibDATA ++ install-info-am install-nodist_perllibDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook + install-dvi: install-dvi-am diff --git a/buildroot/package/automake/automake.hash b/buildroot/package/automake/automake.hash new file mode 100644 index 0000000..b194c3c --- /dev/null +++ b/buildroot/package/automake/automake.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 af6ba39142220687c500f79b4aa2f181d9b24e4f8d8ec497cea4ba26c64bedaf automake-1.15.1.tar.xz +# License files, locally calculated +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/automake/automake.mk b/buildroot/package/automake/automake.mk new file mode 100644 index 0000000..2703377 --- /dev/null +++ b/buildroot/package/automake/automake.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# automake +# +################################################################################ + +AUTOMAKE_VERSION = 1.15.1 +AUTOMAKE_SOURCE = automake-$(AUTOMAKE_VERSION).tar.xz +AUTOMAKE_SITE = $(BR2_GNU_MIRROR)/automake +AUTOMAKE_LICENSE = GPL-2.0+ +AUTOMAKE_LICENSE_FILES = COPYING + +HOST_AUTOMAKE_DEPENDENCIES = host-autoconf + +ACLOCAL_HOST_DIR = $(HOST_DIR)/share/aclocal + +define GTK_DOC_M4_INSTALL + $(INSTALL) -D -m 0644 package/automake/gtk-doc.m4 \ + $(ACLOCAL_HOST_DIR)/gtk-doc.m4 +endef + +# ensure staging aclocal dir exists +define HOST_AUTOMAKE_MAKE_ACLOCAL + mkdir -p $(ACLOCAL_DIR) +endef + +HOST_AUTOMAKE_POST_INSTALL_HOOKS += GTK_DOC_M4_INSTALL +HOST_AUTOMAKE_POST_INSTALL_HOOKS += HOST_AUTOMAKE_MAKE_ACLOCAL + +$(eval $(host-autotools-package)) + +# variables used by other packages +AUTOMAKE = $(HOST_DIR)/bin/automake +ACLOCAL_DIR = $(STAGING_DIR)/usr/share/aclocal +ACLOCAL = $(HOST_DIR)/bin/aclocal -I $(ACLOCAL_DIR) diff --git a/buildroot/package/automake/gtk-doc.m4 b/buildroot/package/automake/gtk-doc.m4 new file mode 100644 index 0000000..3675543 --- /dev/null +++ b/buildroot/package/automake/gtk-doc.m4 @@ -0,0 +1,88 @@ +dnl -*- mode: autoconf -*- + +# serial 2 + +dnl Usage: +dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) +AC_DEFUN([GTK_DOC_CHECK], +[ + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first + AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first + + ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"]) + AC_MSG_CHECKING([for gtk-doc]) + PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no]) + AC_MSG_RESULT($have_gtk_doc) + + if test "$have_gtk_doc" = "no"; then + AC_MSG_WARN([ + You will not be able to create source packages with 'make dist' + because $gtk_doc_requires is not found.]) + fi + + dnl check for tools we added during development + dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that + dnl may not be writable by the user. Currently, automake requires that the + dnl test name must end in '.test'. + dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638 + AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test]) + AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check]) + AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) + AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) + + dnl for overriding the documentation installation directory + AC_ARG_WITH([html-dir], + AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, + [with_html_dir='${datadir}/gtk-doc/html']) + HTML_DIR="$with_html_dir" + AC_SUBST([HTML_DIR]) + + dnl enable/disable documentation building + AC_ARG_ENABLE([gtk-doc], + AS_HELP_STRING([--enable-gtk-doc], + [use gtk-doc to build documentation [[default=no]]]),, + [enable_gtk_doc=no]) + + AC_MSG_CHECKING([whether to build gtk-doc documentation]) + AC_MSG_RESULT($enable_gtk_doc) + + if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then + AC_MSG_ERROR([ + You must have $gtk_doc_requires installed to build documentation for + $PACKAGE_NAME. Please install gtk-doc or disable building the + documentation by adding '--disable-gtk-doc' to '[$]0'.]) + fi + + dnl don't check for glib if we build glib + if test "x$PACKAGE_NAME" != "xglib"; then + dnl don't fail if someone does not have glib + PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) + fi + + dnl enable/disable output formats + AC_ARG_ENABLE([gtk-doc-html], + AS_HELP_STRING([--enable-gtk-doc-html], + [build documentation in html format [[default=yes]]]),, + [enable_gtk_doc_html=yes]) + AC_ARG_ENABLE([gtk-doc-pdf], + AS_HELP_STRING([--enable-gtk-doc-pdf], + [build documentation in pdf format [[default=no]]]),, + [enable_gtk_doc_pdf=no]) + + if test -z "$GTKDOC_MKPDF"; then + enable_gtk_doc_pdf=no + fi + + if test -z "$AM_DEFAULT_VERBOSITY"; then + AM_DEFAULT_VERBOSITY=1 + fi + AC_SUBST([AM_DEFAULT_VERBOSITY]) + + AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes]) + AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) + AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) + AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) +]) diff --git a/buildroot/package/autossh/0001-honour-LDFLAGS.patch b/buildroot/package/autossh/0001-honour-LDFLAGS.patch new file mode 100644 index 0000000..2e6160b --- /dev/null +++ b/buildroot/package/autossh/0001-honour-LDFLAGS.patch @@ -0,0 +1,16 @@ +Honour LDFLAGS, especially required when static linking + +Signed-off-by: Waldemar Brodkorb + +diff -Nur autossh-1.4e.orig/Makefile.in autossh-1.4e/Makefile.in +--- autossh-1.4e.orig/Makefile.in 2015-02-10 05:41:58.000000000 +0100 ++++ autossh-1.4e/Makefile.in 2016-11-25 12:49:06.052122855 +0100 +@@ -31,7 +31,7 @@ + + + $(TARGET): $(OFILES) +- $(CC) $(CPPFLAGS) -o $(TARGET) $(OFILES) $(LIBS) ++ $(CC) $(CPPFLAGS) $(LDFLAGS) -o $(TARGET) $(OFILES) $(LIBS) + + clean: + - /bin/rm -f *.o *.a *.core *~ diff --git a/buildroot/package/autossh/Config.in b/buildroot/package/autossh/Config.in new file mode 100644 index 0000000..351e23f --- /dev/null +++ b/buildroot/package/autossh/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_AUTOSSH + bool "autossh" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_DROPBEAR || BR2_PACKAGE_OPENSSH + help + autossh is a program to start a copy of ssh and monitor it, + restarting it as necessary should it die or stop passing + traffic. + + http://www.harding.motd.ca/autossh/ diff --git a/buildroot/package/autossh/autossh.hash b/buildroot/package/autossh/autossh.hash new file mode 100644 index 0000000..4f3de13 --- /dev/null +++ b/buildroot/package/autossh/autossh.hash @@ -0,0 +1,2 @@ +# From http://www.harding.motd.ca/autossh/autossh-1.4e.cksums +sha256 9e8e10a59d7619176f4b986e256f776097a364d1be012781ea52e08d04679156 autossh-1.4e.tgz diff --git a/buildroot/package/autossh/autossh.mk b/buildroot/package/autossh/autossh.mk new file mode 100644 index 0000000..d52b4e9 --- /dev/null +++ b/buildroot/package/autossh/autossh.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# autossh +# +################################################################################ + +AUTOSSH_VERSION = 1.4e +AUTOSSH_SITE = http://www.harding.motd.ca/autossh +AUTOSSH_SOURCE = autossh-$(AUTOSSH_VERSION).tgz +AUTOSSH_LICENSE = Modified BSD +AUTOSSH_LICENSE_FILES = autossh.c + +# Bundled ./configure is not up-to-date with what is in configure.ac +AUTOSSH_AUTORECONF = YES + +AUTOSSH_CONF_OPTS = --with-ssh=/usr/bin/ssh + +define AUTOSSH_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/autossh $(TARGET_DIR)/usr/bin/autossh +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/avahi/Config.in b/buildroot/package/avahi/Config.in new file mode 100644 index 0000000..5e303d0 --- /dev/null +++ b/buildroot/package/avahi/Config.in @@ -0,0 +1,49 @@ +config BR2_PACKAGE_AVAHI + bool "avahi" + # libdaemon uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + Avahi is a system which facilitates service + discovery on a local network. + + http://www.avahi.org/ + +if BR2_PACKAGE_AVAHI + +config BR2_PACKAGE_AVAHI_AUTOIPD + bool "IPv4LL network address configuration daemon" + default y + select BR2_PACKAGE_LIBDAEMON + help + Avahi-autoipd implements IPv4LL, "Dynamic Configuration of + IPv4 Link-Local Addresses" (IETF RFC3927), a protocol for + automatic IP address configuration from the link-local + 169.254.0.0/16 range without the need for a central server. + It is primarily intended to be used in ad-hoc networks which + lack a DHCP server. + +config BR2_PACKAGE_AVAHI_DAEMON + bool "mDNS/DNS-SD daemon" + select BR2_PACKAGE_LIBDAEMON + select BR2_PACKAGE_EXPAT + help + The Avahi mDNS/DNS-SD daemon implementing Apple's ZeroConf + architecture (also known as "Rendezvous" or "Bonjour"). + The daemon registers local IP addresses and services using + mDNS/DNS-SD. + +config BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY + bool "libdns_sd compatibility (Bonjour)" + depends on BR2_PACKAGE_AVAHI_DAEMON + select BR2_PACKAGE_DBUS + help + Enable the libdns_sd (Bonjour) compatibility library support + for legacy applications. + +endif + +comment "avahi needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/avahi/S05avahi-setup.sh b/buildroot/package/avahi/S05avahi-setup.sh new file mode 100755 index 0000000..90ccbce --- /dev/null +++ b/buildroot/package/avahi/S05avahi-setup.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +case "$1" in + start|"") + if [ ! -d /tmp/avahi-autoipd ]; then + rm -rf /tmp/avahi-autoipd + mkdir /tmp/avahi-autoipd + chown avahi.avahi /tmp/avahi-autoipd + fi + ;; + stop) ;; + *) + echo "Usage: S05avahi-setup.sh {start|stop}" >&2 + exit 1 + ;; +esac diff --git a/buildroot/package/avahi/S50avahi-daemon b/buildroot/package/avahi/S50avahi-daemon new file mode 100755 index 0000000..81ac513 --- /dev/null +++ b/buildroot/package/avahi/S50avahi-daemon @@ -0,0 +1,20 @@ +#!/bin/sh +# +# avahi-daemon init script + +DAEMON=/usr/sbin/avahi-daemon +case "$1" in + start) + $DAEMON -c || $DAEMON -D + ;; + stop) + $DAEMON -c && $DAEMON -k + ;; + reload) + $DAEMON -c && $DAEMON -r + ;; + *) + echo "Usage: S50avahi-daemon {start|stop|reload}" >&2 + exit 1 + ;; +esac diff --git a/buildroot/package/avahi/avahi.hash b/buildroot/package/avahi/avahi.hash new file mode 100644 index 0000000..b4d36ff --- /dev/null +++ b/buildroot/package/avahi/avahi.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 57a99b5dfe7fdae794e3d1ee7a62973a368e91e414bd0dfa5d84434de5b14804 avahi-0.7.tar.gz +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE diff --git a/buildroot/package/avahi/avahi.mk b/buildroot/package/avahi/avahi.mk new file mode 100644 index 0000000..c8f1af9 --- /dev/null +++ b/buildroot/package/avahi/avahi.mk @@ -0,0 +1,226 @@ +################################################################################ +# +# avahi +# +################################################################################ + +AVAHI_VERSION = 0.7 +AVAHI_SITE = https://github.com/lathiat/avahi/releases/download/v$(AVAHI_VERSION) +AVAHI_LICENSE = LGPL-2.1+ +AVAHI_LICENSE_FILES = LICENSE +AVAHI_INSTALL_STAGING = YES + +AVAHI_CONF_ENV = \ + ac_cv_func_strtod=yes \ + ac_fsusage_space=yes \ + fu_cv_sys_stat_statfs2_bsize=yes \ + ac_cv_func_closedir_void=no \ + ac_cv_func_getloadavg=no \ + ac_cv_lib_util_getloadavg=no \ + ac_cv_lib_getloadavg_getloadavg=no \ + ac_cv_func_getgroups=yes \ + ac_cv_func_getgroups_works=yes \ + ac_cv_func_chown_works=yes \ + ac_cv_have_decl_euidaccess=no \ + ac_cv_func_euidaccess=no \ + ac_cv_have_decl_strnlen=yes \ + ac_cv_func_strnlen_working=yes \ + ac_cv_func_lstat_dereferences_slashed_symlink=yes \ + ac_cv_func_lstat_empty_string_bug=no \ + ac_cv_func_stat_empty_string_bug=no \ + vb_cv_func_rename_trailing_slash_bug=no \ + ac_cv_have_decl_nanosleep=yes \ + jm_cv_func_nanosleep_works=yes \ + gl_cv_func_working_utimes=yes \ + ac_cv_func_utime_null=yes \ + ac_cv_have_decl_strerror_r=yes \ + ac_cv_func_strerror_r_char_p=no \ + jm_cv_func_svid_putenv=yes \ + ac_cv_func_getcwd_null=yes \ + ac_cv_func_getdelim=yes \ + ac_cv_func_mkstemp=yes \ + utils_cv_func_mkstemp_limitations=no \ + utils_cv_func_mkdir_trailing_slash_bug=no \ + jm_cv_func_gettimeofday_clobber=no \ + am_cv_func_working_getline=yes \ + gl_cv_func_working_readdir=yes \ + jm_ac_cv_func_link_follows_symlink=no \ + utils_cv_localtime_cache=no \ + ac_cv_struct_st_mtim_nsec=no \ + gl_cv_func_tzset_clobber=no \ + gl_cv_func_getcwd_null=yes \ + gl_cv_func_getcwd_path_max=yes \ + ac_cv_func_fnmatch_gnu=yes \ + am_getline_needs_run_time_check=no \ + am_cv_func_working_getline=yes \ + gl_cv_func_mkdir_trailing_slash_bug=no \ + gl_cv_func_mkstemp_limitations=no \ + ac_cv_func_working_mktime=yes \ + jm_cv_func_working_re_compile_pattern=yes \ + ac_use_included_regex=no \ + avahi_cv_sys_cxx_works=yes \ + DATADIRNAME=share + +# Note: even if we have Gtk2 and Gtk3 support in Buildroot, we +# explicitly disable support for them, in order to avoid the following +# circular dependencies: +# +# avahi -> libglade -> libgtk2 -> cups -> avahi +# avahi -> libgtk3 -> cups -> avahi +# +# Since Gtk2 and Gtk3 in Avahi are only used for some example/demo +# programs, we decided to disable their support to solve the circular +# dependency. +AVAHI_CONF_OPTS = \ + --disable-qt3 \ + --disable-qt4 \ + --disable-gtk \ + --disable-gtk3 \ + --disable-gdbm \ + --disable-pygobject \ + --disable-mono \ + --disable-monodoc \ + --disable-stack-protector \ + --with-distro=none \ + --disable-manpages \ + $(if $(BR2_PACKAGE_AVAHI_AUTOIPD),--enable,--disable)-autoipd \ + --with-avahi-user=avahi \ + --with-avahi-group=avahi \ + --with-autoipd-user=avahi \ + --with-autoipd-group=avahi + +AVAHI_DEPENDENCIES = \ + host-intltool host-pkgconf \ + $(TARGET_NLS_DEPENDENCIES) + +AVAHI_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +AVAHI_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +else +AVAHI_CONF_OPTS += --with-systemdsystemunitdir=no +AVAHI_CFLAGS += -DDISABLE_SYSTEMD +endif + +ifneq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_AVAHI_AUTOIPD),) +AVAHI_DEPENDENCIES += libdaemon +else +AVAHI_CONF_OPTS += --disable-libdaemon +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +AVAHI_DEPENDENCIES += libcap +endif + +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y) +AVAHI_DEPENDENCIES += expat +AVAHI_CONF_OPTS += --with-xml=expat +else +AVAHI_CONF_OPTS += --with-xml=none +endif + +ifeq ($(BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY),y) +AVAHI_CONF_OPTS += --enable-compat-libdns_sd +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +AVAHI_DEPENDENCIES += dbus +else +AVAHI_CONF_OPTS += --disable-dbus +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +AVAHI_DEPENDENCIES += libglib2 +else +AVAHI_CONF_OPTS += --disable-glib --disable-gobject +endif + +ifeq ($(BR2_PACKAGE_PYTHON),y) +AVAHI_CONF_ENV += \ + am_cv_pathless_PYTHON=python \ + am_cv_path_PYTHON=$(PYTHON_TARGET_BINARY) \ + am_cv_python_version=$(PYTHON_VERSION) \ + am_cv_python_platform=linux2 \ + am_cv_python_pythondir=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \ + am_cv_python_pyexecdir=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \ + py_cv_mod_socket_=yes + +AVAHI_DEPENDENCIES += python +AVAHI_CONF_OPTS += --enable-python +else +AVAHI_CONF_OPTS += --disable-python +endif + +ifeq ($(BR2_PACKAGE_DBUS_PYTHON),y) +AVAHI_CONF_OPTS += --enable-python-dbus +AVAHI_CONF_ENV += py_cv_mod_dbus_=yes +AVAHI_DEPENDENCIES += dbus-python +else +AVAHI_CONF_OPTS += --disable-python-dbus +endif + +AVAHI_CONF_ENV += CFLAGS="$(AVAHI_CFLAGS)" + +AVAHI_MAKE_OPTS += LIBS=$(TARGET_NLS_LIBS) + +define AVAHI_USERS + avahi -1 avahi -1 * - - - +endef + +define AVAHI_REMOVE_INITSCRIPT + rm -rf $(TARGET_DIR)/etc/init.d/avahi-* +endef + +AVAHI_POST_INSTALL_TARGET_HOOKS += AVAHI_REMOVE_INITSCRIPT + +ifeq ($(BR2_PACKAGE_AVAHI_AUTOIPD),y) +define AVAHI_INSTALL_AUTOIPD + rm -f $(TARGET_DIR)/var/lib/avahi-autoipd + $(INSTALL) -d -m 0755 $(TARGET_DIR)/var/lib + ln -sf /tmp/avahi-autoipd $(TARGET_DIR)/var/lib/avahi-autoipd +endef + +define AVAHI_INSTALL_AUTOIPD_INIT_SYSV + $(INSTALL) -D -m 0755 package/avahi/S05avahi-setup.sh $(TARGET_DIR)/etc/init.d/S05avahi-setup.sh +endef + +AVAHI_POST_INSTALL_TARGET_HOOKS += AVAHI_INSTALL_AUTOIPD +endif + +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y) + +define AVAHI_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/avahi-daemon.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/avahi-daemon.service + + ln -fs ../../../../usr/lib/systemd/system/avahi-dnsconfd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/avahi-dnsconfd.service + + $(INSTALL) -D -m 644 package/avahi/avahi_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/avahi.conf +endef + +define AVAHI_INSTALL_DAEMON_INIT_SYSV + $(INSTALL) -D -m 0755 package/avahi/S50avahi-daemon $(TARGET_DIR)/etc/init.d/S50avahi-daemon +endef + +endif + +define AVAHI_INSTALL_INIT_SYSV + $(AVAHI_INSTALL_AUTOIPD_INIT_SYSV) + $(AVAHI_INSTALL_DAEMON_INIT_SYSV) +endef + +ifeq ($(BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY),y) +# applications expects to be able to #include +define AVAHI_STAGING_INSTALL_LIBDNSSD_LINK + ln -sf avahi-compat-libdns_sd/dns_sd.h \ + $(STAGING_DIR)/usr/include/dns_sd.h +endef + +AVAHI_POST_INSTALL_STAGING_HOOKS += AVAHI_STAGING_INSTALL_LIBDNSSD_LINK +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/avahi/avahi_tmpfiles.conf b/buildroot/package/avahi/avahi_tmpfiles.conf new file mode 100644 index 0000000..da23c14 --- /dev/null +++ b/buildroot/package/avahi/avahi_tmpfiles.conf @@ -0,0 +1 @@ +d /tmp/avahi-autoipd 0755 avahi avahi diff --git a/buildroot/package/avrdude/Config.in b/buildroot/package/avrdude/Config.in new file mode 100644 index 0000000..3757f17 --- /dev/null +++ b/buildroot/package/avrdude/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_AVRDUDE + bool "avrdude" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # elfutils + depends on !BR2_STATIC_LIBS # elfutils + depends on !BR2_bfin # elfutils + depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + select BR2_PACKAGE_NCURSES + help + avrdude is a programmer for Atmel AVR microcontrollers + this package provides a version with new linuxspi driver + + https://github.com/kcuzner/avrdude + +comment "avrdude needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) + depends on !BR2_bfin diff --git a/buildroot/package/avrdude/avrdude.hash b/buildroot/package/avrdude/avrdude.hash new file mode 100644 index 0000000..b203d4d --- /dev/null +++ b/buildroot/package/avrdude/avrdude.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 cfa97af7badc713c62306ab85d0e7a288b064bf72e698494f73cb16c5b2c659e avrdude-f8893ccf0aceeff67c45f95ae4e86bc7fbe342aa.tar.gz diff --git a/buildroot/package/avrdude/avrdude.mk b/buildroot/package/avrdude/avrdude.mk new file mode 100644 index 0000000..0e34076 --- /dev/null +++ b/buildroot/package/avrdude/avrdude.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# avrdude +# +################################################################################ + +AVRDUDE_VERSION = f8893ccf0aceeff67c45f95ae4e86bc7fbe342aa +AVRDUDE_SITE = $(call github,kcuzner,avrdude,$(AVRDUDE_VERSION)) +AVRDUDE_LICENSE = GPL-2.0+ +AVRDUDE_LICENSE_FILES = avrdude/COPYING +AVRDUDE_SUBDIR = avrdude +# Sources coming from git, without generated configure and Makefile.in +# files. +AVRDUDE_AUTORECONF = YES +AVRDUDE_CONF_OPTS = --enable-linuxgpio +AVRDUDE_DEPENDENCIES = elfutils libusb libusb-compat ncurses \ + host-flex host-bison +AVRDUDE_LICENSE = GPL-2.0+ +AVRDUDE_LICENSE_FILES = avrdude/COPYING + +ifeq ($(BR2_PACKAGE_LIBFTDI1),y) +AVRDUDE_DEPENDENCIES += libftdi1 +else ifeq ($(BR2_PACKAGE_LIBFTDI),y) +AVRDUDE_DEPENDENCIES += libftdi +endif + +# if /etc/avrdude.conf exists, the installation process creates a +# backup file, which we do not want in the context of Buildroot. +define AVRDUDE_REMOVE_BACKUP_FILE + $(RM) -f $(TARGET_DIR)/etc/avrdude.conf.bak +endef + +AVRDUDE_POST_INSTALL_TARGET_HOOKS += AVRDUDE_REMOVE_BACKUP_FILE + +$(eval $(autotools-package)) diff --git a/buildroot/package/axel/Config.in b/buildroot/package/axel/Config.in new file mode 100644 index 0000000..4507855 --- /dev/null +++ b/buildroot/package/axel/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_AXEL + bool "axel" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + HTTP/FTP download accelerator. + + https://github.com/axel-download-accelerator/axel/ + +comment "axel needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/axel/axel.hash b/buildroot/package/axel/axel.hash new file mode 100644 index 0000000..c317fb8 --- /dev/null +++ b/buildroot/package/axel/axel.hash @@ -0,0 +1 @@ +sha256 d34094eb63eaebc989f96eabdda091dcfb28e840bb8d274a5f216775941f59e4 axel-2.16.1.tar.xz diff --git a/buildroot/package/axel/axel.mk b/buildroot/package/axel/axel.mk new file mode 100644 index 0000000..129ea29 --- /dev/null +++ b/buildroot/package/axel/axel.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# axel +# +################################################################################ + +AXEL_VERSION = 2.16.1 +AXEL_SITE = https://github.com/axel-download-accelerator/axel/releases/download/v$(AXEL_VERSION) +AXEL_SOURCE = axel-$(AXEL_VERSION).tar.xz +AXEL_LICENSE = GPL-2.0+ +AXEL_LICENSE_FILES = COPYING +AXEL_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) + +# ac_cv_prog_cc_c99 is required for BR2_USE_WCHAR=n because the C99 test +# provided by autoconf relies on wchar_t. +AXEL_CONF_OPTS = \ + ac_cv_prog_cc_c99=-std=c99 \ + CFLAGS="$(TARGET_CFLAGS)" + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +AXEL_CONF_OPTS += --with-ssl +AXEL_DEPENDENCIES += openssl +else +AXEL_CONF_OPTS += --without-ssl +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/axfsutils/axfsutils.hash b/buildroot/package/axfsutils/axfsutils.hash new file mode 100644 index 0000000..3ef5c58 --- /dev/null +++ b/buildroot/package/axfsutils/axfsutils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7d8c0febaf6f104c2b179475ea1ee6d361688ad7fa4c98dfdf7395fcff2be685 axfsutils-384a1ea214c8cf8359faba00a12513ee7ae1a9f5.tar.gz diff --git a/buildroot/package/axfsutils/axfsutils.mk b/buildroot/package/axfsutils/axfsutils.mk new file mode 100644 index 0000000..8879221 --- /dev/null +++ b/buildroot/package/axfsutils/axfsutils.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# axfsutils +# +################################################################################ + +AXFSUTILS_VERSION = 384a1ea214c8cf8359faba00a12513ee7ae1a9f5 +AXFSUTILS_SITE = $(call github,jaredeh,axfs,$(AXFSUTILS_VERSION)) +AXFSUTILS_LICENSE = GPL-2.0 +AXFSUTILS_LICENSE_FILES = mkfs.axfs-legacy/COPYING +HOST_AXFSUTILS_DEPENDENCIES = host-zlib + +# The 'new' mkfs.axfs version requires GNUstep which is not a buildroot +# prerequisite. The 'legacy' one works just as well without that requirement. +define HOST_AXFSUTILS_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)/mkfs.axfs-legacy +endef + +define HOST_AXFSUTILS_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/mkfs.axfs-legacy/mkfs.axfs \ + $(HOST_DIR)/bin/mkfs.axfs +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/azmq/0001-Conditionally-disable-test-and-doc-builds.patch b/buildroot/package/azmq/0001-Conditionally-disable-test-and-doc-builds.patch new file mode 100644 index 0000000..98975d2 --- /dev/null +++ b/buildroot/package/azmq/0001-Conditionally-disable-test-and-doc-builds.patch @@ -0,0 +1,43 @@ +From d960f93fb52e373f76cfedbee5f4fb0c5276856a Mon Sep 17 00:00:00 2001 +From: RJ Ascani +Date: Thu, 20 Jul 2017 15:53:40 -0700 +Subject: [PATCH] Conditionally disable test and doc builds + +Signed-off-by: RJ Ascani +--- + CMakeLists.txt | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5b5b9cc..97006a4 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -49,7 +49,9 @@ include_directories(${Boost_INCLUDE_DIRS} + ${ZeroMQ_INCLUDE_DIRS} + ${PROJECT_SOURCE_DIR}) + +-enable_testing() ++if (BUILD_TESTING) ++ enable_testing() ++endif() + + macro(add_catch_test name) + if (TEST_REPORT_FORMAT) +@@ -59,8 +61,12 @@ macro(add_catch_test name) + endif() + endmacro() + +-add_subdirectory(test) +-add_subdirectory(doc) ++if (BUILD_TESTING) ++ add_subdirectory(test) ++endif() ++if (BUILD_DOC) ++ add_subdirectory(doc) ++endif() + + install(DIRECTORY ${PROJECT_SOURCE_DIR}/azmq + DESTINATION include) +-- +2.13.3 + diff --git a/buildroot/package/azmq/Config.in b/buildroot/package/azmq/Config.in new file mode 100644 index 0000000..eeafa2a --- /dev/null +++ b/buildroot/package/azmq/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_AZMQ + bool "azmq" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # boost-log + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_USE_WCHAR # boost + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + select BR2_PACKAGE_ZEROMQ + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_LOG + select BR2_PACKAGE_BOOST_RANDOM + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + This library provides Boost Asio style bindings for ZeroMQ. + + https://github.com/zeromq/azmq + +comment "azmq needs a toolchain w/ C++11, wchar and NTPL" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + && BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS_NPTL) + +comment "azmq needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/buildroot/package/azmq/azmq.hash b/buildroot/package/azmq/azmq.hash new file mode 100644 index 0000000..d3993f4 --- /dev/null +++ b/buildroot/package/azmq/azmq.hash @@ -0,0 +1,3 @@ +# Locally calculated +# https://github.com/zeromq/azmq/archive/v1.0.tar.gz +sha256 c204c731bcb7810ca3a2c5515e88974ef2ff8d0589e60a897dc238b369180e7b azmq-v1.0.tar.gz diff --git a/buildroot/package/azmq/azmq.mk b/buildroot/package/azmq/azmq.mk new file mode 100644 index 0000000..427ad0f --- /dev/null +++ b/buildroot/package/azmq/azmq.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# azmq +# +################################################################################ + +AZMQ_VERSION = v1.0 +AZMQ_SITE = $(call github,zeromq,azmq,$(AZMQ_VERSION)) +AZMQ_DEPENDENCIES = boost zeromq +AZMQ_LICENSE = BSL-1.0 +AZMQ_LICENSE_FILES = LICENSE-BOOST_1_0 + +# AZMQ is a header only library, so it does not need to be installed on the +# target. +AZMQ_INSTALL_STAGING = YES +AZMQ_INSTALL_TARGET = NO + +$(eval $(cmake-package)) diff --git a/buildroot/package/azure-iot-sdk-c/Config.in b/buildroot/package/azure-iot-sdk-c/Config.in new file mode 100644 index 0000000..c554d2f --- /dev/null +++ b/buildroot/package/azure-iot-sdk-c/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_AZURE_IOT_SDK_C + bool "azure-iot-sdk-c" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Microsoft Azure IoT Hub device SDK for C is used + to connect devices running C code to Azure IoT Hub. + + https://github.com/Azure/azure-iot-sdk-c + +comment "azure-iot-sdk-c needs a toolchain w/ C++ and NPTL" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk b/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk new file mode 100644 index 0000000..18c3e24 --- /dev/null +++ b/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# azure-iot-sdk-c +# +################################################################################ + +AZURE_IOT_SDK_C_VERSION = 2017-06-30 +AZURE_IOT_SDK_C_SITE = https://github.com/Azure/azure-iot-sdk-c +AZURE_IOT_SDK_C_SITE_METHOD = git +AZURE_IOT_SDK_C_GIT_SUBMODULES = YES +AZURE_IOT_SDK_C_LICENSE = MIT +AZURE_IOT_SDK_C_LICENSE_FILES = LICENSE +AZURE_IOT_SDK_C_INSTALL_STAGING = YES +AZURE_IOT_SDK_C_DEPENDENCIES = libxml2 openssl libcurl util-linux +AZURE_IOT_SDK_C_CONF_OPTS = -Dskip_samples=ON + +# The project only supports building one kind of library. +# Further the install target installs the wrong files, so we do it here: +ifeq ($(BR2_STATIC_LIBS),y) +AZURE_IOT_SDK_C_LIBS += uamqp/libuamqp.a c-utility/libaziotsharedutil.a \ + iothub_client/libiothub_client.a iothub_client/libiothub_client_mqtt_ws_transport.a \ + iothub_client/libiothub_client_amqp_ws_transport.a \ + iothub_client/libiothub_client_http_transport.a \ + iothub_client/libiothub_client_amqp_transport.a \ + iothub_client/libiothub_client_mqtt_transport.a \ + iothub_service_client/libiothub_service_client.a serializer/libserializer.a umqtt/libumqtt.a +else +AZURE_IOT_SDK_C_LIBS += uamqp/libuamqp.so c-utility/libaziotsharedutil.so \ + iothub_client/libiothub_client.so iothub_client/libiothub_client_mqtt_ws_transport.so \ + iothub_client/libiothub_client_amqp_ws_transport.so \ + iothub_client/libiothub_client_http_transport.so \ + iothub_client/libiothub_client_amqp_transport.so \ + iothub_client/libiothub_client_mqtt_transport.so \ + iothub_service_client/libiothub_service_client.so serializer/libserializer.so umqtt/libumqtt.so +endif + +define AZURE_IOT_SDK_C_INSTALL_STAGING_CMDS + $(foreach l,$(AZURE_IOT_SDK_C_LIBS), \ + $(INSTALL) -D -m 0755 $(@D)/$(l) $(STAGING_DIR)/usr/lib/ + ) + cp -a $(@D)/c-utility/inc/* $(STAGING_DIR)/usr/include/ + cp -a $(@D)/iothub_client/inc/* $(STAGING_DIR)/usr/include/ +endef + +define AZURE_IOT_SDK_C_INSTALL_TARGET_CMDS + $(foreach l,$(AZURE_IOT_SDK_C_LIBS), \ + $(INSTALL) -D -m 0755 $(@D)/$(l) $(TARGET_DIR)/usr/lib/ + ) +endef + +$(eval $(cmake-package)) diff --git a/buildroot/package/b43-firmware/Config.in b/buildroot/package/b43-firmware/Config.in new file mode 100644 index 0000000..7cef023 --- /dev/null +++ b/buildroot/package/b43-firmware/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_B43_FIRMWARE + bool "b43-firmware" + help + Firmware for the Broadcom Wifi devices supported by the b43 + kernel driver. + +if BR2_PACKAGE_B43_FIRMWARE + +choice + prompt "Kernel version" + default BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2 + help + Select the kernel version you're using. The b43 driver in + kernel >= 3.2 need a different firmware than the b43 drivers + from kernel < 3.2. + +config BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2 + bool ">= 3.2" + +config BR2_PACKAGE_B43_FIRMWARE_KERNEL_BEFORE_3_2 + bool "< 3.2" + +endchoice + +endif diff --git a/buildroot/package/b43-firmware/b43-firmware.hash b/buildroot/package/b43-firmware/b43-firmware.hash new file mode 100644 index 0000000..efc1a6c --- /dev/null +++ b/buildroot/package/b43-firmware/b43-firmware.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 f1e7067aac5b62b67b8b6e4c517990277804339ac16065eb13c731ff909ae46f broadcom-wl-5.100.138.tar.bz2 +sha256 26a8c370f48fc129d0731cfd751c36cae1419b0bc8ca35781126744e60eae009 broadcom-wl-5.10.56.27.3_mipsel.tar.bz2 diff --git a/buildroot/package/b43-firmware/b43-firmware.mk b/buildroot/package/b43-firmware/b43-firmware.mk new file mode 100644 index 0000000..8e9e877 --- /dev/null +++ b/buildroot/package/b43-firmware/b43-firmware.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# b43-firmware +# +################################################################################ + +ifeq ($(BR2_PACKAGE_B43_FIRMWARE_KERNEL_AFTER_3_2),y) +B43_FIRMWARE_VERSION = 5.100.138 +B43_FIRMWARE_SITE = http://www.lwfinger.com/b43-firmware +B43_FIRMWARE_SOURCE = broadcom-wl-$(B43_FIRMWARE_VERSION).tar.bz2 +B43_FIRMWARE_DRIVER_FILE = linux/wl_apsta.o +else ifeq ($(BR2_PACKAGE_B43_FIRMWARE_KERNEL_BEFORE_3_2),y) +B43_FIRMWARE_VERSION = 5.10.56.27.3 +B43_FIRMWARE_SITE = http://mirror2.openwrt.org/sources +B43_FIRMWARE_SOURCE = broadcom-wl-$(B43_FIRMWARE_VERSION)_mipsel.tar.bz2 +B43_FIRMWARE_DRIVER_FILE = driver/wl_apsta/wl_prebuilt.o +endif + +B43_FIRMWARE_LICENSE = PROPRIETARY +B43_FIRMWARE_REDISTRIBUTE = NO + +B43_FIRMWARE_DEPENDENCIES = host-b43-fwcutter + +define B43_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/lib/firmware/ + $(HOST_DIR)/bin/b43-fwcutter -w $(TARGET_DIR)/lib/firmware/ $(@D)/$(B43_FIRMWARE_DRIVER_FILE) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/b43-fwcutter/b43-fwcutter.hash b/buildroot/package/b43-fwcutter/b43-fwcutter.hash new file mode 100644 index 0000000..3181c76 --- /dev/null +++ b/buildroot/package/b43-fwcutter/b43-fwcutter.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 4c6a53d1f5d76b8aa224d294bee47726b1477f35327f4e23e8cb799865e0f6eb b43-fwcutter-015.tar.bz2 diff --git a/buildroot/package/b43-fwcutter/b43-fwcutter.mk b/buildroot/package/b43-fwcutter/b43-fwcutter.mk new file mode 100644 index 0000000..91ba3dc --- /dev/null +++ b/buildroot/package/b43-fwcutter/b43-fwcutter.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# b43-fwcutter +# +################################################################################ + +B43_FWCUTTER_VERSION = 015 +B43_FWCUTTER_SITE = http://bues.ch/b43/fwcutter +B43_FWCUTTER_SOURCE = b43-fwcutter-$(B43_FWCUTTER_VERSION).tar.bz2 +B43_FWCUTTER_LICENSE = BSD-2-Clause +B43_FWCUTTER_LICENSE_FILES = COPYING + +define HOST_B43_FWCUTTER_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_B43_FWCUTTER_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/b43-fwcutter $(HOST_DIR)/bin/b43-fwcutter +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/babeld/0001-kernel_netlink.c-don-t-include-linux-if_bridge.h.patch b/buildroot/package/babeld/0001-kernel_netlink.c-don-t-include-linux-if_bridge.h.patch new file mode 100644 index 0000000..efadd20 --- /dev/null +++ b/buildroot/package/babeld/0001-kernel_netlink.c-don-t-include-linux-if_bridge.h.patch @@ -0,0 +1,78 @@ +From 723bbfd8bdb76012a3da937c7499cf3c0b111dd5 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 20 Aug 2016 11:13:56 +0200 +Subject: [PATCH] kernel_netlink.c: don't include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Including causes the inclusion of , +which defines 'struct in6_addr', also defined in , causing +a build failure with the musl C library: + +In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_bridge.h:18:0, + from kernel_netlink.c:42, + from kernel.c:31: +/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:32:8: error: redefinition of ‘struct in6_addr’ + struct in6_addr { + ^ +In file included from kernel_netlink.c:33:0, + from kernel.c:31: +/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:23:8: note: originally defined here + struct in6_addr { + ^ +In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_bridge.h:18:0, + from kernel_netlink.c:42, + from kernel.c:31: +/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:49:8: error: redefinition of ‘struct sockaddr_in6’ + struct sockaddr_in6 { + ^ +In file included from kernel_netlink.c:33:0, + from kernel.c:31: +/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:34:8: note: originally defined here + struct sockaddr_in6 { + ^ +In file included from /home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/if_bridge.h:18:0, + from kernel_netlink.c:42, + from kernel.c:31: +/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/linux/in6.h:59:8: error: redefinition of ‘struct ipv6_mreq’ + struct ipv6_mreq { + ^ +In file included from kernel_netlink.c:33:0, + from kernel.c:31: +/home/thomas/projets/buildroot/output/host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:42:8: note: originally defined here + struct ipv6_mreq { + ^ + +In order to address this, this patch removes the +inclusion, and instead defines BRCTL_GET_BRIDGES to the appropriate +value if it's not provided by the C library. + +Signed-off-by: Thomas Petazzoni +--- + kernel_netlink.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/kernel_netlink.c b/kernel_netlink.c +index 4eadc39..1a5b3dd 100644 +--- a/kernel_netlink.c ++++ b/kernel_netlink.c +@@ -39,10 +39,14 @@ THE SOFTWARE. + #include + #include + #include +-#include + #include + #include + ++/* From */ ++#ifndef BRCTL_GET_BRIDGES ++#define BRCTL_GET_BRIDGES 1 ++#endif ++ + #if(__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 5) + #define RTA_TABLE 15 + #endif +-- +2.7.4 + diff --git a/buildroot/package/babeld/Config.in b/buildroot/package/babeld/Config.in new file mode 100644 index 0000000..c7010e1 --- /dev/null +++ b/buildroot/package/babeld/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BABELD + bool "babeld" + depends on BR2_USE_MMU # fork() + help + Babel is a loop-avoiding distance-vector routing protocol for + IPv6 and IPv4 with fast convergence properties. + + http://www.pps.univ-paris-diderot.fr/~jch/software/babel/ diff --git a/buildroot/package/babeld/S50babeld b/buildroot/package/babeld/S50babeld new file mode 100644 index 0000000..c75b4c3 --- /dev/null +++ b/buildroot/package/babeld/S50babeld @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Starts babeld. +# + +# Allow a few customizations from a config file +test -r /etc/default/babeld && . /etc/default/babeld + +start() { + printf "Starting babeld: " + start-stop-daemon -S -q -p /run/babeld.pid \ + --exec /usr/sbin/babeld -- $DAEMON_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping babeld: " + start-stop-daemon -K -q -p /run/babeld.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/babeld/babeld.hash b/buildroot/package/babeld/babeld.hash new file mode 100644 index 0000000..0ee64c4 --- /dev/null +++ b/buildroot/package/babeld/babeld.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2c955e7d4ad971da1e860e5cedbaf1dd79903468ff6488b3f67102b2a8d087b6 babeld-1.7.1.tar.gz diff --git a/buildroot/package/babeld/babeld.mk b/buildroot/package/babeld/babeld.mk new file mode 100644 index 0000000..d718237 --- /dev/null +++ b/buildroot/package/babeld/babeld.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# babeld +# +################################################################################ + +BABELD_VERSION = 1.7.1 +BABELD_SITE = http://www.pps.univ-paris-diderot.fr/~jch/software/files +BABELD_LICENSE = MIT +BABELD_LICENSE_FILES = LICENCE + +define BABELD_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define BABELD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/babeld $(TARGET_DIR)/usr/sbin/babeld +endef + +define BABELD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/babeld/S50babeld \ + $(TARGET_DIR)/etc/init.d/S50babeld +endef + +define BABELD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/babeld/babeld.service \ + $(TARGET_DIR)/usr/lib/systemd/system/babeld.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/babeld.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/babeld.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/babeld/babeld.service b/buildroot/package/babeld/babeld.service new file mode 100644 index 0000000..abe72a8 --- /dev/null +++ b/buildroot/package/babeld/babeld.service @@ -0,0 +1,10 @@ +[Unit] +Description=Babel daemon + +[Service] +EnvironmentFile=-/etc/default/babeld +ExecStart=/usr/sbin/babeld $DAEMON_ARGS +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/bandwidthd/Config.in b/buildroot/package/bandwidthd/Config.in new file mode 100644 index 0000000..a503da4 --- /dev/null +++ b/buildroot/package/bandwidthd/Config.in @@ -0,0 +1,53 @@ +config BR2_PACKAGE_BANDWIDTHD + bool "bandwidthd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_GD + help + BandwidthD - Bandwidth monitoring + + Provides a method to measure the bandwidth that travels + through the machine, grouped by subnet and IP. This + information can be stored locally in /var/lib/bandwidthd and + can be configured to generate static HTML pages which can be + hosted by a web server. + + It is highly recommended that the target has some way of + retaining the time between reboots. (e.g. NTP on boot or an + RTC) + + It is suggested to use sqlite for logfile storage but works + fine without, and can be completely ignored if the + postgresql portion is used. + + As upstream is no longer actively maintained, a fork is + available on github that works on making BandwidthD's build + process more compatible with buildroot's. + + Upstream: http://bandwidthd.sourceforge.net/ + Github fork: http://github.com/nroach44/bandwidthd + +if BR2_PACKAGE_BANDWIDTHD + +config BR2_PACKAGE_BANDWIDTHD_POSTGRESQL + bool "enable postgresql log target support" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_POSTGRESQL + help + Enable support for logging the bandwidthd data to a remote + (or local) postgresql server. This data can then be viewed + through a php site. See README in the source code + (github.com/nroach44/bandwidthd) for more information. + +comment "postgresql support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_BANDWIDTHD_SQLITE3 + bool "enable sqlite3 log storage" + select BR2_PACKAGE_SQLITE + help + Enable support for storing the aggregated data in an sqlite + db instead of a plain text file. + +endif diff --git a/buildroot/package/bandwidthd/bandwidthd.hash b/buildroot/package/bandwidthd/bandwidthd.hash new file mode 100644 index 0000000..248f9ff --- /dev/null +++ b/buildroot/package/bandwidthd/bandwidthd.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0270d0def6cc53c8d47d59a9dd093d51fbca1620adeef85c15e35a32010e26ab bandwidthd-v2.0.1-auto-r11.tar.gz diff --git a/buildroot/package/bandwidthd/bandwidthd.mk b/buildroot/package/bandwidthd/bandwidthd.mk new file mode 100644 index 0000000..2773490 --- /dev/null +++ b/buildroot/package/bandwidthd/bandwidthd.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# bandwidthd +# +################################################################################ + +BANDWIDTHD_VERSION = v2.0.1-auto-r11 +BANDWIDTHD_SITE = $(call github,nroach44,bandwidthd,$(BANDWIDTHD_VERSION)) + +# Specified as "any version of the GPL that is current as of your +# download" by upstream. +BANDWIDTHD_LICENSE = GPL + +BANDWIDTHD_DEPENDENCIES = gd libpng libpcap host-pkgconf + +BANDWIDTHD_AUTORECONF = YES + +BANDWIDTHD_CONF_OPTS += --with-pcap-config=$(STAGING_DIR)/usr/bin/pcap-config + +ifeq ($(BR2_PACKAGE_BANDWIDTHD_POSTGRESQL),y) +BANDWIDTHD_DEPENDENCIES += postgresql +BANDWIDTHD_CONF_OPTS += --with-postgresql-logging=true +else +BANDWIDTHD_CONF_OPTS += --with-postgresql-logging=false +endif + +ifeq ($(BR2_PACKAGE_BANDWIDTHD_SQLITE3),y) +BANDWIDTHD_DEPENDENCIES += sqlite +BANDWIDTHD_CONF_OPTS += --with-sqlite-storage=true +else +BANDWIDTHD_CONF_OPTS += --with-sqlite-storage=false +endif + +define BANDWIDTHD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/bandwidthd/bandwidthd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/bandwidthd.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -sf /usr/lib/systemd/system/bandwidthd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/bandwidthd.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/bandwidthd/bandwidthd.service b/buildroot/package/bandwidthd/bandwidthd.service new file mode 100644 index 0000000..9c03d42 --- /dev/null +++ b/buildroot/package/bandwidthd/bandwidthd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Bandwidth usage monitor and reporter +After=network.target + +[Service] +Type=forking +ExecStart=/usr/bin/bandwidthd +PIDFile=/var/run/bandwidthd.pid + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/bash/Config.in b/buildroot/package/bash/Config.in new file mode 100644 index 0000000..5a9ebb8 --- /dev/null +++ b/buildroot/package/bash/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BASH + bool "bash" + # uses fork() + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + The standard GNU Bourne again shell. + + http://tiswww.case.edu/php/chet/bash/bashtop.html diff --git a/buildroot/package/bash/bash.hash b/buildroot/package/bash/bash.hash new file mode 100644 index 0000000..4e2e48f --- /dev/null +++ b/buildroot/package/bash/bash.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature from +# http://ftp.gnu.org/gnu/bash/bash-4.4.12.tar.gz.sig +sha256 57d8432be54541531a496fd4904fdc08c12542f43605a9202594fa5d5f9f2331 bash-4.4.12.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/bash/bash.mk b/buildroot/package/bash/bash.mk new file mode 100644 index 0000000..6e58f0f --- /dev/null +++ b/buildroot/package/bash/bash.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# bash +# +################################################################################ + +BASH_VERSION = 4.4.12 +BASH_SITE = $(BR2_GNU_MIRROR)/bash +# Build after since bash is better than busybox shells +BASH_DEPENDENCIES = ncurses readline host-bison \ + $(if $(BR2_PACKAGE_BUSYBOX),busybox) +BASH_CONF_OPTS = --with-installed-readline --without-bash-malloc +BASH_LICENSE = GPL-3.0+ +BASH_LICENSE_FILES = COPYING + +BASH_CONF_ENV += \ + ac_cv_rl_prefix="$(STAGING_DIR)" \ + ac_cv_rl_version="$(READLINE_VERSION)" \ + bash_cv_getcwd_malloc=yes \ + bash_cv_job_control_missing=present \ + bash_cv_sys_named_pipes=present \ + bash_cv_func_sigsetjmp=present \ + bash_cv_printf_a_format=yes + +# The static build needs some trickery +ifeq ($(BR2_STATIC_LIBS),y) +BASH_CONF_OPTS += --enable-static-link +BASH_CONF_ENV += SHOBJ_STATUS=unsupported +# bash wants to redefine the getenv() function. To check whether this is +# possible, AC_TRY_RUN is used which is not possible in +# cross-compilation. +# On uClibc, redefining getenv is not possible; on glibc and musl it is. +# Related: +# http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +BASH_CONF_ENV += bash_cv_getenv_redef=no +else +BASH_CONF_ENV += bash_cv_getenv_redef=yes +endif +endif + +define BASH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) exec_prefix=/ install + rm -f $(TARGET_DIR)/bin/bashbug +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/batctl/Config.in b/buildroot/package/batctl/Config.in new file mode 100644 index 0000000..2557418 --- /dev/null +++ b/buildroot/package/batctl/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_BATCTL + bool "batctl" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + Batctl is the configuration and debugging tool for batman-adv. + + http://www.open-mesh.org/projects/batman-adv/wiki/Using-batctl + +comment "batctl needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/batctl/batctl.hash b/buildroot/package/batctl/batctl.hash new file mode 100644 index 0000000..257e1ff --- /dev/null +++ b/buildroot/package/batctl/batctl.hash @@ -0,0 +1,4 @@ +# From https://downloads.open-mesh.org/batman/releases/batman-adv-2017.0/batctl-2017.0.tar.gz.sha1 +sha1 0fbc329b56b465fa4f674cfecd7348144609f8e5 batctl-2017.0.tar.gz +# Locally calculated +sha256 c0bb1127d6070b46abeb8d6a63d1150d71fa85f87f9a846873b649a21934c686 batctl-2017.0.tar.gz diff --git a/buildroot/package/batctl/batctl.mk b/buildroot/package/batctl/batctl.mk new file mode 100644 index 0000000..122263e --- /dev/null +++ b/buildroot/package/batctl/batctl.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# batctl +# +################################################################################ + +BATCTL_VERSION = 2017.0 +BATCTL_SITE = http://downloads.open-mesh.org/batman/releases/batman-adv-$(BATCTL_VERSION) +BATCTL_LICENSE = GPL-2.0 +BATCTL_DEPENDENCIES = libnl host-pkgconf + +define BATCTL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) all +endef + +define BATCTL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/batman-adv/Config.in b/buildroot/package/batman-adv/Config.in new file mode 100644 index 0000000..9d3d796 --- /dev/null +++ b/buildroot/package/batman-adv/Config.in @@ -0,0 +1,36 @@ +comment "batman-adv needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_BATMAN_ADV + bool "batman-adv" + depends on BR2_LINUX_KERNEL + help + batman-adv mesh networking kernel module + + https://www.open-mesh.org/projects/batman-adv/ + +if BR2_PACKAGE_BATMAN_ADV + +config BR2_PACKAGE_BATMAN_ADV_DEBUG + bool "enable debugging" + help + Enables B.A.T.M.A.N. debugging. + +config BR2_PACKAGE_BATMAN_ADV_NC + bool "enable network coding" + help + Enables B.A.T.M.A.N. network coding. + Note: this requires promiscuous mode on ALL nodes! + + https://www.open-mesh.org/projects/batman-adv/wiki/NetworkCoding + +config BR2_PACKAGE_BATMAN_ADV_BATMAN_V + bool "enable B.A.T.M.A.N. V protocol (experimental)" + help + Enables B.A.T.M.A.N. V network protocol. + This is the next-gen protocol and is experimental at this + time. + + https://www.open-mesh.org/projects/batman-adv/wiki/BATMAN_V + +endif diff --git a/buildroot/package/batman-adv/batman-adv.hash b/buildroot/package/batman-adv/batman-adv.hash new file mode 100644 index 0000000..0599b91 --- /dev/null +++ b/buildroot/package/batman-adv/batman-adv.hash @@ -0,0 +1,3 @@ +# From https://downloads.open-mesh.org/batman/stable/sources/batman-adv/batman-adv-2017.0.1.tar.gz.{md5,sha1} +md5 ce14f7f1bbc037691bbbc611e16f0360 batman-adv-2017.0.1.tar.gz +sha1 593cecc015b876caa5b21fbb4d0f6186742a1abb batman-adv-2017.0.1.tar.gz diff --git a/buildroot/package/batman-adv/batman-adv.mk b/buildroot/package/batman-adv/batman-adv.mk new file mode 100644 index 0000000..5179918 --- /dev/null +++ b/buildroot/package/batman-adv/batman-adv.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# batman-adv +# +################################################################################ + +BATMAN_ADV_VERSION = 2017.0.1 +BATMAN_ADV_SITE = https://downloads.open-mesh.org/batman/stable/sources/batman-adv +BATMAN_ADV_LICENSE = GPL-2.0 + +# Bridge Loop Avoidance, Distributed Arp Table are always enabled +BATMAN_ADV_CFLAGS = \ + -I$(@D)/compat-include/ \ + -include $(@D)/compat.h \ + -DBATADV_SOURCE_VERSION=\"\\\"$(BATMAN_ADV_VERSION)\\\"\" +BATMAN_ADV_MODULE_MAKE_OPTS = \ + KVER=$(LINUX_VERSION_PROBED) \ + INSTALL_MOD_DIR=updates/net/batman-adv \ + NOSTDINC_FLAGS="$(BATMAN_ADV_CFLAGS)" \ + CONFIG_BATMAN_ADV=m \ + CONFIG_BATMAN_ADV_BATMAN_V=$(BR2_PACKAGE_BATMAN_ADV_BATMAN_V) \ + CONFIG_BATMAN_ADV_BLA=y \ + CONFIG_BATMAN_ADV_DAT=y \ + CONFIG_BATMAN_ADV_DEBUG=$(BR2_PACKAGE_BATMAN_ADV_DEBUG) \ + CONFIG_BATMAN_ADV_MCAST=y \ + CONFIG_BATMAN_ADV_NC=$(BR2_PACKAGE_BATMAN_ADV_NC) +BATMAN_ADV_MODULE_SUBDIRS = net/batman-adv + +define BATMAN_ADV_CONFIGURE_CMDS + $(BATMAN_ADV_MODULE_MAKE_OPTS) $(@D)/gen-compat-autoconf.sh $(@D)/compat-autoconf.h +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/bc/01_array_initialize.patch b/buildroot/package/bc/01_array_initialize.patch new file mode 100644 index 0000000..9520d82 --- /dev/null +++ b/buildroot/package/bc/01_array_initialize.patch @@ -0,0 +1,20 @@ +Description: Fix array initialization bug +Author: Phil Nelson +Origin: upstream +Bug-Debian: http://bugs.debian.org/586969 +Bug-Debian: http://bugs.debian.org/671513 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +Index: bc/bc/storage.c +=================================================================== +--- bc.orig/bc/storage.c 2013-06-02 20:34:09.401273864 -0400 ++++ bc/bc/storage.c 2013-06-02 20:34:11.000000000 -0400 +@@ -179,7 +179,7 @@ + + + /* Initialize the new elements. */ +- for (; indx < v_count; indx++) ++ for (; indx < a_count; indx++) + arrays[indx] = NULL; + + /* Free the old elements. */ diff --git a/buildroot/package/bc/02_notice_read_write_errors.patch b/buildroot/package/bc/02_notice_read_write_errors.patch new file mode 100644 index 0000000..73e6ec9 --- /dev/null +++ b/buildroot/package/bc/02_notice_read_write_errors.patch @@ -0,0 +1,708 @@ +Description: notice read and write errors on input and output + Quoting from the bug report: + +bc (1.06-19ubuntu1) dapper; urgency=low + + + + * Make dc notice read and write errors on its input and output. + + I grepped for mentions of the strings `putc', `print', `getc', `FILE', + + `stdin', `stdout' and `stderr' and added calls to new error-checking + + functions unless it was clear from the immediately-surrounding code + + that the program was exiting nonzero, or would exit nonzero if the + + call failed. I ignored hits in lib/getopt*, which seems to + + pervasively ignore write errors when printing usage messages, in the + + hope that these were correct. I _think_ I got them all. -iwj. + + + + -- Ian Jackson Tue, 4 Apr 2006 17:21:02 +0100 +Author: Ian Jackson +Origin: other +Bug-Debian: http://bugs.debian.org/488735 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +diff --git a/bc/execute.c b/bc/execute.c +index e4e8ef7..8787048 100644 +--- a/bc/execute.c ++++ b/bc/execute.c +@@ -108,6 +108,7 @@ execute () + } + out_char ('\n'); + } ++ checkferror_output(stdout); + } + #endif + +@@ -222,6 +223,7 @@ execute () + } + } + fflush (stdout); ++ checkferror_output(stdout); + break; + + case 'R' : /* Return from function */ +@@ -257,6 +259,7 @@ execute () + if (inst == 'W') out_char ('\n'); + store_var (4); /* Special variable "last". */ + fflush (stdout); ++ checkferror_output(stdout); + pop (); + break; + +@@ -338,6 +341,7 @@ execute () + case 'w' : /* Write a string to the output. */ + while ((ch = byte(&pc)) != '"') out_schar (ch); + fflush (stdout); ++ checkferror_output(stdout); + break; + + case 'x' : /* Exchange Top of Stack with the one under the tos. */ +@@ -545,7 +549,10 @@ execute () + { + signal (SIGINT, use_quit); + if (had_sigint) +- printf ("\ninterrupted execution.\n"); ++ { ++ printf ("\ninterrupted execution.\n"); ++ checkferror_output(stdout); ++ } + } + } + +@@ -580,6 +587,7 @@ input_char () + out_col = 0; /* Saw a new line */ + } + } ++ checkferror_input(stdin); + + /* Classify and preprocess the input character. */ + if (isdigit(in_ch)) +diff --git a/bc/load.c b/bc/load.c +index 1035198..4039e86 100644 +--- a/bc/load.c ++++ b/bc/load.c +@@ -217,6 +217,7 @@ load_code (code) + if (label_no > 65535L) + { /* Better message? */ + fprintf (stderr,"Program too big.\n"); ++ checkferror_output(stderr); + exit(1); + } + addbyte ( (char) (label_no & 0xFF)); +diff --git a/bc/main.c b/bc/main.c +index 9a2461e..3ae427d 100644 +--- a/bc/main.c ++++ b/bc/main.c +@@ -358,6 +358,9 @@ use_quit (sig) + errno = save; + #else + write (1, "\n(interrupt) Exiting bc.\n", 26); ++#ifdef READLINE ++ rl_initialize (); /* Clear readline buffer */ ++#endif + #if defined(LIBEDIT) + if (edit != NULL) + el_end(edit); +diff --git a/bc/sbc.y b/bc/sbc.y +index 0ded29e..6fcc1fa 100644 +--- a/bc/sbc.y ++++ b/bc/sbc.y +@@ -86,7 +86,9 @@ program : /* empty */ + if (interactive && !quiet) + { + show_bc_version (); ++ checkferror_output(stdout); + welcome (); ++ checkferror_output(stdout); + } + } + | program input_item +diff --git a/bc/scan.c b/bc/scan.c +index 1f78ec2..2b5eeb4 100644 +--- a/bc/scan.c ++++ b/bc/scan.c +@@ -799,6 +799,7 @@ bcel_input (buf, result, max) + if (bcel_len != 0) + history (hist, &histev, H_ENTER, bcel_line); + fflush (stdout); ++ checkferror_output(stdout); + } + + if (bcel_len <= max) +@@ -874,6 +875,7 @@ rl_input (buf, result, max) + add_history (rl_line); + rl_line[rl_len-1] = '\n'; + fflush (stdout); ++ checkferror_output(stdout); + } + + if (rl_len <= max) +diff --git a/bc/scan.l b/bc/scan.l +index 841c3df..16cd62e 100644 +--- a/bc/scan.l ++++ b/bc/scan.l +@@ -111,6 +111,7 @@ bcel_input (buf, result, max) + if (bcel_len != 0) + history (hist, &histev, H_ENTER, bcel_line); + fflush (stdout); ++ checkferror_output(stdout); + } + + if (bcel_len <= max) +@@ -186,6 +187,7 @@ rl_input (buf, result, max) + add_history (rl_line); + rl_line[rl_len-1] = '\n'; + fflush (stdout); ++ checkferror_output(stdout); + } + + if (rl_len <= max) +@@ -310,6 +312,7 @@ limits return(Limits); + if (c == EOF) + { + fprintf (stderr,"EOF encountered in a comment.\n"); ++ checkferror_output(stderr); + break; + } + } +diff --git a/bc/storage.c b/bc/storage.c +index 699729a..37b4c6c 100644 +--- a/bc/storage.c ++++ b/bc/storage.c +@@ -99,6 +99,7 @@ more_functions (VOID) + { + f = &functions[indx]; + f->f_defined = FALSE; ++ f->f_void = FALSE; + f->f_body = (char *) bc_malloc (BC_START_SIZE); + f->f_body_size = BC_START_SIZE; + f->f_code_size = 0; +diff --git a/bc/util.c b/bc/util.c +index 30beaf9..669235f 100644 +--- a/bc/util.c ++++ b/bc/util.c +@@ -260,9 +260,10 @@ init_gen () + continue_label = 0; + next_label = 1; + out_count = 2; +- if (compile_only) ++ if (compile_only) { + printf ("@i"); +- else ++ checkferror_output(stdout); ++ } else + init_load (); + had_error = FALSE; + did_gen = FALSE; +@@ -286,6 +287,7 @@ generate (str) + printf ("\n"); + out_count = 0; + } ++ checkferror_output(stdout); + } + else + load_code (str); +@@ -303,6 +305,7 @@ run_code() + if (compile_only) + { + printf ("@r\n"); ++ checkferror_output(stdout); + out_count = 0; + } + else +@@ -341,6 +344,7 @@ out_char (ch) + } + putchar (ch); + } ++ checkferror_output(stdout); + } + + /* Output routines: Write a character CH to the standard output. +@@ -371,6 +375,7 @@ out_schar (ch) + } + putchar (ch); + } ++ checkferror_output(stdout); + } + + +@@ -657,6 +662,7 @@ limits() + #ifdef OLD_EQ_OP + printf ("Old assignment operatiors are valid. (=-, =+, ...)\n"); + #endif ++ checkferror_output(stdout); + } + + /* bc_malloc will check the return value so all other places do not +@@ -721,6 +727,7 @@ yyerror (str, va_alist) + fprintf (stderr,"%s %d: ",name,line_no); + vfprintf (stderr, str, args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + had_error = TRUE; + va_end (args); + } +@@ -761,6 +768,7 @@ warn (mesg, va_alist) + fprintf (stderr,"%s %d: Error: ",name,line_no); + vfprintf (stderr, mesg, args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + had_error = TRUE; + } + else +@@ -773,6 +781,7 @@ warn (mesg, va_alist) + fprintf (stderr,"%s %d: (Warning) ",name,line_no); + vfprintf (stderr, mesg, args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } + va_end (args); + } +@@ -807,6 +816,7 @@ rt_error (mesg, va_alist) + va_end (args); + + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + runtime_error = TRUE; + } + +@@ -843,4 +853,5 @@ rt_warn (mesg, va_alist) + va_end (args); + + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } +diff --git a/dc/dc.c b/dc/dc.c +index e03f094..0faf03a 100644 +--- a/dc/dc.c ++++ b/dc/dc.c +@@ -61,6 +61,7 @@ static void + bug_report_info DC_DECLVOID() + { + printf("Email bug reports to: bug-dc@gnu.org .\n"); ++ checkferror_output(stdout); + } + + static void +@@ -71,6 +72,7 @@ show_version DC_DECLVOID() + This is free software; see the source for copying conditions. There is NO\n\ + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n\ + to the extent permitted by law.\n", DC_COPYRIGHT); ++ checkferror_output(stdout); + } + + /* your generic usage function */ +@@ -87,6 +89,7 @@ Usage: %s [OPTION] [file ...]\n\ + \n\ + ", progname); + bug_report_info(); ++ checkferror_output(f); + } + + /* returns a pointer to one past the last occurance of c in s, +diff --git a/dc/eval.c b/dc/eval.c +index 4af7200..153d331 100644 +--- a/dc/eval.c ++++ b/dc/eval.c +@@ -94,12 +94,15 @@ static int input_pushback; + static int + input_fil DC_DECLVOID() + { ++ int c; + if (input_pushback != EOF){ +- int c = input_pushback; ++ c = input_pushback; + input_pushback = EOF; + return c; + } +- return getc(input_fil_fp); ++ c = getc(input_fil_fp); ++ checkferror_input(input_fil_fp); ++ return c; + } + + /* passed as an argument to dc_getnum */ +@@ -298,11 +301,13 @@ dc_func DC_DECLARG((c, peekc, negcmp)) + tmpint = dc_num2int(datum.v.number, DC_TOSS); + if (2 <= tmpint && tmpint <= DC_IBASE_MAX) + dc_ibase = tmpint; +- else ++ else { + fprintf(stderr, + "%s: input base must be a number \ + between 2 and %d (inclusive)\n", + progname, DC_IBASE_MAX); ++ checkferror_output(stderr); ++ } + } + break; + case 'k': /* set scale to value on top of stack */ +@@ -310,11 +315,12 @@ between 2 and %d (inclusive)\n", + tmpint = -1; + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); +- if ( ! (tmpint >= 0) ) ++ if ( ! (tmpint >= 0) ) { + fprintf(stderr, + "%s: scale must be a nonnegative number\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_scale = tmpint; + } + break; +@@ -338,11 +344,12 @@ between 2 and %d (inclusive)\n", + tmpint = 0; + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); +- if ( ! (tmpint > 1) ) ++ if ( ! (tmpint > 1) ) { + fprintf(stderr, + "%s: output base must be a number greater than 1\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_obase = tmpint; + } + break; +@@ -383,6 +390,7 @@ between 2 and %d (inclusive)\n", + fprintf(stderr, + "%s: square root of nonnumeric attempted\n", + progname); ++ checkferror_output(stderr); + }else if (dc_sqrt(datum.v.number, dc_scale, &tmpnum) == DC_SUCCESS){ + dc_free_num(&datum.v.number); + datum.v.number = tmpnum; +@@ -444,6 +452,7 @@ between 2 and %d (inclusive)\n", + fprintf(stderr, + "%s: Q command requires a number >= 1\n", + progname); ++ checkferror_output(stderr); + } + break; + #if 0 +@@ -489,11 +498,12 @@ between 2 and %d (inclusive)\n", + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); + if (dc_pop(&datum) == DC_SUCCESS){ +- if (tmpint < 0) ++ if (tmpint < 0) { + fprintf(stderr, + "%s: array index must be a nonnegative integer\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_array_set(peekc, tmpint, datum); + } + } +@@ -505,17 +515,19 @@ between 2 and %d (inclusive)\n", + tmpint = -1; + if (datum.dc_type == DC_NUMBER) + tmpint = dc_num2int(datum.v.number, DC_TOSS); +- if (tmpint < 0) ++ if (tmpint < 0) { + fprintf(stderr, + "%s: array index must be a nonnegative integer\n", + progname); +- else ++ checkferror_output(stderr); ++ } else + dc_push(dc_array_get(peekc, tmpint)); + } + return DC_EATONE; + + default: /* What did that user mean? */ + fprintf(stderr, "%s: ", progname); ++ checkferror_output(stderr); + dc_show_id(stdout, c, " unimplemented\n"); + break; + } +@@ -544,6 +556,7 @@ dc_evalstr DC_DECLARG((string)) + fprintf(stderr, + "%s: eval called with non-string argument\n", + progname); ++ checkferror_output(stderr); + return DC_OKAY; + } + interrupt_seen = 0; +@@ -640,6 +653,7 @@ dc_evalstr DC_DECLARG((string)) + return DC_FAIL; + } + fprintf(stderr, "%s: unexpected EOS\n", progname); ++ checkferror_output(stderr); + return DC_OKAY; + } + } +@@ -665,6 +679,7 @@ dc_evalfile DC_DECLARG((fp)) + stdin_lookahead = EOF; + for (c=getc(fp); c!=EOF; c=peekc){ + peekc = getc(fp); ++ checkferror_input(stdin); + /* + * The following if() is the only place where ``stdin_lookahead'' + * might be set to other than EOF: +@@ -716,6 +731,7 @@ dc_evalfile DC_DECLARG((fp)) + return DC_SUCCESS; + fprintf(stderr, "%s: Q command argument exceeded \ + string execution depth\n", progname); ++ checkferror_output(stderr); + } + }else{ + dc_garbage("at top of stack", -1); +@@ -728,8 +744,11 @@ string execution depth\n", progname); + fprintf(stderr, + "%s: Q command argument exceeded string execution depth\n", + progname); +- if (stdin_lookahead != peekc && fp == stdin) ++ checkferror_output(stderr); ++ if (stdin_lookahead != peekc && fp == stdin) { + peekc = getc(fp); ++ checkferror_input(stdin); ++ } + break; + + case DC_INT: +@@ -771,6 +790,7 @@ string execution depth\n", progname); + if (ferror(fp)) + goto error_fail; + fprintf(stderr, "%s: unexpected EOF\n", progname); ++ checkferror_output(stderr); + return DC_FAIL; + } + } +diff --git a/dc/misc.c b/dc/misc.c +index f2388b0..1be56fe 100644 +--- a/dc/misc.c ++++ b/dc/misc.c +@@ -91,6 +91,7 @@ dc_show_id DC_DECLARG((fp, id, suffix)) + fprintf(fp, "'%c' (%#o)%s", (unsigned int) id, id, suffix); + else + fprintf(fp, "%#o%s", (unsigned int) id, suffix); ++ checkferror_output(fp); + } + + +diff --git a/dc/numeric.c b/dc/numeric.c +index 8e5e70f..c875eba 100644 +--- a/dc/numeric.c ++++ b/dc/numeric.c +@@ -134,6 +134,7 @@ dc_div DC_DECLARG((a, b, kscale, result)) + bc_init_num(CastNumPtr(result)); + if (bc_divide(CastNum(a), CastNum(b), CastNumPtr(result), kscale)){ + fprintf(stderr, "%s: divide by zero\n", progname); ++ checkferror_output(stderr); + return DC_DOMAIN_ERROR; + } + return DC_SUCCESS; +@@ -156,6 +157,7 @@ dc_divrem DC_DECLARG((a, b, kscale, quotient, remainder)) + if (bc_divmod(CastNum(a), CastNum(b), + CastNumPtr(quotient), CastNumPtr(remainder), kscale)){ + fprintf(stderr, "%s: divide by zero\n", progname); ++ checkferror_output(stderr); + return DC_DOMAIN_ERROR; + } + return DC_SUCCESS; +@@ -174,6 +176,7 @@ dc_rem DC_DECLARG((a, b, kscale, result)) + bc_init_num(CastNumPtr(result)); + if (bc_modulo(CastNum(a), CastNum(b), CastNumPtr(result), kscale)){ + fprintf(stderr, "%s: remainder by zero\n", progname); ++ checkferror_output(stderr); + return DC_DOMAIN_ERROR; + } + return DC_SUCCESS; +@@ -226,6 +229,7 @@ dc_sqrt DC_DECLARG((value, kscale, result)) + tmp = bc_copy_num(CastNum(value)); + if (!bc_sqrt(&tmp, kscale)){ + fprintf(stderr, "%s: square root of negative number\n", progname); ++ checkferror_output(stderr); + bc_free_num(&tmp); + return DC_DOMAIN_ERROR; + } +@@ -429,8 +433,10 @@ dc_out_num DC_DECLARG((value, obase, newline_p, discard_p)) + { + out_char('\0'); /* clear the column counter */ + bc_out_num(CastNum(value), obase, out_char, 0); +- if (newline_p == DC_WITHNL) ++ if (newline_p == DC_WITHNL) { + putchar ('\n'); ++ checkferror_output(stdout); ++ } + if (discard_p == DC_TOSS) + dc_free_num(&value); + } +@@ -475,6 +481,7 @@ dc_dump_num DC_DECLARG((dcvalue, discard_p)) + + for (cur=top_of_stack; cur; cur=next) { + putchar(cur->digit); ++ checkferror_output(stdout); + next = cur->link; + free(cur); + } +@@ -592,6 +599,7 @@ out_char (ch) + out_col = 1; + } + putchar(ch); ++ checkferror_output(stderr); + } + } + +@@ -631,6 +639,7 @@ rt_error (mesg, va_alist) + vfprintf (stderr, mesg, args); + va_end (args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } + + +@@ -664,6 +673,7 @@ rt_warn (mesg, va_alist) + vfprintf (stderr, mesg, args); + va_end (args); + fprintf (stderr, "\n"); ++ checkferror_output(stderr); + } + + +diff --git a/dc/stack.c b/dc/stack.c +index 0730e9c..5db3975 100644 +--- a/dc/stack.c ++++ b/dc/stack.c +@@ -38,7 +38,10 @@ + #include "dc-regdef.h" + + /* an oft-used error message: */ +-#define Empty_Stack fprintf(stderr, "%s: stack empty\n", progname) ++#define Empty_Stack do{ \ ++ fprintf(stderr, "%s: stack empty\n", progname); \ ++ checkferror_output(stderr); \ ++ }while(0) + + + /* simple linked-list implementation suffices: */ +@@ -94,6 +97,7 @@ dc_binop DC_DECLARG((op, kscale)) + if (dc_stack->value.dc_type!=DC_NUMBER + || dc_stack->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return; + } + (void)dc_pop(&b); +@@ -134,6 +138,7 @@ dc_binop2 DC_DECLARG((op, kscale)) + if (dc_stack->value.dc_type!=DC_NUMBER + || dc_stack->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return; + } + (void)dc_pop(&b); +@@ -172,6 +177,7 @@ dc_cmpop DC_DECLVOID() + if (dc_stack->value.dc_type!=DC_NUMBER + || dc_stack->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return 0; + } + (void)dc_pop(&b); +@@ -209,6 +215,7 @@ dc_triop DC_DECLARG((op, kscale)) + || dc_stack->link->value.dc_type!=DC_NUMBER + || dc_stack->link->link->value.dc_type!=DC_NUMBER){ + fprintf(stderr, "%s: non-numeric value\n", progname); ++ checkferror_output(stderr); + return; + } + (void)dc_pop(&c); +@@ -327,6 +334,7 @@ dc_register_get DC_DECLARG((regid, result)) + r = dc_register[regid]; + if (r==NULL || r->value.dc_type==DC_UNINITIALIZED){ + fprintf(stderr, "%s: register ", progname); ++ checkferror_output(stderr); + dc_show_id(stderr, regid, " is empty\n"); + return DC_FAIL; + } +@@ -401,6 +409,7 @@ dc_register_pop DC_DECLARG((stackid, result)) + r = dc_register[stackid]; + if (r == NULL){ + fprintf(stderr, "%s: stack register ", progname); ++ checkferror_output(stderr); + dc_show_id(stderr, stackid, " is empty\n"); + return DC_FAIL; + } +diff --git a/dc/string.c b/dc/string.c +index ff1e7f1..e24092d 100644 +--- a/dc/string.c ++++ b/dc/string.c +@@ -101,6 +101,7 @@ dc_out_str DC_DECLARG((value, newline, discard_flag)) + fwrite(value->s_ptr, value->s_len, sizeof *value->s_ptr, stdout); + if (newline == DC_WITHNL) + putchar('\n'); ++ checkferror_output(stdout); + if (discard_flag == DC_TOSS) + dc_free_str(&value); + } +@@ -176,6 +177,7 @@ dc_readstring DC_DECLARG((fp, ldelim, rdelim)) + } + *p++ = c; + } ++ checkferror_input(fp); + return dc_makestring(line_buf, (size_t)(p-line_buf)); + } + +diff --git a/h/number.h b/h/number.h +index 9b034b6..3a00a92 100644 +--- a/h/number.h ++++ b/h/number.h +@@ -150,4 +150,7 @@ _PROTOTYPE(int bc_sqrt, (bc_num *num, int scale)); + _PROTOTYPE(void bc_out_num, (bc_num num, int o_base, void (* out_char)(int), + int leading_zero)); + ++_PROTOTYPE(void checkferror_input, (FILE*)); ++_PROTOTYPE(void checkferror_output, (FILE*)); ++ + #endif +diff --git a/lib/number.c b/lib/number.c +index e211840..4d3ce46 100644 +--- a/lib/number.c ++++ b/lib/number.c +@@ -1776,6 +1776,7 @@ static void + out_char (int c) + { + putchar(c); ++ checkferror_output(stdout); + } + + +@@ -1785,6 +1786,7 @@ pn (num) + { + bc_out_num (num, 10, out_char, 0); + out_char ('\n'); ++ checkferror_output(stdout); + } + + +@@ -1799,6 +1801,28 @@ pv (name, num, len) + printf ("%s=", name); + for (i=0; i + +diff -Nura bc-1.06.95.orig/doc/Makefile.in bc-1.06.95/doc/Makefile.in +--- bc-1.06.95.orig/doc/Makefile.in 2015-06-13 09:39:46.946620294 -0300 ++++ bc-1.06.95/doc/Makefile.in 2015-06-13 09:40:10.019407630 -0300 +@@ -96,7 +96,7 @@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LTLIBOBJS = @LTLIBOBJS@ +-MAKEINFO = makeinfo --no-split ++MAKEINFO = @MAKEINFO@ --no-split + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ diff --git a/buildroot/package/bc/Config.in b/buildroot/package/bc/Config.in new file mode 100644 index 0000000..54c4422 --- /dev/null +++ b/buildroot/package/bc/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BC + bool "bc" + help + 'bc' is an arbitrary precision numeric processing language + Its syntax is similar to C, but differs in many substantial + areas. It supports interactive execution of statements. 'Bc' + is a utility included in the POSIX P1003.2/D11 draft standard. + This version does not use the historical method of having bc + be a compiler for the dc calculator (the POSIX document + doesn't specify how bc must be implemented). + This version has a single executable that both compiles the + language and runs the resulting 'byte code.' The byte code is + not the dc language. + + http://www.gnu.org/software/bc diff --git a/buildroot/package/bc/bc.hash b/buildroot/package/bc/bc.hash new file mode 100644 index 0000000..5f1ed63 --- /dev/null +++ b/buildroot/package/bc/bc.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7ee4abbcfac03d8a6e1a8a3440558a3d239d6b858585063e745c760957725ecc bc-1.06.95.tar.bz2 diff --git a/buildroot/package/bc/bc.mk b/buildroot/package/bc/bc.mk new file mode 100644 index 0000000..a6446ce --- /dev/null +++ b/buildroot/package/bc/bc.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# bc +# +################################################################################ + +BC_VERSION = 1.06.95 +BC_SOURCE = bc-$(BC_VERSION).tar.bz2 +BC_SITE = http://alpha.gnu.org/gnu/bc +BC_DEPENDENCIES = host-flex +BC_LICENSE = GPL-2.0+, LGPL-2.1+ +BC_LICENSE_FILES = COPYING COPYING.LIB + +# Build after busybox so target ends up with bc's "dc" version +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +BC_DEPENDENCIES += busybox +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/bcache-tools/0001-Don-t-inline-crc64-for-gcc-5-compatability.patch b/buildroot/package/bcache-tools/0001-Don-t-inline-crc64-for-gcc-5-compatability.patch new file mode 100644 index 0000000..1a437a8 --- /dev/null +++ b/buildroot/package/bcache-tools/0001-Don-t-inline-crc64-for-gcc-5-compatability.patch @@ -0,0 +1,35 @@ +Don't inline crc64 for gcc-5 compatability + +This patch is backported from Debian and it fixes the following error: + +bcache.c:125:9: warning: 'crc_table' is static but used in inline +function 'crc64' which is not static +... +make-bcache.c:277: undefined reference to `crc64' + +Signed-off-by: Vicente Olivert Riera + +From: David Mohr +Date: Tue, 26 May 2015 20:34:31 -0600 +Subject: Don't inline crc64 for gcc-5 compatability + +Forwarded: http://article.gmane.org/gmane.linux.kernel.bcache.devel/2919 + +By James Cowgill, see Debian bug #777798 +--- + bcache.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bcache.c b/bcache.c +index 8f37445..8b4b986 100644 +--- a/bcache.c ++++ b/bcache.c +@@ -115,7 +115,7 @@ static const uint64_t crc_table[256] = { + 0x9AFCE626CE85B507ULL + }; + +-inline uint64_t crc64(const void *_data, size_t len) ++uint64_t crc64(const void *_data, size_t len) + { + uint64_t crc = 0xFFFFFFFFFFFFFFFFULL; + const unsigned char *data = _data; diff --git a/buildroot/package/bcache-tools/Config.in b/buildroot/package/bcache-tools/Config.in new file mode 100644 index 0000000..c8e3f6d --- /dev/null +++ b/buildroot/package/bcache-tools/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_BCACHE_TOOLS + bool "bcache tools" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_USE_MMU # util-linux (libblkid) + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + Bcache is a Linux kernel block layer cache. It allows one or + more fast disk drives such as flash-based solid state drives + (SSDs) to act as a cache for one or more slower hard disk + drives. + + http://bcache.evilpiepirate.org/ + + This is the user space bcache tools, required to setup the + linux bcache feature of the Linux kernel. + +comment "bcache-tools needs udev /dev management" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/bcache-tools/bcache-tools.hash b/buildroot/package/bcache-tools/bcache-tools.hash new file mode 100644 index 0000000..6d3502f --- /dev/null +++ b/buildroot/package/bcache-tools/bcache-tools.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d56923936f37287efc57a46315679102ef2c86cd0be5874590320acd48c1201c bcache-tools-v1.0.8.tar.gz diff --git a/buildroot/package/bcache-tools/bcache-tools.mk b/buildroot/package/bcache-tools/bcache-tools.mk new file mode 100644 index 0000000..0e7a282 --- /dev/null +++ b/buildroot/package/bcache-tools/bcache-tools.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# bcache-tools +# +################################################################################ + +BCACHE_TOOLS_VERSION = v1.0.8 +BCACHE_TOOLS_SITE = $(call github,g2p,bcache-tools,$(BCACHE_TOOLS_VERSION)) +BCACHE_TOOLS_LICENSE = GPL-2.0 +BCACHE_TOOLS_LICENSE_FILES = COPYING +BCACHE_TOOLS_DEPENDENCIES = host-pkgconf util-linux + +# We pass $(TARGET_CONFIGURE_OPTS) as environment variable to allow +# the bcache-tools Makefile to alter CFLAGS +define BCACHE_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# The bcache-tools Makefile expects the man8 directory to exist +# expects the /lib/udev/rules.d directory to exist. +define BCACHE_TOOLS_CREATE_MISSING_DIRS + $(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/share/man/man8 + $(INSTALL) -m 0755 -d $(TARGET_DIR)/lib/udev/rules.d +endef + +BCACHE_TOOLS_PRE_INSTALL_TARGET_HOOKS += BCACHE_TOOLS_CREATE_MISSING_DIRS + +define BCACHE_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/bcg729/Config.in b/buildroot/package/bcg729/Config.in new file mode 100644 index 0000000..8e9bcfe --- /dev/null +++ b/buildroot/package/bcg729/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BCG729 + bool "bcg729" + help + Bcg729 is an opensource implementation of both encoder and + decoder of the ITU G729 Annex A/B speech codec. + + http://www.linphone.org/technical-corner/bcg729/overview diff --git a/buildroot/package/bcg729/bcg729.hash b/buildroot/package/bcg729/bcg729.hash new file mode 100644 index 0000000..4dbfbbb --- /dev/null +++ b/buildroot/package/bcg729/bcg729.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 94b3542a06cbd96306efc19f959f9febae62806a22599063f82a8c33e989d48b bcg729-1.0.4.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/bcg729/bcg729.mk b/buildroot/package/bcg729/bcg729.mk new file mode 100644 index 0000000..426cfd9 --- /dev/null +++ b/buildroot/package/bcg729/bcg729.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# bcg729 +# +################################################################################ + +BCG729_VERSION = 1.0.4 +BCG729_SITE = $(call github,BelledonneCommunications,bcg729,$(BCG729_VERSION)) +BCG729_LICENSE = GPL-2.0+ +BCG729_LICENSE_FILES = COPYING +BCG729_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +BCG729_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +BCG729_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_LIBS),y) +BCG729_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/bcm2835/Config.in b/buildroot/package/bcm2835/Config.in new file mode 100644 index 0000000..4c3eb2c --- /dev/null +++ b/buildroot/package/bcm2835/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BCM2835 + bool "bcm2835" + depends on BR2_arm + help + C library for Broadcom BCM 2835 as used in Raspberry Pi. + It provides access to GPIO and other IO functions on the + Broadcom BCM 2835 chip, allowing access to the GPIO pins + on the 26 pin IDE plug on the RPi board so you can control + and interface with various external devices. + + WARNING: the opinion of the Buildroot developers is that + such library is a complete abomination as it entirely works + around the standard Linux interfaces to access GPIOs, I2C, + SPI busses or other IOs. The library directly remaps the + hardware registers in user-space, completely bypassing what + the kernel drivers are doing, and potentially conflicting + with them. + + http://www.airspayce.com/mikem/bcm2835 diff --git a/buildroot/package/bcm2835/bcm2835.hash b/buildroot/package/bcm2835/bcm2835.hash new file mode 100644 index 0000000..1aea3ae --- /dev/null +++ b/buildroot/package/bcm2835/bcm2835.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 295f66dab533592ce41db8e07befe985645a2e661bbf75dce9c383e61e24cb5f bcm2835-1.48.tar.gz diff --git a/buildroot/package/bcm2835/bcm2835.mk b/buildroot/package/bcm2835/bcm2835.mk new file mode 100644 index 0000000..e24c819 --- /dev/null +++ b/buildroot/package/bcm2835/bcm2835.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# bcm2835 +# +################################################################################ + +BCM2835_VERSION = 1.48 +BCM2835_SITE = http://www.airspayce.com/mikem/bcm2835 +BCM2835_LICENSE = GPL-2.0 +BCM2835_LICENSE_FILES = COPYING +BCM2835_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch b/buildroot/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch new file mode 100644 index 0000000..a70c7c6 --- /dev/null +++ b/buildroot/package/bctoolbox/0001-Fix-Libs.private-flags-for-mbedtls.patch @@ -0,0 +1,49 @@ +From c0b3dbb43aa3a38c47311556c85eadc6072e2d68 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Tue, 14 Feb 2017 22:02:26 +0100 +Subject: [PATCH] Fix Libs.private flags for mbedtls +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Static linking with bctoolbox fails when using pkg-config as the +generated bctoolbox.pc file only consists of an '-L' string without any +search path or libraries flags. + +That's because of an typo in `mbedtls_library_path`. However, +`mbedtls_library_path` contains a string of the mbedtls libraries +concatenated by an ';' which cannot be parsed by pkg-config. + +Therefore, use `MBEDTLS_LIBRARY` instead of `MBEDTLS_LIBRARIES` to get +the library path. + +Furthermore, add the three mbedtls libraries *mbedtls*, *mbedcrypto*, and +*mbedx509* to `LIBS_PRIVATE` so these libraries are added to the +`Libs.private` field of bctoolbox.pc. + +Upstream status: Pending +https://github.com/BelledonneCommunications/bctoolbox/pull/4 + +Signed-off-by: Jörg Krause +--- + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ed7aa00..4127f0e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -103,8 +103,8 @@ else() + endif() + + if(MBEDTLS_FOUND) +- get_filename_component(mbedtls_library_path "${MBEDTLS_LIBRARIES}" PATH) +- set(LIBS_PRIVATE "${LIBS_PRIVATE} -L${mbedlts_library_path}") ++ get_filename_component(mbedtls_library_path "${MBEDTLS_LIBRARY}" PATH) ++ set(LIBS_PRIVATE "${LIBS_PRIVATE} -L${mbedtls_library_path} -lmbedtls -lmbedcrypto -lmbedx509") + endif() + if(POLARSSL_FOUND) + get_filename_component(polarssl_library_path "${POLARSSL_LIBRARIES}" PATH) +-- +2.11.1 + diff --git a/buildroot/package/bctoolbox/Config.in b/buildroot/package/bctoolbox/Config.in new file mode 100644 index 0000000..048d012 --- /dev/null +++ b/buildroot/package/bctoolbox/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_BCTOOLBOX + bool "bctoolbox" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Utilities library used by Belledonne Communications + softwares like belle-sip, mediastreamer2 and linphone. + + Select BR2_PACKAGE_MBEDTLS for crypto support. + + https://github.com/BelledonneCommunications/bctoolbox + +comment "bctoolbox needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/bctoolbox/bctoolbox.hash b/buildroot/package/bctoolbox/bctoolbox.hash new file mode 100644 index 0000000..70be55c --- /dev/null +++ b/buildroot/package/bctoolbox/bctoolbox.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 da7df7ff359a9829e9e6ef98dfe9fead0cf735b8a4a5da1b1047f467dee1b2a9 bctoolbox-0.4.0.tar.gz diff --git a/buildroot/package/bctoolbox/bctoolbox.mk b/buildroot/package/bctoolbox/bctoolbox.mk new file mode 100644 index 0000000..281a0bf --- /dev/null +++ b/buildroot/package/bctoolbox/bctoolbox.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# bctoolbox +# +################################################################################ + +BCTOOLBOX_VERSION = 0.4.0 +BCTOOLBOX_SITE = $(call github,BelledonneCommunications,bctoolbox,$(BCTOOLBOX_VERSION)) +BCTOOLBOX_LICENSE = GPL-2.0+ +BCTOOLBOX_LICENSE_FILES = COPYING +BCTOOLBOX_INSTALL_STAGING = YES + +# Set CMAKE_SKIP_RPATH to prevent bctoolbox from adding the rpath to +# shared library. +BCTOOLBOX_CONF_OPTS = \ + -DENABLE_POLARSSL=OFF \ + -DENABLE_STRICT=OFF \ + -DENABLE_TESTS_COMPONENT=OFF \ + -DENABLE_TESTS=OFF \ + -DGIT_EXECUTABLE=OFF \ + -DCMAKE_SKIP_RPATH=ON + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +BCTOOLBOX_DEPENDENCIES += mbedtls +BCTOOLBOX_CONF_OPTS += -DENABLE_MBEDTLS=ON +else +BCTOOLBOX_CONF_OPTS += -DENABLE_MBEDTLS=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +BCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=OFF -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +BCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=ON +else ifeq ($(BR2_SHARED_LIBS),y) +BCTOOLBOX_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch b/buildroot/package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch new file mode 100644 index 0000000..723de5c --- /dev/null +++ b/buildroot/package/bcusdk/0001-fd_set-requires-inclusion-of-sys-select.h.patch @@ -0,0 +1,31 @@ +From 2541ee3d709803096b17e45610ccc1404e2e5eee Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 8 Aug 2015 17:46:34 +0200 +Subject: [PATCH] fd_set requires inclusion of + +According to POSIX.1-2001, the definition fd_set and related macros is +in , so it should be included in files using fd_set to +make the code compatible with all standard C libraries. + +Submitted upstream: https://sourceforge.net/p/bcusdk/patches/3/ + +Signed-off-by: Thomas Petazzoni +--- + eibd/examples/common.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/eibd/examples/common.h b/eibd/examples/common.h +index 51fc514..f038da1 100644 +--- a/eibd/examples/common.h ++++ b/eibd/examples/common.h +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include "eibclient.h" + + /** unsigned char*/ +-- +2.5.0 + diff --git a/buildroot/package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch b/buildroot/package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch new file mode 100644 index 0000000..3b90289 --- /dev/null +++ b/buildroot/package/bcusdk/0002-eibd-fix-endless-recursion-when-using-USB-backends.patch @@ -0,0 +1,35 @@ +From 6bd1b4958e949d83468e053c34bf6c89d14d687a Mon Sep 17 00:00:00 2001 +From: Kurt Van Dijck +Date: Fri, 25 Aug 2017 23:01:14 +0200 +Subject: [PATCH] eibd: drop local clock_gettime in USB backends + +clock_gettime is defined locally, and calls pth_int_time, which +in turn calls clock_gettime. +The USB backend shouldn't overrule clock_gettime in the first place. +This patch fixes this endless recursion by removing the local defition. + +Signed-off-by: Kurt Van Dijck +--- + eibd/usb/linux_usbfs.c | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/eibd/usb/linux_usbfs.c b/eibd/usb/linux_usbfs.c +index c3ec410..957b908 100644 +--- a/eibd/usb/linux_usbfs.c ++++ b/eibd/usb/linux_usbfs.c +@@ -52,12 +52,6 @@ int pthread_mutex_trylock(pthread_mutex_t *mutex) + return 0; + } + +-int clock_gettime(clockid_t clk_id, struct timespec *tp) +-{ +- pth_int_time (tp); +- return 0; +-} +- + /* sysfs vs usbfs: + * opening a usbfs node causes the device to be resumed, so we attempt to + * avoid this during enumeration. +-- +1.8.5.rc3 + diff --git a/buildroot/package/bcusdk/Config.in b/buildroot/package/bcusdk/Config.in new file mode 100644 index 0000000..8f9330e --- /dev/null +++ b/buildroot/package/bcusdk/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_BCUSDK + bool "bcusdk" + depends on BR2_USE_MMU # libpthsem + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBPTHSEM + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + A free development environment for the Bus Coupling Units of + the European Installation Bus. + + The European Installation Bus EIB is a home and building + automation bus system. It is optimized for low-speed control + applications like lighting and blinds control. + + BCUs (Bus Coupling Units) are standardized, generic + platforms for embedded EIB devices. They include the entire + physical layer network interface, power supply and a + microcontroller with an implementation of the EIB protocol + stack stored in the ROM. + + http://www.auto.tuwien.ac.at/~mkoegler/eib/ + +comment "bcusdk needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/bcusdk/bcusdk.hash b/buildroot/package/bcusdk/bcusdk.hash new file mode 100644 index 0000000..219498b --- /dev/null +++ b/buildroot/package/bcusdk/bcusdk.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 014cdaafc36f223c584b39ae5d698dd037a8e15aba4e78a2e531b51ff1331304 bcusdk_0.0.5.tar.gz diff --git a/buildroot/package/bcusdk/bcusdk.mk b/buildroot/package/bcusdk/bcusdk.mk new file mode 100644 index 0000000..ff5becd --- /dev/null +++ b/buildroot/package/bcusdk/bcusdk.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# bcusdk +# +################################################################################ + +BCUSDK_VERSION = 0.0.5 +BCUSDK_SOURCE = bcusdk_$(BCUSDK_VERSION).tar.gz +BCUSDK_SITE = http://www.auto.tuwien.ac.at/~mkoegler/eib +BCUSDK_LICENSE = GPL-2.0+ +BCUSDK_LICENSE_FILES = COPYING +BCUSDK_INSTALL_STAGING = YES +BCUSDK_CONF_OPTS = \ + --enable-onlyeibd \ + --enable-ft12 \ + --enable-pei16 \ + --enable-tpuarts \ + --enable-eibnetip \ + --enable-eibnetipserver \ + --enable-eibnetiptunnel \ + --without-pth-test \ + --with-pth=$(STAGING_DIR)/usr + +BCUSDK_DEPENDENCIES = \ + libpthsem \ + $(if $(BR2_PACKAGE_ARGP_STANDALONE),argp-standalone) + +define BCUSDK_REMOVE_EXAMPLES + $(RM) -rf $(TARGET_DIR)/usr/share/bcusdk +endef + +BCUSDK_POST_INSTALL_TARGET_HOOKS += BCUSDK_REMOVE_EXAMPLES + +$(eval $(autotools-package)) diff --git a/buildroot/package/bdwgc/0001-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch b/buildroot/package/bdwgc/0001-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch new file mode 100644 index 0000000..393ad90 --- /dev/null +++ b/buildroot/package/bdwgc/0001-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch @@ -0,0 +1,28 @@ +configure.ac: add check for NO_GETCONTEXT definition + +Signed-off-by: Samuel Martin +[yann.morin.1998@free.fr: add a comment, change variable name, use + AS_IF, remove debug traces, use AC_CHECK_FUNCS (as suggested by + Thomas)] +Signed-off-by: "Yann E. MORIN" +Cc: Thomas Petazzoni + +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- bdwgc-7.2f.orig/configure.ac 2014-06-01 19:00:47.000000000 +0200 ++++ bdwgc-7.2f/configure.ac 2014-12-23 14:13:11.585716713 +0100 +@@ -365,6 +365,12 @@ + AC_MSG_RESULT($ac_cv_fno_strict_aliasing) + fi + ++# Check for getcontext (uClibc can be configured without it, for example) ++AC_CHECK_FUNCS([getcontext]) ++AS_IF([test "$ac_cv_func_getcontext" = "no"], ++ [CFLAGS="$CFLAGS -DNO_GETCONTEXT" ++ CPPFLAGS="$CPPFLAGS -DNO_GETCONTEXT"]) ++ + case "$host" in + # While IRIX 6 has libdl for the O32 and N32 ABIs, it's missing for N64 + # and unnecessary everywhere. diff --git a/buildroot/package/bdwgc/0002-Fix-size-of-tv-is-unknown-error-in-brief_async_signa.patch b/buildroot/package/bdwgc/0002-Fix-size-of-tv-is-unknown-error-in-brief_async_signa.patch new file mode 100644 index 0000000..e17ed84 --- /dev/null +++ b/buildroot/package/bdwgc/0002-Fix-size-of-tv-is-unknown-error-in-brief_async_signa.patch @@ -0,0 +1,35 @@ +From 31eef02317d59b4d204624efbddaea641e861390 Mon Sep 17 00:00:00 2001 +From: Mikael Djurfeldt +Date: Sun, 26 Feb 2017 20:09:56 +0100 +Subject: [PATCH] Fix 'size of tv is unknown' error in + brief_async_signal_safe_sleep (musl) (fix commits 62097c3, 9f48082) + +Include to get struct timeval defined and select() declared. + +* pthread_stop_world.c [GC_ENABLE_SUSPEND_THREAD]: Include sys/time.h +before GC_brief_async_signal_safe_sleep definition. + +Upstream status: upstream +commit ffad61d3bbe86c09ffe062dab393fcb0e4940580 + +[Romain: backported to 7.6.0] +Signed-off-by: Romain Naour +--- + pthread_stop_world.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/pthread_stop_world.c b/pthread_stop_world.c +index dad1fdc..8c76944 100644 +--- a/pthread_stop_world.c ++++ b/pthread_stop_world.c +@@ -391,6 +391,7 @@ STATIC void GC_restart_handler(int sig) + # ifndef GC_TIME_LIMIT + # define GC_TIME_LIMIT 50 + # endif ++# include + + STATIC void GC_brief_async_signal_safe_sleep(void) + { +-- +2.9.4 + diff --git a/buildroot/package/bdwgc/Config.in b/buildroot/package/bdwgc/Config.in new file mode 100644 index 0000000..95139ef --- /dev/null +++ b/buildroot/package/bdwgc/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_BDWGC + bool "bdwgc" + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + select BR2_PACKAGE_LIBATOMIC_OPS + help + The Boehm-Demers-Weiser conservative garbage collector can + be used as a garbage collecting replacement for C 'malloc' + or C++ 'new'. + + http://www.hboehm.info/gc/ diff --git a/buildroot/package/bdwgc/bdwgc.hash b/buildroot/package/bdwgc/bdwgc.hash new file mode 100644 index 0000000..0ebc41c --- /dev/null +++ b/buildroot/package/bdwgc/bdwgc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 bd112005563d787675163b5afff02c364fc8deb13a99c03f4e80fdf6608ad41e gc-7.6.2.tar.gz +sha256 9944acfcee6cca308d974933977c1608804f5ad4345aac7cb8608137104e3742 README.QUICK diff --git a/buildroot/package/bdwgc/bdwgc.mk b/buildroot/package/bdwgc/bdwgc.mk new file mode 100644 index 0000000..5603df8 --- /dev/null +++ b/buildroot/package/bdwgc/bdwgc.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# bdwgc +# +################################################################################ + +BDWGC_VERSION = 7.6.2 +BDWGC_SOURCE = gc-$(BDWGC_VERSION).tar.gz +BDWGC_SITE = http://www.hboehm.info/gc/gc_source +BDWGC_INSTALL_STAGING = YES +BDWGC_LICENSE = bdwgc license +BDWGC_LICENSE_FILES = README.QUICK +BDWGC_DEPENDENCIES = libatomic_ops host-pkgconf +HOST_BDWGC_DEPENDENCIES = host-libatomic_ops host-pkgconf + +# The libtool shipped with the package is bogus and generates some +# -L/usr/lib flags. It uses a version not supported by Buildroot +# libtool patches, so autoreconfiguring the packages is the easiest +# solution. +BDWGC_AUTORECONF = YES + +BDWGC_CFLAGS = $(TARGET_CFLAGS) +ifeq ($(BR2_sparc),y) +BDWGC_CFLAGS += -DAO_NO_SPARC_V9 +endif +ifeq ($(BR2_STATIC_LIBS),y) +BDWGC_CFLAGS += -DGC_NO_DLOPEN +endif + +# Ensure we use the system libatomic_ops, and not the internal one. +BDWGC_CONF_OPTS = --with-libatomic-ops=yes CFLAGS="$(BDWGC_CFLAGS)" +HOST_BDWGC_CONF_OPTS = --with-libatomic-ops=yes + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/beecrypt/0001-cppglue.cxx-cplusplus-only.patch b/buildroot/package/beecrypt/0001-cppglue.cxx-cplusplus-only.patch new file mode 100644 index 0000000..298e3eb --- /dev/null +++ b/buildroot/package/beecrypt/0001-cppglue.cxx-cplusplus-only.patch @@ -0,0 +1,28 @@ +Makefile.am: Only compile/link cppglue.cxx if --with-cplusplus is used + +Bloats libbeecrypt for no use and breaks build on systems without a C++ +compiler. + +Signed-off-by: Peter Korsgaard +--- + Makefile.am | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +Index: beecrypt-4.2.1/Makefile.am +=================================================================== +--- beecrypt-4.2.1.orig/Makefile.am ++++ beecrypt-4.2.1/Makefile.am +@@ -62,7 +62,12 @@ + + lib_LTLIBRARIES = libbeecrypt.la + +-libbeecrypt_la_SOURCES = aes.c base64.c beecrypt.c blockmode.c blockpad.c blowfish.c dhies.c dldp.c dlkp.c dlpk.c dlsvdp-dh.c dsa.c elgamal.c endianness.c entropy.c fips186.c hmac.c hmacmd5.c hmacsha1.c hmacsha224.c hmacsha256.c md4.c md5.c hmacsha384.c hmacsha512.c memchunk.c mp.c mpbarrett.c mpnumber.c mpprime.c mtprng.c pkcs1.c pkcs12.c ripemd128.c ripemd160.c ripemd256.c ripemd320.c rsa.c rsakp.c rsapk.c sha1.c sha224.c sha256.c sha384.c sha512.c sha2k32.c sha2k64.c timestamp.c cppglue.cxx ++libbeecrypt_la_SOURCES = aes.c base64.c beecrypt.c blockmode.c blockpad.c blowfish.c dhies.c dldp.c dlkp.c dlpk.c dlsvdp-dh.c dsa.c elgamal.c endianness.c entropy.c fips186.c hmac.c hmacmd5.c hmacsha1.c hmacsha224.c hmacsha256.c md4.c md5.c hmacsha384.c hmacsha512.c memchunk.c mp.c mpbarrett.c mpnumber.c mpprime.c mtprng.c pkcs1.c pkcs12.c ripemd128.c ripemd160.c ripemd256.c ripemd320.c rsa.c rsakp.c rsapk.c sha1.c sha224.c sha256.c sha384.c sha512.c sha2k32.c sha2k64.c timestamp.c ++ ++if WITH_CPLUSPLUS ++libbeecrypt_la_SOURCES += cppglue.cxx ++endif ++ + libbeecrypt_la_DEPENDENCIES = $(BEECRYPT_OBJECTS) + libbeecrypt_la_LIBADD = blowfishopt.lo mpopt.lo sha1opt.lo $(OPENMP_LIBS) + libbeecrypt_la_LDFLAGS = -no-undefined -version-info $(LIBBEECRYPT_LT_CURRENT):$(LIBBEECRYPT_LT_REVISION):$(LIBBEECRYPT_LT_AGE) diff --git a/buildroot/package/beecrypt/0002-build-system.patch b/buildroot/package/beecrypt/0002-build-system.patch new file mode 100644 index 0000000..0574689 --- /dev/null +++ b/buildroot/package/beecrypt/0002-build-system.patch @@ -0,0 +1,173 @@ +Fix build with BR2_ENABLE_DEBUG=yes, no need for expert mode anymore + +Otherwise configure issues this error message: +configure: error: --enable-debug cannot be used in conjunction with --enable-expert-mode + +Downloaded from Gentoo: +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/beecrypt/files/beecrypt-4.2.1-build-system.patch?revision=1.2&view=markup + +This patch also removes the hard-coded CFLAGS provided by beecrypt in favour +of the CFLAGS provided by buildroot. + +Signed-off-by: Bernd Kuhls + +--- beecrypt-4.2.1/configure.ac ++++ beecrypt-4.2.1/configure.ac +@@ -11,7 +11,7 @@ + + # Checks for package options + AC_ARG_ENABLE(expert-mode, [ --enable-expert-mode follow user-defined CFLAGS settings [[default=no]]],[ +- ac_enable_expert_mode=yes ++ ac_enable_expert_mode=$enableval + ],[ + if test "X$CFLAGS" != "X"; then + echo "enabling expert mode" +@@ -25,7 +25,7 @@ + if test "$ac_enable_expert_mode" = yes; then + AC_MSG_ERROR([--enable-debug cannot be used in conjunction with --enable-expert-mode]) + fi +- ac_enable_debug=yes ++ ac_enable_debug=$enableval + ],[ + ac_enable_debug=no + ]) +@@ -456,7 +456,7 @@ + ac_cv_python_include="-I`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_inc()'`" + ]) + AC_CACHE_CHECK([where to install python libraries], ac_cv_python_libdir, [ +- ac_cv_python_libdir=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib()'` ++ ac_cv_python_libdir=`$PYTHON -c 'import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, 0)'` + ]) + fi + fi +--- beecrypt-4.2.1/acinclude.m4 ++++ beecrypt-4.2.1/acinclude.m4 +@@ -498,15 +498,6 @@ AC_DEFUN([BEE_GNU_CC],[ + AC_SUBST(OPENMP_LIBS,"-lgomp") + fi + case $bc_target_arch in +- x86_64 | athlon64 | athlon-fx | k8 | opteron | em64t | nocona) +- CC="$CC -m64" +- ;; +- i[[3456]]86 | \ +- pentium* | \ +- athlon*) +- CC="$CC -m32" +- CCAS="$CCAS -m32" +- ;; + ia64) + case $target_os in + # HP/UX on Itanium needs to be told that a long is 64-bit! +@@ -525,17 +516,8 @@ AC_DEFUN([BEE_GNU_CC],[ + aix*) + CC="$CC -maix64" + ;; +- linux*) +- CC="$CC -m64" +- ;; + esac + ;; +- sparc | sparcv8*) +- CC="$CC -m32" +- ;; +- sparc64 | sparcv9*) +- CC="$CC -m64" +- ;; + esac + # Certain platforms needs special flags for multi-threaded code + if test "$ac_enable_threads" = yes; then +@@ -646,14 +646,6 @@ dnl BEE_GNU_CXX + AC_DEFUN([BEE_GNU_CXX],[ + AC_REQUIRE([AC_PROG_CXX]) + case $bc_target_arch in +- x86_64 | athlon64 | athlon-fx | k8 | opteron | em64t | nocona | core2) +- CXX="$CXX -m64" +- ;; +- i[[3456]]86 | \ +- pentium* | \ +- athlon*) +- CXX="$CXX -m32" +- ;; + ia64) + case $target_os in + # HP/UX on Itanium needs to be told that a long is 64-bit! +@@ -672,17 +664,8 @@ AC_DEFUN([BEE_GNU_CXX],[ + aix*) + CXX="$CXX -maix64" + ;; +- linux*) +- CXX="$CXX -m64" +- ;; + esac + ;; +- sparc | sparcv8*) +- CXX="$CXX -m32" +- ;; +- sparc64 | sparcv9*) +- CXX="$CXX -m64" +- ;; + esac + # Certain platforms needs special flags for multi-threaded code + if test "$ac_enable_threads" = yes; then +--- beecrypt-4.2.1/java/Makefile.am ++++ beecrypt-4.2.1/java/Makefile.am +@@ -26,7 +26,7 @@ + + INCLUDES = -I$(top_srcdir)/include + +-libaltdir=$(prefix)/lib@LIBALT@ ++libaltdir=$(libdir) + + libalt_LTLIBRARIES = libbeecrypt_java.la + +--- beecrypt-4.2.1/acinclude.m4 ++++ beecrypt-4.2.1/acinclude.m4 +@@ -1589,20 +1589,5 @@ + AC_SUBST(TYPEDEF_BC_THREADID_T,$bc_typedef_bc_threadid_t) + ]) +- +-AH_BOTTOM([ +-#if ENABLE_THREADS +-# ifndef _REENTRANT +-# define _REENTRANT +-# endif +-# if LINUX +-# define _LIBC_REENTRANT +-# endif +-#else +-# ifdef _REENTRANT +-# undef _REENTRANT +-# endif +-#endif +-]) + + + dnl BEE_THREAD_LOCAL_STORAGE +@@ -1623,7 +1609,5 @@ + ]) + + AH_BOTTOM([ +-#if !ENABLE_THREAD_LOCAL_STORAGE +-# define __thread +-#endif ++#include "config.threads.h" + ]) +--- beecrypt-4.2.1/config.threads.h ++++ beecrypt-4.2.1/config.threads.h +@@ -0,0 +1,16 @@ ++#if ENABLE_THREADS ++# ifndef _REENTRANT ++# define _REENTRANT ++# endif ++# if LINUX ++# define _LIBC_REENTRANT ++# endif ++#else ++# ifdef _REENTRANT ++# undef _REENTRANT ++# endif ++#endif ++ ++#if !ENABLE_THREAD_LOCAL_STORAGE ++# define __thread ++#endif diff --git a/buildroot/package/beecrypt/Config.in b/buildroot/package/beecrypt/Config.in new file mode 100644 index 0000000..9aec85a --- /dev/null +++ b/buildroot/package/beecrypt/Config.in @@ -0,0 +1,10 @@ +comment "beecrypt needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_BEECRYPT + bool "beecrypt" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Beecrypt is a general-purpose cryptography library. + + http://beecrypt.sf.net diff --git a/buildroot/package/beecrypt/beecrypt.hash b/buildroot/package/beecrypt/beecrypt.hash new file mode 100644 index 0000000..e697c26 --- /dev/null +++ b/buildroot/package/beecrypt/beecrypt.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 286f1f56080d1a6b1d024003a5fa2158f4ff82cae0c6829d3c476a4b5898c55d beecrypt-4.2.1.tar.gz diff --git a/buildroot/package/beecrypt/beecrypt.mk b/buildroot/package/beecrypt/beecrypt.mk new file mode 100644 index 0000000..f13f72c --- /dev/null +++ b/buildroot/package/beecrypt/beecrypt.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# beecrypt +# +################################################################################ + +BEECRYPT_VERSION = 4.2.1 +BEECRYPT_SITE = http://downloads.sourceforge.net/project/beecrypt/beecrypt/$(BEECRYPT_VERSION) +BEECRYPT_AUTORECONF = YES +BEECRYPT_INSTALL_STAGING = YES +BEECRYPT_LICENSE = LGPL-2.1+ +BEECRYPT_LICENSE_FILES = COPYING.LIB + +BEECRYPT_CONF_OPTS = \ + --disable-expert-mode \ + --without-java \ + --without-python \ + --disable-openmp \ + --without-cplusplus + +# disable optimized m68k assembly as it doesn't compile for coldfire +ifeq ($(BR2_m68k_cf),y) +BEECRYPT_CONF_OPTS += --enable-debug +endif + +# arm asm optimization doesn't work for thumb-only +ifeq ($(BR2_arm):$(BR2_ARM_CPU_HAS_ARM),y:) +BEECRYPT_CONF_OPTS += --enable-debug +endif + +# automake/libtool uses the C++ compiler to link libbeecrypt because of +# (the optional) cppglue.cxx. Force it to use the C compiler instead. +define BEECRYPT_LINK_WITH_CC + $(SED) 's/--tag=CXX/--tag=CC/g' $(@D)/Makefile +endef +BEECRYPT_POST_CONFIGURE_HOOKS += BEECRYPT_LINK_WITH_CC + +$(eval $(autotools-package)) diff --git a/buildroot/package/bellagio/0001-drop-werror.patch b/buildroot/package/bellagio/0001-drop-werror.patch new file mode 100644 index 0000000..39baf42 --- /dev/null +++ b/buildroot/package/bellagio/0001-drop-werror.patch @@ -0,0 +1,22 @@ +[PATCH] don't force -Werror in CFLAGS + +Released software shouldn't get built with -Werror. + +Signed-of-by: Peter Korsgaard +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: libomxil-bellagio-0.9.3/configure.ac +=================================================================== +--- libomxil-bellagio-0.9.3.orig/configure.ac ++++ libomxil-bellagio-0.9.3/configure.ac +@@ -5,7 +5,7 @@ + AC_PREREQ([2.59]) + + AC_CONFIG_HEADERS([config.h]) +-CFLAGS="${CFLAGS} -Wall -Werror" ++CFLAGS="${CFLAGS} -Wall" + + ################################################################################ + # Set the shared versioning info, according to section 6.3 of the libtool info # diff --git a/buildroot/package/bellagio/0002-dynamicloader-linking.patch b/buildroot/package/bellagio/0002-dynamicloader-linking.patch new file mode 100644 index 0000000..5e4243d --- /dev/null +++ b/buildroot/package/bellagio/0002-dynamicloader-linking.patch @@ -0,0 +1,16 @@ +When libomxdynamicloader.so is loaded, it complains that RM_Deinit can't be resolved. +Link explicitly against omxil-bellagio so that ld.so can find the reference. + +Signed-off-by: Qais Yousef + +--- bellagio-0.9.3/src/dynamic_loader/Makefile.am.old 2012-03-23 15:07:47.379021034 +0000 ++++ bellagio-0.9.3/src/dynamic_loader/Makefile.am 2012-03-23 15:08:47.563034818 +0000 +@@ -3,7 +3,7 @@ + omxdynamicloader_LTLIBRARIES = libomxdynamicloader.la + libomxdynamicloader_la_SOURCES = ste_dynamic_component_loader.c ste_dynamic_component_loader.h + +-libomxdynamicloader_la_LDFLAGS = ++libomxdynamicloader_la_LDFLAGS = -lomxil-bellagio -L$(abs_top_srcdir)/src/.libs + libomxdynamicloader_la_CFLAGS = -I$(top_srcdir)/include \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/base \ diff --git a/buildroot/package/bellagio/0003-parallel-build.patch b/buildroot/package/bellagio/0003-parallel-build.patch new file mode 100644 index 0000000..767bbeb --- /dev/null +++ b/buildroot/package/bellagio/0003-parallel-build.patch @@ -0,0 +1,16 @@ +Fix dependency issue to allow parallel build + +Signed-off-by: Qais Yousef + +Index: bellagio-0.9.3/src/Makefile.am +=================================================================== +--- bellagio-0.9.3.orig/src/Makefile.am ++++ bellagio-0.9.3/src/Makefile.am +@@ -8,6 +8,7 @@ omxregister_bellagio_SOURCES = omxregist + omxregister_bellagio_CFLAGS = -DOMXILCOMPONENTSPATH=\"$(plugindir)/\" \ + -I$(top_srcdir)/include + omxregister_bellagio_LDFLAGS = -lomxil-bellagio -L$(builddir) ++omxregister_bellagio_DEPENDENCIES = libomxil-bellagio.la + + lib_LTLIBRARIES = libomxil-bellagio.la + libomxil_bellagio_la_SOURCES = component_loader.h \ diff --git a/buildroot/package/bellagio/0004-segfault-on-removeFromWaitResource.patch b/buildroot/package/bellagio/0004-segfault-on-removeFromWaitResource.patch new file mode 100644 index 0000000..f52a2c3 --- /dev/null +++ b/buildroot/package/bellagio/0004-segfault-on-removeFromWaitResource.patch @@ -0,0 +1,37 @@ +We always access globalComponentList[] at indexComponent=-1 which causes a +segfault. Use i as the index instead. + +Signed-off-by: Qais Yousef + +--- bellagio-0.9.3/src/omx_reference_resource_manager.c.old 2012-03-13 10:15:25.743940980 +0000 ++++ bellagio-0.9.3/src/omx_reference_resource_manager.c 2012-03-13 10:18:02.201971009 +0000 +@@ -485,7 +485,6 @@ + OMX_ERRORTYPE RM_removeFromWaitForResource(OMX_COMPONENTTYPE *openmaxStandComp) { + omx_base_component_PrivateType* omx_base_component_Private; + int i = 0; +- int indexComponent = -1; + + DEBUG(DEB_LEV_FUNCTION_NAME, "In %s\n", __func__); + omx_base_component_Private = (omx_base_component_PrivateType*)openmaxStandComp->pComponentPrivate; +@@ -493,16 +492,13 @@ + while(listOfcomponentRegistered[i].component_name != NULL ) { + if (!strcmp(listOfcomponentRegistered[i].component_name, omx_base_component_Private->name)) { + // found component in the list of the resource manager +- removeElemFromList(&globalComponentList[indexComponent], openmaxStandComp); +- break; ++ removeElemFromList(&globalComponentList[i], openmaxStandComp); ++ DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__); ++ return OMX_ErrorNone; + } + i++; + } +- if (indexComponent <0) { +- // No resource to be handled +- DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__); +- return OMX_ErrorNone; +- } +- DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__); ++ // No resource to be handled ++ DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__); + return OMX_ErrorNone; + } diff --git a/buildroot/package/bellagio/0005-fix-doc-installation-path.patch b/buildroot/package/bellagio/0005-fix-doc-installation-path.patch new file mode 100644 index 0000000..06b0743 --- /dev/null +++ b/buildroot/package/bellagio/0005-fix-doc-installation-path.patch @@ -0,0 +1,24 @@ +Makefile.am: fix bogus docdir definition + +The definition of the docdir variable uses $(DESTDIR). However, +automake already prefixes all *dir variables automatically with +DESTDIR, which causes the documentation to be installed in +$(DESTDIR)/$(DESTDIR)/usr/share/doc/... + +Fix this by removing the $(DESTDIR) part of the docdir definition. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile.am +=================================================================== +--- a/Makefile.am ++++ b/Makefile.am +@@ -7,7 +7,7 @@ + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = libomxil-bellagio.pc + +-docdir = $(DESTDIR)$(prefix)/share/doc/@PACKAGE@ ++docdir = $(prefix)/share/doc/@PACKAGE@ + doc_DATA = README \ + ChangeLog \ + TODO diff --git a/buildroot/package/bellagio/Config.in b/buildroot/package/bellagio/Config.in new file mode 100644 index 0000000..8ad1867 --- /dev/null +++ b/buildroot/package/bellagio/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_BELLAGIO + bool "bellagio" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_HAS_LIBOPENMAX + help + Bellagio is an opensource implementation of the + OpenMAX IL API. + + OpenMAX Integration Layer (IL) is a standard API + to access Multimedia Components on mobile platforms. + It has been defined by the Khronos group. + By means of the OpenMAX IL API, multimedia frameworks + can access hardware accelerators on platforms that + provide it. + + http://omxil.sourceforge.net/ + +if BR2_PACKAGE_BELLAGIO + +config BR2_PACKAGE_PROVIDES_LIBOPENMAX + default "bellagio" + +endif + +comment "bellagio needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/bellagio/bellagio.hash b/buildroot/package/bellagio/bellagio.hash new file mode 100644 index 0000000..914dd7c --- /dev/null +++ b/buildroot/package/bellagio/bellagio.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 593c0729c8ef8c1467b3bfefcf355ec19a46dd92e31bfc280e17d96b0934d74c libomxil-bellagio-0.9.3.tar.gz diff --git a/buildroot/package/bellagio/bellagio.mk b/buildroot/package/bellagio/bellagio.mk new file mode 100644 index 0000000..4e5c691 --- /dev/null +++ b/buildroot/package/bellagio/bellagio.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# bellagio +# +################################################################################ + +BELLAGIO_VERSION = 0.9.3 +BELLAGIO_SOURCE = libomxil-bellagio-$(BELLAGIO_VERSION).tar.gz +BELLAGIO_SITE = http://downloads.sourceforge.net/project/omxil/omxil/Bellagio%20$(BELLAGIO_VERSION) +BELLAGIO_AUTORECONF = YES +BELLAGIO_INSTALL_STAGING = YES +BELLAGIO_LICENSE = LGPL-2.1+ +BELLAGIO_LICENSE_FILES = COPYING +BELLAGIO_PROVIDES = libopenmax + +$(eval $(autotools-package)) diff --git a/buildroot/package/benejson/0001-c-std.patch b/buildroot/package/benejson/0001-c-std.patch new file mode 100644 index 0000000..2330b79 --- /dev/null +++ b/buildroot/package/benejson/0001-c-std.patch @@ -0,0 +1,22 @@ +Some older toolchains do not recognize c11 as a valid standard. +Since the code actually builds well with c99, use that instead. + +The only two non-standard features used are // comments +and for(int i ...) declarations in C. + +Signed-off-by: Alex Suykov + +--- a/SConstruct ++++ b/SConstruct +@@ -9,9 +9,8 @@ mydir = os.getcwd() + #Set default C++ building flags for both libraries and executables + default_env = Environment(ENV = os.environ) + default_env.Append(CPPPATH = [mydir + '/include']) +-default_env.Append(CCFLAGS = ' -Wall -pedantic') +-default_env.Append(CFLAGS = ' -std=c11') +-default_env.Append(CXXFLAGS = ' -std=c++11') ++default_env.Append(CFLAGS = ' -Wall') ++default_env.Append(CFLAGS = ' -std=c99') + #default_env.Append(CCFLAGS = ' -O2 -fomit-frame-pointer') + default_env.Append(CCFLAGS = ' -O0 -g') + diff --git a/buildroot/package/benejson/Config.in b/buildroot/package/benejson/Config.in new file mode 100644 index 0000000..cb86d67 --- /dev/null +++ b/buildroot/package/benejson/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BENEJSON + bool "benejson" + depends on BR2_INSTALL_LIBSTDCPP + help + benejson is a buffering SAX-style JSON parser library. + The library package contains 3 major components: + + - benejson.js: SAX-style parser written in Javascript + - PullParser: A C++ class for JSON pull parsing + - Core: The parsing core with minimal dependencies + + https://codehero.github.io/benejson/ + +comment "benejson needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/benejson/benejson.hash b/buildroot/package/benejson/benejson.hash new file mode 100644 index 0000000..696dc4f --- /dev/null +++ b/buildroot/package/benejson/benejson.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2ce5f3c2323500bdf651e7fcaecbd1011997141e6067567b8d2caa4cf7182f4a benejson-0.9.7.tar.gz diff --git a/buildroot/package/benejson/benejson.mk b/buildroot/package/benejson/benejson.mk new file mode 100644 index 0000000..680e5b5 --- /dev/null +++ b/buildroot/package/benejson/benejson.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# benejson +# +################################################################################ + +BENEJSON_VERSION = 0.9.7 +BENEJSON_SITE = $(call github,codehero,benejson,$(BENEJSON_VERSION)) +BENEJSON_LICENSE = MIT +BENEJSON_LICENSE_FILES = LICENSE +BENEJSON_INSTALL_STAGING = YES +BENEJSON_DEPENDENCIES = host-scons + +# wchar support needs to be manually disabled +ifeq ($(BR2_USE_WCHAR),) +define BENEJSON_DISABLE_WCHAR + $(SED) 's,^#define BNJ_WCHAR_SUPPORT,#undef BNJ_WCHAR_SUPPORT,' \ + $(@D)/benejson/benejson.h +endef +BENEJSON_POST_PATCH_HOOKS += BENEJSON_DISABLE_WCHAR +endif + +BENEJSON_SCONS_TARGETS = include + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +BENEJSON_SCONS_TARGETS += lib/libbenejson.a +define BENEJSON_INSTALL_STATIC_LIB + $(INSTALL) -D -m 0644 $(@D)/lib/libbenejson.a \ + $(1)/usr/lib/libbenejson.a +endef +endif # Static enabled + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +BENEJSON_SCONS_TARGETS += lib/libbenejson.so +define BENEJSON_INSTALL_SHARED_LIB + $(INSTALL) -D -m 0644 $(@D)/lib/libbenejson.so \ + $(1)/usr/lib/libbenejson.so +endef +endif # Shared enabled + +define BENEJSON_BUILD_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) CROSS=$(TARGET_CROSS) \ + $(SCONS) $(BENEJSON_SCONS_TARGETS)) +endef + +define BENEJSON_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/include/benejson/benejson.h \ + $(STAGING_DIR)/usr/include/benejson/benejson.h; \ + $(INSTALL) -D -m 0644 $(@D)/include/benejson/pull.hh \ + $(STAGING_DIR)/usr/include/benejson/pull.hh + $(call BENEJSON_INSTALL_STATIC_LIB,$(STAGING_DIR)) + $(call BENEJSON_INSTALL_SHARED_LIB,$(STAGING_DIR)) +endef + +define BENEJSON_INSTALL_TARGET_CMDS + $(call BENEJSON_INSTALL_SHARED_LIB,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/berkeleydb/0001-cwd-db_config.patch b/buildroot/package/berkeleydb/0001-cwd-db_config.patch new file mode 100644 index 0000000..08ce5a3 --- /dev/null +++ b/buildroot/package/berkeleydb/0001-cwd-db_config.patch @@ -0,0 +1,21 @@ +Do not access DB_CONFIG when db_home is not set + +Fixes CVE-2017-10140: +https://bugzilla.redhat.com/show_bug.cgi?id=1464032#c9 + +Downloaded from +http://pkgs.fedoraproject.org/cgit/rpms/libdb.git/commit/?id=8047fa8580659fcae740c25e91b490539b8453eb + +Signed-off-by: Bernd Kuhls + +--- db-5.3.28/src/env/env_open.c.old 2017-06-26 10:32:11.011419981 +0200 ++++ db-5.3.28/src/env/env_open.c 2017-06-26 10:32:46.893721233 +0200 +@@ -473,7 +473,7 @@ + env->db_mode = mode == 0 ? DB_MODE_660 : mode; + + /* Read the DB_CONFIG file. */ +- if ((ret = __env_read_db_config(env)) != 0) ++ if (env->db_home != NULL && (ret = __env_read_db_config(env)) != 0) + return (ret); + + /* diff --git a/buildroot/package/berkeleydb/Config.in b/buildroot/package/berkeleydb/Config.in new file mode 100644 index 0000000..f32d13a --- /dev/null +++ b/buildroot/package/berkeleydb/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_BERKELEYDB + bool "berkeleydb" + help + The Berkeley database. A very common library for + database applications. + + http://www.sleepycat.com/products/db.shtml + +if BR2_PACKAGE_BERKELEYDB + +config BR2_PACKAGE_BERKELEYDB_COMPAT185 + bool "DB 1.85 compatibility" + help + Build and install DB 1.85 compatibility API. + +config BR2_PACKAGE_BERKELEYDB_TOOLS + bool "install tools" + help + Install berkeleydb tools, mostly useful for debugging + purposes. + +endif diff --git a/buildroot/package/berkeleydb/berkeleydb.hash b/buildroot/package/berkeleydb/berkeleydb.hash new file mode 100644 index 0000000..7529329 --- /dev/null +++ b/buildroot/package/berkeleydb/berkeleydb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 76a25560d9e52a198d37a31440fd07632b5f1f8f9f2b6d5438f4bc3e7c9013ef db-5.3.28.NC.tar.gz +sha256 b78815181a53241f9347c6b47d1031fd669946f863e1edc807a291354cec024b LICENSE diff --git a/buildroot/package/berkeleydb/berkeleydb.mk b/buildroot/package/berkeleydb/berkeleydb.mk new file mode 100644 index 0000000..a315943 --- /dev/null +++ b/buildroot/package/berkeleydb/berkeleydb.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# berkeleydb +# +################################################################################ + +# Since BerkeleyDB version 6 and above are licensed under the Affero +# GPL (AGPL), we want to keep this 'bdb' package at version 5.x to +# avoid licensing issues. +# BerkeleyDB version 6 or above should be provided by a dedicated +# package instead. +BERKELEYDB_VERSION = 5.3.28 +BERKELEYDB_SITE = http://download.oracle.com/berkeley-db +BERKELEYDB_SOURCE = db-$(BERKELEYDB_VERSION).NC.tar.gz +BERKELEYDB_SUBDIR = build_unix +BERKELEYDB_LICENSE = BerkeleyDB License +BERKELEYDB_LICENSE_FILES = LICENSE +BERKELEYDB_INSTALL_STAGING = YES +BERKELEYDB_BINARIES = db_archive db_checkpoint db_deadlock db_dump \ + db_hotbackup db_load db_log_verify db_printlog db_recover db_replicate \ + db_stat db_tuner db_upgrade db_verify + +# Internal error, aborting at dw2gencfi.c:214 in emit_expr_encoded +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79509 +ifeq ($(BR2_m68k_cf),y) +BERKELEYDB_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -fno-dwarf2-cfi-asm" +endif + +# build directory can't be the directory where configure are there, so.. +define BERKELEYDB_CONFIGURE_CMDS + (cd $(@D)/build_unix; rm -rf config.cache; \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + $(BERKELEYDB_CONF_ENV) \ + ../dist/configure $(QUIET) \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --exec-prefix=/usr \ + --sysconfdir=/etc \ + --with-gnu-ld \ + $(if $(BR2_INSTALL_LIBSTDCPP),--enable-cxx,--disable-cxx) \ + --disable-java \ + --disable-tcl \ + $(if $(BR2_PACKAGE_BERKELEYDB_COMPAT185),--enable-compat185,--disable-compat185) \ + $(SHARED_STATIC_LIBS_OPTS) \ + --with-pic \ + --enable-o_direct \ + $(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-mutexsupport,--disable-mutexsupport) \ + ) +endef + +ifneq ($(BR2_PACKAGE_BERKELEYDB_TOOLS),y) + +define BERKELEYDB_REMOVE_TOOLS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/, $(BERKELEYDB_BINARIES)) +endef + +BERKELEYDB_POST_INSTALL_TARGET_HOOKS += BERKELEYDB_REMOVE_TOOLS + +endif + +define BERKELEYDB_REMOVE_DOCS + rm -rf $(TARGET_DIR)/usr/docs +endef + +BERKELEYDB_POST_INSTALL_TARGET_HOOKS += BERKELEYDB_REMOVE_DOCS + +$(eval $(autotools-package)) diff --git a/buildroot/package/bind/0002-cross.patch b/buildroot/package/bind/0002-cross.patch new file mode 100644 index 0000000..5b4b1cd --- /dev/null +++ b/buildroot/package/bind/0002-cross.patch @@ -0,0 +1,18 @@ +Use host compiler to build 'gen' since it's run when building. + +Signed-off-by: Gustavo Zacarias + +diff -Nura bind-9.5.1-P1/lib/dns/Makefile.in bind-9.5.1-P1.gencross/lib/dns/Makefile.in +--- bind-9.5.1-P1/lib/dns/Makefile.in 2007-09-11 22:09:08.000000000 -0300 ++++ bind-9.5.1-P1.gencross/lib/dns/Makefile.in 2009-03-04 16:35:23.000000000 -0200 +@@ -160,8 +160,8 @@ + ./gen -s ${srcdir} > code.h + + gen: gen.c +- ${BUILD_CC} ${BUILD_CFLAGS} -I${top_srcdir}/lib/isc/include \ +- ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS} -o $@ ${srcdir}/gen.c ${BUILD_LIBS} ++ ${HOSTCC} ${HOST_CFLAGS} -I${top_srcdir}/lib/isc/include \ ++ ${HOST_LDFLAGS} -o $@ ${srcdir}/gen.c + + rbtdb64.@O@: rbtdb.c + diff --git a/buildroot/package/bind/0003-Rename-ptrsize-to-ptr_size.patch b/buildroot/package/bind/0003-Rename-ptrsize-to-ptr_size.patch new file mode 100644 index 0000000..e3b58e2 --- /dev/null +++ b/buildroot/package/bind/0003-Rename-ptrsize-to-ptr_size.patch @@ -0,0 +1,74 @@ +From 254dc19788ba2a03504fc6d1036fef477a60035f Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Fri, 22 Jan 2016 08:31:02 -0300 +Subject: [PATCH] Rename ptrsize to ptr_size + +This is to compensate for a uClibc mess caused by commit +70a04a287a2875c82e6822c36e071afba5b63a62 where ptrsize is defined for +mips, hence causing build breakage under certain conditions for programs +that use this variable name. + +Status: definitely not upstreamable. + +Signed-off-by: Gustavo Zacarias +--- + lib/dns/rbt.c | 6 +++--- + lib/dns/rbtdb.c | 4 ++-- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/lib/dns/rbt.c b/lib/dns/rbt.c +index 86b5183..5fd55de 100644 +--- a/lib/dns/rbt.c ++++ b/lib/dns/rbt.c +@@ -113,7 +113,7 @@ struct file_header { + * information about the system on which the map file was generated + * will be used to tell if we can load the map file or not + */ +- isc_uint32_t ptrsize; ++ isc_uint32_t ptr_size; + unsigned int bigendian:1; /* big or little endian system */ + unsigned int rdataset_fixed:1; /* compiled with --enable-rrset-fixed */ + unsigned int nodecount; /* shadow from rbt structure */ +@@ -517,7 +517,7 @@ write_header(FILE *file, dns_rbt_t *rbt, isc_uint64_t first_node_offset, + memmove(header.version1, FILE_VERSION, sizeof(header.version1)); + memmove(header.version2, FILE_VERSION, sizeof(header.version2)); + header.first_node_offset = first_node_offset; +- header.ptrsize = (isc_uint32_t) sizeof(void *); ++ header.ptr_size = (isc_uint32_t) sizeof(void *); + header.bigendian = (1 == htonl(1)) ? 1 : 0; + + #ifdef DNS_RDATASET_FIXED +@@ -902,7 +902,7 @@ dns_rbt_deserialize_tree(void *base_address, size_t filesize, + } + #endif + +- if (header->ptrsize != (isc_uint32_t) sizeof(void *)) { ++ if (header->ptr_size != (isc_uint32_t) sizeof(void *)) { + result = ISC_R_INVALIDFILE; + goto cleanup; + } +diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c +index c7168cb..dbcf944 100644 +--- a/lib/dns/rbtdb.c ++++ b/lib/dns/rbtdb.c +@@ -114,7 +114,7 @@ typedef struct rbtdb_file_header rbtdb_file_header_t; + + struct rbtdb_file_header { + char version1[32]; +- isc_uint32_t ptrsize; ++ isc_uint32_t ptr_size; + unsigned int bigendian:1; + isc_uint64_t tree; + isc_uint64_t nsec; +@@ -7593,7 +7593,7 @@ rbtdb_write_header(FILE *rbtfile, off_t tree_location, off_t nsec_location, + memset(&header, 0, sizeof(rbtdb_file_header_t)); + memmove(header.version1, FILE_VERSION, sizeof(header.version1)); + memmove(header.version2, FILE_VERSION, sizeof(header.version2)); +- header.ptrsize = (isc_uint32_t) sizeof(void *); ++ header.ptr_size = (isc_uint32_t) sizeof(void *); + header.bigendian = (1 == htonl(1)) ? 1 : 0; + header.tree = (isc_uint64_t) tree_location; + header.nsec = (isc_uint64_t) nsec_location; +-- +2.4.10 + diff --git a/buildroot/package/bind/Config.in b/buildroot/package/bind/Config.in new file mode 100644 index 0000000..049a90c --- /dev/null +++ b/buildroot/package/bind/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_BIND + bool "bind" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + BIND (Berkeley Internet Name Domain) is an + implementation of the Domain Name System (DNS) protocols + and provides an openly redistributable reference + implementation of the major components of the Domain + Name System, including: + + * a Domain Name System server (named) + * a Domain Name System resolver library + * tools for verifying the proper operation of the DNS + server + + The BIND DNS Server is used on the vast majority of name + serving machines on the Internet, providing a robust and + stable architecture on top of which an organization's naming + architecture can be built. The resolver library included in + the BIND distribution provides the standard APIs for + translation between domain names and Internet addresses and is + intended to be linked with applications requiring name + service. + + http://www.isc.org/sw/bind/ + +if BR2_PACKAGE_BIND + +config BR2_PACKAGE_BIND_SERVER + bool "Install server components" + default y + help + Install server components (named, lwresd) + +config BR2_PACKAGE_BIND_TOOLS + bool "Install tools" + help + Install tools (dig, host, nslookup, nsupdate) + +endif + +comment "bind needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/bind/S81named b/buildroot/package/bind/S81named new file mode 100644 index 0000000..bc4bb0f --- /dev/null +++ b/buildroot/package/bind/S81named @@ -0,0 +1,39 @@ +#!/bin/sh + +CONFIG=/etc/bind/named.conf +DAEMON=/usr/sbin/named + +[ -x $DAEMON ] || exit 0 +[ -f $CONFIG ] || exit 0 + +case "$1" in + start) + if [ ! -f /etc/rndc.key ]; then + printf "Initializing bind control key: " + # if rndc.key is a symlink, the target must exist + touch /etc/rndc.key + rndc-confgen -a -r /dev/urandom 2>/dev/null && echo "OK" || echo "FAIL" + fi + printf "Starting domain name daemon: " + start-stop-daemon -S -x $DAEMON -- -c $CONFIG -u named + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping domain name daemon: " + rndc stop || start-stop-daemon -K -x $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + $0 stop || true + sleep 1 + $0 start + ;; + reload|force-reload) + rndc reload || $0 restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 +esac + +exit 0 diff --git a/buildroot/package/bind/bind.hash b/buildroot/package/bind/bind.hash new file mode 100644 index 0000000..78f8015 --- /dev/null +++ b/buildroot/package/bind/bind.hash @@ -0,0 +1,4 @@ +# Verified from https://ftp.isc.org/isc/bind9/9.11.4/bind-9.11.4.tar.gz.asc +# with key BE0E9748B718253A28BB89FFF1B11BF05CF02E57 +sha256 595070b031f869f8939656b5a5d11b121211967f15f6afeafa895df745279617 bind-9.11.4.tar.gz +sha256 336f3c40e37a1a13690efb4c63e20908faa4c40498cc02f3579fb67d3a1933a5 COPYRIGHT diff --git a/buildroot/package/bind/bind.mk b/buildroot/package/bind/bind.mk new file mode 100644 index 0000000..4249291 --- /dev/null +++ b/buildroot/package/bind/bind.mk @@ -0,0 +1,122 @@ +################################################################################ +# +# bind +# +################################################################################ + +BIND_VERSION = 9.11.4 +BIND_SITE = http://ftp.isc.org/isc/bind9/$(BIND_VERSION) +# bind does not support parallel builds. +BIND_MAKE = $(MAKE1) +BIND_INSTALL_STAGING = YES +BIND_CONFIG_SCRIPTS = bind9-config isc-config.sh +BIND_LICENSE = MPL-2.0 +BIND_LICENSE_FILES = COPYRIGHT +BIND_TARGET_SERVER_SBIN = arpaname ddns-confgen dnssec-checkds dnssec-coverage +BIND_TARGET_SERVER_SBIN += dnssec-importkey dnssec-keygen dnssec-revoke +BIND_TARGET_SERVER_SBIN += dnssec-settime dnssec-verify genrandom +BIND_TARGET_SERVER_SBIN += isc-hmac-fixup named-journalprint nsec3hash +BIND_TARGET_SERVER_SBIN += lwresd named named-checkconf named-checkzone +BIND_TARGET_SERVER_SBIN += named-compilezone rndc rndc-confgen dnssec-dsfromkey +BIND_TARGET_SERVER_SBIN += dnssec-keyfromlabel dnssec-signzone +BIND_TARGET_TOOLS_BIN = dig host nslookup nsupdate +BIND_CONF_ENV = \ + BUILD_CC="$(TARGET_CC)" \ + BUILD_CFLAGS="$(TARGET_CFLAGS)" +BIND_CONF_OPTS = \ + --without-lmdb \ + --with-libjson=no \ + --with-randomdev=/dev/urandom \ + --enable-epoll \ + --with-libtool \ + --with-gssapi=no \ + --enable-filter-aaaa + +ifeq ($(BR2_PACKAGE_ZLIB),y) +BIND_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr +BIND_DEPENDENCIES += zlib +else +BIND_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +BIND_CONF_OPTS += --enable-linux-caps +BIND_DEPENDENCIES += libcap +else +BIND_CONF_OPTS += --disable-linux-caps +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +BIND_CONF_OPTS += --with-libxml2=$(STAGING_DIR)/usr --enable-newstats +BIND_DEPENDENCIES += libxml2 +else +BIND_CONF_OPTS += --with-libxml2=no +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +BIND_DEPENDENCIES += openssl +BIND_CONF_ENV += \ + ac_cv_func_EVP_sha256=yes \ + ac_cv_func_EVP_sha384=yes \ + ac_cv_func_EVP_sha512=yes +BIND_CONF_OPTS += \ + --with-openssl=$(STAGING_DIR)/usr LIBS="-lz" \ + --with-ecdsa=yes \ + --with-eddsa=no \ + --with-aes=yes +# GOST cipher support requires openssl extra engines +ifeq ($(BR2_PACKAGE_OPENSSL_ENGINES),y) +BIND_CONF_OPTS += --with-gost=yes +else +BIND_CONF_OPTS += --with-gost=no +endif +else +BIND_CONF_OPTS += --with-openssl=no +endif + +# Used by dnssec-checkds and dnssec-coverage +ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),) +BIND_CONF_OPTS += --with-python=no +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +BIND_DEPENDENCIES += readline +else +BIND_CONF_OPTS += --with-readline=no +endif + +define BIND_TARGET_REMOVE_SERVER + rm -rf $(addprefix $(TARGET_DIR)/usr/sbin/, $(BIND_TARGET_SERVER_SBIN)) +endef + +define BIND_TARGET_REMOVE_TOOLS + rm -rf $(addprefix $(TARGET_DIR)/usr/bin/, $(BIND_TARGET_TOOLS_BIN)) +endef + +ifeq ($(BR2_PACKAGE_BIND_SERVER),y) +define BIND_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/bind/S81named \ + $(TARGET_DIR)/etc/init.d/S81named +endef +define BIND_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/bind/named.service \ + $(TARGET_DIR)/usr/lib/systemd/system/named.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -sf /usr/lib/systemd/system/named.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/named.service +endef +else +BIND_POST_INSTALL_TARGET_HOOKS += BIND_TARGET_REMOVE_SERVER +endif + +ifeq ($(BR2_PACKAGE_BIND_TOOLS),) +BIND_POST_INSTALL_TARGET_HOOKS += BIND_TARGET_REMOVE_TOOLS +endif + +define BIND_USERS + named -1 named -1 * /etc/bind - - BIND daemon +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/bind/named.service b/buildroot/package/bind/named.service new file mode 100644 index 0000000..be0158b --- /dev/null +++ b/buildroot/package/bind/named.service @@ -0,0 +1,12 @@ +[Unit] +Description=BIND Domain Name Server +Documentation=man:named(8) +After=network.target + +[Service] +ExecStart=/usr/sbin/named -f -u named +ExecReload=/usr/sbin/rndc reload +ExecStop=/usr/sbin/rndc stop + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/binutils/2.27/0100-elf32-arm-no-data-fix.patch b/buildroot/package/binutils/2.27/0100-elf32-arm-no-data-fix.patch new file mode 100644 index 0000000..c6b0e7e --- /dev/null +++ b/buildroot/package/binutils/2.27/0100-elf32-arm-no-data-fix.patch @@ -0,0 +1,22 @@ +bfd/ChangeLog +2016-08-23 Nick Clifton + + * elf32-arm.c (elf32_arm_count_additional_relocs): Return zero if + there is no arm data associated with the section. + +[Thomas: taken from https://lists.gnu.org/archive/html/bug-binutils/2016-08/msg00165.html.] +Signed-off-by: Thomas Petazzoni + +diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c +index 1eba21b..4478238 100644 +--- a/bfd/elf32-arm.c ++++ b/bfd/elf32-arm.c +@@ -18688,7 +18688,7 @@ elf32_arm_count_additional_relocs (asection *sec) + { + struct _arm_elf_section_data *arm_data; + arm_data = get_arm_elf_section_data (sec); +- return arm_data->additional_reloc_count; ++ return arm_data == NULL ? 0 : arm_data->additional_reloc_count; + } + + /* Called to set the sh_flags, sh_link and sh_info fields of OSECTION which diff --git a/buildroot/package/binutils/2.27/0120-sh-conf.patch b/buildroot/package/binutils/2.27/0120-sh-conf.patch new file mode 100644 index 0000000..cc14ef4 --- /dev/null +++ b/buildroot/package/binutils/2.27/0120-sh-conf.patch @@ -0,0 +1,46 @@ +From 1ceee199e9a32034c6def7700fdbb26335ca76a3 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:38:13 +0100 +Subject: [PATCH] sh-conf + +Likewise, binutils has no idea about any of these new targets either, so we +fix that up too.. now we're able to actually build a real toolchain for +sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more +inept targets than that one, really. Go look, I promise). + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 34b66f7..905bc7b 100755 +--- a/configure ++++ b/configure +@@ -3939,7 +3939,7 @@ case "${target}" in + or1k*-*-*) + noconfigdirs="$noconfigdirs gdb" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index 4977d97..1e69ee2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1276,7 +1276,7 @@ case "${target}" in + or1k*-*-*) + noconfigdirs="$noconfigdirs gdb" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${target}" in + sh*-*-elf) + ;; +-- +2.4.3 + diff --git a/buildroot/package/binutils/2.27/0130-tc-xtensa.c-fixup-xg_reverse_shift_count-typo.patch b/buildroot/package/binutils/2.27/0130-tc-xtensa.c-fixup-xg_reverse_shift_count-typo.patch new file mode 100644 index 0000000..7973607 --- /dev/null +++ b/buildroot/package/binutils/2.27/0130-tc-xtensa.c-fixup-xg_reverse_shift_count-typo.patch @@ -0,0 +1,33 @@ +From 78fb7e37eb8bb08ae537d6c487996ff17c810332 Mon Sep 17 00:00:00 2001 +From: Trevor Saunders +Date: Mon, 26 Sep 2016 12:42:11 -0400 +Subject: [PATCH] tc-xtensa.c: fixup xg_reverse_shift_count typo + +gas/ChangeLog: + +2016-09-26 Trevor Saunders + + * config/tc-xtensa.c (xg_reverse_shift_count): Pass cnt_arg instead of + cnt_argp to concat. + +Signed-off-by: Max Filippov +--- + gas/config/tc-xtensa.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c +index d062044..ca261ae 100644 +--- a/gas/config/tc-xtensa.c ++++ b/gas/config/tc-xtensa.c +@@ -2228,7 +2228,7 @@ xg_reverse_shift_count (char **cnt_argp) + cnt_arg = *cnt_argp; + + /* replace the argument with "31-(argument)" */ +- new_arg = concat ("31-(", cnt_argp, ")", (char *) NULL); ++ new_arg = concat ("31-(", cnt_arg, ")", (char *) NULL); + + free (cnt_arg); + *cnt_argp = new_arg; +-- +2.1.4 + diff --git a/buildroot/package/binutils/2.27/0131-xtensa-fix-memory-corruption-by-broken-sysregs.patch b/buildroot/package/binutils/2.27/0131-xtensa-fix-memory-corruption-by-broken-sysregs.patch new file mode 100644 index 0000000..30103ee --- /dev/null +++ b/buildroot/package/binutils/2.27/0131-xtensa-fix-memory-corruption-by-broken-sysregs.patch @@ -0,0 +1,42 @@ +From 3c8788dbb70b40e737d4b8e30cab81406e5c5091 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Wed, 2 Aug 2017 00:36:05 -0700 +Subject: [PATCH] xtensa: fix memory corruption by broken sysregs + +In some xtensa configurations there may be system/user registers in +xtensa-modules with negative index. ISA initialization for such config +may clobber heap and result in program termination. +Don't update lookup table entries for register with negative indices. +They are not directly accessible via RSR/WSR/XSR or RUR/WUR, so this +change should not affect processing of valid assembly/binary code. + +bfd/ +2017-08-02 Max Filippov + + * xtensa-isa.c (xtensa_isa_init): Don't update lookup table + entries for sysregs with negative indices. + +Signed-off-by: Max Filippov +--- +Backported from: d84ed528d4817b0ff854006b65a9f6ec75f0407a + + bfd/xtensa-isa.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bfd/xtensa-isa.c b/bfd/xtensa-isa.c +index 8da75bea8109..8c6ee88fdeae 100644 +--- a/bfd/xtensa-isa.c ++++ b/bfd/xtensa-isa.c +@@ -292,7 +292,8 @@ xtensa_isa_init (xtensa_isa_status *errno_p, char **error_msg_p) + xtensa_sysreg_internal *sreg = &isa->sysregs[n]; + is_user = sreg->is_user; + +- isa->sysreg_table[is_user][sreg->number] = n; ++ if (sreg->number >= 0) ++ isa->sysreg_table[is_user][sreg->number] = n; + } + + /* Set up the interface lookup table. */ +-- +2.1.4 + diff --git a/buildroot/package/binutils/2.27/0300-ld-makefile.patch b/buildroot/package/binutils/2.27/0300-ld-makefile.patch new file mode 100644 index 0000000..73cc098 --- /dev/null +++ b/buildroot/package/binutils/2.27/0300-ld-makefile.patch @@ -0,0 +1,41 @@ +From d76a7549b43974fe8564971a3f40459bc495a8a7 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:40:53 +0100 +Subject: [PATCH] ld-makefile + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/Makefile.am | 2 +- + ld/Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ld/Makefile.am b/ld/Makefile.am +index 0b3b049..3871c74 100644 +--- a/ld/Makefile.am ++++ b/ld/Makefile.am +@@ -57,7 +57,7 @@ endif + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + + EMUL = @EMUL@ + EMULATION_OFILES = @EMULATION_OFILES@ +diff --git a/ld/Makefile.in b/ld/Makefile.in +index ed98f87..530e4c9 100644 +--- a/ld/Makefile.in ++++ b/ld/Makefile.in +@@ -413,7 +413,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + BASEDIR = $(srcdir)/.. + BFDDIR = $(BASEDIR)/bfd + INCDIR = $(BASEDIR)/include +-- +2.4.3 + diff --git a/buildroot/package/binutils/2.27/0301-check-ldrunpath-length.patch b/buildroot/package/binutils/2.27/0301-check-ldrunpath-length.patch new file mode 100644 index 0000000..3b4c204 --- /dev/null +++ b/buildroot/package/binutils/2.27/0301-check-ldrunpath-length.patch @@ -0,0 +1,36 @@ +From ebe1cba46df52d7bf86def3d681271fd05fb453b Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:41:47 +0100 +Subject: [PATCH] check-ldrunpath-length + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/emultempl/elf32.em | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em +index 0405d4f..efd3300 100644 +--- a/ld/emultempl/elf32.em ++++ b/ld/emultempl/elf32.em +@@ -1242,6 +1242,8 @@ fragment <link.next) + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) +-- +2.4.3 + diff --git a/buildroot/package/binutils/2.27/0500-add-sysroot-fix-from-bug-3049.patch b/buildroot/package/binutils/2.27/0500-add-sysroot-fix-from-bug-3049.patch new file mode 100644 index 0000000..f67a43e --- /dev/null +++ b/buildroot/package/binutils/2.27/0500-add-sysroot-fix-from-bug-3049.patch @@ -0,0 +1,52 @@ +From 30628870e583375f8927c04398c7219c6e9f703c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:42:48 +0100 +Subject: [PATCH] add sysroot fix from bug #3049 + +Always try to prepend the sysroot prefix to absolute filenames first. + +http://bugs.gentoo.org/275666 +http://sourceware.org/bugzilla/show_bug.cgi?id=10340 + +Signed-off-by: Sven Rebhan +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/ldfile.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/ld/ldfile.c b/ld/ldfile.c +index 96f9ecc..1439309 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -335,18 +335,25 @@ ldfile_open_file_search (const char *arch, + directory first. */ + if (! entry->flags.maybe_archive) + { +- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)) ++ /* For absolute pathnames, try to always open the file in the ++ sysroot first. If this fails, try to open the file at the ++ given location. */ ++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename); ++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename) ++ && ld_sysroot) + { + char *name = concat (ld_sysroot, entry->filename, + (const char *) NULL); + if (ldfile_try_open_bfd (name, entry)) + { + entry->filename = name; ++ entry->flags.sysrooted = TRUE; + return TRUE; + } + free (name); + } +- else if (ldfile_try_open_bfd (entry->filename, entry)) ++ ++ if (ldfile_try_open_bfd (entry->filename, entry)) + return TRUE; + + if (IS_ABSOLUTE_PATH (entry->filename)) +-- +2.4.3 + diff --git a/buildroot/package/binutils/2.27/0600-poison-system-directories.patch b/buildroot/package/binutils/2.27/0600-poison-system-directories.patch new file mode 100644 index 0000000..d16994e --- /dev/null +++ b/buildroot/package/binutils/2.27/0600-poison-system-directories.patch @@ -0,0 +1,306 @@ +From be366461dd49e760440fb28eaee5164eb281adcc Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texinfo | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index 276fb77..35c58eb 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -14,6 +14,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index a446283..d1f9504 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -786,6 +786,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1442,6 +1443,8 @@ Optional Features: + --disable-largefile omit support for large files + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15491,7 +15494,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index 188172d..2cd8443 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -95,6 +95,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + dnl "install_as_default" is set to false if gold is the default linker. + dnl "installed_linker" is the installed BFD linker name. +diff --git a/ld/ld.h b/ld/ld.h +index d84ec4e..3476b26 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -164,6 +164,14 @@ typedef struct { + /* If set, display the target memory usage (per memory region). */ + bfd_boolean print_memory_usage; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bfd_boolean poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bfd_boolean error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texinfo b/ld/ld.texinfo +index 1dd7492..fb1438e 100644 +--- a/ld/ld.texinfo ++++ b/ld/ld.texinfo +@@ -2332,6 +2332,18 @@ string identifying the original linked file does not change. + + Passing @code{none} for @var{style} disables the setting from any + @code{--build-id} options earlier on the command line. ++ ++@kindex --no-poison-system-directories ++@item --no-poison-system-directories ++Do not warn for @option{-L} options using system directories such as ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@item --error-poison-system-directories ++Give an error instead of a warning for @option{-L} options using ++system directories when cross linking. + @end table + + @c man end +diff --git a/ld/ldfile.c b/ld/ldfile.c +index 1439309..086b354 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -114,6 +114,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline) + new_dirs->name = concat (ld_sysroot, name + 1, (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 6f11e7b..0ca3110 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -144,6 +144,8 @@ enum option_values + OPTION_PRINT_MEMORY_USAGE, + OPTION_REQUIRE_DEFINED_SYMBOL, + OPTION_ORPHAN_HANDLING, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + }; + + /* The initial parser states. */ +diff --git a/ld/ldmain.c b/ld/ldmain.c +index bb0b9cc..a23c56c 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -257,6 +257,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = TRUE; ++ command_line.error_poison_system_directories = FALSE; + + /* We initialize DEMANGLING based on the environment variable + COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the +diff --git a/ld/lexsup.c b/ld/lexsup.c +index 4cad209..be7d584 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -530,6 +530,14 @@ static const struct ld_option ld_options[] = + { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, + '\0', N_("=MODE"), N_("Control how orphan sections are handled."), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -542,6 +550,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1516,6 +1525,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = FALSE; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = TRUE; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1559,6 +1576,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = TRUE; ++ + while (ingroup) + { + lang_leave_group (); +-- +2.4.3 + diff --git a/buildroot/package/binutils/2.27/0900-Revert-part-Set-dynamic-tag-VMA-and-size-from-dynami.patch b/buildroot/package/binutils/2.27/0900-Revert-part-Set-dynamic-tag-VMA-and-size-from-dynami.patch new file mode 100644 index 0000000..f1ec259 --- /dev/null +++ b/buildroot/package/binutils/2.27/0900-Revert-part-Set-dynamic-tag-VMA-and-size-from-dynami.patch @@ -0,0 +1,36 @@ +From c646b02fdcae5f37bd88f33a0c4683ef13ad5c82 Mon Sep 17 00:00:00 2001 +From: Alan Modra +Date: Mon, 31 Oct 2016 12:46:38 +1030 +Subject: [PATCH] Revert part "Set dynamic tag VMA and size from dynamic + section when possible" + + PR 20748 + * elf32-microblaze.c (microblaze_elf_finish_dynamic_sections): Revert + 2016-05-13 change. + +Signed-off-by: Alan Modra +Signed-off-by: Waldemar Brodkorb + +diff --git a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c +index 477e7b3..5c66808 100644 +--- a/bfd/elf32-microblaze.c ++++ b/bfd/elf32-microblaze.c +@@ -3396,13 +3396,13 @@ microblaze_elf_finish_dynamic_sections (bfd *output_bfd, + { + asection *s; + +- s = bfd_get_linker_section (dynobj, name); ++ s = bfd_get_section_by_name (output_bfd, name); + if (s == NULL) + dyn.d_un.d_val = 0; + else + { + if (! size) +- dyn.d_un.d_ptr = s->output_section->vma + s->output_offset; ++ dyn.d_un.d_ptr = s->vma; + else + dyn.d_un.d_val = s->size; + } +-- +2.1.4 + diff --git a/buildroot/package/binutils/2.27/0905-bfin-rofixup-bug.patch b/buildroot/package/binutils/2.27/0905-bfin-rofixup-bug.patch new file mode 100644 index 0000000..da9d586 --- /dev/null +++ b/buildroot/package/binutils/2.27/0905-bfin-rofixup-bug.patch @@ -0,0 +1,21 @@ +Fixes: LINKER BUG: .rofixup section size mismatch + +Workaround from adi-toolchain commit: +af414ec1fb628ddb1562f062f3db49823ca14ca2 +[#6798] binutils-2.21/bfd: temp workaround for rofixup mismatch errors. + +Signed-off-by: Waldemar Brodkorb + +diff -Nur binutils-2.26.1.orig/bfd/elf32-bfin.c binutils-2.26.1/bfd/elf32-bfin.c +--- binutils-2.26.1.orig/bfd/elf32-bfin.c 2015-11-13 09:27:40.000000000 +0100 ++++ binutils-2.26.1/bfd/elf32-bfin.c 2016-07-31 00:50:48.357995132 +0200 +@@ -4879,7 +4879,8 @@ + + case R_BFIN_FUNCDESC: + picrel->fd++; +- picrel->relocsfd++; ++ if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) ++ picrel->relocsfd++; + break; + + /* This relocation describes the C++ object vtable hierarchy. diff --git a/buildroot/package/binutils/2.27/0906-microblaze-pr21180.patch b/buildroot/package/binutils/2.27/0906-microblaze-pr21180.patch new file mode 100644 index 0000000..48e5e14 --- /dev/null +++ b/buildroot/package/binutils/2.27/0906-microblaze-pr21180.patch @@ -0,0 +1,33 @@ +Fix ld segfault for microblaze when --gc-sections is used +Upstream: pending +https://sourceware.org/bugzilla/show_bug.cgi?id=21180 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur binutils-2.27.orig/bfd/elf32-microblaze.c binutils-2.27/bfd/elf32-microblaze.c +--- binutils-2.27.orig/bfd/elf32-microblaze.c 2016-08-03 09:36:50.000000000 +0200 ++++ binutils-2.27/bfd/elf32-microblaze.c 2017-02-23 19:43:12.612313590 +0100 +@@ -3297,13 +3297,20 @@ + || h->dynindx == -1)) + { + asection *sec = h->root.u.def.section; ++ bfd_vma value; ++ ++ value = h->root.u.def.value; ++ if (sec->output_section != NULL) ++ /* PR 21180: If the output section is NULL, then the symbol is no ++ longer needed, and in theory the GOT entry is redundant. But ++ it is too late to change our minds now... */ ++ value += sec->output_section->vma + sec->output_offset; ++ + microblaze_elf_output_dynamic_relocation (output_bfd, + srela, srela->reloc_count++, + /* symindex= */ 0, + R_MICROBLAZE_REL, offset, +- h->root.u.def.value +- + sec->output_section->vma +- + sec->output_offset); ++ value); + } + else + { diff --git a/buildroot/package/binutils/2.27/0907-Automatically-enable-CRC-instructions-on-supported-A.patch b/buildroot/package/binutils/2.27/0907-Automatically-enable-CRC-instructions-on-supported-A.patch new file mode 100644 index 0000000..3b7fcfc --- /dev/null +++ b/buildroot/package/binutils/2.27/0907-Automatically-enable-CRC-instructions-on-supported-A.patch @@ -0,0 +1,88 @@ +From 29a4659015ca7044c2d425d32a0b828e0fbb5ac1 Mon Sep 17 00:00:00 2001 +From: Richard Earnshaw +Date: Wed, 7 Sep 2016 17:14:54 +0100 +Subject: [PATCH] Automatically enable CRC instructions on supported ARMv8-A + CPUs. + +2016-09-07 Richard Earnshaw + + * opcode/arm.h (ARM_ARCH_V8A_CRC): New architecture. + +2016-09-07 Richard Earnshaw + + * config/tc-arm.c ((arm_cpus): Use ARM_ARCH_V8A_CRC for all + ARMv8-A CPUs except xgene1. + +Upstream: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=patch;h=27e5a270962fb92c07e7d476966ba380fa3bb68e +Signed-off-by: Peter Seiderer +--- + gas/config/tc-arm.c | 18 +++++++++--------- + include/opcode/arm.h | 2 ++ + 2 files changed, 11 insertions(+), 9 deletions(-) + +diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c +index 73d05316..7c86184d 100644 +--- a/gas/config/tc-arm.c ++++ b/gas/config/tc-arm.c +@@ -25332,17 +25332,17 @@ static const struct arm_cpu_option_table arm_cpus[] = + "Cortex-A15"), + ARM_CPU_OPT ("cortex-a17", ARM_ARCH_V7VE, FPU_ARCH_NEON_VFP_V4, + "Cortex-A17"), +- ARM_CPU_OPT ("cortex-a32", ARM_ARCH_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, ++ ARM_CPU_OPT ("cortex-a32", ARM_ARCH_V8A_CRC, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, + "Cortex-A32"), +- ARM_CPU_OPT ("cortex-a35", ARM_ARCH_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, ++ ARM_CPU_OPT ("cortex-a35", ARM_ARCH_V8A_CRC, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, + "Cortex-A35"), +- ARM_CPU_OPT ("cortex-a53", ARM_ARCH_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, ++ ARM_CPU_OPT ("cortex-a53", ARM_ARCH_V8A_CRC, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, + "Cortex-A53"), +- ARM_CPU_OPT ("cortex-a57", ARM_ARCH_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, ++ ARM_CPU_OPT ("cortex-a57", ARM_ARCH_V8A_CRC, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, + "Cortex-A57"), +- ARM_CPU_OPT ("cortex-a72", ARM_ARCH_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, ++ ARM_CPU_OPT ("cortex-a72", ARM_ARCH_V8A_CRC, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, + "Cortex-A72"), +- ARM_CPU_OPT ("cortex-a73", ARM_ARCH_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, ++ ARM_CPU_OPT ("cortex-a73", ARM_ARCH_V8A_CRC, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, + "Cortex-A73"), + ARM_CPU_OPT ("cortex-r4", ARM_ARCH_V7R, FPU_NONE, "Cortex-R4"), + ARM_CPU_OPT ("cortex-r4f", ARM_ARCH_V7R, FPU_ARCH_VFP_V3D16, +@@ -25361,10 +25361,10 @@ static const struct arm_cpu_option_table arm_cpus[] = + ARM_CPU_OPT ("cortex-m1", ARM_ARCH_V6SM, FPU_NONE, "Cortex-M1"), + ARM_CPU_OPT ("cortex-m0", ARM_ARCH_V6SM, FPU_NONE, "Cortex-M0"), + ARM_CPU_OPT ("cortex-m0plus", ARM_ARCH_V6SM, FPU_NONE, "Cortex-M0+"), +- ARM_CPU_OPT ("exynos-m1", ARM_ARCH_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, ++ ARM_CPU_OPT ("exynos-m1", ARM_ARCH_V8A_CRC, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, + "Samsung " \ + "Exynos M1"), +- ARM_CPU_OPT ("qdf24xx", ARM_ARCH_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, ++ ARM_CPU_OPT ("qdf24xx", ARM_ARCH_V8A_CRC, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, + "Qualcomm " + "QDF24XX"), + +@@ -25389,7 +25389,7 @@ static const struct arm_cpu_option_table arm_cpus[] = + /* APM X-Gene family. */ + ARM_CPU_OPT ("xgene1", ARM_ARCH_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, + "APM X-Gene 1"), +- ARM_CPU_OPT ("xgene2", ARM_ARCH_V8A, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, ++ ARM_CPU_OPT ("xgene2", ARM_ARCH_V8A_CRC, FPU_ARCH_CRYPTO_NEON_VFP_ARMV8, + "APM X-Gene 2"), + + { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE, NULL } +diff --git a/include/opcode/arm.h b/include/opcode/arm.h +index 60715cf8..feace5cd 100644 +--- a/include/opcode/arm.h ++++ b/include/opcode/arm.h +@@ -263,6 +263,8 @@ + #define ARM_ARCH_V7M ARM_FEATURE_CORE (ARM_AEXT_V7M, ARM_EXT2_V6T2_V8M) + #define ARM_ARCH_V7EM ARM_FEATURE_CORE (ARM_AEXT_V7EM, ARM_EXT2_V6T2_V8M) + #define ARM_ARCH_V8A ARM_FEATURE_CORE (ARM_AEXT_V8A, ARM_AEXT2_V8A) ++#define ARM_ARCH_V8A_CRC ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8A, \ ++ CRC_EXT_ARMV8) + #define ARM_ARCH_V8_1A ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8_1A, \ + CRC_EXT_ARMV8 | FPU_NEON_EXT_RDMA) + #define ARM_ARCH_V8_2A ARM_FEATURE (ARM_AEXT_V8A, ARM_AEXT2_V8_2A, \ +-- +2.11.0 + diff --git a/buildroot/package/binutils/2.28.1/0120-sh-conf.patch b/buildroot/package/binutils/2.28.1/0120-sh-conf.patch new file mode 100644 index 0000000..f775998 --- /dev/null +++ b/buildroot/package/binutils/2.28.1/0120-sh-conf.patch @@ -0,0 +1,46 @@ +From 1ceee199e9a32034c6def7700fdbb26335ca76a3 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:38:13 +0100 +Subject: [PATCH] sh-conf + +Likewise, binutils has no idea about any of these new targets either, so we +fix that up too.. now we're able to actually build a real toolchain for +sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more +inept targets than that one, really. Go look, I promise). + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 34b66f7..905bc7b 100755 +--- a/configure ++++ b/configure +@@ -3943,7 +3943,7 @@ case "${target}" in + or1k*-*-*) + noconfigdirs="$noconfigdirs gdb" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index 4977d97..1e69ee2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1279,7 +1279,7 @@ case "${target}" in + or1k*-*-*) + noconfigdirs="$noconfigdirs gdb" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${target}" in + sh*-*-elf) + ;; +-- +2.4.3 + diff --git a/buildroot/package/binutils/2.28.1/0131-xtensa-fix-memory-corruption-by-broken-sysregs.patch b/buildroot/package/binutils/2.28.1/0131-xtensa-fix-memory-corruption-by-broken-sysregs.patch new file mode 100644 index 0000000..30103ee --- /dev/null +++ b/buildroot/package/binutils/2.28.1/0131-xtensa-fix-memory-corruption-by-broken-sysregs.patch @@ -0,0 +1,42 @@ +From 3c8788dbb70b40e737d4b8e30cab81406e5c5091 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Wed, 2 Aug 2017 00:36:05 -0700 +Subject: [PATCH] xtensa: fix memory corruption by broken sysregs + +In some xtensa configurations there may be system/user registers in +xtensa-modules with negative index. ISA initialization for such config +may clobber heap and result in program termination. +Don't update lookup table entries for register with negative indices. +They are not directly accessible via RSR/WSR/XSR or RUR/WUR, so this +change should not affect processing of valid assembly/binary code. + +bfd/ +2017-08-02 Max Filippov + + * xtensa-isa.c (xtensa_isa_init): Don't update lookup table + entries for sysregs with negative indices. + +Signed-off-by: Max Filippov +--- +Backported from: d84ed528d4817b0ff854006b65a9f6ec75f0407a + + bfd/xtensa-isa.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bfd/xtensa-isa.c b/bfd/xtensa-isa.c +index 8da75bea8109..8c6ee88fdeae 100644 +--- a/bfd/xtensa-isa.c ++++ b/bfd/xtensa-isa.c +@@ -292,7 +292,8 @@ xtensa_isa_init (xtensa_isa_status *errno_p, char **error_msg_p) + xtensa_sysreg_internal *sreg = &isa->sysregs[n]; + is_user = sreg->is_user; + +- isa->sysreg_table[is_user][sreg->number] = n; ++ if (sreg->number >= 0) ++ isa->sysreg_table[is_user][sreg->number] = n; + } + + /* Set up the interface lookup table. */ +-- +2.1.4 + diff --git a/buildroot/package/binutils/2.28.1/0300-ld-makefile.patch b/buildroot/package/binutils/2.28.1/0300-ld-makefile.patch new file mode 100644 index 0000000..6710195 --- /dev/null +++ b/buildroot/package/binutils/2.28.1/0300-ld-makefile.patch @@ -0,0 +1,41 @@ +From d76a7549b43974fe8564971a3f40459bc495a8a7 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:40:53 +0100 +Subject: [PATCH] ld-makefile + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/Makefile.am | 2 +- + ld/Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ld/Makefile.am b/ld/Makefile.am +index 0b3b049..3871c74 100644 +--- a/ld/Makefile.am ++++ b/ld/Makefile.am +@@ -57,7 +57,7 @@ endif + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + + EMUL = @EMUL@ + EMULATION_OFILES = @EMULATION_OFILES@ +diff --git a/ld/Makefile.in b/ld/Makefile.in +index ed98f87..530e4c9 100644 +--- a/ld/Makefile.in ++++ b/ld/Makefile.in +@@ -452,7 +452,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + BASEDIR = $(srcdir)/.. + BFDDIR = $(BASEDIR)/bfd + INCDIR = $(BASEDIR)/include +-- +2.4.3 + diff --git a/buildroot/package/binutils/2.28.1/0301-check-ldrunpath-length.patch b/buildroot/package/binutils/2.28.1/0301-check-ldrunpath-length.patch new file mode 100644 index 0000000..8d673dc --- /dev/null +++ b/buildroot/package/binutils/2.28.1/0301-check-ldrunpath-length.patch @@ -0,0 +1,36 @@ +From ebe1cba46df52d7bf86def3d681271fd05fb453b Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:41:47 +0100 +Subject: [PATCH] check-ldrunpath-length + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/emultempl/elf32.em | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em +index 0405d4f..efd3300 100644 +--- a/ld/emultempl/elf32.em ++++ b/ld/emultempl/elf32.em +@@ -1411,6 +1411,8 @@ fragment <link.next) + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) +-- +2.4.3 + diff --git a/buildroot/package/binutils/2.28.1/0500-add-sysroot-fix-from-bug-3049.patch b/buildroot/package/binutils/2.28.1/0500-add-sysroot-fix-from-bug-3049.patch new file mode 100644 index 0000000..0331088 --- /dev/null +++ b/buildroot/package/binutils/2.28.1/0500-add-sysroot-fix-from-bug-3049.patch @@ -0,0 +1,48 @@ +From 30628870e583375f8927c04398c7219c6e9f703c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:42:48 +0100 +Subject: [PATCH] add sysroot fix from bug #3049 + +Always try to prepend the sysroot prefix to absolute filenames first. + +http://bugs.gentoo.org/275666 +http://sourceware.org/bugzilla/show_bug.cgi?id=10340 + +Signed-off-by: Sven Rebhan +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/ldfile.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/ld/ldfile.c diff --git b/ld/ldfile.c +--- a/ld/ldfile.c 2017-03-02 03:23:54.000000000 -0500 ++++ b/ld/ldfile.c 2017-03-20 09:52:27.687415942 -0400 +@@ -336,18 +336,24 @@ + directory first. */ + if (!entry->flags.maybe_archive) + { +- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)) ++ /* For absolute pathnames, try to always open the file in the ++ sysroot first. If this fails, try to open the file at the ++ given location. */ ++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename); ++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename) ++ && ld_sysroot) + { + char *name = concat (ld_sysroot, entry->filename, + (const char *) NULL); + if (ldfile_try_open_bfd (name, entry)) + { + entry->filename = name; ++ entry->flags.sysrooted = TRUE; + return TRUE; + } + free (name); + } +- else if (ldfile_try_open_bfd (entry->filename, entry)) ++ if (ldfile_try_open_bfd (entry->filename, entry)) + return TRUE; + + if (IS_ABSOLUTE_PATH (entry->filename)) + diff --git a/buildroot/package/binutils/2.28.1/0600-poison-system-directories.patch b/buildroot/package/binutils/2.28.1/0600-poison-system-directories.patch new file mode 100644 index 0000000..bb1a7b4 --- /dev/null +++ b/buildroot/package/binutils/2.28.1/0600-poison-system-directories.patch @@ -0,0 +1,306 @@ +From be366461dd49e760440fb28eaee5164eb281adcc Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texinfo | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index 276fb77..35c58eb 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -17,6 +17,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index a446283..d1f9504 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -789,6 +789,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1446,6 +1447,8 @@ Optional Features: + --disable-largefile omit support for large files + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15499,7 +15502,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index 188172d..2cd8443 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -95,6 +95,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + dnl "install_as_default" is set to false if gold is the default linker. + dnl "installed_linker" is the installed BFD linker name. +diff --git a/ld/ld.h b/ld/ld.h +index d84ec4e..3476b26 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -172,6 +172,14 @@ typedef struct { + /* If set, display the target memory usage (per memory region). */ + bfd_boolean print_memory_usage; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bfd_boolean poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bfd_boolean error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texinfo b/ld/ld.texinfo +index 1dd7492..fb1438e 100644 +--- a/ld/ld.texinfo ++++ b/ld/ld.texinfo +@@ -2403,6 +2403,18 @@ string identifying the original linked file does not change. + + Passing @code{none} for @var{style} disables the setting from any + @code{--build-id} options earlier on the command line. ++ ++@kindex --no-poison-system-directories ++@item --no-poison-system-directories ++Do not warn for @option{-L} options using system directories such as ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@item --error-poison-system-directories ++Give an error instead of a warning for @option{-L} options using ++system directories when cross linking. + @end table + + @c man end +diff --git a/ld/ldfile.c b/ld/ldfile.c +index 1439309..086b354 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -114,6 +114,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline) + new_dirs->name = concat (ld_sysroot, name + 1, (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 6f11e7b..0ca3110 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -146,6 +146,8 @@ enum option_values + OPTION_PRINT_MEMORY_USAGE, + OPTION_REQUIRE_DEFINED_SYMBOL, + OPTION_ORPHAN_HANDLING, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + }; + + /* The initial parser states. */ +diff --git a/ld/ldmain.c b/ld/ldmain.c +index bb0b9cc..a23c56c 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -270,6 +270,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = TRUE; ++ command_line.error_poison_system_directories = FALSE; + + /* We initialize DEMANGLING based on the environment variable + COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the +diff --git a/ld/lexsup.c b/ld/lexsup.c +index 4cad209..be7d584 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -535,6 +535,14 @@ static const struct ld_option ld_options[] = + { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, + '\0', N_("=MODE"), N_("Control how orphan sections are handled."), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -547,6 +555,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1528,6 +1537,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = FALSE; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = TRUE; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1571,6 +1588,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = TRUE; ++ + while (ingroup) + { + lang_leave_group (); +-- +2.4.3 + diff --git a/buildroot/package/binutils/2.28.1/0905-bfin-rofixup-bug.patch b/buildroot/package/binutils/2.28.1/0905-bfin-rofixup-bug.patch new file mode 100644 index 0000000..5733b21 --- /dev/null +++ b/buildroot/package/binutils/2.28.1/0905-bfin-rofixup-bug.patch @@ -0,0 +1,21 @@ +Fixes: LINKER BUG: .rofixup section size mismatch + +Workaround from adi-toolchain commit: +af414ec1fb628ddb1562f062f3db49823ca14ca2 +[#6798] binutils-2.21/bfd: temp workaround for rofixup mismatch errors. + +Signed-off-by: Waldemar Brodkorb + +diff -Nur binutils-2.26.1.orig/bfd/elf32-bfin.c binutils-2.26.1/bfd/elf32-bfin.c +--- binutils-2.26.1.orig/bfd/elf32-bfin.c 2015-11-13 09:27:40.000000000 +0100 ++++ binutils-2.26.1/bfd/elf32-bfin.c 2016-07-31 00:50:48.357995132 +0200 +@@ -4845,7 +4845,8 @@ + + case R_BFIN_FUNCDESC: + picrel->fd++; +- picrel->relocsfd++; ++ if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) ++ picrel->relocsfd++; + break; + + /* This relocation describes the C++ object vtable hierarchy. diff --git a/buildroot/package/binutils/2.28.1/0906-microblaze-pr21180.patch b/buildroot/package/binutils/2.28.1/0906-microblaze-pr21180.patch new file mode 100644 index 0000000..52ac4fd --- /dev/null +++ b/buildroot/package/binutils/2.28.1/0906-microblaze-pr21180.patch @@ -0,0 +1,33 @@ +Fix ld segfault for microblaze when --gc-sections is used +Upstream: pending +https://sourceware.org/bugzilla/show_bug.cgi?id=21180 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur a/bfd/elf32-microblaze.c b/bfd/elf32-microblaze.c +--- a/bfd/elf32-microblaze.c 2016-08-03 09:36:50.000000000 +0200 ++++ b/bfd/elf32-microblaze.c 2017-02-23 19:43:12.612313590 +0100 +@@ -3233,13 +3233,20 @@ + || h->dynindx == -1)) + { + asection *sec = h->root.u.def.section; ++ bfd_vma value; ++ ++ value = h->root.u.def.value; ++ if (sec->output_section != NULL) ++ /* PR 21180: If the output section is NULL, then the symbol is no ++ longer needed, and in theory the GOT entry is redundant. But ++ it is too late to change our minds now... */ ++ value += sec->output_section->vma + sec->output_offset; ++ + microblaze_elf_output_dynamic_relocation (output_bfd, + srela, srela->reloc_count++, + /* symindex= */ 0, + R_MICROBLAZE_REL, offset, +- h->root.u.def.value +- + sec->output_section->vma +- + sec->output_offset); ++ value); + } + else + { diff --git a/buildroot/package/binutils/2.29.1/0001-sh-conf.patch b/buildroot/package/binutils/2.29.1/0001-sh-conf.patch new file mode 100644 index 0000000..3c9ef62 --- /dev/null +++ b/buildroot/package/binutils/2.29.1/0001-sh-conf.patch @@ -0,0 +1,48 @@ +From fdb0d1d63d8dc30b319db174f2a90e681d8cd2ed Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:38:13 +0100 +Subject: [PATCH] sh-conf + +Likewise, binutils has no idea about any of these new targets either, so we +fix that up too.. now we're able to actually build a real toolchain for +sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more +inept targets than that one, really. Go look, I promise). + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Thomas: rebase on top of 2.29, in which sh64 support was removed.] +Signed-off-by: Thomas Petazzoni +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index be9dd89..3c0f4c6 100755 +--- a/configure ++++ b/configure +@@ -3844,7 +3844,7 @@ case "${target}" in + or1k*-*-*) + noconfigdirs="$noconfigdirs gdb" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index 532c5c2..4f40318 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1178,7 +1178,7 @@ case "${target}" in + or1k*-*-*) + noconfigdirs="$noconfigdirs gdb" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +-- +2.9.4 + diff --git a/buildroot/package/binutils/2.29.1/0002-ld-makefile.patch b/buildroot/package/binutils/2.29.1/0002-ld-makefile.patch new file mode 100644 index 0000000..a7cd71e --- /dev/null +++ b/buildroot/package/binutils/2.29.1/0002-ld-makefile.patch @@ -0,0 +1,41 @@ +From d4e18ebc6ad810167a2de84b185a5f0d65b9ec2d Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:40:53 +0100 +Subject: [PATCH] ld-makefile + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/Makefile.am | 2 +- + ld/Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ld/Makefile.am b/ld/Makefile.am +index 625347f..d5334d2 100644 +--- a/ld/Makefile.am ++++ b/ld/Makefile.am +@@ -57,7 +57,7 @@ endif + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + + EMUL = @EMUL@ + EMULATION_OFILES = @EMULATION_OFILES@ +diff --git a/ld/Makefile.in b/ld/Makefile.in +index ba25177..a2cf228 100644 +--- a/ld/Makefile.in ++++ b/ld/Makefile.in +@@ -446,7 +446,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + BASEDIR = $(srcdir)/.. + BFDDIR = $(BASEDIR)/bfd + INCDIR = $(BASEDIR)/include +-- +2.9.4 + diff --git a/buildroot/package/binutils/2.29.1/0003-check-ldrunpath-length.patch b/buildroot/package/binutils/2.29.1/0003-check-ldrunpath-length.patch new file mode 100644 index 0000000..3fbc503 --- /dev/null +++ b/buildroot/package/binutils/2.29.1/0003-check-ldrunpath-length.patch @@ -0,0 +1,36 @@ +From 3bd211025c890ef2971958915d500a9bb2913a2a Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:41:47 +0100 +Subject: [PATCH] check-ldrunpath-length + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/emultempl/elf32.em | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em +index d2551b6..70fcb56 100644 +--- a/ld/emultempl/elf32.em ++++ b/ld/emultempl/elf32.em +@@ -1463,6 +1463,8 @@ fragment <link.next) + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) +-- +2.9.4 + diff --git a/buildroot/package/binutils/2.29.1/0004-add-sysroot-fix-from-bug-3049.patch b/buildroot/package/binutils/2.29.1/0004-add-sysroot-fix-from-bug-3049.patch new file mode 100644 index 0000000..9e11840 --- /dev/null +++ b/buildroot/package/binutils/2.29.1/0004-add-sysroot-fix-from-bug-3049.patch @@ -0,0 +1,51 @@ +From 378bda0e19d279535b3f4a0e448a658a534a5d67 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:42:48 +0100 +Subject: [PATCH] add sysroot fix from bug #3049 + +Always try to prepend the sysroot prefix to absolute filenames first. + +http://bugs.gentoo.org/275666 +http://sourceware.org/bugzilla/show_bug.cgi?id=10340 + +Signed-off-by: Sven Rebhan +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/ldfile.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/ld/ldfile.c b/ld/ldfile.c +index 3b37a0a..f7e5473 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -338,18 +338,24 @@ ldfile_open_file_search (const char *arch, + directory first. */ + if (!entry->flags.maybe_archive) + { +- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)) ++ /* For absolute pathnames, try to always open the file in the ++ sysroot first. If this fails, try to open the file at the ++ given location. */ ++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename); ++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename) ++ && ld_sysroot) + { + char *name = concat (ld_sysroot, entry->filename, + (const char *) NULL); + if (ldfile_try_open_bfd (name, entry)) + { + entry->filename = name; ++ entry->flags.sysrooted = TRUE; + return TRUE; + } + free (name); + } +- else if (ldfile_try_open_bfd (entry->filename, entry)) ++ if (ldfile_try_open_bfd (entry->filename, entry)) + return TRUE; + + if (IS_ABSOLUTE_PATH (entry->filename)) +-- +2.9.4 + diff --git a/buildroot/package/binutils/2.29.1/0005-poison-system-directories.patch b/buildroot/package/binutils/2.29.1/0005-poison-system-directories.patch new file mode 100644 index 0000000..a7c2761 --- /dev/null +++ b/buildroot/package/binutils/2.29.1/0005-poison-system-directories.patch @@ -0,0 +1,306 @@ +From b100e9d16bfe6725b2624902af457ecfa490b150 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texinfo | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index 5d91380..ffe84a7 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -21,6 +21,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index da20ab5..63e3da7 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -785,6 +785,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1443,6 +1444,8 @@ Optional Features: + --disable-largefile omit support for large files + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15497,7 +15500,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index 34315e6..5ade9a0 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -95,6 +95,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + dnl "install_as_default" is set to false if gold is the default linker. + dnl "installed_linker" is the installed BFD linker name. +diff --git a/ld/ld.h b/ld/ld.h +index 162e156..7d6d7ef 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -177,6 +177,14 @@ typedef struct + in the linker script. */ + bfd_boolean force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bfd_boolean poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bfd_boolean error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texinfo b/ld/ld.texinfo +index bb5f719..78501e4 100644 +--- a/ld/ld.texinfo ++++ b/ld/ld.texinfo +@@ -2480,6 +2480,18 @@ string identifying the original linked file does not change. + + Passing @code{none} for @var{style} disables the setting from any + @code{--build-id} options earlier on the command line. ++ ++@kindex --no-poison-system-directories ++@item --no-poison-system-directories ++Do not warn for @option{-L} options using system directories such as ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@item --error-poison-system-directories ++Give an error instead of a warning for @option{-L} options using ++system directories when cross linking. + @end table + + @c man end +diff --git a/ld/ldfile.c b/ld/ldfile.c +index f7e5473..2cd84d3 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 5aa7f6b..cb655e0 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -147,6 +147,8 @@ enum option_values + OPTION_REQUIRE_DEFINED_SYMBOL, + OPTION_ORPHAN_HANDLING, + OPTION_FORCE_GROUP_ALLOCATION, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + }; + + /* The initial parser states. */ +diff --git a/ld/ldmain.c b/ld/ldmain.c +index ee5ab11..5f6effd 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -270,6 +270,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = TRUE; ++ command_line.error_poison_system_directories = FALSE; + + /* We initialize DEMANGLING based on the environment variable + COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the +diff --git a/ld/lexsup.c b/ld/lexsup.c +index 08106bc..d619d50 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -538,6 +538,14 @@ static const struct ld_option ld_options[] = + { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, + '\0', N_("=MODE"), N_("Control how orphan sections are handled."), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -550,6 +558,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1534,6 +1543,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = FALSE; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = TRUE; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1577,6 +1594,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = TRUE; ++ + while (ingroup) + { + lang_leave_group (); +-- +2.9.4 + diff --git a/buildroot/package/binutils/2.29.1/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch b/buildroot/package/binutils/2.29.1/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch new file mode 100644 index 0000000..e5409ef --- /dev/null +++ b/buildroot/package/binutils/2.29.1/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch @@ -0,0 +1,31 @@ +From 122de3b633f4273826a2d01702d7c515f93ec2be Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Sat, 29 Jul 2017 14:08:20 +0200 +Subject: [PATCH] Fixes: LINKER BUG: .rofixup section size mismatch + +Workaround from adi-toolchain commit: +af414ec1fb628ddb1562f062f3db49823ca14ca2 +[#6798] binutils-2.21/bfd: temp workaround for rofixup mismatch errors. + +Signed-off-by: Waldemar Brodkorb +--- + bfd/elf32-bfin.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c +index b3e09bd..660eec5 100644 +--- a/bfd/elf32-bfin.c ++++ b/bfd/elf32-bfin.c +@@ -4845,7 +4845,8 @@ bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info, + + case R_BFIN_FUNCDESC: + picrel->fd++; +- picrel->relocsfd++; ++ if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) ++ picrel->relocsfd++; + break; + + /* This relocation describes the C++ object vtable hierarchy. +-- +2.9.4 + diff --git a/buildroot/package/binutils/2.30/0001-sh-conf.patch b/buildroot/package/binutils/2.30/0001-sh-conf.patch new file mode 100644 index 0000000..80cf35b --- /dev/null +++ b/buildroot/package/binutils/2.30/0001-sh-conf.patch @@ -0,0 +1,48 @@ +From b30ec72417164a2e990bc986eb0da05b7ef054fa Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:38:13 +0100 +Subject: [PATCH] sh-conf + +Likewise, binutils has no idea about any of these new targets either, so we +fix that up too.. now we're able to actually build a real toolchain for +sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more +inept targets than that one, really. Go look, I promise). + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Thomas: rebase on top of 2.29, in which sh64 support was removed.] +Signed-off-by: Thomas Petazzoni +--- + configure | 2 +- + configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 2d615a9996..18d74ab96e 100755 +--- a/configure ++++ b/configure +@@ -3835,7 +3835,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +diff --git a/configure.ac b/configure.ac +index aae94501e4..b530e54926 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1166,7 +1166,7 @@ case "${target}" in + nvptx*-*-*) + noconfigdirs="$noconfigdirs target-libssp target-libstdc++-v3 target-libobjc" + ;; +- sh-*-*) ++ sh*-*-*) + case "${target}" in + sh*-*-elf) + ;; +-- +2.14.3 + diff --git a/buildroot/package/binutils/2.30/0002-ld-makefile.patch b/buildroot/package/binutils/2.30/0002-ld-makefile.patch new file mode 100644 index 0000000..992ffae --- /dev/null +++ b/buildroot/package/binutils/2.30/0002-ld-makefile.patch @@ -0,0 +1,41 @@ +From bf6f72c4e3c57864417ac1f917404cc83af8ec14 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:40:53 +0100 +Subject: [PATCH] ld-makefile + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/Makefile.am | 2 +- + ld/Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ld/Makefile.am b/ld/Makefile.am +index 6243c12528..3c5d6c8202 100644 +--- a/ld/Makefile.am ++++ b/ld/Makefile.am +@@ -57,7 +57,7 @@ endif + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + + EMUL = @EMUL@ + EMULATION_OFILES = @EMULATION_OFILES@ +diff --git a/ld/Makefile.in b/ld/Makefile.in +index 760c037f9d..6dea692869 100644 +--- a/ld/Makefile.in ++++ b/ld/Makefile.in +@@ -446,7 +446,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + BASEDIR = $(srcdir)/.. + BFDDIR = $(BASEDIR)/bfd + INCDIR = $(BASEDIR)/include +-- +2.14.3 + diff --git a/buildroot/package/binutils/2.30/0003-check-ldrunpath-length.patch b/buildroot/package/binutils/2.30/0003-check-ldrunpath-length.patch new file mode 100644 index 0000000..7af9874 --- /dev/null +++ b/buildroot/package/binutils/2.30/0003-check-ldrunpath-length.patch @@ -0,0 +1,36 @@ +From c18554e56d2534cbb37d2d065d3782ce4ef2533c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:41:47 +0100 +Subject: [PATCH] check-ldrunpath-length + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/emultempl/elf32.em | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em +index c0925fc9b9..0ce16d73a5 100644 +--- a/ld/emultempl/elf32.em ++++ b/ld/emultempl/elf32.em +@@ -1470,6 +1470,8 @@ fragment <link.next) + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) +-- +2.14.3 + diff --git a/buildroot/package/binutils/2.30/0004-add-sysroot-fix-from-bug-3049.patch b/buildroot/package/binutils/2.30/0004-add-sysroot-fix-from-bug-3049.patch new file mode 100644 index 0000000..a110cf1 --- /dev/null +++ b/buildroot/package/binutils/2.30/0004-add-sysroot-fix-from-bug-3049.patch @@ -0,0 +1,51 @@ +From 20fff697c52e24700e76d64d202ad7a9228b630e Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:42:48 +0100 +Subject: [PATCH] add sysroot fix from bug #3049 + +Always try to prepend the sysroot prefix to absolute filenames first. + +http://bugs.gentoo.org/275666 +http://sourceware.org/bugzilla/show_bug.cgi?id=10340 + +Signed-off-by: Sven Rebhan +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/ldfile.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/ld/ldfile.c b/ld/ldfile.c +index 6532a57d96..eefc2ebefb 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -338,18 +338,24 @@ ldfile_open_file_search (const char *arch, + directory first. */ + if (!entry->flags.maybe_archive) + { +- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)) ++ /* For absolute pathnames, try to always open the file in the ++ sysroot first. If this fails, try to open the file at the ++ given location. */ ++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename); ++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename) ++ && ld_sysroot) + { + char *name = concat (ld_sysroot, entry->filename, + (const char *) NULL); + if (ldfile_try_open_bfd (name, entry)) + { + entry->filename = name; ++ entry->flags.sysrooted = TRUE; + return TRUE; + } + free (name); + } +- else if (ldfile_try_open_bfd (entry->filename, entry)) ++ if (ldfile_try_open_bfd (entry->filename, entry)) + return TRUE; + + if (IS_ABSOLUTE_PATH (entry->filename)) +-- +2.14.3 + diff --git a/buildroot/package/binutils/2.30/0005-poison-system-directories.patch b/buildroot/package/binutils/2.30/0005-poison-system-directories.patch new file mode 100644 index 0000000..4007be9 --- /dev/null +++ b/buildroot/package/binutils/2.30/0005-poison-system-directories.patch @@ -0,0 +1,306 @@ +From 28e0da3dede55d02eb64e015d363747772694566 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texinfo | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index a846743da6..df3cd5fb60 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -27,6 +27,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index 066b5146c6..11e7402909 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -785,6 +785,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1444,6 +1445,8 @@ Optional Features: + --disable-largefile omit support for large files + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15500,7 +15503,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index bada1b50b0..d074a3820b 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -95,6 +95,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + dnl "install_as_default" is set to false if gold is the default linker. + dnl "installed_linker" is the installed BFD linker name. +diff --git a/ld/ld.h b/ld/ld.h +index ba914b921e..9df17dab6c 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -180,6 +180,14 @@ typedef struct + in the linker script. */ + bfd_boolean force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bfd_boolean poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bfd_boolean error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texinfo b/ld/ld.texinfo +index c89915f1aa..df430837e2 100644 +--- a/ld/ld.texinfo ++++ b/ld/ld.texinfo +@@ -2498,6 +2498,18 @@ string identifying the original linked file does not change. + + Passing @code{none} for @var{style} disables the setting from any + @code{--build-id} options earlier on the command line. ++ ++@kindex --no-poison-system-directories ++@item --no-poison-system-directories ++Do not warn for @option{-L} options using system directories such as ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@item --error-poison-system-directories ++Give an error instead of a warning for @option{-L} options using ++system directories when cross linking. + @end table + + @c man end +diff --git a/ld/ldfile.c b/ld/ldfile.c +index eefc2ebefb..bf7063ae8c 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 140ed1d9da..9965cbc04f 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -147,6 +147,8 @@ enum option_values + OPTION_REQUIRE_DEFINED_SYMBOL, + OPTION_ORPHAN_HANDLING, + OPTION_FORCE_GROUP_ALLOCATION, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + }; + + /* The initial parser states. */ +diff --git a/ld/ldmain.c b/ld/ldmain.c +index e02fd3f1ff..5dfe9ba7e8 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -261,6 +261,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = TRUE; ++ command_line.error_poison_system_directories = FALSE; + + /* We initialize DEMANGLING based on the environment variable + COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the +diff --git a/ld/lexsup.c b/ld/lexsup.c +index f2191602d4..037a27a24a 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -538,6 +538,14 @@ static const struct ld_option ld_options[] = + { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, + '\0', N_("=MODE"), N_("Control how orphan sections are handled."), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -550,6 +558,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1534,6 +1543,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = FALSE; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = TRUE; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1577,6 +1594,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = TRUE; ++ + while (ingroup) + { + lang_leave_group (); +-- +2.14.3 + diff --git a/buildroot/package/binutils/2.30/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch b/buildroot/package/binutils/2.30/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch new file mode 100644 index 0000000..0ce2cf2 --- /dev/null +++ b/buildroot/package/binutils/2.30/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch @@ -0,0 +1,31 @@ +From c3bd478ac1b7e83765230505eb08a0acf2fe3867 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Sat, 29 Jul 2017 14:08:20 +0200 +Subject: [PATCH] Fixes: LINKER BUG: .rofixup section size mismatch + +Workaround from adi-toolchain commit: +af414ec1fb628ddb1562f062f3db49823ca14ca2 +[#6798] binutils-2.21/bfd: temp workaround for rofixup mismatch errors. + +Signed-off-by: Waldemar Brodkorb +--- + bfd/elf32-bfin.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c +index 478b8d4731..a38519b585 100644 +--- a/bfd/elf32-bfin.c ++++ b/bfd/elf32-bfin.c +@@ -4655,7 +4655,8 @@ bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info, + + case R_BFIN_FUNCDESC: + picrel->fd++; +- picrel->relocsfd++; ++ if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) ++ picrel->relocsfd++; + break; + + /* This relocation describes the C++ object vtable hierarchy. +-- +2.14.3 + diff --git a/buildroot/package/binutils/Config.in b/buildroot/package/binutils/Config.in new file mode 100644 index 0000000..e17a8ec --- /dev/null +++ b/buildroot/package/binutils/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_BINUTILS + bool "binutils" + depends on !BR2_nios2 + depends on BR2_USE_WCHAR + help + Install binutils on the target + +if BR2_PACKAGE_BINUTILS + +config BR2_PACKAGE_BINUTILS_TARGET + bool "binutils binaries" + help + The GNU Binutils are a collection of binary tools: + + ld - the GNU linker. + as - the GNU assembler. + and others... + + http://www.gnu.org/software/binutils/ + +endif + +comment "binutils needs a toolchain w/ wchar" + depends on !BR2_nios2 + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/binutils/Config.in.host b/buildroot/package/binutils/Config.in.host new file mode 100644 index 0000000..bc0e223 --- /dev/null +++ b/buildroot/package/binutils/Config.in.host @@ -0,0 +1,41 @@ +comment "Binutils Options" + +choice + prompt "Binutils Version" + default BR2_BINUTILS_VERSION_2_28_X if BR2_ARM_INSTRUCTIONS_THUMB + default BR2_BINUTILS_VERSION_2_28_X if BR2_ARM_INSTRUCTIONS_THUMB2 + default BR2_BINUTILS_VERSION_2_29_X if !BR2_arc + default BR2_BINUTILS_VERSION_ARC if BR2_arc + help + Select the version of binutils you wish to use. + +config BR2_BINUTILS_VERSION_2_28_X + bool "binutils 2.28.1" + depends on !BR2_arc + +config BR2_BINUTILS_VERSION_2_29_X + bool "binutils 2.29.1" + +config BR2_BINUTILS_VERSION_2_30_X + bool "binutils 2.30" + +config BR2_BINUTILS_VERSION_ARC + bool "binutils arc (2.29)" + depends on BR2_arc +endchoice + +config BR2_BINUTILS_VERSION + string + default "arc-2017.09-release" if BR2_BINUTILS_VERSION_ARC + default "2.28.1" if BR2_BINUTILS_VERSION_2_28_X + default "2.29.1" if BR2_BINUTILS_VERSION_2_29_X + default "2.30" if BR2_BINUTILS_VERSION_2_30_X + +config BR2_BINUTILS_ENABLE_LTO + bool + +config BR2_BINUTILS_EXTRA_CONFIG_OPTIONS + string "Additional binutils options" + default "" + help + Any additional binutils options you may want to include. diff --git a/buildroot/package/binutils/arc-2017.09-release/0002-ld-makefile.patch b/buildroot/package/binutils/arc-2017.09-release/0002-ld-makefile.patch new file mode 100644 index 0000000..a7cd71e --- /dev/null +++ b/buildroot/package/binutils/arc-2017.09-release/0002-ld-makefile.patch @@ -0,0 +1,41 @@ +From d4e18ebc6ad810167a2de84b185a5f0d65b9ec2d Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:40:53 +0100 +Subject: [PATCH] ld-makefile + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/Makefile.am | 2 +- + ld/Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ld/Makefile.am b/ld/Makefile.am +index 625347f..d5334d2 100644 +--- a/ld/Makefile.am ++++ b/ld/Makefile.am +@@ -57,7 +57,7 @@ endif + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + + EMUL = @EMUL@ + EMULATION_OFILES = @EMULATION_OFILES@ +diff --git a/ld/Makefile.in b/ld/Makefile.in +index ba25177..a2cf228 100644 +--- a/ld/Makefile.in ++++ b/ld/Makefile.in +@@ -446,7 +446,7 @@ AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + BASEDIR = $(srcdir)/.. + BFDDIR = $(BASEDIR)/bfd + INCDIR = $(BASEDIR)/include +-- +2.9.4 + diff --git a/buildroot/package/binutils/arc-2017.09-release/0003-check-ldrunpath-length.patch b/buildroot/package/binutils/arc-2017.09-release/0003-check-ldrunpath-length.patch new file mode 100644 index 0000000..3fbc503 --- /dev/null +++ b/buildroot/package/binutils/arc-2017.09-release/0003-check-ldrunpath-length.patch @@ -0,0 +1,36 @@ +From 3bd211025c890ef2971958915d500a9bb2913a2a Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:41:47 +0100 +Subject: [PATCH] check-ldrunpath-length + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/emultempl/elf32.em | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em +index d2551b6..70fcb56 100644 +--- a/ld/emultempl/elf32.em ++++ b/ld/emultempl/elf32.em +@@ -1463,6 +1463,8 @@ fragment <link.next) + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) +-- +2.9.4 + diff --git a/buildroot/package/binutils/arc-2017.09-release/0004-add-sysroot-fix-from-bug-3049.patch b/buildroot/package/binutils/arc-2017.09-release/0004-add-sysroot-fix-from-bug-3049.patch new file mode 100644 index 0000000..9e11840 --- /dev/null +++ b/buildroot/package/binutils/arc-2017.09-release/0004-add-sysroot-fix-from-bug-3049.patch @@ -0,0 +1,51 @@ +From 378bda0e19d279535b3f4a0e448a658a534a5d67 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:42:48 +0100 +Subject: [PATCH] add sysroot fix from bug #3049 + +Always try to prepend the sysroot prefix to absolute filenames first. + +http://bugs.gentoo.org/275666 +http://sourceware.org/bugzilla/show_bug.cgi?id=10340 + +Signed-off-by: Sven Rebhan +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +--- + ld/ldfile.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/ld/ldfile.c b/ld/ldfile.c +index 3b37a0a..f7e5473 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -338,18 +338,24 @@ ldfile_open_file_search (const char *arch, + directory first. */ + if (!entry->flags.maybe_archive) + { +- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)) ++ /* For absolute pathnames, try to always open the file in the ++ sysroot first. If this fails, try to open the file at the ++ given location. */ ++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename); ++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename) ++ && ld_sysroot) + { + char *name = concat (ld_sysroot, entry->filename, + (const char *) NULL); + if (ldfile_try_open_bfd (name, entry)) + { + entry->filename = name; ++ entry->flags.sysrooted = TRUE; + return TRUE; + } + free (name); + } +- else if (ldfile_try_open_bfd (entry->filename, entry)) ++ if (ldfile_try_open_bfd (entry->filename, entry)) + return TRUE; + + if (IS_ABSOLUTE_PATH (entry->filename)) +-- +2.9.4 + diff --git a/buildroot/package/binutils/arc-2017.09-release/0005-poison-system-directories.patch b/buildroot/package/binutils/arc-2017.09-release/0005-poison-system-directories.patch new file mode 100644 index 0000000..a7c2761 --- /dev/null +++ b/buildroot/package/binutils/arc-2017.09-release/0005-poison-system-directories.patch @@ -0,0 +1,306 @@ +From b100e9d16bfe6725b2624902af457ecfa490b150 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 25 Dec 2015 11:45:38 +0100 +Subject: [PATCH] poison-system-directories + +Patch adapted to binutils 2.23.2 and extended to use +BR_COMPILER_PARANOID_UNSAFE_PATH by Thomas Petazzoni. + +[Romain: rebase on top of 2.26] +Signed-off-by: Romain Naour +[Gustavo: adapt to binutils 2.25] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +Upstream-Status: Inappropriate [distribution: codesourcery] + +Patch originally created by Mark Hatle, forward-ported to +binutils 2.21 by Scott Garman. + +purpose: warn for uses of system directories when cross linking + +Code Merged from Sourcery G++ binutils 2.19 - 4.4-277 + +2008-07-02 Joseph Myers + + ld/ + * ld.h (args_type): Add error_poison_system_directories. + * ld.texinfo (--error-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.error_poison_system_directories. + * ldmain.c (main): Initialize + command_line.error_poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_ERROR_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --error-poison-system-directories. + (parse_args): Handle new option. + +2007-06-13 Joseph Myers + + ld/ + * config.in: Regenerate. + * ld.h (args_type): Add poison_system_directories. + * ld.texinfo (--no-poison-system-directories): Document. + * ldfile.c (ldfile_add_library_path): Check + command_line.poison_system_directories. + * ldmain.c (main): Initialize + command_line.poison_system_directories. + * lexsup.c (enum option_values): Add + OPTION_NO_POISON_SYSTEM_DIRECTORIES. + (ld_options): Add --no-poison-system-directories. + (parse_args): Handle new option. + +2007-04-20 Joseph Myers + + Merge from Sourcery G++ binutils 2.17: + + 2007-03-20 Joseph Myers + Based on patch by Mark Hatle . + ld/ + * configure.ac (--enable-poison-system-directories): New option. + * configure, config.in: Regenerate. + * ldfile.c (ldfile_add_library_path): If + ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of /lib, + /usr/lib, /usr/local/lib or /usr/X11R6/lib. + +Signed-off-by: Mark Hatle +Signed-off-by: Scott Garman +--- + ld/config.in | 3 +++ + ld/configure | 14 ++++++++++++++ + ld/configure.ac | 10 ++++++++++ + ld/ld.h | 8 ++++++++ + ld/ld.texinfo | 12 ++++++++++++ + ld/ldfile.c | 17 +++++++++++++++++ + ld/ldlex.h | 2 ++ + ld/ldmain.c | 2 ++ + ld/lexsup.c | 21 +++++++++++++++++++++ + 9 files changed, 89 insertions(+) + +diff --git a/ld/config.in b/ld/config.in +index 5d91380..ffe84a7 100644 +--- a/ld/config.in ++++ b/ld/config.in +@@ -21,6 +21,9 @@ + language is requested. */ + #undef ENABLE_NLS + ++/* Define to warn for use of native system library directories */ ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES ++ + /* Additional extension a shared object might have. */ + #undef EXTRA_SHLIB_EXTENSION + +diff --git a/ld/configure b/ld/configure +index da20ab5..63e3da7 100755 +--- a/ld/configure ++++ b/ld/configure +@@ -785,6 +785,7 @@ with_lib_path + enable_targets + enable_64_bit_bfd + with_sysroot ++enable_poison_system_directories + enable_gold + enable_got + enable_compressed_debug_sections +@@ -1443,6 +1444,8 @@ Optional Features: + --disable-largefile omit support for large files + --enable-targets alternative target configurations + --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) ++ --enable-poison-system-directories ++ warn for use of native system library directories + --enable-gold[=ARG] build gold [ARG={default,yes,no}] + --enable-got= GOT handling scheme (target, single, negative, + multigot) +@@ -15497,7 +15500,18 @@ else + fi + + ++# Check whether --enable-poison-system-directories was given. ++if test "${enable_poison_system_directories+set}" = set; then : ++ enableval=$enable_poison_system_directories; ++else ++ enable_poison_system_directories=no ++fi ++ ++if test "x${enable_poison_system_directories}" = "xyes"; then + ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h ++ ++fi + + # Check whether --enable-got was given. + if test "${enable_got+set}" = set; then : +diff --git a/ld/configure.ac b/ld/configure.ac +index 34315e6..5ade9a0 100644 +--- a/ld/configure.ac ++++ b/ld/configure.ac +@@ -95,6 +95,16 @@ AC_SUBST(use_sysroot) + AC_SUBST(TARGET_SYSTEM_ROOT) + AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE) + ++AC_ARG_ENABLE([poison-system-directories], ++ AS_HELP_STRING([--enable-poison-system-directories], ++ [warn for use of native system library directories]),, ++ [enable_poison_system_directories=no]) ++if test "x${enable_poison_system_directories}" = "xyes"; then ++ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES], ++ [1], ++ [Define to warn for use of native system library directories]) ++fi ++ + dnl Use --enable-gold to decide if this linker should be the default. + dnl "install_as_default" is set to false if gold is the default linker. + dnl "installed_linker" is the installed BFD linker name. +diff --git a/ld/ld.h b/ld/ld.h +index 162e156..7d6d7ef 100644 +--- a/ld/ld.h ++++ b/ld/ld.h +@@ -177,6 +177,14 @@ typedef struct + in the linker script. */ + bfd_boolean force_group_allocation; + ++ /* If TRUE (the default) warn for uses of system directories when ++ cross linking. */ ++ bfd_boolean poison_system_directories; ++ ++ /* If TRUE (default FALSE) give an error for uses of system ++ directories when cross linking instead of a warning. */ ++ bfd_boolean error_poison_system_directories; ++ + /* Big or little endian as set on command line. */ + enum endian_enum endian; + +diff --git a/ld/ld.texinfo b/ld/ld.texinfo +index bb5f719..78501e4 100644 +--- a/ld/ld.texinfo ++++ b/ld/ld.texinfo +@@ -2480,6 +2480,18 @@ string identifying the original linked file does not change. + + Passing @code{none} for @var{style} disables the setting from any + @code{--build-id} options earlier on the command line. ++ ++@kindex --no-poison-system-directories ++@item --no-poison-system-directories ++Do not warn for @option{-L} options using system directories such as ++@file{/usr/lib} when cross linking. This option is intended for use ++in chroot environments when such directories contain the correct ++libraries for the target system rather than the host. ++ ++@kindex --error-poison-system-directories ++@item --error-poison-system-directories ++Give an error instead of a warning for @option{-L} options using ++system directories when cross linking. + @end table + + @c man end +diff --git a/ld/ldfile.c b/ld/ldfile.c +index f7e5473..2cd84d3 100644 +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -116,6 +116,23 @@ ldfile_add_library_path (const char *name, bfd_boolean cmdline) + new_dirs->name = concat (ld_sysroot, name + strlen ("$SYSROOT"), (const char *) NULL); + else + new_dirs->name = xstrdup (name); ++ ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES ++ if (command_line.poison_system_directories ++ && ((!strncmp (name, "/lib", 4)) ++ || (!strncmp (name, "/usr/lib", 8)) ++ || (!strncmp (name, "/usr/local/lib", 14)) ++ || (!strncmp (name, "/usr/X11R6/lib", 14)))) ++ { ++ if (command_line.error_poison_system_directories) ++ einfo (_("%X%P: error: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ else ++ einfo (_("%P: warning: library search path \"%s\" is unsafe for " ++ "cross-compilation\n"), name); ++ } ++#endif ++ + } + + /* Try to open a BFD for a lang_input_statement. */ +diff --git a/ld/ldlex.h b/ld/ldlex.h +index 5aa7f6b..cb655e0 100644 +--- a/ld/ldlex.h ++++ b/ld/ldlex.h +@@ -147,6 +147,8 @@ enum option_values + OPTION_REQUIRE_DEFINED_SYMBOL, + OPTION_ORPHAN_HANDLING, + OPTION_FORCE_GROUP_ALLOCATION, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES, + }; + + /* The initial parser states. */ +diff --git a/ld/ldmain.c b/ld/ldmain.c +index ee5ab11..5f6effd 100644 +--- a/ld/ldmain.c ++++ b/ld/ldmain.c +@@ -270,6 +270,8 @@ main (int argc, char **argv) + command_line.warn_mismatch = TRUE; + command_line.warn_search_mismatch = TRUE; + command_line.check_section_addresses = -1; ++ command_line.poison_system_directories = TRUE; ++ command_line.error_poison_system_directories = FALSE; + + /* We initialize DEMANGLING based on the environment variable + COLLECT_NO_DEMANGLE. The gcc collect2 program will demangle the +diff --git a/ld/lexsup.c b/ld/lexsup.c +index 08106bc..d619d50 100644 +--- a/ld/lexsup.c ++++ b/ld/lexsup.c +@@ -538,6 +538,14 @@ static const struct ld_option ld_options[] = + { {"orphan-handling", required_argument, NULL, OPTION_ORPHAN_HANDLING}, + '\0', N_("=MODE"), N_("Control how orphan sections are handled."), + TWO_DASHES }, ++ { {"no-poison-system-directories", no_argument, NULL, ++ OPTION_NO_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Do not warn for -L options using system directories"), ++ TWO_DASHES }, ++ { {"error-poison-system-directories", no_argument, NULL, ++ OPTION_ERROR_POISON_SYSTEM_DIRECTORIES}, ++ '\0', NULL, N_("Give an error for -L options using system directories"), ++ TWO_DASHES }, + }; + + #define OPTION_COUNT ARRAY_SIZE (ld_options) +@@ -550,6 +558,7 @@ parse_args (unsigned argc, char **argv) + int ingroup = 0; + char *default_dirlist = NULL; + char *shortopts; ++ char *BR_paranoid_env; + struct option *longopts; + struct option *really_longopts; + int last_optind; +@@ -1534,6 +1543,14 @@ parse_args (unsigned argc, char **argv) + } + break; + ++ case OPTION_NO_POISON_SYSTEM_DIRECTORIES: ++ command_line.poison_system_directories = FALSE; ++ break; ++ ++ case OPTION_ERROR_POISON_SYSTEM_DIRECTORIES: ++ command_line.error_poison_system_directories = TRUE; ++ break; ++ + case OPTION_PUSH_STATE: + input_flags.pushed = xmemdup (&input_flags, + sizeof (input_flags), +@@ -1577,6 +1594,10 @@ parse_args (unsigned argc, char **argv) + command_line.soname = NULL; + } + ++ BR_paranoid_env = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); ++ if (BR_paranoid_env && strlen(BR_paranoid_env) > 0) ++ command_line.error_poison_system_directories = TRUE; ++ + while (ingroup) + { + lang_leave_group (); +-- +2.9.4 + diff --git a/buildroot/package/binutils/binutils.hash b/buildroot/package/binutils/binutils.hash new file mode 100644 index 0000000..4578a7f --- /dev/null +++ b/buildroot/package/binutils/binutils.hash @@ -0,0 +1,7 @@ +# From ftp://gcc.gnu.org/pub/binutils/releases/sha512.sum +sha512 dc5b6872ae01c07c12d38f3bb7ead06effc6da3265ac872e2d9c6104304f89f85f2645b029a43f308a7938a7299b1928d385205d0a2245674a621649032a138d binutils-2.28.1.tar.xz +sha512 d748d22306477d60d921078804d21943248c23fca0707aac9b016a352c01c75ca69e82624ae37fb0bbd03af3b17088a94f60dfe1a86a7ff82e18ece3c24f0fd0 binutils-2.29.1.tar.xz +sha512 e747ea20d8d79fcd21b9d9f6695059caa7189d60f19256da398e34b789fea9a133c32b192e9693b5828d27683739b0198431bf8b3e39fb3b04884cf89d9aa839 binutils-2.30.tar.xz + +# Locally calculated (fetched from Github) +sha512 cefff7521dc4ebd8b9773af4f173821ad82dcb3f1fbd0bfdf03e148ba8cec1262b876b221da628ff5db16c30b18c6cbf5ffbec0fddb4677182524684c4c232c1 binutils-arc-2017.09-release.tar.gz diff --git a/buildroot/package/binutils/binutils.mk b/buildroot/package/binutils/binutils.mk new file mode 100644 index 0000000..ac4575b --- /dev/null +++ b/buildroot/package/binutils/binutils.mk @@ -0,0 +1,153 @@ +################################################################################ +# +# binutils +# +################################################################################ + +# Version is set when using buildroot toolchain. +# If not, we do like other packages +BINUTILS_VERSION = $(call qstrip,$(BR2_BINUTILS_VERSION)) +ifeq ($(BINUTILS_VERSION),) +ifeq ($(BR2_arc),y) +BINUTILS_VERSION = arc-2017.09-release +else +BINUTILS_VERSION = 2.29.1 +endif +endif # BINUTILS_VERSION + +ifeq ($(BINUTILS_VERSION),arc-2017.09-release) +BINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(BINUTILS_VERSION)) +BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.gz +BINUTILS_FROM_GIT = y +endif +BINUTILS_SITE ?= $(BR2_GNU_MIRROR)/binutils +BINUTILS_SOURCE ?= binutils-$(BINUTILS_VERSION).tar.xz +BINUTILS_EXTRA_CONFIG_OPTIONS = $(call qstrip,$(BR2_BINUTILS_EXTRA_CONFIG_OPTIONS)) +BINUTILS_INSTALL_STAGING = YES +BINUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +BINUTILS_MAKE_OPTS = LIBS=$(TARGET_NLS_LIBS) +BINUTILS_LICENSE = GPL-3.0+, libiberty LGPL-2.1+ +BINUTILS_LICENSE_FILES = COPYING3 COPYING.LIB + +ifeq ($(BINUTILS_FROM_GIT),y) +BINUTILS_DEPENDENCIES += host-flex host-bison +HOST_BINUTILS_DEPENDENCIES += host-flex host-bison +endif + +# When binutils sources are fetched from the binutils-gdb repository, +# they also contain the gdb sources, but gdb shouldn't be built, so we +# disable it. +BINUTILS_DISABLE_GDB_CONF_OPTS = \ + --disable-sim \ + --disable-gdb + +# We need to specify host & target to avoid breaking ARM EABI +BINUTILS_CONF_OPTS = \ + --disable-multilib \ + --disable-werror \ + --host=$(GNU_TARGET_NAME) \ + --target=$(GNU_TARGET_NAME) \ + --enable-install-libiberty \ + --enable-build-warnings=no \ + $(BINUTILS_DISABLE_GDB_CONF_OPTS) \ + $(BINUTILS_EXTRA_CONFIG_OPTIONS) + +ifeq ($(BR2_STATIC_LIBS),y) +BINUTILS_CONF_OPTS += --disable-plugins +endif + +# Don't build documentation. It takes up extra space / build time, +# and sometimes needs specific makeinfo versions to work +BINUTILS_CONF_ENV += MAKEINFO=true +BINUTILS_MAKE_OPTS += MAKEINFO=true +BINUTILS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MAKEINFO=true install +HOST_BINUTILS_CONF_ENV += MAKEINFO=true +HOST_BINUTILS_MAKE_OPTS += MAKEINFO=true +HOST_BINUTILS_INSTALL_OPTS += MAKEINFO=true install + +# gcc bug with Os/O1/O2/O3, PR77311 +# error: unable to find a register to spill in class 'CCREGS' +ifeq ($(BR2_bfin),y) +BINUTILS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O0" +endif + +# Workaround a build issue with -Os for ARM Cortex-M cpus. +# (Binutils 2.25.1 and 2.26.1) +# https://sourceware.org/bugzilla/show_bug.cgi?id=20552 +ifeq ($(BR2_ARM_CPU_ARMV7M)$(BR2_OPTIMIZE_S),yy) +BINUTILS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O2" +endif + +# Install binutils after busybox to prefer full-blown utilities +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +BINUTILS_DEPENDENCIES += busybox +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +BINUTILS_DEPENDENCIES += zlib +endif + +# "host" binutils should actually be "cross" +# We just keep the convention of "host utility" for now +HOST_BINUTILS_CONF_OPTS = \ + --disable-multilib \ + --disable-werror \ + --target=$(GNU_TARGET_NAME) \ + --disable-shared \ + --enable-static \ + --with-sysroot=$(STAGING_DIR) \ + --enable-poison-system-directories \ + $(BINUTILS_DISABLE_GDB_CONF_OPTS) \ + $(BINUTILS_EXTRA_CONFIG_OPTIONS) + +# binutils run configure script of subdirs at make time, so ensure +# our TARGET_CONFIGURE_ARGS are taken into consideration for those +define BINUTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_ARGS) $(MAKE) $(BINUTILS_MAKE_OPTS) -C $(@D) +endef + +# We just want libbfd, libiberty and libopcodes, +# not the full-blown binutils in staging +define BINUTILS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/bfd DESTDIR=$(STAGING_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/opcodes DESTDIR=$(STAGING_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libiberty DESTDIR=$(STAGING_DIR) install +endef + +# If we don't want full binutils on target +ifneq ($(BR2_PACKAGE_BINUTILS_TARGET),y) +define BINUTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/bfd DESTDIR=$(TARGET_DIR) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libiberty DESTDIR=$(STAGING_DIR) install +endef +endif + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define BINUTILS_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),binutils) +endef +BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT +BINUTILS_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +HOST_BINUTILS_POST_EXTRACT_HOOKS += BINUTILS_XTENSA_OVERLAY_EXTRACT +HOST_BINUTILS_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +ifeq ($(BR2_BINUTILS_ENABLE_LTO),y) +HOST_BINUTILS_CONF_OPTS += --enable-plugins --enable-lto +endif + +# Hardlinks between binaries in different directories cause a problem +# with rpath fixup, so we de-hardlink those binaries, and replace them +# with copies instead. +BINUTILS_TOOLS = ar as ld ld.bfd nm objcopy objdump ranlib readelf strip +define HOST_BINUTILS_FIXUP_HARDLINKS + $(foreach tool,$(BINUTILS_TOOLS),\ + rm -f $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) && \ + cp -a $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-$(tool) \ + $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) + ) +endef +HOST_BINUTILS_POST_INSTALL_HOOKS += HOST_BINUTILS_FIXUP_HARDLINKS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/biosdevname/Config.in b/buildroot/package/biosdevname/Config.in new file mode 100644 index 0000000..7047167 --- /dev/null +++ b/buildroot/package/biosdevname/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BIOSDEVNAME + bool "biosdevname" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_PCIUTILS + select BR2_PACKAGE_ZLIB + help + Biosdevname is a udev helper that looks at various BIOS tables + to figure out what the actual hardware names are for Ethernet + ports and renames the ports accordingly. This has the + advantage of always referring to the same port regardless of + system or hardware changes that might otherwise alter the + typical ethX naming. + + http://linux.dell.com/biosdevname/ diff --git a/buildroot/package/biosdevname/biosdevname.hash b/buildroot/package/biosdevname/biosdevname.hash new file mode 100644 index 0000000..57946ea --- /dev/null +++ b/buildroot/package/biosdevname/biosdevname.hash @@ -0,0 +1,2 @@ +# Locally computed hashes, not provided by upstream +sha256 954575f482ff5de2d49c335b563990859a3eb3506e8fa976f6915eba870d71f6 biosdevname-0.7.2.tar.gz diff --git a/buildroot/package/biosdevname/biosdevname.mk b/buildroot/package/biosdevname/biosdevname.mk new file mode 100644 index 0000000..e0de8ef --- /dev/null +++ b/buildroot/package/biosdevname/biosdevname.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# biosdevname +# +################################################################################ + +BIOSDEVNAME_VERSION = 0.7.2 +BIOSDEVNAME_SITE = http://linux.dell.com/biosdevname/biosdevname-$(BIOSDEVNAME_VERSION) +BIOSDEVNAME_LICENSE = GPL +BIOSDEVNAME_LICENSE_FILES = COPYING +BIOSDEVNAME_CONF_OPTS = --exec-prefix=/ +BIOSDEVNAME_DEPENDENCIES = pciutils udev zlib + +$(eval $(autotools-package)) diff --git a/buildroot/package/bison/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch b/buildroot/package/bison/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch new file mode 100644 index 0000000..e9dee48 --- /dev/null +++ b/buildroot/package/bison/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch @@ -0,0 +1,50 @@ +From 4af4a4a71827c0bc5e0ec67af23edef4f15cee8e Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Mon, 5 Mar 2018 10:56:29 -0800 +Subject: [PATCH 1/1] fflush: adjust to glibc 2.28 libio.h removal +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Problem reported by Daniel P. Berrangé in: +https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html +* lib/fbufmode.c (fbufmode): +* lib/fflush.c (clear_ungetc_buffer_preserving_position) +(disable_seek_optimization, rpl_fflush): +* lib/fpending.c (__fpending): +* lib/fpurge.c (fpurge): +* lib/freadable.c (freadable): +* lib/freadahead.c (freadahead): +* lib/freading.c (freading): +* lib/freadptr.c (freadptr): +* lib/freadseek.c (freadptrinc): +* lib/fseeko.c (fseeko): +* lib/fseterr.c (fseterr): +* lib/fwritable.c (fwritable): +* lib/fwriting.c (fwriting): +Check _IO_EOF_SEEN instead of _IO_ftrylockfile. +* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]: +Define if not already defined. +--- + lib/fseterr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +[yann.morin.1998@free.fr: partially backport from upstream gnulib] +Signed-off-by: "Yann E. MORIN" + +diff --git a/lib/fseterr.c b/lib/fseterr.c +index 82649c3ac..adb637256 100644 +--- a/lib/fseterr.c ++++ b/lib/fseterr.c +@@ -29,7 +29,7 @@ fseterr (FILE *fp) + /* Most systems provide FILE as a struct and the necessary bitmask in + , because they need it for implementing getc() and putc() as + fast macros. */ +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + fp->_flags |= _IO_ERR_SEEN; + #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ +-- +2.14.1 + diff --git a/buildroot/package/bison/0002-fflush-be-more-paranoid-about-libio.h-change.patch b/buildroot/package/bison/0002-fflush-be-more-paranoid-about-libio.h-change.patch new file mode 100644 index 0000000..035f828 --- /dev/null +++ b/buildroot/package/bison/0002-fflush-be-more-paranoid-about-libio.h-change.patch @@ -0,0 +1,46 @@ +From 74d9d6a293d7462dea8f83e7fc5ac792e956a0ad Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Thu, 8 Mar 2018 16:42:45 -0800 +Subject: [PATCH 2/2] fflush: be more paranoid about libio.h change + +Suggested by Eli Zaretskii in: +https://lists.gnu.org/r/emacs-devel/2018-03/msg00270.html +* lib/fbufmode.c (fbufmode): +* lib/fflush.c (clear_ungetc_buffer_preserving_position) +(disable_seek_optimization, rpl_fflush): +* lib/fpending.c (__fpending): +* lib/fpurge.c (fpurge): +* lib/freadable.c (freadable): +* lib/freadahead.c (freadahead): +* lib/freading.c (freading): +* lib/freadptr.c (freadptr): +* lib/freadseek.c (freadptrinc): +* lib/fseeko.c (fseeko): +* lib/fseterr.c (fseterr): +* lib/fwritable.c (fwritable): +* lib/fwriting.c (fwriting): +Look at _IO_ftrylockfile as well as at _IO_EOF_SEEN. +--- + lib/fseterr.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +[yann.morin.1998@free.fr: partially backport from upstream gnulib] +Signed-off-by: "Yann E. MORIN" + +diff --git a/lib/fseterr.c b/lib/fseterr.c +index adb637256..fd9da6338 100644 +--- a/lib/fseterr.c ++++ b/lib/fseterr.c +@@ -29,7 +29,8 @@ fseterr (FILE *fp) + /* Most systems provide FILE as a struct and the necessary bitmask in + , because they need it for implementing getc() and putc() as + fast macros. */ +-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 ++ /* GNU libc, BeOS, Haiku, Linux libc5 */ + fp->_flags |= _IO_ERR_SEEN; + #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ +-- +2.14.1 + diff --git a/buildroot/package/bison/bison.hash b/buildroot/package/bison/bison.hash new file mode 100644 index 0000000..2c33208 --- /dev/null +++ b/buildroot/package/bison/bison.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 a72428c7917bdf9fa93cb8181c971b6e22834125848cf1d03ce10b1bb0716fe1 bison-3.0.4.tar.xz +# License files, locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/bison/bison.mk b/buildroot/package/bison/bison.mk new file mode 100644 index 0000000..e4fc504 --- /dev/null +++ b/buildroot/package/bison/bison.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# bison +# +################################################################################ + +BISON_VERSION = 3.0.4 +BISON_SOURCE = bison-$(BISON_VERSION).tar.xz +BISON_SITE = $(BR2_GNU_MIRROR)/bison +BISON_LICENSE = GPL-3.0+ +BISON_LICENSE_FILES = COPYING +HOST_BISON_DEPENDENCIES = host-m4 + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/bitstream-vera/Config.in b/buildroot/package/bitstream-vera/Config.in new file mode 100644 index 0000000..034f115 --- /dev/null +++ b/buildroot/package/bitstream-vera/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_BITSTREAM_VERA + bool "Bitstream Vera" + help + Bitstream Vera font family. + + https://www.gnome.org/fonts/ diff --git a/buildroot/package/bitstream-vera/bitstream-vera.hash b/buildroot/package/bitstream-vera/bitstream-vera.hash new file mode 100644 index 0000000..e18b38b --- /dev/null +++ b/buildroot/package/bitstream-vera/bitstream-vera.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/ttf-bitstream-vera-1.10.tar.bz2.sha256sum +sha256 db5b27df7bbb318036ebdb75acd3e98f1bd6eb6608fb70a67d478cd243d178dc ttf-bitstream-vera-1.10.tar.bz2 diff --git a/buildroot/package/bitstream-vera/bitstream-vera.mk b/buildroot/package/bitstream-vera/bitstream-vera.mk new file mode 100644 index 0000000..f487d63 --- /dev/null +++ b/buildroot/package/bitstream-vera/bitstream-vera.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# bitstream-vera +# +################################################################################ + +BITSTREAM_VERA_VERSION = 1.10 +BITSTREAM_VERA_SITE = http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/$(BITSTREAM_VERA_VERSION) +BITSTREAM_VERA_SOURCE = ttf-bitstream-vera-$(BITSTREAM_VERA_VERSION).tar.bz2 +BITSTREAM_VERA_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/ttf-bitstream-vera +BITSTREAM_VERA_LICENSE = BitstreamVera +BITSTREAM_VERA_LICENSE_FILES = COPYRIGHT.TXT + +define BITSTREAM_VERA_INSTALL_TARGET_CMDS + mkdir -p $(BITSTREAM_VERA_TARGET_DIR) + $(INSTALL) -m 644 $(@D)/*.ttf $(BITSTREAM_VERA_TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/bitstream/Config.in b/buildroot/package/bitstream/Config.in new file mode 100644 index 0000000..9d967a0 --- /dev/null +++ b/buildroot/package/bitstream/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BITSTREAM + bool "bitstream" + help + biTStream is a set of C headers allowing a simpler access to + binary structures such as specified by MPEG, DVB, IETF, + SMPTE, IEEE, SCTE, etc. + + http://www.videolan.org/developers/bitstream.html diff --git a/buildroot/package/bitstream/bitstream.hash b/buildroot/package/bitstream/bitstream.hash new file mode 100644 index 0000000..a62f733 --- /dev/null +++ b/buildroot/package/bitstream/bitstream.hash @@ -0,0 +1,4 @@ +# From https://get.videolan.org/bitstream/1.2/bitstream-1.2.tar.bz2 +sha256 ccfbb438711606de1fad881b58c8f134e2d82b4d53a88ea48f2d1bcb49ca5ad2 bitstream-1.2.tar.bz2 +# From https://get.videolan.org/bitstream/1.2/bitstream-1.2.tar.bz2.md5 +md5 c4b2dbd84eb5799f1525eb9a4e01dc56 bitstream-1.2.tar.bz2 diff --git a/buildroot/package/bitstream/bitstream.mk b/buildroot/package/bitstream/bitstream.mk new file mode 100644 index 0000000..0b28ffe --- /dev/null +++ b/buildroot/package/bitstream/bitstream.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# bitstream +# +################################################################################ + +BITSTREAM_VERSION = 1.2 +BITSTREAM_SOURCE = bitstream-$(BITSTREAM_VERSION).tar.bz2 +BITSTREAM_SITE = https://get.videolan.org/bitstream/$(BITSTREAM_VERSION) +BITSTREAM_LICENSE = MIT +BITSTREAM_LICENSE_FILES = COPYING + +# package consists of header files only +BITSTREAM_INSTALL_STAGING = YES +BITSTREAM_INSTALL_TARGET = NO + +define BITSTREAM_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/blktrace/0001-iowatcher-link-with-lrt.patch b/buildroot/package/blktrace/0001-iowatcher-link-with-lrt.patch new file mode 100644 index 0000000..689a678 --- /dev/null +++ b/buildroot/package/blktrace/0001-iowatcher-link-with-lrt.patch @@ -0,0 +1,31 @@ +From 80d87b99d72034441ea4fbab81f5c80c1ef3b067 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 23 Aug 2016 16:36:14 +0200 +Subject: [PATCH] iowatcher: link with -lrt + +Some C libraries (notably uClibc) have the posix_spawn*() functions in +librt, so let's link iowatcher with -lrt. + +Signed-off-by: Thomas Petazzoni +Upstream-status: merged + (http://git.kernel.org/cgit/linux/kernel/git/axboe/blktrace.git/commit/?id=d1ab783430f5a832e973ed9a293da146c04c6702) +--- + iowatcher/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/iowatcher/Makefile b/iowatcher/Makefile +index 7b5101c..502476d 100644 +--- a/iowatcher/Makefile ++++ b/iowatcher/Makefile +@@ -19,7 +19,7 @@ all: $(ALL) + $(CC) -o $*.o -c $(ALL_CFLAGS) $< + + iowatcher: blkparse.o plot.o main.o tracers.o mpstat.o fio.o +- $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -lm ++ $(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) -lm -lrt + + depend: + @$(CC) -MM $(ALL_CFLAGS) *.c 1> .depend +-- +2.7.4 + diff --git a/buildroot/package/blktrace/Config.in b/buildroot/package/blktrace/Config.in new file mode 100644 index 0000000..dedfa03 --- /dev/null +++ b/buildroot/package/blktrace/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_BLKTRACE + bool "blktrace" + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # clock_nanosleep() + depends on BR2_USE_MMU # system() + select BR2_PACKAGE_LIBAIO + help + blktrace is a block layer IO tracing mechanism which provides + detailed information about request queue operations + up to user space. + + http://git.kernel.dk/?p=blktrace.git;a=summary + +comment "blktrace needs a toolchain w/ NPTL" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/blktrace/blktrace.hash b/buildroot/package/blktrace/blktrace.hash new file mode 100644 index 0000000..acd42fb --- /dev/null +++ b/buildroot/package/blktrace/blktrace.hash @@ -0,0 +1,2 @@ +# From http://brick.kernel.dk/snaps/MD5SUMS +md5 9a6ca62330c8adb0b6a4ea6cf8a55694 blktrace-1.1.0.tar.gz diff --git a/buildroot/package/blktrace/blktrace.mk b/buildroot/package/blktrace/blktrace.mk new file mode 100644 index 0000000..bc29c25 --- /dev/null +++ b/buildroot/package/blktrace/blktrace.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# blktrace +# +################################################################################ + +BLKTRACE_VERSION = 1.1.0 +BLKTRACE_SITE = http://brick.kernel.dk/snaps +BLKTRACE_DEPENDENCIES = libaio +BLKTRACE_LICENSE = GPL-2.0+ +BLKTRACE_LICENSE_FILES = COPYING + +define BLKTRACE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define BLKTRACE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(TARGET_CONFIGURE_OPTS) install \ + DESTDIR=$(TARGET_DIR) prefix=/usr +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/bluez-tools/Config.in b/buildroot/package/bluez-tools/Config.in new file mode 100644 index 0000000..5a1b7d0 --- /dev/null +++ b/buildroot/package/bluez-tools/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_BLUEZ_TOOLS + bool "bluez-tools" + depends on BR2_PACKAGE_BLUEZ_UTILS || BR2_PACKAGE_BLUEZ5_UTILS + depends on BR2_USE_MMU # dbus, libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_READLINE if BR2_PACKAGE_BLUEZ5_UTILS + help + A set of tools to manage bluetooth devices for linux + + https://github.com/khvzak/bluez-tools + +comment "bluez-tools needs a toolchain w/ wchar, threads" + depends on BR2_PACKAGE_BLUEZ_UTILS || BR2_PACKAGE_BLUEZ5_UTILS + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/bluez-tools/bluez-tools.hash b/buildroot/package/bluez-tools/bluez-tools.hash new file mode 100644 index 0000000..214fa5b --- /dev/null +++ b/buildroot/package/bluez-tools/bluez-tools.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 56204ddd1cc7890d60f6a47507755f786fa3ee28f1da370a32ca7d7e0795a953 bluez-tools-171181b6ef6c94aefc828dc7fd8de136b9f97532.tar.gz +sha256 62ca98af63d2ae142dbc77995c6bd4c259eaba4a5832daa33ae9e3d585b9205f bluez-tools-97efd293491ad7ec96a655665339908f2478b3d1.tar.gz diff --git a/buildroot/package/bluez-tools/bluez-tools.mk b/buildroot/package/bluez-tools/bluez-tools.mk new file mode 100644 index 0000000..49891bd --- /dev/null +++ b/buildroot/package/bluez-tools/bluez-tools.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# bluez-tools +# +################################################################################ + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +# this is the last version compatible with BlueZ 4 API +BLUEZ_TOOLS_VERSION = 171181b6ef6c94aefc828dc7fd8de136b9f97532 +else +BLUEZ_TOOLS_VERSION = 97efd293491ad7ec96a655665339908f2478b3d1 +endif +BLUEZ_TOOLS_SITE = $(call github,khvzak,bluez-tools,$(BLUEZ_TOOLS_VERSION)) + +# sources fetched from github, no configure script) +BLUEZ_TOOLS_AUTORECONF = YES +BLUEZ_TOOLS_DEPENDENCIES = host-pkgconf dbus dbus-glib +BLUEZ_TOOLS_LICENSE = GPL-2.0+ +BLUEZ_TOOLS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +BLUEZ_TOOLS_DEPENDENCIES += bluez_utils +# readline is an optional dependency when used with bluez_utils +# obex support depends on readline so enable it optionally +ifeq ($(BR2_PACKAGE_READLINE),y) +BLUEZ_TOOLS_CONF_OPTS += --enable-obex +BLUEZ_TOOLS_DEPENDENCIES += readline +else +BLUEZ_TOOLS_CONF_OPTS += --disable-obex +endif +else +# readline is a hard dependency when used with bluez5_utils +BLUEZ_TOOLS_DEPENDENCIES += bluez5_utils readline +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/bluez5_utils/0001-tools-bneptest.c-Remove-include-linux-if_bridge.h-to.patch b/buildroot/package/bluez5_utils/0001-tools-bneptest.c-Remove-include-linux-if_bridge.h-to.patch new file mode 100644 index 0000000..e8a3ff4 --- /dev/null +++ b/buildroot/package/bluez5_utils/0001-tools-bneptest.c-Remove-include-linux-if_bridge.h-to.patch @@ -0,0 +1,45 @@ +From 7c136b4f1941e5bb2a6c8d93985c5734c6aefb29 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 22 May 2016 09:48:57 +0200 +Subject: [PATCH 1/1] tools/bneptest.c: Remove include linux/if_bridge.h to fix + musl build + +Inspired by busybox commit: +https://git.busybox.net/busybox/commit/networking/brctl.c?id=5fa6d1a632505789409a2ba6cf8e112529f9db18 + +The build error was found by the autobuilders of the buildroot project: +http://autobuild.buildroot.net/results/eba/ebaa0bcb9c325aa6ed0bbd6c7ec75d44befa7645/build-end.log + +Signed-off-by: Bernd Kuhls +(Patch sent upstream: + http://article.gmane.org/gmane.linux.bluez.kernel/67621) +--- + tools/bneptest.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/tools/bneptest.c b/tools/bneptest.c +index 1404252..b832d72 100644 +--- a/tools/bneptest.c ++++ b/tools/bneptest.c +@@ -36,7 +36,17 @@ + #include + #include + #include +-#include ++/* #include ++ * breaks on musl: we already included netinet/in.h, ++ * if we also include here, we get this: ++ * In file included from /usr/include/linux/if_bridge.h:18, ++ * from networking/brctl.c:67: ++ * /usr/include/linux/in6.h:32: error: redefinition of 'struct in6_addr' ++ * /usr/include/linux/in6.h:49: error: redefinition of 'struct sockaddr_in6' ++ * /usr/include/linux/in6.h:59: error: redefinition of 'struct ipv6_mreq' ++ */ ++/* From */ ++#define BRCTL_SET_BRIDGE_FORWARD_DELAY 8 + + #include + +-- +2.8.1 + diff --git a/buildroot/package/bluez5_utils/0002-bt_shell-APIs-shall-only-be-build-if-readline-is-pre.patch b/buildroot/package/bluez5_utils/0002-bt_shell-APIs-shall-only-be-build-if-readline-is-pre.patch new file mode 100644 index 0000000..394742b --- /dev/null +++ b/buildroot/package/bluez5_utils/0002-bt_shell-APIs-shall-only-be-build-if-readline-is-pre.patch @@ -0,0 +1,32 @@ +From 654444dd8faf02b46f41d81f3d9c623d57bdd399 Mon Sep 17 00:00:00 2001 +From: Luiz Augusto von Dentz +Date: Fri, 20 Apr 2018 16:04:17 +0200 +Subject: [PATCH] bt_shell APIs shall only be build if readline is present on + the system since it currently depend on it. + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://marc.info/?l=linux-bluetooth&m=152422938306592&w=2 +--- + Makefile.am | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index daf34b6ca..9c3c17139 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -119,7 +119,11 @@ shared_sources = src/shared/io.h src/shared/timeout.h \ + src/shared/gatt-server.h src/shared/gatt-server.c \ + src/shared/gatt-db.h src/shared/gatt-db.c \ + src/shared/gap.h src/shared/gap.c \ +- src/shared/tty.h src/shared/shell.c src/shared/shell.h ++ src/shared/tty.h ++ ++if READLINE ++shared_sources += src/shared/shell.c src/shared/shell.h ++endif + + src_libshared_glib_la_SOURCES = $(shared_sources) \ + src/shared/io-glib.c \ +-- +2.14.3 + diff --git a/buildroot/package/bluez5_utils/0003-paravirt-server-auth_ignore_agent.patch b/buildroot/package/bluez5_utils/0003-paravirt-server-auth_ignore_agent.patch new file mode 100644 index 0000000..026f9be --- /dev/null +++ b/buildroot/package/bluez5_utils/0003-paravirt-server-auth_ignore_agent.patch @@ -0,0 +1,28 @@ +--- a/profiles/network/server.c 2017-07-14 11:12:22.000000000 +0200 ++++ b/profiles/network/server.c 2018-12-06 10:30:41.767313329 +0100 +@@ -407,8 +407,25 @@ + GError *err = NULL; + + if (derr) { ++ /* ++ * paravirt ++ * In nominal situation, an agent is required to manage the authentication. Once the remote ++ * tablet/smartphone is paired with the Smart Object, two scenarios can occur: ++ * - If the default agent is selected in bluetoothctl, the user should be prompted by the agent ++ * and encouraged to say "yes" to accept requests coming from the tablet. ++ * - If the default agent is not explicitly selected, the user should run trust XX:XX:XX:XX:XX:XX ++ * to accept future requests coming from the tablet. ++ * In both cases, a manual intervention of the user is required. It is not acceptable in our ++ * case because we do not know which tablet will connect to the Smart Object. For this reason, we ++ * ignore the "access denied" returned by btd_request_authorization and decide to go further, even ++ * authentication has failed. ++ */ ++#if 0 + error("Access denied: %s", derr->message); + goto reject; ++#endif /* 0 */ ++ /* paravirt */ ++ warn("%s error triggered but allowing access though", derr->message); + } + + if (!bt_io_accept(na->setup->io, connect_event, na, NULL, diff --git a/buildroot/package/bluez5_utils/Config.in b/buildroot/package/bluez5_utils/Config.in new file mode 100644 index 0000000..55831e9 --- /dev/null +++ b/buildroot/package/bluez5_utils/Config.in @@ -0,0 +1,105 @@ +config BR2_PACKAGE_BLUEZ5_UTILS + bool "bluez-utils 5.x" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus + depends on !BR2_STATIC_LIBS # uses dlfcn + depends on !BR2_PACKAGE_BLUEZ_UTILS # conflicts with 4.x version + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + help + bluez utils version 5.x + + With this release BlueZ only supports the new Bluetooth + Management kernel interface (introduced in Linux 3.4). + + For Low Energy support at least kernel version 3.5 is + needed. + + The API is not backward compatible with BlueZ 4. + + Bluez utils will use systemd and/or udev if enabled. + + http://www.bluez.org + http://www.kernel.org/pub/linux/bluetooth + +if BR2_PACKAGE_BLUEZ5_UTILS + +config BR2_PACKAGE_BLUEZ5_UTILS_OBEX + bool "build OBEX support" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBICAL + help + Enable the OBEX support in Bluez 5.x. + +comment "OBEX support needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_BLUEZ5_UTILS_CLIENT + bool "build CLI client" + select BR2_PACKAGE_READLINE + help + Enable the Bluez 5.x command line client. + +config BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED + bool "install deprecated tool" + depends on BR2_PACKAGE_BLUEZ5_UTILS_CLIENT + help + Build BlueZ 5.x deprecated tools. These currently include: + hciattach, hciconfig, hcitool, hcidump, rfcomm, sdptool, + ciptool, gatttool. + +config BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL + bool "build experimental obexd plugin" + help + Build BlueZ 5.x experimental Nokia OBEX PC Suite plugin + +config BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH + bool "build health plugin" + help + Build BlueZ 5.x health plugin + +config BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI + bool "build midi profile" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_SEQ + help + Build BlueZ 5.x midi plugin + +config BR2_PACKAGE_BLUEZ5_PLUGINS_NFC + bool "build nfc plugin" + help + Build BlueZ 5.x nfc plugin + +config BR2_PACKAGE_BLUEZ5_PLUGINS_SAP + bool "build sap plugin" + help + Build BlueZ 5.x sap plugin + +config BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS + bool "build sixaxis plugin" + depends on BR2_PACKAGE_HAS_UDEV + help + Build BlueZ 5.x sixaxis plugin (support Sony Dualshock + controller) + +comment "sixaxis plugin needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_BLUEZ5_UTILS_TEST + bool "build tests" + help + Build BlueZ 5.x tests + +endif + +comment "bluez5-utils needs a toolchain w/ wchar, threads, headers >= 3.4, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + +comment "bluez5-utils conflicts with older bluez-utils version" + depends on BR2_PACKAGE_BLUEZ_UTILS diff --git a/buildroot/package/bluez5_utils/bluez5_utils.hash b/buildroot/package/bluez5_utils/bluez5_utils.hash new file mode 100644 index 0000000..dc331b5 --- /dev/null +++ b/buildroot/package/bluez5_utils/bluez5_utils.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc: +sha256 b9a8723072ef66bae7ec301c774902ebcb444c9c5b149b5a199e60a1ba970e90 bluez-5.48.tar.xz diff --git a/buildroot/package/bluez5_utils/bluez5_utils.mk b/buildroot/package/bluez5_utils/bluez5_utils.mk new file mode 100644 index 0000000..c608637 --- /dev/null +++ b/buildroot/package/bluez5_utils/bluez5_utils.mk @@ -0,0 +1,125 @@ +################################################################################ +# +# bluez5_utils +# +################################################################################ + +BLUEZ5_UTILS_VERSION = 5.48 +BLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz +BLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth +BLUEZ5_UTILS_INSTALL_STAGING = YES +BLUEZ5_UTILS_DEPENDENCIES = dbus libglib2 +BLUEZ5_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+ +BLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB +# 0001-bt_shell-APIs-shall-only-be-build-if-readline-is-pre.patch +BLUEZ5_UTILS_AUTORECONF = YES + +BLUEZ5_UTILS_CONF_OPTS = \ + --enable-tools \ + --enable-library \ + --disable-cups + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_OBEX),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-obex +BLUEZ5_UTILS_DEPENDENCIES += libical +else +BLUEZ5_UTILS_CONF_OPTS += --disable-obex +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_CLIENT),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-client +BLUEZ5_UTILS_DEPENDENCIES += readline +else +BLUEZ5_UTILS_CONF_OPTS += --disable-client +endif + +# experimental plugins +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-experimental +else +BLUEZ5_UTILS_CONF_OPTS += --disable-experimental +endif + +# enable health plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-health +else +BLUEZ5_UTILS_CONF_OPTS += --disable-health +endif + +# enable midi profile +ifeq ($(BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-midi +BLUEZ5_UTILS_DEPENDENCIES += alsa-lib +else +BLUEZ5_UTILS_CONF_OPTS += --disable-midi +endif + +# enable nfc plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_PLUGINS_NFC),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-nfc +else +BLUEZ5_UTILS_CONF_OPTS += --disable-nfc +endif + +# enable sap plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_PLUGINS_SAP),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-sap +else +BLUEZ5_UTILS_CONF_OPTS += --disable-sap +endif + +# enable sixaxis plugin +ifeq ($(BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-sixaxis +else +BLUEZ5_UTILS_CONF_OPTS += --disable-sixaxis +endif + +# install gatttool (For some reason upstream choose not to do it by default) +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED),y) +define BLUEZ5_UTILS_INSTALL_GATTTOOL + $(INSTALL) -D -m 0755 $(@D)/attrib/gatttool $(TARGET_DIR)/usr/bin/gatttool +endef +BLUEZ5_UTILS_POST_INSTALL_TARGET_HOOKS += BLUEZ5_UTILS_INSTALL_GATTTOOL +# hciattach_bcm43xx defines default firmware path in `/etc/firmware`, but +# Broadcom firmware blobs are usually located in `/lib/firmware`. +BLUEZ5_UTILS_CONF_ENV += \ + CPPFLAGS='$(TARGET_CPPFLAGS) -DFIRMWARE_DIR=\"/lib/firmware\"' +BLUEZ5_UTILS_CONF_OPTS += --enable-deprecated +else +BLUEZ5_UTILS_CONF_OPTS += --disable-deprecated +endif + +# enable test +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_TEST),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-test +else +BLUEZ5_UTILS_CONF_OPTS += --disable-test +endif + +# use udev if available +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-udev +BLUEZ5_UTILS_DEPENDENCIES += udev +else +BLUEZ5_UTILS_CONF_OPTS += --disable-udev +endif + +# integrate with systemd if available +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +BLUEZ5_UTILS_CONF_OPTS += --enable-systemd +BLUEZ5_UTILS_DEPENDENCIES += systemd +else +BLUEZ5_UTILS_CONF_OPTS += --disable-systemd +endif + +define BLUEZ5_UTILS_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/bluetooth.target.wants + ln -fs ../../../../usr/lib/systemd/system/bluetooth.service \ + $(TARGET_DIR)/etc/systemd/system/bluetooth.target.wants/bluetooth.service + ln -fs ../../../usr/lib/systemd/system/bluetooth.service \ + $(TARGET_DIR)/etc/systemd/system/dbus-org.bluez.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/bluez_utils/0001-enable_cg2900_on_upstream_4.91.patch b/buildroot/package/bluez_utils/0001-enable_cg2900_on_upstream_4.91.patch new file mode 100644 index 0000000..e80af5f --- /dev/null +++ b/buildroot/package/bluez_utils/0001-enable_cg2900_on_upstream_4.91.patch @@ -0,0 +1,106 @@ +From ac7992081abba87627c9e91735b3309584b48585 Mon Sep 17 00:00:00 2001 +From: Gregory Hermant +Date: Wed, 14 Nov 2012 14:27:02 +0100 +Subject: [PATCH] add support for the ST-Ericsson CG2900 GPS FM Bluetooth + combo controller + + +Signed-off-by: Gregory Hermant +--- + tools/hciattach.c | 22 +++++++++++++++------- + tools/hciattach.h | 1 + + 2 files changed, 16 insertions(+), 7 deletions(-) + +diff --git a/tools/hciattach.c b/tools/hciattach.c +index e4d5aa1..7f08243 100644 +--- a/tools/hciattach.c ++++ b/tools/hciattach.c +@@ -1066,6 +1066,11 @@ struct uart_t uart[] = { + { "texasalt", 0x0000, 0x0000, HCI_UART_LL, 115200, 115200, + FLOW_CTL, DISABLE_PM, NULL, texasalt, NULL }, + ++ /* ST-Ericsson CG2900 GPS FM Bluetooth combo controller */ ++ { "cg2900", 0x0000, 0x0000, HCI_UART_STE, 115200, 115200, ++ FLOW_CTL, DISABLE_PM, NULL, NULL }, ++ ++ + /* ST Microelectronics minikits based on STLC2410/STLC2415 */ + { "st", 0x0000, 0x0000, HCI_UART_H4, 57600, 115200, + FLOW_CTL, DISABLE_PM, NULL, st }, +@@ -1157,10 +1162,10 @@ static struct uart_t * get_by_type(char *type) + } + + /* Initialize UART driver */ +-static int init_uart(char *dev, struct uart_t *u, int send_break, int raw) ++static int init_uart(char *dev, struct uart_t *u, int send_break, int raw, int line_disc) + { + struct termios ti; +- int fd, i; ++ int fd; + unsigned long flags = 0; + + if (raw) +@@ -1217,8 +1222,7 @@ static int init_uart(char *dev, struct uart_t *u, int send_break, int raw) + } + + /* Set TTY to N_HCI line discipline */ +- i = N_HCI; +- if (ioctl(fd, TIOCSETD, &i) < 0) { ++ if (ioctl(fd, TIOCSETD, &line_disc) < 0) { + perror("Can't set line discipline"); + return -1; + } +@@ -1243,7 +1247,7 @@ static void usage(void) + { + printf("hciattach - HCI UART driver initialization utility\n"); + printf("Usage:\n"); +- printf("\thciattach [-n] [-p] [-b] [-r] [-t timeout] [-s initial_speed] [speed] [flow|noflow] [bdaddr]\n"); ++ printf("\thciattach [-n] [-p] [-a line_disc_nr] [-b] [-r] [-t timeout] [-s initial_speed] [speed] [flow|noflow] [bdaddr]\n"); + printf("\thciattach -l\n"); + } + +@@ -1252,6 +1256,7 @@ int main(int argc, char *argv[]) + struct uart_t *u = NULL; + int detach, printpid, raw, opt, i, n, ld, err; + int to = 10; ++ int line_disc = N_HCI; + int init_speed = 0; + int send_break = 0; + pid_t pid; +@@ -1264,8 +1269,11 @@ int main(int argc, char *argv[]) + printpid = 0; + raw = 0; + +- while ((opt=getopt(argc, argv, "bnpt:s:lr")) != EOF) { ++ while ((opt=getopt(argc, argv, "bnpt:s:lra:")) != EOF) { + switch(opt) { ++ case 'a': ++ line_disc = atoi(optarg); ++ break; + case 'b': + send_break = 1; + break; +@@ -1381,7 +1389,7 @@ int main(int argc, char *argv[]) + alarm(to); + bcsp_max_retries = to; + +- n = init_uart(dev, u, send_break, raw); ++ n = init_uart(dev, u, send_break, raw, line_disc); + if (n < 0) { + perror("Can't initialize device"); + exit(1); +diff --git a/tools/hciattach.h b/tools/hciattach.h +index fed0d11..09b534d 100644 +--- a/tools/hciattach.h ++++ b/tools/hciattach.h +@@ -39,6 +39,7 @@ + #define HCI_UART_H4DS 3 + #define HCI_UART_LL 4 + #define HCI_UART_ATH3K 5 ++#define HCI_UART_STE 6 + + #define HCI_UART_RAW_DEVICE 0 + +-- +1.7.9.5 + diff --git a/buildroot/package/bluez_utils/0002-tools-hciconfig-include-fcntl.h.patch b/buildroot/package/bluez_utils/0002-tools-hciconfig-include-fcntl.h.patch new file mode 100644 index 0000000..7d0763f --- /dev/null +++ b/buildroot/package/bluez_utils/0002-tools-hciconfig-include-fcntl.h.patch @@ -0,0 +1,27 @@ +From ae607756a5f2a09bce1fc3a52e74b5f471245e33 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 6 Apr 2015 23:54:19 +0200 +Subject: [PATCH] tools/hciconfig: include + +Needed to get the definition of mode_t in musl. + +Signed-off-by: Thomas Petazzoni +--- + tools/hciconfig.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tools/hciconfig.c b/tools/hciconfig.c +index f1458b9..6776d62 100644 +--- a/tools/hciconfig.c ++++ b/tools/hciconfig.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + #include + #include + #include +-- +2.1.0 + diff --git a/buildroot/package/bluez_utils/0003-fix-compilation-issues-with-musl.patch b/buildroot/package/bluez_utils/0003-fix-compilation-issues-with-musl.patch new file mode 100644 index 0000000..d8b48ea --- /dev/null +++ b/buildroot/package/bluez_utils/0003-fix-compilation-issues-with-musl.patch @@ -0,0 +1,61 @@ +From 8aa6aa4ba2d9d00c91e36e146895af20cbc00d17 Mon Sep 17 00:00:00 2001 +From: Brendan Heading +Date: Wed, 2 Sep 2015 12:10:58 +0100 +Subject: [PATCH 1/1] fix compilation issues with musl. + +- sys/time.h needed for struct timeval +- unistd.h should not be included due to clash with encrypt(3) +- sys/types.h needed for mode_t + +Note that this version of bluez is 3 years old. Recent fixes have gone +into the upstream to address musl compatibility issues, but the upstream +has changed so much that it makes little sense to try to backport these. +This patch is really a stopgap until we move to the latest upstream. + +Upstream-Status: not needed +Signed-off-by: Brendan Heading +--- + compat/bnep.c | 1 + + compat/dund.c | 1 - + src/textfile.h | 1 + + 3 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/compat/bnep.c b/compat/bnep.c +index 281350b..49226c1 100644 +--- a/compat/bnep.c ++++ b/compat/bnep.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + + #include + #include +diff --git a/compat/dund.c b/compat/dund.c +index af1b536..c2f085f 100644 +--- a/compat/dund.c ++++ b/compat/dund.c +@@ -29,7 +29,6 @@ + #include + #include + #include +-#include + #include + #include + #include +diff --git a/src/textfile.h b/src/textfile.h +index dc5fc2b..0148b30 100644 +--- a/src/textfile.h ++++ b/src/textfile.h +@@ -24,6 +24,7 @@ + #ifndef __TEXTFILE_H + #define __TEXTFILE_H + ++#include + int create_dirs(const char *filename, const mode_t mode); + int create_file(const char *filename, const mode_t mode); + int create_name(char *buf, size_t size, const char *path, +-- +2.4.3 + diff --git a/buildroot/package/bluez_utils/0004-test-add-missing-header.patch b/buildroot/package/bluez_utils/0004-test-add-missing-header.patch new file mode 100644 index 0000000..c74afb8 --- /dev/null +++ b/buildroot/package/bluez_utils/0004-test-add-missing-header.patch @@ -0,0 +1,34 @@ +From d3c098c2fde55ddf0c7d56eae56925103d35da73 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 13 May 2017 18:56:51 +0200 +Subject: [PATCH] test: add missing header + +test/attest.c: In function 'at_command': +test/attest.c:43:2: error: unknown type name 'fd_set' + fd_set rfds; + ^ + +Fixes: +http://autobuild.buildroot.net/results/06c/06c930d9c5299b79500d018ac3fb2861ce834c7c/ + +Signed-off-by: Romain Naour +--- + test/attest.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/test/attest.c b/test/attest.c +index 12ba682..2626cf1 100644 +--- a/test/attest.c ++++ b/test/attest.c +@@ -35,6 +35,8 @@ + #include + #include + ++#include ++ + #include + #include + +-- +2.9.3 + diff --git a/buildroot/package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch b/buildroot/package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch new file mode 100644 index 0000000..438da97 --- /dev/null +++ b/buildroot/package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch @@ -0,0 +1,107 @@ +From d8056252d0c99bfb2482f0a420dcf9a36019ddf8 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 13 May 2017 18:58:51 +0200 +Subject: [PATCH] test: avoid conflict with encrypt function +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +With a musl based toolchain: + +test/l2test.c:110:12: error: ‘encrypt’ redeclared as different kind of symbol + static int encrypt = 0; + ^ +In file included from test/l2test.c:34:0: +[...]/sysroot/usr/include/unistd.h:145:6: note: previous declaration of ‘encrypt’ was here + void encrypt(char *, int); + ^ + +Signed-off-by: Romain Naour +--- + test/l2test.c | 8 ++++---- + test/rctest.c | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/test/l2test.c b/test/l2test.c +index f66486d..9ef6faf 100644 +--- a/test/l2test.c ++++ b/test/l2test.c +@@ -107,7 +107,7 @@ static char *filename = NULL; + static int rfcmode = 0; + static int master = 0; + static int auth = 0; +-static int encrypt = 0; ++static int _encrypt = 0; + static int secure = 0; + static int socktype = SOCK_SEQPACKET; + static int linger = 0; +@@ -340,7 +340,7 @@ static int do_connect(char *svr) + opt |= L2CAP_LM_MASTER; + if (auth) + opt |= L2CAP_LM_AUTH; +- if (encrypt) ++ if (_encrypt) + opt |= L2CAP_LM_ENCRYPT; + if (secure) + opt |= L2CAP_LM_SECURE; +@@ -475,7 +475,7 @@ static void do_listen(void (*handler)(int sk)) + opt |= L2CAP_LM_MASTER; + if (auth) + opt |= L2CAP_LM_AUTH; +- if (encrypt) ++ if (_encrypt) + opt |= L2CAP_LM_ENCRYPT; + if (secure) + opt |= L2CAP_LM_SECURE; +@@ -1407,7 +1407,7 @@ int main(int argc, char *argv[]) + break; + + case 'E': +- encrypt = 1; ++ _encrypt = 1; + break; + + case 'S': +diff --git a/test/rctest.c b/test/rctest.c +index 4d7c90a..7ad5a0b 100644 +--- a/test/rctest.c ++++ b/test/rctest.c +@@ -79,7 +79,7 @@ static char *filename = NULL; + + static int master = 0; + static int auth = 0; +-static int encrypt = 0; ++static int _encrypt = 0; + static int secure = 0; + static int socktype = SOCK_STREAM; + static int linger = 0; +@@ -200,7 +200,7 @@ static int do_connect(const char *svr) + opt |= RFCOMM_LM_MASTER; + if (auth) + opt |= RFCOMM_LM_AUTH; +- if (encrypt) ++ if (_encrypt) + opt |= RFCOMM_LM_ENCRYPT; + if (secure) + opt |= RFCOMM_LM_SECURE; +@@ -291,7 +291,7 @@ static void do_listen(void (*handler)(int sk)) + opt |= RFCOMM_LM_MASTER; + if (auth) + opt |= RFCOMM_LM_AUTH; +- if (encrypt) ++ if (_encrypt) + opt |= RFCOMM_LM_ENCRYPT; + if (secure) + opt |= RFCOMM_LM_SECURE; +@@ -701,7 +701,7 @@ int main(int argc, char *argv[]) + break; + + case 'E': +- encrypt = 1; ++ _encrypt = 1; + break; + + case 'S': +-- +2.9.3 + diff --git a/buildroot/package/bluez_utils/Config.in b/buildroot/package/bluez_utils/Config.in new file mode 100644 index 0000000..327d26b --- /dev/null +++ b/buildroot/package/bluez_utils/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_BLUEZ_UTILS + bool "bluez-utils" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + select BR2_PACKAGE_CHECK + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + help + bluez utils + + http://www.kernel.org/pub/linux/bluetooth + +if BR2_PACKAGE_BLUEZ_UTILS + +config BR2_PACKAGE_BLUEZ_UTILS_COMPAT + bool "BlueZ 3.x compatibility binaries" + help + BlueZ 3.x compatibility binaries like pand, hidd, sdp + +config BR2_PACKAGE_BLUEZ_UTILS_AUDIO + bool "audio support" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_LIBSNDFILE + help + Audio support + +config BR2_PACKAGE_BLUEZ_UTILS_USB + bool "USB support" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + USB support + +config BR2_PACKAGE_BLUEZ_UTILS_GATT + bool "GATT support" + select BR2_PACKAGE_READLINE + help + Generic Attribute Profile (GATT) support. This provides + profile discovery and description services for Bluetooth Low + Energy. + This will install the gatttool utility. +endif + +comment "bluez-utils needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/bluez_utils/bluez_utils.hash b/buildroot/package/bluez_utils/bluez_utils.hash new file mode 100644 index 0000000..39e750e --- /dev/null +++ b/buildroot/package/bluez_utils/bluez_utils.hash @@ -0,0 +1,5 @@ +# From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc: +sha256 41f9578bef39b8c94a2d6ddeaa556afd22d136936d0f03100e422fe970a45a7d bluez-4.101.tar.xz +# License files, locally calculated +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/buildroot/package/bluez_utils/bluez_utils.mk b/buildroot/package/bluez_utils/bluez_utils.mk new file mode 100644 index 0000000..256f012 --- /dev/null +++ b/buildroot/package/bluez_utils/bluez_utils.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# bluez_utils +# +################################################################################ + +BLUEZ_UTILS_VERSION = 4.101 +BLUEZ_UTILS_SOURCE = bluez-$(BLUEZ_UTILS_VERSION).tar.xz +BLUEZ_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth +BLUEZ_UTILS_INSTALL_STAGING = YES +BLUEZ_UTILS_DEPENDENCIES = host-pkgconf check dbus libglib2 +BLUEZ_UTILS_CONF_OPTS = --enable-test --enable-tools +BLUEZ_UTILS_AUTORECONF = YES +BLUEZ_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+ +BLUEZ_UTILS_LICENSE_FILES = COPYING COPYING.LIB + +# BlueZ 3.x compatibility +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS_COMPAT),y) +BLUEZ_UTILS_CONF_OPTS += \ + --enable-hidd \ + --enable-pand \ + --enable-sdp \ + --enable-dund +endif + +# audio support +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS_AUDIO),y) +BLUEZ_UTILS_DEPENDENCIES += \ + alsa-lib \ + libsndfile +BLUEZ_UTILS_CONF_OPTS += \ + --enable-alsa \ + --enable-audio +else +BLUEZ_UTILS_CONF_OPTS += \ + --disable-alsa \ + --disable-audio +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS_GATT),y) +BLUEZ_UTILS_DEPENDENCIES += readline +BLUEZ_UTILS_CONF_OPTS += --enable-gatt +else +BLUEZ_UTILS_CONF_OPTS += --disable-gatt +endif + +# USB support +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS_USB),y) +BLUEZ_UTILS_DEPENDENCIES += libusb +BLUEZ_UTILS_CONF_OPTS += \ + --enable-usb +else +BLUEZ_UTILS_CONF_OPTS += \ + --disable-usb +endif + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +BLUEZ_UTILS_CONF_OPTS += --disable-pie +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/bmon/Config.in b/buildroot/package/bmon/Config.in new file mode 100644 index 0000000..cb83cc2 --- /dev/null +++ b/buildroot/package/bmon/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BMON + bool "bmon" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBCONFUSE + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_NCURSES + help + bmon is a bandwidth monitor capable of retrieving statistics + from various input modules. It provides various output methods + including a curses based interface. + + https://github.com/tgraf/bmon/ + +comment "bmon needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/bmon/bmon.hash b/buildroot/package/bmon/bmon.hash new file mode 100644 index 0000000..dec0c7d --- /dev/null +++ b/buildroot/package/bmon/bmon.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 02fdc312b8ceeb5786b28bf905f54328f414040ff42f45c83007f24b76cc9f7a bmon-4.0.tar.gz diff --git a/buildroot/package/bmon/bmon.mk b/buildroot/package/bmon/bmon.mk new file mode 100644 index 0000000..84dab70 --- /dev/null +++ b/buildroot/package/bmon/bmon.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# bmon +# +################################################################################ + +BMON_VERSION = 4.0 +BMON_SITE = https://github.com/tgraf/bmon/releases/download/v$(BMON_VERSION) +BMON_DEPENDENCIES = host-pkgconf libconfuse libnl ncurses +BMON_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +BMON_LICENSE = BSD-2-Clause, MIT +BMON_LICENSE_FILES = LICENSE.BSD LICENSE.MIT + +# link dynamically unless explicitly requested otherwise +ifeq ($(BR2_STATIC_LIBS),) +BMON_CONF_OPTS += --disable-static +else +# forgets to explicitly link with pthread for libnl +BMON_CONF_OPTS += LIBS=-lpthread +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/boa/0001-use-name-max.patch b/buildroot/package/boa/0001-use-name-max.patch new file mode 100644 index 0000000..055e56c --- /dev/null +++ b/buildroot/package/boa/0001-use-name-max.patch @@ -0,0 +1,21 @@ +Use NAME_MAX instead of MAXNAMLEN + +NAME_MAX is POSIX, and available in all C libraries, generally in +, while MAXNAMLEN is BSD-specific, and only available in +musl in . So let's use NAME_MAX instead of MAXNAMLEN. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/index_dir.c +=================================================================== +--- a/src/index_dir.c ++++ b/src/index_dir.c +@@ -29,7 +29,7 @@ + #include + #include "compat.h" + +-#define MAX_FILE_LENGTH MAXNAMLEN ++#define MAX_FILE_LENGTH NAME_MAX + #define MAX_PATH_LENGTH PATH_MAX + + #define INT_TO_HEX(x) \ diff --git a/buildroot/package/boa/Config.in b/buildroot/package/boa/Config.in new file mode 100644 index 0000000..cb085a2 --- /dev/null +++ b/buildroot/package/boa/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BOA + bool "boa" + depends on BR2_USE_MMU # uses fork() + help + A very small and very fast http daemon. Not intended as + a feature-packed server. + + http://www.boa.org/ diff --git a/buildroot/package/boa/boa.conf b/buildroot/package/boa/boa.conf new file mode 100644 index 0000000..e940296 --- /dev/null +++ b/buildroot/package/boa/boa.conf @@ -0,0 +1,187 @@ +# Boa v0.94 configuration file +# File format has not changed from 0.93 +# File format has changed little from 0.92 +# version changes are noted in the comments +# +# The Boa configuration file is parsed with a lex/yacc or flex/bison +# generated parser. If it reports an error, the line number will be +# provided; it should be easy to spot. The syntax of each of these +# rules is very simple, and they can occur in any order. Where possible +# these directives mimic those of NCSA httpd 1.3; I saw no reason to +# introduce gratuitous differences. + +# $Id: boa.conf,v 1.1 2004/10/09 02:48:37 andersen Exp $ + +# The "ServerRoot" is not in this configuration file. It can be compiled +# into the server (see defines.h) or specified on the command line with +# the -c option, for example: +# +# boa -c /usr/local/boa + + +# Port: The port Boa runs on. The default port for http servers is 80. +# If it is less than 1024, the server must be started as root. + +Port 80 + +# Listen: the Internet address to bind(2) to. If you leave it out, +# it takes the behavior before 0.93.17.2, which is to bind to all +# addresses (INADDR_ANY). You only get one "Listen" directive, +# if you want service on multiple IP addresses, you have three choices: +# 1. Run boa without a "Listen" directive +# a. All addresses are treated the same; makes sense if the addresses +# are localhost, ppp, and eth0. +# b. Use the VirtualHost directive below to point requests to different +# files. Should be good for a very large number of addresses (web +# hosting clients). +# 2. Run one copy of boa per IP address, each has its own configuration +# with a "Listen" directive. No big deal up to a few tens of addresses. +# Nice separation between clients. +# The name you provide gets run through inet_aton(3), so you have to use dotted +# quad notation. This configuration is too important to trust some DNS. + +#Listen 192.68.0.5 + +# User: The name or UID the server should run as. +# Group: The group name or GID the server should run as. + +User nobody +Group nogroup + +# ServerAdmin: The email address where server problems should be sent. +# Note: this is not currently used, except as an environment variable +# for CGIs. + +#ServerAdmin root@localhost + +# ErrorLog: The location of the error log file. If this does not start +# with /, it is considered relative to the server root. +# Set to /dev/null if you don't want errors logged. +# If unset, defaults to /dev/stderr + +ErrorLog /var/log/boa/error_log +# Please NOTE: Sending the logs to a pipe ('|'), as shown below, +# is somewhat experimental and might fail under heavy load. +# "Usual libc implementations of printf will stall the whole +# process if the receiving end of a pipe stops reading." +#ErrorLog "|/usr/sbin/cronolog --symlink=/var/log/boa/error_log /var/log/boa/error-%Y%m%d.log" + +# AccessLog: The location of the access log file. If this does not +# start with /, it is considered relative to the server root. +# Comment out or set to /dev/null (less effective) to disable +# Access logging. + +AccessLog /var/log/boa/access_log +# Please NOTE: Sending the logs to a pipe ('|'), as shown below, +# is somewhat experimental and might fail under heavy load. +# "Usual libc implementations of printf will stall the whole +# process if the receiving end of a pipe stops reading." +#AccessLog "|/usr/sbin/cronolog --symlink=/var/log/boa/access_log /var/log/boa/access-%Y%m%d.log" + +# UseLocaltime: Logical switch. Uncomment to use localtime +# instead of UTC time +#UseLocaltime + +# VerboseCGILogs: this is just a logical switch. +# It simply notes the start and stop times of cgis in the error log +# Comment out to disable. + +#VerboseCGILogs + +# ServerName: the name of this server that should be sent back to +# clients if different than that returned by gethostname + gethostbyname + +#ServerName www.your.org.here + +# VirtualHost: a logical switch. +# Comment out to disable. +# Given DocumentRoot /var/www, requests on interface 'A' or IP 'IP-A' +# become /var/www/IP-A. +# Example: http://localhost/ becomes /var/www/127.0.0.1 +# +# Not used until version 0.93.17.2. This "feature" also breaks commonlog +# output rules, it prepends the interface number to each access_log line. +# You are expected to fix that problem with a postprocessing script. + +#VirtualHost + +# DocumentRoot: The root directory of the HTML documents. +# Comment out to disable server non user files. + +DocumentRoot /var/www + +# UserDir: The name of the directory which is appended onto a user's home +# directory if a ~user request is recieved. + +UserDir public_html + +# DirectoryIndex: Name of the file to use as a pre-written HTML +# directory index. Please MAKE AND USE THESE FILES. On the +# fly creation of directory indexes can be _slow_. +# Comment out to always use DirectoryMaker + +DirectoryIndex index.html + +# DirectoryMaker: Name of program used to create a directory listing. +# Comment out to disable directory listings. If both this and +# DirectoryIndex are commented out, accessing a directory will give +# an error (though accessing files in the directory are still ok). + +DirectoryMaker /usr/lib/boa/boa_indexer + +# DirectoryCache: If DirectoryIndex doesn't exist, and DirectoryMaker +# has been commented out, the the on-the-fly indexing of Boa can be used +# to generate indexes of directories. Be warned that the output is +# extremely minimal and can cause delays when slow disks are used. +# Note: The DirectoryCache must be writable by the same user/group that +# Boa runs as. + +# DirectoryCache /var/spool/boa/dircache + +# KeepAliveMax: Number of KeepAlive requests to allow per connection +# Comment out, or set to 0 to disable keepalive processing + +KeepAliveMax 1000 + +# KeepAliveTimeout: seconds to wait before keepalive connection times out + +KeepAliveTimeout 10 + +# MimeTypes: This is the file that is used to generate mime type pairs +# and Content-Type fields for boa. +# Set to /dev/null if you do not want to load a mime types file. +# Do *not* comment out (better use AddType!) + +MimeTypes /etc/mime.types + +# DefaultType: MIME type used if the file extension is unknown, or there +# is no file extension. + +DefaultType text/plain + +# AddType: adds types without editing mime.types +# Example: AddType type extension [extension ...] + +# Uncomment the next line if you want .cgi files to execute from anywhere +#AddType application/x-httpd-cgi cgi + +# Redirect, Alias, and ScriptAlias all have the same semantics -- they +# match the beginning of a request and take appropriate action. Use +# Redirect for other servers, Alias for the same server, and ScriptAlias +# to enable directories for script execution. + +# Redirect allows you to tell clients about documents which used to exist in +# your server's namespace, but do not anymore. This allows you to tell the +# clients where to look for the relocated document. +# Example: Redirect /bar http://elsewhere/feh/bar + +# Aliases: Aliases one path to another. +# Example: Alias /path1/bar /path2/foo + +# Alias /doc /usr/doc + +# ScriptAlias: Maps a virtual path to a directory for serving scripts +# Example: ScriptAlias /htbin/ /www/htbin/ + +ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ + diff --git a/buildroot/package/boa/boa.hash b/buildroot/package/boa/boa.hash new file mode 100644 index 0000000..37760fd --- /dev/null +++ b/buildroot/package/boa/boa.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 02c51bf25f29d56e641b662f0767759654c28d88ec31f55c5a73d57edfe13cf6 boa-0.94.14rc21.tar.gz diff --git a/buildroot/package/boa/boa.mk b/buildroot/package/boa/boa.mk new file mode 100644 index 0000000..d8bcaa1 --- /dev/null +++ b/buildroot/package/boa/boa.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# boa +# +################################################################################ + +BOA_VERSION = 0.94.14rc21 +BOA_SITE = http://www.boa.org +BOA_LICENSE = GPL-2.0+ +BOA_LICENSE_FILES = COPYING + +define BOA_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/src/boa $(TARGET_DIR)/usr/sbin/boa + $(INSTALL) -D -m 755 $(@D)/src/boa_indexer $(TARGET_DIR)/usr/lib/boa/boa_indexer + $(INSTALL) -D -m 644 package/boa/boa.conf $(TARGET_DIR)/etc/boa/boa.conf + $(INSTALL) -D -m 644 package/boa/mime.types $(TARGET_DIR)/etc/mime.types +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/boa/mime.types b/buildroot/package/boa/mime.types new file mode 100644 index 0000000..53f6ea1 --- /dev/null +++ b/buildroot/package/boa/mime.types @@ -0,0 +1,205 @@ +############################################################################### +# +# MIME-TYPES and the extensions that represent them +# +# This file is part of the "mime-support" package. Please send email (not a +# bug report) to mime-support@packages.debian.org if you would like new types +# and/or extensions to be added. +# +# Note: Compression schemes like "gzip", "bzip", and "compress" are not +# actually "mime-types". They are "encodings" and hence must _not_ have +# entries in this file to map their extensions. The "mime-type" of an +# encoded file refers to the type of data that has been encoded, not the +# type of the encoding. +# +############################################################################### + + +application/activemessage +application/andrew-inset +application/applefile +application/atomicmail +application/cu-seeme csm cu +application/dca-rft +application/dec-dx +application/dsptype tsp +application/futuresplash spl +application/ghostview +application/mac-binhex40 hqx +application/macwriteii +application/msaccess mdb +application/msword doc dot +application/news-message-id +application/news-transmission +application/octet-stream bin +application/oda oda +application/pdf pdf +application/pgp-signature pgp +application/postscript ps ai eps +application/remote-printing +application/rtf rtf +application/slate +application/vnd.ms-excel xls xlb +application/vnd.ms-powerpoint ppt pps pot +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/wita +application/wordperfect5.1 wp5 +application/zip zip +application/x-123 wk +application/x-bcpio bcpio +application/x-chess-pgn pgn +application/x-core +application/x-cpio cpio +application/x-csh +application/x-debian-package deb +application/x-director dcr dir dxr +application/x-dms dms +application/x-dvi dvi +application/x-executable +application/x-font pfa pfb gsf pcf pcf.Z +application/x-gnumeric gnumeric +application/x-gtar gtar tgz +application/x-hdf hdf +application/x-httpd-php phtml pht php +application/x-httpd-php3 php3 +application/x-httpd-php3-source phps +application/x-httpd-php3-preprocessed php3p +application/x-httpd-php4 php4 +application/x-ica ica +application/x-java class +application/x-javascript js +application/x-kdelnk +application/x-kchart chrt +application/x-killustrator kil +application/x-kpresenter kpr kpt +application/x-kspread ksp +application/x-kword kwd kwt +application/x-latex latex +application/x-lha lha +application/x-lzh lzh +application/x-lzx lzx +application/x-maker frm maker frame fm fb book fbdoc +application/x-mif mif +application/x-msdos-program com exe bat dll +application/x-msi msi +application/x-netcdf nc cdf +application/x-ns-proxy-autoconfig pac +application/x-object o +application/x-ogg ogg +application/x-oz-application oza +application/x-perl pl pm +application/x-redhat-package-manager rpm +application/x-rx +application/x-sh +application/x-shar shar +application/x-shellscript +application/x-shockwave-flash swf swfl +application/x-stuffit sit +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl +application/x-tex +application/x-tex-gf gf +application/x-tex-pk pk PK +application/x-texinfo texinfo texi +application/x-trash ~ % bak old sik +application/x-troff t tr roff +application/x-troff-man man +application/x-troff-me me +application/x-troff-ms ms +application/x-ustar ustar +application/x-wais-source src +application/x-wingz wz + +audio/basic au snd +audio/midi mid midi +audio/mpeg mpga mpega mp2 mp3 +audio/mpegurl m3u +audio/prs.sid sid +audio/x-aiff aif aiff aifc +audio/x-gsm gsm +audio/x-pn-realaudio ra rm ram +audio/x-wav wav + +image/bitmap bmp +image/gif gif +image/ief ief +image/jpeg jpeg jpg jpe +image/pcx pcx +image/png png +image/tiff tiff tif +image/vnd.wap.wbmp wbmp +image/x-cmu-raster ras +image/x-coreldraw cdr +image/x-coreldrawpattern pat +image/x-coreldrawtemplate cdt +image/x-corelphotopaint cpt +image/x-jng jng +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd + +inode/chardevice +inode/blockdevice +inode/directory-locked +inode/directory +inode/fifo +inode/socket + +message/external-body +message/news +message/partial +message/rfc822 + +multipart/alternative +multipart/appledouble +multipart/digest +multipart/mixed +multipart/parallel + +text/comma-separated-values csv +text/css css +text/english +text/html htm html xhtml +text/mathml mml +text/plain txt text diff +text/richtext rtx +text/tab-separated-values tsv +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/xml xml +text/x-c++hdr h++ hpp hxx hh +text/x-c++src c++ cpp cxx cc +text/x-chdr h +text/x-crontab +text/x-csh csh +text/x-csrc c +text/x-java java +text/x-makefile +text/x-moc moc +text/x-pascal p pas +text/x-setext etx +text/x-sh sh +text/x-tcl tcl tk +text/x-tex tex ltx sty cls +text/x-vcalendar vcs +text/x-vcard vcf + +video/dl dl +video/fli fli +video/gl gl +video/mpeg mpeg mpg mpe +video/quicktime qt mov +video/x-mng mng +video/x-ms-asf asf asx +video/x-msvideo avi +video/x-sgi-movie movie + +x-world/x-vrml vrm vrml wrl diff --git a/buildroot/package/boinc/Config.in b/buildroot/package/boinc/Config.in new file mode 100644 index 0000000..5239019 --- /dev/null +++ b/buildroot/package/boinc/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_BOINC + bool "boinc" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_OPENSSL + help + Open-source software for volunteer computing and grid + computing. + + Use the idle time on your computer to cure diseases, study + global warming, discover pulsars, and do many other types of + scientific research. + + https://boinc.berkeley.edu + +comment "boinc needs a toolchain w/ dynamic library, C++, threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/boinc/S99boinc-client b/buildroot/package/boinc/S99boinc-client new file mode 100644 index 0000000..f4b2a2c --- /dev/null +++ b/buildroot/package/boinc/S99boinc-client @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME=boinc_client +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/bin/$NAME + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/boinc/boinc-client.service b/buildroot/package/boinc/boinc-client.service new file mode 100644 index 0000000..9de940e --- /dev/null +++ b/buildroot/package/boinc/boinc-client.service @@ -0,0 +1,10 @@ +[Unit] +Description=BOINC client +After=network.target + +[Service] +ExecStart=/usr/bin/boinc_client +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/boinc/boinc.hash b/buildroot/package/boinc/boinc.hash new file mode 100644 index 0000000..8f44982 --- /dev/null +++ b/buildroot/package/boinc/boinc.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 ed5f3dcdc8d1cc5277529afb701377e77d1ff89711368a7456553bf249940bad boinc-7.8.6.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LESSER diff --git a/buildroot/package/boinc/boinc.mk b/buildroot/package/boinc/boinc.mk new file mode 100644 index 0000000..0105034 --- /dev/null +++ b/buildroot/package/boinc/boinc.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# boinc +# +################################################################################ + +BOINC_VERSION_MAJOR = 7.8 +BOINC_VERSION = $(BOINC_VERSION_MAJOR).6 +# client_release can be used to build the Client and Manager but not the Server +# part. The Server currently has no versioning (see +# https://github.com/BOINC/boinc/pull/1798). +BOINC_SITE = \ + $(call github,BOINC,boinc,client_release/$(BOINC_VERSION_MAJOR)/$(BOINC_VERSION)) +BOINC_LICENSE = LGPL-3.0+ +BOINC_LICENSE_FILES = COPYING COPYING.LESSER +BOINC_DEPENDENCIES = host-pkgconf libcurl openssl +BOINC_AUTORECONF = YES +BOINC_CONF_OPTS = \ + --disable-apps \ + --disable-boinczip \ + --disable-manager \ + --disable-server \ + --enable-client \ + --enable-dynamic-client-linkage \ + --enable-libraries \ + --with-pkg-config=$(PKG_CONFIG_HOST_BINARY) \ + --with-libcurl=$(STAGING_DIR)/usr + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +BOINC_DEPENDENCIES += freetype +endif + +ifeq ($(BR2_PACKAGE_LIBFCGI),y) +BOINC_DEPENDENCIES += libfcgi +BOINC_CONF_OPTS += --enable-fcgi +else +BOINC_CONF_OPTS += --disable-fcgi +endif + +# Remove boinc-client because it is incompatible with buildroot +define BOINC_REMOVE_UNNEEDED_FILE + $(RM) $(TARGET_DIR)/etc/init.d/boinc-client +endef + +BOINC_POST_INSTALL_TARGET_HOOKS += BOINC_REMOVE_UNNEEDED_FILE + +define BOINC_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/boinc/S99boinc-client \ + $(TARGET_DIR)/etc/init.d/S99boinc-client +endef + +define BOINC_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/boinc/boinc-client.service \ + $(TARGET_DIR)/usr/lib/systemd/system/boinc-client.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/boinc-client.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/boinc-client.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/bonnie/Config.in b/buildroot/package/bonnie/Config.in new file mode 100644 index 0000000..4b0adda --- /dev/null +++ b/buildroot/package/bonnie/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_BONNIE + bool "bonnie++" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + help + A benchmark suite that is aimed at performing a number of + simple tests of hard drive and file system performance. + + http://www.coker.com.au/bonnie++/ + +comment "bonnie++ needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/bonnie/bonnie.hash b/buildroot/package/bonnie/bonnie.hash new file mode 100644 index 0000000..acf00fd --- /dev/null +++ b/buildroot/package/bonnie/bonnie.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cb3866116634bf65760b6806be4afa7e24a1cad6f145c876df8721f01ba2e2cb bonnie++-1.03e.tgz diff --git a/buildroot/package/bonnie/bonnie.mk b/buildroot/package/bonnie/bonnie.mk new file mode 100644 index 0000000..e5c8640 --- /dev/null +++ b/buildroot/package/bonnie/bonnie.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bonnie +# +################################################################################ + +BONNIE_VERSION = 1.03e +BONNIE_SOURCE = bonnie++-$(BONNIE_VERSION).tgz +BONNIE_SITE = http://www.coker.com.au/bonnie++ +BONNIE_LICENSE = GPL-2.0 +BONNIE_LICENSE_FILES = copyright.txt + +define BONNIE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/bonnie++ $(TARGET_DIR)/usr/sbin/bonnie++ + $(INSTALL) -D -m 755 $(@D)/zcav $(TARGET_DIR)/usr/sbin/zcav +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/boost/0001-fix-ambiguous-format-call-on-64bit-builds.patch b/buildroot/package/boost/0001-fix-ambiguous-format-call-on-64bit-builds.patch new file mode 100644 index 0000000..e8972fd --- /dev/null +++ b/buildroot/package/boost/0001-fix-ambiguous-format-call-on-64bit-builds.patch @@ -0,0 +1,27 @@ +boost: fix ambiguous format call on 64-bit builds + +Fixes problem: + +libs/locale/src/icu/formatter.cpp: In member function +'virtual std::basic_string<_CharT, std::char_traits<_CharT>, std::allocator<_CharT> > boost::locale::impl_icu::number_format::format(boost::int64_t, size_t&) const': +libs/locale/src/icu/formatter.cpp:61: error: call of overloaded 'format(boost::int64_t&, icu_49::UnicodeString&)' is ambiguous +/ec/include/unicode/numfmt.h:317: note: candidates are: icu_49::UnicodeString& icu_49::NumberFormat::format(double, icu_49::UnicodeString&) const +/ec/include/unicode/numfmt.h:330: note: icu_49::UnicodeString& icu_49::NumberFormat::format(int32_t, icu_49::UnicodeString&) const +/ec/include/unicode/numfmt.h:343: note: icu_49::UnicodeString& icu_49::NumberFormat::format(int64_t, icu_49::UnicodeString&) const + +Signed-off-by: Thomas De Schampheleire +Backported-from: https://svn.boost.org/trac/boost/ticket/6851 + + +diff -ruN boost_1_49_0.orig/libs/locale/src/icu/formatter.cpp boost_1_49_0/libs/locale/src/icu/formatter.cpp +--- boost_1_49_0.orig/libs/locale/src/icu/formatter.cpp 2011-07-12 14:57:36.000000000 +0100 ++++ boost_1_49_0/libs/locale/src/icu/formatter.cpp 2012-05-01 14:27:54.000000000 +0100 +@@ -58,7 +58,7 @@ + virtual string_type format(int64_t value,size_t &code_points) const + { + icu::UnicodeString tmp; +- icu_fmt_->format(value,tmp); ++ icu_fmt_->format(::int64_t(value),tmp); + code_points=tmp.countChar32(); + return cvt_.std(tmp); + } diff --git a/buildroot/package/boost/0002-fix-uclibc-eventfd.patch b/buildroot/package/boost/0002-fix-uclibc-eventfd.patch new file mode 100644 index 0000000..1b7eb87 --- /dev/null +++ b/buildroot/package/boost/0002-fix-uclibc-eventfd.patch @@ -0,0 +1,38 @@ +Use eventfd() function with uClibc + +The Boost eventfd code either directly makes the eventfd system call +using __NR_eventfd (when __GLIBC_MINOR is less than 8), or otherwise +uses the eventfd() function provided by the C library. + +However, since uClibc pretends to be glibc 2.2, the Boost eventfd code +directly uses the system call. While it works fine on most +architectures, it doesn't on ARC since __NR_eventfd is not defined on +this architecture. However, eventfd() is properly implemented. + +So, this patch adjusts the logic used by Boost to consider uClibc as a +C library providing the eventfd() function. + +Signed-off-by: Thomas Petazzoni + +Index: b/boost/asio/detail/impl/eventfd_select_interrupter.ipp +=================================================================== +--- a/boost/asio/detail/impl/eventfd_select_interrupter.ipp ++++ b/boost/asio/detail/impl/eventfd_select_interrupter.ipp +@@ -23,7 +23,7 @@ + #include + #include + #include +-#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 ++#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) + # include + #else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 + # include +@@ -46,7 +46,7 @@ + + void eventfd_select_interrupter::open_descriptors() + { +-#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 ++#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 && !defined(__UCLIBC__) + write_descriptor_ = read_descriptor_ = syscall(__NR_eventfd, 0); + if (read_descriptor_ != -1) + { diff --git a/buildroot/package/boost/0003-fenv.patch b/buildroot/package/boost/0003-fenv.patch new file mode 100644 index 0000000..95c769a --- /dev/null +++ b/buildroot/package/boost/0003-fenv.patch @@ -0,0 +1,37 @@ +Disable fenv.h in certain configurations + +The boost build system does not properly test whether fenv.h is +available, and if it is, if it supports all the features used by +Boost. This causes build failures with uClibc (reported upstream at +https://svn.boost.org/trac/boost/ticket/11756) but also with glibc on +specific architectures that don't have a full fenv implementation, +such as NIOSII or Microblaze. + +To address this, we forcefully disable the use of fenv support in the +affected configurations. + +Signed-off-by: Bernd Kuhls +[Thomas: add Microblaze/NIOSII exclusions.] +Signed-off-by: Thomas Petazzoni + +Index: b/boost/config/platform/linux.hpp +=================================================================== +--- a/boost/config/platform/linux.hpp ++++ b/boost/config/platform/linux.hpp +@@ -47,6 +47,16 @@ + #endif + + // ++// uClibc has no support for fenv.h, and also a few architectures ++// don't have fenv.h support at all (or incomplete support) even with ++// glibc. ++ ++// ++#if defined(__UCLIBC__) || defined(__nios2__) || defined(__microblaze__) ++# define BOOST_NO_FENV_H ++#endif ++ ++// + // If glibc is past version 2 then we definitely have + // gettimeofday, earlier versions may or may not have it: + // diff --git a/buildroot/package/boost/0004-workaround-musl-bug.patch b/buildroot/package/boost/0004-workaround-musl-bug.patch new file mode 100644 index 0000000..8613f2f --- /dev/null +++ b/buildroot/package/boost/0004-workaround-musl-bug.patch @@ -0,0 +1,26 @@ +From 0506e46640989e1f919388ad36890bd6063cd43a Mon Sep 17 00:00:00 2001 +From: Zach van Rijn +Date: Sat, 26 Aug 2017 01:32:56 -0400 +Subject: [PATCH] explicitly include for memset() + +[Thomas: taken from +https://github.com/boostorg/fiber/pull/142/commits/0506e46640989e1f919388ad36890bd6063cd43a. It +is not going to be applied upstream because the actual bug is in musl, +but it's a good enough workaround for now.] +Signed-off-by: Thomas Petazzoni +--- + libs/fiber/src/numa/linux/pin_thread.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libs/fiber/src/numa/linux/pin_thread.cpp b/libs/fiber/src/numa/linux/pin_thread.cpp +index ae696be3..e9b3c423 100644 +--- a/libs/fiber/src/numa/linux/pin_thread.cpp ++++ b/libs/fiber/src/numa/linux/pin_thread.cpp +@@ -9,6 +9,7 @@ + extern "C" { + #include + #include ++#include + } + + #include diff --git a/buildroot/package/boost/0005-fix-build-with-g-5.patch b/buildroot/package/boost/0005-fix-build-with-g-5.patch new file mode 100644 index 0000000..49149e6 --- /dev/null +++ b/buildroot/package/boost/0005-fix-build-with-g-5.patch @@ -0,0 +1,32 @@ +From da2793fcde5c4e3ff448b4b21348ef8b1482c678 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 16 Jan 2018 14:51:32 +0100 +Subject: [PATCH] fix build with g++5 + +Patch needed to build domoticz + +Patch fetch from one of the answer of + https://github.com/domoticz/domoticz/issues/2034: + workaround suggested to the boost developers + +Signed-off-by: Fabrice Fontaine +--- + boost/asio/detail/consuming_buffers.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/boost/asio/detail/consuming_buffers.hpp b/boost/asio/detail/consuming_buffers.hpp +index a429f97..b7a887c 100644 +--- a/boost/asio/detail/consuming_buffers.hpp ++++ b/boost/asio/detail/consuming_buffers.hpp +@@ -102,7 +102,7 @@ public: + + std::advance(next, next_elem_); + std::size_t elem_offset = next_elem_offset_; +- while (next != end && max_size > 0 && result.count < result.max_buffers) ++ while (next != end && max_size > 0 && (result.count) < result.max_buffers) + { + Buffer next_buf = Buffer(*next) + elem_offset; + result.elems[result.count] = boost::asio::buffer(next_buf, max_size); +-- +2.7.4 + diff --git a/buildroot/package/boost/Config.in b/buildroot/package/boost/Config.in new file mode 100644 index 0000000..0755d9c --- /dev/null +++ b/buildroot/package/boost/Config.in @@ -0,0 +1,287 @@ +comment "boost needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + +config BR2_PACKAGE_BOOST + bool "boost" + depends on BR2_INSTALL_LIBSTDCPP + # Boost could theorically be built with threading=single, but + # that unfortunately doesn't work. Until someone fixes that, + # let's depend on threads. + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + A general purpose C++ library + + http://www.boost.org/ + +if BR2_PACKAGE_BOOST + +choice + prompt "Layout" + default BR2_PACKAGE_BOOST_LAYOUT_SYSTEM + help + Selects the layout of Boost binary names + +config BR2_PACKAGE_BOOST_LAYOUT_SYSTEM + bool "system" + help + Boost binary names do not include the Boost version number + or the name and version number of the compiler. + +config BR2_PACKAGE_BOOST_LAYOUT_TAGGED + bool "tagged" + help + Boost binary names include the encoded build properties such + as variant and threading, but do not include compiler name + and version, or Boost version. This option is useful if you + build several variants of Boost, using the same compiler. + +config BR2_PACKAGE_BOOST_LAYOUT_VERSIONED + bool "versioned" + help + Boost binary names include the Boost version number, name + and version of the compiler and encoded build properties. + +endchoice + +config BR2_PACKAGE_BOOST_LAYOUT + string + default "system" if BR2_PACKAGE_BOOST_LAYOUT_SYSTEM + default "tagged" if BR2_PACKAGE_BOOST_LAYOUT_TAGGED + default "versioned" if BR2_PACKAGE_BOOST_LAYOUT_VERSIONED + +config BR2_PACKAGE_BOOST_ATOMIC + bool "boost-atomic" + help + C++11-style atomic<>. + +config BR2_PACKAGE_BOOST_CHRONO + bool "boost-chrono" + help + Useful time utilities. C++11. + +config BR2_PACKAGE_BOOST_CONTAINER + bool "boost-container" + help + Standard library containers and extensions. + +# see +# http://www.boost.org/doc/libs/1_59_0/libs/context/doc/html/context/architectures.html +# for the list of supported architectures. Sparc pretends to be +# supported, but it doesn't build. +config BR2_PACKAGE_BOOST_CONTEXT + bool "boost-context" + depends on ((BR2_arm || BR2_armeb) && BR2_ARM_CPU_HAS_ARM) || \ + BR2_i386 || BR2_mips || BR2_mipsel || BR2_powerpc || BR2_x86_64 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + help + C++11 context switching library. + +config BR2_PACKAGE_BOOST_COROUTINE + bool "boost-coroutine" + depends on BR2_PACKAGE_BOOST_CONTEXT + help + deprecated coroutine library, the non-depricated coroutine2 + library is a header-only library and does not need to be + selected. + +config BR2_PACKAGE_BOOST_DATE_TIME + bool "boost-date_time" + help + A set of date-time libraries based on generic programming + concepts. + +config BR2_PACKAGE_BOOST_EXCEPTION + bool "boost-exception" + help + The Boost Exception library supports transporting of arbitrary + data in exception objects, and transporting of exceptions + between threads. + +config BR2_PACKAGE_BOOST_FIBER + bool "boost-fiber" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + # mips support uses the "pause" instruction, only available + # since mips32r2/mips64r2. + depends on !BR2_MIPS_CPU_MIPS32 && !BR2_MIPS_CPU_MIPS64 + help + C++11 userland threads library. + +comment "boost-fiber needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PACKAGE_BOOST_FILESYSTEM + bool "boost-filesystem" + help + The Boost Filesystem Library provides portable facilities to + query and manipulate paths, files, and directories. + +config BR2_PACKAGE_BOOST_GRAPH + bool "boost-graph" + help + The BGL graph interface and graph components are generic, in + the same sense as the the Standard Template Library (STL). + +config BR2_PACKAGE_BOOST_GRAPH_PARALLEL + bool "boost-graph_parallel" + help + The PBGL graph interface and graph components are generic, in + the same sense as the the Standard Template Library (STL). + +config BR2_PACKAGE_BOOST_IOSTREAMS + bool "boost-iostreams" + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_ZLIB + help + Boost.IOStreams provides a framework for defining streams, + stream buffers and i/o filters. + +config BR2_PACKAGE_BOOST_LOCALE + bool "boost-locale" + # When boost-locale is enabled with icu support, Boost no + # longer supports building the libboost_* libraries as static + # libraries, causing build failures when other boost features + # than boost-locale are enabled. To work around this, we + # prevent using boost-locale on static linking configurations + # with icu enabled. See + # https://svn.boost.org/trac/boost/ticket/9685 for more + # details. + depends on !(BR2_STATIC_LIBS && BR2_PACKAGE_ICU) + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Provide localization and Unicode handling tools for C++. + +comment "boost-locale needs a toolchain w/ dynamic library" + depends on BR2_PACKAGE_ICU + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_BOOST_LOG + bool "boost-log" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + # for some reason, uClibc on PowerPC fails to build the boost + # log module + depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC) + help + Logging library. + +comment "boost-log needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC) + +config BR2_PACKAGE_BOOST_MATH + bool "boost-math" + help + Boost.Math includes several contributions in the domain of + mathematics: + + The Greatest Common Divisor and Least Common + Multiple library provides run-time and compile-time evaluation + of the greatest common divisor (GCD) or least common multiple + (LCM) of two integers. + + The Special Functions library currently provides eight + templated special functions, in namespace boost. + + The Complex Number Inverse Trigonometric Functions are the + inverses of trigonometric functions currently present in the + C++ standard. + + Quaternions are a relative of complex numbers often used to + parameterise rotations in three dimentional space. + + Octonions, like quaternions, are a relative of complex + numbers. + +config BR2_PACKAGE_BOOST_MPI + bool "boost-mpi" + help + Message Passing Interface library, for use in + distributed-memory parallel application programming. + +config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + bool "boost-program_options" + help + The program_options library allows program developers to + obtain program options, that is (name, value) pairs from the + user, via conventional methods such as command line and config + file. + +config BR2_PACKAGE_BOOST_PYTHON + bool "boost-python" + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + help + The Boost Python Library is a framework for interfacing Python + and C++. It allows you to quickly and seamlessly expose C++ + classes functions and objects to Python, and vice-versa, + using no special tools -- just your C++ compiler. + +config BR2_PACKAGE_BOOST_RANDOM + bool "boost-random" + help + A complete system for random number generation. + +config BR2_PACKAGE_BOOST_REGEX + bool "boost-regex" + help + A new infrastructure for generic algorithms that builds on top + of the new iterator concepts. + +config BR2_PACKAGE_BOOST_SERIALIZATION + bool "boost-serialization" + help + Serialization for persistence and marshalling. + +config BR2_PACKAGE_BOOST_SIGNALS + bool "boost-signals" + help + Managed signals & slots callback implementation. + +config BR2_PACKAGE_BOOST_STACKTRACE + bool "boost-stacktrace" + depends on !BR2_STATIC_LIBS + help + Gather, store, copy and print backtraces. + +comment "boost-stacktrace needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_BOOST_SYSTEM + bool "boost-system" + help + Operating system support, including the diagnostics support + that will be part of the C++0x standard library. + +config BR2_PACKAGE_BOOST_TEST + bool "boost-test" + depends on BR2_USE_MMU # fork() + help + Support for simple program testing, full unit testing, and for + program execution monitoring. + +config BR2_PACKAGE_BOOST_THREAD + bool "boost-thread" + help + Portable C++ multi-threading. C++11, C++14. + +config BR2_PACKAGE_BOOST_TIMER + bool "boost-timer" + help + Event timer, progress timer, and progress display classes. + +config BR2_PACKAGE_BOOST_TYPE_ERASURE + bool "boost-type_erasure" + help + Runtime polymorphism based on concepts. + +config BR2_PACKAGE_BOOST_WAVE + bool "boost-wave" + # limitation of assembler for coldfire + # error: Tried to convert PC relative branch to absolute jump + depends on !BR2_m68k_cf + help + The Boost.Wave library is a Standards conformant, and highly + configurable implementation of the mandated C99/C++ + preprocessor functionality packed behind an easy to use + iterator interface. + +endif diff --git a/buildroot/package/boost/boost.hash b/buildroot/package/boost/boost.hash new file mode 100644 index 0000000..7eb675d --- /dev/null +++ b/buildroot/package/boost/boost.hash @@ -0,0 +1,5 @@ +# From http://www.boost.org/users/history/version_1_66_0.html +sha256 5721818253e6a0989583192f96782c4a98eb6204965316df9f5ad75819225ca9 boost_1_66_0.tar.bz2 + +# Locally computed +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE_1_0.txt diff --git a/buildroot/package/boost/boost.mk b/buildroot/package/boost/boost.mk new file mode 100644 index 0000000..9ad83d5 --- /dev/null +++ b/buildroot/package/boost/boost.mk @@ -0,0 +1,185 @@ +################################################################################ +# +# boost +# +################################################################################ + +BOOST_VERSION = 1.66.0 +BOOST_SOURCE = boost_$(subst .,_,$(BOOST_VERSION)).tar.bz2 +BOOST_SITE = http://downloads.sourceforge.net/project/boost/boost/$(BOOST_VERSION) +BOOST_INSTALL_STAGING = YES +BOOST_LICENSE = BSL-1.0 +BOOST_LICENSE_FILES = LICENSE_1_0.txt + +# keep host variant as minimal as possible +HOST_BOOST_FLAGS = --without-icu --with-toolset=gcc \ + --without-libraries=$(subst $(space),$(comma),atomic chrono context \ + coroutine date_time exception filesystem graph graph_parallel iostreams \ + locale log math mpi program_options python random regex serialization \ + signals system test thread timer type_erasure \ + wave) + +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_ATOMIC),,atomic) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CHRONO),,chrono) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTAINER),,container) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_CONTEXT),,context) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_COROUTINE),,coroutine) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_DATE_TIME),,date_time) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_EXCEPTION),,exception) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FIBER),,fiber) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_FILESYSTEM),,filesystem) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH),,graph) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_GRAPH_PARALLEL),,graph_parallel) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_IOSTREAMS),,iostreams) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOCALE),,locale) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_LOG),,log) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MATH),,math) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_MPI),,mpi) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PROGRAM_OPTIONS),,program_options) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_PYTHON),,python) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_RANDOM),,random) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_REGEX),,regex) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SERIALIZATION),,serialization) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SIGNALS),,signals) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_STACKTRACE),,stacktrace) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_SYSTEM),,system) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TEST),,test) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_THREAD),,thread) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TIMER),,timer) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_TYPE_ERASURE),,type_erasure) +BOOST_WITHOUT_FLAGS += $(if $(BR2_PACKAGE_BOOST_WAVE),,wave) + +BOOST_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) + +BOOST_FLAGS = --with-toolset=gcc + +ifeq ($(BR2_PACKAGE_ICU),y) +BOOST_FLAGS += --with-icu=$(STAGING_DIR)/usr +BOOST_DEPENDENCIES += icu +else +BOOST_FLAGS += --without-icu +endif + +ifeq ($(BR2_PACKAGE_BOOST_IOSTREAMS),y) +BOOST_DEPENDENCIES += bzip2 zlib +endif + +ifeq ($(BR2_PACKAGE_BOOST_PYTHON),y) +BOOST_FLAGS += --with-python-root=$(HOST_DIR) +ifeq ($(BR2_PACKAGE_PYTHON3),y) +BOOST_FLAGS += --with-python=$(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) +BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR)m +BOOST_DEPENDENCIES += python3 +else +BOOST_FLAGS += --with-python=$(HOST_DIR)/bin/python$(PYTHON_VERSION_MAJOR) +BOOST_TARGET_CXXFLAGS += -I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) +BOOST_DEPENDENCIES += python +endif +endif + +HOST_BOOST_OPTS += toolset=gcc threading=multi variant=release link=shared \ + runtime-link=shared + +ifeq ($(BR2_MIPS_OABI32),y) +BOOST_ABI = o32 +else ifeq ($(BR2_arm),y) +BOOST_ABI = aapcs +else +BOOST_ABI = sysv +endif + +BOOST_OPTS += toolset=gcc \ + threading=multi \ + abi=$(BOOST_ABI) \ + variant=$(if $(BR2_ENABLE_DEBUG),debug,release) + +ifeq ($(BR2_sparc64),y) +BOOST_OPTS += architecture=sparc instruction-set=ultrasparc +endif + +ifeq ($(BR2_sparc),y) +BOOST_OPTS += architecture=sparc instruction-set=v8 +endif + +# By default, Boost build and installs both the shared and static +# variants. Override that if we want static only or shared only. +ifeq ($(BR2_STATIC_LIBS),y) +BOOST_OPTS += link=static runtime-link=static +else ifeq ($(BR2_SHARED_LIBS),y) +BOOST_OPTS += link=shared runtime-link=shared +endif + +ifeq ($(BR2_PACKAGE_BOOST_LOCALE),y) +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# posix backend needs monetary.h which isn't available on uClibc +BOOST_OPTS += boost.locale.posix=off +endif + +BOOST_DEPENDENCIES += $(if $(BR2_ENABLE_LOCALE),,libiconv) +endif + +BOOST_WITHOUT_FLAGS_COMMASEPARATED += $(subst $(space),$(comma),$(strip $(BOOST_WITHOUT_FLAGS))) +BOOST_FLAGS += $(if $(BOOST_WITHOUT_FLAGS_COMMASEPARATED), --without-libraries=$(BOOST_WITHOUT_FLAGS_COMMASEPARATED)) +BOOST_LAYOUT = $(call qstrip, $(BR2_PACKAGE_BOOST_LAYOUT)) + +# how verbose should the build be? +BOOST_OPTS += $(if $(QUIET),-d,-d+1) +HOST_BOOST_OPTS += $(if $(QUIET),-d,-d+1) + +define BOOST_CONFIGURE_CMDS + (cd $(@D) && ./bootstrap.sh $(BOOST_FLAGS)) + echo "using gcc : `$(TARGET_CC) -dumpversion` : $(TARGET_CXX) : \"$(BOOST_TARGET_CXXFLAGS)\" \"$(TARGET_LDFLAGS)\" ;" > $(@D)/user-config.jam + echo "" >> $(@D)/user-config.jam +endef + +define BOOST_BUILD_CMDS + (cd $(@D) && $(TARGET_MAKE_ENV) ./bjam -j$(PARALLEL_JOBS) -q \ + --user-config=$(@D)/user-config.jam \ + $(BOOST_OPTS) \ + --ignore-site-config \ + --layout=$(BOOST_LAYOUT)) +endef + +define BOOST_INSTALL_TARGET_CMDS + (cd $(@D) && $(TARGET_MAKE_ENV) ./b2 -j$(PARALLEL_JOBS) -q \ + --user-config=$(@D)/user-config.jam \ + $(BOOST_OPTS) \ + --prefix=$(TARGET_DIR)/usr \ + --ignore-site-config \ + --layout=$(BOOST_LAYOUT) install ) +endef + +define BOOST_INSTALL_STAGING_CMDS + (cd $(@D) && $(TARGET_MAKE_ENV) ./bjam -j$(PARALLEL_JOBS) -q \ + --user-config=$(@D)/user-config.jam \ + $(BOOST_OPTS) \ + --prefix=$(STAGING_DIR)/usr \ + --ignore-site-config \ + --layout=$(BOOST_LAYOUT) install) +endef + +define HOST_BOOST_CONFIGURE_CMDS + (cd $(@D) && ./bootstrap.sh $(HOST_BOOST_FLAGS)) + echo "using gcc : `$(HOST_CC) -dumpversion` : $(HOSTCXX) : \"$(HOST_CXXFLAGS)\" \"$(HOST_LDFLAGS)\" ;" > $(@D)/user-config.jam + echo "" >> $(@D)/user-config.jam +endef + +define HOST_BOOST_BUILD_CMDS + (cd $(@D) && ./b2 -j$(PARALLEL_JOBS) -q \ + --user-config=$(@D)/user-config.jam \ + $(HOST_BOOST_OPTS) \ + --ignore-site-config \ + --prefix=$(HOST_DIR) ) +endef + +define HOST_BOOST_INSTALL_CMDS + (cd $(@D) && ./b2 -j$(PARALLEL_JOBS) -q \ + --user-config=$(@D)/user-config.jam \ + $(HOST_BOOST_OPTS) \ + --prefix=$(HOST_DIR) \ + --ignore-site-config \ + --layout=$(BOOST_LAYOUT) install ) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/bootstrap/Config.in b/buildroot/package/bootstrap/Config.in new file mode 100644 index 0000000..743d8a3 --- /dev/null +++ b/buildroot/package/bootstrap/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BOOTSTRAP + bool "bootstrap" + help + Bootstrap is the most popular HTML, CSS, and JS framework + for developing responsive, mobile first projects on the web. + + http://getbootstrap.com diff --git a/buildroot/package/bootstrap/bootstrap.hash b/buildroot/package/bootstrap/bootstrap.hash new file mode 100644 index 0000000..32ef9c4 --- /dev/null +++ b/buildroot/package/bootstrap/bootstrap.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 fa1caaaf640c32c553d0b323da1036f2232703d64a1d22c3a2ec84ace68c791a bootstrap-4.0.0-dist.zip +sha256 8c1a4c25634d5841924aab1848acc9dcbc3d5672183053c8b71ff2139b65d7c3 css/bootstrap.css diff --git a/buildroot/package/bootstrap/bootstrap.mk b/buildroot/package/bootstrap/bootstrap.mk new file mode 100644 index 0000000..61d6c82 --- /dev/null +++ b/buildroot/package/bootstrap/bootstrap.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# bootstrap +# +################################################################################ + +BOOTSTRAP_VERSION = 4.0.0 +BOOTSTRAP_SITE = https://github.com/twbs/bootstrap/releases/download/v$(BOOTSTRAP_VERSION) +BOOTSTRAP_SOURCE = bootstrap-$(BOOTSTRAP_VERSION)-dist.zip +BOOTSTRAP_LICENSE = MIT +BOOTSTRAP_LICENSE_FILES = css/bootstrap.css + +define BOOTSTRAP_EXTRACT_CMDS + $(UNZIP) $(DL_DIR)/$(BOOTSTRAP_SOURCE) -d $(@D) +endef + +define BOOTSTRAP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/css/bootstrap.min.css \ + $(TARGET_DIR)/var/www/bootstrap/css/bootstrap.min.css + $(INSTALL) -m 0644 -D $(@D)/js/bootstrap.min.js \ + $(TARGET_DIR)/var/www/bootstrap/js/bootstrap.min.js +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/bootutils/0001-fix-musl-compilation-issue.patch b/buildroot/package/bootutils/0001-fix-musl-compilation-issue.patch new file mode 100644 index 0000000..ccb6ef6 --- /dev/null +++ b/buildroot/package/bootutils/0001-fix-musl-compilation-issue.patch @@ -0,0 +1,31 @@ +From e4c2c18b9d1d7a6dc17d8f7705b26fc2e2efc5a9 Mon Sep 17 00:00:00 2001 +From: Brendan Heading +Date: Sun, 30 Aug 2015 20:12:40 +0100 +Subject: [PATCH 1/1] fix musl compilation issue + +makedev(3) requires sys/types.h to be included. + +Note upstream has not issued releases since 2009. No mailing list activity +since January 2010, and even before then it seems to be mostly spam. + +Upstream-Status: dormant +Signed-off-by: Brendan Heading +--- + raidscan.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/raidscan.c b/raidscan.c +index fab3b02..3cb1a0d 100644 +--- a/raidscan.c ++++ b/raidscan.c +@@ -22,6 +22,7 @@ + #include "config.h" + + #include ++#include + #include + #include + #include +-- +2.4.3 + diff --git a/buildroot/package/bootutils/Config.in b/buildroot/package/bootutils/Config.in new file mode 100644 index 0000000..30d647a --- /dev/null +++ b/buildroot/package/bootutils/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_BOOTUTILS + bool "bootutils" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + BootUtils is a collection of utilities to facilitate booting + of Linux 2.6-based systems. The process of finding the root + volume either by label or explicit label= on the kernel + command line, mounting it, and 'switchroot'ing is automated. + + http://bootutils.sourceforge.net/ diff --git a/buildroot/package/bootutils/bootutils.hash b/buildroot/package/bootutils/bootutils.hash new file mode 100644 index 0000000..576c324 --- /dev/null +++ b/buildroot/package/bootutils/bootutils.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 78549714e7c7fa246a4019c245f4da044aee6cfe48ad6887c4013ac4c749c7b9 bootutils-1.0.0.tar.gz diff --git a/buildroot/package/bootutils/bootutils.mk b/buildroot/package/bootutils/bootutils.mk new file mode 100644 index 0000000..bc4b3e8 --- /dev/null +++ b/buildroot/package/bootutils/bootutils.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# bootutils +# +################################################################################ + +BOOTUTILS_VERSION = 1.0.0 +BOOTUTILS_SITE = http://downloads.sourceforge.net/project/bootutils/Stable/v$(BOOTUTILS_VERSION) +BOOTUTILS_CONF_OPTS = --prefix=/ --exec-prefix=/ +BOOTUTILS_LICENSE = GPL-2.0+ +BOOTUTILS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/botan/0001-remove-mips64-explicit-mabi.patch b/buildroot/package/botan/0001-remove-mips64-explicit-mabi.patch new file mode 100644 index 0000000..3fddd54 --- /dev/null +++ b/buildroot/package/botan/0001-remove-mips64-explicit-mabi.patch @@ -0,0 +1,18 @@ +Remove explicit mips64 -mabi parameter + +This breaks when building for n32 ABI on mips64. + +Signed-off-by: Baruch Siach +--- + +diff -Nuar Botan-1.10.8-orig/src/build-data/cc/gcc.txt Botan-1.10.8/src/build-data/cc/gcc.txt +--- Botan-1.10.8-orig/src/build-data/cc/gcc.txt 2014-04-10 17:11:44.000000000 +0300 ++++ Botan-1.10.8/src/build-data/cc/gcc.txt 2014-10-23 09:20:34.506722323 +0300 +@@ -92,7 +92,6 @@ + # The 'linking' bit means "use this for both compiling *and* linking" + + x86_64 -> "-m64" +-mips64 -> "-mabi=64" + s390 -> "-m31" + s390x -> "-m64" + sparc32 -> "-m32 -mno-app-regs" diff --git a/buildroot/package/botan/Config.in b/buildroot/package/botan/Config.in new file mode 100644 index 0000000..733dc89 --- /dev/null +++ b/buildroot/package/botan/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_BOTAN_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb || BR2_i386 || BR2_m68k || \ + BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \ + BR2_powerpc || BR2_powerpc64 || BR2_sparc || BR2_sh || \ + BR2_x86_64 + +config BR2_PACKAGE_BOTAN + bool "botan" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS + help + Botan is a crypto library for C++ + + http://botan.randombit.net + +comment "botan needs a toolchain w/ C++, threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS diff --git a/buildroot/package/botan/botan.hash b/buildroot/package/botan/botan.hash new file mode 100644 index 0000000..3d46a13 --- /dev/null +++ b/buildroot/package/botan/botan.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 6c5472401d06527e87adcb53dd270f3c9b1fb688703b04dd7a7cfb86289efe52 Botan-1.10.16.tgz diff --git a/buildroot/package/botan/botan.mk b/buildroot/package/botan/botan.mk new file mode 100644 index 0000000..e42bb61 --- /dev/null +++ b/buildroot/package/botan/botan.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# botan +# +################################################################################ + +BOTAN_VERSION = 1.10.16 +BOTAN_SOURCE = Botan-$(BOTAN_VERSION).tgz +BOTAN_SITE = http://botan.randombit.net/releases +BOTAN_LICENSE = BSD-2-Clause +BOTAN_LICENSE_FILES = doc/license.txt + +BOTAN_INSTALL_STAGING = YES + +BOTAN_CONF_OPTS = \ + --cpu=$(BR2_ARCH) \ + --os=linux \ + --cc=gcc \ + --cc-bin="$(TARGET_CXX)" \ + --prefix=/usr + +ifeq ($(BR2_STATIC_LIBS),y) +BOTAN_CONF_OPTS += --disable-shared --no-autoload +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +BOTAN_DEPENDENCIES += bzip2 +BOTAN_CONF_OPTS += --with-bzip2 +endif + +ifeq ($(BR2_PACKAGE_GMP),y) +BOTAN_DEPENDENCIES += gmp +BOTAN_CONF_OPTS += --with-gnump +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +BOTAN_DEPENDENCIES += openssl +BOTAN_CONF_OPTS += --with-openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +BOTAN_DEPENDENCIES += zlib +BOTAN_CONF_OPTS += --with-zlib +endif + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +BOTAN_CONF_OPTS += --enable-altivec +else +BOTAN_CONF_OPTS += --disable-altivec +endif + +define BOTAN_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) ./configure.py $(BOTAN_CONF_OPTS)) +endef + +define BOTAN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) AR="$(TARGET_AR) crs" +endef + +define BOTAN_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(STAGING_DIR)/usr" install +endef + +define BOTAN_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)/usr" install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/bridge-utils/0001-build-system.patch b/buildroot/package/bridge-utils/0001-build-system.patch new file mode 100644 index 0000000..f447377 --- /dev/null +++ b/buildroot/package/bridge-utils/0001-build-system.patch @@ -0,0 +1,11 @@ +--- bridge-utils-0.9.6/libbridge/Makefile.in.dist 2004-03-01 20:55:52.000000000 -0600 ++++ bridge-utils-0.9.6/libbridge/Makefile.in 2004-03-01 20:56:23.000000000 -0600 +@@ -5,7 +5,7 @@ + RANLIB=@RANLIB@ + + CC=@CC@ +-CFLAGS = -Wall -g $(KERNEL_HEADERS) ++CFLAGS = -Wall -g @CFLAGS@ $(KERNEL_HEADERS) + + prefix=@prefix@ + exec_prefix=@exec_prefix@ diff --git a/buildroot/package/bridge-utils/Config.in b/buildroot/package/bridge-utils/Config.in new file mode 100644 index 0000000..bc614b0 --- /dev/null +++ b/buildroot/package/bridge-utils/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_BRIDGE_UTILS + bool "bridge-utils" + help + Manage ethernet bridging; a way to connect networks together + to form a larger network. + + https://git.kernel.org/cgit/linux/kernel/git/shemminger/bridge-utils.git/ diff --git a/buildroot/package/bridge-utils/bridge-utils.hash b/buildroot/package/bridge-utils/bridge-utils.hash new file mode 100644 index 0000000..e699b24 --- /dev/null +++ b/buildroot/package/bridge-utils/bridge-utils.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/utils/net/bridge-utils/sha256sums.asc +sha256 cc67efb5d5fb8928a6569b3fade2b4042ec17da04678dab127d96b46489e26c8 bridge-utils-1.6.tar.xz diff --git a/buildroot/package/bridge-utils/bridge-utils.mk b/buildroot/package/bridge-utils/bridge-utils.mk new file mode 100644 index 0000000..2519227 --- /dev/null +++ b/buildroot/package/bridge-utils/bridge-utils.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# bridge-utils +# +################################################################################ + +BRIDGE_UTILS_VERSION = 1.6 +BRIDGE_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/bridge-utils +BRIDGE_UTILS_SOURCE = bridge-utils-1.6.tar.xz +BRIDGE_UTILS_AUTORECONF = YES +BRIDGE_UTILS_LICENSE = GPL-2.0+ +BRIDGE_UTILS_LICENSE_FILES = COPYING + +# Avoid using the host's headers. Location is not important as +# required headers will anyway be found from within the sysroot. +BRIDGE_UTILS_CONF_OPTS = --with-linux-headers=$(STAGING_DIR)/usr/include + +$(eval $(autotools-package)) diff --git a/buildroot/package/brltty/0001-Prevent-scancodes-from-generating-spurious-log-messa.patch b/buildroot/package/brltty/0001-Prevent-scancodes-from-generating-spurious-log-messa.patch new file mode 100644 index 0000000..e6a2005 --- /dev/null +++ b/buildroot/package/brltty/0001-Prevent-scancodes-from-generating-spurious-log-messa.patch @@ -0,0 +1,28 @@ +From 3ea213e47c6771b7e2481f64a98f30c02fcb4867 Mon Sep 17 00:00:00 2001 +From: Mario Lang +Date: Thu, 30 Nov 2017 13:14:47 +0100 +Subject: [PATCH] Prevent scancodes from generating spurious log messages. (ml) + +Signed-off-by: Mario Lang +--- +This patch was taken from upstream, and can be removed when 5.6 is out. + + Drivers/Braille/HandyTech/braille.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Drivers/Braille/HandyTech/braille.c b/Drivers/Braille/HandyTech/braille.c +index ef95fd15b..f7e605c1a 100644 +--- a/Drivers/Braille/HandyTech/braille.c ++++ b/Drivers/Braille/HandyTech/braille.c +@@ -1560,7 +1560,7 @@ brl_readCommand (BrailleDisplay *brl, KeyTableCommandContext context) { + case HT_EXTPKT_Scancode: { + while (length--) + enqueueCommand(BRL_CMD_BLK(PASSAT) | BRL_ARG_PUT(*bytes++)); +- break; ++ continue; + } + + case HT_EXTPKT_GetRTC: { +-- +2.15.0 + diff --git a/buildroot/package/brltty/0002-Check-for-ioperm-to-make-sure-the-platform-supports-.patch b/buildroot/package/brltty/0002-Check-for-ioperm-to-make-sure-the-platform-supports-.patch new file mode 100644 index 0000000..3dbacb3 --- /dev/null +++ b/buildroot/package/brltty/0002-Check-for-ioperm-to-make-sure-the-platform-supports-.patch @@ -0,0 +1,31 @@ +From 28dde6749327fd15a1b8b7bcf5cc74a95598582a Mon Sep 17 00:00:00 2001 +From: Mario Lang +Date: Fri, 29 Dec 2017 10:35:05 +0100 +Subject: [PATCH] Check for ioperm to make sure the platform supports ports + I/O. (ml) + +Signed-off-by: Mario Lang +--- +This patch was taken from upstream, and can be removed when 5.6 is out. + + configure.ac | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 5e94d33bd..07119dd9f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1446,7 +1446,9 @@ BRLTTY_ARG_PACKAGE([ports], [I/O ports], [], [dnl + ports_package="kfreebsd" + ;; + linux*) +- ports_package="glibc" ++ AC_CHECK_FUNC([ioperm], [ ++ ports_package="glibc" ++ ]) + ;; + mingw*) + ports_package="windows" +-- +2.15.0 + diff --git a/buildroot/package/brltty/0003-Remove-MKOBJ-in-favour-of-MKMOD.patch b/buildroot/package/brltty/0003-Remove-MKOBJ-in-favour-of-MKMOD.patch new file mode 100644 index 0000000..c198041 --- /dev/null +++ b/buildroot/package/brltty/0003-Remove-MKOBJ-in-favour-of-MKMOD.patch @@ -0,0 +1,64 @@ +From b3b0e47015e9162f519730789976157c7cc38178 Mon Sep 17 00:00:00 2001 +From: Mario Lang +Date: Fri, 29 Dec 2017 14:52:37 +0100 +Subject: [PATCH] Remove MKOBJ in favour of MKMOD. (ml) + +Calling ld directly can lead to problems when cross-compiling. + +Upstream: https://github.com/brltty/brltty/commit/4c8aba42e246b96d10ffcbd57653682375499e46 +Signed-off-by: Mario Lang +--- + Drivers/Braille/EuroBraille/Makefile.in | 2 +- + config.mk.in | 1 - + configure.ac | 10 ---------- + 3 files changed, 1 insertion(+), 12 deletions(-) + +diff --git a/Drivers/Braille/EuroBraille/Makefile.in b/Drivers/Braille/EuroBraille/Makefile.in +index 0500aa70e..ce8a3d1a4 100644 +--- a/Drivers/Braille/EuroBraille/Makefile.in ++++ b/Drivers/Braille/EuroBraille/Makefile.in +@@ -28,7 +28,7 @@ SRC_FILES = eu_braille.c eu_clio.c eu_esysiris.c + OBJ_FILES = $(SRC_FILES:.c=.$O) + + braille.$O: $(OBJ_FILES) +- $(MKOBJ) $@ $(OBJ_FILES) ++ $(MKMOD) $@ $(OBJ_FILES) + + %.$O: $(SRC_DIR)/%.c + $(CC) $(BRL_CFLAGS) -o $@ -c $< +diff --git a/config.mk.in b/config.mk.in +index 686f547e6..8d1da79b4 100644 +--- a/config.mk.in ++++ b/config.mk.in +@@ -250,7 +250,6 @@ LD = @LD@ + LDFLAGS = @LDFLAGS@ + LDLIBS = $(ICU_LIBS) $(POLKIT_LIBS) $(SYSTEM_LIBS) @LIBS@ + +-MKOBJ = @MKOBJ@ + MKMOD = @MKMOD@ + MKLIB = @MKLIB@ + CONFLIBDIR = @CONFLIBDIR@ +diff --git a/configure.ac b/configure.ac +index 07119dd9f..ad80b8d60 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -428,16 +428,6 @@ AC_SUBST([can_make_manual]) + test "${DOXYGEN}" = "false" && can_make_BrlAPIref=no || can_make_BrlAPIref=yes + AC_SUBST([can_make_BrlAPIref]) + +-AC_CACHE_CHECK([for make relocatable object command], [brltty_cv_prog_mkobj], [dnl +-case "${host_os}" +-in +- *) +- brltty_cv_prog_mkobj="\$(LD) -r -o" +- ;; +-esac]) +-MKOBJ="${brltty_cv_prog_mkobj}" +-AC_SUBST([MKOBJ]) +- + AC_CACHE_CHECK([for loadable module creation command], [brltty_cv_prog_mkmod], [dnl + case "${host_os}" + in +-- +2.15.0 + diff --git a/buildroot/package/brltty/Config.in b/buildroot/package/brltty/Config.in new file mode 100644 index 0000000..48ceb04 --- /dev/null +++ b/buildroot/package/brltty/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_BRLTTY + bool "brltty" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + help + A daemon providing access to the Linux console for a blind + person using a refreshable braille display. + + http://brltty.com/ + +if BR2_PACKAGE_BRLTTY + +config BR2_PACKAGE_BRLTTY_TEXT_TABLE + string "text-table" + +endif + +comment "brltty needs a toolchain w/ dynamic lib, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/brltty/S10brltty b/buildroot/package/brltty/S10brltty new file mode 100644 index 0000000..18e274d --- /dev/null +++ b/buildroot/package/brltty/S10brltty @@ -0,0 +1,40 @@ +#!/bin/sh +# +# brltty Starts brltty. +# + +start() { + printf "Starting brltty: " + start-stop-daemon -S -q -p /var/run/brltty.pid \ + --exec /usr/bin/brltty -- -P /var/run/brltty.pid "$@" + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping brltty: " + start-stop-daemon -K -q -p /var/run/brltty.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start "$@" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + force-reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/brltty/brltty.hash b/buildroot/package/brltty/brltty.hash new file mode 100644 index 0000000..3bc2f9c --- /dev/null +++ b/buildroot/package/brltty/brltty.hash @@ -0,0 +1,3 @@ +sha256 4ebf1df5922df0efccac4795f5bd1c514fc850348c34d9ec0868e2798b565a36 brltty-5.5.tar.xz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad LICENSE-GPL +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f LICENSE-LGPL diff --git a/buildroot/package/brltty/brltty.mk b/buildroot/package/brltty/brltty.mk new file mode 100644 index 0000000..eb91ef8 --- /dev/null +++ b/buildroot/package/brltty/brltty.mk @@ -0,0 +1,110 @@ +################################################################################ +# +# brltty +# +################################################################################ + +BRLTTY_VERSION = 5.5 +BRLTTY_SOURCE = brltty-$(BRLTTY_VERSION).tar.xz +BRLTTY_SITE = http://brltty.com/archive +BRLTTY_INSTALL_STAGING_OPTS = INSTALL_ROOT=$(STAGING_DIR) install +BRLTTY_INSTALL_TARGET_OPTS = INSTALL_ROOT=$(TARGET_DIR) install +BRLTTY_LICENSE_FILES = LICENSE-GPL LICENSE-LGPL + +BRLTTY_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-autoconf host-pkgconf + +BRLTTY_CONF_OPTS = \ + --disable-java-bindings \ + --disable-lisp-bindings \ + --disable-ocaml-bindings \ + --disable-python-bindings \ + --disable-tcl-bindings \ + --disable-x \ + --without-midi-package \ + --without-mikropuhe --without-speechd --without-swift \ + --without-theta --without-viavoice + +# Autoreconf is needed because we're patching configure.ac in +# 0002-Check-for-ioperm-to-make-sure-the-platform-supports-.patch. However, +# a plain autoreconf doesn't work, because this package is only +# autoconf-based. +define BRLTTY_AUTOCONF + cd $(BRLTTY_SRCDIR) && $(AUTOCONF) +endef + +BRLTTY_PRE_CONFIGURE_HOOKS += BRLTTY_AUTOCONF + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +BRLTTY_DEPENDENCIES += bluez5_utils +BRLTTY_CONF_OPTS += --with-bluetooth-package +else +BRLTTY_CONF_OPTS += --without-bluetooth-package +endif + +ifeq ($(BR2_PACKAGE_ESPEAK),y) +BRLTTY_DEPENDENCIES += espeak +BRLTTY_CONF_OPTS += --with-espeak=$(TARGET_DIR)/usr +else +BRLTTY_CONF_OPTS += --without-espeak +endif + +ifeq ($(BR2_PACKAGE_FLITE),y) +BRLTTY_DEPENDENCIES += flite +BRLTTY_CONF_OPTS += --with-flite=$(STAGING_DIR)/usr +else +BRLTTY_CONF_OPTS += --without-flite +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +BRLTTY_DEPENDENCIES += icu +BRLTTY_CONF_OPTS += --enable-icu +else +BRLTTY_CONF_OPTS += --disable-icu +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +BRLTTY_DEPENDENCIES += ncurses +BRLTTY_CONF_OPTS += --with-curses +else +BRLTTY_CONF_OPTS += --without-curses +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +BRLTTY_DEPENDENCIES += systemd +BRLTTY_CONF_OPTS += --with-service-package +else +BRLTTY_CONF_OPTS += --without-service-package +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +BRLTTY_CONF_OPTS += --enable-i18n +else +BRLTTY_CONF_OPTS += --disable-i18n +endif + +BRLTTY_TEXT_TABLE = $(call qstrip,$(BR2_PACKAGE_BRLTTY_TEXT_TABLE)) +ifneq ($(BRLTTY_TEXT_TABLE),) +BRLTTY_CONF_OPTS += --with-text-table=$(BRLTTY_TEXT_TABLE) +endif + +define BRLTTY_INSTALL_CONF + $(INSTALL) -D -m 644 $(@D)/Documents/brltty.conf $(TARGET_DIR)/etc/brltty.conf +endef + +BRLTTY_POST_INSTALL_TARGET_HOOKS += BRLTTY_INSTALL_CONF + +define BRLTTY_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/brltty/S10brltty \ + $(TARGET_DIR)/etc/init.d/S10brltty +endef + +define BRLTTY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/brltty/brltty.service \ + $(TARGET_DIR)/usr/lib/systemd/system/brltty.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants + ln -fs ../../../../usr/lib/systemd/system/brltty.service \ + $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants/brltty.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/brltty/brltty.service b/buildroot/package/brltty/brltty.service new file mode 100644 index 0000000..070ec94 --- /dev/null +++ b/buildroot/package/brltty/brltty.service @@ -0,0 +1,23 @@ +[Unit] +Description=Braille Device Support +Documentation=man:brltty(1) +Documentation=http://brltty.com/ + +DefaultDependencies=no +Before=sysinit.target +After=systemd-udev-settle.service +Wants=systemd-udev-settle.service + +[Service] +Type=simple +ExecStart=/usr/bin/brltty --no-daemon +TimeoutStartSec=5 +TimeoutStopSec=10 +Restart=always +RestartSec=30 +Nice=-10 +OOMScoreAdjust=-900 + +[Install] +WantedBy=sysinit.target + diff --git a/buildroot/package/bsdiff/0001-Add-missing-header-for-u_char.patch b/buildroot/package/bsdiff/0001-Add-missing-header-for-u_char.patch new file mode 100644 index 0000000..56affb4 --- /dev/null +++ b/buildroot/package/bsdiff/0001-Add-missing-header-for-u_char.patch @@ -0,0 +1,17 @@ +bspatch: Fix missing header for u_char + +Fixes http://autobuild.buildroot.net/results/31a/31a837cf6e34b02dce498f2b12e40d6d16a5a8e6/ + +Signed-off-by: Jörg Krause + +diff -purN bsdiff-4.3.orig/bspatch.c bsdiff-4.3/bspatch.c +--- bsdiff-4.3.orig/bspatch.c 2015-04-30 13:47:26.485903359 +0200 ++++ bsdiff-4.3/bspatch.c 2015-04-30 13:48:14.808908672 +0200 +@@ -35,6 +35,7 @@ __FBSDID("$FreeBSD: src/usr.bin/bsdiff/b + #include + #include + #include ++#include + + static off_t offtin(u_char *buf) + { diff --git a/buildroot/package/bsdiff/Config.in b/buildroot/package/bsdiff/Config.in new file mode 100644 index 0000000..11fd8b9 --- /dev/null +++ b/buildroot/package/bsdiff/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BSDIFF + bool "bsdiff" + select BR2_PACKAGE_BZIP2 + help + Binary patch/diff like xdelta but creates smaller diffs. + Needs bzip2 support. + + http://www.daemonology.net/bsdiff/ diff --git a/buildroot/package/bsdiff/bsdiff.hash b/buildroot/package/bsdiff/bsdiff.hash new file mode 100644 index 0000000..989fcf1 --- /dev/null +++ b/buildroot/package/bsdiff/bsdiff.hash @@ -0,0 +1,2 @@ +# From http://www.daemonology.net/bsdiff/: +md5 e6d812394f0e0ecc8d5df255aa1db22a bsdiff-4.3.tar.gz diff --git a/buildroot/package/bsdiff/bsdiff.mk b/buildroot/package/bsdiff/bsdiff.mk new file mode 100644 index 0000000..9030284 --- /dev/null +++ b/buildroot/package/bsdiff/bsdiff.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# bsdiff +# +################################################################################ + +BSDIFF_VERSION = 4.3 +BSDIFF_SITE = http://www.daemonology.net/bsdiff +BSDIFF_DEPENDENCIES = bzip2 +BSDIFF_LICENSE = BSD-2-Clause +BSDIFF_LICENSE_FILES = bsdiff.c + +define BSDIFF_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + $(@D)/bsdiff.c -lbz2 -o $(@D)/bsdiff + $(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + $(@D)/bspatch.c -lbz2 -o $(@D)/bspatch +endef + +define BSDIFF_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/bsdiff $(TARGET_DIR)/usr/bin/bsdiff + $(INSTALL) -D -m 755 $(@D)/bspatch $(TARGET_DIR)/usr/bin/bspatch +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch b/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch new file mode 100644 index 0000000..ba65ac4 --- /dev/null +++ b/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch @@ -0,0 +1,49 @@ +From ff93866eb119cedb791894814780c0e44db35715 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Fri, 10 Mar 2017 14:56:17 +0000 +Subject: [PATCH] Makefile: install static library and headers in + install-static + +Currently, the install-static target only installs the statically +compiled tools. However, some programs outside of btrfs-progs (for +example docker) link with the btrfs libraries. If such programs want to +link statically against the btrfs-progs library, then this library +should be installed by "install-static". Indeed, "make install" cannot +be used if the support for shared library is not enabled. + +Signed-off-by: Thomas Petazzoni +[Gustavo: Rebase for btrfs-progs 4.7.2] +Signed-off-by: Gustavo Zacarias +[Vincent: Rebase for btrfs-progs 4.10] +Signed-off-by: Vicente Olivert Riera +--- + Makefile | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 67fbc48..d9e34be 100644 +--- a/Makefile ++++ b/Makefile +@@ -308,7 +308,7 @@ test: test-fsck test-mkfs test-convert test-misc test-fuzz test-cli + # NOTE: For static compiles, you need to have all the required libs + # static equivalent available + # +-static: $(progs_static) ++static: $(progs_static) $(libs_static) + + version.h: version.sh version.h.in configure.ac + @echo " [SH] $@" +@@ -537,6 +537,10 @@ install-static: $(progs_static) $(INSTALLDIRS) + $(INSTALL) $(progs_static) $(DESTDIR)$(bindir) + # btrfsck is a link to btrfs in the src tree, make it so for installed file as well + $(LN_S) -f btrfs.static $(DESTDIR)$(bindir)/btrfsck.static ++ $(INSTALL) -m755 -d $(DESTDIR)$(libdir) ++ $(INSTALL) $(libs_static) $(DESTDIR)$(libdir) ++ $(INSTALL) -m755 -d $(DESTDIR)$(incdir) ++ $(INSTALL) -m644 $(headers) $(DESTDIR)$(incdir) + + $(INSTALLDIRS): + @echo "Making install in $(patsubst install-%,%,$@)" +-- +2.10.2 + diff --git a/buildroot/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch b/buildroot/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch new file mode 100644 index 0000000..9c1173b --- /dev/null +++ b/buildroot/package/btrfs-progs/0002-kerncompat.h-define-BTRFS_DISABLE_BACKTRACE-when-bui.patch @@ -0,0 +1,42 @@ +From 1fc5444f5620670bb9d293be4f92df59661e1810 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 20 Feb 2017 23:31:24 +0100 +Subject: [PATCH] kerncompat.h: define BTRFS_DISABLE_BACKTRACE when building + with uClibc + +uClibc does not provide backtrace() nor . When building +btrfs-progs, passing --disable-backtrace is enough to make it build with +uClibc. But once btrfs-progs is installed and another program/library +includes kerncompat.h, it fails to build with uClibc, because +BTRFS_DISABLE_BACKTRACE is not defined. + +The most correct fix for this would be to have kerncompat.h generated +from kerncompat.h.in during the btrfs-progs build process, and tuned +depending on autoconf/automake variables. But as a quick fix that +follows the current strategy, we simply tweak the existing __GLIBC__ +conditional. Indeed, uClibc pretends to be glibc and defines __GLIBC__, +but it does not replace it completely, hence the need to define +BTRFS_DISABLE_BACKTRACE when __GLIBC__ is not defined *or* when +__UCLIBC__ is defined. + +Signed-off-by: Thomas Petazzoni +--- + kerncompat.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kerncompat.h b/kerncompat.h +index 0f207b7..e47d164 100644 +--- a/kerncompat.h ++++ b/kerncompat.h +@@ -32,7 +32,7 @@ + + #include + +-#ifndef __GLIBC__ ++#if !defined(__GLIBC__) || defined(__UCLIBC__) + #ifndef BTRFS_DISABLE_BACKTRACE + #define BTRFS_DISABLE_BACKTRACE + #endif +-- +2.7.4 + diff --git a/buildroot/package/btrfs-progs/0003-btrfs-progs-convert-add-missing-types-header.patch b/buildroot/package/btrfs-progs/0003-btrfs-progs-convert-add-missing-types-header.patch new file mode 100644 index 0000000..7b09f27 --- /dev/null +++ b/buildroot/package/btrfs-progs/0003-btrfs-progs-convert-add-missing-types-header.patch @@ -0,0 +1,39 @@ +From dda485a3d788c47bb6849218f695db7b51822872 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 31 Oct 2017 14:51:51 +0200 +Subject: [PATCH] btrfs-progs: convert: add missing types header + +Build with musl libc needs the sys/types.h header for the dev_t type, +since this header is not included indirectly. This fixes the following +build failure: + +In file included from convert/source-fs.c:23:0: +./convert/source-fs.h:112:1: error: unknown type name ‘dev_t’ + dev_t decode_dev(u32 dev); + ^~~~~ +convert/source-fs.c:31:1: error: unknown type name ‘dev_t’ + dev_t decode_dev(u32 dev) + ^~~~~ + +Signed-off-by: Baruch Siach +--- +Upstream status: https://marc.info/?l=linux-btrfs&m=150945479718731&w=2 + + convert/source-fs.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/convert/source-fs.h b/convert/source-fs.h +index 23f33567b42d..4e5babefe6a2 100644 +--- a/convert/source-fs.h ++++ b/convert/source-fs.h +@@ -19,6 +19,7 @@ + + #include "kerncompat.h" + #include ++#include + #include + + #define CONV_IMAGE_SUBVOL_OBJECTID BTRFS_FIRST_FREE_OBJECTID +-- +2.14.2 + diff --git a/buildroot/package/btrfs-progs/Config.in b/buildroot/package/btrfs-progs/Config.in new file mode 100644 index 0000000..ad86bab --- /dev/null +++ b/buildroot/package/btrfs-progs/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_BTRFS_PROGS + bool "btrfs-progs" + depends on BR2_USE_MMU # util-linux + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_E2FSPROGS + select BR2_PACKAGE_LZO + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_ZLIB + help + Btrfs filesystem utilities + + https://btrfs.wiki.kernel.org/index.php/Main_Page + +comment "btrfs-progs needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/btrfs-progs/btrfs-progs.hash b/buildroot/package/btrfs-progs/btrfs-progs.hash new file mode 100644 index 0000000..bdcb8ba --- /dev/null +++ b/buildroot/package/btrfs-progs/btrfs-progs.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/sha256sums.asc +sha256 805bdb0031c21a0a5d2ba295a8c9bdd8ba831a68c3fa801aab85677ec902d783 btrfs-progs-v4.13.3.tar.xz +# Locally computed +sha256 0d5bf346df9e635a29dcdddf832dc5b002ca6cdc1c5c9c6c567d2a61bb0c5c15 COPYING diff --git a/buildroot/package/btrfs-progs/btrfs-progs.mk b/buildroot/package/btrfs-progs/btrfs-progs.mk new file mode 100644 index 0000000..96c4350 --- /dev/null +++ b/buildroot/package/btrfs-progs/btrfs-progs.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# btrfs-progs +# +################################################################################ + +BTRFS_PROGS_VERSION = 4.13.3 +BTRFS_PROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/people/kdave/btrfs-progs +BTRFS_PROGS_SOURCE = btrfs-progs-v$(BTRFS_PROGS_VERSION).tar.xz +BTRFS_PROGS_DEPENDENCIES = host-pkgconf e2fsprogs lzo util-linux zlib +BTRFS_PROGS_CONF_OPTS = --disable-backtrace +BTRFS_PROGS_LICENSE = GPL-2.0 +BTRFS_PROGS_LICENSE_FILES = COPYING +BTRFS_PROGS_INSTALL_STAGING = YES + +# Doesn't autodetect static-only and tries to build both +ifeq ($(BR2_STATIC_LIBS),y) +BTRFS_PROGS_MAKE_OPTS = static +BTRFS_PROGS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-static +BTRFS_PROGS_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-static +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/bullet/Config.in b/buildroot/package/bullet/Config.in new file mode 100644 index 0000000..d4d69d2 --- /dev/null +++ b/buildroot/package/bullet/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BULLET + bool "bullet" + depends on BR2_INSTALL_LIBSTDCPP + # Affected by + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68476 + depends on !BR2_microblaze + help + Bullet is a Collision Detection and Rigid Body Dynamics + Library. + + http://bulletphysics.org + +comment "bullet needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on !BR2_microblaze diff --git a/buildroot/package/bullet/bullet.hash b/buildroot/package/bullet/bullet.hash new file mode 100644 index 0000000..c6a45c2 --- /dev/null +++ b/buildroot/package/bullet/bullet.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c058b2e4321ba6adaa656976c1a138c07b18fc03b29f5b82880d5d8228fbf059 bullet-2.86.1.tar.gz diff --git a/buildroot/package/bullet/bullet.mk b/buildroot/package/bullet/bullet.mk new file mode 100644 index 0000000..3e8fae3 --- /dev/null +++ b/buildroot/package/bullet/bullet.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# bullet +# +################################################################################ + +BULLET_VERSION = 2.86.1 +BULLET_SITE = $(call github,bulletphysics,bullet3,$(BULLET_VERSION)) +BULLET_INSTALL_STAGING = YES +BULLET_LICENSE = Zlib +BULLET_LICENSE_FILES = LICENSE.txt + +# Disable demos apps and unit tests. +# Disable Bullet3 library. +BULLET_CONF_OPTS = -DBUILD_UNIT_TESTS=OFF \ + -DBUILD_BULLET2_DEMOS=OFF \ + -DBUILD_BULLET3=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/bustle/Config.in b/buildroot/package/bustle/Config.in new file mode 100644 index 0000000..109ebde --- /dev/null +++ b/buildroot/package/bustle/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_BUSTLE + bool "bustle" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_PACKAGE_DBUS # runtime + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBGLIB2 + help + Bustle is a better dbus-monitor! It records and draws + sequence diagrams of D-Bus activity, showing signal + emissions, method calls and their corresponding returns, + with timestamps for each individual event and the duration + of each method call. This can help you check for unwanted + D-Bus traffic, and pinpoint why your D-Bus-based application + isn't performing as well as you like. + + This only installs the command line bustle-pcap tool, not + the graphical viewer. + + http://www.willthompson.co.uk/bustle/ + +comment "bustle needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_DBUS + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/bustle/bustle.hash b/buildroot/package/bustle/bustle.hash new file mode 100644 index 0000000..49890f7 --- /dev/null +++ b/buildroot/package/bustle/bustle.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 921c2cbbb957dcb02c3aa8fd1eeff3534cb437fa9eeca1c25206ad1e741a3f14 bustle-0.5.4.tar.gz diff --git a/buildroot/package/bustle/bustle.mk b/buildroot/package/bustle/bustle.mk new file mode 100644 index 0000000..ffbfbe4 --- /dev/null +++ b/buildroot/package/bustle/bustle.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# bustle +# +################################################################################ + +BUSTLE_VERSION = 0.5.4 +BUSTLE_SITE = http://www.willthompson.co.uk/bustle/releases/$(BUSTLE_VERSION) +BUSTLE_LICENSE = LGPL-2.1+ +BUSTLE_LICENSE_FILES = LICENSE +BUSTLE_DEPENDENCIES = libglib2 libpcap host-pkgconf + +BUSTLE_PCAP_FLAGS = "-lpcap" +ifeq ($(BR2_STATIC_LIBS),y) +BUSTLE_PCAP_FLAGS += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` +endif + +define BUSTLE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + PCAP_FLAGS="$(BUSTLE_PCAP_FLAGS)" -C $(@D) dist/build/bustle-pcap +endef + +define BUSTLE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/dist/build/bustle-pcap \ + $(TARGET_DIR)/usr/bin/bustle-pcap +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch b/buildroot/package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch new file mode 100644 index 0000000..3aabc96 --- /dev/null +++ b/buildroot/package/busybox/0001-networking-libiproute-use-linux-if_packet.h-instead-.patch @@ -0,0 +1,29 @@ +From d4fec31889ad660a58dab633c511221feb66e817 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 5 Oct 2013 15:55:06 +0200 +Subject: [PATCH] networking/libiproute: use instead of + + +The musl C library doesn't provide the since the +corresponding kernel headers already provides the +necessary definitions. Replacing by + also removes the need to include + + +This commit fixes the build of iplink with the musl C library. + +Signed-off-by: Thomas Petazzoni +[Gustavo: update for busybox 1.22.0] + +diff -Nura busybox-1.22.0.orig/networking/libiproute/iplink.c busybox-1.22.0/networking/libiproute/iplink.c +--- busybox-1.22.0.orig/networking/libiproute/iplink.c 2014-01-01 09:42:40.301137882 -0300 ++++ busybox-1.22.0/networking/libiproute/iplink.c 2014-01-01 09:43:01.282827700 -0300 +@@ -7,7 +7,7 @@ + */ + #include + /*#include - not needed? */ +-#include ++#include + #include + + #include diff --git a/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch b/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch new file mode 100644 index 0000000..105626c --- /dev/null +++ b/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch @@ -0,0 +1,28 @@ +From 67eb23d2be8aba3c474dac81a15b0fa11e5847b7 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 25 Nov 2013 22:51:53 +0100 +Subject: [PATCH] Makefile.flags: strip non -l arguments returned by pkg-config + +Signed-off-by: Thomas Petazzoni +--- + Makefile.flags | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Makefile.flags b/Makefile.flags +index 307afa7..885e323 100644 +--- a/Makefile.flags ++++ b/Makefile.flags +@@ -141,7 +141,9 @@ ifeq ($(CONFIG_SELINUX),y) + SELINUX_PC_MODULES = libselinux libsepol + $(eval $(call pkg_check_modules,SELINUX,$(SELINUX_PC_MODULES))) + CPPFLAGS += $(SELINUX_CFLAGS) +-LDLIBS += $(if $(SELINUX_LIBS),$(SELINUX_LIBS:-l%=%),$(SELINUX_PC_MODULES:lib%=%)) ++LDLIBS += $(if $(SELINUX_LIBS),\ ++ $(patsubst -l%,%,$(filter -l%,$(SELINUX_LIBS))),\ ++ $(SELINUX_PC_MODULES:lib%=%)) + endif + + ifeq ($(CONFIG_EFENCE),y) +-- +1.8.1.2 + diff --git a/buildroot/package/busybox/0003-Makefile-include-per-arch-Makefile-before-Makefile.f.patch b/buildroot/package/busybox/0003-Makefile-include-per-arch-Makefile-before-Makefile.f.patch new file mode 100644 index 0000000..610ca39 --- /dev/null +++ b/buildroot/package/busybox/0003-Makefile-include-per-arch-Makefile-before-Makefile.f.patch @@ -0,0 +1,46 @@ +From 2c240f131ae5cc981702b45397be3b311c67a9ee Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 14 Jul 2017 22:23:46 +0200 +Subject: [PATCH] Makefile: include per-arch Makefile before Makefile.flags + +Makefile.flags contains: + +ARCH_FPIC ?= -fpic +ARCH_FPIE ?= -fpie + +However, arch/$(ARCH)/Makefile gets included *after* Makefile.flags, +and therefore doesn't get the chance to provide its own value. + +Fix this by including arch/$(ARCH)/Makefile *before* Makefile.flags. + +[Submitted upstream: http://lists.busybox.net/pipermail/busybox/2017-July/085632.html] +Signed-off-by: Thomas Petazzoni +--- + Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 971e68e..fe85070 100644 +--- a/Makefile ++++ b/Makefile +@@ -508,6 +508,8 @@ ifeq ($(dot-config),1) + # To avoid any implicit rule to kick in, define an empty command + .config .kconfig.d: ; + ++-include $(srctree)/arch/$(ARCH)/Makefile ++ + # Now we can define CFLAGS etc according to .config + include $(srctree)/Makefile.flags + +@@ -531,8 +533,6 @@ endif + # Defaults busybox but it is usually overridden in the arch makefile + all: busybox doc + +--include $(srctree)/arch/$(ARCH)/Makefile +- + # arch Makefile may override CC so keep this after arch Makefile is included + #bbox# NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) + CHECKFLAGS += $(NOSTDINC_FLAGS) +-- +2.9.4 + diff --git a/buildroot/package/busybox/0004-arch-sparc-sparc64-Makefile-define-ARCH_FPIC.patch b/buildroot/package/busybox/0004-arch-sparc-sparc64-Makefile-define-ARCH_FPIC.patch new file mode 100644 index 0000000..b487035 --- /dev/null +++ b/buildroot/package/busybox/0004-arch-sparc-sparc64-Makefile-define-ARCH_FPIC.patch @@ -0,0 +1,79 @@ +From 43593d65827f4e7f848fc410321b0b2deed986fc Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 14 Jul 2017 21:54:37 +0200 +Subject: [PATCH] arch/{sparc,sparc64}/Makefile: define ARCH_FPIC + +Building Busybox on SPARC or SPARC64 with CONFIG_BUILD_LIBBUSYBOX=y +currently fails with: + +miscutils/lib.a(i2c_tools.o): In function `i2c_dev_open': +i2c_tools.c:(.text.i2c_dev_open+0x14): relocation truncated to fit: R_SPARC_GOT13 against `.LC0' +i2c_tools.c:(.text.i2c_dev_open+0x38): relocation truncated to fit: R_SPARC_GOT13 against symbol `bb_errno' defined in COMMON section in libbb/lib.a(ptr_to_globals.o) +i2c_tools.c:(.text.i2c_dev_open+0x6c): relocation truncated to fit: R_SPARC_GOT13 against `.LC1' +miscutils/lib.a(i2c_tools.o): In function `check_funcs_test_end': +i2c_tools.c:(.text.check_funcs_test_end+0x24): relocation truncated to fit: R_SPARC_GOT13 against `.LC2' +i2c_tools.c:(.text.check_funcs_test_end+0x2c): relocation truncated to fit: R_SPARC_GOT13 against `.LC3' +miscutils/lib.a(i2c_tools.o): In function `check_read_funcs': +i2c_tools.c:(.text.check_read_funcs+0x30): relocation truncated to fit: R_SPARC_GOT13 against `.LC10' +i2c_tools.c:(.text.check_read_funcs+0x80): relocation truncated to fit: R_SPARC_GOT13 against `.LC4' +i2c_tools.c:(.text.check_read_funcs+0x98): relocation truncated to fit: R_SPARC_GOT13 against `.LC5' +i2c_tools.c:(.text.check_read_funcs+0xc0): relocation truncated to fit: R_SPARC_GOT13 against `.LC6' +i2c_tools.c:(.text.check_read_funcs+0xe0): relocation truncated to fit: R_SPARC_GOT13 against `.LC7' +i2c_tools.c:(.text.check_read_funcs+0xf8): additional relocation overflows omitted from the output + +As stated by the gcc documentation, the SPARC architecture has a +limited GOT size, which prevents moderately large binaries to be built +with -fpic, and -fPIC is necessary. From gcc's documentation: + +'-fpic' + Generate position-independent code (PIC) suitable for use in a + shared library, if supported for the target machine. Such code + accesses all constant addresses through a global offset table + (GOT). The dynamic loader resolves the GOT entries when the + program starts (the dynamic loader is not part of GCC; it is part + of the operating system). If the GOT size for the linked + executable exceeds a machine-specific maximum size, you get an + error message from the linker indicating that '-fpic' does not + work; in that case, recompile with '-fPIC' instead. (These + maximums are 8k on the SPARC, 28k on AArch64 and 32k on the m68k + and RS/6000. The x86 has no such limit.) + +'-fPIC' + If supported for the target machine, emit position-independent + code, suitable for dynamic linking and avoiding any limit on the + size of the global offset table. This option makes a difference on + AArch64, m68k, PowerPC and SPARC. + +With a limit of 8KB on SPARC, we quickly reach this limit, and we hit +it when building Busybox on SPARC/SPARC64 with the +CONFIG_BUILD_LIBBUSYBOX=y option enabled. + +Therefore, this commit redefines ARCH_FPIC as -fPIC on sparc and +sparc64 to solve this issue. + +[Submitted upstream: http://lists.busybox.net/pipermail/busybox/2017-July/085633.html] +Signed-off-by: Thomas Petazzoni +--- + arch/sparc/Makefile | 1 + + arch/sparc64/Makefile | 1 + + 2 files changed, 2 insertions(+) + create mode 100644 arch/sparc/Makefile + create mode 100644 arch/sparc64/Makefile + +diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile +new file mode 100644 +index 0000000..4d6c5fb +--- /dev/null ++++ b/arch/sparc/Makefile +@@ -0,0 +1 @@ ++ARCH_FPIC = -fPIC +diff --git a/arch/sparc64/Makefile b/arch/sparc64/Makefile +new file mode 100644 +index 0000000..4d6c5fb +--- /dev/null ++++ b/arch/sparc64/Makefile +@@ -0,0 +1 @@ ++ARCH_FPIC = -fPIC +-- +2.9.4 + diff --git a/buildroot/package/busybox/0005-httpd-fix-handling-of-range-requests.patch b/buildroot/package/busybox/0005-httpd-fix-handling-of-range-requests.patch new file mode 100644 index 0000000..b3ca32d --- /dev/null +++ b/buildroot/package/busybox/0005-httpd-fix-handling-of-range-requests.patch @@ -0,0 +1,27 @@ +From 2b400d9b2b7309d6e479102fc3ce646e893058a5 Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko +Date: Mon, 18 Sep 2017 13:09:11 +0200 +Subject: [PATCH] httpd: fix handling of range requests + +Signed-off-by: Denys Vlasenko +Signed-off-by: Peter Korsgaard +--- + networking/httpd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/networking/httpd.c b/networking/httpd.c +index e072f23c7..5e32fc936 100644 +--- a/networking/httpd.c ++++ b/networking/httpd.c +@@ -2337,7 +2337,7 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr) + if (STRNCASECMP(iobuf, "Range:") == 0) { + /* We know only bytes=NNN-[MMM] */ + char *s = skip_whitespace(iobuf + sizeof("Range:")-1); +- if (is_prefixed_with(s, "bytes=") == 0) { ++ if (is_prefixed_with(s, "bytes=")) { + s += sizeof("bytes=")-1; + range_start = BB_STRTOOFF(s, &s, 10); + if (s[0] != '-' || range_start < 0) { +-- +2.11.0 + diff --git a/buildroot/package/busybox/0006-bunzip2-fix-runCnt-overflow-from-bug-10431.patch b/buildroot/package/busybox/0006-bunzip2-fix-runCnt-overflow-from-bug-10431.patch new file mode 100644 index 0000000..e8fd2e0 --- /dev/null +++ b/buildroot/package/busybox/0006-bunzip2-fix-runCnt-overflow-from-bug-10431.patch @@ -0,0 +1,101 @@ +From 0402cb32df015d9372578e3db27db47b33d5c7b0 Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko +Date: Sun, 22 Oct 2017 18:23:23 +0200 +Subject: [PATCH] bunzip2: fix runCnt overflow from bug 10431 + +This particular corrupted file can be dealth with by using "unsigned". +If there will be cases where it genuinely overflows, there is a disabled +code to deal with that too. + +function old new delta +get_next_block 1678 1667 -11 + +Signed-off-by: Denys Vlasenko +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit 0402cb32df0 + + archival/libarchive/decompress_bunzip2.c | 30 +++++++++++++++++++----------- + 1 file changed, 19 insertions(+), 11 deletions(-) + +diff --git a/archival/libarchive/decompress_bunzip2.c b/archival/libarchive/decompress_bunzip2.c +index 7cd18f5ed4cf..bec89edd3a4d 100644 +--- a/archival/libarchive/decompress_bunzip2.c ++++ b/archival/libarchive/decompress_bunzip2.c +@@ -156,15 +156,15 @@ static unsigned get_bits(bunzip_data *bd, int bits_wanted) + static int get_next_block(bunzip_data *bd) + { + struct group_data *hufGroup; +- int dbufCount, dbufSize, groupCount, *base, *limit, selector, +- i, j, runPos, symCount, symTotal, nSelectors, byteCount[256]; +- int runCnt = runCnt; /* for compiler */ ++ int groupCount, *base, *limit, selector, ++ i, j, symCount, symTotal, nSelectors, byteCount[256]; + uint8_t uc, symToByte[256], mtfSymbol[256], *selectors; + uint32_t *dbuf; + unsigned origPtr, t; ++ unsigned dbufCount, runPos; ++ unsigned runCnt = runCnt; /* for compiler */ + + dbuf = bd->dbuf; +- dbufSize = bd->dbufSize; + selectors = bd->selectors; + + /* In bbox, we are ok with aborting through setjmp which is set up in start_bunzip */ +@@ -187,7 +187,7 @@ static int get_next_block(bunzip_data *bd) + it didn't actually work. */ + if (get_bits(bd, 1)) return RETVAL_OBSOLETE_INPUT; + origPtr = get_bits(bd, 24); +- if ((int)origPtr > dbufSize) return RETVAL_DATA_ERROR; ++ if (origPtr > bd->dbufSize) return RETVAL_DATA_ERROR; + + /* mapping table: if some byte values are never used (encoding things + like ascii text), the compression code removes the gaps to have fewer +@@ -435,7 +435,14 @@ static int get_next_block(bunzip_data *bd) + symbols, but a run of length 0 doesn't mean anything in this + context). Thus space is saved. */ + runCnt += (runPos << nextSym); /* +runPos if RUNA; +2*runPos if RUNB */ +- if (runPos < dbufSize) runPos <<= 1; ++//The 32-bit overflow of runCnt wasn't yet seen, but probably can happen. ++//This would be the fix (catches too large count way before it can overflow): ++// if (runCnt > bd->dbufSize) { ++// dbg("runCnt:%u > dbufSize:%u RETVAL_DATA_ERROR", ++// runCnt, bd->dbufSize); ++// return RETVAL_DATA_ERROR; ++// } ++ if (runPos < bd->dbufSize) runPos <<= 1; + goto end_of_huffman_loop; + } + +@@ -445,14 +452,15 @@ static int get_next_block(bunzip_data *bd) + literal used is the one at the head of the mtfSymbol array.) */ + if (runPos != 0) { + uint8_t tmp_byte; +- if (dbufCount + runCnt > dbufSize) { +- dbg("dbufCount:%d+runCnt:%d %d > dbufSize:%d RETVAL_DATA_ERROR", +- dbufCount, runCnt, dbufCount + runCnt, dbufSize); ++ if (dbufCount + runCnt > bd->dbufSize) { ++ dbg("dbufCount:%u+runCnt:%u %u > dbufSize:%u RETVAL_DATA_ERROR", ++ dbufCount, runCnt, dbufCount + runCnt, bd->dbufSize); + return RETVAL_DATA_ERROR; + } + tmp_byte = symToByte[mtfSymbol[0]]; + byteCount[tmp_byte] += runCnt; +- while (--runCnt >= 0) dbuf[dbufCount++] = (uint32_t)tmp_byte; ++ while ((int)--runCnt >= 0) ++ dbuf[dbufCount++] = (uint32_t)tmp_byte; + runPos = 0; + } + +@@ -466,7 +474,7 @@ static int get_next_block(bunzip_data *bd) + first symbol in the mtf array, position 0, would have been handled + as part of a run above. Therefore 1 unused mtf position minus + 2 non-literal nextSym values equals -1.) */ +- if (dbufCount >= dbufSize) return RETVAL_DATA_ERROR; ++ if (dbufCount >= bd->dbufSize) return RETVAL_DATA_ERROR; + i = nextSym - 1; + uc = mtfSymbol[i]; + +-- +2.15.1 + diff --git a/buildroot/package/busybox/0007-unlzma-fix-SEGV-closes-10436.patch b/buildroot/package/busybox/0007-unlzma-fix-SEGV-closes-10436.patch new file mode 100644 index 0000000..c8d8750 --- /dev/null +++ b/buildroot/package/busybox/0007-unlzma-fix-SEGV-closes-10436.patch @@ -0,0 +1,34 @@ +From 9ac42c500586fa5f10a1f6d22c3f797df11b1f6b Mon Sep 17 00:00:00 2001 +From: Denys Vlasenko +Date: Fri, 27 Oct 2017 15:37:03 +0200 +Subject: [PATCH] unlzma: fix SEGV, closes 10436 + +Signed-off-by: Denys Vlasenko +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit 9ac42c500586f + + archival/libarchive/decompress_unlzma.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/archival/libarchive/decompress_unlzma.c b/archival/libarchive/decompress_unlzma.c +index a9040877efa0..be4342414435 100644 +--- a/archival/libarchive/decompress_unlzma.c ++++ b/archival/libarchive/decompress_unlzma.c +@@ -450,8 +450,12 @@ unpack_lzma_stream(transformer_state_t *xstate) + IF_NOT_FEATURE_LZMA_FAST(string:) + do { + uint32_t pos = buffer_pos - rep0; +- if ((int32_t)pos < 0) ++ if ((int32_t)pos < 0) { + pos += header.dict_size; ++ /* bug 10436 has an example file where this triggers: */ ++ if ((int32_t)pos < 0) ++ goto bad; ++ } + previous_byte = buffer[pos]; + IF_NOT_FEATURE_LZMA_FAST(one_byte2:) + buffer[buffer_pos++] = previous_byte; +-- +2.15.1 + diff --git a/buildroot/package/busybox/Config.in b/buildroot/package/busybox/Config.in new file mode 100644 index 0000000..ca8fe68 --- /dev/null +++ b/buildroot/package/busybox/Config.in @@ -0,0 +1,107 @@ +config BR2_PACKAGE_BUSYBOX + bool "BusyBox" + default y + help + The Swiss Army Knife of embedded Linux. It slices, it dices, + it makes Julian Fries. + + http://busybox.net/ + + Most people will answer Y. + +if BR2_PACKAGE_BUSYBOX + +config BR2_PACKAGE_BUSYBOX_CONFIG + string "BusyBox configuration file to use?" + default "package/busybox/busybox.config" + help + Some people may wish to use their own modified BusyBox + configuration file, and will specify their config file + location with this option. + + Most people will just use the default BusyBox configuration + file. + +config BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES + string "Additional BusyBox configuration fragment files" + help + A space-separated list of configuration fragment files, + that will be merged to the main BusyBox configuration file. + +# This option is not an option of Busybox, it can be selected even +# if Busybox is not enabled. +config BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + bool "Show packages that are also provided by busybox" + help + Show packages in menuconfig that are potentially also provided + by busybox. + +config BR2_PACKAGE_BUSYBOX_SELINUX + bool "Enable SELinux support" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_arc + select BR2_PACKAGE_LIBSELINUX + help + Enable SELinux support in BusyBox. Please note that + depending on your BusyBox configuration and the SELinux + policy implementation, you may want to also enable + BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES. + + For instance, if your BusyBox configuration only uses a + couple of minor BusyBox features, such as simple command + line utilities, the symlinked version of BusyBox can be used + to save space. If BusyBox provides more features, such as + crond, then individual binaries have to be enabled for the + SELinux type transitions to occur properly. + +config BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES + bool "Individual binaries" + depends on !BR2_STATIC_LIBS + depends on !BR2_bfin # libbusybox.so link issue + help + By default (i.e with this option disabled), Busybox is + installed as a single binary in /bin/busybox and all applets + are a symbolic link to /bin/busybox. + + With this option enabled, each applet is a separate binary, + which is needed for proper operation with SELinux. + +comment "Busybox individual binaries need a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on !BR2_bfin + +config BR2_PACKAGE_BUSYBOX_WATCHDOG + bool "Install the watchdog daemon startup script" + help + Install the watchdog daemon startup script, + that just start at the boot the busybox watchdog daemon. + +if BR2_PACKAGE_BUSYBOX_WATCHDOG + +config BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD + string "Delay between reset" + default "5" + help + Select the number of seconds between each + reset of the watchdog (default 5) + + Use ms suffix to specify milliseconds (e.g. 500ms) + +endif + +endif + +if !BR2_PACKAGE_BUSYBOX # kconfig doesn't support else + +comment "You may need to enable other packages to get a working system" +comment "You better know what you're doing!" + +# This option is not an option of Busybox, it can be selected even if +# Busybox is not enabled. This dummy option ensures that packages that +# depend on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS are visible when Busybox +# is disabled. +config BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + default y +endif diff --git a/buildroot/package/busybox/S01logging b/buildroot/package/busybox/S01logging new file mode 100644 index 0000000..fcb3e7d --- /dev/null +++ b/buildroot/package/busybox/S01logging @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Start logging +# + +SYSLOGD_ARGS=-n +KLOGD_ARGS=-n +[ -r /etc/default/logging ] && . /etc/default/logging + +start() { + printf "Starting logging: " + start-stop-daemon -b -S -q -m -p /var/run/syslogd.pid --exec /sbin/syslogd -- $SYSLOGD_ARGS + start-stop-daemon -b -S -q -m -p /var/run/klogd.pid --exec /sbin/klogd -- $KLOGD_ARGS + echo "OK" +} + +stop() { + printf "Stopping logging: " + start-stop-daemon -K -q -p /var/run/syslogd.pid + start-stop-daemon -K -q -p /var/run/klogd.pid + echo "OK" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/busybox/S10mdev b/buildroot/package/busybox/S10mdev new file mode 100644 index 0000000..7075b77 --- /dev/null +++ b/buildroot/package/busybox/S10mdev @@ -0,0 +1,24 @@ +#!/bin/sh +# +# Start mdev.... +# + +case "$1" in + start) + echo "Starting mdev..." + echo /sbin/mdev >/proc/sys/kernel/hotplug + /sbin/mdev -s + # coldplug modules + find /sys/ -name modalias -print0 | xargs -0 sort -u | tr '\n' '\0' | \ + xargs -0 modprobe -abq + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/busybox/S15watchdog b/buildroot/package/busybox/S15watchdog new file mode 100644 index 0000000..470c6d7 --- /dev/null +++ b/buildroot/package/busybox/S15watchdog @@ -0,0 +1,20 @@ +#!/bin/sh +# +# Start watchdog +# + +case "$1" in + start) + echo "Starting watchdog..." + watchdog -t PERIOD /dev/watchdog + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/busybox/S50telnet b/buildroot/package/busybox/S50telnet new file mode 100755 index 0000000..82952b8 --- /dev/null +++ b/buildroot/package/busybox/S50telnet @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Start telnet.... +# + +TELNETD_ARGS=-F +[ -r /etc/default/telnet ] && . /etc/default/telnet + +start() { + printf "Starting telnetd: " + start-stop-daemon -S -q -m -b -p /var/run/telnetd.pid \ + -x /usr/sbin/telnetd -- $TELNETD_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping telnetd: " + start-stop-daemon -K -q -p /var/run/telnetd.pid \ + -x /usr/sbin/telnetd + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/busybox/busybox-minimal.config b/buildroot/package/busybox/busybox-minimal.config new file mode 100644 index 0000000..4130e6a --- /dev/null +++ b/buildroot/package/busybox/busybox-minimal.config @@ -0,0 +1,1122 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.27.1 +# Sun Jul 30 15:42:11 2017 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Busybox Settings +# +# CONFIG_DESKTOP is not set +# CONFIG_EXTRA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +# CONFIG_USE_PORTABLE_CODE is not set +# CONFIG_SHOW_USAGE is not set +# CONFIG_FEATURE_VERBOSE_USAGE is not set +# CONFIG_FEATURE_COMPRESS_USAGE is not set +CONFIG_BUSYBOX=y +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set +# CONFIG_PAM is not set +CONFIG_LONG_OPTS=y +CONFIG_FEATURE_DEVPTS=y +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +# CONFIG_FEATURE_PIDFILE is not set +CONFIG_PID_FILE_PATH="" +CONFIG_FEATURE_SUID=y +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +CONFIG_FEATURE_SYSLOG=y +# CONFIG_FEATURE_HAVE_RPC is not set +CONFIG_PLATFORM_LINUX=y + +# +# Build Options +# +CONFIG_STATIC=y +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_LFS=y +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Busybox Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set +CONFIG_FEATURE_RTMINMAX=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=1 +# CONFIG_FEATURE_FAST_TOP is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=999 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +CONFIG_FEATURE_REVERSE_SEARCH=y +CONFIG_FEATURE_TAB_COMPLETION=y +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +# CONFIG_LOCALE_SUPPORT is not set +# CONFIG_UNICODE_SUPPORT is not set +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=0 +CONFIG_LAST_SUPPORTED_WCHAR=0 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set +CONFIG_FEATURE_NON_POSIX_CP=y +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_FEATURE_SKIP_ROOTFS=y +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_HWIB=y + +# +# Applets +# + +# +# Archival Utilities +# +# CONFIG_FEATURE_SEAMLESS_XZ is not set +# CONFIG_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_FEATURE_SEAMLESS_BZ2 is not set +# CONFIG_FEATURE_SEAMLESS_GZ is not set +# CONFIG_FEATURE_SEAMLESS_Z is not set +# CONFIG_AR is not set +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +# CONFIG_FEATURE_AR_CREATE is not set +# CONFIG_UNCOMPRESS is not set +# CONFIG_GUNZIP is not set +CONFIG_ZCAT=y +# CONFIG_FEATURE_GUNZIP_LONG_OPTIONS is not set +# CONFIG_BUNZIP2 is not set +CONFIG_BZCAT=y +# CONFIG_UNLZMA is not set +CONFIG_LZCAT=y +# CONFIG_LZMA is not set +# CONFIG_FEATURE_LZMA_FAST is not set +# CONFIG_UNXZ is not set +CONFIG_XZCAT=y +# CONFIG_XZ is not set +# CONFIG_BZIP2 is not set +CONFIG_FEATURE_BZIP2_DECOMPRESS=y +# CONFIG_CPIO is not set +# CONFIG_FEATURE_CPIO_O is not set +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +# CONFIG_GZIP is not set +# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_GZIP_FAST=0 +# CONFIG_FEATURE_GZIP_LEVELS is not set +CONFIG_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_LZOP is not set +CONFIG_UNLZOP=y +CONFIG_LZOPCAT=y +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM2CPIO is not set +# CONFIG_RPM is not set +# CONFIG_TAR is not set +# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set +# CONFIG_FEATURE_TAR_CREATE is not set +# CONFIG_FEATURE_TAR_AUTODETECT is not set +# CONFIG_FEATURE_TAR_FROM is not set +# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set +# CONFIG_FEATURE_TAR_TO_COMMAND is not set +# CONFIG_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_FEATURE_TAR_SELINUX is not set +# CONFIG_UNZIP is not set +# CONFIG_FEATURE_UNZIP_CDF is not set +# CONFIG_FEATURE_UNZIP_BZIP2 is not set +# CONFIG_FEATURE_UNZIP_LZMA is not set +# CONFIG_FEATURE_UNZIP_XZ is not set + +# +# Coreutils +# +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_FEATURE_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_CHROOT=y +CONFIG_CKSUM=y +# CONFIG_COMM is not set +CONFIG_CP=y +# CONFIG_FEATURE_CP_LONG_OPTIONS is not set +CONFIG_CUT=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_FEATURE_DD_STATUS=y +CONFIG_DF=y +# CONFIG_FEATURE_DF_FANCY is not set +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set +# CONFIG_EXPAND is not set +# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set +# CONFIG_UNEXPAND is not set +# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FACTOR=y +CONFIG_FALSE=y +CONFIG_FOLD=y +# CONFIG_FSYNC is not set +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_HOSTID=y +CONFIG_ID=y +# CONFIG_GROUPS is not set +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LINK=y +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_WIDTH=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_MD5SUM=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_MKDIR=y +CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +# CONFIG_MKTEMP is not set +CONFIG_MV=y +CONFIG_FEATURE_MV_LONG_OPTIONS=y +CONFIG_NICE=y +CONFIG_NL=y +CONFIG_NOHUP=y +CONFIG_NPROC=y +CONFIG_OD=y +CONFIG_PASTE=y +CONFIG_PRINTENV=y +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set +CONFIG_SEQ=y +CONFIG_SHRED=y +# CONFIG_SHUF is not set +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_FEATURE_FLOAT_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +# CONFIG_SPLIT is not set +# CONFIG_FEATURE_SPLIT_FANCY is not set +# CONFIG_STAT is not set +# CONFIG_FEATURE_STAT_FORMAT is not set +# CONFIG_FEATURE_STAT_FILESYSTEM is not set +CONFIG_STTY=y +# CONFIG_SUM is not set +CONFIG_SYNC=y +# CONFIG_FEATURE_SYNC_FANCY is not set +# CONFIG_TAC is not set +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y +CONFIG_TEST1=y +CONFIG_TEST2=y +CONFIG_FEATURE_TEST_64=y +# CONFIG_TIMEOUT is not set +CONFIG_TOUCH=y +# CONFIG_FEATURE_TOUCH_NODEREF is not set +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_TRUE=y +CONFIG_TRUNCATE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" +CONFIG_UNIQ=y +CONFIG_UNLINK=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +# CONFIG_BASE64 is not set +CONFIG_UUENCODE=y +CONFIG_WC=y +# CONFIG_FEATURE_WC_LARGE is not set +CONFIG_WHOAMI=y +CONFIG_WHO=y +CONFIG_W=y +# CONFIG_USERS is not set +CONFIG_YES=y + +# +# Common options +# +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Console Utilities +# +# CONFIG_CHVT is not set +# CONFIG_CLEAR is not set +# CONFIG_DEALLOCVT is not set +# CONFIG_DUMPKMAP is not set +# CONFIG_FGCONSOLE is not set +# CONFIG_KBD_MODE is not set +# CONFIG_LOADFONT is not set +# CONFIG_SETFONT is not set +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" +# CONFIG_FEATURE_LOADFONT_PSF2 is not set +# CONFIG_FEATURE_LOADFONT_RAW is not set +# CONFIG_LOADKMAP is not set +# CONFIG_OPENVT is not set +# CONFIG_RESET is not set +# CONFIG_RESIZE is not set +# CONFIG_FEATURE_RESIZE_PRINT is not set +# CONFIG_SETCONSOLE is not set +# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +# CONFIG_SETKEYCODES is not set +# CONFIG_SETLOGCONS is not set +# CONFIG_SHOWKEY is not set + +# +# Debian Utilities +# +# CONFIG_PIPE_PROGRESS is not set +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +CONFIG_FEATURE_RUN_PARTS_FANCY=y +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_WHICH=y + +# +# Editors +# +# CONFIG_AWK is not set +# CONFIG_FEATURE_AWK_LIBM is not set +# CONFIG_FEATURE_AWK_GNU_EXTENSIONS is not set +# CONFIG_CMP is not set +# CONFIG_DIFF is not set +# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +# CONFIG_FEATURE_DIFF_DIR is not set +# CONFIG_ED is not set +# CONFIG_PATCH is not set +CONFIG_SED=y +# CONFIG_VI is not set +CONFIG_FEATURE_VI_MAX_LEN=0 +# CONFIG_FEATURE_VI_8BIT is not set +# CONFIG_FEATURE_VI_COLON is not set +# CONFIG_FEATURE_VI_YANKMARK is not set +# CONFIG_FEATURE_VI_SEARCH is not set +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +# CONFIG_FEATURE_VI_USE_SIGNALS is not set +# CONFIG_FEATURE_VI_DOT_CMD is not set +# CONFIG_FEATURE_VI_READONLY is not set +# CONFIG_FEATURE_VI_SETOPTS is not set +# CONFIG_FEATURE_VI_SET is not set +# CONFIG_FEATURE_VI_WIN_RESIZE is not set +# CONFIG_FEATURE_VI_ASK_TERMINAL is not set +# CONFIG_FEATURE_VI_UNDO is not set +# CONFIG_FEATURE_VI_UNDO_QUEUE is not set +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0 +# CONFIG_FEATURE_ALLOW_EXEC is not set + +# +# Finding Utilities +# +# CONFIG_FIND is not set +# CONFIG_FEATURE_FIND_PRINT0 is not set +# CONFIG_FEATURE_FIND_MTIME is not set +# CONFIG_FEATURE_FIND_MMIN is not set +# CONFIG_FEATURE_FIND_PERM is not set +# CONFIG_FEATURE_FIND_TYPE is not set +# CONFIG_FEATURE_FIND_XDEV is not set +# CONFIG_FEATURE_FIND_MAXDEPTH is not set +# CONFIG_FEATURE_FIND_NEWER is not set +# CONFIG_FEATURE_FIND_INUM is not set +# CONFIG_FEATURE_FIND_EXEC is not set +# CONFIG_FEATURE_FIND_EXEC_PLUS is not set +# CONFIG_FEATURE_FIND_USER is not set +# CONFIG_FEATURE_FIND_GROUP is not set +# CONFIG_FEATURE_FIND_NOT is not set +# CONFIG_FEATURE_FIND_DEPTH is not set +# CONFIG_FEATURE_FIND_PAREN is not set +# CONFIG_FEATURE_FIND_SIZE is not set +# CONFIG_FEATURE_FIND_PRUNE is not set +# CONFIG_FEATURE_FIND_DELETE is not set +# CONFIG_FEATURE_FIND_PATH is not set +# CONFIG_FEATURE_FIND_REGEX is not set +# CONFIG_FEATURE_FIND_CONTEXT is not set +# CONFIG_FEATURE_FIND_LINKS is not set +CONFIG_GREP=y +CONFIG_EGREP=y +CONFIG_FGREP=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_HALT=y +CONFIG_POWEROFF=y +CONFIG_REBOOT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_LINUXRC=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_KILL_REMOVED=y +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_INIT_QUIET=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set +CONFIG_USE_BB_CRYPT=y +# CONFIG_USE_BB_CRYPT_SHA is not set +# CONFIG_ADDGROUP is not set +# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +CONFIG_ADDUSER=y +# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_LAST_ID=60000 +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +# CONFIG_CHPASSWD is not set +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des" +# CONFIG_CRYPTPW is not set +# CONFIG_MKPASSWD is not set +# CONFIG_DELUSER is not set +# CONFIG_DELGROUP is not set +# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_LOGIN_SCRIPTS is not set +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +# CONFIG_SU is not set +# CONFIG_FEATURE_SU_SYSLOG is not set +# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +# CONFIG_SULOGIN is not set +# CONFIG_VLOCK is not set + +# +# Linux Ext2 FS Progs +# +# CONFIG_CHATTR is not set +# CONFIG_FSCK is not set +# CONFIG_LSATTR is not set +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_DEPMOD is not set +# CONFIG_INSMOD is not set +# CONFIG_LSMOD is not set +# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set +# CONFIG_MODINFO is not set +# CONFIG_MODPROBE is not set +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +# CONFIG_RMMOD is not set + +# +# Options common to multiple modutils +# +# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_FEATURE_MODUTILS_ALIAS is not set +# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set +CONFIG_DEFAULT_MODULES_DIR="" +CONFIG_DEFAULT_DEPMOD_FILE="" + +# +# Linux System Utilities +# +# CONFIG_ACPID is not set +# CONFIG_FEATURE_ACPID_COMPAT is not set +# CONFIG_BLKDISCARD is not set +# CONFIG_BLKID is not set +# CONFIG_FEATURE_BLKID_TYPE is not set +# CONFIG_BLOCKDEV is not set +# CONFIG_CAL is not set +# CONFIG_CHRT is not set +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +# CONFIG_EJECT is not set +# CONFIG_FEATURE_EJECT_SCSI is not set +CONFIG_FALLOCATE=y +# CONFIG_FATATTR is not set +# CONFIG_FBSET is not set +# CONFIG_FEATURE_FBSET_FANCY is not set +# CONFIG_FEATURE_FBSET_READMODE is not set +# CONFIG_FDFORMAT is not set +# CONFIG_FDISK is not set +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +# CONFIG_FEATURE_FDISK_WRITABLE is not set +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +# CONFIG_FEATURE_GPT_LABEL is not set +# CONFIG_FEATURE_FDISK_ADVANCED is not set +# CONFIG_FINDFS is not set +# CONFIG_FLOCK is not set +# CONFIG_FDFLUSH is not set +CONFIG_FREERAMDISK=y +# CONFIG_FSCK_MINIX is not set +CONFIG_FSFREEZE=y +# CONFIG_FSTRIM is not set +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +# CONFIG_HEXDUMP is not set +# CONFIG_FEATURE_HEXDUMP_REVERSE is not set +# CONFIG_HD is not set +CONFIG_XXD=y +# CONFIG_HWCLOCK is not set +# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set +# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set +# CONFIG_IONICE is not set +# CONFIG_IPCRM is not set +# CONFIG_IPCS is not set +# CONFIG_LAST is not set +# CONFIG_FEATURE_LAST_FANCY is not set +# CONFIG_LOSETUP is not set +# CONFIG_LSPCI is not set +# CONFIG_LSUSB is not set +# CONFIG_MDEV is not set +# CONFIG_FEATURE_MDEV_CONF is not set +# CONFIG_FEATURE_MDEV_RENAME is not set +# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set +# CONFIG_FEATURE_MDEV_EXEC is not set +# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +CONFIG_MKE2FS=y +# CONFIG_MKFS_EXT2 is not set +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +# CONFIG_MKFS_REISER is not set +CONFIG_MKDOSFS=y +# CONFIG_MKFS_VFAT is not set +# CONFIG_MKSWAP is not set +# CONFIG_FEATURE_MKSWAP_UUID is not set +CONFIG_MORE=y +CONFIG_MOUNT=y +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_FEATURE_MOUNT_OTHERTAB=y +# CONFIG_MOUNTPOINT is not set +# CONFIG_NSENTER is not set +# CONFIG_FEATURE_NSENTER_LONG_OPTS is not set +# CONFIG_PIVOT_ROOT is not set +# CONFIG_RDATE is not set +# CONFIG_RDEV is not set +# CONFIG_READPROFILE is not set +# CONFIG_RENICE is not set +# CONFIG_REV is not set +# CONFIG_RTCWAKE is not set +# CONFIG_SCRIPT is not set +# CONFIG_SCRIPTREPLAY is not set +# CONFIG_SETARCH is not set +CONFIG_LINUX32=y +CONFIG_LINUX64=y +CONFIG_SETPRIV=y +# CONFIG_SETSID is not set +CONFIG_SWAPON=y +# CONFIG_FEATURE_SWAPON_DISCARD is not set +# CONFIG_FEATURE_SWAPON_PRI is not set +CONFIG_SWAPOFF=y +# CONFIG_SWITCH_ROOT is not set +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +# CONFIG_UEVENT is not set +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +# CONFIG_UNSHARE is not set +# CONFIG_WALL is not set + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +# CONFIG_FEATURE_MTAB_SUPPORT is not set +# CONFIG_VOLUMEID is not set +# CONFIG_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +# CONFIG_FEATURE_VOLUMEID_EXFAT is not set +# CONFIG_FEATURE_VOLUMEID_EXT is not set +# CONFIG_FEATURE_VOLUMEID_F2FS is not set +# CONFIG_FEATURE_VOLUMEID_FAT is not set +# CONFIG_FEATURE_VOLUMEID_HFS is not set +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_FEATURE_VOLUMEID_JFS is not set +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set +# CONFIG_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_FEATURE_VOLUMEID_SYSV is not set +# CONFIG_FEATURE_VOLUMEID_UBIFS is not set +# CONFIG_FEATURE_VOLUMEID_UDF is not set +# CONFIG_FEATURE_VOLUMEID_XFS is not set + +# +# Miscellaneous Utilities +# +# CONFIG_ADJTIMEX is not set +# CONFIG_BBCONFIG is not set +# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set +# CONFIG_BEEP is not set +CONFIG_FEATURE_BEEP_FREQ=0 +CONFIG_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_CHAT is not set +# CONFIG_FEATURE_CHAT_NOFAIL is not set +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_CONSPY is not set +# CONFIG_CROND is not set +# CONFIG_FEATURE_CROND_D is not set +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +CONFIG_FEATURE_CROND_DIR="" +# CONFIG_CRONTAB is not set +# CONFIG_DC is not set +# CONFIG_FEATURE_DC_LIBM is not set +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# 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_FBSPLASH is not set +# CONFIG_FLASHCP is not set +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +# CONFIG_HDPARM is not set +# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set +# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set +# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set +# CONFIG_I2CGET is not set +# CONFIG_I2CSET is not set +# CONFIG_I2CDUMP is not set +# CONFIG_I2CDETECT is not set +# CONFIG_INOTIFYD is not set +# CONFIG_LESS is not set +CONFIG_FEATURE_LESS_MAXLINES=0 +# CONFIG_FEATURE_LESS_BRACKETS is not set +# CONFIG_FEATURE_LESS_FLAGS is not set +# CONFIG_FEATURE_LESS_TRUNCATE is not set +# CONFIG_FEATURE_LESS_MARKS is not set +# CONFIG_FEATURE_LESS_REGEXP is not set +# CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_FEATURE_LESS_DASHCMD is not set +# CONFIG_FEATURE_LESS_LINENUMS is not set +CONFIG_LSSCSI=y +# CONFIG_MAKEDEVS is not set +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +# CONFIG_FEATURE_MAKEDEVS_TABLE is not set +# CONFIG_MAN is not set +# CONFIG_MICROCOM is not set +# CONFIG_MT is not set +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +CONFIG_PARTPROBE=y +# CONFIG_RAIDAUTORUN is not set +# CONFIG_READAHEAD is not set +# CONFIG_RFKILL is not set +# CONFIG_RUNLEVEL is not set +# CONFIG_RX is not set +CONFIG_SETSERIAL=y +# CONFIG_STRINGS is not set +# CONFIG_TIME is not set +# CONFIG_TTYSIZE is not set +# CONFIG_UBIRENAME is not set +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +# CONFIG_VOLNAME is not set +# CONFIG_WATCHDOG is not set + +# +# Networking Utilities +# +# CONFIG_FEATURE_IPV6 is not set +# CONFIG_FEATURE_UNIX_LOCAL is not set +# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +# CONFIG_ARP is not set +# CONFIG_ARPING is not set +# CONFIG_BRCTL is not set +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +# CONFIG_DNSD is not set +# CONFIG_ETHER_WAKE is not set +# CONFIG_FTPD is not set +# CONFIG_FEATURE_FTPD_WRITE is not set +# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y +CONFIG_DNSDOMAINNAME=y +# CONFIG_HTTPD is not set +# CONFIG_FEATURE_HTTPD_RANGES is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_FEATURE_HTTPD_PROXY is not set +# CONFIG_FEATURE_HTTPD_GZIP is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +# CONFIG_FEATURE_IFCONFIG_SLIP is not set +# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set +CONFIG_FEATURE_IFCONFIG_HW=y +CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y +# CONFIG_IFENSLAVE is not set +# CONFIG_IFPLUGD is not set +CONFIG_IFUP=y +CONFIG_IFDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +CONFIG_FEATURE_IFUPDOWN_IPV4=y +# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set +# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set +CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y +# CONFIG_INETD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +# CONFIG_IPTUNNEL is not set +# CONFIG_IPRULE is not set +# CONFIG_IPNEIGH is not set +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +# CONFIG_FEATURE_IP_TUNNEL is not set +# CONFIG_FEATURE_IP_RULE is not set +# CONFIG_FEATURE_IP_NEIGH is not set +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FAKEIDENTD is not set +# CONFIG_NAMEIF is not set +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_NBDCLIENT is not set +CONFIG_NC=y +CONFIG_NC_SERVER=y +# CONFIG_NC_EXTRA is not set +# CONFIG_NC_110_COMPAT is not set +CONFIG_NETSTAT=y +# CONFIG_FEATURE_NETSTAT_WIDE is not set +CONFIG_FEATURE_NETSTAT_PRG=y +# CONFIG_NSLOOKUP is not set +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +# CONFIG_FEATURE_NTPD_CONF is not set +CONFIG_PING=y +# CONFIG_PING6 is not set +# CONFIG_FEATURE_FANCY_PING is not set +# CONFIG_PSCAN is not set +CONFIG_ROUTE=y +# CONFIG_SLATTACH is not set +# CONFIG_SSL_CLIENT is not set +# CONFIG_TCPSVD is not set +# CONFIG_UDPSVD is not set +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_FEATURE_TELNET_WIDTH=y +# CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_STANDALONE is not set +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +# CONFIG_TFTP is not set +# CONFIG_TFTPD is not set +# CONFIG_FEATURE_TFTP_GET is not set +# CONFIG_FEATURE_TFTP_PUT is not set +# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set +# CONFIG_TFTP_DEBUG is not set +# CONFIG_TLS is not set +# CONFIG_TRACEROUTE is not set +# CONFIG_TRACEROUTE6 is not set +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_TUNCTL is not set +# CONFIG_FEATURE_TUNCTL_UG is not set +# CONFIG_VCONFIG is not set +CONFIG_WGET=y +# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set +# CONFIG_FEATURE_WGET_STATUSBAR is not set +# CONFIG_FEATURE_WGET_AUTHENTICATION is not set +# CONFIG_FEATURE_WGET_TIMEOUT is not set +# CONFIG_FEATURE_WGET_HTTPS is not set +# CONFIG_FEATURE_WGET_OPENSSL is not set +# CONFIG_WHOIS is not set +# CONFIG_ZCIP is not set +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set +# CONFIG_UDHCPD is not set +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +CONFIG_DHCPD_LEASES_FILE="" +# CONFIG_DUMPLEASES is not set +# CONFIG_DHCPRELAY is not set +CONFIG_UDHCPC=y +# CONFIG_FEATURE_UDHCPC_ARPING is not set +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=9 +# CONFIG_FEATURE_UDHCP_RFC3397 is not set +# CONFIG_FEATURE_UDHCP_8021Q is not set +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" + +# +# Print Utilities +# +# CONFIG_LPD is not set +# CONFIG_LPR is not set +# CONFIG_LPQ is not set + +# +# Mail Utilities +# +# CONFIG_MAKEMIME is not set +# CONFIG_POPMAILDIR is not set +# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_REFORMIME is not set +# CONFIG_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_SENDMAIL is not set +CONFIG_FEATURE_MIME_CHARSET="" + +# +# Process Utilities +# +# CONFIG_FREE is not set +# CONFIG_FUSER is not set +# CONFIG_IOSTAT is not set +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +# CONFIG_LSOF is not set +# CONFIG_MPSTAT is not set +# CONFIG_NMETER is not set +# CONFIG_PGREP is not set +# CONFIG_PKILL is not set +# CONFIG_PIDOF is not set +# CONFIG_FEATURE_PIDOF_SINGLE is not set +# CONFIG_FEATURE_PIDOF_OMIT is not set +# CONFIG_PMAP is not set +# CONFIG_POWERTOP is not set +# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set +CONFIG_PS=y +CONFIG_FEATURE_PS_WIDE=y +CONFIG_FEATURE_PS_LONG=y +# CONFIG_FEATURE_PS_TIME is not set +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +# CONFIG_BB_SYSCTL is not set +# CONFIG_TOP is not set +# CONFIG_FEATURE_TOP_INTERACTIVE is not set +# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set +# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set +# CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_FEATURE_TOPMEM is not set +# CONFIG_UPTIME is not set +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +# CONFIG_WATCH is not set +# CONFIG_FEATURE_SHOW_THREADS is not set + +# +# Runit Utilities +# +# CONFIG_CHPST is not set +# CONFIG_SETUIDGID is not set +# CONFIG_ENVUIDGID is not set +# CONFIG_ENVDIR is not set +# CONFIG_SOFTLIMIT is not set +# CONFIG_RUNSV is not set +# CONFIG_RUNSVDIR is not set +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_SV is not set +CONFIG_SV_DEFAULT_SERVICE_DIR="" +CONFIG_SVC=y +# CONFIG_SVLOGD is not set +# CONFIG_CHCON is not set +# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RUNCON is not set +# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set +# CONFIG_SETSEBOOL is not set + +# +# Shells +# +# CONFIG_SH_IS_ASH is not set +CONFIG_SH_IS_HUSH=y +# CONFIG_SH_IS_NONE is not set +# CONFIG_BASH_IS_ASH is not set +# CONFIG_BASH_IS_HUSH is not set +CONFIG_BASH_IS_NONE=y +# CONFIG_ASH is not set +# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set +# CONFIG_ASH_INTERNAL_GLOB is not set +# CONFIG_ASH_BASH_COMPAT is not set +# CONFIG_ASH_JOB_CONTROL is not set +# CONFIG_ASH_ALIAS is not set +# CONFIG_ASH_RANDOM_SUPPORT is not set +# CONFIG_ASH_EXPAND_PRMT is not set +# CONFIG_ASH_IDLE_TIMEOUT is not set +# CONFIG_ASH_MAIL is not set +# CONFIG_ASH_ECHO is not set +# CONFIG_ASH_PRINTF is not set +# CONFIG_ASH_TEST is not set +# CONFIG_ASH_HELP is not set +# CONFIG_ASH_GETOPTS is not set +# CONFIG_ASH_CMDCMD is not set +# CONFIG_CTTYHACK is not set +CONFIG_HUSH=y +CONFIG_HUSH_BASH_COMPAT=y +CONFIG_HUSH_BRACE_EXPANSION=y +CONFIG_HUSH_INTERACTIVE=y +CONFIG_HUSH_SAVEHISTORY=y +CONFIG_HUSH_JOB=y +CONFIG_HUSH_TICK=y +CONFIG_HUSH_IF=y +CONFIG_HUSH_LOOPS=y +CONFIG_HUSH_CASE=y +CONFIG_HUSH_FUNCTIONS=y +CONFIG_HUSH_LOCAL=y +CONFIG_HUSH_RANDOM_SUPPORT=y +CONFIG_HUSH_MODE_X=y +CONFIG_HUSH_ECHO=y +CONFIG_HUSH_PRINTF=y +CONFIG_HUSH_TEST=y +CONFIG_HUSH_HELP=y +CONFIG_HUSH_EXPORT=y +CONFIG_HUSH_EXPORT_N=y +CONFIG_HUSH_KILL=y +CONFIG_HUSH_WAIT=y +CONFIG_HUSH_TRAP=y +CONFIG_HUSH_TYPE=y +CONFIG_HUSH_READ=y +CONFIG_HUSH_SET=y +CONFIG_HUSH_UNSET=y +CONFIG_HUSH_ULIMIT=y +CONFIG_HUSH_UMASK=y +# CONFIG_HUSH_MEMLEAK is not set +# CONFIG_MSH is not set + +# +# Options common to all shells +# +CONFIG_FEATURE_SH_MATH=y +CONFIG_FEATURE_SH_MATH_64=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +# CONFIG_FEATURE_SH_HISTFILESIZE is not set + +# +# System Logging Utilities +# +# CONFIG_KLOGD is not set +# CONFIG_FEATURE_KLOGD_KLOGCTL is not set +# CONFIG_LOGGER is not set +# CONFIG_LOGREAD is not set +# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set +# CONFIG_SYSLOGD is not set +# CONFIG_FEATURE_ROTATE_LOGFILE is not set +# CONFIG_FEATURE_REMOTE_LOG is not set +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0 +# CONFIG_FEATURE_IPC_SYSLOG is not set +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_FEATURE_KMSG_SYSLOG is not set diff --git a/buildroot/package/busybox/busybox.config b/buildroot/package/busybox/busybox.config new file mode 100644 index 0000000..7753a86 --- /dev/null +++ b/buildroot/package/busybox/busybox.config @@ -0,0 +1,1134 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.27.1 +# Sun Jul 30 15:27:03 2017 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Busybox Settings +# +CONFIG_DESKTOP=y +# CONFIG_EXTRA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +# CONFIG_USE_PORTABLE_CODE is not set +CONFIG_SHOW_USAGE=y +CONFIG_FEATURE_VERBOSE_USAGE=y +# CONFIG_FEATURE_COMPRESS_USAGE is not set +CONFIG_BUSYBOX=y +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set +# CONFIG_PAM is not set +CONFIG_LONG_OPTS=y +CONFIG_FEATURE_DEVPTS=y +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +# CONFIG_FEATURE_PIDFILE is not set +CONFIG_PID_FILE_PATH="" +CONFIG_FEATURE_SUID=y +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +CONFIG_FEATURE_SYSLOG=y +# CONFIG_FEATURE_HAVE_RPC is not set +CONFIG_PLATFORM_LINUX=y + +# +# Build Options +# +# CONFIG_STATIC is not set +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_LFS=y +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Busybox Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set +CONFIG_FEATURE_RTMINMAX=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=1 +# CONFIG_FEATURE_FAST_TOP is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=999 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +CONFIG_FEATURE_REVERSE_SEARCH=y +CONFIG_FEATURE_TAB_COMPLETION=y +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +# CONFIG_LOCALE_SUPPORT is not set +# CONFIG_UNICODE_SUPPORT is not set +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=0 +CONFIG_LAST_SUPPORTED_WCHAR=0 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set +CONFIG_FEATURE_NON_POSIX_CP=y +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_FEATURE_SKIP_ROOTFS=y +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_HWIB=y + +# +# Applets +# + +# +# Archival Utilities +# +# CONFIG_FEATURE_SEAMLESS_XZ is not set +# CONFIG_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_FEATURE_SEAMLESS_BZ2 is not set +# CONFIG_FEATURE_SEAMLESS_GZ is not set +# CONFIG_FEATURE_SEAMLESS_Z is not set +CONFIG_AR=y +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +CONFIG_FEATURE_AR_CREATE=y +# CONFIG_UNCOMPRESS is not set +CONFIG_GUNZIP=y +CONFIG_ZCAT=y +CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y +CONFIG_BUNZIP2=y +CONFIG_BZCAT=y +CONFIG_UNLZMA=y +CONFIG_LZCAT=y +CONFIG_LZMA=y +# CONFIG_FEATURE_LZMA_FAST is not set +CONFIG_UNXZ=y +CONFIG_XZCAT=y +CONFIG_XZ=y +# CONFIG_BZIP2 is not set +CONFIG_FEATURE_BZIP2_DECOMPRESS=y +CONFIG_CPIO=y +# CONFIG_FEATURE_CPIO_O is not set +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +CONFIG_GZIP=y +# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_GZIP_FAST=0 +# CONFIG_FEATURE_GZIP_LEVELS is not set +CONFIG_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_LZOP is not set +CONFIG_UNLZOP=y +CONFIG_LZOPCAT=y +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM2CPIO is not set +# CONFIG_RPM is not set +CONFIG_TAR=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +CONFIG_FEATURE_TAR_CREATE=y +# CONFIG_FEATURE_TAR_AUTODETECT is not set +CONFIG_FEATURE_TAR_FROM=y +# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +CONFIG_FEATURE_TAR_TO_COMMAND=y +# CONFIG_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_FEATURE_TAR_SELINUX is not set +CONFIG_UNZIP=y +CONFIG_FEATURE_UNZIP_CDF=y +CONFIG_FEATURE_UNZIP_BZIP2=y +CONFIG_FEATURE_UNZIP_LZMA=y +CONFIG_FEATURE_UNZIP_XZ=y + +# +# Coreutils +# +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_FEATURE_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +CONFIG_CHROOT=y +CONFIG_CKSUM=y +# CONFIG_COMM is not set +CONFIG_CP=y +# CONFIG_FEATURE_CP_LONG_OPTIONS is not set +CONFIG_CUT=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_FEATURE_DD_STATUS=y +CONFIG_DF=y +# CONFIG_FEATURE_DF_FANCY is not set +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set +# CONFIG_EXPAND is not set +# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set +# CONFIG_UNEXPAND is not set +# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FACTOR=y +CONFIG_FALSE=y +CONFIG_FOLD=y +# CONFIG_FSYNC is not set +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_HOSTID=y +CONFIG_ID=y +# CONFIG_GROUPS is not set +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LINK=y +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_WIDTH=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_MD5SUM=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_MKDIR=y +CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +CONFIG_MKTEMP=y +CONFIG_MV=y +CONFIG_FEATURE_MV_LONG_OPTIONS=y +CONFIG_NICE=y +CONFIG_NL=y +CONFIG_NOHUP=y +CONFIG_NPROC=y +CONFIG_OD=y +CONFIG_PASTE=y +CONFIG_PRINTENV=y +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set +CONFIG_SEQ=y +CONFIG_SHRED=y +# CONFIG_SHUF is not set +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_FEATURE_FLOAT_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +# CONFIG_SPLIT is not set +# CONFIG_FEATURE_SPLIT_FANCY is not set +# CONFIG_STAT is not set +# CONFIG_FEATURE_STAT_FORMAT is not set +# CONFIG_FEATURE_STAT_FILESYSTEM is not set +CONFIG_STTY=y +# CONFIG_SUM is not set +CONFIG_SYNC=y +# CONFIG_FEATURE_SYNC_FANCY is not set +# CONFIG_TAC is not set +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y +CONFIG_TEST1=y +CONFIG_TEST2=y +CONFIG_FEATURE_TEST_64=y +# CONFIG_TIMEOUT is not set +CONFIG_TOUCH=y +# CONFIG_FEATURE_TOUCH_NODEREF is not set +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_TRUE=y +CONFIG_TRUNCATE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" +CONFIG_UNIQ=y +CONFIG_UNLINK=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +# CONFIG_BASE64 is not set +CONFIG_UUENCODE=y +CONFIG_WC=y +# CONFIG_FEATURE_WC_LARGE is not set +CONFIG_WHOAMI=y +CONFIG_WHO=y +CONFIG_W=y +# CONFIG_USERS is not set +CONFIG_YES=y + +# +# Common options +# +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Console Utilities +# +CONFIG_CHVT=y +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +CONFIG_DUMPKMAP=y +# CONFIG_FGCONSOLE is not set +# CONFIG_KBD_MODE is not set +CONFIG_LOADFONT=y +# CONFIG_SETFONT is not set +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" + +# +# Common options for loadfont and setfont +# +CONFIG_FEATURE_LOADFONT_PSF2=y +CONFIG_FEATURE_LOADFONT_RAW=y +CONFIG_LOADKMAP=y +CONFIG_OPENVT=y +CONFIG_RESET=y +CONFIG_RESIZE=y +CONFIG_FEATURE_RESIZE_PRINT=y +CONFIG_SETCONSOLE=y +# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +CONFIG_SETKEYCODES=y +CONFIG_SETLOGCONS=y +# CONFIG_SHOWKEY is not set + +# +# Debian Utilities +# +CONFIG_PIPE_PROGRESS=y +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +# CONFIG_FEATURE_RUN_PARTS_FANCY is not set +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_WHICH=y + +# +# Editors +# +CONFIG_AWK=y +# CONFIG_FEATURE_AWK_LIBM is not set +CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_CMP=y +CONFIG_DIFF=y +# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +CONFIG_FEATURE_DIFF_DIR=y +# CONFIG_ED is not set +CONFIG_PATCH=y +CONFIG_SED=y +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=4096 +CONFIG_FEATURE_VI_8BIT=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_FEATURE_VI_READONLY=y +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_ASK_TERMINAL=y +CONFIG_FEATURE_VI_UNDO=y +CONFIG_FEATURE_VI_UNDO_QUEUE=y +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 +CONFIG_FEATURE_ALLOW_EXEC=y + +# +# Finding Utilities +# +CONFIG_FIND=y +CONFIG_FEATURE_FIND_PRINT0=y +CONFIG_FEATURE_FIND_MTIME=y +CONFIG_FEATURE_FIND_MMIN=y +CONFIG_FEATURE_FIND_PERM=y +CONFIG_FEATURE_FIND_TYPE=y +CONFIG_FEATURE_FIND_XDEV=y +CONFIG_FEATURE_FIND_MAXDEPTH=y +CONFIG_FEATURE_FIND_NEWER=y +# CONFIG_FEATURE_FIND_INUM is not set +CONFIG_FEATURE_FIND_EXEC=y +CONFIG_FEATURE_FIND_EXEC_PLUS=y +CONFIG_FEATURE_FIND_USER=y +CONFIG_FEATURE_FIND_GROUP=y +CONFIG_FEATURE_FIND_NOT=y +CONFIG_FEATURE_FIND_DEPTH=y +CONFIG_FEATURE_FIND_PAREN=y +CONFIG_FEATURE_FIND_SIZE=y +CONFIG_FEATURE_FIND_PRUNE=y +# CONFIG_FEATURE_FIND_DELETE is not set +CONFIG_FEATURE_FIND_PATH=y +CONFIG_FEATURE_FIND_REGEX=y +# CONFIG_FEATURE_FIND_CONTEXT is not set +# CONFIG_FEATURE_FIND_LINKS is not set +CONFIG_GREP=y +CONFIG_EGREP=y +CONFIG_FGREP=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +CONFIG_HALT=y +CONFIG_POWEROFF=y +CONFIG_REBOOT=y +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_LINUXRC=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_KILL_REMOVED=y +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_INIT_QUIET=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set +CONFIG_USE_BB_CRYPT=y +# CONFIG_USE_BB_CRYPT_SHA is not set +CONFIG_ADDGROUP=y +# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +CONFIG_ADDUSER=y +# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_LAST_ID=60000 +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +# CONFIG_CHPASSWD is not set +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="md5" +# CONFIG_CRYPTPW is not set +CONFIG_MKPASSWD=y +CONFIG_DELUSER=y +CONFIG_DELGROUP=y +# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_LOGIN_SCRIPTS is not set +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +CONFIG_SU=y +CONFIG_FEATURE_SU_SYSLOG=y +CONFIG_FEATURE_SU_CHECKS_SHELLS=y +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +CONFIG_SULOGIN=y +CONFIG_VLOCK=y + +# +# Linux Ext2 FS Progs +# +CONFIG_CHATTR=y +CONFIG_FSCK=y +CONFIG_LSATTR=y +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_DEPMOD is not set +CONFIG_INSMOD=y +CONFIG_LSMOD=y +CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y +# CONFIG_MODINFO is not set +CONFIG_MODPROBE=y +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +CONFIG_RMMOD=y + +# +# Options common to multiple modutils +# +CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +CONFIG_FEATURE_CHECK_TAINTED_MODULE=y +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +CONFIG_FEATURE_MODUTILS_ALIAS=y +CONFIG_FEATURE_MODUTILS_SYMBOLS=y +CONFIG_DEFAULT_MODULES_DIR="/lib/modules" +CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" + +# +# Linux System Utilities +# +# CONFIG_ACPID is not set +# CONFIG_FEATURE_ACPID_COMPAT is not set +# CONFIG_BLKDISCARD is not set +CONFIG_BLKID=y +# CONFIG_FEATURE_BLKID_TYPE is not set +# CONFIG_BLOCKDEV is not set +# CONFIG_CAL is not set +CONFIG_CHRT=y +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +CONFIG_EJECT=y +# CONFIG_FEATURE_EJECT_SCSI is not set +CONFIG_FALLOCATE=y +# CONFIG_FATATTR is not set +CONFIG_FBSET=y +CONFIG_FEATURE_FBSET_FANCY=y +CONFIG_FEATURE_FBSET_READMODE=y +CONFIG_FDFORMAT=y +CONFIG_FDISK=y +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +CONFIG_FEATURE_FDISK_WRITABLE=y +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +CONFIG_FEATURE_GPT_LABEL=y +CONFIG_FEATURE_FDISK_ADVANCED=y +# CONFIG_FINDFS is not set +CONFIG_FLOCK=y +CONFIG_FDFLUSH=y +CONFIG_FREERAMDISK=y +# CONFIG_FSCK_MINIX is not set +CONFIG_FSFREEZE=y +CONFIG_FSTRIM=y +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +CONFIG_HEXDUMP=y +# CONFIG_FEATURE_HEXDUMP_REVERSE is not set +# CONFIG_HD is not set +CONFIG_XXD=y +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +# CONFIG_IONICE is not set +CONFIG_IPCRM=y +CONFIG_IPCS=y +CONFIG_LAST=y +# CONFIG_FEATURE_LAST_FANCY is not set +CONFIG_LOSETUP=y +CONFIG_LSPCI=y +CONFIG_LSUSB=y +CONFIG_MDEV=y +CONFIG_FEATURE_MDEV_CONF=y +CONFIG_FEATURE_MDEV_RENAME=y +# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set +CONFIG_FEATURE_MDEV_EXEC=y +# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +CONFIG_MKE2FS=y +# CONFIG_MKFS_EXT2 is not set +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +# CONFIG_MKFS_REISER is not set +CONFIG_MKDOSFS=y +# CONFIG_MKFS_VFAT is not set +CONFIG_MKSWAP=y +# CONFIG_FEATURE_MKSWAP_UUID is not set +CONFIG_MORE=y +CONFIG_MOUNT=y +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_FEATURE_MOUNT_OTHERTAB=y +CONFIG_MOUNTPOINT=y +# CONFIG_NSENTER is not set +# CONFIG_FEATURE_NSENTER_LONG_OPTS is not set +CONFIG_PIVOT_ROOT=y +CONFIG_RDATE=y +# CONFIG_RDEV is not set +CONFIG_READPROFILE=y +CONFIG_RENICE=y +# CONFIG_REV is not set +# CONFIG_RTCWAKE is not set +# CONFIG_SCRIPT is not set +# CONFIG_SCRIPTREPLAY is not set +CONFIG_SETARCH=y +CONFIG_LINUX32=y +CONFIG_LINUX64=y +CONFIG_SETPRIV=y +CONFIG_SETSID=y +CONFIG_SWAPON=y +# CONFIG_FEATURE_SWAPON_DISCARD is not set +# CONFIG_FEATURE_SWAPON_PRI is not set +CONFIG_SWAPOFF=y +CONFIG_SWITCH_ROOT=y +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +CONFIG_UEVENT=y +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +# CONFIG_UNSHARE is not set +# CONFIG_WALL is not set + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +# CONFIG_FEATURE_MTAB_SUPPORT is not set +CONFIG_VOLUMEID=y + +# +# Filesystem/Volume identification +# +# CONFIG_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +CONFIG_FEATURE_VOLUMEID_EXFAT=y +CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_F2FS=y +CONFIG_FEATURE_VOLUMEID_FAT=y +# CONFIG_FEATURE_VOLUMEID_HFS is not set +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_FEATURE_VOLUMEID_JFS is not set +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set +# CONFIG_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_FEATURE_VOLUMEID_SYSV is not set +CONFIG_FEATURE_VOLUMEID_UBIFS=y +# CONFIG_FEATURE_VOLUMEID_UDF is not set +# CONFIG_FEATURE_VOLUMEID_XFS is not set + +# +# Miscellaneous Utilities +# +# CONFIG_ADJTIMEX is not set +# CONFIG_BBCONFIG is not set +# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set +# CONFIG_BEEP is not set +CONFIG_FEATURE_BEEP_FREQ=0 +CONFIG_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_CHAT is not set +# CONFIG_FEATURE_CHAT_NOFAIL is not set +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_CONSPY is not set +CONFIG_CROND=y +# CONFIG_FEATURE_CROND_D is not set +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +CONFIG_FEATURE_CROND_DIR="/var/spool/cron" +CONFIG_CRONTAB=y +CONFIG_DC=y +# CONFIG_FEATURE_DC_LIBM is not set +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +CONFIG_DEVMEM=y +# CONFIG_FBSPLASH is not set +# CONFIG_FLASHCP is not set +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set +# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set +CONFIG_I2CGET=y +CONFIG_I2CSET=y +CONFIG_I2CDUMP=y +CONFIG_I2CDETECT=y +# CONFIG_INOTIFYD is not set +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +CONFIG_FEATURE_LESS_TRUNCATE=y +# CONFIG_FEATURE_LESS_MARKS is not set +CONFIG_FEATURE_LESS_REGEXP=y +# CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_FEATURE_LESS_DASHCMD is not set +# CONFIG_FEATURE_LESS_LINENUMS is not set +CONFIG_LSSCSI=y +CONFIG_MAKEDEVS=y +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +CONFIG_FEATURE_MAKEDEVS_TABLE=y +# CONFIG_MAN is not set +CONFIG_MICROCOM=y +CONFIG_MT=y +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +CONFIG_PARTPROBE=y +# CONFIG_RAIDAUTORUN is not set +# CONFIG_READAHEAD is not set +# CONFIG_RFKILL is not set +CONFIG_RUNLEVEL=y +# CONFIG_RX is not set +CONFIG_SETSERIAL=y +CONFIG_STRINGS=y +CONFIG_TIME=y +# CONFIG_TTYSIZE is not set +CONFIG_UBIRENAME=y +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +# CONFIG_VOLNAME is not set +CONFIG_WATCHDOG=y + +# +# Networking Utilities +# +CONFIG_FEATURE_IPV6=y +# CONFIG_FEATURE_UNIX_LOCAL is not set +CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +CONFIG_ARP=y +CONFIG_ARPING=y +# CONFIG_BRCTL is not set +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +CONFIG_DNSD=y +CONFIG_ETHER_WAKE=y +# CONFIG_FTPD is not set +# CONFIG_FEATURE_FTPD_WRITE is not set +# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +CONFIG_HOSTNAME=y +CONFIG_DNSDOMAINNAME=y +# CONFIG_HTTPD is not set +# CONFIG_FEATURE_HTTPD_RANGES is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_FEATURE_HTTPD_PROXY is not set +# CONFIG_FEATURE_HTTPD_GZIP is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +CONFIG_FEATURE_IFCONFIG_SLIP=y +CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y +CONFIG_FEATURE_IFCONFIG_HW=y +# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set +# CONFIG_IFENSLAVE is not set +# CONFIG_IFPLUGD is not set +CONFIG_IFUP=y +CONFIG_IFDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +CONFIG_FEATURE_IFUPDOWN_IPV4=y +CONFIG_FEATURE_IFUPDOWN_IPV6=y +CONFIG_FEATURE_IFUPDOWN_MAPPING=y +# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set +CONFIG_INETD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +CONFIG_IPTUNNEL=y +CONFIG_IPRULE=y +CONFIG_IPNEIGH=y +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +CONFIG_FEATURE_IP_TUNNEL=y +CONFIG_FEATURE_IP_RULE=y +CONFIG_FEATURE_IP_NEIGH=y +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FAKEIDENTD is not set +CONFIG_NAMEIF=y +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_NBDCLIENT is not set +# CONFIG_NC is not set +# CONFIG_NC_SERVER is not set +# CONFIG_NC_EXTRA is not set +# CONFIG_NC_110_COMPAT is not set +CONFIG_NETSTAT=y +# CONFIG_FEATURE_NETSTAT_WIDE is not set +# CONFIG_FEATURE_NETSTAT_PRG is not set +CONFIG_NSLOOKUP=y +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +# CONFIG_FEATURE_NTPD_CONF is not set +CONFIG_PING=y +# CONFIG_PING6 is not set +CONFIG_FEATURE_FANCY_PING=y +# CONFIG_PSCAN is not set +CONFIG_ROUTE=y +# CONFIG_SLATTACH is not set +# CONFIG_SSL_CLIENT is not set +# CONFIG_TCPSVD is not set +# CONFIG_UDPSVD is not set +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_FEATURE_TELNET_WIDTH=y +# CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_STANDALONE is not set +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +CONFIG_TFTP=y +# CONFIG_TFTPD is not set + +# +# Common options for tftp/tftpd +# +CONFIG_FEATURE_TFTP_GET=y +CONFIG_FEATURE_TFTP_PUT=y +CONFIG_FEATURE_TFTP_BLOCKSIZE=y +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set +# CONFIG_TFTP_DEBUG is not set +# CONFIG_TLS is not set +CONFIG_TRACEROUTE=y +# CONFIG_TRACEROUTE6 is not set +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_TUNCTL is not set +# CONFIG_FEATURE_TUNCTL_UG is not set +CONFIG_VCONFIG=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_TIMEOUT=y +# CONFIG_FEATURE_WGET_HTTPS is not set +# CONFIG_FEATURE_WGET_OPENSSL is not set +# CONFIG_WHOIS is not set +# CONFIG_ZCIP is not set +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set +# CONFIG_UDHCPD is not set +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +CONFIG_DHCPD_LEASES_FILE="" +# CONFIG_DUMPLEASES is not set +# CONFIG_DHCPRELAY is not set +CONFIG_UDHCPC=y +CONFIG_FEATURE_UDHCPC_ARPING=y +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=0 +# CONFIG_FEATURE_UDHCP_RFC3397 is not set +CONFIG_FEATURE_UDHCP_8021Q=y +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" + +# +# Print Utilities +# +# CONFIG_LPD is not set +# CONFIG_LPR is not set +# CONFIG_LPQ is not set + +# +# Mail Utilities +# +# CONFIG_MAKEMIME is not set +# CONFIG_POPMAILDIR is not set +# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_REFORMIME is not set +# CONFIG_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_SENDMAIL is not set +CONFIG_FEATURE_MIME_CHARSET="" + +# +# Process Utilities +# +CONFIG_FREE=y +CONFIG_FUSER=y +# CONFIG_IOSTAT is not set +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +CONFIG_LSOF=y +# CONFIG_MPSTAT is not set +# CONFIG_NMETER is not set +# CONFIG_PGREP is not set +# CONFIG_PKILL is not set +CONFIG_PIDOF=y +CONFIG_FEATURE_PIDOF_SINGLE=y +CONFIG_FEATURE_PIDOF_OMIT=y +# CONFIG_PMAP is not set +# CONFIG_POWERTOP is not set +# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set +CONFIG_PS=y +# CONFIG_FEATURE_PS_WIDE is not set +# CONFIG_FEATURE_PS_LONG is not set +# CONFIG_FEATURE_PS_TIME is not set +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +CONFIG_BB_SYSCTL=y +CONFIG_TOP=y +CONFIG_FEATURE_TOP_INTERACTIVE=y +CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +# CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_FEATURE_TOPMEM is not set +CONFIG_UPTIME=y +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +CONFIG_WATCH=y +# CONFIG_FEATURE_SHOW_THREADS is not set + +# +# Runit Utilities +# +# CONFIG_CHPST is not set +# CONFIG_SETUIDGID is not set +# CONFIG_ENVUIDGID is not set +# CONFIG_ENVDIR is not set +# CONFIG_SOFTLIMIT is not set +# CONFIG_RUNSV is not set +# CONFIG_RUNSVDIR is not set +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_SV is not set +CONFIG_SV_DEFAULT_SERVICE_DIR="" +CONFIG_SVC=y +# CONFIG_SVLOGD is not set +# CONFIG_CHCON is not set +# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RUNCON is not set +# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set +# CONFIG_SETSEBOOL is not set + +# +# Shells +# +CONFIG_SH_IS_ASH=y +# CONFIG_SH_IS_HUSH is not set +# CONFIG_SH_IS_NONE is not set +# CONFIG_BASH_IS_ASH is not set +# CONFIG_BASH_IS_HUSH is not set +CONFIG_BASH_IS_NONE=y +CONFIG_ASH=y +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +CONFIG_ASH_INTERNAL_GLOB=y +CONFIG_ASH_BASH_COMPAT=y +CONFIG_ASH_JOB_CONTROL=y +CONFIG_ASH_ALIAS=y +CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_ASH_EXPAND_PRMT=y +CONFIG_ASH_IDLE_TIMEOUT=y +# CONFIG_ASH_MAIL is not set +CONFIG_ASH_ECHO=y +CONFIG_ASH_PRINTF=y +CONFIG_ASH_TEST=y +CONFIG_ASH_HELP=y +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_CMDCMD=y +# CONFIG_CTTYHACK is not set +# CONFIG_HUSH is not set +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_INTERACTIVE is not set +# CONFIG_HUSH_SAVEHISTORY is not set +# CONFIG_HUSH_JOB is not set +# CONFIG_HUSH_TICK is not set +# CONFIG_HUSH_IF is not set +# CONFIG_HUSH_LOOPS is not set +# CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_LOCAL is not set +# CONFIG_HUSH_RANDOM_SUPPORT is not set +# CONFIG_HUSH_MODE_X is not set +# CONFIG_HUSH_ECHO is not set +# CONFIG_HUSH_PRINTF is not set +# CONFIG_HUSH_TEST is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_EXPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_KILL is not set +# CONFIG_HUSH_WAIT is not set +# CONFIG_HUSH_TRAP is not set +# CONFIG_HUSH_TYPE is not set +# CONFIG_HUSH_READ is not set +# CONFIG_HUSH_SET is not set +# CONFIG_HUSH_UNSET is not set +# CONFIG_HUSH_ULIMIT is not set +# CONFIG_HUSH_UMASK is not set +# CONFIG_HUSH_MEMLEAK is not set +# CONFIG_MSH is not set + +# +# Options common to all shells +# +CONFIG_FEATURE_SH_MATH=y +CONFIG_FEATURE_SH_MATH_64=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +# CONFIG_FEATURE_SH_HISTFILESIZE is not set + +# +# System Logging Utilities +# +CONFIG_KLOGD=y +CONFIG_FEATURE_KLOGD_KLOGCTL=y +CONFIG_LOGGER=y +# CONFIG_LOGREAD is not set +# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y +CONFIG_FEATURE_REMOTE_LOG=y +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 +# CONFIG_FEATURE_IPC_SYSLOG is not set +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_FEATURE_KMSG_SYSLOG is not set diff --git a/buildroot/package/busybox/busybox.hash b/buildroot/package/busybox/busybox.hash new file mode 100644 index 0000000..3e1956d --- /dev/null +++ b/buildroot/package/busybox/busybox.hash @@ -0,0 +1,5 @@ +# From https://busybox.net/downloads/busybox-1.27.2.tar.bz2.sign +md5 476186f4bab81781dab2369bfd42734e busybox-1.27.2.tar.bz2 +sha1 11669e223cc38de646ce26080e91ca29b8d42ad9 busybox-1.27.2.tar.bz2 +# License files, locally calculated +sha256 bbfc9843646d483c334664f651c208b9839626891d8f17604db2146962f43548 LICENSE diff --git a/buildroot/package/busybox/busybox.mk b/buildroot/package/busybox/busybox.mk new file mode 100644 index 0000000..f17c20b --- /dev/null +++ b/buildroot/package/busybox/busybox.mk @@ -0,0 +1,316 @@ +################################################################################ +# +# busybox +# +################################################################################ + +BUSYBOX_VERSION = 1.27.2 +BUSYBOX_SITE = http://www.busybox.net/downloads +BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2 +BUSYBOX_LICENSE = GPL-2.0 +BUSYBOX_LICENSE_FILES = LICENSE + +define BUSYBOX_HELP_CMDS + @echo ' busybox-menuconfig - Run BusyBox menuconfig' +endef + +BUSYBOX_CFLAGS = \ + $(TARGET_CFLAGS) + +BUSYBOX_LDFLAGS = \ + $(TARGET_LDFLAGS) + +# Link against libtirpc if available so that we can leverage its RPC +# support for NFS mounting with BusyBox +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +BUSYBOX_DEPENDENCIES += libtirpc host-pkgconf +BUSYBOX_CFLAGS += "`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" +# Don't use LDFLAGS for -ltirpc, because LDFLAGS is used for +# the non-final link of modules as well. +BUSYBOX_CFLAGS_busybox += "`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" +endif + +BUSYBOX_BUILD_CONFIG = $(BUSYBOX_DIR)/.config +# Allows the build system to tweak CFLAGS +BUSYBOX_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + CFLAGS="$(BUSYBOX_CFLAGS)" \ + CFLAGS_busybox="$(BUSYBOX_CFLAGS_busybox)" + +ifeq ($(BR2_REPRODUCIBLE),y) +BUSYBOX_MAKE_ENV += \ + KCONFIG_NOTIMESTAMP=1 +endif + +BUSYBOX_MAKE_OPTS = \ + CC="$(TARGET_CC)" \ + ARCH=$(KERNEL_ARCH) \ + PREFIX="$(TARGET_DIR)" \ + EXTRA_LDFLAGS="$(BUSYBOX_LDFLAGS)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + CONFIG_PREFIX="$(TARGET_DIR)" \ + SKIP_STRIP=y + +ifndef BUSYBOX_CONFIG_FILE +BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)) +endif + +BUSYBOX_KCONFIG_FILE = $(BUSYBOX_CONFIG_FILE) +BUSYBOX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES)) +BUSYBOX_KCONFIG_EDITORS = menuconfig xconfig gconfig +BUSYBOX_KCONFIG_OPTS = $(BUSYBOX_MAKE_OPTS) + +ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y) +define BUSYBOX_PERMISSIONS +# Set permissions on all applets with BB_SUID_REQUIRE and BB_SUID_MAYBE. +# 12 Applets are pulled from applets.h using grep command : +# grep -r -e "APPLET.*BB_SUID_REQUIRE\|APPLET.*BB_SUID_MAYBE" \ +# $(@D)/include/applets.h +# These applets are added to the device table and the makedev file +# ignores the files with type 'F' ( optional files). + /usr/bin/wall F 4755 0 0 - - - - - + /bin/ping F 4755 0 0 - - - - - + /bin/ping6 F 4755 0 0 - - - - - + /usr/bin/crontab F 4755 0 0 - - - - - + /sbin/findfs F 4755 0 0 - - - - - + /bin/login F 4755 0 0 - - - - - + /bin/mount F 4755 0 0 - - - - - + /usr/bin/passwd F 4755 0 0 - - - - - + /bin/su F 4755 0 0 - - - - - + /usr/bin/traceroute F 4755 0 0 - - - - - + /usr/bin/traceroute6 F 4755 0 0 - - - - - + /usr/bin/vlock F 4755 0 0 - - - - - +endef +else +define BUSYBOX_PERMISSIONS + /bin/busybox f 4755 0 0 - - - - - +endef +endif + +# If mdev will be used for device creation enable it and copy S10mdev to /etc/init.d +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV),y) +define BUSYBOX_INSTALL_MDEV_SCRIPT + $(INSTALL) -D -m 0755 package/busybox/S10mdev \ + $(TARGET_DIR)/etc/init.d/S10mdev +endef +define BUSYBOX_INSTALL_MDEV_CONF + $(INSTALL) -D -m 0644 package/busybox/mdev.conf \ + $(TARGET_DIR)/etc/mdev.conf +endef +define BUSYBOX_SET_MDEV + $(call KCONFIG_ENABLE_OPT,CONFIG_MDEV,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_CONF,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_EXEC,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_MDEV_LOAD_FIRMWARE,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +# sha passwords need USE_BB_CRYPT_SHA +ifeq ($(BR2_TARGET_GENERIC_PASSWD_SHA256)$(BR2_TARGET_GENERIC_PASSWD_SHA512),y) +define BUSYBOX_SET_CRYPT_SHA + $(call KCONFIG_ENABLE_OPT,CONFIG_USE_BB_CRYPT_SHA,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +ifeq ($(BR2_USE_MMU),y) +define BUSYBOX_SET_MMU + $(call KCONFIG_DISABLE_OPT,CONFIG_NOMMU,$(BUSYBOX_BUILD_CONFIG)) +endef +else +define BUSYBOX_SET_MMU + $(call KCONFIG_ENABLE_OPT,CONFIG_NOMMU,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_DISABLE_OPT,CONFIG_SWAPON,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_DISABLE_OPT,CONFIG_SWAPOFF,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_DISABLE_OPT,CONFIG_ASH,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BASH_COMPAT,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_BRACE_EXPANSION,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_HELP,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_INTERACTIVE,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_SAVEHISTORY,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_JOB,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_TICK,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_IF,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOOPS,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_CASE,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_FUNCTIONS,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_LOCAL,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_RANDOM_SUPPORT,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_EXPORT_N,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_HUSH_MODE_X,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +# If we're using static libs do the same for busybox +ifeq ($(BR2_STATIC_LIBS),y) +define BUSYBOX_PREFER_STATIC + $(call KCONFIG_ENABLE_OPT,CONFIG_STATIC,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +# Disable shadow passwords support if unsupported by the C library +ifeq ($(BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS),) +define BUSYBOX_INTERNAL_SHADOW_PASSWORDS + $(call KCONFIG_ENABLE_OPT,CONFIG_USE_BB_PWD_GRP,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_USE_BB_SHADOW,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +# We also need to use internal shadow password functions when using +# the musl C library, since some of them are not yet implemented by +# musl. +# +# Do not use utmp/wmtp support. wmtp support is not available in musl, +# and utmp support is not sufficient for Busybox. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +define BUSYBOX_MUSL_TWEAKS + $(call KCONFIG_ENABLE_OPT,CONFIG_USE_BB_PWD_GRP,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_USE_BB_SHADOW,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_DISABLE_OPT,CONFIG_FEATURE_UTMP,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_DISABLE_OPT,CONFIG_FEATURE_WTMP,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +define BUSYBOX_INSTALL_UDHCPC_SCRIPT + if grep -q CONFIG_UDHCPC=y $(@D)/.config; then \ + $(INSTALL) -m 0755 -D package/busybox/udhcpc.script \ + $(TARGET_DIR)/usr/share/udhcpc/default.script; \ + $(INSTALL) -m 0755 -d \ + $(TARGET_DIR)/usr/share/udhcpc/default.script.d; \ + fi +endef + +ifeq ($(BR2_INIT_BUSYBOX),y) + +define BUSYBOX_SET_INIT + $(call KCONFIG_ENABLE_OPT,CONFIG_INIT,$(BUSYBOX_BUILD_CONFIG)) +endef + +ifeq ($(BR2_TARGET_GENERIC_GETTY),y) +define BUSYBOX_SET_GETTY + $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(SYSTEM_GETTY_PORT)::respawn:/sbin/getty -L $(SYSTEM_GETTY_OPTIONS) $(SYSTEM_GETTY_PORT) $(SYSTEM_GETTY_BAUDRATE) $(SYSTEM_GETTY_TERM) #~' \ + $(TARGET_DIR)/etc/inittab +endef +BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_SET_GETTY +endif # BR2_TARGET_GENERIC_GETTY + +BUSYBOX_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB + +endif # BR2_INIT_BUSYBOX + +ifeq ($(BR2_PACKAGE_BUSYBOX_SELINUX),y) +BUSYBOX_DEPENDENCIES += host-pkgconf libselinux libsepol +define BUSYBOX_SET_SELINUX + $(call KCONFIG_ENABLE_OPT,CONFIG_SELINUX,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_SELINUXENABLED,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y) +define BUSYBOX_SET_INDIVIDUAL_BINARIES + $(call KCONFIG_ENABLE_OPT,CONFIG_BUILD_LIBBUSYBOX,$(BUSYBOX_BUILD_CONFIG)) + $(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_INDIVIDUAL,$(BUSYBOX_BUILD_CONFIG)) +endef + +define BUSYBOX_INSTALL_INDIVIDUAL_BINARIES + rm -f $(TARGET_DIR)/bin/busybox +endef +endif + +define BUSYBOX_INSTALL_LOGGING_SCRIPT + if grep -q CONFIG_SYSLOGD=y $(@D)/.config; then \ + $(INSTALL) -m 0755 -D package/busybox/S01logging \ + $(TARGET_DIR)/etc/init.d/S01logging; \ + fi +endef + +ifeq ($(BR2_INIT_BUSYBOX),y) +define BUSYBOX_INSTALL_INITTAB + $(INSTALL) -D -m 0644 package/busybox/inittab $(TARGET_DIR)/etc/inittab +endef +endif + +ifeq ($(BR2_PACKAGE_BUSYBOX_WATCHDOG),y) +define BUSYBOX_SET_WATCHDOG + $(call KCONFIG_ENABLE_OPT,CONFIG_WATCHDOG,$(BUSYBOX_BUILD_CONFIG)) +endef +define BUSYBOX_INSTALL_WATCHDOG_SCRIPT + $(INSTALL) -D -m 0755 package/busybox/S15watchdog \ + $(TARGET_DIR)/etc/init.d/S15watchdog + $(SED) s/PERIOD/$(call qstrip,$(BR2_PACKAGE_BUSYBOX_WATCHDOG_PERIOD))/ \ + $(TARGET_DIR)/etc/init.d/S15watchdog +endef +endif + +# PAM support requires thread support in the toolchain +ifeq ($(BR2_PACKAGE_LINUX_PAM)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +define BUSYBOX_LINUX_PAM + $(call KCONFIG_ENABLE_OPT,CONFIG_PAM,$(BUSYBOX_BUILD_CONFIG)) +endef +BUSYBOX_DEPENDENCIES += linux-pam +else +define BUSYBOX_LINUX_PAM + $(call KCONFIG_DISABLE_OPT,CONFIG_PAM,$(BUSYBOX_BUILD_CONFIG)) +endef +endif + +# Telnet support +define BUSYBOX_INSTALL_TELNET_SCRIPT + if grep -q CONFIG_FEATURE_TELNETD_STANDALONE=y $(@D)/.config; then \ + $(INSTALL) -m 0755 -D package/busybox/S50telnet \ + $(TARGET_DIR)/etc/init.d/S50telnet ; \ + fi +endef + +# Enable "noclobber" in install.sh, to prevent BusyBox from overwriting any +# full-blown versions of apps installed by other packages with sym/hard links. +define BUSYBOX_NOCLOBBER_INSTALL + $(SED) 's/^noclobber="0"$$/noclobber="1"/' $(@D)/applets/install.sh +endef + +define BUSYBOX_KCONFIG_FIXUP_CMDS + $(BUSYBOX_SET_MMU) + $(BUSYBOX_PREFER_STATIC) + $(BUSYBOX_SET_MDEV) + $(BUSYBOX_SET_CRYPT_SHA) + $(BUSYBOX_LINUX_PAM) + $(BUSYBOX_INTERNAL_SHADOW_PASSWORDS) + $(BUSYBOX_SET_INIT) + $(BUSYBOX_SET_WATCHDOG) + $(BUSYBOX_SET_SELINUX) + $(BUSYBOX_SET_INDIVIDUAL_BINARIES) + $(BUSYBOX_MUSL_TWEAKS) +endef + +define BUSYBOX_CONFIGURE_CMDS + $(BUSYBOX_NOCLOBBER_INSTALL) +endef + +define BUSYBOX_BUILD_CMDS + $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) +endef + +define BUSYBOX_INSTALL_TARGET_CMDS + $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) install + $(BUSYBOX_INSTALL_INITTAB) + $(BUSYBOX_INSTALL_UDHCPC_SCRIPT) + $(BUSYBOX_INSTALL_MDEV_CONF) +endef + +define BUSYBOX_INSTALL_INIT_SYSV + $(BUSYBOX_INSTALL_MDEV_SCRIPT) + $(BUSYBOX_INSTALL_LOGGING_SCRIPT) + $(BUSYBOX_INSTALL_WATCHDOG_SCRIPT) + $(BUSYBOX_INSTALL_TELNET_SCRIPT) + $(BUSYBOX_INSTALL_INDIVIDUAL_BINARIES) +endef + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR2_PACKAGE_BUSYBOX)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG)),) +$(error No BusyBox configuration file specified, check your BR2_PACKAGE_BUSYBOX_CONFIG setting) +endif +endif + +$(eval $(kconfig-package)) diff --git a/buildroot/package/busybox/inittab b/buildroot/package/busybox/inittab new file mode 100644 index 0000000..ff1725c --- /dev/null +++ b/buildroot/package/busybox/inittab @@ -0,0 +1,39 @@ +# /etc/inittab +# +# Copyright (C) 2001 Erik Andersen +# +# Note: BusyBox init doesn't support runlevels. The runlevels field is +# completely ignored by BusyBox init. If you want runlevels, use +# sysvinit. +# +# Format for each entry: ::: +# +# id == tty to run on, or empty for /dev/console +# runlevels == ignored +# action == one of sysinit, respawn, askfirst, wait, and once +# process == program to run + +# Startup the system +::sysinit:/bin/mount -t proc proc /proc +::sysinit:/bin/mount -o remount,rw / +::sysinit:/bin/mkdir -p /dev/pts /dev/shm +::sysinit:/bin/mount -a +::sysinit:/sbin/swapon -a +null::sysinit:/bin/ln -sf /proc/self/fd /dev/fd +null::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin +null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout +null::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr +::sysinit:/bin/hostname -F /etc/hostname +# now run any rc scripts +::sysinit:/etc/init.d/rcS + +# Put a getty on the serial port +#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL + +# Stuff to do for the 3-finger salute +#::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +::shutdown:/etc/init.d/rcK +::shutdown:/sbin/swapoff -a +::shutdown:/bin/umount -a -r diff --git a/buildroot/package/busybox/mdev.conf b/buildroot/package/busybox/mdev.conf new file mode 100644 index 0000000..eaece1b --- /dev/null +++ b/buildroot/package/busybox/mdev.conf @@ -0,0 +1,39 @@ +# null may already exist; therefore ownership has to be changed with command +null root:root 666 @chmod 666 $MDEV +zero root:root 666 +full root:root 666 +random root:root 444 +urandom root:root 444 +hwrandom root:root 444 +grsec root:root 660 + +kmem root:root 640 +mem root:root 640 +port root:root 640 +# console may already exist; therefore ownership has to be changed with command +console root:tty 600 @chmod 600 $MDEV +ptmx root:tty 666 +pty.* root:tty 660 + +# Typical devices +tty root:tty 666 +tty[0-9]* root:tty 660 +vcsa*[0-9]* root:tty 660 +ttyS[0-9]* root:root 660 +ttyUSB[0-9]* root:root 660 + +# alsa sound devices +snd/pcm.* root:audio 660 +snd/control.* root:audio 660 +snd/midi.* root:audio 660 +snd/seq root:audio 660 +snd/timer root:audio 660 + +# input stuff +input/event[0-9]+ root:root 640 +input/mice root:root 640 +input/mouse[0-9] root:root 640 +input/ts[0-9] root:root 600 + +# load modules +$MODALIAS=.* root:root 660 @modprobe "$MODALIAS" diff --git a/buildroot/package/busybox/udhcpc.script b/buildroot/package/busybox/udhcpc.script new file mode 100755 index 0000000..ad110d3 --- /dev/null +++ b/buildroot/package/busybox/udhcpc.script @@ -0,0 +1,82 @@ +#!/bin/sh + +# udhcpc script edited by Tim Riker + +[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1 + +RESOLV_CONF="/etc/resolv.conf" +[ -e $RESOLV_CONF ] || touch $RESOLV_CONF +[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" +[ -n "$subnet" ] && NETMASK="netmask $subnet" + +case "$1" in + deconfig) + /sbin/ifconfig $interface up + /sbin/ifconfig $interface 0.0.0.0 + + # drop info from this interface + # resolv.conf may be a symlink to /tmp/, so take care + TMPFILE=$(mktemp) + grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE + cat $TMPFILE > $RESOLV_CONF + rm -f $TMPFILE + + 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 + ;; + + renew|bound) + if [ -x /usr/sbin/avahi-autoipd ]; then + /usr/sbin/avahi-autoipd -k $interface + fi + /sbin/ifconfig $interface $ip $BROADCAST $NETMASK + + if [ -n "$router" ] ; then + echo "deleting routers" + while route del default gw 0.0.0.0 dev $interface 2> /dev/null; do + : + done + + for i in $router ; do + route add default gw $i dev $interface + done + fi + + # drop info from this interface + # resolv.conf may be a symlink to /tmp/, so take care + TMPFILE=$(mktemp) + grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE + cat $TMPFILE > $RESOLV_CONF + rm -f $TMPFILE + + # prefer rfc3359 domain search list (option 119) if available + if [ -n "$search" ]; then + search_list=$search + elif [ -n "$domain" ]; then + search_list=$domain + fi + + [ -n "$search_list" ] && + echo "search $search_list # $interface" >> $RESOLV_CONF + + for i in $dns ; do + echo adding dns $i + echo "nameserver $i # $interface" >> $RESOLV_CONF + done + ;; +esac + +HOOK_DIR="$0.d" +for hook in "${HOOK_DIR}/"*; do + [ -f "${hook}" -a -x "${hook}" ] || continue + "${hook}" "${@}" +done + +exit 0 diff --git a/buildroot/package/bwm-ng/Config.in b/buildroot/package/bwm-ng/Config.in new file mode 100644 index 0000000..f93dd93 --- /dev/null +++ b/buildroot/package/bwm-ng/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_BWM_NG + bool "bwm-ng" + help + Bandwidth Monitor NG is a small and console-based live + network and disk-io bandwidth monitor for Linux, BSD, + Solaris, Mac OS X and others. + + http://www.gropp.org/?id=projects&sub=bwm-ng diff --git a/buildroot/package/bwm-ng/bwm-ng.hash b/buildroot/package/bwm-ng/bwm-ng.hash new file mode 100644 index 0000000..4c12b0d --- /dev/null +++ b/buildroot/package/bwm-ng/bwm-ng.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4b34a8ac2eae2d204d6dea8258c5e34b37094259086f8c9169391409a9311fb5 bwm-ng-f54b3fad2c80bfe63f920c9b5e7c1d80389c57ef.tar.gz diff --git a/buildroot/package/bwm-ng/bwm-ng.mk b/buildroot/package/bwm-ng/bwm-ng.mk new file mode 100644 index 0000000..587ffbe --- /dev/null +++ b/buildroot/package/bwm-ng/bwm-ng.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# bwm-ng +# +################################################################################ + +BWM_NG_VERSION = f54b3fad2c80bfe63f920c9b5e7c1d80389c57ef +BWM_NG_SITE = $(call github,vgropp,bwm-ng,$(BWM_NG_VERSION)) +BWM_NG_CONF_OPTS = --with-procnetdev --with-diskstats +BWM_NG_LICENSE = GPL-2.0 +BWM_NG_LICENSE_FILES = COPYING +BWM_NG_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_NCURSES),y) +BWM_NG_CONF_OPTS += --with-ncurses +BWM_NG_DEPENDENCIES += ncurses +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/bzip2/0001-build-objects-twice.patch b/buildroot/package/bzip2/0001-build-objects-twice.patch new file mode 100644 index 0000000..9bde0f6 --- /dev/null +++ b/buildroot/package/bzip2/0001-build-objects-twice.patch @@ -0,0 +1,56 @@ +Build objects twice for shared and static libraries + +The existing Makefile causes problems on MIPS because the same object +files (not compiled with -fPIC) are used in static and shared libraries. +MIPS will refuce to link non-pic objects in shared libraries. +We fix this problems by creating a new rule for the shared library +and build the shared objects as *.sho instead of *.o. +Then, we use these objects to create the shared library. + +Signed-off-by: Markos Chandras + +Index: bzip2-1.0.6/Makefile-libbz2_so +=================================================================== +--- bzip2-1.0.6.orig/Makefile-libbz2_so ++++ bzip2-1.0.6/Makefile-libbz2_so +@@ -25,13 +25,13 @@ SHELL=/bin/sh + CC=gcc + override CFLAGS += -fpic -fPIC -Wall + +-OBJS= blocksort.o \ +- huffman.o \ +- crctable.o \ +- randtable.o \ +- compress.o \ +- decompress.o \ +- bzlib.o ++OBJS= blocksort.sho \ ++ huffman.sho \ ++ crctable.sho \ ++ randtable.sho \ ++ compress.sho \ ++ decompress.sho \ ++ bzlib.sho + + all: $(OBJS) + $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS) +@@ -45,17 +45,5 @@ install: + clean: + rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared + +-blocksort.o: blocksort.c +- $(CC) $(CFLAGS) -c blocksort.c +-huffman.o: huffman.c +- $(CC) $(CFLAGS) -c huffman.c +-crctable.o: crctable.c +- $(CC) $(CFLAGS) -c crctable.c +-randtable.o: randtable.c +- $(CC) $(CFLAGS) -c randtable.c +-compress.o: compress.c +- $(CC) $(CFLAGS) -c compress.c +-decompress.o: decompress.c +- $(CC) $(CFLAGS) -c decompress.c +-bzlib.o: bzlib.c +- $(CC) $(CFLAGS) -c bzlib.c ++%.sho: %.c ++ $(CC) $(CFLAGS) -o $@ -c $< diff --git a/buildroot/package/bzip2/0002-improve-build-system.patch b/buildroot/package/bzip2/0002-improve-build-system.patch new file mode 100644 index 0000000..90099aa --- /dev/null +++ b/buildroot/package/bzip2/0002-improve-build-system.patch @@ -0,0 +1,84 @@ +Improve bzip2 build system + +This patch makes a number of improvements to the bzip2 build system: + + * Remove the BIGFILE variable that was used to force largefile + support. Now, the user of the Makefile is supposed to pass + -D_FILE_OFFSET_BITS=64 when largefile support is desired. + + * Use override CFLAGS += so that additional CFLAGS can be passed on + the command line. + + * Removed "forced" CFLAGS -O2, -g and -Winline. We don't want them by + default, and want the build system to use its own ones. + + * When creating the symbolic links bzegrep, bzfgrep, bzless and + bzcmp, don't link them to an absolute path, or they'll point to + some path on the build machine. + + * Provide an install target for the shared library, which creates the + appropriate symbolic links. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -20,8 +20,7 @@ + RANLIB=ranlib + LDFLAGS= + +-BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) ++override CFLAGS += -Wall + + # Where you want it installed when you do 'make install' + PREFIX=/usr/local +@@ -90,14 +89,14 @@ + cp -f libbz2.a $(PREFIX)/lib + chmod a+r $(PREFIX)/lib/libbz2.a + cp -f bzgrep $(PREFIX)/bin/bzgrep +- ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep +- ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep ++ ln -s -f bzgrep $(PREFIX)/bin/bzegrep ++ ln -s -f bzgrep $(PREFIX)/bin/bzfgrep + chmod a+x $(PREFIX)/bin/bzgrep + cp -f bzmore $(PREFIX)/bin/bzmore +- ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless ++ ln -s -f bzmore $(PREFIX)/bin/bzless + chmod a+x $(PREFIX)/bin/bzmore + cp -f bzdiff $(PREFIX)/bin/bzdiff +- ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp ++ ln -s -f bzdiff $(PREFIX)/bin/bzcmp + chmod a+x $(PREFIX)/bin/bzdiff + cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1 + chmod a+r $(PREFIX)/man/man1/bzgrep.1 +Index: b/Makefile-libbz2_so +=================================================================== +--- a/Makefile-libbz2_so ++++ b/Makefile-libbz2_so +@@ -23,8 +23,7 @@ + + SHELL=/bin/sh + CC=gcc +-BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) ++override CFLAGS += -fpic -fPIC -Wall + + OBJS= blocksort.o \ + huffman.o \ +@@ -37,8 +36,11 @@ + all: $(OBJS) + $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS) + $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6 +- rm -f libbz2.so.1.0 +- ln -s libbz2.so.1.0.6 libbz2.so.1.0 ++ ++install: ++ install -m 0755 -D libbz2.so.1.0.6 $(PREFIX)/lib/libbz2.so.1.0.6 ++ ln -sf libbz2.so.1.0.6 $(PREFIX)/lib/libbz2.so ++ ln -sf libbz2.so.1.0.6 $(PREFIX)/lib/libbz2.so.1.0 + + clean: + rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared diff --git a/buildroot/package/bzip2/Config.in b/buildroot/package/bzip2/Config.in new file mode 100644 index 0000000..dbc8249 --- /dev/null +++ b/buildroot/package/bzip2/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_BZIP2 + bool "bzip2" + help + Freely available, patent free, high-quality data compressor. + It typically compresses files to within 10% to 15% of the best + available techniques, while being around twice as fast at + compression and six times faster at decompression. + + http://www.bzip.org diff --git a/buildroot/package/bzip2/bzip2.hash b/buildroot/package/bzip2/bzip2.hash new file mode 100644 index 0000000..60b0a19 --- /dev/null +++ b/buildroot/package/bzip2/bzip2.hash @@ -0,0 +1,2 @@ +# From http://www.bzip.org/downloads.html +md5 00b516f4704d4a7cb50a1d97e6e8e15b bzip2-1.0.6.tar.gz diff --git a/buildroot/package/bzip2/bzip2.mk b/buildroot/package/bzip2/bzip2.mk new file mode 100644 index 0000000..e435330 --- /dev/null +++ b/buildroot/package/bzip2/bzip2.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# bzip2 +# +################################################################################ + +BZIP2_VERSION = 1.0.6 +BZIP2_SITE = http://www.bzip.org/$(BZIP2_VERSION) +BZIP2_INSTALL_STAGING = YES +BZIP2_LICENSE = bzip2 license +BZIP2_LICENSE_FILES = LICENSE + +ifeq ($(BR2_STATIC_LIBS),) +define BZIP2_BUILD_SHARED_CMDS + $(TARGET_MAKE_ENV) \ + $(MAKE) -C $(@D) -f Makefile-libbz2_so $(TARGET_CONFIGURE_OPTS) +endef +endif + +define BZIP2_BUILD_CMDS + $(TARGET_MAKE_ENV) \ + $(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover $(TARGET_CONFIGURE_OPTS) + $(BZIP2_BUILD_SHARED_CMDS) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define BZIP2_INSTALL_STAGING_SHARED_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + -f Makefile-libbz2_so PREFIX=$(STAGING_DIR)/usr -C $(@D) install +endef +endif + +define BZIP2_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + PREFIX=$(STAGING_DIR)/usr -C $(@D) install + $(BZIP2_INSTALL_STAGING_SHARED_CMDS) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define BZIP2_INSTALL_TARGET_SHARED_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + -f Makefile-libbz2_so PREFIX=$(TARGET_DIR)/usr -C $(@D) install +endef +endif + +# make sure busybox doesn't get overwritten by make install +define BZIP2_INSTALL_TARGET_CMDS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,bzip2 bunzip2 bzcat) + $(TARGET_MAKE_ENV) $(MAKE) \ + PREFIX=$(TARGET_DIR)/usr -C $(@D) install + $(BZIP2_INSTALL_TARGET_SHARED_CMDS) +endef + +define HOST_BZIP2_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) -f Makefile-libbz2_so + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover +endef + +define HOST_BZIP2_INSTALL_CMDS + $(HOST_MAKE_ENV) \ + $(MAKE) PREFIX=$(HOST_DIR) -C $(@D) install + $(HOST_MAKE_ENV) \ + $(MAKE) -f Makefile-libbz2_so PREFIX=$(HOST_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/c-ares/0001-use_check_build_instead_of_check_user.patch b/buildroot/package/c-ares/0001-use_check_build_instead_of_check_user.patch new file mode 100644 index 0000000..8210ed6 --- /dev/null +++ b/buildroot/package/c-ares/0001-use_check_build_instead_of_check_user.patch @@ -0,0 +1,17 @@ +Use XC_CHECK_BUILD_FLAGS instead of XC_CHECK_USER_FLAGS. +Otherwise it complains of CPPFLAGS in CFLAGS. + +Signed-off-by: Gustavo Zacarias + +diff -Nura c-ares-1.10.0.orig/m4/xc-cc-check.m4 c-ares-1.10.0/m4/xc-cc-check.m4 +--- c-ares-1.10.0.orig/m4/xc-cc-check.m4 2013-12-26 19:40:46.354195974 -0300 ++++ c-ares-1.10.0/m4/xc-cc-check.m4 2013-12-26 19:41:01.850718535 -0300 +@@ -59,7 +59,7 @@ + + AC_DEFUN([_XC_PROG_CC], [ + AC_REQUIRE([_XC_PROG_CC_PREAMBLE])dnl +- AC_REQUIRE([XC_CHECK_USER_FLAGS])dnl ++ AC_REQUIRE([XC_CHECK_BUILD_FLAGS])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AM_PROG_CC_C_O])dnl diff --git a/buildroot/package/c-ares/Config.in b/buildroot/package/c-ares/Config.in new file mode 100644 index 0000000..be17b16 --- /dev/null +++ b/buildroot/package/c-ares/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_C_ARES + bool "c-ares" + help + C library for asynchronous DNS requests. + + http://c-ares.haxx.se/ diff --git a/buildroot/package/c-ares/c-ares.hash b/buildroot/package/c-ares/c-ares.hash new file mode 100644 index 0000000..832c4df --- /dev/null +++ b/buildroot/package/c-ares/c-ares.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 45d3c1fd29263ceec2afc8ff9cd06d5f8f889636eb4e80ce3cc7f0eaf7aadc6e c-ares-1.14.0.tar.gz diff --git a/buildroot/package/c-ares/c-ares.mk b/buildroot/package/c-ares/c-ares.mk new file mode 100644 index 0000000..6725424 --- /dev/null +++ b/buildroot/package/c-ares/c-ares.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# c-ares +# +################################################################################ + +C_ARES_VERSION = 1.14.0 +C_ARES_SITE = http://c-ares.haxx.se/download +C_ARES_INSTALL_STAGING = YES +C_ARES_CONF_OPTS = --with-random=/dev/urandom +# Rebuild configure to avoid XC_CHECK_USER_CFLAGS +C_ARES_AUTORECONF = YES +C_ARES_LICENSE = MIT +# No standalone, use some source file +C_ARES_LICENSE_FILES = ares_mkquery.c + +$(eval $(autotools-package)) diff --git a/buildroot/package/c-icap-modules/Config.in b/buildroot/package/c-icap-modules/Config.in new file mode 100644 index 0000000..616456b --- /dev/null +++ b/buildroot/package/c-icap-modules/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_C_ICAP_MODULES + bool "c-icap-modules" + depends on BR2_PACKAGE_C_ICAP + help + Additionals modules for c-icap server. + + http://c-icap.sourceforge.net/ diff --git a/buildroot/package/c-icap-modules/c-icap-modules.hash b/buildroot/package/c-icap-modules/c-icap-modules.hash new file mode 100644 index 0000000..a9fee87 --- /dev/null +++ b/buildroot/package/c-icap-modules/c-icap-modules.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/c-icap/files/c-icap-modules/0.4.x/ +md5 1a7eaa7a34ff35c2440cf303f7b45f22 c_icap_modules-0.4.5.tar.gz +sha1 515145e6d29413aff8543937504dc5c419043fd5 c_icap_modules-0.4.5.tar.gz diff --git a/buildroot/package/c-icap-modules/c-icap-modules.mk b/buildroot/package/c-icap-modules/c-icap-modules.mk new file mode 100644 index 0000000..d754378 --- /dev/null +++ b/buildroot/package/c-icap-modules/c-icap-modules.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# c-icap-modules +# +################################################################################ + +C_ICAP_MODULES_VERSION = 0.4.5 +C_ICAP_MODULES_SOURCE = c_icap_modules-$(C_ICAP_MODULES_VERSION).tar.gz +C_ICAP_MODULES_SITE = http://downloads.sourceforge.net/c-icap +C_ICAP_MODULES_LICENSE = GPL-2.0+ +C_ICAP_MODULES_LICENSE_FILES = COPYING +C_ICAP_MODULES_DEPENDENCIES = c-icap + +C_ICAP_MODULES_CONF_OPTS = \ + --with-c-icap=$(STAGING_DIR)/usr/ \ + --without-clamav + +ifeq ($(BR2_PACKAGE_ZLIB),y) +C_ICAP_MODULES_CONF_OPTS += --with-zlib +C_ICAP_MODULES_DEPENDENCIES += zlib +else +C_ICAP_MODULES_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +C_ICAP_MODULES_CONF_OPTS += --with-bdb +C_ICAP_MODULES_DEPENDENCIES += berkeleydb +else +C_ICAP_MODULES_CONF_OPTS += --without-bdb +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/c-icap/Config.in b/buildroot/package/c-icap/Config.in new file mode 100644 index 0000000..8f7963c --- /dev/null +++ b/buildroot/package/c-icap/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_C_ICAP + bool "c-icap" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + c-icap is an implementation of an ICAP server. It can be + used with HTTP proxies that support the ICAP protocol to + implement content adaptation and filtering services. Most + of the commercial HTTP proxies must support the ICAP + protocol. The open source Squid 3.x proxy server supports + it. + + http://c-icap.sourceforge.net/ + +comment "c-icap needs a toolchain w/ threads and dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/c-icap/S96cicap b/buildroot/package/c-icap/S96cicap new file mode 100644 index 0000000..7b95f86 --- /dev/null +++ b/buildroot/package/c-icap/S96cicap @@ -0,0 +1,27 @@ +#!/bin/sh + +# (Re)create directories +mkdir -p /var/run/c-icap +mkdir -p /var/log/c-icap + +case "$1" in + start) + printf "Starting c-icap server: " + start-stop-daemon -S -q -b -m -p /var/run/c-icap.pid \ + -x /usr/bin/c-icap -- -N + [ $? == 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping c-icap server: " + start-stop-daemon -K -q -p /var/run/c-icap.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: /etc/init.d/S96cicap {start|stop|restart|reload}" + exit 1 +esac diff --git a/buildroot/package/c-icap/c-icap.hash b/buildroot/package/c-icap/c-icap.hash new file mode 100644 index 0000000..2b083ef --- /dev/null +++ b/buildroot/package/c-icap/c-icap.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b138c7d7d9828d54c3307bcfe7b4917911266593832ffc26a60df9a0dfd2511e c_icap-0.4.2.tar.gz diff --git a/buildroot/package/c-icap/c-icap.mk b/buildroot/package/c-icap/c-icap.mk new file mode 100644 index 0000000..c722098 --- /dev/null +++ b/buildroot/package/c-icap/c-icap.mk @@ -0,0 +1,101 @@ +################################################################################ +# +# c-icap +# +################################################################################ + +C_ICAP_VERSION = 0.4.2 +C_ICAP_SOURCE = c_icap-$(C_ICAP_VERSION).tar.gz +C_ICAP_SITE = http://downloads.sourceforge.net/c-icap +C_ICAP_LICENSE = LGPL-2.1+ +C_ICAP_LICENSE_FILES = COPYING +C_ICAP_INSTALL_STAGING = YES +C_ICAP_CONFIG_SCRIPTS = c-icap-config c-icap-libicapapi-config +C_ICAP_CONF_OPTS = \ + --without-perl \ + --enable-large-files \ + --enable-ipv6 +# Pre-seed cache variables for tests done with AC_TRY_RUN that are not +# cross-compile friendly +C_ICAP_CONF_ENV = ac_cv_10031b_ipc_sem=yes ac_cv_fcntl=yes +# c-icap adds '-Wl,-rpath -Wl,/usr/lib' to the link command line. This +# causes the linker to search for libraries that are listed as NEEDED +# in the libicapapi.so ELF header in host libraries, which breaks the +# build. The affected library is libz. Forcing AUTORECONF adds -lz to +# the link command line, and that makes the linker look first in +# sysroot, thus avoiding the build breakage. +C_ICAP_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +C_ICAP_CONF_OPTS += --with-bdb +C_ICAP_DEPENDENCIES += berkeleydb +else +C_ICAP_CONF_OPTS += --without-bdb +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +C_ICAP_CONF_OPTS += --with-bzlib +C_ICAP_DEPENDENCIES += bzip2 +else +C_ICAP_CONF_OPTS += --without-bzlib +endif + +ifeq ($(BR2_PACKAGE_LIBMEMCACHED),y) +C_ICAP_CONF_OPTS += --with-memcached +C_ICAP_DEPENDENCIES += libmemcached +else +C_ICAP_CONF_OPTS += --without-memcached +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +C_ICAP_CONF_OPTS += --with-ldap +C_ICAP_DEPENDENCIES += openldap +else +C_ICAP_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +C_ICAP_CONF_OPTS += --with-openssl +C_ICAP_DEPENDENCIES += openssl +else +C_ICAP_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +C_ICAP_CONF_OPTS += --with-pcre +C_ICAP_DEPENDENCIES += pcre +else +C_ICAP_CONF_OPTS += --without-pcre +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +C_ICAP_CONF_OPTS += --with-zlib +C_ICAP_DEPENDENCIES += zlib +else +C_ICAP_CONF_OPTS += --without-zlib +endif + +define C_ICAP_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/c-icap/S96cicap $(TARGET_DIR)/etc/init.d/S96cicap +endef + +# Tweak the installation: +# - Removed unneeded sample configuration files (c-icap.*.default), +# since some real ones are also installed +# - Tweak some paths in the c-icap.conf configuration file +# - Tweak the -config scripts, because the generic +# _CONFIG_SCRIPTS logic doesn't tweak them enough +define C_ICAP_TUNE_INSTALLATION + $(RM) -f $(TARGET_DIR)/etc/c-icap.*.default + $(SED) 's%/usr/etc/%/etc/%' $(TARGET_DIR)/etc/c-icap.conf + $(SED) 's%/usr/var/%/var/%' $(TARGET_DIR)/etc/c-icap.conf + $(SED) 's%INCDIR=.*%INCDIR=$(STAGING_DIR)/usr/include%' \ + $(STAGING_DIR)/usr/bin/{c-icap,c-icap-libicapapi}-config + $(SED) 's%INCDIR2=.*%INCDIR2=$(STAGING_DIR)/usr/include/c_icap%' \ + $(STAGING_DIR)/usr/bin/{c-icap,c-icap-libicapapi}-config + $(SED) 's%-L$$LIBDIR %%' $(STAGING_DIR)/usr/bin/c-icap-libicapapi-config +endef + +C_ICAP_POST_INSTALL_TARGET_HOOKS += C_ICAP_TUNE_INSTALLATION + +$(eval $(autotools-package)) diff --git a/buildroot/package/c-periphery/Config.in b/buildroot/package/c-periphery/Config.in new file mode 100644 index 0000000..0bfb4b1 --- /dev/null +++ b/buildroot/package/c-periphery/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_C_PERIPHERY + bool "c-periphery" + help + c-periphery is a set of C wrapper functions for GPIO, SPI, + I2C, MMIO, and Serial peripheral I/O interface access in + userspace Linux. The c-periphery wrappers simplify and + consolidate the native Linux APIs to these + interfaces. c-periphery is useful in embedded Linux + environments (including BeagleBone, Raspberry Pi, + etc. platforms) for interfacing with external + peripherals. c-periphery is re-entrant, uses static + allocations, has no dependencies outside the standard C + library and Linux, compiles into a static library for easy + integration with other projects, and is MIT licensed. + + https://github.com/vsergeev/c-periphery diff --git a/buildroot/package/c-periphery/c-periphery.hash b/buildroot/package/c-periphery/c-periphery.hash new file mode 100644 index 0000000..524925f --- /dev/null +++ b/buildroot/package/c-periphery/c-periphery.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c6cfaae7496ff6500b747106571de6b4ca7d80a383297e592ffcfa3413b66321 c-periphery-v1.1.1.tar.gz diff --git a/buildroot/package/c-periphery/c-periphery.mk b/buildroot/package/c-periphery/c-periphery.mk new file mode 100644 index 0000000..359c860 --- /dev/null +++ b/buildroot/package/c-periphery/c-periphery.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# c-periphery +# +################################################################################ + +C_PERIPHERY_VERSION = v1.1.1 +C_PERIPHERY_SITE = $(call github,vsergeev,c-periphery,$(C_PERIPHERY_VERSION)) +C_PERIPHERY_INSTALL_STAGING = YES +# only a static library +C_PERIPHERY_INSTALL_TARGET = NO +C_PERIPHERY_LICENSE = MIT +C_PERIPHERY_LICENSE_FILES = LICENSE + +define C_PERIPHERY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# There is no 'install' rule in the Makefile, so we handle things +# manually. +define C_PERIPHERY_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/periphery.a $(STAGING_DIR)/usr/lib/libc-periphery.a + mkdir -p $(STAGING_DIR)/usr/include/c-periphery/ + cp -dpfr $(@D)/src/*.h $(STAGING_DIR)/usr/include/c-periphery/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ca-certificates/Config.in b/buildroot/package/ca-certificates/Config.in new file mode 100644 index 0000000..6bb7182 --- /dev/null +++ b/buildroot/package/ca-certificates/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CA_CERTIFICATES + bool "CA Certificates" + help + This package includes PEM files of CA certificates to allow + SSL-based applications to check for the authenticity of SSL + connections. + + It includes, among others, certificate authorities used by the + Debian infrastructure and those shipped with Mozilla's + browsers. + + http://anonscm.debian.org/gitweb/?p=collab-maint/ca-certificates.git diff --git a/buildroot/package/ca-certificates/ca-certificates.hash b/buildroot/package/ca-certificates/ca-certificates.hash new file mode 100644 index 0000000..00296e2 --- /dev/null +++ b/buildroot/package/ca-certificates/ca-certificates.hash @@ -0,0 +1,3 @@ +# hashes from: $(CA_CERTIFICATES_SITE)/ca-certificates_$(CA_CERTIFICATES_VERSION).dsc : +sha1 4c093ceee1f1428d5aa7e9a5324b92961c0c0f06 ca-certificates_20170717.tar.xz +sha256 e487639b641fa75445174734dd6e9d600373e3248b3d86a7e3c6d0f6977decd2 ca-certificates_20170717.tar.xz diff --git a/buildroot/package/ca-certificates/ca-certificates.mk b/buildroot/package/ca-certificates/ca-certificates.mk new file mode 100644 index 0000000..cb0e961 --- /dev/null +++ b/buildroot/package/ca-certificates/ca-certificates.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# ca-certificates +# +################################################################################ + +CA_CERTIFICATES_VERSION = 20170717 +CA_CERTIFICATES_SOURCE = ca-certificates_$(CA_CERTIFICATES_VERSION).tar.xz +CA_CERTIFICATES_SITE = http://snapshot.debian.org/archive/debian/20170814T210836Z/pool/main/c/ca-certificates +CA_CERTIFICATES_DEPENDENCIES = host-openssl +# ca-certificates can be built with either python 2 or python 3 +# but it must be at least python 2.7 +CA_CERTIFICATES_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python) +CA_CERTIFICATES_LICENSE = GPL-2.0+ (script), MPL-2.0 (data) +CA_CERTIFICATES_LICENSE_FILES = debian/copyright + +define CA_CERTIFICATES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) all +endef + +define CA_CERTIFICATES_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/ca-certificates + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/ssl/certs + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(TARGET_DIR) + rm -f $(TARGET_DIR)/usr/sbin/update-ca-certificates + + # Remove any existing certificates under /etc/ssl/certs + rm -f $(TARGET_DIR)/etc/ssl/certs/* + + # Create symlinks to certificates under /etc/ssl/certs + # and generate the bundle + cd $(TARGET_DIR) ;\ + for i in `find usr/share/ca-certificates -name "*.crt"` ; do \ + ln -sf ../../../$$i etc/ssl/certs/`basename $${i} .crt`.pem ;\ + cat $$i >>etc/ssl/certs/ca-certificates.crt ;\ + done + + # Create symlinks to the certificates by their hash values + $(HOST_DIR)/bin/c_rehash $(TARGET_DIR)/etc/ssl/certs +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/cache-calibrator/0001-Fix-conflicting-round-function.patch b/buildroot/package/cache-calibrator/0001-Fix-conflicting-round-function.patch new file mode 100644 index 0000000..71181a6 --- /dev/null +++ b/buildroot/package/cache-calibrator/0001-Fix-conflicting-round-function.patch @@ -0,0 +1,108 @@ +From 39ac7268c4350040976005da98daf10edf676d3e Mon Sep 17 00:00:00 2001 +From: Stephan Hoffmann +Date: Mon, 28 Jan 2013 17:32:10 +0100 +Subject: [PATCH] Fix conflicting round() function + +calibrator.c defines a local round() function that conflicts +with the one from the standard library. + +This is fixed by renaming the local function. + +Signed-off-by: Stephan Hoffmann +--- + calibrator.c | 30 +++++++++++++++--------------- + 1 files changed, 15 insertions(+), 15 deletions(-) + +diff --git a/calibrator.c b/calibrator.c +index e045dfd..8471c04 100644 +--- a/calibrator.c ++++ b/calibrator.c +@@ -128,7 +128,7 @@ void ErrXit(char *format, ...) { + exit(1); + } + +-lng round(dbl x) ++lng lng_round(dbl x) + { + return (lng)(x + 0.5); + } +@@ -890,16 +890,16 @@ void plotCache(cacheInfo *cache, lng **result, lng MHz, char *fn, FILE *fp, lng + fprintf(fp, ")\n"); + fprintf(fp, "set y2tics"); + for (l = 0, s = " ("; l <= cache->levels; l++, s = ", ") { +- if (!delay) fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(cache->latency1[l] - delay)), NSperIt(cache->latency1[l] - delay)); +- else fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(cache->latency2[l] - delay)), NSperIt(cache->latency2[l] - delay)); ++ if (!delay) fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(cache->latency1[l] - delay)), NSperIt(cache->latency1[l] - delay)); ++ else fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(cache->latency2[l] - delay)), NSperIt(cache->latency2[l] - delay)); + } + for (y = 1; y <= yh; y *= 10) { + fprintf(fp, "%s'%1.3g' %ld", s, (dbl)(y * MHz) / 1000.0, y); + } + fprintf(fp, ")\n"); + for (l = 0; l <= cache->levels; l++) { +- if (!delay) z = (dbl)round(CYperIt(cache->latency1[l] - delay)) * 1000.0 / (dbl)MHz; +- else z = (dbl)round(CYperIt(cache->latency2[l] - delay)) * 1000.0 / (dbl)MHz; ++ if (!delay) z = (dbl)lng_round(CYperIt(cache->latency1[l] - delay)) * 1000.0 / (dbl)MHz; ++ else z = (dbl)lng_round(CYperIt(cache->latency2[l] - delay)) * 1000.0 / (dbl)MHz; + fprintf(fp, "set label %ld '(%1.3g) ' at %f,%f right\n", l + 1, z, xl, z); + fprintf(fp, "set arrow %ld from %f,%f to %f,%f nohead lt 0\n", l + 1, xl, z, xh, z); + } +@@ -986,16 +986,16 @@ void plotTLB(TLBinfo *TLB, lng **result, lng MHz, char *fn, FILE *fp, lng delay) + fprintf(fp, "%s'' %ld)\n", s, TLB->mincachelines); + fprintf(fp, "set y2tics"); + for (l = 0, s = " ("; l <= TLB->levels; l++, s = ", ") { +- if (!delay) fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(TLB->latency1[l] - delay)), NSperIt(TLB->latency1[l] - delay)); +- else fprintf(fp, "%s'(%ld)' %f", s, round(CYperIt(TLB->latency2[l] - delay)), NSperIt(TLB->latency2[l] - delay)); ++ if (!delay) fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(TLB->latency1[l] - delay)), NSperIt(TLB->latency1[l] - delay)); ++ else fprintf(fp, "%s'(%ld)' %f", s, lng_round(CYperIt(TLB->latency2[l] - delay)), NSperIt(TLB->latency2[l] - delay)); + } + for (y = 1; y <= yh; y *= 10) { + fprintf(fp, "%s'%1.3g' %ld", s, (dbl)(y * MHz) / 1000.0, y); + } + fprintf(fp, ")\n"); + for (l = 0; l <= TLB->levels; l++) { +- if (!delay) z = (dbl)round(CYperIt(TLB->latency1[l] - delay)) * 1000.0 / (dbl)MHz; +- else z = (dbl)round(CYperIt(TLB->latency2[l] - delay)) * 1000.0 / (dbl)MHz; ++ if (!delay) z = (dbl)lng_round(CYperIt(TLB->latency1[l] - delay)) * 1000.0 / (dbl)MHz; ++ else z = (dbl)lng_round(CYperIt(TLB->latency2[l] - delay)) * 1000.0 / (dbl)MHz; + fprintf(fp, "set label %ld '(%1.3g) ' at %f,%f right\n", l + 1, z, xl, z); + fprintf(fp, "set arrow %ld from %f,%f to %f,%f nohead lt 0\n", l + 1, xl, z, xh, z); + } +@@ -1023,9 +1023,9 @@ void printCPU(cacheInfo *cache, lng MHz, lng delay) + FILE *fp = stdout; + + fprintf(fp, "CPU loop + L1 access: "); +- fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[0]), round(CYperIt(cache->latency1[0]))); ++ fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[0]), lng_round(CYperIt(cache->latency1[0]))); + fprintf(fp, " ( delay: "); +- fprintf(fp, " %6.2f ns = %3ld cy )\n", NSperIt(delay), round(CYperIt(delay))); ++ fprintf(fp, " %6.2f ns = %3ld cy )\n", NSperIt(delay), lng_round(CYperIt(delay))); + fprintf(fp, "\n"); + fflush(fp); + } +@@ -1047,8 +1047,8 @@ void printCache(cacheInfo *cache, lng MHz) + fprintf(fp, " %3ld KB ", cache->size[l] / 1024); + } + fprintf(fp, " %3ld bytes ", cache->linesize[l + 1]); +- fprintf(fp, " %6.2f ns = %3ld cy " , NSperIt(cache->latency2[l + 1] - cache->latency2[l]), round(CYperIt(cache->latency2[l + 1] - cache->latency2[l]))); +- fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[l + 1] - cache->latency1[l]), round(CYperIt(cache->latency1[l + 1] - cache->latency1[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy " , NSperIt(cache->latency2[l + 1] - cache->latency2[l]), lng_round(CYperIt(cache->latency2[l + 1] - cache->latency2[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy\n", NSperIt(cache->latency1[l + 1] - cache->latency1[l]), lng_round(CYperIt(cache->latency1[l + 1] - cache->latency1[l]))); + } + fprintf(fp, "\n"); + fflush(fp); +@@ -1075,9 +1075,9 @@ void printTLB(TLBinfo *TLB, lng MHz) + } else { + fprintf(fp, " %3ld KB ", TLB->pagesize[l + 1] / 1024); + } +- fprintf(fp, " %6.2f ns = %3ld cy ", NSperIt(TLB->latency2[l + 1] - TLB->latency2[l]), round(CYperIt(TLB->latency2[l + 1] - TLB->latency2[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy ", NSperIt(TLB->latency2[l + 1] - TLB->latency2[l]), lng_round(CYperIt(TLB->latency2[l + 1] - TLB->latency2[l]))); + /* +- fprintf(fp, " %6.2f ns = %3ld cy" , NSperIt(TLB->latency1[l + 1] - TLB->latency1[l]), round(CYperIt(TLB->latency1[l + 1] - TLB->latency1[l]))); ++ fprintf(fp, " %6.2f ns = %3ld cy" , NSperIt(TLB->latency1[l + 1] - TLB->latency1[l]), lng_round(CYperIt(TLB->latency1[l + 1] - TLB->latency1[l]))); + */ + fprintf(fp, "\n"); + } +-- +1.7.0.4 + diff --git a/buildroot/package/cache-calibrator/Config.in b/buildroot/package/cache-calibrator/Config.in new file mode 100644 index 0000000..db780e9 --- /dev/null +++ b/buildroot/package/cache-calibrator/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_CACHE_CALIBRATOR + bool "cache-calibrator" + help + Cache calibrator is a small C program that is supposed to + analyze a computers (cache-) memory system and extract + useful information + + http://homepages.cwi.nl/~manegold/Calibrator/ + + It is also recommended as a load generator for realtime + testing in: + + https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO diff --git a/buildroot/package/cache-calibrator/cache-calibrator.hash b/buildroot/package/cache-calibrator/cache-calibrator.hash new file mode 100644 index 0000000..a4b4b70 --- /dev/null +++ b/buildroot/package/cache-calibrator/cache-calibrator.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2018ed8fa733155d44ceb1c0066c5cf8df7771cdf7cfca0a07b8dd9bebd9c221 calibrator.c +sha256 a853663f5b4fb3ad77bf2790ab53146f456b8d9b9ddf83b99fe28c0bdec42514 calibrator.c.license diff --git a/buildroot/package/cache-calibrator/cache-calibrator.mk b/buildroot/package/cache-calibrator/cache-calibrator.mk new file mode 100644 index 0000000..6f12d11 --- /dev/null +++ b/buildroot/package/cache-calibrator/cache-calibrator.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# cache-calibrator +# +################################################################################ + +CACHE_CALIBRATOR_SOURCE = calibrator.c +CACHE_CALIBRATOR_SITE = http://homepages.cwi.nl/~manegold/Calibrator/src +CACHE_CALIBRATOR_LICENSE = Cache calibrator license +CACHE_CALIBRATOR_LICENSE_FILES = calibrator.c.license + +define CACHE_CALIBRATOR_EXTRACT_CMDS + cp $(DL_DIR)/$(CACHE_CALIBRATOR_SOURCE) $(@D) +endef + +define CACHE_CALIBRATOR_EXTRACT_LICENSE + head -n 38 $(@D)/calibrator.c >$(@D)/calibrator.c.license +endef +CACHE_CALIBRATOR_PRE_PATCH_HOOKS += CACHE_CALIBRATOR_EXTRACT_LICENSE + +define CACHE_CALIBRATOR_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) $(@D)/calibrator.c -o $(@D)/cache_calibrator -lm +endef + +define CACHE_CALIBRATOR_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/cache_calibrator $(TARGET_DIR)/usr/bin/cache_calibrator +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/cairo/0001-blackfin-build-fix.patch b/buildroot/package/cairo/0001-blackfin-build-fix.patch new file mode 100644 index 0000000..0e8dd3a --- /dev/null +++ b/buildroot/package/cairo/0001-blackfin-build-fix.patch @@ -0,0 +1,55 @@ +Fix build on platforms where __USER_LABEL_PREFIX__ is not empty + +On most platforms, a C language symbol and its assembly equivalent are +identical. However, on the Blackfin architecture, this isn't the case, +the corresponding C language symbol in assembly is prepended with a +"_". Blackfin therefore has __USER_LABEL_PREFIX__ defined to "_". + +Cairo already has some code to cope with __USER_LABEL_PREFIX__, but +this code isn't completely correct: it prepends both assembly symbols +and C symbols with __USER_LABEL_PREFIX__, which cannot work. + +This patch fixes that by using the existing slim_hidden_asmname() to +define assembly symbols, and introduce a new slim_hidden_realname() +for C symbols. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/cairo-compiler-private.h +=================================================================== +--- a/src/cairo-compiler-private.h ++++ b/src/cairo-compiler-private.h +@@ -93,12 +93,13 @@ + __asm__ (slim_hidden_asmname (internal)) + # define slim_hidden_def1(name, internal) \ + extern __typeof (name) EXT_##name __asm__(slim_hidden_asmname(name)) \ +- __attribute__((__alias__(slim_hidden_asmname(internal)))) ++ __attribute__((__alias__(slim_hidden_realname(internal)))) + # define slim_hidden_ulp slim_hidden_ulp1(__USER_LABEL_PREFIX__) + # define slim_hidden_ulp1(x) slim_hidden_ulp2(x) + # define slim_hidden_ulp2(x) #x + # define slim_hidden_asmname(name) slim_hidden_asmname1(name) + # define slim_hidden_asmname1(name) slim_hidden_ulp #name ++# define slim_hidden_realname(name) #name + #else + # define slim_hidden_proto(name) int _cairo_dummy_prototype(void) + # define slim_hidden_proto_no_warn(name) int _cairo_dummy_prototype(void) +Index: b/util/cairo-script/cairo-script-private.h +=================================================================== +--- a/util/cairo-script/cairo-script-private.h ++++ b/util/cairo-script/cairo-script-private.h +@@ -109,12 +109,13 @@ + __asm__ (slim_hidden_asmname (internal)) + # define slim_hidden_def1(name, internal) \ + extern __typeof (name) EXT_##name __asm__(slim_hidden_asmname(name)) \ +- __attribute__((__alias__(slim_hidden_asmname(internal)))) ++ __attribute__((__alias__(slim_hidden_realname(internal)))) + # define slim_hidden_ulp slim_hidden_ulp1(__USER_LABEL_PREFIX__) + # define slim_hidden_ulp1(x) slim_hidden_ulp2(x) + # define slim_hidden_ulp2(x) #x + # define slim_hidden_asmname(name) slim_hidden_asmname1(name) + # define slim_hidden_asmname1(name) slim_hidden_ulp #name ++# define slim_hidden_realname(name) #name + #else + # define slim_hidden_proto(name) int _csi_dummy_prototype(void) + # define slim_hidden_proto_no_warn(name) int _csi_dummy_prototype(void) diff --git a/buildroot/package/cairo/0003-fix-nofork-build.patch b/buildroot/package/cairo/0003-fix-nofork-build.patch new file mode 100644 index 0000000..702e991 --- /dev/null +++ b/buildroot/package/cairo/0003-fix-nofork-build.patch @@ -0,0 +1,29 @@ +test: fix build when SHOULD_FORK is false + +The code in test/cairo-test-runner.c properly takes into account +platforms that do have fork() support, and uses the SHOULD_FORK define +to know whether fork is available or not. + +However, this SHOULD_FORK macro is used to guard the inclusion of +, which is needed to get the prototype of other functions +(namely readlink and getppid), that are used in portions of this file +not guarded by SHOULD_FORK. + +Signed-off-by: Thomas Petazzoni + +Index: b/test/cairo-test-runner.c +=================================================================== +--- a/test/cairo-test-runner.c ++++ b/test/cairo-test-runner.c +@@ -36,10 +36,10 @@ + #include /* for version information */ + + #define SHOULD_FORK HAVE_FORK && HAVE_WAITPID +-#if SHOULD_FORK + #if HAVE_UNISTD_H + #include + #endif ++#if SHOULD_FORK + #if HAVE_SIGNAL_H + #include + #endif diff --git a/buildroot/package/cairo/0005-fix-gcc-49-build.patch b/buildroot/package/cairo/0005-fix-gcc-49-build.patch new file mode 100644 index 0000000..112c9ea --- /dev/null +++ b/buildroot/package/cairo/0005-fix-gcc-49-build.patch @@ -0,0 +1,38 @@ +Fix build with gcc 4.9 + +cairo fails to build with gcc 4.9 due to a bad interaction of cairo +modules with the LTO mechanism. The suggested workaround is to pass +-ffat-lto-objects. See +https://bugs.freedesktop.org/show_bug.cgi?id=77060 for the upstream +bug report, and +https://bugs.archlinux.org/task/40313?project=1&openedfrom=-1+week for +the ArchLinux bug report. + +This patch passes -ffat-lto-objects when gcc understands this option, +in order to provide compatibility with gcc versions older than 4.8, +which did not provide this option, but are anyway unaffected by the +issue. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -37,6 +37,16 @@ + m4_include(build/configure.ac.pthread) dnl checks for pthreads + AC_CACHE_SAVE + ++old_cflags=$CFLAGS ++CFLAGS=-ffat-lto-objects ++AC_MSG_CHECKING([whether CC supports -ffat-lto-objects]) ++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], ++ [AC_MSG_RESULT([yes])] ++ [LTO_CFLAGS=-ffat-lto-objects], ++ [AC_MSG_RESULT([no])] ++) ++CFLAGS="${old_CFLAGS} ${LTO_CFLAGS}" ++ + dnl =========================================================================== + + AC_CHECK_LIB(z, compress, diff --git a/buildroot/package/cairo/Config.in b/buildroot/package/cairo/Config.in new file mode 100644 index 0000000..0c87a29 --- /dev/null +++ b/buildroot/package/cairo/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_CAIRO + bool "cairo" + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + help + Cairo is a 2D graphics library with support for multiple + output devices. Currently supported output targets include + the X Window System, Win32, image buffers, and PostScript, + PDF, and SVG file output. Experimental backends include + OpenGL (through glitz), Quartz, and XCB. + + http://cairographics.org/ + +if BR2_PACKAGE_CAIRO + +config BR2_PACKAGE_CAIRO_PS + bool "postscript support" + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_CAIRO_PDF + +config BR2_PACKAGE_CAIRO_PDF + bool "pdf support" + select BR2_PACKAGE_ZLIB + +config BR2_PACKAGE_CAIRO_PNG + bool "png support" + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + +config BR2_PACKAGE_CAIRO_SCRIPT + bool "script support" + select BR2_PACKAGE_CAIRO_PNG + +config BR2_PACKAGE_CAIRO_SVG + bool "svg support" + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_CAIRO_PDF + +config BR2_PACKAGE_CAIRO_TEE + bool "tee support" + +config BR2_PACKAGE_CAIRO_XML + bool "xml support" + select BR2_PACKAGE_CAIRO_PNG + +endif diff --git a/buildroot/package/cairo/cairo.hash b/buildroot/package/cairo/cairo.hash new file mode 100644 index 0000000..f3aa01f --- /dev/null +++ b/buildroot/package/cairo/cairo.hash @@ -0,0 +1,4 @@ +# From http://cairographics.org/releases/cairo-1.14.10.tar.xz.sha1 +sha1 28c59d85d6b790c21b8b59ece73a6a1dda28d69a cairo-1.14.10.tar.xz +# Calculated based on the hash above +sha256 7e87878658f2c9951a14fc64114d4958c0e65ac47530b8ac3078b2ce41b66a09 cairo-1.14.10.tar.xz diff --git a/buildroot/package/cairo/cairo.mk b/buildroot/package/cairo/cairo.mk new file mode 100644 index 0000000..9749056 --- /dev/null +++ b/buildroot/package/cairo/cairo.mk @@ -0,0 +1,171 @@ +################################################################################ +# +# cairo +# +################################################################################ + +CAIRO_VERSION = 1.14.10 +CAIRO_SOURCE = cairo-$(CAIRO_VERSION).tar.xz +CAIRO_LICENSE = LGPL-2.1 or MPL-1.1 (library) +CAIRO_LICENSE_FILES = COPYING COPYING-LGPL-2.1 COPYING-MPL-1.1 +CAIRO_SITE = http://cairographics.org/releases +CAIRO_INSTALL_STAGING = YES +CAIRO_AUTORECONF = YES + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +CAIRO_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mxgot" +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +CAIRO_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -DCAIRO_NO_MUTEX=1" +endif + +# cairo can use C++11 atomics when available, so we need to link with +# libatomic for the architectures who need libatomic. +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CAIRO_CONF_ENV += LIBS="-latomic" +endif + +CAIRO_CONF_OPTS = \ + --enable-trace=no \ + --enable-interpreter=no + +CAIRO_DEPENDENCIES = host-pkgconf fontconfig pixman + +# Just the bare minimum to make other host-* packages happy +HOST_CAIRO_CONF_OPTS = \ + --enable-trace=no \ + --enable-interpreter=no \ + --disable-directfb \ + --enable-ft \ + --disable-gobject \ + --disable-glesv2 \ + --disable-vg \ + --disable-xlib \ + --disable-xcb \ + --without-x \ + --disable-xlib-xrender \ + --disable-ps \ + --disable-pdf \ + --enable-png \ + --disable-script \ + --disable-svg \ + --disable-tee \ + --disable-xml +HOST_CAIRO_DEPENDENCIES = \ + host-freetype \ + host-fontconfig \ + host-libpng \ + host-pixman \ + host-pkgconf + +# DirectFB svg support rely on Cairo and Cairo DirectFB support depends on +# DirectFB. Break circular dependency by disabling DirectFB support in Cairo +# (which is experimental) +ifeq ($(BR2_PACKAGE_DIRECTFB)x$(BR2_PACKAGE_DIRECTFB_SVG),yx) +CAIRO_CONF_OPTS += --enable-directfb +CAIRO_DEPENDENCIES += directfb +else +CAIRO_CONF_OPTS += --disable-directfb +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +CAIRO_CONF_OPTS += --enable-ft +CAIRO_DEPENDENCIES += freetype +else +CAIRO_CONF_OPTS += --disable-ft +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +CAIRO_CONF_OPTS += --enable-gobject +CAIRO_DEPENDENCIES += libglib2 +else +CAIRO_CONF_OPTS += --disable-gobject +endif + +# Can use GL or GLESv2 but not both +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +CAIRO_CONF_OPTS += --enable-gl --disable-glesv2 +CAIRO_DEPENDENCIES += libgl +else +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +CAIRO_CONF_OPTS += --disable-gl --enable-glesv2 +CAIRO_DEPENDENCIES += libgles +else +CAIRO_CONF_OPTS += --disable-gl --disable-glesv2 +endif +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBOPENVG),y) +CAIRO_CONF_OPTS += --enable-vg +CAIRO_DEPENDENCIES += libopenvg +else +CAIRO_CONF_OPTS += --disable-vg +endif + +ifeq ($(BR2_PACKAGE_LZO),y) +CAIRO_DEPENDENCIES += lzo +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +CAIRO_CONF_OPTS += --enable-xlib --enable-xcb --with-x +CAIRO_DEPENDENCIES += xlib_libX11 xlib_libXext +else +CAIRO_CONF_OPTS += --disable-xlib --disable-xcb --without-x +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) +CAIRO_CONF_OPTS += --enable-xlib-xrender +CAIRO_DEPENDENCIES += xlib_libXrender +else +CAIRO_CONF_OPTS += --disable-xlib-xrender +endif + +ifeq ($(BR2_PACKAGE_CAIRO_PS),y) +CAIRO_CONF_OPTS += --enable-ps +CAIRO_DEPENDENCIES += zlib +else +CAIRO_CONF_OPTS += --disable-ps +endif + +ifeq ($(BR2_PACKAGE_CAIRO_PDF),y) +CAIRO_CONF_OPTS += --enable-pdf +CAIRO_DEPENDENCIES += zlib +else +CAIRO_CONF_OPTS += --disable-pdf +endif + +ifeq ($(BR2_PACKAGE_CAIRO_PNG),y) +CAIRO_CONF_OPTS += --enable-png +CAIRO_DEPENDENCIES += libpng +else +CAIRO_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_CAIRO_SCRIPT),y) +CAIRO_CONF_OPTS += --enable-script +else +CAIRO_CONF_OPTS += --disable-script +endif + +ifeq ($(BR2_PACKAGE_CAIRO_SVG),y) +CAIRO_CONF_OPTS += --enable-svg +else +CAIRO_CONF_OPTS += --disable-svg +endif + +ifeq ($(BR2_PACKAGE_CAIRO_TEE),y) +CAIRO_CONF_OPTS += --enable-tee +else +CAIRO_CONF_OPTS += --disable-tee +endif + +ifeq ($(BR2_PACKAGE_CAIRO_XML),y) +CAIRO_CONF_OPTS += --enable-xml +else +CAIRO_CONF_OPTS += --disable-xml +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/cairomm/Config.in b/buildroot/package/cairomm/Config.in new file mode 100644 index 0000000..840549b --- /dev/null +++ b/buildroot/package/cairomm/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CAIROMM + bool "cairomm" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSIGC + help + The cairomm package is a set of C++ bindings for Cairo. + + http://www.gtkmm.org/ + +comment "cairomm needs a toolchain w/ C++, wchar, threads, gcc >= 4.8" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/cairomm/cairomm.hash b/buildroot/package/cairomm/cairomm.hash new file mode 100644 index 0000000..bebd474 --- /dev/null +++ b/buildroot/package/cairomm/cairomm.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/cairomm/1.12/cairomm-1.12.0.sha256sum +sha256 a54ada8394a86182525c0762e6f50db6b9212a2109280d13ec6a0b29bfd1afe6 cairomm-1.12.0.tar.xz diff --git a/buildroot/package/cairomm/cairomm.mk b/buildroot/package/cairomm/cairomm.mk new file mode 100644 index 0000000..07aae97 --- /dev/null +++ b/buildroot/package/cairomm/cairomm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# cairomm +# +################################################################################ + +CAIROMM_VERSION_MAJOR = 1.12 +CAIROMM_VERSION = $(CAIROMM_VERSION_MAJOR).0 +CAIROMM_LICENSE = LGPL-2.0+ +CAIROMM_LICENSE_FILES = COPYING +CAIROMM_SOURCE = cairomm-$(CAIROMM_VERSION).tar.xz +CAIROMM_SITE = http://ftp.gnome.org/pub/gnome/sources/cairomm/$(CAIROMM_VERSION_MAJOR) +CAIROMM_INSTALL_STAGING = YES +CAIROMM_DEPENDENCIES = cairo libglib2 libsigc host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/can-utils/Config.in b/buildroot/package/can-utils/Config.in new file mode 100644 index 0000000..bfa522d --- /dev/null +++ b/buildroot/package/can-utils/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_CAN_UTILS + bool "can-utils" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # clock_nanosleep() + help + SocketCAN is a set of open source CAN drivers and a + networking stack. + This package provides various tools for this stack. + + http://elinux.org/Can-utils + +comment "can-utils needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU diff --git a/buildroot/package/can-utils/can-utils.hash b/buildroot/package/can-utils/can-utils.hash new file mode 100644 index 0000000..64c4cf6 --- /dev/null +++ b/buildroot/package/can-utils/can-utils.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 c4b6b347c1c165a64c1156bb8816bce557945dd770f61b8bdc8fdb7c0744af27 can-utils-c3305fdd515464153d20199db232b6124bc962c0.tar.gz diff --git a/buildroot/package/can-utils/can-utils.mk b/buildroot/package/can-utils/can-utils.mk new file mode 100644 index 0000000..45d5e29 --- /dev/null +++ b/buildroot/package/can-utils/can-utils.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# can-utils +# +################################################################################ + +CAN_UTILS_VERSION = c3305fdd515464153d20199db232b6124bc962c0 +CAN_UTILS_SITE = $(call github,linux-can,can-utils,$(CAN_UTILS_VERSION)) +CAN_UTILS_LICENSE = BSD-3-Clause or GPL-2.0, GPL-2.0+ +CAN_UTILS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/canfestival/0001-install-pkgconfig-module-for-canfestival.patch b/buildroot/package/canfestival/0001-install-pkgconfig-module-for-canfestival.patch new file mode 100644 index 0000000..23f3d89 --- /dev/null +++ b/buildroot/package/canfestival/0001-install-pkgconfig-module-for-canfestival.patch @@ -0,0 +1,74 @@ +From s.martin49@gmail.com Sun Sep 28 14:59:53 2014 +Content-Type: text/plain; charset="us-ascii" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [PATCH] Install pkgconfig module for canfestival +X-Mercurial-Node: c408fdc77aa18fcda81db4f0d038e8a69ba84bb2 +X-Mercurial-Series-Index: 1 +X-Mercurial-Series-Total: 1 +Message-Id: +X-Mercurial-Series-Id: +User-Agent: Mercurial-patchbomb/3.1.1 +Date: Sun, 28 Sep 2014 14:59:53 +0200 +From: Samuel Martin +To: canfestival-devel@lists.sourceforge.net +Cc: Samuel Martin + +# HG changeset patch +# User "Samuel Martin" +# Date 1411906817 -7200 +# Sun Sep 28 14:20:17 2014 +0200 +# Node ID c408fdc77aa18fcda81db4f0d038e8a69ba84bb2 +# Parent 7740ac6fdedc23e1ed6908d3d7db54833c88572b +Install pkgconfig module for canfestival. + +Signed-off-by: Samuel Martin +Cc: Cluadio Laurita + +diff -r 7740ac6fdedc -r c408fdc77aa1 canfestival.pc.in +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/canfestival.pc.in Sun Sep 28 14:20:17 2014 +0200 +@@ -0,0 +1,12 @@ ++PREFIX = SUB_PREFIX ++TARGET = SUB_TARGET ++ ++prefix=${PREFIX} ++libdir=${prefix}/lib ++includedir=${prefix}/include/canfestival ++ ++Name: Canfestival ++Description: Canfestival CANOpen library ++Version: 1 ++Libs: -L${libdir} -lcanfestival -lcanfestival_${TARGET} -lrt -ldl -lpthread ++Cflags: -I${includedir} +diff -r 7740ac6fdedc -r c408fdc77aa1 configure +--- a/configure Thu Jun 12 14:07:16 2014 +0200 ++++ b/configure Sun Sep 28 14:20:17 2014 +0200 +@@ -813,6 +813,10 @@ + MAKEFILES=$MAKEFILES\ drivers/$SUB_TARGET/Makefile.in + fi + ++if [ "$SUB_TARGET" = "unix" ]; then ++ MAKEFILES=$MAKEFILES\ canfestival.pc.in ++fi ++ + if [ "$SUB_TARGET" = "unix" -a "$SUB_TIMERS_DRIVER" = "kernel" ]; then + MAKEFILES=$MAKEFILES\ + \ examples/kerneltest/Makefile.in\ +diff -r 7740ac6fdedc -r c408fdc77aa1 src/Makefile.in +--- a/src/Makefile.in Thu Jun 12 14:07:16 2014 +0200 ++++ b/src/Makefile.in Sun Sep 28 14:20:17 2014 +0200 +@@ -132,9 +132,10 @@ + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< + + install: libcanfestival.a +- mkdir -p $(DESTDIR)$(PREFIX)/lib/ ++ mkdir -p $(DESTDIR)$(PREFIX)/lib/pkgconfig + mkdir -p $(DESTDIR)$(PREFIX)/include/canfestival + cp libcanfestival.a $(DESTDIR)$(PREFIX)/lib/ ++ cp ../canfestival.pc $(DESTDIR)$(PREFIX)/lib/pkgconfig/ + cp ../include/*.h $(DESTDIR)$(PREFIX)/include/canfestival + + uninstall: + + diff --git a/buildroot/package/canfestival/0002-allow-to-set-python-interpreter.patch b/buildroot/package/canfestival/0002-allow-to-set-python-interpreter.patch new file mode 100644 index 0000000..bb60316 --- /dev/null +++ b/buildroot/package/canfestival/0002-allow-to-set-python-interpreter.patch @@ -0,0 +1,176 @@ +From s.martin49@gmail.com Fri Oct 10 23:43:32 2014 +Content-Type: text/plain; charset="us-ascii" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [PATCH] allow to set python interpreter +X-Mercurial-Node: 4805f636c2317d989a5f704ba691369f41be6595 +X-Mercurial-Series-Index: 1 +X-Mercurial-Series-Total: 1 +Message-Id: <4805f636c2317d989a5f.1412977412@bobook> +X-Mercurial-Series-Id: <4805f636c2317d989a5f.1412977412@bobook> +User-Agent: Mercurial-patchbomb/3.1.2 +Date: Fri, 10 Oct 2014 23:43:32 +0200 +From: Samuel Martin +To: canfestival-devel@lists.sourceforge.net +Cc: Samuel Martin + +# HG changeset patch +# User "Samuel Martin" +# Date 1412977082 -7200 +# Fri Oct 10 23:38:02 2014 +0200 +# Node ID 4805f636c2317d989a5f704ba691369f41be6595 +# Parent c408fdc77aa18fcda81db4f0d038e8a69ba84bb2 +allow to set python interpreter + +Canfestival python modules and scripts are not python3 compliant. + +Allow to pass the python interperter to be used to make. + +Signed-off-by: Samuel Martin + +diff --git a/Makefile.in b/Makefile.in +--- a/Makefile.in ++++ b/Makefile.in +@@ -21,6 +21,9 @@ + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # + ++PYTHON ?= python ++export PYTHON ++ + all: objdictedit canfestival examples + + examples: canfestival driver +diff --git a/doc/manual/en/manual.tex b/doc/manual/en/manual.tex +--- a/doc/manual/en/manual.tex ++++ b/doc/manual/en/manual.tex +@@ -1134,6 +1134,7 @@ + python objdictedit.py [od files...] + \end{verbatim} + ++Note that Gnosis modules only run with python2 as interpreter. + + \subsubsection{Installation and usage on Windows} + +diff --git a/examples/CANOpenShell/Makefile.in b/examples/CANOpenShell/Makefile.in +--- a/examples/CANOpenShell/Makefile.in ++++ b/examples/CANOpenShell/Makefile.in +@@ -69,11 +69,11 @@ + + CANOpenShellMasterOD.c: CANOpenShellMasterOD.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py CANOpenShellMasterOD.od CANOpenShellMasterOD.c ++ $(PYTHON) ../../objdictgen/objdictgen.py CANOpenShellMasterOD.od CANOpenShellMasterOD.c + + CANOpenShellSlaveOD.c: CANOpenShellSlaveOD.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py CANOpenShellSlaveOD.od CANOpenShellSlaveOD.c ++ $(PYTHON) ../../objdictgen/objdictgen.py CANOpenShellSlaveOD.od CANOpenShellSlaveOD.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/DS401_Master/Makefile.in b/examples/DS401_Master/Makefile.in +--- a/examples/DS401_Master/Makefile.in ++++ b/examples/DS401_Master/Makefile.in +@@ -53,7 +53,7 @@ + + TestMaster.c: TestMaster.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/DS401_Slave_Gui/Makefile.in b/examples/DS401_Slave_Gui/Makefile.in +--- a/examples/DS401_Slave_Gui/Makefile.in ++++ b/examples/DS401_Slave_Gui/Makefile.in +@@ -59,7 +59,7 @@ + + ObjDict.c: ObjDict.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py ObjDict.od ObjDict.c ++ $(PYTHON) ../../objdictgen/objdictgen.py ObjDict.od ObjDict.c + + .cpp.o: + $(CXX) -c $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) `wx-config --cxxflags` $< -o $@ +diff --git a/examples/SillySlave/Makefile.in b/examples/SillySlave/Makefile.in +--- a/examples/SillySlave/Makefile.in ++++ b/examples/SillySlave/Makefile.in +@@ -53,7 +53,7 @@ + + SillySlave.c: SillySlave.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py SillySlave.od SillySlave.c ++ $(PYTHON) ../../objdictgen/objdictgen.py SillySlave.od SillySlave.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/TestMasterMicroMod/Makefile.in b/examples/TestMasterMicroMod/Makefile.in +--- a/examples/TestMasterMicroMod/Makefile.in ++++ b/examples/TestMasterMicroMod/Makefile.in +@@ -61,7 +61,7 @@ + + TestMaster.c: TestMaster.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/TestMasterSlave/Makefile.in b/examples/TestMasterSlave/Makefile.in +--- a/examples/TestMasterSlave/Makefile.in ++++ b/examples/TestMasterSlave/Makefile.in +@@ -69,11 +69,11 @@ + + TestSlave.c: TestSlave.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestSlave.od TestSlave.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestSlave.od TestSlave.c + + TestMaster.c: TestMaster.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/TestMasterSlaveLSS/Makefile.in b/examples/TestMasterSlaveLSS/Makefile.in +--- a/examples/TestMasterSlaveLSS/Makefile.in ++++ b/examples/TestMasterSlaveLSS/Makefile.in +@@ -64,15 +64,15 @@ + + TestSlaveA.c: TestSlaveA.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestSlaveA.od TestSlaveA.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestSlaveA.od TestSlaveA.c + + TestSlaveB.c: TestSlaveB.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestSlaveB.od TestSlaveB.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestSlaveB.od TestSlaveB.c + + TestMaster.c: TestMaster.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c + + %.o: %.c + $(CC) $(CFLAGS) $(PROG_CFLAGS) ${PROGDEFINES} $(INCLUDES) -o $@ -c $< +diff --git a/examples/kerneltest/Makefile.in b/examples/kerneltest/Makefile.in +--- a/examples/kerneltest/Makefile.in ++++ b/examples/kerneltest/Makefile.in +@@ -79,10 +79,10 @@ + + TestSlave.c: TestSlave.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestSlave.od TestSlave.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestSlave.od TestSlave.c + + TestMaster.c: TestMaster.od + $(MAKE) -C ../../objdictgen gnosis +- python ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c ++ $(PYTHON) ../../objdictgen/objdictgen.py TestMaster.od TestMaster.c + + #endif + + diff --git a/buildroot/package/canfestival/Config.in b/buildroot/package/canfestival/Config.in new file mode 100644 index 0000000..8300e26 --- /dev/null +++ b/buildroot/package/canfestival/Config.in @@ -0,0 +1,90 @@ +config BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS + bool + default y if BR2_i386 || BR2_x86_64 || BR2_powerpc || BR2_arm + +comment "canfestival needs a glibc or uClibc toolchain w/ threads and dynamic library" + depends on BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_MUSL || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +config BR2_PACKAGE_CANFESTIVAL + bool "canfestival" + depends on BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_MUSL # sigval_t + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + CanFestival is an OpenSource CANOpen framework, licensed under + LGPLv2.1 and GPLv2 for some drivers (virtual_kernel, lincan + and copcican_comedi). + + http://www.canfestival.org + +if BR2_PACKAGE_CANFESTIVAL + +choice + prompt "driver" + default BR2_PACKAGE_CANFESTIVAL_SOCKET + +# - The AnaGate CAN(duo) [1], PeakSystem CAN [2] and CO-PCICAN [3] +# drivers are not available (not packaged in Buildroot), so their +# support are disabled. +# - The virtual_kernel driver is disabled because it uses very old +# kernel APIs, that have been renamed, or marked as deprecated or +# removed for a long while. The question has been raised on the +# canfestival mailing list [4]. +# +# [1] http://www.anagate.de/en/index.html +# [2] http://www.peak-system.com/linux/ +# [3] http://www.cosateq.com/ +# [4] http://sourceforge.net/p/canfestival/mailman/message/32519648/ + +config BR2_PACKAGE_CANFESTIVAL_VIRTUAL + bool "virtual" + help + Unix pipe based virtual CAN driver. + +config BR2_PACKAGE_CANFESTIVAL_SOCKET + bool "socket" + help + SocketCAN (the standard mainline CAN bus interface). + + http://developer.berlios.de/projects/socketcan/ + +config BR2_PACKAGE_CANFESTIVAL_LINCAN + bool "lincan" + help + Lincan driver. + + http://www.ocera.org/download/components/WP7/lincan-0.3.3.html + +config BR2_PACKAGE_CANFESTIVAL_CAN4LINUX + bool "can4linux" + help + Can4linux driver. + + http://www.port.de/engl/canprod/hw_can4linux.html + +endchoice + +config BR2_PACKAGE_CANFESTIVAL_DRIVER + string + default "virtual" if BR2_PACKAGE_CANFESTIVAL_VIRTUAL + default "socket" if BR2_PACKAGE_CANFESTIVAL_SOCKET + default "lincan" if BR2_PACKAGE_CANFESTIVAL_LINCAN + default "can4linux" if BR2_PACKAGE_CANFESTIVAL_CAN4LINUX + +config BR2_PACKAGE_CANFESTIVAL_ADDITIONAL_OPTIONS + string "additional configure options" + help + Additional options can be passed directly to the configure + script (e.g.: --MAX_CAN_BUS_ID=..., + --SDO_MAX_LENGTH_TRANSFER=..., --SDO_BLOCK_SIZE=...). + +config BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES + bool "install examples" + help + Install binary application examples. + +endif diff --git a/buildroot/package/canfestival/canfestival.hash b/buildroot/package/canfestival/canfestival.hash new file mode 100644 index 0000000..dc32bd9 --- /dev/null +++ b/buildroot/package/canfestival/canfestival.hash @@ -0,0 +1,3 @@ +# License files, locally calculated +sha256 b5c45f160093a6c2fb7bd0078f50c62f4b4089b6206b0e90b0f122b40a2fe110 COPYING +sha256 d4594b82f4d50840df6a7e9d14132a8c0a3cc05d0ac46d15310a264a1f75447e LICENCE diff --git a/buildroot/package/canfestival/canfestival.mk b/buildroot/package/canfestival/canfestival.mk new file mode 100644 index 0000000..760f14a --- /dev/null +++ b/buildroot/package/canfestival/canfestival.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# canfestival +# +################################################################################ + +CANFESTIVAL_VERSION = 7740ac6fdedc23e1ed6908d3d7db54833c88572b +CANFESTIVAL_SITE = http://dev.automforge.net/CanFestival-3 +CANFESTIVAL_SITE_METHOD = hg +CANFESTIVAL_LICENSE = LGPL-2.1+ +CANFESTIVAL_LICENSE_FILES = COPYING LICENCE +CANFESTIVAL_INSTALL_STAGING = YES +CANFESTIVAL_INSTALLED-y = src drivers +CANFESTIVAL_INSTALLED-$(BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES) += examples + +# Canfestival provides and used some python modules and scripts only compliant +# with python2. +CANFESTIVAL_DEPENDENCIES = host-python + +# canfestival uses its own hand-written build-system. Though there is +# a configure script, it does not use the autotools, so, we use the +# generic-package infrastructure. +define CANFESTIVAL_CONFIGURE_CMDS + cd $(@D) && \ + $(TARGET_CONFIGURE_OPTS) ./configure \ + --target=unix \ + --arch=$(BR2_ARCH) \ + --timers=unix \ + --binutils=$(TARGET_CROSS) \ + --cc="$(TARGET_CC)" \ + --cxx="$(TARGET_CC)" \ + --ld="$(TARGET_CC)" \ + --prefix=/usr \ + --can=$(BR2_PACKAGE_CANFESTIVAL_DRIVER) \ + $(call qstrip,$(BR2_PACKAGE_CANFESTIVAL_ADDITIONAL_OPTIONS)) +endef + +define CANFESTIVAL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) all \ + PYTHON=$(HOST_DIR)/bin/python2 +endef + +define CANFESTIVAL_INSTALL_TARGET_CMDS + for d in $(CANFESTIVAL_INSTALLED-y) ; do \ + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D)/$$d install \ + PYTHON=$(HOST_DIR)/bin/python2 \ + DESTDIR=$(TARGET_DIR) || exit 1 ; \ + done +endef + +define CANFESTIVAL_INSTALL_STAGING_CMDS + for d in $(CANFESTIVAL_INSTALLED-y) ; do \ + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D)/$$d install \ + PYTHON=$(HOST_DIR)/bin/python2 \ + DESTDIR=$(STAGING_DIR) || exit 1 ; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/cannelloni/0001-Add-missing-cstdio-include.patch b/buildroot/package/cannelloni/0001-Add-missing-cstdio-include.patch new file mode 100644 index 0000000..1e4ad00 --- /dev/null +++ b/buildroot/package/cannelloni/0001-Add-missing-cstdio-include.patch @@ -0,0 +1,29 @@ +From d41f5ec6bb66654558757c3ef9cd2a158ee06ccc Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Wed, 15 Feb 2017 09:29:29 +0100 +Subject: [PATCH] Add missing include + +This header defines EOF macro. Some toolchains cannot +find this macro, if is missing. So include it +explicitly. + +Signed-off-by: Yegor Yefremov +--- + sctpthread.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sctpthread.cpp b/sctpthread.cpp +index 6c83fed..d83b472 100644 +--- a/sctpthread.cpp ++++ b/sctpthread.cpp +@@ -19,6 +19,7 @@ + */ + + #include ++#include + #include + + #include +-- +2.1.4 + diff --git a/buildroot/package/cannelloni/Config.in b/buildroot/package/cannelloni/Config.in new file mode 100644 index 0000000..e137e60 --- /dev/null +++ b/buildroot/package/cannelloni/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_CANNELLONI + bool "cannelloni" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # lksctp-tools + depends on BR2_TOOLCHAIN_HAS_THREADS # lksctp-tools + depends on !BR2_STATIC_LIBS # lksctp-tools + help + A SocketCAN over Ethernet tunnel. The tunnel supports both + UDP and SCTP protocols. + + https://github.com/mguentner/cannelloni + +comment "cannelloni needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/cannelloni/cannelloni.hash b/buildroot/package/cannelloni/cannelloni.hash new file mode 100644 index 0000000..c14dceb --- /dev/null +++ b/buildroot/package/cannelloni/cannelloni.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 fe5abb1c9e523049c48dd906603bc762cc55ccd20c16dbec7dc64163b9eefccf cannelloni-20160414.tar.gz diff --git a/buildroot/package/cannelloni/cannelloni.mk b/buildroot/package/cannelloni/cannelloni.mk new file mode 100644 index 0000000..cc99c54 --- /dev/null +++ b/buildroot/package/cannelloni/cannelloni.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# cannelloni +# +################################################################################ + +CANNELLONI_VERSION = 20160414 +CANNELLONI_SITE = $(call github,mguentner,cannelloni,$(CANNELLONI_VERSION)) +CANNELLONI_LICENSE = GPL-2.0 +CANNELLONI_LICENSE_FILES = gpl-2.0.txt + +ifeq ($(BR2_PACKAGE_LKSCTP_TOOLS),y) +CANNELLONI_CONF_OPTS += -DSCTP_SUPPORT=ON +CANNELLONI_DEPENDENCIES += lksctp-tools +else +CANNELLONI_CONF_OPTS += -DSCTP_SUPPORT=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/cantarell/Config.in b/buildroot/package/cantarell/Config.in new file mode 100644 index 0000000..78af96d --- /dev/null +++ b/buildroot/package/cantarell/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CANTARELL + bool "cantarell" + help + The Cantarell font family is a contemporary Humanist + sans serif designed for on-screen reading. + + https://wiki.gnome.org/Projects/CantarellFonts diff --git a/buildroot/package/cantarell/cantarell.hash b/buildroot/package/cantarell/cantarell.hash new file mode 100644 index 0000000..330e786 --- /dev/null +++ b/buildroot/package/cantarell/cantarell.hash @@ -0,0 +1,2 @@ +# From http://ftp.acc.umu.se/pub/gnome/sources/cantarell-fonts/0.0/cantarell-fonts-0.0.25.sha256sum +sha256 14a228aa0b516dfc367b434a850f955a00c57fc549cbb05348e2b150196a737f cantarell-fonts-0.0.25.tar.xz diff --git a/buildroot/package/cantarell/cantarell.mk b/buildroot/package/cantarell/cantarell.mk new file mode 100644 index 0000000..2769b35 --- /dev/null +++ b/buildroot/package/cantarell/cantarell.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# cantarell +# +################################################################################ + +CANTARELL_VERSION_MAJOR = 0.0 +CANTARELL_VERSION = $(CANTARELL_VERSION_MAJOR).25 +CANTARELL_SITE = http://ftp.gnome.org/pub/gnome/sources/cantarell-fonts/$(CANTARELL_VERSION_MAJOR) +CANTARELL_SOURCE = cantarell-fonts-$(CANTARELL_VERSION).tar.xz +CANTARELL_DEPENDENCIES = host-pkgconf +CANTARELL_LICENSE = OFL-1.1 +CANTARELL_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/capnproto/Config.in b/buildroot/package/capnproto/Config.in new file mode 100644 index 0000000..cd9cb64 --- /dev/null +++ b/buildroot/package/capnproto/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_CAPNPROTO + bool "capnproto" + depends on BR2_USE_MMU + depends on BR2_HOST_GCC_AT_LEAST_5 # C++14 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_ATOMIC + help + Cap'n Proto is an insanely fast data interchange format + and capability-based RPC system. Think JSON, except + binary. Or think Protocol Buffers, except faster. In + fact, in benchmarks, Cap'n Proto is INFINITY TIMES + faster than Protocol Buffers. + + https://capnproto.org/index.html + +comment "capnproto needs host and target gcc >= 5 w/ C++14, threads, atomic" + depends on BR2_USE_MMU + depends on !BR2_HOST_GCC_AT_LEAST_5 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HAS_ATOMIC diff --git a/buildroot/package/capnproto/capnproto.hash b/buildroot/package/capnproto/capnproto.hash new file mode 100644 index 0000000..98467f8 --- /dev/null +++ b/buildroot/package/capnproto/capnproto.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 76c7114a3d142ad08b7208b3964a26e72a6320ee81331d3f0b87569fc9c47a28 capnproto-0.7.0.tar.gz +sha256 9564998c8d7f270a61a8b89869a8d17a9d5e3783b64027788b5e339ec8479e10 LICENSE diff --git a/buildroot/package/capnproto/capnproto.mk b/buildroot/package/capnproto/capnproto.mk new file mode 100644 index 0000000..34fb885 --- /dev/null +++ b/buildroot/package/capnproto/capnproto.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# capnproto +# +################################################################################ + +CAPNPROTO_VERSION = 0.7.0 +CAPNPROTO_SITE = $(call github,capnproto,capnproto,v$(CAPNPROTO_VERSION)) +CAPNPROTO_LICENSE = MIT +CAPNPROTO_LICENSE_FILES = LICENSE +CAPNPROTO_INSTALL_STAGING = YES +# Fetched from Github with no configure script +CAPNPROTO_AUTORECONF = YES +CAPNPROTO_CONF_OPTS = --with-external-capnp +# Needs the capnproto compiler on the host to generate C++ code from message +# definitions +CAPNPROTO_DEPENDENCIES = host-autoconf host-capnproto +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CAPNPROTO_CONF_ENV += LIBS=-latomic +endif +# The actual source to be compiled is within a 'c++' subdirectory +CAPNPROTO_SUBDIR = c++ + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/cargo-bin/cargo-bin.hash b/buildroot/package/cargo-bin/cargo-bin.hash new file mode 100644 index 0000000..ea12154 --- /dev/null +++ b/buildroot/package/cargo-bin/cargo-bin.hash @@ -0,0 +1,8 @@ +# From https://static.rust-lang.org/dist/cargo-0.24.0-i686-unknown-linux-gnu.tar.xz.sha256 +sha256 6ffc847e0ee2a1273223ce500f7b212d051e99a6d234e34585d0c55e21a963ea cargo-0.24.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/cargo-0.24.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +sha256 93b953c8c7a2088aef952de8dccd7f6ccf9b21bf94b735d3909961ffe831da8c cargo-0.24.0-x86_64-unknown-linux-gnu.tar.xz +# Locally generated +sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT +sha256 8bd89f9222dc80292f4107347103b693ac66f3a083371f0629ccf42338abe880 LICENSE-THIRD-PARTY diff --git a/buildroot/package/cargo-bin/cargo-bin.mk b/buildroot/package/cargo-bin/cargo-bin.mk new file mode 100644 index 0000000..3c834d9 --- /dev/null +++ b/buildroot/package/cargo-bin/cargo-bin.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# cargo-bin +# +################################################################################ + +CARGO_BIN_VERSION = 0.24.0 +CARGO_BIN_SITE = https://static.rust-lang.org/dist +CARGO_BIN_SOURCE = cargo-$(CARGO_BIN_VERSION)-$(RUSTC_HOST_NAME).tar.xz +CARGO_BIN_LICENSE = Apache-2.0 or MIT +CARGO_BIN_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +$(eval $(host-generic-package)) diff --git a/buildroot/package/cargo/Config.in.host b/buildroot/package/cargo/Config.in.host new file mode 100644 index 0000000..0f1ca30 --- /dev/null +++ b/buildroot/package/cargo/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_CARGO + bool "host cargo" + depends on BR2_PACKAGE_HAS_HOST_RUSTC + help + Cargo is the package manager for the Rust programming + language. + + https://crates.io/ diff --git a/buildroot/package/cargo/cargo.hash b/buildroot/package/cargo/cargo.hash new file mode 100644 index 0000000..2a24e2e --- /dev/null +++ b/buildroot/package/cargo/cargo.hash @@ -0,0 +1,8 @@ +# Locally generated +sha256 a9d4291254a1d622d3c3cb942aaa56ab4059b8d04915c3af234f0362f14722e8 cargo-0.24.0.tar.gz +sha256 dc7240d60a869fa24a68c8734fb7c810c27cca0a6dad52df6279865e4e8e7fae rust-installer-4f994850808a572e2cc8d43f968893c8e942e9bf.tar.gz +sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT +sha256 8bd89f9222dc80292f4107347103b693ac66f3a083371f0629ccf42338abe880 LICENSE-THIRD-PARTY +# From https://src.fedoraproject.org/repo/pkgs/cargo/cargo-0.24.0-vendor.tar.xz/sha512 +sha512 60c12ce49a53cf986490f5a5fdf606f0374677902edfdc4d48ab1ba6094f3f23efc59626cd3776649c9386a9cab2a60332e5693aad6acbcbb92132efdcf9fe21 cargo-0.24.0-vendor.tar.xz diff --git a/buildroot/package/cargo/cargo.mk b/buildroot/package/cargo/cargo.mk new file mode 100644 index 0000000..3fd088d --- /dev/null +++ b/buildroot/package/cargo/cargo.mk @@ -0,0 +1,91 @@ +################################################################################ +# +# cargo +# +################################################################################ + +CARGO_VERSION = 0.24.0 +CARGO_SITE = $(call github,rust-lang,cargo,$(CARGO_VERSION)) +CARGO_LICENSE = Apache-2.0 or MIT +CARGO_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +CARGO_DEPS_SHA512 = 60c12ce49a53cf986490f5a5fdf606f0374677902edfdc4d48ab1ba6094f3f23efc59626cd3776649c9386a9cab2a60332e5693aad6acbcbb92132efdcf9fe21 +CARGO_DEPS_SITE = https://src.fedoraproject.org/repo/pkgs/cargo/$(CARGO_DEPS_SOURCE)/sha512/$(CARGO_DEPS_SHA512) +CARGO_DEPS_SOURCE = cargo-$(CARGO_VERSION)-vendor.tar.xz + +CARGO_INSTALLER_VERSION = 4f994850808a572e2cc8d43f968893c8e942e9bf +CARGO_INSTALLER_SITE = $(call github,rust-lang,rust-installer,$(CARGO_INSTALLER_VERSION)) +CARGO_INSTALLER_SOURCE = rust-installer-$(CARGO_INSTALLER_VERSION).tar.gz + +HOST_CARGO_EXTRA_DOWNLOADS = \ + $(CARGO_DEPS_SITE)/$(CARGO_DEPS_SOURCE) \ + $(CARGO_INSTALLER_SITE)/$(CARGO_INSTALLER_SOURCE) + +HOST_CARGO_DEPENDENCIES = \ + $(BR2_CMAKE_HOST_DEPENDENCY) \ + host-pkgconf \ + host-openssl \ + host-libhttpparser \ + host-libssh2 \ + host-libcurl \ + host-rustc \ + host-cargo-bin + +HOST_CARGO_SNAP_BIN = $(HOST_CARGO_BIN_DIR)/cargo/bin/cargo +HOST_CARGO_HOME = $(HOST_DIR)/share/cargo + +define HOST_CARGO_EXTRACT_DEPS + @mkdir -p $(@D)/vendor + $(call suitable-extractor,$(CARGO_DEPS_SOURCE)) \ + $(DL_DIR)/$(CARGO_DEPS_SOURCE) | \ + $(TAR) --strip-components=1 -C $(@D)/vendor $(TAR_OPTIONS) - +endef + +HOST_CARGO_POST_EXTRACT_HOOKS += HOST_CARGO_EXTRACT_DEPS + +define HOST_CARGO_EXTRACT_INSTALLER + @mkdir -p $(@D)/src/rust-installer + $(call suitable-extractor,$(CARGO_INSTALLER_SOURCE)) \ + $(DL_DIR)/$(CARGO_INSTALLER_SOURCE) | \ + $(TAR) --strip-components=1 -C $(@D)/src/rust-installer $(TAR_OPTIONS) - +endef + +HOST_CARGO_POST_EXTRACT_HOOKS += HOST_CARGO_EXTRACT_INSTALLER + +define HOST_CARGO_SETUP_DEPS + mkdir -p $(@D)/.cargo + ( \ + echo "[source.crates-io]"; \ + echo "registry = 'https://github.com/rust-lang/crates.io-index'"; \ + echo "replace-with = 'vendored-sources'"; \ + echo "[source.vendored-sources]"; \ + echo "directory = '$(@D)/vendor'"; \ + ) > $(@D)/.cargo/config +endef + +HOST_CARGO_PRE_CONFIGURE_HOOKS += HOST_CARGO_SETUP_DEPS + +HOST_CARGO_SNAP_OPTS = \ + --release \ + $(if $(VERBOSE),--verbose) + +HOST_CARGO_ENV = \ + RUSTFLAGS="-Clink-arg=-Wl,-rpath,$(HOST_DIR)/lib" \ + CARGO_HOME=$(HOST_CARGO_HOME) + +define HOST_CARGO_BUILD_CMDS + (cd $(@D); $(HOST_MAKE_ENV) $(HOST_CARGO_ENV) $(HOST_CARGO_SNAP_BIN) \ + build $(HOST_CARGO_SNAP_OPTS)) +endef + +define HOST_CARGO_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/target/release/cargo $(HOST_DIR)/bin/cargo + $(INSTALL) -D package/cargo/config.in \ + $(HOST_DIR)/share/cargo/config + $(SED) 's/@RUSTC_TARGET_NAME@/$(RUSTC_TARGET_NAME)/' \ + $(HOST_DIR)/share/cargo/config + $(SED) 's/@CROSS_PREFIX@/$(notdir $(TARGET_CROSS))/' \ + $(HOST_DIR)/share/cargo/config +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/cargo/config.in b/buildroot/package/cargo/config.in new file mode 100644 index 0000000..47fad02 --- /dev/null +++ b/buildroot/package/cargo/config.in @@ -0,0 +1,2 @@ +[target.@RUSTC_TARGET_NAME@] +linker = "@CROSS_PREFIX@gcc" diff --git a/buildroot/package/cbootimage/0001-bct_dump-don-t-crash-on-devices-without-RSA-support.patch b/buildroot/package/cbootimage/0001-bct_dump-don-t-crash-on-devices-without-RSA-support.patch new file mode 100644 index 0000000..587d67f --- /dev/null +++ b/buildroot/package/cbootimage/0001-bct_dump-don-t-crash-on-devices-without-RSA-support.patch @@ -0,0 +1,43 @@ +From 64045f993c2cd8989838aeaad3d22107d96d5596 Mon Sep 17 00:00:00 2001 +From: Stephen Warren +Date: Thu, 28 Jul 2016 11:37:45 -0600 +Subject: [PATCH] bct_dump: don't crash on devices without RSA support + +format_rsa_param() currently crashes on chips that don't implement +soc_config->get_value_size(); that is, on all chips before T124. Fix the +function not to crash. Better might be to avoid even dumping RSA +parameters on chips which don't support RSA, but that's a larger change +that needs much more work. + +Fixes: 3c3b992a6814 ("Add support to dump rsa related fields for t210") +Cc: Jimmy Zhang +Signed-off-by: Stephen Warren +Signed-off-by: Misha Komarovskiy +--- + src/bct_dump.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/bct_dump.c b/src/bct_dump.c +index 4f50fa2..b4ca9fc 100644 +--- a/src/bct_dump.c ++++ b/src/bct_dump.c +@@ -133,10 +133,14 @@ static void format_rsa_param(parse_token id, char const * message, void * data) + { + #define MAX_BYTE_NUMBER_PER_LINE 16 + u_int8_t *rsa = (u_int8_t *)data; +- int size = g_soc_config->get_value_size(id); +- int byte_index; ++ int size, byte_index; + + printf("%s", message); ++ ++ if (!g_soc_config->get_value_size) ++ return; ++ ++ size = g_soc_config->get_value_size(id); + for (byte_index = 0; byte_index < size; ++byte_index) { + printf(" %02x", *rsa++); + +-- +2.1.4 + diff --git a/buildroot/package/cbootimage/Config.in b/buildroot/package/cbootimage/Config.in new file mode 100644 index 0000000..b798e5d --- /dev/null +++ b/buildroot/package/cbootimage/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_CBOOTIMAGE + bool "cbootimage" + depends on BR2_arm || BR2_armeb + # uses non-standard u_intXX_t types + # https://github.com/NVIDIA/cbootimage/pull/7 + depends on !BR2_TOOLCHAIN_USES_MUSL + help + This project provides a tool which compiles BCT (Boot + Configuration Table) images to place into the boot flash of + a Tegra-based device. + + https://github.com/NVIDIA/cbootimage + +comment "cbootimage needs a glibc or uClibc toolchain" + depends on BR2_arm || BR2_armeb + depends on BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/cbootimage/Config.in.host b/buildroot/package/cbootimage/Config.in.host new file mode 100644 index 0000000..1913afa --- /dev/null +++ b/buildroot/package/cbootimage/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_CBOOTIMAGE + bool "host cbootimage" + depends on BR2_arm || BR2_armeb + help + This project provides a tool which compiles BCT (Boot + Configuration Table) images to place into the boot flash of + a Tegra-based device. + + https://github.com/NVIDIA/cbootimage diff --git a/buildroot/package/cbootimage/cbootimage.hash b/buildroot/package/cbootimage/cbootimage.hash new file mode 100644 index 0000000..96cf172 --- /dev/null +++ b/buildroot/package/cbootimage/cbootimage.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 373c108d7b6778c62a33e59ad0cd5ea9ebb379319a0c8b4cf469eaa8bec5521b cbootimage-v1.7.tar.gz diff --git a/buildroot/package/cbootimage/cbootimage.mk b/buildroot/package/cbootimage/cbootimage.mk new file mode 100644 index 0000000..40a248a --- /dev/null +++ b/buildroot/package/cbootimage/cbootimage.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# cbootimage +# +################################################################################ + +CBOOTIMAGE_VERSION = v1.7 +CBOOTIMAGE_SITE = $(call github,NVIDIA,cbootimage,$(CBOOTIMAGE_VERSION)) +CBOOTIMAGE_LICENSE = GPL-2.0 +CBOOTIMAGE_LICENSE_FILES = COPYING +CBOOTIMAGE_AUTORECONF = YES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/cc-tool/0001-add-missing-stdarg-include.patch b/buildroot/package/cc-tool/0001-add-missing-stdarg-include.patch new file mode 100644 index 0000000..c4f47fd --- /dev/null +++ b/buildroot/package/cc-tool/0001-add-missing-stdarg-include.patch @@ -0,0 +1,18 @@ +Add missing include for va_list + +Fixes the build on uClibc. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/common/log.h +=================================================================== +--- a/src/common/log.h ++++ b/src/common/log.h +@@ -13,6 +13,7 @@ + + #include + #include ++#include + #include "common.h" + + class Log diff --git a/buildroot/package/cc-tool/0002-boost-m4.patch b/buildroot/package/cc-tool/0002-boost-m4.patch new file mode 100644 index 0000000..dc07701 --- /dev/null +++ b/buildroot/package/cc-tool/0002-boost-m4.patch @@ -0,0 +1,883 @@ +The version of boost.m4 initially included in cc-tool has an issue +with gcc5 (one of its tests fails due to the first change described in [1] +"Preprocessor issues"). + +This was fixed upstream (boost.m4 project) in Nov 2014 [2]. + +We add the latest commit [3] of upstream boost.m4 plus a patch from github PR +[4] to add detection for gcc 5.1. + +[1] +https://gcc.gnu.org/gcc-5/porting_to.html + +[2] +https://github.com/tsuna/boost.m4/commit/32553aaf4d5090da19aa0ec33b936982c685009f + +[3] +https://github.com/tsuna/boost.m4/commit/d9ff75b6af66360d76f46f469a26ab18e24e1030 + +[4] +https://github.com/rubenk/boost.m4/commit/b879eb85f112cf054643d2e7f9544c230299c0b2 + +Signed-off-by: Jörg Krause + +diff -purN cc-tool.original/m4/boost.m4 cc-tool/m4/boost.m4 +--- cc-tool.original/m4/boost.m4 2015-07-28 15:43:25.458840000 +0200 ++++ cc-tool/m4/boost.m4 2015-07-28 16:12:02.532791424 +0200 +@@ -1,5 +1,5 @@ + # boost.m4: Locate Boost headers and libraries for autoconf-based projects. +-# Copyright (C) 2007, 2008, 2009, 2010, 2011 Benoit Sigoure ++# Copyright (C) 2007-2011, 2014 Benoit Sigoure + # + # 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 +@@ -22,7 +22,7 @@ + # along with this program. If not, see . + + m4_define([_BOOST_SERIAL], [m4_translit([ +-# serial 16 ++# serial 25 + ], [# + ], [])]) + +@@ -59,7 +59,8 @@ m4_pattern_forbid([^_?(BOOST|Boost)_]) + # It could be useful to turn this into a macro which extracts the + # value of any macro. + m4_define([_BOOST_SED_CPP], +-[AC_LANG_PREPROC_REQUIRE()dnl ++[AC_LANG_PUSH([C++])dnl ++AC_LANG_PREPROC_REQUIRE()dnl + AC_REQUIRE([AC_PROG_SED])dnl + AC_LANG_CONFTEST([AC_LANG_SOURCE([[$2]])]) + AS_IF([dnl eval is necessary to expand ac_cpp. +@@ -71,13 +72,31 @@ dnl strip `\n' with backquotes, not the + dnl boost_cv_lib_version='1_37\r' for instance, which breaks + dnl everything else. + dnl Cannot use 'dnl' after [$4] because a trailing dnl may break AC_CACHE_CHECK ++dnl ++dnl Beware that GCC 5, when expanding macros, may embed # line directives ++dnl a within single line: ++dnl ++dnl # 1 "conftest.cc" ++dnl # 1 "" ++dnl # 1 "" ++dnl # 1 "conftest.cc" ++dnl # 1 "/opt/local/include/boost/version.hpp" 1 3 ++dnl # 2 "conftest.cc" 2 ++dnl boost-lib-version = ++dnl # 2 "conftest.cc" 3 ++dnl "1_56" ++dnl ++dnl So get rid of the # lines, and glue the remaining ones together. + (eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | ++ grep -v '#' | + tr -d '\r' | ++ tr -s '\n' ' ' | + $SED -n -e "$1" >conftest.i 2>&1], + [$3], + [$4]) + rm -rf conftest* +-])# AC_EGREP_CPP ++AC_LANG_POP([C++])dnl ++])# _BOOST_SED_CPP + + + +@@ -206,7 +225,7 @@ AC_LANG_POP([C++])dnl + AC_CACHE_CHECK([for Boost's header version], + [boost_cv_lib_version], + [m4_pattern_allow([^BOOST_LIB_VERSION$])dnl +- _BOOST_SED_CPP([/^boost-lib-version = /{s///;s/\"//g;p;q;}], ++ _BOOST_SED_CPP([[/^boost-lib-version = /{s///;s/[\" ]//g;p;q;}]], + [#include + boost-lib-version = BOOST_LIB_VERSION], + [boost_cv_lib_version=`cat conftest.i`])]) +@@ -214,13 +233,14 @@ boost-lib-version = BOOST_LIB_VERSION], + boost_major_version=`echo "$boost_cv_lib_version" | sed 's/_//;s/_.*//'` + case $boost_major_version in #( + '' | *[[!0-9]]*) +- AC_MSG_ERROR([invalid value: boost_major_version=$boost_major_version]) ++ AC_MSG_ERROR([invalid value: boost_major_version='$boost_major_version']) + ;; + esac + fi + CPPFLAGS=$boost_save_CPPFLAGS + ])# BOOST_REQUIRE + ++ + # BOOST_STATIC() + # -------------- + # Add the "--enable-static-boost" configure argument. If this argument is given +@@ -232,6 +252,7 @@ AC_DEFUN([BOOST_STATIC], + [enable_static_boost=yes], + [enable_static_boost=no])])# BOOST_STATIC + ++ + # BOOST_FIND_HEADER([HEADER-NAME], [ACTION-IF-NOT-FOUND], [ACTION-IF-FOUND]) + # -------------------------------------------------------------------------- + # Wrapper around AC_CHECK_HEADER for Boost headers. Useful to check for +@@ -264,14 +285,16 @@ fi + ])# BOOST_FIND_HEADER + + +-# BOOST_FIND_LIB([LIB-NAME], [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], +-# [CXX-PROLOGUE]) +-# ------------------------------------------------------------------------- +-# Look for the Boost library LIB-NAME (e.g., LIB-NAME = `thread', for +-# libboost_thread). Check that HEADER-NAME works and check that +-# libboost_LIB-NAME can link with the code CXX-TEST. The optional argument +-# CXX-PROLOGUE can be used to include some C++ code before the `main' +-# function. ++# BOOST_FIND_LIBS([COMPONENT-NAME], [CANDIDATE-LIB-NAMES], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Look for the Boost library COMPONENT-NAME (e.g., `thread', for ++# libboost_thread) under the possible CANDIDATE-LIB-NAMES (e.g., ++# "thread_win32 thread"). Check that HEADER-NAME works and check that ++# libboost_LIB-NAME can link with the code CXX-TEST. The optional ++# argument CXX-PROLOGUE can be used to include some C++ code before ++# the `main' function. + # + # Invokes BOOST_FIND_HEADER([HEADER-NAME]) (see above). + # +@@ -285,7 +308,7 @@ fi + # builds. Some sample values for PREFERRED-RT-OPT: (nothing), mt, d, mt-d, gdp + # ... If you want to make sure you have a specific version of Boost + # (eg, >= 1.33) you *must* invoke BOOST_REQUIRE before this macro. +-AC_DEFUN([BOOST_FIND_LIB], ++AC_DEFUN([BOOST_FIND_LIBS], + [AC_REQUIRE([BOOST_REQUIRE])dnl + AC_REQUIRE([_BOOST_FIND_COMPILER_TAG])dnl + AC_REQUIRE([BOOST_STATIC])dnl +@@ -299,32 +322,69 @@ AS_VAR_PUSHDEF([Boost_lib], [boost_cv_li + AS_VAR_PUSHDEF([Boost_lib_LDFLAGS], [boost_cv_lib_$1_LDFLAGS])dnl + AS_VAR_PUSHDEF([Boost_lib_LDPATH], [boost_cv_lib_$1_LDPATH])dnl + AS_VAR_PUSHDEF([Boost_lib_LIBS], [boost_cv_lib_$1_LIBS])dnl +-BOOST_FIND_HEADER([$3]) ++BOOST_FIND_HEADER([$4]) + boost_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" +-# Now let's try to find the library. The algorithm is as follows: first look +-# for a given library name according to the user's PREFERRED-RT-OPT. For each +-# library name, we prefer to use the ones that carry the tag (toolset name). +-# Each library is searched through the various standard paths were Boost is +-# usually installed. If we can't find the standard variants, we try to +-# enforce -mt (for instance on MacOSX, libboost_threads.dylib doesn't exist +-# but there's -obviously- libboost_threads-mt.dylib). + AC_CACHE_CHECK([for the Boost $1 library], [Boost_lib], +- [Boost_lib=no +- case "$2" in #( +- mt | mt-) boost_mt=-mt; boost_rtopt=;; #( +- mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$2" : 'Xmt-*\(.*\)'`;; #( +- *) boost_mt=; boost_rtopt=$2;; ++ [_BOOST_FIND_LIBS($@)]) ++case $Boost_lib in #( ++ (no) _AC_MSG_LOG_CONFTEST ++ AC_MSG_ERROR([cannot find the flags to link with Boost $1]) ++ ;; ++esac ++AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS])dnl ++AC_SUBST(AS_TR_CPP([BOOST_$1_LDPATH]), [$Boost_lib_LDPATH])dnl ++AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])dnl ++AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS])dnl ++CPPFLAGS=$boost_save_CPPFLAGS ++AS_VAR_POPDEF([Boost_lib])dnl ++AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl ++AS_VAR_POPDEF([Boost_lib_LDPATH])dnl ++AS_VAR_POPDEF([Boost_lib_LIBS])dnl ++AC_LANG_POP([C++])dnl ++fi ++]) ++ ++ ++# BOOST_FIND_LIB([LIB-NAME], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Backward compatibility wrapper for BOOST_FIND_LIBS. ++AC_DEFUN([BOOST_FIND_LIB], ++[BOOST_FIND_LIBS([$1], $@)]) ++ ++ ++# _BOOST_FIND_LIBS([LIB-NAME], [CANDIDATE-LIB-NAMES], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Real implementation of BOOST_FIND_LIBS: rely on these local macros: ++# Boost_lib, Boost_lib_LDFLAGS, Boost_lib_LDPATH, Boost_lib_LIBS ++# ++# The algorithm is as follows: first look for a given library name ++# according to the user's PREFERRED-RT-OPT. For each library name, we ++# prefer to use the ones that carry the tag (toolset name). Each ++# library is searched through the various standard paths were Boost is ++# usually installed. If we can't find the standard variants, we try ++# to enforce -mt (for instance on MacOSX, libboost_thread.dylib ++# doesn't exist but there's -obviously- libboost_thread-mt.dylib). ++AC_DEFUN([_BOOST_FIND_LIBS], ++[Boost_lib=no ++ case "$3" in #( ++ (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( ++ (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$3" : 'Xmt-*\(.*\)'`;; #( ++ (*) boost_mt=; boost_rtopt=$3;; + esac + if test $enable_static_boost = yes; then + boost_rtopt="s$boost_rtopt" + fi + # Find the proper debug variant depending on what we've been asked to find. + case $boost_rtopt in #( +- *d*) boost_rt_d=$boost_rtopt;; #( +- *[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn') ++ (*d*) boost_rt_d=$boost_rtopt;; #( ++ (*[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn') + boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( +- *) boost_rt_d='-d';; ++ (*) boost_rt_d='-d';; + esac + # If the PREFERRED-RT-OPT are not empty, prepend a `-'. + test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" +@@ -335,8 +395,8 @@ AC_CACHE_CHECK([for the Boost $1 library + AC_MSG_ERROR([the libext variable is empty, did you invoke Libtool?]) + boost_save_ac_objext=$ac_objext + # Generate the test file. +- AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$3> +-$5], [$4])]) ++ AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$4> ++$6], [$5])]) + dnl Optimization hacks: compiling C++ is slow, especially with Boost. What + dnl we're trying to do here is guess the right combination of link flags + dnl (LIBS / LDFLAGS) to use a given library. This can take several +@@ -358,21 +418,22 @@ dnl start the for loops). + [AC_MSG_ERROR([cannot compile a test that uses Boost $1])]) + ac_objext=$boost_save_ac_objext + boost_failed_libs= +-# Don't bother to ident the 6 nested for loops, only the 2 innermost ones +-# matter. ++# Don't bother to ident the following nested for loops, only the 2 ++# innermost ones matter. ++for boost_lib_ in $2; do + for boost_tag_ in -$boost_cv_lib_tag ''; do + for boost_ver_ in -$boost_cv_lib_version ''; do + for boost_mt_ in $boost_mt -mt ''; do + for boost_rtopt_ in $boost_rtopt '' -d; do + for boost_lib in \ +- boost_$1$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_rtopt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_mt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_ver_ ++ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ ++ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ ++ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ ++ boost_$boost_lib_$boost_tag_$boost_ver_ + do + # Avoid testing twice the same lib + case $boost_failed_libs in #( +- *@$boost_lib@*) continue;; ++ (*@$boost_lib@*) continue;; + esac + # If with_boost is empty, we'll search in /lib first, which is not quite + # right so instead we'll try to a location based on where the headers are. +@@ -382,14 +443,17 @@ for boost_rtopt_ in $boost_rtopt '' -d; + /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ + "$with_boost" C:/Boost/lib /lib* + do +- test -e "$boost_ldpath" || continue ++ # Don't waste time with directories that don't exist. ++ if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then ++ continue ++ fi + boost_save_LDFLAGS=$LDFLAGS + # Are we looking for a static library? + case $boost_ldpath:$boost_rtopt_ in #( +- *?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) ++ (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) + Boost_lib_LIBS="$boost_ldpath/lib$boost_lib.$libext" + test -e "$Boost_lib_LIBS" || continue;; #( +- *) # No: use -lboost_foo to find the shared library. ++ (*) # No: use -lboost_foo to find the shared library. + Boost_lib_LIBS="-l$boost_lib";; + esac + boost_save_LIBS=$LIBS +@@ -403,9 +467,35 @@ dnl generated only once above (before we + LDFLAGS=$boost_save_LDFLAGS + LIBS=$boost_save_LIBS + if test x"$Boost_lib" = xyes; then +- Boost_lib_LDFLAGS="-L$boost_ldpath -Wl,-rpath,$boost_ldpath" ++ # Check or used cached result of whether or not using -R or ++ # -rpath makes sense. Some implementations of ld, such as for ++ # Mac OSX, require -rpath but -R is the flag known to work on ++ # other systems. https://github.com/tsuna/boost.m4/issues/19 ++ AC_CACHE_VAL([boost_cv_rpath_link_ldflag], ++ [case $boost_ldpath in ++ '') # Nothing to do. ++ boost_cv_rpath_link_ldflag= ++ boost_rpath_link_ldflag_found=yes;; ++ *) ++ for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do ++ LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" ++ LIBS="$boost_save_LIBS $Boost_lib_LIBS" ++ _BOOST_AC_LINK_IFELSE([], ++ [boost_rpath_link_ldflag_found=yes ++ break], ++ [boost_rpath_link_ldflag_found=no]) ++ done ++ ;; ++ esac ++ AS_IF([test "x$boost_rpath_link_ldflag_found" != "xyes"], ++ [AC_MSG_ERROR([Unable to determine whether to use -R or -rpath])]) ++ LDFLAGS=$boost_save_LDFLAGS ++ LIBS=$boost_save_LIBS ++ ]) ++ test x"$boost_ldpath" != x && ++ Boost_lib_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" + Boost_lib_LDPATH="$boost_ldpath" +- break 6 ++ break 7 + else + boost_failed_libs="$boost_failed_libs@$boost_lib@" + fi +@@ -415,25 +505,10 @@ done + done + done + done ++done # boost_lib_ + rm -f conftest.$ac_objext + ]) +-case $Boost_lib in #( +- no) _AC_MSG_LOG_CONFTEST +- AC_MSG_ERROR([cannot find the flags to link with Boost $1]) +- ;; +-esac +-AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS])dnl +-AC_SUBST(AS_TR_CPP([BOOST_$1_LDPATH]), [$Boost_lib_LDPATH])dnl +-AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])dnl +-AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS])dnl +-CPPFLAGS=$boost_save_CPPFLAGS +-AS_VAR_POPDEF([Boost_lib])dnl +-AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl +-AS_VAR_POPDEF([Boost_lib_LDPATH])dnl +-AS_VAR_POPDEF([Boost_lib_LIBS])dnl +-AC_LANG_POP([C++])dnl +-fi +-])# BOOST_FIND_LIB ++ + + + # --------------------------------------- # +@@ -475,20 +550,20 @@ BOOST_FIND_HEADER([boost/asio.hpp])]) + + # BOOST_BIND() + # ------------ +-# Look for Boost.Bind ++# Look for Boost.Bind. + BOOST_DEFUN([Bind], + [BOOST_FIND_HEADER([boost/bind.hpp])]) + + + # BOOST_CHRONO() +-# ------------------ +-# Look for Boost.Chrono ++# -------------- ++# Look for Boost.Chrono. + BOOST_DEFUN([Chrono], + [# Do we have to check for Boost.System? This link-time dependency was + # added as of 1.35.0. If we have a version <1.35, we must not attempt to + # find Boost.System as it didn't exist by then. + if test $boost_major_version -ge 135; then +-BOOST_SYSTEM([$1]) ++ BOOST_SYSTEM([$1]) + fi # end of the Boost.System check. + boost_filesystem_save_LIBS=$LIBS + boost_filesystem_save_LDFLAGS=$LDFLAGS +@@ -499,14 +574,40 @@ BOOST_FIND_LIB([chrono], [$1], + [boost/chrono.hpp], + [boost::chrono::thread_clock d;]) + if test $enable_static_boost = yes && test $boost_major_version -ge 135; then +- AC_SUBST([BOOST_FILESYSTEM_LIBS], ["$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS"]) ++ BOOST_CHRONO_LIBS="$BOOST_CHRONO_LIBS $BOOST_SYSTEM_LIBS" + fi + LIBS=$boost_filesystem_save_LIBS + LDFLAGS=$boost_filesystem_save_LDFLAGS +- + ])# BOOST_CHRONO + + ++# BOOST_CONTEXT([PREFERRED-RT-OPT]) ++# ----------------------------------- ++# Look for Boost.Context. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. This library was introduced in Boost ++# 1.51.0 ++BOOST_DEFUN([Context], ++[BOOST_FIND_LIB([context], [$1], ++ [boost/context/all.hpp],[[ ++// creates a stack ++void * stack_pointer = new void*[4096]; ++std::size_t const size = sizeof(void*[4096]); ++ ++// context fc uses f() as context function ++// fcontext_t is placed on top of context stack ++// a pointer to fcontext_t is returned ++fc = ctx::make_fcontext(stack_pointer, size, f); ++return ctx::jump_fcontext(&fcm, fc, 3) == 6;]],[dnl ++namespace ctx = boost::context; ++// context ++static ctx::fcontext_t fcm, *fc; ++// context-function ++static void f(intptr_t i) { ++ ctx::jump_fcontext(fc, &fcm, i * 2); ++}]) ++])# BOOST_CONTEXT ++ ++ + # BOOST_CONVERSION() + # ------------------ + # Look for Boost.Conversion (cast / lexical_cast) +@@ -516,6 +617,52 @@ BOOST_FIND_HEADER([boost/lexical_cast.hp + ])# BOOST_CONVERSION + + ++# BOOST_COROUTINE([PREFERRED-RT-OPT]) ++# ----------------------------------- ++# Look for Boost.Coroutine. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. This library was introduced in Boost ++# 1.53.0 ++BOOST_DEFUN([Coroutine], ++[ ++boost_coroutine_save_LIBS=$LIBS ++boost_coroutine_save_LDFLAGS=$LDFLAGS ++# Link-time dependency from coroutine to context ++BOOST_CONTEXT([$1]) ++# Starting from Boost 1.55 a dependency on Boost.System is added ++if test $boost_major_version -ge 155; then ++ BOOST_SYSTEM([$1]) ++fi ++m4_pattern_allow([^BOOST_(CONTEXT|SYSTEM)_(LIBS|LDFLAGS)]) ++LIBS="$LIBS $BOOST_CONTEXT_LIBS $BOOST_SYSTEM_LIBS" ++LDFLAGS="$LDFLAGS $BOOST_CONTEXT_LDFLAGS" ++ ++BOOST_FIND_LIB([coroutine], [$1], ++ [boost/coroutine/coroutine.hpp], ++ [boost::coroutines::coroutine< int(int) > coro; coro.empty();]) ++ ++# Link-time dependency from coroutine to context, existed only in 1.53, in 1.54 ++# coroutine doesn't use context from its headers but from its library. ++if test $boost_major_version -eq 153 || test $enable_static_boost = yes && test $boost_major_version -ge 154; then ++ BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_CONTEXT_LIBS" ++ BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_CONTEXT_LDFLAGS" ++fi ++if test $enable_static_boost = yes && test $boost_major_version -ge 155; then ++ BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_SYSTEM_LIBS" ++ BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_SYSTEM_LDFLAGS" ++fi ++LIBS=$boost_coroutine_save_LIBS ++LDFLAGS=$boost_coroutine_save_LDFLAGS ++])# BOOST_COROUTINE ++ ++ ++# BOOST_CRC() ++# ----------- ++# Look for Boost.CRC ++BOOST_DEFUN([CRC], ++[BOOST_FIND_HEADER([boost/crc.hpp]) ++])# BOOST_CRC ++ ++ + # BOOST_DATE_TIME([PREFERRED-RT-OPT]) + # ----------------------------------- + # Look for Boost.Date_Time. For the documentation of PREFERRED-RT-OPT, see the +@@ -538,7 +685,7 @@ BOOST_DEFUN([Filesystem], + # added as of 1.35.0. If we have a version <1.35, we must not attempt to + # find Boost.System as it didn't exist by then. + if test $boost_major_version -ge 135; then +-BOOST_SYSTEM([$1]) ++ BOOST_SYSTEM([$1]) + fi # end of the Boost.System check. + boost_filesystem_save_LIBS=$LIBS + boost_filesystem_save_LDFLAGS=$LDFLAGS +@@ -548,23 +695,34 @@ LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" + BOOST_FIND_LIB([filesystem], [$1], + [boost/filesystem/path.hpp], [boost::filesystem::path p;]) + if test $enable_static_boost = yes && test $boost_major_version -ge 135; then +- AC_SUBST([BOOST_FILESYSTEM_LIBS], ["$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS"]) ++ BOOST_FILESYSTEM_LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" + fi + LIBS=$boost_filesystem_save_LIBS + LDFLAGS=$boost_filesystem_save_LDFLAGS + ])# BOOST_FILESYSTEM + + ++# BOOST_FLYWEIGHT() ++# ----------------- ++# Look for Boost.Flyweight. ++BOOST_DEFUN([Flyweight], ++[dnl There's a hidden dependency on pthreads. ++AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl ++BOOST_FIND_HEADER([boost/flyweight.hpp]) ++AC_SUBST([BOOST_FLYWEIGHT_LIBS], [$boost_cv_pthread_flag]) ++]) ++ ++ + # BOOST_FOREACH() + # --------------- +-# Look for Boost.Foreach ++# Look for Boost.Foreach. + BOOST_DEFUN([Foreach], + [BOOST_FIND_HEADER([boost/foreach.hpp])]) + + + # BOOST_FORMAT() + # -------------- +-# Look for Boost.Format ++# Look for Boost.Format. + # Note: we can't check for boost/format/format_fwd.hpp because the header isn't + # standalone. It can't be compiled because it triggers the following error: + # boost/format/detail/config_macros.hpp:88: error: 'locale' in namespace 'std' +@@ -580,6 +738,14 @@ BOOST_DEFUN([Function], + [BOOST_FIND_HEADER([boost/function.hpp])]) + + ++# BOOST_GEOMETRY() ++# ---------------- ++# Look for Boost.Geometry (new since 1.47.0). ++BOOST_DEFUN([Geometry], ++[BOOST_FIND_HEADER([boost/geometry.hpp]) ++])# BOOST_GEOMETRY ++ ++ + # BOOST_GRAPH([PREFERRED-RT-OPT]) + # ------------------------------- + # Look for Boost.Graphs. For the documentation of PREFERRED-RT-OPT, see the +@@ -615,9 +781,18 @@ BOOST_DEFUN([Lambda], + [BOOST_FIND_HEADER([boost/lambda/lambda.hpp])]) + + ++# BOOST_LOCALE() ++# -------------- ++# Look for Boost.Locale ++BOOST_DEFUN([Locale], ++[BOOST_FIND_LIB([locale], [$1], ++ [boost/locale.hpp], ++ [[boost::locale::generator gen; std::locale::global(gen(""));]]) ++])# BOOST_LOCALE ++ + # BOOST_LOG([PREFERRED-RT-OPT]) + # ----------------------------- +-# Look for Boost.Log For the documentation of PREFERRED-RT-OPT, see the ++# Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. + BOOST_DEFUN([Log], + [BOOST_FIND_LIB([log], [$1], +@@ -628,12 +803,12 @@ BOOST_DEFUN([Log], + + # BOOST_LOG_SETUP([PREFERRED-RT-OPT]) + # ----------------------------------- +-# Look for Boost.Log For the documentation of PREFERRED-RT-OPT, see the ++# Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. + BOOST_DEFUN([Log_Setup], + [AC_REQUIRE([BOOST_LOG])dnl + BOOST_FIND_LIB([log_setup], [$1], +- [boost/log/utility/init/from_settings.hpp], ++ [boost/log/utility/setup/from_settings.hpp], + [boost::log::basic_settings bs; bs.empty();]) + ])# BOOST_LOG_SETUP + +@@ -650,6 +825,29 @@ BOOST_DEFUN([Math], + [BOOST_FIND_HEADER([boost/math/special_functions.hpp])]) + + ++# BOOST_MPI([PREFERRED-RT-OPT]) ++# ------------------------------- ++# Look for Boost MPI. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. Uses MPICXX variable if it is ++# set, otherwise tries CXX ++# ++BOOST_DEFUN([MPI], ++[boost_save_CXX=${CXX} ++boost_save_CXXCPP=${CXXCPP} ++if test x"${MPICXX}" != x; then ++ CXX=${MPICXX} ++ CXXCPP="${MPICXX} -E" ++fi ++BOOST_FIND_LIB([mpi], [$1], ++ [boost/mpi.hpp], ++ [int argc = 0; ++ char **argv = 0; ++ boost::mpi::environment env(argc,argv);]) ++CXX=${boost_save_CXX} ++CXXCPP=${boost_save_CXXCPP} ++])# BOOST_MPI ++ ++ + # BOOST_MULTIARRAY() + # ------------------ + # Look for Boost.MultiArray +@@ -657,6 +855,14 @@ BOOST_DEFUN([MultiArray], + [BOOST_FIND_HEADER([boost/multi_array.hpp])]) + + ++# BOOST_NUMERIC_UBLAS() ++# -------------------------- ++# Look for Boost.NumericUblas (Basic Linear Algebra) ++BOOST_DEFUN([Numeric_Ublas], ++[BOOST_FIND_HEADER([boost/numeric/ublas/vector.hpp]) ++])# BOOST_NUMERIC_UBLAS ++ ++ + # BOOST_NUMERIC_CONVERSION() + # -------------------------- + # Look for Boost.NumericConversion (policy-based numeric conversion) +@@ -679,6 +885,12 @@ BOOST_DEFUN([Preprocessor], + [BOOST_FIND_HEADER([boost/preprocessor/repeat.hpp])]) + + ++# BOOST_RANGE() ++# -------------------- ++# Look for Boost.Range ++BOOST_DEFUN([Range], ++[BOOST_FIND_HEADER([boost/range/adaptors.hpp])]) ++ + # BOOST_UNORDERED() + # ----------------- + # Look for Boost.Unordered +@@ -725,9 +937,9 @@ BOOST_DEFUN([Python], + _BOOST_PYTHON_CONFIG([LDFLAGS], [ldflags]) + _BOOST_PYTHON_CONFIG([LIBS], [libs]) + m4_pattern_allow([^BOOST_PYTHON_MODULE$])dnl +-BOOST_FIND_LIB([python], [$1], +- [boost/python.hpp], +- [], [BOOST_PYTHON_MODULE(empty) {}]) ++BOOST_FIND_LIBS([python], [python python3], [$1], ++ [boost/python.hpp], ++ [], [BOOST_PYTHON_MODULE(empty) {}]) + CPPFLAGS=$boost_python_save_CPPFLAGS + LDFLAGS=$boost_python_save_LDFLAGS + LIBS=$boost_python_save_LIBS +@@ -774,17 +986,13 @@ BOOST_DEFUN([Signals], + [boost::signal s;]) + ])# BOOST_SIGNALS + ++ + # BOOST_SIGNALS2() +-# ----------------- +-# Look for Boost.Signals2 ++# ---------------- ++# Look for Boost.Signals2 (new since 1.39.0). + BOOST_DEFUN([Signals2], +-[BOOST_FIND_HEADER([boost/signals2.hpp])]) +- +-# BOOST_CRC() +-# ----------------- +-# Look for Boost.CRC +-BOOST_DEFUN([CRC], +-[BOOST_FIND_HEADER([boost/crc.hpp])]) ++[BOOST_FIND_HEADER([boost/signals2.hpp]) ++])# BOOST_SIGNALS2 + + + # BOOST_SMART_PTR() +@@ -837,19 +1045,18 @@ BOOST_FIND_LIB([unit_test_framework], [$ + ])# BOOST_TEST + + +-# BOOST_THREADS([PREFERRED-RT-OPT]) ++# BOOST_THREAD([PREFERRED-RT-OPT]) + # --------------------------------- + # Look for Boost.Thread. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-# FIXME: Provide an alias "BOOST_THREAD". +-BOOST_DEFUN([Threads], ++BOOST_DEFUN([Thread], + [dnl Having the pthread flag is required at least on GCC3 where + dnl boost/thread.hpp would complain if we try to compile without + dnl -pthread on GNU/Linux. + AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl +-boost_threads_save_LIBS=$LIBS +-boost_threads_save_LDFLAGS=$LDFLAGS +-boost_threads_save_CPPFLAGS=$CPPFLAGS ++boost_thread_save_LIBS=$LIBS ++boost_thread_save_LDFLAGS=$LDFLAGS ++boost_thread_save_CPPFLAGS=$CPPFLAGS + # Link-time dependency from thread to system was added as of 1.49.0. + if test $boost_major_version -ge 149; then + BOOST_SYSTEM([$1]) +@@ -857,36 +1064,26 @@ fi # end of the Boost.System check. + m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl + LIBS="$LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag" + LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" +-# Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, +-# boost/thread.hpp will trigger a #error if -pthread isn't used: +-# boost/config/requires_threads.hpp:47:5: #error "Compiler threading support +-# is not turned on. Please set the correct command line options for +-# threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" + CPPFLAGS="$CPPFLAGS $boost_cv_pthread_flag" + + # When compiling for the Windows platform, the threads library is named + # differently. + case $host_os in +- (*mingw*) +- BOOST_FIND_LIB([thread_win32], [$1], +- [boost/thread.hpp], [boost::thread t; boost::mutex m;]) +- BOOST_THREAD_LDFLAGS=$BOOST_THREAD_WIN32_LDFLAGS +- BOOST_THREAD_LDPATH=$BOOST_THREAD_WIN32_LDPATH +- BOOST_THREAD_LIBS=$BOOST_THREAD_WIN32_LIBS +- ;; +- (*) +- BOOST_FIND_LIB([thread], [$1], +- [boost/thread.hpp], [boost::thread t; boost::mutex m;]) +- ;; ++ (*mingw*) boost_thread_lib_ext=_win32;; + esac ++BOOST_FIND_LIBS([thread], [thread$boost_thread_lib_ext], ++ [$1], ++ [boost/thread.hpp], [boost::thread t; boost::mutex m;]) + + BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag" + BOOST_THREAD_LDFLAGS="$BOOST_SYSTEM_LDFLAGS" + BOOST_CPPFLAGS="$BOOST_CPPFLAGS $boost_cv_pthread_flag" +-LIBS=$boost_threads_save_LIBS +-LDFLAGS=$boost_threads_save_LDFLAGS +-CPPFLAGS=$boost_threads_save_CPPFLAGS +-])# BOOST_THREADS ++LIBS=$boost_thread_save_LIBS ++LDFLAGS=$boost_thread_save_LDFLAGS ++CPPFLAGS=$boost_thread_save_CPPFLAGS ++])# BOOST_THREAD ++ ++AU_ALIAS([BOOST_THREADS], [BOOST_THREAD]) + + + # BOOST_TOKENIZER() +@@ -935,10 +1132,23 @@ BOOST_DEFUN([Variant], + BOOST_FIND_HEADER([boost/variant.hpp])]) + + ++# BOOST_POINTER_CONTAINER() ++# ------------------------ ++# Look for Boost.PointerContainer ++BOOST_DEFUN([Pointer_Container], ++[BOOST_FIND_HEADER([boost/ptr_container/ptr_deque.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_list.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_vector.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_array.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_set.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_map.hpp]) ++])# BOOST_POINTER_CONTAINER ++ ++ + # BOOST_WAVE([PREFERRED-RT-OPT]) + # ------------------------------ + # NOTE: If you intend to use Wave/Spirit with thread support, make sure you +-# call BOOST_THREADS first. ++# call BOOST_THREAD first. + # Look for Boost.Wave. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. + BOOST_DEFUN([Wave], +@@ -973,8 +1183,16 @@ BOOST_DEFUN([Xpressive], + + # _BOOST_PTHREAD_FLAG() + # --------------------- +-# Internal helper for BOOST_THREADS. Based on ACX_PTHREAD: +-# http://autoconf-archive.cryp.to/acx_pthread.html ++# Internal helper for BOOST_THREAD. Computes boost_cv_pthread_flag ++# which must be used in CPPFLAGS and LIBS. ++# ++# Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, ++# boost/thread.hpp will trigger a #error if -pthread isn't used: ++# boost/config/requires_threads.hpp:47:5: #error "Compiler threading support ++# is not turned on. Please set the correct command line options for ++# threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" ++# ++# Based on ACX_PTHREAD: http://autoconf-archive.cryp.to/acx_pthread.html + AC_DEFUN([_BOOST_PTHREAD_FLAG], + [AC_REQUIRE([AC_PROG_CXX])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl +@@ -1042,6 +1260,14 @@ AC_LANG_POP([C++])dnl + m4_define([_BOOST_gcc_test], + ["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC @ gcc$1$2"])dnl + ++# _BOOST_mingw_test(MAJOR, MINOR) ++# ----------------------------- ++# Internal helper for _BOOST_FIND_COMPILER_TAG. ++m4_define([_BOOST_mingw_test], ++["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC && \ ++ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ ++ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw$1$2"])dnl ++ + + # _BOOST_FIND_COMPILER_TAG() + # -------------------------- +@@ -1051,7 +1277,8 @@ m4_define([_BOOST_gcc_test], + AC_DEFUN([_BOOST_FIND_COMPILER_TAG], + [AC_REQUIRE([AC_PROG_CXX])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], [boost_cv_lib_tag], ++AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], ++ [boost_cv_lib_tag], + [boost_cv_lib_tag=unknown + if test x$boost_cv_inc_path != xno; then + AC_LANG_PUSH([C++])dnl +@@ -1069,14 +1296,31 @@ if test x$boost_cv_inc_path != xno; then + # I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines + # the same defines as GCC's). + for i in \ ++ _BOOST_mingw_test(5, 1) \ ++ _BOOST_gcc_test(5, 1) \ ++ _BOOST_mingw_test(5, 0) \ ++ _BOOST_gcc_test(5, 0) \ ++ _BOOST_mingw_test(4, 10) \ ++ _BOOST_gcc_test(4, 10) \ ++ _BOOST_mingw_test(4, 9) \ ++ _BOOST_gcc_test(4, 9) \ ++ _BOOST_mingw_test(4, 8) \ + _BOOST_gcc_test(4, 8) \ ++ _BOOST_mingw_test(4, 7) \ + _BOOST_gcc_test(4, 7) \ ++ _BOOST_mingw_test(4, 6) \ + _BOOST_gcc_test(4, 6) \ ++ _BOOST_mingw_test(4, 5) \ + _BOOST_gcc_test(4, 5) \ ++ _BOOST_mingw_test(4, 4) \ + _BOOST_gcc_test(4, 4) \ ++ _BOOST_mingw_test(4, 3) \ + _BOOST_gcc_test(4, 3) \ ++ _BOOST_mingw_test(4, 2) \ + _BOOST_gcc_test(4, 2) \ ++ _BOOST_mingw_test(4, 1) \ + _BOOST_gcc_test(4, 1) \ ++ _BOOST_mingw_test(4, 0) \ + _BOOST_gcc_test(4, 0) \ + "defined __GNUC__ && __GNUC__ == 3 && !defined __ICC \ + && (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ +@@ -1142,6 +1386,7 @@ fi])dnl end of AC_CACHE_CHECK + # Thread) flavors of Boost. Sets boost_guess_use_mt accordingly. + AC_DEFUN([_BOOST_GUESS_WHETHER_TO_USE_MT], + [# Check whether we do better use `mt' even though we weren't ask to. ++AC_LANG_PUSH([C++])dnl + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #if defined _REENTRANT || defined _MT || defined __MT__ + /* use -mt */ +@@ -1149,6 +1394,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + # error MT not needed + #endif + ]])], [boost_guess_use_mt=:], [boost_guess_use_mt=false]) ++AC_LANG_POP([C++])dnl + ]) + + # _BOOST_AC_LINK_IFELSE(PROGRAM, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +@@ -1172,11 +1418,11 @@ boost_use_source=: + test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && + _AS_ECHO_LOG([re-using the existing conftest.$ac_objext]) + AS_IF([_AC_DO_STDERR($ac_link) && { +- test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || +- test ! -s conftest.err ++ test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || ++ test ! -s conftest.err + } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_executable_p conftest$ac_exeext ++ test "$cross_compiling" = yes || ++ $as_executable_p conftest$ac_exeext + dnl FIXME: use AS_TEST_X instead when 2.61 is widespread enough. + }], + [$2], diff --git a/buildroot/package/cc-tool/0003-Makefile.am-do-not-overwrite-LIBS.patch b/buildroot/package/cc-tool/0003-Makefile.am-do-not-overwrite-LIBS.patch new file mode 100644 index 0000000..31a64ca --- /dev/null +++ b/buildroot/package/cc-tool/0003-Makefile.am-do-not-overwrite-LIBS.patch @@ -0,0 +1,50 @@ +From af3098e05535ddb93bb065770d87738e46089efc Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 20 Aug 2017 15:06:01 +0200 +Subject: [PATCH] Makefile.am: do not overwrite LIBS + +LIBS is meant to be passed on the command line with additional +libraries, it should not be overwritten by Makefile.am. + +Instead: + + - Use LDADD to link with external libraries + + - Use _LDFLAGS for additional, non-libraries, linker flags + +Signed-off-by: Thomas Petazzoni +Upstream: https://github.com/dashesy/cc-tool/commit/553f9c601646af0c6e3f6150d0fa3bc63ff56416 +--- + Makefile.am | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index e79e47b..ed83d91 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -10,14 +10,12 @@ AM_LDFLAGS = \ + + # $(BOOST_THREADS_LDFLAGS) + +-LDADD = $(LIBUSB_LIBS) +- +-LIBS = -s \ ++LDADD = $(LIBUSB_LIBS) \ + $(BOOST_FILESYSTEM_LIBS) \ + $(BOOST_REGEX_LIBS) \ + $(BOOST_SYSTEM_LIBS) \ + $(BOOST_PROGRAM_OPTIONS_LIBS) +- ++ + # $(BOOST_THREADS_LIBS) + + bin_PROGRAMS=cc-tool +@@ -30,4 +28,4 @@ cc_tool_SOURCES=src/main.cpp src/application/cc_flasher.cpp src/application/cc_b + src/programmer/cc_253x_254x.cpp src/programmer/cc_251x_111x.cpp \ + src/programmer/cc_243x.cpp src/programmer/cc_programmer.cpp \ + src/programmer/cc_unit_driver.cpp src/programmer/cc_unit_info.cpp +- ++cc_tool_LDFLAGS=-s +-- +2.9.4 + diff --git a/buildroot/package/cc-tool/0004-m4-boost.m4-fix-rpath-option-check-for-static-linkin.patch b/buildroot/package/cc-tool/0004-m4-boost.m4-fix-rpath-option-check-for-static-linkin.patch new file mode 100644 index 0000000..acff107 --- /dev/null +++ b/buildroot/package/cc-tool/0004-m4-boost.m4-fix-rpath-option-check-for-static-linkin.patch @@ -0,0 +1,44 @@ +From 5e74a15ce1e093b4d8e83cdade60a43b09d698de Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 20 Aug 2017 15:25:06 +0200 +Subject: [PATCH] m4/boost.m4: fix rpath option check for static linking + +When statically linking, the order in which -l options are passed is +important. The contents of the LIBS option passed to the configure +environment should be passed *after* other -l options used internally +by the package. + +For example, libboost_program_options may used symbols from the +libatomic library, and in this case, one need to pass LIBS="-latomic" +to cc-tool's configure script. When using dynamic linking, this works +fine, because the rpath test does "-latomic +-lboost_program_options". However, when statically linking, this +doesn't work because libboost_program_options uses symbols from +libatomic, so -latomic must be passed *after* -lboost_program_options. + +Therefore, this commit inverts the list of variables used to construct +LIBS before doing the _BOOST_AC_LINK_IFELSE() test detecting the rpath +option to be used. Indeed, $boost_save_LIBS contains the previously +saved LIBS variable, and should be passed after $Boost_lib_LIBS. + +Signed-off-by: Thomas Petazzoni +--- + m4/boost.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/m4/boost.m4 b/m4/boost.m4 +index be470a7..f1825ba 100644 +--- a/m4/boost.m4 ++++ b/m4/boost.m4 +@@ -479,7 +479,7 @@ dnl generated only once above (before we start the for loops). + *) + for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do + LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" +- LIBS="$boost_save_LIBS $Boost_lib_LIBS" ++ LIBS="$Boost_lib_LIBS $boost_save_LIBS" + _BOOST_AC_LINK_IFELSE([], + [boost_rpath_link_ldflag_found=yes + break], +-- +2.9.4 + diff --git a/buildroot/package/cc-tool/Config.in b/buildroot/package/cc-tool/Config.in new file mode 100644 index 0000000..b2cf979 --- /dev/null +++ b/buildroot/package/cc-tool/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_CC_TOOL + bool "cc-tool" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # boost-filesystem + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SIGNALS + help + cc-tool provides support for Texas Instruments CC Debugger + for Linux OS in order to program 8051-based System-On-Chip + devices: CC254x CC253x CC243x CC251x CC111x + + http://sourceforge.net/projects/cctool/ + +comment "cc-tool needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/cc-tool/cc-tool.hash b/buildroot/package/cc-tool/cc-tool.hash new file mode 100644 index 0000000..81844ee --- /dev/null +++ b/buildroot/package/cc-tool/cc-tool.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/cctool/files/ +sha1 f313e55f019ea5338438633f5b5e689b699343e1 cc-tool-0.26-src.tgz +md5 26960676f3e6264e612c299fbf8ec5ea cc-tool-0.26-src.tgz diff --git a/buildroot/package/cc-tool/cc-tool.mk b/buildroot/package/cc-tool/cc-tool.mk new file mode 100644 index 0000000..e170e06 --- /dev/null +++ b/buildroot/package/cc-tool/cc-tool.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# cc-tool +# +################################################################################ + +CC_TOOL_VERSION = 0.26 +CC_TOOL_SITE = http://downloads.sourceforge.net/project/cctool +CC_TOOL_SOURCE = cc-tool-$(CC_TOOL_VERSION)-src.tgz +CC_TOOL_LICENSE = GPL-2.0 +CC_TOOL_LICENSE_FILES = COPYING +CC_TOOL_DEPENDENCIES = boost libusb + +# we're patching boost.m4 +CC_TOOL_AUTORECONF = YES + +# Configure script "discovers" boost in /usr/local if not given explicitly +CC_TOOL_CONF_OPTS = --with-boost=$(STAGING_DIR)/usr +CC_TOOL_CONF_ENV = LIBS="$(CC_TOOL_LIBS)" + +# Help boost.m4 find the Boost Regex library, which needs the pthread +# library, but isn't detected using a modern (pkg-config) mechanism. +ifeq ($(BR2_STATIC_LIBS),y) +CC_TOOL_LIBS += -lpthread +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +CC_TOOL_LIBS += -latomic +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ccache/0001-Convert-argument-to-sysroot-option-to-relative-path.patch b/buildroot/package/ccache/0001-Convert-argument-to-sysroot-option-to-relative-path.patch new file mode 100644 index 0000000..33db7d4 --- /dev/null +++ b/buildroot/package/ccache/0001-Convert-argument-to-sysroot-option-to-relative-path.patch @@ -0,0 +1,43 @@ +From fe42d6f7b739e8d42811bf46bcccfafa728847a2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Mathias=20De=20Mar=C3=A9?= +Date: Mon, 19 Sep 2016 10:38:13 +0200 +Subject: [PATCH] Convert argument to '--sysroot' option to relative path + +Previously, only the argument to '--sysroot=' was converted. +This changeset adds support for '--sysroot'. + +Signed-off-by: Brandon Maier +Signed-off-by: Matt Weber +--- + ccache.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/ccache.c b/ccache.c +index 8ffadcc..76139b9 100644 +--- a/ccache.c ++++ b/ccache.c +@@ -2407,6 +2407,21 @@ cc_process_args(struct args *args, struct args **preprocessor_args, + free(option); + continue; + } ++ // Alternate form of specifying sysroot without = ++ if (str_eq(argv[i], "--sysroot")) { ++ if (i == argc-1) { ++ cc_log("Missing argument to %s", argv[i]); ++ stats_update(STATS_ARGS); ++ result = false; ++ goto out; ++ } ++ args_add(stripped_args, argv[i]); ++ char *relpath = make_relative_path(x_strdup(argv[i+1])); ++ args_add(stripped_args, relpath); ++ i++; ++ free(relpath); ++ continue; ++ } + if (str_startswith(argv[i], "-Wp,")) { + if (str_eq(argv[i], "-Wp,-P") + || strstr(argv[i], ",-P,") +-- +2.8.3 + diff --git a/buildroot/package/ccache/ccache.hash b/buildroot/package/ccache/ccache.hash new file mode 100644 index 0000000..c22394b --- /dev/null +++ b/buildroot/package/ccache/ccache.hash @@ -0,0 +1,3 @@ +# Verified key https://samba.org/ftp/ccache/ccache-3.3.4.tar.xz.asc - sha256 computed locally +sha256 24f15bf389e38c41548c9c259532187774ec0cb9686c3497bbb75504c8dc404f ccache-3.3.4.tar.xz +sha256 190576a6e938760ec8113523e6fd380141117303e90766cc4802e770422b30c6 ccache-3.3.5.tar.xz diff --git a/buildroot/package/ccache/ccache.mk b/buildroot/package/ccache/ccache.mk new file mode 100644 index 0000000..552a611 --- /dev/null +++ b/buildroot/package/ccache/ccache.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# ccache +# +################################################################################ + +CCACHE_VERSION = 3.3.5 +CCACHE_SITE = https://www.samba.org/ftp/ccache +CCACHE_SOURCE = ccache-$(CCACHE_VERSION).tar.xz +CCACHE_LICENSE = GPL-3.0+, others +CCACHE_LICENSE_FILES = LICENSE.txt GPL-3.0.txt + +# Force ccache to use its internal zlib. The problem is that without +# this, ccache would link against the zlib of the build system, but we +# might build and install a different version of zlib in $(O)/host +# afterwards, which ccache will pick up. This might break if there is +# a version mismatch. A solution would be to add host-zlib has a +# dependency of ccache, but it would require tuning the zlib .mk file +# to use HOSTCC_NOCCACHE as the compiler. Instead, we take the easy +# path: tell ccache to use its internal copy of zlib, so that ccache +# has zero dependency besides the C library. +HOST_CCACHE_CONF_OPTS += --with-bundled-zlib + +# Patch host-ccache as follows: +# - Use BR_CACHE_DIR instead of CCACHE_DIR, because CCACHE_DIR +# is already used by autotargets for the ccache package. +# BR_CACHE_DIR is exported by Makefile based on config option +# BR2_CCACHE_DIR. +# - Change hard-coded last-ditch default to match path in .config, to avoid +# the need to specify BR_CACHE_DIR when invoking ccache directly. +# CCache replaces "%s" with the home directory of the current user, +# So rewrite BR_CACHE_DIR to take that into consideration for SDK purpose +HOST_CCACHE_DEFAULT_CCACHE_DIR = $(patsubst $(HOME)/%,\%s/%,$(BR_CACHE_DIR)) + +define HOST_CCACHE_PATCH_CONFIGURATION + sed -i 's,getenv("CCACHE_DIR"),getenv("BR_CACHE_DIR"),' $(@D)/ccache.c + sed -i 's,"%s/.ccache","$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/conf.c +endef + +HOST_CCACHE_POST_PATCH_HOOKS += HOST_CCACHE_PATCH_CONFIGURATION + +define HOST_CCACHE_MAKE_CACHE_DIR + mkdir -p $(BR_CACHE_DIR) +endef + +HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_MAKE_CACHE_DIR + +# Provide capability to do initial ccache setup (e.g. increase default size) +BR_CCACHE_INITIAL_SETUP = $(call qstrip,$(BR2_CCACHE_INITIAL_SETUP)) +ifneq ($(BR_CCACHE_INITIAL_SETUP),) +define HOST_CCACHE_DO_INITIAL_SETUP + @$(call MESSAGE,"Applying initial settings") + $(CCACHE) $(BR_CCACHE_INITIAL_SETUP) + $(CCACHE) -s +endef + +HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_DO_INITIAL_SETUP +endif + +$(eval $(host-autotools-package)) + +ifeq ($(BR2_CCACHE),y) +ccache-stats: host-ccache + $(Q)$(CCACHE) -s + +ccache-options: host-ccache +ifeq ($(CCACHE_OPTIONS),) + $(Q)echo "Usage: make ccache-options CCACHE_OPTIONS=\"opts\"" + $(Q)echo "where 'opts' corresponds to one or more valid ccache options" \ + "(see ccache help text below)" + $(Q)echo +endif + $(Q)$(CCACHE) $(CCACHE_OPTIONS) +endif diff --git a/buildroot/package/ccid/Config.in b/buildroot/package/ccid/Config.in new file mode 100644 index 0000000..dfb57e8 --- /dev/null +++ b/buildroot/package/ccid/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CCID + bool "ccid" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_USE_MMU # pcsc-lite + depends on !BR2_STATIC_LIBS # pcsc-lite + select BR2_PACKAGE_PCSC_LITE + select BR2_PACKAGE_LIBUSB + help + PC/SC driver for USB CCID smart card readers + + http://pcsclite.alioth.debian.org/ccid.html + +comment "ccid needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/ccid/ccid.hash b/buildroot/package/ccid/ccid.hash new file mode 100644 index 0000000..a7d4875 --- /dev/null +++ b/buildroot/package/ccid/ccid.hash @@ -0,0 +1,3 @@ +# From http://cdn-fastly.deb.debian.org/debian/pool/main/c/ccid/ccid_1.4.27-1.dsc +sha1 d72ee816422183a86006e0083ccd643236b4e12a ccid_1.4.27.tar.bz2 +sha256 a660e269606986cb94840ad5ba802ffb0cd23dd12b98f69a35035e0deb9dd137 ccid_1.4.27.tar.bz2 diff --git a/buildroot/package/ccid/ccid.mk b/buildroot/package/ccid/ccid.mk new file mode 100644 index 0000000..e566afe --- /dev/null +++ b/buildroot/package/ccid/ccid.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# ccid +# +################################################################################ + +CCID_VERSION = 1.4.27 +CCID_SOURCE = ccid_$(CCID_VERSION).tar.bz2 +CCID_SITE = https://alioth.debian.org/frs/download.php/file/4218 +CCID_LICENSE = LGPL-2.1+ +CCID_LICENSE_FILES = COPYING +CCID_INSTALL_STAGING = YES +CCID_DEPENDENCIES = pcsc-lite host-pkgconf libusb + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define CCID_INSTALL_UDEV_RULES + if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \ + cp $(@D)/src/92_pcscd_ccid.rules $(TARGET_DIR)/etc/udev/rules.d/ ; \ + fi; +endef + +CCID_POST_INSTALL_TARGET_HOOKS += CCID_INSTALL_UDEV_RULES +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ccrypt/Config.in b/buildroot/package/ccrypt/Config.in new file mode 100644 index 0000000..109271a --- /dev/null +++ b/buildroot/package/ccrypt/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CCRYPT + bool "ccrypt" + help + ccrypt is a utility for encrypting and decrypting files and + streams. + + http://ccrypt.sourceforge.net/ diff --git a/buildroot/package/ccrypt/ccrypt.hash b/buildroot/package/ccrypt/ccrypt.hash new file mode 100644 index 0000000..a93fcb9 --- /dev/null +++ b/buildroot/package/ccrypt/ccrypt.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 87d66da2170facabf6f2fc073586ae2c7320d4689980cfca415c74688e499ba0 ccrypt-1.10.tar.gz diff --git a/buildroot/package/ccrypt/ccrypt.mk b/buildroot/package/ccrypt/ccrypt.mk new file mode 100644 index 0000000..d27e346 --- /dev/null +++ b/buildroot/package/ccrypt/ccrypt.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# ccrypt +# +################################################################################ + +CCRYPT_VERSION = 1.10 +CCRYPT_SITE = http://ccrypt.sourceforge.net/download + +CCRYPT_LICENSE = GPL-2.0+ +CCRYPT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/cdrkit/0001-no-rcmd.patch b/buildroot/package/cdrkit/0001-no-rcmd.patch new file mode 100644 index 0000000..294779f --- /dev/null +++ b/buildroot/package/cdrkit/0001-no-rcmd.patch @@ -0,0 +1,22 @@ +[PATCH] fix build with uClibc + +cdrkit unconditionally enables code using rcmd(3), which isn't available +on uClibc. + +Signed-off-by: Peter Korsgaard +--- + include/xconfig.h.in | 1 - + 1 file changed, 1 deletion(-) + +Index: cdrkit-1.1.10/include/xconfig.h.in +=================================================================== +--- cdrkit-1.1.10.orig/include/xconfig.h.in ++++ cdrkit-1.1.10/include/xconfig.h.in +@@ -187,7 +187,6 @@ + * they are placed before the large file tests. + */ + +-#define HAVE_RCMD 1 /* rcmd() is present in libc/libsocket */ + #define HAVE_SOCKET 1 /* socket() is present in libc/libsocket */ + #define HAVE_SOCKETPAIR 1 /* socketpair() is present in libc/libsocket */ + #define HAVE_GETSERVBYNAME 1 /* getservbyname() is present in libc/libsocket */ diff --git a/buildroot/package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch b/buildroot/package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch new file mode 100644 index 0000000..2e0f6d5 --- /dev/null +++ b/buildroot/package/cdrkit/0002-define-__THROW-to-avoid-build-issue-with-musl.patch @@ -0,0 +1,47 @@ +From 9454ef47db30caa4359766c8730d9d92f65c64f7 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 8 Aug 2015 22:58:57 +0200 +Subject: [PATCH] define __THROW to avoid build issue with musl + +Fixes: +http://autobuild.buildroot.net/results/d27/d2781e70b04a207e2e9397d888032294c7285034/build-end.log + +Signed-off-by: Romain Naour +--- + genisoimage/sha256.h | 4 ++++ + genisoimage/sha512.h | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/genisoimage/sha256.h b/genisoimage/sha256.h +index e7f4cb9..bcae7ef 100644 +--- a/genisoimage/sha256.h ++++ b/genisoimage/sha256.h +@@ -29,6 +29,10 @@ + #include + #include + ++/* define __THROW to avoid build issue when it's not available from the libc */ ++#ifndef __THROW ++# define __THROW ++#endif + + /* Structure to save state of computation between the single steps. */ + struct sha256_ctx +diff --git a/genisoimage/sha512.h b/genisoimage/sha512.h +index 7298355..8cee8b0 100644 +--- a/genisoimage/sha512.h ++++ b/genisoimage/sha512.h +@@ -29,6 +29,10 @@ + #include + #include + ++/* define __THROW to avoid build issue when it's not available from the libc */ ++#ifndef __THROW ++# define __THROW ++#endif + + /* Structure to save state of computation between the single steps. */ + struct sha512_ctx +-- +2.4.3 + diff --git a/buildroot/package/cdrkit/Config.in b/buildroot/package/cdrkit/Config.in new file mode 100644 index 0000000..7b5b886 --- /dev/null +++ b/buildroot/package/cdrkit/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_CDRKIT + bool "cdrkit" + depends on BR2_USE_MMU # fork + # Needed for libbz + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_ZLIB + help + cdrkit is a suite of programs for recording CDs and DVDs, + blanking CD-RW media, creating ISO-9660 filesystem images, + extracting audio CD data, and more. + + http://www.cdrkit.org/ diff --git a/buildroot/package/cdrkit/cdrkit.hash b/buildroot/package/cdrkit/cdrkit.hash new file mode 100644 index 0000000..6ecb922 --- /dev/null +++ b/buildroot/package/cdrkit/cdrkit.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit/cdrkit_1.1.11-3.dsc +sha256 d1c030756ecc182defee9fe885638c1785d35a2c2a297b4604c0e0dcc78e47da cdrkit_1.1.11.orig.tar.gz diff --git a/buildroot/package/cdrkit/cdrkit.mk b/buildroot/package/cdrkit/cdrkit.mk new file mode 100644 index 0000000..f49d515 --- /dev/null +++ b/buildroot/package/cdrkit/cdrkit.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# cdrkit +# +################################################################################ + +CDRKIT_VERSION = 1.1.11 +CDRKIT_SOURCE = cdrkit_$(CDRKIT_VERSION).orig.tar.gz +CDRKIT_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit +CDRKIT_DEPENDENCIES = libcap bzip2 zlib +HOST_CDRKIT_DEPENDENCIES = host-libcap host-bzip2 host-zlib +CDRKIT_LICENSE = GPL-2.0 +CDRKIT_LICENSE_FILES = COPYING + +ifeq ($(BR2_ENDIAN),"BIG") +CDRKIT_CONF_OPTS += -DBITFIELDS_HTOL=1 +else +CDRKIT_CONF_OPTS += -DBITFIELDS_HTOL=0 +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/buildroot/package/cegui06/0001-stddef.h.patch b/buildroot/package/cegui06/0001-stddef.h.patch new file mode 100644 index 0000000..cc16eff --- /dev/null +++ b/buildroot/package/cegui06/0001-stddef.h.patch @@ -0,0 +1,26 @@ +includes: ptrdiff_t is defined in stddef.h + +ptrdiff_t is defined in the stddef.h header, so this +header must be included. + +Do the #include in a common header to avoid doing it +all over the place. + +Signed-off-by: "Yann E. MORIN" + +--- +Patch not sent upstream, it's a no-longer-maintained branch. +To be noted, however, is that the current devel branch is +still missing that include. + +diff -durN cegui06-0.6.2.orig/include/CEGUIBase.h cegui06-0.6.2/include/CEGUIBase.h +--- cegui06-0.6.2.orig//include/CEGUIBase.h 2008-02-11 15:38:27.000000000 +0100 ++++ cegui06-0.6.2/include/CEGUIBase.h 2012-08-19 22:51:50.260385978 +0200 +@@ -34,6 +34,7 @@ + #define _CEGUIBase_h_ + + #include ++#include + + // bring in configuration options + #include "CEGUIConfig.h" diff --git a/buildroot/package/cegui06/Config.in b/buildroot/package/cegui06/Config.in new file mode 100644 index 0000000..0139d32 --- /dev/null +++ b/buildroot/package/cegui06/Config.in @@ -0,0 +1,20 @@ +comment "cegui06 needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS + +config BR2_PACKAGE_CEGUI06 + bool "cegui06" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_PCRE + help + Crazy Eddie's GUI System is a free library providing windowing + and widgets for graphics APIs / engines where such + functionality is not natively available, or severely lacking. + The library is object orientated, written in C++, and targeted + at games developers who should be spending their time creating + great games, not building GUI sub-systems! + + http://www.cegui.org.uk/ diff --git a/buildroot/package/cegui06/cegui06.hash b/buildroot/package/cegui06/cegui06.hash new file mode 100644 index 0000000..21df3ca --- /dev/null +++ b/buildroot/package/cegui06/cegui06.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 eb77741cd9fcc927a876e8116b98691212e973d2264e2071406423f6ca3e305f CEGUI-0.6.2b.tar.gz diff --git a/buildroot/package/cegui06/cegui06.mk b/buildroot/package/cegui06/cegui06.mk new file mode 100644 index 0000000..d3da3eb --- /dev/null +++ b/buildroot/package/cegui06/cegui06.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# cegui06 +# +################################################################################ + +# Do not update the version, we need exactly that one for Spice. +CEGUI06_VERSION_MAJOR = 0.6.2 +CEGUI06_VERSION = $(CEGUI06_VERSION_MAJOR)b +CEGUI06_SOURCE = CEGUI-$(CEGUI06_VERSION).tar.gz +CEGUI06_SITE = http://downloads.sourceforge.net/project/crayzedsgui/CEGUI%20Mk-2/$(CEGUI06_VERSION_MAJOR) +CEGUI06_LICENSE = MIT +CEGUI06_LICENSE_FILES = COPYING +CEGUI06_INSTALL_STAGING = YES + +CEGUI06_DEPENDENCIES = \ + expat \ + freetype \ + pcre + +CEGUI06_CONF_OPTS = \ + --enable-expat \ + --disable-external-tinyxml \ + --disable-xerces-c \ + --disable-libxml \ + --disable-tinyxml \ + --disable-opengl-renderer \ + --disable-external-glew \ + --disable-irrlicht-renderer \ + --disable-directfb-renderer \ + --disable-samples \ + --disable-lua-module \ + --disable-toluacegui \ + --disable-external-toluapp + +$(eval $(autotools-package)) diff --git a/buildroot/package/celt051/0001-fix-gnuc-prereq.patch b/buildroot/package/celt051/0001-fix-gnuc-prereq.patch new file mode 100644 index 0000000..8efd518 --- /dev/null +++ b/buildroot/package/celt051/0001-fix-gnuc-prereq.patch @@ -0,0 +1,29 @@ +Fix musl build + +musl does not define __GNUC_PREREQ. Use patch from Alpine Linux +(http://git.alpinelinux.org/cgit/aports/plain/main/celt051/fix-gnuc-prereq.patch). + +Fixes http://autobuild.buildroot.net/results/223/223ba6003bdd7e0c896455c21fa8fee943b4e716/ + +Signed-off-by: Jörg Krause + +--- celt-0.5.1.3.orig/libcelt/ecintrin.h ++++ celt-0.5.1.3/libcelt/ecintrin.h +@@ -52,8 +52,7 @@ + /*Count leading zeros. + This macro should only be used for implementing ec_ilog(), if it is defined. + All other code should use EC_ILOG() instead.*/ +-#ifdef __GNUC_PREREQ +-#if __GNUC_PREREQ(3,4) ++#if defined(__GNUC__) && ((__GNUC__<<16)+__GNUC_MINOR__) >= 0x304 + # if INT_MAX>=2147483647 + # define EC_CLZ0 sizeof(unsigned)*CHAR_BIT + # define EC_CLZ(_x) (__builtin_clz(_x)) +@@ -61,7 +60,6 @@ + # define EC_CLZ0 sizeof(unsigned long)*CHAR_BIT + # define EC_CLZ(_x) (__builtin_clzl(_x)) + # endif +-#endif + #endif + + #if defined(EC_CLZ) diff --git a/buildroot/package/celt051/Config.in b/buildroot/package/celt051/Config.in new file mode 100644 index 0000000..e151319 --- /dev/null +++ b/buildroot/package/celt051/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CELT051 + bool "celt051" + select BR2_PACKAGE_LIBOGG + help + The CELT ultra-low delay audio codec + + The CELT codec is a compression algorithm for audio. Like MP3, + Vorbis, and AAC it is suitable for transmitting music with + high quality. Unlike these formats CELT imposes very little + delay on the signal, even less than is typical for speech + centric formats like Speex, GSM, or G.729. + + Note: this is version 0.5.1.3 of celt. + + http://www.celt-codec.org/ diff --git a/buildroot/package/celt051/celt051.hash b/buildroot/package/celt051/celt051.hash new file mode 100644 index 0000000..4ad212b --- /dev/null +++ b/buildroot/package/celt051/celt051.hash @@ -0,0 +1,2 @@ +# From http://downloads.xiph.org/releases/celt/SHA1SUMS +sha1 eb05030108c36cb063c3f026c349f16d78e0a497 celt-0.5.1.3.tar.gz diff --git a/buildroot/package/celt051/celt051.mk b/buildroot/package/celt051/celt051.mk new file mode 100644 index 0000000..01da5c9 --- /dev/null +++ b/buildroot/package/celt051/celt051.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# celt +# +################################################################################ + +# Although version newer than 0.5.1.3 exists, we're +# stuck with 0.5.1.3 for use by Spice (coming later) +CELT051_VERSION = 0.5.1.3 +CELT051_SOURCE = celt-$(CELT051_VERSION).tar.gz +CELT051_SITE = http://downloads.xiph.org/releases/celt +CELT051_LICENSE = BSD-2-Clause +CELT051_LICENSE_FILES = COPYING +CELT051_INSTALL_STAGING = YES +CELT051_DEPENDENCIES = libogg + +# Need to specify --with-ogg, otherwise /usr/lib may be searched for +# if target is the same kind as host (ie. same arch, same bitness, +# same endianness, so that /usr/lib contains libraries linkable by +# our cross-compiler) +CELT051_CONF_OPTS = \ + --enable-fixed-point \ + --disable-fixed-point-debug \ + --disable-experimental-postfilter \ + --disable-static-modes \ + --disable-assertions \ + --disable-oggtest \ + --with-ogg=$(STAGING_DIR)/usr + +$(eval $(autotools-package)) diff --git a/buildroot/package/cgic/0001-prepare_makefile.patch b/buildroot/package/cgic/0001-prepare_makefile.patch new file mode 100644 index 0000000..15adc4c --- /dev/null +++ b/buildroot/package/cgic/0001-prepare_makefile.patch @@ -0,0 +1,44 @@ +Makefile: fix for cross-compilation + +Probably-Signed-off-by: Dave Bender +[yann.morin.1998@free.fr: patch was made by Dave, but he + forgot his SoB line, so I added it] +Signed-off-by: "Yann E. MORIN" +diff -rupN cgic206/Makefile cgic206-br/Makefile +--- cgic206/Makefile 2014-03-16 18:17:11.000000000 -0400 ++++ cgic206-br/Makefile 2015-01-16 11:18:03.714874000 -0500 +@@ -1,15 +1,14 @@ +-CFLAGS=-g -Wall +-CC=gcc +-AR=ar +-RANLIB=ranlib + LIBS=-L./ -lcgic + + all: libcgic.a cgictest.cgi capture + + install: libcgic.a +- cp libcgic.a /usr/local/lib +- cp cgic.h /usr/local/include +- @echo libcgic.a is in /usr/local/lib. cgic.h is in /usr/local/include. ++ cp libcgic.a $(PREFIX)/usr/lib ++ cp cgic.h $(PREFIX)/usr/include ++ @echo libcgic.a is in $(PREFIX)/usr/lib. cgic.h is in $(PREFIX)/usr/include. ++ ++cgi.o: cgic.c cgic.h ++ $(CC) $(CFLAGS) cgic.c -o cgic.o + + libcgic.a: cgic.o cgic.h + rm -f libcgic.a +@@ -19,10 +18,10 @@ libcgic.a: cgic.o cgic.h + #mingw32 and cygwin users: replace .cgi with .exe + + cgictest.cgi: cgictest.o libcgic.a +- gcc cgictest.o -o cgictest.cgi ${LIBS} ++ $(CC) cgictest.o -o cgictest.cgi ${LIBS} + + capture: capture.o libcgic.a +- gcc capture.o -o capture ${LIBS} ++ $(CC) capture.o -o capture ${LIBS} + + clean: + rm -f *.o *.a cgictest.cgi capture diff --git a/buildroot/package/cgic/0002-file_enhancements.patch b/buildroot/package/cgic/0002-file_enhancements.patch new file mode 100644 index 0000000..a6f82fc --- /dev/null +++ b/buildroot/package/cgic/0002-file_enhancements.patch @@ -0,0 +1,56 @@ +Create better temporary files. + +Probably-Signed-off-by: Dave Bender +[yann.morin.1998@free.fr: patch was made by Dave, but he + forgot his SoB line, so I added it; split the patch in two + independent fixes] +Signed-off-by: "Yann E. MORIN" + +diff -rupN cgic206/cgic.c cgic206_tempfile/cgic.c +--- cgic206/cgic.c 2014-03-16 18:17:11.000000000 -0400 ++++ cgic206_tempfile/cgic.c 2015-01-21 11:58:45.436384908 -0500 +@@ -22,6 +22,8 @@ + #define CGICDEBUGEND + #endif /* CGICDEBUG */ + ++#define _GNU_SOURCE ++ + #include + #include + #include +@@ -34,11 +36,11 @@ + #include + + /* cgic 2.01 */ +-#include + + #else + #include + #endif /* WIN32 */ ++#include + #include "cgic.h" + + #define cgiStrEq(a, b) (!strcmp((a), (b))) +@@ -636,16 +638,17 @@ static cgiParseResultType getTempFileNam + window between the file's creation and the + chmod call (glibc 2.0.6 and lower might + otherwise have allowed this). */ ++ mode_t umode; + int outfd; ++ umode = umask(0600); + strcpy(tfileName, cgicTempDir "/cgicXXXXXX"); +- outfd = mkstemp(tfileName); ++ outfd = mkostemp(tfileName, O_CLOEXEC | O_NOATIME); ++ umask(umode); + if (outfd == -1) { + return cgiParseIO; + } +- close(outfd); +- /* Fix the permissions */ +- if (chmod(tfileName, 0600) != 0) { +- unlink(tfileName); ++ ++ if (close(outfd)) { + return cgiParseIO; + } + #else diff --git a/buildroot/package/cgic/0003-restore-cgiFormFileGetTempfileName.patch b/buildroot/package/cgic/0003-restore-cgiFormFileGetTempfileName.patch new file mode 100644 index 0000000..f66227b --- /dev/null +++ b/buildroot/package/cgic/0003-restore-cgiFormFileGetTempfileName.patch @@ -0,0 +1,43 @@ +Restore lost functionality + +Probably-Signed-off-by: Dave Bender +[yann.morin.1998@free.fr: patch was made by Dave, but he + forgot his SoB line, so I added it] +Signed-off-by: "Yann E. MORIN" + +diff -rupN cgic206/cgic.c cgic206_tempfile/cgic.c +--- cgic206/cgic.c 2014-03-16 18:17:11.000000000 -0400 ++++ cgic206_tempfile/cgic.c 2015-01-21 11:58:45.436384908 -0500 +@@ -1278,6 +1278,20 @@ cgiFormResultType cgiFormFileContentType + } + } + ++const char* cgiFormFileGetTempfileName( ++ char* name) ++{ ++ cgiFormEntry *e; ++ e = cgiFormEntryFindFirst(name); ++ if (!e) { ++ return NULL; ++ } else if (!strlen(e->tfileName)) { ++ return NULL; ++ } else { ++ return e->tfileName; ++ } ++} ++ + cgiFormResultType cgiFormFileSize( + char *name, int *sizeP) + { +diff -rupN cgic206/cgic.h cgic206_tempfile/cgic.h +--- cgic206/cgic.h 2014-03-16 18:17:11.000000000 -0400 ++++ cgic206_tempfile/cgic.h 2015-01-21 11:53:02.915148026 -0500 +@@ -141,6 +141,8 @@ extern cgiFormResultType cgiFormRadio( + char *name, char **valuesText, int valuesTotal, + int *result, int defaultV); + ++extern const char* cgiFormFileGetTempfileName(char* name); ++ + /* The paths returned by this function are the original names of files + as reported by the uploading web browser and shoult NOT be + blindly assumed to be "safe" names for server-side use! */ diff --git a/buildroot/package/cgic/Config.in b/buildroot/package/cgic/Config.in new file mode 100644 index 0000000..402460d --- /dev/null +++ b/buildroot/package/cgic/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_CGIC + bool "cgic" + help + C CGI library + + http://www.boutell.com/cgic/ diff --git a/buildroot/package/cgic/cgic.hash b/buildroot/package/cgic/cgic.hash new file mode 100644 index 0000000..fa1d0bc --- /dev/null +++ b/buildroot/package/cgic/cgic.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 1e8834642a4b89528bb7bde2f287e133c6b07e210e68681a34137c436d59d320 cgic207.tar.gz diff --git a/buildroot/package/cgic/cgic.mk b/buildroot/package/cgic/cgic.mk new file mode 100644 index 0000000..cd08413 --- /dev/null +++ b/buildroot/package/cgic/cgic.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# cgic +# +################################################################################ + +CGIC_VERSION = 2.07 +CGIC_SOURCE = cgic207.tar.gz +CGIC_SITE = http://boutell.com/cgic +CGIC_LICENSE = Custom +CGIC_LICENSE_FILES = license.txt + +# Installs only a static library and a header file +CGIC_INSTALL_STAGING = YES +CGIC_INSTALL_TARGET = NO + +define CGIC_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) libcgic.a +endef + +define CGIC_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) PREFIX=$(STAGING_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/cgilua/Config.in b/buildroot/package/cgilua/Config.in new file mode 100644 index 0000000..d1e7fbf --- /dev/null +++ b/buildroot/package/cgilua/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_CGILUA + bool "cgilua" + # Runtime dependency only + select BR2_PACKAGE_LUAFILESYSTEM + help + CGILua is a tool for creating dynamic HTML pages + and manipulating input data from Web forms. + + http://keplerproject.github.com/cgilua diff --git a/buildroot/package/cgilua/cgilua.hash b/buildroot/package/cgilua/cgilua.hash new file mode 100644 index 0000000..b932e80 --- /dev/null +++ b/buildroot/package/cgilua/cgilua.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7d4883e6a89b3463a1d35b8084a6e2afbbb584af7aca1169380e92af0f848413 cgilua-5.2.1-1.src.rock diff --git a/buildroot/package/cgilua/cgilua.mk b/buildroot/package/cgilua/cgilua.mk new file mode 100644 index 0000000..cd78841 --- /dev/null +++ b/buildroot/package/cgilua/cgilua.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# cgilua +# +################################################################################ + +CGILUA_VERSION = 5.2.1-1 +CGILUA_LICENSE = MIT +CGILUA_LICENSE_FILES = $(CGILUA_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/buildroot/package/cgroupfs-mount/Config.in b/buildroot/package/cgroupfs-mount/Config.in new file mode 100644 index 0000000..0b2e4ba --- /dev/null +++ b/buildroot/package/cgroupfs-mount/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CGROUPFS_MOUNT + bool "cgroupfs-mount" + depends on !BR2_INIT_SYSTEMD + help + cgroupfs mount and umount scripts. + + requires a Linux kernel >= 3.0 with the following options + enabled: + + - CONFIG_BLK_CGROUP + - CONFIG_CGROUPS + - CONFIG_CGROUP_CPUACCT + - CONFIG_CGROUP_DEVICE + - CONFIG_CGROUP_FREEZER + - CONFIG_CGROUP_WRITEBACK + - CONFIG_CGROUP_SCHED + - CONFIG_CGROUP_PIDS + + https://github.com/tianon/cgroupfs-mount diff --git a/buildroot/package/cgroupfs-mount/S30cgroupfs b/buildroot/package/cgroupfs-mount/S30cgroupfs new file mode 100644 index 0000000..aa0a29b --- /dev/null +++ b/buildroot/package/cgroupfs-mount/S30cgroupfs @@ -0,0 +1,34 @@ +#!/bin/sh +# +# Set up cgroupfs mounts. +# + +start() { + printf "Mounting cgroupfs hierarchy: " + /usr/bin/cgroupfs-mount + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Unmounting cgroupfs hierarchy: " + /usr/bin/cgroupfs-umount + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/cgroupfs-mount/cgroupfs-mount.hash b/buildroot/package/cgroupfs-mount/cgroupfs-mount.hash new file mode 100644 index 0000000..926a031 --- /dev/null +++ b/buildroot/package/cgroupfs-mount/cgroupfs-mount.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d6c8aff7af59c7d0082ee3018c97f73b0421e81a49bb28ad9f66a36da5cd6ec7 cgroupfs-mount-1.4.tar.gz diff --git a/buildroot/package/cgroupfs-mount/cgroupfs-mount.mk b/buildroot/package/cgroupfs-mount/cgroupfs-mount.mk new file mode 100644 index 0000000..9a76799 --- /dev/null +++ b/buildroot/package/cgroupfs-mount/cgroupfs-mount.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# cgroupfs-mount +# +################################################################################ + +CGROUPFS_MOUNT_VERSION = 1.4 +CGROUPFS_MOUNT_SITE = $(call github,tianon,cgroupfs-mount,$(CGROUPFS_MOUNT_VERSION)) +CGROUPFS_MOUNT_LICENSE = GPL-3.0+ +CGROUPFS_MOUNT_LICENSE_FILES = debian/copyright + +define CGROUPFS_MOUNT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/cgroupfs-mount $(TARGET_DIR)/usr/bin/cgroupfs-mount + $(INSTALL) -D -m 0755 $(@D)/cgroupfs-umount $(TARGET_DIR)/usr/bin/cgroupfs-umount +endef + +define CGROUPFS_MOUNT_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D $(CGROUPFS_MOUNT_PKGDIR)/S30cgroupfs \ + $(TARGET_DIR)/etc/init.d/S30cgroupfs +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/check/Config.in b/buildroot/package/check/Config.in new file mode 100644 index 0000000..2312fbf --- /dev/null +++ b/buildroot/package/check/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_CHECK + bool "check" + help + Check is a unit testing framework for C. + + https://libcheck.github.io/check/ diff --git a/buildroot/package/check/check.hash b/buildroot/package/check/check.hash new file mode 100644 index 0000000..3c41a96 --- /dev/null +++ b/buildroot/package/check/check.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 24f7a48aae6b74755bcbe964ce8bc7240f6ced2141f8d9cf480bc3b3de0d5616 check-0.11.0.tar.gz +# License files, locally calculated +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LESSER diff --git a/buildroot/package/check/check.mk b/buildroot/package/check/check.mk new file mode 100644 index 0000000..047beba --- /dev/null +++ b/buildroot/package/check/check.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# check +# +################################################################################ + +CHECK_VERSION = 0.11.0 +CHECK_SITE = https://github.com/libcheck/check/releases/download/$(CHECK_VERSION) +CHECK_INSTALL_STAGING = YES +CHECK_DEPENDENCIES = host-pkgconf +CHECK_LICENSE = LGPL-2.1+ +CHECK_LICENSE_FILES = COPYING.LESSER + +# Having checkmk in the target makes no sense +define CHECK_REMOVE_CHECKMK + rm -f $(TARGET_DIR)/usr/bin/checkmk +endef +CHECK_POST_INSTALL_TARGET_HOOKS += CHECK_REMOVE_CHECKMK + +$(eval $(autotools-package)) diff --git a/buildroot/package/checkpolicy/Config.in b/buildroot/package/checkpolicy/Config.in new file mode 100644 index 0000000..97ad0b7 --- /dev/null +++ b/buildroot/package/checkpolicy/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_CHECKPOLICY + bool "checkpolicy" + depends on BR2_TOOLCHAIN_HAS_THREADS # libselinux + depends on !BR2_STATIC_LIBS # libselinux + depends on BR2_TOOLCHAIN_USES_GLIBC # libselinux + depends on !BR2_arc # libselinux + select BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_FLEX + help + checkpolicy is the SELinux policy compiler. It uses libsepol + to generate the binary policy. checkpolicy uses the static + libsepol since it deals with low level details of the policy + that have not been encapsulated/abstracted by a proper + shared library interface. + + http://selinuxproject.org/page/Main_Page + +comment "checkpolicy needs a glibc toolchain w/ threads, dynamic library" + depends on !BR2_arc + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/checkpolicy/Config.in.host b/buildroot/package/checkpolicy/Config.in.host new file mode 100644 index 0000000..240a5b6 --- /dev/null +++ b/buildroot/package/checkpolicy/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_CHECKPOLICY + bool "host checkpolicy" + help + checkpolicy is the SELinux policy compiler. It uses libsepol + to generate the binary policy. checkpolicy uses the static + libsepol since it deals with low level details of the policy + that have not been encapsulated/abstracted by a proper + shared library interface. + + http://selinuxproject.org/page/Main_Page diff --git a/buildroot/package/checkpolicy/checkpolicy.hash b/buildroot/package/checkpolicy/checkpolicy.hash new file mode 100644 index 0000000..7397393 --- /dev/null +++ b/buildroot/package/checkpolicy/checkpolicy.hash @@ -0,0 +1,2 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 5413479f1dcde866c19896b4dbfec315d822aa431606e1d03c944408984c3201 checkpolicy-2.7.tar.gz diff --git a/buildroot/package/checkpolicy/checkpolicy.mk b/buildroot/package/checkpolicy/checkpolicy.mk new file mode 100644 index 0000000..52f8160 --- /dev/null +++ b/buildroot/package/checkpolicy/checkpolicy.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# checkpolicy +# +################################################################################ + +CHECKPOLICY_VERSION = 2.7 +CHECKPOLICY_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20170804 +CHECKPOLICY_LICENSE = GPL-2.0 +CHECKPOLICY_LICENSE_FILES = COPYING + +CHECKPOLICY_DEPENDENCIES = libselinux flex host-flex host-bison + +CHECKPOLICY_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) \ + LEX="$(HOST_DIR)/bin/flex" \ + YACC="$(HOST_DIR)/bin/bison -y" + +# DESTDIR is used at build time to find libselinux +define CHECKPOLICY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR) +endef + +define CHECKPOLICY_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install + +endef + +define CHECKPOLICY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CHECKPOLICY_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +HOST_CHECKPOLICY_DEPENDENCIES = host-libselinux host-flex host-bison + +# PREFIX is used at build time to find host-libselinux +HOST_CHECKPOLICY_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + PREFIX=$(HOST_DIR) \ + LEX="$(HOST_DIR)/bin/flex" \ + YACC="$(HOST_DIR)/bin/bison -y" + +define HOST_CHECKPOLICY_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CHECKPOLICY_MAKE_OPTS) +endef + +define HOST_CHECKPOLICY_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CHECKPOLICY_MAKE_OPTS) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch b/buildroot/package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch new file mode 100644 index 0000000..2618396 --- /dev/null +++ b/buildroot/package/chocolate-doom/0004-configure-Switch-to-pkg-config-macros.patch @@ -0,0 +1,217 @@ +From 3163bf87d7b955d08dedd5ebaccb1b2a86ffdcb9 Mon Sep 17 00:00:00 2001 +From: Simon Howard +Date: Thu, 25 Feb 2016 22:55:04 -0500 +Subject: [PATCH] configure: Switch to pkg-config macros. + +All dependency libraries install pkg-config .pc files nowadays, which +makes the process of looking them up a lot simpler. Get rid of the SDL +workaround macro as it's not needed. + +[Backported from upstream commit 3163bf87d7b955d08dedd5ebaccb1b2a86ffdcb9. +Fixes static linking issues with SDL_mixer.] + +Signed-off-by: Rodrigo Rebello +--- + configure.ac | 117 ++++++++++++++-------------------------- + opl/examples/Makefile.am | 2 +- + src/Makefile.am | 7 ++- + textscreen/Makefile.am | 2 +- + textscreen/examples/Makefile.am | 2 +- + 5 files changed, 49 insertions(+), 81 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 7b03485..48f83ef 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -33,89 +33,54 @@ then + CFLAGS="-O$OPT_LEVEL -g $WARNINGS $orig_CFLAGS" + fi + +-dnl Search for SDL ... +- +-AM_PATH_SDL(1.1.3) +- +-# Add the SDL compiler flags to the default compiler flag variables. +-# It is important to do this now, before checking for headers and +-# library functions. The reason being that on Windows, sdl-config +-# sets the -mno-cygwin compiler option in order to generate MinGW +-# executables. If we don't do this now, we might end up discovering +-# header files that are not actually available to us when we come +-# to compile. +- +-CFLAGS="$CFLAGS $SDL_CFLAGS" +-LDFLAGS="$LDFLAGS $SDL_LIBS" +- +-# On some platforms, SDL renames main() to SDL_main() using a #define, +-# so that its own main, stored in the SDLmain library, can be run first. +-# Unfortunately, this causes problems for autoconf, which builds +-# test programs to probe the system. All library/header/symbol checks +-# must be run in this block, that performs a workaround for the problem. +- +-AC_SDL_MAIN_WORKAROUND([ +- +- # Check for SDL_mixer. +- +- AC_CHECK_LIB(SDL_mixer,Mix_LoadMUS,[ +- SDLMIXER_LIBS="$SDLMIXER_LIBS -lSDL_mixer" +- ],[ +- echo "*** Could not find SDL_mixer. Please install it." +- exit -1 +- ]) +- +- # Check for SDL_net. +- +- AC_CHECK_LIB(SDL_net,SDLNet_UDP_Send,[ +- SDLNET_LIBS="$SDLNET_LIBS -lSDL_net" +- ],[ +- echo "*** Could not find SDL_net. Please install it." +- exit -1 +- ]) +- +- # Check for libsamplerate. +- AC_ARG_WITH([libsamplerate], +- AS_HELP_STRING([--without-libsamplerate], +- [Build without libsamplerate @<:@default=check@:>@]), +- [], +- [ +- [with_libsamplerate=check] +- ]) +- AS_IF([test "x$with_libsamplerate" != xno], [ +- AC_CHECK_LIB(samplerate, src_new, [], [ +- AS_IF([test "x$with_libsamplerate" != xcheck], [AC_MSG_FAILURE( +- [--with-libsamplerate was given, but test for libsamplerate failed]) +- ]) ++PKG_CHECK_MODULES([SDL], [sdl]) ++PKG_CHECK_MODULES([SDLMIXER], [SDL_mixer]) ++PKG_CHECK_MODULES([SDLNET], [SDL_net]) ++ ++# Check for libsamplerate. ++AC_ARG_WITH([libsamplerate], ++AS_HELP_STRING([--without-libsamplerate], ++ [Build without libsamplerate @<:@default=check@:>@]), ++[], ++[ ++ [with_libsamplerate=check] ++]) ++AS_IF([test "x$with_libsamplerate" != xno], [ ++ PKG_CHECK_MODULES([SAMPLERATE], [samplerate >= 0.1.8], [ ++ AC_DEFINE([HAVE_LIBSAMPLERATE], [1], [libsamplerate installed]) ++ ], [ ++ AS_IF([test "x$with_libsamplerate" != xcheck], [AC_MSG_FAILURE( ++ [--with-libsamplerate was given, but test for libsamplerate failed]) + ]) + ]) +- # Check for libpng. +- AC_ARG_WITH([libpng], +- AS_HELP_STRING([--without-libpng], +- [Build without libpng @<:@default=check@:>@]), +- [], +- [ +- [with_libpng=check] +- ]) +- AS_IF([test "x$with_libpng" != xno], [ +- AC_CHECK_LIB(z, zlibVersion) +- AC_CHECK_LIB(png, png_get_io_ptr, [], [ +- AS_IF([test "x$with_libpng" != xcheck], [AC_MSG_FAILURE( +- [--with-libpng was given, but test for libpng failed]) +- ]) ++]) ++# Check for libpng. ++AC_ARG_WITH([libpng], ++AS_HELP_STRING([--without-libpng], ++ [Build without libpng @<:@default=check@:>@]), ++[], ++[ ++ [with_libpng=check] ++]) ++AS_IF([test "x$with_libpng" != xno], [ ++ PKG_CHECK_MODULES([PNG], [libpng >= 1.6.10], [ ++ AC_DEFINE([HAVE_LIBPNG], [1], [libpng installed]) ++ ], [ ++ AS_IF([test "x$with_libpng" != xcheck], [AC_MSG_FAILURE( ++ [--with-libpng was given, but test for libpng failed]) + ]) + ]) +- AC_CHECK_LIB(m, log) ++]) ++AC_CHECK_LIB(m, log) + +- AC_CHECK_HEADERS([linux/kd.h dev/isa/spkrio.h dev/speaker/speaker.h]) +- AC_CHECK_FUNCS(mmap ioperm) ++AC_CHECK_HEADERS([linux/kd.h dev/isa/spkrio.h dev/speaker/speaker.h]) ++AC_CHECK_FUNCS(mmap ioperm) + +- # OpenBSD I/O i386 library for I/O port access. +- # (64 bit has the same thing with a different name!) ++# OpenBSD I/O i386 library for I/O port access. ++# (64 bit has the same thing with a different name!) + +- AC_CHECK_LIB(i386, i386_iopl) +- AC_CHECK_LIB(amd64, amd64_iopl) +-]) ++AC_CHECK_LIB(i386, i386_iopl) ++AC_CHECK_LIB(amd64, amd64_iopl) + + case $host in + *cygwin* | *mingw* ) +diff --git a/opl/examples/Makefile.am b/opl/examples/Makefile.am +index 9afcd51..54c37f8 100644 +--- a/opl/examples/Makefile.am ++++ b/opl/examples/Makefile.am +@@ -1,5 +1,5 @@ + +-AM_CFLAGS = -I$(top_srcdir)/opl ++AM_CFLAGS = -I$(top_srcdir)/opl @SDL_CFLAGS@ + + noinst_PROGRAMS=droplay + +diff --git a/src/Makefile.am b/src/Makefile.am +index 78ee3ba..9624e01 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -21,7 +21,8 @@ execgames_SCRIPTS = $(SETUP_BINARIES) + AM_CFLAGS = -I$(top_srcdir)/textscreen \ + -I$(top_srcdir)/opl \ + -I$(top_srcdir)/pcsound \ +- @SDLMIXER_CFLAGS@ @SDLNET_CFLAGS@ ++ @SDLMIXER_CFLAGS@ @SDLNET_CFLAGS@ \ ++ @SAMPLERATE_CFLAGS@ @PNG_CFLAGS@ + + # Common source files used by absolutely everything: + +@@ -150,7 +151,9 @@ EXTRA_LIBS = \ + @LDFLAGS@ \ + @SDL_LIBS@ \ + @SDLMIXER_LIBS@ \ +- @SDLNET_LIBS@ ++ @SDLNET_LIBS@ \ ++ @SAMPLERATE_LIBS@ \ ++ @PNG_LIBS@ + + if HAVE_WINDRES + @PROGRAM_PREFIX@doom_SOURCES=$(SOURCE_FILES_WITH_DEH) resource.rc +diff --git a/textscreen/Makefile.am b/textscreen/Makefile.am +index 628d4ff..427ed40 100644 +--- a/textscreen/Makefile.am ++++ b/textscreen/Makefile.am +@@ -1,5 +1,5 @@ + +-AM_CFLAGS = -I$(top_srcdir)/src ++AM_CFLAGS = -I$(top_srcdir)/src @SDL_CFLAGS@ + + CTAGS_ARGS=-I TXT_UNCAST_ARG+ + +diff --git a/textscreen/examples/Makefile.am b/textscreen/examples/Makefile.am +index 4632d92..b857748 100644 +--- a/textscreen/examples/Makefile.am ++++ b/textscreen/examples/Makefile.am +@@ -1,5 +1,5 @@ + +-AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/textscreen ++AM_CFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/textscreen @SDL_CFLAGS@ + + noinst_PROGRAMS=guitest calculator + +-- +2.1.4 + diff --git a/buildroot/package/chocolate-doom/Config.in b/buildroot/package/chocolate-doom/Config.in new file mode 100644 index 0000000..5e0d9c1 --- /dev/null +++ b/buildroot/package/chocolate-doom/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CHOCOLATE_DOOM + bool "chocolate-doom" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_SDL + select BR2_PACKAGE_SDL_MIXER + select BR2_PACKAGE_SDL_NET + help + Chocolate Doom is a set of conservative source ports for Doom, + Heretic, Hexen and Strife, with a philosophy of preserving the + look, feel, and bugs of the vanilla versions of each. + + http://www.chocolate-doom.org diff --git a/buildroot/package/chocolate-doom/chocolate-doom.hash b/buildroot/package/chocolate-doom/chocolate-doom.hash new file mode 100644 index 0000000..6751c7d --- /dev/null +++ b/buildroot/package/chocolate-doom/chocolate-doom.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 3e6d1a82ac5c8b025a9695ce1e47d0dc6ed142ebb1129b1e4a70e2740f79150c chocolate-doom-2.3.0.tar.gz diff --git a/buildroot/package/chocolate-doom/chocolate-doom.mk b/buildroot/package/chocolate-doom/chocolate-doom.mk new file mode 100644 index 0000000..54121c4 --- /dev/null +++ b/buildroot/package/chocolate-doom/chocolate-doom.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# chocolate-doom +# +################################################################################ + +CHOCOLATE_DOOM_VERSION = 2.3.0 +CHOCOLATE_DOOM_SITE = http://www.chocolate-doom.org/downloads/$(CHOCOLATE_DOOM_VERSION) +CHOCOLATE_DOOM_LICENSE = GPL-2.0+ +CHOCOLATE_DOOM_LICENSE_FILES = COPYING +CHOCOLATE_DOOM_DEPENDENCIES = host-pkgconf sdl sdl_mixer sdl_net + +# We're patching configure.ac, so we need to autoreconf +CHOCOLATE_DOOM_AUTORECONF = YES + +# Avoid installing desktop entries, icons, etc. +CHOCOLATE_DOOM_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec + +CHOCOLATE_DOOM_CONF_OPTS = \ + --disable-sdltest \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +CHOCOLATE_DOOM_DEPENDENCIES += libpng +CHOCOLATE_DOOM_CONF_OPTS += --with-libpng +else +CHOCOLATE_DOOM_CONF_OPTS += --without-libpng +endif + +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) +CHOCOLATE_DOOM_DEPENDENCIES += libsamplerate +CHOCOLATE_DOOM_CONF_OPTS += --with-libsamplerate +else +CHOCOLATE_DOOM_CONF_OPTS += --without-libsamplerate +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/chrony/0001-ntp-fix-build-with-musl-libc.patch b/buildroot/package/chrony/0001-ntp-fix-build-with-musl-libc.patch new file mode 100644 index 0000000..c927b34 --- /dev/null +++ b/buildroot/package/chrony/0001-ntp-fix-build-with-musl-libc.patch @@ -0,0 +1,39 @@ +From 1e64bc4c4379ae3e55be3c518e0e3e22c8c4ae77 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 14 Nov 2017 13:23:57 +0200 +Subject: [PATCH] ntp: fix build with musl libc + +The configure script enables HAVE_LINUX_TIMESTAMPING_OPT_PKTINFO based +on the existence of struct scm_ts_pktinfo and +SOF_TIMESTAMPING_OPT_PKTINFO that were introduced in Linux kernel v4.13 +in the linux/net_tstamp.h kernel header. But this feature also requires +SCM_TIMESTAMPING_PKTINFO that is defined in the socket.h header. musl +libc provides its own version of socket.h, and as of musl version 1.1.16 +this macro is missing. Define this macro in the code as a temporary +measure until musl is updated to its latest version. + +Signed-off-by: Baruch Siach +--- +Upstream status: not upstreamable +--- + ntp_io_linux.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/ntp_io_linux.c b/ntp_io_linux.c +index 00caed06f7ba..2214a6f6f6c5 100644 +--- a/ntp_io_linux.c ++++ b/ntp_io_linux.c +@@ -574,6 +574,10 @@ extract_udp_data(unsigned char *msg, NTP_Remote_Address *remote_addr, int len) + + /* ================================================== */ + ++#ifndef SCM_TIMESTAMPING_PKTINFO ++#define SCM_TIMESTAMPING_PKTINFO 58 ++#endif ++ + int + NIO_Linux_ProcessMessage(NTP_Remote_Address *remote_addr, NTP_Local_Address *local_addr, + NTP_Local_Timestamp *local_ts, struct msghdr *hdr, int length) +-- +2.15.0 + diff --git a/buildroot/package/chrony/Config.in b/buildroot/package/chrony/Config.in new file mode 100644 index 0000000..05d6fc1 --- /dev/null +++ b/buildroot/package/chrony/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CHRONY + bool "chrony" + depends on BR2_USE_MMU # fork() + help + Chrony is a pair of programs which are used to maintain the + accuracy of the system clock. + + http://chrony.tuxfamily.org/ diff --git a/buildroot/package/chrony/S49chrony b/buildroot/package/chrony/S49chrony new file mode 100755 index 0000000..6215acc --- /dev/null +++ b/buildroot/package/chrony/S49chrony @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Start chrony + +[ -f /etc/chrony.conf ] || exit 0 + +case "$1" in + start) + printf "Starting chrony: " + chronyd && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping chrony: " + killall chronyd && echo "OK" || echo "FAIL" + ;; + restart|reload) + "$0" stop + sleep 1 + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/chrony/chrony.hash b/buildroot/package/chrony/chrony.hash new file mode 100644 index 0000000..38f1534 --- /dev/null +++ b/buildroot/package/chrony/chrony.hash @@ -0,0 +1,5 @@ +# From https://listengine.tuxfamily.org/chrony.tuxfamily.org/chrony-announce/2017/09/msg00000.html +md5 f4c4eb0dc92f35ee4bb7d3dcd8029ecb chrony-3.2.tar.gz +sha1 64db6c31e013222cc0a2b66322192b4cedf6e048 chrony-3.2.tar.gz +# Locally calculated +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/chrony/chrony.mk b/buildroot/package/chrony/chrony.mk new file mode 100644 index 0000000..8868e84 --- /dev/null +++ b/buildroot/package/chrony/chrony.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# chrony +# +################################################################################ + +CHRONY_VERSION = 3.2 +CHRONY_SITE = http://download.tuxfamily.org/chrony +CHRONY_LICENSE = GPL-2.0 +CHRONY_LICENSE_FILES = COPYING + +CHRONY_CONF_OPTS = \ + --host-system=Linux \ + --host-machine=$(BR2_ARCH) \ + --prefix=/usr \ + --without-tomcrypt + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +CHRONY_DEPENDENCIES += libcap +else +CHRONY_CONF_OPTS += --without-libcap +endif + +ifeq ($(BR2_PACKAGE_LIBNSS),y) +CHRONY_DEPENDENCIES += host-pkgconf libnss +else +CHRONY_CONF_OPTS += --without-nss +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +CHRONY_CONF_OPTS += --enable-scfilter +CHRONY_DEPENDENCIES += libseccomp +else +CHRONY_CONF_OPTS += --without-seccomp +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +CHRONY_DEPENDENCIES += readline +else +CHRONY_CONF_OPTS += --disable-readline +endif + +# If pps-tools is available, build it before so the package can use it +# (HAVE_SYS_TIMEPPS_H). +ifeq ($(BR2_PACKAGE_PPS_TOOLS),y) +CHRONY_DEPENDENCIES += pps-tools +endif + +define CHRONY_CONFIGURE_CMDS + cd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure $(CHRONY_CONF_OPTS) +endef + +define CHRONY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define CHRONY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +define CHRONY_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/chrony/S49chrony $(TARGET_DIR)/etc/init.d/S49chrony +endef + +define CHRONY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/chrony/chrony.service \ + $(TARGET_DIR)/usr/lib/systemd/system/chrony.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/chrony.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/chrony.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/chrony/chrony.service b/buildroot/package/chrony/chrony.service new file mode 100644 index 0000000..325b63c --- /dev/null +++ b/buildroot/package/chrony/chrony.service @@ -0,0 +1,11 @@ +[Unit] +Description=Chrony Network Time Daemon +After=syslog.target network.target +Conflicts=systemd-timesyncd.service + +[Service] +ExecStart=/usr/sbin/chronyd -n +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/cifs-utils/0001-mount.cifs-Remove-data_blob.h-include.patch b/buildroot/package/cifs-utils/0001-mount.cifs-Remove-data_blob.h-include.patch new file mode 100644 index 0000000..6536076 --- /dev/null +++ b/buildroot/package/cifs-utils/0001-mount.cifs-Remove-data_blob.h-include.patch @@ -0,0 +1,32 @@ +From 272d523a57a4e8791d625a479128613be5e401f5 Mon Sep 17 00:00:00 2001 +From: Thomas Witt +Date: Wed, 15 Mar 2017 20:20:44 +0000 +Subject: [PATCH] mount.cifs: Remove data_blob.h include + +data_blob.h includes talloc.h from libtalloc, but that is only marked as +a dependency for cifs.upcall. No symbols from that header are used by +cifs.mount, so remove it to avoid the libtalloc dependency + +Signed-off-by: Thomas Witt +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit 272d523a57a4 + + mount.cifs.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/mount.cifs.c b/mount.cifs.c +index 13b71ef50303..2612feb4d591 100644 +--- a/mount.cifs.c ++++ b/mount.cifs.c +@@ -61,7 +61,6 @@ + #include "mount.h" + #include "util.h" + #include "resolve_host.h" +-#include "data_blob.h" + + #ifndef MS_MOVE + #define MS_MOVE 8192 +-- +2.11.0 + diff --git a/buildroot/package/cifs-utils/Config.in b/buildroot/package/cifs-utils/Config.in new file mode 100644 index 0000000..b433850 --- /dev/null +++ b/buildroot/package/cifs-utils/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CIFS_UTILS + bool "cifs-utils" + # uses fork() + depends on BR2_USE_MMU + help + The in-kernel CIFS filesystem is generally the preferred + method for mounting SMB/CIFS shares on Linux. The in-kernel + CIFS filesystem relies on a set of user-space tools. That + package of tools is called cifs-utils. Although not really + part of Samba proper, these tools were originally part of + the Samba package. For several reasons, shipping these tools + as part of Samba was problematic and it was deemed better to + split them off into their own package. + + http://wiki.samba.org/index.php/LinuxCIFS_utils diff --git a/buildroot/package/cifs-utils/cifs-utils.hash b/buildroot/package/cifs-utils/cifs-utils.hash new file mode 100644 index 0000000..ebc9c43 --- /dev/null +++ b/buildroot/package/cifs-utils/cifs-utils.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 b2f21612474ab012e75accd167aab607a0614ff67efb56ea0f36789fa785cfab cifs-utils-6.7.tar.bz2 diff --git a/buildroot/package/cifs-utils/cifs-utils.mk b/buildroot/package/cifs-utils/cifs-utils.mk new file mode 100644 index 0000000..e0efb3b --- /dev/null +++ b/buildroot/package/cifs-utils/cifs-utils.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# cifs-utils +# +################################################################################ + +CIFS_UTILS_VERSION = 6.7 +CIFS_UTILS_SOURCE = cifs-utils-$(CIFS_UTILS_VERSION).tar.bz2 +CIFS_UTILS_SITE = http://ftp.samba.org/pub/linux-cifs/cifs-utils +CIFS_UTILS_LICENSE = GPL-3.0+ +CIFS_UTILS_LICENSE_FILES = COPYING +# Missing install-sh in release tarball +CIFS_UTILS_AUTORECONF = YES +CIFS_UTILS_DEPENDENCIES = host-pkgconf + +# Let's disable PIE unconditionally. We want PIE to be enabled only by +# the global BR2_RELRO_FULL option. +CIFS_UTILS_CONF_OPTS = --disable-pie --disable-man + +ifeq ($(BR2_PACKAGE_KEYUTILS),y) +CIFS_UTILS_DEPENDENCIES += keyutils +endif + +define CIFS_UTILS_NO_WERROR + $(SED) 's/-Werror//' $(@D)/Makefile.in +endef + +CIFS_UTILS_POST_PATCH_HOOKS += CIFS_UTILS_NO_WERROR + +$(eval $(autotools-package)) diff --git a/buildroot/package/circus/Config.in b/buildroot/package/circus/Config.in new file mode 100644 index 0000000..f1cd93c --- /dev/null +++ b/buildroot/package/circus/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CIRCUS + bool "circus" + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + depends on BR2_INSTALL_LIBSTDCPP # pyzmq -> zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # pyzmq -> zeromq + select BR2_PACKAGE_PYTHON_IOWAIT # runtime + select BR2_PACKAGE_PYTHON_PSUTIL # runtime + select BR2_PACKAGE_PYTHON_PYZMQ # runtime + select BR2_PACKAGE_PYTHON_TORNADO # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + Circus is a program that will let you run and watch multiple + processes and sockets. + + https://circus.readthedocs.org/en/latest/ + +comment "circus needs Python and a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !(BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3) diff --git a/buildroot/package/circus/circus.hash b/buildroot/package/circus/circus.hash new file mode 100644 index 0000000..877ae21 --- /dev/null +++ b/buildroot/package/circus/circus.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/circus/json, sha256 locally computed +md5 48e6b220fb0cafca46e3ae1f6ec4bce8 circus-0.14.0.tar.gz +sha256 b8ca91d8bd87b350fda199488ac9ddff91a546b0c6214a28a2f13393713cf062 circus-0.14.0.tar.gz +sha256 3df739c05a4eed7efdf4987142658d2a4f1243e5f08e72a5ecedac5749c92a49 LICENSE diff --git a/buildroot/package/circus/circus.mk b/buildroot/package/circus/circus.mk new file mode 100644 index 0000000..8b863aa --- /dev/null +++ b/buildroot/package/circus/circus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# circus +# +################################################################################ + +CIRCUS_VERSION = 0.14.0 +CIRCUS_SITE = https://pypi.python.org/packages/68/41/02c6f5edea2df80b133a12753aee3e698e9130a5c878a9b0bffcf1e17e65 +CIRCUS_SETUP_TYPE = setuptools +CIRCUS_LICENSE = Apache-2.0 +CIRCUS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/civetweb/0001-Lua-fix-a-typo-changing-LFS_DIR-to-LFS_DIR.patch b/buildroot/package/civetweb/0001-Lua-fix-a-typo-changing-LFS_DIR-to-LFS_DIR.patch new file mode 100644 index 0000000..aee3cfc --- /dev/null +++ b/buildroot/package/civetweb/0001-Lua-fix-a-typo-changing-LFS_DIR-to-LFS_DIR.patch @@ -0,0 +1,27 @@ +From 0821066f9adf8410891cd07684ecac50a9bc36a4 Mon Sep 17 00:00:00 2001 +From: Fabio Porcedda +Date: Wed, 25 Feb 2015 18:40:24 +0100 +Subject: [PATCH] Lua: fix a typo changing %(LFS_DIR) to $(LFS_DIR) + +Also this fix a error on GNU Make v4.0: + Makefile:203: *** mixed implicit and normal rules. Stop. + +Signed-off-by: Fabio Porcedda +--- + resources/Makefile.in-lua | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/resources/Makefile.in-lua b/resources/Makefile.in-lua +index 0902f11..f3d95fd 100644 +--- a/resources/Makefile.in-lua ++++ b/resources/Makefile.in-lua +@@ -57,5 +57,5 @@ LFS_CFLAGS = -I$(LFS_DIR) + + OBJECTS += $(LUA_OBJECTS) $(SQLITE_OBJECTS) $(LFS_OBJECTS) + CFLAGS += $(LUA_CFLAGS) $(SQLITE_CFLAGS) $(LFS_CFLAGS) -DUSE_LUA -DUSE_LUA_SQLITE3 -DUSE_LUA_FILE_SYSTEM +-SOURCE_DIRS = $(LUA_DIR) $(SQLITE_DIR) %(LFS_DIR) ++SOURCE_DIRS = $(LUA_DIR) $(SQLITE_DIR) $(LFS_DIR) + +-- +2.3.0 + diff --git a/buildroot/package/civetweb/Config.in b/buildroot/package/civetweb/Config.in new file mode 100644 index 0000000..d68a1ff --- /dev/null +++ b/buildroot/package/civetweb/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_CIVETWEB + bool "civetweb" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + Full featured embedded web server with Lua support. + + https://sourceforge.net/projects/civetweb + +if BR2_PACKAGE_CIVETWEB + +config BR2_PACKAGE_CIVETWEB_WITH_LUA + bool "enable Lua support" + # required by the bundled Sqlite3 and Lua code + depends on !BR2_STATIC_LIBS + help + Enable Lua support in Civetweb. Note that this will use a + version of Lua and Sqlite bundled within the Civetweb + sources, and not the packages from Buildroot. + +comment "lua support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif + +comment "civetweb needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/civetweb/civetweb.hash b/buildroot/package/civetweb/civetweb.hash new file mode 100644 index 0000000..745f4a8 --- /dev/null +++ b/buildroot/package/civetweb/civetweb.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 79a852a26068eb6d2f8de5ee72e021f0d2c8bd176eb81f41909a876b736815d9 civetweb-v1.5.tar.gz diff --git a/buildroot/package/civetweb/civetweb.mk b/buildroot/package/civetweb/civetweb.mk new file mode 100644 index 0000000..d29765b --- /dev/null +++ b/buildroot/package/civetweb/civetweb.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# civetweb +# +################################################################################ + +CIVETWEB_VERSION = v1.5 +CIVETWEB_SITE = $(call github,sunsetbrew,civetweb,$(CIVETWEB_VERSION)) +CIVETWEB_LICENSE = MIT +CIVETWEB_LICENSE_FILES = LICENSE.md + +CIVETWEB_CONF_OPTS = TARGET_OS=LINUX WITH_IPV6=1 +CIVETWEB_COPT = -DHAVE_POSIX_FALLOCATE=0 +CIVETWEB_LIBS = -lpthread -lm +CIVETWEB_SYSCONFDIR = /etc +CIVETWEB_HTMLDIR = /var/www + +ifeq ($(BR2_PACKAGE_CIVETWEB_WITH_LUA),y) +CIVETWEB_CONF_OPTS += WITH_LUA=1 +CIVETWEB_LIBS += -ldl +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +CIVETWEB_COPT += -DNO_SSL_DL +CIVETWEB_LIBS += -lssl -lcrypto -lz +CIVETWEB_DEPENDENCIES += openssl +else +CIVETWEB_COPT += -DNO_SSL +endif + +define CIVETWEB_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) build \ + $(CIVETWEB_CONF_OPTS) \ + COPT="$(CIVETWEB_COPT)" LIBS="$(CIVETWEB_LIBS)" +endef + +define CIVETWEB_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \ + DOCUMENT_ROOT="$(CIVETWEB_HTMLDIR)" \ + CONFIG_FILE2="$(CIVETWEB_SYSCONFDIR)/civetweb.conf" \ + HTMLDIR="$(TARGET_DIR)$(CIVETWEB_HTMLDIR)" \ + SYSCONFDIR="$(TARGET_DIR)$(CIVETWEB_SYSCONFDIR)" \ + PREFIX="$(TARGET_DIR)/usr" \ + $(CIVETWEB_CONF_OPTS) \ + COPT='$(CIVETWEB_COPT)' +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/cjson/Config.in b/buildroot/package/cjson/Config.in new file mode 100644 index 0000000..ee18fce --- /dev/null +++ b/buildroot/package/cjson/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_CJSON + bool "cJSON" + help + An ultra-lightweight, portable, single-file, simple-as-can-be + ANSI-C compliant JSON parser, under MIT license. + + https://github.com/DaveGamble/cJSON diff --git a/buildroot/package/cjson/cjson.hash b/buildroot/package/cjson/cjson.hash new file mode 100644 index 0000000..ea2ecbb --- /dev/null +++ b/buildroot/package/cjson/cjson.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 28ef8c069db19010b9af247b86b05f0f879ac914a4620997c3e5181465170b40 cjson-v1.7.1.tar.gz +sha256 a36dda207c36db5818729c54e7ad4e8b0c6fba847491ba64f372c1a2037b6d5c LICENSE diff --git a/buildroot/package/cjson/cjson.mk b/buildroot/package/cjson/cjson.mk new file mode 100644 index 0000000..88a33a2 --- /dev/null +++ b/buildroot/package/cjson/cjson.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# cjson +# +################################################################################ + +CJSON_VERSION = v1.7.1 +CJSON_SITE = $(call github,DaveGamble,cjson,$(CJSON_VERSION)) +CJSON_INSTALL_STAGING = YES +CJSON_LICENSE = MIT +CJSON_LICENSE_FILES = LICENSE +# Set ENABLE_CUSTOM_COMPILER_FLAGS to OFF in particular to disable +# -fstack-protector-strong which depends on BR2_TOOLCHAIN_HAS_SSP +CJSON_CONF_OPTS += \ + -DENABLE_CJSON_TEST=OFF \ + -DENABLE_CUSTOM_COMPILER_FLAGS=OFF + +# If BUILD_SHARED_AND_STATIC_LIBS is set to OFF, cjson uses the +# standard BUILD_SHARED_LIBS option which is passed by the +# cmake-package infrastructure. +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +CJSON_CONF_OPTS += -DBUILD_SHARED_AND_STATIC_LIBS=ON +else +CJSON_CONF_OPTS += -DBUILD_SHARED_AND_STATIC_LIBS=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch b/buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch new file mode 100644 index 0000000..daac677 --- /dev/null +++ b/buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch @@ -0,0 +1,34 @@ +From 52fda6e6689e22866a39ec4273713fb6035c38b2 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Mon, 7 May 2018 23:14:46 +0200 +Subject: [PATCH] clamdscan/proto.c: fix build error due to missing sockaddr_un + definition +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +proto.c: In function ‘dconnect’: +proto.c:86:67: error: invalid application of ‘sizeof’ to incomplete type ‘struct sockaddr_un’ + if (connect(sockd, (struct sockaddr *)&nixsock, sizeof(nixsock)) == 0) + +Signed-off-by: Bernd Kuhls +Upstream-status: http://lurker.clamav.net/message/20140928.130829.5494fd68.en.html +--- + clamdscan/proto.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/clamdscan/proto.c b/clamdscan/proto.c +index 0205f6da0..d3396732f 100644 +--- a/clamdscan/proto.c ++++ b/clamdscan/proto.c +@@ -42,6 +42,7 @@ + #include + #include + #include ++#include + #ifdef HAVE_SYS_SELECT_H + #include + #endif +-- +2.14.3 + diff --git a/buildroot/package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch b/buildroot/package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch new file mode 100644 index 0000000..e99a974 --- /dev/null +++ b/buildroot/package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch @@ -0,0 +1,34 @@ +From 053bac34b9f0f947c58fcdf80ac03d5a6b05aa12 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 7 May 2018 23:15:58 +0200 +Subject: [PATCH] mbox: do not use backtrace if using uClibc without backtrace + support + +Since uClibc can be configured without support for backtrace, disable +the backtrace if we are building with a uClibc that was built without +backtrace. + +This is a bit hacky, and would greatly benefit from a test in ./configure +instead, but does nicely as a quick fix for now. + +Signed-off-by: "Yann E. MORIN" +--- + libclamav/mbox.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libclamav/mbox.c b/libclamav/mbox.c +index 71f540c0a..4851297a9 100644 +--- a/libclamav/mbox.c ++++ b/libclamav/mbox.c +@@ -98,7 +98,7 @@ + #include + #endif + +-#if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 ++#if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 && !defined(__UCLIBC__) || defined(__UCLIBC_HAS_BACKTRACE__) + #define HAVE_BACKTRACE + #endif + #endif +-- +2.14.3 + diff --git a/buildroot/package/clamav/0003-m4-reorganization-libs-curl.m4-fix-curl-config-detec.patch b/buildroot/package/clamav/0003-m4-reorganization-libs-curl.m4-fix-curl-config-detec.patch new file mode 100644 index 0000000..1d26b09 --- /dev/null +++ b/buildroot/package/clamav/0003-m4-reorganization-libs-curl.m4-fix-curl-config-detec.patch @@ -0,0 +1,75 @@ +From 6b6ff53b5931c162be13504a1efc53fc5212f9d1 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 7 May 2018 22:57:34 +0200 +Subject: [PATCH] m4/reorganization/libs/curl.m4: fix curl-config detection + logic + +The current logic in curl.m4 doesn't behave properly when +--without-libcurl is passed to the ./configure script. + +Indeed, in this case what happens is that: + + (1) Since --without-libcurl is passed, LIBCURL_HOME is set to nothing + + (2) find_curl is set to "no" + + (3) Due to find_curl being "no", LIBCURL_HOME is not set to + /usr/local and remains empty + + (4) We test if $LIBCURL_HOME/bin/curl_config exists, which is + equivalent to testing if /bin/curl-config exists. So curl.m4 is + looking at /bin/curl-config, which is irrelevant in a + cross-compilation context: it is not because the build machine + has libcurl installed that it is available for the target. + + Due to this mistake, it sets have_curl="yes" + +Due to this, the ./configure script assumes it can build the +clamsubmit program, which fails at build time because curl/curl.h +doesn't exist. + +To fix this, this commit rewrites the curl-config detection logic with +a simpler loop. If find_curl=yes, it means we have to find libcurl +ourselves, so we iterate over /usr/local and /usr, and check if a +bin/curl-config binary is available there. If so, we use this path as +LIBCURL_HOME and set have_curl="yes". + +This preserves the existing behavior, while fixing the situation where +--without-libcurl is passed, but /bin/curl-config exists. + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://github.com/Cisco-Talos/clamav-devel/pull/87 +--- + m4/reorganization/libs/curl.m4 | 15 +++++---------- + 1 file changed, 5 insertions(+), 10 deletions(-) + +diff --git a/m4/reorganization/libs/curl.m4 b/m4/reorganization/libs/curl.m4 +index 2a5966ee7..b6a9c2137 100644 +--- a/m4/reorganization/libs/curl.m4 ++++ b/m4/reorganization/libs/curl.m4 +@@ -19,17 +19,12 @@ fi + [find_curl="yes"]) + + if test "X$find_curl" = "Xyes"; then +- LIBCURL_HOME=/usr/local +-fi +-if test -f "$LIBCURL_HOME/bin/curl-config"; then +- have_curl="yes" +-else +- if test "X$find_curl" = "Xyes"; then +- LIBCURL_HOME=/usr +- if test -f "$LIBCURL_HOME/bin/curl-config"; then +- have_curl="yes" ++ for p in /usr/local /usr ; do ++ if test -f "${p}/bin/curl-config"; then ++ LIBCURL_HOME=$p ++ have_curl="yes" + fi +- fi ++ done + fi + + if test "X$have_curl" = "Xyes"; then +-- +2.14.3 + diff --git a/buildroot/package/clamav/Config.in b/buildroot/package/clamav/Config.in new file mode 100644 index 0000000..bc934ea --- /dev/null +++ b/buildroot/package/clamav/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_CLAMAV + bool "clamav" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBTOOL + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + ClamAV is an open source antivirus engine for detecting + trojans, viruses, malware & other malicious threats. + + http://www.clamav.net + +comment "clamav needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/clamav/clamav.hash b/buildroot/package/clamav/clamav.hash new file mode 100644 index 0000000..0cb8f51 --- /dev/null +++ b/buildroot/package/clamav/clamav.hash @@ -0,0 +1,14 @@ +# Locally calculated +sha256 84e026655152247de7237184ee13003701c40be030dd68e0316111049f58a59f clamav-0.100.1.tar.gz +sha256 0c4fd2fa9733fc9122503797648710851e4ee6d9e4969dd33fcbd8c63cd2f584 COPYING +sha256 d72a145c90918184a05ef65a04c9e6f7466faa59bc1b82c8f6a8ddc7ddcb9bed COPYING.bzip2 +sha256 dfb818a0d41411c6fb1c193c68b73018ceadd1994bda41ad541cbff292894bc6 COPYING.file +sha256 6dce638b76399e7521ad8e182d3e33e4496c85b3b69b6ff434b53017101e82ad COPYING.getopt +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LGPL +sha256 e3a9b913515a42f8ff3ef1551c3a2cdba383c39ed959729e0e2911219496ad74 COPYING.llvm +sha256 d96d71b66aa32c4a2d1619b9ca3347dafa9460bcf0fb5ac2408916067ad31dfc COPYING.lzma +sha256 accdcf2455c07b99abea59016b3663eaef926a92092d103bfaa25fed27cf6b24 COPYING.pcre +sha256 e2c1395a3d9fea6d5d25847c9d783db6e2cc8b085b4025861f459139c5dfd90b COPYING.regex +sha256 1faccc6b5c7b958fb807a3f573d5be9bf7889fe898f7e0617c544b05a81bfd00 COPYING.unrar +sha256 a20d6317c5384e8d4c05f9c31097878675d9429ec46090656166039cc10bc957 COPYING.YARA +sha256 c2f77553f8d870c5635b0dace0519253233f172b33ce1fdf6578610706294eee COPYING.zlib diff --git a/buildroot/package/clamav/clamav.mk b/buildroot/package/clamav/clamav.mk new file mode 100644 index 0000000..9db90bd --- /dev/null +++ b/buildroot/package/clamav/clamav.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# clamav +# +################################################################################ + +CLAMAV_VERSION = 0.100.1 +CLAMAV_SITE = https://www.clamav.net/downloads/production +CLAMAV_LICENSE = GPL-2.0 +CLAMAV_LICENSE_FILES = COPYING COPYING.bzip2 COPYING.file COPYING.getopt \ + COPYING.LGPL COPYING.llvm COPYING.lzma COPYING.pcre COPYING.regex \ + COPYING.unrar COPYING.zlib +CLAMAV_DEPENDENCIES = \ + host-pkgconf \ + libtool \ + openssl \ + zlib \ + $(TARGET_NLS_DEPENDENCIES) +# 0003-m4-reorganization-libs-curl.m4-fix-curl-config-detec.patch +CLAMAV_AUTORECONF = YES + +# mmap cannot be detected when cross-compiling, needed for mempool support +CLAMAV_CONF_ENV = \ + ac_cv_c_mmap_private=yes \ + have_cv_ipv6=yes + +# UCLIBC_HAS_FTS is disabled, therefore disable fanotify (missing fts.h) +CLAMAV_CONF_OPTS = \ + --with-dbdir=/var/lib/clamav \ + --with-ltdl-include=$(STAGING_DIR)/usr/include \ + --with-ltdl-lib=$(STAGING_DIR)/usr/lib \ + --with-openssl=$(STAGING_DIR)/usr \ + --with-zlib=$(STAGING_DIR)/usr \ + --disable-zlib-vcheck \ + --disable-rpath \ + --disable-clamav \ + --disable-fanotify \ + --disable-milter \ + --disable-llvm \ + --disable-clamdtop \ + --enable-mempool + +ifeq ($(BR2_PACKAGE_BZIP2),y) +CLAMAV_DEPENDENCIES += bzip2 +# autodetection gets confused if host has bzip2, so force it +CLAMAV_CONF_ENV += \ + ac_cv_libbz2_libs=-lbz2 \ + ac_cv_libbz2_ltlibs=-lbz2 +else +CLAMAV_CONF_OPTS += --disable-bzip2 +endif + +ifeq ($(BR2_PACKAGE_JSON_C),y) +CLAMAV_CONF_OPTS += --with-libjson=$(STAGING_DIR)/usr +CLAMAV_DEPENDENCIES += json-c +else +CLAMAV_CONF_OPTS += --without-libjson +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +CLAMAV_CONF_OPTS += --with-xml=$(STAGING_DIR)/usr +CLAMAV_DEPENDENCIES += libxml2 +else +CLAMAV_CONF_OPTS += --disable-xml +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +CLAMAV_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr +CLAMAV_DEPENDENCIES += libcurl +else +CLAMAV_CONF_OPTS += --without-libcurl +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +CLAMAV_CONF_OPTS += --with-iconv +CLAMAV_DEPENDENCIES += libiconv +else +CLAMAV_CONF_OPTS += --without-iconv +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +CLAMAV_CONF_OPTS += --with-pcre=$(STAGING_DIR)/usr +CLAMAV_DEPENDENCIES += pcre +else +CLAMAV_CONF_OPTS += --without-pcre +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/clapack/0001-cmake-force-libf2c-to-be-built-as-a-static-library.patch b/buildroot/package/clapack/0001-cmake-force-libf2c-to-be-built-as-a-static-library.patch new file mode 100644 index 0000000..8fede9d --- /dev/null +++ b/buildroot/package/clapack/0001-cmake-force-libf2c-to-be-built-as-a-static-library.patch @@ -0,0 +1,32 @@ +From 4fe2f454e454d9e6b1e83b2ea67581990461ed36 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 11 Jan 2014 22:05:25 +0100 +Subject: [PATCH 1/6] cmake: force libf2c to be built as a static library + +As stated in INSTALL/LAPACK_version.c, liblapack requires to be linked +against the static library of libf2c. + +Signed-off-by: Samuel Martin +--- + F2CLIBS/libf2c/CMakeLists.txt | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/F2CLIBS/libf2c/CMakeLists.txt b/F2CLIBS/libf2c/CMakeLists.txt +index 43d7b3f..f98d66a 100644 +--- a/F2CLIBS/libf2c/CMakeLists.txt ++++ b/F2CLIBS/libf2c/CMakeLists.txt +@@ -58,5 +58,10 @@ if(WIN32) + endif() + include_directories(${CLAPACK_SOURCE_DIR}/F2CLIBS/libf2c) + include_directories(${CLAPACK_BINARY_DIR}/F2CLIBS/libf2c) +-add_library(f2c ${OFILES} ${CMAKE_CURRENT_BINARY_DIR}/arith.h) ++add_library(f2c STATIC ${OFILES} ${CMAKE_CURRENT_BINARY_DIR}/arith.h) + set_property(TARGET f2c PROPERTY PREFIX lib) ++# Set fPIC on the library when build shared libraries is enabled, because ++# libf2c.a will most likely be included by some shared libraries in such cases. ++if(UNIX AND BUILD_SHARED_LIBS) ++ set_target_properties(f2c PROPERTIES COMPILE_FLAGS "-fPIC") ++endif() +-- +1.8.5.3 + diff --git a/buildroot/package/clapack/0002-cmake-make-test-build-sensitive-to-BUILD_TESTING.patch b/buildroot/package/clapack/0002-cmake-make-test-build-sensitive-to-BUILD_TESTING.patch new file mode 100644 index 0000000..eac4164 --- /dev/null +++ b/buildroot/package/clapack/0002-cmake-make-test-build-sensitive-to-BUILD_TESTING.patch @@ -0,0 +1,80 @@ +From 834c221936d9c460b44e3a65b6fedfb3193f491b Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 11 Jan 2014 21:33:12 +0100 +Subject: [PATCH 2/6] cmake: make test build sensitive to BUILD_TESTING + +This patch prevent from wasting time building the tests if it's our +wish. + +The test build takes a significant amount of time, and the binaries +are not installed. + +Signed-off-by: Samuel Martin +--- + BLAS/TESTING/CMakeLists.txt | 3 +++ + CMakeLists.txt | 9 ++++++--- + TESTING/CMakeLists.txt | 4 ++++ + 3 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/BLAS/TESTING/CMakeLists.txt b/BLAS/TESTING/CMakeLists.txt +index ec2c587..e7dc0b7 100644 +--- a/BLAS/TESTING/CMakeLists.txt ++++ b/BLAS/TESTING/CMakeLists.txt +@@ -25,6 +25,9 @@ + # make single FRC=FRC + # + ####################################################################### ++if(NOT BUILD_TESTING) ++ return() ++endif() + + macro(add_blas_test name src) + get_filename_component(baseNAME ${src} NAME_WE) +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 320ccc6..0a362c0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,5 @@ + cmake_minimum_required(VERSION 2.6) + project(CLAPACK C) +-enable_testing() + include(CTest) + + if(WIN32 AND NOT CYGWIN) +@@ -11,7 +10,9 @@ else() + set(SECOND_SRC ${CLAPACK_SOURCE_DIR}/INSTALL/second.c) + set(DSECOND_SRC ${CLAPACK_SOURCE_DIR}/INSTALL/dsecnd.c) + endif() +-enable_testing() ++if(NOT BUILD_TESTING) ++ enable_testing() ++endif() + option(USE_BLAS_WRAP "pre-pend f2c_ to each function in blas" OFF) + if(NOT USE_BLAS_WRAP) + # _zrotg_ seems to be missing in the wrap header +@@ -21,7 +22,9 @@ include_directories(${CLAPACK_SOURCE_DIR}/INCLUDE) + add_subdirectory(F2CLIBS) + add_subdirectory(BLAS) + add_subdirectory(SRC) +-add_subdirectory(TESTING) ++if(NOT BUILD_TESTING) ++ add_subdirectory(TESTING) ++endif() + set(CLAPACK_VERSION 3.2.1) + set(CPACK_PACKAGE_VERSION_MAJOR 3) + set(CPACK_PACKAGE_VERSION_MINOR 2) +diff --git a/TESTING/CMakeLists.txt b/TESTING/CMakeLists.txt +index d59359d..f6b083a 100644 +--- a/TESTING/CMakeLists.txt ++++ b/TESTING/CMakeLists.txt +@@ -1,3 +1,7 @@ ++if(NOT BUILD_TESTING) ++ return() ++endif() ++ + if(MSVC_VERSION) + # string(REPLACE "/STACK:10000000" "/STACK:900000000000000000" + # CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") +-- +1.8.5.3 + diff --git a/buildroot/package/clapack/0003-cmake-do-not-try-to-run-arithchk-when-cross-compilin.patch b/buildroot/package/clapack/0003-cmake-do-not-try-to-run-arithchk-when-cross-compilin.patch new file mode 100644 index 0000000..cd9828f --- /dev/null +++ b/buildroot/package/clapack/0003-cmake-do-not-try-to-run-arithchk-when-cross-compilin.patch @@ -0,0 +1,70 @@ +From a2f0669fac1f8e7183b15cf7d14f0e99a2d8b012 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 11 Jan 2014 21:47:39 +0100 +Subject: [PATCH 3/6] cmake: do not try to run arithchk when cross-compiling to + generate sources + +Instead, use a predefined arith.h if provided, or generate a default one. + +The arithchk binary is still built (but not installed) to allow the user to +run it on its target and use it; so then allowing to build an optimized +blas library. + +Signed-off-by: Samuel Martin +--- + F2CLIBS/libf2c/CMakeLists.txt | 38 ++++++++++++++++++++++++++++---------- + 1 file changed, 28 insertions(+), 10 deletions(-) + +diff --git a/F2CLIBS/libf2c/CMakeLists.txt b/F2CLIBS/libf2c/CMakeLists.txt +index f98d66a..45a0804 100644 +--- a/F2CLIBS/libf2c/CMakeLists.txt ++++ b/F2CLIBS/libf2c/CMakeLists.txt +@@ -38,17 +38,35 @@ set(TIME dtime_.c etime_.c) + + # For INTEGER*8 support (which requires system-dependent adjustments to + # f2c.h), add ${QINT} to the OFILES assignment below... +-add_executable(arithchk arithchk.c) +-if(UNIX) +- target_link_libraries(arithchk m) ++if(CMAKE_CROSSCOMPILING) ++ if(ARITH_H) ++ message(STATUS "Using the user-defined '${ARITH_H}' as arith.h header.") ++ configure_file("${ARITH_H}" "${CMAKE_CURRENT_BINARY_DIR}/arith.h" COPYONLY) ++ else() ++ message(STATUS "No user-defined arith.h header.") ++ if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/arith.h") ++ message(WARNING "Generating the default non-optimized 'arith.h' header. ++ ++To generate and provide a custom arith.h header: ++run the cross-compiled arithchk binary on your target, ++and use its output to fill your custom arith.h header.") ++ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/arith.h" ++ "/* default, not optimized arith.h */") ++ endif() ++ endif() ++else() ++ add_executable(arithchk arithchk.c) ++ if(UNIX) ++ target_link_libraries(arithchk m) ++ endif() ++ set_target_properties(arithchk PROPERTIES COMPILE_DEFINITIONS ++ "NO_FPINIT;NO_LONG_LONG") ++ ADD_CUSTOM_COMMAND( ++ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/arith.h ++ COMMAND arithchk > ${CMAKE_CURRENT_BINARY_DIR}/arith.h ++ DEPENDS arithchk ++ ) + endif() +-set_target_properties(arithchk PROPERTIES COMPILE_DEFINITIONS +- "NO_FPINIT;NO_LONG_LONG") +-ADD_CUSTOM_COMMAND( +- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/arith.h +- COMMAND arithchk > ${CMAKE_CURRENT_BINARY_DIR}/arith.h +- DEPENDS arithchk +- ) + + + set(OFILES ${MISC} ${POW} ${CX} ${DCX} ${REAL} ${DBL} ${INT} +-- +1.8.5.3 + diff --git a/buildroot/package/clapack/0004-cmake-blas-add-library-and-header-install-rules.patch b/buildroot/package/clapack/0004-cmake-blas-add-library-and-header-install-rules.patch new file mode 100644 index 0000000..e83b066 --- /dev/null +++ b/buildroot/package/clapack/0004-cmake-blas-add-library-and-header-install-rules.patch @@ -0,0 +1,23 @@ +From 675111e8ffc179276a7e4950fe4a4eda4d38a703 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 11 Jan 2014 21:48:32 +0100 +Subject: [PATCH 4/6] cmake: blas: add library and header install rules + +Signed-off-by: Samuel Martin +--- + BLAS/SRC/CMakeLists.txt | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/BLAS/SRC/CMakeLists.txt b/BLAS/SRC/CMakeLists.txt +index d1caff8..a5de5a1 100644 +--- a/BLAS/SRC/CMakeLists.txt ++++ b/BLAS/SRC/CMakeLists.txt +@@ -141,3 +141,5 @@ if(UNIX) + target_link_libraries(blas m) + endif() + target_link_libraries(blas f2c) ++install(TARGETS blas LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) ++install(FILES "${CLAPACK_SOURCE_DIR}/INCLUDE/blaswrap.h" DESTINATION include) +-- +1.8.5.3 + diff --git a/buildroot/package/clapack/0005-cmake-lapack-add-library-and-header-install-rules.patch b/buildroot/package/clapack/0005-cmake-lapack-add-library-and-header-install-rules.patch new file mode 100644 index 0000000..abba460 --- /dev/null +++ b/buildroot/package/clapack/0005-cmake-lapack-add-library-and-header-install-rules.patch @@ -0,0 +1,24 @@ +From 9dfac0d55a31be59a856bad9d3a5071d65176597 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 11 Jan 2014 21:49:22 +0100 +Subject: [PATCH 5/6] cmake: lapack: add library and header install rules + +Signed-off-by: Samuel Martin +--- + SRC/CMakeLists.txt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt +index ac4cce3..aa60555 100644 +--- a/SRC/CMakeLists.txt ++++ b/SRC/CMakeLists.txt +@@ -377,4 +377,5 @@ if(BUILD_COMPLEX16) + endif() + add_library(lapack ${ALLOBJ} ${ALLXOBJ}) + target_link_libraries(lapack blas) +- ++install(TARGETS lapack LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) ++install(FILES "${CLAPACK_SOURCE_DIR}/INCLUDE/clapack.h" DESTINATION include) +-- +1.8.5.3 + diff --git a/buildroot/package/clapack/0006-remove-uninit-f2c.patch b/buildroot/package/clapack/0006-remove-uninit-f2c.patch new file mode 100644 index 0000000..83c2c5c --- /dev/null +++ b/buildroot/package/clapack/0006-remove-uninit-f2c.patch @@ -0,0 +1,24 @@ +uninit.c includes glibc-specific not provided by musl. +Somewhat portable replacement is , which is available in musl +but requires non-trivial changes to uninit.c. + +f2c uses _uninit_f2c() from uninit.c to implement its -trapuv option, +pre-initializiing floating-point variables to NaN and asking FPU to send +SIGFPE whenever NaN value is encountered. + +clapack source has already been run through f2c without -trapuv, +so uninit.c code is not used anywhere and can be safely excluded. + +Signed-off-by: Alex Suykov + +--- a/F2CLIBS/libf2c/CMakeLists.txt ++++ b/F2CLIBS/libf2c/CMakeLists.txt +@@ -1,7 +1,7 @@ + set(MISC + f77vers.c i77vers.c main.c s_rnge.c abort_.c exit_.c getarg_.c iargc_.c + getenv_.c signal_.c s_stop.c s_paus.c system_.c cabs.c ctype.c +- derf_.c derfc_.c erf_.c erfc_.c sig_die.c uninit.c) ++ derf_.c derfc_.c erf_.c erfc_.c sig_die.c) + set(POW pow_ci.c pow_dd.c pow_di.c pow_hh.c pow_ii.c pow_ri.c pow_zi.c pow_zz.c) + set(CX c_abs.c c_cos.c c_div.c c_exp.c c_log.c c_sin.c c_sqrt.c) + set(DCX z_abs.c z_cos.c z_div.c z_exp.c z_log.c z_sin.c z_sqrt.c) diff --git a/buildroot/package/clapack/0007-off64-t.patch b/buildroot/package/clapack/0007-off64-t.patch new file mode 100644 index 0000000..bf66d3c --- /dev/null +++ b/buildroot/package/clapack/0007-off64-t.patch @@ -0,0 +1,16 @@ +musl only provides off64_t, not __off64_t. +glibc and uclibc have both defined. + +Signed-off-by: Alex Suykov + +--- a/F2CLIBS/libf2c/sysdep1.h ++++ b/F2CLIBS/libf2c/sysdep1.h +@@ -10,7 +10,7 @@ + + #ifdef __linux__ + #define USE_LARGEFILE +-#define OFF_T __off64_t ++#define OFF_T off64_t + #endif + + #ifdef _AIX43 diff --git a/buildroot/package/clapack/Config.in b/buildroot/package/clapack/Config.in new file mode 100644 index 0000000..e5be0b6 --- /dev/null +++ b/buildroot/package/clapack/Config.in @@ -0,0 +1,33 @@ +comment "clapack needs a glibc toolchain" + depends on BR2_powerpc + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_CLAPACK + bool "cblas/clapack" + depends on !(BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) + # _fpu_control is used on PowerPC, but not available with + # uClibc or musl + depends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC + # disable clapack on blackfin, it triggers "undefined symbol" failure + # because of the "_" symbol prefix: + # http://autobuild.buildroot.net/results/a28df0ba10803e6e54c2f8160bbd8190cba4d690/ + depends on !BR2_bfin + # assembler: Error: value out of range + depends on !BR2_m68k_cf + help + BLAS and LAPACK C implementation (f2c'ed version of). + + http://www.netlib.org/clapack/ + +config BR2_PACKAGE_CLAPACK_ARITH_H + string "Custom BLAS arith.h" + depends on BR2_PACKAGE_CLAPACK + help + To optimize BLAS library for the hardware, an 'arith.h' header + should be provided. + + If empty, the library will not be optimized by the compiler. + + In any case an 'arithchk' program is built + (but not installed), to be run on the target to generate this + arith.h header. diff --git a/buildroot/package/clapack/clapack.hash b/buildroot/package/clapack/clapack.hash new file mode 100644 index 0000000..ad586fa --- /dev/null +++ b/buildroot/package/clapack/clapack.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 0b3f782bc24845d85f36bafbff0f2f1384dc72df730fda4e7924ec1a70baca5a clapack-3.2.1-CMAKE.tgz +# License files, locally calculated +sha256 23014869214a231525b38c39fdb5f82364fa24154ac80fdcab2a79671460fd09 COPYING +sha256 44561c447e91203ddc747beeca5cc2794d95ee982c17c578670e4f0408bc3904 F2CLIBS/libf2c/Notice diff --git a/buildroot/package/clapack/clapack.mk b/buildroot/package/clapack/clapack.mk new file mode 100644 index 0000000..9a083f3 --- /dev/null +++ b/buildroot/package/clapack/clapack.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# clapack +# +################################################################################ + +CLAPACK_VERSION = 3.2.1 +CLAPACK_SOURCE = clapack-$(CLAPACK_VERSION)-CMAKE.tgz +# This package provides 3 libraries: +# - libf2c.a (not installed) +# - libblas (statically linked with libf2c.a) +# - liblapack (statically linked with libf2c.a) +CLAPACK_LICENSE = HPND (libf2c), BSD-3-Clause (libblas and liblapack) +CLAPACK_LICENSE_FILES = F2CLIBS/libf2c/Notice COPYING +CLAPACK_SITE = http://www.netlib.org/clapack +CLAPACK_INSTALL_STAGING = YES + +ifneq ($(BR2_PACKAGE_CLAPACK_ARITH_H),) +CLAPACK_CONF_OPTS += -DARITH_H=$(BR2_PACKAGE_CLAPACK_ARITH_H) +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/classpath/Config.in b/buildroot/package/classpath/Config.in new file mode 100644 index 0000000..0385ccd --- /dev/null +++ b/buildroot/package/classpath/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb || BR2_i386 || BR2_m68k \ + || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el \ + || BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le \ + || BR2_sparc || BR2_sparc64 || BR2_sh || BR2_x86_64 + +config BR2_PACKAGE_CLASSPATH + bool "classpath" + depends on BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS + select BR2_NEEDS_HOST_JAR + select BR2_NEEDS_HOST_JAVAC + help + GNU Classpath, Essential Libraries for Java, is a GNU + project to create free core class libraries for use with + virtual machines and compilers for the java programming + language. + + http://classpath.org diff --git a/buildroot/package/classpath/classpath.hash b/buildroot/package/classpath/classpath.hash new file mode 100644 index 0000000..d1c5b5c --- /dev/null +++ b/buildroot/package/classpath/classpath.hash @@ -0,0 +1,2 @@ +# From https://www.gnu.org/software/classpath/announce/20120307.html +sha256 f929297f8ae9b613a1a167e231566861893260651d913ad9b6c11933895fecc8 classpath-0.99.tar.gz diff --git a/buildroot/package/classpath/classpath.mk b/buildroot/package/classpath/classpath.mk new file mode 100644 index 0000000..6bba694 --- /dev/null +++ b/buildroot/package/classpath/classpath.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# classpath +# +################################################################################ + +CLASSPATH_VERSION = 0.99 +CLASSPATH_SITE = $(BR2_GNU_MIRROR)/classpath +CLASSPATH_CONF_OPTS = \ + --disable-examples \ + --disable-rpath \ + --disable-Werror \ + --disable-gconf-peer \ + --disable-gjdoc \ + --enable-tools + +# classpath assumes qt runs on top of X11, but we +# don't support qt4 on X11 +CLASSPATH_CONF_OPTS += --disable-qt-peer +CLASSPATH_DEPENDENCIES = host-pkgconf +CLASSPATH_LICENSE = GPL-2.0+ with exception +CLASSPATH_LICENSE_FILES = COPYING + +# Needs ALSA pcm and sequencer (midi) support +# pcm is always on for alsa-lib +ifeq ($(BR2_PACKAGE_ALSA_LIB_SEQ),y) +CLASSPATH_CONF_OPTS += --enable-alsa +CLASSPATH_DEPENDENCIES += alsa-lib +else +CLASSPATH_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_GMP),y) +CLASSPATH_CONF_OPTS += --enable-gmp --with-gmp="$(STAGING_DIR)/usr" +CLASSPATH_DEPENDENCIES += gmp +else +CLASSPATH_CONF_OPTS += --disable-gmp +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2)$(BR2_PACKAGE_XORG7),yy) +CLASSPATH_CONF_OPTS += --enable-gtk-peer +CLASSPATH_DEPENDENCIES += libgtk2 + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE),y) +CLASSPATH_CONF_OPTS += --enable-gstreamer-peer +CLASSPATH_DEPENDENCIES += gst-plugins-base +else +CLASSPATH_CONF_OPTS += --disable-gstreamer-peer +endif + +else +CLASSPATH_CONF_OPTS += --disable-gtk-peer --disable-gstreamer-peer +endif + +ifeq ($(BR2_PACKAGE_LIBXML2)$(BR2_PACKAGE_LIBXSLT)$(BR2_TOOLCHAIN_HAS_THREADS),yyy) +CLASSPATH_CONF_OPTS += --enable-xmlj +CLASSPATH_DEPENDENCIES += libxml2 libxslt +else +CLASSPATH_CONF_OPTS += --disable-xmlj +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/cloop/0001-cflags.patch b/buildroot/package/cloop/0001-cflags.patch new file mode 100644 index 0000000..c421dd7 --- /dev/null +++ b/buildroot/package/cloop/0001-cflags.patch @@ -0,0 +1,30 @@ +Take into account the CFLAGS/LDFLAGS passed in the environment. + +Signed-off-by: Thomas Petazzoni + +Index: host-cloop-2.634-1/Makefile +=================================================================== +--- host-cloop-2.634-1.orig/Makefile 2010-12-16 09:17:52.826555645 +0100 ++++ host-cloop-2.634-1/Makefile 2010-12-16 09:18:57.208713338 +0100 +@@ -15,7 +15,7 @@ + endif + + ifdef APPSONLY +-CFLAGS:=-Wall -Wstrict-prototypes -Wno-trigraphs -O2 -s -I. -fno-strict-aliasing -fno-common -fomit-frame-pointer ++CLOOP_CFLAGS:=-Wall -Wstrict-prototypes -Wno-trigraphs -O2 -s -I. -fno-strict-aliasing -fno-common -fomit-frame-pointer + endif + + KERNOBJ:=compressed_loop.o +@@ -53,10 +53,10 @@ + ( cd advancecomp-1.15 ; ./configure && $(MAKE) advfs ) + + extract_compressed_fs: extract_compressed_fs.c +- $(CC) -Wall -O2 -s -o $@ $< -lz ++ $(CC) $(CFLAGS) $(CLOOP_CFLAGS) $(LDFLAGS) -Wall -O2 -s -o $@ $< -lz + + cloop_suspend: cloop_suspend.o +- $(CC) -o $@ $< ++ $(CC) $(CFLAGS) $(CLOOP_CFLAGS) $(LDFLAGS) -o $@ $< + + clean: + rm -rf create_compressed_fs extract_compressed_fs zoom *.o *.ko Module.symvers .cloop* .compressed_loop.* .tmp* diff --git a/buildroot/package/cloop/cloop.hash b/buildroot/package/cloop/cloop.hash new file mode 100644 index 0000000..9acbceb --- /dev/null +++ b/buildroot/package/cloop/cloop.hash @@ -0,0 +1,2 @@ +# From http://debian-knoppix.alioth.debian.org/packages/sources/cloop/cloop_2.634-1.dsc +sha256 d6d03e2368e19f9c6c3a313e9c34cf0620d129ce26132a8805580d953769dbbd cloop_2.634-1.tar.gz diff --git a/buildroot/package/cloop/cloop.mk b/buildroot/package/cloop/cloop.mk new file mode 100644 index 0000000..ad50d0a --- /dev/null +++ b/buildroot/package/cloop/cloop.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# cloop +# +################################################################################ + +CLOOP_VERSION = 2.634-1 +CLOOP_SOURCE = cloop_$(CLOOP_VERSION).tar.gz +CLOOP_SITE = http://debian-knoppix.alioth.debian.org/packages/sources/cloop +CLOOP_LICENSE = GPL-2.0 (module), GPL-2.0+ (advancecomp) +CLOOP_LICENSE_FILES = README advancecomp-1.15/COPYING + +HOST_CLOOP_DEPENDENCIES = host-zlib + +define HOST_CLOOP_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE1) -C $(@D) APPSONLY=yes +endef + +define HOST_CLOOP_INSTALL_CMDS + $(INSTALL) -m 0755 -d $(HOST_DIR)/bin + $(INSTALL) -m 755 $(@D)/create_compressed_fs $(HOST_DIR)/bin + $(INSTALL) -m 755 $(@D)/extract_compressed_fs $(HOST_DIR)/bin +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/clp/Config.in b/buildroot/package/clp/Config.in new file mode 100644 index 0000000..c7a64b8 --- /dev/null +++ b/buildroot/package/clp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_CLP + bool "clp" + depends on BR2_PACKAGE_HOST_PKGCONF + select BR2_PACKAGE_COINUTILS + select BR2_PACKAGE_OPENBLAS + select BR2_PACKAGE_LAPACK + select BR2_PACKAGE_GLPK + select BR2_PACKAGE_BZIP2 + + help + Clp (Coin-or linear programming) is an open-source linear programming solver. + + https://github.com/coin-or/Clp diff --git a/buildroot/package/clp/clp.mk b/buildroot/package/clp/clp.mk new file mode 100644 index 0000000..2955bb2 --- /dev/null +++ b/buildroot/package/clp/clp.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# clp +# +################################################################################ + +CLP_VERSION = 1.17.3 +CLP_SOURCE = $(CLP_VERSION).tar.gz +CLP_SITE = https://github.com/coin-or/Clp/archive/releases +CLP_DEPENDENCIES = coinutils host-pkgconf openblas lapack glpk +CLP_INSTALL_STAGING = YES +CLP_LICENSE = Eclipse Public License - v 1.0 +CLP_LICENSE_FILES = LICENSE +CLP_CONF_OPTS = --with-blas=openblas --with-blas-lib=-lopenblas + +$(eval $(autotools-package)) diff --git a/buildroot/package/cmake/0001-rename_cmake_rootfile.patch b/buildroot/package/cmake/0001-rename_cmake_rootfile.patch new file mode 100644 index 0000000..8c168c1 --- /dev/null +++ b/buildroot/package/cmake/0001-rename_cmake_rootfile.patch @@ -0,0 +1,29 @@ +ctest fails on the target, because it cannot find CMake.cmake inside +CMAKE_DATA_DIR (typically set to "/usr/share/cmake-3.0"): all *.cmake +files are removed at build time via the target-finalize rule. + +This buildroot-specific patch makes sure ctest looks also for +"Modules/CMake.cmake.ctest" before complaining + +[Vincent: tweak patch for 3.6.3] + +Signed-off-by: Davide Viti +Signed-off-by: Vicente Olivert Riera + +diff -rup a/Source/cmake.cxx b/Source/cmake.cxx +--- a/Source/cmake.cxx 2016-07-07 15:47:27.000000000 +0100 ++++ b/Source/cmake.cxx 2016-07-14 10:14:59.914265515 +0100 +@@ -771,7 +771,12 @@ int cmake::AddCMakePaths() + "Path to cpack program executable.", cmState::INTERNAL); + #endif + if (!cmSystemTools::FileExists( +- (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake").c_str())) { ++ (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake").c_str()) && ++ !cmSystemTools::FileExists( ++ (cmSystemTools::GetCMakeRoot()+"/Modules/CMake.cmake.ctest").c_str() ++ ) ++ ) ++ { + // couldn't find modules + cmSystemTools::Error( + "Could not find CMAKE_ROOT !!!\n" diff --git a/buildroot/package/cmake/Config.in b/buildroot/package/cmake/Config.in new file mode 100644 index 0000000..e7bd14e --- /dev/null +++ b/buildroot/package/cmake/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_CMAKE_ARCH_SUPPORTS + bool + default y + depends on BR2_arm || BR2_armeb || BR2_aarch64 || \ + BR2_m68k || BR2_mips || BR2_mips64 || \ + BR2_mipsel || BR2_mips64el || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \ + BR2_i386 || BR2_x86_64 || BR2_xtensa + +config BR2_PACKAGE_CMAKE + bool + +config BR2_PACKAGE_CMAKE_CTEST + bool "ctest" + depends on BR2_PACKAGE_CMAKE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # from jsoncpp + depends on BR2_USE_WCHAR # libarchive + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on BR2_USE_MMU # libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + select BR2_PACKAGE_CMAKE + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBARCHIVE + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_XZ + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_RHASH + help + CTest is a testing tool distributed as a part of CMake. It + can be used to automate updating (using CVS for example), + configuring, building, testing, performing memory checking, + performing coverage, and submitting results to a CDash or + Dart dashboard system. + + http://www.cmake.org/ + +comment "ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.7, NPTL" + depends on BR2_PACKAGE_CMAKE_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/cmake/Config.in.host b/buildroot/package/cmake/Config.in.host new file mode 100644 index 0000000..b2e210e --- /dev/null +++ b/buildroot/package/cmake/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_CMAKE + bool "host cmake" + help + CMake is an open-source, cross-platform family of tools + designed to build, test and package software. CMake is used + to control the software compilation process using simple + platform and compiler independent configuration files, and + generate native makefiles and workspaces that can be used in + the compiler environment of your choice. + + http://www.cmake.org/ diff --git a/buildroot/package/cmake/cmake.hash b/buildroot/package/cmake/cmake.hash new file mode 100644 index 0000000..f138ac7 --- /dev/null +++ b/buildroot/package/cmake/cmake.hash @@ -0,0 +1,2 @@ +# From http://www.cmake.org/files/v3.8/cmake-3.8.2-SHA-256.txt +sha256 da3072794eb4c09f2d782fcee043847b99bb4cf8d4573978d9b2024214d6e92d cmake-3.8.2.tar.gz diff --git a/buildroot/package/cmake/cmake.mk b/buildroot/package/cmake/cmake.mk new file mode 100644 index 0000000..a00691a --- /dev/null +++ b/buildroot/package/cmake/cmake.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# cmake +# +################################################################################ + +CMAKE_VERSION_MAJOR = 3.8 +CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).2 +CMAKE_SITE = https://cmake.org/files/v$(CMAKE_VERSION_MAJOR) +CMAKE_LICENSE = BSD-3-Clause +CMAKE_LICENSE_FILES = Copyright.txt + +# CMake is a particular package: +# * CMake can be built using the generic infrastructure or the cmake one. +# Since Buildroot has no requirement regarding the host system cmake +# program presence, it uses the generic infrastructure to build the +# host-cmake package, then the (target-)cmake package can be built +# using the cmake infrastructure; +# * CMake bundles its dependencies within its sources. This is the +# reason why the host-cmake package has no dependencies:, whereas +# the (target-)cmake package has a lot of dependencies, using only +# the system-wide libraries instead of rebuilding and statically +# linking with the ones bundled into the CMake sources. + +CMAKE_DEPENDENCIES = zlib jsoncpp libcurl libarchive expat bzip2 xz libuv rhash + +CMAKE_CONF_OPTS = \ + -DKWSYS_LFS_WORKS=TRUE \ + -DKWSYS_CHAR_IS_SIGNED=TRUE \ + -DCMAKE_USE_SYSTEM_LIBRARIES=1 \ + -DCTEST_USE_XMLRPC=OFF \ + -DBUILD_CursesDialog=OFF + +# Get rid of -I* options from $(HOST_CPPFLAGS) to prevent that a +# header available in $(HOST_DIR)/include is used instead of a +# CMake internal header, e.g. lzma* headers of the xz package +HOST_CMAKE_CFLAGS = $(shell echo $(HOST_CFLAGS) | sed -r "s%$(HOST_CPPFLAGS)%%") +HOST_CMAKE_CXXFLAGS = $(shell echo $(HOST_CXXFLAGS) | sed -r "s%$(HOST_CPPFLAGS)%%") + +define HOST_CMAKE_CONFIGURE_CMDS + (cd $(@D); \ + $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CMAKE_CFLAGS)" \ + ./bootstrap --prefix=$(HOST_DIR) \ + --parallel=$(PARALLEL_JOBS) -- \ + -DCMAKE_C_FLAGS="$(HOST_CMAKE_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$(HOST_CMAKE_CXXFLAGS)" \ + -DCMAKE_EXE_LINKER_FLAGS="$(HOST_LDFLAGS)" \ + -DCMAKE_USE_OPENSSL:BOOL=OFF \ + -DBUILD_CursesDialog=OFF \ + ) +endef + +define HOST_CMAKE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_CMAKE_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install/fast +endef + +define CMAKE_REMOVE_EXTRA_DATA + rm $(TARGET_DIR)/usr/bin/{cmake,cpack} + rm -fr $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/{completions,editors} + rm -fr $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/{Help,include} +endef + +define CMAKE_INSTALL_CTEST_CFG_FILE + $(INSTALL) -m 0644 -D $(@D)/Modules/CMake.cmake \ + $(TARGET_DIR)/usr/share/cmake-$(CMAKE_VERSION_MAJOR)/Modules/CMake.cmake.ctest +endef + +CMAKE_POST_INSTALL_TARGET_HOOKS += CMAKE_REMOVE_EXTRA_DATA +CMAKE_POST_INSTALL_TARGET_HOOKS += CMAKE_INSTALL_CTEST_CFG_FILE + +define CMAKE_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(HOST_MAKE_ENV) DESTDIR=$(TARGET_DIR) \ + cmake -P cmake_install.cmake \ + ) +endef + +$(eval $(cmake-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/coinutils/Config.in b/buildroot/package/coinutils/Config.in new file mode 100644 index 0000000..3fb4f28 --- /dev/null +++ b/buildroot/package/coinutils/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_COINUTILS + bool "CoinUtils" + help + CoinUtils (Coin-OR Utilities) is an open-source collection of classes and functions that are generally useful to more than one COIN-OR project. + + https://github.com/coin-or/CoinUtils diff --git a/buildroot/package/coinutils/coinutils.mk b/buildroot/package/coinutils/coinutils.mk new file mode 100644 index 0000000..6672c95 --- /dev/null +++ b/buildroot/package/coinutils/coinutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# coinutils +# +################################################################################ + +COINUTILS_VERSION = 2.11.2 +COINUTILS_SOURCE = $(COINUTILS_VERSION).tar.gz +COINUTILS_SITE = https://github.com/coin-or/CoinUtils/archive/releases +COINUTILS_LICENSE = Eclipse Public License - v 1.0 +COINUTILS_LICENSE_FILES = LICENSE +COINUTILS_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/collectd/0001-libcollectdclient-increase-error-buffer.patch b/buildroot/package/collectd/0001-libcollectdclient-increase-error-buffer.patch new file mode 100644 index 0000000..247d32b --- /dev/null +++ b/buildroot/package/collectd/0001-libcollectdclient-increase-error-buffer.patch @@ -0,0 +1,87 @@ +From e170f3559fcda6d37a012aba187a96b1f42e8f9d Mon Sep 17 00:00:00 2001 +From: Ruben Kerkhof +Date: Sun, 2 Jul 2017 21:52:14 +0200 +Subject: [PATCH] libcollectdclient: increase error buffer +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf8 +Content-Transfer-Encoding: 8bit + +make[1]: Entering directory '/home/ruben/src/collectd' + CC src/libcollectdclient/libcollectdclient_la-client.lo +src/libcollectdclient/client.c: In function ‘lcc_getval’: +src/libcollectdclient/client.c:621:23: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1010 [-Wformat-truncation=] + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^ ~ +src/libcollectdclient/client.c:94:48: note: in definition of macro ‘LCC_SET_ERRSTR’ + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~ +src/libcollectdclient/client.c:94:5: note: ‘snprintf’ output between 15 and 1038 bytes into a destination of size 1024 + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/libcollectdclient/client.c:621:5: note: in expansion of macro ‘LCC_SET_ERRSTR’ + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^~~~~~~~~~~~~~ +src/libcollectdclient/client.c: In function ‘lcc_putval’: +src/libcollectdclient/client.c:754:23: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1010 [-Wformat-truncation=] + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^ ~ +src/libcollectdclient/client.c:94:48: note: in definition of macro ‘LCC_SET_ERRSTR’ + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~ +src/libcollectdclient/client.c:94:5: note: ‘snprintf’ output between 15 and 1038 bytes into a destination of size 1024 + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/libcollectdclient/client.c:754:5: note: in expansion of macro ‘LCC_SET_ERRSTR’ + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^~~~~~~~~~~~~~ +src/libcollectdclient/client.c: In function ‘lcc_flush’: +src/libcollectdclient/client.c:802:23: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1010 [-Wformat-truncation=] + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^ ~ +src/libcollectdclient/client.c:94:48: note: in definition of macro ‘LCC_SET_ERRSTR’ + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~ +src/libcollectdclient/client.c:94:5: note: ‘snprintf’ output between 15 and 1038 bytes into a destination of size 1024 + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/libcollectdclient/client.c:802:5: note: in expansion of macro ‘LCC_SET_ERRSTR’ + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^~~~~~~~~~~~~~ +src/libcollectdclient/client.c: In function ‘lcc_listval’: +src/libcollectdclient/client.c:834:23: warning: ‘%s’ directive output may be truncated writing up to 1023 bytes into a region of size 1010 [-Wformat-truncation=] + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^ ~ +src/libcollectdclient/client.c:94:48: note: in definition of macro ‘LCC_SET_ERRSTR’ + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~ +src/libcollectdclient/client.c:94:5: note: ‘snprintf’ output between 15 and 1038 bytes into a destination of size 1024 + snprintf((c)->errbuf, sizeof((c)->errbuf), __VA_ARGS__); \ + ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +src/libcollectdclient/client.c:834:5: note: in expansion of macro ‘LCC_SET_ERRSTR’ + LCC_SET_ERRSTR(c, "Server error: %s", res.message); + ^~~~~~~~~~~~~~ + +Fixes #2200 + +[Upstream commit: https://git.octo.it/?p=collectd.git;a=commitdiff;h=e170f3559fcda6d37a012aba187a96b1f42e8f9d] +Signed-off-by: Thomas Petazzoni +--- + src/libcollectdclient/client.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libcollectdclient/client.c b/src/libcollectdclient/client.c +index 51a4ab2..3ae2e71 100644 +--- a/src/libcollectdclient/client.c ++++ b/src/libcollectdclient/client.c +@@ -99,7 +99,7 @@ + */ + struct lcc_connection_s { + FILE *fh; +- char errbuf[1024]; ++ char errbuf[2048]; + }; + + struct lcc_response_s { +-- +1.7.10.4 + diff --git a/buildroot/package/collectd/Config.in b/buildroot/package/collectd/Config.in new file mode 100644 index 0000000..ccd3fbe --- /dev/null +++ b/buildroot/package/collectd/Config.in @@ -0,0 +1,620 @@ +menuconfig BR2_PACKAGE_COLLECTD + bool "collectd" + # Uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + collectd is a daemon which collects system performance + statistics periodically and provides mechanisms to store + the values in a variety of ways, for example in RRD files. + + http://collectd.org/ + +if BR2_PACKAGE_COLLECTD + +menu "match plugins" + +config BR2_PACKAGE_COLLECTD_EMPTY_COUNTER + bool "empty counter" + help + Match counter values which are currently zero. + +config BR2_PACKAGE_COLLECTD_HASHED + bool "hashed" + help + Match values using a hash function of the hostname. + +config BR2_PACKAGE_COLLECTD_REGEX + bool "regex" + help + Match values by their identifier based on regular expressions. + +config BR2_PACKAGE_COLLECTD_TIMEDIFF + bool "timediff" + help + Match values with an invalid timestamp. + +config BR2_PACKAGE_COLLECTD_VALUE + bool "value" + help + Select values by their data sources' values. + +endmenu + +menu "misc plugins" + +config BR2_PACKAGE_COLLECTD_AGGREGATION + bool "aggregation" + help + The Aggregate plugin allows to aggregate multiple values into + a single value using one or several consolidation functions, + e.g. summation and average. + +config BR2_PACKAGE_COLLECTD_LOGFILE + bool "logfile" + default y + help + Writes log messages to a file or STDOUT/STDERR. + +config BR2_PACKAGE_COLLECTD_LOGSTASH + bool "logstash" + select BR2_PACKAGE_YAJL + help + Writes log messages formatted as logstash JSON events. + +config BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL + bool "notify_email" + depends on !BR2_STATIC_LIBS # libesmtp + select BR2_PACKAGE_LIBESMTP + select BR2_PACKAGE_OPENSSL + help + Send an E-mail with the notification message to the + configured recipients. + +comment "notify_email needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_COLLECTD_NOTIFY_NAGIOS + bool "notify_nagios" + help + Sends notifications to Nagios as a passive check result. + +config BR2_PACKAGE_COLLECTD_SYSLOG + bool "syslog" + default y + help + Logs to the standard UNIX logging mechanism. + +config BR2_PACKAGE_COLLECTD_THRESHOLD + bool "threshold" + help + Checks values against configured thresholds and creates + notifications if values are out of bounds. + +endmenu + +menu "read plugins" + +comment "Select at least one for collectd to be useful" + +config BR2_PACKAGE_COLLECTD_APACHE + bool "apache" + select BR2_PACKAGE_LIBCURL + help + Collects Apache's mod_status information. + +config BR2_PACKAGE_COLLECTD_APCUPS + bool "apcups" + help + Collects UPS statistics from apcupsd. + +config BR2_PACKAGE_COLLECTD_BATTERY + bool "battery" + help + Collects the battery's charge, the drawn current and voltage. + +config BR2_PACKAGE_COLLECTD_BIND + bool "bind" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + help + Collects BIND DNS statistics. + +config BR2_PACKAGE_COLLECTD_CEPH + bool "ceph" + select BR2_PACKAGE_YAJL + help + Statistics from the Ceph distributed storage system. + +config BR2_PACKAGE_COLLECTD_CHRONY + bool "chrony" + help + Collects NTP data from the chrony NTP server. + +config BR2_PACKAGE_COLLECTD_CGROUPS + bool "cgroups" + help + Collects CGroups CPU usage accounting. + +config BR2_PACKAGE_COLLECTD_CONNTRACK + bool "conntrack" + help + Collects the number of entries in Linux's connection tracking + table. + +config BR2_PACKAGE_COLLECTD_CONTEXTSWITCH + bool "contextswitch" + help + Collects the number of context switches done by the operating + system. + +config BR2_PACKAGE_COLLECTD_CPU + bool "cpu" + help + Collects the amount of time spent by the CPU in various + states. + +config BR2_PACKAGE_COLLECTD_CPUFREQ + bool "cpufreq" + help + Collects the current CPU's frequency. + +config BR2_PACKAGE_COLLECTD_CPUSLEEP + bool "cpusleep" + help + Measures time spent by CPU in deep sleep mode. + +config BR2_PACKAGE_COLLECTD_CURL + bool "curl" + select BR2_PACKAGE_LIBCURL + help + Uses libcurl to read files and then parses them according + to the configuration. + +config BR2_PACKAGE_COLLECTD_CURL_JSON + bool "curl-json" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_YAJL + help + Queries JSON data using the cURL library and parses it + according to the user's configuration using YAJL. + +config BR2_PACKAGE_COLLECTD_CURL_XML + bool "curl-xml" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + help + Reads files using libcurl and parses it as XML. + +config BR2_PACKAGE_COLLECTD_DF + bool "df" + help + Collects file system usage information. + +config BR2_PACKAGE_COLLECTD_DISK + bool "disk" + help + Collects performance statistics of hard-disks and partitions. + +config BR2_PACKAGE_COLLECTD_DNS + bool "dns" + select BR2_PACKAGE_LIBPCAP + help + Collects statistics of DNS traffic using libpcap. + +config BR2_PACKAGE_COLLECTD_DRBD + bool "drbd" + help + Collect individual drbd resource statistics. + +config BR2_PACKAGE_COLLECTD_ENTROPY + bool "entropy" + help + Collects the available entropy on a system. + +config BR2_PACKAGE_COLLECTD_ETHSTAT + bool "ethstat" + help + Collects network interface card statistics. + +config BR2_PACKAGE_COLLECTD_EXEC + bool "exec" + help + Executes scripts and reads values back that are printed + to STDOUT by that program. + +config BR2_PACKAGE_COLLECTD_FHCOUNT + bool "fhcount" + help + File handles statistics. + +config BR2_PACKAGE_COLLECTD_FILECOUNT + bool "filecount" + help + Counts the number of files in a directory and all its + subdirectories. + +config BR2_PACKAGE_COLLECTD_FSCACHE + bool "fscache" + help + Collects information about the file-system based caching + infrastructure for network file-systems and other slow media. + +config BR2_PACKAGE_COLLECTD_GPS + bool "gps" + select BR2_PACKAGE_GPSD + help + Reports the number of sattelites seen by and precision + of a GPS receiver. + +config BR2_PACKAGE_COLLECTD_HUGEPAGES + bool "hugepages" + help + Reports the number of used and free hugepages on Linux. + +config BR2_PACKAGE_COLLECTD_INTERFACE + bool "interface" + help + Collects information about the traffic of network interfaces. + +config BR2_PACKAGE_COLLECTD_IPC + bool "ipc" + help + IPC counters: semaphores used, number of allocated segments + in shared memory and more. + +config BR2_PACKAGE_COLLECTD_IPTABLES + bool "iptables" + select BR2_PACKAGE_IPTABLES + help + Gather statistics from iptables packet filter. + +config BR2_PACKAGE_COLLECTD_IPVS + bool "ipvs" + help + Extracts statistics from IP Virtual Server (IPVS), the + transport-layer load-balancer of the LVS project. + It stores traffic and connections history for each of the + Real Servers (RS) behind a local Virtual Server (VS). + Collectd must be run on Directors (in LVS jargon). + +config BR2_PACKAGE_COLLECTD_IRQ + bool "irq" + help + Collects the number of interrupts. + +config BR2_PACKAGE_COLLECTD_LOAD + bool "load" + help + Collects the system load. + +config BR2_PACKAGE_COLLECTD_MD + bool "md" + help + Collects software-RAID device information. + +config BR2_PACKAGE_COLLECTD_MEMCACHEC + bool "memcachec" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBMEMCACHED + help + Query and parse data from a memcache daemon. + +comment "memcachec needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_COLLECTD_MEMCACHED + bool "memcached" + help + Collects statistics from a memcached daemon. + +config BR2_PACKAGE_COLLECTD_MEMORY + bool "memory" + help + Collects physical memory utilization. + +config BR2_PACKAGE_COLLECTD_MODBUS + bool "modbus" + select BR2_PACKAGE_LIBMODBUS + help + Reads register values from a modbus "slave" via Modbus/TCP. + +config BR2_PACKAGE_COLLECTD_MYSQL + bool "mysql" + depends on BR2_INSTALL_LIBSTDCPP # mysql + depends on BR2_USE_MMU # mysql + depends on BR2_TOOLCHAIN_HAS_THREADS # mysql + select BR2_PACKAGE_MYSQL + help + Connects to a MySQL database and issues a "show status" + command. + +config BR2_PACKAGE_COLLECTD_NETLINK + bool "netlink" + select BR2_PACKAGE_LIBMNL + help + Get statistics for interfaces, qdiscs, classes, and filters. + +config BR2_PACKAGE_COLLECTD_NFS + bool "nfs" + help + Collects information about the usage of the Network File + System. + +config BR2_PACKAGE_COLLECTD_NGINX + bool "nginx" + select BR2_PACKAGE_LIBCURL + help + Collects the number of requests handled by the nginx daemon + since startup and the number of current connections by state. + +config BR2_PACKAGE_COLLECTD_NTPD + bool "ntpd" + help + Queries an NTP server and extracts parameters. + +config BR2_PACKAGE_COLLECTD_OLSRD + bool "olsrd" + help + Reads information about meshed networks from olsrd. + +config BR2_PACKAGE_COLLECTD_OPENLDAP + bool "openldap" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_OPENLDAP + help + Read monitoring information from OpenLDAP's cn=Monitor + subtree. + +comment "openldap support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_COLLECTD_OPENVPN + bool "openvpn" + help + Reads the status file of OpenVPN to collect statistics. + +config BR2_PACKAGE_COLLECTD_PING + bool "ping" + select BR2_PACKAGE_LIBOPING + help + Mesures network latency using ICMP "echo requests". + +config BR2_PACKAGE_COLLECTD_POSTGRESQL + bool "postgresql" + select BR2_PACKAGE_POSTGRESQL + help + Connects to and executes SQL statements on a PostgreSQL + database. It then reads back the results and, depending on the + configuration, the returned values are then converted into + collectd “value lists”. + +config BR2_PACKAGE_COLLECTD_PROCESSES + bool "processes" + help + Collects the number of processes gruped by state. + +config BR2_PACKAGE_COLLECTD_PROTOCOLS + bool "protocols" + help + Collects information about the network protocols. + +config BR2_PACKAGE_COLLECTD_SENSORS + bool "sensors" + select BR2_PACKAGE_LM_SENSORS + help + Collects data from lm-sensors. + +config BR2_PACKAGE_COLLECTD_SERIAL + bool "serial" + help + Collects the traffic on serial interfaces. + +config BR2_PACKAGE_COLLECTD_SMART + bool "SMART" + depends on BR2_PACKAGE_HAS_UDEV # libatasmart + select BR2_PACKAGE_LIBATASMART + help + Collect SMART statistics, notably load cycle count, + temperature and bad sectors. + +comment "SMART requires udev to be enabled" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_COLLECTD_STATSD + bool "StatsD" + help + StatsD network protocol to allow clients to report "events". + +config BR2_PACKAGE_COLLECTD_SNMP + bool "snmp" + select BR2_PACKAGE_NETSNMP + help + Reads values from SNMP devices. + +config BR2_PACKAGE_COLLECTD_SWAP + bool "swap" + help + Collects the amount of memory currently written to disk. + +config BR2_PACKAGE_COLLECTD_TABLE + bool "table" + help + Parses table-like structured plain-text files. + +config BR2_PACKAGE_COLLECTD_TAIL + bool "tail" + help + Tails log files and each line is given to one or more matches + which test if the line is relevant for any statistics. + +config BR2_PACKAGE_COLLECTD_TAIL_CSV + bool "tail csv" + help + Follows (tails) files in CSV format, parses each line and + submits extracted values. + +config BR2_PACKAGE_COLLECTD_TCPCONNS + bool "tcpconns" + help + Counts the number of TCP connections to/from a specified port. + +config BR2_PACKAGE_COLLECTD_THERMAL + bool "thermal" + help + Reads ACPI thermal zone information. + +config BR2_PACKAGE_COLLECTD_UPTIME + bool "uptime" + help + Keeps track of the system uptime. + +config BR2_PACKAGE_COLLECTD_USERS + bool "users" + help + Counts the number of users currently logged in. + +config BR2_PACKAGE_COLLECTD_VMEM + bool "vmem" + help + Collects information about the virtual memory subsystem. + +config BR2_PACKAGE_COLLECTD_WIRELESS + bool "wireless" + help + Collects signal quality, power and noise ratio for WLAN cards. + +config BR2_PACKAGE_COLLECTD_ZOOKEEPER + bool "zookeeper" + help + Read data from Zookeeper's MNTR command. + +endmenu + +menu "target plugins" + +config BR2_PACKAGE_COLLECTD_NOTIFICATION + bool "notification" + help + Create and dispatch a notification. + +config BR2_PACKAGE_COLLECTD_REPLACE + bool "replace" + help + Replace parts of an identifier using regular expressions. + +config BR2_PACKAGE_COLLECTD_SCALE + bool "scale" + help + Scale (multiply) values by an arbitrary number. + +config BR2_PACKAGE_COLLECTD_SET + bool "set" + help + Set (overwrite) entire parts of an identifier. + +endmenu + +menu "write plugins" + +comment "Select at least one for collectd to be useful" + +config BR2_PACKAGE_COLLECTD_CSV + bool "csv" + help + Writes values to a plain-text file in Comma Separated Values + format. + +config BR2_PACKAGE_COLLECTD_GRAPHITE + bool "graphite" + help + Writes data collected to Carbon (Graphite's) storage API. + http://graphite.wikidot.com/start + +config BR2_PACKAGE_COLLECTD_MQTT + bool "mqtt" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # mosquitto + select BR2_PACKAGE_MOSQUITTO + help + Sends metrics to and/or receives metrics from an MQTT broker. + +config BR2_PACKAGE_COLLECTD_NETWORK + bool "network" + help + Send/receive values from other instances of collectd. + +config BR2_PACKAGE_COLLECTD_RRDTOOL + bool "rrdtool" + depends on BR2_USE_WCHAR # rrdtool + select BR2_PACKAGE_RRDTOOL + help + Writes values to RRD-files. + +comment "rrdtool support needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_COLLECTD_RIEMANN + bool "riemann" + # riemann-c-client -> protobuf-c + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_HOST_GCC_AT_LEAST_4_5 + select BR2_PACKAGE_RIEMANN_C_CLIENT + select BR2_PACKAGE_LIBTOOL + help + Sends data to Riemann, a stream processing and monitoring + system. + +config BR2_PACKAGE_COLLECTD_UNIXSOCK + bool "unixsock" + help + Opens a UNIX domain socket and accepts connections. + One can send commands to the daemon and receive information. + +config BR2_PACKAGE_COLLECTD_WRITEHTTP + bool "write_http" + select BR2_PACKAGE_LIBCURL + help + Sends values collected to a web-server using HTTP POST and + PUTVAL. + +config BR2_PACKAGE_COLLECTD_WRITELOG + bool "write_log" + help + Writes data to the log. + +config BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS + bool "write_prometheus" + depends on BR2_INSTALL_LIBSTDCPP # protobuf-c + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" # protobuf-c + depends on BR2_HOST_GCC_AT_LEAST_4_5 # protobuf-c + select BR2_PACKAGE_LIBMICROHTTPD + select BR2_PACKAGE_PROTOBUF_C + help + Publishes values using an embedded HTTP server, in a format + compatible with Prometheus' collectd_exporter. + +comment "write_prometheus needs a toolchain w/ C++, host gcc >= 4.5" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_4_5 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + +config BR2_PACKAGE_COLLECTD_WRITESENSU + bool "write_sensu" + help + Sends data to Sensu, a stream processing and monitoring + system, via the Sensu client local TCP socket. + +config BR2_PACKAGE_COLLECTD_WRITETSDB + bool "write_tsdb" + help + Sends data OpenTSDB, a scalable no master, no shared state + time series database. + +endmenu + +endif + +comment "collectd needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/buildroot/package/collectd/collectd.hash b/buildroot/package/collectd/collectd.hash new file mode 100644 index 0000000..cf7e0b8 --- /dev/null +++ b/buildroot/package/collectd/collectd.hash @@ -0,0 +1,6 @@ +# From https://collectd.org/files/SHA256SUM +sha256 7edd3643c0842215553b2421d5456f4e9a8a58b07e216b40a7e8e91026d8e501 collectd-5.7.1.tar.bz2 + +# Hash for license files +sha256 ed0409b2b1c30566dab5fcdaf46ee70e140c99788e22f0267645a9357b476ae4 COPYING +sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa libltdl/COPYING.LIB diff --git a/buildroot/package/collectd/collectd.mk b/buildroot/package/collectd/collectd.mk new file mode 100644 index 0000000..ef45f34 --- /dev/null +++ b/buildroot/package/collectd/collectd.mk @@ -0,0 +1,219 @@ +################################################################################ +# +# collectd +# +################################################################################ + +COLLECTD_VERSION = 5.7.1 +COLLECTD_SITE = http://collectd.org/files +COLLECTD_SOURCE = collectd-$(COLLECTD_VERSION).tar.bz2 +COLLECTD_CONF_ENV = ac_cv_lib_yajl_yajl_alloc=yes +COLLECTD_INSTALL_STAGING = YES +COLLECTD_LICENSE = MIT (daemon, plugins), GPL-2.0 (plugins), LGPL-2.1 (plugins) +COLLECTD_LICENSE_FILES = COPYING libltdl/COPYING.LIB + +# These require unmet dependencies, are fringe, pointless or deprecated +COLLECTD_PLUGINS_DISABLE = \ + amqp apple_sensors aquaero ascent barometer dbi dpdkstat email \ + gmond grpc hddtemp intel_rdt ipmi java libvirt lpar lvm \ + madwifi mbmon mic multimeter netapp notify_desktop numa \ + nut onewire oracle perl pf pinba powerdns python redis routeros \ + rrdcached sigrok tape target_v5upgrade teamspeak2 ted \ + tokyotyrant turbostat uuid varnish virt vserver write_kafka \ + write_mongodb write_redis xencpu xmms zfs_arc zone + +COLLECTD_CONF_ENV += LIBS="-lm" + +# +# NOTE: There's also a third availible setting "intswap", which might +# be needed on some old ARM hardware (see [2]), but is not being +# accounted for as per discussion [1] +# +# [1] http://lists.busybox.net/pipermail/buildroot/2017-November/206100.html +# [2] http://lists.busybox.net/pipermail/buildroot/2017-November/206251.html +# +ifeq ($(BR2_ENDIAN),"BIG") +COLLECTD_FP_LAYOUT=endianflip +else +COLLECTD_FP_LAYOUT=nothing +endif + +COLLECTD_CONF_OPTS += \ + --with-nan-emulation \ + --with-fp-layout=$(COLLECTD_FP_LAYOUT) \ + --with-perl-bindings=no \ + $(foreach p, $(COLLECTD_PLUGINS_DISABLE), --disable-$(p)) \ + $(if $(BR2_PACKAGE_COLLECTD_AGGREGATION),--enable-aggregation,--disable-aggregation) \ + $(if $(BR2_PACKAGE_COLLECTD_APACHE),--enable-apache,--disable-apache) \ + $(if $(BR2_PACKAGE_COLLECTD_APCUPS),--enable-apcups,--disable-apcups) \ + $(if $(BR2_PACKAGE_COLLECTD_BATTERY),--enable-battery,--disable-battery) \ + $(if $(BR2_PACKAGE_COLLECTD_BIND),--enable-bind,--disable-bind) \ + $(if $(BR2_PACKAGE_COLLECTD_CEPH),--enable-ceph,--disable-ceph) \ + $(if $(BR2_PACKAGE_COLLECTD_CHRONY),--enable-chrony,--disable-chrony) \ + $(if $(BR2_PACKAGE_COLLECTD_CGROUPS),--enable-cgroups,--disable-cgroups) \ + $(if $(BR2_PACKAGE_COLLECTD_CONNTRACK),--enable-conntrack,--disable-conntrack) \ + $(if $(BR2_PACKAGE_COLLECTD_CONTEXTSWITCH),--enable-contextswitch,--disable-contextswitch) \ + $(if $(BR2_PACKAGE_COLLECTD_CPU),--enable-cpu,--disable-cpu) \ + $(if $(BR2_PACKAGE_COLLECTD_CPUFREQ),--enable-cpufreq,--disable-cpufreq) \ + $(if $(BR2_PACKAGE_COLLECTD_CPUSLEEP),--enable-cpusleep,--disable-cpusleep) \ + $(if $(BR2_PACKAGE_COLLECTD_CSV),--enable-csv,--disable-csv) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL),--enable-curl,--disable-curl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_JSON),--enable-curl_json,--disable-curl_json) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_XML),--enable-curl_xml,--disable-curl_xml) \ + $(if $(BR2_PACKAGE_COLLECTD_DF),--enable-df,--disable-df) \ + $(if $(BR2_PACKAGE_COLLECTD_DISK),--enable-disk,--disable-disk) \ + $(if $(BR2_PACKAGE_COLLECTD_DNS),--enable-dns,--disable-dns) \ + $(if $(BR2_PACKAGE_COLLECTD_DRBD),--enable-drbd,--disable-drbd) \ + $(if $(BR2_PACKAGE_COLLECTD_EMPTY_COUNTER),--enable-match_empty_counter,--disable-match_empty_counter) \ + $(if $(BR2_PACKAGE_COLLECTD_ENTROPY),--enable-entropy,--disable-entropy) \ + $(if $(BR2_PACKAGE_COLLECTD_ETHSTAT),--enable-ethstat,--disable-ethstat) \ + $(if $(BR2_PACKAGE_COLLECTD_EXEC),--enable-exec,--disable-exec) \ + $(if $(BR2_PACKAGE_COLLECTD_FHCOUNT),--enable-fhcount,--disable-fhcount) \ + $(if $(BR2_PACKAGE_COLLECTD_FILECOUNT),--enable-filecount,--disable-filecount) \ + $(if $(BR2_PACKAGE_COLLECTD_FSCACHE),--enable-fscache,--disable-fscache) \ + $(if $(BR2_PACKAGE_COLLECTD_GPS),--enable-gps,--disable-gps) \ + $(if $(BR2_PACKAGE_COLLECTD_GRAPHITE),--enable-write_graphite,--disable-write_graphite) \ + $(if $(BR2_PACKAGE_COLLECTD_HASHED),--enable-match_hashed,--disable-match_hashed) \ + $(if $(BR2_PACKAGE_COLLECTD_HUGEPAGES),--enable-hugepages,--disable-hugepages) \ + $(if $(BR2_PACKAGE_COLLECTD_INTERFACE),--enable-interface,--disable-interface) \ + $(if $(BR2_PACKAGE_COLLECTD_IPC),--enable-ipc,--disable-ipc) \ + $(if $(BR2_PACKAGE_COLLECTD_IPTABLES),--enable-iptables,--disable-iptables) \ + $(if $(BR2_PACKAGE_COLLECTD_IPVS),--enable-ipvs,--disable-ipvs) \ + $(if $(BR2_PACKAGE_COLLECTD_IRQ),--enable-irq,--disable-irq) \ + $(if $(BR2_PACKAGE_COLLECTD_LOAD),--enable-load,--disable-load) \ + $(if $(BR2_PACKAGE_COLLECTD_LOGFILE),--enable-logfile,--disable-logfile) \ + $(if $(BR2_PACKAGE_COLLECTD_LOGSTASH),--enable-log_logstash,--disable-log_logstash) \ + $(if $(BR2_PACKAGE_COLLECTD_MD),--enable-md,--disable-md) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMCACHEC),--enable-memcachec,--disable-memcachec) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMCACHED),--enable-memcached,--disable-memcached) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMORY),--enable-memory,--disable-memory) \ + $(if $(BR2_PACKAGE_COLLECTD_MODBUS),--enable-modbus,--disable-modbus) \ + $(if $(BR2_PACKAGE_COLLECTD_MQTT),--enable-mqtt,--disable-mqtt) \ + $(if $(BR2_PACKAGE_COLLECTD_MYSQL),--enable-mysql,--disable-mysql) \ + $(if $(BR2_PACKAGE_COLLECTD_NETLINK),--enable-netlink,--disable-netlink) \ + $(if $(BR2_PACKAGE_COLLECTD_NETWORK),--enable-network,--disable-network) \ + $(if $(BR2_PACKAGE_COLLECTD_NFS),--enable-nfs,--disable-nfs) \ + $(if $(BR2_PACKAGE_COLLECTD_NGINX),--enable-nginx,--disable-nginx) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFICATION),--enable-target_notification,--disable-target_notification) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL),--enable-notify_email,--disable-notify_email) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFY_NAGIOS),--enable-notify_nagios,--disable-notify_nagios) \ + $(if $(BR2_PACKAGE_COLLECTD_NTPD),--enable-ntpd,--disable-ntpd) \ + $(if $(BR2_PACKAGE_COLLECTD_OLSRD),--enable-olsrd,--disable-olsrd) \ + $(if $(BR2_PACKAGE_COLLECTD_OPENLDAP),--enable-openldap,--disable-openldap) \ + $(if $(BR2_PACKAGE_COLLECTD_OPENVPN),--enable-openvpn,--disable-openvpn) \ + $(if $(BR2_PACKAGE_COLLECTD_PING),--enable-ping,--disable-ping) \ + $(if $(BR2_PACKAGE_COLLECTD_POSTGRESQL),--enable-postgresql,--disable-postgresql) \ + $(if $(BR2_PACKAGE_COLLECTD_PROCESSES),--enable-processes,--disable-processes) \ + $(if $(BR2_PACKAGE_COLLECTD_PROTOCOLS),--enable-protocols,--disable-protocols) \ + $(if $(BR2_PACKAGE_COLLECTD_REGEX),--enable-match_regex,--disable-match-regex) \ + $(if $(BR2_PACKAGE_COLLECTD_REPLACE),--enable-target_replace,--disable-target_replace) \ + $(if $(BR2_PACKAGE_COLLECTD_RIEMANN),--enable-write_riemann,--disable-write_riemann) \ + $(if $(BR2_PACKAGE_COLLECTD_RRDTOOL),--enable-rrdtool,--disable-rrdtool) \ + $(if $(BR2_PACKAGE_COLLECTD_SCALE),--enable-target_scale,--disable-target_scale) \ + $(if $(BR2_PACKAGE_COLLECTD_SENSORS),--enable-sensors,--disable-sensors) \ + $(if $(BR2_PACKAGE_COLLECTD_SERIAL),--enable-serial,--disable-serial) \ + $(if $(BR2_PACKAGE_COLLECTD_STATSD),--enable-statsd,--disable-statsd) \ + $(if $(BR2_PACKAGE_COLLECTD_SET),--enable-target_set,--disable-target_set) \ + $(if $(BR2_PACKAGE_COLLECTD_SMART),--enable-smart,--disable-smart) \ + $(if $(BR2_PACKAGE_COLLECTD_SNMP),--enable-snmp,--disable-snmp) \ + $(if $(BR2_PACKAGE_COLLECTD_SWAP),--enable-swap,--disable-swap) \ + $(if $(BR2_PACKAGE_COLLECTD_SYSLOG),--enable-syslog,--disable-syslog) \ + $(if $(BR2_PACKAGE_COLLECTD_TABLE),--enable-table,--disable-table) \ + $(if $(BR2_PACKAGE_COLLECTD_TAIL),--enable-tail,--disable-tail) \ + $(if $(BR2_PACKAGE_COLLECTD_TAIL_CSV),--enable-tail_csv,--disable-tail_csv) \ + $(if $(BR2_PACKAGE_COLLECTD_TCPCONNS),--enable-tcpconns,--disable-tcpconns) \ + $(if $(BR2_PACKAGE_COLLECTD_THERMAL),--enable-thermal,--disable-thermal) \ + $(if $(BR2_PACKAGE_COLLECTD_THRESHOLD),--enable-threshold,--disable-threshold) \ + $(if $(BR2_PACKAGE_COLLECTD_TIMEDIFF),--enable-match_timediff,--disable-match_timediff) \ + $(if $(BR2_PACKAGE_COLLECTD_UNIXSOCK),--enable-unixsock,--disable-unixsock) \ + $(if $(BR2_PACKAGE_COLLECTD_UPTIME),--enable-uptime,--disable-uptime) \ + $(if $(BR2_PACKAGE_COLLECTD_USERS),--enable-users,--disable-users) \ + $(if $(BR2_PACKAGE_COLLECTD_VALUE),--enable-match_value,--disable-match_value) \ + $(if $(BR2_PACKAGE_COLLECTD_VMEM),--enable-vmem,--disable-vmem) \ + $(if $(BR2_PACKAGE_COLLECTD_WIRELESS),--enable-wireless,--disable-wireless) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEHTTP),--enable-write_http,--disable-write_http) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITELOG),--enable-write_log,--disable-write_log) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS),--enable-write_prometheus,--disable-write_prometheus) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITESENSU),--enable-write_sensu,--disable-write_sensu) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITETSDB),--enable-write_tsdb,--disable-write_tsdb) \ + $(if $(BR2_PACKAGE_COLLECTD_ZOOKEEPER),--enable-zookeeper,--disable-zookeeper) + +COLLECTD_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_COLLECTD_APACHE),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_BIND),libcurl libxml2) \ + $(if $(BR2_PACKAGE_COLLECTD_CEPH),yajl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_JSON),libcurl yajl) \ + $(if $(BR2_PACKAGE_COLLECTD_CURL_XML),libcurl libxml2) \ + $(if $(BR2_PACKAGE_COLLECTD_DNS),libpcap) \ + $(if $(BR2_PACKAGE_COLLECTD_GPS),gpsd) \ + $(if $(BR2_PACKAGE_COLLECTD_IPTABLES),iptables) \ + $(if $(BR2_PACKAGE_COLLECTD_LOGSTASH),yajl) \ + $(if $(BR2_PACKAGE_COLLECTD_MEMCACHEC),libmemcached) \ + $(if $(BR2_PACKAGE_COLLECTD_MODBUS),libmodbus) \ + $(if $(BR2_PACKAGE_COLLECTD_MQTT),mosquitto) \ + $(if $(BR2_PACKAGE_COLLECTD_MYSQL),mysql) \ + $(if $(BR2_PACKAGE_COLLECTD_NETLINK),libmnl) \ + $(if $(BR2_PACKAGE_COLLECTD_NGINX),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_NOTIFY_EMAIL),libesmtp) \ + $(if $(BR2_PACKAGE_COLLECTD_OPENLDAP),openldap) \ + $(if $(BR2_PACKAGE_COLLECTD_PING),liboping) \ + $(if $(BR2_PACKAGE_COLLECTD_POSTGRESQL),postgresql) \ + $(if $(BR2_PACKAGE_COLLECTD_RIEMANN),libtool riemann-c-client) \ + $(if $(BR2_PACKAGE_COLLECTD_RRDTOOL),rrdtool) \ + $(if $(BR2_PACKAGE_COLLECTD_SENSORS),lm-sensors) \ + $(if $(BR2_PACKAGE_COLLECTD_SMART),libatasmart) \ + $(if $(BR2_PACKAGE_COLLECTD_SNMP),netsnmp) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEHTTP),libcurl) \ + $(if $(BR2_PACKAGE_COLLECTD_WRITEPROMETHEUS),libmicrohttpd protobuf-c) + +# include/library fixups +ifeq ($(BR2_PACKAGE_LIBCURL),y) +COLLECTD_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr +endif +ifeq ($(BR2_PACKAGE_MYSQL),y) +COLLECTD_CONF_OPTS += --with-libmysql=$(STAGING_DIR)/usr +endif +ifeq ($(BR2_PACKAGE_NETSNMP),y) +COLLECTD_CONF_OPTS += --with-libnetsnmp=$(STAGING_DIR)/usr +endif +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +COLLECTD_CONF_OPTS += --with-libpq=$(STAGING_DIR)/usr/bin/pg_config +COLLECTD_CONF_ENV += LIBS="-lpthread -lm" +endif +ifeq ($(BR2_PACKAGE_YAJL),y) +COLLECTD_CONF_OPTS += --with-yajl=$(STAGING_DIR)/usr +endif + +# network can use libgcrypt +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +COLLECTD_DEPENDENCIES += libgcrypt +COLLECTD_CONF_OPTS += --with-libgcrypt=$(STAGING_DIR)/usr/bin/libgcrypt-config +else +COLLECTD_CONF_OPTS += --with-libgcrypt=no +endif + +# released software should not break on minor warnings +define COLLECTD_DROP_WERROR + $(SED) 's/-Werror//' \ + $(@D)/src/Makefile.in $(@D)/src/libcollectdclient/Makefile.in +endef + +COLLECTD_POST_PATCH_HOOKS += COLLECTD_DROP_WERROR + +define COLLECTD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install + rm -f $(TARGET_DIR)/usr/bin/collectd-nagios + rm -f $(TARGET_DIR)/usr/share/collectd/postgresql_default.conf +endef + +define COLLECTD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/collectd/collectd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/collectd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/collectd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/collectd.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/collectd/collectd.service b/buildroot/package/collectd/collectd.service new file mode 100644 index 0000000..e203806 --- /dev/null +++ b/buildroot/package/collectd/collectd.service @@ -0,0 +1,17 @@ +[Unit] +Description=Statistics collection and monitoring daemon +After=local-fs.target network.target +Requires=local-fs.target network.target +ConditionPathExists=/etc/collectd.conf + +[Service] +Type=notify +NotifyAccess=main +EnvironmentFile=-/etc/default/collectd +ExecStartPre=/usr/sbin/collectd -t +ExecStart=/usr/sbin/collectd +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/comix-cursors/Config.in b/buildroot/package/comix-cursors/Config.in new file mode 100644 index 0000000..ac7a089 --- /dev/null +++ b/buildroot/package/comix-cursors/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_COMIX_CURSORS + bool "comix-cursors" + help + X11 mouse theme with a comics feeling. + + http://kde-look.org/content/show.php/ComixCursors?content=32627 diff --git a/buildroot/package/comix-cursors/comix-cursors.hash b/buildroot/package/comix-cursors/comix-cursors.hash new file mode 100644 index 0000000..d7f33ca --- /dev/null +++ b/buildroot/package/comix-cursors/comix-cursors.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3109e4d19d930a6a2a5c3422ebaaa2002640169118f9b12c042bb64995f3ec31 ComixCursors-0.8.2.tar.bz2 diff --git a/buildroot/package/comix-cursors/comix-cursors.mk b/buildroot/package/comix-cursors/comix-cursors.mk new file mode 100644 index 0000000..6cc7376 --- /dev/null +++ b/buildroot/package/comix-cursors/comix-cursors.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# comix-cursors +# +################################################################################ + +COMIX_CURSORS_VERSION = 0.8.2 +COMIX_CURSORS_SITE = http://limitland.de/downloads/comixcursors +COMIX_CURSORS_SOURCE = ComixCursors-$(COMIX_CURSORS_VERSION).tar.bz2 +COMIX_CURSORS_LICENSE = GPL-3.0 +COMIX_CURSORS_STRIP_COMPONENTS = 0 + +define COMIX_CURSORS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/cursors/xorg-x11 + cp -a $(@D)/* \ + $(TARGET_DIR)/usr/share/cursors/xorg-x11 +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/connman-gtk/Config.in b/buildroot/package/connman-gtk/Config.in new file mode 100644 index 0000000..467bf7e --- /dev/null +++ b/buildroot/package/connman-gtk/Config.in @@ -0,0 +1,22 @@ +comment "connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || !BR2_PACKAGE_LIBGTK3 || \ + BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_CONNMAN_GTK + bool "connman-gtk" + depends on BR2_USE_WCHAR # libglib2, connman + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, connman + depends on BR2_USE_MMU # libglib2 + depends on !BR2_STATIC_LIBS # connman + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # connman + depends on !BR2_TOOLCHAIN_USES_MUSL # connman + depends on BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_CONNMAN + select BR2_PACKAGE_LIBGLIB2 + help + GTK GUI for ConnMan. + + https://github.com/jgke/connman-gtk diff --git a/buildroot/package/connman-gtk/connman-gtk.hash b/buildroot/package/connman-gtk/connman-gtk.hash new file mode 100644 index 0000000..d71e77d --- /dev/null +++ b/buildroot/package/connman-gtk/connman-gtk.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 49bdc4769a7c508b0130e4705eef21aec9df1ea4f5c29fee48a0cae8db828fca connman-gtk-1.1.1.tar.bz2 diff --git a/buildroot/package/connman-gtk/connman-gtk.mk b/buildroot/package/connman-gtk/connman-gtk.mk new file mode 100644 index 0000000..9888fcd --- /dev/null +++ b/buildroot/package/connman-gtk/connman-gtk.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# connman-gtk +# +################################################################################ + +CONNMAN_GTK_VERSION = 1.1.1 +CONNMAN_GTK_SITE = https://github.com/jgke/connman-gtk/releases/download/v$(CONNMAN_GTK_VERSION) +CONNMAN_GTK_SOURCE = connman-gtk-$(CONNMAN_GTK_VERSION).tar.bz2 +CONNMAN_GTK_INSTALL_STAGING = YES +CONNMAN_GTK_DEPENDENCIES = host-intltool connman libglib2 libgtk3 +CONNMAN_GTK_LICENSE = GPL-2.0+ +CONNMAN_GTK_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/connman/0001-tethering-Reorder-header-includes.patch b/buildroot/package/connman/0001-tethering-Reorder-header-includes.patch new file mode 100644 index 0000000..4955df1 --- /dev/null +++ b/buildroot/package/connman/0001-tethering-Reorder-header-includes.patch @@ -0,0 +1,37 @@ +From bdfb3526466f8fb8f13d9259037d8f42c782ce24 Mon Sep 17 00:00:00 2001 +From: Daniel Wagner +Date: Wed, 17 Jan 2018 23:42:50 +0100 +Subject: [PATCH] tethering: Reorder header includes + +Avoid compile errors due to unsupported header include order with +newer kernels (>=4.15). We should import the libc header files first +and then the Linux header files in user space applications. + +Reported by Neil MacLeod . Fix probosal by Jonas +Bonn and Hauke Mehrtens . + +Signed-off-by: Martin Bark +--- + src/tethering.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/tethering.c b/src/tethering.c +index c929ba7..4b20236 100644 +--- a/src/tethering.c ++++ b/src/tethering.c +@@ -31,11 +31,11 @@ + #include + #include + #include +-#include + #include + #include +-#include + #include ++#include ++#include + #include + + #include "connman.h" +-- +2.7.4 diff --git a/buildroot/package/connman/0002-nat-build-failure.patch b/buildroot/package/connman/0002-nat-build-failure.patch new file mode 100644 index 0000000..0ab5850 --- /dev/null +++ b/buildroot/package/connman/0002-nat-build-failure.patch @@ -0,0 +1,30 @@ +From 68f4b4f5b220f256b17ad2f084d61fe89f3632ae Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 19 Apr 2016 08:38:38 -0300 +Subject: [PATCH] nat: fix build failure + +_GNU_SOURCE needs to be defined so that O_CLOEXEC symbols can be found in +system header files. + +Signed-off-by: Gustavo Zacarias +--- +Status: submitted upstream + + src/nat.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/nat.c b/src/nat.c +index 33ae6df..62e21d4 100644 +--- a/src/nat.c ++++ b/src/nat.c +@@ -24,6 +24,7 @@ + #include + #endif + ++#define _GNU_SOURCE + #include + #include + #include +-- +2.7.3 + diff --git a/buildroot/package/connman/Config.in b/buildroot/package/connman/Config.in new file mode 100644 index 0000000..253c604 --- /dev/null +++ b/buildroot/package/connman/Config.in @@ -0,0 +1,78 @@ +config BR2_PACKAGE_CONNMAN + bool "connman" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + depends on !BR2_STATIC_LIBS # needs dlopen() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_USES_MUSL # missing res_ninit() + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_IPTABLES + help + The Connection Manager (ConnMan) project provides a daemon + for managing internet connections within embedded devices + running the Linux operating system. + + For more information, see https://01.org/connman + +if BR2_PACKAGE_CONNMAN + +config BR2_PACKAGE_CONNMAN_ETHERNET + bool "enable Ethernet support" + default y + +config BR2_PACKAGE_CONNMAN_WIFI + bool "enable WiFi support" + select BR2_PACKAGE_WPA_SUPPLICANT # runtime + select BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW # runtime + help + Enable WiFi support (scan and static/dhcp interface + setup). ConnMan detects the start of wpa_supplicant + automatically. + +config BR2_PACKAGE_CONNMAN_WISPR + bool "enable WISPr support" + depends on !BR2_STATIC_LIBS # gnutls + select BR2_PACKAGE_GNUTLS + help + Enable support for Wireless Internet Service Provider + roaming (WISPr). A RADIUS server is used to authenticate the + subscriber's credentials. + +comment "connman WISPr needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_CONNMAN_BLUETOOTH + bool "enable Bluetooth support" + help + Enable Bluetooth support. The start of bluetoothd is + automatically detected and only a runtime dependency. + +config BR2_PACKAGE_CONNMAN_LOOPBACK + bool "enable loopback support" + +config BR2_PACKAGE_CONNMAN_NEARD + bool "enable neard support" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # neard + select BR2_PACKAGE_NEARD + +config BR2_PACKAGE_CONNMAN_OFONO + bool "enable ofono support" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # ofono + select BR2_PACKAGE_OFONO + +config BR2_PACKAGE_CONNMAN_DEBUG + bool "enable compiling with debugging information" + +config BR2_PACKAGE_CONNMAN_CLIENT + bool "enable command line client" + select BR2_PACKAGE_READLINE + +endif # BR2_PACKAGE_CONNMAN + +comment "connman needs a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/connman/S45connman b/buildroot/package/connman/S45connman new file mode 100755 index 0000000..d3d4bd5 --- /dev/null +++ b/buildroot/package/connman/S45connman @@ -0,0 +1,22 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting connman ... " + start-stop-daemon -S -q -m -b -p /var/run/connmand.pid --exec /usr/sbin/connmand -- -n + echo "done." + ;; + stop) + printf "Stopping connman ..." + start-stop-daemon -K -q -p /var/run/connmand.pid + echo "done." + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" + ;; +esac diff --git a/buildroot/package/connman/connman.hash b/buildroot/package/connman/connman.hash new file mode 100644 index 0000000..c822bb1 --- /dev/null +++ b/buildroot/package/connman/connman.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/network/connman/sha256sums.asc +sha256 66d7deb98371545c6e417239a9b3b3e3201c1529d08eedf40afbc859842cf2aa connman-1.35.tar.xz diff --git a/buildroot/package/connman/connman.mk b/buildroot/package/connman/connman.mk new file mode 100644 index 0000000..52c4545 --- /dev/null +++ b/buildroot/package/connman/connman.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# connman +# +################################################################################ + +CONNMAN_VERSION = 1.35 +CONNMAN_SOURCE = connman-$(CONNMAN_VERSION).tar.xz +CONNMAN_SITE = $(BR2_KERNEL_MIRROR)/linux/network/connman +CONNMAN_DEPENDENCIES = libglib2 dbus iptables +CONNMAN_INSTALL_STAGING = YES +CONNMAN_LICENSE = GPL-2.0 +CONNMAN_LICENSE_FILES = COPYING +CONNMAN_CONF_OPTS += \ + --with-dbusconfdir=/etc \ + $(if $(BR2_PACKAGE_CONNMAN_DEBUG),--enable-debug,--disable-debug) \ + $(if $(BR2_PACKAGE_CONNMAN_ETHERNET),--enable-ethernet,--disable-ethernet) \ + $(if $(BR2_PACKAGE_CONNMAN_WIFI),--enable-wifi,--disable-wifi) \ + $(if $(BR2_PACKAGE_CONNMAN_WISPR),--enable-wispr,--disable-wispr) \ + $(if $(BR2_PACKAGE_CONNMAN_BLUETOOTH),--enable-bluetooth,--disable-bluetooth) \ + $(if $(BR2_PACKAGE_CONNMAN_LOOPBACK),--enable-loopback,--disable-loopback) \ + $(if $(BR2_PACKAGE_CONNMAN_NEARD),--enable-neard,--disable-neard) \ + $(if $(BR2_PACKAGE_CONNMAN_OFONO),--enable-ofono,--disable-ofono) \ + $(if $(BR2_INIT_SYSTEMD),--with-systemdunitdir=/usr/lib/systemd/system) + +CONNMAN_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_CONNMAN_NEARD),neard) \ + $(if $(BR2_PACKAGE_CONNMAN_OFONO),ofono) \ + $(if $(BR2_PACKAGE_CONNMAN_WISPR),gnutls) + +define CONNMAN_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/connman/S45connman $(TARGET_DIR)/etc/init.d/S45connman +endef + +define CONNMAN_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/connman.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/connman.service +endef + +ifeq ($(BR2_PACKAGE_CONNMAN_CLIENT),y) +CONNMAN_CONF_OPTS += --enable-client +CONNMAN_DEPENDENCIES += readline + +define CONNMAN_INSTALL_CM + $(INSTALL) -m 0755 -D $(@D)/client/connmanctl $(TARGET_DIR)/usr/bin/connmanctl +endef + +CONNMAN_POST_INSTALL_TARGET_HOOKS += CONNMAN_INSTALL_CM +else +CONNMAN_CONF_OPTS += --disable-client +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/conntrack-tools/Config.in b/buildroot/package/conntrack-tools/Config.in new file mode 100644 index 0000000..87bf2d0 --- /dev/null +++ b/buildroot/package/conntrack-tools/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_CONNTRACK_TOOLS + bool "conntrack-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_LIBNETFILTER_CONNTRACK + select BR2_PACKAGE_LIBNETFILTER_CTHELPER + select BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT + select BR2_PACKAGE_LIBNETFILTER_QUEUE + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + The conntrack-tools are a set of tools targeted at + system administrators. + They are conntrack, the userspace command line interface, + and conntrackd, the userspace daemon. + + http://www.netfilter.org/projects/conntrack-tools/ + +comment "conntrack-tools needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/conntrack-tools/conntrack-tools.hash b/buildroot/package/conntrack-tools/conntrack-tools.hash new file mode 100644 index 0000000..9d68177 --- /dev/null +++ b/buildroot/package/conntrack-tools/conntrack-tools.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/conntrack-tools/conntrack-tools-1.4.4.tar.bz2.{md5sum,sha1sum} +md5 acd9e0b27cf16ae3092ba900e4d7560e conntrack-tools-1.4.4.tar.bz2 +sha1 25b36fb6832373ef899bade3b82adf5382b9a05b conntrack-tools-1.4.4.tar.bz2 diff --git a/buildroot/package/conntrack-tools/conntrack-tools.mk b/buildroot/package/conntrack-tools/conntrack-tools.mk new file mode 100644 index 0000000..2f4ea5f --- /dev/null +++ b/buildroot/package/conntrack-tools/conntrack-tools.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# conntrack-tools +# +################################################################################ + +CONNTRACK_TOOLS_VERSION = 1.4.4 +CONNTRACK_TOOLS_SOURCE = conntrack-tools-$(CONNTRACK_TOOLS_VERSION).tar.bz2 +CONNTRACK_TOOLS_SITE = http://www.netfilter.org/projects/conntrack-tools/files +CONNTRACK_TOOLS_DEPENDENCIES = host-pkgconf \ + libnetfilter_conntrack libnetfilter_cthelper libnetfilter_cttimeout \ + libnetfilter_queue host-bison host-flex +CONNTRACK_TOOLS_LICENSE = GPL-2.0+ +CONNTRACK_TOOLS_LICENSE_FILES = COPYING + +CONNTRACK_TOOLS_CFLAGS = $(TARGET_CFLAGS) + +# Some of conntrack-tools source files include both linux/in.h (via +# linux/netfilter.h for kernel headers >= 4.2) and netinet/in.h, which +# causes some symbol conflicts when musl is used. Defining __GLIBC__ +# works around that issue since the kernel headers are prepared to +# avoid redefinition of certain symbols when they see __GLIBC__. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +CONNTRACK_TOOLS_CFLAGS += -D__GLIBC__ +endif + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +CONNTRACK_TOOLS_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc` +CONNTRACK_TOOLS_DEPENDENCIES += libtirpc host-pkgconf +endif + +CONNTRACK_TOOLS_CONF_ENV = CFLAGS="$(CONNTRACK_TOOLS_CFLAGS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/copas/Config.in b/buildroot/package/copas/Config.in new file mode 100644 index 0000000..d7800b6 --- /dev/null +++ b/buildroot/package/copas/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_COPAS + bool "copas" + # Runtime dependency only + select BR2_PACKAGE_COXPCALL if BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_LUASOCKET + help + Copas is a dispatcher based on coroutines that can be used + for asynchronous networking. For example TCP or UDP based + servers. But it also features timers and client support for + http(s), ftp and smtp requests. + + http://keplerproject.github.com/copas/ diff --git a/buildroot/package/copas/copas.hash b/buildroot/package/copas/copas.hash new file mode 100644 index 0000000..d894b86 --- /dev/null +++ b/buildroot/package/copas/copas.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 efeded4f4633bc71551175b239199304640ef918ae8ea9dc9c5047359ae07107 copas-2.0.2-1.src.rock diff --git a/buildroot/package/copas/copas.mk b/buildroot/package/copas/copas.mk new file mode 100644 index 0000000..988692c --- /dev/null +++ b/buildroot/package/copas/copas.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# copas +# +################################################################################ + +COPAS_VERSION = 2.0.2-1 +COPAS_SUBDIR = copas-2_0_2 +COPAS_LICENSE = MIT +COPAS_LICENSE_FILES = $(COPAS_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/buildroot/package/coreutils/0001-fix-for-dummy-man-usage.patch b/buildroot/package/coreutils/0001-fix-for-dummy-man-usage.patch new file mode 100644 index 0000000..4c5a088 --- /dev/null +++ b/buildroot/package/coreutils/0001-fix-for-dummy-man-usage.patch @@ -0,0 +1,25 @@ +Upstream-Status: Pending + +coreutils: fix for dummy-man usage + +The options should be before the final argument, otherwise, the following error +would appear when compiling. + +"dummy-man: too many non-option arguments" + +Signed-off-by: Chen Qi +[Gustavo: update for 8.24] + +diff -Nura coreutils-8.24.orig/man/local.mk coreutils-8.24/man/local.mk +--- coreutils-8.24.orig/man/local.mk 2015-07-04 11:23:47.190503631 -0300 ++++ coreutils-8.24/man/local.mk 2015-07-04 11:24:25.046741090 -0300 +@@ -186,8 +186,8 @@ + && $(run_help2man) \ + --source='$(PACKAGE_STRING)' \ + --include=$(srcdir)/man/$$name.x \ +- --output=$$t/$$name.1 \ + --info-page='\(aq(coreutils) '$$name' invocation\(aq' \ ++ --output=$$t/$$name.1 \ + $$t/$$argv$(EXEEXT) \ + && sed \ + -e 's|$*\.td/||g' \ diff --git a/buildroot/package/coreutils/Config.in b/buildroot/package/coreutils/Config.in new file mode 100644 index 0000000..11a6019 --- /dev/null +++ b/buildroot/package/coreutils/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_COREUTILS + bool "coreutils" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + All of the basic file/text/shell utilities. These are the + core utilities which are expected to exist on every system. + BusyBox implements many of the most common. + + Things like: + - chmod, cp, dd, dir, ls, etc... + - sort, tr, head, tail, wc, etc... + - whoami, who, etc... + + http://www.gnu.org/software/coreutils/ + +comment "coreutils needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/coreutils/coreutils.hash b/buildroot/package/coreutils/coreutils.hash new file mode 100644 index 0000000..472cab5 --- /dev/null +++ b/buildroot/package/coreutils/coreutils.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 8891d349ee87b9ff7870f52b6d9312a9db672d2439d289bc57084771ca21656b coreutils-8.27.tar.xz diff --git a/buildroot/package/coreutils/coreutils.mk b/buildroot/package/coreutils/coreutils.mk new file mode 100644 index 0000000..8259f42 --- /dev/null +++ b/buildroot/package/coreutils/coreutils.mk @@ -0,0 +1,127 @@ +################################################################################ +# +# coreutils +# +################################################################################ + +COREUTILS_VERSION = 8.27 +COREUTILS_SITE = $(BR2_GNU_MIRROR)/coreutils +COREUTILS_SOURCE = coreutils-$(COREUTILS_VERSION).tar.xz +COREUTILS_LICENSE = GPL-3.0+ +COREUTILS_LICENSE_FILES = COPYING + +# coreutils-01-fix-for-dummy-man-usage.patch triggers autoreconf on build +COREUTILS_AUTORECONF = YES +COREUTILS_GETTEXTIZE = YES + +COREUTILS_CONF_OPTS = --disable-rpath --enable-single-binary=shebangs \ + $(if $(BR2_TOOLCHAIN_USES_MUSL),--with-included-regex) +COREUTILS_CONF_ENV = ac_cv_c_restrict=no \ + ac_cv_func_chown_works=yes \ + ac_cv_func_euidaccess=no \ + ac_cv_func_fstatat=yes \ + ac_cv_func_getdelim=yes \ + ac_cv_func_getgroups=yes \ + ac_cv_func_getgroups_works=yes \ + ac_cv_func_getloadavg=no \ + ac_cv_func_lstat_dereferences_slashed_symlink=yes \ + ac_cv_func_lstat_empty_string_bug=no \ + ac_cv_func_strerror_r_char_p=no \ + ac_cv_func_strnlen_working=yes \ + ac_cv_func_strtod=yes \ + ac_cv_func_working_mktime=yes \ + ac_cv_have_decl_strerror_r=yes \ + ac_cv_have_decl_strnlen=yes \ + ac_cv_lib_getloadavg_getloadavg=no \ + ac_cv_lib_util_getloadavg=no \ + ac_fsusage_space=yes \ + ac_use_included_regex=no \ + am_cv_func_working_getline=yes \ + fu_cv_sys_stat_statfs2_bsize=yes \ + gl_cv_func_getcwd_null=yes \ + gl_cv_func_getcwd_path_max=yes \ + gl_cv_func_gettimeofday_clobber=no \ + gl_cv_func_fstatat_zero_flag=no \ + gl_cv_func_link_follows_symlink=no \ + gl_cv_func_re_compile_pattern_working=yes \ + gl_cv_func_svid_putenv=yes \ + gl_cv_func_tzset_clobber=no \ + gl_cv_func_working_mkstemp=yes \ + gl_cv_func_working_utimes=yes \ + gl_getline_needs_run_time_check=no \ + gl_cv_have_proc_uptime=yes \ + utils_cv_localtime_cache=no \ + PERL=missing \ + MAKEINFO=true \ + INSTALL_PROGRAM=$(INSTALL) + +COREUTILS_BIN_PROGS = cat chgrp chmod chown cp date dd df dir echo false \ + kill link ln ls mkdir mknod mktemp mv nice printenv pwd rm rmdir \ + vdir sleep stty sync touch true uname join + +# If both coreutils and busybox are selected, make certain coreutils +# wins the fight over who gets to have their utils actually installed. +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +COREUTILS_DEPENDENCIES = busybox +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +COREUTILS_DEPENDENCIES += acl +else +COREUTILS_CONF_OPTS += --disable-acl +endif + +ifeq ($(BR2_PACKAGE_ATTR),y) +COREUTILS_DEPENDENCIES += attr +else +COREUTILS_CONF_OPTS += --disable-xattr +endif + +COREUTILS_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) + +# It otherwise fails to link properly, not mandatory though +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +COREUTILS_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr +endif + +ifeq ($(BR2_PACKAGE_GMP),y) +COREUTILS_DEPENDENCIES += gmp +else +COREUTILS_CONF_OPTS += --without-gmp +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +COREUTILS_DEPENDENCIES += libcap +else +COREUTILS_CONF_OPTS += --disable-libcap +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +COREUTILS_CONF_OPTS += --with-openssl=yes +COREUTILS_DEPENDENCIES += openssl +endif + +ifeq ($(BR2_ROOTFS_MERGED_USR),) +define COREUTILS_CLEANUP_BIN + # some things go in root rather than usr + for f in $(COREUTILS_BIN_PROGS); do \ + mv -f $(TARGET_DIR)/usr/bin/$$f $(TARGET_DIR)/bin/$$f || exit 1; \ + done +endef +COREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_CLEANUP_BIN +endif + +ifeq ($(BR2_STATIC_LIBS),y) +COREUTILS_CONF_OPTS += --enable-no-install-program=stdbuf +endif + +define COREUTILS_CLEANUP + # link for archaic shells + ln -fs test $(TARGET_DIR)/usr/bin/[ + # gnu thinks chroot is in bin, debian thinks it's in sbin + mv -f $(TARGET_DIR)/usr/bin/chroot $(TARGET_DIR)/usr/sbin/chroot +endef + +COREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_CLEANUP + +$(eval $(autotools-package)) diff --git a/buildroot/package/coxpcall/Config.in b/buildroot/package/coxpcall/Config.in new file mode 100644 index 0000000..3735017 --- /dev/null +++ b/buildroot/package/coxpcall/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_COXPCALL + bool "coxpcall" + help + Coxpcall encapsulates the protected calls with a coroutine + based loop, so errors can be handled without the usual + pcall/xpcall issues with coroutines for Lua 5.1. + + http://keplerproject.github.io/coxpcall/ diff --git a/buildroot/package/coxpcall/coxpcall.hash b/buildroot/package/coxpcall/coxpcall.hash new file mode 100644 index 0000000..e037af9 --- /dev/null +++ b/buildroot/package/coxpcall/coxpcall.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c1488ee08e5d25d59a11e19cb0322edae509202b246d0c93cb2de1676dbfdf2b coxpcall-1.16.0-1.src.rock diff --git a/buildroot/package/coxpcall/coxpcall.mk b/buildroot/package/coxpcall/coxpcall.mk new file mode 100644 index 0000000..3af81f2 --- /dev/null +++ b/buildroot/package/coxpcall/coxpcall.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# coxpcall +# +################################################################################ + +COXPCALL_VERSION = 1.16.0-1 +COXPCALL_SUBDIR = coxpcall +COXPCALL_LICENSE = MIT +COXPCALL_LICENSE_FILES = $(COXPCALL_SUBDIR)/doc/license.html + +$(eval $(luarocks-package)) diff --git a/buildroot/package/cpio/0001-fix-CVE-2016-2037.patch b/buildroot/package/cpio/0001-fix-CVE-2016-2037.patch new file mode 100644 index 0000000..aec2ccb --- /dev/null +++ b/buildroot/package/cpio/0001-fix-CVE-2016-2037.patch @@ -0,0 +1,51 @@ +From: Pavel Raiskup +Subject: [Bug-cpio] [PATCH] fix 1-byte out-of-bounds write +Date: Tue, 26 Jan 2016 23:17:54 +0100 + +Other calls to cpio_safer_name_suffix seem to be safe. + +* src/copyin.c (process_copy_in): Make sure that file_hdr.c_name +has at least two bytes allocated. +* src/util.c (cpio_safer_name_suffix): Document that use of this +function requires to be careful. + +Signed-off-by: Gustavo Zacarias +--- +Patch status: fetched/submitted +URL: https://lists.gnu.org/archive/html/bug-cpio/2016-01/msg00005.html + + src/copyin.c | 2 ++ + src/util.c | 5 ++++- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/copyin.c b/src/copyin.c +index cde911e..032d35f 100644 +--- a/src/copyin.c ++++ b/src/copyin.c +@@ -1385,6 +1385,8 @@ process_copy_in () + break; + } + ++ if (file_hdr.c_namesize <= 1) ++ file_hdr.c_name = xrealloc(file_hdr.c_name, 2); + cpio_safer_name_suffix (file_hdr.c_name, false, !no_abs_paths_flag, + false); + +diff --git a/src/util.c b/src/util.c +index 6ff6032..2763ac1 100644 +--- a/src/util.c ++++ b/src/util.c +@@ -1411,7 +1411,10 @@ set_file_times (int fd, + } + + /* Do we have to ignore absolute paths, and if so, does the filename +- have an absolute path? */ ++ have an absolute path? ++ Before calling this function make sure that the allocated NAME buffer has ++ capacity at least 2 bytes to allow us to store the "." string inside. */ ++ + void + cpio_safer_name_suffix (char *name, bool link_target, bool absolute_names, + bool strip_leading_dots) +-- +2.5.0 diff --git a/buildroot/package/cpio/Config.in b/buildroot/package/cpio/Config.in new file mode 100644 index 0000000..3ef0402 --- /dev/null +++ b/buildroot/package/cpio/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CPIO + bool "cpio" + depends on BR2_USE_WCHAR + # Need argp.h support + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + cpio archive utility for creation and extraction. + + https://www.gnu.org/software/cpio/ + +comment "cpio needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/cpio/cpio.hash b/buildroot/package/cpio/cpio.hash new file mode 100644 index 0000000..962a100 --- /dev/null +++ b/buildroot/package/cpio/cpio.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 08a35e92deb3c85d269a0059a27d4140a9667a6369459299d08c17f713a92e73 cpio-2.12.tar.gz diff --git a/buildroot/package/cpio/cpio.mk b/buildroot/package/cpio/cpio.mk new file mode 100644 index 0000000..7e8549d --- /dev/null +++ b/buildroot/package/cpio/cpio.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# cpio +# +################################################################################ + +CPIO_VERSION = 2.12 +CPIO_SITE = $(BR2_GNU_MIRROR)/cpio +CPIO_CONF_OPTS = --bindir=/bin +CPIO_DEPENDENCIES = $(if $(BR2_PACKAGE_BUSYBOX),busybox) +CPIO_LICENSE = GPL-3.0+ +CPIO_LICENSE_FILES = COPYING + +# cpio uses argp.h which is not provided by uclibc or musl by default. +# Use the argp-standalone package to provide this. +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +CPIO_DEPENDENCIES += argp-standalone +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/cppcms/Config.in b/buildroot/package/cppcms/Config.in new file mode 100644 index 0000000..d7b7fa8 --- /dev/null +++ b/buildroot/package/cppcms/Config.in @@ -0,0 +1,45 @@ +config BR2_PACKAGE_CPPCMS + bool "cppcms" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_USE_WCHAR + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_LIBGCRYPT + help + CppCMS is a Free High Performance Web Development Framework + (not a CMS) aimed for Rapid Web Application Development. It + differs from most of other web development frameworks like: + Python Django or Java Servlets on the following aspects: + + - It is designed and tuned to handle extremely high loads. + - It uses modern C++ as primary development language in + order to achieve the above goal. + - It is aimed on development of both Web Sites and Web + Services. + + http://cppcms.com + +if BR2_PACKAGE_CPPCMS + +config BR2_PACKAGE_CPPCMS_ICU + bool "enable icu support" + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_HOST_GCC_AT_LEAST_4_8 # icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # icu + select BR2_PACKAGE_ICU + help + Using ICU allows advanced localization features into CppCMS, + in another hand ICU is heavier than iconv. + +comment "icu support needs a toolchain w/ gcc >= 4.8, host gcc >= 4.8" + depends on !BR2_BINFMT_FLAT + depends on !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +endif + +comment "cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/buildroot/package/cppcms/cppcms.hash b/buildroot/package/cppcms/cppcms.hash new file mode 100644 index 0000000..28e998c --- /dev/null +++ b/buildroot/package/cppcms/cppcms.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/cppcms/files/cppcms/1.0.5/ +sha1 15f21897c14acfd4b0c74622e49d95857f2fe939 cppcms-1.0.5.tar.bz2 +md5 d668c201dd31fff8090380ebdc0bcc2b cppcms-1.0.5.tar.bz2 +# Locally computed: +sha256 84b685977bca97c3e997497f227bd5906adb80555066d811a7046b01c2f51865 cppcms-1.0.5.tar.bz2 diff --git a/buildroot/package/cppcms/cppcms.mk b/buildroot/package/cppcms/cppcms.mk new file mode 100644 index 0000000..f3ea262 --- /dev/null +++ b/buildroot/package/cppcms/cppcms.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# cppcms +# +################################################################################ + +CPPCMS_VERSION = 1.0.5 +CPPCMS_SOURCE = cppcms-$(CPPCMS_VERSION).tar.bz2 +CPPCMS_LICENSE = LGPL-3.0 +CPPCMS_LICENSE_FILES = COPYING.TXT +CPPCMS_SITE = http://downloads.sourceforge.net/project/cppcms/cppcms/$(CPPCMS_VERSION) +CPPCMS_INSTALL_STAGING = YES +CPPCMS_CXXFLAGS = $(TARGET_CXXFLAGS) + +# disable rpath to avoid getting /usr/lib added to the link search +# path +CPPCMS_CONF_OPTS = \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_CXX_FLAGS="$(CPPCMS_CXXFLAGS)" + +CPPCMS_DEPENDENCIES = zlib pcre libgcrypt + +ifeq ($(BR2_PACKAGE_CPPCMS_ICU),y) +CPPCMS_CONF_OPTS += -DDISABLE_ICU_LOCALE=OFF +CPPCMS_DEPENDENCIES += icu +CPPCMS_CXXFLAGS += "`$(STAGING_DIR)/usr/bin/icu-config --cxxflags`" +else +CPPCMS_CONF_OPTS += -DDISABLE_ICU_LOCALE=ON +endif + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# posix backend needs monetary.h which isn't available on uClibc +CPPCMS_CONF_OPTS += -DDISABLE_POSIX_LOCALE=on +endif + +# We copy cppcms_tmpl_cc from staging to host because this file can be +# needed for compiling packages using cppcms. And it is not worth +# creating a host package just for a python script. +define CPPCMS_INSTALL_HOST_TOOLS + cp $(STAGING_DIR)/usr/bin/cppcms_tmpl_cc $(HOST_DIR)/bin/cppcms_tmpl_cc +endef +CPPCMS_POST_INSTALL_STAGING_HOOKS += CPPCMS_INSTALL_HOST_TOOLS + +$(eval $(cmake-package)) diff --git a/buildroot/package/cppdb/0001-mysql-library-suffix.patch b/buildroot/package/cppdb/0001-mysql-library-suffix.patch new file mode 100644 index 0000000..e65e3e2 --- /dev/null +++ b/buildroot/package/cppdb/0001-mysql-library-suffix.patch @@ -0,0 +1,23 @@ +Add mysql/ to PATH_SUFFIXES for the library search for mysql. + +On common distros libmysqlclient* is installed and/or symlinked +into /usr/lib. +Since we install the libraries into /usr/lib/mysql alone cppdb +fails to properly link to it giving runtime errors. + +Status: https://sourceforge.net/p/cppcms/bugs/135/ + +Signed-off-by: Gustavo Zacarias + +diff -Nura cppdb-0.3.1.orig/CMakeLists.txt cppdb-0.3.1/CMakeLists.txt +--- cppdb-0.3.1.orig/CMakeLists.txt 2014-10-17 11:05:57.875429748 -0300 ++++ cppdb-0.3.1/CMakeLists.txt 2014-10-17 11:12:57.486775484 -0300 +@@ -196,7 +196,7 @@ + endif() + + if(NOT DISABLE_MYSQL) +- find_library(MYSQL_LIB mysqlclient) ++ find_library(MYSQL_LIB mysqlclient PATH_SUFFIXES mysql) + find_path(MYSQL_PATH mysql.h PATH_SUFFIXES mysql) + if(MYSQL_LIB AND MYSQL_PATH) + include_directories(${MYSQL_PATH}) diff --git a/buildroot/package/cppdb/Config.in b/buildroot/package/cppdb/Config.in new file mode 100644 index 0000000..ceff0ab --- /dev/null +++ b/buildroot/package/cppdb/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_CPPDB + bool "cppdb" + # dlfcn.h + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + # Can be built without them but it's useless + depends on BR2_PACKAGE_MYSQL || BR2_PACKAGE_POSTGRESQL || BR2_PACKAGE_SQLITE + help + CppDB is an SQL connectivity library that is designed to + provide platform and Database independent connectivity API + similarly to what JDBC, ODBC and other connectivity libraries + do. + + http://cppcms.com/sql/cppdb/ + +comment "cppdb needs a toolchain w/ C++, threads, dynamic library" + depends on BR2_PACKAGE_MYSQL || BR2_PACKAGE_POSTGRESQL || BR2_PACKAGE_SQLITE + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/cppdb/cppdb.hash b/buildroot/package/cppdb/cppdb.hash new file mode 100644 index 0000000..efc0eac --- /dev/null +++ b/buildroot/package/cppdb/cppdb.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/cppcms/files/cppdb/0.3.1/ +md5 129f1d75f46114b79160b93807d5223f cppdb-0.3.1.tar.bz2 +sha1 c0410dcc482d71696ac9206044b3a3ac03d31f96 cppdb-0.3.1.tar.bz2 diff --git a/buildroot/package/cppdb/cppdb.mk b/buildroot/package/cppdb/cppdb.mk new file mode 100644 index 0000000..e73f04e --- /dev/null +++ b/buildroot/package/cppdb/cppdb.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# cppdb +# +################################################################################ + +CPPDB_VERSION = 0.3.1 +CPPDB_SOURCE = cppdb-$(CPPDB_VERSION).tar.bz2 +CPPDB_SITE = http://downloads.sourceforge.net/project/cppcms/cppdb/$(CPPDB_VERSION) +CPPDB_INSTALL_STAGING = YES +CPPDB_DEPENDENCIES = $(if $(BR2_PACKAGE_SQLITE),sqlite) +CPPDB_LICENSE = BSL-1.0 or MIT +CPPDB_LICENSE_FILES = LICENSE_1_0.txt MIT.txt + +ifeq ($(BR2_PACKAGE_MYSQL),y) +CPPDB_DEPENDENCIES += mysql +else +CPPDB_CONF_OPTS += -DDISABLE_MYSQL=ON +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +CPPDB_DEPENDENCIES += postgresql +else +CPPDB_CONF_OPTS += -DDISABLE_PQ=ON +endif + +ifeq ($(BR2_PACKAGE_SQLITE),) +CPPDB_CONF_OPTS += -DDISABLE_SQLITE=ON +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/cppunit/Config.in b/buildroot/package/cppunit/Config.in new file mode 100644 index 0000000..efcdcf0 --- /dev/null +++ b/buildroot/package/cppunit/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_CPPUNIT + bool "cppunit" + depends on BR2_INSTALL_LIBSTDCPP + # currently the static situation is not correctly detected. + depends on !BR2_STATIC_LIBS + help + CppUnit is the C++ port of the famous JUnit framework for + unit testing. Test output is in XML or text format for + automatic testing and GUI based for supervised tests. + + http://www.freedesktop.org/wiki/Software/cppunit/ + +comment "cppunit needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/buildroot/package/cppunit/cppunit.hash b/buildroot/package/cppunit/cppunit.hash new file mode 100644 index 0000000..a097e32 --- /dev/null +++ b/buildroot/package/cppunit/cppunit.hash @@ -0,0 +1,5 @@ +# hash from: http://www.freedesktop.org/wiki/Software/cppunit/: +md5 d1c6bdd5a76c66d2c38331e2d287bc01 cppunit-1.13.2.tar.gz + +# Locally calculated: +sha512 8f4be569f321d577cec31931f49f4df143bc94e283605509b6ea50c60690aa91a2aed940e7eebd4b2413a4218f9a6c3978d312d8e587eab040283c6563846ecd cppunit-1.13.2.tar.gz diff --git a/buildroot/package/cppunit/cppunit.mk b/buildroot/package/cppunit/cppunit.mk new file mode 100644 index 0000000..db01b70 --- /dev/null +++ b/buildroot/package/cppunit/cppunit.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# cppunit +# +################################################################################ + +CPPUNIT_VERSION = 1.13.2 +CPPUNIT_SITE = http://dev-www.libreoffice.org/src +CPPUNIT_INSTALL_STAGING = YES +CPPUNIT_LICENSE = LGPL-2.1 +CPPUNIT_LICENSE_FILES = COPYING +CPPUNIT_CONF_OPTS = --disable-doxygen + +$(eval $(autotools-package)) diff --git a/buildroot/package/cppzmq/Config.in b/buildroot/package/cppzmq/Config.in new file mode 100644 index 0000000..c984c15 --- /dev/null +++ b/buildroot/package/cppzmq/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CPPZMQ + bool "cppzmq" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + select BR2_PACKAGE_ZEROMQ + help + C++ binding for zeromq (ZeroMQ, 0MQ, zmq). + + http://github.com/zeromq/cppzmq + +comment "cppzmq needs a toolchain w/ C++, threads" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/buildroot/package/cppzmq/cppzmq.hash b/buildroot/package/cppzmq/cppzmq.hash new file mode 100644 index 0000000..792fb17 --- /dev/null +++ b/buildroot/package/cppzmq/cppzmq.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 812b47f76c609e194b2607a186ff0d1b03b6a0c8ea13b20faa47570ddf38ef2c cppzmq-68a7b09cfce01c4c279fba2cf91686fcfc566848.tar.gz diff --git a/buildroot/package/cppzmq/cppzmq.mk b/buildroot/package/cppzmq/cppzmq.mk new file mode 100644 index 0000000..113b9a0 --- /dev/null +++ b/buildroot/package/cppzmq/cppzmq.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# cppzmq +# +################################################################################ + +CPPZMQ_VERSION = 68a7b09cfce01c4c279fba2cf91686fcfc566848 +CPPZMQ_SITE = $(call github,zeromq,cppzmq,$(CPPZMQ_VERSION)) +CPPZMQ_INSTALL_STAGING = YES +CPPZMQ_DEPENDENCIES = zeromq +CPPZMQ_LICENSE = MIT +CPPZMQ_LICENSE_FILES = LICENSE + +define CPPZMQ_INSTALL_STAGING_CMDS + $(INSTALL) -m 0644 -D $(@D)/zmq.hpp $(STAGING_DIR)/usr/include/zmq.hpp +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/cpuload/Config.in b/buildroot/package/cpuload/Config.in new file mode 100644 index 0000000..9a7b4e9 --- /dev/null +++ b/buildroot/package/cpuload/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_CPULOAD + bool "cpuload" + help + cpuload is a simple tool to obtain intuitive vision of CPU + load (including total, user, system, irq and softirq) within a + certain time, which is especially useful for embedded system + without GUI. + + https://github.com/kelvincheung/cpuload diff --git a/buildroot/package/cpuload/cpuload.hash b/buildroot/package/cpuload/cpuload.hash new file mode 100644 index 0000000..02861ff --- /dev/null +++ b/buildroot/package/cpuload/cpuload.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1d61f4776dc3e2746343d68b2ea2faf138e54666b630a6060df4f3945badbcae cpuload-v0.3.tar.gz diff --git a/buildroot/package/cpuload/cpuload.mk b/buildroot/package/cpuload/cpuload.mk new file mode 100644 index 0000000..e792952 --- /dev/null +++ b/buildroot/package/cpuload/cpuload.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# cpuload +# +################################################################################ + +CPULOAD_VERSION = v0.3 +CPULOAD_SITE = $(call github,kelvincheung,cpuload,$(CPULOAD_VERSION)) +CPULOAD_LICENSE = GPL-2.0 +CPULOAD_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/cracklib/0001-Apply-patch-to-fix-CVE-2016-6318.patch b/buildroot/package/cracklib/0001-Apply-patch-to-fix-CVE-2016-6318.patch new file mode 100644 index 0000000..6180c4b --- /dev/null +++ b/buildroot/package/cracklib/0001-Apply-patch-to-fix-CVE-2016-6318.patch @@ -0,0 +1,106 @@ +From 47e5dec521ab6243c9b249dd65b93d232d90d6b1 Mon Sep 17 00:00:00 2001 +From: Jan Dittberner +Date: Thu, 25 Aug 2016 17:13:49 +0200 +Subject: [PATCH] Apply patch to fix CVE-2016-6318 + +This patch fixes an issue with a stack-based buffer overflow whne +parsing large GECOS field. See +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6318 and +https://security-tracker.debian.org/tracker/CVE-2016-6318 for more +information. + +Signed-off-by: Stefan Sørensen +--- + +Status: upstream, not yet released. + + lib/fascist.c | 57 ++++++++++++++++++++++++++++++++----------------------- + 2 files changed, 34 insertions(+), 24 deletions(-) + +diff --git a/lib/fascist.c b/lib/fascist.c +index a996509..d4deb15 100644 +--- a/lib/fascist.c ++++ b/lib/fascist.c +@@ -502,7 +502,7 @@ FascistGecosUser(char *password, const char *user, const char *gecos) + char gbuffer[STRINGSIZE]; + char tbuffer[STRINGSIZE]; + char *uwords[STRINGSIZE]; +- char longbuffer[STRINGSIZE * 2]; ++ char longbuffer[STRINGSIZE]; + + if (gecos == NULL) + gecos = ""; +@@ -583,38 +583,47 @@ FascistGecosUser(char *password, const char *user, const char *gecos) + { + for (i = 0; i < j; i++) + { +- strcpy(longbuffer, uwords[i]); +- strcat(longbuffer, uwords[j]); +- +- if (GTry(longbuffer, password)) ++ if (strlen(uwords[i]) + strlen(uwords[j]) < STRINGSIZE) + { +- return _("it is derived from your password entry"); +- } ++ strcpy(longbuffer, uwords[i]); ++ strcat(longbuffer, uwords[j]); + +- strcpy(longbuffer, uwords[j]); +- strcat(longbuffer, uwords[i]); ++ if (GTry(longbuffer, password)) ++ { ++ return _("it is derived from your password entry"); ++ } + +- if (GTry(longbuffer, password)) +- { +- return _("it's derived from your password entry"); +- } ++ strcpy(longbuffer, uwords[j]); ++ strcat(longbuffer, uwords[i]); + +- longbuffer[0] = uwords[i][0]; +- longbuffer[1] = '\0'; +- strcat(longbuffer, uwords[j]); ++ if (GTry(longbuffer, password)) ++ { ++ return _("it's derived from your password entry"); ++ } ++ } + +- if (GTry(longbuffer, password)) ++ if (strlen(uwords[j]) < STRINGSIZE - 1) + { +- return _("it is derivable from your password entry"); ++ longbuffer[0] = uwords[i][0]; ++ longbuffer[1] = '\0'; ++ strcat(longbuffer, uwords[j]); ++ ++ if (GTry(longbuffer, password)) ++ { ++ return _("it is derivable from your password entry"); ++ } + } + +- longbuffer[0] = uwords[j][0]; +- longbuffer[1] = '\0'; +- strcat(longbuffer, uwords[i]); +- +- if (GTry(longbuffer, password)) ++ if (strlen(uwords[i]) < STRINGSIZE - 1) + { +- return _("it's derivable from your password entry"); ++ longbuffer[0] = uwords[j][0]; ++ longbuffer[1] = '\0'; ++ strcat(longbuffer, uwords[i]); ++ ++ if (GTry(longbuffer, password)) ++ { ++ return _("it's derivable from your password entry"); ++ } + } + } + } +-- +2.9.3 + diff --git a/buildroot/package/cracklib/0002-Fix-a-buffer-overflow-processing-long-words.patch b/buildroot/package/cracklib/0002-Fix-a-buffer-overflow-processing-long-words.patch new file mode 100644 index 0000000..63525cc --- /dev/null +++ b/buildroot/package/cracklib/0002-Fix-a-buffer-overflow-processing-long-words.patch @@ -0,0 +1,40 @@ +From 33d7fa4585247cd2247a1ffa032ad245836c6edb Mon Sep 17 00:00:00 2001 +From: Jan Dittberner +Date: Thu, 25 Aug 2016 17:17:53 +0200 +Subject: [PATCH] Fix a buffer overflow processing long words + +A buffer overflow processing long words has been discovered. This commit +applies the patch from +https://build.opensuse.org/package/view_file/Base:System/cracklib/0004-overflow-processing-long-words.patch +by Howard Guo. + +See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835386 and +http://www.openwall.com/lists/oss-security/2016/08/23/8 + +Signed-off-by: Stefan Sørensen +--- + +Status: upstream, not yet released. + + lib/rules.c | 5 ++--- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/lib/rules.c b/lib/rules.c +index d193cc0..3a2aa46 100644 +--- a/lib/rules.c ++++ b/lib/rules.c +@@ -434,9 +434,8 @@ Mangle(input, control) /* returns a pointer to a controlled Mangle */ + { + int limit; + register char *ptr; +- static char area[STRINGSIZE]; +- char area2[STRINGSIZE]; +- area[0] = '\0'; ++ static char area[STRINGSIZE * 2] = {0}; ++ char area2[STRINGSIZE * 2] = {0}; + strcpy(area, input); + + for (ptr = control; *ptr; ptr++) +-- +2.9.3 + diff --git a/buildroot/package/cracklib/0003-Force-grep-to-treat-the-input-as-text-when-formattin.patch b/buildroot/package/cracklib/0003-Force-grep-to-treat-the-input-as-text-when-formattin.patch new file mode 100644 index 0000000..b05a69c --- /dev/null +++ b/buildroot/package/cracklib/0003-Force-grep-to-treat-the-input-as-text-when-formattin.patch @@ -0,0 +1,30 @@ +From d27062fe7a520d5791f7a56d175a5cb6a39bae61 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20S=C3=B8rensen?= +Date: Tue, 18 Apr 2017 12:00:39 +0200 +Subject: [PATCH] Force grep to treat the input as text when formatting word + files. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Stefan Sørensen +--- + util/cracklib-format | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util/cracklib-format b/util/cracklib-format +index 1d7be5b..b1de8e8 100644 +--- a/util/cracklib-format ++++ b/util/cracklib-format +@@ -4,7 +4,7 @@ + # into cracklib-packer + # + gzip -cdf "$@" | +- grep -v '^\(#\|$\)' | ++ grep -a -v '^\(#\|$\)' | + tr '[A-Z]' '[a-z]' | + tr -cd '\012[a-z][0-9]' | + env LC_ALL=C sort -u +-- +2.9.3 + diff --git a/buildroot/package/cracklib/Config.in b/buildroot/package/cracklib/Config.in new file mode 100644 index 0000000..4a0f43f --- /dev/null +++ b/buildroot/package/cracklib/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_CRACKLIB + bool "cracklib" + help + CrackLib tests passwords to determine whether they match + certain security-oriented characteristics, with the purpose + of stopping users from choosing passwords that are easy to + guess. CrackLib performs several tests on passwords: it + tries to generate words from a username and gecos entry and + checks those words against the password; it checks for + simplistic patterns in passwords; and it checks for the + password in a dictionary. + + https://github.com/cracklib/cracklib + +if BR2_PACKAGE_CRACKLIB + +config BR2_PACKAGE_CRACKLIB_TOOLS + bool "install tools" + help + Install cracklib command line tools for creating dicts. + +config BR2_PACKAGE_CRACKLIB_FULL_DICT + bool "full dict" + help + Install the full cracklib dict (requires about 8Mb extra + target space). + +endif diff --git a/buildroot/package/cracklib/cracklib.hash b/buildroot/package/cracklib/cracklib.hash new file mode 100644 index 0000000..3038a47 --- /dev/null +++ b/buildroot/package/cracklib/cracklib.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 17cf76943de272fd579ed831a1fd85339b393f8d00bf9e0d17c91e972f583343 cracklib-2.9.6.tar.gz +sha256 27973245225eeb9d0090e97f3dea4197dec99b64d9d3a791a60298f3b021824c cracklib-words-2.9.6.gz diff --git a/buildroot/package/cracklib/cracklib.mk b/buildroot/package/cracklib/cracklib.mk new file mode 100644 index 0000000..2fa3d3b --- /dev/null +++ b/buildroot/package/cracklib/cracklib.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# cracklib +# +################################################################################ + +CRACKLIB_VERSION = 2.9.6 +CRACKLIB_SITE = https://github.com/cracklib/cracklib/releases/download/cracklib-$(CRACKLIB_VERSION) +CRACKLIB_LICENSE = LGPL-2.1 +CRACKLIB_LICENSE_FILES = COPYING.LIB +CRACKLIB_INSTALL_STAGING = YES +CRACKLIB_DEPENDENCIES = host-cracklib + +ifeq ($(BR2_PACKAGE_ZLIB),y) +CRACKLIB_CONF_OPTS += --with-zlib +CRACKLIB_DEPENDENCIES += zlib +else +CRACKLIB_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_PYTHON),y) +CRACKLIB_CONF_OPTS += --with-python +CRACKLIB_DEPENDENCIES += python +else +CRACKLIB_CONF_OPTS += --without-python +endif + +HOST_CRACKLIB_CONF_OPTS += --without-python --without-zlib + +ifeq ($(BR2_PACKAGE_CRACKLIB_FULL_DICT),y) +CRACKLIB_EXTRA_DOWNLOADS = cracklib-words-$(CRACKLIB_VERSION).gz +CRACKLIB_DICT_SOURCE = $(DL_DIR)/cracklib-words-$(CRACKLIB_VERSION).gz +else +CRACKLIB_DICT_SOURCE = $(@D)/dicts/cracklib-small +endif + +ifeq ($(BR2_PACKAGE_CRACKLIB_TOOLS),) +define CRACKLIB_REMOVE_TOOLS + rm -f $(TARGET_DIR)/usr/sbin/*cracklib* +endef +CRACKLIB_POST_INSTALL_TARGET_HOOKS += CRACKLIB_REMOVE_TOOLS +endif + +define CRACKLIB_BUILD_DICT + $(HOST_MAKE_ENV) cracklib-format $(CRACKLIB_DICT_SOURCE) | \ + $(HOST_MAKE_ENV) cracklib-packer $(TARGET_DIR)/usr/share/cracklib/pw_dict + rm $(TARGET_DIR)/usr/share/cracklib/cracklib-small +endef +CRACKLIB_POST_INSTALL_TARGET_HOOKS += CRACKLIB_BUILD_DICT + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/cramfs/0001-endian.patch b/buildroot/package/cramfs/0001-endian.patch new file mode 100644 index 0000000..b2eda5a --- /dev/null +++ b/buildroot/package/cramfs/0001-endian.patch @@ -0,0 +1,288 @@ +Index: cramfs-1.1/mkcramfs.c +=================================================================== +--- cramfs-1.1.orig/mkcramfs.c 2002-02-20 09:03:32.000000000 +0100 ++++ cramfs-1.1/mkcramfs.c 2011-09-09 15:11:00.980895119 +0200 +@@ -93,6 +93,7 @@ + static int opt_verbose = 0; + static char *opt_image = NULL; + static char *opt_name = NULL; ++static int swap_endian = 0; + + static int warn_dev, warn_gid, warn_namelen, warn_skip, warn_size, warn_uid; + +@@ -130,6 +131,8 @@ + " -i file insert a file image into the filesystem (requires >= 2.4.0)\n" + " -n name set name of cramfs filesystem\n" + " -p pad by %d bytes for boot code\n" ++ " -l litte endian filesystem\n" ++ " -b big endian filesystem\n" + " -s sort directory entries (old option, ignored)\n" + " -v be more verbose\n" + " -z make explicit holes (requires >= 2.3.39)\n" +@@ -372,6 +375,50 @@ + return totalsize; + } + ++/* routines to swap endianness/bitfields in inode/superblock block data */ ++static void fix_inode(struct cramfs_inode *inode) ++{ ++#define wswap(x) (((x)>>24) | (((x)>>8)&0xff00) | (((x)&0xff00)<<8) | (((x)&0xff)<<24)) ++ /* attempt #2 */ ++ inode->mode = (inode->mode >> 8) | ((inode->mode&0xff)<<8); ++ inode->uid = (inode->uid >> 8) | ((inode->uid&0xff)<<8); ++ inode->size = (inode->size >> 16) | (inode->size&0xff00) | ++ ((inode->size&0xff)<<16); ++ ((u32*)inode)[2] = wswap(inode->offset | (inode->namelen<<26)); ++} ++ ++static void fix_offset(struct cramfs_inode *inode, u32 offset) ++{ ++ u32 tmp = wswap(((u32*)inode)[2]); ++ ((u32*)inode)[2] = wswap((offset >> 2) | (tmp&0xfc000000)); ++} ++ ++static void fix_block_pointer(u32 *p) ++{ ++ *p = wswap(*p); ++} ++ ++static void fix_super(struct cramfs_super *super) ++{ ++ u32 *p = (u32*)super; ++ ++ /* fix superblock fields */ ++ p[0] = wswap(p[0]); /* magic */ ++ p[1] = wswap(p[1]); /* size */ ++ p[2] = wswap(p[2]); /* flags */ ++ p[3] = wswap(p[3]); /* future */ ++ ++ /* fix filesystem info fields */ ++ p = (u32*)&super->fsid; ++ p[0] = wswap(p[0]); /* crc */ ++ p[1] = wswap(p[1]); /* edition */ ++ p[2] = wswap(p[2]); /* blocks */ ++ p[3] = wswap(p[3]); /* files */ ++ ++ fix_inode(&super->root); ++#undef wswap ++} ++ + /* Returns sizeof(struct cramfs_super), which includes the root inode. */ + static unsigned int write_superblock(struct entry *root, char *base, int size) + { +@@ -405,6 +452,7 @@ + super->root.gid = root->gid; + super->root.size = root->size; + super->root.offset = offset >> 2; ++ if (swap_endian) fix_super(super); + + return offset; + } +@@ -419,7 +467,10 @@ + if (offset >= (1 << (2 + CRAMFS_OFFSET_WIDTH))) { + die(MKFS_ERROR, 0, "filesystem too big"); + } +- inode->offset = (offset >> 2); ++ if (swap_endian) ++ fix_offset(inode, offset); ++ else ++ inode->offset = (offset >> 2); + } + + /* +@@ -515,6 +566,7 @@ + stack_entries++; + } + entry = entry->next; ++ if (swap_endian) fix_inode(inode); + } + + /* +@@ -609,6 +661,7 @@ + } + + *(u32 *) (base + offset) = curr; ++ if (swap_endian) fix_block_pointer((u32*)(base + offset)); + offset += 4; + } while (size); + +@@ -699,7 +752,7 @@ + progname = argv[0]; + + /* command line options */ +- while ((c = getopt(argc, argv, "hEe:i:n:psvz")) != EOF) { ++ while ((c = getopt(argc, argv, "hEe:i:n:psvzlb")) != EOF) { + switch (c) { + case 'h': + usage(MKFS_OK); +@@ -727,6 +780,18 @@ + opt_pad = PAD_SIZE; + fslen_ub += PAD_SIZE; + break; ++ case 'b': ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++ swap_endian = 1; ++ printf("Swapping filesystem endian-ness\n"); ++#endif ++ break; ++ case 'l': ++#if __BYTE_ORDER == __BIG_ENDIAN ++ swap_endian = 1; ++ printf("Swapping filesystem endian-ness\n"); ++#endif ++ break; + case 's': + /* old option, ignored */ + break; +Index: cramfs-1.1/cramfsck.c +=================================================================== +--- cramfs-1.1.orig/cramfsck.c 2002-02-23 01:00:42.000000000 +0100 ++++ cramfs-1.1/cramfsck.c 2011-09-09 15:10:06.810894275 +0200 +@@ -30,6 +30,7 @@ + * 2000/07/15: Daniel Quinlan (initial support for block devices) + * 2002/01/10: Daniel Quinlan (additional checks, test more return codes, + * use read if mmap fails, standardize messages) ++ * 2004/09/01: Alfonso Acosta (Add swapping support) + */ + + /* compile-time options */ +@@ -53,6 +54,7 @@ + #define _LINUX_STRING_H_ + #include + #include ++#include + #include + + /* Exit codes used by fsck-type programs */ +@@ -73,6 +75,7 @@ + static char *filename; /* ROM image filename */ + struct cramfs_super super; /* just find the cramfs superblock once */ + static int opt_verbose = 0; /* 1 = verbose (-v), 2+ = very verbose (-vv) */ ++static int need_swapping = 0; /* fs and host dont have the same endianness */ + #ifdef INCLUDE_FS_TESTS + static int opt_extract = 0; /* extract cramfs (-x) */ + static char *extract_dir = "root"; /* extraction directory (-x) */ +@@ -84,6 +87,9 @@ + static unsigned long start_data = ~0UL; /* start of the data (256 MB = max) */ + static unsigned long end_data = 0; /* end of the data */ + ++/* access 32 byte variables */ ++#define CRAMFS_32(x) (need_swapping ? bswap_32(x) : x) ++ + /* Guarantee access to at least 8kB at a time */ + #define ROMBUFFER_BITS 13 + #define ROMBUFFERSIZE (1 << ROMBUFFER_BITS) +@@ -165,20 +171,34 @@ + if (super.magic == CRAMFS_MAGIC) { + *start = 0; + } ++ else if (super.magic == bswap_32(CRAMFS_MAGIC)) { ++ *start = 0; ++ need_swapping = 1; ++ } ++ + else if (*length >= (PAD_SIZE + sizeof(super))) { + lseek(fd, PAD_SIZE, SEEK_SET); + if (read(fd, &super, sizeof(super)) != sizeof(super)) { + die(FSCK_ERROR, 1, "read failed: %s", filename); + } +- if (super.magic == CRAMFS_MAGIC) { ++ if (super.magic == CRAMFS_32(CRAMFS_MAGIC)) { + *start = PAD_SIZE; + } + } + + /* superblock tests */ +- if (super.magic != CRAMFS_MAGIC) { ++ if (super.magic != CRAMFS_32(CRAMFS_MAGIC)) { + die(FSCK_UNCORRECTED, 0, "superblock magic not found"); + } ++ if (need_swapping){ ++ super.size = bswap_32(super.size); ++ super.flags = bswap_32(super.flags); ++ super.future = bswap_32(super.future); ++ super.fsid.crc = bswap_32(super.fsid.crc); ++ super.fsid.edition = bswap_32(super.fsid.edition); ++ super.fsid.blocks = bswap_32(super.fsid.blocks); ++ super.fsid.files = bswap_32(super.fsid.files); ++ } + if (super.flags & ~CRAMFS_SUPPORTED_FLAGS) { + die(FSCK_ERROR, 0, "unsupported filesystem features"); + } +@@ -213,7 +233,10 @@ + die(FSCK_USAGE, 0, "unable to test CRC: old cramfs format"); + #endif /* not INCLUDE_FS_TESTS */ + } +- ++ else if (need_swapping) { ++ /* crc checking in this case would mean translating the whole file */ ++ return; ++ } + crc = crc32(0L, Z_NULL, 0); + + buf = mmap(NULL, super.size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); +@@ -298,12 +321,23 @@ + + static struct cramfs_inode *cramfs_iget(struct cramfs_inode * i) + { ++#define wswap(x) (((x)>>24) | (((x)>>8)&0xff00) | (((x)&0xff00)<<8) | (((x)&0xff)<<24)) + struct cramfs_inode *inode = malloc(sizeof(struct cramfs_inode)); + + if (!inode) { + die(FSCK_ERROR, 1, "malloc failed"); + } +- *inode = *i; ++ if(!need_swapping) { ++ *inode = *i; ++ } ++ else { ++ inode->mode=bswap_16(i->mode); ++ inode->uid=bswap_16(i->uid); ++ inode->size=bswap_32(i->size << 8); ++ inode->gid=i->gid; ++ inode->namelen = bswap_32(((u32*)i)[2]) >> 26; ++ inode->offset = bswap_32(((u32*)i)[2]) & 0x3FFFFFFF; ++ } + return inode; + } + +@@ -322,9 +356,9 @@ + */ + static struct cramfs_inode *read_super(void) + { +- unsigned long offset = super.root.offset << 2; +- +- if (!S_ISDIR(super.root.mode)) ++ struct cramfs_inode *root = cramfs_iget(&super.root); ++ unsigned long offset = root->offset << 2; ++ if (!S_ISDIR(root->mode)) + die(FSCK_UNCORRECTED, 0, "root inode is not directory"); + if (!(super.flags & CRAMFS_FLAG_SHIFTED_ROOT_OFFSET) && + ((offset != sizeof(struct cramfs_super)) && +@@ -332,7 +366,7 @@ + { + die(FSCK_UNCORRECTED, 0, "bad root offset (%lu)", offset); + } +- return cramfs_iget(&super.root); ++ return root; + } + + static int uncompress_block(void *src, int len) +@@ -364,7 +398,7 @@ + + do { + unsigned long out = PAGE_CACHE_SIZE; +- unsigned long next = *(u32 *) romfs_read(offset); ++ unsigned long next = CRAMFS_32(*(u32 *) romfs_read(offset)); + + if (next > end_data) { + end_data = next; +@@ -525,7 +559,7 @@ + { + unsigned long offset = i->offset << 2; + unsigned long curr = offset + 4; +- unsigned long next = *(u32 *) romfs_read(offset); ++ unsigned long next = CRAMFS_32(*(u32 *) romfs_read(offset)); + unsigned long size; + + if (offset == 0) { diff --git a/buildroot/package/cramfs/0002-cygwin_IO.patch b/buildroot/package/cramfs/0002-cygwin_IO.patch new file mode 100644 index 0000000..8be333f --- /dev/null +++ b/buildroot/package/cramfs/0002-cygwin_IO.patch @@ -0,0 +1,15 @@ +Index: cramfs-1.1/cramfsck.c +=================================================================== +--- cramfs-1.1.orig/cramfsck.c 2011-09-09 15:10:06.000000000 +0200 ++++ cramfs-1.1/cramfsck.c 2011-09-09 15:13:49.950897747 +0200 +@@ -57,6 +57,10 @@ + #include + #include + ++#ifdef __CYGWIN__ ++#define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) ++#endif /* __CYGWIN__ */ ++ + /* Exit codes used by fsck-type programs */ + #define FSCK_OK 0 /* No errors */ + #define FSCK_NONDESTRUCT 1 /* File system errors corrected */ diff --git a/buildroot/package/cramfs/0003-fix-missing-types.patch b/buildroot/package/cramfs/0003-fix-missing-types.patch new file mode 100644 index 0000000..8961100 --- /dev/null +++ b/buildroot/package/cramfs/0003-fix-missing-types.patch @@ -0,0 +1,17 @@ +mkcramfs; loff_t is guarded by _GNU_SOURCE + +Although already properly done in cramfsck, it was missing in mkcramfs. + +Signed-off-by: "Yann E. MORIN" + +diff -durN cramfs-1.1.orig/mkcramfs.c cramfs-1.1/mkcramfs.c +--- cramfs-1.1.orig/mkcramfs.c 2015-08-05 22:31:16.830543096 +0200 ++++ cramfs-1.1/mkcramfs.c 2015-08-05 22:33:33.136289744 +0200 +@@ -22,6 +22,7 @@ + * If you change the disk format of cramfs, please update fs/cramfs/README. + */ + ++#define _GNU_SOURCE + #include + #include + #include diff --git a/buildroot/package/cramfs/Config.in b/buildroot/package/cramfs/Config.in new file mode 100644 index 0000000..b2a0c6c --- /dev/null +++ b/buildroot/package/cramfs/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_CRAMFS + bool "cramfs" + select BR2_PACKAGE_ZLIB + help + cramfs is a compressed read-only filesystem. This package + contains the tools to generate and check a cramfs filesystem. + + http://sourceforge.net/projects/cramfs/ diff --git a/buildroot/package/cramfs/Config.in.host b/buildroot/package/cramfs/Config.in.host new file mode 100644 index 0000000..53b43d4 --- /dev/null +++ b/buildroot/package/cramfs/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_CRAMFS + bool "host cramfs" + help + cramfs is a compressed read-only filesystem. This package + contains the tools to generate and check a cramfs filesystem. + + http://sourceforge.net/projects/cramfs/ diff --git a/buildroot/package/cramfs/cramfs.hash b/buildroot/package/cramfs/cramfs.hash new file mode 100644 index 0000000..b8c5f5f --- /dev/null +++ b/buildroot/package/cramfs/cramfs.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 133caca2c4e7c64106555154ee0ff693f5cf5beb9421ce2eb86baee997d22368 cramfs-1.1.tar.gz diff --git a/buildroot/package/cramfs/cramfs.mk b/buildroot/package/cramfs/cramfs.mk new file mode 100644 index 0000000..70010e8 --- /dev/null +++ b/buildroot/package/cramfs/cramfs.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# cramfs +# +################################################################################ + +CRAMFS_VERSION = 1.1 +CRAMFS_SITE = http://downloads.sourceforge.net/project/cramfs/cramfs/$(CRAMFS_VERSION) +CRAMFS_LICENSE = GPL-2.0+ +CRAMFS_LICENSE_FILES = COPYING + +CRAMFS_DEPENDENCIES = zlib +HOST_CRAMFS_DEPENDENCIES = host-zlib + +define CRAMFS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) +endef + +define CRAMFS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/mkcramfs $(TARGET_DIR)/usr/bin/mkcramfs + $(INSTALL) -D -m 755 $(@D)/cramfsck $(TARGET_DIR)/usr/bin/cramfsck +endef + +define HOST_CRAMFS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) CFLAGS="$(HOST_CFLAGS) -Wall -O2 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS="$(HOST_LDFLAGS)" -C $(@D) +endef + +define HOST_CRAMFS_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/mkcramfs $(HOST_DIR)/bin/mkcramfs + $(INSTALL) -D -m 755 $(@D)/cramfsck $(HOST_DIR)/bin/cramfsck +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/crda/0001-crda-support-python-3-in-utils-key2pub.py.patch b/buildroot/package/crda/0001-crda-support-python-3-in-utils-key2pub.py.patch new file mode 100644 index 0000000..99eb11c --- /dev/null +++ b/buildroot/package/crda/0001-crda-support-python-3-in-utils-key2pub.py.patch @@ -0,0 +1,271 @@ +From 797f2836c48f9ba2446629ae4b6867ca1a5ea512 Mon Sep 17 00:00:00 2001 +From: Taahir Ahmed +Date: Wed, 30 Mar 2016 11:23:54 -0300 +Subject: [PATCH 1/2] crda: support python 3 in utils/key2pub.py + +utils/key2pub.py can now be run under either python 2.7 or python 3.x. +This required some minor syntactical changes as well as switching from +M2Crypto to pycrypto, since M2Crypto doesn't support python 3.x. + +In addition, some errors in the generated source file keys-ssl.h are +fixed: + + * The correct OpenSSL header for BN_ULONG is included. + + * The generated constants are given the 'ull' suffix to prevent + warnings about constants that are too large. + +[Gustavo: don't call /utils/key2pub.py since that doesn't compute] + +Signed-off-by: Gustavo Zacarias +--- +Status: submitted upstream by author but not (yet) accepted +URL: http://www.spinics.net/lists/linux-wireless/msg138936.html + + Makefile | 2 +- + utils/key2pub.py | 146 ++++++++++++++++++++++++++++--------------------------- + 2 files changed, 75 insertions(+), 73 deletions(-) + +diff --git a/Makefile b/Makefile +index 1f25509..523a96e 100644 +--- a/Makefile ++++ b/Makefile +@@ -112,7 +112,7 @@ $(REG_BIN): + keys-%.c: utils/key2pub.py $(wildcard $(PUBKEY_DIR)/*.pem) + $(NQ) ' GEN ' $@ + $(NQ) ' Trusted pubkeys:' $(wildcard $(PUBKEY_DIR)/*.pem) +- $(Q)./utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@ ++ $(Q) python utils/key2pub.py --$* $(wildcard $(PUBKEY_DIR)/*.pem) $@ + + $(LIBREG): regdb.h reglib.h reglib.c + $(NQ) ' CC ' $@ +diff --git a/utils/key2pub.py b/utils/key2pub.py +index 3e84cd2..c76cbbb 100755 +--- a/utils/key2pub.py ++++ b/utils/key2pub.py +@@ -1,126 +1,128 @@ + #!/usr/bin/env python + ++import io + import sys + try: +- from M2Crypto import RSA +-except ImportError, e: +- sys.stderr.write('ERROR: Failed to import the "M2Crypto" module: %s\n' % e.message) +- sys.stderr.write('Please install the "M2Crypto" Python module.\n') +- sys.stderr.write('On Debian GNU/Linux the package is called "python-m2crypto".\n') +- sys.exit(1) ++ from Crypto.PublicKey import RSA ++except ImportError as e: ++ sys.stderr.write('ERROR: Failed to import the "Crypto.PublicKey" module: %s\n' % e.message) ++ sys.stderr.write('Please install the "Crypto.PublicKey" Python module.\n') ++ sys.stderr.write('On Debian GNU/Linux the package is called "python-crypto".\n') ++ sys.exit(1) ++ ++def bitwise_collect(value, radix_bits): ++ words = [] ++ radix_mask = (1 << radix_bits) - 1 ++ while value != 0: ++ words.append(value & radix_mask) ++ value >>= radix_bits ++ return words + + def print_ssl_64(output, name, val): +- while val[0] == '\0': +- val = val[1:] +- while len(val) % 8: +- val = '\0' + val +- vnew = [] +- while len(val): +- vnew.append((val[0], val[1], val[2], val[3], val[4], val[5], val[6], val[7])) +- val = val[8:] +- vnew.reverse() +- output.write('static BN_ULONG %s[%d] = {\n' % (name, len(vnew))) ++ # OpenSSL expects 64-bit words given least-significant-word first. ++ vwords = bitwise_collect(val, 64) ++ ++ output.write(u'static BN_ULONG {}[] = {{\n'.format(name)) + idx = 0 +- for v1, v2, v3, v4, v5, v6, v7, v8 in vnew: ++ for vword in vwords: + if not idx: +- output.write('\t') +- output.write('0x%.2x%.2x%.2x%.2x%.2x%.2x%.2x%.2x, ' % (ord(v1), ord(v2), ord(v3), ord(v4), ord(v5), ord(v6), ord(v7), ord(v8))) ++ output.write(u'\t') ++ output.write(u'0x{:016x}ULL, '.format(vword)) + idx += 1 + if idx == 2: + idx = 0 +- output.write('\n') ++ output.write(u'\n') + if idx: +- output.write('\n') +- output.write('};\n\n') ++ output.write(u'\n') ++ output.write(u'};\n\n') + + def print_ssl_32(output, name, val): +- while val[0] == '\0': +- val = val[1:] +- while len(val) % 4: +- val = '\0' + val +- vnew = [] +- while len(val): +- vnew.append((val[0], val[1], val[2], val[3], )) +- val = val[4:] +- vnew.reverse() +- output.write('static BN_ULONG %s[%d] = {\n' % (name, len(vnew))) ++ # OpenSSL expects 32-bit words given least-significant-word first. ++ vwords = bitwise_collect(val, 32) ++ ++ output.write(u'static BN_ULONG {}[] = {{\n'.format(name)) + idx = 0 +- for v1, v2, v3, v4 in vnew: ++ for vword in vwords: + if not idx: +- output.write('\t') +- output.write('0x%.2x%.2x%.2x%.2x, ' % (ord(v1), ord(v2), ord(v3), ord(v4))) ++ output.write(u'\t') ++ output.write(u'0x{:08x}, '.format(vword)) + idx += 1 + if idx == 4: + idx = 0 +- output.write('\n') ++ output.write(u'\n') + if idx: +- output.write('\n') +- output.write('};\n\n') ++ output.write(u'\n') ++ output.write(u'};\n\n') + + def print_ssl(output, name, val): ++ ++ output.write(u'#include \n') ++ output.write(u'#include \n') ++ + import struct +- output.write('#include \n') + if len(struct.pack('@L', 0)) == 8: + return print_ssl_64(output, name, val) + else: + return print_ssl_32(output, name, val) + + def print_ssl_keys(output, n): +- output.write(r''' ++ output.write(u''' + struct pubkey { + struct bignum_st e, n; + }; + +-#define KEY(data) { \ +- .d = data, \ +- .top = sizeof(data)/sizeof(data[0]), \ ++#define KEY(data) { \\ ++ .d = data, \\ ++ .top = sizeof(data)/sizeof(data[0]), \\ + } + +-#define KEYS(e,n) { KEY(e), KEY(n), } ++#define KEYS(e,n) { KEY(e), KEY(n), } + + static struct pubkey keys[] = { + ''') + for n in xrange(n + 1): +- output.write(' KEYS(e_%d, n_%d),\n' % (n, n)) +- output.write('};\n') ++ output.write(u' KEYS(e_{0}, n_{0}),\n'.format(n)) ++ output.write(u'};\n') + pass + + def print_gcrypt(output, name, val): +- output.write('#include \n') +- while val[0] == '\0': +- val = val[1:] +- output.write('static const uint8_t %s[%d] = {\n' % (name, len(val))) ++ # gcrypt expects 8-bit words most-significant-word first ++ vwords = bitwise_collect(val, 8) ++ vwords.reverse() ++ ++ output.write(u'#include \n') ++ output.write(u'static const uint8_t %s[%d] = {\n' % (name, len(vwords))) + idx = 0 +- for v in val: ++ for vword in vwords: + if not idx: +- output.write('\t') +- output.write('0x%.2x, ' % ord(v)) ++ output.write(u'\t') ++ output.write(u'0x{:02x}, '.format(vword)) + idx += 1 + if idx == 8: + idx = 0 +- output.write('\n') ++ output.write(u'\n') + if idx: +- output.write('\n') +- output.write('};\n\n') ++ output.write(u'\n') ++ output.write(u'};\n\n') + + def print_gcrypt_keys(output, n): +- output.write(r''' ++ output.write(u''' + struct key_params { + const uint8_t *e, *n; + uint32_t len_e, len_n; + }; + +-#define KEYS(_e, _n) { \ +- .e = _e, .len_e = sizeof(_e), \ +- .n = _n, .len_n = sizeof(_n), \ ++#define KEYS(_e, _n) { \\ ++ .e = _e, .len_e = sizeof(_e), \\ ++ .n = _n, .len_n = sizeof(_n), \\ + } + + static const struct key_params keys[] = { + ''') +- for n in xrange(n + 1): +- output.write(' KEYS(e_%d, n_%d),\n' % (n, n)) +- output.write('};\n') +- ++ for n in range(n + 1): ++ output.write(u' KEYS(e_{0}, n_{0}),\n'.format(n)) ++ output.write(u'};\n') ++ + + modes = { + '--ssl': (print_ssl, print_ssl_keys), +@@ -135,21 +137,21 @@ except IndexError: + mode = None + + if not mode in modes: +- print 'Usage: %s [%s] input-file... output-file' % (sys.argv[0], '|'.join(modes.keys())) ++ print('Usage: {} [{}] input-file... output-file'.format(sys.argv[0], '|'.join(modes.keys()))) + sys.exit(2) + +-output = open(outfile, 'w') ++output = io.open(outfile, 'w') + + # load key + idx = 0 + for f in files: +- try: +- key = RSA.load_pub_key(f) +- except RSA.RSAError: +- key = RSA.load_key(f) + +- modes[mode][0](output, 'e_%d' % idx, key.e[4:]) +- modes[mode][0](output, 'n_%d' % idx, key.n[4:]) ++ key_contents = io.open(f, 'rb').read() ++ key = RSA.importKey(key_contents) ++ ++ modes[mode][0](output, 'e_{}'.format(idx), key.e) ++ modes[mode][0](output, 'n_{}'.format(idx), key.n) ++ + idx += 1 + + modes[mode][1](output, idx - 1) +-- +2.7.3 + diff --git a/buildroot/package/crda/0002-drop-ldconfig-call.patch b/buildroot/package/crda/0002-drop-ldconfig-call.patch new file mode 100644 index 0000000..f09e258 --- /dev/null +++ b/buildroot/package/crda/0002-drop-ldconfig-call.patch @@ -0,0 +1,15 @@ +Drop ldconfig call, it's useless for cross-compiling. + +Signed-off-by: Gustavo Zacarias + +diff -Nura crda-3.18.orig/Makefile crda-3.18/Makefile +--- crda-3.18.orig/Makefile 2015-02-18 10:34:23.841259401 -0300 ++++ crda-3.18/Makefile 2015-02-18 10:35:10.524201452 -0300 +@@ -127,7 +127,6 @@ + $(NQ) ' INSTALL libreg' + $(Q)mkdir -p $(DESTDIR)/$(LIBDIR) + $(Q)cp $(LIBREG) $(DESTDIR)/$(LIBDIR)/ +- $(Q)ldconfig + + %.o: %.c regdb.h $(LIBREG) + $(NQ) ' CC ' $@ diff --git a/buildroot/package/crda/0003-drop-werror.patch b/buildroot/package/crda/0003-drop-werror.patch new file mode 100644 index 0000000..072e3fc --- /dev/null +++ b/buildroot/package/crda/0003-drop-werror.patch @@ -0,0 +1,37 @@ +From f38253e066dee96b148be1b79a6b4a696ee0ae0b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Sun, 1 May 2016 10:05:48 +0200 +Subject: [PATCH] drop werror +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Building crda with GCC 6 fails because of all compiler warnings are treated as +errors. Disable the compiler option '-Werror': + +keys-gcrypt.c:94:32: error: ‘keys’ defined but not used [-Werror=unused-const-variable=] + static const struct key_params keys[] = { + ^~~~ +cc1: all warnings being treated as errors + +Signed-off-by: Jörg Krause +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 74f1172..e9b417f 100644 +--- a/Makefile ++++ b/Makefile +@@ -26,7 +26,7 @@ PUBKEY_DIR?=pubkeys + RUNTIME_PUBKEY_DIR?=/etc/wireless-regdb/pubkeys + + CFLAGS += -O2 -fpic +-CFLAGS += -std=gnu99 -Wall -Werror -pedantic ++CFLAGS += -std=gnu99 -Wall -pedantic + CFLAGS += -Wall -g + LDLIBREG += -lreg + LDLIBS += $(LDLIBREG) +-- +2.8.2 + diff --git a/buildroot/package/crda/Config.in b/buildroot/package/crda/Config.in new file mode 100644 index 0000000..b9a2613 --- /dev/null +++ b/buildroot/package/crda/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_CRDA + bool "crda" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBNL + # regdb is a runtime dependency + select BR2_PACKAGE_WIRELESS_REGDB + help + Central Regulatory Domain Agent. + + This package provides a Central Regulatory Domain Agent (CRDA) + to be used by the Linux kernel cf80211 wireless subsystem to + query and apply the regulatory domain settings wireless + devices may operate within for a given location. + + http://linuxwireless.org/en/developers/Regulatory/CRDA + +comment "crda needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/crda/crda.hash b/buildroot/package/crda/crda.hash new file mode 100644 index 0000000..45b9d20 --- /dev/null +++ b/buildroot/package/crda/crda.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/software/network/crda/sha256sums.asc +sha256 43fcb9679f8b75ed87ad10944a506292def13e4afb194afa7aa921b01e8ecdbf crda-3.18.tar.xz diff --git a/buildroot/package/crda/crda.mk b/buildroot/package/crda/crda.mk new file mode 100644 index 0000000..df879f6 --- /dev/null +++ b/buildroot/package/crda/crda.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# crda +# +################################################################################ + +CRDA_VERSION = 3.18 +CRDA_SOURCE = crda-$(CRDA_VERSION).tar.xz +CRDA_SITE = $(BR2_KERNEL_MIRROR)/software/network/crda +CRDA_DEPENDENCIES = host-pkgconf host-python-pycrypto libnl libgcrypt +CRDA_LICENSE = ISC +CRDA_LICENSE_FILES = LICENSE + +define CRDA_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) all_noverify -C $(@D) +endef + +define CRDA_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) install -C $(@D) DESTDIR=$(TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/crudini/Config.in b/buildroot/package/crudini/Config.in new file mode 100644 index 0000000..e4e26e5 --- /dev/null +++ b/buildroot/package/crudini/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_CRUDINI + bool "crudini" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_INIPARSE # runtime + help + A utility for handling ini files from the command line and + shell scripts + + https://pypi.python.org/pypi/crudini diff --git a/buildroot/package/crudini/crudini.hash b/buildroot/package/crudini/crudini.hash new file mode 100644 index 0000000..9279847 --- /dev/null +++ b/buildroot/package/crudini/crudini.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=9b8500c90467f0a61c714fbe852c2a66, sha256 locally computed +md5 9b8500c90467f0a61c714fbe852c2a66 crudini-0.9.tar.gz +sha256 10512a5a2f7b54b42e48a1d00f0c6398947c2ba6c264b9fdef86677f0e949fd3 crudini-0.9.tar.gz diff --git a/buildroot/package/crudini/crudini.mk b/buildroot/package/crudini/crudini.mk new file mode 100644 index 0000000..c03f55c --- /dev/null +++ b/buildroot/package/crudini/crudini.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# crudini +# +################################################################################ + +CRUDINI_VERSION = 0.9 +CRUDINI_SITE = https://pypi.python.org/packages/b5/65/5588903472f30fa01ca4951be00c03a317b27bac4cd1e945bd16b2c1b6d3 +CRUDINI_SETUP_TYPE = setuptools +CRUDINI_LICENSE = GPL-2.0 +CRUDINI_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/buildroot/package/cryptodev-linux/cryptodev-linux.hash b/buildroot/package/cryptodev-linux/cryptodev-linux.hash new file mode 100644 index 0000000..48d608e --- /dev/null +++ b/buildroot/package/cryptodev-linux/cryptodev-linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 90a4c5e46d7d5fcc0c6155f1add824e73c27de9b1ff0b7fe2017a104cf9398dd cryptodev-linux-0a54e38b264d9a3bed74c642a61b88191660d0f8.tar.gz diff --git a/buildroot/package/cryptodev-linux/cryptodev-linux.mk b/buildroot/package/cryptodev-linux/cryptodev-linux.mk new file mode 100644 index 0000000..dacb29d --- /dev/null +++ b/buildroot/package/cryptodev-linux/cryptodev-linux.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# cryptodev-linux +# +################################################################################ + +CRYPTODEV_LINUX_VERSION = 0a54e38b264d9a3bed74c642a61b88191660d0f8 +CRYPTODEV_LINUX_SITE = $(call github,cryptodev-linux,cryptodev-linux,$(CRYPTODEV_LINUX_VERSION)) +CRYPTODEV_LINUX_INSTALL_STAGING = YES +CRYPTODEV_LINUX_LICENSE = GPL-2.0+ +CRYPTODEV_LINUX_LICENSE_FILES = COPYING + +CRYPTODEV_LINUX_PROVIDES = cryptodev + +define CRYPTODEV_LINUX_MODULE_GEN_VERSION_H + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) version.h +endef +CRYPTODEV_LINUX_PRE_BUILD_HOOKS += CRYPTODEV_LINUX_MODULE_GEN_VERSION_H + +define CRYPTODEV_LINUX_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 644 $(@D)/crypto/cryptodev.h \ + $(STAGING_DIR)/usr/include/crypto/cryptodev.h +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/cryptodev/Config.in b/buildroot/package/cryptodev/Config.in new file mode 100644 index 0000000..d1e6449 --- /dev/null +++ b/buildroot/package/cryptodev/Config.in @@ -0,0 +1,50 @@ +comment "cryptodev needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_CRYPTODEV + bool "cryptodev" + depends on BR2_LINUX_KERNEL + help + Select the desired cryptodev implementation. + +if BR2_PACKAGE_CRYPTODEV + +choice + prompt "cryptodev variant" + default BR2_PACKAGE_CRYPTODEV_LINUX if !BR2_microblaze + help + Select the cryptodev implementation. + +config BR2_PACKAGE_CRYPTODEV_LINUX + bool "cryptodev-linux" + depends on !BR2_microblaze + select BR2_PACKAGE_HAS_CRYPTODEV + help + Cryptodev-linux is a device that allows access to Linux kernel + cryptographic drivers; thus allowing userspace applications + to take advantage of hardware accelerators. + + http://cryptodev-linux.org/index.html + +config BR2_PACKAGE_OCF_LINUX + bool "ocf-linux" + select BR2_PACKAGE_HAS_CRYPTODEV + help + OCF-Linux is a Linux port of the OpenBSD/FreeBSD Cryptographic + Framework (OCF). This port aims to bring full asynchronous + HW/SW crypto acceleration to the Linux kernel and applications + running under Linux. + + http://ocf-linux.sourceforge.net/ + +endchoice + +config BR2_PACKAGE_HAS_CRYPTODEV + bool + +config BR2_PACKAGE_PROVIDES_CRYPTODEV + string + default "cryptodev-linux" if BR2_PACKAGE_CRYPTODEV_LINUX + default "ocf-linux" if BR2_PACKAGE_OCF_LINUX + +endif diff --git a/buildroot/package/cryptodev/cryptodev.mk b/buildroot/package/cryptodev/cryptodev.mk new file mode 100644 index 0000000..969d1bd --- /dev/null +++ b/buildroot/package/cryptodev/cryptodev.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# cryptodev +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/buildroot/package/cryptopp/0001-Fix-possible-DoS-in-ASN.1-decoders-CVE-2016-9939.patch b/buildroot/package/cryptopp/0001-Fix-possible-DoS-in-ASN.1-decoders-CVE-2016-9939.patch new file mode 100644 index 0000000..2d0f1d9 --- /dev/null +++ b/buildroot/package/cryptopp/0001-Fix-possible-DoS-in-ASN.1-decoders-CVE-2016-9939.patch @@ -0,0 +1,69 @@ +From 3d9181d7bdd8e491f745dbc9e34bd20b6f6da069 Mon Sep 17 00:00:00 2001 +From: Gergely Nagy +Date: Wed, 14 Dec 2016 13:19:01 +0100 +Subject: [PATCH] Fix possible DoS in ASN.1 decoders (CVE-2016-9939) + +Signed-off-by: Peter Korsgaard +--- + asn.cpp | 10 ++++++++++ + asn.h | 2 ++ + 2 files changed, 12 insertions(+) + +diff --git a/asn.cpp b/asn.cpp +index 297ff01..2e923ef 100644 +--- a/asn.cpp ++++ b/asn.cpp +@@ -123,6 +123,8 @@ size_t BERDecodeOctetString(BufferedTransformation &bt, SecByteBlock &str) + size_t bc; + if (!BERLengthDecode(bt, bc)) + BERDecodeError(); ++ if (bc > bt.MaxRetrievable()) ++ BERDecodeError(); + + str.New(bc); + if (bc != bt.Get(str, bc)) +@@ -139,6 +141,8 @@ size_t BERDecodeOctetString(BufferedTransformation &bt, BufferedTransformation & + size_t bc; + if (!BERLengthDecode(bt, bc)) + BERDecodeError(); ++ if (bc > bt.MaxRetrievable()) ++ BERDecodeError(); + + bt.TransferTo(str, bc); + return bc; +@@ -161,6 +165,8 @@ size_t BERDecodeTextString(BufferedTransformation &bt, std::string &str, byte as + size_t bc; + if (!BERLengthDecode(bt, bc)) + BERDecodeError(); ++ if (bc > bt.MaxRetrievable()) ++ BERDecodeError(); + + SecByteBlock temp(bc); + if (bc != bt.Get(temp, bc)) +@@ -188,6 +194,10 @@ size_t BERDecodeBitString(BufferedTransformation &bt, SecByteBlock &str, unsigne + size_t bc; + if (!BERLengthDecode(bt, bc)) + BERDecodeError(); ++ if (bc == 0) ++ BERDecodeError(); ++ if (bc > bt.MaxRetrievable()) ++ BERDecodeError(); + + byte unused; + if (!bt.Get(unused)) +diff --git a/asn.h b/asn.h +index ed9de52..33f0dd0 100644 +--- a/asn.h ++++ b/asn.h +@@ -498,6 +498,8 @@ void BERDecodeUnsigned(BufferedTransformation &in, T &w, byte asnTag = INTEGER, + bool definite = BERLengthDecode(in, bc); + if (!definite) + BERDecodeError(); ++ if (bc > in.MaxRetrievable()) ++ BERDecodeError(); + + SecByteBlock buf(bc); + +-- +2.10.2 + diff --git a/buildroot/package/cryptopp/cryptopp.hash b/buildroot/package/cryptopp/cryptopp.hash new file mode 100644 index 0000000..577638c --- /dev/null +++ b/buildroot/package/cryptopp/cryptopp.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 a75ef486fe3128008bbb201efee3dcdcffbe791120952910883b26337ec32c34 cryptopp565.zip diff --git a/buildroot/package/cryptopp/cryptopp.mk b/buildroot/package/cryptopp/cryptopp.mk new file mode 100644 index 0000000..4b121ae --- /dev/null +++ b/buildroot/package/cryptopp/cryptopp.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# cryptopp +# +################################################################################ + +CRYPTOPP_VERSION = 5.6.5 +CRYPTOPP_SOURCE = cryptopp$(subst .,,$(CRYPTOPP_VERSION)).zip +CRYPTOPP_SITE = http://cryptopp.com/ +CRYPTOPP_LICENSE = BSL-1.0 +CRYPTOPP_LICENSE_FILES = License.txt +CRYPTOPP_INSTALL_STAGING = YES + +define HOST_CRYPTOPP_EXTRACT_CMDS + $(UNZIP) $(DL_DIR)/$(CRYPTOPP_SOURCE) -d $(@D) +endef + +HOST_CRYPTOPP_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + CXXFLAGS="$(HOST_CXXFLAGS) -fPIC" + +define HOST_CRYPTOPP_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CRYPTOPP_MAKE_OPTS) shared +endef + +define HOST_CRYPTOPP_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/cryptsetup/Config.in b/buildroot/package/cryptsetup/Config.in new file mode 100644 index 0000000..7322a4b --- /dev/null +++ b/buildroot/package/cryptsetup/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_CRYPTSETUP + bool "cryptsetup" + depends on BR2_TOOLCHAIN_HAS_THREADS # lvm2 + depends on BR2_USE_MMU # lvm2 + depends on !BR2_STATIC_LIBS # lvm2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + select BR2_PACKAGE_POPT + select BR2_PACKAGE_LVM2 + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_JSON_C + help + This tool helps manipulate dm-crypt and luks partitions for + on-disk encryption. + + https://gitlab.com/cryptsetup/cryptsetup + +comment "cryptsetup needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/cryptsetup/Config.in.host b/buildroot/package/cryptsetup/Config.in.host new file mode 100644 index 0000000..9e31df5 --- /dev/null +++ b/buildroot/package/cryptsetup/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_CRYPTSETUP + bool "host cryptsetup" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + This tool helps manipulate dm-crypt and luks partitions for + on-disk encryption. + + https://gitlab.com/cryptsetup/cryptsetup diff --git a/buildroot/package/cryptsetup/cryptsetup.hash b/buildroot/package/cryptsetup/cryptsetup.hash new file mode 100644 index 0000000..c54b0dc --- /dev/null +++ b/buildroot/package/cryptsetup/cryptsetup.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/utils/cryptsetup/v2.0/sha256sums.asc +sha256 adc623b9e3e3ab5c14145b8baf21b741e513ee5bf90d2b4d85a745c2f05da199 cryptsetup-2.0.0.tar.xz +sha256 45670cce8b6a0ddd66c8016cd8ccef6cd71f35717cbacc7f1e895b3855207b33 COPYING +sha256 8c33cc37871654ec7ed87e6fbb896c8cf33ef5ef05b1611a5aed857596ffafa5 COPYING.LGPL diff --git a/buildroot/package/cryptsetup/cryptsetup.mk b/buildroot/package/cryptsetup/cryptsetup.mk new file mode 100644 index 0000000..0d8480b --- /dev/null +++ b/buildroot/package/cryptsetup/cryptsetup.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# cryptsetup +# +################################################################################ + +CRYPTSETUP_VERSION_MAJOR = 2.0 +CRYPTSETUP_VERSION = $(CRYPTSETUP_VERSION_MAJOR).0 +CRYPTSETUP_SOURCE = cryptsetup-$(CRYPTSETUP_VERSION).tar.xz +CRYPTSETUP_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/cryptsetup/v$(CRYPTSETUP_VERSION_MAJOR) +CRYPTSETUP_DEPENDENCIES = lvm2 popt util-linux host-pkgconf json-c \ + $(TARGET_NLS_DEPENDENCIES) +CRYPTSETUP_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (library) +CRYPTSETUP_LICENSE_FILES = COPYING COPYING.LGPL +CRYPTSETUP_INSTALL_STAGING = YES +CRYPTSETUP_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)" + +# cryptsetup uses libgcrypt by default, but can be configured to use OpenSSL +# or kernel crypto modules instead +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +CRYPTSETUP_DEPENDENCIES += libgcrypt +CRYPTSETUP_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +CRYPTSETUP_CONF_OPTS += --with-crypto_backend=gcrypt +else ifeq ($(BR2_PACKAGE_OPENSSL),y) +CRYPTSETUP_DEPENDENCIES += openssl +CRYPTSETUP_CONF_OPTS += --with-crypto_backend=openssl +else +CRYPTSETUP_CONF_OPTS += --with-crypto_backend=kernel +endif + +HOST_CRYPTSETUP_DEPENDENCIES = \ + host-pkgconf \ + host-lvm2 \ + host-popt \ + host-util-linux \ + host-json-c \ + host-openssl + +HOST_CRYPTSETUP_CONF_OPTS = --with-crypto-backend=openssl + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/ctorrent/0001-fix-musl-build.patch b/buildroot/package/ctorrent/0001-fix-musl-build.patch new file mode 100644 index 0000000..3ba80be --- /dev/null +++ b/buildroot/package/ctorrent/0001-fix-musl-build.patch @@ -0,0 +1,20 @@ +[PATCH] Fix compilation on musl + +Using the ssize_t typedef requires including . + +See : https://sourceforge.net/p/dtorrent/patches/3/ + +Signed-off-by: Brendan Heading +Upstream-status: submitted +--- +diff -Nur a/compat.c b/compat.c +--- a/compat.c 2015-07-29 18:22:24.658415171 +0100 ++++ b/compat.c 2015-07-29 18:36:21.752576311 +0100 +@@ -63,6 +63,7 @@ + + #ifndef HAVE_STRNSTR + #include ++#include + /* FUNCTION PROGRAMER: Siberiaic Sang */ + char *strnstr(const char *haystack, const char *needle, size_t haystacklen) + { diff --git a/buildroot/package/ctorrent/Config.in b/buildroot/package/ctorrent/Config.in new file mode 100644 index 0000000..97552e7 --- /dev/null +++ b/buildroot/package/ctorrent/Config.in @@ -0,0 +1,13 @@ +comment "ctorrent needs a toolchain w/ C++" + 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/ diff --git a/buildroot/package/ctorrent/ctorrent.hash b/buildroot/package/ctorrent/ctorrent.hash new file mode 100644 index 0000000..6dcb590 --- /dev/null +++ b/buildroot/package/ctorrent/ctorrent.hash @@ -0,0 +1,2 @@ +# From http://sourceforge.net/projects/dtorrent/files/dtorrent/3.3.2/ +sha1 d4e221f0292268f80e2430ce9d451dd64cf1ffaa ctorrent-dnh3.3.2.tar.gz diff --git a/buildroot/package/ctorrent/ctorrent.mk b/buildroot/package/ctorrent/ctorrent.mk new file mode 100644 index 0000000..959e543 --- /dev/null +++ b/buildroot/package/ctorrent/ctorrent.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# ctorrent +# +################################################################################ + +CTORRENT_VERSION = dnh3.3.2 +CTORRENT_SITE = http://www.rahul.net/dholmes/ctorrent +CTORRENT_LICENSE = GPL-2.0 +CTORRENT_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +CTORRENT_CONF_OPTS += --with-ssl=yes +CTORRENT_DEPENDENCIES += openssl +else +CTORRENT_CONF_OPTS += --with-ssl=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/cups-filters/0001-Replace-relative-linking-with-absolute-linking.patch b/buildroot/package/cups-filters/0001-Replace-relative-linking-with-absolute-linking.patch new file mode 100644 index 0000000..e4b35cd --- /dev/null +++ b/buildroot/package/cups-filters/0001-Replace-relative-linking-with-absolute-linking.patch @@ -0,0 +1,46 @@ +From c26b4c3550557442890f2f790d4f8b61a3734c1f Mon Sep 17 00:00:00 2001 +From: Olivier Schonken +Date: Thu, 8 Mar 2018 12:32:23 +0200 +Subject: [PATCH] install: don't use ln -r + +Oldish enterprise-class distributions have too old versions of +coreutils, with ln not supporting -r. + +So we fake it. + +ln -r would create minimalist relative paths, but they are not +trivial to generate. Instead, we always create paths relative to the +root, i.e.: + + ln -s -r /usr/bin/foo /usr/sbin/foo + +would create: /usr/sbin/foo -> ../bin/foo +while we do : /usr/sbin/foo -> ../../usr/bin/foo + +Signed-off-by: Olivier Schonken +--- + Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index d959227..b49914a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -998,11 +998,11 @@ install-exec-hook: + $(INSTALL) -d -m 755 $(DESTDIR)$(pkgfilterdir) + $(INSTALL) -d -m 755 $(DESTDIR)$(pkgbackenddir) + if ENABLE_FOOMATIC +- $(LN_S) -r -f $(DESTDIR)$(pkgfilterdir)/foomatic-rip $(DESTDIR)$(bindir) ++ $(LN_S) -f ../..$(pkgfilterdir)/foomatic-rip $(DESTDIR)$(bindir) + endif + if ENABLE_DRIVERLESS +- $(LN_S) -r -f $(DESTDIR)$(pkgppdgendir)/driverless $(DESTDIR)$(bindir) +- $(LN_S) -r -f $(DESTDIR)$(pkgppdgendir)/driverless $(DESTDIR)$(pkgbackenddir) ++ $(LN_S) -f ../..$(pkgppdgendir)/driverless $(DESTDIR)$(bindir) ++ $(LN_S) -f ../..$(pkgppdgendir)/driverless $(DESTDIR)$(pkgbackenddir) + endif + if ENABLE_BRAILLE + $(LN_S) -f imagetobrf $(DESTDIR)$(pkgfilterdir)/imagetoubrl +-- +2.14.1 + diff --git a/buildroot/package/cups-filters/Config.in b/buildroot/package/cups-filters/Config.in new file mode 100644 index 0000000..5badf0e --- /dev/null +++ b/buildroot/package/cups-filters/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_CUPS_FILTERS + bool "cups-filters" + # needs fork() + depends on BR2_USE_MMU + depends on BR2_INSTALL_LIBSTDCPP # qpdf + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_PACKAGE_CUPS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LCMS2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_QPDF + help + This project provides backends, filters, and other software + that was once part of the core CUPS distribution but is no + longer maintained by Apple Inc. In addition it contains + additional filters and software developed independently of + Apple, especially filters for the PDF-centric printing + workflow introduced by OpenPrinting and a daemon to browse + Bonjour broadcasts of remote CUPS printers to make these + printers available locally and to provide backward + compatibility to the old CUPS broadcasting and browsing of + CUPS 1.5.x and older. From CUPS 1.6.0 on, this package is + required for using printer drivers with CUPS under Linux. + With CUPS 1.5.x and earlier this package can be used + optionally to switch over to PDF-based printing. + + http://www.linuxfoundation.org/collaborate/workgroups/openprinting/cups-filters + +comment "cups-filters needs a toolchain w/ wchar, C++, threads and dynamic library, gcc >= 4.8" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/buildroot/package/cups-filters/cups-filters.hash b/buildroot/package/cups-filters/cups-filters.hash new file mode 100644 index 0000000..7bb0081 --- /dev/null +++ b/buildroot/package/cups-filters/cups-filters.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 aad95e35033154f54639923b439e0657fc9f616b9eac7490df89514362551f98 cups-filters-1.20.3.tar.gz +sha256 24cc91478ca68d6d982dfd86181210ad5f0931ec431bdb740793e3d6555fdcd8 COPYING diff --git a/buildroot/package/cups-filters/cups-filters.mk b/buildroot/package/cups-filters/cups-filters.mk new file mode 100644 index 0000000..131e582 --- /dev/null +++ b/buildroot/package/cups-filters/cups-filters.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# cups-filters +# +################################################################################ + +CUPS_FILTERS_VERSION = 1.20.3 +CUPS_FILTERS_SITE = http://openprinting.org/download/cups-filters +CUPS_FILTERS_LICENSE = GPL-2.0, GPL-2.0+, GPL-3.0, GPL-3.0+, LGPL-2, LGPL-2.1+, MIT, BSD-4-Clause +CUPS_FILTERS_LICENSE_FILES = COPYING + +CUPS_FILTERS_DEPENDENCIES = cups libglib2 lcms2 qpdf fontconfig freetype jpeg + +CUPS_FILTERS_CONF_OPTS = --disable-imagefilters \ + --disable-mutool \ + --disable-foomatic \ + --with-cups-config=$(STAGING_DIR)/usr/bin/cups-config \ + --with-sysroot=$(STAGING_DIR) \ + --with-pdftops=pdftops \ + --with-jpeg + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +CUPS_FILTERS_CONF_OPTS += --with-png +CUPS_FILTERS_DEPENDENCIES += libpng +else +CUPS_FILTERS_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +CUPS_FILTERS_CONF_OPTS += --with-tiff +CUPS_FILTERS_DEPENDENCIES += tiff +else +CUPS_FILTERS_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +CUPS_FILTERS_CONF_OPTS += --enable-dbus +CUPS_FILTERS_DEPENDENCIES += dbus +else +CUPS_FILTERS_CONF_OPTS += --disable-dbus +endif + +# avahi support requires avahi-client, which needs avahi-daemon and dbus +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy) +CUPS_FILTERS_DEPENDENCIES += avahi +CUPS_FILTERS_CONF_OPTS += --enable-avahi +else +CUPS_FILTERS_CONF_OPTS += --disable-avahi +endif + +ifeq ($(BR2_PACKAGE_GHOSTSCRIPT),y) +CUPS_FILTERS_DEPENDENCIES += ghostscript +CUPS_FILTERS_CONF_OPTS += --enable-ghostscript +else +CUPS_FILTERS_CONF_OPTS += --disable-ghostscript +endif + +ifeq ($(BR2_PACKAGE_IJS),y) +CUPS_FILTERS_DEPENDENCIES += ijs +CUPS_FILTERS_CONF_OPTS += --enable-ijs +else +CUPS_FILTERS_CONF_OPTS += --disable-ijs +endif + +ifeq ($(BR2_PACKAGE_POPPLER),y) +CUPS_FILTERS_DEPENDENCIES += poppler +CUPS_FILTERS_CONF_OPTS += --enable-poppler +else +CUPS_FILTERS_CONF_OPTS += --disable-poppler +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/cups/0001-Remove-man-from-BUILDDIRS-in-configure.patch b/buildroot/package/cups/0001-Remove-man-from-BUILDDIRS-in-configure.patch new file mode 100644 index 0000000..30002d3 --- /dev/null +++ b/buildroot/package/cups/0001-Remove-man-from-BUILDDIRS-in-configure.patch @@ -0,0 +1,26 @@ +From 6bc1d15250841cf17d307cfb4f35c960c23d8797 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 29 May 2016 19:31:50 +0200 +Subject: [PATCH] Remove man from BUILDDIRS in configure + +Signed-off-by: Bernd Kuhls +--- + config-scripts/cups-common.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4 +index fbba715..77d0f5c 100644 +--- a/config-scripts/cups-common.m4 ++++ b/config-scripts/cups-common.m4 +@@ -446,7 +446,7 @@ AC_ARG_WITH(components, [ --with-components set components to build: + + case "$COMPONENTS" in + all) +- BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale man doc examples templates" ++ BUILDDIRS="filter backend berkeley cgi-bin monitor notifier ppdc scheduler systemv conf data desktop locale doc examples templates" + ;; + + core) +-- +2.8.1 + diff --git a/buildroot/package/cups/0002-Do-not-use-genstrings.patch b/buildroot/package/cups/0002-Do-not-use-genstrings.patch new file mode 100644 index 0000000..325483e --- /dev/null +++ b/buildroot/package/cups/0002-Do-not-use-genstrings.patch @@ -0,0 +1,36 @@ +From 193c8d8c55a3478ca5c9e161ce581e5794098c6d Mon Sep 17 00:00:00 2001 +From: Olivier Schonken +Date: Thu, 21 Jan 2016 23:04:49 +0100 +Subject: [PATCH] Do not use genstrings + +Using cross compiled genstrings while cross-compiling will break +compilation. Genstrings is still compiled because some power users +might want to do ppd compilation on their target machine, and for that +they would need to use the native compiled genstrings binary, to +generate a sample.c file for their target + +Signed-off-by: Olivier Schonken +[Thomas: completely remove call to genstrings rather than commenting +it, remove useless and potentially confusing 'echo' before the +genstrings call.] +Signed-off-by: Thomas Petazzoni +--- + ppdc/Makefile | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/ppdc/Makefile b/ppdc/Makefile +index 68bf6b2..d57a0c9 100644 +--- a/ppdc/Makefile ++++ b/ppdc/Makefile +@@ -242,8 +242,6 @@ genstrings: genstrings.o libcupsppdc.a ../cups/$(LIBCUPSSTATIC) \ + $(CXX) $(ARCHFLAGS) $(LDFLAGS) -o genstrings genstrings.o \ + libcupsppdc.a ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \ + $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ) +- echo Generating localization strings... +- ./genstrings >sample.c + + + # +-- +2.6.4 + diff --git a/buildroot/package/cups/0003-Sanitize-the-installation-process.patch b/buildroot/package/cups/0003-Sanitize-the-installation-process.patch new file mode 100644 index 0000000..75a6848 --- /dev/null +++ b/buildroot/package/cups/0003-Sanitize-the-installation-process.patch @@ -0,0 +1,131 @@ +From e35f809c435c224954a5c7bff3f5729c5b3bc0ba Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 21 Jan 2016 23:21:06 +0100 +Subject: [PATCH] Sanitize the installation process + +The installation process does two things that are not convenient when +cross-compiling: + + - It uses install's -s option to strip binaries, but this option uses + the host strip and not the cross strip, which fails at stripping + binaries. In addition, we do not necessarily want cups to strip its + binaries, we may want to keep the debugging symbols. + + - It enforces ownership (user, group) which isn't possible since + "make install" isn't executed as root when cross-compiling. + + - It installs many files and directories with permissions that + prevent overwriting those files/directories, which meant calling + "make install" twice was failing. + +[Olivier: tweak the patch for 2.2.4 release] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Olivier Schonken +--- + Makedefs.in | 12 ++++++------ + conf/Makefile | 6 +++--- + notifier/Makefile | 2 +- + scheduler/Makefile | 15 +++++++-------- + 4 files changed, 17 insertions(+), 18 deletions(-) + +diff --git a/Makedefs.in b/Makedefs.in +index 3afef0a..3e4f1bd 100644 +--- a/Makedefs.in ++++ b/Makedefs.in +@@ -40,14 +40,14 @@ SHELL = /bin/sh + # Installation programs... + # + +-INSTALL_BIN = @LIBTOOL_INSTALL@ $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ @INSTALL_STRIP@ +-INSTALL_COMPDATA = $(INSTALL) -c -m 444 @INSTALL_GZIP@ ++INSTALL_BIN = @LIBTOOL_INSTALL@ $(INSTALL) -c -m 755 ++INSTALL_COMPDATA = $(INSTALL) -c -m 644 @INSTALL_GZIP@ + INSTALL_CONFIG = $(INSTALL) -c -m @CUPS_CONFIG_FILE_PERM@ +-INSTALL_DATA = $(INSTALL) -c -m 444 ++INSTALL_DATA = $(INSTALL) -c -m 644 + INSTALL_DIR = $(INSTALL) -d +-INSTALL_LIB = @LIBTOOL_INSTALL@ $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ @INSTALL_STRIP@ +-INSTALL_MAN = $(INSTALL) -c -m 444 +-INSTALL_SCRIPT = $(INSTALL) -c -m @CUPS_EXE_FILE_PERM@ ++INSTALL_LIB = @LIBTOOL_INSTALL@ $(INSTALL) -c -m 755 ++INSTALL_MAN = $(INSTALL) -c -m 644 ++INSTALL_SCRIPT = $(INSTALL) -c -m 755 + + # + # Default user, group, and system groups for the scheduler... +diff --git a/conf/Makefile b/conf/Makefile +index 933d7d9..6ac5e19 100644 +--- a/conf/Makefile ++++ b/conf/Makefile +@@ -72,11 +72,11 @@ install: all install-data install-headers install-libs install-exec + install-data: + for file in $(KEEP); do \ + if test -r $(SERVERROOT)/$$file ; then \ +- $(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.N ; \ ++ $(INSTALL_CONFIG) $$file $(SERVERROOT)/$$file.N ; \ + else \ +- $(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT) ; \ ++ $(INSTALL_CONFIG) $$file $(SERVERROOT) ; \ + fi ; \ +- $(INSTALL_CONFIG) -g $(CUPS_GROUP) $$file $(SERVERROOT)/$$file.default; \ ++ $(INSTALL_CONFIG) $$file $(SERVERROOT)/$$file.default; \ + done + $(INSTALL_DIR) -m 755 $(DATADIR)/mime + for file in $(REPLACE); do \ +diff --git a/notifier/Makefile b/notifier/Makefile +index 3206dd0..c34a4d7 100644 +--- a/notifier/Makefile ++++ b/notifier/Makefile +@@ -62,7 +62,7 @@ install: all install-data install-headers install-libs install-exec + # + + install-data: +- $(INSTALL_DIR) -m 775 -g $(CUPS_GROUP) $(CACHEDIR)/rss ++ $(INSTALL_DIR) -m 775 $(CACHEDIR)/rss + + + # +diff --git a/scheduler/Makefile b/scheduler/Makefile +index 251f017..25f2f5f 100644 +--- a/scheduler/Makefile ++++ b/scheduler/Makefile +@@ -146,28 +146,27 @@ install-data: + echo Creating $(SERVERBIN)/driver... + $(INSTALL_DIR) -m 755 $(SERVERBIN)/driver + echo Creating $(SERVERROOT)... +- $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT) ++ $(INSTALL_DIR) -m 755 $(SERVERROOT) + echo Creating $(SERVERROOT)/ppd... +- $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)/ppd ++ $(INSTALL_DIR) -m 755 $(SERVERROOT)/ppd + if test "x`uname`" != xDarwin; then \ + echo Creating $(SERVERROOT)/ssl...; \ +- $(INSTALL_DIR) -m 700 -g $(CUPS_GROUP) $(SERVERROOT)/ssl; \ ++ $(INSTALL_DIR) -m 700 $(SERVERROOT)/ssl; \ + fi + if test "$(STATEDIR)" != "$(SERVERROOT)"; then \ + echo Creating $(STATEDIR)...; \ + $(INSTALL_DIR) -m 755 $(STATEDIR); \ + fi + echo Creating $(STATEDIR)/certs... +- $(INSTALL_DIR) -m 511 -o $(CUPS_USER) -g $(CUPS_PRIMARY_SYSTEM_GROUP) \ +- $(STATEDIR)/certs ++ $(INSTALL_DIR) -m 711 $(STATEDIR)/certs + echo Creating $(LOGDIR)... + $(INSTALL_DIR) -m 755 $(LOGDIR) + echo Creating $(REQUESTS)... +- $(INSTALL_DIR) -m 710 -g $(CUPS_GROUP) $(REQUESTS) ++ $(INSTALL_DIR) -m 710 $(REQUESTS) + echo Creating $(REQUESTS)/tmp... +- $(INSTALL_DIR) -m 1770 -g $(CUPS_GROUP) $(REQUESTS)/tmp ++ $(INSTALL_DIR) -m 1770 $(REQUESTS)/tmp + echo Creating $(CACHEDIR)... +- $(INSTALL_DIR) -m 770 -g $(CUPS_GROUP) $(CACHEDIR) ++ $(INSTALL_DIR) -m 770 $(CACHEDIR) + if test "x$(INITDIR)" != x; then \ + echo Installing init scripts...; \ + $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/init.d; \ +-- +2.6.4 + diff --git a/buildroot/package/cups/0004-Remove-PIE-flags-from-the-build.patch b/buildroot/package/cups/0004-Remove-PIE-flags-from-the-build.patch new file mode 100644 index 0000000..ea4f0b4 --- /dev/null +++ b/buildroot/package/cups/0004-Remove-PIE-flags-from-the-build.patch @@ -0,0 +1,33 @@ +From b341a1e1fce48012fc5bcf39337488fd33210616 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 3 Jul 2016 12:20:21 +0200 +Subject: [PATCH] Remove PIE flags from the build + +Generating a statically linked binary built with PIE requires the +Scrt1.o file, which isn't part of Buildroot uClibc toolchains. To +solve this, we simply disable the PIE flags. + +[olivier tweak patch for 2.2.4] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Olivier Schonken +--- + Makedefs.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makedefs.in b/Makedefs.in +index 3afef0a..299b297 100644 +--- a/Makedefs.in ++++ b/Makedefs.in +@@ -148,7 +148,7 @@ IPPFIND_BIN = @IPPFIND_BIN@ + IPPFIND_MAN = @IPPFIND_MAN@ + LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \ + -L../scheduler @LDARCHFLAGS@ \ +- @LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM) ++ @LDFLAGS@ @RELROFLAGS@ $(OPTIM) + LINKCUPS = @LINKCUPS@ $(LIBGSSAPI) $(DNSSDLIBS) $(SSLLIBS) $(LIBZ) + LINKCUPSIMAGE = @LINKCUPSIMAGE@ + LIBS = $(LINKCUPS) $(COMMONLIBS) +-- +2.7.4 + diff --git a/buildroot/package/cups/Config.in b/buildroot/package/cups/Config.in new file mode 100644 index 0000000..e23f069 --- /dev/null +++ b/buildroot/package/cups/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_CUPS + bool "cups" + # needs libstdcpp for ppdc + depends on BR2_INSTALL_LIBSTDCPP + # needs threads for ippserver + depends on BR2_TOOLCHAIN_HAS_THREADS + # needs fork() + depends on BR2_USE_MMU + help + The Common Unix Printing System + + http://www.cups.org + +comment "cups needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/cups/cups.hash b/buildroot/package/cups/cups.hash new file mode 100644 index 0000000..d4f20b6 --- /dev/null +++ b/buildroot/package/cups/cups.hash @@ -0,0 +1,2 @@ +# Locally calculated: +sha256 a8795e2aa54dcfbdc9ff254a770f0d7154e35c981bca5b3369050c5193ab5a21 cups-2.2.5-source.tar.gz diff --git a/buildroot/package/cups/cups.mk b/buildroot/package/cups/cups.mk new file mode 100644 index 0000000..0726d8a --- /dev/null +++ b/buildroot/package/cups/cups.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# cups +# +################################################################################ + +CUPS_VERSION = 2.2.5 +CUPS_SOURCE = cups-$(CUPS_VERSION)-source.tar.gz +CUPS_SITE = https://github.com/apple/cups/releases/download/v$(CUPS_VERSION) +CUPS_LICENSE = GPL-2.0, LGPL-2.0 +CUPS_LICENSE_FILES = LICENSE.txt +CUPS_INSTALL_STAGING = YES +CUPS_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) DSTROOT=$(STAGING_DIR) install +CUPS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) DSTROOT=$(TARGET_DIR) install + +# Using autoconf, not autoheader, so we cannot use AUTORECONF = YES. +define CUPS_RUN_AUTOCONF + cd $(@D); $(HOST_DIR)/bin/autoconf -f +endef +CUPS_PRE_CONFIGURE_HOOKS += CUPS_RUN_AUTOCONF + +CUPS_CONF_OPTS = \ + --without-perl \ + --without-java \ + --without-php \ + --disable-gssapi \ + --libdir=/usr/lib +CUPS_CONFIG_SCRIPTS = cups-config +CUPS_DEPENDENCIES = \ + host-autoconf \ + host-pkgconf \ + $(if $(BR2_PACKAGE_ZLIB),zlib) + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +CUPS_CONF_OPTS += --with-systemd=/usr/lib/systemd/system \ + --enable-systemd +CUPS_DEPENDENCIES += systemd +else +CUPS_CONF_OPTS += --disable-systemd +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +CUPS_CONF_OPTS += --enable-dbus +CUPS_DEPENDENCIES += dbus +else +CUPS_CONF_OPTS += --disable-dbus +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +CUPS_CONF_OPTS += --enable-gnutls +CUPS_DEPENDENCIES += gnutls +else +CUPS_CONF_OPTS += --disable-gnutls +endif + +ifeq ($(BR2_PACKAGE_PYTHON),y) +CUPS_CONF_OPTS += --with-python +CUPS_DEPENDENCIES += python +else +CUPS_CONF_OPTS += --without-python +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +CUPS_CONF_OPTS += --enable-libusb +CUPS_DEPENDENCIES += libusb +else +CUPS_CONF_OPTS += --disable-libusb +endif + +ifeq ($(BR2_PACKAGE_LIBPAPER),y) +CUPS_CONF_OPTS += --enable-libpaper +CUPS_DEPENDENCIES += libpaper +else +CUPS_CONF_OPTS += --disable-libpaper +endif + +ifeq ($(BR2_PACKAGE_AVAHI),y) +CUPS_DEPENDENCIES += avahi +CUPS_CONF_OPTS += --enable-avahi +else +CUPS_CONF_OPTS += --disable-avahi +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/curlftpfs/0001-fix-CURLOPT_INFILESIZE.patch b/buildroot/package/curlftpfs/0001-fix-CURLOPT_INFILESIZE.patch new file mode 100644 index 0000000..dc83af0 --- /dev/null +++ b/buildroot/package/curlftpfs/0001-fix-CURLOPT_INFILESIZE.patch @@ -0,0 +1,13 @@ +Borrowed from the curlftpfs_0.9.2-5 Debian package. + +CURLOPT_INFILESIZE does not support -1 arg. This fix bug #556012. +--- curlftpfs-0.9.2/ftpfs.c.old 2009-12-13 14:12:25.000000000 +0100 ++++ curlftpfs-0.9.2/ftpfs.c 2009-12-13 14:12:32.000000000 +0100 +@@ -503,7 +503,6 @@ + + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_URL, fh->full_path); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_UPLOAD, 1); +- curl_easy_setopt_or_die(fh->write_conn, CURLOPT_INFILESIZE, -1); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READFUNCTION, write_data_bg); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_READDATA, fh); + curl_easy_setopt_or_die(fh->write_conn, CURLOPT_LOW_SPEED_LIMIT, 1); diff --git a/buildroot/package/curlftpfs/0002-free_ftpfs_file-memleak-fix.patch b/buildroot/package/curlftpfs/0002-free_ftpfs_file-memleak-fix.patch new file mode 100644 index 0000000..4966c9d --- /dev/null +++ b/buildroot/package/curlftpfs/0002-free_ftpfs_file-memleak-fix.patch @@ -0,0 +1,14 @@ +Borrowed from the curlftpfs_0.9.2-5 Debian package. + +Fix a memory leak. See Bug #587250. +--- a/ftpfs.c 2008-04-30 01:05:47.000000000 +0200 ++++ a/ftpfs.c.slesimple 2010-01-01 22:12:10.000000000 +0100 +@@ -615,6 +615,8 @@ static void free_ftpfs_file(struct ftpfs + sem_destroy(&fh->data_need); + sem_destroy(&fh->data_written); + sem_destroy(&fh->ready); ++ if (fh->buf.size) { buf_free(&fh->buf); } ++ if (fh->stream_buf.size) { buf_free(&fh->stream_buf); } + free(fh); + } + diff --git a/buildroot/package/curlftpfs/0003-nocache-memleak-fix.patch b/buildroot/package/curlftpfs/0003-nocache-memleak-fix.patch new file mode 100644 index 0000000..00a4dd6 --- /dev/null +++ b/buildroot/package/curlftpfs/0003-nocache-memleak-fix.patch @@ -0,0 +1,59 @@ +Borrowed from the curlftpfs_0.9.2-5 Debian package. + +Fix a memory leak when cache is disabled. Closes: #614347. +diff -ur curlftpfs-0.9.2/cache.c curlftpfs-0.9.2-olexat/cache.c +--- curlftpfs-0.9.2/cache.c 2008-04-30 01:03:09.000000000 +0200 ++++ curlftpfs-0.9.2-olexat/cache.c 2011-02-04 16:43:05.000000000 +0100 +@@ -25,7 +25,7 @@ + time_t last_cleaned; + }; + +-static struct cache cache; ++struct cache cache; + + struct node { + struct stat stat; +diff -ur curlftpfs-0.9.2/ftpfs-ls.c curlftpfs-0.9.2-olexat/ftpfs-ls.c +--- curlftpfs-0.9.2/ftpfs-ls.c 2008-04-23 12:55:41.000000000 +0200 ++++ curlftpfs-0.9.2-olexat/ftpfs-ls.c 2011-02-07 17:23:37.000000000 +0100 +@@ -25,6 +25,13 @@ + #include "charset_utils.h" + #include "ftpfs-ls.h" + ++struct cache { ++ int on; ++ char incomplete[]; ++}; ++ ++extern struct cache cache; ++ + static int parse_dir_unix(const char *line, + struct stat *sbuf, + char *file, +@@ -243,8 +256,10 @@ + reallink = g_strdup(link); + } + int linksize = strlen(reallink); +- cache_add_link(full_path, reallink, linksize+1); +- DEBUG(1, "cache_add_link: %s %s\n", full_path, reallink); ++ if (cache.on) { ++ cache_add_link(full_path, reallink, linksize+1); ++ DEBUG(1, "cache_add_link: %s %s\n", full_path, reallink); ++ } + if (linkbuf && linklen) { + if (linksize > linklen) linksize = linklen - 1; + strncpy(linkbuf, reallink, linksize); +@@ -257,8 +272,10 @@ + DEBUG(1, "filler: %s\n", file); + filler(h, file, &stat_buf); + } else { +- DEBUG(1, "cache_add_attr: %s\n", full_path); +- cache_add_attr(full_path, &stat_buf); ++ if (cache.on) { ++ DEBUG(1, "cache_add_attr: %s\n", full_path); ++ cache_add_attr(full_path, &stat_buf); ++ } + } + + DEBUG(2, "comparing %s %s\n", name, file); + diff --git a/buildroot/package/curlftpfs/0004-fix-musl-build-off-t.patch b/buildroot/package/curlftpfs/0004-fix-musl-build-off-t.patch new file mode 100644 index 0000000..9335230 --- /dev/null +++ b/buildroot/package/curlftpfs/0004-fix-musl-build-off-t.patch @@ -0,0 +1,39 @@ +Use off_t instead of __off_t + +__off_t is an internal C library type, which shouldn't be used by +applications. It is not defined by the musl C library, so use the +public off_t type instead. + +Signed-off-by: Thomas Petazzoni + +Index: b/ftpfs.c +=================================================================== +--- a/ftpfs.c ++++ b/ftpfs.c +@@ -687,7 +687,7 @@ + return ftpfs_getattr(path, &sbuf); + } + +-static __off_t test_size(const char* path) ++static off_t test_size(const char* path) + { + struct stat sbuf; + int err = ftpfs_getattr(path, &sbuf); +@@ -950,7 +950,7 @@ + + /* fix openoffice problem, truncating exactly to file length */ + +- __off_t size = (long long int)test_size(path); ++ off_t size = (long long int)test_size(path); + DEBUG(1, "ftpfs_truncate: %s check filesize=%lld\n", path, (long long int)size); + + if (offset == size) +@@ -978,7 +978,7 @@ + } + /* fix openoffice problem, truncating exactly to file length */ + +- __off_t size = test_size(path); ++ off_t size = test_size(path); + DEBUG(1, "ftpfs_ftruncate: %s check filesize=%lld\n", path, (long long int)size); + + if (offset == size) diff --git a/buildroot/package/curlftpfs/Config.in b/buildroot/package/curlftpfs/Config.in new file mode 100644 index 0000000..c8c432f --- /dev/null +++ b/buildroot/package/curlftpfs/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_CURLFTPFS + bool "curlftpfs (FUSE)" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse, glib2 + depends on BR2_USE_MMU # libfuse, glib2 + depends on !BR2_STATIC_LIBS # libfuse + select BR2_PACKAGE_LIBFUSE + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBCURL + help + CurlFtpFS is a filesystem for accessing FTP hosts based on + FUSE and libcurl. + + http://curlftpfs.sourceforge.net/ + +comment "curlftpfs needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/curlftpfs/curlftpfs.hash b/buildroot/package/curlftpfs/curlftpfs.hash new file mode 100644 index 0000000..a94fab1 --- /dev/null +++ b/buildroot/package/curlftpfs/curlftpfs.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 4eb44739c7078ba0edde177bdd266c4cfb7c621075f47f64c85a06b12b3c6958 curlftpfs-0.9.2.tar.gz diff --git a/buildroot/package/curlftpfs/curlftpfs.mk b/buildroot/package/curlftpfs/curlftpfs.mk new file mode 100644 index 0000000..584d01a --- /dev/null +++ b/buildroot/package/curlftpfs/curlftpfs.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# curlftpfs +# +################################################################################ + +CURLFTPFS_VERSION = 0.9.2 +CURLFTPFS_SITE = http://downloads.sourceforge.net/project/curlftpfs/curlftpfs/$(CURLFTPFS_VERSION) +CURLFTPFS_CONF_ENV = ac_cv_path__libcurl_config=$(STAGING_DIR)/usr/bin/curl-config +CURLFTPFS_LICENSE = GPL-2.0 +CURLFTPFS_LICENSE_FILES = COPYING +CURLFTPFS_DEPENDENCIES = \ + libglib2 libfuse openssl libcurl \ + $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_ENABLE_LOCALE),,libiconv) + +$(eval $(autotools-package)) diff --git a/buildroot/package/curlpp/Config.in b/buildroot/package/curlpp/Config.in new file mode 100644 index 0000000..a23e5d9 --- /dev/null +++ b/buildroot/package/curlpp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_CURLPP + bool "curlpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBCURL + help + cURLpp is a C++ wrapper for libcURL. + + http://www.curlpp.org/ + +comment "curlpp needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/buildroot/package/curlpp/curlpp.hash b/buildroot/package/curlpp/curlpp.hash new file mode 100644 index 0000000..2b14a23 --- /dev/null +++ b/buildroot/package/curlpp/curlpp.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 97e3819bdcffc3e4047b6ac57ca14e04af85380bd93afe314bee9dd5c7f46a0a v0.8.1.tar.gz + +# Hash for license files: +sha256 8b9e3afd4d06ad3c169e788e5187a3e9f4f35671e9a7322f7e74bea9643b5b5a doc/LICENSE diff --git a/buildroot/package/curlpp/curlpp.mk b/buildroot/package/curlpp/curlpp.mk new file mode 100644 index 0000000..7528855 --- /dev/null +++ b/buildroot/package/curlpp/curlpp.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# curlpp +# +################################################################################ + +CURLPP_VERSION = 0.8.1 +CURLPP_SITE = https://github.com/jpbarrette/curlpp/archive +CURLPP_SOURCE = v$(CURLPP_VERSION).tar.gz +CURLPP_LICENSE = MIT +CURLPP_LICENSE_FILES = doc/LICENSE +CURLPP_INSTALL_STAGING = YES +CURLPP_DEPENDENCIES = libcurl + +$(eval $(cmake-package)) diff --git a/buildroot/package/cvs/Config.in b/buildroot/package/cvs/Config.in new file mode 100644 index 0000000..e8f0606 --- /dev/null +++ b/buildroot/package/cvs/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_CVS + bool "cvs" + depends on BR2_USE_WCHAR + # needs fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_NCURSES + help + Concurrent Versions System - source code revision control + tools. + + http://www.nongnu.org/cvs/ + +if BR2_PACKAGE_CVS + +config BR2_PACKAGE_CVS_SERVER + bool "server support" + help + Enable cvs server code + +endif + +comment "cvs needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/cvs/cvs.hash b/buildroot/package/cvs/cvs.hash new file mode 100644 index 0000000..b386d88 --- /dev/null +++ b/buildroot/package/cvs/cvs.hash @@ -0,0 +1,3 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cvs/cvs_1.12.13-12%2Bsqueeze1.dsc +sha256 b5961c2476b996e5758fa5e22b60af085adca41164cac0d8f68a1d3b49d4e4f1 cvs_1.12.13.orig.tar.gz +sha256 d52a9232d9cf36302a150d782fc7e5b6f92f8115505ae8a7dc6acfc83e809d2f cvs_1.12.13-12+squeeze1.diff.gz diff --git a/buildroot/package/cvs/cvs.mk b/buildroot/package/cvs/cvs.mk new file mode 100644 index 0000000..6f28b4d --- /dev/null +++ b/buildroot/package/cvs/cvs.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# cvs +# +################################################################################ + +CVS_VERSION = 1.12.13 +CVS_SOURCE = cvs_$(CVS_VERSION).orig.tar.gz +CVS_PATCH = cvs_$(CVS_VERSION)-12+squeeze1.diff.gz +CVS_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cvs +CVS_DEPENDENCIES = ncurses + +CVS_CONF_ENV = cvs_cv_func_printf_ptr=yes + +CVS_CONFIGURE_ARGS = --disable-old-info-format-support +ifeq ($(BR2_PACKAGE_CVS_SERVER),y) +CVS_CONFIGURE_ARGS += --enable-server +else +CVS_CONFIGURE_ARGS += --disable-server +endif +ifeq ($(BR2_PACKAGE_ZLIB),y) +CVS_CONFIGURE_ARGS += --with-external-zlib +endif + +CVS_CONF_OPTS = $(CVS_CONFIGURE_ARGS) + +define CVS_BZIP_UNPACK + $(BZCAT) $(@D)/cvs-$(CVS_VERSION).tar.bz2 | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - + rm -f $(@D)/cvs-$(CVS_VERSION).tar.bz2 +endef + +CVS_POST_PATCH_HOOKS += CVS_BZIP_UNPACK + +ifneq ($(CVS_PATCH),) +define CVS_DEBIAN_PATCHES + if [ -d $(@D)/debian/patches ]; then \ + (cd $(@D)/debian/patches && for i in *; \ + do $(SED) 's,^\+\+\+ .*cvs-$(CVS_VERSION)/,+++ cvs-$(CVS_VERSION)/,' $$i; \ + done; \ + ); \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches \*; \ + fi +endef +endif + +CVS_POST_PATCH_HOOKS += CVS_DEBIAN_PATCHES + +define CVS_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/src/cvs $(TARGET_DIR)/usr/bin/cvs +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/cwiid/0001-wmdemo-fix-linking-by-adding-the-missing-lbluetooth-.patch b/buildroot/package/cwiid/0001-wmdemo-fix-linking-by-adding-the-missing-lbluetooth-.patch new file mode 100644 index 0000000..e1e4ec4 --- /dev/null +++ b/buildroot/package/cwiid/0001-wmdemo-fix-linking-by-adding-the-missing-lbluetooth-.patch @@ -0,0 +1,27 @@ +From af6bffb5b8b71e99e0f9bbbd2cf1fbd695a643c2 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 8 Dec 2012 13:32:40 +0100 +Subject: [PATCH 1/2] wmdemo: fix linking by adding the missing -lbluetooth to + LDLIBS + +Signed-off-by: Samuel Martin +--- + wmdemo/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/wmdemo/Makefile.in b/wmdemo/Makefile.in +index 56aed58..1eccc02 100644 +--- a/wmdemo/Makefile.in ++++ b/wmdemo/Makefile.in +@@ -8,7 +8,7 @@ SOURCES = wmdemo.c + + CFLAGS += -I@top_builddir@/libcwiid + LDFLAGS += -L@top_builddir@/libcwiid +-LDLIBS += -lcwiid ++LDLIBS += -lcwiid -lbluetooth + INST_DIR = @bindir@ + + include $(COMMON)/include/app.mak +-- +1.8.5.2 + diff --git a/buildroot/package/cwiid/0002-configure-make-wmgui-build-optional.patch b/buildroot/package/cwiid/0002-configure-make-wmgui-build-optional.patch new file mode 100644 index 0000000..f5eff33 --- /dev/null +++ b/buildroot/package/cwiid/0002-configure-make-wmgui-build-optional.patch @@ -0,0 +1,64 @@ +From dbb578450974db5decc24560da4aeaed838849a1 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Thu, 2 Jan 2014 14:03:07 +0100 +Subject: [PATCH 2/2] configure: make wmgui build optional + +So, make gtk-2 and glib2 dependencies optional (only needed by wmgui) + +Signed-off-by: Samuel Martin +--- + Makefile.in | 2 +- + configure.ac | 17 +++++++++++++---- + 2 files changed, 14 insertions(+), 5 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 6d3ac98..3d2fb45 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -3,7 +3,7 @@ + include @top_builddir@/defs.mak + + LIB_DIRS = libcwiid +-BIN_DIRS = wmgui wminput lswm ++BIN_DIRS = @WMGUI@ wminput lswm + DOC_DIRS = man doc + ifdef PYTHON + BIND_DIRS = python +diff --git a/configure.ac b/configure.ac +index 82ca3e1..d146cb6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -15,6 +15,11 @@ if test "$YACC" != "bison -y"; then + AC_MSG_ERROR([bison not found]) + fi + ++AC_ARG_ENABLE( ++ [wmgui], ++ [AS_HELP_STRING([--disable-wmgui],[Do not build wmgui binary (also drop the gtk-2/glib2 dependency)])], ++ [ENABLE_WMGUI="$enableval"],[ENABLE_WMGUI=yes]) ++ + AC_ARG_WITH( + [python], + [AS_HELP_STRING([--without-python],[compile without python support])], +@@ -98,10 +103,14 @@ else + fi + AC_SUBST(LDCONFIG) + +-pkg_modules="gtk+-2.0 >= 2.0.0 gthread-2.0" +-PKG_CHECK_MODULES([GTK], [$pkg_modules]) +-AC_SUBST(GTK_CFLAGS) +-AC_SUBST(GTK_LIBS) ++AS_IF( ++ [test "x$ENABLE_WMGUI" = xyes], ++ [pkg_modules="gtk+-2.0 >= 2.0.0 gthread-2.0" ; ++ PKG_CHECK_MODULES([GTK], [$pkg_modules]) ++ AC_SUBST(GTK_CFLAGS) ++ AC_SUBST(GTK_LIBS) ++ AC_SUBST(WMGUI, wmgui)] ++) + + AC_OUTPUT( + [Makefile] +-- +1.8.5.2 + diff --git a/buildroot/package/cwiid/Config.in b/buildroot/package/cwiid/Config.in new file mode 100644 index 0000000..50c05eb --- /dev/null +++ b/buildroot/package/cwiid/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_CWIID + bool "cwiid" + depends on !BR2_STATIC_LIBS # bluez_utils + depends on BR2_USE_WCHAR # bluez_utils -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # bluez_utils -> dbus, alsa-lib, libglib2 + depends on BR2_USE_MMU # bluez_utils -> dbus, libglib2 + select BR2_PACKAGE_BLUEZ_UTILS + help + A collection of Linux tools written in C for interfacing to + the Nintendo Wiimote. + + http://abstrakraft.org/cwiid/ + +if BR2_PACKAGE_CWIID +config BR2_PACKAGE_CWIID_WMGUI + bool "wmgui" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk3 -> pango -> harfbuzz + depends on BR2_PACKAGE_XORG7 # libgtk2 + depends on BR2_USE_WCHAR # libgtk2 -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libgtk2 -> libglib2 + depends on BR2_USE_MMU # libgtk2 -> libglib2 + depends on BR2_INSTALL_LIBSTDCPP # libgtk2 -> pango + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGTK2 +endif + +comment "cwiid needs a toolchain w/ dynamic lib, threads, wchar" + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_USE_MMU diff --git a/buildroot/package/cwiid/cwiid.hash b/buildroot/package/cwiid/cwiid.hash new file mode 100644 index 0000000..6446b80 --- /dev/null +++ b/buildroot/package/cwiid/cwiid.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 3adf3bf018721dee3c47e12ba4dd71810a239918dce925aa4079cb2a98bca5fe cwiid-fadf11e89b579bcc0336a0692ac15c93785f3f82.tar.gz +# License files, locally calculated +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/buildroot/package/cwiid/cwiid.mk b/buildroot/package/cwiid/cwiid.mk new file mode 100644 index 0000000..c092e40 --- /dev/null +++ b/buildroot/package/cwiid/cwiid.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# cwiid +# +################################################################################ + +CWIID_VERSION = fadf11e89b579bcc0336a0692ac15c93785f3f82 +CWIID_SITE = $(call github,abstrakraft,cwiid,$(CWIID_VERSION)) +CWIID_LICENSE = GPL-2.0+ +CWIID_LICENSE_FILES = COPYING + +CWIID_AUTORECONF = YES +CWIID_INSTALL_STAGING = YES + +CWIID_DEPENDENCIES = host-pkgconf host-bison host-flex bluez_utils + +# Disable python support. This disables the 2 following things: +# - wminput Python plugin support +# - cwiid Python module +CWIID_CONF_OPTS = --without-python --disable-ldconfig + +ifeq ($(BR2_PACKAGE_CWIID_WMGUI),y) +CWIID_DEPENDENCIES += libgtk2 libglib2 +CWIID_CONF_OPTS += --enable-wmgui +else +CWIID_CONF_OPTS += --disable-wmgui +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/cxxtest/Config.in b/buildroot/package/cxxtest/Config.in new file mode 100644 index 0000000..207adab --- /dev/null +++ b/buildroot/package/cxxtest/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_CXXTEST + bool "cxxtest" + depends on BR2_INSTALL_LIBSTDCPP + help + CxxTest is a unit testing framework for C++ + + http://cxxtest.com/ + +comment "cxxtest needs a toolchain w/ C++ support" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/cxxtest/cxxtest.hash b/buildroot/package/cxxtest/cxxtest.hash new file mode 100644 index 0000000..be2cbd3 --- /dev/null +++ b/buildroot/package/cxxtest/cxxtest.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 1c154fef91c65dbf1cd4519af7ade70a61d85a923b6e0c0b007dc7f4895cf7d8 cxxtest-4.4.tar.gz + +# Hash for license file: +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING diff --git a/buildroot/package/cxxtest/cxxtest.mk b/buildroot/package/cxxtest/cxxtest.mk new file mode 100644 index 0000000..7d494c8 --- /dev/null +++ b/buildroot/package/cxxtest/cxxtest.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# cxxtest +# +################################################################################ + +CXXTEST_VERSION = 4.4 +CXXTEST_SITE = https://github.com/CxxTest/cxxtest/releases/download/$(CXXTEST_VERSION) +CXXTEST_LICENSE = LGPL-3.0 +CXXTEST_LICENSE_FILES = COPYING +CXXTEST_INSTALL_STAGING = YES +CXXTEST_INSTALL_TARGET = NO +CXXTEST_DEPENDENCIES = host-cxxtest +HOST_CXXTEST_SETUP_TYPE = setuptools +HOST_CXXTEST_SUBDIR = python + +# Copy CxxTest header files to staging directory +define CXXTEST_INSTALL_STAGING_CMDS + $(INSTALL) -m 755 -d $(STAGING_DIR)/usr/include/cxxtest + $(INSTALL) -m 644 -t $(STAGING_DIR)/usr/include/cxxtest $(@D)/cxxtest/* +endef + +# CxxTest uses python infrastructure as the build system. It consists of two parts: +# 1. cxxtestgen tool to process tests defined in header files to generate C++ source +# files. cxxtestgen is built as a host package, so that it can be used natively. +# 2. A set of header files which are installed in staging directory. This will be +# used in cross-compiling test harness to generate executable which will run on target. + +$(eval $(generic-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/czmq/0001-configure.ac-remove-Werror.patch b/buildroot/package/czmq/0001-configure.ac-remove-Werror.patch new file mode 100644 index 0000000..7f2dae2 --- /dev/null +++ b/buildroot/package/czmq/0001-configure.ac-remove-Werror.patch @@ -0,0 +1,30 @@ +From 9a195dc573f4eed130773e6ef67efd5f71693e97 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 5 Nov 2016 15:33:57 +0100 +Subject: [PATCH] configure.ac: remove -Werror + +-Werror shouldn't be used in releases, as it can break the build with +newer versions of the compiler or the C library, when new warnings +are introduced. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index e92970a..2fd551a 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -344,7 +344,7 @@ AC_C_BIGENDIAN + + # These options are GNU compiler specific. + if test "x$GCC" = "xyes"; then +- CPPFLAGS="-pedantic -Werror -Wall -Wc++-compat ${CPPFLAGS}" ++ CPPFLAGS="-pedantic -Wall -Wc++-compat ${CPPFLAGS}" + fi + + AM_CONDITIONAL(ENABLE_SHARED, test "x$enable_shared" = "xyes") +-- +2.7.4 + diff --git a/buildroot/package/czmq/Config.in b/buildroot/package/czmq/Config.in new file mode 100644 index 0000000..71389fc --- /dev/null +++ b/buildroot/package/czmq/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_CZMQ + bool "czmq" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + select BR2_PACKAGE_ZEROMQ + help + High-level C Binding for 0MQ + + http://czmq.zeromq.org/ + +comment "czmq needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/buildroot/package/czmq/czmq.hash b/buildroot/package/czmq/czmq.hash new file mode 100644 index 0000000..526ea59 --- /dev/null +++ b/buildroot/package/czmq/czmq.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5c76de41f736f0c059e0b26174ef99200f2aba2fa38333683dbe4944b2f80555 czmq-5205ec201e97c3a652c17eb86b18b70350b54512.tar.gz diff --git a/buildroot/package/czmq/czmq.mk b/buildroot/package/czmq/czmq.mk new file mode 100644 index 0000000..5305789 --- /dev/null +++ b/buildroot/package/czmq/czmq.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# czmq +# +################################################################################ + +CZMQ_VERSION = 5205ec201e97c3a652c17eb86b18b70350b54512 +CZMQ_SITE = $(call github,zeromq,czmq,$(CZMQ_VERSION)) + +# Autoreconf required as we use the git tree +CZMQ_AUTORECONF = YES +CZMQ_INSTALL_STAGING = YES +CZMQ_DEPENDENCIES = zeromq host-pkgconf +CZMQ_LICENSE = MPL-2.0 +CZMQ_LICENSE_FILES = LICENSE + +# asciidoc is a python script that imports unicodedata, which is not in +# host-python, so disable asciidoc entirely. +CZMQ_CONF_ENV = ac_cv_prog_czmq_have_asciidoc=no + +define CZMQ_CREATE_CONFIG_DIR + mkdir -p $(@D)/config +endef + +CZMQ_POST_PATCH_HOOKS += CZMQ_CREATE_CONFIG_DIR + +$(eval $(autotools-package)) diff --git a/buildroot/package/dado/Config.in b/buildroot/package/dado/Config.in new file mode 100644 index 0000000..fb469f4 --- /dev/null +++ b/buildroot/package/dado/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_DADO + bool "dado" + help + Database Facilities for LuaSQL. + + http://www.ccpa.puc-rio.br/software/dado/ diff --git a/buildroot/package/dado/dado.hash b/buildroot/package/dado/dado.hash new file mode 100644 index 0000000..973bdb3 --- /dev/null +++ b/buildroot/package/dado/dado.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5a10ed7ff7be34ac004d10d6ea62ee8efc2b594c50ffc93e840e7fb7a2e6b4d0 dado-1.8.3-1.src.rock diff --git a/buildroot/package/dado/dado.mk b/buildroot/package/dado/dado.mk new file mode 100644 index 0000000..e4375a3 --- /dev/null +++ b/buildroot/package/dado/dado.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# dado +# +################################################################################ + +DADO_VERSION = 1.8.3-1 +DADO_LICENSE = MIT +DADO_LICENSE_FILES = $(DADO_SUBDIR)/doc/license.html + +$(eval $(luarocks-package)) diff --git a/buildroot/package/daemon/0001-fix-musl.patch b/buildroot/package/daemon/0001-fix-musl.patch new file mode 100644 index 0000000..9454d72 --- /dev/null +++ b/buildroot/package/daemon/0001-fix-musl.patch @@ -0,0 +1,18 @@ +daemon: fix build with musl + +musl requires the ttydefaults.h to be included explicitly for CEOF. + +Signed-off-by: Baruch Siach +--- + +diff -Nuar daemon-0.6.4-orig/daemon.c daemon-0.6.4/daemon.c +--- daemon-0.6.4-orig/daemon.c 2010-06-12 16:37:00.000000000 +0300 ++++ daemon-0.6.4/daemon.c 2017-05-01 22:02:17.721413468 +0300 +@@ -665,6 +665,7 @@ + #ifdef _RESTORE_POSIX_SOURCE + #define _POSIX_SOURCE + #endif ++#include + #include + #include + #include diff --git a/buildroot/package/daemon/Config.in b/buildroot/package/daemon/Config.in new file mode 100644 index 0000000..b97f8cf --- /dev/null +++ b/buildroot/package/daemon/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DAEMON + bool "daemon" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Daemon turns other process into daemons. + + http://www.libslack.org/daemon/ + +comment "daemon needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/daemon/daemon.hash b/buildroot/package/daemon/daemon.hash new file mode 100644 index 0000000..32308ea --- /dev/null +++ b/buildroot/package/daemon/daemon.hash @@ -0,0 +1,3 @@ +# md5 from http://www.libslack.org/daemon/; sha256 locally calculated +md5 6cd0a28630a29ac279bc501f39baec66 daemon-0.6.4.tar.gz +sha256 c4b9ea4aa74d55ea618c34f1e02c080ddf368549037cb239ee60c83191035ca1 daemon-0.6.4.tar.gz diff --git a/buildroot/package/daemon/daemon.mk b/buildroot/package/daemon/daemon.mk new file mode 100644 index 0000000..79cf3f7 --- /dev/null +++ b/buildroot/package/daemon/daemon.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# daemon +# +################################################################################ + +DAEMON_VERSION = 0.6.4 +DAEMON_SITE = http://libslack.org/daemon/download +DAEMON_LICENSE = GPL-2.0+ +DAEMON_LICENSE_FILES = LICENSE + +define DAEMON_CONFIGURE_CMDS + (cd $(@D); ./config) +endef + +define DAEMON_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) ready + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define DAEMON_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) DEB_BUILD_OPTIONS=nostrip \ + $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) \ + install-daemon-bin +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dahdi-linux/Config.in b/buildroot/package/dahdi-linux/Config.in new file mode 100644 index 0000000..f2a3709 --- /dev/null +++ b/buildroot/package/dahdi-linux/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_DAHDI_LINUX + bool "dhadi-linux" + depends on BR2_LINUX_KERNEL + help + DAHDI (Digium/Asterisk Hardware Device Interface) is the open + source device interface technology used to control Digium and + other legacy telephony interface cards. + + DAHDI Linux is the open source device driver framework used to + interface Asterisk with telephony hardware. + + http://www.asterisk.org/downloads/dahdi + + Note: DAHDI Linux drivers won't build on a kernel v4.0 or more + recent, because they use internals that have been removed in + v4.0. + +comment "dahdi-linux needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/dahdi-linux/dahdi-linux.hash b/buildroot/package/dahdi-linux/dahdi-linux.hash new file mode 100644 index 0000000..c362f8e --- /dev/null +++ b/buildroot/package/dahdi-linux/dahdi-linux.hash @@ -0,0 +1,27 @@ +# sha1 from: http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases +# sha256 locally computed +sha1 8cbd55b8611c6ed80bcdf84d537566b4934f3def dahdi-linux-2.11.1.tar.gz +sha256 f59f382365118205e77d2874f1c0e1546e936247bcc45f07a43bc21778bee9df dahdi-linux-2.11.1.tar.gz + +# Firmware files have no upstream hash, so sha56 locally computed +sha256 3ff26cf80555fd7470b43a87c51d03c1db2a75abcd4561d79f69b6c48298e4a1 dahdi-fwload-vpmadt032-1.25.0.tar.gz +sha256 d5b6ab6851e431afcfec2ecc39d95fa88fe3939ffdb2e3d4f28a43cabf30e95b dahdi-fw-a4a-a0017.tar.gz +sha256 e039af8bec36407b74e1dd9ebdd49ba077469eda79d4e6093721ed2836d4536f dahdi-fw-a4b-d001e.tar.gz +sha256 5064f9877b8aec99b19fd57988216fe1a9c0b7c07853dd3b32b5a55ab7b418e6 dahdi-fw-a8a-1d0017.tar.gz +sha256 09a8992786309e025aa60b400a2c7d21226ac9bb6f1b66f562a5e7e9dc892b03 dahdi-fw-a8b-1f001e.tar.gz +sha256 449ab3fd03d55d808e999efb7677cd04de202b92c9fcb039539a7e48a39a80f5 dahdi-fw-hx8-2.06.tar.gz +sha256 7a006073202d67e45f1d5ff1e9c6e8663e6056cef9dc4c5abae86a1018db349c dahdi-fw-oct6114-032-1.05.01.tar.gz +sha256 56bac1f2024c76ecf9b6f40992eeea29a1fbee676bb2a37a058179bacfbb1c91 dahdi-fw-oct6114-064-1.05.01.tar.gz +sha256 e1146749d205c41603b9b76852c3f8104dac233d0025d700db24504d10c99775 dahdi-fw-oct6114-128-1.05.01.tar.gz +sha256 5fe5036a2766cf0e8a968b0c58b700507d86e1cde9296ca437170cc626a9c79c dahdi-fw-oct6114-256-1.05.01.tar.gz +sha256 11dd8d009809e41fc9a3a36766f59ff73d29075eede5b8724331d9a6e5259774 dahdi-fw-tc400m-MR6.12.tar.gz +sha256 511c1966295a20df673bb87af30245f0ad165efd6ccb92b4d8ed535ca7f5ac65 dahdi-fw-te133-7a001e.tar.gz +sha256 99f7c410bf47d2a5ae687d717e51448ce5b52aca902830bf39bffe683150fa2d dahdi-fw-te134-780017.tar.gz +sha256 c8f55d57cc0bf332e8d96cdf9ff6dd0e322f33581e1efc24c2b9a0e0c5eb7ee4 dahdi-fw-te435-13001e.tar.gz +sha256 0980f4a8d191c6872aa27d971758046f0e7827ac161549f2cc1b0eeab0ae9333 dahdi-fw-te436-10017.tar.gz +sha256 5b823e25828e2c1c6548886ad408b2e31dbc8cd17170c52592792d9c754a199c dahdi-fw-te820-1.76.tar.gz +sha256 6b199cf836f150f9cb35f763f0f502fb52cfa2724a449b500429c746973904ad dahdi-fw-vpmoct032-1.12.0.tar.gz + +# License files, locally computed +sha256 fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7 LICENSE +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 LICENSE.LGPL diff --git a/buildroot/package/dahdi-linux/dahdi-linux.mk b/buildroot/package/dahdi-linux/dahdi-linux.mk new file mode 100644 index 0000000..c042a14 --- /dev/null +++ b/buildroot/package/dahdi-linux/dahdi-linux.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# dahdi-linux +# +################################################################################ + +DAHDI_LINUX_VERSION = 2.11.1 +DAHDI_LINUX_SITE = http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases + +# We need to download all thoe firmware blobs ourselves, otherwise +# dahdi-linux will try to download them at install time. +DAHDI_LINUX_FW_SITE = http://downloads.digium.com/pub/telephony/firmware/releases +DAHDI_LINUX_FW_FILES = \ + dahdi-fwload-vpmadt032-1.25.0.tar.gz \ + dahdi-fw-oct6114-032-1.05.01.tar.gz \ + dahdi-fw-oct6114-064-1.05.01.tar.gz \ + dahdi-fw-oct6114-128-1.05.01.tar.gz \ + dahdi-fw-oct6114-256-1.05.01.tar.gz \ + dahdi-fw-tc400m-MR6.12.tar.gz \ + dahdi-fw-hx8-2.06.tar.gz \ + dahdi-fw-vpmoct032-1.12.0.tar.gz \ + dahdi-fw-te820-1.76.tar.gz \ + dahdi-fw-te133-7a001e.tar.gz \ + dahdi-fw-te134-780017.tar.gz \ + dahdi-fw-a8b-1f001e.tar.gz \ + dahdi-fw-a8a-1d0017.tar.gz \ + dahdi-fw-a4b-d001e.tar.gz \ + dahdi-fw-a4a-a0017.tar.gz \ + dahdi-fw-te435-13001e.tar.gz \ + dahdi-fw-te436-10017.tar.gz + +DAHDI_LINUX_EXTRA_DOWNLOADS = \ + $(patsubst %,$(DAHDI_LINUX_FW_SITE)/%,$(DAHDI_LINUX_FW_FILES)) + +# dahdi-linux claims to be GPLv2 with parts LGPLv2.1 (not 'or later'), +# but there are the so-called firmware files (downloaded above) for +# which the license is unclear: the header claims to be GPLv2, the +# 'loader-wrapper' claims to be GPLv2, but there are two so-called +# 'firmware' binary-only .o blobs for which the license is not +# explicited, which look like they end up as part of a kernel module, +# and for which the source is nowhere to be found on the upstream site +# (they are only for x86/x86_64, but we still list them unconditionally). +DAHDI_LINUX_LICENSE = GPL-2.0, LGPL-2.1, unknown (firmware files) +DAHDI_LINUX_LICENSE_FILES = LICENSE LICENSE.LGPL + +DAHDI_LINUX_INSTALL_STAGING = YES + +DAHDI_LINUX_MODULE_SUBDIRS = drivers/dahdi + +DAHDI_LINUX_MODULE_MAKE_OPTS = \ + KSRC=$(LINUX_DIR) \ + KVERS=$(LINUX_VERSION_PROBED) \ + DAHDI_BUILD_ALL=m \ + DAHDI_INCLUDE=$(@D)/include \ + INSTALL_MOD_DIR=dahdi + +define DAHDI_LINUX_EXTRACT_FW + $(foreach f,$(DAHDI_LINUX_FW_FILES),\ + cp $(BR2_DL_DIR)/$(f) $(@D)/drivers/dahdi/firmware/$(f)$(sep)) +endef +DAHDI_LINUX_POST_EXTRACT_HOOKS += DAHDI_LINUX_EXTRACT_FW + +# Need to pass the same options as for building the modules, because +# it wants to scan Linux' .config file to check whether some options +# are set or not (like CONFIG_FW_LOADER). +define DAHDI_LINUX_CONFIGURE_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(DAHDI_LINUX_MODULE_MAKE_OPTS) \ + prereq +endef + +define DAHDI_LINUX_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(DAHDI_LINUX_MODULE_MAKE_OPTS) \ + DESTDIR=$(STAGING_DIR) \ + install-include +endef + +define DAHDI_LINUX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(DAHDI_LINUX_MODULE_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + install-firmware \ + install-xpp-firm +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/dahdi-tools/0001-no-build-docs.patch b/buildroot/package/dahdi-tools/0001-no-build-docs.patch new file mode 100644 index 0000000..311a129 --- /dev/null +++ b/buildroot/package/dahdi-tools/0001-no-build-docs.patch @@ -0,0 +1,16 @@ +Do not build the documentation. + +Signed-off-by: "Yann E. MORIN" + +diff -durN dahdi-tools-2.11.0.orig/Makefile.am dahdi-tools-2.11.0/Makefile.am +--- dahdi-tools-2.11.0.orig/Makefile.am 2015-12-22 21:19:12.000000000 +0100 ++++ dahdi-tools-2.11.0/Makefile.am 2016-01-04 23:23:34.201304133 +0100 +@@ -17,7 +17,7 @@ + #-Wformat=2 + endif + +-SUBDIRS = xpp doc hotplug ++SUBDIRS = xpp hotplug + + if PPPD + SUBDIRS += ppp diff --git a/buildroot/package/dahdi-tools/0002-no-perl-manpages.patch b/buildroot/package/dahdi-tools/0002-no-perl-manpages.patch new file mode 100644 index 0000000..dae1b6c --- /dev/null +++ b/buildroot/package/dahdi-tools/0002-no-perl-manpages.patch @@ -0,0 +1,37 @@ +xpp: do not try to install the manpages for the perl tools + +The man pages are generated neither at build time nor at install time, +so the install step fails. + +Just disable them. + +Signed-off-by: "Yann E. MORIN" + +diff -durN dahdi-tools-2.11.0.orig/xpp/Makefile.am dahdi-tools-2.11.0/xpp/Makefile.am +--- dahdi-tools-2.11.0.orig/xpp/Makefile.am 2015-12-22 21:19:12.000000000 +0100 ++++ dahdi-tools-2.11.0/xpp/Makefile.am 2016-01-04 23:56:31.851820973 +0100 +@@ -3,7 +3,6 @@ + + SUBDIRS = + +-man_MANS = + + + # FIXME: try to improve code, so we can use $(PEDANTIC) +@@ -59,7 +58,6 @@ + udevrules_DATA = xpp.rules + + dist_sbin_SCRIPTS = $(perl_scripts) +-man_MANS += $(perl_mans) + CLEANFILES = $(perl_checks) $(perl_mans) + + if PBX_USB +@@ -147,8 +145,6 @@ + astribank_allow.8 \ + astribank_is_starting.8 + +-man_MANS += $(man_pages) +- + endif + + EXTRA_DIST = \ diff --git a/buildroot/package/dahdi-tools/Config.in b/buildroot/package/dahdi-tools/Config.in new file mode 100644 index 0000000..39042df --- /dev/null +++ b/buildroot/package/dahdi-tools/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_DAHDI_TOOLS + bool "dahdi-tools" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_LINUX_KERNEL # dahdi-linux + depends on BR2_USE_MMU # perl + select BR2_PACKAGE_DAHDI_LINUX + select BR2_PACKAGE_PERL + help + DAHDI (Digium/Asterisk Hardware Device Interface) is the open + source device interface technology used to control Digium and + other legacy telephony interface cards. + + DAHDI Tools is a package of utilities for managing and + monitoring DAHDI devices. + + http://www.asterisk.org/downloads/dahdi + +# Two comments, otherwise it may not fit in menuconfig for narrow terminals +comment "dahdi-tools needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_LINUX_KERNEL + +comment "dahdi-tools needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/dahdi-tools/dahdi-tools.hash b/buildroot/package/dahdi-tools/dahdi-tools.hash new file mode 100644 index 0000000..7b668c6 --- /dev/null +++ b/buildroot/package/dahdi-tools/dahdi-tools.hash @@ -0,0 +1,8 @@ +# sha1 from http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases +# sha256 locally computed +sha1 5da944e6d59a977f814230253f3ddf2847e7f31b dahdi-tools-2.11.1.tar.gz +sha256 53ffeb333f3e44b0c88e5b17475cdbf87d3f652eb81a6422de76250c061e2909 dahdi-tools-2.11.1.tar.gz + +# License files, locally computed +sha256 fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7 LICENSE +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 LICENSE.LGPL diff --git a/buildroot/package/dahdi-tools/dahdi-tools.mk b/buildroot/package/dahdi-tools/dahdi-tools.mk new file mode 100644 index 0000000..e97d944 --- /dev/null +++ b/buildroot/package/dahdi-tools/dahdi-tools.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# dahdi-tools +# +################################################################################ + +DAHDI_TOOLS_VERSION = 2.11.1 +DAHDI_TOOLS_SITE = http://downloads.asterisk.org/pub/telephony/dahdi-tools/releases + +DAHDI_TOOLS_LICENSE = GPLv2, LGPLv2.1 +DAHDI_TOOLS_LICENSE_FILES = LICENSE LICENSE.LGPL + +DAHDI_TOOLS_DEPENDENCIES = dahdi-linux perl + +DAHDI_TOOLS_INSTALL_STAGING = YES +DAHDI_TOOLS_AUTORECONF = YES + +# Buildroot globally exports PERL with the value it has on the host, so we need +# to override it with the location where it will be on the target. +DAHDI_TOOLS_CONF_ENV = PERL=/usr/bin/perl + +DAHDI_TOOLS_CONF_OPTS = \ + --without-newt \ + --without-usb \ + --without-pcap \ + --without-libusbx \ + --without-libusb \ + --without-selinux \ + --without-ppp \ + --with-perllib=/usr/lib/perl5/$(PERL_VERSION) + +$(eval $(autotools-package)) diff --git a/buildroot/package/dante/0001-fix-sparc-compile.patch b/buildroot/package/dante/0001-fix-sparc-compile.patch new file mode 100644 index 0000000..a23e2e2 --- /dev/null +++ b/buildroot/package/dante/0001-fix-sparc-compile.patch @@ -0,0 +1,24 @@ +Signal handling for sparc is broken, fix it. + +Signed-off-by: Waldemar Brodkorb + +--- dante-1.4.1.orig/lib/tostring.c 2014-08-21 18:21:50.000000000 +0200 ++++ dante-1.4.1/lib/tostring.c 2016-07-10 10:08:39.785662622 +0200 +@@ -1526,7 +1526,7 @@ signal2string(sig) + return "SIGKILL"; + #endif /* SIGKILL */ + +-#if (defined SIGLOST) && (!defined SIGABRT || SIGLOST != SIGABRT) ++#if (defined SIGLOST) && (!defined SIGABRT || SIGLOST != SIGABRT || SIGLOST != SIGPWR) + case SIGLOST: + return "SIGLOST"; + #endif /* SIGLOST */ +@@ -1551,7 +1551,7 @@ signal2string(sig) + return "SIGPROF"; + #endif /* SIGPROF */ + +-#ifdef SIGPWR ++#if (defined SIGPWR) && SIGPWR != SIGLOST + case SIGPWR: + return "SIGPWR"; + #endif /* SIGPWR */ diff --git a/buildroot/package/dante/0002-compiler.m4-do-not-remove-g-flag.patch b/buildroot/package/dante/0002-compiler.m4-do-not-remove-g-flag.patch new file mode 100644 index 0000000..0b41de6 --- /dev/null +++ b/buildroot/package/dante/0002-compiler.m4-do-not-remove-g-flag.patch @@ -0,0 +1,42 @@ +From c00e284dd2baa5ecdb0c9586044399cd7cacce3e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 8 Aug 2016 12:31:40 +0200 +Subject: [PATCH] compiler.m4: do not remove -g flag + +A sed expression such as 's/-g//' not only removes the -g +debugging-related flag, but also turns more specific flags such as +-mfloat-gprs=double into -mfloatprs=double, which is no longer a valid +flag. + +However, it turns out that removing -g is not necessary: having -g0 +after -g negates the -g, and having -ggdb after -g is enough to produce +debugging information for GDB. + +Signed-off-by: Thomas Petazzoni +--- + compiler.m4 | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/compiler.m4 b/compiler.m4 +index 3a23406..621372c 100644 +--- a/compiler.m4 ++++ b/compiler.m4 +@@ -378,15 +378,9 @@ else + gcc) + if test x"$aixldbug" != x; then + #disable debug info +- if echo $CFLAGS | grep -- "-g" >/dev/null; then +- CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'`" +- fi + CFLAGS="$CFLAGS${CFLAGS:+ }-g0" + else + #use -ggdb also when not debugging +- if echo $CFLAGS | grep -- "-g" >/dev/null; then +- CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'`" +- fi + CFLAGS="$CFLAGS${CFLAGS:+ }-ggdb" + fi + ;; +-- +2.7.4 + diff --git a/buildroot/package/dante/Config.in b/buildroot/package/dante/Config.in new file mode 100644 index 0000000..41a8999 --- /dev/null +++ b/buildroot/package/dante/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DANTE + bool "dante" + depends on BR2_USE_MMU # fork() + help + Dante is a product developed by Inferno Nettverk A/S. It + consists of a SOCKS server and a SOCKS client, implementing + RFC 1928 and related standards. It is a flexible product + that can be used to provide convenient and secure network + connectivity. + + http://www.inet.no/dante/ diff --git a/buildroot/package/dante/S50dante b/buildroot/package/dante/S50dante new file mode 100644 index 0000000..ed51a84 --- /dev/null +++ b/buildroot/package/dante/S50dante @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Starts dante +# + +# Allow a few customizations from a config file +test -r /etc/default/dante && . /etc/default/dante + +start() { + printf "Starting dante: " + start-stop-daemon -S -q -p /var/run/dante.pid \ + --exec /usr/sbin/sockd -- $DAEMON_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping dante: " + start-stop-daemon -K -q -p /var/run/dante.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/dante/dante.hash b/buildroot/package/dante/dante.hash new file mode 100644 index 0000000..38dea61 --- /dev/null +++ b/buildroot/package/dante/dante.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 b6d232bd6fefc87d14bf97e447e4fcdeef4b28b16b048d804b50b48f261c4f53 dante-1.4.1.tar.gz diff --git a/buildroot/package/dante/dante.mk b/buildroot/package/dante/dante.mk new file mode 100644 index 0000000..687567e --- /dev/null +++ b/buildroot/package/dante/dante.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# dante +# +################################################################################ + +DANTE_VERSION = 1.4.1 +DANTE_SITE = http://www.inet.no/dante/files +DANTE_LICENSE = BSD-3-Clause +DANTE_LICENSE_FILES = LICENSE + +# Dante uses a *VERY* old configure.ac +DANTE_LIBTOOL_PATCH = NO + +DANTE_CONF_OPTS += --disable-client --disable-preload + +define DANTE_INSTALL_CONFIG_FILE + $(INSTALL) -D -m 644 $(@D)/example/sockd.conf \ + $(TARGET_DIR)/etc/sockd.conf +endef + +DANTE_POST_INSTALL_TARGET_HOOKS += DANTE_INSTALL_CONFIG_FILE + +define DANTE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/dante/dante.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dante.service +endef + +define DANTE_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/dante/S50dante \ + $(TARGET_DIR)/etc/init.d/S50dante +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/dante/dante.service b/buildroot/package/dante/dante.service new file mode 100644 index 0000000..b783cee --- /dev/null +++ b/buildroot/package/dante/dante.service @@ -0,0 +1,15 @@ +[Unit] +Description=SOCKS v4 and v5 compatible proxy server and client +Requires=network.target +After=network.target + +[Service] +Type=forking +EnvironmentFile=-/etc/default/dante +PIDFile=/run/dante.pid +ExecStart=/usr/sbin/sockd -D -p /run/dante.pid $DAEMON_ARGS +ExecReload=/bin/kill -HUP $MAINPID +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/daq/0001-Fix-build-against-the-musl-C-library.patch b/buildroot/package/daq/0001-Fix-build-against-the-musl-C-library.patch new file mode 100644 index 0000000..25f2f9c --- /dev/null +++ b/buildroot/package/daq/0001-Fix-build-against-the-musl-C-library.patch @@ -0,0 +1,54 @@ +From 42efa6d76a3b52f35e576a6b941a9afb5b3879e9 Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Tue, 9 Jan 2018 21:39:27 -0200 +Subject: [PATCH] Fix build against the musl C library + +Signed-off-by: Sergio Prado +--- + os-daq-modules/daq_ipfw.c | 2 +- + os-daq-modules/daq_ipq.c | 2 +- + os-daq-modules/daq_nfq.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/os-daq-modules/daq_ipfw.c b/os-daq-modules/daq_ipfw.c +index 016beb06ad61..98f67717f646 100644 +--- a/os-daq-modules/daq_ipfw.c ++++ b/os-daq-modules/daq_ipfw.c +@@ -26,7 +26,7 @@ + + #include + #include +-#include ++#include + + #include + #include +diff --git a/os-daq-modules/daq_ipq.c b/os-daq-modules/daq_ipq.c +index 77ec6e9505e5..b15e5cf82af0 100644 +--- a/os-daq-modules/daq_ipq.c ++++ b/os-daq-modules/daq_ipq.c +@@ -27,7 +27,7 @@ + + #include + #include +-#include ++#include + + #include + +diff --git a/os-daq-modules/daq_nfq.c b/os-daq-modules/daq_nfq.c +index 33021c0ec991..0df1e61c74c4 100644 +--- a/os-daq-modules/daq_nfq.c ++++ b/os-daq-modules/daq_nfq.c +@@ -27,7 +27,7 @@ + + #include + #include +-#include ++#include + + #include + +-- +1.9.1 + diff --git a/buildroot/package/daq/Config.in b/buildroot/package/daq/Config.in new file mode 100644 index 0000000..ad294ab --- /dev/null +++ b/buildroot/package/daq/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DAQ + bool "daq" + depends on !BR2_STATIC_LIBS # dlfcn.h + help + DAQ is a Data Acquisition library for packet I/O from the + Snort project. + + https://www.snort.org + +comment "daq needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/daq/daq.hash b/buildroot/package/daq/daq.hash new file mode 100644 index 0000000..6a0cb5e --- /dev/null +++ b/buildroot/package/daq/daq.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 d41da5f7793e66044e6927dd868c0525e7ee4ec1a3515bf74ef9a30cd9273af0 daq-2.0.6.tar.gz + +# Hash for license files: +sha256 07f28289c09fd9eb5a6ff7bc710ff40363601b1bbc6f3637d8ed412150e90819 COPYING diff --git a/buildroot/package/daq/daq.mk b/buildroot/package/daq/daq.mk new file mode 100644 index 0000000..a23a9dc --- /dev/null +++ b/buildroot/package/daq/daq.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# daq +# +################################################################################ + +DAQ_VERSION = 2.0.6 +DAQ_SITE = https://www.snort.org/downloads/snort +DAQ_LICENSE = GPL-2.0 +DAQ_LICENSE_FILES = COPYING +DAQ_INSTALL_STAGING = YES +DAQ_DEPENDENCIES = host-bison host-flex + +# package does not build in parallel due to improper make rules +# related to the generation of the tokdefs.h header file +DAQ_MAKE = $(MAKE1) + +# disable ipq module as libipq is deprecated +DAQ_CONF_OPTS += --disable-ipq-module + +ifeq ($(BR2_PACKAGE_LIBDNET)$(BR2_PACKAGE_LIBNETFILTER_QUEUE),yy) +DAQ_DEPENDENCIES += libdnet libnetfilter_queue +DAQ_CONF_OPTS += --enable-nfq-module +else +DAQ_CONF_OPTS += --disable-nfq-module +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +DAQ_DEPENDENCIES += libpcap +# assume these flags are available to prevent configure from running +# test programs while cross compiling +DAQ_CONF_ENV += \ + ac_cv_lib_pcap_pcap_lib_version=yes \ + daq_cv_libpcap_version_1x=yes +DAQ_CONF_OPTS += --enable-pcap-module +else +DAQ_CONF_OPTS += --disable-pcap-module +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/darkhttpd/Config.in b/buildroot/package/darkhttpd/Config.in new file mode 100644 index 0000000..a5ab41a --- /dev/null +++ b/buildroot/package/darkhttpd/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_DARKHTTPD + bool "darkhttpd" + depends on BR2_USE_MMU # fork() + help + Darkhttpd is a simple, fast HTTP 1.1 web server which only + serves static content. It does not support PHP or CGI. + + The behavior of darkhttpd can be altered by setting some + variables in /etc/default/darkhttpd: + + - DARKHTTPD_ROOT: path to the server document root. + - DARKHTTPD_FLAGS: options to pass to darkhttpd. + + https://unix4lyfe.org/darkhttpd/ diff --git a/buildroot/package/darkhttpd/S50darkhttpd b/buildroot/package/darkhttpd/S50darkhttpd new file mode 100755 index 0000000..913439f --- /dev/null +++ b/buildroot/package/darkhttpd/S50darkhttpd @@ -0,0 +1,45 @@ +#!/bin/sh +# +# Starts darkhttpd. +# + +# Allow a few customizations from a config file +test -r /etc/default/darkhttpd && . /etc/default/darkhttpd + +DARKHTTPD_PROG=/usr/sbin/darkhttpd +DARKHTTPD_PIDFILE=/var/run/darkhttpd.pid +DARKHTTPD_ARGS="${DARKHTTPD_ROOT:-/var/www} --log /var/log/darkhttpd.log $DARKHTTPD_FLAGS --chroot --uid nobody --gid www-data" + +start() { + printf "Starting darkhttpd: " + start-stop-daemon -S -q -b -p $DARKHTTPD_PIDFILE -m --exec $DARKHTTPD_PROG -- $DARKHTTPD_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping darkhttpd: " + start-stop-daemon -K -q -p $DARKHTTPD_PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/darkhttpd/darkhttpd.hash b/buildroot/package/darkhttpd/darkhttpd.hash new file mode 100644 index 0000000..39152e3 --- /dev/null +++ b/buildroot/package/darkhttpd/darkhttpd.hash @@ -0,0 +1,2 @@ +# Locally generated +sha256 a50417b622b32b5f421b3132cb94ebeff04f02c5fb87fba2e31147d23de50505 darkhttpd-1.12.tar.bz2 diff --git a/buildroot/package/darkhttpd/darkhttpd.mk b/buildroot/package/darkhttpd/darkhttpd.mk new file mode 100644 index 0000000..df80899 --- /dev/null +++ b/buildroot/package/darkhttpd/darkhttpd.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# darkhttpd +# +################################################################################ + +DARKHTTPD_VERSION = 1.12 +DARKHTTPD_SITE = https://unix4lyfe.org/darkhttpd +DARKHTTPD_SOURCE = darkhttpd-$(DARKHTTPD_VERSION).tar.bz2 +DARKHTTPD_LICENSE = MIT + +define DARKHTTPD_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define DARKHTTPD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/darkhttpd \ + $(TARGET_DIR)/usr/sbin/darkhttpd +endef + +define DARKHTTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/darkhttpd/darkhttpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/darkhttpd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/darkhttpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/darkhttpd.service +endef + +define DARKHTTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/darkhttpd/S50darkhttpd \ + $(TARGET_DIR)/etc/init.d/S50darkhttpd +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/darkhttpd/darkhttpd.service b/buildroot/package/darkhttpd/darkhttpd.service new file mode 100644 index 0000000..17abd98 --- /dev/null +++ b/buildroot/package/darkhttpd/darkhttpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Darkhttpd Web Server +After=syslog.target network.target auditd.service + +[Service] +Environment="DARKHTTPD_ROOT=/var/www" +EnvironmentFile=-/etc/default/darkhttpd +ExecStart=/usr/sbin/darkhttpd $DARKHTTPD_ROOT $DARKHTTPD_FLAGS --chroot --uid nobody --gid www-data + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/dash/0001-no-config.h-for-helpers.patch b/buildroot/package/dash/0001-no-config.h-for-helpers.patch new file mode 100644 index 0000000..9fd449c --- /dev/null +++ b/buildroot/package/dash/0001-no-config.h-for-helpers.patch @@ -0,0 +1,35 @@ +[PATCH] Don't include config.h when building helpers using the native compiler + +config.h contains settings for the cross compiler (most importantly +32/64bit versions of functions), so don't include it when calling the +native compiler to build the helpers. + +Otherwise we get build errors like: + +/usr/bin/gcc -include ../config.h -DBSD=1 -DSHELL -DIFS_BROKEN -g -O2 -Wall -o mkinit mkinit.c +In file included from /usr/include/sys/stat.h:107, + from /usr/include/fcntl.h:38, + from mkinit.c:50: +/usr/include/bits/stat.h:117: error: redefinition of ‘struct stat’ +In file included from /usr/include/fcntl.h:38, + from mkinit.c:50: +/usr/include/sys/stat.h:504: error: redefinition of ‘stat’ +/usr/include/sys/stat.h:455: note: previous definition of ‘stat’ was here + +Signed-off-by: Peter Korsgaard +--- + src/Makefile.in | 1 - + 1 file changed, 1 deletion(-) + +Index: dash-0.5.5.1/src/Makefile.in +=================================================================== +--- dash-0.5.5.1.orig/src/Makefile.in ++++ dash-0.5.5.1/src/Makefile.in +@@ -165,7 +165,6 @@ COMMON_CPPFLAGS = \ + AM_CFLAGS = $(COMMON_CFLAGS) + AM_CPPFLAGS = $(COMMON_CPPFLAGS) + AM_CFLAGS_FOR_BUILD = -g -O2 $(COMMON_CFLAGS) +-AM_CPPFLAGS_FOR_BUILD = $(COMMON_CPPFLAGS) + COMPILE_FOR_BUILD = \ + $(CC_FOR_BUILD) $(AM_CPPFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) \ + $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) diff --git a/buildroot/package/dash/0002-histedit-fix-build-with-musl-libc.patch b/buildroot/package/dash/0002-histedit-fix-build-with-musl-libc.patch new file mode 100644 index 0000000..a9e4c5a --- /dev/null +++ b/buildroot/package/dash/0002-histedit-fix-build-with-musl-libc.patch @@ -0,0 +1,35 @@ +From 2da5b72c704fed10f1b04b5432ac6b078d016fae Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 2 Mar 2018 08:25:36 +0200 +Subject: [PATCH] histedit: fix build with musl libc + +musl libc defines the optreset BSD extension only in getopt.h. This +fixes the following build failure: + +histedit.c: In function 'histcmd': +histedit.c:220:2: error: 'optreset' undeclared (first use in this function) + optreset = 1; optind = 1; /* initialize getopt */ + ^~~~~~~~ + +Signed-off-by: Baruch Siach +--- +Upstream status: https://www.mail-archive.com/dash@vger.kernel.org/msg01389.html + + src/histedit.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/histedit.c b/src/histedit.c +index 94465d785cc9..f5c90aba873b 100644 +--- a/src/histedit.c ++++ b/src/histedit.c +@@ -39,6 +39,7 @@ + #include + #include + #include ++#include + /* + * Editline and history functions (and glue). + */ +-- +2.16.1 + diff --git a/buildroot/package/dash/Config.in b/buildroot/package/dash/Config.in new file mode 100644 index 0000000..b816ac7 --- /dev/null +++ b/buildroot/package/dash/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DASH + bool "dash" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + DASH is a POSIX-compliant implementation of /bin/sh that + aims to be as small as possible. It does this without + sacrificing speed where possible. In fact, it is + significantly faster than bash (the GNU Bourne-Again SHell) + for most tasks. + + http://gondor.apana.org.au/~herbert/dash diff --git a/buildroot/package/dash/dash.hash b/buildroot/package/dash/dash.hash new file mode 100644 index 0000000..b5a37b6 --- /dev/null +++ b/buildroot/package/dash/dash.hash @@ -0,0 +1,2 @@ +# From http://gondor.apana.org.au/~herbert/dash/files/dash-0.5.9.1.tar.gz.sha256sum +sha256 5ecd5bea72a93ed10eb15a1be9951dd51b52e5da1d4a7ae020efd9826b49e659 dash-0.5.9.1.tar.gz diff --git a/buildroot/package/dash/dash.mk b/buildroot/package/dash/dash.mk new file mode 100644 index 0000000..2d41555 --- /dev/null +++ b/buildroot/package/dash/dash.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# dash +# +################################################################################ + +DASH_VERSION = 0.5.9.1 +DASH_SITE = http://gondor.apana.org.au/~herbert/dash/files +DASH_LICENSE = BSD-3-Clause, GPL-2.0+ (mksignames.c) +DASH_LICENSE_FILES = COPYING + +# dash does not build in parallel +DASH_MAKE = $(MAKE1) + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +DASH_DEPENDENCIES += libedit host-pkgconf +DASH_CONF_OPTS += --with-libedit +DASH_CONF_ENV += LIBS=`pkg-config --libs libedit` + +# Enable line editing, Emacs style +define DASH_INSTALL_PROFILE + mkdir -p $(TARGET_DIR)/etc/profile.d + echo 'set -E' > $(TARGET_DIR)/etc/profile.d/dash.sh +endef +DASH_POST_INSTALL_TARGET_HOOKS += DASH_INSTALL_PROFILE +else +DASH_CONF_OPTS += --without-libedit +endif + +define DASH_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/src/dash $(TARGET_DIR)/bin/dash +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/dawgdic/Config.in b/buildroot/package/dawgdic/Config.in new file mode 100644 index 0000000..b67342b --- /dev/null +++ b/buildroot/package/dawgdic/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_DAWGDIC + bool "dawgdic" + depends on BR2_INSTALL_LIBSTDCPP + # needs std::strtoll + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + help + dawgdic provides a library for building and accessing + dictionaries implemented with directed acyclic word graphs + (DAWG). A dawg is constructed by minimizing a trie as a + deterministic finite automaton (DFA), and thus the dawg has + an advantage in memory usage. In addition, dawgdic uses a + double-array as a base data structure, so its retrieval + speed is as fast as that of Darts, a library for building + and accessing double-array tries. + + https://github.com/stil/dawgdic + +comment "dawgdic needs a toolchain w/ C++, gcc >= 4.6" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 diff --git a/buildroot/package/dawgdic/dawgdic.hash b/buildroot/package/dawgdic/dawgdic.hash new file mode 100644 index 0000000..da03f0b --- /dev/null +++ b/buildroot/package/dawgdic/dawgdic.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 54622a3e79ff3ad2c01a830ec52b997b42ead468b18af5acebab3a4ff32a5ad6 dawgdic-16ac537ba9883ff01b63b6d1fdc3072150c68fee.tar.gz diff --git a/buildroot/package/dawgdic/dawgdic.mk b/buildroot/package/dawgdic/dawgdic.mk new file mode 100644 index 0000000..443782c --- /dev/null +++ b/buildroot/package/dawgdic/dawgdic.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# dawgdic +# +################################################################################ + +DAWGDIC_VERSION = 16ac537ba9883ff01b63b6d1fdc3072150c68fee +DAWGDIC_SITE = $(call github,stil,dawgdic,$(DAWGDIC_VERSION)) +DAWGDIC_LICENSE = BSD-3-Clause +DAWGDIC_LICENSE_FILES = COPYING +DAWGDIC_AUTORECONF = YES +DAWGDIC_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/dbus-cpp/0001-gcc4.7.patch b/buildroot/package/dbus-cpp/0001-gcc4.7.patch new file mode 100644 index 0000000..ad3046c --- /dev/null +++ b/buildroot/package/dbus-cpp/0001-gcc4.7.patch @@ -0,0 +1,17 @@ +Fix build failure with gcc 4.7+ +From bugtracker: http://sourceforge.net/p/dbus-cplusplus/patches/13/ + +Signed-off-by: Gustavo Zacarias + +diff --git a/include/dbus-c++/eventloop-integration.h b/include/dbus-c++/eventloop-integration.h +index 1b0302e..3e44304 100644 +--- a/include/dbus-c++/eventloop-integration.h ++++ b/include/dbus-c++/eventloop-integration.h +@@ -26,6 +26,7 @@ + #define __DBUSXX_EVENTLOOP_INTEGRATION_H + + #include ++#include + #include "api.h" + #include "dispatcher.h" + #include "util.h" diff --git a/buildroot/package/dbus-cpp/0002-cross-compile-tools.patch b/buildroot/package/dbus-cpp/0002-cross-compile-tools.patch new file mode 100644 index 0000000..39eff31 --- /dev/null +++ b/buildroot/package/dbus-cpp/0002-cross-compile-tools.patch @@ -0,0 +1,34 @@ +tools: just do proper cross-compile + +Those tools are not used during the build; besides, they are installed. + +So they don't need to not be cross-compiled. + +Signed-off-by: "Yann E. MORIN" + +--- +Upstream status: not submitted, upstream is dead. + +diff -durN dbus-cpp-0.9.0.orig/tools/Makefile.am dbus-cpp-0.9.0/tools/Makefile.am +--- dbus-cpp-0.9.0.orig/tools/Makefile.am 2017-03-21 21:48:57.013409423 +0100 ++++ dbus-cpp-0.9.0/tools/Makefile.am 2017-03-21 21:49:35.329979798 +0100 +@@ -1,7 +1,3 @@ +-# hacky, but ... +- +-CXX = $(CXX_FOR_BUILD) +- + AM_CPPFLAGS = \ + $(dbus_CFLAGS) \ + $(xml_CFLAGS) \ +@@ -9,11 +3,7 @@ + -I$(top_builddir)/include \ + -Wall + +-if CROSS_COMPILING +-libdbus_cxx_la = $(BUILD_LIBDBUS_CXX_DIR)/src/libdbus-c++-1.la +-else + libdbus_cxx_la = $(top_builddir)/src/libdbus-c++-1.la +-endif + + bin_PROGRAMS = dbusxx-xml2cpp dbusxx-introspect + diff --git a/buildroot/package/dbus-cpp/0003-src-pipe.c-fix-build-error-with-gcc-7.x.patch b/buildroot/package/dbus-cpp/0003-src-pipe.c-fix-build-error-with-gcc-7.x.patch new file mode 100644 index 0000000..6f3e624 --- /dev/null +++ b/buildroot/package/dbus-cpp/0003-src-pipe.c-fix-build-error-with-gcc-7.x.patch @@ -0,0 +1,36 @@ +From 167042116f523f90911f3a28c4ec065918d56cc9 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 22 Aug 2017 00:02:52 +0200 +Subject: [PATCH] src/pipe.c: fix build error with gcc 7.x +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The write function takes a char* as argument, not a char. + +Fixes: + +pipe.cpp: In member function ‘void DBus::Pipe::signal()’: +pipe.cpp:86:29: error: invalid conversion from ‘char’ to ‘const void*’ [-fpermissive] + ::write(_fd_write, '\0', 1); + ^ + +Signed-off-by: Thomas Petazzoni +--- + src/pipe.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/pipe.cpp b/src/pipe.cpp +index 01211b3..d0572c7 100644 +--- a/src/pipe.cpp ++++ b/src/pipe.cpp +@@ -83,5 +83,5 @@ ssize_t Pipe::read(void *buffer, unsigned int &nbytes) + void Pipe::signal() + { + // TODO: ignoring return of read/write generates warning; maybe relevant for eventloop work... +- ::write(_fd_write, '\0', 1); ++ ::write(_fd_write, "\0", 1); + } +-- +2.9.4 + diff --git a/buildroot/package/dbus-cpp/Config.in b/buildroot/package/dbus-cpp/Config.in new file mode 100644 index 0000000..e90b211 --- /dev/null +++ b/buildroot/package/dbus-cpp/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_DBUS_CPP + bool "dbus-c++" + depends on BR2_PACKAGE_DBUS + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + depends on BR2_USE_MMU # dbus + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_USES_MUSL # no PTHREAD_RECURSIVE_MUTEX_* + select BR2_PACKAGE_EXPAT + help + dbus-c++ attempts to provide a C++ API for D-BUS. + The library has a glib/gtk and an Ecore mainloop integration. + It also offers an optional own main loop. + + http://sourceforge.net/projects/dbus-cplusplus/ + +comment "dbus-c++ needs a uClibc or glibc toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_DBUS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/dbus-cpp/dbus-cpp.hash b/buildroot/package/dbus-cpp/dbus-cpp.hash new file mode 100644 index 0000000..b3fc3ef --- /dev/null +++ b/buildroot/package/dbus-cpp/dbus-cpp.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 bc11ac297b3cb010be904c72789695543ee3fdf3d75cdc8225fd371385af4e61 libdbus-c++-0.9.0.tar.gz diff --git a/buildroot/package/dbus-cpp/dbus-cpp.mk b/buildroot/package/dbus-cpp/dbus-cpp.mk new file mode 100644 index 0000000..d8468ab --- /dev/null +++ b/buildroot/package/dbus-cpp/dbus-cpp.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# dbus-cpp +# +################################################################################ + +DBUS_CPP_VERSION = 0.9.0 +DBUS_CPP_SITE = http://downloads.sourceforge.net/project/dbus-cplusplus/dbus-c++/$(DBUS_CPP_VERSION) +DBUS_CPP_SOURCE = libdbus-c++-$(DBUS_CPP_VERSION).tar.gz +DBUS_CPP_INSTALL_STAGING = YES +# expat is required for the tools irrespective of dbus xml backend +DBUS_CPP_DEPENDENCIES = host-dbus-cpp host-pkgconf dbus expat +HOST_DBUS_CPP_DEPENDENCIES = host-pkgconf host-dbus host-expat +DBUS_CPP_CONF_OPTS = \ + --disable-examples \ + --disable-tests \ + --disable-doxygen-docs \ + --with-build-libdbus-cxx=$(HOST_DBUS_CPP_BUILDDIR) +HOST_DBUS_CPP_CONF_OPTS = \ + --disable-examples \ + --disable-tests \ + --disable-doxygen-docs \ + --disable-ecore \ + --disable-glib +DBUS_CPP_AUTORECONF = YES +DBUS_CPP_LICENSE = LGPL-2.1+ +DBUS_CPP_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_EFL),y) +DBUS_CPP_CONF_OPTS += --enable-ecore +DBUS_CPP_DEPENDENCIES += efl +else +DBUS_CPP_CONF_OPTS += --disable-ecore +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +DBUS_CPP_CONF_OPTS += --enable-glib +DBUS_CPP_DEPENDENCIES += libglib2 +else +DBUS_CPP_CONF_OPTS += --disable-glib +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/dbus-glib/Config.in b/buildroot/package/dbus-glib/Config.in new file mode 100644 index 0000000..7fe0ac6 --- /dev/null +++ b/buildroot/package/dbus-glib/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_DBUS_GLIB + bool "dbus-glib" + depends on BR2_PACKAGE_DBUS + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + GLib bindings for D-Bus. + + http://www.freedesktop.org/software/dbus + +comment "dbus-glib needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_DBUS + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/dbus-glib/dbus-glib.hash b/buildroot/package/dbus-glib/dbus-glib.hash new file mode 100644 index 0000000..732ae97 --- /dev/null +++ b/buildroot/package/dbus-glib/dbus-glib.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 9f340c7e2352e9cdf113893ca77ca9075d9f8d5e81476bf2bf361099383c602c dbus-glib-0.108.tar.gz diff --git a/buildroot/package/dbus-glib/dbus-glib.mk b/buildroot/package/dbus-glib/dbus-glib.mk new file mode 100644 index 0000000..2257c8e --- /dev/null +++ b/buildroot/package/dbus-glib/dbus-glib.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# dbus-glib +# +################################################################################ + +DBUS_GLIB_VERSION = 0.108 +DBUS_GLIB_SITE = http://dbus.freedesktop.org/releases/dbus-glib +DBUS_GLIB_INSTALL_STAGING = YES +DBUS_GLIB_LICENSE = AFL-2.1 or GPL-2.0+ +DBUS_GLIB_LICENSE_FILES = COPYING + +DBUS_GLIB_CONF_ENV = \ + ac_cv_have_abstract_sockets=yes \ + ac_cv_func_posix_getpwnam_r=yes \ + have_abstract_sockets=yes + +DBUS_GLIB_CONF_OPTS = \ + --disable-tests \ + --disable-xml-docs \ + --with-introspect-xml=$(DBUS_HOST_INTROSPECT) \ + --with-dbus-binding-tool=$(DBUS_GLIB_HOST_BINARY) \ + --disable-bash-completion \ + --disable-doxygen-docs \ + --enable-asserts=yes + +DBUS_GLIB_DEPENDENCIES = host-pkgconf dbus host-dbus host-dbus-glib libglib2 expat + +HOST_DBUS_GLIB_DEPENDENCIES = host-dbus host-expat host-libglib2 + +HOST_DBUS_GLIB_CONF_OPTS = \ + --disable-tests \ + --disable-xml-docs \ + --disable-bash-completion \ + --disable-doxygen-docs \ + --enable-asserts=yes + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# dbus-glib for the host +DBUS_GLIB_HOST_BINARY = $(HOST_DIR)/bin/dbus-binding-tool diff --git a/buildroot/package/dbus-python/Config.in b/buildroot/package/dbus-python/Config.in new file mode 100644 index 0000000..3327263 --- /dev/null +++ b/buildroot/package/dbus-python/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_DBUS_PYTHON + bool "dbus-python" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_PACKAGE_DBUS + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_DBUS_GLIB + # pyexpat: runtime dependency only + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 + help + Python bindings for D-Bus + + http://dbus.freedesktop.org/doc/dbus-python/ + +comment "dbus-python needs a toolchain w/ wchar, threads" + depends on BR2_PACKAGE_DBUS && (BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3) + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/dbus-python/dbus-python.hash b/buildroot/package/dbus-python/dbus-python.hash new file mode 100644 index 0000000..080aada --- /dev/null +++ b/buildroot/package/dbus-python/dbus-python.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 e2f1d6871f74fba23652e51d10873e54f71adab0525833c19bad9e99b1b2f9cc dbus-python-1.2.4.tar.gz diff --git a/buildroot/package/dbus-python/dbus-python.mk b/buildroot/package/dbus-python/dbus-python.mk new file mode 100644 index 0000000..da04b74 --- /dev/null +++ b/buildroot/package/dbus-python/dbus-python.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# dbus-python +# +################################################################################ + +DBUS_PYTHON_VERSION = 1.2.4 +DBUS_PYTHON_SITE = http://dbus.freedesktop.org/releases/dbus-python +DBUS_PYTHON_INSTALL_STAGING = YES +DBUS_PYTHON_LICENSE = MIT +DBUS_PYTHON_LICENSE_FILES = COPYING +DBUS_PYTHON_DEPENDENCIES = dbus-glib +DBUS_PYTHON_CONF_OPTS = --disable-html-docs --disable-api-docs + +ifeq ($(BR2_PACKAGE_PYTHON),y) +DBUS_PYTHON_DEPENDENCIES += python host-python + +DBUS_PYTHON_CONF_ENV += \ + PYTHON=$(HOST_DIR)/bin/python2 \ + PYTHON_INCLUDES="`$(STAGING_DIR)/usr/bin/python2-config --includes`" \ + PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python2-config --ldflags`" +else +DBUS_PYTHON_DEPENDENCIES += python3 host-python3 + +DBUS_PYTHON_CONF_ENV += \ + PYTHON=$(HOST_DIR)/bin/python3 \ + PYTHON_INCLUDES="`$(STAGING_DIR)/usr/bin/python3-config --includes`" \ + PYTHON_LIBS="`$(STAGING_DIR)/usr/bin/python3-config --ldflags`" +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/dbus-triggerd/Config.in b/buildroot/package/dbus-triggerd/Config.in new file mode 100644 index 0000000..331c414 --- /dev/null +++ b/buildroot/package/dbus-triggerd/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_DBUS_TRIGGERD + bool "dbus-triggerd" + depends on BR2_USE_MMU # fork(), dbus + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + depends on BR2_PACKAGE_DBUS + help + dbus-triggerd is a tool to trigger shell-commands upon + receiving a given dbus-signal. + + http://gareus.org/oss/dbustriggerd/start + +comment "dbus-triggerd needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_DBUS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/dbus-triggerd/dbus-triggerd.hash b/buildroot/package/dbus-triggerd/dbus-triggerd.hash new file mode 100644 index 0000000..aa4ad97 --- /dev/null +++ b/buildroot/package/dbus-triggerd/dbus-triggerd.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 3c6d865427bf1b93b16323c796ed6957ce6b2b6fd53f518b1b082d03b939102c dbus-triggerd-ba3dbec805cb707c94c54de21666bf18b79bcc09.tar.gz diff --git a/buildroot/package/dbus-triggerd/dbus-triggerd.mk b/buildroot/package/dbus-triggerd/dbus-triggerd.mk new file mode 100644 index 0000000..7d73a6c --- /dev/null +++ b/buildroot/package/dbus-triggerd/dbus-triggerd.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# dbus-triggerd +# +################################################################################ + +DBUS_TRIGGERD_VERSION = ba3dbec805cb707c94c54de21666bf18b79bcc09 +DBUS_TRIGGERD_SITE = git://rg42.org/dbustriggerd.git +DBUS_TRIGGERD_LICENSE = GPL-2.0+ +DBUS_TRIGGERD_LICENSE_FILES = dbus-triggerd.c +DBUS_TRIGGERD_DEPENDENCIES = host-pkgconf dbus + +define DBUS_TRIGGERD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) all +endef + +define DBUS_TRIGGERD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dbus/Config.in b/buildroot/package/dbus/Config.in new file mode 100644 index 0000000..653f748 --- /dev/null +++ b/buildroot/package/dbus/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_DBUS + bool "dbus" + depends on BR2_TOOLCHAIN_HAS_THREADS + # uses fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_EXPAT + help + The D-Bus message bus system. + + http://www.freedesktop.org/wiki/Software/dbus + +comment "dbus needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/dbus/S30dbus b/buildroot/package/dbus/S30dbus new file mode 100644 index 0000000..b4bcf9c --- /dev/null +++ b/buildroot/package/dbus/S30dbus @@ -0,0 +1,74 @@ +#!/bin/sh +# +# messagebus: The D-BUS systemwide message bus +# +# chkconfig: 345 97 03 +# description: This is a daemon which broadcasts notifications of system events \ +# and other messages. See http://www.freedesktop.org/software/dbus/ +# +# processname: dbus-daemon +# pidfile: /var/run/messagebus.pid +# + +# Sanity checks. +[ -x /usr/bin/dbus-daemon ] || exit 0 + +# Create needed directories. +[ -d /var/run/dbus ] || mkdir -p /var/run/dbus +[ -d /var/lock/subsys ] || mkdir -p /var/lock/subsys +[ -d /tmp/dbus ] || mkdir -p /tmp/dbus + +RETVAL=0 + +start() { + printf "Starting system message bus: " + + dbus-uuidgen --ensure + dbus-daemon --system + RETVAL=$? + echo "done" + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dbus-daemon +} + +stop() { + printf "Stopping system message bus: " + + ## we don't want to kill all the per-user $processname, we want + ## to use the pid file *only*; because we use the fake nonexistent + ## program name "$servicename" that should be safe-ish + killall dbus-daemon + RETVAL=$? + echo "done" + if [ $RETVAL -eq 0 ]; then + rm -f /var/lock/subsys/dbus-daemon + rm -f /var/run/messagebus.pid + fi +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + condrestart) + if [ -f /var/lock/subsys/$servicename ]; then + stop + start + fi + ;; + reload) + echo "Message bus can't reload its configuration, you have to restart it" + RETVAL=$? + ;; + *) + echo "Usage: $0 {start|stop|restart|condrestart|reload}" + ;; +esac +exit $RETVAL diff --git a/buildroot/package/dbus/dbus.hash b/buildroot/package/dbus/dbus.hash new file mode 100644 index 0000000..1aa5aa4 --- /dev/null +++ b/buildroot/package/dbus/dbus.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://dbus.freedesktop.org/releases/dbus/dbus-1.12.2.tar.gz.asc +sha256 272bb5091770b047c8188b926d5e6038fa4fe6745488b2add96b23e2d9a83d88 dbus-1.12.2.tar.gz +# Locally calculated +sha256 0e46f54efb12d04ab5c33713bacd0e140c9a35b57ae29e03c853203266e8f3a1 COPYING diff --git a/buildroot/package/dbus/dbus.mk b/buildroot/package/dbus/dbus.mk new file mode 100644 index 0000000..22ba22e --- /dev/null +++ b/buildroot/package/dbus/dbus.mk @@ -0,0 +1,122 @@ +################################################################################ +# +# dbus +# +################################################################################ + +DBUS_VERSION = 1.12.2 +DBUS_SITE = https://dbus.freedesktop.org/releases/dbus +DBUS_LICENSE = AFL-2.1 or GPL-2.0+ (library, tools), GPL-2.0+ (tools) +DBUS_LICENSE_FILES = COPYING +DBUS_INSTALL_STAGING = YES + +define DBUS_PERMISSIONS + /usr/libexec/dbus-daemon-launch-helper f 4755 0 0 - - - - - +endef + +define DBUS_USERS + dbus -1 dbus -1 * /var/run/dbus - dbus DBus messagebus user +endef + +DBUS_DEPENDENCIES = host-pkgconf expat + +DBUS_CONF_OPTS = \ + --with-dbus-user=dbus \ + --disable-tests \ + --disable-asserts \ + --disable-xml-docs \ + --disable-doxygen-docs \ + --with-xml=expat \ + --with-system-socket=/var/run/dbus/system_bus_socket \ + --with-system-pid-file=/var/run/messagebus.pid + +ifeq ($(BR2_STATIC_LIBS),y) +DBUS_CONF_OPTS += LIBS='-pthread' +endif + +ifeq ($(BR2_microblaze),y) +# microblaze toolchain doesn't provide inotify_rm_* but does have sys/inotify.h +DBUS_CONF_OPTS += --disable-inotify +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +DBUS_CONF_OPTS += --enable-selinux +DBUS_DEPENDENCIES += libselinux +else +DBUS_CONF_OPTS += --disable-selinux +endif + +ifeq ($(BR2_PACKAGE_AUDIT)$(BR2_PACKAGE_LIBCAP_NG),yy) +DBUS_CONF_OPTS += --enable-libaudit +DBUS_DEPENDENCIES += audit libcap-ng +else +DBUS_CONF_OPTS += --disable-libaudit +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +DBUS_CONF_OPTS += --with-x +DBUS_DEPENDENCIES += xlib_libX11 +ifeq ($(BR2_PACKAGE_XLIB_LIBSM),y) +DBUS_DEPENDENCIES += xlib_libSM +endif +else +DBUS_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +DBUS_CONF_OPTS += \ + --enable-systemd \ + --with-systemdsystemunitdir=/usr/lib/systemd/system +DBUS_DEPENDENCIES += systemd +else +DBUS_CONF_OPTS += --disable-systemd +endif + +# fix rebuild (dbus makefile errors out if /var/lib/dbus is a symlink) +define DBUS_REMOVE_VAR_LIB_DBUS + rm -rf $(TARGET_DIR)/var/lib/dbus +endef + +DBUS_PRE_INSTALL_TARGET_HOOKS += DBUS_REMOVE_VAR_LIB_DBUS + +define DBUS_REMOVE_DEVFILES + rm -rf $(TARGET_DIR)/usr/lib/dbus-1.0 +endef + +DBUS_POST_INSTALL_TARGET_HOOKS += DBUS_REMOVE_DEVFILES + +define DBUS_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/dbus/S30dbus \ + $(TARGET_DIR)/etc/init.d/S30dbus + + mkdir -p $(TARGET_DIR)/var/lib + rm -rf $(TARGET_DIR)/var/lib/dbus + ln -sf /tmp/dbus $(TARGET_DIR)/var/lib/dbus +endef + +define DBUS_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/var/lib/dbus + ln -sf /etc/machine-id $(TARGET_DIR)/var/lib/dbus/machine-id +endef + +HOST_DBUS_DEPENDENCIES = host-pkgconf host-expat +HOST_DBUS_CONF_OPTS = \ + --with-dbus-user=dbus \ + --disable-tests \ + --disable-asserts \ + --disable-selinux \ + --disable-xml-docs \ + --disable-doxygen-docs \ + --without-x \ + --with-xml=expat + +# dbus for the host +DBUS_HOST_INTROSPECT = $(HOST_DBUS_DIR)/introspect.xml + +HOST_DBUS_GEN_INTROSPECT = \ + $(HOST_DIR)/bin/dbus-daemon --introspect > $(DBUS_HOST_INTROSPECT) + +HOST_DBUS_POST_INSTALL_HOOKS += HOST_DBUS_GEN_INTROSPECT + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/dc3dd/0001-no_man.patch b/buildroot/package/dc3dd/0001-no_man.patch new file mode 100644 index 0000000..9fefc8c --- /dev/null +++ b/buildroot/package/dc3dd/0001-no_man.patch @@ -0,0 +1,15 @@ +Remove the man directory to the subdirs to prevent building the man pages + +Signed-off-by: Benoît Allard + +--- a/Makefile.am 2017-03-27 09:53:19.988820588 +0200 ++++ b/Makefile.am 2017-03-27 09:54:14.325817466 +0200 +@@ -15,7 +15,7 @@ + # You should have received a copy of the GNU General Public License + # along with this program. If not, see . + +-SUBDIRS = lib src man po ++SUBDIRS = lib src po + EXTRA_DIST = cfg.mk maint.mk \ + .prev-version THANKS-to-translators THANKStt.in \ + .version \ diff --git a/buildroot/package/dc3dd/0002-fix-autoreconf.patch b/buildroot/package/dc3dd/0002-fix-autoreconf.patch new file mode 100644 index 0000000..85e0a36 --- /dev/null +++ b/buildroot/package/dc3dd/0002-fix-autoreconf.patch @@ -0,0 +1,32 @@ +Remove use of AM_C_PROTOTYPES to fix autoreconf + +The AM_C_PROTOTYPES macro no longer exists since automake 1.12. It +existed to support de-ANSI-fication of code using ansi2knr. It was +simply removed from coreutils m4/jm-macros.m4 in commit +88873501cff9ed937edf969cedd693517ab0a293, but this change was not +propagated to dc3dd, causing an autoreconf failure: + +configure.ac:45: error: automatic de-ANSI-fication support has been removed +/home/peko/autobuild/instance-0/output/host/usr/share/aclocal-1.15/obsolete.m4:26: AM_C_PROTOTYPES is expanded from... +m4/jm-macros.m4:124: gl_CHECK_ALL_TYPES is expanded from... +m4/jm-macros.m4:22: coreutils_MACROS is expanded from... +configure.ac:45: the top level + +Signed-off-by: Thomas Petazzoni + +Index: b/m4/jm-macros.m4 +=================================================================== +--- a/m4/jm-macros.m4 ++++ b/m4/jm-macros.m4 +@@ -128,11 +128,6 @@ + dnl whether functions and headers are available, whether they work, etc. + AC_REQUIRE([AC_SYS_LARGEFILE]) + +- dnl This test must precede tests of compiler characteristics like +- dnl that for the inline keyword, since it may change the degree to +- dnl which the compiler supports such features. +- AC_REQUIRE([AM_C_PROTOTYPES]) +- + dnl Checks for typedefs, structures, and compiler characteristics. + AC_REQUIRE([AC_C_BIGENDIAN]) + AC_REQUIRE([AC_C_VOLATILE]) diff --git a/buildroot/package/dc3dd/Config.in b/buildroot/package/dc3dd/Config.in new file mode 100644 index 0000000..0383897 --- /dev/null +++ b/buildroot/package/dc3dd/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_DC3DD + bool "dc3dd" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_MUSL + help + dc3dd is a patch to the GNU dd program, this version has + several features intended for forensic acquisition of data. + Highlights include hashing on-the-fly, split output files, + pattern writing, a progress meter, and file verification. + + https://sourceforge.net/projects/dc3dd/ + +comment "dc3dd needs a glibc or uClibc toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/dc3dd/dc3dd.hash b/buildroot/package/dc3dd/dc3dd.hash new file mode 100644 index 0000000..5490d8d --- /dev/null +++ b/buildroot/package/dc3dd/dc3dd.hash @@ -0,0 +1,4 @@ +# From https://sourceforge.net/projects/dc3dd/files/dc3dd/7.2/ +sha1 1bfe81a921a8473a6ecb46f328ecaab761afb55d dc3dd-7.2.641.tar.xz +# Locally computed +sha256 7f50aadc38649845ab11014d11013928411c9d2128c941e9630939d4c28cae6d dc3dd-7.2.641.tar.xz diff --git a/buildroot/package/dc3dd/dc3dd.mk b/buildroot/package/dc3dd/dc3dd.mk new file mode 100644 index 0000000..cc89bb6 --- /dev/null +++ b/buildroot/package/dc3dd/dc3dd.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# dc3dd +# +################################################################################ + +DC3DD_VERSION_MAJOR = 7.2 +DC3DD_VERSION = $(DC3DD_VERSION_MAJOR).641 +DC3DD_SOURCE = dc3dd-$(DC3DD_VERSION).tar.xz +DC3DD_SITE = https://downloads.sourceforge.net/project/dc3dd/dc3dd/$(DC3DD_VERSION_MAJOR) +DC3DD_LICENSE = GPL-3.0+ +DC3DD_LICENSE_FILES = COPYING +# We are patching Makefile.am, so we need to autoreconf. We also need to +# enable gettextize as dc3dd comes with an old gettext infra. +DC3DD_AUTORECONF = YES +DC3DD_GETTEXTIZE = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/dcron/Config.in b/buildroot/package/dcron/Config.in new file mode 100644 index 0000000..d7f66bd --- /dev/null +++ b/buildroot/package/dcron/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_DCRON + bool "dcron" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + dcron is a time-based job scheduler with anacron-like + features. It works as a background daemon that parses + individual crontab files and executes commands on behalf of + the users in question. + + Upon installation, this package will enable a system level + cron daemon with hourly, daily, weekly and monthly crontabs. + + However, it doesn't allow non root users to create their own + crontab file. This is because /var/spool/cron/crontabs is + non user writable. + + Typically, a crontab group is created on the system and + users allowed to create crontab entries are added into this + group, while crontab executable is owned by root:crontab + with sgid bit enabled. + + http://www.jimpryor.net/linux/dcron.html diff --git a/buildroot/package/dcron/S90dcron b/buildroot/package/dcron/S90dcron new file mode 100644 index 0000000..de21d2c --- /dev/null +++ b/buildroot/package/dcron/S90dcron @@ -0,0 +1,22 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting cron ... " + start-stop-daemon -S -q -m -b -p /var/run/dcron.pid --exec /usr/sbin/crond -- -f + echo "done." + ;; + stop) + printf "Stopping cron ..." + start-stop-daemon -K -q -p /var/run/dcron.pid + echo "done." + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" + ;; +esac diff --git a/buildroot/package/dcron/dcron.hash b/buildroot/package/dcron/dcron.hash new file mode 100644 index 0000000..3e53ddc --- /dev/null +++ b/buildroot/package/dcron/dcron.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9e50edb6f5bd8153b16bad05087d985e5153ce45cc01ae77e7f842213fb4a824 dcron-4.5.tar.gz diff --git a/buildroot/package/dcron/dcron.mk b/buildroot/package/dcron/dcron.mk new file mode 100644 index 0000000..7e81b63 --- /dev/null +++ b/buildroot/package/dcron/dcron.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# dcron +# +################################################################################ + +DCRON_VERSION = 4.5 +DCRON_SITE = http://www.jimpryor.net/linux/releases +# The source code does not specify the version of the GPL that is used. +DCRON_LICENSE = GPL + +# Overwrite cron-related Busybox commands if available +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +DCRON_DEPENDENCIES = busybox +endif + +define DCRON_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define DCRON_INSTALL_TARGET_CMDS + $(INSTALL) -D -m0700 $(@D)/crond $(TARGET_DIR)/usr/sbin/crond + $(INSTALL) -D -m4755 $(@D)/crontab $(TARGET_DIR)/usr/bin/crontab + $(INSTALL) -D -m0644 $(@D)/extra/root.crontab $(TARGET_DIR)/etc/cron.d/system + # Busybox provides run-parts, so there is no need to use nor install provided run-cron + $(SED) 's#/usr/sbin/run-cron#/bin/run-parts#g' $(TARGET_DIR)/etc/cron.d/system + $(INSTALL) -d -m0755 $(TARGET_DIR)/var/spool/cron/crontabs \ + $(TARGET_DIR)/etc/cron.daily $(TARGET_DIR)/etc/cron.hourly \ + $(TARGET_DIR)/etc/cron.monthly $(TARGET_DIR)/etc/cron.weekly +endef + +define DCRON_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/dcron/S90dcron $(TARGET_DIR)/etc/init.d/S90dcron +endef + +define DCRON_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/dcron/dcron.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dcron.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/dcron.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/dcron.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dcron/dcron.service b/buildroot/package/dcron/dcron.service new file mode 100644 index 0000000..924ed72 --- /dev/null +++ b/buildroot/package/dcron/dcron.service @@ -0,0 +1,10 @@ +[Unit] +Description=Task scheduler daemon +After=syslog.target + +[Service] +ExecStart=/usr/sbin/crond -S +Type=forking + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/ddrescue/0001-io.cc-add-stdio.h-include.patch b/buildroot/package/ddrescue/0001-io.cc-add-stdio.h-include.patch new file mode 100644 index 0000000..e719c70 --- /dev/null +++ b/buildroot/package/ddrescue/0001-io.cc-add-stdio.h-include.patch @@ -0,0 +1,36 @@ +From 0f72787b922c53c33d497b17300a959b911e621f Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Tue, 14 Feb 2017 20:12:05 +0100 +Subject: [PATCH] io.cc: add stdio.h include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes buildroot compile failure with uclibc [1]: + + In file included from io.cc:28:0: + block.h:219:22: error: ‘FILE’ has not been declared + int write_mapfile( FILE * f = 0, const bool timestamp = false, + +[1] http://autobuild.buildroot.net/results/4ac0754f1cc5ea934d6437e89d1f4906fb3fd0a8 + +Signed-off-by: Peter Seiderer +--- + io.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/io.cc b/io.cc +index 36b8341..2d6a76e 100644 +--- a/io.cc ++++ b/io.cc +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + + #include "block.h" +-- +2.11.0 + diff --git a/buildroot/package/ddrescue/Config.in b/buildroot/package/ddrescue/Config.in new file mode 100644 index 0000000..a58561c --- /dev/null +++ b/buildroot/package/ddrescue/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DDRESCUE + bool "ddrescue" + depends on BR2_INSTALL_LIBSTDCPP + help + GNU ddrescue is a data recovery tool. It copies data from one + file or block device (hard disc, cdrom, etc) to another, + trying to rescue the good parts first in case of read errors. + + http://www.gnu.org/software/ddrescue/ddrescue.html + +comment "ddrescue needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/ddrescue/ddrescue.hash b/buildroot/package/ddrescue/ddrescue.hash new file mode 100644 index 0000000..bffa615 --- /dev/null +++ b/buildroot/package/ddrescue/ddrescue.hash @@ -0,0 +1,2 @@ +# From http://lists.gnu.org/archive/html/info-gnu/2017-02/msg00003.html +sha1 df981672a612639ad0934e3fa6546a41d2feb99e ddrescue-1.22.tar.lz diff --git a/buildroot/package/ddrescue/ddrescue.mk b/buildroot/package/ddrescue/ddrescue.mk new file mode 100644 index 0000000..9432e7a --- /dev/null +++ b/buildroot/package/ddrescue/ddrescue.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# ddrescue +# +################################################################################ + +DDRESCUE_VERSION = 1.22 +DDRESCUE_SOURCE = ddrescue-$(DDRESCUE_VERSION).tar.lz +DDRESCUE_SITE = http://download.savannah.gnu.org/releases/ddrescue +DDRESCUE_LICENSE = GPL-2.0+ +DDRESCUE_LICENSE_FILES = COPYING + +define DDRESCUE_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_MAKE_ENV) ./configure \ + --prefix=/usr \ + $(TARGET_CONFIGURE_OPTS) \ + ) +endef + +define DDRESCUE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define DDRESCUE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/debianutils/Config.in b/buildroot/package/debianutils/Config.in new file mode 100644 index 0000000..c43f330 --- /dev/null +++ b/buildroot/package/debianutils/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DEBIANUTILS + bool "debianutils" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Miscellaneous utilities specific to Debian. + + The specific utilities included are: add-shell installkernel + ischroot remove-shell run-parts savelog tempfile which. + + https://tracker.debian.org/pkg/debianutils diff --git a/buildroot/package/debianutils/debianutils.hash b/buildroot/package/debianutils/debianutils.hash new file mode 100644 index 0000000..cd54e0b --- /dev/null +++ b/buildroot/package/debianutils/debianutils.hash @@ -0,0 +1,2 @@ +# From http://ftp.de.debian.org/debian/pool/main/d/debianutils/debianutils_4.8.1.dsc +sha256 2c395c0bdcfe89de30828b1d25cc5549ded5225a6d3625fbcb2cc0881ef5f026 debianutils_4.8.1.tar.xz diff --git a/buildroot/package/debianutils/debianutils.mk b/buildroot/package/debianutils/debianutils.mk new file mode 100644 index 0000000..86f201d --- /dev/null +++ b/buildroot/package/debianutils/debianutils.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# debianutils +# +################################################################################ + +DEBIANUTILS_VERSION = 4.8.1 +DEBIANUTILS_SOURCE = debianutils_$(DEBIANUTILS_VERSION).tar.xz +DEBIANUTILS_SITE = http://snapshot.debian.org/archive/debian/20161118T033019Z/pool/main/d/debianutils +DEBIANUTILS_CONF_OPTS = --exec-prefix=/ +# Make sure we override the busybox tools, such as which +DEBIANUTILS_DEPENDENCIES = $(if $(BR2_PACKAGE_BUSYBOX),busybox) +DEBIANUTILS_LICENSE = GPL-2.0+, SMAIL (savelog) +DEBIANUTILS_LICENSE_FILES = debian/copyright + +$(eval $(autotools-package)) diff --git a/buildroot/package/dejavu/Config.in b/buildroot/package/dejavu/Config.in new file mode 100644 index 0000000..5d21e56 --- /dev/null +++ b/buildroot/package/dejavu/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_DEJAVU + bool "DejaVu fonts" + help + The DejaVu fonts are a font family based on the Vera Fonts. + Its purpose is to provide a wider range of characters while + maintaining the original look and feel through the process + of collaborative development, under a Free license. + + http://dejavu-fonts.org + +if BR2_PACKAGE_DEJAVU + +config BR2_PACKAGE_DEJAVU_MONO + bool "mono fonts" + default y + +config BR2_PACKAGE_DEJAVU_SANS + bool "sans fonts" + default y + +config BR2_PACKAGE_DEJAVU_SERIF + bool "serif fonts" + default y + +config BR2_PACKAGE_DEJAVU_SANS_CONDENSED + bool "sans condensed fonts" + default y + +config BR2_PACKAGE_DEJAVU_SERIF_CONDENSED + bool "serif condensed fonts" + default y + +endif diff --git a/buildroot/package/dejavu/dejavu.hash b/buildroot/package/dejavu/dejavu.hash new file mode 100644 index 0000000..db7365a --- /dev/null +++ b/buildroot/package/dejavu/dejavu.hash @@ -0,0 +1,2 @@ +# From https://dejavu-fonts.github.io/Download.html +sha256 fa9ca4d13871dd122f61258a80d01751d603b4d3ee14095d65453b4e846e17d7 dejavu-fonts-ttf-2.37.tar.bz2 diff --git a/buildroot/package/dejavu/dejavu.mk b/buildroot/package/dejavu/dejavu.mk new file mode 100644 index 0000000..9b57f09 --- /dev/null +++ b/buildroot/package/dejavu/dejavu.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# dejavu +# +################################################################################ + +DEJAVU_VERSION = 2.37 +DEJAVU_SITE = https://sourceforge.net/projects/dejavu/files/dejavu/$(DEJAVU_VERSION) +DEJAVU_SOURCE = dejavu-fonts-ttf-$(DEJAVU_VERSION).tar.bz2 +DEJAVU_LICENSE_FILES = LICENSE + +DEJAVU_FONTS_INSTALL = +DEJAVU_FONTCONFIG_CONF_INSTALL = + +ifeq ($(BR2_PACKAGE_DEJAVU_MONO),y) +DEJAVU_FONTS_INSTALL += DejaVuSansMono*.ttf +DEJAVU_FONTCONFIG_CONF_INSTALL += \ + 20-unhint-small-dejavu-sans-mono.conf \ + 57-dejavu-sans-mono.conf +endif + +ifeq ($(BR2_PACKAGE_DEJAVU_SANS),y) +DEJAVU_FONTS_INSTALL += DejaVuSans.ttf DejaVuSans-*.ttf +DEJAVU_FONTCONFIG_CONF_INSTALL += \ + 20-unhint-small-dejavu-sans.conf \ + 57-dejavu-sans.conf +endif + +ifeq ($(BR2_PACKAGE_DEJAVU_SERIF),y) +DEJAVU_FONTS_INSTALL += DejaVuSerif.ttf DejaVuSerif-*.ttf +DEJAVU_FONTCONFIG_CONF_INSTALL += \ + 20-unhint-small-dejavu-serif.conf \ + 57-dejavu-serif.conf +endif + +ifeq ($(BR2_PACKAGE_DEJAVU_SANS_CONDENSED),y) +DEJAVU_FONTS_INSTALL += DejaVuSansCondensed*.ttf +endif + +ifeq ($(BR2_PACKAGE_DEJAVU_SERIF_CONDENSED),y) +DEJAVU_FONTS_INSTALL += DejaVuSerifCondensed*.ttf +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +define DEJAVU_FONTCONFIG_CONF_INSTALL_CMDS + for i in $(DEJAVU_FONTCONFIG_CONF_INSTALL) ; do \ + $(INSTALL) -D -m 0644 $(@D)/fontconfig/$$i \ + $(TARGET_DIR)/usr/share/fontconfig/conf.avail/$$i || exit 1 ; \ + done +endef +endif + +define DEJAVU_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/fonts/dejavu/ + for i in $(DEJAVU_FONTS_INSTALL) ; do \ + $(INSTALL) -m 0644 $(@D)/ttf/$$i \ + $(TARGET_DIR)/usr/share/fonts/dejavu/ || exit 1 ; \ + done + $(DEJAVU_FONTCONFIG_CONF_INSTALL_CMDS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/devmem2/0001-be-coherent-in-type-usage.patch b/buildroot/package/devmem2/0001-be-coherent-in-type-usage.patch new file mode 100644 index 0000000..1777387 --- /dev/null +++ b/buildroot/package/devmem2/0001-be-coherent-in-type-usage.patch @@ -0,0 +1,52 @@ +From 6570e7afe1eebd64022b871b9ebd9a76be267f57 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 29 Jun 2014 16:27:49 +0200 +Subject: [PATCH] Be coherent in type usage + +- no need to use off_t because it is read from strtoul() +- print unsigned int type correctly + +When built with _FILE_OFFSET_BITS=64, off_t becomes an long long int +and was printed as an unsigned int which lead to a garbled output. + +Signed-off-by: Colin Didier +Signed-off-by: Thomas Petazzoni +--- + devmem2.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/devmem2.c b/devmem2.c +index 7732ecb..7aa5c79 100644 +--- a/devmem2.c ++++ b/devmem2.c +@@ -58,8 +58,7 @@ + int main(int argc, char **argv) { + int fd; + void *map_base, *virt_addr; +- unsigned long read_result, writeval; +- off_t target; ++ unsigned long target, read_result, writeval; + int access_type = 'w'; + + if(argc < 2) { +@@ -101,7 +100,7 @@ int main(int argc, char **argv) { + fprintf(stderr, "Illegal data type '%c'.\n", access_type); + exit(2); + } +- printf("Value at address 0x%X (%p): 0x%X\n", target, virt_addr, read_result); ++ printf("Value at address 0x%lX (%p): 0x%X\n", target, virt_addr, read_result); + fflush(stdout); + + if(argc > 3) { +@@ -120,7 +119,7 @@ int main(int argc, char **argv) { + read_result = *((unsigned long *) virt_addr); + break; + } +- printf("Written 0x%X; readback 0x%X\n", writeval, read_result); ++ printf("Written 0x%lX; readback 0x%X\n", writeval, read_result); + fflush(stdout); + } + +-- +2.0.0 + diff --git a/buildroot/package/devmem2/Config.in b/buildroot/package/devmem2/Config.in new file mode 100644 index 0000000..64d6400 --- /dev/null +++ b/buildroot/package/devmem2/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_DEVMEM2 + bool "devmem2" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Simple program to read/write from/to any location in memory. + + http://free-electrons.com/pub/mirror/devmem2.c diff --git a/buildroot/package/devmem2/devmem2.hash b/buildroot/package/devmem2/devmem2.hash new file mode 100644 index 0000000..aa638d6 --- /dev/null +++ b/buildroot/package/devmem2/devmem2.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3b15515693bae1ebd14d914e46d388edfec2175829ea1576a7a0c8606ebbe639 devmem2.c +sha256 560913d09310d446920c16bd0aca1ff21d3b6fedd527195bacfc832ce343e0ae devmem2.c.license diff --git a/buildroot/package/devmem2/devmem2.mk b/buildroot/package/devmem2/devmem2.mk new file mode 100644 index 0000000..eb92db6 --- /dev/null +++ b/buildroot/package/devmem2/devmem2.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# devmem2 +# +################################################################################ + +DEVMEM2_SITE = http://free-electrons.com/pub/mirror +DEVMEM2_SOURCE = devmem2.c +DEVMEM2_VERSION = 1 +DEVMEM2_LICENSE = GPL-2.0+ +DEVMEM2_LICENSE_FILES = devmem2.c.license + +define DEVMEM2_EXTRACT_CMDS + cp $(DL_DIR)/$($(PKG)_SOURCE) $(@D)/ +endef + +define DEVMEM2_EXTRACT_LICENSE + head -n 38 $(@D)/devmem2.c >$(@D)/devmem2.c.license +endef +DEVMEM2_PRE_PATCH_HOOKS += DEVMEM2_EXTRACT_LICENSE + +define DEVMEM2_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) devmem2 +endef + +define DEVMEM2_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/devmem2 $(TARGET_DIR)/sbin/devmem2 +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dfu-util/Config.in b/buildroot/package/dfu-util/Config.in new file mode 100644 index 0000000..201c8a7 --- /dev/null +++ b/buildroot/package/dfu-util/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_DFU_UTIL + bool "dfu-util" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBUSB + help + Dfu-util is the host side implementation of the DFU 1.0 + specification of the USB forum. DFU is intended to download + and upload firmware to devices connected over USB. + + http://dfu-util.sourceforge.net/ + +comment "dfu-util needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/dfu-util/Config.in.host b/buildroot/package/dfu-util/Config.in.host new file mode 100644 index 0000000..ea47a36 --- /dev/null +++ b/buildroot/package/dfu-util/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_DFU_UTIL + bool "host dfu-util" + help + Dfu-util is the host side implementation of the DFU 1.0 + specification of the USB forum. DFU is intended to download + and upload firmware to devices connected over USB. + + http://dfu-util.sourceforge.net/ diff --git a/buildroot/package/dfu-util/dfu-util.hash b/buildroot/package/dfu-util/dfu-util.hash new file mode 100644 index 0000000..bf618d1 --- /dev/null +++ b/buildroot/package/dfu-util/dfu-util.hash @@ -0,0 +1,5 @@ +# From http://dfu-util.sourceforge.net/releases/dfu-util-0.9.tar.gz.md5 +md5 233bb1e08ef4b405062445d84e28fde6 dfu-util-0.9.tar.gz + +# Locally computed +sha256 36428c6a6cb3088cad5a3592933385253da5f29f2effa61518ee5991ea38f833 dfu-util-0.9.tar.gz diff --git a/buildroot/package/dfu-util/dfu-util.mk b/buildroot/package/dfu-util/dfu-util.mk new file mode 100644 index 0000000..5e8ba5a --- /dev/null +++ b/buildroot/package/dfu-util/dfu-util.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# dfu-util +# +################################################################################ + +DFU_UTIL_VERSION = 0.9 +DFU_UTIL_SITE = http://dfu-util.sourceforge.net/releases +DFU_UTIL_LICENSE = GPL-2.0+ +DFU_UTIL_LICENSE_FILES = COPYING + +DFU_UTIL_DEPENDENCIES = libusb +HOST_DFU_UTIL_DEPENDENCIES = host-libusb + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/dhcp/0001-bind-cross-compile.patch b/buildroot/package/dhcp/0001-bind-cross-compile.patch new file mode 100644 index 0000000..f7c42c6 --- /dev/null +++ b/buildroot/package/dhcp/0001-bind-cross-compile.patch @@ -0,0 +1,24 @@ +bind cross compile support integration + +Pass system types from dhcp configure to bind configure. + +This patch is submitted upstream as part of a cross compiling enhancement +suggestion to dhcp-suggest@isc.org. Reference ISC-Bugs #41502. + +Signed-off-by: Doug Kehn + +Index: dhcp-4.3.3-P1/bind/Makefile.in +=================================================================== +--- dhcp-4.3.3-P1.orig/bind/Makefile.in ++++ dhcp-4.3.3-P1/bind/Makefile.in +@@ -30,7 +30,9 @@ bindconfig = --disable-kqueue --disable- + --without-openssl --without-libxml2 --enable-exportlib \ + --with-gssapi=no --enable-threads=no @BINDCONFIG@ \ + --with-export-includedir=${binddir}/include \ +- --with-export-libdir=${binddir}/lib ++ --with-export-libdir=${binddir}/lib \ ++ --target=@target_alias@ --host=@host_alias@ \ ++ --build=@build_alias@ + + @BIND_ATF_FALSE@cleandirs = ./lib ./include + @BIND_ATF_TRUE@cleandirs = ./lib ./include ./atf diff --git a/buildroot/package/dhcp/0002-v4_3-Plugs-a-socket-descriptor-leak-in-OMAPI.patch b/buildroot/package/dhcp/0002-v4_3-Plugs-a-socket-descriptor-leak-in-OMAPI.patch new file mode 100644 index 0000000..df29465 --- /dev/null +++ b/buildroot/package/dhcp/0002-v4_3-Plugs-a-socket-descriptor-leak-in-OMAPI.patch @@ -0,0 +1,51 @@ +From 5097bc0559f592683faac1f67bf350e1bddf6ed4 Mon Sep 17 00:00:00 2001 +From: Thomas Markwalder +Date: Thu, 7 Dec 2017 11:39:30 -0500 +Subject: [PATCH] [v4_3] Plugs a socket descriptor leak in OMAPI + + Merges in rt46767. + +[baruch: drop RELNOTES hunk] +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit 5097bc0559f + + omapip/buffer.c | 9 +++++++++ + omapip/message.c | 2 +- + +diff --git a/omapip/buffer.c b/omapip/buffer.c +index f7fdc3250e82..809034d1317b 100644 +--- a/omapip/buffer.c ++++ b/omapip/buffer.c +@@ -566,6 +566,15 @@ isc_result_t omapi_connection_writer (omapi_object_t *h) + omapi_buffer_dereference (&buffer, MDL); + } + } ++ ++ /* If we had data left to write when we're told to disconnect, ++ * we need recall disconnect, now that we're done writing. ++ * See rt46767. */ ++ if (c->out_bytes == 0 && c->state == omapi_connection_disconnecting) { ++ omapi_disconnect (h, 1); ++ return ISC_R_SHUTTINGDOWN; ++ } ++ + return ISC_R_SUCCESS; + } + +diff --git a/omapip/message.c b/omapip/message.c +index 59ccdc2c05cf..21bcfc3822e7 100644 +--- a/omapip/message.c ++++ b/omapip/message.c +@@ -339,7 +339,7 @@ isc_result_t omapi_message_unregister (omapi_object_t *mo) + } + + #ifdef DEBUG_PROTOCOL +-static const char *omapi_message_op_name(int op) { ++const char *omapi_message_op_name(int op) { + switch (op) { + case OMAPI_OP_OPEN: return "OMAPI_OP_OPEN"; + case OMAPI_OP_REFRESH: return "OMAPI_OP_REFRESH"; +-- +2.15.1 + diff --git a/buildroot/package/dhcp/0003-Correct-buffer-overrun-in-pretty_print_option.patch b/buildroot/package/dhcp/0003-Correct-buffer-overrun-in-pretty_print_option.patch new file mode 100644 index 0000000..aad20ff --- /dev/null +++ b/buildroot/package/dhcp/0003-Correct-buffer-overrun-in-pretty_print_option.patch @@ -0,0 +1,59 @@ +From b8c29336bd5401a5f962bc6ddfa4ebb6f0274f3c Mon Sep 17 00:00:00 2001 +From: Thomas Markwalder +Date: Sat, 10 Feb 2018 12:15:27 -0500 +Subject: [PATCH 1/2] Correct buffer overrun in pretty_print_option + + Merges in rt47139. + +[baruch: drop RELNOTES and test; address CVE-2018-5732] +Signed-off-by: Baruch Siach +--- +Upstream status: backported from commit c5931725b48 +--- + common/options.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/common/options.c b/common/options.c +index 5547287fb6e5..2ed6b16c6412 100644 +--- a/common/options.c ++++ b/common/options.c +@@ -1758,7 +1758,8 @@ format_min_length(format, oc) + + + /* Format the specified option so that a human can easily read it. */ +- ++/* Maximum pretty printed size */ ++#define MAX_OUTPUT_SIZE 32*1024 + const char *pretty_print_option (option, data, len, emit_commas, emit_quotes) + struct option *option; + const unsigned char *data; +@@ -1766,8 +1767,9 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes) + int emit_commas; + int emit_quotes; + { +- static char optbuf [32768]; /* XXX */ +- static char *endbuf = &optbuf[sizeof(optbuf)]; ++ /* We add 128 byte pad so we don't have to add checks everywhere. */ ++ static char optbuf [MAX_OUTPUT_SIZE + 128]; /* XXX */ ++ static char *endbuf = optbuf + MAX_OUTPUT_SIZE; + int hunksize = 0; + int opthunk = 0; + int hunkinc = 0; +@@ -2193,7 +2195,14 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes) + log_error ("Unexpected format code %c", + fmtbuf [j]); + } ++ + op += strlen (op); ++ if (op >= endbuf) { ++ log_error ("Option data exceeds" ++ " maximum size %d", MAX_OUTPUT_SIZE); ++ return (""); ++ } ++ + if (dp == data + len) + break; + if (j + 1 < numelem && comma != ':') +-- +2.16.1 + diff --git a/buildroot/package/dhcp/0004-Corrected-refcnt-loss-in-option-parsing.patch b/buildroot/package/dhcp/0004-Corrected-refcnt-loss-in-option-parsing.patch new file mode 100644 index 0000000..c79bbc7 --- /dev/null +++ b/buildroot/package/dhcp/0004-Corrected-refcnt-loss-in-option-parsing.patch @@ -0,0 +1,40 @@ +From 93b5b67dd31b9efcbfaabc2df1e1d9d164a5e04a Mon Sep 17 00:00:00 2001 +From: Thomas Markwalder +Date: Fri, 9 Feb 2018 14:46:08 -0500 +Subject: [PATCH 2/2] Corrected refcnt loss in option parsing + + Merges in 47140. + +[baruch: drop RELNOTES and tests; address CVE-2018-5733] +Signed-off-by: Baruch Siach +--- +Upstream status: backported from commit 197b26f25309 +--- + common/options.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/common/options.c b/common/options.c +index 2ed6b16c6412..25b29a6be7bb 100644 +--- a/common/options.c ++++ b/common/options.c +@@ -3,7 +3,7 @@ + DHCP options parsing and reassembly. */ + + /* +- * Copyright (c) 2004-2017 by Internet Systems Consortium, Inc. ("ISC") ++ * Copyright (c) 2004-2018 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 1995-2003 by Internet Software Consortium + * + * Permission to use, copy, modify, and distribute this software for any +@@ -177,6 +177,8 @@ int parse_option_buffer (options, buffer, length, universe) + + /* If the length is outrageous, the options are bad. */ + if (offset + len > length) { ++ /* Avoid reference count overflow */ ++ option_dereference(&option, MDL); + reason = "option length exceeds option buffer length"; + bogus: + log_error("parse_option_buffer: malformed option " +-- +2.16.1 + diff --git a/buildroot/package/dhcp/Config.in b/buildroot/package/dhcp/Config.in new file mode 100644 index 0000000..5340830 --- /dev/null +++ b/buildroot/package/dhcp/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_DHCP + bool "dhcp (ISC)" + # fork() + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + DHCP relay agent from the ISC DHCP distribution. + + http://www.isc.org/products/DHCP + +if BR2_PACKAGE_DHCP + +config BR2_PACKAGE_DHCP_SERVER + bool "dhcp server" + select BR2_PACKAGE_SYSTEMD_TMPFILES if BR2_PACKAGE_SYSTEMD + help + DHCP server from the ISC DHCP distribution. + +config BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK + bool "Enable delayed ACK feature" + depends on BR2_PACKAGE_DHCP_SERVER + help + Enable delayed ACK feature in the ISC DHCP server. + +config BR2_PACKAGE_DHCP_RELAY + bool "dhcp relay" + help + DHCP relay agent from the ISC DHCP distribution. + +config BR2_PACKAGE_DHCP_CLIENT + bool "dhcp client" + help + DHCP client from the ISC DHCP distribution. + +endif diff --git a/buildroot/package/dhcp/S80dhcp-relay b/buildroot/package/dhcp/S80dhcp-relay new file mode 100755 index 0000000..211431b --- /dev/null +++ b/buildroot/package/dhcp/S80dhcp-relay @@ -0,0 +1,53 @@ +#!/bin/sh +# +# $Id: dhcp3-relay,v 1.1 2004/04/16 15:41:08 ml Exp $ +# + +# What servers should the DHCP relay forward requests to? +# e.g: SERVERS="192.168.0.1" +SERVERS="" + +# On what interfaces should the DHCP relay (dhrelay) serve DHCP requests? +INTERFACES="" + +# Additional options that are passed to the DHCP relay daemon? +OPTIONS="" + +# Read configuration variable file if it is present +CFG_FILE="/etc/default/dhcrelay" +[ -r "${CFG_FILE}" ] && . "${CFG_FILE}" + +# Sanity checks +test -f /usr/sbin/dhcrelay || exit 0 +test -n "$INTERFACES" || exit 0 +test -n "$SERVERS" || exit 0 + +# Build command line for interfaces (will be passed to dhrelay below.) +IFCMD="" +for I in $INTERFACES; do + IFCMD=${IFCMD}"-i "${I}" " +done + +DHCRELAYPID=/var/run/dhcrelay.pid + +case "$1" in + start) + printf "Starting DHCP relay: " + start-stop-daemon -S -q -x /usr/sbin/dhcrelay -- -q $OPTIONS $IFCMD $SERVERS + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping DHCP relay: " + start-stop-daemon -K -q -x /usr/sbin/dhcrelay + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart | force-reload) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" + exit 1 +esac + +exit 0 diff --git a/buildroot/package/dhcp/S80dhcp-server b/buildroot/package/dhcp/S80dhcp-server new file mode 100755 index 0000000..21092ba --- /dev/null +++ b/buildroot/package/dhcp/S80dhcp-server @@ -0,0 +1,49 @@ +#!/bin/sh +# +# $Id: dhcp3-server.init.d,v 1.4 2003/07/13 19:12:41 mdz Exp $ +# + +# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? +# Separate multiple interfaces with spaces, e.g. "eth0 eth1". +INTERFACES="" + +# Additional options that are passed to the DHCP server daemon? +OPTIONS="" + +NAME="dhcpd" +DAEMON="/usr/sbin/${NAME}" +CFG_FILE="/etc/default/${NAME}" + +# Read configuration variable file if it is present +[ -r "${CFG_FILE}" ] && . "${CFG_FILE}" + +# Sanity checks +test -f /usr/sbin/dhcpd || exit 0 +test -f /etc/dhcp/dhcpd.conf || exit 0 + +case "$1" in + start) + printf "Starting DHCP server: " + test -d /var/lib/dhcp/ || mkdir -p /var/lib/dhcp/ + test -f /var/lib/dhcp/dhcpd.leases || touch /var/lib/dhcp/dhcpd.leases + start-stop-daemon -S -q -x ${DAEMON} -- -q $OPTIONS $INTERFACES + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping DHCP server: " + start-stop-daemon -K -q -x ${DAEMON} + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart | force-reload) + $0 stop + $0 start + if [ "$?" != "0" ]; then + exit 1 + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" + exit 1 +esac + +exit 0 diff --git a/buildroot/package/dhcp/dhclient-script b/buildroot/package/dhcp/dhclient-script new file mode 100755 index 0000000..cb292b6 --- /dev/null +++ b/buildroot/package/dhcp/dhclient-script @@ -0,0 +1,284 @@ +#!/bin/sh + +# dhclient-script from OpenWRT project +# http://git.openwrt.org/?p=packages.git;a=blob;f=net/isc-dhcp/files/dhclient-script;h=4afebc0ad20ebac51c5baae5ed01c6713e3a0fd0;hb=HEAD + +make_resolv_conf() { + if [ x"$new_domain_name_servers" != x ]; then + cat /dev/null > /etc/resolv.conf.dhclient + chmod 644 /etc/resolv.conf.dhclient + if [ x"$new_domain_search" != x ]; then + echo search $new_domain_search >> /etc/resolv.conf.dhclient + elif [ x"$new_domain_name" != x ]; then + # Note that the DHCP 'Domain Name Option' is really just a domain + # name, and that this practice of using the domain name option as + # a search path is both nonstandard and deprecated. + echo search $new_domain_name >> /etc/resolv.conf.dhclient + fi + for nameserver in $new_domain_name_servers; do + echo nameserver $nameserver >>/etc/resolv.conf.dhclient + done + + elif [ "x${new_dhcp6_name_servers}" != x ] ; then + cat /dev/null > /etc/resolv.conf.dhclient6 + chmod 644 /etc/resolv.conf.dhclient6 + + if [ "x${new_dhcp6_domain_search}" != x ] ; then + echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6 + fi + for nameserver in ${new_dhcp6_name_servers} ; do + echo nameserver ${nameserver} >> /etc/resolv.conf.dhclient6 + done + fi + + # if both v4 and v6 clients are running, concatenate results + cat /etc/resolv.conf.* > /etc/resolv.conf +} + +# Must be used on exit. Invokes the local dhcp client exit hooks, if any. +exit_with_hooks() { + exit_status=$1 + if [ -f /etc/dhclient-exit-hooks ]; then + . /etc/dhclient-exit-hooks + fi +# probably should do something with exit status of the local script + exit $exit_status +} + +# Invoke the local dhcp client enter hooks, if they exist. +if [ -f /etc/dhclient-enter-hooks ]; then + exit_status=0 + . /etc/dhclient-enter-hooks + # allow the local script to abort processing of this state + # local script must set exit_status variable to nonzero. + if [ $exit_status -ne 0 ]; then + exit $exit_status + fi +fi + +### +### DHCPv4 Handlers +### + +if [ x$new_broadcast_address != x ]; then + new_broadcast_arg="broadcast $new_broadcast_address" +fi +if [ x$new_subnet_mask != x ]; then + new_subnet_arg="netmask $new_subnet_mask" +fi +if [ x$alias_subnet_mask != x ]; then + alias_subnet_arg="netmask $alias_subnet_mask" +fi + +if [ x$reason = xMEDIUM ]; then + # Linux doesn't do mediums (ok, ok, media). + exit_with_hooks 0 +fi + +if [ x$reason = xPREINIT ]; then + if [ x$alias_ip_address != x ]; then + # Bring down alias interface. Its routes will disappear too. + ifconfig $interface:0- 0.0.0.0 + fi + ifconfig $interface 0.0.0.0 up + + # We need to give the kernel some time to get the interface up. + sleep 1 + + exit_with_hooks 0 +fi + +if [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then + exit_with_hooks 0 +fi + +if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \ + [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then + current_hostname=`hostname` + if [ x$current_hostname = x ] || \ + [ x$current_hostname = x$old_host_name ]; then + if [ x$current_hostname = x ] || \ + [ x$new_host_name != x$old_host_name ]; then + hostname $new_host_name + fi + fi + + if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \ + [ x$alias_ip_address != x$old_ip_address ]; then + # Possible new alias. Remove old alias. + ifconfig $interface:0- 0.0.0.0 + fi + if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then + # IP address changed. Bringing down the interface will delete all routes, + # and clear the ARP cache. + ifconfig $interface 0.0.0.0 down + + fi + if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \ + [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then + + ifconfig $interface $new_ip_address $new_subnet_arg \ + $new_broadcast_arg + for router in $new_routers; do + if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then + route add -host $router dev $interface + fi + route add default gw $router + done + fi + if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ]; + then + ifconfig $interface:0- 0.0.0.0 + ifconfig $interface:0 $alias_ip_address $alias_subnet_arg + route add -host $alias_ip_address $interface:0 + fi + make_resolv_conf + exit_with_hooks 0 +fi + +if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \ + || [ x$reason = xSTOP ]; then + if [ x$alias_ip_address != x ]; then + # Turn off alias interface. + ifconfig $interface:0- 0.0.0.0 + fi + if [ x$old_ip_address != x ]; then + # Shut down interface, which will delete routes and clear arp cache. + ifconfig $interface 0.0.0.0 down + fi + if [ x$alias_ip_address != x ]; then + ifconfig $interface:0 $alias_ip_address $alias_subnet_arg + route add -host $alias_ip_address $interface:0 + fi + + # remove v4 dns configuration for this interface + rm /etc/resolv.conf.dhclient + cat /etc/resolv.conf.* > /etc/resolv.conf + + exit_with_hooks 0 +fi + +if [ x$reason = xTIMEOUT ]; then + if [ x$alias_ip_address != x ]; then + ifconfig $interface:0- 0.0.0.0 + fi + ifconfig $interface $new_ip_address $new_subnet_arg \ + $new_broadcast_arg + set $new_routers + if ping -q -c 1 $1; then + if [ x$new_ip_address != x$alias_ip_address ] && \ + [ x$alias_ip_address != x ]; then + ifconfig $interface:0 $alias_ip_address $alias_subnet_arg + route add -host $alias_ip_address dev $interface:0 + fi + for router in $new_routers; do + if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then + route add -host $router dev $interface + fi + route add default gw $router + done + make_resolv_conf + exit_with_hooks 0 + fi + ifconfig $interface 0.0.0.0 down + exit_with_hooks 1 +fi + +### +### DHCPv6 Handlers +### + +if [ x$reason = xPREINIT6 ]; then + # Ensure interface is up. + ifconfig ${interface} up + + # Remove any stale addresses from aborted clients. + ip -f inet6 addr flush dev ${interface} scope global + + exit_with_hooks 0 +fi + +if [ x${old_ip6_prefix} != x ] || [ x${new_ip6_prefix} != x ] ; then + echo Prefix ${reason} old=${old_ip6_prefix} new=${new_ip6_prefix} + + exit_with_hooks 0 +fi + +if [ x$reason = xBOUND6 ]; then + if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then + exit_with_hooks 2; + fi + + ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen} + + # Check for nameserver options. + make_resolv_conf + +### << + # Set up softwire tunnel + if [ x${new_dhcp6_softwire} != x ] ; then + /etc/init.d/dhclient stop + ifconfig ${interface} 0.0.0.0 + ip -6 tunnel add tun0 mode ipip6 \ + remote ${new_dhcp6_softwire} \ + local ${new_ip6_address} \ + dev ${interface} encaplimit none + ip link set tun0 up + ip route add default dev tun0 + fi +### >> + + exit_with_hooks 0 +fi + +if [ x$reason = xRENEW6 ] || [ x$reason = xREBIND6 ]; then + if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then + exit_with_hooks 2; + fi + + ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen} + + # Make sure nothing has moved around on us. + + # Nameservers/domains/etc. + if [ "x${new_dhcp6_name_servers}" != "x${old_dhcp6_name_servers}" ] || + [ "x${new_dhcp6_domain_search}" != "x${old_dhcp6_domain_search}" ] ; then + make_resolv_conf + fi + + exit_with_hooks 0 +fi + +if [ x$reason = xDEPREF6 ]; then + if [ x${new_ip6_address} = x ] ; then + exit_with_hooks 2; + fi + + # Busybox ifconfig has no way to communicate this to the kernel, so ignore it + + exit_with_hooks 0 +fi + +if [ x$reason = xEXPIRE6 -o x$reason = xRELEASE6 -o x$reason = xSTOP6 ]; then + if [ x${old_ip6_address} = x ] || [ x${old_ip6_prefixlen} = x ] ; then + exit_with_hooks 2; + fi + + ifconfig ${interface} del ${old_ip6_address}/${old_ip6_prefixlen} + + # remove v6 dns configuration for this interface + rm /etc/resolv.conf.dhclient6 + cat /etc/resolv.conf.* > /etc/resolv.conf + +### << + # Tear down softwire tunnel + if [ x${old_dhcp6_softwire} != x ] ; then + ip link set tun0 down + ip tunnel del tun0 + fi +### >> + + exit_with_hooks 0 +fi + +exit_with_hooks 0 diff --git a/buildroot/package/dhcp/dhclient.conf b/buildroot/package/dhcp/dhclient.conf new file mode 100644 index 0000000..0e6dcf9 --- /dev/null +++ b/buildroot/package/dhcp/dhclient.conf @@ -0,0 +1,50 @@ +# Configuration file for /sbin/dhclient, which is included in Debian's +# dhcp3-client package. +# +# This is a sample configuration file for dhclient. See dhclient.conf's +# man page for more information about the syntax of this file +# and a more comprehensive list of the parameters understood by +# dhclient. +# +# Normally, if the DHCP server provides reasonable information and does +# not leave anything out (like the domain name, for example), then +# few changes must be made to this file, if any. +# + +#send host-name "andare.fugue.com"; +#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c; +#send dhcp-lease-time 3600; +#supersede domain-name "fugue.com home.vix.com"; +#prepend domain-name-servers 127.0.0.1; +request subnet-mask, broadcast-address, time-offset, routers, + domain-name, domain-name-servers, host-name, + netbios-name-servers, netbios-scope; +#require subnet-mask, domain-name-servers; +#timeout 60; +#retry 60; +#reboot 10; +#select-timeout 5; +#initial-interval 2; +#script "/etc/dhcp3/dhclient-script"; +#media "-link0 -link1 -link2", "link0 link1"; +#reject 192.33.137.209; + +#alias { +# interface "eth0"; +# fixed-address 192.5.5.213; +# option subnet-mask 255.255.255.255; +#} + +#lease { +# interface "eth0"; +# fixed-address 192.33.137.200; +# medium "link0 link1"; +# option host-name "andare.swiftmedia.com"; +# option subnet-mask 255.255.255.0; +# option broadcast-address 192.33.137.255; +# option routers 192.33.137.250; +# option domain-name-servers 127.0.0.1; +# renew 2 2000/1/12 00:00:01; +# rebind 2 2000/1/12 00:00:01; +# expire 2 2000/1/12 00:00:01; +#} diff --git a/buildroot/package/dhcp/dhcp.hash b/buildroot/package/dhcp/dhcp.hash new file mode 100644 index 0000000..ce5f995 --- /dev/null +++ b/buildroot/package/dhcp/dhcp.hash @@ -0,0 +1,4 @@ +# Verified from https://ftp.isc.org/isc/dhcp/4.3.6/dhcp-4.3.6.tar.gz.sha256.asc +sha256 a41eaf6364f1377fe065d35671d9cf82bbbc8f21207819b2b9f33f652aec6f1b dhcp-4.3.6.tar.gz +# Locally calculated +sha256 dd7ae2201c0c11c3c1e2510d731c67b2f4bc8ba735707d7348ddd65f7b598562 LICENSE diff --git a/buildroot/package/dhcp/dhcp.mk b/buildroot/package/dhcp/dhcp.mk new file mode 100644 index 0000000..a128518 --- /dev/null +++ b/buildroot/package/dhcp/dhcp.mk @@ -0,0 +1,121 @@ +################################################################################ +# +# dhcp +# +################################################################################ + +DHCP_VERSION = 4.3.6 +DHCP_SITE = http://ftp.isc.org/isc/dhcp/$(DHCP_VERSION) +DHCP_INSTALL_STAGING = YES +DHCP_LICENSE = ISC +DHCP_LICENSE_FILES = LICENSE +DHCP_CONF_ENV = \ + CPPFLAGS='-D_PATH_DHCPD_CONF=\"/etc/dhcp/dhcpd.conf\" \ + -D_PATH_DHCLIENT_CONF=\"/etc/dhcp/dhclient.conf\"' \ + CFLAGS='$(TARGET_CFLAGS) -DISC_CHECK_NONE=1' + +DHCP_CONF_OPTS = \ + --with-randomdev=/dev/random \ + --with-srv-lease-file=/var/lib/dhcp/dhcpd.leases \ + --with-srv6-lease-file=/var/lib/dhcp/dhcpd6.leases \ + --with-cli-lease-file=/var/lib/dhcp/dhclient.leases \ + --with-cli6-lease-file=/var/lib/dhcp/dhclient6.leases \ + --with-srv-pid-file=/var/run/dhcpd.pid \ + --with-srv6-pid-file=/var/run/dhcpd6.pid \ + --with-cli-pid-file=/var/run/dhclient.pid \ + --with-cli6-pid-file=/var/run/dhclient6.pid \ + --with-relay-pid-file=/var/run/dhcrelay.pid \ + --with-relay6-pid-file=/var/run/dhcrelay6.pid + +# The source for the bind libraries used by dhcp are embedded in the dhcp source +# as a tar-ball. Extract the bind source to allow any patches to be applied +# during the patch phase. +define DHCP_EXTRACT_BIND + cd $(@D)/bind; tar -xvf bind.tar.gz +endef +DHCP_POST_EXTRACT_HOOKS += DHCP_EXTRACT_BIND + +# The patchset requires configure et.al. to be regenerated. +DHCP_AUTORECONF = YES + +# bind does not support parallel builds. +DHCP_MAKE = $(MAKE1) + +# bind configure is called via dhcp make instead of dhcp configure. The make env +# needs extra values for bind configure. +DHCP_MAKE_ENV = \ + $(TARGET_CONFIGURE_OPTS) \ + BUILD_CC="$(HOSTCC)" \ + BUILD_CFLAGS="$(HOST_CFLAGS)" \ + BUILD_CPPFLAGS="$(HOST_CPPFLAGS)" \ + BUILD_LDFLAGS="$(HOST_LDFLAGS)" + +ifeq ($(BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK),y) +DHCP_CONF_OPTS += --enable-delayed-ack +endif + +ifeq ($(BR2_PACKAGE_DHCP_SERVER),y) +define DHCP_INSTALL_SERVER + mkdir -p $(TARGET_DIR)/var/lib + (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp) + $(INSTALL) -m 0755 -D $(@D)/server/dhcpd $(TARGET_DIR)/usr/sbin/dhcpd + $(INSTALL) -m 0644 -D package/dhcp/dhcpd.conf \ + $(TARGET_DIR)/etc/dhcp/dhcpd.conf +endef +endif + +ifeq ($(BR2_PACKAGE_DHCP_RELAY),y) +define DHCP_INSTALL_RELAY + mkdir -p $(TARGET_DIR)/var/lib + (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp) + $(INSTALL) -m 0755 -D $(DHCP_DIR)/relay/dhcrelay \ + $(TARGET_DIR)/usr/sbin/dhcrelay +endef +endif + +ifeq ($(BR2_PACKAGE_DHCP_CLIENT),y) +define DHCP_INSTALL_CLIENT + mkdir -p $(TARGET_DIR)/var/lib + (cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp) + $(INSTALL) -m 0755 -D $(DHCP_DIR)/client/dhclient \ + $(TARGET_DIR)/sbin/dhclient + $(INSTALL) -m 0644 -D package/dhcp/dhclient.conf \ + $(TARGET_DIR)/etc/dhcp/dhclient.conf + $(INSTALL) -m 0755 -D package/dhcp/dhclient-script \ + $(TARGET_DIR)/sbin/dhclient-script +endef +endif + +# Options don't matter, scripts won't start if binaries aren't there +define DHCP_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/dhcp/S80dhcp-server \ + $(TARGET_DIR)/etc/init.d/S80dhcp-server + $(INSTALL) -m 0755 -D package/dhcp/S80dhcp-relay \ + $(TARGET_DIR)/etc/init.d/S80dhcp-relay +endef + +ifeq ($(BR2_PACKAGE_DHCP_SERVER),y) +define DHCP_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/dhcp/dhcpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dhcpd.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -sf ../../../../usr/lib/systemd/system/dhcpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/dhcpd.service + + mkdir -p $(TARGET_DIR)/usr/lib/tmpfiles.d + echo "d /var/lib/dhcp 0755 - - - -" > \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/dhcpd.conf + echo "f /var/lib/dhcp/dhcpd.leases - - - - -" >> \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/dhcpd.conf +endef +endif + +define DHCP_INSTALL_TARGET_CMDS + $(DHCP_INSTALL_RELAY) + $(DHCP_INSTALL_SERVER) + $(DHCP_INSTALL_CLIENT) +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/dhcp/dhcpd.conf b/buildroot/package/dhcp/dhcpd.conf new file mode 100644 index 0000000..0001c0f --- /dev/null +++ b/buildroot/package/dhcp/dhcpd.conf @@ -0,0 +1,108 @@ +# +# Sample configuration file for ISC dhcpd for Debian +# +# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $ +# + +# The ddns-updates-style parameter controls whether or not the server will +# attempt to do a DNS update when a lease is confirmed. We default to the +# behavior of the version 2 packages ('none', since DHCP v2 didn't +# have support for DDNS.) +ddns-update-style none; + +# option definitions common to all supported networks... +option domain-name "example.org"; +option domain-name-servers ns1.example.org, ns2.example.org; + +default-lease-time 600; +max-lease-time 7200; + +# If this DHCP server is the official DHCP server for the local +# network, the authoritative directive should be uncommented. +#authoritative; + +# Use this to send dhcp log messages to a different log file (you also +# have to hack syslog.conf to complete the redirection). +log-facility local7; + +# No service will be given on this subnet, but declaring it helps the +# DHCP server to understand the network topology. + +#subnet 10.152.187.0 netmask 255.255.255.0 { +#} + +# This is a very basic subnet declaration. + +#subnet 10.254.239.0 netmask 255.255.255.224 { +# range 10.254.239.10 10.254.239.20; +# option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org; +#} + +# This declaration allows BOOTP clients to get dynamic addresses, +# which we don't really recommend. + +#subnet 10.254.239.32 netmask 255.255.255.224 { +# range dynamic-bootp 10.254.239.40 10.254.239.60; +# option broadcast-address 10.254.239.31; +# option routers rtr-239-32-1.example.org; +#} + +# A slightly different configuration for an internal subnet. +#subnet 10.5.5.0 netmask 255.255.255.224 { +# range 10.5.5.26 10.5.5.30; +# option domain-name-servers ns1.internal.example.org; +# option domain-name "internal.example.org"; +# option routers 10.5.5.1; +# option broadcast-address 10.5.5.31; +# default-lease-time 600; +# max-lease-time 7200; +#} + +# Hosts which require special configuration options can be listed in +# host statements. If no address is specified, the address will be +# allocated dynamically (if possible), but the host-specific information +# will still come from the host declaration. + +#host passacaglia { +# hardware ethernet 0:0:c0:5d:bd:95; +# filename "vmunix.passacaglia"; +# server-name "toccata.fugue.com"; +#} + +# Fixed IP addresses can also be specified for hosts. These addresses +# should not also be listed as being available for dynamic assignment. +# Hosts for which fixed IP addresses have been specified can boot using +# BOOTP or DHCP. Hosts for which no fixed address is specified can only +# be booted with DHCP, unless there is an address range on the subnet +# to which a BOOTP client is connected which has the dynamic-bootp flag +# set. +#host fantasia { +# hardware ethernet 08:00:07:26:c0:a5; +# fixed-address fantasia.fugue.com; +#} + +# You can declare a class of clients and then do address allocation +# based on that. The example below shows a case where all clients +# in a certain class get addresses on the 10.17.224/24 subnet, and all +# other clients get addresses on the 10.0.29/24 subnet. + +#class "foo" { +# match if substring (option vendor-class-identifier, 0, 4) = "SUNW"; +#} + +#shared-network 224-29 { +# subnet 10.17.224.0 netmask 255.255.255.0 { +# option routers rtr-224.example.org; +# } +# subnet 10.0.29.0 netmask 255.255.255.0 { +# option routers rtr-29.example.org; +# } +# pool { +# allow members of "foo"; +# range 10.17.224.10 10.17.224.250; +# } +# pool { +# deny members of "foo"; +# range 10.0.29.10 10.0.29.230; +# } +#} diff --git a/buildroot/package/dhcp/dhcpd.service b/buildroot/package/dhcp/dhcpd.service new file mode 100644 index 0000000..98cc54b --- /dev/null +++ b/buildroot/package/dhcp/dhcpd.service @@ -0,0 +1,13 @@ +[Unit] +Description=DHCP server +After=network.target + +[Service] +Type=forking +PIDFile=/run/dhcpd.pid +ExecStart=/usr/sbin/dhcpd -q -pf /run/dhcpd.pid $OPTIONS $INTERFACES +KillSignal=SIGINT +EnvironmentFile=-/etc/default/dhcpd + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/dhcpcd/Config.in b/buildroot/package/dhcpcd/Config.in new file mode 100644 index 0000000..ece08d2 --- /dev/null +++ b/buildroot/package/dhcpcd/Config.in @@ -0,0 +1,10 @@ +comment "dhcpcd needs a toolchain w/ headers >= 3.1" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + +config BR2_PACKAGE_DHCPCD + bool "dhcpcd" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 # sa_family_t in linux/socket.h + help + An RFC2131 compliant DHCP client + + http://roy.marples.name/projects/dhcpcd/ diff --git a/buildroot/package/dhcpcd/S41dhcpcd b/buildroot/package/dhcpcd/S41dhcpcd new file mode 100755 index 0000000..a2e87ca --- /dev/null +++ b/buildroot/package/dhcpcd/S41dhcpcd @@ -0,0 +1,34 @@ +#!/bin/sh +# +# Start/stop dhcpcd +# + +DAEMON=/sbin/dhcpcd +CONFIG=/etc/dhcpcd.conf +PIDFILE=/var/run/dhcpcd.pid + +[ -x $DAEMON ] || exit 0 +[ -f $CONFIG ] || exit 0 + +case "$1" in + start) + echo "Starting dhcpcd..." + start-stop-daemon -S -x "$DAEMON" -p "$PIDFILE" -- -f "$CONFIG" + ;; + stop) + echo "Stopping dhcpcd..." + start-stop-daemon -K -x "$DAEMON" -p "$PIDFILE" -o + ;; + reload|force-reload) + echo "Reloading dhcpcd configuration..." + "$DAEMON" -s reload + ;; + restart) + "$0" stop + sleep 1 # Prevent race condition: ensure dhcpcd stops before start. + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 +esac diff --git a/buildroot/package/dhcpcd/dhcpcd.hash b/buildroot/package/dhcpcd/dhcpcd.hash new file mode 100644 index 0000000..3be3f7f --- /dev/null +++ b/buildroot/package/dhcpcd/dhcpcd.hash @@ -0,0 +1,2 @@ +# Locally calculated from download (no sig, hash) +sha256 6f9674dc7e27e936cc787175404a6171618675ecfb6903ab9887b1b66a87d69e dhcpcd-6.11.5.tar.xz diff --git a/buildroot/package/dhcpcd/dhcpcd.mk b/buildroot/package/dhcpcd/dhcpcd.mk new file mode 100644 index 0000000..dc5c69b --- /dev/null +++ b/buildroot/package/dhcpcd/dhcpcd.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# dhcpcd +# +################################################################################ + +DHCPCD_VERSION = 6.11.5 +DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.xz +DHCPCD_SITE = http://roy.marples.name/downloads/dhcpcd +DHCPCD_DEPENDENCIES = host-pkgconf +DHCPCD_LICENSE = BSD-2-Clause +DHCPCD_LICENSE_FILES = dhcpcd.c + +ifeq ($(BR2_STATIC_LIBS),y) +DHCPCD_CONFIG_OPTS += --enable-static +endif + +ifeq ($(BR2_USE_MMU),) +DHCPCD_CONFIG_OPTS += --disable-fork +endif + +define DHCPCD_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) ./configure \ + --os=linux \ + --libexecdir=/lib/dhcpcd \ + $(DHCPCD_CONFIG_OPTS) ) +endef + +define DHCPCD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + -C $(@D) all +endef + +define DHCPCD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(TARGET_DIR) +endef + +define DHCPCD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/dhcpcd/S41dhcpcd \ + $(TARGET_DIR)/etc/init.d/S41dhcpcd +endef + +define DHCPCD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/dhcpcd/dhcpcd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dhcpcd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/dhcpcd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/dhcpcd.service +endef + +# NOTE: Even though this package has a configure script, it is not generated +# using the autotools, so we have to use the generic package infrastructure. + +$(eval $(generic-package)) diff --git a/buildroot/package/dhcpcd/dhcpcd.service b/buildroot/package/dhcpcd/dhcpcd.service new file mode 100644 index 0000000..0552b5c --- /dev/null +++ b/buildroot/package/dhcpcd/dhcpcd.service @@ -0,0 +1,13 @@ +[Unit] +Description=DHCP client +After=network.target + +[Service] +Type=forking +EnvironmentFile=-/etc/default/dhcpcd +PIDFile=/var/run/dhcpcd.pid +ExecStart=/sbin/dhcpcd $DAEMON_ARGS +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/dhcpdump/0001-use-non-bsd-structures.patch b/buildroot/package/dhcpdump/0001-use-non-bsd-structures.patch new file mode 100644 index 0000000..40115fb --- /dev/null +++ b/buildroot/package/dhcpdump/0001-use-non-bsd-structures.patch @@ -0,0 +1,23 @@ +The udphdr structure has uh_* fields when _FAVOR_BSD is +defined. Otherwise, the fields are just named source, dest, len and +check. See . + +Signed-off-by: Thomas Petazzoni + +Index: dhcpdump-1.8/dhcpdump.c +=================================================================== +--- dhcpdump-1.8.orig/dhcpdump.c 2011-05-17 20:20:46.506980003 +0200 ++++ dhcpdump-1.8/dhcpdump.c 2011-05-17 20:20:59.338979999 +0200 +@@ -163,10 +163,10 @@ + strcpy(ip_origin, (u_char *)inet_ntoa(ip->ip_src)); + strcpy(ip_destination, (u_char *)inet_ntoa(ip->ip_dst)); + +- if (hmask && check_ch((u_char *)(sp + offset), ntohs(udp->uh_ulen))) ++ if (hmask && check_ch((u_char *)(sp + offset), ntohs(udp->len))) + return; + +- printdata((u_char *)(sp + offset), ntohs(udp->uh_ulen)); ++ printdata((u_char *)(sp + offset), ntohs(udp->len)); + } + + // check for matching CHADDR (Peter Apian-Bennewitz ) diff --git a/buildroot/package/dhcpdump/0002-fix-strsep-feature-test.patch b/buildroot/package/dhcpdump/0002-fix-strsep-feature-test.patch new file mode 100644 index 0000000..06bab94 --- /dev/null +++ b/buildroot/package/dhcpdump/0002-fix-strsep-feature-test.patch @@ -0,0 +1,27 @@ +Use the official _BSD_SOURCE feature test macro instead of the meaningless +HAVE_STRSEP macro in order to detect the availability of strsep(). + +This allows toolchains supporting strsep() to use it instead of the custom +implementation from dhcpdump, which also avoids the following error with some +toolchains: + + In file included from dhcpdump.c:30:0: + dhcpdump.c: At top level: + strsep.c:65:23: error: register name not specified for ‘delim’ + register const char *delim; + ^ + +Signed-off-by: Benoît Thébaudeau + +diff -Nrdup dhcpdump-1.8.orig/dhcpdump.c dhcpdump-1.8/dhcpdump.c +--- dhcpdump-1.8.orig/dhcpdump.c 2008-06-24 05:26:52.000000000 +0200 ++++ dhcpdump-1.8/dhcpdump.c 2011-05-31 19:22:15.987388498 +0200 +@@ -26,7 +26,7 @@ + #include + #include "dhcp_options.h" + +-#ifndef HAVE_STRSEP ++#ifndef _BSD_SOURCE + #include "strsep.c" + #endif + diff --git a/buildroot/package/dhcpdump/Config.in b/buildroot/package/dhcpdump/Config.in new file mode 100644 index 0000000..e0abe04 --- /dev/null +++ b/buildroot/package/dhcpdump/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_DHCPDUMP + bool "dhcpdump" + select BR2_PACKAGE_LIBPCAP + help + A tool for monitoring dhcp requests using tcpdump. + + http://www.mavetju.org/unix/general.php diff --git a/buildroot/package/dhcpdump/dhcpdump.hash b/buildroot/package/dhcpdump/dhcpdump.hash new file mode 100644 index 0000000..36040c8 --- /dev/null +++ b/buildroot/package/dhcpdump/dhcpdump.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6d5eb9418162fb738bc56e4c1682ce7f7392dd96e568cc996e44c28de7f77190 dhcpdump-1.8.tar.gz diff --git a/buildroot/package/dhcpdump/dhcpdump.mk b/buildroot/package/dhcpdump/dhcpdump.mk new file mode 100644 index 0000000..96f2319 --- /dev/null +++ b/buildroot/package/dhcpdump/dhcpdump.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# dhcpdump +# +################################################################################ + +DHCPDUMP_VERSION = 1.8 +DHCPDUMP_SITE = http://www.mavetju.org/download +DHCPDUMP_DEPENDENCIES = libpcap +DHCPDUMP_LICENSE = BSD-2-Clause +DHCPDUMP_LICENSE_FILES = LICENSE + +DHCPDUMP_LIBS = -lpcap +ifeq ($(BR2_STATIC_LIBS),y) +DHCPDUMP_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` +endif + +define DHCPDUMP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC) $(TARGET_CFLAGS) \ + -D_GNU_SOURCE" LIBS="$(DHCPDUMP_LIBS)" +endef + +define DHCPDUMP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/dhcpdump $(TARGET_DIR)/usr/bin/dhcpdump +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dhrystone/0001-cmdline-nruns.patch b/buildroot/package/dhrystone/0001-cmdline-nruns.patch new file mode 100644 index 0000000..1164610 --- /dev/null +++ b/buildroot/package/dhrystone/0001-cmdline-nruns.patch @@ -0,0 +1,53 @@ +let people specify the number of runs on the command line + +Patch by Vivi Li + +--- a/dhry_1.c ++++ b/dhry_1.c +@@ -66,7 +70,7 @@ + /* end of variables for time measurement */ + + +-main () ++main(int argc, char *argv[]) + /*****/ + + /* main program, corresponds to procedures */ +@@ -101,6 +105,13 @@ + /* Warning: With 16-Bit processors and Number_Of_Runs > 32000, */ + /* overflow may occur for this array element. */ + ++ Number_Of_Runs = 0; ++ if ( argc == 2 ) { ++ if (atoi(argv[1]) > 0) { ++ Number_Of_Runs = atoi(argv[1]); ++ } ++ } ++ + printf ("\n"); + printf ("Dhrystone Benchmark, Version 2.1 (Language: C)\n"); + printf ("\n"); +@@ -114,13 +125,17 @@ + printf ("Program compiled without 'register' attribute\n"); + printf ("\n"); + } +- printf ("Please give the number of runs through the benchmark: "); +- { +- int n; +- scanf ("%d", &n); +- Number_Of_Runs = n; ++ ++ if (!Number_Of_Runs) { ++ printf ("Please give the number of runs through the benchmark: "); ++ fflush (stdout); ++ { ++ int n; ++ scanf ("%d", &n); ++ Number_Of_Runs = n; ++ } ++ printf ("\n"); + } +- printf ("\n"); + + printf ("Execution starts, %d runs through Dhrystone\n", Number_Of_Runs); + diff --git a/buildroot/package/dhrystone/0002-HZ.patch b/buildroot/package/dhrystone/0002-HZ.patch new file mode 100644 index 0000000..e3b8a0e --- /dev/null +++ b/buildroot/package/dhrystone/0002-HZ.patch @@ -0,0 +1,17 @@ +Get HZ value from system rather than requiring via CPPFLAGS + +Patch by Robin Getz + +--- a/dhry.h ++++ b/dhry.h +@@ -359,6 +359,10 @@ + /* for "times" */ + #endif + ++#ifndef HZ ++#include ++#endif ++ + #define Mic_secs_Per_Second 1000000.0 + /* Berkeley UNIX C returns process times in seconds/HZ */ + diff --git a/buildroot/package/dhrystone/0003-exit.patch b/buildroot/package/dhrystone/0003-exit.patch new file mode 100644 index 0000000..8d99f4e --- /dev/null +++ b/buildroot/package/dhrystone/0003-exit.patch @@ -0,0 +1,14 @@ +trust the exit status of the program + +Patch by Robin Getz + +--- a/dhry_1.c ++++ b/dhry_1.c +@@ -274,6 +289,7 @@ + printf ("\n"); + } + ++ exit(0); + } + + diff --git a/buildroot/package/dhrystone/0004-headers.patch b/buildroot/package/dhrystone/0004-headers.patch new file mode 100644 index 0000000..82bb60d --- /dev/null +++ b/buildroot/package/dhrystone/0004-headers.patch @@ -0,0 +1,15 @@ +get prototypes for malloc/exit/strcpy + +Patch by Mike Frysinger + +--- a/dhry.h ++++ b/dhry.h +@@ -388,6 +388,8 @@ + /* General definitions: */ + + #include ++#include ++#include + /* for strcpy, strcmp */ + + #define Null 0 diff --git a/buildroot/package/dhrystone/0005-prototypes.patch b/buildroot/package/dhrystone/0005-prototypes.patch new file mode 100644 index 0000000..7fdcf94 --- /dev/null +++ b/buildroot/package/dhrystone/0005-prototypes.patch @@ -0,0 +1,35 @@ +Avoid collision with C library using NO_PROTOTYPES found in code already + +Patch by Robin Getz + +--- a/dhry_1.c ++++ b/dhry_1.c +@@ -28,7 +28,9 @@ + int Arr_1_Glob [50]; + int Arr_2_Glob [50] [50]; + ++#ifndef NO_PROTOTYPES + extern char *malloc (); ++#endif + Enumeration Func_1 (); + /* forward declaration necessary since Enumeration may not simply be int */ + +@@ -45,14 +45,18 @@ + + #ifdef TIMES + struct tms time_info; ++#ifndef NO_PROTOTYPES + extern int times (); + /* see library function "times" */ ++#endif + #define Too_Small_Time 120 + /* Measurements should last at least about 2 seconds */ + #endif + #ifdef TIME ++#ifndef NO_PROTOTYPES + extern long time(); + /* see library function "time" */ ++#endif + #define Too_Small_Time 2 + /* Measurements should last at least 2 seconds */ + #endif diff --git a/buildroot/package/dhrystone/Config.in b/buildroot/package/dhrystone/Config.in new file mode 100644 index 0000000..d6fb7a7 --- /dev/null +++ b/buildroot/package/dhrystone/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_DHRYSTONE + bool "dhrystone" + help + easy-to-use integer benchmark + + http://www.netlib.org/benchmark/dhry-c diff --git a/buildroot/package/dhrystone/Makefile b/buildroot/package/dhrystone/Makefile new file mode 100644 index 0000000..f7a212b --- /dev/null +++ b/buildroot/package/dhrystone/Makefile @@ -0,0 +1,12 @@ +CPPFLAGS += -DNO_PROTOTYPES=1 -DHZ=100 +LDLIBS += -lm + +all: dhrystone + +dhrystone: dhry_1.o dhry_2.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) + +clean: + rm -f *.o dhrystone + +.PHONY: all clean diff --git a/buildroot/package/dhrystone/dhrystone.hash b/buildroot/package/dhrystone/dhrystone.hash new file mode 100644 index 0000000..9ea22a3 --- /dev/null +++ b/buildroot/package/dhrystone/dhrystone.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 038a7e9169787125c3451a6c941f3aca5db2d2f3863871afcdce154ef17f4e3e dhry-c diff --git a/buildroot/package/dhrystone/dhrystone.mk b/buildroot/package/dhrystone/dhrystone.mk new file mode 100644 index 0000000..c0bca98 --- /dev/null +++ b/buildroot/package/dhrystone/dhrystone.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# dhrystone +# +################################################################################ + +DHRYSTONE_VERSION = 2 +DHRYSTONE_SOURCE = dhry-c +DHRYSTONE_SITE = http://www.netlib.org/benchmark + +define DHRYSTONE_EXTRACT_CMDS + (cd $(@D) && $(SHELL) $(DL_DIR)/$($(PKG)_SOURCE)) + $(Q)cp package/dhrystone/Makefile $(@D)/ +endef + +define DHRYSTONE_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define DHRYSTONE_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/dhrystone $(TARGET_DIR)/usr/bin/dhrystone +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dialog/Config.in b/buildroot/package/dialog/Config.in new file mode 100644 index 0000000..830427e --- /dev/null +++ b/buildroot/package/dialog/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_DIALOG + bool "dialog" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + dialog - display dialog boxes from shell scripts + + This application provides a method of displaying several + different types of dialog boxes from shell scripts. This + allows a developer of a script to interact with the user in a + much friendlier manner. + + http://invisible-island.net/dialog/dialog.html diff --git a/buildroot/package/dialog/dialog.hash b/buildroot/package/dialog/dialog.hash new file mode 100644 index 0000000..ac42784 --- /dev/null +++ b/buildroot/package/dialog/dialog.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 2ff1ba74c632b9d13a0d0d2c942295dd4e8909694eeeded7908a467d0bcd4756 dialog-1.3-20170509.tgz diff --git a/buildroot/package/dialog/dialog.mk b/buildroot/package/dialog/dialog.mk new file mode 100644 index 0000000..73fabe0 --- /dev/null +++ b/buildroot/package/dialog/dialog.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# dialog +# +################################################################################ + +DIALOG_VERSION = 1.3-20170509 +DIALOG_SOURCE = dialog-$(DIALOG_VERSION).tgz +DIALOG_SITE = ftp://ftp.invisible-island.net/dialog +DIALOG_CONF_OPTS = --with-ncurses --with-curses-dir=$(STAGING_DIR)/usr \ + --disable-rpath-hack +DIALOG_DEPENDENCIES = host-pkgconf ncurses +DIALOG_LICENSE = LGPL-2.1 +DIALOG_LICENSE_FILES = COPYING + +ifneq ($(BR2_ENABLE_LOCALE),y) +DIALOG_DEPENDENCIES += libiconv +endif + +DIALOG_CONF_OPTS += NCURSES_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) + +$(eval $(autotools-package)) diff --git a/buildroot/package/dieharder/0001-Do-not-use-includedir-as-include-search-path-for-bui.patch b/buildroot/package/dieharder/0001-Do-not-use-includedir-as-include-search-path-for-bui.patch new file mode 100644 index 0000000..b475e5c --- /dev/null +++ b/buildroot/package/dieharder/0001-Do-not-use-includedir-as-include-search-path-for-bui.patch @@ -0,0 +1,62 @@ +From fbc9b7c3b83a99ac996c0a268487d1f800630328 Mon Sep 17 00:00:00 2001 +From: Julien Viard de Galbert +Date: Wed, 8 Feb 2017 21:26:58 +0100 +Subject: [PATCH] Do not use includedir as include search path for build + +--includedir is not used to specify where a program should +look for headers of libraries, but to tell where it should +install its own headers. + +Signed-off-by: Julien Viard de Galbert +--- + configure.ac | 6 +++--- + dieharder/Makefile.am | 2 +- + libdieharder/Makefile.am | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/configure.ac b/configure.ac +index b336115..91f7c64 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -96,9 +96,9 @@ AC_TYPE_SIZE_T + AC_C_VOLATILE + AC_C_INLINE + +-DIEHARDER_CFLAGS="-I$includedir" +-dieharder_CFLAGS="-std=c99 -Wall -pedantic -I$includedir" +-libdieharder_lo_CFLAGS="-Wall -pedantic -I$includedir" ++DIEHARDER_CFLAGS="" ++dieharder_CFLAGS="-std=c99 -Wall -pedantic" ++libdieharder_lo_CFLAGS="-Wall -pedantic" + DIEHARDER_LIBS="-L$libdir -ldieharder" + ACLOCAL_AMFLAGS="-I m4" + +diff --git a/dieharder/Makefile.am b/dieharder/Makefile.am +index e6fbff2..7bdac5c 100644 +--- a/dieharder/Makefile.am ++++ b/dieharder/Makefile.am +@@ -64,7 +64,7 @@ DEFINES = -DVERSION=$(VERSION) + # CC = gcc + + # Compile flags (use fairly standard -O3 as default) +-AM_CPPFLAGS = -I ${top_srcdir}/include $(DEFINES) -I ${includedir} ++AM_CPPFLAGS = -I ${top_srcdir}/include $(DEFINES) + AM_CFLAGS = -O3 + + # Load flags (optional) +diff --git a/libdieharder/Makefile.am b/libdieharder/Makefile.am +index 5fd3396..0873f9c 100644 +--- a/libdieharder/Makefile.am ++++ b/libdieharder/Makefile.am +@@ -114,7 +114,7 @@ DEFINES = -DVERSION=$(VERSION) -DLITTLE_ENDIAN=$(LITTLE_ENDIAN) + # CC = gcc + + # Compile flags (use fairly standard -O3 as default) +-AM_CPPFLAGS = $(DEFINES) -I ${top_srcdir}/include -I ${includedir} ++AM_CPPFLAGS = $(DEFINES) -I ${top_srcdir}/include + AM_CFLAGS = -O3 -Wall -pedantic -Wno-unused-variable + + #======================================================================== +-- +2.1.4 + diff --git a/buildroot/package/dieharder/0002-Fix-missing-type-intptr_t.patch b/buildroot/package/dieharder/0002-Fix-missing-type-intptr_t.patch new file mode 100644 index 0000000..12ea5e7 --- /dev/null +++ b/buildroot/package/dieharder/0002-Fix-missing-type-intptr_t.patch @@ -0,0 +1,27 @@ +From 6f550841943f19612af064b3d3a1db134078e03c Mon Sep 17 00:00:00 2001 +From: Julien Viard de Galbert +Date: Sat, 14 Jan 2017 14:18:10 +0100 +Subject: [PATCH] Fix missing type intptr_t + +With glibc-2.23 unistd.h need intptr_t when __USE_MISC is defined. + +Signed-off-by: Julien Viard de Galbert +--- + include/dieharder/libdieharder.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/dieharder/libdieharder.h b/include/dieharder/libdieharder.h +index 2138ebf..d98b758 100644 +--- a/include/dieharder/libdieharder.h ++++ b/include/dieharder/libdieharder.h +@@ -17,6 +17,7 @@ + + /* This turns on uint macro in c99 */ + #define __USE_MISC 1 ++#include + #include + #include + #include +-- +2.1.4 + diff --git a/buildroot/package/dieharder/0003-Add-_GNU_SOURCE-for-uint-and-M_PI-with-musl-libc.patch b/buildroot/package/dieharder/0003-Add-_GNU_SOURCE-for-uint-and-M_PI-with-musl-libc.patch new file mode 100644 index 0000000..d71cd57 --- /dev/null +++ b/buildroot/package/dieharder/0003-Add-_GNU_SOURCE-for-uint-and-M_PI-with-musl-libc.patch @@ -0,0 +1,28 @@ +From 526510a27ef47a16699dd34a2373ad9b6bb5e8f3 Mon Sep 17 00:00:00 2001 +From: Julien Viard de Galbert +Date: Sat, 14 Jan 2017 14:19:47 +0100 +Subject: [PATCH] Add _GNU_SOURCE for uint and M_PI with musl libc + +When building with musl libc _GNU_SOURCE need to be defined +to provide uint type and M_PI macro + +Signed-off-by: Julien Viard de Galbert +--- + include/dieharder/libdieharder.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/dieharder/libdieharder.h b/include/dieharder/libdieharder.h +index d98b758..c1a5023 100644 +--- a/include/dieharder/libdieharder.h ++++ b/include/dieharder/libdieharder.h +@@ -17,6 +17,7 @@ + + /* This turns on uint macro in c99 */ + #define __USE_MISC 1 ++#define _GNU_SOURCE 1 + #include + #include + #include +-- +2.1.4 + diff --git a/buildroot/package/dieharder/0004-Add-static-to-inline-functions.patch b/buildroot/package/dieharder/0004-Add-static-to-inline-functions.patch new file mode 100644 index 0000000..64cde1d --- /dev/null +++ b/buildroot/package/dieharder/0004-Add-static-to-inline-functions.patch @@ -0,0 +1,65 @@ +From 9c71a211dcf20f53f747326f5bc3fee9fabe3f52 Mon Sep 17 00:00:00 2001 +From: Julien Viard de Galbert +Date: Tue, 27 Jun 2017 00:16:11 +0200 +Subject: [PATCH] Add static to inline functions + +This is needed to avoid a link error where the inline functions appear +missing at link time. +From c99 standard inline function should either be declared static or +have an extern instance in a c file for linking. +This fix is necessary to build with gcc 7; for some reason it was not +trigerred before. + +Signed-off-by: Julien Viard de Galbert +--- + libdieharder/dab_filltree.c | 4 ++-- + libdieharder/dab_filltree2.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/libdieharder/dab_filltree.c b/libdieharder/dab_filltree.c +index 9cc5ce7..a377c3d 100644 +--- a/libdieharder/dab_filltree.c ++++ b/libdieharder/dab_filltree.c +@@ -34,7 +34,7 @@ static double targetData[] = { + 0.0, 0.0, 0.0, 0.0, 0.13333333, 0.20000000, 0.20634921, 0.17857143, 0.13007085, 0.08183633, 0.04338395, 0.01851828, 0.00617270, 0.00151193, 0.00023520, 0.00001680, 0.00000000, 0.00000000, 0.00000000, 0.00000000 + }; + +-inline int insert(double x, double *array, unsigned int startVal); ++static inline int insert(double x, double *array, unsigned int startVal); + + int dab_filltree(Test **test,int irun) { + int size = (ntuple == 0) ? 32 : ntuple; +@@ -105,7 +105,7 @@ int dab_filltree(Test **test,int irun) { + } + + +-inline int insert(double x, double *array, unsigned int startVal) { ++static inline int insert(double x, double *array, unsigned int startVal) { + uint d = (startVal + 1) / 2; + uint i = startVal; + while (d > 0) { +diff --git a/libdieharder/dab_filltree2.c b/libdieharder/dab_filltree2.c +index 1e33af2..59cbd52 100644 +--- a/libdieharder/dab_filltree2.c ++++ b/libdieharder/dab_filltree2.c +@@ -92,7 +92,7 @@ static double targetData[128] = { // size=128, generated from 6e9 samples + 0.00000000000e+00,0.00000000000e+00,0.00000000000e+00,0.00000000000e+00, + }; + +-inline int insertBit(uint x, uchar *array, uint *i, uint *d); ++static inline int insertBit(uint x, uchar *array, uint *i, uint *d); + + int dab_filltree2(Test **test, int irun) { + int size = (ntuple == 0) ? 128 : ntuple; +@@ -181,7 +181,7 @@ int dab_filltree2(Test **test, int irun) { + * The function returns >= 0 if the path went too deep; the + * returned value is the last position of the path. + */ +-inline int insertBit(uint x, uchar *array, uint *i, uint *d) { ++static inline int insertBit(uint x, uchar *array, uint *i, uint *d) { + if (x != 0) { + *i += *d; + } else { +-- +2.13.2 + diff --git a/buildroot/package/dieharder/Config.in b/buildroot/package/dieharder/Config.in new file mode 100644 index 0000000..e7a9f54 --- /dev/null +++ b/buildroot/package/dieharder/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_DIEHARDER + bool "dieharder" + select BR2_PACKAGE_GSL + help + dieharder is a fairly involved random number/uniform deviate + generator tester. It is thus suitable for use in testing + both software RNG's and hardware RNG's. + + http://www.phy.duke.edu/~rgb/General/dieharder.php diff --git a/buildroot/package/dieharder/dieharder.hash b/buildroot/package/dieharder/dieharder.hash new file mode 100644 index 0000000..eefe4b7 --- /dev/null +++ b/buildroot/package/dieharder/dieharder.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 6cff0ff8394c553549ac7433359ccfc955fb26794260314620dfa5e4cd4b727f dieharder-3.31.1.tgz diff --git a/buildroot/package/dieharder/dieharder.mk b/buildroot/package/dieharder/dieharder.mk new file mode 100644 index 0000000..c3eee64 --- /dev/null +++ b/buildroot/package/dieharder/dieharder.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# dieharder +# +################################################################################ + +DIEHARDER_VERSION = 3.31.1 +DIEHARDER_SITE = http://www.phy.duke.edu/~rgb/General/dieharder +DIEHARDER_SOURCE = dieharder-$(DIEHARDER_VERSION).tgz +DIEHARDER_STRIP_COMPONENTS = 2 +DIEHARDER_LICENSE = GPL-2.0 with beverage clause +DIEHARDER_LICENSE_FILES = COPYING +DIEHARDER_DEPENDENCIES = gsl + +# The original configure does not use variables provided in the +# environment so _CONF_ENV does not work. (_CONF_OPTS does). +# +# Finally, we patch configure.ac and some Makefile.am so we need to +# autoreconf anyway +DIEHARDER_AUTORECONF = YES + +# The m4/*.m4 files are symlinks to /usr/share, which clearly doesn't +# work, and doing an autoreconf does not replace them. +define DIEHARDER_M4_CLEAN + rm -f $(@D)/m4/*.m4 +endef +DIEHARDER_POST_PATCH_HOOKS += DIEHARDER_M4_CLEAN + +# fix endianness detection +ifeq ($(BR2_ENDIAN),"BIG") +DIEHARDER_CONF_ENV = ac_cv_c_endian=big +else +DIEHARDER_CONF_ENV = ac_cv_c_endian=little +endif + +# parallel build fail, disable it +DIEHARDER_MAKE = $(MAKE1) + +$(eval $(autotools-package)) diff --git a/buildroot/package/diffutils/Config.in b/buildroot/package/diffutils/Config.in new file mode 100644 index 0000000..3c38f25 --- /dev/null +++ b/buildroot/package/diffutils/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_DIFFUTILS + bool "diffutils" + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + GNU diff. Compare files per line. + + http://www.gnu.org/software/diffutils/diffutils.html + +comment "diffutils needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/diffutils/diffutils.hash b/buildroot/package/diffutils/diffutils.hash new file mode 100644 index 0000000..5506ab2 --- /dev/null +++ b/buildroot/package/diffutils/diffutils.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 d621e8bdd4b573918c8145f7ae61817d1be9deb4c8d2328a65cea8e11d783bd6 diffutils-3.6.tar.xz diff --git a/buildroot/package/diffutils/diffutils.mk b/buildroot/package/diffutils/diffutils.mk new file mode 100644 index 0000000..79785d6 --- /dev/null +++ b/buildroot/package/diffutils/diffutils.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# diffutils +# +################################################################################ + +DIFFUTILS_VERSION = 3.6 +DIFFUTILS_SOURCE = diffutils-$(DIFFUTILS_VERSION).tar.xz +DIFFUTILS_SITE = $(BR2_GNU_MIRROR)/diffutils +DIFFUTILS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +DIFFUTILS_LICENSE = GPL-3.0+ +DIFFUTILS_LICENSE_FILES = COPYING + +# Since glibc >= 2.26, don't try to use getopt_long replacement bundled +# with diffutils. It will conflict with the one from glibc. +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +DIFFUTILS_CONF_ENV += gl_cv_func_getopt_gnu=yes +endif + +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +DIFFUTILS_DEPENDENCIES += busybox +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/dillo/0002-usr-local-include.patch b/buildroot/package/dillo/0002-usr-local-include.patch new file mode 100644 index 0000000..0c3fed2 --- /dev/null +++ b/buildroot/package/dillo/0002-usr-local-include.patch @@ -0,0 +1,27 @@ +Do not add (possibly poisoned) /usr/local/include and /usr/local/lib +to gcc and ld search paths in configure. + +With BR2_COMPILER_PARANOID_UNSAFE_PATH enabled, poisoned paths result +in hard errors, failing affected configure tests. + +Signed-off-by: Alex Suykov + +--- a/configure.ac ++++ b/configure.ac +@@ -57,16 +57,6 @@ + AC_TYPE_INT32_T + AC_TYPE_UINT32_T + +-dnl -------------------------------------- +-dnl Check whether to add /usr/local or not +-dnl (this is somewhat a religious problem) +-dnl -------------------------------------- +-dnl +-if test "`$CPP -v < /dev/null 2>&1 | grep '/usr/local/include' 2>&1`" = ""; then +- CPPFLAGS="$CPPFLAGS -I/usr/local/include" +- LDFLAGS="$LDFLAGS -L/usr/local/lib" +-fi +- + dnl ------------------------------------ + dnl Check for socket libs (AIX, Solaris) + dnl ------------------------------------ diff --git a/buildroot/package/dillo/Config.in b/buildroot/package/dillo/Config.in new file mode 100644 index 0000000..d06f2d1 --- /dev/null +++ b/buildroot/package/dillo/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_DILLO + bool "dillo" + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fltk fork() + select BR2_PACKAGE_FLTK + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_ZLIB + help + Dillo is a multi-platform graphical web browser known + for its speed and small footprint. + + Enable openssl package to gain https support. + + http://www.dillo.org + +comment "dillo needs a toolchain w/ C++" + depends on BR2_PACKAGE_XORG7 && BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/dillo/dillo.hash b/buildroot/package/dillo/dillo.hash new file mode 100644 index 0000000..cab0b14 --- /dev/null +++ b/buildroot/package/dillo/dillo.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 db1be16c1c5842ebe07b419aa7c6ef11a45603a75df2877f99635f4f8345148b dillo-3.0.5.tar.bz2 diff --git a/buildroot/package/dillo/dillo.mk b/buildroot/package/dillo/dillo.mk new file mode 100644 index 0000000..a6885f5 --- /dev/null +++ b/buildroot/package/dillo/dillo.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# dillo +# +################################################################################ + +DILLO_VERSION = 3.0.5 +DILLO_SOURCE = dillo-$(DILLO_VERSION).tar.bz2 +DILLO_SITE = http://www.dillo.org/download +DILLO_LICENSE = GPL-3.0+ +DILLO_LICENSE_FILES = COPYING +# configure.ac gets patched, so autoreconf is necessary +DILLO_AUTORECONF = YES +DILLO_DEPENDENCIES = fltk zlib \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +DILLO_CONF_ENV = ac_cv_path_FLTK_CONFIG=$(STAGING_DIR)/usr/bin/fltk-config + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +DILLO_CONF_OPTS += --enable-ssl +DILLO_DEPENDENCIES += openssl +else +DILLO_CONF_OPTS += --disable-ssl +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +DILLO_CONF_OPTS += --enable-png +DILLO_DEPENDENCIES += libpng +DILLO_CONF_ENV += PNG_CONFIG=$(STAGING_DIR)/usr/bin/libpng-config +else +DILLO_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +DILLO_CONF_OPTS += --enable-jpeg +DILLO_DEPENDENCIES += jpeg +else +DILLO_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +DILLO_CONF_OPTS += --enable-threaded-dns +else +DILLO_CONF_OPTS += --disable-threaded-dns +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ding-libs/Config.in b/buildroot/package/ding-libs/Config.in new file mode 100644 index 0000000..6dc2a80 --- /dev/null +++ b/buildroot/package/ding-libs/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_DING_LIBS + bool "ding-libs" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + The ding-libs packages contain a set of libraries used by + the System Security Services Daemon (SSSD) and other + projects and provide functions to manipulate filesystem + pathnames (libpath_utils), a hash table to manage storage + and access time properties (libdhash), a data type to + collect data in a hierarchical structure (libcollection), a + dynamically growing, reference-counted array (libref_array), + and a library to process configuration files in + initialization format (INI) into a library collection data + structure (libini_config). + + https://git.fedorahosted.org/git/ding-libs.git diff --git a/buildroot/package/ding-libs/ding-libs.hash b/buildroot/package/ding-libs/ding-libs.hash new file mode 100644 index 0000000..6e35697 --- /dev/null +++ b/buildroot/package/ding-libs/ding-libs.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 639984a57d6f936a6551c842712619692febaebf4515033fc929620a241ffa6a ding_libs-0_4_0.tar.xz diff --git a/buildroot/package/ding-libs/ding-libs.mk b/buildroot/package/ding-libs/ding-libs.mk new file mode 100644 index 0000000..e9508cc --- /dev/null +++ b/buildroot/package/ding-libs/ding-libs.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# ding-libs +# +################################################################################ + +DING_LIBS_VERSION = 0_4_0 +DING_LIBS_SOURCE = ding_libs-$(DING_LIBS_VERSION).tar.xz +DING_LIBS_SITE = https://git.fedorahosted.org/cgit/ding-libs.git/snapshot +DING_LIBS_DEPENDENCIES = host-pkgconf \ + $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +DING_LIBS_INSTALL_STAGING = YES +DING_LIBS_LICENSE = LGPL-3.0+ (library),GPL-3.0+ (test programs) +DING_LIBS_LICENSE_FILES = COPYING COPYING.LESSER + +# autoconf/automake generated files not present in tarball +DING_LIBS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/directfb-examples/0001-remove-bzero.patch b/buildroot/package/directfb-examples/0001-remove-bzero.patch new file mode 100644 index 0000000..41616b5 --- /dev/null +++ b/buildroot/package/directfb-examples/0001-remove-bzero.patch @@ -0,0 +1,17 @@ +--- + src/df_knuckles/matrix.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: directfb-examples-1.2.0/src/df_knuckles/matrix.c +=================================================================== +--- directfb-examples-1.2.0.orig/src/df_knuckles/matrix.c ++++ directfb-examples-1.2.0/src/df_knuckles/matrix.c +@@ -19,7 +19,7 @@ + static float Cosine[3600]; + static float Sine[3600]; + +-#define M_CLEAR(m) bzero(m, MATRIX_SIZE) ++#define M_CLEAR(m) memset(m, 0, MATRIX_SIZE) + #define M_IDENTITY(m) memcpy(m, IdentityMatrix, MATRIX_SIZE) + + static void MultiplyMatrix(float *A, float *B) diff --git a/buildroot/package/directfb-examples/Config.in b/buildroot/package/directfb-examples/Config.in new file mode 100644 index 0000000..216e036 --- /dev/null +++ b/buildroot/package/directfb-examples/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_DIRECTFB_EXAMPLES + bool "directfb examples" + depends on BR2_PACKAGE_DIRECTFB + help + The DirectFB-examples package contains a set of simple + DirectFB applications that can be used to test and demonstrate + various DirectFB features. + + http://directfb.org/downloads/Extras/README.DirectFB-examples diff --git a/buildroot/package/directfb-examples/directfb-examples.hash b/buildroot/package/directfb-examples/directfb-examples.hash new file mode 100644 index 0000000..9d59cfe --- /dev/null +++ b/buildroot/package/directfb-examples/directfb-examples.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 9a2104cc4da8123c8371813551b66b943198979f745cbebc034bb5e10844122a DirectFB-examples-1.7.0.tar.gz diff --git a/buildroot/package/directfb-examples/directfb-examples.mk b/buildroot/package/directfb-examples/directfb-examples.mk new file mode 100644 index 0000000..46263da --- /dev/null +++ b/buildroot/package/directfb-examples/directfb-examples.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# directfb-examples +# +################################################################################ + +DIRECTFB_EXAMPLES_VERSION = 1.7.0 +DIRECTFB_EXAMPLES_SITE = http://www.directfb.org/downloads/Extras +DIRECTFB_EXAMPLES_SOURCE = DirectFB-examples-$(DIRECTFB_EXAMPLES_VERSION).tar.gz +DIRECTFB_EXAMPLES_LICENSE = MIT +DIRECTFB_EXAMPLES_LICENSE_FILES = COPYING +DIRECTFB_EXAMPLES_DEPENDENCIES = directfb + +ifeq ($(BR2_STATIC_LIBS),y) +DIRECTFB_EXAMPLES_CONF_OPTS += LIBS=-lstdc++ +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/directfb/0001-fix-missing-davinci-voodoo-header.patch b/buildroot/package/directfb/0001-fix-missing-davinci-voodoo-header.patch new file mode 100644 index 0000000..6ad4958 --- /dev/null +++ b/buildroot/package/directfb/0001-fix-missing-davinci-voodoo-header.patch @@ -0,0 +1,1726 @@ +The archive of directfb-1.6.3 is still missing some header files against +the tagged git tree of directfb. The following files are missing. + +gfxdrivers/davinci/davinci_c64x.h +gfxdrivers/davinci/davincifb.h +gfxdrivers/davinci/davinci_gfxdriver.h +tests/voodoo/voodoo_test.h + +The headers of course are needed to be able to build every module of +directfb. The headers are taken from the git tree of directfb +http://git.directfb.org/?p=core/DirectFB.git;a=commit;h=38b784549bc59bb07c58bb29667cb658695d39a7, +tag DIRECTFB_1_6_3, SHA1ID 38b784549bc59bb07c58bb29667cb658695d39a7. + +Signed-off-by: Carsten Schoenert + +diff -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davinci_c64x.h directfb-1.6.3/gfxdrivers/davinci/davinci_c64x.h +--- directfb-1.6.3-orig/gfxdrivers/davinci/davinci_c64x.h 1970-01-01 01:00:00.000000000 +0100 ++++ directfb-1.6.3/gfxdrivers/davinci/davinci_c64x.h 2013-04-07 21:33:25.928530187 +0200 +@@ -0,0 +1,935 @@ ++/* ++ TI Davinci driver - C64X+ DSP Library ++ ++ (c) Copyright 2008 directfb.org ++ (c) Copyright 2007 Telio AG ++ ++ Written by Denis Oliver Kropp and ++ Olaf Dreesen . ++ ++ All rights reserved. ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU General Public License ++ version 2 as published by the Free Software Foundation. ++ ++ This library 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 library; if not, write to the ++ Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. ++*/ ++ ++#ifndef __DAVINCI_C64X_H__ ++#define __DAVINCI_C64X_H__ ++ ++#include ++ ++#include ++ ++#include ++#include ++ ++#include ++ ++#define mb() __asm__ __volatile__ ("" : : : "memory") ++ ++/**********************************************************************************************************************/ ++ ++typedef struct { ++ int magic; ++ ++ int fd; ++ c64xTaskControl *ctl; ++ void *mem; ++ ++ c64xTask *QueueL; ++} DavinciC64x; ++ ++typedef struct { ++ int magic; ++ unsigned int max_tasks; ++ unsigned int num_tasks; ++ c64xTask *tasks; ++} DavinciC64xTasks; ++ ++typedef enum { ++ C64X_TEF_NONE = 0x0000, ++ C64X_TEF_RESET = 0x0001 ++} DavinciC64xEmitFlags; ++ ++/**********************************************************************************************************************/ ++ ++DFBResult davinci_c64x_open ( DavinciC64x *c64x ); ++ ++DFBResult davinci_c64x_close ( DavinciC64x *c64x ); ++ ++DFBResult davinci_c64x_wait_low( DavinciC64x *c64x ); ++ ++/**********************************************************************************************************************/ ++ ++DFBResult davinci_c64x_tasks_init ( DavinciC64xTasks *tasks, ++ unsigned int size ); ++ ++DFBResult davinci_c64x_tasks_destroy( DavinciC64xTasks *tasks ); ++ ++/**********************************************************************************************************************/ ++ ++DFBResult davinci_c64x_emit_tasks( DavinciC64x *c64x, ++ DavinciC64xTasks *tasks, ++ DavinciC64xEmitFlags flags ); ++ ++/**********************************************************************************************************************/ ++ ++static const char *state_names[] = { "DONE", "ERROR", "TODO", "RUNNING" }; ++ ++static inline c64xTask * ++c64x_get_task( DavinciC64x *c64x ) ++{ ++ c64xTaskControl *ctl = c64x->ctl; ++ uint32_t idx = ctl->QL_arm; ++ uint32_t next = (idx + 1) & C64X_QUEUE_MASK; ++ c64xTask *task = &c64x->QueueL[idx]; ++ int loops = 0; ++ uint32_t idle = 0; ++ ++ /* Wait for the entry (and next) to be processed by the DSP (rare case). */ ++ while (task->c64x_flags & C64X_FLAG_TODO || ctl->QL_dsp == next) { ++ if (loops > 666 || (idle && ctl->idlecounter - idle > 666)) { ++ c64xTask *dsp_task = &c64x->QueueL[ctl->QL_dsp]; ++ ++ D_PERROR( "Davinci/C64X+: Blocked! [DSP %d / %d (%s), ARM %d / %d (%s)]\n", ++ ctl->QL_dsp, ++ (dsp_task->c64x_function >> 2) & 0x3fff, ++ state_names[dsp_task->c64x_function & 3], ++ ctl->QL_arm, ++ (task->c64x_function >> 2) & 0x3fff, ++ state_names[task->c64x_function & 3] ); ++ ++ break; ++ } ++ ++ idle = ctl->idlecounter; ++ ++ /* Queue is full, waiting 10-20ms should not be too bad. */ ++ if (loops++ > 10) ++ usleep( 5000 ); ++ } ++ ++ return task; ++} ++ ++static inline void ++c64x_submit_task( DavinciC64x *c64x, c64xTask *task ) ++{ ++ c64xTaskControl *ctl = c64x->ctl; ++ uint32_t idx = ctl->QL_arm; ++ uint32_t next = (idx + 1) & C64X_QUEUE_MASK; ++ ++ mb(); ++ ++ ctl->QL_arm = next; ++ ++ mb(); ++} ++ ++/**********************************************************************************************************************/ ++ ++static inline void ++davinci_c64x_wb_inv_range( DavinciC64x *c64x, ++ unsigned long start, ++ u32 length, ++ u32 func ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = start; ++ task->c64x_arg[1] = length; ++ task->c64x_arg[2] = func; ++ ++ task->c64x_function = C64X_WB_INV_RANGE | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_write_back_all( DavinciC64x *c64x ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_function = C64X_WRITE_BACK_ALL | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++/**********************************************************************************************************************/ ++ ++static inline void ++davinci_c64x_load_block__L( DavinciC64xTasks *tasks, ++ unsigned long words, ++ u32 num, ++ u32 flags ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = words; ++ task->c64x_arg[1] = num; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_LOAD_BLOCK | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_load_block( DavinciC64x *c64x, ++ unsigned long words, ++ u32 num, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = words; ++ task->c64x_arg[1] = num; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_LOAD_BLOCK | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_fetch_uyvy( DavinciC64x *c64x, ++ unsigned long dest, ++ unsigned long source, ++ u32 pitch, ++ u32 height, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = source; ++ task->c64x_arg[2] = pitch; ++ task->c64x_arg[3] = height; ++ task->c64x_arg[4] = flags; ++ ++ task->c64x_function = C64X_FETCH_UYVY | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_mc( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long source0, ++ unsigned long source1, ++ u32 spitch, ++ u32 height, ++ int func ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = source0; ++ task->c64x_arg[3] = source1; ++ task->c64x_arg[4] = spitch; ++ task->c64x_arg[5] = height; ++ ++ task->c64x_function = func | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_put_idct_uyvy_16x16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_IDCT_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_put_idct_uyvy_16x16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_IDCT_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_put_mc_uyvy_16x16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_MC_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_put_mc_uyvy_16x16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_MC_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_put_sum_uyvy_16x16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_SUM_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_put_sum_uyvy_16x16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = flags; ++ ++ task->c64x_function = C64X_PUT_SUM_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_dva_begin_frame__L( DavinciC64xTasks *tasks, ++ u32 pitch, ++ unsigned long current, ++ unsigned long past, ++ unsigned long future, ++ u32 flags ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = pitch; ++ task->c64x_arg[1] = current; ++ task->c64x_arg[2] = past; ++ task->c64x_arg[3] = future; ++ task->c64x_arg[4] = flags; ++ ++ task->c64x_function = C64X_DVA_BEGIN_FRAME | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_dva_begin_frame( DavinciC64x *c64x, ++ u32 pitch, ++ unsigned long current, ++ unsigned long past, ++ unsigned long future, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = pitch; ++ task->c64x_arg[1] = current; ++ task->c64x_arg[2] = past; ++ task->c64x_arg[3] = future; ++ task->c64x_arg[4] = flags; ++ ++ task->c64x_function = C64X_DVA_BEGIN_FRAME | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_dva_motion_block__L( DavinciC64xTasks *tasks, ++ unsigned long macroblock ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = macroblock; ++ ++ task->c64x_function = C64X_DVA_MOTION_BLOCK | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_dva_motion_block( DavinciC64x *c64x, ++ unsigned long macroblock ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = macroblock; ++ ++ task->c64x_function = C64X_DVA_MOTION_BLOCK | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++/**********************************************************************************************************************/ ++ ++static inline void ++davinci_c64x_dva_idct( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ unsigned long source ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = source; ++ ++ task->c64x_function = C64X_DVA_IDCT | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++/**********************************************************************************************************************/ ++ ++static inline void ++davinci_c64x_put_uyvy_16x16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ unsigned long source, ++ u32 flags ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = source; ++ task->c64x_arg[3] = flags; ++ ++ task->c64x_function = C64X_PUT_UYVY_16x16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_dither_argb__L( DavinciC64xTasks *tasks, ++ unsigned long dst_rgb, ++ unsigned long dst_alpha, ++ u32 dst_pitch, ++ unsigned long source, ++ u32 src_pitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dst_rgb; ++ task->c64x_arg[1] = dst_alpha; ++ task->c64x_arg[2] = dst_pitch; ++ task->c64x_arg[3] = source; ++ task->c64x_arg[4] = src_pitch; ++ task->c64x_arg[5] = width; ++ task->c64x_arg[6] = height; ++ ++ task->c64x_function = C64X_DITHER_ARGB | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_dither_argb( DavinciC64x *c64x, ++ unsigned long dst_rgb, ++ unsigned long dst_alpha, ++ u32 dst_pitch, ++ unsigned long source, ++ u32 src_pitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dst_rgb; ++ task->c64x_arg[1] = dst_alpha; ++ task->c64x_arg[2] = dst_pitch; ++ task->c64x_arg[3] = source; ++ task->c64x_arg[4] = src_pitch; ++ task->c64x_arg[5] = width; ++ task->c64x_arg[6] = height; ++ ++ task->c64x_function = C64X_DITHER_ARGB | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_fill_16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 pitch, ++ u32 width, ++ u32 height, ++ u32 value ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = width; ++ task->c64x_arg[3] = height; ++ task->c64x_arg[4] = value; ++ ++ task->c64x_function = C64X_FILL_16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_fill_16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ u32 width, ++ u32 height, ++ u32 value ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = width; ++ task->c64x_arg[3] = height; ++ task->c64x_arg[4] = value; ++ ++ task->c64x_function = C64X_FILL_16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_fill_32__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 pitch, ++ u32 width, ++ u32 height, ++ u32 value ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = width; ++ task->c64x_arg[3] = height; ++ task->c64x_arg[4] = value; ++ ++ task->c64x_function = C64X_FILL_32 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_fill_32( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 pitch, ++ u32 width, ++ u32 height, ++ u32 value ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = pitch; ++ task->c64x_arg[2] = width; ++ task->c64x_arg[3] = height; ++ task->c64x_arg[4] = value; ++ ++ task->c64x_function = C64X_FILL_32 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_blit_16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width; ++ task->c64x_arg[5] = height; ++ ++ task->c64x_function = C64X_COPY_16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_blit_16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width; ++ task->c64x_arg[5] = height; ++ ++ task->c64x_function = C64X_COPY_16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_blit_32__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width; ++ task->c64x_arg[5] = height; ++ ++ task->c64x_function = C64X_COPY_32 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_blit_32( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width; ++ task->c64x_arg[5] = height; ++ ++ task->c64x_function = C64X_COPY_32 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_stretch_32__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 dw, ++ u32 dh, ++ u32 sw, ++ u32 sh, ++ const DFBRegion *clip ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = src; ++ task->c64x_arg[2] = dpitch | (spitch << 16); ++ task->c64x_arg[3] = dh | (dw << 16); ++ task->c64x_arg[4] = sh | (sw << 16); ++ task->c64x_arg[5] = clip->x2 | (clip->y2 << 16); ++ task->c64x_arg[6] = clip->x1 | (clip->y1 << 16); ++ ++ if (sw > dw && sh > dh) ++ task->c64x_function = C64X_STRETCH_32_down | C64X_FLAG_TODO; ++ else ++ task->c64x_function = C64X_STRETCH_32_up | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_stretch_32( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 dw, ++ u32 dh, ++ u32 sw, ++ u32 sh, ++ const DFBRegion *clip ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = src; ++ task->c64x_arg[2] = dpitch | (spitch << 16); ++ task->c64x_arg[3] = dh | (dw << 16); ++ task->c64x_arg[4] = sh | (sw << 16); ++ task->c64x_arg[5] = clip->x2 | (clip->y2 << 16); ++ task->c64x_arg[6] = clip->x1 | (clip->y1 << 16); ++ ++ if (sw > dw && sh > dh) ++ task->c64x_function = C64X_STRETCH_32_down | C64X_FLAG_TODO; ++ else ++ task->c64x_function = C64X_STRETCH_32_up | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_blit_blend_32__L( DavinciC64xTasks *tasks, ++ u32 sub_func, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 argb, ++ u8 alpha ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width | (height << 16); ++ task->c64x_arg[5] = argb; ++ task->c64x_arg[6] = alpha; ++ ++ task->c64x_function = (sub_func << 16) | C64X_BLEND_32 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_blit_blend_32( DavinciC64x *c64x, ++ u32 sub_func, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 argb, ++ u8 alpha ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = dpitch; ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = spitch; ++ task->c64x_arg[4] = width | (height << 16); ++ task->c64x_arg[5] = argb; ++ task->c64x_arg[6] = alpha; ++ ++ task->c64x_function = (sub_func << 16) | C64X_BLEND_32 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_blit_keyed_16__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 key, ++ u32 mask ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = width; ++ task->c64x_arg[4] = height; ++ task->c64x_arg[5] = key; ++ task->c64x_arg[6] = mask; ++ ++ task->c64x_function = C64X_COPY_KEYED_16 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_blit_keyed_16( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 key, ++ u32 mask ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = width; ++ task->c64x_arg[4] = height; ++ task->c64x_arg[5] = key; ++ task->c64x_arg[6] = mask; ++ ++ task->c64x_function = C64X_COPY_KEYED_16 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++static inline void ++davinci_c64x_blit_keyed_32__L( DavinciC64xTasks *tasks, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 key, ++ u32 mask ) ++{ ++ c64xTask *task = &tasks->tasks[tasks->num_tasks]; ++ ++ D_ASSERT( tasks->num_tasks < tasks->max_tasks ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = width; ++ task->c64x_arg[4] = height; ++ task->c64x_arg[5] = key; ++ task->c64x_arg[6] = mask; ++ ++ task->c64x_function = C64X_COPY_KEYED_32 | C64X_FLAG_TODO; ++ ++ tasks->num_tasks++; ++} ++ ++static inline void ++davinci_c64x_blit_keyed_32( DavinciC64x *c64x, ++ unsigned long dest, ++ u32 dpitch, ++ unsigned long src, ++ u32 spitch, ++ u32 width, ++ u32 height, ++ u32 key, ++ u32 mask ) ++{ ++ c64xTask *task = c64x_get_task( c64x ); ++ ++ task->c64x_arg[0] = dest; ++ task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff); ++ task->c64x_arg[2] = src; ++ task->c64x_arg[3] = width; ++ task->c64x_arg[4] = height; ++ task->c64x_arg[5] = key; ++ task->c64x_arg[6] = mask; ++ ++ task->c64x_function = C64X_COPY_KEYED_32 | C64X_FLAG_TODO; ++ ++ c64x_submit_task( c64x, task ); ++} ++ ++#endif ++ +diff -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davincifb.h directfb-1.6.3/gfxdrivers/davinci/davincifb.h +--- directfb-1.6.3-orig/gfxdrivers/davinci/davincifb.h 1970-01-01 01:00:00.000000000 +0100 ++++ directfb-1.6.3/gfxdrivers/davinci/davincifb.h 2013-04-07 21:33:21.488622184 +0200 +@@ -0,0 +1,581 @@ ++/* ++ * Copyright (C) 2006 Texas Instruments Inc ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option)any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * ++ * File: davincifb.h ++ */ ++ ++#ifndef DAVINVI_VPBE_H ++#define DAVINVI_VPBE_H ++ ++/* include Linux files */ ++#include ++ ++/* define the custom FBIO_WAITFORVSYNC ioctl */ ++#define FBIO_WAITFORVSYNC _IOW('F', 0x20, u_int32_t) ++#define FBIO_SETATTRIBUTE _IOW('F', 0x21, struct fb_fillrect) ++ ++/* Backported IOCTLS. */ ++#define FBIO_SETPOSX _IOW('F', 0x22, u_int32_t) ++#define FBIO_SETPOSY _IOW('F', 0x23, u_int32_t) ++#define FBIO_SETZOOM _IOW('F', 0x24, struct zoom_params) ++#define FBIO_GETSTD _IOR('F', 0x25, u_int32_t) ++#define FBIO_RESIZER _IOW('F', 0x26, struct vpfe_resizer_params) ++#define FBIO_SYNC _IOW('F', 0x27, u_int32_t) ++ ++typedef struct zoom_params { ++ u_int32_t window_id; ++ u_int32_t zoom_h; ++ u_int32_t zoom_v; ++} zoom_params_t; ++ ++typedef struct vpfe_resizer_params ++{ ++ u_int32_t rsz_cnt; //busy-lock ++ u_int32_t out_size; //busy-lock ++ u_int32_t in_start; //busy-lock ++ u_int32_t in_size; //busy-lock ++ u_int32_t sdr_inadd; //shadowed ++ u_int32_t sdr_inoff; //shadowed ++ u_int32_t sdr_outadd; //shadowed ++ u_int32_t sdr_outoff; //shadowed ++ u_int32_t hfilt[16]; //busy-lock ++ u_int32_t vfilt[16]; //busy-lock ++ u_int32_t yenh; //busy-lock ++} vpfe_resizer_params_t; ++ ++typedef struct fb_set_start { ++ int offset; /* offset from smem_start */ ++ unsigned long physical; /* absolute physical address when offset < 0 */ ++ ++ u_int64_t sync; /* input: target sync counter for change or 0 for no sync at all, ++ output: sync counter of actual change or 0 if still pending */ ++} fb_set_start_t; ++ ++ ++#ifdef _IOC_TYPECHECK ++#undef _IOC_TYPECHECK ++#define _IOC_TYPECHECK(x) (sizeof(x)) ++#endif ++ ++#define RAM_CLUT_SIZE 256*3 ++#define FBIO_ENABLE_DISABLE_WIN \ ++ _IOW('F', 0x30, unsigned char) ++#define FBIO_SET_BITMAP_BLEND_FACTOR \ ++ _IOW('F', 0x31, vpbe_bitmap_blend_params_t) ++#define FBIO_SET_BITMAP_WIN_RAM_CLUT \ ++ _IOW('F', 0x32, unsigned char)*RAM_CLUT_SIZE) ++#define FBIO_ENABLE_DISABLE_ATTRIBUTE_WIN \ ++ _IOW('F', 0x33, unsigned int) ++#define FBIO_GET_BLINK_INTERVAL \ ++ _IOR('F', 0x34, vpbe_blink_option_t) ++#define FBIO_SET_BLINK_INTERVAL \ ++ _IOW('F', 0x35, vpbe_blink_option_t) ++#define FBIO_GET_VIDEO_CONFIG_PARAMS \ ++ _IOR('F', 0x36, vpbe_video_config_params_t) ++#define FBIO_SET_VIDEO_CONFIG_PARAMS \ ++ _IOW('F', 0x37, vpbe_video_config_params_t) ++#define FBIO_GET_BITMAP_CONFIG_PARAMS \ ++ _IOR('F', 0x38, vpbe_bitmap_config_params_t) ++#define FBIO_SET_BITMAP_CONFIG_PARAMS \ ++ _IOW('F', 0x39, vpbe_bitmap_config_params_t) ++#define FBIO_SET_DCLK \ ++ _IOW('F', 0x40, vpbe_dclk_t) ++#define FBIO_SET_INTERFACE \ ++ _IOW('F', 0x41, unsigned char) ++#define FBIO_GET_INTERFACE \ ++ _IOR('F', 0x42, unsigned char) ++#define FBIO_QUERY_TIMING \ ++ _IOWR('F', 0x43, struct vpbe_mode_info) ++#define FBIO_SET_TIMING \ ++ _IOW('F', 0x44, struct vpbe_fb_videomode) ++#define FBIO_GET_TIMING \ ++ _IOR('F', 0x45, struct vpbe_fb_videomode) ++#define FBIO_SET_VENC_CLK_SOURCE \ ++ _IOW('F', 0x46, unsigned char) ++#define FBIO_SET_BACKG_COLOR \ ++ _IOW('F', 0x47, vpbe_backg_color_t) ++#define FBIO_ENABLE_DISPLAY \ ++ _IOW('F', 0x48, unsigned char) ++#define FBIO_SETPOS \ ++ _IOW('F', 0x49, u_int32_t) ++#define FBIO_SET_CURSOR \ ++ _IOW('F', 0x50, struct fb_cursor) ++#define FBIO_SET_START \ ++ _IOW('F', 0x66, struct fb_set_start) ++ ++/* ++ * Defines and Constants ++ */ ++#ifdef __KERNEL__ ++#define DAVINCIFB_DEVICE "davincifb" ++#define DAVINCIFB_DRIVER "davincifb" ++ ++#define MULTIPLE_BUFFERING 1 ++ ++#ifdef MULTIPLE_BUFFERING ++#define DOUBLE_BUF 2 ++#define TRIPLE_BUF 3 ++#else ++#define DOUBLE_BUF 1 ++#define TRIPLE_BUF 1 ++#endif ++ ++/* usage: if (is_win(info->fix.id, OSD0)) ... */ ++#define is_win(name, x) ((strcmp(name, x ## _FBNAME) == 0) ? 1 : 0) ++ ++/* ++ * display controller register I/O routines ++ */ ++u32 dispc_reg_in(u32 offset); ++u32 dispc_reg_out(u32 offset, u32 val); ++u32 dispc_reg_merge(u32 offset, u32 val, u32 mask); ++ ++#endif /*__KERNEL__*/ ++ ++/* Error return codes */ ++#define VPBE_INVALID_PARA_VALUE 700 ++#define VPBE_WRONG_WINDOW_ID 701 ++#define VPBE_CURRENTLY_IN_REQUIRED_MODE 702 ++#define VPBE_INSUFFICIENT_CLUT_VALUES 703 ++#define VPBE_CLUT_WRITE_TIMEOUT 704 ++#define VPBE_VID0_BUF_ADR_NULL 705 ++#define VPBE_WINDOW_NOT_DISABLED 706 ++#define VPBE_WINDOW_NOT_ENABLED 707 ++ ++#ifndef __KERNEL__ ++/* Window ID definations */ ++#define OSD0 0 ++#define VID0 1 ++#define OSD1 2 ++#define VID1 3 ++#endif ++ ++/* There are 4 framebuffers, each represented by an fb_info and ++ * a dm_win_info structure */ ++#define OSD0_FBNAME "dm_osd0_fb" ++#define OSD1_FBNAME "dm_osd1_fb" ++#define VID0_FBNAME "dm_vid0_fb" ++#define VID1_FBNAME "dm_vid1_fb" ++ ++/* FIXME: Digital LCD RGB matrix coefficients */ ++#define DLCD_DGY_VAL 0 ++#define DLCD_DRV_VAL 0 ++#define DLCD_DGU_VAL 0 ++#define DLCD_DBU_VAL 0 ++ ++/* Defines for bitmap format */ ++#define VPBE_BITMAP_BIT_1 1 ++#define VPBE_BITMAP_BIT_2 2 ++#define VPBE_BITMAP_BIT_4 4 ++#define VPBE_BITMAP_BIT_8 8 ++#define VPBE_BITMAP_RGB565 16 ++#define VPBE_VIDEO_YUV422 16 ++#define VPBE_VIDEO_RGB888 24 ++ ++/* Defines foe cursor parameter validation*/ ++#define MAX_CURSOR_WIDTH 0x3FF ++#define MAX_CURSOR_HEIGHT 0x1FF ++#define MAX_CURSOR_LINEWIDTH 7 ++ ++#define BASEX 0x80 ++#define BASEY 0x12 ++#define BASEX_DLCD 0x59 ++#define BASEY_DLCD 0x22 ++ ++/* ++ * Enumerations ++ */ ++/* Enum for blending factor */ ++typedef enum vpbe_blend_factor { ++ OSD_CONTRIBUTION_ZERO = 0, ++ OSD_CONTRIBUTION_1_BY_8 = 1, ++ OSD_CONTRIBUTION_2_BY_8 = 2, ++ OSD_CONTRIBUTION_3_BY_8 = 3, ++ OSD_CONTRIBUTION_4_BY_8 = 4, ++ OSD_CONTRIBUTION_5_BY_8 = 5, ++ OSD_CONTRIBUTION_6_BY_8 = 6, ++ OSD_CONTRIBUTION_ONE = 7 ++} vpbe_blend_factor_t; ++ ++/* Enum for Boolean variables */ ++typedef enum { ++ SET_0 = 0, ++ SET_1 = 1 ++} CB_CR_ORDER, ATTRIBUTE, ROM_RAM_CLUT; ++ ++/* Defines for Display Interface */ ++#define PRGB 0 ++#define COMPOSITE 1 ++#define SVIDEO 2 ++#define COMPONENT 3 ++#define RGB 4 ++#define YCC16 5 ++#define YCC8 6 ++#define SRGB 7 ++#define EPSON 8 ++#define CASIO1G 9 ++#define UDISP 10 ++#define STN 11 ++#define VPBE_MAX_INTERFACES 12 ++ ++/* Defines for Display Mode */ ++#define LCD 0 ++#define NTSC 1 ++#define PAL 2 ++#define P525 3 ++#define P625 4 ++ ++#define DEFAULT_MODE 0 ++#define P480 0 ++#define P400 1 ++#define P350 2 ++#define NON_EXISTING_MODE 255 ++/* Enable/Disable enum */ ++typedef enum { ++ VPBE_DISABLE = 0, ++ VPBE_ENABLE = 1 ++} ATTENUATION, TRANSPARENCY, EXPANSION, BLINKING; ++ ++typedef enum clk_source { ++ CLK_SOURCE_CLK27 = 0, ++ CLK_SOURCE_CLK54 = 1, ++ CLK_SOURCE_VPBECLK = 2 ++} CLK_SOURCE; ++ ++/* ++ * Structures and Union Definitions ++ */ ++ ++/* Structure for transparency and the blending factor for the bitmap window */ ++typedef struct vpbe_bitmap_blend_params { ++ unsigned int colorkey; /* color key to be blend */ ++ unsigned int enable_colorkeying; /* enable color keying */ ++ unsigned int bf; /* valid range from 0 to 7 only. */ ++} vpbe_bitmap_blend_params_t; ++ ++/* Structure for window expansion */ ++typedef struct vpbe_win_expansion { ++ EXPANSION horizontal; ++ EXPANSION vertical; /* 1: Enable 0:disable */ ++} vpbe_win_expansion_t; ++ ++/* Structure for OSD window blinking options */ ++typedef struct vpbe_blink_option { ++ BLINKING blinking; /* 1: Enable blinking 0: Disable */ ++ unsigned int interval; /* Valid only if blinking is 1 */ ++} vpbe_blink_option_t; ++ ++/* Structure for DCLK parameters */ ++typedef struct vpbe_dclk { ++ unsigned char dclk_pattern_width; ++ unsigned int dclk_pattern0; ++ unsigned int dclk_pattern1; ++ unsigned int dclk_pattern2; ++ unsigned int dclk_pattern3; ++} vpbe_dclk_t; ++ ++/* Structure for display format */ ++typedef struct vpbe_display_format { ++ unsigned char interface; /* Output interface type */ ++ unsigned char mode; /* output mode */ ++} vpbe_display_format_t; ++ ++/* Structure for background color */ ++typedef struct vpbe_backg_color { ++ unsigned char clut_select; /* 2: RAM CLUT 1:ROM1 CLUT 0:ROM0 CLUT */ ++ unsigned char color_offset; /* index of color */ ++} vpbe_backg_color_t; ++ ++/* Structure for Video window configurable parameters */ ++typedef struct vpbe_video_config_params { ++ CB_CR_ORDER cb_cr_order; /*Cb/Cr order in input data for a pixel. */ ++ /* 0: cb cr 1: cr cb */ ++ vpbe_win_expansion_t exp_info; /* HZ/VT Expansion enable disable */ ++} vpbe_video_config_params_t; ++ ++/*Union of structures giving the CLUT index for the 1, 2, 4 bit bitmap values.*/ ++typedef union vpbe_clut_idx { ++ struct _for_4bit_bimap { ++ unsigned char bitmap_val_0; ++ unsigned char bitmap_val_1; ++ unsigned char bitmap_val_2; ++ unsigned char bitmap_val_3; ++ unsigned char bitmap_val_4; ++ unsigned char bitmap_val_5; ++ unsigned char bitmap_val_6; ++ unsigned char bitmap_val_7; ++ unsigned char bitmap_val_8; ++ unsigned char bitmap_val_9; ++ unsigned char bitmap_val_10; ++ unsigned char bitmap_val_11; ++ unsigned char bitmap_val_12; ++ unsigned char bitmap_val_13; ++ unsigned char bitmap_val_14; ++ unsigned char bitmap_val_15; ++ } for_4bit_bimap; ++ struct _for_2bit_bimap { ++ unsigned char bitmap_val_0; ++ unsigned char dummy0[4]; ++ unsigned char bitmap_val_1; ++ unsigned char dummy1[4]; ++ unsigned char bitmap_val_2; ++ unsigned char dummy2[4]; ++ unsigned char bitmap_val_3; ++ } for_2bit_bimap; ++ struct _for_1bit_bimap { ++ unsigned char bitmap_val_0; ++ unsigned char dummy0[14]; ++ unsigned char bitmap_val_1; ++ } for_1bit_bimap; ++} vpbe_clut_idx_t; ++ ++/* Structure for bitmap window configurable parameters */ ++typedef struct vpbe_bitmap_config_params { ++ /* Only for bitmap width = 1,2,4 bits */ ++ vpbe_clut_idx_t clut_idx; ++ /* Attenuation value for YUV o/p for bitmap window */ ++ unsigned char attenuation_enable; ++ /* 0: ROM DM270, 1:ROM DM320, 2:RAM CLUT */ ++ unsigned char clut_select; ++} vpbe_bitmap_config_params_t; ++ ++/* Unioun for video/OSD configuration parameters */ ++typedef union vpbe_conf_params { ++ ++ struct vpbe_video_params { ++ CB_CR_ORDER cb_cr_order; ++ /* HZ/VT Expansion enable disable */ ++ vpbe_win_expansion_t exp_info; ++ } video_params; ++ ++ struct vpbe_bitmap_params { ++ /* Attenuation value for YUV o/p */ ++ ATTENUATION attenuation_enable; ++ /* 0: ROM DM270, 1: ROM DM320, 2:RAM CLUT */ ++ unsigned char clut_select; ++ /* Only for bitmap width = 1,2,4 bits */ ++ vpbe_clut_idx_t clut_idx; ++ /* 0: OSD window is bitmap window */ ++ /* 1: OSD window is attribute window */ ++ ATTRIBUTE enable_attribute; ++ /* To hold bps value. ++ Used to switch back from attribute to bitmap. */ ++ unsigned int stored_bits_per_pixel; ++ /* Blending information */ ++ vpbe_bitmap_blend_params_t blend_info; ++ /* OSD Blinking information */ ++ vpbe_blink_option_t blink_info; ++ } bitmap_params; ++ ++} vpbe_conf_params_t; ++ ++typedef struct vpbe_video_params vpbe_video_params_t; ++typedef struct vpbe_bitmap_params vpbe_bitmap_params_t; ++ ++/* Structure to hold window position */ ++typedef struct vpbe_window_position { ++ unsigned int xpos; /* X position of the window */ ++ unsigned int ypos; /* Y position of the window */ ++} vpbe_window_position_t; ++ ++#ifdef __KERNEL__ ++/* Structure for each window */ ++typedef struct vpbe_dm_win_info { ++ struct fb_info info; ++ vpbe_window_position_t win_pos; /* X,Y position of window */ ++ /* Size of window is already there in var_info structure. */ ++ ++ dma_addr_t fb_base_phys; /*framebuffer area */ ++ unsigned int fb_base; /*window memory pointer */ ++ unsigned int fb_size; /*memory size */ ++ unsigned int pseudo_palette[17]; ++ int alloc_fb_mem; ++ /*flag to identify if framebuffer area is fixed or not */ ++ unsigned long sdram_address; ++ struct vpbe_dm_info *dm; ++ unsigned char window_enable; /*Additions for all windows */ ++ zoom_params_t zoom; /*Zooming parameters */ ++ unsigned char field_frame_select; /*To select Field or frame */ ++ unsigned char numbufs; /*Number of buffers valid 2 or 3 */ ++ vpbe_conf_params_t conf_params; ++ /*window configuration parameter union pointer */ ++} vpbe_dm_win_info_t; ++#endif /*__KERNEL__*/ ++ ++/* ++ * Videmode structure for display interface and mode settings ++ */ ++typedef struct vpbe_fb_videomode { ++ unsigned char name[10]; /* Mode name ( NTSC , PAL) */ ++ unsigned int vmode; /* FB_MODE_INTERLACED or FB_MODE_NON_INTERLACED */ ++ unsigned int xres; /* X Resolution of the display */ ++ unsigned int yres; /* Y Resolution of the display */ ++ unsigned int fps; /* frames per second */ ++ /* Timing Parameters applicable for std = 0 only */ ++ unsigned int left_margin; ++ unsigned int right_margin; ++ unsigned int upper_margin; ++ unsigned int lower_margin; ++ unsigned int hsync_len; ++ unsigned int vsync_len; ++ unsigned int sync; /* 0: hsync -ve/vsync -ve */ ++ /*1: hsync -ve/vsync +ve */ ++ /*2: hsync +ve/vsync -ve */ ++ /*3: hsync +ve/vsync +ve */ ++ unsigned int basepx; /* Display x,y start position */ ++ unsigned int basepy; ++/* 1= Mode s available in modelist 0=Mode is not available in modelist */ ++ unsigned int std; ++} vpbe_fb_videomode_t; ++ ++/* Structure to interface videomode to application*/ ++typedef struct vpbe_mode_info { ++ vpbe_fb_videomode_t vid_mode; ++ unsigned char interface; ++ unsigned char mode_idx; ++} vpbe_mode_info_t; ++ ++#ifdef __KERNEL__ ++/* ++ * Structure for the driver holding information of windows, ++ * memory base addresses etc. ++ */ ++typedef struct vpbe_dm_info { ++ vpbe_dm_win_info_t *osd0; ++ vpbe_dm_win_info_t *osd1; ++ vpbe_dm_win_info_t *vid0; ++ vpbe_dm_win_info_t *vid1; ++ ++/* to map the registers */ ++ dma_addr_t mmio_base_phys; ++ unsigned int mmio_base; ++ unsigned int mmio_size; ++ ++ wait_queue_head_t vsync_wait; ++ unsigned int vsync_cnt; ++ int timeout; ++ ++ /* this is the function that configures the output device (NTSC/PAL/LCD) ++ * for the required output format (composite/s-video/component/rgb) ++ */ ++ void (*output_device_config) (void); ++ ++ struct device *dev; ++ ++ vpbe_backg_color_t backg; /* background color */ ++ vpbe_dclk_t dclk; /*DCLK parameters */ ++ vpbe_display_format_t display; /*Display interface and mode */ ++ vpbe_fb_videomode_t videomode; /*Cuurent videomode */ ++ char ram_clut[256][3]; /*RAM CLUT array */ ++ struct fb_cursor cursor; /* cursor config params from fb.h */ ++/*Flag that indicates whether any of the display is enabled or not*/ ++ int display_enable; ++} vpbe_dm_info_t; ++ ++/* ++ * Functions Definitions for 'davincifb' module ++ */ ++int vpbe_mem_alloc_window_buf(vpbe_dm_win_info_t *); ++int vpbe_mem_release_window_buf(vpbe_dm_win_info_t *); ++void init_display_function(vpbe_display_format_t *); ++int vpbe_mem_alloc_struct(vpbe_dm_win_info_t **); ++void set_vid0_default_conf(void); ++void set_vid1_default_conf(void); ++void set_osd0_default_conf(void); ++void set_osd1_default_conf(void); ++void set_cursor_default_conf(void); ++void set_dm_default_conf(void); ++void set_win_enable(char *, unsigned int); ++int within_vid0_limits(u32, u32, u32, u32); ++void vpbe_set_display_default(void); ++#ifdef __KERNEL__ ++void set_win_position(char *, u32, u32, u32, u32); ++void change_win_param(int); ++void set_interlaced(char *, unsigned int); ++#endif /* __KERNEL__ */ ++ ++/* ++ * Function definations for 'osd' module ++ */ ++ ++int vpbe_enable_window(vpbe_dm_win_info_t *); ++int vpbe_disable_window(vpbe_dm_win_info_t *); ++int vpbe_vid_osd_select_field_frame(u8 *, u8); ++int vpbe_bitmap_set_blend_factor(u8 *, vpbe_bitmap_blend_params_t *); ++int vpbe_bitmap_set_ram_clut(void); ++int vpbe_enable_disable_attribute_window(u32); ++int vpbe_get_blinking(u8 *, vpbe_blink_option_t *); ++int vpbe_set_blinking(u8 *, vpbe_blink_option_t *); ++int vpbe_set_vid_params(u8 *, vpbe_video_config_params_t *); ++int vpbe_get_vid_params(u8 *, vpbe_video_config_params_t *); ++int vpbe_bitmap_get_params(u8 *, vpbe_bitmap_config_params_t *); ++int vpbe_bitmap_set_params(u8 *, vpbe_bitmap_config_params_t *); ++int vpbe_set_cursor_params(struct fb_cursor *); ++int vpbe_set_vid_expansion(vpbe_win_expansion_t *); ++int vpbe_set_dclk(vpbe_dclk_t *); ++int vpbe_set_display_format(vpbe_display_format_t *); ++int vpbe_set_backg_color(vpbe_backg_color_t *); ++int vpbe_set_interface(u8); ++int vpbe_query_mode(vpbe_mode_info_t *); ++int vpbe_set_mode(struct vpbe_fb_videomode *); ++int vpbe_set_venc_clk_source(u8); ++void set_vid0_default_conf(void); ++void set_osd0_default_conf(void); ++void set_vid1_default_conf(void); ++void set_osd1_default_conf(void); ++void set_cursor_default_conf(void); ++void set_dm_default_conf(void); ++/* ++ * Function definations for 'venc' module ++ */ ++ ++void davincifb_ntsc_composite_config(void); ++void davincifb_ntsc_svideo_config(void); ++void davincifb_ntsc_component_config(void); ++void davincifb_pal_composite_config(void); ++void davincifb_pal_svideo_config(void); ++void davincifb_pal_component_config(void); ++ ++void vpbe_davincifb_ntsc_rgb_config(void); ++void vpbe_davincifb_pal_rgb_config(void); ++void vpbe_davincifb_525p_component_config(void); ++void vpbe_davincifb_625p_component_config(void); ++ ++void vpbe_enable_venc(int); ++void vpbe_enable_dacs(int); ++/* ++ * Function definations for 'dlcd' module ++ */ ++void vpbe_davincifb_480p_prgb_config(void); ++void vpbe_davincifb_400p_prgb_config(void); ++void vpbe_davincifb_350p_prgb_config(void); ++void vpbe_set_display_timing(struct vpbe_fb_videomode *); ++ ++void vpbe_enable_lcd(int); ++/* ++ * Following functions are not implemented ++ */ ++void vpbe_davincifb_default_ycc16_config(void); ++void vpbe_davincifb_default_ycc8_config(void); ++void vpbe_davincifb_default_srgb_config(void); ++void vpbe_davincifb_default_epson_config(void); ++void vpbe_davincifb_default_casio_config(void); ++void vpbe_davincifb_default_UDISP_config(void); ++void vpbe_davincifb_default_STN_config(void); ++#endif /*__KERNEL__*/ ++ ++#endif /* End of #ifndef DAVINCI_VPBE_H */ +diff -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davinci_gfxdriver.h directfb-1.6.3/gfxdrivers/davinci/davinci_gfxdriver.h +--- directfb-1.6.3-orig/gfxdrivers/davinci/davinci_gfxdriver.h 1970-01-01 01:00:00.000000000 +0100 ++++ directfb-1.6.3/gfxdrivers/davinci/davinci_gfxdriver.h 2013-04-07 21:33:19.560662133 +0200 +@@ -0,0 +1,169 @@ ++/* ++ TI Davinci driver - Graphics Driver ++ ++ (c) Copyright 2007 Telio AG ++ ++ Written by Denis Oliver Kropp ++ ++ Code is derived from VMWare driver. ++ ++ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) ++ (c) Copyright 2000-2004 Convergence (integrated media) GmbH ++ ++ All rights reserved. ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2 of the License, or (at your option) any later version. ++ ++ This library 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 ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the ++ Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. ++*/ ++ ++#ifndef __DAVINCI_GFXDRIVER_H__ ++#define __DAVINCI_GFXDRIVER_H__ ++ ++#include ++#include ++ ++#include ++ ++#include "davincifb.h" ++ ++#include "davinci_c64x.h" ++ ++ ++typedef struct { ++ /* validation flags */ ++ int v_flags; ++ ++ /* cached/computed values */ ++ void *dst_addr; ++ unsigned long dst_phys; ++ unsigned int dst_size; ++ unsigned long dst_pitch; ++ DFBSurfacePixelFormat dst_format; ++ unsigned long dst_bpp; ++ ++ void *src_addr; ++ unsigned long src_phys; ++ unsigned long src_pitch; ++ DFBSurfacePixelFormat src_format; ++ unsigned long src_bpp; ++ ++ unsigned long source_mult; ++ ++ unsigned long fillcolor; ++ ++ int blit_blend_sub_function; ++ int draw_blend_sub_function; ++ ++ DFBColor color; ++ unsigned long color_argb; ++ unsigned long colorkey; ++ ++ DFBSurfaceBlittingFlags blitting_flags; ++ ++ DFBRegion clip; ++ ++ /** Add shared data here... **/ ++ struct fb_fix_screeninfo fix[4]; ++ ++ CoreSurfacePool *osd_pool; ++ CoreSurfacePool *video_pool; ++ ++ bool synced; ++} DavinciDeviceData; ++ ++ ++typedef struct { ++ int num; ++ int fd; ++ void *mem; ++ int size; ++} DavinciFB; ++ ++typedef struct { ++ DavinciDeviceData *ddev; ++ ++ CoreDFB *core; ++ ++ CoreScreen *screen; ++ CoreLayer *osd; ++ CoreLayer *video; ++ ++ DavinciFB fb[4]; ++ ++ DavinciC64x c64x; ++ bool c64x_present; ++ ++ DavinciC64xTasks tasks; ++} DavinciDriverData; ++ ++ ++static inline DFBResult ++davincifb_pan_display( const DavinciFB *fb, ++ struct fb_var_screeninfo *var, ++ const CoreSurfaceBufferLock *lock, ++ DFBSurfaceFlipFlags flags, ++ int x, ++ int y ) ++{ ++ int ret; ++ ++ if (lock) { ++#ifdef FBIO_SET_START ++ CoreSurfaceBuffer *buffer = lock->buffer; ++ struct fb_set_start set_start; ++ ++ /* physical mode */ ++ set_start.offset = -1; ++ set_start.sync = (flags & DSFLIP_ONSYNC) ? 1 : 0; ++ ++ /* life's so easy */ ++ set_start.physical = lock->phys + DFB_BYTES_PER_LINE( buffer->format, x ) + y * lock->pitch; ++ ++ ret = ioctl( fb->fd, FBIO_SET_START, &set_start ); ++ if (ret < 0) ++ D_DEBUG( "FBIO_SET_START (0x%08lx, sync %llu) failed!\n", ++ set_start.physical, set_start.sync ); ++ ++ if (ret == 0) { ++ if (flags & DSFLIP_WAIT) ++ ioctl( fb->fd, FBIO_WAITFORVSYNC ); ++ ++ return DFB_OK; ++ } ++ ++ /* fallback */ ++#endif ++ var->xoffset = x; /* poor version */ ++ var->yoffset = y + lock->offset / lock->pitch; ++ } ++ else { ++ var->xoffset = x; ++ var->yoffset = y; ++ } ++ ++ var->activate = /*(flags & DSFLIP_ONSYNC) ? FB_ACTIVATE_VBL :*/ FB_ACTIVATE_NOW; ++ ++ ret = ioctl( fb->fd, FBIOPAN_DISPLAY, var ); ++ if (ret) ++ D_PERROR( "Davinci/FB: FBIOPAN_DISPLAY (fb%d - %d,%d) failed!\n", ++ fb->num, var->xoffset, var->yoffset ); ++ ++ if (flags & DSFLIP_WAIT) ++ ioctl( fb->fd, FBIO_WAITFORVSYNC ); ++ ++ return DFB_OK; ++} ++ ++#endif +diff -puNr -Naur directfb-1.6.3-orig/tests/voodoo/voodoo_test.h directfb-1.6.3/tests/voodoo/voodoo_test.h +--- directfb-1.6.3-orig/tests/voodoo/voodoo_test.h 1970-01-01 01:00:00.000000000 +0100 ++++ directfb-1.6.3/tests/voodoo/voodoo_test.h 2013-04-07 21:33:31.824408024 +0200 +@@ -0,0 +1,10 @@ ++#ifndef __VOODOO_TEST_H__ ++#define __VOODOO_TEST_H__ ++ ++typedef enum { ++ VOODOO_TEST_INCREASE, ++ VOODOO_TEST_QUERY ++} VoodooTestCall; ++ ++#endif ++ diff --git a/buildroot/package/directfb/0002-imlib2-config.patch b/buildroot/package/directfb/0002-imlib2-config.patch new file mode 100644 index 0000000..ea2bf82 --- /dev/null +++ b/buildroot/package/directfb/0002-imlib2-config.patch @@ -0,0 +1,36 @@ +From 8352c434e515f19dd1ba36256bfcc3ec9480838d Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 5 Mar 2015 22:38:52 +0100 +Subject: [PATCH] imlib2 config + +Call the imlib2-conf variable that are set by ac_cv_path_IMLIB2_CONFIG +with the absolute path because the imlib2-config file is not covered +by the PATH variable. +This is important for cross compiler that need to get the staging settings +instead of the host settings. + +Signed-off-by: Carsten Schoenert +[ patch configure.in instead of configure to survive autoreconf ] +Signed-off-by: Peter Seiderer +--- + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.in b/configure.in +index 38d7e78..fa5e87f 100644 +--- a/configure.in ++++ b/configure.in +@@ -1094,8 +1094,8 @@ if test "x$enable_imlib2" = "xyes"; then + AC_MSG_WARN([*** Imlib2 library not found, building without Imlib2 support ***]) + imlib2="no" + else +- IMLIB2_CFLAGS=`imlib2-config --cflags` +- IMLIB2_LIBS=`imlib2-config --libs` ++ IMLIB2_CFLAGS=`$IMLIB2_CONFIG --cflags` ++ IMLIB2_LIBS=`$IMLIB2_CONFIG --libs` + imlib2="yes" + fi + fi +-- +2.1.4 + diff --git a/buildroot/package/directfb/0003-setregion-lock.patch b/buildroot/package/directfb/0003-setregion-lock.patch new file mode 100644 index 0000000..bec4234 --- /dev/null +++ b/buildroot/package/directfb/0003-setregion-lock.patch @@ -0,0 +1,99 @@ +This patch fixes builderrors while using '--with-gfxdrivers' and +'--with-inputdrivers' with the current DirectFB version 1.6.3. + +Patch is taken from +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/DirectFB/files/DirectFB-1.6.3-setregion.patch + +Signed-off-by: Carsten Schoenert + +Index: b/gfxdrivers/cyber5k/cyber5k.c +=================================================================== +--- a/gfxdrivers/cyber5k/cyber5k.c ++++ b/gfxdrivers/cyber5k/cyber5k.c +@@ -640,7 +640,8 @@ + CoreLayerRegionConfigFlags updated, + CoreSurface *surface, + CorePalette *palette, +- CoreSurfaceBufferLock *lock ) ++ CoreSurfaceBufferLock *left_lock, ++ CoreSurfaceBufferLock *right_lock ) + { + DFBResult ret; + +@@ -648,7 +649,7 @@ + ret = oldPrimaryFuncs.SetRegion( layer, oldPrimaryDriverData, + layer_data, region_data, + config, updated, surface, +- palette, lock ); ++ palette, left_lock, right_lock ); + if (ret) + return ret; + +Index: b/gfxdrivers/radeon/radeon_crtc1.c +=================================================================== +--- a/gfxdrivers/radeon/radeon_crtc1.c ++++ b/gfxdrivers/radeon/radeon_crtc1.c +@@ -147,14 +147,15 @@ + CoreLayerRegionConfigFlags updated, + CoreSurface *surface, + CorePalette *palette, +- CoreSurfaceBufferLock *lock ) ++ CoreSurfaceBufferLock *left_lock, ++ CoreSurfaceBufferLock *right_lock ) + { + + if (updated & ~CLRCF_OPTIONS) { + return OldPrimaryLayerFuncs.SetRegion( layer, + OldPrimaryLayerDriverData, + layer_data, region_data, +- config, updated, surface, palette, lock ); ++ config, updated, surface, palette, left_lock, right_lock ); + } + + return DFB_OK; +Index: b/gfxdrivers/cle266/uc_primary.c +=================================================================== +--- a/gfxdrivers/cle266/uc_primary.c ++++ b/gfxdrivers/cle266/uc_primary.c +@@ -142,7 +142,8 @@ + CoreLayerRegionConfigFlags updated, + CoreSurface *surface, + CorePalette *palette, +- CoreSurfaceBufferLock *lock ) ++ CoreSurfaceBufferLock *left_lock, ++ CoreSurfaceBufferLock *right_lock ) + { + DFBResult ret; + UcDriverData *ucdrv = (UcDriverData*) driver_data; +@@ -151,7 +152,7 @@ + ret = ucOldPrimaryFuncs.SetRegion( layer, ucOldPrimaryDriverData, + layer_data, region_data, + config, updated, surface, +- palette, lock ); ++ palette, left_lock, right_lock ); + if (ret) + return ret; + +Index: b/gfxdrivers/unichrome/uc_primary.c +=================================================================== +--- a/gfxdrivers/unichrome/uc_primary.c ++++ b/gfxdrivers/unichrome/uc_primary.c +@@ -139,7 +139,8 @@ + CoreLayerRegionConfigFlags updated, + CoreSurface *surface, + CorePalette *palette, +- CoreSurfaceBufferLock *lock ) ++ CoreSurfaceBufferLock *left_lock, ++ CoreSurfaceBufferLock *right_lock ) + { + DFBResult ret; + UcDriverData *ucdrv = (UcDriverData*) driver_data; +@@ -148,7 +149,7 @@ + ret = ucOldPrimaryFuncs.SetRegion( layer, ucOldPrimaryDriverData, + layer_data, region_data, + config, updated, surface, +- palette, lock ); ++ palette, left_lock, right_lock ); + if (ret) + return ret; + diff --git a/buildroot/package/directfb/0004-use-gcc-link.patch b/buildroot/package/directfb/0004-use-gcc-link.patch new file mode 100644 index 0000000..ec6c0ea --- /dev/null +++ b/buildroot/package/directfb/0004-use-gcc-link.patch @@ -0,0 +1,35 @@ +Add patch to use 'gcc' instead of 'ld' for linking + +The patch has been sent upstream but it has not been merged yet + +Signed-off-by: Markos Chandras + +From 176ce06b40897a357fe76a558af517197325f188 Mon Sep 17 00:00:00 2001 +From: Markos Chandras +Date: Wed, 28 Aug 2013 10:56:32 +0100 +Subject: [PATCH] rules/libobject.make: Use gcc for linking + +Invoking 'ld' directly may miss some necessary linker flags which +are usually passed by gcc. Therefore, use gcc for linking. + +Signed-off-by: Markos Chandras +--- + rules/libobject.make | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rules/libobject.make b/rules/libobject.make +index bc670da..2cba658 100644 +--- a/rules/libobject.make ++++ b/rules/libobject.make +@@ -3,7 +3,7 @@ + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) +- $(LD) -o $@ -r $<.tmp/*.o ++ $(CC) -nostdlib -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + + .PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +-- +1.8.3.2 + diff --git a/buildroot/package/directfb/0005-add-missing-idivine-header.patch b/buildroot/package/directfb/0005-add-missing-idivine-header.patch new file mode 100644 index 0000000..7823eb7 --- /dev/null +++ b/buildroot/package/directfb/0005-add-missing-idivine-header.patch @@ -0,0 +1,65 @@ +Add idivine.h, which is missing from DirectFB tarballs + +The idivine.h file was taken from the DirectFB Git repository. + +Signed-off-by: Thomas Petazzoni + +Index: b/lib/divine/idivine.h +=================================================================== +--- /dev/null ++++ b/lib/divine/idivine.h +@@ -0,0 +1,54 @@ ++/* ++ (c) Copyright 2012-2013 DirectFB integrated media GmbH ++ (c) Copyright 2001-2013 The world wide DirectFB Open Source Community (directfb.org) ++ (c) Copyright 2000-2004 Convergence (integrated media) GmbH ++ ++ All rights reserved. ++ ++ Written by Denis Oliver Kropp , ++ Andreas Shimokawa , ++ Marek Pikarski , ++ Sven Neumann , ++ Ville Syrjälä and ++ Claudio Ciccani . ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2 of the License, or (at your option) any later version. ++ ++ This library 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 ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the ++ Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. ++*/ ++ ++ ++ ++#ifndef __IDIVINE_H__ ++#define __IDIVINE_H__ ++ ++#include ++ ++/* ++ * private data struct of IDiVine ++ */ ++typedef struct { ++ int ref; /* reference counter */ ++ ++ DiVine *divine; ++} IDiVine_data; ++ ++/* ++ * IDiVine constructor/destructor ++ */ ++DFBResult IDiVine_Construct( IDiVine *thiz ); ++ ++void IDiVine_Destruct ( IDiVine *thiz ); ++ ++#endif diff --git a/buildroot/package/directfb/0006-fix-client-gfx_state-initialisation.patch b/buildroot/package/directfb/0006-fix-client-gfx_state-initialisation.patch new file mode 100644 index 0000000..5b7a202 --- /dev/null +++ b/buildroot/package/directfb/0006-fix-client-gfx_state-initialisation.patch @@ -0,0 +1,39 @@ +From 8e53c0b9cedb62b82e2b7680d793d433b647ae20 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy +Date: Mon, 13 Jun 2016 13:32:44 -0700 +Subject: [PATCH] fix client->gfx_state initialisation + +Shortly before the DirectFB 1.7.7 release, an optimisation was added +to CoreGraphicsStateClient_Init() to avoid creating an extended +Graphics State object if it will not later be required: + + 4d422fb Client: Create extended Graphics State object when needed for later usage + +Unfortunately the client->gfx_state variable used to track the +extended Graphics State object is not initialised, which can lead to +crashes etc due to creation of the Graphics State object erroneously +being skipped. + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy +Signed-off-by: Philippe Reynes +--- + src/core/CoreGraphicsStateClient.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/core/CoreGraphicsStateClient.cpp b/src/core/CoreGraphicsStateClient.cpp +index 5d46f0e..5007755 100644 +--- a/src/core/CoreGraphicsStateClient.cpp ++++ b/src/core/CoreGraphicsStateClient.cpp +@@ -364,6 +364,7 @@ CoreGraphicsStateClient_Init( CoreGraphicsStateClient *client, + client->renderer = NULL; + client->requestor = NULL; + client->throttle = NULL; ++ client->gfx_state = NULL; + + if (dfb_config->task_manager) { + if (dfb_config->call_nodirect) { +-- +1.9.1 + diff --git a/buildroot/package/directfb/Config.in b/buildroot/package/directfb/Config.in new file mode 100644 index 0000000..20481f5 --- /dev/null +++ b/buildroot/package/directfb/Config.in @@ -0,0 +1,167 @@ +config BR2_PACKAGE_DIRECTFB + bool "directfb" + depends on !BR2_STATIC_LIBS # static link issues + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + depends on !BR2_TOOLCHAIN_USES_MUSL # sigval_t issue + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_ZLIB + help + DirectFB (Direct Frame Buffer) is a set of graphics APIs + implemented on top of the Linux Frame Buffer (fbdev) + abstraction layer. It is an alternative to X11 with a smaller + memory footprint that still has an integrated windowing + system. As of 4 October 2015, DirectFB's website + http://www.directfb.org/ is down. See alternative site listed + below. + + http://elinux.org/DirectFB + +if BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_DIRECTFB_MULTI + bool "directfb multi application" + depends on BR2_USE_MMU # madvise() + depends on BR2_LINUX_KERNEL + select BR2_PACKAGE_LINUX_FUSION + help + Enable use of multiple concurrent DirectFB applications + +comment "directfb multi application needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_DIRECTFB_DEBUG_SUPPORT + bool "directfb debugging support" + default y + help + Compile DirectFB with debugging support. It provides + functions to print debug information, for DirectFB as well as + external DirectFB drivers. + + When disabled, DirectFB does not print any debug information. + The drivers will be installed to and loaded from + /usr/lib/directfb--pure instead of + /usr/lib/directfb-. + +config BR2_PACKAGE_DIRECTFB_DEBUG + bool "directfb debugging" + depends on BR2_PACKAGE_DIRECTFB_DEBUG_SUPPORT + help + Compile DirectFB with lots of debug output + +config BR2_PACKAGE_DIRECTFB_TRACE + bool "directfb call trace support" + help + Enable call tracing for DirectFB applications + +config BR2_PACKAGE_DIRECTFB_DIVINE + bool "divine" + help + Enable the DiVine feature (virtual input) + +config BR2_PACKAGE_DIRECTFB_SAWMAN + bool "sawman" + help + Enable the SawMan feature (window manager) + +config BR2_PACKAGE_DIRECTFB_ATI128 + bool "compile ati128 graphics driver" + depends on BR2_i386 || BR2_x86_64 + +config BR2_PACKAGE_DIRECTFB_MATROX + bool "compile matrox graphics driver" + depends on BR2_i386 || BR2_x86_64 + +config BR2_PACKAGE_DIRECTFB_PXA3XX + bool "compile pxa3xx graphics driver" + depends on BR2_arm + help + The Marvell PXA3xx Processor Family is a system-on-chip based + on XScale® microarchitecture. This option enables the graphic + driver support for the PXA3xx processor family. + + http://www.marvell.com/application-processors/pxa-family/ + +config BR2_PACKAGE_DIRECTFB_EP9X + bool "compile ep9x graphics driver" + depends on BR2_arm + help + Enable the graphic driver support for the EP93xx ARMv9 based + processors from Cirrus Logic. + + http://cirrus.com/en/products/arm9.html + +config BR2_PACKAGE_DIRECTFB_I830 + bool "compile i830 graphics driver" + depends on BR2_i386 || BR2_x86_64 + +config BR2_PACKAGE_DIRECTFB_LINUXINPUT + bool "compile /dev/input/eventX input driver" + default y + +config BR2_PACKAGE_DIRECTFB_KEYBOARD + bool "compile keyboard input driver" + default y + +config BR2_PACKAGE_DIRECTFB_PS2MOUSE + bool "compile PS2 mouse input driver" + default y + +config BR2_PACKAGE_DIRECTFB_SERIALMOUSE + bool "compile serial mouse input driver" + default y + +config BR2_PACKAGE_DIRECTFB_TSLIB + bool "enable touchscreen support" + default y + select BR2_PACKAGE_TSLIB + +config BR2_PACKAGE_DIRECTFB_GIF + bool "enable GIF support" + default y + +config BR2_PACKAGE_DIRECTFB_TIFF + bool "enable TIFF support" + select BR2_PACKAGE_TIFF + +config BR2_PACKAGE_DIRECTFB_IMLIB2 + bool "enable IMLIB2 support" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_IMLIB2 + +comment "imlib2 support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_DIRECTFB_JPEG + bool "enable JPEG support" + default y + select BR2_PACKAGE_JPEG + +config BR2_PACKAGE_DIRECTFB_PNG + bool "enable PNG support" + default y + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_DIRECTFB_SVG + bool "enable SVG support" + default y + select BR2_PACKAGE_LIBSVG_CAIRO + +config BR2_PACKAGE_DIRECTFB_DITHER_RGB16 + bool "enable advanced dithering of RGB16 surfaces" + help + Enable dithering when loading images to RGB16 surfaces. + This increases the data section by 64 KBytes. + +config BR2_PACKAGE_DIRECTFB_TESTS + bool "build directfb tests" + +endif # BR2_PACKAGE_DIRECTFB + +comment "directfb needs a glibc or uClibc toolchain w/ C++, NPTL, gcc >= 4.5, dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || BR2_TOOLCHAIN_USES_MUSL || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/directfb/directfb.hash b/buildroot/package/directfb/directfb.hash new file mode 100644 index 0000000..069d8c3 --- /dev/null +++ b/buildroot/package/directfb/directfb.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 b785c638dc31b8fe3a7c81be1475c89b2255ab3d67b777c747d3fbc52f8027a3 DirectFB-1.7.7.tar.gz diff --git a/buildroot/package/directfb/directfb.mk b/buildroot/package/directfb/directfb.mk new file mode 100644 index 0000000..0b32162 --- /dev/null +++ b/buildroot/package/directfb/directfb.mk @@ -0,0 +1,173 @@ +################################################################################ +# +# directfb +# +################################################################################ + +DIRECTFB_VERSION_MAJOR = 1.7 +DIRECTFB_VERSION = $(DIRECTFB_VERSION_MAJOR).7 +DIRECTFB_SITE = http://www.directfb.org/downloads/Core/DirectFB-$(DIRECTFB_VERSION_MAJOR) +DIRECTFB_SOURCE = DirectFB-$(DIRECTFB_VERSION).tar.gz +DIRECTFB_LICENSE = LGPL-2.1+ +DIRECTFB_LICENSE_FILES = COPYING +DIRECTFB_INSTALL_STAGING = YES +DIRECTFB_AUTORECONF = YES + +DIRECTFB_CONF_OPTS = \ + --enable-zlib \ + --enable-freetype \ + --enable-fbdev \ + --disable-sdl \ + --disable-vnc \ + --disable-osx \ + --disable-video4linux \ + --disable-video4linux2 \ + --without-tools \ + --disable-x11 + +ifeq ($(BR2_STATIC_LIBS),y) +DIRECTFB_CONF_OPTS += --disable-dynload +endif + +DIRECTFB_CONFIG_SCRIPTS = directfb-config + +DIRECTFB_DEPENDENCIES = freetype zlib + +ifeq ($(BR2_PACKAGE_DIRECTFB_MULTI),y) +DIRECTFB_CONF_OPTS += --enable-multi --enable-multi-kernel +DIRECTFB_DEPENDENCIES += linux-fusion +else +DIRECTFB_CONF_OPTS += --disable-multi --disable-multi-kernel +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_DEBUG_SUPPORT),y) +DIRECTFB_CONF_OPTS += --enable-debug-support +ifeq ($(BR2_PACKAGE_DIRECTFB_DEBUG),y) +DIRECTFB_CONF_OPTS += --enable-debug +endif +else +DIRECTFB_CONF_OPTS += --disable-debug-support +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_TRACE),y) +DIRECTFB_CONF_OPTS += --enable-trace +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_DIVINE),y) +DIRECTFB_CONF_OPTS += --enable-divine +else +DIRECTFB_CONF_OPTS += --disable-divine +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_SAWMAN),y) +DIRECTFB_CONF_OPTS += --enable-sawman +else +DIRECTFB_CONF_OPTS += --disable-sawman +endif + +DIRECTFB_GFX = \ + $(if $(BR2_PACKAGE_DIRECTFB_ATI128),ati128) \ + $(if $(BR2_PACKAGE_DIRECTFB_CYBER5K),cyber5k) \ + $(if $(BR2_PACKAGE_DIRECTFB_MATROX),matrox) \ + $(if $(BR2_PACKAGE_DIRECTFB_PXA3XX),pxa3xx) \ + $(if $(BR2_PACKAGE_DIRECTFB_I830),i830) \ + $(if $(BR2_PACKAGE_DIRECTFB_EP9X),ep9x) + +ifeq ($(strip $(DIRECTFB_GFX)),) +DIRECTFB_CONF_OPTS += --with-gfxdrivers=none +else +DIRECTFB_CONF_OPTS += \ + --with-gfxdrivers=$(subst $(space),$(comma),$(strip $(DIRECTFB_GFX))) +endif + +DIRECTFB_INPUT = \ + $(if $(BR2_PACKAGE_DIRECTFB_LINUXINPUT),linuxinput) \ + $(if $(BR2_PACKAGE_DIRECTFB_KEYBOARD),keyboard) \ + $(if $(BR2_PACKAGE_DIRECTFB_PS2MOUSE),ps2mouse) \ + $(if $(BR2_PACKAGE_DIRECTFB_SERIALMOUSE),serialmouse) \ + $(if $(BR2_PACKAGE_DIRECTFB_TSLIB),tslib) + +ifeq ($(BR2_PACKAGE_DIRECTFB_TSLIB),y) +DIRECTFB_DEPENDENCIES += tslib +endif + +ifeq ($(strip $(DIRECTFB_INPUT)),) +DIRECTFB_CONF_OPTS += --with-inputdrivers=none +else +DIRECTFB_CONF_OPTS += \ + --with-inputdrivers=$(subst $(space),$(comma),$(strip $(DIRECTFB_INPUT))) +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_GIF),y) +DIRECTFB_CONF_OPTS += --enable-gif +else +DIRECTFB_CONF_OPTS += --disable-gif +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_TIFF),y) +DIRECTFB_CONF_OPTS += --enable-tiff +DIRECTFB_DEPENDENCIES += tiff +else +DIRECTFB_CONF_OPTS += --disable-tiff +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_PNG),y) +DIRECTFB_CONF_OPTS += --enable-png +DIRECTFB_DEPENDENCIES += libpng +DIRECTFB_CONF_ENV += ac_cv_path_LIBPNG_CONFIG=$(STAGING_DIR)/usr/bin/libpng-config +else +DIRECTFB_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_JPEG),y) +DIRECTFB_CONF_OPTS += --enable-jpeg +DIRECTFB_DEPENDENCIES += jpeg +else +DIRECTFB_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_SVG),y) +DIRECTFB_CONF_OPTS += --enable-svg +# needs some help to find cairo includes +DIRECTFB_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/cairo" +DIRECTFB_DEPENDENCIES += libsvg-cairo +else +DIRECTFB_CONF_OPTS += --disable-svg +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_IMLIB2),y) +DIRECTFB_CONF_OPTS += --enable-imlib2 +DIRECTFB_DEPENDENCIES += imlib2 +DIRECTFB_CONF_ENV += ac_cv_path_IMLIB2_CONFIG=$(STAGING_DIR)/usr/bin/imlib2-config +else +DIRECTFB_CONF_OPTS += --disable-imlib2 +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_DITHER_RGB16),y) +DIRECTFB_CONF_OPTS += --with-dither-rgb16=advanced +else +DIRECTFB_CONF_OPTS += --with-dither-rgb16=none +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB_TESTS),y) +DIRECTFB_CONF_OPTS += --with-tests +endif + +HOST_DIRECTFB_DEPENDENCIES = host-pkgconf host-libpng +HOST_DIRECTFB_CONF_OPTS = \ + --disable-multi \ + --enable-png \ + --with-gfxdrivers=none \ + --with-inputdrivers=none + +HOST_DIRECTFB_BUILD_CMDS = \ + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/tools directfb-csource + +HOST_DIRECTFB_INSTALL_CMDS = \ + $(INSTALL) -m 0755 $(@D)/tools/directfb-csource $(HOST_DIR)/bin + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# directfb-csource for the host +DIRECTFB_HOST_BINARY = $(HOST_DIR)/bin/directfb-csource diff --git a/buildroot/package/dmalloc/0001-add-fpic.patch b/buildroot/package/dmalloc/0001-add-fpic.patch new file mode 100644 index 0000000..230a9e1 --- /dev/null +++ b/buildroot/package/dmalloc/0001-add-fpic.patch @@ -0,0 +1,58 @@ +Without -fPIC, dmalloc does not build with: + +/home/test/mips-4.4/bin/mips-linux-gnu-ld --sysroot=/home/test/outputs/test-35/staging -shared --whole-archive -soname libdmallocxx.so -o libdmallocxx.so.t libdmallocxx.a +/home/test/mips-4.4/bin/mips-linux-gnu-ld: libdmalloc.a(arg_check.o): relocation R_MIPS_HI16 against `_dmalloc_flags' can not be used when making a shared object; recompile with -fPIC +libdmalloc.a(arg_check.o): could not read symbols: Bad value + +This patch, taken from +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/dmalloc/files/dmalloc-5.2.4-fpic.patch?hideattic=0&view=markup, +fixes the problem by passing the -fPIC flag. It isn't passed through +the ./configure environment in order to not clutter the configuration +cache with incorrect values. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.in | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +--- a/Makefile.in ++++ b/Makefile.in +@@ -318,17 +318,17 @@ + # special _th versions of objects with the LOCK_THREADS variable defined to 1 + chunk_th.o : $(srcdir)/chunk.c + rm -f $@ +- $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \ ++ $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \ + -c $(srcdir)/chunk.c -o ./$@ + + error_th.o : $(srcdir)/error.c + rm -f $@ +- $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \ ++ $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \ + -c $(srcdir)/error.c -o ./$@ + + malloc_th.o : $(srcdir)/malloc.c + rm -f $@ +- $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \ ++ $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 \ + -c $(srcdir)/malloc.c -o ./$@ + + tests : $(TEST) $(TEST_FC) +@@ -360,7 +360,7 @@ + + .c.o : + rm -f $@ +- $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@ ++ $(CC) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@ + + # + # .cc.o auto-target doesn't work on some systems. +@@ -368,7 +368,7 @@ + # + dmallocc.o : $(srcdir)/dmallocc.cc + rm -f $@ +- $(CXX) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -c $(srcdir)/dmallocc.cc \ ++ $(CXX) $(CFLAGS) -fPIC $(CPPFLAGS) $(DEFS) $(INCS) -c $(srcdir)/dmallocc.cc \ + -o ./$@ + + # diff --git a/buildroot/package/dmalloc/0002-mips.patch b/buildroot/package/dmalloc/0002-mips.patch new file mode 100644 index 0000000..3e6b00e --- /dev/null +++ b/buildroot/package/dmalloc/0002-mips.patch @@ -0,0 +1,43 @@ +--- a/configure ++++ b/configure +@@ -7107,7 +7107,7 @@ + echo $ECHO_N "checking return.h macros work... $ECHO_C" >&6 + if test "$cross_compiling" = yes; then + cat >>confdefs.h <<\_ACEOF +-#define RETURN_MACROS_WORK 0 ++#define RETURN_MACROS_WORK 1 + _ACEOF + echo "$as_me:$LINENO: result: no" >&5 + echo "${ECHO_T}no" >&6 +--- a/return.h ++++ b/return.h +@@ -106,26 +106,16 @@ + /*************************************/ + + /* +- * For DEC Mips machines running Ultrix ++ * For Mips machines running Linux + */ + #if __mips + + /* +- * I have no idea how to get inline assembly with the default cc. +- * Anyone know how? +- */ +- +-#if 0 +- +-/* + * NOTE: we assume here that file is global. + * +- * $31 is the frame pointer. $2 looks to be the return address but maybe +- * not consistently. ++ * $31 is the return address. + */ +-#define GET_RET_ADDR(file) asm("sw $2, file") +- +-#endif ++#define GET_RET_ADDR(file) asm("sw $31, %0" : "=m" (file)) + + #endif /* __mips */ + diff --git a/buildroot/package/dmalloc/0003-fix-parallel-build.patch b/buildroot/package/dmalloc/0003-fix-parallel-build.patch new file mode 100644 index 0000000..c521a11 --- /dev/null +++ b/buildroot/package/dmalloc/0003-fix-parallel-build.patch @@ -0,0 +1,18 @@ +Fix parallel build issue + +Missing dmallocc.o <- dmalloc.h dependency may break parallel builds. +dmalloc.h is generated,and may not be around by the time gcc starts +parsing dmallocc.cc. + +Signed-off-by: Alex Suykov + +--- a/Makefile.in ++++ b/Makefile.in +@@ -401,6 +401,7 @@ + compat.o: compat.c conf.h settings.h dmalloc.h compat.h dmalloc_loc.h + dmalloc.o: dmalloc.c conf.h settings.h dmalloc_argv.h dmalloc.h compat.h \ + debug_tok.h dmalloc_loc.h env.h error_val.h version.h ++dmallocc.o: dmallocc.cc dmalloc.h return.h conf.h settings.h + dmalloc_argv.o: dmalloc_argv.c conf.h settings.h dmalloc_argv.h \ + dmalloc_argv_loc.h compat.h + dmalloc_fc_t.o: dmalloc_fc_t.c conf.h settings.h dmalloc.h dmalloc_argv.h \ diff --git a/buildroot/package/dmalloc/0004-fix-shlibs.patch b/buildroot/package/dmalloc/0004-fix-shlibs.patch new file mode 100644 index 0000000..a99d926 --- /dev/null +++ b/buildroot/package/dmalloc/0004-fix-shlibs.patch @@ -0,0 +1,46 @@ +Fix shared library rules + +dmalloc uses ld -shared --whole-archive -o lib.so lib.a, +but for some reason lists regular objects in addition +to the archive, ending up with two copies of each symbol. + +Signed-off-by: Alex Suykov + +--- a/Makefile.in ++++ b/Makefile.in +@@ -257,7 +257,7 @@ shlib : $(BUILD_SL) + # via: http://256.com/gray/email.html + $(LIB_SL) : $(LIBRARY) + rm -f $@ $@.t +- @shlinkargs@ $(LIBRARY) $(OBJS) $(NORMAL_OBJS) ++ @shlinkargs@ $(LIBRARY) + mv $@.t $@ + + $(LIBRARY) : $(OBJS) $(NORMAL_OBJS) +@@ -270,7 +270,7 @@ $(LIB_TH) : $(OBJS) $(THREAD_OBJS) + + $(LIB_TH_SL) : $(LIB_TH) + rm -f $@ $@.t +- @shlinkargs@ $(LIB_TH) $(OBJS) $(THREAD_OBJS) ++ @shlinkargs@ $(LIB_TH) + mv $@.t $@ + + $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS) +@@ -279,7 +279,7 @@ $(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS) + + $(LIB_CXX_SL) : $(LIB_CXX) + rm -f $@ $@.t +- @shlinkargs@ $(LIB_CXX) $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS) ++ @shlinkargs@ $(LIB_CXX) + mv $@.t $@ + + $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS) +@@ -288,7 +288,7 @@ $(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS) + + $(LIB_TH_CXX_SL) : $(LIB_TH_CXX) + rm -f $@ $@.t +- @shlinkargs@ $(LIB_TH_CXX) $(OBJS) $(THREAD_OBJS) $(CXX_OBJS) ++ @shlinkargs@ $(LIB_TH_CXX) + mv $@.t $@ + + threadssl : $(LIB_TH_SL) diff --git a/buildroot/package/dmalloc/Config.in b/buildroot/package/dmalloc/Config.in new file mode 100644 index 0000000..e5be109 --- /dev/null +++ b/buildroot/package/dmalloc/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_DMALLOC + bool "dmalloc" + # On some packages, Microblaze gcc has issues when debugging + # symbols are enabled: "Error: operation combines symbols in + # different segments". + depends on !(BR2_microblaze && BR2_ENABLE_DEBUG) + help + A debug memory allocation library which is a drop in + replacement for the system's malloc, realloc, calloc, free and + other memory management routines while providing powerful + debugging facilities configurable at runtime. + + http://dmalloc.com/ diff --git a/buildroot/package/dmalloc/dmalloc.hash b/buildroot/package/dmalloc/dmalloc.hash new file mode 100644 index 0000000..e74ef74 --- /dev/null +++ b/buildroot/package/dmalloc/dmalloc.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 d3be5c6eec24950cb3bd67dbfbcdf036f1278fae5fd78655ef8cdf9e911e428a dmalloc-5.5.2.tgz diff --git a/buildroot/package/dmalloc/dmalloc.mk b/buildroot/package/dmalloc/dmalloc.mk new file mode 100644 index 0000000..6ebb44c --- /dev/null +++ b/buildroot/package/dmalloc/dmalloc.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# dmalloc +# +################################################################################ + +DMALLOC_VERSION = 5.5.2 +DMALLOC_SOURCE = dmalloc-$(DMALLOC_VERSION).tgz +DMALLOC_SITE = http://dmalloc.com/releases + +DMALLOC_LICENSE = MIT-like +# license is in each file, dmalloc.h.1 is the smallest one +DMALLOC_LICENSE_FILES = dmalloc.h.1 + +DMALLOC_INSTALL_STAGING = YES +DMALLOC_CONF_OPTS = --enable-shlib +DMALLOC_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +DMALLOC_CONF_OPTS += --enable-cxx +else +DMALLOC_CONF_OPTS += --disable-cxx +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +DMALLOC_CONF_OPTS += --enable-threads +else +DMALLOC_CONF_OPTS += --disable-threads +endif + +# dmalloc has some assembly function that are not present in thumb1 mode: +# Error: lo register required -- `str lr,[sp,#4]' +# so, we desactivate thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +DMALLOC_CFLAGS += -marm +endif + +DMALLOC_CONF_ENV = CFLAGS="$(DMALLOC_CFLAGS)" + +define DMALLOC_POST_PATCH + $(SED) 's/^ac_cv_page_size=0$$/ac_cv_page_size=12/' $(@D)/configure + $(SED) 's/(ld -/($${LD-ld} -/' $(@D)/configure + $(SED) 's/'\''ld -/"$${LD-ld}"'\'' -/' $(@D)/configure + $(SED) 's/ar cr/$$(AR) cr/' $(@D)/Makefile.in +endef + +DMALLOC_POST_PATCH_HOOKS += DMALLOC_POST_PATCH + +# both DESTDIR and PREFIX are ignored.. +define DMALLOC_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) includedir="$(STAGING_DIR)/usr/include" \ + bindir="$(STAGING_DIR)/usr/bin" \ + libdir="$(STAGING_DIR)/usr/lib" \ + shlibdir="$(STAGING_DIR)/usr/lib" \ + infodir="$(STAGING_DIR)/usr/share/info/" \ + -C $(@D) install +endef + +ifeq ($(BR2_STATIC_LIBS),) +define DMALLOC_INSTALL_SHARED_LIB + cp -dpf $(STAGING_DIR)/usr/lib/libdmalloc*.so $(TARGET_DIR)/usr/lib +endef +endif + +define DMALLOC_INSTALL_TARGET_CMDS + $(DMALLOC_INSTALL_SHARED_LIB) + cp -dpf $(STAGING_DIR)/usr/bin/dmalloc $(TARGET_DIR)/usr/bin/dmalloc +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/dmidecode/0001-build-system-fixes.patch b/buildroot/package/dmidecode/0001-build-system-fixes.patch new file mode 100644 index 0000000..00897f8 --- /dev/null +++ b/buildroot/package/dmidecode/0001-build-system-fixes.patch @@ -0,0 +1,35 @@ +Minor build system fixes + +Usual build system fixes to allow CC/CFLAGS/LDFLAGS to be overriden +from the command line, and completed by additional flags from the +Makefile. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -12,9 +12,10 @@ + # (at your option) any later version. + # + +-CC = gcc +-CFLAGS = -W -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual \ +- -Wcast-align -Wwrite-strings -Wmissing-prototypes -Winline -Wundef ++CC ?= gcc ++override CFLAGS += \ ++ -W -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual \ ++ -Wcast-align -Wwrite-strings -Wmissing-prototypes -Winline -Wundef + + # Let lseek and mmap support 64-bit wide offsets + CFLAGS += -D_FILE_OFFSET_BITS=64 +@@ -27,7 +28,7 @@ CFLAGS += -O2 + #CFLAGS += -g + + # Pass linker flags here +-LDFLAGS = ++override LDFLAGS += + + DESTDIR = + prefix = /usr/local diff --git a/buildroot/package/dmidecode/Config.in b/buildroot/package/dmidecode/Config.in new file mode 100644 index 0000000..22272ed --- /dev/null +++ b/buildroot/package/dmidecode/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_DMIDECODE + bool "dmidecode" + depends on BR2_i386 || BR2_x86_64 + help + Dmidecode reports information about your system's hardware + as described in your system BIOS according to the SMBIOS/DMI + standard. + + http://www.nongnu.org/dmidecode/ diff --git a/buildroot/package/dmidecode/dmidecode.hash b/buildroot/package/dmidecode/dmidecode.hash new file mode 100644 index 0000000..1e8154b --- /dev/null +++ b/buildroot/package/dmidecode/dmidecode.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d766ce9b25548c59b1e7e930505b4cad9a7bb0b904a1a391fbb604d529781ac0 dmidecode-3.1.tar.xz diff --git a/buildroot/package/dmidecode/dmidecode.mk b/buildroot/package/dmidecode/dmidecode.mk new file mode 100644 index 0000000..b6f96b6 --- /dev/null +++ b/buildroot/package/dmidecode/dmidecode.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# dmidecode +# +################################################################################ + +DMIDECODE_VERSION = 3.1 +DMIDECODE_SOURCE = dmidecode-$(DMIDECODE_VERSION).tar.xz +DMIDECODE_SITE = http://download.savannah.gnu.org/releases/dmidecode +DMIDECODE_LICENSE = GPL-2.0+ +DMIDECODE_LICENSE_FILES = LICENSE + +define DMIDECODE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define DMIDECODE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) prefix=/usr DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dmraid/0001-fix-compilation-under-musl.patch b/buildroot/package/dmraid/0001-fix-compilation-under-musl.patch new file mode 100644 index 0000000..7cf8792 --- /dev/null +++ b/buildroot/package/dmraid/0001-fix-compilation-under-musl.patch @@ -0,0 +1,47 @@ +From 89c7fc15e064dd407e6d5ccefe78985b86b8a036 Mon Sep 17 00:00:00 2001 +From: Brendan Heading +Date: Tue, 1 Sep 2015 12:26:36 +0100 +Subject: [PATCH 1/1] fix compilation under musl + +Patch borrowed from Void Linux : + +https://github.com/voidlinux/void-packages/blob/master/srcpkgs/dmraid/patches/25_musl-libc.patch + +Upstream package appears dormant, no mailing list and no +maintainence releases since Nov 2010. + +Upstream-Status: dormant +Signed-off-by: Brendan Heading + +--- + 1.0.0.rc16-3/dmraid/include/dmraid/misc.h | 1 + + 1.0.0.rc16-3/dmraid/lib/device/scan.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/1.0.0.rc16-3/dmraid/include/dmraid/misc.h b/1.0.0.rc16-3/dmraid/include/dmraid/misc.h +index 247a68e..1b1dfdf 100644 +--- a/1.0.0.rc16-3/dmraid/include/dmraid/misc.h ++++ b/1.0.0.rc16-3/dmraid/include/dmraid/misc.h +@@ -10,6 +10,7 @@ + + #ifndef _MISC_H_ + #define _MISC_H_ ++#include + + #define DM_ASSERT(__cond) do { if (!(__cond)) { printf("ASSERT file:%s line:%d fuction:%s cond: %s\n", __FILE__, __LINE__, __FUNCTION__, #__cond); } } while(0); + +diff --git a/1.0.0.rc16-3/dmraid/lib/device/scan.c b/1.0.0.rc16-3/dmraid/lib/device/scan.c +index a040d53..6897146 100644 +--- a/1.0.0.rc16-3/dmraid/lib/device/scan.c ++++ b/1.0.0.rc16-3/dmraid/lib/device/scan.c +@@ -10,6 +10,7 @@ + # include + # include + #else ++# include + # include + # include + #endif +-- +2.4.3 + diff --git a/buildroot/package/dmraid/Config.in b/buildroot/package/dmraid/Config.in new file mode 100644 index 0000000..aa98c85 --- /dev/null +++ b/buildroot/package/dmraid/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_DMRAID + bool "dmraid" + depends on BR2_TOOLCHAIN_HAS_THREADS # lvm2 + depends on BR2_USE_MMU # lvm2 + depends on !BR2_STATIC_LIBS # lvm2 + select BR2_PACKAGE_LVM2 + help + dmraid discovers, activates, deactivates and displays + properties of software RAID sets (eg, ATARAID) and contained + DOS partitions. + + dmraid uses the Linux device-mapper to create devices with + respective mappings for the ATARAID sets discovered. + +comment "dmraid needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/dmraid/S20dmraid b/buildroot/package/dmraid/S20dmraid new file mode 100644 index 0000000..fd2ad9e --- /dev/null +++ b/buildroot/package/dmraid/S20dmraid @@ -0,0 +1,31 @@ +#!/bin/sh + +set -e + +[ -x /usr/sbin/dmraid ] || exit 0 + +# try to load module in case that hasn't been done yet +modprobe dm-mod >/dev/null 2>&1 + +case "$1" in + start|"") + echo "Setting up DMRAID devices..." + /usr/sbin/dmraid --activate yes --ignorelocking --verbose + ;; + + stop) + echo "Shutting down DMRAID devices... " + /usr/sbin/dmraid --activate no --ignorelocking --verbose + ;; + + restart|force-reload) + $0 stop + sleep 1 + $0 start + ;; + + *) + echo "Usage: dmraid {start|stop|restart|force-reload}" + exit 1 + ;; +esac diff --git a/buildroot/package/dmraid/dmraid.hash b/buildroot/package/dmraid/dmraid.hash new file mode 100644 index 0000000..3166921 --- /dev/null +++ b/buildroot/package/dmraid/dmraid.hash @@ -0,0 +1,2 @@ +# From http://people.redhat.com/~heinzm/sw/dmraid/src/dmraid-1.0.0.rc16-3.tar.bz2.md5.sum +md5 819338fcef98e8e25819f0516722beeb dmraid-1.0.0.rc16-3.tar.bz2 diff --git a/buildroot/package/dmraid/dmraid.mk b/buildroot/package/dmraid/dmraid.mk new file mode 100644 index 0000000..0382cd4 --- /dev/null +++ b/buildroot/package/dmraid/dmraid.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# dmraid +# +################################################################################ + +DMRAID_VERSION = 1.0.0.rc16-3 +DMRAID_SOURCE = dmraid-$(DMRAID_VERSION).tar.bz2 +DMRAID_SITE = http://people.redhat.com/~heinzm/sw/dmraid/src +DMRAID_SUBDIR = $(DMRAID_VERSION)/dmraid +# lib and tools race with parallel make +DMRAID_MAKE = $(MAKE1) +DMRAID_INSTALL_STAGING = YES +DMRAID_LICENSE = GPL-2.0 +DMRAID_LICENSE_FILES = $(DMRAID_SUBDIR)/LICENSE_GPL $(DMRAID_SUBDIR)/LICENSE + +DMRAID_DEPENDENCIES = lvm2 + +define DMRAID_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/dmraid/S20dmraid \ + $(TARGET_DIR)/etc/init.d/S20dmraid +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/dnsmasq/0001-DNSSEC-fix-for-wildcard-NSEC-records.-CVE-2017-15107.patch b/buildroot/package/dnsmasq/0001-DNSSEC-fix-for-wildcard-NSEC-records.-CVE-2017-15107.patch new file mode 100644 index 0000000..7b834e8 --- /dev/null +++ b/buildroot/package/dnsmasq/0001-DNSSEC-fix-for-wildcard-NSEC-records.-CVE-2017-15107.patch @@ -0,0 +1,212 @@ +From 4fe6744a220eddd3f1749b40cac3dfc510787de6 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Fri, 19 Jan 2018 12:26:08 +0000 +Subject: [PATCH] DNSSEC fix for wildcard NSEC records. CVE-2017-15107 applies. + +It's OK for NSEC records to be expanded from wildcards, +but in that case, the proof of non-existence is only valid +starting at the wildcard name, *. NOT the name expanded +from the wildcard. Without this check it's possible for an +attacker to craft an NSEC which wrongly proves non-existence +in a domain which includes a wildcard for NSEC. + +[baruch: drop the CHANGELOG hunk] +Signed-off-by: Baruch Siach +--- +Upstream status: upstream commit 4fe6744a220e + + CHANGELOG | 12 +++++- + src/dnssec.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- + 2 files changed, 114 insertions(+), 15 deletions(-) + +diff --git a/src/dnssec.c b/src/dnssec.c +index eb6c11cbe00f..a54a0b4f14cf 100644 +--- a/src/dnssec.c ++++ b/src/dnssec.c +@@ -103,15 +103,17 @@ static void from_wire(char *name) + static int count_labels(char *name) + { + int i; +- ++ char *p; ++ + if (*name == 0) + return 0; + +- for (i = 0; *name; name++) +- if (*name == '.') ++ for (p = name, i = 0; *p; p++) ++ if (*p == '.') + i++; + +- return i+1; ++ /* Don't count empty first label. */ ++ return *name == '.' ? i : i+1; + } + + /* Implement RFC1982 wrapped compare for 32-bit numbers */ +@@ -1094,8 +1096,8 @@ static int hostname_cmp(const char *a, const char *b) + } + } + +-static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsigned char **nsecs, int nsec_count, +- char *workspace1, char *workspace2, char *name, int type, int *nons) ++static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsigned char **nsecs, unsigned char **labels, int nsec_count, ++ char *workspace1_in, char *workspace2, char *name, int type, int *nons) + { + int i, rc, rdlen; + unsigned char *p, *psave; +@@ -1108,6 +1110,9 @@ static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsi + /* Find NSEC record that proves name doesn't exist */ + for (i = 0; i < nsec_count; i++) + { ++ char *workspace1 = workspace1_in; ++ int sig_labels, name_labels; ++ + p = nsecs[i]; + if (!extract_name(header, plen, &p, workspace1, 1, 10)) + return 0; +@@ -1116,7 +1121,27 @@ static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsi + psave = p; + if (!extract_name(header, plen, &p, workspace2, 1, 10)) + return 0; +- ++ ++ /* If NSEC comes from wildcard expansion, use original wildcard ++ as name for computation. */ ++ sig_labels = *labels[i]; ++ name_labels = count_labels(workspace1); ++ ++ if (sig_labels < name_labels) ++ { ++ int k; ++ for (k = name_labels - sig_labels; k != 0; k--) ++ { ++ while (*workspace1 != '.' && *workspace1 != 0) ++ workspace1++; ++ if (k != 1 && *workspace1 == '.') ++ workspace1++; ++ } ++ ++ workspace1--; ++ *workspace1 = '*'; ++ } ++ + rc = hostname_cmp(workspace1, name); + + if (rc == 0) +@@ -1514,24 +1539,26 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns + + static int prove_non_existence(struct dns_header *header, size_t plen, char *keyname, char *name, int qtype, int qclass, char *wildname, int *nons) + { +- static unsigned char **nsecset = NULL; +- static int nsecset_sz = 0; ++ static unsigned char **nsecset = NULL, **rrsig_labels = NULL; ++ static int nsecset_sz = 0, rrsig_labels_sz = 0; + + int type_found = 0; +- unsigned char *p = skip_questions(header, plen); ++ unsigned char *auth_start, *p = skip_questions(header, plen); + int type, class, rdlen, i, nsecs_found; + + /* Move to NS section */ + if (!p || !(p = skip_section(p, ntohs(header->ancount), header, plen))) + return 0; ++ ++ auth_start = p; + + for (nsecs_found = 0, i = ntohs(header->nscount); i != 0; i--) + { + unsigned char *pstart = p; + +- if (!(p = skip_name(p, header, plen, 10))) ++ if (!extract_name(header, plen, &p, daemon->workspacename, 1, 10)) + return 0; +- ++ + GETSHORT(type, p); + GETSHORT(class, p); + p += 4; /* TTL */ +@@ -1548,7 +1575,69 @@ static int prove_non_existence(struct dns_header *header, size_t plen, char *key + if (!expand_workspace(&nsecset, &nsecset_sz, nsecs_found)) + return 0; + +- nsecset[nsecs_found++] = pstart; ++ if (type == T_NSEC) ++ { ++ /* If we're looking for NSECs, find the corresponding SIGs, to ++ extract the labels value, which we need in case the NSECs ++ are the result of wildcard expansion. ++ Note that the NSEC may not have been validated yet ++ so if there are multiple SIGs, make sure the label value ++ is the same in all, to avoid be duped by a rogue one. ++ If there are no SIGs, that's an error */ ++ unsigned char *p1 = auth_start; ++ int res, j, rdlen1, type1, class1; ++ ++ if (!expand_workspace(&rrsig_labels, &rrsig_labels_sz, nsecs_found)) ++ return 0; ++ ++ rrsig_labels[nsecs_found] = NULL; ++ ++ for (j = ntohs(header->nscount); j != 0; j--) ++ { ++ if (!(res = extract_name(header, plen, &p1, daemon->workspacename, 0, 10))) ++ return 0; ++ ++ GETSHORT(type1, p1); ++ GETSHORT(class1, p1); ++ p1 += 4; /* TTL */ ++ GETSHORT(rdlen1, p1); ++ ++ if (!CHECK_LEN(header, p1, plen, rdlen1)) ++ return 0; ++ ++ if (res == 1 && class1 == qclass && type1 == T_RRSIG) ++ { ++ int type_covered; ++ unsigned char *psav = p1; ++ ++ if (rdlen < 18) ++ return 0; /* bad packet */ ++ ++ GETSHORT(type_covered, p1); ++ ++ if (type_covered == T_NSEC) ++ { ++ p1++; /* algo */ ++ ++ /* labels field must be the same in every SIG we find. */ ++ if (!rrsig_labels[nsecs_found]) ++ rrsig_labels[nsecs_found] = p1; ++ else if (*rrsig_labels[nsecs_found] != *p1) /* algo */ ++ return 0; ++ } ++ p1 = psav; ++ } ++ ++ if (!ADD_RDLEN(header, p1, plen, rdlen1)) ++ return 0; ++ } ++ ++ /* Must have found at least one sig. */ ++ if (!rrsig_labels[nsecs_found]) ++ return 0; ++ } ++ ++ nsecset[nsecs_found++] = pstart; + } + + if (!ADD_RDLEN(header, p, plen, rdlen)) +@@ -1556,7 +1645,7 @@ static int prove_non_existence(struct dns_header *header, size_t plen, char *key + } + + if (type_found == T_NSEC) +- return prove_non_existence_nsec(header, plen, nsecset, nsecs_found, daemon->workspacename, keyname, name, qtype, nons); ++ return prove_non_existence_nsec(header, plen, nsecset, rrsig_labels, nsecs_found, daemon->workspacename, keyname, name, qtype, nons); + else if (type_found == T_NSEC3) + return prove_non_existence_nsec3(header, plen, nsecset, nsecs_found, daemon->workspacename, keyname, name, qtype, wildname, nons); + else +-- +2.15.1 + diff --git a/buildroot/package/dnsmasq/0002-Fix-DNSSEC-validation-errors-introduced-in-4fe6744a2.patch b/buildroot/package/dnsmasq/0002-Fix-DNSSEC-validation-errors-introduced-in-4fe6744a2.patch new file mode 100644 index 0000000..ef28b90 --- /dev/null +++ b/buildroot/package/dnsmasq/0002-Fix-DNSSEC-validation-errors-introduced-in-4fe6744a2.patch @@ -0,0 +1,29 @@ +From cd7df612b14ec1bf831a966ccaf076be0dae7404 Mon Sep 17 00:00:00 2001 +From: Simon Kelley +Date: Sat, 20 Jan 2018 00:10:55 +0000 +Subject: [PATCH] Fix DNSSEC validation errors introduced in + 4fe6744a220eddd3f1749b40cac3dfc510787de6 + +Signed-off-by: Baruch Siach +--- +Upstream status: upstream commit cd7df612b14ec + + src/dnssec.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/dnssec.c b/src/dnssec.c +index a54a0b4f14cf..c47e33569f96 100644 +--- a/src/dnssec.c ++++ b/src/dnssec.c +@@ -1610,7 +1610,7 @@ static int prove_non_existence(struct dns_header *header, size_t plen, char *key + int type_covered; + unsigned char *psav = p1; + +- if (rdlen < 18) ++ if (rdlen1 < 18) + return 0; /* bad packet */ + + GETSHORT(type_covered, p1); +-- +2.15.1 + diff --git a/buildroot/package/dnsmasq/Config.in b/buildroot/package/dnsmasq/Config.in new file mode 100644 index 0000000..262aca6 --- /dev/null +++ b/buildroot/package/dnsmasq/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_DNSMASQ + bool "dnsmasq" + help + A lightweight DNS and DHCP server. It is intended to provide + coupled DNS and DHCP service to a LAN. + + http://www.thekelleys.org.uk/dnsmasq/doc.html + +if BR2_PACKAGE_DNSMASQ + +config BR2_PACKAGE_DNSMASQ_TFTP + bool "tftp support" + default y + help + Enable TFTP support in dnsmasq. + +config BR2_PACKAGE_DNSMASQ_DHCP + bool "dhcp support" + default y + help + Enable DHCP server support in dnsmasq. + +config BR2_PACKAGE_DNSMASQ_DNSSEC + bool "DNSSEC support" + select BR2_PACKAGE_GMP + select BR2_PACKAGE_NETTLE + help + Enable DNSSEC validation and caching support. + +config BR2_PACKAGE_DNSMASQ_IDN + bool "IDN support" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBIDN + help + Enable IDN support in dnsmasq. + This option is a big space taker since it pulls in many + libraries. + +config BR2_PACKAGE_DNSMASQ_LUA + bool "Lua scripting support" + depends on BR2_PACKAGE_LUA + help + Enable Lua scripting for dnsmasq + +config BR2_PACKAGE_DNSMASQ_CONNTRACK + bool "conntrack marking support" + select BR2_PACKAGE_LIBNETFILTER_CONNTRACK + help + Enable DNS query connection marking in netfilter. + +endif diff --git a/buildroot/package/dnsmasq/S80dnsmasq b/buildroot/package/dnsmasq/S80dnsmasq new file mode 100755 index 0000000..d2f8b0f --- /dev/null +++ b/buildroot/package/dnsmasq/S80dnsmasq @@ -0,0 +1,26 @@ +#!/bin/sh + +[ -x /usr/sbin/dnsmasq ] || exit 0 +[ -f /etc/dnsmasq.conf ] || exit 0 + +case "$1" in + start) + printf "Starting dnsmasq: " + start-stop-daemon -S -x /usr/sbin/dnsmasq + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping dnsmasq: " + start-stop-daemon -K -q -x /usr/sbin/dnsmasq + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit 0 diff --git a/buildroot/package/dnsmasq/dnsmasq.hash b/buildroot/package/dnsmasq/dnsmasq.hash new file mode 100644 index 0000000..28e2e65 --- /dev/null +++ b/buildroot/package/dnsmasq/dnsmasq.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.78.tar.xz.asc +sha256 89949f438c74b0c7543f06689c319484bd126cc4b1f8c745c742ab397681252b dnsmasq-2.78.tar.xz +# Locally calculated +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING-v3 diff --git a/buildroot/package/dnsmasq/dnsmasq.mk b/buildroot/package/dnsmasq/dnsmasq.mk new file mode 100644 index 0000000..9f96030 --- /dev/null +++ b/buildroot/package/dnsmasq/dnsmasq.mk @@ -0,0 +1,92 @@ +################################################################################ +# +# dnsmasq +# +################################################################################ + +DNSMASQ_VERSION = 2.78 +DNSMASQ_SOURCE = dnsmasq-$(DNSMASQ_VERSION).tar.xz +DNSMASQ_SITE = http://thekelleys.org.uk/dnsmasq +DNSMASQ_MAKE_ENV = $(TARGET_MAKE_ENV) CC="$(TARGET_CC)" +DNSMASQ_MAKE_OPTS = COPTS="$(DNSMASQ_COPTS)" PREFIX=/usr CFLAGS="$(TARGET_CFLAGS)" +DNSMASQ_MAKE_OPTS += DESTDIR=$(TARGET_DIR) LDFLAGS="$(TARGET_LDFLAGS)" +DNSMASQ_DEPENDENCIES = host-pkgconf +DNSMASQ_LICENSE = GPL-2.0 or GPL-3.0 +DNSMASQ_LICENSE_FILES = COPYING COPYING-v3 + +ifneq ($(BR2_PACKAGE_DNSMASQ_DHCP),y) +DNSMASQ_COPTS += -DNO_DHCP +endif + +ifeq ($(BR2_PACKAGE_DNSMASQ_DNSSEC),y) +DNSMASQ_DEPENDENCIES += gmp nettle +DNSMASQ_COPTS += -DHAVE_DNSSEC +ifeq ($(BR2_STATIC_LIBS),y) +DNSMASQ_COPTS += -DHAVE_DNSSEC_STATIC +endif +endif + +ifneq ($(BR2_PACKAGE_DNSMASQ_TFTP),y) +DNSMASQ_COPTS += -DNO_TFTP +endif + +# NLS requires IDN so only enable it (i18n) when IDN is true +ifeq ($(BR2_PACKAGE_DNSMASQ_IDN),y) +DNSMASQ_DEPENDENCIES += libidn $(TARGET_NLS_DEPENDENCIES) +DNSMASQ_MAKE_OPTS += LIBS+=$(TARGET_NLS_LIBS) +DNSMASQ_COPTS += -DHAVE_IDN +DNSMASQ_I18N = $(if $(BR2_SYSTEM_ENABLE_NLS),-i18n) +endif + +ifeq ($(BR2_PACKAGE_DNSMASQ_CONNTRACK),y) +DNSMASQ_DEPENDENCIES += libnetfilter_conntrack +DNSMASQ_COPTS += -DHAVE_CONNTRACK +endif + +ifeq ($(BR2_PACKAGE_DNSMASQ_LUA),y) +DNSMASQ_DEPENDENCIES += lua +DNSMASQ_COPTS += -DHAVE_LUASCRIPT + +# liblua uses dlopen when dynamically linked +ifneq ($(BR2_STATIC_LIBS),y) +DNSMASQ_MAKE_OPTS += LIBS+="-ldl" +endif + +define DNSMASQ_TWEAK_LIBLUA + $(SED) 's/lua5.2/lua/g' $(DNSMASQ_DIR)/Makefile +endef +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +DNSMASQ_DEPENDENCIES += dbus +DNSMASQ_COPTS += -DHAVE_DBUS + +define DNSMASQ_INSTALL_DBUS + $(INSTALL) -m 0644 -D $(@D)/dbus/dnsmasq.conf \ + $(TARGET_DIR)/etc/dbus-1/system.d/dnsmasq.conf +endef +endif + +define DNSMASQ_FIX_PKGCONFIG + $(SED) 's^PKG_CONFIG = pkg-config^PKG_CONFIG = $(PKG_CONFIG_HOST_BINARY)^' \ + $(DNSMASQ_DIR)/Makefile +endef + +define DNSMASQ_BUILD_CMDS + $(DNSMASQ_FIX_PKGCONFIG) + $(DNSMASQ_TWEAK_LIBLUA) + $(DNSMASQ_MAKE_ENV) $(MAKE) -C $(@D) $(DNSMASQ_MAKE_OPTS) all$(DNSMASQ_I18N) +endef + +define DNSMASQ_INSTALL_TARGET_CMDS + $(DNSMASQ_MAKE_ENV) $(MAKE) -C $(@D) $(DNSMASQ_MAKE_OPTS) install$(DNSMASQ_I18N) + mkdir -p $(TARGET_DIR)/var/lib/misc/ + $(DNSMASQ_INSTALL_DBUS) +endef + +define DNSMASQ_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/dnsmasq/S80dnsmasq \ + $(TARGET_DIR)/etc/init.d/S80dnsmasq +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/doc-asciidoc.mk b/buildroot/package/doc-asciidoc.mk new file mode 100644 index 0000000..be92496 --- /dev/null +++ b/buildroot/package/doc-asciidoc.mk @@ -0,0 +1,190 @@ +# we can't use suitable-host-package here because that's not available in +# the context of 'make release' +.PHONY: asciidoc-check-dependencies +asciidoc-check-dependencies: + $(Q)if [ -z "$(shell support/dependencies/check-host-asciidoc.sh)" ]; then \ + echo "You need a sufficiently recent asciidoc on your host" \ + "to generate documents"; \ + exit 1; \ + fi + $(Q)if [ -z "`which w3m 2>/dev/null`" ]; then \ + echo "You need w3m on your host to generate documents"; \ + exit 1; \ + fi + +asciidoc-check-dependencies-pdf: + $(Q)if [ -z "`which dblatex 2>/dev/null`" ]; then \ + echo "You need dblatex on your host to generate PDF documents"; \ + exit 1; \ + fi + +# PDF generation is broken because of a bug in xsltproc program provided +# by libxslt <=1.1.28, which does not honor an option we need to set. +# Fortunately, this bug is already fixed upstream: +# https://gitorious.org/libxslt/libxslt/commit/5af7ad745323004984287e48b42712e7305de35c +# +# So, bail out when trying to build a PDF using a buggy version of the +# xsltproc program. +# +# So, to overcome this issue and being able to build a PDF, you can +# build xsltproc from its source repository, then run: +# $ PATH=/path/to/custom-xsltproc/bin:${PATH} make manual +GENDOC_XSLTPROC_IS_BROKEN = \ + $(shell xsltproc --maxvars 0 >/dev/null 2>/dev/null || echo y) + +# Apply this configuration to all documents +BR_ASCIIDOC_CONF = docs/conf/asciidoc.conf + +################################################################################ +# ASCIIDOC_INNER -- generates the make targets needed to build a specific type of +# asciidoc documentation. +# +# argument 1 is the name of the document and the top-level asciidoc file must +# have the same name +# argument 2 is the uppercase name of the document +# argument 3 is the directory containing the document +# argument 4 is the type of document to generate (-f argument of a2x) +# argument 5 is the document type as used in the make target +# argument 6 is the output file extension for the document type +# argument 7 is the human text for the document type +# argument 8 (optional) are extra arguments for a2x +# +# The variable _SOURCES defines the dependencies. +# +# Since this function will be called from within an $(eval ...) +# all variable references except the arguments must be $$-quoted. +################################################################################ +define ASCIIDOC_INNER +$(1): $(1)-$(5) +.PHONY: $(1)-$(5) +$(1)-$(5): $$(O)/docs/$(1)/$(1).$(6) + +asciidoc-check-dependencies-$(5): +.PHONY: $(1)-check-dependencies-$(5) +# Single line, because splitting a foreach is not easy... +$(1)-check-dependencies-$(5): asciidoc-check-dependencies-$(5) + $$(Q)$$(foreach hook,$$($(2)_CHECK_DEPENDENCIES_$$(call UPPERCASE,$(5))_HOOKS),$$(call $$(hook))$$(sep)) + +# Include Buildroot's AsciiDoc configuration first: +# - generic configuration, +# - then output-specific configuration +ifneq ($$(wildcard $$(BR_ASCIIDOC_CONF)),) +$(2)_$(4)_ASCIIDOC_OPTS += -f $$(BR_ASCIIDOC_CONF) +endif +BR_$(4)_ASCIIDOC_CONF = docs/conf/asciidoc-$(4).conf +ifneq ($$(wildcard $$(BR_$(4)_ASCIIDOC_CONF)),) +$(2)_$(4)_ASCIIDOC_OPTS += -f $$(BR_$(4)_ASCIIDOC_CONF) +endif + +# Then include the document's AsciiDoc configuration: +# - generic configuration, +# - then output-specific configuration +ifneq ($$(wildcard $$($(2)_ASCIIDOC_CONF)),) +$(2)_$(4)_ASCIIDOC_OPTS += -f $$($(2)_ASCIIDOC_CONF) +endif +$(2)_$(4)_ASCIIDOC_CONF = $(3)/asciidoc-$(4).conf +ifneq ($$(wildcard $$($(2)_$(4)_ASCIIDOC_CONF)),) +$(2)_$(4)_ASCIIDOC_OPTS += -f $$($(2)_$(4)_ASCIIDOC_CONF) +endif + +# Handle a2x warning about --destination-dir option only applicable to HTML +# based outputs. So: +# - use the --destination-dir option if possible (html and split-html), +# - otherwise copy the generated document to the output directory +$(2)_$(4)_A2X_OPTS = +ifneq ($$(filter $(5),html split-html),) +$(2)_$(4)_A2X_OPTS += --destination-dir="$$(@D)" +else +define $(2)_$(4)_INSTALL_CMDS + $$(Q)cp -f $$(BUILD_DIR)/docs/$(1)/$(1).$(6) $$(@D) +endef +endif + +$$(O)/docs/$(1)/$(1).$(6): export TZ=UTC + +ifeq ($(6)-$$(GENDOC_XSLTPROC_IS_BROKEN),pdf-y) +$$(O)/docs/$(1)/$(1).$(6): + $$(warning PDF generation is disabled because of a bug in \ + xsltproc. To be able to generate a PDF, you should \ + build xsltproc from the libxslt sources >=1.1.29 and pass it \ + to make through the command line: \ + 'PATH=/path/to/custom-xsltproc/bin:$$$${PATH} make $(1)-pdf') +else +# -r $(@D) is there for documents that use external filters; those filters +# generate code at the same location it finds the document's source files. +$$(O)/docs/$(1)/$(1).$(6): $$($(2)_SOURCES) \ + $(1)-check-dependencies \ + $(1)-check-dependencies-$(5) \ + $(1)-prepare-sources + $$(Q)$$(call MESSAGE,"Generating $(7) $(1)...") + $$(Q)mkdir -p $$(@D) + $$(Q)a2x $(8) -f $(4) -d book -L \ + $$(foreach r,$$($(2)_RESOURCES) $$(@D), \ + --resource="$$(abspath $$(r))") \ + $$($(2)_$(4)_A2X_OPTS) \ + --asciidoc-opts="$$($(2)_$(4)_ASCIIDOC_OPTS)" \ + $$(BUILD_DIR)/docs/$(1)/$(1).txt +# install the generated document + $$($(2)_$(4)_INSTALL_CMDS) +endif +endef + +################################################################################ +# ASCIIDOC -- generates the make targets needed to build asciidoc documentation. +# +# argument 1 is the lowercase name of the document; the document's main file +# must have the same name, with the .txt extension +# argument 2 is the uppercase name of the document +# argument 3 is the directory containing the document's sources +# +# The variable _SOURCES defines the dependencies. +# The variable _RESOURCES defines where the document's +# resources, such as images, are located; must be an absolute path. +################################################################################ +define ASCIIDOC +# Single line, because splitting a foreach is not easy... +.PHONY: $(1)-check-dependencies +$(1)-check-dependencies: asciidoc-check-dependencies $$($(2)_DEPENDENCIES) + $$(Q)$$(foreach hook,$$($(2)_CHECK_DEPENDENCIES_HOOKS),$$(call $$(hook))$$(sep)) + +# Single line, because splitting a foreach is not easy... +# Do not touch the stamp file, so we get to rsync again every time we build +# the document. +$$(BUILD_DIR)/docs/$(1)/.stamp_doc_rsynced: + $$(Q)$$(call MESSAGE,"Preparing the $(1) sources...") + $$(Q)mkdir -p $$(@D) + $$(Q)rsync -a $(3) $$(@D) + $$(Q)$$(foreach hook,$$($(2)_POST_RSYNC_HOOKS),$$(call $$(hook))$$(sep)) + +.PHONY: $(1)-prepare-sources +$(1)-prepare-sources: $$(BUILD_DIR)/docs/$(1)/.stamp_doc_rsynced + +$(2)_ASCIIDOC_CONF = $(3)/asciidoc.conf + +$(call ASCIIDOC_INNER,$(1),$(2),$(3),xhtml,html,html,HTML,\ + --xsltproc-opts "--stringparam toc.section.depth 1") + +$(call ASCIIDOC_INNER,$(1),$(2),$(3),chunked,split-html,chunked,split HTML,\ + --xsltproc-opts "--stringparam toc.section.depth 1") + +# dblatex needs to pass the '--maxvars ...' option to xsltproc to prevent it +# from reaching the template recursion limit when processing the (long) target +# package table and bailing out. +$(call ASCIIDOC_INNER,$(1),$(2),$(3),pdf,pdf,pdf,PDF,\ + --dblatex-opts "-P latex.output.revhistory=0 -x '--maxvars 100000'") + +$(call ASCIIDOC_INNER,$(1),$(2),$(3),text,text,text,text) + +$(call ASCIIDOC_INNER,$(1),$(2),$(3),epub,epub,epub,ePUB) + +clean: $(1)-clean +$(1)-clean: + $$(Q)$$(RM) -rf $$(BUILD_DIR)/docs/$(1) +.PHONY: $(1) $(1)-clean +endef + +################################################################################ +# asciidoc-document -- the target generator macro for asciidoc documents +################################################################################ + +asciidoc-document = $(call ASCIIDOC,$(pkgname),$(call UPPERCASE,$(pkgname)),$(pkgdir)) diff --git a/buildroot/package/docker-containerd/Config.in b/buildroot/package/docker-containerd/Config.in new file mode 100644 index 0000000..2f7bf71 --- /dev/null +++ b/buildroot/package/docker-containerd/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_DOCKER_CONTAINERD + bool "docker-containerd" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # util-linux + select BR2_PACKAGE_RUNC # runtime dependency + select BR2_PACKAGE_UTIL_LINUX # runtime dependency + select BR2_PACKAGE_UTIL_LINUX_BINARIES + select BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT + select BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT + select BR2_PACKAGE_UTIL_LINUX_MOUNT + help + containerd is a daemon to control runC. + + https://github.com/docker/containerd + +comment "docker-containerd needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/docker-containerd/docker-containerd.hash b/buildroot/package/docker-containerd/docker-containerd.hash new file mode 100644 index 0000000..992eb5b --- /dev/null +++ b/buildroot/package/docker-containerd/docker-containerd.hash @@ -0,0 +1,2 @@ +# Computed locally +sha256 da89086a7c643702a2ddecec67a45d3d8e4b0d610dd19036be63e6bd54cc1a85 docker-containerd-9048e5e50717ea4497b757314bad98ea3763c145.tar.gz diff --git a/buildroot/package/docker-containerd/docker-containerd.mk b/buildroot/package/docker-containerd/docker-containerd.mk new file mode 100644 index 0000000..ffbadb0 --- /dev/null +++ b/buildroot/package/docker-containerd/docker-containerd.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# docker-containerd +# +################################################################################ + +DOCKER_CONTAINERD_VERSION = 9048e5e50717ea4497b757314bad98ea3763c145 +DOCKER_CONTAINERD_SITE = $(call github,docker,containerd,$(DOCKER_CONTAINERD_VERSION)) +DOCKER_CONTAINERD_LICENSE = Apache-2.0 +DOCKER_CONTAINERD_LICENSE_FILES = LICENSE.code + +DOCKER_CONTAINERD_DEPENDENCIES = host-go + +DOCKER_CONTAINERD_GOPATH = "$(@D)/vendor" +DOCKER_CONTAINERD_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ + CGO_ENABLED=1 \ + GOBIN="$(@D)/bin" \ + GOPATH="$(DOCKER_CONTAINERD_GOPATH)" + +DOCKER_CONTAINERD_GLDFLAGS = \ + -X github.com/docker/containerd.GitCommit=$(DOCKER_CONTAINERD_VERSION) + +ifeq ($(BR2_STATIC_LIBS),y) +DOCKER_CONTAINERD_GLDFLAGS += -extldflags '-static' +endif + +define DOCKER_CONTAINERD_CONFIGURE_CMDS + mkdir -p $(DOCKER_CONTAINERD_GOPATH)/src/github.com/docker + ln -s $(@D) $(DOCKER_CONTAINERD_GOPATH)/src/github.com/docker/containerd + mkdir -p $(DOCKER_CONTAINERD_GOPATH)/src/github.com/opencontainers + ln -s $(RUNC_SRCDIR) $(DOCKER_CONTAINERD_GOPATH)/src/github.com/opencontainers/runc +endef + +define DOCKER_CONTAINERD_BUILD_CMDS + $(foreach d,ctr containerd containerd-shim,\ + cd $(@D); $(DOCKER_CONTAINERD_MAKE_ENV) $(HOST_DIR)/bin/go build \ + -v -o $(@D)/bin/$(d) -ldflags "$(DOCKER_CONTAINERD_GLDFLAGS)" ./$(d)$(sep)) +endef + +define DOCKER_CONTAINERD_INSTALL_TARGET_CMDS + ln -fs runc $(TARGET_DIR)/usr/bin/docker-runc + $(INSTALL) -D -m 0755 $(@D)/bin/containerd $(TARGET_DIR)/usr/bin/docker-containerd + $(INSTALL) -D -m 0755 $(@D)/bin/containerd-shim $(TARGET_DIR)/usr/bin/containerd-shim + ln -fs containerd-shim $(TARGET_DIR)/usr/bin/docker-containerd-shim +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/docker-engine/Config.in b/buildroot/package/docker-engine/Config.in new file mode 100644 index 0000000..8feb11b --- /dev/null +++ b/buildroot/package/docker-engine/Config.in @@ -0,0 +1,72 @@ +config BR2_PACKAGE_DOCKER_ENGINE + bool "docker-engine" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Docker is a platform to build, ship, + and run applications as lightweight containers. + + https://github.com/docker/docker + +if BR2_PACKAGE_DOCKER_ENGINE + +config BR2_PACKAGE_DOCKER_ENGINE_DAEMON + bool "docker daemon" + default y + depends on BR2_USE_MMU # docker-containerd + select BR2_PACKAGE_DOCKER_CONTAINERD # runtime dependency + select BR2_PACKAGE_DOCKER_PROXY # runtime dependency + select BR2_PACKAGE_IPTABLES # runtime dependency + select BR2_PACKAGE_SQLITE # runtime dependency + help + Build the Docker system daemon. + If not selected, will build client only. + +config BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL + bool "build experimental features" + +config BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT + bool "build static client" + depends on !BR2_STATIC_LIBS + help + Build a static docker client. + +if BR2_PACKAGE_DOCKER_ENGINE_DAEMON + +config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS + bool "btrfs filesystem driver" + depends on BR2_USE_MMU # btrfs-progs + depends on BR2_TOOLCHAIN_HAS_THREADS # btrfs-progs + select BR2_PACKAGE_BTRFS_PROGS + help + Build the btrfs filesystem driver for Docker. + +config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER + bool "devicemapper filesystem driver" + depends on BR2_TOOLCHAIN_HAS_THREADS # lvm2 + depends on BR2_USE_MMU # lvm2 + depends on !BR2_STATIC_LIBS # lvm2 + depends on !BR2_TOOLCHAIN_USES_MUSL # lvm2 + select BR2_PACKAGE_LVM2 + select BR2_PACKAGE_LVM2_APP_LIBRARY + help + Build the devicemapper filesystem driver for Docker. + +config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS + bool "vfs filesystem driver" + depends on BR2_USE_WCHAR # gvfs + depends on BR2_USE_MMU # gvfs + depends on BR2_TOOLCHAIN_HAS_THREADS # gvfs + select BR2_PACKAGE_GVFS + help + Build the vfs filesystem driver for Docker. + +endif + +endif + +comment "docker-engine needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/docker-engine/docker-engine.hash b/buildroot/package/docker-engine/docker-engine.hash new file mode 100644 index 0000000..6c0ed33 --- /dev/null +++ b/buildroot/package/docker-engine/docker-engine.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4716df117d867b82ddab2e82395cd40aa3d0925a689eedcec8919729e4c9f121 docker-engine-v17.05.0-ce.tar.gz diff --git a/buildroot/package/docker-engine/docker-engine.mk b/buildroot/package/docker-engine/docker-engine.mk new file mode 100644 index 0000000..8928f07 --- /dev/null +++ b/buildroot/package/docker-engine/docker-engine.mk @@ -0,0 +1,124 @@ +################################################################################ +# +# docker-engine +# +################################################################################ + +DOCKER_ENGINE_VERSION = v17.05.0-ce +DOCKER_ENGINE_COMMIT = 89658bed64c2a8fe05a978e5b87dbec409d57a0f +DOCKER_ENGINE_SITE = $(call github,docker,docker,$(DOCKER_ENGINE_VERSION)) + +DOCKER_ENGINE_LICENSE = Apache-2.0 +DOCKER_ENGINE_LICENSE_FILES = LICENSE + +DOCKER_ENGINE_DEPENDENCIES = host-go host-pkgconf + +DOCKER_ENGINE_GOPATH = "$(@D)/gopath" +DOCKER_ENGINE_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ + CGO_ENABLED=1 \ + CGO_NO_EMULATION=1 \ + GOBIN="$(@D)/bin" \ + GOPATH="$(DOCKER_ENGINE_GOPATH)" \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + $(TARGET_MAKE_ENV) + +DOCKER_ENGINE_GLDFLAGS = \ + -X main.GitCommit=$(DOCKER_ENGINE_VERSION) \ + -X main.Version=$(DOCKER_ENGINE_VERSION) + +ifeq ($(BR2_STATIC_LIBS),y) +DOCKER_ENGINE_GLDFLAGS += -extldflags '-static' +else +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT),y) +DOCKER_ENGINE_GLDFLAGS_DOCKER += -extldflags '-static' +endif +endif + +DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen +DOCKER_ENGINE_BUILD_TARGETS = docker + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +DOCKER_ENGINE_BUILD_TAGS += seccomp +DOCKER_ENGINE_DEPENDENCIES += libseccomp +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +DOCKER_ENGINE_BUILD_TAGS += journald +DOCKER_ENGINE_DEPENDENCIES += systemd +endif + +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y) +DOCKER_ENGINE_BUILD_TAGS += daemon +DOCKER_ENGINE_BUILD_TARGETS += dockerd +endif + +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL),y) +DOCKER_ENGINE_BUILD_TAGS += experimental +endif + +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS),y) +DOCKER_ENGINE_DEPENDENCIES += btrfs-progs +else +DOCKER_ENGINE_BUILD_TAGS += exclude_graphdriver_btrfs +endif + +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER),y) +DOCKER_ENGINE_DEPENDENCIES += lvm2 +else +DOCKER_ENGINE_BUILD_TAGS += exclude_graphdriver_devicemapper +endif + +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS),y) +DOCKER_ENGINE_DEPENDENCIES += gvfs +else +DOCKER_ENGINE_BUILD_TAGS += exclude_graphdriver_vfs +endif + +define DOCKER_ENGINE_CONFIGURE_CMDS + mkdir -p $(DOCKER_ENGINE_GOPATH)/src/github.com/docker + ln -fs $(@D) $(DOCKER_ENGINE_GOPATH)/src/github.com/docker/docker + cd $(@D) && \ + GITCOMMIT="$$(echo $(DOCKER_ENGINE_COMMIT) | head -c7)" \ + BUILDTIME="$$(date)" \ + VERSION="$(patsubst v%,%,$(DOCKER_ENGINE_VERSION))" \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" $(TARGET_MAKE_ENV) \ + bash ./hack/make/.go-autogen +endef + +ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y) + +define DOCKER_ENGINE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.service \ + $(TARGET_DIR)/usr/lib/systemd/system/docker.service + $(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/docker.socket + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/ + ln -fs ../../../../usr/lib/systemd/system/docker.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/docker.service +endef + +define DOCKER_ENGINE_USERS + - - docker -1 * - - - Docker Application Container Framework +endef + +endif + +define DOCKER_ENGINE_BUILD_CMDS + $(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \ + cd $(@D)/gopath/src/github.com/docker/docker; \ + $(DOCKER_ENGINE_MAKE_ENV) \ + $(HOST_DIR)/bin/go build -v \ + -o $(@D)/bin/$(target) \ + -tags "$(DOCKER_ENGINE_BUILD_TAGS)" \ + -ldflags "$(DOCKER_ENGINE_GLDFLAGS) $(DOCKER_ENGINE_GLDFLAGS_$(call UPPERCASE,$(target)))" \ + github.com/docker/docker/cmd/$(target) + ) +endef + +define DOCKER_ENGINE_INSTALL_TARGET_CMDS + $(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \ + $(INSTALL) -D -m 0755 $(@D)/bin/$(target) $(TARGET_DIR)/usr/bin/$(target) + ) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/docker-proxy/Config.in b/buildroot/package/docker-proxy/Config.in new file mode 100644 index 0000000..596e18a --- /dev/null +++ b/buildroot/package/docker-proxy/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_DOCKER_PROXY + bool "docker-proxy" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Libnetwork is a Container Network Model that provides a + consistent programming interface and the required network + abstractions for applications. + + This package provides docker-proxy, a run-time dependency of + Docker. + + https://github.com/docker/libnetwork + +comment "docker-proxy needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/docker-proxy/docker-proxy.hash b/buildroot/package/docker-proxy/docker-proxy.hash new file mode 100644 index 0000000..3ec184f --- /dev/null +++ b/buildroot/package/docker-proxy/docker-proxy.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2eee331b6ded567a36e7db708405b34032b93938682cf049025f48b96d755bf6 docker-proxy-7b2b1feb1de4817d522cc372af149ff48d25028e.tar.gz diff --git a/buildroot/package/docker-proxy/docker-proxy.mk b/buildroot/package/docker-proxy/docker-proxy.mk new file mode 100644 index 0000000..3bf6546 --- /dev/null +++ b/buildroot/package/docker-proxy/docker-proxy.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# docker-proxy +# +################################################################################ + +DOCKER_PROXY_VERSION = 7b2b1feb1de4817d522cc372af149ff48d25028e +DOCKER_PROXY_SITE = $(call github,docker,libnetwork,$(DOCKER_PROXY_VERSION)) + +DOCKER_PROXY_LICENSE = Apache-2.0 +DOCKER_PROXY_LICENSE_FILES = LICENSE + +DOCKER_PROXY_DEPENDENCIES = host-go host-pkgconf + +DOCKER_PROXY_GOPATH = "$(@D)/gopath" +DOCKER_PROXY_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ + CGO_ENABLED=1 \ + CGO_NO_EMULATION=1 \ + GOBIN="$(@D)/bin" \ + GOPATH="$(DOCKER_PROXY_GOPATH)" \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + $(TARGET_MAKE_ENV) + +ifeq ($(BR2_STATIC_LIBS),y) +DOCKER_PROXY_GLDFLAGS += -extldflags '-static' +endif + +define DOCKER_PROXY_CONFIGURE_CMDS + mkdir -p $(DOCKER_PROXY_GOPATH)/src/github.com/docker + ln -fs $(@D) $(DOCKER_PROXY_GOPATH)/src/github.com/docker/libnetwork +endef + +define DOCKER_PROXY_BUILD_CMDS + cd $(@D)/gopath/src/github.com/docker/libnetwork; \ + $(DOCKER_PROXY_MAKE_ENV) \ + $(HOST_DIR)/usr/bin/go build -v \ + -o $(@D)/bin/docker-proxy \ + -ldflags "$(DOCKER_PROXY_GLDFLAGS)" \ + github.com/docker/libnetwork/cmd/proxy +endef + +define DOCKER_PROXY_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/docker-proxy $(TARGET_DIR)/usr/bin/docker-proxy +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/docker/Config.in b/buildroot/package/docker/Config.in new file mode 100644 index 0000000..12f8432 --- /dev/null +++ b/buildroot/package/docker/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_DOCKER + bool "docker" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_XLIB_LIBX11 + help + a system tray dock for X + + http://icculus.org/openbox/2/docker + +comment "docker needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/docker/docker.hash b/buildroot/package/docker/docker.hash new file mode 100644 index 0000000..710a0eb --- /dev/null +++ b/buildroot/package/docker/docker.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 47629578e89d96d1541c91d040aec4316f03ad6d01dc3eecb8f82a33445c1e4e docker-1.5.tar.gz diff --git a/buildroot/package/docker/docker.mk b/buildroot/package/docker/docker.mk new file mode 100644 index 0000000..4a8c6fc --- /dev/null +++ b/buildroot/package/docker/docker.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# docker +# +################################################################################ + +DOCKER_VERSION = 1.5 +DOCKER_SITE = http://icculus.org/openbox/2/docker +DOCKER_DEPENDENCIES = host-pkgconf libglib2 xlib_libX11 + +DOCKER_LICENSE = GPL-2.0+ +# The 'or later' is specified at the end of the README, so include that one too. +DOCKER_LICENSE_FILES = COPYING README + +define DOCKER_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + XLIBPATH=$(STAGING_DIR)/usr/lib +endef + +define DOCKER_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + XLIBPATH=$(STAGING_DIR)/usr/lib PREFIX=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/domoticz/0001-Fix-compilation-with-boost-1.66.patch b/buildroot/package/domoticz/0001-Fix-compilation-with-boost-1.66.patch new file mode 100644 index 0000000..d73ea4f --- /dev/null +++ b/buildroot/package/domoticz/0001-Fix-compilation-with-boost-1.66.patch @@ -0,0 +1,56 @@ +From b9481d3382d416d72f523a0442d662e49b4192d1 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 14 Jan 2018 18:18:32 +0100 +Subject: [PATCH] Fix compilation with boost 1.66 + +Patch fetch from one of the answer of + https://github.com/domoticz/domoticz/issues/2034 +(issue still opened, no official PR sent upstream) + +Boost asio changed its API: + - http://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/net_ts.html + +Signed-off-by: Fabrice Fontaine +--- + webserver/proxyclient.cpp | 2 +- + webserver/server.cpp | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/webserver/proxyclient.cpp b/webserver/proxyclient.cpp +index 203ee619..efc9815a 100644 +--- a/webserver/proxyclient.cpp ++++ b/webserver/proxyclient.cpp +@@ -639,7 +639,7 @@ namespace http { + void CProxyManager::StartThread() + { + try { +- boost::asio::ssl::context ctx(io_service, boost::asio::ssl::context::sslv23); ++ boost::asio::ssl::context ctx(boost::asio::ssl::context::sslv23); + ctx.set_verify_mode(boost::asio::ssl::verify_none); + + proxyclient.reset(new CProxyClient(io_service, ctx, m_pWebEm)); +diff --git a/webserver/server.cpp b/webserver/server.cpp +index 5255aa34..0c1af08a 100644 +--- a/webserver/server.cpp ++++ b/webserver/server.cpp +@@ -148,7 +148,7 @@ void server::handle_accept(const boost::system::error_code& e) { + ssl_server::ssl_server(const ssl_server_settings & ssl_settings, request_handler & user_request_handler) : + server_base(ssl_settings, user_request_handler), + settings_(ssl_settings), +- context_(io_service_, ssl_settings.get_ssl_method()) ++ context_(ssl_settings.get_ssl_method()) + { + #ifdef DEBUG_WWW + _log.Log(LOG_STATUS, "[web:%s] create ssl_server using ssl_server_settings : %s", ssl_settings.listening_port.c_str(), ssl_settings.to_string().c_str()); +@@ -161,7 +161,7 @@ ssl_server::ssl_server(const ssl_server_settings & ssl_settings, request_handler + ssl_server::ssl_server(const server_settings & settings, request_handler & user_request_handler) : + server_base(settings, user_request_handler), + settings_(dynamic_cast(settings)), +- context_(io_service_, dynamic_cast(settings).get_ssl_method()) { ++ context_(dynamic_cast(settings).get_ssl_method()) { + #ifdef DEBUG_WWW + _log.Log(LOG_STATUS, "[web:%s] create ssl_server using server_settings : %s", settings.listening_port.c_str(), settings.to_string().c_str()); + #endif +-- +2.14.1 + diff --git a/buildroot/package/domoticz/Config.in b/buildroot/package/domoticz/Config.in new file mode 100644 index 0000000..530027f --- /dev/null +++ b/buildroot/package/domoticz/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_DOMOTICZ + bool "domoticz" + depends on BR2_USE_MMU # mosquitto + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # mosquitto + depends on !BR2_STATIC_LIBS # mosquitto + # pthread_condattr_setclock + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_LUA_5_2 || BR2_PACKAGE_LUA_5_3 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_MOSQUITTO + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_ZLIB + help + Domoticz is a Home Automation System that lets you monitor + and configure various devices like: Lights, Switches, + various sensors/meters like Temperature, Rain, Wind, UV, + Electra, Gas, Water and much more. Notifications/Alerts can + be sent to any mobile device. + + http://domoticz.com + +comment "domoticz needs lua >= 5.2 and a toolchain w/ C++, NPTL, wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS || \ + !(BR2_PACKAGE_LUA_5_2 || BR2_PACKAGE_LUA_5_3) + +comment "domoticz needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/buildroot/package/domoticz/S99domoticz b/buildroot/package/domoticz/S99domoticz new file mode 100644 index 0000000..a16caca --- /dev/null +++ b/buildroot/package/domoticz/S99domoticz @@ -0,0 +1,38 @@ +#!/bin/sh + +NAME=domoticz +PIDFILE=/var/run/$NAME.pid +DAEMON=/opt/domoticz/$NAME +DAEMON_ARGS="-daemon -www 8080 -sslwww 443" + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/domoticz/domoticz.hash b/buildroot/package/domoticz/domoticz.hash new file mode 100644 index 0000000..00dcf71 --- /dev/null +++ b/buildroot/package/domoticz/domoticz.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 5ea8f37f2ef900e9bd17b1b5375e75bfdec4f09001e3e2e0b647a260989d014c domoticz-3.8153.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 License.txt diff --git a/buildroot/package/domoticz/domoticz.mk b/buildroot/package/domoticz/domoticz.mk new file mode 100644 index 0000000..bd25708 --- /dev/null +++ b/buildroot/package/domoticz/domoticz.mk @@ -0,0 +1,100 @@ +################################################################################ +# +# domoticz +# +################################################################################ + +DOMOTICZ_VERSION = 3.8153 +DOMOTICZ_SITE = $(call github,domoticz,domoticz,$(DOMOTICZ_VERSION)) +DOMOTICZ_LICENSE = GPL-3.0 +DOMOTICZ_LICENSE_FILES = License.txt +DOMOTICZ_DEPENDENCIES = \ + boost \ + host-pkgconf \ + libcurl \ + lua \ + mosquitto \ + openssl \ + sqlite \ + zlib + +# Fixes: +# http://autobuild.buildroot.org/results/454c0ea393615bae2d1b44be9920f25b5c49fc33 +# There is an issue with powerpc64le and boost::uuids::random_generator on the +# following line of code (from include/boost/uuid/seed_rng.hpp): +# sha.process_bytes( (unsigned char const*)&std::rand, sizeof( void(*)() ) ) +# This line "inspects the first couple bytes (here eight) of the std::rand +# function to seed some rng. Due to the implementation of process_bytes and +# inlining happening, it seems that one of the loops therein uses &rand-1 as +# some boundary, compiling with -O0 makes that reloc come out as 'rand + 0' and +# the link will succeed." +# See: https://bugzilla.suse.com/show_bug.cgi?id=955832#c7 +ifeq ($(BR2_powerpc64le),y) +DOMOTICZ_CXXFLAGS += -O0 +endif + +# Due to the dependency on mosquitto, domoticz depends on +# !BR2_STATIC_LIBS so set USE_STATIC_BOOST to OFF +DOMOTICZ_CONF_OPTS += -DUSE_STATIC_BOOST=OFF + +# Do not use any built-in libraries which are enabled by default for +# lua, sqlite and mqtt +DOMOTICZ_CONF_OPTS += \ + -DUSE_BUILTIN_LUA=OFF \ + -DUSE_BUILTIN_SQLITE=OFF \ + -DUSE_BUILTIN_MQTT=OFF \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) $(DOMOTICZ_CXXFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +DOMOTICZ_DEPENDENCIES += libusb +endif + +ifeq ($(BR2_PACKAGE_OPENZWAVE),y) +DOMOTICZ_DEPENDENCIES += openzwave + +# Due to the dependency on mosquitto, domoticz depends on +# !BR2_STATIC_LIBS so set USE_STATIC_OPENZWAVE to OFF otherwise +# domoticz will not find the openzwave library as it searches by +# default a static library. +DOMOTICZ_CONF_OPTS += -DUSE_STATIC_OPENZWAVE=OFF +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +DOMOTICZ_DEPENDENCIES += python3 +DOMOTICZ_CONF_OPTS += -DUSE_PYTHON=ON +else +DOMOTICZ_CONF_OPTS += -DUSE_PYTHON=OFF +endif + +# Install domoticz in a dedicated directory (/opt/domoticz) as +# domoticz expects by default that all its subdirectories (www, +# Config, scripts, ...) are in the binary directory. +DOMOTICZ_TARGET_DIR = /opt/domoticz +DOMOTICZ_CONF_OPTS += -DCMAKE_INSTALL_PREFIX=$(DOMOTICZ_TARGET_DIR) + +# Delete License.txt and updatedomo files installed by domoticz in target +# directory +# Do not delete History.txt as it is used in source code +define DOMOTICZ_REMOVE_UNNEEDED_FILES + $(RM) $(TARGET_DIR)/$(DOMOTICZ_TARGET_DIR)/License.txt + $(RM) $(TARGET_DIR)/$(DOMOTICZ_TARGET_DIR)/updatedomo +endef + +DOMOTICZ_POST_INSTALL_TARGET_HOOKS += DOMOTICZ_REMOVE_UNNEEDED_FILES + +# Use dedicated init scripts for systemV and systemd instead of using +# domoticz.sh as it is not compatible with buildroot init system +define DOMOTICZ_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/domoticz/S99domoticz \ + $(TARGET_DIR)/etc/init.d/S99domoticz +endef + +define DOMOTICZ_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/domoticz/domoticz.service \ + $(TARGET_DIR)/usr/lib/systemd/system/domoticz.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/domoticz.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/domoticz.service +endef + +$(eval $(cmake-package)) diff --git a/buildroot/package/domoticz/domoticz.service b/buildroot/package/domoticz/domoticz.service new file mode 100644 index 0000000..446b41a --- /dev/null +++ b/buildroot/package/domoticz/domoticz.service @@ -0,0 +1,10 @@ +[Unit] +Description=Domoticz Home Automation System +After=network.target + +[Service] +ExecStart=/opt/domoticz/domoticz -daemon -www 8080 -sslwww 443 +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/doom-wad/Config.in b/buildroot/package/doom-wad/Config.in new file mode 100644 index 0000000..6f51cfb --- /dev/null +++ b/buildroot/package/doom-wad/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_DOOM_WAD + bool "shareware Doom WAD file" + depends on BR2_PACKAGE_CHOCOLATE_DOOM || BR2_PACKAGE_PRBOOM + help + This will install the shareware wad data file for the doom + game. + + The wad file will be placed in the /usr/share/games/doom + directory. diff --git a/buildroot/package/doom-wad/doom-wad.hash b/buildroot/package/doom-wad/doom-wad.hash new file mode 100644 index 0000000..fa069c1 --- /dev/null +++ b/buildroot/package/doom-wad/doom-wad.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 cacf0142b31ca1af00796b4a0339e07992ac5f21bc3f81e7532fe1b5e1b486e6 doom19s.zip diff --git a/buildroot/package/doom-wad/doom-wad.mk b/buildroot/package/doom-wad/doom-wad.mk new file mode 100644 index 0000000..d3ac731 --- /dev/null +++ b/buildroot/package/doom-wad/doom-wad.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# doom-wad +# +################################################################################ + +DOOM_WAD_VERSION = 1.9 +DOOM_WAD_SOURCE = doom$(subst .,,$(DOOM_WAD_VERSION))s.zip +# Official server currently unavailable +# DOOM_WAD_SITE = ftp://ftp.idsoftware.com/idstuff/doom +DOOM_WAD_SITE = http://www.jbserver.com/downloads/games/doom/misc/shareware + +define DOOM_WAD_EXTRACT_CMDS + $(UNZIP) -p $(DL_DIR)/$($(PKG)_SOURCE) 'DOOMS_19.[12]' > \ + $(@D)/doom-$(DOOM_WAD_VERSION).zip + $(UNZIP) -d $(@D) $(@D)/doom-$(DOOM_WAD_VERSION).zip DOOM1.WAD +endef + +define DOOM_WAD_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/DOOM1.WAD \ + $(TARGET_DIR)/usr/share/games/doom/doom1.wad +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dos2unix/Config.in b/buildroot/package/dos2unix/Config.in new file mode 100644 index 0000000..cfb5ba4 --- /dev/null +++ b/buildroot/package/dos2unix/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_DOS2UNIX + bool "dos2unix" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + dos2unix converts text file line endings between CRLF and LF + + http://waterlan.home.xs4all.nl/dos2unix.html diff --git a/buildroot/package/dos2unix/Config.in.host b/buildroot/package/dos2unix/Config.in.host new file mode 100644 index 0000000..5ec6033 --- /dev/null +++ b/buildroot/package/dos2unix/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_DOS2UNIX + bool "host dos2unix" + help + dos2unix converts text file line endings between CRLF and LF + + http://waterlan.home.xs4all.nl/dos2unix.html diff --git a/buildroot/package/dos2unix/dos2unix.hash b/buildroot/package/dos2unix/dos2unix.hash new file mode 100644 index 0000000..80b7394 --- /dev/null +++ b/buildroot/package/dos2unix/dos2unix.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +# https://waterlan.home.xs4all.nl/dos2unix/dos2unix-7.4.0.tar.gz.asc +sha256 bac765abdbd95cdd87a71989d4382c32cf3cbfeee2153f0086cb9cf18261048a dos2unix-7.4.0.tar.gz +sha256 49224e841621b52a72aa38d8ac895a396cd3fa1395190bdfc9252378001eb3c0 COPYING.txt diff --git a/buildroot/package/dos2unix/dos2unix.mk b/buildroot/package/dos2unix/dos2unix.mk new file mode 100644 index 0000000..5001397 --- /dev/null +++ b/buildroot/package/dos2unix/dos2unix.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# dos2unix +# +################################################################################ + +DOS2UNIX_VERSION = 7.4.0 +DOS2UNIX_SITE = http://waterlan.home.xs4all.nl/dos2unix +DOS2UNIX_LICENSE = BSD-2-Clause +DOS2UNIX_LICENSE_FILES = COPYING.txt +DOS2UNIX_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_BUSYBOX),busybox) \ + $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +DOS2UNIX_MAKE_OPTS += ENABLE_NLS=1 +DOS2UNIX_MAKE_OPTS += LIBS_EXTRA=$(TARGET_NLS_LIBS) +else +# Should be defined to empty to disable NLS support +DOS2UNIX_MAKE_OPTS += ENABLE_NLS= +endif + +ifeq ($(BR2_USE_WCHAR),) +DOS2UNIX_MAKE_OPTS += UCS= +endif + +ifeq ($(BR2_STATIC_LIBS),y) +DOS2UNIX_MAKE_OPTS += LDFLAGS_USER=-static +endif + +define DOS2UNIX_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(DOS2UNIX_MAKE_OPTS) +endef + +define DOS2UNIX_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \ + $(DOS2UNIX_MAKE_OPTS) install +endef + +define HOST_DOS2UNIX_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) ENABLE_NLS= +endef + +define HOST_DOS2UNIX_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) prefix=$(HOST_DIR) ENABLE_NLS= \ + install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/dosfstools/Config.in b/buildroot/package/dosfstools/Config.in new file mode 100644 index 0000000..33c64b3 --- /dev/null +++ b/buildroot/package/dosfstools/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_DOSFSTOOLS + bool "dosfstools" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Tools for creating and checking DOS FAT filesystems. + + https://github.com/dosfstools/dosfstools + +if BR2_PACKAGE_DOSFSTOOLS + +config BR2_PACKAGE_DOSFSTOOLS_FATLABEL + bool "fatlabel" + help + Get or set the DOS FAT filesystem label. + +config BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT + bool "fsck.fat" + help + Check a DOS FAT filesystem. + +config BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT + bool "mkfs.fat" + help + Creates a DOS FAT filesystem on a device. + +endif + +comment "dosfstools needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/dosfstools/Config.in.host b/buildroot/package/dosfstools/Config.in.host new file mode 100644 index 0000000..fc488c0 --- /dev/null +++ b/buildroot/package/dosfstools/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_DOSFSTOOLS + bool "host dosfstools" + help + Tools for creating and checking DOS FAT filesystems. + + https://github.com/dosfstools/dosfstools diff --git a/buildroot/package/dosfstools/dosfstools.hash b/buildroot/package/dosfstools/dosfstools.hash new file mode 100644 index 0000000..2515ea6 --- /dev/null +++ b/buildroot/package/dosfstools/dosfstools.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 e6b2aca70ccc3fe3687365009dd94a2e18e82b688ed4e260e04b7412471cc173 dosfstools-4.1.tar.xz diff --git a/buildroot/package/dosfstools/dosfstools.mk b/buildroot/package/dosfstools/dosfstools.mk new file mode 100644 index 0000000..6eb0851 --- /dev/null +++ b/buildroot/package/dosfstools/dosfstools.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# dosfstools +# +################################################################################ + +DOSFSTOOLS_VERSION = 4.1 +DOSFSTOOLS_SOURCE = dosfstools-$(DOSFSTOOLS_VERSION).tar.xz +DOSFSTOOLS_SITE = https://github.com/dosfstools/dosfstools/releases/download/v$(DOSFSTOOLS_VERSION) +DOSFSTOOLS_LICENSE = GPL-3.0+ +DOSFSTOOLS_LICENSE_FILES = COPYING +DOSFSTOOLS_CONF_OPTS = --enable-compat-symlinks --exec-prefix=/ +HOST_DOSFSTOOLS_CONF_OPTS = --enable-compat-symlinks + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +DOSFSTOOLS_CONF_OPTS += --with-udev +DOSFSTOOLS_DEPENDENCIES += udev +else +DOSFSTOOLS_CONF_OPTS += --without-udev +endif + +ifneq ($(BR2_ENABLE_LOCALE),y) +DOSFSTOOLS_CONF_OPTS += LIBS="-liconv" +DOSFSTOOLS_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_DOSFSTOOLS_FATLABEL),) +define DOSFSTOOLS_REMOVE_FATLABEL + rm -f $(addprefix $(TARGET_DIR)/sbin/,dosfslabel fatlabel) +endef +DOSFSTOOLS_POST_INSTALL_TARGET_HOOKS += DOSFSTOOLS_REMOVE_FATLABEL +endif + +ifeq ($(BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT),) +define DOSFSTOOLS_REMOVE_FSCK_FAT + rm -f $(addprefix $(TARGET_DIR)/sbin/,fsck.fat dosfsck fsck.msdos fsck.vfat) +endef +DOSFSTOOLS_POST_INSTALL_TARGET_HOOKS += DOSFSTOOLS_REMOVE_FSCK_FAT +endif + +ifeq ($(BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT),) +define DOSFSTOOLS_REMOVE_MKFS_FAT + rm -f $(addprefix $(TARGET_DIR)/sbin/,mkfs.fat mkdosfs mkfs.msdos mkfs.vfat) +endef +DOSFSTOOLS_POST_INSTALL_TARGET_HOOKS += DOSFSTOOLS_REMOVE_MKFS_FAT +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/dovecot-pigeonhole/Config.in b/buildroot/package/dovecot-pigeonhole/Config.in new file mode 100644 index 0000000..bd6826b --- /dev/null +++ b/buildroot/package/dovecot-pigeonhole/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_DOVECOT_PIGEONHOLE + bool "dovecot-pigeonhole" + help + Pigeonhole is the name of the project that adds support for + the Sieve language (RFC 5228) and the ManageSieve protocol + (RFC 5804) to the Dovecot Secure IMAP Server. + + http://pigeonhole.dovecot.org diff --git a/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.hash b/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.hash new file mode 100644 index 0000000..a2b7eba --- /dev/null +++ b/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.hash @@ -0,0 +1,3 @@ +# Locally computed after checking signature +sha256 4ae09cb788c5334d167f5a89ee70b0616c3231e5904ad258ce408e4953cfdd6a dovecot-2.2-pigeonhole-0.4.21.tar.gz +sha256 fc9e9522216f2a9a28b31300e3c73c1df56acc27dfae951bf516e7995366b51a COPYING diff --git a/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.mk b/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.mk new file mode 100644 index 0000000..ea8b007 --- /dev/null +++ b/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# dovecot-pigeonhole +# +################################################################################ + +DOVECOT_PIGEONHOLE_VERSION = 0.4.21 +DOVECOT_PIGEONHOLE_SOURCE = dovecot-2.2-pigeonhole-$(DOVECOT_PIGEONHOLE_VERSION).tar.gz +DOVECOT_PIGEONHOLE_SITE = http://pigeonhole.dovecot.org/releases/2.2 +DOVECOT_PIGEONHOLE_LICENSE = LGPL-2.1 +DOVECOT_PIGEONHOLE_LICENSE_FILES = COPYING +DOVECOT_PIGEONHOLE_DEPENDENCIES = dovecot + +DOVECOT_PIGEONHOLE_CONF_OPTS = --with-dovecot=$(STAGING_DIR)/usr/lib + +$(eval $(autotools-package)) diff --git a/buildroot/package/dovecot/0001-byteorder.h-fix-uclibc-build.patch b/buildroot/package/dovecot/0001-byteorder.h-fix-uclibc-build.patch new file mode 100644 index 0000000..b6d3ed3 --- /dev/null +++ b/buildroot/package/dovecot/0001-byteorder.h-fix-uclibc-build.patch @@ -0,0 +1,32 @@ +From 902917880ca29f1007750a70cf46e7246b2d0a2a Mon Sep 17 00:00:00 2001 +From: Josef 'Jeff' Sipek +Date: Tue, 14 Nov 2017 06:01:21 +0100 +Subject: [PATCH] byteorder.h: fix uclibc build + +Patch suggested on upstream mailinglist: +https://www.dovecot.org/pipermail/dovecot/2017-November/110019.html + +Signed-off-by: Bernd Kuhls +--- + src/lib/byteorder.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/lib/byteorder.h b/src/lib/byteorder.h +index 2f5dc7c17..4ffe8da21 100644 +--- a/src/lib/byteorder.h ++++ b/src/lib/byteorder.h +@@ -23,6 +23,11 @@ + #ifndef BYTEORDER_H + #define BYTEORDER_H + ++#undef bswap_8 ++#undef bswap_16 ++#undef bswap_32 ++#undef bswap_64 ++ + /* + * These prototypes exist to catch bugs in the code generating macros below. + */ +-- +2.11.0 + diff --git a/buildroot/package/dovecot/Config.in b/buildroot/package/dovecot/Config.in new file mode 100644 index 0000000..377fd4d --- /dev/null +++ b/buildroot/package/dovecot/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_DOVECOT + bool "dovecot" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + Dovecot is an open source IMAP and POP3 email server for + Linux/UNIX- like systems, written with security primarily in + mind. Dovecot is an excellent choice for both small and large + installations. It's fast, simple to set up, requires no + special administration and it uses very little memory. + + http://www.dovecot.org + +if BR2_PACKAGE_DOVECOT + +config BR2_PACKAGE_DOVECOT_MYSQL + bool "mysql support" + depends on BR2_INSTALL_LIBSTDCPP # mysql + depends on BR2_TOOLCHAIN_HAS_THREADS # mysql + select BR2_PACKAGE_MYSQL + help + Enable MySQL support. + +comment "mysql support needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_DOVECOT_SQLITE + bool "sqlite support" + select BR2_PACKAGE_SQLITE + help + Enable SQLite support. + +source package/dovecot-pigeonhole/Config.in + +endif # BR2_PACKAGE_DOVECOT + +comment "dovecot needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/dovecot/dovecot.hash b/buildroot/package/dovecot/dovecot.hash new file mode 100644 index 0000000..fef0746 --- /dev/null +++ b/buildroot/package/dovecot/dovecot.hash @@ -0,0 +1,5 @@ +# Locally computed after checking signature +sha256 5e92a4325409e66b343f6aaa67174b8921ce83d0df792c6eeb0b7b7e2c808353 dovecot-2.2.34.tar.gz +sha256 a363b132e494f662d98c820d1481297e6ae72f194c2c91b6c39e1518b86240a8 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL +sha256 52b8c95fabb19575281874b661ef7968ea47e8f5d74ba0dd40ce512e52b3fc97 COPYING.MIT diff --git a/buildroot/package/dovecot/dovecot.mk b/buildroot/package/dovecot/dovecot.mk new file mode 100644 index 0000000..e1b4bb2 --- /dev/null +++ b/buildroot/package/dovecot/dovecot.mk @@ -0,0 +1,115 @@ +################################################################################ +# +# dovecot +# +################################################################################ + +DOVECOT_VERSION_MAJOR = 2.2 +DOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).34 +DOVECOT_SITE = http://www.dovecot.org/releases/$(DOVECOT_VERSION_MAJOR) +DOVECOT_INSTALL_STAGING = YES +DOVECOT_LICENSE = LGPL-2.1, MIT, Public Domain, BSD-3-Clause, Unicode-DFS-2015 +DOVECOT_LICENSE_FILES = COPYING COPYING.LGPL COPYING.MIT +DOVECOT_DEPENDENCIES = \ + host-pkgconf \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + openssl + +DOVECOT_CONF_ENV = \ + RPCGEN=__disable_RPCGEN_rquota \ + i_cv_epoll_works=yes \ + i_cv_inotify_works=yes \ + i_cv_posix_fallocate_works=no \ + i_cv_signed_size_t=no \ + i_cv_gmtime_max_time_t=32 \ + i_cv_signed_time_t=yes \ + i_cv_mmap_plays_with_write=yes \ + i_cv_fd_passing=yes \ + i_cv_c99_vsnprintf=yes \ + lib_cv_va_copy=yes \ + lib_cv___va_copy=yes \ + lib_cv_va_val_copy=yes + +DOVECOT_CONF_OPTS = --without-docs --with-ssl=openssl + +ifeq ($(BR2_PACKAGE_DOVECOT_MYSQL)$(BR2_PACKAGE_DOVECOT_SQLITE),) +DOVECOT_CONF_OPTS += --without-sql +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +DOVECOT_CONF_OPTS += --with-bzlib +DOVECOT_DEPENDENCIES += bzip2 +else +DOVECOT_CONF_OPTS += --without-bzlib +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +DOVECOT_CONF_OPTS += --with-icu +DOVECOT_DEPENDENCIES += icu +else +DOVECOT_CONF_OPTS += --without-icu +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +DOVECOT_CONF_OPTS += --with-libcap +DOVECOT_DEPENDENCIES += libcap +else +DOVECOT_CONF_OPTS += --without-libcap +endif + +ifeq ($(BR2_PACKAGE_DOVECOT_MYSQL),y) +DOVECOT_CONF_ENV += MYSQL_CONFIG="$(STAGING_DIR)/usr/bin/mysql_config" +DOVECOT_CONF_OPTS += --with-mysql +DOVECOT_DEPENDENCIES += mysql +else +DOVECOT_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_DOVECOT_SQLITE),y) +DOVECOT_CONF_OPTS += --with-sqlite +DOVECOT_DEPENDENCIES += sqlite +else +DOVECOT_CONF_OPTS += --without-sqlite +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +DOVECOT_CONF_OPTS += --with-lz4 +DOVECOT_DEPENDENCIES += lz4 +else +DOVECOT_CONF_OPTS += --without-lz4 +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +DOVECOT_CONF_OPTS += --with-lzma +DOVECOT_DEPENDENCIES += xz +else +DOVECOT_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +DOVECOT_CONF_OPTS += --with-zlib +DOVECOT_DEPENDENCIES += zlib +else +DOVECOT_CONF_OPTS += --without-zlib +endif + +# fix paths to avoid using /usr/lib/dovecot +define DOVECOT_POST_CONFIGURE + for i in $$(find $(@D) -name "Makefile"); do \ + $(SED) 's%^pkglibdir =.*%pkglibdir = \$$(libdir)%' $$i; \ + $(SED) 's%^pkglibexecdir =.*%pkglibexecdir = \$$(libexecdir)%' $$i; \ + done +endef + +DOVECOT_POST_CONFIGURE_HOOKS += DOVECOT_POST_CONFIGURE + +# dovecot installs dovecot-config in usr/lib/, therefore +# DOVECOT_CONFIG_SCRIPTS can not be used to rewrite paths +define DOVECOT_FIX_STAGING_DOVECOT_CONFIG + $(SED) 's,^LIBDOVECOT_INCLUDE=.*$$,LIBDOVECOT_INCLUDE=\"-I$(STAGING_DIR)/usr/include/dovecot\",' $(STAGING_DIR)/usr/lib/dovecot-config + $(SED) 's,^LIBDOVECOT=.*$$,LIBDOVECOT=\"-L$(STAGING_DIR)/usr/lib -ldovecot\",' $(STAGING_DIR)/usr/lib/dovecot-config +endef + +DOVECOT_POST_INSTALL_STAGING_HOOKS += DOVECOT_FIX_STAGING_DOVECOT_CONFIG + +$(eval $(autotools-package)) diff --git a/buildroot/package/doxygen/0001-Bug-776791-1.8.13-Regression-Segfault-building-the-b.patch b/buildroot/package/doxygen/0001-Bug-776791-1.8.13-Regression-Segfault-building-the-b.patch new file mode 100644 index 0000000..b64158c --- /dev/null +++ b/buildroot/package/doxygen/0001-Bug-776791-1.8.13-Regression-Segfault-building-the-b.patch @@ -0,0 +1,30 @@ +From 0f02761a158a5e9ddbd5801682482af8986dbc35 Mon Sep 17 00:00:00 2001 +From: albert-github +Date: Wed, 4 Jan 2017 12:24:55 +0100 +Subject: [PATCH] Bug 776791 - [1.8.13 Regression] Segfault building the + breathe docs + +Protected against NULL pointer of variable al + +[Romain: backport from upstream] +Signed-off-by: Romain Naour +--- + src/xmlgen.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp +index fe95c7a..70e198a 100644 +--- a/src/xmlgen.cpp ++++ b/src/xmlgen.cpp +@@ -620,7 +620,7 @@ static void generateXMLForMember(MemberDef *md,FTextStream &ti,FTextStream &t,De + if (md->isInline()) t << "yes"; else t << "no"; + t << "\""; + +- if (al->refQualifier!=RefQualifierNone) ++ if (al!=0 && al->refQualifier!=RefQualifierNone) + { + t << " refqual=\""; + if (al->refQualifier==RefQualifierLValue) t << "lvalue"; else t << "rvalue"; +-- +2.9.4 + diff --git a/buildroot/package/doxygen/0002-build-fix-the-way-lang_cfg.h-is-generated.patch b/buildroot/package/doxygen/0002-build-fix-the-way-lang_cfg.h-is-generated.patch new file mode 100644 index 0000000..282b2bd --- /dev/null +++ b/buildroot/package/doxygen/0002-build-fix-the-way-lang_cfg.h-is-generated.patch @@ -0,0 +1,58 @@ +From f9a3aa72c2bf15726bcdafd140fd21f790de555d Mon Sep 17 00:00:00 2001 +From: Bartosz Golaszewski +Date: Wed, 21 Jun 2017 14:32:25 +0200 +Subject: [PATCH] build: fix the way lang_cfg.h is generated + +This header is generated by running cmake/lang_cfg.cmake and +redirecting its stderr. If any warning is emitted by this script, it +ends up in the generated header and breaks the build. + +To avoid such problems: pass the path to the header as an argument to +the cmake script and use the cmake 'file' command instead of 'message'. + +We can't even use message(STATUS...) as - although it prints to stdout +as opposed to other types of messages - it prepends all output with +a double hyphen. + +Signed-off-by: Bartosz Golaszewski +--- + cmake/lang_cfg.cmake | 10 +++++----- + src/CMakeLists.txt | 2 +- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/cmake/lang_cfg.cmake b/cmake/lang_cfg.cmake +index c57d3ed..86c2d9a 100644 +--- a/cmake/lang_cfg.cmake ++++ b/cmake/lang_cfg.cmake +@@ -1,10 +1,10 @@ +-if(${CMAKE_ARGC} GREATER 1) +- if ("${CMAKE_ARGV3}" STREQUAL "ENONLY") +- message("#define ENGLISH_ONLY") ++if(${CMAKE_ARGC} GREATER 2) ++ if ("${CMAKE_ARGV4}" STREQUAL "ENONLY") ++ file(APPEND ${CMAKE_ARGV3} " #define ENGLISH_ONLY") + else() + math(EXPR UPTO ${CMAKE_ARGC}-1) +- foreach(i RANGE 3 ${UPTO}) +- message("#define LANG_${CMAKE_ARGV${i}}") ++ foreach(i RANGE 4 ${UPTO}) ++ file(APPEND ${CMAKE_ARGV3} " #define LANG_${CMAKE_ARGV${i}}") + endforeach() + endif() + endif() +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 08c8439..dcf4ef8 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -73,7 +73,7 @@ set_source_files_properties(${GENERATED_SRC}/ce_parse.h PROPERTIES GENERATED 1) + # lang_cfg.h + add_custom_command( + COMMENT "Generating ${GENERATED_SRC}/lang_cfg.h" +- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lang_cfg.cmake ${LANG_CODES} 2> ${GENERATED_SRC}/lang_cfg.h ++ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/lang_cfg.cmake ${GENERATED_SRC}/lang_cfg.h ${LANG_CODES} + DEPENDS ${LANGUAGE_FILES} + OUTPUT ${GENERATED_SRC}/lang_cfg.h + ) +-- +2.9.3 + diff --git a/buildroot/package/doxygen/doxygen.hash b/buildroot/package/doxygen/doxygen.hash new file mode 100644 index 0000000..4cf53e7 --- /dev/null +++ b/buildroot/package/doxygen/doxygen.hash @@ -0,0 +1,2 @@ +# Computed locally +sha256 af667887bd7a87dc0dbf9ac8d86c96b552dfb8ca9c790ed1cbffaa6131573f6b doxygen-1.8.13.src.tar.gz diff --git a/buildroot/package/doxygen/doxygen.mk b/buildroot/package/doxygen/doxygen.mk new file mode 100644 index 0000000..10cdcf9 --- /dev/null +++ b/buildroot/package/doxygen/doxygen.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# doxygen +# +################################################################################ + +DOXYGEN_VERSION = 1.8.13 +DOXYGEN_SOURCE = doxygen-$(DOXYGEN_VERSION).src.tar.gz +DOXYGEN_SITE = http://ftp.stack.nl/pub/users/dimitri +DOXYGEN_LICENSE = GPL-2.0 +DOXYGEN_LICENSE_FILES = LICENSE +HOST_DOXYGEN_DEPENDENCIES = host-flex host-bison + +$(eval $(host-cmake-package)) diff --git a/buildroot/package/drbd-utils/Config.in b/buildroot/package/drbd-utils/Config.in new file mode 100644 index 0000000..be68619 --- /dev/null +++ b/buildroot/package/drbd-utils/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_DRBD_UTILS + bool "drbd-utils" + depends on BR2_USE_MMU # needs fork() + help + DRBD utilities to manage the DRBD kernel module. + + http://oss.linbit.com/drbd/ diff --git a/buildroot/package/drbd-utils/drbd-utils.hash b/buildroot/package/drbd-utils/drbd-utils.hash new file mode 100644 index 0000000..bcbed1e --- /dev/null +++ b/buildroot/package/drbd-utils/drbd-utils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 11299b555b703440ef0af2c74b69cf6dfb833e050b87cfdc3b93d0b71d8820a6 drbd-utils-9.2.0.tar.gz diff --git a/buildroot/package/drbd-utils/drbd-utils.mk b/buildroot/package/drbd-utils/drbd-utils.mk new file mode 100644 index 0000000..bb28729 --- /dev/null +++ b/buildroot/package/drbd-utils/drbd-utils.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# drbd-utils +# +################################################################################ + +DRBD_UTILS_VERSION = 9.2.0 +DRBD_UTILS_SITE = http://www.linbit.com/downloads/drbd/utils +DRBD_UTILS_LICENSE = GPL-2.0+ +DRBD_UTILS_LICENSE_FILES = COPYING +DRBD_UTILS_DEPENDENCIES = host-flex + +DRBD_UTILS_CONF_OPTS = --with-distro=generic --without-manual + +ifeq ($(BR2_INIT_SYSTEMD),y) +DRBD_UTILS_CONF_OPTS += --with-initscripttype=systemd +DRBD_UTILS_DEPENDENCIES += systemd +else +DRBD_UTILS_CONF_OPTS += --with-initscripttype=sysv +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +DRBD_UTILS_CONF_OPTS += --with-udev=yes +DRBD_UTILS_DEPENDENCIES += udev +else +DRBD_UTILS_CONF_OPTS += --with-udev=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/dropbear/Config.in b/buildroot/package/dropbear/Config.in new file mode 100644 index 0000000..6700778 --- /dev/null +++ b/buildroot/package/dropbear/Config.in @@ -0,0 +1,58 @@ +config BR2_PACKAGE_DROPBEAR + bool "dropbear" + select BR2_PACKAGE_ZLIB if !BR2_PACKAGE_DROPBEAR_SMALL + help + A small SSH 2 server designed for small memory environments. + + Note that dropbear requires a per-device unique host key. The + key will be generated when dropbear starts, but it is not + persistent over reboot (if you have a read-only rootfs) or + upgrade (if you have a read-write rootfs). To make the key + persistent, replace /etc/dropbear with a symlink to a + directory on a persistent, writeable filesystem. + Alternatively, mount a persistent unionfs over your root + filesystem. + + https://matt.ucc.asn.au/dropbear/dropbear.html + +if BR2_PACKAGE_DROPBEAR + +config BR2_PACKAGE_DROPBEAR_CLIENT + bool "client programs" + default y + help + Provides the programs: dbclient, ssh + + Note that the following programs are also used server-side + and are therefore always build regardless this setting: + dropbear, dropbearkey, dropbearconvert, scp + +config BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS + bool "disable reverse DNS lookups" + help + Disable reverse DNS lookups on connection. This can be handy + on systems without working DNS, as connections otherwise + stall until DNS times out. + +config BR2_PACKAGE_DROPBEAR_SMALL + bool "optimize for size" + default y + help + Compile dropbear for the smallest possible binary size. + + Tradeoffs are slower hashes and ciphers, and disabling of the + blowfish cipher and zlib. + +config BR2_PACKAGE_DROPBEAR_WTMP + bool "log dropbear access to wtmp" + help + Enable logging of dropbear access to wtmp. Notice that + Buildroot does not generate wtmp by default. + +config BR2_PACKAGE_DROPBEAR_LASTLOG + bool "log dropbear access to lastlog" + help + Enable logging of dropbear access to lastlog. Notice that + Buildroot does not generate lastlog by default. + +endif diff --git a/buildroot/package/dropbear/S50dropbear b/buildroot/package/dropbear/S50dropbear new file mode 100644 index 0000000..9474eaa --- /dev/null +++ b/buildroot/package/dropbear/S50dropbear @@ -0,0 +1,61 @@ +#!/bin/sh +# +# Starts dropbear sshd. +# + +# Allow a few customizations from a config file +test -r /etc/default/dropbear && . /etc/default/dropbear + +start() { + DROPBEAR_ARGS="$DROPBEAR_ARGS -R" + + # If /etc/dropbear is a symlink to /var/run/dropbear, and + # - the filesystem is RO (i.e. we can not rm the symlink), + # create the directory pointed to by the symlink. + # - the filesystem is RW (i.e. we can rm the symlink), + # replace the symlink with an actual directory + if [ -L /etc/dropbear \ + -a "$(readlink /etc/dropbear)" = "/var/run/dropbear" ] + then + if rm -f /etc/dropbear >/dev/null 2>&1; then + mkdir -p /etc/dropbear + else + echo "No persistent location to store SSH host keys. New keys will be" + echo "generated at each boot. Are you sure this is what you want to do?" + mkdir -p "$(readlink /etc/dropbear)" + fi + fi + + printf "Starting dropbear sshd: " + umask 077 + + start-stop-daemon -S -q -p /var/run/dropbear.pid \ + --exec /usr/sbin/dropbear -- $DROPBEAR_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping dropbear sshd: " + start-stop-daemon -K -q -p /var/run/dropbear.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/dropbear/dropbear.hash b/buildroot/package/dropbear/dropbear.hash new file mode 100644 index 0000000..98776e7 --- /dev/null +++ b/buildroot/package/dropbear/dropbear.hash @@ -0,0 +1,2 @@ +# From https://matt.ucc.asn.au/dropbear/releases/SHA256SUM.asc +sha256 6cbc1dcb1c9709d226dff669e5604172a18cf5dbf9a201474d5618ae4465098c dropbear-2017.75.tar.bz2 diff --git a/buildroot/package/dropbear/dropbear.mk b/buildroot/package/dropbear/dropbear.mk new file mode 100644 index 0000000..01a1a07 --- /dev/null +++ b/buildroot/package/dropbear/dropbear.mk @@ -0,0 +1,99 @@ +################################################################################ +# +# dropbear +# +################################################################################ + +DROPBEAR_VERSION = 2017.75 +DROPBEAR_SITE = https://matt.ucc.asn.au/dropbear/releases +DROPBEAR_SOURCE = dropbear-$(DROPBEAR_VERSION).tar.bz2 +DROPBEAR_LICENSE = MIT, BSD-2-Clause-like, BSD-2-Clause +DROPBEAR_LICENSE_FILES = LICENSE +DROPBEAR_TARGET_BINS = dropbearkey dropbearconvert scp +DROPBEAR_PROGRAMS = dropbear $(DROPBEAR_TARGET_BINS) + +ifeq ($(BR2_PACKAGE_DROPBEAR_CLIENT),y) +# Build dbclient, and create a convenience symlink named ssh +DROPBEAR_PROGRAMS += dbclient +DROPBEAR_TARGET_BINS += dbclient ssh +endif + +DROPBEAR_MAKE = \ + $(MAKE) MULTI=1 SCPPROGRESS=1 \ + PROGRAMS="$(DROPBEAR_PROGRAMS)" + +ifeq ($(BR2_STATIC_LIBS),y) +DROPBEAR_MAKE += STATIC=1 +endif + +define DROPBEAR_FIX_XAUTH + $(SED) 's,^#define XAUTH_COMMAND.*/xauth,#define XAUTH_COMMAND "/usr/bin/xauth,g' $(@D)/options.h +endef + +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_FIX_XAUTH + +define DROPBEAR_ENABLE_REVERSE_DNS + $(SED) 's:.*\(#define DO_HOST_LOOKUP\).*:\1:' $(@D)/options.h +endef + +define DROPBEAR_BUILD_SMALL + $(SED) 's:.*\(#define NO_FAST_EXPTMOD\).*:\1:' $(@D)/options.h +endef + +define DROPBEAR_BUILD_FEATURED + $(SED) 's:^#define DROPBEAR_SMALL_CODE::' $(@D)/options.h + $(SED) 's:.*\(#define DROPBEAR_BLOWFISH\).*:\1:' $(@D)/options.h + $(SED) 's:.*\(#define DROPBEAR_TWOFISH128\).*:\1:' $(@D)/options.h + $(SED) 's:.*\(#define DROPBEAR_TWOFISH256\).*:\1:' $(@D)/options.h +endef + +define DROPBEAR_DISABLE_STANDALONE + $(SED) 's:\(#define NON_INETD_MODE\):/*\1 */:' $(@D)/options.h +endef + +define DROPBEAR_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/dropbear/dropbear.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dropbear.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/dropbear.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/dropbear.service +endef + +ifeq ($(BR2_USE_MMU),y) +define DROPBEAR_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/dropbear/S50dropbear \ + $(TARGET_DIR)/etc/init.d/S50dropbear +endef +else +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_DISABLE_STANDALONE +endif + +ifeq ($(BR2_PACKAGE_DROPBEAR_DISABLE_REVERSEDNS),) +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_ENABLE_REVERSE_DNS +endif + +ifeq ($(BR2_PACKAGE_DROPBEAR_SMALL),y) +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_BUILD_SMALL +DROPBEAR_CONF_OPTS += --disable-zlib +else +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_BUILD_FEATURED +DROPBEAR_DEPENDENCIES += zlib +endif + +ifneq ($(BR2_PACKAGE_DROPBEAR_WTMP),y) +DROPBEAR_CONF_OPTS += --disable-wtmp +endif + +ifneq ($(BR2_PACKAGE_DROPBEAR_LASTLOG),y) +DROPBEAR_CONF_OPTS += --disable-lastlog +endif + +define DROPBEAR_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 $(@D)/dropbearmulti $(TARGET_DIR)/usr/sbin/dropbear + for f in $(DROPBEAR_TARGET_BINS); do \ + ln -snf ../sbin/dropbear $(TARGET_DIR)/usr/bin/$$f ; \ + done + ln -snf /var/run/dropbear $(TARGET_DIR)/etc/dropbear +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/dropbear/dropbear.service b/buildroot/package/dropbear/dropbear.service new file mode 100644 index 0000000..620cdd7 --- /dev/null +++ b/buildroot/package/dropbear/dropbear.service @@ -0,0 +1,27 @@ +[Unit] +Description=Dropbear SSH daemon +After=syslog.target network.target auditd.service + +[Service] +# If /etc/dropbear is a symlink to /var/run/dropbear, and +# - the filesystem is RO (i.e. we can not rm the symlink), +# create the directory pointed to by the symlink. +# - the filesystem is RW (i.e. we can rm the symlink), +# replace the symlink with an actual directory +ExecStartPre=/bin/sh -c '\ +if [ -L /etc/dropbear \ + -a "$(readlink /etc/dropbear)" = "/var/run/dropbear" ]; then \ + if rm -f /etc/dropbear >/dev/null 2>&1; then \ + mkdir -p /etc/dropbear; \ + else \ + echo "No persistent location to store SSH host keys. New keys will be"; \ + echo "generated at each boot. Are you sure this is what you want to do?"; \ + mkdir -p "$(readlink /etc/dropbear)"; \ + fi; \ +fi' +EnvironmentFile=-/etc/default/dropbear +ExecStart=/usr/sbin/dropbear -F -R $DROPBEAR_ARGS +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/dropwatch/0001-binutils-2.23.1.patch b/buildroot/package/dropwatch/0001-binutils-2.23.1.patch new file mode 100644 index 0000000..f9f090c --- /dev/null +++ b/buildroot/package/dropwatch/0001-binutils-2.23.1.patch @@ -0,0 +1,92 @@ +From c89cc908ba7f9f41aba4f61f58103d0fc64fa19f Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Fri, 16 Jun 2017 08:50:03 +0200 +Subject: [PATCH] Fix for binutils 2.23.1 + +libbfd from binutils 2.23.1+ requires PACKAGE* definitions from autoconf. +Patch from https://fedorahosted.org/dropwatch/ticket/5 +Upstream status: new. + +Signed-off-by: Gustavo Zacarias +--- + src/lookup.c | 2 +- + src/lookup.h | 3 +++ + src/lookup_bfd.c | 2 +- + src/lookup_kas.c | 2 +- + 4 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/lookup.c b/src/lookup.c +index ba54991..809981b 100644 +--- a/src/lookup.c ++++ b/src/lookup.c +@@ -27,13 +27,13 @@ + #include + #include + #include +-#include + #include + #include + #include + #include + + #include "lookup.h" ++#include + + extern struct lookup_methods bfd_methods; + extern struct lookup_methods kallsym_methods; +diff --git a/src/lookup.h b/src/lookup.h +index e6568d8..47a7b56 100644 +--- a/src/lookup.h ++++ b/src/lookup.h +@@ -28,6 +28,9 @@ + #include + #include + ++// satisfy PR 14072 in bfd.h ++#define PACKAGE 1 ++#define PACKAGE_VERSION 1 + + /* + * Initalization routine +diff --git a/src/lookup_bfd.c b/src/lookup_bfd.c +index cc7010b..271d426 100644 +--- a/src/lookup_bfd.c ++++ b/src/lookup_bfd.c +@@ -25,13 +25,13 @@ + #include + #include + #include +-#include + #include + #include + #include + #include + + #include "lookup.h" ++#include + + + static int lookup_bfd_init(void) +diff --git a/src/lookup_kas.c b/src/lookup_kas.c +index 16e639f..556cb62 100644 +--- a/src/lookup_kas.c ++++ b/src/lookup_kas.c +@@ -25,7 +25,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -33,6 +32,7 @@ + #include + + #include "lookup.h" ++#include + + struct symbol_entry { + char *sym_name; +-- +2.1.4 + diff --git a/buildroot/package/dropwatch/0002-remove-werror.patch b/buildroot/package/dropwatch/0002-remove-werror.patch new file mode 100644 index 0000000..4b6c989 --- /dev/null +++ b/buildroot/package/dropwatch/0002-remove-werror.patch @@ -0,0 +1,31 @@ +From 2462baf55939ee53bb28ff5f9474761f2a888add Mon Sep 17 00:00:00 2001 +From: Markos Chandras +Date: Fri, 16 Jun 2017 08:53:31 +0200 +Subject: [PATCH] remove werror + +-Werror shouldn't be used in released code since it can +cause random build failures on moderate warnings. It also +depends on the used toolchain since different toolchains may +or may not print the same warnings. + +Signed-off-by: Markos Chandras +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 5bc6aaa..527c1da 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -1,7 +1,7 @@ + all: dropwatch + + CPPFLAGS += -D_GNU_SOURCE +-CFLAGS += -g -Wall -Werror $(shell pkg-config --cflags libnl-3.0) ++CFLAGS += -g -Wall $(shell pkg-config --cflags libnl-3.0) + LDLIBS += -lbfd -lreadline -lnl-3 -lnl-genl-3 + + OBJFILES := main.o lookup.o\ +-- +2.1.4 + diff --git a/buildroot/package/dropwatch/Config.in b/buildroot/package/dropwatch/Config.in new file mode 100644 index 0000000..f470f1b --- /dev/null +++ b/buildroot/package/dropwatch/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_DROPWATCH + bool "dropwatch" + depends on !BR2_nios2 # binutils + depends on BR2_USE_WCHAR # binutils + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_BINUTILS + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_LIBNL + help + Dropwatch is an interactive utility for monitoring and + recording packets that are dropped by the kernel + + http://git.infradead.org/users/nhorman/dropwatch.git + +comment "dropwatch needs a toolchain w/ threads, wchar" + depends on !BR2_nios2 + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/dropwatch/dropwatch.hash b/buildroot/package/dropwatch/dropwatch.hash new file mode 100644 index 0000000..585b035 --- /dev/null +++ b/buildroot/package/dropwatch/dropwatch.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4937007da3d0071c9a37ee0360cfd1657b342fd2a327d83ba992fbf3e0ea51b5 dropwatch-7c33d8a8ed105b07a46b55d71d93b36ed34c16db.tar.gz diff --git a/buildroot/package/dropwatch/dropwatch.mk b/buildroot/package/dropwatch/dropwatch.mk new file mode 100644 index 0000000..692a6e8 --- /dev/null +++ b/buildroot/package/dropwatch/dropwatch.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# dropwatch +# +################################################################################ + +DROPWATCH_VERSION = 7c33d8a8ed105b07a46b55d71d93b36ed34c16db +DROPWATCH_SITE = git://git.infradead.org/users/nhorman/dropwatch.git +DROPWATCH_DEPENDENCIES = binutils libnl readline host-pkgconf \ + $(TARGET_NLS_DEPENDENCIES) +DROPWATCH_LICENSE = GPL-2.0 +DROPWATCH_LICENSE_FILES = COPYING + +# libbfd may be linked to libintl +# Ugly... but LDLIBS are hardcoded anyway +DROPWATCH_LDLIBS = \ + -lbfd -lreadline -lnl-3 -lnl-genl-3 -lpthread -lncurses -lm \ + $(TARGET_NLS_LIBS) + +define DROPWATCH_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + LDLIBS="$(DROPWATCH_LDLIBS)" build +endef + +define DROPWATCH_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/dropwatch \ + $(TARGET_DIR)/usr/bin/dropwatch +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dsp-tools/Config.in b/buildroot/package/dsp-tools/Config.in new file mode 100644 index 0000000..0267454 --- /dev/null +++ b/buildroot/package/dsp-tools/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_DSP_TOOLS + bool "dsp-tools" + depends on BR2_cortex_a8 + select BR2_PACKAGE_TIDSP_BINARIES + help + Utilities for TI OMAP3 DSP. + + http://github.com/felipec/dsp-tools diff --git a/buildroot/package/dsp-tools/dsp-tools.hash b/buildroot/package/dsp-tools/dsp-tools.hash new file mode 100644 index 0000000..cfcf06c --- /dev/null +++ b/buildroot/package/dsp-tools/dsp-tools.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 734a1d5f21fb388bdbe64f7b599fef52357c3c72ff860f38456a352e7c1c3e78 dsp-tools-v2.0.tar.gz diff --git a/buildroot/package/dsp-tools/dsp-tools.mk b/buildroot/package/dsp-tools/dsp-tools.mk new file mode 100644 index 0000000..ec63bcd --- /dev/null +++ b/buildroot/package/dsp-tools/dsp-tools.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# dsp-tools +# +################################################################################ + +DSP_TOOLS_VERSION = v2.0 +DSP_TOOLS_SITE = $(call github,felipec,dsp-tools,$(DSP_TOOLS_VERSION)) +DSP_TOOLS_DEPENDENCIES = tidsp-binaries +DSP_TOOLS_LICENSE = LGPL-2.1 +DSP_TOOLS_LICENSE_FILES = LICENSE + +define DSP_TOOLS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) -e +endef + +define DSP_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) -e DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dstat/Config.in b/buildroot/package/dstat/Config.in new file mode 100644 index 0000000..110aee8 --- /dev/null +++ b/buildroot/package/dstat/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_DSTAT + bool "dstat" + depends on BR2_USE_WCHAR # python + depends on BR2_USE_MMU # python + depends on BR2_TOOLCHAIN_HAS_THREADS # python + depends on !BR2_STATIC_LIBS # python + select BR2_PACKAGE_PYTHON + help + Dstat, written in Python, is a versatile replacement for + vmstat, iostat, netstat and ifstat. Dstat overcomes some of + their limitations and adds some extra features, more counters + and flexibility. Dstat is handy for monitoring systems during + performance tuning tests, benchmarks or troubleshooting. + Dstat allows you to view all of your system resources in + real-time, you can e.g. compare disk utilization in + combination with interrupts from your IDE controller, or + compare the network bandwidth numbers directly with the disk + throughput (in the same interval). + + Note that to get proper output, your terminal size should be + known by the termios subsystem. This can be done by running + the 'resize' utility of busybox. + + http://dag.wieers.com/home-made/dstat/ + +comment "dstat needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/dstat/dstat.hash b/buildroot/package/dstat/dstat.hash new file mode 100644 index 0000000..a4dbcc9 --- /dev/null +++ b/buildroot/package/dstat/dstat.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 46e63821857b69fbc60cb2c7d893ccdd6f31cd9ef24b8bb0b68951e1c7374898 dstat-0.7.3.tar.gz diff --git a/buildroot/package/dstat/dstat.mk b/buildroot/package/dstat/dstat.mk new file mode 100644 index 0000000..9c4b445 --- /dev/null +++ b/buildroot/package/dstat/dstat.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# dstat +# +################################################################################ + +DSTAT_VERSION = 0.7.3 +DSTAT_SITE = $(call github,dagwieers,dstat,$(DSTAT_VERSION)) +DSTAT_LICENSE = GPL-2.0 +DSTAT_LICENSE_FILES = COPYING + +define DSTAT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dt-utils/0001-common-Rename-strlcpy-to-DT_strlcpy.patch b/buildroot/package/dt-utils/0001-common-Rename-strlcpy-to-DT_strlcpy.patch new file mode 100644 index 0000000..79c43d6 --- /dev/null +++ b/buildroot/package/dt-utils/0001-common-Rename-strlcpy-to-DT_strlcpy.patch @@ -0,0 +1,58 @@ +From 3d229cc0f8dc81335c53b1f7471ef82ef2f6e570 Mon Sep 17 00:00:00 2001 +From: Marcin Niestroj +Date: Fri, 23 Jun 2017 11:11:04 +0200 +Subject: [PATCH] common: Rename strlcpy to DT_strlcpy +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +strlcpy function is defined in uClibc library, causing "static +declaration of ‘strlcpy’ follows non-static declaration" build +errors. + +Rename internal strlcpy function to DT_strlcpy to avoid conflicts. + +Signed-off-by: Marcin Niestroj +--- + src/dt/common.h | 4 ++-- + src/libdt.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/dt/common.h b/src/dt/common.h +index f6bad44..992e28f 100644 +--- a/src/dt/common.h ++++ b/src/dt/common.h +@@ -168,7 +168,7 @@ static inline char *barebox_asprintf(const char *fmt, ...) + #define basprintf(fmt, arg...) barebox_asprintf(fmt, ##arg) + + /** +- * strlcpy - Copy a %NUL terminated string into a sized buffer ++ * DT_strlcpy - Copy a %NUL terminated string into a sized buffer + * @dest: Where to copy the string to + * @src: Where to copy the string from + * @size: size of destination buffer +@@ -178,7 +178,7 @@ static inline char *barebox_asprintf(const char *fmt, ...) + * of course, the buffer size is zero). It does not pad + * out the result like strncpy() does. + */ +-static inline size_t strlcpy(char *dest, const char *src, size_t size) ++static inline size_t DT_strlcpy(char *dest, const char *src, size_t size) + { + size_t ret = strlen(src); + +diff --git a/src/libdt.c b/src/libdt.c +index 4db5160..3adeed2 100644 +--- a/src/libdt.c ++++ b/src/libdt.c +@@ -1503,7 +1503,7 @@ int of_modalias_node(struct device_node *node, char *modalias, int len) + if (!compatible || strlen(compatible) > cplen) + return -ENODEV; + p = strchr(compatible, ','); +- strlcpy(modalias, p ? p + 1 : compatible, len); ++ DT_strlcpy(modalias, p ? p + 1 : compatible, len); + return 0; + } + +-- +2.13.1 + diff --git a/buildroot/package/dt-utils/0002-common-Include-sys-types.h-header.patch b/buildroot/package/dt-utils/0002-common-Include-sys-types.h-header.patch new file mode 100644 index 0000000..a49d468 --- /dev/null +++ b/buildroot/package/dt-utils/0002-common-Include-sys-types.h-header.patch @@ -0,0 +1,38 @@ +From b8bc4e83bf447b6330ece54e94a1684d12ecdd0b Mon Sep 17 00:00:00 2001 +From: Marcin Niestroj +Date: Fri, 23 Jun 2017 12:00:30 +0200 +Subject: [PATCH] common: Include sys/types.h header +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Build with musl library fails with following error: + +In file included from src/crypto/sha1.c:21:0: +./src/digest.h:95:10: error: unknown type name ‘ulong’ + ulong start, ulong size); +... + +Fix that by including sys/types.h header in common.h, so ulong type +is defined with musl library. + +Signed-off-by: Marcin Niestroj +--- + src/dt/common.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/dt/common.h b/src/dt/common.h +index 992e28f..1425c53 100644 +--- a/src/dt/common.h ++++ b/src/dt/common.h +@@ -13,6 +13,7 @@ + + #include + #include ++#include + + #include + +-- +2.13.1 + diff --git a/buildroot/package/dt-utils/Config.in b/buildroot/package/dt-utils/Config.in new file mode 100644 index 0000000..7c9a1de --- /dev/null +++ b/buildroot/package/dt-utils/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DT_UTILS + bool "dt-utils" + depends on BR2_PACKAGE_HAS_UDEV + help + Tools for flattened device-tree dumping and barebox state + manipulation. + + https://git.pengutronix.de/cgit/tools/dt-utils/ + +comment "dt-utils needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/dt-utils/dt-utils.mk b/buildroot/package/dt-utils/dt-utils.mk new file mode 100644 index 0000000..5b13750 --- /dev/null +++ b/buildroot/package/dt-utils/dt-utils.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# dt-utils +# +################################################################################ + +DT_UTILS_VERSION = v2017.03.0 +DT_UTILS_SITE = https://git.pengutronix.de/git/tools/dt-utils +DT_UTILS_SITE_METHOD = git +DT_UTILS_LICENSE = GPL-2.0 +DT_UTILS_LICENSE_FILES = COPYING +DT_UTILS_DEPENDENCIES = udev +DT_UTILS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/dt/0001-adjust-os-symlink.patch b/buildroot/package/dt/0001-adjust-os-symlink.patch new file mode 100644 index 0000000..1af9d64 --- /dev/null +++ b/buildroot/package/dt/0001-adjust-os-symlink.patch @@ -0,0 +1,19 @@ +Don't force build-dir-in-build-dir logic, symlink the os-specific SCSI +support file in place. + +Status: not suitable for upstream. + +Signed-off-by: Gustavo Zacarias + +diff -Nura Makefile.linux Makefile.linux +--- a/Makefile.linux 2016-01-26 09:10:03.939963780 -0300 ++++ b/Makefile.linux 2016-01-26 09:10:27.140763863 -0300 +@@ -129,7 +129,7 @@ + echo "Please specify OS={aix,linux,hpux,solaris,windows}"; \ + exit 1; \ + fi; \ +- ln -sf ../scsilib-$(OS).c scsilib.c ++ ln -sf scsilib-$(OS).c scsilib.c + + print:; + @$(PRINTER) $(PRINTFLAGS) $(ALL_CFILES) diff --git a/buildroot/package/dt/0002-dt-default-source-define.patch b/buildroot/package/dt/0002-dt-default-source-define.patch new file mode 100644 index 0000000..8c9daae --- /dev/null +++ b/buildroot/package/dt/0002-dt-default-source-define.patch @@ -0,0 +1,20 @@ +Patch taken from Fedora: +http://pkgs.fedoraproject.org/cgit/rpms/dt.git/commit/dt-default-source-define.patch?id=a3107b34a3efc6af66a5f892514f233bb66eb6b5 + +_BSD_SOURCE was deprecated, hence switch to use _DEFAULT_SOURCE as well +to avoid the build from breaking on newer toolchains. + +Signed-off-by: Gustavo Zacarias + +diff -rupN dt.v18.32.old/common.h dt.v18.32/common.h +--- dt.v18.32.old/common.h 2013-03-01 23:52:30.000000000 +0100 ++++ dt.v18.32/common.h 2014-09-24 17:41:40.777604710 +0200 +@@ -127,7 +127,7 @@ typedef volatile slarge_t v_slarge; + + #endif /* defined(_WIN64) */ + +-#elif defined(__GNUC__) && defined(_BSD_SOURCE) || defined(SCO) || defined(__QNXNTO__) || defined(SOLARIS) || defined(HP_UX) || defined(AIX) || defined(_NT_SOURCE) ++#elif defined(__GNUC__) && defined(_BSD_SOURCE) || defined (_DEFAULT_SOURCE) || defined(SCO) || defined(__QNXNTO__) || defined(SOLARIS) || defined(HP_UX) || defined(AIX) || defined(_NT_SOURCE) + + #define QuadIsLongLong + typedef unsigned long long int large_t; diff --git a/buildroot/package/dt/Config.in b/buildroot/package/dt/Config.in new file mode 100644 index 0000000..826a66e --- /dev/null +++ b/buildroot/package/dt/Config.in @@ -0,0 +1,21 @@ +comment "dt needs a glibc or uClibc toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_DT + bool "dt" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + # Build fails because of several BSDisms + depends on !BR2_TOOLCHAIN_USES_MUSL + help + dt is a generic data test program used to verify proper + operation of peripherals, file systems, device drivers, + or any data stream supported by the operating system. + In its' simplest mode of operation, dt writes and then + verifys its' default data pattern, then displays + performance statisics and other test parameters + before exiting. Since verification of data is performed, + dt can be thought of as a generic diagnostic tool. + + http://www.scsifaq.org/RMiller_Tools/dt.html diff --git a/buildroot/package/dt/dt.hash b/buildroot/package/dt/dt.hash new file mode 100644 index 0000000..7cd8c64 --- /dev/null +++ b/buildroot/package/dt/dt.hash @@ -0,0 +1,5 @@ +# From http://pkgs.fedoraproject.org/repo/pkgs/dt/dt-source-v18.32.tar.gz +# (directory name is md5 hash) +md5 3054aeaaba047a1dbe90c2132a382ee2 dt-source-v18.32.tar.gz +# Calculated based on the hash above +sha256 10d164676e918a4d07f233bcd11e4cb6bfd1052c996182cd1827ccd0c063fcc6 dt-source-v18.32.tar.gz diff --git a/buildroot/package/dt/dt.mk b/buildroot/package/dt/dt.mk new file mode 100644 index 0000000..8ec7788 --- /dev/null +++ b/buildroot/package/dt/dt.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# dt +# +################################################################################ + +DT_VERSION = v18.32 +DT_SITE = http://pkgs.fedoraproject.org/repo/pkgs/dt/$(DT_SOURCE)/3054aeaaba047a1dbe90c2132a382ee2 +DT_SOURCE = dt-source-$(DT_VERSION).tar.gz +DT_STRIP_COMPONENTS = 2 +DT_LICENSE = ISC-like +DT_LICENSE_FILES = LICENSE + +DT_CFLAGS = \ + -std=c99 \ + -DMMAP \ + -D__linux__ \ + -D_GNU_SOURCE \ + -D_FILE_OFFSET_BITS=64 \ + -DTHREADS \ + -DSCSI + +# uClibc doesn't provide POSIX AIO +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),) +DT_CFLAGS += -DAIO +endif + +define DT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) -f Makefile.linux \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) $(DT_CFLAGS)" \ + OS=linux +endef + +define DT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/dt $(TARGET_DIR)/usr/bin/dt +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dtach/Config.in b/buildroot/package/dtach/Config.in new file mode 100644 index 0000000..3e6e493 --- /dev/null +++ b/buildroot/package/dtach/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_DTACH + bool "dtach" + depends on BR2_USE_MMU # fork() + help + dtach is a tiny program that emulates the detach feature of + screen, allowing you to run a program in an environment that + is protected from the controlling terminal and attach to it + later. + + http://dtach.sourceforge.net/ diff --git a/buildroot/package/dtach/dtach.hash b/buildroot/package/dtach/dtach.hash new file mode 100644 index 0000000..c643264 --- /dev/null +++ b/buildroot/package/dtach/dtach.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 5f7e8c835ee49a9e6dcf89f4e8ccbe724b061c0fc8565b504dd8b3e67ab79f82 dtach-v0.9.tar.gz diff --git a/buildroot/package/dtach/dtach.mk b/buildroot/package/dtach/dtach.mk new file mode 100644 index 0000000..571481c --- /dev/null +++ b/buildroot/package/dtach/dtach.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# dtach +# +################################################################################ + +DTACH_VERSION = v0.9 +DTACH_SITE = $(call github,crigler,dtach,$(DTACH_VERSION)) +DTACH_LICENSE = GPL-2.0+ +DTACH_LICENSE_FILES = COPYING + +# The Makefile does not have an install target. +define DTACH_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/dtach $(TARGET_DIR)/usr/bin/dtach +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/dtc/Config.in b/buildroot/package/dtc/Config.in new file mode 100644 index 0000000..73bd368 --- /dev/null +++ b/buildroot/package/dtc/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_DTC + bool "dtc (libfdt)" + depends on !BR2_STATIC_LIBS + help + The Device Tree Compiler, dtc, takes as input a device-tree in + a given format and outputs a device-tree in another format. + + Note that only the library is installed. + If you want the programs, say 'y' here, and to "dtc programs", + below. + + https://git.kernel.org/cgit/utils/dtc/dtc.git + +if BR2_PACKAGE_DTC + +config BR2_PACKAGE_DTC_PROGRAMS + bool "dtc programs" + help + Say 'y' here if you also want the programs on the target: + - convert-dtsv0 convert from version 0 to version 1 + - dtc the device tree compiler + - dtdiff compare two device trees (needs bash) + - fdtdump print a readable version of a + flat device tree + - fdtget read values from device tree + - fdtput write a property value to a device tree + + Note: dtdiff requires bash, so if bash is not selected, dtdiff + will be removed from the target file system. Enable bash if + you need dtdiff on the target. + +comment "dtdiff will not be installed: it requires bash" + depends on BR2_PACKAGE_DTC_PROGRAMS + depends on !BR2_PACKAGE_BASH + +endif + +comment "dtc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/dtc/Config.in.host b/buildroot/package/dtc/Config.in.host new file mode 100644 index 0000000..f80a49b --- /dev/null +++ b/buildroot/package/dtc/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_DTC + bool "host dtc" + help + The Device Tree Compiler, dtc, takes as input a device-tree in + a given format and outputs a device-tree in another format. + + Install host tools: dtc, convert-dtsv0, fdtdump, fdtget and + fdtput. + + https://git.kernel.org/cgit/utils/dtc/dtc.git diff --git a/buildroot/package/dtc/dtc.hash b/buildroot/package/dtc/dtc.hash new file mode 100644 index 0000000..75c2e40 --- /dev/null +++ b/buildroot/package/dtc/dtc.hash @@ -0,0 +1,2 @@ +# from https://www.kernel.org/pub/software/utils/dtc/sha256sums.asc +sha256 470731d5c015b160d26a96645dbb1c7337d6e7b8c98244612002b66bedf6cffb dtc-1.4.4.tar.xz diff --git a/buildroot/package/dtc/dtc.mk b/buildroot/package/dtc/dtc.mk new file mode 100644 index 0000000..1bcee29 --- /dev/null +++ b/buildroot/package/dtc/dtc.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# dtc +# +################################################################################ + +DTC_VERSION = 1.4.4 +DTC_SOURCE = dtc-$(DTC_VERSION).tar.xz +DTC_SITE = https://www.kernel.org/pub/software/utils/dtc +DTC_LICENSE = GPL-2.0+ or BSD-2-Clause (library) +DTC_LICENSE_FILES = README.license GPL +DTC_INSTALL_STAGING = YES +DTC_DEPENDENCIES = host-bison host-flex +HOST_DTC_DEPENDENCIES = host-bison host-flex + +define DTC_POST_INSTALL_TARGET_RM_DTDIFF + rm -f $(TARGET_DIR)/usr/bin/dtdiff +endef + +ifeq ($(BR2_PACKAGE_DTC_PROGRAMS),y) + +DTC_LICENSE := $(DTC_LICENSE), GPL-2.0+ (programs) +DTC_INSTALL_GOAL = install +ifeq ($(BR2_PACKAGE_BASH),) +DTC_POST_INSTALL_TARGET_HOOKS += DTC_POST_INSTALL_TARGET_RM_DTDIFF +endif + +else # $(BR2_PACKAGE_DTC_PROGRAMS) != y + +DTC_INSTALL_GOAL = install-lib + +endif # $(BR2_PACKAGE_DTC_PROGRAMS) != y + +define DTC_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) CFLAGS="$(TARGET_CFLAGS) -fPIC" -C $(@D) PREFIX=/usr +endef + +# For staging, only the library is needed +define DTC_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) PREFIX=/usr install-lib \ + install-includes +endef + +define DTC_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) PREFIX=/usr $(DTC_INSTALL_GOAL) +endef + +# host build +define HOST_DTC_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) CFLAGS="$(HOST_CFLAGS) -fPIC" -C $(@D) PREFIX=$(HOST_DIR) +endef + +define HOST_DTC_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/dtv-scan-tables/Config.in b/buildroot/package/dtv-scan-tables/Config.in new file mode 100644 index 0000000..e102ca7 --- /dev/null +++ b/buildroot/package/dtv-scan-tables/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_DTV_SCAN_TABLES + bool "dtv-scan-tables" + help + The Digital TV scan tables. + + http://git.linuxtv.org/dtv-scan-tables.git diff --git a/buildroot/package/dtv-scan-tables/dtv-scan-tables.hash b/buildroot/package/dtv-scan-tables/dtv-scan-tables.hash new file mode 100644 index 0000000..02f086d --- /dev/null +++ b/buildroot/package/dtv-scan-tables/dtv-scan-tables.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 ec64aa81a207372340a04d3e9e950ff2f8b4f404580f21480cdbf06019057a9f dtv-scan-tables-ceb11833b35f05813b1f0397a60e0f3b99430aab.tar.gz diff --git a/buildroot/package/dtv-scan-tables/dtv-scan-tables.mk b/buildroot/package/dtv-scan-tables/dtv-scan-tables.mk new file mode 100644 index 0000000..3c546ed --- /dev/null +++ b/buildroot/package/dtv-scan-tables/dtv-scan-tables.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# dtv-scan-tables +# +################################################################################ + +DTV_SCAN_TABLES_VERSION = ceb11833b35f05813b1f0397a60e0f3b99430aab +DTV_SCAN_TABLES_SITE = http://git.linuxtv.org/cgit.cgi/dtv-scan-tables.git +DTV_SCAN_TABLES_SITE_METHOD = git + +# This package only contains the transponders data. This is not a 'work' +# as per traditional copyright, but just a collection of 'facts', so there's +# probably no license to apply to these data files. +# However, the package prominently contains the COPYING and COPYING.LIB +# license files (respectively for the GPL-2.0 and the LGPL-2.1), so we use +# that as the licensing information. +DTV_SCAN_TABLES_LICENSE = GPL-2.0, LGPL-2.1 +DTV_SCAN_TABLES_LICENSE_FILES = COPYING COPYING.LGPL + +# In order to avoid issues with file name encodings, we rename the +# only dtv-scan-tables file that has non-ASCII characters to have a +# name using only ASCII characters (pl-Krosno_Sucha_Gora) +define DTV_SCAN_TABLES_FIX_NONASCII_FILENAMES + mv $(@D)/dvb-t/pl-Krosno_Sucha* $(@D)/dvb-t/pl-Krosno_Sucha_Gora +endef + +DTV_SCAN_TABLES_POST_PATCH_HOOKS += DTV_SCAN_TABLES_FIX_NONASCII_FILENAMES + +define DTV_SCAN_TABLES_INSTALL_TARGET_CMDS + for f in atsc dvb-c dvb-s dvb-t; do \ + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/dvb/$$f; \ + $(INSTALL) $(@D)/$$f/* $(TARGET_DIR)/usr/share/dvb/$$f; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/duma/0001-fix-cross-compilation.patch b/buildroot/package/duma/0001-fix-cross-compilation.patch new file mode 100644 index 0000000..eceaf06 --- /dev/null +++ b/buildroot/package/duma/0001-fix-cross-compilation.patch @@ -0,0 +1,37 @@ +Allow cross compilation. Adapted from crosstool-ng. + +Signed-off-by: Baruch Siach + +Index: b/GNUmakefile +=================================================================== +--- a/GNUmakefile ++++ b/GNUmakefile +@@ -93,10 +93,6 @@ + # also define 'WIN32' + + # some defaults: +-CC=gcc +-CXX=g++ +-AR=ar +-RANLIB=ranlib + INSTALL=install + RM=rm + RMFORCE=rm -f +@@ -471,7 +467,7 @@ + + createconf$(EXEPOSTFIX): createconf.o + - $(RMFORCE) createconf$(EXEPOSTFIX) +- $(CC) $(CFLAGS) $(DUMA_OPTIONS) createconf.o -o createconf$(EXEPOSTFIX) ++ $(CC_FOR_BUILD) $(HOST_CFLAGS) $(DUMA_OPTIONS) createconf.o -o createconf$(EXEPOSTFIX) + + tstheap$(EXEPOSTFIX): libduma.a tstheap.o + - $(RMFORCE) tstheap$(EXEPOSTFIX) +@@ -532,7 +528,7 @@ + # define rules how to build objects for createconf + # + createconf.o: +- $(CC) $(CFLAGS) $(DUMA_OPTIONS) -c createconf.c -o $@ ++ $(CC_FOR_BUILD) $(HOST_CFLAGS) $(DUMA_OPTIONS) -c createconf.c -o $@ + + + # diff --git a/buildroot/package/duma/0002-no-tests.patch b/buildroot/package/duma/0002-no-tests.patch new file mode 100644 index 0000000..6fe76f7 --- /dev/null +++ b/buildroot/package/duma/0002-no-tests.patch @@ -0,0 +1,19 @@ +Do not build test programs + +Biulding test programs does not work when we want to do a static link, +because duma.a redefines memcpy and strcpy, so the link fails. + +Signed-off-by: "Yann E. MORIN" + +diff -durN duma-2.5.15.orig/GNUmakefile duma-2.5.15/GNUmakefile +--- duma-2.5.15.orig/GNUmakefile 2014-11-16 14:47:05.874448560 +0100 ++++ duma-2.5.15/GNUmakefile 2014-11-16 14:54:50.792048921 +0100 +@@ -294,7 +294,7 @@ + SO_OBJECTS=dumapp_so.o duma_so.o sem_inc_so.o print_so.o + + # Make all the top-level targets the makefile knows about. +-all: libduma.a tstheap$(EXEPOSTFIX) dumatest$(EXEPOSTFIX) thread-test$(EXEPOSTFIX) testmt$(EXEPOSTFIX) dumatestpp$(EXEPOSTFIX) testoperators$(EXEPOSTFIX) $(DUMA_DYN_DEPS) ++all: libduma.a $(DUMA_DYN_DEPS) + + # Perform self tests on the program this makefile builds. + check test: diff --git a/buildroot/package/duma/0003-fix-C++14.patch b/buildroot/package/duma/0003-fix-C++14.patch new file mode 100644 index 0000000..d19213c --- /dev/null +++ b/buildroot/package/duma/0003-fix-C++14.patch @@ -0,0 +1,65 @@ +dumapp: fix for C++14 + +With C++14, the way exceptions are specified has changed (somehow, don't +ask me), thus causing build failures: + + dumapp.cpp: In function ‘void* operator new(std::size_t)’: + dumapp.cpp:192:19: error: declaration of ‘void* operator new(std::size_t) throw (std::bad_alloc)’ has a different exception specifier + void * DUMA_CDECL operator new( DUMA_SIZE_T size ) + ^~~~~~~~ + In file included from dumapp.cpp:39:0: + dumapp.h:91:23: note: from previous declaration ‘void* operator new(std::size_t)’ + void * DUMA_CDECL operator new(DUMA_SIZE_T) throw(std::bad_alloc); + ^~~~~~~~ + +This is most evident with gcc-6.x, since the default C++ standard has +changed from C++11 to C++14, thus exposing these new failures. + +Fix that by guarding the exception handling, a bit like was done +with GRASS GIS (thanks DuckDuckGo): + + https://trac.osgeo.org/grass/changeset?old_path=%2F&old=68817&new_path=%2F&new=68818&sfp_email=&sfph_mail= + +Signed-off-by: "Yann E. MORIN" + +--- +Note: The last commit in DUMA's CVS repo was more than 7 years ago. +I doubt it is still active, so the patch was not sent upstream. :-/ + +diff -durN duma-2.5.15.orig/dumapp.cpp duma-2.5.15/dumapp.cpp +--- duma-2.5.15.orig/dumapp.cpp 2008-08-03 22:46:06.000000000 +0200 ++++ duma-2.5.15/dumapp.cpp 2016-07-10 21:55:22.670386099 +0200 +@@ -190,7 +190,9 @@ + * (11) = (a) ; ASW + */ + void * DUMA_CDECL operator new( DUMA_SIZE_T size ) ++#ifdef DUMA_EXCEPTION_SPECS + throw(std::bad_alloc) ++#endif + { + return duma_new_operator(size, EFA_NEW_ELEM, true DUMA_PARAMS_UK); + } +@@ -254,7 +256,9 @@ + * (21) = (a) ; AAW + */ + void * DUMA_CDECL operator new[]( DUMA_SIZE_T size ) ++#ifdef DUMA_EXCEPTION_SPECS + throw(std::bad_alloc) ++#endif + { + return duma_new_operator(size, EFA_NEW_ARRAY, true DUMA_PARAMS_UK); + } +diff -durN duma-2.5.15.orig/dumapp.h duma-2.5.15/dumapp.h +--- duma-2.5.15.orig/dumapp.h 2009-04-11 14:41:44.000000000 +0200 ++++ duma-2.5.15/dumapp.h 2016-07-10 21:55:22.670386099 +0200 +@@ -35,6 +35,10 @@ + + #include "duma.h" + ++#if __cplusplus < 201103L ++ #define DUMA_EXCEPTION_SPECS 1 ++#endif ++ + /* remove previous macro definitions */ + #include "noduma.h" + diff --git a/buildroot/package/duma/Config.in b/buildroot/package/duma/Config.in new file mode 100644 index 0000000..b1f55fa --- /dev/null +++ b/buildroot/package/duma/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_DUMA + bool "duma" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + # By design, duma uses page mapping to isolate + # allocations. Non-MMU platforms cannot perform such + # things. + depends on BR2_USE_MMU + # duma works using LD_PRELOAD, so it always needs to build a + # shared library + depends on !BR2_STATIC_LIBS + help + D.U.M.A. - Detect Unintended Memory Access. A fork of the + Electric Fence library. Detects buffer overflow and + underflow, and also memory leaks. + + http://duma.sourceforge.net + +if BR2_PACKAGE_DUMA + +config BR2_PACKAGE_DUMA_NO_LEAKDETECTION + bool "disable memory leak detection" + +endif # BR2_PACKAGE_DUMA + +comment "duma needs a toolchain w/ C++, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/duma/duma.hash b/buildroot/package/duma/duma.hash new file mode 100644 index 0000000..f664d40 --- /dev/null +++ b/buildroot/package/duma/duma.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 baaf794854e3093ad1bddadbfb8ad4b220a7117d70359ee216bd59e353734e17 duma_2_5_15.tar.gz diff --git a/buildroot/package/duma/duma.mk b/buildroot/package/duma/duma.mk new file mode 100644 index 0000000..0e8a623 --- /dev/null +++ b/buildroot/package/duma/duma.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# duma +# +################################################################################ + +DUMA_VERSION = 2.5.15 +DUMA_SOURCE = duma_$(subst .,_,$(DUMA_VERSION)).tar.gz +DUMA_SITE = http://downloads.sourceforge.net/project/duma/duma/$(DUMA_VERSION) +DUMA_LICENSE = GPL-2.0+, LGPL-2.1+ +DUMA_LICENSE_FILES = COPYING-GPL COPYING-LGPL + +DUMA_INSTALL_STAGING = YES + +DUMA_OPTIONS = \ + $(if $(BR2_PACKAGE_DUMA_NO_LEAKDETECTION),-DDUMA_LIB_NO_LEAKDETECTION) + +# The dependency of some source files in duma_config.h, which is generated at +# build time, is not specified in the Makefile. Force non-parallel build. +define DUMA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) \ + OS=linux \ + DUMA_OPTIONS="$(DUMA_OPTIONS)" \ + $(DUMA_CPP) -C $(@D) +endef + +define DUMA_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) OS=linux prefix=$(STAGING_DIR)/usr install -C $(@D) +endef + +define DUMA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) OS=linux prefix=$(TARGET_DIR)/usr install -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dump1090/Config.in b/buildroot/package/dump1090/Config.in new file mode 100644 index 0000000..c796fae --- /dev/null +++ b/buildroot/package/dump1090/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_DUMP1090 + bool "dump1090" + depends on BR2_TOOLCHAIN_HAS_THREADS # librtlsdr + select BR2_PACKAGE_LIBRTLSDR + help + Dump1090 is a simple Mode S decoder for RTLSDR devices + + https://github.com/MalcolmRobb/dump1090 + +comment "dump1090 needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/dump1090/dump1090.hash b/buildroot/package/dump1090/dump1090.hash new file mode 100644 index 0000000..fbbf21a --- /dev/null +++ b/buildroot/package/dump1090/dump1090.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 72c1a94f3e6788af1e72b8cac13bb53e0989fe02cd13e191133f5519d2a2fefb dump1090-bff92c4ad772a0a8d433f788d39dae97e00e4dbe.tar.gz +sha256 29046ef7ee0b7b127bcc64faf135035820906dea2b379b2efcfc119131a39f7a anet.h diff --git a/buildroot/package/dump1090/dump1090.mk b/buildroot/package/dump1090/dump1090.mk new file mode 100644 index 0000000..69fd679 --- /dev/null +++ b/buildroot/package/dump1090/dump1090.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# dump1090 +# +################################################################################ + +DUMP1090_VERSION = bff92c4ad772a0a8d433f788d39dae97e00e4dbe +DUMP1090_SITE = $(call github,MalcolmRobb,dump1090,$(DUMP1090_VERSION)) +DUMP1090_LICENSE = BSD-3-Clause +# no real license file +DUMP1090_LICENSE_FILES = anet.h +DUMP1090_DEPENDENCIES = host-pkgconf librtlsdr + +define DUMP1090_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) PREFIX=/usr -C $(@D) +endef + +define DUMP1090_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/dump1090 $(TARGET_DIR)/usr/bin/dump1090 + $(INSTALL) -m 0755 -D $(@D)/view1090 $(TARGET_DIR)/usr/bin/view1090 + $(INSTALL) -d $(TARGET_DIR)/usr/share/dump1090 + cp -r $(@D)/public_html/* $(TARGET_DIR)/usr/share/dump1090 +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dvb-apps/0001-Fix-generate-keynames.patch b/buildroot/package/dvb-apps/0001-Fix-generate-keynames.patch new file mode 100644 index 0000000..498607d --- /dev/null +++ b/buildroot/package/dvb-apps/0001-Fix-generate-keynames.patch @@ -0,0 +1,30 @@ +Fix generate-keynames.sh script for cross-compilation + +generate-keynames.sh reads /usr/include/linux to find the keyname +symbols. However, when cross-compiling, the include path points +somewhere else. Allow the user to pass CROSS_ROOT to point to the +root of the cross-compilation environment. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- +diff -rup dvb-apps-83c746462ccb.orig/util/av7110_loadkeys/generate-keynames.sh dvb-apps-83c746462ccb/util/av7110_loadkeys/generate-keynames.sh +--- dvb-apps-83c746462ccb.orig/util/av7110_loadkeys/generate-keynames.sh 2012-12-06 10:38:07.000000000 +0100 ++++ dvb-apps-83c746462ccb/util/av7110_loadkeys/generate-keynames.sh 2013-08-29 21:47:09.717991439 +0200 +@@ -18,7 +18,7 @@ echo "};" >> $1 + echo >> $1 + echo >> $1 + echo "static struct input_key_name key_name [] = {" >> $1 +-for x in $(cat /usr/include/linux/input.h input_fake.h | \ ++for x in $(cat ${CROSS_ROOT}/usr/include/linux/input.h input_fake.h | \ + egrep "#define[ \t]+KEY_" | grep -v KEY_MAX | \ + cut -f 1 | cut -f 2 -d " " | sort -u) ; do + echo " { \"$(echo $x | cut -b 5-)\", $x }," >> $1 +@@ -26,7 +26,7 @@ done + echo "};" >> $1 + echo >> $1 + echo "static struct input_key_name btn_name [] = {" >> $1 +-for x in $(cat /usr/include/linux/input.h input_fake.h | \ ++for x in $(cat ${CROSS_ROOT}/usr/include/linux/input.h input_fake.h | \ + egrep "#define[ \t]+BTN_" | \ + cut -f 1 | cut -f 2 -d " " | sort -u) ; do + echo " { \"$(echo $x | cut -b 5-)\", $x }," >> $1 diff --git a/buildroot/package/dvb-apps/0002-Fix-compiler-warning-flags.patch b/buildroot/package/dvb-apps/0002-Fix-compiler-warning-flags.patch new file mode 100644 index 0000000..9c6276b --- /dev/null +++ b/buildroot/package/dvb-apps/0002-Fix-compiler-warning-flags.patch @@ -0,0 +1,44 @@ +From 9b8f1df41f7579da63c27763ff184d351e4c7fef Mon Sep 17 00:00:00 2001 +From: Simon Dawson +Date: Sun, 4 Jan 2015 12:06:18 +0100 +Subject: [PATCH] Fix compiler warning flags + + When building for bfin, the build fails as follows. + + cc1: error: unrecognized command line option "-Wno-packed-bitfield-compat" + +An example of an autobuild failure arising from this is the following. + + http://autobuild.buildroot.net/results/92e/92e472004812a3616f62d766a9ea07a997a66e89/ + http://autobuild.buildroot.net/results/6e7/6e7b48ad9768349d983985c3067c4267cde80541/ + +Clearly, not all toolchains provide a gcc that understands +the -Wno-packed-bitfield-compat flag; remove usage of this flag. + +Wno-packed-bitfield-compat option was added in gcc 4.4. + +[Romain: + - This patch is also needed for bfin toolchains which use gcc 4.3.5 + - Add a link to bfin build failure] +Signed-off-by: Simon Dawson +Signed-off-by: Romain Naour +--- + util/scan/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util/scan/Makefile b/util/scan/Makefile +index d48c478..88667c5 100644 +--- a/util/scan/Makefile ++++ b/util/scan/Makefile +@@ -14,7 +14,7 @@ inst_bin = $(binaries) + + removing = atsc_psip_section.c atsc_psip_section.h + +-CPPFLAGS += -Wno-packed-bitfield-compat -D__KERNEL_STRICT_NAMES ++CPPFLAGS += -D__KERNEL_STRICT_NAMES + + .PHONY: all + +-- +1.9.3 + diff --git a/buildroot/package/dvb-apps/0003-handle-static-shared-only-build.patch b/buildroot/package/dvb-apps/0003-handle-static-shared-only-build.patch new file mode 100644 index 0000000..4dc7c68 --- /dev/null +++ b/buildroot/package/dvb-apps/0003-handle-static-shared-only-build.patch @@ -0,0 +1,44 @@ +From a826c7c722db40bfedf00e51ce38411550ae8216 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 25 Dec 2014 19:22:16 +0100 +Subject: [PATCH] Make.rules: Handle static/shared only build + +Do not build .a library when enable_static is set to "no" +Do not build .so library when enable_shared is set to "no" + +Signed-off-by: Romain Naour +--- + Make.rules | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/Make.rules b/Make.rules +index 3410d7b..d274e16 100644 +--- a/Make.rules ++++ b/Make.rules +@@ -9,7 +9,13 @@ ifneq ($(lib_name),) + CFLAGS_LIB ?= -fPIC + CFLAGS += $(CFLAGS_LIB) + +-libraries = $(lib_name).so $(lib_name).a ++ifneq ($(enable_static),no) ++libraries += $(lib_name).a ++endif ++ ++ifneq ($(enable_shared),no) ++libraries += $(lib_name).so ++endif + + .PHONY: library + +@@ -23,7 +29,7 @@ prerequisites = $(subst .o,.d,$(objects)) $(addsuffix .d,$(binaries)) + + .PHONY: clean install + +-ifeq ($(static),1) ++ifneq ($(enable_static),no) + LDFLAGS += -static + endif + +-- +1.9.3 + diff --git a/buildroot/package/dvb-apps/0004-Makefile-remove-test.patch b/buildroot/package/dvb-apps/0004-Makefile-remove-test.patch new file mode 100644 index 0000000..45bfad9 --- /dev/null +++ b/buildroot/package/dvb-apps/0004-Makefile-remove-test.patch @@ -0,0 +1,27 @@ +From c578772d6abc5fdf3ec83f632c371373e5baf9f1 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 26 Dec 2014 01:04:58 +0100 +Subject: [PATCH] Makefile: remove test + +Tests needs static libraries, remove them for shared only build. + +Signed-off-by: Romain Naour +--- + Makefile | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 65a2273..105c460 100644 +--- a/Makefile ++++ b/Makefile +@@ -10,7 +10,6 @@ DVB_API_MINOR := $(word 3, $(shell grep -m1 "DVB_API_VERSION_MINOR" $(VERSION_FI + + all clean install: + $(MAKE) -C lib $@ +- $(MAKE) -C test $@ + $(MAKE) -C util $@ + + update: +-- +1.9.3 + diff --git a/buildroot/package/dvb-apps/0005-utils-fix-build-with-kernel-headers-4.14.patch b/buildroot/package/dvb-apps/0005-utils-fix-build-with-kernel-headers-4.14.patch new file mode 100644 index 0000000..279cdec --- /dev/null +++ b/buildroot/package/dvb-apps/0005-utils-fix-build-with-kernel-headers-4.14.patch @@ -0,0 +1,52 @@ +# HG changeset patch +# User "Yann E. MORIN" +# Date 1511772629 -3600 +# Mon Nov 27 09:50:29 2017 +0100 +# Branch yem/fixes +# Node ID 0848fa96c6eb13cf37249d317eff12cbd2f59ff7 +# Parent 3d43b280298c39a67d1d889e01e173f52c12da35 +utils: fix build with kernel headers >= 4.14 + +In kernel 4.14, CA_SET_PID was removed, in commit 833ff5e7feda (media: +ca.h: get rid of CA_SET_PID). + +Fix dst-util to not fail the build when this is missing. + +Fiuxes build failures such as: + http://autobuild.buildroot.org/results/708/708f11809b2cafc2a3375dc515803c87b376ed4d/build-end.log + http://autobuild.buildroot.org/results/e39/e3939d44376e92e8a35fb179d9890510334d8304/build-end.log + +Signed-off-by: "Yann E. MORIN" + +diff --git a/util/dst-utils/dst_test.c b/util/dst-utils/dst_test.c +--- a/util/dst-utils/dst_test.c ++++ b/util/dst-utils/dst_test.c +@@ -111,6 +111,7 @@ + return 0; + } + ++#if defined CA_SET_PID + static int dst_set_pid(int cafd) + { + if ((ioctl(cafd, CA_SET_PID)) < 0) { +@@ -120,6 +121,7 @@ + + return 0; + } ++#endif + + static int dst_get_descr(int cafd) + { +@@ -230,8 +232,12 @@ + dst_reset(cafd); + break; + case 'p': ++#if defined CA_SET_PID + printf("%s: PID\n", __FUNCTION__); + dst_set_pid(cafd); ++#else ++ printf("%s: PID not supported\n", __FUNCTION__); ++#endif + break; + case 'g': + printf("%s: Get Desc\n", __FUNCTION__); diff --git a/buildroot/package/dvb-apps/Config.in b/buildroot/package/dvb-apps/Config.in new file mode 100644 index 0000000..75cc14e --- /dev/null +++ b/buildroot/package/dvb-apps/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_DVB_APPS + bool "dvb-apps" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Install a small number of DVB test and utility programs, + including szap and dvbscan. + + http://linuxtv.org/projects.php + http://linuxtv.org/hg/dvb-apps + +comment "dvb-apps utils needs a toolchain w/ threads, headers >= 3.3" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 diff --git a/buildroot/package/dvb-apps/dvb-apps.mk b/buildroot/package/dvb-apps/dvb-apps.mk new file mode 100644 index 0000000..ffab0db --- /dev/null +++ b/buildroot/package/dvb-apps/dvb-apps.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# dvb-apps +# +################################################################################ + +DVB_APPS_VERSION = 3d43b280298c39a67d1d889e01e173f52c12da35 +DVB_APPS_SITE = http://linuxtv.org/hg/dvb-apps +DVB_APPS_SITE_METHOD = hg +DVB_APPS_LICENSE = GPL-2.0, GPL-2.0+, LGPL-2.1+ +DVB_APPS_LICENSE_FILES = COPYING COPYING.LGPL + +ifeq ($(BR2_ENABLE_LOCALE),) +DVB_APPS_DEPENDENCIES = libiconv +DVB_APPS_LDLIBS += -liconv +endif + +DVB_APPS_MAKE_OPTS = PERL5LIB=$(@D)/util/scan + +ifeq ($(BR2_STATIC_LIBS),y) +DVB_APPS_MAKE_OPTS += enable_shared=no +else ifeq ($(BR2_SHARED_LIBS),y) +DVB_APPS_MAKE_OPTS += enable_static=no +endif + +DVB_APPS_INSTALL_STAGING = YES + +define DVB_APPS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) LDLIBS="$(DVB_APPS_LDLIBS)" \ + $(MAKE1) -C $(@D) CROSS_ROOT=$(STAGING_DIR) \ + $(DVB_APPS_MAKE_OPTS) +endef + +define DVB_APPS_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(DVB_APPS_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install +endef + +define DVB_APPS_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(DVB_APPS_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dvblast/0001-missing-lm.patch b/buildroot/package/dvblast/0001-missing-lm.patch new file mode 100644 index 0000000..2efbec4 --- /dev/null +++ b/buildroot/package/dvblast/0001-missing-lm.patch @@ -0,0 +1,29 @@ +dvblast: fix static linking + +dvblast links to -lev, wihch uses functions from the maths library, +like floor(). + +When linking to a shared libev.so, that dependency is automatically +pulled in because libev as a DT_NEEDED ELF tag on libm.so. + +But when lnking to the static libev.a, since there is no way to express +such dependencies in static libraries, libm is not pulled in, which +leads to build failures such as; + http://autobuild.buildroot.org/results/1f0/1f02f84fb926839a1adbe3af457bb909fdc44433/build-end.log + +Fix that by always linking to -lm (which must come *after* -lev). + +Signed-off-by: "Yann E. MORIN" + +diff -durN dvblast-3.0.orig/Makefile dvblast-3.0/Makefile +--- dvblast-3.0.orig/Makefile 2015-10-05 17:51:14.000000000 +0200 ++++ dvblast-3.0/Makefile 2015-10-30 15:57:19.547123894 +0100 +@@ -28,7 +28,7 @@ + LDLIBS += -lstreammaster + endif + +-LDLIBS_DVBLAST += -lpthread -lev ++LDLIBS_DVBLAST += -lpthread -lev -lm + + OBJ_DVBLAST = dvblast.o util.o dvb.o udp.o asi.o demux.o output.o en50221.o comm.o mrtg-cnt.o asi-deltacast.o + OBJ_DVBLASTCTL = util.o dvblastctl.o diff --git a/buildroot/package/dvblast/0002-fix-int-types.patch b/buildroot/package/dvblast/0002-fix-int-types.patch new file mode 100644 index 0000000..d741cc6 --- /dev/null +++ b/buildroot/package/dvblast/0002-fix-int-types.patch @@ -0,0 +1,24 @@ +Standard integer types are uintXX_t not u_intXX_t + +This fixes the build with the musl C library. + +Signed-off-by: "Yann E. MORIN" + +diff -durN dvblast-3.0.orig/dvblast.h dvblast-3.0/dvblast.h +--- dvblast-3.0.orig/dvblast.h 2015-10-05 17:51:14.000000000 +0200 ++++ dvblast-3.0/dvblast.h 2015-10-30 16:29:25.586125193 +0100 +@@ -49,10 +49,10 @@ + * Raw udp packet structure with flexible-array payload + *****************************************************************************/ + struct udpheader { // FAVOR_BSD hell ... +- u_int16_t source; +- u_int16_t dest; +- u_int16_t len; +- u_int16_t check; ++ uint16_t source; ++ uint16_t dest; ++ uint16_t len; ++ uint16_t check; + }; + + #if defined(__FreeBSD__) || defined(__APPLE__) diff --git a/buildroot/package/dvblast/Config.in b/buildroot/package/dvblast/Config.in new file mode 100644 index 0000000..c358531 --- /dev/null +++ b/buildroot/package/dvblast/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_DVBLAST + bool "dvblast" + depends on !BR2_bfin # libev + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # clock_nanosleep() + select BR2_PACKAGE_BITSTREAM + select BR2_PACKAGE_LIBEV + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + DVBlast is a simple and powerful MPEG-2/TS demux and + streaming application. + + http://www.videolan.org/projects/dvblast.html + +comment "dvblast needs a toolchain w/ NPTL" + depends on !BR2_bfin # libev + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/dvblast/dvblast.hash b/buildroot/package/dvblast/dvblast.hash new file mode 100644 index 0000000..d6ec4cb --- /dev/null +++ b/buildroot/package/dvblast/dvblast.hash @@ -0,0 +1,2 @@ +# From https://get.videolan.org/dvblast/3.1/dvblast-3.1.tar.bz2 +sha256 3159e8666a3b1822aeccd01684bdcad712a0da88d758bef6b7e2c396f27fd3e0 dvblast-3.1.tar.bz2 diff --git a/buildroot/package/dvblast/dvblast.mk b/buildroot/package/dvblast/dvblast.mk new file mode 100644 index 0000000..3cf24df --- /dev/null +++ b/buildroot/package/dvblast/dvblast.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# dvblast +# +################################################################################ + +DVBLAST_VERSION = 3.1 +DVBLAST_SOURCE = dvblast-$(DVBLAST_VERSION).tar.bz2 +DVBLAST_SITE = https://get.videolan.org/dvblast/$(DVBLAST_VERSION) +DVBLAST_LICENSE = GPL-2.0+, WTFPL +DVBLAST_LICENSE_FILES = COPYING COPYING.WTFPL +DVBLAST_DEPENDENCIES = bitstream libev + +DVBLAST_MAKE_ENV = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +DVBLAST_DEPENDENCIES += libiconv +DVBLAST_MAKE_ENV += LDLIBS=-liconv +endif + +define DVBLAST_BUILD_CMDS + $(DVBLAST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define DVBLAST_INSTALL_TARGET_CMDS + $(DVBLAST_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/dvbsnoop/0001-musl-types-h.patch b/buildroot/package/dvbsnoop/0001-musl-types-h.patch new file mode 100644 index 0000000..1149df0 --- /dev/null +++ b/buildroot/package/dvbsnoop/0001-musl-types-h.patch @@ -0,0 +1,15 @@ +Fix musl build + +Signed-off-by: Bernd Kuhls + +diff -uNr dvbsnoop-1.4.50.org/src/misc/helper.h dvbsnoop-1.4.50/src/misc/helper.h +--- dvbsnoop-1.4.50.org/src/misc/helper.h 2006-01-02 20:04:56.000000000 +0100 ++++ dvbsnoop-1.4.50/src/misc/helper.h 2016-01-24 14:35:02.000000000 +0100 +@@ -16,6 +16,7 @@ + #ifndef __HELPER_H + #define __HELPER_H + ++#include + + u_long outBit_Sx (int verbosity, const char *text, u_char *buf, int startbit, int bitlen); + u_long outBit_Sx_NL (int verbosity, const char *text, u_char *buf, int startbit, int bitlen); diff --git a/buildroot/package/dvbsnoop/Config.in b/buildroot/package/dvbsnoop/Config.in new file mode 100644 index 0000000..fb63fa4 --- /dev/null +++ b/buildroot/package/dvbsnoop/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_DVBSNOOP + bool "dvbsnoop" + help + Dvbsnoop is just a simple tool to analyze, view or debug a + transport stream (TS), program elementary stream (PES) or even + a program stream (PS). Dvbsnoop is trying to get input mostly + direct from a frontend (satellite or cable tuner inside a + set-top box for example) via DVB APIv3 to view into a TS, or a + demux to view PES or PS (also mostly inside the set-top box or + even PCI Card or USB Plug) but also from a file (recorded TS). + Dvbsnoop is working well on SD transport streams but may have + some limited functionality on HD transport streams + (DVB-{C,S,T}2 because of missing knowledge how to handle it. + + Dvbsnoop itself doesn't do the tuning on the frontend, this + has to be done by external helpers or manually driver call. + The dvbsnoop tool was written while developing the software + Neutrino on the set-top box DBox2. + + http://dvbsnoop.sourceforge.net + http://en.wikipedia.org/wiki/DBox2 diff --git a/buildroot/package/dvbsnoop/dvbsnoop.hash b/buildroot/package/dvbsnoop/dvbsnoop.hash new file mode 100644 index 0000000..05939f9 --- /dev/null +++ b/buildroot/package/dvbsnoop/dvbsnoop.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 7658498b26a5d2a0242e81f0cfafa0e43a2bec56f8674e7ac197dfc310866ec6 dvbsnoop-1.4.50.tar.gz diff --git a/buildroot/package/dvbsnoop/dvbsnoop.mk b/buildroot/package/dvbsnoop/dvbsnoop.mk new file mode 100644 index 0000000..fdc483d --- /dev/null +++ b/buildroot/package/dvbsnoop/dvbsnoop.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# dvbsnoop +# +################################################################################ + +DVBSNOOP_VERSION = 1.4.50 +DVBSNOOP_SITE = http://downloads.sourceforge.net/project/dvbsnoop/dvbsnoop/dvbsnoop-$(DVBSNOOP_VERSION) +DVBSNOOP_LICENSE = GPL-2.0 +DVBSNOOP_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/dvdauthor/Config.in b/buildroot/package/dvdauthor/Config.in new file mode 100644 index 0000000..9ba5411 --- /dev/null +++ b/buildroot/package/dvdauthor/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_DVDAUTHOR + bool "dvdauthor" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBPNG + help + DVDAuthor is a set of tools to help you author the file and + directory structure of a DVD-Video disc, including + programmatic commands for implementing interactive behaviour. + It is driven by command lines and XML control files, though + there are other programs that provide GUI-based front ends + if you prefer + + http://dvdauthor.sourceforge.net + +if BR2_PACKAGE_DVDAUTHOR + +config BR2_PACKAGE_DVDAUTHOR_DVDUNAUTHOR + bool "dvdunauthor" + select BR2_PACKAGE_LIBDVDREAD + help + This option enables the dvdunauthor program, which requires + libdvdread. + +endif diff --git a/buildroot/package/dvdauthor/dvdauthor.hash b/buildroot/package/dvdauthor/dvdauthor.hash new file mode 100644 index 0000000..36d5d0e --- /dev/null +++ b/buildroot/package/dvdauthor/dvdauthor.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/dvdauthor/files +md5 1173dcb8d40e74fc90c0f3a25dbd642d dvdauthor-0.7.2.tar.gz +sha1 0e605642140576bfb3e963414d77630d1c073a51 dvdauthor-0.7.2.tar.gz +# Locally computed +sha256 3020a92de9f78eb36f48b6f22d5a001c47107826634a785a62dfcd080f612eb7 dvdauthor-0.7.2.tar.gz diff --git a/buildroot/package/dvdauthor/dvdauthor.mk b/buildroot/package/dvdauthor/dvdauthor.mk new file mode 100644 index 0000000..3f9c218 --- /dev/null +++ b/buildroot/package/dvdauthor/dvdauthor.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# dvdauthor +# +################################################################################ + +DVDAUTHOR_VERSION = 0.7.2 +DVDAUTHOR_SITE = https://sourceforge.net/projects/dvdauthor/files +DVDAUTHOR_DEPENDENCIES = host-pkgconf libxml2 freetype libpng +DVDAUTHOR_LICENSE = GPL-2.0+ +DVDAUTHOR_LICENSE_FILES = COPYING +DVDAUTHOR_CONF_ENV = \ + ac_cv_prog_FREETYPECONFIG=$(STAGING_DIR)/usr/bin/freetype-config \ + ac_cv_path_XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config \ + ac_cv_prog_GMAGICKCONFIG= + +ifeq ($(BR2_PACKAGE_IMAGEMAGICK),y) +DVDAUTHOR_DEPENDENCIES += imagemagick +DVDAUTHOR_CONF_ENV += \ + ac_cv_prog_MAGICKCONFIG=$(STAGING_DIR)/usr/bin/Magick-config +else +DVDAUTHOR_CONF_ENV += \ + ac_cv_prog_MAGICKCONFIG= +endif + +# Automatically detected by dvdauthor configure script, no way to +# disable. +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +DVDAUTHOR_DEPENDENCIES += fontconfig +endif + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +DVDAUTHOR_DEPENDENCIES += libfribidi +endif + +ifeq ($(BR2_PACKAGE_DVDAUTHOR_DVDUNAUTHOR),y) +DVDAUTHOR_DEPENDENCIES += libdvdread +# dvdauthor configure does not use pkg-config to detect libdvdread +ifeq ($(BR2_PACKAGE_LIBDVDCSS)$(BR2_STATIC_LIBS),yy) +DVDAUTHOR_CONF_ENV += LIBS="-ldvdcss" +endif +DVDAUTHOR_CONF_OPTS += --enable-dvdunauthor +else +DVDAUTHOR_CONF_OPTS += --disable-dvdunauthor +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/dvdrw-tools/0001-limits.h.patch b/buildroot/package/dvdrw-tools/0001-limits.h.patch new file mode 100644 index 0000000..ccda8ee --- /dev/null +++ b/buildroot/package/dvdrw-tools/0001-limits.h.patch @@ -0,0 +1,23 @@ +transport.hxx: add limits.h include now needed because of kernel changes + +Signed-off-by: Steve Kenton + +diff -pruN dvd+rw-tools-7.1.ori/transport.hxx dvd+rw-tools-7.1/transport.hxx +--- dvd+rw-tools-7.1.ori/transport.hxx 2008-03-01 04:34:43.000000000 -0600 ++++ dvd+rw-tools-7.1/transport.hxx 2015-01-18 15:47:24.245863631 -0600 +@@ -9,6 +9,7 @@ + #if defined(__unix) || defined(__unix__) + #include + #include ++#include + #include + #include + #include +@@ -40,6 +41,7 @@ inline long getmsecs() + #include + #include + #include ++#include + #define ssize_t LONG_PTR + #define off64_t __int64 + diff --git a/buildroot/package/dvdrw-tools/Config.in b/buildroot/package/dvdrw-tools/Config.in new file mode 100644 index 0000000..d4d6bd2 --- /dev/null +++ b/buildroot/package/dvdrw-tools/Config.in @@ -0,0 +1,53 @@ +comment "dvdrw-tools needs a toolchain w/ threads, C++, wchar" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_USE_WCHAR + +config BR2_PACKAGE_DVDRW_TOOLS + bool "dvdrw-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + help + The dvd+rw-tools are used to master Blu-ray Disc + and DVD Disc media, both +RW/+R and -RW/-R. Note: + The +RW in the name is a historical artifact. This + package contains the widely used growisofs program. + + Buildroot does not support packages with a '+' sign + in their name, which explains why it is named + dvdrw-tools and not dvd+rw-tools. + + Because dvd+rw-tools does not directly interact with + disc media it uses a separate media backend program. + The usual backend is mkisofs from the cdrtools package. + However, cdrtools is not currently part of buildroot. + + The Linux From Scratch project uses uses xorriso for the + media backend and Ubuntu uses cdrkit for the backend. + Choose the one which seems most appropriate for your use. + NOTE: xorriso does not currently support UDF. + + http://fy.chalmers.se/~appro/linux/DVD+RW/tools + +if BR2_PACKAGE_DVDRW_TOOLS +choice + prompt "Media Backend" + help + Choose which media backend program to use. + +config BR2_PACKAGE_DVDRW_TOOLS_CDRKIT_BACKEND + bool "cdrkit" + select BR2_PACKAGE_CDRKIT + help + Symlink mkisofs to genisoimage from the cdrkit package. + +config BR2_PACKAGE_DVDRW_TOOLS_XORRISO_BACKEND + bool "xorriso" + select BR2_PACKAGE_XORRISO + help + Symlink mkisofs to xorrisofs from the xorriso package. + +endchoice +endif diff --git a/buildroot/package/dvdrw-tools/dvdrw-tools.hash b/buildroot/package/dvdrw-tools/dvdrw-tools.hash new file mode 100644 index 0000000..17d48f1 --- /dev/null +++ b/buildroot/package/dvdrw-tools/dvdrw-tools.hash @@ -0,0 +1,2 @@ +# Locally computed using sha256sum +sha256 f8d60f822e914128bcbc5f64fbe3ed131cbff9045dca7e12c5b77b26edde72ca dvd+rw-tools-7.1.tar.gz diff --git a/buildroot/package/dvdrw-tools/dvdrw-tools.mk b/buildroot/package/dvdrw-tools/dvdrw-tools.mk new file mode 100644 index 0000000..5dab546 --- /dev/null +++ b/buildroot/package/dvdrw-tools/dvdrw-tools.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# dvdrw-tools +# +################################################################################ + +DVDRW_TOOLS_VERSION = 7.1 +DVDRW_TOOLS_SOURCE = dvd+rw-tools-$(DVDRW_TOOLS_VERSION).tar.gz +DVDRW_TOOLS_SITE = http://fy.chalmers.se/~appro/linux/DVD+RW/tools +DVDRW_TOOLS_LICENSE = GPL-2.0 +DVDRW_TOOLS_LICENSE_FILES = LICENSE +DVDRW_TOOLS_DEPENDENCIES = host-m4 + +define DVDRW_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +ifeq ($(BR2_PACKAGE_DVDRW_TOOLS_CDRKIT_BACKEND),y) +DVDRW_TOOLS_BACKEND = genisoimage +DVDRW_TOOLS_DEPENDENCIES += cdrkit +else ifeq ($(BR2_PACKAGE_DVDRW_TOOLS_XORRISO_BACKEND),y) +DVDRW_TOOLS_BACKEND = xorrisofs +DVDRW_TOOLS_DEPENDENCIES += xorriso +endif + +define DVDRW_TOOLS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/dvd-ram-control $(TARGET_DIR)/usr/bin/dvd-ram-control + $(INSTALL) -m 0755 -D $(@D)/dvd+rw-booktype $(TARGET_DIR)/usr/bin/dvd+rw-booktype + $(INSTALL) -m 0755 -D $(@D)/dvd+rw-format $(TARGET_DIR)/usr/bin/dvd+rw-format + $(INSTALL) -m 0755 -D $(@D)/dvd+rw-mediainfo $(TARGET_DIR)/usr/bin/dvd+rw-mediainfo + $(INSTALL) -m 0755 -D $(@D)/growisofs $(TARGET_DIR)/usr/bin/growisofs + ln -s -f $(DVDRW_TOOLS_BACKEND) $(TARGET_DIR)/usr/bin/mkisofs +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/e2fsprogs/Config.in b/buildroot/package/e2fsprogs/Config.in new file mode 100644 index 0000000..b3d12b4 --- /dev/null +++ b/buildroot/package/e2fsprogs/Config.in @@ -0,0 +1,69 @@ +menuconfig BR2_PACKAGE_E2FSPROGS + bool "e2fsprogs" + depends on BR2_USE_MMU # util-linux/libblkid + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + The EXT2 file system utilities. + + The following programs are always built and installed: + badblocks chattr debugfs dumpe2fs e2freefrag e2fsck e2image + e2undo e4crypt e4defrag filefrag fsck fuse2fs logsave lsattr + mke2fs mklost+found resize2fs tune2fs + + The uuid utilities (uuidd, uuidgen) are not built. Use the + ones from util-linux, instead. + + Other programs can be selected individually. + + http://e2fsprogs.sourceforge.net + +if BR2_PACKAGE_E2FSPROGS + +config BR2_PACKAGE_E2FSPROGS_DEBUGFS + bool "debugfs" + help + ext2/ext3/ext4 file system debugger + +config BR2_PACKAGE_E2FSPROGS_E2IMAGE + bool "e2image" + help + Save critical ext2/ext3/ext4 filesystem metadata to a file + +config BR2_PACKAGE_E2FSPROGS_E4DEFRAG + bool "e4defrag" + depends on !BR2_nios2 # fallocate not implemented + depends on !BR2_TOOLCHAIN_USES_UCLIBC # sync_file_range not impl + help + Online defragmenter for ext4 filesystem + +comment "e4defrag needs a glibc or musl toolchain" + depends on !BR2_nios2 + depends on BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_PACKAGE_E2FSPROGS_FSCK + bool "fsck" + default y + depends on !BR2_PACKAGE_UTIL_LINUX_FSCK + help + Check and repair a Linux file system. This is a wrapper around + the filesystem-specific fsck tools. + +config BR2_PACKAGE_E2FSPROGS_FUSE2FS + bool "fuse2fs" + depends on !BR2_STATIC_LIBS # libfuse + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + select BR2_PACKAGE_LIBFUSE + help + FUSE file system client for ext2/ext3/ext4 file systems + +comment "fuse2fs needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_E2FSPROGS_RESIZE2FS + bool "resize2fs" + help + ext2/ext3/ext4 file system resizer + +endif diff --git a/buildroot/package/e2fsprogs/Config.in.host b/buildroot/package/e2fsprogs/Config.in.host new file mode 100644 index 0000000..7591bbc --- /dev/null +++ b/buildroot/package/e2fsprogs/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_E2FSPROGS + bool "host e2fsprogs" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + The EXT2/3/4 file system utilities. + + http://e2fsprogs.sourceforge.net diff --git a/buildroot/package/e2fsprogs/e2fsprogs.hash b/buildroot/package/e2fsprogs/e2fsprogs.hash new file mode 100644 index 0000000..3def51f --- /dev/null +++ b/buildroot/package/e2fsprogs/e2fsprogs.hash @@ -0,0 +1,6 @@ +# From https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.43.9/sha256sums.asc +sha256 926f8e8de1ffba55d791f21b71334e8a32b5227257ad370f2bf7e4396629e97f e2fsprogs-1.43.9.tar.xz +# Locally calculated +sha256 680f852df303874fe9c722283a7da571ae9a0477768df8af1e363298e2adc51e NOTICE +sha256 032989b508f1a72ebee5b3417e55d06d473f9ee203e45ab11864a7e49cdec63d lib/ss/mit-sipb-copyright.h +sha256 47182fe6631a32f271a15bbe210751b3825b7199f588879aac7d4804fc8b4b8f lib/et/internal.h diff --git a/buildroot/package/e2fsprogs/e2fsprogs.mk b/buildroot/package/e2fsprogs/e2fsprogs.mk new file mode 100644 index 0000000..99019c7 --- /dev/null +++ b/buildroot/package/e2fsprogs/e2fsprogs.mk @@ -0,0 +1,97 @@ +################################################################################ +# +# e2fsprogs +# +################################################################################ + +E2FSPROGS_VERSION = 1.43.9 +E2FSPROGS_SOURCE = e2fsprogs-$(E2FSPROGS_VERSION).tar.xz +E2FSPROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/people/tytso/e2fsprogs/v$(E2FSPROGS_VERSION) +E2FSPROGS_LICENSE = GPL-2.0, MIT-like with advertising clause (libss and libet) +E2FSPROGS_LICENSE_FILES = NOTICE lib/ss/mit-sipb-copyright.h lib/et/internal.h +E2FSPROGS_INSTALL_STAGING = YES + +# Use libblkid and libuuid from util-linux for host and target packages. +# This prevents overriding them with e2fsprogs' ones, which may cause +# problems for other packages. +E2FSPROGS_DEPENDENCIES = host-pkgconf util-linux +HOST_E2FSPROGS_DEPENDENCIES = host-pkgconf host-util-linux + +# If both e2fsprogs and busybox are selected, make certain e2fsprogs +# wins the fight over who gets to have their utils actually installed +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +E2FSPROGS_DEPENDENCIES += busybox +endif + +# e4defrag doesn't build on older systems like RHEL5.x, and we don't +# need it on the host anyway. +# Disable fuse2fs as well to avoid carrying over deps, and it's unused +HOST_E2FSPROGS_CONF_OPTS = \ + --disable-defrag \ + --disable-e2initrd-helper \ + --disable-fuse2fs \ + --disable-libblkid \ + --disable-libuuid \ + --enable-symlink-install \ + --disable-testio-debug + +# Set the binary directories to "/bin" and "/sbin" to override programs +# installed by busybox. +E2FSPROGS_CONF_OPTS = \ + --bindir=/bin \ + --sbindir=/sbin \ + $(if $(BR2_STATIC_LIBS),--disable-elf-shlibs,--enable-elf-shlibs) \ + $(if $(BR2_PACKAGE_E2FSPROGS_DEBUGFS),--enable-debugfs,--disable-debugfs) \ + $(if $(BR2_PACKAGE_E2FSPROGS_E2IMAGE),--enable-imager,--disable-imager) \ + $(if $(BR2_PACKAGE_E2FSPROGS_E4DEFRAG),--enable-defrag,--disable-defrag) \ + $(if $(BR2_PACKAGE_E2FSPROGS_FSCK),--enable-fsck,--disable-fsck) \ + $(if $(BR2_PACKAGE_E2FSPROGS_RESIZE2FS),--enable-resizer,--disable-resizer) \ + --disable-uuidd \ + --disable-libblkid \ + --disable-libuuid \ + --disable-e2initrd-helper \ + --disable-testio-debug \ + --disable-rpath \ + --enable-symlink-install + +ifeq ($(BR2_PACKAGE_E2FSPROGS_FUSE2FS),y) +E2FSPROGS_CONF_OPTS += --enable-fuse2fs +E2FSPROGS_DEPENDENCIES += libfuse +else +E2FSPROGS_CONF_OPTS += --disable-fuse2fs +endif + +ifeq ($(BR2_nios2),y) +E2FSPROGS_CONF_ENV += ac_cv_func_fallocate=no +endif + +# Some programs are built for the host, but use definitions guessed by +# the configure script (i.e with the cross-compiler). Help them by +# saying that is available on the host, which is needed +# for util/subst.c to build properly. +E2FSPROGS_CONF_ENV += BUILD_CFLAGS="-DHAVE_SYS_STAT_H" + +# Disable use of the host magic.h, as on older hosts (e.g. RHEL 5) +# it doesn't provide definitions expected by e2fsprogs support lib. +HOST_E2FSPROGS_CONF_ENV += \ + ac_cv_header_magic_h=no \ + ac_cv_lib_magic_magic_file=no + +E2FSPROGS_MAKE_OPTS = LDCONFIG=true + +E2FSPROGS_INSTALL_STAGING_OPTS = \ + DESTDIR=$(STAGING_DIR) \ + LDCONFIG=true \ + install-libs + +E2FSPROGS_INSTALL_TARGET_OPTS = \ + DESTDIR=$(TARGET_DIR) \ + LDCONFIG=true \ + install + +define HOST_E2FSPROGS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install install-libs +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/e2tools/Config.in b/buildroot/package/e2tools/Config.in new file mode 100644 index 0000000..e4a35e2 --- /dev/null +++ b/buildroot/package/e2tools/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_E2TOOLS + bool "e2tools" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # uses wchar_t + depends on BR2_USE_MMU # e2fsprogs + select BR2_PACKAGE_E2FSPROGS + help + E2tools is a simple set of GPL'ed utilities to read, write, + and manipulate files in an ext2/ext3 filesystem. These + utilities access a filesystem directly using the ext2fs + library. + + https://github.com/ndim/e2tools + +comment "e2tools needs a toolchain w/ threads, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_USE_MMU diff --git a/buildroot/package/e2tools/Config.in.host b/buildroot/package/e2tools/Config.in.host new file mode 100644 index 0000000..859c47b --- /dev/null +++ b/buildroot/package/e2tools/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_E2TOOLS + bool "host e2tools" + select BR2_PACKAGE_HOST_E2FSPROGS + help + E2tools is a simple set of GPL'ed utilities to read, write, + and manipulate files in an ext2/ext3 filesystem. These + utilities access a filesystem directly using the ext2fs + library. + + https://github.com/ndim/e2tools diff --git a/buildroot/package/e2tools/e2tools.hash b/buildroot/package/e2tools/e2tools.hash new file mode 100644 index 0000000..4cec81e --- /dev/null +++ b/buildroot/package/e2tools/e2tools.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 37bbd705170dff80720d68916f8d90803d71987e1b60f7149a285a7fcd539214 e2tools-3158ef18a903ca4a98b8fa220c9fc5c133d8bdf6.tar.gz diff --git a/buildroot/package/e2tools/e2tools.mk b/buildroot/package/e2tools/e2tools.mk new file mode 100644 index 0000000..266d909 --- /dev/null +++ b/buildroot/package/e2tools/e2tools.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# e2tools +# +################################################################################ + +E2TOOLS_VERSION = 3158ef18a903ca4a98b8fa220c9fc5c133d8bdf6 +E2TOOLS_SITE = $(call github,ndim,e2tools,$(E2TOOLS_VERSION)) + +# Source coming from GitHub, no configure included. +E2TOOLS_AUTORECONF = YES +E2TOOLS_LICENSE = GPL-2.0 +E2TOOLS_LICENSE_FILES = COPYING +E2TOOLS_DEPENDENCIES = e2fsprogs +E2TOOLS_CONF_ENV = LIBS="-lpthread" +HOST_E2TOOLS_DEPENDENCIES = host-e2fsprogs +HOST_E2TOOLS_CONF_ENV = LIBS="-lpthread" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/easy-rsa/Config.in b/buildroot/package/easy-rsa/Config.in new file mode 100644 index 0000000..883d679 --- /dev/null +++ b/buildroot/package/easy-rsa/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_EASY_RSA + bool "easy-rsa" + select BR2_PACKAGE_OPENSSL # runtime + select BR2_PACKAGE_OPENSSL_BIN + help + Simple shell based CA utility + + This package eases the creation of certificates, for example + for openvpn clients. + + This was formerly part of the openvpn package. + + easy-rsa is a wrapper script around OpenSSL binaries. + + https://github.com/OpenVPN/easy-rsa diff --git a/buildroot/package/easy-rsa/easy-rsa.hash b/buildroot/package/easy-rsa/easy-rsa.hash new file mode 100644 index 0000000..e2d658a --- /dev/null +++ b/buildroot/package/easy-rsa/easy-rsa.hash @@ -0,0 +1,2 @@ +# Locally computed: (after verifying gpg sig) +sha512 d20f646e33ec803444dfcd446553f1d6001227fedec93280c212b34cccee11b184599f1b2ae6a3ce9cf6c9ac52f2b840ebb645536df6ddf55382fa25c22df81f EasyRSA-3.0.1.tgz diff --git a/buildroot/package/easy-rsa/easy-rsa.mk b/buildroot/package/easy-rsa/easy-rsa.mk new file mode 100644 index 0000000..8ed5741 --- /dev/null +++ b/buildroot/package/easy-rsa/easy-rsa.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# easy-rsa +# +################################################################################ + +EASY_RSA_VERSION = 3.0.1 +EASY_RSA_SOURCE = EasyRSA-$(EASY_RSA_VERSION).tgz +EASY_RSA_SITE = https://github.com/OpenVPN/easy-rsa/releases/download/$(EASY_RSA_VERSION) +EASY_RSA_LICENSE = GPL-2.0 +EASY_RSA_LICENSE_FILES = COPYING gpl-2.0.txt + +# shell script, so no build step + +define EASY_RSA_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/easyrsa $(TARGET_DIR)/usr/bin/easyrsa + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/easy-rsa/x509-types + $(INSTALL) -m 0644 -t $(TARGET_DIR)/etc/easy-rsa/x509-types $(@D)/x509-types/* + $(INSTALL) -D -m 0644 $(@D)/openssl-1.0.cnf $(TARGET_DIR)/etc/easy-rsa/openssl-1.0.cnf + $(INSTALL) -D -m 0644 $(@D)/vars.example $(TARGET_DIR)/etc/easy-rsa/vars +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/easydbus/Config.in b/buildroot/package/easydbus/Config.in new file mode 100644 index 0000000..1fe8689 --- /dev/null +++ b/buildroot/package/easydbus/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_EASYDBUS + bool "easydbus" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + Easy to use DBus library for Lua. + + https://github.com/mniestroj/easydbus + +comment "easydbus needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/easydbus/easydbus.hash b/buildroot/package/easydbus/easydbus.hash new file mode 100644 index 0000000..0ef73f2 --- /dev/null +++ b/buildroot/package/easydbus/easydbus.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3e5907664f5dfebbc0e652faf87564fd58dbd639742f442c100ef2db8be46e52 easydbus-59c340f2cd2c92ded82f9d4436866847f295faab.tar.gz diff --git a/buildroot/package/easydbus/easydbus.mk b/buildroot/package/easydbus/easydbus.mk new file mode 100644 index 0000000..376b09b --- /dev/null +++ b/buildroot/package/easydbus/easydbus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# easydbus +# +################################################################################ + +EASYDBUS_VERSION = 59c340f2cd2c92ded82f9d4436866847f295faab +EASYDBUS_SITE = $(call github,mniestroj,easydbus,$(EASYDBUS_VERSION)) +EASYDBUS_DEPENDENCIES = luainterpreter libglib2 +EASYDBUS_LICENSE = MIT +EASYDBUS_LICENSE_FILES = LICENSE + +$(eval $(cmake-package)) diff --git a/buildroot/package/ebtables/0001-ethernetdb.h-Remove-C-specific-compiler-hint-macro-_.patch b/buildroot/package/ebtables/0001-ethernetdb.h-Remove-C-specific-compiler-hint-macro-_.patch new file mode 100644 index 0000000..bd7bead --- /dev/null +++ b/buildroot/package/ebtables/0001-ethernetdb.h-Remove-C-specific-compiler-hint-macro-_.patch @@ -0,0 +1,50 @@ +From f8079671326e9fd079391d24911a9a8a77f1d6fd Mon Sep 17 00:00:00 2001 +From: Felix Janda +Date: Sat, 16 May 2015 12:31:58 +0200 +Subject: [PATCH] ethernetdb.h: Remove C++ specific compiler hint macro _THROW + +Fixes compilation with musl libc + +Signed-off-by: Felix Janda +Signed-off-by: Pablo Neira Ayuso +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit f8079671326e9fd0 + + include/ethernetdb.h | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/include/ethernetdb.h b/include/ethernetdb.h +index 46d8bfd1b7e5..1683abe01987 100644 +--- a/include/ethernetdb.h ++++ b/include/ethernetdb.h +@@ -38,21 +38,20 @@ struct ethertypeent { + + /* Open ethertype data base files and mark them as staying open even + after a later search if STAY_OPEN is non-zero. */ +-extern void setethertypeent(int __stay_open) __THROW; ++extern void setethertypeent(int __stay_open); + + /* Close ethertype data base files and clear `stay open' flag. */ +-extern void endethertypeent(void) __THROW; ++extern void endethertypeent(void); + + /* Get next entry from ethertype data base file. Open data base if + necessary. */ +-extern struct ethertypeent *getethertypeent(void) __THROW; ++extern struct ethertypeent *getethertypeent(void); + + /* Return entry from ethertype data base for network with NAME. */ +-extern struct ethertypeent *getethertypebyname(__const char *__name) +- __THROW; ++extern struct ethertypeent *getethertypebyname(__const char *__name); + + /* Return entry from ethertype data base which number is PROTO. */ +-extern struct ethertypeent *getethertypebynumber(int __ethertype) __THROW; ++extern struct ethertypeent *getethertypebynumber(int __ethertype); + + + #endif /* ethernetdb.h */ +-- +2.11.0 + diff --git a/buildroot/package/ebtables/0002-Fix-musl-compatibility.patch b/buildroot/package/ebtables/0002-Fix-musl-compatibility.patch new file mode 100644 index 0000000..5e9f534 --- /dev/null +++ b/buildroot/package/ebtables/0002-Fix-musl-compatibility.patch @@ -0,0 +1,30 @@ +From 138e7efdc8cad6453620c6366e6fa5e786593f7f Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 16 Feb 2017 14:41:48 +0200 +Subject: [PATCH] Fix musl compatibility + +Include netinet/ether.h before kernel headers to suppress the conflicting +definition of struct ethhdr. + +Signed-off-by: Baruch Siach +--- +Upstream status: not upstreamable; depends on Buildroot local musl patch +--- + include/ebtables_u.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/ebtables_u.h b/include/ebtables_u.h +index 35a5bcc54c86..268b1fd599d2 100644 +--- a/include/ebtables_u.h ++++ b/include/ebtables_u.h +@@ -24,6 +24,7 @@ + #ifndef EBTABLES_U_H + #define EBTABLES_U_H + #include ++#include + #include + #include + +-- +2.11.0 + diff --git a/buildroot/package/ebtables/Config.in b/buildroot/package/ebtables/Config.in new file mode 100644 index 0000000..3f7566a --- /dev/null +++ b/buildroot/package/ebtables/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_EBTABLES + bool "ebtables" + depends on BR2_USE_MMU # fork() + help + Ethernet bridge frame table administration + + http://ebtables.netfilter.org/ diff --git a/buildroot/package/ebtables/ebtables.hash b/buildroot/package/ebtables/ebtables.hash new file mode 100644 index 0000000..4526276 --- /dev/null +++ b/buildroot/package/ebtables/ebtables.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 dc6f7b484f207dc712bfca81645f45120cb6aee3380e77a1771e9c34a9a4455d ebtables-v2.0.10-4.tar.gz diff --git a/buildroot/package/ebtables/ebtables.mk b/buildroot/package/ebtables/ebtables.mk new file mode 100644 index 0000000..aae0c91 --- /dev/null +++ b/buildroot/package/ebtables/ebtables.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# ebtables +# +################################################################################ + +EBTABLES_VERSION = 2.0.10-4 +EBTABLES_SOURCE = ebtables-v$(EBTABLES_VERSION).tar.gz +EBTABLES_SITE = http://ftp.netfilter.org/pub/ebtables +EBTABLES_LICENSE = GPL-2.0+ +EBTABLES_LICENSE_FILES = COPYING +EBTABLES_STATIC = $(if $(BR2_STATIC_LIBS),static) +EBTABLES_K64U32 = $(if $(BR2_KERNEL_64_USERLAND_32),-DKERNEL_64_USERSPACE_32) + +define EBTABLES_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) LIBDIR=/lib/ebtables $(EBTABLES_STATIC) \ + CFLAGS="$(TARGET_CFLAGS) $(EBTABLES_K64U32)" -C $(@D) +endef + +ifeq ($(BR2_STATIC_LIBS),y) +define EBTABLES_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/$(EBTABLES_SUBDIR)/static \ + $(TARGET_DIR)/sbin/ebtables +endef +else +define EBTABLES_INSTALL_TARGET_CMDS + for so in $(@D)/$(EBTABLES_SUBDIR)/*.so \ + $(@D)/$(EBTABLES_SUBDIR)/extensions/*.so; \ + do \ + $(INSTALL) -m 0755 -D $${so} \ + $(TARGET_DIR)/lib/ebtables/`basename $${so}` || exit 1; \ + done + $(INSTALL) -m 0755 -D $(@D)/$(EBTABLES_SUBDIR)/ebtables \ + $(TARGET_DIR)/sbin/ebtables + $(INSTALL) -m 0644 -D $(@D)/ethertypes $(TARGET_DIR)/etc/ethertypes +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/ecryptfs-utils/0001-musl.patch b/buildroot/package/ecryptfs-utils/0001-musl.patch new file mode 100644 index 0000000..4a3b8a7 --- /dev/null +++ b/buildroot/package/ecryptfs-utils/0001-musl.patch @@ -0,0 +1,35 @@ +fix musl build + +Patch inspired by +https://github.com/kraj/meta-musl/blob/master/recipes-core/util-linux/util-linux-2.25/0001-switch_root-use-typeof-instead-of-__SWORD_TYPE-for-s.patch + +Signed-off-by: Bernd Kuhls + +diff -uNr ecryptfs-utils-109.org/src/utils/mount.ecryptfs_private.c ecryptfs-utils-109/src/utils/mount.ecryptfs_private.c +--- ecryptfs-utils-109.org/src/utils/mount.ecryptfs_private.c 2016-01-22 17:04:52.000000000 +0100 ++++ ecryptfs-utils-109/src/utils/mount.ecryptfs_private.c 2016-01-24 16:52:37.000000000 +0100 +@@ -224,6 +224,7 @@ + + static int check_cwd_f_type() + { ++ struct statfs buf; + /** + * This is *not* a list of compatible lower filesystems list for + * eCryptfs. This is a list of filesystems that we reasonably expect to +@@ -235,7 +236,7 @@ + * deceive other programs with a crafted /proc/self/*. See + * https://launchpad.net/bugs/1530566 for more details. + */ +- __SWORD_TYPE f_type_whitelist[] = { ++ typeof(buf.f_type) f_type_whitelist[] = { + 0x61756673 /* AUFS_SUPER_MAGIC */, + 0x9123683E /* BTRFS_SUPER_MAGIC */, + 0x00C36400 /* CEPH_SUPER_MAGIC */, +@@ -259,7 +260,6 @@ + 0x58465342 /* XFS_SB_MAGIC */, + 0x2FC12FC1 /* ZFS_SUPER_MAGIC */, + }; +- struct statfs buf; + size_t i, whitelist_len; + + if (statfs(".", &buf) != 0) { diff --git a/buildroot/package/ecryptfs-utils/Config.in b/buildroot/package/ecryptfs-utils/Config.in new file mode 100644 index 0000000..bb4cc64 --- /dev/null +++ b/buildroot/package/ecryptfs-utils/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_ECRYPTFS_UTILS + bool "ecryptfs-utils" + depends on BR2_USE_WCHAR # gettext + depends on BR2_USE_MMU # keyutils + depends on !BR2_microblaze # keyutils + depends on BR2_TOOLCHAIN_HAS_THREADS # libnss -> libnspr + depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT # libnss -> libnspr + depends on !BR2_MIPS_NABI32 # libnss + depends on !BR2_STATIC_LIBS # libnss, keyutils + select BR2_PACKAGE_KEYUTILS + select BR2_PACKAGE_LIBNSS + # runtime dependency only, some scripts are using the + # 'gettext' program to get translations + select BR2_PACKAGE_GETTEXT + # runtime dependency only + select BR2_PACKAGE_GETENT + help + eCryptfs is a POSIX-compliant enterprise cryptographic + filesystem for Linux. It is stacked on top of any other + Linux filesystem, it stores cryptographic metadata in the + header of each file written. + + The eCryptfs kernel module is available in all Linux kernels + since version 2.6.19. This package provides userspace + utilities needed to mount eCryptfs. + + Files are encrypted using a passphrase. Consider building + openssl for another method. + + http://ecryptfs.org + +comment "ecryptfs-utils needs a toolchain w/ threads, wchar, dynami library" + depends on !BR2_microblaze + depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/ecryptfs-utils/ecryptfs-utils.hash b/buildroot/package/ecryptfs-utils/ecryptfs-utils.hash new file mode 100644 index 0000000..1e08661 --- /dev/null +++ b/buildroot/package/ecryptfs-utils/ecryptfs-utils.hash @@ -0,0 +1,4 @@ +# From https://launchpad.net/ecryptfs/trunk/111/+download/ecryptfs-utils_111.orig.tar.gz/+md5 +md5 83513228984f671930752c3518cac6fd ecryptfs-utils_111.orig.tar.gz +# Locally computed +sha256 112cb3e37e81a1ecd8e39516725dec0ce55c5f3df6284e0f4cc0f118750a987f ecryptfs-utils_111.orig.tar.gz diff --git a/buildroot/package/ecryptfs-utils/ecryptfs-utils.mk b/buildroot/package/ecryptfs-utils/ecryptfs-utils.mk new file mode 100644 index 0000000..eb3194b --- /dev/null +++ b/buildroot/package/ecryptfs-utils/ecryptfs-utils.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# ecryptfs-utils +# +################################################################################ + +ECRYPTFS_UTILS_VERSION = 111 +ECRYPTFS_UTILS_SOURCE = ecryptfs-utils_$(ECRYPTFS_UTILS_VERSION).orig.tar.gz +ECRYPTFS_UTILS_SITE = https://launchpad.net/ecryptfs/trunk/$(ECRYPTFS_UTILS_VERSION)/+download +ECRYPTFS_UTILS_LICENSE = GPL-2.0+ +ECRYPTFS_UTILS_LICENSE_FILES = COPYING + +ECRYPTFS_UTILS_DEPENDENCIES = keyutils libnss host-intltool +ECRYPTFS_UTILS_CONF_OPTS = --disable-pywrap --disable-pam + +#Needed for build system to find pk11func.h and libnss3.so +ECRYPTFS_UTILS_CONF_ENV = \ + NSS_CFLAGS="-I$(STAGING_DIR)/usr/include/nss -I$(STAGING_DIR)/usr/include/nspr" \ + NSS_LIBS="-lnss3" + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ECRYPTFS_UTILS_CONF_OPTS += --enable-openssl +ECRYPTFS_UTILS_DEPENDENCIES += openssl +else +ECRYPTFS_UTILS_CONF_OPTS += --disable-openssl +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ed/Config.in b/buildroot/package/ed/Config.in new file mode 100644 index 0000000..21ba79e --- /dev/null +++ b/buildroot/package/ed/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ED + bool "ed" + help + A line-oriented text editor. Used to create, display, modify, + and otherwise manipulate text files. Often used in scripts + rather than invoked directly. + + http://www.gnu.org/software/ed/ diff --git a/buildroot/package/ed/ed.hash b/buildroot/package/ed/ed.hash new file mode 100644 index 0000000..1aa00c0 --- /dev/null +++ b/buildroot/package/ed/ed.hash @@ -0,0 +1,2 @@ +# From http://lists.gnu.org/archive/html/bug-ed/2017-02/msg00005.html +sha256 f57962ba930d70d02fc71d6be5c5f2346b16992a455ab9c43be7061dec9810db ed-1.14.2.tar.lz diff --git a/buildroot/package/ed/ed.mk b/buildroot/package/ed/ed.mk new file mode 100644 index 0000000..ada0316 --- /dev/null +++ b/buildroot/package/ed/ed.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# ed +# +################################################################################ + +ED_VERSION = 1.14.2 +ED_SITE = $(BR2_GNU_MIRROR)/ed +ED_SOURCE = ed-$(ED_VERSION).tar.lz +ED_CONF_OPTS = \ + CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" +ED_LICENSE = GPL-3.0+ +ED_LICENSE_FILES = COPYING + +define ED_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_MAKE_ENV) ./configure \ + --prefix=/usr \ + $(TARGET_CONFIGURE_OPTS) \ + ) +endef + +define ED_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define ED_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/edid-decode/Config.in b/buildroot/package/edid-decode/Config.in new file mode 100644 index 0000000..701c700 --- /dev/null +++ b/buildroot/package/edid-decode/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_EDID_DECODE + bool "edid-decode" + help + Decode EDID data in human-readable format. + + https://git.linuxtv.org/edid-decode.git/ diff --git a/buildroot/package/edid-decode/edid-decode.hash b/buildroot/package/edid-decode/edid-decode.hash new file mode 100644 index 0000000..437dcf4 --- /dev/null +++ b/buildroot/package/edid-decode/edid-decode.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 94f43f93285eb5cf8133061295bcdf72b6897bf5372879c2e4032a08d359af12 edid-decode-f56f329ed23a25d002352dedba1e8f092a47286f.tar.gz diff --git a/buildroot/package/edid-decode/edid-decode.mk b/buildroot/package/edid-decode/edid-decode.mk new file mode 100644 index 0000000..b412a77 --- /dev/null +++ b/buildroot/package/edid-decode/edid-decode.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# edid-decode +# +################################################################################ + +EDID_DECODE_VERSION = f56f329ed23a25d002352dedba1e8f092a47286f +EDID_DECODE_SITE = git://linuxtv.org/edid-decode.git +EDID_DECODE_LICENSE = MIT +EDID_DECODE_LICENSE_FILES = edid-decode.c + +define EDID_DECODE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" +endef + +define EDID_DECODE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/efibootmgr/0001-dont-use-fshort-wchar-when-building.patch b/buildroot/package/efibootmgr/0001-dont-use-fshort-wchar-when-building.patch new file mode 100644 index 0000000..abafcec --- /dev/null +++ b/buildroot/package/efibootmgr/0001-dont-use-fshort-wchar-when-building.patch @@ -0,0 +1,28 @@ +From 3466fd05c8c6f1052e0426d64eed40f8a88fd78f Mon Sep 17 00:00:00 2001 +From: steve-mcintyre +Date: Fri, 6 Jan 2017 18:18:47 +0000 +Subject: [PATCH] Don't use -fshort-wchar when building (#63) + +It's not needed and is causing build failures with gcc 6. Closes +Debian bug #849651 + +Signed-off-by: Steve McIntyre +[Upstream commit: https://github.com/rhinstaller/efibootmgr/commit/3466fd05c8c6f1052e0426d64eed40f8a88fd78f] +Signed-off-by: Thomas Petazzoni +--- + Make.defaults | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Make.defaults b/Make.defaults +index 50f1f4d..0ac50ef 100644 +--- a/Make.defaults ++++ b/Make.defaults +@@ -26,7 +26,7 @@ clang_cflags = + gcc_cflags = + cflags = $(CFLAGS) $(SUBDIR_CFLAGS) \ + -Werror -Wall -Wextra -Wsign-compare -Wstrict-aliasing \ +- -std=gnu11 -fshort-wchar -fPIC \ ++ -std=gnu11 -fPIC \ + -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DLOCALEDIR=\"$(localedir)\" \ + -DEFIBOOTMGR_VERSION="\"$(VERSION)\"" \ + $(if $(findstring clang,$(CC)),$(clang_cflags),) \ diff --git a/buildroot/package/efibootmgr/0002-Allow-build-with-uClibc.patch b/buildroot/package/efibootmgr/0002-Allow-build-with-uClibc.patch new file mode 100644 index 0000000..fd29233 --- /dev/null +++ b/buildroot/package/efibootmgr/0002-Allow-build-with-uClibc.patch @@ -0,0 +1,40 @@ +From bbfcc60497c326576bb23cb01d90115ef3cf6947 Mon Sep 17 00:00:00 2001 +From: Andy Shevchenko +Date: Fri, 25 Nov 2016 20:26:52 +0200 +Subject: [PATCH] Remove unneeded include + +This fixes the build with uClibc. + +Signed-off-by: Andy Shevchenko +--- + src/efibootdump.c | 1 - + src/eficonman.c | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/src/efibootdump.c b/src/efibootdump.c +index 6ff8360..7c5a1c5 100644 +--- a/src/efibootdump.c ++++ b/src/efibootdump.c +@@ -19,7 +19,6 @@ + #include + #include + #include +-#include + #include + + #include "error.h" +diff --git a/src/eficonman.c b/src/eficonman.c +index 2c2be38..9bfae79 100644 +--- a/src/eficonman.c ++++ b/src/eficonman.c +@@ -17,7 +17,6 @@ + #include + #include + #include +-#include + #include + + #define _(String) gettext (String) +-- +2.10.2 + diff --git a/buildroot/package/efibootmgr/0003-Remove-extra-const-keywords-gcc-7-gripes-about.patch b/buildroot/package/efibootmgr/0003-Remove-extra-const-keywords-gcc-7-gripes-about.patch new file mode 100644 index 0000000..8bc6f01 --- /dev/null +++ b/buildroot/package/efibootmgr/0003-Remove-extra-const-keywords-gcc-7-gripes-about.patch @@ -0,0 +1,51 @@ +From a542b169003c2ef95ce6c00d40050eb10568b612 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Mon, 6 Feb 2017 16:34:54 -0500 +Subject: [PATCH] Remove extra const keywords gcc 7 gripes about. + +Signed-off-by: Peter Jones +[Backported from upstream commit a542b169003c2ef95ce6c00d40050eb10568b612] +Signed-off-by: Thomas Petazzoni +--- + src/efibootdump.c | 2 +- + src/efibootmgr.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/efibootdump.c b/src/efibootdump.c +index 6ff8360..30a1943 100644 +--- a/src/efibootdump.c ++++ b/src/efibootdump.c +@@ -39,7 +39,7 @@ print_boot_entry(efi_load_option *loadopt, size_t data_size) + uint8_t *optional_data = NULL; + size_t optional_data_len = 0; + uint16_t pathlen; +- const unsigned char const *desc; ++ const unsigned char *desc; + char *raw; + size_t raw_len; + +diff --git a/src/efibootmgr.c b/src/efibootmgr.c +index 493f2cf..90a0998 100644 +--- a/src/efibootmgr.c ++++ b/src/efibootmgr.c +@@ -221,7 +221,7 @@ warn_duplicate_name(list_t *var_list) + list_t *pos; + var_entry_t *entry; + efi_load_option *load_option; +- const unsigned char const *desc; ++ const unsigned char *desc; + + list_for_each(pos, var_list) { + entry = list_entry(pos, var_entry_t, list); +@@ -873,7 +873,7 @@ show_vars(const char *prefix) + { + list_t *pos; + var_entry_t *boot; +- const unsigned char const *description; ++ const unsigned char *description; + efi_load_option *load_option; + efidp dp = NULL; + unsigned char *optional_data = NULL; +-- +2.9.4 + diff --git a/buildroot/package/efibootmgr/Config.in b/buildroot/package/efibootmgr/Config.in new file mode 100644 index 0000000..0d36ffd --- /dev/null +++ b/buildroot/package/efibootmgr/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_EFIBOOTMGR + bool "efibootmgr" + depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS # efivar + depends on !BR2_STATIC_LIBS # efivar + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # efivar + depends on !BR2_TOOLCHAIN_USES_MUSL # efivar + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # efivar + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + select BR2_PACKAGE_EFIVAR + help + A Linux user-space application to modify the Intel Extensible + Firmware Interface (EFI) Boot Manager. This application can + create and destroy boot entries, change the boot order, change + the next running boot option, and more. + + https://github.com/rhinstaller/efibootmgr + +comment "efibootmgr needs a glibc or uClibc toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9" + depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \ + BR2_TOOLCHAIN_USES_MUSL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS diff --git a/buildroot/package/efibootmgr/efibootmgr.hash b/buildroot/package/efibootmgr/efibootmgr.hash new file mode 100644 index 0000000..f71dced --- /dev/null +++ b/buildroot/package/efibootmgr/efibootmgr.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 3f260491e2c62e93cb6347ea6f21aaa5f93152e9e7f0269d314623769d82e473 efibootmgr-14.tar.gz diff --git a/buildroot/package/efibootmgr/efibootmgr.mk b/buildroot/package/efibootmgr/efibootmgr.mk new file mode 100644 index 0000000..b32d9cb --- /dev/null +++ b/buildroot/package/efibootmgr/efibootmgr.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# efibootmgr +# +################################################################################ + +EFIBOOTMGR_VERSION = 14 +EFIBOOTMGR_SITE = $(call github,rhinstaller,efibootmgr,$(EFIBOOTMGR_VERSION)) +EFIBOOTMGR_LICENSE = GPL-2.0+ +EFIBOOTMGR_LICENSE_FILES = COPYING +EFIBOOTMGR_DEPENDENCIES = efivar $(TARGET_NLS_DEPENDENCIES) +EFIBOOTMGR_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) + +define EFIBOOTMSR_PATCH_HEADER_PATH + $(SED) 's,-I/,-I$(STAGING_DIR)/,' $(@D)/Makefile +endef + +EFIBOOTMGR_POST_PATCH_HOOKS += EFIBOOTMSR_PATCH_HEADER_PATH + +define EFIBOOTMGR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ + LDFLAGS="$(EFIBOOTMGR_LDFLAGS)" $(MAKE1) -C $(@D) +endef + +define EFIBOOTMGR_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch b/buildroot/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch new file mode 100644 index 0000000..2bc3ff2 --- /dev/null +++ b/buildroot/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch @@ -0,0 +1,29 @@ +From 314eb67b239e60c2ed3700e2baf9cd0e590465f3 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Thu, 27 Oct 2016 09:19:18 -0400 +Subject: [PATCH] Use -z muldefs to avoid the multiple definitions bug + without -flto + +This fixes github issue #64 + +Signed-off-by: Peter Jones +Signed-off-by: Andy Shevchenko +--- + Make.defaults | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Make.defaults b/Make.defaults +index aa974d9..c9d599f 100644 +--- a/Make.defaults ++++ b/Make.defaults +@@ -32,6 +32,7 @@ cflags = $(CFLAGS) -I${TOPDIR}/src/include/efivar/ \ + clang_ccldflags = + gcc_ccldflags = + ccldflags = $(cflags) -L. $(CCLDFLAGS) $(LDFLAGS) \ ++ -Wl,-z,muldefs \ + $(if $(findstring clang,$(CCLD)),$(clang_ccldflags),) \ + $(if $(findstring gcc,$(CCLD)),$(gcc_ccldflags),) \ + $(call pkg-config-ccldflags) +-- +2.10.2 + diff --git a/buildroot/package/efivar/0002-Allow-build-with-uClibc.patch b/buildroot/package/efivar/0002-Allow-build-with-uClibc.patch new file mode 100644 index 0000000..7c19587 --- /dev/null +++ b/buildroot/package/efivar/0002-Allow-build-with-uClibc.patch @@ -0,0 +1,38 @@ +From 2255601757a8a58baddad2d37d0bcc6b003a3732 Mon Sep 17 00:00:00 2001 +From: Andy Shevchenko +Date: Fri, 25 Nov 2016 19:42:27 +0200 +Subject: [PATCH] Allow build with uClibc + +Basically this replaces type definitions in . + +Signed-off-by: Andy Shevchenko +--- + src/export.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/export.c b/src/export.c +index 7f2d4dd..72c02d1 100644 +--- a/src/export.c ++++ b/src/export.c +@@ -21,11 +21,17 @@ + #include + #include + #include +-#include + + #include + #include "lib.h" + ++#ifdef __UCLIBC__ ++typedef int_least16_t char16_t; ++typedef int_least32_t char32_t; ++#else ++#include ++#endif ++ + #define EFIVAR_MAGIC 0xf3df1597 + + #define ATTRS_UNSET 0xa5a5a5a5a5a5a5a5 +-- +2.10.2 + diff --git a/buildroot/package/efivar/0003-Remove-some-extra-const-that-gcc-complains-about.patch b/buildroot/package/efivar/0003-Remove-some-extra-const-that-gcc-complains-about.patch new file mode 100644 index 0000000..6b9f77e --- /dev/null +++ b/buildroot/package/efivar/0003-Remove-some-extra-const-that-gcc-complains-about.patch @@ -0,0 +1,47 @@ +From 1c7c0f71c9d22efda4156881eb187b8c69d1cca7 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Mon, 6 Feb 2017 14:28:19 -0500 +Subject: [PATCH] Remove some extra "const" that gcc complains about. + +One of these days I'll get these right. + +Signed-off-by: Peter Jones +Signed-off-by: Baruch Siach +--- +Upstream commit 1c7c0f71c9d22e. + + src/include/efivar/efiboot-loadopt.h | 4 ++-- + src/loadopt.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/include/efivar/efiboot-loadopt.h b/src/include/efivar/efiboot-loadopt.h +index 07db5c4c53e3..efc29c69d47e 100644 +--- a/src/include/efivar/efiboot-loadopt.h ++++ b/src/include/efivar/efiboot-loadopt.h +@@ -32,8 +32,8 @@ extern ssize_t efi_loadopt_create(uint8_t *buf, ssize_t size, + + extern efidp efi_loadopt_path(efi_load_option *opt, ssize_t limit) + __attribute__((__nonnull__ (1))); +-extern const unsigned char const * efi_loadopt_desc(efi_load_option *opt, +- ssize_t limit) ++extern const unsigned char * efi_loadopt_desc(efi_load_option *opt, ++ ssize_t limit) + __attribute__((__visibility__ ("default"))) + __attribute__((__nonnull__ (1))); + extern uint32_t efi_loadopt_attrs(efi_load_option *opt) +diff --git a/src/loadopt.c b/src/loadopt.c +index a63ca792d2dc..ce889867fd29 100644 +--- a/src/loadopt.c ++++ b/src/loadopt.c +@@ -357,7 +357,7 @@ teardown(void) + + __attribute__((__nonnull__ (1))) + __attribute__((__visibility__ ("default"))) +-const unsigned char const * ++const unsigned char * + efi_loadopt_desc(efi_load_option *opt, ssize_t limit) + { + if (last_desc) { +-- +2.13.2 + diff --git a/buildroot/package/efivar/Config.in b/buildroot/package/efivar/Config.in new file mode 100644 index 0000000..0fa9adf --- /dev/null +++ b/buildroot/package/efivar/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS + bool + default y + depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 \ + || BR2_powerpc64le || BR2_mipsel || BR2_mips64el + +config BR2_PACKAGE_EFIVAR + bool "efivar" + depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # linux/nvme.h + # linux/nvme.h has been renamed to linux/nvme_ioctl.h since 4.4, + # and the efivar source handles that situation. However, some + # Sourcery CodeBench toolchains use 4.4 kernel headers but they + # don't have that header file renamed, and that is causing build + # failures. So, prevent this package to be built using those + # toolchains. + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + # doesn't build with musl due to lack of __bswap_constant_16 + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_PACKAGE_POPT + help + Tools and libraries to manipulate EFI variables + + https://github.com/rhinstaller/efivar + +comment "efivar needs a glibc or uClibc toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9" + depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \ + BR2_TOOLCHAIN_USES_MUSL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS diff --git a/buildroot/package/efivar/efivar.hash b/buildroot/package/efivar/efivar.hash new file mode 100644 index 0000000..e337b96 --- /dev/null +++ b/buildroot/package/efivar/efivar.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 20709c76311f8eb8be92977b7ac008ce62501fa9f7fe885a784321540fc352f9 efivar-30.tar.gz diff --git a/buildroot/package/efivar/efivar.mk b/buildroot/package/efivar/efivar.mk new file mode 100644 index 0000000..d06192e --- /dev/null +++ b/buildroot/package/efivar/efivar.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# efivar +# +################################################################################ + +EFIVAR_VERSION = 30 +EFIVAR_SITE = $(call github,rhinstaller,efivar,$(EFIVAR_VERSION)) +EFIVAR_LICENSE = LGPL-2.1 +EFIVAR_LICENSE_FILES = COPYING +EFIVAR_DEPENDENCIES = popt +EFIVAR_INSTALL_STAGING = YES + +# BINTARGETS is set to skip efivar-static which requires static popt, +# and since we depend on dynamic libraries, efivar will never be built +# in a static-only environment. +# -fPIC is needed at least on MIPS, otherwise fails to build shared +# -library. +EFIVAR_MAKE_OPTS = \ + libdir=/usr/lib \ + BINTARGETS=efivar \ + LDFLAGS="$(TARGET_LDFLAGS) -fPIC" + +define EFIVAR_BUILD_CMDS + # makeguids is an internal host tool and must be built separately with + # $(HOST_CC), otherwise it gets cross-built. + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CFLAGS) -std=gnu99" \ + $(MAKE) -C $(@D)/src gcc_cflags= makeguids + + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \ + AR=$(TARGET_AR) NM=$(TARGET_NM) RANLIB=$(TARGET_RANLIB) \ + $(EFIVAR_MAKE_OPTS) \ + all +endef + +define EFIVAR_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \ + $(EFIVAR_MAKE_OPTS) \ + DESTDIR="$(STAGING_DIR)" \ + install +endef + +define EFIVAR_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D) \ + $(EFIVAR_MAKE_OPTS) \ + DESTDIR="$(TARGET_DIR)" \ + install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/efl/Config.in b/buildroot/package/efl/Config.in new file mode 100644 index 0000000..cfb803c --- /dev/null +++ b/buildroot/package/efl/Config.in @@ -0,0 +1,305 @@ +config BR2_PACKAGE_EFL + bool "efl" + # g++ issue with 4.4.5, tested with g++ 4.7.2 + depends on BR2_HOST_GCC_AT_LEAST_4_7 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS # luajit + depends on BR2_TOOLCHAIN_HAS_THREADS # untested without threads + depends on BR2_USE_MMU + depends on BR2_USE_WCHAR # use wchar_t + depends on !BR2_STATIC_LIBS # dlfcn.h + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_JPEG # Emile needs libjpeg + select BR2_PACKAGE_LIBCURL # Ecore_con_url, runtime dependency + # https://phab.enlightenment.org/T2728 + select BR2_PACKAGE_LUAJIT # Lua support broken + select BR2_PACKAGE_LZ4 + select BR2_PACKAGE_ZLIB + help + Enlightenment Foundation Libraries + + https://enlightenment.org + +if BR2_PACKAGE_EFL + +config BR2_PACKAGE_EFL_BULLET + bool "Enable bullet support (recommended)" + default y + select BR2_PACKAGE_BULLET + help + If you have chosen to disable physics support, this disables + lots of core functionality and is effectively never + tested. You are going to find features that suddenly don't + work and as a result cause a series of breakages. This is + simply not tested so you are on your own in terms of + ensuring everything works if you do this. + +config BR2_PACKAGE_EFL_EEZE + bool "Enable eeze (udev) support (recommended)" + default y + depends on BR2_PACKAGE_HAS_UDEV # libudev + help + Eeze is EFL's hardware abstraction layer on top of udev. + Having it off will disable some hardware detection, such as + 'drm' graphics engine or 'elput', as well as mounting + removable media. + +comment "eeze needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_EFL_FONTCONFIG + bool "Enable fontconfig support (recommended)" + default y + select BR2_PACKAGE_FONTCONFIG + help + If fontconfig is disabled, this is going to make general + font searching not work, and only some very direct 'load + /path/file.ttf' will work alongside some old-school ttf file + path searching. This is very likely not what you want, so + highly reconsider turning fontconfig off. Having it off will + lead to visual problems like missing text in many UI areas + etc... + +config BR2_PACKAGE_EFL_GSTREAMER1 + bool "Enable gstreamer1 support (recommended)" + default y + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + If Gstreamer 1.x support is disabled, it will heavily limit + your media support options and render some functionality as + useless, leading to visible application bugs. + +config BR2_PACKAGE_EFL_LIBFRIBIDI + bool "Enable libfribidi support (recommended)" + default y + select BR2_PACKAGE_LIBFRIBIDI + help + Fribidi is used for handling right-to-left text (like + Arabic, Hebrew, Farsi, Persian etc.) and is very likely not + a feature you want to disable unless you know for absolute + certain you will never encounter and have to display such + scripts. Also note that we don't test with fribidi disabled + so you may also trigger code paths with bugs that are never + normally used. + +config BR2_PACKAGE_EFL_LIBSNDFILE + bool "Enable libsndfile support (recommended)" + default y + select BR2_PACKAGE_LIBSNDFILE + help + If you disabled audio support in Ecore, this is not tested + and may create bugs for you due to it creating untested code + paths. Reconsider disabling audio. + +config BR2_PACKAGE_EFL_PULSEAUDIO + bool "Enable pulseaudio support (recommended)" + default y + select BR2_PACKAGE_PULSEAUDIO + help + The only audio output method supported by Ecore right now is + via Pulseaudio. You have disabled that and likely have + broken a whole bunch of things in the process. Reconsider + your configure options. + + NOTE: multisense support is automatically enabled with + pulseaudio. + +config BR2_PACKAGE_EFL_UTIL_LINUX_LIBMOUNT + bool "Enable libmount support (recommended)" + default y + depends on BR2_PACKAGE_EFL_EEZE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + # libblkid is part of required tools, see EFL's README. + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + Libmount is used heavily inside Eeze for support of removable + devices etc... and disabling this will hurt support for + Enlightenment and its filemanager. + +comment "efl's libmount support needs udev /dev management (eeze)" + depends on !BR2_PACKAGE_EFL_EEZE + +config BR2_PACKAGE_EFL_HAS_RECOMMENDED_CONFIG + bool + default y if BR2_PACKAGE_EFL_BULLET && \ + BR2_PACKAGE_EFL_EEZE && \ + BR2_PACKAGE_EFL_FONTCONFIG && \ + BR2_PACKAGE_EFL_GSTREAMER1 && \ + BR2_PACKAGE_EFL_LIBFRIBIDI && \ + BR2_PACKAGE_EFL_LIBSNDFILE && \ + BR2_PACKAGE_EFL_PULSEAUDIO && \ + BR2_PACKAGE_EFL_UTIL_LINUX_LIBMOUNT + +comment "Warning: one of the recommended option for EFL is not enabled" + depends on !BR2_PACKAGE_EFL_HAS_RECOMMENDED_CONFIG + +config BR2_PACKAGE_EFL_EOLIAN_CPP + bool "Enable Eolian C++ bindings" + depends on BR2_HOST_GCC_AT_LEAST_4_8 # Eolian (host) needs C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # Eolian needs C++11 + help + Eolian is an EO object parser and code generator. + With this option enabled Eolian will handle automatic + generation of EFL bindings for the C++11 language. + +comment "Eolian needs host and target gcc >= 4.8" + depends on !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +comment "libecore video support" + +config BR2_PACKAGE_EFL_FB + bool "FB support" + +config BR2_PACKAGE_EFL_X_XLIB + bool "X11 support (xlib)" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXINERAMA + select BR2_PACKAGE_XLIB_LIBXP + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER + select BR2_PACKAGE_XLIB_LIBXTST + select BR2_PACKAGE_XPROTO_GLPROTO + +config BR2_PACKAGE_EFL_WAYLAND + bool "Wayland support" + depends on BR2_PACKAGE_WAYLAND + depends on BR2_TOOLCHAIN_HAS_THREADS # Evas DRM Engine -> libdrm + depends on BR2_PACKAGE_MESA3D_OPENGL_EGL # Evas DRM Engine + depends on BR2_PACKAGE_EFL_EEZE # efl drm + depends on BR2_PACKAGE_EFL_OPENGLES # OpenGL ES with EGL support only + depends on BR2_ENABLE_LOCALE # efl-drm <- efl-elput <- linput + select BR2_PACKAGE_EFL_DRM + select BR2_PACKAGE_WAYLAND_PROTOCOLS + +comment "Wayland support needs udev /dev management (eeze), OpenGL ES w/ EGL, threads, locales" + depends on BR2_PACKAGE_WAYLAND + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_MESA3D_OPENGL_EGL \ + || !BR2_PACKAGE_EFL_OPENGLES || !BR2_PACKAGE_EFL_EEZE \ + || !BR2_ENABLE_LOCALE + +choice + bool "OpenGL support" + help + libevas can be configured to use HW acceleration with OpenGL + or OpenGL ES. + +config BR2_PACKAGE_EFL_OPENGL + bool "OpenGL" + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_EFL_X_XLIB + +comment "OpenGL support needs X11 and an OpenGL provider" + depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_EFL_OPENGLES + bool "OpenGL ES (w/ EGL)" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGLES + +comment "OpenGL ES support needs an OpenGL ES w/ EGL provider" + depends on !BR2_PACKAGE_HAS_LIBGLES || !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_EFL_OPENGL_NONE + bool "none" + +endchoice # OpenGL support + +config BR2_PACKAGE_EFL_ELPUT + bool "Elput" + depends on BR2_ENABLE_LOCALE # libinput + depends on BR2_PACKAGE_EFL_EEZE + select BR2_PACKAGE_LIBINPUT + select BR2_PACKAGE_LIBXKBCOMMON + help + The elput library is an efl abstraction for the libinput + library which can be used by various other subsystems + (ecore_fb, ecore_drm, etc) to handle interfacing with + libinput without having to duplicate the code in each + subsystem. + +comment "Elput support needs udev /dev management (eeze), locales" + depends on !BR2_PACKAGE_EFL_EEZE || !BR2_ENABLE_LOCALE + +config BR2_PACKAGE_EFL_DRM + bool "Evas DRM Engine" + depends on BR2_PACKAGE_EFL_EEZE + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + depends on BR2_PACKAGE_MESA3D_OPENGL_EGL # require libgbm from mesa3d + depends on BR2_ENABLE_LOCALE # efl-elput <- libinput + select BR2_PACKAGE_EFL_ELPUT + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBXKBCOMMON + help + This option enable building support for the Evas DRM Engine. + +comment "Evas DRM Engine needs udev /dev management (eeze), mesa3d w/ EGL support, threads, locales" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_MESA3D_OPENGL_EGL \ + || !BR2_PACKAGE_EFL_EEZE || !BR2_ENABLE_LOCALE + +comment "libevas loaders" + +config BR2_PACKAGE_EFL_PNG + bool "libevas png loader" + select BR2_PACKAGE_LIBPNG + help + This enables the loader code that loads png files using + libpng. + +config BR2_PACKAGE_EFL_JPEG + bool "libevas jpeg loader" + help + This enables the loader code that loads jpeg files using + libjpeg. + +config BR2_PACKAGE_EFL_GIF + bool "libevas gif loader" + select BR2_PACKAGE_GIFLIB + help + This enables the loader code that loads gif files using + giflib. + +config BR2_PACKAGE_EFL_TIFF + bool "libevas tiff loader" + select BR2_PACKAGE_TIFF + help + This enables the loader code that loads tiff files. + +config BR2_PACKAGE_EFL_WEBP + bool "libevas webp image loader" + select BR2_PACKAGE_WEBP + help + This enables the loader code that loads images using WebP. + +config BR2_PACKAGE_EFL_LIBRAW + bool "libraw loader" + select BR2_PACKAGE_LIBRAW + help + This option enables the Evas generic Libraw loader + +config BR2_PACKAGE_EFL_SVG + bool "SVG loader" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # librsvg -> pango -> harfbuzz + select BR2_PACKAGE_LIBRSVG + select BR2_PACKAGE_CAIRO + help + This option enables the Evas generic SVG loader + +endif # BR2_PACKAGE_EFL + +comment "efl needs a toolchain w/ C++, dynamic library, gcc >= 4.7, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP \ + || !BR2_HOST_GCC_AT_LEAST_4_7 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + depends on BR2_USE_MMU diff --git a/buildroot/package/efl/efl.hash b/buildroot/package/efl/efl.hash new file mode 100644 index 0000000..5507bda --- /dev/null +++ b/buildroot/package/efl/efl.hash @@ -0,0 +1,10 @@ +# From https://download.enlightenment.org/rel/libs/efl/efl-1.20.6.tar.xz.sha256 +sha256 56c67ea77435753a4f324a0a13488ba58f4ed7eb35a97c1a354fdc79c39a32c1 efl-1.20.6.tar.xz +sha256 d949e42ca8fd48d275c397c5fc2ac34c9b63ada715dcaf1a670e17bb62964341 COMPLIANCE +sha256 1f0597d326e2fdb54aa2f0caec6d8bb0afb9941ef32475f017ed02ca214fcf37 COPYING +sha256 781ee841d15835b393bfe7d4c6497dc1b05217479abd40daceaf7aa102a758e1 licenses/COPYING.BSD +sha256 e60d07dfb2c5264f9f405fa52bf0d4f85429dd9ae1bc2ffcff8af1924ef720d1 licenses/COPYING.FTL +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 licenses/COPYING.GPL +sha256 89f79ccd2c35ba220ddeba70ee36ca867226c41fc210bc5e7f1e9032c5b16d5f licenses/COPYING.LGPL +sha256 2996a1c43ee757f9c997a829d82bdd584052323e73cf02ff8126c6fbd95c2d87 licenses/COPYING.NGINX-MIT +sha256 48f124212f8fc024392a2d1d011fbb96c7ab8f89c0b72c671c33e9e1cb1d0790 licenses/COPYING.SMALL diff --git a/buildroot/package/efl/efl.mk b/buildroot/package/efl/efl.mk new file mode 100644 index 0000000..7085796 --- /dev/null +++ b/buildroot/package/efl/efl.mk @@ -0,0 +1,396 @@ +################################################################################ +# +# efl +# +################################################################################ + +EFL_VERSION = 1.20.6 +EFL_SOURCE = efl-$(EFL_VERSION).tar.xz +EFL_SITE = http://download.enlightenment.org/rel/libs/efl +EFL_LICENSE = BSD-2-Clause, LGPL-2.1+, GPL-2.0+, FTL, MIT +EFL_LICENSE_FILES = \ + COMPLIANCE \ + COPYING \ + licenses/COPYING.BSD \ + licenses/COPYING.FTL \ + licenses/COPYING.GPL \ + licenses/COPYING.LGPL \ + licenses/COPYING.NGINX-MIT \ + licenses/COPYING.SMALL + +EFL_INSTALL_STAGING = YES + +EFL_DEPENDENCIES = host-pkgconf host-efl host-luajit dbus freetype \ + jpeg luajit lz4 zlib + +# Configure options: +# --disable-lua-old: build elua for the target. +# --disable-sdl: disable sdl2 support. +# --disable-spectre: disable spectre image loader. +# --disable-xinput22: disable X11 XInput v2.2+ support. +# --disable-vnc-server: remove libvncserver dependency. +# --enable-liblz4: use liblz4 from lz4 package. +# --with-net-control=none: disable connman networkmanager. +# --with-doxygen: disable doxygen documentation +EFL_CONF_OPTS = \ + --with-edje-cc=$(HOST_DIR)/bin/edje_cc \ + --with-eet-eet=$(HOST_DIR)/bin/eet \ + --with-eldbus_codegen=$(HOST_DIR)/bin/eldbus-codegen \ + --with-elementary-codegen=$(HOST_DIR)/bin/elementary_codegen \ + --with-elm-prefs-cc=$(HOST_DIR)/bin/elm_prefs_cc \ + --with-elua=$(HOST_DIR)/bin/elua \ + --with-eolian-gen=$(HOST_DIR)/bin/eolian_gen \ + --disable-image-loader-jp2k \ + --with-net-control=none \ + --disable-lua-old \ + --disable-sdl \ + --disable-spectre \ + --disable-xinput22 \ + --disable-vnc-server \ + --enable-liblz4 \ + --with-doxygen=no + +# Disable untested configuration warning. +ifeq ($(BR2_PACKAGE_EFL_HAS_RECOMMENDED_CONFIG),) +EFL_CONF_OPTS += --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-abb +endif + +ifeq ($(BR2_PACKAGE_EFL_EOLIAN_CPP),y) +EFL_CONF_OPTS += --enable-cxx-bindings \ + --with-eolian-cxx=$(HOST_DIR)/bin/eolian_cxx +else +EFL_CONF_OPTS += --disable-cxx-bindings +endif + +ifeq ($(BR2_PACKAGE_EFL_EEZE),y) +EFL_DEPENDENCIES += udev +EFL_CONF_OPTS += --enable-libeeze +else +EFL_CONF_OPTS += --disable-libeeze +endif + +ifeq ($(BR2_PACKAGE_EFL_UTIL_LINUX_LIBMOUNT),y) +EFL_DEPENDENCIES += util-linux +EFL_CONF_OPTS += --enable-libmount +else +EFL_CONF_OPTS += --disable-libmount +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +EFL_CONF_OPTS += --enable-systemd +EFL_DEPENDENCIES += systemd +else +EFL_CONF_OPTS += --disable-systemd +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +EFL_CONF_OPTS += --enable-fontconfig +EFL_DEPENDENCIES += fontconfig +else +EFL_CONF_OPTS += --disable-fontconfig +endif + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +EFL_CONF_OPTS += --enable-fribidi +EFL_DEPENDENCIES += libfribidi +else +EFL_CONF_OPTS += --disable-fribidi +endif + +ifeq ($(BR2_PACKAGE_GSTREAMER1)$(BR2_PACKAGE_GST1_PLUGINS_BASE),yy) +EFL_CONF_OPTS += --enable-gstreamer1 +EFL_DEPENDENCIES += gstreamer1 gst1-plugins-base +else +EFL_CONF_OPTS += --disable-gstreamer1 +endif + +ifeq ($(BR2_PACKAGE_BULLET),y) +EFL_CONF_OPTS += --enable-physics +EFL_DEPENDENCIES += bullet +else +EFL_CONF_OPTS += --disable-physics +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +EFL_CONF_OPTS += --enable-audio +EFL_DEPENDENCIES += libsndfile +else +EFL_CONF_OPTS += --disable-audio +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +EFL_CONF_OPTS += --enable-pulseaudio +EFL_DEPENDENCIES += pulseaudio +else +EFL_CONF_OPTS += --disable-pulseaudio +endif + +ifeq ($(BR2_PACKAGE_HARFBUZZ),y) +EFL_DEPENDENCIES += harfbuzz +EFL_CONF_OPTS += --enable-harfbuzz +else +EFL_CONF_OPTS += --disable-harfbuzz +endif + +ifeq ($(BR2_PACKAGE_TSLIB),y) +EFL_DEPENDENCIES += tslib +EFL_CONF_OPTS += --enable-tslib +else +EFL_CONF_OPTS += --disable-tslib +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +EFL_DEPENDENCIES += libglib2 +EFL_CONF_OPTS += --with-glib=yes +else +EFL_CONF_OPTS += --with-glib=no +endif + +# Prefer openssl (the default) over gnutls. +ifeq ($(BR2_PACKAGE_OPENSSL),y) +EFL_DEPENDENCIES += openssl +EFL_CONF_OPTS += --with-crypto=openssl +else ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy) +EFL_DEPENDENCIES += gnutls libgcrypt +EFL_CONF_OPTS += --with-crypto=gnutls \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr +else +EFL_CONF_OPTS += --with-crypto=none +endif # BR2_PACKAGE_OPENSSL + +ifeq ($(BR2_PACKAGE_EFL_ELPUT),y) +EFL_CONF_OPTS += --enable-elput +EFL_DEPENDENCIES += libinput +else +EFL_CONF_OPTS += --disable-elput +endif + +ifeq ($(BR2_PACKAGE_EFL_FB),y) +EFL_CONF_OPTS += --enable-fb +else +EFL_CONF_OPTS += --disable-fb +endif + +ifeq ($(BR2_PACKAGE_EFL_X_XLIB),y) +EFL_CONF_OPTS += \ + --with-x11=xlib \ + --with-x=$(STAGING_DIR) \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib + +EFL_DEPENDENCIES += \ + xlib_libX11 \ + xlib_libXcomposite \ + xlib_libXcursor \ + xlib_libXdamage \ + xlib_libXext \ + xlib_libXinerama \ + xlib_libXrandr \ + xlib_libXrender \ + xlib_libXScrnSaver \ + xlib_libXtst +else +EFL_CONF_OPTS += --with-x11=none +endif + +ifeq ($(BR2_PACKAGE_EFL_OPENGL),y) +EFL_CONF_OPTS += --with-opengl=full +EFL_DEPENDENCIES += libgl +# OpenGL ES requires EGL +else ifeq ($(BR2_PACKAGE_EFL_OPENGLES),y) +EFL_CONF_OPTS += --with-opengl=es --enable-egl +EFL_DEPENDENCIES += libegl libgles +else ifeq ($(BR2_PACKAGE_EFL_OPENGL_NONE),y) +EFL_CONF_OPTS += --with-opengl=none +endif + +ifeq ($(BR2_PACKAGE_EFL_DRM),y) +EFL_CONF_OPTS += --enable-drm +EFL_DEPENDENCIES += libdrm libegl mesa3d +else +EFL_CONF_OPTS += --disable-drm +endif + +# The EFL Wayland support requires Evas GLES DRM engine support +# which depends on wayland-client to build. +# So enable gl_drm only when wayland support is selected. +ifeq ($(BR2_PACKAGE_EFL_WAYLAND),y) +EFL_DEPENDENCIES += wayland wayland-protocols +EFL_CONF_OPTS += --enable-wayland --enable-gl-drm +else +EFL_CONF_OPTS += --disable-wayland --disable-gl-drm +endif + +EFL_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBXKBCOMMON),libxkbcommon) + +# Loaders that need external dependencies needs to be --enable-XXX=yes +# otherwise the default is '=static'. +# All other loaders are statically built-in +ifeq ($(BR2_PACKAGE_EFL_PNG),y) +EFL_CONF_OPTS += --enable-image-loader-png=yes +EFL_DEPENDENCIES += libpng +else +EFL_CONF_OPTS += --disable-image-loader-png +endif + +ifeq ($(BR2_PACKAGE_EFL_JPEG),y) +EFL_CONF_OPTS += --enable-image-loader-jpeg=yes +# efl already depends on jpeg. +else +EFL_CONF_OPTS += --disable-image-loader-jpeg +endif + +ifeq ($(BR2_PACKAGE_EFL_GIF),y) +EFL_CONF_OPTS += --enable-image-loader-gif=yes +EFL_DEPENDENCIES += giflib +else +EFL_CONF_OPTS += --disable-image-loader-gif +endif + +ifeq ($(BR2_PACKAGE_EFL_TIFF),y) +EFL_CONF_OPTS += --enable-image-loader-tiff=yes +EFL_DEPENDENCIES += tiff +else +EFL_CONF_OPTS += --disable-image-loader-tiff +endif + +ifeq ($(BR2_PACKAGE_EFL_WEBP),y) +EFL_CONF_OPTS += --enable-image-loader-webp=yes +EFL_DEPENDENCIES += webp +else +EFL_CONF_OPTS += --disable-image-loader-webp +endif + +ifeq ($(BR2_PACKAGE_POPPLER),y) +EFL_DEPENDENCIES += poppler +EFL_CONF_OPTS += --enable-poppler +else +EFL_CONF_OPTS += --disable-poppler +endif + +ifeq ($(BR2_PACKAGE_EFL_LIBRAW),y) +EFL_DEPENDENCIES += libraw +EFL_CONF_OPTS += --enable-libraw +else +EFL_CONF_OPTS += --disable-libraw +endif + +ifeq ($(BR2_PACKAGE_EFL_SVG),y) +EFL_DEPENDENCIES += librsvg cairo +EFL_CONF_OPTS += --enable-librsvg +else +EFL_CONF_OPTS += --disable-librsvg +endif + +ifeq ($(BR2_PACKAGE_UPOWER),) +# upower ecore system module is only useful if upower +# dbus service is available. +# It's not essential, only used to notify applications +# of power state, such as low battery or AC power, so +# they can adapt their power consumption. +define EFL_HOOK_REMOVE_UPOWER + rm -fr $(TARGET_DIR)/usr/lib/ecore/system/upower +endef +EFL_POST_INSTALL_TARGET_HOOKS = EFL_HOOK_REMOVE_UPOWER +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +EFL_DEPENDENCIES += libunwind +endif + +$(eval $(autotools-package)) + +################################################################################ +# +# host-efl +# +################################################################################ + +# We want to build only some host tools used later in the build. +# Actually we want: edje_cc, eet and embryo_cc. eolian_cxx is built only +# if selected for the target. + +# Host dependencies: +# * host-dbus: for Eldbus +# * host-freetype: for libevas +# * host-libglib2: for libecore +# * host-libjpeg, host-libpng: for libevas image loader +# * host-luajit for Elua tool for the host +HOST_EFL_DEPENDENCIES = \ + host-pkgconf \ + host-dbus \ + host-freetype \ + host-libglib2 \ + host-libjpeg \ + host-libpng \ + host-luajit \ + host-zlib + +# Configure options: +# --disable-audio, --disable-multisense remove libsndfile dependency. +# --disable-fontconfig: remove dependency on fontconfig. +# --disable-fribidi: remove dependency on libfribidi. +# --disable-gstreamer1: remove dependency on gtreamer 1.0. +# --disable-libeeze: remove libudev dependency. +# --disable-libmount: remove dependency on host-util-linux libmount. +# --disable-lua-old: build elua for the host. +# --disable-physics: remove Bullet dependency. +# --disable-poppler: disable poppler image loader. +# --disable-spectre: disable spectre image loader. +# --disable-systemd: disable systemd dependency. +# --disable-vnc-server: remove libvncserver dependency. +# --enable-image-loader-gif=no: disable Gif dependency. +# --enable-image-loader-tiff=no: disable Tiff dependency. +# --with-crypto=none: remove dependencies on openssl or gnutls. +# --with-doxygen: disable doxygen documentation +# --with-net-control=none: disable connman networkmanager. +# --with-x11=none: remove dependency on X.org. +# Yes I really know what I am doing. +HOST_EFL_CONF_OPTS += \ + --disable-audio \ + --disable-fontconfig \ + --disable-fribidi \ + --disable-gstreamer1 \ + --disable-libeeze \ + --disable-libmount \ + --disable-libraw \ + --disable-librsvg \ + --disable-lua-old \ + --disable-multisense \ + --disable-physics \ + --disable-poppler \ + --disable-spectre \ + --disable-systemd \ + --disable-xcf \ + --disable-vnc-server \ + --enable-image-loader-gif=no \ + --enable-image-loader-jpeg=yes \ + --enable-image-loader-png=yes \ + --enable-image-loader-tiff=no \ + --with-crypto=none \ + --with-doxygen=no \ + --with-glib=yes \ + --with-net-control=none \ + --with-opengl=none \ + --with-x11=none \ + --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-abb + +# Enable Eolian language bindings to provide eolian_cxx tool for the +# host which is required to build Eolian language bindings for the +# target. +ifeq ($(BR2_PACKAGE_EFL_EOLIAN_CPP),y) +HOST_EFL_CONF_OPTS += --enable-cxx-bindings +else +HOST_EFL_CONF_OPTS += --disable-cxx-bindings +endif + +# Always disable upower system module from host as it's +# not useful and would try to use the output/host/var +# system bus which is non-existent and does not contain +# any upower service in it. +define HOST_EFL_HOOK_REMOVE_UPOWER + rm -fr $(HOST_DIR)/lib/ecore/system/upower +endef +HOST_EFL_POST_INSTALL_HOOKS = HOST_EFL_HOOK_REMOVE_UPOWER + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/eigen/Config.in b/buildroot/package/eigen/Config.in new file mode 100644 index 0000000..48752e0 --- /dev/null +++ b/buildroot/package/eigen/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_EIGEN + bool "eigen" + depends on BR2_INSTALL_LIBSTDCPP + help + Eigen is a C++ template library for linear algebra: vectors, + matrices, and related algorithms. It is versatile, fast, + elegant and works on many platforms (OS/Compilers). + + This package only installs header files to the include path. + If you just want to use Eigen, you can use the header files + right away. There is no binary to link to. Eigen is a pure + template library defined in the headers. + + http://eigen.tuxfamily.org/ + +if BR2_PACKAGE_EIGEN + +config BR2_PACKAGE_EIGEN_UNSUPPORTED_MODULES + bool "unsupported modules" + help + Install eigen unsupported modules +endif + +comment "eigen needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/eigen/eigen.hash b/buildroot/package/eigen/eigen.hash new file mode 100644 index 0000000..4a1bcdf --- /dev/null +++ b/buildroot/package/eigen/eigen.hash @@ -0,0 +1,8 @@ +# Locally computed +sha256 dd254beb0bafc695d0f62ae1a222ff85b52dbaa3a16f76e781dce22d0d20a4a6 3.3.4.tar.bz2 +sha256 4f877e5ae4672568ef82cfd0023e2cef4a7cf55d867ab249efc9569a7eb9e5b1 COPYING.BSD +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.GPL +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL +sha256 f5b330efdad110cdd84d585ec61220b0650461fa599e36b13e1726c9346dcfb9 COPYING.MINPACK +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 COPYING.MPL2 +sha256 c83230b770f17ef1386ea1fd3681271dd98aa93646bdbfb5bff3a1b7050fff9d COPYING.README diff --git a/buildroot/package/eigen/eigen.mk b/buildroot/package/eigen/eigen.mk new file mode 100644 index 0000000..89f54fb --- /dev/null +++ b/buildroot/package/eigen/eigen.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# eigen +# +################################################################################ + +EIGEN_VERSION = 3.3.4 +EIGEN_SOURCE = $(EIGEN_VERSION).tar.bz2 +EIGEN_SITE = https://bitbucket.org/eigen/eigen/get +EIGEN_LICENSE = MPL2, BSD-3-Clause, LGPL-2.1 +EIGEN_LICENSE_FILES = COPYING.MPL2 COPYING.BSD COPYING.LGPL COPYING.README +EIGEN_INSTALL_STAGING = YES +EIGEN_INSTALL_TARGET = NO +EIGEN_DEST_DIR = $(STAGING_DIR)/usr/include/eigen3 + +ifeq ($(BR2_PACKAGE_EIGEN_UNSUPPORTED_MODULES),y) +define EIGEN_INSTALL_UNSUPPORTED_MODULES_CMDS + mkdir -p $(EIGEN_DEST_DIR)/unsupported + cp -a $(@D)/unsupported/Eigen $(EIGEN_DEST_DIR)/unsupported +endef +endif + +# Generate the .pc file at build time +define EIGEN_BUILD_CMDS + sed -r -e 's,^Version: .*,Version: $(EIGEN_VERSION),' \ + -e 's,^Cflags: .*,Cflags: -I$(EIGEN_DEST_DIR),' \ + $(@D)/eigen3.pc.in >$(@D)/eigen3.pc +endef + +# This package only consists of headers that need to be +# copied over to the sysroot for compile time use +define EIGEN_INSTALL_STAGING_CMDS + $(RM) -r $(EIGEN_DEST_DIR) + mkdir -p $(EIGEN_DEST_DIR) + cp -a $(@D)/Eigen $(EIGEN_DEST_DIR) + $(EIGEN_INSTALL_UNSUPPORTED_MODULES_CMDS) + $(INSTALL) -D -m 0644 $(@D)/eigen3.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/eigen3.pc +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ejabberd/0001-remove-make-targets-for-deps.patch b/buildroot/package/ejabberd/0001-remove-make-targets-for-deps.patch new file mode 100644 index 0000000..f012140 --- /dev/null +++ b/buildroot/package/ejabberd/0001-remove-make-targets-for-deps.patch @@ -0,0 +1,43 @@ +From 21d1f05a8882657c151397d0e4723535402f1757 Mon Sep 17 00:00:00 2001 +From: Philipp Huebner +Date: Wed, 20 Jan 2016 10:22:57 -0500 +Subject: [PATCH] remove make targets for deps + +Without this patch, dependencies would be downloaded and compiled +using rebar at build time. + +Signed-off-by: Frank Hunleth + +diff --git a/Makefile.in b/Makefile.in +index df2abfdc..8c8fd714 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -86,27 +86,11 @@ else + INIT_USER=$(INSTALLUSER) + endif + +-all: deps src ++all: src + +-deps: deps/.got +- +-deps/.got: +- rm -rf deps/.got +- rm -rf deps/.built +- mkdir -p deps +- $(REBAR) get-deps && :> deps/.got +- +-deps/.built: deps/.got +- $(REBAR) compile && :> deps/.built +- +-src: deps/.built ++src: + $(REBAR) skip_deps=true compile + +-update: +- rm -rf deps/.got +- rm -rf deps/.built +- $(REBAR) update-deps && :> deps/.got +- + xref: all + $(REBAR) skip_deps=true xref diff --git a/buildroot/package/ejabberd/0002-remove-dependencies-from-rebar-config.patch b/buildroot/package/ejabberd/0002-remove-dependencies-from-rebar-config.patch new file mode 100644 index 0000000..154c7bf --- /dev/null +++ b/buildroot/package/ejabberd/0002-remove-dependencies-from-rebar-config.patch @@ -0,0 +1,106 @@ +From 8674f61701da41cc53c532b5fa3a516838a2c5d4 Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Wed, 10 Jan 2018 15:14:56 +0100 +Subject: [PATCH] remove dependencies from rebar config + +Without this patch, dependencies would be downloaded and compiled by +rebar at build time. + +Signed-off-by: Johan Oudinet +--- + rebar.config | 72 ------------------------------------------------------------ + 1 file changed, 72 deletions(-) + +diff --git a/rebar.config b/rebar.config +index d6ad5e7b..0b246b92 100644 +--- a/rebar.config ++++ b/rebar.config +@@ -18,68 +18,6 @@ + %%% + %%%---------------------------------------------------------------------- + +-{deps, [{lager, ".*", {git, "https://github.com/erlang-lager/lager", +- {tag, {if_version_above, "17", "3.4.2", "3.2.1"}}}}, +- {p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.10"}}}, +- {cache_tab, ".*", {git, "https://github.com/processone/cache_tab", {tag, "1.0.12"}}}, +- {fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.0.17"}}}, +- {stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.10"}}}, +- {fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.25"}}}, +- {xmpp, ".*", {git, "https://github.com/processone/xmpp", {tag, "1.1.16"}}}, +- {fast_yaml, ".*", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.12"}}}, +- {jiffy, ".*", {git, "https://github.com/davisp/jiffy", {tag, "0.14.8"}}}, +- {p1_oauth2, ".*", {git, "https://github.com/processone/p1_oauth2", {tag, "0.6.2"}}}, +- {luerl, ".*", {git, "https://github.com/rvirding/luerl", {tag, "v0.2"}}}, +- {jose, ".*", {git, "git://github.com/potatosalad/erlang-jose.git", {tag, "1.8.4"}}}, +- {fs, ".*", {git, "https://github.com/synrc/fs.git", {tag, "2.12.0"}}}, +- {if_var_true, stun, {stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.0.16"}}}}, +- {if_var_true, sip, {esip, ".*", {git, "https://github.com/processone/esip", {tag, "1.0.17"}}}}, +- {if_var_true, mysql, {p1_mysql, ".*", {git, "https://github.com/processone/p1_mysql", +- {tag, "1.0.4"}}}}, +- {if_var_true, pgsql, {p1_pgsql, ".*", {git, "https://github.com/processone/p1_pgsql", +- {tag, "1.1.4"}}}}, +- {if_var_true, sqlite, {sqlite3, ".*", {git, "https://github.com/processone/erlang-sqlite3", +- {tag, "1.1.5"}}}}, +- {if_var_true, pam, {epam, ".*", {git, "https://github.com/processone/epam", +- {tag, "1.0.3"}}}}, +- {if_var_true, zlib, {ezlib, ".*", {git, "https://github.com/processone/ezlib", +- {tag, "1.0.3"}}}}, +- {if_var_true, riak, {riakc, ".*", {git, "https://github.com/processone/riak-erlang-client.git", +- {tag, {if_version_above, "19", "develop", "2.5.3"}}}}}, +- {if_var_true, graphics, {eimp, ".*", {git, "https://github.com/processone/eimp.git", {tag, "1.0.2"}}}}, +- %% Elixir support, needed to run tests +- {if_var_true, elixir, {elixir, ".*", {git, "https://github.com/elixir-lang/elixir", +- {tag, {if_version_above, "17", "v1.4.4", "v1.1.1"}}}}}, +- %% TODO: When modules are fully migrated to new structure and mix, we will not need anymore rebar_elixir_plugin +- {if_not_rebar3, {if_var_true, elixir, {rebar_elixir_plugin, ".*", +- {git, "https://github.com/processone/rebar_elixir_plugin", "0.1.0"}}}}, +- {if_var_true, iconv, {iconv, ".*", {git, "https://github.com/processone/iconv", +- {tag, "1.0.6"}}}}, +- {if_var_true, tools, {meck, "0.8.*", {git, "https://github.com/eproxus/meck", +- {tag, "0.8.4"}}}}, +- {if_var_true, tools, {moka, ".*", {git, "https://github.com/processone/moka.git", +- {tag, "1.0.5c"}}}}, +- {if_var_true, redis, {eredis, ".*", {git, "https://github.com/wooga/eredis", +- {tag, "v1.0.8"}}}}]}. +- +-{if_var_true, latest_deps, +- {floating_deps, [cache_tab, +- fast_tls, +- stringprep, +- fast_xml, +- esip, +- stun, +- fast_yaml, +- xmpp, +- p1_utils, +- p1_mysql, +- p1_pgsql, +- p1_oauth2, +- epam, +- ezlib, +- eimp, +- iconv]}}. +- + {erl_first_files, ["src/ejabberd_config.erl", "src/gen_mod.erl", "src/mod_muc_room.erl", "src/mod_push.erl"]}. + + {erl_opts, [nowarn_deprecated_function, +@@ -153,16 +91,6 @@ + {if_version_above, "17", {cover_enabled, true}}. + {cover_export_enabled, true}. + +-{post_hook_configure, [{"fast_tls", []}, +- {"stringprep", []}, +- {"fast_yaml", []}, +- {if_var_true, sip, {"esip", []}}, +- {"fast_xml", [{if_var_true, full_xml, "--enable-full-xml"}]}, +- {if_var_true, pam, {"epam", []}}, +- {if_var_true, zlib, {"ezlib", []}}, +- {if_var_true, graphics, {"eimp", []}}, +- {if_var_true, iconv, {"iconv", []}}]}. +- + {port_env, [{"CFLAGS", "-g -O2 -Wall"}]}. + + {port_specs, [{"priv/lib/jid.so", ["c_src/jid.c"]}]}. +-- +2.14.1 + diff --git a/buildroot/package/ejabberd/0003-remove-checking-erlang-version.patch b/buildroot/package/ejabberd/0003-remove-checking-erlang-version.patch new file mode 100644 index 0000000..da3bf2a --- /dev/null +++ b/buildroot/package/ejabberd/0003-remove-checking-erlang-version.patch @@ -0,0 +1,32 @@ +From f384518dedec4ad657ad69d55754076c13c22d96 Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Wed, 20 Jan 2016 08:11:32 -0500 +Subject: [PATCH] remove checking erlang version + +Without this patch, the configure will try to run erlang to simply check +if the version is supported by ejabberd. Instead, we do this test +statically. + +Signed-off-by: Johan Oudinet +--- + configure.ac | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 97e89a2..cd1ab08 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -39,10 +39,8 @@ AC_ARG_ENABLE(erlang-version-check, + [Check Erlang/OTP version @<:@default=yes@:>@])]) + case "$enable_erlang_version_check" in + yes|'') +- ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX]) + ;; + no) +- ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX],[warn]) + ;; + esac + +-- +2.5.0 + diff --git a/buildroot/package/ejabberd/0004-correct-includes.patch b/buildroot/package/ejabberd/0004-correct-includes.patch new file mode 100644 index 0000000..f8f827a --- /dev/null +++ b/buildroot/package/ejabberd/0004-correct-includes.patch @@ -0,0 +1,1919 @@ +From 0487178693143955ff57e3c9371fb6e7b164294c Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Thu, 11 Jan 2018 12:49:38 +0100 +Subject: [PATCH] correct includes + +Use include_lib() instead of include() for files from external +libraries. See https://github.com/processone/ejabberd/pull/1446 + +Note: Philipp Huebner has a similar patch in Debian's port of ejabberd +but it was easier to redo this patch from scratch with the following sed +command on ejabberd git repository than adapting Huebner's patch format: +for f in src/*.erl include/*.hrl; do + sed -i -e 's,esip/include,s1_sip/include,g' \ + -e 's,include("ns.hrl,include_lib("p1_xmpp/include/ns.hrl,g' \ + -e 's,include("fxml.hrl,include_lib("p1_xml/include/fxml.hrl,g' \ + -e 's,include("xmpp\.hrl,include_lib("p1_xmpp/include/xmpp.hrl,g' \ + -e 's,include("jid\.hrl,include_lib("p1_xmpp/include/jid.hrl,g' \ + "$f" +done + +Signed-off-by: Johan Oudinet +--- + include/jlib.hrl | 4 ++-- + src/acl.erl | 2 +- + src/acme_challenge.erl | 2 +- + src/ejabberd_acme.erl | 2 +- + src/ejabberd_acme_comm.erl | 2 +- + src/ejabberd_auth_anonymous.erl | 2 +- + src/ejabberd_bosh.erl | 2 +- + src/ejabberd_c2s.erl | 2 +- + src/ejabberd_captcha.erl | 2 +- + src/ejabberd_http.erl | 2 +- + src/ejabberd_http_ws.erl | 2 +- + src/ejabberd_iq.erl | 2 +- + src/ejabberd_local.erl | 2 +- + src/ejabberd_oauth.erl | 2 +- + src/ejabberd_oauth_rest.erl | 2 +- + src/ejabberd_oauth_sql.erl | 2 +- + src/ejabberd_piefxis.erl | 2 +- + src/ejabberd_router.erl | 2 +- + src/ejabberd_router_multicast.erl | 2 +- + src/ejabberd_s2s.erl | 2 +- + src/ejabberd_s2s_in.erl | 2 +- + src/ejabberd_s2s_out.erl | 2 +- + src/ejabberd_service.erl | 2 +- + src/ejabberd_sm.erl | 2 +- + src/ejabberd_socket.erl | 2 +- + src/ejabberd_system_monitor.erl | 2 +- + src/ejabberd_web.erl | 2 +- + src/ejabberd_web_admin.erl | 2 +- + src/ejabberd_websocket.erl | 2 +- + src/ejabberd_xmlrpc.erl | 2 +- + src/gen_iq_handler.erl | 2 +- + src/gen_pubsub_node.erl | 2 +- + src/gen_pubsub_nodetree.erl | 2 +- + src/jd2ejd.erl | 2 +- + src/mod_adhoc.erl | 2 +- + src/mod_admin_extra.erl | 2 +- + src/mod_admin_update_sql.erl | 2 +- + src/mod_announce.erl | 2 +- + src/mod_announce_mnesia.erl | 2 +- + src/mod_announce_riak.erl | 2 +- + src/mod_announce_sql.erl | 2 +- + src/mod_avatar.erl | 2 +- + src/mod_block_strangers.erl | 2 +- + src/mod_blocking.erl | 2 +- + src/mod_bosh.erl | 2 +- + src/mod_caps.erl | 2 +- + src/mod_carboncopy.erl | 2 +- + src/mod_client_state.erl | 2 +- + src/mod_configure.erl | 2 +- + src/mod_delegation.erl | 2 +- + src/mod_disco.erl | 2 +- + src/mod_echo.erl | 2 +- + src/mod_fail2ban.erl | 2 +- + src/mod_http_api.erl | 2 +- + src/mod_http_upload.erl | 2 +- + src/mod_http_upload_quota.erl | 2 +- + src/mod_irc.erl | 2 +- + src/mod_irc_connection.erl | 2 +- + src/mod_irc_mnesia.erl | 2 +- + src/mod_irc_riak.erl | 2 +- + src/mod_irc_sql.erl | 2 +- + src/mod_last.erl | 2 +- + src/mod_legacy_auth.erl | 2 +- + src/mod_mam.erl | 2 +- + src/mod_mam_mnesia.erl | 2 +- + src/mod_mam_sql.erl | 2 +- + src/mod_metrics.erl | 2 +- + src/mod_mix.erl | 2 +- + src/mod_muc.erl | 2 +- + src/mod_muc_admin.erl | 2 +- + src/mod_muc_log.erl | 2 +- + src/mod_muc_mnesia.erl | 2 +- + src/mod_muc_riak.erl | 2 +- + src/mod_muc_room.erl | 2 +- + src/mod_muc_sql.erl | 2 +- + src/mod_multicast.erl | 2 +- + src/mod_offline.erl | 2 +- + src/mod_offline_mnesia.erl | 2 +- + src/mod_offline_riak.erl | 2 +- + src/mod_offline_sql.erl | 2 +- + src/mod_ping.erl | 2 +- + src/mod_pres_counter.erl | 2 +- + src/mod_privacy.erl | 2 +- + src/mod_privacy_mnesia.erl | 2 +- + src/mod_privacy_riak.erl | 2 +- + src/mod_privacy_sql.erl | 2 +- + src/mod_private.erl | 2 +- + src/mod_private_mnesia.erl | 2 +- + src/mod_private_riak.erl | 2 +- + src/mod_private_sql.erl | 2 +- + src/mod_privilege.erl | 2 +- + src/mod_proxy65_service.erl | 2 +- + src/mod_pubsub.erl | 2 +- + src/mod_push.erl | 2 +- + src/mod_push_keepalive.erl | 2 +- + src/mod_push_mnesia.erl | 2 +- + src/mod_push_sql.erl | 2 +- + src/mod_register.erl | 2 +- + src/mod_register_web.erl | 2 +- + src/mod_roster.erl | 2 +- + src/mod_s2s_dialback.erl | 2 +- + src/mod_service_log.erl | 2 +- + src/mod_shared_roster.erl | 2 +- + src/mod_shared_roster_ldap.erl | 2 +- + src/mod_shared_roster_mnesia.erl | 2 +- + src/mod_shared_roster_riak.erl | 2 +- + src/mod_shared_roster_sql.erl | 2 +- + src/mod_sic.erl | 2 +- + src/mod_sip.erl | 2 +- + src/mod_sip_proxy.erl | 2 +- + src/mod_sip_registrar.erl | 2 +- + src/mod_stats.erl | 2 +- + src/mod_stream_mgmt.erl | 2 +- + src/mod_time.erl | 2 +- + src/mod_vcard.erl | 2 +- + src/mod_vcard_ldap.erl | 2 +- + src/mod_vcard_mnesia.erl | 2 +- + src/mod_vcard_riak.erl | 2 +- + src/mod_vcard_sql.erl | 2 +- + src/mod_vcard_xupdate.erl | 2 +- + src/mod_version.erl | 2 +- + src/node_dag.erl | 2 +- + src/node_dispatch.erl | 2 +- + src/node_flat.erl | 2 +- + src/node_flat_sql.erl | 2 +- + src/node_online.erl | 2 +- + src/nodetree_dag.erl | 2 +- + src/nodetree_tree.erl | 2 +- + src/nodetree_tree_sql.erl | 2 +- + src/prosody2ejabberd.erl | 2 +- + src/pubsub_subscription.erl | 2 +- + src/pubsub_subscription_sql.erl | 2 +- + src/xmpp_stream_in.erl | 2 +- + src/xmpp_stream_out.erl | 2 +- + src/xmpp_stream_pkix.erl | 2 +- + 135 files changed, 136 insertions(+), 136 deletions(-) + +diff --git a/include/jlib.hrl b/include/jlib.hrl +index cd5fedbf..293fcc0e 100644 +--- a/include/jlib.hrl ++++ b/include/jlib.hrl +@@ -18,8 +18,8 @@ + %%% + %%%---------------------------------------------------------------------- + +--include("ns.hrl"). +--include("fxml.hrl"). ++-include_lib("p1_xmpp/include/ns.hrl"). ++-include_lib("p1_xml/include/fxml.hrl"). + + -define(STANZA_ERROR(Code, Type, Condition), + #xmlel{name = <<"error">>, +diff --git a/src/acl.erl b/src/acl.erl +index 2d848b99..88df4625 100644 +--- a/src/acl.erl ++++ b/src/acl.erl +@@ -45,7 +45,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + + -record(acl, {aclname, aclspec}). + -record(access, {name :: aclname(), +diff --git a/src/acme_challenge.erl b/src/acme_challenge.erl +index f4fde4e7..45fc6d8f 100644 +--- a/src/acme_challenge.erl ++++ b/src/acme_challenge.erl +@@ -16,7 +16,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_http.hrl"). + -include("ejabberd_acme.hrl"). + +diff --git a/src/ejabberd_acme.erl b/src/ejabberd_acme.erl +index a5166b45..eee74092 100644 +--- a/src/ejabberd_acme.erl ++++ b/src/ejabberd_acme.erl +@@ -21,7 +21,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_commands.hrl"). + -include("ejabberd_acme.hrl"). + -include_lib("public_key/include/public_key.hrl"). +diff --git a/src/ejabberd_acme_comm.erl b/src/ejabberd_acme_comm.erl +index a5668d08..02acd1c4 100644 +--- a/src/ejabberd_acme_comm.erl ++++ b/src/ejabberd_acme_comm.erl +@@ -24,7 +24,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_acme.hrl"). + -include_lib("public_key/include/public_key.hrl"). +diff --git a/src/ejabberd_auth_anonymous.erl b/src/ejabberd_auth_anonymous.erl +index a4f3ac1c..697b3e08 100644 +--- a/src/ejabberd_auth_anonymous.erl ++++ b/src/ejabberd_auth_anonymous.erl +@@ -46,7 +46,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + + start(Host) -> + ejabberd_hooks:add(sm_register_connection_hook, Host, +diff --git a/src/ejabberd_bosh.erl b/src/ejabberd_bosh.erl +index 1df6681f..e8cc5f9b 100644 +--- a/src/ejabberd_bosh.erl ++++ b/src/ejabberd_bosh.erl +@@ -47,7 +47,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl +index a94d065f..a56d9041 100644 +--- a/src/ejabberd_c2s.erl ++++ b/src/ejabberd_c2s.erl +@@ -52,7 +52,7 @@ + host_up/1, host_down/1]). + + -include("ejabberd.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("mod_roster.hrl"). + +diff --git a/src/ejabberd_captcha.erl b/src/ejabberd_captcha.erl +index 76af5278..3a950786 100644 +--- a/src/ejabberd_captcha.erl ++++ b/src/ejabberd_captcha.erl +@@ -43,7 +43,7 @@ + is_feature_available/0, create_captcha_x/5, + opt_type/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd.hrl"). + -include("logger.hrl"). + -include("ejabberd_http.hrl"). +diff --git a/src/ejabberd_http.erl b/src/ejabberd_http.erl +index 0bc0d8fc..d39a585d 100644 +--- a/src/ejabberd_http.erl ++++ b/src/ejabberd_http.erl +@@ -39,7 +39,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/ejabberd_http_ws.erl b/src/ejabberd_http_ws.erl +index f9f7b07e..5c0e6ea1 100644 +--- a/src/ejabberd_http_ws.erl ++++ b/src/ejabberd_http_ws.erl +@@ -39,7 +39,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/ejabberd_iq.erl b/src/ejabberd_iq.erl +index 7d2751dc..76a6b056 100644 +--- a/src/ejabberd_iq.erl ++++ b/src/ejabberd_iq.erl +@@ -34,7 +34,7 @@ + -export([init/1, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + + -record(state, {expire = infinity :: timeout()}). +diff --git a/src/ejabberd_local.erl b/src/ejabberd_local.erl +index cc1d6a2e..f72fd43b 100644 +--- a/src/ejabberd_local.erl ++++ b/src/ejabberd_local.erl +@@ -50,7 +50,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(state, {}). + +diff --git a/src/ejabberd_oauth.erl b/src/ejabberd_oauth.erl +index df4e4bc2..34bf24f8 100644 +--- a/src/ejabberd_oauth.erl ++++ b/src/ejabberd_oauth.erl +@@ -52,7 +52,7 @@ + + -export([oauth_issue_token/3, oauth_list_tokens/0, oauth_revoke_token/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd.hrl"). + -include("logger.hrl"). +diff --git a/src/ejabberd_oauth_rest.erl b/src/ejabberd_oauth_rest.erl +index 206fab43..1a7287ee 100644 +--- a/src/ejabberd_oauth_rest.erl ++++ b/src/ejabberd_oauth_rest.erl +@@ -37,7 +37,7 @@ + -include("ejabberd.hrl"). + -include("ejabberd_oauth.hrl"). + -include("logger.hrl"). +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + + init() -> + rest:start(?MYNAME), +diff --git a/src/ejabberd_oauth_sql.erl b/src/ejabberd_oauth_sql.erl +index 14eaca6a..fcd105ba 100644 +--- a/src/ejabberd_oauth_sql.erl ++++ b/src/ejabberd_oauth_sql.erl +@@ -36,7 +36,7 @@ + -include("ejabberd_oauth.hrl"). + -include("ejabberd.hrl"). + -include("ejabberd_sql_pt.hrl"). +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("logger.hrl"). + + init() -> +diff --git a/src/ejabberd_piefxis.erl b/src/ejabberd_piefxis.erl +index ecb4908a..7331f442 100644 +--- a/src/ejabberd_piefxis.erl ++++ b/src/ejabberd_piefxis.erl +@@ -42,7 +42,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + -include("mod_roster.hrl"). + +diff --git a/src/ejabberd_router.erl b/src/ejabberd_router.erl +index e2901483..315505ec 100644 +--- a/src/ejabberd_router.erl ++++ b/src/ejabberd_router.erl +@@ -71,7 +71,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + -include("ejabberd_router.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -callback init() -> any(). + -callback register_route(binary(), binary(), local_hint(), +diff --git a/src/ejabberd_router_multicast.erl b/src/ejabberd_router_multicast.erl +index 5d5acfca..3f206ef2 100644 +--- a/src/ejabberd_router_multicast.erl ++++ b/src/ejabberd_router_multicast.erl +@@ -43,7 +43,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(route_multicast, {domain = <<"">> :: binary() | '_', + pid = self() :: pid()}). +diff --git a/src/ejabberd_s2s.erl b/src/ejabberd_s2s.erl +index 0626d62f..e2fc34c9 100644 +--- a/src/ejabberd_s2s.erl ++++ b/src/ejabberd_s2s.erl +@@ -57,7 +57,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_commands.hrl"). + +diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl +index a949e83d..3d8e100e 100644 +--- a/src/ejabberd_s2s_in.erl ++++ b/src/ejabberd_s2s_in.erl +@@ -45,7 +45,7 @@ + host_up/1, host_down/1]). + + -include("ejabberd.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + + -type state() :: map(). +diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl +index fea5d816..c035731f 100644 +--- a/src/ejabberd_s2s_out.erl ++++ b/src/ejabberd_s2s_out.erl +@@ -43,7 +43,7 @@ + route/2, establish/1, update_state/2, host_up/1, host_down/1]). + + -include("ejabberd.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + + -type state() :: map(). +diff --git a/src/ejabberd_service.erl b/src/ejabberd_service.erl +index 7b5f945d..895fed09 100644 +--- a/src/ejabberd_service.erl ++++ b/src/ejabberd_service.erl +@@ -37,7 +37,7 @@ + -export([send/2]). + + -include("ejabberd.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + + -type state() :: map(). +diff --git a/src/ejabberd_sm.erl b/src/ejabberd_sm.erl +index 3df1d88e..e8087c48 100644 +--- a/src/ejabberd_sm.erl ++++ b/src/ejabberd_sm.erl +@@ -89,7 +89,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_commands.hrl"). + -include("ejabberd_sm.hrl"). +diff --git a/src/ejabberd_socket.erl b/src/ejabberd_socket.erl +index 9953a76a..0dd1c4ff 100644 +--- a/src/ejabberd_socket.erl ++++ b/src/ejabberd_socket.erl +@@ -52,7 +52,7 @@ + sockname/1, peername/1]). + + -include("ejabberd.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + + -type sockmod() :: ejabberd_bosh | +diff --git a/src/ejabberd_system_monitor.erl b/src/ejabberd_system_monitor.erl +index 773104f9..46e641b7 100644 +--- a/src/ejabberd_system_monitor.erl ++++ b/src/ejabberd_system_monitor.erl +@@ -41,7 +41,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(state, {}). + +diff --git a/src/ejabberd_web.erl b/src/ejabberd_web.erl +index 7a40d2c7..aa1abc9b 100644 +--- a/src/ejabberd_web.erl ++++ b/src/ejabberd_web.erl +@@ -34,7 +34,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/ejabberd_web_admin.erl b/src/ejabberd_web_admin.erl +index b3d72c19..cdd951b6 100644 +--- a/src/ejabberd_web_admin.erl ++++ b/src/ejabberd_web_admin.erl +@@ -38,7 +38,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/ejabberd_websocket.erl b/src/ejabberd_websocket.erl +index 9926c20c..fabf2293 100644 +--- a/src/ejabberd_websocket.erl ++++ b/src/ejabberd_websocket.erl +@@ -47,7 +47,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/ejabberd_xmlrpc.erl b/src/ejabberd_xmlrpc.erl +index 213aef7a..f5b51894 100644 +--- a/src/ejabberd_xmlrpc.erl ++++ b/src/ejabberd_xmlrpc.erl +@@ -42,7 +42,7 @@ + -include("ejabberd_http.hrl"). + -include("mod_roster.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(state, + {access_commands = [] :: list(), +diff --git a/src/gen_iq_handler.erl b/src/gen_iq_handler.erl +index d34db358..ab04a252 100644 +--- a/src/gen_iq_handler.erl ++++ b/src/gen_iq_handler.erl +@@ -45,7 +45,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(state, {host, module, function}). + +diff --git a/src/gen_pubsub_node.erl b/src/gen_pubsub_node.erl +index 4f516bd5..83de80a8 100644 +--- a/src/gen_pubsub_node.erl ++++ b/src/gen_pubsub_node.erl +@@ -25,7 +25,7 @@ + + -module(gen_pubsub_node). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -type(host() :: mod_pubsub:host()). + -type(nodeId() :: mod_pubsub:nodeId()). +diff --git a/src/gen_pubsub_nodetree.erl b/src/gen_pubsub_nodetree.erl +index bf7140aa..4267b9a1 100644 +--- a/src/gen_pubsub_nodetree.erl ++++ b/src/gen_pubsub_nodetree.erl +@@ -36,7 +36,7 @@ + ServerHost :: binary(), + Opts :: [any()]) -> atom(). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -callback terminate(Host :: host(), ServerHost :: binary()) -> atom(). + +diff --git a/src/jd2ejd.erl b/src/jd2ejd.erl +index ae293698..bbe9bc6d 100644 +--- a/src/jd2ejd.erl ++++ b/src/jd2ejd.erl +@@ -32,7 +32,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + %%%---------------------------------------------------------------------- + %%% API +diff --git a/src/mod_adhoc.erl b/src/mod_adhoc.erl +index e6df3904..0f3ada11 100644 +--- a/src/mod_adhoc.erl ++++ b/src/mod_adhoc.erl +@@ -39,7 +39,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + start(Host, Opts) -> + IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)), +diff --git a/src/mod_admin_extra.erl b/src/mod_admin_extra.erl +index 799f0079..9fd8531b 100644 +--- a/src/mod_admin_extra.erl ++++ b/src/mod_admin_extra.erl +@@ -84,7 +84,7 @@ + -include("mod_roster.hrl"). + -include("mod_privacy.hrl"). + -include("ejabberd_sm.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + %%% + %%% gen_mod +diff --git a/src/mod_admin_update_sql.erl b/src/mod_admin_update_sql.erl +index 2f105d97..cace1b94 100644 +--- a/src/mod_admin_update_sql.erl ++++ b/src/mod_admin_update_sql.erl +@@ -38,7 +38,7 @@ + -include("logger.hrl"). + -include("ejabberd.hrl"). + -include("ejabberd_commands.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_sql_pt.hrl"). + + %%% +diff --git a/src/mod_announce.erl b/src/mod_announce.erl +index b259aced..146b6a35 100644 +--- a/src/mod_announce.erl ++++ b/src/mod_announce.erl +@@ -52,7 +52,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_announce.hrl"). + + -callback init(binary(), gen_mod:opts()) -> any(). +diff --git a/src/mod_announce_mnesia.erl b/src/mod_announce_mnesia.erl +index f2e5c1c4..cecd68cc 100644 +--- a/src/mod_announce_mnesia.erl ++++ b/src/mod_announce_mnesia.erl +@@ -31,7 +31,7 @@ + get_motd/1, is_motd_user/2, set_motd_user/2, import/3]). + -export([need_transform/1, transform/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_announce.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_announce_riak.erl b/src/mod_announce_riak.erl +index 04a29a68..a3dac3e9 100644 +--- a/src/mod_announce_riak.erl ++++ b/src/mod_announce_riak.erl +@@ -30,7 +30,7 @@ + -export([init/2, set_motd_users/2, set_motd/2, delete_motd/1, + get_motd/1, is_motd_user/2, set_motd_user/2, import/3]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_announce.hrl"). + + %%%=================================================================== +diff --git a/src/mod_announce_sql.erl b/src/mod_announce_sql.erl +index c5c9eb58..b243d05d 100644 +--- a/src/mod_announce_sql.erl ++++ b/src/mod_announce_sql.erl +@@ -33,7 +33,7 @@ + get_motd/1, is_motd_user/2, set_motd_user/2, import/3, + export/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_announce.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("logger.hrl"). +diff --git a/src/mod_avatar.erl b/src/mod_avatar.erl +index dde58abf..ffc31c94 100644 +--- a/src/mod_avatar.erl ++++ b/src/mod_avatar.erl +@@ -28,7 +28,7 @@ + %% Hooks + -export([pubsub_publish_item/6, vcard_iq_convert/1, vcard_iq_publish/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("pubsub.hrl"). + +diff --git a/src/mod_block_strangers.erl b/src/mod_block_strangers.erl +index b2c56f36..429c0ab2 100644 +--- a/src/mod_block_strangers.erl ++++ b/src/mod_block_strangers.erl +@@ -34,7 +34,7 @@ + + -export([filter_packet/1, filter_offline_msg/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_blocking.erl b/src/mod_blocking.erl +index 738c5e16..479b34ea 100644 +--- a/src/mod_blocking.erl ++++ b/src/mod_blocking.erl +@@ -35,7 +35,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("mod_privacy.hrl"). + +diff --git a/src/mod_bosh.erl b/src/mod_bosh.erl +index 6ee58047..e49ab960 100644 +--- a/src/mod_bosh.erl ++++ b/src/mod_bosh.erl +@@ -41,7 +41,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_http.hrl"). + -include("bosh.hrl"). + +diff --git a/src/mod_caps.erl b/src/mod_caps.erl +index edc93bbf..6ead4230 100644 +--- a/src/mod_caps.erl ++++ b/src/mod_caps.erl +@@ -53,7 +53,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_caps.hrl"). + + -define(BAD_HASH_LIFETIME, 600). +diff --git a/src/mod_carboncopy.erl b/src/mod_carboncopy.erl +index 307d6154..c3a998d8 100644 +--- a/src/mod_carboncopy.erl ++++ b/src/mod_carboncopy.erl +@@ -40,7 +40,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_carboncopy.hrl"). + + -type direction() :: sent | received. +diff --git a/src/mod_client_state.erl b/src/mod_client_state.erl +index f7adb1c6..09507b73 100644 +--- a/src/mod_client_state.erl ++++ b/src/mod_client_state.erl +@@ -42,7 +42,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(CSI_QUEUE_MAX, 100). + +diff --git a/src/mod_configure.erl b/src/mod_configure.erl +index 31f7a9c8..6ea5bd37 100644 +--- a/src/mod_configure.erl ++++ b/src/mod_configure.erl +@@ -40,7 +40,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_sm.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). + +diff --git a/src/mod_delegation.erl b/src/mod_delegation.erl +index 27e00768..c93912d6 100644 +--- a/src/mod_delegation.erl ++++ b/src/mod_delegation.erl +@@ -42,7 +42,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -type disco_acc() :: {error, stanza_error()} | {result, [binary()]} | empty. + -record(state, {server_host = <<"">> :: binary(), +diff --git a/src/mod_disco.erl b/src/mod_disco.erl +index 76be408f..5bea1fb7 100644 +--- a/src/mod_disco.erl ++++ b/src/mod_disco.erl +@@ -42,7 +42,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). + -include("mod_roster.hrl"). + +diff --git a/src/mod_echo.erl b/src/mod_echo.erl +index 79dd5996..38199d3c 100644 +--- a/src/mod_echo.erl ++++ b/src/mod_echo.erl +@@ -41,7 +41,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(state, {hosts = [] :: [binary()]}). + +diff --git a/src/mod_fail2ban.erl b/src/mod_fail2ban.erl +index 5e931853..01bdfe2f 100644 +--- a/src/mod_fail2ban.erl ++++ b/src/mod_fail2ban.erl +@@ -39,7 +39,7 @@ + -include_lib("stdlib/include/ms_transform.hrl"). + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(C2S_AUTH_BAN_LIFETIME, 3600). %% 1 hour + -define(C2S_MAX_AUTH_FAILURES, 20). +diff --git a/src/mod_http_api.erl b/src/mod_http_api.erl +index ef881d14..f7cd10bf 100644 +--- a/src/mod_http_api.erl ++++ b/src/mod_http_api.erl +@@ -77,7 +77,7 @@ + -export([start/2, stop/1, reload/3, process/2, mod_opt_type/1, depends/2]). + + -include("ejabberd.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("ejabberd_http.hrl"). + +diff --git a/src/mod_http_upload.erl b/src/mod_http_upload.erl +index c3c295f6..d3bd4e84 100644 +--- a/src/mod_http_upload.erl ++++ b/src/mod_http_upload.erl +@@ -89,7 +89,7 @@ + + -include("ejabberd.hrl"). + -include("ejabberd_http.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + + -record(state, +diff --git a/src/mod_http_upload_quota.erl b/src/mod_http_upload_quota.erl +index 10243ac0..cda5c563 100644 +--- a/src/mod_http_upload_quota.erl ++++ b/src/mod_http_upload_quota.erl +@@ -50,7 +50,7 @@ + %% ejabberd_hooks callback. + -export([handle_slot_request/5]). + +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("logger.hrl"). + -include_lib("kernel/include/file.hrl"). + +diff --git a/src/mod_irc.erl b/src/mod_irc.erl +index 92093507..9b9becc8 100644 +--- a/src/mod_irc.erl ++++ b/src/mod_irc.erl +@@ -43,7 +43,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_irc.hrl"). + + -define(DEFAULT_IRC_ENCODING, <<"iso8859-15">>). +diff --git a/src/mod_irc_connection.erl b/src/mod_irc_connection.erl +index 59336591..ca81358f 100644 +--- a/src/mod_irc_connection.erl ++++ b/src/mod_irc_connection.erl +@@ -41,7 +41,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(SETS, gb_sets). + +diff --git a/src/mod_irc_mnesia.erl b/src/mod_irc_mnesia.erl +index eb982e1f..510ce09d 100644 +--- a/src/mod_irc_mnesia.erl ++++ b/src/mod_irc_mnesia.erl +@@ -30,7 +30,7 @@ + -export([init/2, get_data/3, set_data/4, import/2]). + -export([need_transform/1, transform/1]). + +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("mod_irc.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_irc_riak.erl b/src/mod_irc_riak.erl +index 23f2a2c3..d236bfa7 100644 +--- a/src/mod_irc_riak.erl ++++ b/src/mod_irc_riak.erl +@@ -29,7 +29,7 @@ + %% API + -export([init/2, get_data/3, set_data/4, import/2]). + +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("mod_irc.hrl"). + + %%%=================================================================== +diff --git a/src/mod_irc_sql.erl b/src/mod_irc_sql.erl +index 1f8d7d16..5f784fdc 100644 +--- a/src/mod_irc_sql.erl ++++ b/src/mod_irc_sql.erl +@@ -31,7 +31,7 @@ + %% API + -export([init/2, get_data/3, set_data/4, import/1, import/2, export/1]). + +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("mod_irc.hrl"). + -include("ejabberd_sql_pt.hrl"). + +diff --git a/src/mod_last.erl b/src/mod_last.erl +index e97ef43f..34498e26 100644 +--- a/src/mod_last.erl ++++ b/src/mod_last.erl +@@ -40,7 +40,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("mod_privacy.hrl"). + -include("mod_last.hrl"). +diff --git a/src/mod_legacy_auth.erl b/src/mod_legacy_auth.erl +index 722a0573..c6644386 100644 +--- a/src/mod_legacy_auth.erl ++++ b/src/mod_legacy_auth.erl +@@ -29,7 +29,7 @@ + %% hooks + -export([c2s_unauthenticated_packet/2, c2s_stream_features/2]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -type c2s_state() :: ejabberd_c2s:state(). + +diff --git a/src/mod_mam.erl b/src/mod_mam.erl +index eb839ea1..abc461db 100644 +--- a/src/mod_mam.erl ++++ b/src/mod_mam.erl +@@ -41,7 +41,7 @@ + delete_old_messages/2, get_commands_spec/0, msg_to_el/4, + get_room_config/4, set_room_option/3, offline_message/1, export/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("mod_muc_room.hrl"). + -include("ejabberd_commands.hrl"). +diff --git a/src/mod_mam_mnesia.erl b/src/mod_mam_mnesia.erl +index 71f1f701..a3a7eb5f 100644 +--- a/src/mod_mam_mnesia.erl ++++ b/src/mod_mam_mnesia.erl +@@ -31,7 +31,7 @@ + extended_fields/0, store/8, write_prefs/4, get_prefs/2, select/6]). + + -include_lib("stdlib/include/ms_transform.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("mod_mam.hrl"). + +diff --git a/src/mod_mam_sql.erl b/src/mod_mam_sql.erl +index 40aa9836..b4fab39b 100644 +--- a/src/mod_mam_sql.erl ++++ b/src/mod_mam_sql.erl +@@ -33,7 +33,7 @@ + extended_fields/0, store/8, write_prefs/4, get_prefs/2, select/6, export/1]). + + -include_lib("stdlib/include/ms_transform.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_mam.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_metrics.erl b/src/mod_metrics.erl +index 73a68a8d..1b0d2e1b 100644 +--- a/src/mod_metrics.erl ++++ b/src/mod_metrics.erl +@@ -30,7 +30,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -export([start/2, stop/1, mod_opt_type/1, depends/2, reload/3]). + +diff --git a/src/mod_mix.erl b/src/mod_mix.erl +index 90507665..627363f3 100644 +--- a/src/mod_mix.erl ++++ b/src/mod_mix.erl +@@ -37,7 +37,7 @@ + terminate/2, code_change/3]). + + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(NODES, [?NS_MIX_NODES_MESSAGES, + ?NS_MIX_NODES_PRESENCE, +diff --git a/src/mod_muc.erl b/src/mod_muc.erl +index f7d5303f..f01cde16 100644 +--- a/src/mod_muc.erl ++++ b/src/mod_muc.erl +@@ -73,7 +73,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_muc.hrl"). + + -record(state, +diff --git a/src/mod_muc_admin.erl b/src/mod_muc_admin.erl +index e41f62b5..4d18d068 100644 +--- a/src/mod_muc_admin.erl ++++ b/src/mod_muc_admin.erl +@@ -43,7 +43,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_muc.hrl"). + -include("mod_muc_room.hrl"). + -include("ejabberd_http.hrl"). +diff --git a/src/mod_muc_log.erl b/src/mod_muc_log.erl +index f2685aaa..abb55c42 100644 +--- a/src/mod_muc_log.erl ++++ b/src/mod_muc_log.erl +@@ -44,7 +44,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_muc_room.hrl"). + + -define(T(Text), translate:translate(Lang, Text)). +diff --git a/src/mod_muc_mnesia.erl b/src/mod_muc_mnesia.erl +index aa59038c..7334aca4 100644 +--- a/src/mod_muc_mnesia.erl ++++ b/src/mod_muc_mnesia.erl +@@ -44,7 +44,7 @@ + + -include("mod_muc.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include_lib("stdlib/include/ms_transform.hrl"). + + -record(state, {}). +diff --git a/src/mod_muc_riak.erl b/src/mod_muc_riak.erl +index 57d9666b..4ebd2949 100644 +--- a/src/mod_muc_riak.erl ++++ b/src/mod_muc_riak.erl +@@ -38,7 +38,7 @@ + -export([set_affiliation/6, set_affiliations/4, get_affiliation/5, + get_affiliations/3, search_affiliation/4]). + +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("mod_muc.hrl"). + + %%%=================================================================== +diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl +index bafa938d..d8b5e288 100644 +--- a/src/mod_muc_room.erl ++++ b/src/mod_muc_room.erl +@@ -51,7 +51,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("mod_muc_room.hrl"). + +diff --git a/src/mod_muc_sql.erl b/src/mod_muc_sql.erl +index 8aa6071c..71d79b02 100644 +--- a/src/mod_muc_sql.erl ++++ b/src/mod_muc_sql.erl +@@ -41,7 +41,7 @@ + -export([set_affiliation/6, set_affiliations/4, get_affiliation/5, + get_affiliations/3, search_affiliation/4]). + +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("mod_muc.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_multicast.erl b/src/mod_multicast.erl +index 7b772521..7c1cab3b 100644 +--- a/src/mod_multicast.erl ++++ b/src/mod_multicast.erl +@@ -45,7 +45,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(state, + {lserver, lservice, access, service_limits}). +diff --git a/src/mod_offline.erl b/src/mod_offline.erl +index 5b95fe4b..8146ffdc 100644 +--- a/src/mod_offline.erl ++++ b/src/mod_offline.erl +@@ -70,7 +70,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/mod_offline_mnesia.erl b/src/mod_offline_mnesia.erl +index a725ab00..126fd1bb 100644 +--- a/src/mod_offline_mnesia.erl ++++ b/src/mod_offline_mnesia.erl +@@ -32,7 +32,7 @@ + remove_all_messages/2, count_messages/2, import/1]). + -export([need_transform/1, transform/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_offline.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_offline_riak.erl b/src/mod_offline_riak.erl +index 5d0fd1af..607a78ba 100644 +--- a/src/mod_offline_riak.erl ++++ b/src/mod_offline_riak.erl +@@ -31,7 +31,7 @@ + read_message/3, remove_message/3, read_all_messages/2, + remove_all_messages/2, count_messages/2, import/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_offline.hrl"). + + %%%=================================================================== +diff --git a/src/mod_offline_sql.erl b/src/mod_offline_sql.erl +index 53a0d345..50fa83bc 100644 +--- a/src/mod_offline_sql.erl ++++ b/src/mod_offline_sql.erl +@@ -33,7 +33,7 @@ + read_message/3, remove_message/3, read_all_messages/2, + remove_all_messages/2, count_messages/2, import/1, export/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_offline.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_ping.erl b/src/mod_ping.erl +index 02357181..7d51f4dc 100644 +--- a/src/mod_ping.erl ++++ b/src/mod_ping.erl +@@ -36,7 +36,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(DEFAULT_SEND_PINGS, false). + +diff --git a/src/mod_pres_counter.erl b/src/mod_pres_counter.erl +index 875aeef3..ffa95576 100644 +--- a/src/mod_pres_counter.erl ++++ b/src/mod_pres_counter.erl +@@ -33,7 +33,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(pres_counter, + {dir, start, count, logged = false}). +diff --git a/src/mod_privacy.erl b/src/mod_privacy.erl +index 64ae9620..034a56e4 100644 +--- a/src/mod_privacy.erl ++++ b/src/mod_privacy.erl +@@ -42,7 +42,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + + -define(PRIVACY_CACHE, privacy_cache). +diff --git a/src/mod_privacy_mnesia.erl b/src/mod_privacy_mnesia.erl +index 7449262b..201b92ec 100644 +--- a/src/mod_privacy_mnesia.erl ++++ b/src/mod_privacy_mnesia.erl +@@ -32,7 +32,7 @@ + remove_list/3, use_cache/1, import/1]). + -export([need_transform/1, transform/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_privacy_riak.erl b/src/mod_privacy_riak.erl +index 0cd39c11..88f294f8 100644 +--- a/src/mod_privacy_riak.erl ++++ b/src/mod_privacy_riak.erl +@@ -33,7 +33,7 @@ + + -export([privacy_schema/0]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + + %%%=================================================================== +diff --git a/src/mod_privacy_sql.erl b/src/mod_privacy_sql.erl +index 7939cbb2..6141feda 100644 +--- a/src/mod_privacy_sql.erl ++++ b/src/mod_privacy_sql.erl +@@ -35,7 +35,7 @@ + + -export([item_to_raw/1, raw_to_item/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_privacy.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_private.erl b/src/mod_private.erl +index cb167468..0b84d071 100644 +--- a/src/mod_private.erl ++++ b/src/mod_private.erl +@@ -37,7 +37,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_private.hrl"). + + -define(PRIVATE_CACHE, private_cache). +diff --git a/src/mod_private_mnesia.erl b/src/mod_private_mnesia.erl +index 04c1a04a..6a9dee68 100644 +--- a/src/mod_private_mnesia.erl ++++ b/src/mod_private_mnesia.erl +@@ -31,7 +31,7 @@ + use_cache/1, import/3]). + -export([need_transform/1, transform/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_private.hrl"). + -include("logger.hrl"). + +diff --git a/src/mod_private_riak.erl b/src/mod_private_riak.erl +index be175f07..f97c2dd8 100644 +--- a/src/mod_private_riak.erl ++++ b/src/mod_private_riak.erl +@@ -30,7 +30,7 @@ + -export([init/2, set_data/3, get_data/3, get_all_data/2, del_data/2, + import/3]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_private.hrl"). + + %%%=================================================================== +diff --git a/src/mod_private_sql.erl b/src/mod_private_sql.erl +index 5ed584c3..da4974ce 100644 +--- a/src/mod_private_sql.erl ++++ b/src/mod_private_sql.erl +@@ -30,7 +30,7 @@ + -export([init/2, set_data/3, get_data/3, get_all_data/2, del_data/2, + import/3, export/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_private.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("logger.hrl"). +diff --git a/src/mod_privilege.erl b/src/mod_privilege.erl +index dab7a619..695c8acf 100644 +--- a/src/mod_privilege.erl ++++ b/src/mod_privilege.erl +@@ -41,7 +41,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -record(state, {server_host = <<"">> :: binary(), + permissions = dict:new() :: ?TDICT}). +diff --git a/src/mod_proxy65_service.erl b/src/mod_proxy65_service.erl +index fb34ba55..f42aa461 100644 +--- a/src/mod_proxy65_service.erl ++++ b/src/mod_proxy65_service.erl +@@ -39,7 +39,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(PROCNAME, ejabberd_mod_proxy65_service). + +diff --git a/src/mod_pubsub.erl b/src/mod_pubsub.erl +index d2e1f6c5..b7cd6644 100644 +--- a/src/mod_pubsub.erl ++++ b/src/mod_pubsub.erl +@@ -41,7 +41,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("pubsub.hrl"). + -include("mod_roster.hrl"). + +diff --git a/src/mod_push.erl b/src/mod_push.erl +index 1eaec6ad..ac4ed89e 100644 +--- a/src/mod_push.erl ++++ b/src/mod_push.erl +@@ -52,7 +52,7 @@ + -include("ejabberd.hrl"). + -include("ejabberd_commands.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(PUSH_CACHE, push_cache). + +diff --git a/src/mod_push_keepalive.erl b/src/mod_push_keepalive.erl +index bcdc0c25..d979eaec 100644 +--- a/src/mod_push_keepalive.erl ++++ b/src/mod_push_keepalive.erl +@@ -36,7 +36,7 @@ + c2s_handle_cast/2, c2s_handle_info/2, c2s_stanza/3]). + + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(PUSH_BEFORE_TIMEOUT_SECS, 120). + +diff --git a/src/mod_push_mnesia.erl b/src/mod_push_mnesia.erl +index ff12150f..866b5630 100644 +--- a/src/mod_push_mnesia.erl ++++ b/src/mod_push_mnesia.erl +@@ -35,7 +35,7 @@ + + -include_lib("stdlib/include/ms_transform.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_push.hrl"). + + %%%------------------------------------------------------------------- +diff --git a/src/mod_push_sql.erl b/src/mod_push_sql.erl +index c82d9fc0..79fedba4 100644 +--- a/src/mod_push_sql.erl ++++ b/src/mod_push_sql.erl +@@ -32,7 +32,7 @@ + lookup_sessions/3, lookup_sessions/2, lookup_sessions/1, + delete_session/3, delete_old_sessions/2, export/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). + -include("mod_push.hrl"). +diff --git a/src/mod_register.erl b/src/mod_register.erl +index 77557ee0..8ad27fcf 100644 +--- a/src/mod_register.erl ++++ b/src/mod_register.erl +@@ -41,7 +41,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + start(Host, Opts) -> + IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)), +diff --git a/src/mod_register_web.erl b/src/mod_register_web.erl +index b7bc2edc..a7bb83f5 100644 +--- a/src/mod_register_web.erl ++++ b/src/mod_register_web.erl +@@ -60,7 +60,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("ejabberd_http.hrl"). + +diff --git a/src/mod_roster.erl b/src/mod_roster.erl +index a86b50d9..57f5fdce 100644 +--- a/src/mod_roster.erl ++++ b/src/mod_roster.erl +@@ -54,7 +54,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("mod_roster.hrl"). + +diff --git a/src/mod_s2s_dialback.erl b/src/mod_s2s_dialback.erl +index b4c2ed9d..645ab37f 100644 +--- a/src/mod_s2s_dialback.erl ++++ b/src/mod_s2s_dialback.erl +@@ -33,7 +33,7 @@ + s2s_in_features/2, s2s_out_init/2, s2s_out_closed/2]). + + -include("ejabberd.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + + %%%=================================================================== +diff --git a/src/mod_service_log.erl b/src/mod_service_log.erl +index 1c6e5fe8..c295aa45 100644 +--- a/src/mod_service_log.erl ++++ b/src/mod_service_log.erl +@@ -35,7 +35,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + start(Host, _Opts) -> + ejabberd_hooks:add(user_send_packet, Host, ?MODULE, +diff --git a/src/mod_shared_roster.erl b/src/mod_shared_roster.erl +index 5f95266b..db641dbb 100644 +--- a/src/mod_shared_roster.erl ++++ b/src/mod_shared_roster.erl +@@ -44,7 +44,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -include("mod_roster.hrl"). + +diff --git a/src/mod_shared_roster_ldap.erl b/src/mod_shared_roster_ldap.erl +index 66cbebd9..4b431fc4 100644 +--- a/src/mod_shared_roster_ldap.erl ++++ b/src/mod_shared_roster_ldap.erl +@@ -46,7 +46,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_roster.hrl"). + -include("eldap.hrl"). + +diff --git a/src/mod_shared_roster_mnesia.erl b/src/mod_shared_roster_mnesia.erl +index adfbac68..bdd87030 100644 +--- a/src/mod_shared_roster_mnesia.erl ++++ b/src/mod_shared_roster_mnesia.erl +@@ -37,7 +37,7 @@ + -include("mod_roster.hrl"). + -include("mod_shared_roster.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + %%%=================================================================== + %%% API +diff --git a/src/mod_shared_roster_riak.erl b/src/mod_shared_roster_riak.erl +index 441aafd0..d5545eb1 100644 +--- a/src/mod_shared_roster_riak.erl ++++ b/src/mod_shared_roster_riak.erl +@@ -35,7 +35,7 @@ + + -include("mod_roster.hrl"). + -include("mod_shared_roster.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + %%%=================================================================== + %%% API +diff --git a/src/mod_shared_roster_sql.erl b/src/mod_shared_roster_sql.erl +index 488e0ec7..f952347a 100644 +--- a/src/mod_shared_roster_sql.erl ++++ b/src/mod_shared_roster_sql.erl +@@ -36,7 +36,7 @@ + add_user_to_group/3, remove_user_from_group/3, import/3, + export/1]). + +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + -include("mod_roster.hrl"). + -include("mod_shared_roster.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_sic.erl b/src/mod_sic.erl +index a2b3256e..da61b2c2 100644 +--- a/src/mod_sic.erl ++++ b/src/mod_sic.erl +@@ -36,7 +36,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + start(Host, Opts) -> + IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)), +diff --git a/src/mod_sip.erl b/src/mod_sip.erl +index 01327c77..70159d17 100644 +--- a/src/mod_sip.erl ++++ b/src/mod_sip.erl +@@ -52,7 +52,7 @@ mod_opt_type(_) -> + locate/1, mod_opt_type/1, depends/2]). + + -include("ejabberd.hrl"). +--include_lib("esip/include/esip.hrl"). ++-include_lib("s1_sip/include/esip.hrl"). + + %%%=================================================================== + %%% API +diff --git a/src/mod_sip_proxy.erl b/src/mod_sip_proxy.erl +index d600da3d..c3dfe874 100644 +--- a/src/mod_sip_proxy.erl ++++ b/src/mod_sip_proxy.erl +@@ -40,7 +40,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include_lib("esip/include/esip.hrl"). ++-include_lib("s1_sip/include/esip.hrl"). + + -define(SIGN_LIFETIME, 300). %% in seconds. + +diff --git a/src/mod_sip_registrar.erl b/src/mod_sip_registrar.erl +index a47de697..f89d3cab 100644 +--- a/src/mod_sip_registrar.erl ++++ b/src/mod_sip_registrar.erl +@@ -42,7 +42,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include_lib("esip/include/esip.hrl"). ++-include_lib("s1_sip/include/esip.hrl"). + + -define(CALL_TIMEOUT, timer:seconds(30)). + -define(DEFAULT_EXPIRES, 3600). +diff --git a/src/mod_stats.erl b/src/mod_stats.erl +index 2bdbdbd3..2969fbd2 100644 +--- a/src/mod_stats.erl ++++ b/src/mod_stats.erl +@@ -35,7 +35,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + start(Host, Opts) -> + IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)), +diff --git a/src/mod_stream_mgmt.erl b/src/mod_stream_mgmt.erl +index 658bd504..46b00993 100644 +--- a/src/mod_stream_mgmt.erl ++++ b/src/mod_stream_mgmt.erl +@@ -37,7 +37,7 @@ + -export([get_resume_timeout/1, set_resume_timeout/2]). + + -include("ejabberd.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("p1_queue.hrl"). + +diff --git a/src/mod_time.erl b/src/mod_time.erl +index c54f3d27..20321d36 100644 +--- a/src/mod_time.erl ++++ b/src/mod_time.erl +@@ -38,7 +38,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + start(Host, Opts) -> + IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)), +diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl +index 378b9430..10618c96 100644 +--- a/src/mod_vcard.erl ++++ b/src/mod_vcard.erl +@@ -44,7 +44,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_vcard.hrl"). + + -define(JUD_MATCHES, 30). +diff --git a/src/mod_vcard_ldap.erl b/src/mod_vcard_ldap.erl +index 88621fc0..e2c741c5 100644 +--- a/src/mod_vcard_ldap.erl ++++ b/src/mod_vcard_ldap.erl +@@ -41,7 +41,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + -include("eldap.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("translate.hrl"). + + -define(PROCNAME, ejabberd_mod_vcard_ldap). +diff --git a/src/mod_vcard_mnesia.erl b/src/mod_vcard_mnesia.erl +index 3e742ec1..6e9e0e50 100644 +--- a/src/mod_vcard_mnesia.erl ++++ b/src/mod_vcard_mnesia.erl +@@ -33,7 +33,7 @@ + -export([need_transform/1, transform/1]). + + -include("ejabberd.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_vcard.hrl"). + -include("logger.hrl"). + -include("translate.hrl"). +diff --git a/src/mod_vcard_riak.erl b/src/mod_vcard_riak.erl +index e5ad1b3d..5427ec7f 100644 +--- a/src/mod_vcard_riak.erl ++++ b/src/mod_vcard_riak.erl +@@ -31,7 +31,7 @@ + search_fields/1, search_reported/1, import/3, stop/1]). + -export([is_search_supported/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_vcard.hrl"). + + %%%=================================================================== +diff --git a/src/mod_vcard_sql.erl b/src/mod_vcard_sql.erl +index 07d90b69..1dc5d40f 100644 +--- a/src/mod_vcard_sql.erl ++++ b/src/mod_vcard_sql.erl +@@ -33,7 +33,7 @@ + search_fields/1, search_reported/1, import/3, export/1]). + -export([is_search_supported/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("mod_vcard.hrl"). + -include("logger.hrl"). + -include("ejabberd_sql_pt.hrl"). +diff --git a/src/mod_vcard_xupdate.erl b/src/mod_vcard_xupdate.erl +index 7643fed4..19148654 100644 +--- a/src/mod_vcard_xupdate.erl ++++ b/src/mod_vcard_xupdate.erl +@@ -35,7 +35,7 @@ + + -include("ejabberd.hrl"). + -include("logger.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(VCARD_XUPDATE_CACHE, vcard_xupdate_cache). + +diff --git a/src/mod_version.erl b/src/mod_version.erl +index 5f613e02..23ac02cd 100644 +--- a/src/mod_version.erl ++++ b/src/mod_version.erl +@@ -37,7 +37,7 @@ + -include("ejabberd.hrl"). + -include("logger.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + start(Host, Opts) -> + IQDisc = gen_mod:get_opt(iqdisc, Opts, gen_iq_handler:iqdisc(Host)), +diff --git a/src/node_dag.erl b/src/node_dag.erl +index 9829c27c..5f399357 100644 +--- a/src/node_dag.erl ++++ b/src/node_dag.erl +@@ -28,7 +28,7 @@ + -author('bjc@kublai.com'). + + -include("pubsub.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -export([init/3, terminate/2, options/0, features/0, + create_node_permission/6, create_node/2, delete_node/1, +diff --git a/src/node_dispatch.erl b/src/node_dispatch.erl +index 92a655b8..00eb55d9 100644 +--- a/src/node_dispatch.erl ++++ b/src/node_dispatch.erl +@@ -34,7 +34,7 @@ + -author('christophe.romain@process-one.net'). + + -include("pubsub.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -export([init/3, terminate/2, options/0, features/0, + create_node_permission/6, create_node/2, delete_node/1, +diff --git a/src/node_flat.erl b/src/node_flat.erl +index bc529e14..571b1b16 100644 +--- a/src/node_flat.erl ++++ b/src/node_flat.erl +@@ -34,7 +34,7 @@ + -author('christophe.romain@process-one.net'). + + -include("pubsub.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -export([init/3, terminate/2, options/0, features/0, + create_node_permission/6, create_node/2, delete_node/1, +diff --git a/src/node_flat_sql.erl b/src/node_flat_sql.erl +index afbc050a..ae279c4c 100644 +--- a/src/node_flat_sql.erl ++++ b/src/node_flat_sql.erl +@@ -36,7 +36,7 @@ + -compile([{parse_transform, ejabberd_sql_pt}]). + + -include("pubsub.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_sql_pt.hrl"). + + -export([init/3, terminate/2, options/0, features/0, +diff --git a/src/node_online.erl b/src/node_online.erl +index 39b08d99..ce71fdb0 100644 +--- a/src/node_online.erl ++++ b/src/node_online.erl +@@ -28,7 +28,7 @@ + -author('christophe.romain@process-one.net'). + + -include("pubsub.hrl"). +--include("jid.hrl"). ++-include_lib("p1_xmpp/include/jid.hrl"). + + -export([init/3, terminate/2, options/0, features/0, + create_node_permission/6, create_node/2, delete_node/1, +diff --git a/src/nodetree_dag.erl b/src/nodetree_dag.erl +index a44e7155..0c5609c4 100644 +--- a/src/nodetree_dag.erl ++++ b/src/nodetree_dag.erl +@@ -30,7 +30,7 @@ + -include_lib("stdlib/include/qlc.hrl"). + + -include("pubsub.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -export([init/3, terminate/2, options/0, set_node/1, + get_node/3, get_node/2, get_node/1, get_nodes/2, +diff --git a/src/nodetree_tree.erl b/src/nodetree_tree.erl +index 31724036..0fe1f5e0 100644 +--- a/src/nodetree_tree.erl ++++ b/src/nodetree_tree.erl +@@ -40,7 +40,7 @@ + -include_lib("stdlib/include/qlc.hrl"). + + -include("pubsub.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -export([init/3, terminate/2, options/0, set_node/1, + get_node/3, get_node/2, get_node/1, get_nodes/2, +diff --git a/src/nodetree_tree_sql.erl b/src/nodetree_tree_sql.erl +index b310dd2d..19ff1786 100644 +--- a/src/nodetree_tree_sql.erl ++++ b/src/nodetree_tree_sql.erl +@@ -40,7 +40,7 @@ + -compile([{parse_transform, ejabberd_sql_pt}]). + + -include("pubsub.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("ejabberd_sql_pt.hrl"). + + -export([init/3, terminate/2, options/0, set_node/1, +diff --git a/src/prosody2ejabberd.erl b/src/prosody2ejabberd.erl +index 2c7dabb4..b6ba864c 100644 +--- a/src/prosody2ejabberd.erl ++++ b/src/prosody2ejabberd.erl +@@ -28,7 +28,7 @@ + -export([from_dir/1]). + + -include("ejabberd.hrl"). +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include("logger.hrl"). + -include("mod_roster.hrl"). + -include("mod_offline.hrl"). +diff --git a/src/pubsub_subscription.erl b/src/pubsub_subscription.erl +index 746e39e3..59ee734b 100644 +--- a/src/pubsub_subscription.erl ++++ b/src/pubsub_subscription.erl +@@ -39,7 +39,7 @@ + + -include("pubsub.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(PUBSUB_DELIVER, <<"pubsub#deliver">>). + -define(PUBSUB_DIGEST, <<"pubsub#digest">>). +diff --git a/src/pubsub_subscription_sql.erl b/src/pubsub_subscription_sql.erl +index 3315748c..5700c100 100644 +--- a/src/pubsub_subscription_sql.erl ++++ b/src/pubsub_subscription_sql.erl +@@ -35,7 +35,7 @@ + + -include("pubsub.hrl"). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + + -define(PUBSUB_DELIVER, <<"pubsub#deliver">>). + -define(PUBSUB_DIGEST, <<"pubsub#digest">>). +diff --git a/src/xmpp_stream_in.erl b/src/xmpp_stream_in.erl +index 329ebad6..4ce8760c 100644 +--- a/src/xmpp_stream_in.erl ++++ b/src/xmpp_stream_in.erl +@@ -42,7 +42,7 @@ + -define(FSMOPTS, []). + -endif. + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -type state() :: map(). + -type stop_reason() :: {stream, reset | {in | out, stream_error()}} | + {tls, inet:posix() | atom() | binary()} | +diff --git a/src/xmpp_stream_out.erl b/src/xmpp_stream_out.erl +index 7ddc183b..8095bd86 100644 +--- a/src/xmpp_stream_out.erl ++++ b/src/xmpp_stream_out.erl +@@ -44,7 +44,7 @@ + + -define(TCP_SEND_TIMEOUT, 15000). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include_lib("kernel/include/inet.hrl"). + + -type state() :: map(). +diff --git a/src/xmpp_stream_pkix.erl b/src/xmpp_stream_pkix.erl +index 8361999f..a6fe728c 100644 +--- a/src/xmpp_stream_pkix.erl ++++ b/src/xmpp_stream_pkix.erl +@@ -24,7 +24,7 @@ + %% API + -export([authenticate/1, authenticate/2, get_cert_domains/1, format_error/1]). + +--include("xmpp.hrl"). ++-include_lib("p1_xmpp/include/xmpp.hrl"). + -include_lib("public_key/include/public_key.hrl"). + -include("XmppAddr.hrl"). + +-- +2.14.1 + diff --git a/buildroot/package/ejabberd/0005-disable-ERLANG_DEPRECATED_CHECK.patch b/buildroot/package/ejabberd/0005-disable-ERLANG_DEPRECATED_CHECK.patch new file mode 100644 index 0000000..09b3562 --- /dev/null +++ b/buildroot/package/ejabberd/0005-disable-ERLANG_DEPRECATED_CHECK.patch @@ -0,0 +1,29 @@ +From d43a65b112ec995a5ee52aca2a16e5cf9699d7c1 Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Wed, 20 Jan 2016 08:16:26 -0500 +Subject: [PATCH] disable ERLANG_DEPRECATED_CHECK + +Without this patch, the configure will try to execute erlang to check +if it uses deprecated types. Assume the answer is false. + +Signed-off-by: Johan Oudinet +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index cd1ab08..a4f1533 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -235,7 +235,7 @@ if test "$ENABLEUSER" != ""; then + AC_SUBST([INSTALLUSER], [$ENABLEUSER]) + fi + +-ERLANG_DEPRECATED_TYPES_CHECK ++AC_SUBST(erlang_deprecated_types, false) + + if test "$sqlite" = "true"; then + AX_LIB_SQLITE3([3.6.19]) +-- +2.5.0 + diff --git a/buildroot/package/ejabberd/0006-fix-install-permissions.patch b/buildroot/package/ejabberd/0006-fix-install-permissions.patch new file mode 100644 index 0000000..9a0073f --- /dev/null +++ b/buildroot/package/ejabberd/0006-fix-install-permissions.patch @@ -0,0 +1,84 @@ +From ef847479778cc58818e066b87aa1789ba1c4148b Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Wed, 20 Jan 2016 09:34:07 -0500 +Subject: [PATCH] fix install permissions + +Without this patch, the makefile will try to install directories and +files with incompatible permissions for ejabberd, which run as an +ejabberd user. + +Signed-off-by: Frank Hunleth + +diff --git a/Makefile.in b/Makefile.in +index a0b4553d..2cae2db4 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -169,10 +169,8 @@ copy-files-sub: copy-files-sub2 + install: all copy-files + # + # Configuration files +- $(INSTALL) -d -m 750 $(G_USER) $(ETCDIR) +- [ -f $(ETCDIR)/ejabberd.yml ] \ +- && $(INSTALL) -b -m 640 $(G_USER) ejabberd.yml.example $(ETCDIR)/ejabberd.yml-new \ +- || $(INSTALL) -b -m 640 $(G_USER) ejabberd.yml.example $(ETCDIR)/ejabberd.yml ++ $(INSTALL) -d $(ETCDIR) ++ $(INSTALL) -b -m 644 ejabberd.yml.example $(ETCDIR)/ejabberd.yml + $(SED) -e "s*{{rootdir}}*@prefix@*g" \ + -e "s*{{installuser}}*@INSTALLUSER@*g" \ + -e "s*{{bindir}}*@bindir@*g" \ +@@ -183,53 +181,16 @@ install: all copy-files + -e "s*{{erl}}*@ERL@*g" \ + -e "s*{{epmd}}*@EPMD@*g" ejabberdctl.template \ + > ejabberdctl.example +- [ -f $(ETCDIR)/ejabberdctl.cfg ] \ +- && $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg-new \ +- || $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg +- $(INSTALL) -b -m 644 $(G_USER) inetrc $(ETCDIR)/inetrc ++ $(INSTALL) -b -m 644 ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg ++ $(INSTALL) -b -m 644 inetrc $(ETCDIR)/inetrc + # + # Administration script +- [ -d $(SBINDIR) ] || $(INSTALL) -d -m 755 $(SBINDIR) +- $(INSTALL) -m 550 $(G_USER) ejabberdctl.example $(SBINDIR)/ejabberdctl ++ $(INSTALL) -D ejabberdctl.example $(SBINDIR)/ejabberdctl + # Elixir binaries + [ -d $(BINDIR) ] || $(INSTALL) -d -m 755 $(BINDIR) + [ -f deps/elixir/bin/iex ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/iex $(BINDIR)/iex || true + [ -f deps/elixir/bin/elixir ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/elixir $(BINDIR)/elixir || true + [ -f deps/elixir/bin/mix ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/mix $(BINDIR)/mix || true +- # +- # Init script +- $(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*g" \ +- -e "s*@installuser@*$(INIT_USER)*g" ejabberd.init.template \ +- > ejabberd.init +- chmod 755 ejabberd.init +- # +- # Service script +- $(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*g" ejabberd.service.template \ +- > ejabberd.service +- chmod 644 ejabberd.service +- # +- # Spool directory +- $(INSTALL) -d -m 750 $(O_USER) $(SPOOLDIR) +- $(CHOWN_COMMAND) -R @INSTALLUSER@ $(SPOOLDIR) >$(CHOWN_OUTPUT) +- chmod -R 750 $(SPOOLDIR) +- [ ! -f $(COOKIEFILE) ] || { $(CHOWN_COMMAND) @INSTALLUSER@ $(COOKIEFILE) >$(CHOWN_OUTPUT) ; chmod 400 $(COOKIEFILE) ; } +- # +- # ejabberdctl lock directory +- $(INSTALL) -d -m 750 $(O_USER) $(CTLLOCKDIR) +- $(CHOWN_COMMAND) -R @INSTALLUSER@ $(CTLLOCKDIR) >$(CHOWN_OUTPUT) +- chmod -R 750 $(CTLLOCKDIR) +- # +- # Log directory +- $(INSTALL) -d -m 750 $(O_USER) $(LOGDIR) +- $(CHOWN_COMMAND) -R @INSTALLUSER@ $(LOGDIR) >$(CHOWN_OUTPUT) +- chmod -R 750 $(LOGDIR) +- # +- # Documentation +- $(INSTALL) -d $(DOCDIR) +- [ -f doc/guide.html ] \ +- && $(INSTALL) -m 644 doc/guide.html $(DOCDIR) \ +- || echo "Documentation not included in sources" +- $(INSTALL) -m 644 COPYING $(DOCDIR) + + uninstall: uninstall-binary diff --git a/buildroot/package/ejabberd/0007-fix-ejabberdctl.patch b/buildroot/package/ejabberd/0007-fix-ejabberdctl.patch new file mode 100644 index 0000000..090fcc5 --- /dev/null +++ b/buildroot/package/ejabberd/0007-fix-ejabberdctl.patch @@ -0,0 +1,32 @@ +From 168d5840dc2a541ec16385e666c1932cf02907e9 Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Wed, 10 Jan 2018 15:00:07 +0100 +Subject: [PATCH] fix ejabberdctl + +Change default values so ejabberdctl run commands as ejabberd user. +Also add a way for the user to change default values. + +Signed-off-by: Johan Oudinet +--- + ejabberdctl.template | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/ejabberdctl.template b/ejabberdctl.template +index 83637766..5a8a8795 100755 +--- a/ejabberdctl.template ++++ b/ejabberdctl.template +@@ -15,7 +15,10 @@ SCRIPT_DIR=$(cd "${0%/*}" && pwd) + ERL="{{erl}}" + IEX="{{bindir}}/iex" + EPMD="{{epmd}}" +-INSTALLUSER="{{installuser}}" ++INSTALLUSER=ejabberd ++ ++# Read default configuration file if present ++[ ! -r /etc/default/ejabberd ] || . /etc/default/ejabberd + + # check the proper system user is used + case $(id -un) in +-- +2.14.1 + diff --git a/buildroot/package/ejabberd/0008-handle-error-case-from-lib_dir.patch b/buildroot/package/ejabberd/0008-handle-error-case-from-lib_dir.patch new file mode 100644 index 0000000..f7931b4 --- /dev/null +++ b/buildroot/package/ejabberd/0008-handle-error-case-from-lib_dir.patch @@ -0,0 +1,32 @@ +From d0bfcbbfd8a6e7ee6213112e4078b020e4e1d15d Mon Sep 17 00:00:00 2001 +From: Paweł Chmielowski +Date: Wed, 10 Jan 2018 16:34:01 +0100 +Subject: [PATCH] Handle error case from code:lib_dir in ResolveDepPath in + rebar.config.script + +This patch have already been applied in upstream/master. + +Signed-off-by: Paweł Chmielowski + +--- + rebar.config.script | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/rebar.config.script b/rebar.config.script +index 85f918fffd..ba374e5c5f 100644 +--- a/rebar.config.script ++++ b/rebar.config.script +@@ -233,9 +233,10 @@ ResolveDepPath = case {SystemDeps, IsRebar3} of + {true, _} -> + fun("deps/" ++ Rest) -> + Slash = string:str(Rest, "/"), +- code:lib_dir( +- string:sub_string(Rest, 1, Slash -1)) ++ +- string:sub_string(Rest, Slash); ++ case code:lib_dir(string:sub_string(Rest, 1, Slash -1)) of ++ {error, _} -> Rest; ++ V -> V ++ string:sub_string(Rest, Slash) ++ end; + (Path) -> + Path + end; diff --git a/buildroot/package/ejabberd/0009-disable-mod_avatar.patch b/buildroot/package/ejabberd/0009-disable-mod_avatar.patch new file mode 100644 index 0000000..ab89ba1 --- /dev/null +++ b/buildroot/package/ejabberd/0009-disable-mod_avatar.patch @@ -0,0 +1,32 @@ +From e6eac74e82975e7d87b1f59c50eb007ab04c1392 Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Tue, 16 Jan 2018 14:29:56 +0100 +Subject: [PATCH] disable mod_avatar + +This module requires to compile with graphics enabled. + +Signed-off-by: Johan Oudinet +--- + ejabberd.yml.example | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/ejabberd.yml.example b/ejabberd.yml.example +index e178e956..7c12b76c 100644 +--- a/ejabberd.yml.example ++++ b/ejabberd.yml.example +@@ -796,9 +796,9 @@ modules: + search: false + mod_vcard_xupdate: {} + ## Convert all avatars posted by Android clients from WebP to JPEG +- mod_avatar: +- convert: +- webp: jpeg ++ ## mod_avatar: ++ ## convert: ++ ## webp: jpeg + mod_version: {} + mod_stream_mgmt: {} + ## Non-SASL Authentication (XEP-0078) is now disabled by default +-- +2.14.1 + diff --git a/buildroot/package/ejabberd/Config.in b/buildroot/package/ejabberd/Config.in new file mode 100644 index 0000000..a7542cd --- /dev/null +++ b/buildroot/package/ejabberd/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_EJABBERD + bool "ejabberd" + depends on BR2_PACKAGE_ERLANG + depends on BR2_INSTALL_LIBSTDCPP # jiffy, stringprep + select BR2_PACKAGE_ERLANG_JIFFY + select BR2_PACKAGE_ERLANG_LAGER + select BR2_PACKAGE_ERLANG_P1_CACHE_TAB + select BR2_PACKAGE_ERLANG_P1_ICONV + select BR2_PACKAGE_ERLANG_P1_OAUTH2 + select BR2_PACKAGE_ERLANG_P1_SIP + select BR2_PACKAGE_ERLANG_P1_STRINGPREP + select BR2_PACKAGE_ERLANG_P1_STUN + select BR2_PACKAGE_ERLANG_P1_TLS + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_ERLANG_P1_XML + select BR2_PACKAGE_ERLANG_P1_XMPP + select BR2_PACKAGE_ERLANG_P1_YAML + select BR2_PACKAGE_ERLANG_P1_ZLIB + select BR2_PACKAGE_GETENT + select BR2_PACKAGE_OPENSSL + help + Ejabberd is a Jabber/XMPP instant messaging server, written + in Erlang/OTP. Among other features, ejabberd is + cross-platform, fault-tolerant, clusterable and modular. + + http://www.ejabberd.im + +comment "ejabberd needs erlang, toolchain w/ C++" + depends on !BR2_PACKAGE_ERLANG || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/ejabberd/S50ejabberd b/buildroot/package/ejabberd/S50ejabberd new file mode 100644 index 0000000..830fcb8 --- /dev/null +++ b/buildroot/package/ejabberd/S50ejabberd @@ -0,0 +1,54 @@ +#!/bin/sh +# +# Start/stop ejabberd +# + +CTL=/usr/sbin/ejabberdctl +DEFAULT=/etc/default/ejabberd +INSTALLUSER=ejabberd +RUNDIR=/var/run/ejabberd + +# Read default configuration file if present. +[ -r "$DEFAULT" ] && . "$DEFAULT" + +# Create RUNDIR. +mkrundir() { + install -d -o "$INSTALLUSER" -g "$INSTALLUSER" "$RUNDIR" +} + +case "$1" in + start) + mkrundir || exit 1 + printf "Starting ejabberd... " + "$CTL" start + # Wait until ejabberd is up and running. + if "$CTL" started; then + echo "done" + else + echo "failed" + fi + ;; + stop) + printf "Stopping ejabberd... " + "$CTL" stop > /dev/null + if [ $? -eq 3 ] || "$CTL" stopped; then + echo "OK" + else + echo "failed" + fi + ;; + status) + "$CTL" status + ;; + restart|force-reload) + "$0" stop || true + "$0" start + ;; + live) + mkrundir || exit 1 + "$CTL" live + ;; + *) + echo "Usage: $0 {start|stop|status|restart|force-reload|live}" + exit 1 +esac diff --git a/buildroot/package/ejabberd/check-erlang-lib b/buildroot/package/ejabberd/check-erlang-lib new file mode 100755 index 0000000..63f8bf1 --- /dev/null +++ b/buildroot/package/ejabberd/check-erlang-lib @@ -0,0 +1,55 @@ +#!/bin/sh -e +# Helper to bypass AC_ERLANG_CHECK_LIB +# +# Ejabberd releases do not download specific versions of its erlang +# dependencies. Instead, it clones the master branch of a git +# repository and asks erl to provide the library version. However, +# the target erl program cannot be called from the host. So, this +# script aims at finding the library version installed on the target, +# without calling erlang. + +usage() { + cat <&2 + exit 1 +} + +if [ $# -ne 1 ]; then + usage + exit 0 +else + library="$1" +fi + +target_dir="${TARGET_DIR:-output/target}" + +[ -d "$target_dir" ] || die "TARGET_DIR is not a directory. Please \ +specify the TARGET_DIR environment variable." + +case "$(ls -1d -- "$target_dir/usr/lib/erlang/lib/$library-"* | wc -l)" in + 0) + echo "not found" + ;; + 1) + echo "$target_dir/usr/lib/erlang/lib/$library-"* \ + | sed -e "s,^$target_dir,," + ;; + *) + die "Several versions of $library have been found. Please \ + remove the unused ones." + ;; +esac diff --git a/buildroot/package/ejabberd/ejabberd.hash b/buildroot/package/ejabberd/ejabberd.hash new file mode 100644 index 0000000..6fb90a2 --- /dev/null +++ b/buildroot/package/ejabberd/ejabberd.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 bd16b33a2f1345e5847fd05b70a5fa992181bac756cd6d5d621de9c18cb76801 ejabberd-17.11.tgz diff --git a/buildroot/package/ejabberd/ejabberd.mk b/buildroot/package/ejabberd/ejabberd.mk new file mode 100644 index 0000000..0f7af9b --- /dev/null +++ b/buildroot/package/ejabberd/ejabberd.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# ejabberd +# +################################################################################ + +EJABBERD_VERSION = 17.11 +EJABBERD_SOURCE = ejabberd-$(EJABBERD_VERSION).tgz +EJABBERD_SITE = https://www.process-one.net/downloads/ejabberd/$(EJABBERD_VERSION) +EJABBERD_LICENSE = GPL-2.0+ with OpenSSL exception +EJABBERD_LICENSE_FILES = COPYING +EJABBERD_DEPENDENCIES = getent openssl host-erlang-lager erlang-lager \ + erlang-p1-cache-tab erlang-p1-iconv erlang-p1-sip \ + erlang-p1-stringprep erlang-p1-stun erlang-p1-tls \ + erlang-p1-utils erlang-p1-xml erlang-p1-xmpp erlang-p1-yaml \ + erlang-p1-zlib host-erlang-p1-utils host-erlang-p1-xmpp + +# 0001-remove-make-targets-for-deps.patch updates Makefile.in +EJABBERD_USE_AUTOCONF = YES +EJABBERD_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +EJABBERD_DEPENDENCIES += linux-pam +endif + +# Install check-erlang-lib script to the directory in which the +# package has been uncompressed, so it is available during the +# configure step. +define EJABBERD_INSTALL_CHECK_ERLANG_LIB + $(INSTALL) -m 0755 $(EJABBERD_PKGDIR)/check-erlang-lib \ + $(@D)/check-erlang-lib +endef + +EJABBERD_POST_EXTRACT_HOOKS += EJABBERD_INSTALL_CHECK_ERLANG_LIB + +EJABBERD_ERLANG_LIBS = sasl public_key mnesia inets compiler + +# Guess answers for these tests, configure will bail out otherwise +# saying error: cannot run test program while cross compiling. +EJABBERD_CONF_ENV = \ + ac_cv_erlang_root_dir="$(HOST_DIR)/lib/erlang" \ + $(foreach lib,$(EJABBERD_ERLANG_LIBS), \ + ac_cv_erlang_lib_dir_$(lib)="`./check-erlang-lib $(lib)`") + +EJABBERD_CONF_OPTS = \ + --enable-system-deps \ + --disable-erlang-version-check \ + --disable-graphics + +define EJABBERD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) install -C $(@D) +endef + +# Replace HOST_DIR prefix to /usr in environment variables of +# ejabberctl script. +define EJABBERD_FIX_EJABBERDCTL + $(SED) 's,="$(HOST_DIR),="/usr,' '$(TARGET_DIR)/usr/sbin/ejabberdctl' +endef + +EJABBERD_POST_INSTALL_TARGET_HOOKS += EJABBERD_FIX_EJABBERDCTL + +define EJABBERD_USERS + ejabberd -1 ejabberd -1 * /var/lib/ejabberd /bin/sh - ejabberd daemon +endef + +define EJABBERD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/ejabberd/S50ejabberd \ + $(TARGET_DIR)/etc/init.d/S50ejabberd +endef + +$(eval $(rebar-package)) diff --git a/buildroot/package/elf2flt/0001-ld-elf2flt-behave-properly-when-called-with-a-name-d.patch b/buildroot/package/elf2flt/0001-ld-elf2flt-behave-properly-when-called-with-a-name-d.patch new file mode 100644 index 0000000..a27c491 --- /dev/null +++ b/buildroot/package/elf2flt/0001-ld-elf2flt-behave-properly-when-called-with-a-name-d.patch @@ -0,0 +1,79 @@ +From b31e9b1bff6832063816b972395179859d1d4619 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 13 Aug 2017 16:03:20 +0200 +Subject: [PATCH] ld-elf2flt: behave properly when called with a name different + from TARGET_ALIAS + +ld-elf2flt currently handles two cases: + + 1 It is called as the wrapper for -ld, generally + installed in the bin/ directory of a toolchain. + + 2 It is called as the wrapper for "ld", generally installed in the + TARGET_ALIAS/bin/ directory of a toolchain. + +Unfortunately, if for some reason it gets called using a FOOBAR-ld +name that is different from -ld, it assumes it is in +case (2), while it really is in case (1). Due to this, the path +mangling logic doesn't work, and it doesn't find ld.real. + +This happens for example when the binary program in bin/ is named +arm-buildroot-uclinux-uclibcgnueabi-ld, but also has a simpler symlink +named arm-linux-ld. In this case, +arm-buildroot-uclinux-uclibcgnueabi-ld is recognized by ld-elf2flt as +containing TARGET_ALIAS, and therefore the proper logic to find +ld.real is applied. However, when arm-linux-ld is used, ld-elf2flt +doesn't find TARGET_ALIAS, and therefore assumes we're being called as +TARGET_ALIAS/bin/ld.. and searches for a program called ld.real in +bin/, which doesn't exist. + +See: + +$ ./output/host/bin/arm-buildroot-uclinux-uclibcgnueabi-ld +/home/thomas/buildroot/buildroot/output/host/bin/../arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: no input files + +$ ./output/host/bin/arm-linux-ld +arm-linux-ld (ld-elf2flt): error trying to exec '/home/thomas/buildroot/buildroot/output/host/bin/ld.real': execvp: No such file or directory + +$ ./output/host/arm-buildroot-uclinux-uclibcgnueabi/bin/ld +/home/thomas/buildroot/buildroot/output/host/arm-buildroot-uclinux-uclibcgnueabi/bin/ld.real: no input files + +This commit fixes that by inverting the logic: if we're being called +as just "ld", then we assume it's the program in +TARGET_ALIAS/bin/. Otherwise, we're called through some variant of +TARGET-ld. + +Signed-off-by: Thomas Petazzoni +Submitted-upstream: https://github.com/uclinux-dev/elf2flt/pull/8 +--- + ld-elf2flt.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/ld-elf2flt.c b/ld-elf2flt.c +index de39fe0..c187c2e 100644 +--- a/ld-elf2flt.c ++++ b/ld-elf2flt.c +@@ -506,15 +506,15 @@ int main(int argc, char *argv[]) + the host while those in /lib are for the target. + Make bindir point to the bin dir for bin/-foo. + Make tooldir point to the bin dir for /bin/foo. */ +- if (streqn(elf2flt_progname, TARGET_ALIAS)) { +- tmp = concat(argv0_dir, "../" TARGET_ALIAS "/bin", NULL); ++ if (streqn(elf2flt_progname, "ld")) { ++ tmp = concat(argv0_dir, "../../bin", NULL); + if (stat(tmp, &buf) == 0 && S_ISDIR(buf.st_mode)) { +- tooldir = concat(tmp, "/", NULL); ++ bindir = concat(tmp, "/", NULL); + } + } else { +- tmp = concat(argv0_dir, "../../bin", NULL); ++ tmp = concat(argv0_dir, "../" TARGET_ALIAS "/bin", NULL); + if (stat(tmp, &buf) == 0 && S_ISDIR(buf.st_mode)) { +- bindir = concat(tmp, "/", NULL); ++ tooldir = concat(tmp, "/", NULL); + } + } + +-- +2.9.4 + diff --git a/buildroot/package/elf2flt/Config.in.host b/buildroot/package/elf2flt/Config.in.host new file mode 100644 index 0000000..b93795b --- /dev/null +++ b/buildroot/package/elf2flt/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_ELF2FLT + bool "Enable elf2flt support?" + depends on BR2_arm || BR2_sh || BR2_sparc || BR2_xtensa + depends on !BR2_USE_MMU + help + uCLinux uses a Binary Flat format commonly known as BFLT. It + is a relatively simple and lightweight executable format + based on the original a.out format. + + This option compiles the required tools and makes the required + modifications on your toolchain (linker). diff --git a/buildroot/package/elf2flt/elf2flt.hash b/buildroot/package/elf2flt/elf2flt.hash new file mode 100644 index 0000000..40df62c --- /dev/null +++ b/buildroot/package/elf2flt/elf2flt.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7713bd1debd24a94b795b7fc698dc97e306e7cbcc1d0580856c79fe70aac9c45 elf2flt-6d80ab6c93409e796f85da404bde84b841231531.tar.gz diff --git a/buildroot/package/elf2flt/elf2flt.mk b/buildroot/package/elf2flt/elf2flt.mk new file mode 100644 index 0000000..557f94d --- /dev/null +++ b/buildroot/package/elf2flt/elf2flt.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# elf2flt +# +################################################################################ + +ELF2FLT_VERSION = 6d80ab6c93409e796f85da404bde84b841231531 +ELF2FLT_SITE = $(call github,uclinux-dev,elf2flt,$(ELF2FLT_VERSION)) +ELF2FLT_LICENSE = GPL-2.0+ +ELF2FLT_LICENSE_FILES = LICENSE.TXT + +HOST_ELF2FLT_DEPENDENCIES = host-binutils host-zlib + +# It is not exactly a host variant, but more a cross variant, which is +# why we pass a special --target option. +HOST_ELF2FLT_CONF_OPTS = \ + --with-bfd-include-dir=$(HOST_BINUTILS_DIR)/bfd/ \ + --with-binutils-include-dir=$(HOST_BINUTILS_DIR)/include/ \ + --with-libbfd=$(HOST_BINUTILS_DIR)/bfd/libbfd.a \ + --with-libiberty=$(HOST_BINUTILS_DIR)/libiberty/libiberty.a \ + --target=$(GNU_TARGET_NAME) \ + --disable-werror + +HOST_ELF2FLT_LIBS = -lz + +ifeq ($(BR2_GCC_ENABLE_LTO),y) +HOST_ELF2FLT_LIBS += -ldl +endif + +HOST_ELF2FLT_CONF_ENV = LIBS="$(HOST_ELF2FLT_LIBS)" + +# Hardlinks between binaries in different directories cause a problem +# with rpath fixup, so we de-hardlink those binaries, and replace them +# with copies instead. Note that elf2flt will rename ld to ld.real +# before installing its own ld, but we already took care of the +# original ld from binutils so that it is already de-hardlinked. So +# ld is now the one from elf2flt, and we want to de-hardlinke it. +ELF2FLT_TOOLS = elf2flt flthdr ld +define HOST_ELF2FLT_FIXUP_HARDLINKS + $(foreach tool,$(ELF2FLT_TOOLS),\ + rm -f $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) && \ + cp -a $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-$(tool) \ + $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) + ) +endef +HOST_ELF2FLT_POST_INSTALL_HOOKS += HOST_ELF2FLT_FIXUP_HARDLINKS + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/elftosb/0001-fixes-includes.patch b/buildroot/package/elftosb/0001-fixes-includes.patch new file mode 100644 index 0000000..eaf8eba --- /dev/null +++ b/buildroot/package/elftosb/0001-fixes-includes.patch @@ -0,0 +1,19 @@ +This patch uses system include files instead of a hard coded system path to fixe +potential compilation failure on systems that do not populate system header +files in /usr/include/.. + +Signed-off-by: Eric Jarrige +--- +Index: host-elftosb-10.12.01/common/stdafx.h +=================================================================== +--- host-elftosb-10.12.01.orig/common/stdafx.h 2012-01-30 12:43:35.000000000 +0100 ++++ host-elftosb-10.12.01/common/stdafx.h 2012-01-30 12:43:54.000000000 +0100 +@@ -27,7 +27,7 @@ + // For Linux systems only, types.h only defines the signed + // integer types. This is not professional code. + // Update: They are defined in the header files in the more recent version of redhat enterprise gcc. +-#include "/usr/include/sys/types.h" ++#include + #include + //typedef unsigned long uint32_t; + //typedef unsigned short uint16_t; diff --git a/buildroot/package/elftosb/0002-force-cxx-compiler.patch b/buildroot/package/elftosb/0002-force-cxx-compiler.patch new file mode 100644 index 0000000..14df0db --- /dev/null +++ b/buildroot/package/elftosb/0002-force-cxx-compiler.patch @@ -0,0 +1,98 @@ +Subject: [PATCH 1/1] elftosb: force host C++ compiler + +Because Freescale provides *.cpp sources and elftosb links again libstdc++, +force to use the host c++ compiler. + +This patch avoids the following error occurs: + +gcc AESKey.o Blob.o crc.o DataSource.o DataTarget.o ELFSourceFile.o EncoreBootImage.o EvalContext.o GHSSecInfo.o GlobMatcher.o HexValues.o Logging.o Operation.o OptionDictionary.o options.o OutputSection.o Random.o RijndaelCBCMAC.o rijndael.o SHA1.o SourceFile.o SRecordSourceFile.o stdafx.o StELFFile.o StExecutableImage.o StSRecordFile.o Value.o Version.o format_string.o ExcludesListMatcher.o SearchPath.o DataSourceImager.o IVTDataSource.o BootImageGenerator.o ConversionController.o ElftosbAST.o elftosb.o elftosb_lexer.o ElftosbLexer.o elftosb_parser.tab.o EncoreBootImageGenerator.o -lstdc++ -o elftosb +/usr/bin/ld: ElftosbAST.o: undefined reference to symbol 'powf@@GLIBC_2.2.5' +/usr/bin/ld: note: 'powf@@GLIBC_2.2.5' is defined in DSO /lib64/libm.so.6 so try adding it to the linker command line +/lib64/libm.so.6: could not read symbols: Invalid operation +collect2: error: ld returned 1 exit status + +When compiling with gcc and linking against libstdc++, ld uses libc instead of +libstdc++. +However, libc does not provide all functions libstdc++ does. +Indeed, maths functions are provided by libm, not libc. +Thus, elftosb should either: +- use gcc and link against libc and libm; +- or use g++ and link against libstdc++. + +Because elftosb is written in C++, this patch implement the sencond option, using +g++ and linking against libstdc++. + +Signed-off-by: Samuel Martin + +--- +Index: host-elftosb-10.12.01/makefile.rules +=================================================================== +--- host-elftosb-10.12.01.orig/makefile.rules 2012-06-09 21:12:23.557526100 +0200 ++++ host-elftosb-10.12.01/makefile.rules 2012-06-09 21:15:21.659894571 +0200 +@@ -15,6 +15,8 @@ + # UNAMES is going to be set to either "Linux" or "CYGWIN_NT-5.1" + UNAMES = $(shell uname -s) + ++CXX ?= g++ ++ + #******************************************************************************* + # Directories + +@@ -37,9 +39,9 @@ + #******************************************************************************* + # Build flags +-# gcc Compiler flags ++# Compiler flags + # -g : Produce debugging information. + +-CFLAGS = -g $(INC_PATH) -D${UNAMES} ++CXXFLAGS = -g $(INC_PATH) -D${UNAMES} + + #******************************************************************************* + # File lists +@@ -137,13 +139,13 @@ clean: + ${EXEC_FILE_ELFTOSB2} ${EXEC_FILE_SBTOOL} ${EXEC_FILE_KEYGEN} + + elftosb: ${OBJ_FILES_ELFTOSB2} +- gcc ${OBJ_FILES_ELFTOSB2} ${LIBS} -o ${EXEC_FILE_ELFTOSB2} ++ $(CXX) ${OBJ_FILES_ELFTOSB2} ${LIBS} -o ${EXEC_FILE_ELFTOSB2} + + sbtool: ${OBJ_FILES_SBTOOL} +- gcc ${OBJ_FILES_SBTOOL} ${LIBS} -o ${EXEC_FILE_SBTOOL} ++ $(CXX) ${OBJ_FILES_SBTOOL} ${LIBS} -o ${EXEC_FILE_SBTOOL} + + keygen: ${OBJ_FILES_KEYGEN} +- gcc ${OBJ_FILES_KEYGEN} ${LIBS} -o ${EXEC_FILE_KEYGEN} ++ $(CXX) ${OBJ_FILES_KEYGEN} ${LIBS} -o ${EXEC_FILE_KEYGEN} + + + #ifeq ("${UNAMES}", "Linux") +@@ -153,10 +155,10 @@ keygen: ${OBJ_FILES_KEYGEN} + .SUFFIXES : .c .cpp + + .c.o : +- gcc ${CFLAGS} -c $< ++ $(CC) ${CXXFLAGS} -c $< + + .cpp.o : +- gcc ${CFLAGS} -c $< ++ $(CXX) ${CXXFLAGS} -c $< + + #endif + +@@ -165,13 +167,13 @@ keygen: ${OBJ_FILES_KEYGEN} + + %.d: %.c + @set -e; \ +- $(CC) -MM $(CFLAGS) $< | \ ++ $(CC) -MM $(CXXFLAGS) $< | \ + sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + + %.d: %.cpp + @set -e; \ +- $(CC) -MM $(CFLAGS) $< | \ ++ $(CXX) -MM $(CXXFLAGS) $< | \ + sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \ + [ -s $@ ] || rm -f $@ + diff --git a/buildroot/package/elftosb/elftosb.hash b/buildroot/package/elftosb/elftosb.hash new file mode 100644 index 0000000..2b9f02b --- /dev/null +++ b/buildroot/package/elftosb/elftosb.hash @@ -0,0 +1,2 @@ +# From http://repository.timesys.com/buildsources/e/elftosb/elftosb-10.12.01/elftosb-10.12.01.tar.gz.md5sum +md5 e8005d606c1e0bb3507c82f6eceb3056 elftosb-10.12.01.tar.gz diff --git a/buildroot/package/elftosb/elftosb.mk b/buildroot/package/elftosb/elftosb.mk new file mode 100644 index 0000000..44eb98c --- /dev/null +++ b/buildroot/package/elftosb/elftosb.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# elftosb +# +################################################################################ + +ELFTOSB_VERSION = 10.12.01 +ELFTOSB_SITE = http://repository.timesys.com/buildsources/e/elftosb/elftosb-$(ELFTOSB_VERSION) +ELFTOSB_LICENSE = BSD-3-Clause +ELFTOSB_LICENSE_FILES = COPYING + +define HOST_ELFTOSB_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) all +endef + +define HOST_ELFTOSB_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/bld/linux/elftosb $(HOST_DIR)/bin/elftosb + $(INSTALL) -D -m 0755 $(@D)/bld/linux/keygen $(HOST_DIR)/bin/keygen + $(INSTALL) -D -m 0755 $(@D)/bld/linux/sbtool $(HOST_DIR)/bin/sbtool +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/elfutils/0002-disable-progs.patch b/buildroot/package/elfutils/0002-disable-progs.patch new file mode 100644 index 0000000..3f80fe6 --- /dev/null +++ b/buildroot/package/elfutils/0002-disable-progs.patch @@ -0,0 +1,62 @@ +From dfea82b761b2ea4708fbf9370a5467ae4be525ca Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 29 May 2017 23:03:48 +0300 +Subject: [PATCH] Add a --{enable,disable}-progs configure option + +Add a --{enable,disable}-progs configuration option to elfutils. This +allows to selectively disable the compilation of the elfutils programs +(in which case only the libraries are built and installed). This is +useful because the programs are often not needed, and also because +building the programs against uClibc causes several issues (lack of +obstack_printf() in uClibc for example). + +Based on the former patch by Thomas Petazzoni. + +[Vincent: tweak patch for 0.166] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Vicente Olivert Riera +--- + Makefile.am | 6 +++++- + configure.ac | 6 ++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 2ff444e7bf1d..70443abb4fb6 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -26,9 +26,13 @@ AM_MAKEFLAGS = --no-print-directory + + pkginclude_HEADERS = version.h + ++if ENABLE_PROGS ++PROGS_SUBDIR = src ++endif ++ + # Add doc back when we have some real content. + SUBDIRS = config m4 lib libelf libebl libdwelf libdwfl libdw libcpu libasm \ +- backends src po tests ++ backends $(PROGS_SUBDIR) po tests + + EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \ + COPYING COPYING-GPLV2 COPYING-LGPLV3 +diff --git a/configure.ac b/configure.ac +index c2c1d90b2133..7b4c38381cca 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -259,6 +259,12 @@ AC_SUBST([LIBEBL_SUBDIR]) + AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR") + AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.]) + ++AC_ARG_ENABLE([progs], ++ AS_HELP_STRING([--enable-progs], [enable progs]), ++ enable_progs=$enableval, ++ enable_progs=yes) ++AM_CONDITIONAL(ENABLE_PROGS, test "$enable_progs" = yes) ++ + dnl zlib is mandatory. + save_LIBS="$LIBS" + LIBS= +-- +2.11.0 + diff --git a/buildroot/package/elfutils/0003-fts.patch b/buildroot/package/elfutils/0003-fts.patch new file mode 100644 index 0000000..cf5ba25 --- /dev/null +++ b/buildroot/package/elfutils/0003-fts.patch @@ -0,0 +1,1332 @@ +From 098760f7eac1fb86b3f6871d5bb10f9f44468f2d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 29 May 2017 23:08:05 +0300 +Subject: [PATCH] Add an implementation of the fts_*() functions + +The fts_*() functions are optional in uClibc, and not compiled in our +default configuration. The best option would be to migrate this +elfutils code to the nftw family of functions, but it requires quite +some work. + +So we have several options here: + + *) Enable fts_*() functions in our default uClibc configuration. Not + nice since only one package needs them (the help text of uClibc + for fts_*() functions explicitly mention that they have been added + to be able to build elfutils). + + *) Use gnulib, but it is quite heavy to setup, requires modifications + to configure.ac, and other things. + + *) Copy the fts function from uClibc into elfutils source code. This + is the solution used below. uClibc is LGPL, and elfutils is + LGPL/GPL, so there should not be any licensing issue. + +Of course, the fts_*() functions are only built if they are not +already provided by the C library. + +Based on the former patch by Thomas Petazzoni. + +[Vincent: tweak patch for 0.166] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Vicente Olivert Riera +--- + configure.ac | 4 + + libdwfl/Makefile.am | 3 + + libdwfl/fts.c | 1095 ++++++++++++++++++++++++++++++++++++++++ + libdwfl/fts_.h | 131 +++++ + libdwfl/linux-kernel-modules.c | 4 + + 5 files changed, 1237 insertions(+) + create mode 100644 libdwfl/fts.c + create mode 100644 libdwfl/fts_.h + +diff --git a/configure.ac b/configure.ac +index 7b4c38381cca..bcebb05fa532 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -265,6 +265,10 @@ AC_ARG_ENABLE([progs], + enable_progs=yes) + AM_CONDITIONAL(ENABLE_PROGS, test "$enable_progs" = yes) + ++AC_CHECK_HEADER([fts.h], ++ AC_DEFINE([HAVE_FTS_H], [], [Define if is available in C library])) ++AM_CONDITIONAL(HAVE_FTS, test "$ac_cv_header_fts_h" = yes) ++ + dnl zlib is mandatory. + save_LIBS="$LIBS" + LIBS= +diff --git a/libdwfl/Makefile.am b/libdwfl/Makefile.am +index 89ca92ed8110..a5a5615c5f94 100644 +--- a/libdwfl/Makefile.am ++++ b/libdwfl/Makefile.am +@@ -77,6 +77,9 @@ endif + if LZMA + libdwfl_a_SOURCES += lzma.c + endif ++if !HAVE_FTS ++libdwfl_a_SOURCES += fts.c ++endif + + libdwfl = $(libdw) + libdw = ../libdw/libdw.so +diff --git a/libdwfl/fts.c b/libdwfl/fts.c +new file mode 100644 +index 000000000000..f34cc03bd963 +--- /dev/null ++++ b/libdwfl/fts.c +@@ -0,0 +1,1095 @@ ++/*- ++ * Copyright (c) 1990, 1993, 1994 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include "fts_.h" ++#include ++#include ++#include ++ ++/* Largest alignment size needed, minus one. ++ Usually long double is the worst case. */ ++#ifndef ALIGNBYTES ++#define ALIGNBYTES (__alignof__ (long double) - 1) ++#endif ++/* Align P to that size. */ ++#ifndef ALIGN ++#define ALIGN(p) (((unsigned long int) (p) + ALIGNBYTES) & ~ALIGNBYTES) ++#endif ++ ++ ++static FTSENT *fts_alloc (FTS *, const char *, size_t); ++static FTSENT *fts_build (FTS *, int); ++static void fts_lfree (FTSENT *); ++static void fts_load (FTS *, FTSENT *); ++static size_t fts_maxarglen (char * const *); ++static void fts_padjust (FTS *, FTSENT *); ++static int fts_palloc (FTS *, size_t); ++static FTSENT *fts_sort (FTS *, FTSENT *, int); ++static u_short fts_stat (FTS *, FTSENT *, int); ++static int fts_safe_changedir (FTS *, FTSENT *, int, const char *); ++ ++#ifndef MAX ++#define MAX(a, b) ({ __typeof__ (a) _a = (a); \ ++ __typeof__ (b) _b = (b); \ ++ _a > _b ? _a : _b; }) ++#endif ++ ++#define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2]))) ++ ++#define CLR(opt) (sp->fts_options &= ~(opt)) ++#define ISSET(opt) (sp->fts_options & (opt)) ++#define SET(opt) (sp->fts_options |= (opt)) ++ ++#define FCHDIR(sp, fd) (!ISSET(FTS_NOCHDIR) && fchdir(fd)) ++ ++/* fts_build flags */ ++#define BCHILD 1 /* fts_children */ ++#define BNAMES 2 /* fts_children, names only */ ++#define BREAD 3 /* fts_read */ ++ ++FTS * ++fts_open( char * const *argv, register int options, ++ int (*compar) (const FTSENT **, const FTSENT **)) ++{ ++ register FTS *sp; ++ register FTSENT *p, *root; ++ register int nitems; ++ FTSENT *parent = NULL; ++ FTSENT *tmp = NULL; ++ ++ /* Options check. */ ++ if (options & ~FTS_OPTIONMASK) { ++ errno = EINVAL; ++ return (NULL); ++ } ++ ++ /* Allocate/initialize the stream */ ++ if ((sp = malloc((u_int)sizeof(FTS))) == NULL) ++ return (NULL); ++ memset(sp, 0, sizeof(FTS)); ++ sp->fts_compar = (int (*) (const void *, const void *)) compar; ++ sp->fts_options = options; ++ ++ /* Logical walks turn on NOCHDIR; symbolic links are too hard. */ ++ if (ISSET(FTS_LOGICAL)) ++ SET(FTS_NOCHDIR); ++ ++ /* ++ * Start out with 1K of path space, and enough, in any case, ++ * to hold the user's paths. ++ */ ++#ifndef MAXPATHLEN ++#define MAXPATHLEN 1024 ++#endif ++ size_t maxarglen = fts_maxarglen(argv); ++ if (fts_palloc(sp, MAX(maxarglen, MAXPATHLEN))) ++ goto mem1; ++ ++ /* Allocate/initialize root's parent. */ ++ if (*argv != NULL) { ++ if ((parent = fts_alloc(sp, "", 0)) == NULL) ++ goto mem2; ++ parent->fts_level = FTS_ROOTPARENTLEVEL; ++ } ++ ++ /* Allocate/initialize root(s). */ ++ for (root = NULL, nitems = 0; *argv != NULL; ++argv, ++nitems) { ++ /* Don't allow zero-length paths. */ ++ size_t len = strlen(*argv); ++ if (len == 0) { ++ errno = ENOENT; ++ goto mem3; ++ } ++ ++ p = fts_alloc(sp, *argv, len); ++ p->fts_level = FTS_ROOTLEVEL; ++ p->fts_parent = parent; ++ p->fts_accpath = p->fts_name; ++ p->fts_info = fts_stat(sp, p, ISSET(FTS_COMFOLLOW)); ++ ++ /* Command-line "." and ".." are real directories. */ ++ if (p->fts_info == FTS_DOT) ++ p->fts_info = FTS_D; ++ ++ /* ++ * If comparison routine supplied, traverse in sorted ++ * order; otherwise traverse in the order specified. ++ */ ++ if (compar) { ++ p->fts_link = root; ++ root = p; ++ } else { ++ p->fts_link = NULL; ++ if (root == NULL) ++ tmp = root = p; ++ else { ++ tmp->fts_link = p; ++ tmp = p; ++ } ++ } ++ } ++ if (compar && nitems > 1) ++ root = fts_sort(sp, root, nitems); ++ ++ /* ++ * Allocate a dummy pointer and make fts_read think that we've just ++ * finished the node before the root(s); set p->fts_info to FTS_INIT ++ * so that everything about the "current" node is ignored. ++ */ ++ if ((sp->fts_cur = fts_alloc(sp, "", 0)) == NULL) ++ goto mem3; ++ sp->fts_cur->fts_link = root; ++ sp->fts_cur->fts_info = FTS_INIT; ++ ++ /* ++ * If using chdir(2), grab a file descriptor pointing to dot to ensure ++ * that we can get back here; this could be avoided for some paths, ++ * but almost certainly not worth the effort. Slashes, symbolic links, ++ * and ".." are all fairly nasty problems. Note, if we can't get the ++ * descriptor we run anyway, just more slowly. ++ */ ++ if (!ISSET(FTS_NOCHDIR) ++ && (sp->fts_rfd = open(".", O_RDONLY, 0)) < 0) ++ SET(FTS_NOCHDIR); ++ ++ return (sp); ++ ++mem3: fts_lfree(root); ++ free(parent); ++mem2: free(sp->fts_path); ++mem1: free(sp); ++ return (NULL); ++} ++ ++static void ++fts_load(FTS *sp, register FTSENT *p) ++{ ++ register int len; ++ register char *cp; ++ ++ /* ++ * Load the stream structure for the next traversal. Since we don't ++ * actually enter the directory until after the preorder visit, set ++ * the fts_accpath field specially so the chdir gets done to the right ++ * place and the user can access the first node. From fts_open it's ++ * known that the path will fit. ++ */ ++ len = p->fts_pathlen = p->fts_namelen; ++ memmove(sp->fts_path, p->fts_name, len + 1); ++ if ((cp = strrchr(p->fts_name, '/')) && (cp != p->fts_name || cp[1])) { ++ len = strlen(++cp); ++ memmove(p->fts_name, cp, len + 1); ++ p->fts_namelen = len; ++ } ++ p->fts_accpath = p->fts_path = sp->fts_path; ++ sp->fts_dev = p->fts_dev; ++} ++ ++int ++fts_close(FTS *sp) ++{ ++ register FTSENT *freep, *p; ++ int saved_errno; ++ ++ /* ++ * This still works if we haven't read anything -- the dummy structure ++ * points to the root list, so we step through to the end of the root ++ * list which has a valid parent pointer. ++ */ ++ if (sp->fts_cur) { ++ for (p = sp->fts_cur; p->fts_level >= FTS_ROOTLEVEL;) { ++ freep = p; ++ p = p->fts_link != NULL ? p->fts_link : p->fts_parent; ++ free(freep); ++ } ++ free(p); ++ } ++ ++ /* Free up child linked list, sort array, path buffer. */ ++ if (sp->fts_child) ++ fts_lfree(sp->fts_child); ++ free(sp->fts_array); ++ free(sp->fts_path); ++ ++ /* Return to original directory, save errno if necessary. */ ++ if (!ISSET(FTS_NOCHDIR)) { ++ saved_errno = fchdir(sp->fts_rfd) ? errno : 0; ++ (void)close(sp->fts_rfd); ++ ++ /* Set errno and return. */ ++ if (saved_errno != 0) { ++ /* Free up the stream pointer. */ ++ free(sp); ++ errno = saved_errno; ++ return (-1); ++ } ++ } ++ ++ /* Free up the stream pointer. */ ++ free(sp); ++ return (0); ++} ++ ++/* ++ * Special case of "/" at the end of the path so that slashes aren't ++ * appended which would cause paths to be written as "....//foo". ++ */ ++#define NAPPEND(p) \ ++ (p->fts_path[p->fts_pathlen - 1] == '/' \ ++ ? p->fts_pathlen - 1 : p->fts_pathlen) ++ ++FTSENT * ++fts_read(register FTS *sp) ++{ ++ register FTSENT *p, *tmp; ++ register int instr; ++ register char *t; ++ int saved_errno; ++ ++ /* If finished or unrecoverable error, return NULL. */ ++ if (sp->fts_cur == NULL || ISSET(FTS_STOP)) ++ return (NULL); ++ ++ /* Set current node pointer. */ ++ p = sp->fts_cur; ++ ++ /* Save and zero out user instructions. */ ++ instr = p->fts_instr; ++ p->fts_instr = FTS_NOINSTR; ++ ++ /* Any type of file may be re-visited; re-stat and re-turn. */ ++ if (instr == FTS_AGAIN) { ++ p->fts_info = fts_stat(sp, p, 0); ++ return (p); ++ } ++ ++ /* ++ * Following a symlink -- SLNONE test allows application to see ++ * SLNONE and recover. If indirecting through a symlink, have ++ * keep a pointer to current location. If unable to get that ++ * pointer, follow fails. ++ */ ++ if (instr == FTS_FOLLOW && ++ (p->fts_info == FTS_SL || p->fts_info == FTS_SLNONE)) { ++ p->fts_info = fts_stat(sp, p, 1); ++ if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) { ++ if ((p->fts_symfd = open(".", O_RDONLY, 0)) < 0) { ++ p->fts_errno = errno; ++ p->fts_info = FTS_ERR; ++ } else ++ p->fts_flags |= FTS_SYMFOLLOW; ++ } ++ return (p); ++ } ++ ++ /* Directory in pre-order. */ ++ if (p->fts_info == FTS_D) { ++ /* If skipped or crossed mount point, do post-order visit. */ ++ if (instr == FTS_SKIP || ++ (ISSET(FTS_XDEV) && p->fts_dev != sp->fts_dev)) { ++ if (p->fts_flags & FTS_SYMFOLLOW) ++ (void)close(p->fts_symfd); ++ if (sp->fts_child) { ++ fts_lfree(sp->fts_child); ++ sp->fts_child = NULL; ++ } ++ p->fts_info = FTS_DP; ++ return (p); ++ } ++ ++ /* Rebuild if only read the names and now traversing. */ ++ if (sp->fts_child != NULL && ISSET(FTS_NAMEONLY)) { ++ CLR(FTS_NAMEONLY); ++ fts_lfree(sp->fts_child); ++ sp->fts_child = NULL; ++ } ++ ++ /* ++ * Cd to the subdirectory. ++ * ++ * If have already read and now fail to chdir, whack the list ++ * to make the names come out right, and set the parent errno ++ * so the application will eventually get an error condition. ++ * Set the FTS_DONTCHDIR flag so that when we logically change ++ * directories back to the parent we don't do a chdir. ++ * ++ * If haven't read do so. If the read fails, fts_build sets ++ * FTS_STOP or the fts_info field of the node. ++ */ ++ if (sp->fts_child != NULL) { ++ if (fts_safe_changedir(sp, p, -1, p->fts_accpath)) { ++ p->fts_errno = errno; ++ p->fts_flags |= FTS_DONTCHDIR; ++ for (p = sp->fts_child; p != NULL; ++ p = p->fts_link) ++ p->fts_accpath = ++ p->fts_parent->fts_accpath; ++ } ++ } else if ((sp->fts_child = fts_build(sp, BREAD)) == NULL) { ++ if (ISSET(FTS_STOP)) ++ return (NULL); ++ return (p); ++ } ++ p = sp->fts_child; ++ sp->fts_child = NULL; ++ sp->fts_cur = p; ++ goto name; ++ } ++ ++ /* Move to the next node on this level. */ ++next: tmp = p; ++ if ((p = p->fts_link) != NULL) { ++ sp->fts_cur = p; ++ free(tmp); ++ ++ /* ++ * If reached the top, return to the original directory (or ++ * the root of the tree), and load the paths for the next root. ++ */ ++ if (p->fts_level == FTS_ROOTLEVEL) { ++ if (FCHDIR(sp, sp->fts_rfd)) { ++ SET(FTS_STOP); ++ return (NULL); ++ } ++ fts_load(sp, p); ++ return p; ++ } ++ ++ /* ++ * User may have called fts_set on the node. If skipped, ++ * ignore. If followed, get a file descriptor so we can ++ * get back if necessary. ++ */ ++ if (p->fts_instr == FTS_SKIP) ++ goto next; ++ if (p->fts_instr == FTS_FOLLOW) { ++ p->fts_info = fts_stat(sp, p, 1); ++ if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) { ++ if ((p->fts_symfd = ++ open(".", O_RDONLY, 0)) < 0) { ++ p->fts_errno = errno; ++ p->fts_info = FTS_ERR; ++ } else ++ p->fts_flags |= FTS_SYMFOLLOW; ++ } ++ p->fts_instr = FTS_NOINSTR; ++ } ++ ++name: t = sp->fts_path + NAPPEND(p->fts_parent); ++ *t++ = '/'; ++ memmove(t, p->fts_name, p->fts_namelen + 1); ++ return p; ++ } ++ ++ /* Move up to the parent node. */ ++ p = tmp->fts_parent; ++ sp->fts_cur = p; ++ free(tmp); ++ ++ if (p->fts_level == FTS_ROOTPARENTLEVEL) { ++ /* ++ * Done; free everything up and set errno to 0 so the user ++ * can distinguish between error and EOF. ++ */ ++ free(p); ++ errno = 0; ++ return (sp->fts_cur = NULL); ++ } ++ ++ /* NUL terminate the pathname. */ ++ sp->fts_path[p->fts_pathlen] = '\0'; ++ ++ /* ++ * Return to the parent directory. If at a root node or came through ++ * a symlink, go back through the file descriptor. Otherwise, cd up ++ * one directory. ++ */ ++ if (p->fts_level == FTS_ROOTLEVEL) { ++ if (FCHDIR(sp, sp->fts_rfd)) { ++ SET(FTS_STOP); ++ return (NULL); ++ } ++ } else if (p->fts_flags & FTS_SYMFOLLOW) { ++ if (FCHDIR(sp, p->fts_symfd)) { ++ saved_errno = errno; ++ (void)close(p->fts_symfd); ++ errno = saved_errno; ++ SET(FTS_STOP); ++ return (NULL); ++ } ++ (void)close(p->fts_symfd); ++ } else if (!(p->fts_flags & FTS_DONTCHDIR) && ++ fts_safe_changedir(sp, p->fts_parent, -1, "..")) { ++ SET(FTS_STOP); ++ return (NULL); ++ } ++ p->fts_info = p->fts_errno ? FTS_ERR : FTS_DP; ++ return p; ++} ++ ++/* ++ * Fts_set takes the stream as an argument although it's not used in this ++ * implementation; it would be necessary if anyone wanted to add global ++ * semantics to fts using fts_set. An error return is allowed for similar ++ * reasons. ++ */ ++/* ARGSUSED */ ++int ++fts_set(FTS *sp, FTSENT *p, int instr) ++{ ++ if (instr != 0 && instr != FTS_AGAIN && instr != FTS_FOLLOW && ++ instr != FTS_NOINSTR && instr != FTS_SKIP) { ++ errno = EINVAL; ++ return (1); ++ } ++ p->fts_instr = instr; ++ return (0); ++} ++ ++FTSENT * ++fts_children(register FTS *sp, int instr) ++{ ++ register FTSENT *p; ++ int fd; ++ ++ if (instr != 0 && instr != FTS_NAMEONLY) { ++ errno = EINVAL; ++ return (NULL); ++ } ++ ++ /* Set current node pointer. */ ++ p = sp->fts_cur; ++ ++ /* ++ * Errno set to 0 so user can distinguish empty directory from ++ * an error. ++ */ ++ errno = 0; ++ ++ /* Fatal errors stop here. */ ++ if (ISSET(FTS_STOP)) ++ return (NULL); ++ ++ /* Return logical hierarchy of user's arguments. */ ++ if (p->fts_info == FTS_INIT) ++ return (p->fts_link); ++ ++ /* ++ * If not a directory being visited in pre-order, stop here. Could ++ * allow FTS_DNR, assuming the user has fixed the problem, but the ++ * same effect is available with FTS_AGAIN. ++ */ ++ if (p->fts_info != FTS_D /* && p->fts_info != FTS_DNR */) ++ return (NULL); ++ ++ /* Free up any previous child list. */ ++ if (sp->fts_child != NULL) ++ fts_lfree(sp->fts_child); ++ ++ if (instr == FTS_NAMEONLY) { ++ SET(FTS_NAMEONLY); ++ instr = BNAMES; ++ } else ++ instr = BCHILD; ++ ++ /* ++ * If using chdir on a relative path and called BEFORE fts_read does ++ * its chdir to the root of a traversal, we can lose -- we need to ++ * chdir into the subdirectory, and we don't know where the current ++ * directory is, so we can't get back so that the upcoming chdir by ++ * fts_read will work. ++ */ ++ if (p->fts_level != FTS_ROOTLEVEL || p->fts_accpath[0] == '/' || ++ ISSET(FTS_NOCHDIR)) ++ return (sp->fts_child = fts_build(sp, instr)); ++ ++ if ((fd = open(".", O_RDONLY, 0)) < 0) ++ return (NULL); ++ sp->fts_child = fts_build(sp, instr); ++ if (fchdir(fd)) ++ return (NULL); ++ (void)close(fd); ++ return (sp->fts_child); ++} ++ ++/* ++ * This is the tricky part -- do not casually change *anything* in here. The ++ * idea is to build the linked list of entries that are used by fts_children ++ * and fts_read. There are lots of special cases. ++ * ++ * The real slowdown in walking the tree is the stat calls. If FTS_NOSTAT is ++ * set and it's a physical walk (so that symbolic links can't be directories), ++ * we can do things quickly. First, if it's a 4.4BSD file system, the type ++ * of the file is in the directory entry. Otherwise, we assume that the number ++ * of subdirectories in a node is equal to the number of links to the parent. ++ * The former skips all stat calls. The latter skips stat calls in any leaf ++ * directories and for any files after the subdirectories in the directory have ++ * been found, cutting the stat calls by about 2/3. ++ */ ++static FTSENT * ++fts_build(register FTS *sp, int type) ++{ ++ register struct dirent *dp; ++ register FTSENT *p, *head; ++ register int nitems; ++ FTSENT *cur, *tail; ++ DIR *dirp; ++ void *oldaddr; ++ int cderrno, descend, len, level, nlinks, saved_errno, ++ nostat, doadjust; ++ size_t maxlen; ++ char *cp; ++ ++ /* Set current node pointer. */ ++ cur = sp->fts_cur; ++ ++ /* ++ * Open the directory for reading. If this fails, we're done. ++ * If being called from fts_read, set the fts_info field. ++ */ ++#if defined FTS_WHITEOUT && 0 ++ if (ISSET(FTS_WHITEOUT)) ++ oflag = DTF_NODUP|DTF_REWIND; ++ else ++ oflag = DTF_HIDEW|DTF_NODUP|DTF_REWIND; ++#else ++# define opendir2(path, flag) opendir(path) ++#endif ++ if ((dirp = opendir2(cur->fts_accpath, oflag)) == NULL) { ++ if (type == BREAD) { ++ cur->fts_info = FTS_DNR; ++ cur->fts_errno = errno; ++ } ++ return (NULL); ++ } ++ ++ /* ++ * Nlinks is the number of possible entries of type directory in the ++ * directory if we're cheating on stat calls, 0 if we're not doing ++ * any stat calls at all, -1 if we're doing stats on everything. ++ */ ++ if (type == BNAMES) { ++ nlinks = 0; ++ /* Be quiet about nostat, GCC. */ ++ nostat = 0; ++ } else if (ISSET(FTS_NOSTAT) && ISSET(FTS_PHYSICAL)) { ++ nlinks = cur->fts_nlink - (ISSET(FTS_SEEDOT) ? 0 : 2); ++ nostat = 1; ++ } else { ++ nlinks = -1; ++ nostat = 0; ++ } ++ ++#ifdef notdef ++ (void)printf("nlinks == %d (cur: %d)\n", nlinks, cur->fts_nlink); ++ (void)printf("NOSTAT %d PHYSICAL %d SEEDOT %d\n", ++ ISSET(FTS_NOSTAT), ISSET(FTS_PHYSICAL), ISSET(FTS_SEEDOT)); ++#endif ++ /* ++ * If we're going to need to stat anything or we want to descend ++ * and stay in the directory, chdir. If this fails we keep going, ++ * but set a flag so we don't chdir after the post-order visit. ++ * We won't be able to stat anything, but we can still return the ++ * names themselves. Note, that since fts_read won't be able to ++ * chdir into the directory, it will have to return different path ++ * names than before, i.e. "a/b" instead of "b". Since the node ++ * has already been visited in pre-order, have to wait until the ++ * post-order visit to return the error. There is a special case ++ * here, if there was nothing to stat then it's not an error to ++ * not be able to stat. This is all fairly nasty. If a program ++ * needed sorted entries or stat information, they had better be ++ * checking FTS_NS on the returned nodes. ++ */ ++ cderrno = 0; ++ if (nlinks || type == BREAD) { ++ if (fts_safe_changedir(sp, cur, dirfd(dirp), NULL)) { ++ if (nlinks && type == BREAD) ++ cur->fts_errno = errno; ++ cur->fts_flags |= FTS_DONTCHDIR; ++ descend = 0; ++ cderrno = errno; ++ (void)closedir(dirp); ++ dirp = NULL; ++ } else ++ descend = 1; ++ } else ++ descend = 0; ++ ++ /* ++ * Figure out the max file name length that can be stored in the ++ * current path -- the inner loop allocates more path as necessary. ++ * We really wouldn't have to do the maxlen calculations here, we ++ * could do them in fts_read before returning the path, but it's a ++ * lot easier here since the length is part of the dirent structure. ++ * ++ * If not changing directories set a pointer so that can just append ++ * each new name into the path. ++ */ ++ len = NAPPEND(cur); ++ if (ISSET(FTS_NOCHDIR)) { ++ cp = sp->fts_path + len; ++ *cp++ = '/'; ++ } else { ++ /* GCC, you're too verbose. */ ++ cp = NULL; ++ } ++ len++; ++ maxlen = sp->fts_pathlen - len; ++ ++ level = cur->fts_level + 1; ++ ++ /* Read the directory, attaching each entry to the `link' pointer. */ ++ doadjust = 0; ++ for (head = tail = NULL, nitems = 0; dirp && (dp = readdir(dirp));) { ++ if (!ISSET(FTS_SEEDOT) && ISDOT(dp->d_name)) ++ continue; ++ ++ if ((p = fts_alloc(sp, dp->d_name, _D_EXACT_NAMLEN (dp))) == NULL) ++ goto mem1; ++ if (_D_EXACT_NAMLEN (dp) >= maxlen) {/* include space for NUL */ ++ oldaddr = sp->fts_path; ++ if (fts_palloc(sp, _D_EXACT_NAMLEN (dp) + len + 1)) { ++ /* ++ * No more memory for path or structures. Save ++ * errno, free up the current structure and the ++ * structures already allocated. ++ */ ++mem1: saved_errno = errno; ++ free(p); ++ fts_lfree(head); ++ (void)closedir(dirp); ++ cur->fts_info = FTS_ERR; ++ SET(FTS_STOP); ++ errno = saved_errno; ++ return (NULL); ++ } ++ /* Did realloc() change the pointer? */ ++ if (oldaddr != sp->fts_path) { ++ doadjust = 1; ++ if (ISSET(FTS_NOCHDIR)) ++ cp = sp->fts_path + len; ++ } ++ maxlen = sp->fts_pathlen - len; ++ } ++ ++ if (len + _D_EXACT_NAMLEN (dp) >= USHRT_MAX) { ++ /* ++ * In an FTSENT, fts_pathlen is a u_short so it is ++ * possible to wraparound here. If we do, free up ++ * the current structure and the structures already ++ * allocated, then error out with ENAMETOOLONG. ++ */ ++ free(p); ++ fts_lfree(head); ++ (void)closedir(dirp); ++ cur->fts_info = FTS_ERR; ++ SET(FTS_STOP); ++ errno = ENAMETOOLONG; ++ return (NULL); ++ } ++ p->fts_level = level; ++ p->fts_parent = sp->fts_cur; ++ p->fts_pathlen = len + _D_EXACT_NAMLEN (dp); ++ ++#if defined FTS_WHITEOUT && 0 ++ if (dp->d_type == DT_WHT) ++ p->fts_flags |= FTS_ISW; ++#endif ++ ++#if 0 ++ /* Unreachable code. cderrno is only ever set to a nonnull ++ value if dirp is closed at the same time. But then we ++ cannot enter this loop. */ ++ if (cderrno) { ++ if (nlinks) { ++ p->fts_info = FTS_NS; ++ p->fts_errno = cderrno; ++ } else ++ p->fts_info = FTS_NSOK; ++ p->fts_accpath = cur->fts_accpath; ++ } else ++#endif ++ if (nlinks == 0 ++#if defined DT_DIR && defined _DIRENT_HAVE_D_TYPE ++ || (nostat && ++ dp->d_type != DT_DIR && dp->d_type != DT_UNKNOWN) ++#endif ++ ) { ++ p->fts_accpath = ++ ISSET(FTS_NOCHDIR) ? p->fts_path : p->fts_name; ++ p->fts_info = FTS_NSOK; ++ } else { ++ /* Build a file name for fts_stat to stat. */ ++ if (ISSET(FTS_NOCHDIR)) { ++ p->fts_accpath = p->fts_path; ++ memmove(cp, p->fts_name, p->fts_namelen + 1); ++ } else ++ p->fts_accpath = p->fts_name; ++ /* Stat it. */ ++ p->fts_info = fts_stat(sp, p, 0); ++ ++ /* Decrement link count if applicable. */ ++ if (nlinks > 0 && (p->fts_info == FTS_D || ++ p->fts_info == FTS_DC || p->fts_info == FTS_DOT)) ++ --nlinks; ++ } ++ ++ /* We walk in directory order so "ls -f" doesn't get upset. */ ++ p->fts_link = NULL; ++ if (head == NULL) ++ head = tail = p; ++ else { ++ tail->fts_link = p; ++ tail = p; ++ } ++ ++nitems; ++ } ++ if (dirp) ++ (void)closedir(dirp); ++ ++ /* ++ * If realloc() changed the address of the path, adjust the ++ * addresses for the rest of the tree and the dir list. ++ */ ++ if (doadjust) ++ fts_padjust(sp, head); ++ ++ /* ++ * If not changing directories, reset the path back to original ++ * state. ++ */ ++ if (ISSET(FTS_NOCHDIR)) { ++ if (len == sp->fts_pathlen || nitems == 0) ++ --cp; ++ *cp = '\0'; ++ } ++ ++ /* ++ * If descended after called from fts_children or after called from ++ * fts_read and nothing found, get back. At the root level we use ++ * the saved fd; if one of fts_open()'s arguments is a relative path ++ * to an empty directory, we wind up here with no other way back. If ++ * can't get back, we're done. ++ */ ++ if (descend && (type == BCHILD || !nitems) && ++ (cur->fts_level == FTS_ROOTLEVEL ? ++ FCHDIR(sp, sp->fts_rfd) : ++ fts_safe_changedir(sp, cur->fts_parent, -1, ".."))) { ++ cur->fts_info = FTS_ERR; ++ SET(FTS_STOP); ++ fts_lfree(head); ++ return (NULL); ++ } ++ ++ /* If didn't find anything, return NULL. */ ++ if (!nitems) { ++ if (type == BREAD) ++ cur->fts_info = FTS_DP; ++ fts_lfree(head); ++ return (NULL); ++ } ++ ++ /* Sort the entries. */ ++ if (sp->fts_compar && nitems > 1) ++ head = fts_sort(sp, head, nitems); ++ return (head); ++} ++ ++static u_short ++fts_stat(FTS *sp, register FTSENT *p, int follow) ++{ ++ register FTSENT *t; ++ register dev_t dev; ++ register ino_t ino; ++ struct stat *sbp, sb; ++ int saved_errno; ++ ++ /* If user needs stat info, stat buffer already allocated. */ ++ sbp = ISSET(FTS_NOSTAT) ? &sb : p->fts_statp; ++ ++#if defined FTS_WHITEOUT && 0 ++ /* check for whiteout */ ++ if (p->fts_flags & FTS_ISW) { ++ if (sbp != &sb) { ++ memset(sbp, '\0', sizeof (*sbp)); ++ sbp->st_mode = S_IFWHT; ++ } ++ return (FTS_W); ++ } ++#endif ++ ++ /* ++ * If doing a logical walk, or application requested FTS_FOLLOW, do ++ * a stat(2). If that fails, check for a non-existent symlink. If ++ * fail, set the errno from the stat call. ++ */ ++ if (ISSET(FTS_LOGICAL) || follow) { ++ if (stat(p->fts_accpath, sbp)) { ++ saved_errno = errno; ++ if (!lstat(p->fts_accpath, sbp)) { ++ errno = 0; ++ return (FTS_SLNONE); ++ } ++ p->fts_errno = saved_errno; ++ goto err; ++ } ++ } else if (lstat(p->fts_accpath, sbp)) { ++ p->fts_errno = errno; ++err: memset(sbp, 0, sizeof(struct stat)); ++ return (FTS_NS); ++ } ++ ++ if (S_ISDIR(sbp->st_mode)) { ++ /* ++ * Set the device/inode. Used to find cycles and check for ++ * crossing mount points. Also remember the link count, used ++ * in fts_build to limit the number of stat calls. It is ++ * understood that these fields are only referenced if fts_info ++ * is set to FTS_D. ++ */ ++ dev = p->fts_dev = sbp->st_dev; ++ ino = p->fts_ino = sbp->st_ino; ++ p->fts_nlink = sbp->st_nlink; ++ ++ if (ISDOT(p->fts_name)) ++ return (FTS_DOT); ++ ++ /* ++ * Cycle detection is done by brute force when the directory ++ * is first encountered. If the tree gets deep enough or the ++ * number of symbolic links to directories is high enough, ++ * something faster might be worthwhile. ++ */ ++ for (t = p->fts_parent; ++ t->fts_level >= FTS_ROOTLEVEL; t = t->fts_parent) ++ if (ino == t->fts_ino && dev == t->fts_dev) { ++ p->fts_cycle = t; ++ return (FTS_DC); ++ } ++ return (FTS_D); ++ } ++ if (S_ISLNK(sbp->st_mode)) ++ return (FTS_SL); ++ if (S_ISREG(sbp->st_mode)) ++ return (FTS_F); ++ return (FTS_DEFAULT); ++} ++ ++static FTSENT * ++fts_sort(FTS *sp, FTSENT *head, register int nitems) ++{ ++ register FTSENT **ap, *p; ++ ++ /* ++ * Construct an array of pointers to the structures and call qsort(3). ++ * Reassemble the array in the order returned by qsort. If unable to ++ * sort for memory reasons, return the directory entries in their ++ * current order. Allocate enough space for the current needs plus ++ * 40 so don't realloc one entry at a time. ++ */ ++ if (nitems > sp->fts_nitems) { ++ struct _ftsent **a; ++ ++ sp->fts_nitems = nitems + 40; ++ if ((a = realloc(sp->fts_array, ++ (size_t)(sp->fts_nitems * sizeof(FTSENT *)))) == NULL) { ++ free(sp->fts_array); ++ sp->fts_array = NULL; ++ sp->fts_nitems = 0; ++ return (head); ++ } ++ sp->fts_array = a; ++ } ++ for (ap = sp->fts_array, p = head; p; p = p->fts_link) ++ *ap++ = p; ++ qsort((void *)sp->fts_array, nitems, sizeof(FTSENT *), sp->fts_compar); ++ for (head = *(ap = sp->fts_array); --nitems; ++ap) ++ ap[0]->fts_link = ap[1]; ++ ap[0]->fts_link = NULL; ++ return (head); ++} ++ ++static FTSENT * ++fts_alloc(FTS *sp, const char *name, size_t namelen) ++{ ++ register FTSENT *p; ++ size_t len; ++ ++ /* ++ * The file name is a variable length array and no stat structure is ++ * necessary if the user has set the nostat bit. Allocate the FTSENT ++ * structure, the file name and the stat structure in one chunk, but ++ * be careful that the stat structure is reasonably aligned. Since the ++ * fts_name field is declared to be of size 1, the fts_name pointer is ++ * namelen + 2 before the first possible address of the stat structure. ++ */ ++ len = sizeof(FTSENT) + namelen; ++ if (!ISSET(FTS_NOSTAT)) ++ len += sizeof(struct stat) + ALIGNBYTES; ++ if ((p = malloc(len)) == NULL) ++ return (NULL); ++ ++ /* Copy the name and guarantee NUL termination. */ ++ memmove(p->fts_name, name, namelen); ++ p->fts_name[namelen] = '\0'; ++ ++ if (!ISSET(FTS_NOSTAT)) ++ p->fts_statp = (struct stat *)ALIGN(p->fts_name + namelen + 2); ++ p->fts_namelen = namelen; ++ p->fts_path = sp->fts_path; ++ p->fts_errno = 0; ++ p->fts_flags = 0; ++ p->fts_instr = FTS_NOINSTR; ++ p->fts_number = 0; ++ p->fts_pointer = NULL; ++ return (p); ++} ++ ++static void ++fts_lfree(register FTSENT *head) ++{ ++ register FTSENT *p; ++ ++ /* Free a linked list of structures. */ ++ while ((p = head)) { ++ head = head->fts_link; ++ free(p); ++ } ++} ++ ++/* ++ * Allow essentially unlimited paths; find, rm, ls should all work on any tree. ++ * Most systems will allow creation of paths much longer than MAXPATHLEN, even ++ * though the kernel won't resolve them. Add the size (not just what's needed) ++ * plus 256 bytes so don't realloc the path 2 bytes at a time. ++ */ ++static int ++fts_palloc(FTS *sp, size_t more) ++{ ++ char *p; ++ ++ sp->fts_pathlen += more + 256; ++ /* ++ * Check for possible wraparound. In an FTS, fts_pathlen is ++ * a signed int but in an FTSENT it is an unsigned short. ++ * We limit fts_pathlen to USHRT_MAX to be safe in both cases. ++ */ ++ if (sp->fts_pathlen < 0 || sp->fts_pathlen >= USHRT_MAX) { ++ free(sp->fts_path); ++ sp->fts_path = NULL; ++ errno = ENAMETOOLONG; ++ return (1); ++ } ++ p = realloc(sp->fts_path, sp->fts_pathlen); ++ if (p == NULL) { ++ free(sp->fts_path); ++ sp->fts_path = NULL; ++ return 1; ++ } ++ sp->fts_path = p; ++ return 0; ++} ++ ++/* ++ * When the path is realloc'd, have to fix all of the pointers in structures ++ * already returned. ++ */ ++static void ++fts_padjust(FTS *sp, FTSENT *head) ++{ ++ FTSENT *p; ++ char *addr = sp->fts_path; ++ ++#define ADJUST(p) do { \ ++ if ((p)->fts_accpath != (p)->fts_name) { \ ++ (p)->fts_accpath = \ ++ (char *)addr + ((p)->fts_accpath - (p)->fts_path); \ ++ } \ ++ (p)->fts_path = addr; \ ++} while (0) ++ /* Adjust the current set of children. */ ++ for (p = sp->fts_child; p; p = p->fts_link) ++ ADJUST(p); ++ ++ /* Adjust the rest of the tree, including the current level. */ ++ for (p = head; p->fts_level >= FTS_ROOTLEVEL;) { ++ ADJUST(p); ++ p = p->fts_link ? p->fts_link : p->fts_parent; ++ } ++} ++ ++static size_t ++fts_maxarglen(char * const *argv) ++{ ++ size_t len, max; ++ ++ for (max = 0; *argv; ++argv) ++ if ((len = strlen(*argv)) > max) ++ max = len; ++ return (max + 1); ++} ++ ++/* ++ * Change to dir specified by fd or p->fts_accpath without getting ++ * tricked by someone changing the world out from underneath us. ++ * Assumes p->fts_dev and p->fts_ino are filled in. ++ */ ++static int ++fts_safe_changedir(FTS *sp, FTSENT *p, int fd, const char *path) ++{ ++ int ret, oerrno, newfd; ++ struct stat64 sb; ++ ++ newfd = fd; ++ if (ISSET(FTS_NOCHDIR)) ++ return (0); ++ if (fd < 0 && (newfd = open(path, O_RDONLY, 0)) < 0) ++ return (-1); ++ if (fstat64(newfd, &sb)) { ++ ret = -1; ++ goto bail; ++ } ++ if (p->fts_dev != sb.st_dev || p->fts_ino != sb.st_ino) { ++ errno = ENOENT; /* disinformation */ ++ ret = -1; ++ goto bail; ++ } ++ ret = fchdir(newfd); ++bail: ++ oerrno = errno; ++ if (fd < 0) ++ (void)close(newfd); ++ errno = oerrno; ++ return (ret); ++} +diff --git a/libdwfl/fts_.h b/libdwfl/fts_.h +new file mode 100644 +index 000000000000..0a070ba8dce5 +--- /dev/null ++++ b/libdwfl/fts_.h +@@ -0,0 +1,131 @@ ++/* ++ * Copyright (c) 1989, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 4. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * ++ * @(#)fts.h 8.3 (Berkeley) 8/14/94 ++ */ ++ ++#ifndef _FTS_H ++#define _FTS_H 1 ++ ++#include ++#include ++ ++/* The fts interface is incompatible with the LFS interface which ++ transparently uses the 64-bit file access functions. */ ++#ifdef __USE_FILE_OFFSET64 ++# error " cannot be used with -D_FILE_OFFSET_BITS==64" ++#endif ++ ++ ++typedef struct { ++ struct _ftsent *fts_cur; /* current node */ ++ struct _ftsent *fts_child; /* linked list of children */ ++ struct _ftsent **fts_array; /* sort array */ ++ dev_t fts_dev; /* starting device # */ ++ char *fts_path; /* path for this descent */ ++ int fts_rfd; /* fd for root */ ++ int fts_pathlen; /* sizeof(path) */ ++ int fts_nitems; /* elements in the sort array */ ++ int (*fts_compar) (const void *, const void *); /* compare fn */ ++ ++#define FTS_COMFOLLOW 0x0001 /* follow command line symlinks */ ++#define FTS_LOGICAL 0x0002 /* logical walk */ ++#define FTS_NOCHDIR 0x0004 /* don't change directories */ ++#define FTS_NOSTAT 0x0008 /* don't get stat info */ ++#define FTS_PHYSICAL 0x0010 /* physical walk */ ++#define FTS_SEEDOT 0x0020 /* return dot and dot-dot */ ++#define FTS_XDEV 0x0040 /* don't cross devices */ ++#define FTS_WHITEOUT 0x0080 /* return whiteout information */ ++#define FTS_OPTIONMASK 0x00ff /* valid user option mask */ ++ ++#define FTS_NAMEONLY 0x0100 /* (private) child names only */ ++#define FTS_STOP 0x0200 /* (private) unrecoverable error */ ++ int fts_options; /* fts_open options, global flags */ ++} FTS; ++ ++typedef struct _ftsent { ++ struct _ftsent *fts_cycle; /* cycle node */ ++ struct _ftsent *fts_parent; /* parent directory */ ++ struct _ftsent *fts_link; /* next file in directory */ ++ long fts_number; /* local numeric value */ ++ void *fts_pointer; /* local address value */ ++ char *fts_accpath; /* access path */ ++ char *fts_path; /* root path */ ++ int fts_errno; /* errno for this node */ ++ int fts_symfd; /* fd for symlink */ ++ u_short fts_pathlen; /* strlen(fts_path) */ ++ u_short fts_namelen; /* strlen(fts_name) */ ++ ++ ino_t fts_ino; /* inode */ ++ dev_t fts_dev; /* device */ ++ nlink_t fts_nlink; /* link count */ ++ ++#define FTS_ROOTPARENTLEVEL -1 ++#define FTS_ROOTLEVEL 0 ++ short fts_level; /* depth (-1 to N) */ ++ ++#define FTS_D 1 /* preorder directory */ ++#define FTS_DC 2 /* directory that causes cycles */ ++#define FTS_DEFAULT 3 /* none of the above */ ++#define FTS_DNR 4 /* unreadable directory */ ++#define FTS_DOT 5 /* dot or dot-dot */ ++#define FTS_DP 6 /* postorder directory */ ++#define FTS_ERR 7 /* error; errno is set */ ++#define FTS_F 8 /* regular file */ ++#define FTS_INIT 9 /* initialized only */ ++#define FTS_NS 10 /* stat(2) failed */ ++#define FTS_NSOK 11 /* no stat(2) requested */ ++#define FTS_SL 12 /* symbolic link */ ++#define FTS_SLNONE 13 /* symbolic link without target */ ++#define FTS_W 14 /* whiteout object */ ++ u_short fts_info; /* user flags for FTSENT structure */ ++ ++#define FTS_DONTCHDIR 0x01 /* don't chdir .. to the parent */ ++#define FTS_SYMFOLLOW 0x02 /* followed a symlink to get here */ ++ u_short fts_flags; /* private flags for FTSENT structure */ ++ ++#define FTS_AGAIN 1 /* read node again */ ++#define FTS_FOLLOW 2 /* follow symbolic link */ ++#define FTS_NOINSTR 3 /* no instructions */ ++#define FTS_SKIP 4 /* discard node */ ++ u_short fts_instr; /* fts_set() instructions */ ++ ++ struct stat *fts_statp; /* stat(2) information */ ++ char fts_name[1]; /* file name */ ++} FTSENT; ++ ++__BEGIN_DECLS ++FTSENT *fts_children (FTS *, int); ++int fts_close (FTS *); ++FTS *fts_open (char * const *, int, ++ int (*)(const FTSENT **, const FTSENT **)); ++FTSENT *fts_read (FTS *); ++int fts_set (FTS *, FTSENT *, int) __THROW; ++__END_DECLS ++ ++#endif /* fts.h */ +diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c +index 9d0fef2cf260..47f0e3892294 100644 +--- a/libdwfl/linux-kernel-modules.c ++++ b/libdwfl/linux-kernel-modules.c +@@ -31,10 +31,14 @@ + Everything we need here is fine if its declarations just come first. + Also, include sys/types.h before fts. On some systems fts.h is not self + contained. */ ++#ifdef HAVE_FTS_H + #ifdef BAD_FTS + #include + #include + #endif ++#else ++#include ++#endif + + #include + #include +-- +2.11.0 + diff --git a/buildroot/package/elfutils/0004-disable-po.patch b/buildroot/package/elfutils/0004-disable-po.patch new file mode 100644 index 0000000..c45c580 --- /dev/null +++ b/buildroot/package/elfutils/0004-disable-po.patch @@ -0,0 +1,24 @@ +Disable the build of the po/ directory + +Building the po/ directory complains that the scripts in there have +been generated with gettext 0.17, while we use gettext 0.18 in +Buildroot. Since we don't care that much about po files anyway, just +disable the build of this directory. + +Based on the former patch by Thomas Petazzoni. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Vicente Olivert Riera + +diff -rup a/Makefile.am b/Makefile.am +--- a/Makefile.am 2014-11-07 15:14:39.018060884 +0000 ++++ b/Makefile.am 2014-11-07 15:30:02.864918229 +0000 +@@ -28,7 +28,7 @@ endif + + # Add doc back when we have some real content. + SUBDIRS = config m4 lib libelf libebl libdwelf libdwfl libdw libcpu libasm \ +- backends $(PROGS_SUBDIR) po tests ++ backends $(PROGS_SUBDIR) tests + + EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \ + COPYING COPYING-GPLV2 COPYING-LGPLV3 diff --git a/buildroot/package/elfutils/0005-really-make-werror-conditional-to-build-werror.patch b/buildroot/package/elfutils/0005-really-make-werror-conditional-to-build-werror.patch new file mode 100644 index 0000000..a7017d6 --- /dev/null +++ b/buildroot/package/elfutils/0005-really-make-werror-conditional-to-build-werror.patch @@ -0,0 +1,36 @@ +From 1d8f27d73df6369b19ddd6732960df0d4fdec338 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Mon, 29 May 2017 23:24:42 +0300 +Subject: [PATCH] Really make -Werror conditional to BUILD_WERROR + +Otherwise it will fail with an error message like this one: + +elf_getarsym.c:290:9: error: 'n' may be used uninitialized in this +function [-Werror=maybe-uninitialized] + arsym[n].as_name = NULL; + ^ +cc1: all warnings being treated as errors + +[Vincent: tweak patch for 0.166] + +Signed-off-by: "Yann E. MORIN" +Signed-off-by: Vicente Olivert Riera +--- + config/eu.am | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/config/eu.am b/config/eu.am +index 8fe1e259f9e2..c5a6209a4e04 100644 +--- a/config/eu.am ++++ b/config/eu.am +@@ -71,7 +71,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \ + -Wold-style-definition -Wstrict-prototypes \ + $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \ + $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \ +- $(if $($(*F)_no_Werror),,-Werror) \ + $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ + $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \ + $($(*F)_CFLAGS) +-- +2.11.0 + diff --git a/buildroot/package/elfutils/0006-memcpy-def.patch b/buildroot/package/elfutils/0006-memcpy-def.patch new file mode 100644 index 0000000..5094827 --- /dev/null +++ b/buildroot/package/elfutils/0006-memcpy-def.patch @@ -0,0 +1,26 @@ +Provide a compatibility alias __memcpy + +For some reason, libelf uses the internal glibc alias __memcpy, which +doesn't exist in uClibc. Add a manual alias so that the build can +proceed with uClibc. + +Based on the former patch by Thomas Petazzoni. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Vicente Olivert Riera + +diff -rup a/libelf/libelf.h b/libelf/libelf.h +--- a/libelf/libelf.h 2014-08-27 10:25:17.000000000 +0100 ++++ b/libelf/libelf.h 2014-11-07 15:13:08.743508221 +0000 +@@ -34,6 +34,11 @@ + /* Get the ELF types. */ + #include + ++#ifndef _LIBC ++#ifndef __mempcpy ++#define __mempcpy mempcpy ++#endif ++#endif + + /* Known translation types. */ + typedef enum diff --git a/buildroot/package/elfutils/Config.in b/buildroot/package/elfutils/Config.in new file mode 100644 index 0000000..ad86c31 --- /dev/null +++ b/buildroot/package/elfutils/Config.in @@ -0,0 +1,35 @@ +comment "elfutils needs a uClibc or glibc toolchain w/ wchar, dynamic library" + depends on !BR2_bfin + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) + +config BR2_PACKAGE_ELFUTILS + bool "elfutils" + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS + # Only glibc and uClibc implement the myriad of required GNUisms + depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC + # build issue caused by the _ prefix used on blackfin for + # assembly symbols + depends on !BR2_bfin + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC + help + Libraries/utilities to handle ELF objects (drop in + replacement for libelf). + + Note that this option only installs the libraries, and not + the programs. + + https://sourceware.org/elfutils/ + +if BR2_PACKAGE_ELFUTILS + +config BR2_PACKAGE_ELFUTILS_PROGS + bool "Install programs" + depends on BR2_TOOLCHAIN_USES_GLIBC + help + This option tells elfutils to not only install the libelf + libraries, but also the elfutils programs. + +endif diff --git a/buildroot/package/elfutils/elfutils.hash b/buildroot/package/elfutils/elfutils.hash new file mode 100644 index 0000000..76b6dc6 --- /dev/null +++ b/buildroot/package/elfutils/elfutils.hash @@ -0,0 +1,2 @@ +# From https://sourceware.org/elfutils/ftp/0.169/sha512.sum +sha512 0a81a20bb2aff533d035d6b76f1403437b2e11bce390db57e34b8c26e4b9b3150346d83dddcbfbbdc58063f046ca3223508dba35c6ce88e375d201e7a777a8b9 elfutils-0.169.tar.bz2 diff --git a/buildroot/package/elfutils/elfutils.mk b/buildroot/package/elfutils/elfutils.mk new file mode 100644 index 0000000..5570a3b --- /dev/null +++ b/buildroot/package/elfutils/elfutils.mk @@ -0,0 +1,77 @@ +################################################################################ +# +# elfutils +# +################################################################################ + +ELFUTILS_VERSION = 0.169 +ELFUTILS_SOURCE = elfutils-$(ELFUTILS_VERSION).tar.bz2 +ELFUTILS_SITE = https://sourceware.org/elfutils/ftp/$(ELFUTILS_VERSION) +ELFUTILS_INSTALL_STAGING = YES +ELFUTILS_LICENSE = GPL-2.0+ or LGPL-3.0+ (library) +ELFUTILS_LICENSE_FILES = COPYING-GPLV2 COPYING-LGPLV3 +ELFUTILS_DEPENDENCIES = zlib $(TARGET_NLS_DEPENDENCIES) +HOST_ELFUTILS_DEPENDENCIES = host-zlib host-bzip2 host-xz + +# We patch configure.ac +ELFUTILS_AUTORECONF = YES +HOST_ELFUTILS_AUTORECONF = YES + +# Pass a custom program prefix to avoid a naming conflict between +# elfutils binaries and binutils binaries. +ELFUTILS_CONF_OPTS += \ + --program-prefix="eu-" + +HOST_ELFUTILS_CONF_OPTS = \ + --with-bzlib \ + --with-lzma \ + --disable-progs + +# elfutils gets confused when lfs mode is forced, so don't +ELFUTILS_CFLAGS = $(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS)) +ELFUTILS_CPPFLAGS = $(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CPPFLAGS)) + +# sparc64 needs -fPIC instead of -fpic +ifeq ($(BR2_sparc64),y) +ELFUTILS_CFLAGS += -fPIC +endif + +ELFUTILS_CONF_ENV += \ + CFLAGS="$(ELFUTILS_CFLAGS)" \ + CPPFLAGS="$(ELFUTILS_CPPFLAGS)" + +ELFUTILS_LDFLAGS = $(TARGET_LDFLAGS) \ + $(TARGET_NLS_LIBS) + +ELFUTILS_CONF_ENV += \ + LDFLAGS="$(ELFUTILS_LDFLAGS)" + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +ELFUTILS_DEPENDENCIES += argp-standalone +ELFUTILS_CONF_OPTS += --disable-symbol-versioning +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +ELFUTILS_DEPENDENCIES += bzip2 +ELFUTILS_CONF_OPTS += --with-bzlib +else +ELFUTILS_CONF_OPTS += --without-bzlib +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +ELFUTILS_DEPENDENCIES += xz +ELFUTILS_CONF_OPTS += --with-lzma +else +ELFUTILS_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_ELFUTILS_PROGS),y) +ELFUTILS_CONF_OPTS += --enable-progs +ELFUTILS_LICENSE := $(ELFUTILS_LICENSE), GPL-3.0+ (programs) +ELFUTILS_LICENSE_FILES += COPYING +else +ELFUTILS_CONF_OPTS += --disable-progs +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/emlog/Config.in b/buildroot/package/emlog/Config.in new file mode 100644 index 0000000..77d0ca3 --- /dev/null +++ b/buildroot/package/emlog/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_EMLOG + bool "emlog" + depends on BR2_LINUX_KERNEL + help + emlog is a Linux kernel module that makes it easy to access + the most recent (and only the most recent) output from a + process. It works just like "tail -f" on a log file, except + that the storage required never grows. This can be useful in + embedded systems where there isn't enough memory or disk + space for keeping complete log files, but the most recent + debugging messages are sometimes needed (e.g., after an + error is observed). + + https://github.com/nicupavel/emlog + +comment "emlog needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/emlog/emlog.hash b/buildroot/package/emlog/emlog.hash new file mode 100644 index 0000000..9d81d47 --- /dev/null +++ b/buildroot/package/emlog/emlog.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9f791a00c86215306597b761ef5c5ad267efee5f01efbe23cfcc04e583aa402d emlog-emlog-0.60.tar.gz diff --git a/buildroot/package/emlog/emlog.mk b/buildroot/package/emlog/emlog.mk new file mode 100644 index 0000000..e0926e6 --- /dev/null +++ b/buildroot/package/emlog/emlog.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# emlog +# +################################################################################ + +EMLOG_VERSION = emlog-0.60 +EMLOG_SITE = $(call github,nicupavel,emlog,$(EMLOG_VERSION)) +EMLOG_LICENSE = GPL-2.0 +EMLOG_LICENSE_FILES = COPYING + +define EMLOG_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) nbcat +endef + +# make install tries to strip, so install manually. +define EMLOG_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/nbcat $(TARGET_DIR)/usr/bin/nbcat +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/empty/0001-respect-LDFLAGS.patch b/buildroot/package/empty/0001-respect-LDFLAGS.patch new file mode 100644 index 0000000..b98af07 --- /dev/null +++ b/buildroot/package/empty/0001-respect-LDFLAGS.patch @@ -0,0 +1,22 @@ +downloaded from +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-misc/empty/files/empty-respect-LDFLAGS.patch?view=markup + +Reported on the Gentoo bug tracker +https://bugs.gentoo.org/show_bug.cgi?id=429664 + +and reported upstream +https://sourceforge.net/tracker/?func=detail&aid=3554236&group_id=136798&atid=736886 + +Signed-off-by: Bernd Kuhls + +--- empty-0.6.18b/Makefile ++++ empty-0.6.18b/Makefile +@@ -16,7 +16,7 @@ + PREFIX = /usr/local + + all: +- ${CC} ${CFLAGS} -Wall ${LIBS} -o empty empty.c ++ ${CC} ${CFLAGS} ${LDFLAGS} empty.c ${LIBS} -o empty + + FreeBSD: all + NetBSD: all diff --git a/buildroot/package/empty/Config.in b/buildroot/package/empty/Config.in new file mode 100644 index 0000000..f73bce8 --- /dev/null +++ b/buildroot/package/empty/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_EMPTY + bool "empty" + depends on BR2_USE_MMU # uses fork() + help + Run processes and applications under pseudo-terminal (PTY) + sessions. + + http://empty.sourceforge.net/ diff --git a/buildroot/package/empty/empty.hash b/buildroot/package/empty/empty.hash new file mode 100644 index 0000000..e629396 --- /dev/null +++ b/buildroot/package/empty/empty.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 7e6636e400856984c4405ce7bd0843aaa3329fa3efd20c58df8400a9eaa35f09 empty-0.6.20b.tgz diff --git a/buildroot/package/empty/empty.mk b/buildroot/package/empty/empty.mk new file mode 100644 index 0000000..5e3ed42 --- /dev/null +++ b/buildroot/package/empty/empty.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# empty +# +################################################################################ + +EMPTY_VERSION = 0.6.20b +EMPTY_SOURCE = empty-$(EMPTY_VERSION).tgz +EMPTY_SITE = http://downloads.sourceforge.net/project/empty/empty/empty-$(EMPTY_VERSION) +EMPTY_LICENSE = BSD-3-Clause +EMPTY_LICENSE_FILES = COPYRIGHT + +define EMPTY_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define EMPTY_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/empty $(TARGET_DIR)/usr/bin/empty +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/enchant/Config.in b/buildroot/package/enchant/Config.in new file mode 100644 index 0000000..86b2fad --- /dev/null +++ b/buildroot/package/enchant/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_ENCHANT + bool "enchant" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + Enchant is a spell-checking library that provides a consistent + API across a number of spell-checking system backends. + + http://www.abisource.com/projects/enchant/ + +comment "enchant needs a toolchain w/ C++, threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/enchant/enchant.hash b/buildroot/package/enchant/enchant.hash new file mode 100644 index 0000000..884a8b5 --- /dev/null +++ b/buildroot/package/enchant/enchant.hash @@ -0,0 +1,2 @@ +# From http://www.abisource.com/downloads/enchant/1.6.0/MD5SUM +md5 de11011aff801dc61042828041fb59c7 enchant-1.6.0.tar.gz diff --git a/buildroot/package/enchant/enchant.mk b/buildroot/package/enchant/enchant.mk new file mode 100644 index 0000000..69402c1 --- /dev/null +++ b/buildroot/package/enchant/enchant.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# enchant +# +################################################################################ + +ENCHANT_VERSION = 1.6.0 +ENCHANT_SITE = http://www.abisource.com/downloads/enchant/$(ENCHANT_VERSION) +ENCHANT_INSTALL_STAGING = YES +ENCHANT_DEPENDENCIES = libglib2 host-pkgconf +ENCHANT_LICENSE = LGPL-2.1+ +ENCHANT_LICENSE_FILES = COPYING.LIB + +$(eval $(autotools-package)) diff --git a/buildroot/package/enlightenment/Config.in b/buildroot/package/enlightenment/Config.in new file mode 100644 index 0000000..d1dee25 --- /dev/null +++ b/buildroot/package/enlightenment/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_ENLIGHTENMENT + bool "enlightenment" + # libevas-generic-loaders-svg -> librsvg -> glib2 / pango + depends on BR2_USE_WCHAR + depends on BR2_INSTALL_LIBSTDCPP + # libedbus -> dbus + # libedbus -> glib2, libevas + depends on BR2_TOOLCHAIN_HAS_THREADS + # libedbus -> dbus, efl libraries + depends on BR2_USE_MMU + depends on BR2_PACKAGE_EFL + depends on BR2_PACKAGE_HAS_UDEV # efl (eeze) -> libudev + depends on BR2_PACKAGE_XORG7 + # libevas-generic-loaders-svg -> librsvg -> pango -> harfbuzz + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_EFL_X_XLIB + select BR2_PACKAGE_EFL_EEZE + select BR2_PACKAGE_EFL_JPEG # needed at runtime by enlightenment_start + select BR2_PACKAGE_EFL_PNG # needed at runtime by enlightenment_start + select BR2_PACKAGE_EFL_SVG + select BR2_PACKAGE_XCB_UTIL_KEYSYMS + help + Enlightenment, also known simply as E, is a stacking window + manager for the X Window System which can be used alone or + in conjunction with a desktop environment such as GNOME or + KDE. Enlightenment can be used as a substitute for a full + desktop environment. + + http://www.enlightenment.org/ + +comment "enlightenment needs udev /dev management and a toolchain w/ wchar, C++, threads" + depends on BR2_PACKAGE_EFL && BR2_PACKAGE_XORG7 && BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/buildroot/package/enlightenment/enlightenment.hash b/buildroot/package/enlightenment/enlightenment.hash new file mode 100644 index 0000000..10e8fac --- /dev/null +++ b/buildroot/package/enlightenment/enlightenment.hash @@ -0,0 +1,3 @@ +# From https://www.enlightenment.org/news/e0.22.1_release +sha256 207b6b88dafc4932ab007a835510823c5a1dd8c191876ac037628176ca77a7e0 enlightenment-0.22.1.tar.xz +sha256 34dbd501ec9d1c8dcc569c01db9cf9a4b7ee5981614cc9f8f613a97463d27350 COPYING diff --git a/buildroot/package/enlightenment/enlightenment.mk b/buildroot/package/enlightenment/enlightenment.mk new file mode 100644 index 0000000..0d87119 --- /dev/null +++ b/buildroot/package/enlightenment/enlightenment.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# enlightenment +# +################################################################################ + +ENLIGHTENMENT_VERSION = 0.22.1 +ENLIGHTENMENT_SOURCE = enlightenment-$(ENLIGHTENMENT_VERSION).tar.xz +ENLIGHTENMENT_SITE = http://download.enlightenment.org/rel/apps/enlightenment +ENLIGHTENMENT_LICENSE = BSD-2-Clause +ENLIGHTENMENT_LICENSE_FILES = COPYING + +ENLIGHTENMENT_DEPENDENCIES = \ + host-pkgconf \ + host-efl \ + host-meson \ + efl \ + xcb-util-keysyms + +ENLIGHTENMENT_MESON_OPTS += \ + --prefix=/usr \ + --buildtype=$(if $(BR2_ENABLE_DEBUG),debug,release) \ + --cross-file=$(HOST_DIR)/etc/meson/cross-compilation.conf \ + -Dedje-cc=$(HOST_DIR)/bin/edje_cc \ + -Deet=$(HOST_DIR)/bin/eet \ + -Deldbus-codegen=$(HOST_DIR)/bin/eldbus-codegen \ + -Dpam=false + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +ENLIGHTENMENT_MESON_OPTS += -Dsystemd=true +ENLIGHTENMENT_DEPENDENCIES += systemd +else +ENLIGHTENMENT_MESON_OPTS += -Dsystemd=false +endif + +# alsa backend needs mixer support +ifeq ($(BR2_PACKAGE_ALSA_LIB)$(BR2_PACKAGE_ALSA_LIB_MIXER),yy) +ENLIGHTENMENT_MESON_OPTS += -Dmixer=true +ENLIGHTENMENT_DEPENDENCIES += alsa-lib +else +ENLIGHTENMENT_MESON_OPTS += -Dmixer=false +endif + +define ENLIGHTENMENT_CONFIGURE_CMDS + rm -rf $(@D)/build + mkdir -p $(@D)/build + $(TARGET_MAKE_ENV) meson $(ENLIGHTENMENT_MESON_OPTS) $(@D) $(@D)/build +endef + +define ENLIGHTENMENT_BUILD_CMDS + $(TARGET_MAKE_ENV) ninja -C $(@D)/build +endef + +define ENLIGHTENMENT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) ninja -C $(@D)/build install +endef + +define ENLIGHTENMENT_REMOVE_DOCUMENTATION + rm -rf $(TARGET_DIR)/usr/share/enlightenment/doc/ + rm -f $(TARGET_DIR)/usr/share/enlightenment/COPYING + rm -f $(TARGET_DIR)/usr/share/enlightenment/AUTHORS +endef +ENLIGHTENMENT_POST_INSTALL_TARGET_HOOKS += ENLIGHTENMENT_REMOVE_DOCUMENTATION + +$(eval $(generic-package)) diff --git a/buildroot/package/enscript/Config.in b/buildroot/package/enscript/Config.in new file mode 100644 index 0000000..b95bd92 --- /dev/null +++ b/buildroot/package/enscript/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ENSCRIPT + bool "enscript" + help + GNU Enscript is a free replacement for Adobe's enscript + program. + + GNU Enscript converts ASCII files to PostScript, HTML, or RTF + and stores generated output to a file or sends it directly to + the printer. It includes features for `pretty-printing' + (language-sensitive code highlighting) in several programming + languages. + + http://www.gnu.org/software/enscript diff --git a/buildroot/package/enscript/enscript.hash b/buildroot/package/enscript/enscript.hash new file mode 100644 index 0000000..8b7694d --- /dev/null +++ b/buildroot/package/enscript/enscript.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 6d56bada6934d055b34b6c90399aa85975e66457ac5bf513427ae7fc77f5c0bb enscript-1.6.6.tar.gz diff --git a/buildroot/package/enscript/enscript.mk b/buildroot/package/enscript/enscript.mk new file mode 100644 index 0000000..fbc9e69 --- /dev/null +++ b/buildroot/package/enscript/enscript.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# enscript +# +################################################################################ + +ENSCRIPT_VERSION = 1.6.6 +ENSCRIPT_SITE = $(BR2_GNU_MIRROR)/enscript +ENSCRIPT_LICENSE = GPL-3.0+ +ENSCRIPT_LICENSE_FILES = COPYING + +# Enable pthread threads if toolchain supports threads +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +ENSCRIPT_CONF_OPTS += --enable-threads=pth +else +ENSCRIPT_CONF_OPTS += --disable-threads +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/erlang-goldrush/Config.in b/buildroot/package/erlang-goldrush/Config.in new file mode 100644 index 0000000..2ee579a --- /dev/null +++ b/buildroot/package/erlang-goldrush/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_GOLDRUSH + bool "erlang-goldrush" + help + Goldrush is a small Erlang app that provides fast event + stream processing. + + https://github.com/DeadZen/goldrush diff --git a/buildroot/package/erlang-goldrush/erlang-goldrush.hash b/buildroot/package/erlang-goldrush/erlang-goldrush.hash new file mode 100644 index 0000000..d575aa4 --- /dev/null +++ b/buildroot/package/erlang-goldrush/erlang-goldrush.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6fb8ac6345d940396ecf89d4ce6b9b809039f336d85d7a54239e85106a807612 erlang-goldrush-0.1.9.tar.gz diff --git a/buildroot/package/erlang-goldrush/erlang-goldrush.mk b/buildroot/package/erlang-goldrush/erlang-goldrush.mk new file mode 100644 index 0000000..e95b09c --- /dev/null +++ b/buildroot/package/erlang-goldrush/erlang-goldrush.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-goldrush +# +################################################################################ + +ERLANG_GOLDRUSH_VERSION = 0.1.9 +ERLANG_GOLDRUSH_SITE = $(call github,DeadZen,goldrush,$(ERLANG_GOLDRUSH_VERSION)) +ERLANG_GOLDRUSH_LICENSE = ISC +ERLANG_GOLDRUSH_LICENSE_FILES = LICENSE +ERLANG_GOLDRUSH_INSTALL_STAGING = YES + +$(eval $(rebar-package)) +$(eval $(host-rebar-package)) diff --git a/buildroot/package/erlang-jiffy/Config.in b/buildroot/package/erlang-jiffy/Config.in new file mode 100644 index 0000000..d65f42c --- /dev/null +++ b/buildroot/package/erlang-jiffy/Config.in @@ -0,0 +1,10 @@ +comment "erlang-jiffy needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_ERLANG_JIFFY + bool "erlang-jiffy" + depends on BR2_INSTALL_LIBSTDCPP + help + JSON NIFs for Erlang. + + https://github.com/davisp/jiffy diff --git a/buildroot/package/erlang-jiffy/erlang-jiffy.hash b/buildroot/package/erlang-jiffy/erlang-jiffy.hash new file mode 100644 index 0000000..4a201fe --- /dev/null +++ b/buildroot/package/erlang-jiffy/erlang-jiffy.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 c555726f592b79894c253ca1dc3c3aec6a5697271d29364d57f8175f387b86f3 erlang-jiffy-0.14.11.tar.gz diff --git a/buildroot/package/erlang-jiffy/erlang-jiffy.mk b/buildroot/package/erlang-jiffy/erlang-jiffy.mk new file mode 100644 index 0000000..9a688f7 --- /dev/null +++ b/buildroot/package/erlang-jiffy/erlang-jiffy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-jiffy +# +################################################################################ + +ERLANG_JIFFY_VERSION = 0.14.11 +ERLANG_JIFFY_SITE = $(call github,davisp,jiffy,$(ERLANG_JIFFY_VERSION)) +ERLANG_JIFFY_LICENSE = MIT (core), \ + BSD-3-Clause (Google double conversion library), \ + BSD-3-Clause (tests) +ERLANG_JIFFY_LICENSE_FILES = LICENSE + +$(eval $(rebar-package)) diff --git a/buildroot/package/erlang-lager/Config.in b/buildroot/package/erlang-lager/Config.in new file mode 100644 index 0000000..d088821 --- /dev/null +++ b/buildroot/package/erlang-lager/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_ERLANG_LAGER + bool "erlang-lager" + select BR2_PACKAGE_ERLANG_GOLDRUSH + help + Lager (as in the beer) is a logging framework for + Erlang. Its purpose is to provide a more traditional way to + perform logging in an erlang application that plays nicely + with traditional UNIX logging tools like logrotate and + syslog. + + https://github.com/basho/lager diff --git a/buildroot/package/erlang-lager/erlang-lager.hash b/buildroot/package/erlang-lager/erlang-lager.hash new file mode 100644 index 0000000..144cef6 --- /dev/null +++ b/buildroot/package/erlang-lager/erlang-lager.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c5f532dd236e07dad27976abcf12b9c90fcf33ffd6fe1b1d34639c06171c36ea erlang-lager-3.4.2.tar.gz diff --git a/buildroot/package/erlang-lager/erlang-lager.mk b/buildroot/package/erlang-lager/erlang-lager.mk new file mode 100644 index 0000000..790288a --- /dev/null +++ b/buildroot/package/erlang-lager/erlang-lager.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# erlang-lager +# +################################################################################ + +ERLANG_LAGER_VERSION = 3.4.2 +ERLANG_LAGER_SITE = $(call github,erlang-lager,lager,$(ERLANG_LAGER_VERSION)) +ERLANG_LAGER_LICENSE = Apache-2.0 +ERLANG_LAGER_LICENSE_FILES = LICENSE +ERLANG_LAGER_DEPENDENCIES = erlang-goldrush +HOST_ERLANG_LAGER_DEPENDENCIES = host-erlang-goldrush + +$(eval $(rebar-package)) +$(eval $(host-rebar-package)) diff --git a/buildroot/package/erlang-p1-cache-tab/Config.in b/buildroot/package/erlang-p1-cache-tab/Config.in new file mode 100644 index 0000000..eed2676 --- /dev/null +++ b/buildroot/package/erlang-p1-cache-tab/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_P1_CACHE_TAB + bool "erlang-p1-cache-tab" + select BR2_PACKAGE_ERLANG_P1_UTILS + help + Erlang library implementing cache tables + + https://github.com/processone/cache_tab diff --git a/buildroot/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash b/buildroot/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash new file mode 100644 index 0000000..9425bcd --- /dev/null +++ b/buildroot/package/erlang-p1-cache-tab/erlang-p1-cache-tab.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5ef27d3be0ef2e8dc06468ec39dc3a43506d6f85af0edc21b9c14db860669d38 erlang-p1-cache-tab-1.0.12.tar.gz diff --git a/buildroot/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk b/buildroot/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk new file mode 100644 index 0000000..ae96103 --- /dev/null +++ b/buildroot/package/erlang-p1-cache-tab/erlang-p1-cache-tab.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-cache-tab +# +################################################################################ + +ERLANG_P1_CACHE_TAB_VERSION = 1.0.12 +ERLANG_P1_CACHE_TAB_SITE = $(call github,processone,cache_tab,$(ERLANG_P1_CACHE_TAB_VERSION)) +ERLANG_P1_CACHE_TAB_LICENSE = Apache-2.0 +ERLANG_P1_CACHE_TAB_LICENSE_FILES = LICENSE.txt +ERLANG_P1_CACHE_TAB_DEPENDENCIES = erlang-p1-utils + +$(eval $(rebar-package)) diff --git a/buildroot/package/erlang-p1-iconv/Config.in b/buildroot/package/erlang-p1-iconv/Config.in new file mode 100644 index 0000000..cec17d0 --- /dev/null +++ b/buildroot/package/erlang-p1-iconv/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_P1_ICONV + bool "erlang-p1-iconv" + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Erlang interface to libiconv + + https://github.com/processone/eiconv diff --git a/buildroot/package/erlang-p1-iconv/erlang-p1-iconv.hash b/buildroot/package/erlang-p1-iconv/erlang-p1-iconv.hash new file mode 100644 index 0000000..0f0a231 --- /dev/null +++ b/buildroot/package/erlang-p1-iconv/erlang-p1-iconv.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c7214ea7503c3de1edf3bdd72b37187aa3a9a36d7cf7f5945a067ae8d262d3fb erlang-p1-iconv-1.0.6.tar.gz diff --git a/buildroot/package/erlang-p1-iconv/erlang-p1-iconv.mk b/buildroot/package/erlang-p1-iconv/erlang-p1-iconv.mk new file mode 100644 index 0000000..6b22431 --- /dev/null +++ b/buildroot/package/erlang-p1-iconv/erlang-p1-iconv.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# erlang-p1-iconv +# +################################################################################ + +ERLANG_P1_ICONV_VERSION = 1.0.6 +ERLANG_P1_ICONV_SITE = $(call github,processone,iconv,$(ERLANG_P1_ICONV_VERSION)) +ERLANG_P1_ICONV_LICENSE = Apache-2.0 +ERLANG_P1_ICONV_LICENSE_FILES = LICENSE.txt +ERLANG_P1_ICONV_DEPENDENCIES = erlang-p1-utils + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +ERLANG_P1_ICONV_DEPENDENCIES += libiconv +endif + +ERLANG_P1_ICONV_USE_AUTOCONF = YES + +$(eval $(rebar-package)) diff --git a/buildroot/package/erlang-p1-oauth2/Config.in b/buildroot/package/erlang-p1-oauth2/Config.in new file mode 100644 index 0000000..32e79ec --- /dev/null +++ b/buildroot/package/erlang-p1-oauth2/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_P1_OAUTH2 + bool "erlang-p1-oauth2" + help + OAuth2 library for Erlang + + https://github.com/processone/p1_oauth2 diff --git a/buildroot/package/erlang-p1-oauth2/erlang-p1-oauth2.hash b/buildroot/package/erlang-p1-oauth2/erlang-p1-oauth2.hash new file mode 100644 index 0000000..29fae12 --- /dev/null +++ b/buildroot/package/erlang-p1-oauth2/erlang-p1-oauth2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 aea823ccc49b20f7e27f1893c7edf231339f56b16ba21ce78a60f735b6211718 erlang-p1-oauth2-0.6.2.tar.gz diff --git a/buildroot/package/erlang-p1-oauth2/erlang-p1-oauth2.mk b/buildroot/package/erlang-p1-oauth2/erlang-p1-oauth2.mk new file mode 100644 index 0000000..5c27393 --- /dev/null +++ b/buildroot/package/erlang-p1-oauth2/erlang-p1-oauth2.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-oauth2 +# +################################################################################ + +ERLANG_P1_OAUTH2_VERSION = 0.6.2 +ERLANG_P1_OAUTH2_SITE = $(call github,processone,p1_oauth2,$(ERLANG_P1_OAUTH2_VERSION)) +ERLANG_P1_OAUTH2_LICENSE = MIT +ERLANG_P1_OAUTH2_LICENSE_FILES = LICENSE +ERLANG_P1_OAUTH2_INSTALL_STAGING = YES + +$(eval $(rebar-package)) diff --git a/buildroot/package/erlang-p1-sip/0001-fix-includes.patch b/buildroot/package/erlang-p1-sip/0001-fix-includes.patch new file mode 100644 index 0000000..80e2ab3 --- /dev/null +++ b/buildroot/package/erlang-p1-sip/0001-fix-includes.patch @@ -0,0 +1,19 @@ +Description: correct include + This part of the code was moved into it's own project and was packaged + separately by me. To make the build process work, this small fix is + necessary. +Author: Philipp Huebner + +Index: erlang-p1-sip/src/esip_socket.erl +=================================================================== +--- erlang-p1-sip.orig/src/esip_socket.erl ++++ erlang-p1-sip/src/esip_socket.erl +@@ -22,7 +22,7 @@ + + -include("esip.hrl"). + -include("esip_lib.hrl"). +--include("stun.hrl"). ++-include_lib("p1_stun/include/stun.hrl"). + + -define(TCP_SEND_TIMEOUT, 15000). + -define(CONNECT_TIMEOUT, 20000). diff --git a/buildroot/package/erlang-p1-sip/0002-remove-dependencies-from-rebar-config.patch b/buildroot/package/erlang-p1-sip/0002-remove-dependencies-from-rebar-config.patch new file mode 100644 index 0000000..da86076 --- /dev/null +++ b/buildroot/package/erlang-p1-sip/0002-remove-dependencies-from-rebar-config.patch @@ -0,0 +1,20 @@ +Without this patch, dependencies would be downloaded and compiled +by rebar at build time. + +Signed-off-by: Christophe Romain + +diff --git a/rebar.config b/rebar.config +index ed93134..5b32788 100644 +--- a/rebar.config ++++ b/rebar.config +@@ -31,10 +31,6 @@ + + {port_specs, [{"priv/lib/esip_drv.so", ["c_src/esip_codec.c"]}]}. + +-{deps, [{stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.0.16"}}}, +- {fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.0.17"}}}, +- {p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.10"}}}]}. +- + {clean_files, ["c_src/esip_codec.gcda", "c_src/esip_codec.gcno"]}. + + {cover_enabled, true}. diff --git a/buildroot/package/erlang-p1-sip/Config.in b/buildroot/package/erlang-p1-sip/Config.in new file mode 100644 index 0000000..70cf819 --- /dev/null +++ b/buildroot/package/erlang-p1-sip/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_ERLANG_P1_SIP + bool "erlang-p1-sip" + select BR2_PACKAGE_ERLANG_P1_STUN + select BR2_PACKAGE_ERLANG_P1_TLS + select BR2_PACKAGE_ERLANG_P1_UTILS + help + SIP library for Erlang + + https://github.com/processone/p1_sip diff --git a/buildroot/package/erlang-p1-sip/erlang-p1-sip.hash b/buildroot/package/erlang-p1-sip/erlang-p1-sip.hash new file mode 100644 index 0000000..4d41b98 --- /dev/null +++ b/buildroot/package/erlang-p1-sip/erlang-p1-sip.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6ac36594921561d0d5502bb824b7408223a3f53560a9d2fa4b0f685c0441baf0 erlang-p1-sip-1.0.17.tar.gz diff --git a/buildroot/package/erlang-p1-sip/erlang-p1-sip.mk b/buildroot/package/erlang-p1-sip/erlang-p1-sip.mk new file mode 100644 index 0000000..a9f572d --- /dev/null +++ b/buildroot/package/erlang-p1-sip/erlang-p1-sip.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-p1-sip +# +################################################################################ + +ERLANG_P1_SIP_VERSION = 1.0.17 +ERLANG_P1_SIP_SITE = $(call github,processone,esip,$(ERLANG_P1_SIP_VERSION)) +ERLANG_P1_SIP_LICENSE = Apache-2.0 +ERLANG_P1_SIP_LICENSE_FILES = LICENSE.txt +ERLANG_P1_SIP_DEPENDENCIES = erlang-p1-stun erlang-p1-tls erlang-p1-utils +ERLANG_P1_SIP_INSTALL_STAGING = YES + +$(eval $(rebar-package)) diff --git a/buildroot/package/erlang-p1-stringprep/Config.in b/buildroot/package/erlang-p1-stringprep/Config.in new file mode 100644 index 0000000..4beac04 --- /dev/null +++ b/buildroot/package/erlang-p1-stringprep/Config.in @@ -0,0 +1,11 @@ +comment "erlang-p1-stringprep needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_ERLANG_P1_STRINGPREP + bool "erlang-p1-stringprep" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_ERLANG_P1_UTILS + help + Erlang interface to stringprep + + https://github.com/processone/stringprep diff --git a/buildroot/package/erlang-p1-stringprep/erlang-p1-stringprep.hash b/buildroot/package/erlang-p1-stringprep/erlang-p1-stringprep.hash new file mode 100644 index 0000000..769e218 --- /dev/null +++ b/buildroot/package/erlang-p1-stringprep/erlang-p1-stringprep.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 baef9e6bd59e00c9d2600e8db87078c19d76cbf66d5068efeaf1df740ee306ce erlang-p1-stringprep-1.0.10.tar.gz diff --git a/buildroot/package/erlang-p1-stringprep/erlang-p1-stringprep.mk b/buildroot/package/erlang-p1-stringprep/erlang-p1-stringprep.mk new file mode 100644 index 0000000..f104a2c --- /dev/null +++ b/buildroot/package/erlang-p1-stringprep/erlang-p1-stringprep.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-stringprep +# +################################################################################ + +ERLANG_P1_STRINGPREP_VERSION = 1.0.10 +ERLANG_P1_STRINGPREP_SITE = $(call github,processone,stringprep,$(ERLANG_P1_STRINGPREP_VERSION)) +ERLANG_P1_STRINGPREP_LICENSE = TCL (tools/*.tcl), Apache-2.0 (rest) +ERLANG_P1_STRINGPREP_LICENSE_FILES = LICENSE.ALL LICENSE.TCL LICENSE.txt +ERLANG_P1_STRINGPREP_DEPENDENCIES = erlang-p1-utils + +$(eval $(rebar-package)) diff --git a/buildroot/package/erlang-p1-stun/0001-remove-dependencies-from-rebar-config.patch b/buildroot/package/erlang-p1-stun/0001-remove-dependencies-from-rebar-config.patch new file mode 100644 index 0000000..7e6b4b5 --- /dev/null +++ b/buildroot/package/erlang-p1-stun/0001-remove-dependencies-from-rebar-config.patch @@ -0,0 +1,16 @@ +Without this patch, dependencies would be downloaded and compiled +by rebar at build time. + +diff --git a/rebar.config b/rebar.config +index f02ea40..d0af863 100644 +--- a/rebar.config ++++ b/rebar.config +@@ -22,9 +22,6 @@ + + {erl_opts, [debug_info, {i, "include"}]}. + +-{deps, [{fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.0.17"}}}, +- {p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.10"}}}]}. +- + {cover_enabled, true}. + {cover_export_enabled, true}. diff --git a/buildroot/package/erlang-p1-stun/Config.in b/buildroot/package/erlang-p1-stun/Config.in new file mode 100644 index 0000000..70cdd91 --- /dev/null +++ b/buildroot/package/erlang-p1-stun/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_P1_STUN + bool "erlang-p1-stun" + select BR2_PACKAGE_ERLANG_P1_TLS + select BR2_PACKAGE_ERLANG_P1_UTILS + help + STUN library for Erlang + + https://github.com/processone/stun diff --git a/buildroot/package/erlang-p1-stun/erlang-p1-stun.hash b/buildroot/package/erlang-p1-stun/erlang-p1-stun.hash new file mode 100644 index 0000000..ee32834 --- /dev/null +++ b/buildroot/package/erlang-p1-stun/erlang-p1-stun.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8efe2f47c2460b1e0d68a680dcfcd938a2bc98c85abb5b100c15246fe6a25506 erlang-p1-stun-1.0.16.tar.gz diff --git a/buildroot/package/erlang-p1-stun/erlang-p1-stun.mk b/buildroot/package/erlang-p1-stun/erlang-p1-stun.mk new file mode 100644 index 0000000..42bbc75 --- /dev/null +++ b/buildroot/package/erlang-p1-stun/erlang-p1-stun.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-p1-stun +# +################################################################################ + +ERLANG_P1_STUN_VERSION = 1.0.16 +ERLANG_P1_STUN_SITE = $(call github,processone,stun,$(ERLANG_P1_STUN_VERSION)) +ERLANG_P1_STUN_LICENSE = Apache-2.0 +ERLANG_P1_STUN_LICENSE_FILES = LICENSE.txt +ERLANG_P1_STUN_DEPENDENCIES = erlang-p1-tls erlang-p1-utils +ERLANG_P1_STUN_INSTALL_STAGING = YES + +$(eval $(rebar-package)) diff --git a/buildroot/package/erlang-p1-tls/Config.in b/buildroot/package/erlang-p1-tls/Config.in new file mode 100644 index 0000000..a684fbb --- /dev/null +++ b/buildroot/package/erlang-p1-tls/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_P1_TLS + bool "erlang-p1-tls" + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_OPENSSL + help + Erlang interface to OpenSSL + + https://github.com/processone/tls diff --git a/buildroot/package/erlang-p1-tls/erlang-p1-tls.hash b/buildroot/package/erlang-p1-tls/erlang-p1-tls.hash new file mode 100644 index 0000000..b5b800b --- /dev/null +++ b/buildroot/package/erlang-p1-tls/erlang-p1-tls.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ca9670b7f78a025b101e3fee6255d7472d6b52abc46444cc45616c3d1bd75b9b erlang-p1-tls-1.0.17.tar.gz diff --git a/buildroot/package/erlang-p1-tls/erlang-p1-tls.mk b/buildroot/package/erlang-p1-tls/erlang-p1-tls.mk new file mode 100644 index 0000000..ad7317d --- /dev/null +++ b/buildroot/package/erlang-p1-tls/erlang-p1-tls.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-p1-tls +# +################################################################################ + +ERLANG_P1_TLS_VERSION = 1.0.17 +ERLANG_P1_TLS_SITE = $(call github,processone,fast_tls,$(ERLANG_P1_TLS_VERSION)) +ERLANG_P1_TLS_LICENSE = Apache-2.0 +ERLANG_P1_TLS_LICENSE_FILES = LICENSE.txt +ERLANG_P1_TLS_INSTALL_STAGING = YES +ERLANG_P1_TLS_DEPENDENCIES = openssl erlang-p1-utils + +$(eval $(rebar-package)) diff --git a/buildroot/package/erlang-p1-utils/Config.in b/buildroot/package/erlang-p1-utils/Config.in new file mode 100644 index 0000000..a82e5f7 --- /dev/null +++ b/buildroot/package/erlang-p1-utils/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_ERLANG_P1_UTILS + bool "erlang-p1-utils" + help + Set of small Erlang libraries + + https://github.com/processone/p1_utils diff --git a/buildroot/package/erlang-p1-utils/erlang-p1-utils.hash b/buildroot/package/erlang-p1-utils/erlang-p1-utils.hash new file mode 100644 index 0000000..950a554 --- /dev/null +++ b/buildroot/package/erlang-p1-utils/erlang-p1-utils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 57bfc575179733a723717f4fecb65b9f7fd056595f798b52e7bc0206e8a9333f erlang-p1-utils-1.0.10.tar.gz diff --git a/buildroot/package/erlang-p1-utils/erlang-p1-utils.mk b/buildroot/package/erlang-p1-utils/erlang-p1-utils.mk new file mode 100644 index 0000000..6a49207 --- /dev/null +++ b/buildroot/package/erlang-p1-utils/erlang-p1-utils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# erlang-p1-utils +# +################################################################################ + +ERLANG_P1_UTILS_VERSION = 1.0.10 +ERLANG_P1_UTILS_SITE = $(call github,processone,p1_utils,$(ERLANG_P1_UTILS_VERSION)) +ERLANG_P1_UTILS_LICENSE = Apache-2.0 +ERLANG_P1_UTILS_LICENSE_FILES = LICENSE.txt +ERLANG_P1_UTILS_INSTALL_STAGING = YES + +$(eval $(rebar-package)) +$(eval $(host-rebar-package)) diff --git a/buildroot/package/erlang-p1-xml/0001-remove-dependencies-from-rebar-config.patch b/buildroot/package/erlang-p1-xml/0001-remove-dependencies-from-rebar-config.patch new file mode 100644 index 0000000..b58db3f --- /dev/null +++ b/buildroot/package/erlang-p1-xml/0001-remove-dependencies-from-rebar-config.patch @@ -0,0 +1,18 @@ +Without this patch, dependencies would be downloaded and compiled +by rebar at build time. + +Signed-off-by: Christophe Romain + +diff --git a/rebar.config b/rebar.config +index 99f5047..ac2f3b2 100644 +--- a/rebar.config ++++ b/rebar.config +@@ -32,8 +32,6 @@ + {port_specs, [{"priv/lib/fxml.so", ["c_src/fxml.c"]}, + {"priv/lib/fxml_stream.so", ["c_src/fxml_stream.c"]}]}. + +-{deps, [{p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.10"}}}]}. +- + {clean_files, ["c_src/fxml.gcda", "c_src/fxml.gcno", "c_src/fxml_stream.gcda", "c_src/fxml_stream.gcno"]}. + + {cover_enabled, true}. diff --git a/buildroot/package/erlang-p1-xml/Config.in b/buildroot/package/erlang-p1-xml/Config.in new file mode 100644 index 0000000..504501d --- /dev/null +++ b/buildroot/package/erlang-p1-xml/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_P1_XML + bool "erlang-p1-xml" + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_EXPAT + help + XML utilities for Erlang + + https://github.com/processone/xml diff --git a/buildroot/package/erlang-p1-xml/erlang-p1-xml.hash b/buildroot/package/erlang-p1-xml/erlang-p1-xml.hash new file mode 100644 index 0000000..ae3f324 --- /dev/null +++ b/buildroot/package/erlang-p1-xml/erlang-p1-xml.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 aeda4051c08b78e2f036d82705433a667d03736f07ff0054862e82105435e285 erlang-p1-xml-1.1.25.tar.gz diff --git a/buildroot/package/erlang-p1-xml/erlang-p1-xml.mk b/buildroot/package/erlang-p1-xml/erlang-p1-xml.mk new file mode 100644 index 0000000..ff99998 --- /dev/null +++ b/buildroot/package/erlang-p1-xml/erlang-p1-xml.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# erlang-p1-xml +# +################################################################################ + +ERLANG_P1_XML_VERSION = 1.1.25 +ERLANG_P1_XML_SITE = $(call github,processone,fast_xml,$(ERLANG_P1_XML_VERSION)) +ERLANG_P1_XML_LICENSE = Apache-2.0 +ERLANG_P1_XML_LICENSE_FILES = LICENSE.txt +ERLANG_P1_XML_DEPENDENCIES = expat erlang-p1-utils +HOST_ERLANG_P1_XML_DEPENDENCIES = host-expat host-erlang-p1-utils +ERLANG_P1_XML_INSTALL_STAGING = YES + +ERLANG_P1_XML_USE_AUTOCONF = YES + +$(eval $(rebar-package)) +$(eval $(host-rebar-package)) diff --git a/buildroot/package/erlang-p1-xmpp/0001-fix-includes.patch b/buildroot/package/erlang-p1-xmpp/0001-fix-includes.patch new file mode 100644 index 0000000..d0a267b --- /dev/null +++ b/buildroot/package/erlang-p1-xmpp/0001-fix-includes.patch @@ -0,0 +1,16 @@ +Without this patch, rebar fails to find include file fxml.hrl. + +Signed-off-by: Christophe Romain + +diff --git a/include/xmpp.hrl b/include/xmpp.hrl +index afa5f61..678858e 100644 +--- a/include/xmpp.hrl ++++ b/include/xmpp.hrl +@@ -26,7 +26,7 @@ + -include("ns.hrl"). + -include("jid.hrl"). + -include("xmpp_codec.hrl"). +--include("fxml.hrl"). ++-include_lib("p1_xml/include/fxml.hrl"). + + -type stanza() :: iq() | presence() | message(). diff --git a/buildroot/package/erlang-p1-xmpp/0002-remove-dependencies-from-rebar-config.patch b/buildroot/package/erlang-p1-xmpp/0002-remove-dependencies-from-rebar-config.patch new file mode 100644 index 0000000..fed44f6 --- /dev/null +++ b/buildroot/package/erlang-p1-xmpp/0002-remove-dependencies-from-rebar-config.patch @@ -0,0 +1,19 @@ +Without this patch, dependencies would be downloaded and compiled +by rebar at build time. + +Signed-off-by: Christophe Romain + +diff --git a/rebar.config b/rebar.config +--- a/rebar.config 2017-11-30 14:24:52.348695123 +0100 ++++ b/rebar.config 2017-11-30 14:35:11.816407195 +0100 +@@ -29,10 +29,6 @@ + + {port_specs, [{"priv/lib/jid.so", ["c_src/jid.c"]}]}. + +-{deps, [{fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.25"}}}, +- {stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.10"}}}, +- {p1_utils, ".*", {git, "https://github.com/processone/p1_utils", {tag, "1.0.10"}}}]}. +- + {clean_files, ["c_src/jid.gcda", "c_src/jid.gcno"]}. + + {cover_enabled, true}. diff --git a/buildroot/package/erlang-p1-xmpp/Config.in b/buildroot/package/erlang-p1-xmpp/Config.in new file mode 100644 index 0000000..9b33e0c --- /dev/null +++ b/buildroot/package/erlang-p1-xmpp/Config.in @@ -0,0 +1,13 @@ +comment "erlang-p1-xmpp needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_ERLANG_P1_XMPP + bool "erlang-p1-xmpp" + depends on BR2_INSTALL_LIBSTDCPP # erlang-p1-stringprep + select BR2_PACKAGE_ERLANG_P1_XML + select BR2_PACKAGE_ERLANG_P1_STRINGPREP + select BR2_PACKAGE_ERLANG_P1_UTILS + help + XMPP library for Erlang. + + https://github.com/processone/xmpp diff --git a/buildroot/package/erlang-p1-xmpp/erlang-p1-xmpp.hash b/buildroot/package/erlang-p1-xmpp/erlang-p1-xmpp.hash new file mode 100644 index 0000000..d3d2daf --- /dev/null +++ b/buildroot/package/erlang-p1-xmpp/erlang-p1-xmpp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 558e8d8734052bdbe679cf10165a63944c208940ab84be78c97ba661dfcf3cb2 erlang-p1-xmpp-1.1.16.tar.gz diff --git a/buildroot/package/erlang-p1-xmpp/erlang-p1-xmpp.mk b/buildroot/package/erlang-p1-xmpp/erlang-p1-xmpp.mk new file mode 100644 index 0000000..096876c --- /dev/null +++ b/buildroot/package/erlang-p1-xmpp/erlang-p1-xmpp.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# erlang-p1-xmpp +# +################################################################################ + +ERLANG_P1_XMPP_VERSION = 1.1.16 +ERLANG_P1_XMPP_SITE = $(call github,processone,xmpp,$(ERLANG_P1_XMPP_VERSION)) +ERLANG_P1_XMPP_LICENSE = Apache-2.0 +ERLANG_P1_XMPP_LICENSE_FILES = LICENSE.txt +ERLANG_P1_XMPP_INSTALL_STAGING = YES +ERLANG_P1_XMPP_DEPENDENCIES = erlang-p1-xml erlang-p1-stringprep \ + erlang-p1-utils host-erlang-p1-xml + +$(eval $(rebar-package)) +$(eval $(host-rebar-package)) diff --git a/buildroot/package/erlang-p1-yaml/0001-remove-dependencies-from-rebar-config.patch b/buildroot/package/erlang-p1-yaml/0001-remove-dependencies-from-rebar-config.patch new file mode 100644 index 0000000..4dfdb92 --- /dev/null +++ b/buildroot/package/erlang-p1-yaml/0001-remove-dependencies-from-rebar-config.patch @@ -0,0 +1,18 @@ +Without this patch, dependencies would be downloaded and compiled +by rebar at build time. + +Signed-off-by: Christophe Romain + +diff --git a/rebar.config b/rebar.config +index e09d08d..651a829 100644 +--- a/rebar.config ++++ b/rebar.config +@@ -24,8 +24,6 @@ + {port_env, [{"CFLAGS", "$CFLAGS"}, {"LDFLAGS", "$LDFLAGS -lyaml"}]}. + {port_specs, [{"priv/lib/fast_yaml.so", ["c_src/fast_yaml.c"]}]}. + +-{deps, [{p1_utils, ".*", {git, "git://github.com/processone/p1_utils", {tag, "1.0.10"}}}]}. +- + {clean_files, ["c_src/fast_yaml.gcda", "c_src/fast_yaml.gcno"]}. + + {cover_enabled, true}. diff --git a/buildroot/package/erlang-p1-yaml/Config.in b/buildroot/package/erlang-p1-yaml/Config.in new file mode 100644 index 0000000..2ab78d1 --- /dev/null +++ b/buildroot/package/erlang-p1-yaml/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ERLANG_P1_YAML + bool "erlang-p1-yaml" + select BR2_PACKAGE_ERLANG_P1_UTILS + select BR2_PACKAGE_LIBYAML + help + Erlang wrapper for libyaml C library + + https://github.com/processone/p1_yaml diff --git a/buildroot/package/erlang-p1-yaml/erlang-p1-yaml.hash b/buildroot/package/erlang-p1-yaml/erlang-p1-yaml.hash new file mode 100644 index 0000000..24282e6 --- /dev/null +++ b/buildroot/package/erlang-p1-yaml/erlang-p1-yaml.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5a6499a47cdd1f753a527cb8b79074312354063535adc0ca0fd7f72c2a015e3a erlang-p1-yaml-1.0.12.tar.gz diff --git a/buildroot/package/erlang-p1-yaml/erlang-p1-yaml.mk b/buildroot/package/erlang-p1-yaml/erlang-p1-yaml.mk new file mode 100644 index 0000000..de138a9 --- /dev/null +++ b/buildroot/package/erlang-p1-yaml/erlang-p1-yaml.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-yaml +# +################################################################################ + +ERLANG_P1_YAML_VERSION = 1.0.12 +ERLANG_P1_YAML_SITE = $(call github,processone,fast_yaml,$(ERLANG_P1_YAML_VERSION)) +ERLANG_P1_YAML_LICENSE = Apache-2.0 +ERLANG_P1_YAML_LICENSE_FILES = LICENSE.txt +ERLANG_P1_YAML_DEPENDENCIES = libyaml erlang-p1-utils + +$(eval $(rebar-package)) diff --git a/buildroot/package/erlang-p1-zlib/Config.in b/buildroot/package/erlang-p1-zlib/Config.in new file mode 100644 index 0000000..b7e48a1 --- /dev/null +++ b/buildroot/package/erlang-p1-zlib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_ERLANG_P1_ZLIB + bool "erlang-p1-zlib" + select BR2_PACKAGE_ZLIB + help + Erlang interface to zlib + + https://github.com/processone/zlib diff --git a/buildroot/package/erlang-p1-zlib/erlang-p1-zlib.hash b/buildroot/package/erlang-p1-zlib/erlang-p1-zlib.hash new file mode 100644 index 0000000..dc14dd0 --- /dev/null +++ b/buildroot/package/erlang-p1-zlib/erlang-p1-zlib.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8396f9cb17fdb195d9a2537ad76327bf930d66118b87b7108f27e5ed28b7cde6 erlang-p1-zlib-1.0.3.tar.gz diff --git a/buildroot/package/erlang-p1-zlib/erlang-p1-zlib.mk b/buildroot/package/erlang-p1-zlib/erlang-p1-zlib.mk new file mode 100644 index 0000000..bc53efc --- /dev/null +++ b/buildroot/package/erlang-p1-zlib/erlang-p1-zlib.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# erlang-p1-zlib +# +################################################################################ + +ERLANG_P1_ZLIB_VERSION = 1.0.3 +ERLANG_P1_ZLIB_SITE = $(call github,processone,ezlib,$(ERLANG_P1_ZLIB_VERSION)) +ERLANG_P1_ZLIB_LICENSE = Apache-2.0 +ERLANG_P1_ZLIB_LICENSE_FILES = LICENSE.txt +ERLANG_P1_ZLIB_DEPENDENCIES = zlib + +$(eval $(rebar-package)) diff --git a/buildroot/package/erlang-rebar/erlang-rebar.hash b/buildroot/package/erlang-rebar/erlang-rebar.hash new file mode 100644 index 0000000..27cc91a --- /dev/null +++ b/buildroot/package/erlang-rebar/erlang-rebar.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 577246bafa2eb2b2c3f1d0c157408650446884555bf87901508ce71d5cc0bd07 erlang-rebar-2.6.4.tar.gz diff --git a/buildroot/package/erlang-rebar/erlang-rebar.mk b/buildroot/package/erlang-rebar/erlang-rebar.mk new file mode 100644 index 0000000..ce082dc --- /dev/null +++ b/buildroot/package/erlang-rebar/erlang-rebar.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# erlang-rebar +# +################################################################################ + +ERLANG_REBAR_VERSION = 2.6.4 + +# Upstream publishes a release, but we can not use it as it is a release of +# a generated rebar script, when we want the sources. So we have to use the +# gihub helper in this case. +ERLANG_REBAR_SITE = $(call github,rebar,rebar,$(ERLANG_REBAR_VERSION)) + +# Although the file LICENSE state Apache-2.0, a lot (if not all) the files +# in src/ bear the MIT licence. +ERLANG_REBAR_LICENSE = Apache-2.0, MIT +ERLANG_REBAR_LICENSE_FILES = LICENSE + +# We do not have a target variant, so just define the dependencies, +# configure and build commands for the host variant. +HOST_ERLANG_REBAR_DEPENDENCIES = host-erlang + +define HOST_ERLANG_REBAR_BUILD_CMDS + cd $(@D) && $(HOST_MAKE_ENV) $(MAKE) +endef + +define HOST_ERLANG_REBAR_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/rebar $(HOST_DIR)/bin/rebar +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/erlang/0001-build-fix.patch b/buildroot/package/erlang/0001-build-fix.patch new file mode 100644 index 0000000..ff821c9 --- /dev/null +++ b/buildroot/package/erlang/0001-build-fix.patch @@ -0,0 +1,13 @@ +apply-patches.sh deletes this file from the source directory. + +--- erlang-R15B01.old/lib/tools/emacs/Makefile 2012-04-04 ++++ erlang-R15B01/lib/tools/emacs/Makefile 2012-04-04 15:55:16.978957307 +0100 +@@ -51,7 +51,7 @@ + + ELC_FILES = $(EMACS_FILES:%=%.elc) + +-TEST_FILES = test.erl.indented test.erl.orig ++TEST_FILES = test.erl.indented + + # ---------------------------------------------------- + # Targets diff --git a/buildroot/package/erlang/0002-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch b/buildroot/package/erlang/0002-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch new file mode 100644 index 0000000..8e40143 --- /dev/null +++ b/buildroot/package/erlang/0002-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch @@ -0,0 +1,70 @@ +From 439fa2eae78a8900bda120072335be19d626498c Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 28 Dec 2014 23:39:40 +0100 +Subject: [PATCH] erts/ethread: instruct libatomic_ops we do require CAS + +We do require compare-and-swap (CAS), so we must instruct libatomic_ops +to provide it, even if the architecture does not have instructions for +it. + +For example, on ARM, LDREX is required for fast CAS. But LDREX is only +available on ARMv6, so by default libatomic_ops will not have CAS for +anything below, like ARMv5. But ARMv5 is always UP, so using an +emulated CAS (that is signal-asyn-safe) is still possible (albeit much +slower). + +Tell libatomic_ops to provide CAS, even if the hardware is not capable +of it, by using emulated CAS, as per libatomic_ops dosc: + https://github.com/ivmai/libatomic_ops/blob/master/doc/README.txt#L28 + + If this is included after defining AO_REQUIRE_CAS, then the package + will make an attempt to emulate compare-and-swap in a way that (at + least on Linux) should still be async-signal-safe. + +Thanks go to Thomas for all this insight! :-) +Thanks go to Frank for reporting the issue! :-) + +Signed-off-by: "Yann E. MORIN" +Cc: Thomas Petazzoni +Cc: Frank Hunleth +--- + erts/include/internal/libatomic_ops/ethread.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/erts/include/internal/libatomic_ops/ethread.h b/erts/include/internal/libatomic_ops/ethread.h +index d65ee19..71d3598 100644 +--- a/erts/include/internal/libatomic_ops/ethread.h ++++ b/erts/include/internal/libatomic_ops/ethread.h +@@ -35,6 +35,7 @@ + + #define ETHR_NATIVE_IMPL__ "libatomic_ops" + ++#define AO_REQUIRE_CAS + #include "atomic_ops.h" + #include "ethr_membar.h" + #include "ethr_atomic.h" +diff --git a/erts/aclocal.m4 b/erts/aclocal.m4 +index d65ee19..71d3598 100644 +--- a/erts/aclocal.m4 ++++ b/erts/aclocal.m4 +@@ -1414,7 +1414,8 @@ + fi;; + esac + ethr_have_libatomic_ops=no +- AC_TRY_LINK([#include "atomic_ops.h"], ++ AC_TRY_LINK([#define AO_REQUIRE_CAS ++ #include "atomic_ops.h"], + [ + volatile AO_t x; + AO_t y; +@@ -1455,6 +1455,7 @@ + AC_CHECK_SIZEOF(AO_t, , + [ + #include ++ #define AO_REQUIRE_CAS + #include "atomic_ops.h" + ]) + AC_DEFINE_UNQUOTED(ETHR_SIZEOF_AO_T, $ac_cv_sizeof_AO_t, [Define to the size of AO_t if libatomic_ops is used]) +-- +1.9.1 + diff --git a/buildroot/package/erlang/0003-erts-emulator-reorder-inclued-headers-paths.patch b/buildroot/package/erlang/0003-erts-emulator-reorder-inclued-headers-paths.patch new file mode 100644 index 0000000..c17eefc --- /dev/null +++ b/buildroot/package/erlang/0003-erts-emulator-reorder-inclued-headers-paths.patch @@ -0,0 +1,43 @@ +From 85a3e5b4f65e5284e59dcdd90e92ea7d50ef6907 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 8 Feb 2015 17:23:13 +0100 +Subject: [PATCH] erts/emulator: reorder inclued headers paths + +If the Perl Compatible Regular Expressions is installed on the +host and the path to the headers is added to the CFLAGS, the +pcre.h from the host is used instead of the one provided by +erlang. + +Erlang use an old version of this file which is incompatible +with the upstream one. + +Move INCLUDES before CFLAGS to use pcre.h from erlang. + +http://autobuild.buildroot.net/results/cbd/cbd8b54eef535f19d7d400fd269af1b3571d6143/build-end.log + +Signed-off-by: Romain Naour +--- + erts/emulator/Makefile.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in +index 7145824..d079487 100644 +--- a/erts/emulator/Makefile.in ++++ b/erts/emulator/Makefile.in +@@ -678,11 +678,11 @@ else + # Usually the same as the default rule, but certain platforms (e.g. win32) mix + # different compilers + $(OBJDIR)/beam_emu.o: beam/beam_emu.c +- $(V_EMU_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@ ++ $(V_EMU_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@ + endif + + $(OBJDIR)/%.o: beam/%.c +- $(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@ ++ $(V_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@ + + $(OBJDIR)/%.o: $(TARGET)/%.c + $(V_CC) $(CFLAGS) $(INCLUDES) -Idrivers/common -c $< -o $@ +-- +1.9.3 + diff --git a/buildroot/package/erlang/0004-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch b/buildroot/package/erlang/0004-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch new file mode 100644 index 0000000..ad0bb6b --- /dev/null +++ b/buildroot/package/erlang/0004-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch @@ -0,0 +1,42 @@ +From 011752ec7b31e3dde376270fc65c7ee70644f6e7 Mon Sep 17 00:00:00 2001 +From: Johan Oudinet +Date: Wed, 6 Dec 2017 15:01:17 +0100 +Subject: [PATCH] Link with LDLIBS instead of LIBS for DED + +Fix ERL-529 by avoiding to link with libz for no reason. + +Signed-off-by: Johan Oudinet +--- + lib/asn1/c_src/Makefile | 2 +- + lib/runtime_tools/c_src/Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/asn1/c_src/Makefile b/lib/asn1/c_src/Makefile +index 1f714df357..f7c6b8b9bc 100644 +--- a/lib/asn1/c_src/Makefile ++++ b/lib/asn1/c_src/Makefile +@@ -126,7 +126,7 @@ $(NIF_LIB_FILE): $(NIF_STATIC_OBJ_FILES) + $(V_RANLIB) $@ + + $(NIF_SHARED_OBJ_FILE): $(NIF_OBJ_FILES) +- $(V_LD) $(LDFLAGS) -o $(NIF_SHARED_OBJ_FILE) $(NIF_OBJ_FILES) $(CLIB_FLAGS) $(LIBS) ++ $(V_LD) $(LDFLAGS) -o $(NIF_SHARED_OBJ_FILE) $(NIF_OBJ_FILES) $(CLIB_FLAGS) $(LDLIBS) + + # ---------------------------------------------------- + # Release Target +diff --git a/lib/runtime_tools/c_src/Makefile.in b/lib/runtime_tools/c_src/Makefile.in +index 4530a83aee..4e13e0d789 100644 +--- a/lib/runtime_tools/c_src/Makefile.in ++++ b/lib/runtime_tools/c_src/Makefile.in +@@ -95,7 +95,7 @@ $(OBJDIR)/%$(TYPEMARKER).o: %.c dyntrace_lttng.h + $(V_CC) -c -o $@ $(ALL_CFLAGS) $< + + $(LIBDIR)/%$(TYPEMARKER).@DED_EXT@: $(OBJDIR)/%$(TYPEMARKER).o +- $(V_LD) $(LDFLAGS) -o $@ $^ $(LIBS) ++ $(V_LD) $(LDFLAGS) -o $@ $^ $(LDLIBS) + + clean: + rm -f $(TRACE_LIBS) +-- +2.14.1 + diff --git a/buildroot/package/erlang/Config.in b/buildroot/package/erlang/Config.in new file mode 100644 index 0000000..bf74555 --- /dev/null +++ b/buildroot/package/erlang/Config.in @@ -0,0 +1,45 @@ +config BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "x86_64" + default y if BR2_HOSTARCH = "x86" + +config BR2_PACKAGE_ERLANG_ARCH_SUPPORTS + bool + # see HOWTO/INSTALL.md for Erlang's supported platforms + # when using its native atomic ops implementation + default y if BR2_i386 || BR2_x86_64 || BR2_powerpc || \ + BR2_sparc_v9 || BR2_arm || BR2_aarch64 || BR2_mipsel + # erlang needs host-erlang + depends on BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS + +comment "erlang needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_ERLANG + bool "erlang" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS + help + Erlang is a programming language used to build massively + scalable soft real-time systems with requirements on high + availability. Some of its uses are in telecoms, banking, + e-commerce, computer telephony and instant messaging. + Erlang's runtime system has built-in support for + concurrency, distribution and fault tolerance. + + http://www.erlang.org + +if BR2_PACKAGE_ERLANG + +config BR2_PACKAGE_ERLANG_MEGACO + bool "install megaco application" + help + The Megaco application is a framework for building + applications on top of the Megaco/H.248 protocol. It is + approximately 14MB in size so if you do not need it then + it is recommended not to enable it. + +endif # BR2_PACKAGE_ERLANG diff --git a/buildroot/package/erlang/erlang.hash b/buildroot/package/erlang/erlang.hash new file mode 100644 index 0000000..cf820ce --- /dev/null +++ b/buildroot/package/erlang/erlang.hash @@ -0,0 +1,3 @@ +# md5 from http://www.erlang.org/download/MD5, sha256 locally computed +md5 2faed2c3519353e6bc2501ed4d8e6ae7 otp_src_20.0.tar.gz +sha256 fe80e1e14a2772901be717694bb30ac4e9a07eee0cc7a28988724cbd21476811 otp_src_20.0.tar.gz diff --git a/buildroot/package/erlang/erlang.mk b/buildroot/package/erlang/erlang.mk new file mode 100644 index 0000000..5705b98 --- /dev/null +++ b/buildroot/package/erlang/erlang.mk @@ -0,0 +1,102 @@ +################################################################################ +# +# erlang +# +################################################################################ + +# See note below when updating Erlang +ERLANG_VERSION = 20.0 +ERLANG_SITE = http://www.erlang.org/download +ERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz +ERLANG_DEPENDENCIES = host-erlang + +ERLANG_LICENSE = Apache-2.0 +ERLANG_LICENSE_FILES = LICENSE.txt +ERLANG_INSTALL_STAGING = YES + +# Patched erts/aclocal.m4 +ERLANG_AUTORECONF = YES + +# Whenever updating Erlang, this value should be updated as well, to the +# value of EI_VSN in the file lib/erl_interface/vsn.mk +ERLANG_EI_VSN = 3.10 + +# The configure checks for these functions fail incorrectly +ERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes + +# Set erl_xcomp variables. See xcomp/erl-xcomp.conf.template +# for documentation. +ERLANG_CONF_ENV += erl_xcomp_sysroot=$(STAGING_DIR) + +ERLANG_CONF_OPTS = --without-javac + +# Force ERL_TOP to the downloaded source directory. This prevents +# Erlang's configure script from inadvertantly using files from +# a version of Erlang installed on the host. +ERLANG_CONF_ENV += ERL_TOP=$(@D) +HOST_ERLANG_CONF_ENV += ERL_TOP=$(@D) + +# erlang uses openssl for all things crypto. Since the host tools (such as +# rebar) uses crypto, we need to build host-erlang with support for openssl. +HOST_ERLANG_DEPENDENCIES = host-openssl +HOST_ERLANG_CONF_OPTS = --without-javac --with-ssl=$(HOST_DIR) + +HOST_ERLANG_CONF_OPTS += --without-termcap + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +ERLANG_CONF_OPTS += --disable-threads +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +ERLANG_CONF_OPTS += --with-termcap +ERLANG_DEPENDENCIES += ncurses +else +ERLANG_CONF_OPTS += --without-termcap +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ERLANG_CONF_OPTS += --with-ssl +ERLANG_DEPENDENCIES += openssl +else +ERLANG_CONF_OPTS += --without-ssl +endif + +# ODBC support in erlang requires threads +ifeq ($(BR2_PACKAGE_UNIXODBC)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +ERLANG_DEPENDENCIES += unixodbc +ERLANG_CONF_OPTS += --with-odbc +else +ERLANG_CONF_OPTS += --without-odbc +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ERLANG_CONF_OPTS += --enable-shared-zlib +ERLANG_DEPENDENCIES += zlib +endif + +# Remove source, example, gs and wx files from staging and target. +ERLANG_REMOVE_PACKAGES = gs wx + +ifneq ($(BR2_PACKAGE_ERLANG_MEGACO),y) +ERLANG_REMOVE_PACKAGES += megaco +endif + +define ERLANG_REMOVE_STAGING_UNUSED + for package in $(ERLANG_REMOVE_PACKAGES); do \ + rm -rf $(STAGING_DIR)/usr/lib/erlang/lib/$${package}-*; \ + done +endef + +define ERLANG_REMOVE_TARGET_UNUSED + find $(TARGET_DIR)/usr/lib/erlang -type d -name src -prune -exec rm -rf {} \; + find $(TARGET_DIR)/usr/lib/erlang -type d -name examples -prune -exec rm -rf {} \; + for package in $(ERLANG_REMOVE_PACKAGES); do \ + rm -rf $(TARGET_DIR)/usr/lib/erlang/lib/$${package}-*; \ + done +endef + +ERLANG_POST_INSTALL_STAGING_HOOKS += ERLANG_REMOVE_STAGING_UNUSED +ERLANG_POST_INSTALL_TARGET_HOOKS += ERLANG_REMOVE_TARGET_UNUSED + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/espeak/0001-Fix-build-of-shared-library-on-architectures-needing.patch b/buildroot/package/espeak/0001-Fix-build-of-shared-library-on-architectures-needing.patch new file mode 100644 index 0000000..2590e15 --- /dev/null +++ b/buildroot/package/espeak/0001-Fix-build-of-shared-library-on-architectures-needing.patch @@ -0,0 +1,31 @@ +From 08a464e2b6bd31bb2bf4e258ebfa9b9d65805abf Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 27 Nov 2015 15:17:02 +0100 +Subject: [PATCH] Fix build of shared library on architectures needing -fPIC + +Certain architectures, like Sparc and Sparc64 require objects to be +built with -fPIC (and not just -fpic) to be usable in shared +libraries. On other architectures, -fPIC is the same as -fpic so this +patch doesn't affect such architectures. + +Signed-off-by: Thomas Petazzoni +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 95fe549..c293611 100755 +--- a/src/Makefile ++++ b/src/Makefile +@@ -110,7 +110,7 @@ $(BIN2_NAME): $(OBJS3) $(LIB_NAME) + + + x_%.o: %.cpp +- $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -fpic -fvisibility=hidden -pedantic \ ++ $(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -fPIC -fvisibility=hidden -pedantic \ + -I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o + + $(LIB_NAME): $(OBJS2) +-- +2.6.3 + diff --git a/buildroot/package/espeak/0002-tr_languages-cast-string_ordinal-init-values.patch b/buildroot/package/espeak/0002-tr_languages-cast-string_ordinal-init-values.patch new file mode 100644 index 0000000..d37e64c --- /dev/null +++ b/buildroot/package/espeak/0002-tr_languages-cast-string_ordinal-init-values.patch @@ -0,0 +1,33 @@ +From 451330d09a6a3500b40bc4f5896ba790ab46cd6c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 15 Jan 2017 19:37:31 +0100 +Subject: [PATCH 2/2] tr_languages: cast string_ordinal init values + +On some architecture, "char" is signed (x86_64, nios2...) so the +compiler try to convert int 0xc2 and 0xba to a signed char. +This is an error since gcc6 (Wnarrowing). + +Fixes: +http://autobuild.buildroot.net/results/bae/baef9888b1979d18171668a675985e3f3b45fda6 + +Signed-off-by: Romain Naour +--- + src/tr_languages.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp +index 5c80286..dbc6e36 100644 +--- a/src/tr_languages.cpp ++++ b/src/tr_languages.cpp +@@ -200,7 +200,7 @@ static const unsigned short chars_ignore_zwnj_hyphen[] = { + 0x200d, 1, // zero width joiner + 0, 0 }; + +-const char string_ordinal[] = {0xc2,0xba,0}; // masculine ordinal character, UTF-8 ++const char string_ordinal[] = {(char)0xc2,(char)0xba,0}; // masculine ordinal character, UTF-8 + + + static Translator* NewTranslator(void) +-- +2.9.3 + diff --git a/buildroot/package/espeak/Config.in b/buildroot/package/espeak/Config.in new file mode 100644 index 0000000..5e46b17 --- /dev/null +++ b/buildroot/package/espeak/Config.in @@ -0,0 +1,42 @@ +comment "espeak needs a toolchain w/ C++, wchar, threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || BR2_STATIC_LIBS + depends on BR2_USE_MMU + +config BR2_PACKAGE_ESPEAK + bool "espeak" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + # does not properly support building only a static version + depends on !BR2_STATIC_LIBS + help + espeak is a speech synthesizer software for English and + other languages. + + http://espeak.sourceforge.net/ + +if BR2_PACKAGE_ESPEAK + +choice + prompt "choose audio backend" + default BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_NONE + +config BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_NONE + bool "No sound backend, only produce wav files" + +config BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_ALSA + bool "alsa via portaudio" + # Selecting portaudio generates spurious "unmet dependencies" + # warnings. Unless you are changing the dependencies of espeak + # or portaudio, just ignore those spurious warnings. + select BR2_PACKAGE_PORTAUDIO + select BR2_PACKAGE_PORTAUDIO_CXX + +config BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_PULSEAUDIO + bool "pulseaudio" + select BR2_PACKAGE_PULSEAUDIO + +endchoice + +endif # BR2_PACKAGE_ESPEAK diff --git a/buildroot/package/espeak/espeak.hash b/buildroot/package/espeak/espeak.hash new file mode 100644 index 0000000..8f4a1ab --- /dev/null +++ b/buildroot/package/espeak/espeak.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 bf9a17673adffcc28ff7ea18764f06136547e97bbd9edf2ec612f09b207f0659 espeak-1.48.04-source.zip diff --git a/buildroot/package/espeak/espeak.mk b/buildroot/package/espeak/espeak.mk new file mode 100644 index 0000000..226f17f --- /dev/null +++ b/buildroot/package/espeak/espeak.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# espeak +# +################################################################################ + +ESPEAK_VERSION_MAJOR = 1.48 +ESPEAK_VERSION = $(ESPEAK_VERSION_MAJOR).04 +ESPEAK_SOURCE = espeak-$(ESPEAK_VERSION)-source.zip +ESPEAK_SITE = http://downloads.sourceforge.net/project/espeak/espeak/espeak-$(ESPEAK_VERSION_MAJOR) +ESPEAK_LICENSE = GPL-3.0+ +ESPEAK_LICENSE_FILES = License.txt + +ifeq ($(BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_ALSA),y) +ESPEAK_AUDIO_BACKEND = portaudio +ESPEAK_DEPENDENCIES = portaudio +endif +ifeq ($(BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_PULSEAUDIO),y) +ESPEAK_AUDIO_BACKEND = pulseaudio +ESPEAK_DEPENDENCIES = pulseaudio +endif + +define ESPEAK_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/$(ESPEAK_SOURCE) + mv $(@D)/espeak-$(ESPEAK_VERSION)-source/* $(@D) + $(RM) -r $(@D)/espeak-$(ESPEAK_VERSION)-source +endef + +define ESPEAK_CONFIGURE_CMDS + # Buildroot provides portaudio V19, see ReadMe file for more details. + cp $(@D)/src/portaudio19.h $(@D)/src/portaudio.h +endef + +define ESPEAK_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src $(TARGET_CONFIGURE_OPTS) \ + AUDIO="$(ESPEAK_AUDIO_BACKEND)" all +endef + +define ESPEAK_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ethtool/Config.in b/buildroot/package/ethtool/Config.in new file mode 100644 index 0000000..48173bf --- /dev/null +++ b/buildroot/package/ethtool/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_ETHTOOL + bool "ethtool" + help + ethtool is a small utility for examining and tuning your + ethernet-based network interface. + + https://www.kernel.org/pub/software/network/ethtool/ + +config BR2_PACKAGE_ETHTOOL_PRETTY_PRINT + bool "enable pretty printing" + default y + depends on BR2_PACKAGE_ETHTOOL + help + Enables ethtool's pretty printing for drivers + and SFP modules. diff --git a/buildroot/package/ethtool/ethtool.hash b/buildroot/package/ethtool/ethtool.hash new file mode 100644 index 0000000..39e10ff --- /dev/null +++ b/buildroot/package/ethtool/ethtool.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/software/network/ethtool/sha256sums.asc +sha256 b7c1a380007d30eaf261a63b3cfc000f9d93f9eb7626dcd48b5d2a733af99cba ethtool-4.13.tar.xz +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/ethtool/ethtool.mk b/buildroot/package/ethtool/ethtool.mk new file mode 100644 index 0000000..d8ebba5 --- /dev/null +++ b/buildroot/package/ethtool/ethtool.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# ethtool +# +################################################################################ + +ETHTOOL_VERSION = 4.13 +ETHTOOL_SOURCE = ethtool-$(ETHTOOL_VERSION).tar.xz +ETHTOOL_SITE = $(BR2_KERNEL_MIRROR)/software/network/ethtool +ETHTOOL_LICENSE = GPL-2.0 +ETHTOOL_LICENSE_FILES = COPYING +ETHTOOL_CONF_OPTS = \ + $(if $(BR2_PACKAGE_ETHTOOL_PRETTY_PRINT),--enable-pretty-dump,--disable-pretty-dump) + +$(eval $(autotools-package)) diff --git a/buildroot/package/eudev/0001-Only-use-pragma-for-ignoring-diagnostics-if-.patch b/buildroot/package/eudev/0001-Only-use-pragma-for-ignoring-diagnostics-if-.patch new file mode 100644 index 0000000..3046ba5 --- /dev/null +++ b/buildroot/package/eudev/0001-Only-use-pragma-for-ignoring-diagnostics-if-.patch @@ -0,0 +1,39 @@ +From dc8aa43b7b6d0cead7d8a0c1a151d289a5233a10 Mon Sep 17 00:00:00 2001 +From: Eric Le Bihan +Date: Wed, 2 Apr 2014 12:36:52 +0200 +Subject: [PATCH] libudev: Only use #pragma for ignoring diagnostics if GCC + version supports it. + +[Peter: update for 2.1.1, fix shared_assert issue] +Signed-off-by: Eric Le Bihan +--- + src/shared/macro.h | 8 +++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/shared/macro.h b/src/shared/macro.h +--- a/src/shared/macro.h ++++ b/src/shared/macro.h +@@ -38,6 +38,7 @@ + #define _cleanup_(x) __attribute__((cleanup(x))) + + /* Temporarily disable some warnings */ ++#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) + #define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT \ + _Pragma("GCC diagnostic push"); \ + _Pragma("GCC diagnostic ignored \"-Wdeclaration-after-statement\"") +@@ -48,6 +49,13 @@ + + #define REENABLE_WARNING \ + _Pragma("GCC diagnostic pop") ++#else ++#define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT ++#define DISABLE_WARNING_FORMAT_NONLITERAL ++#define REENABLE_WARNING ++/* glibc unconditionally defines this, but it needs GCC 4.6+ */ ++#undef static_assert ++#endif + + #define XCONCATENATE(x, y) x ## y + #define CONCATENATE(x, y) XCONCATENATE(x, y) +-- +1.7.9.5 diff --git a/buildroot/package/eudev/Config.in b/buildroot/package/eudev/Config.in new file mode 100644 index 0000000..2220265 --- /dev/null +++ b/buildroot/package/eudev/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_EUDEV + bool "eudev" + depends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV + depends on BR2_USE_MMU # uses fork() + depends on BR2_USE_WCHAR # needs C99 compiler + depends on !BR2_STATIC_LIBS # kmod + select BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_KMOD + help + eudev is a fork of systemd-udev with the goal of obtaining + better compatibility with existing software such as OpenRC and + Upstart, older kernels, various toolchains and anything else + required by users and various distributions. + + https://wiki.gentoo.org/wiki/Project:Eudev + +if BR2_PACKAGE_EUDEV + +config BR2_PACKAGE_PROVIDES_UDEV + default "eudev" + +config BR2_PACKAGE_EUDEV_RULES_GEN + bool "enable rules generator" + help + Enable persistent rules generator + +config BR2_PACKAGE_EUDEV_ENABLE_HWDB + bool "enable hwdb installation" + default y + help + Enables hardware database installation to /etc/udev/hwdb.d + +endif + +comment "eudev needs eudev /dev management" + depends on BR2_USE_MMU + depends on !BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV + +comment "eudev needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/buildroot/package/eudev/S10udev b/buildroot/package/eudev/S10udev new file mode 100755 index 0000000..47c715c --- /dev/null +++ b/buildroot/package/eudev/S10udev @@ -0,0 +1,50 @@ +#!/bin/sh +# +# udev This is a minimal non-LSB version of a UDEV startup script. It +# was derived by stripping down the udev-058 LSB version for use +# with buildroot on embedded hardware using Linux 2.6.34+ kernels. +# +# You may need to customize this for your system's resource limits +# (including startup time!) and administration. For example, if +# your early userspace has a custom initramfs or initrd you might +# need /dev much earlier; or without hotpluggable busses (like USB, +# PCMCIA, MMC/SD, and so on) your /dev might be static after boot. +# +# This script assumes your system boots right into the eventual root +# filesystem, and that init runs this udev script before any programs +# needing more device nodes than the bare-bones set -- /dev/console, +# /dev/zero, /dev/null -- that's needed to boot and run this script. +# + +# Check for missing binaries +UDEV_BIN=/sbin/udevd +test -x $UDEV_BIN || exit 5 + +# Check for config file and read it +UDEV_CONFIG=/etc/udev/udev.conf +test -r $UDEV_CONFIG || exit 6 +. $UDEV_CONFIG + +case "$1" in + start) + printf "Populating %s using udev: " "${udev_root:-/dev}" + [ -e /proc/sys/kernel/hotplug ] && printf '\000\000\000\000' > /proc/sys/kernel/hotplug + $UDEV_BIN -d || { echo "FAIL"; exit 1; } + udevadm trigger --type=subsystems --action=add + udevadm trigger --type=devices --action=add + udevadm settle --timeout=30 || echo "udevadm settle failed" + echo "done" + ;; + stop) + # Stop execution of events + udevadm control --stop-exec-queue + killall udevd + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; +esac + + +exit 0 diff --git a/buildroot/package/eudev/eudev.hash b/buildroot/package/eudev/eudev.hash new file mode 100644 index 0000000..3fa4798 --- /dev/null +++ b/buildroot/package/eudev/eudev.hash @@ -0,0 +1,5 @@ +# From http://dev.gentoo.org/~blueness/eudev/ +md5 6ca08c0e14380f87df8e8aceac123671 eudev-3.2.5.tar.gz +# Locally calculated +sha256 49c2d04105cad2526302627e040fa24b1916a9a3e059539bc8bb919b973890af eudev-3.2.5.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/eudev/eudev.mk b/buildroot/package/eudev/eudev.mk new file mode 100644 index 0000000..d08b9bb --- /dev/null +++ b/buildroot/package/eudev/eudev.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# eudev +# +################################################################################ + +EUDEV_VERSION = 3.2.5 +EUDEV_SITE = http://dev.gentoo.org/~blueness/eudev +EUDEV_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +EUDEV_LICENSE_FILES = COPYING +EUDEV_INSTALL_STAGING = YES + +# mq_getattr is in librt +EUDEV_CONF_ENV += LIBS=-lrt + +EUDEV_CONF_OPTS = \ + --disable-manpages \ + --sbindir=/sbin \ + --libexecdir=/lib \ + --disable-introspection \ + --enable-kmod \ + --enable-blkid + +EUDEV_DEPENDENCIES = host-gperf host-pkgconf util-linux kmod +EUDEV_PROVIDES = udev + +ifeq ($(BR2_ROOTFS_MERGED_USR),) +EUDEV_CONF_OPTS += --with-rootlibdir=/lib --enable-split-usr +endif + +ifeq ($(BR2_PACKAGE_EUDEV_RULES_GEN),y) +EUDEV_CONF_OPTS += --enable-rule-generator +else +EUDEV_CONF_OPTS += --disable-rule-generator +endif + +ifeq ($(BR2_PACKAGE_EUDEV_ENABLE_HWDB),y) +EUDEV_CONF_OPTS += --enable-hwdb +else +EUDEV_CONF_OPTS += --disable-hwdb +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +EUDEV_CONF_OPTS += --enable-selinux +EUDEV_DEPENDENCIES += libselinux +else +EUDEV_CONF_OPTS += --disable-selinux +endif + +define EUDEV_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/eudev/S10udev $(TARGET_DIR)/etc/init.d/S10udev +endef + +# Required by default rules for input devices +define EUDEV_USERS + - - input -1 * - - - Input device group +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/ev3dev-linux-drivers/Config.in b/buildroot/package/ev3dev-linux-drivers/Config.in new file mode 100644 index 0000000..9be2f28 --- /dev/null +++ b/buildroot/package/ev3dev-linux-drivers/Config.in @@ -0,0 +1,12 @@ +# Prompt-less option, because this package is not doing anything except +# downloading the ev3dev driver sources. The real work is done by a Linux +# extension. +config BR2_PACKAGE_EV3DEV_LINUX_DRIVERS + bool + depends on BR2_LINUX_KERNEL + help + Linux drivers for LEGO MINDSTORMS EV3 + + This is only the download helper for the kernel patch. + + https://github.com/ev3dev/lego-linux-drivers diff --git a/buildroot/package/ev3dev-linux-drivers/ev3dev-linux-drivers.mk b/buildroot/package/ev3dev-linux-drivers/ev3dev-linux-drivers.mk new file mode 100644 index 0000000..92e8927 --- /dev/null +++ b/buildroot/package/ev3dev-linux-drivers/ev3dev-linux-drivers.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# ev3dev Linux drivers +# +################################################################################ + +EV3DEV_LINUX_DRIVERS_VERSION = 0e551eb25ae8600c1f178814781bfb42dc835496 +EV3DEV_LINUX_DRIVERS_SITE = $(call github,ev3dev,lego-linux-drivers,$(EV3DEV_LINUX_DRIVERS_VERSION)) +EV3DEV_LINUX_DRIVERS_LICENSE = GPL-2.0 + +$(eval $(generic-package)) diff --git a/buildroot/package/ev3dev-linux-drivers/lego-linux-drivers.hash b/buildroot/package/ev3dev-linux-drivers/lego-linux-drivers.hash new file mode 100644 index 0000000..cc48f65 --- /dev/null +++ b/buildroot/package/ev3dev-linux-drivers/lego-linux-drivers.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 9d2740b348c8d43e7e15fedc4cec99bf351a3a2ba8691f2a07c439a9c034bc04 lego-linux-drivers-0e551eb25ae8600c1f178814781bfb42dc835496.tar.gz diff --git a/buildroot/package/evemu/0001-Include-limits.h-for-PATH_MAX.patch b/buildroot/package/evemu/0001-Include-limits.h-for-PATH_MAX.patch new file mode 100644 index 0000000..04a0cc6 --- /dev/null +++ b/buildroot/package/evemu/0001-Include-limits.h-for-PATH_MAX.patch @@ -0,0 +1,35 @@ +From e80a13776e6d6df29fd704cd63e0744200c3df1b Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sun, 1 Oct 2017 19:54:53 +0200 +Subject: [PATCH] Include limits.h for PATH_MAX. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes the following compile failure when building with musl: + + find_event_devices.c: In function ‘find_event_devices’: + find_event_devices.c:60:14: error: ‘PATH_MAX’ undeclared (first use in this function) + char fname[PATH_MAX]; + ^~~~~~~~ + +Signed-off-by: Peter Seiderer +--- + tools/find_event_devices.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tools/find_event_devices.c b/tools/find_event_devices.c +index 2a43d54..3a74096 100644 +--- a/tools/find_event_devices.c ++++ b/tools/find_event_devices.c +@@ -24,6 +24,7 @@ + + #define _GNU_SOURCE + #include ++#include + #include + #include + #include +-- +2.14.2 + diff --git a/buildroot/package/evemu/Config.in b/buildroot/package/evemu/Config.in new file mode 100644 index 0000000..07b7174 --- /dev/null +++ b/buildroot/package/evemu/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_EVEMU + bool "evemu" + select BR2_PACKAGE_LIBEVDEV + help + evemu records and replays device descriptions and events + + http://www.freedesktop.org/wiki/Evemu/ diff --git a/buildroot/package/evemu/evemu.hash b/buildroot/package/evemu/evemu.hash new file mode 100644 index 0000000..7d45eb3 --- /dev/null +++ b/buildroot/package/evemu/evemu.hash @@ -0,0 +1,2 @@ +# From https://lists.freedesktop.org/archives/input-tools/2017-September/001416.html +sha256 78c9400d55eeeb5ab75161360543f9376438c4da4934cb34cdda5b46021ae379 evemu-2.7.0.tar.xz diff --git a/buildroot/package/evemu/evemu.mk b/buildroot/package/evemu/evemu.mk new file mode 100644 index 0000000..02e5abd --- /dev/null +++ b/buildroot/package/evemu/evemu.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# evemu +# +################################################################################ + +EVEMU_VERSION = 2.7.0 +EVEMU_SITE = http://www.freedesktop.org/software/evemu +EVEMU_SOURCE = evemu-$(EVEMU_VERSION).tar.xz +EVEMU_LICENSE = LGPL-3.0 (library), GPL-3.0 (tools) +EVEMU_LICENSE_FILES = COPYING + +# asciidoc used to generate manpages, which we don't need, and if it's +# present on the build host, it ends getting called with our host-python +# which doesn't have all the needed modules enabled, breaking the build +EVEMU_CONF_ENV = ac_cv_path_ASCIIDOC="" + +# disable tests generation because of C++ dependency +EVEMU_CONF_OPTS += --disable-tests + +# Uses PKG_CHECK_MODULES() in configure.ac +EVEMU_DEPENDENCIES = host-pkgconf libevdev + +# Check for target python +ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y) +EVEMU_CONF_OPTS += --enable-python-bindings +EVEMU_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON3),python3,python) +else +EVEMU_CONF_OPTS += --disable-python-bindings +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/eventlog/Config.in b/buildroot/package/eventlog/Config.in new file mode 100644 index 0000000..f9442f6 --- /dev/null +++ b/buildroot/package/eventlog/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_EVENTLOG + bool "eventlog" + help + eventlog is a library for creating structured events from + applications, and is the workhorse behind syslog-ng's own + messages. + + https://my.balabit.com/downloads/eventlog/ diff --git a/buildroot/package/eventlog/eventlog.hash b/buildroot/package/eventlog/eventlog.hash new file mode 100644 index 0000000..b8f2ec6 --- /dev/null +++ b/buildroot/package/eventlog/eventlog.hash @@ -0,0 +1,2 @@ +# From https://my.balabit.com/downloads/eventlog/0.2/eventlog_0.2.12.dsc +sha256 494dac8e01dc5ce323df2ad554d94874938dab51aa025987677b2bc6906a9c66 eventlog_0.2.12.tar.gz diff --git a/buildroot/package/eventlog/eventlog.mk b/buildroot/package/eventlog/eventlog.mk new file mode 100644 index 0000000..7253657 --- /dev/null +++ b/buildroot/package/eventlog/eventlog.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# eventlog +# +################################################################################ + +EVENTLOG_VERSION_MAJOR = 0.2 +EVENTLOG_VERSION = $(EVENTLOG_VERSION_MAJOR).12 +EVENTLOG_SOURCE = eventlog_$(EVENTLOG_VERSION).tar.gz +EVENTLOG_SITE = https://my.balabit.com/downloads/eventlog/$(EVENTLOG_VERSION_MAJOR) +EVENTLOG_LICENSE = BSD-3-Clause +EVENTLOG_LICENSE_FILES = COPYING +EVENTLOG_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/evtest/Config.in b/buildroot/package/evtest/Config.in new file mode 100644 index 0000000..1087217 --- /dev/null +++ b/buildroot/package/evtest/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_EVTEST + bool "evtest" + help + evtest displays information on the input device specified on + the command line, including all the events supported by the + device. It then monitors the device and displays all the + events layer events generated. + + http://cgit.freedesktop.org/evtest diff --git a/buildroot/package/evtest/evtest.hash b/buildroot/package/evtest/evtest.hash new file mode 100644 index 0000000..e131318 --- /dev/null +++ b/buildroot/package/evtest/evtest.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 9fb68236a6871c163e52433ba8f2cce142c0f4208163a2962768c13f262d549f evtest-1.33.tar.gz diff --git a/buildroot/package/evtest/evtest.mk b/buildroot/package/evtest/evtest.mk new file mode 100644 index 0000000..d00d4cb --- /dev/null +++ b/buildroot/package/evtest/evtest.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# evtest +# +################################################################################ + +EVTEST_VERSION = 1.33 +EVTEST_SITE = http://cgit.freedesktop.org/evtest/snapshot +EVTEST_LICENSE = GPL-2.0+ +EVTEST_LICENSE_FILES = COPYING +EVTEST_DEPENDENCIES = host-pkgconf +# needed because source package contains no generated files +EVTEST_AUTORECONF = YES + +# asciidoc used to generate manpages, which we don't need, and if it's +# present on the build host, it ends getting called with our host-python +# which doesn't have all the needed modules enabled, breaking the build +EVTEST_CONF_ENV = ac_cv_path_ASCIIDOC="" + +$(eval $(autotools-package)) diff --git a/buildroot/package/execline/Config.in b/buildroot/package/execline/Config.in new file mode 100644 index 0000000..7a2278f --- /dev/null +++ b/buildroot/package/execline/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_EXECLINE + bool "execline" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + help + execline is a (non-interactive) scripting language, like sh; + but its syntax is quite different from a traditional shell + syntax. The execlineb program is meant to be used as an + interpreter for a text file; the other commands are + essentially useful inside an execlineb script. + + http://skarnet.org/software/execline/ diff --git a/buildroot/package/execline/execline.hash b/buildroot/package/execline/execline.hash new file mode 100644 index 0000000..afead5c --- /dev/null +++ b/buildroot/package/execline/execline.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 e4bb8fc8f20cca96f4bac9f0f74ebce5081b4b687bb11c79c843faf12507a64b execline-2.3.0.4.tar.gz +sha256 6ee77e7199d69b707ab864ea7a838f9562717aaa41c89413bdb2cf835f95052f COPYING diff --git a/buildroot/package/execline/execline.mk b/buildroot/package/execline/execline.mk new file mode 100644 index 0000000..68131b8 --- /dev/null +++ b/buildroot/package/execline/execline.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# execline +# +################################################################################ + +EXECLINE_VERSION = 2.3.0.4 +EXECLINE_SITE = http://skarnet.org/software/execline +EXECLINE_LICENSE = ISC +EXECLINE_LICENSE_FILES = COPYING +EXECLINE_INSTALL_STAGING = YES +EXECLINE_DEPENDENCIES = skalibs + +EXECLINE_CONF_OPTS = \ + --prefix=/usr \ + --with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/usr/include \ + --with-dynlib=$(STAGING_DIR)/usr/lib \ + --with-lib=$(STAGING_DIR)/usr/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define EXECLINE_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(EXECLINE_CONF_OPTS)) +endef + +define EXECLINE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define EXECLINE_REMOVE_STATIC_LIB_DIR + rm -rf $(TARGET_DIR)/usr/lib/execline +endef + +EXECLINE_POST_INSTALL_TARGET_HOOKS += EXECLINE_REMOVE_STATIC_LIB_DIR + +define EXECLINE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define EXECLINE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +HOST_EXECLINE_DEPENDENCIES = host-skalibs + +# Set --shebangdir to /usr/bin, as this value is used by the host variant of +# s6-rc when generating execline scripts for the target. +HOST_EXECLINE_CONF_OPTS = \ + --prefix=$(HOST_DIR) \ + --shebangdir=/usr/bin \ + --with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \ + --with-include=$(HOST_DIR)/include \ + --with-dynlib=$(HOST_DIR)/lib \ + --disable-static \ + --enable-shared \ + --disable-allstatic + +define HOST_EXECLINE_CONFIGURE_CMDS + (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_EXECLINE_CONF_OPTS)) +endef + +define HOST_EXECLINE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_EXECLINE_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/exfat-utils/Config.in b/buildroot/package/exfat-utils/Config.in new file mode 100644 index 0000000..9dfbbfc --- /dev/null +++ b/buildroot/package/exfat-utils/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_EXFAT_UTILS + bool "exfat-utils" + depends on BR2_USE_WCHAR + help + exFAT filesystem utilities. + + https://github.com/relan/exfat + +comment "exfat-utils needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/exfat-utils/exfat-utils.hash b/buildroot/package/exfat-utils/exfat-utils.hash new file mode 100644 index 0000000..f0d6b64 --- /dev/null +++ b/buildroot/package/exfat-utils/exfat-utils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b96b6692cf92a629c9eca0fe8c782646e20479524c7d2a99b7e9b43c3cf8ac43 exfat-utils-1.2.6.tar.gz diff --git a/buildroot/package/exfat-utils/exfat-utils.mk b/buildroot/package/exfat-utils/exfat-utils.mk new file mode 100644 index 0000000..c1b5a93 --- /dev/null +++ b/buildroot/package/exfat-utils/exfat-utils.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# exfat-utils +# +################################################################################ + +EXFAT_UTILS_VERSION = 1.2.6 +EXFAT_UTILS_SITE = https://github.com/relan/exfat/releases/download/v$(EXFAT_UTILS_VERSION) +EXFAT_UTILS_LICENSE = GPL-3.0+ +EXFAT_UTILS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/exfat/Config.in b/buildroot/package/exfat/Config.in new file mode 100644 index 0000000..c0b4eab --- /dev/null +++ b/buildroot/package/exfat/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_EXFAT + bool "exFAT (FUSE)" + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + depends on BR2_USE_MMU # libfuse + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS # libfuse + select BR2_PACKAGE_LIBFUSE + help + A full-featured exFAT file system implementation for GNU/Linux + and other Unix-like systems as a FUSE module. + + https://github.com/relan/exfat + +comment "exfat needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/buildroot/package/exfat/exfat.hash b/buildroot/package/exfat/exfat.hash new file mode 100644 index 0000000..15b67f0 --- /dev/null +++ b/buildroot/package/exfat/exfat.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e1105256d75860c0678f98bbae0b8fe465d4c96ed187b7035556097f152478e7 fuse-exfat-1.2.6.tar.gz diff --git a/buildroot/package/exfat/exfat.mk b/buildroot/package/exfat/exfat.mk new file mode 100644 index 0000000..f5ed13e --- /dev/null +++ b/buildroot/package/exfat/exfat.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# exfat +# +################################################################################ + +EXFAT_VERSION = 1.2.6 +EXFAT_SITE = https://github.com/relan/exfat/releases/download/v$(EXFAT_VERSION) +EXFAT_SOURCE = fuse-exfat-$(EXFAT_VERSION).tar.gz +EXFAT_DEPENDENCIES = libfuse host-pkgconf +EXFAT_LICENSE = GPL-3.0+ +EXFAT_LICENSE_FILES = COPYING +EXFAT_CFLAGS = $(TARGET_CFLAGS) -std=c99 + +$(eval $(autotools-package)) diff --git a/buildroot/package/exim/0001-Build-buildconfig-for-the-host.patch b/buildroot/package/exim/0001-Build-buildconfig-for-the-host.patch new file mode 100644 index 0000000..87eb527 --- /dev/null +++ b/buildroot/package/exim/0001-Build-buildconfig-for-the-host.patch @@ -0,0 +1,23 @@ +buildconfig is meant to be executed on the host, so it has to be compiled +using $(HOSTCC), not $(CC). + +Signed-off-by: Luca Ceresoli +--- + OS/Makefile-Base | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/OS/Makefile-Base b/OS/Makefile-Base +index 29a6ad3..420ba60 100644 +--- a/OS/Makefile-Base ++++ b/OS/Makefile-Base +@@ -114,8 +114,8 @@ allexim: config.h $(EXIM_MONITOR) exicyclog exinext exiwhat \ + + # Targets for special-purpose configuration header builders + buildconfig: buildconfig.c +- @echo "$(CC) buildconfig.c" +- $(FE)$(CC) $(CFLAGS) $(INCLUDE) -o buildconfig buildconfig.c $(LIBS) ++ @echo "$(HOSTCC) buildconfig.c" ++ $(FE)$(HOSTCC) $(HOSTCFLAGS) $(INCLUDE) -o buildconfig buildconfig.c + + + # Target for the exicyclog utility script diff --git a/buildroot/package/exim/0002-Don-t-make-backup-copies-of-installed-files.patch b/buildroot/package/exim/0002-Don-t-make-backup-copies-of-installed-files.patch new file mode 100644 index 0000000..0cdaa74 --- /dev/null +++ b/buildroot/package/exim/0002-Don-t-make-backup-copies-of-installed-files.patch @@ -0,0 +1,40 @@ +If exim had already been installed, the install script makes backup +copies of the pre-existing executables with a ".0" suffix. + +This leads to useless duplicated files on the target, so disable this +piece of code. + +Signed-off-by: Luca Ceresoli +--- + scripts/exim_install | 18 +++++++++--------- + 1 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/scripts/exim_install b/scripts/exim_install +index 616ab3c..e68e7d5 100755 +--- a/scripts/exim_install ++++ b/scripts/exim_install +@@ -344,15 +344,15 @@ while [ $# -gt 0 ]; do + + else + if ../scripts/newer ${name} ${BIN_DIRECTORY}/${name}; then +- if [ -f ${BIN_DIRECTORY}/${name} ]; then +- echo ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O +- ${real} ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O +- if [ $? -ne 0 ]; then +- echo $com "" +- echo $com "*** Exim installation ${ver}failed ***" +- exit 1 +- fi +- fi ++# if [ -f ${BIN_DIRECTORY}/${name} ]; then ++# echo ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O ++# ${real} ${CP} ${BIN_DIRECTORY}/${name} ${BIN_DIRECTORY}/${name}.O ++# if [ $? -ne 0 ]; then ++# echo $com "" ++# echo $com "*** Exim installation ${ver}failed ***" ++# exit 1 ++# fi ++# fi + echo ${CP} ${name} ${BIN_DIRECTORY} + ${real} ${CP} ${name} ${BIN_DIRECTORY} + if [ $? -ne 0 ]; then diff --git a/buildroot/package/exim/0003-Skip-version-check-and-symlink-installation.patch b/buildroot/package/exim/0003-Skip-version-check-and-symlink-installation.patch new file mode 100644 index 0000000..a342d6e --- /dev/null +++ b/buildroot/package/exim/0003-Skip-version-check-and-symlink-installation.patch @@ -0,0 +1,41 @@ +The exim install script installs a binary named exim-, plus a symlink +to it named exim. +In order to achieve this "feature" (of dubious usefulness) it runs the +executable (on the host) and then filters its output to grab the version number. +This clearly cannot work if the executable is cross-compiled, so get rid of all +of it and just install an executable file called exim. + +Inspired by: +http://patch-tracker.debian.org/patch/series/view/exim4/4.76-2/35_install.dpatch + +Signed-off-by: Luca Ceresoli +(rebased against exim 4.89) +Signed-off-by: Bernd Kuhls +--- + scripts/exim_install | 7 +++++-- + 1 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/scripts/exim_install b/scripts/exim_install +index e68e7d5..487a4e1 100755 +--- a/scripts/exim_install ++++ b/scripts/exim_install +@@ -58,6 +58,8 @@ + shift + done + ++do_symlink=no ++ + # Get the values of BIN_DIRECTORY, CONFIGURE_FILE, INFO_DIRECTORY, NO_SYMLINK, + # SYSTEM_ALIASES_FILE, and EXE from the global Makefile (in the build + # directory). EXE is empty except in the Cygwin environment. In each case, keep +@@ -217,9 +219,7 @@ + # The exim binary is handled specially + + if [ $name = exim${EXE} ]; then +- exim="./exim -bV -C /dev/null" +- version=exim-`$exim 2>/dev/null | \ +- awk '/Exim version/ { OFS=""; print $3,"-",substr($4,2,length($4)-1) }'`${EXE} ++ version=exim + + if [ "${version}" = "exim-${EXE}" ]; then + echo $com "" diff --git a/buildroot/package/exim/0004-glibc.patch b/buildroot/package/exim/0004-glibc.patch new file mode 100644 index 0000000..7ae2ef8 --- /dev/null +++ b/buildroot/package/exim/0004-glibc.patch @@ -0,0 +1,27 @@ +uClibc does not contain gnu/libc-version.h + +Patch sent upstream: https://bugs.exim.org/show_bug.cgi?id=2070 + +Signed-off-by: Bernd Kuhls + +diff -uNr exim-4.88.org/src/exim.c exim-4.88/src/exim.c +--- exim-4.88.org/src/exim.c 2016-12-18 15:02:28.000000000 +0100 ++++ exim-4.88/src/exim.c 2016-12-26 12:12:57.000000000 +0100 +@@ -12,7 +12,7 @@ + + #include "exim.h" + +-#ifdef __GLIBC__ ++#if defined(__GLIBC__) && !defined(__UCLIBC__) + # include + #endif + +@@ -1044,7 +1044,7 @@ + fprintf(f, "Compiler: \n"); + #endif + +-#ifdef __GLIBC__ ++#if defined(__GLIBC__) && !defined(__UCLIBC__) + fprintf(f, "Library version: Glibc: Compile: %d.%d\n", + __GLIBC__, __GLIBC_MINOR__); + if (__GLIBC_PREREQ(2, 1)) diff --git a/buildroot/package/exim/0005-Fix-base64d-buffer-size-CVE-2018-6789.patch b/buildroot/package/exim/0005-Fix-base64d-buffer-size-CVE-2018-6789.patch new file mode 100644 index 0000000..1811a7f --- /dev/null +++ b/buildroot/package/exim/0005-Fix-base64d-buffer-size-CVE-2018-6789.patch @@ -0,0 +1,37 @@ +From 062990cc1b2f9e5d82a413b53c8f0569075de700 Mon Sep 17 00:00:00 2001 +From: "Heiko Schlittermann (HS12-RIPE)" +Date: Mon, 5 Feb 2018 22:23:32 +0100 +Subject: [PATCH] Fix base64d() buffer size (CVE-2018-6789) + +Credits for discovering this bug: Meh Chang + +[Peter: Drop ChangeLog change, fix path] +Signed-off-by: Peter Korsgaard +--- + src/base64.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/base64.c b/src/base64.c +index f6f187f0..e58ca6c7 100644 +--- a/src/base64.c ++++ b/src/base64.c +@@ -152,10 +152,14 @@ static uschar dec64table[] = { + int + b64decode(const uschar *code, uschar **ptr) + { ++ + int x, y; +-uschar *result = store_get(3*(Ustrlen(code)/4) + 1); ++uschar *result; + +-*ptr = result; ++{ ++ int l = Ustrlen(code); ++ *ptr = result = store_get(1 + l/4 * 3 + l%4); ++} + + /* Each cycle of the loop handles a quantum of 4 input bytes. For the last + quantum this may decode to 1, 2, or 3 output bytes. */ +-- +2.11.0 + diff --git a/buildroot/package/exim/Config.in b/buildroot/package/exim/Config.in new file mode 100644 index 0000000..aa50a86 --- /dev/null +++ b/buildroot/package/exim/Config.in @@ -0,0 +1,36 @@ +comment "exim needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_EXIM + bool "exim" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_BERKELEYDB + help + Exim is a message transfer agent (MTA) developed at the + University of Cambridge for use on Unix systems connected to + the Internet. + + http://www.exim.org/ + +if BR2_PACKAGE_EXIM + +config BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE + string "Custom configuration file" + help + By default, when this option is left empty, Buildroot + generates a configuration file for exim with reasonable + settings. + + If you want to override the configuration file generated by + Buildroot with a customized file, set here the path to your + configuration file with this option. + + This file shall comply with the syntax defined in the exim + documentation (http://www.exim.org/docs.html). + Buildroot will generate a configuration file composed of the + content of the file you provide plus the toolchain-related + settings needed for cross-compilation. + +endif diff --git a/buildroot/package/exim/Local-Makefile b/buildroot/package/exim/Local-Makefile new file mode 100644 index 0000000..191f0e0 --- /dev/null +++ b/buildroot/package/exim/Local-Makefile @@ -0,0 +1,15 @@ +BIN_DIRECTORY=/usr/sbin +CONFIGURE_FILE=/etc/exim/configure +EXIM_USER=ref:exim +EXIM_GROUP=mail +SPOOL_DIRECTORY=/var/spool/exim +ROUTER_ACCEPT=yes +TRANSPORT_LMTP=yes +LOOKUP_DBM=yes +LOOKUP_LSEARCH=yes +PCRE_LIBS=-lpcre +FIXED_NEVER_USERS=root +HEADERS_CHARSET="ISO-8859-1" +HAVE_ICONV=no +SYSLOG_LOG_PID=yes +TMPDIR="/tmp" diff --git a/buildroot/package/exim/S86exim b/buildroot/package/exim/S86exim new file mode 100644 index 0000000..bec88fc --- /dev/null +++ b/buildroot/package/exim/S86exim @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Start/stop exim +# + +PIDFILE=/var/lock/exim/exim-daemon.pid + +case "$1" in + start) + echo "Starting exim..." + start-stop-daemon -S -x exim -- -bd + ;; + stop) + printf "Stopping exim..." + start-stop-daemon -K -o -p $PIDFILE + ;; + restart|reload) + "$0" stop + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/exim/exim.hash b/buildroot/package/exim/exim.hash new file mode 100644 index 0000000..41f51b1 --- /dev/null +++ b/buildroot/package/exim/exim.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 1a21322a10e2da9c0bd6a2a483b6e7ef8fa7f16efcab4c450fd73e7188f5fa94 exim-4.89.1.tar.xz diff --git a/buildroot/package/exim/exim.mk b/buildroot/package/exim/exim.mk new file mode 100644 index 0000000..37eab50 --- /dev/null +++ b/buildroot/package/exim/exim.mk @@ -0,0 +1,154 @@ +################################################################################ +# +# exim +# +################################################################################ + +EXIM_VERSION = 4.89.1 +EXIM_SOURCE = exim-$(EXIM_VERSION).tar.xz +EXIM_SITE = ftp://ftp.exim.org/pub/exim/exim4 +EXIM_LICENSE = GPL-2.0+ +EXIM_LICENSE_FILES = LICENCE +EXIM_DEPENDENCIES = pcre berkeleydb host-pkgconf + +# Modify a variable value. It must already exist in the file, either +# commented or not. +define exim-config-change # variable-name, variable-value + $(SED) 's,^[#[:space:]]*$1[[:space:]]*=.*$$,$1=$2,' \ + $(@D)/Local/Makefile +endef + +# Comment-out a variable. Has no effect if it does not exits. +define exim-config-unset # variable-name + $(SED) 's,^\([[:space:]]*$1[[:space:]]*=.*$$\),# \1,' \ + $(@D)/Local/Makefile +endef + +# Add a variable definition. It must not already exist in the file, +# otherwise it would be defined twice with potentially different values. +define exim-config-add # variable-name, variable-value + echo "$1=$2" >>$(@D)/Local/Makefile +endef + +define EXIM_USE_CUSTOM_CONFIG_FILE + $(INSTALL) -m 0644 $(BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE) \ + $(@D)/Local/Makefile +endef + +define EXIM_USE_DEFAULT_CONFIG_FILE + $(INSTALL) -m 0644 $(@D)/src/EDITME $(@D)/Local/Makefile + $(call exim-config-change,BIN_DIRECTORY,/usr/sbin) + $(call exim-config-change,CONFIGURE_FILE,/etc/exim/configure) + $(call exim-config-change,EXIM_USER,ref:exim) + $(call exim-config-change,EXIM_GROUP,mail) + $(call exim-config-change,TRANSPORT_LMTP,yes) + $(call exim-config-change,PCRE_LIBS,-lpcre) + $(call exim-config-change,PCRE_CONFIG,no) + $(call exim-config-change,HAVE_ICONV,no) + $(call exim-config-unset,EXIM_MONITOR) + $(call exim-config-change,AUTH_PLAINTEXT,yes) + $(call exim-config-change,AUTH_CRAM_MD5,yes) +endef + +ifeq ($(BR2_PACKAGE_DOVECOT),y) +EXIM_DEPENDENCIES += dovecot +define EXIM_USE_DEFAULT_CONFIG_FILE_DOVECOT + $(call exim-config-change,AUTH_DOVECOT,yes) +endef +endif + +ifeq ($(BR2_PACKAGE_CLAMAV),y) +EXIM_DEPENDENCIES += clamav +define EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV + $(call exim-config-change,WITH_CONTENT_SCAN,yes) +endef +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +EXIM_DEPENDENCIES += openssl +define EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL + $(call exim-config-change,SUPPORT_TLS,yes) + $(call exim-config-change,USE_OPENSSL_PC,openssl) +endef +endif + +# only glibc provides libnsl, remove -lnsl for all other toolchains +# http://bugs.exim.org/show_bug.cgi?id=1564 +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +define EXIM_REMOVE_LIBNSL_FROM_MAKEFILE + $(SED) 's/-lnsl//g' $(@D)/OS/Makefile-Linux +endef +endif + +# musl does not provide struct ip_options nor struct ip_opts (but it is +# available with both glibc and uClibc) +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +define EXIM_FIX_IP_OPTIONS_FOR_MUSL + $(SED) 's/#define GLIBC_IP_OPTIONS/#define DARWIN_IP_OPTIONS/' \ + $(@D)/OS/os.h-Linux +endef +endif + +define EXIM_CONFIGURE_TOOLCHAIN + $(call exim-config-add,CC,$(TARGET_CC)) + $(call exim-config-add,CFLAGS,$(TARGET_CFLAGS)) + $(call exim-config-add,AR,$(TARGET_AR) cq) + $(call exim-config-add,RANLIB,$(TARGET_RANLIB)) + $(call exim-config-add,HOSTCC,$(HOSTCC)) + $(call exim-config-add,HOSTCFLAGS,$(HOSTCFLAGS)) + $(EXIM_REMOVE_LIBNSL_FROM_MAKEFILE) + $(EXIM_FIX_IP_OPTIONS_FOR_MUSL) +endef + +ifneq ($(call qstrip,$(BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE)),) +define EXIM_CONFIGURE_CMDS + $(EXIM_USE_CUSTOM_CONFIG_FILE) + $(EXIM_CONFIGURE_TOOLCHAIN) +endef +else # CUSTOM_CONFIG +define EXIM_CONFIGURE_CMDS + $(EXIM_USE_DEFAULT_CONFIG_FILE) + $(EXIM_USE_DEFAULT_CONFIG_FILE_DOVECOT) + $(EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV) + $(EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL) + $(EXIM_CONFIGURE_TOOLCHAIN) +endef +endif # CUSTOM_CONFIG + +# exim needs a bit of love to build statically +ifeq ($(BR2_STATIC_LIBS),y) +EXIM_STATIC_FLAGS = LFLAGS="-pthread --static" +endif + +# "The -j (parallel) flag must not be used with make" +# (http://www.exim.org/exim-html-current/doc/html/spec_html/ch04.html) +define EXIM_BUILD_CMDS + $(TARGET_MAKE_ENV) build=br $(MAKE1) -C $(@D) $(EXIM_STATIC_FLAGS) +endef + +# Need to replicate the LFLAGS in install, as exim still wants to build +# something when installing... +define EXIM_INSTALL_TARGET_CMDS + DESTDIR=$(TARGET_DIR) INSTALL_ARG="-no_chown -no_symlink" build=br \ + $(MAKE1) -C $(@D) $(EXIM_STATIC_FLAGS) install + chmod u+s $(TARGET_DIR)/usr/sbin/exim +endef + +define EXIM_USERS + exim 88 mail 8 * - - - exim +endef + +define EXIM_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/exim/S86exim \ + $(TARGET_DIR)/etc/init.d/S86exim +endef + +define EXIM_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/exim/exim.service \ + $(TARGET_DIR)/usr/lib/systemd/system/exim.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/exim.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/exim.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/exim/exim.service b/buildroot/package/exim/exim.service new file mode 100644 index 0000000..26daabc --- /dev/null +++ b/buildroot/package/exim/exim.service @@ -0,0 +1,10 @@ +[Unit] +Description=Exim MTA +After=syslog.target network.target + +[Service] +ExecStart=/usr/bin/exim -bdf +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/exiv2/Config.in b/buildroot/package/exiv2/Config.in new file mode 100644 index 0000000..acce81c --- /dev/null +++ b/buildroot/package/exiv2/Config.in @@ -0,0 +1,58 @@ +comment "exiv2 needs a uClibc or glibc toolchain w/ C++, wchar, dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_EXIV2 + bool "exiv2" + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_MUSL # PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP + depends on BR2_USE_WCHAR + help + Exiv2 is a C++ library and a command line utility to manage + image metadata. It provides fast and easy read and write + access to the Exif, IPTC and XMP metadata of images in + various formats. + + Exiv2 is available under the GPLv2+ or under a commercial + license. + + http://www.exiv2.org/ + +if BR2_PACKAGE_EXIV2 + +config BR2_PACKAGE_EXIV2_COMMERCIAL + bool "Enable commercial" + help + Build the commercial version for closed source project. + + The Nikon lens name database and the NLS support is disabled + for copyright reasons. + + A commercial license request is needed. + http://www.exiv2.org/download.html#license + +config BR2_PACKAGE_EXIV2_PNG + bool "PNG image support" + select BR2_PACKAGE_ZLIB + help + Build with PNG image support + +config BR2_PACKAGE_EXIV2_XMP + bool "XMP support" + select BR2_PACKAGE_EXPAT + help + Build with XMP support + +config BR2_PACKAGE_EXIV2_LENSDATA + bool "Nikon lens name database" + depends on !BR2_PACKAGE_EXIV2_COMMERCIAL + help + Integrate Nikon lens name database. + + This database is integrated but comes from a thirdparty: + http://www.rottmerhusen.com/objektives/lensid/thirdparty.html. + +endif diff --git a/buildroot/package/exiv2/exiv2.hash b/buildroot/package/exiv2/exiv2.hash new file mode 100644 index 0000000..e30cbfa --- /dev/null +++ b/buildroot/package/exiv2/exiv2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 290cb6208f143b9bd5074d790fc8924409f28e5813356c143d739a3311d8ad76 exiv2-910f3507795e1930ae216c9febee0bf9a88e99c0.tar.gz diff --git a/buildroot/package/exiv2/exiv2.mk b/buildroot/package/exiv2/exiv2.mk new file mode 100644 index 0000000..32029ba --- /dev/null +++ b/buildroot/package/exiv2/exiv2.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# exiv2 +# +################################################################################ + +EXIV2_VERSION = 910f3507795e1930ae216c9febee0bf9a88e99c0 +EXIV2_SITE = $(call github,Exiv2,exiv2,$(EXIV2_VERSION)) +EXIV2_INSTALL_STAGING = YES + +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_BUILD_SAMPLES=OFF + +# The following CMake variable disables a TRY_RUN call in the -pthread +# test which is not allowed when cross-compiling. +EXIV2_CONF_OPTS += -DTHREADS_PTHREAD_ARG=OFF + +ifeq ($(BR2_PACKAGE_EXIV2_LENSDATA),) +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_LENSDATA=OFF +endif + +ifeq ($(BR2_PACKAGE_EXIV2_COMMERCIAL),y) +EXIV2_LICENSE = commercial +# NLS support is disabled in commercial version due to the copyright +# of the translated texts. +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_COMMERCIAL=ON -DEXIV2_ENABLE_NLS=OFF +else +EXIV2_LICENSE = GPL-2.0+ +EXIV2_LICENSE_FILES = COPYING +endif + +ifeq ($(BR2_PACKAGE_EXIV2_PNG),y) +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_PNG=ON +EXIV2_DEPENDENCIES += zlib +else +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_PNG=OFF +endif + +ifeq ($(BR2_PACKAGE_EXIV2_XMP),y) +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_XMP=ON -DEXIV2_ENABLE_LIBXMP=ON +EXIV2_DEPENDENCIES += expat +else +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_XMP=OFF -DEXIV2_ENABLE_LIBXMP=OFF +endif + +EXIV2_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_NLS=ON +else +EXIV2_CONF_OPTS += -DEXIV2_ENABLE_NLS=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/expat/Config.in b/buildroot/package/expat/Config.in new file mode 100644 index 0000000..758fb7d --- /dev/null +++ b/buildroot/package/expat/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_EXPAT + bool "expat" + help + The Expat XML Parser. + + http://expat.sourceforge.net diff --git a/buildroot/package/expat/expat.hash b/buildroot/package/expat/expat.hash new file mode 100644 index 0000000..945e102 --- /dev/null +++ b/buildroot/package/expat/expat.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/expat/files/expat/2.2.5/ +md5 789e297f547980fc9ecc036f9a070d49 expat-2.2.5.tar.bz2 +sha1 490659abd7d6c6d4cb4e60c945a15fbf081564f6 expat-2.2.5.tar.bz2 + +# Locally calculated +sha256 d9dc32efba7e74f788fcc4f212a43216fc37cf5f23f4c2339664d473353aedf6 expat-2.2.5.tar.bz2 +sha256 46336ab2fec900803e2f1a4253e325ac01d998efb09bc6906651f7259e636f76 COPYING diff --git a/buildroot/package/expat/expat.mk b/buildroot/package/expat/expat.mk new file mode 100644 index 0000000..69c457d --- /dev/null +++ b/buildroot/package/expat/expat.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# expat +# +################################################################################ + +EXPAT_VERSION = 2.2.5 +EXPAT_SITE = http://downloads.sourceforge.net/project/expat/expat/$(EXPAT_VERSION) +EXPAT_SOURCE = expat-$(EXPAT_VERSION).tar.bz2 +EXPAT_INSTALL_STAGING = YES +EXPAT_DEPENDENCIES = host-pkgconf +HOST_EXPAT_DEPENDENCIES = host-pkgconf +EXPAT_LICENSE = MIT +EXPAT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/expect/0001-enable-cross-compilation.patch b/buildroot/package/expect/0001-enable-cross-compilation.patch new file mode 100644 index 0000000..fd31a01 --- /dev/null +++ b/buildroot/package/expect/0001-enable-cross-compilation.patch @@ -0,0 +1,120 @@ +From: Andrew Ruder +Subject: [PATCH] enable cross compilation for expect + +This patch was created by running ./configure on a modern Linux machine +and inserting the results into the cross compilation section of +each AC_MSG_CHECKING that bombed out with an error. + +Signed-off-by: Andrew Ruder +--- + +Index: expect-5.45/configure.in +=================================================================== +--- expect-5.45.orig/configure.in 2013-11-14 07:59:58.732100595 -0600 ++++ expect-5.45/configure.in 2013-11-14 07:59:58.732100595 -0600 +@@ -481,7 +481,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + AC_MSG_CHECKING([if any value exists for WNOHANG]) +@@ -506,7 +506,8 @@ + AC_MSG_RESULT(no) + AC_DEFINE(WNOHANG_BACKUP_VALUE, 1) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(yes) ++ AC_DEFINE(WNOHANG_BACKUP_VALUE, 1) + ) + + # +@@ -574,7 +575,7 @@ + AC_DEFINE(REARM_SIG) + , + AC_MSG_RESULT(no) +-, AC_MSG_WARN([Expect can't be cross compiled]) ++, AC_MSG_RESULT(no) + ) + + # HPUX7 has trouble with the big cat so split it +@@ -725,7 +726,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + # mach systems have include files for unimplemented features +@@ -749,7 +750,9 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_DEFINE(HAVE_TERMIO) ++ PTY_TYPE=termios ++ AC_MSG_RESULT(yes) + ) + + # now check for the new style ttys (not yet posix) +@@ -771,7 +774,9 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_DEFINE(HAVE_TERMIOS) ++ PTY_TYPE=termios ++ AC_MSG_RESULT(yes) + ) + fi + +@@ -794,7 +799,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + AC_MSG_CHECKING([if TIOCGWINSZ in termios.h]) +@@ -816,7 +821,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + # finally check for Cray style ttys +@@ -837,7 +842,7 @@ + , + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(no) + ) + + # +@@ -869,7 +874,9 @@ + AC_HAVE_FUNCS(getpty) + + # following test sets SETPGRP_VOID if setpgrp takes 0 args, else takes 2 +-AC_FUNC_SETPGRP ++cat >>expect_cf.h <<\_ACEOF ++#define SETPGRP_VOID 1 ++_ACEOF + + # + # check for timezones +@@ -889,7 +896,7 @@ + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) + , +- AC_MSG_ERROR([Expect can't be cross compiled]) ++ AC_MSG_RESULT(yes) + ) + + diff --git a/buildroot/package/expect/0002-allow-tcl-build-directory.patch b/buildroot/package/expect/0002-allow-tcl-build-directory.patch new file mode 100644 index 0000000..83ede7a --- /dev/null +++ b/buildroot/package/expect/0002-allow-tcl-build-directory.patch @@ -0,0 +1,34 @@ +From: Andrew Ruder +Subject: [PATCH] Allow tcl build directory for linking + +Some small changes to use TCL_BUILD_LIB_SPEC instead of TCL_LIB_SPEC for +linking against tcl directly out of its build directory. + +Signed-off-by: Andrew Ruder +--- + +Index: expect-5.45/Makefile.in +=================================================================== +--- expect-5.45.orig/Makefile.in 2013-11-14 07:59:58.732100595 -0600 ++++ expect-5.45/Makefile.in 2013-11-14 07:59:58.732100595 -0600 +@@ -393,7 +393,7 @@ + @LDFLAGS_DEFAULT@ \ + -o expect exp_main_exp.o \ + @EXP_BUILD_LIB_SPEC@ \ +- @TCL_LIB_SPEC@ \ ++ @TCL_BUILD_LIB_SPEC@ \ + @TCL_DL_LIBS@ @PKG_LIBS@ @MATH_LIBS@ \ + @TCL_CC_SEARCH_FLAGS@ \ + @EXP_CC_SEARCH_FLAGS@ +Index: expect-5.45/tclconfig/tcl.m4 +=================================================================== +--- expect-5.45.orig/tclconfig/tcl.m4 2010-11-09 13:42:10.000000000 -0600 ++++ expect-5.45/tclconfig/tcl.m4 2013-11-14 08:02:08.424100580 -0600 +@@ -412,6 +412,7 @@ + AC_SUBST(TCL_LIB_FILE) + AC_SUBST(TCL_LIB_FLAG) + AC_SUBST(TCL_LIB_SPEC) ++ AC_SUBST(TCL_BUILD_LIB_SPEC) + + AC_SUBST(TCL_STUB_LIB_FILE) + AC_SUBST(TCL_STUB_LIB_FLAG) diff --git a/buildroot/package/expect/Config.in b/buildroot/package/expect/Config.in new file mode 100644 index 0000000..5557f4a --- /dev/null +++ b/buildroot/package/expect/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_EXPECT + bool "expect" + help + Expect is a tool for automating interactive applications + such as telnet, ftp, passwd, fsck, rlogin, ssh, tip, etc. + + http://expect.sourceforge.net/ diff --git a/buildroot/package/expect/expect.hash b/buildroot/package/expect/expect.hash new file mode 100644 index 0000000..c89f323 --- /dev/null +++ b/buildroot/package/expect/expect.hash @@ -0,0 +1,4 @@ +# From https://sourceforge.net/projects/expect/files/Expect/5.45.3/expect5.45.3.tar.gz.SHA256 +sha256 c520717b7195944a69ce1492ec82ca0ac3f3baf060804e6c5ee6d505ea512be9 expect5.45.3.tar.gz +# Locally calculated +sha256 b2415b17dc8d9a287f4509047ef5ac3436baef7ba7c50faef5222dcdf61a2bab README diff --git a/buildroot/package/expect/expect.mk b/buildroot/package/expect/expect.mk new file mode 100644 index 0000000..ccde33a --- /dev/null +++ b/buildroot/package/expect/expect.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# expect +# +################################################################################ + +EXPECT_VERSION = 5.45.3 +EXPECT_SITE = https://sourceforge.net/projects/expect/files/Expect/$(EXPECT_VERSION) +EXPECT_SOURCE = expect$(EXPECT_VERSION).tar.gz +EXPECT_LICENSE = Public domain +EXPECT_LICENSE_FILES = README + +# 0001-enable-cross-compilation.patch +EXPECT_AUTORECONF = YES +EXPECT_DEPENDENCIES = tcl +EXPECT_CONF_OPTS = --with-tcl=$(BUILD_DIR)/tcl-$(TCL_VERSION)/unix + +# Since we don't want examples installed +EXPECT_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-binaries + +$(eval $(autotools-package)) diff --git a/buildroot/package/expedite/Config.in b/buildroot/package/expedite/Config.in new file mode 100644 index 0000000..fdfc671 --- /dev/null +++ b/buildroot/package/expedite/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_EXPEDITE + bool "expedite" + depends on BR2_PACKAGE_EFL + depends on BR2_INSTALL_LIBSTDCPP + help + Expedite is the official Evas benchmark tool. It can test + different engines, such as X11, XRender, OpenGL (also ES + variant), SDL, DirectFB and so on. Its tests are quite + extensive, trying to reproduce real world usage cases. + +comment "expedite needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/expedite/expedite.hash b/buildroot/package/expedite/expedite.hash new file mode 100644 index 0000000..828ee05 --- /dev/null +++ b/buildroot/package/expedite/expedite.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 56e1dbd9826d932f0ef72a10dfdf32b6e0f680ab6830f8a8cfc60644ac69dbf1 expedite-e7b11dd328d9db82b49cde795944a721beaf0112.tar.gz diff --git a/buildroot/package/expedite/expedite.mk b/buildroot/package/expedite/expedite.mk new file mode 100644 index 0000000..6bd4b00 --- /dev/null +++ b/buildroot/package/expedite/expedite.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# expedite +# +################################################################################ + +EXPEDITE_VERSION = e7b11dd328d9db82b49cde795944a721beaf0112 +EXPEDITE_SITE = http://git.enlightenment.org/tools/expedite.git +EXPEDITE_SITE_METHOD = git +EXPEDITE_LICENSE = BSD-2-Clause +EXPEDITE_LICENSE_FILES = COPYING + +EXPEDITE_DEPENDENCIES = host-efl host-pkgconf efl + +# There is no configure script in the git tree. +EXPEDITE_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_EFL_X_XLIB),y) +EXPEDITE_CONF_OPTS += --with-x=$(STAGING_DIR) \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/explorercanvas/Config.in b/buildroot/package/explorercanvas/Config.in new file mode 100644 index 0000000..9714a58 --- /dev/null +++ b/buildroot/package/explorercanvas/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_EXPLORERCANVAS + bool "explorercanvas" + help + Modern browsers like Firefox, Safari, Chrome and Opera + support the HTML5 canvas tag to allow 2D command-based + drawing. ExplorerCanvas brings the same functionality to + Internet Explorer ( +Date: Mon, 14 Sep 2015 22:25:12 +0200 +Subject: [PATCH] sha2.c: explicitly include endian.h for BYTE_ORDER macro + +Fixes a build issue with the musl C library, which doesn't indirectly +include endian.h from any of the included system headers: + +http://autobuild.buildroot.net/results/17b/17bde543db253c008079b04c5e341f804160f59c/build-end.log + +Upstream-Status: submitted (https://github.com/ffainelli/faifa/pull/12) + +Signed-off-by: Peter Korsgaard +--- + sha2.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sha2.c b/sha2.c +index f2f5132..4c8a72d 100644 +--- a/sha2.c ++++ b/sha2.c +@@ -40,6 +40,7 @@ + #include + #include + ++#include "endian.h" + #include "sha2.h" + + /* +-- +2.1.4 + diff --git a/buildroot/package/faifa/0002-hpav_cfg.c-do-not-include-linux-if_ether.h-for-musl-.patch b/buildroot/package/faifa/0002-hpav_cfg.c-do-not-include-linux-if_ether.h-for-musl-.patch new file mode 100644 index 0000000..6f340c3 --- /dev/null +++ b/buildroot/package/faifa/0002-hpav_cfg.c-do-not-include-linux-if_ether.h-for-musl-.patch @@ -0,0 +1,32 @@ +From 36eed08a3783df6bb8d92d3c80cd47d0660eeb12 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 30 Jan 2016 16:27:37 +0100 +Subject: [PATCH 1/1] hpav_cfg.c: do not include linux/if_ether.h for musl + compatibility + +Fixes a build issue with the musl C library +http://autobuild.buildroot.net/results/dc6/dc6e4d7327d2031ef921cccd814605dec73a0f9c/build-end.log + +Patch sent upstream: https://github.com/ffainelli/faifa/pull/13 + +Signed-off-by: Bernd Kuhls +--- + hpav_cfg.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/hpav_cfg.c b/hpav_cfg.c +index 7cc53af..45d3f0a 100644 +--- a/hpav_cfg.c ++++ b/hpav_cfg.c +@@ -53,8 +53,6 @@ + #include + #include + +-#include +- + #include "homeplug_av.h" + #include "crypto.h" + +-- +2.7.0.rc3 + diff --git a/buildroot/package/faifa/Config.in b/buildroot/package/faifa/Config.in new file mode 100644 index 0000000..753abc6 --- /dev/null +++ b/buildroot/package/faifa/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_FAIFA + bool "faifa" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBPCAP + help + Faifa can configure any Intellon-based Power Line + Communication device using Intellon INT5000 and INT6000 + series chips (6000 and 6300 chips). It supports all + Intellon-specific management and control frames as well as + standard management frames. + + https://dev.open-plc.org + +comment "faifa needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/faifa/faifa.hash b/buildroot/package/faifa/faifa.hash new file mode 100644 index 0000000..b4c2741 --- /dev/null +++ b/buildroot/package/faifa/faifa.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 6eada81f3d21f80b5848338b627784981064d728f8e377e5cf973d31640d4489 faifa-v0.1.tar.gz diff --git a/buildroot/package/faifa/faifa.mk b/buildroot/package/faifa/faifa.mk new file mode 100644 index 0000000..af7a174 --- /dev/null +++ b/buildroot/package/faifa/faifa.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# faifa +# +################################################################################ + +FAIFA_VERSION = v0.1 +FAIFA_SITE = $(call github,ffainelli,faifa,$(FAIFA_VERSION)) +FAIFA_INSTALL_STAGING = YES +FAIFA_DEPENDENCIES = libpcap host-autoconf +FAIFA_LICENSE = BSD-3-Clause +FAIFA_LICENSE_FILES = COPYING + +FAIFA_MAKE_OPTS += GIT_REV=$(FAIFA_VERSION) + +# This package uses autoconf, but not automake, so we need to call +# their special autogen.sh script, and have custom target and staging +# installation commands. + +define FAIFA_RUN_AUTOGEN + cd $(@D) && PATH=$(BR_PATH) ./autogen.sh +endef +FAIFA_PRE_CONFIGURE_HOOKS += FAIFA_RUN_AUTOGEN + +define FAIFA_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr \ + STRIP=/bin/true \ + DESTDIR=$(TARGET_DIR) \ + install +endef + +define FAIFA_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr \ + STRIP=/bin/true \ + DESTDIR=$(STAGING_DIR) \ + install +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/fakedate/fakedate b/buildroot/package/fakedate/fakedate new file mode 100755 index 0000000..a64d9b9 --- /dev/null +++ b/buildroot/package/fakedate/fakedate @@ -0,0 +1,51 @@ +#!/bin/bash +# vim: set sw=4 expandtab: +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Copyright (C) 2016 Jérôme Pouiller +# + +DATE_BIN=false +# Do not call `date' directly since it will produce an infinite recursion. +# Instead, find path of true `date' binary. +for P in `echo $PATH | tr ':' ' '`; do + if [ -x "$P/date" ]; then + if ! [ "$P/date" -ef "$0" ]; then + DATE_BIN="$P/date" + break; + fi + fi +done + +if [ -n "$SOURCE_DATE_EPOCH" ]; then + FORCE_EPOCH=1 + for i in "$@"; do + # Use of --date, --file and --reference (and their short option counter + # parts) is incompatible with SOURCE_DATE_EPOCH. + # -u and -R are the only short options without argument. So they could + # appear between '-' and option we want to match. + if echo "$i" | grep -qE '^-([uR]*d|-date|[uR]*f|-file|[uR]*r|--reference)'; then + FORCE_EPOCH=0 + break; + fi + done + if [ $FORCE_EPOCH -eq 1 ]; then + echo "date: Warning: using \$SOURCE_DATE_EPOCH instead of true time" >&2 + ARGS="-d @$SOURCE_DATE_EPOCH" + fi +fi + +exec $DATE_BIN $ARGS "$@" diff --git a/buildroot/package/fakedate/fakedate.mk b/buildroot/package/fakedate/fakedate.mk new file mode 100644 index 0000000..99ea748 --- /dev/null +++ b/buildroot/package/fakedate/fakedate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# fakedate +# +################################################################################ + +# source included in buildroot +HOST_FAKEDATE_LICENSE = GPL-2.0+ + +define HOST_FAKEDATE_INSTALL_CMDS + $(INSTALL) -D -m 755 package/fakedate/fakedate $(HOST_DIR)/bin/date +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/fakeroot/0001-hide-dlsym-error.patch b/buildroot/package/fakeroot/0001-hide-dlsym-error.patch new file mode 100644 index 0000000..2c61fab --- /dev/null +++ b/buildroot/package/fakeroot/0001-hide-dlsym-error.patch @@ -0,0 +1,34 @@ +Description: Hide error from dlsym() + dlsym(), starting in glibc 2.24 actually reports errors. In our case, + we try to get ACL functions which are not in the glibc. This causes + failures in test suites, so hide those messages for non-debugging + purposes for now. It also makes the build logs annoying to read. +Author: Julian Andres Klode +Origin: vendor +Bug-Debian: https://bugs.debian.org/830912 +Forwarded: no +Last-Update: 2016-08-12 + +Signed-off-by: Maxime Hadjinlian + +--- a/libfakeroot.c ++++ b/libfakeroot.c +@@ -256,10 +256,16 @@ void load_library_symbols(void){ + /* clear dlerror() just in case dlsym() legitimately returns NULL */ + msg = dlerror(); + *(next_wrap[i].doit)=dlsym(get_libc(), next_wrap[i].name); ++ + if ( (msg = dlerror()) != NULL){ +- fprintf (stderr, "dlsym(%s): %s\n", next_wrap[i].name, msg); +-/* abort ();*/ ++#ifdef LIBFAKEROOT_DEBUGGING ++ if (fakeroot_debug) { ++ fprintf (stderr, "dlsym(%s): %s\n", next_wrap[i].name, msg); ++/* abort ();*/ ++ } ++#endif + } ++ + } + } + diff --git a/buildroot/package/fakeroot/0002-communicate-check-return-status-of-msgrcv.patch b/buildroot/package/fakeroot/0002-communicate-check-return-status-of-msgrcv.patch new file mode 100644 index 0000000..3bb4f97 --- /dev/null +++ b/buildroot/package/fakeroot/0002-communicate-check-return-status-of-msgrcv.patch @@ -0,0 +1,46 @@ +From a853f21633693f9eefc4949660253a5328d2d2f3 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 13 Aug 2017 23:21:54 +0200 +Subject: [PATCH 1/1] communicate: check return status of msgrcv() + +msgrcv can return with -1 to indicate an error condition. +One such error is to have been interrupted by a signal. + +Being interrupted by a signal is very rare in this code, except in a +very special condition: a highly-parallel (1000 jobs!) mksquashfs on +a filesystem with extended attributes, where we see errors like (those +are mksquashfs errors): + llistxattr for titi/603/883 failed in read_attrs, because Unknown + error 1716527536 + +See: https://bugs.busybox.net/show_bug.cgi?id=10141 + +In this case, we just have to retry the call to msgrcv(). + +Signed-off-by: "Yann E. MORIN" +--- + communicate.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/communicate.c b/communicate.c +index 293f404..787bb63 100644 +--- a/communicate.c ++++ b/communicate.c +@@ -553,10 +553,13 @@ void send_get_fakem(struct fake_msg *buf) + l=msgrcv(msg_get, + (struct my_msgbuf*)buf, + sizeof(*buf)-sizeof(buf->mtype),0,0); +- while((buf->serial!=serial)||buf->pid!=pid); ++ while(((l==-1)&&(errno==EINTR))||(buf->serial!=serial)||buf->pid!=pid); + + semaphore_down(); + ++ if(l==-1) ++ buf->xattr.flags_rc=errno; ++ + /* + (nah, may be wrong, due to allignment) + +-- +2.11.0 + diff --git a/buildroot/package/fakeroot/fakeroot.hash b/buildroot/package/fakeroot/fakeroot.hash new file mode 100644 index 0000000..d1d959d --- /dev/null +++ b/buildroot/package/fakeroot/fakeroot.hash @@ -0,0 +1,6 @@ +# From http://snapshot.debian.org/package/fakeroot/1.20.2-1/ +sha1 367040df07043edb630942b21939e493f3fad888 fakeroot_1.20.2.orig.tar.bz2 +# Calculated based on the hash above +sha256 7c0a164d19db3efa9e802e0fc7cdfeff70ec6d26cdbdc4338c9c2823c5ea230c fakeroot_1.20.2.orig.tar.bz2 +# License files, locally calculated +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/buildroot/package/fakeroot/fakeroot.mk b/buildroot/package/fakeroot/fakeroot.mk new file mode 100644 index 0000000..4aa27a1 --- /dev/null +++ b/buildroot/package/fakeroot/fakeroot.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# fakeroot +# +################################################################################ + +FAKEROOT_VERSION = 1.20.2 +FAKEROOT_SOURCE = fakeroot_$(FAKEROOT_VERSION).orig.tar.bz2 +FAKEROOT_SITE = http://snapshot.debian.org/archive/debian/20141005T221953Z/pool/main/f/fakeroot + +HOST_FAKEROOT_DEPENDENCIES = host-acl +# Force capabilities detection off +# For now these are process capabilities (faked) rather than file +# so they're of no real use +HOST_FAKEROOT_CONF_ENV = \ + ac_cv_header_sys_capability_h=no \ + ac_cv_func_capset=no + +FAKEROOT_LICENSE = GPL-3.0+ +FAKEROOT_LICENSE_FILES = COPYING + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/faketime/0001-Disable-the-non-null-compare-warning-error.patch b/buildroot/package/faketime/0001-Disable-the-non-null-compare-warning-error.patch new file mode 100644 index 0000000..f8c7484 --- /dev/null +++ b/buildroot/package/faketime/0001-Disable-the-non-null-compare-warning-error.patch @@ -0,0 +1,32 @@ +From e85a157b51b1276c91c736d8624d9f3e876e9189 Mon Sep 17 00:00:00 2001 +From: Andreas Rammhold +Date: Tue, 20 Dec 2016 19:25:32 +0100 +Subject: [PATCH] Disable the non-null compare warning/error. + +We rely on the provided local library definitions for the hooked +functions which in some cases (GCC >6) carry a non-null-attribute flag +which causes compile errors on `!= NULL` checks. + +[Romain: rebase on 0.9.6] +(cherry picked from commit 47e958b753fc15098a2b7d0e9ef26b83ee255874) +Signed-off-by: Romain Naour +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 51634b0..bbbd476 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -67,7 +67,7 @@ INSTALL ?= install + PREFIX ?= /usr/local + LIBDIRNAME ?= /lib/faketime + +-CFLAGS += -std=gnu99 -Wall -Wextra -Werror -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'$(PREFIX)'"' -DLIBDIRNAME='"'$(LIBDIRNAME)'"' ++CFLAGS += -std=gnu99 -Wall -Wextra -Werror -Wno-nonnull-compare -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'$(PREFIX)'"' -DLIBDIRNAME='"'$(LIBDIRNAME)'"' + LIB_LDFLAGS += -shared + LDFLAGS += -Wl,--version-script=libfaketime.map -lpthread + LDADD += -ldl -lm -lrt +-- +2.9.3 + diff --git a/buildroot/package/faketime/0002-src-Makefile-disable-Werror.patch b/buildroot/package/faketime/0002-src-Makefile-disable-Werror.patch new file mode 100644 index 0000000..e1e3b32 --- /dev/null +++ b/buildroot/package/faketime/0002-src-Makefile-disable-Werror.patch @@ -0,0 +1,32 @@ +From bcde6e6f34c3cf78a254315c5caa530db91802fb Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 17 May 2018 23:41:03 +0200 +Subject: [PATCH] src/Makefile: disable -Werror + +gcc 8.x has enabled additional warnings that break the build due to +-Werror, so let's drop -Werror for now. A set of patches has been +submitted upstream (https://github.com/wolfcw/libfaketime/pull/161) to +properly fix the gcc 8.x issues, but in the mean time, disabling +-Werror is a simpler option. + +Signed-off-by: Thomas Petazzoni +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index bbbd476..6b0d2cd 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -67,7 +67,7 @@ INSTALL ?= install + PREFIX ?= /usr/local + LIBDIRNAME ?= /lib/faketime + +-CFLAGS += -std=gnu99 -Wall -Wextra -Werror -Wno-nonnull-compare -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'$(PREFIX)'"' -DLIBDIRNAME='"'$(LIBDIRNAME)'"' ++CFLAGS += -std=gnu99 -Wall -Wextra -Wno-nonnull-compare -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'$(PREFIX)'"' -DLIBDIRNAME='"'$(LIBDIRNAME)'"' + LIB_LDFLAGS += -shared + LDFLAGS += -Wl,--version-script=libfaketime.map -lpthread + LDADD += -ldl -lm -lrt +-- +2.14.3 + diff --git a/buildroot/package/faketime/Config.in.host b/buildroot/package/faketime/Config.in.host new file mode 100644 index 0000000..0ebb963 --- /dev/null +++ b/buildroot/package/faketime/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_FAKETIME + bool "host faketime" + help + Faketime reports faked system time to programs without + having to change the system-wide time. + + https://github.com/wolfcw/libfaketime diff --git a/buildroot/package/faketime/faketime.hash b/buildroot/package/faketime/faketime.hash new file mode 100644 index 0000000..a17ef85 --- /dev/null +++ b/buildroot/package/faketime/faketime.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 56bc32006f4c5b021ff648cc1fd458c5316f40aadfd2031879229a234189b031 faketime-v0.9.6.tar.gz diff --git a/buildroot/package/faketime/faketime.mk b/buildroot/package/faketime/faketime.mk new file mode 100644 index 0000000..6c88a71 --- /dev/null +++ b/buildroot/package/faketime/faketime.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libfaketime +# +################################################################################ + +FAKETIME_VERSION = v0.9.6 +FAKETIME_SITE = $(call github,wolfcw,libfaketime,$(FAKETIME_VERSION)) +FAKETIME_LICENSE = GPL-2.0 +FAKETIME_LICENSE_FILES = COPYING + +define HOST_FAKETIME_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) +endef + +define HOST_FAKETIME_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/fan-ctrl/Config.in b/buildroot/package/fan-ctrl/Config.in new file mode 100644 index 0000000..8696316 --- /dev/null +++ b/buildroot/package/fan-ctrl/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_FAN_CTRL + bool "fan-ctrl" + depends on BR2_USE_MMU # fork() + help + Fan-ctrl is a little daemon that controls the speed of one + or more system or CPU fans. It does so by monitoring + temperature inputs and selecting a fan speed from an array + of available speeds based on a set of temperature + thresholds. + + http://fan-ctrl.sourceforge.net/ diff --git a/buildroot/package/fan-ctrl/fan-ctrl.hash b/buildroot/package/fan-ctrl/fan-ctrl.hash new file mode 100644 index 0000000..0bd5d60 --- /dev/null +++ b/buildroot/package/fan-ctrl/fan-ctrl.hash @@ -0,0 +1,2 @@ +# Locally computed +sha1 d8ba5bac15e90c36a4e908ca1c98fac83bf702ea fan-ctrl.c?revision=1.3 diff --git a/buildroot/package/fan-ctrl/fan-ctrl.mk b/buildroot/package/fan-ctrl/fan-ctrl.mk new file mode 100644 index 0000000..53533a8 --- /dev/null +++ b/buildroot/package/fan-ctrl/fan-ctrl.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# fan-ctrl +# +################################################################################ + +# no release, so grab .c file directly from viewvc +FAN_CTRL_VERSION = 1.3 +FAN_CTRL_SOURCE = fan-ctrl.c?revision=$(FAN_CTRL_VERSION) +FAN_CTRL_SITE = http://fan-ctrl.cvs.sourceforge.net/viewvc/fan-ctrl/fan-ctrl +FAN_CTRL_LICENSE = GPL-2.0+ +FAN_CTRL_LICENSE_FILES = fan-ctrl.c + +define FAN_CTRL_EXTRACT_CMDS + cp $(DL_DIR)/$(FAN_CTRL_SOURCE) $(@D)/fan-ctrl.c +endef + +define FAN_CTRL_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + $(@D)/fan-ctrl.c -o $(@D)/fan-ctrl +endef + +define FAN_CTRL_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/fan-ctrl $(TARGET_DIR)/usr/sbin/fan-ctrl +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fastd/0001-cmake-use-INTERPROCEDURAL_OPTIMIZATION-target-proper.patch b/buildroot/package/fastd/0001-cmake-use-INTERPROCEDURAL_OPTIMIZATION-target-proper.patch new file mode 100644 index 0000000..489c726 --- /dev/null +++ b/buildroot/package/fastd/0001-cmake-use-INTERPROCEDURAL_OPTIMIZATION-target-proper.patch @@ -0,0 +1,69 @@ +From: Alexander Dahl +Date: Wed, 28 Oct 2015 16:04:13 +0100 +Subject: [PATCH] cmake: use INTERPROCEDURAL_OPTIMIZATION target property + +Instead of hacking on compiler flags use the cmake way for handling +interprocedural optimization. Tests showed cmake currently ignores this +for gcc and clang, at least on Debian Wheezy and Jessie. This actually +results in no interprocedural optimization for the moment. However it +allows to compile fastd against a toolchain without LTO support, which +was broken because of a hack included here for finding binutils. + +According to the upstream author of fastd the main reason for enabling +LTO was binary size on an OpenWRT target for Freifunk Gluon, where they +have very few space left on devices with only 4 MB flash memory. + +Signed-off-by: Alexander Dahl +--- + cmake/checks.cmake | 14 -------------- + src/CMakeLists.txt | 9 +++++++++ + 2 files changed, 9 insertions(+), 14 deletions(-) + +diff --git a/cmake/checks.cmake b/cmake/checks.cmake +index 27c073f..8a671a1 100644 +--- a/cmake/checks.cmake ++++ b/cmake/checks.cmake +@@ -10,20 +10,6 @@ if(ARCH_X86 OR ARCH_X86_64) + endif(ARCH_X86 OR ARCH_X86_64) + + +- +-if(ENABLE_LTO) +- set(CFLAGS_LTO "-flto") +- set(CFLAGS_NO_LTO "-fno-lto") +- +- check_c_compiler_flag("-fwhole-program" HAVE_FLAG_WHOLE_PROGRAM) +- if(HAVE_FLAG_WHOLE_PROGRAM) +- set(LDFLAGS_LTO "-flto -fwhole-program") +- else(HAVE_FLAG_WHOLE_PROGRAM) +- set(LDFLAGS_LTO "-flto") +- endif(HAVE_FLAG_WHOLE_PROGRAM) +-endif(ENABLE_LTO) +- +- + check_c_source_compiles(" + #include + #include +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 829b3ab..7612b40 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -48,6 +48,15 @@ add_executable(fastd + set_property(TARGET fastd PROPERTY COMPILE_FLAGS "${FASTD_CFLAGS}") + set_property(TARGET fastd PROPERTY LINK_FLAGS "${PTHREAD_LDFLAGS} ${LIBUECC_LDFLAGS_OTHER} ${NACL_LDFLAGS_OTHER} ${JSON_C_LDFLAGS_OTHER} ${LDFLAGS_LTO}") + set_property(TARGET fastd APPEND PROPERTY INCLUDE_DIRECTORIES ${LIBCAP_INCLUDE_DIR} ${NACL_INCLUDE_DIRS} ${JSON_C_INCLUDE_DIR}) ++if(ENABLE_LTO) ++ set_target_properties(fastd PROPERTIES ++ INTERPROCEDURAL_OPTIMIZATION ON ++ ) ++else(ENABLE_LTO) ++ set_target_properties(fastd PROPERTIES ++ INTERPROCEDURAL_OPTIMIZATION OFF ++ ) ++endif(ENABLE_LTO) + target_link_libraries(fastd protocols methods ciphers macs ${RT_LIBRARY} ${LIBCAP_LIBRARY} ${LIBUECC_LIBRARIES} ${NACL_LIBRARIES} ${OPENSSL_CRYPTO_LIBRARY} ${JSON_C_LIBRARIES}) + + add_dependencies(fastd version) +-- +2.1.4 + diff --git a/buildroot/package/fastd/0002-CMakeList-do-not-overwrite-module-path.patch b/buildroot/package/fastd/0002-CMakeList-do-not-overwrite-module-path.patch new file mode 100644 index 0000000..88c1953 --- /dev/null +++ b/buildroot/package/fastd/0002-CMakeList-do-not-overwrite-module-path.patch @@ -0,0 +1,56 @@ +From a925a4cab1b722a2a24b0c1d2a1925f3b766de61 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Thu, 2 Mar 2017 21:43:39 +0100 +Subject: [PATCH] CMakeList: do not overwrite module path + +Currently, the CMakeList.txt completely overwrites the CMAKE_MODULE_PATH +variable. + +This is problematic when an upper-layer buildsystem wants to set its own +module path to use custom modules. + +For example, Buldroot [0] provides a custom platform description [1] to fix +cross-compilation issue. Overwriting the module path means that this +custom platform description is not found [2]. + +Providing such a custom platform description is what the upstream cmake +devs suggest [3], quoting: + + If a toolchain file specifies CMAKE_SYSTEM_NAME such that a custom + `Platform/MySystem.cmake` file is loaded then the latter can set + them [*] as needed for the target platform. + +[*] offending settings causing RPATH issues during cross-compilation. + +So we need to append our source tree to the module path, not replace it +blindly. + +[0] https://buildroot.org/ +[1] https://git.buildroot.org/buildroot/tree/support/misc/Buildroot.cmake +[2] http://autobuild.buildroot.net/results/69f/69fb2e3b549a069e2898506db918423e6742c589/build-end.log +[3] http://public.kitware.com/pipermail/cmake/2017-February/065063.html + +Signed-off-by: "Yann E. MORIN" +--- +Patch applied upstream: +https://git.universe-factory.net/fastd/commit/?id=a925a4cab1b722a2a24b0c1d2a1925f3b766de61 + +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 61689b1..2c9c61a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,6 @@ + cmake_minimum_required(VERSION 2.8.8) + +-set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) ++list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + cmake_policy(SET CMP0017 OLD) # Prefer modules in our module directory + + project(FASTD C ASM) +-- +2.7.4 + diff --git a/buildroot/package/fastd/0003-cipher-remove-aes128-ctr-NaCl-implementation.patch b/buildroot/package/fastd/0003-cipher-remove-aes128-ctr-NaCl-implementation.patch new file mode 100644 index 0000000..854b3e7 --- /dev/null +++ b/buildroot/package/fastd/0003-cipher-remove-aes128-ctr-NaCl-implementation.patch @@ -0,0 +1,137 @@ +From 4b8c4f54bbd70849fc91679bea44b4e1dfb0526d Mon Sep 17 00:00:00 2001 +From: Matthias Schiffer +Date: Wed, 18 Oct 2017 20:11:30 +0200 +Subject: [PATCH] cipher: remove aes128-ctr NaCl implementation + +New versions of libsodium have dropped support for aes128-ctr. AES support +is only available with OpenSSL now. + +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit 4b8c4f54bb + + doc/source/manual/config.rst | 1 - + src/crypto/cipher/aes128_ctr/CMakeLists.txt | 1 - + src/crypto/cipher/aes128_ctr/nacl/CMakeLists.txt | 6 -- + .../aes128_ctr/nacl/cipher_aes128_ctr_nacl.c | 76 ---------------------- + 4 files changed, 84 deletions(-) + delete mode 100644 src/crypto/cipher/aes128_ctr/nacl/CMakeLists.txt + delete mode 100644 src/crypto/cipher/aes128_ctr/nacl/cipher_aes128_ctr_nacl.c + +diff --git a/doc/source/manual/config.rst b/doc/source/manual/config.rst +index 0abebeb4c245..94d7a9495ef0 100644 +--- a/doc/source/manual/config.rst ++++ b/doc/source/manual/config.rst +@@ -70,7 +70,6 @@ Example config: + * ``aes128-ctr``: AES128 in counter mode + + - ``openssl``: Use implementation from OpenSSL's libcrypto +- - ``nacl``: Use implementation from NaCl or libsodium + + * ``null``: No encryption (for authenticated-only methods using composed_gmac) + +diff --git a/src/crypto/cipher/aes128_ctr/CMakeLists.txt b/src/crypto/cipher/aes128_ctr/CMakeLists.txt +index 0588fed798e2..58e8c6b3371c 100644 +--- a/src/crypto/cipher/aes128_ctr/CMakeLists.txt ++++ b/src/crypto/cipher/aes128_ctr/CMakeLists.txt +@@ -1,3 +1,2 @@ + fastd_cipher(aes128-ctr aes128_ctr.c) + add_subdirectory(openssl) +-add_subdirectory(nacl) +diff --git a/src/crypto/cipher/aes128_ctr/nacl/CMakeLists.txt b/src/crypto/cipher/aes128_ctr/nacl/CMakeLists.txt +deleted file mode 100644 +index 676aa5d48ec4..000000000000 +--- a/src/crypto/cipher/aes128_ctr/nacl/CMakeLists.txt ++++ /dev/null +@@ -1,6 +0,0 @@ +-fastd_cipher_impl(aes128-ctr nacl +- cipher_aes128_ctr_nacl.c +-) +-fastd_cipher_impl_include_directories(aes128-ctr nacl ${NACL_INCLUDE_DIRS}) +-fastd_cipher_impl_link_libraries(aes128-ctr nacl ${NACL_LIBRARIES}) +-fastd_cipher_impl_require(aes128-ctr nacl NACL) +diff --git a/src/crypto/cipher/aes128_ctr/nacl/cipher_aes128_ctr_nacl.c b/src/crypto/cipher/aes128_ctr/nacl/cipher_aes128_ctr_nacl.c +deleted file mode 100644 +index ead632640414..000000000000 +--- a/src/crypto/cipher/aes128_ctr/nacl/cipher_aes128_ctr_nacl.c ++++ /dev/null +@@ -1,76 +0,0 @@ +-/* +- Copyright (c) 2012-2016, Matthias Schiffer +- All rights reserved. +- +- Redistribution and use in source and binary forms, with or without +- modification, are permitted provided that the following conditions are met: +- +- 1. Redistributions of source code must retain the above copyright notice, +- this list of conditions and the following disclaimer. +- 2. Redistributions in binary form must reproduce the above copyright notice, +- this list of conditions and the following disclaimer in the documentation +- and/or other materials provided with the distribution. +- +- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-*/ +- +-/** +- \file +- +- The aes128-ctr implementation from NaCl +-*/ +- +- +-#include "../../../../crypto.h" +-#include "../../../../alloc.h" +- +-#include +- +- +-/** The cipher state */ +-struct __attribute__((aligned(16))) fastd_cipher_state { +- uint8_t d[crypto_stream_aes128ctr_BEFORENMBYTES] __attribute__((aligned(16))); /**< The unpacked AES key */ +-}; +- +- +-/** Initializes the cipher state */ +-static fastd_cipher_state_t * aes128_ctr_init(const uint8_t *key) { +- fastd_block128_t k; +- memcpy(k.b, key, sizeof(fastd_block128_t)); +- +- fastd_cipher_state_t *state = fastd_new_aligned(fastd_cipher_state_t, 16); +- crypto_stream_aes128ctr_beforenm(state->d, k.b); +- +- return state; +-} +- +-/** XORs data with the aes128-ctr cipher stream */ +-static bool aes128_ctr_crypt(const fastd_cipher_state_t *state, fastd_block128_t *out, const fastd_block128_t *in, size_t len, const uint8_t *iv) { +- crypto_stream_aes128ctr_xor_afternm(out->b, in->b, len, iv, state->d); +- return true; +-} +- +-/** Frees the cipher state */ +-static void aes128_ctr_free(fastd_cipher_state_t *state) { +- if (state) { +- secure_memzero(state, sizeof(*state)); +- free(state); +- } +-} +- +- +-/** The nacl aes128-ctr implementation */ +-const fastd_cipher_t fastd_cipher_aes128_ctr_nacl = { +- .init = aes128_ctr_init, +- .crypt = aes128_ctr_crypt, +- .free = aes128_ctr_free, +-}; +-- +2.15.0 + diff --git a/buildroot/package/fastd/Config.in b/buildroot/package/fastd/Config.in new file mode 100644 index 0000000..47c76b5 --- /dev/null +++ b/buildroot/package/fastd/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_FASTD + bool "fastd" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # libuecc + select BR2_PACKAGE_LIBUECC + select BR2_PACKAGE_LIBSODIUM + select BR2_PACKAGE_LIBCAP + help + Fast and Secure Tunneling Daemon + + https://projects.universe-factory.net/projects/fastd/wiki + +if BR2_PACKAGE_FASTD + +config BR2_PACKAGE_FASTD_STATUS_SOCKET + bool "status socket support" + default y + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + select BR2_PACKAGE_JSON_C + help + Enable support for a socket to get fastd's status. + +endif + +comment "fastd needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS diff --git a/buildroot/package/fastd/fastd.hash b/buildroot/package/fastd/fastd.hash new file mode 100644 index 0000000..3c6a99e --- /dev/null +++ b/buildroot/package/fastd/fastd.hash @@ -0,0 +1,4 @@ +# from https://projects.universe-factory.net/projects/fastd/files +md5 e53236d3049f64f7955ad9556da099eb fastd-18.tar.xz +# computed locally +sha256 714ff09d7bd75f79783f744f6f8c5af2fe456c8cf876feaa704c205a73e043c9 fastd-18.tar.xz diff --git a/buildroot/package/fastd/fastd.mk b/buildroot/package/fastd/fastd.mk new file mode 100644 index 0000000..e67acdb --- /dev/null +++ b/buildroot/package/fastd/fastd.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# fastd +# +################################################################################ + +FASTD_VERSION = 18 +FASTD_SITE = https://projects.universe-factory.net/attachments/download/86 +FASTD_SOURCE = fastd-$(FASTD_VERSION).tar.xz +FASTD_LICENSE = BSD-2-Clause +FASTD_LICENSE_FILES = COPYRIGHT +FASTD_CONF_OPTS = -DENABLE_LIBSODIUM=ON +FASTD_DEPENDENCIES = host-bison host-pkgconf libuecc libsodium libcap + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +FASTD_CONF_OPTS += -DENABLE_OPENSSL=ON +FASTD_DEPENDENCIES += openssl +else +FASTD_CONF_OPTS += -DENABLE_OPENSSL=OFF +endif + +ifeq ($(BR2_PACKAGE_FASTD_STATUS_SOCKET),y) +FASTD_CONF_OPTS += -DWITH_STATUS_SOCKET=ON +FASTD_DEPENDENCIES += json-c +else +FASTD_CONF_OPTS += -DWITH_STATUS_SOCKET=OFF +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +FASTD_CONF_OPTS += -DENABLE_SYSTEMD=ON +else +FASTD_CONF_OPTS += -DENABLE_SYSTEMD=OFF +endif + +ifeq ($(BR2_GCC_ENABLE_LTO),y) +FASTD_CONF_OPTS += -DENABLE_LTO=ON +else +FASTD_CONF_OPTS += -DENABLE_LTO=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/fb-test-app/Config.in b/buildroot/package/fb-test-app/Config.in new file mode 100644 index 0000000..23b5568 --- /dev/null +++ b/buildroot/package/fb-test-app/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_FB_TEST_APP + bool "fb-test-app" + help + Test suite for Linux framebuffer. + + https://github.com/prpplague/fb-test-app diff --git a/buildroot/package/fb-test-app/fb-test-app.hash b/buildroot/package/fb-test-app/fb-test-app.hash new file mode 100644 index 0000000..7f73753 --- /dev/null +++ b/buildroot/package/fb-test-app/fb-test-app.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6baf6b45968d0bb9a5527c6c4bf18661e9f9eb9be973a6d1952c38168c90d58f fb-test-app-rosetta-1.1.0.tar.gz diff --git a/buildroot/package/fb-test-app/fb-test-app.mk b/buildroot/package/fb-test-app/fb-test-app.mk new file mode 100644 index 0000000..1ab7b2f --- /dev/null +++ b/buildroot/package/fb-test-app/fb-test-app.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# fb-test-app +# +################################################################################ + +FB_TEST_APP_VERSION = rosetta-1.1.0 +FB_TEST_APP_SITE = $(call github,prpplague,fb-test-app,$(FB_TEST_APP_VERSION)) +FB_TEST_APP_LICENSE = GPL-2.0 +FB_TEST_APP_LICENSE_FILES = COPYING + +define FB_TEST_APP_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define FB_TEST_APP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/perf $(TARGET_DIR)/usr/bin/fb-test-perf + $(INSTALL) -D -m 0755 $(@D)/rect $(TARGET_DIR)/usr/bin/fb-test-rect + $(INSTALL) -D -m 0755 $(@D)/fb-test $(TARGET_DIR)/usr/bin/fb-test + $(INSTALL) -D -m 0755 $(@D)/offset $(TARGET_DIR)/usr/bin/fb-test-offset +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fbdump/Config.in b/buildroot/package/fbdump/Config.in new file mode 100644 index 0000000..c102fe2 --- /dev/null +++ b/buildroot/package/fbdump/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FBDUMP + bool "fbdump (Framebuffer Capture Tool)" + help + fbdump is a simple tool to capture snapshots from the Linux + kernel framebuffer device and write them out as a PPM file. + Currently, most packed-pixel framebuffer formats and the vga16 + framebuffer are supported. + + http://www.rcdrummond.net/fbdump diff --git a/buildroot/package/fbdump/fbdump.hash b/buildroot/package/fbdump/fbdump.hash new file mode 100644 index 0000000..15cc839 --- /dev/null +++ b/buildroot/package/fbdump/fbdump.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c4d521a86229b3106cf69786008ad94f899da5288a19a067deae84951880722d fbdump-0.4.2.tar.gz diff --git a/buildroot/package/fbdump/fbdump.mk b/buildroot/package/fbdump/fbdump.mk new file mode 100644 index 0000000..301dd4f --- /dev/null +++ b/buildroot/package/fbdump/fbdump.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# fbdump +# +################################################################################ + +FBDUMP_VERSION = 0.4.2 +FBDUMP_SITE = http://www.rcdrummond.net/fbdump +FBDUMP_LICENSE = GPL-2.0 +FBDUMP_LICENSE_FILES = COPYING + +# The VGA16 specific feature of fbdump doesn't make much sense outside +# of the x86/x86-64 architectures, and causes build problems on some +# architectures as outw() is not always available. +ifeq ($(BR2_i386)$(BR2_x86_64),y) +FBDUMP_CONF_OPTS += --enable-vga16fb +else +FBDUMP_CONF_OPTS += --disable-vga16fb +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/fbgrab/0001-fix-static-build.patch b/buildroot/package/fbgrab/0001-fix-static-build.patch new file mode 100644 index 0000000..fe5ae2c --- /dev/null +++ b/buildroot/package/fbgrab/0001-fix-static-build.patch @@ -0,0 +1,21 @@ +Fix static build + +fbgrab links against libpng, which depends on libm. For shared library +builds, there is nothing special to do about this, but for static +library builds, it is necessary to pass -lm when linking fbgrab. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -12,7 +12,7 @@ + all: fbgrab fbgrab.1.gz + + fbgrab: fbgrab.c +- $(CC) -g -Wall $(CFLAGS) $(LDFLAGS) $< -lpng -lz -o $@ ++ $(CC) -g -Wall $(CFLAGS) $(LDFLAGS) $< -lpng -lz -lm -o $@ + + fbgrab.1.gz: fbgrab.1.man + $(GZIP) $(GZIPFLAGS) $< > $@ diff --git a/buildroot/package/fbgrab/0100-fix-pixfmt-report.patch b/buildroot/package/fbgrab/0100-fix-pixfmt-report.patch new file mode 100644 index 0000000..8cff7ef --- /dev/null +++ b/buildroot/package/fbgrab/0100-fix-pixfmt-report.patch @@ -0,0 +1,24 @@ +Fix pixel format report + +When fbgrab tells about the framebuffer pixel format, blue and green +are accidentally swapped in 'length' and 'msb_right' columns. Let's +order everything as RGB. + +Upstream-Status: Submitted [Gunnar Monell ] + +Signed-off-by: Timo Ketola + +diff -u a/fbgrab.c b/fbgrab.c +--- a/fbgrab.c 2018-03-07 11:42:04.739250433 +0200 ++++ b/fbgrab.c 2018-03-07 11:43:26.128043877 +0200 +@@ -169,8 +169,8 @@ + fprintf(stderr, "bits_per_pixel: %i\n", fb_varinfo_p->bits_per_pixel); + fprintf(stderr, "grayscale: %s\n", fb_varinfo_p->grayscale ? "true" : "false"); + fprintf(stderr, "red: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->red.offset, fb_varinfo_p->red.length, fb_varinfo_p->red.msb_right); +- fprintf(stderr, "blue: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->blue.offset, fb_varinfo_p->green.length, fb_varinfo_p->green.msb_right); +- fprintf(stderr, "green: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->green.offset, fb_varinfo_p->blue.length, fb_varinfo_p->blue.msb_right); ++ fprintf(stderr, "green: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->green.offset, fb_varinfo_p->green.length, fb_varinfo_p->green.msb_right); ++ fprintf(stderr, "blue: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->blue.offset, fb_varinfo_p->blue.length, fb_varinfo_p->blue.msb_right); + fprintf(stderr, "alpha: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->transp.offset, fb_varinfo_p->transp.length, fb_varinfo_p->transp.msb_right); + fprintf(stderr, "pixel format: %s\n", fb_varinfo_p->nonstd == 0 ? "standard" : "non-standard"); + } diff --git a/buildroot/package/fbgrab/Config.in b/buildroot/package/fbgrab/Config.in new file mode 100644 index 0000000..d1e9e69 --- /dev/null +++ b/buildroot/package/fbgrab/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_FBGRAB + bool "fbgrab" + select BR2_PACKAGE_LIBPNG + help + FBGrab is a framebuffer screenshot program, capturing the + linux frambuffer and converting it to a png-picture. + + http://fbgrab.monells.se/ diff --git a/buildroot/package/fbgrab/fbgrab.hash b/buildroot/package/fbgrab/fbgrab.hash new file mode 100644 index 0000000..de3bc1f --- /dev/null +++ b/buildroot/package/fbgrab/fbgrab.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5fab478cbf8731fbacefaa76236a8f8b38ccff920c53b3a8253bc35509fba8ed fbgrab-1.3.tar.gz diff --git a/buildroot/package/fbgrab/fbgrab.mk b/buildroot/package/fbgrab/fbgrab.mk new file mode 100644 index 0000000..d81a5ee --- /dev/null +++ b/buildroot/package/fbgrab/fbgrab.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# fbgrab +# +################################################################################ + +FBGRAB_VERSION = 1.3 +FBGRAB_SITE = http://fbgrab.monells.se +FBGRAB_DEPENDENCIES = libpng +FBGRAB_LICENSE = GPL-2.0 +FBGRAB_LICENSE_FILES = COPYING + +define FBGRAB_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) fbgrab +endef + +define FBGRAB_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/fbgrab $(TARGET_DIR)/usr/bin/fbgrab +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fbset/0001-Fix-musl-compile.patch b/buildroot/package/fbset/0001-Fix-musl-compile.patch new file mode 100644 index 0000000..65d84c5 --- /dev/null +++ b/buildroot/package/fbset/0001-Fix-musl-compile.patch @@ -0,0 +1,33 @@ +From 6d42be24b62b94df8e2f01956842b7ee4b640e97 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 11 Jul 2016 22:07:42 +0200 +Subject: [PATCH] Fix musl compile. + +Unconditional include for __u32 type. + +Fixes: + + error: unknown type name '__u32' + +Signed-off-by: Peter Seiderer +--- + fbset.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/fbset.h b/fbset.h +index 9b1d2ac..3c511e1 100644 +--- a/fbset.h ++++ b/fbset.h +@@ -15,9 +15,7 @@ + #include + #include + +-#ifdef __GLIBC__ + #include +-#endif + + #define VERSION "Linux Frame Buffer Device Configuration " \ + "Version 2.1 (23/06/1999)\n" \ +-- +2.8.1 + diff --git a/buildroot/package/fbset/Config.in b/buildroot/package/fbset/Config.in new file mode 100644 index 0000000..b4ef41f --- /dev/null +++ b/buildroot/package/fbset/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FBSET + bool "fbset" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Fbset is a system utility to show or change the settings of + the frame buffer device. The frame buffer device provides a + simple and unique interface to access different kinds of + graphic displays. + + http://users.telenet.be/geertu/Linux/fbdev/ diff --git a/buildroot/package/fbset/fbset.hash b/buildroot/package/fbset/fbset.hash new file mode 100644 index 0000000..ca8cc6d --- /dev/null +++ b/buildroot/package/fbset/fbset.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 40ff4ab0247b75138a0887ed40f81c1a6184f340b77126c16d074b1075b41c20 fbset-2.1.tar.gz diff --git a/buildroot/package/fbset/fbset.mk b/buildroot/package/fbset/fbset.mk new file mode 100644 index 0000000..d6ee104 --- /dev/null +++ b/buildroot/package/fbset/fbset.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# fbset +# +################################################################################ + +FBSET_VERSION = 2.1 +FBSET_SITE = http://users.telenet.be/geertu/Linux/fbdev +FBSET_DEPENDENCIES = host-bison host-flex +FBSET_LICENSE = GPL-2.0 + +# Make sure full fbset wins over busybox fbset +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +FBSET_DEPENDENCIES += busybox +endif + +define FBSET_BUILD_CMDS + $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define FBSET_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/fbset $(TARGET_DIR)/usr/sbin/fbset +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fbterm/0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch b/buildroot/package/fbterm/0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch new file mode 100644 index 0000000..27e1e91 --- /dev/null +++ b/buildroot/package/fbterm/0001-fbio.cpp-improxy.cpp-fbterm.cpp-fix-musl-compile.patch @@ -0,0 +1,70 @@ +From 1072d60c6c8f1f51feb740527a8a056bfead9318 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 8 Oct 2015 19:53:47 +0200 +Subject: [PATCH] fbio.cpp, improxy.cpp, fbterm.cpp: fix musl compile +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- add missing include, fixes: + + fbio.cpp:33:8: error: ‘fd_set’ does not name a type + static fd_set fds; + + improxy.cpp:439:3: error: ‘fd_set’ was not declared in this scope + +- add missing WAIT_ANY define, fixes: + + fbterm.cpp: In member function ‘void FbTerm::processSignal(u32)’: + fbterm.cpp:212:22: error: ‘WAIT_ANY’ was not declared in this scope + s32 pid = waitpid(WAIT_ANY, 0, WNOHANG); + +Signed-off-by: Peter Seiderer +--- + src/fbio.cpp | 1 + + src/fbterm.cpp | 4 ++++ + src/improxy.cpp | 1 + + 3 files changed, 6 insertions(+) + +diff --git a/src/fbio.cpp b/src/fbio.cpp +index e5afc44..88c632c 100644 +--- a/src/fbio.cpp ++++ b/src/fbio.cpp +@@ -30,6 +30,7 @@ + #define NR_EPOLL_FDS 10 + s32 epollFd; + #else ++#include + static fd_set fds; + static u32 maxfd = 0; + #endif +diff --git a/src/fbterm.cpp b/src/fbterm.cpp +index 38d4014..60288e4 100644 +--- a/src/fbterm.cpp ++++ b/src/fbterm.cpp +@@ -37,6 +37,10 @@ + #include "input_key.h" + #include "mouse.h" + ++#ifndef WAIT_ANY ++#define WAIT_ANY (-1) ++#endif ++ + #ifdef HAVE_SIGNALFD + // offered by some systems has bug with g++ + #include "signalfd.h" +diff --git a/src/improxy.cpp b/src/improxy.cpp +index 3d03e66..4e046d2 100644 +--- a/src/improxy.cpp ++++ b/src/improxy.cpp +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + #include "improxy.h" + #include "immessage.h" +-- +2.1.4 + diff --git a/buildroot/package/fbterm/0002-mouse.cpp-fix-musl-compile.patch b/buildroot/package/fbterm/0002-mouse.cpp-fix-musl-compile.patch new file mode 100644 index 0000000..5182d8b --- /dev/null +++ b/buildroot/package/fbterm/0002-mouse.cpp-fix-musl-compile.patch @@ -0,0 +1,30 @@ +From a34dba99aff2994269ee347da67feb7ede9b1a67 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 18 Feb 2016 22:32:38 +0100 +Subject: [PATCH] mouse.cpp: fix musl compile + +Add missing include, fixes: + + mouse.cpp:58:37: error: 'memset' was not declared in this scope + mouse.cpp:60:64: error: 'strncpy' was not declared in this scope + +Signed-off-by: Peter Seiderer +--- + src/mouse.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/mouse.cpp b/src/mouse.cpp +index 0435dd9..f173137 100644 +--- a/src/mouse.cpp ++++ b/src/mouse.cpp +@@ -27,6 +27,7 @@ DEFINE_INSTANCE(Mouse) + #include + #include + #include ++#include + #include + #include + #include +-- +2.1.4 + diff --git a/buildroot/package/fbterm/0003-C++11-compliance.patch b/buildroot/package/fbterm/0003-C++11-compliance.patch new file mode 100644 index 0000000..1a06da3 --- /dev/null +++ b/buildroot/package/fbterm/0003-C++11-compliance.patch @@ -0,0 +1,93 @@ +lib/vterm_states: fix C++11 compliance + +In C++11, narrowing a type is no longer allowed in structure +initializers: + + struct foo { u16 u; }; + foo f[] = { {0}, {-1} }; + +results in the gcc-6 to whine out loudly, and fail: + + error: narrowing conversion of ‘-1’ from ‘int’ to ‘u16 {aka short unsigned int}’ inside { } [-Wnarrowing] + }; + ^ + +Signed-off-by: "Yann E. MORIN" + +diff -durN fbterm-1.7.0.orig/src/lib/vterm_states.cpp fbterm-1.7.0/src/lib/vterm_states.cpp +--- fbterm-1.7.0.orig/src/lib/vterm_states.cpp 2010-10-06 06:23:08.000000000 +0200 ++++ fbterm-1.7.0/src/lib/vterm_states.cpp 2016-08-13 16:54:29.495451127 +0200 +@@ -22,6 +22,7 @@ + #include "vterm.h" + + #define ADDSAME(len) ((len) << 8) ++#define ENDSEQ { ((u16)-1) } + + const VTerm::Sequence VTerm::control_sequences[] = { + { 0, 0, ESkeep }, +@@ -39,14 +40,14 @@ + { 0x1B, 0, ESesc }, + { 0x7F, 0, ESkeep }, + { 0x9B, 0, ESsquare }, +- { -1} ++ ENDSEQ + }; + + const VTerm::Sequence VTerm::escape_sequences[] = { + { 0, 0, ESnormal }, + + // ESnormal +- { -1 }, ++ ENDSEQ, + + // ESesc + { '[', &VTerm::clear_param, ESsquare }, +@@ -65,7 +66,7 @@ + { '8', &VTerm::restore_cursor, ESnormal }, + { '>', &VTerm::keypad_numeric, ESnormal }, + { '=', &VTerm::keypad_application, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // ESsquare + { '[', 0, ESfunckey }, +@@ -104,7 +105,7 @@ + { '`', &VTerm::cursor_position_col, ESnormal }, + { ']', &VTerm::linux_specific, ESnormal }, + { '}', &VTerm::fbterm_specific, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // ESnonstd + { '0' | ADDSAME(9), &VTerm::set_palette, ESkeep }, +@@ -112,25 +113,25 @@ + { 'a' | ADDSAME(5), &VTerm::set_palette, ESkeep }, + { 'P', &VTerm::begin_set_palette, ESkeep }, + { 'R', &VTerm::reset_palette, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // ESpercent + { '@', &VTerm::clear_utf8, ESnormal }, + { 'G', &VTerm::set_utf8, ESnormal }, + { '8', &VTerm::set_utf8, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // EScharset + { '0', &VTerm::set_charset, ESnormal }, + { 'B', &VTerm::set_charset, ESnormal }, + { 'U', &VTerm::set_charset, ESnormal }, + { 'K', &VTerm::set_charset, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // EShash + { '8', &VTerm::screen_align, ESnormal }, +- { -1 }, ++ ENDSEQ, + + // ESfunckey +- { -1 }, ++ ENDSEQ, + }; diff --git a/buildroot/package/fbterm/0004-iconv.patch b/buildroot/package/fbterm/0004-iconv.patch new file mode 100644 index 0000000..39c9182 --- /dev/null +++ b/buildroot/package/fbterm/0004-iconv.patch @@ -0,0 +1,41 @@ +Fix building against libiconv + +Downloaded from +https://github.com/kyak/openwrt-packages/blob/master/fbterm/patches/001-iconv.patch + +Signed-off-by: Bernd Kuhls + +--- a/src/lib/io.cpp ++++ b/src/lib/io.cpp +@@ -119,10 +119,10 @@ void IoPipe::setCodec(const s8 *up, cons + if (!strcasecmp(up, down)) return; + + mCodecRead = iconv_open(up, down); +- if (mCodecRead == (void*)-1) mCodecRead = 0; ++ if (mCodecRead == (iconv_t)(-1)) mCodecRead = 0; + + mCodecWrite = iconv_open(down, up); +- if (mCodecWrite == (void*)-1) mCodecWrite = 0; ++ if (mCodecWrite == (iconv_t)(-1)) mCodecWrite = 0; + } + + #define BUF_SIZE 10240 +--- a/src/lib/io.h ++++ b/src/lib/io.h +@@ -23,6 +23,7 @@ + + #include "type.h" + #include "instance.h" ++#include + + class IoPipe { + public: +@@ -47,7 +48,7 @@ private: + void writeIo(s8 *buf, u32 len); + + s32 mFd; +- void *mCodecRead, *mCodecWrite; ++ iconv_t mCodecRead, mCodecWrite; + s8 mBufRead[16], mBufWrite[16]; + u32 mBufLenRead, mBufLenWrite; + }; diff --git a/buildroot/package/fbterm/Config.in b/buildroot/package/fbterm/Config.in new file mode 100644 index 0000000..3ab8bdb --- /dev/null +++ b/buildroot/package/fbterm/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_FBTERM + bool "fbterm" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_ENABLE_LOCALE + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_LIBERATION + help + fbterm is a fast terminal emulator for Linux with frame buffer + device or VESA video card. + + http://code.google.com/p/fbterm/ + +comment "fbterm needs a toolchain w/ C++, wchar, locale" + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_ENABLE_LOCALE && BR2_USE_WCHAR) diff --git a/buildroot/package/fbterm/fbterm.hash b/buildroot/package/fbterm/fbterm.hash new file mode 100644 index 0000000..20a3e8f --- /dev/null +++ b/buildroot/package/fbterm/fbterm.hash @@ -0,0 +1,2 @@ +# From http://code.google.com/p/fbterm/downloads/detail?name=fbterm-1.7.0.tar.gz&can=2&q= +sha1 dc7b7ff29212c1551f35bf7a50967454d3b8c67c fbterm-1.7.0.tar.gz diff --git a/buildroot/package/fbterm/fbterm.mk b/buildroot/package/fbterm/fbterm.mk new file mode 100644 index 0000000..712d4f9 --- /dev/null +++ b/buildroot/package/fbterm/fbterm.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# fbterm +# +################################################################################ + +FBTERM_VERSION = 1.7.0 +FBTERM_SITE = https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/fbterm +FBTERM_LICENSE = GPL-2.0+ +FBTERM_LICENSE_FILES = COPYING +FBTERM_DEPENDENCIES = fontconfig liberation + +ifeq ($(BR2_STATIC_LIBS)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +# fontconfig uses pthreads if available, but fbterm forgets to link +# with it breaking static builds +FBTERM_CONF_ENV += LIBS='-lpthread' +endif + +ifeq ($(BR2_PACKAGE_GPM),y) +FBTERM_DEPENDENCIES += gpm +FBTERM_CONF_OPTS += --enable-gpm +else +FBTERM_CONF_OPTS += --disable-gpm +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/fbtft/Config.in b/buildroot/package/fbtft/Config.in new file mode 100644 index 0000000..0a4de19 --- /dev/null +++ b/buildroot/package/fbtft/Config.in @@ -0,0 +1,13 @@ +# Prompt-less option, because this package is not doing anything +# except downloading the FB TFT sources. The real work is done by a +# Linux extension. +config BR2_PACKAGE_FBTFT + bool + depends on BR2_LINUX_KERNEL + help + Linux Framebuffer drivers for small TFT LCD display modules, + e.g. Adafruit PiTFT displays for Raspberry Pi. + + This is only the download helper for the kernel patch. + + https://github.com/notro/fbtft diff --git a/buildroot/package/fbtft/fbtft.hash b/buildroot/package/fbtft/fbtft.hash new file mode 100644 index 0000000..894d979 --- /dev/null +++ b/buildroot/package/fbtft/fbtft.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 0e81de89fdd7ab810716fc0549e767527f342e829309dee5c2cca1e9d1728770 fbtft-274035404701245e7491c0c6471c5b72ade4d491.tar.gz diff --git a/buildroot/package/fbtft/fbtft.mk b/buildroot/package/fbtft/fbtft.mk new file mode 100644 index 0000000..b935e74 --- /dev/null +++ b/buildroot/package/fbtft/fbtft.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# fbtft +# +################################################################################ + +FBTFT_VERSION = 274035404701245e7491c0c6471c5b72ade4d491 +FBTFT_SITE = $(call github,notro,fbtft,$(FBTFT_VERSION)) +FBTFT_LICENSE = GPL-2.0 + +$(eval $(generic-package)) diff --git a/buildroot/package/fbv/0002-cross.patch b/buildroot/package/fbv/0002-cross.patch new file mode 100644 index 0000000..ab5f0fb --- /dev/null +++ b/buildroot/package/fbv/0002-cross.patch @@ -0,0 +1,44 @@ +diff -urpN fbv-1.0b.orig/configure fbv-1.0b/configure +--- fbv-1.0b.orig/configure 2004-09-07 13:29:27.000000000 +0200 ++++ fbv-1.0b/configure 2008-04-24 10:52:37.000000000 +0200 +@@ -80,6 +80,7 @@ while true ; do + esac + done + ++[ -z "$CC" ] && CC=cc + [ -z "$prefix" ] && prefix="/usr/local" + [ -z "$bindir" ] && bindir="${prefix}/bin" + [ -z "$mandir" ] && mandir="${prefix}/man" +@@ -106,12 +107,12 @@ xdir="/usr/X11R6" + ungif="no" + echo "libungif check" >>./config.log + echo " 1st:" >>./config.log +-cc 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif $libs ++$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif $libs + if [ -e \$\$~test ]; then + libs="-lungif $libs" ; ungif="yes" + else + echo " 2nd: -lX11 -L$xdir/lib" >>./config.log +- cc 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif -lX11 -L$xdir/lib $libs ++ $CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif -lX11 -L$xdir/lib $libs + if [ -e \$\$~test ]; then + libs="-lungif -lX11 -L$xdir/lib $libs" ; ungif="yes" + fi +@@ -124,7 +125,7 @@ echo "libungif: $ungif" >> ./config.log + echo -n "checking for libjpeg presence... " + if [ "$jpeg" != "disabled" ]; then + jpeg="no" +-cc 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -ljpeg $libs ++$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -ljpeg $libs + if [ -e \$\$~test ]; then + libs="-ljpeg $libs" ; jpeg="yes" + fi +@@ -135,7 +136,7 @@ echo "libjpeg: $jpeg" >> ./config.log + echo -n "checking for libpng presence... " + if [ "$png" != "disabled" ]; then + png="no" +-cc 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lpng $libs ++$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lpng $libs + if [ -e \$\$~test ]; then + libs="-lpng $libs" ; png="yes" + fi diff --git a/buildroot/package/fbv/0003-fix-24bpp-support-on-big-endian.patch b/buildroot/package/fbv/0003-fix-24bpp-support-on-big-endian.patch new file mode 100644 index 0000000..23185ac --- /dev/null +++ b/buildroot/package/fbv/0003-fix-24bpp-support-on-big-endian.patch @@ -0,0 +1,32 @@ +diff -upr a/fb_display.c b/fb_display.c +--- a/fb_display.c 2007-06-01 16:52:45.000000000 +0200 ++++ b/fb_display.c 2007-06-01 16:51:43.000000000 +0200 +@@ -307,7 +307,7 @@ void* convertRGB2FB(int fh, unsigned cha + { + unsigned long i; + void *fbbuff = NULL; +- u_int8_t *c_fbbuff; ++ u_int8_t *c_fbbuff; + u_int16_t *s_fbbuff; + u_int32_t *i_fbbuff; + +@@ -335,6 +335,16 @@ void* convertRGB2FB(int fh, unsigned cha + fbbuff = (void *) s_fbbuff; + break; + case 24: ++ *cpp = 3; ++ c_fbbuff = (unsigned char *) malloc(count * 3 * sizeof(unsigned char)); ++ for(i = 0; i < (3 * count); i += 3) { ++ /* Big endian framebuffer. */ ++ c_fbbuff[i] = rgbbuff[i+2]; ++ c_fbbuff[i+1] = rgbbuff[i+1]; ++ c_fbbuff[i+2] = rgbbuff[i]; ++ } ++ fbbuff = (void *) c_fbbuff; ++ break; + case 32: + *cpp = 4; + i_fbbuff = (unsigned int *) malloc(count * sizeof(unsigned int)); +Only in build_avr32/fbv-1.0b-modified: .fb_display.c.swp +Binary files build_avr32/fbv-1.0b/fb_display.o and build_avr32/fbv-1.0b-modified/fb_display.o differ +Binary files build_avr32/fbv-1.0b/fbv and build_avr32/fbv-1.0b-modified/fbv differ diff --git a/buildroot/package/fbv/0004-fix-bgr555.patch b/buildroot/package/fbv/0004-fix-bgr555.patch new file mode 100644 index 0000000..8f185f0 --- /dev/null +++ b/buildroot/package/fbv/0004-fix-bgr555.patch @@ -0,0 +1,64 @@ +[PATCH] fbv: support bgr555 format + +Signed-off-by: Josh.Wu +diff -Naur fbv-1.0b-ori/fb_display.c fbv-1.0b/fb_display.c +--- fbv-1.0b-ori/fb_display.c 2010-04-02 09:38:15.000000000 +0800 ++++ fbv-1.0b/fb_display.c 2010-04-01 18:54:15.000000000 +0800 +@@ -297,6 +297,14 @@ + ((b >> 3) & 31) ); + } + ++inline static unsigned short make15color_bgr(unsigned char r, unsigned char g, unsigned char b) ++{ ++ return ( ++ (((b >> 3) & 31) << 10) | ++ (((g >> 3) & 31) << 5) | ++ ((r >> 3) & 31) ); ++} ++ + inline static unsigned short make16color(unsigned char r, unsigned char g, unsigned char b) + { + return ( +@@ -313,6 +321,14 @@ + u_int16_t *s_fbbuff; + u_int32_t *i_fbbuff; + ++ int is_bgr555 = 0; ++ struct fb_var_screeninfo var; ++ getVarScreenInfo(fh, &var); ++ if(var.red.offset == 0 && ++ var.green.offset == 5 && ++ var.blue.offset == 10) ++ is_bgr555 = 1; ++ + switch(bpp) + { + case 8: +@@ -325,15 +341,23 @@ + case 15: + *cpp = 2; + s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short)); +- for(i = 0; i < count ; i++) +- s_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); ++ if(is_bgr555) ++ for(i = 0; i < count ; i++) ++ s_fbbuff[i] = make15color_bgr(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); ++ else ++ for(i = 0; i < count ; i++) ++ s_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); + fbbuff = (void *) s_fbbuff; + break; + case 16: + *cpp = 2; + s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short)); +- for(i = 0; i < count ; i++) +- s_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); ++ if(is_bgr555) ++ for(i = 0; i < count ; i++) ++ s_fbbuff[i] = make15color_bgr(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); ++ else ++ for(i = 0; i < count ; i++) ++ s_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]); + fbbuff = (void *) s_fbbuff; + break; + case 24: diff --git a/buildroot/package/fbv/0005-giflib.patch b/buildroot/package/fbv/0005-giflib.patch new file mode 100644 index 0000000..7043353 --- /dev/null +++ b/buildroot/package/fbv/0005-giflib.patch @@ -0,0 +1,84 @@ +Adjust source code to work with giflib 5.1x + +Downloaded patch for gif.c from +https://projects.archlinux.org/svntogit/community.git/plain/trunk/giflib-5.1.patch?h=packages/fbv + +Signed-off-by: Bernd Kuhls + +diff -wbBur fbv-1.0b/gif.c fbv-1.0b.my/gif.c +--- fbv-1.0b/gif.c 2003-08-25 00:23:02.000000000 +0400 ++++ fbv-1.0b.my/gif.c 2014-05-29 18:39:41.337332872 +0400 +@@ -31,10 +31,10 @@ + #include + #define min(a,b) ((a) < (b) ? (a) : (b)) + #define gflush return(FH_ERROR_FILE); +-#define grflush { DGifCloseFile(gft); return(FH_ERROR_FORMAT); } +-#define mgrflush { free(lb); free(slb); DGifCloseFile(gft); return(FH_ERROR_FORMAT); } ++#define grflush { DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); } ++#define mgrflush { free(lb); free(slb); DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); } + #define agflush return(FH_ERROR_FORMAT); +-#define agrflush { DGifCloseFile(gft); return(FH_ERROR_FORMAT); } ++#define agrflush { DGifCloseFile(gft, NULL); return(FH_ERROR_FORMAT); } + + + int fh_gif_id(char *name) +@@ -81,7 +81,7 @@ + ColorMapObject *cmap; + int cmaps; + +- gft=DGifOpenFileName(name); ++ gft=DGifOpenFileName(name, NULL); + if(gft==NULL){printf("err5\n"); gflush;} ////////// + do + { +@@ -170,7 +170,7 @@ + } + } + while( rt!= TERMINATE_RECORD_TYPE ); +- DGifCloseFile(gft); ++ DGifCloseFile(gft, NULL); + return(FH_ERROR_OK); + } + +@@ -184,7 +184,7 @@ + int extcode; + GifRecordType rt; + +- gft=DGifOpenFileName(name); ++ gft=DGifOpenFileName(name, NULL); + if(gft==NULL) gflush; + do + { +@@ -197,7 +197,7 @@ + px=gft->Image.Width; + py=gft->Image.Height; + *x=px; *y=py; +- DGifCloseFile(gft); ++ DGifCloseFile(gft, NULL); + return(FH_ERROR_OK); + break; + case EXTENSION_RECORD_TYPE: +@@ -210,7 +210,7 @@ + } + } + while( rt!= TERMINATE_RECORD_TYPE ); +- DGifCloseFile(gft); ++ DGifCloseFile(gft, NULL); + return(FH_ERROR_FORMAT); + } + #endif +diff -uNr fbv-1.0b.org/configure fbv-1.0b/configure +--- fbv-1.0b.org/configure 2004-09-07 13:29:27.000000000 +0200 ++++ fbv-1.0b/configure 2015-01-29 19:58:30.374599874 +0100 +@@ -106,9 +106,9 @@ + ungif="no" + echo "libungif check" >>./config.log + echo " 1st:" >>./config.log +-$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif $libs ++$CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lgif $libs + if [ -e \$\$~test ]; then +- libs="-lungif $libs" ; ungif="yes" ++ libs="-lgif $libs" ; ungif="yes" + else + echo " 2nd: -lX11 -L$xdir/lib" >>./config.log + $CC 2>>./config.log >>./config.log -o \$\$~test \$\$~test.c -lungif -lX11 -L$xdir/lib $libs diff --git a/buildroot/package/fbv/0006-include.patch b/buildroot/package/fbv/0006-include.patch new file mode 100644 index 0000000..3d1cc17 --- /dev/null +++ b/buildroot/package/fbv/0006-include.patch @@ -0,0 +1,20 @@ +diff -urpN fbv-1.0b.orig/fb_display.c fbv-1.0b/fb_display.c +--- fbv-1.0b.orig/fb_display.c 2004-09-07 14:09:43.000000000 +0200 ++++ fbv-1.0b/fb_display.c 2008-04-24 10:48:29.000000000 +0200 +@@ -18,8 +18,6 @@ + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +-#include +- + #include + #include + #include +@@ -31,6 +29,7 @@ + #include + #include + #include ++#include + #include "config.h" + /* Public Use Functions: + * diff --git a/buildroot/package/fbv/0007-libpng15.patch b/buildroot/package/fbv/0007-libpng15.patch new file mode 100644 index 0000000..7872a73 --- /dev/null +++ b/buildroot/package/fbv/0007-libpng15.patch @@ -0,0 +1,24 @@ +Support for libpng 1.5+ shamelessly taken from Gentoo. + +Signed-off-by: Gustavo Zacarias + +--- a/png.c ++++ b/png.c +@@ -69,7 +69,7 @@ + fclose(fh); return(FH_ERROR_FORMAT); + } + rp=0; +- if (setjmp(png_ptr->jmpbuf)) ++ if (setjmp(png_jmpbuf(png_ptr))) + { + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); + if(rp) free(rp); +@@ -161,7 +161,7 @@ + fclose(fh); return(FH_ERROR_FORMAT); + } + rp=0; +- if (setjmp(png_ptr->jmpbuf)) ++ if (setjmp(png_jmpbuf(png_ptr))) + { + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); + if(rp) free(rp); diff --git a/buildroot/package/fbv/Config.in b/buildroot/package/fbv/Config.in new file mode 100644 index 0000000..2206276 --- /dev/null +++ b/buildroot/package/fbv/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_FBV + bool "fbv" + help + fbv is a very simple graphic file viewer for the framebuffer + console, capable of displaying GIF, JPEG, PNG and BMP files + using libungif, libjpeg and libpng. + + http://freshmeat.net/projects/fbv/ + +if BR2_PACKAGE_FBV + +config BR2_PACKAGE_FBV_PNG + bool "PNG support" + default y + select BR2_PACKAGE_LIBPNG + help + Enable support for PNG using libpng. + +config BR2_PACKAGE_FBV_JPEG + bool "JPEG support" + default y + select BR2_PACKAGE_JPEG + help + Enable support for JPEG using IJG's libjpeg. + +config BR2_PACKAGE_FBV_GIF + bool "GIF support" + default y + select BR2_PACKAGE_GIFLIB + help + Enable support for GIF using giflib. + +endif # BR2_PACKAGE_FBV diff --git a/buildroot/package/fbv/fbv.hash b/buildroot/package/fbv/fbv.hash new file mode 100644 index 0000000..892012b --- /dev/null +++ b/buildroot/package/fbv/fbv.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9b55b9dafd5eb01562060d860e267e309a1876e8ba5ce4d3303484b94129ab3c fbv-1.0b.tar.gz diff --git a/buildroot/package/fbv/fbv.mk b/buildroot/package/fbv/fbv.mk new file mode 100644 index 0000000..a69e4ad --- /dev/null +++ b/buildroot/package/fbv/fbv.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# fbv +# +################################################################################ + +FBV_VERSION = 1.0b +FBV_SITE = http://s-tech.elsat.net.pl/fbv + +FBV_LICENSE = GPL-2.0 +FBV_LICENSE_FILES = COPYING + +### image format dependencies and configure options +FBV_DEPENDENCIES = # empty +FBV_CONFIGURE_OPTS = # empty +ifeq ($(BR2_PACKAGE_FBV_PNG),y) +FBV_DEPENDENCIES += libpng + +# libpng in turn depends on other libraries +ifeq ($(BR2_STATIC_LIBS),y) +FBV_CONFIGURE_OPTS += "--libs=`$(PKG_CONFIG_HOST_BINARY) --libs libpng`" +endif + +else +FBV_CONFIGURE_OPTS += --without-libpng +endif +ifeq ($(BR2_PACKAGE_FBV_JPEG),y) +FBV_DEPENDENCIES += jpeg +else +FBV_CONFIGURE_OPTS += --without-libjpeg +endif +ifeq ($(BR2_PACKAGE_FBV_GIF),y) +FBV_DEPENDENCIES += giflib +else +FBV_CONFIGURE_OPTS += --without-libungif +endif + +#fbv doesn't support cross-compilation +define FBV_CONFIGURE_CMDS + (cd $(FBV_DIR); rm -f config.cache; \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure \ + --prefix=/usr \ + $(FBV_CONFIGURE_OPTS) \ + ) +endef + +define FBV_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define FBV_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/fbv $(TARGET_DIR)/usr/bin/fbv +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/fcgiwrap/0001-use-LIBS-from-configure.patch b/buildroot/package/fcgiwrap/0001-use-LIBS-from-configure.patch new file mode 100644 index 0000000..12563c4 --- /dev/null +++ b/buildroot/package/fcgiwrap/0001-use-LIBS-from-configure.patch @@ -0,0 +1,22 @@ +Makefile.in: Use LIBS from configure rather than specifying -lfcgi manually. + +libfcgi needs libm and fcgiwrap does not use libtool or pkgconf to +detect libfcgi, so we need to add -lm explicitely when using static +libs. Buildroot does this by providing LIBS=-lm to configure when +needed. However fcgiwrap does not use Automake and its Makefile.in +ignores LIBS from configure. Fix it with this patch. + +Signed-off-by: Thomas Claveirole + +diff -ur a/Makefile.in b/Makefile.in +--- a/Makefile.in 2013-02-03 14:25:17.000000000 +0100 ++++ b/Makefile.in 2015-05-29 16:33:23.895280138 +0200 +@@ -16,7 +16,7 @@ + install -m 644 systemd/fcgiwrap.service $(DESTDIR)@systemdsystemunitdir@ + endif + +-LDLIBS = -lfcgi @systemd_LIBS@ ++LDLIBS = @LIBS@ @systemd_LIBS@ + CFLAGS = @AM_CFLAGS@ + + fcgiwrap: fcgiwrap.c diff --git a/buildroot/package/fcgiwrap/0002-link-with-libsystemd-instead-of-libsystemd-daemon.patch b/buildroot/package/fcgiwrap/0002-link-with-libsystemd-instead-of-libsystemd-daemon.patch new file mode 100644 index 0000000..e88706f --- /dev/null +++ b/buildroot/package/fcgiwrap/0002-link-with-libsystemd-instead-of-libsystemd-daemon.patch @@ -0,0 +1,20 @@ +configure.ac: Check for libsystemd, not libsystemd-daemon. + +Newer versions of systemd do not provide libsystemd-daemon anymore. +Therefore, use libsystemd instead. + +Signed-off-by: Thomas Claveirole + +diff --git a/configure.ac b/configure.ac +index bb3674e..2b02ef4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -28,7 +28,7 @@ AC_ARG_WITH([systemd], + [], [with_systemd=check]) + have_systemd=no + if test "x$with_systemd" != "xno"; then +- PKG_CHECK_MODULES(systemd, [libsystemd-daemon], ++ PKG_CHECK_MODULES(systemd, [libsystemd], + [AC_DEFINE(HAVE_SYSTEMD, 1, [Define if systemd is available]) + have_systemd=yes], + have_systemd=no) diff --git a/buildroot/package/fcgiwrap/Config.in b/buildroot/package/fcgiwrap/Config.in new file mode 100644 index 0000000..b1dbd72 --- /dev/null +++ b/buildroot/package/fcgiwrap/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FCGIWRAP + bool "fcgiwrap" + depends on BR2_USE_MMU # libfcgi + select BR2_PACKAGE_LIBFCGI + help + fcgiwrap is a simple server for running CGI applications + over FastCGI. It hopes to provide clean CGI support to Nginx + (and other web servers that may need it). + + https://github.com/gnosek/fcgiwrap diff --git a/buildroot/package/fcgiwrap/fcgiwrap.hash b/buildroot/package/fcgiwrap/fcgiwrap.hash new file mode 100644 index 0000000..4ad8b0b --- /dev/null +++ b/buildroot/package/fcgiwrap/fcgiwrap.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c72f2933669ebd21605975c5a11f26b9739e32e4f9d324fb9e1a1925e9c2ae88 fcgiwrap-99c942c90063c73734e56bacaa65f947772d9186.tar.gz diff --git a/buildroot/package/fcgiwrap/fcgiwrap.mk b/buildroot/package/fcgiwrap/fcgiwrap.mk new file mode 100644 index 0000000..62c4c13 --- /dev/null +++ b/buildroot/package/fcgiwrap/fcgiwrap.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# fcgiwrap +# +################################################################################ + +FCGIWRAP_VERSION = 99c942c90063c73734e56bacaa65f947772d9186 +FCGIWRAP_SITE = $(call github,gnosek,fcgiwrap,$(FCGIWRAP_VERSION)) +FCGIWRAP_DEPENDENCIES = host-pkgconf libfcgi +FCGIWRAP_LICENSE = MIT +FCGIWRAP_LICENSE_FILES = COPYING +FCGIWRAP_AUTORECONF = YES +FCGIWRAP_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -Wno-error" + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +FCGIWRAP_DEPENDENCIES += systemd +FCGIWRAP_CONF_OPTS += --with-systemd +else +FCGIWRAP_CONF_OPTS += --without-systemd +endif + +# libfcgi needs libm and fcgiwrap does not use libtool or pkgconf to +# detect libfcgi, so we need to add -lm explicitely when using static +# libs. +ifeq ($(BR2_STATIC_LIBS),y) +FCGIWRAP_CONF_OPTS += LIBS=-lm +endif + +# fcgiwrap uses Autoconf, but not Automake, so we need to provide +# these to make. +FCGIWRAP_MAKE_ENV = $(TARGET_CONFIGURE_OPTS) + +$(eval $(autotools-package)) diff --git a/buildroot/package/fconfig/Config.in b/buildroot/package/fconfig/Config.in new file mode 100644 index 0000000..e7dd58a --- /dev/null +++ b/buildroot/package/fconfig/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_FCONFIG + bool "fconfig" + help + fconfig - get/set RedBoot configuration parameters from Linux. + + http://andrzejekiert.ovh.org/software.html.en diff --git a/buildroot/package/fconfig/fconfig.hash b/buildroot/package/fconfig/fconfig.hash new file mode 100644 index 0000000..eae26e2 --- /dev/null +++ b/buildroot/package/fconfig/fconfig.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 4ff0e8f07e35e46b705c0dbe9d9544ede01ea092a69e3f7db03e55a3f2bb8eb7 fconfig-20080329.tar.gz diff --git a/buildroot/package/fconfig/fconfig.mk b/buildroot/package/fconfig/fconfig.mk new file mode 100644 index 0000000..1e6fbb4 --- /dev/null +++ b/buildroot/package/fconfig/fconfig.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# fconfig +# +################################################################################ + +FCONFIG_VERSION = 20080329 +# Real upstream location has been disabled +# FCONFIG_SITE = http://andrzejekiert.ovh.org/software/fconfig +FCONFIG_SITE = http://sources.buildroot.net +FCONFIG_LICENSE = GPL-2.0+ +FCONFIG_LICENSE_FILES = fconfig.c + +define FCONFIG_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define FCONFIG_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/fconfig $(TARGET_DIR)/sbin/fconfig +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fdk-aac/Config.in b/buildroot/package/fdk-aac/Config.in new file mode 100644 index 0000000..111de41 --- /dev/null +++ b/buildroot/package/fdk-aac/Config.in @@ -0,0 +1,21 @@ +# These are the architectures supported by FDK AAC +config BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS + bool + default y if BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || \ + BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \ + BR2_powerpc || BR2_sh + +config BR2_PACKAGE_FDK_AAC + bool "fdk-aac" + depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + help + The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC + Codec") is software that implements the MPEG Advanced Audio + Coding ("AAC") encoding and decoding scheme for digital audio + + http://sourceforge.net/projects/opencore-amr/files/fdk-aac/ + +comment "fdk-aac needs a toolchain w/ C++" + depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/fdk-aac/fdk-aac.hash b/buildroot/package/fdk-aac/fdk-aac.hash new file mode 100644 index 0000000..cd2e868 --- /dev/null +++ b/buildroot/package/fdk-aac/fdk-aac.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 2164592a67b467e5b20fdcdaf5bd4c50685199067391c6fcad4fa5521c9b4dd7 fdk-aac-0.1.5.tar.gz diff --git a/buildroot/package/fdk-aac/fdk-aac.mk b/buildroot/package/fdk-aac/fdk-aac.mk new file mode 100644 index 0000000..0c9662e --- /dev/null +++ b/buildroot/package/fdk-aac/fdk-aac.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# fdk-aac +# +################################################################################ + +FDK_AAC_VERSION = 0.1.5 +FDK_AAC_SITE = http://downloads.sourceforge.net/project/opencore-amr/fdk-aac +FDK_AAC_LICENSE = fdk-aac license +FDK_AAC_LICENSE_FILES = NOTICE + +FDK_AAC_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/feh/Config.in b/buildroot/package/feh/Config.in new file mode 100644 index 0000000..19b4abe --- /dev/null +++ b/buildroot/package/feh/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_FEH + bool "feh" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXINERAMA + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_IMLIB2 + select BR2_PACKAGE_IMLIB2_PNG + select BR2_PACKAGE_IMLIB2_JPEG + select BR2_PACKAGE_IMLIB2_X + select BR2_PACKAGE_LIBCURL + help + feh is an X11 image viewer aimed mostly at console users. + + http://feh.finalrewind.org/ diff --git a/buildroot/package/feh/feh.hash b/buildroot/package/feh/feh.hash new file mode 100644 index 0000000..0f8ac8c --- /dev/null +++ b/buildroot/package/feh/feh.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 05a81fbe0997f6274c7617efc351647be38e5244c2624bd203459025c9a68ecd feh-2.22.2.tar.bz2 diff --git a/buildroot/package/feh/feh.mk b/buildroot/package/feh/feh.mk new file mode 100644 index 0000000..311cef3 --- /dev/null +++ b/buildroot/package/feh/feh.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# feh +# +################################################################################ + +FEH_VERSION = 2.22.2 +FEH_SOURCE = feh-$(FEH_VERSION).tar.bz2 +FEH_SITE = http://feh.finalrewind.org +FEH_DEPENDENCIES = libcurl imlib2 libpng xlib_libXinerama xlib_libXt +FEH_LICENSE = MIT +FEH_LICENSE_FILES = COPYING + +define FEH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -std=gnu99" \ + $(MAKE) -C $(@D) all +endef + +define FEH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=/usr DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fetchmail/0001-fix-openssl-static-link.patch b/buildroot/package/fetchmail/0001-fix-openssl-static-link.patch new file mode 100644 index 0000000..1a5f4d6 --- /dev/null +++ b/buildroot/package/fetchmail/0001-fix-openssl-static-link.patch @@ -0,0 +1,30 @@ +Fix checking for statically build OpenSSL with libz dependency + +Fixes +http://autobuild.buildroot.net/results/48a/48ad6d3659cf1f04581b7e3d115bebf454ff17fd/ + +configure: Enabling OpenSSL support in /home/br/br/output/host/usr/i486-buildroot-linux-uclibc/sysroot/usr. +checking for additional library dependencies of SSL... error +configure: error: cannot link with SSL - check config.log + +In config.log multiple linking errors to libz can be found: + +configure:10099: /home/br/br/output/host/usr/bin/i486-ctng-linux-uclibc-gcc -o + conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64 + /home/br/br/output/host/usr/i486-buildroot-linux-uclibc/sysroot/usr/lib/libcrypto.a(c_zlib.o): + In function `zlib_stateful_c_zlib.c:(.text+0x56): undefined reference to `inflate' + +Signed-off-by: Bernd Kuhls + +diff -uNr fetchmail-6.3.26.org/configure.ac fetchmail-6.3.26/configure.ac +--- fetchmail-6.3.26.org/configure.ac 2013-04-23 22:51:10.000000000 +0200 ++++ fetchmail-6.3.26/configure.ac 2014-07-27 09:20:25.000000000 +0200 +@@ -778,7 +778,7 @@ + AC_MSG_ERROR([SSL support enabled, but OpenSSL not found]) + fi + LDFLAGS="$LDFLAGS -L$with_ssl/lib" +- LIBS="$LIBS -lssl -lcrypto" ++ LIBS="-lssl -lcrypto $LIBS" + dnl check if -ldl is needed + AC_MSG_CHECKING([for additional library dependencies of SSL]) + found=0 diff --git a/buildroot/package/fetchmail/0002-enable-libressl.patch b/buildroot/package/fetchmail/0002-enable-libressl.patch new file mode 100644 index 0000000..a98e19d --- /dev/null +++ b/buildroot/package/fetchmail/0002-enable-libressl.patch @@ -0,0 +1,67 @@ +Fetched from upstream git and tweaked for the release: +https://gitlab.com/fetchmail/fetchmail/commit/a2ae6f8d15d7caf815d7bdd13df833fd1b2af5cc + +Signed-off-by: Gustavo Zacarias + +diff -Nura fetchmail-6.3.26.orig/config.h.in fetchmail-6.3.26/config.h.in +--- fetchmail-6.3.26.orig/config.h.in 2015-12-30 10:44:33.467746835 -0300 ++++ fetchmail-6.3.26/config.h.in 2015-12-30 10:45:50.271403589 -0300 +@@ -53,6 +53,10 @@ + if you don't. */ + #undef HAVE_DECL_SSLV2_CLIENT_METHOD + ++/* Define to 1 if you have the declaration of `SSLv3_client_method', and to 0 ++ if you don't. */ ++#undef HAVE_DECL_SSLV3_CLIENT_METHOD ++ + /* Define to 1 if you have the declaration of `strerror', and to 0 if you + don't. */ + #undef HAVE_DECL_STRERROR +diff -Nura fetchmail-6.3.26.orig/configure.ac fetchmail-6.3.26/configure.ac +--- fetchmail-6.3.26.orig/configure.ac 2015-12-30 10:44:33.465746766 -0300 ++++ fetchmail-6.3.26/configure.ac 2015-12-30 10:46:03.708868409 -0300 +@@ -803,6 +803,7 @@ + + case "$LIBS" in *-lssl*) + AC_CHECK_DECLS([SSLv2_client_method],,,[#include ]) ++ AC_CHECK_DECLS([SSLv3_client_method],,,[#include ]) + ;; + esac + +diff -Nura fetchmail-6.3.26.orig/fetchmail.c fetchmail-6.3.26/fetchmail.c +--- fetchmail-6.3.26.orig/fetchmail.c 2015-12-30 10:44:33.469746904 -0300 ++++ fetchmail-6.3.26/fetchmail.c 2015-12-30 10:46:03.708868409 -0300 +@@ -263,6 +263,12 @@ + #ifdef SSL_ENABLE + "+SSL" + #endif ++#if HAVE_DECL_SSLV2_CLIENT_METHOD + 0 == 0 ++ "-SSLv2" ++#endif ++#if HAVE_DECL_SSLV3_CLIENT_METHOD + 0 == 0 ++ "-SSLv3" ++#endif + #ifdef OPIE_ENABLE + "+OPIE" + #endif /* OPIE_ENABLE */ +diff -Nura fetchmail-6.3.26.orig/socket.c fetchmail-6.3.26/socket.c +--- fetchmail-6.3.26.orig/socket.c 2015-12-30 10:44:33.464746731 -0300 ++++ fetchmail-6.3.26/socket.c 2015-12-30 10:46:03.709868443 -0300 +@@ -910,11 +910,16 @@ + #if HAVE_DECL_SSLV2_CLIENT_METHOD + 0 > 0 + _ctx[sock] = SSL_CTX_new(SSLv2_client_method()); + #else +- report(stderr, GT_("Your operating system does not support SSLv2.\n")); ++ report(stderr, GT_("Your OpenSSL version does not support SSLv2.\n")); + return -1; + #endif + } else if(!strcasecmp("ssl3",myproto)) { ++#if HAVE_DECL_SSLV3_CLIENT_METHOD + 0 > 0 + _ctx[sock] = SSL_CTX_new(SSLv3_client_method()); ++#else ++ report(stderr, GT_("Your OpenSSL version does not support SSLv3.\n")); ++ return -1; ++#endif + } else if(!strcasecmp("tls1",myproto)) { + _ctx[sock] = SSL_CTX_new(TLSv1_client_method()); + } else if (!strcasecmp("ssl23",myproto)) { diff --git a/buildroot/package/fetchmail/Config.in b/buildroot/package/fetchmail/Config.in new file mode 100644 index 0000000..a4bf5a7 --- /dev/null +++ b/buildroot/package/fetchmail/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_FETCHMAIL + bool "fetchmail" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_CA_CERTIFICATES + select BR2_PACKAGE_OPENSSL + help + Fetchmail - the mail-retrieval daemon + Client daemon to move mail from POP and IMAP to your local + computer + + http://www.fetchmail.info/ diff --git a/buildroot/package/fetchmail/fetchmail.hash b/buildroot/package/fetchmail/fetchmail.hash new file mode 100644 index 0000000..c67ee1a --- /dev/null +++ b/buildroot/package/fetchmail/fetchmail.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 79b4c54cdbaf02c1a9a691d9948fcb1a77a1591a813e904283a8b614b757e850 fetchmail-6.3.26.tar.xz diff --git a/buildroot/package/fetchmail/fetchmail.mk b/buildroot/package/fetchmail/fetchmail.mk new file mode 100644 index 0000000..37bbeab --- /dev/null +++ b/buildroot/package/fetchmail/fetchmail.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# fetchmail +# +################################################################################ + +FETCHMAIL_VERSION_MAJOR = 6.3 +FETCHMAIL_VERSION = $(FETCHMAIL_VERSION_MAJOR).26 +FETCHMAIL_SOURCE = fetchmail-$(FETCHMAIL_VERSION).tar.xz +FETCHMAIL_SITE = http://downloads.sourceforge.net/project/fetchmail/branch_$(FETCHMAIL_VERSION_MAJOR) +FETCHMAIL_LICENSE = GPL-2.0; some exceptions are mentioned in COPYING +FETCHMAIL_LICENSE_FILES = COPYING +FETCHMAIL_AUTORECONF = YES +FETCHMAIL_GETTEXTIZE = YES + +# needed to help fetchmail detecting the availability of openssl, +# because it doesn't use pkg-config +ifeq ($(BR2_STATIC_LIBS),y) +FETCHMAIL_CONF_ENV += LIBS="-lz" +endif + +FETCHMAIL_CONF_OPTS = \ + --with-ssl=$(STAGING_DIR)/usr + +FETCHMAIL_DEPENDENCIES = \ + ca-certificates \ + openssl \ + $(TARGET_NLS_DEPENDENCIES) + +# fetchmailconf.py script is not (yet) python3-compliant. +# Prevent the pyc-compilation with python-3 from failing by removing this +# non-critical script. +ifeq ($(BR2_PACKAGE_PYTHON3),y) +define FETCHMAIL_REMOVE_FETCHMAILCONF_PY + $(RM) -f $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/fetchmailconf.py +endef +FETCHMAIL_POST_INSTALL_TARGET_HOOKS += FETCHMAIL_REMOVE_FETCHMAILCONF_PY +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ffmpeg/0001-bfin-disable-optimization.patch b/buildroot/package/ffmpeg/0001-bfin-disable-optimization.patch new file mode 100644 index 0000000..1d8a4f0 --- /dev/null +++ b/buildroot/package/ffmpeg/0001-bfin-disable-optimization.patch @@ -0,0 +1,26 @@ +Fix bfin compile error + +See gcc bug report: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77311 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur ffmpeg-2.8.7.orig/libavcodec/hevcdsp_template.c ffmpeg-2.8.7/libavcodec/hevcdsp_template.c +--- ffmpeg-2.8.7.orig/libavcodec/hevcdsp_template.c 2016-03-29 04:25:16.000000000 +0200 ++++ ffmpeg-2.8.7/libavcodec/hevcdsp_template.c 2016-08-12 21:32:36.728178969 +0200 +@@ -1517,7 +1517,14 @@ + #define TQ2 pix[2 * xstride + 3 * ystride] + #define TQ3 pix[3 * xstride + 3 * ystride] + +-static void FUNC(hevc_loop_filter_luma)(uint8_t *_pix, ++// Blackfin gcc 6.1.x fails with ++// unable to find a register to spill in class CCREGS ++#if defined(__bfin__) ++#define disable_opt __attribute__ ((optimize("O1"))) ++#else ++#define disable_opt ++#endif ++static void disable_opt FUNC(hevc_loop_filter_luma)(uint8_t *_pix, + ptrdiff_t _xstride, ptrdiff_t _ystride, + int beta, int *_tc, + uint8_t *_no_p, uint8_t *_no_q) diff --git a/buildroot/package/ffmpeg/0002-ffmpeg-pthreads.patch b/buildroot/package/ffmpeg/0002-ffmpeg-pthreads.patch new file mode 100644 index 0000000..c6d75d2 --- /dev/null +++ b/buildroot/package/ffmpeg/0002-ffmpeg-pthreads.patch @@ -0,0 +1,34 @@ +From patchwork Wed Oct 25 13:32:36 2017 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [FFmpeg-devel] configure: v4l2_m2m depends on pthreads +From: Mark Thompson +X-Patchwork-Id: 5688 +Message-Id: <27e5b360-1210-d550-c8de-a761f8e9f326@jkqxz.net> +To: FFmpeg development discussions and patches +Date: Wed, 25 Oct 2017 14:32:36 +0100 + +Fixes build with --disable-pthreads. + +Downloaded from upstream patchworks: +https://patchwork.ffmpeg.org/patch/5688/ + +Signed-off-by: Bernd Kuhls +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure b/configure +index c86e578..76523c8 100755 +--- a/configure ++++ b/configure +@@ -2780,7 +2780,7 @@ omx_rpi_select="omx" + qsvdec_select="qsv" + qsvenc_select="qsv" + vaapi_encode_deps="vaapi" +-v4l2_m2m_deps_any="linux_videodev2_h" ++v4l2_m2m_deps="linux_videodev2_h pthreads" + + hwupload_cuda_filter_deps="cuda" + scale_npp_filter_deps="cuda libnpp" diff --git a/buildroot/package/ffmpeg/Config.in b/buildroot/package/ffmpeg/Config.in new file mode 100644 index 0000000..2d94c57 --- /dev/null +++ b/buildroot/package/ffmpeg/Config.in @@ -0,0 +1,189 @@ +config BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + bool + default y + # fenv.h lacks FE_INVALID, FE_OVERFLOW & FE_UNDERFLOW + depends on !(BR2_archs38 && BR2_TOOLCHAIN_USES_GLIBC) + # fenv.h lacks FE_INVALID, FE_OVERFLOW & FE_UNDERFLOW on nios2 + depends on !BR2_nios2 + # No support for ARMv7-M in the ARM assembly logic + depends on !BR2_ARM_CPU_ARMV7M + # Microblaze build affected by gcc PR71124 (infinite loop) + depends on !BR2_microblaze + # m68k coldfire causes a build failure, because the check for + # atomics (atomic_store) succeeds, which causes ffmpeg to + # think atomic intrinsics are available, while they are + # not. See https://patchwork.ozlabs.org/patch/756664/ and + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68467 for more + # details. + depends on !BR2_m68k_cf + +menuconfig BR2_PACKAGE_FFMPEG + bool "ffmpeg" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + help + FFmpeg is a complete, cross-platform solution to record, + convert and stream audio and video. + + http://www.ffmpeg.org + +if BR2_PACKAGE_FFMPEG + +config BR2_PACKAGE_FFMPEG_GPL + bool "Enable GPL code" + help + allow use of GPL code, the resulting libs and binaries will + be under GPL + +config BR2_PACKAGE_FFMPEG_NONFREE + bool "Enable nonfree code" + help + allow use of nonfree code, the resulting libs and binaries + will be unredistributable + +config BR2_PACKAGE_FFMPEG_FFMPEG + bool "Build ffmpeg (the command line application)" + default y + help + FFmpeg is a very fast video and audio converter. + It can also grab from a live audio/video source. + + It is not needed if you want to link the FFmpeg libraries + to your application. + +config BR2_PACKAGE_FFMPEG_FFPLAY + bool "Build ffplay" + depends on !BR2_STATIC_LIBS # sdl2 + select BR2_PACKAGE_FFMPEG_SWSCALE + select BR2_PACKAGE_SDL2 + help + FFplay is a very simple and portable media player using the + FFmpeg libraries and the SDL library. + It is mostly used as a testbed for the various FFmpeg APIs. + +comment "ffplay needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_FFMPEG_FFSERVER + bool "Build ffserver" + depends on BR2_USE_MMU # fork() + help + FFserver is a streaming server for both audio and video. + +config BR2_PACKAGE_FFMPEG_FFPROBE + bool "Build ffprobe" + help + FFprobe is a utility to determine the audio and video + characteristics of a container file. + +config BR2_PACKAGE_FFMPEG_AVRESAMPLE + bool "Build libavresample" + help + Avresample is a audio conversion library for compatibility. + +config BR2_PACKAGE_FFMPEG_POSTPROC + bool "Build libpostproc" + depends on BR2_PACKAGE_FFMPEG_GPL + help + Postproc is a library of video postprocessing routines. + +config BR2_PACKAGE_FFMPEG_SWSCALE + bool "Build libswscale" + help + Swscale is a library of video scaling routines. + +config BR2_PACKAGE_FFMPEG_ENCODERS + string "Enabled encoders" + default "all" + help + Space-separated list of encoders to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-encoders in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_DECODERS + string "Enabled decoders" + default "all" + help + Space-separated list of decoders to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-decoders in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_MUXERS + string "Enabled muxers" + default "all" + help + Space-separated list of muxers to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-muxers in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_DEMUXERS + string "Enabled demuxers" + default "all" + help + Space-separated list of demuxers to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-demuxers in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_PARSERS + string "Enabled parsers" + default "all" + help + Space-separated list of parsers to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-parsers in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_BSFS + string "Enabled bitstreams" + default "all" + help + Space-separated list of bitstream filters to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-bsfs in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_PROTOCOLS + string "Enabled protocols" + default "all" + help + Space-separated list of protocols to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-protocols in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_FILTERS + string "Enabled filters" + default "all" + help + Space-separated list of filters to build in FFmpeg, + or "all" to build all of them. + + Run ./configure --list-filters in the ffmpeg sources + directory to know the available options. + +config BR2_PACKAGE_FFMPEG_INDEVS + bool "Enable input devices" + default y + +config BR2_PACKAGE_FFMPEG_OUTDEVS + bool "Enable output devices" + default y + +config BR2_PACKAGE_FFMPEG_EXTRACONF + string "Additional parameters for ./configure" + default "" + help + Extra parameters that will be appended to FFmpeg's + ./configure commandline. + +endif diff --git a/buildroot/package/ffmpeg/ffmpeg.hash b/buildroot/package/ffmpeg/ffmpeg.hash new file mode 100644 index 0000000..a809261 --- /dev/null +++ b/buildroot/package/ffmpeg/ffmpeg.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 2b92e9578ef8b3e49eeab229e69305f5f4cbc1fdaa22e927fc7fca18acccd740 ffmpeg-3.4.2.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPLv2 +sha256 b634ab5640e258563c536e658cad87080553df6f34f62269a21d554844e58bfe COPYING.LGPLv2.1 +sha256 73d99bc83313fff665b426d6672b4e0479102bc402fe22314ac9ce94a38aa5ff LICENSE.md diff --git a/buildroot/package/ffmpeg/ffmpeg.mk b/buildroot/package/ffmpeg/ffmpeg.mk new file mode 100644 index 0000000..5d2f89f --- /dev/null +++ b/buildroot/package/ffmpeg/ffmpeg.mk @@ -0,0 +1,534 @@ +################################################################################ +# +# ffmpeg +# +################################################################################ + +FFMPEG_VERSION = 3.4.2 +FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.xz +FFMPEG_SITE = http://ffmpeg.org/releases +FFMPEG_INSTALL_STAGING = YES + +FFMPEG_LICENSE = LGPL-2.1+, libjpeg license +FFMPEG_LICENSE_FILES = LICENSE.md COPYING.LGPLv2.1 +ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y) +FFMPEG_LICENSE += and GPL-2.0+ +FFMPEG_LICENSE_FILES += COPYING.GPLv2 +endif + +FFMPEG_CONF_OPTS = \ + --prefix=/usr \ + --enable-avfilter \ + --disable-version3 \ + --enable-logging \ + --enable-optimizations \ + --disable-extra-warnings \ + --enable-avdevice \ + --enable-avcodec \ + --enable-avformat \ + --enable-network \ + --disable-gray \ + --enable-swscale-alpha \ + --disable-small \ + --enable-dct \ + --enable-fft \ + --enable-mdct \ + --enable-rdft \ + --disable-crystalhd \ + --disable-dxva2 \ + --enable-runtime-cpudetect \ + --disable-hardcoded-tables \ + --disable-mipsdsp \ + --disable-mipsdspr2 \ + --disable-msa \ + --enable-hwaccels \ + --disable-cuda \ + --disable-cuvid \ + --disable-nvenc \ + --disable-avisynth \ + --disable-frei0r \ + --disable-libopencore-amrnb \ + --disable-libopencore-amrwb \ + --disable-libcdio \ + --disable-libdc1394 \ + --disable-libgsm \ + --disable-libilbc \ + --disable-libvo-amrwbenc \ + --disable-symver \ + --disable-doc + +FFMPEG_DEPENDENCIES += host-pkgconf + +ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y) +FFMPEG_CONF_OPTS += --enable-gpl +else +FFMPEG_CONF_OPTS += --disable-gpl +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_NONFREE),y) +FFMPEG_CONF_OPTS += --enable-nonfree +else +FFMPEG_CONF_OPTS += --disable-nonfree +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_FFMPEG),y) +FFMPEG_CONF_OPTS += --enable-ffmpeg +else +FFMPEG_CONF_OPTS += --disable-ffmpeg +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y) +FFMPEG_DEPENDENCIES += sdl2 +FFMPEG_CONF_OPTS += --enable-ffplay +FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl2-config +else +FFMPEG_CONF_OPTS += --disable-ffplay +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_FFSERVER),y) +FFMPEG_CONF_OPTS += --enable-ffserver +else +FFMPEG_CONF_OPTS += --disable-ffserver +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_AVRESAMPLE),y) +FFMPEG_CONF_OPTS += --enable-avresample +else +FFMPEG_CONF_OPTS += --disable-avresample +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_FFPROBE),y) +FFMPEG_CONF_OPTS += --enable-ffprobe +else +FFMPEG_CONF_OPTS += --disable-ffprobe +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y) +FFMPEG_CONF_OPTS += --enable-postproc +else +FFMPEG_CONF_OPTS += --disable-postproc +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y) +FFMPEG_CONF_OPTS += --enable-swscale +else +FFMPEG_CONF_OPTS += --disable-swscale +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),all) +FFMPEG_CONF_OPTS += --disable-encoders \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),--enable-encoder=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),all) +FFMPEG_CONF_OPTS += --disable-decoders \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),--enable-decoder=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),all) +FFMPEG_CONF_OPTS += --disable-muxers \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),--enable-muxer=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),all) +FFMPEG_CONF_OPTS += --disable-demuxers \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),--enable-demuxer=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),all) +FFMPEG_CONF_OPTS += --disable-parsers \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),--enable-parser=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all) +FFMPEG_CONF_OPTS += --disable-bsfs \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsfs=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all) +FFMPEG_CONF_OPTS += --disable-protocols \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),--enable-protocol=$(x)) +endif + +ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),all) +FFMPEG_CONF_OPTS += --disable-filters \ + $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),--enable-filter=$(x)) +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y) +FFMPEG_CONF_OPTS += --enable-indevs +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +FFMPEG_CONF_OPTS += --enable-alsa +FFMPEG_DEPENDENCIES += alsa-lib +else +FFMPEG_CONF_OPTS += --disable-alsa +endif +else +FFMPEG_CONF_OPTS += --disable-indevs +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y) +FFMPEG_CONF_OPTS += --enable-outdevs +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +FFMPEG_DEPENDENCIES += alsa-lib +endif +else +FFMPEG_CONF_OPTS += --disable-outdevs +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +FFMPEG_CONF_OPTS += --enable-pthreads +else +FFMPEG_CONF_OPTS += --disable-pthreads +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +FFMPEG_CONF_OPTS += --enable-zlib +FFMPEG_DEPENDENCIES += zlib +else +FFMPEG_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +FFMPEG_CONF_OPTS += --enable-bzlib +FFMPEG_DEPENDENCIES += bzip2 +else +FFMPEG_CONF_OPTS += --disable-bzlib +endif + +ifeq ($(BR2_PACKAGE_FDK_AAC)$(BR2_PACKAGE_FFMPEG_NONFREE),yy) +FFMPEG_CONF_OPTS += --enable-libfdk-aac +FFMPEG_DEPENDENCIES += fdk-aac +else +FFMPEG_CONF_OPTS += --disable-libfdk-aac +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +FFMPEG_CONF_OPTS += --enable-gnutls --disable-openssl +FFMPEG_DEPENDENCIES += gnutls +else +FFMPEG_CONF_OPTS += --disable-gnutls +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +# openssl isn't license compatible with GPL +ifeq ($(BR2_PACKAGE_FFMPEG_GPL)x$(BR2_PACKAGE_FFMPEG_NONFREE),yx) +FFMPEG_CONF_OPTS += --disable-openssl +else +FFMPEG_CONF_OPTS += --enable-openssl +FFMPEG_DEPENDENCIES += libopenssl +endif +else +FFMPEG_CONF_OPTS += --disable-openssl +endif +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBEBUR128),yy) +FFMPEG_DEPENDENCIES += libebur128 +endif + +ifeq ($(BR2_PACKAGE_LIBOPENH264),y) +FFMPEG_CONF_OPTS += --enable-libopenh264 +FFMPEG_DEPENDENCIES += libopenh264 +else +FFMPEG_CONF_OPTS += --disable-libopenh264 +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +FFMPEG_DEPENDENCIES += libvorbis +FFMPEG_CONF_OPTS += \ + --enable-libvorbis \ + --enable-muxer=ogg \ + --enable-encoder=libvorbis +endif + +ifeq ($(BR2_PACKAGE_LIBVA),y) +FFMPEG_CONF_OPTS += --enable-vaapi +FFMPEG_DEPENDENCIES += libva +else +FFMPEG_CONF_OPTS += --disable-vaapi +endif + +ifeq ($(BR2_PACKAGE_LIBVDPAU),y) +FFMPEG_CONF_OPTS += --enable-vdpau +FFMPEG_DEPENDENCIES += libvdpau +else +FFMPEG_CONF_OPTS += --disable-vdpau +endif + +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +FFMPEG_CONF_OPTS += --enable-mmal --enable-omx --enable-omx-rpi \ + --extra-cflags=-I$(STAGING_DIR)/usr/include/IL +FFMPEG_DEPENDENCIES += rpi-userland +else +FFMPEG_CONF_OPTS += --disable-mmal --disable-omx --disable-omx-rpi +endif + +# To avoid a circular dependency only use opencv if opencv itself does +# not depend on ffmpeg. +ifeq ($(BR2_PACKAGE_OPENCV_LIB_IMGPROC)x$(BR2_PACKAGE_OPENCV_WITH_FFMPEG),yx) +FFMPEG_CONF_OPTS += --enable-libopencv +FFMPEG_DEPENDENCIES += opencv +else ifeq ($(BR2_PACKAGE_OPENCV3_LIB_IMGPROC)x$(BR2_PACKAGE_OPENCV3_WITH_FFMPEG),yx) +FFMPEG_CONF_OPTS += --enable-libopencv +FFMPEG_DEPENDENCIES += opencv3 +else +FFMPEG_CONF_OPTS += --disable-libopencv +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +FFMPEG_CONF_OPTS += --enable-libopus +FFMPEG_DEPENDENCIES += opus +else +FFMPEG_CONF_OPTS += --disable-libopus +endif + +ifeq ($(BR2_PACKAGE_LIBVPX),y) +FFMPEG_CONF_OPTS += --enable-libvpx +FFMPEG_DEPENDENCIES += libvpx +else +FFMPEG_CONF_OPTS += --disable-libvpx +endif + +ifeq ($(BR2_PACKAGE_LIBASS),y) +FFMPEG_CONF_OPTS += --enable-libass +FFMPEG_DEPENDENCIES += libass +else +FFMPEG_CONF_OPTS += --disable-libass +endif + +ifeq ($(BR2_PACKAGE_LIBBLURAY),y) +FFMPEG_CONF_OPTS += --enable-libbluray +FFMPEG_DEPENDENCIES += libbluray +else +FFMPEG_CONF_OPTS += --disable-libbluray +endif + +ifeq ($(BR2_PACKAGE_RTMPDUMP),y) +FFMPEG_CONF_OPTS += --enable-librtmp +FFMPEG_DEPENDENCIES += rtmpdump +else +FFMPEG_CONF_OPTS += --disable-librtmp +endif + +ifeq ($(BR2_PACKAGE_LAME),y) +FFMPEG_CONF_OPTS += --enable-libmp3lame +FFMPEG_DEPENDENCIES += lame +else +FFMPEG_CONF_OPTS += --disable-libmp3lame +endif + +ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) +FFMPEG_CONF_OPTS += --enable-libmodplug +FFMPEG_DEPENDENCIES += libmodplug +else +FFMPEG_CONF_OPTS += --disable-libmodplug +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +FFMPEG_CONF_OPTS += --enable-libspeex +FFMPEG_DEPENDENCIES += speex +else +FFMPEG_CONF_OPTS += --disable-libspeex +endif + +ifeq ($(BR2_PACKAGE_LIBTHEORA),y) +FFMPEG_CONF_OPTS += --enable-libtheora +FFMPEG_DEPENDENCIES += libtheora +else +FFMPEG_CONF_OPTS += --disable-libtheora +endif + +ifeq ($(BR2_PACKAGE_WAVPACK),y) +FFMPEG_CONF_OPTS += --enable-libwavpack +FFMPEG_DEPENDENCIES += wavpack +else +FFMPEG_CONF_OPTS += --disable-libwavpack +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +FFMPEG_CONF_OPTS += --enable-iconv +FFMPEG_DEPENDENCIES += libiconv +else +FFMPEG_CONF_OPTS += --disable-iconv +endif + +# ffmpeg freetype support require fenv.h which is only +# available/working on glibc. +# The microblaze variant doesn't provide the needed exceptions +ifeq ($(BR2_PACKAGE_FREETYPE)$(BR2_TOOLCHAIN_USES_GLIBC)x$(BR2_microblaze),yyx) +FFMPEG_CONF_OPTS += --enable-libfreetype +FFMPEG_DEPENDENCIES += freetype +else +FFMPEG_CONF_OPTS += --disable-libfreetype +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +FFMPEG_CONF_OPTS += --enable-fontconfig +FFMPEG_DEPENDENCIES += fontconfig +else +FFMPEG_CONF_OPTS += --disable-fontconfig +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +FFMPEG_CONF_OPTS += --enable-libopenjpeg +FFMPEG_DEPENDENCIES += openjpeg +else +FFMPEG_CONF_OPTS += --disable-libopenjpeg +endif + +ifeq ($(BR2_PACKAGE_X264)$(BR2_PACKAGE_FFMPEG_GPL),yy) +FFMPEG_CONF_OPTS += --enable-libx264 +FFMPEG_DEPENDENCIES += x264 +else +FFMPEG_CONF_OPTS += --disable-libx264 +endif + +ifeq ($(BR2_PACKAGE_X265)$(BR2_PACKAGE_FFMPEG_GPL),yy) +FFMPEG_CONF_OPTS += --enable-libx265 +FFMPEG_DEPENDENCIES += x265 +else +FFMPEG_CONF_OPTS += --disable-libx265 +endif + +ifeq ($(BR2_X86_CPU_HAS_MMX),y) +FFMPEG_CONF_OPTS += --enable-x86asm +FFMPEG_DEPENDENCIES += host-nasm +else +FFMPEG_CONF_OPTS += --disable-x86asm +FFMPEG_CONF_OPTS += --disable-mmx +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +FFMPEG_CONF_OPTS += --enable-sse +else +FFMPEG_CONF_OPTS += --disable-sse +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +FFMPEG_CONF_OPTS += --enable-sse2 +else +FFMPEG_CONF_OPTS += --disable-sse2 +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE3),y) +FFMPEG_CONF_OPTS += --enable-sse3 +else +FFMPEG_CONF_OPTS += --disable-sse3 +endif + +ifeq ($(BR2_X86_CPU_HAS_SSSE3),y) +FFMPEG_CONF_OPTS += --enable-ssse3 +else +FFMPEG_CONF_OPTS += --disable-ssse3 +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE4),y) +FFMPEG_CONF_OPTS += --enable-sse4 +else +FFMPEG_CONF_OPTS += --disable-sse4 +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE42),y) +FFMPEG_CONF_OPTS += --enable-sse42 +else +FFMPEG_CONF_OPTS += --disable-sse42 +endif + +ifeq ($(BR2_X86_CPU_HAS_AVX),y) +FFMPEG_CONF_OPTS += --enable-avx +else +FFMPEG_CONF_OPTS += --disable-avx +endif + +ifeq ($(BR2_X86_CPU_HAS_AVX2),y) +FFMPEG_CONF_OPTS += --enable-avx2 +else +FFMPEG_CONF_OPTS += --disable-avx2 +endif + +# Explicitly disable everything that doesn't match for ARM +# FFMPEG "autodetects" by compiling an extended instruction via AS +# This works on compilers that aren't built for generic by default +ifeq ($(BR2_ARM_CPU_ARMV4),y) +FFMPEG_CONF_OPTS += --disable-armv5te +endif +ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y) +FFMPEG_CONF_OPTS += --enable-armv6 +else +FFMPEG_CONF_OPTS += --disable-armv6 --disable-armv6t2 +endif +ifeq ($(BR2_ARM_CPU_HAS_VFPV2),y) +FFMPEG_CONF_OPTS += --enable-vfp +else +FFMPEG_CONF_OPTS += --disable-vfp +endif +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +FFMPEG_CONF_OPTS += --enable-neon +else ifeq ($(BR2_aarch64),y) +FFMPEG_CONF_OPTS += --enable-neon +else +FFMPEG_CONF_OPTS += --disable-neon +endif + +ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) +ifeq ($(BR2_MIPS_SOFT_FLOAT),y) +FFMPEG_CONF_OPTS += --disable-mipsfpu +else +FFMPEG_CONF_OPTS += --enable-mipsfpu +endif +endif # MIPS + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +FFMPEG_CONF_OPTS += --enable-altivec +else +FFMPEG_CONF_OPTS += --disable-altivec +endif + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +FFMPEG_CONF_OPTS += --extra-libs=-latomic +endif + +ifeq ($(BR2_STATIC_LIBS),) +FFMPEG_CONF_OPTS += --enable-pic +else +FFMPEG_CONF_OPTS += --disable-pic +endif + +# Default to --cpu=generic for MIPS architecture, in order to avoid a +# warning from ffmpeg's configure script. +ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) +FFMPEG_CONF_OPTS += --cpu=generic +else ifneq ($(call qstrip,$(BR2_GCC_TARGET_CPU)),) +FFMPEG_CONF_OPTS += --cpu=$(BR2_GCC_TARGET_CPU) +else ifneq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),) +FFMPEG_CONF_OPTS += --cpu=$(BR2_GCC_TARGET_ARCH) +endif + +FFMPEG_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF)) + +# Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others +define FFMPEG_CONFIGURE_CMDS + (cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + $(FFMPEG_CONF_ENV) \ + ./configure \ + --enable-cross-compile \ + --cross-prefix=$(TARGET_CROSS) \ + --sysroot=$(STAGING_DIR) \ + --host-cc="$(HOSTCC)" \ + --arch=$(BR2_ARCH) \ + --target-os="linux" \ + --disable-stripping \ + --pkg-config="$(PKG_CONFIG_HOST_BINARY)" \ + $(SHARED_STATIC_LIBS_OPTS) \ + $(FFMPEG_CONF_OPTS) \ + ) +endef + +define FFMPEG_REMOVE_EXAMPLE_SRC_FILES + rm -rf $(TARGET_DIR)/usr/share/ffmpeg/examples +endef +FFMPEG_POST_INSTALL_TARGET_HOOKS += FFMPEG_REMOVE_EXAMPLE_SRC_FILES + +$(eval $(autotools-package)) diff --git a/buildroot/package/fftw/Config.in b/buildroot/package/fftw/Config.in new file mode 100644 index 0000000..d51f8f3 --- /dev/null +++ b/buildroot/package/fftw/Config.in @@ -0,0 +1,78 @@ +config BR2_PACKAGE_FFTW + bool "fftw" + help + Library for computing Fast Fourier Transforms. + + This library computes Fast Fourier Transforms (FFT) in one + or more dimensions. It is extremely fast. This package + contains the shared library version of the fftw libraries in + double precision. + + http://www.fftw.org + +if BR2_PACKAGE_FFTW + +config BR2_PACKAGE_FFTW_USE_SSE + bool + +config BR2_PACKAGE_FFTW_USE_SSE2 + bool + +config BR2_PACKAGE_FFTW_USE_NEON + bool + +choice + prompt "fftw precision" + default BR2_PACKAGE_FFTW_PRECISION_DOUBLE + help + Selects fftw precision + +config BR2_PACKAGE_FFTW_PRECISION_SINGLE + bool "single" + select BR2_PACKAGE_FFTW_USE_SSE if BR2_X86_CPU_HAS_SSE + select BR2_PACKAGE_FFTW_USE_SSE2 if BR2_X86_CPU_HAS_SSE2 + select BR2_PACKAGE_FFTW_USE_NEON if BR2_ARM_CPU_HAS_NEON && !BR2_ARM_SOFT_FLOAT + help + Compile fftw in single precision, i.e. use 'float' for + floating point type. + +config BR2_PACKAGE_FFTW_PRECISION_DOUBLE + bool "double" + select BR2_PACKAGE_FFTW_USE_SSE2 if BR2_X86_CPU_HAS_SSE2 + help + Compile fftw in double precision (the default), i.e. use + 'double' for floating point type. + +config BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE + bool "long double" + # long-double precision require long-double trigonometric routines + depends on !(BR2_TOOLCHAIN_BUILDROOT_UCLIBC && \ + (BR2_arm || BR2_mips || BR2_mipsel)) + help + Compile fftw in long double precision, i.e. use 'long double' + for floating point type. + +config BR2_PACKAGE_FFTW_PRECISION_QUAD + bool "quad" + # quad-precision needs to have a gcc with libquadmath + depends on (BR2_i386 || BR2_x86_64) && BR2_USE_WCHAR + help + Compile fftw in quadruple precision, i.e. use '__float128' for + floating point type. + +endchoice + +config BR2_PACKAGE_FFTW_FAST + bool "optimise for speed over accuracy" + help + Optimise for fast math functions, at the expense of accuracy. + + Say 'y' if you need speed and can live with inaccuracies in + the results. Say 'n' (the default) if accuracy is of utmost + importance. + + This basically uses gcc's -Ofast optimisation level, which in + turn is basically using gcc's -ffast-math. See the gcc manual + for what this means. + +endif diff --git a/buildroot/package/fftw/fftw.hash b/buildroot/package/fftw/fftw.hash new file mode 100644 index 0000000..faf4b90 --- /dev/null +++ b/buildroot/package/fftw/fftw.hash @@ -0,0 +1,5 @@ +# From http://www.fftw.org/fftw-3.3.7.tar.gz.md5sum +md5 0d5915d7d39b3253c1cc05030d79ac47 fftw-3.3.7.tar.gz +# Locally computed +sha256 3b609b7feba5230e8f6dd8d245ddbefac324c5a6ae4186947670d9ac2cd25573 fftw-3.3.7.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/buildroot/package/fftw/fftw.mk b/buildroot/package/fftw/fftw.mk new file mode 100644 index 0000000..b3aa4b6 --- /dev/null +++ b/buildroot/package/fftw/fftw.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# fftw +# +################################################################################ + +FFTW_VERSION = 3.3.7 +FFTW_SITE = http://www.fftw.org +FFTW_INSTALL_STAGING = YES +FFTW_LICENSE = GPL-2.0+ +FFTW_LICENSE_FILES = COPYING + +# fortran support only enables generation and installation of fortran sources +ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y) +FFTW_CONF_OPTS += --enable-fortran +FFTW_CONF_ENV += FLIBS="-lgfortran -lm" +else +FFTW_CONF_OPTS += --disable-fortran +endif + +FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_PRECISION_SINGLE),--enable,--disable)-single +FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE),--enable,--disable)-long-double +FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_PRECISION_QUAD),--enable,--disable)-quad-precision + +FFTW_CFLAGS = $(TARGET_CFLAGS) +ifeq ($(BR2_PACKAGE_FFTW_FAST),y) +FFTW_CFLAGS += -O3 -ffast-math +endif + +# x86 optimisations +FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_USE_SSE),--enable,--disable)-sse +FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_USE_SSE2),--enable,--disable)-sse2 + +# ARM optimisations +FFTW_CONF_OPTS += $(if $(BR2_PACKAGE_FFTW_USE_NEON),--enable,--disable)-neon +FFTW_CFLAGS += $(if $(BR2_PACKAGE_FFTW_USE_NEON),-mfpu=neon) + +# Generic optimisations +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +FFTW_CONF_OPTS += --enable-threads +FFTW_CONF_OPTS += $(if $(BR2_GCC_ENABLE_OPENMP),--without,--with)-combined-threads +else +FFTW_CONF_OPTS += --disable-threads +endif +FFTW_CONF_OPTS += $(if $(BR2_GCC_ENABLE_OPENMP),--enable,--disable)-openmp + +FFTW_CONF_OPTS += CFLAGS="$(FFTW_CFLAGS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/ficl/0001-fix-Makefile.patch b/buildroot/package/ficl/0001-fix-Makefile.patch new file mode 100644 index 0000000..d5a25c4 --- /dev/null +++ b/buildroot/package/ficl/0001-fix-Makefile.patch @@ -0,0 +1,47 @@ +fix dependency in Makefiles + +there is no longer a sysdep.h file. + +Signed-off-by: Francois Perrad + +diff --git a/Makefile b/Makefile +index 976d00a..7f73c44 100644 +--- a/Makefile ++++ b/Makefile +@@ -29,7 +29,7 @@ libficl.so.$(MAJOR).$(MINOR): $(OBJECTS) + -o libficl.so.$(MAJOR).$(MINOR) $(OBJECTS) + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so + +-main: main.o ficl.h sysdep.h libficl.so.$(MAJOR).$(MINOR) ++main: main.o ficl.h libficl.so.$(MAJOR).$(MINOR) + $(CC) $(CFLAGS) $(LDFLAGS) main.o -o main -L. -lficl -lm + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so.$(MAJOR) + +diff --git a/Makefile.ansi b/Makefile.ansi +index e510fcd..170e6eb 100644 +--- a/Makefile.ansi ++++ b/Makefile.ansi +@@ -29,7 +29,7 @@ libficl.so.$(MAJOR).$(MINOR): $(OBJECTS) + -o libficl.so.$(MAJOR).$(MINOR) $(OBJECTS) + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so + +-main: main.o ficl.h sysdep.h libficl.so.$(MAJOR).$(MINOR) ++main: main.o ficl.h libficl.so.$(MAJOR).$(MINOR) + $(CC) main.o -o main -L. -lficl -lm + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so.$(MAJOR) + +diff --git a/Makefile.linux b/Makefile.linux +index d447e7e..7f2cdfe 100644 +--- a/Makefile.linux ++++ b/Makefile.linux +@@ -29,7 +29,7 @@ libficl.so.$(MAJOR).$(MINOR): $(OBJECTS) + -o libficl.so.$(MAJOR).$(MINOR) $(OBJECTS) + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so + +-main: main.o ficl.h sysdep.h libficl.so.$(MAJOR).$(MINOR) ++main: main.o ficl.h libficl.so.$(MAJOR).$(MINOR) + $(CC) main.o -o main -L. -lficl -lm + ln -sf libficl.so.$(MAJOR).$(MINOR) libficl.so.$(MAJOR) + +-- + diff --git a/buildroot/package/ficl/Config.in b/buildroot/package/ficl/Config.in new file mode 100644 index 0000000..4d9ab4a --- /dev/null +++ b/buildroot/package/ficl/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FICL + bool "ficl" + help + Ficl is a programming language interpreter designed to be + embedded into other systems as a command, macro, and + development prototyping language. + Ficl is an acronym for "Forth Inspired Command Language". + + http://ficl.sourceforge.net diff --git a/buildroot/package/ficl/ficl.hash b/buildroot/package/ficl/ficl.hash new file mode 100644 index 0000000..4bfbbd0 --- /dev/null +++ b/buildroot/package/ficl/ficl.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 4daf74f3d3d6f8b86ea7cb47bc24931d50b4809b50ba34ca32e0ca1e972bd3a3 ficl-4.1.0.tar.gz diff --git a/buildroot/package/ficl/ficl.mk b/buildroot/package/ficl/ficl.mk new file mode 100644 index 0000000..af900fa --- /dev/null +++ b/buildroot/package/ficl/ficl.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# ficl +# +################################################################################ + +FICL_VERSION_MAJOR = 4.1 +FICL_VERSION = $(FICL_VERSION_MAJOR).0 +FICL_SITE = http://downloads.sourceforge.net/project/ficl/ficl-all/ficl$(FICL_VERSION_MAJOR) +FICL_LICENSE = BSD-2-Clause +FICL_LICENSE_FILES = ReadMe.txt +FICL_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +FICL_BUILD_TARGETS += ficl +define FICL_INSTALL_STATIC_BIN + $(INSTALL) -D -m 0755 $(@D)/ficl $(TARGET_DIR)/usr/bin/ficl +endef +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +FICL_BUILD_TARGETS += libficl.a +define FICL_INSTALL_STATIC_LIB + $(INSTALL) -D -m 0644 $(@D)/libficl.a $(STAGING_DIR)/usr/lib/libficl.a +endef +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +FICL_BUILD_TARGETS += main libficl.so.$(FICL_VERSION) +define FICL_INSTALL_SHARED_BIN + $(INSTALL) -D -m 0755 $(@D)/main $(TARGET_DIR)/usr/bin/ficl +endef +define FICL_INSTALL_SHARED_LIB + $(INSTALL) -D -m 0755 $(@D)/libficl.so.$(FICL_VERSION) $(1)/usr/lib/libficl.so.$(FICL_VERSION) + ln -sf libficl.so.$(FICL_VERSION) $(1)/usr/lib/libficl.so.4 + ln -sf libficl.so.$(FICL_VERSION) $(1)/usr/lib/libficl.so +endef +endif + +define FICL_BUILD_CMDS + $(MAKE) -C $(@D) -f Makefile.linux $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -fgnu89-inline -fPIC -I. -Dlinux" CPPFLAGS="" $(FICL_BUILD_TARGETS) +endef + +define FICL_INSTALL_STAGING_CMDS + $(FICL_INSTALL_STATIC_LIB) + $(call FICL_INSTALL_SHARED_LIB,$(STAGING_DIR)) + $(INSTALL) -D -m 0644 $(@D)/ficl.h $(STAGING_DIR)/usr/include/ficl.h + $(INSTALL) -D -m 0644 $(@D)/ficllocal.h $(STAGING_DIR)/usr/include/ficllocal.h + $(INSTALL) -D -m 0644 $(@D)/ficlplatform/unix.h $(STAGING_DIR)/usr/include/ficlplatform/unix.h +endef + +define FICL_INSTALL_TARGET_CMDS + $(FICL_INSTALL_STATIC_BIN) + $(FICL_INSTALL_SHARED_BIN) + $(call FICL_INSTALL_SHARED_LIB,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/file/0001-Avoid-reading-past-the-end-of-buffer-Rui-Reis.patch b/buildroot/package/file/0001-Avoid-reading-past-the-end-of-buffer-Rui-Reis.patch new file mode 100644 index 0000000..daff866 --- /dev/null +++ b/buildroot/package/file/0001-Avoid-reading-past-the-end-of-buffer-Rui-Reis.patch @@ -0,0 +1,30 @@ +From a642587a9c9e2dd7feacdf513c3643ce26ad3c22 Mon Sep 17 00:00:00 2001 +From: Christos Zoulas +Date: Sat, 9 Jun 2018 16:00:06 +0000 +Subject: [PATCH] Avoid reading past the end of buffer (Rui Reis) + +[baruch: drop file version string update hunk] +Signed-off-by: Baruch Siach +--- +Upstream status: commit a642587a9c9 in github mirror + + src/readelf.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/readelf.c b/src/readelf.c +index 79c83f9f5048..1f41b46113c3 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -842,7 +842,8 @@ do_core_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type, + + cname = (unsigned char *) + &nbuf[doff + prpsoffsets(i)]; +- for (cp = cname; *cp && isprint(*cp); cp++) ++ for (cp = cname; cp < nbuf + size && *cp ++ && isprint(*cp); cp++) + continue; + /* + * Linux apparently appends a space at the end +-- +2.17.1 + diff --git a/buildroot/package/file/Config.in b/buildroot/package/file/Config.in new file mode 100644 index 0000000..13934b2 --- /dev/null +++ b/buildroot/package/file/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_FILE + bool "file" + select BR2_PACKAGE_ZLIB + help + Program to identify a file's format by scanning binary data + for known patterns. + + http://www.darwinsys.com/file/ diff --git a/buildroot/package/file/file.hash b/buildroot/package/file/file.hash new file mode 100644 index 0000000..a6b40be --- /dev/null +++ b/buildroot/package/file/file.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 1c52c8c3d271cd898d5511c36a68059cda94036111ab293f01f83c3525b737c6 file-5.33.tar.gz +sha256 3c0ad13c36f891a9b4f951e59eb2fc108065a46f849697cc6fd3cdb41cc23a3d COPYING +sha256 d98ee4d8d95e7d021a5dfc41f137ecc3b624a7b98e8bd793130202d12a21ed57 src/mygetopt.h +sha256 85e358d575ad4ac5b38b623a25b24246ccff3c7e680d930c0a9ff5228fe434b6 src/vasprintf.c diff --git a/buildroot/package/file/file.mk b/buildroot/package/file/file.mk new file mode 100644 index 0000000..422e29b --- /dev/null +++ b/buildroot/package/file/file.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# file +# +################################################################################ + +FILE_VERSION = 5.33 +FILE_SITE = ftp://ftp.astron.com/pub/file +FILE_DEPENDENCIES = host-file zlib +HOST_FILE_DEPENDENCIES = host-zlib +FILE_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +FILE_INSTALL_STAGING = YES +FILE_LICENSE = BSD-2-Clause, BSD-4-Clause (one file), BSD-3-Clause (one file) +FILE_LICENSE_FILES = COPYING src/mygetopt.h src/vasprintf.c + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +FILE_CONF_OPTS += --enable-libseccomp +FILE_DEPENDENCIES += libseccomp +else +FILE_CONF_OPTS += --disable-libseccomp +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/filemq/Config.in b/buildroot/package/filemq/Config.in new file mode 100644 index 0000000..b4720c1 --- /dev/null +++ b/buildroot/package/filemq/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_FILEMQ + bool "filemq" + depends on BR2_INSTALL_LIBSTDCPP # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on BR2_USE_MMU # czmq + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_CZMQ + select BR2_PACKAGE_ZEROMQ + help + FileMQ is a publish-subscribe file service based on 0MQ. + + http://github.com/zeromq/filemq + +comment "filemq needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/buildroot/package/filemq/filemq.hash b/buildroot/package/filemq/filemq.hash new file mode 100644 index 0000000..d1df1ff --- /dev/null +++ b/buildroot/package/filemq/filemq.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f3764e1adacfbf7fd09fb9c553e796a80d8159f1ace689fb68307afbc1746d4c filemq-8940f34e0f1c8f25c1c693ed8db069f58fbc5ad0.tar.gz diff --git a/buildroot/package/filemq/filemq.mk b/buildroot/package/filemq/filemq.mk new file mode 100644 index 0000000..75d8bd9 --- /dev/null +++ b/buildroot/package/filemq/filemq.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# filemq +# +################################################################################ + +FILEMQ_VERSION = 8940f34e0f1c8f25c1c693ed8db069f58fbc5ad0 +FILEMQ_SITE = $(call github,zeromq,filemq,$(FILEMQ_VERSION)) + +FILEMQ_AUTORECONF = YES +FILEMQ_CONF_ENV = filemq_have_asciidoc=no +FILEMQ_INSTALL_STAGING = YES +FILEMQ_DEPENDENCIES = czmq openssl zeromq +FILEMQ_LICENSE = MPL-2.0 +FILEMQ_LICENSE_FILES = LICENSE + +define FILEMQ_CREATE_CONFIG_DIR + mkdir -p $(@D)/config +endef + +FILEMQ_POST_PATCH_HOOKS += FILEMQ_CREATE_CONFIG_DIR + +$(eval $(autotools-package)) diff --git a/buildroot/package/findutils/Config.in b/buildroot/package/findutils/Config.in new file mode 100644 index 0000000..b0eee5a --- /dev/null +++ b/buildroot/package/findutils/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_FINDUTILS + bool "findutils" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Basic directory searching utilities. Provides the + common 'find', 'xargs', 'locate', and 'updatedb' binaries. + + http://www.gnu.org/software/findutils/findutils.html + +comment "findutils needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/findutils/findutils.hash b/buildroot/package/findutils/findutils.hash new file mode 100644 index 0000000..d5c5519 --- /dev/null +++ b/buildroot/package/findutils/findutils.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 ded4c9f73731cd48fec3b6bdaccce896473b6d8e337e9612e16cf1431bb1169d findutils-4.6.0.tar.gz diff --git a/buildroot/package/findutils/findutils.mk b/buildroot/package/findutils/findutils.mk new file mode 100644 index 0000000..6ca0062 --- /dev/null +++ b/buildroot/package/findutils/findutils.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# findutils +# +################################################################################ + +FINDUTILS_VERSION = 4.6.0 +FINDUTILS_SITE = $(BR2_GNU_MIRROR)/findutils +FINDUTILS_LICENSE = GPL-3.0+ +FINDUTILS_LICENSE_FILES = COPYING +FINDUTILS_CONF_ENV = \ + gl_cv_func_stdin=yes \ + ac_cv_func_working_mktime=yes \ + gl_cv_func_wcwidth_works=yes + +$(eval $(autotools-package)) diff --git a/buildroot/package/fio/Config.in b/buildroot/package/fio/Config.in new file mode 100644 index 0000000..8da227d --- /dev/null +++ b/buildroot/package/fio/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_FIO + bool "fio" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_THREADS + # fio uses fallocate() which becomes fallocate64() while compiling with + # largefile support, but fallocate64() is not available on nios2 + depends on !BR2_nios2 + help + fio is an I/O tool meant to be used both for benchmark + and stress/hardware verification. + + http://git.kernel.dk/?p=fio.git;a=summary + +comment "fio needs a toolchain w/ dynamic library, threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_nios2 + depends on BR2_USE_MMU diff --git a/buildroot/package/fio/fio.hash b/buildroot/package/fio/fio.hash new file mode 100644 index 0000000..7eb0814 --- /dev/null +++ b/buildroot/package/fio/fio.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 1952db4d534221e6e8454f851dfcc38328b0ed4a3f499ea25a51ca2b5ccc8136 fio-fio-2.20.tar.gz diff --git a/buildroot/package/fio/fio.mk b/buildroot/package/fio/fio.mk new file mode 100644 index 0000000..c109f07 --- /dev/null +++ b/buildroot/package/fio/fio.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# fio +# +################################################################################ + +FIO_VERSION = fio-2.20 +FIO_SITE = git://git.kernel.dk/fio.git +FIO_LICENSE = GPL-2.0 + special obligations +FIO_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBAIO),y) +FIO_DEPENDENCIES += libaio +endif + +ifeq ($(BR2_PACKAGE_NUMACTL),y) +FIO_DEPENDENCIES += numactl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +FIO_DEPENDENCIES += zlib +endif + +define FIO_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) ./configure --cc="$(TARGET_CC)" --extra-cflags="$(TARGET_CFLAGS)") +endef + +define FIO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define FIO_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/fio $(TARGET_DIR)/usr/bin/fio +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fis/0001-checksum.patch b/buildroot/package/fis/0001-checksum.patch new file mode 100644 index 0000000..a6325eb --- /dev/null +++ b/buildroot/package/fis/0001-checksum.patch @@ -0,0 +1,274 @@ +diff -uN fis.orig/crc.c fis/crc.c +--- fis.orig/crc.c 1970-01-01 10:00:00.000000000 +1000 ++++ fis/crc.c 2008-04-01 11:39:13.000000000 +1100 +@@ -0,0 +1,88 @@ ++/* ++ * crc.c ++ * ++ * $Id: crc.c,v 1.1 2006/02/13 09:58:08 andrzej Exp $ ++ * ++ * Gary S. Brown's CRC ++ * Code based on Gary S. Brown CRC (1986). ++ * Generation polynomial is: ++ * X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 ++ * ++ * Copyright (C) 2006 Ekiert sp z o.o. ++ * Author: Andrzej Ekiert ++ * ++ * 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. ++ */ ++ ++#include ++ ++#include "crc.h" ++ ++static const uint32_t crc32_tab[] = { ++ 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, ++ 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, ++ 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, ++ 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, ++ 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, ++ 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, ++ 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, ++ 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, ++ 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, ++ 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, ++ 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, ++ 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, ++ 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, ++ 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, ++ 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, ++ 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, ++ 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, ++ 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, ++ 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, ++ 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, ++ 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, ++ 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, ++ 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, ++ 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, ++ 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, ++ 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, ++ 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, ++ 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, ++ 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, ++ 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, ++ 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, ++ 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, ++ 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, ++ 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, ++ 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, ++ 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, ++ 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, ++ 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, ++ 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, ++ 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, ++ 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, ++ 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, ++ 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, ++ 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, ++ 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, ++ 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, ++ 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, ++ 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, ++ 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, ++ 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, ++ 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, ++ 0x2d02ef8dL ++ }; ++ ++uint32_t crc32(uint8_t *s, uint32_t len) ++{ ++ uint32_t i, val = 0; ++ ++ for (i = 0; i < len; i++) { ++ val = crc32_tab[(val^s[i]) & 0xff] ^ (val >> 8); ++ } ++ return val; ++} ++ +diff -uN fis.orig/crc.h fis/crc.h +--- fis.orig/crc.h 1970-01-01 10:00:00.000000000 +1000 ++++ fis/crc.h 2008-04-01 11:39:13.000000000 +1100 +@@ -0,0 +1,25 @@ ++/* ++ * crc.h ++ * ++ * $Id: crc.h,v 1.1 2006/02/13 09:58:08 andrzej Exp $ ++ * ++ * Gary S. Brown's CRC - header. ++ * ++ * Copyright (C) 2006 Ekiert sp z o.o. ++ * Author: Andrzej Ekiert ++ * ++ * 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. ++ */ ++ ++#ifndef CRC_H ++#define CRC_H ++ ++#include ++ ++uint32_t crc32(uint8_t *s, uint32_t len); ++ ++#endif //CRC_H ++ +diff -uN fis.orig/fis.c fis/fis.c +--- fis.orig/fis.c 2007-05-03 06:42:51.000000000 +1000 ++++ fis/fis.c 2008-04-01 11:52:11.000000000 +1100 +@@ -30,6 +30,7 @@ + #include + #include + ++#include "crc.h" + + // Report an error and terminate: + +@@ -141,8 +142,8 @@ + + static void dump_desc(FILE* f, const struct fis_image_desc* d) + { +- fprintf(f,"%16s: addr = 0x%08x, size = 0x%08x\n", +- d->name, d->flash_base, d->size); ++ fprintf(f,"%16s: flash addr = 0x%08x, mem addr = 0x%08x, size = 0x%08x, checksum = 0x%08x\n", ++ d->name, d->flash_base, d->mem_base, d->size, d->file_cksum); + for (unsigned int i=0; i<(sizeof(d->skips)/4); ++i) { + if (d->skips[i]==0x736b6970 || d->skips[i]==0x70696b73) { // "skip" + uint32_t offset = d->skips[i+1]; +@@ -332,6 +333,7 @@ + d->size = swap_end_32(d->size); + d->entry_point = swap_end_32(d->entry_point); + d->data_length = swap_end_32(d->data_length); ++ d->file_cksum = swap_end_32(d->file_cksum); + for (unsigned int i=0; i<(sizeof(d->skips)/4); ++i) { + d->skips[i] = swap_end_32(d->skips[i]); + } +@@ -446,19 +448,25 @@ + char* arg=argv[i]; + if (strcmp(arg,"-l")==0) { + if (i==argc-1) { +- fatal("argumnet missing for -l"); ++ fatal("argument missing for -l"); + } + ++i; + d->size = str_to_int_maybe_hex(argv[i]); + } else if (strcmp(arg,"-f")==0) { + if (i==argc-1) { +- fatal("argumnet missing for -f"); ++ fatal("argument missing for -f"); + } + ++i; + d->flash_base = str_to_int_maybe_hex(argv[i]); ++ } else if (strcmp(arg,"-m")==0) { ++ if (i==argc-1) { ++ fatal("argument missing for -m"); ++ } ++ ++i; ++ d->mem_base = str_to_int_maybe_hex(argv[i]); + } else if (strcmp(arg,"-n")==0) { + if (i==argc-1) { +- fatal("argumnet missing for -n"); ++ fatal("argument missing for -n"); + } + ++i; + char* name = argv[i]; +@@ -499,6 +507,66 @@ + save_dir(fd,offset,size,swap_endianness,dir); + } + ++static void fis_checksum(const char* device, int offset, int size, bool swap_endianness, ++ int argc, char* argv[]) ++{ ++ char* name = NULL; ++ char* filename = NULL; ++ ++ for (int i=0; i=16) { ++ fatal("name too long, max 16 chars including terminating null"); ++ } ++ } else { ++ fputs("Unrecognised option '",stderr); ++ fputs(arg,stderr); ++ fputs("'\n",stderr); ++ exit(1); ++ } ++ } ++ ++ if (name == NULL || filename == NULL) ++ fatal("filename and partition name must be specified"); ++ ++ int fd; ++ char *buf; ++ struct stat stat_buf; ++ uint32_t crc; ++ ++ CHECK(fd=open(filename,O_RDONLY),-1); ++ CHECK(stat(filename, &stat_buf),-1); ++ buf = (char*)chk_malloc(stat_buf.st_size); ++ CHECK(read(fd,buf,stat_buf.st_size),-1); ++ crc = crc32(buf,stat_buf.st_size); ++ close(fd); ++ free(buf); ++ ++ CHECK(fd=open(device,O_RDWR),-1); ++ dir_t dir; ++ load_dir(fd,offset,&size,swap_endianness,&dir); ++ iter_t after = NULL; ++ FOR_EACH_DIR_ENTRY(dir,i) { ++ if (strcmp(get(i)->name, name) == 0) { ++ get(i)->file_cksum = crc; ++ get(i)->data_length = stat_buf.st_size; ++ break; ++ } ++ } ++ save_dir(fd,offset,size,swap_endianness,dir); ++} + + static void fis_delete(const char* device, int offset, int size, bool swap_endianness, + char* name) +@@ -526,8 +594,9 @@ + fputs("Usage:\n" + " fis [options] list\n" + " fis [options] init\n" +- " fis [options] create -f address -l size -n name\n" ++ " fis [options] create -f address -l size -n name [-m memory_address]\n" + " fis [options] delete name\n" ++ " fis [options] checksum -f filename -n name\n" + "Options:\n" + " -d device specify /dev/mtd* device containing directory\n" + " -o offset specify offset into device of start of directory\n" +@@ -597,9 +666,14 @@ + fis_create(device,offset,size,swap_endianness, + argc-i-1,&argv[i+1]); + break; ++ } else if (strcmp(arg,"checksum")==0) { ++ check_dev(device); ++ fis_checksum(device,offset,size,swap_endianness, ++ argc-i-1,&argv[i+1]); ++ break; + } else if (strcmp(arg,"delete")==0) { + if (i!=argc-2) { +- fatal("Exactly one argumnet required after 'delete'"); ++ fatal("Exactly one argument required after 'delete'"); + } + ++i; + char* name = argv[i]; diff --git a/buildroot/package/fis/0003-list_output.patch b/buildroot/package/fis/0003-list_output.patch new file mode 100644 index 0000000..6c1e4eb --- /dev/null +++ b/buildroot/package/fis/0003-list_output.patch @@ -0,0 +1,21 @@ +--- fis.orig/fis.c 2010-05-12 10:22:10.000000000 -0700 ++++ fis/fis.c 2010-05-12 10:19:24.000000000 -0700 +@@ -142,8 +142,8 @@ + + static void dump_desc(FILE* f, const struct fis_image_desc* d) + { +- fprintf(f,"%16s: flash addr = 0x%08x, mem addr = 0x%08x, size = 0x%08x, checksum = 0x%08x\n", +- d->name, d->flash_base, d->mem_base, d->size, d->file_cksum); ++ fprintf(f,"%-16s 0x%08x 0x%08x 0x%08x 0x%08x 0x%08x\n", ++ d->name, d->flash_base, d->mem_base, d->size, d->entry_point, d->file_cksum); + for (unsigned int i=0; i<(sizeof(d->skips)/4); ++i) { + if (d->skips[i]==0x736b6970 || d->skips[i]==0x70696b73) { // "skip" + uint32_t offset = d->skips[i+1]; +@@ -400,6 +400,7 @@ + CHECK(fd=open(device,O_RDONLY),-1); + dir_t dir; + load_dir(fd,offset,&size,swap_endianness,&dir); ++ fprintf(stdout,"Name FLASH addr Mem addr Length Entry point Checksum\n"); + FOR_EACH_DIR_ENTRY(dir,i) { + dump_desc(stdout,get(i)); + } diff --git a/buildroot/package/fis/0004-sorted_list.patch b/buildroot/package/fis/0004-sorted_list.patch new file mode 100644 index 0000000..6854977 --- /dev/null +++ b/buildroot/package/fis/0004-sorted_list.patch @@ -0,0 +1,30 @@ +--- fis.orig/fis.c 2010-05-12 11:09:22.000000000 -0700 ++++ fis/fis.c 2010-05-12 11:05:45.000000000 -0700 +@@ -401,9 +401,24 @@ + dir_t dir; + load_dir(fd,offset,&size,swap_endianness,&dir); + fprintf(stdout,"Name FLASH addr Mem addr Length Entry point Checksum\n"); +- FOR_EACH_DIR_ENTRY(dir,i) { +- dump_desc(stdout,get(i)); +- } ++ uint32_t last_addr = 0; ++ bool image_found; ++ do { ++ uint32_t lowest_addr = 0xffffffff; ++ iter_t index; ++ image_found = false; ++ FOR_EACH_DIR_ENTRY(dir,i) { ++ const struct fis_image_desc *d = get(i); ++ if ((d->flash_base >= last_addr) && (d->flash_base < lowest_addr)) { ++ lowest_addr = d->flash_base; ++ image_found = true; ++ index = i; ++ } ++ } ++ if (image_found) ++ dump_desc(stdout,get(index)); ++ last_addr = lowest_addr + 1; ++ } while (image_found == true); + } + + diff --git a/buildroot/package/fis/Config.in b/buildroot/package/fis/Config.in new file mode 100644 index 0000000..c5bfbb8 --- /dev/null +++ b/buildroot/package/fis/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_FIS + bool "fis" + help + fis - manipulate RedBoot partition table from Linux. diff --git a/buildroot/package/fis/fis.mk b/buildroot/package/fis/fis.mk new file mode 100644 index 0000000..6db06bf --- /dev/null +++ b/buildroot/package/fis/fis.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# fis +# +################################################################################ + +FIS_SITE = http://svn.chezphil.org/utils/trunk +FIS_SITE_METHOD = svn +FIS_VERSION = 2892 +FIS_LICENSE = GPL-2.0+ +FIS_LICENSE_FILES = fis.c + +define FIS_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) -std=c99 -o $(@D)/fis \ + $(@D)/fis.c $(@D)/crc.c $(TARGET_LDFLAGS) +endef + +define FIS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/fis $(TARGET_DIR)/sbin/fis +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/flac/0001-configure.ac-relax-linux-OS-detection.patch b/buildroot/package/flac/0001-configure.ac-relax-linux-OS-detection.patch new file mode 100644 index 0000000..baf07bc --- /dev/null +++ b/buildroot/package/flac/0001-configure.ac-relax-linux-OS-detection.patch @@ -0,0 +1,35 @@ +From 8589b44c573d4228a9df3ba7bffdfdf584e7b033 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Mon, 9 Jan 2017 21:38:29 +0100 +Subject: [PATCH] configure.ac: relax linux OS detection + +Not all linux hosts match the *-pc-linux-gnu wildcard, causing build +failures for older glibc versions where we need to link with -lrt for +clock_gettime - E.G.: + + - arm-unknown-linux-musleabihf + - powerpc-unknown-linux-gnuspe + - bfin-linux-linux-uclibc + .. + +Signed-off-by: Peter Korsgaard +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 070ab357..235d2717 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -186,7 +186,7 @@ esac + AM_CONDITIONAL(OS_IS_WINDOWS, test "x$os_is_windows" = xyes) + + case "$host" in +- *-pc-linux-gnu) ++ *-linux-*) + sys_linux=true + AC_DEFINE(FLAC__SYS_LINUX) + AH_TEMPLATE(FLAC__SYS_LINUX, [define if building for Linux]) +-- +2.11.0 + diff --git a/buildroot/package/flac/Config.in b/buildroot/package/flac/Config.in new file mode 100644 index 0000000..267acb7 --- /dev/null +++ b/buildroot/package/flac/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FLAC + bool "flac" + depends on BR2_USE_WCHAR + help + FLAC is an Open Source lossless audio codec. + + http://flac.sourceforge.net/ + +comment "flac needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/flac/flac.hash b/buildroot/package/flac/flac.hash new file mode 100644 index 0000000..7ce76f1 --- /dev/null +++ b/buildroot/package/flac/flac.hash @@ -0,0 +1,2 @@ +# From http://downloads.xiph.org/releases/flac/SHA256SUMS.txt +sha256 91cfc3ed61dc40f47f050a109b08610667d73477af6ef36dcad31c31a4a8d53f flac-1.3.2.tar.xz diff --git a/buildroot/package/flac/flac.mk b/buildroot/package/flac/flac.mk new file mode 100644 index 0000000..3448213 --- /dev/null +++ b/buildroot/package/flac/flac.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# flac +# +################################################################################ + +FLAC_VERSION = 1.3.2 +FLAC_SITE = http://downloads.xiph.org/releases/flac +FLAC_SOURCE = flac-$(FLAC_VERSION).tar.xz +FLAC_INSTALL_STAGING = YES +FLAC_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) +FLAC_LICENSE = Xiph BSD-like (libFLAC), GPL-2.0+ (tools), LGPL-2.1+ (other libraries) +FLAC_LICENSE_FILES = COPYING.Xiph COPYING.GPL COPYING.LGPL +# 0001-configure.ac-relax-linux-OS-detection.patch patches configure.ac +FLAC_AUTORECONF = YES +FLAC_CONF_OPTS = \ + --disable-cpplibs \ + --disable-xmms-plugin \ + --disable-altivec + +ifeq ($(BR2_PACKAGE_LIBOGG),y) +FLAC_CONF_OPTS += --with-ogg=$(STAGING_DIR)/usr +FLAC_DEPENDENCIES += libogg +else +FLAC_CONF_OPTS += --disable-ogg +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +FLAC_DEPENDENCIES += host-nasm +FLAC_CONF_OPTS += --enable-sse +else +FLAC_CONF_OPTS += --disable-sse +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/flann/0001-src-cpp-fix-cmake-3.11-build.patch b/buildroot/package/flann/0001-src-cpp-fix-cmake-3.11-build.patch new file mode 100644 index 0000000..b37bedc --- /dev/null +++ b/buildroot/package/flann/0001-src-cpp-fix-cmake-3.11-build.patch @@ -0,0 +1,80 @@ +From fa5ec96a94646492a3f908e12905b3e48a8e800b Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 18 Apr 2018 20:24:13 +0200 +Subject: [PATCH] src/cpp: fix cmake >= 3.11 build + +CMake < 3.11 doesn't support add_library() without any source file +(i.e add_library(foo SHARED)). But flann CMake use a trick that use +an empty string "" as source list (i.e add_library(foo SHARED "")). +This look like a bug in CMake < 3.11. + +With CMake >= 3.11, the new behaviour of add_library() break the +existing flann CMake code. + +From CMake Changelog [1]: +"add_library() and add_executable() commands can now be called without + any sources and will not complain as long as sources are added later + via the target_sources() command." + +Note: flann CMake code doesn't use target_sources() since no source file +are provided intentionally since the flann shared library is created by +linking with the flann_cpp_s static library with this line: + +target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) + +If you try to use "add_library(flann_cpp SHARED ${CPP_SOURCES})" (as it should +be normally done), the link fail due to already defined symbol. + +They are building the shared version using the static library "to speedup the +build time" [3] + +This issue is already reported upstream [2] with a proposed solution. + +Upstream status: Pending + +Fixes: +http://autobuild.buildroot.net/results/b2f/b2febfaf8c44ce477b3e4a5b9b976fd25e8d7454 + +[1] https://cmake.org/cmake/help/v3.11/release/3.11.html +[2] https://github.com/mariusmuja/flann/issues/369 +[3] https://github.com/mariusmuja/flann/commit/0fd62b43be2fbb0b8d791ee36290791224dc030c + +Signed-off-by: Romain Naour +--- + src/cpp/CMakeLists.txt | 4 ++-- + src/cpp/empty.cpp | 1 + + 2 files changed, 3 insertions(+), 2 deletions(-) + create mode 100644 src/cpp/empty.cpp + +diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt +index b44a735..a816863 100644 +--- a/src/cpp/CMakeLists.txt ++++ b/src/cpp/CMakeLists.txt +@@ -29,7 +29,7 @@ if (BUILD_CUDA_LIB) + endif() + + if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) +- add_library(flann_cpp SHARED "") ++ add_library(flann_cpp SHARED "empty.cpp") + set_target_properties(flann_cpp PROPERTIES LINKER_LANGUAGE CXX) + target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) + +@@ -85,7 +85,7 @@ if (BUILD_C_BINDINGS) + set_property(TARGET flann_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) + + if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) +- add_library(flann SHARED "") ++ add_library(flann SHARED "empty.cpp") + set_target_properties(flann PROPERTIES LINKER_LANGUAGE CXX) + target_link_libraries(flann -Wl,-whole-archive flann_s -Wl,-no-whole-archive) + else() +diff --git a/src/cpp/empty.cpp b/src/cpp/empty.cpp +new file mode 100644 +index 0000000..40a8c17 +--- /dev/null ++++ b/src/cpp/empty.cpp +@@ -0,0 +1 @@ ++/* empty */ +-- +2.14.3 + diff --git a/buildroot/package/flann/Config.in b/buildroot/package/flann/Config.in new file mode 100644 index 0000000..a2cd50c --- /dev/null +++ b/buildroot/package/flann/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_FLANN + bool "flann" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + # all gcc versions fail to build flann on Microblaze due to + # gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69401 + depends on !BR2_microblaze + help + FLANN is a library for performing fast approximate nearest + neighbor searches in high dimensional spaces. It contains a + collection of algorithms we found to work best for nearest + neighbor search and a system for automatically choosing the + best algorithm and optimum parameters depending on the + dataset. + + http://www.cs.ubc.ca/research/flann/ + +if BR2_PACKAGE_FLANN + +config BR2_PACKAGE_FLANN_EXAMPLES + bool "flann examples" + help + Build and install flann example applications. + +endif + +comment "flann needs a toolchain w/ C++, dynamic library" + depends on !BR2_microblaze + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/buildroot/package/flann/flann.hash b/buildroot/package/flann/flann.hash new file mode 100644 index 0000000..c2c41be --- /dev/null +++ b/buildroot/package/flann/flann.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b23b5f4e71139faa3bcb39e6bbcc76967fbaf308c4ee9d4f5bfbeceaa76cc5d3 flann-1.9.1.tar.gz diff --git a/buildroot/package/flann/flann.mk b/buildroot/package/flann/flann.mk new file mode 100644 index 0000000..ef61815 --- /dev/null +++ b/buildroot/package/flann/flann.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# flann +# +################################################################################ + +FLANN_VERSION = 1.9.1 +FLANN_SITE = $(call github,mariusmuja,flann,$(FLANN_VERSION)) +FLANN_INSTALL_STAGING = YES +FLANN_LICENSE = BSD-3-Clause +FLANN_LICENSE_FILES = COPYING +FLANN_CONF_OPTS = \ + -DBUILD_C_BINDINGS=ON \ + -DBUILD_PYTHON_BINDINGS=OFF \ + -DBUILD_MATLAB_BINDINGS=OFF \ + -DBUILD_EXAMPLES=$(if $(BR2_PACKAGE_FLANN_EXAMPLES),ON,OFF) \ + -DUSE_OPENMP=$(if $(BR2_GCC_ENABLE_OPENMP),ON,OFF) \ + -DPYTHON_EXECUTABLE=OFF \ + -DCMAKE_DISABLE_FIND_PACKAGE_HDF5=TRUE + +$(eval $(cmake-package)) diff --git a/buildroot/package/flannel/Config.in b/buildroot/package/flannel/Config.in new file mode 100644 index 0000000..134111b --- /dev/null +++ b/buildroot/package/flannel/Config.in @@ -0,0 +1,15 @@ +comment "flannel needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS && \ + BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_FLANNEL + bool "flannel" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Flannel is a virtual network that gives a subnet to each + host for use with container runtimes. + + https://github.com/coreos/flannel diff --git a/buildroot/package/flannel/flannel.hash b/buildroot/package/flannel/flannel.hash new file mode 100644 index 0000000..3e0b25c --- /dev/null +++ b/buildroot/package/flannel/flannel.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 dbbcb08c0e70713b0c920387a9967e5b30ef833c8118c847edbbca4f68ff0562 v0.5.5.tar.gz diff --git a/buildroot/package/flannel/flannel.mk b/buildroot/package/flannel/flannel.mk new file mode 100644 index 0000000..bbb2c72 --- /dev/null +++ b/buildroot/package/flannel/flannel.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# flannel +# +################################################################################ + +FLANNEL_VERSION = v0.5.5 +FLANNEL_SITE = https://github.com/coreos/flannel/archive +FLANNEL_SOURCE = $(FLANNEL_VERSION).tar.gz + +FLANNEL_LICENSE = Apache-2.0 +FLANNEL_LICENSE_FILES = LICENSE + +FLANNEL_DEPENDENCIES = host-go + +FLANNEL_MAKE_ENV = \ + $(HOST_GO_TARGET_ENV) \ + GOBIN="$(@D)/bin" \ + GOPATH="$(@D)/gopath" \ + CGO_ENABLED=1 + +FLANNEL_GLDFLAGS = \ + -X github.com/coreos/flannel/version.Version=$(FLANNEL_VERSION) + +ifeq ($(BR2_STATIC_LIBS),y) +FLANNEL_GLDFLAGS += -extldflags '-static' +endif + +define FLANNEL_CONFIGURE_CMDS + # Put sources at prescribed GOPATH location. + mkdir -p $(@D)/gopath/src/github.com/coreos + ln -s $(@D) $(@D)/gopath/src/github.com/coreos/flannel +endef + +define FLANNEL_BUILD_CMDS + cd $(@D) && $(FLANNEL_MAKE_ENV) $(HOST_DIR)/bin/go \ + build -v -o $(@D)/bin/flanneld -ldflags "$(FLANNEL_GLDFLAGS)" . +endef + +define FLANNEL_INSTALL_TARGET_CMDS + # Install flannel to its well known location. + $(INSTALL) -D -m 0755 $(@D)/bin/flanneld $(TARGET_DIR)/opt/bin/flanneld + $(INSTALL) -D -m 0755 $(@D)/dist/mk-docker-opts.sh $(TARGET_DIR)/opt/bin/mk-docker-opts.sh +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/flashbench/Config.in b/buildroot/package/flashbench/Config.in new file mode 100644 index 0000000..7be1ea9 --- /dev/null +++ b/buildroot/package/flashbench/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FLASHBENCH + bool "flashbench" + help + Flashbench - Identify characteristics of flash media. + + This is the tool used to identify the properties of + SD cards and other media for the Linaro flash memory + survey. + + https://wiki.linaro.org/WorkingGroups/KernelConsolidation/Projects/FlashCardSurvey diff --git a/buildroot/package/flashbench/flashbench.hash b/buildroot/package/flashbench/flashbench.hash new file mode 100644 index 0000000..a5eb388 --- /dev/null +++ b/buildroot/package/flashbench/flashbench.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 12e2dcb6f041ef1a303fc5bc84642ed637c24d77ed6c667a2187f21d54555731 flashbench-2e30b1968a66147412f21002ea844122a0d5e2f0.tar.gz diff --git a/buildroot/package/flashbench/flashbench.mk b/buildroot/package/flashbench/flashbench.mk new file mode 100644 index 0000000..cbcf9ea --- /dev/null +++ b/buildroot/package/flashbench/flashbench.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# flashbench +# +################################################################################ + +FLASHBENCH_VERSION = 2e30b1968a66147412f21002ea844122a0d5e2f0 +FLASHBENCH_SITE = git://git.linaro.org/people/arnd/flashbench.git +FLASHBENCH_LICENSE = GPL-2.0 +FLASHBENCH_LICENSE_FILES = COPYING + +FLASHBENCH_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_microblaze)$(BR2_sh2a),y) +# microblaze and sh2a toolchains only provide LLONG_MAX when used with gnu99 dialect +FLASHBENCH_CFLAGS += -std=gnu99 +endif + +define FLASHBENCH_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(FLASHBENCH_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS) -lrt" +endef + +define FLASHBENCH_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/flashbench $(TARGET_DIR)/usr/bin/flashbench + $(INSTALL) -m 755 -D $(@D)/erase $(TARGET_DIR)/usr/bin/erase +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/flashrom/0001-spi.patch b/buildroot/package/flashrom/0001-spi.patch new file mode 100644 index 0000000..22ffcb5 --- /dev/null +++ b/buildroot/package/flashrom/0001-spi.patch @@ -0,0 +1,25 @@ +linux_spi: add missing include + +Some defines (e.g. _IOC_SIZEBITS) are defined in linux/ioctl.h, +so it must be included before it is used, by SPI_IOC_MESSAGE +from linux/spi/spidev.h + +Fixes build errors with the musl C library, as seen in these +Buildroot autobuilder failures: + + http://autobuild.buildroot.org/results/2a3/2a3744007c630c267575a638ebcd83a4b97644f5/build-end.log + http://autobuild.buildroot.org/results/3de/3de936d9be79e151e66af15193084d82a0f2c04a/build-end.log + +Signed-off-by: "Yann E. MORIN" + +diff -durN flashrom-0.9.8.orig/linux_spi.c flashrom-0.9.8/linux_spi.c +--- flashrom-0.9.8.orig/linux_spi.c 2015-10-28 19:42:38.480285847 +0100 ++++ flashrom-0.9.8/linux_spi.c 2015-10-28 19:43:15.492994613 +0100 +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include + #include + #include "flash.h" diff --git a/buildroot/package/flashrom/Config.in b/buildroot/package/flashrom/Config.in new file mode 100644 index 0000000..e7844a0 --- /dev/null +++ b/buildroot/package/flashrom/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_FLASHROM + bool "flashrom" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_PCIUTILS + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + select BR2_PACKAGE_LIBFTDI + # dmidecode is only a runtime dependency + select BR2_PACKAGE_DMIDECODE + help + flashrom is a utility for identifying, reading, writing, + verifying and erasing flash chips. It is designed to flash + BIOS/EFI/coreboot/firmware/optionROM images on mainboards, + network/graphics/storage controller cards, and various other + programmer devices. + + http://flashrom.org/ + +comment "flashrom needs a toolchain w/ threads" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/flashrom/flashrom.hash b/buildroot/package/flashrom/flashrom.hash new file mode 100644 index 0000000..64b67b9 --- /dev/null +++ b/buildroot/package/flashrom/flashrom.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 cb3156b0f63eb192024b76c0814135930297aac41f80761a5d293de769783c45 flashrom-0.9.9.tar.bz2 diff --git a/buildroot/package/flashrom/flashrom.mk b/buildroot/package/flashrom/flashrom.mk new file mode 100644 index 0000000..f9ab629 --- /dev/null +++ b/buildroot/package/flashrom/flashrom.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# flashrom +# +################################################################################ + +FLASHROM_VERSION = 0.9.9 +FLASHROM_SOURCE = flashrom-$(FLASHROM_VERSION).tar.bz2 +FLASHROM_SITE = http://download.flashrom.org/releases +FLASHROM_DEPENDENCIES = pciutils libusb libusb-compat libftdi host-pkgconf +FLASHROM_LICENSE = GPL-2.0+ +FLASHROM_LICENSE_FILES = COPYING + +define FLASHROM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -DHAVE_STRNLEN" -C $(@D) +endef + +define FLASHROM_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/flashrom $(TARGET_DIR)/usr/sbin/flashrom +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/flatbuffers/Config.in b/buildroot/package/flatbuffers/Config.in new file mode 100644 index 0000000..9927382 --- /dev/null +++ b/buildroot/package/flatbuffers/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_FLATBUFFERS + bool "flatbuffers" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + help + FlatBuffers is an efficient cross platform serialization + library for C++, C#, C, Go, Java, JavaScript, PHP, and + Python. It was originally created at Google for game + development and other performance-critical applications. + + http://google.github.io/flatbuffers/ + +comment "flatbuffers needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/buildroot/package/flatbuffers/flatbuffers.hash b/buildroot/package/flatbuffers/flatbuffers.hash new file mode 100644 index 0000000..bd39ca3 --- /dev/null +++ b/buildroot/package/flatbuffers/flatbuffers.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 c45029c0a0f1a88d416af143e34de96b3091642722aa2d8c090916c6d1498c2e flatbuffers-v1.8.0.tar.gz +sha256 7ec9661a8afafab1eee3523d6f1a193eff76314a5ab10b4ce96aefd87621b0c3 LICENSE.txt diff --git a/buildroot/package/flatbuffers/flatbuffers.mk b/buildroot/package/flatbuffers/flatbuffers.mk new file mode 100644 index 0000000..2b640ec --- /dev/null +++ b/buildroot/package/flatbuffers/flatbuffers.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# flatbuffers +# +################################################################################ + +FLATBUFFERS_VERSION = v1.8.0 +FLATBUFFERS_SITE = $(call github,google,flatbuffers,$(FLATBUFFERS_VERSION)) +FLATBUFFERS_LICENSE = Apache-2.0 +FLATBUFFERS_LICENSE_FILES = LICENSE.txt +FLATBUFFERS_INSTALL_STAGING = YES + +FLATBUFFERS_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="-std=c++11" \ + -DFLATBUFFERS_BUILD_TESTS=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +FLATBUFFERS_CONF_OPTS += -DFLATBUFFERS_BUILD_SHAREDLIB=OFF +else +FLATBUFFERS_CONF_OPTS += -DFLATBUFFERS_BUILD_SHAREDLIB=ON +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch b/buildroot/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch new file mode 100644 index 0000000..06747a3 --- /dev/null +++ b/buildroot/package/flex/0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch @@ -0,0 +1,35 @@ +From ffa886a580929f26fd5e5a40c9c5334955c48553 Mon Sep 17 00:00:00 2001 +From: Explorer09 +Date: Mon, 4 Sep 2017 10:47:33 +0800 +Subject: [PATCH] build: AC_USE_SYSTEM_EXTENSIONS in configure.ac. + +This would, e.g. define _GNU_SOURCE in config.h, enabling the +reallocarray() prototype in glibc 2.26+ on Linux systems with that +version of glibc. + +Fixes #241. + +Backported from: 24fd0551333e7eded87b64dd36062da3df2f6380 +Signed-off-by: Adrian Perez de Castro +--- + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 55e774b..c879fe1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -25,8 +25,10 @@ + # autoconf requirements and initialization + + AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex]) ++AC_PREREQ([2.60]) + AC_CONFIG_SRCDIR([src/scan.l]) + AC_CONFIG_AUX_DIR([build-aux]) ++AC_USE_SYSTEM_EXTENSIONS + LT_INIT + AM_INIT_AUTOMAKE([1.11.3 -Wno-portability foreign check-news std-options dist-lzip parallel-tests subdir-objects]) + AC_CONFIG_HEADER([src/config.h]) +-- +2.14.1 + diff --git a/buildroot/package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch b/buildroot/package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch new file mode 100644 index 0000000..19f5a77 --- /dev/null +++ b/buildroot/package/flex/0002-build-make-it-possible-to-disable-the-build-of-the-f.patch @@ -0,0 +1,76 @@ +From da21733178b34eea303964db5a05e8a3ee4095b4 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 26 Aug 2017 15:17:06 +0200 +Subject: [PATCH] build: make it possible to disable the build of the flex + program + +The flex program uses fork(), which isn't available on noMMU +systems. However, the libfl library does not use fork(), and be used +by other programs/libraries. + +Therefore, it makes sense to provide an option to disable the build of +the flex program. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: "Yann E. MORIN" + +--- +Submitted-upstream: https://github.com/westes/flex/pull/256 +Refused. We'll have to adapt when they do a new release... +--- + Makefile.am | 2 ++ + configure.ac | 6 ++++++ + doc/Makefile.am | 4 ++++ + src/Makefile.am | 3 +++ + 4 files changed, 15 insertions(+) + +diff --git a/Makefile.am b/Makefile.am +index e790e9d..8b57bc9 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -62,8 +62,10 @@ ChangeLog: $(srcdir)/tools/git2cl + indent: + cd src && $(MAKE) $(AM_MAKEFLAGS) indent + ++if ENABLE_PROGRAM + install-exec-hook: + cd $(DESTDIR)$(bindir) && \ + $(LN_S) -f flex$(EXEEXT) flex++$(EXEEXT) ++endif + + .PHONY: ChangeLog indent +diff --git a/configure.ac b/configure.ac +index 8882016..f49872b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -75,6 +75,12 @@ AC_ARG_ENABLE([libfl], + [], [enable_libfl=yes]) + AM_CONDITIONAL([ENABLE_LIBFL], [test "x$enable_libfl" = xyes]) + ++AC_ARG_ENABLE([program], ++ [AS_HELP_STRING([--disable-program], ++ [do not build the flex program, only the libfl library])], ++ [], [enable_program=yes]) ++AM_CONDITIONAL([ENABLE_PROGRAM], [test "x$enable_program" = xyes]) ++ + # --disable-bootstrap is intended only to workaround problems with bootstrap + # (e.g. when cross-compiling flex or when bootstrapping has bugs). + # Ideally we should be able to bootstrap even when cross-compiling. +diff --git a/src/Makefile.am b/src/Makefile.am +index 0d13a5a..c73bc17 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -4,7 +4,10 @@ LIBS = @LIBS@ + + m4 = @M4@ + ++if ENABLE_PROGRAM + bin_PROGRAMS = flex ++endif ++ + if ENABLE_BOOTSTRAP + noinst_PROGRAMS = stage1flex + endif +-- +2.9.4 + diff --git a/buildroot/package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch b/buildroot/package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch new file mode 100644 index 0000000..ffe30d3 --- /dev/null +++ b/buildroot/package/flex/0003-build-make-it-possible-to-disable-the-build-of-the-d.patch @@ -0,0 +1,58 @@ +From b89b8475a5b2f9444c32f7d254b35968da3c8a23 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Fri, 29 Sep 2017 18:03:51 +0200 +Subject: [PATCH] build: make it possible to disable the build of the + documentation + +When targetting embedded evices, the documentation is not needed. + +Building the documentation default to whether the program is built. + +Signed-off-by: "Yann E. MORIN" +Cc: Thomas Petazzoni +--- + Makefile.am | 8 +++++++- + configure.ac | 6 ++++++ + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index fce30b2..ee75b64 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -41,9 +41,15 @@ EXTRA_DIST = \ + .indent.pro \ + autogen.sh + ++MAYBE_SUBDIRS = ++ ++if ENABLE_DOC ++MAYBE_SUBDIRS += doc ++endif ++ + SUBDIRS = \ + src \ +- doc \ ++ $(MAYBE_SUBDIRS) \ + examples \ + po \ + tests \ +diff --git a/configure.ac b/configure.ac +index c54e98f..b3ae450 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -80,6 +80,12 @@ AC_ARG_ENABLE([program], + [], [enable_program=yes]) + AM_CONDITIONAL([ENABLE_PROGRAM], [test "x$enable_program" = xyes]) + ++AC_ARG_ENABLE([doc], ++ [AS_HELP_STRING([--disable-doc], ++ [do not build the documentation])], ++ [], [enable_doc=${enable_program}]) ++AM_CONDITIONAL([ENABLE_DOC], [test "x$enable_doc" = xyes -a "x$enable_program" = xyes]) ++ + # --disable-bootstrap is intended only to workaround problems with bootstrap + # (e.g. when cross-compiling flex or when bootstrapping has bugs). + # Ideally we should be able to bootstrap even when cross-compiling. +-- +2.11.0 + diff --git a/buildroot/package/flex/Config.in b/buildroot/package/flex/Config.in new file mode 100644 index 0000000..0690777 --- /dev/null +++ b/buildroot/package/flex/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FLEX + bool "flex" + help + A fast lexical analyser generator. A tool for generating + programs that perform pattern-matching on text. + + Only the library is available. + + https://github.com/westes/flex/ diff --git a/buildroot/package/flex/flex.hash b/buildroot/package/flex/flex.hash new file mode 100644 index 0000000..ee90573 --- /dev/null +++ b/buildroot/package/flex/flex.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 e87aae032bf07c26f85ac0ed3250998c37621d95f8bd748b31f15b33c45ee995 flex-2.6.4.tar.gz +# License files, locally calculated +sha256 97fd685958d93be7f8dab939bb8161dbd6afb0718c63bfc337c24321aea44273 COPYING diff --git a/buildroot/package/flex/flex.mk b/buildroot/package/flex/flex.mk new file mode 100644 index 0000000..6ce768c --- /dev/null +++ b/buildroot/package/flex/flex.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# flex +# +################################################################################ + +FLEX_VERSION = 2.6.4 +FLEX_SITE = https://github.com/westes/flex/files/981163 +FLEX_INSTALL_STAGING = YES +FLEX_LICENSE = FLEX +FLEX_LICENSE_FILES = COPYING +FLEX_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-m4 +HOST_FLEX_DEPENDENCIES = host-m4 + +# 0001-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch +# 0002-build-make-it-possible-to-disable-the-build-of-the-f.patch +# 0003-build-make-it-possible-to-disable-the-build-of-the-d.patch +FLEX_AUTORECONF = YES +FLEX_GETTEXTIZE = YES +FLEX_CONF_ENV = ac_cv_path_M4=/usr/bin/m4 \ + ac_cv_func_reallocarray=no + +# Don't enable programs, they are not needed on the target, and +# require MMU support. +# Don't enable the doc, it's not needed on the target and requires +# special tools (help2man) to build. +FLEX_CONF_OPTS += --disable-program --disable-doc +HOST_FLEX_CONF_OPTS = --disable-doc + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/flickcurl/Config.in b/buildroot/package/flickcurl/Config.in new file mode 100644 index 0000000..426ceec --- /dev/null +++ b/buildroot/package/flickcurl/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_FLICKCURL + bool "flickcurl" + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBXML2 + # Ensure that libcurl is built with crypto support, since + # flickcurl must access https:// URLs. + select BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_GNUTLS || BR2_PACKAGE_LIBNSS) + select BR2_PACKAGE_CA_CERTIFICATES # runtime + help + Flickcurl is a C library for the Flickr API, handling + creating the requests, signing, token management, calling + the API, marshalling request parameters and decoding + responses. + + http://librdf.org/flickcurl/ + +config BR2_PACKAGE_FLICKCURL_UTILS + bool "flickcurl utilities" + depends on BR2_PACKAGE_FLICKCURL + help + Install flickcurl utilites (flickcurl + flickrdf) to target. diff --git a/buildroot/package/flickcurl/flickcurl.hash b/buildroot/package/flickcurl/flickcurl.hash new file mode 100644 index 0000000..fd091ec --- /dev/null +++ b/buildroot/package/flickcurl/flickcurl.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 ff42a36c7c1c7d368246f6bc9b7d792ed298348e5f0f5d432e49f6803562f5a3 flickcurl-1.26.tar.gz diff --git a/buildroot/package/flickcurl/flickcurl.mk b/buildroot/package/flickcurl/flickcurl.mk new file mode 100644 index 0000000..610b81f --- /dev/null +++ b/buildroot/package/flickcurl/flickcurl.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# flickcurl +# +################################################################################ + +FLICKCURL_VERSION = 1.26 +FLICKCURL_SITE = http://download.dajobe.org/flickcurl +FLICKCURL_LICENSE = LGPL-2.1+ or GPL-2.0+ or Apache-2.0+ +FLICKCURL_LICENSE_FILES = COPYING COPYING.LIB LICENSE-2.0.txt LICENSE.html +FLICKCURL_INSTALL_STAGING = YES +FLICKCURL_CONFIG_SCRIPTS = flickcurl-config +FLICKCURL_CONF_OPTS = --without-curl-config --without-xml2-config --without-raptor +FLICKCURL_DEPENDENCIES = libcurl libxml2 host-pkgconf + +ifeq ($(BR2_PACKAGE_FLICKCURL_UTILS),) +define FLICKCURL_REMOVE_UTILS + rm -f $(TARGET_DIR)/usr/bin/flickcurl $(TARGET_DIR)/usr/bin/flickrdf +endef +FLICKCURL_POST_INSTALL_TARGET_HOOKS += FLICKCURL_REMOVE_UTILS +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/flite/0001-now-honor-DESTDIR-env.-var.patch b/buildroot/package/flite/0001-now-honor-DESTDIR-env.-var.patch new file mode 100644 index 0000000..2d5fb68 --- /dev/null +++ b/buildroot/package/flite/0001-now-honor-DESTDIR-env.-var.patch @@ -0,0 +1,30 @@ +From 658f3243238efe951f6242fa384e990d77078afc Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Fri, 27 Dec 2013 17:42:39 +0100 +Subject: [PATCH] now honor DESTDIR env. var. + +Flite used a handwritten a Makefile which doesn't honor DESTDIR environment +variable, though it uses autoconf. + +Signed-off-by: Samuel Martin +--- + config/config.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/config/config.in b/config/config.in +index 914d2bf..43f1a56 100644 +--- a/flite-1.4-release/config/config.in ++++ b/flite-1.4-release/config/config.in +@@ -49,6 +49,6 @@ include $(TOP)/config/$(langvox).lv + prefix = @prefix@ + exec_prefix = @exec_prefix@ + EXEEXT = @EXEEXT@ +-INSTALLBINDIR = @bindir@ +-INSTALLLIBDIR = @libdir@ +-INSTALLINCDIR = @includedir@/flite ++INSTALLBINDIR = $(DESTDIR)@bindir@ ++INSTALLLIBDIR = $(DESTDIR)@libdir@ ++INSTALLINCDIR = $(DESTDIR)@includedir@/flite +-- +1.8.5.2 + diff --git a/buildroot/package/flite/0002-fix-alsa-static.patch b/buildroot/package/flite/0002-fix-alsa-static.patch new file mode 100644 index 0000000..12adb9e --- /dev/null +++ b/buildroot/package/flite/0002-fix-alsa-static.patch @@ -0,0 +1,19 @@ +Use pkg-config to determine alsa link flags. This fixes static linking. + +Signed-off-by: Baruch Siach + +diff -Nuar flite-1.4-release.orig/configure.in flite-1.4-release/configure.in +--- flite-1.4-release.orig/flite-1.4-release/configure.in 2009-08-14 23:46:38.000000000 +0300 ++++ flite-1.4-release/flite-1.4-release/configure.in 2014-04-30 18:52:33.253297236 +0300 +@@ -275,7 +275,10 @@ + #endif], + [AUDIODRIVER="alsa" + AUDIODEFS=-DCST_AUDIO_ALSA +- AUDIOLIBS=-lasound]) ++ AUDIOLIBS=`pkg-config --libs alsa` ++ if test "$shared" = false; then ++ AUDIOLIBS=`pkg-config --libs --static alsa` ++ fi]) + AC_CHECK_HEADER(mmsystem.h, + [AUDIODRIVER="wince" + AUDIODEFS=-DCST_AUDIO_WINCE diff --git a/buildroot/package/flite/0003-fix-alsa-version-check.patch b/buildroot/package/flite/0003-fix-alsa-version-check.patch new file mode 100644 index 0000000..8832ac3 --- /dev/null +++ b/buildroot/package/flite/0003-fix-alsa-version-check.patch @@ -0,0 +1,26 @@ +[PATCH] fix alsa version check + +Check the entire alsa version, and not just the subminor - As this broke +with the recent alsa 1.0.x -> 1.1.0 release. + +It is not clear what major/minor versions the check was supposed to be +against (0.9 or 1.0). I went with 1.0.11 to be on the safe side. + +Signed-off-by: Peter Korsgaard +--- + flite-1.4-release/configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: flite-1.4/flite-1.4-release/configure.in +=================================================================== +--- flite-1.4.orig/flite-1.4-release/configure.in ++++ flite-1.4/flite-1.4-release/configure.in +@@ -270,7 +270,7 @@ + # the one I know -- you can still specific --with-audio=alsa + AC_TRY_COMPILE([#include ], + [int j= +- #if SND_LIB_SUBMINOR >= 11 ++ #if SND_LIB_VERSION >= 0x1000b + 3; + #endif], + [AUDIODRIVER="alsa" diff --git a/buildroot/package/flite/Config.in b/buildroot/package/flite/Config.in new file mode 100644 index 0000000..2bbd256 --- /dev/null +++ b/buildroot/package/flite/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_FLITE + bool "flite" + depends on BR2_USE_WCHAR + help + Flite: a small, fast run time synthesis engine. + + Flite (festival-lite) is a small, fast run-time synthesis + engine developed at CMU and primarily designed for small + embedded machines and/or large servers. Flite is designed as + an alternative synthesis engine to Festival for voices built + using the FestVox suite of voice building tools. + + http://www.speech.cs.cmu.edu/flite + +comment "flite needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/flite/flite.hash b/buildroot/package/flite/flite.hash new file mode 100644 index 0000000..67d6941 --- /dev/null +++ b/buildroot/package/flite/flite.hash @@ -0,0 +1,4 @@ +# locally computed hash +sha256 45c662160aeca6560589f78daf42ab62c6111dd4d244afc28118c4e6f553cd0c flite-1.4-release.tar.bz2 +# License files, locally calculated +sha256 4cbeaee8c9a8f23f251f0ce56e9212d244d9ea6b0dbe48601623d920054249a1 flite-1.4-release/COPYING diff --git a/buildroot/package/flite/flite.mk b/buildroot/package/flite/flite.mk new file mode 100644 index 0000000..72376e5 --- /dev/null +++ b/buildroot/package/flite/flite.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# flite +# +################################################################################ + +FLITE_VERSION = 1.4 +FLITE_SOURCE = flite-$(FLITE_VERSION)-release.tar.bz2 +FLITE_SITE = http://www.speech.cs.cmu.edu/flite/packed/flite-$(FLITE_VERSION) +# $ tar tf flite-1.4-release.tar.bz2 +# ... +# flite-1.4-release//install-sh +# flite-1.4-release//mkinstalldirs +# flite-1.4-release//Exports.def +# flite-1.4-release//flite.sln +# flite-1.4-release//fliteDll.vcproj +# flite-1.4-release/config/Makefile +# flite-1.4-release/config/common_make_rules +# flite-1.4-release/config/project.mak +# flite-1.4-release/config/config.in +# flite-1.4-release/config/system.mak.in +# +# So, we set FLITE_STRIP_COMPONENTS=0 to avoid writing to "/", and then +# build in flite-1.4-release/ +FLITE_STRIP_COMPONENTS = 0 +FLITE_SUBDIR = flite-$(FLITE_VERSION)-release +FLITE_LICENSE = BSD-4-Clause +FLITE_LICENSE_FILES = $(FLITE_SUBDIR)/COPYING + +FLITE_INSTALL_STAGING = YES +# Patching configure.in +FLITE_AUTORECONF = YES +FLITE_DEPENDENCIES = host-pkgconf + +# Sadly, Flite does not support parallel build, especially when building its +# shared libraries. +FLITE_MAKE = $(MAKE1) + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +FLITE_DEPENDENCIES += alsa-lib +FLITE_CONF_OPTS += --with-audio=alsa +else +FLITE_CONF_OPTS += --with-audio=oss +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/flot/Config.in b/buildroot/package/flot/Config.in new file mode 100644 index 0000000..4044872 --- /dev/null +++ b/buildroot/package/flot/Config.in @@ -0,0 +1,97 @@ +config BR2_PACKAGE_FLOT + bool "flot" + select BR2_PACKAGE_JQUERY + help + Flot is a pure Javascript plotting library for jQuery. It + produces graphical plots of arbitrary datasets on-the-fly + client-side. + + The focus is on simple usage (all settings are optional), + attractive looks and interactive features like zooming and + mouse tracking. + + The plugin works with Internet Explorer 6+, Firefox 2.x+, + Safari 3.0+, Opera 9.5+ and Konqueror 4.x+ with the HTML + canvas tag. + + http://www.flotcharts.org/ + +if BR2_PACKAGE_FLOT + +comment "flot plugins" + +config BR2_PACKAGE_FLOT_CANVAS + bool "canvas" + help + Flot plugin to render axis tick labels directly to the canvas + +config BR2_PACKAGE_FLOT_CATEGORIES + bool "categories" + help + Flot plugin for plotting textual data or categories + +config BR2_PACKAGE_FLOT_CROSSHAIR + bool "crosshair" + help + Flot plugin for showing crosshairs when the mouse hovers + over the plot + +config BR2_PACKAGE_FLOT_ERRORBARS + bool "errorbars" + help + Flot plugin for plotting error bars + +config BR2_PACKAGE_FLOT_FILLBETWEEN + bool "fillbetween" + help + Flot plugin for computing bottoms for filled line and bar + charts + +config BR2_PACKAGE_FLOT_IMAGE + bool "image" + help + Flot plugin for plotting images + +config BR2_PACKAGE_FLOT_NAVIGATE + bool "navigate" + help + Flot plugin for adding panning and zooming capabilities to a + plot + +config BR2_PACKAGE_FLOT_PIE + bool "pie" + help + Flot plugin for rendering pie charts + +config BR2_PACKAGE_FLOT_RESIZE + bool "resize" + help + Flot plugin for automatically redrawing plots when the + placeholder size changes. + +config BR2_PACKAGE_FLOT_SELECTION + bool "selection" + help + Flot plugin for selecting regions + +config BR2_PACKAGE_FLOT_STACK + bool "stack" + help + Flot plugin for stacking data sets + +config BR2_PACKAGE_FLOT_SYMBOL + bool "symbol" + help + Flot plugin that adds some extra symbols for plotting points + +config BR2_PACKAGE_FLOT_THRESHOLD + bool "threshold" + help + Flot plugin for thresholding data + +config BR2_PACKAGE_FLOT_TIME + bool "time" + help + Flot plugin for handling time axes + +endif diff --git a/buildroot/package/flot/flot.hash b/buildroot/package/flot/flot.hash new file mode 100644 index 0000000..cb9f9ec --- /dev/null +++ b/buildroot/package/flot/flot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ef9a873befe3ff5ea42ebf1c3657887265a1717744ca8ed0c2bd3dd736d16b21 flot-0.8.3.tar.gz diff --git a/buildroot/package/flot/flot.mk b/buildroot/package/flot/flot.mk new file mode 100644 index 0000000..58e3ff1 --- /dev/null +++ b/buildroot/package/flot/flot.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# flot +# +################################################################################ + +FLOT_VERSION = 0.8.3 +FLOT_SITE = http://www.flotcharts.org/downloads +FLOT_LICENSE = MIT +FLOT_LICENSE_FILES = LICENSE.txt +FLOT_FILES = jquery.flot $(addprefix jquery.flot.,\ + $(if $(BR2_PACKAGE_FLOT_CANVAS),canvas) \ + $(if $(BR2_PACKAGE_FLOT_CATEGORIES),categories) \ + $(if $(BR2_PACKAGE_FLOT_CROSSHAIR),crosshair) \ + $(if $(BR2_PACKAGE_FLOT_ERRORBARS),errorbars) \ + $(if $(BR2_PACKAGE_FLOT_FILLBETWEEN),fillbetween) \ + $(if $(BR2_PACKAGE_FLOT_IMAGE),image) \ + $(if $(BR2_PACKAGE_FLOT_NAVIGATE),navigate) \ + $(if $(BR2_PACKAGE_FLOT_PIE),pie) \ + $(if $(BR2_PACKAGE_FLOT_RESIZE),resize) \ + $(if $(BR2_PACKAGE_FLOT_SELECTION),selection) \ + $(if $(BR2_PACKAGE_FLOT_STACK),stack) \ + $(if $(BR2_PACKAGE_FLOT_SYMBOL),symbol) \ + $(if $(BR2_PACKAGE_FLOT_THRESHOLD),threshold) \ + $(if $(BR2_PACKAGE_FLOT_TIME),time) \ + ) + +define FLOT_INSTALL_TARGET_CMDS + for i in $(FLOT_FILES); do \ + $(INSTALL) -m 0644 -D $(@D)/$$i.min.js $(TARGET_DIR)/var/www/$$i.js || exit 1; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fltk/0001-disable-tests.patch b/buildroot/package/fltk/0001-disable-tests.patch new file mode 100644 index 0000000..9571453 --- /dev/null +++ b/buildroot/package/fltk/0001-disable-tests.patch @@ -0,0 +1,16 @@ +Disable tests, slower to build and would need host-fltk. + +Signed-off-by: Gustavo Zacarias + +diff -Nura fltk-1.3.2.orig/Makefile fltk-1.3.2/Makefile +--- fltk-1.3.2.orig/Makefile 2013-10-27 18:19:39.693208127 -0300 ++++ fltk-1.3.2/Makefile 2013-10-27 18:20:08.032136885 -0300 +@@ -18,7 +18,7 @@ + + include makeinclude + +-DIRS = $(IMAGEDIRS) src $(CAIRODIR) fluid test documentation ++DIRS = $(IMAGEDIRS) src $(CAIRODIR) fluid documentation + + all: makeinclude fltk-config + for dir in $(DIRS); do\ diff --git a/buildroot/package/fltk/Config.in b/buildroot/package/fltk/Config.in new file mode 100644 index 0000000..8e9977a --- /dev/null +++ b/buildroot/package/fltk/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_FLTK + bool "fltk" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + help + A cross-platform C++ GUI toolkit for UNIX/Linux (X11), + Microsoft Windows, and MacOS X. + + http://www.fltk.org/ + +comment "fltk needs a toolchain w/ C++" + depends on BR2_USE_MMU && BR2_PACKAGE_XORG7 + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/fltk/fltk.hash b/buildroot/package/fltk/fltk.hash new file mode 100644 index 0000000..af968aa --- /dev/null +++ b/buildroot/package/fltk/fltk.hash @@ -0,0 +1,4 @@ +# From http://www.fltk.org/software.php?VERSION=1.3.4 +md5 d7fcd27ab928648e1a1366dd2e273970 fltk-1.3.4-1-source.tar.gz +# Locally generated +sha256 7fb2c8882433ce694e6900c94fda505e8f4ed3fa9c7e597007098a33b85c53f4 fltk-1.3.4-1-source.tar.gz diff --git a/buildroot/package/fltk/fltk.mk b/buildroot/package/fltk/fltk.mk new file mode 100644 index 0000000..611d79d --- /dev/null +++ b/buildroot/package/fltk/fltk.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# fltk +# +################################################################################ + +FLTK_VERSION = 1.3.4 +FLTK_SOURCE = fltk-$(FLTK_VERSION)-1-source.tar.gz +FLTK_SITE = http://fltk.org/pub/fltk/$(FLTK_VERSION) +FLTK_INSTALL_STAGING = YES +# We force --libdir=/usr/lib, because by default, it is set to +# ${exec_prefix}/lib, which doesn't match the condition used by the +# fltk build system to decide whether it should pass a -rpath,/usr/lib +# or not. Since this rpath breaks the build, we want the fltk build +# system to not pass it, which requires having --libdir set to +# /usr/lib. +FLTK_CONF_OPTS = --enable-threads --with-x --disable-gl \ + --disable-localjpeg --disable-localpng --disable-localzlib \ + --libdir=/usr/lib +FLTK_DEPENDENCIES = jpeg libpng xlib_libX11 xlib_libXext xlib_libXt +FLTK_CONFIG_SCRIPTS = fltk-config +FLTK_LICENSE = LGPL-2.0 with exceptions +FLTK_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_CAIRO),y) +FLTK_CONF_OPTS += --enable-cairo +FLTK_DEPENDENCIES += cairo +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +FLTK_DEPENDENCIES += xlib_libXcursor +FLTK_CONF_OPTS += --enable-xcursor +else +FLTK_CONF_OPTS += --disable-xcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +FLTK_DEPENDENCIES += xlib_libXfixes +FLTK_CONF_OPTS += --enable-xfixes +else +FLTK_CONF_OPTS += --disable-xfixes +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y) +FLTK_CONF_ENV += ac_cv_path_FTCONFIG=$(STAGING_DIR)/usr/bin/freetype-config +FLTK_DEPENDENCIES += xlib_libXft +else +FLTK_CONF_OPTS += --disable-xft +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +FLTK_DEPENDENCIES += xlib_libXinerama +else +FLTK_CONF_OPTS += --disable-xinerama +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/fluxbox/Config.in b/buildroot/package/fluxbox/Config.in new file mode 100644 index 0000000..ab479a9 --- /dev/null +++ b/buildroot/package/fluxbox/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_FLUXBOX + bool "fluxbox" + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + # Runtime dependency, needed by startup script + select BR2_PACKAGE_XAPP_XMODMAP + help + The Fluxbox lightweight window manager for X + + http://fluxbox.org + +comment "fluxbox needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 && !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/fluxbox/fluxbox.hash b/buildroot/package/fluxbox/fluxbox.hash new file mode 100644 index 0000000..b18582b --- /dev/null +++ b/buildroot/package/fluxbox/fluxbox.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 fc8c75fe94c54ed5a5dd3fd4a752109f8949d6df67a48e5b11a261403c382ec0 fluxbox-1.3.7.tar.xz diff --git a/buildroot/package/fluxbox/fluxbox.mk b/buildroot/package/fluxbox/fluxbox.mk new file mode 100644 index 0000000..305dd9a --- /dev/null +++ b/buildroot/package/fluxbox/fluxbox.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# fluxbox +# +################################################################################ + +FLUXBOX_VERSION = 1.3.7 +FLUXBOX_SOURCE = fluxbox-$(FLUXBOX_VERSION).tar.xz +FLUXBOX_SITE = http://downloads.sourceforge.net/project/fluxbox/fluxbox/$(FLUXBOX_VERSION) +FLUXBOX_LICENSE = MIT +FLUXBOX_LICENSE_FILES = COPYING + +FLUXBOX_CONF_OPTS = \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib +FLUXBOX_DEPENDENCIES = xlib_libX11 $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +FLUXBOX_CONF_OPTS += --enable-freetype2 +FLUXBOX_DEPENDENCIES += freetype +else +FLUXBOX_CONF_OPTS += --disable-freetype2 +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_X),y) +FLUXBOX_CONF_OPTS += --enable-imlib2 +FLUXBOX_DEPENDENCIES += imlib2 +else +FLUXBOX_CONF_OPTS += --disable-imlib2 +endif + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +FLUXBOX_CONF_OPTS += --enable-fribidi +FLUXBOX_DEPENDENCIES += libfribidi +else +FLUXBOX_CONF_OPTS += --disable-fribidi +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y) +FLUXBOX_CONF_OPTS += --enable-xft +FLUXBOX_DEPENDENCIES += xlib_libXft +else +FLUXBOX_CONF_OPTS += --disable-xft +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) +FLUXBOX_CONF_OPTS += --enable-xrender +FLUXBOX_DEPENDENCIES += xlib_libXrender +else +FLUXBOX_CONF_OPTS += --disable-xrender +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y) +FLUXBOX_CONF_OPTS += --enable-xpm +FLUXBOX_DEPENDENCIES += xlib_libXpm +else +FLUXBOX_CONF_OPTS += --disable-xpm +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +FLUXBOX_CONF_OPTS += --enable-xinerama +FLUXBOX_DEPENDENCIES += xlib_libXinerama +else +FLUXBOX_CONF_OPTS += --disable-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y) +FLUXBOX_CONF_OPTS += --enable-xext +FLUXBOX_DEPENDENCIES += xlib_libXext +else +FLUXBOX_CONF_OPTS += --disable-xext +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +FLUXBOX_CONF_OPTS += --enable-xrandr +FLUXBOX_DEPENDENCIES += xlib_libXrandr +else +FLUXBOX_CONF_OPTS += --disable-xrandr +endif + +define FLUXBOX_INSTALL_XSESSION_FILE + $(INSTALL) -m 0755 -D package/fluxbox/xsession \ + $(TARGET_DIR)/root/.xsession +endef + +FLUXBOX_POST_INSTALL_TARGET_HOOKS += FLUXBOX_INSTALL_XSESSION_FILE + +$(eval $(autotools-package)) diff --git a/buildroot/package/fluxbox/xsession b/buildroot/package/fluxbox/xsession new file mode 100644 index 0000000..b51acff --- /dev/null +++ b/buildroot/package/fluxbox/xsession @@ -0,0 +1,2 @@ +#!/bin/sh +exec startfluxbox diff --git a/buildroot/package/fmc/Config.in b/buildroot/package/fmc/Config.in new file mode 100644 index 0000000..4399aa2 --- /dev/null +++ b/buildroot/package/fmc/Config.in @@ -0,0 +1,25 @@ +comment "fmc needs a toolchain w/ C++" + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on !BR2_INSTALL_LIBSTDCPP + +comment "fmc needs a Linux kernel to be built" + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_FMC + bool "fmc" + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_LINUX_KERNEL # fmlib + select BR2_PACKAGE_TCLAP + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_FMLIB + help + The Frame Manager Configuration tool is Freescale PowerPC + platform software package whose primary purpose is converting + Parse-Classify-Police-Distribute (PCD) descriptions of network + packets flow into hardware configuration. The tool provides an + abstraction layer between the end customer's vision of the PCD + task definition and real hardware implementation. + + http://cache.freescale.com/files/32bit/doc/app_note/AN4760.pdf diff --git a/buildroot/package/fmc/fmc.hash b/buildroot/package/fmc/fmc.hash new file mode 100644 index 0000000..13d9d77 --- /dev/null +++ b/buildroot/package/fmc/fmc.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a91e0c9b7c7f238634c64a755c05671f33f2acdb6ae2d09cad4d683b364ee8e4 fmc-fsl-sdk-v2.0.tar.gz diff --git a/buildroot/package/fmc/fmc.mk b/buildroot/package/fmc/fmc.mk new file mode 100644 index 0000000..2a95fec --- /dev/null +++ b/buildroot/package/fmc/fmc.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# fmc +# +################################################################################ + +FMC_VERSION = fsl-sdk-v2.0 +FMC_SITE = git://git.freescale.com/ppc/sdk/fmc.git +FMC_LICENSE = MIT +FMC_LICENSE_FILES = COPYING +FMC_DEPENDENCIES = libxml2 tclap fmlib + +FMC_MAKE_OPTS = \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + FMD_USPACE_HEADER_PATH="$(STAGING_DIR)/usr/include/fmd" \ + FMD_USPACE_LIB_PATH="$(STAGING_DIR)/usr/lib" \ + LIBXML2_HEADER_PATH="$(STAGING_DIR)/usr/include/libxml2" \ + TCLAP_HEADER_PATH="$(STAGING_DIR)/usr/include" + +ifeq ($(BR2_powerpc64),y) +FMC_MAKE_OPTS += M64BIT=1 +endif + +# fmc's platform is the same as fmlib's. +FMC_PLATFORM = $(call qstrip,$(BR2_PACKAGE_FMLIB_PLATFORM)) + +define FMC_BUILD_CMDS + $(SED) "s:P4080:$(FMC_PLATFORM):g" $(@D)/source/Makefile + # The linking step has dependency issues so using MAKE1 + $(TARGET_MAKE_ENV) $(MAKE1) $(FMC_MAKE_OPTS) -C $(@D)/source +endef + +define FMC_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/source/fmc $(TARGET_DIR)/usr/sbin/fmc + cp -dpfr $(@D)/etc/fmc $(TARGET_DIR)/etc/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fmlib/Config.in b/buildroot/package/fmlib/Config.in new file mode 100644 index 0000000..df4ae44 --- /dev/null +++ b/buildroot/package/fmlib/Config.in @@ -0,0 +1,50 @@ +comment "fmlib needs a Linux kernel to be built" + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_FMLIB + bool "fmlib" + depends on BR2_powerpc_e500mc || BR2_powerpc_e6500 + depends on BR2_LINUX_KERNEL + help + The Frame Manager library provides Freescale PowerPC platforms + an API on top of the Frame Manager driver ioctl calls, that + provides a user space application with a simple way to + configure driver parameters and PCD (parse - classify - + distribute) rules. + + http://git.freescale.com/git/cgit.cgi/ppc/sdk/fmlib.git/tree/README + +if BR2_PACKAGE_FMLIB +choice + prompt "QorIQ Target Family" + help + Select the family of QorIQ processor. + +config BR2_FMLIB_QORIQ_FAMILY_P4080 + bool "p40xx" + depends on BR2_powerpc_e500mc + +config BR2_FMLIB_QORIQ_FAMILY_T4240 + bool "t42xx" + depends on BR2_powerpc_e500mc + +config BR2_FMLIB_QORIQ_FAMILY_T2080 + bool "t208x" + depends on BR2_powerpc_e6500 + +endchoice + +config BR2_PACKAGE_FMLIB_ARCHTYPE + string + default "e500mc" if BR2_powerpc_e500mc + default "ppc64e6500" if BR2_powerpc_e6500 && BR2_powerpc64 + default "ppc32e6500" if BR2_powerpc_e6500 && BR2_powerpc + +config BR2_PACKAGE_FMLIB_PLATFORM + string + default "P4080" if BR2_FMLIB_QORIQ_FAMILY_P4080 + default "T4240" if BR2_FMLIB_QORIQ_FAMILY_T4240 + default "FMAN_V3H" if BR2_FMLIB_QORIQ_FAMILY_T2080 + +endif diff --git a/buildroot/package/fmlib/fmlib.hash b/buildroot/package/fmlib/fmlib.hash new file mode 100644 index 0000000..3746695 --- /dev/null +++ b/buildroot/package/fmlib/fmlib.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 e5870756c7432b15f7a48b860625808f3c95d5f7fa5e251552eb2324ca51b0fa fmlib-fsl-sdk-v2.0.tar.gz diff --git a/buildroot/package/fmlib/fmlib.mk b/buildroot/package/fmlib/fmlib.mk new file mode 100644 index 0000000..e67ab1e --- /dev/null +++ b/buildroot/package/fmlib/fmlib.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# fmlib +# +################################################################################ + +FMLIB_VERSION = fsl-sdk-v2.0 +FMLIB_SITE = git://git.freescale.com/ppc/sdk/fmlib.git +FMLIB_LICENSE = BSD-3-Clause, GPL-2.0+ +FMLIB_LICENSE_FILES = COPYING +FMLIB_DEPENDENCIES = linux +FMLIB_INSTALL_STAGING = YES + +# This package installs a static library only, so there's +# nothing to install to the target +FMLIB_INSTALL_TARGET = NO + +FMLIB_MAKE_OPTS = \ + CC="$(TARGET_CC)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + KERNEL_SRC="$(LINUX_DIR)" \ + PREFIX="$(STAGING_DIR)/usr" + +FMLIB_ARCHTYPE = $(call qstrip,$(BR2_PACKAGE_FMLIB_ARCHTYPE)) +FMLIB_PLATFORM = $(call qstrip,$(BR2_PACKAGE_FMLIB_PLATFORM)) + +define FMLIB_BUILD_CMDS + $(SED) "s:P4080:$(FMLIB_PLATFORM):g" $(@D)/Makefile + $(TARGET_MAKE_ENV) $(MAKE) $(FMLIB_MAKE_OPTS) -C $(@D) libfm-$(FMLIB_ARCHTYPE).a +endef + +define FMLIB_INSTALL_STAGING_CMDS + $(RM) $(STAGING_DIR)/usr/lib/libfm.a + $(TARGET_MAKE_ENV) $(MAKE) $(FMLIB_MAKE_OPTS) -C $(@D) install-libfm-$(FMLIB_ARCHTYPE) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fmt/Config.in b/buildroot/package/fmt/Config.in new file mode 100644 index 0000000..69a6fb8 --- /dev/null +++ b/buildroot/package/fmt/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_FMT + bool "fmt" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + help + fmt is an open-source formatting library for C++. It can be + used as a safe alternative to printf or as a fast alternative + to IOStreams. + +comment "fmt needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/buildroot/package/fmt/fmt.hash b/buildroot/package/fmt/fmt.hash new file mode 100644 index 0000000..47087a4 --- /dev/null +++ b/buildroot/package/fmt/fmt.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 35300a0d356529447a79ed5ccf419239d8b34f916e5d4625f046fd37afa3650a fmt-4.0.0.tar.gz diff --git a/buildroot/package/fmt/fmt.mk b/buildroot/package/fmt/fmt.mk new file mode 100644 index 0000000..c47b03e --- /dev/null +++ b/buildroot/package/fmt/fmt.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# fmt +# +################################################################################ + +FMT_VERSION = 4.0.0 +FMT_SITE = $(call github,fmtlib,fmt,$(FMT_VERSION)) +FMT_LICENSE = BSD-2-Clause +FMT_LICENSE_FILES = LICENSE.rst +FMT_INSTALL_STAGING = YES + +FMT_CONF_OPTS = \ + -DHAVE_OPEN=ON \ + -DFMT_INSTALL=ON \ + -DFMT_TEST=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/fmtools/Config.in b/buildroot/package/fmtools/Config.in new file mode 100644 index 0000000..182b517 --- /dev/null +++ b/buildroot/package/fmtools/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FMTOOLS + bool "fmtools" + help + fmtools is a pair of simple command-line utilities for + "video4linux2" radio tuner cards under Linux. It includes + fm for power control, tuning, and volume and fmscan for + scanning for stations. + + http://benpfaff.org/fmtools/ diff --git a/buildroot/package/fmtools/fmtools.hash b/buildroot/package/fmtools/fmtools.hash new file mode 100644 index 0000000..435cf0a --- /dev/null +++ b/buildroot/package/fmtools/fmtools.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 75174e07d8cde6d4a8a5d7bbaa3a3b0760a850e7f6840cb7c6246227b18f5a39 fmtools-2.0.7.tar.gz diff --git a/buildroot/package/fmtools/fmtools.mk b/buildroot/package/fmtools/fmtools.mk new file mode 100644 index 0000000..890fae1 --- /dev/null +++ b/buildroot/package/fmtools/fmtools.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# fmtools +# +################################################################################ + +FMTOOLS_VERSION = 2.0.7 +FMTOOLS_SITE = http://benpfaff.org/fmtools +FMTOOLS_LICENSE = GPL-2.0+ +FMTOOLS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/font-awesome/Config.in b/buildroot/package/font-awesome/Config.in new file mode 100644 index 0000000..694d74e --- /dev/null +++ b/buildroot/package/font-awesome/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_FONT_AWESOME + bool "font-awesome" + help + Font Awesome is a full suite of 605 pictographic icons for + easy scalable vector graphics on websites. + + https://github.com/FortAwesome/Font-Awesome diff --git a/buildroot/package/font-awesome/font-awesome.hash b/buildroot/package/font-awesome/font-awesome.hash new file mode 100644 index 0000000..e266168 --- /dev/null +++ b/buildroot/package/font-awesome/font-awesome.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 de512ba0e1dead382bbfce372cde74b3f18971d876fffb635ee9333f0db05d43 font-awesome-v4.7.0.tar.gz diff --git a/buildroot/package/font-awesome/font-awesome.mk b/buildroot/package/font-awesome/font-awesome.mk new file mode 100644 index 0000000..f394010 --- /dev/null +++ b/buildroot/package/font-awesome/font-awesome.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# font-awesome +# +################################################################################ + +FONT_AWESOME_VERSION = v4.7.0 +FONT_AWESOME_SITE = $(call github,FortAwesome,Font-Awesome,$(FONT_AWESOME_VERSION)) +FONT_AWESOME_LICENSE = OFL-1.1 (font), MIT (CSS, LESS and Sass files) +FONT_AWESOME_DIRECTORIES_LIST = css fonts less scss + +define FONT_AWESOME_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/font-awesome/ + $(foreach d,$(FONT_AWESOME_DIRECTORIES_LIST),\ + cp -dpfr $(@D)/$(d) $(TARGET_DIR)/usr/share/font-awesome$(sep)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fontconfig/Config.in b/buildroot/package/fontconfig/Config.in new file mode 100644 index 0000000..218fdb2 --- /dev/null +++ b/buildroot/package/fontconfig/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FONTCONFIG + bool "fontconfig" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_EXPAT + help + Fontconfig is a library for configuring and customizing font + access. + + http://www.fontconfig.org/ diff --git a/buildroot/package/fontconfig/fontconfig.hash b/buildroot/package/fontconfig/fontconfig.hash new file mode 100644 index 0000000..e9963f6 --- /dev/null +++ b/buildroot/package/fontconfig/fontconfig.hash @@ -0,0 +1,2 @@ +# From https://lists.freedesktop.org/archives/fontconfig/2017-July/005961.html +sha256 668293fcc4b3c59765cdee5cee05941091c0879edcc24dfec5455ef83912e45c fontconfig-2.12.4.tar.bz2 diff --git a/buildroot/package/fontconfig/fontconfig.mk b/buildroot/package/fontconfig/fontconfig.mk new file mode 100644 index 0000000..71a0b45 --- /dev/null +++ b/buildroot/package/fontconfig/fontconfig.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# fontconfig +# +################################################################################ + +FONTCONFIG_VERSION = 2.12.4 +FONTCONFIG_SITE = http://fontconfig.org/release +FONTCONFIG_SOURCE = fontconfig-$(FONTCONFIG_VERSION).tar.bz2 +FONTCONFIG_INSTALL_STAGING = YES +FONTCONFIG_DEPENDENCIES = freetype expat host-pkgconf host-gperf +HOST_FONTCONFIG_DEPENDENCIES = host-freetype host-expat host-pkgconf host-gperf +FONTCONFIG_LICENSE = fontconfig license +FONTCONFIG_LICENSE_FILES = COPYING + +FONTCONFIG_CONF_OPTS = \ + --with-arch=$(GNU_TARGET_NAME) \ + --with-cache-dir=/var/cache/fontconfig \ + --disable-docs + +HOST_FONTCONFIG_CONF_OPTS = \ + --disable-static + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/fping/Config.in b/buildroot/package/fping/Config.in new file mode 100644 index 0000000..686102a --- /dev/null +++ b/buildroot/package/fping/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_FPING + bool "fping" + help + fping is a program to send ICMP echo probes to network hosts, + similar to ping, but much better performing when pinging + multiple hosts. + + http://fping.org/ diff --git a/buildroot/package/fping/fping.hash b/buildroot/package/fping/fping.hash new file mode 100644 index 0000000..e97709c --- /dev/null +++ b/buildroot/package/fping/fping.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 67eb4152b98ad34f99d2eec4e1098a0bb52caf13c0c89cd147349d08190fe8ce fping-4.0.tar.gz diff --git a/buildroot/package/fping/fping.mk b/buildroot/package/fping/fping.mk new file mode 100644 index 0000000..5af46c6 --- /dev/null +++ b/buildroot/package/fping/fping.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# fping +# +################################################################################ + +FPING_VERSION = 4.0 +FPING_SITE = http://fping.org/dist +FPING_LICENSE = BSD-like +FPING_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/freeradius-client/0001-fix-for-nettle.patch b/buildroot/package/freeradius-client/0001-fix-for-nettle.patch new file mode 100644 index 0000000..a862c74 --- /dev/null +++ b/buildroot/package/freeradius-client/0001-fix-for-nettle.patch @@ -0,0 +1,20 @@ +lib/rc-md5: fix build when nettle is enabled + +rc-md5 uses size_t, which is defined in string.h. This include is +missing when built against nettle. + +Just add it. + +Signed-off-by: "Yann E. MORIN" + +diff -durN freeradius-client-1.1.7.orig/lib/rc-md5.h freeradius-client-1.1.7/lib/rc-md5.h +--- freeradius-client-1.1.7.orig/lib/rc-md5.h 2015-01-19 17:18:26.000000000 +0100 ++++ freeradius-client-1.1.7/lib/rc-md5.h 2015-01-25 22:56:07.815626476 +0100 +@@ -13,6 +13,7 @@ + + #ifdef HAVE_NETTLE + ++#include /* size_t */ + #include + + #else diff --git a/buildroot/package/freeradius-client/Config.in b/buildroot/package/freeradius-client/Config.in new file mode 100644 index 0000000..773adb8 --- /dev/null +++ b/buildroot/package/freeradius-client/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_FREERADIUS_CLIENT + bool "freeradius-client" + help + FreeRADIUS Client is a framework and library for + writing RADIUS Clients. + + http://wiki.freeradius.org/project/Radiusclient diff --git a/buildroot/package/freeradius-client/freeradius-client.hash b/buildroot/package/freeradius-client/freeradius-client.hash new file mode 100644 index 0000000..5931ac2 --- /dev/null +++ b/buildroot/package/freeradius-client/freeradius-client.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 eada2861b8f4928e3ac6b5bbfe11e92cd6cdcacfce40cae1085e77c1b6add0e9 freeradius-client-1.1.7.tar.gz diff --git a/buildroot/package/freeradius-client/freeradius-client.mk b/buildroot/package/freeradius-client/freeradius-client.mk new file mode 100644 index 0000000..981ed16 --- /dev/null +++ b/buildroot/package/freeradius-client/freeradius-client.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# freeradius-client +# +################################################################################ + +FREERADIUS_CLIENT_VERSION = 1.1.7 +FREERADIUS_CLIENT_SITE = ftp://ftp.freeradius.org/pub/freeradius +FREERADIUS_CLIENT_LICENSE = BSD-2-Clause +FREERADIUS_CLIENT_LICENSE_FILES = COPYRIGHT +FREERADIUS_CLIENT_INSTALL_STAGING = YES + +FREERADIUS_CLIENT_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_NETTLE),y) +FREERADIUS_CLIENT_DEPENDENCIES += nettle +FREERADIUS_CLIENT_CONF_OPTS += --with-nettle=yes +else +FREERADIUS_CLIENT_CONF_OPTS += --with-nettle=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/freerdp/0001-Fix-gstreamer-1.0-detection.patch b/buildroot/package/freerdp/0001-Fix-gstreamer-1.0-detection.patch new file mode 100644 index 0000000..fadfe11 --- /dev/null +++ b/buildroot/package/freerdp/0001-Fix-gstreamer-1.0-detection.patch @@ -0,0 +1,28 @@ +From 368989526c32cdf9d680a397fede3cb773fa2609 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert +Date: Fri, 28 Jul 2017 16:31:41 -0400 +Subject: [PATCH 1/1] Fix gstreamer-1.0 detection + +[yann.morin.1998@free.fr: backport from upstream] +Signed-off-by: "Yann E. MORIN" + +--- + cmake/FindGStreamer_1_0.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/FindGStreamer_1_0.cmake b/cmake/FindGStreamer_1_0.cmake +index 3aa8fc6dc..6fbc0ecc5 100644 +--- a/cmake/FindGStreamer_1_0.cmake ++++ b/cmake/FindGStreamer_1_0.cmake +@@ -59,7 +59,7 @@ macro(FIND_GSTREAMER_COMPONENT _component_prefix _pkgconfig_name _library) + + string(REGEX MATCH "(.*)>=(.*)" _dummy "${_pkgconfig_name}") + if ("${CMAKE_MATCH_2}" STREQUAL "") +- pkg_check_modules(PC_${_component_prefix} "${_pkgconfig_name} >= ${GStreamer_FIND_VERSION}") ++ pkg_check_modules(PC_${_component_prefix} "${_pkgconfig_name} >= ${GSTREAMER_1_0_MINIMUM_VERSION}") + else () + pkg_check_modules(PC_${_component_prefix} ${_pkgconfig_name}) + endif () +-- +2.11.0 + diff --git a/buildroot/package/freerdp/Config.in b/buildroot/package/freerdp/Config.in new file mode 100644 index 0000000..59bc18b --- /dev/null +++ b/buildroot/package/freerdp/Config.in @@ -0,0 +1,91 @@ +config BR2_PACKAGE_FREERDP + bool "freerdp" + # FreeRDP does not have a single C++ source file, however it + # insists on having a C++ compiler. Removing that requirement + # is a bit too much involving, so we just depend on it... + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS # uses dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # libglib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBGLIB2 + help + FreeRDP is a free implementation of the Remote Desktop + Protocol (RDP), released under the Apache license + + This only installs the freerdp libraries. + + http://www.freerdp.com/ + + Note: this also installs a key and certificate in + /etc/freerdp/keys/ . These are publicly-known, as they + are present in FreeRDP's source tree. It is strongly + suggested that you overwrite them with your own set, + either in an overlay rootfs or in a post-build script. + +if BR2_PACKAGE_FREERDP + +choice + bool "gstreamer support" + depends on BR2_PACKAGE_XORG7 # xlib-libxrandr + depends on BR2_PACKAGE_GSTREAMER || BR2_PACKAGE_GSTREAMER1 + +config BR2_PACKAGE_FREERDP_GSTREAMER1 + bool "gstreamer-1.x" + depends on BR2_PACKAGE_GSTREAMER1 + # gstreamer-1.x dependencies already dependencies of FreeRDP + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + select BR2_PACKAGE_XLIB_LIBXRANDR + +config BR2_PACKAGE_FREERDP_GSTREAMER + bool "gstreamer-0.x" + depends on BR2_PACKAGE_GSTREAMER + # gstreamer-0.x dependencies already dependencies of FreeRDP + select BR2_PACKAGE_GST_PLUGINS_BASE + select BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_LIBXML2 + +config BR2_PACKAGE_FREERDP_GSTREAMER_NO + bool "none" + +endchoice + +comment "gstreamer support needs X.Org" + depends on !BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_GSTREAMER || BR2_PACKAGE_GSTREAMER1 + +config BR2_PACKAGE_FREERDP_SERVER + bool "server" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + +config BR2_PACKAGE_FREERDP_CLIENT_X11 + bool "X11 client" + default y + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + +comment "server and X11 client need X.Org" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_FREERDP_CLIENT_WL + bool "wayland client" + default y + depends on BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_LIBXKBCOMMON + +endif + +comment "freerdp needs a toolchain w/ wchar, dynamic library, threads, C++" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/freerdp/freerdp.hash b/buildroot/package/freerdp/freerdp.hash new file mode 100644 index 0000000..f54a03e --- /dev/null +++ b/buildroot/package/freerdp/freerdp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 68e0e3db638a9cc00b978815d9eabedffc23f4410dcaa7a7548bb751766d5b3e freerdp-2.0.0-rc0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/buildroot/package/freerdp/freerdp.mk b/buildroot/package/freerdp/freerdp.mk new file mode 100644 index 0000000..0ceef57 --- /dev/null +++ b/buildroot/package/freerdp/freerdp.mk @@ -0,0 +1,266 @@ +################################################################################ +# +# freerdp +# +################################################################################ + +FREERDP_VERSION = 2.0.0-rc0 +FREERDP_SITE = $(call github,FreeRDP,FreeRDP,$(FREERDP_VERSION)) +FREERDP_DEPENDENCIES = libglib2 openssl zlib +FREERDP_LICENSE = Apache-2.0 +FREERDP_LICENSE_FILES = LICENSE + +FREERDP_INSTALL_STAGING = YES + +FREERDP_CONF_OPTS = -DWITH_MANPAGES=OFF -Wno-dev + +ifeq ($(BR2_PACKAGE_FREERDP_GSTREAMER),y) +FREERDP_CONF_OPTS += -DWITH_GSTREAMER_0_10=ON +FREERDP_DEPENDENCIES += gstreamer gst-plugins-base libxml2 +else +FREERDP_CONF_OPTS += -DWITH_GSTREAMER_0_10=OFF +endif + +ifeq ($(BR2_PACKAGE_FREERDP_GSTREAMER1),y) +FREERDP_CONF_OPTS += -DWITH_GSTREAMER_1_0=ON +FREERDP_DEPENDENCIES += gstreamer1 gst1-plugins-base +else +FREERDP_CONF_OPTS += -DWITH_GSTREAMER_1_0=OFF +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +FREERDP_CONF_OPTS += -DWITH_CUPS=ON +FREERDP_DEPENDENCIES += cups +else +FREERDP_CONF_OPTS += -DWITH_CUPS=OFF +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +FREERDP_CONF_OPTS += -DWITH_FFMPEG=ON +FREERDP_DEPENDENCIES += ffmpeg +else +FREERDP_CONF_OPTS += -DWITH_FFMPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER),y) +FREERDP_CONF_OPTS += -DWITH_ALSA=ON +FREERDP_DEPENDENCIES += alsa-lib +else +FREERDP_CONF_OPTS += -DWITH_ALSA=OFF +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +FREERDP_CONF_OPTS += -DWITH_PULSEAUDIO=ON +FREERDP_DEPENDENCIES += pulseaudio +else +FREERDP_CONF_OPTS += -DWITH_PULSEAUDIO=OFF +endif + +# For the systemd journal +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +FREERDP_CONF_OPTS += -DWITH_LIBSYSTEMD=ON +FREERDP_DEPENDENCIES += systemd +else +FREERDP_CONF_OPTS += -DWITH_LIBSYSTEMD=OFF +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +FREERDP_CONF_OPTS += -DWITH_NEON=ON +else +FREERDP_CONF_OPTS += -DWITH_NEON=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +FREERDP_CONF_OPTS += -DWITH_SSE2=ON +else +FREERDP_CONF_OPTS += -DWITH_SSE2=OFF +endif + +ifeq ($(BR2_arm)$(BR2_armeb),y) +FREERDP_CONF_OPTS += -DARM_FP_ABI=$(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) +endif + +#--------------------------------------- +# Enabling server and/or client + +# Clients and server interface must always be enabled to build the +# corresponding libraries. +FREERDP_CONF_OPTS += -DWITH_SERVER_INTERFACE=ON +FREERDP_CONF_OPTS += -DWITH_CLIENT_INTERFACE=ON + +ifeq ($(BR2_PACKAGE_FREERDP_SERVER),y) +FREERDP_CONF_OPTS += -DWITH_SERVER=ON +endif + +ifneq ($(BR2_PACKAGE_FREERDP_CLIENT_X11)$(BR2_PACKAGE_FREERDP_CLIENT_WL),) +FREERDP_CONF_OPTS += -DWITH_CLIENT=ON +endif + +#--------------------------------------- +# Libraries for client and/or server + +# The FreeRDP buildsystem uses non-orthogonal options. For example it +# is not possible to build the server and the wayland client without +# also building the X client. That's because the dependencies of the +# server (the X libraries) are a superset of those of the X client. +# So, as soon as FreeRDP is configured for the server and the wayland +# client, it will believe it also has to build the X client, because +# the libraries it needs are enabled. +# +# Furthermore, the shadow server is always built, even if there's nothing +# it can serve (i.e. the X libs are disabled). +# +# So, we do not care whether we build too much; we remove, as +# post-install hooks, whatever we do not want. + +# If Xorg is enabled, and the server or the X client are, then libX11 +# and libXext are forcibly enabled at the Kconfig level. However, if +# Xorg is enabled but neither the server nor the X client are, then +# there's nothing that guarantees those two libs are enabled. So we +# really must check for them. +ifeq ($(BR2_PACKAGE_XLIB_LIBX11)$(BR2_PACKAGE_XLIB_LIBXEXT),yy) +FREERDP_DEPENDENCIES += xlib_libX11 xlib_libXext +FREERDP_CONF_OPTS += -DWITH_X11=ON +else +FREERDP_CONF_OPTS += -DWITH_X11=OFF +endif + +# The following libs are either optional or mandatory only for either +# the server or the client. A mandatory library for either one is +# selected from Kconfig, so we can make it conditional here +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +FREERDP_CONF_OPTS += -DWITH_XCURSOR=ON +FREERDP_DEPENDENCIES += xlib_libXcursor +else +FREERDP_CONF_OPTS += -DWITH_XCURSOR=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) +FREERDP_CONF_OPTS += -DWITH_XDAMAGE=ON +FREERDP_DEPENDENCIES += xlib_libXdamage +else +FREERDP_CONF_OPTS += -DWITH_XDAMAGE=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +FREERDP_CONF_OPTS += -DWITH_XFIXES=ON +FREERDP_DEPENDENCIES += xlib_libXfixes +else +FREERDP_CONF_OPTS += -DWITH_XFIXES=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +FREERDP_CONF_OPTS += -DWITH_XI=ON +FREERDP_DEPENDENCIES += xlib_libXi +else +FREERDP_CONF_OPTS += -DWITH_XI=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +FREERDP_CONF_OPTS += -DWITH_XINERAMA=ON +FREERDP_DEPENDENCIES += xlib_libXinerama +else +FREERDP_CONF_OPTS += -DWITH_XINERAMA=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y) +FREERDP_CONF_OPTS += -DWITH_XKBFILE=ON +FREERDP_DEPENDENCIES += xlib_libxkbfile +else +FREERDP_CONF_OPTS += -DWITH_XKBFILE=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +FREERDP_CONF_OPTS += -DWITH_XRANDR=ON +FREERDP_DEPENDENCIES += xlib_libXrandr +else +FREERDP_CONF_OPTS += -DWITH_XRANDR=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) +FREERDP_CONF_OPTS += -DWITH_XRENDER=ON +FREERDP_DEPENDENCIES += xlib_libXrender +else +FREERDP_CONF_OPTS += -DWITH_XRENDER=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXTST),y) +FREERDP_CONF_OPTS += -DWITH_XTEST=ON +FREERDP_DEPENDENCIES += xlib_libXtst +else +FREERDP_CONF_OPTS += -DWITH_XTEST=OFF +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXV),y) +FREERDP_CONF_OPTS += -DWITH_XV=ON +FREERDP_DEPENDENCIES += xlib_libXv +else +FREERDP_CONF_OPTS += -DWITH_XV=OFF +endif + +ifeq ($(BR2_PACKAGE_FREERDP_CLIENT_WL),y) +FREERDP_DEPENDENCIES += wayland libxkbcommon +FREERDP_CONF_OPTS += \ + -DWITH_WAYLAND=ON \ + -DWAYLAND_SCANNER=$(HOST_DIR)/bin/wayland-scanner +else +FREERDP_CONF_OPTS += -DWITH_WAYLAND=OFF +endif + +#--------------------------------------- +# Post-install hooks to cleanup and install missing stuff + +# Shadow server is always installed, no matter what, so we manually +# remove it if the user does not want the server. +ifeq ($(BR2_PACKAGE_FREERDP_SERVER),) +define FREERDP_RM_SHADOW_SERVER + rm -f $(TARGET_DIR)/usr/bin/freerdp-shadow +endef +FREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_SHADOW_SERVER +endif # ! server + +# X client is always built as soon as a client is enabled and the +# necessary libs are enabled (e.g. because of the server), so manually +# remove it if the user does not want it. +ifeq ($(BR2_PACKAGE_FREERDP_CLIENT_X11),) +define FREERDP_RM_CLIENT_X11 + rm -f $(TARGET_DIR)/usr/bin/xfreerdp + rm -f $(TARGET_DIR)/usr/lib/libxfreerdp-client* +endef +FREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_CLIENT_X11 +define FREERDP_RM_CLIENT_X11_LIB + rm -f $(STAGING_DIR)/usr/lib/libxfreerdp-client* +endef +FREERDP_POST_INSTALL_STAGING_HOOKS += FREERDP_RM_CLIENT_X11_LIB +endif # ! X client + +# Wayland client is always built as soon as wayland is enabled, so +# manually remove it if the user does not want it. +ifeq ($(BR2_PACKAGE_FREERDP_CLIENT_WL),) +define FREERDP_RM_CLIENT_WL + rm -f $(TARGET_DIR)/usr/bin/wlfreerdp +endef +FREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_RM_CLIENT_WL +endif + +# Remove static libraries in unusual dir +define FREERDP_CLEANUP + rm -rf $(TARGET_DIR)/usr/lib/freerdp +endef +FREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_CLEANUP + +# Install the server key and certificate, so that a client can connect. +# A user can override them with its own in a post-build script, if needed. +# We install them even if the server is not enabled, since another server +# can be built and linked with libfreerdp (e.g. weston with the RDP +# backend). Key and cert are installed world-readable, so non-root users +# can start a server. +define FREERDP_INSTALL_KEYS + $(INSTALL) -m 0644 -D $(@D)/server/Sample/server.key \ + $(TARGET_DIR)/etc/freerdp/keys/server.key + $(INSTALL) -m 0644 -D $(@D)/server/Sample/server.crt \ + $(TARGET_DIR)/etc/freerdp/keys/server.crt +endef +FREERDP_POST_INSTALL_TARGET_HOOKS += FREERDP_INSTALL_KEYS + +$(eval $(cmake-package)) diff --git a/buildroot/package/freescale-imx/Config.in b/buildroot/package/freescale-imx/Config.in new file mode 100644 index 0000000..e33a90d --- /dev/null +++ b/buildroot/package/freescale-imx/Config.in @@ -0,0 +1,90 @@ +menuconfig BR2_PACKAGE_FREESCALE_IMX + bool "Freescale i.MX libraries" + depends on BR2_arm + help + Those packages provide hardware acceleration for GPU or VPU, + hardware optimization or some hardware tools for Freescale + i.MX platforms. + +if BR2_PACKAGE_FREESCALE_IMX +choice + prompt "i.MX platform" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX25_3STACK + bool "imx25-3stack" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS + bool "imx27ads" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX37_3STACK + bool "imx37-3stack" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX50 + bool "imx50" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 + bool "imx51" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53 + bool "imx53" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + bool "imx6q/imx6dl" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S + bool "imx6sl/imx6sx" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL + bool "imx6ul/imx6ull" + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7 + bool "imx7d/imx7ulp" + +endchoice + +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM + string + default "IMX25_3STACK" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX25_3STACK + default "IMX27ADS" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS + default "IMX37_3STACK" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX37_3STACK + default "IMX50" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX50 + default "IMX51" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 + default "IMX53" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53 + default "IMX6Q" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + default "IMX6S" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S + default "IMX6UL" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL + default "IMX7" if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7 + +config BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53 || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + +config BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU + bool + default y if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S || \ + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7 + +source "package/freescale-imx/imx-codec/Config.in" +source "package/freescale-imx/imx-kobs/Config.in" +source "package/freescale-imx/imx-lib/Config.in" +source "package/freescale-imx/imx-m4fwloader/Config.in" +source "package/freescale-imx/imx-parser/Config.in" +source "package/freescale-imx/imx-uuc/Config.in" +source "package/freescale-imx/imx-vpu/Config.in" +source "package/freescale-imx/imx-vpuwrap/Config.in" +source "package/freescale-imx/firmware-imx/Config.in" +if (BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 || BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53) +source "package/freescale-imx/gpu-amd-bin-mx51/Config.in" +source "package/freescale-imx/libz160/Config.in" +endif +if BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU +source "package/freescale-imx/imx-gpu-g2d/Config.in" +source "package/freescale-imx/imx-gpu-viv/Config.in" +source "package/freescale-imx/kernel-module-imx-gpu-viv/Config.in" +endif + +endif diff --git a/buildroot/package/freescale-imx/firmware-imx/Config.in b/buildroot/package/freescale-imx/firmware-imx/Config.in new file mode 100644 index 0000000..fca280a --- /dev/null +++ b/buildroot/package/freescale-imx/firmware-imx/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FIRMWARE_IMX + bool "firmware-imx" + depends on BR2_arm # Only relevant for i.MX + help + Firmware blobs for the Freescale i.MX SoCs. + + It contains blobs for SDMA and VPU. + + This library is provided by Freescale as-is and doesn't have + an upstream. diff --git a/buildroot/package/freescale-imx/firmware-imx/firmware-imx.hash b/buildroot/package/freescale-imx/firmware-imx/firmware-imx.hash new file mode 100644 index 0000000..ca8556f --- /dev/null +++ b/buildroot/package/freescale-imx/firmware-imx/firmware-imx.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 3e107d83ed2367c9565250d6ff3903cc604bf4d9aa505391260ead0f51ceb8d9 firmware-imx-7.2.bin +sha256 faf01d10e484879247963eb97d96622a980232e22a35e487dfe53b13708b686a EULA +sha256 0f34f6175247762e2e1c38319aadf657a53f00ce124e569dfc61b30451549e7a COPYING diff --git a/buildroot/package/freescale-imx/firmware-imx/firmware-imx.mk b/buildroot/package/freescale-imx/firmware-imx/firmware-imx.mk new file mode 100644 index 0000000..630afca --- /dev/null +++ b/buildroot/package/freescale-imx/firmware-imx/firmware-imx.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# firmware-imx +# +################################################################################ + +FIRMWARE_IMX_VERSION = 7.2 +FIRMWARE_IMX_SITE = $(FREESCALE_IMX_SITE) +FIRMWARE_IMX_SOURCE = firmware-imx-$(FIRMWARE_IMX_VERSION).bin + +FIRMWARE_IMX_LICENSE = NXP Semiconductor Software License Agreement +FIRMWARE_IMX_LICENSE_FILES = EULA COPYING +FIRMWARE_IMX_REDISTRIBUTE = NO + +FIRMWARE_IMX_BLOBS = sdma vpu + +define FIRMWARE_IMX_EXTRACT_CMDS + $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(FIRMWARE_IMX_SOURCE)) +endef + +define FIRMWARE_IMX_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware/imx + for blobdir in $(FIRMWARE_IMX_BLOBS); do \ + cp -r $(@D)/firmware/$${blobdir} $(TARGET_DIR)/lib/firmware; \ + done + cp -r $(@D)/firmware/epdc $(TARGET_DIR)/lib/firmware/imx + mv $(TARGET_DIR)/lib/firmware/imx/epdc/epdc_ED060XH2C1.fw.nonrestricted \ + $(TARGET_DIR)/lib/firmware/imx/epdc/epdc_ED060XH2C1.fw +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/freescale-imx/freescale-imx.mk b/buildroot/package/freescale-imx/freescale-imx.mk new file mode 100644 index 0000000..e8ca77f --- /dev/null +++ b/buildroot/package/freescale-imx/freescale-imx.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# freescale-imx +# +################################################################################ + +FREESCALE_IMX_SITE = http://www.freescale.com/lgfiles/NMG/MAD/YOCTO + +# Helper for self-extracting binaries distributed by Freescale. +# +# The --force option makes sure it doesn't fail if the source +# directory already exists. The --auto-accept skips the license check, +# as it is not needed in Buildroot because we have legal-info. Since +# there's a EULA in the binary file, we extract it in this macro, and +# it should therefore be added to the LICENSE_FILES variable of +# packages using this macro. Also, remember to set REDISTRIBUTE to +# "NO". Indeed, this is a legal minefield: the EULA specifies that the +# Board Support Package includes software and hardware (sic!) for +# which a separate license is needed... +# +# $(1): full path to the archive file +# +define FREESCALE_IMX_EXTRACT_HELPER + awk 'BEGIN { start = 0; } \ + /^EOEULA/ { start = 0; } \ + { if (start) print; } \ + /< $(@D)/EULA + cd $(@D) && sh $(1) --force --auto-accept + find $(@D)/$(basename $(notdir $(1))) -mindepth 1 -maxdepth 1 -exec mv {} $(@D) \; + rmdir $(@D)/$(basename $(notdir $(1))) +endef + +include $(sort $(wildcard package/freescale-imx/*/*.mk)) diff --git a/buildroot/package/freescale-imx/gpu-amd-bin-mx51/Config.in b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/Config.in new file mode 100644 index 0000000..cd66c73 --- /dev/null +++ b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/Config.in @@ -0,0 +1,60 @@ +comment "gpu-amd-bin-mx51 needs a glibc EABI toolchain w/ C++" + depends on BR2_arm + depends on !BR2_ARM_EABI || !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GPU_AMD_BIN_MX51 + bool "gpu-amd-bin-mx51 (also imx53)" + depends on BR2_ARM_EABI + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_LIBOPENVG + help + Freescale libraries, headers and executables for the + AMD GPU on i.MX5x, containing OpenGL/ES, OpenVG + and EGL support. + +if BR2_PACKAGE_GPU_AMD_BIN_MX51 + +choice + prompt "Output option" + help + There are two versions of this library: one for + direct framebuffer access, one for X11 rendering. + Choose here which version to install. + +config BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11 + bool "X11" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXDMCP + select BR2_PACKAGE_XLIB_LIBXAU + +comment "X11 backend needs X.org enabled" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_FB + bool "Framebuffer" + +endchoice + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "gpu-amd-bin-mx51" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "gpu-amd-bin-mx51" + +config BR2_PACKAGE_PROVIDES_LIBOPENVG + default "gpu-amd-bin-mx51" + +config BR2_PACKAGE_GPU_AMD_BIN_MX51_EXAMPLES + bool "install examples" + help + Copy the examples to the target. + +endif diff --git a/buildroot/package/freescale-imx/gpu-amd-bin-mx51/egl.pc b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/egl.pc new file mode 100644 index 0000000..b0ff229 --- /dev/null +++ b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/egl.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: egl +Description: Freescale amd-gpu-bin-mx51 implementation of EGL +Version: 7.11.0 +Libs: -L${libdir} -lEGL +Cflags: -I${includedir} diff --git a/buildroot/package/freescale-imx/gpu-amd-bin-mx51/glesv2.pc b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/glesv2.pc new file mode 100644 index 0000000..6f9b7fc --- /dev/null +++ b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/glesv2.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: glesv2 +Description: Freescale amd-gpu-bin-mx51 implementation of OpenGL ESv2 +Version: 7.11.0 +Libs: -L${libdir} -lGLESv2 +Cflags: -I${includedir} diff --git a/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.hash b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.hash new file mode 100644 index 0000000..9c08e4a --- /dev/null +++ b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 c7a6fa03b7aa2a375556c59908876554ba720c1e744baba2debb84a408f790db amd-gpu-x11-bin-mx51-11.09.01.bin +sha256 f0db68a764b5fb199729e7435f606b8d12b61ca97990336c647b7e81f4a584d9 amd-gpu-bin-mx51-11.09.01.bin diff --git a/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk new file mode 100644 index 0000000..44a6b4c --- /dev/null +++ b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# gpu-amd-bin-mx51 +# +################################################################################ + +GPU_AMD_BIN_MX51_SITE = $(FREESCALE_IMX_SITE) +GPU_AMD_BIN_MX51_BASE_VERSION = 11.09.01 +ifeq ($(BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_FB),y) +GPU_AMD_BIN_MX51_VERSION = $(GPU_AMD_BIN_MX51_BASE_VERSION)-fb +GPU_AMD_BIN_MX51_SOURCE = amd-gpu-bin-mx51-$(GPU_AMD_BIN_MX51_BASE_VERSION).bin +else +GPU_AMD_BIN_MX51_VERSION = $(GPU_AMD_BIN_MX51_BASE_VERSION)-x11 +GPU_AMD_BIN_MX51_SOURCE = amd-gpu-x11-bin-mx51-$(GPU_AMD_BIN_MX51_BASE_VERSION).bin +GPU_AMD_BIN_MX51_DEPENDENCIES = libxcb xlib_libX11 xlib_libXext \ + xlib_libXrender xlib_libXau xlib_libXdmcp +endif +GPU_AMD_BIN_MX51_PROVIDES = libegl libgles libopenvg +GPU_AMD_BIN_MX51_INSTALL_STAGING = YES + +GPU_AMD_BIN_MX51_LICENSE = Freescale Semiconductor Software License Agreement +GPU_AMD_BIN_MX51_LICENSE_FILES = EULA +GPU_AMD_BIN_MX51_REDISTRIBUTE = NO + +define GPU_AMD_BIN_MX51_EXTRACT_CMDS + $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(GPU_AMD_BIN_MX51_SOURCE)) +endef + +# Upstream headers need to be compiled with -D_LINUX. It is more convenient +# to rely on __linux__ which is defined in compiler itself +define GPU_AMD_BIN_MX51_FIXUP_HEADERS + $(SED) 's/_LINUX/__linux__/g' $(@D)/usr/include/*/*.h +endef +GPU_AMD_BIN_MX51_POST_PATCH_HOOKS += GPU_AMD_BIN_MX51_FIXUP_HEADERS + +# eglplatform_1.4.h contains X11 compatible headers +ifeq ($(BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11),y) +define GPU_AMD_BIN_MX51_FIXUP_EGL_HEADERS + mv $(STAGING_DIR)/usr/include/EGL/eglplatform_1.4.h $(STAGING_DIR)/usr/include/EGL/eglplatform.h +endef +endif + +define GPU_AMD_BIN_MX51_INSTALL_STAGING_CMDS + $(INSTALL) -d $(STAGING_DIR)/usr/lib/pkgconfig + $(INSTALL) -m 644 package/freescale-imx/gpu-amd-bin-mx51/*.pc $(STAGING_DIR)/usr/lib/pkgconfig/ + $(INSTALL) -m 755 $(@D)/usr/lib/lib* $(STAGING_DIR)/usr/lib/ + cp -r $(@D)/usr/include/* $(STAGING_DIR)/usr/include + $(GPU_AMD_BIN_MX51_FIXUP_EGL_HEADERS) +endef + +ifeq ($(BR2_PACKAGE_GPU_AMD_BIN_MX51_EXAMPLES),y) +define GPU_AMD_BIN_MX51_INSTALL_EXAMPLES + $(INSTALL) -d $(TARGET_DIR)/usr/share/examples/gpu_amd_samples + $(INSTALL) -m 755 $(@D)/usr/bin/* $(TARGET_DIR)/usr/share/examples/gpu_amd_samples +endef +endif + +define GPU_AMD_BIN_MX51_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 $(@D)/usr/lib/lib*so* $(TARGET_DIR)/usr/lib/ + $(GPU_AMD_BIN_MX51_INSTALL_EXAMPLES) +endef + +define GPU_AMD_BIN_MX51_DEVICES + /dev/gsl_kmod c 640 0 0 249 0 1 4 +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/freescale-imx/gpu-amd-bin-mx51/vg.pc b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/vg.pc new file mode 100644 index 0000000..8fe956e --- /dev/null +++ b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/vg.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: vg +Description: Freescale amd-gpu-bin-mx51 implementation of OpenVG +Version: 1.1 +Libs: -L${libdir} -lOpenVG +Cflags: -I${includedir}/ diff --git a/buildroot/package/freescale-imx/imx-codec/Config.in b/buildroot/package/freescale-imx/imx-codec/Config.in new file mode 100644 index 0000000..0ecb92b --- /dev/null +++ b/buildroot/package/freescale-imx/imx-codec/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_IMX_CODEC + bool "imx-codec" + depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX + depends on BR2_TOOLCHAIN_USES_GLIBC # prebuilt binaries + help + Binary codec libraries for the NXP i.MX SoCs. + + This library is provided by NXP as-is and doesn't have + an upstream. + +comment "imx-codec needs a glibc toolchain" + depends on BR2_arm || BR2_aarch64 + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/freescale-imx/imx-codec/imx-codec.hash b/buildroot/package/freescale-imx/imx-codec/imx-codec.hash new file mode 100644 index 0000000..53d8f71 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-codec/imx-codec.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 20d3f9b4187fcd9e7007c94558a00bab1191513eee74b6f0d8c7b43f874e06ed imx-codec-4.2.1.bin diff --git a/buildroot/package/freescale-imx/imx-codec/imx-codec.mk b/buildroot/package/freescale-imx/imx-codec/imx-codec.mk new file mode 100644 index 0000000..ea4d901 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-codec/imx-codec.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# imx-codec +# +################################################################################ + +IMX_CODEC_VERSION = 4.2.1 +IMX_CODEC_SITE = $(FREESCALE_IMX_SITE) +IMX_CODEC_SOURCE = imx-codec-$(IMX_CODEC_VERSION).bin +IMX_CODEC_INSTALL_STAGING = YES + +IMX_CODEC_LICENSE = NXP Semiconductor Software License Agreement, BSD-3-Clause (flac, ogg headers) +IMX_CODEC_LICENSE_FILES = EULA COPYING +IMX_CODEC_REDISTRIBUTE = NO + +ifeq ($(BR2_aarch64),y) +IMX_CODEC_CONF_OPTS += --enable-armv8 +endif + +ifeq ($(BR2_ARM_EABIHF),y) +IMX_CODEC_CONF_OPTS += --enable-fhw +endif + +ifeq ($(BR2_PACKAGE_IMX_VPU),y) +IMX_CODEC_CONF_OPTS += --enable-vpu +endif + +define IMX_CODEC_EXTRACT_CMDS + $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_CODEC_SOURCE)) +endef + +# FIXME The Makefile installs both the arm9 and arm11 versions of the +# libraries, but we only need one of them. + +# Upstream installs libraries into usr/lib/imx-mm, but the dynamic +# loader only looks in usr/lib, so move the libraries there +define IMX_CODEC_FIXUP_TARGET_PATH + find $(TARGET_DIR)/usr/lib/imx-mm -not -type d \ + -exec mv {} $(TARGET_DIR)/usr/lib \; + rm -rf $(TARGET_DIR)/usr/lib/imx-mm +endef +IMX_CODEC_POST_INSTALL_TARGET_HOOKS += IMX_CODEC_FIXUP_TARGET_PATH + +$(eval $(autotools-package)) diff --git a/buildroot/package/freescale-imx/imx-gpu-g2d/Config.in b/buildroot/package/freescale-imx/imx-gpu-g2d/Config.in new file mode 100644 index 0000000..4737578 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-gpu-g2d/Config.in @@ -0,0 +1,25 @@ +comment "imx-gpu-g2d needs a glibc toolchain with armhf enabled" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF + +config BR2_PACKAGE_IMX_GPU_G2D + bool "imx-gpu-g2d" + # Pre-built binaries only available for ARM EABIhf + depends on BR2_ARM_EABIHF + # Library binaries are linked against libc.so.6 + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_IMX_GPU_VIV + help + Userspace 2D libraries for Vivante GPU on i.MX platforms. + + This library is provided by NXP as-is and doesn't have an + upstream. + +if BR2_PACKAGE_IMX_GPU_G2D + +config BR2_PACKAGE_IMX_GPU_G2D_EXAMPLES + bool "install examples" + help + Copy the Vivante G2D examples to the target. + +endif diff --git a/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.hash b/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.hash new file mode 100644 index 0000000..299ec70 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.hash @@ -0,0 +1 @@ +sha256 070a95aa9942bd67e8ba4012962df74143bffb9998301ac097dab5e1437000d8 imx-gpu-g2d-6.2.2.p0.bin diff --git a/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk b/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk new file mode 100644 index 0000000..0c92b82 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# imx-gpu-g2d +# +################################################################################ + +IMX_GPU_G2D_VERSION = 6.2.2.p0 +IMX_GPU_G2D_SITE = $(FREESCALE_IMX_SITE) +IMX_GPU_G2D_SOURCE = imx-gpu-g2d-$(IMX_GPU_G2D_VERSION).bin +IMX_GPU_G2D_DEPENDENCIES = imx-gpu-viv +IMX_GPU_G2D_INSTALL_STAGING = YES + +IMX_GPU_G2D_LICENSE = NXP Semiconductor Software License Agreement +IMX_GPU_G2D_LICENSE_FILES = EULA COPYING +IMX_GPU_G2D_REDISTRIBUTE = NO + +define IMX_GPU_G2D_EXTRACT_CMDS + $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_GPU_G2D_SOURCE)) +endef + +define IMX_GPU_G2D_INSTALL_STAGING_CMDS + cp -a $(@D)/g2d/usr/* $(STAGING_DIR)/usr +endef + +ifeq ($(BR2_PACKAGE_IMX_GPU_G2D_EXAMPLES),y) +define IMX_GPU_G2D_INSTALL_EXAMPLES + mkdir -p $(TARGET_DIR)/usr/share/examples/ + cp -a $(@D)/gpu-demos/opt/* $(TARGET_DIR)/usr/share/examples/ +endef +endif + +define IMX_GPU_G2D_INSTALL_TARGET_CMDS + $(IMX_GPU_G2D_INSTALL_EXAMPLES) + cp -a $(@D)/g2d/usr/lib $(TARGET_DIR)/usr +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/freescale-imx/imx-gpu-viv/Config.in b/buildroot/package/freescale-imx/imx-gpu-viv/Config.in new file mode 100644 index 0000000..cf58ad4 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-gpu-viv/Config.in @@ -0,0 +1,76 @@ +comment "imx-gpu-viv needs a glibc toolchain with armhf enabled" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF + +config BR2_PACKAGE_IMX_GPU_VIV + bool "imx-gpu-viv" + # Pre-built binaries only available for ARM EABIhf + depends on BR2_ARM_EABIHF + # Library binaries are linked against libc.so.6 + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_LIBOPENVG + help + Userspace libraries for Vivante GPU on i.MX6 platforms + + It contains libraries and headers for GLES, OpenCL, and + OpenVG. It also contains a DRI plugin for X11. It also + contains a plugin for DirectFB-1.4.0, but that doesn't work + together with buildroot's DirectFB version. + + This library is provided by Freescale as-is and doesn't have + an upstream. + +if BR2_PACKAGE_IMX_GPU_VIV + +choice + prompt "Output option" + help + There are two versions of this library: one for + direct framebuffer access, one for X11 rendering. + Choose here which version to install. + +config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 + bool "X11" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + +comment "X11 backend needs Xorg package" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB + bool "Framebuffer" + +endchoice + +config BR2_PACKAGE_IMX_GPU_VIV_OUTPUT + string + default "x11" if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 + default "fb" if BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_FB + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "imx-gpu-viv" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "imx-gpu-viv" + +config BR2_PACKAGE_PROVIDES_LIBOPENVG + default "imx-gpu-viv" + +config BR2_PACKAGE_IMX_GPU_VIV_EXAMPLES + bool "install examples" + help + Copy the Vivante examples to the target. + + Warning: examples take approximately 150 MB of disk space. + +config BR2_PACKAGE_IMX_GPU_VIV_GMEM_INFO + bool "install gmem_info tool" + help + Copy the gmem_info tool to the target which provides + information about GPU memory consumption. + +endif diff --git a/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.hash b/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.hash new file mode 100644 index 0000000..894bc90 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.hash @@ -0,0 +1 @@ +sha256 4f93a4412c93ca5959aa2437bfed2ecbaf983b5b272be5977f76a967de5db150 imx-gpu-viv-6.2.2.p0-aarch32.bin diff --git a/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk b/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk new file mode 100644 index 0000000..9104750 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk @@ -0,0 +1,114 @@ +################################################################################ +# +# imx-gpu-viv +# +################################################################################ + +IMX_GPU_VIV_VERSION = 6.2.2.p0-aarch32 +IMX_GPU_VIV_SITE = $(FREESCALE_IMX_SITE) +IMX_GPU_VIV_SOURCE = imx-gpu-viv-$(IMX_GPU_VIV_VERSION).bin + +IMX_GPU_VIV_INSTALL_STAGING = YES + +IMX_GPU_VIV_LICENSE = NXP Semiconductor Software License Agreement +IMX_GPU_VIV_LICENSE_FILES = EULA COPYING +IMX_GPU_VIV_REDISTRIBUTE = NO + +IMX_GPU_VIV_PROVIDES = libegl libgles libopenvg +IMX_GPU_VIV_LIB_TARGET = $(call qstrip,$(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT)) + +ifeq ($(IMX_GPU_VIV_LIB_TARGET),x11) +# The libGAL.so library provided by imx-gpu-viv uses X functions. Packages +# may want to link against libGAL.so (QT5 Base with OpenGL and X support +# does so). For this to work we need build dependencies to libXdamage, +# libXext and libXfixes so that X functions used in libGAL.so are referenced. +IMX_GPU_VIV_DEPENDENCIES += xlib_libXdamage xlib_libXext xlib_libXfixes +endif + +define IMX_GPU_VIV_EXTRACT_CMDS + $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_GPU_VIV_SOURCE)) +endef + +# Instead of building, we fix up the inconsistencies that exist +# in the upstream archive here. +# Make sure these commands are idempotent. +define IMX_GPU_VIV_BUILD_CMDS + $(SED) 's/defined(LINUX)/defined(__linux__)/g' $(@D)/gpu-core/usr/include/*/*.h + ln -sf libGL.so.1.2 $(@D)/gpu-core/usr/lib/libGL.so + ln -sf libGL.so.1.2 $(@D)/gpu-core/usr/lib/libGL.so.1 + ln -sf libGL.so.1.2 $(@D)/gpu-core/usr/lib/libGL.so.1.2.0 + ln -sf libEGL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libEGL.so + ln -sf libEGL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libEGL.so.1 + ln -sf libEGL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libEGL.so.1.0 + ln -sf libGLESv2-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGLESv2.so + ln -sf libGLESv2-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGLESv2.so.2 + ln -sf libGLESv2-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGLESv2.so.2.0.0 + ln -sf libGAL-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libGAL.so + ln -sf libVDK-$(IMX_GPU_VIV_LIB_TARGET).so $(@D)/gpu-core/usr/lib/libVDK.so +endef + +ifeq ($(IMX_GPU_VIV_LIB_TARGET),fb) +define IMX_GPU_VIV_FIXUP_FB_HEADERS + $(SED) '39i\ + #if !defined(EGL_API_X11) && !defined(EGL_API_DFB) && !defined(EGL_API_FB) \n\ + #define EGL_API_FB \n\ + #endif' $(STAGING_DIR)/usr/include/EGL/eglplatform.h +endef +endif + +ifeq ($(IMX_GPU_VIV_LIB_TARGET),fb) +define IMX_GPU_VIV_FIXUP_PKGCONFIG + ln -sf egl_linuxfb.pc $(@D)/gpu-core/usr/lib/pkgconfig/egl.pc +endef +endif + +ifeq ($(IMX_GPU_VIV_LIB_TARGET),x11) +define IMX_GPU_VIV_FIXUP_PKGCONFIG + for lib in egl gbm glesv1_cm glesv2 vg; do \ + ln -sf $${lib}_x11.pc $(@D)/gpu-core/usr/lib/pkgconfig/$${lib}.pc || exit 1; \ + done +endef +endif + +define IMX_GPU_VIV_INSTALL_STAGING_CMDS + cp -r $(@D)/gpu-core/usr/* $(STAGING_DIR)/usr + $(IMX_GPU_VIV_FIXUP_FB_HEADERS) + $(IMX_GPU_VIV_FIXUP_PKGCONFIG) + for lib in egl gbm glesv1_cm glesv2 vg; do \ + $(INSTALL) -m 0644 -D \ + $(@D)/gpu-core/usr/lib/pkgconfig/$${lib}.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/$${lib}.pc; \ + done +endef + +ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_EXAMPLES),y) +define IMX_GPU_VIV_INSTALL_EXAMPLES + mkdir -p $(TARGET_DIR)/usr/share/examples/ + cp -r $(@D)/gpu-demos/opt/* $(TARGET_DIR)/usr/share/examples/ +endef +endif + +ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_GMEM_INFO),y) +define IMX_GPU_VIV_INSTALL_GMEM_INFO + cp -dpfr $(@D)/gpu-tools/gmem-info/usr/bin/* $(TARGET_DIR)/usr/bin/ +endef +endif + +# On the target, remove the unused libraries. +# Note that this is _required_, else ldconfig may create symlinks +# to the wrong library +define IMX_GPU_VIV_INSTALL_TARGET_CMDS + $(IMX_GPU_VIV_INSTALL_EXAMPLES) + $(IMX_GPU_VIV_INSTALL_GMEM_INFO) + cp -a $(@D)/gpu-core/usr/lib $(TARGET_DIR)/usr + for lib in EGL GAL GLESv2 VDK; do \ + for f in $(TARGET_DIR)/usr/lib/lib$${lib}-*.so; do \ + case $$f in \ + *-$(IMX_GPU_VIV_LIB_TARGET).so) : ;; \ + *) $(RM) $$f ;; \ + esac; \ + done; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/freescale-imx/imx-kobs/0001-Fix-musl-build.patch b/buildroot/package/freescale-imx/imx-kobs/0001-Fix-musl-build.patch new file mode 100644 index 0000000..ce123de --- /dev/null +++ b/buildroot/package/freescale-imx/imx-kobs/0001-Fix-musl-build.patch @@ -0,0 +1,39 @@ +[PATCH] Fix musl build + +Signed-off-by: Gary Bisson +--- + src/mtd.c | 1 + + src/mtd.h | 5 +++++ + 2 files changed, 6 insertions(+) + +diff --git a/src/mtd.c b/src/mtd.c +index 1edc441..6d2264c 100644 +--- a/src/mtd.c ++++ b/src/mtd.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + #include + #include + +diff --git a/src/mtd.h b/src/mtd.h +index bd21add..debfc84 100644 +--- a/src/mtd.h ++++ b/src/mtd.h +@@ -31,6 +31,11 @@ + #include "BootControlBlocks.h" + #include "rom_nand_hamming_code_ecc.h" + ++// musl library doesn't define loff_t ++#if !defined(__GLIBC__) && !defined(__UCLIBC__) ++#define loff_t off_t ++#endif ++ + //------------------------------------------------------------------------------ + // Re-definitions of true and false, because the standard ones aren't good + // enough? +-- +2.5.1 + diff --git a/buildroot/package/freescale-imx/imx-kobs/0002-Fix-build-for-recent-toolchains.patch b/buildroot/package/freescale-imx/imx-kobs/0002-Fix-build-for-recent-toolchains.patch new file mode 100644 index 0000000..c5cfb80 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-kobs/0002-Fix-build-for-recent-toolchains.patch @@ -0,0 +1,26 @@ +[PATCH] Fix build for recent toolchains + +Starting with Linux 4.4 headers, mtd-user.h isn't including stdint.h +anymore which breaks the build. + +Signed-off-by: Gary Bisson +--- + src/BootControlBlocks.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/BootControlBlocks.h b/src/BootControlBlocks.h +index 192eb61..aacdb64 100644 +--- a/src/BootControlBlocks.h ++++ b/src/BootControlBlocks.h +@@ -20,6 +20,8 @@ + #ifndef BOOTCONTROLBLOCKS_H_ + #define BOOTCONTROLBLOCKS_H_ + ++#include ++ + #define NCB_FINGERPRINT1 0x504d5453 //!< 'STMP' + #define NCB_FINGERPRINT2 0x2042434e //!< 'NCB' - NAND Control Block + #define NCB_FINGERPRINT3 0x4e494252 //!< 'RBIN' - ROM Boot Image Block - N +-- +2.6.4 + diff --git a/buildroot/package/freescale-imx/imx-kobs/Config.in b/buildroot/package/freescale-imx/imx-kobs/Config.in new file mode 100644 index 0000000..61be9f2 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-kobs/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_IMX_KOBS + bool "imx-kobs" + depends on BR2_arm # Only relevant for i.MX + help + The imx-kobs tool is used for writing images to NAND on i.MX + platforms. + + This library is provided by Freescale as-is and doesn't have + an upstream. diff --git a/buildroot/package/freescale-imx/imx-kobs/imx-kobs.hash b/buildroot/package/freescale-imx/imx-kobs/imx-kobs.hash new file mode 100644 index 0000000..2ede0a9 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-kobs/imx-kobs.hash @@ -0,0 +1 @@ +sha256 5855c8964f908ad30e5d4500180ee57c51af68186289ef1bdf8553ee60d3b1f5 imx-kobs-a0e9adce2fb7fcd57e794d7f9a5deba0f94f521b.tar.gz diff --git a/buildroot/package/freescale-imx/imx-kobs/imx-kobs.mk b/buildroot/package/freescale-imx/imx-kobs/imx-kobs.mk new file mode 100644 index 0000000..d6a250c --- /dev/null +++ b/buildroot/package/freescale-imx/imx-kobs/imx-kobs.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# imx-kobs +# +################################################################################ + +IMX_KOBS_VERSION = a0e9adce2fb7fcd57e794d7f9a5deba0f94f521b +IMX_KOBS_SITE = $(call github,codeauroraforum,imx-kobs,$(IMX_KOBS_VERSION)) +IMX_KOBS_LICENSE = GPL-2.0+ +IMX_KOBS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/freescale-imx/imx-lib/Config.in b/buildroot/package/freescale-imx/imx-lib/Config.in new file mode 100644 index 0000000..746788e --- /dev/null +++ b/buildroot/package/freescale-imx/imx-lib/Config.in @@ -0,0 +1,15 @@ +comment "imx-lib needs an imx-specific Linux kernel to be built" + depends on BR2_arm && !BR2_LINUX_KERNEL + +config BR2_PACKAGE_IMX_LIB + bool "imx-lib" + depends on BR2_LINUX_KERNEL + depends on BR2_arm # Only relevant for i.MX + help + Library of userspace helpers specific for the Freescale i.MX + platform. It wraps the kernel interfaces for some i.MX + platform specific drivers. It requires a kernel that + includes the i.MX specific headers to be built. + + This library is provided by Freescale as-is and doesn't have + an upstream. diff --git a/buildroot/package/freescale-imx/imx-lib/imx-lib.hash b/buildroot/package/freescale-imx/imx-lib/imx-lib.hash new file mode 100644 index 0000000..b3fce59 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-lib/imx-lib.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 245ace9b2c50d6c13a804d9c4492a5a850c626e7537f0d0bad81670b2824892f imx-lib-rel_imx_4.9.x_1.0.0_ga.tar.gz diff --git a/buildroot/package/freescale-imx/imx-lib/imx-lib.mk b/buildroot/package/freescale-imx/imx-lib/imx-lib.mk new file mode 100644 index 0000000..e823685 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-lib/imx-lib.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# imx-lib +# +################################################################################ + +IMX_LIB_VERSION = rel_imx_4.9.x_1.0.0_ga +IMX_LIB_SITE = https://source.codeaurora.org/external/imx/imx-lib +IMX_LIB_SITE_METHOD = git +IMX_LIB_LICENSE = LGPL-2.1+ +IMX_LIB_LICENSE_FILES = COPYING-LGPL-2.1 + +IMX_LIB_INSTALL_STAGING = YES + +# imx-lib needs access to imx-specific kernel headers +IMX_LIB_DEPENDENCIES += linux +IMX_LIB_INCLUDE = \ + -idirafter $(LINUX_DIR)/include/uapi + +IMX_LIB_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + PLATFORM=$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM) \ + INCLUDE="$(IMX_LIB_INCLUDE)" + +define IMX_LIB_BUILD_CMDS + $(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D) +endef + +define IMX_LIB_INSTALL_STAGING_CMDS + $(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(STAGING_DIR) install +endef + +define IMX_LIB_INSTALL_TARGET_CMDS + $(IMX_LIB_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/freescale-imx/imx-m4fwloader/Config.in b/buildroot/package/freescale-imx/imx-m4fwloader/Config.in new file mode 100644 index 0000000..937f82f --- /dev/null +++ b/buildroot/package/freescale-imx/imx-m4fwloader/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_IMX_M4FWLOADER + bool "imx-m4fwloader" + depends on BR2_arm # Only relevant for i.MX + help + This package provides a tool to load a firmware to the + Cortex-M4 core available in some i.MX processors. + + https://github.com/codeauroraforum/imx-m4fwloader diff --git a/buildroot/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.hash b/buildroot/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.hash new file mode 100644 index 0000000..2bf3f15 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 fb6334900972fe389e808845417dd9045fb0f7eb47952fc22a00f4cdaf94af1a imx-m4fwloader-8cf4d17a09ba23250d43381b49ba00d92406fad9.tar.gz +sha256 c03cea027b4b40e4402fabd08557736727ec3d5bc54ad64ab6472de432198cad LICENSE diff --git a/buildroot/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.mk b/buildroot/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.mk new file mode 100644 index 0000000..cc48493 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-m4fwloader/imx-m4fwloader.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# imx-m4fwloader +# +################################################################################ + +IMX_M4FWLOADER_VERSION = 8cf4d17a09ba23250d43381b49ba00d92406fad9 +IMX_M4FWLOADER_SITE = $(call github,codeauroraforum,imx-m4fwloader,$(IMX_M4FWLOADER_VERSION)) +IMX_M4FWLOADER_LICENSE = GPL-2.0+ +IMX_M4FWLOADER_LICENSE_FILES = LICENSE + +define IMX_M4FWLOADER_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -o $(@D)/imx-m4fwloader \ + $(@D)/m4fwloader.c +endef + +define IMX_M4FWLOADER_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/imx-m4fwloader \ + $(TARGET_DIR)/usr/sbin/imx-m4fwloader +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/freescale-imx/imx-parser/Config.in b/buildroot/package/freescale-imx/imx-parser/Config.in new file mode 100644 index 0000000..028b2bf --- /dev/null +++ b/buildroot/package/freescale-imx/imx-parser/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_IMX_PARSER + bool "imx-parser" + depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX + help + Binary parser libraries for the NXP i.MX SoCs. + + This library is provided by NXP as-is and doesn't have + an upstream. diff --git a/buildroot/package/freescale-imx/imx-parser/imx-parser.hash b/buildroot/package/freescale-imx/imx-parser/imx-parser.hash new file mode 100644 index 0000000..3266f48 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-parser/imx-parser.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 36d3ae7285f3a83a87abf680b8a52b3c07df869d2443de844fb5f0ff528ca862 imx-parser-4.2.1.bin diff --git a/buildroot/package/freescale-imx/imx-parser/imx-parser.mk b/buildroot/package/freescale-imx/imx-parser/imx-parser.mk new file mode 100644 index 0000000..d79a444 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-parser/imx-parser.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# imx-parser +# +################################################################################ + +IMX_PARSER_VERSION = 4.2.1 +IMX_PARSER_SITE = $(FREESCALE_IMX_SITE) +IMX_PARSER_SOURCE = imx-parser-$(IMX_PARSER_VERSION).bin +IMX_PARSER_INSTALL_STAGING = YES + +IMX_PARSER_LICENSE = NXP Semiconductor Software License Agreement +IMX_PARSER_LICENSE_FILES = EULA COPYING +IMX_PARSER_REDISTRIBUTE = NO + +ifeq ($(BR2_aarch64),y) +IMX_PARSER_CONF_OPTS += --enable-armv8 +endif + +ifeq ($(BR2_ARM_EABIHF),y) +IMX_PARSER_CONF_OPTS += --enable-fhw +else +IMX_PARSER_CONF_OPTS += --enable-fsw +endif + +define IMX_PARSER_EXTRACT_CMDS + $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_PARSER_SOURCE)) +endef + +# The Makefile installs several versions of the libraries, but we only +# need one of them, depending on the platform. + +# Upstream installs libraries into usr/lib/imx-mm, but the dynamic +# loader only looks in usr/lib, so move the libraries there +define IMX_PARSER_FIXUP_TARGET_PATH + find $(TARGET_DIR)/usr/lib/imx-mm -not -type d \ + -exec mv {} $(TARGET_DIR)/usr/lib \; + rm -rf $(TARGET_DIR)/usr/lib/imx-mm +endef +IMX_PARSER_POST_INSTALL_TARGET_HOOKS += IMX_PARSER_FIXUP_TARGET_PATH + +$(eval $(autotools-package)) diff --git a/buildroot/package/freescale-imx/imx-uuc/Config.in b/buildroot/package/freescale-imx/imx-uuc/Config.in new file mode 100644 index 0000000..ed734ad --- /dev/null +++ b/buildroot/package/freescale-imx/imx-uuc/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_IMX_UUC + bool "imx-uuc" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_arm # Only relevant for i.MX + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_HOST_DOSFSTOOLS + help + This package provides the Universal Adapter user-space + utility that is used to receive commands from the + Manufacturing Tool using the Freescale UTP Protocol. + + It requires a Freescale/NXP kernel whose configuration + contains the CONFIG_FSL_UTP option. + + This package is provided by Freescale/NXP as-is and doesn't + have an upstream. + +comment "imx-uuc needs a toolchain w/ threads" + depends on BR2_arm + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/freescale-imx/imx-uuc/S80imx-uuc b/buildroot/package/freescale-imx/imx-uuc/S80imx-uuc new file mode 100644 index 0000000..9a92c98 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-uuc/S80imx-uuc @@ -0,0 +1,27 @@ +#!/bin/sh + +NAME=uuc +DAEMON=/usr/bin/$NAME + +case "$1" in + start) + printf "Starting $NAME: " + start-stop-daemon -S -q -b -m -p /var/run/${NAME}.pid -x $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping $NAME: " + start-stop-daemon -K -q -p /var/run/${NAME}.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/freescale-imx/imx-uuc/imx-uuc.hash b/buildroot/package/freescale-imx/imx-uuc/imx-uuc.hash new file mode 100644 index 0000000..c9c29f8 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-uuc/imx-uuc.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 1463e855d1229e6b6c02df2085f6bff5974bc061d13a61646b63675c160cba99 imx-uuc-2ae634281a39c82b6a8ee0fdcfbfbe42183ceb53.tar.gz diff --git a/buildroot/package/freescale-imx/imx-uuc/imx-uuc.mk b/buildroot/package/freescale-imx/imx-uuc/imx-uuc.mk new file mode 100644 index 0000000..5e0bb3b --- /dev/null +++ b/buildroot/package/freescale-imx/imx-uuc/imx-uuc.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# imx-uuc +# +################################################################################ + +IMX_UUC_VERSION = 2ae634281a39c82b6a8ee0fdcfbfbe42183ceb53 +IMX_UUC_SITE = $(call github,codeauroraforum,imx-uuc,$(IMX_UUC_VERSION)) +IMX_UUC_LICENSE = GPL-2.0+ +IMX_UUC_LICENSE_FILES = COPYING + +# mkfs.vfat is needed to create a FAT partition used by g_mass_storage +# so Windows do not offer to format the device when connected to the PC. +IMX_UUC_DEPENDENCIES = host-dosfstools + +define IMX_UUC_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC=$(TARGET_CC) +endef + +define IMX_UUC_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/uuc $(TARGET_DIR)/usr/bin/uuc + $(INSTALL) -D -m 755 $(@D)/sdimage $(TARGET_DIR)/usr/bin/sdimage + dd if=/dev/zero of=$(TARGET_DIR)/fat bs=1M count=1 + $(HOST_DIR)/sbin/mkfs.vfat $(TARGET_DIR)/fat +endef + +define IMX_UUC_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/freescale-imx/imx-uuc/S80imx-uuc \ + $(TARGET_DIR)/etc/init.d/S80imx-uuc +endef + +define IMX_UUC_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/freescale-imx/imx-uuc/imx-uuc.service \ + $(TARGET_DIR)/usr/lib/systemd/system/imx-uuc.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/ + ln -fs ../../../../usr/lib/systemd/system/imx-uuc.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/imx-uuc.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/freescale-imx/imx-uuc/imx-uuc.service b/buildroot/package/freescale-imx/imx-uuc/imx-uuc.service new file mode 100644 index 0000000..fae7fc6 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-uuc/imx-uuc.service @@ -0,0 +1,11 @@ +[Unit] +Description=i.MX Universal UTP Communication Service +After=systemd-modules-load.service + +[Service] +Type=simple +ExecStart=/usr/bin/uuc + +[Install] +WantedBy=multi-user.target + diff --git a/buildroot/package/freescale-imx/imx-vpu/Config.in b/buildroot/package/freescale-imx/imx-vpu/Config.in new file mode 100644 index 0000000..779717f --- /dev/null +++ b/buildroot/package/freescale-imx/imx-vpu/Config.in @@ -0,0 +1,17 @@ +comment "imx-vpu needs an i.MX platform with VPU support" + depends on BR2_arm + depends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + +config BR2_PACKAGE_IMX_VPU + bool "imx-vpu" + depends on BR2_arm # Only relevant for i.MX + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + select BR2_PACKAGE_FIRMWARE_IMX + help + Library of userspace helpers specific for the Freescale i.MX + platform. It wraps the kernel interfaces for the i.MX platform + Video Processing Unit (VPU) driver. It requires a kernel that + includes the i.MX specific headers to be built. + + This library is provided by Freescale as-is and doesn't have + an upstream. diff --git a/buildroot/package/freescale-imx/imx-vpu/imx-vpu.hash b/buildroot/package/freescale-imx/imx-vpu/imx-vpu.hash new file mode 100644 index 0000000..0ac0f3d --- /dev/null +++ b/buildroot/package/freescale-imx/imx-vpu/imx-vpu.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 ee265e88d17c7369bd9cb917e7cce035b8c7ee2ba4491645fdab9f382f54beb0 imx-vpu-5.4.37.bin diff --git a/buildroot/package/freescale-imx/imx-vpu/imx-vpu.mk b/buildroot/package/freescale-imx/imx-vpu/imx-vpu.mk new file mode 100644 index 0000000..e3a1ee6 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-vpu/imx-vpu.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# imx-vpu +# +################################################################################ + +IMX_VPU_VERSION = 5.4.37 +IMX_VPU_SITE = $(FREESCALE_IMX_SITE) +IMX_VPU_SOURCE = imx-vpu-$(IMX_VPU_VERSION).bin + +IMX_VPU_INSTALL_STAGING = YES + +IMX_VPU_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + PLATFORM=$(BR2_PACKAGE_FREESCALE_IMX_PLATFORM) + +IMX_VPU_LICENSE = NXP Semiconductor Software License Agreement +IMX_VPU_LICENSE_FILES = EULA COPYING +IMX_VPU_REDISTRIBUTE = NO + +define IMX_VPU_EXTRACT_CMDS + $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_VPU_SOURCE)) +endef + +define IMX_VPU_BUILD_CMDS + $(IMX_VPU_MAKE_ENV) $(MAKE1) -C $(@D) +endef + +define IMX_VPU_INSTALL_STAGING_CMDS + $(IMX_VPU_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(STAGING_DIR) install +endef + +define IMX_VPU_INSTALL_TARGET_CMDS + $(IMX_VPU_MAKE_ENV) $(MAKE1) -C $(@D) DEST_DIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/freescale-imx/imx-vpuwrap/Config.in b/buildroot/package/freescale-imx/imx-vpuwrap/Config.in new file mode 100644 index 0000000..bdfa147 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-vpuwrap/Config.in @@ -0,0 +1,20 @@ +comment "imx-vpuwrap needs an imx-specific Linux kernel to be built" + depends on BR2_arm + depends on !BR2_LINUX_KERNEL + +comment "imx-vpuwrap needs an i.MX platform with VPU support" + depends on BR2_arm + depends on BR2_LINUX_KERNEL && !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + +config BR2_PACKAGE_IMX_VPUWRAP + bool "imx-vpuwrap" + depends on BR2_LINUX_KERNEL + depends on BR2_arm # Only relevant for i.MX + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + select BR2_PACKAGE_IMX_VPU + help + Wrapper library for the vpu library, giving it a different + API. + + This library is provided by NXP as-is and doesn't have + an upstream. diff --git a/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.hash b/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.hash new file mode 100644 index 0000000..2999984 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 282e7f8766ce385d8752bd29f04ddeff709ece0846be97547cf982183bbe241e imx-vpuwrap-1.0.68.bin diff --git a/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk b/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk new file mode 100644 index 0000000..7cbf778 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# imx-vpuwrap +# +################################################################################ + +IMX_VPUWRAP_VERSION = 1.0.68 +IMX_VPUWRAP_SITE = $(FREESCALE_IMX_SITE) +IMX_VPUWRAP_SOURCE = imx-vpuwrap-$(IMX_VPUWRAP_VERSION).bin +IMX_VPUWRAP_DEPENDENCIES = imx-vpu +IMX_VPUWRAP_INSTALL_STAGING = YES + +IMX_VPUWRAP_LICENSE = NXP Semiconductor Software License Agreement +IMX_VPUWRAP_LICENSE_FILES = EULA COPYING +IMX_VPUWRAP_REDISTRIBUTE = NO + +define IMX_VPUWRAP_EXTRACT_CMDS + $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_VPUWRAP_SOURCE)) +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/Config.in b/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/Config.in new file mode 100644 index 0000000..038bd4d --- /dev/null +++ b/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/Config.in @@ -0,0 +1,16 @@ +comment "kernel-module-imx-gpu-viv needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_KERNEL_MODULE_IMX_GPU_VIV + bool "kernel-module-imx-gpu-viv" + depends on BR2_LINUX_KERNEL + help + Kernel loadable module for Vivante GPU. + + This package uses an exact copy of the GPU kernel driver + source code of the same version as base and include fixes + and improvements developed by FSL Community. + + This module is only meant for NXP-based kernel up to 4.1.x. + + https://github.com/Freescale/kernel-module-imx-gpu-viv diff --git a/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.hash b/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.hash new file mode 100644 index 0000000..c6204af --- /dev/null +++ b/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 35db597ae0dd8e9e80511e5e9d882a01e4c178b83ffc192c8dd6a1a35859aa13 kernel-module-imx-gpu-viv-3b9e057f29853fd29364aa666328a92b807007d7.tar.gz diff --git a/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.mk b/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.mk new file mode 100644 index 0000000..2e6744c --- /dev/null +++ b/buildroot/package/freescale-imx/kernel-module-imx-gpu-viv/kernel-module-imx-gpu-viv.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# kernel-module-imx-gpu-viv +# +################################################################################ + +KERNEL_MODULE_IMX_GPU_VIV_VERSION = 3b9e057f29853fd29364aa666328a92b807007d7 +KERNEL_MODULE_IMX_GPU_VIV_SITE = \ + $(call github,Freescale,kernel-module-imx-gpu-viv,$(KERNEL_MODULE_IMX_GPU_VIV_VERSION)) +KERNEL_MODULE_IMX_GPU_VIV_LICENSE = GPL-2.0 +KERNEL_MODULE_IMX_GPU_VIV_LICENSE_FILES = COPYING + +KERNEL_MODULE_IMX_GPU_VIV_MODULE_MAKE_OPTS = \ + AQROOT=$(@D)/kernel-module-imx-gpu-viv-src \ + KERNEL_DIR=$(LINUX_DIR) + +KERNEL_MODULE_IMX_GPU_VIV_MODULE_SUBDIRS = kernel-module-imx-gpu-viv-src + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/freescale-imx/libz160/Config.in b/buildroot/package/freescale-imx/libz160/Config.in new file mode 100644 index 0000000..a40ecdc --- /dev/null +++ b/buildroot/package/freescale-imx/libz160/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBZ160 + bool "libz160" + depends on BR2_ARM_EABI + depends on BR2_TOOLCHAIN_USES_GLIBC + help + An API for user space programs to perform 2D accelerated + graphics operations on AMD GPU (included for examples in + iMX5x chipsets) + +comment "libz160 needs an EABI toolchain w/ glibc" + depends on !BR2_ARM_EABI || !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/freescale-imx/libz160/libz160.hash b/buildroot/package/freescale-imx/libz160/libz160.hash new file mode 100644 index 0000000..ee10630 --- /dev/null +++ b/buildroot/package/freescale-imx/libz160/libz160.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 08767eb269a0a30ca0aa3d3b5aa9a53a2d17ed1c24651b7e8cefc7704b883f19 libz160-bin-11.09.01.bin diff --git a/buildroot/package/freescale-imx/libz160/libz160.mk b/buildroot/package/freescale-imx/libz160/libz160.mk new file mode 100644 index 0000000..af43b18 --- /dev/null +++ b/buildroot/package/freescale-imx/libz160/libz160.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libz160 +# +################################################################################ + +LIBZ160_VERSION = 11.09.01 +LIBZ160_SOURCE = libz160-bin-$(LIBZ160_VERSION).bin +LIBZ160_SITE = $(FREESCALE_IMX_SITE) +LIBZ160_INSTALL_STAGING = YES + +# See freescale-imx +LIBZ160_LICENSE = Freescale Semiconductor Software License Agreement +LIBZ160_LICENSE_FILES = EULA +LIBZ160_REDISTRIBUTE = NO + +define LIBZ160_EXTRACT_CMDS + $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(LIBZ160_SOURCE)) +endef + +define LIBZ160_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 755 $(@D)/usr/lib/libz160.so $(STAGING_DIR)/usr/lib/libz160.so + $(INSTALL) -D -m 644 $(@D)/usr/include/z160.h $(STAGING_DIR)/usr/include/z160.h +endef + +define LIBZ160_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/usr/lib/libz160.so $(TARGET_DIR)/usr/lib/libz160.so +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/freeswitch-mod-bcg729/Config.in b/buildroot/package/freeswitch-mod-bcg729/Config.in new file mode 100644 index 0000000..e75e2ac --- /dev/null +++ b/buildroot/package/freeswitch-mod-bcg729/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_FREESWITCH_MOD_BCG729 + bool "freeswitch-mod-bcg729" + depends on BR2_PACKAGE_FREESWITCH + depends on !BR2_STATIC_LIBS # freeswitch + select BR2_PACKAGE_BCG729 + help + FreeSWITCH G.729A module using the opensource bcg729 + implementation by Belledonne Communications. + + https://github.com/xadhoom/mod_bcg729 diff --git a/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash b/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash new file mode 100644 index 0000000..6780488 --- /dev/null +++ b/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 135f545ad0eef49d1228f8d66a4e66f1ff5f1f8fdf115e88c1df3df8df49fdcb freeswitch-mod-bcg729-c504eea91f225014380ae17c00b35e7173e316ad.tar.gz +sha256 bb4680b13c3190429464a8308a07d7d891e6454349fb7be856e02405b25b1195 LICENSE diff --git a/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk b/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk new file mode 100644 index 0000000..15f9375 --- /dev/null +++ b/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# freeswitch-mod-bcg729 +# +################################################################################ + +FREESWITCH_MOD_BCG729_VERSION = c504eea91f225014380ae17c00b35e7173e316ad +FREESWITCH_MOD_BCG729_SITE = $(call github,xadhoom,mod_bcg729,$(FREESWITCH_MOD_BCG729_VERSION)) +FREESWITCH_MOD_BCG729_LICENSE = MPL-1.1 +FREESWITCH_MOD_BCG729_LICENSE_FILES = LICENSE +FREESWITCH_MOD_BCG729_DEPENDENCIES = freeswitch bcg729 + +# instead of patching the not cross-compile friendly Makefile from +# upstream we issue the necessary build commands ourselves +define FREESWITCH_MOD_BCG729_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + -I$(STAGING_DIR)/usr/include/freeswitch \ + -fPIC -fomit-frame-pointer -fno-exceptions \ + -c $(@D)/mod_bcg729.c -o $(@D)/mod_bcg729.o + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \ + -fPIC -fomit-frame-pointer -fno-exceptions \ + -shared -Xlinker -x -lm -lbcg729 -Wl,-Bdynamic \ + -o $(@D)/mod_bcg729.so $(@D)/mod_bcg729.o +endef + +define FREESWITCH_MOD_BCG729_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/mod_bcg729.so $(TARGET_DIR)/usr/lib/freeswitch/mod/mod_bcg729.so +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/freeswitch/0001-libvpx-cross.patch b/buildroot/package/freeswitch/0001-libvpx-cross.patch new file mode 100644 index 0000000..a2583da --- /dev/null +++ b/buildroot/package/freeswitch/0001-libvpx-cross.patch @@ -0,0 +1,29 @@ +Fix cross-compiling libvpx + +Freeswitch since version 1.6.7 only uses an in-tree-version of libvpx: +https://freeswitch.org/fisheye/changelog/freeswitch?cs=febe0f8dacea2d2a31902b3dc469be757f8c3c4d + +It is not possible to use an external version of libvpx anymore. +Unfortunately the freeswitch build system has no support for cross- +compiling libvpx so we need to patch Makefile to pass CROSS from +package/freeswitch/freeswitch.mk and add target=generic-gnu as +configure parameter: +https://freeswitch.org/stash/projects/FS/repos/freeswitch/browse/libs/libvpx/README#110 + +And yes, autoreconf is also broken, so we patch Makefile.in instead +of Makefile.am. + +Signed-off-by: Bernd Kuhls + +diff -uNr freeswitch-1.6.7.org/Makefile.in freeswitch-1.6.7/Makefile.in +--- freeswitch-1.6.7.org/Makefile.in 2016-04-01 18:09:54.000000000 +0200 ++++ freeswitch-1.6.7/Makefile.in 2016-04-22 20:11:37.938961730 +0200 +@@ -3491,7 +3491,7 @@ + cd libs/libzrtp && $(MAKE) + + libs/libvpx/Makefile: +- cd libs/libvpx && CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure --enable-pic --disable-docs --disable-examples --disable-install-bins --disable-install-srcs --disable-unit-tests --extra-cflags="$(VISIBILITY_FLAG)" ++ cd libs/libvpx && CROSS=$(CROSS) CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure --target=generic-gnu --enable-pic --disable-docs --disable-examples --disable-install-bins --disable-install-srcs --disable-unit-tests --extra-cflags="$(VISIBILITY_FLAG)" + + libs/libvpx/libvpx.a: libs/libvpx/Makefile + @cd libs/libvpx && $(MAKE) diff --git a/buildroot/package/freeswitch/Config.in b/buildroot/package/freeswitch/Config.in new file mode 100644 index 0000000..1f64593 --- /dev/null +++ b/buildroot/package/freeswitch/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_FREESWITCH + bool "freeswitch" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # apr, included in freeswitch source + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # apr, included in freeswitch source + depends on BR2_USE_WCHAR # uses wchar_t + select BR2_PACKAGE_FFMPEG_AVRESAMPLE if BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_SWSCALE if BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_JPEG + # src/mod/applications/mod_cv/mod_cv.cpp includes + # highgui.h, imgproc.hpp & objdetect.hpp + select BR2_PACKAGE_OPENCV_LIB_HIGHGUI if BR2_PACKAGE_OPENCV + select BR2_PACKAGE_OPENCV_LIB_IMGPROC if BR2_PACKAGE_OPENCV + select BR2_PACKAGE_OPENCV_LIB_OBJDETECT if BR2_PACKAGE_OPENCV + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_SPEEX + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_ZLIB + help + FreeSWITCH is a scalable open source cross-platform + telephony platform designed to route and interconnect + popular communication protocols using audio, video, text or + any other form of media. + + https://www.freeswitch.org + +comment "freeswitch needs a toolchain w/ C++, dynamic library, threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/freeswitch/freeswitch.hash b/buildroot/package/freeswitch/freeswitch.hash new file mode 100644 index 0000000..25421de --- /dev/null +++ b/buildroot/package/freeswitch/freeswitch.hash @@ -0,0 +1,17 @@ +# From http://files.freeswitch.org/freeswitch-releases/freeswitch-1.6.20.tar.xz.md5 +md5 e9890a2d6ca6f58dd3fa440fdfbf91a0 freeswitch-1.6.20.tar.xz +# From http://files.freeswitch.org/freeswitch-releases/freeswitch-1.6.20.tar.xz.sha1 +sha1 ce284b805e262504cbb1f74796785b4dfa70d5ac freeswitch-1.6.20.tar.xz +# From http://files.freeswitch.org/freeswitch-releases/freeswitch-1.6.20.tar.xz.sha256 +sha256 dbb0f73109171bd381772b247b8ef581f6a176964619082a1fe031b004086f6b freeswitch-1.6.20.tar.xz +# Locally computed +sha256 10299420c1e8602c0daf5a59d022621cd72a9148d1f0f33501edb3db3445c7fe COPYING +sha256 e8e26b16da14aa3e6ed5c22c705fdc1f45d6225fca461ea9f7314bcdfdc414c4 libs/apr/LICENSE +sha256 1eefb2ea1db0af7729a9d8a27d7c65d8a37ab185393f935b029aac6828ce315a libs/apr-util/LICENSE +sha256 7d72a8aee2c4b1a084200487992a5d86f5df6b535727a14c1874918e99d24600 libs/libzrtp/src/zrtp_legal.c +sha256 e1c0890440efe31b6cd2ee2abf895eb917c787799f079133f5809414d90d5d60 libs/sofia-sip/COPYING +sha256 b402ae58cf355b33be8fa023f704a039e3d41ecaccd2bbcda43ca31d703e4556 libs/sofia-sip/COPYRIGHTS +sha256 366576cb0b869cd9e95a4882878607314650488ac635e5df0692180382e9666a libs/spandsp/COPYING +sha256 8defed37d52096ae14b60adc499c33d43975109bc265552ee67e9a888c634b93 libs/srtp/LICENSE +sha256 fbd6fed7938541d2c809c0826225fc85e551fdbfa8732b10f0c87e0847acafd7 libs/tiff-4.0.2/COPYRIGHT +sha256 ab00a482b6a3902e40211b43c5d0441962ea99b6cc7c25c0f243fa270b78d482 src/mod/codecs/mod_isac/LICENSE diff --git a/buildroot/package/freeswitch/freeswitch.mk b/buildroot/package/freeswitch/freeswitch.mk new file mode 100644 index 0000000..98f2f48 --- /dev/null +++ b/buildroot/package/freeswitch/freeswitch.mk @@ -0,0 +1,302 @@ +################################################################################ +# +# freeswitch +# +################################################################################ + +FREESWITCH_VERSION = 1.6.20 +FREESWITCH_SOURCE = freeswitch-$(FREESWITCH_VERSION).tar.xz +FREESWITCH_SITE = http://files.freeswitch.org/freeswitch-releases +# External modules need headers/libs from staging +FREESWITCH_INSTALL_STAGING = YES +FREESWITCH_LICENSE = MPL-1.1, \ + GPL-3.0+ with font exception (fonts), \ + Apache-2.0 (apr, apr-util), \ + LGPL-2.0+ (sofia-sip), \ + LGPL-2.1, GPL-2.0 (spandsp), \ + BSD-3-Clause (libsrtp), \ + tiff license + +FREESWITCH_LICENSE_FILES = \ + COPYING \ + libs/apr/LICENSE \ + libs/apr-util/LICENSE \ + libs/sofia-sip/COPYING \ + libs/sofia-sip/COPYRIGHTS \ + libs/spandsp/COPYING \ + libs/srtp/LICENSE \ + libs/tiff-4.0.2/COPYRIGHT + +# required dependencies +FREESWITCH_DEPENDENCIES = \ + host-pkgconf \ + jpeg \ + libcurl \ + openssl \ + pcre \ + speex \ + sqlite \ + util-linux \ + zlib + +# disable display of ClueCon banner in fs_cli +FREESWITCH_CONF_ENV += \ + disable_cc=yes + +# we neither need host-perl nor host-php +FREESWITCH_CONF_ENV += \ + ac_cv_prog_PERL=false \ + ac_cv_have_perl=no \ + ac_cv_prog_PHP=false \ + ac_cv_have_php=no \ + ac_cv_prog_PHP_CONFIG=false \ + ac_cv_have_php_config=no + +# copied from freeswitch/configure.ac, line 258+ +FREESWITCH_CONF_ENV += \ + ac_cv_file__dev_ptmx=yes \ + ac_cv_va_copy=yes \ + ac_cv_file__dev_urandom=yes \ + ac_cv_func_realloc_0_nonnull=yes \ + ac_cv_func_malloc_0_nonnull=yes \ + ac_cv_func_setpgrp_void=yes \ + ac_cv_file__dev_zero=yes \ + apr_cv_tcp_nodelay_with_cork=yes \ + ac_cv_file_dbd_apr_dbd_mysql_c=no \ + ac_cv_sizeof_ssize_t=4 \ + apr_cv_mutex_recursive=yes \ + ac_cv_func_pthread_rwlock_init=yes \ + apr_cv_type_rwlock_t=yes \ + apr_cv_process_shared_works=yes \ + apr_cv_mutex_robust_shared=yes + +# build breaks with -Werror enabled +FREESWITCH_CONF_ENV += \ + ac_cv_gcc_supports_w_no_unused_result=no + +FREESWITCH_CONF_OPTS = \ + --without-erlang \ + --enable-fhs \ + --without-python \ + --disable-system-xmlrpc-c + +# zrtp supports a limited set of archs, sparc support is also broken due +# to a broken ld call by gcc, see libs/libzrtp/include/zrtp_config.h +ifeq ($(BR2_i386)$(BR2_arm)$(BR2_armeb)$(BR2_aarch64)$(BR2_aarch64_be)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpcle)$(BR2_x86_64),y) +FREESWITCH_LICENSE_FILES += libs/libzrtp/src/zrtp_legal.c +FREESWITCH_CONF_OPTS += --enable-zrtp +else +FREESWITCH_CONF_OPTS += --disable-zrtp +endif + +# Enable optional modules +FREESWITCH_ENABLED_MODULES += \ + applications/mod_avmd \ + applications/mod_blacklist \ + applications/mod_callcenter \ + applications/mod_commands \ + applications/mod_conference \ + applications/mod_curl \ + applications/mod_db \ + applications/mod_directory \ + applications/mod_dptools \ + applications/mod_easyroute \ + applications/mod_esf \ + applications/mod_esl \ + applications/mod_expr \ + applications/mod_fifo \ + applications/mod_fsk \ + applications/mod_hash \ + applications/mod_httapi \ + applications/mod_lcr \ + applications/mod_sms \ + applications/mod_snom \ + applications/mod_spandsp \ + applications/mod_spy \ + applications/mod_valet_parking \ + applications/mod_voicemail \ + codecs/mod_g723_1 \ + dialplans/mod_dialplan_asterisk \ + dialplans/mod_dialplan_xml \ + endpoints/mod_loopback \ + endpoints/mod_rtc \ + endpoints/mod_rtmp \ + endpoints/mod_sofia \ + endpoints/mod_verto \ + event_handlers/mod_cdr_csv \ + event_handlers/mod_cdr_sqlite \ + event_handlers/mod_event_socket \ + formats/mod_local_stream \ + formats/mod_native_file \ + formats/mod_tone_stream \ + loggers/mod_console \ + loggers/mod_logfile \ + loggers/mod_syslog \ + say/mod_say_de \ + say/mod_say_en \ + say/mod_say_es \ + say/mod_say_es_ar \ + say/mod_say_fa \ + say/mod_say_fr \ + say/mod_say_he \ + say/mod_say_hr \ + say/mod_say_hu \ + say/mod_say_it \ + say/mod_say_ja \ + say/mod_say_nl \ + say/mod_say_pl \ + say/mod_say_pt \ + say/mod_say_ru \ + say/mod_say_sv \ + say/mod_say_th \ + say/mod_say_zh \ + xml_int/mod_xml_cdr \ + xml_int/mod_xml_rpc \ + xml_int/mod_xml_scgi + +define FREESWITCH_ENABLE_MODULES + $(Q)echo $(FREESWITCH_ENABLED_MODULES) \ + | tr ' ' '\n' \ + > $(@D)/modules.conf +endef +FREESWITCH_PRE_CONFIGURE_HOOKS += FREESWITCH_ENABLE_MODULES + +# mod_isac supports a limited set of archs +# src/mod/codecs/mod_isac/typedefs.h +ifeq ($(BR2_i386)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_x86_64),y) +FREESWITCH_LICENSE := $(FREESWITCH_LICENSE), BSD-3-Clause (mod_isac) +FREESWITCH_LICENSE_FILES += src/mod/codecs/mod_isac/LICENSE +FREESWITCH_ENABLED_MODULES += codecs/mod_isac +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +FREESWITCH_DEPENDENCIES += alsa-lib +FREESWITCH_ENABLED_MODULES += endpoints/mod_alsa +endif + +# Use the pass-through g729 module provided by freeswitch instead of +# the external mod_bcg729 provided by freeswitch-mod-bcg729. +ifeq ($(BR2_PACKAGE_FREESWITCH_MOD_BCG729),) +FREESWITCH_ENABLED_MODULES += codecs/mod_g729 +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +FREESWITCH_DEPENDENCIES += freetype +endif + +ifeq ($(BR2_PACKAGE_LIBBROADVOICE),y) +FREESWITCH_DEPENDENCIES += libbroadvoice +FREESWITCH_ENABLED_MODULES += codecs/mod_bv +endif + +ifeq ($(BR2_PACKAGE_LIBCODEC2),y) +FREESWITCH_DEPENDENCIES += libcodec2 +FREESWITCH_ENABLED_MODULES += codecs/mod_codec2 +endif + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +FREESWITCH_DEPENDENCIES += libedit +FREESWITCH_CONF_OPTS += --enable-core-libedit-support +else +FREESWITCH_CONF_OPTS += --disable-core-libedit-support +endif + +ifeq ($(BR2_PACKAGE_LIBG7221),y) +FREESWITCH_DEPENDENCIES += libg7221 +endif + +ifeq ($(BR2_PACKAGE_LIBILBC),y) +FREESWITCH_DEPENDENCIES += libilbc +FREESWITCH_ENABLED_MODULES += codecs/mod_ilbc +endif + +ifeq ($(BR2_PACKAGE_LIBLDNS),y) +FREESWITCH_DEPENDENCIES += libldns +FREESWITCH_ENABLED_MODULES += applications/mod_enum +endif + +ifeq ($(BR2_PACKAGE_LIBMEMCACHED),y) +FREESWITCH_DEPENDENCIES += libmemcached +FREESWITCH_ENABLED_MODULES += applications/mod_memcache +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +FREESWITCH_DEPENDENCIES += libpng +FREESWITCH_ENABLED_MODULES += formats/mod_png +endif + +ifeq ($(BR2_PACKAGE_LIBYAML),y) +FREESWITCH_DEPENDENCIES += libyaml +FREESWITCH_ENABLED_MODULES += languages/mod_yaml +endif + +ifeq ($(BR2_PACKAGE_LUA),y) +FREESWITCH_DEPENDENCIES += lua +FREESWITCH_ENABLED_MODULES += languages/mod_lua +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +FREESWITCH_DEPENDENCIES += openldap +FREESWITCH_ENABLED_MODULES += directories/mod_ldap xml_int/mod_xml_ldap +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +FREESWITCH_DEPENDENCIES += opus +FREESWITCH_ENABLED_MODULES += codecs/mod_opus +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +FREESWITCH_DEPENDENCIES += portaudio +FREESWITCH_ENABLED_MODULES += endpoints/mod_portaudio +endif + +ifeq ($(BR2_PACKAGE_LAME)$(BR2_PACKAGE_LIBSHOUT)$(BR2_PACKAGE_MPG123),yyy) +FREESWITCH_DEPENDENCIES += lame libshout mpg123 +FREESWITCH_ENABLED_MODULES += formats/mod_shout +endif + +ifeq ($(BR2_PACKAGE_LIBSILK),y) +FREESWITCH_DEPENDENCIES += libsilk +FREESWITCH_ENABLED_MODULES += codecs/mod_silk +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +FREESWITCH_DEPENDENCIES += libsndfile +FREESWITCH_ENABLED_MODULES += formats/mod_sndfile +endif + +ifeq ($(BR2_PACKAGE_LIBSOUNDTOUCH),y) +FREESWITCH_DEPENDENCIES += libsoundtouch +FREESWITCH_ENABLED_MODULES += applications/mod_soundtouch +endif + +ifeq ($(BR2_PACKAGE_OPENCV),y) +FREESWITCH_DEPENDENCIES += opencv +FREESWITCH_ENABLED_MODULES += applications/mod_cv +endif + +ifeq ($(BR2_PACKAGE_UNIXODBC),y) +FREESWITCH_DEPENDENCIES += unixodbc +FREESWITCH_CONF_OPTS += \ + --enable-core-odbc-support \ + --with-odbc=$(STAGING_DIR)/usr +else +FREESWITCH_CONF_OPTS += --disable-core-odbc-support +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +FREESWITCH_DEPENDENCIES += xz +endif + +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_8)$(BR2_PACKAGE_FFMPEG),yy) +FREESWITCH_LICENSE := $(FREESWITCH_LICENSE), BSD-3-Clause (libvpx, libyuv) +FREESWITCH_LICENSE_FILES += libs/libvpx/LICENSE libs/libyuv/LICENSE +FREESWITCH_CONF_OPTS += --enable-libvpx --enable-libyuv +FREESWITCH_DEPENDENCIES += host-yasm ffmpeg +FREESWITCH_ENABLED_MODULES += applications/mod_av applications/mod_fsv +FREESWITCH_MAKE_ENV += CROSS=$(TARGET_CROSS) +else +FREESWITCH_CONF_OPTS += --disable-libvpx --disable-libyuv +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/freetype/Config.in b/buildroot/package/freetype/Config.in new file mode 100644 index 0000000..ded8738 --- /dev/null +++ b/buildroot/package/freetype/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_FREETYPE + bool "freetype" + help + a free, high-quality and portable font engine. + + http://www.freetype.org/ diff --git a/buildroot/package/freetype/freetype.hash b/buildroot/package/freetype/freetype.hash new file mode 100644 index 0000000..51d0184 --- /dev/null +++ b/buildroot/package/freetype/freetype.hash @@ -0,0 +1,9 @@ +# From https://sourceforge.net/projects/freetype/files/freetype2/2.8.1/ +md5 bf0a210b6fe781228fa0e4a80691a521 freetype-2.8.1.tar.bz2 +sha1 417bb3747c4ac95b6f2652024a53fad45581fa1c freetype-2.8.1.tar.bz2 + +# Locally calculated +sha256 e5435f02e02d2b87bb8e4efdcaa14b1f78c9cf3ab1ed80f94b6382fb6acc7d78 freetype-2.8.1.tar.bz2 +sha256 fd056de4196903a676208ef58cfddafc7d583d1f28fa2e44c309cf84a59e62fb docs/LICENSE.TXT +sha256 4a9a548027a2c1d37788519dea833294c9c81f1ebc280e817f41f50d0c642d78 docs/FTL.TXT +sha256 c4120c6752c910c299e3bd9cb3a46ff262c268303ca2069b61f92f10a5656c18 docs/GPLv2.TXT diff --git a/buildroot/package/freetype/freetype.mk b/buildroot/package/freetype/freetype.mk new file mode 100644 index 0000000..1028664 --- /dev/null +++ b/buildroot/package/freetype/freetype.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# freetype +# +################################################################################ + +FREETYPE_VERSION = 2.8.1 +FREETYPE_SOURCE = freetype-$(FREETYPE_VERSION).tar.bz2 +FREETYPE_SITE = http://download.savannah.gnu.org/releases/freetype +FREETYPE_INSTALL_STAGING = YES +FREETYPE_MAKE_OPTS = CCexe="$(HOSTCC)" +FREETYPE_LICENSE = Dual FTL/GPL-2.0+ +FREETYPE_LICENSE_FILES = docs/LICENSE.TXT docs/FTL.TXT docs/GPLv2.TXT +FREETYPE_DEPENDENCIES = host-pkgconf +FREETYPE_CONFIG_SCRIPTS = freetype-config + +HOST_FREETYPE_DEPENDENCIES = host-pkgconf +HOST_FREETYPE_CONF_OPTS = --without-zlib --without-bzip2 --without-png + +# Regen required because the tarball ships with an experimental ltmain.sh +# that can't be patched by our infra. +# autogen.sh is because autotools stuff lives in other directories and +# even AUTORECONF with _OPTS doesn't do it properly. +# POST_PATCH is because we still need to patch libtool after the regen. +define FREETYPE_RUN_AUTOGEN + cd $(@D) && PATH=$(BR_PATH) ./autogen.sh +endef +FREETYPE_POST_PATCH_HOOKS += FREETYPE_RUN_AUTOGEN +HOST_FREETYPE_POST_PATCH_HOOKS += FREETYPE_RUN_AUTOGEN +FREETYPE_DEPENDENCIES += host-automake host-autoconf host-libtool +HOST_FREETYPE_DEPENDENCIES += host-automake host-autoconf host-libtool + +ifeq ($(BR2_PACKAGE_ZLIB),y) +FREETYPE_DEPENDENCIES += zlib +FREETYPE_CONF_OPTS += --with-zlib +else +FREETYPE_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +FREETYPE_DEPENDENCIES += bzip2 +FREETYPE_CONF_OPTS += --with-bzip2 +else +FREETYPE_CONF_OPTS += --without-bzip2 +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +FREETYPE_DEPENDENCIES += libpng +FREETYPE_CONF_OPTS += LIBPNG_CFLAGS="`$(STAGING_DIR)/usr/bin/libpng-config --cflags`" \ + LIBPNG_LDFLAGS="`$(STAGING_DIR)/usr/bin/libpng-config --ldflags`" +FREETYPE_LIBPNG_LIBS = "`$(STAGING_DIR)/usr/bin/libpng-config --libs`" +else +FREETYPE_CONF_OPTS += --without-png +endif + +# Extra fixing since includedir and libdir are expanded from configure values +define FREETYPE_FIX_CONFIG_FILE + $(SED) 's:^includedir=.*:includedir="$${prefix}/include":' \ + -e 's:^libdir=.*:libdir="$${exec_prefix}/lib":' \ + $(STAGING_DIR)/usr/bin/freetype-config +endef +FREETYPE_POST_INSTALL_STAGING_HOOKS += FREETYPE_FIX_CONFIG_FILE + +# libpng isn't included in freetype-config & freetype2.pc :-/ +define FREETYPE_FIX_CONFIG_FILE_LIBS + $(SED) "s,^Libs.private:,& $(FREETYPE_LIBPNG_LIBS)," \ + $(STAGING_DIR)/usr/lib/pkgconfig/freetype2.pc + $(SED) "s,-lfreetype,& $(FREETYPE_LIBPNG_LIBS)," \ + $(STAGING_DIR)/usr/bin/freetype-config +endef +FREETYPE_POST_INSTALL_STAGING_HOOKS += FREETYPE_FIX_CONFIG_FILE_LIBS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# freetype-patch and host-freetype-patch use autogen.sh so add +# host-automake as a order-only-prerequisite because it is a phony +# target. +$(FREETYPE_TARGET_PATCH) $(HOST_FREETYPE_TARGET_PATCH): | host-automake diff --git a/buildroot/package/fscryptctl/Config.in b/buildroot/package/fscryptctl/Config.in new file mode 100644 index 0000000..91b9ba8 --- /dev/null +++ b/buildroot/package/fscryptctl/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_FSCRYPTCTL + bool "fscryptctl" + help + fscryptctl is a low-level tool written in C that handles raw + keys and manages policies for Linux filesystem encryption. + + Notice: Fscrypt support on EXT4 requires a kernel with + CONFIG_EXT4_ENCRYPTION=y and a file system with the + encryption option and block size equal to CPU page size + (BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O encrypt -b 4096") + + https://github.com/google/fscryptctl diff --git a/buildroot/package/fscryptctl/fscryptctl.hash b/buildroot/package/fscryptctl/fscryptctl.hash new file mode 100644 index 0000000..b06b96c --- /dev/null +++ b/buildroot/package/fscryptctl/fscryptctl.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 970a8febbcbf315313711d8a7ee3d954dea593d8087744d3cba65f6cb4bebcc1 fscryptctl-f037dcf4354ce8f25d0f371b58dfe7a7ac27576f.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/buildroot/package/fscryptctl/fscryptctl.mk b/buildroot/package/fscryptctl/fscryptctl.mk new file mode 100644 index 0000000..4275bf2 --- /dev/null +++ b/buildroot/package/fscryptctl/fscryptctl.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# fscryptctl +# +################################################################################ + +FSCRYPTCTL_VERSION = f037dcf4354ce8f25d0f371b58dfe7a7ac27576f +FSCRYPTCTL_SITE = $(call github,google,fscryptctl,$(FSCRYPTCTL_VERSION)) +FSCRYPTCTL_LICENSE = Apache-2.0 +FSCRYPTCTL_LICENSE_FILES = LICENSE + +define FSCRYPTCTL_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) fscryptctl +endef + +define FSCRYPTCTL_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/fscryptctl $(TARGET_DIR)/usr/bin/fscryptctl +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/fswebcam/Config.in b/buildroot/package/fswebcam/Config.in new file mode 100644 index 0000000..d268454 --- /dev/null +++ b/buildroot/package/fswebcam/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_FSWEBCAM + bool "fswebcam" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_GD + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + help + fswebcam is a neat and simple webcam app. It captures images + from a V4L1/V4L2 compatible device or file, averages them to + reduce noise and draws a caption using the GD Graphics + Library which also handles compressing the image to PNG or + JPEG. The resulting image is saved to a file or sent to + stdio where it can be piped to something like ncftpput or + scp. + + http://www.firestorm.cx/fswebcam/ + +comment "fswebcam needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/fswebcam/fswebcam.hash b/buildroot/package/fswebcam/fswebcam.hash new file mode 100644 index 0000000..1e75f23 --- /dev/null +++ b/buildroot/package/fswebcam/fswebcam.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 444d6a8a82102e09e935540c64a731021de36db03e1e74181f41ca6f39aa6474 fswebcam-20140113.tar.xz diff --git a/buildroot/package/fswebcam/fswebcam.mk b/buildroot/package/fswebcam/fswebcam.mk new file mode 100644 index 0000000..8f823f4 --- /dev/null +++ b/buildroot/package/fswebcam/fswebcam.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# fswebcam +# +################################################################################ + +FSWEBCAM_VERSION = 20140113 +FSWEBCAM_SOURCE = fswebcam-$(FSWEBCAM_VERSION).tar.xz +FSWEBCAM_SITE = http://www.firestorm.cx/fswebcam/files +FSWEBCAM_LICENSE = GPL-2.0 +FSWEBCAM_LICENSE_FILES = LICENSE + +FSWEBCAM_DEPENDENCIES += freetype jpeg libpng gd + +$(eval $(autotools-package)) diff --git a/buildroot/package/ftop/0001-overflow.patch b/buildroot/package/ftop/0001-overflow.patch new file mode 100644 index 0000000..a3a27c3 --- /dev/null +++ b/buildroot/package/ftop/0001-overflow.patch @@ -0,0 +1,17 @@ +Set tmp_buf and rate_buf to something ridiculously high to fix a buffer +overflow when COLUMNS is large. - JeR + +(Taken from gentoo portage) +Signed-off-by: Gustavo Zacarias + +--- a/src/ftop.c 2009-02-16 07:00:00.000000000 +0100 ++++ b/src/ftop.c 2013-09-06 14:42:41.788852952 +0200 +@@ -736,7 +736,7 @@ + { + size_t i, j, bytes, bar_total; + char more_procs_ch, more_files_ch, expanded_ch; +- char tmp_buf[80], rate_buf[80]; ++ char tmp_buf[2048], rate_buf[2048]; + char *tmp_str; + snapshot *s, *s_prev; + file_info *tmp_file; diff --git a/buildroot/package/ftop/Config.in b/buildroot/package/ftop/Config.in new file mode 100644 index 0000000..bee70bf --- /dev/null +++ b/buildroot/package/ftop/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_FTOP + bool "ftop" + select BR2_PACKAGE_NCURSES + help + Ftop is to files what top is to processes. + The progress of all open files and file systems can be + monitored. + + https://sourceforge.net/projects/ftop/ diff --git a/buildroot/package/ftop/ftop.hash b/buildroot/package/ftop/ftop.hash new file mode 100644 index 0000000..ca8dc82 --- /dev/null +++ b/buildroot/package/ftop/ftop.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/ftop/files/ftop/1.0/ +md5 57c68b6e7431f4219d9eddaebcb395da ftop-1.0.tar.bz2 +sha1 d3ef1b74825f50c7c442d299b29d23c2478f199b ftop-1.0.tar.bz2 +# Locally computed +sha256 3a705f4f291384344cd32c3dd5f5f6a7cd7cea7624c83cb7e923966dbcd47f82 ftop-1.0.tar.bz2 diff --git a/buildroot/package/ftop/ftop.mk b/buildroot/package/ftop/ftop.mk new file mode 100644 index 0000000..5498fb5 --- /dev/null +++ b/buildroot/package/ftop/ftop.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# ftop +# +################################################################################ + +FTOP_VERSION = 1.0 +FTOP_SOURCE = ftop-$(FTOP_VERSION).tar.bz2 +FTOP_SITE = https://sourceforge.net/projects/ftop/files/ftop/$(FTOP_VERSION) +FTOP_DEPENDENCIES = ncurses +FTOP_LICENSE = GPL-3.0+ +FTOP_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/fwts/0001-build-do-not-use-Werror.patch b/buildroot/package/fwts/0001-build-do-not-use-Werror.patch new file mode 100644 index 0000000..5246fd6 --- /dev/null +++ b/buildroot/package/fwts/0001-build-do-not-use-Werror.patch @@ -0,0 +1,69 @@ +From db480b9f3e3a5c6c12e9dd04e87c8dff9381b8e7 Mon Sep 17 00:00:00 2001 +From: Erico Nunes +Date: Fri, 12 Aug 2016 23:11:56 +0200 +Subject: [PATCH] fwts: do not use -Werror + +Warnings come and go with various compiler versions, so using -Werror is +prone to cause build failures with various compiler versions, especially +newer versions that introduce new warnings. + +Remove use of -Werror. + +Signed-off-by: Erico Nunes +--- + configure.ac | 2 +- + src/Makefile.am | 2 +- + src/lib/src/Makefile.am | 2 +- + src/utilities/Makefile.am | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index e3e7512..64034fa 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1,5 +1,5 @@ + AC_INIT([fwts],[0.1],[fwts-devel@lists.ubuntu.com]) +- AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects]) ++ AM_INIT_AUTOMAKE([-Wall foreign subdir-objects]) + m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) + AC_CANONICAL_HOST + AC_CONFIG_MACRO_DIR([m4]) +diff --git a/src/Makefile.am b/src/Makefile.am +index bc23e8d..599765d 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -14,7 +14,7 @@ AM_CPPFLAGS = \ + `pkg-config --silence-errors --cflags json` \ + `pkg-config --silence-errors --cflags json-c` \ + -pthread `pkg-config --cflags glib-2.0 gio-2.0` \ +- -Wall -Werror -Wextra ++ -Wall -Wextra + + bin_PROGRAMS = fwts + +diff --git a/src/lib/src/Makefile.am b/src/lib/src/Makefile.am +index 1b8fd74..163c9ae 100644 +--- a/src/lib/src/Makefile.am ++++ b/src/lib/src/Makefile.am +@@ -6,7 +6,7 @@ AM_CPPFLAGS = \ + `pkg-config --silence-errors --cflags json-c` \ + `pkg-config --cflags glib-2.0 gio-2.0` \ + -DDATAROOTDIR=\"$(datarootdir)\" \ +- -Wall -Werror -Wextra ++ -Wall -Wextra + + pkglib_LTLIBRARIES = libfwts.la + +diff --git a/src/utilities/Makefile.am b/src/utilities/Makefile.am +index 9a47980..14997df 100644 +--- a/src/utilities/Makefile.am ++++ b/src/utilities/Makefile.am +@@ -1,4 +1,4 @@ +-AM_CPPFLAGS = -Wall -Werror -Wextra -DDATAROOTDIR=\"$(datarootdir)\" \ ++AM_CPPFLAGS = -Wall -Wextra -DDATAROOTDIR=\"$(datarootdir)\" \ + `pkg-config --silence-errors --cflags json` \ + `pkg-config --silence-errors --cflags json-c` + +-- +2.7.4 + diff --git a/buildroot/package/fwts/Config.in b/buildroot/package/fwts/Config.in new file mode 100644 index 0000000..37759c6 --- /dev/null +++ b/buildroot/package/fwts/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_FWTS + bool "fwts" + depends on BR2_i386 || BR2_x86_64 || BR2_aarch64 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + depends on BR2_TOOLCHAIN_USES_GLIBC # execinfo.h + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_JSON_C + help + Firmware Test Suite (FWTS) is a test suite that performs + sanity checks on firmware. It is intended to identify BIOS and + ACPI errors and if appropriate it will try to explain the + errors and give advice to help workaround or fix firmware + bugs. + + dtc (libfdt) is an optional dependency for fdt related tests. + + https://wiki.ubuntu.com/FirmwareTestSuite + +comment "fwts needs a glibc toolchain w/ wchar, threads" + depends on BR2_i386 || BR2_x86_64 || BR2_aarch64 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/fwts/fwts.hash b/buildroot/package/fwts/fwts.hash new file mode 100644 index 0000000..e23386e --- /dev/null +++ b/buildroot/package/fwts/fwts.hash @@ -0,0 +1,2 @@ +# Hash from: http://fwts.ubuntu.com/release/SHA256SUMS +sha256 077b57864515ffdd6d655201da750829f9ccffb8f280eb86d01c2ef184cdcb16 fwts-V16.11.00.tar.gz diff --git a/buildroot/package/fwts/fwts.mk b/buildroot/package/fwts/fwts.mk new file mode 100644 index 0000000..8b0c5b0 --- /dev/null +++ b/buildroot/package/fwts/fwts.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# fwts +# +################################################################################ + +FWTS_VERSION = V16.11.00 +FWTS_SITE = http://fwts.ubuntu.com/release +FWTS_STRIP_COMPONENTS = 0 +FWTS_LICENSE = GPL-2.0, LGPL-2.1, Custom +FWTS_LICENSE_FILES = debian/copyright +FWTS_AUTORECONF = YES +FWTS_DEPENDENCIES = host-bison host-flex host-pkgconf json-c libglib2 \ + $(if $(BR2_PACKAGE_DTC),dtc) + +$(eval $(autotools-package)) diff --git a/buildroot/package/fwup/Config.in b/buildroot/package/fwup/Config.in new file mode 100644 index 0000000..fd40cf3 --- /dev/null +++ b/buildroot/package/fwup/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_FWUP + bool "fwup" + depends on BR2_USE_MMU + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBARCHIVE + # required by libarchive to include zip compression + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBCONFUSE + select BR2_PACKAGE_LIBSODIUM + help + Fwup is a scriptable embedded Linux firmware update creator + and runner. + + https://github.com/fhunleth/fwup + +comment "fwup needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/fwup/Config.in.host b/buildroot/package/fwup/Config.in.host new file mode 100644 index 0000000..4e21c7d --- /dev/null +++ b/buildroot/package/fwup/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_FWUP + bool "host fwup" + help + Fwup is a scriptable embedded Linux firmware update creator + and runner. + + https://github.com/fhunleth/fwup diff --git a/buildroot/package/fwup/fwup.hash b/buildroot/package/fwup/fwup.hash new file mode 100644 index 0000000..32398bf --- /dev/null +++ b/buildroot/package/fwup/fwup.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 852e255bd65f9db473a06184abb3e94e3b6b86be7bf66169e8df8146d5966ae1 fwup-v0.15.4.tar.gz diff --git a/buildroot/package/fwup/fwup.mk b/buildroot/package/fwup/fwup.mk new file mode 100644 index 0000000..c6a18c2 --- /dev/null +++ b/buildroot/package/fwup/fwup.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# fwup +# +################################################################################ + +FWUP_VERSION = v0.15.4 +FWUP_SITE = $(call github,fhunleth,fwup,$(FWUP_VERSION)) +FWUP_LICENSE = Apache-2.0 +FWUP_LICENSE_FILES = LICENSE +FWUP_DEPENDENCIES = host-pkgconf libconfuse libarchive libsodium +HOST_FWUP_DEPENDENCIES = host-pkgconf host-libconfuse host-libarchive host-libsodium +FWUP_AUTORECONF = YES +FWUP_CONF_ENV = ac_cv_path_HELP2MAN="" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/fxload/Config.in b/buildroot/package/fxload/Config.in new file mode 100644 index 0000000..88cc6d1 --- /dev/null +++ b/buildroot/package/fxload/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_FXLOAD + bool "fxload" + # Hits gcc PR63261 on Microblaze with debugging symbols + # enabled. Since this package is unlikely to be useful on + # Microblaze, just disable it on this architecture. + depends on !BR2_microblaze + help + This program is conveniently able to download firmware into + FX, FX2, and FX2LP EZ-USB devices, as well as the original + AnchorChips EZ-USB. + It is intended to be invoked by hotplug scripts when the + unprogrammed device appears on the bus. + + http://sourceforge.net/projects/linux-hotplug/ diff --git a/buildroot/package/fxload/fxload.hash b/buildroot/package/fxload/fxload.hash new file mode 100644 index 0000000..7febbcc --- /dev/null +++ b/buildroot/package/fxload/fxload.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 0cc8bfd2a7cbba2f68e0c5767477634922287943c91dd9fcf029fc8b9d577858 fxload-2008_10_13.tar.gz diff --git a/buildroot/package/fxload/fxload.mk b/buildroot/package/fxload/fxload.mk new file mode 100644 index 0000000..94b11d0 --- /dev/null +++ b/buildroot/package/fxload/fxload.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# fxload +# +################################################################################ + +FXLOAD_VERSION = 2008_10_13 +FXLOAD_SITE = http://downloads.sourceforge.net/project/linux-hotplug/fxload/$(FXLOAD_VERSION) +FXLOAD_LICENSE = GPL-2.0+ +FXLOAD_LICENSE_FILES = COPYING + +define FXLOAD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define FXLOAD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) prefix=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/gadgetfs-test/0001-fix-usb-ch9-include.patch b/buildroot/package/gadgetfs-test/0001-fix-usb-ch9-include.patch new file mode 100644 index 0000000..3d7ce82 --- /dev/null +++ b/buildroot/package/gadgetfs-test/0001-fix-usb-ch9-include.patch @@ -0,0 +1,40 @@ +From 8cf5909c6f8e0a892155dea14a07adfad445762d Mon Sep 17 00:00:00 2001 +From: Haavard Skinnemoen +Date: Sat, 23 Jun 2007 18:34:09 +0200 +Subject: [PATCH] Include usb/ch9.h instead of usb_ch9.h + +Signed-off-by: Haavard Skinnemoen +--- + usb.c | 2 +- + usbstring.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/usb.c b/usb.c +index ea6c7de..b161154 100644 +--- a/usb.c ++++ b/usb.c +@@ -35,7 +35,7 @@ + + #include + #include +-#include ++#include + + #ifdef AIO + /* this aio code works with libaio-0.3.106 */ +diff --git a/usbstring.c b/usbstring.c +index 4bf2965..993acc2 100644 +--- a/usbstring.c ++++ b/usbstring.c +@@ -11,7 +11,7 @@ + #include + + #include +-#include ++#include + + #include "usbstring.h" + +-- +1.5.2.2 + diff --git a/buildroot/package/gadgetfs-test/0002-rename-include-usb_gadgetfs-to-usb-dir.patch b/buildroot/package/gadgetfs-test/0002-rename-include-usb_gadgetfs-to-usb-dir.patch new file mode 100644 index 0000000..ffc2da3 --- /dev/null +++ b/buildroot/package/gadgetfs-test/0002-rename-include-usb_gadgetfs-to-usb-dir.patch @@ -0,0 +1,12 @@ +diff -upr gadgetfs-test-orig/usb.c gadgetfs-test/usb.c +--- gadgetfs-test-orig/usb.c 2007-07-18 14:38:38.000000000 +0200 ++++ gadgetfs-test/usb.c 2007-07-18 15:33:04.000000000 +0200 +@@ -34,7 +34,7 @@ + #include + + #include +-#include ++#include + #include + + #ifdef AIO diff --git a/buildroot/package/gadgetfs-test/Config.in b/buildroot/package/gadgetfs-test/Config.in new file mode 100644 index 0000000..9a60306 --- /dev/null +++ b/buildroot/package/gadgetfs-test/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_GADGETFS_TEST + bool "gadgetfs-test" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Test program for gadgetfs from linux-usb.org + +if BR2_PACKAGE_GADGETFS_TEST + +config BR2_PACKAGE_GADGETFS_TEST_USE_AIO + bool "use asynchronous i/o" + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + select BR2_PACKAGE_LIBAIO + help + Select this to have gadgetfs-test do asynchronous I/O using + the libaio library. + +endif + +comment "gadgetfs-test needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gadgetfs-test/gadgetfs-test.hash b/buildroot/package/gadgetfs-test/gadgetfs-test.hash new file mode 100644 index 0000000..b96190a --- /dev/null +++ b/buildroot/package/gadgetfs-test/gadgetfs-test.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 bd8ebcf7ce86f4b022a4e7ba6b1cc16ffc4022bb58c1910fe4ac96c88217e7ec gadgetfs-test.tar.bz2 diff --git a/buildroot/package/gadgetfs-test/gadgetfs-test.mk b/buildroot/package/gadgetfs-test/gadgetfs-test.mk new file mode 100644 index 0000000..ca47738 --- /dev/null +++ b/buildroot/package/gadgetfs-test/gadgetfs-test.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# gadgetfs-test +# +################################################################################ + +GADGETFS_TEST_SOURCE = gadgetfs-test.tar.bz2 +GADGETFS_TEST_SITE = http://mirror.egtvedt.no/avr32linux.org/twiki/pub/Main/GadgetFsTest + +GADGETFS_TEST_MAKEOPTS = CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)" + +ifeq ($(BR2_PACKAGE_GADGETFS_TEST_USE_AIO),y) +GADGETFS_TEST_DEPENDENCIES = libaio +GADGETFS_TEST_MAKEOPTS += USE_AIO=y +endif + +define GADGETFS_TEST_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(GADGETFS_TEST_MAKEOPTS) +endef + +define GADGETFS_TEST_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) prefix=/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/gamin/0001-no-abstract-sockets.patch b/buildroot/package/gamin/0001-no-abstract-sockets.patch new file mode 100644 index 0000000..3d65901 --- /dev/null +++ b/buildroot/package/gamin/0001-no-abstract-sockets.patch @@ -0,0 +1,61 @@ +[PATCH]: Remove abstract socket namespace check breaking cross compilation + +Taken from openembedded: + +http://git.openembedded.org/cgit.cgi/openembedded/tree/recipes/gamin/files/no-abstract-sockets.patch + +Signed-off-by: Peter Korsgaard +--- /tmp/configure.in 2007-04-30 13:08:49.000000000 +0200 ++++ gamin-0.1.8/configure.in 2007-04-30 13:10:53.285251000 +0200 +@@ -354,51 +354,6 @@ + AC_DEFINE(HAVE_CMSGCRED,1,[Have cmsgcred structure]) + fi + +-#### Abstract sockets +- +-AC_MSG_CHECKING(abstract socket namespace) +-AC_LANG_PUSH(C) +-AC_RUN_IFELSE([AC_LANG_PROGRAM( +-[[ +-#include +-#include +-#include +-#include +-#include +-#include +-#include +-]], +-[[ +- int listen_fd; +- struct sockaddr_un addr; +- +- listen_fd = socket (PF_UNIX, SOCK_STREAM, 0); +- +- if (listen_fd < 0) +- { +- fprintf (stderr, "socket() failed: %s\n", strerror (errno)); +- exit (1); +- } +- +- memset (&addr, '\0', sizeof (addr)); +- addr.sun_family = AF_UNIX; +- strcpy (addr.sun_path, "X/tmp/dbus-fake-socket-path-used-in-configure-test"); +- addr.sun_path[0] = '\0'; /* this is what makes it abstract */ +- +- if (bind (listen_fd, (struct sockaddr*) &addr, SUN_LEN (&addr)) < 0) +- { +- fprintf (stderr, "Abstract socket namespace bind() failed: %s\n", +- strerror (errno)); +- exit (1); +- } +- else +- exit (0); +-]])], +- [have_abstract_sockets=yes], +- [have_abstract_sockets=no]) +-AC_LANG_POP(C) +-AC_MSG_RESULT($have_abstract_sockets) +- + if test x$enable_abstract_sockets = xyes; then + if test x$have_abstract_sockets = xno; then + AC_MSG_ERROR([Abstract sockets explicitly required, and support not detected.]) diff --git a/buildroot/package/gamin/0002-no-const-return.patch b/buildroot/package/gamin/0002-no-const-return.patch new file mode 100644 index 0000000..3e6e905 --- /dev/null +++ b/buildroot/package/gamin/0002-no-const-return.patch @@ -0,0 +1,57 @@ +G_CONST_RETURN is deprecated in glib 2.30 so remove to to avoid +build failures. + +Upstream-Status: Pending + +Index: gamin-0.1.10/server/gam_node.c +=================================================================== +--- gamin-0.1.10.orig/server/gam_node.c 2011-10-12 15:25:45.217178314 +0100 ++++ gamin-0.1.10/server/gam_node.c 2011-10-12 15:26:17.807178293 +0100 +@@ -122,7 +122,7 @@ + * it has finished with the string. If it must keep it longer, it + * should makes its own copy. The returned string must not be freed. + */ +-G_CONST_RETURN char * ++const char * + gam_node_get_path(GamNode * node) + { + g_assert(node); +Index: gamin-0.1.10/server/gam_node.h +=================================================================== +--- gamin-0.1.10.orig/server/gam_node.h 2011-10-12 15:25:46.857178269 +0100 ++++ gamin-0.1.10/server/gam_node.h 2011-10-12 15:26:28.637178297 +0100 +@@ -58,7 +58,7 @@ + void gam_node_set_is_dir (GamNode *node, + gboolean is_dir); + +-G_CONST_RETURN char *gam_node_get_path (GamNode *node); ++const char *gam_node_get_path (GamNode *node); + + GList *gam_node_get_subscriptions (GamNode *node); + +Index: gamin-0.1.10/server/gam_subscription.c +=================================================================== +--- gamin-0.1.10.orig/server/gam_subscription.c 2011-10-12 15:25:40.497177525 +0100 ++++ gamin-0.1.10/server/gam_subscription.c 2011-10-12 15:26:39.867178304 +0100 +@@ -141,7 +141,7 @@ + * @param sub the GamSubscription + * @returns The path being monitored. It should not be freed. + */ +-G_CONST_RETURN char * ++const char * + gam_subscription_get_path(GamSubscription * sub) + { + if (sub == NULL) +Index: gamin-0.1.10/server/gam_subscription.h +=================================================================== +--- gamin-0.1.10.orig/server/gam_subscription.h 2011-10-12 15:25:28.507178266 +0100 ++++ gamin-0.1.10/server/gam_subscription.h 2011-10-12 15:25:58.817178285 +0100 +@@ -21,7 +21,7 @@ + + int gam_subscription_get_reqno (GamSubscription *sub); + +-G_CONST_RETURN char *gam_subscription_get_path (GamSubscription *sub); ++const char *gam_subscription_get_path (GamSubscription *sub); + + GamListener *gam_subscription_get_listener (GamSubscription *sub); + diff --git a/buildroot/package/gamin/0003-fix-missing-PTHREAD_MUTEX_RECURSIVE_NP.patch b/buildroot/package/gamin/0003-fix-missing-PTHREAD_MUTEX_RECURSIVE_NP.patch new file mode 100644 index 0000000..b5f2e6c --- /dev/null +++ b/buildroot/package/gamin/0003-fix-missing-PTHREAD_MUTEX_RECURSIVE_NP.patch @@ -0,0 +1,39 @@ +Fix missing PTHREAD_MUTEX_RECURSIVE_NP + +The musl C library does not provide the non portable +PTHREAD_MUTEX_RECURSIVE_NP. In addition, uClibc does not define it as +a #define, but as an enum value, so doing a #if defined() check +doesn't work properly. Instead, add a AC_CHECK_DECL() autoconf check. + +Signed-off-by: Baruch Siach +[Thomas: switch to an autoconf check.] +Signed-off-by: Thomas Petazzoni + +Index: b/configure.in +=================================================================== +--- a/configure.in ++++ b/configure.in +@@ -294,6 +294,10 @@ + AC_DEFINE([HAVE_LIBPTHREAD], [], [Define if pthread library is there (-lpthread)]) + AC_DEFINE([HAVE_PTHREAD_H], [], [Define if is there]) + WITH_THREADS="1"])) ++ ++ AC_CHECK_DECL([PTHREAD_MUTEX_RECURSIVE_NP], ++ [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE_NP], [], [whether HAVE_PTHREAD_MUTEX_RECURSIVE_NP is defined])], ++ [], [#include ]) + fi + + dnl Use weak symbols on linux/gcc to avoid imposing libpthreads to apps +Index: b/libgamin/gam_data.c +=================================================================== +--- a/libgamin/gam_data.c ++++ b/libgamin/gam_data.c +@@ -470,7 +470,7 @@ + } + if (is_threaded > 0) { + pthread_mutexattr_init(&attr); +-#if defined(linux) || defined(PTHREAD_MUTEX_RECURSIVE_NP) ++#if defined(HAVE_PTHREAD_MUTEX_RECURSIVE_NP) + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP); + #else + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); diff --git a/buildroot/package/gamin/Config.in b/buildroot/package/gamin/Config.in new file mode 100644 index 0000000..55e037a --- /dev/null +++ b/buildroot/package/gamin/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_GAMIN + bool "gamin" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + the File Alteration Monitor + + http://www.gnome.org/~veillard/gamin/sources + +comment "gamin needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gamin/gamin.hash b/buildroot/package/gamin/gamin.hash new file mode 100644 index 0000000..0a43706 --- /dev/null +++ b/buildroot/package/gamin/gamin.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 28085f0ae8be10eab582ff186af4fb0be92cc6c62b5cc19cd09b295c7c2899a1 gamin-0.1.10.tar.gz diff --git a/buildroot/package/gamin/gamin.mk b/buildroot/package/gamin/gamin.mk new file mode 100644 index 0000000..4621b16 --- /dev/null +++ b/buildroot/package/gamin/gamin.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# gamin +# +################################################################################ + +GAMIN_VERSION = 0.1.10 +GAMIN_SITE = http://www.gnome.org/~veillard/gamin/sources +GAMIN_AUTORECONF = YES +GAMIN_INSTALL_STAGING = YES +GAMIN_LICENSE = LGPL-2.0+ +GAMIN_LICENSE_FILES = COPYING + +# python support broken +GAMIN_CONF_OPTS += --without-python + +GAMIN_CONF_ENV = have_abstract_sockets=no + +GAMIN_DEPENDENCIES = libglib2 + +$(eval $(autotools-package)) diff --git a/buildroot/package/gauche/0001-fix-so-suffix.patch b/buildroot/package/gauche/0001-fix-so-suffix.patch new file mode 100644 index 0000000..b65e269 --- /dev/null +++ b/buildroot/package/gauche/0001-fix-so-suffix.patch @@ -0,0 +1,31 @@ +With uclibc or musl configuration, $host does not match to '*-linux-gnu*'. +I touch configure directly instead of configure.ac because autoreconf +failed by version mismatch of autotools. + +Signed-off-by: Hiroshi Kawashima + +diff -ur a/configure b/configure +--- a/configure 2014-07-20 15:15:05.000000000 +0900 ++++ b/configure 2015-10-20 21:52:32.791442291 +0900 +@@ -6843,7 +6843,7 @@ + SHLIB_MAIN_LDFLAGS="" + SHLIB_OK=ok + ;; +- *-linux-gnu*|*-*-gnu*|*freebsd*|*dragonfly*) ++ *-linux-*|*-*-gnu*|*freebsd*|*dragonfly*) + SHLIB_SO_CFLAGS="-fPIC" + SHLIB_SO_LDFLAGS="$rpath -shared -o" + SHLIB_SO_SUFFIX="so" + +diff -ur a/configure.ac b/configure.ac +--- a/configure.ac 2015-10-21 21:33:17.370000200 +0900 ++++ b/configure.ac 2015-10-21 21:33:39.784110527 +0900 +@@ -572,7 +572,7 @@ + SHLIB_MAIN_LDFLAGS="" + SHLIB_OK=ok + ;; +- *-linux-gnu*|*-*-gnu*|*freebsd*|*dragonfly*) ++ *-linux-*|*-*-gnu*|*freebsd*|*dragonfly*) + SHLIB_SO_CFLAGS="-fPIC" + SHLIB_SO_LDFLAGS="$rpath -shared -o" + SHLIB_SO_SUFFIX="so" diff --git a/buildroot/package/gauche/0002-gc-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch b/buildroot/package/gauche/0002-gc-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch new file mode 100644 index 0000000..6cc0656 --- /dev/null +++ b/buildroot/package/gauche/0002-gc-configure.ac-add-check-for-NO_GETCONTEXT-definition.patch @@ -0,0 +1,62 @@ +gc/configure.ac: add check for NO_GETCONTEXT definition + +This patch is ported from bdwgc package. Since Gauche uses an internal +copy of the boehm gc code, it is affected by the same problem. + +Both configure and configure.ac are modified because autoreconf fails +due to an incompatibility with the version of the autotools used by +Buildroot. + +Signed-off-by: Hiroshi Kawashima + +Original credits of patch in bdwgc package: +Signed-off-by: Samuel Martin +[yann.morin.1998@free.fr: add a comment, change variable name, use + AS_IF, remove debug traces, use AC_CHECK_FUNCS (as suggested by + Thomas)] +Signed-off-by: "Yann E. MORIN" +Cc: Thomas Petazzoni + +diff -ur a/gc/configure b/gc/configure +--- a/gc/configure 2015-11-12 21:41:02.394822056 +0900 ++++ b/gc/configure 2015-11-12 22:04:14.655157423 +0900 +@@ -16153,6 +16153,23 @@ + $as_echo "$ac_cv_fno_strict_aliasing" >&6; } + fi + ++# Check for getcontext (uClibc can be configured without it, for example) ++for ac_func in getcontext ++do : ++ ac_fn_c_check_func "$LINENO" "getcontext" "ac_cv_func_getcontext" ++if test "x$ac_cv_func_getcontext" = xyes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_GETCONTEXT 1 ++_ACEOF ++ ++fi ++done ++ ++if test "$ac_cv_func_getcontext" = "no"; then : ++ CFLAGS="$CFLAGS -DNO_GETCONTEXT" ++ CPPFLAGS="$CPPFLAGS -DNO_GETCONTEXT" ++fi ++ + case "$host" in + # While IRIX 6 has libdl for the O32 and N32 ABIs, it's missing for N64 + # and unnecessary everywhere. +diff -ur a/gc/configure.ac b/gc/configure.ac +--- a/gc/configure.ac 2015-11-12 22:31:44.851510997 +0900 ++++ b/gc/configure.ac 2015-11-12 22:33:39.292191227 +0900 +@@ -459,6 +459,12 @@ + AC_MSG_RESULT($ac_cv_fno_strict_aliasing) + fi + ++# Check for getcontext (uClibc can be configured without it, for example) ++AC_CHECK_FUNCS([getcontext]) ++AS_IF([test "$ac_cv_func_getcontext" = "no"], ++ [CFLAGS="$CFLAGS -DNO_GETCONTEXT" ++ CPPFLAGS="$CPPFLAGS -DNO_GETCONTEXT"]) ++ + case "$host" in + # While IRIX 6 has libdl for the O32 and N32 ABIs, it's missing for N64 + # and unnecessary everywhere. diff --git a/buildroot/package/gauche/0003-Fix-missing-libc-version.h-build-error-uClibc-x86-_6.patch b/buildroot/package/gauche/0003-Fix-missing-libc-version.h-build-error-uClibc-x86-_6.patch new file mode 100644 index 0000000..61a3f1a --- /dev/null +++ b/buildroot/package/gauche/0003-Fix-missing-libc-version.h-build-error-uClibc-x86-_6.patch @@ -0,0 +1,46 @@ +From 4b9692c93d658015087f19016b2bd0c9dfbccee6 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 28 May 2017 20:21:09 +0200 +Subject: [PATCH] Fix 'missing libc-version.h' build error (uClibc/x86[_64]) + (fix commit 3d34255) + +uClibc defines __GLIBC__ but does not contain libc-version.h file. + +* include/private/gcconfig.h [(I386 || X86_64) && LINUX && __GLIBC__] +(GLIBC_2_19_TSX_BUG): Do not define (and do not include +gnu/libc-version.h) if __UCLIBC__. + +[baruch: cherry pick from upstream bdwgc commit 047230b71d42140] +Signed-off-by: Baruch Siach +--- +Upstream status: patch applied to bdwgc; will propagate to gauche on the next +synch of its bundled bdwgc + + gc/include/private/gcconfig.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gc/include/private/gcconfig.h b/gc/include/private/gcconfig.h +index 80920e5af570..f063664c3f52 100644 +--- a/gc/include/private/gcconfig.h ++++ b/gc/include/private/gcconfig.h +@@ -1420,7 +1420,7 @@ + # define GC_PREFETCH_FOR_WRITE(x) \ + __asm__ __volatile__ ("prefetchw %0" : : "m"(*(char *)(x))) + # endif +-# if defined(__GLIBC__) ++# if defined(__GLIBC__) && !defined(__UCLIBC__) + /* Workaround lock elision implementation for some glibc. */ + # define GLIBC_2_19_TSX_BUG + # include /* for gnu_get_libc_version() */ +@@ -2431,7 +2431,7 @@ + /* FIXME: This seems to be fixed in GLibc v2.14. */ + # define GETCONTEXT_FPU_EXCMASK_BUG + # endif +-# if defined(__GLIBC__) ++# if defined(__GLIBC__) && !defined(__UCLIBC__) + /* Workaround lock elision implementation for some glibc. */ + # define GLIBC_2_19_TSX_BUG + # include /* for gnu_get_libc_version() */ +-- +2.11.0 + diff --git a/buildroot/package/gauche/Config.in b/buildroot/package/gauche/Config.in new file mode 100644 index 0000000..c5f2a51 --- /dev/null +++ b/buildroot/package/gauche/Config.in @@ -0,0 +1,28 @@ +# Architecture dependency from the bundled bdwgc. +config BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb || BR2_i386 || BR2_m68k || \ + BR2_mips || BR2_mipsel || BR2_mips64 || \ + BR2_mips64el || BR2_powerpc || BR2_powerpc64 || \ + BR2_powerpc64le || BR2_sh || BR2_x86_64 + +config BR2_PACKAGE_GAUCHE + bool "gauche" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS + help + Gauche is an R7RS Scheme implementation developed to be a + handy script interpreter, which allows programmers and + system administrators to write small to large scripts for + their daily chores. Quick startup, built-in system + interface, native multilingual support are some of its + goals. + + http://practical-scheme.net/gauche/ + +comment "gauche needs a toolchain w/ NPTL, dynamic library" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS diff --git a/buildroot/package/gauche/gauche.hash b/buildroot/package/gauche/gauche.hash new file mode 100644 index 0000000..8f45ef9 --- /dev/null +++ b/buildroot/package/gauche/gauche.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/gauche/files/Gauche/ +sha1 c3e1ea21f3acc66fd26eced117caab3f86531db4 Gauche-0.9.5.tgz +md5 8bac7cbd99a91f6f2c037ac6988db14d Gauche-0.9.5.tgz +# Locally calculated +sha256 4c8a53213de112708bbda5fa9648c21497d43ebf809ed5b32b15f21266b4e73c Gauche-0.9.5.tgz diff --git a/buildroot/package/gauche/gauche.mk b/buildroot/package/gauche/gauche.mk new file mode 100644 index 0000000..1e1ee39 --- /dev/null +++ b/buildroot/package/gauche/gauche.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# gauche +# +################################################################################ + +GAUCHE_VERSION = 0.9.5 +GAUCHE_SOURCE = Gauche-$(GAUCHE_VERSION).tgz +GAUCHE_SITE = http://downloads.sourceforge.net/project/gauche/Gauche +GAUCHE_LICENSE = BSD-3-Clause, Boehm-gc, SRFI (srfi-11.scm), reload (reload.scm) +GAUCHE_LICENSE_FILES = COPYING +GAUCHE_DEPENDENCIES = host-gauche + +HOST_GAUCHE_CONF_OPTS = --without-zlib +GAUCHE_CONF_OPTS = --without-libatomic-ops + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GAUCHE_CONF_OPTS += --with-zlib=$(STAGING_DIR) +GAUCHE_DEPENDENCIES += zlib +else +GAUCHE_CONF_OPTS += --without-zlib +endif + +# Detection of c99 support in configure fails without WCHAR. To enable +# automatic detection of c99 support by configure, we need to enable +# WCHAR in toolchain. But actually we do not need WCHAR at gauche +# runtime. So reuesting WCHAR in toolchain just for automatic detection +# will be overkill. To solve this, explicitly -std=gnu99 is specified +# here. +GAUCHE_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu99" + +$(eval $(host-autotools-package)) +$(eval $(autotools-package)) diff --git a/buildroot/package/gawk/0001-no-versioned.patch b/buildroot/package/gawk/0001-no-versioned.patch new file mode 100644 index 0000000..0c35088 --- /dev/null +++ b/buildroot/package/gawk/0001-no-versioned.patch @@ -0,0 +1,26 @@ +Disabled versioned installation of binaries to save space. +Also use symlinks where it's appropiate. + +Signed-off-by: Gustavo Zacarias +[Gustavo: update for 4.1.2] + +diff -Nura gawk-4.1.2.orig/Makefile.in gawk-4.1.2/Makefile.in +--- gawk-4.1.2.orig/Makefile.in 2015-04-29 16:11:09.367925925 -0300 ++++ gawk-4.1.2/Makefile.in 2015-04-29 16:11:25.308466495 -0300 +@@ -554,7 +554,7 @@ + CLEANFILES = core core.* + + # We want hard links for install-exec-hook, below +-LN = ln ++LN = $(LN_S) + + # For some make's, e.g. OpenBSD, that don't define this + RM = rm -f +@@ -1173,6 +1173,7 @@ + # (This is done universally, which may not always be right, but + # there's no easy way to distinguish GNU from non-GNU systems.) + install-exec-hook: ++foo: + (cd $(DESTDIR)$(bindir); \ + $(LN) gawk$(EXEEXT) gawk-$(VERSION)$(EXEEXT) 2>/dev/null ; \ + if [ ! -f awk$(EXEEXT) ]; \ diff --git a/buildroot/package/gawk/Config.in b/buildroot/package/gawk/Config.in new file mode 100644 index 0000000..a065243 --- /dev/null +++ b/buildroot/package/gawk/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_GAWK + bool "gawk" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + A special-purpose programming language which is data driven + rather than procedural. Allows for simple data-reformatting + jobs with just a few lines of code. + + http://www.gnu.org/software/gawk/ + +comment "gawk needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/gawk/gawk.hash b/buildroot/package/gawk/gawk.hash new file mode 100644 index 0000000..e2c7806 --- /dev/null +++ b/buildroot/package/gawk/gawk.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 53e184e2d0f90def9207860531802456322be091c7b48f23fdc79cda65adc266 gawk-4.1.4.tar.xz diff --git a/buildroot/package/gawk/gawk.mk b/buildroot/package/gawk/gawk.mk new file mode 100644 index 0000000..a3a2927 --- /dev/null +++ b/buildroot/package/gawk/gawk.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# gawk +# +################################################################################ + +GAWK_VERSION = 4.1.4 +GAWK_SOURCE = gawk-$(GAWK_VERSION).tar.xz +GAWK_SITE = $(BR2_GNU_MIRROR)/gawk +GAWK_DEPENDENCIES = host-gawk +GAWK_LICENSE = GPL-3.0+ +GAWK_LICENSE_FILES = COPYING + +# Prefer full-blown gawk over busybox awk +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +GAWK_DEPENDENCIES += busybox +endif + +ifeq ($(BR2_PACKAGE_LIBSIGSEGV),y) +GAWK_DEPENDENCIES += libsigsegv +endif + +# --with-mpfr requires an argument so just let +# configure find it automatically +ifeq ($(BR2_PACKAGE_MPFR),y) +GAWK_DEPENDENCIES += mpfr +else +GAWK_CONF_OPTS += --without-mpfr +endif + +# --with-readline requires an argument so just let +# configure find it automatically +ifeq ($(BR2_PACKAGE_READLINE),y) +GAWK_DEPENDENCIES += readline +else +GAWK_CONF_OPTS += --without-readline +endif + +HOST_GAWK_CONF_OPTS = --without-readline --without-mpfr + +define GAWK_CREATE_SYMLINK + ln -sf /usr/bin/gawk $(TARGET_DIR)/usr/bin/awk +endef + +GAWK_POST_INSTALL_TARGET_HOOKS += GAWK_CREATE_SYMLINK + +# Assume we support shared libs +# The check isn't cross-compile friendly and it's mandatory anyway +define GAWK_DISABLE_SHARED_CHECK + $(SED) 's/ check-for-shared-lib-support//' $(@D)/extension/Makefile.in +endef + +GAWK_POST_PATCH_HOOKS += GAWK_DISABLE_SHARED_CHECK + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gcc/4.9.4/0001-ARM-PR-target-68059-libgcc-should-not-use-__write-fo.patch b/buildroot/package/gcc/4.9.4/0001-ARM-PR-target-68059-libgcc-should-not-use-__write-fo.patch new file mode 100644 index 0000000..fd2bc69 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/0001-ARM-PR-target-68059-libgcc-should-not-use-__write-fo.patch @@ -0,0 +1,43 @@ +From 80bc14a5249da7054b716229206b453f339b4a5e Mon Sep 17 00:00:00 2001 +From: nsz +Date: Mon, 23 Nov 2015 15:17:55 +0000 +Subject: [PATCH] [ARM] PR target/68059 libgcc should not use __write for + printing fatal error + +libgcc/ + PR target/68059 + * config/arm/linux-atomic-64bit.c (__write): Rename to... + (write): ...this and fix the return type. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230762 138bc75d-0d04-0410-961f-82ee72b054a4 + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + libgcc/config/arm/linux-atomic-64bit.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libgcc/config/arm/linux-atomic-64bit.c b/libgcc/config/arm/linux-atomic-64bit.c +index 5b8c6e2..9078673 100644 +--- a/libgcc/config/arm/linux-atomic-64bit.c ++++ b/libgcc/config/arm/linux-atomic-64bit.c +@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + kernels; we check for that in an init section and bail out rather + unceremoneously. */ + +-extern unsigned int __write (int fd, const void *buf, unsigned int count); ++extern int write (int fd, const void *buf, unsigned int count); + extern void abort (void); + + /* Kernel helper for compare-and-exchange. */ +@@ -56,7 +56,7 @@ static void __check_for_sync8_kernelhelper (void) + for the user - I'm not sure I can rely on much else being + available at this point, so do the same as generic-morestack.c + write () and abort (). */ +- __write (2 /* stderr. */, err, sizeof (err)); ++ write (2 /* stderr. */, err, sizeof (err)); + abort (); + } + }; +-- +2.10.2 + diff --git a/buildroot/package/gcc/4.9.4/100-uclibc-conf.patch b/buildroot/package/gcc/4.9.4/100-uclibc-conf.patch new file mode 100644 index 0000000..d56bf0a --- /dev/null +++ b/buildroot/package/gcc/4.9.4/100-uclibc-conf.patch @@ -0,0 +1,15 @@ +Index: gcc-4.8.0/contrib/regression/objs-gcc.sh +=================================================================== +--- gcc-4.8.0.orig/contrib/regression/objs-gcc.sh 2009-04-09 17:00:19.000000000 +0200 ++++ gcc-4.8.0/contrib/regression/objs-gcc.sh 2013-03-23 17:39:04.000000000 +0100 +@@ -106,6 +106,10 @@ + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] ++ then ++ make all-gdb all-dejagnu all-ld || exit 1 ++ make install-gdb install-dejagnu install-ld || exit 1 + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then + make bootstrap || exit 1 + make install || exit 1 diff --git a/buildroot/package/gcc/4.9.4/1000-powerpc-link-with-math-lib.patch.conditional b/buildroot/package/gcc/4.9.4/1000-powerpc-link-with-math-lib.patch.conditional new file mode 100644 index 0000000..5e0484f --- /dev/null +++ b/buildroot/package/gcc/4.9.4/1000-powerpc-link-with-math-lib.patch.conditional @@ -0,0 +1,122 @@ +http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html + +On glibc the libc.so carries a copy of the math function copysignl() but +on uClibc math functions like copysignl() live in libm. Since libgcc_s +contains unresolved symbols, any attempt to link against libgcc_s +without explicitely specifying -lm fails, resulting in a broken +bootstrap of the compiler. + +Forward port to gcc 4.5.1 by Gustavo Zacarias + +--- + libgcc/Makefile.in | 4 +++- + libgcc/configure | 32 ++++++++++++++++++++++++++++++++ + libgcc/configure.ac | 21 +++++++++++++++++++++ + 3 files changed, 56 insertions(+), 1 deletion(-) + +Index: b/libgcc/Makefile.in +=================================================================== +--- a/libgcc/Makefile.in ++++ b/libgcc/Makefile.in +@@ -42,6 +42,7 @@ + enable_vtable_verify = @enable_vtable_verify@ + enable_decimal_float = @enable_decimal_float@ + fixed_point = @fixed_point@ ++LIBGCC_LIBM = @LIBGCC_LIBM@ + + host_noncanonical = @host_noncanonical@ + target_noncanonical = @target_noncanonical@ +@@ -943,9 +944,10 @@ + @multilib_dir@,$(MULTIDIR),$(subst \ + @shlib_objs@,$(objects) libgcc.a,$(subst \ + @shlib_base_name@,libgcc_s,$(subst \ ++ @libgcc_libm@,$(LIBGCC_LIBM),$(subst \ + @shlib_map_file@,$(mapfile),$(subst \ + @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \ +- @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))) ++ @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))) + + libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts) + # @multilib_flags@ is still needed because this may use +Index: b/libgcc/configure +=================================================================== +--- a/libgcc/configure ++++ b/libgcc/configure +@@ -564,6 +564,7 @@ + tmake_file + sfp_machine_header + set_use_emutls ++LIBGCC_LIBM + set_have_cc_tls + vis_hide + fixed_point +@@ -4535,6 +4536,37 @@ + fi + fi + ++# On powerpc libgcc_s references copysignl which is a libm function but ++# glibc apparently also provides it via libc as opposed to uClibc where ++# it lives in libm. ++echo "$as_me:$LINENO: checking for library containing copysignl" >&5 ++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6 ++if test "${libgcc_cv_copysignl_lib+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++ echo '#include ' > conftest.c ++ echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c ++ libgcc_cv_copysignl_lib="-lc" ++ if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } ++ then ++ libgcc_cv_copysignl_lib="-lm" ++ fi ++ rm -f conftest.* ++ ++fi ++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5 ++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6 ++ ++case /${libgcc_cv_copysignl_lib}/ in ++ /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;; ++ *) LIBGCC_LIBM= ;; ++esac + + # Conditionalize the makefile for this target machine. + tmake_file_= +Index: b/libgcc/configure.ac +=================================================================== +--- a/libgcc/configure.ac ++++ b/libgcc/configure.ac +@@ -357,6 +357,27 @@ + fi + AC_SUBST(set_have_cc_tls) + ++# On powerpc libgcc_s references copysignl which is a libm function but ++# glibc apparently also provides it via libc as opposed to uClibc where ++# it lives in libm. ++AC_CACHE_CHECK ++ libgcc_cv_copysignl_lib, ++ echo '#include ' > conftest.c ++ echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c ++ libgcc_cv_copysignl_lib="-lc" ++ if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD) ++ then ++ libgcc_cv_copysignl_lib="-lm" ++ fi ++ rm -f conftest.* ++ ]) ++ ++case /${libgcc_cv_copysignl_lib}/ in ++ /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;; ++ *) LIBGCC_LIBM= ;; ++esac ++AC_SUBST(LIBGCC_LIBM) ++ + # See if we have emulated thread-local storage. + GCC_CHECK_EMUTLS + set_use_emutls= diff --git a/buildroot/package/gcc/4.9.4/111-pr65730.patch b/buildroot/package/gcc/4.9.4/111-pr65730.patch new file mode 100644 index 0000000..8a41fd2 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/111-pr65730.patch @@ -0,0 +1,34 @@ +From b9a7775674d91c7af8043a83211ffeaa576327d7 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Fri, 10 Apr 2015 17:46:30 +0300 +Subject: [PATCH] Fix PR target/65730 + +2015-05-20 Max Filippov +gcc/ + * config/xtensa/xtensa.c (init_alignment_context): Replace MULT + by BITS_PER_UNIT with ASHIFT by exact_log2 (BITS_PER_UNIT). + +Signed-off-by: Max Filippov +--- +Backported from: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223452 +Changes to ChangeLog are dropped. + + gcc/config/xtensa/xtensa.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +Index: b/gcc/config/xtensa/xtensa.c +=================================================================== +--- a/gcc/config/xtensa/xtensa.c ++++ b/gcc/config/xtensa/xtensa.c +@@ -1436,8 +1436,9 @@ + if (ac->shift != NULL_RTX) + { + /* Shift is the byte count, but we need the bitcount. */ +- ac->shift = expand_simple_binop (SImode, MULT, ac->shift, +- GEN_INT (BITS_PER_UNIT), ++ gcc_assert (exact_log2 (BITS_PER_UNIT) >= 0); ++ ac->shift = expand_simple_binop (SImode, ASHIFT, ac->shift, ++ GEN_INT (exact_log2 (BITS_PER_UNIT)), + NULL_RTX, 1, OPTAB_DIRECT); + ac->modemask = expand_simple_binop (SImode, ASHIFT, + GEN_INT (GET_MODE_MASK (mode)), diff --git a/buildroot/package/gcc/4.9.4/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch b/buildroot/package/gcc/4.9.4/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch new file mode 100644 index 0000000..bb77c4b --- /dev/null +++ b/buildroot/package/gcc/4.9.4/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch @@ -0,0 +1,26 @@ +From 9bf6066d588632dab9f78932df15b5b4140f31f3 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Fri, 6 Nov 2015 14:27:23 +0100 +Subject: [PATCH] gcc/config.gcc: fix typo for powerpc e6500 cpu_is_64bit + +Otherwise it is not recognized as a 64-bit powerpc and gcc will not generate +64-bit binaries by default. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + gcc/config.gcc | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +Index: b/gcc/config.gcc +=================================================================== +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -441,7 +441,7 @@ + extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h spu2vmx.h vec_types.h si2vmx.h htmintrin.h htmxlintrin.h" + need_64bit_hwint=yes + case x$with_cpu in +- xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|Xe6500) ++ xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500) + cpu_is_64bit=yes + ;; + esac diff --git a/buildroot/package/gcc/4.9.4/130-pr43538.patch b/buildroot/package/gcc/4.9.4/130-pr43538.patch new file mode 100644 index 0000000..19e57bb --- /dev/null +++ b/buildroot/package/gcc/4.9.4/130-pr43538.patch @@ -0,0 +1,25 @@ +From c037df1be41f8daf4d581d7ffa4ec8cfa640bccf Mon Sep 17 00:00:00 2001 +From: glisse +Date: Fri, 25 Apr 2014 08:03:08 +0000 +Subject: [PATCH] 2014-04-25 Marc Glisse + + PR target/43538 + * mt-gnu: Don't reset CXXFLAGS_FOR_TARGET. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209784 138bc75d-0d04-0410-961f-82ee72b054a4 +Signed-off-by: Max Filippov +--- + config/mt-gnu | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/config/mt-gnu b/config/mt-gnu +index 15bf417..5c696f5 100644 +--- a/config/mt-gnu ++++ b/config/mt-gnu +@@ -1 +1 @@ +-CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE ++CXXFLAGS_FOR_TARGET += -D_GNU_SOURCE +-- +2.1.4 + diff --git a/buildroot/package/gcc/4.9.4/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch b/buildroot/package/gcc/4.9.4/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch new file mode 100644 index 0000000..55f3228 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch @@ -0,0 +1,37 @@ +From 3c536954a67a883630f4a7513a27f02a892c3dcb Mon Sep 17 00:00:00 2001 +From: Evgeniy Stepanov +Date: Tue, 21 Oct 2014 21:08:13 +0000 +Subject: [PATCH] [sanitizer] Fix build with _FILE_OFFSET_BITS=64. + +Sanitizer source is not affected by _FILE_OFFSET_BITS in general, +but this one file must be built with 32-bit off_t. More details in the code. + +git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@220328 91177308-0d34-0410-b5e6-96231b3b80d8 +Signed-off-by: Max Filippov +--- + lib/sanitizer_common/sanitizer_platform_limits_posix.cc | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index bbc1108..fc09522 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -13,7 +13,15 @@ + + #include "sanitizer_platform.h" + #if SANITIZER_LINUX || SANITIZER_MAC ++// Tests in this file assume that off_t-dependent data structures match the ++// libc ABI. For example, struct dirent here is what readdir() function (as ++// exported from libc) returns, and not the user-facing "dirent", which ++// depends on _FILE_OFFSET_BITS setting. ++// To get this "true" dirent definition, we undefine _FILE_OFFSET_BITS below. ++#ifdef _FILE_OFFSET_BITS ++#undef _FILE_OFFSET_BITS ++#endif + + #include "sanitizer_internal_defs.h" + #include "sanitizer_platform_limits_posix.h" + +-- +2.1.4 + diff --git a/buildroot/package/gcc/4.9.4/301-missing-execinfo_h.patch b/buildroot/package/gcc/4.9.4/301-missing-execinfo_h.patch new file mode 100644 index 0000000..00efda2 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/301-missing-execinfo_h.patch @@ -0,0 +1,13 @@ +Index: gcc-4.8.0/boehm-gc/include/gc.h +=================================================================== +--- gcc-4.8.0.orig/boehm-gc/include/gc.h 2007-04-23 23:10:09.000000000 +0200 ++++ gcc-4.8.0/boehm-gc/include/gc.h 2013-03-23 17:39:20.000000000 +0100 +@@ -503,7 +503,7 @@ + #if defined(__linux__) || defined(__GLIBC__) + # include + # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ +- && !defined(__ia64__) ++ && !defined(__ia64__) && !defined(__UCLIBC__) + # ifndef GC_HAVE_BUILTIN_BACKTRACE + # define GC_HAVE_BUILTIN_BACKTRACE + # endif diff --git a/buildroot/package/gcc/4.9.4/810-arm-softfloat-libgcc.patch b/buildroot/package/gcc/4.9.4/810-arm-softfloat-libgcc.patch new file mode 100644 index 0000000..5efa7fd --- /dev/null +++ b/buildroot/package/gcc/4.9.4/810-arm-softfloat-libgcc.patch @@ -0,0 +1,30 @@ +Index: b/gcc/config/arm/linux-elf.h +=================================================================== +--- a/gcc/config/arm/linux-elf.h ++++ b/gcc/config/arm/linux-elf.h +@@ -60,7 +60,7 @@ + %{shared:-lc} \ + %{!shared:%{profile:-lc_p}%{!profile:-lc}}" + +-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc" ++#define LIBGCC_SPEC "-lgcc" + + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + +Index: b/libgcc/config/arm/t-linux +=================================================================== +--- a/libgcc/config/arm/t-linux ++++ b/libgcc/config/arm/t-linux +@@ -1,6 +1,11 @@ + LIB1ASMSRC = arm/lib1funcs.S + LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ +- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 ++ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \ ++ _arm_addsubdf3 _arm_addsubsf3 \ ++ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ ++ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \ ++ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \ ++ _arm_fixsfsi _arm_fixunssfsi + + # Just for these, we omit the frame pointer since it makes such a big + # difference. diff --git a/buildroot/package/gcc/4.9.4/830-arm_unbreak_armv4t.patch b/buildroot/package/gcc/4.9.4/830-arm_unbreak_armv4t.patch new file mode 100644 index 0000000..37f8f2a --- /dev/null +++ b/buildroot/package/gcc/4.9.4/830-arm_unbreak_armv4t.patch @@ -0,0 +1,13 @@ +http://sourceware.org/ml/crossgcc/2008-05/msg00009.html + +--- a/gcc/config/arm/linux-eabi.h ++++ b/gcc/config/arm/linux-eabi.h +@@ -45,7 +45,7 @@ + The ARM10TDMI core is the default for armv5t, so set + SUBTARGET_CPU_DEFAULT to achieve this. */ + #undef SUBTARGET_CPU_DEFAULT +-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi + + /* TARGET_BIG_ENDIAN_DEFAULT is set in + config.gcc for big endian configurations. */ diff --git a/buildroot/package/gcc/4.9.4/840-microblaze-enable-dwarf-eh-support.patch b/buildroot/package/gcc/4.9.4/840-microblaze-enable-dwarf-eh-support.patch new file mode 100644 index 0000000..03fc47f --- /dev/null +++ b/buildroot/package/gcc/4.9.4/840-microblaze-enable-dwarf-eh-support.patch @@ -0,0 +1,166 @@ +Fetched from Xilinx gcc git at https://github.com/Xilinx/gcc + +From 23c35173490ac2d6348a668dfc9c1a6eb62171f2 Mon Sep 17 00:00:00 2001 +From: "Edgar E. Iglesias" +Date: Mon, 18 Jun 2012 20:18:13 +0200 +Subject: [PATCH] [Patch, microblaze]: Enable DWARF exception handling support. + +Changelog + +2013-03-18 Edgar E. Iglesias + David Holsgrove + + * common/config/microblaze/microblaze-common.c: Remove + TARGET_EXCEPT_UNWIND_INFO definition. + * config/microblaze/microblaze-protos.h: Add + microblaze_eh_return prototype. + * gcc/config/microblaze/microblaze.c: (microblaze_must_save_register, + microblaze_expand_epilogue, microblaze_return_addr): Handle + calls_eh_return + (microblaze_eh_return): New function. + * gcc/config/microblaze/microblaze.h: Define RETURN_ADDR_OFFSET, + EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX, + ASM_PREFERRED_EH_DATA_FORMAT + * gcc/config/microblaze/microblaze.md: Define eh_return pattern. + +Signed-off-by: David Holsgrove +Signed-off-by: Edgar E. Iglesias +--- + gcc/common/config/microblaze/microblaze-common.c | 3 --- + gcc/config/microblaze/microblaze-protos.h | 1 + + gcc/config/microblaze/microblaze.c | 29 ++++++++++++++++++++---- + gcc/config/microblaze/microblaze.h | 15 ++++++++++++ + gcc/config/microblaze/microblaze.md | 11 +++++++++ + 5 files changed, 52 insertions(+), 7 deletions(-) + +Index: b/gcc/common/config/microblaze/microblaze-common.c +=================================================================== +--- a/gcc/common/config/microblaze/microblaze-common.c ++++ b/gcc/common/config/microblaze/microblaze-common.c +@@ -37,7 +37,4 @@ + #undef TARGET_OPTION_OPTIMIZATION_TABLE + #define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table + +-#undef TARGET_EXCEPT_UNWIND_INFO +-#define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info +- + struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; +Index: b/gcc/config/microblaze/microblaze-protos.h +=================================================================== +--- a/gcc/config/microblaze/microblaze-protos.h ++++ b/gcc/config/microblaze/microblaze-protos.h +@@ -54,6 +54,7 @@ + extern int symbol_mentioned_p (rtx); + extern int label_mentioned_p (rtx); + extern bool microblaze_cannot_force_const_mem (enum machine_mode, rtx); ++extern void microblaze_eh_return (rtx op0); + #endif /* RTX_CODE */ + + /* Declare functions in microblaze-c.c. */ +Index: b/gcc/config/microblaze/microblaze.c +=================================================================== +--- a/gcc/config/microblaze/microblaze.c ++++ b/gcc/config/microblaze/microblaze.c +@@ -1906,6 +1906,11 @@ + if (frame_pointer_needed && (regno == HARD_FRAME_POINTER_REGNUM)) + return 1; + ++ if (crtl->calls_eh_return ++ && regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) { ++ return 1; ++ } ++ + if (!crtl->is_leaf) + { + if (regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) +@@ -1933,6 +1938,13 @@ + return 1; + } + ++ if (crtl->calls_eh_return ++ && (regno == EH_RETURN_DATA_REGNO (0) ++ || regno == EH_RETURN_DATA_REGNO (1))) ++ { ++ return 1; ++ } ++ + return 0; + } + +@@ -2962,6 +2974,12 @@ + emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, fsiz_rtx)); + } + ++ if (crtl->calls_eh_return) ++ emit_insn (gen_addsi3 (stack_pointer_rtx, ++ stack_pointer_rtx, ++ gen_rtx_raw_REG (SImode, ++ MB_EH_STACKADJ_REGNUM))); ++ + emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, GP_REG_FIRST + + MB_ABI_SUB_RETURN_ADDR_REGNUM))); + } +@@ -3256,10 +3274,13 @@ + if (count != 0) + return NULL_RTX; + +- return gen_rtx_PLUS (Pmode, +- get_hard_reg_initial_val (Pmode, +- MB_ABI_SUB_RETURN_ADDR_REGNUM), +- GEN_INT (8)); ++ return get_hard_reg_initial_val (Pmode, ++ MB_ABI_SUB_RETURN_ADDR_REGNUM); ++} ++ ++void microblaze_eh_return (rtx op0) ++{ ++ emit_insn (gen_movsi(gen_rtx_MEM(Pmode, stack_pointer_rtx), op0)); + } + + /* Queue an .ident string in the queue of top-level asm statements. +Index: b/gcc/config/microblaze/microblaze.h +=================================================================== +--- a/gcc/config/microblaze/microblaze.h ++++ b/gcc/config/microblaze/microblaze.h +@@ -184,6 +184,21 @@ + #define INCOMING_RETURN_ADDR_RTX \ + gen_rtx_REG (VOIDmode, GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM) + ++/* Specifies the offset from INCOMING_RETURN_ADDR_RTX and the actual return PC. */ ++#define RETURN_ADDR_OFFSET (8) ++ ++/* Describe how we implement __builtin_eh_return. */ ++#define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? MB_ABI_FIRST_ARG_REGNUM + (N) : INVALID_REGNUM) ++ ++#define MB_EH_STACKADJ_REGNUM MB_ABI_INT_RETURN_VAL2_REGNUM ++#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, MB_EH_STACKADJ_REGNUM) ++ ++/* Select a format to encode pointers in exception handling data. CODE ++ is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is ++ true if the symbol may be affected by dynamic relocations. */ ++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ ++ ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr) ++ + /* Use DWARF 2 debugging information by default. */ + #define DWARF2_DEBUGGING_INFO + #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG +Index: b/gcc/config/microblaze/microblaze.md +=================================================================== +--- a/gcc/config/microblaze/microblaze.md ++++ b/gcc/config/microblaze/microblaze.md +@@ -2261,4 +2261,15 @@ + (set_attr "mode" "SI") + (set_attr "length" "4")]) + ++; This is used in compiling the unwind routines. ++(define_expand "eh_return" ++ [(use (match_operand 0 "general_operand" ""))] ++ "" ++ " ++{ ++ microblaze_eh_return(operands[0]); ++ DONE; ++}") ++ + (include "sync.md") ++ diff --git a/buildroot/package/gcc/4.9.4/850-libstdcxx-uclibc-c99.patch b/buildroot/package/gcc/4.9.4/850-libstdcxx-uclibc-c99.patch new file mode 100644 index 0000000..533d01f --- /dev/null +++ b/buildroot/package/gcc/4.9.4/850-libstdcxx-uclibc-c99.patch @@ -0,0 +1,274 @@ +Allow C99-depending features of libstdc++ with uClibc + +The libstdc++ code is fairly restrictive on how it checks for C99 +compatibility: it requires *complete* C99 support to enable certain +features. For example, uClibc provides a good number of C99 features, +but not C99 complex number support. For this reason, libstdc++ +completely disables many the standard C++ methods that can in fact +work because uClibc provides the necessary functions. + +This patch is similar and highly inspired from +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, but implemented in +a way that doesn't involve changing the configure.ac script, as +autoreconfiguring gcc is complicated. It simply relies on the fact +that uClibc defines the __UCLIBC__ definition. + +Signed-off-by: Thomas Petazzoni +[Gustavo: update for 4.9.3] + +Index: b/libstdc++-v3/config/locale/generic/c_locale.h +=================================================================== +--- a/libstdc++-v3/config/locale/generic/c_locale.h ++++ b/libstdc++-v3/config/locale/generic/c_locale.h +@@ -70,7 +70,7 @@ + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); + #else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +Index: b/libstdc++-v3/config/locale/gnu/c_locale.h +=================================================================== +--- a/libstdc++-v3/config/locale/gnu/c_locale.h ++++ b/libstdc++-v3/config/locale/gnu/c_locale.h +@@ -88,7 +88,7 @@ + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); + #else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +Index: b/libstdc++-v3/include/bits/basic_string.h +=================================================================== +--- a/libstdc++-v3/include/bits/basic_string.h ++++ b/libstdc++-v3/include/bits/basic_string.h +@@ -2843,7 +2843,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99) ++#if __cplusplus >= 201103L && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)) + + #include + +Index: b/libstdc++-v3/include/bits/locale_facets_nonio.tcc +=================================================================== +--- a/libstdc++-v3/include/bits/locale_facets_nonio.tcc ++++ b/libstdc++-v3/include/bits/locale_facets_nonio.tcc +@@ -572,7 +572,7 @@ + { + const locale __loc = __io.getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + // First try a buffer perhaps big enough. + int __cs_size = 64; + char* __cs = static_cast(__builtin_alloca(__cs_size)); +Index: b/libstdc++-v3/include/bits/locale_facets.tcc +=================================================================== +--- a/libstdc++-v3/include/bits/locale_facets.tcc ++++ b/libstdc++-v3/include/bits/locale_facets.tcc +@@ -987,7 +987,7 @@ + char __fbuf[16]; + __num_base::_S_format_float(__io, __fbuf, __mod); + +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + // First try a buffer perhaps big enough (most probably sufficient + // for non-ios_base::fixed outputs) + int __cs_size = __max_digits * 3; +Index: b/libstdc++-v3/include/c_compatibility/math.h +=================================================================== +--- a/libstdc++-v3/include/c_compatibility/math.h ++++ b/libstdc++-v3/include/c_compatibility/math.h +@@ -56,7 +56,7 @@ + using std::floor; + using std::fmod; + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::fpclassify; + using std::isfinite; + using std::isinf; +Index: b/libstdc++-v3/include/c_compatibility/wchar.h +=================================================================== +--- a/libstdc++-v3/include/c_compatibility/wchar.h ++++ b/libstdc++-v3/include/c_compatibility/wchar.h +@@ -103,7 +103,7 @@ + using std::wmemset; + using std::wcsftime; + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +Index: b/libstdc++-v3/include/c_global/cstdio +=================================================================== +--- a/libstdc++-v3/include/c_global/cstdio ++++ b/libstdc++-v3/include/c_global/cstdio +@@ -146,7 +146,7 @@ + using ::vsprintf; + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef snprintf + #undef vfscanf +Index: b/libstdc++-v3/include/c_global/cstdlib +=================================================================== +--- a/libstdc++-v3/include/c_global/cstdlib ++++ b/libstdc++-v3/include/c_global/cstdlib +@@ -182,7 +182,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef _Exit + #undef llabs +Index: b/libstdc++-v3/include/c_global/cwchar +=================================================================== +--- a/libstdc++-v3/include/c_global/cwchar ++++ b/libstdc++-v3/include/c_global/cwchar +@@ -232,7 +232,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef wcstold + #undef wcstoll +@@ -289,7 +289,7 @@ + using std::vwscanf; + #endif + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +Index: b/libstdc++-v3/include/c_std/cstdio +=================================================================== +--- a/libstdc++-v3/include/c_std/cstdio ++++ b/libstdc++-v3/include/c_std/cstdio +@@ -144,7 +144,7 @@ + using ::vsprintf; + } // namespace std + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef snprintf + #undef vfscanf +Index: b/libstdc++-v3/include/c_std/cstdlib +=================================================================== +--- a/libstdc++-v3/include/c_std/cstdlib ++++ b/libstdc++-v3/include/c_std/cstdlib +@@ -180,7 +180,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef _Exit + #undef llabs +Index: b/libstdc++-v3/include/c_std/cwchar +=================================================================== +--- a/libstdc++-v3/include/c_std/cwchar ++++ b/libstdc++-v3/include/c_std/cwchar +@@ -228,7 +228,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef wcstold + #undef wcstoll +Index: b/libstdc++-v3/include/ext/vstring.h +=================================================================== +--- a/libstdc++-v3/include/ext/vstring.h ++++ b/libstdc++-v3/include/ext/vstring.h +@@ -2680,7 +2680,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99)) ++#if ((__cplusplus >= 201103L) && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__))) + + #include + +Index: b/libstdc++-v3/include/tr1/cstdio +=================================================================== +--- a/libstdc++-v3/include/tr1/cstdio ++++ b/libstdc++-v3/include/tr1/cstdio +@@ -33,7 +33,7 @@ + + #include + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + namespace std _GLIBCXX_VISIBILITY(default) + { +Index: b/libstdc++-v3/include/tr1/cstdlib +=================================================================== +--- a/libstdc++-v3/include/tr1/cstdlib ++++ b/libstdc++-v3/include/tr1/cstdlib +@@ -35,7 +35,7 @@ + + #if _GLIBCXX_HOSTED + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + namespace std _GLIBCXX_VISIBILITY(default) + { +Index: b/libstdc++-v3/include/tr1/cwchar +=================================================================== +--- a/libstdc++-v3/include/tr1/cwchar ++++ b/libstdc++-v3/include/tr1/cwchar +@@ -52,7 +52,7 @@ + using std::vwscanf; + #endif + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +Index: b/libstdc++-v3/include/tr1/stdlib.h +=================================================================== +--- a/libstdc++-v3/include/tr1/stdlib.h ++++ b/libstdc++-v3/include/tr1/stdlib.h +@@ -33,7 +33,7 @@ + + #if _GLIBCXX_HOSTED + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + using std::tr1::atoll; + using std::tr1::strtoll; +Index: b/libstdc++-v3/src/c++11/debug.cc +=================================================================== +--- a/libstdc++-v3/src/c++11/debug.cc ++++ b/libstdc++-v3/src/c++11/debug.cc +@@ -788,7 +788,7 @@ + int __n __attribute__ ((__unused__)), + const char* __fmt, _Tp __s) const throw () + { +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + std::snprintf(__buf, __n, __fmt, __s); + #else + std::sprintf(__buf, __fmt, __s); diff --git a/buildroot/package/gcc/4.9.4/860-cilk-wchar.patch b/buildroot/package/gcc/4.9.4/860-cilk-wchar.patch new file mode 100644 index 0000000..1837405 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/860-cilk-wchar.patch @@ -0,0 +1,56 @@ +[PATCH] cilk: fix build without wchar + +When building against uClibc with wchar support disabled, WCHAR_MIN and +WCHAR_MAX are not defined leading to compilation errors. + +Fix it by only including the wchar code if available. + +Signed-off-by: Peter Korsgaard +--- + libcilkrts/include/cilk/reducer_min_max.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +Index: host-gcc-final-4.9.2/libcilkrts/include/cilk/reducer_min_max.h +=================================================================== +--- host-gcc-final-4.9.2.orig/libcilkrts/include/cilk/reducer_min_max.h ++++ host-gcc-final-4.9.2/libcilkrts/include/cilk/reducer_min_max.h +@@ -3154,7 +3154,9 @@ + CILK_C_REDUCER_MAX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INSTANCE(int, int, INT_MIN) +@@ -3306,7 +3308,9 @@ + CILK_C_REDUCER_MAX_INDEX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INDEX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(int, int, INT_MIN) +@@ -3432,7 +3436,9 @@ + CILK_C_REDUCER_MIN_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(int, int, INT_MAX) +@@ -3584,7 +3590,9 @@ + CILK_C_REDUCER_MIN_INDEX_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INDEX_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(int, int, INT_MAX) diff --git a/buildroot/package/gcc/4.9.4/870-xtensa-add-mauto-litpools-option.patch b/buildroot/package/gcc/4.9.4/870-xtensa-add-mauto-litpools-option.patch new file mode 100644 index 0000000..98c7b3f --- /dev/null +++ b/buildroot/package/gcc/4.9.4/870-xtensa-add-mauto-litpools-option.patch @@ -0,0 +1,287 @@ +From 6d852ffb43b111a39162135c95249e749c4e285b Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Thu, 6 Aug 2015 01:16:02 +0300 +Subject: [PATCH] xtensa: add -mauto-litpools option + +With support from assembler this option allows compiling huge functions, +where single literal pool at the beginning of a function may not be +reachable by L32R instructions at its end. + +Currently assembler --auto-litpools option cannot deal with literals +used from multiple locations separated by more than 256 KBytes of code. +Don't turn constants into literals, instead use MOVI instruction to load +them into registers and let the assembler turn them into literals as +necessary. + +2015-08-12 Max Filippov +gcc/ + * config/xtensa/constraints.md (define_constraint "Y"): New + constraint. + * config/xtensa/elf.h (ASM_SPEC): Add m(no-)auto-litpools. + * config/xtensa/linux.h (ASM_SPEC): Likewise. + * config/xtensa/predicates.md (move_operand): Match constants + and symbols in the presence of TARGET_AUTO_LITPOOLS. + * config/xtensa/xtensa.c (xtensa_valid_move): Don't allow + immediate references to TLS data. + (xtensa_emit_move_sequence): Don't force constants to memory in + the presence of TARGET_AUTO_LITPOOLS. + (print_operand): Add 'y' format, same as default, but capable of + printing SF mode constants as well. + * config/xtensa/xtensa.md (movsi_internal, movhi_internal) + (movsf_internal): Add movi pattern that loads literal. + (movsf, movdf): Don't force constants to memory in the presence + of TARGET_AUTO_LITPOOLS. + (movdf_internal): Add 'Y' constraint. + * config/xtensa/xtensa.opt (mauto-litpools): New option. + +Signed-off-by: Max Filippov +--- +Backported from: r226828 +Changes to ChangeLogs and documentation are dropped. + + gcc/config/xtensa/constraints.md | 5 +++++ + gcc/config/xtensa/elf.h | 4 +++- + gcc/config/xtensa/linux.h | 4 +++- + gcc/config/xtensa/predicates.md | 3 ++- + gcc/config/xtensa/xtensa.c | 19 ++++++++++++++++++- + gcc/config/xtensa/xtensa.md | 35 +++++++++++++++++++---------------- + gcc/config/xtensa/xtensa.opt | 4 ++++ + 7 files changed, 54 insertions(+), 20 deletions(-) + +Index: b/gcc/config/xtensa/constraints.md +=================================================================== +--- a/gcc/config/xtensa/constraints.md ++++ b/gcc/config/xtensa/constraints.md +@@ -111,6 +111,11 @@ + (and (match_code "const_int") + (match_test "xtensa_mask_immediate (ival)"))) + ++(define_constraint "Y" ++ "A constant that can be used in relaxed MOVI instructions." ++ (and (match_code "const_int,const_double,const,symbol_ref,label_ref") ++ (match_test "TARGET_AUTO_LITPOOLS"))) ++ + ;; Memory constraints. Do not use define_memory_constraint here. Doing so + ;; causes reload to force some constants into the constant pool, but since + ;; the Xtensa constant pool can only be accessed with L32R instructions, it +Index: b/gcc/config/xtensa/elf.h +=================================================================== +--- a/gcc/config/xtensa/elf.h ++++ b/gcc/config/xtensa/elf.h +@@ -48,7 +48,9 @@ + %{mtarget-align:--target-align} \ + %{mno-target-align:--no-target-align} \ + %{mlongcalls:--longcalls} \ +- %{mno-longcalls:--no-longcalls}" ++ %{mno-longcalls:--no-longcalls} \ ++ %{mauto-litpools:--auto-litpools} \ ++ %{mno-auto-litpools:--no-auto-litpools}" + + #undef LIB_SPEC + #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim -lhal" +Index: b/gcc/config/xtensa/linux.h +=================================================================== +--- a/gcc/config/xtensa/linux.h ++++ b/gcc/config/xtensa/linux.h +@@ -42,7 +42,9 @@ + %{mtarget-align:--target-align} \ + %{mno-target-align:--no-target-align} \ + %{mlongcalls:--longcalls} \ +- %{mno-longcalls:--no-longcalls}" ++ %{mno-longcalls:--no-longcalls} \ ++ %{mauto-litpools:--auto-litpools} \ ++ %{mno-auto-litpools:--no-auto-litpools}" + + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" + +Index: b/gcc/config/xtensa/predicates.md +=================================================================== +--- a/gcc/config/xtensa/predicates.md ++++ b/gcc/config/xtensa/predicates.md +@@ -142,7 +142,8 @@ + (match_test "GET_MODE_CLASS (mode) == MODE_INT + && xtensa_simm12b (INTVAL (op))")) + (and (match_code "const_int,const_double,const,symbol_ref,label_ref") +- (match_test "TARGET_CONST16 && CONSTANT_P (op) ++ (match_test "(TARGET_CONST16 || TARGET_AUTO_LITPOOLS) ++ && CONSTANT_P (op) + && GET_MODE_SIZE (mode) % UNITS_PER_WORD == 0"))))) + + ;; Accept the floating point constant 1 in the appropriate mode. +Index: b/gcc/config/xtensa/xtensa.c +=================================================================== +--- a/gcc/config/xtensa/xtensa.c ++++ b/gcc/config/xtensa/xtensa.c +@@ -477,6 +477,9 @@ + { + int dst_regnum = xt_true_regnum (operands[0]); + ++ if (xtensa_tls_referenced_p (operands[1])) ++ return FALSE; ++ + /* The stack pointer can only be assigned with a MOVSP opcode. */ + if (dst_regnum == STACK_POINTER_REGNUM) + return (mode == SImode +@@ -1044,7 +1047,7 @@ + return 1; + } + +- if (! TARGET_CONST16) ++ if (! TARGET_AUTO_LITPOOLS && ! TARGET_CONST16) + { + src = force_const_mem (SImode, src); + operands[1] = src; +@@ -2428,6 +2431,20 @@ + } + break; + ++ case 'y': ++ if (GET_CODE (x) == CONST_DOUBLE && ++ GET_MODE (x) == SFmode) ++ { ++ REAL_VALUE_TYPE r; ++ long l; ++ REAL_VALUE_FROM_CONST_DOUBLE (r, x); ++ REAL_VALUE_TO_TARGET_SINGLE (r, l); ++ fprintf (file, "0x%08lx", l); ++ break; ++ } ++ ++ /* fall through */ ++ + default: + if (GET_CODE (x) == REG || GET_CODE (x) == SUBREG) + fprintf (file, "%s", reg_names[xt_true_regnum (x)]); +Index: b/gcc/config/xtensa/xtensa.md +=================================================================== +--- a/gcc/config/xtensa/xtensa.md ++++ b/gcc/config/xtensa/xtensa.md +@@ -799,8 +799,8 @@ + }) + + (define_insn "movsi_internal" +- [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,W,a,a,U,*a,*A") +- (match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,i,T,U,r,*A,*r"))] ++ [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,a,W,a,a,U,*a,*A") ++ (match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,Y,i,T,U,r,*A,*r"))] + "xtensa_valid_move (SImode, operands)" + "@ + movi.n\t%0, %x1 +@@ -812,15 +812,16 @@ + mov\t%0, %1 + movsp\t%0, %1 + movi\t%0, %x1 ++ movi\t%0, %1 + const16\t%0, %t1\;const16\t%0, %b1 + %v1l32r\t%0, %1 + %v1l32i\t%0, %1 + %v0s32i\t%1, %0 + rsr\t%0, ACCLO + wsr\t%1, ACCLO" +- [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,load,load,store,rsr,wsr") ++ [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,move,load,load,store,rsr,wsr") + (set_attr "mode" "SI") +- (set_attr "length" "2,2,2,2,2,2,3,3,3,6,3,3,3,3,3")]) ++ (set_attr "length" "2,2,2,2,2,2,3,3,3,3,6,3,3,3,3,3")]) + + ;; 16-bit Integer moves + +@@ -834,21 +835,22 @@ + }) + + (define_insn "movhi_internal" +- [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,U,*a,*A") +- (match_operand:HI 1 "move_operand" "M,d,r,I,U,r,*A,*r"))] ++ [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,a,U,*a,*A") ++ (match_operand:HI 1 "move_operand" "M,d,r,I,Y,U,r,*A,*r"))] + "xtensa_valid_move (HImode, operands)" + "@ + movi.n\t%0, %x1 + mov.n\t%0, %1 + mov\t%0, %1 + movi\t%0, %x1 ++ movi\t%0, %1 + %v1l16ui\t%0, %1 + %v0s16i\t%1, %0 + rsr\t%0, ACCLO + wsr\t%1, ACCLO" +- [(set_attr "type" "move,move,move,move,load,store,rsr,wsr") ++ [(set_attr "type" "move,move,move,move,move,load,store,rsr,wsr") + (set_attr "mode" "HI") +- (set_attr "length" "2,2,3,3,3,3,3,3")]) ++ (set_attr "length" "2,2,3,3,3,3,3,3,3")]) + + ;; 8-bit Integer moves + +@@ -919,7 +921,7 @@ + (match_operand:SF 1 "general_operand" ""))] + "" + { +- if (!TARGET_CONST16 && CONSTANT_P (operands[1])) ++ if (!TARGET_CONST16 && !TARGET_AUTO_LITPOOLS && CONSTANT_P (operands[1])) + operands[1] = force_const_mem (SFmode, operands[1]); + + if ((!register_operand (operands[0], SFmode) +@@ -934,8 +936,8 @@ + }) + + (define_insn "movsf_internal" +- [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,W,a,a,U") +- (match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,iF,T,U,r"))] ++ [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,a,W,a,a,U") ++ (match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,Y,iF,T,U,r"))] + "((register_operand (operands[0], SFmode) + || register_operand (operands[1], SFmode)) + && !(FP_REG_P (xt_true_regnum (operands[0])) +@@ -950,13 +952,14 @@ + mov\t%0, %1 + wfr\t%0, %1 + rfr\t%0, %1 ++ movi\t%0, %y1 + const16\t%0, %t1\;const16\t%0, %b1 + %v1l32r\t%0, %1 + %v1l32i\t%0, %1 + %v0s32i\t%1, %0" +- [(set_attr "type" "farith,fload,fstore,move,load,store,move,farith,farith,move,load,load,store") ++ [(set_attr "type" "farith,fload,fstore,move,load,store,move,farith,farith,move,move,load,load,store") + (set_attr "mode" "SF") +- (set_attr "length" "3,3,3,2,2,2,3,3,3,6,3,3,3")]) ++ (set_attr "length" "3,3,3,2,2,2,3,3,3,3,6,3,3,3")]) + + (define_insn "*lsiu" + [(set (match_operand:SF 0 "register_operand" "=f") +@@ -997,7 +1000,7 @@ + (match_operand:DF 1 "general_operand" ""))] + "" + { +- if (CONSTANT_P (operands[1]) && !TARGET_CONST16) ++ if (CONSTANT_P (operands[1]) && !TARGET_CONST16 && !TARGET_AUTO_LITPOOLS) + operands[1] = force_const_mem (DFmode, operands[1]); + + if (!register_operand (operands[0], DFmode) +@@ -1008,8 +1011,8 @@ + }) + + (define_insn_and_split "movdf_internal" +- [(set (match_operand:DF 0 "nonimmed_operand" "=a,W,a,a,U") +- (match_operand:DF 1 "move_operand" "r,iF,T,U,r"))] ++ [(set (match_operand:DF 0 "nonimmed_operand" "=a,a,W,a,a,U") ++ (match_operand:DF 1 "move_operand" "r,Y,iF,T,U,r"))] + "register_operand (operands[0], DFmode) + || register_operand (operands[1], DFmode)" + "#" +Index: b/gcc/config/xtensa/xtensa.opt +=================================================================== +--- a/gcc/config/xtensa/xtensa.opt ++++ b/gcc/config/xtensa/xtensa.opt +@@ -38,6 +38,10 @@ + Target + Intersperse literal pools with code in the text section + ++mauto-litpools ++Target Report Mask(AUTO_LITPOOLS) ++Relax literals in assembler and place them automatically in the text section ++ + mserialize-volatile + Target Report Mask(SERIALIZE_VOLATILE) + -mno-serialize-volatile Do not serialize volatile memory references with MEMW instructions diff --git a/buildroot/package/gcc/4.9.4/871-xtensa-reimplement-register-spilling.patch b/buildroot/package/gcc/4.9.4/871-xtensa-reimplement-register-spilling.patch new file mode 100644 index 0000000..abc7a08 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/871-xtensa-reimplement-register-spilling.patch @@ -0,0 +1,76 @@ +From 05154174b369505238b759cf80d595d8cfc8c731 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Mon, 10 Aug 2015 21:35:20 +0300 +Subject: [PATCH 1/3] xtensa: reimplement register spilling + +Spilling windowed registers in userspace is much easier, more portable, +less error-prone and equally effective as in kernel. Now that register +spilling syscall is considered obsolete in the xtensa linux kernel +replace it with CALL12 followed by series of ENTRY in libgcc. + +2015-08-18 Max Filippov +libgcc/ + * config/xtensa/lib2funcs.S (__xtensa_libgcc_window_spill): Use + CALL12 followed by series of ENTRY to spill windowed registers. + (__xtensa_nonlocal_goto): Call __xtensa_libgcc_window_spill + instead of making linux spill syscall. + +Signed-off-by: Max Filippov +--- +Backported from: r226962 + + libgcc/config/xtensa/lib2funcs.S | 30 +++++++++++++++++++++++------- + 1 file changed, 23 insertions(+), 7 deletions(-) + +diff --git a/libgcc/config/xtensa/lib2funcs.S b/libgcc/config/xtensa/lib2funcs.S +index 3ac8c1d..2e678af 100644 +--- a/libgcc/config/xtensa/lib2funcs.S ++++ b/libgcc/config/xtensa/lib2funcs.S +@@ -33,10 +33,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + .global __xtensa_libgcc_window_spill + .type __xtensa_libgcc_window_spill,@function + __xtensa_libgcc_window_spill: +- entry sp, 32 +- movi a2, 0 +- syscall ++ entry sp, 48 ++#if XCHAL_NUM_AREGS > 16 ++ call12 1f ++ retw ++ .align 4 ++1: ++ .rept (XCHAL_NUM_AREGS - 24) / 12 ++ _entry sp, 48 ++ mov a12, a0 ++ .endr ++ _entry sp, 16 ++#if XCHAL_NUM_AREGS % 12 == 0 ++ mov a4, a4 ++#elif XCHAL_NUM_AREGS % 12 == 4 ++ mov a8, a8 ++#elif XCHAL_NUM_AREGS % 12 == 8 ++ mov a12, a12 ++#endif ++ retw ++#else ++ mov a8, a8 + retw ++#endif + .size __xtensa_libgcc_window_spill, .-__xtensa_libgcc_window_spill + + +@@ -58,10 +77,7 @@ __xtensa_nonlocal_goto: + entry sp, 32 + + /* Flush registers. */ +- mov a5, a2 +- movi a2, 0 +- syscall +- mov a2, a5 ++ call8 __xtensa_libgcc_window_spill + + /* Because the save area for a0-a3 is stored one frame below + the one identified by a2, the only way to restore those +-- +1.8.1.4 + diff --git a/buildroot/package/gcc/4.9.4/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch b/buildroot/package/gcc/4.9.4/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch new file mode 100644 index 0000000..f23a5c0 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch @@ -0,0 +1,33 @@ +From f66206679a0ad604f13673559f230160cd3d1189 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Fri, 14 Aug 2015 02:45:02 +0300 +Subject: [PATCH 2/3] xtensa: use unwind-dw2-fde-dip instead of unwind-dw2-fde + +This allows having exception cleanup code in binaries that don't +register their unwind tables. + +2015-08-18 Max Filippov +libgcc/ + * config/xtensa/t-xtensa (LIB2ADDEH): Replace unwind-dw2-fde + with unwind-dw2-fde-dip. + +Signed-off-by: Max Filippov +--- +Backported from: r226963 + + libgcc/config/xtensa/t-xtensa | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libgcc/config/xtensa/t-xtensa b/libgcc/config/xtensa/t-xtensa +index 27399e6..66d0eb3 100644 +--- a/libgcc/config/xtensa/t-xtensa ++++ b/libgcc/config/xtensa/t-xtensa +@@ -13,4 +13,4 @@ LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 _udivsi3 _umodsi3 \ + LIB2ADD = $(srcdir)/config/xtensa/lib2funcs.S + + LIB2ADDEH = $(srcdir)/config/xtensa/unwind-dw2-xtensa.c \ +- $(srcdir)/unwind-dw2-fde.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c ++ $(srcdir)/unwind-dw2-fde-dip.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c +-- +1.8.1.4 + diff --git a/buildroot/package/gcc/4.9.4/873-xtensa-fix-_Unwind_GetCFA.patch b/buildroot/package/gcc/4.9.4/873-xtensa-fix-_Unwind_GetCFA.patch new file mode 100644 index 0000000..dc40513 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/873-xtensa-fix-_Unwind_GetCFA.patch @@ -0,0 +1,40 @@ +From 15c7c4d39b317f0d902ef28fd43eca5c3369f891 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Sat, 15 Aug 2015 05:12:11 +0300 +Subject: [PATCH 3/3] xtensa: fix _Unwind_GetCFA + +Returning context->cfa in _Unwind_GetCFA makes CFA point one stack frame +higher than what was actually used by code at context->ra. This results +in invalid CFA value in signal frames and premature unwinding completion +in forced unwinding used by uClibc NPTL thread cancellation. +Returning context->sp from _Unwind_GetCFA makes all CFA values valid and +matching code that used them. + +2015-08-18 Max Filippov +libgcc/ + * config/xtensa/unwind-dw2-xtensa.c (_Unwind_GetCFA): Return + context->sp instead of context->cfa. + +Signed-off-by: Max Filippov +--- +Backported from: r226964 + + libgcc/config/xtensa/unwind-dw2-xtensa.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libgcc/config/xtensa/unwind-dw2-xtensa.c b/libgcc/config/xtensa/unwind-dw2-xtensa.c +index 35f7797..ef6b900 100644 +--- a/libgcc/config/xtensa/unwind-dw2-xtensa.c ++++ b/libgcc/config/xtensa/unwind-dw2-xtensa.c +@@ -130,7 +130,7 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index) + _Unwind_Word + _Unwind_GetCFA (struct _Unwind_Context *context) + { +- return (_Unwind_Ptr) context->cfa; ++ return (_Unwind_Ptr) context->sp; + } + + /* Overwrite the saved value for register INDEX in CONTEXT with VAL. */ +-- +1.8.1.4 + diff --git a/buildroot/package/gcc/4.9.4/874-xtensa-add-uclinux-support.patch b/buildroot/package/gcc/4.9.4/874-xtensa-add-uclinux-support.patch new file mode 100644 index 0000000..881aec0 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/874-xtensa-add-uclinux-support.patch @@ -0,0 +1,169 @@ +From 70c2cb98fb129b4766b5da0f945dc41fd568c77a Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Sat, 22 Aug 2015 08:44:26 +0300 +Subject: [PATCH] xtensa: add uclinux support + +2015-10-03 Max Filippov +gcc/ + * config.gcc (xtensa*-*-uclinux*): New configuration. + * config/xtensa/uclinux.h: New file. + * config/xtensa/uclinux.opt: New file. + +libgcc/ + * config.host (xtensa*-*-uclinux*): New configuration. + +Signed-off-by: Max Filippov +--- +Backported from: r228450 + + gcc/config.gcc | 5 ++++ + gcc/config/xtensa/uclinux.h | 69 +++++++++++++++++++++++++++++++++++++++++++ + gcc/config/xtensa/uclinux.opt | 32 ++++++++++++++++++++ + libgcc/config.host | 5 ++++ + 4 files changed, 111 insertions(+) + create mode 100644 gcc/config/xtensa/uclinux.h + create mode 100644 gcc/config/xtensa/uclinux.opt + +Index: b/gcc/config.gcc +=================================================================== +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -2871,6 +2871,11 @@ + tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h" + tmake_file="${tmake_file} xtensa/t-xtensa" + ;; ++xtensa*-*-uclinux*) ++ tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h" ++ tmake_file="${tmake_file} xtensa/t-xtensa" ++ extra_options="${extra_options} xtensa/uclinux.opt" ++ ;; + am33_2.0-*-linux*) + tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h" + gas=yes gnu_ld=yes +Index: b/gcc/config/xtensa/uclinux.h +=================================================================== +--- /dev/null ++++ b/gcc/config/xtensa/uclinux.h +@@ -0,0 +1,69 @@ ++/* Xtensa uClinux configuration. ++ Derived from the configuration for GCC for Intel i386 running Linux. ++ Copyright (C) 2001-2015 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC 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 3, or (at your option) any later ++version. ++ ++GCC 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 GCC; see the file COPYING3. If not see ++. */ ++ ++#undef TARGET_OS_CPP_BUILTINS ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ GNU_USER_TARGET_OS_CPP_BUILTINS (); \ ++ builtin_define ("__uClinux__"); \ ++ } \ ++ while (0) ++ ++#undef SUBTARGET_CPP_SPEC ++#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" ++ ++#undef SIZE_TYPE ++#define SIZE_TYPE "unsigned int" ++ ++#undef PTRDIFF_TYPE ++#define PTRDIFF_TYPE "int" ++ ++#undef WCHAR_TYPE ++#define WCHAR_TYPE "long int" ++ ++#undef WCHAR_TYPE_SIZE ++#define WCHAR_TYPE_SIZE 32 ++ ++#undef ASM_SPEC ++#define ASM_SPEC \ ++ "%{mtext-section-literals:--text-section-literals} \ ++ %{mno-text-section-literals:--no-text-section-literals} \ ++ %{mtarget-align:--target-align} \ ++ %{mno-target-align:--no-target-align} \ ++ %{mlongcalls:--longcalls} \ ++ %{mno-longcalls:--no-longcalls} \ ++ %{mauto-litpools:--auto-litpools} \ ++ %{mno-auto-litpools:--no-auto-litpools}" ++ ++#undef LINK_SPEC ++#define LINK_SPEC "%{!no-elf2flt:%{!elf2flt*:-elf2flt}}" ++ ++#undef LOCAL_LABEL_PREFIX ++#define LOCAL_LABEL_PREFIX "." ++ ++/* Always enable "-fpic" for Xtensa Linux. */ ++#define XTENSA_ALWAYS_PIC 1 ++ ++#undef TARGET_LIBC_HAS_FUNCTION ++#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function ++ ++#undef DBX_REGISTER_NUMBER ++ +Index: b/gcc/config/xtensa/uclinux.opt +=================================================================== +--- /dev/null ++++ b/gcc/config/xtensa/uclinux.opt +@@ -0,0 +1,32 @@ ++; Xtensa uClinux options. ++ ++; Copyright (C) 2015 Free Software Foundation, Inc. ++; ++; This file is part of GCC. ++; ++; GCC 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 3, or (at your option) any later ++; version. ++; ++; GCC 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 GCC; see the file COPYING3. If not see ++; . ++ ++; See the GCC internals manual (options.texi) for a description of ++; this file's format. ++ ++; Please try to keep this file in ASCII collating order. ++ ++elf2flt ++Driver ++ ++elf2flt= ++Driver JoinedOrMissing ++ ++; This comment is to ensure we retain the blank line above. +Index: b/libgcc/config.host +=================================================================== +--- a/libgcc/config.host ++++ b/libgcc/config.host +@@ -1213,6 +1213,11 @@ + tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc" + md_unwind_header=xtensa/linux-unwind.h + ;; ++xtensa*-*-uclinux*) ++ tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc" ++ md_unwind_header=xtensa/linux-unwind.h ++ extra_parts="$extra_parts crtbeginS.o crtbeginT.o crtendS.o" ++ ;; + am33_2.0-*-linux*) + # Don't need crtbeginT.o from *-*-linux* default. + extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" diff --git a/buildroot/package/gcc/4.9.4/875-xtensa-fix-PR-target-82181.patch b/buildroot/package/gcc/4.9.4/875-xtensa-fix-PR-target-82181.patch new file mode 100644 index 0000000..266e659 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/875-xtensa-fix-PR-target-82181.patch @@ -0,0 +1,31 @@ +From 8dd3af97bb6ccb3dfd6cbe20c5a28ce80fcd0de7 Mon Sep 17 00:00:00 2001 +From: jcmvbkbc +Date: Mon, 11 Sep 2017 21:53:38 +0000 +Subject: [PATCH] xtensa: fix PR target/82181 + +2017-09-11 Max Filippov +gcc/ + Backport from mainline + * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both + words of DImode object are reachable by xtensa_uimm8x4 access. + +Signed-off-by: Max Filippov +--- + gcc/config/xtensa/xtensa.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c +index 3c0096113775..3eb4db85b971 100644 +--- a/gcc/config/xtensa/xtensa.c ++++ b/gcc/config/xtensa/xtensa.c +@@ -612,6 +612,7 @@ xtensa_mem_offset (unsigned v, enum machine_mode mode) + case HImode: + return xtensa_uimm8x2 (v); + ++ case DImode: + case DFmode: + return (xtensa_uimm8x4 (v) && xtensa_uimm8x4 (v + 4)); + +-- +2.1.4 + diff --git a/buildroot/package/gcc/4.9.4/880-nios2_legitimize_address.patch b/buildroot/package/gcc/4.9.4/880-nios2_legitimize_address.patch new file mode 100644 index 0000000..4623f29 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/880-nios2_legitimize_address.patch @@ -0,0 +1,49 @@ +From b0ea54f3f995754881e0ea6651133aa7b58eeaa2 Mon Sep 17 00:00:00 2001 +From: cltang +Date: Tue, 22 Sep 2015 12:23:20 +0000 +Subject: [PATCH] nios2_legitimize_address 2015-09-22 Chung-Lin Tang + + + Backport from mainline + 2015-09-22 Chung-Lin Tang + + * config/nios2/nios2.c (nios2_legitimize_address): When handling + 'reg + reloc' cases, allow first operand to be non-REG, and use + force_reg() to enforce address pattern. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@228013 138bc75d-0d04-0410-961f-82ee72b054a4 + +Fixes: +http://autobuild.buildroot.net/results/901/90186d1fe134b804c0101554296b1235dc0ccbb0 + +[backported to 4.9.3] +Signed-off-by: Romain Naour +--- + gcc/config/nios2/nios2.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gcc/config/nios2/nios2.c b/gcc/config/nios2/nios2.c +index 047b615..41dd6f9 100644 +--- a/gcc/config/nios2/nios2.c ++++ b/gcc/config/nios2/nios2.c +@@ -1786,15 +1786,15 @@ nios2_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, + + Which will be output as '%tls_le(var+48)(r23)' in assembly. */ + if (GET_CODE (x) == PLUS +- && GET_CODE (XEXP (x, 0)) == REG + && GET_CODE (XEXP (x, 1)) == CONST) + { +- rtx unspec, offset, reg = XEXP (x, 0); ++ rtx unspec, offset; + split_const (XEXP (x, 1), &unspec, &offset); + if (GET_CODE (unspec) == UNSPEC + && !nios2_large_offset_p (XINT (unspec, 1)) + && offset != const0_rtx) + { ++ rtx reg = force_reg (Pmode, XEXP (x, 0)); + unspec = copy_rtx (unspec); + XVECEXP (unspec, 0, 0) + = plus_constant (Pmode, XVECEXP (unspec, 0, 0), INTVAL (offset)); +-- +2.5.0 + diff --git a/buildroot/package/gcc/4.9.4/890-fix-m68k-compile.patch b/buildroot/package/gcc/4.9.4/890-fix-m68k-compile.patch new file mode 100644 index 0000000..140977b --- /dev/null +++ b/buildroot/package/gcc/4.9.4/890-fix-m68k-compile.patch @@ -0,0 +1,15 @@ +remove unused header, which breaks the toolchain building + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-4.9.3.orig/libgcc/config/m68k/linux-atomic.c gcc-4.9.3/libgcc/config/m68k/linux-atomic.c +--- gcc-4.9.3.orig/libgcc/config/m68k/linux-atomic.c 2014-01-02 23:25:22.000000000 +0100 ++++ gcc-4.9.3/libgcc/config/m68k/linux-atomic.c 2016-03-18 22:24:40.000000000 +0100 +@@ -33,7 +33,6 @@ + using the kernel helper defined below. There is no support for + 64-bit operations yet. */ + +-#include + #include + + #ifndef __NR_atomic_cmpxchg_32 diff --git a/buildroot/package/gcc/4.9.4/891-fix-m68k-uclinux.patch b/buildroot/package/gcc/4.9.4/891-fix-m68k-uclinux.patch new file mode 100644 index 0000000..4347642 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/891-fix-m68k-uclinux.patch @@ -0,0 +1,18 @@ +avoids internal compiler error while compiling linux-atomic.c +See here: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53833 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-4.9.3.orig/libgcc/config.host gcc-4.9.3/libgcc/config.host +--- gcc-4.9.3.orig/libgcc/config.host 2014-03-27 16:40:31.000000000 +0100 ++++ gcc-4.9.3/libgcc/config.host 2016-04-05 16:20:53.422809885 +0200 +@@ -750,7 +750,7 @@ + m68k*-*-openbsd*) + ;; + m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc +- tmake_file="$tmake_file m68k/t-floatlib m68k/t-linux" ++ tmake_file="$tmake_file m68k/t-floatlib" + md_unwind_header=m68k/linux-unwind.h + ;; + m68k-*-linux*) # Motorola m68k's running GNU/Linux diff --git a/buildroot/package/gcc/4.9.4/900-musl-support.patch b/buildroot/package/gcc/4.9.4/900-musl-support.patch new file mode 100644 index 0000000..a862d01 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/900-musl-support.patch @@ -0,0 +1,640 @@ +Add musl support to gcc + +This patch comes from the musl-cross project at +https://bitbucket.org/GregorR/musl-cross/src. Compared to the upstream version: + + * the config.sub modifications have been removed, because Buildroot + already overwrites all config.sub with a more recent config.sub + that has musl support. + + * change to ensure that a dummy dynamic linker path + MUSL_DYNAMIC_LINKER is defined for all architectures, + otherwise building gcc for architectures not supported by musl was + causing build failure. Bug reported upstream at + https://bitbucket.org/GregorR/musl-gcc-patches/issue/4/musl-gcc-patches-break-the-build-on. + + * change the USE_PT_GNU_EH_FRAME logic to keep the existing gcc logic + and only add the musl one as an addition, not as a replacement. Not + doing this breaks C++ exception handling with glibc, because + USE_PT_GNU_EH_FRAME doesn't get defined due to the configure script + not testing dl_iterate_phdr() on any system except Solaris. + +[Gustavo: remove upstream applied gcc/config/sh/sh.c chunk for 4.9.1] +Signed-off-by: Thomas Petazzoni +--- + +Index: b/fixincludes/mkfixinc.sh +=================================================================== +--- a/fixincludes/mkfixinc.sh ++++ b/fixincludes/mkfixinc.sh +@@ -19,7 +19,8 @@ + powerpc-*-eabi* | \ + powerpc-*-rtems* | \ + powerpcle-*-eabisim* | \ +- powerpcle-*-eabi* ) ++ powerpcle-*-eabi* | \ ++ *-musl* ) + # IF there is no include fixing, + # THEN create a no-op fixer and exit + (echo "#! /bin/sh" ; echo "exit 0" ) > ${target} +Index: b/gcc/config.gcc +=================================================================== +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -594,7 +594,7 @@ + esac + + # Common C libraries. +-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3" ++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" + + # 32-bit x86 processors supported by --with-arch=. Each processor + # MUST be separated by exactly one space. +@@ -719,6 +719,9 @@ + *-*-*uclibc*) + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" + ;; ++ *-*-*musl*) ++ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL" ++ ;; + *) + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" + ;; +@@ -2338,6 +2341,10 @@ + powerpc*-*-linux*paired*) + tm_file="${tm_file} rs6000/750cl.h" ;; + esac ++ case ${target} in ++ *-linux*-musl*) ++ enable_secureplt=yes ;; ++ esac + if test x${enable_secureplt} = xyes; then + tm_file="rs6000/secureplt.h ${tm_file}" + fi +Index: b/gcc/config/aarch64/aarch64-linux.h +=================================================================== +--- a/gcc/config/aarch64/aarch64-linux.h ++++ b/gcc/config/aarch64/aarch64-linux.h +@@ -22,6 +22,8 @@ + #define GCC_AARCH64_LINUX_H + + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1" ++#undef MUSL_DYNAMIC_LINKER ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1" + + #define CPP_SPEC "%{pthread:-D_REENTRANT}" + +Index: b/gcc/config/arm/linux-eabi.h +=================================================================== +--- a/gcc/config/arm/linux-eabi.h ++++ b/gcc/config/arm/linux-eabi.h +@@ -77,6 +77,23 @@ + %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \ + %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}" + ++/* For ARM musl currently supports four dynamic linkers: ++ - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI ++ - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI ++ - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB ++ - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB ++ musl does not support the legacy OABI mode. ++ All the dynamic linkers live in /lib. ++ We default to soft-float, EL. */ ++#undef MUSL_DYNAMIC_LINKER ++#if TARGET_BIG_ENDIAN_DEFAULT ++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}" ++#else ++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}" ++#endif ++#define MUSL_DYNAMIC_LINKER \ ++ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1" ++ + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ + #undef LINK_SPEC +Index: b/gcc/config/i386/linux.h +=================================================================== +--- a/gcc/config/i386/linux.h ++++ b/gcc/config/i386/linux.h +@@ -21,3 +21,5 @@ + + #define GNU_USER_LINK_EMULATION "elf_i386" + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" ++#undef MUSL_DYNAMIC_LINKER ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1" +Index: b/gcc/config/i386/linux64.h +=================================================================== +--- a/gcc/config/i386/linux64.h ++++ b/gcc/config/i386/linux64.h +@@ -30,3 +30,10 @@ + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" + #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2" ++ ++#undef MUSL_DYNAMIC_LINKER32 ++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1" ++#undef MUSL_DYNAMIC_LINKER64 ++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1" ++#undef MUSL_DYNAMIC_LINKERX32 ++#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1" +Index: b/gcc/config/linux.h +=================================================================== +--- a/gcc/config/linux.h ++++ b/gcc/config/linux.h +@@ -32,10 +32,12 @@ + #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) + #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) + #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC) ++#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL) + #else + #define OPTION_GLIBC (linux_libc == LIBC_GLIBC) + #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC) + #define OPTION_BIONIC (linux_libc == LIBC_BIONIC) ++#define OPTION_MUSL (linux_libc == LIBC_MUSL) + #endif + + #define GNU_USER_TARGET_OS_CPP_BUILTINS() \ +@@ -53,18 +55,21 @@ + uClibc or Bionic is the default C library and whether + -muclibc or -mglibc or -mbionic has been passed to change the default. */ + +-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \ +- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}" ++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \ ++ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}" + + #if DEFAULT_LIBC == LIBC_GLIBC +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \ +- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B) ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \ ++ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M) + #elif DEFAULT_LIBC == LIBC_UCLIBC +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \ +- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B) ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \ ++ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M) + #elif DEFAULT_LIBC == LIBC_BIONIC +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \ +- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U) ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \ ++ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M) ++#elif DEFAULT_LIBC == LIBC_MUSL ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \ ++ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B) + #else + #error "Unsupported DEFAULT_LIBC" + #endif /* DEFAULT_LIBC */ +@@ -82,23 +87,103 @@ + #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64" + #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32" + ++/* Musl dynamic linker paths must be defined on a per-architecture ++ basis, for each architecture supported by Musl. However, in order ++ to let other architectures continue to build with other C ++ libraries, we provide a dummy definition of the following defines. */ ++#define MUSL_DYNAMIC_LINKER "invalid" ++#define MUSL_DYNAMIC_LINKER32 "invalid" ++#define MUSL_DYNAMIC_LINKER64 "invalid" ++#define MUSL_DYNAMIC_LINKERX32 "invalid" ++ + #define GNU_USER_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \ +- BIONIC_DYNAMIC_LINKER) ++ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER) + #define GNU_USER_DYNAMIC_LINKER32 \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \ +- BIONIC_DYNAMIC_LINKER32) ++ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32) + #define GNU_USER_DYNAMIC_LINKER64 \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \ +- BIONIC_DYNAMIC_LINKER64) ++ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64) + #define GNU_USER_DYNAMIC_LINKERX32 \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \ +- BIONIC_DYNAMIC_LINKERX32) ++ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKER32) + + /* Whether we have Bionic libc runtime */ + #undef TARGET_HAS_BIONIC + #define TARGET_HAS_BIONIC (OPTION_BIONIC) + ++/* musl avoids problematic includes by rearranging the include directories. ++ * Unfortunately, this is mostly duplicated from cppdefault.c */ ++#if DEFAULT_LIBC == LIBC_MUSL ++#define INCLUDE_DEFAULTS_MUSL_GPP \ ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \ ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \ ++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \ ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \ ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \ ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, ++ ++#ifdef LOCAL_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_LOCAL \ ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \ ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, ++#else ++#define INCLUDE_DEFAULTS_MUSL_LOCAL ++#endif ++ ++#ifdef PREFIX_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_PREFIX \ ++ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_PREFIX ++#endif ++ ++#ifdef CROSS_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_CROSS \ ++ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_CROSS ++#endif ++ ++#ifdef TOOL_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_TOOL \ ++ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_TOOL ++#endif ++ ++#ifdef NATIVE_SYSTEM_HEADER_DIR ++#define INCLUDE_DEFAULTS_MUSL_NATIVE \ ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 }, ++#else ++#define INCLUDE_DEFAULTS_MUSL_NATIVE ++#endif ++ ++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT) ++# undef INCLUDE_DEFAULTS_MUSL_LOCAL ++# define INCLUDE_DEFAULTS_MUSL_LOCAL ++# undef INCLUDE_DEFAULTS_MUSL_NATIVE ++# define INCLUDE_DEFAULTS_MUSL_NATIVE ++#else ++# undef INCLUDE_DEFAULTS_MUSL_CROSS ++# define INCLUDE_DEFAULTS_MUSL_CROSS ++#endif ++ ++#undef INCLUDE_DEFAULTS ++#define INCLUDE_DEFAULTS \ ++ { \ ++ INCLUDE_DEFAULTS_MUSL_GPP \ ++ INCLUDE_DEFAULTS_MUSL_PREFIX \ ++ INCLUDE_DEFAULTS_MUSL_CROSS \ ++ INCLUDE_DEFAULTS_MUSL_TOOL \ ++ INCLUDE_DEFAULTS_MUSL_NATIVE \ ++ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ ++ { 0, 0, 0, 0, 0, 0 } \ ++ } ++#endif ++ + #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */ + /* This is a *uclinux* target. We don't define below macros to normal linux + versions, because doing so would require *uclinux* targets to include +Index: b/gcc/config/linux.opt +=================================================================== +--- a/gcc/config/linux.opt ++++ b/gcc/config/linux.opt +@@ -30,3 +30,7 @@ + muclibc + Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic) + Use uClibc C library ++ ++mmusl ++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc) ++Use musl C library +Index: b/gcc/config/microblaze/linux.h +=================================================================== +--- a/gcc/config/microblaze/linux.h ++++ b/gcc/config/microblaze/linux.h +@@ -28,7 +28,23 @@ + #undef TLS_NEEDS_GOT + #define TLS_NEEDS_GOT 1 + +-#define DYNAMIC_LINKER "/lib/ld.so.1" ++#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */ ++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}" ++#else ++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}" ++#endif ++ ++#undef MUSL_DYNAMIC_LINKER ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1" ++#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" ++ ++#if DEFAULT_LIBC == LIBC_MUSL ++#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER ++#else ++#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER ++#endif ++ ++ + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ + { "dynamic_linker", DYNAMIC_LINKER } +Index: b/gcc/config/rs6000/linux64.h +=================================================================== +--- a/gcc/config/rs6000/linux64.h ++++ b/gcc/config/rs6000/linux64.h +@@ -371,17 +371,23 @@ + #endif + #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0" + #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0" ++#undef MUSL_DYNAMIC_LINKER32 ++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1" ++#undef MUSL_DYNAMIC_LINKER64 ++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1" + #if DEFAULT_LIBC == LIBC_UCLIBC +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}" + #elif DEFAULT_LIBC == LIBC_GLIBC +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}" ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}" ++#elif DEFAULT_LIBC == LIBC_MUSL ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}" + #else + #error "Unsupported DEFAULT_LIBC" + #endif + #define GNU_USER_DYNAMIC_LINKER32 \ +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32) ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32) + #define GNU_USER_DYNAMIC_LINKER64 \ +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64) ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64) + + #undef DEFAULT_ASM_ENDIAN + #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN) +Index: b/gcc/config/rs6000/secureplt.h +=================================================================== +--- a/gcc/config/rs6000/secureplt.h ++++ b/gcc/config/rs6000/secureplt.h +@@ -18,3 +18,4 @@ + . */ + + #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt" ++#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt" +Index: b/gcc/config/rs6000/sysv4.h +=================================================================== +--- a/gcc/config/rs6000/sysv4.h ++++ b/gcc/config/rs6000/sysv4.h +@@ -537,6 +537,9 @@ + #ifndef CC1_SECURE_PLT_DEFAULT_SPEC + #define CC1_SECURE_PLT_DEFAULT_SPEC "" + #endif ++#ifndef LINK_SECURE_PLT_DEFAULT_SPEC ++#define LINK_SECURE_PLT_DEFAULT_SPEC "" ++#endif + + /* Pass -G xxx to the compiler. */ + #define CC1_SPEC "%{G*} %(cc1_cpu)" \ +@@ -585,7 +588,8 @@ + + /* Override the default target of the linker. */ + #define LINK_TARGET_SPEC \ +- ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") ++ ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \ ++ "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}" + + /* Any specific OS flags. */ + #define LINK_OS_SPEC "\ +@@ -763,15 +767,18 @@ + + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" + #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1" + #if DEFAULT_LIBC == LIBC_UCLIBC +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}" ++#elif DEFAULT_LIBC == LIBC_MUSL ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}" + #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}" ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}" + #else + #error "Unsupported DEFAULT_LIBC" + #endif + #define GNU_USER_DYNAMIC_LINKER \ +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER) + + #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ +@@ -894,6 +901,7 @@ + { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ + { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ + { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \ ++ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \ + { "cpp_os_ads", CPP_OS_ADS_SPEC }, \ + { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ + { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ +Index: b/gcc/config/sh/linux.h +=================================================================== +--- a/gcc/config/sh/linux.h ++++ b/gcc/config/sh/linux.h +@@ -43,7 +43,15 @@ + + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack + ++#if TARGET_BIG_ENDIAN_DEFAULT /* BE */ ++#define MUSL_DYNAMIC_LINKER_E "eb" ++#else ++#define MUSL_DYNAMIC_LINKER_E ++#endif ++ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" ++#undef MUSL_DYNAMIC_LINKER ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E ".so.1" + + #undef SUBTARGET_LINK_EMUL_SUFFIX + #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" +Index: b/gcc/configure +=================================================================== +--- a/gcc/configure ++++ b/gcc/configure +@@ -27601,6 +27601,9 @@ + gcc_cv_target_dl_iterate_phdr=no + fi + ;; ++ *-linux-musl*) ++ gcc_cv_target_dl_iterate_phdr=yes ++ ;; + esac + + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then +Index: b/gcc/configure.ac +=================================================================== +--- a/gcc/configure.ac ++++ b/gcc/configure.ac +@@ -5173,6 +5173,9 @@ + gcc_cv_target_dl_iterate_phdr=no + fi + ;; ++ *-linux-musl*) ++ gcc_cv_target_dl_iterate_phdr=yes ++ ;; + esac + GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR]) + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then +Index: b/gcc/ginclude/stddef.h +=================================================================== +--- a/gcc/ginclude/stddef.h ++++ b/gcc/ginclude/stddef.h +@@ -181,6 +181,7 @@ + #ifndef _GCC_SIZE_T + #ifndef _SIZET_ + #ifndef __size_t ++#ifndef __DEFINED_size_t /* musl */ + #define __size_t__ /* BeOS */ + #define __SIZE_T__ /* Cray Unicos/Mk */ + #define _SIZE_T +@@ -197,6 +198,7 @@ + #define ___int_size_t_h + #define _GCC_SIZE_T + #define _SIZET_ ++#define __DEFINED_size_t /* musl */ + #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \ + || defined(__FreeBSD_kernel__) + /* __size_t is a typedef on FreeBSD 5, must not trash it. */ +@@ -214,6 +216,7 @@ + typedef long ssize_t; + #endif /* __BEOS__ */ + #endif /* !(defined (__GNUG__) && defined (size_t)) */ ++#endif /* __DEFINED_size_t */ + #endif /* __size_t */ + #endif /* _SIZET_ */ + #endif /* _GCC_SIZE_T */ +Index: b/libgcc/unwind-dw2-fde-dip.c +=================================================================== +--- a/libgcc/unwind-dw2-fde-dip.c ++++ b/libgcc/unwind-dw2-fde-dip.c +@@ -73,6 +73,13 @@ + && defined(TARGET_DL_ITERATE_PHDR) \ + && defined(__sun__) && defined(__svr4__) + # define USE_PT_GNU_EH_FRAME ++ #endif ++ ++/* For musl libc, TARGET_DL_ITERATE_PHDR gets defined by the configure ++ script. */ ++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ ++ && defined(TARGET_DL_ITERATE_PHDR) ++# define USE_PT_GNU_EH_FRAME + #endif + + #if defined(USE_PT_GNU_EH_FRAME) +Index: b/libgomp/config/posix/time.c +=================================================================== +--- a/libgomp/config/posix/time.c ++++ b/libgomp/config/posix/time.c +@@ -28,6 +28,8 @@ + The following implementation uses the most simple POSIX routines. + If present, POSIX 4 clocks should be used instead. */ + ++#define _POSIX_C_SOURCE 199309L /* for clocks */ ++ + #include "libgomp.h" + #include + #if TIME_WITH_SYS_TIME +Index: b/libitm/config/arm/hwcap.cc +=================================================================== +--- a/libitm/config/arm/hwcap.cc ++++ b/libitm/config/arm/hwcap.cc +@@ -40,7 +40,11 @@ + + #ifdef __linux__ + #include ++#ifdef __GLIBC__ + #include ++#else ++#include ++#endif + #include + + static void __attribute__((constructor)) +Index: b/libitm/config/linux/x86/tls.h +=================================================================== +--- a/libitm/config/linux/x86/tls.h ++++ b/libitm/config/linux/x86/tls.h +@@ -25,16 +25,19 @@ + #ifndef LIBITM_X86_TLS_H + #define LIBITM_X86_TLS_H 1 + +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) ++#if defined(__GLIBC_PREREQ) ++#if __GLIBC_PREREQ(2, 10) + /* Use slots in the TCB head rather than __thread lookups. + GLIBC has reserved words 10 through 13 for TM. */ + #define HAVE_ARCH_GTM_THREAD 1 + #define HAVE_ARCH_GTM_THREAD_DISP 1 + #endif ++#endif + + #include "config/generic/tls.h" + +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) ++#if defined(__GLIBC_PREREQ) ++#if __GLIBC_PREREQ(2, 10) + namespace GTM HIDDEN { + + #ifdef __x86_64__ +@@ -101,5 +104,6 @@ + + } // namespace GTM + #endif /* >= GLIBC 2.10 */ ++#endif + + #endif // LIBITM_X86_TLS_H +Index: b/libstdc++-v3/configure.host +=================================================================== +--- a/libstdc++-v3/configure.host ++++ b/libstdc++-v3/configure.host +@@ -266,6 +266,13 @@ + os_include_dir="os/bsd/freebsd" + ;; + gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) ++ # check for musl by target ++ case "${host_os}" in ++ *-musl*) ++ os_include_dir="os/generic" ++ ;; ++ *) ++ + if [ "$uclibc" = "yes" ]; then + os_include_dir="os/uclibc" + elif [ "$bionic" = "yes" ]; then +@@ -274,6 +281,9 @@ + os_include_dir="os/gnu-linux" + fi + ;; ++ ++ esac ++ ;; + hpux*) + os_include_dir="os/hpux" + ;; +Index: b/gcc/config/mips/linux64.h +=================================================================== +--- a/gcc/config/mips/linux64.h ++++ b/gcc/config/mips/linux64.h +@@ -41,4 +41,4 @@ + #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32" + #define GNU_USER_DYNAMIC_LINKERN32 \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \ +- BIONIC_DYNAMIC_LINKERN32) ++ BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKER) +Index: b/gcc/config/mips/linux.h +=================================================================== +--- a/gcc/config/mips/linux.h ++++ b/gcc/config/mips/linux.h +@@ -23,3 +23,11 @@ + #undef UCLIBC_DYNAMIC_LINKER + #define UCLIBC_DYNAMIC_LINKER \ + "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}" ++ ++#if TARGET_ENDIAN_DEFAULT == 0 /* LE */ ++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}" ++#else ++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}" ++#endif ++#undef MUSL_DYNAMIC_LINKER ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-sf}.so.1" diff --git a/buildroot/package/gcc/4.9.4/901-microblaze-uclibc.patch b/buildroot/package/gcc/4.9.4/901-microblaze-uclibc.patch new file mode 100644 index 0000000..82c44e1 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/901-microblaze-uclibc.patch @@ -0,0 +1,21 @@ +Add dynamic linker support for uClibc + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-4.9.3.orig/gcc/config/microblaze/linux.h gcc-4.9.3/gcc/config/microblaze/linux.h +--- gcc-4.9.3.orig/gcc/config/microblaze/linux.h 2016-06-04 21:21:09.430646655 +0200 ++++ gcc-4.9.3/gcc/config/microblaze/linux.h 2016-06-04 21:21:44.596003509 +0200 +@@ -36,10 +36,13 @@ + + #undef MUSL_DYNAMIC_LINKER + #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1" ++#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" + + #if DEFAULT_LIBC == LIBC_MUSL + #define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER ++#elif DEFAULT_LIBC == LIBC_UCLIBC ++#define DYNAMIC_LINKER UCLIBC_DYNAMIC_LINKER + #else + #define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER + #endif diff --git a/buildroot/package/gcc/4.9.4/930-libgcc-disable-split-stack-nothreads.patch b/buildroot/package/gcc/4.9.4/930-libgcc-disable-split-stack-nothreads.patch new file mode 100644 index 0000000..670cf8d --- /dev/null +++ b/buildroot/package/gcc/4.9.4/930-libgcc-disable-split-stack-nothreads.patch @@ -0,0 +1,14 @@ +disable split-stack for non-thread builds + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-4.9.3.orig/libgcc/config/t-stack gcc-4.9.3/libgcc/config/t-stack +--- gcc-4.9.3.orig/libgcc/config/t-stack 2010-10-01 21:31:49.000000000 +0200 ++++ gcc-4.9.3/libgcc/config/t-stack 2016-03-07 01:34:32.000000000 +0100 +@@ -1,4 +1,6 @@ + # Makefile fragment to provide generic support for -fsplit-stack. + # This should be used in config.host for any host which supports + # -fsplit-stack. ++ifeq ($(enable_threads),yes) + LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c ++endif diff --git a/buildroot/package/gcc/4.9.4/940-uclinux-enable-threads.patch b/buildroot/package/gcc/4.9.4/940-uclinux-enable-threads.patch new file mode 100644 index 0000000..5108147 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/940-uclinux-enable-threads.patch @@ -0,0 +1,20 @@ +Enable POSIX threads for uClinux targets +Reported upstream: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71721 + +Signed-off-by: Waldemar Brodkorb + +Index: b/gcc/config.gcc +=================================================================== +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -810,6 +810,9 @@ + *-*-uclinux*) + extra_options="$extra_options gnu-user.opt" + use_gcc_stdint=wrap ++ case ${enable_threads} in ++ "" | yes | posix) thread_file='posix' ;; ++ esac + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC" + ;; + *-*-rdos*) diff --git a/buildroot/package/gcc/4.9.4/942-asan-fix-missing-include-signal-h.patch b/buildroot/package/gcc/4.9.4/942-asan-fix-missing-include-signal-h.patch new file mode 100644 index 0000000..5f00c04 --- /dev/null +++ b/buildroot/package/gcc/4.9.4/942-asan-fix-missing-include-signal-h.patch @@ -0,0 +1,36 @@ +From 205aa8e97bab553e5e6fe45896325e97962de704 Mon Sep 17 00:00:00 2001 +From: Rolf Eike Beer +Date: Wed, 8 Feb 2017 11:42:52 +0100 +Subject: [PATCH] asan: fix missing include of signal.h + +This breaks when building gcc 4.9.4 / 5.4.0 with +target_platform=powerpc-unknown-linux-gnu with glibc 2.25: + +../../../../gcc-host/libsanitizer/asan/asan_linux.cc: In function 'bool __asan::AsanInterceptsSignal(int)': +../../../../gcc-host/libsanitizer/asan/asan_linux.cc:222:20: error: 'SIGSEGV' was not declared in this scope + return signum == SIGSEGV && common_flags()->handle_segv; + +This has been verified to apply to at least 4.9.4 and up to 5.4, +the code has been reworked for gcc 6. + +Resolves (Buildroot) Bug: https://bugs.busybox.net/show_bug.cgi?id=10061 + +Upstream: https://patchwork.ozlabs.org/patch/725596/ + +Signed-off-by: Matthew Weber +--- + libsanitizer/asan/asan_linux.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libsanitizer/asan/asan_linux.cc b/libsanitizer/asan/asan_linux.cc +index c504168..59087b9 100644 +--- a/libsanitizer/asan/asan_linux.cc ++++ b/libsanitizer/asan/asan_linux.cc +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff --git a/buildroot/package/gcc/4.9.4/943-Use-ucontext_t-not-struct-ucontext-in-linux-unwind.h.patch b/buildroot/package/gcc/4.9.4/943-Use-ucontext_t-not-struct-ucontext-in-linux-unwind.h.patch new file mode 100644 index 0000000..526346c --- /dev/null +++ b/buildroot/package/gcc/4.9.4/943-Use-ucontext_t-not-struct-ucontext-in-linux-unwind.h.patch @@ -0,0 +1,190 @@ +From b7e85069238c40eae54d0ca03ab6d5470d1815f9 Mon Sep 17 00:00:00 2001 +From: jsm28 +Date: Tue, 4 Jul 2017 10:25:10 +0000 +Subject: [PATCH] Use ucontext_t not struct ucontext in linux-unwind.h files. + +Current glibc no longer gives the ucontext_t type the tag struct +ucontext, to conform with POSIX namespace rules. This requires +various linux-unwind.h files in libgcc, that were previously using +struct ucontext, to be fixed to use ucontext_t instead. This is +similar to the removal of the struct siginfo tag from siginfo_t some +years ago. + +This patch changes those files to use ucontext_t instead. As the +standard name that should be unconditionally safe, so this is not +restricted to architectures supported by glibc, or conditioned on the +glibc version. + +Tested compilation together with current glibc with glibc's +build-many-glibcs.py. + + * config/aarch64/linux-unwind.h (aarch64_fallback_frame_state), + config/alpha/linux-unwind.h (alpha_fallback_frame_state), + config/bfin/linux-unwind.h (bfin_fallback_frame_state), + config/i386/linux-unwind.h (x86_64_fallback_frame_state, + x86_fallback_frame_state), config/m68k/linux-unwind.h (struct + uw_ucontext), config/nios2/linux-unwind.h (struct nios2_ucontext), + config/pa/linux-unwind.h (pa32_fallback_frame_state), + config/sh/linux-unwind.h (sh_fallback_frame_state), + config/tilepro/linux-unwind.h (tile_fallback_frame_state), + config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Use + ucontext_t instead of struct ucontext. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@249958 138bc75d-0d04-0410-961f-82ee72b054a4 +[Romain backport from gcc-5-branch] +Signed-off-by: Romain Naour +--- + libgcc/config/aarch64/linux-unwind.h | 2 +- + libgcc/config/alpha/linux-unwind.h | 2 +- + libgcc/config/bfin/linux-unwind.h | 2 +- + libgcc/config/i386/linux-unwind.h | 4 ++-- + libgcc/config/m68k/linux-unwind.h | 2 +- + libgcc/config/nios2/linux-unwind.h | 2 +- + libgcc/config/pa/linux-unwind.h | 2 +- + libgcc/config/sh/linux-unwind.h | 2 +- + libgcc/config/tilepro/linux-unwind.h | 2 +- + libgcc/config/xtensa/linux-unwind.h | 2 +- + 10 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/libgcc/config/aarch64/linux-unwind.h b/libgcc/config/aarch64/linux-unwind.h +index 6b5b3cd..d13dc34 100644 +--- a/libgcc/config/aarch64/linux-unwind.h ++++ b/libgcc/config/aarch64/linux-unwind.h +@@ -52,7 +52,7 @@ aarch64_fallback_frame_state (struct _Unwind_Context *context, + struct rt_sigframe + { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + }; + + struct rt_sigframe *rt_; +diff --git a/libgcc/config/alpha/linux-unwind.h b/libgcc/config/alpha/linux-unwind.h +index b5bfd1c..166d3d2 100644 +--- a/libgcc/config/alpha/linux-unwind.h ++++ b/libgcc/config/alpha/linux-unwind.h +@@ -51,7 +51,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context, + { + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + sc = &rt_->uc.uc_mcontext; + } +diff --git a/libgcc/config/bfin/linux-unwind.h b/libgcc/config/bfin/linux-unwind.h +index dc58f0a..8b94568 100644 +--- a/libgcc/config/bfin/linux-unwind.h ++++ b/libgcc/config/bfin/linux-unwind.h +@@ -52,7 +52,7 @@ bfin_fallback_frame_state (struct _Unwind_Context *context, + void *puc; + char retcode[8]; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + + /* The void * cast is necessary to avoid an aliasing warning. +diff --git a/libgcc/config/i386/linux-unwind.h b/libgcc/config/i386/linux-unwind.h +index 7986928..a9d621c 100644 +--- a/libgcc/config/i386/linux-unwind.h ++++ b/libgcc/config/i386/linux-unwind.h +@@ -58,7 +58,7 @@ x86_64_fallback_frame_state (struct _Unwind_Context *context, + if (*(unsigned char *)(pc+0) == 0x48 + && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL) + { +- struct ucontext *uc_ = context->cfa; ++ ucontext_t *uc_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem + because it does not alias anything. */ +@@ -138,7 +138,7 @@ x86_fallback_frame_state (struct _Unwind_Context *context, + siginfo_t *pinfo; + void *puc; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem +diff --git a/libgcc/config/m68k/linux-unwind.h b/libgcc/config/m68k/linux-unwind.h +index 1ba2a0c4..d67767e 100644 +--- a/libgcc/config/m68k/linux-unwind.h ++++ b/libgcc/config/m68k/linux-unwind.h +@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + /* is unfortunately broken right now. */ + struct uw_ucontext { + unsigned long uc_flags; +- struct ucontext *uc_link; ++ ucontext_t *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + unsigned long uc_filler[80]; +diff --git a/libgcc/config/nios2/linux-unwind.h b/libgcc/config/nios2/linux-unwind.h +index ba4bd80..8978868 100644 +--- a/libgcc/config/nios2/linux-unwind.h ++++ b/libgcc/config/nios2/linux-unwind.h +@@ -38,7 +38,7 @@ struct nios2_mcontext { + + struct nios2_ucontext { + unsigned long uc_flags; +- struct ucontext *uc_link; ++ ucontext_t *uc_link; + stack_t uc_stack; + struct nios2_mcontext uc_mcontext; + sigset_t uc_sigmask; /* mask last for extensibility */ +diff --git a/libgcc/config/pa/linux-unwind.h b/libgcc/config/pa/linux-unwind.h +index 4a3cfff..d2ac437 100644 +--- a/libgcc/config/pa/linux-unwind.h ++++ b/libgcc/config/pa/linux-unwind.h +@@ -80,7 +80,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *context, + struct sigcontext *sc; + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *frame; + + /* rt_sigreturn trampoline: +diff --git a/libgcc/config/sh/linux-unwind.h b/libgcc/config/sh/linux-unwind.h +index 4875706..671bde7 100644 +--- a/libgcc/config/sh/linux-unwind.h ++++ b/libgcc/config/sh/linux-unwind.h +@@ -180,7 +180,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context, + { + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem +diff --git a/libgcc/config/tilepro/linux-unwind.h b/libgcc/config/tilepro/linux-unwind.h +index 27481cf..c24d58c 100644 +--- a/libgcc/config/tilepro/linux-unwind.h ++++ b/libgcc/config/tilepro/linux-unwind.h +@@ -61,7 +61,7 @@ tile_fallback_frame_state (struct _Unwind_Context *context, + struct rt_sigframe { + unsigned char save_area[C_ABI_SAVE_AREA_SIZE]; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_; + + /* Return if this is not a signal handler. */ +diff --git a/libgcc/config/xtensa/linux-unwind.h b/libgcc/config/xtensa/linux-unwind.h +index 6832d0b..cb15b4c 100644 +--- a/libgcc/config/xtensa/linux-unwind.h ++++ b/libgcc/config/xtensa/linux-unwind.h +@@ -63,7 +63,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *context, + + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_; + + /* movi a2, __NR_rt_sigreturn; syscall */ +-- +2.9.5 + diff --git a/buildroot/package/gcc/4.9.4/944-sanitizer-linux.patch b/buildroot/package/gcc/4.9.4/944-sanitizer-linux.patch new file mode 100644 index 0000000..caadf2d --- /dev/null +++ b/buildroot/package/gcc/4.9.4/944-sanitizer-linux.patch @@ -0,0 +1,88 @@ +From f9a35ba5c150da2e381c4cab01f8f12bcd6af5d2 Mon Sep 17 00:00:00 2001 +From: jakub +Date: Mon, 17 Jul 2017 19:41:08 +0000 +Subject: [PATCH] Backported from mainline 2017-07-14 Jakub + Jelinek + + PR sanitizer/81066 + * sanitizer_common/sanitizer_linux.h: Cherry-pick upstream r307969. + * sanitizer_common/sanitizer_linux.cc: Likewise. + * sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc: Likewise. + * tsan/tsan_platform_linux.cc: Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-7-branch@250287 138bc75d-0d04-0410-961f-82ee72b054a4 +(cherry picked from commit 72edc2c02f8b4768ad660f46a1c7e2400c0a8e06) +[Romain backport to 4.9.4] +Signed-off-by: Romain Naour +--- + libsanitizer/sanitizer_common/sanitizer_linux.cc | 3 +-- + libsanitizer/sanitizer_common/sanitizer_linux.h | 4 +--- + libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc | 2 +- + libsanitizer/tsan/tsan_platform_linux.cc | 2 +- + 4 files changed, 4 insertions(+), 7 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.cc b/libsanitizer/sanitizer_common/sanitizer_linux.cc +index 69c9c10..8e53673 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_linux.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_linux.cc +@@ -599,8 +599,7 @@ uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5) { + return internal_syscall(__NR_prctl, option, arg2, arg3, arg4, arg5); + } + +-uptr internal_sigaltstack(const struct sigaltstack *ss, +- struct sigaltstack *oss) { ++uptr internal_sigaltstack(const void *ss, void *oss) { + return internal_syscall(__NR_sigaltstack, (uptr)ss, (uptr)oss); + } + +diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.h b/libsanitizer/sanitizer_common/sanitizer_linux.h +index 6422df1..8e111d1 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_linux.h ++++ b/libsanitizer/sanitizer_common/sanitizer_linux.h +@@ -18,7 +18,6 @@ + #include "sanitizer_platform_limits_posix.h" + + struct link_map; // Opaque type returned by dlopen(). +-struct sigaltstack; + + namespace __sanitizer { + // Dirent structure for getdents(). Note that this structure is different from +@@ -28,8 +27,7 @@ struct linux_dirent; + // Syscall wrappers. + uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count); + uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5); +-uptr internal_sigaltstack(const struct sigaltstack* ss, +- struct sigaltstack* oss); ++uptr internal_sigaltstack(const void* ss, void* oss); + uptr internal_sigaction(int signum, const __sanitizer_kernel_sigaction_t *act, + __sanitizer_kernel_sigaction_t *oldact); + uptr internal_sigprocmask(int how, __sanitizer_kernel_sigset_t *set, +diff --git a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc +index 6ee63ec..50c21a3 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc +@@ -238,7 +238,7 @@ static int TracerThread(void* argument) { + + // Alternate stack for signal handling. + InternalScopedBuffer handler_stack_memory(kHandlerStackSize); +- struct sigaltstack handler_stack; ++ stack_t handler_stack; + internal_memset(&handler_stack, 0, sizeof(handler_stack)); + handler_stack.ss_sp = handler_stack_memory.data(); + handler_stack.ss_size = kHandlerStackSize; +diff --git a/libsanitizer/tsan/tsan_platform_linux.cc b/libsanitizer/tsan/tsan_platform_linux.cc +index fe69430..49f5270 100644 +--- a/libsanitizer/tsan/tsan_platform_linux.cc ++++ b/libsanitizer/tsan/tsan_platform_linux.cc +@@ -351,7 +351,7 @@ bool IsGlobalVar(uptr addr) { + // closes within glibc. The code is a pure hack. + int ExtractResolvFDs(void *state, int *fds, int nfd) { + int cnt = 0; +- __res_state *statp = (__res_state*)state; ++ struct __res_state *statp = (struct __res_state*)state; + for (int i = 0; i < MAXNS && cnt < nfd; i++) { + if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1) + fds[cnt++] = statp->_u._ext.nssocks[i]; +-- +2.9.5 + diff --git a/buildroot/package/gcc/5.5.0/100-uclibc-conf.patch b/buildroot/package/gcc/5.5.0/100-uclibc-conf.patch new file mode 100644 index 0000000..73d1f0d --- /dev/null +++ b/buildroot/package/gcc/5.5.0/100-uclibc-conf.patch @@ -0,0 +1,15 @@ +Index: b/contrib/regression/objs-gcc.sh +=================================================================== +--- a/contrib/regression/objs-gcc.sh ++++ b/contrib/regression/objs-gcc.sh +@@ -106,6 +106,10 @@ + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] ++ then ++ make all-gdb all-dejagnu all-ld || exit 1 ++ make install-gdb install-dejagnu install-ld || exit 1 + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then + make bootstrap || exit 1 + make install || exit 1 diff --git a/buildroot/package/gcc/5.5.0/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch b/buildroot/package/gcc/5.5.0/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch new file mode 100644 index 0000000..c11ad35 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch @@ -0,0 +1,29 @@ +From 9bf6066d588632dab9f78932df15b5b4140f31f3 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Fri, 6 Nov 2015 14:27:23 +0100 +Subject: [PATCH] gcc/config.gcc: fix typo for powerpc e6500 cpu_is_64bit + +Otherwise it is not recognized as a 64-bit powerpc and gcc will not generate +64-bit binaries by default. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + gcc/config.gcc | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/gcc/config.gcc b/gcc/config.gcc +index 4a7cbd2..9cc765e 100644 +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -439,7 +439,7 @@ powerpc*-*-*) + cpu_type=rs6000 + extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h spu2vmx.h vec_types.h si2vmx.h htmintrin.h htmxlintrin.h" + case x$with_cpu in +- xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|Xe6500) ++ xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500) + cpu_is_64bit=yes + ;; + esac +-- +2.6.2 + diff --git a/buildroot/package/gcc/5.5.0/301-missing-execinfo_h.patch b/buildroot/package/gcc/5.5.0/301-missing-execinfo_h.patch new file mode 100644 index 0000000..2d0e7ba --- /dev/null +++ b/buildroot/package/gcc/5.5.0/301-missing-execinfo_h.patch @@ -0,0 +1,13 @@ +Index: b/boehm-gc/include/gc.h +=================================================================== +--- a/boehm-gc/include/gc.h ++++ b/boehm-gc/include/gc.h +@@ -503,7 +503,7 @@ + #if defined(__linux__) || defined(__GLIBC__) + # include + # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ +- && !defined(__ia64__) ++ && !defined(__ia64__) && !defined(__UCLIBC__) + # ifndef GC_HAVE_BUILTIN_BACKTRACE + # define GC_HAVE_BUILTIN_BACKTRACE + # endif diff --git a/buildroot/package/gcc/5.5.0/810-arm-softfloat-libgcc.patch b/buildroot/package/gcc/5.5.0/810-arm-softfloat-libgcc.patch new file mode 100644 index 0000000..5efa7fd --- /dev/null +++ b/buildroot/package/gcc/5.5.0/810-arm-softfloat-libgcc.patch @@ -0,0 +1,30 @@ +Index: b/gcc/config/arm/linux-elf.h +=================================================================== +--- a/gcc/config/arm/linux-elf.h ++++ b/gcc/config/arm/linux-elf.h +@@ -60,7 +60,7 @@ + %{shared:-lc} \ + %{!shared:%{profile:-lc_p}%{!profile:-lc}}" + +-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc" ++#define LIBGCC_SPEC "-lgcc" + + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + +Index: b/libgcc/config/arm/t-linux +=================================================================== +--- a/libgcc/config/arm/t-linux ++++ b/libgcc/config/arm/t-linux +@@ -1,6 +1,11 @@ + LIB1ASMSRC = arm/lib1funcs.S + LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ +- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 ++ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \ ++ _arm_addsubdf3 _arm_addsubsf3 \ ++ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ ++ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \ ++ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \ ++ _arm_fixsfsi _arm_fixunssfsi + + # Just for these, we omit the frame pointer since it makes such a big + # difference. diff --git a/buildroot/package/gcc/5.5.0/830-arm_unbreak_armv4t.patch b/buildroot/package/gcc/5.5.0/830-arm_unbreak_armv4t.patch new file mode 100644 index 0000000..b730059 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/830-arm_unbreak_armv4t.patch @@ -0,0 +1,15 @@ +http://sourceware.org/ml/crossgcc/2008-05/msg00009.html + +Index: b/gcc/config/arm/linux-eabi.h +=================================================================== +--- a/gcc/config/arm/linux-eabi.h ++++ b/gcc/config/arm/linux-eabi.h +@@ -45,7 +45,7 @@ + The ARM10TDMI core is the default for armv5t, so set + SUBTARGET_CPU_DEFAULT to achieve this. */ + #undef SUBTARGET_CPU_DEFAULT +-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi + + /* TARGET_BIG_ENDIAN_DEFAULT is set in + config.gcc for big endian configurations. */ diff --git a/buildroot/package/gcc/5.5.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch b/buildroot/package/gcc/5.5.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch new file mode 100644 index 0000000..d8c74f9 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch @@ -0,0 +1,68 @@ +From 89bd94250827f887b38211ac048b4006229dc9c0 Mon Sep 17 00:00:00 2001 +From: ktkachov +Date: Fri, 26 Aug 2016 10:23:20 +0000 +Subject: [PATCH] [ARM] PR target/70473: Reduce size of Cortex-A8 automaton + + PR target/70473 + * config/arm/cortex-a8-neon.md (cortex_a8_vfp_muld): Reduce + reservation duration to 15 cycles. + (cortex_a8_vfp_macs): Likewise. + (cortex_a8_vfp_macd): Likewise. + (cortex_a8_vfp_divs): Likewise. + (cortex_a8_vfp_divd): Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239772 138bc75d-0d04-0410-961f-82ee72b054a4 + +[Backport from gcc upstream commit 79f5d5e3cd5a668d5ecb2b6b0cce80ef5706ac53.] +Signed-off-by: Thomas Petazzoni +--- + gcc/config/arm/cortex-a8-neon.md | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/gcc/config/arm/cortex-a8-neon.md b/gcc/config/arm/cortex-a8-neon.md +index 04fa01e..4e6d05d 100644 +--- a/gcc/config/arm/cortex-a8-neon.md ++++ b/gcc/config/arm/cortex-a8-neon.md +@@ -357,30 +357,34 @@ + (eq_attr "type" "fmuls")) + "cortex_a8_vfp,cortex_a8_vfplite*11") + ++;; Don't model a reservation for more than 15 cycles as this explodes the ++;; state space of the automaton for little gain. It is unlikely that the ++;; scheduler will find enough instructions to hide the full latency of the ++;; instructions. + (define_insn_reservation "cortex_a8_vfp_muld" 17 + (and (eq_attr "tune" "cortexa8") + (eq_attr "type" "fmuld")) +- "cortex_a8_vfp,cortex_a8_vfplite*16") ++ "cortex_a8_vfp,cortex_a8_vfplite*15") + + (define_insn_reservation "cortex_a8_vfp_macs" 21 + (and (eq_attr "tune" "cortexa8") + (eq_attr "type" "fmacs,ffmas")) +- "cortex_a8_vfp,cortex_a8_vfplite*20") ++ "cortex_a8_vfp,cortex_a8_vfplite*15") + + (define_insn_reservation "cortex_a8_vfp_macd" 26 + (and (eq_attr "tune" "cortexa8") + (eq_attr "type" "fmacd,ffmad")) +- "cortex_a8_vfp,cortex_a8_vfplite*25") ++ "cortex_a8_vfp,cortex_a8_vfplite*15") + + (define_insn_reservation "cortex_a8_vfp_divs" 37 + (and (eq_attr "tune" "cortexa8") + (eq_attr "type" "fdivs, fsqrts")) +- "cortex_a8_vfp,cortex_a8_vfplite*36") ++ "cortex_a8_vfp,cortex_a8_vfplite*15") + + (define_insn_reservation "cortex_a8_vfp_divd" 65 + (and (eq_attr "tune" "cortexa8") + (eq_attr "type" "fdivd, fsqrtd")) +- "cortex_a8_vfp,cortex_a8_vfplite*64") ++ "cortex_a8_vfp,cortex_a8_vfplite*15") + + ;; Comparisons can actually take 7 cycles sometimes instead of four, + ;; but given all the other instructions lumped into type=ffarith that +-- +2.7.4 + diff --git a/buildroot/package/gcc/5.5.0/840-microblaze-enable-dwarf-eh-support.patch b/buildroot/package/gcc/5.5.0/840-microblaze-enable-dwarf-eh-support.patch new file mode 100644 index 0000000..9d29090 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/840-microblaze-enable-dwarf-eh-support.patch @@ -0,0 +1,166 @@ +Fetched from Xilinx gcc git at https://github.com/Xilinx/gcc + +From 23c35173490ac2d6348a668dfc9c1a6eb62171f2 Mon Sep 17 00:00:00 2001 +From: "Edgar E. Iglesias" +Date: Mon, 18 Jun 2012 20:18:13 +0200 +Subject: [PATCH] [Patch, microblaze]: Enable DWARF exception handling support. + +Changelog + +2013-03-18 Edgar E. Iglesias + David Holsgrove + + * common/config/microblaze/microblaze-common.c: Remove + TARGET_EXCEPT_UNWIND_INFO definition. + * config/microblaze/microblaze-protos.h: Add + microblaze_eh_return prototype. + * gcc/config/microblaze/microblaze.c: (microblaze_must_save_register, + microblaze_expand_epilogue, microblaze_return_addr): Handle + calls_eh_return + (microblaze_eh_return): New function. + * gcc/config/microblaze/microblaze.h: Define RETURN_ADDR_OFFSET, + EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX, + ASM_PREFERRED_EH_DATA_FORMAT + * gcc/config/microblaze/microblaze.md: Define eh_return pattern. + +Signed-off-by: David Holsgrove +Signed-off-by: Edgar E. Iglesias +--- + gcc/common/config/microblaze/microblaze-common.c | 3 --- + gcc/config/microblaze/microblaze-protos.h | 1 + + gcc/config/microblaze/microblaze.c | 29 ++++++++++++++++++++---- + gcc/config/microblaze/microblaze.h | 15 ++++++++++++ + gcc/config/microblaze/microblaze.md | 11 +++++++++ + 5 files changed, 52 insertions(+), 7 deletions(-) + +Index: b/gcc/common/config/microblaze/microblaze-common.c +=================================================================== +--- a/gcc/common/config/microblaze/microblaze-common.c ++++ b/gcc/common/config/microblaze/microblaze-common.c +@@ -37,7 +37,4 @@ + #undef TARGET_OPTION_OPTIMIZATION_TABLE + #define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table + +-#undef TARGET_EXCEPT_UNWIND_INFO +-#define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info +- + struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; +Index: b/gcc/config/microblaze/microblaze-protos.h +=================================================================== +--- a/gcc/config/microblaze/microblaze-protos.h ++++ b/gcc/config/microblaze/microblaze-protos.h +@@ -56,6 +56,7 @@ + extern int symbol_mentioned_p (rtx); + extern int label_mentioned_p (rtx); + extern bool microblaze_cannot_force_const_mem (machine_mode, rtx); ++extern void microblaze_eh_return (rtx op0); + #endif /* RTX_CODE */ + + /* Declare functions in microblaze-c.c. */ +Index: b/gcc/config/microblaze/microblaze.c +=================================================================== +--- a/gcc/config/microblaze/microblaze.c ++++ b/gcc/config/microblaze/microblaze.c +@@ -1959,6 +1959,11 @@ + if (frame_pointer_needed && (regno == HARD_FRAME_POINTER_REGNUM)) + return 1; + ++ if (crtl->calls_eh_return ++ && regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) { ++ return 1; ++ } ++ + if (!crtl->is_leaf) + { + if (regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) +@@ -1986,6 +1991,13 @@ + return 1; + } + ++ if (crtl->calls_eh_return ++ && (regno == EH_RETURN_DATA_REGNO (0) ++ || regno == EH_RETURN_DATA_REGNO (1))) ++ { ++ return 1; ++ } ++ + return 0; + } + +@@ -3067,6 +3079,12 @@ + emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, fsiz_rtx)); + } + ++ if (crtl->calls_eh_return) ++ emit_insn (gen_addsi3 (stack_pointer_rtx, ++ stack_pointer_rtx, ++ gen_rtx_raw_REG (SImode, ++ MB_EH_STACKADJ_REGNUM))); ++ + emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, GP_REG_FIRST + + MB_ABI_SUB_RETURN_ADDR_REGNUM))); + } +@@ -3364,10 +3382,13 @@ + if (count != 0) + return NULL_RTX; + +- return gen_rtx_PLUS (Pmode, +- get_hard_reg_initial_val (Pmode, +- MB_ABI_SUB_RETURN_ADDR_REGNUM), +- GEN_INT (8)); ++ return get_hard_reg_initial_val (Pmode, ++ MB_ABI_SUB_RETURN_ADDR_REGNUM); ++} ++ ++void microblaze_eh_return (rtx op0) ++{ ++ emit_insn (gen_movsi(gen_rtx_MEM(Pmode, stack_pointer_rtx), op0)); + } + + /* Queue an .ident string in the queue of top-level asm statements. +Index: b/gcc/config/microblaze/microblaze.h +=================================================================== +--- a/gcc/config/microblaze/microblaze.h ++++ b/gcc/config/microblaze/microblaze.h +@@ -184,6 +184,21 @@ + #define INCOMING_RETURN_ADDR_RTX \ + gen_rtx_REG (VOIDmode, GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM) + ++/* Specifies the offset from INCOMING_RETURN_ADDR_RTX and the actual return PC. */ ++#define RETURN_ADDR_OFFSET (8) ++ ++/* Describe how we implement __builtin_eh_return. */ ++#define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? MB_ABI_FIRST_ARG_REGNUM + (N) : INVALID_REGNUM) ++ ++#define MB_EH_STACKADJ_REGNUM MB_ABI_INT_RETURN_VAL2_REGNUM ++#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, MB_EH_STACKADJ_REGNUM) ++ ++/* Select a format to encode pointers in exception handling data. CODE ++ is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is ++ true if the symbol may be affected by dynamic relocations. */ ++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ ++ ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr) ++ + /* Use DWARF 2 debugging information by default. */ + #define DWARF2_DEBUGGING_INFO + #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG +Index: b/gcc/config/microblaze/microblaze.md +=================================================================== +--- a/gcc/config/microblaze/microblaze.md ++++ b/gcc/config/microblaze/microblaze.md +@@ -2272,4 +2272,15 @@ + (set_attr "mode" "SI") + (set_attr "length" "4")]) + ++; This is used in compiling the unwind routines. ++(define_expand "eh_return" ++ [(use (match_operand 0 "general_operand" ""))] ++ "" ++ " ++{ ++ microblaze_eh_return(operands[0]); ++ DONE; ++}") ++ + (include "sync.md") ++ diff --git a/buildroot/package/gcc/5.5.0/850-libstdcxx-uclibc-c99.patch b/buildroot/package/gcc/5.5.0/850-libstdcxx-uclibc-c99.patch new file mode 100644 index 0000000..9e97d94 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/850-libstdcxx-uclibc-c99.patch @@ -0,0 +1,273 @@ +Allow C99-depending features of libstdc++ with uClibc + +The libstdc++ code is fairly restrictive on how it checks for C99 +compatibility: it requires *complete* C99 support to enable certain +features. For example, uClibc provides a good number of C99 features, +but not C99 complex number support. For this reason, libstdc++ +completely disables many the standard C++ methods that can in fact +work because uClibc provides the necessary functions. + +This patch is similar and highly inspired from +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, but implemented in +a way that doesn't involve changing the configure.ac script, as +autoreconfiguring gcc is complicated. It simply relies on the fact +that uClibc defines the __UCLIBC__ definition. + +Signed-off-by: Thomas Petazzoni + +Index: b/libstdc++-v3/config/locale/generic/c_locale.h +=================================================================== +--- a/libstdc++-v3/config/locale/generic/c_locale.h ++++ b/libstdc++-v3/config/locale/generic/c_locale.h +@@ -70,7 +70,7 @@ + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); + #else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +Index: b/libstdc++-v3/config/locale/gnu/c_locale.h +=================================================================== +--- a/libstdc++-v3/config/locale/gnu/c_locale.h ++++ b/libstdc++-v3/config/locale/gnu/c_locale.h +@@ -88,7 +88,7 @@ + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); + #else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +Index: b/libstdc++-v3/include/bits/basic_string.h +=================================================================== +--- a/libstdc++-v3/include/bits/basic_string.h ++++ b/libstdc++-v3/include/bits/basic_string.h +@@ -5239,7 +5239,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99) ++#if __cplusplus >= 201103L && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)) + + #include + +Index: b/libstdc++-v3/include/bits/locale_facets.tcc +=================================================================== +--- a/libstdc++-v3/include/bits/locale_facets.tcc ++++ b/libstdc++-v3/include/bits/locale_facets.tcc +@@ -992,7 +992,7 @@ + char __fbuf[16]; + __num_base::_S_format_float(__io, __fbuf, __mod); + +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + // Precision is always used except for hexfloat format. + const bool __use_prec = + (__io.flags() & ios_base::floatfield) != ios_base::floatfield; +Index: b/libstdc++-v3/include/bits/locale_facets_nonio.tcc +=================================================================== +--- a/libstdc++-v3/include/bits/locale_facets_nonio.tcc ++++ b/libstdc++-v3/include/bits/locale_facets_nonio.tcc +@@ -578,7 +578,7 @@ + { + const locale __loc = __io.getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + // First try a buffer perhaps big enough. + int __cs_size = 64; + char* __cs = static_cast(__builtin_alloca(__cs_size)); +Index: b/libstdc++-v3/include/c_compatibility/math.h +=================================================================== +--- a/libstdc++-v3/include/c_compatibility/math.h ++++ b/libstdc++-v3/include/c_compatibility/math.h +@@ -56,7 +56,7 @@ + using std::floor; + using std::fmod; + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::fpclassify; + using std::isfinite; + using std::isinf; +Index: b/libstdc++-v3/include/c_compatibility/wchar.h +=================================================================== +--- a/libstdc++-v3/include/c_compatibility/wchar.h ++++ b/libstdc++-v3/include/c_compatibility/wchar.h +@@ -103,7 +103,7 @@ + using std::wmemset; + using std::wcsftime; + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +Index: b/libstdc++-v3/include/c_global/cstdlib +=================================================================== +--- a/libstdc++-v3/include/c_global/cstdlib ++++ b/libstdc++-v3/include/c_global/cstdlib +@@ -195,7 +195,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef _Exit + #undef llabs +Index: b/libstdc++-v3/include/c_global/cwchar +=================================================================== +--- a/libstdc++-v3/include/c_global/cwchar ++++ b/libstdc++-v3/include/c_global/cwchar +@@ -232,7 +232,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef wcstold + #undef wcstoll +@@ -289,7 +289,7 @@ + using std::vwscanf; + #endif + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +Index: b/libstdc++-v3/include/c_std/cstdio +=================================================================== +--- a/libstdc++-v3/include/c_std/cstdio ++++ b/libstdc++-v3/include/c_std/cstdio +@@ -144,7 +144,7 @@ + using ::vsprintf; + } // namespace std + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef snprintf + #undef vfscanf +Index: b/libstdc++-v3/include/c_std/cstdlib +=================================================================== +--- a/libstdc++-v3/include/c_std/cstdlib ++++ b/libstdc++-v3/include/c_std/cstdlib +@@ -192,7 +192,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef _Exit + #undef llabs +Index: b/libstdc++-v3/include/c_std/cwchar +=================================================================== +--- a/libstdc++-v3/include/c_std/cwchar ++++ b/libstdc++-v3/include/c_std/cwchar +@@ -228,7 +228,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef wcstold + #undef wcstoll +Index: b/libstdc++-v3/include/ext/vstring.h +=================================================================== +--- a/libstdc++-v3/include/ext/vstring.h ++++ b/libstdc++-v3/include/ext/vstring.h +@@ -2680,7 +2680,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99)) ++#if ((__cplusplus >= 201103L) && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__))) + + #include + +Index: b/libstdc++-v3/include/tr1/cstdio +=================================================================== +--- a/libstdc++-v3/include/tr1/cstdio ++++ b/libstdc++-v3/include/tr1/cstdio +@@ -33,7 +33,7 @@ + + #include + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + namespace std _GLIBCXX_VISIBILITY(default) + { +Index: b/libstdc++-v3/include/tr1/cstdlib +=================================================================== +--- a/libstdc++-v3/include/tr1/cstdlib ++++ b/libstdc++-v3/include/tr1/cstdlib +@@ -35,7 +35,7 @@ + + #if _GLIBCXX_HOSTED + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + namespace std _GLIBCXX_VISIBILITY(default) + { +Index: b/libstdc++-v3/include/tr1/cwchar +=================================================================== +--- a/libstdc++-v3/include/tr1/cwchar ++++ b/libstdc++-v3/include/tr1/cwchar +@@ -52,7 +52,7 @@ + using std::vwscanf; + #endif + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +Index: b/libstdc++-v3/include/tr1/stdlib.h +=================================================================== +--- a/libstdc++-v3/include/tr1/stdlib.h ++++ b/libstdc++-v3/include/tr1/stdlib.h +@@ -33,7 +33,7 @@ + + #if _GLIBCXX_HOSTED + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + using std::tr1::atoll; + using std::tr1::strtoll; +Index: b/libstdc++-v3/src/c++11/debug.cc +=================================================================== +--- a/libstdc++-v3/src/c++11/debug.cc ++++ b/libstdc++-v3/src/c++11/debug.cc +@@ -788,7 +788,7 @@ + int __n __attribute__ ((__unused__)), + const char* __fmt, _Tp __s) const throw () + { +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + std::snprintf(__buf, __n, __fmt, __s); + #else + std::sprintf(__buf, __fmt, __s); +Index: b/libstdc++-v3/include/c_global/cstdio +=================================================================== +--- a/libstdc++-v3/include/c_global/cstdio ++++ b/libstdc++-v3/include/c_global/cstdio +@@ -146,7 +146,7 @@ + using ::vsprintf; + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef snprintf + #undef vfscanf diff --git a/buildroot/package/gcc/5.5.0/860-cilk-wchar.patch b/buildroot/package/gcc/5.5.0/860-cilk-wchar.patch new file mode 100644 index 0000000..1d9916f --- /dev/null +++ b/buildroot/package/gcc/5.5.0/860-cilk-wchar.patch @@ -0,0 +1,56 @@ +[PATCH] cilk: fix build without wchar + +When building against uClibc with wchar support disabled, WCHAR_MIN and +WCHAR_MAX are not defined leading to compilation errors. + +Fix it by only including the wchar code if available. + +Signed-off-by: Peter Korsgaard +--- + libcilkrts/include/cilk/reducer_min_max.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +Index: b/libcilkrts/include/cilk/reducer_min_max.h +=================================================================== +--- a/libcilkrts/include/cilk/reducer_min_max.h ++++ b/libcilkrts/include/cilk/reducer_min_max.h +@@ -3154,7 +3154,9 @@ + CILK_C_REDUCER_MAX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INSTANCE(int, int, INT_MIN) +@@ -3306,7 +3308,9 @@ + CILK_C_REDUCER_MAX_INDEX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INDEX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(int, int, INT_MIN) +@@ -3432,7 +3436,9 @@ + CILK_C_REDUCER_MIN_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(int, int, INT_MAX) +@@ -3584,7 +3590,9 @@ + CILK_C_REDUCER_MIN_INDEX_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INDEX_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(int, int, INT_MAX) diff --git a/buildroot/package/gcc/5.5.0/870-xtensa-add-mauto-litpools-option.patch b/buildroot/package/gcc/5.5.0/870-xtensa-add-mauto-litpools-option.patch new file mode 100644 index 0000000..aa1376c --- /dev/null +++ b/buildroot/package/gcc/5.5.0/870-xtensa-add-mauto-litpools-option.patch @@ -0,0 +1,290 @@ +From 6d852ffb43b111a39162135c95249e749c4e285b Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Thu, 6 Aug 2015 01:16:02 +0300 +Subject: [PATCH] xtensa: add -mauto-litpools option + +With support from assembler this option allows compiling huge functions, +where single literal pool at the beginning of a function may not be +reachable by L32R instructions at its end. + +Currently assembler --auto-litpools option cannot deal with literals +used from multiple locations separated by more than 256 KBytes of code. +Don't turn constants into literals, instead use MOVI instruction to load +them into registers and let the assembler turn them into literals as +necessary. + +2015-08-12 Max Filippov +gcc/ + * config/xtensa/constraints.md (define_constraint "Y"): New + constraint. + * config/xtensa/elf.h (ASM_SPEC): Add m(no-)auto-litpools. + * config/xtensa/linux.h (ASM_SPEC): Likewise. + * config/xtensa/predicates.md (move_operand): Match constants + and symbols in the presence of TARGET_AUTO_LITPOOLS. + * config/xtensa/xtensa.c (xtensa_valid_move): Don't allow + immediate references to TLS data. + (xtensa_emit_move_sequence): Don't force constants to memory in + the presence of TARGET_AUTO_LITPOOLS. + (print_operand): Add 'y' format, same as default, but capable of + printing SF mode constants as well. + * config/xtensa/xtensa.md (movsi_internal, movhi_internal) + (movsf_internal): Add movi pattern that loads literal. + (movsf, movdf): Don't force constants to memory in the presence + of TARGET_AUTO_LITPOOLS. + (movdf_internal): Add 'Y' constraint. + * config/xtensa/xtensa.opt (mauto-litpools): New option. + +Signed-off-by: Max Filippov +--- +Backported from: r226828 +Changes to ChangeLogs and documentation are dropped. + + gcc/config/xtensa/constraints.md | 5 +++++ + gcc/config/xtensa/elf.h | 4 +++- + gcc/config/xtensa/linux.h | 4 +++- + gcc/config/xtensa/predicates.md | 3 ++- + gcc/config/xtensa/xtensa.c | 19 ++++++++++++++++++- + gcc/config/xtensa/xtensa.md | 35 +++++++++++++++++++---------------- + gcc/config/xtensa/xtensa.opt | 4 ++++ + 7 files changed, 54 insertions(+), 20 deletions(-) + +diff --git a/gcc/config/xtensa/constraints.md b/gcc/config/xtensa/constraints.md +index 30f4c1f..773d4f9 100644 +--- a/gcc/config/xtensa/constraints.md ++++ b/gcc/config/xtensa/constraints.md +@@ -111,6 +111,11 @@ + (and (match_code "const_int") + (match_test "xtensa_mask_immediate (ival)"))) + ++(define_constraint "Y" ++ "A constant that can be used in relaxed MOVI instructions." ++ (and (match_code "const_int,const_double,const,symbol_ref,label_ref") ++ (match_test "TARGET_AUTO_LITPOOLS"))) ++ + ;; Memory constraints. Do not use define_memory_constraint here. Doing so + ;; causes reload to force some constants into the constant pool, but since + ;; the Xtensa constant pool can only be accessed with L32R instructions, it +diff --git a/gcc/config/xtensa/elf.h b/gcc/config/xtensa/elf.h +index e59bede..12056f7 100644 +--- a/gcc/config/xtensa/elf.h ++++ b/gcc/config/xtensa/elf.h +@@ -48,7 +48,9 @@ along with GCC; see the file COPYING3. If not see + %{mtarget-align:--target-align} \ + %{mno-target-align:--no-target-align} \ + %{mlongcalls:--longcalls} \ +- %{mno-longcalls:--no-longcalls}" ++ %{mno-longcalls:--no-longcalls} \ ++ %{mauto-litpools:--auto-litpools} \ ++ %{mno-auto-litpools:--no-auto-litpools}" + + #undef LIB_SPEC + #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim -lhal" +diff --git a/gcc/config/xtensa/linux.h b/gcc/config/xtensa/linux.h +index 675aacf..5b0243a 100644 +--- a/gcc/config/xtensa/linux.h ++++ b/gcc/config/xtensa/linux.h +@@ -42,7 +42,9 @@ along with GCC; see the file COPYING3. If not see + %{mtarget-align:--target-align} \ + %{mno-target-align:--no-target-align} \ + %{mlongcalls:--longcalls} \ +- %{mno-longcalls:--no-longcalls}" ++ %{mno-longcalls:--no-longcalls} \ ++ %{mauto-litpools:--auto-litpools} \ ++ %{mno-auto-litpools:--no-auto-litpools}" + + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" + +diff --git a/gcc/config/xtensa/predicates.md b/gcc/config/xtensa/predicates.md +index e02209e..d7dfa11 100644 +--- a/gcc/config/xtensa/predicates.md ++++ b/gcc/config/xtensa/predicates.md +@@ -142,7 +142,8 @@ + (match_test "GET_MODE_CLASS (mode) == MODE_INT + && xtensa_simm12b (INTVAL (op))")) + (and (match_code "const_int,const_double,const,symbol_ref,label_ref") +- (match_test "TARGET_CONST16 && CONSTANT_P (op) ++ (match_test "(TARGET_CONST16 || TARGET_AUTO_LITPOOLS) ++ && CONSTANT_P (op) + && GET_MODE_SIZE (mode) % UNITS_PER_WORD == 0"))))) + + ;; Accept the floating point constant 1 in the appropriate mode. +diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c +index eb039ba..206ff80 100644 +--- a/gcc/config/xtensa/xtensa.c ++++ b/gcc/config/xtensa/xtensa.c +@@ -501,6 +501,9 @@ xtensa_valid_move (machine_mode mode, rtx *operands) + { + int dst_regnum = xt_true_regnum (operands[0]); + ++ if (xtensa_tls_referenced_p (operands[1])) ++ return FALSE; ++ + /* The stack pointer can only be assigned with a MOVSP opcode. */ + if (dst_regnum == STACK_POINTER_REGNUM) + return !TARGET_WINDOWED_ABI +@@ -1069,7 +1072,7 @@ xtensa_emit_move_sequence (rtx *operands, machine_mode mode) + return 1; + } + +- if (! TARGET_CONST16) ++ if (! TARGET_AUTO_LITPOOLS && ! TARGET_CONST16) + { + src = force_const_mem (SImode, src); + operands[1] = src; +@@ -2449,6 +2452,20 @@ print_operand (FILE *file, rtx x, int letter) + } + break; + ++ case 'y': ++ if (GET_CODE (x) == CONST_DOUBLE && ++ GET_MODE (x) == SFmode) ++ { ++ REAL_VALUE_TYPE r; ++ long l; ++ REAL_VALUE_FROM_CONST_DOUBLE (r, x); ++ REAL_VALUE_TO_TARGET_SINGLE (r, l); ++ fprintf (file, "0x%08lx", l); ++ break; ++ } ++ ++ /* fall through */ ++ + default: + if (GET_CODE (x) == REG || GET_CODE (x) == SUBREG) + fprintf (file, "%s", reg_names[xt_true_regnum (x)]); +diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md +index 6d84384..0e673a3 100644 +--- a/gcc/config/xtensa/xtensa.md ++++ b/gcc/config/xtensa/xtensa.md +@@ -761,8 +761,8 @@ + }) + + (define_insn "movsi_internal" +- [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,W,a,a,U,*a,*A") +- (match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,i,T,U,r,*A,*r"))] ++ [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,a,W,a,a,U,*a,*A") ++ (match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,Y,i,T,U,r,*A,*r"))] + "xtensa_valid_move (SImode, operands)" + "@ + movi.n\t%0, %x1 +@@ -774,15 +774,16 @@ + mov\t%0, %1 + movsp\t%0, %1 + movi\t%0, %x1 ++ movi\t%0, %1 + const16\t%0, %t1\;const16\t%0, %b1 + %v1l32r\t%0, %1 + %v1l32i\t%0, %1 + %v0s32i\t%1, %0 + rsr\t%0, ACCLO + wsr\t%1, ACCLO" +- [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,load,load,store,rsr,wsr") ++ [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,move,load,load,store,rsr,wsr") + (set_attr "mode" "SI") +- (set_attr "length" "2,2,2,2,2,2,3,3,3,6,3,3,3,3,3")]) ++ (set_attr "length" "2,2,2,2,2,2,3,3,3,3,6,3,3,3,3,3")]) + + ;; 16-bit Integer moves + +@@ -796,21 +797,22 @@ + }) + + (define_insn "movhi_internal" +- [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,U,*a,*A") +- (match_operand:HI 1 "move_operand" "M,d,r,I,U,r,*A,*r"))] ++ [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,a,U,*a,*A") ++ (match_operand:HI 1 "move_operand" "M,d,r,I,Y,U,r,*A,*r"))] + "xtensa_valid_move (HImode, operands)" + "@ + movi.n\t%0, %x1 + mov.n\t%0, %1 + mov\t%0, %1 + movi\t%0, %x1 ++ movi\t%0, %1 + %v1l16ui\t%0, %1 + %v0s16i\t%1, %0 + rsr\t%0, ACCLO + wsr\t%1, ACCLO" +- [(set_attr "type" "move,move,move,move,load,store,rsr,wsr") ++ [(set_attr "type" "move,move,move,move,move,load,store,rsr,wsr") + (set_attr "mode" "HI") +- (set_attr "length" "2,2,3,3,3,3,3,3")]) ++ (set_attr "length" "2,2,3,3,3,3,3,3,3")]) + + ;; 8-bit Integer moves + +@@ -881,7 +883,7 @@ + (match_operand:SF 1 "general_operand" ""))] + "" + { +- if (!TARGET_CONST16 && CONSTANT_P (operands[1])) ++ if (!TARGET_CONST16 && !TARGET_AUTO_LITPOOLS && CONSTANT_P (operands[1])) + operands[1] = force_const_mem (SFmode, operands[1]); + + if ((!register_operand (operands[0], SFmode) +@@ -896,8 +898,8 @@ + }) + + (define_insn "movsf_internal" +- [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,W,a,a,U") +- (match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,iF,T,U,r"))] ++ [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,a,W,a,a,U") ++ (match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,Y,iF,T,U,r"))] + "((register_operand (operands[0], SFmode) + || register_operand (operands[1], SFmode)) + && !(FP_REG_P (xt_true_regnum (operands[0])) +@@ -912,13 +914,14 @@ + mov\t%0, %1 + wfr\t%0, %1 + rfr\t%0, %1 ++ movi\t%0, %y1 + const16\t%0, %t1\;const16\t%0, %b1 + %v1l32r\t%0, %1 + %v1l32i\t%0, %1 + %v0s32i\t%1, %0" +- [(set_attr "type" "farith,fload,fstore,move,load,store,move,farith,farith,move,load,load,store") ++ [(set_attr "type" "farith,fload,fstore,move,load,store,move,farith,farith,move,move,load,load,store") + (set_attr "mode" "SF") +- (set_attr "length" "3,3,3,2,2,2,3,3,3,6,3,3,3")]) ++ (set_attr "length" "3,3,3,2,2,2,3,3,3,3,6,3,3,3")]) + + (define_insn "*lsiu" + [(set (match_operand:SF 0 "register_operand" "=f") +@@ -991,7 +994,7 @@ + (match_operand:DF 1 "general_operand" ""))] + "" + { +- if (CONSTANT_P (operands[1]) && !TARGET_CONST16) ++ if (CONSTANT_P (operands[1]) && !TARGET_CONST16 && !TARGET_AUTO_LITPOOLS) + operands[1] = force_const_mem (DFmode, operands[1]); + + if (!register_operand (operands[0], DFmode) +@@ -1002,8 +1005,8 @@ + }) + + (define_insn_and_split "movdf_internal" +- [(set (match_operand:DF 0 "nonimmed_operand" "=a,W,a,a,U") +- (match_operand:DF 1 "move_operand" "r,iF,T,U,r"))] ++ [(set (match_operand:DF 0 "nonimmed_operand" "=a,a,W,a,a,U") ++ (match_operand:DF 1 "move_operand" "r,Y,iF,T,U,r"))] + "register_operand (operands[0], DFmode) + || register_operand (operands[1], DFmode)" + "#" +diff --git a/gcc/config/xtensa/xtensa.opt b/gcc/config/xtensa/xtensa.opt +index 2fd6cee..21c6e96 100644 +--- a/gcc/config/xtensa/xtensa.opt ++++ b/gcc/config/xtensa/xtensa.opt +@@ -38,6 +38,10 @@ mtext-section-literals + Target + Intersperse literal pools with code in the text section + ++mauto-litpools ++Target Report Mask(AUTO_LITPOOLS) ++Relax literals in assembler and place them automatically in the text section ++ + mserialize-volatile + Target Report Mask(SERIALIZE_VOLATILE) + -mno-serialize-volatile Do not serialize volatile memory references with MEMW instructions +-- +1.8.1.4 + diff --git a/buildroot/package/gcc/5.5.0/871-xtensa-reimplement-register-spilling.patch b/buildroot/package/gcc/5.5.0/871-xtensa-reimplement-register-spilling.patch new file mode 100644 index 0000000..4056f8b --- /dev/null +++ b/buildroot/package/gcc/5.5.0/871-xtensa-reimplement-register-spilling.patch @@ -0,0 +1,76 @@ +From 40507bf199440082ed69b777986d50c31efe2520 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Mon, 10 Aug 2015 21:35:20 +0300 +Subject: [PATCH 1/3] xtensa: reimplement register spilling + +Spilling windowed registers in userspace is much easier, more portable, +less error-prone and equally effective as in kernel. Now that register +spilling syscall is considered obsolete in the xtensa linux kernel +replace it with CALL12 followed by series of ENTRY in libgcc. + +2015-08-18 Max Filippov +libgcc/ + * config/xtensa/lib2funcs.S (__xtensa_libgcc_window_spill): Use + CALL12 followed by series of ENTRY to spill windowed registers. + (__xtensa_nonlocal_goto): Call __xtensa_libgcc_window_spill + instead of making linux spill syscall. + +Signed-off-by: Max Filippov +--- +Backported from: r226962 + + libgcc/config/xtensa/lib2funcs.S | 30 +++++++++++++++++++++++------- + 1 file changed, 23 insertions(+), 7 deletions(-) + +diff --git a/libgcc/config/xtensa/lib2funcs.S b/libgcc/config/xtensa/lib2funcs.S +index 4d451c8..ef0703f 100644 +--- a/libgcc/config/xtensa/lib2funcs.S ++++ b/libgcc/config/xtensa/lib2funcs.S +@@ -34,10 +34,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + .global __xtensa_libgcc_window_spill + .type __xtensa_libgcc_window_spill,@function + __xtensa_libgcc_window_spill: +- entry sp, 32 +- movi a2, 0 +- syscall ++ entry sp, 48 ++#if XCHAL_NUM_AREGS > 16 ++ call12 1f ++ retw ++ .align 4 ++1: ++ .rept (XCHAL_NUM_AREGS - 24) / 12 ++ _entry sp, 48 ++ mov a12, a0 ++ .endr ++ _entry sp, 16 ++#if XCHAL_NUM_AREGS % 12 == 0 ++ mov a4, a4 ++#elif XCHAL_NUM_AREGS % 12 == 4 ++ mov a8, a8 ++#elif XCHAL_NUM_AREGS % 12 == 8 ++ mov a12, a12 ++#endif + retw ++#else ++ mov a8, a8 ++ retw ++#endif + .size __xtensa_libgcc_window_spill, .-__xtensa_libgcc_window_spill + #endif + +@@ -61,10 +80,7 @@ __xtensa_nonlocal_goto: + entry sp, 32 + + /* Flush registers. */ +- mov a5, a2 +- movi a2, 0 +- syscall +- mov a2, a5 ++ call8 __xtensa_libgcc_window_spill + + /* Because the save area for a0-a3 is stored one frame below + the one identified by a2, the only way to restore those +-- +1.8.1.4 + diff --git a/buildroot/package/gcc/5.5.0/874-xtensa-add-uclinux-support.patch b/buildroot/package/gcc/5.5.0/874-xtensa-add-uclinux-support.patch new file mode 100644 index 0000000..23db3d8 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/874-xtensa-add-uclinux-support.patch @@ -0,0 +1,174 @@ +From 70c2cb98fb129b4766b5da0f945dc41fd568c77a Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Sat, 22 Aug 2015 08:44:26 +0300 +Subject: [PATCH] xtensa: add uclinux support + +2015-10-03 Max Filippov +gcc/ + * config.gcc (xtensa*-*-uclinux*): New configuration. + * config/xtensa/uclinux.h: New file. + * config/xtensa/uclinux.opt: New file. + +libgcc/ + * config.host (xtensa*-*-uclinux*): New configuration. + +Signed-off-by: Max Filippov +--- +Backported from: r228450 + + gcc/config.gcc | 5 ++++ + gcc/config/xtensa/uclinux.h | 69 +++++++++++++++++++++++++++++++++++++++++++ + gcc/config/xtensa/uclinux.opt | 32 ++++++++++++++++++++ + libgcc/config.host | 5 ++++ + 4 files changed, 111 insertions(+) + create mode 100644 gcc/config/xtensa/uclinux.h + create mode 100644 gcc/config/xtensa/uclinux.opt + +diff --git a/gcc/config.gcc b/gcc/config.gcc +index c52f5a8..56797bd 100644 +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -2995,6 +2995,11 @@ xtensa*-*-linux*) + tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h" + tmake_file="${tmake_file} xtensa/t-xtensa" + ;; ++xtensa*-*-uclinux*) ++ tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h" ++ tmake_file="${tmake_file} xtensa/t-xtensa" ++ extra_options="${extra_options} xtensa/uclinux.opt" ++ ;; + am33_2.0-*-linux*) + tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h" + gas=yes gnu_ld=yes +diff --git a/gcc/config/xtensa/uclinux.h b/gcc/config/xtensa/uclinux.h +new file mode 100644 +index 0000000..4606020 +--- /dev/null ++++ b/gcc/config/xtensa/uclinux.h +@@ -0,0 +1,69 @@ ++/* Xtensa uClinux configuration. ++ Derived from the configuration for GCC for Intel i386 running Linux. ++ Copyright (C) 2001-2015 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC 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 3, or (at your option) any later ++version. ++ ++GCC 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 GCC; see the file COPYING3. If not see ++. */ ++ ++#undef TARGET_OS_CPP_BUILTINS ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ GNU_USER_TARGET_OS_CPP_BUILTINS (); \ ++ builtin_define ("__uClinux__"); \ ++ } \ ++ while (0) ++ ++#undef SUBTARGET_CPP_SPEC ++#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" ++ ++#undef SIZE_TYPE ++#define SIZE_TYPE "unsigned int" ++ ++#undef PTRDIFF_TYPE ++#define PTRDIFF_TYPE "int" ++ ++#undef WCHAR_TYPE ++#define WCHAR_TYPE "long int" ++ ++#undef WCHAR_TYPE_SIZE ++#define WCHAR_TYPE_SIZE 32 ++ ++#undef ASM_SPEC ++#define ASM_SPEC \ ++ "%{mtext-section-literals:--text-section-literals} \ ++ %{mno-text-section-literals:--no-text-section-literals} \ ++ %{mtarget-align:--target-align} \ ++ %{mno-target-align:--no-target-align} \ ++ %{mlongcalls:--longcalls} \ ++ %{mno-longcalls:--no-longcalls} \ ++ %{mauto-litpools:--auto-litpools} \ ++ %{mno-auto-litpools:--no-auto-litpools}" ++ ++#undef LINK_SPEC ++#define LINK_SPEC "%{!no-elf2flt:%{!elf2flt*:-elf2flt}}" ++ ++#undef LOCAL_LABEL_PREFIX ++#define LOCAL_LABEL_PREFIX "." ++ ++/* Always enable "-fpic" for Xtensa Linux. */ ++#define XTENSA_ALWAYS_PIC 1 ++ ++#undef TARGET_LIBC_HAS_FUNCTION ++#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function ++ ++#undef DBX_REGISTER_NUMBER ++ +diff --git a/gcc/config/xtensa/uclinux.opt b/gcc/config/xtensa/uclinux.opt +new file mode 100644 +index 0000000..95ef777 +--- /dev/null ++++ b/gcc/config/xtensa/uclinux.opt +@@ -0,0 +1,32 @@ ++; Xtensa uClinux options. ++ ++; Copyright (C) 2015 Free Software Foundation, Inc. ++; ++; This file is part of GCC. ++; ++; GCC 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 3, or (at your option) any later ++; version. ++; ++; GCC 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 GCC; see the file COPYING3. If not see ++; . ++ ++; See the GCC internals manual (options.texi) for a description of ++; this file's format. ++ ++; Please try to keep this file in ASCII collating order. ++ ++elf2flt ++Driver ++ ++elf2flt= ++Driver JoinedOrMissing ++ ++; This comment is to ensure we retain the blank line above. +diff --git a/libgcc/config.host b/libgcc/config.host +index 2c64756..2ee92c1 100644 +--- a/libgcc/config.host ++++ b/libgcc/config.host +@@ -1295,6 +1295,11 @@ xtensa*-*-linux*) + tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc" + md_unwind_header=xtensa/linux-unwind.h + ;; ++xtensa*-*-uclinux*) ++ tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc" ++ md_unwind_header=xtensa/linux-unwind.h ++ extra_parts="$extra_parts crtbeginS.o crtbeginT.o crtendS.o" ++ ;; + am33_2.0-*-linux*) + # Don't need crtbeginT.o from *-*-linux* default. + extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" +-- +1.8.1.4 + diff --git a/buildroot/package/gcc/5.5.0/875-xtensa-implement-trap-pattern.patch b/buildroot/package/gcc/5.5.0/875-xtensa-implement-trap-pattern.patch new file mode 100644 index 0000000..870b079 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/875-xtensa-implement-trap-pattern.patch @@ -0,0 +1,67 @@ +From 2b4b5775554c91a63ccae4ee566db696b633652e Mon Sep 17 00:00:00 2001 +From: jcmvbkbc +Date: Wed, 10 Jun 2015 15:07:40 +0000 +Subject: [PATCH] xtensa: implement trap pattern + +2015-06-10 Max Filippov +gcc/ + * config/xtensa/xtensa.h (TARGET_DEBUG): New definition. + * config/xtensa/xtensa.md (define_attr "type"): New type "trap". + (define_insn "trap"): New definition. + +Signed-off-by: Max Filippov + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224330 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + gcc/config/xtensa/xtensa.h | 1 + + gcc/config/xtensa/xtensa.md | 15 ++++++++++++++- + 2 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/gcc/config/xtensa/xtensa.h b/gcc/config/xtensa/xtensa.h +index 615f741..fb8702c 100644 +--- a/gcc/config/xtensa/xtensa.h ++++ b/gcc/config/xtensa/xtensa.h +@@ -67,6 +67,7 @@ extern unsigned xtensa_current_frame_size; + #define TARGET_THREADPTR XCHAL_HAVE_THREADPTR + #define TARGET_LOOPS XCHAL_HAVE_LOOPS + #define TARGET_WINDOWED_ABI (XSHAL_ABI == XTHAL_ABI_WINDOWED) ++#define TARGET_DEBUG XCHAL_HAVE_DEBUG + + #define TARGET_DEFAULT \ + ((XCHAL_HAVE_L32R ? 0 : MASK_CONST16) | \ +diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md +index 6d84384..a577aa3 100644 +--- a/gcc/config/xtensa/xtensa.md ++++ b/gcc/config/xtensa/xtensa.md +@@ -86,7 +86,7 @@ + ;; Attributes. + + (define_attr "type" +- "unknown,jump,call,load,store,move,arith,multi,nop,farith,fmadd,fconv,fload,fstore,mul16,mul32,div32,mac16,rsr,wsr,entry" ++ "unknown,jump,call,load,store,move,arith,multi,nop,farith,fmadd,fconv,fload,fstore,mul16,mul32,div32,mac16,rsr,wsr,entry,trap" + (const_string "unknown")) + + (define_attr "mode" +@@ -1764,6 +1764,19 @@ + [(set_attr "length" "0") + (set_attr "type" "nop")]) + ++(define_insn "trap" ++ [(trap_if (const_int 1) (const_int 0))] ++ "" ++{ ++ if (TARGET_DEBUG) ++ return "break\t1, 15"; ++ else ++ return (TARGET_DENSITY ? "ill.n" : "ill"); ++} ++ [(set_attr "type" "trap") ++ (set_attr "mode" "none") ++ (set_attr "length" "3")]) ++ + ;; Setting up a frame pointer is tricky for Xtensa because GCC doesn't + ;; know if a frame pointer is required until the reload pass, and + ;; because there may be an incoming argument value in the hard frame +-- +2.1.4 + diff --git a/buildroot/package/gcc/5.5.0/880-gcc-nios2-Add-IJMP_REGS-enum.patch b/buildroot/package/gcc/5.5.0/880-gcc-nios2-Add-IJMP_REGS-enum.patch new file mode 100644 index 0000000..7a8c843 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/880-gcc-nios2-Add-IJMP_REGS-enum.patch @@ -0,0 +1,103 @@ +From 920a898d2a04933c13eb808a513bc5822e91f70a Mon Sep 17 00:00:00 2001 +From: sandra +Date: Tue, 12 May 2015 15:57:22 +0000 +Subject: [PATCH] gcc/nios2: Add IJMP_REGS enum + +2015-05-12 Chung-Lin Tang + Sandra Loosemore + + gcc/ + * config/nios2/nios2.h (enum reg_class): Add IJMP_REGS enum + value. + (REG_CLASS_NAMES): Add "IJMP_REGS". + (REG_CLASS_CONTENTS): Add new entry for IJMP_REGS. + * config/nios2/nios2.md (indirect_jump,*tablejump): Adjust to + use new "c" register constraint. + * config/nios2/constraint.md (c): New register constraint + corresponding to IJMP_REGS. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223082 138bc75d-0d04-0410-961f-82ee72b054a4 + +[Romain: rebase on gcc 5.4] +Signed-off-by: Romain Naour +--- + gcc/config/nios2/constraints.md | 3 +++ + gcc/config/nios2/nios2.h | 11 +++++++---- + gcc/config/nios2/nios2.md | 4 ++-- + 3 files changed, 12 insertions(+), 6 deletions(-) + +diff --git a/gcc/config/nios2/constraints.md b/gcc/config/nios2/constraints.md +index f4bd9f7..735f892 100644 +--- a/gcc/config/nios2/constraints.md ++++ b/gcc/config/nios2/constraints.md +@@ -39,6 +39,9 @@ + + ;; Register constraints + ++(define_register_constraint "c" "IJMP_REGS" ++ "A register suitable for an indirect jump.") ++ + (define_register_constraint "j" "SIB_REGS" + "A register suitable for an indirect sibcall.") + +diff --git a/gcc/config/nios2/nios2.h b/gcc/config/nios2/nios2.h +index 117983d..7c329ae 100644 +--- a/gcc/config/nios2/nios2.h ++++ b/gcc/config/nios2/nios2.h +@@ -173,6 +173,7 @@ enum reg_class + { + NO_REGS, + SIB_REGS, ++ IJMP_REGS, + GP_REGS, + ALL_REGS, + LIM_REG_CLASSES +@@ -183,6 +184,7 @@ enum reg_class + #define REG_CLASS_NAMES \ + { "NO_REGS", \ + "SIB_REGS", \ ++ "IJMP_REGS", \ + "GP_REGS", \ + "ALL_REGS" } + +@@ -190,10 +192,11 @@ enum reg_class + + #define REG_CLASS_CONTENTS \ + { \ +- /* NO_REGS */ { 0, 0}, \ +- /* SIB_REGS */ { 0xfe0c, 0}, \ +- /* GP_REGS */ {~0, 0}, \ +- /* ALL_REGS */ {~0,~0} \ ++ /* NO_REGS */ { 0, 0}, \ ++ /* SIB_REGS */ { 0xfe0c, 0}, \ ++ /* IJMP_REGS */ { 0x7fffffff, 0}, \ ++ /* GP_REGS */ {~0, 0}, \ ++ /* ALL_REGS */ {~0,~0} \ + } + + +diff --git a/gcc/config/nios2/nios2.md b/gcc/config/nios2/nios2.md +index 7b35d269..36ef101 100644 +--- a/gcc/config/nios2/nios2.md ++++ b/gcc/config/nios2/nios2.md +@@ -697,7 +697,7 @@ + ; check or adjust for overflow. + + (define_insn "indirect_jump" +- [(set (pc) (match_operand:SI 0 "register_operand" "r"))] ++ [(set (pc) (match_operand:SI 0 "register_operand" "c"))] + "" + "jmp\\t%0" + [(set_attr "type" "control")]) +@@ -811,7 +811,7 @@ + + (define_insn "*tablejump" + [(set (pc) +- (match_operand:SI 0 "register_operand" "r")) ++ (match_operand:SI 0 "register_operand" "c")) + (use (label_ref (match_operand 1 "" "")))] + "" + "jmp\\t%0" +-- +2.5.5 + diff --git a/buildroot/package/gcc/5.5.0/890-fix-m68k-compile.patch b/buildroot/package/gcc/5.5.0/890-fix-m68k-compile.patch new file mode 100644 index 0000000..6e63de0 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/890-fix-m68k-compile.patch @@ -0,0 +1,15 @@ +remove unused header, which breaks the toolchain building + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-5.3.0.orig/libgcc/config/m68k/linux-atomic.c gcc-5.3.0/libgcc/config/m68k/linux-atomic.c +--- gcc-5.3.0.orig/libgcc/config/m68k/linux-atomic.c 2015-01-05 13:33:28.000000000 +0100 ++++ gcc-5.3.0/libgcc/config/m68k/linux-atomic.c 2016-03-19 09:25:07.000000000 +0100 +@@ -33,7 +33,6 @@ + using the kernel helper defined below. There is no support for + 64-bit operations yet. */ + +-#include + #include + + #ifndef __NR_atomic_cmpxchg_32 diff --git a/buildroot/package/gcc/5.5.0/891-fix-m68k-uclinux.patch b/buildroot/package/gcc/5.5.0/891-fix-m68k-uclinux.patch new file mode 100644 index 0000000..4e186bd --- /dev/null +++ b/buildroot/package/gcc/5.5.0/891-fix-m68k-uclinux.patch @@ -0,0 +1,18 @@ +avoids internal compiler error while compiling linux-atomic.c +See here: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53833 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-5.3.0.orig/libgcc/config.host gcc-5.3.0/libgcc/config.host +--- gcc-5.3.0.orig/libgcc/config.host 2015-10-01 14:01:18.000000000 +0200 ++++ gcc-5.3.0/libgcc/config.host 2016-04-26 21:30:25.353691745 +0200 +@@ -794,7 +794,7 @@ + m68k*-*-openbsd*) + ;; + m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc +- tmake_file="$tmake_file m68k/t-floatlib m68k/t-linux" ++ tmake_file="$tmake_file m68k/t-floatlib" + md_unwind_header=m68k/linux-unwind.h + ;; + m68k-*-linux*) # Motorola m68k's running GNU/Linux diff --git a/buildroot/package/gcc/5.5.0/900-libitm-fixes-for-musl-support.patch b/buildroot/package/gcc/5.5.0/900-libitm-fixes-for-musl-support.patch new file mode 100644 index 0000000..fdf4ee7 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/900-libitm-fixes-for-musl-support.patch @@ -0,0 +1,65 @@ +From: ktkachov +Date: Wed, 22 Apr 2015 14:11:25 +0000 (+0000) +Subject: libitm fixes for musl support +X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=e53a4d49c3d03ab8eaddb073cf972c1c46d75338 + +libitm fixes for musl support + +On behalf of Szabolcs.Nagy@arm.com + +2015-04-22 Gregor Richards + + * config/arm/hwcap.cc: Use fcntl.h instead of sys/fcntl.h. + * config/linux/x86/tls.h: Only use __GLIBC_PREREQ if defined. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222325 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +Index: b/libitm/config/arm/hwcap.cc +=================================================================== +--- a/libitm/config/arm/hwcap.cc ++++ b/libitm/config/arm/hwcap.cc +@@ -40,7 +40,7 @@ + + #ifdef __linux__ + #include +-#include ++#include + #include + + static void __attribute__((constructor)) +Index: b/libitm/config/linux/x86/tls.h +=================================================================== +--- a/libitm/config/linux/x86/tls.h ++++ b/libitm/config/linux/x86/tls.h +@@ -25,16 +25,19 @@ + #ifndef LIBITM_X86_TLS_H + #define LIBITM_X86_TLS_H 1 + +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) ++#if defined(__GLIBC_PREREQ) ++#if __GLIBC_PREREQ(2, 10) + /* Use slots in the TCB head rather than __thread lookups. + GLIBC has reserved words 10 through 13 for TM. */ + #define HAVE_ARCH_GTM_THREAD 1 + #define HAVE_ARCH_GTM_THREAD_DISP 1 + #endif ++#endif + + #include "config/generic/tls.h" + +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10) ++#if defined(__GLIBC_PREREQ) ++#if __GLIBC_PREREQ(2, 10) + namespace GTM HIDDEN { + + #ifdef __x86_64__ +@@ -101,5 +104,6 @@ + + } // namespace GTM + #endif /* >= GLIBC 2.10 */ ++#endif + + #endif // LIBITM_X86_TLS_H diff --git a/buildroot/package/gcc/5.5.0/901-fixincludes-update-for-musl-support.patch b/buildroot/package/gcc/5.5.0/901-fixincludes-update-for-musl-support.patch new file mode 100644 index 0000000..13c08d6 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/901-fixincludes-update-for-musl-support.patch @@ -0,0 +1,32 @@ +From: ktkachov +Date: Wed, 22 Apr 2015 14:18:16 +0000 (+0000) +Subject: fixincludes update for musl support +X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=2dc727de2e87c2756a514cbb43cea23c99deaa3d + +fixincludes update for musl support + +On behalf of Szabolcs.Nagy@arm.com + +2015-04-22 Gregor Richards + + * mkfixinc.sh: Add *-musl* with no fixes. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222327 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +Index: b/fixincludes/mkfixinc.sh +=================================================================== +--- a/fixincludes/mkfixinc.sh ++++ b/fixincludes/mkfixinc.sh +@@ -19,7 +19,8 @@ + powerpc-*-eabi* | \ + powerpc-*-rtems* | \ + powerpcle-*-eabisim* | \ +- powerpcle-*-eabi* ) ++ powerpcle-*-eabi* | \ ++ *-musl* ) + # IF there is no include fixing, + # THEN create a no-op fixer and exit + (echo "#! /bin/sh" ; echo "exit 0" ) > ${target} diff --git a/buildroot/package/gcc/5.5.0/902-unwind-fix-for-musl.patch b/buildroot/package/gcc/5.5.0/902-unwind-fix-for-musl.patch new file mode 100644 index 0000000..ef47054 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/902-unwind-fix-for-musl.patch @@ -0,0 +1,36 @@ +From: ktkachov +Date: Wed, 22 Apr 2015 14:20:01 +0000 (+0000) +Subject: unwind fix for musl +X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=a2e31d0681d8a47389b8a3552622fbd9827bcef4 + +unwind fix for musl + +On behalf of szabolcs.nagy@arm.com + +2015-04-22 Gregor Richards + Szabolcs Nagy + + * unwind-dw2-fde-dip.c (USE_PT_GNU_EH_FRAME): Define it on + Linux if target provides dl_iterate_phdr. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222328 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +Index: b/libgcc/unwind-dw2-fde-dip.c +=================================================================== +--- a/libgcc/unwind-dw2-fde-dip.c ++++ b/libgcc/unwind-dw2-fde-dip.c +@@ -59,6 +59,12 @@ + + #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ + && defined(TARGET_DL_ITERATE_PHDR) \ ++ && defined(__linux__) ++# define USE_PT_GNU_EH_FRAME ++#endif ++ ++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ ++ && defined(TARGET_DL_ITERATE_PHDR) \ + && (defined(__DragonFly__) || defined(__FreeBSD__)) + # define ElfW __ElfN + # define USE_PT_GNU_EH_FRAME diff --git a/buildroot/package/gcc/5.5.0/903-libstdc++-libgfortran-gthr-workaround-for-musl.patch b/buildroot/package/gcc/5.5.0/903-libstdc++-libgfortran-gthr-workaround-for-musl.patch new file mode 100644 index 0000000..c852131 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/903-libstdc++-libgfortran-gthr-workaround-for-musl.patch @@ -0,0 +1,80 @@ +From: ktkachov +Date: Wed, 22 Apr 2015 14:24:11 +0000 (+0000) +Subject: libstdc++, libgfortran gthr workaround for musl +X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=1e5f711c11cb80ce609db9e9c1d8b2da0f7b5b61 + +libstdc++, libgfortran gthr workaround for musl + +On behalf of szabolcs.nagy@arm.com + +[libstdc++-v3/] +2015-04-22 Szabolcs Nagy + + * config/os/generic/os_defines.h (_GLIBCXX_GTHREAD_USE_WEAK): Define. + * configure.host (os_include_dir): Set to "os/generic" for linux-musl*. + +[libgfortran/] +2015-04-22 Szabolcs Nagy + + * acinclude.m4 (GTHREAD_USE_WEAK): Define as 0 for *-*-musl*. + * configure: Regenerate. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222329 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +Index: b/libgfortran/acinclude.m4 +=================================================================== +--- a/libgfortran/acinclude.m4 ++++ b/libgfortran/acinclude.m4 +@@ -100,7 +100,7 @@ + [Define to 1 if the target supports #pragma weak]) + fi + case "$host" in +- *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* ) ++ *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* ) + AC_DEFINE(GTHREAD_USE_WEAK, 0, + [Define to 0 if the target shouldn't use #pragma weak]) + ;; +Index: b/libgfortran/configure +=================================================================== +--- a/libgfortran/configure ++++ b/libgfortran/configure +@@ -26447,7 +26447,7 @@ + + fi + case "$host" in +- *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* ) ++ *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* ) + + $as_echo "#define GTHREAD_USE_WEAK 0" >>confdefs.h + +Index: b/libstdc++-v3/config/os/generic/os_defines.h +=================================================================== +--- a/libstdc++-v3/config/os/generic/os_defines.h ++++ b/libstdc++-v3/config/os/generic/os_defines.h +@@ -33,4 +33,9 @@ + // System-specific #define, typedefs, corrections, etc, go here. This + // file will come before all others. + ++// Disable the weak reference logic in gthr.h for os/generic because it ++// is broken on every platform unless there is implementation specific ++// workaround in gthr-posix.h and at link-time for static linking. ++#define _GLIBCXX_GTHREAD_USE_WEAK 0 ++ + #endif +Index: b/libstdc++-v3/configure.host +=================================================================== +--- a/libstdc++-v3/configure.host ++++ b/libstdc++-v3/configure.host +@@ -271,6 +271,9 @@ + freebsd*) + os_include_dir="os/bsd/freebsd" + ;; ++ linux-musl*) ++ os_include_dir="os/generic" ++ ;; + gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) + if [ "$uclibc" = "yes" ]; then + os_include_dir="os/uclibc" diff --git a/buildroot/package/gcc/5.5.0/904-musl-libc-config.patch b/buildroot/package/gcc/5.5.0/904-musl-libc-config.patch new file mode 100644 index 0000000..8549140 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/904-musl-libc-config.patch @@ -0,0 +1,285 @@ +From: ktkachov +Date: Fri, 8 May 2015 08:25:47 +0000 (+0000) +Subject: [PATCH 2/13] musl libc config +X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=a9173ceabaf29c16f8ef226fbf98af373a4b2ceb + +[PATCH 2/13] musl libc config + +2015-05-08 Gregor Richards + Szabolcs Nagy + + * config.gcc (LIBC_MUSL): New tm_defines macro. + * config/linux.h (OPTION_MUSL): Define. + (MUSL_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER32,) + (MUSL_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKERX32,) + (INCLUDE_DEFAULTS_MUSL_GPP, INCLUDE_DEFAULTS_MUSL_LOCAL,) + (INCLUDE_DEFAULTS_MUSL_PREFIX, INCLUDE_DEFAULTS_MUSL_CROSS,) + (INCLUDE_DEFAULTS_MUSL_TOOL, INCLUDE_DEFAULTS_MUSL_NATIVE): Define. + * config/linux.opt (mmusl): New option. + * doc/invoke.texi (GNU/Linux Options): Document -mmusl. + * configure.ac (gcc_cv_libc_provides_ssp): Add *-*-musl*. + (gcc_cv_target_dl_iterate_phdr): Add *-linux-musl*. + * configure: Regenerate. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222904 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +Index: b/gcc/config.gcc +=================================================================== +--- a/gcc/config.gcc ++++ b/gcc/config.gcc +@@ -575,7 +575,7 @@ + esac + + # Common C libraries. +-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3" ++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" + + # 32-bit x86 processors supported by --with-arch=. Each processor + # MUST be separated by exactly one space. +@@ -720,6 +720,9 @@ + *-*-*uclibc*) + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" + ;; ++ *-*-*musl*) ++ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL" ++ ;; + *) + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" + ;; +Index: b/gcc/config/linux.h +=================================================================== +--- a/gcc/config/linux.h ++++ b/gcc/config/linux.h +@@ -32,10 +32,12 @@ + #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) + #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) + #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC) ++#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL) + #else + #define OPTION_GLIBC (linux_libc == LIBC_GLIBC) + #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC) + #define OPTION_BIONIC (linux_libc == LIBC_BIONIC) ++#define OPTION_MUSL (linux_libc == LIBC_MUSL) + #endif + + #define GNU_USER_TARGET_OS_CPP_BUILTINS() \ +@@ -50,21 +52,25 @@ + } while (0) + + /* Determine which dynamic linker to use depending on whether GLIBC or +- uClibc or Bionic is the default C library and whether +- -muclibc or -mglibc or -mbionic has been passed to change the default. */ ++ uClibc or Bionic or musl is the default C library and whether ++ -muclibc or -mglibc or -mbionic or -mmusl has been passed to change ++ the default. */ + +-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \ +- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}" ++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \ ++ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}" + + #if DEFAULT_LIBC == LIBC_GLIBC +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \ +- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B) ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \ ++ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M) + #elif DEFAULT_LIBC == LIBC_UCLIBC +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \ +- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B) ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \ ++ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M) + #elif DEFAULT_LIBC == LIBC_BIONIC +-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \ +- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U) ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \ ++ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M) ++#elif DEFAULT_LIBC == LIBC_MUSL ++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \ ++ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B) + #else + #error "Unsupported DEFAULT_LIBC" + #endif /* DEFAULT_LIBC */ +@@ -81,24 +87,100 @@ + #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker" + #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64" + #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32" ++/* Should be redefined for each target that supports musl. */ ++#define MUSL_DYNAMIC_LINKER "/dev/null" ++#define MUSL_DYNAMIC_LINKER32 "/dev/null" ++#define MUSL_DYNAMIC_LINKER64 "/dev/null" ++#define MUSL_DYNAMIC_LINKERX32 "/dev/null" + + #define GNU_USER_DYNAMIC_LINKER \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \ +- BIONIC_DYNAMIC_LINKER) ++ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER) + #define GNU_USER_DYNAMIC_LINKER32 \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \ +- BIONIC_DYNAMIC_LINKER32) ++ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32) + #define GNU_USER_DYNAMIC_LINKER64 \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \ +- BIONIC_DYNAMIC_LINKER64) ++ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64) + #define GNU_USER_DYNAMIC_LINKERX32 \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \ +- BIONIC_DYNAMIC_LINKERX32) ++ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32) + + /* Whether we have Bionic libc runtime */ + #undef TARGET_HAS_BIONIC + #define TARGET_HAS_BIONIC (OPTION_BIONIC) + ++/* musl avoids problematic includes by rearranging the include directories. ++ * Unfortunately, this is mostly duplicated from cppdefault.c */ ++#if DEFAULT_LIBC == LIBC_MUSL ++#define INCLUDE_DEFAULTS_MUSL_GPP \ ++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \ ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \ ++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \ ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \ ++ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \ ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, ++ ++#ifdef LOCAL_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_LOCAL \ ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \ ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, ++#else ++#define INCLUDE_DEFAULTS_MUSL_LOCAL ++#endif ++ ++#ifdef PREFIX_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_PREFIX \ ++ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_PREFIX ++#endif ++ ++#ifdef CROSS_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_CROSS \ ++ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_CROSS ++#endif ++ ++#ifdef TOOL_INCLUDE_DIR ++#define INCLUDE_DEFAULTS_MUSL_TOOL \ ++ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0}, ++#else ++#define INCLUDE_DEFAULTS_MUSL_TOOL ++#endif ++ ++#ifdef NATIVE_SYSTEM_HEADER_DIR ++#define INCLUDE_DEFAULTS_MUSL_NATIVE \ ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \ ++ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 }, ++#else ++#define INCLUDE_DEFAULTS_MUSL_NATIVE ++#endif ++ ++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT) ++# undef INCLUDE_DEFAULTS_MUSL_LOCAL ++# define INCLUDE_DEFAULTS_MUSL_LOCAL ++# undef INCLUDE_DEFAULTS_MUSL_NATIVE ++# define INCLUDE_DEFAULTS_MUSL_NATIVE ++#else ++# undef INCLUDE_DEFAULTS_MUSL_CROSS ++# define INCLUDE_DEFAULTS_MUSL_CROSS ++#endif ++ ++#undef INCLUDE_DEFAULTS ++#define INCLUDE_DEFAULTS \ ++ { \ ++ INCLUDE_DEFAULTS_MUSL_GPP \ ++ INCLUDE_DEFAULTS_MUSL_PREFIX \ ++ INCLUDE_DEFAULTS_MUSL_CROSS \ ++ INCLUDE_DEFAULTS_MUSL_TOOL \ ++ INCLUDE_DEFAULTS_MUSL_NATIVE \ ++ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \ ++ { 0, 0, 0, 0, 0, 0 } \ ++ } ++#endif ++ + #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */ + /* This is a *uclinux* target. We don't define below macros to normal linux + versions, because doing so would require *uclinux* targets to include +Index: b/gcc/config/linux.opt +=================================================================== +--- a/gcc/config/linux.opt ++++ b/gcc/config/linux.opt +@@ -28,5 +28,9 @@ + Use GNU C library + + muclibc +-Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic) ++Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mmusl) + Use uClibc C library ++ ++mmusl ++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mbionic) ++Use musl C library +Index: b/gcc/configure +=================================================================== +--- a/gcc/configure ++++ b/gcc/configure +@@ -27809,6 +27813,9 @@ + gcc_cv_target_dl_iterate_phdr=no + fi + ;; ++ *-linux-musl*) ++ gcc_cv_target_dl_iterate_phdr=yes ++ ;; + esac + + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then +Index: b/gcc/configure.ac +=================================================================== +--- a/gcc/configure.ac ++++ b/gcc/configure.ac +@@ -5298,6 +5302,9 @@ + gcc_cv_target_dl_iterate_phdr=no + fi + ;; ++ *-linux-musl*) ++ gcc_cv_target_dl_iterate_phdr=yes ++ ;; + esac + GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR]) + if test x$gcc_cv_target_dl_iterate_phdr = xyes; then +Index: b/gcc/doc/invoke.texi +=================================================================== +--- a/gcc/doc/invoke.texi ++++ b/gcc/doc/invoke.texi +@@ -667,7 +667,7 @@ + -mcpu=@var{cpu}} + + @emph{GNU/Linux Options} +-@gccoptlist{-mglibc -muclibc -mbionic -mandroid @gol ++@gccoptlist{-mglibc -muclibc -mmusl -mbionic -mandroid @gol + -tno-android-cc -tno-android-ld} + + @emph{H8/300 Options} +@@ -15324,13 +15324,19 @@ + @item -mglibc + @opindex mglibc + Use the GNU C library. This is the default except +-on @samp{*-*-linux-*uclibc*} and @samp{*-*-linux-*android*} targets. ++on @samp{*-*-linux-*uclibc*}, @samp{*-*-linux-*musl*} and ++@samp{*-*-linux-*android*} targets. + + @item -muclibc + @opindex muclibc + Use uClibc C library. This is the default on + @samp{*-*-linux-*uclibc*} targets. + ++@item -mmusl ++@opindex mmusl ++Use the musl C library. This is the default on ++@samp{*-*-linux-*musl*} targets. ++ + @item -mbionic + @opindex mbionic + Use Bionic C library. This is the default on diff --git a/buildroot/package/gcc/5.5.0/905-add-musl-support-to-gcc.patch b/buildroot/package/gcc/5.5.0/905-add-musl-support-to-gcc.patch new file mode 100644 index 0000000..92e7436 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/905-add-musl-support-to-gcc.patch @@ -0,0 +1,130 @@ +From: ktkachov +Date: Fri, 8 May 2015 08:30:40 +0000 (+0000) +Subject: [PATCH 0/13] Add musl support to GCC +X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=f2d678afa5b8385d763b93772d73d6bf80a9739e + +[PATCH 0/13] Add musl support to GCC + +2015-05-08 Szabolcs Nagy + + * config/glibc-stdint.h (OPTION_MUSL): Define. + (INT_FAST16_TYPE, INT_FAST32_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE): + Change the definition based on OPTION_MUSL for 64 bit targets. + * config/linux.h (OPTION_MUSL): Redefine. + * config/alpha/linux.h (OPTION_MUSL): Redefine. + * config/rs6000/linux.h (OPTION_MUSL): Redefine. + * config/rs6000/linux64.h (OPTION_MUSL): Redefine. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222905 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +Index: b/gcc/config/alpha/linux.h +=================================================================== +--- a/gcc/config/alpha/linux.h ++++ b/gcc/config/alpha/linux.h +@@ -61,10 +61,14 @@ + #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) + #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) + #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC) ++#undef OPTION_MUSL ++#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL) + #else + #define OPTION_GLIBC (linux_libc == LIBC_GLIBC) + #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC) + #define OPTION_BIONIC (linux_libc == LIBC_BIONIC) ++#undef OPTION_MUSL ++#define OPTION_MUSL (linux_libc == LIBC_MUSL) + #endif + + /* Determine what functions are present at the runtime; +Index: b/gcc/config/glibc-stdint.h +=================================================================== +--- a/gcc/config/glibc-stdint.h ++++ b/gcc/config/glibc-stdint.h +@@ -22,6 +22,12 @@ + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + . */ + ++/* Systems using musl libc should use this header and make sure ++ OPTION_MUSL is defined correctly before using the TYPE macros. */ ++#ifndef OPTION_MUSL ++#define OPTION_MUSL 0 ++#endif ++ + #define SIG_ATOMIC_TYPE "int" + + #define INT8_TYPE "signed char" +@@ -43,12 +49,12 @@ + #define UINT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int") + + #define INT_FAST8_TYPE "signed char" +-#define INT_FAST16_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int") +-#define INT_FAST32_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int") ++#define INT_FAST16_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long int" : "int") ++#define INT_FAST32_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long int" : "int") + #define INT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int") + #define UINT_FAST8_TYPE "unsigned char" +-#define UINT_FAST16_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int") +-#define UINT_FAST32_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int") ++#define UINT_FAST16_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long unsigned int" : "unsigned int") ++#define UINT_FAST32_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long unsigned int" : "unsigned int") + #define UINT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int") + + #define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int") +Index: b/gcc/config/linux.h +=================================================================== +--- a/gcc/config/linux.h ++++ b/gcc/config/linux.h +@@ -32,11 +32,13 @@ + #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) + #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) + #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC) ++#undef OPTION_MUSL + #define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL) + #else + #define OPTION_GLIBC (linux_libc == LIBC_GLIBC) + #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC) + #define OPTION_BIONIC (linux_libc == LIBC_BIONIC) ++#undef OPTION_MUSL + #define OPTION_MUSL (linux_libc == LIBC_MUSL) + #endif + +Index: b/gcc/config/rs6000/linux.h +=================================================================== +--- a/gcc/config/rs6000/linux.h ++++ b/gcc/config/rs6000/linux.h +@@ -30,10 +30,14 @@ + #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) + #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) + #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC) ++#undef OPTION_MUSL ++#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL) + #else + #define OPTION_GLIBC (linux_libc == LIBC_GLIBC) + #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC) + #define OPTION_BIONIC (linux_libc == LIBC_BIONIC) ++#undef OPTION_MUSL ++#define OPTION_MUSL (linux_libc == LIBC_MUSL) + #endif + + /* Determine what functions are present at the runtime; +Index: b/gcc/config/rs6000/linux64.h +=================================================================== +--- a/gcc/config/rs6000/linux64.h ++++ b/gcc/config/rs6000/linux64.h +@@ -299,10 +299,14 @@ + #define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC) + #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC) + #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC) ++#undef OPTION_MUSL ++#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL) + #else + #define OPTION_GLIBC (linux_libc == LIBC_GLIBC) + #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC) + #define OPTION_BIONIC (linux_libc == LIBC_BIONIC) ++#undef OPTION_MUSL ++#define OPTION_MUSL (linux_libc == LIBC_MUSL) + #endif + + /* Determine what functions are present at the runtime; diff --git a/buildroot/package/gcc/5.5.0/906-mips-musl-support.patch b/buildroot/package/gcc/5.5.0/906-mips-musl-support.patch new file mode 100644 index 0000000..6b473f9 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/906-mips-musl-support.patch @@ -0,0 +1,37 @@ +From: ktkachov +Date: Fri, 8 May 2015 15:16:50 +0000 (+0000) +Subject: [PATCH 6/13] mips musl support +X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=2550b6a866c887472b587bef87d433c51cf1ebc8 + +[PATCH 6/13] mips musl support + +2015-05-08 Gregor Richards + Szabolcs Nagy + + * config/mips/linux.h (MUSL_DYNAMIC_LINKER32): Define. + (MUSL_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKERN32): Define. + (GNU_USER_DYNAMIC_LINKERN32): Update. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222915 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +Index: b/gcc/config/mips/linux.h +=================================================================== +--- a/gcc/config/mips/linux.h ++++ b/gcc/config/mips/linux.h +@@ -37,7 +37,13 @@ + #define UCLIBC_DYNAMIC_LINKERN32 \ + "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}" + ++#undef MUSL_DYNAMIC_LINKER32 ++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-mips%{EL:el}%{msoft-float:-sf}.so.1" ++#undef MUSL_DYNAMIC_LINKER64 ++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-mips64%{EL:el}%{msoft-float:-sf}.so.1" ++#define MUSL_DYNAMIC_LINKERN32 "/lib/ld-musl-mipsn32%{EL:el}%{msoft-float:-sf}.so.1" ++ + #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32" + #define GNU_USER_DYNAMIC_LINKERN32 \ + CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \ +- BIONIC_DYNAMIC_LINKERN32) ++ BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKERN32) diff --git a/buildroot/package/gcc/5.5.0/907-x86-musl-support.patch b/buildroot/package/gcc/5.5.0/907-x86-musl-support.patch new file mode 100644 index 0000000..3f2fe5d --- /dev/null +++ b/buildroot/package/gcc/5.5.0/907-x86-musl-support.patch @@ -0,0 +1,45 @@ +From: ktkachov +Date: Fri, 15 May 2015 13:20:01 +0000 (+0000) +Subject: [PATCH 9/13] x86 musl support +X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=5551c8d927c17f60837f15f8dfe46f945ba3fa9c + +[PATCH 9/13] x86 musl support + +On behalf of Szabolcs Nagy. + +2015-05-15 Gregor Richards + + * config/i386/linux.h (MUSL_DYNAMIC_LINKER): Define. + * config/i386/linux64.h (MUSL_DYNAMIC_LINKER32): Define. + (MUSL_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKERX32): Define. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223218 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +Index: b/gcc/config/i386/linux.h +=================================================================== +--- a/gcc/config/i386/linux.h ++++ b/gcc/config/i386/linux.h +@@ -21,3 +21,6 @@ + + #define GNU_USER_LINK_EMULATION "elf_i386" + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" ++ ++#undef MUSL_DYNAMIC_LINKER ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1" +Index: b/gcc/config/i386/linux64.h +=================================================================== +--- a/gcc/config/i386/linux64.h ++++ b/gcc/config/i386/linux64.h +@@ -30,3 +30,10 @@ + #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2" + #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2" + #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2" ++ ++#undef MUSL_DYNAMIC_LINKER32 ++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1" ++#undef MUSL_DYNAMIC_LINKER64 ++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1" ++#undef MUSL_DYNAMIC_LINKERX32 ++#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1" diff --git a/buildroot/package/gcc/5.5.0/908-arm-musl-support.patch b/buildroot/package/gcc/5.5.0/908-arm-musl-support.patch new file mode 100644 index 0000000..906355a --- /dev/null +++ b/buildroot/package/gcc/5.5.0/908-arm-musl-support.patch @@ -0,0 +1,45 @@ +From: ktkachov +Date: Wed, 27 May 2015 13:17:11 +0000 (+0000) +Subject: [PATCH 4/13] arm musl support +X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=de799bd087ab9a179768fea75bd195a31d3432a4 + +[PATCH 4/13] arm musl support + +On behalf of szabolcs.nagy@arm.com + +2015-05-27 Gregor Richards + + * config/arm/linux-eabi.h (MUSL_DYNAMIC_LINKER): Define. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223749 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +Index: b/gcc/config/arm/linux-eabi.h +=================================================================== +--- a/gcc/config/arm/linux-eabi.h ++++ b/gcc/config/arm/linux-eabi.h +@@ -77,6 +77,23 @@ + %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \ + %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}" + ++/* For ARM musl currently supports four dynamic linkers: ++ - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI ++ - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI ++ - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB ++ - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB ++ musl does not support the legacy OABI mode. ++ All the dynamic linkers live in /lib. ++ We default to soft-float, EL. */ ++#undef MUSL_DYNAMIC_LINKER ++#if TARGET_BIG_ENDIAN_DEFAULT ++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}" ++#else ++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}" ++#endif ++#define MUSL_DYNAMIC_LINKER \ ++ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1" ++ + /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ + #undef LINK_SPEC diff --git a/buildroot/package/gcc/5.5.0/909-aarch64-musl-support.patch b/buildroot/package/gcc/5.5.0/909-aarch64-musl-support.patch new file mode 100644 index 0000000..3d032f5 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/909-aarch64-musl-support.patch @@ -0,0 +1,33 @@ +From: jgreenhalgh +Date: Wed, 27 May 2015 16:46:39 +0000 (+0000) +Subject: [PATCH 3/13] aarch64 musl support +X-Git-Url: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=b3ff21cf0531be91bc3fb8200296a7633090ec78 + +[PATCH 3/13] aarch64 musl support + +gcc/Changelog: + +2015-05-27 Gregor Richards + Szabolcs Nagy + + * config/aarch64/aarch64-linux.h (MUSL_DYNAMIC_LINKER): Define. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223766 138bc75d-0d04-0410-961f-82ee72b054a4 +--- + +Index: b/gcc/config/aarch64/aarch64-linux.h +=================================================================== +--- a/gcc/config/aarch64/aarch64-linux.h ++++ b/gcc/config/aarch64/aarch64-linux.h +@@ -23,6 +23,9 @@ + + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1" + ++#undef MUSL_DYNAMIC_LINKER ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1" ++ + #undef ASAN_CC1_SPEC + #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}" + diff --git a/buildroot/package/gcc/5.5.0/910-microblaze-musl-and-uclibc.patch b/buildroot/package/gcc/5.5.0/910-microblaze-musl-and-uclibc.patch new file mode 100644 index 0000000..6fe4993 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/910-microblaze-musl-and-uclibc.patch @@ -0,0 +1,36 @@ +Add dynamic linker support for uClibc-ng/musl + +Signed-off-by: Waldemar Brodkorb + + +diff -Nur gcc-5.4.0.orig/gcc/config/microblaze/linux.h gcc-5.4.0/gcc/config/microblaze/linux.h +--- gcc-5.4.0.orig/gcc/config/microblaze/linux.h 2015-05-28 16:08:19.000000000 +0200 ++++ gcc-5.4.0/gcc/config/microblaze/linux.h 2016-10-23 17:09:46.962010871 +0200 +@@ -28,7 +28,26 @@ + #undef TLS_NEEDS_GOT + #define TLS_NEEDS_GOT 1 + +-#define DYNAMIC_LINKER "/lib/ld.so.1" ++#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" ++#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" ++ ++#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */ ++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}" ++#else ++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}" ++#endif ++ ++#undef MUSL_DYNAMIC_LINKER ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1" ++ ++#if DEFAULT_LIBC == LIBC_UCLIBC ++#define DYNAMIC_LINKER UCLIBC_DYNAMIC_LINKER ++#elif DEFAULT_LIBC == LIBC_MUSL ++#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER ++#else ++#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER ++#endif ++ + #undef SUBTARGET_EXTRA_SPECS + #define SUBTARGET_EXTRA_SPECS \ + { "dynamic_linker", DYNAMIC_LINKER } diff --git a/buildroot/package/gcc/5.5.0/911-ppc-musl-support.patch b/buildroot/package/gcc/5.5.0/911-ppc-musl-support.patch new file mode 100644 index 0000000..f4905a4 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/911-ppc-musl-support.patch @@ -0,0 +1,75 @@ +Add support for musl on ppc32 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-5.4.0.orig/gcc/config/rs6000/sysv4.h gcc-5.4.0/gcc/config/rs6000/sysv4.h +--- gcc-5.4.0.orig/gcc/config/rs6000/sysv4.h 2015-09-24 15:46:45.000000000 +0200 ++++ gcc-5.4.0/gcc/config/rs6000/sysv4.h 2016-11-27 13:12:33.226953738 +0100 +@@ -537,6 +537,9 @@ + #ifndef CC1_SECURE_PLT_DEFAULT_SPEC + #define CC1_SECURE_PLT_DEFAULT_SPEC "" + #endif ++#ifndef LINK_SECURE_PLT_DEFAULT_SPEC ++#define LINK_SECURE_PLT_DEFAULT_SPEC "" ++#endif + + /* Pass -G xxx to the compiler. */ + #undef CC1_SPEC +@@ -757,17 +760,23 @@ + + #define LINK_START_LINUX_SPEC "" + ++#define MUSL_DYNAMIC_LINKER_E ENDIAN_SELECT("","le","") ++ + #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" + #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" ++#define MUSL_DYNAMIC_LINKER \ ++ "/lib/ld-musl-powerpc" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-sf}.so.1" + #if DEFAULT_LIBC == LIBC_UCLIBC +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}" ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}" ++#elif DEFAULT_LIBC == LIBC_MUSL ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}" + #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC +-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}" ++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}" + #else + #error "Unsupported DEFAULT_LIBC" + #endif + #define GNU_USER_DYNAMIC_LINKER \ +- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER) ++ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER) + + #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ + %{rdynamic:-export-dynamic} \ +@@ -889,6 +898,7 @@ + { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ + { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ + { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \ ++ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \ + { "cpp_os_ads", CPP_OS_ADS_SPEC }, \ + { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ + { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ +diff -Nur gcc-5.4.0.orig/gcc/config/rs6000/sysv4le.h gcc-5.4.0/gcc/config/rs6000/sysv4le.h +--- gcc-5.4.0.orig/gcc/config/rs6000/sysv4le.h 2015-09-24 15:46:45.000000000 +0200 ++++ gcc-5.4.0/gcc/config/rs6000/sysv4le.h 2016-11-27 13:12:33.226953738 +0100 +@@ -31,3 +31,5 @@ + /* Little-endian PowerPC64 Linux uses the ELF v2 ABI by default. */ + #define LINUX64_DEFAULT_ABI_ELFv2 + ++#undef MUSL_DYNAMIC_LINKER_E ++#define MUSL_DYNAMIC_LINKER_E ENDIAN_SELECT("","le","le") +diff -Nur gcc-5.4.0.orig/gcc/config.gcc gcc-5.4.0/gcc/config.gcc +--- gcc-5.4.0.orig/gcc/config.gcc 2015-09-10 16:17:53.000000000 +0200 ++++ gcc-5.4.0/gcc/config.gcc 2016-11-27 13:14:17.149638148 +0100 +@@ -2413,6 +2413,10 @@ + powerpc*-*-linux*paired*) + tm_file="${tm_file} rs6000/750cl.h" ;; + esac ++ case ${target} in ++ powerpc*-*-linux*-musl*) ++ enable_secureplt=yes ;; ++ esac + if test x${enable_secureplt} = xyes; then + tm_file="rs6000/secureplt.h ${tm_file}" + fi diff --git a/buildroot/package/gcc/5.5.0/912-sh-musl-support.patch b/buildroot/package/gcc/5.5.0/912-sh-musl-support.patch new file mode 100644 index 0000000..6fdfacc --- /dev/null +++ b/buildroot/package/gcc/5.5.0/912-sh-musl-support.patch @@ -0,0 +1,50 @@ +From 6e9cad5fc3bdd0a1fa24ae172d4d4c1e3179a51c Mon Sep 17 00:00:00 2001 +From: nsz +Date: Tue, 20 Oct 2015 18:13:15 +0000 +Subject: [PATCH] musl support for sh + + * config/sh/linux.h (MUSL_DYNAMIC_LINKER): Define. + (MUSL_DYNAMIC_LINKER_E, MUSL_DYNAMIC_LINKER_FP): Define. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229095 138bc75d-0d04-0410-961f-82ee72b054a4 +[Thomas: backport from gcc 6.x] +Signed-off-by: Thomas Petazzoni +--- + gcc/config/sh/linux.h | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h +index 0f5d614..61cf777 100644 +--- a/gcc/config/sh/linux.h ++++ b/gcc/config/sh/linux.h +@@ -43,6 +43,27 @@ along with GCC; see the file COPYING3. If not see + + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack + ++#if TARGET_ENDIAN_DEFAULT == MASK_LITTLE_ENDIAN ++#define MUSL_DYNAMIC_LINKER_E "%{mb:eb}" ++#else ++#define MUSL_DYNAMIC_LINKER_E "%{!ml:eb}" ++#endif ++ ++#if TARGET_CPU_DEFAULT & (MASK_HARD_SH2A_DOUBLE | MASK_SH4) ++/* "-nofpu" if any nofpu option is specified. */ ++#define MUSL_DYNAMIC_LINKER_FP \ ++ "%{m1|m2|m2a-nofpu|m3|m4-nofpu|m4-100-nofpu|m4-200-nofpu|m4-300-nofpu|" \ ++ "m4-340|m4-400|m4-500|m4al:-nofpu}" ++#else ++/* "-nofpu" if none of the hard fpu options are specified. */ ++#define MUSL_DYNAMIC_LINKER_FP "%{m2a|m4|m4-100|m4-200|m4-300|m4a:;:-nofpu}" ++#endif ++ ++#undef MUSL_DYNAMIC_LINKER ++#define MUSL_DYNAMIC_LINKER \ ++ "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E MUSL_DYNAMIC_LINKER_FP \ ++ "%{mfdpic:-fdpic}.so.1" ++ + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + + #undef SUBTARGET_LINK_EMUL_SUFFIX +-- +2.7.4 + diff --git a/buildroot/package/gcc/5.5.0/930-libgcc-disable-split-stack-nothreads.patch b/buildroot/package/gcc/5.5.0/930-libgcc-disable-split-stack-nothreads.patch new file mode 100644 index 0000000..07f9a73 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/930-libgcc-disable-split-stack-nothreads.patch @@ -0,0 +1,14 @@ +disable split-stack for non-thread builds + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-5.3.0.orig/libgcc/config/t-stack gcc-5.3.0/libgcc/config/t-stack +--- gcc-5.3.0.orig/libgcc/config/t-stack 2010-10-01 21:31:49.000000000 +0200 ++++ gcc-5.3.0/libgcc/config/t-stack 2016-03-07 03:25:32.000000000 +0100 +@@ -1,4 +1,6 @@ + # Makefile fragment to provide generic support for -fsplit-stack. + # This should be used in config.host for any host which supports + # -fsplit-stack. ++ifeq ($(enable_threads),yes) + LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c ++endif diff --git a/buildroot/package/gcc/5.5.0/940-uclinux-enable-threads.patch b/buildroot/package/gcc/5.5.0/940-uclinux-enable-threads.patch new file mode 100644 index 0000000..490a55b --- /dev/null +++ b/buildroot/package/gcc/5.5.0/940-uclinux-enable-threads.patch @@ -0,0 +1,19 @@ +Enable POSIX threads for uClinux targets +Reported upstream: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71721 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-5.4.0.orig/gcc/config.gcc gcc-5.4.0/gcc/config.gcc +--- gcc-5.4.0.orig/gcc/config.gcc 2015-09-10 16:17:53.000000000 +0200 ++++ gcc-5.4.0/gcc/config.gcc 2016-07-01 21:26:02.772958441 +0200 +@@ -808,6 +808,9 @@ + *-*-uclinux*) + extra_options="$extra_options gnu-user.opt" + use_gcc_stdint=wrap ++ case ${enable_threads} in ++ "" | yes | posix) thread_file='posix' ;; ++ esac + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC" + ;; + *-*-rdos*) diff --git a/buildroot/package/gcc/5.5.0/941-mips-Add-support-for-mips-r6-musl.patch b/buildroot/package/gcc/5.5.0/941-mips-Add-support-for-mips-r6-musl.patch new file mode 100644 index 0000000..337d376 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/941-mips-Add-support-for-mips-r6-musl.patch @@ -0,0 +1,43 @@ +From 83717065090bb8b954556d1216dd9dc397dc0243 Mon Sep 17 00:00:00 2001 +From: nsz +Date: Thu, 25 Aug 2016 14:13:02 +0000 +Subject: [PATCH] [mips] Add support for mips*r6-*-musl + +gcc/ + * config/mips/linux.h (MUSL_DYNAMIC_LINKER32): Update. + (MUSL_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKERN32): Update. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239760 138bc75d-0d04-0410-961f-82ee72b054a4 + +[Vincent: tweak to not patch ChangeLog] + +Signed-off-by: Vicente Olivert Riera +--- + gcc/config/mips/linux.h | 9 ++++++--- + 1 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h +index fa253b6..dc51c45 100644 +--- a/gcc/config/mips/linux.h ++++ b/gcc/config/mips/linux.h +@@ -38,10 +38,13 @@ along with GCC; see the file COPYING3. If not see + "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}" + + #undef MUSL_DYNAMIC_LINKER32 +-#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-mips%{EL:el}%{msoft-float:-sf}.so.1" ++#define MUSL_DYNAMIC_LINKER32 \ ++ "/lib/ld-musl-mips%{mips32r6|mips64r6:r6}%{EL:el}%{msoft-float:-sf}.so.1" + #undef MUSL_DYNAMIC_LINKER64 +-#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-mips64%{EL:el}%{msoft-float:-sf}.so.1" +-#define MUSL_DYNAMIC_LINKERN32 "/lib/ld-musl-mipsn32%{EL:el}%{msoft-float:-sf}.so.1" ++#define MUSL_DYNAMIC_LINKER64 \ ++ "/lib/ld-musl-mips64%{mips64r6:r6}%{EL:el}%{msoft-float:-sf}.so.1" ++#define MUSL_DYNAMIC_LINKERN32 \ ++ "/lib/ld-musl-mipsn32%{mips64r6:r6}%{EL:el}%{msoft-float:-sf}.so.1" + + #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32" + #define GNU_USER_DYNAMIC_LINKERN32 \ +-- +2.10.0 + diff --git a/buildroot/package/gcc/6.4.0/100-uclibc-conf.patch b/buildroot/package/gcc/6.4.0/100-uclibc-conf.patch new file mode 100644 index 0000000..73d1f0d --- /dev/null +++ b/buildroot/package/gcc/6.4.0/100-uclibc-conf.patch @@ -0,0 +1,15 @@ +Index: b/contrib/regression/objs-gcc.sh +=================================================================== +--- a/contrib/regression/objs-gcc.sh ++++ b/contrib/regression/objs-gcc.sh +@@ -106,6 +106,10 @@ + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] ++ then ++ make all-gdb all-dejagnu all-ld || exit 1 ++ make install-gdb install-dejagnu install-ld || exit 1 + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then + make bootstrap || exit 1 + make install || exit 1 diff --git a/buildroot/package/gcc/6.4.0/301-missing-execinfo_h.patch b/buildroot/package/gcc/6.4.0/301-missing-execinfo_h.patch new file mode 100644 index 0000000..2d0e7ba --- /dev/null +++ b/buildroot/package/gcc/6.4.0/301-missing-execinfo_h.patch @@ -0,0 +1,13 @@ +Index: b/boehm-gc/include/gc.h +=================================================================== +--- a/boehm-gc/include/gc.h ++++ b/boehm-gc/include/gc.h +@@ -503,7 +503,7 @@ + #if defined(__linux__) || defined(__GLIBC__) + # include + # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ +- && !defined(__ia64__) ++ && !defined(__ia64__) && !defined(__UCLIBC__) + # ifndef GC_HAVE_BUILTIN_BACKTRACE + # define GC_HAVE_BUILTIN_BACKTRACE + # endif diff --git a/buildroot/package/gcc/6.4.0/810-arm-softfloat-libgcc.patch b/buildroot/package/gcc/6.4.0/810-arm-softfloat-libgcc.patch new file mode 100644 index 0000000..5efa7fd --- /dev/null +++ b/buildroot/package/gcc/6.4.0/810-arm-softfloat-libgcc.patch @@ -0,0 +1,30 @@ +Index: b/gcc/config/arm/linux-elf.h +=================================================================== +--- a/gcc/config/arm/linux-elf.h ++++ b/gcc/config/arm/linux-elf.h +@@ -60,7 +60,7 @@ + %{shared:-lc} \ + %{!shared:%{profile:-lc_p}%{!profile:-lc}}" + +-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc" ++#define LIBGCC_SPEC "-lgcc" + + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + +Index: b/libgcc/config/arm/t-linux +=================================================================== +--- a/libgcc/config/arm/t-linux ++++ b/libgcc/config/arm/t-linux +@@ -1,6 +1,11 @@ + LIB1ASMSRC = arm/lib1funcs.S + LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ +- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 ++ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \ ++ _arm_addsubdf3 _arm_addsubsf3 \ ++ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ ++ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \ ++ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \ ++ _arm_fixsfsi _arm_fixunssfsi + + # Just for these, we omit the frame pointer since it makes such a big + # difference. diff --git a/buildroot/package/gcc/6.4.0/830-arm_unbreak_armv4t.patch b/buildroot/package/gcc/6.4.0/830-arm_unbreak_armv4t.patch new file mode 100644 index 0000000..b730059 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/830-arm_unbreak_armv4t.patch @@ -0,0 +1,15 @@ +http://sourceware.org/ml/crossgcc/2008-05/msg00009.html + +Index: b/gcc/config/arm/linux-eabi.h +=================================================================== +--- a/gcc/config/arm/linux-eabi.h ++++ b/gcc/config/arm/linux-eabi.h +@@ -45,7 +45,7 @@ + The ARM10TDMI core is the default for armv5t, so set + SUBTARGET_CPU_DEFAULT to achieve this. */ + #undef SUBTARGET_CPU_DEFAULT +-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi ++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi + + /* TARGET_BIG_ENDIAN_DEFAULT is set in + config.gcc for big endian configurations. */ diff --git a/buildroot/package/gcc/6.4.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch b/buildroot/package/gcc/6.4.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch new file mode 100644 index 0000000..af9fb1d --- /dev/null +++ b/buildroot/package/gcc/6.4.0/831-ARM-PR-target-70473-Reduce-size-of-Cortex-A8-automat.patch @@ -0,0 +1,69 @@ +From 07453188b18a2cbe815917dbb893b4ebfdd793b6 Mon Sep 17 00:00:00 2001 +From: ktkachov +Date: Fri, 26 Aug 2016 10:23:20 +0000 +Subject: [PATCH] [ARM] PR target/70473: Reduce size of Cortex-A8 automaton + + PR target/70473 + * config/arm/cortex-a8-neon.md (cortex_a8_vfp_muld): Reduce + reservation duration to 15 cycles. + (cortex_a8_vfp_macs): Likewise. + (cortex_a8_vfp_macd): Likewise. + (cortex_a8_vfp_divs): Likewise. + (cortex_a8_vfp_divd): Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239772 +138bc75d-0d04-0410-961f-82ee72b054a4 + +[Backport from gcc upstream commit 79f5d5e3cd5a668d5ecb2b6b0cce80ef5706ac53.] +Signed-off-by: Thomas Petazzoni +--- + gcc/config/arm/cortex-a8-neon.md | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/gcc/config/arm/cortex-a8-neon.md b/gcc/config/arm/cortex-a8-neon.md +index 45f861f..b16c299 100644 +--- a/gcc/config/arm/cortex-a8-neon.md ++++ b/gcc/config/arm/cortex-a8-neon.md +@@ -357,30 +357,34 @@ + (eq_attr "type" "fmuls")) + "cortex_a8_vfp,cortex_a8_vfplite*11") + ++;; Don't model a reservation for more than 15 cycles as this explodes the ++;; state space of the automaton for little gain. It is unlikely that the ++;; scheduler will find enough instructions to hide the full latency of the ++;; instructions. + (define_insn_reservation "cortex_a8_vfp_muld" 17 + (and (eq_attr "tune" "cortexa8") + (eq_attr "type" "fmuld")) +- "cortex_a8_vfp,cortex_a8_vfplite*16") ++ "cortex_a8_vfp,cortex_a8_vfplite*15") + + (define_insn_reservation "cortex_a8_vfp_macs" 21 + (and (eq_attr "tune" "cortexa8") + (eq_attr "type" "fmacs,ffmas")) +- "cortex_a8_vfp,cortex_a8_vfplite*20") ++ "cortex_a8_vfp,cortex_a8_vfplite*15") + + (define_insn_reservation "cortex_a8_vfp_macd" 26 + (and (eq_attr "tune" "cortexa8") + (eq_attr "type" "fmacd,ffmad")) +- "cortex_a8_vfp,cortex_a8_vfplite*25") ++ "cortex_a8_vfp,cortex_a8_vfplite*15") + + (define_insn_reservation "cortex_a8_vfp_divs" 37 + (and (eq_attr "tune" "cortexa8") + (eq_attr "type" "fdivs, fsqrts")) +- "cortex_a8_vfp,cortex_a8_vfplite*36") ++ "cortex_a8_vfp,cortex_a8_vfplite*15") + + (define_insn_reservation "cortex_a8_vfp_divd" 65 + (and (eq_attr "tune" "cortexa8") + (eq_attr "type" "fdivd, fsqrtd")) +- "cortex_a8_vfp,cortex_a8_vfplite*64") ++ "cortex_a8_vfp,cortex_a8_vfplite*15") + + ;; Comparisons can actually take 7 cycles sometimes instead of four, + ;; but given all the other instructions lumped into type=ffarith that +-- +2.7.4 + diff --git a/buildroot/package/gcc/6.4.0/860-cilk-wchar.patch b/buildroot/package/gcc/6.4.0/860-cilk-wchar.patch new file mode 100644 index 0000000..1d9916f --- /dev/null +++ b/buildroot/package/gcc/6.4.0/860-cilk-wchar.patch @@ -0,0 +1,56 @@ +[PATCH] cilk: fix build without wchar + +When building against uClibc with wchar support disabled, WCHAR_MIN and +WCHAR_MAX are not defined leading to compilation errors. + +Fix it by only including the wchar code if available. + +Signed-off-by: Peter Korsgaard +--- + libcilkrts/include/cilk/reducer_min_max.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +Index: b/libcilkrts/include/cilk/reducer_min_max.h +=================================================================== +--- a/libcilkrts/include/cilk/reducer_min_max.h ++++ b/libcilkrts/include/cilk/reducer_min_max.h +@@ -3154,7 +3154,9 @@ + CILK_C_REDUCER_MAX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INSTANCE(int, int, INT_MIN) +@@ -3306,7 +3308,9 @@ + CILK_C_REDUCER_MAX_INDEX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INDEX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(int, int, INT_MIN) +@@ -3432,7 +3436,9 @@ + CILK_C_REDUCER_MIN_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(int, int, INT_MAX) +@@ -3584,7 +3590,9 @@ + CILK_C_REDUCER_MIN_INDEX_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INDEX_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(int, int, INT_MAX) diff --git a/buildroot/package/gcc/6.4.0/870-xtensa-fix-PR-target-82181.patch b/buildroot/package/gcc/6.4.0/870-xtensa-fix-PR-target-82181.patch new file mode 100644 index 0000000..5fe3841 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/870-xtensa-fix-PR-target-82181.patch @@ -0,0 +1,31 @@ +From 3bc2ee6886f1619bc6a2257a0775142526b1a57a Mon Sep 17 00:00:00 2001 +From: jcmvbkbc +Date: Mon, 11 Sep 2017 21:53:38 +0000 +Subject: [PATCH] xtensa: fix PR target/82181 + +2017-09-11 Max Filippov +gcc/ + Backport from mainline + * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both + words of DImode object are reachable by xtensa_uimm8x4 access. + +Signed-off-by: Max Filippov +--- + gcc/config/xtensa/xtensa.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c +index 2bdf5ccef979..92fdeb08046d 100644 +--- a/gcc/config/xtensa/xtensa.c ++++ b/gcc/config/xtensa/xtensa.c +@@ -601,6 +601,7 @@ xtensa_mem_offset (unsigned v, machine_mode mode) + case HImode: + return xtensa_uimm8x2 (v); + ++ case DImode: + case DFmode: + return (xtensa_uimm8x4 (v) && xtensa_uimm8x4 (v + 4)); + +-- +2.1.4 + diff --git a/buildroot/package/gcc/6.4.0/871-xtensa-fix-PR-target-65416.patch b/buildroot/package/gcc/6.4.0/871-xtensa-fix-PR-target-65416.patch new file mode 100644 index 0000000..7ead575 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/871-xtensa-fix-PR-target-65416.patch @@ -0,0 +1,101 @@ +From 87fda0741d210727672cba5e54a37a189e8ac04e Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Sun, 17 Jun 2018 21:18:39 -0700 +Subject: [PATCH] xtensa: fix PR target/65416 + +The issue is caused by reordering of stack pointer update after stack +space allocation with instructions that write to the allocated stack +space. In windowed ABI register spill area for the previous call frame +is located just below the stack pointer and may be reloaded back into +the register file on movsp. +Implement allocate_stack pattern for windowed ABI configuration and +insert an instruction that prevents reordering of frame memory access +and stack pointer update. + +gcc/ +2018-06-19 Max Filippov + + * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec + constant. + (allocate_stack, frame_blockage, *frame_blockage): New patterns. + +Signed-off-by: Max Filippov +Backported from: r261755 +--- + gcc/config/xtensa/xtensa.md | 46 +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md +index 84967dbedc08..209f839cfb0f 100644 +--- a/gcc/config/xtensa/xtensa.md ++++ b/gcc/config/xtensa/xtensa.md +@@ -38,6 +38,7 @@ + (UNSPEC_MEMW 11) + (UNSPEC_LSETUP_START 12) + (UNSPEC_LSETUP_END 13) ++ (UNSPEC_FRAME_BLOCKAGE 14) + + (UNSPECV_SET_FP 1) + (UNSPECV_ENTRY 2) +@@ -1676,6 +1677,32 @@ + + ;; Miscellaneous instructions. + ++;; In windowed ABI stack pointer adjustment must happen before any access ++;; to the space allocated on stack is allowed, otherwise register spill ++;; area may be clobbered. That's what frame blockage is supposed to enforce. ++ ++(define_expand "allocate_stack" ++ [(set (match_operand 0 "nonimmed_operand") ++ (minus (reg A1_REG) (match_operand 1 "add_operand"))) ++ (set (reg A1_REG) ++ (minus (reg A1_REG) (match_dup 1)))] ++ "TARGET_WINDOWED_ABI" ++{ ++ if (CONST_INT_P (operands[1])) ++ { ++ rtx neg_op0 = GEN_INT (-INTVAL (operands[1])); ++ emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, neg_op0)); ++ } ++ else ++ { ++ emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx, ++ operands[1])); ++ } ++ emit_move_insn (operands[0], virtual_stack_dynamic_rtx); ++ emit_insn (gen_frame_blockage ()); ++ DONE; ++}) ++ + (define_expand "prologue" + [(const_int 0)] + "" +@@ -1767,6 +1794,25 @@ + [(set_attr "length" "0") + (set_attr "type" "nop")]) + ++;; Do not schedule instructions accessing memory before this point. ++ ++(define_expand "frame_blockage" ++ [(set (match_dup 0) ++ (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))] ++ "" ++{ ++ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); ++ MEM_VOLATILE_P (operands[0]) = 1; ++ operands[1] = stack_pointer_rtx; ++}) ++ ++(define_insn "*frame_blockage" ++ [(set (match_operand:BLK 0 "" "") ++ (unspec:BLK [(match_operand:SI 1 "" "")] UNSPEC_FRAME_BLOCKAGE))] ++ "" ++ "" ++ [(set_attr "length" "0")]) ++ + (define_insn "trap" + [(trap_if (const_int 1) (const_int 0))] + "" +-- +2.11.0 + diff --git a/buildroot/package/gcc/6.4.0/890-fix-m68k-compile.patch b/buildroot/package/gcc/6.4.0/890-fix-m68k-compile.patch new file mode 100644 index 0000000..6e63de0 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/890-fix-m68k-compile.patch @@ -0,0 +1,15 @@ +remove unused header, which breaks the toolchain building + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-5.3.0.orig/libgcc/config/m68k/linux-atomic.c gcc-5.3.0/libgcc/config/m68k/linux-atomic.c +--- gcc-5.3.0.orig/libgcc/config/m68k/linux-atomic.c 2015-01-05 13:33:28.000000000 +0100 ++++ gcc-5.3.0/libgcc/config/m68k/linux-atomic.c 2016-03-19 09:25:07.000000000 +0100 +@@ -33,7 +33,6 @@ + using the kernel helper defined below. There is no support for + 64-bit operations yet. */ + +-#include + #include + + #ifndef __NR_atomic_cmpxchg_32 diff --git a/buildroot/package/gcc/6.4.0/891-fix-m68k-uclinux.patch b/buildroot/package/gcc/6.4.0/891-fix-m68k-uclinux.patch new file mode 100644 index 0000000..754aa74 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/891-fix-m68k-uclinux.patch @@ -0,0 +1,18 @@ +avoids internal compiler error while compiling linux-atomic.c +See here: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53833 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-6.1.0.orig/libgcc/config.host gcc-6.1.0/libgcc/config.host +--- gcc-6.1.0.orig/libgcc/config.host 2016-02-26 21:02:28.000000000 +0100 ++++ gcc-6.1.0/libgcc/config.host 2016-04-29 09:18:40.377989160 +0200 +@@ -812,7 +812,7 @@ + m68k*-*-openbsd*) + ;; + m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc +- tmake_file="$tmake_file m68k/t-floatlib m68k/t-linux" ++ tmake_file="$tmake_file m68k/t-floatlib" + md_unwind_header=m68k/linux-unwind.h + ;; + m68k-*-linux*) # Motorola m68k's running GNU/Linux diff --git a/buildroot/package/gcc/6.4.0/892-libgcc-mkmap-symver-support-skip_underscore.patch b/buildroot/package/gcc/6.4.0/892-libgcc-mkmap-symver-support-skip_underscore.patch new file mode 100644 index 0000000..73ee6c5 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/892-libgcc-mkmap-symver-support-skip_underscore.patch @@ -0,0 +1,60 @@ +From ae9c3e354440c4a0f105a9eabfb2f77be085ebc1 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 18 Aug 2016 17:59:16 +0200 +Subject: [PATCH] libgcc/mkmap-symver: support skip_underscore + +Some platforms, such as Blackfin, have a special prefix for assembly +symbols as opposed to C symbols. For this reason, a function named +"foo()" in C will in fact be visible as a symbol called "_foo" in the +ELF binary. + +The current linker version script logic in libgcc doesn't take into +account this situation properly. The Blackfin specific +libgcc/config/bfin/libgcc-glibc.ver has an additional "_" in front of +every symbol so that it matches the output of "nm" (which gets parsed to +produce the final linker version script). But due to this additional +"_", ld no longer matches with the symbols since "ld" does the matching +with the original symbol name, not the one prefixed with "_". + +Due to this, none of the symbols in libgcc/config/bfin/libgcc-glibc.ver +are actually matched with symbols in libgcc. This causes all libgcc +symbols to be left as "LOCAL", which causes lots of "undefined +reference" whenever some C or C++ code that calls a function of libgcc +is compiled. + +To address this, this commit introduces a "skip_underscore" variable to +the mkmap-symver script. It tells mkmap-symver to ignore the leading +underscore from the "nm" output. + +Note that this new argument is different from the existing +"leading_underscore" argument, which *adds* an additional underscore to +the generated linker version script. + +Having this functionality paves the way to using the generic linker +version information for Blackfin, instead of using a custom one. + +Signed-off-by: Thomas Petazzoni +--- + libgcc/mkmap-symver.awk | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/libgcc/mkmap-symver.awk b/libgcc/mkmap-symver.awk +index 266832a..30bb179 100644 +--- a/libgcc/mkmap-symver.awk ++++ b/libgcc/mkmap-symver.awk +@@ -47,7 +47,11 @@ state == "nm" && ($1 == "U" || $2 == "U") { + + state == "nm" && NF == 3 { + split ($3, s, "@") +- def[s[1]] = 1; ++ if (skip_underscore) ++ symname = substr(s[1], 2); ++ else ++ symname = s[1]; ++ def[symname] = 1; + sawsymbol = 1; + next; + } +-- +2.7.4 + diff --git a/buildroot/package/gcc/6.4.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch b/buildroot/package/gcc/6.4.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch new file mode 100644 index 0000000..454295d --- /dev/null +++ b/buildroot/package/gcc/6.4.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch @@ -0,0 +1,1944 @@ +From 56d606931716de30a89a40dc69a9282c1b4e2880 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 18 Aug 2016 18:04:06 +0200 +Subject: [PATCH] libgcc/config/bfin: use the generic linker version + information + +This commit makes the Blackfin platform use the generic linker version +information, rather than a completely duplicated file, specific for the +Blackfin architecture. + +This is made possible using the newly introduced skip_underscore +variable of the mkmap-symver script. + +This also allows to get a correct linker version file, with symbol names +matching the ones found in libgcc. Thanks to this, the necessary symbols +are marked "GLOBAL" instead of "LOCAL", which makes them visible at link +time, and solves a large number of "undefined reference" +issues. Indeed, the Blackfin specific linker version script had an extra +underscore in front of all symbols, which meant none of them matched the +symbols in libgcc, and therefore all libgcc symbols were marked as +"LOCAL", making them invisible for linking. + +Signed-off-by: Thomas Petazzoni +--- + libgcc/config/bfin/libgcc-glibc.ver | 1894 +---------------------------------- + libgcc/config/bfin/t-linux | 3 +- + 2 files changed, 4 insertions(+), 1893 deletions(-) + +diff --git a/libgcc/config/bfin/libgcc-glibc.ver b/libgcc/config/bfin/libgcc-glibc.ver +index b1bd2df..2af3df7 100644 +--- a/libgcc/config/bfin/libgcc-glibc.ver ++++ b/libgcc/config/bfin/libgcc-glibc.ver +@@ -16,1898 +16,8 @@ + # along with GCC; see the file COPYING3. If not see + # . + +-GCC_3.0 { +- # libgcc1 integer symbols +- ___absvsi2 +- ___addvsi3 +- ___ashlsi3 +- ___ashrsi3 +- ___divsi3 +- ___lshrsi3 +- ___modsi3 +- ___mulsi3 +- ___mulvsi3 +- ___negvsi2 +- ___subvsi3 +- ___udivsi3 +- ___umodsi3 +- +- # libgcc1 floating point symbols +- ___addsf3 +- ___adddf3 +- ___addxf3 +- ___addtf3 +- ___divsf3 +- ___divdf3 +- ___divxf3 +- ___divtf3 +- ___eqsf2 +- ___eqdf2 +- ___eqxf2 +- ___eqtf2 +- ___extenddfxf2 +- ___extenddftf2 +- ___extendsfdf2 +- ___extendsfxf2 +- ___extendsftf2 +- ___fixsfsi +- ___fixdfsi +- ___fixxfsi +- ___fixtfsi +- ___floatsisf +- ___floatsidf +- ___floatsixf +- ___floatsitf +- ___gesf2 +- ___gedf2 +- ___gexf2 +- ___getf2 +- ___gtsf2 +- ___gtdf2 +- ___gtxf2 +- ___gttf2 +- ___lesf2 +- ___ledf2 +- ___lexf2 +- ___letf2 +- ___ltsf2 +- ___ltdf2 +- ___ltxf2 +- ___lttf2 +- ___mulsf3 +- ___muldf3 +- ___mulxf3 +- ___multf3 +- ___negsf2 +- ___negdf2 +- ___negxf2 +- ___negtf2 +- ___nesf2 +- ___nedf2 +- ___nexf2 +- ___netf2 +- ___subsf3 +- ___subdf3 +- ___subxf3 +- ___subtf3 +- ___truncdfsf2 +- ___truncxfsf2 +- ___trunctfsf2 +- ___truncxfdf2 +- ___trunctfdf2 +- +- # libgcc2 DImode arithmetic (for 32-bit targets). +- ___absvdi2 +- ___addvdi3 +- ___ashldi3 +- ___ashrdi3 +- ___cmpdi2 +- ___divdi3 +- ___ffsdi2 +- ___fixdfdi +- ___fixsfdi +- ___fixtfdi +- ___fixxfdi +- ___fixunsdfdi +- ___fixunsdfsi +- ___fixunssfsi +- ___fixunssfdi +- ___fixunstfdi +- ___fixunstfsi +- ___fixunsxfdi +- ___fixunsxfsi +- ___floatdidf +- ___floatdisf +- ___floatdixf +- ___floatditf +- ___lshrdi3 +- ___moddi3 +- ___muldi3 +- ___mulvdi3 +- ___negdi2 +- ___negvdi2 +- ___subvdi3 +- ___ucmpdi2 +- ___udivdi3 +- ___udivmoddi4 +- ___umoddi3 +- +- # libgcc2 TImode arithmetic (for 64-bit targets). +- ___ashlti3 +- ___ashrti3 +- ___cmpti2 +- ___divti3 +- ___ffsti2 +- ___fixdfti +- ___fixsfti +- ___fixtfti +- ___fixxfti +- ___lshrti3 +- ___modti3 +- ___multi3 +- ___negti2 +- ___ucmpti2 +- ___udivmodti4 +- ___udivti3 +- ___umodti3 +- ___fixunsdfti +- ___fixunssfti +- ___fixunstfti +- ___fixunsxfti +- ___floattidf +- ___floattisf +- ___floattixf +- ___floattitf +- +- # Used to deal with trampoline initialization on some platforms +- ___clear_cache +- +- # EH symbols +- __Unwind_DeleteException +- __Unwind_Find_FDE +- __Unwind_ForcedUnwind +- __Unwind_GetGR +- __Unwind_GetIP +- __Unwind_GetLanguageSpecificData +- __Unwind_GetRegionStart +- __Unwind_GetTextRelBase +- __Unwind_GetDataRelBase +- __Unwind_RaiseException +- __Unwind_Resume +- __Unwind_SetGR +- __Unwind_SetIP +- ___deregister_frame +- ___deregister_frame_info +- ___deregister_frame_info_bases +- ___register_frame +- ___register_frame_info +- ___register_frame_info_bases +- ___register_frame_info_table +- ___register_frame_info_table_bases +- ___register_frame_table +- +- # SjLj EH symbols +- __Unwind_SjLj_Register +- __Unwind_SjLj_Unregister +- __Unwind_SjLj_RaiseException +- __Unwind_SjLj_ForcedUnwind +- __Unwind_SjLj_Resume +-} +- +-%inherit GCC_3.3 GCC_3.0 +-GCC_3.3 { +- __Unwind_FindEnclosingFunction +- __Unwind_GetCFA +- __Unwind_Backtrace +- __Unwind_Resume_or_Rethrow +- __Unwind_SjLj_Resume_or_Rethrow +-} +- +-%inherit GCC_3.3.1 GCC_3.3 +-GCC_3.3.1 { +- ___gcc_personality_sj0 +- ___gcc_personality_v0 +-} +- +-%inherit GCC_3.3.2 GCC_3.3.1 +-GCC_3.3.2 { +-} +-%inherit GCC_3.3.4 GCC_3.3.2 +-GCC_3.3.4 { +- ___unorddf2 +- ___unordsf2 +-} +- +-%inherit GCC_3.4 GCC_3.3.4 +-GCC_3.4 { +- # bit scanning and counting built-ins +- ___clzsi2 +- ___clzdi2 +- ___clzti2 +- ___ctzsi2 +- ___ctzdi2 +- ___ctzti2 +- ___popcountsi2 +- ___popcountdi2 +- ___popcountti2 +- ___paritysi2 +- ___paritydi2 +- ___parityti2 +-} +- +-%inherit GCC_3.4.2 GCC_3.4 +-GCC_3.4.2 { +- # Used to deal with trampoline initialization on some platforms +- ___enable_execute_stack +- ___trampoline_setup +-} +- +-%inherit GCC_3.4.4 GCC_3.4.2 +-GCC_3.4.4 { +- # libgcc2 TImode arithmetic (for 64-bit targets). +- ___absvti2 +- ___addvti3 +- ___mulvti3 +- ___negvti2 +- ___subvti3 +-} +- +-%inherit GCC_4.0.0 GCC_3.4.4 +-GCC_4.0.0 { +- # libgcc2 __builtin_powi helpers. +- ___powisf2 +- ___powidf2 +- ___powixf2 +- ___powitf2 +- +- # c99 compliant complex arithmetic +- ___divsc3 +- ___divdc3 +- ___divxc3 +- ___divtc3 +- ___mulsc3 +- ___muldc3 +- ___mulxc3 +- ___multc3 +-} +- + %inherit GCC_4.1.0 GCC_4.0.0 + GCC_4.1.0 { +- ___smulsi3_highpart +- ___umulsi3_highpart +-} +- +-%inherit GCC_4.2.0 GCC_4.1.0 +-GCC_4.2.0 { +- # unsigned-to-floating conversions +- ___floatunsisf +- ___floatunsidf +- ___floatunsixf +- ___floatunsitf +- ___floatundidf +- ___floatundisf +- ___floatundixf +- ___floatunditf +- ___floatuntidf +- ___floatuntisf +- ___floatuntixf +- ___floatuntitf +- __Unwind_GetIPInfo +-} +- +-%inherit GCC_4.3.0 GCC_4.2.0 +-GCC_4.3.0 { +- # byte swapping routines +- ___bswapsi2 +- ___bswapdi2 +- ___emutls_get_address +- ___emutls_register_common +- ___ffssi2 +- ___extendxftf2 +- ___trunctfxf2 +- +- # fixed-point routines +- ___addqq3 +- ___addhq3 +- ___addsq3 +- ___adddq3 +- ___addtq3 +- ___adduqq3 +- ___adduhq3 +- ___addusq3 +- ___addudq3 +- ___addutq3 +- ___addha3 +- ___addsa3 +- ___addda3 +- ___addta3 +- ___adduha3 +- ___addusa3 +- ___adduda3 +- ___adduta3 +- ___ssaddqq3 +- ___ssaddhq3 +- ___ssaddsq3 +- ___ssadddq3 +- ___ssaddtq3 +- ___ssaddha3 +- ___ssaddsa3 +- ___ssaddda3 +- ___ssaddta3 +- ___usadduqq3 +- ___usadduhq3 +- ___usaddusq3 +- ___usaddudq3 +- ___usaddutq3 +- ___usadduha3 +- ___usaddusa3 +- ___usadduda3 +- ___usadduta3 +- ___subqq3 +- ___subhq3 +- ___subsq3 +- ___subdq3 +- ___subtq3 +- ___subuqq3 +- ___subuhq3 +- ___subusq3 +- ___subudq3 +- ___subutq3 +- ___subha3 +- ___subsa3 +- ___subda3 +- ___subta3 +- ___subuha3 +- ___subusa3 +- ___subuda3 +- ___subuta3 +- ___sssubqq3 +- ___sssubhq3 +- ___sssubsq3 +- ___sssubdq3 +- ___sssubtq3 +- ___sssubha3 +- ___sssubsa3 +- ___sssubda3 +- ___sssubta3 +- ___ussubuqq3 +- ___ussubuhq3 +- ___ussubusq3 +- ___ussubudq3 +- ___ussubutq3 +- ___ussubuha3 +- ___ussubusa3 +- ___ussubuda3 +- ___ussubuta3 +- ___mulqq3 +- ___mulhq3 +- ___mulsq3 +- ___muldq3 +- ___multq3 +- ___muluqq3 +- ___muluhq3 +- ___mulusq3 +- ___muludq3 +- ___mulutq3 +- ___mulha3 +- ___mulsa3 +- ___mulda3 +- ___multa3 +- ___muluha3 +- ___mulusa3 +- ___muluda3 +- ___muluta3 +- ___ssmulqq3 +- ___ssmulhq3 +- ___ssmulsq3 +- ___ssmuldq3 +- ___ssmultq3 +- ___ssmulha3 +- ___ssmulsa3 +- ___ssmulda3 +- ___ssmulta3 +- ___usmuluqq3 +- ___usmuluhq3 +- ___usmulusq3 +- ___usmuludq3 +- ___usmulutq3 +- ___usmuluha3 +- ___usmulusa3 +- ___usmuluda3 +- ___usmuluta3 +- ___divqq3 +- ___divhq3 +- ___divsq3 +- ___divdq3 +- ___divtq3 +- ___divha3 +- ___divsa3 +- ___divda3 +- ___divta3 +- ___udivuqq3 +- ___udivuhq3 +- ___udivusq3 +- ___udivudq3 +- ___udivutq3 +- ___udivuha3 +- ___udivusa3 +- ___udivuda3 +- ___udivuta3 +- ___ssdivqq3 +- ___ssdivhq3 +- ___ssdivsq3 +- ___ssdivdq3 +- ___ssdivtq3 +- ___ssdivha3 +- ___ssdivsa3 +- ___ssdivda3 +- ___ssdivta3 +- ___usdivuqq3 +- ___usdivuhq3 +- ___usdivusq3 +- ___usdivudq3 +- ___usdivutq3 +- ___usdivuha3 +- ___usdivusa3 +- ___usdivuda3 +- ___usdivuta3 +- ___negqq2 +- ___neghq2 +- ___negsq2 +- ___negdq2 +- ___negtq2 +- ___neguqq2 +- ___neguhq2 +- ___negusq2 +- ___negudq2 +- ___negutq2 +- ___negha2 +- ___negsa2 +- ___negda2 +- ___negta2 +- ___neguha2 +- ___negusa2 +- ___neguda2 +- ___neguta2 +- ___ssnegqq2 +- ___ssneghq2 +- ___ssnegsq2 +- ___ssnegdq2 +- ___ssnegtq2 +- ___ssnegha2 +- ___ssnegsa2 +- ___ssnegda2 +- ___ssnegta2 +- ___usneguqq2 +- ___usneguhq2 +- ___usnegusq2 +- ___usnegudq2 +- ___usnegutq2 +- ___usneguha2 +- ___usnegusa2 +- ___usneguda2 +- ___usneguta2 +- ___ashlqq3 +- ___ashlhq3 +- ___ashlsq3 +- ___ashldq3 +- ___ashltq3 +- ___ashluqq3 +- ___ashluhq3 +- ___ashlusq3 +- ___ashludq3 +- ___ashlutq3 +- ___ashlha3 +- ___ashlsa3 +- ___ashlda3 +- ___ashlta3 +- ___ashluha3 +- ___ashlusa3 +- ___ashluda3 +- ___ashluta3 +- ___ashrqq3 +- ___ashrhq3 +- ___ashrsq3 +- ___ashrdq3 +- ___ashrtq3 +- ___ashrha3 +- ___ashrsa3 +- ___ashrda3 +- ___ashrta3 +- ___lshruqq3 +- ___lshruhq3 +- ___lshrusq3 +- ___lshrudq3 +- ___lshrutq3 +- ___lshruha3 +- ___lshrusa3 +- ___lshruda3 +- ___lshruta3 +- ___ssashlqq3 +- ___ssashlhq3 +- ___ssashlsq3 +- ___ssashldq3 +- ___ssashltq3 +- ___ssashlha3 +- ___ssashlsa3 +- ___ssashlda3 +- ___ssashlta3 +- ___usashluqq3 +- ___usashluhq3 +- ___usashlusq3 +- ___usashludq3 +- ___usashlutq3 +- ___usashluha3 +- ___usashlusa3 +- ___usashluda3 +- ___usashluta3 +- ___cmpqq2 +- ___cmphq2 +- ___cmpsq2 +- ___cmpdq2 +- ___cmptq2 +- ___cmpuqq2 +- ___cmpuhq2 +- ___cmpusq2 +- ___cmpudq2 +- ___cmputq2 +- ___cmpha2 +- ___cmpsa2 +- ___cmpda2 +- ___cmpta2 +- ___cmpuha2 +- ___cmpusa2 +- ___cmpuda2 +- ___cmputa2 +- ___fractqqhq2 +- ___fractqqsq2 +- ___fractqqdq2 +- ___fractqqtq2 +- ___fractqqha +- ___fractqqsa +- ___fractqqda +- ___fractqqta +- ___fractqquqq +- ___fractqquhq +- ___fractqqusq +- ___fractqqudq +- ___fractqqutq +- ___fractqquha +- ___fractqqusa +- ___fractqquda +- ___fractqquta +- ___fractqqqi +- ___fractqqhi +- ___fractqqsi +- ___fractqqdi +- ___fractqqti +- ___fractqqsf +- ___fractqqdf +- ___fracthqqq2 +- ___fracthqsq2 +- ___fracthqdq2 +- ___fracthqtq2 +- ___fracthqha +- ___fracthqsa +- ___fracthqda +- ___fracthqta +- ___fracthquqq +- ___fracthquhq +- ___fracthqusq +- ___fracthqudq +- ___fracthqutq +- ___fracthquha +- ___fracthqusa +- ___fracthquda +- ___fracthquta +- ___fracthqqi +- ___fracthqhi +- ___fracthqsi +- ___fracthqdi +- ___fracthqti +- ___fracthqsf +- ___fracthqdf +- ___fractsqqq2 +- ___fractsqhq2 +- ___fractsqdq2 +- ___fractsqtq2 +- ___fractsqha +- ___fractsqsa +- ___fractsqda +- ___fractsqta +- ___fractsquqq +- ___fractsquhq +- ___fractsqusq +- ___fractsqudq +- ___fractsqutq +- ___fractsquha +- ___fractsqusa +- ___fractsquda +- ___fractsquta +- ___fractsqqi +- ___fractsqhi +- ___fractsqsi +- ___fractsqdi +- ___fractsqti +- ___fractsqsf +- ___fractsqdf +- ___fractdqqq2 +- ___fractdqhq2 +- ___fractdqsq2 +- ___fractdqtq2 +- ___fractdqha +- ___fractdqsa +- ___fractdqda +- ___fractdqta +- ___fractdquqq +- ___fractdquhq +- ___fractdqusq +- ___fractdqudq +- ___fractdqutq +- ___fractdquha +- ___fractdqusa +- ___fractdquda +- ___fractdquta +- ___fractdqqi +- ___fractdqhi +- ___fractdqsi +- ___fractdqdi +- ___fractdqti +- ___fractdqsf +- ___fractdqdf +- ___fracttqqq2 +- ___fracttqhq2 +- ___fracttqsq2 +- ___fracttqdq2 +- ___fracttqha +- ___fracttqsa +- ___fracttqda +- ___fracttqta +- ___fracttquqq +- ___fracttquhq +- ___fracttqusq +- ___fracttqudq +- ___fracttqutq +- ___fracttquha +- ___fracttqusa +- ___fracttquda +- ___fracttquta +- ___fracttqqi +- ___fracttqhi +- ___fracttqsi +- ___fracttqdi +- ___fracttqti +- ___fracttqsf +- ___fracttqdf +- ___fracthaqq +- ___fracthahq +- ___fracthasq +- ___fracthadq +- ___fracthatq +- ___fracthasa2 +- ___fracthada2 +- ___fracthata2 +- ___fracthauqq +- ___fracthauhq +- ___fracthausq +- ___fracthaudq +- ___fracthautq +- ___fracthauha +- ___fracthausa +- ___fracthauda +- ___fracthauta +- ___fracthaqi +- ___fracthahi +- ___fracthasi +- ___fracthadi +- ___fracthati +- ___fracthasf +- ___fracthadf +- ___fractsaqq +- ___fractsahq +- ___fractsasq +- ___fractsadq +- ___fractsatq +- ___fractsaha2 +- ___fractsada2 +- ___fractsata2 +- ___fractsauqq +- ___fractsauhq +- ___fractsausq +- ___fractsaudq +- ___fractsautq +- ___fractsauha +- ___fractsausa +- ___fractsauda +- ___fractsauta +- ___fractsaqi +- ___fractsahi +- ___fractsasi +- ___fractsadi +- ___fractsati +- ___fractsasf +- ___fractsadf +- ___fractdaqq +- ___fractdahq +- ___fractdasq +- ___fractdadq +- ___fractdatq +- ___fractdaha2 +- ___fractdasa2 +- ___fractdata2 +- ___fractdauqq +- ___fractdauhq +- ___fractdausq +- ___fractdaudq +- ___fractdautq +- ___fractdauha +- ___fractdausa +- ___fractdauda +- ___fractdauta +- ___fractdaqi +- ___fractdahi +- ___fractdasi +- ___fractdadi +- ___fractdati +- ___fractdasf +- ___fractdadf +- ___fracttaqq +- ___fracttahq +- ___fracttasq +- ___fracttadq +- ___fracttatq +- ___fracttaha2 +- ___fracttasa2 +- ___fracttada2 +- ___fracttauqq +- ___fracttauhq +- ___fracttausq +- ___fracttaudq +- ___fracttautq +- ___fracttauha +- ___fracttausa +- ___fracttauda +- ___fracttauta +- ___fracttaqi +- ___fracttahi +- ___fracttasi +- ___fracttadi +- ___fracttati +- ___fracttasf +- ___fracttadf +- ___fractuqqqq +- ___fractuqqhq +- ___fractuqqsq +- ___fractuqqdq +- ___fractuqqtq +- ___fractuqqha +- ___fractuqqsa +- ___fractuqqda +- ___fractuqqta +- ___fractuqquhq2 +- ___fractuqqusq2 +- ___fractuqqudq2 +- ___fractuqqutq2 +- ___fractuqquha +- ___fractuqqusa +- ___fractuqquda +- ___fractuqquta +- ___fractuqqqi +- ___fractuqqhi +- ___fractuqqsi +- ___fractuqqdi +- ___fractuqqti +- ___fractuqqsf +- ___fractuqqdf +- ___fractuhqqq +- ___fractuhqhq +- ___fractuhqsq +- ___fractuhqdq +- ___fractuhqtq +- ___fractuhqha +- ___fractuhqsa +- ___fractuhqda +- ___fractuhqta +- ___fractuhquqq2 +- ___fractuhqusq2 +- ___fractuhqudq2 +- ___fractuhqutq2 +- ___fractuhquha +- ___fractuhqusa +- ___fractuhquda +- ___fractuhquta +- ___fractuhqqi +- ___fractuhqhi +- ___fractuhqsi +- ___fractuhqdi +- ___fractuhqti +- ___fractuhqsf +- ___fractuhqdf +- ___fractusqqq +- ___fractusqhq +- ___fractusqsq +- ___fractusqdq +- ___fractusqtq +- ___fractusqha +- ___fractusqsa +- ___fractusqda +- ___fractusqta +- ___fractusquqq2 +- ___fractusquhq2 +- ___fractusqudq2 +- ___fractusqutq2 +- ___fractusquha +- ___fractusqusa +- ___fractusquda +- ___fractusquta +- ___fractusqqi +- ___fractusqhi +- ___fractusqsi +- ___fractusqdi +- ___fractusqti +- ___fractusqsf +- ___fractusqdf +- ___fractudqqq +- ___fractudqhq +- ___fractudqsq +- ___fractudqdq +- ___fractudqtq +- ___fractudqha +- ___fractudqsa +- ___fractudqda +- ___fractudqta +- ___fractudquqq2 +- ___fractudquhq2 +- ___fractudqusq2 +- ___fractudqutq2 +- ___fractudquha +- ___fractudqusa +- ___fractudquda +- ___fractudquta +- ___fractudqqi +- ___fractudqhi +- ___fractudqsi +- ___fractudqdi +- ___fractudqti +- ___fractudqsf +- ___fractudqdf +- ___fractutqqq +- ___fractutqhq +- ___fractutqsq +- ___fractutqdq +- ___fractutqtq +- ___fractutqha +- ___fractutqsa +- ___fractutqda +- ___fractutqta +- ___fractutquqq2 +- ___fractutquhq2 +- ___fractutqusq2 +- ___fractutqudq2 +- ___fractutquha +- ___fractutqusa +- ___fractutquda +- ___fractutquta +- ___fractutqqi +- ___fractutqhi +- ___fractutqsi +- ___fractutqdi +- ___fractutqti +- ___fractutqsf +- ___fractutqdf +- ___fractuhaqq +- ___fractuhahq +- ___fractuhasq +- ___fractuhadq +- ___fractuhatq +- ___fractuhaha +- ___fractuhasa +- ___fractuhada +- ___fractuhata +- ___fractuhauqq +- ___fractuhauhq +- ___fractuhausq +- ___fractuhaudq +- ___fractuhautq +- ___fractuhausa2 +- ___fractuhauda2 +- ___fractuhauta2 +- ___fractuhaqi +- ___fractuhahi +- ___fractuhasi +- ___fractuhadi +- ___fractuhati +- ___fractuhasf +- ___fractuhadf +- ___fractusaqq +- ___fractusahq +- ___fractusasq +- ___fractusadq +- ___fractusatq +- ___fractusaha +- ___fractusasa +- ___fractusada +- ___fractusata +- ___fractusauqq +- ___fractusauhq +- ___fractusausq +- ___fractusaudq +- ___fractusautq +- ___fractusauha2 +- ___fractusauda2 +- ___fractusauta2 +- ___fractusaqi +- ___fractusahi +- ___fractusasi +- ___fractusadi +- ___fractusati +- ___fractusasf +- ___fractusadf +- ___fractudaqq +- ___fractudahq +- ___fractudasq +- ___fractudadq +- ___fractudatq +- ___fractudaha +- ___fractudasa +- ___fractudada +- ___fractudata +- ___fractudauqq +- ___fractudauhq +- ___fractudausq +- ___fractudaudq +- ___fractudautq +- ___fractudauha2 +- ___fractudausa2 +- ___fractudauta2 +- ___fractudaqi +- ___fractudahi +- ___fractudasi +- ___fractudadi +- ___fractudati +- ___fractudasf +- ___fractudadf +- ___fractutaqq +- ___fractutahq +- ___fractutasq +- ___fractutadq +- ___fractutatq +- ___fractutaha +- ___fractutasa +- ___fractutada +- ___fractutata +- ___fractutauqq +- ___fractutauhq +- ___fractutausq +- ___fractutaudq +- ___fractutautq +- ___fractutauha2 +- ___fractutausa2 +- ___fractutauda2 +- ___fractutaqi +- ___fractutahi +- ___fractutasi +- ___fractutadi +- ___fractutati +- ___fractutasf +- ___fractutadf +- ___fractqiqq +- ___fractqihq +- ___fractqisq +- ___fractqidq +- ___fractqitq +- ___fractqiha +- ___fractqisa +- ___fractqida +- ___fractqita +- ___fractqiuqq +- ___fractqiuhq +- ___fractqiusq +- ___fractqiudq +- ___fractqiutq +- ___fractqiuha +- ___fractqiusa +- ___fractqiuda +- ___fractqiuta +- ___fracthiqq +- ___fracthihq +- ___fracthisq +- ___fracthidq +- ___fracthitq +- ___fracthiha +- ___fracthisa +- ___fracthida +- ___fracthita +- ___fracthiuqq +- ___fracthiuhq +- ___fracthiusq +- ___fracthiudq +- ___fracthiutq +- ___fracthiuha +- ___fracthiusa +- ___fracthiuda +- ___fracthiuta +- ___fractsiqq +- ___fractsihq +- ___fractsisq +- ___fractsidq +- ___fractsitq +- ___fractsiha +- ___fractsisa +- ___fractsida +- ___fractsita +- ___fractsiuqq +- ___fractsiuhq +- ___fractsiusq +- ___fractsiudq +- ___fractsiutq +- ___fractsiuha +- ___fractsiusa +- ___fractsiuda +- ___fractsiuta +- ___fractdiqq +- ___fractdihq +- ___fractdisq +- ___fractdidq +- ___fractditq +- ___fractdiha +- ___fractdisa +- ___fractdida +- ___fractdita +- ___fractdiuqq +- ___fractdiuhq +- ___fractdiusq +- ___fractdiudq +- ___fractdiutq +- ___fractdiuha +- ___fractdiusa +- ___fractdiuda +- ___fractdiuta +- ___fracttiqq +- ___fracttihq +- ___fracttisq +- ___fracttidq +- ___fracttitq +- ___fracttiha +- ___fracttisa +- ___fracttida +- ___fracttita +- ___fracttiuqq +- ___fracttiuhq +- ___fracttiusq +- ___fracttiudq +- ___fracttiutq +- ___fracttiuha +- ___fracttiusa +- ___fracttiuda +- ___fracttiuta +- ___fractsfqq +- ___fractsfhq +- ___fractsfsq +- ___fractsfdq +- ___fractsftq +- ___fractsfha +- ___fractsfsa +- ___fractsfda +- ___fractsfta +- ___fractsfuqq +- ___fractsfuhq +- ___fractsfusq +- ___fractsfudq +- ___fractsfutq +- ___fractsfuha +- ___fractsfusa +- ___fractsfuda +- ___fractsfuta +- ___fractdfqq +- ___fractdfhq +- ___fractdfsq +- ___fractdfdq +- ___fractdftq +- ___fractdfha +- ___fractdfsa +- ___fractdfda +- ___fractdfta +- ___fractdfuqq +- ___fractdfuhq +- ___fractdfusq +- ___fractdfudq +- ___fractdfutq +- ___fractdfuha +- ___fractdfusa +- ___fractdfuda +- ___fractdfuta +- ___satfractqqhq2 +- ___satfractqqsq2 +- ___satfractqqdq2 +- ___satfractqqtq2 +- ___satfractqqha +- ___satfractqqsa +- ___satfractqqda +- ___satfractqqta +- ___satfractqquqq +- ___satfractqquhq +- ___satfractqqusq +- ___satfractqqudq +- ___satfractqqutq +- ___satfractqquha +- ___satfractqqusa +- ___satfractqquda +- ___satfractqquta +- ___satfracthqqq2 +- ___satfracthqsq2 +- ___satfracthqdq2 +- ___satfracthqtq2 +- ___satfracthqha +- ___satfracthqsa +- ___satfracthqda +- ___satfracthqta +- ___satfracthquqq +- ___satfracthquhq +- ___satfracthqusq +- ___satfracthqudq +- ___satfracthqutq +- ___satfracthquha +- ___satfracthqusa +- ___satfracthquda +- ___satfracthquta +- ___satfractsqqq2 +- ___satfractsqhq2 +- ___satfractsqdq2 +- ___satfractsqtq2 +- ___satfractsqha +- ___satfractsqsa +- ___satfractsqda +- ___satfractsqta +- ___satfractsquqq +- ___satfractsquhq +- ___satfractsqusq +- ___satfractsqudq +- ___satfractsqutq +- ___satfractsquha +- ___satfractsqusa +- ___satfractsquda +- ___satfractsquta +- ___satfractdqqq2 +- ___satfractdqhq2 +- ___satfractdqsq2 +- ___satfractdqtq2 +- ___satfractdqha +- ___satfractdqsa +- ___satfractdqda +- ___satfractdqta +- ___satfractdquqq +- ___satfractdquhq +- ___satfractdqusq +- ___satfractdqudq +- ___satfractdqutq +- ___satfractdquha +- ___satfractdqusa +- ___satfractdquda +- ___satfractdquta +- ___satfracttqqq2 +- ___satfracttqhq2 +- ___satfracttqsq2 +- ___satfracttqdq2 +- ___satfracttqha +- ___satfracttqsa +- ___satfracttqda +- ___satfracttqta +- ___satfracttquqq +- ___satfracttquhq +- ___satfracttqusq +- ___satfracttqudq +- ___satfracttqutq +- ___satfracttquha +- ___satfracttqusa +- ___satfracttquda +- ___satfracttquta +- ___satfracthaqq +- ___satfracthahq +- ___satfracthasq +- ___satfracthadq +- ___satfracthatq +- ___satfracthasa2 +- ___satfracthada2 +- ___satfracthata2 +- ___satfracthauqq +- ___satfracthauhq +- ___satfracthausq +- ___satfracthaudq +- ___satfracthautq +- ___satfracthauha +- ___satfracthausa +- ___satfracthauda +- ___satfracthauta +- ___satfractsaqq +- ___satfractsahq +- ___satfractsasq +- ___satfractsadq +- ___satfractsatq +- ___satfractsaha2 +- ___satfractsada2 +- ___satfractsata2 +- ___satfractsauqq +- ___satfractsauhq +- ___satfractsausq +- ___satfractsaudq +- ___satfractsautq +- ___satfractsauha +- ___satfractsausa +- ___satfractsauda +- ___satfractsauta +- ___satfractdaqq +- ___satfractdahq +- ___satfractdasq +- ___satfractdadq +- ___satfractdatq +- ___satfractdaha2 +- ___satfractdasa2 +- ___satfractdata2 +- ___satfractdauqq +- ___satfractdauhq +- ___satfractdausq +- ___satfractdaudq +- ___satfractdautq +- ___satfractdauha +- ___satfractdausa +- ___satfractdauda +- ___satfractdauta +- ___satfracttaqq +- ___satfracttahq +- ___satfracttasq +- ___satfracttadq +- ___satfracttatq +- ___satfracttaha2 +- ___satfracttasa2 +- ___satfracttada2 +- ___satfracttauqq +- ___satfracttauhq +- ___satfracttausq +- ___satfracttaudq +- ___satfracttautq +- ___satfracttauha +- ___satfracttausa +- ___satfracttauda +- ___satfracttauta +- ___satfractuqqqq +- ___satfractuqqhq +- ___satfractuqqsq +- ___satfractuqqdq +- ___satfractuqqtq +- ___satfractuqqha +- ___satfractuqqsa +- ___satfractuqqda +- ___satfractuqqta +- ___satfractuqquhq2 +- ___satfractuqqusq2 +- ___satfractuqqudq2 +- ___satfractuqqutq2 +- ___satfractuqquha +- ___satfractuqqusa +- ___satfractuqquda +- ___satfractuqquta +- ___satfractuhqqq +- ___satfractuhqhq +- ___satfractuhqsq +- ___satfractuhqdq +- ___satfractuhqtq +- ___satfractuhqha +- ___satfractuhqsa +- ___satfractuhqda +- ___satfractuhqta +- ___satfractuhquqq2 +- ___satfractuhqusq2 +- ___satfractuhqudq2 +- ___satfractuhqutq2 +- ___satfractuhquha +- ___satfractuhqusa +- ___satfractuhquda +- ___satfractuhquta +- ___satfractusqqq +- ___satfractusqhq +- ___satfractusqsq +- ___satfractusqdq +- ___satfractusqtq +- ___satfractusqha +- ___satfractusqsa +- ___satfractusqda +- ___satfractusqta +- ___satfractusquqq2 +- ___satfractusquhq2 +- ___satfractusqudq2 +- ___satfractusqutq2 +- ___satfractusquha +- ___satfractusqusa +- ___satfractusquda +- ___satfractusquta +- ___satfractudqqq +- ___satfractudqhq +- ___satfractudqsq +- ___satfractudqdq +- ___satfractudqtq +- ___satfractudqha +- ___satfractudqsa +- ___satfractudqda +- ___satfractudqta +- ___satfractudquqq2 +- ___satfractudquhq2 +- ___satfractudqusq2 +- ___satfractudqutq2 +- ___satfractudquha +- ___satfractudqusa +- ___satfractudquda +- ___satfractudquta +- ___satfractutqqq +- ___satfractutqhq +- ___satfractutqsq +- ___satfractutqdq +- ___satfractutqtq +- ___satfractutqha +- ___satfractutqsa +- ___satfractutqda +- ___satfractutqta +- ___satfractutquqq2 +- ___satfractutquhq2 +- ___satfractutqusq2 +- ___satfractutqudq2 +- ___satfractutquha +- ___satfractutqusa +- ___satfractutquda +- ___satfractutquta +- ___satfractuhaqq +- ___satfractuhahq +- ___satfractuhasq +- ___satfractuhadq +- ___satfractuhatq +- ___satfractuhaha +- ___satfractuhasa +- ___satfractuhada +- ___satfractuhata +- ___satfractuhauqq +- ___satfractuhauhq +- ___satfractuhausq +- ___satfractuhaudq +- ___satfractuhautq +- ___satfractuhausa2 +- ___satfractuhauda2 +- ___satfractuhauta2 +- ___satfractusaqq +- ___satfractusahq +- ___satfractusasq +- ___satfractusadq +- ___satfractusatq +- ___satfractusaha +- ___satfractusasa +- ___satfractusada +- ___satfractusata +- ___satfractusauqq +- ___satfractusauhq +- ___satfractusausq +- ___satfractusaudq +- ___satfractusautq +- ___satfractusauha2 +- ___satfractusauda2 +- ___satfractusauta2 +- ___satfractudaqq +- ___satfractudahq +- ___satfractudasq +- ___satfractudadq +- ___satfractudatq +- ___satfractudaha +- ___satfractudasa +- ___satfractudada +- ___satfractudata +- ___satfractudauqq +- ___satfractudauhq +- ___satfractudausq +- ___satfractudaudq +- ___satfractudautq +- ___satfractudauha2 +- ___satfractudausa2 +- ___satfractudauta2 +- ___satfractutaqq +- ___satfractutahq +- ___satfractutasq +- ___satfractutadq +- ___satfractutatq +- ___satfractutaha +- ___satfractutasa +- ___satfractutada +- ___satfractutata +- ___satfractutauqq +- ___satfractutauhq +- ___satfractutausq +- ___satfractutaudq +- ___satfractutautq +- ___satfractutauha2 +- ___satfractutausa2 +- ___satfractutauda2 +- ___satfractqiqq +- ___satfractqihq +- ___satfractqisq +- ___satfractqidq +- ___satfractqitq +- ___satfractqiha +- ___satfractqisa +- ___satfractqida +- ___satfractqita +- ___satfractqiuqq +- ___satfractqiuhq +- ___satfractqiusq +- ___satfractqiudq +- ___satfractqiutq +- ___satfractqiuha +- ___satfractqiusa +- ___satfractqiuda +- ___satfractqiuta +- ___satfracthiqq +- ___satfracthihq +- ___satfracthisq +- ___satfracthidq +- ___satfracthitq +- ___satfracthiha +- ___satfracthisa +- ___satfracthida +- ___satfracthita +- ___satfracthiuqq +- ___satfracthiuhq +- ___satfracthiusq +- ___satfracthiudq +- ___satfracthiutq +- ___satfracthiuha +- ___satfracthiusa +- ___satfracthiuda +- ___satfracthiuta +- ___satfractsiqq +- ___satfractsihq +- ___satfractsisq +- ___satfractsidq +- ___satfractsitq +- ___satfractsiha +- ___satfractsisa +- ___satfractsida +- ___satfractsita +- ___satfractsiuqq +- ___satfractsiuhq +- ___satfractsiusq +- ___satfractsiudq +- ___satfractsiutq +- ___satfractsiuha +- ___satfractsiusa +- ___satfractsiuda +- ___satfractsiuta +- ___satfractdiqq +- ___satfractdihq +- ___satfractdisq +- ___satfractdidq +- ___satfractditq +- ___satfractdiha +- ___satfractdisa +- ___satfractdida +- ___satfractdita +- ___satfractdiuqq +- ___satfractdiuhq +- ___satfractdiusq +- ___satfractdiudq +- ___satfractdiutq +- ___satfractdiuha +- ___satfractdiusa +- ___satfractdiuda +- ___satfractdiuta +- ___satfracttiqq +- ___satfracttihq +- ___satfracttisq +- ___satfracttidq +- ___satfracttitq +- ___satfracttiha +- ___satfracttisa +- ___satfracttida +- ___satfracttita +- ___satfracttiuqq +- ___satfracttiuhq +- ___satfracttiusq +- ___satfracttiudq +- ___satfracttiutq +- ___satfracttiuha +- ___satfracttiusa +- ___satfracttiuda +- ___satfracttiuta +- ___satfractsfqq +- ___satfractsfhq +- ___satfractsfsq +- ___satfractsfdq +- ___satfractsftq +- ___satfractsfha +- ___satfractsfsa +- ___satfractsfda +- ___satfractsfta +- ___satfractsfuqq +- ___satfractsfuhq +- ___satfractsfusq +- ___satfractsfudq +- ___satfractsfutq +- ___satfractsfuha +- ___satfractsfusa +- ___satfractsfuda +- ___satfractsfuta +- ___satfractdfqq +- ___satfractdfhq +- ___satfractdfsq +- ___satfractdfdq +- ___satfractdftq +- ___satfractdfha +- ___satfractdfsa +- ___satfractdfda +- ___satfractdfta +- ___satfractdfuqq +- ___satfractdfuhq +- ___satfractdfusq +- ___satfractdfudq +- ___satfractdfutq +- ___satfractdfuha +- ___satfractdfusa +- ___satfractdfuda +- ___satfractdfuta +- ___fractunsqqqi +- ___fractunsqqhi +- ___fractunsqqsi +- ___fractunsqqdi +- ___fractunsqqti +- ___fractunshqqi +- ___fractunshqhi +- ___fractunshqsi +- ___fractunshqdi +- ___fractunshqti +- ___fractunssqqi +- ___fractunssqhi +- ___fractunssqsi +- ___fractunssqdi +- ___fractunssqti +- ___fractunsdqqi +- ___fractunsdqhi +- ___fractunsdqsi +- ___fractunsdqdi +- ___fractunsdqti +- ___fractunstqqi +- ___fractunstqhi +- ___fractunstqsi +- ___fractunstqdi +- ___fractunstqti +- ___fractunshaqi +- ___fractunshahi +- ___fractunshasi +- ___fractunshadi +- ___fractunshati +- ___fractunssaqi +- ___fractunssahi +- ___fractunssasi +- ___fractunssadi +- ___fractunssati +- ___fractunsdaqi +- ___fractunsdahi +- ___fractunsdasi +- ___fractunsdadi +- ___fractunsdati +- ___fractunstaqi +- ___fractunstahi +- ___fractunstasi +- ___fractunstadi +- ___fractunstati +- ___fractunsuqqqi +- ___fractunsuqqhi +- ___fractunsuqqsi +- ___fractunsuqqdi +- ___fractunsuqqti +- ___fractunsuhqqi +- ___fractunsuhqhi +- ___fractunsuhqsi +- ___fractunsuhqdi +- ___fractunsuhqti +- ___fractunsusqqi +- ___fractunsusqhi +- ___fractunsusqsi +- ___fractunsusqdi +- ___fractunsusqti +- ___fractunsudqqi +- ___fractunsudqhi +- ___fractunsudqsi +- ___fractunsudqdi +- ___fractunsudqti +- ___fractunsutqqi +- ___fractunsutqhi +- ___fractunsutqsi +- ___fractunsutqdi +- ___fractunsutqti +- ___fractunsuhaqi +- ___fractunsuhahi +- ___fractunsuhasi +- ___fractunsuhadi +- ___fractunsuhati +- ___fractunsusaqi +- ___fractunsusahi +- ___fractunsusasi +- ___fractunsusadi +- ___fractunsusati +- ___fractunsudaqi +- ___fractunsudahi +- ___fractunsudasi +- ___fractunsudadi +- ___fractunsudati +- ___fractunsutaqi +- ___fractunsutahi +- ___fractunsutasi +- ___fractunsutadi +- ___fractunsutati +- ___fractunsqiqq +- ___fractunsqihq +- ___fractunsqisq +- ___fractunsqidq +- ___fractunsqitq +- ___fractunsqiha +- ___fractunsqisa +- ___fractunsqida +- ___fractunsqita +- ___fractunsqiuqq +- ___fractunsqiuhq +- ___fractunsqiusq +- ___fractunsqiudq +- ___fractunsqiutq +- ___fractunsqiuha +- ___fractunsqiusa +- ___fractunsqiuda +- ___fractunsqiuta +- ___fractunshiqq +- ___fractunshihq +- ___fractunshisq +- ___fractunshidq +- ___fractunshitq +- ___fractunshiha +- ___fractunshisa +- ___fractunshida +- ___fractunshita +- ___fractunshiuqq +- ___fractunshiuhq +- ___fractunshiusq +- ___fractunshiudq +- ___fractunshiutq +- ___fractunshiuha +- ___fractunshiusa +- ___fractunshiuda +- ___fractunshiuta +- ___fractunssiqq +- ___fractunssihq +- ___fractunssisq +- ___fractunssidq +- ___fractunssitq +- ___fractunssiha +- ___fractunssisa +- ___fractunssida +- ___fractunssita +- ___fractunssiuqq +- ___fractunssiuhq +- ___fractunssiusq +- ___fractunssiudq +- ___fractunssiutq +- ___fractunssiuha +- ___fractunssiusa +- ___fractunssiuda +- ___fractunssiuta +- ___fractunsdiqq +- ___fractunsdihq +- ___fractunsdisq +- ___fractunsdidq +- ___fractunsditq +- ___fractunsdiha +- ___fractunsdisa +- ___fractunsdida +- ___fractunsdita +- ___fractunsdiuqq +- ___fractunsdiuhq +- ___fractunsdiusq +- ___fractunsdiudq +- ___fractunsdiutq +- ___fractunsdiuha +- ___fractunsdiusa +- ___fractunsdiuda +- ___fractunsdiuta +- ___fractunstiqq +- ___fractunstihq +- ___fractunstisq +- ___fractunstidq +- ___fractunstitq +- ___fractunstiha +- ___fractunstisa +- ___fractunstida +- ___fractunstita +- ___fractunstiuqq +- ___fractunstiuhq +- ___fractunstiusq +- ___fractunstiudq +- ___fractunstiutq +- ___fractunstiuha +- ___fractunstiusa +- ___fractunstiuda +- ___fractunstiuta +- ___satfractunsqiqq +- ___satfractunsqihq +- ___satfractunsqisq +- ___satfractunsqidq +- ___satfractunsqitq +- ___satfractunsqiha +- ___satfractunsqisa +- ___satfractunsqida +- ___satfractunsqita +- ___satfractunsqiuqq +- ___satfractunsqiuhq +- ___satfractunsqiusq +- ___satfractunsqiudq +- ___satfractunsqiutq +- ___satfractunsqiuha +- ___satfractunsqiusa +- ___satfractunsqiuda +- ___satfractunsqiuta +- ___satfractunshiqq +- ___satfractunshihq +- ___satfractunshisq +- ___satfractunshidq +- ___satfractunshitq +- ___satfractunshiha +- ___satfractunshisa +- ___satfractunshida +- ___satfractunshita +- ___satfractunshiuqq +- ___satfractunshiuhq +- ___satfractunshiusq +- ___satfractunshiudq +- ___satfractunshiutq +- ___satfractunshiuha +- ___satfractunshiusa +- ___satfractunshiuda +- ___satfractunshiuta +- ___satfractunssiqq +- ___satfractunssihq +- ___satfractunssisq +- ___satfractunssidq +- ___satfractunssitq +- ___satfractunssiha +- ___satfractunssisa +- ___satfractunssida +- ___satfractunssita +- ___satfractunssiuqq +- ___satfractunssiuhq +- ___satfractunssiusq +- ___satfractunssiudq +- ___satfractunssiutq +- ___satfractunssiuha +- ___satfractunssiusa +- ___satfractunssiuda +- ___satfractunssiuta +- ___satfractunsdiqq +- ___satfractunsdihq +- ___satfractunsdisq +- ___satfractunsdidq +- ___satfractunsditq +- ___satfractunsdiha +- ___satfractunsdisa +- ___satfractunsdida +- ___satfractunsdita +- ___satfractunsdiuqq +- ___satfractunsdiuhq +- ___satfractunsdiusq +- ___satfractunsdiudq +- ___satfractunsdiutq +- ___satfractunsdiuha +- ___satfractunsdiusa +- ___satfractunsdiuda +- ___satfractunsdiuta +- ___satfractunstiqq +- ___satfractunstihq +- ___satfractunstisq +- ___satfractunstidq +- ___satfractunstitq +- ___satfractunstiha +- ___satfractunstisa +- ___satfractunstida +- ___satfractunstita +- ___satfractunstiuqq +- ___satfractunstiuhq +- ___satfractunstiusq +- ___satfractunstiudq +- ___satfractunstiutq +- ___satfractunstiuha +- ___satfractunstiusa +- ___satfractunstiuda +- ___satfractunstiuta +-} +- +-%inherit GCC_4.4.0 GCC_4.3.0 +-GCC_4.4.0 { +- ___sync_fetch_and_add_1 +- ___sync_fetch_and_sub_1 +- ___sync_fetch_and_or_1 +- ___sync_fetch_and_and_1 +- ___sync_fetch_and_xor_1 +- ___sync_fetch_and_nand_1 +- ___sync_add_and_fetch_1 +- ___sync_sub_and_fetch_1 +- ___sync_or_and_fetch_1 +- ___sync_and_and_fetch_1 +- ___sync_xor_and_fetch_1 +- ___sync_nand_and_fetch_1 +- ___sync_bool_compare_and_swap_1 +- ___sync_val_compare_and_swap_1 +- ___sync_lock_test_and_set_1 +- +- ___sync_fetch_and_add_2 +- ___sync_fetch_and_sub_2 +- ___sync_fetch_and_or_2 +- ___sync_fetch_and_and_2 +- ___sync_fetch_and_xor_2 +- ___sync_fetch_and_nand_2 +- ___sync_add_and_fetch_2 +- ___sync_sub_and_fetch_2 +- ___sync_or_and_fetch_2 +- ___sync_and_and_fetch_2 +- ___sync_xor_and_fetch_2 +- ___sync_nand_and_fetch_2 +- ___sync_bool_compare_and_swap_2 +- ___sync_val_compare_and_swap_2 +- ___sync_lock_test_and_set_2 +- +- ___sync_fetch_and_add_4 +- ___sync_fetch_and_sub_4 +- ___sync_fetch_and_or_4 +- ___sync_fetch_and_and_4 +- ___sync_fetch_and_xor_4 +- ___sync_fetch_and_nand_4 +- ___sync_add_and_fetch_4 +- ___sync_sub_and_fetch_4 +- ___sync_or_and_fetch_4 +- ___sync_and_and_fetch_4 +- ___sync_xor_and_fetch_4 +- ___sync_nand_and_fetch_4 +- ___sync_bool_compare_and_swap_4 +- ___sync_val_compare_and_swap_4 +- ___sync_lock_test_and_set_4 +- +- ___sync_fetch_and_add_8 +- ___sync_fetch_and_sub_8 +- ___sync_fetch_and_or_8 +- ___sync_fetch_and_and_8 +- ___sync_fetch_and_xor_8 +- ___sync_fetch_and_nand_8 +- ___sync_add_and_fetch_8 +- ___sync_sub_and_fetch_8 +- ___sync_or_and_fetch_8 +- ___sync_and_and_fetch_8 +- ___sync_xor_and_fetch_8 +- ___sync_nand_and_fetch_8 +- ___sync_bool_compare_and_swap_8 +- ___sync_val_compare_and_swap_8 +- ___sync_lock_test_and_set_8 +- +- ___sync_fetch_and_add_16 +- ___sync_fetch_and_sub_16 +- ___sync_fetch_and_or_16 +- ___sync_fetch_and_and_16 +- ___sync_fetch_and_xor_16 +- ___sync_fetch_and_nand_16 +- ___sync_add_and_fetch_16 +- ___sync_sub_and_fetch_16 +- ___sync_or_and_fetch_16 +- ___sync_and_and_fetch_16 +- ___sync_xor_and_fetch_16 +- ___sync_nand_and_fetch_16 +- ___sync_bool_compare_and_swap_16 +- ___sync_val_compare_and_swap_16 +- ___sync_lock_test_and_set_16 +- +- ___sync_synchronize +-} +- +-%inherit GCC_4.5.0 GCC_4.4.0 +-GCC_4.5.0 { +- ___unordxf2 +- ___unordtf2 ++ __smulsi3_highpart ++ __umulsi3_highpart + } +diff --git a/libgcc/config/bfin/t-linux b/libgcc/config/bfin/t-linux +index 1c42e48..8898157 100644 +--- a/libgcc/config/bfin/t-linux ++++ b/libgcc/config/bfin/t-linux +@@ -1 +1,2 @@ +-SHLIB_MAPFILES = $(srcdir)/config/bfin/libgcc-glibc.ver ++SHLIB_MAPFILES += $(srcdir)/config/bfin/libgcc-glibc.ver ++SHLIB_MKMAP_OPTS = -v skip_underscore=1 +-- +2.7.4 + diff --git a/buildroot/package/gcc/6.4.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch b/buildroot/package/gcc/6.4.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch new file mode 100644 index 0000000..ce49de7 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch @@ -0,0 +1,59 @@ +From 9d9f97ca5d1ceba66677bf406c9b31027dc1f22e Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Fri, 19 Aug 2016 13:54:46 +0200 +Subject: [PATCH] libgcc: fix DWARF compilation with FDPIC targets + +The build of unwind-dw2-fde-dip.c currently fails for FDPIC targets with +the following error: + +libgcc/unwind-dw2-fde-dip.c:167:31: error: storage size of 'load_base' isn't known + struct elf32_fdpic_loadaddr load_base; + +This patch addresses that by defining load_base with the appropriate +type on FDPIC targets. It has been tested on FRV and Blackfin. + +Fixes PR gcc/68468. + +Signed-off-by: Waldemar Brodkorb +Signed-off-by: Thomas Petazzoni +--- + libgcc/unwind-dw2-fde-dip.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/libgcc/unwind-dw2-fde-dip.c b/libgcc/unwind-dw2-fde-dip.c +index f7a1c3f..801bce8 100644 +--- a/libgcc/unwind-dw2-fde-dip.c ++++ b/libgcc/unwind-dw2-fde-dip.c +@@ -124,7 +124,11 @@ static struct frame_hdr_cache_element + { + _Unwind_Ptr pc_low; + _Unwind_Ptr pc_high; ++#if defined __FRV_FDPIC__ || defined __BFIN_FDPIC__ ++ struct elf32_fdpic_loadaddr load_base; ++#else + _Unwind_Ptr load_base; ++#endif + const ElfW(Phdr) *p_eh_frame_hdr; + const ElfW(Phdr) *p_dynamic; + struct frame_hdr_cache_element *link; +@@ -163,7 +167,7 @@ _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr) + struct unw_eh_callback_data *data = (struct unw_eh_callback_data *) ptr; + const ElfW(Phdr) *phdr, *p_eh_frame_hdr, *p_dynamic; + long n, match; +-#ifdef __FRV_FDPIC__ ++#if defined __FRV_FDPIC__ || defined __BFIN_FDPIC__ + struct elf32_fdpic_loadaddr load_base; + #else + _Unwind_Ptr load_base; +@@ -347,7 +351,7 @@ _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr) + break; + } + } +-# elif defined __FRV_FDPIC__ && defined __linux__ ++# elif (defined __FRV_FDPIC__ || defined __BFIN_FDPIC__) && defined __linux__ + data->dbase = load_base.got_value; + # else + # error What is DW_EH_PE_datarel base on this platform? +-- +2.7.4 + diff --git a/buildroot/package/gcc/6.4.0/895-bfin-define-REENTRANT.patch b/buildroot/package/gcc/6.4.0/895-bfin-define-REENTRANT.patch new file mode 100644 index 0000000..e2828a5 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/895-bfin-define-REENTRANT.patch @@ -0,0 +1,17 @@ +enable _REENTRANT when -lpthread is used + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-6.2.0.orig/gcc/config/bfin/linux.h gcc-6.2.0/gcc/config/bfin/linux.h +--- gcc-6.2.0.orig/gcc/config/bfin/linux.h 2016-01-04 15:30:50.000000000 +0100 ++++ gcc-6.2.0/gcc/config/bfin/linux.h 2016-09-30 20:48:17.446636819 +0200 +@@ -38,6 +38,9 @@ + "%{static:--start-group} %{mfast-fp:-lbffastfp} %G %L %{static:--end-group} \ + %{!static:%{mfast-fp:-lbffastfp} %G}" + ++#undef CPP_SPEC ++#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" ++ + #undef LINK_SPEC + #define LINK_SPEC "\ + %{mfdpic: -m elf32bfinfd -z text} %{shared} %{pie} \ diff --git a/buildroot/package/gcc/6.4.0/896-microblaze-Revert.patch b/buildroot/package/gcc/6.4.0/896-microblaze-Revert.patch new file mode 100644 index 0000000..7026d0e --- /dev/null +++ b/buildroot/package/gcc/6.4.0/896-microblaze-Revert.patch @@ -0,0 +1,40 @@ +From 707a69dfb56a2976e2b5c010f0e5cb2ac9905a07 Mon Sep 17 00:00:00 2001 +From: eager +Date: Sat, 27 May 2017 18:29:40 +0000 +Subject: [PATCH] Revert: 2016-01-21 Ajit Agarwal + + + See https://gcc.gnu.org/ml/gcc/2017-05/msg00221.html. + + * config/microblaze/microblaze.h + (FIXED_REGISTERS): Update in macro. + (CALL_USED_REGISTERS): Update in macro. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@248540 138bc75d-0d04-0410-961f-82ee72b054a4 +Signed-off-by: Waldemar Brodkorb +diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h +index 66e4ef5..2c9ece1 100644 +--- a/gcc/config/microblaze/microblaze.h ++++ b/gcc/config/microblaze/microblaze.h +@@ -269,14 +269,14 @@ extern enum pipeline_type microblaze_pipe; + #define FIXED_REGISTERS \ + { \ + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, \ +- 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ ++ 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 1, 1, 1, 1 \ + } + + #define CALL_USED_REGISTERS \ + { \ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ +- 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ ++ 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 1, 1, 1, 1 \ + } + #define GP_REG_FIRST 0 +-- +2.1.4 + diff --git a/buildroot/package/gcc/6.4.0/897-Make-MicroBlaze-support-DWARF-EH-old-Xilinx-patch-ne.patch b/buildroot/package/gcc/6.4.0/897-Make-MicroBlaze-support-DWARF-EH-old-Xilinx-patch-ne.patch new file mode 100644 index 0000000..1f2dcab --- /dev/null +++ b/buildroot/package/gcc/6.4.0/897-Make-MicroBlaze-support-DWARF-EH-old-Xilinx-patch-ne.patch @@ -0,0 +1,178 @@ +From 81aab124bc697a87ad492d4cd3380599c0e0747e Mon Sep 17 00:00:00 2001 +From: jsm28 +Date: Fri, 6 Jan 2017 20:54:34 +0000 +Subject: [PATCH] Make MicroBlaze support DWARF EH (old Xilinx patch, needed + for glibc build). + +This patch, taken from + +and with a few formatting cleanups and an update for the removal of +gen_rtx_raw_REG, enables DWARF EH support for MicroBlaze. + +This is needed for building glibc with a compiler that includes shared +libgcc; right now all glibc builds for MicroBlaze are failing with my +bot for lack of this support. (It's dubious if we should have glibc +ports at all where required support is missing in FSF GCC.) + +Tested building glibc with build-many-glibcs.py. I have *not* done +any other testing or any execution testing for MicroBlaze. + +2017-01-06 Edgar E. Iglesias + David Holsgrove + + * common/config/microblaze/microblaze-common.c + (TARGET_EXCEPT_UNWIND_INFO): Remove. + * config/microblaze/microblaze-protos.h (microblaze_eh_return): + New prototype. + * config/microblaze/microblaze.c (microblaze_must_save_register) + (microblaze_expand_epilogue, microblaze_return_addr): Handle + calls_eh_return. + (microblaze_eh_return): New function. + * config/microblaze/microblaze.h (RETURN_ADDR_OFFSET) + (EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM) + (EH_RETURN_STACKADJ_RTX, ASM_PREFERRED_EH_DATA_FORMAT): New macros. + * config/microblaze/microblaze.md (eh_return): New pattern. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@244183 138bc75d-0d04-0410-961f-82ee72b054a4 +Signed-off-by: Waldemar Brodkorb +--- + gcc/common/config/microblaze/microblaze-common.c | 3 --- + gcc/config/microblaze/microblaze-protos.h | 1 + + gcc/config/microblaze/microblaze.c | 27 ++++++++++++++++++++---- + gcc/config/microblaze/microblaze.h | 16 ++++++++++++++ + gcc/config/microblaze/microblaze.md | 10 +++++++++ + 6 files changed, 66 insertions(+), 7 deletions(-) + +diff --git a/gcc/common/config/microblaze/microblaze-common.c b/gcc/common/config/microblaze/microblaze-common.c +index 57a3099..4975663 100644 +--- a/gcc/common/config/microblaze/microblaze-common.c ++++ b/gcc/common/config/microblaze/microblaze-common.c +@@ -37,7 +37,4 @@ static const struct default_options microblaze_option_optimization_table[] = + #undef TARGET_OPTION_OPTIMIZATION_TABLE + #define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table + +-#undef TARGET_EXCEPT_UNWIND_INFO +-#define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info +- + struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; +diff --git a/gcc/config/microblaze/microblaze-protos.h b/gcc/config/microblaze/microblaze-protos.h +index 6fb3066..9ba8f2d 100644 +--- a/gcc/config/microblaze/microblaze-protos.h ++++ b/gcc/config/microblaze/microblaze-protos.h +@@ -57,6 +57,7 @@ extern bool microblaze_tls_referenced_p (rtx); + extern int symbol_mentioned_p (rtx); + extern int label_mentioned_p (rtx); + extern bool microblaze_cannot_force_const_mem (machine_mode, rtx); ++extern void microblaze_eh_return (rtx op0); + #endif /* RTX_CODE */ + + /* Declare functions in microblaze-c.c. */ +diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c +index 03b70e1..746bef1 100644 +--- a/gcc/config/microblaze/microblaze.c ++++ b/gcc/config/microblaze/microblaze.c +@@ -1926,6 +1926,10 @@ microblaze_must_save_register (int regno) + if (frame_pointer_needed && (regno == HARD_FRAME_POINTER_REGNUM)) + return 1; + ++ if (crtl->calls_eh_return ++ && regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) ++ return 1; ++ + if (!crtl->is_leaf) + { + if (regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) +@@ -1953,6 +1957,11 @@ microblaze_must_save_register (int regno) + return 1; + } + ++ if (crtl->calls_eh_return ++ && (regno == EH_RETURN_DATA_REGNO (0) ++ || regno == EH_RETURN_DATA_REGNO (1))) ++ return 1; ++ + return 0; + } + +@@ -3029,6 +3038,12 @@ microblaze_expand_epilogue (void) + emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, fsiz_rtx)); + } + ++ if (crtl->calls_eh_return) ++ emit_insn (gen_addsi3 (stack_pointer_rtx, ++ stack_pointer_rtx, ++ gen_raw_REG (SImode, ++ MB_EH_STACKADJ_REGNUM))); ++ + emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, GP_REG_FIRST + + MB_ABI_SUB_RETURN_ADDR_REGNUM))); + } +@@ -3326,10 +3341,14 @@ microblaze_return_addr (int count, rtx frame ATTRIBUTE_UNUSED) + if (count != 0) + return NULL_RTX; + +- return gen_rtx_PLUS (Pmode, +- get_hard_reg_initial_val (Pmode, +- MB_ABI_SUB_RETURN_ADDR_REGNUM), +- GEN_INT (8)); ++ return get_hard_reg_initial_val (Pmode, ++ MB_ABI_SUB_RETURN_ADDR_REGNUM); ++} ++ ++void ++microblaze_eh_return (rtx op0) ++{ ++ emit_insn (gen_movsi (gen_rtx_MEM (Pmode, stack_pointer_rtx), op0)); + } + + /* Queue an .ident string in the queue of top-level asm statements. +diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h +index 527f4d3..8fdadbf 100644 +--- a/gcc/config/microblaze/microblaze.h ++++ b/gcc/config/microblaze/microblaze.h +@@ -184,6 +184,22 @@ extern enum pipeline_type microblaze_pipe; + #define INCOMING_RETURN_ADDR_RTX \ + gen_rtx_REG (Pmode, GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM) + ++/* Specifies the offset from INCOMING_RETURN_ADDR_RTX and the actual return PC. */ ++#define RETURN_ADDR_OFFSET (8) ++ ++/* Describe how we implement __builtin_eh_return. */ ++#define EH_RETURN_DATA_REGNO(N) \ ++ (((N) < 2) ? MB_ABI_FIRST_ARG_REGNUM + (N) : INVALID_REGNUM) ++ ++#define MB_EH_STACKADJ_REGNUM MB_ABI_INT_RETURN_VAL2_REGNUM ++#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, MB_EH_STACKADJ_REGNUM) ++ ++/* Select a format to encode pointers in exception handling data. CODE ++ is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is ++ true if the symbol may be affected by dynamic relocations. */ ++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ ++ ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr) ++ + /* Use DWARF 2 debugging information by default. */ + #define DWARF2_DEBUGGING_INFO + #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG +diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md +index 8f83daa..66ebc1e 100644 +--- a/gcc/config/microblaze/microblaze.md ++++ b/gcc/config/microblaze/microblaze.md +@@ -2324,4 +2324,14 @@ + (set_attr "mode" "SI") + (set_attr "length" "4")]) + ++; This is used in compiling the unwind routines. ++(define_expand "eh_return" ++ [(use (match_operand 0 "general_operand" ""))] ++ "" ++ " ++{ ++ microblaze_eh_return (operands[0]); ++ DONE; ++}") ++ + (include "sync.md") +-- +2.1.4 + diff --git a/buildroot/package/gcc/6.4.0/940-uclinux-enable-threads.patch b/buildroot/package/gcc/6.4.0/940-uclinux-enable-threads.patch new file mode 100644 index 0000000..5532656 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/940-uclinux-enable-threads.patch @@ -0,0 +1,19 @@ +Enable POSIX threads for uClinux targets +Reported upstream: +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71721 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-6.1.0.orig/gcc/config.gcc gcc-6.1.0/gcc/config.gcc +--- gcc-6.1.0.orig/gcc/config.gcc 2016-04-11 12:14:59.000000000 +0200 ++++ gcc-6.1.0/gcc/config.gcc 2016-07-02 20:04:25.732169982 +0200 +@@ -833,6 +833,9 @@ + *-*-uclinux*) + extra_options="$extra_options gnu-user.opt" + use_gcc_stdint=wrap ++ case ${enable_threads} in ++ "" | yes | posix) thread_file='posix' ;; ++ esac + tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC" + ;; + *-*-rdos*) diff --git a/buildroot/package/gcc/6.4.0/941-mips-Add-support-for-mips-r6-musl.patch b/buildroot/package/gcc/6.4.0/941-mips-Add-support-for-mips-r6-musl.patch new file mode 100644 index 0000000..337d376 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/941-mips-Add-support-for-mips-r6-musl.patch @@ -0,0 +1,43 @@ +From 83717065090bb8b954556d1216dd9dc397dc0243 Mon Sep 17 00:00:00 2001 +From: nsz +Date: Thu, 25 Aug 2016 14:13:02 +0000 +Subject: [PATCH] [mips] Add support for mips*r6-*-musl + +gcc/ + * config/mips/linux.h (MUSL_DYNAMIC_LINKER32): Update. + (MUSL_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKERN32): Update. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@239760 138bc75d-0d04-0410-961f-82ee72b054a4 + +[Vincent: tweak to not patch ChangeLog] + +Signed-off-by: Vicente Olivert Riera +--- + gcc/config/mips/linux.h | 9 ++++++--- + 1 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h +index fa253b6..dc51c45 100644 +--- a/gcc/config/mips/linux.h ++++ b/gcc/config/mips/linux.h +@@ -38,10 +38,13 @@ along with GCC; see the file COPYING3. If not see + "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}" + + #undef MUSL_DYNAMIC_LINKER32 +-#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-mips%{EL:el}%{msoft-float:-sf}.so.1" ++#define MUSL_DYNAMIC_LINKER32 \ ++ "/lib/ld-musl-mips%{mips32r6|mips64r6:r6}%{EL:el}%{msoft-float:-sf}.so.1" + #undef MUSL_DYNAMIC_LINKER64 +-#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-mips64%{EL:el}%{msoft-float:-sf}.so.1" +-#define MUSL_DYNAMIC_LINKERN32 "/lib/ld-musl-mipsn32%{EL:el}%{msoft-float:-sf}.so.1" ++#define MUSL_DYNAMIC_LINKER64 \ ++ "/lib/ld-musl-mips64%{mips64r6:r6}%{EL:el}%{msoft-float:-sf}.so.1" ++#define MUSL_DYNAMIC_LINKERN32 \ ++ "/lib/ld-musl-mipsn32%{mips64r6:r6}%{EL:el}%{msoft-float:-sf}.so.1" + + #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32" + #define GNU_USER_DYNAMIC_LINKERN32 \ +-- +2.10.0 + diff --git a/buildroot/package/gcc/6.4.0/942-Use-ucontext_t-not-struct-ucontext-in-linux-unwind.h.patch b/buildroot/package/gcc/6.4.0/942-Use-ucontext_t-not-struct-ucontext-in-linux-unwind.h.patch new file mode 100644 index 0000000..a2a2ea0 --- /dev/null +++ b/buildroot/package/gcc/6.4.0/942-Use-ucontext_t-not-struct-ucontext-in-linux-unwind.h.patch @@ -0,0 +1,192 @@ +From 35d8ca22047f101a700abb29cffbf03b81278a2b Mon Sep 17 00:00:00 2001 +From: jsm28 +Date: Tue, 4 Jul 2017 10:23:57 +0000 +Subject: [PATCH] Use ucontext_t not struct ucontext in linux-unwind.h files. + +Current glibc no longer gives the ucontext_t type the tag struct +ucontext, to conform with POSIX namespace rules. This requires +various linux-unwind.h files in libgcc, that were previously using +struct ucontext, to be fixed to use ucontext_t instead. This is +similar to the removal of the struct siginfo tag from siginfo_t some +years ago. + +This patch changes those files to use ucontext_t instead. As the +standard name that should be unconditionally safe, so this is not +restricted to architectures supported by glibc, or conditioned on the +glibc version. + +Tested compilation together with current glibc with glibc's +build-many-glibcs.py. + + * config/aarch64/linux-unwind.h (aarch64_fallback_frame_state), + config/alpha/linux-unwind.h (alpha_fallback_frame_state), + config/bfin/linux-unwind.h (bfin_fallback_frame_state), + config/i386/linux-unwind.h (x86_64_fallback_frame_state, + x86_fallback_frame_state), config/m68k/linux-unwind.h (struct + uw_ucontext), config/nios2/linux-unwind.h (struct nios2_ucontext), + config/pa/linux-unwind.h (pa32_fallback_frame_state), + config/sh/linux-unwind.h (sh_fallback_frame_state), + config/tilepro/linux-unwind.h (tile_fallback_frame_state), + config/xtensa/linux-unwind.h (xtensa_fallback_frame_state): Use + ucontext_t instead of struct ucontext. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-6-branch@249957 138bc75d-0d04-0410-961f-82ee72b054a4 + +(cherry picked from commit b685411208e0aaa79190d54faf945763514706b8) +[Romain rebase on gcc 6.4] +Signed-off-by: Romain Naour +--- + libgcc/config/aarch64/linux-unwind.h | 2 +- + libgcc/config/alpha/linux-unwind.h | 2 +- + libgcc/config/bfin/linux-unwind.h | 2 +- + libgcc/config/i386/linux-unwind.h | 4 ++-- + libgcc/config/m68k/linux-unwind.h | 2 +- + libgcc/config/nios2/linux-unwind.h | 2 +- + libgcc/config/pa/linux-unwind.h | 2 +- + libgcc/config/sh/linux-unwind.h | 2 +- + libgcc/config/tilepro/linux-unwind.h | 2 +- + libgcc/config/xtensa/linux-unwind.h | 2 +- + 10 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/libgcc/config/aarch64/linux-unwind.h b/libgcc/config/aarch64/linux-unwind.h +index 4512efb..06de45a 100644 +--- a/libgcc/config/aarch64/linux-unwind.h ++++ b/libgcc/config/aarch64/linux-unwind.h +@@ -52,7 +52,7 @@ aarch64_fallback_frame_state (struct _Unwind_Context *context, + struct rt_sigframe + { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + }; + + struct rt_sigframe *rt_; +diff --git a/libgcc/config/alpha/linux-unwind.h b/libgcc/config/alpha/linux-unwind.h +index bdbba4a..e84812e 100644 +--- a/libgcc/config/alpha/linux-unwind.h ++++ b/libgcc/config/alpha/linux-unwind.h +@@ -51,7 +51,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context, + { + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + sc = &rt_->uc.uc_mcontext; + } +diff --git a/libgcc/config/bfin/linux-unwind.h b/libgcc/config/bfin/linux-unwind.h +index 77b7c23..8bf5e82 100644 +--- a/libgcc/config/bfin/linux-unwind.h ++++ b/libgcc/config/bfin/linux-unwind.h +@@ -52,7 +52,7 @@ bfin_fallback_frame_state (struct _Unwind_Context *context, + void *puc; + char retcode[8]; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + + /* The void * cast is necessary to avoid an aliasing warning. +diff --git a/libgcc/config/i386/linux-unwind.h b/libgcc/config/i386/linux-unwind.h +index 540a0a2..29efbe3 100644 +--- a/libgcc/config/i386/linux-unwind.h ++++ b/libgcc/config/i386/linux-unwind.h +@@ -58,7 +58,7 @@ x86_64_fallback_frame_state (struct _Unwind_Context *context, + if (*(unsigned char *)(pc+0) == 0x48 + && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL) + { +- struct ucontext *uc_ = context->cfa; ++ ucontext_t *uc_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem + because it does not alias anything. */ +@@ -138,7 +138,7 @@ x86_fallback_frame_state (struct _Unwind_Context *context, + siginfo_t *pinfo; + void *puc; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem +diff --git a/libgcc/config/m68k/linux-unwind.h b/libgcc/config/m68k/linux-unwind.h +index 75b7cf7..f964e24 100644 +--- a/libgcc/config/m68k/linux-unwind.h ++++ b/libgcc/config/m68k/linux-unwind.h +@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + /* is unfortunately broken right now. */ + struct uw_ucontext { + unsigned long uc_flags; +- struct ucontext *uc_link; ++ ucontext_t *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + unsigned long uc_filler[80]; +diff --git a/libgcc/config/nios2/linux-unwind.h b/libgcc/config/nios2/linux-unwind.h +index 2304142..30f25ea 100644 +--- a/libgcc/config/nios2/linux-unwind.h ++++ b/libgcc/config/nios2/linux-unwind.h +@@ -38,7 +38,7 @@ struct nios2_mcontext { + + struct nios2_ucontext { + unsigned long uc_flags; +- struct ucontext *uc_link; ++ ucontext_t *uc_link; + stack_t uc_stack; + struct nios2_mcontext uc_mcontext; + sigset_t uc_sigmask; /* mask last for extensibility */ +diff --git a/libgcc/config/pa/linux-unwind.h b/libgcc/config/pa/linux-unwind.h +index 9a2657f..e47493d 100644 +--- a/libgcc/config/pa/linux-unwind.h ++++ b/libgcc/config/pa/linux-unwind.h +@@ -80,7 +80,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *context, + struct sigcontext *sc; + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *frame; + + /* rt_sigreturn trampoline: +diff --git a/libgcc/config/sh/linux-unwind.h b/libgcc/config/sh/linux-unwind.h +index e389cac..0bf43ba 100644 +--- a/libgcc/config/sh/linux-unwind.h ++++ b/libgcc/config/sh/linux-unwind.h +@@ -180,7 +180,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context, + { + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_ = context->cfa; + /* The void * cast is necessary to avoid an aliasing warning. + The aliasing warning is correct, but should not be a problem +diff --git a/libgcc/config/tilepro/linux-unwind.h b/libgcc/config/tilepro/linux-unwind.h +index 796e976..75f8890 100644 +--- a/libgcc/config/tilepro/linux-unwind.h ++++ b/libgcc/config/tilepro/linux-unwind.h +@@ -61,7 +61,7 @@ tile_fallback_frame_state (struct _Unwind_Context *context, + struct rt_sigframe { + unsigned char save_area[C_ABI_SAVE_AREA_SIZE]; + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_; + + /* Return if this is not a signal handler. */ +diff --git a/libgcc/config/xtensa/linux-unwind.h b/libgcc/config/xtensa/linux-unwind.h +index 9872492..586a9d4 100644 +--- a/libgcc/config/xtensa/linux-unwind.h ++++ b/libgcc/config/xtensa/linux-unwind.h +@@ -67,7 +67,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *context, + + struct rt_sigframe { + siginfo_t info; +- struct ucontext uc; ++ ucontext_t uc; + } *rt_; + + /* movi a2, __NR_rt_sigreturn; syscall */ +-- +2.9.5 + diff --git a/buildroot/package/gcc/6.4.0/943-sanitizer-linux.patch b/buildroot/package/gcc/6.4.0/943-sanitizer-linux.patch new file mode 100644 index 0000000..640d68c --- /dev/null +++ b/buildroot/package/gcc/6.4.0/943-sanitizer-linux.patch @@ -0,0 +1,91 @@ +From a3e3d1b5f73380a99126c4937a95225ba3bd214b Mon Sep 17 00:00:00 2001 +From: doko +Date: Thu, 7 Sep 2017 07:15:24 +0000 +Subject: [PATCH] 2017-09-07 Matthias Klose + + Backported from mainline + 2017-07-14 Jakub Jelinek + + PR sanitizer/81066 + * sanitizer_common/sanitizer_linux.h: Cherry-pick upstream r307969. + * sanitizer_common/sanitizer_linux.cc: Likewise. + * sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc: Likewise. + * tsan/tsan_platform_linux.cc: Likewise. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-6-branch@251828 138bc75d-0d04-0410-961f-82ee72b054a4 + +(cherry picked from commit 8937b94d1a643fd9760714642296d034a45254a8) +[Romain rebase on gcc 6.4] +Signed-off-by: Romain Naour +--- + libsanitizer/sanitizer_common/sanitizer_linux.cc | 3 +-- + libsanitizer/sanitizer_common/sanitizer_linux.h | 4 +--- + libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc | 2 +- + libsanitizer/tsan/tsan_platform_linux.cc | 2 +- + 4 files changed, 4 insertions(+), 7 deletions(-) + +diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.cc b/libsanitizer/sanitizer_common/sanitizer_linux.cc +index 2cefa20..223d9c6 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_linux.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_linux.cc +@@ -546,8 +546,7 @@ uptr internal_prctl(int option, uptr arg2, uptr arg3, uptr arg4, uptr arg5) { + } + #endif + +-uptr internal_sigaltstack(const struct sigaltstack *ss, +- struct sigaltstack *oss) { ++uptr internal_sigaltstack(const void *ss, void *oss) { + return internal_syscall(SYSCALL(sigaltstack), (uptr)ss, (uptr)oss); + } + +diff --git a/libsanitizer/sanitizer_common/sanitizer_linux.h b/libsanitizer/sanitizer_common/sanitizer_linux.h +index 4497702..1594058 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_linux.h ++++ b/libsanitizer/sanitizer_common/sanitizer_linux.h +@@ -19,7 +19,6 @@ + #include "sanitizer_platform_limits_posix.h" + + struct link_map; // Opaque type returned by dlopen(). +-struct sigaltstack; + + namespace __sanitizer { + // Dirent structure for getdents(). Note that this structure is different from +@@ -28,8 +27,7 @@ struct linux_dirent; + + // Syscall wrappers. + uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count); +-uptr internal_sigaltstack(const struct sigaltstack* ss, +- struct sigaltstack* oss); ++uptr internal_sigaltstack(const void* ss, void* oss); + uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set, + __sanitizer_sigset_t *oldset); + void internal_sigfillset(__sanitizer_sigset_t *set); +diff --git a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc +index c919e4f..014162af 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc +@@ -267,7 +267,7 @@ static int TracerThread(void* argument) { + + // Alternate stack for signal handling. + InternalScopedBuffer handler_stack_memory(kHandlerStackSize); +- struct sigaltstack handler_stack; ++ stack_t handler_stack; + internal_memset(&handler_stack, 0, sizeof(handler_stack)); + handler_stack.ss_sp = handler_stack_memory.data(); + handler_stack.ss_size = kHandlerStackSize; +diff --git a/libsanitizer/tsan/tsan_platform_linux.cc b/libsanitizer/tsan/tsan_platform_linux.cc +index 09cec5f..908f4fe 100644 +--- a/libsanitizer/tsan/tsan_platform_linux.cc ++++ b/libsanitizer/tsan/tsan_platform_linux.cc +@@ -291,7 +291,7 @@ bool IsGlobalVar(uptr addr) { + int ExtractResolvFDs(void *state, int *fds, int nfd) { + #if SANITIZER_LINUX + int cnt = 0; +- __res_state *statp = (__res_state*)state; ++ struct __res_state *statp = (struct __res_state*)state; + for (int i = 0; i < MAXNS && cnt < nfd; i++) { + if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1) + fds[cnt++] = statp->_u._ext.nssocks[i]; +-- +2.9.5 + diff --git a/buildroot/package/gcc/7.3.0/0002-xtensa-fix-PR-target-65416.patch b/buildroot/package/gcc/7.3.0/0002-xtensa-fix-PR-target-65416.patch new file mode 100644 index 0000000..7ead575 --- /dev/null +++ b/buildroot/package/gcc/7.3.0/0002-xtensa-fix-PR-target-65416.patch @@ -0,0 +1,101 @@ +From 87fda0741d210727672cba5e54a37a189e8ac04e Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Sun, 17 Jun 2018 21:18:39 -0700 +Subject: [PATCH] xtensa: fix PR target/65416 + +The issue is caused by reordering of stack pointer update after stack +space allocation with instructions that write to the allocated stack +space. In windowed ABI register spill area for the previous call frame +is located just below the stack pointer and may be reloaded back into +the register file on movsp. +Implement allocate_stack pattern for windowed ABI configuration and +insert an instruction that prevents reordering of frame memory access +and stack pointer update. + +gcc/ +2018-06-19 Max Filippov + + * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec + constant. + (allocate_stack, frame_blockage, *frame_blockage): New patterns. + +Signed-off-by: Max Filippov +Backported from: r261755 +--- + gcc/config/xtensa/xtensa.md | 46 +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md +index 84967dbedc08..209f839cfb0f 100644 +--- a/gcc/config/xtensa/xtensa.md ++++ b/gcc/config/xtensa/xtensa.md +@@ -38,6 +38,7 @@ + (UNSPEC_MEMW 11) + (UNSPEC_LSETUP_START 12) + (UNSPEC_LSETUP_END 13) ++ (UNSPEC_FRAME_BLOCKAGE 14) + + (UNSPECV_SET_FP 1) + (UNSPECV_ENTRY 2) +@@ -1676,6 +1677,32 @@ + + ;; Miscellaneous instructions. + ++;; In windowed ABI stack pointer adjustment must happen before any access ++;; to the space allocated on stack is allowed, otherwise register spill ++;; area may be clobbered. That's what frame blockage is supposed to enforce. ++ ++(define_expand "allocate_stack" ++ [(set (match_operand 0 "nonimmed_operand") ++ (minus (reg A1_REG) (match_operand 1 "add_operand"))) ++ (set (reg A1_REG) ++ (minus (reg A1_REG) (match_dup 1)))] ++ "TARGET_WINDOWED_ABI" ++{ ++ if (CONST_INT_P (operands[1])) ++ { ++ rtx neg_op0 = GEN_INT (-INTVAL (operands[1])); ++ emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, neg_op0)); ++ } ++ else ++ { ++ emit_insn (gen_subsi3 (stack_pointer_rtx, stack_pointer_rtx, ++ operands[1])); ++ } ++ emit_move_insn (operands[0], virtual_stack_dynamic_rtx); ++ emit_insn (gen_frame_blockage ()); ++ DONE; ++}) ++ + (define_expand "prologue" + [(const_int 0)] + "" +@@ -1767,6 +1794,25 @@ + [(set_attr "length" "0") + (set_attr "type" "nop")]) + ++;; Do not schedule instructions accessing memory before this point. ++ ++(define_expand "frame_blockage" ++ [(set (match_dup 0) ++ (unspec:BLK [(match_dup 1)] UNSPEC_FRAME_BLOCKAGE))] ++ "" ++{ ++ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); ++ MEM_VOLATILE_P (operands[0]) = 1; ++ operands[1] = stack_pointer_rtx; ++}) ++ ++(define_insn "*frame_blockage" ++ [(set (match_operand:BLK 0 "" "") ++ (unspec:BLK [(match_operand:SI 1 "" "")] UNSPEC_FRAME_BLOCKAGE))] ++ "" ++ "" ++ [(set_attr "length" "0")]) ++ + (define_insn "trap" + [(trap_if (const_int 1) (const_int 0))] + "" +-- +2.11.0 + diff --git a/buildroot/package/gcc/7.3.0/0100-uclibc-conf.patch b/buildroot/package/gcc/7.3.0/0100-uclibc-conf.patch new file mode 100644 index 0000000..d354baf --- /dev/null +++ b/buildroot/package/gcc/7.3.0/0100-uclibc-conf.patch @@ -0,0 +1,29 @@ +From 326b880b20e5f8187dbda736b4c4c662cbfb00ca Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Tue, 2 May 2017 22:36:15 +0200 +Subject: [PATCH] uclibc-conf + +[Romain: convert to git patch] +Signed-off-by: Romain Naour +--- + contrib/regression/objs-gcc.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh +index 60b0497..6dc7ead 100755 +--- a/contrib/regression/objs-gcc.sh ++++ b/contrib/regression/objs-gcc.sh +@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ] + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] ++ then ++ make all-gdb all-dejagnu all-ld || exit 1 ++ make install-gdb install-dejagnu install-ld || exit 1 + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then + make bootstrap || exit 1 + make install || exit 1 +-- +2.9.3 + diff --git a/buildroot/package/gcc/7.3.0/0810-arm-softfloat-libgcc.patch b/buildroot/package/gcc/7.3.0/0810-arm-softfloat-libgcc.patch new file mode 100644 index 0000000..63880dd --- /dev/null +++ b/buildroot/package/gcc/7.3.0/0810-arm-softfloat-libgcc.patch @@ -0,0 +1,45 @@ +From 420a304ac0daa29d66da6ed5b0b49fc4c482d522 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Tue, 2 May 2017 22:46:18 +0200 +Subject: [PATCH] arm softfloat libgcc + +[Romain: convert to git patch] +Signed-off-by: Romain Naour +--- + gcc/config/arm/linux-elf.h | 2 +- + libgcc/config/arm/t-linux | 7 ++++++- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h +index 3d62367..dad0b97 100644 +--- a/gcc/config/arm/linux-elf.h ++++ b/gcc/config/arm/linux-elf.h +@@ -58,7 +58,7 @@ + %{shared:-lc} \ + %{!shared:%{profile:-lc_p}%{!profile:-lc}}" + +-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc" ++#define LIBGCC_SPEC "-lgcc" + + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" + +diff --git a/libgcc/config/arm/t-linux b/libgcc/config/arm/t-linux +index 3d520de..e7bc042 100644 +--- a/libgcc/config/arm/t-linux ++++ b/libgcc/config/arm/t-linux +@@ -1,6 +1,11 @@ + LIB1ASMSRC = arm/lib1funcs.S + LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ +- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 ++ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \ ++ _arm_addsubdf3 _arm_addsubsf3 \ ++ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ ++ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \ ++ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \ ++ _arm_fixsfsi _arm_fixunssfsi + + # Just for these, we omit the frame pointer since it makes such a big + # difference. +-- +2.9.3 + diff --git a/buildroot/package/gcc/7.3.0/0860-cilk-fix-build-without-wchar.patch b/buildroot/package/gcc/7.3.0/0860-cilk-fix-build-without-wchar.patch new file mode 100644 index 0000000..61ab01c --- /dev/null +++ b/buildroot/package/gcc/7.3.0/0860-cilk-fix-build-without-wchar.patch @@ -0,0 +1,64 @@ +From 714739e69ead1d9823233af40645277f6d4633ea Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Tue, 2 May 2017 23:21:46 +0200 +Subject: [PATCH] cilk: fix build without wchar + +When building against uClibc with wchar support disabled, WCHAR_MIN and +WCHAR_MAX are not defined leading to compilation errors. + +Fix it by only including the wchar code if available. + +Signed-off-by: Peter Korsgaard +[Romain: convert to git patch] +Signed-off-by: Romain Naour +--- + libcilkrts/include/cilk/reducer_min_max.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/libcilkrts/include/cilk/reducer_min_max.h b/libcilkrts/include/cilk/reducer_min_max.h +index 641aa82..4f8e010 100644 +--- a/libcilkrts/include/cilk/reducer_min_max.h ++++ b/libcilkrts/include/cilk/reducer_min_max.h +@@ -3289,7 +3289,9 @@ __CILKRTS_BEGIN_EXTERN_C + CILK_C_REDUCER_MAX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INSTANCE(int, int, INT_MIN) +@@ -3441,7 +3443,9 @@ __CILKRTS_BEGIN_EXTERN_C + CILK_C_REDUCER_MAX_INDEX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INDEX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(int, int, INT_MIN) +@@ -3567,7 +3571,9 @@ __CILKRTS_BEGIN_EXTERN_C + CILK_C_REDUCER_MIN_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(int, int, INT_MAX) +@@ -3719,7 +3725,9 @@ __CILKRTS_BEGIN_EXTERN_C + CILK_C_REDUCER_MIN_INDEX_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INDEX_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(int, int, INT_MAX) +-- +2.9.3 + diff --git a/buildroot/package/gcc/7.3.0/0891-fix-m68k-uclinux.patch b/buildroot/package/gcc/7.3.0/0891-fix-m68k-uclinux.patch new file mode 100644 index 0000000..e84fd92 --- /dev/null +++ b/buildroot/package/gcc/7.3.0/0891-fix-m68k-uclinux.patch @@ -0,0 +1,30 @@ +From c2773170a1b0e2728f71f2275a99fd177ba2cef4 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Tue, 2 May 2017 23:25:17 +0200 +Subject: [PATCH] fix m68k uclinux avoids internal compiler error while + compiling linux-atomic.c See here: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53833 + +Signed-off-by: Waldemar Brodkorb +[Romain: convert to git patch] +Signed-off-by: Romain Naour +--- + libgcc/config.host | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libgcc/config.host b/libgcc/config.host +index b279a64..04fe183 100644 +--- a/libgcc/config.host ++++ b/libgcc/config.host +@@ -820,7 +820,7 @@ m68k*-*-netbsdelf*) + m68k*-*-openbsd*) + ;; + m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc +- tmake_file="$tmake_file m68k/t-floatlib m68k/t-linux" ++ tmake_file="$tmake_file m68k/t-floatlib" + md_unwind_header=m68k/linux-unwind.h + ;; + m68k-*-linux*) # Motorola m68k's running GNU/Linux +-- +2.9.3 + diff --git a/buildroot/package/gcc/7.3.0/0892-microblaze-Revert.patch b/buildroot/package/gcc/7.3.0/0892-microblaze-Revert.patch new file mode 100644 index 0000000..7026d0e --- /dev/null +++ b/buildroot/package/gcc/7.3.0/0892-microblaze-Revert.patch @@ -0,0 +1,40 @@ +From 707a69dfb56a2976e2b5c010f0e5cb2ac9905a07 Mon Sep 17 00:00:00 2001 +From: eager +Date: Sat, 27 May 2017 18:29:40 +0000 +Subject: [PATCH] Revert: 2016-01-21 Ajit Agarwal + + + See https://gcc.gnu.org/ml/gcc/2017-05/msg00221.html. + + * config/microblaze/microblaze.h + (FIXED_REGISTERS): Update in macro. + (CALL_USED_REGISTERS): Update in macro. + + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@248540 138bc75d-0d04-0410-961f-82ee72b054a4 +Signed-off-by: Waldemar Brodkorb +diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h +index 66e4ef5..2c9ece1 100644 +--- a/gcc/config/microblaze/microblaze.h ++++ b/gcc/config/microblaze/microblaze.h +@@ -269,14 +269,14 @@ extern enum pipeline_type microblaze_pipe; + #define FIXED_REGISTERS \ + { \ + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, \ +- 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ ++ 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 1, 1, 1, 1 \ + } + + #define CALL_USED_REGISTERS \ + { \ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ +- 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ ++ 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 1, 1, 1, 1 \ + } + #define GP_REG_FIRST 0 +-- +2.1.4 + diff --git a/buildroot/package/gcc/7.3.0/0900-remove-selftests.patch b/buildroot/package/gcc/7.3.0/0900-remove-selftests.patch new file mode 100644 index 0000000..a3bc7a5 --- /dev/null +++ b/buildroot/package/gcc/7.3.0/0900-remove-selftests.patch @@ -0,0 +1,111 @@ +From 63f0917d90eb83d267dc517fdfb6523a74b1917c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 3 May 2017 00:37:06 +0200 +Subject: [PATCH] remove selftests + +When the gcc archive is extracted by the gcc.mk, the gcc/testsuite +is excluded: + +HOST_GCC_EXCLUDES = \ + libjava/* libgo/* \ + gcc/testsuite/* libstdc++-v3/testsuite/* + +The new Makefile target from the "Selftest framework" [1] added a dependency +on the gcc/testsuite/Makefile. +Revert partially the commit [1] to allow building gcc without selftest. + +[1] https://github.com/gcc-mirror/gcc/commit/99b4f3a2d5bf2c137de9731e27b483eb6b462fd9 + +Signed-off-by: Romain Naour +--- + gcc/Makefile.in | 46 +++++----------------------------------------- + 1 file changed, 5 insertions(+), 41 deletions(-) + +diff --git a/gcc/Makefile.in b/gcc/Makefile.in +index 74d1912..652a554 100644 +--- a/gcc/Makefile.in ++++ b/gcc/Makefile.in +@@ -1581,14 +1581,13 @@ OBJS = \ + OBJS-libcommon = diagnostic.o diagnostic-color.o diagnostic-show-locus.o \ + edit-context.o \ + pretty-print.o intl.o \ +- vec.o input.o version.o hash-table.o ggc-none.o memory-block.o \ +- selftest.o ++ vec.o input.o version.o hash-table.o ggc-none.o memory-block.o + + # Objects in libcommon-target.a, used by drivers and by the core + # compiler and containing target-dependent code. + OBJS-libcommon-target = $(common_out_object_file) prefix.o params.o \ + opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \ +- hash-table.o file-find.o spellcheck.o selftest.o ++ hash-table.o file-find.o spellcheck.o + + # This lists all host objects for the front ends. + ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS)) +@@ -1865,10 +1864,10 @@ config.status: $(srcdir)/configure $(srcdir)/config.gcc + quickstrap: all + cd $(toplevel_builddir) && $(MAKE) all-target-libgcc + +-all.internal: start.encap rest.encap doc selftest ++all.internal: start.encap rest.encap doc + # This is what to compile if making a cross-compiler. + all.cross: native gcc-cross$(exeext) cpp$(exeext) specs \ +- libgcc-support lang.all.cross doc selftest @GENINSRC@ srcextra ++ libgcc-support lang.all.cross doc @GENINSRC@ srcextra + # This is what must be made before installing GCC and converting libraries. + start.encap: native xgcc$(exeext) cpp$(exeext) specs \ + libgcc-support lang.start.encap @GENINSRC@ srcextra +@@ -1888,41 +1887,6 @@ endif + # This does the things that can't be done on the host machine. + rest.cross: specs + +-# GCC's selftests. +-# Specify a dummy input file to placate the driver. +-# Specify -nostdinc to work around missing WIND_BASE environment variable +-# required for *-wrs-vxworks-* targets. +-# Specify -o /dev/null so the output of -S is discarded. More importantly +-# It does not try to create a file with the name "null.s" on POSIX and +-# "nul.s" on Windows. Because on Windows "nul" is a reserved file name. +-# Specify the path to gcc/testsuite/selftests within the srcdir +-# as an argument to -fself-test. +-SELFTEST_FLAGS = -nostdinc -x c /dev/null -S -o /dev/null \ +- -fself-test=$(srcdir)/testsuite/selftests +- +-# Run the selftests during the build once we have a driver and a cc1, +-# so that self-test failures are caught as early as possible. +-# Use "s-selftest" to ensure that we only run the selftests if the +-# driver, cc1, or selftest data change. +-.PHONY: selftest +-selftest: s-selftest +-s-selftest: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs \ +- $(srcdir)/testsuite/selftests +- $(GCC_FOR_TARGET) $(SELFTEST_FLAGS) +- $(STAMP) $@ +- +-# Convenience method for running selftests under gdb: +-.PHONY: selftest-gdb +-selftest-gdb: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs +- $(GCC_FOR_TARGET) $(SELFTEST_FLAGS) \ +- -wrapper gdb,--args +- +-# Convenience method for running selftests under valgrind: +-.PHONY: selftest-valgrind +-selftest-valgrind: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs +- $(GCC_FOR_TARGET) $(SELFTEST_FLAGS) \ +- -wrapper valgrind,--leak-check=full +- + # Recompile all the language-independent object files. + # This is used only if the user explicitly asks for it. + compilations: $(BACKEND) +@@ -2076,7 +2040,7 @@ gcc-nm.c: gcc-ar.c + cp $^ $@ + + COLLECT2_OBJS = collect2.o collect2-aix.o tlink.o vec.o ggc-none.o \ +- collect-utils.o file-find.o hash-table.o selftest.o ++ collect-utils.o file-find.o hash-table.o + COLLECT2_LIBS = @COLLECT2_LIBS@ + collect2$(exeext): $(COLLECT2_OBJS) $(LIBDEPS) + # Don't try modifying collect2 (aka ld) in place--it might be linking this. +-- +2.9.3 + diff --git a/buildroot/package/gcc/7.3.0/1000-arm-PR-target-81497-Fix-arm_acle.h-for-C.patch b/buildroot/package/gcc/7.3.0/1000-arm-PR-target-81497-Fix-arm_acle.h-for-C.patch new file mode 100644 index 0000000..37acc8b --- /dev/null +++ b/buildroot/package/gcc/7.3.0/1000-arm-PR-target-81497-Fix-arm_acle.h-for-C.patch @@ -0,0 +1,324 @@ +From 1a259ac3e39bf87e6e6a5eface8b0ebc6b2a0dfe Mon Sep 17 00:00:00 2001 +From: ktkachov +Date: Tue, 5 Jun 2018 09:50:16 +0000 +Subject: [PATCH] [arm] PR target/81497: Fix arm_acle.h for C++ +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +When trying to compile something with arm_acle.h using G++ we get a number of nasty errors: +arm_acle.h:48:49: error: invalid conversion from ‘const void*’ to ‘const int*’ [-fpermissive] + return __builtin_arm_ldc (__coproc, __CRd, __p); + +This is because the intrinsics that are supposed to be void return the "result" of their builtin, +which is void. C lets that slide but C++ complains. + +After fixing that we run into further errors: +arm_acle.h:48:46: error: invalid conversion from 'const void*' to 'const int*' [-fpermissive] + return __builtin_arm_ldc (__coproc, __CRd, __p); + ^~~ +Because the pointer arguments in these intrinsics are void pointers but the builtin +expects int pointers. So this patch introduces new qualifiers for void pointers and their +const-qualified versions and uses that in the specification of these intrinsics. + +This gives us the opportunity of creating an arm subdirectory in g++.dg and inaugurates it +with the first arm-specific C++ tests (in that directory). + + + PR target/81497 + * config/arm/arm-builtins.c (arm_type_qualifiers): Add + qualifier_void_pointer and qualifier_const_void_pointer. + (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above. + (arm_init_builtins): Handle the above. + * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc, + __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2, + __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for + void intrinsics. + + * g++.target/arm/arm.exp: New file. + * g++.target/arm/pr81497.C: Likewise. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@261191 138bc75d-0d04-0410-961f-82ee72b054a4 +Upstream-Status: Merged (gcc-8-branch) +Signed-off-by: Gaël PORTAY +[gportay: drop gcc/{,testsuite/}ChangeLog changes] +--- + gcc/config/arm/arm-builtins.c | 42 +++++++++++++--------- + gcc/config/arm/arm_acle.h | 28 +++++++-------- + gcc/testsuite/g++.target/arm/arm.exp | 50 ++++++++++++++++++++++++++ + gcc/testsuite/g++.target/arm/pr81497.C | 9 +++++ + 4 files changed, 99 insertions(+), 30 deletions(-) + create mode 100644 gcc/testsuite/g++.target/arm/arm.exp + create mode 100644 gcc/testsuite/g++.target/arm/pr81497.C + +diff --git a/gcc/config/arm/arm-builtins.c b/gcc/config/arm/arm-builtins.c +index 7fde7a04672..183a7b907f6 100644 +--- a/gcc/config/arm/arm-builtins.c ++++ b/gcc/config/arm/arm-builtins.c +@@ -78,7 +78,11 @@ enum arm_type_qualifiers + /* Lane indices - must be within range of previous argument = a vector. */ + qualifier_lane_index = 0x200, + /* Lane indices for single lane structure loads and stores. */ +- qualifier_struct_load_store_lane_index = 0x400 ++ qualifier_struct_load_store_lane_index = 0x400, ++ /* A void pointer. */ ++ qualifier_void_pointer = 0x800, ++ /* A const void pointer. */ ++ qualifier_const_void_pointer = 0x802 + }; + + /* The qualifier_internal allows generation of a unary builtin from +@@ -202,7 +206,7 @@ arm_cdp_qualifiers[SIMD_MAX_BUILTIN_ARGS] + static enum arm_type_qualifiers + arm_ldc_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_void, qualifier_unsigned_immediate, +- qualifier_unsigned_immediate, qualifier_const_pointer }; ++ qualifier_unsigned_immediate, qualifier_const_void_pointer }; + #define LDC_QUALIFIERS \ + (arm_ldc_qualifiers) + +@@ -210,7 +214,7 @@ arm_ldc_qualifiers[SIMD_MAX_BUILTIN_ARGS] + static enum arm_type_qualifiers + arm_stc_qualifiers[SIMD_MAX_BUILTIN_ARGS] + = { qualifier_void, qualifier_unsigned_immediate, +- qualifier_unsigned_immediate, qualifier_pointer }; ++ qualifier_unsigned_immediate, qualifier_void_pointer }; + #define STC_QUALIFIERS \ + (arm_stc_qualifiers) + +@@ -1095,19 +1099,25 @@ arm_init_builtin (unsigned int fcode, arm_builtin_datum *d, + if (qualifiers & qualifier_pointer && VECTOR_MODE_P (op_mode)) + op_mode = GET_MODE_INNER (op_mode); + +- eltype = arm_simd_builtin_type +- (op_mode, +- (qualifiers & qualifier_unsigned) != 0, +- (qualifiers & qualifier_poly) != 0); +- gcc_assert (eltype != NULL); +- +- /* Add qualifiers. */ +- if (qualifiers & qualifier_const) +- eltype = build_qualified_type (eltype, TYPE_QUAL_CONST); +- +- if (qualifiers & qualifier_pointer) +- eltype = build_pointer_type (eltype); +- ++ /* For void pointers we already have nodes constructed by the midend. */ ++ if (qualifiers & qualifier_void_pointer) ++ eltype = qualifiers & qualifier_const ++ ? const_ptr_type_node : ptr_type_node; ++ else ++ { ++ eltype ++ = arm_simd_builtin_type (op_mode, ++ (qualifiers & qualifier_unsigned) != 0, ++ (qualifiers & qualifier_poly) != 0); ++ gcc_assert (eltype != NULL); ++ ++ /* Add qualifiers. */ ++ if (qualifiers & qualifier_const) ++ eltype = build_qualified_type (eltype, TYPE_QUAL_CONST); ++ ++ if (qualifiers & qualifier_pointer) ++ eltype = build_pointer_type (eltype); ++ } + /* If we have reached arg_num == 0, we are at a non-void + return type. Otherwise, we are still processing + arguments. */ +diff --git a/gcc/config/arm/arm_acle.h b/gcc/config/arm/arm_acle.h +index 9a2f0ba30dc..c0f6ea2d156 100644 +--- a/gcc/config/arm/arm_acle.h ++++ b/gcc/config/arm/arm_acle.h +@@ -38,35 +38,35 @@ __arm_cdp (const unsigned int __coproc, const unsigned int __opc1, + const unsigned int __CRd, const unsigned int __CRn, + const unsigned int __CRm, const unsigned int __opc2) + { +- return __builtin_arm_cdp (__coproc, __opc1, __CRd, __CRn, __CRm, __opc2); ++ __builtin_arm_cdp (__coproc, __opc1, __CRd, __CRn, __CRm, __opc2); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) + __arm_ldc (const unsigned int __coproc, const unsigned int __CRd, + const void * __p) + { +- return __builtin_arm_ldc (__coproc, __CRd, __p); ++ __builtin_arm_ldc (__coproc, __CRd, __p); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) + __arm_ldcl (const unsigned int __coproc, const unsigned int __CRd, + const void * __p) + { +- return __builtin_arm_ldcl (__coproc, __CRd, __p); ++ __builtin_arm_ldcl (__coproc, __CRd, __p); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) + __arm_stc (const unsigned int __coproc, const unsigned int __CRd, + void * __p) + { +- return __builtin_arm_stc (__coproc, __CRd, __p); ++ __builtin_arm_stc (__coproc, __CRd, __p); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) + __arm_stcl (const unsigned int __coproc, const unsigned int __CRd, + void * __p) + { +- return __builtin_arm_stcl (__coproc, __CRd, __p); ++ __builtin_arm_stcl (__coproc, __CRd, __p); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -74,7 +74,7 @@ __arm_mcr (const unsigned int __coproc, const unsigned int __opc1, + uint32_t __value, const unsigned int __CRn, const unsigned int __CRm, + const unsigned int __opc2) + { +- return __builtin_arm_mcr (__coproc, __opc1, __value, __CRn, __CRm, __opc2); ++ __builtin_arm_mcr (__coproc, __opc1, __value, __CRn, __CRm, __opc2); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +@@ -90,35 +90,35 @@ __arm_cdp2 (const unsigned int __coproc, const unsigned int __opc1, + const unsigned int __CRd, const unsigned int __CRn, + const unsigned int __CRm, const unsigned int __opc2) + { +- return __builtin_arm_cdp2 (__coproc, __opc1, __CRd, __CRn, __CRm, __opc2); ++ __builtin_arm_cdp2 (__coproc, __opc1, __CRd, __CRn, __CRm, __opc2); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) + __arm_ldc2 (const unsigned int __coproc, const unsigned int __CRd, + const void * __p) + { +- return __builtin_arm_ldc2 (__coproc, __CRd, __p); ++ __builtin_arm_ldc2 (__coproc, __CRd, __p); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) + __arm_ldc2l (const unsigned int __coproc, const unsigned int __CRd, + const void * __p) + { +- return __builtin_arm_ldc2l (__coproc, __CRd, __p); ++ __builtin_arm_ldc2l (__coproc, __CRd, __p); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) + __arm_stc2 (const unsigned int __coproc, const unsigned int __CRd, + void * __p) + { +- return __builtin_arm_stc2 (__coproc, __CRd, __p); ++ __builtin_arm_stc2 (__coproc, __CRd, __p); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) + __arm_stc2l (const unsigned int __coproc, const unsigned int __CRd, + void * __p) + { +- return __builtin_arm_stc2l (__coproc, __CRd, __p); ++ __builtin_arm_stc2l (__coproc, __CRd, __p); + } + + __extension__ static __inline void __attribute__ ((__always_inline__)) +@@ -126,7 +126,7 @@ __arm_mcr2 (const unsigned int __coproc, const unsigned int __opc1, + uint32_t __value, const unsigned int __CRn, + const unsigned int __CRm, const unsigned int __opc2) + { +- return __builtin_arm_mcr2 (__coproc, __opc1, __value, __CRn, __CRm, __opc2); ++ __builtin_arm_mcr2 (__coproc, __opc1, __value, __CRn, __CRm, __opc2); + } + + __extension__ static __inline uint32_t __attribute__ ((__always_inline__)) +@@ -143,7 +143,7 @@ __extension__ static __inline void __attribute__ ((__always_inline__)) + __arm_mcrr (const unsigned int __coproc, const unsigned int __opc1, + uint64_t __value, const unsigned int __CRm) + { +- return __builtin_arm_mcrr (__coproc, __opc1, __value, __CRm); ++ __builtin_arm_mcrr (__coproc, __opc1, __value, __CRm); + } + + __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) +@@ -159,7 +159,7 @@ __extension__ static __inline void __attribute__ ((__always_inline__)) + __arm_mcrr2 (const unsigned int __coproc, const unsigned int __opc1, + uint64_t __value, const unsigned int __CRm) + { +- return __builtin_arm_mcrr2 (__coproc, __opc1, __value, __CRm); ++ __builtin_arm_mcrr2 (__coproc, __opc1, __value, __CRm); + } + + __extension__ static __inline uint64_t __attribute__ ((__always_inline__)) +diff --git a/gcc/testsuite/g++.target/arm/arm.exp b/gcc/testsuite/g++.target/arm/arm.exp +new file mode 100644 +index 00000000000..1a169d2f220 +--- /dev/null ++++ b/gcc/testsuite/g++.target/arm/arm.exp +@@ -0,0 +1,50 @@ ++# Specific regression driver for arm. ++# Copyright (C) 2009-2018 Free Software Foundation, Inc. ++# ++# This file is part of GCC. ++# ++# GCC 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 3, or (at your option) ++# any later version. ++# ++# GCC 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 GCC; see the file COPYING3. If not see ++# . */ ++ ++# GCC testsuite that uses the `dg.exp' driver. ++ ++# Exit immediately if this isn't an arm target. ++if {![istarget arm*-*-*] } then { ++ return ++} ++ ++# Load support procs. ++load_lib g++-dg.exp ++ ++global DEFAULT_CXXFLAGS ++if ![info exists DEFAULT_CXXFLAGS] then { ++ set DEFAULT_CXXFLAGS " -pedantic-errors" ++} ++ ++ ++global dg_runtest_extra_prunes ++set dg_runtest_extra_prunes "" ++lappend dg_runtest_extra_prunes "warning: switch -m(cpu|arch)=.* conflicts with -m(cpu|arch)=.* switch" ++ ++# Initialize `dg'. ++dg-init ++ ++# Main loop. ++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \ ++ "" $DEFAULT_CXXFLAGS ++ ++# All done. ++set dg_runtest_extra_prunes "" ++dg-finish ++ +diff --git a/gcc/testsuite/g++.target/arm/pr81497.C b/gcc/testsuite/g++.target/arm/pr81497.C +new file mode 100644 +index 00000000000..0519a3a3045 +--- /dev/null ++++ b/gcc/testsuite/g++.target/arm/pr81497.C +@@ -0,0 +1,9 @@ ++/* { dg-do compile } */ ++/* { dg-require-effective-target arm_thumb2_ok } */ ++ ++#include ++ ++int main () ++{ ++ return 0; ++} +-- +2.17.1 + diff --git a/buildroot/package/gcc/Config.in.host b/buildroot/package/gcc/Config.in.host new file mode 100644 index 0000000..309ddf5 --- /dev/null +++ b/buildroot/package/gcc/Config.in.host @@ -0,0 +1,154 @@ +comment "GCC Options" + +choice + prompt "GCC compiler Version" + default BR2_GCC_VERSION_ARC if BR2_arc + default BR2_GCC_VERSION_OR1K if BR2_or1k + default BR2_GCC_VERSION_6_X + help + Select the version of gcc you wish to use. + +config BR2_GCC_VERSION_ARC + bool "gcc arc (7.x)" + # Only supported architecture + depends on BR2_arc + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +config BR2_GCC_VERSION_OR1K + bool "gcc or1k (5.x)" + # Only supported architecture + depends on BR2_or1k + select BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_GCC_VERSION_4_9_X + bool "gcc 4.9.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + # Broken or unsupported architectures + depends on !BR2_arc + depends on !BR2_or1k + # musl on microblaze, ppc64 and mips64 unsupported + depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_microblazeel || BR2_microblazebe)) + depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_powerpc64 || BR2_powerpc64le)) + depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_mips64 || BR2_mips64el)) + # glibc >= 2.26 needs gcc >= 6.2 + depends on !(BR2_TOOLCHAIN_USES_GLIBC && BR2_powerpc64le) + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_GCC_VERSION_5_X + bool "gcc 5.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + # Broken or unsupported architectures + depends on !BR2_arc + depends on !BR2_or1k + # musl on ppc64 and mips64 unsupported + depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_powerpc64 || BR2_powerpc64le)) + depends on !(BR2_TOOLCHAIN_USES_MUSL && (BR2_mips64 || BR2_mips64el)) + # glibc >= 2.26 needs gcc >= 6.2 + depends on !(BR2_TOOLCHAIN_USES_GLIBC && BR2_powerpc64le) + select BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_GCC_VERSION_6_X + bool "gcc 6.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + # Broken or unsupported architectures + depends on !BR2_arc + depends on !BR2_or1k + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + +config BR2_GCC_VERSION_7_X + bool "gcc 7.x" + # Broken or unsupported architectures + depends on !BR2_or1k + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +endchoice + +# Indicates if GCC for architecture supports --with-{arch,cpu,..} to +# set default CFLAGS, otherwise values will be used by toolchain +# wrapper. +config BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS + bool + default y if !BR2_bfin + +config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE + bool + default y + +config BR2_GCC_VERSION + string + default "4.9.4" if BR2_GCC_VERSION_4_9_X + default "5.5.0" if BR2_GCC_VERSION_5_X + default "6.4.0" if BR2_GCC_VERSION_6_X + default "7.3.0" if BR2_GCC_VERSION_7_X + default "arc-2017.09-release" if BR2_GCC_VERSION_ARC + default "or1k-musl-5.4.0-20170218" if BR2_GCC_VERSION_OR1K + +config BR2_EXTRA_GCC_CONFIG_OPTIONS + string "Additional gcc options" + default "" + help + Any additional gcc configure options you may want to + include. Those options are applied for all of the gcc + initial, gcc intermediate and gcc final passes. + +config BR2_TOOLCHAIN_BUILDROOT_CXX + bool "Enable C++ support" + select BR2_INSTALL_LIBSTDCPP + help + Enable this option if you want your toolchain to support the + C++ language and you want C++ libraries to be installed on + your target system. + +comment "Fortran support needs a toolchain w/ wchar" + depends on BR2_TOOLCHAIN_HAS_LIBQUADMATH + depends on !BR2_USE_WCHAR # libquadmath + +config BR2_TOOLCHAIN_BUILDROOT_FORTRAN + bool "Enable Fortran support" + # on architecture building libquadmath, wchar is required + depends on !BR2_TOOLCHAIN_HAS_LIBQUADMATH || \ + (BR2_TOOLCHAIN_HAS_LIBQUADMATH && BR2_USE_WCHAR) + select BR2_TOOLCHAIN_HAS_FORTRAN + help + Enable this option if you want your toolchain to support the + Fortran language and you want Fortran libraries to be + installed on your target system. + +config BR2_GCC_ENABLE_LTO + bool "Enable compiler link-time-optimization support" + select BR2_BINUTILS_ENABLE_LTO + help + This option enables link-time optimization (LTO) support in + gcc. + +config BR2_GCC_ENABLE_OPENMP + bool "Enable compiler OpenMP support" + depends on !BR2_PTHREADS_NONE && !BR2_arc && !BR2_microblaze + help + Enable OpenMP support for the compiler + +config BR2_GCC_ENABLE_LIBMUDFLAP + bool "Enable libmudflap support" + # There are architectures, or specific configurations for + # which mudflap is not supported. + depends on !BR2_ARM_INSTRUCTIONS_THUMB && !BR2_powerpc_SPE + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + libmudflap is a gcc library used for the mudflap pointer + debugging functionality. It is only needed if you intend to + use the -fmudflap gcc flag. + + See http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging and + the help of the gcc -fmudflap option for more details. + + If you're unsure, leave this option disabled. + +config BR2_GCC_ENABLE_GRAPHITE + bool "Enable graphite support" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 + help + This option enables the graphite optimizations in the + compiler. + +comment "graphite support needs gcc >= 5.x" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 diff --git a/buildroot/package/gcc/arc-2017.09-release/0001-fix-checking-for-jumps.patch b/buildroot/package/gcc/arc-2017.09-release/0001-fix-checking-for-jumps.patch new file mode 100644 index 0000000..ce78fac --- /dev/null +++ b/buildroot/package/gcc/arc-2017.09-release/0001-fix-checking-for-jumps.patch @@ -0,0 +1,49 @@ +From c2694d3739d90ea3350b42252638b604a2c122b7 Mon Sep 17 00:00:00 2001 +From: Claudiu Zissulescu +Date: Tue, 7 Nov 2017 20:16:41 +0200 +Subject: [PATCH] [FIX][ZOL] fix checking for jumps + +Signed-off-by: Evgeniy Didin +--- + gcc/config/arc/arc.c | 3 ++- + gcc/testsuite/gcc.target/arc/loop-4.c | 14 ++++++++++++++ + 2 files changed, 16 insertions(+), 1 deletion(-) + create mode 100644 gcc/testsuite/gcc.target/arc/loop-4.c + +diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c +index 22eeb34a371..5d367499d03 100644 +--- a/gcc/config/arc/arc.c ++++ b/gcc/config/arc/arc.c +@@ -7505,7 +7505,8 @@ hwloop_optimize (hwloop_info loop) + && INSN_P (last_insn) + && (JUMP_P (last_insn) || CALL_P (last_insn) + || GET_CODE (PATTERN (last_insn)) == SEQUENCE +- || JUMP_P (prev_active_insn (last_insn)) ++ || (prev_active_insn (last_insn) ++ && JUMP_P (prev_active_insn (last_insn))) + /* At this stage we can have (insn (clobber (mem:BLK + (reg)))) instructions, ignpre them. */ + || (GET_CODE (PATTERN (last_insn)) != CLOBBER +diff --git a/gcc/testsuite/gcc.target/arc/loop-4.c b/gcc/testsuite/gcc.target/arc/loop-4.c +new file mode 100644 +index 00000000000..99a93a74d1e +--- /dev/null ++++ b/gcc/testsuite/gcc.target/arc/loop-4.c +@@ -0,0 +1,14 @@ ++/* { dg-do assemble } */ ++/* { dg-do compile } */ ++/* { dg-options "-Os" } */ ++ ++ ++void fn1(void *p1, int p2, int p3) ++{ ++ char *d = p1; ++ do ++ *d++ = p2; ++ while (--p3); ++} ++ ++/* { dg-final { scan-assembler "lp_count" } } */ +-- +2.11.0 + diff --git a/buildroot/package/gcc/arc-2017.09-release/0100-uclibc-conf.patch b/buildroot/package/gcc/arc-2017.09-release/0100-uclibc-conf.patch new file mode 100644 index 0000000..d354baf --- /dev/null +++ b/buildroot/package/gcc/arc-2017.09-release/0100-uclibc-conf.patch @@ -0,0 +1,29 @@ +From 326b880b20e5f8187dbda736b4c4c662cbfb00ca Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Tue, 2 May 2017 22:36:15 +0200 +Subject: [PATCH] uclibc-conf + +[Romain: convert to git patch] +Signed-off-by: Romain Naour +--- + contrib/regression/objs-gcc.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/contrib/regression/objs-gcc.sh b/contrib/regression/objs-gcc.sh +index 60b0497..6dc7ead 100755 +--- a/contrib/regression/objs-gcc.sh ++++ b/contrib/regression/objs-gcc.sh +@@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ] + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] ++ then ++ make all-gdb all-dejagnu all-ld || exit 1 ++ make install-gdb install-dejagnu install-ld || exit 1 + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then + make bootstrap || exit 1 + make install || exit 1 +-- +2.9.3 + diff --git a/buildroot/package/gcc/arc-2017.09-release/0860-cilk-fix-build-without-wchar.patch b/buildroot/package/gcc/arc-2017.09-release/0860-cilk-fix-build-without-wchar.patch new file mode 100644 index 0000000..61ab01c --- /dev/null +++ b/buildroot/package/gcc/arc-2017.09-release/0860-cilk-fix-build-without-wchar.patch @@ -0,0 +1,64 @@ +From 714739e69ead1d9823233af40645277f6d4633ea Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Tue, 2 May 2017 23:21:46 +0200 +Subject: [PATCH] cilk: fix build without wchar + +When building against uClibc with wchar support disabled, WCHAR_MIN and +WCHAR_MAX are not defined leading to compilation errors. + +Fix it by only including the wchar code if available. + +Signed-off-by: Peter Korsgaard +[Romain: convert to git patch] +Signed-off-by: Romain Naour +--- + libcilkrts/include/cilk/reducer_min_max.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/libcilkrts/include/cilk/reducer_min_max.h b/libcilkrts/include/cilk/reducer_min_max.h +index 641aa82..4f8e010 100644 +--- a/libcilkrts/include/cilk/reducer_min_max.h ++++ b/libcilkrts/include/cilk/reducer_min_max.h +@@ -3289,7 +3289,9 @@ __CILKRTS_BEGIN_EXTERN_C + CILK_C_REDUCER_MAX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INSTANCE(int, int, INT_MIN) +@@ -3441,7 +3443,9 @@ __CILKRTS_BEGIN_EXTERN_C + CILK_C_REDUCER_MAX_INDEX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INDEX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(int, int, INT_MIN) +@@ -3567,7 +3571,9 @@ __CILKRTS_BEGIN_EXTERN_C + CILK_C_REDUCER_MIN_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(int, int, INT_MAX) +@@ -3719,7 +3725,9 @@ __CILKRTS_BEGIN_EXTERN_C + CILK_C_REDUCER_MIN_INDEX_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INDEX_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(int, int, INT_MAX) +-- +2.9.3 + diff --git a/buildroot/package/gcc/arc-2017.09-release/0900-remove-selftests.patch b/buildroot/package/gcc/arc-2017.09-release/0900-remove-selftests.patch new file mode 100644 index 0000000..a3bc7a5 --- /dev/null +++ b/buildroot/package/gcc/arc-2017.09-release/0900-remove-selftests.patch @@ -0,0 +1,111 @@ +From 63f0917d90eb83d267dc517fdfb6523a74b1917c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 3 May 2017 00:37:06 +0200 +Subject: [PATCH] remove selftests + +When the gcc archive is extracted by the gcc.mk, the gcc/testsuite +is excluded: + +HOST_GCC_EXCLUDES = \ + libjava/* libgo/* \ + gcc/testsuite/* libstdc++-v3/testsuite/* + +The new Makefile target from the "Selftest framework" [1] added a dependency +on the gcc/testsuite/Makefile. +Revert partially the commit [1] to allow building gcc without selftest. + +[1] https://github.com/gcc-mirror/gcc/commit/99b4f3a2d5bf2c137de9731e27b483eb6b462fd9 + +Signed-off-by: Romain Naour +--- + gcc/Makefile.in | 46 +++++----------------------------------------- + 1 file changed, 5 insertions(+), 41 deletions(-) + +diff --git a/gcc/Makefile.in b/gcc/Makefile.in +index 74d1912..652a554 100644 +--- a/gcc/Makefile.in ++++ b/gcc/Makefile.in +@@ -1581,14 +1581,13 @@ OBJS = \ + OBJS-libcommon = diagnostic.o diagnostic-color.o diagnostic-show-locus.o \ + edit-context.o \ + pretty-print.o intl.o \ +- vec.o input.o version.o hash-table.o ggc-none.o memory-block.o \ +- selftest.o ++ vec.o input.o version.o hash-table.o ggc-none.o memory-block.o + + # Objects in libcommon-target.a, used by drivers and by the core + # compiler and containing target-dependent code. + OBJS-libcommon-target = $(common_out_object_file) prefix.o params.o \ + opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \ +- hash-table.o file-find.o spellcheck.o selftest.o ++ hash-table.o file-find.o spellcheck.o + + # This lists all host objects for the front ends. + ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS)) +@@ -1865,10 +1864,10 @@ config.status: $(srcdir)/configure $(srcdir)/config.gcc + quickstrap: all + cd $(toplevel_builddir) && $(MAKE) all-target-libgcc + +-all.internal: start.encap rest.encap doc selftest ++all.internal: start.encap rest.encap doc + # This is what to compile if making a cross-compiler. + all.cross: native gcc-cross$(exeext) cpp$(exeext) specs \ +- libgcc-support lang.all.cross doc selftest @GENINSRC@ srcextra ++ libgcc-support lang.all.cross doc @GENINSRC@ srcextra + # This is what must be made before installing GCC and converting libraries. + start.encap: native xgcc$(exeext) cpp$(exeext) specs \ + libgcc-support lang.start.encap @GENINSRC@ srcextra +@@ -1888,41 +1887,6 @@ endif + # This does the things that can't be done on the host machine. + rest.cross: specs + +-# GCC's selftests. +-# Specify a dummy input file to placate the driver. +-# Specify -nostdinc to work around missing WIND_BASE environment variable +-# required for *-wrs-vxworks-* targets. +-# Specify -o /dev/null so the output of -S is discarded. More importantly +-# It does not try to create a file with the name "null.s" on POSIX and +-# "nul.s" on Windows. Because on Windows "nul" is a reserved file name. +-# Specify the path to gcc/testsuite/selftests within the srcdir +-# as an argument to -fself-test. +-SELFTEST_FLAGS = -nostdinc -x c /dev/null -S -o /dev/null \ +- -fself-test=$(srcdir)/testsuite/selftests +- +-# Run the selftests during the build once we have a driver and a cc1, +-# so that self-test failures are caught as early as possible. +-# Use "s-selftest" to ensure that we only run the selftests if the +-# driver, cc1, or selftest data change. +-.PHONY: selftest +-selftest: s-selftest +-s-selftest: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs \ +- $(srcdir)/testsuite/selftests +- $(GCC_FOR_TARGET) $(SELFTEST_FLAGS) +- $(STAMP) $@ +- +-# Convenience method for running selftests under gdb: +-.PHONY: selftest-gdb +-selftest-gdb: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs +- $(GCC_FOR_TARGET) $(SELFTEST_FLAGS) \ +- -wrapper gdb,--args +- +-# Convenience method for running selftests under valgrind: +-.PHONY: selftest-valgrind +-selftest-valgrind: $(GCC_PASSES) cc1$(exeext) stmp-int-hdrs +- $(GCC_FOR_TARGET) $(SELFTEST_FLAGS) \ +- -wrapper valgrind,--leak-check=full +- + # Recompile all the language-independent object files. + # This is used only if the user explicitly asks for it. + compilations: $(BACKEND) +@@ -2076,7 +2040,7 @@ gcc-nm.c: gcc-ar.c + cp $^ $@ + + COLLECT2_OBJS = collect2.o collect2-aix.o tlink.o vec.o ggc-none.o \ +- collect-utils.o file-find.o hash-table.o selftest.o ++ collect-utils.o file-find.o hash-table.o + COLLECT2_LIBS = @COLLECT2_LIBS@ + collect2$(exeext): $(COLLECT2_OBJS) $(LIBDEPS) + # Don't try modifying collect2 (aka ld) in place--it might be linking this. +-- +2.9.3 + diff --git a/buildroot/package/gcc/gcc-final/gcc-final.hash b/buildroot/package/gcc/gcc-final/gcc-final.hash new file mode 120000 index 0000000..7ac9361 --- /dev/null +++ b/buildroot/package/gcc/gcc-final/gcc-final.hash @@ -0,0 +1 @@ +../gcc.hash \ No newline at end of file diff --git a/buildroot/package/gcc/gcc-final/gcc-final.mk b/buildroot/package/gcc/gcc-final/gcc-final.mk new file mode 100644 index 0000000..213f3d7 --- /dev/null +++ b/buildroot/package/gcc/gcc-final/gcc-final.mk @@ -0,0 +1,210 @@ +################################################################################ +# +# gcc-final +# +################################################################################ + +GCC_FINAL_VERSION = $(GCC_VERSION) +GCC_FINAL_SITE = $(GCC_SITE) +GCC_FINAL_SOURCE = $(GCC_SOURCE) + +HOST_GCC_FINAL_DEPENDENCIES = \ + $(HOST_GCC_COMMON_DEPENDENCIES) \ + $(BR_LIBC) + +HOST_GCC_FINAL_EXCLUDES = $(HOST_GCC_EXCLUDES) +HOST_GCC_FINAL_POST_EXTRACT_HOOKS += HOST_GCC_FAKE_TESTSUITE + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +HOST_GCC_FINAL_POST_EXTRACT_HOOKS += HOST_GCC_XTENSA_OVERLAY_EXTRACT +HOST_GCC_FINAL_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +HOST_GCC_FINAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES + +# gcc doesn't support in-tree build, so we create a 'build' +# subdirectory in the gcc sources, and build from there. +HOST_GCC_FINAL_SUBDIR = build + +HOST_GCC_FINAL_PRE_CONFIGURE_HOOKS += HOST_GCC_CONFIGURE_SYMLINK + +# We want to always build the static variants of all the gcc libraries, +# of which libstdc++, libgomp, libmudflap... +# To do so, we can not just pass --enable-static to override the generic +# --disable-static flag, otherwise gcc fails to build some of those +# libraries, see; +# http://lists.busybox.net/pipermail/buildroot/2013-October/080412.html +# +# So we must completely override the generic commands and provide our own. +# +define HOST_GCC_FINAL_CONFIGURE_CMDS + (cd $(HOST_GCC_FINAL_SRCDIR) && rm -rf config.cache; \ + $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CFLAGS)" \ + LDFLAGS="$(HOST_LDFLAGS)" \ + $(HOST_GCC_FINAL_CONF_ENV) \ + ./configure \ + --prefix="$(HOST_DIR)" \ + --sysconfdir="$(HOST_DIR)/etc" \ + --enable-static \ + $(QUIET) $(HOST_GCC_FINAL_CONF_OPTS) \ + ) +endef + +# Languages supported by the cross-compiler +GCC_FINAL_CROSS_LANGUAGES-y = c +GCC_FINAL_CROSS_LANGUAGES-$(BR2_INSTALL_LIBSTDCPP) += c++ +GCC_FINAL_CROSS_LANGUAGES-$(BR2_TOOLCHAIN_BUILDROOT_FORTRAN) += fortran +GCC_FINAL_CROSS_LANGUAGES = $(subst $(space),$(comma),$(GCC_FINAL_CROSS_LANGUAGES-y)) + +HOST_GCC_FINAL_CONF_OPTS = \ + $(HOST_GCC_COMMON_CONF_OPTS) \ + --enable-languages=$(GCC_FINAL_CROSS_LANGUAGES) \ + --with-build-time-tools=$(HOST_DIR)/$(GNU_TARGET_NAME)/bin + +HOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/$(GNU_TARGET_NAME)/lib* +# The kernel wants to use the -m4-nofpu option to make sure that it +# doesn't use floating point operations. +ifeq ($(BR2_sh4)$(BR2_sh4eb),y) +HOST_GCC_FINAL_CONF_OPTS += "--with-multilib-list=m4,m4-nofpu" +HOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/$(GNU_TARGET_NAME)/lib/!m4* +endif +ifeq ($(BR2_sh4a)$(BR2_sh4aeb),y) +HOST_GCC_FINAL_CONF_OPTS += "--with-multilib-list=m4a,m4a-nofpu" +HOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/$(GNU_TARGET_NAME)/lib/!m4* +endif + +ifeq ($(BR2_bfin),y) +HOST_GCC_FINAL_CONF_OPTS += --disable-symvers +endif + +# libcilkrts does not support v8 +ifeq ($(BR2_sparc),y) +HOST_GCC_FINAL_CONF_OPTS += --disable-libcilkrts +endif + +# Disable shared libs like libstdc++ if we do static since it confuses linking +# In that case also disable libcilkrts as there is no static version +ifeq ($(BR2_STATIC_LIBS),y) +HOST_GCC_FINAL_CONF_OPTS += --disable-shared --disable-libcilkrts +else +HOST_GCC_FINAL_CONF_OPTS += --enable-shared +endif + +ifeq ($(BR2_GCC_ENABLE_OPENMP),y) +HOST_GCC_FINAL_CONF_OPTS += --enable-libgomp +else +HOST_GCC_FINAL_CONF_OPTS += --disable-libgomp +endif + +# End with user-provided options, so that they can override previously +# defined options. +HOST_GCC_FINAL_CONF_OPTS += \ + $(call qstrip,$(BR2_EXTRA_GCC_CONFIG_OPTIONS)) + +HOST_GCC_FINAL_CONF_ENV = \ + $(HOST_GCC_COMMON_CONF_ENV) + +HOST_GCC_FINAL_MAKE_OPTS += $(HOST_GCC_COMMON_MAKE_OPTS) + +# Make sure we have 'cc' +define HOST_GCC_FINAL_CREATE_CC_SYMLINKS + if [ ! -e $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-cc ]; then \ + ln -f $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-gcc \ + $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-cc; \ + fi +endef + +HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_CREATE_CC_SYMLINKS + +HOST_GCC_FINAL_TOOLCHAIN_WRAPPER_ARGS += $(HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS) +HOST_GCC_FINAL_POST_BUILD_HOOKS += TOOLCHAIN_WRAPPER_BUILD +HOST_GCC_FINAL_POST_INSTALL_HOOKS += TOOLCHAIN_WRAPPER_INSTALL +# Note: this must be done after CREATE_CC_SYMLINKS, otherwise the +# -cc symlink to the wrapper is not created. +HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS + +# coldfire is not working without removing these object files from libgcc.a +ifeq ($(BR2_m68k_cf),y) +define HOST_GCC_FINAL_M68K_LIBGCC_FIXUP + find $(STAGING_DIR) -name libgcc.a -print | \ + while read t; do $(GNU_TARGET_NAME)-ar dv "$t" _ctors.o; done +endef +HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_M68K_LIBGCC_FIXUP +endif + +# Cannot use the HOST_GCC_FINAL_USR_LIBS mechanism below, because we want +# libgcc_s to be installed in /lib and not /usr/lib. +define HOST_GCC_FINAL_INSTALL_LIBGCC + -cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/libgcc_s* \ + $(STAGING_DIR)/lib/ + -cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/libgcc_s* \ + $(TARGET_DIR)/lib/ +endef + +HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_LIBGCC + +define HOST_GCC_FINAL_INSTALL_LIBATOMIC + -cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/libatomic* \ + $(STAGING_DIR)/lib/ + -cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/libatomic* \ + $(TARGET_DIR)/lib/ +endef + +HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_LIBATOMIC + +# Handle the installation of libraries in /usr/lib +HOST_GCC_FINAL_USR_LIBS = + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +HOST_GCC_FINAL_USR_LIBS += libstdc++ +endif + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_FORTRAN),y) +HOST_GCC_FINAL_USR_LIBS += libgfortran +# fortran needs quadmath on x86 and x86_64 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBQUADMATH),y) +HOST_GCC_FINAL_USR_LIBS += libquadmath +endif +endif + +ifeq ($(BR2_GCC_ENABLE_OPENMP),y) +HOST_GCC_FINAL_USR_LIBS += libgomp +endif + +ifeq ($(BR2_GCC_ENABLE_LIBMUDFLAP),y) +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +HOST_GCC_FINAL_USR_LIBS += libmudflapth +else +HOST_GCC_FINAL_USR_LIBS += libmudflap +endif +endif + +ifneq ($(HOST_GCC_FINAL_USR_LIBS),) +define HOST_GCC_FINAL_INSTALL_STATIC_LIBS + for i in $(HOST_GCC_FINAL_USR_LIBS) ; do \ + cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/$${i}.a \ + $(STAGING_DIR)/usr/lib/ ; \ + done +endef + +ifeq ($(BR2_STATIC_LIBS),) +define HOST_GCC_FINAL_INSTALL_SHARED_LIBS + for i in $(HOST_GCC_FINAL_USR_LIBS) ; do \ + cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/$${i}.so* \ + $(STAGING_DIR)/usr/lib/ ; \ + cp -dpf $(HOST_GCC_FINAL_GCC_LIB_DIR)/$${i}.so* \ + $(TARGET_DIR)/usr/lib/ ; \ + done +endef +endif + +define HOST_GCC_FINAL_INSTALL_USR_LIBS + mkdir -p $(TARGET_DIR)/usr/lib + $(HOST_GCC_FINAL_INSTALL_STATIC_LIBS) + $(HOST_GCC_FINAL_INSTALL_SHARED_LIBS) +endef +HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_USR_LIBS +endif + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gcc/gcc-initial/gcc-initial.hash b/buildroot/package/gcc/gcc-initial/gcc-initial.hash new file mode 120000 index 0000000..7ac9361 --- /dev/null +++ b/buildroot/package/gcc/gcc-initial/gcc-initial.hash @@ -0,0 +1 @@ +../gcc.hash \ No newline at end of file diff --git a/buildroot/package/gcc/gcc-initial/gcc-initial.mk b/buildroot/package/gcc/gcc-initial/gcc-initial.mk new file mode 100644 index 0000000..c476b2f --- /dev/null +++ b/buildroot/package/gcc/gcc-initial/gcc-initial.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# gcc-initial +# +################################################################################ + +GCC_INITIAL_VERSION = $(GCC_VERSION) +GCC_INITIAL_SITE = $(GCC_SITE) +GCC_INITIAL_SOURCE = $(GCC_SOURCE) + +HOST_GCC_INITIAL_DEPENDENCIES = $(HOST_GCC_COMMON_DEPENDENCIES) + +HOST_GCC_INITIAL_EXCLUDES = $(HOST_GCC_EXCLUDES) +HOST_GCC_INITIAL_POST_EXTRACT_HOOKS += HOST_GCC_FAKE_TESTSUITE + +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +HOST_GCC_INITIAL_POST_EXTRACT_HOOKS += HOST_GCC_XTENSA_OVERLAY_EXTRACT +HOST_GCC_INITIAL_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +HOST_GCC_INITIAL_POST_PATCH_HOOKS += HOST_GCC_APPLY_PATCHES + +# gcc doesn't support in-tree build, so we create a 'build' +# subdirectory in the gcc sources, and build from there. +HOST_GCC_INITIAL_SUBDIR = build + +HOST_GCC_INITIAL_PRE_CONFIGURE_HOOKS += HOST_GCC_CONFIGURE_SYMLINK + +HOST_GCC_INITIAL_CONF_OPTS = \ + $(HOST_GCC_COMMON_CONF_OPTS) \ + --enable-languages=c \ + --disable-shared \ + --without-headers \ + --disable-threads \ + --with-newlib \ + --disable-largefile \ + --disable-nls \ + $(call qstrip,$(BR2_EXTRA_GCC_CONFIG_OPTIONS)) + +HOST_GCC_INITIAL_CONF_ENV = \ + $(HOST_GCC_COMMON_CONF_ENV) + +HOST_GCC_INITIAL_MAKE_OPTS = $(HOST_GCC_COMMON_MAKE_OPTS) all-gcc +HOST_GCC_INITIAL_INSTALL_OPTS = install-gcc + +ifeq ($(BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE),y) +HOST_GCC_INITIAL_MAKE_OPTS += all-target-libgcc +HOST_GCC_INITIAL_INSTALL_OPTS += install-target-libgcc +endif + +HOST_GCC_INITIAL_TOOLCHAIN_WRAPPER_ARGS += $(HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS) +HOST_GCC_INITIAL_POST_BUILD_HOOKS += TOOLCHAIN_WRAPPER_BUILD +HOST_GCC_INITIAL_POST_INSTALL_HOOKS += TOOLCHAIN_WRAPPER_INSTALL +HOST_GCC_INITIAL_POST_INSTALL_HOOKS += HOST_GCC_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gcc/gcc.hash b/buildroot/package/gcc/gcc.hash new file mode 100644 index 0000000..fd38cfa --- /dev/null +++ b/buildroot/package/gcc/gcc.hash @@ -0,0 +1,13 @@ +# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.4/sha512.sum +sha512 93abb78e16277454f41a8e9810f41f66c0fdffdc539a762ff6b67d3037f78db971378683fd2ebf707d1d51c059fad2161fe42d110c330027f40214b7db0f3efe gcc-4.9.4.tar.bz2 +# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-5.5.0/sha512.sum +sha512 670ff52c2ae12c7852c12987e91798c5aa8bd6daf21f0d6e0cd57a4aa59cc4f06a837fe76426eaa1424cfddca937bed377680700eadc04d76b9180d462364fa1 gcc-5.5.0.tar.xz +# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-6.4.0/sha512.sum +sha512 02c60e54527c7adf584798d5251f8a0b80c93d5deafce82501b2c28e6692e0bd783927bbfc4bc527a863c0cccc025150a34740a9e29badb02d4b48e56a8aba90 gcc-6.4.0.tar.xz +# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-7.3.0/sha512.sum +sha512 ad41a7e4584e40e92cdf860bc0288500fbaf5dfb7e8c3fcabe9eba809c87bcfa85b46c19c19921b0cdf6d05483faede8287bb9ea120c0d1559449a70e602c8d4 gcc-7.3.0.tar.xz + +# Locally calculated (fetched from Github) +sha512 c30addd3c4dc66b90749a0f99b257c8a8e7966d27f286057b6b66f4a70ca22a1ee50d92882c4db13307d769a6fb28e1e2a2bab749a692cf3f89ef0c38f145efa gcc-arc-2017.09-release.tar.gz +# Locally calculated (fetched from Github) +sha512 2de7cf47333a4092b02d3bb98f4206f14966f1d139a724d09cf3b22f8a43ae0c704f33e6477d6367a03c29b265480dc900169e9d417006c5d46f0ae446b8c6f1 gcc-or1k-musl-5.4.0-20170218.tar.gz diff --git a/buildroot/package/gcc/gcc.mk b/buildroot/package/gcc/gcc.mk new file mode 100644 index 0000000..27fc1e9 --- /dev/null +++ b/buildroot/package/gcc/gcc.mk @@ -0,0 +1,386 @@ +################################################################################ +# +# Common variables for the gcc-initial and gcc-final packages. +# +################################################################################ + +# +# Version, site and source +# + +GCC_VERSION = $(call qstrip,$(BR2_GCC_VERSION)) + +ifeq ($(BR2_GCC_VERSION_ARC),y) +GCC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,gcc,$(GCC_VERSION)) +GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz +else ifeq ($(BR2_or1k),y) +GCC_SITE = $(call github,openrisc,or1k-gcc,$(GCC_VERSION)) +GCC_SOURCE = gcc-$(GCC_VERSION).tar.gz +else +GCC_SITE = $(BR2_GNU_MIRROR:/=)/gcc/gcc-$(GCC_VERSION) +# From version 5.5.0, 6.4.0 and 7.2.0 a bz2 release tarball is not +# provided anymore. Use the xz tarball instead. +ifeq ($(BR2_GCC_VERSION_5_X)$(BR2_GCC_VERSION_6_X)$(BR2_GCC_VERSION_7_X),y) +GCC_SOURCE = gcc-$(GCC_VERSION).tar.xz +else +GCC_SOURCE = gcc-$(GCC_VERSION).tar.bz2 +endif # BR2_GCC_VERSION_6_X +endif + +# +# Xtensa special hook +# +define HOST_GCC_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),gcc) +endef + +# +# Apply patches +# + +ifeq ($(ARCH),powerpc) +ifneq ($(BR2_SOFT_FLOAT),) +define HOST_GCC_APPLY_POWERPC_PATCH + $(APPLY_PATCHES) $(@D) package/gcc/$(GCC_VERSION) 1000-powerpc-link-with-math-lib.patch.conditional +endef +endif +endif + +# gcc is a special package, not named gcc, but gcc-initial and +# gcc-final, but patches are nonetheless stored in package/gcc in the +# tree, and potentially in BR2_GLOBAL_PATCH_DIR directories as well. +define HOST_GCC_APPLY_PATCHES + for patchdir in \ + package/gcc/$(GCC_VERSION) \ + $(addsuffix /gcc/$(GCC_VERSION),$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \ + $(addsuffix /gcc,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) ; do \ + if test -d $${patchdir}; then \ + $(APPLY_PATCHES) $(@D) $${patchdir} \*.patch || exit 1; \ + fi; \ + done + $(HOST_GCC_APPLY_POWERPC_PATCH) +endef + +HOST_GCC_EXCLUDES = \ + libjava/* libgo/* \ + gcc/testsuite/* libstdc++-v3/testsuite/* + +define HOST_GCC_FAKE_TESTSUITE + mkdir -p $(@D)/libstdc++-v3/testsuite/ + echo "all:" > $(@D)/libstdc++-v3/testsuite/Makefile.in + echo "install:" >> $(@D)/libstdc++-v3/testsuite/Makefile.in +endef + +# +# Create 'build' directory and configure symlink +# + +define HOST_GCC_CONFIGURE_SYMLINK + mkdir -p $(@D)/build + ln -sf ../configure $(@D)/build/configure +endef + +# +# Common configuration options +# + +HOST_GCC_COMMON_DEPENDENCIES = \ + host-binutils \ + host-gmp \ + host-mpc \ + host-mpfr \ + $(if $(BR2_BINFMT_FLAT),host-elf2flt) + +HOST_GCC_COMMON_CONF_OPTS = \ + --target=$(GNU_TARGET_NAME) \ + --with-sysroot=$(STAGING_DIR) \ + --disable-__cxa_atexit \ + --with-gnu-ld \ + --disable-libssp \ + --disable-multilib \ + --with-gmp=$(HOST_DIR) \ + --with-mpc=$(HOST_DIR) \ + --with-mpfr=$(HOST_DIR) \ + --with-pkgversion="Buildroot $(BR2_VERSION_FULL)" \ + --with-bugurl="http://bugs.buildroot.net/" + +# Don't build documentation. It takes up extra space / build time, +# and sometimes needs specific makeinfo versions to work +HOST_GCC_COMMON_CONF_ENV = \ + MAKEINFO=missing + +GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) +GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) + +# Propagate options used for target software building to GCC target libs +HOST_GCC_COMMON_CONF_ENV += CFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CFLAGS)" +HOST_GCC_COMMON_CONF_ENV += CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)" + +# libitm needs sparc V9+ +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +HOST_GCC_COMMON_CONF_OPTS += --disable-libitm +endif + +# libmpx uses secure_getenv and struct _libc_fpstate not present in musl +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_MUSL)$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),yy) +HOST_GCC_COMMON_CONF_OPTS += --disable-libmpx +endif + +# quadmath support requires wchar +ifeq ($(BR2_USE_WCHAR)$(BR2_TOOLCHAIN_HAS_LIBQUADMATH),yy) +HOST_GCC_COMMON_CONF_OPTS += --enable-libquadmath +else +HOST_GCC_COMMON_CONF_OPTS += --disable-libquadmath +endif + +# libsanitizer requires wordexp, not in default uClibc config. Also +# doesn't build properly with musl. +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC)$(BR2_TOOLCHAIN_BUILDROOT_MUSL),y) +HOST_GCC_COMMON_CONF_OPTS += --disable-libsanitizer +endif + +# libsanitizer is broken for SPARC +# https://bugs.busybox.net/show_bug.cgi?id=7951 +ifeq ($(BR2_sparc)$(BR2_sparc64),y) +HOST_GCC_COMMON_CONF_OPTS += --disable-libsanitizer +endif + +# TLS support is not needed on uClibc/no-thread and +# uClibc/linux-threads, otherwise, for all other situations (glibc, +# musl and uClibc/NPTL), we need it. +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC)$(BR2_PTHREADS)$(BR2_PTHREADS_NONE),yy) +HOST_GCC_COMMON_CONF_OPTS += --disable-tls +else +HOST_GCC_COMMON_CONF_OPTS += --enable-tls +endif + +ifeq ($(BR2_GCC_ENABLE_LTO),y) +HOST_GCC_COMMON_CONF_OPTS += --enable-plugins --enable-lto +endif + +ifeq ($(BR2_GCC_ENABLE_LIBMUDFLAP),y) +HOST_GCC_COMMON_CONF_OPTS += --enable-libmudflap +else +HOST_GCC_COMMON_CONF_OPTS += --disable-libmudflap +endif + +ifeq ($(BR2_PTHREADS_NONE),y) +HOST_GCC_COMMON_CONF_OPTS += \ + --disable-threads \ + --disable-libitm \ + --disable-libatomic +else +HOST_GCC_COMMON_CONF_OPTS += --enable-threads +endif + +# gcc 5 doesn't need cloog any more, see +# https://gcc.gnu.org/gcc-5/changes.html and we don't support graphite +# on GCC 4.9.x, so only isl is needed. +ifeq ($(BR2_GCC_ENABLE_GRAPHITE),y) +HOST_GCC_COMMON_DEPENDENCIES += host-isl +HOST_GCC_COMMON_CONF_OPTS += --with-isl=$(HOST_DIR) +else +HOST_GCC_COMMON_CONF_OPTS += --without-isl --without-cloog +endif + +ifeq ($(BR2_arc)$(BR2_or1k),y) +HOST_GCC_COMMON_DEPENDENCIES += host-flex host-bison +endif + +ifeq ($(BR2_SOFT_FLOAT),y) +# only mips*-*-*, arm*-*-* and sparc*-*-* accept --with-float +# powerpc seems to be needing it as well +ifeq ($(BR2_arm)$(BR2_armeb)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_powerpc)$(BR2_sparc),y) +HOST_GCC_COMMON_CONF_OPTS += --with-float=soft +endif +endif + +ifeq ($(BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE),y) +HOST_GCC_COMMON_CONF_OPTS += --disable-decimal-float +endif + +# Determine arch/tune/abi/cpu options +ifeq ($(BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS),y) +ifneq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),) +HOST_GCC_COMMON_CONF_OPTS += --with-arch=$(BR2_GCC_TARGET_ARCH) +endif +ifneq ($(call qstrip,$(BR2_GCC_TARGET_ABI)),) +HOST_GCC_COMMON_CONF_OPTS += --with-abi=$(BR2_GCC_TARGET_ABI) +endif +ifeq ($(BR2_TOOLCHAIN_HAS_MNAN_OPTION),y) +ifneq ($(call qstrip,$(BR2_GCC_TARGET_NAN)),) +HOST_GCC_COMMON_CONF_OPTS += --with-nan=$(BR2_GCC_TARGET_NAN) +endif +endif +ifneq ($(call qstrip,$(BR2_GCC_TARGET_FP32_MODE)),) +HOST_GCC_COMMON_CONF_OPTS += --with-fp-32=$(BR2_GCC_TARGET_FP32_MODE) +endif +ifneq ($(call qstrip,$(BR2_GCC_TARGET_CPU)),) +ifneq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),) +HOST_GCC_COMMON_CONF_OPTS += --with-cpu=$(call qstrip,$(BR2_GCC_TARGET_CPU)-$(BR2_GCC_TARGET_CPU_REVISION)) +else +HOST_GCC_COMMON_CONF_OPTS += --with-cpu=$(call qstrip,$(BR2_GCC_TARGET_CPU)) +endif +endif + +GCC_TARGET_FPU = $(call qstrip,$(BR2_GCC_TARGET_FPU)) +ifneq ($(GCC_TARGET_FPU),) +HOST_GCC_COMMON_CONF_OPTS += --with-fpu=$(GCC_TARGET_FPU) +endif + +GCC_TARGET_FLOAT_ABI = $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) +ifneq ($(GCC_TARGET_FLOAT_ABI),) +HOST_GCC_COMMON_CONF_OPTS += --with-float=$(GCC_TARGET_FLOAT_ABI) +endif + +GCC_TARGET_MODE = $(call qstrip,$(BR2_GCC_TARGET_MODE)) +ifneq ($(GCC_TARGET_MODE),) +HOST_GCC_COMMON_CONF_OPTS += --with-mode=$(GCC_TARGET_MODE) +endif +endif # BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS + +# Enable proper double/long double for SPE ABI +ifeq ($(BR2_powerpc_SPE),y) +HOST_GCC_COMMON_CONF_OPTS += \ + --enable-e500_double \ + --with-long-double-128 +endif + +# PowerPC64 big endian by default uses the elfv1 ABI, and PowerPC 64 +# little endian by default uses the elfv2 ABI. However, musl has +# decided to use the elfv2 ABI for both, so we force the elfv2 ABI for +# Power64 big endian when the selected C library is musl. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL)$(BR2_powerpc64),yy) +HOST_GCC_COMMON_CONF_OPTS += \ + --with-abi=elfv2 \ + --without-long-double-128 +endif + +# Since glibc >= 2.26, poerpc64le requires double/long double which +# requires at least gcc 6.2. +# See sysdeps/powerpc/powerpc64le/configure.ac +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC)$(BR2_TOOLCHAIN_GCC_AT_LEAST_6)$(BR2_powerpc64le),yyy) +HOST_GCC_COMMON_CONF_OPTS += \ + --with-long-double-128 +endif + +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CROSS_PATH_SUFFIX='".br_real"' +ifeq ($(BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS),) +ifeq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),) +HOST_GCC_COMMON_WRAPPER_TARGET_CPU := $(call qstrip,$(BR2_GCC_TARGET_CPU)) +else +HOST_GCC_COMMON_WRAPPER_TARGET_CPU := $(call qstrip,$(BR2_GCC_TARGET_CPU)-$(BR2_GCC_TARGET_CPU_REVISION)) +endif +HOST_GCC_COMMON_WRAPPER_TARGET_ARCH := $(call qstrip,$(BR2_GCC_TARGET_ARCH)) +HOST_GCC_COMMON_WRAPPER_TARGET_ABI := $(call qstrip,$(BR2_GCC_TARGET_ABI)) +HOST_GCC_COMMON_WRAPPER_TARGET_NAN := $(call qstrip,$(BR2_GCC_TARGET_NAN)) +HOST_GCC_COMMON_WRAPPER_TARGET_FP32_MODE := $(call qstrip,$(BR2_GCC_TARGET_FP32_MODE)) +HOST_GCC_COMMON_WRAPPER_TARGET_FPU := $(call qstrip,$(BR2_GCC_TARGET_FPU)) +HOST_GCC_COMMON_WRAPPER_TARGET_FLOAT_ABI := $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) +HOST_GCC_COMMON_WRAPPER_TARGET_MODE := $(call qstrip,$(BR2_GCC_TARGET_MODE)) + +ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_ARCH),) +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARCH='"$(HOST_GCC_COMMON_WRAPPER_TARGET_ARCH)"' +endif +ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_CPU),) +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CPU='"$(HOST_GCC_COMMON_WRAPPER_TARGET_CPU)"' +endif +ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_ABI),) +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_ABI='"$(HOST_GCC_COMMON_WRAPPER_TARGET_ABI)"' +endif +ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_NAN),) +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_NAN='"$(HOST_GCC_COMMON_WRAPPER_TARGET_NAN)"' +endif +ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_FP32_MODE),) +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_FP32_MODE='"$(HOST_GCC_COMMON_WRAPPER_TARGET_FP32_MODE)"' +endif +ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_FPU),) +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_FPU='"$(HOST_GCC_COMMON_WRAPPER_TARGET_FPU)"' +endif +ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_FLOATABI_),) +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_FLOAT_ABI='"$(HOST_GCC_COMMON_WRAPPER_TARGET_FLOATABI_)"' +endif +ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_MODE),) +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_MODE='"$(HOST_GCC_COMMON_WRAPPER_TARGET_MODE)"' +endif +endif # !BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS + +# For gcc-initial, we need to tell gcc that the C library will be +# providing the ssp support, as it can't guess it since the C library +# hasn't been built yet. +# +# For gcc-final, the gcc logic to detect whether SSP support is +# available or not in the C library is not working properly for +# uClibc, so let's be explicit as well. +HOST_GCC_COMMON_MAKE_OPTS = \ + gcc_cv_libc_provides_ssp=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) + +ifeq ($(BR2_CCACHE),y) +HOST_GCC_COMMON_CCACHE_HASH_FILES += $(DL_DIR)/$(GCC_SOURCE) + +# Cfr. PATCH_BASE_DIRS in .stamp_patched, but we catch both versioned +# and unversioned patches unconditionally. Moreover, to facilitate the +# addition of gcc patches in BR2_GLOBAL_PATCH_DIR, we allow them to be +# stored in a sub-directory called 'gcc' even if it's not technically +# the name of the package. +HOST_GCC_COMMON_CCACHE_HASH_FILES += \ + $(sort $(wildcard \ + package/gcc/$(GCC_VERSION)/*.patch \ + $(addsuffix /$($(PKG)_RAWNAME)/$(GCC_VERSION)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \ + $(addsuffix /$($(PKG)_RAWNAME)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \ + $(addsuffix /gcc/$(GCC_VERSION)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \ + $(addsuffix /gcc/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))))) +ifeq ($(BR2_xtensa),y) +HOST_GCC_COMMON_CCACHE_HASH_FILES += $(ARCH_XTENSA_OVERLAY_TAR) +endif +ifeq ($(ARCH),powerpc) +ifneq ($(BR2_SOFT_FLOAT),) +HOST_GCC_COMMON_CCACHE_HASH_FILES += package/gcc/$(GCC_VERSION)/1000-powerpc-link-with-math-lib.patch.conditional +endif +endif + +# _CONF_OPTS contains some references to the absolute path of $(HOST_DIR) +# and a reference to the Buildroot git revision (BR2_VERSION_FULL), +# so substitute those away. +HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_HASH=\"`\ + printf '%s\n' $(subst $(HOST_DIR),@HOST_DIR@,\ + $(subst --with-pkgversion="Buildroot $(BR2_VERSION_FULL)",,$($(PKG)_CONF_OPTS))) \ + | sha256sum - $(HOST_GCC_COMMON_CCACHE_HASH_FILES) \ + | cut -c -64 | tr -d '\n'`\" +endif # BR2_CCACHE + +# The LTO support in gcc creates wrappers for ar, ranlib and nm which load +# the lto plugin. These wrappers are called *-gcc-ar, *-gcc-ranlib, and +# *-gcc-nm and should be used instead of the real programs when -flto is +# used. However, we should not add the toolchain wrapper for them, and they +# match the *cc-* pattern. Therefore, an additional case is added for *-ar, +# *-ranlib and *-nm. +# According to gfortran manpage, it supports all options supported by gcc, so +# add gfortran to the list of the program called via the Buildroot wrapper. +# Avoid that a .br_real is symlinked a second time. +# Also create -linux- symlinks. +define HOST_GCC_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS + $(Q)cd $(HOST_DIR)/bin; \ + for i in $(GNU_TARGET_NAME)-*; do \ + case "$$i" in \ + *.br_real) \ + ;; \ + *-ar|*-ranlib|*-nm) \ + ln -snf $$i $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}; \ + ;; \ + *cc|*cc-*|*++|*++-*|*cpp|*-gfortran) \ + rm -f $$i.br_real; \ + mv $$i $$i.br_real; \ + ln -sf toolchain-wrapper $$i; \ + ln -sf toolchain-wrapper $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}; \ + ln -snf $$i.br_real $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}.br_real; \ + ;; \ + *) \ + ln -snf $$i $(ARCH)-linux$${i##$(GNU_TARGET_NAME)}; \ + ;; \ + esac; \ + done + +endef + +include $(sort $(wildcard package/gcc/*/*.mk)) diff --git a/buildroot/package/gcc/or1k-musl-5.4.0-20170218/100-uclibc-conf.patch b/buildroot/package/gcc/or1k-musl-5.4.0-20170218/100-uclibc-conf.patch new file mode 100644 index 0000000..73d1f0d --- /dev/null +++ b/buildroot/package/gcc/or1k-musl-5.4.0-20170218/100-uclibc-conf.patch @@ -0,0 +1,15 @@ +Index: b/contrib/regression/objs-gcc.sh +=================================================================== +--- a/contrib/regression/objs-gcc.sh ++++ b/contrib/regression/objs-gcc.sh +@@ -106,6 +106,10 @@ + then + make all-gdb all-dejagnu all-ld || exit 1 + make install-gdb install-dejagnu install-ld || exit 1 ++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] ++ then ++ make all-gdb all-dejagnu all-ld || exit 1 ++ make install-gdb install-dejagnu install-ld || exit 1 + elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then + make bootstrap || exit 1 + make install || exit 1 diff --git a/buildroot/package/gcc/or1k-musl-5.4.0-20170218/301-missing-execinfo_h.patch b/buildroot/package/gcc/or1k-musl-5.4.0-20170218/301-missing-execinfo_h.patch new file mode 100644 index 0000000..2d0e7ba --- /dev/null +++ b/buildroot/package/gcc/or1k-musl-5.4.0-20170218/301-missing-execinfo_h.patch @@ -0,0 +1,13 @@ +Index: b/boehm-gc/include/gc.h +=================================================================== +--- a/boehm-gc/include/gc.h ++++ b/boehm-gc/include/gc.h +@@ -503,7 +503,7 @@ + #if defined(__linux__) || defined(__GLIBC__) + # include + # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ +- && !defined(__ia64__) ++ && !defined(__ia64__) && !defined(__UCLIBC__) + # ifndef GC_HAVE_BUILTIN_BACKTRACE + # define GC_HAVE_BUILTIN_BACKTRACE + # endif diff --git a/buildroot/package/gcc/or1k-musl-5.4.0-20170218/850-libstdcxx-uclibc-c99.patch b/buildroot/package/gcc/or1k-musl-5.4.0-20170218/850-libstdcxx-uclibc-c99.patch new file mode 100644 index 0000000..9e97d94 --- /dev/null +++ b/buildroot/package/gcc/or1k-musl-5.4.0-20170218/850-libstdcxx-uclibc-c99.patch @@ -0,0 +1,273 @@ +Allow C99-depending features of libstdc++ with uClibc + +The libstdc++ code is fairly restrictive on how it checks for C99 +compatibility: it requires *complete* C99 support to enable certain +features. For example, uClibc provides a good number of C99 features, +but not C99 complex number support. For this reason, libstdc++ +completely disables many the standard C++ methods that can in fact +work because uClibc provides the necessary functions. + +This patch is similar and highly inspired from +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, but implemented in +a way that doesn't involve changing the configure.ac script, as +autoreconfiguring gcc is complicated. It simply relies on the fact +that uClibc defines the __UCLIBC__ definition. + +Signed-off-by: Thomas Petazzoni + +Index: b/libstdc++-v3/config/locale/generic/c_locale.h +=================================================================== +--- a/libstdc++-v3/config/locale/generic/c_locale.h ++++ b/libstdc++-v3/config/locale/generic/c_locale.h +@@ -70,7 +70,7 @@ + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); + #else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +Index: b/libstdc++-v3/config/locale/gnu/c_locale.h +=================================================================== +--- a/libstdc++-v3/config/locale/gnu/c_locale.h ++++ b/libstdc++-v3/config/locale/gnu/c_locale.h +@@ -88,7 +88,7 @@ + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); + #else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +Index: b/libstdc++-v3/include/bits/basic_string.h +=================================================================== +--- a/libstdc++-v3/include/bits/basic_string.h ++++ b/libstdc++-v3/include/bits/basic_string.h +@@ -5239,7 +5239,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99) ++#if __cplusplus >= 201103L && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)) + + #include + +Index: b/libstdc++-v3/include/bits/locale_facets.tcc +=================================================================== +--- a/libstdc++-v3/include/bits/locale_facets.tcc ++++ b/libstdc++-v3/include/bits/locale_facets.tcc +@@ -992,7 +992,7 @@ + char __fbuf[16]; + __num_base::_S_format_float(__io, __fbuf, __mod); + +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + // Precision is always used except for hexfloat format. + const bool __use_prec = + (__io.flags() & ios_base::floatfield) != ios_base::floatfield; +Index: b/libstdc++-v3/include/bits/locale_facets_nonio.tcc +=================================================================== +--- a/libstdc++-v3/include/bits/locale_facets_nonio.tcc ++++ b/libstdc++-v3/include/bits/locale_facets_nonio.tcc +@@ -578,7 +578,7 @@ + { + const locale __loc = __io.getloc(); + const ctype<_CharT>& __ctype = use_facet >(__loc); +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + // First try a buffer perhaps big enough. + int __cs_size = 64; + char* __cs = static_cast(__builtin_alloca(__cs_size)); +Index: b/libstdc++-v3/include/c_compatibility/math.h +=================================================================== +--- a/libstdc++-v3/include/c_compatibility/math.h ++++ b/libstdc++-v3/include/c_compatibility/math.h +@@ -56,7 +56,7 @@ + using std::floor; + using std::fmod; + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::fpclassify; + using std::isfinite; + using std::isinf; +Index: b/libstdc++-v3/include/c_compatibility/wchar.h +=================================================================== +--- a/libstdc++-v3/include/c_compatibility/wchar.h ++++ b/libstdc++-v3/include/c_compatibility/wchar.h +@@ -103,7 +103,7 @@ + using std::wmemset; + using std::wcsftime; + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +Index: b/libstdc++-v3/include/c_global/cstdlib +=================================================================== +--- a/libstdc++-v3/include/c_global/cstdlib ++++ b/libstdc++-v3/include/c_global/cstdlib +@@ -195,7 +195,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef _Exit + #undef llabs +Index: b/libstdc++-v3/include/c_global/cwchar +=================================================================== +--- a/libstdc++-v3/include/c_global/cwchar ++++ b/libstdc++-v3/include/c_global/cwchar +@@ -232,7 +232,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef wcstold + #undef wcstoll +@@ -289,7 +289,7 @@ + using std::vwscanf; + #endif + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +Index: b/libstdc++-v3/include/c_std/cstdio +=================================================================== +--- a/libstdc++-v3/include/c_std/cstdio ++++ b/libstdc++-v3/include/c_std/cstdio +@@ -144,7 +144,7 @@ + using ::vsprintf; + } // namespace std + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef snprintf + #undef vfscanf +Index: b/libstdc++-v3/include/c_std/cstdlib +=================================================================== +--- a/libstdc++-v3/include/c_std/cstdlib ++++ b/libstdc++-v3/include/c_std/cstdlib +@@ -192,7 +192,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef _Exit + #undef llabs +Index: b/libstdc++-v3/include/c_std/cwchar +=================================================================== +--- a/libstdc++-v3/include/c_std/cwchar ++++ b/libstdc++-v3/include/c_std/cwchar +@@ -228,7 +228,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef wcstold + #undef wcstoll +Index: b/libstdc++-v3/include/ext/vstring.h +=================================================================== +--- a/libstdc++-v3/include/ext/vstring.h ++++ b/libstdc++-v3/include/ext/vstring.h +@@ -2680,7 +2680,7 @@ + _GLIBCXX_END_NAMESPACE_VERSION + } // namespace + +-#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99)) ++#if ((__cplusplus >= 201103L) && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__))) + + #include + +Index: b/libstdc++-v3/include/tr1/cstdio +=================================================================== +--- a/libstdc++-v3/include/tr1/cstdio ++++ b/libstdc++-v3/include/tr1/cstdio +@@ -33,7 +33,7 @@ + + #include + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + namespace std _GLIBCXX_VISIBILITY(default) + { +Index: b/libstdc++-v3/include/tr1/cstdlib +=================================================================== +--- a/libstdc++-v3/include/tr1/cstdlib ++++ b/libstdc++-v3/include/tr1/cstdlib +@@ -35,7 +35,7 @@ + + #if _GLIBCXX_HOSTED + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + namespace std _GLIBCXX_VISIBILITY(default) + { +Index: b/libstdc++-v3/include/tr1/cwchar +=================================================================== +--- a/libstdc++-v3/include/tr1/cwchar ++++ b/libstdc++-v3/include/tr1/cwchar +@@ -52,7 +52,7 @@ + using std::vwscanf; + #endif + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +Index: b/libstdc++-v3/include/tr1/stdlib.h +=================================================================== +--- a/libstdc++-v3/include/tr1/stdlib.h ++++ b/libstdc++-v3/include/tr1/stdlib.h +@@ -33,7 +33,7 @@ + + #if _GLIBCXX_HOSTED + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + using std::tr1::atoll; + using std::tr1::strtoll; +Index: b/libstdc++-v3/src/c++11/debug.cc +=================================================================== +--- a/libstdc++-v3/src/c++11/debug.cc ++++ b/libstdc++-v3/src/c++11/debug.cc +@@ -788,7 +788,7 @@ + int __n __attribute__ ((__unused__)), + const char* __fmt, _Tp __s) const throw () + { +-#ifdef _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + std::snprintf(__buf, __n, __fmt, __s); + #else + std::sprintf(__buf, __fmt, __s); +Index: b/libstdc++-v3/include/c_global/cstdio +=================================================================== +--- a/libstdc++-v3/include/c_global/cstdio ++++ b/libstdc++-v3/include/c_global/cstdio +@@ -146,7 +146,7 @@ + using ::vsprintf; + } // namespace + +-#if _GLIBCXX_USE_C99 ++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) + + #undef snprintf + #undef vfscanf diff --git a/buildroot/package/gcc/or1k-musl-5.4.0-20170218/860-cilk-wchar.patch b/buildroot/package/gcc/or1k-musl-5.4.0-20170218/860-cilk-wchar.patch new file mode 100644 index 0000000..1d9916f --- /dev/null +++ b/buildroot/package/gcc/or1k-musl-5.4.0-20170218/860-cilk-wchar.patch @@ -0,0 +1,56 @@ +[PATCH] cilk: fix build without wchar + +When building against uClibc with wchar support disabled, WCHAR_MIN and +WCHAR_MAX are not defined leading to compilation errors. + +Fix it by only including the wchar code if available. + +Signed-off-by: Peter Korsgaard +--- + libcilkrts/include/cilk/reducer_min_max.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +Index: b/libcilkrts/include/cilk/reducer_min_max.h +=================================================================== +--- a/libcilkrts/include/cilk/reducer_min_max.h ++++ b/libcilkrts/include/cilk/reducer_min_max.h +@@ -3154,7 +3154,9 @@ + CILK_C_REDUCER_MAX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INSTANCE(int, int, INT_MIN) +@@ -3306,7 +3308,9 @@ + CILK_C_REDUCER_MAX_INDEX_INSTANCE(char, char, CHAR_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned char, uchar, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(signed char, schar, SCHAR_MIN) ++#ifdef WCHAR_MIN + CILK_C_REDUCER_MAX_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) ++#endif + CILK_C_REDUCER_MAX_INDEX_INSTANCE(short, short, SHRT_MIN) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned short, ushort, 0) + CILK_C_REDUCER_MAX_INDEX_INSTANCE(int, int, INT_MIN) +@@ -3432,7 +3436,9 @@ + CILK_C_REDUCER_MIN_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INSTANCE(int, int, INT_MAX) +@@ -3584,7 +3590,9 @@ + CILK_C_REDUCER_MIN_INDEX_INSTANCE(char, char, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned char, uchar, CHAR_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(signed char, schar, SCHAR_MAX) ++#ifdef WCHAR_MAX + CILK_C_REDUCER_MIN_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) ++#endif + CILK_C_REDUCER_MIN_INDEX_INSTANCE(short, short, SHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned short, ushort, USHRT_MAX) + CILK_C_REDUCER_MIN_INDEX_INSTANCE(int, int, INT_MAX) diff --git a/buildroot/package/gcc/or1k-musl-5.4.0-20170218/930-libgcc-disable-split-stack-nothreads.patch b/buildroot/package/gcc/or1k-musl-5.4.0-20170218/930-libgcc-disable-split-stack-nothreads.patch new file mode 100644 index 0000000..07f9a73 --- /dev/null +++ b/buildroot/package/gcc/or1k-musl-5.4.0-20170218/930-libgcc-disable-split-stack-nothreads.patch @@ -0,0 +1,14 @@ +disable split-stack for non-thread builds + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-5.3.0.orig/libgcc/config/t-stack gcc-5.3.0/libgcc/config/t-stack +--- gcc-5.3.0.orig/libgcc/config/t-stack 2010-10-01 21:31:49.000000000 +0200 ++++ gcc-5.3.0/libgcc/config/t-stack 2016-03-07 03:25:32.000000000 +0100 +@@ -1,4 +1,6 @@ + # Makefile fragment to provide generic support for -fsplit-stack. + # This should be used in config.host for any host which supports + # -fsplit-stack. ++ifeq ($(enable_threads),yes) + LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c ++endif diff --git a/buildroot/package/gconf/Config.in b/buildroot/package/gconf/Config.in new file mode 100644 index 0000000..a2371b3 --- /dev/null +++ b/buildroot/package/gconf/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_GCONF + bool "gconf" + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + help + GConf was a system used by the GNOME desktop environment for + storing configuration settings for the desktop and + applications. It is similar to the Windows Registry. + + https://projects.gnome.org/gconf/ + +comment "gconf needs a toolchain w/ threads, wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR \ + || BR2_STATIC_LIBS diff --git a/buildroot/package/gconf/gconf.hash b/buildroot/package/gconf/gconf.hash new file mode 100644 index 0000000..24d0cf9 --- /dev/null +++ b/buildroot/package/gconf/gconf.hash @@ -0,0 +1,4 @@ +# http://ftp.acc.umu.se/pub/gnome/sources/GConf/3.2/GConf-3.2.6.sha256sum +sha256 1912b91803ab09a5eed34d364bf09fe3a2a9c96751fde03a4e0cfa51a04d784c GConf-3.2.6.tar.xz +# License files, locally calculated +sha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23 COPYING diff --git a/buildroot/package/gconf/gconf.mk b/buildroot/package/gconf/gconf.mk new file mode 100644 index 0000000..39df95f --- /dev/null +++ b/buildroot/package/gconf/gconf.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# gconf +# +################################################################################ + +GCONF_VERSION = 3.2.6 +GCONF_SOURCE = GConf-${GCONF_VERSION}.tar.xz +GCONF_SITE = http://ftp.gnome.org/pub/gnome/sources/GConf/3.2 +GCONF_CONF_OPTS = --disable-orbit +GCONF_DEPENDENCIES = dbus dbus-glib libglib2 libxml2 \ + host-intltool $(TARGET_NLS_DEPENDENCIES) +GCONF_LICENSE = LGPL-2.0+ +GCONF_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/gcr/Config.in b/buildroot/package/gcr/Config.in new file mode 100644 index 0000000..e233fff --- /dev/null +++ b/buildroot/package/gcr/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_GCR + bool "gcr" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # gnupg2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on !BR2_STATIC_LIBS # p11-kit + select BR2_PACKAGE_GNUPG2 # runtime + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_P11_KIT + help + Library for cryptographic UIs and accessing PKCS#11 modules. + + https://developer.gnome.org/gcr/ + +comment "gcr needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/gcr/gcr.hash b/buildroot/package/gcr/gcr.hash new file mode 100644 index 0000000..8b8b748 --- /dev/null +++ b/buildroot/package/gcr/gcr.hash @@ -0,0 +1,2 @@ +# From http://ftp.acc.umu.se/pub/gnome/sources/gcr/3.20/gcr-3.20.0.sha256sum +sha256 90572c626d8a708225560c42b4421f7941315247fa1679d4ef569bde7f4bb379 gcr-3.20.0.tar.xz diff --git a/buildroot/package/gcr/gcr.mk b/buildroot/package/gcr/gcr.mk new file mode 100644 index 0000000..7cb35af --- /dev/null +++ b/buildroot/package/gcr/gcr.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# gcr +# +################################################################################ + +GCR_VERSION_MAJOR = 3.20 +GCR_VERSION = $(GCR_VERSION_MAJOR).0 +GCR_SITE = http://ftp.acc.umu.se/pub/gnome/sources/gcr/$(GCR_VERSION_MAJOR) +GCR_SOURCE = gcr-$(GCR_VERSION).tar.xz +GCR_DEPENDENCIES = host-intltool host-pkgconf libgcrypt libglib2 p11-kit +GCR_INSTALL_STAGING = YES +GCR_CONF_ENV = ac_cv_path_GNUPG=/usr/bin/gpg2 +GCR_CONF_OPTS = \ + --disable-gtk-doc \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr +# Even though COPYING is v2 the code states v2.1+ +GCR_LICENSE = LGPL-2.1+ +GCR_LICENSE_FILES = COPYING + +# Only the X11 backend is supported for the simple GUI +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +GCR_DEPENDENCIES += libgtk3 +GCR_CONF_OPTS += --with-gtk +else +GCR_CONF_OPTS += --without-gtk +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gd/Config.in b/buildroot/package/gd/Config.in new file mode 100644 index 0000000..861cef8 --- /dev/null +++ b/buildroot/package/gd/Config.in @@ -0,0 +1,58 @@ +menuconfig BR2_PACKAGE_GD + bool "gd" + help + GD is a graphics library. It allows your code to quickly + draw images complete with lines, arcs, text, multiple + colours, cut and paste from other images, flood fills, and + write out the result as a PNG file. This is particularly + useful in World Wide Web applications, where PNG is one of + the formats accepted for inline images by most browsers. + + https://libgd.github.io/ + +if BR2_PACKAGE_GD + +config BR2_PACKAGE_GD_ANNOTATE + bool "annotate" + +config BR2_PACKAGE_GD_BDFTOGD + bool "bdftogd" + depends on BR2_PACKAGE_PERL + +config BR2_PACKAGE_GD_GD2COPYPAL + bool "gd2copypal" + +config BR2_PACKAGE_GD_GD2TOGIF + bool "gd2togif" + +config BR2_PACKAGE_GD_GD2TOPNG + bool "gd2topng" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GD_GDCMPGIF + bool "gdcmpgif" + +config BR2_PACKAGE_GD_GDPARTTOPNG + bool "gdparttopng" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GD_GDTOPNG + bool "gdtopng" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GD_GIFTOGD2 + bool "giftogd2" + +config BR2_PACKAGE_GD_PNGTOGD + bool "pngtogd" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GD_PNGTOGD2 + bool "pngtogd2" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GD_WEBPNG + bool "webpng" + select BR2_PACKAGE_LIBPNG + +endif diff --git a/buildroot/package/gd/gd.hash b/buildroot/package/gd/gd.hash new file mode 100644 index 0000000..1cd9e56 --- /dev/null +++ b/buildroot/package/gd/gd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8c302ccbf467faec732f0741a859eef4ecae22fea2d2ab87467be940842bde51 libgd-2.2.5.tar.xz +sha256 d02dae2141d49b8a6b09b2b73e68a8f17d7bbeaaf02b3b841ee11fea2d9e328d COPYING diff --git a/buildroot/package/gd/gd.mk b/buildroot/package/gd/gd.mk new file mode 100644 index 0000000..e2a46dc --- /dev/null +++ b/buildroot/package/gd/gd.mk @@ -0,0 +1,96 @@ +################################################################################ +# +# gd +# +################################################################################ + +GD_VERSION = 2.2.5 +GD_SOURCE = libgd-$(GD_VERSION).tar.xz +GD_SITE = https://github.com/libgd/libgd/releases/download/gd-$(GD_VERSION) +GD_INSTALL_STAGING = YES +GD_LICENSE = GD license +GD_LICENSE_FILES = COPYING +GD_CONFIG_SCRIPTS = gdlib-config +GD_CONF_OPTS = --without-x --disable-rpath --disable-werror +GD_DEPENDENCIES = host-pkgconf + +# gd forgets to link utilities with -pthread even though it uses +# pthreads, causing linking errors with static linking +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +GD_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -pthread" +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +GD_DEPENDENCIES += fontconfig +GD_CONF_OPTS += --with-fontconfig +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +GD_DEPENDENCIES += freetype +GD_CONF_OPTS += --with-freetype=$(STAGING_DIR)/usr +else +GD_CONF_OPTS += --without-freetype +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +GD_DEPENDENCIES += libiconv +# not strictly needed for gd, but ensures -liconv ends up in +# gdlib-config --libs output +GD_CONF_ENV += LIBS="-liconv" +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +GD_DEPENDENCIES += jpeg +GD_CONF_OPTS += --with-jpeg +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +GD_DEPENDENCIES += libpng +GD_CONF_OPTS += --with-png +else +GD_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +GD_DEPENDENCIES += webp +GD_CONF_OPTS += --with-webp +else +GD_CONF_OPTS += --without-webp +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +GD_DEPENDENCIES += tiff +GD_CONF_OPTS += --with-tiff +else +GD_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y) +GD_DEPENDENCIES += xlib_libXpm +GD_CONF_OPTS += --with-xpm +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GD_DEPENDENCIES += zlib +endif + +GD_TOOLS_$(BR2_PACKAGE_GD_ANNOTATE) += annotate +GD_TOOLS_$(BR2_PACKAGE_GD_BDFTOGD) += bdftogd +GD_TOOLS_$(BR2_PACKAGE_GD_GD2COPYPAL) += gd2copypal +GD_TOOLS_$(BR2_PACKAGE_GD_GD2TOGIF) += gd2togif +GD_TOOLS_$(BR2_PACKAGE_GD_GD2TOPNG) += gd2topng +GD_TOOLS_$(BR2_PACKAGE_GD_GDCMPGIF) += gdcmpgif +GD_TOOLS_$(BR2_PACKAGE_GD_GDPARTTOPNG) += gdparttopng +GD_TOOLS_$(BR2_PACKAGE_GD_GDTOPNG) += gdtopng +GD_TOOLS_$(BR2_PACKAGE_GD_GIFTOGD2) += giftogd2 +GD_TOOLS_$(BR2_PACKAGE_GD_PNGTOGD) += pngtogd +GD_TOOLS_$(BR2_PACKAGE_GD_PNGTOGD2) += pngtogd2 +GD_TOOLS_$(BR2_PACKAGE_GD_WEBPNG) += webpng + +define GD_REMOVE_TOOLS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,$(GD_TOOLS_)) +endef + +GD_POST_INSTALL_TARGET_HOOKS += GD_REMOVE_TOOLS + +$(eval $(autotools-package)) diff --git a/buildroot/package/gdb/7.10.1/0001-Add-some-casts-for-building-on-musl.patch b/buildroot/package/gdb/7.10.1/0001-Add-some-casts-for-building-on-musl.patch new file mode 100644 index 0000000..863e26a --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0001-Add-some-casts-for-building-on-musl.patch @@ -0,0 +1,90 @@ +From d41401ace01c234f42697e190a2ac95991780626 Mon Sep 17 00:00:00 2001 +From: Doug Evans +Date: Mon, 26 Oct 2015 13:20:12 -0700 +Subject: [PATCH] Add some casts for building on musl. + +gdb/ChangeLog: + + * linux-thread-db.c (find_new_threads_callback): Cast ti.ti_tid to + unsigned long for debug_printf. + (thread_db_pid_to_str): Ditto. + +gdb/gdbserver/ChangeLog: + + * thread-db.c (find_one_thread): Cast ti.ti_tid to unsigned long + for debug_printf. + (attach_thread, find_new_threads_callback): Ditto. + +[Arnout: removed the parts that don't apply, including ChangeLog] +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + gdb/ChangeLog | 5 +++++ + gdb/gdbserver/ChangeLog | 6 ++++++ + gdb/gdbserver/thread-db.c | 9 +++++---- + gdb/linux-thread-db.c | 5 +++-- + 4 files changed, 19 insertions(+), 6 deletions(-) + +diff --git a/gdb/gdbserver/thread-db.c b/gdb/gdbserver/thread-db.c +index ffe722d..3df10ff 100644 +--- a/gdb/gdbserver/thread-db.c ++++ b/gdb/gdbserver/thread-db.c +@@ -278,7 +278,7 @@ find_one_thread (ptid_t ptid) + + if (debug_threads) + debug_printf ("Found thread %ld (LWP %d)\n", +- ti.ti_tid, ti.ti_lid); ++ (unsigned long) ti.ti_tid, ti.ti_lid); + + if (lwpid != ti.ti_lid) + { +@@ -319,12 +319,12 @@ attach_thread (const td_thrhandle_t *th_p, td_thrinfo_t *ti_p) + + if (debug_threads) + debug_printf ("Attaching to thread %ld (LWP %d)\n", +- ti_p->ti_tid, ti_p->ti_lid); ++ (unsigned long) ti_p->ti_tid, ti_p->ti_lid); + err = linux_attach_lwp (ptid); + if (err != 0) + { + warning ("Could not attach to thread %ld (LWP %d): %s\n", +- ti_p->ti_tid, ti_p->ti_lid, ++ (unsigned long) ti_p->ti_tid, ti_p->ti_lid, + linux_ptrace_attach_fail_reason_string (ptid, err)); + return 0; + } +@@ -392,7 +392,8 @@ find_new_threads_callback (const td_thrhandle_t *th_p, void *data) + glibc PR17707. */ + if (debug_threads) + debug_printf ("thread_db: skipping exited and " +- "joined thread (0x%lx)\n", ti.ti_tid); ++ "joined thread (0x%lx)\n", ++ (unsigned long) ti.ti_tid); + return 0; + } + +diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c +index 66e9595..41db29a 100644 +--- a/gdb/linux-thread-db.c ++++ b/gdb/linux-thread-db.c +@@ -1585,7 +1585,8 @@ find_new_threads_callback (const td_thrhandle_t *th_p, void *data) + if (libthread_db_debug) + fprintf_unfiltered (gdb_stdlog, + "thread_db: skipping exited and " +- "joined thread (0x%lx)\n", ti.ti_tid); ++ "joined thread (0x%lx)\n", ++ (unsigned long) ti.ti_tid); + return 0; + } + +@@ -1816,7 +1817,7 @@ thread_db_pid_to_str (struct target_ops *ops, ptid_t ptid) + + tid = thread_info->priv->tid; + snprintf (buf, sizeof (buf), "Thread 0x%lx (LWP %ld)", +- tid, ptid_get_lwp (ptid)); ++ (unsigned long) tid, ptid_get_lwp (ptid)); + + return buf; + } +-- +1.9.4 + diff --git a/buildroot/package/gdb/7.10.1/0002-musl-Move-W_STOPCODE-to-common-gdb_wait-h.patch b/buildroot/package/gdb/7.10.1/0002-musl-Move-W_STOPCODE-to-common-gdb_wait-h.patch new file mode 100644 index 0000000..60c357c --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0002-musl-Move-W_STOPCODE-to-common-gdb_wait-h.patch @@ -0,0 +1,63 @@ +From 963843d4d07aef6caa296dacf191f8adc9518596 Mon Sep 17 00:00:00 2001 +From: Doug Evans +Date: Mon, 26 Oct 2015 13:24:01 -0700 +Subject: [PATCH] musl: Move W_STOPCODE to common/gdb_wait.h. + +gdb/ChangeLog: + + * common/gdb_wait.h (W_STOPCODE): Define, moved here from + gdbserver/linux-low.c. + (WSETSTOP): Simplify. + +gdb/gdbserver/ChangeLog: + + * linux-low.c (W_STOPCODE): Moved to common/gdb_wait.h. + +[Arnout: removed the parts that don't apply, including ChangeLog] +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + gdb/ChangeLog | 6 ++++++ + gdb/common/gdb_wait.h | 8 ++++---- + gdb/gdbserver/ChangeLog | 4 ++++ + gdb/gdbserver/linux-low.c | 4 ---- + 4 files changed, 14 insertions(+), 8 deletions(-) + +diff --git a/gdb/common/gdb_wait.h b/gdb/common/gdb_wait.h +index 9b250d2..412f813 100644 +--- a/gdb/common/gdb_wait.h ++++ b/gdb/common/gdb_wait.h +@@ -85,12 +85,12 @@ + # endif + #endif + ++#ifndef W_STOPCODE ++#define W_STOPCODE(sig) ((sig) << 8 | 0x7f) ++#endif ++ + #ifndef WSETSTOP +-# ifdef W_STOPCODE + #define WSETSTOP(w,sig) ((w) = W_STOPCODE(sig)) +-# else +-#define WSETSTOP(w,sig) ((w) = (0177 | ((sig) << 8))) +-# endif + #endif + + /* For native GNU/Linux we may use waitpid and the __WCLONE option. +diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c +index 0c552b8..7ed67c7 100644 +--- a/gdb/gdbserver/linux-low.c ++++ b/gdb/gdbserver/linux-low.c +@@ -70,10 +70,6 @@ + #define O_LARGEFILE 0 + #endif + +-#ifndef W_STOPCODE +-#define W_STOPCODE(sig) ((sig) << 8 | 0x7f) +-#endif +- + /* This is the kernel's hard limit. Not to be confused with + SIGRTMIN. */ + #ifndef __SIGRTMIN +-- +1.9.4 + diff --git a/buildroot/package/gdb/7.10.1/0003-move-__SIGRTMIN.patch b/buildroot/package/gdb/7.10.1/0003-move-__SIGRTMIN.patch new file mode 100644 index 0000000..38ba1f0 --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0003-move-__SIGRTMIN.patch @@ -0,0 +1,58 @@ +From 682b25469e66ea45b214e95962671373983c118f Mon Sep 17 00:00:00 2001 +From: Doug Evans +Date: Mon, 26 Oct 2015 13:30:57 -0700 +Subject: [PATCH] Move __SIGRTMIN. + +gdb/ChangeLog: + + * nat/linux-nat.h (__SIGRTMIN): Move here from gdbserver/linux-low.c. + +gdb/gdbserver/ChangeLog: + + * linux-low.c (__SIGRTMIN): Move to nat/linux-nat.h. + +[Arnout: removed the parts that don't apply, including ChangeLog] +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + gdb/ChangeLog | 4 ++++ + gdb/gdbserver/ChangeLog | 4 ++++ + gdb/gdbserver/linux-low.c | 6 ------ + gdb/nat/linux-nat.h | 5 +++++ + 4 files changed, 13 insertions(+), 6 deletions(-) + +diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c +index 7ed67c7..e778c4c 100644 +--- a/gdb/gdbserver/linux-low.c ++++ b/gdb/gdbserver/linux-low.c +@@ -70,12 +70,6 @@ + #define O_LARGEFILE 0 + #endif + +-/* This is the kernel's hard limit. Not to be confused with +- SIGRTMIN. */ +-#ifndef __SIGRTMIN +-#define __SIGRTMIN 32 +-#endif +- + /* Some targets did not define these ptrace constants from the start, + so gdbserver defines them locally here. In the future, these may + be removed after they are added to asm/ptrace.h. */ +diff --git a/gdb/nat/linux-nat.h b/gdb/nat/linux-nat.h +index 0633fa9..70e6274 100644 +--- a/gdb/nat/linux-nat.h ++++ b/gdb/nat/linux-nat.h +@@ -25,6 +25,11 @@ + struct lwp_info; + struct arch_lwp_info; + ++/* This is the kernel's hard limit. Not to be confused with SIGRTMIN. */ ++#ifndef __SIGRTMIN ++#define __SIGRTMIN 32 ++#endif ++ + /* Unlike other extended result codes, WSTOPSIG (status) on + PTRACE_O_TRACESYSGOOD syscall events doesn't return SIGTRAP, but + instead SIGTRAP with bit 7 set. */ +-- +1.9.4 + diff --git a/buildroot/package/gdb/7.10.1/0004-xtensa-implement-NPTL-helpers.patch b/buildroot/package/gdb/7.10.1/0004-xtensa-implement-NPTL-helpers.patch new file mode 100644 index 0000000..e7bc74e --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0004-xtensa-implement-NPTL-helpers.patch @@ -0,0 +1,267 @@ +From d4eb69fc4b50f9a0babd70b28d0601b40f31bd0f Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Thu, 2 Jul 2015 15:10:58 +0300 +Subject: [PATCH] xtensa: implement NPTL helpers + +These changes allow debugging multithreaded NPTL xtensa applications. + +2015-08-20 Max Filippov +gdb/gdbserver/ + * configure.srv (xtensa*-*-linux*): Add srv_linux_thread_db=yes. + * linux-xtensa-low.c (arch/xtensa.h gdb_proc_service.h): New + #includes. + (ps_get_thread_area): New function. + +2015-08-20 Max Filippov +gdb/ + * arch/xtensa.h: New file. + * xtensa-linux-nat.c (gdb_proc_service.h): New #include. + (ps_get_thread_area): New function. + * xtensa-linux-tdep.c (xtensa_linux_init_abi): Add call to + set_gdbarch_fetch_tls_load_module_address to enable TLS support. + * xtensa-tdep.c (osabi.h): New #include. + (xtensa_gdbarch_init): Call gdbarch_init_osabi to register + xtensa-specific hooks. + * xtensa-tdep.h (struct xtensa_elf_gregset_t): Add threadptr + member and move the structure to arch/xtensa.h. + +Signed-off-by: Max Filippov +--- +Backported from: 40045d91812b25c88c8275b8c08d27c234b68ba8 +Changes to ChangeLog files are dropped. + + gdb/arch/xtensa.h | 46 ++++++++++++++++++++++++++++++++++++++++ + gdb/gdbserver/configure.srv | 1 + + gdb/gdbserver/linux-xtensa-low.c | 21 ++++++++++++++++++ + gdb/xtensa-linux-nat.c | 22 ++++++++++++++++++ + gdb/xtensa-linux-tdep.c | 4 ++++ + gdb/xtensa-tdep.c | 4 ++++ + gdb/xtensa-tdep.h | 24 ++------------------ + 7 files changed, 100 insertions(+), 22 deletions(-) + create mode 100644 gdb/arch/xtensa.h + +diff --git a/gdb/arch/xtensa.h b/gdb/arch/xtensa.h +new file mode 100644 +index 0000000..fe96584 +--- /dev/null ++++ b/gdb/arch/xtensa.h +@@ -0,0 +1,46 @@ ++/* Common Target-dependent code for the Xtensa port of GDB, the GNU debugger. ++ ++ Copyright (C) 2003-2015 Free Software Foundation, Inc. ++ ++ This file is part of GDB. ++ ++ 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 3 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, see . */ ++ ++#ifndef XTENSA_H ++#define XTENSA_H ++ ++/* Xtensa ELF core file register set representation ('.reg' section). ++ Copied from target-side ELF header . */ ++ ++typedef uint32_t xtensa_elf_greg_t; ++ ++typedef struct ++{ ++ xtensa_elf_greg_t pc; ++ xtensa_elf_greg_t ps; ++ xtensa_elf_greg_t lbeg; ++ xtensa_elf_greg_t lend; ++ xtensa_elf_greg_t lcount; ++ xtensa_elf_greg_t sar; ++ xtensa_elf_greg_t windowstart; ++ xtensa_elf_greg_t windowbase; ++ xtensa_elf_greg_t threadptr; ++ xtensa_elf_greg_t reserved[7+48]; ++ xtensa_elf_greg_t ar[64]; ++} xtensa_elf_gregset_t; ++ ++#define XTENSA_ELF_NGREG (sizeof (xtensa_elf_gregset_t) \ ++ / sizeof (xtensa_elf_greg_t)) ++ ++#endif +diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv +index 0b18d1d..320c26a 100644 +--- a/gdb/gdbserver/configure.srv ++++ b/gdb/gdbserver/configure.srv +@@ -352,6 +352,7 @@ case "${target}" in + xtensa*-*-linux*) srv_regobj=reg-xtensa.o + srv_tgtobj="$srv_linux_obj linux-xtensa-low.o" + srv_linux_regsets=yes ++ srv_linux_thread_db=yes + ;; + tilegx-*-linux*) srv_regobj=reg-tilegx.o + srv_regobj="${srv_regobj} reg-tilegx32.o" +diff --git a/gdb/gdbserver/linux-xtensa-low.c b/gdb/gdbserver/linux-xtensa-low.c +index 4daccee..debe467 100644 +--- a/gdb/gdbserver/linux-xtensa-low.c ++++ b/gdb/gdbserver/linux-xtensa-low.c +@@ -26,6 +26,8 @@ extern const struct target_desc *tdesc_xtensa; + + #include + #include ++#include "arch/xtensa.h" ++#include "gdb_proc_service.h" + + #include "xtensa-xtregs.c" + +@@ -179,6 +181,25 @@ xtensa_breakpoint_at (CORE_ADDR where) + xtensa_breakpoint, xtensa_breakpoint_len) == 0; + } + ++/* Called by libthread_db. */ ++ ++ps_err_e ++ps_get_thread_area (const struct ps_prochandle *ph, ++ lwpid_t lwpid, int idx, void **base) ++{ ++ xtensa_elf_gregset_t regs; ++ ++ if (ptrace (PTRACE_GETREGS, lwpid, NULL, ®s) != 0) ++ return PS_ERR; ++ ++ /* IDX is the bias from the thread pointer to the beginning of the ++ thread descriptor. It has to be subtracted due to implementation ++ quirks in libthread_db. */ ++ *base = (void *) ((char *) regs.threadptr - idx); ++ ++ return PS_OK; ++} ++ + static struct regsets_info xtensa_regsets_info = + { + xtensa_regsets, /* regsets */ +diff --git a/gdb/xtensa-linux-nat.c b/gdb/xtensa-linux-nat.c +index 77ad3e0..5538d5b 100644 +--- a/gdb/xtensa-linux-nat.c ++++ b/gdb/xtensa-linux-nat.c +@@ -37,6 +37,9 @@ + #include "gregset.h" + #include "xtensa-tdep.h" + ++/* Defines ps_err_e, struct ps_prochandle. */ ++#include "gdb_proc_service.h" ++ + /* Extended register set depends on hardware configs. + Keeping these definitions separately allows to introduce + hardware-specific overlays. */ +@@ -280,6 +283,25 @@ xtensa_linux_store_inferior_registers (struct target_ops *ops, + store_xtregs (regcache, regnum); + } + ++/* Called by libthread_db. */ ++ ++ps_err_e ++ps_get_thread_area (const struct ps_prochandle *ph, ++ lwpid_t lwpid, int idx, void **base) ++{ ++ xtensa_elf_gregset_t regs; ++ ++ if (ptrace (PTRACE_GETREGS, lwpid, NULL, ®s) != 0) ++ return PS_ERR; ++ ++ /* IDX is the bias from the thread pointer to the beginning of the ++ thread descriptor. It has to be subtracted due to implementation ++ quirks in libthread_db. */ ++ *base = (void *) ((char *) regs.threadptr - idx); ++ ++ return PS_OK; ++} ++ + void _initialize_xtensa_linux_nat (void); + + void +diff --git a/gdb/xtensa-linux-tdep.c b/gdb/xtensa-linux-tdep.c +index 61ea9b0..99e0d3e 100644 +--- a/gdb/xtensa-linux-tdep.c ++++ b/gdb/xtensa-linux-tdep.c +@@ -106,6 +106,10 @@ xtensa_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) + xtensa_linux_gdb_signal_from_target); + set_gdbarch_gdb_signal_to_target (gdbarch, + xtensa_linux_gdb_signal_to_target); ++ ++ /* Enable TLS support. */ ++ set_gdbarch_fetch_tls_load_module_address (gdbarch, ++ svr4_fetch_objfile_link_map); + } + + /* Provide a prototype to silence -Wmissing-prototypes. */ +diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c +index 55e7d98..4b693ed 100644 +--- a/gdb/xtensa-tdep.c ++++ b/gdb/xtensa-tdep.c +@@ -28,6 +28,7 @@ + #include "value.h" + #include "dis-asm.h" + #include "inferior.h" ++#include "osabi.h" + #include "floatformat.h" + #include "regcache.h" + #include "reggroups.h" +@@ -3273,6 +3274,9 @@ xtensa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) + set_solib_svr4_fetch_link_map_offsets + (gdbarch, svr4_ilp32_fetch_link_map_offsets); + ++ /* Hook in the ABI-specific overrides, if they have been registered. */ ++ gdbarch_init_osabi (info, gdbarch); ++ + return gdbarch; + } + +diff --git a/gdb/xtensa-tdep.h b/gdb/xtensa-tdep.h +index caa2988..5b28cab 100644 +--- a/gdb/xtensa-tdep.h ++++ b/gdb/xtensa-tdep.h +@@ -18,6 +18,8 @@ + along with this program. If not, see . */ + + ++#include "arch/xtensa.h" ++ + /* XTENSA_TDEP_VERSION can/should be changed along with XTENSA_CONFIG_VERSION + whenever the "tdep" structure changes in an incompatible way. */ + +@@ -81,28 +83,6 @@ typedef enum + } xtensa_target_flags_t; + + +-/* Xtensa ELF core file register set representation ('.reg' section). +- Copied from target-side ELF header . */ +- +-typedef uint32_t xtensa_elf_greg_t; +- +-typedef struct +-{ +- xtensa_elf_greg_t pc; +- xtensa_elf_greg_t ps; +- xtensa_elf_greg_t lbeg; +- xtensa_elf_greg_t lend; +- xtensa_elf_greg_t lcount; +- xtensa_elf_greg_t sar; +- xtensa_elf_greg_t windowstart; +- xtensa_elf_greg_t windowbase; +- xtensa_elf_greg_t reserved[8+48]; +- xtensa_elf_greg_t ar[64]; +-} xtensa_elf_gregset_t; +- +-#define XTENSA_ELF_NGREG (sizeof (xtensa_elf_gregset_t) \ +- / sizeof (xtensa_elf_greg_t)) +- + /* Mask. */ + + typedef struct +-- +1.8.1.4 + diff --git a/buildroot/package/gdb/7.10.1/0005-target.h-include-sys-types.h.patch b/buildroot/package/gdb/7.10.1/0005-target.h-include-sys-types.h.patch new file mode 100644 index 0000000..ba5419d --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0005-target.h-include-sys-types.h.patch @@ -0,0 +1,30 @@ +From cd68d0ebe7748a5448c86eb021b717df6fe83f35 Mon Sep 17 00:00:00 2001 +From: Doug Evans +Date: Sun, 22 Nov 2015 17:24:03 -0800 +Subject: [PATCH] target.h: #include . + +For musl. + +[Romain: + rebase on gdb 7.10.1 from upstream (7.11) + remove ChangeLog entry] +Signed-off-by: Romain Naour +--- + gdb/gdbserver/target.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gdb/gdbserver/target.h b/gdb/gdbserver/target.h +index 9a40867..6af043c 100644 +--- a/gdb/gdbserver/target.h ++++ b/gdb/gdbserver/target.h +@@ -21,6 +21,7 @@ + #ifndef TARGET_H + #define TARGET_H + ++#include /* for mode_t */ + #include "target/target.h" + #include "target/resume.h" + #include "target/wait.h" +-- +2.5.5 + diff --git a/buildroot/package/gdb/7.10.1/0006-Revert-sim-unify-SIM_CPU-definition.patch b/buildroot/package/gdb/7.10.1/0006-Revert-sim-unify-SIM_CPU-definition.patch new file mode 100644 index 0000000..20b7fb2 --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0006-Revert-sim-unify-SIM_CPU-definition.patch @@ -0,0 +1,372 @@ +From 4d913bb73965fdb9c756e8d5916a829b60aa3a44 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 4 Aug 2016 23:44:24 +0200 +Subject: [PATCH] Revert "sim: unify SIM_CPU definition" + +This reverts commit 20bca71d82598a015de0991196e45f0b5f7ead81. + +This change causes a redefinition of SIM_CPU on the Blackfin +architecture, as it is defined in both the common sim/common/sim-base.h +and the architecture specific sim/bfin/sim-main.h. + +Signed-off-by: Thomas Petazzoni +--- + sim/arm/sim-main.h | 3 +++ + sim/avr/sim-main.h | 2 ++ + sim/bfin/sim-main.h | 2 -- + sim/common/sim-base.h | 2 -- + sim/cr16/sim-main.h | 2 ++ + sim/cris/sim-main.h | 5 +++++ + sim/d10v/sim-main.h | 2 ++ + sim/frv/sim-main.h | 10 ++++++++++ + sim/ft32/sim-main.h | 2 ++ + sim/h8300/sim-main.h | 3 +++ + sim/iq2000/sim-main.h | 5 +++++ + sim/lm32/sim-main.h | 5 +++++ + sim/m32r/sim-main.h | 5 +++++ + sim/m68hc11/sim-main.h | 3 +++ + sim/mcore/sim-main.h | 2 ++ + sim/microblaze/sim-main.h | 3 +++ + sim/mips/sim-main.h | 3 +++ + sim/mn10300/sim-main.h | 2 ++ + sim/moxie/sim-main.h | 3 +++ + sim/msp430/sim-main.h | 3 +++ + sim/sh/sim-main.h | 3 +++ + sim/sh64/sim-main.h | 5 +++++ + sim/v850/sim-main.h | 3 +++ + 23 files changed, 74 insertions(+), 4 deletions(-) + +diff --git a/sim/arm/sim-main.h b/sim/arm/sim-main.h +index 9a37b98..ae622bd 100644 +--- a/sim/arm/sim-main.h ++++ b/sim/arm/sim-main.h +@@ -20,6 +20,9 @@ + #define SIM_MAIN_H + + #include "sim-basics.h" ++ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + #include "bfd.h" + +diff --git a/sim/avr/sim-main.h b/sim/avr/sim-main.h +index e0cac22..52904e3 100644 +--- a/sim/avr/sim-main.h ++++ b/sim/avr/sim-main.h +@@ -23,6 +23,8 @@ along with this program. If not, see . */ + + extern unsigned int pc; + ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + + struct _sim_cpu { +diff --git a/sim/bfin/sim-main.h b/sim/bfin/sim-main.h +index 806fe15..53e1774 100644 +--- a/sim/bfin/sim-main.h ++++ b/sim/bfin/sim-main.h +@@ -24,8 +24,6 @@ + #include "sim-basics.h" + #include "sim-signal.h" + +-/* TODO: Delete this. Need to convert bu32/etc... to common sim types +- and unwind the bfin-sim.h/machs.h include below first though. */ + typedef struct _sim_cpu SIM_CPU; + + #include "bfin-sim.h" +diff --git a/sim/common/sim-base.h b/sim/common/sim-base.h +index 21f61f4..e90e07c 100644 +--- a/sim/common/sim-base.h ++++ b/sim/common/sim-base.h +@@ -72,8 +72,6 @@ typedef address_word sim_cia; + #define INVALID_INSTRUCTION_ADDRESS ((address_word)0 - 1) + #endif + +-/* TODO: Probably should just delete SIM_CPU. */ +-typedef struct _sim_cpu SIM_CPU; + typedef struct _sim_cpu sim_cpu; + + #include "sim-module.h" +diff --git a/sim/cr16/sim-main.h b/sim/cr16/sim-main.h +index a63b93e..1a80229 100644 +--- a/sim/cr16/sim-main.h ++++ b/sim/cr16/sim-main.h +@@ -24,6 +24,8 @@ + typedef long int word; + typedef unsigned long int uword; + ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + #include "bfd.h" + +diff --git a/sim/cris/sim-main.h b/sim/cris/sim-main.h +index 4dc04a2..fec0039 100644 +--- a/sim/cris/sim-main.h ++++ b/sim/cris/sim-main.h +@@ -24,6 +24,11 @@ along with this program. If not, see . */ + #ifndef SIM_MAIN_H + #define SIM_MAIN_H + ++#define USING_SIM_BASE_H ++ ++struct _sim_cpu; ++typedef struct _sim_cpu SIM_CPU; ++ + #include "symcat.h" + #include "sim-basics.h" + #include "cgen-types.h" +diff --git a/sim/d10v/sim-main.h b/sim/d10v/sim-main.h +index 0b87811..a7d59dd 100644 +--- a/sim/d10v/sim-main.h ++++ b/sim/d10v/sim-main.h +@@ -24,6 +24,8 @@ + typedef long int word; + typedef unsigned long int uword; + ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + #include "bfd.h" + +diff --git a/sim/frv/sim-main.h b/sim/frv/sim-main.h +index d5a67cb..fd12c4f 100644 +--- a/sim/frv/sim-main.h ++++ b/sim/frv/sim-main.h +@@ -19,6 +19,16 @@ along with this program. If not, see . */ + + /* Main header for the frv. */ + ++#define USING_SIM_BASE_H /* FIXME: quick hack */ ++ ++struct _sim_cpu; /* FIXME: should be in sim-basics.h */ ++typedef struct _sim_cpu SIM_CPU; ++ ++/* Set the mask of unsupported traces. */ ++#define WITH_TRACE \ ++ (~(TRACE_alu | TRACE_decode | TRACE_memory | TRACE_model | TRACE_fpu \ ++ | TRACE_branch | TRACE_debug)) ++ + /* sim-basics.h includes config.h but cgen-types.h must be included before + sim-basics.h and cgen-types.h needs config.h. */ + #include "config.h" +diff --git a/sim/ft32/sim-main.h b/sim/ft32/sim-main.h +index b27a690..a270a5d 100644 +--- a/sim/ft32/sim-main.h ++++ b/sim/ft32/sim-main.h +@@ -25,6 +25,8 @@ + #include "sim-base.h" + #include "bfd.h" + ++typedef struct _sim_cpu SIM_CPU; ++ + #include "ft32-sim.h" + + struct _sim_cpu { +diff --git a/sim/h8300/sim-main.h b/sim/h8300/sim-main.h +index 6dbc1ac..e95c4d9 100644 +--- a/sim/h8300/sim-main.h ++++ b/sim/h8300/sim-main.h +@@ -87,6 +87,9 @@ enum h8_typecodes { + }; + + #include "sim-basics.h" ++ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + + /* Structure used to describe addressing */ +diff --git a/sim/iq2000/sim-main.h b/sim/iq2000/sim-main.h +index 992520a..ce3baba 100644 +--- a/sim/iq2000/sim-main.h ++++ b/sim/iq2000/sim-main.h +@@ -4,6 +4,11 @@ + #ifndef SIM_MAIN_H + #define SIM_MAIN_H + ++#define USING_SIM_BASE_H /* FIXME: quick hack */ ++ ++struct _sim_cpu; /* FIXME: should be in sim-basics.h */ ++typedef struct _sim_cpu SIM_CPU; ++ + /* sim-basics.h includes config.h but cgen-types.h must be included before + sim-basics.h and cgen-types.h needs config.h. */ + #include "config.h" +diff --git a/sim/lm32/sim-main.h b/sim/lm32/sim-main.h +index 4894e8d..210bb8b 100644 +--- a/sim/lm32/sim-main.h ++++ b/sim/lm32/sim-main.h +@@ -23,6 +23,11 @@ + #ifndef SIM_MAIN_H + #define SIM_MAIN_H + ++#define USING_SIM_BASE_H /* FIXME: quick hack */ ++ ++struct _sim_cpu; /* FIXME: should be in sim-basics.h */ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "symcat.h" + #include "sim-basics.h" + #include "cgen-types.h" +diff --git a/sim/m32r/sim-main.h b/sim/m32r/sim-main.h +index cd39e98..74bb513 100644 +--- a/sim/m32r/sim-main.h ++++ b/sim/m32r/sim-main.h +@@ -3,6 +3,11 @@ + #ifndef SIM_MAIN_H + #define SIM_MAIN_H + ++#define USING_SIM_BASE_H /* FIXME: quick hack */ ++ ++struct _sim_cpu; /* FIXME: should be in sim-basics.h */ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "symcat.h" + #include "sim-basics.h" + #include "cgen-types.h" +diff --git a/sim/m68hc11/sim-main.h b/sim/m68hc11/sim-main.h +index d1fc582..4f41db9 100644 +--- a/sim/m68hc11/sim-main.h ++++ b/sim/m68hc11/sim-main.h +@@ -25,6 +25,9 @@ along with this program. If not, see . */ + #define SIM_HANDLES_LMA 1 + + #include "sim-basics.h" ++ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-signal.h" + #include "sim-base.h" + +diff --git a/sim/mcore/sim-main.h b/sim/mcore/sim-main.h +index be50ec1..25698c1 100644 +--- a/sim/mcore/sim-main.h ++++ b/sim/mcore/sim-main.h +@@ -24,6 +24,8 @@ along with this program. If not, see . */ + typedef long int word; + typedef unsigned long int uword; + ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + #include "bfd.h" + +diff --git a/sim/microblaze/sim-main.h b/sim/microblaze/sim-main.h +index 6781374..6b7b776 100644 +--- a/sim/microblaze/sim-main.h ++++ b/sim/microblaze/sim-main.h +@@ -20,6 +20,9 @@ + + #include "microblaze.h" + #include "sim-basics.h" ++ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + + /* The machine state. +diff --git a/sim/mips/sim-main.h b/sim/mips/sim-main.h +index 8d698ad..9729804 100644 +--- a/sim/mips/sim-main.h ++++ b/sim/mips/sim-main.h +@@ -29,6 +29,9 @@ along with this program. If not, see . */ + mips_core_signal ((SD), (CPU), (CIA), (MAP), (NR_BYTES), (ADDR), (TRANSFER), (ERROR)) + + #include "sim-basics.h" ++ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + #include "bfd.h" + +diff --git a/sim/mn10300/sim-main.h b/sim/mn10300/sim-main.h +index 847506e..2ddbfb9 100644 +--- a/sim/mn10300/sim-main.h ++++ b/sim/mn10300/sim-main.h +@@ -42,6 +42,8 @@ + #include "itable.h" + #include "idecode.h" + ++typedef struct _sim_cpu SIM_CPU; ++ + #define WITH_WATCHPOINTS 1 + + #define SIM_CORE_SIGNAL(SD,CPU,CIA,MAP,NR_BYTES,ADDR,TRANSFER,ERROR) \ +diff --git a/sim/moxie/sim-main.h b/sim/moxie/sim-main.h +index b1a64fc..c60437e 100644 +--- a/sim/moxie/sim-main.h ++++ b/sim/moxie/sim-main.h +@@ -21,6 +21,9 @@ along with this program. If not, see . */ + #define SIM_MAIN_H + + #include "sim-basics.h" ++ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + #include "bfd.h" + +diff --git a/sim/msp430/sim-main.h b/sim/msp430/sim-main.h +index 19c8cca..37bb42d 100644 +--- a/sim/msp430/sim-main.h ++++ b/sim/msp430/sim-main.h +@@ -23,6 +23,9 @@ + + #include "sim-basics.h" + #include "sim-signal.h" ++ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "msp430-sim.h" + #include "sim-base.h" + +diff --git a/sim/sh/sim-main.h b/sim/sh/sim-main.h +index e67df28..e2e17d7 100644 +--- a/sim/sh/sim-main.h ++++ b/sim/sh/sim-main.h +@@ -20,6 +20,9 @@ along with this program. If not, see . */ + #define SIM_MAIN_H + + #include "sim-basics.h" ++ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + + typedef struct +diff --git a/sim/sh64/sim-main.h b/sim/sh64/sim-main.h +index 7b24ab0..8fb595e 100644 +--- a/sim/sh64/sim-main.h ++++ b/sim/sh64/sim-main.h +@@ -3,6 +3,11 @@ + #ifndef SIM_MAIN_H + #define SIM_MAIN_H + ++#define USING_SIM_BASE_H /* FIXME: quick hack */ ++ ++struct _sim_cpu; /* FIXME: should be in sim-basics.h */ ++typedef struct _sim_cpu SIM_CPU; ++ + /* sim-basics.h includes config.h but cgen-types.h must be included before + sim-basics.h and cgen-types.h needs config.h. */ + #include "config.h" +diff --git a/sim/v850/sim-main.h b/sim/v850/sim-main.h +index 5127d28..16cbd97 100644 +--- a/sim/v850/sim-main.h ++++ b/sim/v850/sim-main.h +@@ -16,6 +16,9 @@ + #include "sim-basics.h" + #include "sim-signal.h" + #include "sim-fpu.h" ++ ++typedef struct _sim_cpu SIM_CPU; ++ + #include "sim-base.h" + + #include "simops.h" +-- +2.7.4 + diff --git a/buildroot/package/gdb/7.10.1/0007-Sync-proc_service-definition-with-GLIBC.patch b/buildroot/package/gdb/7.10.1/0007-Sync-proc_service-definition-with-GLIBC.patch new file mode 100644 index 0000000..2a53778 --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0007-Sync-proc_service-definition-with-GLIBC.patch @@ -0,0 +1,287 @@ +From ccc18e0b2dc77a6619df31fd4fadfb3a37401616 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Sun, 26 Mar 2017 23:06:45 +0200 +Subject: [PATCH] Sync proc_service definition with GLIBC + +GLIBC BZ#20311 [1] proc_service.h install patch also remove 'const' +attributes from ps_get_thread_area and comment #15 discuss why to remove +the const attribute (basically since it a callback with the struct +ps_prochandle owned by the client it should be able to modify it if +it the case). + +On default build this is not the issue and current g++ does not trigger +any issue with this mismatch declaration. However, on some bootstrap +build configuration where gdbserver is build with gcc instead this +triggers: + +error: conflicting types for 'ps_get_thread_area' + +This patch fixes it by syncing the declaration with GLIBC. + +[1] https://sourceware.org/bugzilla/show_bug.cgi?id=20311 + +gdb/ChangeLog: + +2016-08-25 Adhemerval Zanella + + * aarch64-linux-nat.c (ps_get_thread_area): Remove const from + struct ps_prochandle. + * amd64-linux-nat.c (ps_get_thread_area): Likewise. + * arm-linux-nat.c (ps_get_thread_area): Likewise. + * gdb_proc_service.h (ps_get_thread_area): Likewise. + * i386-linux-nat.c (ps_get_thread_area): Likewise. + * m68klinux-nat.c (ps_get_thread_area): Likewise. + * mips-linux-nat.c (ps_get_thread_area): Likewise. + * nat/aarch64-linux.c (aarch64_ps_get_thread_area): Likewise. + * nat/aarch64-linux.h (aarch64_ps_get_thread_area): Likewise. + * xtensa-linux-nat.c (ps_get_thread_area): Likewise. + +gdb/gdbserver/ChangeLog: + +2016-08-25 Adhemerval Zanella + + PR server/20491 + * gdb_proc_service.h (ps_get_thread_area): Remove const from struct + ps_prochandle. + * linux-aarch64-low.c (ps_get_thread_area): Likewise. + * linux-arm-low.c (ps_get_thread_area): Likewise. + * linux-crisv32-low.c (ps_get_thread_area): Likewise. + * linux-m68k-low.c (ps_get_thread_area): Likewise. + * linux-mips-low.c (ps_get_thread_area): Likewise. + * linux-nios2-low.c (ps_get_thread_area): Likewise. + * linux-tic6x-low.c (ps_get_thread_area): Likewise. + * linux-x86-low.c (ps_get_thread_area): Likewise. + * linux-xtensa-low.c (ps_get_thread_area): Likewise. + +(cherry picked from commit 140bf80050b34f0947b34dba93b830ea2bfc5040) +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + gdb/aarch64-linux-nat.c | 2 +- + gdb/amd64-linux-nat.c | 2 +- + gdb/arm-linux-nat.c | 2 +- + gdb/gdb_proc_service.h | 2 +- + gdb/gdbserver/gdb_proc_service.h | 2 +- + gdb/gdbserver/linux-aarch64-low.c | 2 +- + gdb/gdbserver/linux-arm-low.c | 2 +- + gdb/gdbserver/linux-crisv32-low.c | 2 +- + gdb/gdbserver/linux-m68k-low.c | 2 +- + gdb/gdbserver/linux-mips-low.c | 2 +- + gdb/gdbserver/linux-nios2-low.c | 2 +- + gdb/gdbserver/linux-tic6x-low.c | 2 +- + gdb/gdbserver/linux-x86-low.c | 2 +- + gdb/i386-linux-nat.c | 2 +- + gdb/m68klinux-nat.c | 2 +- + gdb/mips-linux-nat.c | 2 +- + 16 files changed, 16 insertions(+), 16 deletions(-) + +diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c +index 9959b81a2d..aa0f8d76bd 100644 +--- a/gdb/aarch64-linux-nat.c ++++ b/gdb/aarch64-linux-nat.c +@@ -734,7 +734,7 @@ aarch64_linux_new_fork (struct lwp_info *parent, pid_t child_pid) + storage (or its descriptor). */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + struct iovec iovec; +diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c +index 2e1b081b0f..7f076a9148 100644 +--- a/gdb/amd64-linux-nat.c ++++ b/gdb/amd64-linux-nat.c +@@ -244,7 +244,7 @@ amd64_linux_store_inferior_registers (struct target_ops *ops, + a request for a thread's local storage address. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (gdbarch_bfd_arch_info (target_gdbarch ())->bits_per_word == 32) +diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c +index c167bce18b..8462655139 100644 +--- a/gdb/arm-linux-nat.c ++++ b/gdb/arm-linux-nat.c +@@ -778,7 +778,7 @@ supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdb_proc_service.h b/gdb/gdb_proc_service.h +index e7369911a1..91fbc29a76 100644 +--- a/gdb/gdb_proc_service.h ++++ b/gdb/gdb_proc_service.h +@@ -124,7 +124,7 @@ extern pid_t ps_getpid (struct ps_prochandle *); + /* Fetch the special per-thread address associated with the given LWP. + This call is only used on a few platforms (most use a normal register). + The meaning of the `int' parameter is machine-dependent. */ +-extern ps_err_e ps_get_thread_area (const struct ps_prochandle *, ++extern ps_err_e ps_get_thread_area (struct ps_prochandle *, + lwpid_t, int, psaddr_t *); + + +diff --git a/gdb/gdbserver/gdb_proc_service.h b/gdb/gdbserver/gdb_proc_service.h +index cbafbf3206..7f9b1e4de0 100644 +--- a/gdb/gdbserver/gdb_proc_service.h ++++ b/gdb/gdbserver/gdb_proc_service.h +@@ -107,7 +107,7 @@ extern pid_t ps_getpid (struct ps_prochandle *); + /* Fetch the special per-thread address associated with the given LWP. + This call is only used on a few platforms (most use a normal register). + The meaning of the `int' parameter is machine-dependent. */ +-extern ps_err_e ps_get_thread_area (const struct ps_prochandle *, ++extern ps_err_e ps_get_thread_area (struct ps_prochandle *, + lwpid_t, int, psaddr_t *); + + +diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c +index 8a30b00029..a0ac35620d 100644 +--- a/gdb/gdbserver/linux-aarch64-low.c ++++ b/gdb/gdbserver/linux-aarch64-low.c +@@ -1089,7 +1089,7 @@ aarch64_stopped_by_watchpoint (void) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + struct iovec iovec; +diff --git a/gdb/gdbserver/linux-arm-low.c b/gdb/gdbserver/linux-arm-low.c +index dd77b48ecd..560e7d8496 100644 +--- a/gdb/gdbserver/linux-arm-low.c ++++ b/gdb/gdbserver/linux-arm-low.c +@@ -334,7 +334,7 @@ arm_reinsert_addr (void) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-crisv32-low.c b/gdb/gdbserver/linux-crisv32-low.c +index 65e6c09df2..fd5e627123 100644 +--- a/gdb/gdbserver/linux-crisv32-low.c ++++ b/gdb/gdbserver/linux-crisv32-low.c +@@ -336,7 +336,7 @@ cris_stopped_data_address (void) + } + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-m68k-low.c b/gdb/gdbserver/linux-m68k-low.c +index 4501904e39..7415930360 100644 +--- a/gdb/gdbserver/linux-m68k-low.c ++++ b/gdb/gdbserver/linux-m68k-low.c +@@ -160,7 +160,7 @@ m68k_breakpoint_at (CORE_ADDR pc) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-mips-low.c b/gdb/gdbserver/linux-mips-low.c +index 1695c4cf0d..acc2468bce 100644 +--- a/gdb/gdbserver/linux-mips-low.c ++++ b/gdb/gdbserver/linux-mips-low.c +@@ -640,7 +640,7 @@ mips_stopped_data_address (void) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-nios2-low.c b/gdb/gdbserver/linux-nios2-low.c +index 7bd3c9795d..719883edef 100644 +--- a/gdb/gdbserver/linux-nios2-low.c ++++ b/gdb/gdbserver/linux-nios2-low.c +@@ -150,7 +150,7 @@ nios2_breakpoint_at (CORE_ADDR where) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-tic6x-low.c b/gdb/gdbserver/linux-tic6x-low.c +index 0a0d220c34..26c4dee999 100644 +--- a/gdb/gdbserver/linux-tic6x-low.c ++++ b/gdb/gdbserver/linux-tic6x-low.c +@@ -266,7 +266,7 @@ tic6x_breakpoint_at (CORE_ADDR where) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c +index 484eadba05..15f25d71d5 100644 +--- a/gdb/gdbserver/linux-x86-low.c ++++ b/gdb/gdbserver/linux-x86-low.c +@@ -231,7 +231,7 @@ is_64bit_tdesc (void) + /* Called by libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + #ifdef __x86_64__ +diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c +index 349ce68f5c..80d6a516ea 100644 +--- a/gdb/i386-linux-nat.c ++++ b/gdb/i386-linux-nat.c +@@ -603,7 +603,7 @@ i386_linux_store_inferior_registers (struct target_ops *ops, + storage (or its descriptor). */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + unsigned int base_addr; +diff --git a/gdb/m68klinux-nat.c b/gdb/m68klinux-nat.c +index 8f89d7b87a..6e528b4e91 100644 +--- a/gdb/m68klinux-nat.c ++++ b/gdb/m68klinux-nat.c +@@ -508,7 +508,7 @@ m68k_linux_store_inferior_registers (struct target_ops *ops, + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) < 0) +diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c +index a36bb6356f..9f6d6975a0 100644 +--- a/gdb/mips-linux-nat.c ++++ b/gdb/mips-linux-nat.c +@@ -152,7 +152,7 @@ mips64_linux_register_addr (struct gdbarch *gdbarch, int regno, int store) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +-- +2.11.0 + diff --git a/buildroot/package/gdb/7.10.1/0008-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/buildroot/package/gdb/7.10.1/0008-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch new file mode 100644 index 0000000..c280831 --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0008-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch @@ -0,0 +1,53 @@ +From 3964e15443c5cdfca6723987c8ef1ef6cf984d41 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 6 Aug 2016 17:32:50 -0700 +Subject: [PATCH] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +Signed-off-by: Thomas Petazzoni +--- + gdb/gdbserver/linux-ppc-low.c | 6 ++++++ + gdb/nat/ppc-linux.h | 6 ++++++ + 2 files changed, 12 insertions(+) + +diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c +index 188fac0..f71d5ab 100644 +--- a/gdb/gdbserver/linux-ppc-low.c ++++ b/gdb/gdbserver/linux-ppc-low.c +@@ -21,7 +21,13 @@ + #include "linux-low.h" + + #include ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + + #include "nat/ppc-linux.h" + +diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h +index 0ff2223..c978daa 100644 +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,13 @@ + #ifndef PPC_LINUX_H + #define PPC_LINUX_H 1 + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + #include + + /* This sometimes isn't defined. */ +-- +2.7.4 + diff --git a/buildroot/package/gdb/7.10.1/0009-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch b/buildroot/package/gdb/7.10.1/0009-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch new file mode 100644 index 0000000..50f9512 --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0009-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch @@ -0,0 +1,41 @@ +From 1662a42e980c3f605000b23fda86ab24ceb69d32 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 3 Jun 2017 21:23:52 +0200 +Subject: [PATCH] sh/ptrace: Define pt_{dsp,}regs uapi_pt_{dsp,}regs on !GLIBC + systems + +Fixes a pt_{dsp,}regs redefinition when building with the musl C library +on SuperH. + +Inspired by +http://git.yoctoproject.org/clean/cgit.cgi/poky/plain/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch, +adapted for SuperH. + +Signed-off-by: Thomas Petazzoni +--- + gdb/gdbserver/linux-sh-low.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/gdb/gdbserver/linux-sh-low.c b/gdb/gdbserver/linux-sh-low.c +index 218d4d3..c4ada84 100644 +--- a/gdb/gdbserver/linux-sh-low.c ++++ b/gdb/gdbserver/linux-sh-low.c +@@ -27,7 +27,15 @@ extern const struct target_desc *tdesc_sh; + #include + #endif + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++# define pt_dspregs uapi_pt_dspregs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++# undef pt_dspregs ++#endif + + #define sh_num_regs 41 + +-- +2.7.4 + diff --git a/buildroot/package/gdb/7.10.1/0010-Fix-gdbserver-build-on-uClibc-noMMU.patch b/buildroot/package/gdb/7.10.1/0010-Fix-gdbserver-build-on-uClibc-noMMU.patch new file mode 100644 index 0000000..3f877b3 --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0010-Fix-gdbserver-build-on-uClibc-noMMU.patch @@ -0,0 +1,32 @@ +From 6de192acd4807d7fd57caf451567f09308bd8350 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 9 Jun 2017 10:19:32 +0200 +Subject: [PATCH] Fix gdbserver build on uClibc/noMMU + +The noMMU specific code requires including . + +Originally from +https://cgit.openadk.org/cgi/cgit/openadk.git/plain/package/gdbserver/patches/nommu.patch. + +Signed-off-by: Thomas Petazzoni +--- + gdb/nat/linux-ptrace.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/gdb/nat/linux-ptrace.h b/gdb/nat/linux-ptrace.h +index be6c395..c9f85aa 100644 +--- a/gdb/nat/linux-ptrace.h ++++ b/gdb/nat/linux-ptrace.h +@@ -23,7 +23,8 @@ struct buffer; + #include + + #ifdef __UCLIBC__ +-#if !(defined(__UCLIBC_HAS_MMU__) || defined(__ARCH_HAS_MMU__)) ++#include ++#if !(defined(__UCLIBC_HAS_MMU__) || defined(__ARCH_USE_MMU__)) + /* PTRACE_TEXT_ADDR and friends. */ + #include + #define HAS_NOMMU +-- +2.7.4 + diff --git a/buildroot/package/gdb/7.10.1/0011-use-asm-sgidefs.h.patch b/buildroot/package/gdb/7.10.1/0011-use-asm-sgidefs.h.patch new file mode 100644 index 0000000..fdc5679 --- /dev/null +++ b/buildroot/package/gdb/7.10.1/0011-use-asm-sgidefs.h.patch @@ -0,0 +1,41 @@ +From 12a0b8d81e1fda6ba98abdce8d6f09f9555ebcf5 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy +Date: Sat, 30 Apr 2016 15:29:06 -0700 +Subject: [PATCH] use + +Build fix for MIPS with musl libc + +The MIPS specific header is provided by glibc and uclibc +but not by musl. Regardless of the libc, the kernel headers provide + which provides the same definitions, so use that +instead. + +Upstream-Status: Pending + +[Vincent: +Taken from https://sourceware.org/bugzilla/show_bug.cgi?id=21070 +Patch has been adapted to apply on 7.10.1.] + +Signed-off-by: Andre McCurdy +Signed-off-by: Khem Raj +Signed-off-by: Vicente Olivert Riera +--- + gdb/mips-linux-nat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c +index 9f6d697..8f57bb2 100644 +--- a/gdb/mips-linux-nat.c ++++ b/gdb/mips-linux-nat.c +@@ -31,7 +31,7 @@ + #include "gdb_proc_service.h" + #include "gregset.h" + +-#include ++#include + #include + #include + +-- +2.13.1 + diff --git a/buildroot/package/gdb/7.11.1/0001-sim-bfin-split-out-common-mach-model-defines-into-ar.patch b/buildroot/package/gdb/7.11.1/0001-sim-bfin-split-out-common-mach-model-defines-into-ar.patch new file mode 100644 index 0000000..5841cfd --- /dev/null +++ b/buildroot/package/gdb/7.11.1/0001-sim-bfin-split-out-common-mach-model-defines-into-ar.patch @@ -0,0 +1,155 @@ +From 7a09ed68e203a813d88fb7fc6eeb1e92209561a5 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Mon, 8 Aug 2016 13:06:49 +0800 +Subject: [PATCH] sim: bfin: split out common mach/model defines into arch.h + [PR sim/20438] + +The current machs.h mixes common enums with Blackfin-specific defines. +This causes us troubles with header inclusion order such that we can't +drop the old SIM_CPU typedef (which is duplicated in common code). By +splitting the two up, we can unwind this dependency chain, and drop the +old typedef. It also fixes building with older gcc versions. + +[Romain: backport from gdb 7.12] +Signed-off-by: Romain Naour + +--- + sim/bfin/ChangeLog | 9 +++++++++ + sim/bfin/arch.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ + sim/bfin/machs.h | 20 -------------------- + sim/bfin/sim-main.h | 8 ++------ + 4 files changed, 55 insertions(+), 26 deletions(-) + create mode 100644 sim/bfin/arch.h + +diff --git a/sim/bfin/ChangeLog b/sim/bfin/ChangeLog +index 3dea7c9..a995436 100644 +--- a/sim/bfin/ChangeLog ++++ b/sim/bfin/ChangeLog +@@ -1,3 +1,12 @@ ++2016-08-13 Mike Frysinger ++ ++ PR sim/20438 ++ * machs.h (MODEL_TYPE, MACH_ATTR, BFIN_INSN_*): Move ... ++ * arch.h: ... to this new header file. ++ * sim-main.h (SIM_CPU): Delete. ++ Include arch.h before sim-base.h, and move sim-base.h before ++ bfin-sim.h. ++ + 2016-01-10 Mike Frysinger + + * config.in, configure: Regenerate. +diff --git a/sim/bfin/arch.h b/sim/bfin/arch.h +new file mode 100644 +index 0000000..b86d3e9 +--- /dev/null ++++ b/sim/bfin/arch.h +@@ -0,0 +1,44 @@ ++/* Simulator for Analog Devices Blackfin processors. ++ ++ Copyright (C) 2005-2016 Free Software Foundation, Inc. ++ Contributed by Analog Devices, Inc. ++ ++ This file is part of simulators. ++ ++ 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 3 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, see . */ ++ ++#ifndef BFIN_ARCH_H ++#define BFIN_ARCH_H ++ ++typedef enum model_type { ++#define P(n) MODEL_BF##n, ++#include "proc_list.def" ++#undef P ++ MODEL_MAX ++} MODEL_TYPE; ++ ++typedef enum mach_attr { ++ MACH_BASE, ++ MACH_BFIN, ++ MACH_MAX ++} MACH_ATTR; ++ ++enum { ++#define I(insn) BFIN_INSN_##insn, ++#include "insn_list.def" ++#undef I ++ BFIN_INSN_MAX ++}; ++ ++#endif +diff --git a/sim/bfin/machs.h b/sim/bfin/machs.h +index 0372982..36819ae 100644 +--- a/sim/bfin/machs.h ++++ b/sim/bfin/machs.h +@@ -21,19 +21,6 @@ + #ifndef _BFIN_MACHS_H_ + #define _BFIN_MACHS_H_ + +-typedef enum model_type { +-#define P(n) MODEL_BF##n, +-#include "proc_list.def" +-#undef P +- MODEL_MAX +-} MODEL_TYPE; +- +-typedef enum mach_attr { +- MACH_BASE, +- MACH_BFIN, +- MACH_MAX +-} MACH_ATTR; +- + #define CPU_MODEL_NUM(cpu) MODEL_NUM (CPU_MODEL (cpu)) + + /* XXX: Some of this probably belongs in CPU_MODEL. */ +@@ -46,13 +33,6 @@ void bfin_model_cpu_init (SIM_DESC, SIM_CPU *); + bu32 bfin_model_get_chipid (SIM_DESC); + bu32 bfin_model_get_dspid (SIM_DESC); + +-enum { +-#define I(insn) BFIN_INSN_##insn, +-#include "insn_list.def" +-#undef I +- BFIN_INSN_MAX +-}; +- + #define BFIN_COREMMR_CEC_BASE 0xFFE02100 + #define BFIN_COREMMR_CEC_SIZE (4 * 5) + #define BFIN_COREMMR_CTIMER_BASE 0xFFE03000 +diff --git a/sim/bfin/sim-main.h b/sim/bfin/sim-main.h +index 51fb87e..34fd153 100644 +--- a/sim/bfin/sim-main.h ++++ b/sim/bfin/sim-main.h +@@ -23,17 +23,13 @@ + + #include "sim-basics.h" + #include "sim-signal.h" +- +-/* TODO: Delete this. Need to convert bu32/etc... to common sim types +- and unwind the bfin-sim.h/machs.h include below first though. */ +-typedef struct _sim_cpu SIM_CPU; ++#include "arch.h" ++#include "sim-base.h" + + #include "bfin-sim.h" + + #include "machs.h" + +-#include "sim-base.h" +- + struct _sim_cpu { + /* ... simulator specific members ... */ + struct bfin_cpu_state state; +-- +2.9.3 + diff --git a/buildroot/package/gdb/7.11.1/0002-Sync-proc_service-definition-with-GLIBC.patch b/buildroot/package/gdb/7.11.1/0002-Sync-proc_service-definition-with-GLIBC.patch new file mode 100644 index 0000000..b3f723a --- /dev/null +++ b/buildroot/package/gdb/7.11.1/0002-Sync-proc_service-definition-with-GLIBC.patch @@ -0,0 +1,389 @@ +From 140bf80050b34f0947b34dba93b830ea2bfc5040 Mon Sep 17 00:00:00 2001 +From: Adhemerval Zanella +Date: Thu, 25 Aug 2016 08:42:03 +0100 +Subject: [PATCH] Sync proc_service definition with GLIBC + +GLIBC BZ#20311 [1] proc_service.h install patch also remove 'const' +attributes from ps_get_thread_area and comment #15 discuss why to remove +the const attribute (basically since it a callback with the struct +ps_prochandle owned by the client it should be able to modify it if +it the case). + +On default build this is not the issue and current g++ does not trigger +any issue with this mismatch declaration. However, on some bootstrap +build configuration where gdbserver is build with gcc instead this +triggers: + +error: conflicting types for 'ps_get_thread_area' + +This patch fixes it by syncing the declaration with GLIBC. + +[1] https://sourceware.org/bugzilla/show_bug.cgi?id=20311 + +gdb/ChangeLog: + +2016-08-25 Adhemerval Zanella + + * aarch64-linux-nat.c (ps_get_thread_area): Remove const from + struct ps_prochandle. + * amd64-linux-nat.c (ps_get_thread_area): Likewise. + * arm-linux-nat.c (ps_get_thread_area): Likewise. + * gdb_proc_service.h (ps_get_thread_area): Likewise. + * i386-linux-nat.c (ps_get_thread_area): Likewise. + * m68klinux-nat.c (ps_get_thread_area): Likewise. + * mips-linux-nat.c (ps_get_thread_area): Likewise. + * nat/aarch64-linux.c (aarch64_ps_get_thread_area): Likewise. + * nat/aarch64-linux.h (aarch64_ps_get_thread_area): Likewise. + * xtensa-linux-nat.c (ps_get_thread_area): Likewise. + +gdb/gdbserver/ChangeLog: + +2016-08-25 Adhemerval Zanella + + PR server/20491 + * gdb_proc_service.h (ps_get_thread_area): Remove const from struct + ps_prochandle. + * linux-aarch64-low.c (ps_get_thread_area): Likewise. + * linux-arm-low.c (ps_get_thread_area): Likewise. + * linux-crisv32-low.c (ps_get_thread_area): Likewise. + * linux-m68k-low.c (ps_get_thread_area): Likewise. + * linux-mips-low.c (ps_get_thread_area): Likewise. + * linux-nios2-low.c (ps_get_thread_area): Likewise. + * linux-tic6x-low.c (ps_get_thread_area): Likewise. + * linux-x86-low.c (ps_get_thread_area): Likewise. + * linux-xtensa-low.c (ps_get_thread_area): Likewise. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + gdb/ChangeLog | 14 ++++++++++++++ + gdb/aarch64-linux-nat.c | 2 +- + gdb/amd64-linux-nat.c | 2 +- + gdb/arm-linux-nat.c | 2 +- + gdb/gdb_proc_service.h | 2 +- + gdb/gdbserver/ChangeLog | 15 +++++++++++++++ + gdb/gdbserver/gdb_proc_service.h | 2 +- + gdb/gdbserver/linux-aarch64-low.c | 2 +- + gdb/gdbserver/linux-arm-low.c | 2 +- + gdb/gdbserver/linux-crisv32-low.c | 2 +- + gdb/gdbserver/linux-m68k-low.c | 2 +- + gdb/gdbserver/linux-mips-low.c | 2 +- + gdb/gdbserver/linux-nios2-low.c | 2 +- + gdb/gdbserver/linux-tic6x-low.c | 2 +- + gdb/gdbserver/linux-x86-low.c | 2 +- + gdb/gdbserver/linux-xtensa-low.c | 2 +- + gdb/i386-linux-nat.c | 2 +- + gdb/m68klinux-nat.c | 2 +- + gdb/mips-linux-nat.c | 2 +- + gdb/nat/aarch64-linux.c | 2 +- + gdb/nat/aarch64-linux.h | 2 +- + gdb/xtensa-linux-nat.c | 2 +- + 22 files changed, 49 insertions(+), 20 deletions(-) + +diff --git a/gdb/ChangeLog b/gdb/ChangeLog +index 9b6562502e..a03afdb82f 100644 +--- a/gdb/ChangeLog ++++ b/gdb/ChangeLog +@@ -1,3 +1,17 @@ ++2016-08-25 Adhemerval Zanella ++ ++ * aarch64-linux-nat.c (ps_get_thread_area): Remove const from ++ struct ps_prochandle. ++ * amd64-linux-nat.c (ps_get_thread_area): Likewise. ++ * arm-linux-nat.c (ps_get_thread_area): Likewise. ++ * gdb_proc_service.h (ps_get_thread_area): Likewise. ++ * i386-linux-nat.c (ps_get_thread_area): Likewise. ++ * m68klinux-nat.c (ps_get_thread_area): Likewise. ++ * mips-linux-nat.c (ps_get_thread_area): Likewise. ++ * nat/aarch64-linux.c (aarch64_ps_get_thread_area): Likewise. ++ * nat/aarch64-linux.h (aarch64_ps_get_thread_area): Likewise. ++ * xtensa-linux-nat.c (ps_get_thread_area): Likewise. ++ + 2016-06-01 Joel Brobecker + + * version.in: Set GDB version number to 7.11.1.DATE-git. +diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c +index fe1631dbbb..5166eebd33 100644 +--- a/gdb/aarch64-linux-nat.c ++++ b/gdb/aarch64-linux-nat.c +@@ -457,7 +457,7 @@ aarch64_linux_new_fork (struct lwp_info *parent, pid_t child_pid) + storage (or its descriptor). */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + int is_64bit_p +diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c +index 391a646992..9da36fd1ba 100644 +--- a/gdb/amd64-linux-nat.c ++++ b/gdb/amd64-linux-nat.c +@@ -245,7 +245,7 @@ amd64_linux_store_inferior_registers (struct target_ops *ops, + a request for a thread's local storage address. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (gdbarch_bfd_arch_info (target_gdbarch ())->bits_per_word == 32) +diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c +index d77ca93498..d11bdc6e22 100644 +--- a/gdb/arm-linux-nat.c ++++ b/gdb/arm-linux-nat.c +@@ -477,7 +477,7 @@ supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdb_proc_service.h b/gdb/gdb_proc_service.h +index 04d3c03884..a1a8eb5b2f 100644 +--- a/gdb/gdb_proc_service.h ++++ b/gdb/gdb_proc_service.h +@@ -124,7 +124,7 @@ extern pid_t ps_getpid (struct ps_prochandle *); + /* Fetch the special per-thread address associated with the given LWP. + This call is only used on a few platforms (most use a normal register). + The meaning of the `int' parameter is machine-dependent. */ +-extern ps_err_e ps_get_thread_area (const struct ps_prochandle *, ++extern ps_err_e ps_get_thread_area (struct ps_prochandle *, + lwpid_t, int, psaddr_t *); + + +diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog +index 08fef5b06e..ea278b1250 100644 +--- a/gdb/gdbserver/ChangeLog ++++ b/gdb/gdbserver/ChangeLog +@@ -1,3 +1,18 @@ ++2016-08-25 Adhemerval Zanella ++ ++ PR server/20491 ++ * gdb_proc_service.h (ps_get_thread_area): Remove const from struct ++ ps_prochandle. ++ * linux-aarch64-low.c (ps_get_thread_area): Likewise. ++ * linux-arm-low.c (ps_get_thread_area): Likewise. ++ * linux-crisv32-low.c (ps_get_thread_area): Likewise. ++ * linux-m68k-low.c (ps_get_thread_area): Likewise. ++ * linux-mips-low.c (ps_get_thread_area): Likewise. ++ * linux-nios2-low.c (ps_get_thread_area): Likewise. ++ * linux-tic6x-low.c (ps_get_thread_area): Likewise. ++ * linux-x86-low.c (ps_get_thread_area): Likewise. ++ * linux-xtensa-low.c (ps_get_thread_area): Likewise. ++ + 2016-04-15 Pedro Alves + + * linux-low.c (check_stopped_by_breakpoint): Rename to ... +diff --git a/gdb/gdbserver/gdb_proc_service.h b/gdb/gdbserver/gdb_proc_service.h +index 99bf226b01..cec9231ee5 100644 +--- a/gdb/gdbserver/gdb_proc_service.h ++++ b/gdb/gdbserver/gdb_proc_service.h +@@ -107,7 +107,7 @@ extern pid_t ps_getpid (struct ps_prochandle *); + /* Fetch the special per-thread address associated with the given LWP. + This call is only used on a few platforms (most use a normal register). + The meaning of the `int' parameter is machine-dependent. */ +-extern ps_err_e ps_get_thread_area (const struct ps_prochandle *, ++extern ps_err_e ps_get_thread_area (struct ps_prochandle *, + lwpid_t, int, psaddr_t *); + + +diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c +index 806a76260f..b86f210390 100644 +--- a/gdb/gdbserver/linux-aarch64-low.c ++++ b/gdb/gdbserver/linux-aarch64-low.c +@@ -421,7 +421,7 @@ aarch64_stopped_by_watchpoint (void) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + return aarch64_ps_get_thread_area (ph, lwpid, idx, base, +diff --git a/gdb/gdbserver/linux-arm-low.c b/gdb/gdbserver/linux-arm-low.c +index 0f627069e0..9f043878c7 100644 +--- a/gdb/gdbserver/linux-arm-low.c ++++ b/gdb/gdbserver/linux-arm-low.c +@@ -269,7 +269,7 @@ get_next_pcs_read_memory_unsigned_integer (CORE_ADDR memaddr, + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-crisv32-low.c b/gdb/gdbserver/linux-crisv32-low.c +index 16c1f72015..fea6d5bf9b 100644 +--- a/gdb/gdbserver/linux-crisv32-low.c ++++ b/gdb/gdbserver/linux-crisv32-low.c +@@ -309,7 +309,7 @@ cris_stopped_data_address (void) + } + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-m68k-low.c b/gdb/gdbserver/linux-m68k-low.c +index df3d7c6d9c..78a340fa8f 100644 +--- a/gdb/gdbserver/linux-m68k-low.c ++++ b/gdb/gdbserver/linux-m68k-low.c +@@ -152,7 +152,7 @@ m68k_breakpoint_at (CORE_ADDR pc) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-mips-low.c b/gdb/gdbserver/linux-mips-low.c +index 30a03d5f43..9356bb3d99 100644 +--- a/gdb/gdbserver/linux-mips-low.c ++++ b/gdb/gdbserver/linux-mips-low.c +@@ -637,7 +637,7 @@ mips_stopped_data_address (void) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-nios2-low.c b/gdb/gdbserver/linux-nios2-low.c +index ea0ded1f1e..98a85ed8e3 100644 +--- a/gdb/gdbserver/linux-nios2-low.c ++++ b/gdb/gdbserver/linux-nios2-low.c +@@ -145,7 +145,7 @@ nios2_breakpoint_at (CORE_ADDR where) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-tic6x-low.c b/gdb/gdbserver/linux-tic6x-low.c +index e40a3aff51..6b90560dc4 100644 +--- a/gdb/gdbserver/linux-tic6x-low.c ++++ b/gdb/gdbserver/linux-tic6x-low.c +@@ -274,7 +274,7 @@ tic6x_breakpoint_at (CORE_ADDR where) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c +index 0c4954a58d..8bac10a54b 100644 +--- a/gdb/gdbserver/linux-x86-low.c ++++ b/gdb/gdbserver/linux-x86-low.c +@@ -236,7 +236,7 @@ is_64bit_tdesc (void) + /* Called by libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + #ifdef __x86_64__ +diff --git a/gdb/gdbserver/linux-xtensa-low.c b/gdb/gdbserver/linux-xtensa-low.c +index 6e945eac17..431082c01f 100644 +--- a/gdb/gdbserver/linux-xtensa-low.c ++++ b/gdb/gdbserver/linux-xtensa-low.c +@@ -177,7 +177,7 @@ xtensa_breakpoint_at (CORE_ADDR where) + /* Called by libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + xtensa_elf_gregset_t regs; +diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c +index a41ee21081..70d954fdc0 100644 +--- a/gdb/i386-linux-nat.c ++++ b/gdb/i386-linux-nat.c +@@ -603,7 +603,7 @@ i386_linux_store_inferior_registers (struct target_ops *ops, + storage (or its descriptor). */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + unsigned int base_addr; +diff --git a/gdb/m68klinux-nat.c b/gdb/m68klinux-nat.c +index 24b6242ba3..5b8684b719 100644 +--- a/gdb/m68klinux-nat.c ++++ b/gdb/m68klinux-nat.c +@@ -508,7 +508,7 @@ m68k_linux_store_inferior_registers (struct target_ops *ops, + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) < 0) +diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c +index bfe9fcbe68..0f20f16814 100644 +--- a/gdb/mips-linux-nat.c ++++ b/gdb/mips-linux-nat.c +@@ -152,7 +152,7 @@ mips64_linux_register_addr (struct gdbarch *gdbarch, int regno, int store) + /* Fetch the thread-local storage pointer for libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) +diff --git a/gdb/nat/aarch64-linux.c b/gdb/nat/aarch64-linux.c +index 5ae5aa8602..1828977e28 100644 +--- a/gdb/nat/aarch64-linux.c ++++ b/gdb/nat/aarch64-linux.c +@@ -205,7 +205,7 @@ aarch64_siginfo_from_compat_siginfo (siginfo_t *to, compat_siginfo_t *from) + storage (or its descriptor). */ + + ps_err_e +-aarch64_ps_get_thread_area (const struct ps_prochandle *ph, ++aarch64_ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base, + int is_64bit_p) + { +diff --git a/gdb/nat/aarch64-linux.h b/gdb/nat/aarch64-linux.h +index 7221982b78..aac7c68c06 100644 +--- a/gdb/nat/aarch64-linux.h ++++ b/gdb/nat/aarch64-linux.h +@@ -122,7 +122,7 @@ void aarch64_linux_prepare_to_resume (struct lwp_info *lwp); + + void aarch64_linux_new_thread (struct lwp_info *lwp); + +-ps_err_e aarch64_ps_get_thread_area (const struct ps_prochandle *ph, ++ps_err_e aarch64_ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base, + int is_64bit_p); + +diff --git a/gdb/xtensa-linux-nat.c b/gdb/xtensa-linux-nat.c +index 54da83791a..836d3f80ee 100644 +--- a/gdb/xtensa-linux-nat.c ++++ b/gdb/xtensa-linux-nat.c +@@ -286,7 +286,7 @@ xtensa_linux_store_inferior_registers (struct target_ops *ops, + /* Called by libthread_db. */ + + ps_err_e +-ps_get_thread_area (const struct ps_prochandle *ph, ++ps_get_thread_area (struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) + { + xtensa_elf_gregset_t regs; +-- +2.11.0 + diff --git a/buildroot/package/gdb/7.11.1/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/buildroot/package/gdb/7.11.1/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch new file mode 100644 index 0000000..1e7f6b6 --- /dev/null +++ b/buildroot/package/gdb/7.11.1/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch @@ -0,0 +1,53 @@ +From 7438f3e5a41adf54cf82cd82d3d52244e77d7d05 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 6 Aug 2016 17:32:50 -0700 +Subject: [PATCH] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +Signed-off-by: Thomas Petazzoni +--- + gdb/gdbserver/linux-ppc-low.c | 6 ++++++ + gdb/nat/ppc-linux.h | 6 ++++++ + 2 files changed, 12 insertions(+) + +diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c +index 2145c50..777905d 100644 +--- a/gdb/gdbserver/linux-ppc-low.c ++++ b/gdb/gdbserver/linux-ppc-low.c +@@ -21,7 +21,13 @@ + #include "linux-low.h" + + #include ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + + #include "nat/ppc-linux.h" + +diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h +index 85fbcd8..cbec9c5 100644 +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,13 @@ + #ifndef PPC_LINUX_H + #define PPC_LINUX_H 1 + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + #include + + /* This sometimes isn't defined. */ +-- +2.7.4 + diff --git a/buildroot/package/gdb/7.11.1/0004-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch b/buildroot/package/gdb/7.11.1/0004-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch new file mode 100644 index 0000000..f8c9e59 --- /dev/null +++ b/buildroot/package/gdb/7.11.1/0004-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch @@ -0,0 +1,41 @@ +From b7cbde12595599768bf2831e311a8ab265322313 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 3 Jun 2017 21:23:52 +0200 +Subject: [PATCH] sh/ptrace: Define pt_{dsp,}regs uapi_pt_{dsp,}regs on !GLIBC + systems + +Fixes a pt_{dsp,}regs redefinition when building with the musl C library +on SuperH. + +Inspired by +http://git.yoctoproject.org/clean/cgit.cgi/poky/plain/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch, +adapted for SuperH. + +Signed-off-by: Thomas Petazzoni +--- + gdb/gdbserver/linux-sh-low.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/gdb/gdbserver/linux-sh-low.c b/gdb/gdbserver/linux-sh-low.c +index 38612e2..3195d0d 100644 +--- a/gdb/gdbserver/linux-sh-low.c ++++ b/gdb/gdbserver/linux-sh-low.c +@@ -27,7 +27,15 @@ extern const struct target_desc *tdesc_sh; + #include + #endif + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++# define pt_dspregs uapi_pt_dspregs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++# undef pt_dspregs ++#endif + + #define sh_num_regs 41 + +-- +2.7.4 + diff --git a/buildroot/package/gdb/7.11.1/0005-Fix-gdbserver-build-on-uClibc-noMMU.patch b/buildroot/package/gdb/7.11.1/0005-Fix-gdbserver-build-on-uClibc-noMMU.patch new file mode 100644 index 0000000..fc8b3ac --- /dev/null +++ b/buildroot/package/gdb/7.11.1/0005-Fix-gdbserver-build-on-uClibc-noMMU.patch @@ -0,0 +1,32 @@ +From d6bf0c57a6bf361ac53887653aa1878e60d56335 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 9 Jun 2017 10:19:32 +0200 +Subject: [PATCH] Fix gdbserver build on uClibc/noMMU + +The noMMU specific code requires including . + +Originally from +https://cgit.openadk.org/cgi/cgit/openadk.git/plain/package/gdbserver/patches/nommu.patch. + +Signed-off-by: Thomas Petazzoni +--- + gdb/nat/linux-ptrace.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/gdb/nat/linux-ptrace.h b/gdb/nat/linux-ptrace.h +index 0a23bcb..35b7cbb 100644 +--- a/gdb/nat/linux-ptrace.h ++++ b/gdb/nat/linux-ptrace.h +@@ -23,7 +23,8 @@ struct buffer; + #include "nat/gdb_ptrace.h" + + #ifdef __UCLIBC__ +-#if !(defined(__UCLIBC_HAS_MMU__) || defined(__ARCH_HAS_MMU__)) ++#include ++#if !(defined(__UCLIBC_HAS_MMU__) || defined(__ARCH_USE_MMU__)) + /* PTRACE_TEXT_ADDR and friends. */ + #include + #define HAS_NOMMU +-- +2.7.4 + diff --git a/buildroot/package/gdb/7.11.1/0006-use-asm-sgidefs.h.patch b/buildroot/package/gdb/7.11.1/0006-use-asm-sgidefs.h.patch new file mode 100644 index 0000000..d303369 --- /dev/null +++ b/buildroot/package/gdb/7.11.1/0006-use-asm-sgidefs.h.patch @@ -0,0 +1,40 @@ +From 12a0b8d81e1fda6ba98abdce8d6f09f9555ebcf5 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy +Date: Sat, 30 Apr 2016 15:29:06 -0700 +Subject: [PATCH] use + +Build fix for MIPS with musl libc + +The MIPS specific header is provided by glibc and uclibc +but not by musl. Regardless of the libc, the kernel headers provide + which provides the same definitions, so use that +instead. + +Upstream-Status: Pending + +[Vincent: +Taken from: https://sourceware.org/bugzilla/show_bug.cgi?id=21070] + +Signed-off-by: Andre McCurdy +Signed-off-by: Khem Raj +Signed-off-by: Vicente Olivert Riera +--- + gdb/mips-linux-nat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c +index f2df1b9907..d24664cb56 100644 +--- a/gdb/mips-linux-nat.c ++++ b/gdb/mips-linux-nat.c +@@ -31,7 +31,7 @@ + #include "gdb_proc_service.h" + #include "gregset.h" + +-#include ++#include + #include "nat/gdb_ptrace.h" + #include + #include "inf-ptrace.h" +-- +2.13.1 + diff --git a/buildroot/package/gdb/7.12.1/0001-Remove-const-in-xtensa-linux-nat.c-fetch_gregs.patch b/buildroot/package/gdb/7.12.1/0001-Remove-const-in-xtensa-linux-nat.c-fetch_gregs.patch new file mode 100644 index 0000000..bb3d99d --- /dev/null +++ b/buildroot/package/gdb/7.12.1/0001-Remove-const-in-xtensa-linux-nat.c-fetch_gregs.patch @@ -0,0 +1,39 @@ +From d274ecf4ddf76768af57e27f654b9ce6784b391c Mon Sep 17 00:00:00 2001 +From: Simon Marchi +Date: Mon, 6 Mar 2017 16:06:42 -0500 +Subject: [PATCH] Remove const in xtensa-linux-nat.c:fetch_gregs + +Fixes: + +/home/emaisin/src/binutils-gdb/gdb/xtensa-linux-nat.c: In function 'void fetch_gregs(regcache*, ptid_t, int)': +/home/emaisin/src/binutils-gdb/gdb/xtensa-linux-nat.c:178:23: error: uninitialized const 'regs' [-fpermissive] + const gdb_gregset_t regs; + ^ + +gdb/ChangeLog: + + * xtensa-linux-nat.c (fetch_gregs): Remove const. + +Signed-off-by: Max Filippov +--- +Backported from: d274ecf4ddf76768af57e27f654b9ce6784b391c + + gdb/xtensa-linux-nat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/xtensa-linux-nat.c b/gdb/xtensa-linux-nat.c +index afe15f6..c29f0c7 100644 +--- a/gdb/xtensa-linux-nat.c ++++ b/gdb/xtensa-linux-nat.c +@@ -175,7 +175,7 @@ static void + fetch_gregs (struct regcache *regcache, int regnum) + { + int tid = ptid_get_lwp (inferior_ptid); +- const gdb_gregset_t regs; ++ gdb_gregset_t regs; + int areg; + + if (ptrace (PTRACE_GETREGS, tid, 0, (long) ®s) < 0) +-- +2.1.4 + diff --git a/buildroot/package/gdb/7.12.1/0002-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/buildroot/package/gdb/7.12.1/0002-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch new file mode 100644 index 0000000..f6ec1d7 --- /dev/null +++ b/buildroot/package/gdb/7.12.1/0002-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch @@ -0,0 +1,53 @@ +From c45f07aec83ccb732ece970cb387f2db8b6896e4 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 6 Aug 2016 17:32:50 -0700 +Subject: [PATCH] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +Signed-off-by: Thomas Petazzoni +--- + gdb/gdbserver/linux-ppc-low.c | 6 ++++++ + gdb/nat/ppc-linux.h | 6 ++++++ + 2 files changed, 12 insertions(+) + +diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c +index 33a9feb..1a9141f 100644 +--- a/gdb/gdbserver/linux-ppc-low.c ++++ b/gdb/gdbserver/linux-ppc-low.c +@@ -21,7 +21,13 @@ + #include "linux-low.h" + + #include ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + + #include "nat/ppc-linux.h" + #include "linux-ppc-tdesc.h" +diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h +index 5837ea1..7233929 100644 +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,13 @@ + #ifndef PPC_LINUX_H + #define PPC_LINUX_H 1 + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + #include + + /* This sometimes isn't defined. */ +-- +2.7.4 + diff --git a/buildroot/package/gdb/7.12.1/0003-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch b/buildroot/package/gdb/7.12.1/0003-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch new file mode 100644 index 0000000..4f142ec --- /dev/null +++ b/buildroot/package/gdb/7.12.1/0003-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch @@ -0,0 +1,41 @@ +From 00a0ba059f01784e8da5cec3439ea2d6c4a2ef40 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 3 Jun 2017 21:23:52 +0200 +Subject: [PATCH] sh/ptrace: Define pt_{dsp,}regs uapi_pt_{dsp,}regs on !GLIBC + systems + +Fixes a pt_{dsp,}regs redefinition when building with the musl C library +on SuperH. + +Inspired by +http://git.yoctoproject.org/clean/cgit.cgi/poky/plain/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch, +adapted for SuperH. + +Signed-off-by: Thomas Petazzoni +--- + gdb/gdbserver/linux-sh-low.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/gdb/gdbserver/linux-sh-low.c b/gdb/gdbserver/linux-sh-low.c +index ac084c9..08e104a 100644 +--- a/gdb/gdbserver/linux-sh-low.c ++++ b/gdb/gdbserver/linux-sh-low.c +@@ -27,7 +27,15 @@ extern const struct target_desc *tdesc_sh; + #include + #endif + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++# define pt_dspregs uapi_pt_dspregs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++# undef pt_dspregs ++#endif + + #define sh_num_regs 41 + +-- +2.7.4 + diff --git a/buildroot/package/gdb/7.12.1/0004-Fix-gdbserver-build-on-uClibc-noMMU.patch b/buildroot/package/gdb/7.12.1/0004-Fix-gdbserver-build-on-uClibc-noMMU.patch new file mode 100644 index 0000000..cbdfc4d --- /dev/null +++ b/buildroot/package/gdb/7.12.1/0004-Fix-gdbserver-build-on-uClibc-noMMU.patch @@ -0,0 +1,32 @@ +From 430ab62f356d9e45e2231b0483ee33eaf3af5df3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 9 Jun 2017 10:19:32 +0200 +Subject: [PATCH] Fix gdbserver build on uClibc/noMMU + +The noMMU specific code requires including . + +Originally from +https://cgit.openadk.org/cgi/cgit/openadk.git/plain/package/gdbserver/patches/nommu.patch. + +Signed-off-by: Thomas Petazzoni +--- + gdb/nat/linux-ptrace.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/gdb/nat/linux-ptrace.h b/gdb/nat/linux-ptrace.h +index 5954945..80bb674 100644 +--- a/gdb/nat/linux-ptrace.h ++++ b/gdb/nat/linux-ptrace.h +@@ -23,7 +23,8 @@ struct buffer; + #include "nat/gdb_ptrace.h" + + #ifdef __UCLIBC__ +-#if !(defined(__UCLIBC_HAS_MMU__) || defined(__ARCH_HAS_MMU__)) ++#include ++#if !(defined(__UCLIBC_HAS_MMU__) || defined(__ARCH_USE_MMU__)) + /* PTRACE_TEXT_ADDR and friends. */ + #include + #define HAS_NOMMU +-- +2.7.4 + diff --git a/buildroot/package/gdb/7.12.1/0005-use-asm-sgidefs.h.patch b/buildroot/package/gdb/7.12.1/0005-use-asm-sgidefs.h.patch new file mode 100644 index 0000000..d303369 --- /dev/null +++ b/buildroot/package/gdb/7.12.1/0005-use-asm-sgidefs.h.patch @@ -0,0 +1,40 @@ +From 12a0b8d81e1fda6ba98abdce8d6f09f9555ebcf5 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy +Date: Sat, 30 Apr 2016 15:29:06 -0700 +Subject: [PATCH] use + +Build fix for MIPS with musl libc + +The MIPS specific header is provided by glibc and uclibc +but not by musl. Regardless of the libc, the kernel headers provide + which provides the same definitions, so use that +instead. + +Upstream-Status: Pending + +[Vincent: +Taken from: https://sourceware.org/bugzilla/show_bug.cgi?id=21070] + +Signed-off-by: Andre McCurdy +Signed-off-by: Khem Raj +Signed-off-by: Vicente Olivert Riera +--- + gdb/mips-linux-nat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c +index f2df1b9907..d24664cb56 100644 +--- a/gdb/mips-linux-nat.c ++++ b/gdb/mips-linux-nat.c +@@ -31,7 +31,7 @@ + #include "gdb_proc_service.h" + #include "gregset.h" + +-#include ++#include + #include "nat/gdb_ptrace.h" + #include + #include "inf-ptrace.h" +-- +2.13.1 + diff --git a/buildroot/package/gdb/7.12.1/0006-nat-linux-ptrace.c-add-missing-gdb_byte-cast.patch b/buildroot/package/gdb/7.12.1/0006-nat-linux-ptrace.c-add-missing-gdb_byte-cast.patch new file mode 100644 index 0000000..4eb72e4 --- /dev/null +++ b/buildroot/package/gdb/7.12.1/0006-nat-linux-ptrace.c-add-missing-gdb_byte-cast.patch @@ -0,0 +1,41 @@ +From 09a2c3e0164545324a1ddee70f5c9fdee71e2079 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 18 Jun 2017 23:09:43 +0200 +Subject: [PATCH] nat/linux-ptrace.c: add missing gdb_byte* cast + +On noMMU platforms, the following code gets compiled: + + child_stack = xmalloc (STACK_SIZE * 4); + +Where child_stack is a gdb_byte*, and xmalloc() returns a void*. While +the lack of cast is valid in C, it is not in C++, causing the +following build failure: + +../nat/linux-ptrace.c: In function 'int linux_fork_to_function(gdb_byte*, int (*)(void*))': +../nat/linux-ptrace.c:273:29: error: invalid conversion from 'void*' to 'gdb_byte* {aka unsigned char*}' [-fpermissive] + child_stack = xmalloc (STACK_SIZE * 4); + +Therefore, this commit adds the appropriate cast. + +Signed-off-by: Thomas Petazzoni +[Upstream commit: ffce45d2243e5f52f411e314fc4e1a69f431a81f] +--- + gdb/nat/linux-ptrace.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c +index 3447e07..33833e2 100644 +--- a/gdb/nat/linux-ptrace.c ++++ b/gdb/nat/linux-ptrace.c +@@ -270,7 +270,7 @@ linux_fork_to_function (gdb_byte *child_stack, int (*function) (void *)) + #define STACK_SIZE 4096 + + if (child_stack == NULL) +- child_stack = xmalloc (STACK_SIZE * 4); ++ child_stack = (gdb_byte*) xmalloc (STACK_SIZE * 4); + + /* Use CLONE_VM instead of fork, to support uClinux (no MMU). */ + #ifdef __ia64__ +-- +2.9.4 + diff --git a/buildroot/package/gdb/7.12.1/0007-gdbserver-fix-build-for-m68k.patch b/buildroot/package/gdb/7.12.1/0007-gdbserver-fix-build-for-m68k.patch new file mode 100644 index 0000000..451bed3 --- /dev/null +++ b/buildroot/package/gdb/7.12.1/0007-gdbserver-fix-build-for-m68k.patch @@ -0,0 +1,62 @@ +From 80c60ea9fb3634272a98ec526eabff25f5255bae Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 22 Jun 2018 22:40:26 +0200 +Subject: [PATCH] gdbserver: fix build for m68k +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +As for strace [1], when is included after , +the build fails on m68k with the following diagnostics: + +In file included from ./../nat/linux-ptrace.h:28:0, + from linux-low.h:27, + from linux-m68k-low.c:20: +[...]/usr/include/sys/reg.h:26:3: error: expected identifier before numeric constant + PT_D1 = 0, + ^ +[...]usr/include/sys/reg.h:26:3: error: expected « } » before numeric constant +[...]usr/include/sys/reg.h:26:3: error: expected unqualified-id before numeric constant +In file included from linux-m68k-low.c:27:0: +[...]usr/include/sys/reg.h:99:1: error: expected declaration before « } » token + }; + ^ + +Fix this by moving on top of "linux-low.h". + +[1] https://github.com/strace/strace/commit/6ebf6c4f9e5ebca123a5b5f24afe67cf0473cf92 + +Signed-off-by: Romain Naour +--- + gdb/gdbserver/linux-m68k-low.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/gdb/gdbserver/linux-m68k-low.c b/gdb/gdbserver/linux-m68k-low.c +index 5594f10f927..19b4ef7b259 100644 +--- a/gdb/gdbserver/linux-m68k-low.c ++++ b/gdb/gdbserver/linux-m68k-low.c +@@ -17,16 +17,17 @@ + along with this program. If not, see . */ + + #include "server.h" ++ ++#ifdef HAVE_SYS_REG_H ++#include ++#endif ++ + #include "linux-low.h" + + /* Defined in auto-generated file reg-m68k.c. */ + void init_registers_m68k (void); + extern const struct target_desc *tdesc_m68k; + +-#ifdef HAVE_SYS_REG_H +-#include +-#endif +- + #define m68k_num_regs 29 + #define m68k_num_gregs 18 + +-- +2.14.4 + diff --git a/buildroot/package/gdb/8.0.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/buildroot/package/gdb/8.0.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch new file mode 100644 index 0000000..9e011c7 --- /dev/null +++ b/buildroot/package/gdb/8.0.1/0001-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch @@ -0,0 +1,55 @@ +From 2acd9d3eb703b9a64ac92b3880ed546bec92af95 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 6 Aug 2016 17:32:50 -0700 +Subject: [PATCH] ppc/ptrace: Define pt_regs uapi_pt_regs on !GLIBC systems + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +Signed-off-by: Thomas Petazzoni +[Rebase on gdb 8.0] +Signed-off-by: Romain Naour +--- + gdb/gdbserver/linux-ppc-low.c | 6 ++++++ + gdb/nat/ppc-linux.h | 6 ++++++ + 2 files changed, 12 insertions(+) + +diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c +index 33a9feb..1a9141f 100644 +--- a/gdb/gdbserver/linux-ppc-low.c ++++ b/gdb/gdbserver/linux-ppc-low.c +@@ -21,7 +21,13 @@ + #include "linux-low.h" + + #include ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + + #include "nat/ppc-linux.h" + #include "linux-ppc-tdesc.h" +diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h +index 5837ea1..7233929 100644 +--- a/gdb/nat/ppc-linux.h ++++ b/gdb/nat/ppc-linux.h +@@ -18,7 +18,13 @@ + #ifndef PPC_LINUX_H + #define PPC_LINUX_H 1 + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++#endif + #include + + /* This sometimes isn't defined. */ +-- +2.9.4 + diff --git a/buildroot/package/gdb/8.0.1/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch b/buildroot/package/gdb/8.0.1/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch new file mode 100644 index 0000000..d31e5dd --- /dev/null +++ b/buildroot/package/gdb/8.0.1/0002-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch @@ -0,0 +1,43 @@ +From dfe4a40bc9d2fc1fd1b1a11ed733a0c0a1f59f3c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 3 Jun 2017 21:23:52 +0200 +Subject: [PATCH] sh/ptrace: Define pt_{dsp,}regs uapi_pt_{dsp,}regs on + !GLIBC systems + +Fixes a pt_{dsp,}regs redefinition when building with the musl C library +on SuperH. + +Inspired by +http://git.yoctoproject.org/clean/cgit.cgi/poky/plain/meta/recipes-devtools/gdb/gdb/0004-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch, +adapted for SuperH. + +Signed-off-by: Thomas Petazzoni +[Rebase on gdb 8.0] +Signed-off-by: Romain Naour +--- + gdb/gdbserver/linux-sh-low.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/gdb/gdbserver/linux-sh-low.c b/gdb/gdbserver/linux-sh-low.c +index ac084c9..08e104a 100644 +--- a/gdb/gdbserver/linux-sh-low.c ++++ b/gdb/gdbserver/linux-sh-low.c +@@ -27,7 +27,15 @@ extern const struct target_desc *tdesc_sh; + #include + #endif + ++#if !defined(__GLIBC__) ++# define pt_regs uapi_pt_regs ++# define pt_dspregs uapi_pt_dspregs ++#endif + #include ++#if !defined(__GLIBC__) ++# undef pt_regs ++# undef pt_dspregs ++#endif + + #define sh_num_regs 41 + +-- +2.9.4 + diff --git a/buildroot/package/gdb/8.0.1/0003-use-asm-sgidefs.h.patch b/buildroot/package/gdb/8.0.1/0003-use-asm-sgidefs.h.patch new file mode 100644 index 0000000..d303369 --- /dev/null +++ b/buildroot/package/gdb/8.0.1/0003-use-asm-sgidefs.h.patch @@ -0,0 +1,40 @@ +From 12a0b8d81e1fda6ba98abdce8d6f09f9555ebcf5 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy +Date: Sat, 30 Apr 2016 15:29:06 -0700 +Subject: [PATCH] use + +Build fix for MIPS with musl libc + +The MIPS specific header is provided by glibc and uclibc +but not by musl. Regardless of the libc, the kernel headers provide + which provides the same definitions, so use that +instead. + +Upstream-Status: Pending + +[Vincent: +Taken from: https://sourceware.org/bugzilla/show_bug.cgi?id=21070] + +Signed-off-by: Andre McCurdy +Signed-off-by: Khem Raj +Signed-off-by: Vicente Olivert Riera +--- + gdb/mips-linux-nat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c +index f2df1b9907..d24664cb56 100644 +--- a/gdb/mips-linux-nat.c ++++ b/gdb/mips-linux-nat.c +@@ -31,7 +31,7 @@ + #include "gdb_proc_service.h" + #include "gregset.h" + +-#include ++#include + #include "nat/gdb_ptrace.h" + #include + #include "inf-ptrace.h" +-- +2.13.1 + diff --git a/buildroot/package/gdb/8.0.1/0004-nat-linux-ptrace.c-add-missing-gdb_byte-cast.patch b/buildroot/package/gdb/8.0.1/0004-nat-linux-ptrace.c-add-missing-gdb_byte-cast.patch new file mode 100644 index 0000000..4eb72e4 --- /dev/null +++ b/buildroot/package/gdb/8.0.1/0004-nat-linux-ptrace.c-add-missing-gdb_byte-cast.patch @@ -0,0 +1,41 @@ +From 09a2c3e0164545324a1ddee70f5c9fdee71e2079 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 18 Jun 2017 23:09:43 +0200 +Subject: [PATCH] nat/linux-ptrace.c: add missing gdb_byte* cast + +On noMMU platforms, the following code gets compiled: + + child_stack = xmalloc (STACK_SIZE * 4); + +Where child_stack is a gdb_byte*, and xmalloc() returns a void*. While +the lack of cast is valid in C, it is not in C++, causing the +following build failure: + +../nat/linux-ptrace.c: In function 'int linux_fork_to_function(gdb_byte*, int (*)(void*))': +../nat/linux-ptrace.c:273:29: error: invalid conversion from 'void*' to 'gdb_byte* {aka unsigned char*}' [-fpermissive] + child_stack = xmalloc (STACK_SIZE * 4); + +Therefore, this commit adds the appropriate cast. + +Signed-off-by: Thomas Petazzoni +[Upstream commit: ffce45d2243e5f52f411e314fc4e1a69f431a81f] +--- + gdb/nat/linux-ptrace.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c +index 3447e07..33833e2 100644 +--- a/gdb/nat/linux-ptrace.c ++++ b/gdb/nat/linux-ptrace.c +@@ -270,7 +270,7 @@ linux_fork_to_function (gdb_byte *child_stack, int (*function) (void *)) + #define STACK_SIZE 4096 + + if (child_stack == NULL) +- child_stack = xmalloc (STACK_SIZE * 4); ++ child_stack = (gdb_byte*) xmalloc (STACK_SIZE * 4); + + /* Use CLONE_VM instead of fork, to support uClinux (no MMU). */ + #ifdef __ia64__ +-- +2.9.4 + diff --git a/buildroot/package/gdb/8.0.1/0005-gdbserver-fix-build-for-m68k.patch b/buildroot/package/gdb/8.0.1/0005-gdbserver-fix-build-for-m68k.patch new file mode 100644 index 0000000..451bed3 --- /dev/null +++ b/buildroot/package/gdb/8.0.1/0005-gdbserver-fix-build-for-m68k.patch @@ -0,0 +1,62 @@ +From 80c60ea9fb3634272a98ec526eabff25f5255bae Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 22 Jun 2018 22:40:26 +0200 +Subject: [PATCH] gdbserver: fix build for m68k +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +As for strace [1], when is included after , +the build fails on m68k with the following diagnostics: + +In file included from ./../nat/linux-ptrace.h:28:0, + from linux-low.h:27, + from linux-m68k-low.c:20: +[...]/usr/include/sys/reg.h:26:3: error: expected identifier before numeric constant + PT_D1 = 0, + ^ +[...]usr/include/sys/reg.h:26:3: error: expected « } » before numeric constant +[...]usr/include/sys/reg.h:26:3: error: expected unqualified-id before numeric constant +In file included from linux-m68k-low.c:27:0: +[...]usr/include/sys/reg.h:99:1: error: expected declaration before « } » token + }; + ^ + +Fix this by moving on top of "linux-low.h". + +[1] https://github.com/strace/strace/commit/6ebf6c4f9e5ebca123a5b5f24afe67cf0473cf92 + +Signed-off-by: Romain Naour +--- + gdb/gdbserver/linux-m68k-low.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/gdb/gdbserver/linux-m68k-low.c b/gdb/gdbserver/linux-m68k-low.c +index 5594f10f927..19b4ef7b259 100644 +--- a/gdb/gdbserver/linux-m68k-low.c ++++ b/gdb/gdbserver/linux-m68k-low.c +@@ -17,16 +17,17 @@ + along with this program. If not, see . */ + + #include "server.h" ++ ++#ifdef HAVE_SYS_REG_H ++#include ++#endif ++ + #include "linux-low.h" + + /* Defined in auto-generated file reg-m68k.c. */ + void init_registers_m68k (void); + extern const struct target_desc *tdesc_m68k; + +-#ifdef HAVE_SYS_REG_H +-#include +-#endif +- + #define m68k_num_regs 29 + #define m68k_num_gregs 18 + +-- +2.14.4 + diff --git a/buildroot/package/gdb/Config.in b/buildroot/package/gdb/Config.in new file mode 100644 index 0000000..af020f4 --- /dev/null +++ b/buildroot/package/gdb/Config.in @@ -0,0 +1,81 @@ +config BR2_PACKAGE_GDB_ARCH_SUPPORTS + bool + default y + depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT) + depends on !BR2_bfin + depends on !BR2_microblaze + depends on !BR2_nios2 + depends on !BR2_or1k + +comment "gdb/gdbserver needs a toolchain w/ threads, threads debug" + depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HAS_THREADS_DEBUG + +config BR2_PACKAGE_GDB + bool "gdb" + depends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_HAS_THREADS_DEBUG + depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS + # When the external toolchain gdbserver is copied to the + # target, we don't allow building a separate gdbserver. The + # one from the external toolchain should be used. + select BR2_PACKAGE_GDB_SERVER if \ + (!BR2_PACKAGE_GDB_DEBUGGER && !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY) + help + GDB, the GNU Project debugger, allows you to see what is + going on `inside' another program while it executes -- or + what another program was doing at the moment it crashed. + + This option allows to build gdbserver and/or the gdb + debugger for the target. + + For embedded development, the most common solution is to + build only 'gdbserver' for the target, and use a cross-gdb + on the host. See BR2_PACKAGE_HOST_GDB in the Toolchain menu + to enable one. Notice that external toolchains often provide + their own pre-built cross-gdb and gdbserver binaries. + + http://www.gnu.org/software/gdb/ + +if BR2_PACKAGE_GDB + +config BR2_PACKAGE_GDB_SERVER + bool "gdbserver" + depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY + help + Build the gdbserver stub to run on the target. + A full gdb is needed to debug the progam. + +config BR2_PACKAGE_GDB_DEBUGGER + bool "full debugger" + depends on BR2_USE_WCHAR + depends on !BR2_sh + select BR2_PACKAGE_NCURSES + +comment "full gdb on target needs a toolchain w/ wchar" + depends on !BR2_sh + depends on !BR2_USE_WCHAR + +if BR2_PACKAGE_GDB_DEBUGGER + +config BR2_PACKAGE_GDB_TUI + bool "TUI support" + help + This option enables terminal user interface (TUI) for gdb + + "The GDB Text User Interface (TUI) is a terminal interface + which uses the curses library to show the source file, the + assembly output, the program registers and GDB commands in + separate text windows." + + https://sourceware.org/gdb/current/onlinedocs/gdb/TUI.html + +config BR2_PACKAGE_GDB_PYTHON + bool "Python support" + # Only Python 2.x is supported by gdb for now + depends on BR2_PACKAGE_PYTHON + help + This option enables Python support in the target gdb. + +endif + +endif diff --git a/buildroot/package/gdb/Config.in.host b/buildroot/package/gdb/Config.in.host new file mode 100644 index 0000000..99e1cae --- /dev/null +++ b/buildroot/package/gdb/Config.in.host @@ -0,0 +1,82 @@ +config BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS + bool + default y + # The ARC version needs C++11, thus gcc >= 4.8, like gdb-8.0.x + depends on BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_arc + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_arc + depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT) + depends on !BR2_microblaze + depends on !BR2_nios2 + depends on !BR2_or1k + +comment "Host GDB Options" + depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY + depends on BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS + +config BR2_PACKAGE_HOST_GDB + bool "Build cross gdb for the host" + # When the external toolchain gdbserver is used, we shouldn't + # allow to build a cross-gdb, as the one of the external + # toolchain should be used. + depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY + depends on BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS + help + Build a cross gdb that runs on the host machine and debugs + programs running on the target. It requires 'gdbserver' + installed on the target, see BR2_PACKAGE_GDB_SERVER to + enable it. + +if BR2_PACKAGE_HOST_GDB + +config BR2_PACKAGE_HOST_GDB_TUI + bool "TUI support" + help + This option enables terminal user interface (TUI) for gdb + +config BR2_PACKAGE_HOST_GDB_PYTHON + bool "Python support" + help + This option enables the Python support in the cross gdb. + +config BR2_PACKAGE_HOST_GDB_SIM + bool "Simulator support" + depends on !BR2_arc + help + This option enables the simulator support in the cross gdb. + +choice + prompt "GDB debugger Version" + default BR2_GDB_VERSION_7_11 + depends on !BR2_arc + help + Select the version of gdb you wish to use. + +config BR2_GDB_VERSION_7_10 + bool "gdb 7.10.x" + +config BR2_GDB_VERSION_7_11 + bool "gdb 7.11.x" + +config BR2_GDB_VERSION_7_12 + bool "gdb 7.12.x" + +config BR2_GDB_VERSION_8_0 + bool "gdb 8.0.x" + # Needs a C++11 compiler + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_HOST_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +endchoice + +endif + +# If cross-gdb is not enabled, the latest working version is chosen. +config BR2_GDB_VERSION + string + default "arc-2017.09-release-gdb" if BR2_arc + default "7.10.1" if BR2_GDB_VERSION_7_10 + default "7.11.1" if BR2_GDB_VERSION_7_11 || !BR2_PACKAGE_HOST_GDB + default "7.12.1" if BR2_GDB_VERSION_7_12 + default "8.0.1" if BR2_GDB_VERSION_8_0 + depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB diff --git a/buildroot/package/gdb/gdb-python-config b/buildroot/package/gdb/gdb-python-config new file mode 100755 index 0000000..0f00228 --- /dev/null +++ b/buildroot/package/gdb/gdb-python-config @@ -0,0 +1,36 @@ +#!/bin/sh + +# This shell script is used to fake Python. Gdb wants to be passed a +# Python interpreter, to run its own python-config.py program, which +# uses sysconfig. However, when cross-compiling, this doesn't work +# well since we would have to use the host Python, whose sysconfig +# module would return host values. +# +# As recommended at +# https://sourceware.org/gdb/wiki/CrossCompilingWithPythonSupport, +# this wrapper shell script can be used as a replacement. It ignores +# the python-config.py script passed as first arguments, and +# "emulates" its behavior. + +if [ $# -ne 2 ] ; then + echo "Bad # args." >&2 + exit 1 +fi + +# The first argument is the path to python-config.py, ignore it. + +case "$2" in + --includes) + echo "-I${STAGING_DIR}/usr/include/python2.7" + ;; + --ldflags) + echo "-lpthread -ldl -lutil -lm -lpython2.7" + ;; + --exec-prefix) + echo "/usr" + ;; + *) + echo "Bad arg $2." >&2 + exit 1 + ;; +esac diff --git a/buildroot/package/gdb/gdb.hash b/buildroot/package/gdb/gdb.hash new file mode 100644 index 0000000..62edd93 --- /dev/null +++ b/buildroot/package/gdb/gdb.hash @@ -0,0 +1,8 @@ +# From ftp://gcc.gnu.org/pub/gdb/releases/sha512.sum +sha512 17a5138277a31685a5c2a841cb47ed9bc4626ea617b8ca77750513b300299f4fbbffe504958b5372de610dcb952c679cf8fa9c1bdadd380294fbf59b6e366010 gdb-7.10.1.tar.xz +sha512 f80ec6c8a0f0b54c8b945666e875809174402b7e121efb378ebac931a91f9a1cc0048568f8e2f42ae8ae2392ff8d144c2e51d41c7398935017450aaf29838360 gdb-7.11.1.tar.xz +sha512 0ac8d0a495103611ef41167a08313a010dce6ca4c6d827cbe8558a0c1a1a8a6bfa53f1b7704251289cababbfaaf9e075550cdf741a54d6cd9ca3433d910efcd8 gdb-7.12.1.tar.xz +sha512 5eb328910033f0918058be2f92caebf1e8dfc6caa3c730d99d621627e53de3c1b43761c2f683d53555893253c2f06768cbf56cdea051a3d291ffb6cfae87b5e1 gdb-8.0.1.tar.xz + +# Locally calculated (fetched from Github) +sha512 e57582766e7d510b26bea63606429e6289414c31c60e28fef24d3d82fa20fb5a1f92b3831fde53e4f7c178c9e099609d3292628cf921a99109e297af4e5f83d9 gdb-arc-2017.09-release-gdb.tar.gz diff --git a/buildroot/package/gdb/gdb.mk b/buildroot/package/gdb/gdb.mk new file mode 100644 index 0000000..0981b6e --- /dev/null +++ b/buildroot/package/gdb/gdb.mk @@ -0,0 +1,245 @@ +################################################################################ +# +# gdb +# +################################################################################ + +GDB_VERSION = $(call qstrip,$(BR2_GDB_VERSION)) +GDB_SITE = $(BR2_GNU_MIRROR)/gdb +GDB_SOURCE = gdb-$(GDB_VERSION).tar.xz + +ifeq ($(BR2_arc),y) +GDB_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(GDB_VERSION)) +GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz +GDB_FROM_GIT = y +endif + +GDB_LICENSE = GPL-2.0+, LGPL-2.0+, GPL-3.0+, LGPL-3.0+ +GDB_LICENSE_FILES = COPYING COPYING.LIB COPYING3 COPYING3.LIB + +# We only want gdbserver and not the entire debugger. +ifeq ($(BR2_PACKAGE_GDB_DEBUGGER),) +GDB_SUBDIR = gdb/gdbserver +HOST_GDB_SUBDIR = . +else +GDB_DEPENDENCIES = ncurses \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +endif + +# For the host variant, we really want to build with XML support, +# which is needed to read XML descriptions of target architectures. We +# also need ncurses. +HOST_GDB_DEPENDENCIES = host-expat host-ncurses + +# Disable building documentation +GDB_MAKE_OPTS += MAKEINFO=true +GDB_INSTALL_TARGET_OPTS += MAKEINFO=true DESTDIR=$(TARGET_DIR) install +HOST_GDB_MAKE_OPTS += MAKEINFO=true +HOST_GDB_INSTALL_OPTS += MAKEINFO=true install + +# Apply the Xtensa specific patches +ifneq ($(ARCH_XTENSA_OVERLAY_FILE),) +define GDB_XTENSA_OVERLAY_EXTRACT + $(call arch-xtensa-overlay-extract,$(@D),gdb) +endef +GDB_POST_EXTRACT_HOOKS += GDB_XTENSA_OVERLAY_EXTRACT +GDB_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +HOST_GDB_POST_EXTRACT_HOOKS += GDB_XTENSA_OVERLAY_EXTRACT +HOST_GDB_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) +endif + +ifeq ($(GDB_FROM_GIT),y) +GDB_DEPENDENCIES += host-flex host-bison +HOST_GDB_DEPENDENCIES += host-flex host-bison +endif + +# When gdb sources are fetched from the binutils-gdb repository, they +# also contain the binutils sources, but binutils shouldn't be built, +# so we disable it (additionally the option --disable-install-libbfd +# prevents the un-wanted installation of libobcodes.so and libbfd.so). +GDB_DISABLE_BINUTILS_CONF_OPTS = \ + --disable-binutils \ + --disable-install-libbfd \ + --disable-ld \ + --disable-gas + +GDB_CONF_ENV = \ + ac_cv_type_uintptr_t=yes \ + gt_cv_func_gettext_libintl=yes \ + ac_cv_func_dcgettext=yes \ + gdb_cv_func_sigsetjmp=yes \ + bash_cv_func_strcoll_broken=no \ + bash_cv_must_reinstall_sighandlers=no \ + bash_cv_func_sigsetjmp=present \ + bash_cv_have_mbstate_t=yes \ + gdb_cv_func_sigsetjmp=yes + +# Starting with gdb 7.11, the bundled gnulib tries to use +# rpl_gettimeofday (gettimeofday replacement) due to the code being +# unable to determine if the replacement function should be used or +# not when cross-compiling with uClibc or musl as C libraries. So use +# gl_cv_func_gettimeofday_clobber=no to not use rpl_gettimeofday, +# assuming musl and uClibc have a properly working gettimeofday +# implementation. It needs to be passed to GDB_CONF_ENV to build +# gdbserver only but also to GDB_MAKE_ENV, because otherwise it does +# not get passed to the configure script of nested packages while +# building gdbserver with full debugger. +GDB_CONF_ENV += gl_cv_func_gettimeofday_clobber=no +GDB_MAKE_ENV += gl_cv_func_gettimeofday_clobber=no + +# Starting with glibc 2.25, the proc_service.h header has been copied +# from gdb to glibc so other tools can use it. However, that makes it +# necessary to make sure that declaration of prfpregset_t declaration +# is consistent between gdb and glibc. In gdb, however, there is a +# workaround for a broken prfpregset_t declaration in glibc 2.3 which +# uses AC_TRY_RUN to detect if it's needed, which doesn't work in +# cross-compilation. So pass the cache option to configure. +# It needs to be passed to GDB_CONF_ENV to build gdbserver only but +# also to GDB_MAKE_ENV, because otherwise it does not get passed to the +# configure script of nested packages while building gdbserver with full +# debugger. +GDB_CONF_ENV += gdb_cv_prfpregset_t_broken=no +GDB_MAKE_ENV += gdb_cv_prfpregset_t_broken=no + +# The shared only build is not supported by gdb, so enable static build for +# build-in libraries with --enable-static. +GDB_CONF_OPTS = \ + --without-uiout \ + --disable-gdbtk \ + --without-x \ + --disable-sim \ + $(GDB_DISABLE_BINUTILS_CONF_OPTS) \ + $(if $(BR2_PACKAGE_GDB_SERVER),--enable-gdbserver,--disable-gdbserver) \ + --with-curses \ + --without-included-gettext \ + --disable-werror \ + --enable-static + +# When gdb is built as C++ application for ARC it segfaults at runtime +# So we pass --disable-build-with-cxx config option to force gdb not to +# be built as C++ app. +ifeq ($(BR2_arc),y) +GDB_CONF_OPTS += --disable-build-with-cxx +endif + +# gdb 7.12+ by default builds with a C++ compiler, which doesn't work +# when we don't have C++ support in the toolchain +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +GDB_CONF_OPTS += --disable-build-with-cxx +endif + +ifeq ($(BR2_PACKAGE_GDB_TUI),y) +GDB_CONF_OPTS += --enable-tui +else +GDB_CONF_OPTS += --disable-tui +endif + +ifeq ($(BR2_PACKAGE_GDB_PYTHON),y) +GDB_CONF_OPTS += --with-python=$(TOPDIR)/package/gdb/gdb-python-config +GDB_DEPENDENCIES += python +else +GDB_CONF_OPTS += --without-python +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +GDB_CONF_OPTS += --with-expat +GDB_CONF_OPTS += --with-libexpat-prefix=$(STAGING_DIR)/usr +GDB_DEPENDENCIES += expat +else +GDB_CONF_OPTS += --without-expat +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +GDB_CONF_OPTS += --with-lzma +GDB_CONF_OPTS += --with-liblzma-prefix=$(STAGING_DIR)/usr +GDB_DEPENDENCIES += xz +else +GDB_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GDB_CONF_OPTS += --with-zlib +GDB_DEPENDENCIES += zlib +else +GDB_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_GDB_PYTHON),) +# This removes some unneeded Python scripts and XML target description +# files that are not useful for a normal usage of the debugger. +define GDB_REMOVE_UNNEEDED_FILES + $(RM) -rf $(TARGET_DIR)/usr/share/gdb +endef + +GDB_POST_INSTALL_TARGET_HOOKS += GDB_REMOVE_UNNEEDED_FILES +endif + +# This installs the gdbserver somewhere into the $(HOST_DIR) so that +# it becomes an integral part of the SDK, if the toolchain generated +# by Buildroot is later used as an external toolchain. We install it +# in debug-root/usr/bin/gdbserver so that it matches what Crosstool-NG +# does. +define GDB_SDK_INSTALL_GDBSERVER + $(INSTALL) -D -m 0755 $(TARGET_DIR)/usr/bin/gdbserver \ + $(HOST_DIR)/$(GNU_TARGET_NAME)/debug-root/usr/bin/gdbserver +endef + +ifeq ($(BR2_PACKAGE_GDB_SERVER),y) +GDB_POST_INSTALL_TARGET_HOOKS += GDB_SDK_INSTALL_GDBSERVER +endif + +# A few notes: +# * --target, because we're doing a cross build rather than a real +# host build. +# * --enable-static because gdb really wants to use libbfd.a +HOST_GDB_CONF_OPTS = \ + --target=$(GNU_TARGET_NAME) \ + --enable-static \ + --without-uiout \ + --disable-gdbtk \ + --without-x \ + --enable-threads \ + --disable-werror \ + --without-included-gettext \ + --with-curses \ + $(GDB_DISABLE_BINUTILS_CONF_OPTS) + +ifeq ($(BR2_PACKAGE_HOST_GDB_TUI),y) +HOST_GDB_CONF_OPTS += --enable-tui +else +HOST_GDB_CONF_OPTS += --disable-tui +endif + +ifeq ($(BR2_PACKAGE_HOST_GDB_PYTHON),y) +HOST_GDB_CONF_OPTS += --with-python=$(HOST_DIR)/bin/python2 +HOST_GDB_DEPENDENCIES += host-python +else +HOST_GDB_CONF_OPTS += --without-python +endif + +# workaround a bug if in-tree build is used for bfin sim +define HOST_GDB_BFIN_SIM_WORKAROUND + $(RM) $(@D)/sim/common/tconfig.h +endef + +ifeq ($(BR2_PACKAGE_HOST_GDB_SIM),y) +HOST_GDB_CONF_OPTS += --enable-sim +ifeq ($(BR2_bfin),y) +HOST_GDB_PRE_CONFIGURE_HOOKS += HOST_GDB_BFIN_SIM_WORKAROUND +endif +else +HOST_GDB_CONF_OPTS += --disable-sim +endif + +# legacy $arch-linux-gdb symlink +define HOST_GDB_ADD_SYMLINK + cd $(HOST_DIR)/bin && \ + ln -snf $(GNU_TARGET_NAME)-gdb $(ARCH)-linux-gdb +endef + +HOST_GDB_POST_INSTALL_HOOKS += HOST_GDB_ADD_SYMLINK + +HOST_GDB_POST_INSTALL_HOOKS += gen_gdbinit_file + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gdbm/Config.in b/buildroot/package/gdbm/Config.in new file mode 100644 index 0000000..3646bd0 --- /dev/null +++ b/buildroot/package/gdbm/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_GDBM + bool "gdbm" + help + GNU dbm is a set of database routines that use extensible + hashing. It works similar to the standard UNIX dbm routines. + + http://www.gnu.org/software/gdbm/gdbm.html diff --git a/buildroot/package/gdbm/gdbm.hash b/buildroot/package/gdbm/gdbm.hash new file mode 100644 index 0000000..cab712e --- /dev/null +++ b/buildroot/package/gdbm/gdbm.hash @@ -0,0 +1,5 @@ +# From http://www.gnu.org.ua/software/gdbm/download.html +md5 8929dcda2a8de3fd2367bdbf66769376 gdbm-1.13.tar.gz +sha1 7f2a8301497bbcac91808b011ca533380914fd21 gdbm-1.13.tar.gz +# Locally computed +sha256 9d252cbd7d793f7b12bcceaddda98d257c14f4d1890d851c386c37207000a253 gdbm-1.13.tar.gz diff --git a/buildroot/package/gdbm/gdbm.mk b/buildroot/package/gdbm/gdbm.mk new file mode 100644 index 0000000..acd8cd2 --- /dev/null +++ b/buildroot/package/gdbm/gdbm.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# gdbm +# +################################################################################ + +GDBM_VERSION = 1.13 +GDBM_SITE = $(BR2_GNU_MIRROR)/gdbm +GDBM_LICENSE = GPL-3.0+ +GDBM_LICENSE_FILES = COPYING +GDBM_INSTALL_STAGING = YES +GDBM_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_READLINE),y) +GDBM_CONF_OPTS += --with-readline +GDBM_DEPENDENCIES += readline +else +GDBM_CONF_OPTS += --without-readline +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gdk-pixbuf/Config.in b/buildroot/package/gdk-pixbuf/Config.in new file mode 100644 index 0000000..44942ac --- /dev/null +++ b/buildroot/package/gdk-pixbuf/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GDK_PIXBUF + bool "gdk-pixbuf" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Gdk-Pixbuf is an image loader and scaler. It uses GObject + and the GLib, to integrate well with GNOME applications. + + http://www.gtk.org/ + +comment "gdk-pixbuf needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gdk-pixbuf/gdk-pixbuf.hash b/buildroot/package/gdk-pixbuf/gdk-pixbuf.hash new file mode 100644 index 0000000..9cb947f --- /dev/null +++ b/buildroot/package/gdk-pixbuf/gdk-pixbuf.hash @@ -0,0 +1,4 @@ +# From http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.36/gdk-pixbuf-2.36.10.sha256sum +sha256 f8f6fa896b89475c73b6e9e8d2a2b062fc359c4b4ccb8e96470d6ab5da949ace gdk-pixbuf-2.36.10.tar.xz +# Locally calculated +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/buildroot/package/gdk-pixbuf/gdk-pixbuf.mk b/buildroot/package/gdk-pixbuf/gdk-pixbuf.mk new file mode 100644 index 0000000..33de2e3 --- /dev/null +++ b/buildroot/package/gdk-pixbuf/gdk-pixbuf.mk @@ -0,0 +1,89 @@ +################################################################################ +# +# gdk-pixbuf +# +################################################################################ + +GDK_PIXBUF_VERSION_MAJOR = 2.36 +GDK_PIXBUF_VERSION = $(GDK_PIXBUF_VERSION_MAJOR).10 +GDK_PIXBUF_SOURCE = gdk-pixbuf-$(GDK_PIXBUF_VERSION).tar.xz +GDK_PIXBUF_SITE = http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/$(GDK_PIXBUF_VERSION_MAJOR) +GDK_PIXBUF_LICENSE = LGPL-2.0+ +GDK_PIXBUF_LICENSE_FILES = COPYING +GDK_PIXBUF_INSTALL_STAGING = YES +GDK_PIXBUF_DEPENDENCIES = \ + host-gdk-pixbuf host-libglib2 host-pkgconf \ + libglib2 $(if $(BR2_ENABLE_LOCALE),,libiconv) +HOST_GDK_PIXBUF_DEPENDENCIES = host-libpng host-pkgconf host-libglib2 + +GDK_PIXBUF_CONF_ENV = \ + ac_cv_path_GLIB_GENMARSHAL=$(LIBGLIB2_HOST_BINARY) \ + gio_can_sniff=no + +HOST_GDK_PIXBUF_CONF_ENV = \ + gio_can_sniff=no + +GDK_PIXBUF_CONF_OPTS = --disable-glibtest + +ifneq ($(BR2_PACKAGE_LIBPNG),y) +GDK_PIXBUF_CONF_OPTS += --without-libpng +else +GDK_PIXBUF_DEPENDENCIES += libpng +endif + +ifneq ($(BR2_PACKAGE_JPEG),y) +HOST_GDK_PIXBUF_CONF_OPTS += --without-libjpeg +GDK_PIXBUF_CONF_OPTS += --without-libjpeg +else +GDK_PIXBUF_DEPENDENCIES += jpeg +HOST_GDK_PIXBUF_DEPENDENCIES += host-libjpeg +endif + +ifneq ($(BR2_PACKAGE_TIFF),y) +GDK_PIXBUF_CONF_OPTS += --without-libtiff +HOST_GDK_PIXBUF_CONF_OPTS += --without-libtiff +else +GDK_PIXBUF_DEPENDENCIES += tiff +GDK_PIXBUF_CONF_ENV += \ + LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libtiff-4`" +HOST_GDK_PIXBUF_DEPENDENCIES += host-tiff +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +GDK_PIXBUF_CONF_OPTS += --with-x11 +GDK_PIXBUF_DEPENDENCIES += xlib_libX11 +endif + +# gdk-pixbuf requires the loaders.cache file populated to work properly +# Rather than doing so at runtime, since the fs can be read-only, do so +# here after building and installing to target. +# And since the cache file will contain absolute host directory names we +# need to sanitize (strip) them. +ifeq ($(BR2_STATIC_LIBS),) +define GDK_PIXBUF_UPDATE_CACHE + GDK_PIXBUF_MODULEDIR=$(HOST_DIR)/lib/gdk-pixbuf-2.0/2.10.0/loaders \ + $(HOST_DIR)/bin/gdk-pixbuf-query-loaders \ + > $(TARGET_DIR)/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache + $(SED) "s,$(HOST_DIR)/lib,/usr/lib,g" \ + $(TARGET_DIR)/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache +endef +GDK_PIXBUF_POST_INSTALL_TARGET_HOOKS += GDK_PIXBUF_UPDATE_CACHE +endif + +# Tests don't build correctly with uClibc +define GDK_PIXBUF_DISABLE_TESTS + $(SED) 's/ tests//' $(@D)/Makefile.in +endef +GDK_PIXBUF_POST_PATCH_HOOKS += GDK_PIXBUF_DISABLE_TESTS + +# Target gdk-pixbuf needs loaders.cache populated to build for the +# thumbnailer. Use the host-built since it matches the target options +# regarding mime types (which is the used information). +define GDK_PIXBUF_COPY_LOADERS_CACHE + cp -f $(HOST_DIR)/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache \ + $(@D)/gdk-pixbuf +endef +GDK_PIXBUF_PRE_BUILD_HOOKS += GDK_PIXBUF_COPY_LOADERS_CACHE + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/genext2fs/0001-update-genext2fs.c-to-rev-1.118.patch b/buildroot/package/genext2fs/0001-update-genext2fs.c-to-rev-1.118.patch new file mode 100644 index 0000000..755ee9d --- /dev/null +++ b/buildroot/package/genext2fs/0001-update-genext2fs.c-to-rev-1.118.patch @@ -0,0 +1,2971 @@ +[PATCH] update genext2fs.c to CVS rev 1.118 + +See http://genext2fs.cvs.sourceforge.net/viewvc/genext2fs/genext2fs/genext2fs.c?view=log +for details. + +Numerous bugfixes, large file and filesystem support, rev 1 filesystems, +volume id support, block size, .. + +Signed-off-by: Peter Korsgaard +--- + cache.h | 128 ++++ + genext2fs.c | 1870 ++++++++++++++++++++++++++++++++++++++++++------------------ + list.h | 78 ++ + 3 files changed, 1527 insertions(+), 549 deletions(-) + +Index: genext2fs-1.4.1/genext2fs.c +=================================================================== +--- genext2fs-1.4.1.orig/genext2fs.c ++++ genext2fs-1.4.1/genext2fs.c +@@ -53,6 +53,12 @@ + // along with -q, -P, -U + + ++/* ++ * Allow fseeko/off_t to be 64-bit offsets to allow filesystems and ++ * individual files >2GB. ++ */ ++#define _FILE_OFFSET_BITS 64 ++ + #include + #include + +@@ -107,10 +113,8 @@ + + #if HAVE_DIRENT_H + # include +-# define NAMLEN(dirent) strlen((dirent)->d_name) + #else + # define dirent direct +-# define NAMLEN(dirent) (dirent)->d_namlen + # if HAVE_SYS_NDIR_H + # include + # endif +@@ -144,6 +148,8 @@ + # include + #endif + ++#include "cache.h" ++ + struct stats { + unsigned long nblocks; + unsigned long ninodes; +@@ -151,13 +157,42 @@ + + // block size + +-#define BLOCKSIZE 1024 ++static int blocksize = 1024; ++ ++#define SUPERBLOCK_OFFSET 1024 ++#define SUPERBLOCK_SIZE 1024 ++ ++#define BLOCKSIZE blocksize + #define BLOCKS_PER_GROUP 8192 + #define INODES_PER_GROUP 8192 + /* Percentage of blocks that are reserved.*/ + #define RESERVED_BLOCKS 5/100 + #define MAX_RESERVED_BLOCKS 25/100 + ++/* The default value for s_creator_os. */ ++#if defined(__linux__) && defined(EXT2_OS_LINUX) ++#define CREATOR_OS EXT2_OS_LINUX ++#define CREATOR_OS_NAME "linux" ++#else ++#if defined(__GNU__) && defined(EXT2_OS_HURD) ++#define CREATOR_OS EXT2_OS_HURD ++#define CREATOR_OS_NAME "hurd" ++#else ++#if defined(__FreeBSD__) && defined(EXT2_OS_FREEBSD) ++#define CREATOR_OS EXT2_OS_FREEBSD ++#define CREATOR_OS_NAME "freebsd" ++#else ++#if defined(LITES) && defined(EXT2_OS_LITES) ++#define CREATOR_OS EXT2_OS_LITES ++#define CREATOR_OS_NAME "lites" ++#else ++#define CREATOR_OS EXT2_OS_LINUX /* by default */ ++#define CREATOR_OS_NAME "linux" ++#endif /* defined(LITES) && defined(EXT2_OS_LITES) */ ++#endif /* defined(__FreeBSD__) && defined(EXT2_OS_FREEBSD) */ ++#endif /* defined(__GNU__) && defined(EXT2_OS_HURD) */ ++#endif /* defined(__linux__) && defined(EXT2_OS_LINUX) */ ++ + + // inode block size (why is it != BLOCKSIZE ?!?) + /* The field i_blocks in the ext2 inode stores the number of data blocks +@@ -190,6 +225,14 @@ + #define EXT2_TIND_BLOCK 14 // triple indirect block + #define EXT2_INIT_BLOCK 0xFFFFFFFF // just initialized (not really a block address) + ++// codes for operating systems ++ ++#define EXT2_OS_LINUX 0 ++#define EXT2_OS_HURD 1 ++#define EXT2_OS_MASIX 2 ++#define EXT2_OS_FREEBSD 3 ++#define EXT2_OS_LITES 4 ++ + // end of a block walk + + #define WALK_END 0xFFFFFFFE +@@ -227,44 +270,46 @@ + #define FM_IWOTH 0000002 // write + #define FM_IXOTH 0000001 // execute + +-// options +- +-#define OP_HOLES 0x01 // make files with holes +- + /* Defines for accessing group details */ + + // Number of groups in the filesystem + #define GRP_NBGROUPS(fs) \ +- (((fs)->sb.s_blocks_count - fs->sb.s_first_data_block + \ +- (fs)->sb.s_blocks_per_group - 1) / (fs)->sb.s_blocks_per_group) ++ (((fs)->sb->s_blocks_count - fs->sb->s_first_data_block + \ ++ (fs)->sb->s_blocks_per_group - 1) / (fs)->sb->s_blocks_per_group) + + // Get group block bitmap (bbm) given the group number +-#define GRP_GET_GROUP_BBM(fs,grp) ( get_blk((fs),(fs)->gd[(grp)].bg_block_bitmap) ) ++#define GRP_GET_GROUP_BBM(fs,grp,bi) (get_blk((fs),(grp)->bg_block_bitmap,(bi))) ++#define GRP_PUT_GROUP_BBM(bi) ( put_blk((bi)) ) + + // Get group inode bitmap (ibm) given the group number +-#define GRP_GET_GROUP_IBM(fs,grp) ( get_blk((fs),(fs)->gd[(grp)].bg_inode_bitmap) ) +- ++#define GRP_GET_GROUP_IBM(fs,grp,bi) (get_blk((fs), (grp)->bg_inode_bitmap,(bi))) ++#define GRP_PUT_GROUP_IBM(bi) ( put_blk((bi)) ) ++ + // Given an inode number find the group it belongs to +-#define GRP_GROUP_OF_INODE(fs,nod) ( ((nod)-1) / (fs)->sb.s_inodes_per_group) ++#define GRP_GROUP_OF_INODE(fs,nod) ( ((nod)-1) / (fs)->sb->s_inodes_per_group) + + //Given an inode number get the inode bitmap that covers it +-#define GRP_GET_INODE_BITMAP(fs,nod) \ +- ( GRP_GET_GROUP_IBM((fs),GRP_GROUP_OF_INODE((fs),(nod))) ) ++#define GRP_GET_INODE_BITMAP(fs,nod,bi,gi) \ ++ ( GRP_GET_GROUP_IBM((fs),get_gd(fs,GRP_GROUP_OF_INODE((fs),(nod)),gi),bi) ) ++#define GRP_PUT_INODE_BITMAP(bi,gi) \ ++ ( GRP_PUT_GROUP_IBM((bi)),put_gd((gi)) ) + + //Given an inode number find its offset within the inode bitmap that covers it + #define GRP_IBM_OFFSET(fs,nod) \ +- ( (nod) - GRP_GROUP_OF_INODE((fs),(nod))*(fs)->sb.s_inodes_per_group ) ++ ( (nod) - GRP_GROUP_OF_INODE((fs),(nod))*(fs)->sb->s_inodes_per_group ) + + // Given a block number find the group it belongs to +-#define GRP_GROUP_OF_BLOCK(fs,blk) ( ((blk)-1) / (fs)->sb.s_blocks_per_group) ++#define GRP_GROUP_OF_BLOCK(fs,blk) ( ((blk)-1) / (fs)->sb->s_blocks_per_group) + +-//Given a block number get the block bitmap that covers it +-#define GRP_GET_BLOCK_BITMAP(fs,blk) \ +- ( GRP_GET_GROUP_BBM((fs),GRP_GROUP_OF_BLOCK((fs),(blk))) ) ++//Given a block number get/put the block bitmap that covers it ++#define GRP_GET_BLOCK_BITMAP(fs,blk,bi,gi) \ ++ ( GRP_GET_GROUP_BBM((fs),get_gd(fs,GRP_GROUP_OF_BLOCK((fs),(blk)),(gi)),(bi)) ) ++#define GRP_PUT_BLOCK_BITMAP(bi,gi) \ ++ ( GRP_PUT_GROUP_BBM((bi)),put_gd((gi)) ) + + //Given a block number find its offset within the block bitmap that covers it + #define GRP_BBM_OFFSET(fs,blk) \ +- ( (blk) - GRP_GROUP_OF_BLOCK((fs),(blk))*(fs)->sb.s_blocks_per_group ) ++ ( (blk) - GRP_GROUP_OF_BLOCK((fs),(blk))*(fs)->sb->s_blocks_per_group ) + + + // used types +@@ -286,7 +331,9 @@ + // older solaris. Note that this is still not very portable, in that + // the return value cannot be trusted. + +-#if SCANF_CAN_MALLOC ++#if 0 // SCANF_CAN_MALLOC ++// C99 define "a" for floating point, so you can have runtime surprise ++// according the library versions + # define SCANF_PREFIX "a" + # define SCANF_STRING(s) (&s) + #else +@@ -430,6 +477,17 @@ + ((val<<8)&0xFF0000) | (val<<24)); + } + ++static inline int ++is_blk_empty(uint8 *b) ++{ ++ uint32 i; ++ uint32 *v = (uint32 *) b; ++ ++ for(i = 0; i < BLOCKSIZE / 4; i++) ++ if (*v++) ++ return 0; ++ return 1; ++} + + // on-disk structures + // this trick makes me declare things only once +@@ -460,7 +518,22 @@ + udecl32(s_creator_os) /* Indicator of which OS created the filesystem */ \ + udecl32(s_rev_level) /* The revision level of the filesystem */ \ + udecl16(s_def_resuid) /* The default uid for reserved blocks */ \ +- udecl16(s_def_resgid) /* The default gid for reserved blocks */ ++ udecl16(s_def_resgid) /* The default gid for reserved blocks */ \ ++ /* rev 1 version fields start here */ \ ++ udecl32(s_first_ino) /* First non-reserved inode */ \ ++ udecl16(s_inode_size) /* size of inode structure */ \ ++ udecl16(s_block_group_nr) /* block group # of this superblock */ \ ++ udecl32(s_feature_compat) /* compatible feature set */ \ ++ udecl32(s_feature_incompat) /* incompatible feature set */ \ ++ udecl32(s_feature_ro_compat) /* readonly-compatible feature set */ \ ++ utdecl8(s_uuid,16) /* 128-bit uuid for volume */ \ ++ utdecl8(s_volume_name,16) /* volume name */ \ ++ utdecl8(s_last_mounted,64) /* directory where last mounted */ \ ++ udecl32(s_algorithm_usage_bitmap) /* For compression */ ++ ++#define EXT2_GOOD_OLD_FIRST_INO 11 ++#define EXT2_GOOD_OLD_INODE_SIZE 128 ++#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 + + #define groupdescriptor_decl \ + udecl32(bg_block_bitmap) /* Block number of the block bitmap */ \ +@@ -500,6 +573,7 @@ + + #define decl8(x) int8 x; + #define udecl8(x) uint8 x; ++#define utdecl8(x,n) uint8 x[n]; + #define decl16(x) int16 x; + #define udecl16(x) uint16 x; + #define decl32(x) int32 x; +@@ -509,7 +583,7 @@ + typedef struct + { + superblock_decl +- uint32 s_reserved[235]; // Reserved ++ uint32 s_reserved[205]; // Reserved + } superblock; + + typedef struct +@@ -527,10 +601,9 @@ + typedef struct + { + directory_decl +- char d_name[0]; + } directory; + +-typedef uint8 block[BLOCKSIZE]; ++typedef uint8 *block; + + /* blockwalker fields: + The blockwalker is used to access all the blocks of a file (including +@@ -567,23 +640,41 @@ + uint32 bptind; + } blockwalker; + ++#define HDLINK_CNT 16 ++struct hdlink_s ++{ ++ uint32 src_inode; ++ uint32 dst_nod; ++}; ++ ++struct hdlinks_s ++{ ++ int32 count; ++ struct hdlink_s *hdl; ++}; + + /* Filesystem structure that support groups */ +-#if BLOCKSIZE == 1024 + typedef struct + { +- block zero; // The famous block 0 +- superblock sb; // The superblock +- groupdescriptor gd[0]; // The group descriptors ++ FILE *f; ++ superblock *sb; ++ int swapit; ++ int32 hdlink_cnt; ++ struct hdlinks_s hdlinks; ++ ++ int holes; ++ ++ listcache blks; ++ listcache gds; ++ listcache inodes; ++ listcache blkmaps; + } filesystem; +-#else +-#error UNHANDLED BLOCKSIZE +-#endif + + // now the endianness swap + + #undef decl8 + #undef udecl8 ++#undef utdecl8 + #undef decl16 + #undef udecl16 + #undef decl32 +@@ -592,28 +683,13 @@ + + #define decl8(x) + #define udecl8(x) ++#define utdecl8(x,n) + #define decl16(x) this->x = swab16(this->x); + #define udecl16(x) this->x = swab16(this->x); + #define decl32(x) this->x = swab32(this->x); + #define udecl32(x) this->x = swab32(this->x); + #define utdecl32(x,n) { int i; for(i=0; ix[i] = swab32(this->x[i]); } + +-#define HDLINK_CNT 16 +-static int32 hdlink_cnt = HDLINK_CNT; +-struct hdlink_s +-{ +- uint32 src_inode; +- uint32 dst_nod; +-}; +- +-struct hdlinks_s +-{ +- int32 count; +- struct hdlink_s *hdl; +-}; +- +-static struct hdlinks_s hdlinks; +- + static void + swap_sb(superblock *sb) + { +@@ -633,9 +709,24 @@ + static void + swap_nod(inode *nod) + { ++ uint32 nblk; ++ + #define this nod + inode_decl + #undef this ++ ++ // block and character inodes store the major and minor in the ++ // i_block, so we need to unswap to get those. Also, if it's ++ // zero iblocks, put the data back like it belongs. ++ nblk = nod->i_blocks / INOBLK; ++ if ((nod->i_size && !nblk) ++ || ((nod->i_mode & FM_IFBLK) == FM_IFBLK) ++ || ((nod->i_mode & FM_IFCHR) == FM_IFCHR)) ++ { ++ int i; ++ for(i = 0; i <= EXT2_TIND_BLOCK; i++) ++ nod->i_block[i] = swab32(nod->i_block[i]); ++ } + } + + static void +@@ -657,6 +748,7 @@ + + #undef decl8 + #undef udecl8 ++#undef utdecl8 + #undef decl16 + #undef udecl16 + #undef decl32 +@@ -770,15 +862,15 @@ + } + + int +-is_hardlink(ino_t inode) ++is_hardlink(filesystem *fs, ino_t inode) + { + int i; + +- for(i = 0; i < hdlinks.count; i++) { +- if(hdlinks.hdl[i].src_inode == inode) ++ for(i = 0; i < fs->hdlinks.count; i++) { ++ if(fs->hdlinks.hdl[i].src_inode == inode) + return i; + } +- return -1; ++ return -1; + } + + // printf helper macro +@@ -789,6 +881,8 @@ + get_workblk(void) + { + unsigned char* b=calloc(1,BLOCKSIZE); ++ if (!b) ++ error_msg_and_die("get_workblk() failed, out of memory"); + return b; + } + static inline void +@@ -811,24 +905,464 @@ + return b[(item-1) / 8] & (1 << ((item-1) % 8)); + } + +-// return a given block from a filesystem ++// Used by get_blk/put_blk to hold information about a block owned ++// by the user. ++typedef struct ++{ ++ cache_link link; ++ ++ filesystem *fs; ++ uint32 blk; ++ uint8 *b; ++ uint32 usecount; ++} blk_info; ++ ++#define MAX_FREE_CACHE_BLOCKS 100 ++ ++static uint32 ++blk_elem_val(cache_link *elem) ++{ ++ blk_info *bi = container_of(elem, blk_info, link); ++ return bi->blk; ++} ++ ++static void ++blk_freed(cache_link *elem) ++{ ++ blk_info *bi = container_of(elem, blk_info, link); ++ ++ if (fseeko(bi->fs->f, ((off_t) bi->blk) * BLOCKSIZE, SEEK_SET)) ++ perror_msg_and_die("fseek"); ++ if (fwrite(bi->b, BLOCKSIZE, 1, bi->fs->f) != 1) ++ perror_msg_and_die("get_blk: write"); ++ free(bi->b); ++ free(bi); ++} ++ ++// Return a given block from a filesystem. Make sure to call ++// put_blk when you are done with it. + static inline uint8 * +-get_blk(filesystem *fs, uint32 blk) ++get_blk(filesystem *fs, uint32 blk, blk_info **rbi) + { +- return (uint8*)fs + blk*BLOCKSIZE; ++ cache_link *curr; ++ blk_info *bi; ++ ++ if (blk >= fs->sb->s_blocks_count) ++ error_msg_and_die("Internal error, block out of range"); ++ ++ curr = cache_find(&fs->blks, blk); ++ if (curr) { ++ bi = container_of(curr, blk_info, link); ++ bi->usecount++; ++ goto out; ++ } ++ ++ bi = malloc(sizeof(*bi)); ++ if (!bi) ++ error_msg_and_die("get_blk: out of memory"); ++ bi->fs = fs; ++ bi->blk = blk; ++ bi->usecount = 1; ++ bi->b = malloc(BLOCKSIZE); ++ if (!bi->b) ++ error_msg_and_die("get_blk: out of memory"); ++ cache_add(&fs->blks, &bi->link); ++ if (fseeko(fs->f, ((off_t) blk) * BLOCKSIZE, SEEK_SET)) ++ perror_msg_and_die("fseek"); ++ if (fread(bi->b, BLOCKSIZE, 1, fs->f) != 1) { ++ if (ferror(fs->f)) ++ perror_msg_and_die("fread"); ++ memset(bi->b, 0, BLOCKSIZE); ++ } ++ ++out: ++ *rbi = bi; ++ return bi->b; + } + + // return a given inode from a filesystem +-static inline inode * +-get_nod(filesystem *fs, uint32 nod) ++static inline void ++put_blk(blk_info *bi) ++{ ++ if (bi->usecount == 0) ++ error_msg_and_die("Internal error: put_blk usecount zero"); ++ bi->usecount--; ++ if (bi->usecount == 0) ++ /* Free happens in the cache code */ ++ cache_item_set_unused(&bi->fs->blks, &bi->link); ++} ++ ++typedef struct + { +- int grp,offset; ++ cache_link link; ++ ++ filesystem *fs; ++ int gds; ++ blk_info *bi; ++ groupdescriptor *gd; ++ uint32 usecount; ++} gd_info; ++ ++#define MAX_FREE_CACHE_GDS 100 ++ ++static uint32 ++gd_elem_val(cache_link *elem) ++{ ++ gd_info *gi = container_of(elem, gd_info, link); ++ return gi->gds; ++} ++ ++static void ++gd_freed(cache_link *elem) ++{ ++ gd_info *gi = container_of(elem, gd_info, link); ++ ++ if (gi->fs->swapit) ++ swap_gd(gi->gd); ++ put_blk(gi->bi); ++ free(gi); ++} ++ ++#define GDS_START ((SUPERBLOCK_OFFSET + SUPERBLOCK_SIZE + BLOCKSIZE - 1) / BLOCKSIZE) ++#define GDS_PER_BLOCK (BLOCKSIZE / sizeof(groupdescriptor)) ++// the group descriptors are aligned on the block size ++static inline groupdescriptor * ++get_gd(filesystem *fs, uint32 no, gd_info **rgi) ++{ ++ uint32 gdblk; ++ uint32 offset; ++ gd_info *gi; ++ cache_link *curr; ++ ++ curr = cache_find(&fs->gds, no); ++ if (curr) { ++ gi = container_of(curr, gd_info, link); ++ gi->usecount++; ++ goto out; ++ } ++ ++ gi = malloc(sizeof(*gi)); ++ if (!gi) ++ error_msg_and_die("get_gd: out of memory"); ++ gi->fs = fs; ++ gi->gds = no; ++ gi->usecount = 1; ++ gdblk = GDS_START + (no / GDS_PER_BLOCK); ++ offset = no % GDS_PER_BLOCK; ++ gi->gd = ((groupdescriptor *) get_blk(fs, gdblk, &gi->bi)) + offset; ++ cache_add(&fs->gds, &gi->link); ++ if (fs->swapit) ++ swap_gd(gi->gd); ++ out: ++ *rgi = gi; ++ ++ return gi->gd; ++} ++ ++static inline void ++put_gd(gd_info *gi) ++{ ++ if (gi->usecount == 0) ++ error_msg_and_die("Internal error: put_gd usecount zero"); ++ ++ gi->usecount--; ++ if (gi->usecount == 0) ++ /* Free happens in the cache code */ ++ cache_item_set_unused(&gi->fs->gds, &gi->link); ++} ++ ++// Used by get_blkmap/put_blkmap to hold information about an block map ++// owned by the user. ++typedef struct ++{ ++ cache_link link; ++ ++ filesystem *fs; ++ uint32 blk; ++ uint8 *b; ++ blk_info *bi; ++ uint32 usecount; ++} blkmap_info; ++ ++#define MAX_FREE_CACHE_BLOCKMAPS 100 ++ ++static uint32 ++blkmap_elem_val(cache_link *elem) ++{ ++ blkmap_info *bmi = container_of(elem, blkmap_info, link); ++ return bmi->blk; ++} ++ ++static void ++blkmap_freed(cache_link *elem) ++{ ++ blkmap_info *bmi = container_of(elem, blkmap_info, link); ++ ++ if (bmi->fs->swapit) ++ swap_block(bmi->b); ++ put_blk(bmi->bi); ++ free(bmi); ++} ++ ++// Return a given block map from a filesystem. Make sure to call ++// put_blkmap when you are done with it. ++static inline uint32 * ++get_blkmap(filesystem *fs, uint32 blk, blkmap_info **rbmi) ++{ ++ blkmap_info *bmi; ++ cache_link *curr; ++ ++ curr = cache_find(&fs->blkmaps, blk); ++ if (curr) { ++ bmi = container_of(curr, blkmap_info, link); ++ bmi->usecount++; ++ goto out; ++ } ++ ++ bmi = malloc(sizeof(*bmi)); ++ if (!bmi) ++ error_msg_and_die("get_blkmap: out of memory"); ++ bmi->fs = fs; ++ bmi->blk = blk; ++ bmi->b = get_blk(fs, blk, &bmi->bi); ++ bmi->usecount = 1; ++ cache_add(&fs->blkmaps, &bmi->link); ++ ++ if (fs->swapit) ++ swap_block(bmi->b); ++ out: ++ *rbmi = bmi; ++ return (uint32 *) bmi->b; ++} ++ ++static inline void ++put_blkmap(blkmap_info *bmi) ++{ ++ if (bmi->usecount == 0) ++ error_msg_and_die("Internal error: put_blkmap usecount zero"); ++ ++ bmi->usecount--; ++ if (bmi->usecount == 0) ++ /* Free happens in the cache code */ ++ cache_item_set_unused(&bmi->fs->blkmaps, &bmi->link); ++} ++ ++// Used by get_nod/put_nod to hold information about an inode owned ++// by the user. ++typedef struct ++{ ++ cache_link link; ++ ++ filesystem *fs; ++ uint32 nod; ++ uint8 *b; ++ blk_info *bi; + inode *itab; ++ uint32 usecount; ++} nod_info; ++ ++#define MAX_FREE_CACHE_INODES 100 ++ ++static uint32 ++inode_elem_val(cache_link *elem) ++{ ++ nod_info *ni = container_of(elem, nod_info, link); ++ return ni->nod; ++} ++ ++static void ++inode_freed(cache_link *elem) ++{ ++ nod_info *ni = container_of(elem, nod_info, link); ++ ++ if (ni->fs->swapit) ++ swap_nod(ni->itab); ++ put_blk(ni->bi); ++ free(ni); ++} ++ ++#define INODES_PER_BLOCK (BLOCKSIZE / sizeof(inode)) + +- offset = GRP_IBM_OFFSET(fs,nod); ++// return a given inode from a filesystem ++static inline inode * ++get_nod(filesystem *fs, uint32 nod, nod_info **rni) ++{ ++ uint32 grp, boffset, offset; ++ cache_link *curr; ++ groupdescriptor *gd; ++ gd_info *gi; ++ nod_info *ni; ++ ++ curr = cache_find(&fs->inodes, nod); ++ if (curr) { ++ ni = container_of(curr, nod_info, link); ++ ni->usecount++; ++ goto out; ++ } ++ ++ ni = malloc(sizeof(*ni)); ++ if (!ni) ++ error_msg_and_die("get_nod: out of memory"); ++ ni->fs = fs; ++ ni->nod = nod; ++ ni->usecount = 1; ++ cache_add(&fs->inodes, &ni->link); ++ ++ offset = GRP_IBM_OFFSET(fs,nod) - 1; ++ boffset = offset / INODES_PER_BLOCK; ++ offset %= INODES_PER_BLOCK; + grp = GRP_GROUP_OF_INODE(fs,nod); +- itab = (inode *)get_blk(fs, fs->gd[grp].bg_inode_table); +- return itab+offset-1; ++ gd = get_gd(fs, grp, &gi); ++ ni->b = get_blk(fs, gd->bg_inode_table + boffset, &ni->bi); ++ ni->itab = ((inode *) ni->b) + offset; ++ if (fs->swapit) ++ swap_nod(ni->itab); ++ put_gd(gi); ++ out: ++ *rni = ni; ++ return ni->itab; ++} ++ ++static inline void ++put_nod(nod_info *ni) ++{ ++ if (ni->usecount == 0) ++ error_msg_and_die("Internal error: put_nod usecount zero"); ++ ++ ni->usecount--; ++ if (ni->usecount == 0) ++ /* Free happens in the cache code */ ++ cache_item_set_unused(&ni->fs->inodes, &ni->link); ++} ++ ++// Used to hold state information while walking a directory inode. ++typedef struct ++{ ++ directory d; ++ filesystem *fs; ++ uint32 nod; ++ directory *last_d; ++ uint8 *b; ++ blk_info *bi; ++} dirwalker; ++ ++// Start a directory walk on the given inode. You must pass in a ++// dirwalker structure, then use that dirwalker for future operations. ++// Call put_dir when you are done walking the directory. ++static inline directory * ++get_dir(filesystem *fs, uint32 nod, dirwalker *dw) ++{ ++ dw->fs = fs; ++ dw->b = get_blk(fs, nod, &dw->bi); ++ dw->nod = nod; ++ dw->last_d = (directory *) dw->b; ++ ++ memcpy(&dw->d, dw->last_d, sizeof(directory)); ++ if (fs->swapit) ++ swap_dir(&dw->d); ++ return &dw->d; ++} ++ ++// Move to the next directory. ++static inline directory * ++next_dir(dirwalker *dw) ++{ ++ directory *next_d = (directory *)((int8*)dw->last_d + dw->d.d_rec_len); ++ ++ if (dw->fs->swapit) ++ swap_dir(&dw->d); ++ memcpy(dw->last_d, &dw->d, sizeof(directory)); ++ ++ if (((int8 *) next_d) >= ((int8 *) dw->b + BLOCKSIZE)) ++ return NULL; ++ ++ dw->last_d = next_d; ++ memcpy(&dw->d, next_d, sizeof(directory)); ++ if (dw->fs->swapit) ++ swap_dir(&dw->d); ++ return &dw->d; ++} ++ ++// Call then when you are done with the directory walk. ++static inline void ++put_dir(dirwalker *dw) ++{ ++ if (dw->fs->swapit) ++ swap_dir(&dw->d); ++ memcpy(dw->last_d, &dw->d, sizeof(directory)); ++ ++ if (dw->nod == 0) ++ free_workblk(dw->b); ++ else ++ put_blk(dw->bi); ++} ++ ++// Create a new directory block with the given inode as it's destination ++// and append it to the current dirwalker. ++static directory * ++new_dir(filesystem *fs, uint32 dnod, const char *name, int nlen, dirwalker *dw) ++{ ++ directory *d; ++ ++ dw->fs = fs; ++ dw->b = get_workblk(); ++ dw->nod = 0; ++ dw->last_d = (directory *) dw->b; ++ d = &dw->d; ++ d->d_inode = dnod; ++ d->d_rec_len = BLOCKSIZE; ++ d->d_name_len = nlen; ++ strncpy(((char *) dw->last_d) + sizeof(directory), name, nlen); ++ return d; ++} ++ ++// Shrink the current directory entry, make a new one with the free ++// space, and return the new directory entry (making it current). ++static inline directory * ++shrink_dir(dirwalker *dw, uint32 nod, const char *name, int nlen) ++{ ++ int reclen, preclen; ++ directory *d = &dw->d; ++ ++ reclen = d->d_rec_len; ++ d->d_rec_len = sizeof(directory) + rndup(d->d_name_len, 4); ++ preclen = d->d_rec_len; ++ reclen -= preclen; ++ if (dw->fs->swapit) ++ swap_dir(&dw->d); ++ memcpy(dw->last_d, &dw->d, sizeof(directory)); ++ ++ dw->last_d = (directory *) (((int8 *) dw->last_d) + preclen); ++ d->d_rec_len = reclen; ++ d->d_inode = nod; ++ d->d_name_len = nlen; ++ strncpy(((char *) dw->last_d) + sizeof(directory), name, nlen); ++ ++ return d; ++} ++ ++// Return the current block the directory is walking ++static inline uint8 * ++dir_data(dirwalker *dw) ++{ ++ return dw->b; ++} ++ ++// Return the pointer to the name for the current directory ++static inline char * ++dir_name(dirwalker *dw) ++{ ++ return ((char *) dw->last_d) + sizeof(directory); ++} ++ ++// Set the name for the current directory. Note that this doesn't ++// verify that there is space for the directory name, you must do ++// that yourself. ++static void ++dir_set_name(dirwalker *dw, const char *name, int nlen) ++{ ++ dw->d.d_name_len = nlen; ++ strncpy(((char *) dw->last_d) + sizeof(directory), name, nlen); + } + + // allocate a given block/inode in the bitmap +@@ -870,21 +1404,34 @@ + { + uint32 bk=0; + uint32 grp,nbgroups; ++ blk_info *bi; ++ groupdescriptor *gd; ++ gd_info *gi; + + grp = GRP_GROUP_OF_INODE(fs,nod); + nbgroups = GRP_NBGROUPS(fs); +- if(!(bk = allocate(get_blk(fs,fs->gd[grp].bg_block_bitmap), 0))) { +- for(grp=0;grpgd[grp].bg_block_bitmap),0); ++ gd = get_gd(fs, grp, &gi); ++ bk = allocate(GRP_GET_GROUP_BBM(fs, gd, &bi), 0); ++ GRP_PUT_GROUP_BBM(bi); ++ put_gd(gi); ++ if (!bk) { ++ for (grp=0; grpgd[grp].bg_free_blocks_count--)) ++ gd = get_gd(fs, grp, &gi); ++ if(!(gd->bg_free_blocks_count--)) + error_msg_and_die("group descr %d. free blocks count == 0 (corrupted fs?)",grp); +- if(!(fs->sb.s_free_blocks_count--)) ++ put_gd(gi); ++ if(!(fs->sb->s_free_blocks_count--)) + error_msg_and_die("superblock free blocks count == 0 (corrupted fs?)"); +- return fs->sb.s_blocks_per_group*grp + bk; ++ return fs->sb->s_first_data_block + fs->sb->s_blocks_per_group*grp + (bk-1); + } + + // free a block +@@ -892,12 +1439,18 @@ + free_blk(filesystem *fs, uint32 bk) + { + uint32 grp; +- +- grp = bk / fs->sb.s_blocks_per_group; +- bk %= fs->sb.s_blocks_per_group; +- deallocate(get_blk(fs,fs->gd[grp].bg_block_bitmap), bk); +- fs->gd[grp].bg_free_blocks_count++; +- fs->sb.s_free_blocks_count++; ++ blk_info *bi; ++ gd_info *gi; ++ groupdescriptor *gd; ++ ++ grp = bk / fs->sb->s_blocks_per_group; ++ bk %= fs->sb->s_blocks_per_group; ++ gd = get_gd(fs, grp, &gi); ++ deallocate(GRP_GET_GROUP_BBM(fs, gd, &bi), bk); ++ GRP_PUT_GROUP_BBM(bi); ++ gd->bg_free_blocks_count++; ++ put_gd(gi); ++ fs->sb->s_free_blocks_count++; + } + + // allocate an inode +@@ -906,6 +1459,9 @@ + { + uint32 nod,best_group=0; + uint32 grp,nbgroups,avefreei; ++ blk_info *bi; ++ gd_info *gi, *bestgi; ++ groupdescriptor *gd, *bestgd; + + nbgroups = GRP_NBGROUPS(fs); + +@@ -914,22 +1470,32 @@ + /* find the one with the most free blocks and allocate node there */ + /* Idea from find_group_dir in fs/ext2/ialloc.c in 2.4.19 kernel */ + /* We do it for all inodes. */ +- avefreei = fs->sb.s_free_inodes_count / nbgroups; ++ avefreei = fs->sb->s_free_inodes_count / nbgroups; ++ bestgd = get_gd(fs, best_group, &bestgi); + for(grp=0; grpgd[grp].bg_free_inodes_count < avefreei || +- fs->gd[grp].bg_free_inodes_count == 0) ++ gd = get_gd(fs, grp, &gi); ++ if (gd->bg_free_inodes_count < avefreei || ++ gd->bg_free_inodes_count == 0) { ++ put_gd(gi); + continue; +- if (!best_group || +- fs->gd[grp].bg_free_blocks_count > fs->gd[best_group].bg_free_blocks_count) ++ } ++ if (!best_group || gd->bg_free_blocks_count > bestgd->bg_free_blocks_count) { ++ put_gd(bestgi); + best_group = grp; ++ bestgd = gd; ++ bestgi = gi; ++ } else ++ put_gd(gi); + } +- if (!(nod = allocate(get_blk(fs,fs->gd[best_group].bg_inode_bitmap),0))) ++ if (!(nod = allocate(GRP_GET_GROUP_IBM(fs, bestgd, &bi), 0))) + error_msg_and_die("couldn't allocate an inode (no free inode)"); +- if(!(fs->gd[best_group].bg_free_inodes_count--)) ++ GRP_PUT_GROUP_IBM(bi); ++ if(!(bestgd->bg_free_inodes_count--)) + error_msg_and_die("group descr. free blocks count == 0 (corrupted fs?)"); +- if(!(fs->sb.s_free_inodes_count--)) ++ put_gd(bestgi); ++ if(!(fs->sb->s_free_inodes_count--)) + error_msg_and_die("superblock free blocks count == 0 (corrupted fs?)"); +- return fs->sb.s_inodes_per_group*best_group+nod; ++ return fs->sb->s_inodes_per_group*best_group+nod; + } + + // print a bitmap allocation +@@ -962,30 +1528,40 @@ + // used after being freed, so once you start + // freeing blocks don't stop until the end of + // the file. moreover, i_blocks isn't updated. +-// in fact, don't do that, just use extend_blk + // if hole!=0, create a hole in the file + static uint32 + walk_bw(filesystem *fs, uint32 nod, blockwalker *bw, int32 *create, uint32 hole) + { + uint32 *bkref = 0; ++ uint32 bk = 0; ++ blkmap_info *bmi1 = NULL, *bmi2 = NULL, *bmi3 = NULL; + uint32 *b; + int extend = 0, reduce = 0; ++ inode *inod; ++ nod_info *ni; ++ uint32 *iblk; ++ + if(create && (*create) < 0) + reduce = 1; +- if(bw->bnum >= get_nod(fs, nod)->i_blocks / INOBLK) ++ inod = get_nod(fs, nod, &ni); ++ if(bw->bnum >= inod->i_blocks / INOBLK) + { + if(create && (*create) > 0) + { + (*create)--; + extend = 1; + } +- else ++ else ++ { ++ put_nod(ni); + return WALK_END; ++ } + } ++ iblk = inod->i_block; + // first direct block + if(bw->bpdir == EXT2_INIT_BLOCK) + { +- bkref = &get_nod(fs, nod)->i_block[bw->bpdir = 0]; ++ bkref = &iblk[bw->bpdir = 0]; + if(extend) // allocate first block + *bkref = hole ? 0 : alloc_blk(fs,nod); + if(reduce) // free first block +@@ -994,7 +1570,7 @@ + // direct block + else if(bw->bpdir < EXT2_NDIR_BLOCKS) + { +- bkref = &get_nod(fs, nod)->i_block[++bw->bpdir]; ++ bkref = &iblk[++bw->bpdir]; + if(extend) // allocate block + *bkref = hole ? 0 : alloc_blk(fs,nod); + if(reduce) // free block +@@ -1007,10 +1583,10 @@ + bw->bpdir = EXT2_IND_BLOCK; + bw->bpind = 0; + if(extend) // allocate indirect block +- get_nod(fs, nod)->i_block[bw->bpdir] = alloc_blk(fs,nod); ++ iblk[bw->bpdir] = alloc_blk(fs,nod); + if(reduce) // free indirect block +- free_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); +- b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); ++ free_blk(fs, iblk[bw->bpdir]); ++ b = get_blkmap(fs, iblk[bw->bpdir], &bmi1); + bkref = &b[bw->bpind]; + if(extend) // allocate first block + *bkref = hole ? 0 : alloc_blk(fs,nod); +@@ -1021,7 +1597,7 @@ + else if((bw->bpdir == EXT2_IND_BLOCK) && (bw->bpind < BLOCKSIZE/4 - 1)) + { + bw->bpind++; +- b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); ++ b = get_blkmap(fs, iblk[bw->bpdir], &bmi1); + bkref = &b[bw->bpind]; + if(extend) // allocate block + *bkref = hole ? 0 : alloc_blk(fs,nod); +@@ -1036,15 +1612,15 @@ + bw->bpind = 0; + bw->bpdind = 0; + if(extend) // allocate double indirect block +- get_nod(fs, nod)->i_block[bw->bpdir] = alloc_blk(fs,nod); ++ iblk[bw->bpdir] = alloc_blk(fs,nod); + if(reduce) // free double indirect block +- free_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); +- b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); ++ free_blk(fs, iblk[bw->bpdir]); ++ b = get_blkmap(fs, iblk[bw->bpdir], &bmi1); + if(extend) // allocate first indirect block + b[bw->bpind] = alloc_blk(fs,nod); + if(reduce) // free firstindirect block + free_blk(fs, b[bw->bpind]); +- b = (uint32*)get_blk(fs, b[bw->bpind]); ++ b = get_blkmap(fs, b[bw->bpind], &bmi2); + bkref = &b[bw->bpdind]; + if(extend) // allocate first block + *bkref = hole ? 0 : alloc_blk(fs,nod); +@@ -1055,8 +1631,8 @@ + else if((bw->bpdir == EXT2_DIND_BLOCK) && (bw->bpdind < BLOCKSIZE/4 - 1)) + { + bw->bpdind++; +- b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); +- b = (uint32*)get_blk(fs, b[bw->bpind]); ++ b = get_blkmap(fs, iblk[bw->bpdir], &bmi1); ++ b = get_blkmap(fs, b[bw->bpind], &bmi2); + bkref = &b[bw->bpdind]; + if(extend) // allocate block + *bkref = hole ? 0 : alloc_blk(fs,nod); +@@ -1069,12 +1645,12 @@ + bw->bnum++; + bw->bpdind = 0; + bw->bpind++; +- b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); ++ b = get_blkmap(fs, iblk[bw->bpdir], &bmi1); + if(extend) // allocate indirect block + b[bw->bpind] = alloc_blk(fs,nod); + if(reduce) // free indirect block + free_blk(fs, b[bw->bpind]); +- b = (uint32*)get_blk(fs, b[bw->bpind]); ++ b = get_blkmap(fs, b[bw->bpind], &bmi2); + bkref = &b[bw->bpdind]; + if(extend) // allocate first block + *bkref = hole ? 0 : alloc_blk(fs,nod); +@@ -1094,20 +1670,20 @@ + bw->bpdind = 0; + bw->bptind = 0; + if(extend) // allocate triple indirect block +- get_nod(fs, nod)->i_block[bw->bpdir] = alloc_blk(fs,nod); ++ iblk[bw->bpdir] = alloc_blk(fs,nod); + if(reduce) // free triple indirect block +- free_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); +- b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); ++ free_blk(fs, iblk[bw->bpdir]); ++ b = get_blkmap(fs, iblk[bw->bpdir], &bmi1); + if(extend) // allocate first double indirect block + b[bw->bpind] = alloc_blk(fs,nod); + if(reduce) // free first double indirect block + free_blk(fs, b[bw->bpind]); +- b = (uint32*)get_blk(fs, b[bw->bpind]); ++ b = get_blkmap(fs, b[bw->bpind], &bmi2); + if(extend) // allocate first indirect block + b[bw->bpdind] = alloc_blk(fs,nod); + if(reduce) // free first indirect block + free_blk(fs, b[bw->bpind]); +- b = (uint32*)get_blk(fs, b[bw->bpdind]); ++ b = get_blkmap(fs, b[bw->bpdind], &bmi3); + bkref = &b[bw->bptind]; + if(extend) // allocate first data block + *bkref = hole ? 0 : alloc_blk(fs,nod); +@@ -1121,9 +1697,9 @@ + (bw->bptind < BLOCKSIZE/4 -1) ) + { + bw->bptind++; +- b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); +- b = (uint32*)get_blk(fs, b[bw->bpind]); +- b = (uint32*)get_blk(fs, b[bw->bpdind]); ++ b = get_blkmap(fs, iblk[bw->bpdir], &bmi1); ++ b = get_blkmap(fs, b[bw->bpind], &bmi2); ++ b = get_blkmap(fs, b[bw->bpdind], &bmi3); + bkref = &b[bw->bptind]; + if(extend) // allocate data block + *bkref = hole ? 0 : alloc_blk(fs,nod); +@@ -1140,13 +1716,13 @@ + bw->bnum++; + bw->bptind = 0; + bw->bpdind++; +- b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); +- b = (uint32*)get_blk(fs, b[bw->bpind]); ++ b = get_blkmap(fs, iblk[bw->bpdir], &bmi1); ++ b = get_blkmap(fs, b[bw->bpind], &bmi2); + if(extend) // allocate single indirect block + b[bw->bpdind] = alloc_blk(fs,nod); + if(reduce) // free indirect block + free_blk(fs, b[bw->bpind]); +- b = (uint32*)get_blk(fs, b[bw->bpdind]); ++ b = get_blkmap(fs, b[bw->bpdind], &bmi3); + bkref = &b[bw->bptind]; + if(extend) // allocate first data block + *bkref = hole ? 0 : alloc_blk(fs,nod); +@@ -1163,17 +1739,17 @@ + bw->bpdind = 0; + bw->bptind = 0; + bw->bpind++; +- b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); ++ b = get_blkmap(fs, iblk[bw->bpdir], &bmi1); + if(extend) // allocate double indirect block + b[bw->bpind] = alloc_blk(fs,nod); + if(reduce) // free double indirect block + free_blk(fs, b[bw->bpind]); +- b = (uint32*)get_blk(fs, b[bw->bpind]); ++ b = get_blkmap(fs, b[bw->bpind], &bmi2); + if(extend) // allocate single indirect block + b[bw->bpdind] = alloc_blk(fs,nod); + if(reduce) // free indirect block + free_blk(fs, b[bw->bpind]); +- b = (uint32*)get_blk(fs, b[bw->bpdind]); ++ b = get_blkmap(fs, b[bw->bpdind], &bmi3); + bkref = &b[bw->bptind]; + if(extend) // allocate first block + *bkref = hole ? 0 : alloc_blk(fs,nod); +@@ -1184,56 +1760,105 @@ + error_msg_and_die("file too big !"); + /* End change for walking triple indirection */ + +- if(*bkref) +- { ++ bk = *bkref; ++ if (bmi3) ++ put_blkmap(bmi3); ++ if (bmi2) ++ put_blkmap(bmi2); ++ if (bmi1) ++ put_blkmap(bmi1); ++ ++ if(bk) ++ { ++ blk_info *bi; ++ gd_info *gi; ++ uint8 *block; + bw->bnum++; +- if(!reduce && !allocated(GRP_GET_BLOCK_BITMAP(fs,*bkref), GRP_BBM_OFFSET(fs,*bkref))) +- error_msg_and_die("[block %d of inode %d is unallocated !]", *bkref, nod); ++ block = GRP_GET_BLOCK_BITMAP(fs,bk,&bi,&gi); ++ if(!reduce && !allocated(block, GRP_BBM_OFFSET(fs,bk))) ++ error_msg_and_die("[block %d of inode %d is unallocated !]", bk, nod); ++ GRP_PUT_BLOCK_BITMAP(bi, gi); + } + if(extend) +- get_nod(fs, nod)->i_blocks = bw->bnum * INOBLK; +- return *bkref; ++ inod->i_blocks = bw->bnum * INOBLK; ++ put_nod(ni); ++ return bk; + } + +-// add blocks to an inode (file/dir/etc...) +-static void +-extend_blk(filesystem *fs, uint32 nod, block b, int amount) ++typedef struct + { +- int create = amount; +- blockwalker bw, lbw; +- uint32 bk; +- init_bw(&bw); +- if(amount < 0) +- { +- uint32 i; +- for(i = 0; i < get_nod(fs, nod)->i_blocks / INOBLK + amount; i++) +- walk_bw(fs, nod, &bw, 0, 0); +- while(walk_bw(fs, nod, &bw, &create, 0) != WALK_END) ++ blockwalker bw; ++ uint32 nod; ++ nod_info *ni; ++ inode *inod; ++} inode_pos; ++#define INODE_POS_TRUNCATE 0 ++#define INODE_POS_EXTEND 1 ++ ++// Call this to set up an ipos structure for future use with ++// extend_inode_blk to append blocks to the given inode. If ++// op is INODE_POS_TRUNCATE, the inode is truncated to zero size. ++// If op is INODE_POS_EXTEND, the position is moved to the end ++// of the inode's data blocks. ++// Call inode_pos_finish when done with the inode_pos structure. ++static void ++inode_pos_init(filesystem *fs, inode_pos *ipos, uint32 nod, int op, ++ blockwalker *endbw) ++{ ++ blockwalker lbw; ++ ++ init_bw(&ipos->bw); ++ ipos->nod = nod; ++ ipos->inod = get_nod(fs, nod, &ipos->ni); ++ if (op == INODE_POS_TRUNCATE) { ++ int32 create = -1; ++ while(walk_bw(fs, nod, &ipos->bw, &create, 0) != WALK_END) + /*nop*/; +- get_nod(fs, nod)->i_blocks += amount * INOBLK; ++ ipos->inod->i_blocks = 0; + } +- else ++ ++ if (endbw) ++ ipos->bw = *endbw; ++ else { ++ /* Seek to the end */ ++ init_bw(&ipos->bw); ++ lbw = ipos->bw; ++ while(walk_bw(fs, nod, &ipos->bw, 0, 0) != WALK_END) ++ lbw = ipos->bw; ++ ipos->bw = lbw; ++ } ++} ++ ++// Clean up the inode_pos structure. ++static void ++inode_pos_finish(filesystem *fs, inode_pos *ipos) ++{ ++ put_nod(ipos->ni); ++} ++ ++// add blocks to an inode (file/dir/etc...) at the given position. ++// This will only work when appending to the end of an inode. ++static void ++extend_inode_blk(filesystem *fs, inode_pos *ipos, block b, int amount) ++{ ++ uint32 bk; ++ uint32 pos; ++ ++ if (amount < 0) ++ error_msg_and_die("extend_inode_blk: Got negative amount"); ++ ++ for (pos = 0; amount; pos += BLOCKSIZE) + { +- lbw = bw; +- while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END) +- lbw = bw; +- bw = lbw; +- while(create) +- { +- int i, copyb = 0; +- if(!(fs->sb.s_reserved[200] & OP_HOLES)) +- copyb = 1; +- else +- for(i = 0; i < BLOCKSIZE / 4; i++) +- if(((int32*)(b + BLOCKSIZE * (amount - create)))[i]) +- { +- copyb = 1; +- break; +- } +- if((bk = walk_bw(fs, nod, &bw, &create, !copyb)) == WALK_END) +- break; +- if(copyb) +- memcpy(get_blk(fs, bk), b + BLOCKSIZE * (amount - create - 1), BLOCKSIZE); ++ int hole = (fs->holes && is_blk_empty(b + pos)); ++ ++ bk = walk_bw(fs, ipos->nod, &ipos->bw, &amount, hole); ++ if (bk == WALK_END) ++ error_msg_and_die("extend_inode_blk: extend failed"); ++ if (!hole) { ++ blk_info *bi; ++ uint8 *block = get_blk(fs, bk, &bi); ++ memcpy(block, b + pos, BLOCKSIZE); ++ put_blk(bi); + } + } + } +@@ -1242,15 +1867,17 @@ + static void + add2dir(filesystem *fs, uint32 dnod, uint32 nod, const char* name) + { +- blockwalker bw; ++ blockwalker bw, lbw; + uint32 bk; +- uint8 *b; + directory *d; ++ dirwalker dw; + int reclen, nlen; + inode *node; + inode *pnode; ++ nod_info *dni, *ni; ++ inode_pos ipos; + +- pnode = get_nod(fs, dnod); ++ pnode = get_nod(fs, dnod, &dni); + if((pnode->i_mode & FM_IFMT) != FM_IFDIR) + error_msg_and_die("can't add '%s' to a non-directory", name); + if(!*name) +@@ -1262,52 +1889,52 @@ + if(reclen > BLOCKSIZE) + error_msg_and_die("bad name '%s' (too long)", name); + init_bw(&bw); ++ lbw = bw; + while((bk = walk_bw(fs, dnod, &bw, 0, 0)) != WALK_END) // for all blocks in dir + { +- b = get_blk(fs, bk); + // for all dir entries in block +- for(d = (directory*)b; (int8*)d + sizeof(*d) < (int8*)b + BLOCKSIZE; d = (directory*)((int8*)d + d->d_rec_len)) ++ for(d = get_dir(fs, bk, &dw); d; d = next_dir(&dw)) + { + // if empty dir entry, large enough, use it + if((!d->d_inode) && (d->d_rec_len >= reclen)) + { + d->d_inode = nod; +- node = get_nod(fs, nod); ++ node = get_nod(fs, nod, &ni); ++ dir_set_name(&dw, name, nlen); ++ put_dir(&dw); + node->i_links_count++; +- d->d_name_len = nlen; +- strncpy(d->d_name, name, nlen); +- return; ++ put_nod(ni); ++ goto out; + } + // if entry with enough room (last one?), shrink it & use it + if(d->d_rec_len >= (sizeof(directory) + rndup(d->d_name_len, 4) + reclen)) + { +- reclen = d->d_rec_len; +- d->d_rec_len = sizeof(directory) + rndup(d->d_name_len, 4); +- reclen -= d->d_rec_len; +- d = (directory*) (((int8*)d) + d->d_rec_len); +- d->d_rec_len = reclen; +- d->d_inode = nod; +- node = get_nod(fs, nod); ++ d = shrink_dir(&dw, nod, name, nlen); ++ put_dir(&dw); ++ node = get_nod(fs, nod, &ni); + node->i_links_count++; +- d->d_name_len = nlen; +- strncpy(d->d_name, name, nlen); +- return; ++ put_nod(ni); ++ goto out; + } + } ++ put_dir(&dw); ++ lbw = bw; + } + // we found no free entry in the directory, so we add a block +- if(!(b = get_workblk())) +- error_msg_and_die("get_workblk() failed."); +- d = (directory*)b; +- d->d_inode = nod; +- node = get_nod(fs, nod); ++ node = get_nod(fs, nod, &ni); ++ d = new_dir(fs, nod, name, nlen, &dw); + node->i_links_count++; +- d->d_rec_len = BLOCKSIZE; +- d->d_name_len = nlen; +- strncpy(d->d_name, name, nlen); +- extend_blk(fs, dnod, b, 1); +- get_nod(fs, dnod)->i_size += BLOCKSIZE; +- free_workblk(b); ++ put_nod(ni); ++ next_dir(&dw); // Force the data into the buffer ++ ++ inode_pos_init(fs, &ipos, dnod, INODE_POS_EXTEND, &lbw); ++ extend_inode_blk(fs, &ipos, dir_data(&dw), 1); ++ inode_pos_finish(fs, &ipos); ++ ++ put_dir(&dw); ++ pnode->i_size += BLOCKSIZE; ++out: ++ put_nod(dni); + } + + // find an entry in a directory +@@ -1321,11 +1948,13 @@ + while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END) + { + directory *d; +- uint8 *b; +- b = get_blk(fs, bk); +- for(d = (directory*)b; (int8*)d + sizeof(*d) < (int8*)b + BLOCKSIZE; d = (directory*)((int8*)d + d->d_rec_len)) +- if(d->d_inode && (nlen == d->d_name_len) && !strncmp(d->d_name, name, nlen)) ++ dirwalker dw; ++ for (d = get_dir(fs, bk, &dw); d; d=next_dir(&dw)) ++ if(d->d_inode && (nlen == d->d_name_len) && !strncmp(dir_name(&dw), name, nlen)) { ++ put_dir(&dw); + return d->d_inode; ++ } ++ put_dir(&dw); + } + return 0; + } +@@ -1356,47 +1985,55 @@ + return nod; + } + ++// chmod an inode ++void ++chmod_fs(filesystem *fs, uint32 nod, uint16 mode, uint16 uid, uint16 gid) ++{ ++ inode *node; ++ nod_info *ni; ++ node = get_nod(fs, nod, &ni); ++ node->i_mode = (node->i_mode & ~FM_IMASK) | (mode & FM_IMASK); ++ node->i_uid = uid; ++ node->i_gid = gid; ++ put_nod(ni); ++} ++ + // create a simple inode + static uint32 + mknod_fs(filesystem *fs, uint32 parent_nod, const char *name, uint16 mode, uint16 uid, uint16 gid, uint8 major, uint8 minor, uint32 ctime, uint32 mtime) + { + uint32 nod; + inode *node; +- if((nod = find_dir(fs, parent_nod, name))) +- { +- node = get_nod(fs, nod); +- if((node->i_mode & FM_IFMT) != (mode & FM_IFMT)) +- error_msg_and_die("node '%s' already exists and isn't of the same type", name); +- node->i_mode = mode; +- } +- else ++ nod_info *ni; ++ gd_info *gi; ++ ++ nod = alloc_nod(fs); ++ node = get_nod(fs, nod, &ni); ++ node->i_mode = mode; ++ add2dir(fs, parent_nod, nod, name); ++ switch(mode & FM_IFMT) + { +- nod = alloc_nod(fs); +- node = get_nod(fs, nod); +- node->i_mode = mode; +- add2dir(fs, parent_nod, nod, name); +- switch(mode & FM_IFMT) +- { +- case FM_IFLNK: +- mode = FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO; +- break; +- case FM_IFBLK: +- case FM_IFCHR: +- ((uint8*)get_nod(fs, nod)->i_block)[0] = minor; +- ((uint8*)get_nod(fs, nod)->i_block)[1] = major; +- break; +- case FM_IFDIR: +- add2dir(fs, nod, nod, "."); +- add2dir(fs, nod, parent_nod, ".."); +- fs->gd[GRP_GROUP_OF_INODE(fs,nod)].bg_used_dirs_count++; +- break; +- } ++ case FM_IFLNK: ++ mode = FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO; ++ break; ++ case FM_IFBLK: ++ case FM_IFCHR: ++ ((uint8*)node->i_block)[0] = minor; ++ ((uint8*)node->i_block)[1] = major; ++ break; ++ case FM_IFDIR: ++ add2dir(fs, nod, nod, "."); ++ add2dir(fs, nod, parent_nod, ".."); ++ get_gd(fs,GRP_GROUP_OF_INODE(fs,nod),&gi)->bg_used_dirs_count++; ++ put_gd(gi); ++ break; + } + node->i_uid = uid; + node->i_gid = gid; + node->i_atime = mtime; + node->i_ctime = ctime; + node->i_mtime = mtime; ++ put_nod(ni); + return nod; + } + +@@ -1413,33 +2050,73 @@ + mklink_fs(filesystem *fs, uint32 parent_nod, const char *name, size_t size, uint8 *b, uid_t uid, gid_t gid, uint32 ctime, uint32 mtime) + { + uint32 nod = mknod_fs(fs, parent_nod, name, FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO, uid, gid, 0, 0, ctime, mtime); +- extend_blk(fs, nod, 0, - (int)get_nod(fs, nod)->i_blocks / INOBLK); +- get_nod(fs, nod)->i_size = size; +- if(size <= 4 * (EXT2_TIND_BLOCK+1)) +- { +- strncpy((char*)get_nod(fs, nod)->i_block, (char*)b, size); ++ nod_info *ni; ++ inode *node = get_nod(fs, nod, &ni); ++ inode_pos ipos; ++ ++ inode_pos_init(fs, &ipos, nod, INODE_POS_TRUNCATE, NULL); ++ node->i_size = size; ++ if(size < 4 * (EXT2_TIND_BLOCK+1)) ++ { ++ strncpy((char*)node->i_block, (char*)b, size); ++ ((char*)node->i_block)[size+1] = '\0'; ++ inode_pos_finish(fs, &ipos); ++ put_nod(ni); + return nod; + } +- extend_blk(fs, nod, b, rndup(size, BLOCKSIZE) / BLOCKSIZE); ++ extend_inode_blk(fs, &ipos, b, rndup(size, BLOCKSIZE) / BLOCKSIZE); ++ inode_pos_finish(fs, &ipos); ++ put_nod(ni); + return nod; + } + ++static void ++fs_upgrade_rev1_largefile(filesystem *fs) ++{ ++ fs->sb->s_rev_level = 1; ++ fs->sb->s_first_ino = EXT2_GOOD_OLD_FIRST_INO; ++ fs->sb->s_inode_size = EXT2_GOOD_OLD_INODE_SIZE; ++} ++ ++#define COPY_BLOCKS 16 ++#define CB_SIZE (COPY_BLOCKS * BLOCKSIZE) ++ + // make a file from a FILE* + static uint32 +-mkfile_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, size_t size, FILE *f, uid_t uid, gid_t gid, uint32 ctime, uint32 mtime) ++mkfile_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, FILE *f, uid_t uid, gid_t gid, uint32 ctime, uint32 mtime) + { + uint8 * b; + uint32 nod = mknod_fs(fs, parent_nod, name, mode|FM_IFREG, uid, gid, 0, 0, ctime, mtime); +- extend_blk(fs, nod, 0, - (int)get_nod(fs, nod)->i_blocks / INOBLK); +- get_nod(fs, nod)->i_size = size; +- if (size) { +- if(!(b = (uint8*)calloc(rndup(size, BLOCKSIZE), 1))) +- error_msg_and_die("not enough mem to read file '%s'", name); +- if(f) +- fread(b, size, 1, f); // FIXME: ugly. use mmap() ... +- extend_blk(fs, nod, b, rndup(size, BLOCKSIZE) / BLOCKSIZE); +- free(b); +- } ++ nod_info *ni; ++ inode *node = get_nod(fs, nod, &ni); ++ off_t size = 0; ++ size_t readbytes; ++ inode_pos ipos; ++ int fullsize; ++ ++ b = malloc(CB_SIZE); ++ if (!b) ++ error_msg_and_die("mkfile_fs: out of memory"); ++ inode_pos_init(fs, &ipos, nod, INODE_POS_TRUNCATE, NULL); ++ readbytes = fread(b, 1, CB_SIZE, f); ++ while (readbytes) { ++ fullsize = rndup(readbytes, BLOCKSIZE); ++ // Fill to end of block with zeros. ++ memset(b + readbytes, 0, fullsize - readbytes); ++ extend_inode_blk(fs, &ipos, b, fullsize / BLOCKSIZE); ++ size += readbytes; ++ readbytes = fread(b, 1, CB_SIZE, f); ++ } ++ if (size > 0x7fffffff) { ++ if (fs->sb->s_rev_level < 1) ++ fs_upgrade_rev1_largefile(fs); ++ fs->sb->s_feature_ro_compat |= EXT2_FEATURE_RO_COMPAT_LARGE_FILE; ++ } ++ node->i_dir_acl = size >> 32; ++ node->i_size = size; ++ inode_pos_finish(fs, &ipos); ++ put_nod(ni); ++ free(b); + return nod; + } + +@@ -1591,13 +2268,24 @@ + dname = malloc(len + 1); + for(i = start; i < count; i++) + { ++ uint32 oldnod; + SNPRINTF(dname, len, "%s%lu", name, i); +- mknod_fs(fs, nod, dname, mode, uid, gid, major, minor + (i * increment - start), ctime, mtime); ++ oldnod = find_dir(fs, nod, dname); ++ if(oldnod) ++ chmod_fs(fs, oldnod, mode, uid, gid); ++ else ++ mknod_fs(fs, nod, dname, mode, uid, gid, major, minor + (i * increment - start), ctime, mtime); + } + free(dname); + } + else +- mknod_fs(fs, nod, name, mode, uid, gid, major, minor, ctime, mtime); ++ { ++ uint32 oldnod = find_dir(fs, nod, name); ++ if(oldnod) ++ chmod_fs(fs, oldnod, mode, uid, gid); ++ else ++ mknod_fs(fs, nod, name, mode, uid, gid, major, minor, ctime, mtime); ++ } + } + } + if (line) +@@ -1643,6 +2331,10 @@ + switch(st.st_mode & S_IFMT) + { + case S_IFLNK: ++ if((st.st_mode & S_IFMT) == S_IFREG || st.st_size >= 4 * (EXT2_TIND_BLOCK+1)) ++ stats->nblocks += (st.st_size + BLOCKSIZE - 1) / BLOCKSIZE; ++ stats->ninodes++; ++ break; + case S_IFREG: + if((st.st_mode & S_IFMT) == S_IFREG || st.st_size > 4 * (EXT2_TIND_BLOCK+1)) + stats->nblocks += (st.st_size + BLOCKSIZE - 1) / BLOCKSIZE; +@@ -1657,19 +2349,33 @@ + if(chdir(dent->d_name) < 0) + perror_msg_and_die(dent->d_name); + add2fs_from_dir(fs, this_nod, squash_uids, squash_perms, fs_timestamp, stats); +- chdir(".."); ++ if (chdir("..") == -1) ++ perror_msg_and_die(".."); ++ + break; + default: + break; + } + else + { ++ if((nod = find_dir(fs, this_nod, name))) ++ { ++ error_msg("ignoring duplicate entry %s", name); ++ if(S_ISDIR(st.st_mode)) { ++ if(chdir(dent->d_name) < 0) ++ perror_msg_and_die(name); ++ add2fs_from_dir(fs, nod, squash_uids, squash_perms, fs_timestamp, stats); ++ if (chdir("..") == -1) ++ perror_msg_and_die(".."); ++ } ++ continue; ++ } + save_nod = 0; + /* Check for hardlinks */ + if (!S_ISDIR(st.st_mode) && !S_ISLNK(st.st_mode) && st.st_nlink > 1) { +- int32 hdlink = is_hardlink(st.st_ino); ++ int32 hdlink = is_hardlink(fs, st.st_ino); + if (hdlink >= 0) { +- add2dir(fs, this_nod, hdlinks.hdl[hdlink].dst_nod, name); ++ add2dir(fs, this_nod, fs->hdlinks.hdl[hdlink].dst_nod, name); + continue; + } else { + save_nod = 1; +@@ -1697,8 +2403,12 @@ + free(lnk); + break; + case S_IFREG: +- fh = xfopen(dent->d_name, "rb"); +- nod = mkfile_fs(fs, this_nod, name, mode, st.st_size, fh, uid, gid, ctime, mtime); ++ fh = fopen(dent->d_name, "rb"); ++ if (!fh) { ++ error_msg("Unable to open file %s", dent->d_name); ++ break; ++ } ++ nod = mkfile_fs(fs, this_nod, name, mode, fh, uid, gid, ctime, mtime); + fclose(fh); + break; + case S_IFDIR: +@@ -1706,199 +2416,128 @@ + if(chdir(dent->d_name) < 0) + perror_msg_and_die(name); + add2fs_from_dir(fs, nod, squash_uids, squash_perms, fs_timestamp, stats); +- chdir(".."); ++ if (chdir("..") == -1) ++ perror_msg_and_die(".."); + break; + default: + error_msg("ignoring entry %s", name); + } + if (save_nod) { +- if (hdlinks.count == hdlink_cnt) { +- if ((hdlinks.hdl = +- realloc (hdlinks.hdl, (hdlink_cnt + HDLINK_CNT) * ++ if (fs->hdlinks.count == fs->hdlink_cnt) { ++ if ((fs->hdlinks.hdl = ++ realloc (fs->hdlinks.hdl, (fs->hdlink_cnt + HDLINK_CNT) * + sizeof (struct hdlink_s))) == NULL) { + error_msg_and_die("Not enough memory"); + } +- hdlink_cnt += HDLINK_CNT; ++ fs->hdlink_cnt += HDLINK_CNT; + } +- hdlinks.hdl[hdlinks.count].src_inode = st.st_ino; +- hdlinks.hdl[hdlinks.count].dst_nod = nod; +- hdlinks.count++; ++ fs->hdlinks.hdl[fs->hdlinks.count].src_inode = st.st_ino; ++ fs->hdlinks.hdl[fs->hdlinks.count].dst_nod = nod; ++ fs->hdlinks.count++; + } + } + } + closedir(dh); + } + +-// endianness swap of x-indirect blocks ++// Copy size blocks from src to dst, putting holes in the output ++// file (if possible) if the input block is all zeros. ++// Copy size blocks from src to dst, putting holes in the output ++// file (if possible) if the input block is all zeros. + static void +-swap_goodblocks(filesystem *fs, inode *nod) ++copy_file(filesystem *fs, FILE *dst, FILE *src, size_t size) + { +- uint32 i,j; +- int done=0; +- uint32 *b,*b2; ++ uint8 *b; + +- uint32 nblk = nod->i_blocks / INOBLK; +- if((nod->i_size && !nblk) || ((nod->i_mode & FM_IFBLK) == FM_IFBLK) || ((nod->i_mode & FM_IFCHR) == FM_IFCHR)) +- for(i = 0; i <= EXT2_TIND_BLOCK; i++) +- nod->i_block[i] = swab32(nod->i_block[i]); +- if(nblk <= EXT2_IND_BLOCK) +- return; +- swap_block(get_blk(fs, nod->i_block[EXT2_IND_BLOCK])); +- if(nblk <= EXT2_DIND_BLOCK + BLOCKSIZE/4) +- return; +- /* Currently this will fail b'cos the number of blocks as stored +- in i_blocks also includes the indirection blocks (see +- walk_bw). But this function assumes that i_blocks only +- stores the count of data blocks ( Actually according to +- "Understanding the Linux Kernel" (Table 17-3 p502 1st Ed) +- i_blocks IS supposed to store the count of data blocks). so +- with a file of size 268K nblk would be 269.The above check +- will be false even though double indirection hasn't been +- started.This is benign as 0 means block 0 which has been +- zeroed out and therefore points back to itself from any offset +- */ +- // FIXME: I have fixed that, but I have the feeling the rest of +- // ths function needs to be fixed for the same reasons - Xav +- assert(nod->i_block[EXT2_DIND_BLOCK] != 0); +- for(i = 0; i < BLOCKSIZE/4; i++) +- if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + (BLOCKSIZE/4)*i ) +- swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i])); +- swap_block(get_blk(fs, nod->i_block[EXT2_DIND_BLOCK])); +- if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4 + BLOCKSIZE/4 * BLOCKSIZE/4) +- return; +- /* Adding support for triple indirection */ +- b = (uint32*)get_blk(fs,nod->i_block[EXT2_TIND_BLOCK]); +- for(i=0;i < BLOCKSIZE/4 && !done ; i++) { +- b2 = (uint32*)get_blk(fs,b[i]); +- for(j=0; j ( EXT2_IND_BLOCK + BLOCKSIZE/4 + +- (BLOCKSIZE/4)*(BLOCKSIZE/4) + +- i*(BLOCKSIZE/4)*(BLOCKSIZE/4) + +- j*(BLOCKSIZE/4)) ) +- swap_block(get_blk(fs,b2[j])); +- else { +- done = 1; +- break; +- } ++ b = malloc(BLOCKSIZE); ++ if (!b) ++ error_msg_and_die("copy_file: out of memory"); ++ if (fseek(src, 0, SEEK_SET)) ++ perror_msg_and_die("fseek"); ++ if (ftruncate(fileno(dst), 0)) ++ perror_msg_and_die("copy_file: ftruncate"); ++ while (size > 0) { ++ if (fread(b, BLOCKSIZE, 1, src) != 1) ++ perror_msg_and_die("copy failed on read"); ++ if ((dst != stdout) && fs->holes && is_blk_empty(b)) { ++ /* Empty block, just skip it */ ++ if (fseek(dst, BLOCKSIZE, SEEK_CUR)) ++ perror_msg_and_die("fseek"); ++ } else { ++ if (fwrite(b, BLOCKSIZE, 1, dst) != 1) ++ perror_msg_and_die("copy failed on write"); + } +- swap_block((uint8 *)b2); ++ size--; + } +- swap_block((uint8 *)b); +- return; ++ free(b); + } + +-static void +-swap_badblocks(filesystem *fs, inode *nod) ++// Allocate a new filesystem structure, allocate internal memory, ++// and initialize the contents. ++static filesystem * ++alloc_fs(int swapit, char *fname, uint32 nbblocks, FILE *srcfile) + { +- uint32 i,j; +- int done=0; +- uint32 *b,*b2; ++ filesystem *fs; ++ struct stat srcstat, dststat; + +- uint32 nblk = nod->i_blocks / INOBLK; +- if((nod->i_size && !nblk) || ((nod->i_mode & FM_IFBLK) == FM_IFBLK) || ((nod->i_mode & FM_IFCHR) == FM_IFCHR)) +- for(i = 0; i <= EXT2_TIND_BLOCK; i++) +- nod->i_block[i] = swab32(nod->i_block[i]); +- if(nblk <= EXT2_IND_BLOCK) +- return; +- swap_block(get_blk(fs, nod->i_block[EXT2_IND_BLOCK])); +- if(nblk <= EXT2_DIND_BLOCK + BLOCKSIZE/4) +- return; +- /* See comment in swap_goodblocks */ +- assert(nod->i_block[EXT2_DIND_BLOCK] != 0); +- swap_block(get_blk(fs, nod->i_block[EXT2_DIND_BLOCK])); +- for(i = 0; i < BLOCKSIZE/4; i++) +- if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + (BLOCKSIZE/4)*i ) +- swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i])); +- if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4 + BLOCKSIZE/4 * BLOCKSIZE/4) +- return; +- /* Adding support for triple indirection */ +- b = (uint32*)get_blk(fs,nod->i_block[EXT2_TIND_BLOCK]); +- swap_block((uint8 *)b); +- for(i=0;i < BLOCKSIZE/4 && !done ; i++) { +- b2 = (uint32*)get_blk(fs,b[i]); +- swap_block((uint8 *)b2); +- for(j=0; j ( EXT2_IND_BLOCK + BLOCKSIZE/4 + +- (BLOCKSIZE/4)*(BLOCKSIZE/4) + +- i*(BLOCKSIZE/4)*(BLOCKSIZE/4) + +- j*(BLOCKSIZE/4)) ) +- swap_block(get_blk(fs,b2[j])); +- else { +- done = 1; +- break; +- } +- } +- } +- return; +-} ++ fs = malloc(sizeof(*fs)); ++ if (!fs) ++ error_msg_and_die("not enough memory for filesystem"); ++ memset(fs, 0, sizeof(*fs)); ++ fs->swapit = swapit; ++ cache_init(&fs->blks, MAX_FREE_CACHE_BLOCKS, blk_elem_val, blk_freed); ++ cache_init(&fs->gds, MAX_FREE_CACHE_GDS, gd_elem_val, gd_freed); ++ cache_init(&fs->blkmaps, MAX_FREE_CACHE_BLOCKMAPS, ++ blkmap_elem_val, blkmap_freed); ++ cache_init(&fs->inodes, MAX_FREE_CACHE_INODES, ++ inode_elem_val, inode_freed); ++ fs->hdlink_cnt = HDLINK_CNT; ++ fs->hdlinks.hdl = calloc(sizeof(struct hdlink_s), fs->hdlink_cnt); ++ if (!fs->hdlinks.hdl) ++ error_msg_and_die("Not enough memory"); ++ fs->hdlinks.count = 0 ; + +-// endianness swap of the whole filesystem +-static void +-swap_goodfs(filesystem *fs) +-{ +- uint32 i; +- for(i = 1; i < fs->sb.s_inodes_count; i++) +- { +- inode *nod = get_nod(fs, i); +- if(nod->i_mode & FM_IFDIR) +- { +- blockwalker bw; +- uint32 bk; +- init_bw(&bw); +- while((bk = walk_bw(fs, i, &bw, 0, 0)) != WALK_END) +- { +- directory *d; +- uint8 *b; +- b = get_blk(fs, bk); +- for(d = (directory*)b; (int8*)d + sizeof(*d) < (int8*)b + BLOCKSIZE; d = (directory*)((int8*)d + swab16(d->d_rec_len))) +- swap_dir(d); +- } +- } +- swap_goodblocks(fs, nod); +- swap_nod(nod); +- } +- for(i=0;igd[i])); +- swap_sb(&fs->sb); ++ if (strcmp(fname, "-") == 0) ++ fs->f = tmpfile(); ++ else if (srcfile) { ++ if (fstat(fileno(srcfile), &srcstat)) ++ perror_msg_and_die("fstat srcfile"); ++ if (stat(fname, &dststat) == 0 ++ && srcstat.st_ino == dststat.st_ino ++ && srcstat.st_dev == dststat.st_dev) ++ { ++ // source and destination are the same file, don't ++ // truncate or copy, just use the file. ++ fs->f = fopen(fname, "r+b"); ++ } else { ++ fs->f = fopen(fname, "w+b"); ++ if (fs->f) ++ copy_file(fs, fs->f, srcfile, nbblocks); ++ } ++ } else ++ fs->f = fopen(fname, "w+b"); ++ if (!fs->f) ++ perror_msg_and_die("opening %s", fname); ++ return fs; + } + ++/* Make sure the output file is the right size */ + static void +-swap_badfs(filesystem *fs) ++set_file_size(filesystem *fs) + { +- uint32 i; +- swap_sb(&fs->sb); +- for(i=0;igd[i])); +- for(i = 1; i < fs->sb.s_inodes_count; i++) +- { +- inode *nod = get_nod(fs, i); +- swap_nod(nod); +- swap_badblocks(fs, nod); +- if(nod->i_mode & FM_IFDIR) +- { +- blockwalker bw; +- uint32 bk; +- init_bw(&bw); +- while((bk = walk_bw(fs, i, &bw, 0, 0)) != WALK_END) +- { +- directory *d; +- uint8 *b; +- b = get_blk(fs, bk); +- for(d = (directory*)b; (int8*)d + sizeof(*d) < (int8*)b + BLOCKSIZE; d = (directory*)((int8*)d + d->d_rec_len)) +- swap_dir(d); +- } +- } +- } ++ if (ftruncate(fileno(fs->f), ++ ((off_t) fs->sb->s_blocks_count) * BLOCKSIZE)) ++ perror_msg_and_die("set_file_size: ftruncate"); + } + + // initialize an empty filesystem + static filesystem * +-init_fs(int nbblocks, int nbinodes, int nbresrvd, int holes, uint32 fs_timestamp) ++init_fs(int nbblocks, int nbinodes, int nbresrvd, int holes, ++ uint32 fs_timestamp, uint32 creator_os, int swapit, char *fname) + { + uint32 i; + filesystem *fs; +- directory *d; +- uint8 * b; ++ dirwalker dw; + uint32 nod, first_block; + uint32 nbgroups,nbinodes_per_group,overhead_per_group,free_blocks, + free_blocks_per_group,nbblocks_per_group,min_nbgroups; +@@ -1906,6 +2545,11 @@ + uint32 j; + uint8 *bbm,*ibm; + inode *itab0; ++ blk_info *bi; ++ nod_info *ni; ++ groupdescriptor *gd; ++ gd_info *gi; ++ inode_pos ipos; + + if(nbresrvd < 0) + error_msg_and_die("reserved blocks value is invalid. Note: options have changed, see --help or the man page."); +@@ -1919,10 +2563,14 @@ + */ + min_nbgroups = (nbinodes + INODES_PER_GROUP - 1) / INODES_PER_GROUP; + ++ /* On filesystems with 1k block size, the bootloader area uses a full ++ * block. For 2048 and up, the superblock can be fitted into block 0. ++ */ ++ first_block = (BLOCKSIZE == 1024); ++ + /* nbblocks is the total number of blocks in the filesystem. + * a block group can have no more than 8192 blocks. + */ +- first_block = (BLOCKSIZE == 1024); + nbgroups = (nbblocks - first_block + BLOCKS_PER_GROUP - 1) / BLOCKS_PER_GROUP; + if(nbgroups < min_nbgroups) nbgroups = min_nbgroups; + nbblocks_per_group = rndup((nbblocks - first_block + nbgroups - 1)/nbgroups, 8); +@@ -1934,51 +2582,59 @@ + gdsz = rndup(nbgroups*sizeof(groupdescriptor),BLOCKSIZE)/BLOCKSIZE; + itblsz = nbinodes_per_group * sizeof(inode)/BLOCKSIZE; + overhead_per_group = 3 /*sb,bbm,ibm*/ + gdsz + itblsz; +- if((uint32)nbblocks - 1 < overhead_per_group * nbgroups) +- error_msg_and_die("too much overhead, try fewer inodes or more blocks. Note: options have changed, see --help or the man page."); +- free_blocks = nbblocks - overhead_per_group*nbgroups - 1 /*boot block*/; ++ free_blocks = nbblocks - overhead_per_group*nbgroups - first_block; + free_blocks_per_group = nbblocks_per_group - overhead_per_group; ++ if(free_blocks < 0) ++ error_msg_and_die("too much overhead, try fewer inodes or more blocks. Note: options have changed, see --help or the man page."); + +- if(!(fs = (filesystem*)calloc(nbblocks, BLOCKSIZE))) +- error_msg_and_die("not enough memory for filesystem"); ++ fs = alloc_fs(swapit, fname, nbblocks, NULL); ++ fs->sb = calloc(1, SUPERBLOCK_SIZE); ++ if (!fs->sb) ++ error_msg_and_die("error allocating header memory"); + + // create the superblock for an empty filesystem +- fs->sb.s_inodes_count = nbinodes_per_group * nbgroups; +- fs->sb.s_blocks_count = nbblocks; +- fs->sb.s_r_blocks_count = nbresrvd; +- fs->sb.s_free_blocks_count = free_blocks; +- fs->sb.s_free_inodes_count = fs->sb.s_inodes_count - EXT2_FIRST_INO + 1; +- fs->sb.s_first_data_block = first_block; +- fs->sb.s_log_block_size = BLOCKSIZE >> 11; +- fs->sb.s_log_frag_size = BLOCKSIZE >> 11; +- fs->sb.s_blocks_per_group = nbblocks_per_group; +- fs->sb.s_frags_per_group = nbblocks_per_group; +- fs->sb.s_inodes_per_group = nbinodes_per_group; +- fs->sb.s_wtime = fs_timestamp; +- fs->sb.s_magic = EXT2_MAGIC_NUMBER; +- fs->sb.s_lastcheck = fs_timestamp; ++ fs->sb->s_inodes_count = nbinodes_per_group * nbgroups; ++ fs->sb->s_blocks_count = nbblocks; ++ fs->sb->s_r_blocks_count = nbresrvd; ++ fs->sb->s_free_blocks_count = free_blocks; ++ fs->sb->s_free_inodes_count = fs->sb->s_inodes_count - EXT2_FIRST_INO + 1; ++ fs->sb->s_first_data_block = first_block; ++ fs->sb->s_log_block_size = BLOCKSIZE >> 11; ++ fs->sb->s_log_frag_size = BLOCKSIZE >> 11; ++ fs->sb->s_blocks_per_group = nbblocks_per_group; ++ fs->sb->s_frags_per_group = nbblocks_per_group; ++ fs->sb->s_inodes_per_group = nbinodes_per_group; ++ fs->sb->s_wtime = fs_timestamp; ++ fs->sb->s_magic = EXT2_MAGIC_NUMBER; ++ fs->sb->s_lastcheck = fs_timestamp; ++ fs->sb->s_creator_os = creator_os; ++ ++ set_file_size(fs); + + // set up groupdescriptors +- for(i=0, bbmpos=gdsz+2, ibmpos=bbmpos+1, itblpos=ibmpos+1; ++ for(i=0, bbmpos=first_block+1+gdsz, ibmpos=bbmpos+1, itblpos=ibmpos+1; + i free_blocks_per_group) { +- fs->gd[i].bg_free_blocks_count = free_blocks_per_group; ++ gd->bg_free_blocks_count = free_blocks_per_group; + free_blocks -= free_blocks_per_group; + } else { +- fs->gd[i].bg_free_blocks_count = free_blocks; ++ gd->bg_free_blocks_count = free_blocks; + free_blocks = 0; // this is the last block group + } + if(i) +- fs->gd[i].bg_free_inodes_count = nbinodes_per_group; ++ gd->bg_free_inodes_count = nbinodes_per_group; + else +- fs->gd[i].bg_free_inodes_count = nbinodes_per_group - ++ gd->bg_free_inodes_count = nbinodes_per_group - + EXT2_FIRST_INO + 2; +- fs->gd[i].bg_used_dirs_count = 0; +- fs->gd[i].bg_block_bitmap = bbmpos; +- fs->gd[i].bg_inode_bitmap = ibmpos; +- fs->gd[i].bg_inode_table = itblpos; ++ gd->bg_used_dirs_count = 0; ++ gd->bg_block_bitmap = bbmpos; ++ gd->bg_inode_bitmap = ibmpos; ++ gd->bg_inode_table = itblpos; ++ put_gd(gi); + } + + /* Mark non-filesystem blocks and inodes as allocated */ +@@ -1984,110 +2640,143 @@ + /* Mark non-filesystem blocks and inodes as allocated */ + /* Mark system blocks and inodes as allocated */ + for(i = 0; igd[i].bg_block_bitmap); ++ gd = get_gd(fs, i, &gi); ++ bbm = GRP_GET_GROUP_BBM(fs, gd, &bi); + //non-filesystem blocks +- for(j = fs->gd[i].bg_free_blocks_count ++ for(j = gd->bg_free_blocks_count + + overhead_per_group + 1; j <= BLOCKSIZE * 8; j++) + allocate(bbm, j); + //system blocks + for(j = 1; j <= overhead_per_group; j++) + allocate(bbm, j); +- ++ GRP_PUT_GROUP_BBM(bi); ++ + /* Inode bitmap */ +- ibm = get_blk(fs,fs->gd[i].bg_inode_bitmap); ++ ibm = GRP_GET_GROUP_IBM(fs, gd, &bi); + //non-filesystem inodes +- for(j = fs->sb.s_inodes_per_group+1; j <= BLOCKSIZE * 8; j++) ++ for(j = fs->sb->s_inodes_per_group+1; j <= BLOCKSIZE * 8; j++) + allocate(ibm, j); + + //system inodes + if(i == 0) + for(j = 1; j < EXT2_FIRST_INO; j++) + allocate(ibm, j); ++ GRP_PUT_GROUP_IBM(bi); ++ put_gd(gi); + } + + // make root inode and directory + /* We have groups now. Add the root filesystem in group 0 */ + /* Also increment the directory count for group 0 */ +- fs->gd[0].bg_free_inodes_count--; +- fs->gd[0].bg_used_dirs_count = 1; +- itab0 = (inode *)get_blk(fs,fs->gd[0].bg_inode_table); +- itab0[EXT2_ROOT_INO-1].i_mode = FM_IFDIR | FM_IRWXU | FM_IRGRP | FM_IROTH | FM_IXGRP | FM_IXOTH; +- itab0[EXT2_ROOT_INO-1].i_ctime = fs_timestamp; +- itab0[EXT2_ROOT_INO-1].i_mtime = fs_timestamp; +- itab0[EXT2_ROOT_INO-1].i_atime = fs_timestamp; +- itab0[EXT2_ROOT_INO-1].i_size = BLOCKSIZE; +- itab0[EXT2_ROOT_INO-1].i_links_count = 2; +- +- if(!(b = get_workblk())) +- error_msg_and_die("get_workblk() failed."); +- d = (directory*)b; +- d->d_inode = EXT2_ROOT_INO; +- d->d_rec_len = sizeof(directory)+4; +- d->d_name_len = 1; +- strcpy(d->d_name, "."); +- d = (directory*)(b + d->d_rec_len); +- d->d_inode = EXT2_ROOT_INO; +- d->d_rec_len = BLOCKSIZE - (sizeof(directory)+4); +- d->d_name_len = 2; +- strcpy(d->d_name, ".."); +- extend_blk(fs, EXT2_ROOT_INO, b, 1); ++ gd = get_gd(fs, 0, &gi); ++ gd->bg_free_inodes_count--; ++ gd->bg_used_dirs_count = 1; ++ put_gd(gi); ++ itab0 = get_nod(fs, EXT2_ROOT_INO, &ni); ++ itab0->i_mode = FM_IFDIR | FM_IRWXU | FM_IRGRP | FM_IROTH | FM_IXGRP | FM_IXOTH; ++ itab0->i_ctime = fs_timestamp; ++ itab0->i_mtime = fs_timestamp; ++ itab0->i_atime = fs_timestamp; ++ itab0->i_size = BLOCKSIZE; ++ itab0->i_links_count = 2; ++ put_nod(ni); ++ ++ new_dir(fs, EXT2_ROOT_INO, ".", 1, &dw); ++ shrink_dir(&dw, EXT2_ROOT_INO, "..", 2); ++ next_dir(&dw); // Force the data into the buffer ++ inode_pos_init(fs, &ipos, EXT2_ROOT_INO, INODE_POS_EXTEND, NULL); ++ extend_inode_blk(fs, &ipos, dir_data(&dw), 1); ++ inode_pos_finish(fs, &ipos); ++ put_dir(&dw); + +- // make lost+found directory and reserve blocks +- if(fs->sb.s_r_blocks_count) ++ // make lost+found directory ++ if(fs->sb->s_r_blocks_count) + { +- nod = mkdir_fs(fs, EXT2_ROOT_INO, "lost+found", FM_IRWXU, 0, 0, fs_timestamp, fs_timestamp); ++ inode *node; ++ uint8 *b; ++ ++ nod = mkdir_fs(fs, EXT2_ROOT_INO, "lost+found", FM_IRWXU, ++ 0, 0, fs_timestamp, fs_timestamp); ++ b = get_workblk(); + memset(b, 0, BLOCKSIZE); + ((directory*)b)->d_rec_len = BLOCKSIZE; +- /* We run into problems with e2fsck if directory lost+found grows +- * bigger than this. Need to find out why this happens - sundar +- */ +- if (fs->sb.s_r_blocks_count > fs->sb.s_blocks_count * MAX_RESERVED_BLOCKS ) +- fs->sb.s_r_blocks_count = fs->sb.s_blocks_count * MAX_RESERVED_BLOCKS; +- for(i = 1; i < fs->sb.s_r_blocks_count; i++) +- extend_blk(fs, nod, b, 1); +- get_nod(fs, nod)->i_size = fs->sb.s_r_blocks_count * BLOCKSIZE; ++ inode_pos_init(fs, &ipos, nod, INODE_POS_EXTEND, NULL); ++ // It is always 16 blocks to start out with ++ for(i = 1; i < 16; i++) ++ extend_inode_blk(fs, &ipos, b, 1); ++ inode_pos_finish(fs, &ipos); ++ free_workblk(b); ++ node = get_nod(fs, nod, &ni); ++ node->i_size = 16 * BLOCKSIZE; ++ put_nod(ni); + } +- free_workblk(b); + + // administrative info +- fs->sb.s_state = 1; +- fs->sb.s_max_mnt_count = 20; ++ fs->sb->s_state = 1; ++ fs->sb->s_max_mnt_count = 20; + + // options for me +- if(holes) +- fs->sb.s_reserved[200] |= OP_HOLES; ++ fs->holes = holes; + + return fs; + } + + // loads a filesystem from disk + static filesystem * +-load_fs(FILE * fh, int swapit) ++load_fs(FILE *fh, int swapit, char *fname) + { +- size_t fssize; ++ off_t fssize; + filesystem *fs; +- if((fseek(fh, 0, SEEK_END) < 0) || ((ssize_t)(fssize = ftell(fh)) == -1)) ++ ++ if((fseek(fh, 0, SEEK_END) < 0) || ((fssize = ftello(fh)) == -1)) + perror_msg_and_die("input filesystem image"); + rewind(fh); +- fssize = (fssize + BLOCKSIZE - 1) / BLOCKSIZE; ++ if ((fssize % BLOCKSIZE) != 0) ++ error_msg_and_die("Input file not a multiple of block size"); ++ fssize /= BLOCKSIZE; + if(fssize < 16) // totally arbitrary + error_msg_and_die("too small filesystem"); +- if(!(fs = (filesystem*)calloc(fssize, BLOCKSIZE))) +- error_msg_and_die("not enough memory for filesystem"); +- if(fread(fs, BLOCKSIZE, fssize, fh) != fssize) +- perror_msg_and_die("input filesystem image"); ++ fs = alloc_fs(swapit, fname, fssize, fh); ++ ++ /* Read and check the superblock, then read the superblock ++ * and all the group descriptors */ ++ fs->sb = malloc(SUPERBLOCK_SIZE); ++ if (!fs->sb) ++ error_msg_and_die("error allocating header memory"); ++ if (fseek(fs->f, SUPERBLOCK_OFFSET, SEEK_SET)) ++ perror_msg_and_die("fseek"); ++ if (fread(fs->sb, SUPERBLOCK_SIZE, 1, fs->f) != 1) ++ perror_msg_and_die("fread filesystem image superblock"); + if(swapit) +- swap_badfs(fs); +- if(fs->sb.s_rev_level || (fs->sb.s_magic != EXT2_MAGIC_NUMBER)) ++ swap_sb(fs->sb); ++ ++ if((fs->sb->s_rev_level > 1) || (fs->sb->s_magic != EXT2_MAGIC_NUMBER)) + error_msg_and_die("not a suitable ext2 filesystem"); ++ if (fs->sb->s_rev_level > 0) { ++ if (fs->sb->s_first_ino != EXT2_GOOD_OLD_FIRST_INO) ++ error_msg_and_die("First inode incompatible"); ++ if (fs->sb->s_inode_size != EXT2_GOOD_OLD_INODE_SIZE) ++ error_msg_and_die("inode size incompatible"); ++ if (fs->sb->s_feature_compat) ++ error_msg_and_die("Unsupported compat features"); ++ if (fs->sb->s_feature_incompat) ++ error_msg_and_die("Unsupported incompat features"); ++ if (fs->sb->s_feature_ro_compat ++ & ~EXT2_FEATURE_RO_COMPAT_LARGE_FILE) ++ error_msg_and_die("Unsupported ro compat features"); ++ } ++ ++ set_file_size(fs); + return fs; + } + + static void + free_fs(filesystem *fs) + { ++ free(fs->hdlinks.hdl); ++ fclose(fs->f); ++ free(fs->sb); + free(fs); + } + +@@ -2123,16 +2812,23 @@ + { + blockwalker bw; + uint32 bk; +- int32 fsize = get_nod(fs, nod)->i_size; ++ nod_info *ni; ++ inode *node = get_nod(fs, nod, &ni); ++ int32 fsize = node->i_size; ++ blk_info *bi; ++ + init_bw(&bw); + while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END) + { + if(fsize <= 0) + error_msg_and_die("wrong size while saving inode %d", nod); +- if(fwrite(get_blk(fs, bk), (fsize > BLOCKSIZE) ? BLOCKSIZE : fsize, 1, f) != 1) ++ if(fwrite(get_blk(fs, bk, &bi), ++ (fsize > BLOCKSIZE) ? BLOCKSIZE : fsize, 1, f) != 1) + error_msg_and_die("error while saving inode %d", nod); ++ put_blk(bi); + fsize -= BLOCKSIZE; + } ++ put_nod(ni); + } + + +@@ -2141,8 +2837,11 @@ + print_dev(filesystem *fs, uint32 nod) + { + int minor, major; +- minor = ((uint8*)get_nod(fs, nod)->i_block)[0]; +- major = ((uint8*)get_nod(fs, nod)->i_block)[1]; ++ nod_info *ni; ++ inode *node = get_nod(fs, nod, &ni); ++ minor = ((uint8*)node->i_block)[0]; ++ major = ((uint8*)node->i_block)[1]; ++ put_nod(ni); + printf("major: %d, minor: %d\n", major, minor); + } + +@@ -2157,17 +2856,15 @@ + while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END) + { + directory *d; +- uint8 *b; +- b = get_blk(fs, bk); +- for(d = (directory*)b; (int8*)d + sizeof(*d) < (int8*)b + BLOCKSIZE; d = (directory*)((int8*)d + d->d_rec_len)) ++ dirwalker dw; ++ for (d = get_dir(fs, bk, &dw); d; d = next_dir(&dw)) + if(d->d_inode) + { +- int i; + printf("entry '"); +- for(i = 0; i < d->d_name_len; i++) +- putchar(d->d_name[i]); ++ fwrite(dir_name(&dw), 1, d->d_name_len, stdout); + printf("' (inode %d): rec_len: %d (name_len: %d)\n", d->d_inode, d->d_rec_len, d->d_name_len); + } ++ put_dir(&dw); + } + } + +@@ -2175,14 +2872,18 @@ + static void + print_link(filesystem *fs, uint32 nod) + { +- if(!get_nod(fs, nod)->i_blocks) +- printf("links to '%s'\n", (char*)get_nod(fs, nod)->i_block); ++ nod_info *ni; ++ inode *node = get_nod(fs, nod, &ni); ++ ++ if(!node->i_blocks) ++ printf("links to '%s'\n", (char*)node->i_block); + else + { + printf("links to '"); + write_blocks(fs, nod, stdout); + printf("'\n"); + } ++ put_nod(ni); + } + + // make a ls-like printout of permissions +@@ -2251,8 +2952,13 @@ + { + char *s; + char perms[11]; +- if(!get_nod(fs, nod)->i_mode) +- return; ++ nod_info *ni; ++ inode *node = get_nod(fs, nod, &ni); ++ blk_info *bi; ++ gd_info *gi; ++ ++ if(!node->i_mode) ++ goto out; + switch(nod) + { + case EXT2_BAD_INO: +@@ -2274,15 +2980,18 @@ + default: + s = (nod >= EXT2_FIRST_INO) ? "normal" : "unknown reserved"; + } +- printf("inode %d (%s, %d links): ", nod, s, get_nod(fs, nod)->i_links_count); +- if(!allocated(GRP_GET_INODE_BITMAP(fs,nod), GRP_IBM_OFFSET(fs,nod))) ++ printf("inode %d (%s, %d links): ", nod, s, node->i_links_count); ++ if(!allocated(GRP_GET_INODE_BITMAP(fs,nod,&bi,&gi), GRP_IBM_OFFSET(fs,nod))) + { ++ GRP_PUT_INODE_BITMAP(bi,gi); + printf("unallocated\n"); +- return; ++ goto out; + } +- make_perms(get_nod(fs, nod)->i_mode, perms); +- printf("%s, size: %d byte%s (%d block%s)\n", perms, plural(get_nod(fs, nod)->i_size), plural(get_nod(fs, nod)->i_blocks / INOBLK)); +- switch(get_nod(fs, nod)->i_mode & FM_IFMT) ++ GRP_PUT_INODE_BITMAP(bi,gi); ++ make_perms(node->i_mode, perms); ++ printf("%s, size: %d byte%s (%d block%s)\n", perms, ++ plural(node->i_size), plural(node->i_blocks / INOBLK)); ++ switch(node->i_mode & FM_IFMT) + { + case FM_IFSOCK: + list_blocks(fs, nod); +@@ -2310,6 +3019,8 @@ + list_blocks(fs, nod); + } + printf("Done with inode %d\n",nod); ++out: ++ put_nod(ni); + } + + // describes various fields in a filesystem +@@ -2317,49 +3028,65 @@ + print_fs(filesystem *fs) + { + uint32 i; ++ blk_info *bi; ++ groupdescriptor *gd; ++ gd_info *gi; + uint8 *ibm; + + printf("%d blocks (%d free, %d reserved), first data block: %d\n", +- fs->sb.s_blocks_count, fs->sb.s_free_blocks_count, +- fs->sb.s_r_blocks_count, fs->sb.s_first_data_block); +- printf("%d inodes (%d free)\n", fs->sb.s_inodes_count, +- fs->sb.s_free_inodes_count); ++ fs->sb->s_blocks_count, fs->sb->s_free_blocks_count, ++ fs->sb->s_r_blocks_count, fs->sb->s_first_data_block); ++ printf("%d inodes (%d free)\n", fs->sb->s_inodes_count, ++ fs->sb->s_free_inodes_count); + printf("block size = %d, frag size = %d\n", +- fs->sb.s_log_block_size ? (fs->sb.s_log_block_size << 11) : 1024, +- fs->sb.s_log_frag_size ? (fs->sb.s_log_frag_size << 11) : 1024); ++ fs->sb->s_log_block_size ? (fs->sb->s_log_block_size << 11) : 1024, ++ fs->sb->s_log_frag_size ? (fs->sb->s_log_frag_size << 11) : 1024); + printf("number of groups: %d\n",GRP_NBGROUPS(fs)); + printf("%d blocks per group,%d frags per group,%d inodes per group\n", +- fs->sb.s_blocks_per_group, fs->sb.s_frags_per_group, +- fs->sb.s_inodes_per_group); ++ fs->sb->s_blocks_per_group, fs->sb->s_frags_per_group, ++ fs->sb->s_inodes_per_group); + printf("Size of inode table: %d blocks\n", +- (int)(fs->sb.s_inodes_per_group * sizeof(inode) / BLOCKSIZE)); ++ (int)(fs->sb->s_inodes_per_group * sizeof(inode) / BLOCKSIZE)); + for (i = 0; i < GRP_NBGROUPS(fs); i++) { + printf("Group No: %d\n", i+1); ++ gd = get_gd(fs, i, &gi); + printf("block bitmap: block %d,inode bitmap: block %d, inode table: block %d\n", +- fs->gd[i].bg_block_bitmap, fs->gd[i].bg_inode_bitmap, +- fs->gd[i].bg_inode_table); ++ gd->bg_block_bitmap, ++ gd->bg_inode_bitmap, ++ gd->bg_inode_table); + printf("block bitmap allocation:\n"); +- print_bm(GRP_GET_GROUP_BBM(fs, i),fs->sb.s_blocks_per_group); ++ print_bm(GRP_GET_GROUP_BBM(fs, gd, &bi),fs->sb->s_blocks_per_group); ++ GRP_PUT_GROUP_BBM(bi); + printf("inode bitmap allocation:\n"); +- ibm = GRP_GET_GROUP_IBM(fs, i); +- print_bm(ibm, fs->sb.s_inodes_per_group); +- for (i = 1; i <= fs->sb.s_inodes_per_group; i++) ++ ibm = GRP_GET_GROUP_IBM(fs, gd, &bi); ++ print_bm(ibm, fs->sb->s_inodes_per_group); ++ for (i = 1; i <= fs->sb->s_inodes_per_group; i++) + if (allocated(ibm, i)) + print_inode(fs, i); ++ GRP_PUT_GROUP_IBM(bi); ++ put_gd(gi); + } + } + + static void +-dump_fs(filesystem *fs, FILE * fh, int swapit) ++finish_fs(filesystem *fs) + { +- uint32 nbblocks = fs->sb.s_blocks_count; +- fs->sb.s_reserved[200] = 0; +- if(swapit) +- swap_goodfs(fs); +- if(fwrite(fs, BLOCKSIZE, nbblocks, fh) < nbblocks) +- perror_msg_and_die("output filesystem image"); +- if(swapit) +- swap_badfs(fs); ++ if (cache_flush(&fs->inodes)) ++ error_msg_and_die("entry mismatch on inode cache flush"); ++ if (cache_flush(&fs->blkmaps)) ++ error_msg_and_die("entry mismatch on blockmap cache flush"); ++ if (cache_flush(&fs->gds)) ++ error_msg_and_die("entry mismatch on gd cache flush"); ++ if (cache_flush(&fs->blks)) ++ error_msg_and_die("entry mismatch on block cache flush"); ++ if(fs->swapit) ++ swap_sb(fs->sb); ++ if (fseek(fs->f, SUPERBLOCK_OFFSET, SEEK_SET)) ++ perror_msg_and_die("fseek"); ++ if(fwrite(fs->sb, SUPERBLOCK_SIZE, 1, fs->f) != 1) ++ perror_msg_and_die("output filesystem superblock"); ++ if(fs->swapit) ++ swap_sb(fs->sb); + } + + static void +@@ -2419,10 +3146,12 @@ + " -x, --starting-image \n" + " -d, --root \n" + " -D, --devtable \n" ++ " -B, --block-size \n" + " -b, --size-in-blocks \n" + " -i, --bytes-per-inode \n" + " -N, --number-of-inodes \n" + " -m, --reserved-percentage \n" ++ " -o, --creator-os 'linux' (default), 'hurd', 'freebsd' or number.\n" + " -g, --block-map Generate a block map file for this path.\n" + " -e, --fill-value Fill unallocated blocks with value.\n" + " -z, --allow-holes Allow files with holes.\n" +@@ -2444,15 +3173,34 @@ + extern char* optarg; + extern int optind, opterr, optopt; + ++// parse the value for -o ++int ++lookup_creator_os(const char *name) ++{ ++ if (isdigit (*name)) ++ return atoi(name); ++ else if (strcasecmp(name, "linux") == 0) ++ return EXT2_OS_LINUX; ++ else if (strcasecmp(name, "GNU") == 0 || strcasecmp(name, "hurd") == 0) ++ return EXT2_OS_HURD; ++ else if (strcasecmp(name, "freebsd") == 0) ++ return EXT2_OS_FREEBSD; ++ else if (strcasecmp(name, "lites") == 0) ++ return EXT2_OS_LITES; ++ else ++ return EXT2_OS_LINUX; ++} ++ + int + main(int argc, char **argv) + { +- int nbblocks = -1; ++ long long nbblocks = -1; + int nbinodes = -1; + int nbresrvd = -1; + float bytes_per_inode = -1; + float reserved_frac = -1; + int fs_timestamp = -1; ++ int creator_os = CREATOR_OS; + char * fsout = "-"; + char * fsin = 0; + char * dopt[MAX_DOPT]; +@@ -2466,6 +3214,7 @@ + int squash_perms = 0; + uint16 endian = 1; + int bigendian = !*(char*)&endian; ++ char *volumelabel = NULL; + filesystem *fs; + int i; + int c; +@@ -2476,13 +3225,16 @@ + { "starting-image", required_argument, NULL, 'x' }, + { "root", required_argument, NULL, 'd' }, + { "devtable", required_argument, NULL, 'D' }, ++ { "block-size", required_argument, NULL, 'B' }, + { "size-in-blocks", required_argument, NULL, 'b' }, + { "bytes-per-inode", required_argument, NULL, 'i' }, + { "number-of-inodes", required_argument, NULL, 'N' }, ++ { "volume-label", required_argument, NULL, 'L' }, + { "reserved-percentage", required_argument, NULL, 'm' }, ++ { "creator-os", required_argument, NULL, 'o' }, + { "block-map", required_argument, NULL, 'g' }, + { "fill-value", required_argument, NULL, 'e' }, +- { "allow-holes", no_argument, NULL, 'z' }, ++ { "allow-holes", no_argument, NULL, 'z' }, + { "faketime", no_argument, NULL, 'f' }, + { "squash", no_argument, NULL, 'q' }, + { "squash-uids", no_argument, NULL, 'U' }, +@@ -2495,11 +3247,11 @@ + + app_name = argv[0]; + +- while((c = getopt_long(argc, argv, "x:d:D:b:i:N:m:g:e:zfqUPhVv", longopts, NULL)) != EOF) { ++ while((c = getopt_long(argc, argv, "x:d:D:B:b:i:N:L:m:o:g:e:zfqUPhVv", longopts, NULL)) != EOF) { + #else + app_name = argv[0]; + +- while((c = getopt(argc, argv, "x:d:D:b:i:N:m:g:e:zfqUPhVv")) != EOF) { ++ while((c = getopt(argc, argv, "x:d:D:B:b:i:N:L:m:o:g:e:zfqUPhVv")) != EOF) { + #endif /* HAVE_GETOPT_LONG */ + switch(c) + { +@@ -2510,6 +3262,9 @@ + case 'D': + dopt[didx++] = optarg; + break; ++ case 'B': ++ blocksize = SI_atof(optarg); ++ break; + case 'b': + nbblocks = SI_atof(optarg); + break; +@@ -2519,9 +3274,15 @@ + case 'N': + nbinodes = SI_atof(optarg); + break; ++ case 'L': ++ volumelabel = optarg; ++ break; + case 'm': + reserved_frac = SI_atof(optarg) / 100; + break; ++ case 'o': ++ creator_os = lookup_creator_os(optarg); ++ break; + case 'g': + gopt[gidx++] = optarg; + break; +@@ -2565,21 +3326,21 @@ + error_msg_and_die("Not enough arguments. Try --help or else see the man page."); + fsout = argv[optind]; + +- hdlinks.hdl = (struct hdlink_s *)malloc(hdlink_cnt * sizeof(struct hdlink_s)); +- if (!hdlinks.hdl) +- error_msg_and_die("Not enough memory"); +- hdlinks.count = 0 ; ++ if(blocksize != 1024 && blocksize != 2048 && blocksize != 4096) ++ error_msg_and_die("Valid block sizes: 1024, 2048 or 4096."); ++ if(creator_os < 0) ++ error_msg_and_die("Creator OS unknown."); + + if(fsin) + { + if(strcmp(fsin, "-")) + { + FILE * fh = xfopen(fsin, "rb"); +- fs = load_fs(fh, bigendian); ++ fs = load_fs(fh, bigendian, fsout); + fclose(fh); + } + else +- fs = load_fs(stdin, bigendian); ++ fs = load_fs(stdin, bigendian, fsout); + } + else + { +@@ -2609,16 +3370,29 @@ + } + if(fs_timestamp == -1) + fs_timestamp = time(NULL); +- fs = init_fs(nbblocks, nbinodes, nbresrvd, holes, fs_timestamp); ++ fs = init_fs(nbblocks, nbinodes, nbresrvd, holes, ++ fs_timestamp, creator_os, bigendian, fsout); + } ++ if (volumelabel != NULL) ++ strncpy((char *)fs->sb->s_volume_name, volumelabel, ++ sizeof(fs->sb->s_volume_name)); + + populate_fs(fs, dopt, didx, squash_uids, squash_perms, fs_timestamp, NULL); + + if(emptyval) { + uint32 b; +- for(b = 1; b < fs->sb.s_blocks_count; b++) +- if(!allocated(GRP_GET_BLOCK_BITMAP(fs,b),GRP_BBM_OFFSET(fs,b))) +- memset(get_blk(fs, b), emptyval, BLOCKSIZE); ++ for(b = 1; b < fs->sb->s_blocks_count; b++) { ++ blk_info *bi; ++ gd_info *gi; ++ if(!allocated(GRP_GET_BLOCK_BITMAP(fs,b,&bi,&gi), ++ GRP_BBM_OFFSET(fs,b))) { ++ blk_info *bi2; ++ memset(get_blk(fs, b, &bi2), emptyval, ++ BLOCKSIZE); ++ put_blk(bi2); ++ } ++ GRP_PUT_BLOCK_BITMAP(bi,gi); ++ } + } + if(verbose) + print_fs(fs); +@@ -2628,24 +3402,22 @@ + char fname[MAX_FILENAME]; + char *p; + FILE *fh; ++ nod_info *ni; + if(!(nod = find_path(fs, EXT2_ROOT_INO, gopt[i]))) + error_msg_and_die("path %s not found in filesystem", gopt[i]); + while((p = strchr(gopt[i], '/'))) + *p = '_'; + SNPRINTF(fname, MAX_FILENAME-1, "%s.blk", gopt[i]); + fh = xfopen(fname, "wb"); +- fprintf(fh, "%d:", get_nod(fs, nod)->i_size); ++ fprintf(fh, "%d:", get_nod(fs, nod, &ni)->i_size); ++ put_nod(ni); + flist_blocks(fs, nod, fh); + fclose(fh); + } +- if(strcmp(fsout, "-")) +- { +- FILE * fh = xfopen(fsout, "wb"); +- dump_fs(fs, fh, bigendian); +- fclose(fh); +- } +- else +- dump_fs(fs, stdout, bigendian); ++ finish_fs(fs); ++ if(strcmp(fsout, "-") == 0) ++ copy_file(fs, stdout, fs->f, fs->sb->s_blocks_count); ++ + free_fs(fs); + return 0; + } +Index: genext2fs-1.4.1/cache.h +=================================================================== +--- /dev/null ++++ genext2fs-1.4.1/cache.h +@@ -0,0 +1,128 @@ ++#ifndef __CACHE_H__ ++#define __CACHE_H__ ++ ++#include "list.h" ++ ++#define CACHE_LISTS 256 ++ ++typedef struct ++{ ++ list_elem link; ++ list_elem lru_link; ++} cache_link; ++ ++typedef struct ++{ ++ /* LRU list holds unused items */ ++ unsigned int lru_entries; ++ list_elem lru_list; ++ unsigned int max_free_entries; ++ ++ unsigned int entries; ++ list_elem lists[CACHE_LISTS]; ++ unsigned int (*elem_val)(cache_link *elem); ++ void (*freed)(cache_link *elem); ++} listcache; ++ ++static inline void ++cache_add(listcache *c, cache_link *elem) ++{ ++ unsigned int hash = c->elem_val(elem) % CACHE_LISTS; ++ int delcount = c->lru_entries - c->max_free_entries; ++ ++ if (delcount > 0) { ++ /* Delete some unused items. */ ++ list_elem *lru, *next; ++ cache_link *l; ++ list_for_each_elem_safe(&c->lru_list, lru, next) { ++ l = container_of(lru, cache_link, lru_link); ++ list_del(lru); ++ list_del(&l->link); ++ c->entries--; ++ c->lru_entries--; ++ c->freed(l); ++ delcount--; ++ if (delcount <= 0) ++ break; ++ } ++ } ++ ++ c->entries++; ++ list_item_init(&elem->lru_link); /* Mark it not in the LRU list */ ++ list_add_after(&c->lists[hash], &elem->link); ++} ++ ++static inline void ++cache_item_set_unused(listcache *c, cache_link *elem) ++{ ++ list_add_before(&c->lru_list, &elem->lru_link); ++ c->lru_entries++; ++} ++ ++static inline cache_link * ++cache_find(listcache *c, unsigned int val) ++{ ++ unsigned int hash = val % CACHE_LISTS; ++ list_elem *elem; ++ ++ list_for_each_elem(&c->lists[hash], elem) { ++ cache_link *l = container_of(elem, cache_link, link); ++ if (c->elem_val(l) == val) { ++ if (!list_empty(&l->lru_link)) { ++ /* It's in the unused list, remove it. */ ++ list_del(&l->lru_link); ++ list_item_init(&l->lru_link); ++ c->lru_entries--; ++ } ++ return l; ++ } ++ } ++ return NULL; ++} ++ ++static inline int ++cache_flush(listcache *c) ++{ ++ list_elem *elem, *next; ++ cache_link *l; ++ int i; ++ ++ list_for_each_elem_safe(&c->lru_list, elem, next) { ++ l = container_of(elem, cache_link, lru_link); ++ list_del(elem); ++ list_del(&l->link); ++ c->entries--; ++ c->lru_entries--; ++ c->freed(l); ++ } ++ ++ for (i = 0; i < CACHE_LISTS; i++) { ++ list_for_each_elem_safe(&c->lists[i], elem, next) { ++ l = container_of(elem, cache_link, link); ++ list_del(&l->link); ++ c->entries--; ++ c->freed(l); ++ } ++ } ++ ++ return c->entries || c->lru_entries; ++} ++ ++static inline void ++cache_init(listcache *c, unsigned int max_free_entries, ++ unsigned int (*elem_val)(cache_link *elem), ++ void (*freed)(cache_link *elem)) ++{ ++ int i; ++ ++ c->entries = 0; ++ c->lru_entries = 0; ++ c->max_free_entries = max_free_entries; ++ list_init(&c->lru_list); ++ for (i = 0; i < CACHE_LISTS; i++) ++ list_init(&c->lists[i]); ++ c->elem_val = elem_val; ++ c->freed = freed; ++} ++ ++#endif /* __CACHE_H__ */ +Index: genext2fs-1.4.1/list.h +=================================================================== +--- /dev/null ++++ genext2fs-1.4.1/list.h +@@ -0,0 +1,78 @@ ++#ifndef __LIST_H__ ++#define __LIST_H__ ++ ++#if STDC_HEADERS ++# include ++# include ++#else ++# if HAVE_STDLIB_H ++# include ++# endif ++# if HAVE_STDDEF_H ++# include ++# endif ++#endif ++ ++#ifndef offsetof ++#define offsetof(st, m) \ ++ ((size_t) ( (char *)&((st *)(0))->m - (char *)0 )) ++#endif ++ ++#define container_of(ptr, type, member) ({ \ ++ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ++ (type *)( (char *)__mptr - offsetof(type,member) );}) ++ ++typedef struct list_elem ++{ ++ struct list_elem *next; ++ struct list_elem *prev; ++} list_elem; ++ ++static inline void list_init(list_elem *list) ++{ ++ list->next = list; ++ list->prev = list; ++} ++ ++static inline void list_add_after(list_elem *pos, list_elem *elem) ++{ ++ elem->next = pos->next; ++ elem->prev = pos; ++ pos->next->prev = elem; ++ pos->next = elem; ++} ++ ++static inline void list_add_before(list_elem *pos, list_elem *elem) ++{ ++ elem->prev = pos->prev; ++ elem->next = pos; ++ pos->prev->next = elem; ++ pos->prev = elem; ++} ++ ++static inline void list_del(list_elem *elem) ++{ ++ elem->next->prev = elem->prev; ++ elem->prev->next = elem->next; ++} ++ ++static inline void list_item_init(list_elem *elem) ++{ ++ elem->next = elem; ++ elem->prev = elem; ++} ++ ++static inline int list_empty(list_elem *elem) ++{ ++ return elem->next == elem; ++} ++ ++#define list_for_each_elem(list, curr) \ ++ for ((curr) = (list)->next; (curr) != (list); (curr) = (curr)->next) ++ ++#define list_for_each_elem_safe(list, curr, next) \ ++ for ((curr) = (list)->next, (next) = (curr)->next; \ ++ (curr) != (list); \ ++ (curr) = (next), (next) = (curr)->next) ++ ++#endif /* __LIST_H__ */ diff --git a/buildroot/package/genext2fs/Config.in b/buildroot/package/genext2fs/Config.in new file mode 100644 index 0000000..2251684 --- /dev/null +++ b/buildroot/package/genext2fs/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_GENEXT2FS + bool "genext2fs" + help + genext2fs generates an ext2 filesystem as a normal (non-root) + user. It does not require you to mount the image file to + copy files on it, nor does it require that you become the + superuser to make device nodes. + + http://genext2fs.sourceforge.net/ diff --git a/buildroot/package/genext2fs/Config.in.host b/buildroot/package/genext2fs/Config.in.host new file mode 100644 index 0000000..a03e16b --- /dev/null +++ b/buildroot/package/genext2fs/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_GENEXT2FS + bool "host genext2fs" + help + genext2fs generates an ext2 filesystem as a normal (non-root) + user. It does not require you to mount the image file to + copy files on it, nor does it require that you become the + superuser to make device nodes. + + http://genext2fs.sourceforge.net/ diff --git a/buildroot/package/genext2fs/genext2fs.hash b/buildroot/package/genext2fs/genext2fs.hash new file mode 100644 index 0000000..46b8af3 --- /dev/null +++ b/buildroot/package/genext2fs/genext2fs.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 404dbbfa7a86a6c3de8225c8da254d026b17fd288e05cec4df2cc7e1f4feecfc genext2fs-1.4.1.tar.gz diff --git a/buildroot/package/genext2fs/genext2fs.mk b/buildroot/package/genext2fs/genext2fs.mk new file mode 100644 index 0000000..dd907c8 --- /dev/null +++ b/buildroot/package/genext2fs/genext2fs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# genext2fs +# +################################################################################ + +GENEXT2FS_VERSION = 1.4.1 +GENEXT2FS_SITE = http://downloads.sourceforge.net/project/genext2fs/genext2fs/$(GENEXT2FS_VERSION) +GENEXT2FS_LICENSE = GPL-2.0 +GENEXT2FS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gengetopt/0001-fix-compilation-warnings-in-generated-code.patch b/buildroot/package/gengetopt/0001-fix-compilation-warnings-in-generated-code.patch new file mode 100644 index 0000000..88961e6 --- /dev/null +++ b/buildroot/package/gengetopt/0001-fix-compilation-warnings-in-generated-code.patch @@ -0,0 +1,65 @@ +Fix compilation warnings in generated code + +Patch taken from open bug report http://savannah.gnu.org/bugs/?40243 +(project gengetopt seems to be dead; no hope for a new release soon) + +Imported by Philippe Mariman. +This description by Thomas De Schampheleire. + +Signed-off-by: Thomas De Schampheleire + +Index: gengetopt-2.22.6/src/skels/c_source.cc +=================================================================== +--- gengetopt-2.22.6.orig/src/skels/c_source.cc 2012-11-07 20:58:29.000000000 +0100 ++++ gengetopt-2.22.6/src/skels/c_source.cc 2014-11-20 12:05:02.597527761 +0100 +@@ -2424,9 +2424,12 @@ + stream << " FIX_UNUSED (field);"; + stream << "\n"; + stream << indent_str; ++ stream << " FIX_UNUSED (stop_char);"; ++ stream << "\n"; ++ stream << indent_str; ++ stream << " FIX_UNUSED (val);"; + stream << "\n"; + stream << indent_str; +- stream << " stop_char = 0;"; + stream << "\n"; + stream << indent_str; + stream << " found = 0;"; +@@ -3981,6 +3984,12 @@ + stream << "\n"; + stream << indent_str; + } ++ else ++ { ++ stream << " FIX_UNUSED (check_required);"; ++ stream << "\n"; ++ stream << indent_str; ++ } + stream << "\n"; + stream << indent_str; + indent = 2; +Index: gengetopt-2.22.6/src/skels/c_source.h_skel +=================================================================== +--- gengetopt-2.22.6.orig/src/skels/c_source.h_skel 2012-11-02 18:43:24.000000000 +0100 ++++ gengetopt-2.22.6/src/skels/c_source.h_skel 2014-11-20 12:05:22.501528424 +0100 +@@ -767,8 +767,9 @@ + char **string_field; + @ENDIF@ + FIX_UNUSED (field); ++ FIX_UNUSED (stop_char); ++ FIX_UNUSED (val); + +- stop_char = 0; + found = 0; + + if (!multiple_option && prev_given && (*prev_given || (check_ambiguity && *field_given))) +@@ -1327,6 +1328,8 @@ + { + error_occurred += @parser_name@_required2 (args_info, argv[0], additional_error); + } ++@ELSE@ ++ FIX_UNUSED (check_required); + @ENDIF@ + + @parser_name@_release (&local_args_info); diff --git a/buildroot/package/gengetopt/gengetopt.hash b/buildroot/package/gengetopt/gengetopt.hash new file mode 100644 index 0000000..4f411ac --- /dev/null +++ b/buildroot/package/gengetopt/gengetopt.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 30b05a88604d71ef2a42a2ef26cd26df242b41f5b011ad03083143a31d9b01f7 gengetopt-2.22.6.tar.gz diff --git a/buildroot/package/gengetopt/gengetopt.mk b/buildroot/package/gengetopt/gengetopt.mk new file mode 100644 index 0000000..e7c49ba --- /dev/null +++ b/buildroot/package/gengetopt/gengetopt.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# gengetopt +# +################################################################################ + +GENGETOPT_VERSION = 2.22.6 +GENGETOPT_SITE = $(BR2_GNU_MIRROR)/gengetopt +GENGETOPT_LICENSE = GPL-3.0+ +GENGETOPT_LICENSE_FILES = COPYING LICENSE + +# Parallel build broken +GENGETOPT_MAKE = $(MAKE1) + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/genimage/Config.in.host b/buildroot/package/genimage/Config.in.host new file mode 100644 index 0000000..cf831a1 --- /dev/null +++ b/buildroot/package/genimage/Config.in.host @@ -0,0 +1,13 @@ +config BR2_PACKAGE_HOST_GENIMAGE + bool "host genimage" + help + genimage is a tool to generate multiple filesystem and flash + images from a given root filesystem tree. genimage is + intended to be run in a fakeroot environment. + + Configuration is done in a config file parsed by + libconfuse. Options like the path to tools can be given in + environment variables, the config file or commandline + switches. + + https://github.com/pengutronix/genimage diff --git a/buildroot/package/genimage/genimage.hash b/buildroot/package/genimage/genimage.hash new file mode 100644 index 0000000..4be2fca --- /dev/null +++ b/buildroot/package/genimage/genimage.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 69f35af7edf6f4dbdac7a18ddc69dcf38c501e43d8b50c524555754c51479078 genimage-9.tar.xz diff --git a/buildroot/package/genimage/genimage.mk b/buildroot/package/genimage/genimage.mk new file mode 100644 index 0000000..8d11c66 --- /dev/null +++ b/buildroot/package/genimage/genimage.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# genimage +# +################################################################################ + +GENIMAGE_VERSION = 9 +GENIMAGE_SOURCE = genimage-$(GENIMAGE_VERSION).tar.xz +GENIMAGE_SITE = https://github.com/pengutronix/genimage/releases/download/v$(GENIMAGE_VERSION) +HOST_GENIMAGE_DEPENDENCIES = host-pkgconf host-libconfuse +GENIMAGE_LICENSE = GPL-2.0 +GENIMAGE_LICENSE_FILES = COPYING + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/genpart/0001-fix-return-code.patch b/buildroot/package/genpart/0001-fix-return-code.patch new file mode 100644 index 0000000..ec18c82 --- /dev/null +++ b/buildroot/package/genpart/0001-fix-return-code.patch @@ -0,0 +1,25 @@ +genpart: return 0 if partition writen OK, with no do_magic + +If do_magic is false, we don't won't write the 0xaa55 magic. +However, if we succesfully wrote the partition entry, we still +want to return 0 to indicate success. + +Signed-off-by: "Yann E. MORIN" +Cc: Robert Schwebel + +-- +Patch sent upstream, but no mailing list. +Status: accepted upstream, not yet released. + +diff -durN host-genpart-1.0.2.orig/src/genpart.c host-genpart-1.0.2/src/genpart.c +--- host-genpart-1.0.2.orig/src/genpart.c 2009-12-20 21:54:56.000000000 +0100 ++++ host-genpart-1.0.2/src/genpart.c 2013-01-22 23:13:24.109752579 +0100 +@@ -92,6 +92,8 @@ + if (do_magic) { + if (fwrite(&magic, 2, 1, stdout) > 0) + rc=0; ++ } else { ++ rc=0; + } + } + return rc; diff --git a/buildroot/package/genpart/Config.in b/buildroot/package/genpart/Config.in new file mode 100644 index 0000000..6428845 --- /dev/null +++ b/buildroot/package/genpart/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_GENPART + bool "genpart" + help + Generate a 16 byte partition table entry defined by command + line arguments and dump it to stdout. No CHS magic is done, + only lba entries are filled out. + + http://www.pengutronix.de/software/genpart/index_en.html diff --git a/buildroot/package/genpart/Config.in.host b/buildroot/package/genpart/Config.in.host new file mode 100644 index 0000000..d8b9eb6 --- /dev/null +++ b/buildroot/package/genpart/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_GENPART + bool "host genpart" + help + Generate a 16 byte partition table entry defined by command + line arguments and dump it to stdout. No CHS magic is done, + only lba entries are filled out. + + http://www.pengutronix.de/software/genpart/index_en.html diff --git a/buildroot/package/genpart/genpart.hash b/buildroot/package/genpart/genpart.hash new file mode 100644 index 0000000..b741dbd --- /dev/null +++ b/buildroot/package/genpart/genpart.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 bfb39434f31d10f1b8c7b6bc6ec612309838c2819022561541c4d2d5a424e3f2 genpart-1.0.2.tar.bz2 diff --git a/buildroot/package/genpart/genpart.mk b/buildroot/package/genpart/genpart.mk new file mode 100644 index 0000000..2aa2c71 --- /dev/null +++ b/buildroot/package/genpart/genpart.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# genpart +# +################################################################################ + +GENPART_VERSION = 1.0.2 +GENPART_SOURCE = genpart-$(GENPART_VERSION).tar.bz2 +GENPART_SITE = http://www.pengutronix.de/software/genpart/download +# genpart has no license embedded in its source release. +# However, their project page mentions: +# > This community portal offers an overview about our own OSS +# > projects and projects Pengutronix is or was involved with. +# We can thus assume genpart is under a FLOSS license. +# So, until the authors have clarified the licensing terms: +GENPART_LICENSE = Unknown (clarification has been asked to the authors) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/genromfs/0001-build-system.patch b/buildroot/package/genromfs/0001-build-system.patch new file mode 100644 index 0000000..827fe75 --- /dev/null +++ b/buildroot/package/genromfs/0001-build-system.patch @@ -0,0 +1,26 @@ +--- + Makefile | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +Index: genromfs-0.5.2/Makefile +=================================================================== +--- genromfs-0.5.2.orig/Makefile ++++ genromfs-0.5.2/Makefile +@@ -6,8 +6,6 @@ + PACKAGE = genromfs + VERSION = 0.5.2 + CC = gcc +-CFLAGS = -O2 -Wall -DVERSION=\"$(VERSION)\"#-g# +-LDFLAGS = -s#-g + + DISTDIR = $(PACKAGE)-$(VERSION) + +@@ -24,7 +22,7 @@ + $(CC) $(LDFLAGS) genromfs.o -o genromfs + + .c.o: +- $(CC) $(CFLAGS) $< -c -o $@ ++ $(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" $< -c -o $@ + + clean: + rm -f genromfs *.o diff --git a/buildroot/package/genromfs/Config.in b/buildroot/package/genromfs/Config.in new file mode 100644 index 0000000..e4eba9f --- /dev/null +++ b/buildroot/package/genromfs/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_GENROMFS + bool "genromfs" + help + Tool to generate a ROMFS filesystem. + + http://romfs.sourceforge.net/ diff --git a/buildroot/package/genromfs/genromfs.hash b/buildroot/package/genromfs/genromfs.hash new file mode 100644 index 0000000..477e5d2 --- /dev/null +++ b/buildroot/package/genromfs/genromfs.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 30f37fc734572c1dbaa2504585bc23ba6b8fd7df767ae7155995b2ca0ebed960 genromfs-0.5.2.tar.gz diff --git a/buildroot/package/genromfs/genromfs.mk b/buildroot/package/genromfs/genromfs.mk new file mode 100644 index 0000000..fd696b4 --- /dev/null +++ b/buildroot/package/genromfs/genromfs.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# genromfs +# +################################################################################ + +GENROMFS_VERSION = 0.5.2 +GENROMFS_SITE = http://downloads.sourceforge.net/project/romfs/genromfs/$(GENROMFS_VERSION) +GENROMFS_LICENSE = GPL-2.0+ +GENROMFS_LICENSE_FILES = COPYING + +define GENROMFS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" +endef + +# "PREFIX" is the equivalent of DESTDIR in autotools, "prefix" is the +# traditional prefix. "prefix" defaults to /usr so no need to set it. +define GENROMFS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=$(TARGET_DIR) install +endef + +define HOST_GENROMFS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_GENROMFS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) prefix=$(HOST_DIR) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/geoip/Config.in b/buildroot/package/geoip/Config.in new file mode 100644 index 0000000..739a8da --- /dev/null +++ b/buildroot/package/geoip/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_GEOIP + bool "geoip" + help + GeoIP is a C library that enables the user to find + geographical and network information of an IP address. + + To use this library, you need to download MaxMind's free + GeoLite or commercial GeoIP binary databases into the + target's /usr/share/GeoIP directory in uncompressed form. + + Note that GeoIP2 / GeoLite2 are not supported by this + library. + + https://github.com/maxmind/geoip-api-c diff --git a/buildroot/package/geoip/geoip.hash b/buildroot/package/geoip/geoip.hash new file mode 100644 index 0000000..2b1f743 --- /dev/null +++ b/buildroot/package/geoip/geoip.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b0e5a92200b5ab540d118983f7b7191caf4faf1ae879c44afa3ff2a2abcdb0f5 GeoIP-1.6.11.tar.gz diff --git a/buildroot/package/geoip/geoip.mk b/buildroot/package/geoip/geoip.mk new file mode 100644 index 0000000..030c7b3 --- /dev/null +++ b/buildroot/package/geoip/geoip.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# geoip +# +################################################################################ + +GEOIP_VERSION = 1.6.11 +GEOIP_SOURCE = GeoIP-$(GEOIP_VERSION).tar.gz +GEOIP_SITE = https://github.com/maxmind/geoip-api-c/releases/download/v$(GEOIP_VERSION) +GEOIP_INSTALL_STAGING = YES +GEOIP_LICENSE = LGPL-2.1+ +GEOIP_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/gesftpserver/Config.in b/buildroot/package/gesftpserver/Config.in new file mode 100644 index 0000000..bce4770 --- /dev/null +++ b/buildroot/package/gesftpserver/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_GESFTPSERVER + bool "gesftpserver" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Green End SFTP Server + + This is an SFTP server supporting up to protocol version 6. + It is possible to use it as a drop-in replacement for the + OpenSSH server, or to provide sftp support for Dropbear. + + http://www.greenend.org.uk/rjk/sftpserver/ + +comment "gesftpserver needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gesftpserver/gesftpserver.hash b/buildroot/package/gesftpserver/gesftpserver.hash new file mode 100644 index 0000000..1a8a5f3 --- /dev/null +++ b/buildroot/package/gesftpserver/gesftpserver.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8ac1938d0f62a05799b2aeab489d6ce098c3fe53280a9b66c0957b1fdcbcbab9 sftpserver-0.2.2.tar.gz diff --git a/buildroot/package/gesftpserver/gesftpserver.mk b/buildroot/package/gesftpserver/gesftpserver.mk new file mode 100644 index 0000000..58c6270 --- /dev/null +++ b/buildroot/package/gesftpserver/gesftpserver.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# gesftpserver +# +################################################################################ + +GESFTPSERVER_VERSION = 0.2.2 +GESFTPSERVER_SOURCE = sftpserver-$(GESFTPSERVER_VERSION).tar.gz +GESFTPSERVER_SITE = http://www.greenend.org.uk/rjk/sftpserver +GESFTPSERVER_LICENSE = GPL-2.0+ +GESFTPSERVER_LICENSE_FILES = COPYING +# forgets to link against pthread when cross compiling +GESFTPSERVER_CONF_ENV = LIBS=-lpthread + +# overwrite openssh version if enabled +GESFTPSERVER_DEPENDENCIES += \ + $(if $(BR2_ENABLE_LOCALE),,libiconv) \ + $(if $(BR2_PACKAGE_OPENSSH),openssh) + +# openssh/dropbear looks here +define GESFTPSERVER_ADD_SYMLINK + ln -sf gesftpserver $(TARGET_DIR)/usr/libexec/sftp-server +endef + +GESFTPSERVER_POST_INSTALL_TARGET_HOOKS += GESFTPSERVER_ADD_SYMLINK + +$(eval $(autotools-package)) diff --git a/buildroot/package/getent/Config.in b/buildroot/package/getent/Config.in new file mode 100644 index 0000000..a7303cb --- /dev/null +++ b/buildroot/package/getent/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GETENT + bool "getent" + help + This package installs the 'getent' utility, which allows to + get entries from Name Service Switch libraries. For glibc + toolchains, it's the real getent program from the C library + that gets installed, which is NSS-capable. For uclibc and + musl toolchains, it's a simple wrapper script that emulates + getent's behavior, since there is no NSS support in uclibc + and musl. diff --git a/buildroot/package/getent/getent b/buildroot/package/getent/getent new file mode 100644 index 0000000..fdda793 --- /dev/null +++ b/buildroot/package/getent/getent @@ -0,0 +1,45 @@ +#!/bin/sh +# $Header: /var/cvs/uClibc/extra/scripts/getent,v 1.2 2005/02/02 14:18:01 solar Exp $ +# +# Closely (not perfectly) emulate the behavior of glibc's getent utility +# +#passwd|shadow|group|aliases|hosts|networks|ethers|netgroup|protocols|services|rpc +# only returns the first match (by design) +# dns based search is not supported (hosts,networks) +# case-insensitive matches not supported (ethers; others?) +# may return false-positives (hosts,protocols,rpc,services,ethers) +# +# Taken from uClibc 0.9.33. + +export PATH="${PATH}:/bin:/usr/bin" + +file="/etc/$1" +case $1 in + passwd|group) + match="^$2:\|^[^:]*:[^:]*:$2:" ;; + shadow) + match="^$2:" ;; + networks|netgroup) + match="^[[:space:]]*$2\>" ;; + hosts|protocols|rpc|services|ethers) + match="\<$2\>" ;; + aliases) + match="^[[:space:]]*$2[[:space:]]*:" ;; + ""|-h|--help) + echo "USAGE: $0 database [key]" + exit 0 ;; + *) + echo "$0: Unknown database: $1" 1>&2 + exit 1 ;; +esac + +if [ ! -f "$file" ] ; then + echo "$0: Could not find database file for $1" 1>&2 + exit 1 +fi + +if [ $# -eq 1 ] ; then + exec cat "$file" +else + sed "s/#.*//; /$match/q; d" "$file" | grep . || exit 2 +fi diff --git a/buildroot/package/getent/getent.mk b/buildroot/package/getent/getent.mk new file mode 100644 index 0000000..4e3eaea --- /dev/null +++ b/buildroot/package/getent/getent.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# getent +# +################################################################################ + +GETENT_LICENSE = LGPL-2.1+ + +# For glibc toolchains, we use the getent program built/installed by +# the C library. For other toolchains, we use the wrapper script +# included in this package. +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +# Sourcery toolchains install it in sysroot/usr/lib/bin +# Buildroot toolchains install it in sysroot/usr/bin +GETENT_LOCATION = $(firstword $(wildcard \ + $(STAGING_DIR)/usr/bin/getent \ + $(STAGING_DIR)/usr/lib/bin/getent)) +else +GETENT_LOCATION = package/getent/getent +endif + +define GETENT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(GETENT_LOCATION) $(TARGET_DIR)/usr/bin/getent +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/gettext/0001-error_print_progname.patch b/buildroot/package/gettext/0001-error_print_progname.patch new file mode 100644 index 0000000..189d28b --- /dev/null +++ b/buildroot/package/gettext/0001-error_print_progname.patch @@ -0,0 +1,14 @@ +--- gettext-0.16.1.oorig/gettext-tools/gnulib-lib/error.h 2006-11-27 18:14:50.000000000 +0100 ++++ gettext-0.16.1/gettext-tools/gnulib-lib/error.h 2007-06-20 13:29:32.000000000 +0200 +@@ -50,7 +50,10 @@ extern void error_at_line (int __status, + /* If NULL, error will flush stdout, then print on stderr the program + name, a colon and a space. Otherwise, error will call this + function without parameters instead. */ +-extern DLL_VARIABLE void (*error_print_progname) (void); ++#ifndef __UCLIBC__ ++extern DLL_VARIABLE ++#endif ++void (*error_print_progname) (void); + + /* This variable is incremented each time `error' is called. */ + extern DLL_VARIABLE unsigned int error_message_count; diff --git a/buildroot/package/gettext/0002-Update-after-gnulib-changed.patch b/buildroot/package/gettext/0002-Update-after-gnulib-changed.patch new file mode 100644 index 0000000..5f5e5f6 --- /dev/null +++ b/buildroot/package/gettext/0002-Update-after-gnulib-changed.patch @@ -0,0 +1,86 @@ +From a6f9caf8cc7614665d1be694485dd7bc30399e0f Mon Sep 17 00:00:00 2001 +From: Bruno Haible +Date: Tue, 16 May 2017 00:27:57 +0200 +Subject: [PATCH] Update after gnulib changed. + +For buildroot we only need to update wint_t.m4 to fix autoreconf with +certain packages which already contain the updated version of this file. +Otherwise autoreconf will break: + +http://git.net/ml/bug-gnulib-gnu/2017-01/msg00067.html +https://git.busybox.net/buildroot/commit/package/wget?id=c36f0d65ad63589f1b21833ef53d429c018b6f8a + +Patch backported from upstream commit: +http://git.savannah.gnu.org/cgit/gettext.git/commit/?id=a6f9caf8cc7614665d1be694485dd7bc30399e0f + +Needed for coreutils bump to 8.27 + +Signed-off-by: Bernd Kuhls + +diff --git a/gettext-runtime/m4/wint_t.m4 b/gettext-runtime/m4/wint_t.m4 +index 8ff2a5b5a..d30b8bcf8 100644 +--- a/gettext-runtime/m4/wint_t.m4 ++++ b/gettext-runtime/m4/wint_t.m4 +@@ -1,11 +1,12 @@ +-# wint_t.m4 serial 5 (gettext-0.18.2) +-dnl Copyright (C) 2003, 2007-2016 Free Software Foundation, Inc. ++# wint_t.m4 serial 7 ++dnl Copyright (C) 2003, 2007-2017 Free Software Foundation, Inc. + dnl This file is free software; the Free Software Foundation + dnl gives unlimited permission to copy and/or distribute it, + dnl with or without modifications, as long as this notice is preserved. + + dnl From Bruno Haible. +-dnl Test whether has the 'wint_t' type. ++dnl Test whether has the 'wint_t' type and whether gnulib's ++dnl or would, if present, override 'wint_t'. + dnl Prerequisite: AC_PROG_CC + + AC_DEFUN([gt_TYPE_WINT_T], +@@ -28,5 +29,46 @@ AC_DEFUN([gt_TYPE_WINT_T], + [gt_cv_c_wint_t=no])]) + if test $gt_cv_c_wint_t = yes; then + AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) ++ ++ dnl Determine whether gnulib's or would, if present, ++ dnl override 'wint_t'. ++ AC_CACHE_CHECK([whether wint_t is too small], ++ [gl_cv_type_wint_t_too_small], ++ [AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM([[ ++/* Tru64 with Desktop Toolkit C has a bug: must be included before ++ . ++ BSD/OS 4.0.1 has a bug: , and must be ++ included before . */ ++#if !(defined __GLIBC__ && !defined __UCLIBC__) ++# include ++# include ++# include ++#endif ++#include ++ int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1]; ++ ]])], ++ [gl_cv_type_wint_t_too_small=no], ++ [gl_cv_type_wint_t_too_small=yes])]) ++ if test $gl_cv_type_wint_t_too_small = yes; then ++ GNULIB_OVERRIDES_WINT_T=1 ++ else ++ GNULIB_OVERRIDES_WINT_T=0 ++ fi ++ else ++ GNULIB_OVERRIDES_WINT_T=0 ++ fi ++ AC_SUBST([GNULIB_OVERRIDES_WINT_T]) ++]) ++ ++dnl Prerequisites of the 'wint_t' override. ++AC_DEFUN([gl_TYPE_WINT_T_PREREQ], ++[ ++ AC_CHECK_HEADERS_ONCE([crtdefs.h]) ++ if test $ac_cv_header_crtdefs_h = yes; then ++ HAVE_CRTDEFS_H=1 ++ else ++ HAVE_CRTDEFS_H=0 + fi ++ AC_SUBST([HAVE_CRTDEFS_H]) + ]) diff --git a/buildroot/package/gettext/Config.in b/buildroot/package/gettext/Config.in new file mode 100644 index 0000000..e55663b --- /dev/null +++ b/buildroot/package/gettext/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_GETTEXT + bool "gettext" + depends on BR2_USE_WCHAR + help + The GNU `gettext' utilities are a set of tools that provide a + framework to help other GNU packages produce multi-lingual + messages. + + Only the libintl library will be installed in the + target. The full gettext suite, including tools, will be + installed in the staging directory. + + http://www.gnu.org/software/gettext/ + +if BR2_PACKAGE_GETTEXT + +config BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL + bool + default y if BR2_SYSTEM_ENABLE_NLS + depends on !BR2_TOOLCHAIN_HAS_FULL_GETTEXT + +endif + +comment "gettext needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/gettext/gettext.hash b/buildroot/package/gettext/gettext.hash new file mode 100644 index 0000000..a2ab298 --- /dev/null +++ b/buildroot/package/gettext/gettext.hash @@ -0,0 +1,5 @@ +# From http://lists.gnu.org/archive/html/bug-gettext/2016-06/msg00008.html +md5 df3f5690eaa30fd228537b00cb7b7590 gettext-0.19.8.1.tar.xz +sha1 e0fe90ede22f7f16bbde7bdea791a835f2773fc9 gettext-0.19.8.1.tar.xz +# License files, locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/gettext/gettext.mk b/buildroot/package/gettext/gettext.mk new file mode 100644 index 0000000..ec9588f --- /dev/null +++ b/buildroot/package/gettext/gettext.mk @@ -0,0 +1,100 @@ +################################################################################ +# +# gettext +# +################################################################################ + +GETTEXT_VERSION = 0.19.8.1 +GETTEXT_SITE = $(BR2_GNU_MIRROR)/gettext +GETTEXT_SOURCE = gettext-$(GETTEXT_VERSION).tar.xz +GETTEXT_INSTALL_STAGING = YES +GETTEXT_LICENSE = LGPL-2.1+ (libintl), GPL-3.0+ (the rest) +GETTEXT_LICENSE_FILES = COPYING gettext-runtime/intl/COPYING.LIB +# 0002-Update-after-gnulib-changed.patch +GETTEXT_AUTORECONF = YES +GETTEXT_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +# Avoid using the bundled subset of libxml2 +HOST_GETTEXT_DEPENDENCIES = host-libxml2 + +GETTEXT_CONF_OPTS += \ + --disable-libasprintf \ + --disable-acl \ + --disable-openmp \ + --disable-rpath \ + --disable-java \ + --disable-native-java \ + --disable-csharp \ + --disable-relocatable \ + --without-emacs + +HOST_GETTEXT_CONF_OPTS = \ + --disable-libasprintf \ + --disable-acl \ + --disable-openmp \ + --disable-rpath \ + --disable-java \ + --disable-native-java \ + --disable-csharp \ + --disable-relocatable \ + --without-emacs + +# Force the build of libintl, even if the C library provides a stub +# gettext implementation +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +GETTEXT_CONF_OPTS += --with-included-gettext +else +GETTEXT_CONF_OPTS += --without-included-gettext +endif + +# For the target version, we only need the runtime, and for the host +# version, we only need the tools. +GETTEXT_SUBDIR = gettext-runtime +HOST_GETTEXT_SUBDIR = gettext-tools + +# Disable the build of documentation and examples of gettext-tools, +# and the build of documentation and tests of gettext-runtime. +define HOST_GETTEXT_DISABLE_UNNEEDED + $(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/examples$$//' $(@D)/gettext-tools/Makefile.in + $(SED) '/^SUBDIRS/s/ doc //;/^SUBDIRS/s/tests$$//' $(@D)/gettext-runtime/Makefile.in +endef + +GETTEXT_POST_PATCH_HOOKS += HOST_GETTEXT_DISABLE_UNNEEDED +HOST_GETTEXT_POST_PATCH_HOOKS += HOST_GETTEXT_DISABLE_UNNEEDED + +define GETTEXT_REMOVE_UNNEEDED + $(RM) -rf $(TARGET_DIR)/usr/share/gettext/ABOUT-NLS + rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/usr/share/gettext +endef + +GETTEXT_POST_INSTALL_TARGET_HOOKS += GETTEXT_REMOVE_UNNEEDED + +# Force build with NLS support, otherwise libintl is not built +# This is needed because some packages (eg. libglib2) requires +# locales, but do not properly depend on BR2_ENABLE_LOCALE, and +# instead select BR2_PACKAGE_GETTEXT. Those packages need to be +# fixed before we can remove the following 3 lines... :-( +ifeq ($(BR2_ENABLE_LOCALE),) +GETTEXT_CONF_OPTS += --enable-nls +endif + +# Disable interactive confirmation in host gettextize for package fixups +define HOST_GETTEXT_GETTEXTIZE_CONFIRMATION + $(SED) '/read dummy/d' $(HOST_DIR)/bin/gettextize +endef +HOST_GETTEXT_POST_INSTALL_HOOKS += HOST_GETTEXT_GETTEXTIZE_CONFIRMATION + +# autoreconf expects gettextize to install ABOUT-NLS, but it only gets +# installed by gettext-runtime which we don't build/install for the +# host, so do it manually +define HOST_GETTEXT_ADD_ABOUT_NLS + $(INSTALL) -m 0644 $(@D)/$(HOST_GETTEXT_SUBDIR)/ABOUT-NLS \ + $(HOST_DIR)/share/gettext/ABOUT-NLS +endef + +HOST_GETTEXT_POST_INSTALL_HOOKS += HOST_GETTEXT_ADD_ABOUT_NLS + +GETTEXTIZE = $(HOST_CONFIGURE_OPTS) AUTOM4TE=$(HOST_DIR)/bin/autom4te $(HOST_DIR)/bin/gettextize -f + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gflags/Config.in b/buildroot/package/gflags/Config.in new file mode 100644 index 0000000..ed05944 --- /dev/null +++ b/buildroot/package/gflags/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GFLAGS + bool "gflags" + depends on BR2_INSTALL_LIBSTDCPP + help + The gflags package contains a C++ library that implements + commandline flags processing. It includes built-in support for + standard types such as string and the ability to define flags + in the source file in which they are used. + + https://github.com/gflags/gflags + +comment "gflags needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/gflags/gflags.hash b/buildroot/package/gflags/gflags.hash new file mode 100644 index 0000000..3cae2b0 --- /dev/null +++ b/buildroot/package/gflags/gflags.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 466c36c6508a451734e4f4d76825cf9cd9b8716d2b70ef36479ae40f08271f88 gflags-v2.2.0.tar.gz + +# Hash for license file: +sha256 90d1f3701813c3cd65eee2dc736746fe46b465918f3f7d6d31463a2018b33fa5 COPYING.txt diff --git a/buildroot/package/gflags/gflags.mk b/buildroot/package/gflags/gflags.mk new file mode 100644 index 0000000..45186a3 --- /dev/null +++ b/buildroot/package/gflags/gflags.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# gflags +# +################################################################################ + +GFLAGS_VERSION = v2.2.0 +GFLAGS_SITE = $(call github,gflags,gflags,$(GFLAGS_VERSION)) +GFLAGS_INSTALL_STAGING = YES +GFLAGS_LICENSE = BSD-3-Clause +GFLAGS_LICENSE_FILES = COPYING.txt + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +GFLAGS_CONF_OPTS = -DBUILD_gflags_LIB=OFF \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -DNO_THREADS" +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/ghostscript-fonts/Config.in b/buildroot/package/ghostscript-fonts/Config.in new file mode 100644 index 0000000..9b9b8d0 --- /dev/null +++ b/buildroot/package/ghostscript-fonts/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_GHOSTSCRIPT_FONTS + bool "ghostscript-fonts" + help + Fonts and font metrics customarily distributed with + Ghostscript. Currently includes the 35 standard PostScript + fonts and a grab-bag of others. + + http://sourceforge.net/projects/gs-fonts diff --git a/buildroot/package/ghostscript-fonts/ghostscript-fonts.hash b/buildroot/package/ghostscript-fonts/ghostscript-fonts.hash new file mode 100644 index 0000000..e9c7fdf --- /dev/null +++ b/buildroot/package/ghostscript-fonts/ghostscript-fonts.hash @@ -0,0 +1,2 @@ +# From http://sourceforge.net/projects/gs-fonts/files/gs-fonts/8.11%20%28base%2035%2C%20GPL%29/ +sha1 2a7198e8178b2e7dba87cb5794da515200b568f5 ghostscript-fonts-std-8.11.tar.gz diff --git a/buildroot/package/ghostscript-fonts/ghostscript-fonts.mk b/buildroot/package/ghostscript-fonts/ghostscript-fonts.mk new file mode 100644 index 0000000..156eb4c --- /dev/null +++ b/buildroot/package/ghostscript-fonts/ghostscript-fonts.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ghostscript-fonts +# +################################################################################ + +GHOSTSCRIPT_FONTS_VERSION = 8.11 +GHOSTSCRIPT_FONTS_SITE = http://downloads.sourceforge.net/project/gs-fonts/gs-fonts/8.11%20%28base%2035%2C%20GPL%29 +GHOSTSCRIPT_FONTS_SOURCE = ghostscript-fonts-std-$(GHOSTSCRIPT_FONTS_VERSION).tar.gz +GHOSTSCRIPT_FONTS_LICENSE = GPL-2.0 +GHOSTSCRIPT_FONTS_LICENSE_FILES = COPYING + +GHOSTSCRIPT_FONTS_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/gs + +define GHOSTSCRIPT_FONTS_INSTALL_TARGET_CMDS + mkdir -p $(GHOSTSCRIPT_FONTS_TARGET_DIR) + $(INSTALL) -m 644 $(@D)/*.afm $(GHOSTSCRIPT_FONTS_TARGET_DIR) + $(INSTALL) -m 644 $(@D)/*.pfb $(GHOSTSCRIPT_FONTS_TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ghostscript/0001-Fix-cross-compilation-issue.patch b/buildroot/package/ghostscript/0001-Fix-cross-compilation-issue.patch new file mode 100644 index 0000000..57e1be6 --- /dev/null +++ b/buildroot/package/ghostscript/0001-Fix-cross-compilation-issue.patch @@ -0,0 +1,32 @@ +From 5fed765abb8ff07c381cc3ebb9367e9560f7a658 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Mon, 20 Mar 2017 23:43:03 +0100 +Subject: [PATCH] Fix cross compilation issue + +Without this patch unsafe paths are used: +x86_64-linux-gcc: ERROR: unsafe header/library path used in cross-compilation: '/libtiff' + +Downloaded from +http://bugs.ghostscript.com/show_bug.cgi?id=696508#c3 + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index d0f62d7..0d49344 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1173,7 +1173,7 @@ XPSWRITEDEVICE='' + + + LIBTIFFDIR='src' +-LIBTIFFCONFDIR='' ++LIBTIFFCONFDIR='src' + + TIFFDEVS_ALL='tiffs tiff12nc tiff24nc tiff48nc tiff32nc tiff64nc tiffcrle tifflzw tiffpack tiffgray tiffsep tiffsep1 tiffscaled tiffscaled4 tiffscaled8 tiffscaled24 tiffscaled32' + FAX_DEVS_ALL='cfax dfaxlow dfaxhigh fax faxg3 faxg32d faxg4 tiffg3 tiffg32d tiffg4 tfax' +-- +2.7.4 + diff --git a/buildroot/package/ghostscript/Config.in b/buildroot/package/ghostscript/Config.in new file mode 100644 index 0000000..023ef5f --- /dev/null +++ b/buildroot/package/ghostscript/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_GHOSTSCRIPT + bool "ghostscript" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_GHOSTSCRIPT_FONTS + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LCMS2 + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_TIFF + help + Ghostscript is an interpreter for PostScript and Portable + Document Format (PDF) files. + + http://ghostscript.com diff --git a/buildroot/package/ghostscript/ghostscript.hash b/buildroot/package/ghostscript/ghostscript.hash new file mode 100644 index 0000000..2b36e34 --- /dev/null +++ b/buildroot/package/ghostscript/ghostscript.hash @@ -0,0 +1,4 @@ +# From https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922/SHA256SUMS +sha256 c1f862e6f40f997dbe3feba89355e8cb05d55818994e10f4932b0dd9b627d1bb ghostscript-9.22.tar.xz +# From https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922/SHA512SUMS +sha512 67739ace64090ab1951cba4cb011a5a6829ee60b32ba4157d0f17e744e345ea268335304db6722677ae33565ea5b696c2ff7b889d42a463acf2933c8230523d4 ghostscript-9.22.tar.xz diff --git a/buildroot/package/ghostscript/ghostscript.mk b/buildroot/package/ghostscript/ghostscript.mk new file mode 100644 index 0000000..aa3f63b --- /dev/null +++ b/buildroot/package/ghostscript/ghostscript.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# ghostscript +# +################################################################################ + +GHOSTSCRIPT_VERSION = 9.22 +GHOSTSCRIPT_SITE = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922 +GHOSTSCRIPT_SOURCE = ghostscript-$(GHOSTSCRIPT_VERSION).tar.xz +GHOSTSCRIPT_LICENSE = AGPL-3.0 +GHOSTSCRIPT_LICENSE_FILES = LICENSE +# 0001-Fix-cross-compilation-issue.patch +GHOSTSCRIPT_AUTORECONF = YES +GHOSTSCRIPT_DEPENDENCIES = \ + host-lcms2 \ + host-libjpeg \ + host-pkgconf \ + host-zlib \ + fontconfig \ + ghostscript-fonts \ + jpeg \ + lcms2 \ + libpng \ + tiff + +# Ghostscript includes (old) copies of several libraries, delete them. +# Inspired by linuxfromscratch: +# http://www.linuxfromscratch.org/blfs/view/svn/pst/gs.html +define GHOSTSCRIPT_REMOVE_LIBS + rm -rf $(@D)/freetype $(@D)/ijs $(@D)/jpeg $(@D)/lcms2 $(@D)/libpng $(@D)/tiff $(@D)/zlib +endef +GHOSTSCRIPT_POST_PATCH_HOOKS += GHOSTSCRIPT_REMOVE_LIBS + +GHOSTSCRIPT_CONF_ENV = \ + CCAUX="$(HOSTCC)" \ + CFLAGSAUX="$(HOST_CFLAGS) $(HOST_LDFLAGS)" + +GHOSTSCRIPT_CONF_OPTS = \ + --disable-compile-inits \ + --disable-cups \ + --enable-fontconfig \ + --with-fontpath=$(GHOSTSCRIPT_FONTS_TARGET_DIR) \ + --enable-freetype \ + --disable-gtk \ + --without-jbig2dec \ + --without-libpaper \ + --with-system-libtiff + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +GHOSTSCRIPT_DEPENDENCIES += libidn +GHOSTSCRIPT_CONF_OPTS += --with-libidn +else +GHOSTSCRIPT_CONF_OPTS += --without-libidn +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +GHOSTSCRIPT_DEPENDENCIES += xlib_libX11 +GHOSTSCRIPT_CONF_OPTS += --with-x +else +GHOSTSCRIPT_CONF_OPTS += --without-x +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/giblib/0001-fix-imlib2-detection.patch b/buildroot/package/giblib/0001-fix-imlib2-detection.patch new file mode 100644 index 0000000..2323107 --- /dev/null +++ b/buildroot/package/giblib/0001-fix-imlib2-detection.patch @@ -0,0 +1,127 @@ +configure.ac + Makefile.am: fix the imlib2 detection + +Although imlib2 is correctly checked for, the variables used to get +the CFLAGS and LIBS are wrong (perhaps a remnant of the pre-imlib2 +era, when giblib was using imlib). + +Signed-off-by: "Yann E. MORIN" + +diff --git a/configure.ac b/configure.ac +index 6807d86..c8874f0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -18,16 +18,10 @@ AM_MAINTAINER_MODE + AM_WITH_DMALLOC + + AC_PATH_GENERIC(imlib2, 1.0.0, [ +- AC_SUBST(IMLIB_LIBS) +- AC_SUBST(IMLIB_CFLAGS) ], ++ AC_SUBST(IMLIB2_LIBS) ++ AC_SUBST(IMLIB2_CFLAGS) ], + AC_MSG_ERROR(Cannot find imlib2: Is imlib2-config in the path?) ) + +-dnl the above doesn't work for some reason :/ +-IMLIB_LIBS=`imlib2-config --libs` +-IMLIB_CFLAGS=`imlib2-config --cflags` +-AC_SUBST(IMLIB_LIBS) +-AC_SUBST(IMLIB_CFLAGS) +- + LIBS="$LIBS -lm" + CFLAGS="$CFLAGS -Wall" + +@@ -48,7 +42,7 @@ $PACKAGE $VERSION + Configuration: + -------------- + +-Imlib2 libs: $IMLIB_LIBS +-Imlib2 cflags: $IMLIB_CFLAGS ++Imlib2 libs: $IMLIB2_LIBS ++Imlib2 cflags: $IMLIB2_CFLAGS + CFLAGS: $CFLAGS + " +diff --git a/configure.in b/configure.in +index 432cb16..6999095 100644 +--- a/configure.in ++++ b/configure.in +@@ -17,16 +17,10 @@ AM_MAINTAINER_MODE + AM_WITH_DMALLOC + + AC_PATH_GENERIC(imlib2, 1.0.0, [ +- AC_SUBST(IMLIB_LIBS) +- AC_SUBST(IMLIB_CFLAGS) ], ++ AC_SUBST(IMLIB2_LIBS) ++ AC_SUBST(IMLIB2_CFLAGS) ], + AC_MSG_ERROR(Cannot find imlib2: Is imlib2-config in the path?) ) + +-dnl the above doesn't work for some reason :/ +-IMLIB_LIBS=`imlib2-config --libs` +-IMLIB_CFLAGS=`imlib2-config --cflags` +-AC_SUBST(IMLIB_LIBS) +-AC_SUBST(IMLIB_CFLAGS) +- + LIBS="$LIBS -lm" + CFLAGS="$CFLAGS -Wall" + +@@ -45,7 +39,7 @@ $PACKAGE $VERSION + Configuration: + -------------- + +-Imlib2 libs: $IMLIB_LIBS +-Imlib2 cflags: $IMLIB_CFLAGS ++Imlib2 libs: $IMLIB2_LIBS ++Imlib2 cflags: $IMLIB2_CFLAGS + CFLAGS: $CFLAGS + " +diff --git a/giblib-config.in b/giblib-config.in +index f3a7db6..cef1620 100644 +--- a/giblib-config.in ++++ b/giblib-config.in +@@ -42,11 +42,11 @@ while test $# -gt 0; do + if test @includedir@ != /usr/include ; then + includes=-I@includedir@ + fi +- echo $includes -I$prefix/include/giblib @IMLIB_CFLAGS@ ++ echo $includes -I$prefix/include/giblib @IMLIB2_CFLAGS@ + ;; + --libs) + libdirs=-L@libdir@ +- echo $libdirs -lgiblib @LDFLAGS@ @IMLIB_LIBS@ ++ echo $libdirs -lgiblib @LDFLAGS@ @IMLIB2_LIBS@ + ;; + *) + echo "${usage}" 1>&2 +diff --git a/giblib.pc.in b/giblib.pc.in +index df520ae..783e6e1 100644 +--- a/giblib.pc.in ++++ b/giblib.pc.in +@@ -6,6 +6,6 @@ includedir=@includedir@ + Name: giblib + Description: wrapper library for imlib2, and other stuff + Version: @VERSION@ +-Libs: -L${libdir} -lgiblib @LDFLAGS@ @IMLIB_LIBS@ +-Cflags: -I${includedir} -I${includedir}/giblib @IMLIB_CFLAGS@ ++Libs: -L${libdir} -lgiblib @LDFLAGS@ @IMLIB2_LIBS@ ++Cflags: -I${includedir} -I${includedir}/giblib @IMLIB2_CFLAGS@ + +diff --git a/giblib/Makefile.am b/giblib/Makefile.am +index d1edc09..49d8ac4 100644 +--- a/giblib/Makefile.am ++++ b/giblib/Makefile.am +@@ -3,7 +3,7 @@ MAINTAINERCLEANFILES = Makefile.in + + INCLUDES = \ + -I. -I$(top_srcdir) \ +--DPREFIX=\""$(prefix)"\" @IMLIB_CFLAGS@ ++-DPREFIX=\""$(prefix)"\" @IMLIB2_CFLAGS@ + + lib_LTLIBRARIES = libgiblib.la + +@@ -24,7 +24,7 @@ libgiblib_la_SOURCES = \ + gib_utils.c gib_utils.h \ + gib_queue.c gib_queue.h + +-libgiblib_la_LIBADD = @IMLIB_LIBS@ ++libgiblib_la_LIBADD = @IMLIB2_LIBS@ + libgiblib_la_DEPENDENCIES = giblib_config.h + libgiblib_la_LDFLAGS = -version-info 1:6:0 + diff --git a/buildroot/package/giblib/Config.in b/buildroot/package/giblib/Config.in new file mode 100644 index 0000000..f50271a --- /dev/null +++ b/buildroot/package/giblib/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GIBLIB + bool "giblib" + depends on BR2_PACKAGE_XORG7 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_IMLIB2 + select BR2_PACKAGE_IMLIB2_X + help + Giblib is a simple library which wraps imlib2. + + http://linuxbrit.co.uk/giblib/ + +comment "giblib support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/giblib/giblib.hash b/buildroot/package/giblib/giblib.hash new file mode 100644 index 0000000..942aee7 --- /dev/null +++ b/buildroot/package/giblib/giblib.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 176611c4d88d742ea4013991ad54c2f9d2feefbc97a28434c0f48922ebaa8bac giblib-1.2.4.tar.gz diff --git a/buildroot/package/giblib/giblib.mk b/buildroot/package/giblib/giblib.mk new file mode 100644 index 0000000..b0a9620 --- /dev/null +++ b/buildroot/package/giblib/giblib.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# giblib +# +################################################################################ + +GIBLIB_VERSION = 1.2.4 +GIBLIB_SITE = http://linuxbrit.co.uk/downloads +GIBLIB_INSTALL_STAGING = YES +GIBLIB_DEPENDENCIES = imlib2 +GIBLIB_AUTORECONF = YES +GIBLIB_CONF_OPTS = \ + --with-imlib2-prefix=$(STAGING_DIR)/usr \ + --with-imlib2-exec-prefix=$(STAGING_DIR)/usr +GIBLIB_CONFIG_SCRIPTS = giblib-config +GIBLIB_LICENSE = MIT +GIBLIB_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/giflib/Config.in b/buildroot/package/giflib/Config.in new file mode 100644 index 0000000..fc1f85d --- /dev/null +++ b/buildroot/package/giflib/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_GIFLIB + bool "giflib" + help + giflib is a library for reading and writing gif images. + + http://sourceforge.net/projects/giflib diff --git a/buildroot/package/giflib/giflib.hash b/buildroot/package/giflib/giflib.hash new file mode 100644 index 0000000..cdd7bbd --- /dev/null +++ b/buildroot/package/giflib/giflib.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/giflib/files +md5 2c171ced93c0e83bb09e6ccad8e3ba2b giflib-5.1.4.tar.bz2 +sha1 5f1157cfc377916280849e247b8e34fa0446513f giflib-5.1.4.tar.bz2 diff --git a/buildroot/package/giflib/giflib.mk b/buildroot/package/giflib/giflib.mk new file mode 100644 index 0000000..c1471de --- /dev/null +++ b/buildroot/package/giflib/giflib.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# giflib +# +################################################################################ + +GIFLIB_VERSION = 5.1.4 +GIFLIB_SOURCE = giflib-$(GIFLIB_VERSION).tar.bz2 +GIFLIB_SITE = http://downloads.sourceforge.net/project/giflib +GIFLIB_INSTALL_STAGING = YES +GIFLIB_LICENSE = MIT +GIFLIB_LICENSE_FILES = COPYING + +GIFLIB_BINS = \ + gif2epsn gif2ps gif2rgb gif2x11 gifasm gifbg gifbuild gifburst gifclip \ + gifclrmp gifcolor gifcomb gifcompose gifecho giffiltr giffix gifflip \ + gifhisto gifinfo gifinter gifinto gifovly gifpos gifrotat \ + gifrsize gifspnge giftext giftool gifwedge icon2gif raw2gif rgb2gif \ + text2gif + +define GIFLIB_BINS_CLEANUP + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,$(GIFLIB_BINS)) +endef + +GIFLIB_POST_INSTALL_TARGET_HOOKS += GIFLIB_BINS_CLEANUP + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/git-crypt/Config.in b/buildroot/package/git-crypt/Config.in new file mode 100644 index 0000000..362fe9a --- /dev/null +++ b/buildroot/package/git-crypt/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_GIT_CRYPT + bool "git-crypt" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # git + select BR2_PACKAGE_GIT # runtime + select BR2_PACKAGE_OPENSSL + help + git-crypt enables transparent encryption and decryption of + files in a git repository. + + https://www.agwa.name/projects/git-crypt/ + +comment "git-crypt needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU diff --git a/buildroot/package/git-crypt/git-crypt.hash b/buildroot/package/git-crypt/git-crypt.hash new file mode 100644 index 0000000..8589f03 --- /dev/null +++ b/buildroot/package/git-crypt/git-crypt.hash @@ -0,0 +1,2 @@ +# Hash from: https://lists.cloudmutt.com/pipermail/git-crypt-announce/2015-May/000003.html +sha256 0a8f92c0a0a125bf768d0c054d947ca4e4b8d6556454b0e7e87fb907ee17cf06 git-crypt-0.5.0.tar.gz diff --git a/buildroot/package/git-crypt/git-crypt.mk b/buildroot/package/git-crypt/git-crypt.mk new file mode 100644 index 0000000..6cae456 --- /dev/null +++ b/buildroot/package/git-crypt/git-crypt.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# git-crypt +# +################################################################################ + +GIT_CRYPT_VERSION = 0.5.0 +GIT_CRYPT_SITE = https://www.agwa.name/projects/git-crypt/downloads +GIT_CRYPT_DEPENDENCIES = host-pkgconf openssl +GIT_CRYPT_LICENSE = GPL-3.0+, MIT +GIT_CRYPT_LICENSE_FILES = COPYING parse_options.hpp + +GIT_CRYPT_LIBS = `$(PKG_CONFIG_HOST_BINARY) --libs openssl` + +define GIT_CRYPT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + LDFLAGS="$(TARGET_LDFLAGS) $(GIT_CRYPT_LIBS)" PREFIX=/usr +endef + +define GIT_CRYPT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \ + PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/git/Config.in b/buildroot/package/git/Config.in new file mode 100644 index 0000000..d53921d --- /dev/null +++ b/buildroot/package/git/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_GIT + bool "git" + depends on BR2_USE_MMU # uses fork() + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Git is a free and open source distributed version control + system designed to handle everything from small to very large + projects. + + http://git-scm.com diff --git a/buildroot/package/git/git.hash b/buildroot/package/git/git.hash new file mode 100644 index 0000000..4bcc5ee --- /dev/null +++ b/buildroot/package/git/git.hash @@ -0,0 +1,4 @@ +# From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc +sha256 6e69b0e9c487e5da52a14d4829f0b6a28b2c18a0bb6fb67c0dc8b5b5658bd532 git-2.16.4.tar.xz +sha256 5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e COPYING +sha256 1922f45d2c49e390032c9c0ba6d7cac904087f7cec51af30c2b2ad022ce0e76a LGPL-2.1 diff --git a/buildroot/package/git/git.mk b/buildroot/package/git/git.mk new file mode 100644 index 0000000..ac7b8f2 --- /dev/null +++ b/buildroot/package/git/git.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# git +# +################################################################################ + +GIT_VERSION = 2.16.4 +GIT_SOURCE = git-$(GIT_VERSION).tar.xz +GIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git +GIT_LICENSE = GPL-2.0, LGPL-2.1+ +GIT_LICENSE_FILES = COPYING LGPL-2.1 +GIT_DEPENDENCIES = zlib $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +GIT_DEPENDENCIES += openssl +GIT_CONF_OPTS += --with-openssl +GIT_CONF_ENV_LIBS += $(if $(BR2_STATIC_LIBS),-lz) +else +GIT_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_PCRE2),y) +GIT_DEPENDENCIES += pcre2 +GIT_CONF_OPTS += --with-libpcre2 +else ifeq ($(BR2_PACKAGE_PCRE),y) +GIT_DEPENDENCIES += pcre +GIT_CONF_OPTS += --with-libpcre1 +GIT_MAKE_OPTS += NO_LIBPCRE1_JIT=1 +else +GIT_CONF_OPTS += --without-libpcre +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +GIT_DEPENDENCIES += libcurl +GIT_CONF_OPTS += --with-curl +GIT_CONF_ENV += \ + ac_cv_prog_curl_config=$(STAGING_DIR)/usr/bin/$(LIBCURL_CONFIG_SCRIPTS) +else +GIT_CONF_OPTS += --without-curl +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +GIT_DEPENDENCIES += expat +GIT_CONF_OPTS += --with-expat +else +GIT_CONF_OPTS += --without-expat +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +GIT_DEPENDENCIES += libiconv +GIT_CONF_ENV_LIBS += -liconv +GIT_CONF_OPTS += --with-iconv=/usr/lib +else +GIT_CONF_OPTS += --without-iconv +endif + +ifeq ($(BR2_PACKAGE_TCL),y) +GIT_DEPENDENCIES += tcl +GIT_CONF_OPTS += --with-tcltk +else +GIT_CONF_OPTS += --without-tcltk +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),) +GIT_MAKE_OPTS += NO_GETTEXT=1 +endif + +GIT_INSTALL_TARGET_OPTS = $(GIT_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install + +# assume yes for these tests, configure will bail out otherwise +# saying error: cannot run test program while cross compiling +GIT_CONF_ENV += \ + ac_cv_fread_reads_directories=yes \ + ac_cv_snprintf_returns_bogus=yes LIBS='$(GIT_CONF_ENV_LIBS)' + +$(eval $(autotools-package)) diff --git a/buildroot/package/glib-networking/Config.in b/buildroot/package/glib-networking/Config.in new file mode 100644 index 0000000..ec29623 --- /dev/null +++ b/buildroot/package/glib-networking/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_GLIB_NETWORKING + bool "glib-networking" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + Network-related GIO modules for glib. + +comment "glib-networking needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/glib-networking/glib-networking.hash b/buildroot/package/glib-networking/glib-networking.hash new file mode 100644 index 0000000..bbcecb7 --- /dev/null +++ b/buildroot/package/glib-networking/glib-networking.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/glib-networking/2.50/glib-networking-2.50.0.sha256sum +sha256 3f1a442f3c2a734946983532ce59ed49120319fdb10c938447c373d5e5286bee glib-networking-2.50.0.tar.xz diff --git a/buildroot/package/glib-networking/glib-networking.mk b/buildroot/package/glib-networking/glib-networking.mk new file mode 100644 index 0000000..10a3b70 --- /dev/null +++ b/buildroot/package/glib-networking/glib-networking.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# glib-networking +# +################################################################################ + +GLIB_NETWORKING_VERSION_MAJOR = 2.50 +GLIB_NETWORKING_VERSION = $(GLIB_NETWORKING_VERSION_MAJOR).0 +GLIB_NETWORKING_SITE = http://ftp.gnome.org/pub/gnome/sources/glib-networking/$(GLIB_NETWORKING_VERSION_MAJOR) +GLIB_NETWORKING_SOURCE = glib-networking-$(GLIB_NETWORKING_VERSION).tar.xz +GLIB_NETWORKING_INSTALL_STAGING = YES +GLIB_NETWORKING_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-pkgconf \ + host-intltool \ + libglib2 +GLIB_NETWORKING_CONF_OPTS = \ + --with-ca-certificates=/etc/ssl/certs/ca-certificates.crt +GLIB_NETWORKING_LICENSE = LGPL-2.0+ +GLIB_NETWORKING_LICENSE_FILES = COPYING +GLIB_NETWORKING_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) \ + GIO_MODULE_DIR=/usr/lib/gio/modules install + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +GLIB_NETWORKING_DEPENDENCIES += gnutls +GLIB_NETWORKING_CONF_OPTS += --with-libgcrypt-prefix=$(STAGING_DIR)/usr +else +GLIB_NETWORKING_CONF_OPTS += --without-gnutls +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/glibc/Config.in b/buildroot/package/glibc/Config.in new file mode 100644 index 0000000..57a2e83 --- /dev/null +++ b/buildroot/package/glibc/Config.in @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_BUILDROOT_GLIBC + +config BR2_PACKAGE_GLIBC + bool + default y + select BR2_PACKAGE_LINUX_HEADERS + select BR2_TOOLCHAIN_HAS_SSP + +endif diff --git a/buildroot/package/glibc/glibc.hash b/buildroot/package/glibc/glibc.hash new file mode 100644 index 0000000..890f523 --- /dev/null +++ b/buildroot/package/glibc/glibc.hash @@ -0,0 +1,4 @@ +# Locally calculated (fetched from Github) +sha256 1e18aee61dc51a5aaf7bfcb65ed01894aa82c3d3f7b9a01f20d59cd9db2f082b glibc-glibc-2.26-160-g4df8479e6b3baf365bd4eedbba922b73471e5d73.tar.gz +# Locally calculated (fetched from Github) +sha256 5aa9adeac09727db0b8a52794186563771e74d70410e9fd86431e339953fd4bb glibc-arc-2017.09-release.tar.gz diff --git a/buildroot/package/glibc/glibc.mk b/buildroot/package/glibc/glibc.mk new file mode 100644 index 0000000..562f025 --- /dev/null +++ b/buildroot/package/glibc/glibc.mk @@ -0,0 +1,130 @@ +################################################################################ +# +# glibc +# +################################################################################ + +ifeq ($(BR2_arc),y) +GLIBC_VERSION = arc-2017.09-release +GLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,glibc,$(GLIBC_VERSION)) +else +# Generate version string using: +# git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master +GLIBC_VERSION = glibc-2.26-160-g4df8479e6b3baf365bd4eedbba922b73471e5d73 +# Upstream doesn't officially provide an https download link. +# There is one (https://sourceware.org/git/glibc.git) but it's not reliable, +# sometimes the connection times out. So use an unofficial github mirror. +# When updating the version, check it on the official repository; +# *NEVER* decide on a version string by looking at the mirror. +# Then check that the mirror has been synced already (happens once a day.) +GLIBC_SITE = $(call github,bminor,glibc,$(GLIBC_VERSION)) +endif + +GLIBC_SRC_SUBDIR = . + +GLIBC_LICENSE = GPL-2.0+ (programs), LGPL-2.1+, BSD-3-Clause, MIT (library) +GLIBC_LICENSE_FILES = $(addprefix $(GLIBC_SRC_SUBDIR)/,COPYING COPYING.LIB LICENSES) + +# glibc is part of the toolchain so disable the toolchain dependency +GLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO + +# Before glibc is configured, we must have the first stage +# cross-compiler and the kernel headers +GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-gawk + +GLIBC_SUBDIR = build + +GLIBC_INSTALL_STAGING = YES + +GLIBC_INSTALL_STAGING_OPTS = install_root=$(STAGING_DIR) install + +# Thumb build is broken, build in ARM mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +GLIBC_EXTRA_CFLAGS += -marm +endif + +# MIPS64 defaults to n32 so pass the correct -mabi if +# we are using a different ABI. OABI32 is also used +# in MIPS so we pass -mabi=32 in this case as well +# even though it's not strictly necessary. +ifeq ($(BR2_MIPS_NABI64),y) +GLIBC_EXTRA_CFLAGS += -mabi=64 +else ifeq ($(BR2_MIPS_OABI32),y) +GLIBC_EXTRA_CFLAGS += -mabi=32 +endif + +ifeq ($(BR2_ENABLE_DEBUG),y) +GLIBC_EXTRA_CFLAGS += -g +endif + +# The stubs.h header is not installed by install-headers, but is +# needed for the gcc build. An empty stubs.h will work, as explained +# in http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html. The same trick +# is used by Crosstool-NG. +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_GLIBC),y) +define GLIBC_ADD_MISSING_STUB_H + mkdir -p $(STAGING_DIR)/usr/include/gnu + touch $(STAGING_DIR)/usr/include/gnu/stubs.h +endef +endif + +# Even though we use the autotools-package infrastructure, we have to +# override the default configure commands for several reasons: +# +# 1. We have to build out-of-tree, but we can't use the same +# 'symbolic link to configure' used with the gcc packages. +# +# 2. We have to execute the configure script with bash and not sh. +# +# Note that as mentionned in +# http://patches.openembedded.org/patch/38849/, glibc must be +# built with -O2, so we pass our own CFLAGS and CXXFLAGS below. +define GLIBC_CONFIGURE_CMDS + mkdir -p $(@D)/build + # Do the configuration + (cd $(@D)/build; \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="-O2 $(GLIBC_EXTRA_CFLAGS)" CPPFLAGS="" \ + CXXFLAGS="-O2 $(GLIBC_EXTRA_CFLAGS)" \ + $(SHELL) $(@D)/$(GLIBC_SRC_SUBDIR)/configure \ + ac_cv_path_BASH_SHELL=/bin/bash \ + libc_cv_forced_unwind=yes \ + libc_cv_ssp=no \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --enable-shared \ + $(if $(BR2_SOFT_FLOAT),--without-fp,--with-fp) \ + $(if $(BR2_x86_64),--enable-lock-elision) \ + --with-pkgversion="Buildroot" \ + --without-cvs \ + --disable-profile \ + --without-gd \ + --enable-obsolete-rpc \ + --enable-kernel=$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)) \ + --with-headers=$(STAGING_DIR)/usr/include) + $(GLIBC_ADD_MISSING_STUB_H) +endef + +# +# We also override the install to target commands since we only want +# to install the libraries, and nothing more. +# + +GLIBC_LIBS_LIB = \ + ld*.so.* libanl.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* \ + libm.so.* libnsl.so.* libpthread.so.* libresolv.so.* librt.so.* \ + libutil.so.* libnss_files.so.* libnss_dns.so.* libmvec.so.* + +ifeq ($(BR2_PACKAGE_GDB),y) +GLIBC_LIBS_LIB += libthread_db.so.* +endif + +define GLIBC_INSTALL_TARGET_CMDS + for libpattern in $(GLIBC_LIBS_LIB); do \ + $(call copy_toolchain_lib_root,$$libpattern) ; \ + done +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/glibc/nsswitch.conf b/buildroot/package/glibc/nsswitch.conf new file mode 100644 index 0000000..5c38491 --- /dev/null +++ b/buildroot/package/glibc/nsswitch.conf @@ -0,0 +1,13 @@ +# /etc/nsswitch.conf + +passwd: files +group: files +shadow: files + +hosts: files dns +networks: files dns + +protocols: files +services: files +ethers: files +rpc: files diff --git a/buildroot/package/glibmm/Config.in b/buildroot/package/glibmm/Config.in new file mode 100644 index 0000000..c7b4082 --- /dev/null +++ b/buildroot/package/glibmm/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_GLIBMM + bool "glibmm" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # regex_replace + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSIGC + help + The GLibmm package is a set of C++ bindings for GLib. + + http://www.gtkmm.org/ + +comment "glibmm needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/glibmm/glibmm.hash b/buildroot/package/glibmm/glibmm.hash new file mode 100644 index 0000000..570192e --- /dev/null +++ b/buildroot/package/glibmm/glibmm.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/glibmm/2.54/glibmm-2.54.1.sha256sum +sha256 7cc28c732b04d70ed34f0c923543129083cfb90580ea4a2b4be5b38802bf6a4a glibmm-2.54.1.tar.xz diff --git a/buildroot/package/glibmm/glibmm.mk b/buildroot/package/glibmm/glibmm.mk new file mode 100644 index 0000000..7fa13f2 --- /dev/null +++ b/buildroot/package/glibmm/glibmm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# glibmm +# +################################################################################ + +GLIBMM_VERSION_MAJOR = 2.54 +GLIBMM_VERSION = $(GLIBMM_VERSION_MAJOR).1 +GLIBMM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +GLIBMM_LICENSE_FILES = COPYING COPYING.tools +GLIBMM_SOURCE = glibmm-$(GLIBMM_VERSION).tar.xz +GLIBMM_SITE = http://ftp.gnome.org/pub/gnome/sources/glibmm/$(GLIBMM_VERSION_MAJOR) +GLIBMM_INSTALL_STAGING = YES +GLIBMM_DEPENDENCIES = libglib2 libsigc host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/glm/Config.in b/buildroot/package/glm/Config.in new file mode 100644 index 0000000..41b3608 --- /dev/null +++ b/buildroot/package/glm/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GLM + bool "glm" + depends on BR2_INSTALL_LIBSTDCPP + help + OpenGL Mathematics (GLM) + + http://glm.g-truc.net + +comment "glm needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/glm/glm.hash b/buildroot/package/glm/glm.hash new file mode 100644 index 0000000..c87d4ca --- /dev/null +++ b/buildroot/package/glm/glm.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a220e60f8711265595be3221e530d632d5823641ecd46a3a54bc174933bff14c glm-0.9.8.4.tar.gz diff --git a/buildroot/package/glm/glm.mk b/buildroot/package/glm/glm.mk new file mode 100644 index 0000000..1f23146 --- /dev/null +++ b/buildroot/package/glm/glm.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# glm +# +################################################################################ + +GLM_VERSION = 0.9.8.4 +GLM_SITE = $(call github,g-truc,glm,$(GLM_VERSION)) +GLM_LICENSE = MIT +GLM_LICENSE_FILES = copying.txt + +# GLM is a header-only library, it only makes sense +# to have it installed into the staging directory. +GLM_INSTALL_STAGING = YES +GLM_INSTALL_TARGET = NO + +$(eval $(cmake-package)) diff --git a/buildroot/package/glmark2/Config.in b/buildroot/package/glmark2/Config.in new file mode 100644 index 0000000..addd7a9 --- /dev/null +++ b/buildroot/package/glmark2/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_GLMARK2_EGL_GLES + bool + default y + depends on BR2_PACKAGE_MESA3D_OPENGL_EGL + depends on BR2_PACKAGE_MESA3D_OPENGL_ES + +config BR2_PACKAGE_GLMARK2_GL + bool + default y + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_MESA3D_DRI_DRIVER + +comment "glmark2 needs a toolchain w/ C++, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +comment "glmark2 needs an OpenGL or an openGL ES and EGL backend provided by mesa3d" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_INSTALL_LIBSTDCPP + depends on !BR2_PACKAGE_GLMARK2_GL && !BR2_PACKAGE_GLMARK2_EGL_GLES + +config BR2_PACKAGE_GLMARK2 + bool "glmark2" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + depends on BR2_PACKAGE_GLMARK2_GL || BR2_PACKAGE_GLMARK2_EGL_GLES + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + help + glmark2 is an OpenGL 2.0 and ES 2.0 benchmark. + + https://github.com/glmark2/glmark2 diff --git a/buildroot/package/glmark2/glmark2.hash b/buildroot/package/glmark2/glmark2.hash new file mode 100644 index 0000000..aeb8a78 --- /dev/null +++ b/buildroot/package/glmark2/glmark2.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 8800f3cab0575df217adc166b181930e1f881efb6f764f35872993ee78dea5f0 glmark2-9b1070fe9c5cf908f323909d3c8cbed08022abe8.tar.gz diff --git a/buildroot/package/glmark2/glmark2.mk b/buildroot/package/glmark2/glmark2.mk new file mode 100644 index 0000000..4eeaec7 --- /dev/null +++ b/buildroot/package/glmark2/glmark2.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# glmark2 +# +################################################################################ + +GLMARK2_VERSION = 9b1070fe9c5cf908f323909d3c8cbed08022abe8 +GLMARK2_SITE = $(call github,glmark2,glmark2,$(GLMARK2_VERSION)) +GLMARK2_LICENSE = GPL-3.0+, SGIv1 +GLMARK2_LICENSE_FILES = COPYING COPYING.SGI +GLMARK2_DEPENDENCIES = host-pkgconf jpeg libpng \ + $(if $(BR2_PACKAGE_HAS_LIBEGL),libegl) \ + $(if $(BR2_PACKAGE_HAS_LIBGLES),libgles) \ + $(if $(BR2_PACKAGE_HAS_LIBGL),libgl) + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +GLMARK2_DEPENDENCIES += xlib_libX11 +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGLES),yy) +GLMARK2_FLAVORS += x11-glesv2 +endif +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +GLMARK2_FLAVORS += x11-gl +endif +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGLES),yy) +GLMARK2_FLAVORS += drm-glesv2 +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGL),yy) +GLMARK2_FLAVORS += drm-gl +endif + +ifeq ($(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGLES),yyy) +GLMARK2_DEPENDENCIES += wayland +GLMARK2_FLAVORS += wayland-glesv2 +endif + +ifeq ($(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGL),yyy) +GLMARK2_DEPENDENCIES += wayland +GLMARK2_FLAVORS += wayland-gl +endif + +GLMARK2_CONF_OPTS += \ + --prefix=/usr \ + --with-flavors=$(subst $(space),$(comma),$(GLMARK2_FLAVORS)) + +$(eval $(waf-package)) diff --git a/buildroot/package/glog/Config.in b/buildroot/package/glog/Config.in new file mode 100644 index 0000000..534997a --- /dev/null +++ b/buildroot/package/glog/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GLOG + bool "glog" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + C++ implementation of the Google logging module + + https://github.com/google/glog + +comment "glog needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/glog/glog.hash b/buildroot/package/glog/glog.hash new file mode 100644 index 0000000..909e072 --- /dev/null +++ b/buildroot/package/glog/glog.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 7580e408a2c0b5a89ca214739978ce6ff480b5e7d8d7698a2aa92fadc484d1e0 glog-v0.3.5.tar.gz + +# Hash for License file: +sha256 0fc497129c5c69ff6f22da6933c7e4aaef082fde8437fd57680c2780100772a4 COPYING diff --git a/buildroot/package/glog/glog.mk b/buildroot/package/glog/glog.mk new file mode 100644 index 0000000..3f17529 --- /dev/null +++ b/buildroot/package/glog/glog.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# glog +# +################################################################################ + +GLOG_VERSION = v0.3.5 +GLOG_SITE = $(call github,google,glog,$(GLOG_VERSION)) +GLOG_INSTALL_STAGING = YES +GLOG_LICENSE = BSD-3-Clause +GLOG_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_GFLAGS),y) +GLOG_DEPENDENCIES = gflags +endif + +# glog can optionally use atomic __sync built-ins. However, its +# configure script only checks for the availability of the 4 bytes +# version, but the code also uses the 1 byte version. While this works +# on most architectures, it does not on architectures that implement +# only the 4 bytes version, such as Microblaze. So if the architecture +# does not implement the 1 byte version, we hint the configure script +# that atomic built-ins should not be used. +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_1),) +GLOG_CONF_ENV += ac_cv___sync_val_compare_and_swap=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/glorytun/Config.in b/buildroot/package/glorytun/Config.in new file mode 100644 index 0000000..82d248f --- /dev/null +++ b/buildroot/package/glorytun/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_GLORYTUN + bool "glorytun" + select BR2_PACKAGE_LIBSODIUM + help + A small, simple and secure VPN. + + https://github.com/angt/glorytun diff --git a/buildroot/package/glorytun/glorytun.hash b/buildroot/package/glorytun/glorytun.hash new file mode 100644 index 0000000..891af20 --- /dev/null +++ b/buildroot/package/glorytun/glorytun.hash @@ -0,0 +1,2 @@ +sha256 76849b1568119cf0834749db56d4882966863d31351c21c1b22f373f0c97a498 glorytun-0.0.93-mud.tar.gz +sha256 bd418f8ef7d62f2c89e3aa1e5dc41c7d7a6212eb1cdb4d39a26a5bd333e1b4a3 LICENSE diff --git a/buildroot/package/glorytun/glorytun.mk b/buildroot/package/glorytun/glorytun.mk new file mode 100644 index 0000000..233e1fe --- /dev/null +++ b/buildroot/package/glorytun/glorytun.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# glorytun +# +################################################################################ + +GLORYTUN_VERSION = 0.0.93-mud +GLORYTUN_SITE = https://github.com/angt/glorytun/releases/download/v$(GLORYTUN_VERSION) +GLORYTUN_DEPENDENCIES = libsodium host-pkgconf +GLORYTUN_LICENSE = BSD-2-clause +GLORYTUN_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/buildroot/package/glpk/Config.in b/buildroot/package/glpk/Config.in new file mode 100644 index 0000000..712b4e6 --- /dev/null +++ b/buildroot/package/glpk/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_GLPK + bool "glpk" + depends on BR2_PACKAGE_HOST_PKGCONF + help + The GLPK (GNU Linear Programming Kit) package is intended for solving large-scale linear programming (LP), + mixed integer programming (MIP), and other related problems. + + https://www.gnu.org/software/glpk/ diff --git a/buildroot/package/glpk/glpk.mk b/buildroot/package/glpk/glpk.mk new file mode 100644 index 0000000..1e7a35a --- /dev/null +++ b/buildroot/package/glpk/glpk.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# glpk +# +################################################################################ + +GLPK_VERSION = 4.65 +GLPK_SOURCE = glpk-$(GLPK_VERSION).tar.gz +GLPK_SITE = ftp://ftp.mirror.nl/pub/mirror/gnu/glpk +GLPK_DEPENDENCIES = host-pkgconf +GLPK_INSTALL_STAGING = YES +GLPK_LICENSE = GNU General Public License - v 3.0 +GLPK_LICENSE_FILES = LICENSE +#GLPK_CONF_OPTS = --with-blas=openblas --with-blas-lib=-lopenblas + +$(eval $(autotools-package)) diff --git a/buildroot/package/gmp/Config.in b/buildroot/package/gmp/Config.in new file mode 100644 index 0000000..226e088 --- /dev/null +++ b/buildroot/package/gmp/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_GMP + bool "gmp" + help + GNU Multiple Precision Arithmetic Library. + + http://gmplib.org/ diff --git a/buildroot/package/gmp/gmp.hash b/buildroot/package/gmp/gmp.hash new file mode 100644 index 0000000..f4793cd --- /dev/null +++ b/buildroot/package/gmp/gmp.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 87b565e89a9a684fe4ebeeddb8399dce2599f9c9049854ca8c0dfbdea0e21912 gmp-6.1.2.tar.xz diff --git a/buildroot/package/gmp/gmp.mk b/buildroot/package/gmp/gmp.mk new file mode 100644 index 0000000..7236e37 --- /dev/null +++ b/buildroot/package/gmp/gmp.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# gmp +# +################################################################################ + +GMP_VERSION = 6.1.2 +GMP_SITE = $(BR2_GNU_MIRROR)/gmp +GMP_SOURCE = gmp-$(GMP_VERSION).tar.xz +GMP_INSTALL_STAGING = YES +GMP_LICENSE = LGPL-3.0+ or GPL-2.0+ +GMP_LICENSE_FILES = COPYING.LESSERv3 COPYINGv2 +GMP_DEPENDENCIES = host-m4 +HOST_GMP_DEPENDENCIES = host-m4 + +# GMP doesn't support assembly for coldfire or mips r6 ISA yet +# Disable for ARM v7m since it has different asm constraints +ifeq ($(BR2_m68k_cf)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6)$(BR2_ARM_CPU_ARMV7M),y) +GMP_CONF_OPTS += --disable-assembly +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gmpc/Config.in b/buildroot/package/gmpc/Config.in new file mode 100644 index 0000000..1aa7425 --- /dev/null +++ b/buildroot/package/gmpc/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_GMPC + bool "gmpc" + depends on BR2_PACKAGE_LIBGTK2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBMPD + select BR2_PACKAGE_LIBSOUP + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_XLIB_LIBICE + select BR2_PACKAGE_XLIB_LIBSM + select BR2_PACKAGE_XLIB_LIBX11 + help + Gnome Music Player Client is a GNOME/GTK2.2 client for + Music Player Daemon. + + http://gmpcwiki.sarine.nl/index.php?title=GMPC + +comment "gmpc needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 && BR2_PACKAGE_LIBGTK2 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gmpc/gmpc.hash b/buildroot/package/gmpc/gmpc.hash new file mode 100644 index 0000000..cd39822 --- /dev/null +++ b/buildroot/package/gmpc/gmpc.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a69414f35396846733632ca9619921d7acda537ffd6d49bd84b444945cb76b2c gmpc-11.8.16.tar.gz diff --git a/buildroot/package/gmpc/gmpc.mk b/buildroot/package/gmpc/gmpc.mk new file mode 100644 index 0000000..40b77eb --- /dev/null +++ b/buildroot/package/gmpc/gmpc.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# gmpc +# +################################################################################ + +GMPC_VERSION = 11.8.16 +GMPC_SITE = http://download.sarine.nl/Programs/gmpc/$(GMPC_VERSION) +GMPC_CONF_ENV = ac_cv_path_GOB2=$(GOB2_HOST_BINARY) +GMPC_CONF_OPTS = --disable-mmkeys --disable-unique +GMPC_LICENSE = GPL-2.0+ +GMPC_LICENSE_FILES = COPYING +GMPC_DEPENDENCIES = host-gob2 host-intltool host-pkgconf host-vala \ + libglib2 libgtk2 libmpd libsoup sqlite \ + xlib_libICE xlib_libSM xlib_libX11 \ + $(TARGET_NLS_DEPENDENCIES) + +$(eval $(autotools-package)) diff --git a/buildroot/package/gmrender-resurrect/Config.in b/buildroot/package/gmrender-resurrect/Config.in new file mode 100644 index 0000000..db655ad --- /dev/null +++ b/buildroot/package/gmrender-resurrect/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GMRENDER_RESURRECT + bool "gmrender-resurrect" + depends on BR2_USE_WCHAR # gstreamer1 -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer1 -> libglib2, libupnp + depends on BR2_USE_MMU # gstreamer1 + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE # run-time only + select BR2_PACKAGE_LIBUPNP + help + UPnP (DLNA) media renderer based on gstreamer + + https://github.com/hzeller/gmrender-resurrect + +comment "gmrender-resurrect needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gmrender-resurrect/gmrender-resurrect.hash b/buildroot/package/gmrender-resurrect/gmrender-resurrect.hash new file mode 100644 index 0000000..522bd2a --- /dev/null +++ b/buildroot/package/gmrender-resurrect/gmrender-resurrect.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 dcbde3601c3389e8dd21fe1842a92abf4cc06f6e3a375f1df63fdbf784a6650b gmrender-resurrect-33600ab663f181c4f4f5c48aba25bf961760a300.tar.gz diff --git a/buildroot/package/gmrender-resurrect/gmrender-resurrect.mk b/buildroot/package/gmrender-resurrect/gmrender-resurrect.mk new file mode 100644 index 0000000..2b6a56f --- /dev/null +++ b/buildroot/package/gmrender-resurrect/gmrender-resurrect.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# gmrender-resurrect +# +################################################################################ + +GMRENDER_RESURRECT_VERSION = 33600ab663f181c4f4f5c48aba25bf961760a300 +GMRENDER_RESURRECT_SITE = $(call github,hzeller,gmrender-resurrect,$(GMRENDER_RESURRECT_VERSION)) +# Original distribution does not have default configure, +# so we need to autoreconf: +GMRENDER_RESURRECT_AUTORECONF = YES +GMRENDER_RESURRECT_LICENSE = GPL-2.0+ +GMRENDER_RESURRECT_LICENSE_FILES = COPYING +GMRENDER_RESURRECT_DEPENDENCIES = gstreamer1 libupnp + +$(eval $(autotools-package)) diff --git a/buildroot/package/gnu-efi/0001-Allow-CFLAGS-CPPFLAGS-to-be-completed-from-the-envir.patch b/buildroot/package/gnu-efi/0001-Allow-CFLAGS-CPPFLAGS-to-be-completed-from-the-envir.patch new file mode 100644 index 0000000..1150738 --- /dev/null +++ b/buildroot/package/gnu-efi/0001-Allow-CFLAGS-CPPFLAGS-to-be-completed-from-the-envir.patch @@ -0,0 +1,103 @@ +From eea0f62a1f6712f10afe47635b80a061505d2d2f Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 17 Jan 2015 18:33:37 +0100 +Subject: [PATCH 1/2] Allow CFLAGS/CPPFLAGS to be completed from the + environment + +Buildroot passes its own CPPFLAGS and CFLAGS in the environment, so +the CFLAGS += and CPPFLAGS += statements in gnu-efi Makefile have no +effect. Change these to override += so that they extend the +flags passed by Buildroot. + +[Romain: + - rebase on top of 3.0.1 release] +[Bernd: + - rebase on top of 3.0.5 release] +[Benoît: + - rebase on top of 3.0.6 release] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Romain Naour +Signed-off-by: Bernd Kuhls +Signed-off-by: Benoît Allard +--- + Make.defaults | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/Make.defaults b/Make.defaults +index 51bd7d8..7d7e8e7 100755 +--- a/Make.defaults ++++ b/Make.defaults +@@ -85,14 +85,14 @@ OBJDIR := $(TOPDIR)/$(ARCH) + # + + # Arch-specific compilation flags +-CPPFLAGS += -DCONFIG_$(ARCH) ++override CPPFLAGS += -DCONFIG_$(ARCH) + + ifeq ($(ARCH),ia64) +- CFLAGS += -mfixed-range=f32-f127 ++ override CFLAGS += -mfixed-range=f32-f127 + endif + + ifeq ($(ARCH),ia32) +- CFLAGS += -mno-mmx -mno-sse ++ override CFLAGS += -mno-mmx -mno-sse + ifeq ($(HOSTARCH),x86_64) + ARCH3264 = -m32 + endif +@@ -109,19 +109,19 @@ ifeq ($(ARCH),x86_64) + && [ $(GCCMINOR) -ge "7" ] ) ) \ + && echo 1) + ifeq ($(GCCNEWENOUGH),1) +- CPPFLAGS += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11 ++ override CPPFLAGS += -DGNU_EFI_USE_MS_ABI -maccumulate-outgoing-args --std=c11 + else ifeq ($(USING_CLANG),clang) +- CPPFLAGS += -DGNU_EFI_USE_MS_ABI --std=c11 ++ override CPPFLAGS += -DGNU_EFI_USE_MS_ABI --std=c11 + endif + +- CFLAGS += -mno-red-zone ++ override CFLAGS += -mno-red-zone + ifeq ($(HOSTARCH),ia32) + ARCH3264 = -m64 + endif + endif + + ifeq ($(ARCH),mips64el) +- CFLAGS += -march=mips64r2 ++ override CFLAGS += -march=mips64r2 + ARCH3264 = -mabi=64 + endif + +@@ -142,7 +142,7 @@ export LIBGCC=$(shell $(CC) $(ARCH3264) + endif + + ifeq ($(ARCH),arm) +-CFLAGS += -marm ++override CFLAGS += -marm + endif + + # Generic compilation flags +@@ -152,15 +152,15 @@ INCDIR += -I$(SRCDIR) -I$(TOPDIR)/inc - + # Only enable -fpic for non MinGW compilers (unneeded on MinGW) + GCCMACHINE := $(shell $(CC) -dumpmachine) + ifneq (mingw32,$(findstring mingw32, $(GCCMACHINE))) +- CFLAGS += -fpic ++ override CFLAGS += -fpic + endif + + ifeq (FreeBSD, $(findstring FreeBSD, $(OS))) +-CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \ ++override CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \ + -fshort-wchar -fno-strict-aliasing \ + -ffreestanding -fno-stack-protector + else +-CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \ ++override CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \ + -fshort-wchar -fno-strict-aliasing \ + -fno-merge-all-constants -ffreestanding -fno-stack-protector \ + -fno-stack-check +-- +2.11.0 + diff --git a/buildroot/package/gnu-efi/Config.in b/buildroot/package/gnu-efi/Config.in new file mode 100644 index 0000000..d8d92c2 --- /dev/null +++ b/buildroot/package/gnu-efi/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GNU_EFI + bool "gnu-efi" + depends on BR2_ARM_CPU_HAS_ARM || BR2_aarch64 || \ + BR2_aarch64_be || BR2_i386 || BR2_x86_64 + help + Develop EFI applications for ARM-64, ARM-32, x86_64, IA-64 + (IPF), IA-32 (x86), and MIPS platforms using the GNU toolchain + and the EFI development environment. + + http://gnu-efi.sourceforge.net/ diff --git a/buildroot/package/gnu-efi/gnu-efi.hash b/buildroot/package/gnu-efi/gnu-efi.hash new file mode 100644 index 0000000..1bd0f8c --- /dev/null +++ b/buildroot/package/gnu-efi/gnu-efi.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/gnu-efi/files +md5 46f633758a8a37db9fd6909fe270c26b gnu-efi-3.0.6.tar.bz2 +sha1 9f0f75b64c84423f3386da6f3200f5ed7471d9cb gnu-efi-3.0.6.tar.bz2 +# Locally computed +sha256 21515902d80fbea23328a61d70d3d51a47204abd1507ebfa27550a7b9bf22c91 gnu-efi-3.0.6.tar.bz2 diff --git a/buildroot/package/gnu-efi/gnu-efi.mk b/buildroot/package/gnu-efi/gnu-efi.mk new file mode 100644 index 0000000..d55e027 --- /dev/null +++ b/buildroot/package/gnu-efi/gnu-efi.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# gnu-efi +# +################################################################################ + +GNU_EFI_VERSION = 3.0.6 +GNU_EFI_SOURCE = gnu-efi-$(GNU_EFI_VERSION).tar.bz2 +GNU_EFI_SITE = http://downloads.sourceforge.net/project/gnu-efi +GNU_EFI_INSTALL_STAGING = YES +GNU_EFI_LICENSE = BSD-3-Clause and/or GPL-2.0+ (gnuefi), BSD-3-Clause (efilib) +GNU_EFI_LICENSE_FILES = README.efilib + +# gnu-efi is a set of library and header files used to build +# standalone EFI applications such as bootloaders. There is no point +# in installing these libraries to the target. +GNU_EFI_INSTALL_TARGET = NO + +ifeq ($(BR2_i386),y) +GNU_EFI_PLATFORM = ia32 +else ifeq ($(BR2_x86_64),y) +GNU_EFI_PLATFORM = x86_64 +else ifeq ($(BR2_arm)$(BR2_armeb),y) +GNU_EFI_PLATFORM = arm +else ifeq ($(BR2_aarch64)$(BR2_aarch64_be),y) +GNU_EFI_PLATFORM = aarch64 +endif + +define GNU_EFI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + ARCH=$(GNU_EFI_PLATFORM) +endef + +define GNU_EFI_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + INSTALLROOT=$(STAGING_DIR) \ + PREFIX=/usr ARCH=$(GNU_EFI_PLATFORM) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/gnuchess/Config.in b/buildroot/package/gnuchess/Config.in new file mode 100644 index 0000000..0ddd288 --- /dev/null +++ b/buildroot/package/gnuchess/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GNUCHESS + bool "gnuchess" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_FLEX + help + GNU Chess lets most modern computers play a full game of + chess. + + http://ftp.gnu.org/pub/gnu/chess + +comment "gnuchess needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gnuchess/gnuchess.hash b/buildroot/package/gnuchess/gnuchess.hash new file mode 100644 index 0000000..064a845 --- /dev/null +++ b/buildroot/package/gnuchess/gnuchess.hash @@ -0,0 +1,2 @@ +# sha256 locally computed +sha256 3c425c0264f253fc5cc2ba969abe667d77703c728770bd4b23c456cbe5e082ef gnuchess-6.2.4.tar.gz diff --git a/buildroot/package/gnuchess/gnuchess.mk b/buildroot/package/gnuchess/gnuchess.mk new file mode 100644 index 0000000..1465ab0 --- /dev/null +++ b/buildroot/package/gnuchess/gnuchess.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# gnuchess +# +################################################################################ + +GNUCHESS_VERSION = 6.2.4 +GNUCHESS_SITE = $(BR2_GNU_MIRROR)/chess +GNUCHESS_LICENSE = GPL-2.0+ +GNUCHESS_LICENSE_FILES = COPYING + +GNUCHESS_DEPENDENCIES = host-flex flex +GNUCHESS_DEPENDENCIES += $(if $(BR2_PACKAGE_READLINE),readline) \ + $(TARGET_NLS_DEPENDENCIES) + +$(eval $(autotools-package)) diff --git a/buildroot/package/gnupg/Config.in b/buildroot/package/gnupg/Config.in new file mode 100644 index 0000000..7c31612 --- /dev/null +++ b/buildroot/package/gnupg/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_GNUPG + bool "gnupg" + depends on !BR2_PACKAGE_GNUPG2 + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_NCURSES + help + GnuPG is the GNU project's complete and free implementation + of the OpenPGP standard as defined by RFC4880. GnuPG allows + to encrypt and sign your data and communication, features a + versatile key management system as well as access modules + for all kinds of public key directories. GnuPG, also known + as GPG, is a command line tool with features for easy + integration with other applications. + + http://gnupg.org/ + +if BR2_PACKAGE_GNUPG + +config BR2_PACKAGE_GNUPG_AES + bool "AES support" + help + Support for the AES cipher + +config BR2_PACKAGE_GNUPG_RSA + bool "RSA support" + help + Support for RSA public key algorithm + +config BR2_PACKAGE_GNUPG_GPGV + bool "gpgv" + help + gpgv is an OpenPGP signature verification tool. + + This program is actually a stripped-down version of gpg + which is only able to check signatures. It is somewhat + smaller than the fully-blown gpg and uses a different (and + simpler) way to check that the public keys used to make the + signature are valid. There are no configuration files and + only a few options are implemented. + +config BR2_PACKAGE_GNUPG_GPGSPLIT + bool "gpgsplit" + help + gpgsplit splits an OpenPGP message into packets. + +endif diff --git a/buildroot/package/gnupg/Config.in.host b/buildroot/package/gnupg/Config.in.host new file mode 100644 index 0000000..3686415 --- /dev/null +++ b/buildroot/package/gnupg/Config.in.host @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HOST_GNUPG + bool "host gnupg" + help + GnuPG is the GNU project's complete and free implementation + of the OpenPGP standard as defined by RFC4880. GnuPG allows + to encrypt and sign your data and communication, features a + versatile key management system as well as access modules + for all kinds of public key directories. GnuPG, also known + as GPG, is a command line tool with features for easy + integration with other applications. + + http://gnupg.org/ diff --git a/buildroot/package/gnupg/gnupg.hash b/buildroot/package/gnupg/gnupg.hash new file mode 100644 index 0000000..3bacdf6 --- /dev/null +++ b/buildroot/package/gnupg/gnupg.hash @@ -0,0 +1,3 @@ +# Locally computed based on signature +# https://gnupg.org/ftp/gcrypt/gnupg/gnupg-1.4.23.tar.bz2.sig +sha256 c9462f17e651b6507848c08c430c791287cd75491f8b5a8b50c6ed46b12678ba gnupg-1.4.23.tar.bz2 diff --git a/buildroot/package/gnupg/gnupg.mk b/buildroot/package/gnupg/gnupg.mk new file mode 100644 index 0000000..ac90478 --- /dev/null +++ b/buildroot/package/gnupg/gnupg.mk @@ -0,0 +1,83 @@ +################################################################################ +# +# gnupg +# +################################################################################ + +GNUPG_VERSION = 1.4.23 +GNUPG_SOURCE = gnupg-$(GNUPG_VERSION).tar.bz2 +GNUPG_SITE = https://gnupg.org/ftp/gcrypt/gnupg +GNUPG_LICENSE = GPL-3.0+ +GNUPG_LICENSE_FILES = COPYING +GNUPG_DEPENDENCIES = zlib ncurses $(if $(BR2_PACKAGE_LIBICONV),libiconv) +GNUPG_CONF_ENV = ac_cv_sys_symbol_underscore=no +GNUPG_CONF_OPTS = \ + --disable-rpath \ + --enable-minimal \ + --disable-regex \ + --enable-sha256 \ + --enable-sha512 + +HOST_GNUPG_DEPENDENCIES = host-zlib host-ncurses +HOST_GNUPG_CONF_OPTS = \ + --disable-rpath \ + --enable-minimal \ + --disable-regex \ + --enable-sha256 \ + --enable-sha512 \ + --enable-aes \ + --enable-rsa \ + --without-libcurl \ + --without-readline + +# gnupg doesn't support assembly for coldfire +ifeq ($(BR2_m68k_cf),y) +GNUPG_CONF_OPTS += --disable-asm +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +GNUPG_CONF_OPTS += --enable-bzip2 +GNUPG_DEPENDENCIES += bzip2 +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +GNUPG_CONF_ENV += ac_cv_path__libcurl_config=$(STAGING_DIR)/usr/bin/curl-config +GNUPG_DEPENDENCIES += libcurl +else +GNUPG_CONF_OPTS += --without-libcurl +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +GNUPG_DEPENDENCIES += readline +else +GNUPG_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_GNUPG_AES),y) +GNUPG_CONF_OPTS += --enable-aes +else +GNUPG_CONF_OPTS += --disable-aes +endif + +ifeq ($(BR2_PACKAGE_GNUPG_RSA),y) +GNUPG_CONF_OPTS += --enable-rsa +else +GNUPG_CONF_OPTS += --disable-rsa +endif + +ifneq ($(BR2_PACKAGE_GNUPG_GPGV),y) +define GNUPG_REMOVE_GPGV + rm -f $(TARGET_DIR)/usr/bin/gpgv +endef +GNUPG_POST_INSTALL_TARGET_HOOKS += GNUPG_REMOVE_GPGV +endif + +ifneq ($(BR2_PACKAGE_GNUPG_GPGSPLIT),y) +define GNUPG_REMOVE_GPGSPLIT + rm -f $(TARGET_DIR)/usr/bin/gpgsplit +endef +GNUPG_POST_INSTALL_TARGET_HOOKS += GNUPG_REMOVE_GPGSPLIT +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gnupg2/Config.in b/buildroot/package/gnupg2/Config.in new file mode 100644 index 0000000..ef1817e --- /dev/null +++ b/buildroot/package/gnupg2/Config.in @@ -0,0 +1,43 @@ +comment "gnupg2 needs a toolchain w/ threads and dynamic library support" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GNUPG2 + bool "gnupg2" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + depends on BR2_TOOLCHAIN_HAS_THREADS # libnpth + depends on BR2_USE_MMU # libassuan, libnpth + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBGPG_ERROR + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBASSUAN + select BR2_PACKAGE_LIBKSBA + select BR2_PACKAGE_LIBNPTH + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + GnuPG is the GNU project's complete and free implementation + of the OpenPGP standard as defined by RFC4880. GnuPG allows + to encrypt and sign your data and communication, features a + versatile key management system as well as access modules + for all kinds of public key directories. GnuPG, also known + as GPG, is a command line tool with features for easy + integration with other applications. + + http://gnupg.org/ + +if BR2_PACKAGE_GNUPG2 + +config BR2_PACKAGE_GNUPG2_GPGV + bool "gpgv" + help + gpgv is an OpenPGP signature verification tool. + + This program is actually a stripped-down version of gpg + which is only able to check signatures. It is somewhat + smaller than the fully-blown gpg and uses a different (and + simpler) way to check that the public keys used to make the + signature are valid. There are no configuration files and + only a few options are implemented. + +endif diff --git a/buildroot/package/gnupg2/gnupg2.hash b/buildroot/package/gnupg2/gnupg2.hash new file mode 100644 index 0000000..f5890c5 --- /dev/null +++ b/buildroot/package/gnupg2/gnupg2.hash @@ -0,0 +1,6 @@ +# From https://lists.gnupg.org/pipermail/gnupg-announce/2018q2/000425.html +sha1 d87553a125832ea90e8aeb3ceeecf24f88de56fb gnupg-2.2.8.tar.bz2 +# Calculated based on the hash above and signature +# https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.8.tar.bz2.sig +sha256 777b4cb8ced21965a5053d4fa20fe11484f0a478f3d011cef508a1a49db50dcd gnupg-2.2.8.tar.bz2 +sha256 bc2d6664f6276fa0a72d57633b3ae68dc7dcb677b71018bf08c8e93e509f1357 COPYING diff --git a/buildroot/package/gnupg2/gnupg2.mk b/buildroot/package/gnupg2/gnupg2.mk new file mode 100644 index 0000000..3151860 --- /dev/null +++ b/buildroot/package/gnupg2/gnupg2.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# gnupg2 +# +################################################################################ + +GNUPG2_VERSION = 2.2.8 +GNUPG2_SOURCE = gnupg-$(GNUPG2_VERSION).tar.bz2 +GNUPG2_SITE = https://gnupg.org/ftp/gcrypt/gnupg +GNUPG2_LICENSE = GPL-3.0+ +GNUPG2_LICENSE_FILES = COPYING +GNUPG2_DEPENDENCIES = zlib libgpg-error libgcrypt libassuan libksba libnpth \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) host-pkgconf + +GNUPG2_CONF_OPTS = \ + --disable-rpath --disable-regex \ + --with-libgpg-error-prefix=$(STAGING_DIR)/usr \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr \ + --with-libassuan-prefix=$(STAGING_DIR)/usr \ + --with-ksba-prefix=$(STAGING_DIR)/usr \ + --with-npth-prefix=$(STAGING_DIR)/usr + +ifneq ($(BR2_PACKAGE_GNUPG2_GPGV),y) +define GNUPG2_REMOVE_GPGV + rm -f $(TARGET_DIR)/usr/bin/gpgv +endef +GNUPG2_POST_INSTALL_TARGET_HOOKS += GNUPG2_REMOVE_GPGV +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +GNUPG2_CONF_OPTS += --enable-bzip2 --with-bzip2=$(STAGING_DIR) +GNUPG2_DEPENDENCIES += bzip2 +else +GNUPG2_CONF_OPTS += --disable-bzip2 +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +GNUPG2_CONF_OPTS += --enable-gnutls +GNUPG2_DEPENDENCIES += gnutls +else +GNUPG2_CONF_OPTS += --disable-gnutls +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +GNUPG2_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/libusb-1.0" +GNUPG2_CONF_OPTS += --enable-ccid-driver +GNUPG2_DEPENDENCIES += libusb +else +GNUPG2_CONF_OPTS += --disable-ccid-driver +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +GNUPG2_CONF_OPTS += --with-readline=$(STAGING_DIR) +GNUPG2_DEPENDENCIES += readline +else +GNUPG2_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +GNUPG2_CONF_OPTS += --enable-sqlite +GNUPG2_DEPENDENCIES += sqlite +else +GNUPG2_CONF_OPTS += --disable-sqlite +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gnuplot/0001-configure-add-without-demo-option.patch b/buildroot/package/gnuplot/0001-configure-add-without-demo-option.patch new file mode 100644 index 0000000..a9abfd0 --- /dev/null +++ b/buildroot/package/gnuplot/0001-configure-add-without-demo-option.patch @@ -0,0 +1,67 @@ +Add options to enable/disable docs and demos + +Originally written by Anthony Viallard +. + +[Vincent: adapt patch to 5.0.5 version] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Vicente Olivert Riera + +diff -rup a/configure.in b/configure.in +--- a/configure.in 2016-09-07 05:14:29.000000000 +0100 ++++ b/configure.in 2016-12-01 12:09:31.487464774 +0000 +@@ -818,6 +818,16 @@ if test "$with_cwdrc" = yes; then + [ Define if you want to read .gnuplot from current directory (SECURITY RISK!).]) + fi + ++dnl Whether we want to build the doc files ++dnl Does nothing here, is passed on to the doc subdir ++AC_ARG_ENABLE(doc,dnl ++[ --disable-doc do not build doc files]) ++ ++dnl Whether we want to build the demo files ++dnl Does nothing here, is passed on to the demo subdir ++AC_ARG_ENABLE(demo,dnl ++[ --disable-demo do not build demo files]) ++ + dnl Sort help/subtopic tables by row or column + AC_ARG_WITH(row-help,dnl + [ --with-row-help format help and subtopic tables by row (default) +@@ -1303,6 +1313,24 @@ fi + dnl No configuration option for this one yet + AC_DEFINE(MAX_PARALLEL_AXES,7, [Maximum number of parallel axes supported]) + ++dnl build doc files ++if test "$enable_doc" != no; then ++ AC_CONFIG_SUBDIRS(docs) ++ DOCSUBDIR=docs ++else ++ DOCSUBDIR= ++fi ++AC_SUBST(DOCSUBDIR) ++ ++dnl build demo files ++if test "$enable_demo" != no; then ++ AC_CONFIG_SUBDIRS(demo) ++ DEMOSUBDIR=demo ++else ++ DEMOSUBDIR= ++fi ++AC_SUBST(DEMOSUBDIR) ++ + dnl Substitute variables + AC_SUBST(PACKAGE) + AC_SUBST(VERSION_MAJOR) +diff -rup a/Makefile.am b/Makefile.am +--- a/Makefile.am 2014-05-30 17:38:08.000000000 +0100 ++++ b/Makefile.am 2016-12-01 12:09:31.488464794 +0000 +@@ -1,7 +1,7 @@ + ## Process this file with automake to produce Makefile.in -*-Makefile-*- + AUTOMAKE_OPTIONS = foreign + +-SUBDIRS = config m4 term src docs $(LISPDIR) man demo tutorial share ++SUBDIRS = config m4 term src $(DOCSUBDIR) $(LISPDIR) man $(DEMOSUBDIR) tutorial share + + EXTRA_DIST = BUGS CodeStyle Copyright FAQ.pdf GNUmakefile INSTALL INSTALL.gnu \ + Makefile.maint PATCHLEVEL PGPKEYS PORTING README RELEASE_NOTES \ diff --git a/buildroot/package/gnuplot/0002-use-gdlib-config-properly.patch b/buildroot/package/gnuplot/0002-use-gdlib-config-properly.patch new file mode 100644 index 0000000..690a826 --- /dev/null +++ b/buildroot/package/gnuplot/0002-use-gdlib-config-properly.patch @@ -0,0 +1,27 @@ +Fix usage of gdlib-config + +gnuplot configure.in script properly takes care of finding +gdlib-config using AC_PATH_PROG... but then directly uses gdlib-config +instead of going through the GDLIB_CONFIG variable that AC_PATH_PROG +has defined. Which means that whenever a gdlib-config binary not in +the PATH is being used, it does not use it. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.in +=================================================================== +--- a/configure.in ++++ b/configure.in +@@ -537,9 +537,9 @@ + if test "$with_gd" != no; then + AC_PATH_PROG([GDLIB_CONFIG], [gdlib-config]) + if test -n "$GDLIB_CONFIG"; then +- libgd_CPPFLAGS=`gdlib-config --cflags` +- libgd_LDFLAGS=`gdlib-config --ldflags` +- libgd_LIBS=`gdlib-config --libs` ++ libgd_CPPFLAGS=`$GDLIB_CONFIG --cflags` ++ libgd_LDFLAGS=`$GDLIB_CONFIG --ldflags` ++ libgd_LIBS=`$GDLIB_CONFIG --libs` + elif test -d "$with_gd"; then + libgd_CPPFLAGS="-I$with_gd/include" + libgd_LDFLAGS="-L$with_gd/lib" diff --git a/buildroot/package/gnuplot/Config.in b/buildroot/package/gnuplot/Config.in new file mode 100644 index 0000000..603c194 --- /dev/null +++ b/buildroot/package/gnuplot/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_GNUPLOT + bool "gnuplot" + help + A portable command-line driven graphing utility. + + http://www.gnuplot.info/ diff --git a/buildroot/package/gnuplot/gnuplot.hash b/buildroot/package/gnuplot/gnuplot.hash new file mode 100644 index 0000000..1ea8c28 --- /dev/null +++ b/buildroot/package/gnuplot/gnuplot.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/gnuplot/files/gnuplot/5.0.6/ +md5 8ec46520a86a61163a701b00404faf1a gnuplot-5.0.6.tar.gz +sha1 f7b8948166b22e5bd658d5cf7579716f4821dba0 gnuplot-5.0.6.tar.gz +# Locally computed +sha256 5bbe4713e555c2e103b7d4ffd45fca69551fff09cf5c3f9cb17428aaacc9b460 gnuplot-5.0.6.tar.gz diff --git a/buildroot/package/gnuplot/gnuplot.mk b/buildroot/package/gnuplot/gnuplot.mk new file mode 100644 index 0000000..d59605c --- /dev/null +++ b/buildroot/package/gnuplot/gnuplot.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# gnuplot +# +################################################################################ + +GNUPLOT_VERSION = 5.0.6 +GNUPLOT_SITE = http://downloads.sourceforge.net/project/gnuplot/gnuplot/$(GNUPLOT_VERSION) +GNUPLOT_LICENSE = gnuplot license (open source) +GNUPLOT_LICENSE_FILES = Copyright + +GNUPLOT_AUTORECONF = YES + +GNUPLOT_CONF_OPTS = \ + --without-x \ + --disable-raise-console \ + --disable-mouse \ + --without-tutorial \ + --disable-demo \ + --without-row-help \ + --disable-history-file \ + --disable-wxwidgets \ + --without-lua \ + --without-latex \ + --without-cairo + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +GNUPLOT_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mxgot" +endif + +ifeq ($(BR2_PACKAGE_GD)$(BR2_PACKAGE_LIBPNG),yy) +GNUPLOT_CONF_OPTS += --with-gd +GNUPLOT_DEPENDENCIES += gd +GNUPLOT_CONF_ENV += \ + ac_cv_path_GDLIB_CONFIG=$(STAGING_DIR)/usr/bin/gdlib-config +else +GNUPLOT_CONF_OPTS += --without-gd +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +GNUPLOT_CONF_OPTS += --with-readline=gnu +GNUPLOT_DEPENDENCIES += readline +else +GNUPLOT_CONF_OPTS += --without-readline +endif + +# Remove Javascript scripts, lua scripts, PostScript files +define GNUPLOT_REMOVE_UNNEEDED_FILES + $(RM) -rf $(TARGET_DIR)/usr/share/gnuplot +endef + +GNUPLOT_POST_INSTALL_TARGET_HOOKS += GNUPLOT_REMOVE_UNNEEDED_FILES + +$(eval $(autotools-package)) diff --git a/buildroot/package/gnuradio/0001-suppress-boost_unitest-detection.patch b/buildroot/package/gnuradio/0001-suppress-boost_unitest-detection.patch new file mode 100644 index 0000000..f1713dc --- /dev/null +++ b/buildroot/package/gnuradio/0001-suppress-boost_unitest-detection.patch @@ -0,0 +1,41 @@ +By default, the boost test option is mandatory for build environment +detection. +This patch suppress this dependency and allows the test part only if +build_test is enabled at the Buildroot level. + +Signed-off-by: Gwenhael Goavec-Merou +--- +Index: gnuradio-3.7.5/volk/cmake/VolkBoost.cmake +=================================================================== +--- gnuradio-3.7.5.orig/volk/cmake/Modules/VolkBoost.cmake ++++ gnuradio-3.7.5/volk/cmake/Modules/VolkBoost.cmake +@@ -29,7 +29,6 @@ set(__INCLUDED_VOLK_BOOST_CMAKE TRUE) + set(BOOST_REQUIRED_COMPONENTS + filesystem + system +- unit_test_framework + program_options + ) + +Index: gnuradio-3.7.5/volk/lib/CMakeLists.txt +=================================================================== +--- gnuradio-3.7.5.orig/volk/lib/CMakeLists.txt ++++ gnuradio-3.7.5/volk/lib/CMakeLists.txt +@@ -580,7 +580,10 @@ + ######################################################################## + # Build the QA test application + ######################################################################## +-if(ENABLE_TESTING) ++ ++find_package(Boost "1.35" COMPONENTS "unit_test_framework") ++ ++if(ENABLE_TESTING AND BUILD_TEST) + + #include Boost headers + include_directories(${Boost_INCLUDE_DIRS}) +@@ -597,4 +600,4 @@ + TARGET_DEPS volk + ) + +-endif(ENABLE_TESTING) ++endif(ENABLE_TESTING AND BUILD_TEST) diff --git a/buildroot/package/gnuradio/Config.in b/buildroot/package/gnuradio/Config.in new file mode 100644 index 0000000..178bdc8 --- /dev/null +++ b/buildroot/package/gnuradio/Config.in @@ -0,0 +1,130 @@ +comment "gnuradio needs a toolchain w/ C++, NPTL, wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS + +config BR2_PACKAGE_GNURADIO + bool "gnuradio" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # use fork() + depends on BR2_USE_WCHAR # boost + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + help + GNU Radio is a free & open-source software development + toolkit that provides signal processing blocks to implement + software radios. It can be used with readily-available + low-cost external RF hardware to create software-defined + radios, or without hardware in a simulation-like + environment. It is widely used in hobbyist, academic and + commercial environments to support both wireless + communications research and real-world radio systems. + + http://gnuradio.org/ + +if BR2_PACKAGE_GNURADIO + +config BR2_PACKAGE_GNURADIO_AUDIO + bool "gr-audio" + select BR2_PACKAGE_ALSA_LIB if !BR2_PACKAGE_PORTAUDIO + help + Add audio source/sink to GNU Radio + +config BR2_PACKAGE_GNURADIO_BLOCKS + bool "blocks support" + help + GNU Radio basic block library + +config BR2_PACKAGE_GNURADIO_CTRLPORT + bool "ctrlport support" + help + GNU Radio ctrlport block + +config BR2_PACKAGE_GNURADIO_FEC + bool "gr-fec support" + select BR2_PACKAGE_GNURADIO_BLOCKS + select BR2_PACKAGE_GSL + help + FEC signal processing blocks + +config BR2_PACKAGE_GNURADIO_PYTHON + bool "python support" + depends on BR2_PACKAGE_PYTHON + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + select BR2_PACKAGE_BOOST_PYTHON + select BR2_PACKAGE_PYTHON_NUMPY # runtime + help + Enable python component + +config BR2_PACKAGE_GNURADIO_UTILS + bool "gr-utils support" + depends on BR2_PACKAGE_GNURADIO_PYTHON + help + Misc python utilities + +comment "gr-fft, -filter, -analog, -channels, -digital, -trellis, -pager, -qtgui depends fftw's single precision" + depends on !BR2_PACKAGE_FFTW_PRECISION_SINGLE + +if BR2_PACKAGE_FFTW_PRECISION_SINGLE + +config BR2_PACKAGE_GNURADIO_ANALOG + bool "gr-analog support" + select BR2_PACKAGE_GNURADIO_FILTER + help + Analog communications blocks + +config BR2_PACKAGE_GNURADIO_CHANNELS + bool "gr-channels support" + select BR2_PACKAGE_GNURADIO_ANALOG + help + Channel model blocks + +config BR2_PACKAGE_GNURADIO_DIGITAL + bool "gr-digital support" + select BR2_PACKAGE_GNURADIO_ANALOG + help + Digital communications blocks + +config BR2_PACKAGE_GNURADIO_FFT + bool "gr-fft support" + select BR2_PACKAGE_GNURADIO_BLOCKS + help + FFT signal processing blocks + +config BR2_PACKAGE_GNURADIO_FILTER + bool "gr-filter support" + select BR2_PACKAGE_GNURADIO_FFT + help + Filter signal processing blocks + +config BR2_PACKAGE_GNURADIO_PAGER + bool "gr-flex support" + select BR2_PACKAGE_GNURADIO_ANALOG + help + FLEX pager decoder implementation blocks + +config BR2_PACKAGE_GNURADIO_QTGUI + bool "gr-qtgui" + depends on BR2_PACKAGE_PYTHON_PYQT + depends on BR2_PACKAGE_QWT + depends on BR2_PACKAGE_QT_STL + select BR2_PACKAGE_GNURADIO_FFT + select BR2_PACKAGE_GNURADIO_FILTER + help + GNU Radio Qt scopes + +config BR2_PACKAGE_GNURADIO_TRELLIS + bool "gr-trellis support" + select BR2_PACKAGE_GNURADIO_DIGITAL + help + Trellis coded modulation blocks + +endif +endif diff --git a/buildroot/package/gnuradio/gnuradio.hash b/buildroot/package/gnuradio/gnuradio.hash new file mode 100644 index 0000000..86944f4 --- /dev/null +++ b/buildroot/package/gnuradio/gnuradio.hash @@ -0,0 +1,2 @@ +# From http://gnuradio.org/releases/gnuradio/sha256sums +sha256 87d9ba3183858efdbb237add3f9de40f7d65f25e16904a9bc8d764a7287252d4 gnuradio-3.7.11.tar.gz diff --git a/buildroot/package/gnuradio/gnuradio.mk b/buildroot/package/gnuradio/gnuradio.mk new file mode 100644 index 0000000..a55c116 --- /dev/null +++ b/buildroot/package/gnuradio/gnuradio.mk @@ -0,0 +1,147 @@ +################################################################################ +# +# gnuradio +# +################################################################################ + +GNURADIO_VERSION = 3.7.11 +GNURADIO_SITE = http://gnuradio.org/releases/gnuradio +GNURADIO_LICENSE = GPL-3.0+ +GNURADIO_LICENSE_FILES = COPYING + +GNURADIO_SUPPORTS_IN_SOURCE_BUILD = NO + +# host-python-cheetah is needed for volk to compile +GNURADIO_DEPENDENCIES = \ + host-python-cheetah \ + host-swig \ + boost + +ifeq ($(BR2_PACKAGE_ORC),y) +GNURADIO_DEPENDENCIES += orc +endif + +GNURADIO_CONF_OPTS = \ + -DENABLE_DEFAULT=OFF \ + -DENABLE_VOLK=ON \ + -DENABLE_GNURADIO_RUNTIME=ON + +# For third-party blocks, the gnuradio libraries are mandatory at +# compile time. +GNURADIO_INSTALL_STAGING = YES + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +GNURADIO_CONF_OPTS += -DCMAKE_EXE_LINKER_FLAGS=-latomic +endif + +# Yes, this is silly, because -march is already known by the compiler +# with the internal toolchain, and passed by the external wrapper for +# external toolchains. Nonetheless, gnuradio does some matching on the +# CFLAGS to decide whether to build the NEON functions or not, and +# wants to see the string 'armv7' in the CFLAGS. +ifeq ($(BR2_ARM_CPU_ARMV7A)$(BR2_ARM_CPU_HAS_NEON),yy) +GNURADIO_CONF_OPTS += -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -march=armv7-a" +endif + +# As soon as -mfpu=neon is supported by the compiler, gnuradio will try +# to use it. But having NEON support in the compiler doesn't necessarily +# mean we have NEON support in our CPU. +ifeq ($(BR2_ARM_CPU_HAS_NEON),) +GNURADIO_CONF_OPTS += -Dhave_mfpu_neon=0 +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_ANALOG),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_ANALOG=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_ANALOG=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_AUDIO),y) +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +GNURADIO_DEPENDENCIES += alsa-lib +endif +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +GNURADIO_DEPENDENCIES += portaudio +endif +GNURADIO_CONF_OPTS += -DENABLE_GR_AUDIO=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_AUDIO=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_BLOCKS),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_BLOCKS=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_BLOCKS=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_CHANNELS),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_CHANNELS=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_CHANNELS=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_CTRLPORT),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_CTRLPORT=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_CTRLPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_DIGITAL),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_DIGITAL=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_DIGITAL=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_FEC),y) +GNURADIO_DEPENDENCIES += gsl +GNURADIO_CONF_OPTS += -DENABLE_GR_FEC=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_FEC=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_FFT),y) +GNURADIO_DEPENDENCIES += fftw +GNURADIO_CONF_OPTS += -DENABLE_GR_FFT=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_FFT=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_FILTER),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_FILTER=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_FILTER=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y) +GNURADIO_DEPENDENCIES += python +GNURADIO_CONF_OPTS += -DENABLE_PYTHON=ON +else +GNURADIO_CONF_OPTS += -DENABLE_PYTHON=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_PAGER),y) +GNURADIO_CONF_OPTS += -DENABLE_PAGER=ON +else +GNURADIO_CONF_OPTS += -DENABLE_PAGER=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_QTGUI),y) +GNURADIO_DEPENDENCIES += python-pyqt qwt +GNURADIO_CONF_OPTS += -DENABLE_GR_QTGUI=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_QTGUI=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_TRELLIS),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_TRELLIS=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_TRELLIS=OFF +endif + +ifeq ($(BR2_PACKAGE_GNURADIO_UTILS),y) +GNURADIO_CONF_OPTS += -DENABLE_GR_UTILS=ON +else +GNURADIO_CONF_OPTS += -DENABLE_GR_UTILS=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/gnutls/Config.in b/buildroot/package/gnutls/Config.in new file mode 100644 index 0000000..176951a --- /dev/null +++ b/buildroot/package/gnutls/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_GNUTLS + bool "gnutls" + # https://gitlab.com/gnutls/gnutls/issues/203 + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBTASN1 + select BR2_PACKAGE_LIBUNISTRING + select BR2_PACKAGE_NETTLE + select BR2_PACKAGE_PCRE + help + GnuTLS is a secure communications library implementing the SSL + and TLS protocols and technologies around them. + + http://www.gnutls.org + +if BR2_PACKAGE_GNUTLS + +config BR2_PACKAGE_GNUTLS_TOOLS + bool "install tools" + select BR2_PACKAGE_ARGP_STANDALONE \ + if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + Install GnuTLS command line tools for various cryptographic + tasks. + +endif + +comment "gnutls needs a toolchain w/ wchar, dynamic library" + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/buildroot/package/gnutls/gnutls.hash b/buildroot/package/gnutls/gnutls.hash new file mode 100644 index 0000000..173cb40 --- /dev/null +++ b/buildroot/package/gnutls/gnutls.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.17.tar.xz.sig +sha256 86b142afef587c118d63f72ccf307f3321dbc40357aae528202b65d913d20919 gnutls-3.5.17.tar.xz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 doc/COPYING +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 doc/COPYING.LESSER diff --git a/buildroot/package/gnutls/gnutls.mk b/buildroot/package/gnutls/gnutls.mk new file mode 100644 index 0000000..1ce7a74 --- /dev/null +++ b/buildroot/package/gnutls/gnutls.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# gnutls +# +################################################################################ + +GNUTLS_VERSION_MAJOR = 3.5 +GNUTLS_VERSION = $(GNUTLS_VERSION_MAJOR).17 +GNUTLS_SOURCE = gnutls-$(GNUTLS_VERSION).tar.xz +GNUTLS_SITE = https://www.gnupg.org/ftp/gcrypt/gnutls/v$(GNUTLS_VERSION_MAJOR) +GNUTLS_LICENSE = LGPL-2.1+ (core library), GPL-3.0+ (gnutls-openssl library) +GNUTLS_LICENSE_FILES = doc/COPYING doc/COPYING.LESSER +GNUTLS_DEPENDENCIES = host-pkgconf libunistring libtasn1 nettle pcre +GNUTLS_CONF_OPTS = \ + --disable-doc \ + --disable-guile \ + --disable-libdane \ + --disable-rpath \ + --enable-local-libopts \ + --enable-openssl-compatibility \ + --with-libnettle-prefix=$(STAGING_DIR)/usr \ + --with-libunistring-prefix=$(STAGING_DIR)/usr \ + --with-librt-prefix=$(STAGING_DIR) \ + --without-tpm \ + $(if $(BR2_PACKAGE_GNUTLS_TOOLS),--enable-tools,--disable-tools) +GNUTLS_CONF_ENV = gl_cv_socket_ipv6=yes \ + ac_cv_header_wchar_h=$(if $(BR2_USE_WCHAR),yes,no) \ + gt_cv_c_wchar_t=$(if $(BR2_USE_WCHAR),yes,no) \ + gt_cv_c_wint_t=$(if $(BR2_USE_WCHAR),yes,no) \ + gl_cv_func_gettimeofday_clobber=no +GNUTLS_INSTALL_STAGING = YES + +# libpthread and libz autodetection poison the linkpath +GNUTLS_CONF_OPTS += $(if $(BR2_TOOLCHAIN_HAS_THREADS),--with-libpthread-prefix=$(STAGING_DIR)/usr) +GNUTLS_CONF_OPTS += $(if $(BR2_PACKAGE_ZLIB),--with-libz-prefix=$(STAGING_DIR)/usr) + +# gnutls needs libregex, but pcre can be used too +# The check isn't cross-compile friendly +GNUTLS_CONF_ENV += libopts_cv_with_libregex=yes +GNUTLS_CONF_OPTS += \ + --with-regex-header=pcreposix.h \ + --with-libregex-cflags="`$(PKG_CONFIG_HOST_BINARY) libpcreposix --cflags`" \ + --with-libregex-libs="`$(PKG_CONFIG_HOST_BINARY) libpcreposix --libs`" + +# Consider crywrap as part of tools because it needs WCHAR, and it's so too +ifeq ($(BR2_PACKAGE_GNUTLS_TOOLS),) +GNUTLS_CONF_OPTS += --disable-crywrap +endif + +# Prerequisite for crywrap +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +GNUTLS_CONF_ENV += LIBS="-largp" +GNUTLS_DEPENDENCIES += argp-standalone +endif + +# libidn support for nommu must exclude the crywrap wrapper (uses fork) +GNUTLS_CONF_OPTS += $(if $(BR2_USE_MMU),,--disable-crywrap) + +ifeq ($(BR2_PACKAGE_CRYPTODEV_LINUX),y) +GNUTLS_CONF_OPTS += --enable-cryptodev +GNUTLS_DEPENDENCIES += cryptodev-linux +endif + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +GNUTLS_CONF_OPTS += --with-idn +GNUTLS_DEPENDENCIES += libidn +else +GNUTLS_CONF_OPTS += --without-idn +endif + +ifeq ($(BR2_PACKAGE_P11_KIT),y) +GNUTLS_CONF_OPTS += --with-p11-kit +GNUTLS_DEPENDENCIES += p11-kit +else +GNUTLS_CONF_OPTS += --without-p11-kit +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GNUTLS_CONF_OPTS += --with-zlib +GNUTLS_DEPENDENCIES += zlib +else +GNUTLS_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/go-bootstrap/Config.in.host b/buildroot/package/go-bootstrap/Config.in.host new file mode 100644 index 0000000..fab80d2 --- /dev/null +++ b/buildroot/package/go-bootstrap/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_GO_BOOTSTRAP_ARCH_SUPPORTS + bool + # See src/cmd/dist/unix.c for the list of support + # architectures + default y if BR2_HOSTARCH = "x86" + default y if BR2_HOSTARCH = "x86_64" + default y if BR2_HOSTARCH = "arm" diff --git a/buildroot/package/go-bootstrap/go-bootstrap.hash b/buildroot/package/go-bootstrap/go-bootstrap.hash new file mode 100644 index 0000000..8938266 --- /dev/null +++ b/buildroot/package/go-bootstrap/go-bootstrap.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959 go1.4.3.src.tar.gz diff --git a/buildroot/package/go-bootstrap/go-bootstrap.mk b/buildroot/package/go-bootstrap/go-bootstrap.mk new file mode 100644 index 0000000..6710e31 --- /dev/null +++ b/buildroot/package/go-bootstrap/go-bootstrap.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# go-bootstrap +# +################################################################################ + +GO_BOOTSTRAP_VERSION = 1.4.3 +GO_BOOTSTRAP_SITE = https://storage.googleapis.com/golang +GO_BOOTSTRAP_SOURCE = go$(GO_BOOTSTRAP_VERSION).src.tar.gz + +GO_BOOTSTRAP_LICENSE = BSD-3-Clause +GO_BOOTSTRAP_LICENSE_FILES = LICENSE + +# To build programs that need cgo support the toolchain needs to be +# available, so the toolchain is not needed to build host-go-bootstrap +# itself, but needed by other packages that depend on +# host-go-bootstrap. +HOST_GO_BOOTSTRAP_DEPENDENCIES = toolchain + +HOST_GO_BOOTSTRAP_ROOT = $(HOST_DIR)/lib/go-$(GO_BOOTSTRAP_VERSION) + +# The go build system is not compatable with ccache, so use HOSTCC_NOCCACHE +# here. See https://github.com/golang/go/issues/11685. +HOST_GO_BOOTSTRAP_MAKE_ENV = \ + GOOS=linux \ + GOROOT_FINAL="$(HOST_GO_BOOTSTRAP_ROOT)" \ + GOROOT="$(@D)" \ + GOBIN="$(@D)/bin" \ + CC=$(HOSTCC_NOCCACHE) \ + CGO_ENABLED=0 + +define HOST_GO_BOOTSTRAP_BUILD_CMDS + cd $(@D)/src && $(HOST_GO_BOOTSTRAP_MAKE_ENV) ./make.bash +endef + +define HOST_GO_BOOTSTRAP_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/go $(HOST_GO_BOOTSTRAP_ROOT)/bin/go + $(INSTALL) -D -m 0755 $(@D)/bin/gofmt $(HOST_GO_BOOTSTRAP_ROOT)/bin/gofmt + + cp -a $(@D)/lib $(HOST_GO_BOOTSTRAP_ROOT)/ + cp -a $(@D)/pkg $(HOST_GO_BOOTSTRAP_ROOT)/ + + # There is a known issue which requires the go sources to be installed + # https://golang.org/issue/2775 + cp -a $(@D)/src $(HOST_GO_BOOTSTRAP_ROOT)/ +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/go/Config.in.host b/buildroot/package/go/Config.in.host new file mode 100644 index 0000000..c871ac4 --- /dev/null +++ b/buildroot/package/go/Config.in.host @@ -0,0 +1,18 @@ +config BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + bool + default y + depends on BR2_PACKAGE_HOST_GO_BOOTSTRAP_ARCH_SUPPORTS + depends on (BR2_arm && BR2_TOOLCHAIN_SUPPORTS_PIE) || BR2_aarch64 \ + || BR2_i386 || BR2_x86_64 || BR2_powerpc64le \ + || BR2_mips64 || BR2_mips64el + depends on !BR2_ARM_CPU_ARMV4 + # MIPS R6 support in Go has not yet been developed. + depends on !BR2_MIPS_CPU_MIPS64R6 + +config BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + bool + default y + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + # Go doesn't support CGO linking on MIPS64x platforms + # See: https://github.com/karalabe/xgo/issues/46 + depends on !BR2_mips64 && !BR2_mips64el diff --git a/buildroot/package/go/go.hash b/buildroot/package/go/go.hash new file mode 100644 index 0000000..445a0b7 --- /dev/null +++ b/buildroot/package/go/go.hash @@ -0,0 +1,2 @@ +# From https://golang.org/dl/ +sha256 a4ab229028ed167ba1986825751463605264e44868362ca8e7accc8be057e993 go1.9.src.tar.gz diff --git a/buildroot/package/go/go.mk b/buildroot/package/go/go.mk new file mode 100644 index 0000000..23facbd --- /dev/null +++ b/buildroot/package/go/go.mk @@ -0,0 +1,122 @@ +################################################################################ +# +# go +# +################################################################################ + +GO_VERSION = 1.9 +GO_SITE = https://storage.googleapis.com/golang +GO_SOURCE = go$(GO_VERSION).src.tar.gz + +GO_LICENSE = BSD-3-Clause +GO_LICENSE_FILES = LICENSE + +ifeq ($(BR2_arm),y) +GO_GOARCH = arm +ifeq ($(BR2_ARM_CPU_ARMV5),y) +GO_GOARM = 5 +else ifeq ($(BR2_ARM_CPU_ARMV6),y) +GO_GOARM = 6 +else ifeq ($(BR2_ARM_CPU_ARMV7A),y) +GO_GOARM = 7 +endif +else ifeq ($(BR2_aarch64),y) +GO_GOARCH = arm64 +else ifeq ($(BR2_i386),y) +GO_GOARCH = 386 +else ifeq ($(BR2_x86_64),y) +GO_GOARCH = amd64 +else ifeq ($(BR2_powerpc64),y) +GO_GOARCH = ppc64 +else ifeq ($(BR2_powerpc64le),y) +GO_GOARCH = ppc64le +else ifeq ($(BR2_mips64),y) +GO_GOARCH = mips64 +else ifeq ($(BR2_mips64el),y) +GO_GOARCH = mips64le +endif + +HOST_GO_DEPENDENCIES = host-go-bootstrap +HOST_GO_ROOT = $(HOST_DIR)/lib/go + +# For the convienience of target packages. +HOST_GO_TOOLDIR = $(HOST_GO_ROOT)/pkg/tool/linux_$(GO_GOARCH) +HOST_GO_TARGET_ENV = \ + GOARCH=$(GO_GOARCH) \ + GOROOT="$(HOST_GO_ROOT)" \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + GOTOOLDIR="$(HOST_GO_TOOLDIR)" + +# The go compiler's cgo support uses threads. If BR2_TOOLCHAIN_HAS_THREADS is +# set, build in cgo support for any go programs that may need it. Note that +# any target package needing cgo support must include +# 'depends on BR2_TOOLCHAIN_HAS_THREADS' in its config file. +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +HOST_GO_CGO_ENABLED = 1 +else +HOST_GO_CGO_ENABLED = 0 +endif + +# The go build system doesn't have the notion of cross compiling, but just the +# notion of architecture. When the host and target architectures are different +# it expects to be given a target cross compiler in CC_FOR_TARGET. When the +# architectures are the same it will use CC_FOR_TARGET for both host and target +# compilation. To work around this limitation build and install a set of +# compiler and tool binaries built with CC_FOR_TARGET set to the host compiler. +# Also, the go build system is not compatible with ccache, so use +# HOSTCC_NOCCACHE. See https://github.com/golang/go/issues/11685. +HOST_GO_MAKE_ENV = \ + GOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_ROOT) \ + GOROOT_FINAL=$(HOST_GO_ROOT) \ + GOROOT="$(@D)" \ + GOBIN="$(@D)/bin" \ + GOARCH=$(GO_GOARCH) \ + $(if $(GO_GOARM),GOARM=$(GO_GOARM)) \ + GOOS=linux \ + CC=$(HOSTCC_NOCCACHE) \ + CXX=$(HOSTCXX_NOCCACHE) + +HOST_GO_TARGET_CC = \ + CC_FOR_TARGET="$(TARGET_CC)" \ + CXX_FOR_TARGET="$(TARGET_CXX)" + +HOST_GO_HOST_CC = \ + CC_FOR_TARGET=$(HOSTCC_NOCCACHE) \ + CXX_FOR_TARGET=$(HOSTCXX_NOCCACHE) + +HOST_GO_TMP = $(@D)/host-go-tmp + +define HOST_GO_BUILD_CMDS + cd $(@D)/src && \ + $(HOST_GO_MAKE_ENV) $(HOST_GO_HOST_CC) CGO_ENABLED=0 ./make.bash + mkdir -p $(HOST_GO_TMP) + mv $(@D)/pkg/tool $(HOST_GO_TMP)/ + mv $(@D)/bin/ $(HOST_GO_TMP)/ + cd $(@D)/src && \ + $(HOST_GO_MAKE_ENV) $(HOST_GO_TARGET_CC) CGO_ENABLED=$(HOST_GO_CGO_ENABLED) ./make.bash +endef + +define HOST_GO_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(HOST_GO_TMP)/bin/go $(HOST_GO_ROOT)/bin/go + $(INSTALL) -D -m 0755 $(HOST_GO_TMP)/bin/gofmt $(HOST_GO_ROOT)/bin/gofmt + + ln -sf ../lib/go/bin/go $(HOST_DIR)/bin/ + ln -sf ../lib/go/bin/gofmt $(HOST_DIR)/bin/ + + cp -a $(@D)/lib $(HOST_GO_ROOT)/ + + mkdir -p $(HOST_GO_ROOT)/pkg + cp -a $(@D)/pkg/include $(@D)/pkg/linux_* $(HOST_GO_ROOT)/pkg/ + cp -a $(HOST_GO_TMP)/tool $(HOST_GO_ROOT)/pkg/ + + # There is a known issue which requires the go sources to be installed + # https://golang.org/issue/2775 + cp -a $(@D)/src $(HOST_GO_ROOT)/ + + # Set all file timestamps to prevent the go compiler from rebuilding any + # built in packages when programs are built. + find $(HOST_GO_ROOT) -type f -exec touch -r $(HOST_GO_TMP)/bin/go {} \; +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/gob2/0001-dont-include-from-prefix.patch b/buildroot/package/gob2/0001-dont-include-from-prefix.patch new file mode 100644 index 0000000..1b603d7 --- /dev/null +++ b/buildroot/package/gob2/0001-dont-include-from-prefix.patch @@ -0,0 +1,40 @@ +[PATCH] Don't search $prefix/include for header files + +Don't add $prefix/include to the header file search path, as that breaks +cross compilation (build $prefix/include isn't the same as target +$prefix/include). + +Signed-off-by: Peter Korsgaard +--- + src/Makefile.am | 3 +-- + src/Makefile.in | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +Index: gob2-2.0.15/src/Makefile.am +=================================================================== +--- gob2-2.0.15.orig/src/Makefile.am ++++ gob2-2.0.15/src/Makefile.am +@@ -17,8 +17,7 @@ INCLUDES = \ + -I$(top_builddir) \ + -I$(top_builddir)/src \ + -I$(top_srcdir) \ +- -I$(top_srcdir)/src \ +- -I$(includedir) ++ -I$(top_srcdir)/src + + if NOINSTGOB + noinst_PROGRAMS = @NOINSTGOB@ +Index: gob2-2.0.15/src/Makefile.in +=================================================================== +--- gob2-2.0.15.orig/src/Makefile.in ++++ gob2-2.0.15/src/Makefile.in +@@ -193,8 +193,7 @@ INCLUDES = \ + -I$(top_builddir) \ + -I$(top_builddir)/src \ + -I$(top_srcdir) \ +- -I$(top_srcdir)/src \ +- -I$(includedir) ++ -I$(top_srcdir)/src + + @NOINSTGOB_TRUE@noinst_PROGRAMS = @NOINSTGOB@ + @NOINSTGOB_FALSE@bin_PROGRAMS = @INSTGOB@ diff --git a/buildroot/package/gob2/gob2.hash b/buildroot/package/gob2/gob2.hash new file mode 100644 index 0000000..3678bdd --- /dev/null +++ b/buildroot/package/gob2/gob2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f7ee84c07ca88ae96e5a60461957cc4dd0aa69d61804433d1c85de3d50be8026 gob2-2.0.20.tar.xz diff --git a/buildroot/package/gob2/gob2.mk b/buildroot/package/gob2/gob2.mk new file mode 100644 index 0000000..fe60673 --- /dev/null +++ b/buildroot/package/gob2/gob2.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# gob2 +# +################################################################################ + +GOB2_VERSION = 2.0.20 +GOB2_SOURCE = gob2-$(GOB2_VERSION).tar.xz +GOB2_SITE = http://ftp.5z.com/pub/gob +HOST_GOB2_DEPENDENCIES = host-bison host-flex host-libglib2 + +$(eval $(host-autotools-package)) + +# gob2 for the host +GOB2_HOST_BINARY = $(HOST_DIR)/bin/gob2 diff --git a/buildroot/package/google-breakpad/0001-add-missing-asm-ptrace-include.patch b/buildroot/package/google-breakpad/0001-add-missing-asm-ptrace-include.patch new file mode 100644 index 0000000..281c7a0 --- /dev/null +++ b/buildroot/package/google-breakpad/0001-add-missing-asm-ptrace-include.patch @@ -0,0 +1,31 @@ +Include to get necessary definitions on AArch64 + +In glibc commit +https://sourceware.org/git/?p=glibc.git;a=commit;h=7d05a8168b45c0580e1f9a79c2dd26c8f0d31fca, +including from on AArch64 has been +removed. So the Google Breakpad code, which used to build fine on +glibc 2.18 (CodeSourcery toolchain for example), no longer builds with +glibc 2.19 (Linaro toolchain for example). + +To fix this, this patch adds the missing include (for +AArch64 only, to be conservative). + +This patch has not been submitted upstream, since more recent versions +of Google Breakpad have completely changed this part of the code. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/client/linux/minidump_writer/linux_dumper.h +=================================================================== +--- a/src/client/linux/minidump_writer/linux_dumper.h ++++ b/src/client/linux/minidump_writer/linux_dumper.h +@@ -43,6 +43,9 @@ + #include + #include + #include ++#if defined(__aarch64__) ++#include ++#endif + + #include "common/memory.h" + #include "google_breakpad/common/minidump_format.h" diff --git a/buildroot/package/google-breakpad/0002-Replace-remaining-references-to-struct-ucontext-with.patch b/buildroot/package/google-breakpad/0002-Replace-remaining-references-to-struct-ucontext-with.patch new file mode 100644 index 0000000..e02ae26 --- /dev/null +++ b/buildroot/package/google-breakpad/0002-Replace-remaining-references-to-struct-ucontext-with.patch @@ -0,0 +1,257 @@ +From 7975a962e1d6dbad5a46792a54e647abd7caf5f1 Mon Sep 17 00:00:00 2001 +From: Mark Mentovai +Date: Tue, 19 Sep 2017 22:48:30 -0400 +Subject: [PATCH] Replace remaining references to 'struct ucontext' with + 'ucontext_t' + +This relands +https://chromium.googlesource.com/breakpad/breakpad/src/+/e3035bc406cee8a4d765e59ad46eb828705f17f4, +which was accidentally committed to breakpad/breakpad/src, the read-only +mirror of src in breakpad/breakpad. (Well, it should have been +read-only.) See https://crbug.com/766164. + +This fixes issues with glibc-2.26. + +See https://bugs.gentoo.org/show_bug.cgi?id=628782 , +https://sourceware.org/git/?p=glibc.git;h=251287734e89a52da3db682a8241eb6bccc050c9 , and +https://sourceware.org/ml/libc-alpha/2017-08/msg00010.html for context. +Change-Id: Id66f474d636dd2afa450bab925c5514a800fdd6f +Reviewed-on: https://chromium-review.googlesource.com/674304 +Reviewed-by: Mark Mentovai + +(cherry picked from commit bddcc58860f522a0d4cbaa7e9d04058caee0db9d) +[Romain: backport from upstream] +Signed-off-by: Romain Naour +--- + .../linux/dump_writer_common/ucontext_reader.cc | 32 +++++++++++----------- + .../linux/dump_writer_common/ucontext_reader.h | 14 +++++----- + src/client/linux/handler/exception_handler.cc | 10 +++---- + src/client/linux/handler/exception_handler.h | 6 ++-- + .../linux/microdump_writer/microdump_writer.cc | 2 +- + .../linux/minidump_writer/minidump_writer.cc | 2 +- + 6 files changed, 33 insertions(+), 33 deletions(-) + +diff --git a/src/client/linux/dump_writer_common/ucontext_reader.cc b/src/client/linux/dump_writer_common/ucontext_reader.cc +index c80724d..052ce37 100644 +--- a/src/client/linux/dump_writer_common/ucontext_reader.cc ++++ b/src/client/linux/dump_writer_common/ucontext_reader.cc +@@ -36,19 +36,19 @@ namespace google_breakpad { + + // Minidump defines register structures which are different from the raw + // structures which we get from the kernel. These are platform specific +-// functions to juggle the ucontext and user structures into minidump format. ++// functions to juggle the ucontext_t and user structures into minidump format. + + #if defined(__i386__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_ESP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_EIP]; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct _libc_fpstate* fp) { + const greg_t* regs = uc->uc_mcontext.gregs; + +@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, + + #elif defined(__x86_64) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_RSP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[REG_RIP]; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct _libc_fpstate* fpregs) { + const greg_t* regs = uc->uc_mcontext.gregs; + +@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, + + #elif defined(__ARM_EABI__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.arm_sp; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.arm_pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) { + out->context_flags = MD_CONTEXT_ARM_FULL; + + out->iregs[0] = uc->uc_mcontext.arm_r0; +@@ -184,15 +184,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { + + #elif defined(__aarch64__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.sp; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct fpsimd_context* fpregs) { + out->context_flags = MD_CONTEXT_ARM64_FULL; + +@@ -210,15 +210,15 @@ void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc, + + #elif defined(__mips__) + +-uintptr_t UContextReader::GetStackPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) { + return uc->uc_mcontext.gregs[MD_CONTEXT_MIPS_REG_SP]; + } + +-uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { ++uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) { + return uc->uc_mcontext.pc; + } + +-void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { ++void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext_t *uc) { + #if _MIPS_SIM == _ABI64 + out->context_flags = MD_CONTEXT_MIPS64_FULL; + #elif _MIPS_SIM == _ABIO32 +diff --git a/src/client/linux/dump_writer_common/ucontext_reader.h b/src/client/linux/dump_writer_common/ucontext_reader.h +index b6e77b4..2de80b7 100644 +--- a/src/client/linux/dump_writer_common/ucontext_reader.h ++++ b/src/client/linux/dump_writer_common/ucontext_reader.h +@@ -39,23 +39,23 @@ + + namespace google_breakpad { + +-// Wraps platform-dependent implementations of accessors to ucontext structs. ++// Wraps platform-dependent implementations of accessors to ucontext_t structs. + struct UContextReader { +- static uintptr_t GetStackPointer(const struct ucontext* uc); ++ static uintptr_t GetStackPointer(const ucontext_t* uc); + +- static uintptr_t GetInstructionPointer(const struct ucontext* uc); ++ static uintptr_t GetInstructionPointer(const ucontext_t* uc); + +- // Juggle a arch-specific ucontext into a minidump format ++ // Juggle a arch-specific ucontext_t into a minidump format + // out: the minidump structure + // info: the collection of register structures. + #if defined(__i386__) || defined(__x86_64) +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc, ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct _libc_fpstate* fp); + #elif defined(__aarch64__) +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc, ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc, + const struct fpsimd_context* fpregs); + #else +- static void FillCPUContext(RawContextCPU *out, const ucontext *uc); ++ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc); + #endif + }; + +diff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc +index b63f973..3d809b8 100644 +--- a/src/client/linux/handler/exception_handler.cc ++++ b/src/client/linux/handler/exception_handler.cc +@@ -439,9 +439,9 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) { + // Fill in all the holes in the struct to make Valgrind happy. + memset(&g_crash_context_, 0, sizeof(g_crash_context_)); + memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t)); +- memcpy(&g_crash_context_.context, uc, sizeof(struct ucontext)); ++ memcpy(&g_crash_context_.context, uc, sizeof(ucontext_t)); + #if defined(__aarch64__) +- struct ucontext* uc_ptr = (struct ucontext*)uc; ++ ucontext_t* uc_ptr = (ucontext_t*)uc; + struct fpsimd_context* fp_ptr = + (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved; + if (fp_ptr->head.magic == FPSIMD_MAGIC) { +@@ -450,9 +450,9 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) { + } + #elif !defined(__ARM_EABI__) && !defined(__mips__) + // FP state is not part of user ABI on ARM Linux. +- // In case of MIPS Linux FP state is already part of struct ucontext ++ // In case of MIPS Linux FP state is already part of ucontext_t + // and 'float_state' is not a member of CrashContext. +- struct ucontext* uc_ptr = (struct ucontext*)uc; ++ ucontext_t* uc_ptr = (ucontext_t*)uc; + if (uc_ptr->uc_mcontext.fpregs) { + memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs, + sizeof(g_crash_context_.float_state)); +@@ -476,7 +476,7 @@ bool ExceptionHandler::SimulateSignalDelivery(int sig) { + // ExceptionHandler::HandleSignal(). + siginfo.si_code = SI_USER; + siginfo.si_pid = getpid(); +- struct ucontext context; ++ ucontext_t context; + getcontext(&context); + return HandleSignal(sig, &siginfo, &context); + } +diff --git a/src/client/linux/handler/exception_handler.h b/src/client/linux/handler/exception_handler.h +index 591c310..42f4055 100644 +--- a/src/client/linux/handler/exception_handler.h ++++ b/src/client/linux/handler/exception_handler.h +@@ -191,11 +191,11 @@ class ExceptionHandler { + struct CrashContext { + siginfo_t siginfo; + pid_t tid; // the crashing thread. +- struct ucontext context; ++ ucontext_t context; + #if !defined(__ARM_EABI__) && !defined(__mips__) + // #ifdef this out because FP state is not part of user ABI for Linux ARM. +- // In case of MIPS Linux FP state is already part of struct +- // ucontext so 'float_state' is not required. ++ // In case of MIPS Linux FP state is already part of ucontext_t so ++ // 'float_state' is not required. + fpstate_t float_state; + #endif + }; +diff --git a/src/client/linux/microdump_writer/microdump_writer.cc b/src/client/linux/microdump_writer/microdump_writer.cc +index 6f5b435..a508667 100644 +--- a/src/client/linux/microdump_writer/microdump_writer.cc ++++ b/src/client/linux/microdump_writer/microdump_writer.cc +@@ -571,7 +571,7 @@ class MicrodumpWriter { + + void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); } + +- const struct ucontext* const ucontext_; ++ const ucontext_t* const ucontext_; + #if !defined(__ARM_EABI__) && !defined(__mips__) + const google_breakpad::fpstate_t* const float_state_; + #endif +diff --git a/src/client/linux/minidump_writer/minidump_writer.cc b/src/client/linux/minidump_writer/minidump_writer.cc +index 86009b9..f2aec73 100644 +--- a/src/client/linux/minidump_writer/minidump_writer.cc ++++ b/src/client/linux/minidump_writer/minidump_writer.cc +@@ -1248,7 +1248,7 @@ class MinidumpWriter { + const int fd_; // File descriptor where the minidum should be written. + const char* path_; // Path to the file where the minidum should be written. + +- const struct ucontext* const ucontext_; // also from the signal handler ++ const ucontext_t* const ucontext_; // also from the signal handler + #if !defined(__ARM_EABI__) && !defined(__mips__) + const google_breakpad::fpstate_t* const float_state_; // ditto + #endif +-- +2.9.5 + diff --git a/buildroot/package/google-breakpad/Config.in b/buildroot/package/google-breakpad/Config.in new file mode 100644 index 0000000..91ec9ce --- /dev/null +++ b/buildroot/package/google-breakpad/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS + bool + default y if BR2_i386 || BR2_x86_64 || BR2_arm || BR2_aarch64 || \ + BR2_mips || BR2_mipsel + +config BR2_PACKAGE_GOOGLE_BREAKPAD + bool "google-breakpad" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC) + depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + select BR2_PACKAGE_LINUX_SYSCALL_SUPPORT + help + Google-Breakpad is a library and tool suite that allows you + to distribute an application to users with compiler-provided + debugging information removed, record crashes in compact + "minidump" files, send them back to your server, and produce + C and C++ stack traces from these minidumps. Breakpad can + also write minidumps on request for programs that have not + crashed. + + You may want to set BR2_ENABLE_DEBUG, in order to get useful + results. + + This target package installs a static library named + libbreakpad_client.a which should be linked into programs + willing to use Google Breakpad. A host variant of this + package is also available, and provides the different tools + needed to extract the debugging symbols from target + binaries. + + https://chromium.googlesource.com/breakpad/breakpad + +comment "google-breakpad requires a glibc or uClibc toolchain w/ wchar, thread, C++, gcc >= 4.8" + depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC) || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_HOST_GCC_AT_LEAST_4_8 diff --git a/buildroot/package/google-breakpad/Config.in.host b/buildroot/package/google-breakpad/Config.in.host new file mode 100644 index 0000000..28d3047 --- /dev/null +++ b/buildroot/package/google-breakpad/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "x86_64" + default y if BR2_HOSTARCH = "x86" + default y if BR2_HOSTARCH = "arm" + default y if BR2_HOSTARCH = "aarch64" + default y if BR2_HOSTARCH = "mips" + default y if BR2_HOSTARCH = "mipsel" diff --git a/buildroot/package/google-breakpad/gen-syms.sh b/buildroot/package/google-breakpad/gen-syms.sh new file mode 100755 index 0000000..2bc0afa --- /dev/null +++ b/buildroot/package/google-breakpad/gen-syms.sh @@ -0,0 +1,34 @@ +#!/bin/sh +NAME="${0##*/}" +STAGING_DIR="${1}" +TARGET_DIR="${2}" +shift 2 + +SYMBOLS_DIR="${STAGING_DIR}/usr/share/google-breakpad-symbols" +rm -rf "${SYMBOLS_DIR}" +mkdir -p "${SYMBOLS_DIR}" + +error() { + fmt="${1}"; shift + printf "%s: ${fmt}" "${NAME}" "${@}" >&2 + exit 1 +} + +for FILE in ${@}; do + f="${TARGET_DIR}${FILE}" + if [ ! -e "${f}" ]; then + error "%s: No such file or directory\n" "${FILE}" + fi + if [ -d "${f}" ]; then + error "%s: Is a directory\n" "${FILE}" + fi + if dump_syms "${f}" > "${SYMBOLS_DIR}/tmp.sym" 2>/dev/null; then + hash=$(head -n1 "${SYMBOLS_DIR}/tmp.sym" | cut -d ' ' -f 4); + filename=$(basename "${FILE}"); + mkdir -p "${SYMBOLS_DIR}/${filename}/${hash}" + mv "${SYMBOLS_DIR}/tmp.sym" "${SYMBOLS_DIR}/${filename}/${hash}/${filename}.sym"; + else + error "Error dumping symbols for: '%s'\n" "${FILE}" + fi +done +rm -rf "${SYMBOLS_DIR}/tmp" diff --git a/buildroot/package/google-breakpad/google-breakpad.hash b/buildroot/package/google-breakpad/google-breakpad.hash new file mode 100644 index 0000000..79e8d08 --- /dev/null +++ b/buildroot/package/google-breakpad/google-breakpad.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6f444233e88957c30cc2d5497ee9d72d104122ce2c25a7ef7f6be3af1b3f7353 google-breakpad-7515ab13768c7edc09f0f2ec2354dc6c928239a6.tar.gz diff --git a/buildroot/package/google-breakpad/google-breakpad.mk b/buildroot/package/google-breakpad/google-breakpad.mk new file mode 100644 index 0000000..8ae5f99 --- /dev/null +++ b/buildroot/package/google-breakpad/google-breakpad.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# google-breakpad +# +################################################################################ + +GOOGLE_BREAKPAD_VERSION = 7515ab13768c7edc09f0f2ec2354dc6c928239a6 +GOOGLE_BREAKPAD_SITE = https://chromium.googlesource.com/breakpad/breakpad +GOOGLE_BREAKPAD_SITE_METHOD = git +GOOGLE_BREAKPAD_CONF_OPTS = --disable-processor --disable-tools +# Only a static library is installed +GOOGLE_BREAKPAD_INSTALL_TARGET = NO +GOOGLE_BREAKPAD_INSTALL_STAGING = YES +GOOGLE_BREAKPAD_LICENSE = BSD-3-Clause +GOOGLE_BREAKPAD_LICENSE_FILES = LICENSE +GOOGLE_BREAKPAD_DEPENDENCIES = host-google-breakpad linux-syscall-support + +HOST_GOOGLE_BREAKPAD_DEPENDENCIES = host-linux-syscall-support + +# Avoid using depot-tools to download this file. +define HOST_GOOGLE_BREAKPAD_LSS + $(INSTALL) -D -m 0644 \ + $(HOST_DIR)/include/linux_syscall_support.h \ + $(@D)/src/third_party/lss/linux_syscall_support.h +endef +HOST_GOOGLE_BREAKPAD_PRE_CONFIGURE_HOOKS += HOST_GOOGLE_BREAKPAD_LSS + +define GOOGLE_BREAKPAD_LSS + $(INSTALL) -D -m 0644 \ + $(STAGING_DIR)/usr/include/linux_syscall_support.h \ + $(@D)/src/third_party/lss/linux_syscall_support.h +endef +GOOGLE_BREAKPAD_PRE_CONFIGURE_HOOKS += GOOGLE_BREAKPAD_LSS + +define GOOGLE_BREAKPAD_EXTRACT_SYMBOLS + $(EXTRA_ENV) package/google-breakpad/gen-syms.sh $(STAGING_DIR) \ + $(TARGET_DIR) $(call qstrip,$(BR2_GOOGLE_BREAKPAD_INCLUDE_FILES)) +endef +GOOGLE_BREAKPAD_TARGET_FINALIZE_HOOKS += GOOGLE_BREAKPAD_EXTRACT_SYMBOLS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/google-material-design-icons/Config.in b/buildroot/package/google-material-design-icons/Config.in new file mode 100644 index 0000000..775f258 --- /dev/null +++ b/buildroot/package/google-material-design-icons/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS + bool "google-material-design-icons" + help + Material design icons are the official icon set from Google + that are designed under the material design guidelines. + + https://github.com/google/material-design-icons + +if BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS + +config BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_PNG + bool "Install PNG icons" + help + Use PNG icon types. + + The default. Traditional format; simplicity and compatibility. + +config BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_SVG + bool "Install SVG icons" + help + Use SVG icon types. + + Vector format that is limitlessly scalable. + +config BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_FONT + bool "Install TrueType font" + help + Install the Material TrueType font (ttf) on the target system. + +config BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_SPRITES_CSS + bool "Install CSS sprites" + help + Install CSS (PNG) spritesheets. + +config BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_SPRITES_SVG + bool "Install SVG sprites" + help + Install SVG spritesheets. + +endif diff --git a/buildroot/package/google-material-design-icons/google-material-design-icons.hash b/buildroot/package/google-material-design-icons/google-material-design-icons.hash new file mode 100644 index 0000000..9a66336 --- /dev/null +++ b/buildroot/package/google-material-design-icons/google-material-design-icons.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 769547061a51f81623bf5174767c08fc587fd6946339592fbd6cd0dd45f56b4c 2.2.3.tar.gz diff --git a/buildroot/package/google-material-design-icons/google-material-design-icons.mk b/buildroot/package/google-material-design-icons/google-material-design-icons.mk new file mode 100644 index 0000000..d410a45 --- /dev/null +++ b/buildroot/package/google-material-design-icons/google-material-design-icons.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# google-material-design-icons +# +################################################################################ + +GOOGLE_MATERIAL_DESIGN_ICONS_VERSION = 2.2.3 +GOOGLE_MATERIAL_DESIGN_ICONS_SOURCE = \ + $(GOOGLE_MATERIAL_DESIGN_ICONS_VERSION).tar.gz +GOOGLE_MATERIAL_DESIGN_ICONS_SITE = \ + https://github.com/google/material-design-icons/archive +GOOGLE_MATERIAL_DESIGN_ICONS_LICENSE = CC-BY-4.0 +GOOGLE_MATERIAL_DESIGN_ICONS_LICENSE_FILES = LICENSE + +GOOGLE_MATERIAL_DESIGN_ICONS_LIST = \ + action alert av communication content device editor file \ + hardware image maps navigation notification places social toggle + +ifneq ($(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_PNG)$(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_SVG),) +define GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_IMAGES + $(foreach family,$(GOOGLE_MATERIAL_DESIGN_ICONS_LIST),\ + $(INSTALL) -d $(TARGET_DIR)/usr/share/google-material/$(family) \ + || exit 1; \ + $(if $(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_PNG), \ + $(INSTALL) -D -m 0644 $(@D)/$(family)/1x_web/*.png \ + $(TARGET_DIR)/usr/share/google-material/$(family) || exit 1;) \ + $(if $(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_TYPE_SVG), \ + $(INSTALL) -D -m 0644 $(@D)/$(family)/svg/production/*.svg \ + $(TARGET_DIR)/usr/share/google-material/$(family) || exit 1;) \ + ) +endef +endif + +ifeq ($(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_FONT),y) +define GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_FONT + $(INSTALL) -D -m 0644 $(@D)/iconfont/MaterialIcons-Regular.ttf \ + $(TARGET_DIR)/usr/share/fonts/google-material/MaterialIcons-Regular.ttf \ + || exit 1 +endef +endif + +define GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_SPRITES + $(if $(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_SPRITES_CSS), \ + $(INSTALL) -d $(TARGET_DIR)/usr/share/google-material/css-sprite \ + || exit 1; \ + $(INSTALL) -D -m 0644 $(@D)/sprites/css-sprite/* \ + $(TARGET_DIR)/usr/share/google-material/css-sprite || exit 1) + $(if $(BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS_SPRITES_SVG), \ + $(INSTALL) -d $(TARGET_DIR)/usr/share/google-material/svg-sprite \ + || exit 1; \ + $(INSTALL) -D -m 0644 $(@D)/sprites/svg-sprite/* \ + $(TARGET_DIR)/usr/share/google-material/svg-sprite || exit 1) +endef + +define GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_TARGET_CMDS + $(GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_FONT) + $(GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_IMAGES) + $(GOOGLE_MATERIAL_DESIGN_ICONS_INSTALL_ICONS_SPRITES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/googlefontdirectory/Config.in b/buildroot/package/googlefontdirectory/Config.in new file mode 100644 index 0000000..762c1b1 --- /dev/null +++ b/buildroot/package/googlefontdirectory/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GOOGLEFONTDIRECTORY + bool "Google font directory" + help + Google font directory + + http://code.google.com/p/googlefontdirectory/ + +if BR2_PACKAGE_GOOGLEFONTDIRECTORY + +config BR2_PACKAGE_GOOGLEFONTDIRECTORY_FONTS + string "List of fonts to install" + default "droid" + help + Specify a space-separated list of fonts to install + +endif diff --git a/buildroot/package/googlefontdirectory/googlefontdirectory.hash b/buildroot/package/googlefontdirectory/googlefontdirectory.hash new file mode 100644 index 0000000..6b15b2b --- /dev/null +++ b/buildroot/package/googlefontdirectory/googlefontdirectory.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8a7d04feef21fdfc09d90cd3e2c0c05dcb2fdd4e15f971e8ceaf4d90c1c123cd googlewebfonts.tgz diff --git a/buildroot/package/googlefontdirectory/googlefontdirectory.mk b/buildroot/package/googlefontdirectory/googlefontdirectory.mk new file mode 100644 index 0000000..c34de3b --- /dev/null +++ b/buildroot/package/googlefontdirectory/googlefontdirectory.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# googlefontdirectory +# +################################################################################ + +GOOGLEFONTDIRECTORY_SITE = \ + https://s3.amazonaws.com/joemaller_google_webfonts +GOOGLEFONTDIRECTORY_SOURCE = googlewebfonts.tgz +GOOGLEFONTDIRECTORY_LICENSE = OFL-1.1 + +GOOGLEFONTDIRECTORY_FONTS = \ + $(call qstrip,$(BR2_PACKAGE_GOOGLEFONTDIRECTORY_FONTS)) + +define GOOGLEFONTDIRECTORY_INSTALL_TARGET_CMDS + for i in $(GOOGLEFONTDIRECTORY_FONTS); \ + do \ + $(INSTALL) -d $(TARGET_DIR)/usr/share/fonts/$$i && \ + $(INSTALL) -m 0644 -t $(TARGET_DIR)/usr/share/fonts/$$i $(@D)/$$i/*.ttf || exit 1; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/gperf/Config.in b/buildroot/package/gperf/Config.in new file mode 100644 index 0000000..e6d51fc --- /dev/null +++ b/buildroot/package/gperf/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GPERF + bool "gperf" + depends on BR2_INSTALL_LIBSTDCPP + help + A 'perfect hash function' generator + + http://www.gnu.org/software/gperf/ + +comment "gperf needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/gperf/gperf.hash b/buildroot/package/gperf/gperf.hash new file mode 100644 index 0000000..370235c --- /dev/null +++ b/buildroot/package/gperf/gperf.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 767112a204407e62dbc3106647cf839ed544f3cf5d0f0523aaa2508623aad63e gperf-3.0.4.tar.gz diff --git a/buildroot/package/gperf/gperf.mk b/buildroot/package/gperf/gperf.mk new file mode 100644 index 0000000..2a6192a --- /dev/null +++ b/buildroot/package/gperf/gperf.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# gperf +# +################################################################################ + +GPERF_VERSION = 3.0.4 +GPERF_SITE = $(BR2_GNU_MIRROR)/gperf +GPERF_LICENSE = GPL-3.0+ +GPERF_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch b/buildroot/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch new file mode 100644 index 0000000..1e1e919 --- /dev/null +++ b/buildroot/package/gpm/0001-Added-musl-support-to-libgpm-and-the-daemon.patch @@ -0,0 +1,71 @@ +From eb0e14f8a5c414603b2e882df54b9fec138104ec Mon Sep 17 00:00:00 2001 +From: Dima Krasner +Date: Wed, 12 Nov 2014 23:06:46 +0200 +Subject: [PATCH] Added musl support to libgpm and the daemon. + +[Upstream patch backported from the github repository, +https://github.com/telmich/gpm/commit/d88fb1de5803c366ab62f7de9ee5d83207fb2afe.] + +Signed-off-by: Thomas Petazzoni +--- + src/daemon/open_console.c | 1 + + src/prog/display-buttons.c | 1 + + src/prog/display-coords.c | 1 + + src/prog/gpm-root.y | 4 ++-- + 4 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/daemon/open_console.c b/src/daemon/open_console.c +index 98297c9..4d6c0af 100644 +--- a/src/daemon/open_console.c ++++ b/src/daemon/open_console.c +@@ -21,6 +21,7 @@ + + #include /* open and co. */ + #include /* stat() */ ++#include /* major() */ + #include /* ioctl */ + + /* Linux specific (to be outsourced in gpm2 */ +diff --git a/src/prog/display-buttons.c b/src/prog/display-buttons.c +index de8e5b2..38d2f11 100644 +--- a/src/prog/display-buttons.c ++++ b/src/prog/display-buttons.c +@@ -36,6 +36,7 @@ + #include /* printf() */ + #include /* time() */ + #include /* errno */ ++#include /* fd_set and FD_* */ + #include /* gpm information */ + + /* display resulting data */ +diff --git a/src/prog/display-coords.c b/src/prog/display-coords.c +index ed15c8a..411283a 100644 +--- a/src/prog/display-coords.c ++++ b/src/prog/display-coords.c +@@ -37,6 +37,7 @@ + #include /* printf() */ + #include /* time() */ + #include /* errno */ ++#include /* fd_set and FD_* */ + #include /* gpm information */ + + /* display resulting data */ +diff --git a/src/prog/gpm-root.y b/src/prog/gpm-root.y +index 069d801..188ae35 100644 +--- a/src/prog/gpm-root.y ++++ b/src/prog/gpm-root.y +@@ -1199,9 +1199,9 @@ int main(int argc, char **argv) + #if defined(__GLIBC__) + __sigemptyset(&childaction.sa_mask); + #else /* __GLIBC__ */ +- childaction.sa_mask=0; ++ sigemptyset(&childaction.sa_mask); + #endif /* __GLIBC__ */ +- childaction.sa_flags=SA_INTERRUPT; /* need to break the select() call */ ++ childaction.sa_flags=0; + sigaction(SIGCHLD,&childaction,NULL); + + /*....................................... Connect and get your buffer */ +-- +2.1.0 + diff --git a/buildroot/package/gpm/0002-Install-unversioned-solibrary.patch b/buildroot/package/gpm/0002-Install-unversioned-solibrary.patch new file mode 100644 index 0000000..27e97ac --- /dev/null +++ b/buildroot/package/gpm/0002-Install-unversioned-solibrary.patch @@ -0,0 +1,41 @@ +From 06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa Mon Sep 17 00:00:00 2001 +From: Kamil Rytarowski +Date: Sat, 4 May 2013 01:30:17 +0200 +Subject: [PATCH] Install unversioned solibrary + +Unversioned solibraries are shipped with -devel packages in Linux +distros. Generate and install it for the consistency. + +[Upstream patch backported from the github repository, +https://github.com/telmich/gpm/commit/06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa] + +Signed-off-by: Bernd Kuhls +--- + src/Makefile.in | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/src/Makefile.in b/src/Makefile.in +index 6b60ad3..7e9e2ef 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -79,7 +79,7 @@ prog/%: prog/%.o + # | $(SED) '\''s/\($*\)\.o\([ :]*\)/\1.o \1.lo\2/g'\'' > $(DEPDIR)/$@' + + # Do it all! +-all: gpm lib/libgpm.so.@abi_lev@ @LIBGPM_A@ $(PROG) ++all: gpm lib/libgpm.so.@abi_lev@ lib/libgpm.so @LIBGPM_A@ $(PROG) + + gpm: $(GOBJ) + $(CC) @LDFLAGS@ $(LDFLAGS) -o $@ $(GOBJ) @LIBS@ $(LIBS) -lm +@@ -168,9 +168,8 @@ lib/libgpm.so.@abi_full@: $(PICS) + @LDFLAGS@ $(LDFLAGS) -o lib/libgpm.so.@abi_full@ $^ @LIBS@ @SHARED_LIBS@ $(LIBS) + lib/libgpm.so.@abi_lev@: lib/libgpm.so.@abi_full@ + $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so.@abi_lev@ +-# unneeded, isn't it? +-#lib/libgpm.so: lib/libgpm.so.@abi_full@ +-# $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so ++lib/libgpm.so: lib/libgpm.so.@abi_full@ ++ $(LN_S) -f libgpm.so.@abi_full@ lib/libgpm.so + + include $(DEPFILE) + diff --git a/buildroot/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch b/buildroot/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch new file mode 100644 index 0000000..58b260c --- /dev/null +++ b/buildroot/package/gpm/0003-src-Makefile.in-Really-install-unversioned-solibrary.patch @@ -0,0 +1,31 @@ +From 445be05fba32c512fd87a0c98b4e9936629ef95e Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 20 Feb 2016 17:59:52 +0100 +Subject: [PATCH 1/1] src/Makefile.in: Really install unversioned solibrary + +This commit is a follow-up to +https://github.com/telmich/gpm/commit/06b00d53d8bd513ad5d262dc94a016c6fbf2d3aa +which created libgpm.so but failed to include it in the install target. + +Patch sent upstream: https://github.com/telmich/gpm/pull/11 + +Signed-off-by: Bernd Kuhls +--- + src/Makefile.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/Makefile.in b/src/Makefile.in +index 7e9e2ef..bca226f 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -115,6 +115,7 @@ install: check + if test "x@SHLIB@" != "x" ; then \ + $(INSTALL_DATA) -m 755 lib/libgpm.so.@abi_full@ $(libdir)/libgpm.so.@abi_full@ ; \ + cd $(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so.@abi_lev@ ; \ ++ cd $(libdir) && $(LN_S) -f libgpm.so.@abi_full@ libgpm.so ; \ + echo "WARNING: We installed a lib, you should now call ldconfig" ; \ + echo "f.i.: ldconfig -n -l $(libdir)/libgpm.so.@abi_full@" ; \ + echo "Or to update everything just type ldconfig" ; \ +-- +2.7.0 + diff --git a/buildroot/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch b/buildroot/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch new file mode 100644 index 0000000..01c7424 --- /dev/null +++ b/buildroot/package/gpm/0004-Use-sigemptyset-API-instead-of-__sigemptyset.patch @@ -0,0 +1,33 @@ +From fdc42770596e25749f7e2ce0ea97882177397167 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 25 Jun 2017 07:25:33 -0700 +Subject: [PATCH] Use sigemptyset API instead of __sigemptyset + +__sigemptyset has been removed from glibc public +API headers in upcoming (2.26) release onwards + +Signed-off-by: Khem Raj +Signed-off-by: Petr Vorel +--- + src/prog/gpm-root.y | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/prog/gpm-root.y b/src/prog/gpm-root.y +index 5126c65..76c896c 100644 +--- a/src/prog/gpm-root.y ++++ b/src/prog/gpm-root.y +@@ -1196,11 +1196,7 @@ int main(int argc, char **argv) + LOG_DAEMON : LOG_USER); + /* reap your zombies */ + childaction.sa_handler=reap_children; +-#if defined(__GLIBC__) +- __sigemptyset(&childaction.sa_mask); +-#else /* __GLIBC__ */ + sigemptyset(&childaction.sa_mask); +-#endif /* __GLIBC__ */ + childaction.sa_flags=0; + sigaction(SIGCHLD,&childaction,NULL); + +-- +2.14.2 + diff --git a/buildroot/package/gpm/Config.in b/buildroot/package/gpm/Config.in new file mode 100644 index 0000000..1158479 --- /dev/null +++ b/buildroot/package/gpm/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_GPM + bool "gpm" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + help + "gpm" means general purpose mouse (server) and provides mouse + support for Linux virtual consoles. + gpm-root (to draw menus in current virtual console; config + file in /etc/gpm-root.conf) and disable-paste (to disable + paste buffer for security reasons), will also be installed. + + http://www.nico.schottelius.org/software/gpm/ + +if BR2_PACKAGE_GPM + +config BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS + bool "install test tools" + help + Install gpm test tools (get-versions, mev, hltest, mouse-test, + display-buttons & display-coords). + +endif + +comment "gpm mouse server needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/buildroot/package/gpm/gpm.hash b/buildroot/package/gpm/gpm.hash new file mode 100644 index 0000000..7bbc43d --- /dev/null +++ b/buildroot/package/gpm/gpm.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 a955053b36556ffa7c628ce18fd6de7d625966573fa412fb08869533d8f7385c gpm-1.20.7.tar.lzma diff --git a/buildroot/package/gpm/gpm.mk b/buildroot/package/gpm/gpm.mk new file mode 100644 index 0000000..f59d059 --- /dev/null +++ b/buildroot/package/gpm/gpm.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# gpm +# +################################################################################ + +GPM_VERSION = 1.20.7 +GPM_SOURCE = gpm-$(GPM_VERSION).tar.lzma +GPM_SITE = http://www.nico.schottelius.org/software/gpm/archives +GPM_LICENSE = GPL-2.0+ +GPM_LICENSE_FILES = COPYING +GPM_INSTALL_STAGING = YES +GPM_DEPENDENCIES = host-bison + +# if not already installed in staging dir, gpm Makefile may fail to find some +# of the headers needed to generate build dependencies, the first time it is +# built. CPPFLAGS is used to pass the right include path to dependency rules. +GPM_CONF_ENV = \ + CPPFLAGS="$(TARGET_CPPFLAGS) -I$(@D)/src/headers/" \ + ac_cv_path_emacs=no + +# For some reason, Microblaze gcc does not define __ELF__, which gpm +# configure script uses to determine whether the architecture uses ELF +# binaries and therefore can build shared libraries. We fix this by +# telling GPM that ELF is used on Microblaze. +ifeq ($(BR2_microblaze),y) +GPM_CONF_ENV += itz_cv_sys_elf=yes +endif + +# gpm and ncurses have a circular dependency. As gpm function GPM_Wgetch() +# (requiring ncurses) is not recommended for use by ncurses people themselves +# and as it's better to have gpm support in ncurses that the contrary, we force +# gpm to not look after ncurses explicitly. +# http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib +GPM_CONF_OPTS = --without-curses + +# configure is missing but gpm seems not compatible with our autoreconf +# mechanism so we have to do it manually instead of using GPM_AUTORECONF = YES +define GPM_RUN_AUTOGEN + cd $(@D) && PATH=$(BR_PATH) ./autogen.sh +endef +GPM_PRE_CONFIGURE_HOOKS += GPM_RUN_AUTOGEN + +GPM_DEPENDENCIES += host-automake host-autoconf host-libtool + +# gpm tries to build/install .info doc even if makeinfo isn't installed on the +# host, so we have to disable global doc installation to prevent autobuild +# errors. +define GPM_DISABLE_DOC_INSTALL + $(SED) 's/SUBDIRS = src doc contrib/SUBDIRS = src contrib/' \ + $(@D)/Makefile.in +endef +GPM_POST_PATCH_HOOKS += GPM_DISABLE_DOC_INSTALL + +ifeq ($(BR2_PACKAGE_GPM_INSTALL_TEST_TOOLS),) +define GPM_REMOVE_TEST_TOOLS_FROM_TARGET + for tools in mev hltest mouse-test display-buttons \ + get-versions display-coords; do \ + rm -f $(TARGET_DIR)/usr/bin/$$tools ; \ + done +endef +GPM_POST_INSTALL_TARGET_HOOKS += GPM_REMOVE_TEST_TOOLS_FROM_TARGET +endif + +define GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET + $(INSTALL) -m 0644 -D $(@D)/conf/gpm-root.conf $(TARGET_DIR)/etc/ +endef + +GPM_POST_INSTALL_TARGET_HOOKS += GPM_INSTALL_GPM_ROOT_CONF_ON_TARGET + +$(eval $(autotools-package)) diff --git a/buildroot/package/gpsd/0001-SConstruct-do-not-force-O2-by-default.patch b/buildroot/package/gpsd/0001-SConstruct-do-not-force-O2-by-default.patch new file mode 100644 index 0000000..641afa3 --- /dev/null +++ b/buildroot/package/gpsd/0001-SConstruct-do-not-force-O2-by-default.patch @@ -0,0 +1,29 @@ +From eb7cce5dbb53a64cf55ac0d9a7fa4dcbebd4b173 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Mon, 14 Aug 2017 23:24:38 +0200 +Subject: [PATCH] SConstruct: do not force -O2 by default + +-O2 can cause problems on some architectures, so do not force it by + default. + +Signed-off-by: Waldemar Brodkorb +--- + SConstruct | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/SConstruct b/SConstruct +index fe444a2..93d91a4 100644 +--- a/SConstruct ++++ b/SConstruct +@@ -330,8 +330,6 @@ if not 'CCFLAGS' in os.environ: + # Should we build with optimisation? + if env['debug'] or env['coveraging']: + env.Append(CCFLAGS=['-O0']) +- else: +- env.Append(CCFLAGS=['-O2']) + + # Get a slight speedup by not doing automatic RCS and SCCS fetches. + env.SourceCode('.', None) +-- +2.9.4 + diff --git a/buildroot/package/gpsd/0002-Fix-isync-build-when-ublox-not-selected-too.patch b/buildroot/package/gpsd/0002-Fix-isync-build-when-ublox-not-selected-too.patch new file mode 100644 index 0000000..1dfa960 --- /dev/null +++ b/buildroot/package/gpsd/0002-Fix-isync-build-when-ublox-not-selected-too.patch @@ -0,0 +1,36 @@ +From 98c8f5f4429ac3bfc09eee235fee08b9aaff8c52 Mon Sep 17 00:00:00 2001 +From: Zoltan Gyarmati +Date: Tue, 30 Jan 2018 19:58:54 -0800 +Subject: [PATCH] Fix isync build when ublox not selected too. + +The isync support uses the ublox driver, but if the ublox support is +disabled while isync is enabled, the build will fail. + + +Upstream commit: +http://git.savannah.gnu.org/cgit/gpsd.git/commit/?id=98c8f5f4429ac3bfc09eee235fee08b9aaff8c52 + +Signed-off-by: Zoltan Gyarmati +--- + SConstruct | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/SConstruct b/SConstruct +index 1c1a215..c6a309e 100644 +--- a/SConstruct ++++ b/SConstruct +@@ -334,6 +334,11 @@ for driver in ('ashtech', + env['nmea0183'] = True + break + ++ ++# iSync uses ublox underneath, so we force to enable it ++if env['isync']: ++ env['ublox'] = True ++ + opts.Save('.scons-option-cache', env) + env.SConsignFile(".sconsign.dblite") + +-- +2.7.4 + diff --git a/buildroot/package/gpsd/Config.in b/buildroot/package/gpsd/Config.in new file mode 100644 index 0000000..849d22f --- /dev/null +++ b/buildroot/package/gpsd/Config.in @@ -0,0 +1,245 @@ +comment "gpsd needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +menuconfig BR2_PACKAGE_GPSD + bool "gpsd" + # Uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + # Always tries to build a shared library + depends on !BR2_STATIC_LIBS + help + gpsd is a service daemon that monitors one or more GPSes or + AIS receivers attached to a host computer through serial or + USB ports, making all data on the location/course/velocity of + the sensors available to be queried on TCP port 2947 of the + host computer. + + The D-Bus interface is included if dbus-glib is enabled. + + http://www.catb.org/gpsd/ + +if BR2_PACKAGE_GPSD + +config BR2_PACKAGE_GPSD_DEVICES + string "Where to look for GPSes" + default "/dev/ttyS1" + +comment "Features" + +config BR2_PACKAGE_GPSD_CLIENT_DEBUG + bool "client debugging support" + +config BR2_PACKAGE_GPSD_OLDSTYLE + bool "oldstyle (pre-JSON) protocol support" + +config BR2_PACKAGE_GPSD_PROFILING + bool "profiling support" + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_aarch64 + # Needs glibc for ARC arc-2018.03-eng007+ for correct __mcount linking + depends on !BR2_arc + +comment "profiling support not available with uClibc-based toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_GPSD_NTP_SHM + bool "NTP time hinting support" + +config BR2_PACKAGE_GPSD_PPS + bool "PPS time syncing support" + select BR2_PACKAGE_GPSD_NTP_SHM + +config BR2_PACKAGE_GPSD_USER + bool "GPSD privilege revocation user" + +config BR2_PACKAGE_GPSD_USER_VALUE + string "user to run as" + default "nobody" + depends on BR2_PACKAGE_GPSD_USER + +config BR2_PACKAGE_GPSD_GROUP + bool "GPSD privilege revocation group" + +config BR2_PACKAGE_GPSD_GROUP_VALUE + string "group to run as" + default "nobody" + depends on BR2_PACKAGE_GPSD_GROUP + +config BR2_PACKAGE_GPSD_FIXED_PORT_SPEED + bool "compile with fixed serial port speed" + +config BR2_PACKAGE_GPSD_FIXED_PORT_SPEED_VALUE + int "serial port speed" + default "9600" + depends on BR2_PACKAGE_GPSD_FIXED_PORT_SPEED + +config BR2_PACKAGE_GPSD_MAX_CLIENT + bool "compile with limited maximum clients" + +config BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE + int "maximum number of clients" + default "10" + depends on BR2_PACKAGE_GPSD_MAX_CLIENT + +config BR2_PACKAGE_GPSD_MAX_DEV + bool "compile with maximum allowed devices" + +config BR2_PACKAGE_GPSD_MAX_DEV_VALUE + int "maximum allowed devices" + default "2" + depends on BR2_PACKAGE_GPSD_MAX_DEV + +config BR2_PACKAGE_GPSD_RECONFIGURE + bool "allow gpsd to change device settings" + default y + +config BR2_PACKAGE_GPSD_CONTROLSEND + bool "allow gpsctl/gpsmon to change device settings" + default y + +config BR2_PACKAGE_GPSD_SQUELCH + bool "squelch gpsd_report and gpsd_hexdump to save cpu" + +comment "Protocols" + +config BR2_PACKAGE_GPSD_AIVDM + bool "Aivdm" + help + Aivdm support + +config BR2_PACKAGE_GPSD_ASHTECH + bool "Ashtech" + help + Ashtech support + +config BR2_PACKAGE_GPSD_EARTHMATE + bool "Earthmate" + help + DeLorme EarthMate Zodiac support + +config BR2_PACKAGE_GPSD_EVERMORE + bool "EverMore" + help + EverMore binary support + +config BR2_PACKAGE_GPSD_FURY + bool "Fury" + help + Jackson Labs Fury and Firefly support + +config BR2_PACKAGE_GPSD_FV18 + bool "FV-18" + help + San Jose Navigation FV-18 support + +config BR2_PACKAGE_GPSD_GARMIN + bool "Garmin (kernel)" + help + Garmin kernel driver support + +config BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT + bool "Garmin (simple text)" + help + Garmin Simple Text support + +config BR2_PACKAGE_GPSD_GEOSTAR + bool "Geostar" + help + Geostar Protocol support + +config BR2_PACKAGE_GPSD_GPSCLOCK + bool "GPSClock" + help + GPSClock support + +config BR2_PACKAGE_GPSD_ISYNC + bool "iSync" + help + Spectratime iSync LNRClok/GRCLOK support + +config BR2_PACKAGE_GPSD_ITRAX + bool "iTrax" + help + iTrax support + +config BR2_PACKAGE_GPSD_MTK3301 + bool "MTK-3301" + help + Mediatek MTK-3301 support + +config BR2_PACKAGE_GPSD_NAVCOM + bool "Navcom" + help + Navcom binary support + +config BR2_PACKAGE_GPSD_NMEA + bool "NMEA" + default y + help + Generic NMEA support + +config BR2_PACKAGE_GPSD_NMEA2000 + bool "NMEA2000" + select BR2_PACKAGE_GPSD_NAVCOM + select BR2_PACKAGE_GPSD_AIVDM + help + NMEA2000/CAN support + +config BR2_PACKAGE_GPSD_NTRIP + bool "NTRIP" + help + NTRIP support + +config BR2_PACKAGE_GPSD_OCEANSERVER + bool "OceanServer" + help + OceanServer Digital Compass support + +config BR2_PACKAGE_GPSD_ONCORE + bool "OnCore" + help + OnCore support + +config BR2_PACKAGE_GPSD_RTCM104V2 + bool "RTCM104 v2" + help + RTCM104 v2 support + +config BR2_PACKAGE_GPSD_RTCM104V3 + bool "RTCM104 v3" + help + RTCM104 v3 support + +config BR2_PACKAGE_GPSD_SIRF + bool "SiRF" + help + SiRF binary support + +config BR2_PACKAGE_GPSD_SUPERSTAR2 + bool "SuperStarII" + help + Novatel SuperStarII binary support + +config BR2_PACKAGE_GPSD_TRIMBLE_TSIP + bool "Trimble TSIP" + help + Trimble TSIP support + +config BR2_PACKAGE_GPSD_TRIPMATE + bool "TripMate" + help + Delorme TripMate support + +config BR2_PACKAGE_GPSD_TRUE_NORTH + bool "True North Technologies" + help + True North Technologies support + +config BR2_PACKAGE_GPSD_UBX + bool "UBX" + help + uBlox UBX binary support + +endif diff --git a/buildroot/package/gpsd/S50gpsd b/buildroot/package/gpsd/S50gpsd new file mode 100644 index 0000000..39bf232 --- /dev/null +++ b/buildroot/package/gpsd/S50gpsd @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Starts the gps daemon. +# + +NAME=gpsd +DAEMON=/usr/sbin/$NAME +DEVICES=/dev/ttyS1 +PIDFILE=/var/run/$NAME.pid + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -p $PIDFILE --exec $DAEMON -- -P $PIDFILE $DEVICES && echo "OK" || echo "Failed" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE && echo "OK" || echo "Failed" + rm -f $PIDFILE +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/gpsd/gpsd.hash b/buildroot/package/gpsd/gpsd.hash new file mode 100644 index 0000000..805c298 --- /dev/null +++ b/buildroot/package/gpsd/gpsd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 68e0dbecfb5831997f8b3d6ba48aed812eb465d8c0089420ab68f9ce4d85e77a gpsd-3.17.tar.gz +sha256 71ff85d18bf063954cfc4251678d0e772223e21f80febbd99d5524c90f73f832 COPYING diff --git a/buildroot/package/gpsd/gpsd.mk b/buildroot/package/gpsd/gpsd.mk new file mode 100644 index 0000000..8c8023e --- /dev/null +++ b/buildroot/package/gpsd/gpsd.mk @@ -0,0 +1,255 @@ +################################################################################ +# +# gpsd +# +################################################################################ + +GPSD_VERSION = 3.17 +GPSD_SITE = http://download-mirror.savannah.gnu.org/releases/gpsd +GPSD_LICENSE = BSD-3-Clause +GPSD_LICENSE_FILES = COPYING +GPSD_INSTALL_STAGING = YES + +GPSD_DEPENDENCIES = host-scons host-pkgconf + +GPSD_LDFLAGS = $(TARGET_LDFLAGS) +GPSD_CFLAGS = $(TARGET_CFLAGS) + +GPSD_SCONS_ENV = $(TARGET_CONFIGURE_OPTS) + +GPSD_SCONS_OPTS = \ + arch=$(ARCH)\ + prefix=/usr\ + sysroot=$(STAGING_DIR)\ + strip=no\ + python=no + +ifeq ($(BR2_PACKAGE_NCURSES),y) +GPSD_DEPENDENCIES += ncurses +else +GPSD_SCONS_OPTS += ncurses=no +endif + +# Build libgpsmm if we've got C++ +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +GPSD_LDFLAGS += -lstdc++ +GPSD_CFLAGS += -std=gnu++98 +GPSD_CXXFLAGS += -std=gnu++98 +GPSD_SCONS_OPTS += libgpsmm=yes +else +GPSD_SCONS_OPTS += libgpsmm=no +endif + +# prevents from triggering GCC ICE +# A bug was reported to the gcc bug tracker: +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68485 +ifeq ($(BR2_microblaze),y) +GPSD_CFLAGS += -O0 +endif + +# Enable or disable Qt binding +ifeq ($(BR2_PACKAGE_QT_NETWORK),y) +GPSD_SCONS_ENV += QMAKE="$(QT_QMAKE)" +GPSD_DEPENDENCIES += qt +else +GPSD_SCONS_OPTS += qt=no +endif + +# If libusb is available build it before so the package can use it +ifeq ($(BR2_PACKAGE_LIBUSB),y) +GPSD_DEPENDENCIES += libusb +else +GPSD_SCONS_OPTS += usb=no +endif + +# If bluetooth is available build it before so the package can use it +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +GPSD_DEPENDENCIES += bluez_utils +else +GPSD_SCONS_OPTS += bluez=no +endif + +# If pps-tools is available, build it before so the package can use it +# (HAVE_SYS_TIMEPPS_H). +ifeq ($(BR2_PACKAGE_PPS_TOOLS),y) +GPSD_DEPENDENCIES += pps-tools +endif + +ifeq ($(BR2_PACKAGE_DBUS_GLIB),y) +GPSD_SCONS_OPTS += dbus_export=yes +GPSD_DEPENDENCIES += dbus-glib +endif + +# Protocol support +ifneq ($(BR2_PACKAGE_GPSD_ASHTECH),y) +GPSD_SCONS_OPTS += ashtech=no +endif +ifneq ($(BR2_PACKAGE_GPSD_AIVDM),y) +GPSD_SCONS_OPTS += aivdm=no +endif +ifneq ($(BR2_PACKAGE_GPSD_EARTHMATE),y) +GPSD_SCONS_OPTS += earthmate=no +endif +ifneq ($(BR2_PACKAGE_GPSD_EVERMORE),y) +GPSD_SCONS_OPTS += evermore=no +endif +ifneq ($(BR2_PACKAGE_GPSD_FURY),y) +GPSD_SCONS_OPTS += fury=no +endif +ifneq ($(BR2_PACKAGE_GPSD_FV18),y) +GPSD_SCONS_OPTS += fv18=no +endif +ifneq ($(BR2_PACKAGE_GPSD_GARMIN),y) +GPSD_SCONS_OPTS += garmin=no +endif +ifneq ($(BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT),y) +GPSD_SCONS_OPTS += garmintxt=no +endif +ifneq ($(BR2_PACKAGE_GPSD_GEOSTAR),y) +GPSD_SCONS_OPTS += geostar=no +endif +ifneq ($(BR2_PACKAGE_GPSD_GPSCLOCK),y) +GPSD_SCONS_OPTS += gpsclock=no +endif +ifneq ($(BR2_PACKAGE_GPSD_ISYNC),y) +GPSD_SCONS_OPTS += isync=no +endif +ifneq ($(BR2_PACKAGE_GPSD_ITRAX),y) +GPSD_SCONS_OPTS += itrax=no +endif +ifneq ($(BR2_PACKAGE_GPSD_MTK3301),y) +GPSD_SCONS_OPTS += mtk3301=no +endif +ifneq ($(BR2_PACKAGE_GPSD_NMEA),y) +GPSD_SCONS_OPTS += nmea0183=no +endif +ifneq ($(BR2_PACKAGE_GPSD_NTRIP),y) +GPSD_SCONS_OPTS += ntrip=no +endif +ifneq ($(BR2_PACKAGE_GPSD_NAVCOM),y) +GPSD_SCONS_OPTS += navcom=no +endif +ifneq ($(BR2_PACKAGE_GPSD_NMEA2000),y) +GPSD_SCONS_OPTS += nmea2000=no +endif +ifneq ($(BR2_PACKAGE_GPSD_OCEANSERVER),y) +GPSD_SCONS_OPTS += oceanserver=no +endif +ifneq ($(BR2_PACKAGE_GPSD_ONCORE),y) +GPSD_SCONS_OPTS += oncore=no +endif +ifneq ($(BR2_PACKAGE_GPSD_RTCM104V2),y) +GPSD_SCONS_OPTS += rtcm104v2=no +endif +ifneq ($(BR2_PACKAGE_GPSD_RTCM104V3),y) +GPSD_SCONS_OPTS += rtcm104v3=no +endif +ifneq ($(BR2_PACKAGE_GPSD_SIRF),y) +GPSD_SCONS_OPTS += sirf=no +endif +ifneq ($(BR2_PACKAGE_GPSD_SUPERSTAR2),y) +GPSD_SCONS_OPTS += superstar2=no +endif +ifneq ($(BR2_PACKAGE_GPSD_TRIMBLE_TSIP),y) +GPSD_SCONS_OPTS += tsip=no +endif +ifneq ($(BR2_PACKAGE_GPSD_TRIPMATE),y) +GPSD_SCONS_OPTS += tripmate=no +endif +ifneq ($(BR2_PACKAGE_GPSD_TRUE_NORTH),y) +GPSD_SCONS_OPTS += tnt=no +endif +ifneq ($(BR2_PACKAGE_GPSD_UBX),y) +GPSD_SCONS_OPTS += ublox=no +endif + +# Features +ifneq ($(BR2_PACKAGE_GPSD_NTP_SHM),y) +GPSD_SCONS_OPTS += ntpshm=no +endif +ifneq ($(BR2_PACKAGE_GPSD_PPS),y) +GPSD_SCONS_OPTS += pps=no +endif +ifeq ($(BR2_PACKAGE_GPSD_SQUELCH),y) +GPSD_SCONS_OPTS += squelch=yes +endif +ifneq ($(BR2_PACKAGE_GPSD_RECONFIGURE),y) +GPSD_SCONS_OPTS += reconfigure=no +endif +ifneq ($(BR2_PACKAGE_GPSD_CONTROLSEND),y) +GPSD_SCONS_OPTS += controlsend=no +endif +ifneq ($(BR2_PACKAGE_GPSD_OLDSTYLE),y) +GPSD_SCONS_OPTS += oldstyle=no +endif +ifeq ($(BR2_PACKAGE_GPSD_PROFILING),y) +GPSD_SCONS_OPTS += profiling=yes +endif +ifneq ($(BR2_PACKAGE_GPSD_CLIENT_DEBUG),y) +GPSD_SCONS_OPTS += clientdebug=no +endif +ifeq ($(BR2_PACKAGE_GPSD_USER),y) +GPSD_SCONS_OPTS += gpsd_user=$(BR2_PACKAGE_GPSD_USER_VALUE) +endif +ifeq ($(BR2_PACKAGE_GPSD_GROUP),y) +GPSD_SCONS_OPTS += gpsd_group=$(BR2_PACKAGE_GPSD_GROUP_VALUE) +endif +ifeq ($(BR2_PACKAGE_GPSD_FIXED_PORT_SPEED),y) +GPSD_SCONS_OPTS += fixed_port_speed=$(BR2_PACKAGE_GPSD_FIXED_PORT_SPEED_VALUE) +endif +ifeq ($(BR2_PACKAGE_GPSD_MAX_CLIENT),y) +GPSD_SCONS_OPTS += limited_max_clients=$(BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE) +endif +ifeq ($(BR2_PACKAGE_GPSD_MAX_DEV),y) +GPSD_SCONS_OPTS += limited_max_devices=$(BR2_PACKAGE_GPSD_MAX_DEV_VALUE) +endif + +GPSD_SCONS_ENV += LDFLAGS="$(GPSD_LDFLAGS)" CFLAGS="$(GPSD_CFLAGS)" + +define GPSD_BUILD_CMDS + (cd $(@D); \ + $(GPSD_SCONS_ENV) \ + $(SCONS) \ + $(GPSD_SCONS_OPTS)) +endef + +define GPSD_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(GPSD_SCONS_ENV) \ + DESTDIR=$(TARGET_DIR) \ + $(SCONS) \ + $(GPSD_SCONS_OPTS) \ + install) +endef + +define GPSD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/gpsd/S50gpsd $(TARGET_DIR)/etc/init.d/S50gpsd + $(SED) 's,^DEVICES=.*,DEVICES=$(BR2_PACKAGE_GPSD_DEVICES),' $(TARGET_DIR)/etc/init.d/S50gpsd +endef + +define GPSD_INSTALL_STAGING_CMDS + (cd $(@D); \ + $(GPSD_SCONS_ENV) \ + DESTDIR=$(STAGING_DIR) \ + $(SCONS) \ + $(GPSD_SCONS_OPTS) \ + install) +endef + +# After installing the udev rule, make it writable so that this +# package can be re-built/re-installed. +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define GPSD_INSTALL_UDEV_RULES + (cd $(@D); \ + $(GPSD_SCONS_ENV) \ + DESTDIR=$(TARGET_DIR) \ + $(SCONS) \ + $(GPSD_SCONS_OPTS) \ + udev-install) + chmod u+w $(TARGET_DIR)/lib/udev/rules.d/25-gpsd.rules +endef + +GPSD_POST_INSTALL_TARGET_HOOKS += GPSD_INSTALL_UDEV_RULES +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/gptfdisk/0001-ldlibs.patch b/buildroot/package/gptfdisk/0001-ldlibs.patch new file mode 100644 index 0000000..ca1d7fb --- /dev/null +++ b/buildroot/package/gptfdisk/0001-ldlibs.patch @@ -0,0 +1,31 @@ +Add $(LDLIBS) support to enable clean static builds (for libintl). + +Signed-off-by: Gustavo Zacarias + +diff -Nura gptfdisk-0.8.10.orig/Makefile gptfdisk-0.8.10/Makefile +--- gptfdisk-0.8.10.orig/Makefile 2015-05-01 08:45:14.667748141 -0300 ++++ gptfdisk-0.8.10/Makefile 2015-05-01 08:45:42.685699419 -0300 +@@ -14,19 +14,19 @@ + all: cgdisk gdisk sgdisk fixparts + + gdisk: $(LIB_OBJS) gdisk.o gpttext.o +- $(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) -luuid -o gdisk ++ $(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) -luuid $(LDLIBS) -o gdisk + # $(CXX) $(LIB_OBJS) gdisk.o gpttext.o $(LDFLAGS) -licuio -licuuc -luuid -o gdisk + + cgdisk: $(LIB_OBJS) cgdisk.o gptcurses.o +- $(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) -luuid -lncursesw -o cgdisk ++ $(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) -luuid -lncursesw $(LDLIBS) -o cgdisk + # $(CXX) $(LIB_OBJS) cgdisk.o gptcurses.o $(LDFLAGS) -licuio -licuuc -luuid -lncurses -o cgdisk + + sgdisk: $(LIB_OBJS) sgdisk.o gptcl.o +- $(CXX) $(LIB_OBJS) sgdisk.o gptcl.o $(LDFLAGS) -luuid -lpopt -o sgdisk ++ $(CXX) $(LIB_OBJS) sgdisk.o gptcl.o $(LDFLAGS) -luuid -lpopt $(LDLIBS) -o sgdisk + # $(CXX) $(LIB_OBJS) sgdisk.o gptcl.o $(LDFLAGS) -licuio -licuuc -luuid -lpopt -o sgdisk + + fixparts: $(MBR_LIB_OBJS) fixparts.o +- $(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) -o fixparts ++ $(CXX) $(MBR_LIB_OBJS) fixparts.o $(LDFLAGS) $(LDLIBS) -o fixparts + + lint: #no pre-reqs + lint $(SRCS) diff --git a/buildroot/package/gptfdisk/Config.in b/buildroot/package/gptfdisk/Config.in new file mode 100644 index 0000000..ede72f3 --- /dev/null +++ b/buildroot/package/gptfdisk/Config.in @@ -0,0 +1,48 @@ +comment "gptfdisk needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GPTFDISK + bool "gptfdisk" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_GPTFDISK_GDISK if \ + !(BR2_PACKAGE_GPTFDISK_SGDISK || BR2_PACKAGE_GPTFDISK_CGDISK) + help + GPT fdisk (consisting of the gdisk and sgdisk programs) is a + text-mode partitioning tool that works on Globally Unique + Identifier (GUID) Partition Table (GPT) disks, rather than on + the more common (through 2010) Master Boot Record (MBR) + partition tables. + + http://www.rodsbooks.com/gdisk/ + +if BR2_PACKAGE_GPTFDISK + +config BR2_PACKAGE_GPTFDISK_GDISK + bool "interactive gdisk" + help + Install the interactive GUID partition table (GPT) manipulator + /usr/sbin/gdisk which is modelled after and quite similar in + use to the traditional MBR based fdisk tool. + +config BR2_PACKAGE_GPTFDISK_SGDISK + bool "command line sgdisk" + select BR2_PACKAGE_POPT + help + Install the command-line GUID partition table (GPT) + manipulator /usr/sbin/sgdisk which is named after the + traditional MBR based sfdisk tool albeit with an entirely + different option syntax. + +config BR2_PACKAGE_GPTFDISK_CGDISK + bool "ncurses cgdisk" + depends on BR2_USE_WCHAR # ncurses wchar + depends on !(BR2_bfin && BR2_BINFMT_FLAT) # ncurses wchar support + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_NCURSES_WCHAR # needed because of UTF-16 + help + Install the ncurses-based GUID partition table (GPT) + manipulator /usr/sbin/cgdisk. + +endif diff --git a/buildroot/package/gptfdisk/Config.in.host b/buildroot/package/gptfdisk/Config.in.host new file mode 100644 index 0000000..1300d02 --- /dev/null +++ b/buildroot/package/gptfdisk/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_GPTFDISK + bool "host gptfdisk" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + GPT fdisk (consisting of the gdisk and sgdisk programs) is a + text-mode partitioning tool that works on Globally Unique + Identifier (GUID) Partition Table (GPT) disks, rather than + on the more common (through 2010) Master Boot Record (MBR) + partition tables. + + http://www.rodsbooks.com/gdisk/ diff --git a/buildroot/package/gptfdisk/gptfdisk.hash b/buildroot/package/gptfdisk/gptfdisk.hash new file mode 100644 index 0000000..d55797c --- /dev/null +++ b/buildroot/package/gptfdisk/gptfdisk.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/gptfdisk/files/gptfdisk/1.0.3/ +md5 07b625a583b66c8c5840be5923f3e3fe gptfdisk-1.0.3.tar.gz +sha1 9a74bbe7805d562316e92417f71e4b03155308e6 gptfdisk-1.0.3.tar.gz +# Locally computed +sha256 89fd5aec35c409d610a36cb49c65b442058565ed84042f767bba614b8fc91b5c gptfdisk-1.0.3.tar.gz diff --git a/buildroot/package/gptfdisk/gptfdisk.mk b/buildroot/package/gptfdisk/gptfdisk.mk new file mode 100644 index 0000000..b669e22 --- /dev/null +++ b/buildroot/package/gptfdisk/gptfdisk.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# gptfdisk +# +################################################################################ + +GPTFDISK_VERSION = 1.0.3 +GPTFDISK_SITE = http://downloads.sourceforge.net/sourceforge/gptfdisk +GPTFDISK_LICENSE = GPL-2.0+ +GPTFDISK_LICENSE_FILES = COPYING + +GPTFDISK_TARGETS_$(BR2_PACKAGE_GPTFDISK_GDISK) += gdisk +GPTFDISK_TARGETS_$(BR2_PACKAGE_GPTFDISK_SGDISK) += sgdisk +GPTFDISK_TARGETS_$(BR2_PACKAGE_GPTFDISK_CGDISK) += cgdisk + +GPTFDISK_DEPENDENCIES += util-linux +ifeq ($(BR2_PACKAGE_GPTFDISK_SGDISK),y) +GPTFDISK_DEPENDENCIES += popt +endif +ifeq ($(BR2_PACKAGE_GPTFDISK_CGDISK),y) +GPTFDISK_DEPENDENCIES += ncurses +endif + +ifeq ($(BR2_STATIC_LIBS),y) +# gptfdisk dependencies may link against libiconv, so we need to do so +# as well when linking statically +ifeq ($(BR2_PACKAGE_LIBICONV),y) +GPTFDISK_DEPENDENCIES += libiconv +GPTFDISK_LDLIBS += -liconv +endif +endif + +define GPTFDISK_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + LDLIBS='$(GPTFDISK_LDLIBS)' $(GPTFDISK_TARGETS_y) +endef + +define GPTFDISK_INSTALL_TARGET_CMDS + for i in $(GPTFDISK_TARGETS_y); do \ + $(INSTALL) -D -m 0755 $(@D)/$$i $(TARGET_DIR)/usr/sbin/$$i || exit 1; \ + done +endef + +HOST_GPTFDISK_DEPENDENCIES = host-util-linux host-popt + +define HOST_GPTFDISK_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) sgdisk +endef + +define HOST_GPTFDISK_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/sgdisk $(HOST_DIR)/sbin/sgdisk +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/gqrx/0001-fix_compilation_in_gcc-6.patch b/buildroot/package/gqrx/0001-fix_compilation_in_gcc-6.patch new file mode 100644 index 0000000..22ec1ef --- /dev/null +++ b/buildroot/package/gqrx/0001-fix_compilation_in_gcc-6.patch @@ -0,0 +1,34 @@ +From e6baaee4968345a53e977f593362267a91041cff Mon Sep 17 00:00:00 2001 +From: Valentin Ochs +Date: Fri, 21 Oct 2016 20:12:50 +0200 +Subject: [PATCH] Cosmetic & readability changes + +Backport patch from +https://github.com/csete/gqrx/commit/e6baaee4968345a53e977f593362267a91041cff + +Fix compilation in gcc-6 + +Signed-off-by: Valentin Ochs +Signed-off-by: Gwenhael Goavec-Merou +--- +diff --git a/src/qtgui/plotter.cpp b/src/qtgui/plotter.cpp +index e491632..b877546 100644 +--- a/src/qtgui/plotter.cpp ++++ b/src/qtgui/plotter.cpp +@@ -1336,8 +1336,11 @@ void CPlotter::drawOverlay() + #endif + + int level = 0; +- for (; level < nLevels && tagEnd[level] > x; level++); +- level %= nLevels; ++ while(level < nLevels && tagEnd[level] > x) ++ level++; ++ ++ if(level == nLevels) ++ level = 0; + + tagEnd[level] = x + nameWidth + slant - 1; + m_BookmarkTags.append(qMakePair(QRect(x, level * levelHeight, nameWidth + slant, fontHeight), bookmarks[i].frequency)); +-- +2.10.2 + diff --git a/buildroot/package/gqrx/Config.in b/buildroot/package/gqrx/Config.in new file mode 100644 index 0000000..1dc40c6 --- /dev/null +++ b/buildroot/package/gqrx/Config.in @@ -0,0 +1,42 @@ +comment "gqrx needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR + +comment "gqrx needs qt5, gnuradio, fftw's single precision" + depends on !BR2_PACKAGE_GNURADIO || !BR2_PACKAGE_FFTW_PRECISION_SINGLE || \ + !BR2_PACKAGE_QT5 + +config BR2_PACKAGE_GQRX + bool "gqrx" + depends on BR2_PACKAGE_FFTW_PRECISION_SINGLE # gnuradio + depends on BR2_PACKAGE_GNURADIO + depends on BR2_PACKAGE_QT5 + depends on BR2_INSTALL_LIBSTDCPP # boost + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR # boost + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_GNURADIO_ANALOG + select BR2_PACKAGE_GNURADIO_AUDIO + select BR2_PACKAGE_GNURADIO_BLOCKS + select BR2_PACKAGE_GNURADIO_DIGITAL + select BR2_PACKAGE_GNURADIO_FFT + select BR2_PACKAGE_GNURADIO_FILTER + select BR2_PACKAGE_GR_OSMOSDR + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5SVG + help + Gqrx is an open source software defined radio (SDR) receiver + implemented using GNU Radio and the Qt GUI + toolkit. Currently it works on Linux and Mac with hardware + supported by gr-osmosdr, including Funcube Dongle, RTL-SDR, + Airspy, HackRF, BladeRF, RFSpace, USRP and SoapySDR. + + Gqrx can operate as an AM/FM/SSB receiver with audio output + or as an FFT-only instrument. There are also various hooks + for interacting with external application using network + sockets. + + http://gqrx.dk/ diff --git a/buildroot/package/gqrx/gqrx.hash b/buildroot/package/gqrx/gqrx.hash new file mode 100644 index 0000000..bb52a61 --- /dev/null +++ b/buildroot/package/gqrx/gqrx.hash @@ -0,0 +1,2 @@ +# Locally calculated: +sha256 2736a963dac4051ca8ae91a440ee6643ef7d26c9de5b9c83a369d5fc9328d453 gqrx-v2.6.1.tar.gz diff --git a/buildroot/package/gqrx/gqrx.mk b/buildroot/package/gqrx/gqrx.mk new file mode 100644 index 0000000..2a7651c --- /dev/null +++ b/buildroot/package/gqrx/gqrx.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# gqrx +# +################################################################################ + +GQRX_VERSION = v2.6.1 +GQRX_SITE = $(call github,csete,gqrx,$(GQRX_VERSION)) +GQRX_LICENSE = GPL-3.0+, Apache-2.0 +GQRX_LICENSE_FILES = COPYING LICENSE-CTK +GQRX_DEPENDENCIES = boost gnuradio gr-osmosdr qt5base qt5svg + +GQRX_CONF_OPTS = -DLINUX_AUDIO_BACKEND=Gr-audio + +$(eval $(cmake-package)) diff --git a/buildroot/package/gqview/0001-make.patch b/buildroot/package/gqview/0001-make.patch new file mode 100644 index 0000000..0b1626f --- /dev/null +++ b/buildroot/package/gqview/0001-make.patch @@ -0,0 +1,11 @@ +--- a/src/Makefile.in 2006-12-02 20:41:25.000000000 -0500 ++++ b/src/Makefile.in 2008-02-13 14:00:25.000000000 -0500 +@@ -200,7 +200,7 @@ SUBDIRS = icons + DIST_SUBDIRS = icons + INCLUDES = -I$(srcdir) -I$(builddir) \ + -I$(top_srcdir) -I$(top_builddir) \ +- -I$(includedir) $(GTK_CFLAGS) ++ $(GTK_CFLAGS) + + module_SLIK = \ + intl.h \ diff --git a/buildroot/package/gqview/Config.in b/buildroot/package/gqview/Config.in new file mode 100644 index 0000000..c1df40c --- /dev/null +++ b/buildroot/package/gqview/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_GQVIEW + bool "gqview" + depends on BR2_PACKAGE_LIBGTK2 + help + GQview is an image viewer for Unix operating systems + + http://prdownloads.sourceforge.net/gqview diff --git a/buildroot/package/gqview/gqview.hash b/buildroot/package/gqview/gqview.hash new file mode 100644 index 0000000..eb65497 --- /dev/null +++ b/buildroot/package/gqview/gqview.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 12fea494e607a69eff31cdca13d306ef1b0b3b7850be0f8b236f267d8f2e9546 gqview-2.1.5.tar.gz diff --git a/buildroot/package/gqview/gqview.mk b/buildroot/package/gqview/gqview.mk new file mode 100644 index 0000000..0837630 --- /dev/null +++ b/buildroot/package/gqview/gqview.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# gqview +# +################################################################################ + +GQVIEW_VERSION = 2.1.5 +GQVIEW_SITE = http://prdownloads.sourceforge.net/gqview +GQVIEW_DEPENDENCIES = host-pkgconf libgtk2 +GQVIEW_CONF_ENV = LIBS="-lm" +GQVIEW_LICENSE = GPL-2.0 +GQVIEW_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/gr-osmosdr/Config.in b/buildroot/package/gr-osmosdr/Config.in new file mode 100644 index 0000000..aa6ef0d --- /dev/null +++ b/buildroot/package/gr-osmosdr/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_GR_OSMOSDR + bool "gr-osmosdr" + depends on BR2_PACKAGE_GNURADIO + select BR2_PACKAGE_GNURADIO_BLOCKS + help + GNU Radio block for interfacing with various radio hardware + +if BR2_PACKAGE_GR_OSMOSDR + +config BR2_PACKAGE_GR_OSMOSDR_PYTHON + bool "python support" + depends on BR2_PACKAGE_GNURADIO_PYTHON + help + Enable Python support + +config BR2_PACKAGE_GR_OSMOSDR_IQFILE + bool "IQ File Source support" + help + Enable IQ File Source support + +config BR2_PACKAGE_GR_OSMOSDR_RTLSDR + bool "Osmocom RTLSDR support" + select BR2_PACKAGE_LIBRTLSDR + help + Enable Osmocom RTLSDR support + +config BR2_PACKAGE_GR_OSMOSDR_RTLSDR_TCP + bool "RTLSDR TCP Client support" + help + Enable RTLSDR TCP client support + +config BR2_PACKAGE_GR_OSMOSDR_RFSPACE + bool "RFSPACE Receivers support" + help + Enable RFSPACE Receivers support + +endif diff --git a/buildroot/package/gr-osmosdr/gr-osmosdr.hash b/buildroot/package/gr-osmosdr/gr-osmosdr.hash new file mode 100644 index 0000000..337f3ef --- /dev/null +++ b/buildroot/package/gr-osmosdr/gr-osmosdr.hash @@ -0,0 +1,2 @@ +# Locally calculated: +sha256 274960cd32bc8a7216eeed8967bf078efd6123332808b405ec42c24a7e426b7c gr-osmosdr-164a09fc11cec2d8b15b38e8b512fa542d6cecc7.tar.gz diff --git a/buildroot/package/gr-osmosdr/gr-osmosdr.mk b/buildroot/package/gr-osmosdr/gr-osmosdr.mk new file mode 100644 index 0000000..55e043e --- /dev/null +++ b/buildroot/package/gr-osmosdr/gr-osmosdr.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# gr-osmosdr +# +################################################################################ + +GR_OSMOSDR_VERSION = 164a09fc11cec2d8b15b38e8b512fa542d6cecc7 +GR_OSMOSDR_SITE = $(call github,osmocom,gr-osmosdr,$(GR_OSMOSDR_VERSION)) +GR_OSMOSDR_LICENSE = GPL-3.0+ +GR_OSMOSDR_LICENSE_FILES = COPYING + +# gr-osmosdr prevents doing an in-source-tree build +GR_OSMOSDR_SUPPORTS_IN_SOURCE_BUILD = NO + +GR_OSMOSDR_DEPENDENCIES = gnuradio + +GR_OSMOSDR_CONF_OPTS = -DENABLE_DEFAULT=OFF + +# For third-party blocks, the gr-osmosdr libraries are mandatory at +# compile time. +GR_OSMOSDR_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_GR_OSMOSDR_PYTHON),y) +GR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=ON +GR_OSMOSDR_DEPENDENCIES += python +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_PYTHON=OFF +endif + +ifeq ($(BR2_PACKAGE_GR_OSMOSDR_IQFILE),y) +GR_OSMOSDR_CONF_OPTS += -DENABLE_FILE=ON +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_FILE=OFF +endif + +ifeq ($(BR2_PACKAGE_GR_OSMOSDR_RTLSDR),y) +GR_OSMOSDR_CONF_OPTS += -DENABLE_RTL=ON +GR_OSMOSDR_DEPENDENCIES += librtlsdr +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_RTL=OFF +endif + +ifeq ($(BR2_PACKAGE_GR_OSMOSDR_RTLSDR_TCP),y) +GR_OSMOSDR_CONF_OPTS += -DENABLE_RTL_TCP=ON +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_RTL_TCP=OFF +endif + +ifeq ($(BR2_PACKAGE_GR_OSMOSDR_RFSPACE),y) +GR_OSMOSDR_CONF_OPTS += -DENABLE_RFSPACE=ON +else +GR_OSMOSDR_CONF_OPTS += -DENABLE_RFSPACE=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/granite/Config.in b/buildroot/package/granite/Config.in new file mode 100644 index 0000000..fef5e27 --- /dev/null +++ b/buildroot/package/granite/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_GRANITE + bool "granite" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_LIBGEE + select BR2_PACKAGE_LIBGLIB2 + help + An extension to GTK+ that provides several useful widgets and + classes to ease application development. + + https://launchpad.net/granite + +comment "granite needs libgtk3 and a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_LIBGTK3 || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/granite/granite.hash b/buildroot/package/granite/granite.hash new file mode 100644 index 0000000..b9ed287 --- /dev/null +++ b/buildroot/package/granite/granite.hash @@ -0,0 +1,4 @@ +# From https://launchpad.net/granite/0.4/0.4.1/+download/granite-0.4.1.tar.xz/+md5 +md5 b1002c0488bb9ade0ef89730c4f84393 granite-0.4.1.tar.xz +# Calculated based on the hash above +sha256 8bb411523e6cd5685c928dbfe08893892189cedf9fad5f537aa76182032cf09c granite-0.4.1.tar.xz diff --git a/buildroot/package/granite/granite.mk b/buildroot/package/granite/granite.mk new file mode 100644 index 0000000..f824ba7 --- /dev/null +++ b/buildroot/package/granite/granite.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# granite +# +################################################################################ + +GRANITE_VERSION_MAJOR = 0.4 +GRANITE_VERSION = $(GRANITE_VERSION_MAJOR).1 +GRANITE_SITE = https://launchpad.net/granite/$(GRANITE_VERSION_MAJOR)/$(GRANITE_VERSION)/+download +GRANITE_SOURCE = granite-$(GRANITE_VERSION).tar.xz +GRANITE_DEPENDENCIES = host-pkgconf host-vala libgee libglib2 libgtk3 +GRANITE_INSTALL_STAGING = YES +GRANITE_LICENSE = LGPL-3.0+ +GRANITE_LICENSE_FILES = COPYING + +$(eval $(cmake-package)) diff --git a/buildroot/package/grantlee/Config.in b/buildroot/package/grantlee/Config.in new file mode 100644 index 0000000..779306b --- /dev/null +++ b/buildroot/package/grantlee/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_GRANTLEE + bool "grantlee" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE && BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5SCRIPT + select BR2_PACKAGE_QT5BASE_GUI + help + Qt implementation of the Django template framework + + http://www.grantlee.org diff --git a/buildroot/package/grantlee/grantlee.hash b/buildroot/package/grantlee/grantlee.hash new file mode 100644 index 0000000..cdff778 --- /dev/null +++ b/buildroot/package/grantlee/grantlee.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 ea2e402466c74bb533eee2c7252209ec61cd93a5d236fecd625b4a0eb13a1478 grantlee-5.1.0.tar.gz diff --git a/buildroot/package/grantlee/grantlee.mk b/buildroot/package/grantlee/grantlee.mk new file mode 100644 index 0000000..575b63f --- /dev/null +++ b/buildroot/package/grantlee/grantlee.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# grantlee +# +################################################################################ + +GRANTLEE_VERSION = 5.1.0 +GRANTLEE_SITE = http://downloads.grantlee.org +GRANTLEE_INSTALL_STAGING = YES +GRANTLEE_LICENSE = LGPL-2.1+ +GRANTLEE_LICENSE_FILES = COPYING.LIB +GRANTLEE_DEPENDENCIES = qt5base qt5script + +$(eval $(cmake-package)) diff --git a/buildroot/package/graphite2/0001-disable-double-promotion.patch b/buildroot/package/graphite2/0001-disable-double-promotion.patch new file mode 100644 index 0000000..888d862 --- /dev/null +++ b/buildroot/package/graphite2/0001-disable-double-promotion.patch @@ -0,0 +1,23 @@ +Don't use -Wdouble-promotion gcc option + +The warning flag isn't recognized for older GCC versions (blackfin), +so just disable it. + +Signed-off-by: Gustavo Zacarias +[Gustavo: update for 1.3.5] +Signed-off-by: Bernd Kuhls +[Bernd: update for 1.3.10] + +diff -Nura graphite2-1.3.5.orig/src/CMakeLists.txt graphite2-1.3.5/src/CMakeLists.txt +--- graphite2-1.3.5.orig/src/CMakeLists.txt 2016-02-15 11:46:45.941906112 -0300 ++++ graphite2-1.3.5/src/CMakeLists.txt 2016-02-15 11:46:54.237194222 -0300 +@@ -111,9 +111,6 @@ + if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86") + add_definitions(-mfpmath=sse -msse2) + endif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86") +- if (CMAKE_COMPILER_IS_GNUCXX) +- add_definitions(-Wdouble-promotion) +- endif (CMAKE_COMPILER_IS_GNUCXX) + message(STATUS "Compiler ID is: ${CMAKE_CXX_COMPILER_ID}") + if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") + add_definitions(-Wimplicit-fallthrough) diff --git a/buildroot/package/graphite2/Config.in b/buildroot/package/graphite2/Config.in new file mode 100644 index 0000000..5499e17 --- /dev/null +++ b/buildroot/package/graphite2/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GRAPHITE2 + bool "graphite2" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + help + Graphite is a project within SIL's scripts and software dev + groups to provide cross-platform rendering for complex + writing systems. + + http://graphite.sil.org/ + +comment "graphite2 needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/buildroot/package/graphite2/graphite2.hash b/buildroot/package/graphite2/graphite2.hash new file mode 100644 index 0000000..ecf082b --- /dev/null +++ b/buildroot/package/graphite2/graphite2.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/silgraphite/files/graphite2 +md5 b39d5ed21195f8b709bcee548c87e2b5 graphite2-1.3.10.tgz +sha1 668f3bce96fc02d90ea875b401ed36b2e8957d2f graphite2-1.3.10.tgz +# Locally computed +sha256 90fde3b2f9ea95d68ffb19278d07d9b8a7efa5ba0e413bebcea802ce05cda1ae graphite2-1.3.10.tgz diff --git a/buildroot/package/graphite2/graphite2.mk b/buildroot/package/graphite2/graphite2.mk new file mode 100644 index 0000000..2bb4f46 --- /dev/null +++ b/buildroot/package/graphite2/graphite2.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# graphite2 +# +################################################################################ + +GRAPHITE2_VERSION = 1.3.10 +GRAPHITE2_SOURCE = graphite2-$(GRAPHITE2_VERSION).tgz +GRAPHITE2_SITE = http://downloads.sourceforge.net/project/silgraphite/graphite2 +GRAPHITE2_INSTALL_STAGING = YES +GRAPHITE2_LICENSE = LGPL-2.1+ +GRAPHITE2_LICENSE_FILES = LICENSE + +# Avoid building docs and tests to save time +define GRAPHITE2_DISABLE_TESTS_DOC + $(SED) '/^add_subdirectory(doc)/d' \ + -e '/^add_subdirectory(tests)/d' \ + -e '/add_subdirectory(gr2fonttest)/d' \ + $(@D)/CMakeLists.txt +endef +GRAPHITE2_POST_PATCH_HOOKS += GRAPHITE2_DISABLE_TESTS_DOC + +$(eval $(cmake-package)) diff --git a/buildroot/package/grep/Config.in b/buildroot/package/grep/Config.in new file mode 100644 index 0000000..5b0471b --- /dev/null +++ b/buildroot/package/grep/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_GREP + bool "grep" + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + The GNU regular expression matcher. + + http://www.gnu.org/software/grep/grep.html + +comment "grep needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/grep/grep.hash b/buildroot/package/grep/grep.hash new file mode 100644 index 0000000..10a5e32 --- /dev/null +++ b/buildroot/package/grep/grep.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking signature +# http://ftp.gnu.org/gnu/grep/grep-3.1.tar.xz.sig +sha256 db625c7ab3bb3ee757b3926a5cfa8d9e1c3991ad24707a83dde8a5ef2bf7a07e grep-3.1.tar.xz +sha256 ca372a7d92560b1fa9f6d832b440e8bcd62d9adfa8870c98287deab66d98310e COPYING diff --git a/buildroot/package/grep/grep.mk b/buildroot/package/grep/grep.mk new file mode 100644 index 0000000..6e44a18 --- /dev/null +++ b/buildroot/package/grep/grep.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# grep +# +################################################################################ + +GREP_VERSION = 3.1 +GREP_SITE = $(BR2_GNU_MIRROR)/grep +GREP_SOURCE = grep-$(GREP_VERSION).tar.xz +GREP_LICENSE = GPL-3.0+ +GREP_LICENSE_FILES = COPYING +GREP_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +# link with iconv if enabled +ifeq ($(BR2_PACKAGE_LIBICONV),y) +GREP_CONF_ENV += LIBS=-liconv +GREP_DEPENDENCIES += libiconv +endif + +# link with pcre if enabled +ifeq ($(BR2_PACKAGE_PCRE),y) +GREP_CONF_OPTS += --enable-perl-regexp +GREP_DEPENDENCIES += pcre +else +GREP_CONF_OPTS += --disable-perl-regexp +endif + +# Full grep preferred over busybox grep +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +GREP_DEPENDENCIES += busybox +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gsettings-desktop-schemas/Config.in b/buildroot/package/gsettings-desktop-schemas/Config.in new file mode 100644 index 0000000..0dfffc3 --- /dev/null +++ b/buildroot/package/gsettings-desktop-schemas/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS + bool "gsettings-desktop-schemas" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + gsettings-desktop-schemas contains a collection of GSettings + schemas for settings shared by various components of a + desktop. + + https://github.com/GNOME/gsettings-desktop-schemas + +comment "gsettings-desktop-schemas needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gsettings-desktop-schemas/gsettings-desktop-schemas.hash b/buildroot/package/gsettings-desktop-schemas/gsettings-desktop-schemas.hash new file mode 100644 index 0000000..05ec7a4 --- /dev/null +++ b/buildroot/package/gsettings-desktop-schemas/gsettings-desktop-schemas.hash @@ -0,0 +1,2 @@ +# From http://ftp.acc.umu.se/pub/gnome/sources/gsettings-desktop-schemas/3.22/gsettings-desktop-schemas-3.22.0.sha256sum +sha256 0f06c7ba34c3a99e4d58b10889496133c9aaad6698ea2d8405d481c7f1a7eae1 gsettings-desktop-schemas-3.22.0.tar.xz diff --git a/buildroot/package/gsettings-desktop-schemas/gsettings-desktop-schemas.mk b/buildroot/package/gsettings-desktop-schemas/gsettings-desktop-schemas.mk new file mode 100644 index 0000000..420ceda --- /dev/null +++ b/buildroot/package/gsettings-desktop-schemas/gsettings-desktop-schemas.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# gsettings-desktop-schemas +# +################################################################################ + +GSETTINGS_DESKTOP_SCHEMAS_VERSION_MAJOR = 3.22 +GSETTINGS_DESKTOP_SCHEMAS_VERSION = $(GSETTINGS_DESKTOP_SCHEMAS_VERSION_MAJOR).0 +GSETTINGS_DESKTOP_SCHEMAS_SOURCE = gsettings-desktop-schemas-$(GSETTINGS_DESKTOP_SCHEMAS_VERSION).tar.xz +GSETTINGS_DESKTOP_SCHEMAS_SITE = http://ftp.gnome.org/pub/gnome/sources/gsettings-desktop-schemas/$(GSETTINGS_DESKTOP_SCHEMAS_VERSION_MAJOR) +GSETTINGS_DESKTOP_SCHEMAS_INSTALL_STAGING = YES +GSETTINGS_DESKTOP_SCHEMAS_DEPENDENCIES = host-intltool host-pkgconf libglib2 +GSETTINGS_DESKTOP_SCHEMAS_LICENSE = LGPL-2.1+ +GSETTINGS_DESKTOP_SCHEMAS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/gsl/Config.in b/buildroot/package/gsl/Config.in new file mode 100644 index 0000000..5b82ac2 --- /dev/null +++ b/buildroot/package/gsl/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_GSL + bool "gsl" + help + The GNU Scientific Library (GSL) is a numerical library for + C and C++ programmers. The library provides a wide range of + mathematical routines such as random number generators, + special functions and least-squares fitting. There are over + 1000 functions in total with an extensive test suite. + + http://www.gnu.org/software/gsl diff --git a/buildroot/package/gsl/gsl.hash b/buildroot/package/gsl/gsl.hash new file mode 100644 index 0000000..f7b1d53 --- /dev/null +++ b/buildroot/package/gsl/gsl.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 562500b789cd599b3a4f88547a7a3280538ab2ff4939504c8b4ac4ca25feadfb gsl-2.3.tar.gz diff --git a/buildroot/package/gsl/gsl.mk b/buildroot/package/gsl/gsl.mk new file mode 100644 index 0000000..41379f4 --- /dev/null +++ b/buildroot/package/gsl/gsl.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# gsl +# +################################################################################ + +GSL_VERSION = 2.3 +GSL_SITE = $(BR2_GNU_MIRROR)/gsl +GSL_INSTALL_STAGING = YES +GSL_LICENSE = GPL-3.0 +GSL_LICENSE_FILES = COPYING +GSL_CONFIG_SCRIPTS = gsl-config + +# uClibc pretends to have fenv support as it installs , but in +# practice, it only implements it for i386. Problem reported upstream +# at: http://lists.busybox.net/pipermail/uclibc/2012-October/047067.html. +# So we tell gsl that fenv related functions are not available in this +# case. +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +ifneq ($(BR2_i386),y) +GSL_CONF_ENV = \ + ac_cv_have_decl_feenableexcept=no \ + ac_cv_have_decl_fesettrapenable=no +endif +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gssdp/Config.in b/buildroot/package/gssdp/Config.in new file mode 100644 index 0000000..80c5edf --- /dev/null +++ b/buildroot/package/gssdp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GSSDP + bool "gssdp" + depends on BR2_USE_WCHAR # glib2, libsoup + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2, libsoup + depends on BR2_USE_MMU # glib2, libsoup + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSOUP + help + GSSDP implements resource discovery and announcement over + SSDP. + + http://www.gupnp.org + +comment "gssdp needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gssdp/gssdp.hash b/buildroot/package/gssdp/gssdp.hash new file mode 100644 index 0000000..acf6b3a --- /dev/null +++ b/buildroot/package/gssdp/gssdp.hash @@ -0,0 +1,5 @@ +# Hash from: http://ftp.gnome.org/pub/gnome/sources/gssdp/1.0/gssdp-1.0.2.sha256sum: +sha256 a1e17c09c7e1a185b0bd84fd6ff3794045a3cd729b707c23e422ff66471535dc gssdp-1.0.2.tar.xz + +# Hash for license file: +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/buildroot/package/gssdp/gssdp.mk b/buildroot/package/gssdp/gssdp.mk new file mode 100644 index 0000000..2ce1f9b --- /dev/null +++ b/buildroot/package/gssdp/gssdp.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# gssdp +# +################################################################################ + +GSSDP_VERSION_MAJOR = 1.0 +GSSDP_VERSION = $(GSSDP_VERSION_MAJOR).2 +GSSDP_SOURCE = gssdp-$(GSSDP_VERSION).tar.xz +GSSDP_SITE = http://ftp.gnome.org/pub/gnome/sources/gssdp/$(GSSDP_VERSION_MAJOR) +GSSDP_LICENSE = LGPL-2.0+ +GSSDP_LICENSE_FILES = COPYING +GSSDP_INSTALL_STAGING = YES +GSSDP_DEPENDENCIES = host-pkgconf libglib2 libsoup + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer/Config.in b/buildroot/package/gstreamer/Config.in new file mode 100644 index 0000000..c6292f4 --- /dev/null +++ b/buildroot/package/gstreamer/Config.in @@ -0,0 +1,14 @@ +# Gstreamer 0.10.x & Plugins +source "package/gstreamer/gstreamer/Config.in" + +if BR2_PACKAGE_GSTREAMER +source "package/gstreamer/gst-plugins-base/Config.in" +source "package/gstreamer/gst-plugins-good/Config.in" +source "package/gstreamer/gst-plugins-bad/Config.in" +source "package/gstreamer/gst-plugins-ugly/Config.in" +source "package/gstreamer/gst-ffmpeg/Config.in" +source "package/gstreamer/gst-dsp/Config.in" +source "package/gstreamer/gst-fsl-plugins/Config.in" +source "package/gstreamer/gst-omapfb/Config.in" +source "package/gstreamer/gst-plugin-x170/Config.in" +endif diff --git a/buildroot/package/gstreamer/gst-dsp/Config.in b/buildroot/package/gstreamer/gst-dsp/Config.in new file mode 100644 index 0000000..102cf69 --- /dev/null +++ b/buildroot/package/gstreamer/gst-dsp/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_GST_DSP + bool "gst-dsp" + depends on BR2_cortex_a8 + select BR2_PACKAGE_TIDSP_BINARIES + help + GStreamer plug-in to access TI OMAP3 DSP algorithms. + + http://code.google.com/p/gst-dsp/ diff --git a/buildroot/package/gstreamer/gst-dsp/gst-dsp.hash b/buildroot/package/gstreamer/gst-dsp/gst-dsp.hash new file mode 100644 index 0000000..3bccfc1 --- /dev/null +++ b/buildroot/package/gstreamer/gst-dsp/gst-dsp.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 45437a038979916de74e78a2cc7a0b01ba3982d0848e1e483a054c9cf0ce5883 gst-dsp-v0.10.2.tar.gz diff --git a/buildroot/package/gstreamer/gst-dsp/gst-dsp.mk b/buildroot/package/gstreamer/gst-dsp/gst-dsp.mk new file mode 100644 index 0000000..dedffb9 --- /dev/null +++ b/buildroot/package/gstreamer/gst-dsp/gst-dsp.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# gst-dsp +# +################################################################################ + +GST_DSP_VERSION = v0.10.2 +GST_DSP_SITE = $(call github,felipec,gst-dsp,$(GST_DSP_VERSION)) + +define GST_DSP_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) -e +endef + +define GST_DSP_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) -e DESTDIR=$(TARGET_DIR) install +endef + +GST_DSP_DEPENDENCIES = gstreamer tidsp-binaries host-pkgconf + +$(eval $(generic-package)) diff --git a/buildroot/package/gstreamer/gst-ffmpeg/0001-gcc47.patch b/buildroot/package/gstreamer/gst-ffmpeg/0001-gcc47.patch new file mode 100644 index 0000000..16744ab --- /dev/null +++ b/buildroot/package/gstreamer/gst-ffmpeg/0001-gcc47.patch @@ -0,0 +1,65 @@ +gst-ffmpeg libav: Fixes compiling gst-ffmpeg with gcc-4.7 + +Fetch from: http://www.slackware.com/~alien/slackbuilds/gst-plugins-ffmpeg/build/gst-ffmpeg-0.10.13_gcc47.patch + +Signed-off-by: Bernd Kuhls +--- +Submitted By: Andrew Benton +Date: 2012-06-15 +Initial Package Version: 0.10.13 +Upstream Status: From upstream +Origin: +http://git.videolan.org/?p=ffmpeg.git;a=patch;h=5f654897e325349dacf2546674e0510bb72ecb50 + +Description: Fixes compiling gst-ffmpeg with gcc-4.7 + +libavcodec/x86/h264_qpel_mmx.c: Assembler messages: +libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp' +libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp' +libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp' +libavcodec/x86/h264_qpel_mmx.c:1298: Error: operand type mismatch for `cmp' +libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp' +libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp' +libavcodec/x86/h264_qpel_mmx.c:964: Error: operand type mismatch for `cmp' +make[5]: *** [libavcodec/x86/dsputil_mmx.o] Error 1 + +Index: gst-ffmpeg-0.10.13/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c +=================================================================== +--- gst-ffmpeg-0.10.13.orig/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c 2012-03-30 11:39:41.324522051 -0700 ++++ gst-ffmpeg-0.10.13/gst-libs/ext/libav/libavcodec/x86/h264_qpel_mmx.c 2012-03-30 11:54:08.152564075 -0700 +@@ -398,7 +398,7 @@ + "2: \n\t"\ + \ + : "+a"(src), "+c"(dst)\ +- : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "g"(h)\ ++ : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "rm"(h)\ + : "memory"\ + );\ + src += 4-(h+5)*srcStride;\ +@@ -446,7 +446,7 @@ + QPEL_H264HV(%%mm3, %%mm4, %%mm5, %%mm0, %%mm1, %%mm2, 15*48)\ + "2: \n\t"\ + : "+a"(src)\ +- : "c"(tmp), "S"((x86_reg)srcStride), "g"(size)\ ++ : "c"(tmp), "S"((x86_reg)srcStride), "rm"(size)\ + : "memory"\ + );\ + tmp += 4;\ +@@ -823,7 +823,7 @@ + "2: \n\t"\ + \ + : "+a"(src), "+c"(dst)\ +- : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "g"(h)\ ++ : "S"((x86_reg)srcStride), "D"((x86_reg)dstStride), "rm"(h)\ + : XMM_CLOBBERS("%xmm0", "%xmm1", "%xmm2", "%xmm3", \ + "%xmm4", "%xmm5", "%xmm6", "%xmm7",)\ + "memory"\ +@@ -878,7 +878,7 @@ + QPEL_H264HV_XMM(%%xmm3, %%xmm4, %%xmm5, %%xmm0, %%xmm1, %%xmm2, 15*48) + "2: \n\t" + : "+a"(src) +- : "c"(tmp), "S"((x86_reg)srcStride), "g"(size) ++ : "c"(tmp), "S"((x86_reg)srcStride), "rm"(size) + : XMM_CLOBBERS("%xmm0", "%xmm1", "%xmm2", "%xmm3", + "%xmm4", "%xmm5", "%xmm6", "%xmm7",) + "memory" diff --git a/buildroot/package/gstreamer/gst-ffmpeg/0002-arm-avoid-using-the-movw-instruction.patch b/buildroot/package/gstreamer/gst-ffmpeg/0002-arm-avoid-using-the-movw-instruction.patch new file mode 100644 index 0000000..288dc3d --- /dev/null +++ b/buildroot/package/gstreamer/gst-ffmpeg/0002-arm-avoid-using-the-movw-instruction.patch @@ -0,0 +1,41 @@ +Date: Mon, 1 Aug 2011 20:21:04 +0300 +Subject: [libavcodec] arm: Avoid using the movw instruction needlessly +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf8 +Content-Transfer-Encoding: 8bit + +This fixes building for ARM11 without Thumb2. + +Signed-off-by: Martin Storsjö + +[Arnout: backported to gst-ffmpeg, from ffmpeg 9a83adaf3] +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + gst-libs/ext/libav/libavcodec/arm/ac3dsp_armv6.S | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gst-libs/ext/libav/libavcodec/arm/ac3dsp_armv6.S b/gst-libs/ext/libav/libavcodec/arm/ac3dsp_armv6.S +index d3058ff..b6aee86 100644 +--- a/gst-libs/ext/libav/libavcodec/arm/ac3dsp_armv6.S ++++ b/gst-libs/ext/libav/libavcodec/arm/ac3dsp_armv6.S +@@ -37,7 +37,7 @@ function ff_ac3_bit_alloc_calc_bap_armv6, export=1 + ldrb r10, [r4], #1 + 1: + ldrsh r9, [r0], #2 @ mask[band] +- movw r8, #0x1fe0 ++ mov r8, #0xff0 + sub r9, r9, r12 @ - snr_offset + mov r11, r10 + ldrb r10, [r4], #1 @ band_start_tab[band++] +@@ -44,7 +44,7 @@ function ff_ac3_bit_alloc_calc_bap_armv6, export=1 + subs r9, r9, r5 @ - floor + movlt r9, #0 + cmp r10, r3 @ - end +- and r9, r9, r8 @ & 0x1fe0 ++ and r9, r9, r8, lsl #1 @ & 0x1fe0 + subgt r8, r3, r11 + suble r8, r10, r11 + add r9, r9, r5 @ + floor => m +-- +1.7.10.4 + diff --git a/buildroot/package/gstreamer/gst-ffmpeg/Config.in b/buildroot/package/gstreamer/gst-ffmpeg/Config.in new file mode 100644 index 0000000..32bfdd5 --- /dev/null +++ b/buildroot/package/gstreamer/gst-ffmpeg/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_GST_FFMPEG + bool "gst-ffmpeg" + # Unsupported for MIPS R6. It bundles a version of libav which + # doesn't have support for MIPS R6. + depends on !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6 + # triggers https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65151 on sh + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 || !BR2_sh + select BR2_PACKAGE_GST_PLUGINS_BASE + help + GStreamer plugin containing one plugin with a set of + elements using the Libav library. It contains most popular + decoders as well as colorspace conversion elements. + + This package is configured to use an internal copy of the + Libav library. + + http://gstreamer.freedesktop.org/modules/gst-ffmpeg.html + +if BR2_PACKAGE_GST_FFMPEG + +config BR2_PACKAGE_GST_FFMPEG_GPL + bool "Enable GPL code" + help + Allow use of GPL code. The resulting libs and binaries will + be under GPL. + +endif + +comment "gst-ffmpeg needs a toolchain w/ gcc >= 5" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 && BR2_sh diff --git a/buildroot/package/gstreamer/gst-ffmpeg/gst-ffmpeg.hash b/buildroot/package/gstreamer/gst-ffmpeg/gst-ffmpeg.hash new file mode 100644 index 0000000..5f7f35d --- /dev/null +++ b/buildroot/package/gstreamer/gst-ffmpeg/gst-ffmpeg.hash @@ -0,0 +1,2 @@ +# From http://gstreamer.freedesktop.org/src/gst-ffmpeg/gst-ffmpeg-0.10.13.tar.bz2.md5 +md5 7f5beacaf1312db2db30a026b36888c4 gst-ffmpeg-0.10.13.tar.bz2 diff --git a/buildroot/package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk b/buildroot/package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk new file mode 100644 index 0000000..6f41efb --- /dev/null +++ b/buildroot/package/gstreamer/gst-ffmpeg/gst-ffmpeg.mk @@ -0,0 +1,95 @@ +################################################################################ +# +# gst-ffmpeg +# +################################################################################ + +GST_FFMPEG_VERSION = 0.10.13 +GST_FFMPEG_SOURCE = gst-ffmpeg-$(GST_FFMPEG_VERSION).tar.bz2 +GST_FFMPEG_SITE = http://gstreamer.freedesktop.org/src/gst-ffmpeg +GST_FFMPEG_INSTALL_STAGING = YES +GST_FFMPEG_DEPENDENCIES = host-pkgconf gstreamer gst-plugins-base + +ifeq ($(BR2_PACKAGE_GST_FFMPEG_GPL),y) +GST_FFMPEG_CONF_OPTS += --disable-lgpl +GST_FFMPEG_LICENSE = GPL-2.0+ (gst-ffmpeg), GPL-2.0+/GPL-3.0+ (libav) +GST_FFMPEG_LICENSE_FILES = COPYING gst-libs/ext/libav/COPYING.GPLv2 gst-libs/ext/libav/COPYING.GPLv3 +else +GST_FFMPEG_CONF_OPTS += --enable-lgpl +GST_FFMPEG_LICENSE = LGPL-2.0+ (gst-ffmpeg), LGPL-2.1+/LGPL-3.0+ (libav) +GST_FFMPEG_LICENSE_FILES = COPYING.LIB gst-libs/ext/libav/COPYING.LGPLv2.1 gst-libs/ext/libav/COPYING.LGPLv3 +endif + +GST_FFMPEG_CONF_EXTRA_OPTS = \ + --cross-prefix=$(TARGET_CROSS) \ + --target-os=linux \ + --pkg-config='$(PKG_CONFIG_HOST_BINARY)' + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GST_FFMPEG_CONF_EXTRA_OPTS += --enable-zlib +GST_FFMPEG_DEPENDENCIES += zlib +else +GST_FFMPEG_CONF_EXTRA_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +GST_FFMPEG_CONF_EXTRA_OPTS += --enable-bzlib +GST_FFMPEG_DEPENDENCIES += bzip2 +else +GST_FFMPEG_CONF_EXTRA_OPTS += --disable-bzlib +endif + +ifeq ($(BR2_X86_CPU_HAS_MMX),y) +GST_FFMPEG_CONF_EXTRA_OPTS += --enable-yasm +GST_FFMPEG_DEPENDENCIES += host-yasm +else +GST_FFMPEG_CONF_EXTRA_OPTS += --disable-yasm +GST_FFMPEG_CONF_EXTRA_OPTS += --disable-mmx +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +GST_FFMPEG_CONF_EXTRA_OPTS += --enable-sse +else +GST_FFMPEG_CONF_EXTRA_OPTS += --disable-sse +endif + +ifeq ($(BR2_X86_CPU_HAS_SSSE3),y) +GST_FFMPEG_CONF_EXTRA_OPTS += --enable-ssse3 +else +GST_FFMPEG_CONF_EXTRA_OPTS += --disable-ssse3 +endif + +# Explicitly disable everything that doesn't match for ARM +# FFMPEG "autodetects" by compiling an extended instruction via AS +# This works on compilers that aren't built for generic by default +ifeq ($(BR2_ARM_CPU_ARMV4),y) +GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv5te +endif +ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y) +GST_FFMPEG_CONF_EXTRA_OPTS += --enable-armv6 +else +GST_FFMPEG_CONF_EXTRA_OPTS += --disable-armv6 --disable-armv6t2 +endif +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +GST_FFMPEG_CONF_EXTRA_OPTS += --enable-neon +endif + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +GST_FFMPEG_CONF_EXTRA_OPTS += --enable-altivec +else +GST_FFMPEG_CONF_EXTRA_OPTS += --disable-altivec +endif + +# libav configure script misdetects the VIS optimizations as being +# available, so forcefully disable them. +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +GST_FFMPEG_CONF_EXTRA_OPTS += --disable-vis +endif + +ifeq ($(BR2_STATIC_LIBS),) +GST_FFMPEG_CONF_EXTRA_OPTS += --enable-pic +endif + +GST_FFMPEG_CONF_OPTS += --with-ffmpeg-extra-configure="$(GST_FFMPEG_CONF_EXTRA_OPTS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer/gst-fsl-plugins/0001-gplay-add-missing-include.patch b/buildroot/package/gstreamer/gst-fsl-plugins/0001-gplay-add-missing-include.patch new file mode 100644 index 0000000..19753bc --- /dev/null +++ b/buildroot/package/gstreamer/gst-fsl-plugins/0001-gplay-add-missing-include.patch @@ -0,0 +1,23 @@ +From ed649ccb8ddc724546172d329fca39b23c49b804 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Mon, 17 Dec 2012 17:58:28 +0100 +Subject: [PATCH] gplay: add missing include + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + tools/gplay/gst_snapshot.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tools/gplay/gst_snapshot.c b/tools/gplay/gst_snapshot.c +index 40dbb6f..596f399 100755 +--- a/tools/gplay/gst_snapshot.c ++++ b/tools/gplay/gst_snapshot.c +@@ -22,6 +22,7 @@ + + #include + #include ++#include + #include "gst_snapshot.h" + + static void +-- diff --git a/buildroot/package/gstreamer/gst-fsl-plugins/0002-Fix-bashism-in-configure-script.patch b/buildroot/package/gstreamer/gst-fsl-plugins/0002-Fix-bashism-in-configure-script.patch new file mode 100644 index 0000000..471c483 --- /dev/null +++ b/buildroot/package/gstreamer/gst-fsl-plugins/0002-Fix-bashism-in-configure-script.patch @@ -0,0 +1,48 @@ +From 83b4f84b1c490b9bb816e1ecbc743d80d48cc06d Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Tue, 18 Dec 2012 12:05:22 +0100 +Subject: [PATCH] Fix bashism in configure script. + +The configure script uses +=, which is not POSIX. Debians that +have the default dash as /bin/sh define a variable ending with ++ instead of appending to it. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + configure.ac | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 5968eb6..1a31a06 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -152,7 +152,7 @@ AC_SUBST(GST_PLUGINS_BASE_LIBS) + AC_CHECK_HEADERS([vpu_lib.h], [HAVE_VPU_LIB=yes], [HAVE_VPU_LIB=no]) + if test "x$HAVE_VPU_LIB" = "xyes"; then + VPU_LIBS=`$PKG_CONFIG --libs libfslvpuwrap 2>/dev/null` +- VPU_LIBS+=" -lvpu" ++ VPU_LIBS="$VPU_LIBS -lvpu" + fi + AC_SUBST(VPU_LIBS) + +@@ -176,14 +176,14 @@ AC_SUBST(RT_CFLAGS) + AC_SUBST(RT_LIBS) + + FSL_MM_CORE_CFLAGS=`$PKG_CONFIG --cflags libfslaudiocodec 2>/dev/null` +-FSL_MM_CORE_CFLAGS+=`$PKG_CONFIG --cflags libfslvideocodec 2>/dev/null` +-FSL_MM_CORE_CFLAGS+=`$PKG_CONFIG --cflags libfslparser 2>/dev/null` +-FSL_MM_CORE_CFLAGS+=`$PKG_CONFIG --cflags libfslvpuwrap 2>/dev/null` ++FSL_MM_CORE_CFLAGS="$FSL_MM_CORE_CFLAGS `$PKG_CONFIG --cflags libfslvideocodec 2>/dev/null`" ++FSL_MM_CORE_CFLAGS="$FSL_MM_CORE_CFLAGS `$PKG_CONFIG --cflags libfslparser 2>/dev/null`" ++FSL_MM_CORE_CFLAGS="$FSL_MM_CORE_CFLAGS `$PKG_CONFIG --cflags libfslvpuwrap 2>/dev/null`" + AC_SUBST(FSL_MM_CORE_CFLAGS) + + FSL_MM_CORE_LIBS=`$PKG_CONFIG --libs libfslaudiocodec 2>/dev/null` +-FSL_MM_CORE_LIBS+=`$PKG_CONFIG --libs libfslvideocodec 2>/dev/null` +-FSL_MM_CORE_LIBS+=`$PKG_CONFIG --libs libfslparser 2>/dev/null` ++FSL_MM_CORE_LIBS="$FSL_MM_CORE_LIBS `$PKG_CONFIG --libs libfslvideocodec 2>/dev/null`" ++FSL_MM_CORE_LIBS="$FSL_MM_CORE_LIBS `$PKG_CONFIG --libs libfslparser 2>/dev/null`" + AC_SUBST(FSL_MM_CORE_LIBS) + + EXTRAPLATFORMCFLAGS="-DARM -D_GNUC_" +-- diff --git a/buildroot/package/gstreamer/gst-fsl-plugins/0003-Use-proper-objdump.patch b/buildroot/package/gstreamer/gst-fsl-plugins/0003-Use-proper-objdump.patch new file mode 100644 index 0000000..b7b8c9f --- /dev/null +++ b/buildroot/package/gstreamer/gst-fsl-plugins/0003-Use-proper-objdump.patch @@ -0,0 +1,36 @@ +From c58b658a93b1b6d6e94ba0306d58de845012cef6 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Tue, 18 Dec 2012 12:22:52 +0100 +Subject: [PATCH] Use proper objdump + +If the OBJDUMP environment variable is set, that should be used rather +than the objdump in PATH. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 1a31a06..cc7557d 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -17,7 +17,7 @@ AC_DEFUN([FIND_PARSER_SONAME], + AC_MSG_CHECKING([for lib_$1_parser_$2_elinux.3.0.so soname]) + path=`$PKG_CONFIG --variable=libdir libfslparser` + SONAME=$( $CC -print-file-name=$PKG_CONFIG_SYSROOT_DIR$path/lib_$1_parser_$2_elinux.so | \ +- while read output; do objdump -p $output | \ ++ while read output; do $OBJDUMP -p $output | \ + grep "SONAME" | \ + sed -e 's/ \+SONAME \+//'; done 2> /dev/null ) + if [[ -z "$SONAME" ]]; then +@@ -36,7 +36,7 @@ AC_DEFUN([FIND_ACODEC_SONAME], + AC_MSG_CHECKING([for lib_$1_wrap_$2_elinux.so soname]) + path=`$PKG_CONFIG --variable=libdir libfslaudiocodec` + SONAME=$( $CC -print-file-name=$PKG_CONFIG_SYSROOT_DIR$path/wrap/lib_$1_wrap_$2_elinux.so | \ +- while read output; do objdump -p $output | \ ++ while read output; do $OBJDUMP -p $output | \ + grep "SONAME" | \ + sed -e 's/ \+SONAME \+//'; done 2> /dev/null ) + if [[ -z "$SONAME" ]]; then +-- diff --git a/buildroot/package/gstreamer/gst-fsl-plugins/0004-Fix-libgstfsl-linkage-add-lrt-for-shared-memory-func.patch b/buildroot/package/gstreamer/gst-fsl-plugins/0004-Fix-libgstfsl-linkage-add-lrt-for-shared-memory-func.patch new file mode 100644 index 0000000..763703c --- /dev/null +++ b/buildroot/package/gstreamer/gst-fsl-plugins/0004-Fix-libgstfsl-linkage-add-lrt-for-shared-memory-func.patch @@ -0,0 +1,46 @@ +From 1ca4251d1284f2cb56e31aaec4d369809e2139c9 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 24 Feb 2014 16:30:39 +0100 +Subject: [PATCH] Fix libgstfsl linkage (add -lrt for shared memory functions). + +Fixes runtime failure of gst-fsl-plugins, e.g.: +(gst-plugin-scanner:1700): GStreamer-WARNING **: Failed to load + plugin '/usr/lib/gstreamer-0.10/libmfw_vpu.so': + /usr/lib/libgstfsl-0.10.so.0: undefined symbol: shm_open) + +Signed-off-by: Peter Seiderer +--- + configure.ac | 3 +++ + libs/Makefile.am | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index a5d1655..7b5a7a6 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -170,6 +170,9 @@ AC_CHECK_LIB(ipu, mxc_ipu_lib_task_init, [IPU_LIBS=-lipu], [echo "No libipu arou + AC_SUBST(IPU_CFLAGS) + AC_SUBST(IPU_LIBS) + ++AC_SEARCH_LIBS([shm_open], [rt], [SHM_LIBS="-lrt"]) ++AC_SUBST(SHM_LIBS) ++ + dnl of the POSIX Real-Time Extensions. + AC_CHECK_LIB(rt, clock_gettime) + AC_SUBST(RT_CFLAGS) +diff --git a/libs/Makefile.am b/libs/Makefile.am +index 2f56bba..5b30657 100755 +--- a/libs/Makefile.am ++++ b/libs/Makefile.am +@@ -42,7 +42,7 @@ libgstfsl_@GST_MAJORMINOR@_la_CFLAGS += -DIPULIB + endif + + libgstfsl_@GST_MAJORMINOR@_la_LDFLAGS = -version-info @GSTMXLIBS_VERSION@ +-libgstfsl_@GST_MAJORMINOR@_la_LIBADD = $(GST_BASE_LIBS) -lgstvideo-@GST_MAJORMINOR@ -lgstinterfaces-$(GST_MAJORMINOR) $(IPU_LIBS) $(RT_LIBS) ++libgstfsl_@GST_MAJORMINOR@_la_LIBADD = $(GST_BASE_LIBS) -lgstvideo-@GST_MAJORMINOR@ -lgstinterfaces-$(GST_MAJORMINOR) $(IPU_LIBS) $(RT_LIBS) $(SHM_LIBS) + + libgstfsl_@GST_MAJORMINOR@includedir = $(includedir)/gstreamer-@GST_MAJORMINOR@/gst/imx-mm + libgstfsl_@GST_MAJORMINOR@include_HEADERS = \ +-- +1.8.1.4 + diff --git a/buildroot/package/gstreamer/gst-fsl-plugins/0005-Remove-use-of-obsolete-VIDIOC_DBG_G_CHIP_IDENT.patch b/buildroot/package/gstreamer/gst-fsl-plugins/0005-Remove-use-of-obsolete-VIDIOC_DBG_G_CHIP_IDENT.patch new file mode 100644 index 0000000..5635275 --- /dev/null +++ b/buildroot/package/gstreamer/gst-fsl-plugins/0005-Remove-use-of-obsolete-VIDIOC_DBG_G_CHIP_IDENT.patch @@ -0,0 +1,69 @@ +From ce90794a3458af0aed43b8570cf44cd87900185d Mon Sep 17 00:00:00 2001 +From: Gary Bisson +Date: Fri, 25 Jul 2014 16:44:53 -0700 +Subject: [PATCH] Remove use of obsolete VIDIOC_DBG_G_CHIP_IDENT + +This ioctl should never be used in application as +stated in videodev2.h header. +Moreover, its use in this plugin was very limited. + +Signed-off-by: Gary Bisson +--- + src/misc/tvsrc/src/mfw_gst_tvsrc.c | 8 -------- + src/misc/v4l_source/src/mfw_gst_v4lsrc.c | 7 ------- + 2 files changed, 15 deletions(-) + +diff --git a/src/misc/tvsrc/src/mfw_gst_tvsrc.c b/src/misc/tvsrc/src/mfw_gst_tvsrc.c +index 67e0cd2..f495b6f 100755 +--- a/src/misc/tvsrc/src/mfw_gst_tvsrc.c ++++ b/src/misc/tvsrc/src/mfw_gst_tvsrc.c +@@ -450,7 +450,6 @@ mfw_gst_tvsrc_capture_setup (MFWGstTVSRC * v4l_src) + struct v4l2_format fmt; + struct v4l2_control ctrl; + struct v4l2_streamparm parm; +- struct v4l2_dbg_chip_ident chip; + gint fd_v4l = 0; + struct v4l2_mxc_offset off; + gint in_width = 0, in_height = 0; +@@ -461,13 +460,6 @@ mfw_gst_tvsrc_capture_setup (MFWGstTVSRC * v4l_src) + return 0; + } + +- if (ioctl (fd_v4l, VIDIOC_DBG_G_CHIP_IDENT, &chip)) { +- g_print ("VIDIOC_DBG_G_CHIP_IDENT failed.\n"); +- } else +- g_print ("sensor chip is %s\n", chip.match.name); +- +- +- + if (ioctl (fd_v4l, VIDIOC_G_STD, &id) < 0) { + g_print ("VIDIOC_G_STD failed\n"); + close (fd_v4l); +diff --git a/src/misc/v4l_source/src/mfw_gst_v4lsrc.c b/src/misc/v4l_source/src/mfw_gst_v4lsrc.c +index 2c2e838..85e7ff0 100755 +--- a/src/misc/v4l_source/src/mfw_gst_v4lsrc.c ++++ b/src/misc/v4l_source/src/mfw_gst_v4lsrc.c +@@ -464,7 +464,6 @@ mfw_gst_v4lsrc_capture_setup (MFWGstV4LSrc * v4l_src) + struct v4l2_format fmt = {0}; + struct v4l2_control ctrl = {0}; + struct v4l2_streamparm parm = {0}; +- struct v4l2_dbg_chip_ident chip = {0}; + struct v4l2_frmsizeenum fszenum = {0}; + gint input; + gint fd_v4l = 0; +@@ -476,12 +475,6 @@ mfw_gst_v4lsrc_capture_setup (MFWGstV4LSrc * v4l_src) + return 0; + } + +- if (ioctl (fd_v4l, VIDIOC_DBG_G_CHIP_IDENT, &chip)) { +- GST_ERROR ("VIDIOC_DBG_G_CHIP_IDENT failed."); +- } else +- GST_INFO ("sensor chip is %s", chip.match.name); +- +- + if (v4l_src->crop_pixel) { + in_width = v4l_src->capture_width - (2 * v4l_src->crop_pixel); + in_height = v4l_src->capture_height - (2 * v4l_src->crop_pixel); +-- +2.0.1 + diff --git a/buildroot/package/gstreamer/gst-fsl-plugins/Config.in b/buildroot/package/gstreamer/gst-fsl-plugins/Config.in new file mode 100644 index 0000000..a2ff11e --- /dev/null +++ b/buildroot/package/gstreamer/gst-fsl-plugins/Config.in @@ -0,0 +1,105 @@ +comment "gst-fsl-plugins needs an imx-specific Linux kernel to be built" + depends on BR2_arm && !BR2_LINUX_KERNEL + +comment "gst-fsl-plugins needs a glibc toolchain" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_GST_FSL_PLUGINS + bool "gst-fsl-plugins" + depends on BR2_LINUX_KERNEL + depends on BR2_arm # Only relevant for i.MX + depends on BR2_TOOLCHAIN_USES_GLIBC # imx-codec + select BR2_PACKAGE_GST_PLUGINS_BASE + select BR2_PACKAGE_IMX_VPUWRAP if BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + select BR2_PACKAGE_IMX_LIB + select BR2_PACKAGE_IMX_PARSER + select BR2_PACKAGE_IMX_CODEC + select BR2_PACKAGE_FREESCALE_IMX + help + GStreamer plugins for hardware-accelerated audio and video + parsers and codecs on i.MX platforms. It requires a kernel + that includes the i.MX specific headers to be built. + + To use the VPU, its firmware blob must be installed as + well. This can be found in the firmware-imx package in the + "Hardware handling" menu. + + This library is provided by Freescale as-is and doesn't have + an upstream. Pengutronix maintains gst-fsl-plugins at + git://git.pengutronix.de/git/imx/gst-plugins-fsl-vpu.git but + it diverges heavily from Freescale's original + implementation. + +if BR2_PACKAGE_GST_FSL_PLUGINS +choice + prompt "i.MX platform" + default BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX25 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX25_3STACK + default BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX27 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX27ADS + default BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX37 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX37_3STACK + default BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX50 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX50 + default BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX51 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX51 + default BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX53 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX53 + default BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX6 if BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX233 + bool "imx233" + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX25 + bool "imx25" + select BR2_PACKAGE_IMX_LIB_PLATFORM_IMX25_3STACK + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX27 + bool "imx27" + select BR2_PACKAGE_IMX_LIB_PLATFORM_IMX27ADS + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX28 + bool "imx28" + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX31 + bool "imx31" + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX35 + bool "imx35" + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX37 + bool "imx37" + select BR2_PACKAGE_IMX_LIB_PLATFORM_IMX37_3STACK + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX50 + bool "imx50" + select BR2_PACKAGE_IMX_LIB_PLATFORM_IMX50 + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX51 + bool "imx51" + select BR2_PACKAGE_IMX_LIB_PLATFORM_IMX51 + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX53 + bool "imx53" + select BR2_PACKAGE_IMX_LIB_PLATFORM_IMX53 + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX5X + bool "imx5X" + select BR2_PACKAGE_IMX_LIB_PLATFORM_IMX5X + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX6 + bool "imx6" + select BR2_PACKAGE_IMX_LIB_PLATFORM_IMX6Q + +endchoice + +config BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM + string + default "MX233" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX233 + default "MX25" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX25 + default "MX27" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX27 + default "MX28" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX28 + default "MX31" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX31 + default "MX35" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX35 + default "MX37" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX37 + default "MX50" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX50 + default "MX51" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX51 + default "MX53" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX53 + default "MX5X" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX5X + default "MX6" if BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM_MX6 +endif diff --git a/buildroot/package/gstreamer/gst-fsl-plugins/gst-fsl-plugins.hash b/buildroot/package/gstreamer/gst-fsl-plugins/gst-fsl-plugins.hash new file mode 100644 index 0000000..f1d6391 --- /dev/null +++ b/buildroot/package/gstreamer/gst-fsl-plugins/gst-fsl-plugins.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 568883b2a1d8d32e4004cb3f123790d0b4286c91c1fac38c9dc8e20bd1250764 gst-fsl-plugins-4.0.3.tar.gz diff --git a/buildroot/package/gstreamer/gst-fsl-plugins/gst-fsl-plugins.mk b/buildroot/package/gstreamer/gst-fsl-plugins/gst-fsl-plugins.mk new file mode 100644 index 0000000..547d253 --- /dev/null +++ b/buildroot/package/gstreamer/gst-fsl-plugins/gst-fsl-plugins.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# gst-fsl-plugins +# +################################################################################ + +GST_FSL_PLUGINS_VERSION = 4.0.3 +GST_FSL_PLUGINS_SITE = $(FREESCALE_IMX_SITE) + +# Most is LGPL-2.0+, but some sources are copied from upstream and are +# LGPL-2.1+, which essentially makes it LGPL-2.1+ +GST_FSL_PLUGINS_LICENSE = LGPL-2.0+, LGPL-2.1+, PROPRIETARY (asf.h) +GST_FSL_PLUGINS_LICENSE_FILES = COPYING-LGPL-2.1 COPYING-LGPL-2 + +GST_FSL_PLUGINS_INSTALL_STAGING = YES +GST_FSL_PLUGINS_AUTORECONF = YES + +GST_FSL_PLUGINS_DEPENDENCIES += host-pkgconf gstreamer gst-plugins-base \ + imx-lib imx-parser imx-codec + +ifeq ($(BR2_PACKAGE_FREESCALE_IMX_HAS_VPU),y) +GST_FSL_PLUGINS_DEPENDENCIES += imx-vpuwrap +endif + +GST_FSL_PLUGINS_CONF_ENV = \ + PLATFORM=$(BR2_PACKAGE_GST_FSL_PLUGINS_PLATFORM) \ + CROSS_ROOT="$(STAGING_DIR)" + +# needs access to imx-specific kernel headers +GST_FSL_PLUGINS_DEPENDENCIES += linux +GST_FSL_PLUGINS_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) -idirafter $(LINUX_DIR)/include/uapi" + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +GST_FSL_PLUGINS_DEPENDENCIES += xlib_libX11 +GST_FSL_PLUGINS_CONF_OPTS += --enable-x11 +else +GST_FSL_PLUGINS_CONF_OPTS += --disable-x11 +endif + +# Autoreconf requires an m4 directory to exist +define GST_FSL_PLUGINS_PATCH_M4 + mkdir -p $(@D)/m4 +endef + +GST_FSL_PLUGINS_POST_PATCH_HOOKS += GST_FSL_PLUGINS_PATCH_M4 + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer/gst-omapfb/Config.in b/buildroot/package/gstreamer/gst-omapfb/Config.in new file mode 100644 index 0000000..cfe5bba --- /dev/null +++ b/buildroot/package/gstreamer/gst-omapfb/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_GST_OMAPFB + bool "gst-omapfb" + depends on BR2_cortex_a8 + help + GStreamer plug-in to use OMAP framebuffer. + + http://github.com/felipec/gst-omapfb diff --git a/buildroot/package/gstreamer/gst-omapfb/gst-omapfb.hash b/buildroot/package/gstreamer/gst-omapfb/gst-omapfb.hash new file mode 100644 index 0000000..7d1c722 --- /dev/null +++ b/buildroot/package/gstreamer/gst-omapfb/gst-omapfb.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 56c719584d7a7ede5fc2053e8d1060f623b226a60672de0faba46fad646658a4 gst-omapfb-v1.0.tar.gz diff --git a/buildroot/package/gstreamer/gst-omapfb/gst-omapfb.mk b/buildroot/package/gstreamer/gst-omapfb/gst-omapfb.mk new file mode 100644 index 0000000..c0bf690 --- /dev/null +++ b/buildroot/package/gstreamer/gst-omapfb/gst-omapfb.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# gst-omapfb +# +################################################################################ + +GST_OMAPFB_VERSION = v1.0 +GST_OMAPFB_SITE = $(call github,felipec,gst-omapfb,$(GST_OMAPFB_VERSION)) + +define GST_OMAPFB_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) -e +endef + +define GST_OMAPFB_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) -e DESTDIR=$(TARGET_DIR) install +endef + +GST_OMAPFB_DEPENDENCIES = gstreamer + +$(eval $(generic-package)) diff --git a/buildroot/package/gstreamer/gst-plugin-x170/0001-correct-CFLAGS.patch b/buildroot/package/gstreamer/gst-plugin-x170/0001-correct-CFLAGS.patch new file mode 100644 index 0000000..9c32e46 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugin-x170/0001-correct-CFLAGS.patch @@ -0,0 +1,28 @@ +The configure script is correctly getting the CFLAGS needed to compile a plugin +for gstreamer and storing them in GST_BASE_CFLAGS but the Makefiles are never +making use of those. + +We actually have to use AM_CPPFLAGS as AM_CFLAGS is used everywhere but on the +real compiling rule... + +Signed-off-by: Alexandre Belloni +--- + src/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/Makefile.am b/src/Makefile.am +index 8cb51d1..6af5d91 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -5,6 +5,8 @@ + ############################################################################## + plugin_LTLIBRARIES = libgstx170.la + ++AM_CPPFLAGS = @GST_BASE_CFLAGS@ ++ + ############################################################################## + # for the next set of variables, rename the prefix if you renamed the .la, # + # e.g. libgstplugin_la_SOURCES => libmysomething_la_SOURCES # +-- +1.8.1.2 + diff --git a/buildroot/package/gstreamer/gst-plugin-x170/Config.in b/buildroot/package/gstreamer/gst-plugin-x170/Config.in new file mode 100644 index 0000000..d0ba763 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugin-x170/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GST_PLUGIN_X170 + bool "gst-plugin-x170" + depends on BR2_arm926t + # glibc toolchain includes WCHAR and threading for libglib2 + depends on BR2_TOOLCHAIN_USES_GLIBC # on2-8170-libs + depends on BR2_LINUX_KERNEL # on2-8170-libs + select BR2_PACKAGE_ON2_8170_LIBS + help + GStreamer plug-in to use the Hantro X170 video decoder + present on ATMEL AT91SAM9M10 SoC. + + http://www.at91.com/linux4sam/bin/view/Linux4SAM/SAM9M10Gstreamer + +comment "gst-plugin-x170 needs a glibc toolchain and a Linux kernel to be built" + depends on BR2_arm926t + depends on !BR2_LINUX_KERNEL || !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/gstreamer/gst-plugin-x170/gst-plugin-x170.hash b/buildroot/package/gstreamer/gst-plugin-x170/gst-plugin-x170.hash new file mode 100644 index 0000000..527c461 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugin-x170/gst-plugin-x170.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 734ded3618246d946b53c2c8c7ab5a0961287485aaef5fb9bf874f93e3caa342 gst-plugin-x170-1.0.tar.gz diff --git a/buildroot/package/gstreamer/gst-plugin-x170/gst-plugin-x170.mk b/buildroot/package/gstreamer/gst-plugin-x170/gst-plugin-x170.mk new file mode 100644 index 0000000..378cd7a --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugin-x170/gst-plugin-x170.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# gst-plugin-x170 +# +################################################################################ + +GST_PLUGIN_X170_VERSION = 1.0 +GST_PLUGIN_X170_SITE = ftp://ftp.linux4sam.org/pub/demo/linux4sam_1.9/codec + +GST_PLUGIN_X170_LICENSE = BSD-1c +#A license file is included but it is just a placeholder + +# There is no generated configure script in the tarball. +GST_PLUGIN_X170_AUTORECONF = YES +GST_PLUGIN_X170_AUTORECONF_OPTS = -Im4/ +GST_PLUGIN_X170_DEPENDENCIES = gstreamer libglib2 on2-8170-libs + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer/gst-plugins-bad/0001-opus-jpegformat-unbreak-non-debug-build.patch b/buildroot/package/gstreamer/gst-plugins-bad/0001-opus-jpegformat-unbreak-non-debug-build.patch new file mode 100644 index 0000000..2c98c3e --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-bad/0001-opus-jpegformat-unbreak-non-debug-build.patch @@ -0,0 +1,78 @@ +From 1725e702a3622cb45c8142622dd419fa0c410ac9 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Wed, 12 Sep 2012 09:10:35 +0200 +Subject: [PATCH] gst-plugins-bad: opus + jpegformat: unbreak non-debug build + +opus + jpegformat plugin builds fail when gstreamer is configured with +--disable-gst-debug as they are checking the GST_DISABLE_DEBUG symbol +instead of GST_DISABLE_GST_DEBUG. + +Submitted upstream as https://bugzilla.gnome.org/show_bug.cgi?id=683850 + +Signed-off-by: Peter Korsgaard +--- + ext/opus/gstopusdec.c | 2 +- + ext/opus/gstopusenc.c | 4 ++-- + gst/jpegformat/gstjpegparse.c | 4 ++-- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/ext/opus/gstopusdec.c b/ext/opus/gstopusdec.c +index 0e2805c..ab7221d 100644 +--- a/ext/opus/gstopusdec.c ++++ b/ext/opus/gstopusdec.c +@@ -357,7 +357,7 @@ opus_dec_chain_parse_data (GstOpusDec * dec, GstBuffer * buffer) + + GST_DEBUG_OBJECT (dec, "Creating decoder with %d channels, %d Hz", + dec->n_channels, dec->sample_rate); +-#ifndef GST_DISABLE_DEBUG ++#ifndef GST_DISABLE_GST_DEBUG + gst_opus_common_log_channel_mapping_table (GST_ELEMENT (dec), opusdec_debug, + "Mapping table", dec->n_channels, dec->channel_mapping); + #endif +diff --git a/ext/opus/gstopusenc.c b/ext/opus/gstopusenc.c +index 240a2cb..d991795 100644 +--- a/ext/opus/gstopusenc.c ++++ b/ext/opus/gstopusenc.c +@@ -589,7 +589,7 @@ gst_opus_enc_setup_channel_mappings (GstOpusEnc * enc, + } + } + +-#ifndef GST_DISABLE_DEBUG ++#ifndef GST_DISABLE_GST_DEBUG + GST_INFO_OBJECT (enc, + "Mapping tables built: %d channels, %d stereo streams", enc->n_channels, + enc->n_stereo_streams); +@@ -654,7 +654,7 @@ gst_opus_enc_setup (GstOpusEnc * enc) + { + int error = OPUS_OK; + +-#ifndef GST_DISABLE_DEBUG ++#ifndef GST_DISABLE_GST_DEBUG + GST_DEBUG_OBJECT (enc, + "setup: %d Hz, %d channels, %d stereo streams, family %d", + enc->sample_rate, enc->n_channels, enc->n_stereo_streams, +diff --git a/gst/jpegformat/gstjpegparse.c b/gst/jpegformat/gstjpegparse.c +index f984a52..b4af9ed 100644 +--- a/gst/jpegformat/gstjpegparse.c ++++ b/gst/jpegformat/gstjpegparse.c +@@ -545,7 +545,7 @@ gst_jpeg_parse_skip_marker (GstJpegParse * parse, + if (!gst_byte_reader_get_uint16_be (reader, &size)) + return FALSE; + +-#ifndef GST_DISABLE_DEBUG ++#ifndef GST_DISABLE_GST_DEBUG + /* We'd pry the id of the skipped application segment */ + if (marker >= APP0 && marker <= APP15) { + const gchar *id_str = NULL; +@@ -561,7 +561,7 @@ gst_jpeg_parse_skip_marker (GstJpegParse * parse, + #else + GST_DEBUG_OBJECT (parse, "unhandled marker %x skiping %u bytes", marker, + size); +-#endif // GST_DISABLE_DEBUG ++#endif // GST_DISABLE_GST_DEBUG + + if (!gst_byte_reader_skip (reader, size - 2)) + return FALSE; +-- +1.7.10 + diff --git a/buildroot/package/gstreamer/gst-plugins-bad/0002-fix-dfb-example.patch b/buildroot/package/gstreamer/gst-plugins-bad/0002-fix-dfb-example.patch new file mode 100644 index 0000000..b205748 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-bad/0002-fix-dfb-example.patch @@ -0,0 +1,22 @@ +Fix dfb-example + +Order of inclusion gives a strange effect on the definition of +gst_debug_log. Swapping the include statements solve it. + +Not upstreamed since there will be no more updates to this version +of gst-plugins-bad. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- +diff -rup gst-plugins-bad-0.10.23/ext/directfb/dfb-example.c gst-plugins-bad-0.10.23.fixed/ext/directfb/dfb-example.c +--- gst-plugins-bad-0.10.23/ext/directfb/dfb-example.c 2011-12-11 19:49:11.000000000 +0100 ++++ gst-plugins-bad-0.10.23.fixed/ext/directfb/dfb-example.c 2013-05-13 00:32:00.507469138 +0200 +@@ -1,7 +1,7 @@ + +-#include + #include + #include ++#include + + static IDirectFB *dfb = NULL; + static IDirectFBSurface *primary = NULL; diff --git a/buildroot/package/gstreamer/gst-plugins-bad/0003-drop-buggy-libvpx-legacy-handling.patch b/buildroot/package/gstreamer/gst-plugins-bad/0003-drop-buggy-libvpx-legacy-handling.patch new file mode 100644 index 0000000..780b5e3 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-bad/0003-drop-buggy-libvpx-legacy-handling.patch @@ -0,0 +1,44 @@ +[PATCH] vp8: drop buggy libvpx legacy handling + +Legacy handling for older libvpx versions were added back in 2010, but this +was unfortunately buggy as these symbols are enums and not defines - So they +are never defined and the legacy symbols always used. + +Now that the legacy symbols are completely removed from libvpx from v1.4.0 +onwards this breaks. Fix it by simply dropping the legacy handling, nobody +should be using libvpx versions from before 2010 (or gstreamer 0.10 for that +matter) any more. + +Signed-off-by: Peter Korsgaard +--- + ext/vp8/gstvp8utils.h | 17 ----------------- + 1 file changed, 17 deletions(-) + +Index: gst-plugins-bad-0.10.23/ext/vp8/gstvp8utils.h +=================================================================== +--- gst-plugins-bad-0.10.23.orig/ext/vp8/gstvp8utils.h ++++ gst-plugins-bad-0.10.23/ext/vp8/gstvp8utils.h +@@ -25,23 +25,6 @@ + + G_BEGIN_DECLS + +-/* Some compatibility defines for older libvpx versions */ +-#ifndef VPX_IMG_FMT_I420 +-#define VPX_IMG_FMT_I420 IMG_FMT_I420 +-#endif +- +-#ifndef VPX_PLANE_Y +-#define VPX_PLANE_Y PLANE_Y +-#endif +- +-#ifndef VPX_PLANE_U +-#define VPX_PLANE_U PLANE_U +-#endif +- +-#ifndef VPX_PLANE_V +-#define VPX_PLANE_V PLANE_V +-#endif +- + const char * gst_vpx_error_name (vpx_codec_err_t status); + + G_END_DECLS diff --git a/buildroot/package/gstreamer/gst-plugins-bad/Config.in b/buildroot/package/gstreamer/gst-plugins-bad/Config.in new file mode 100644 index 0000000..939fc7a --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-bad/Config.in @@ -0,0 +1,338 @@ +menuconfig BR2_PACKAGE_GST_PLUGINS_BAD + bool "gst-plugins-bad" + select BR2_PACKAGE_GST_PLUGINS_BASE + help + A set of plug-ins for GStreamer that may be of poor quality or + lacking some features. + + http://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST_PLUGINS_BAD + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_ADPCMDEC + bool "adpcmdec" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_ADPCMENC + bool "adpcmenc" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_AIFF + bool "aiff" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_ASFMUX + bool "asfmux" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_AUTOCONVERT + bool "autoconvert" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_AUDIOVISUALIZERS + bool "audiovisualizers" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_BAYER + bool "bayer" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_CAMERABIN + bool "camerabin" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_CAMERABIN2 + bool "camerabin2" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_CDXAPARSE + bool "cdxaparse" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_COLOREFFECTS + bool "coloreffects" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_COLORSPACE + bool "colorspace" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DATAURISRC + bool "dataurisrc" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DCCP + bool "dccp" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DEBUGUTILS + bool "debugutils" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DECKLINK + bool "decklink" + depends on BR2_INSTALL_LIBSTDCPP + +comment "decklink needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DTMF + bool "dtmf" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DVBSUBOVERLAY + bool "dvdsuboverlay" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DVDSPU + bool "dvdspu" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FACEOVERLAY + bool "faceoverlay" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FESTIVAL + bool "festival" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FIELDANALYSIS + bool "fieldanalysis" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FREEVERB + bool "freeverb" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FREEZE + bool "freeze" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FREI0R + bool "frei0r" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_GAUDIEFFECTS + bool "gaudieffects" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_GEOMETRICTRANSFORM + bool "geometrictransform" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_GSETTINGS + bool "gsettings" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_H264PARSE + bool "h264parse" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_HDVPARSE + bool "hdvparse" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_HLS + bool "hls" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_ID3TAG + bool "id3tag" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_INTER + bool "inter" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_INTERLACE + bool "interlace" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_IVFPARSE + bool "ivfparse" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_JP2KDECIMATOR + bool "jp2kdecimator" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_JPEGFORMAT + bool "jpegformat" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_LEGACYRESAMPLE + bool "legacyresample" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_LIBRFB + bool "librfb" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_LINSYS + bool "linsys" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_LIVEADDER + bool "liveadder" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MPEGDEMUX + bool "mpegdemux" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MPEGPSMUX + bool "mpegpsmux" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX + bool "mpegtsdemux" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MPEGTSMUX + bool "mpegtsmux" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MPEGVIDEOPARSE + bool "mpegvideoparse" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MVE + bool "mve" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MXF + bool "mxf" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_NSF + bool "nsf" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_NUVDEMUX + bool "nuvdemux" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_PATCHDETECT + bool "patchdetect" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_PCAPPARSE + bool "pcapparse" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_PNM + bool "pnm" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_RAWPARSE + bool "rawparse" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_REAL + bool "real" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_REMOVESILENCE + bool "removesilence" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_RTPMUX + bool "rtpmux" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_RTPVP8 + bool "rtpvp8" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SCALETEMPO + bool "scaletempo" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SDI + bool "sdi" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SDP + bool "sdp" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SEGMENTCLIP + bool "segmentclip" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SIREN + bool "siren" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SMOOTH + bool "smooth" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SPEED + bool "speed" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_STEREO + bool "stereo" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SUBENC + bool "subenc" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_TTA + bool "tta" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VIDEOFILTERS + bool "videofilters" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VIDEOMAXRATE + bool "videomaxrate" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VIDEOMEASURE + bool "videomeasure" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VIDEOPARSERS + bool "videoparsers" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VIDEOSIGNAL + bool "videosignal" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VMNC + bool "vmnc" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_Y4M + bool "y4m" + +comment "plugins with external dependencies (there may be more available)" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_APEXSINK + bool "apexsink" + select BR2_PACKAGE_OPENSSL + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_BZ2 + bool "bz2" + select BR2_PACKAGE_BZIP2 + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_CDAUDIO + bool "cdaudio" + depends on !BR2_nios2 # libcdaudio + select BR2_PACKAGE_LIBCDAUDIO + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_CURL + bool "curl" + select BR2_PACKAGE_LIBCURL + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DIRECTFB + bool "directfb" + default y + depends on BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DVB + bool "dvb" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FBDEV + bool "fbdev" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FAAD + bool "faad" + select BR2_PACKAGE_FAAD2 + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_LIBMMS + bool "libmms" + depends on BR2_USE_WCHAR # libmms -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libmms -> libglib2 + select BR2_PACKAGE_LIBMMS + +comment "libmms needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MUSEPACK + bool "musepack" + select BR2_PACKAGE_MUSEPACK + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_NEON + bool "neon" + select BR2_PACKAGE_NEON + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_OPUS + bool "opus" + select BR2_PACKAGE_OPUS + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_RSVG + bool "rsvg" + depends on BR2_INSTALL_LIBSTDCPP # librsvg -> pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # librsvg -> pango -> harfbuzz + select BR2_PACKAGE_LIBRSVG + +comment "rsvg plugin needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SDL + bool "sdl" + select BR2_PACKAGE_SDL + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SNDFILE + bool "sndfile" + select BR2_PACKAGE_LIBSNDFILE + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VCD + bool "vcd" + +config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VP8 + bool "vp8" + depends on !BR2_bfin # libvpx + select BR2_PACKAGE_LIBVPX + +config BR2_PACKAGE_GST_PLUGINS_BAD_ZBAR + bool "zbar" + depends on BR2_TOOLCHAIN_HAS_THREADS # zbar-> libv4l + depends on BR2_USE_MMU # zbar-> libv4l + depends on !BR2_STATIC_LIBS # zbar-> libv4l + depends on BR2_INSTALL_LIBSTDCPP # zbar-> libv4l + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # zbar-> libv4l + select BR2_PACKAGE_ZBAR + +comment "zbar plugin needs a toolchain w/ threads, dynamic library, C++ and headers >= 3.0" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + +endif diff --git a/buildroot/package/gstreamer/gst-plugins-bad/gst-plugins-bad.hash b/buildroot/package/gstreamer/gst-plugins-bad/gst-plugins-bad.hash new file mode 100644 index 0000000..760ed31 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-bad/gst-plugins-bad.hash @@ -0,0 +1,2 @@ +# From http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.23.tar.xz.md5 +md5 e4822fa2cc933768e2998311a1565979 gst-plugins-bad-0.10.23.tar.xz diff --git a/buildroot/package/gstreamer/gst-plugins-bad/gst-plugins-bad.mk b/buildroot/package/gstreamer/gst-plugins-bad/gst-plugins-bad.mk new file mode 100644 index 0000000..b9416db --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-bad/gst-plugins-bad.mk @@ -0,0 +1,598 @@ +################################################################################ +# +# gst-plugins-bad +# +################################################################################ + +GST_PLUGINS_BAD_VERSION = 0.10.23 +GST_PLUGINS_BAD_SOURCE = gst-plugins-bad-$(GST_PLUGINS_BAD_VERSION).tar.xz +GST_PLUGINS_BAD_SITE = http://gstreamer.freedesktop.org/src/gst-plugins-bad +# COPYING.LIB is in fact v2, but most of the code is v2.1+ +GST_PLUGINS_BAD_LICENSE = LGPL-2.1+, GPL-2.0+ +GST_PLUGINS_BAD_LICENSE_FILES = COPYING.LIB COPYING + +GST_PLUGINS_BAD_CONF_OPTS = \ + --disable-examples + +GST_PLUGINS_BAD_DEPENDENCIES = gst-plugins-base gstreamer + +ifeq ($(BR2_PACKAGE_ORC),y) +GST_PLUGINS_BAD_DEPENDENCIES += orc +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_ADPCMDEC),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-adpcmdec +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-adpcmdec +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_ADPCMENC),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-adpcmenc +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-adpcmenc +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_AIFF),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-aiff +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-aiff +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_ASFMUX),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-asfmux +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-asfmux +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_AUDIOVISUALIZERS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-audiovisualizers +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-audiovisualizers +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_AUTOCONVERT),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-autoconvert +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-autoconvert +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_BAYER),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-bayer +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-bayer +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_CAMERABIN),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-camerabin +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-camerabin +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_CAMERABIN2),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-camerabin2 +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-camerabin2 +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_CDXAPARSE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-cdxaparse +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-cdxaparse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_COLOREFFECTS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-coloreffects +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-coloreffects +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_COLORSPACE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-colorspace +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-colorspace +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DATAURISRC),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-dataurisrc +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-dataurisrc +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DCCP),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-dccp +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-dccp +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DEBUGUTILS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-debugutils +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-debugutils +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DECKLINK),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-decklink +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-decklink +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DTMF),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-dtmf +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-dtmf +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DVBSUBOVERLAY),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-dvbsuboverlay +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-dvbsuboverlay +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DVDSPU),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-dvdspu +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-dvdspu +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FACEOVERLAY),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-faceoverlay +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-faceoverlay +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FESTIVAL),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-festival +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-festival +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FIELDANALYSIS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-fieldanalysis +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-fieldanalysis +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FREEZE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-freeze +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-freeze +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FREEVERB),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-freeverb +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-freeverb +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FREI0R),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-frei0r +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-frei0r +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_GAUDIEFFECTS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-gaudieffects +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-gaudieffects +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_GEOMETRICTRANSFORM),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-geometrictransform +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-geometrictransform +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_GSETTINGS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-gsettings +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-gsettings +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_H264PARSE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-h264parse +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-h264parse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_HDVPARSE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-hdvparse +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-hdvparse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_HLS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-hls +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-hls +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_ID3TAG),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-id3tag +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-id3tag +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_INTER),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-inter +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-inter +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_INTERLACE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-interlace +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-interlace +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_IVFPARSE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-ivfparse +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-ivfparse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_JP2KDECIMATOR),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-jp2kdecimator +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-jp2kdecimator +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_JPEGFORMAT),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-jpegformat +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-jpegformat +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_LEGACYRESAMPLE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-legacyresample +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-legacyresample +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_LIBRFB),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-librfb +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-librfb +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_LINSYS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-linsys +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-linsys +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_LIVEADDER),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-liveadder +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-liveadder +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MPEGDEMUX),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-mpegdemux +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-mpegdemux +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MPEGPSMUX),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-mpegpsmux +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-mpegpsmux +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-mpegtsdemux +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-mpegtsdemux +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MPEGTSMUX),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-mpegtsmux +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-mpegtsmux +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MPEGVIDEOPARSE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-mpegvideoparse +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-mpegvideoparse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MVE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-mve +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-mve +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MXF),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-mxf +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-mxf +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_NSF),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-nsf +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-nsf +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_NUVDEMUX),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-nuvdemux +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-nuvdemux +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_PATCHDETECT),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-patchdetect +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-patchdetect +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_PCAPPARSE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-pcapparse +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-pcapparse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_PNM),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-pnm +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-pnm +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_RAWPARSE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-rawparse +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-rawparse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_REAL),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-real +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-real +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_REMOVESILENCE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-removesilence +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-removesilence +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_RTPMUX),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-rtpmux +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-rtpmux +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_RTPVP8),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-rtpvp8 +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-rtpvp8 +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SCALETEMPO),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-scaletempo +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-scaletempo +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SDI),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-sdi +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-sdi +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SDP),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-sdp +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-sdp +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SEGMENTCLIP),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-segmentclip +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-segmentclip +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SIREN),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-siren +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-siren +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SMOOTH),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-smooth +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-smooth +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SPEED),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-speed +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-speed +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SUBENC),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-subenc +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-subenc +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_STEREO),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-stereo +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-stereo +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_TTA),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-tta +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-tta +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VIDEOFILTERS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-videofilters +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-videofilters +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VIDEOMAXRATE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-videomaxrate +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-videomaxrate +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VIDEOMEASURE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-videomeasure +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-videomeasure +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VIDEOPARSERS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-videoparsers +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-videoparsers +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VIDEOSIGNAL),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-videosignal +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-videosignal +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VMNC),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-vmnc +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-vmnc +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_Y4M),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-y4m +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-y4m +endif + +# plugins with deps +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_APEXSINK),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-apexsink +GST_PLUGINS_BAD_DEPENDENCIES += openssl +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-apexsink +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_BZ2),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-bz2 +GST_PLUGINS_BAD_DEPENDENCIES += bzip2 +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-bz2 +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_CDAUDIO),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-cdaudio +GST_PLUGINS_BAD_DEPENDENCIES += libcdaudio +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-cdaudio +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_CURL),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-curl +GST_PLUGINS_BAD_DEPENDENCIES += libcurl +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-curl +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DIRECTFB),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-directfb +GST_PLUGINS_BAD_DEPENDENCIES += directfb +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-directfb +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_DVB),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-dvb +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-dvb +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FAAD),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-faad +GST_PLUGINS_BAD_DEPENDENCIES += faad2 +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-faad +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_FBDEV),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-fbdev +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-fbdev +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_LIBMMS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-libmms +GST_PLUGINS_BAD_DEPENDENCIES += libmms +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-libmms +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_MUSEPACK),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-musepack +GST_PLUGINS_BAD_DEPENDENCIES += musepack +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-musepack +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_NEON),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-neon +GST_PLUGINS_BAD_DEPENDENCIES += neon +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-neon +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_OPUS),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-opus +GST_PLUGINS_BAD_DEPENDENCIES += opus +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-opus +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_RSVG),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-rsvg +GST_PLUGINS_BAD_DEPENDENCIES += librsvg +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-rsvg +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SDL),y) +GST_PLUGINS_BAD_CONF_ENV += ac_cv_path_SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config +GST_PLUGINS_BAD_CONF_OPTS += --enable-sdl +GST_PLUGINS_BAD_DEPENDENCIES += sdl +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-sdl +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_SNDFILE),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-sndfile +GST_PLUGINS_BAD_DEPENDENCIES += libsndfile +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-sndfile +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VCD),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-vcd +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-vcd +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VP8),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-vp8 +GST_PLUGINS_BAD_DEPENDENCIES += libvpx +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-vp8 +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_ZBAR),y) +GST_PLUGINS_BAD_CONF_OPTS += --enable-zbar +GST_PLUGINS_BAD_DEPENDENCIES += zbar +else +GST_PLUGINS_BAD_CONF_OPTS += --disable-zbar +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer/gst-plugins-base/0001-tremor.patch b/buildroot/package/gstreamer/gst-plugins-base/0001-tremor.patch new file mode 100644 index 0000000..fa8785b --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-base/0001-tremor.patch @@ -0,0 +1,139 @@ +From 0088753651350de3060ece22c1be4153b6009515 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Wed, 25 Jan 2012 23:53:04 +0100 +Subject: [PATCH] base: vorbisdeclib: support modern Tremor versions + +Reported upstream as https://bugzilla.gnome.org/show_bug.cgi?id=668726 + +Tremor changed to use standard libogg rather than its own incompatible +copy back in Aug 2010 (r17375), causing gst-plugin-base build to fail. + +Tremolo so far unfortunately hasn't been updated. Restructure +vorbisdeclib.h so the legacy _ogg_packet_wrapper code is only used for +Tremolo. + +Signed-off-by: Peter Korsgaard +--- + ext/vorbis/gstvorbisdeclib.h | 77 ++++++++++++++++++++++------------------- + 1 files changed, 41 insertions(+), 36 deletions(-) + +diff --git a/ext/vorbis/gstvorbisdeclib.h b/ext/vorbis/gstvorbisdeclib.h +index ca00af9..e147591 100644 +--- a/ext/vorbis/gstvorbisdeclib.h ++++ b/ext/vorbis/gstvorbisdeclib.h +@@ -29,11 +29,6 @@ + + #ifndef TREMOR + +-#include +- +-typedef float vorbis_sample_t; +-typedef ogg_packet ogg_packet_wrapper; +- + #define GST_VORBIS_DEC_DESCRIPTION "decode raw vorbis streams to float audio" + + #define GST_VORBIS_DEC_SRC_CAPS \ +@@ -47,6 +42,42 @@ typedef ogg_packet ogg_packet_wrapper; + + #define GST_VORBIS_DEC_GLIB_TYPE_NAME GstVorbisDec + ++#else /* TREMOR */ ++ ++#define GST_VORBIS_DEC_DESCRIPTION "decode raw vorbis streams to integer audio" ++ ++#define GST_VORBIS_DEC_SRC_CAPS \ ++ GST_STATIC_CAPS ("audio/x-raw-int, " \ ++ "rate = (int) [ 1, MAX ], " \ ++ "channels = (int) [ 1, 6 ], " \ ++ "endianness = (int) BYTE_ORDER, " \ ++ "width = (int) { 16, 32 }, " \ ++ "depth = (int) 16, " \ ++ "signed = (boolean) true") ++ ++#define GST_VORBIS_DEC_DEFAULT_SAMPLE_WIDTH (16) ++ ++/* we need a different type name here */ ++#define GST_VORBIS_DEC_GLIB_TYPE_NAME GstIVorbisDec ++ ++/* and still have it compile */ ++typedef struct _GstVorbisDec GstIVorbisDec; ++typedef struct _GstVorbisDecClass GstIVorbisDecClass; ++ ++#endif /* TREMOR */ ++ ++#ifndef USE_TREMOLO ++ ++#ifdef TREMOR ++ #include ++ typedef ogg_int32_t vorbis_sample_t; ++#else ++ #include ++ typedef float vorbis_sample_t; ++#endif ++ ++typedef ogg_packet ogg_packet_wrapper; ++ + static inline guint8 * + gst_ogg_packet_data (ogg_packet * p) + { +@@ -72,17 +103,11 @@ gst_ogg_packet_from_wrapper (ogg_packet_wrapper * packet) + return packet; + } + +-#else +- +-#ifdef USE_TREMOLO +- #include +- #include +- typedef ogg_int16_t vorbis_sample_t; +-#else +- #include +- typedef ogg_int32_t vorbis_sample_t; +-#endif ++#else /* USE_TREMOLO */ + ++#include ++#include ++typedef ogg_int16_t vorbis_sample_t; + typedef struct _ogg_packet_wrapper ogg_packet_wrapper; + + struct _ogg_packet_wrapper { +@@ -91,26 +116,6 @@ struct _ogg_packet_wrapper { + ogg_buffer buf; + }; + +-#define GST_VORBIS_DEC_DESCRIPTION "decode raw vorbis streams to integer audio" +- +-#define GST_VORBIS_DEC_SRC_CAPS \ +- GST_STATIC_CAPS ("audio/x-raw-int, " \ +- "rate = (int) [ 1, MAX ], " \ +- "channels = (int) [ 1, 6 ], " \ +- "endianness = (int) BYTE_ORDER, " \ +- "width = (int) { 16, 32 }, " \ +- "depth = (int) 16, " \ +- "signed = (boolean) true") +- +-#define GST_VORBIS_DEC_DEFAULT_SAMPLE_WIDTH (16) +- +-/* we need a different type name here */ +-#define GST_VORBIS_DEC_GLIB_TYPE_NAME GstIVorbisDec +- +-/* and still have it compile */ +-typedef struct _GstVorbisDec GstIVorbisDec; +-typedef struct _GstVorbisDecClass GstIVorbisDecClass; +- + /* compensate minor variation */ + #define vorbis_synthesis(a, b) vorbis_synthesis (a, b, 1) + +@@ -154,7 +159,7 @@ gst_ogg_packet_from_wrapper (ogg_packet_wrapper * packet) + return &(packet->packet); + } + +-#endif ++#endif /* USE_TREMOLO */ + + typedef void (*CopySampleFunc)(vorbis_sample_t *out, vorbis_sample_t **in, + guint samples, gint channels, gint width); +-- +1.7.8.3 + diff --git a/buildroot/package/gstreamer/gst-plugins-base/0002-audioresample-Fix-build-on-x86-if-emmintrin.h-is-ava.patch b/buildroot/package/gstreamer/gst-plugins-base/0002-audioresample-Fix-build-on-x86-if-emmintrin.h-is-ava.patch new file mode 100644 index 0000000..eabea4f --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-base/0002-audioresample-Fix-build-on-x86-if-emmintrin.h-is-ava.patch @@ -0,0 +1,38 @@ +From daa194b71ea6f9e8ee522ab02e8c56150b7e62b3 Mon Sep 17 00:00:00 2001 +From: Antoine Jacoutot +Date: Mon, 20 Jan 2014 15:44:09 +0100 +Subject: [PATCH] audioresample: Fix build on x86 if emmintrin.h is available + but can't be used + +On i386, EMMINTRIN is defined but not usable without SSE so check for +__SSE__ and __SSE2__ as well. + +https://bugzilla.gnome.org/show_bug.cgi?id=670690 +Signed-off-by: Peter Korsgaard +--- + gst/audioresample/resample.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gst/audioresample/resample.c b/gst/audioresample/resample.c +index 98d006c..481fa01 100644 +--- a/gst/audioresample/resample.c ++++ b/gst/audioresample/resample.c +@@ -77,13 +77,13 @@ + #define EXPORT G_GNUC_INTERNAL + + #ifdef _USE_SSE +-#ifndef HAVE_XMMINTRIN_H ++#if !defined(__SSE__) || !defined(HAVE_XMMINTRIN_H) + #undef _USE_SSE + #endif + #endif + + #ifdef _USE_SSE2 +-#ifndef HAVE_EMMINTRIN_H ++#if !defined(__SSE2__) || !defined(HAVE_XMMINTRIN_H) + #undef _USE_SSE2 + #endif + #endif +-- +2.1.4 + diff --git a/buildroot/package/gstreamer/gst-plugins-base/0003-audioresample-It-s-HAVE_EMMINTRIN_H-not-HAVE_XMMINTR.patch b/buildroot/package/gstreamer/gst-plugins-base/0003-audioresample-It-s-HAVE_EMMINTRIN_H-not-HAVE_XMMINTR.patch new file mode 100644 index 0000000..e67531d --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-base/0003-audioresample-It-s-HAVE_EMMINTRIN_H-not-HAVE_XMMINTR.patch @@ -0,0 +1,27 @@ +From 4e3d101aa854cfee633a9689efeb75e5001baa5e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Mon, 20 Jan 2014 16:11:04 +0100 +Subject: [PATCH] audioresample: It's HAVE_EMMINTRIN_H, not HAVE_XMMINTRIN_H + for SSE2 + +Signed-off-by: Peter Korsgaard +--- + gst/audioresample/resample.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gst/audioresample/resample.c b/gst/audioresample/resample.c +index 481fa01..4410bdd 100644 +--- a/gst/audioresample/resample.c ++++ b/gst/audioresample/resample.c +@@ -83,7 +83,7 @@ + #endif + + #ifdef _USE_SSE2 +-#if !defined(__SSE2__) || !defined(HAVE_XMMINTRIN_H) ++#if !defined(__SSE2__) || !defined(HAVE_EMMINTRIN_H) + #undef _USE_SSE2 + #endif + #endif +-- +2.1.4 + diff --git a/buildroot/package/gstreamer/gst-plugins-base/Config.in b/buildroot/package/gstreamer/gst-plugins-base/Config.in new file mode 100644 index 0000000..e9c8239 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-base/Config.in @@ -0,0 +1,108 @@ +menuconfig BR2_PACKAGE_GST_PLUGINS_BASE + bool "gst-plugins-base" + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXV if BR2_PACKAGE_XORG7 + help + A basic set of well-supported plug-ins for GStreamer. + + http://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST_PLUGINS_BASE + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_ADDER + bool "adder" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP + bool "app" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_AUDIOCONVERT + bool "audioconvert (mandatory for audio playback)" + default y + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_AUDIORATE + bool "audiorate" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE + bool "audioresample (mandatory for audio playback)" + default y + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC + bool "audiotestsrc" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_ENCODING + bool "encoding" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_FFMPEGCOLORSPACE + bool "ffmpegcolorspace (mandatory for video playback)" + default y + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_GDP + bool "gdp" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_PLAYBACK + bool "playback (mandatory)" + default y + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_TCP + bool "tcp" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_TYPEFIND + bool "typefind (mandatory)" + default y + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC + bool "videotestsrc" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VIDEORATE + bool "videorate" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VIDEOSCALE + bool "videoscale (mandatory for video playback)" + default y + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VOLUME + bool "volume (mandatory for audio playback)" + default y + +comment "plugins with external dependencies (there may be more available)" + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_ALSA + bool "alsa (mandatory for audio playback)" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_ALSA_LIB_PCM + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_OGG + bool "ogg (*.ogg audio/video)" + select BR2_PACKAGE_LIBOGG + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_PANGO + bool "pango font renderer" + depends on BR2_INSTALL_LIBSTDCPP # pango -> freetype + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + select BR2_PACKAGE_PANGO + +comment "pango plugin needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_SUBPARSE + bool "subparse" + select BR2_PACKAGE_LIBXML2 + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_THEORA + bool "theora (*.ogg video)" + select BR2_PACKAGE_LIBTHEORA + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_TREMOR + bool "tremor" + select BR2_PACKAGE_TREMOR + +config BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VORBIS + bool "vorbis (*.ogg audio)" + select BR2_PACKAGE_LIBVORBIS + +endif diff --git a/buildroot/package/gstreamer/gst-plugins-base/gst-plugins-base.hash b/buildroot/package/gstreamer/gst-plugins-base/gst-plugins-base.hash new file mode 100644 index 0000000..77eba71 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-base/gst-plugins-base.hash @@ -0,0 +1,2 @@ +# From http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.10.36.tar.xz.md5 +md5 3d2337841b132fe996e5eb2396ac9438 gst-plugins-base-0.10.36.tar.xz diff --git a/buildroot/package/gstreamer/gst-plugins-base/gst-plugins-base.mk b/buildroot/package/gstreamer/gst-plugins-base/gst-plugins-base.mk new file mode 100644 index 0000000..7353143 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-base/gst-plugins-base.mk @@ -0,0 +1,196 @@ +################################################################################ +# +# gst-plugins-base +# +################################################################################ + +GST_PLUGINS_BASE_VERSION = 0.10.36 +GST_PLUGINS_BASE_SOURCE = gst-plugins-base-$(GST_PLUGINS_BASE_VERSION).tar.xz +GST_PLUGINS_BASE_SITE = http://gstreamer.freedesktop.org/src/gst-plugins-base +GST_PLUGINS_BASE_INSTALL_STAGING = YES +GST_PLUGINS_BASE_LICENSE = GPL-2.0+, LGPL-2.0+ +GST_PLUGINS_BASE_LICENSE_FILES = COPYING COPYING.LIB + +# freetype is only used by examples, but if it is not found +# and the host has a freetype-config script, then the host +# include dirs are added to the search path causing trouble +GST_PLUGINS_BASE_CONF_ENV = \ + FT2_CONFIG=/bin/false \ + ac_cv_header_stdint_t="stdint.h" + +GST_PLUGINS_BASE_CONF_OPTS = \ + --disable-examples \ + --disable-oggtest \ + --disable-vorbistest \ + --disable-freetypetest + +GST_PLUGINS_BASE_DEPENDENCIES = gstreamer + +ifeq ($(BR2_PACKAGE_XORG7),y) +GST_PLUGINS_BASE_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXv +GST_PLUGINS_BASE_CONF_OPTS += \ + --enable-x \ + --enable-xshm \ + --enable-xvideo +else +GST_PLUGINS_BASE_CONF_OPTS += \ + --disable-x \ + --disable-xshm \ + --disable-xvideo +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +GST_PLUGINS_BASE_DEPENDENCIES += orc +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_ALSA),y) +GST_PLUGINS_BASE_DEPENDENCIES += alsa-lib +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_ADDER),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-adder +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-adder +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-app +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-app +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_AUDIOCONVERT),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-audioconvert +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-audioconvert +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_AUDIORATE),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-audiorate +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-audiorate +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-audioresample +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-audioresample +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-audiotestsrc +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-audiotestsrc +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_ENCODING),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-encoding +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-encoding +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_FFMPEGCOLORSPACE),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-ffmpegcolorspace +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-ffmpegcolorspace +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_GDP),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-gdp +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-gdp +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_PLAYBACK),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-playback +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-playback +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_SUBPARSE),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-subparse +GST_PLUGINS_BASE_DEPENDENCIES += libxml2 +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-subparse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_TCP),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-tcp +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-tcp +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_TYPEFIND),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-typefind +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-typefind +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-videotestsrc +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-videotestsrc +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VIDEORATE),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-videorate +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-videorate +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VIDEOSCALE),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-videoscale +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-videoscale +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VOLUME),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-volume +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-volume +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_OGG),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-ogg +GST_PLUGINS_BASE_DEPENDENCIES += libogg +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-ogg +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_PANGO),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-pango +GST_PLUGINS_BASE_DEPENDENCIES += pango +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-pango +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_THEORA),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-theora +GST_PLUGINS_BASE_DEPENDENCIES += libtheora +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-theora +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_TREMOR),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-ivorbis +GST_PLUGINS_BASE_DEPENDENCIES += tremor +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-ivorbis +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VORBIS),y) +GST_PLUGINS_BASE_CONF_OPTS += --enable-vorbis +GST_PLUGINS_BASE_DEPENDENCIES += libvorbis +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-vorbis +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GST_PLUGINS_BASE_DEPENDENCIES += zlib +else +GST_PLUGINS_BASE_CONF_OPTS += --disable-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer/gst-plugins-good/0001-linux36.patch b/buildroot/package/gstreamer/gst-plugins-good/0001-linux36.patch new file mode 100644 index 0000000..5d7cd93 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-good/0001-linux36.patch @@ -0,0 +1,37 @@ +Fix building with Linux headers 3.6 + +Signed-off-by: Markos Chandras + +From bfb1ac952b4c3caaba0297bbe7dc73ea92f9b292 Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Thu, 09 Aug 2012 07:35:23 +0000 +Subject: v4l2: fix build with recent kernels, the v4l2_buffer input field was removed + +This was unused apparently and removed in the kernel in commit: + + From 2b719d7baf490e24ce7d817c6337b7c87fda84c1 Mon Sep 17 00:00:00 2001 + From: Sakari Ailus + Date: Wed, 2 May 2012 09:40:03 -0300 + Subject: [PATCH] [media] v4l: drop v4l2_buffer.input and V4L2_BUF_FLAG_INPUT + + Remove input field in struct v4l2_buffer and flag V4L2_BUF_FLAG_INPUT which + tells the former is valid. The flag is used by no driver currently. + +https://bugzilla.gnome.org/show_bug.cgi?id=681491 +--- +(limited to 'sys/v4l2/gstv4l2bufferpool.c') + +diff --git a/sys/v4l2/gstv4l2bufferpool.c b/sys/v4l2/gstv4l2bufferpool.c +index 2e3a563..5aaed5a 100644 +--- a/sys/v4l2/gstv4l2bufferpool.c ++++ b/sys/v4l2/gstv4l2bufferpool.c +@@ -182,7 +182,6 @@ gst_v4l2_buffer_new (GstV4l2BufferPool * pool, guint index, GstCaps * caps) + GST_LOG_OBJECT (pool->v4l2elem, " MMAP offset: %u", + ret->vbuffer.m.offset); + GST_LOG_OBJECT (pool->v4l2elem, " length: %u", ret->vbuffer.length); +- GST_LOG_OBJECT (pool->v4l2elem, " input: %u", ret->vbuffer.input); + + ret->mmap_length = ret->vbuffer.length; + data = (guint8 *) v4l2_mmap (0, ret->vbuffer.length, +-- +cgit v0.9.0.2-2-gbebe diff --git a/buildroot/package/gstreamer/gst-plugins-good/0002-v4l2-fix-compilation-against-newer-kernel-headers.patch b/buildroot/package/gstreamer/gst-plugins-good/0002-v4l2-fix-compilation-against-newer-kernel-headers.patch new file mode 100644 index 0000000..62c3bb2 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-good/0002-v4l2-fix-compilation-against-newer-kernel-headers.patch @@ -0,0 +1,30 @@ +From 8e633d2059cb835448021cf79becb487aff10975 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Mon, 18 Mar 2013 14:59:35 +0000 +Subject: [PATCH] v4l2: fix compilation against newer kernel headers as on + FC19 + +--- + sys/v4l2/v4l2_calls.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c +index 07d390a..4c10f4f 100644 +--- a/sys/v4l2/v4l2_calls.c ++++ b/sys/v4l2/v4l2_calls.c +@@ -291,8 +291,12 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) + break; + case V4L2_CID_HFLIP: + case V4L2_CID_VFLIP: ++#ifndef V4L2_CID_PAN_RESET + case V4L2_CID_HCENTER: ++#endif ++#ifndef V4L2_CID_TILT_RESET + case V4L2_CID_VCENTER: ++#endif + #ifdef V4L2_CID_PAN_RESET + case V4L2_CID_PAN_RESET: + #endif +-- +1.7.10.4 + diff --git a/buildroot/package/gstreamer/gst-plugins-good/Config.in b/buildroot/package/gstreamer/gst-plugins-good/Config.in new file mode 100644 index 0000000..e92cd0c --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-good/Config.in @@ -0,0 +1,231 @@ +menuconfig BR2_PACKAGE_GST_PLUGINS_GOOD + bool "gst-plugins-good" + select BR2_PACKAGE_GST_PLUGINS_BASE + help + A set of well-supported plug-ins for GStreamer under the + preferred license. + + http://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST_PLUGINS_GOOD + +config BR2_PACKAGE_GST_PLUGINS_GOOD_JPEG + bool "jpeg (JPEG support)" + select BR2_PACKAGE_JPEG + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PNG + bool "png (PNG support)" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_GST_PLUGINS_GOOD_BZ2 + bool "bz2 support" + depends on BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MATROSKA + select BR2_PACKAGE_BZIP2 + help + Enable bz2 support for the following plugins: + matroska + +config BR2_PACKAGE_GST_PLUGINS_GOOD_ZLIB + bool "zlib support" + depends on BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ISOMP4 || BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ID3DEMUX || BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MATROSKA + select BR2_PACKAGE_ZLIB + help + Enable zlib support for the following plugins: + id3demux, isomp4, matroska + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ALPHA + bool "alpha" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_APETAG + bool "apetag" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AUDIOFX + bool "audiofx" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS + bool "audioparsers" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AUPARSE + bool "auparse" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AUTODETECT + bool "autodetect" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AVI + bool "avi (*.avi video)" + default y + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_CUTTER + bool "cutter" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_DEBUGUTILS + bool "debugutils" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_DEINTERLACE + bool "deinterlace" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_EFFECTV + bool "effectv" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_EQUALIZER + bool "equalizer" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_FLV + bool "flv" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_FLX + bool "flx" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_GOOM + bool "goom" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_GOOM2K1 + bool "goom2k1" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ID3DEMUX + bool "id3demux (*.mp3 audio)" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ICYDEMUX + bool "icydemux" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE + bool "imagefreeze" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_INTERLEAVE + bool "interleave" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ISOMP4 + bool "isomp4" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_LAW + bool "law" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_LEVEL + bool "level" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MATROSKA + bool "matroska" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MONOSCOPE + bool "monoscope" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MULTIFILE + bool "multifile" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MULTIPART + bool "multipart" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_REPLAYGAIN + bool "replaygain" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_RTP + bool "rtp" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_RTPMANAGER + bool "rtpmanager" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_RTSP + bool "rtsp" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SHAPEWIPE + bool "shapewipe" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SMPTE + bool "smpte" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SPECTRUM + bool "spectrum" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_UDP + bool "udp" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_VIDEOBOX + bool "videobox" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_VIDEOCROP + bool "videocrop" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_VIDEOFILTER + bool "videofilter" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_VIDEOMIXER + bool "videomixer" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_WAVENC + bool "wavenc" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_WAVPARSE + bool "wavparse (*.wav audio)" + default y + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_Y4M + bool "y4m" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_V4L2 + bool "v4l2" + +comment "plugins with external dependencies" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ANNODEX + bool "annodex (XML Library)" + select BR2_PACKAGE_LIBXML2 + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_CAIRO + bool "cairo" + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_FLAC + bool "flac (libFLAC)" + depends on BR2_USE_WCHAR # flac + select BR2_PACKAGE_FLAC + +comment "flac needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_GDKPIXBUF + bool "gdkpixbuf" + depends on BR2_USE_WCHAR # gdk-pixbuf -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # gdk-pixbuf -> libglib2 + select BR2_PACKAGE_GDK_PIXBUF + +comment "gdkpixbuf needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_OSS + bool "ossaudio (OSS audio)" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_OSS4 + bool "oss4 (Open Sound System 4)" + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_PULSE + bool "pulseaudio" + depends on BR2_TOOLCHAIN_HAS_THREADS # pulseaudio + depends on BR2_USE_MMU # pulseaudio + depends on !BR2_STATIC_LIBS # pulseaudio + select BR2_PACKAGE_PULSEAUDIO + +comment "pulseaudio support needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC + bool "souphttpsrc (http client)" + depends on BR2_USE_WCHAR # libsoup -> glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libsoup -> glib2 + select BR2_PACKAGE_LIBSOUP + +comment "souphttpsrc needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SPEEX + bool "speex" + select BR2_PACKAGE_SPEEX + +config BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_WAVPACK + bool "wavpack (*.wv audio)" + select BR2_PACKAGE_WAVPACK + +endif diff --git a/buildroot/package/gstreamer/gst-plugins-good/gst-plugins-good.hash b/buildroot/package/gstreamer/gst-plugins-good/gst-plugins-good.hash new file mode 100644 index 0000000..094dc87 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-good/gst-plugins-good.hash @@ -0,0 +1,2 @@ +# From http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-0.10.31.tar.xz.md5 +md5 555845ceab722e517040bab57f9ace95 gst-plugins-good-0.10.31.tar.xz diff --git a/buildroot/package/gstreamer/gst-plugins-good/gst-plugins-good.mk b/buildroot/package/gstreamer/gst-plugins-good/gst-plugins-good.mk new file mode 100644 index 0000000..791b413 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-good/gst-plugins-good.mk @@ -0,0 +1,394 @@ +################################################################################ +# +# gst-plugins-good +# +################################################################################ + +GST_PLUGINS_GOOD_VERSION = 0.10.31 +GST_PLUGINS_GOOD_SOURCE = gst-plugins-good-$(GST_PLUGINS_GOOD_VERSION).tar.xz +GST_PLUGINS_GOOD_SITE = http://gstreamer.freedesktop.org/src/gst-plugins-good +GST_PLUGINS_GOOD_LICENSE = LGPL-2.1+ +GST_PLUGINS_GOOD_LICENSE_FILES = COPYING + +GST_PLUGINS_GOOD_CONF_OPTS = \ + --disable-examples \ + --disable-directsound \ + --disable-sunaudio \ + --disable-osx_audio \ + --disable-osx_video \ + --disable-aalib \ + --disable-aalibtest \ + --disable-esd \ + --disable-esdtest \ + --disable-shout2 + +GST_PLUGINS_GOOD_DEPENDENCIES = gstreamer gst-plugins-base + +ifeq ($(BR2_PACKAGE_XORG7),y) +GST_PLUGINS_GOOD_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXv +GST_PLUGINS_GOOD_CONF_OPTS += \ + --enable-x \ + --enable-xshm \ + --enable-xvideo +else +GST_PLUGINS_GOOD_CONF_OPTS += \ + --disable-x \ + --disable-xshm \ + --disable-xvideo +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_JPEG),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-jpeg +GST_PLUGINS_GOOD_DEPENDENCIES += jpeg +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PNG),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-libpng +GST_PLUGINS_GOOD_DEPENDENCIES += libpng +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-libpng +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_BZ2),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-bz2 +GST_PLUGINS_GOOD_DEPENDENCIES += bzip2 +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-bz2 +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_ZLIB),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-zlib +GST_PLUGINS_GOOD_DEPENDENCIES += zlib +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ALPHA),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-alpha +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-alpha +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_APETAG),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-apetag +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-apetag +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AUDIOFX),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-audiofx +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-audiofx +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-audioparsers +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-audioparsers +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AUPARSE),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-auparse +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-auparse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AUTODETECT),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-autodetect +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-autodetect +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AVI),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-avi +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-avi +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_CUTTER),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-cutter +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-cutter +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_DEBUGUTILS),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-debugutils +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-debugutils +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_DEINTERLACE),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-deinterlace +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-deinterlace +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_EFFECTV),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-effectv +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-effectv +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_EQUALIZER),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-equalizer +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-equalizer +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_FLV),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-flv +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-flv +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_FLX),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-flx +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-flx +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_GOOM),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-goom +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-goom +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_GOOM2K1),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-goom2k1 +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-goom2k1 +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ID3DEMUX),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-id3demux +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-id3demux +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ICYDEMUX),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-icydemux +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-icydemux +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-imagefreeze +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-imagefreeze +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_INTERLEAVE),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-interleave +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-interleave +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ISOMP4),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-isomp4 +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-isomp4 +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_LAW),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-law +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-law +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_LEVEL),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-level +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-level +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MATROSKA),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-matroska +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-matroska +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MONOSCOPE),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-monoscope +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-monoscope +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MULTIFILE),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-multifile +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-multifile +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MULTIPART),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-multipart +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-multipart +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_REPLAYGAIN),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-replaygain +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-replaygain +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_RTP),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-rtp +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-rtp +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_RTPMANAGER),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-rtpmanager +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-rtpmanager +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_RTSP),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-rtsp +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-rtsp +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SHAPEWIPE),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-shapewipe +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-shapewipe +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SMPTE),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-smpte +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-smpte +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SPECTRUM),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-spectrum +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-spectrum +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_UDP),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-udp +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-udp +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_VIDEOBOX),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-videobox +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-videobox +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_VIDEOCROP),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-videocrop +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-videocrop +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_VIDEOFILTER),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-videofilter +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-videofilter +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_VIDEOMIXER),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-videomixer +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-videomixer +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_WAVENC),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-wavenc +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-wavenc +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_WAVPARSE),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-wavparse +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-wavparse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_Y4M),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-y4m +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-y4m +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_V4L2),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-gst_v4l2 +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-gst_v4l2 +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ANNODEX),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-annodex +GST_PLUGINS_GOOD_DEPENDENCIES += libxml2 +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-annodex +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_CAIRO),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-cairo +GST_PLUGINS_GOOD_DEPENDENCIES += cairo +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-cairo +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_FLAC),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-flac +GST_PLUGINS_GOOD_DEPENDENCIES += flac +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-flac +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_GDKPIXBUF),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-gdk_pixbuf +GST_PLUGINS_GOOD_DEPENDENCIES += gdk-pixbuf +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-gdk_pixbuf +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_OSS),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-oss +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-oss +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_OSS4),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-oss4 +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-oss4 +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_PULSE),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-pulse +GST_PLUGINS_GOOD_DEPENDENCIES += pulseaudio +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-pulse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-soup +GST_PLUGINS_GOOD_DEPENDENCIES += libsoup +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-soup +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_SPEEX),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-speex +GST_PLUGINS_GOOD_DEPENDENCIES += speex +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-speex +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_WAVPACK),y) +GST_PLUGINS_GOOD_CONF_OPTS += --enable-wavpack +GST_PLUGINS_GOOD_DEPENDENCIES += wavpack +else +GST_PLUGINS_GOOD_CONF_OPTS += --disable-wavpack +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer/gst-plugins-ugly/Config.in b/buildroot/package/gstreamer/gst-plugins-ugly/Config.in new file mode 100644 index 0000000..3d133cf --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-ugly/Config.in @@ -0,0 +1,53 @@ +menuconfig BR2_PACKAGE_GST_PLUGINS_UGLY + bool "gst-plugins-ugly" + select BR2_PACKAGE_GST_PLUGINS_BASE + help + A set of well-supported plug-ins for GStreamer, but might pose + problems for distributors. + + http://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST_PLUGINS_UGLY + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_ASFDEMUX + bool "asfdemux" + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_DVDLPCMDEC + bool "dvdlpcmdec" + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_DVDSUB + bool "dvdsub" + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_IEC958 + bool "iec958" + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_MPEGAUDIOPARSE + bool "mpegaudioparse" + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_MPEGSTREAM + bool "mpegstream" + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_REALMEDIA + bool "realmedia" + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_SYNAESTHESIA + bool "synaesthesia" + +comment "plugins with external dependencies (there may be more available)" + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_LAME + bool "lame (*.mp3 audio encoder)" + select BR2_PACKAGE_LAME + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_MAD + bool "mad (*.mp3 audio)" + select BR2_PACKAGE_LIBID3TAG + select BR2_PACKAGE_LIBMAD + +config BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_MPEG2DEC + bool "mpeg2dec" + select BR2_PACKAGE_LIBMPEG2 + +endif diff --git a/buildroot/package/gstreamer/gst-plugins-ugly/gst-plugins-ugly.hash b/buildroot/package/gstreamer/gst-plugins-ugly/gst-plugins-ugly.hash new file mode 100644 index 0000000..56f2a8c --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-ugly/gst-plugins-ugly.hash @@ -0,0 +1,5 @@ +# From http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.19.tar.xz.md5 +md5 ba26045c8c8c91f0d48d327ccf53ac0c gst-plugins-ugly-0.10.19.tar.xz +# Locally computed +sha256 4934f65ff892637e7efaf1cfe635779189dde429d0706f40c86a3aac476ea873 gst-plugins-ugly-0.10.19.tar.xz +sha256 2a8aa4cd019fab333f1f8377bf7afa426d3038a033361d90fab70c335e9a53e7 cdio-cd-text-api.patch diff --git a/buildroot/package/gstreamer/gst-plugins-ugly/gst-plugins-ugly.mk b/buildroot/package/gstreamer/gst-plugins-ugly/gst-plugins-ugly.mk new file mode 100644 index 0000000..1a1e2a1 --- /dev/null +++ b/buildroot/package/gstreamer/gst-plugins-ugly/gst-plugins-ugly.mk @@ -0,0 +1,90 @@ +################################################################################ +# +# gst-plugins-ugly +# +################################################################################ + +GST_PLUGINS_UGLY_VERSION = 0.10.19 +GST_PLUGINS_UGLY_SOURCE = gst-plugins-ugly-$(GST_PLUGINS_UGLY_VERSION).tar.xz +GST_PLUGINS_UGLY_SITE = http://gstreamer.freedesktop.org/src/gst-plugins-ugly +GST_PLUGINS_UGLY_PATCH = http://git.alpinelinux.org/cgit/aports/plain/main/gst-plugins-ugly0.10/cdio-cd-text-api.patch +# COPYING is in fact LGPL-2.1, but all of the code is LGPL-2.0+ +# (except for one test, xingmux) +GST_PLUGINS_UGLY_LICENSE = LGPL-2.0+, GPL-2.0+ (synaesthesia) +GST_PLUGINS_UGLY_LICENSE_FILES = COPYING + +GST_PLUGINS_UGLY_CONF_OPTS = \ + --disable-examples + +GST_PLUGINS_UGLY_DEPENDENCIES = gstreamer gst-plugins-base + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_ASFDEMUX),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-asfdemux +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-asfdemux +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_DVDLPCMDEC),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-dvdlpcmdec +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-dvdlpcmdec +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_DVDSUB),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-dvdsub +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-dvdsub +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_IEC958),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-iec958 +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-iec958 +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_MPEGAUDIOPARSE),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-mpegaudioparse +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-mpegaudioparse +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_MPEGSTREAM),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-mpegstream +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-mpegstream +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_REALMEDIA),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-realmedia +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-realmedia +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_SYNAESTHESIA),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-synaesthesia +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-synaesthesia +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_LAME),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-lame +GST_PLUGINS_UGLY_DEPENDENCIES += lame +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-lame +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_MAD),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-mad +GST_PLUGINS_UGLY_DEPENDENCIES += libid3tag libmad +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-mad +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGLY_PLUGIN_MPEG2DEC),y) +GST_PLUGINS_UGLY_CONF_OPTS += --enable-mpeg2dec +GST_PLUGINS_UGLY_DEPENDENCIES += libmpeg2 +else +GST_PLUGINS_UGLY_CONF_OPTS += --disable-mpeg2dec +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer/gstreamer.mk b/buildroot/package/gstreamer/gstreamer.mk new file mode 100644 index 0000000..22240bc --- /dev/null +++ b/buildroot/package/gstreamer/gstreamer.mk @@ -0,0 +1 @@ +include $(sort $(wildcard package/gstreamer/*/*.mk)) diff --git a/buildroot/package/gstreamer/gstreamer/0001-bison3.patch b/buildroot/package/gstreamer/gstreamer/0001-bison3.patch new file mode 100644 index 0000000..f9ec52d --- /dev/null +++ b/buildroot/package/gstreamer/gstreamer/0001-bison3.patch @@ -0,0 +1,24 @@ +Fix deprecation from bison 3.0+ +From http://comments.gmane.org/gmane.linux.lfs.beyond.devel/24620 + +Signed-off-by: Gustavo Zacarias + +diff -Nura gstreamer-0.10.36.orig/gst/parse/grammar.y gstreamer-0.10.36/gst/parse/grammar.y +--- gstreamer-0.10.36.orig/gst/parse/grammar.y 2013-10-04 09:52:21.685282055 -0300 ++++ gstreamer-0.10.36/gst/parse/grammar.y 2013-10-04 10:21:54.800211238 -0300 +@@ -26,7 +26,6 @@ + */ + + #define YYERROR_VERBOSE 1 +-#define YYLEX_PARAM scanner + + #define YYENABLE_NLS 0 + +@@ -648,6 +647,7 @@ + %right '.' + %left '!' '=' + ++%lex-param { void *scanner } + %parse-param { void *scanner } + %parse-param { graph_t *graph } + %pure-parser diff --git a/buildroot/package/gstreamer/gstreamer/Config.in b/buildroot/package/gstreamer/gstreamer/Config.in new file mode 100644 index 0000000..b1334ab --- /dev/null +++ b/buildroot/package/gstreamer/gstreamer/Config.in @@ -0,0 +1,38 @@ +comment "gstreamer 0.10 needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +config BR2_PACKAGE_GSTREAMER + bool "gstreamer 0.10" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBGLIB2 + help + GStreamer is an open source multimedia framework. + + This 0.10.x version of GStreamer is incompatible with + GStreamer 1.X. + + http://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GSTREAMER + +config BR2_PACKAGE_GSTREAMER_GST_DEBUG + bool "enable gst-debug trace support" + default y + help + Enable support for the gst-debug tracing functionality in + gstreamer. This has limited CPU overhead, but does increase + the rootfs size somewhat. + +config BR2_PACKAGE_GSTREAMER_PLUGIN_REGISTRY + bool "enable plugin registry" + default y + help + Enable support for the GStreamer plugin registry. This may + increase the launch-time for a GStreamer application. + +endif diff --git a/buildroot/package/gstreamer/gstreamer/gstreamer.hash b/buildroot/package/gstreamer/gstreamer/gstreamer.hash new file mode 100644 index 0000000..4fcf34a --- /dev/null +++ b/buildroot/package/gstreamer/gstreamer/gstreamer.hash @@ -0,0 +1,4 @@ +# From http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.36.tar.xz.md5 +md5 15389c73e091b1dda915279c388b9cb2 gstreamer-0.10.36.tar.xz +# locally computed +sha256 9151aa108c177054387885763fa0e433e76780f7c5655c70a5390f2a6c6871da gstreamer-0.10.36.tar.xz diff --git a/buildroot/package/gstreamer/gstreamer/gstreamer.mk b/buildroot/package/gstreamer/gstreamer/gstreamer.mk new file mode 100644 index 0000000..91230aa --- /dev/null +++ b/buildroot/package/gstreamer/gstreamer/gstreamer.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# gstreamer +# +################################################################################ + +GSTREAMER_VERSION = 0.10.36 +GSTREAMER_SOURCE = gstreamer-$(GSTREAMER_VERSION).tar.xz +GSTREAMER_SITE = http://gstreamer.freedesktop.org/src/gstreamer +GSTREAMER_INSTALL_STAGING = YES +# COPYING is in fact v2, but most of the code is v2.1+ +GSTREAMER_LICENSE = LGPL-2.1+ +GSTREAMER_LICENSE_FILES = COPYING + +# Checking if unaligned memory access works correctly cannot be done when cross +# compiling. For the following architectures there is no information available +# in the configure script. +ifeq ($(BR2_arc)$(BR2_xtensa)$(BR2_microblaze)$(BR2_nios2)$(BR2_or1k),y) +GSTREAMER_CONF_ENV = as_cv_unaligned_access=no +endif +ifeq ($(BR2_aarch64),y) +GSTREAMER_CONF_ENV = as_cv_unaligned_access=yes +endif + +GSTREAMER_CONF_OPTS = \ + --disable-examples \ + --disable-tests \ + --disable-failing-tests \ + --disable-loadsave \ + $(if $(BR2_PACKAGE_GSTREAMER_GST_DEBUG),,--disable-gst-debug) \ + $(if $(BR2_PACKAGE_GSTREAMER_PLUGIN_REGISTRY),,--disable-registry) + +GSTREAMER_DEPENDENCIES = libglib2 host-pkgconf host-bison host-flex \ + $(if $(BR2_PACKAGE_LIBXML2),libxml2) + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/Config.in b/buildroot/package/gstreamer1/Config.in new file mode 100644 index 0000000..76c32bc --- /dev/null +++ b/buildroot/package/gstreamer1/Config.in @@ -0,0 +1,16 @@ +# Gstreamer 1.x & Plugins +source "package/gstreamer1/gstreamer1/Config.in" + +if BR2_PACKAGE_GSTREAMER1 +source "package/gstreamer1/gstreamer1-mm/Config.in" +source "package/gstreamer1/gst1-plugins-base/Config.in" +source "package/gstreamer1/gst1-plugins-good/Config.in" +source "package/gstreamer1/gst1-plugins-bad/Config.in" +source "package/gstreamer1/gst1-plugins-ugly/Config.in" +source "package/gstreamer1/gst1-imx/Config.in" +source "package/gstreamer1/gst1-libav/Config.in" +source "package/gstreamer1/gst1-rtsp-server/Config.in" +source "package/gstreamer1/gst1-validate/Config.in" +source "package/gstreamer1/gst1-vaapi/Config.in" +source "package/gstreamer1/gst-omx/Config.in" +endif diff --git a/buildroot/package/gstreamer1/gst-omx/Config.in b/buildroot/package/gstreamer1/gst-omx/Config.in new file mode 100644 index 0000000..d2e4776 --- /dev/null +++ b/buildroot/package/gstreamer1/gst-omx/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_GST_OMX + bool "gst-omx" + depends on BR2_PACKAGE_HAS_LIBOPENMAX + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + GStreamer plug-in to use OpenMAX API. + + http://cgit.freedesktop.org/gstreamer/gst-omx + +comment "gst-omx requires a OpenMAX implementation" + depends on !BR2_PACKAGE_HAS_LIBOPENMAX diff --git a/buildroot/package/gstreamer1/gst-omx/gst-omx.hash b/buildroot/package/gstreamer1/gst-omx/gst-omx.hash new file mode 100644 index 0000000..c4f8b10 --- /dev/null +++ b/buildroot/package/gstreamer1/gst-omx/gst-omx.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-1.12.4.tar.xz.sha256sum +sha256 a025fa24242ec868fe0ff1e66d806a1070bcbc7c14a987a89cdc3395d0d56d5f gst-omx-1.12.4.tar.xz diff --git a/buildroot/package/gstreamer1/gst-omx/gst-omx.mk b/buildroot/package/gstreamer1/gst-omx/gst-omx.mk new file mode 100644 index 0000000..68cb7f6 --- /dev/null +++ b/buildroot/package/gstreamer1/gst-omx/gst-omx.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# gst-omx +# +################################################################################ + +GST_OMX_VERSION = 1.12.4 +GST_OMX_SOURCE = gst-omx-$(GST_OMX_VERSION).tar.xz +GST_OMX_SITE = https://gstreamer.freedesktop.org/src/gst-omx + +GST_OMX_LICENSE = LGPL-2.1 +GST_OMX_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +GST_OMX_CONF_OPTS = \ + --with-omx-target=rpi +GST_OMX_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) \ + -I$(STAGING_DIR)/usr/include/IL \ + -I$(STAGING_DIR)/usr/include/interface/vcos/pthreads \ + -I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux" +endif + +ifeq ($(BR2_PACKAGE_BELLAGIO),y) +GST_OMX_CONF_OPTS = \ + --with-omx-target=bellagio +GST_OMX_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) \ + -DOMX_VERSION_MAJOR=1 \ + -DOMX_VERSION_MINOR=1 \ + -DOMX_VERSION_REVISION=2 \ + -DOMX_VERSION_STEP=0" +endif + +GST_OMX_DEPENDENCIES = gstreamer1 gst1-plugins-base libopenmax + +# adjust library paths to where buildroot installs them +define GST_OMX_FIXUP_CONFIG_PATHS + find $(@D)/config -name gstomx.conf | \ + xargs $(SED) 's|/usr/local|/usr|g' -e 's|/opt/vc|/usr|g' +endef + +GST_OMX_POST_PATCH_HOOKS += GST_OMX_FIXUP_CONFIG_PATHS + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gst1-imx/Config.in b/buildroot/package/gstreamer1/gst1-imx/Config.in new file mode 100644 index 0000000..7b46233 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-imx/Config.in @@ -0,0 +1,98 @@ +comment "gst1-imx needs a toolchain w/ dynamic library" + depends on BR2_arm + depends on BR2_STATIC_LIBS + +menuconfig BR2_PACKAGE_GST1_IMX + bool "gst1-imx" + depends on BR2_arm # Only relevant for i.MX + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + This is a set of GStreamer 1.0 plugins for plugins for + Freescale's i.MX platforms, which make use of the i.MX + multimedia capabilities. + + https://github.com/Freescale/gstreamer-imx + +if BR2_PACKAGE_GST1_IMX + +config BR2_PACKAGE_GST1_IMX_EGLVISINK + bool "imxeglvivsink" + depends on BR2_PACKAGE_IMX_GPU_VIV + help + Elements leveraging the 3D GPU + +comment "imxeglvivsink needs the Vivante 3D libraries" + depends on !BR2_PACKAGE_IMX_GPU_VIV + +config BR2_PACKAGE_GST1_IMX_G2D + bool "imxg2d" + depends on BR2_PACKAGE_IMX_GPU_G2D + help + Elements leveraging the 2D GPU + +comment "imxg2d needs the G2D libraries" + depends on !BR2_PACKAGE_IMX_GPU_G2D + +config BR2_PACKAGE_GST1_IMX_IPU + bool "imxipu" + depends on BR2_LINUX_KERNEL + help + Elements leveraging the IPU + +comment "imxipu needs an imx-specific Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_GST1_IMX_MP3ENCODER + bool "mp3encoder" + depends on BR2_PACKAGE_IMX_CODEC + help + Elements for MP3 encoding + +comment "mp3encoder needs the i.MX codec binaries" + depends on !BR2_PACKAGE_IMX_CODEC + +config BR2_PACKAGE_GST1_IMX_PXP + bool "imxpxp" + depends on BR2_LINUX_KERNEL + help + Elements leveraging the PXP + +comment "imxpxp needs an imx-specific Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_GST1_IMX_UNIAUDIODEC + bool "uniaudiodec" + depends on BR2_PACKAGE_IMX_CODEC + help + Elements for audio decoding + +comment "uniaudiodec needs the i.MX codec binaries" + depends on !BR2_PACKAGE_IMX_CODEC + +config BR2_PACKAGE_GST1_IMX_VPU + bool "imxvpu" + depends on BR2_PACKAGE_LIBIMXVPUAPI + help + Elements leveraging the VPU + +comment "imxvpu needs the VPU imxvpuapi library" + depends on !BR2_PACKAGE_LIBIMXVPUAPI + +config BR2_PACKAGE_GST1_IMX_V4L2VIDEOSRC + bool "imxv4l2videosrc" + select BR2_PACKAGE_GST1_PLUGINS_BAD + help + Elements for V4L2 capture + +config BR2_PACKAGE_GST1_IMX_V4L2VIDEOSINK + bool "imxv4l2videosink" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 # V4L2_COLORSPACE_DEFAULT + select BR2_PACKAGE_GST1_PLUGINS_BAD + help + Elements for V4L2 output + +comment "imxv4l2videosink needs a toolchain w/ headers >= 4.2" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 + +endif diff --git a/buildroot/package/gstreamer1/gst1-imx/gst1-imx.hash b/buildroot/package/gstreamer1/gst1-imx/gst1-imx.hash new file mode 100644 index 0000000..58ff4be --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-imx/gst1-imx.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 3fcf1046ab8c6c7cd94218f4d2bc31ad7b5efa8a6b8f9fd5d93dc182f98ce026 gst1-imx-0.13.0.tar.gz diff --git a/buildroot/package/gstreamer1/gst1-imx/gst1-imx.mk b/buildroot/package/gstreamer1/gst1-imx/gst1-imx.mk new file mode 100644 index 0000000..43b4d9b --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-imx/gst1-imx.mk @@ -0,0 +1,103 @@ +################################################################################ +# +# gst1-imx +# +################################################################################ + +GST1_IMX_VERSION = 0.13.0 +GST1_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_IMX_VERSION)) + +GST1_IMX_LICENSE = LGPL-2.0+ +GST1_IMX_LICENSE_FILES = LICENSE + +GST1_IMX_INSTALL_STAGING = YES + +GST1_IMX_DEPENDENCIES += \ + host-pkgconf \ + gstreamer1 \ + gst1-plugins-base + +GST1_IMX_CONF_OPTS = --prefix="/usr" + +ifeq ($(BR2_LINUX_KERNEL),y) +# IPU and PXP need access to imx-specific kernel headers +GST1_IMX_DEPENDENCIES += linux +GST1_IMX_CONF_OPTS += --kernel-headers="$(LINUX_DIR)/include" +endif + +ifeq ($(BR2_PACKAGE_IMX_CODEC),y) +GST1_IMX_DEPENDENCIES += imx-codec +endif + +ifeq ($(BR2_PACKAGE_IMX_GPU_VIV),y) +GST1_IMX_DEPENDENCIES += imx-gpu-viv +endif + +ifeq ($(BR2_PACKAGE_IMX_GPU_G2D),y) +GST1_IMX_DEPENDENCIES += imx-gpu-g2d +endif + +ifeq ($(BR2_PACKAGE_GST1_IMX_EGLVISINK),y) +# There's no --enable-eglvivsink option +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +GST1_IMX_DEPENDENCIES += xlib_libX11 +GST1_IMX_CONF_OPTS += --egl-platform=x11 +else +ifeq ($(BR2_PACKAGE_WAYLAND),y) +GST1_IMX_DEPENDENCIES += wayland +GST1_IMX_CONF_OPTS += --egl-platform=wayland +else +GST1_IMX_CONF_OPTS += --egl-platform=fb +endif +endif +else +GST1_IMX_CONF_OPTS += --disable-eglvivsink +endif + +# There's no --enable-g2d option +ifeq ($(BR2_PACKAGE_GST1_IMX_G2D),) +GST1_IMX_CONF_OPTS += --disable-g2d +endif + +# There's no --enable-ipu option +ifeq ($(BR2_PACKAGE_GST1_IMX_IPU),) +GST1_IMX_CONF_OPTS += --disable-ipu +endif + +# There's no --enable-mp3encoder option +ifeq ($(BR2_PACKAGE_GST1_IMX_MP3ENCODER),) +GST1_IMX_CONF_OPTS += --disable-mp3encoder +endif + +# There's no --enable-pxp option +ifeq ($(BR2_PACKAGE_GST1_IMX_PXP),) +GST1_IMX_CONF_OPTS += --disable-pxp +endif + +# There's no --enable-uniaudiodec option +ifeq ($(BR2_PACKAGE_GST1_IMX_UNIAUDIODEC),) +GST1_IMX_CONF_OPTS += --disable-uniaudiodec +endif + +ifeq ($(BR2_PACKAGE_GST1_IMX_VPU),y) +# There's no --enable-vpu option +GST1_IMX_DEPENDENCIES += libimxvpuapi +else +GST1_IMX_CONF_OPTS += --disable-vpu +endif + +ifeq ($(BR2_PACKAGE_GST1_IMX_V4L2VIDEOSRC),y) +# There's no --enable-imxv4l2videosrc option +GST1_IMX_DEPENDENCIES += gst1-plugins-bad +else +GST1_IMX_CONF_OPTS += --disable-imxv4l2videosrc +endif + +ifeq ($(BR2_PACKAGE_GST1_IMX_V4L2VIDEOSINK),y) +# There's no --enable-imxv4l2videosink option +GST1_IMX_DEPENDENCIES += gst1-plugins-bad +else +GST1_IMX_CONF_OPTS += --disable-imxv4l2videosink +endif + +$(eval $(waf-package)) diff --git a/buildroot/package/gstreamer1/gst1-libav/Config.in b/buildroot/package/gstreamer1/gst1-libav/Config.in new file mode 100644 index 0000000..23d78b6 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-libav/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_GST1_LIBAV + bool "gst1-libav" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_SWSCALE + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + GStreamer plugin (formerly gst-ffmpeg). + + This package contains GStreamer plugins based on + the libav project. + + The codecs, muxers, bitstreams and filters to build can be + selected in the ffmpeg package. + + http://gstreamer.freedesktop.org/ diff --git a/buildroot/package/gstreamer1/gst1-libav/gst1-libav.hash b/buildroot/package/gstreamer1/gst1-libav/gst1-libav.hash new file mode 100644 index 0000000..f9a287c --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-libav/gst1-libav.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.12.4.tar.xz.sha256sum +sha256 2a56aa5d2d8cd912f2bce17f174713d2c417ca298f1f9c28ee66d4aa1e1d9e62 gst-libav-1.12.4.tar.xz diff --git a/buildroot/package/gstreamer1/gst1-libav/gst1-libav.mk b/buildroot/package/gstreamer1/gst1-libav/gst1-libav.mk new file mode 100644 index 0000000..7450b75 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-libav/gst1-libav.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# gst1-libav +# +################################################################################ + +GST1_LIBAV_VERSION = 1.12.4 +GST1_LIBAV_SOURCE = gst-libav-$(GST1_LIBAV_VERSION).tar.xz +GST1_LIBAV_SITE = https://gstreamer.freedesktop.org/src/gst-libav +GST1_LIBAV_CONF_OPTS = --with-system-libav +GST1_LIBAV_DEPENDENCIES = \ + host-pkgconf ffmpeg gstreamer1 gst1-plugins-base \ + $(if $(BR2_PACKAGE_BZIP2),bzip2) \ + $(if $(BR2_PACKAGE_XZ),xz) +GST1_LIBAV_LICENSE = GPL-2.0+ +GST1_LIBAV_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gst1-plugins-bad/Config.in b/buildroot/package/gstreamer1/gst1-plugins-bad/Config.in new file mode 100644 index 0000000..7e166e4 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-bad/Config.in @@ -0,0 +1,723 @@ +menuconfig BR2_PACKAGE_GST1_PLUGINS_BAD + bool "gst1-plugins-bad" + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + A set of plug-ins for GStreamer that may be of poor quality + or lacking some features. + + http://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST1_PLUGINS_BAD + +comment "libraries with external dependencies" + +menuconfig BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL + bool "opengl" + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + +if BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL + +config BR2_PACKAGE_GST1_PLUGINS_BAD_HAS_LIB_OPENGL + def_bool BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_WINDOW + +comment "The opengl library needs an API, a platform and a window system" + depends on !BR2_PACKAGE_GST1_PLUGINS_BAD_HAS_LIB_OPENGL + +comment "APIs" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_API + bool + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_OPENGL + bool "opengl" + default y + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_LIBGLU + select BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_API + +comment "opengl needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLES2 + bool "gles2" + default y + depends on BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_API + +comment "gles2 needs an OpenGL ES backend" + depends on !BR2_PACKAGE_HAS_LIBGLES + +comment "Platforms" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_PLATFORM + bool + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLX + bool "glx" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_OPENGL + depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR # mesa needs big X + depends on !BR2_PACKAGE_RPI_USERLAND # x11 + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XPROTO_GLPROTO + select BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_X11 + select BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_PLATFORM + help + OpenGL Extension to the X Window System + +comment "glx not supported with rpi-userland" + depends on BR2_PACKAGE_RPI_USERLAND + +comment "glx needs the opengl API and modular X.org" + depends on !BR2_PACKAGE_RPI_USERLAND && \ + (!BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_OPENGL || \ + !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR) + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL + bool "egl" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_API + depends on BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_PLATFORM + +comment "egl needs an API and an EGL backend" + depends on !BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_API || \ + !BR2_PACKAGE_HAS_LIBEGL + +comment "Window systems" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_WINDOW + bool + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_X11 + bool "x11" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_PLATFORM + depends on !BR2_PACKAGE_RPI_USERLAND + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_WINDOW + +comment "x11 not supported with rpi-userland" + depends on BR2_PACKAGE_RPI_USERLAND + +comment "x11 needs a platform and X.org" + depends on !BR2_PACKAGE_RPI_USERLAND && \ + (!BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_PLATFORM || \ + !BR2_PACKAGE_XORG7) + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_WAYLAND + bool "wayland" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL + depends on BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_WINDOW + +comment "wayland needs the egl platform and the wayland package" + depends on !BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL || \ + !BR2_PACKAGE_WAYLAND + +config BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_DISPMANX + bool "dispmanx" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL + depends on BR2_PACKAGE_RPI_USERLAND + select BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_HAS_WINDOW + help + Raspberry Pi's Dispmanx windowing system + +comment "dispmanx needs the egl platform and rpi-userland" + depends on !BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL || \ + !BR2_PACKAGE_RPI_USERLAND + +endif + +comment "opengl needs an OpenGL or OpenGL ES backend" + depends on !BR2_PACKAGE_HAS_LIBGL && !BR2_PACKAGE_HAS_LIBGLES + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ACCURIP + bool "accurip" + help + Accurip plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMDEC + bool "adpcmdec" + help + ADPCM decoder + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMENC + bool "adpcmenc" + help + ADPCM encoder + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AIFF + bool "aiff" + help + Create and parse Audio interchange File Format (AIFF) files + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASFMUX + bool "asfmux" + help + ASF Muxer Plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOBUFFERSPLIT + bool "audiobuffersplit" + help + Audio buffersplit plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOFXBAD + bool "audiofxbad" + help + Audio filters plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER + bool "audiomixer" + help + Audio mixer plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXMATRIX + bool "audiomixmatrix" + help + Audio N:M mixer plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COMPOSITOR + bool "compositor" + help + Video compositor plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOVISUALIZERS + bool "audiovisualizers" + help + Creates video visualizations of audio input + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUTOCONVERT + bool "autoconvert" + help + Selects convertor element based on caps + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BAYER + bool "bayer" + help + Elements to convert Bayer images + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CAMERABIN2 + bool "camerabin2" + help + Take image snapshots and record movies from camera + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COLOREFFECTS + bool "coloreffects" + help + Color Look-up Table filters + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS + bool "debugutils" + help + Collection of elements that may or may not be useful for + debugging + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBOVERLAY + bool "dvdsuboverlay" + help + DVB subtitle renderer plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVDSPU + bool "dvdspu" + help + DVD Sub-picture Overlay element + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FACEOVERLAY + bool "faceoverlay" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FESTIVAL + bool "festival" + help + Synthesizes plain text into audio + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FIELDANALYSIS + bool "fieldanalysis" + help + Video field analysis + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREEVERB + bool "freeverb" + help + Reverberation/room effect + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREI0R + bool "frei0r" + help + frei0r plugin library + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GAUDIEFFECTS + bool "gaudieffects" + help + Gaudi video effects + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GEOMETRICTRANSFORM + bool "geometrictransform" + help + Various geometric image transform elements + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GDP + bool "gdp" + help + Payload/depayload GDP packets + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ID3TAG + bool "id3tag" + help + ID3 v1 and v2 muxing plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTER + bool "inter" + help + plugin for inter-pipeline communication + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTERLACE + bool "interlace" + help + Create an interlaced video stream + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVFPARSE + bool "ivfparse" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVTC + bool "ivtc" + help + Inverse Telecine plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JP2KDECIMATOR + bool "jp2kdecimator" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JPEGFORMAT + bool "jpegformat" + help + JPEG interchange format plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBRFB + bool "librfb" + help + Connects to a VNC server and decodes RFB stream + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MIDI + bool "midi" + help + MIDI plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGDEMUX + bool "mpegdemux" + help + MPEG-PS demuxer + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX + bool "mpegtsdemux" + help + MPEG TS demuxer + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSMUX + bool "mpegtsmux" + help + MPEG-TS muxer + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGPSMUX + bool "mpegpsmux" + help + MPEG-PS muxer + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MXF + bool "mxf" + help + MXF plugin library + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NETSIM + bool "netsim" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ONVIF + bool "onvif" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PCAPPARSE + bool "pcapparse" + help + Element parsing raw pcap streams + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PNM + bool "pnm" + help + PNM plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RAWPARSE + bool "rawparse" + help + Parses byte streams into raw frames + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REMOVESILENCE + bool "removesilence" + help + Removes silence from an audio stream + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP + bool "rtmp" + select BR2_PACKAGE_RTMPDUMP + help + RTMP plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDP + bool "sdp" + help + configure streaming sessions using SDP + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SEGMENTCLIP + bool "segmentclip" + help + Segment clip elements + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SIREN + bool "siren" + help + Siren encoder/decoder/payloader/depayloader plugins + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SMOOTH + bool "smooth" + help + Apply a smooth filter to an image + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SPEED + bool "speed" + help + Set speed/pitch on audio/raw streams (resampler) + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC + bool "subenc" + help + subtitle encoders + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_STEREO + bool "stereo" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TIMECODE + bool "timecode" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFILTERS + bool "videofilters" + help + Video filters in gst-plugins-bad + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFRAME_AUDIOLEVEL + bool "videoframe_audiolevel" + help + videoframe_audiolevel + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA + bool "iqa" + help + Image Quality Assessment + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS + bool "videoparsers" + help + videoparsers + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOSIGNAL + bool "videosignal" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VMNC + bool "vmnc" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_Y4M + bool "y4m" + help + Demuxes/decodes YUV4MPEG streams + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_YADIF + bool "yadif" + help + YADIF deinterlacing filter + +comment "plugins with external dependencies" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASSRENDER + bool "assrender" + select BR2_PACKAGE_LIBASS + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BZ2 + bool "bz2" + select BR2_PACKAGE_BZIP2 + help + Compress or decompress streams + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CURL + bool "curl" + select BR2_PACKAGE_LIBCURL + help + libcurl-based elements + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DASH + bool "dash" + select BR2_PACKAGE_LIBXML2 + help + DASH demuxer plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DECKLINK + bool "decklink" + depends on BR2_INSTALL_LIBSTDCPP + help + Blackmagic Decklink plugin + +comment "decklink needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DIRECTFB + bool "directfb" + default y + depends on BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVB + bool "dvb" + # FEC_2_5 / QAM_4_NR definitions + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + select BR2_PACKAGE_DTV_SCAN_TABLES + help + DVB elements + +comment "dvb needs a toolchain w/ headers >= 3.7" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FAAD + bool "faad" + select BR2_PACKAGE_FAAD2 + help + Free AAC Decoder (FAAD) + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FBDEV + bool "fbdev" + help + Linux framebuffer video sink + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FDK_AAC + bool "fdk-aac" + depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_FDK_AAC + help + MPEG AAC encoder/decoder + +comment "fdk-aac needs a toolchain w/ C++" + depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GL + bool "gl" + default y + depends on BR2_PACKAGE_GST1_PLUGINS_BAD_HAS_LIB_OPENGL + +comment "gl needs the gst1-plugins-bad opengl library" + depends on !BR2_PACKAGE_GST1_PLUGINS_BAD_HAS_LIB_OPENGL + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HLS + bool "hls" + select BR2_PACKAGE_NETTLE if !(BR2_PACKAGE_LIBGCRYPT || BR2_PACKAGE_OPENSSL) + help + Fragmented streaming plugins + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_KMS + bool "kmssink" + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm -> libpthread-stubs + select BR2_PACKAGE_LIBDRM + help + KMS video sink + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBMMS + bool "libmms" + depends on BR2_USE_WCHAR # libmms -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libmms -> libglib2 + select BR2_PACKAGE_LIBMMS + help + Microsoft Multi Media Server streaming protocol support + +comment "libmms needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DTLS + bool "dtls" + select BR2_PACKAGE_OPENSSL + help + DTLS plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTML + bool "ttml" + depends on BR2_USE_WCHAR # pango -> glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # pango -> glib2 + depends on BR2_INSTALL_LIBSTDCPP # pango -> freetype + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_PANGO + help + Timed Text Markup Language (TTML) subtitle plugin + +comment "ttml needs a toolchain w/ wchar, threads, C++" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEG2ENC + bool "mpeg2enc" + select BR2_PACKAGE_LIBMPEG2 + help + High-quality MPEG-1/2 video encoder + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MUSEPACK + bool "musepack" + select BR2_PACKAGE_MUSEPACK + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NEON + bool "neon" + select BR2_PACKAGE_NEON + help + lib neon http client src + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENAL + bool "openal" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_PAKCAGE_OPENAL_ARCH_SUPPORTS + select BR2_PACKAGE_OPENAL + +comment "openal plugin needs a toolchain w/ NPTL, C++" + depends on BR2_PAKCAGE_OPENAL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENCV + bool "opencv" + depends on BR2_PACKAGE_OPENCV + # Remove the following opencv modules when gstreamer fixes the + # problem of including the old "cv.h" header + # bug: https://bugzilla.gnome.org/show_bug.cgi?id=725163 + select BR2_PACKAGE_OPENCV_LIB_CALIB3D + select BR2_PACKAGE_OPENCV_LIB_CONTRIB + select BR2_PACKAGE_OPENCV_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV_LIB_FLANN + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + select BR2_PACKAGE_OPENCV_LIB_LEGACY + select BR2_PACKAGE_OPENCV_LIB_ML + select BR2_PACKAGE_OPENCV_LIB_OBJDETECT + select BR2_PACKAGE_OPENCV_LIB_VIDEO + help + GStreamer OpenCV Plugins + +comment "opencv plugin needs OpenCV-2.4" + depends on !BR2_PACKAGE_OPENCV + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264 + bool "openh264" + depends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP # libopenh264 + depends on !BR2_STATIC_LIBS # libopenh264 + depends on BR2_TOOLCHAIN_HAS_THREADS # libopenh264 + select BR2_PACKAGE_LIBOPENH264 + help + OpenH264 based encoding/decoding plugin + +comment "openh264 plugin needs a toolchain w/ C++, dynamic library, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + depends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENJPEG + bool "openjpeg" + select BR2_PACKAGE_OPENJPEG + help + GStreamer OpenJPEG plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS + bool "opus" + select BR2_PACKAGE_OPUS + help + OPUS plugin library + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RSVG + bool "rsvg" + depends on BR2_INSTALL_LIBSTDCPP # librsvg -> pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # librsvg -> pango -> harfbuzz + select BR2_PACKAGE_LIBRSVG + help + RSVG plugin library + +comment "rsvg plugin needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SBC + bool "sbc" + select BR2_PACKAGE_SBC + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SHM + bool "shm" + help + shared memory sink source + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SNDFILE + bool "sndfile" + select BR2_PACKAGE_LIBSNDFILE + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SRTP + bool "srtp" + select BR2_PACKAGE_LIBSRTP + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VCD + bool "vcd" + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VOAACENC + bool "voaacenc" + select BR2_PACKAGE_VO_AACENC + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WAYLAND + bool "wayland" + default y + depends on BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + help + Wayland Video Sink + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBP + bool "webp" + select BR2_PACKAGE_WEBP + help + Webp image format plugin + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTCDSP + bool "webrtcdsp" + # All depends from webrtc-audio-processing + depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING + select BR2_PACKAGE_WEBRTC + help + WebRTC echo-cancellation, gain control and noise suppression + +comment "webrtcdsp needs a toolchain w/ C++, NPTL, gcc >= 4.8" + depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_X265 + bool "x265" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # x265 + select BR2_PACKAGE_X265 + help + x265 encoding plugin + +comment "x265 needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS + +endif diff --git a/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash b/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash new file mode 100644 index 0000000..752d50a --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.12.4.tar.xz.sha256sum +sha256 0c7857be16686d5c1ba6e34bd338664d3d4599d32714a8eca5c8a41a101e2d08 gst-plugins-bad-1.12.4.tar.xz diff --git a/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk b/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk new file mode 100644 index 0000000..b041014 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk @@ -0,0 +1,792 @@ +################################################################################ +# +# gst1-plugins-bad +# +################################################################################ + +GST1_PLUGINS_BAD_VERSION = 1.12.4 +GST1_PLUGINS_BAD_SOURCE = gst-plugins-bad-$(GST1_PLUGINS_BAD_VERSION).tar.xz +GST1_PLUGINS_BAD_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-bad +GST1_PLUGINS_BAD_INSTALL_STAGING = YES +# Additional plugin licenses will be appended to GST1_PLUGINS_BAD_LICENSE and +# GST1_PLUGINS_BAD_LICENSE_FILES if enabled. +GST1_PLUGINS_BAD_LICENSE_FILES = COPYING.LIB +GST1_PLUGINS_BAD_LICENSE := LGPL-2.0+, LGPL-2.1+ + +GST1_PLUGINS_BAD_CONF_OPTS = \ + --disable-examples \ + --disable-valgrind \ + --disable-directsound \ + --disable-direct3d \ + --disable-winks \ + --disable-android_media \ + --disable-apple_media \ + --disable-acm + +# Options which require currently unpackaged libraries +GST1_PLUGINS_BAD_CONF_OPTS += \ + --disable-avc \ + --disable-opensles \ + --disable-uvch264 \ + --disable-msdk \ + --disable-voamrwbenc \ + --disable-bs2b \ + --disable-chromaprint \ + --disable-dc1394 \ + --disable-dts \ + --disable-resindvd \ + --disable-faac \ + --disable-flite \ + --disable-gsm \ + --disable-fluidsynth \ + --disable-kate \ + --disable-ladspa \ + --disable-lv2 \ + --disable-libde265 \ + --disable-modplug \ + --disable-mplex \ + --disable-ofa \ + --disable-openexr \ + --disable-openni2 \ + --disable-teletextdec \ + --disable-wildmidi \ + --disable-smoothstreaming \ + --disable-soundtouch \ + --disable-spc \ + --disable-gme \ + --disable-vdpau \ + --disable-schro \ + --disable-zbar \ + --disable-spandsp \ + --disable-gtk3 \ + --disable-qt + +GST1_PLUGINS_BAD_DEPENDENCIES = gst1-plugins-base gstreamer1 + +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +# RPI has odd locations for several required headers. +GST1_PLUGINS_BAD_CONF_ENV += \ + CPPFLAGS="$(TARGET_CPPFLAGS) \ + -I$(STAGING_DIR)/usr/include/IL \ + -I$(STAGING_DIR)/usr/include/interface/vcos/pthreads \ + -I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux" +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_OPENGL),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-opengl +GST1_PLUGINS_BAD_DEPENDENCIES += libgl libglu +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-opengl +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLES2),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-gles2 +GST1_PLUGINS_BAD_DEPENDENCIES += libgles +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-gles2 +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLX),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-glx +GST1_PLUGINS_BAD_DEPENDENCIES += xproto_glproto xlib_libXrender +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-glx +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-egl +GST1_PLUGINS_BAD_DEPENDENCIES += libegl +GST1_PLUGINS_BAD_CONF_ENV += \ + CPPFLAGS="$(TARGET_CPPFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags egl`" \ + LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs egl`" +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-egl +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_X11),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-x11 +GST1_PLUGINS_BAD_DEPENDENCIES += xlib_libX11 xlib_libXext +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-x11 +endif + +ifneq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_WAYLAND)$(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WAYLAND),) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-wayland +GST1_PLUGINS_BAD_DEPENDENCIES += wayland wayland-protocols +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-wayland +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_DISPMANX),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-dispmanx +GST1_PLUGINS_BAD_DEPENDENCIES += rpi-userland +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-dispmanx +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +GST1_PLUGINS_BAD_DEPENDENCIES += orc +GST1_PLUGINS_BAD_CONF_OPTS += --enable-orc +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +GST1_PLUGINS_BAD_DEPENDENCIES += bluez_utils +GST1_PLUGINS_BAD_CONF_OPTS += --enable-bluez +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-bluez +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ACCURIP),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-accurip +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-accurip +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMDEC),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-adpcmdec +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-adpcmdec +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ADPCMENC),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-adpcmenc +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-adpcmenc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AIFF),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-aiff +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-aiff +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASFMUX),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-asfmux +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-asfmux +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOBUFFERSPLIT),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-audiobuffersplit +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-audiobuffersplit +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOFXBAD),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-audiofxbad +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-audiofxbad +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-audiomixer +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-audiomixer +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXMATRIX),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-audiomixmatrix +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-audiomixmatrix +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COMPOSITOR),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-compositor +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-compositor +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOVISUALIZERS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-audiovisualizers +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-audiovisualizers +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUTOCONVERT),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-autoconvert +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-autoconvert +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BAYER),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-bayer +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-bayer +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CAMERABIN2),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-camerabin2 +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-camerabin2 +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COLOREFFECTS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-coloreffects +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-coloreffects +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DEBUGUTILS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-debugutils +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-debugutils +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVBSUBOVERLAY),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-dvbsuboverlay +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-dvbsuboverlay +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVDSPU),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-dvdspu +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-dvdspu +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FACEOVERLAY),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-faceoverlay +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-faceoverlay +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FESTIVAL),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-festival +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-festival +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FIELDANALYSIS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-fieldanalysis +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-fieldanalysis +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREEVERB),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-freeverb +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-freeverb +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FREI0R),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-frei0r +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-frei0r +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GAUDIEFFECTS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-gaudieffects +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-gaudieffects +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GEOMETRICTRANSFORM),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-geometrictransform +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-geometrictransform +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GDP),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-gdp +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-gdp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ID3TAG),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-id3tag +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-id3tag +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTER),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-inter +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-inter +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_INTERLACE),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-interlace +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-interlace +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVFPARSE),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-ivfparse +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-ivfparse +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IVTC),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-ivtc +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-ivtc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JP2KDECIMATOR),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-jp2kdecimator +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-jp2kdecimator +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_JPEGFORMAT),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-jpegformat +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-jpegformat +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBRFB),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-librfb +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-librfb +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MIDI),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-midi +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-midi +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGDEMUX),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-mpegdemux +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-mpegdemux +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSDEMUX),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-mpegtsdemux +GST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-mpegtsdemux +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGTSMUX),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-mpegtsmux +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-mpegtsmux +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEGPSMUX),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-mpegpsmux +GST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-mpegpsmux +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MXF),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-mxf +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-mxf +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NETSIM),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-netsim +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-netsim +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ONVIF),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-onvif +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-onvif +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PCAPPARSE),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-pcapparse +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-pcapparse +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PNM),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-pnm +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-pnm +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RAWPARSE),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-rawparse +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-rawparse +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REMOVESILENCE),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-removesilence +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-removesilence +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTMP),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-rtmp +GST1_PLUGINS_BAD_DEPENDENCIES += rtmpdump +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-rtmp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDP),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-sdp +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-sdp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SEGMENTCLIP),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-segmentclip +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-segmentclip +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SIREN),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-siren +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-siren +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SMOOTH),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-smooth +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-smooth +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SPEED),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-speed +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-speed +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-subenc +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-subenc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_STEREO),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-stereo +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-stereo +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TIMECODE),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-timecode +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-timecode +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFILTERS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-videofilters +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-videofilters +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOFRAME_AUDIOLEVEL),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-videoframe_audiolevel +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-videoframe_audiolevel +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-iqa +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-iqa +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOPARSERS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-videoparsers +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-videoparsers +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOSIGNAL),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-videosignal +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-videosignal +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VMNC),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-vmnc +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-vmnc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_Y4M),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-y4m +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-y4m +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_YADIF),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-yadif +GST1_PLUGINS_BAD_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-yadif +endif + +# Plugins with dependencies + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_ASSRENDER),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-assrender +GST1_PLUGINS_BAD_DEPENDENCIES += libass +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-assrender +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_BZ2),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-bz2 +GST1_PLUGINS_BAD_DEPENDENCIES += bzip2 +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-bz2 +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CURL),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-curl +GST1_PLUGINS_BAD_DEPENDENCIES += libcurl +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-curl +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DASH),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-dash +GST1_PLUGINS_BAD_DEPENDENCIES += libxml2 +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-dash +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DECKLINK),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-decklink +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-decklink +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DIRECTFB),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-directfb +GST1_PLUGINS_BAD_DEPENDENCIES += directfb +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-directfb +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DVB),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-dvb +GST1_PLUGINS_BAD_DEPENDENCIES += dtv-scan-tables +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-dvb +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FAAD),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-faad +GST1_PLUGINS_BAD_DEPENDENCIES += faad2 +GST1_PLUGINS_BAD_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-faad +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FBDEV),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-fbdev +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-fbdev +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FDK_AAC),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-fdk_aac +GST1_PLUGINS_BAD_DEPENDENCIES += fdk-aac +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-fdk_aac +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GL),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-gl +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-gl +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HLS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-hls + +ifeq ($(BR2_PACKAGE_NETTLE),y) +GST1_PLUGINS_BAD_DEPENDENCIES += nettle +GST1_PLUGINS_BAD_CONF_OPTS += --with-hls-crypto=nettle +else ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +GST1_PLUGINS_BAD_DEPENDENCIES += libgcrypt +GST1_PLUGINS_BAD_CONF_OPTS += --with-hls-crypto=libgcrypt \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr +else +GST1_PLUGINS_BAD_DEPENDENCIES += openssl +GST1_PLUGINS_BAD_CONF_OPTS += --with-hls-crypto=openssl +endif + +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-hls +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_KMS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-kms +GST1_PLUGINS_BAD_DEPENDENCIES += libdrm +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-kms +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBMMS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-libmms +GST1_PLUGINS_BAD_DEPENDENCIES += libmms +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-libmms +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DTLS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-dtls +GST1_PLUGINS_BAD_DEPENDENCIES += openssl +GST1_PLUGINS_BAD_HAS_BSD2C_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-dtls +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTML),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-ttml +GST1_PLUGINS_BAD_DEPENDENCIES += cairo libxml2 pango +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-ttml +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPEG2ENC),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-mpeg2enc +GST1_PLUGINS_BAD_DEPENDENCIES += libmpeg2 +GST1_PLUGINS_BAD_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-mpeg2enc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MUSEPACK),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-musepack +GST1_PLUGINS_BAD_DEPENDENCIES += musepack +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-musepack +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NEON),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-neon +GST1_PLUGINS_BAD_DEPENDENCIES += neon +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-neon +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENAL),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-openal +GST1_PLUGINS_BAD_DEPENDENCIES += openal +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-openal +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENCV),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-opencv +GST1_PLUGINS_BAD_DEPENDENCIES += opencv +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-opencv +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-openh264 +GST1_PLUGINS_BAD_DEPENDENCIES += libopenh264 +GST1_PLUGINS_BAD_HAS_BSD2C_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-openh264 +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENJPEG),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-openjpeg +GST1_PLUGINS_BAD_DEPENDENCIES += openjpeg +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-openjpeg +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-opus +GST1_PLUGINS_BAD_DEPENDENCIES += opus +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-opus +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RSVG),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-rsvg +GST1_PLUGINS_BAD_DEPENDENCIES += librsvg +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-rsvg +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SBC),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-sbc +GST1_PLUGINS_BAD_DEPENDENCIES += sbc +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-sbc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SHM),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-shm +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-shm +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SNDFILE),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-sndfile +GST1_PLUGINS_BAD_DEPENDENCIES += libsndfile +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-sndfile +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SRTP),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-srtp +GST1_PLUGINS_BAD_DEPENDENCIES += libsrtp +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-srtp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VCD),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-vcd +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-vcd +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VOAACENC),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-voaacenc +GST1_PLUGINS_BAD_DEPENDENCIES += vo-aacenc +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-voaacenc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBP),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-webp +GST1_PLUGINS_BAD_DEPENDENCIES += webp +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-webp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTCDSP),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-webrtcdsp +GST1_PLUGINS_BAD_DEPENDENCIES += webrtc-audio-processing +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-webrtcdsp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_X265),y) +GST1_PLUGINS_BAD_CONF_OPTS += --enable-x265 +GST1_PLUGINS_BAD_DEPENDENCIES += x265 +GST1_PLUGINS_BAD_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_BAD_CONF_OPTS += --disable-x265 +endif + +# Add GPL license if GPL licensed plugins enabled. +ifeq ($(GST1_PLUGINS_BAD_HAS_GPL_LICENSE),y) +GST1_PLUGINS_BAD_LICENSE := $(GST1_PLUGINS_BAD_LICENSE), GPL-2.0+ +GST1_PLUGINS_BAD_LICENSE_FILES += COPYING +endif + +# Add BSD license if BSD licensed plugins enabled. +ifeq ($(GST1_PLUGINS_BAD_HAS_BSD2C_LICENSE),y) +GST1_PLUGINS_BAD_LICENSE := $(GST1_PLUGINS_BAD_LICENSE), BSD-2-Clause +endif + +# Add Unknown license if Unknown licensed plugins enabled. +ifeq ($(GST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE),y) +GST1_PLUGINS_BAD_LICENSE := $(GST1_PLUGINS_BAD_LICENSE), UNKNOWN +endif + +# Use the following command to extract license info for plugins. +# # find . -name 'plugin-*.xml' | xargs grep license + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gst1-plugins-base/Config.in b/buildroot/package/gstreamer1/gst1-plugins-base/Config.in new file mode 100644 index 0000000..6b08b68 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-base/Config.in @@ -0,0 +1,165 @@ +menuconfig BR2_PACKAGE_GST1_PLUGINS_BASE + bool "gst1-plugins-base" + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXV if BR2_PACKAGE_XORG7 + help + A basic set of well-supported plug-ins for GStreamer. + + http://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST1_PLUGINS_BASE + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ADDER + bool "adder" + help + Adds multiple streams + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + bool "app" + help + Elements used to communicate with applications + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT + bool "audioconvert (mandatory for audio playback)" + default y + help + Convert audio to different formats + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORATE + bool "audiorate" + help + Adjusts audio frames + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC + bool "audiotestsrc" + help + Creates audio test signals of given frequency and volume + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ENCODING + bool "encoding" + help + various encoding-related elements + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT + bool "videoconvert" + help + Colorspace conversion + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO + bool "gio" + help + GIO elements + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK + bool "playback" + default y + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TYPEFIND + help + various playback elements + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE + bool "audioresample (mandatory for audio playback)" + default y + help + Resamples audio + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_RAWPARSE + bool "rawparse" + help + Parses byte streams into raw frames + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_SUBPARSE + bool "subparse" + help + Subtitle parsing + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TCP + bool "tcp" + help + transfer data over the network via TCP + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TYPEFIND + bool "typefind" + default y + help + default typefind functions + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC + bool "videotestsrc" + help + Creates a test video stream + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE + bool "videorate" + help + Adjusts video frames + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE + bool "videoscale (mandatory for video playback)" + default y + help + Resizes video + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME + bool "volume (mandatory for audio playback)" + default y + help + plugin for controlling audio volume + +comment "plugins with external dependencies" + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA + bool "alsa (mandatory for audio playback)" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_ALSA_LIB_PCM + select BR2_PACKAGE_ALSA_LIB_SEQ + help + ALSA plugin library + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TREMOR + bool "tremor" + select BR2_PACKAGE_TREMOR + help + Vorbis Tremor decoder + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OGG + bool "ogg (*.ogg audio/video)" + select BR2_PACKAGE_LIBOGG + help + ogg stream manipulation (info about ogg: http://xiph.org) + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OPUS + bool "opus" + select BR2_PACKAGE_OPUS + help + Opus codec for speech and audio. + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PANGO + bool "pango font renderer" + depends on BR2_INSTALL_LIBSTDCPP # pango -> freetype + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + select BR2_PACKAGE_PANGO + help + Pango-based text rendering and overlay + +comment "pango plugin needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_THEORA + bool "theora (*.ogg video)" + select BR2_PACKAGE_LIBTHEORA + help + Theora plugin library + +config BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VORBIS + bool "vorbis (*.ogg audio)" + select BR2_PACKAGE_LIBVORBIS + help + Vorbis plugin library + +endif diff --git a/buildroot/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash b/buildroot/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash new file mode 100644 index 0000000..b935f2f --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.12.4.tar.xz.sha256sum +sha256 4c306b03df0212f1b8903784e29bb3493319ba19ebebf13b0c56a17870292282 gst-plugins-base-1.12.4.tar.xz diff --git a/buildroot/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk b/buildroot/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk new file mode 100644 index 0000000..10361ee --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk @@ -0,0 +1,209 @@ +################################################################################ +# +# gst1-plugins-base +# +################################################################################ + +GST1_PLUGINS_BASE_VERSION = 1.12.4 +GST1_PLUGINS_BASE_SOURCE = gst-plugins-base-$(GST1_PLUGINS_BASE_VERSION).tar.xz +GST1_PLUGINS_BASE_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-base +GST1_PLUGINS_BASE_INSTALL_STAGING = YES +GST1_PLUGINS_BASE_LICENSE_FILES = COPYING.LIB +GST1_PLUGINS_BASE_LICENSE = LGPL-2.0+, LGPL-2.1+ + +# gio_unix_2_0 is only used for tests +GST1_PLUGINS_BASE_CONF_OPTS = \ + --disable-examples \ + --disable-valgrind + +# Options which require currently unpackaged libraries +GST1_PLUGINS_BASE_CONF_OPTS += \ + --disable-cdparanoia \ + --disable-libvisual \ + --disable-iso-codes + +GST1_PLUGINS_BASE_DEPENDENCIES = gstreamer1 + +# These plugins are liste in the order from ./configure --help + +ifeq ($(BR2_PACKAGE_ORC),y) +GST1_PLUGINS_BASE_DEPENDENCIES += orc +GST1_PLUGINS_BASE_CONF_OPTS += --enable-orc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ADDER),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-adder +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-adder +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-app +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-app +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-audioconvert +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-audioconvert +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORATE),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-audiorate +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-audiorate +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-audiotestsrc +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-audiotestsrc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ENCODING),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-encoding +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-encoding +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-videoconvert +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-videoconvert +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-gio +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-gio +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-playback +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-playback +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-audioresample +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-audioresample +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_RAWPARSE),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-rawparse +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-rawparse +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_SUBPARSE),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-subparse +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-subparse +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TCP),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-tcp +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-tcp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TYPEFIND),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-typefind +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-typefind +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-videotestsrc +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-videotestsrc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEORATE),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-videorate +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-videorate +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-videoscale +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-videoscale +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-volume +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-volume +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +GST1_PLUGINS_BASE_DEPENDENCIES += zlib +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +GST1_PLUGINS_BASE_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXv +GST1_PLUGINS_BASE_CONF_OPTS += \ + --enable-x \ + --enable-xshm \ + --enable-xvideo +else +GST1_PLUGINS_BASE_CONF_OPTS += \ + --disable-x \ + --disable-xshm \ + --disable-xvideo +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA),y) +GST1_PLUGINS_BASE_DEPENDENCIES += alsa-lib +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TREMOR),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-ivorbis +GST1_PLUGINS_BASE_DEPENDENCIES += tremor +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-ivorbis +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OPUS),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-opus +GST1_PLUGINS_BASE_DEPENDENCIES += opus +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-opus +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OGG),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-ogg +GST1_PLUGINS_BASE_DEPENDENCIES += libogg +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-ogg +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PANGO),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-pango +GST1_PLUGINS_BASE_DEPENDENCIES += pango +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-pango +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_THEORA),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-theora +GST1_PLUGINS_BASE_DEPENDENCIES += libtheora +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-theora +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VORBIS),y) +GST1_PLUGINS_BASE_CONF_OPTS += --enable-vorbis +GST1_PLUGINS_BASE_DEPENDENCIES += libvorbis +else +GST1_PLUGINS_BASE_CONF_OPTS += --disable-vorbis +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gst1-plugins-good/Config.in b/buildroot/package/gstreamer1/gst1-plugins-good/Config.in new file mode 100644 index 0000000..097f32d --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-good/Config.in @@ -0,0 +1,378 @@ +menuconfig BR2_PACKAGE_GST1_PLUGINS_GOOD + bool "gst1-plugins-good" + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXV if BR2_PACKAGE_XORG7 + help + A set of well-supported plug-ins for GStreamer under the + preferred license. + + http://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST1_PLUGINS_GOOD + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_JPEG + bool "jpeg (JPEG support)" + select BR2_PACKAGE_JPEG + help + JPeg plugin library + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PNG + bool "png (PNG support)" + select BR2_PACKAGE_LIBPNG + help + PNG plugin library + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_BZ2 + bool "bz2 support" + depends on BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA + select BR2_PACKAGE_BZIP2 + help + Enable bz2 support for the following plugins: + matroska + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_ZLIB + bool "zlib support" + depends on BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4 || BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ID3DEMUX || BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA + select BR2_PACKAGE_ZLIB + help + Enable zlib support for the following plugins: + id3demux, isomp4, matroska + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ALPHA + bool "alpha" + help + adds an alpha channel to video - constant or via chroma-keying + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_APETAG + bool "apetag" + help + APEv1/2 tag reader + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX + bool "audiofx" + help + Audio effects plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS + bool "audioparsers" + help + Parsers for various audio formats + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUPARSE + bool "auparse" + help + parses au streams + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT + bool "autodetect" + help + Plugin contains auto-detection plugins for video/audio in- + and outputs + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AVI + bool "avi (*.avi video)" + default y + help + AVI stream handling + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CUTTER + bool "cutter" + help + Audio Cutter to split audio into non-silent bits + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEBUGUTILS + bool "debugutils" + help + elements for testing and debugging + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE + bool "deinterlace" + help + Deinterlacer + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DTMF + bool "dtmf" + help + DTMF plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EFFECTV + bool "effectv" + help + effect plugins from the effectv project + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EQUALIZER + bool "equalizer" + help + GStreamer audio equalizers + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLV + bool "flv" + help + FLV muxing and demuxing plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLX + bool "flx" + help + FLC/FLI/FLX video decoder + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM + bool "goom" + help + GOOM visualization filter + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM2K1 + bool "goom2k1" + help + GOOM 2k1 visualization filter + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ICYDEMUX + bool "icydemux" + help + Demux ICY tags from a stream + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ID3DEMUX + bool "id3demux (*.mp3 audio)" + help + Demux ID3v1 and ID3v2 tags from a file + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE + bool "imagefreeze" + help + Still frame stream generator + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_INTERLEAVE + bool "interleave" + help + Audio interleaver/deinterleaver + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4 + bool "isomp4" + default y + help + ISO base media file format support (mp4, 3gpp, qt, mj2) + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAW + bool "law" + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LEVEL + bool "level" + help + Audio level plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA + bool "matroska" + help + Matroska and WebM stream handling + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MONOSCOPE + bool "monoscope" + help + Monoscope visualization + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIFILE + bool "multifile" + help + Reads/Writes buffers from/to sequentially named files + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIPART + bool "multipart" + help + multipart stream manipulation + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_REPLAYGAIN + bool "replaygain" + help + ReplayGain volume normalization + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP + bool "rtp" + help + Real-time protocol plugins + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER + bool "rtpmanager" + help + RTP session management plugin library + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP + bool "rtsp" + help + transfer data via RTSP + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHAPEWIPE + bool "shapewipe" + help + Shape Wipe transition filter + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE + bool "smpte" + help + Apply the standard SMPTE transitions on video images + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPECTRUM + bool "spectrum" + help + Run an FFT on the audio signal, output spectrum data + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP + bool "udp" + help + transfer data via UDP + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX + bool "videobox" + help + resizes a video by adding borders or cropping + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP + bool "videocrop" + help + Crops video into a user-defined region + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOFILTER + bool "videofilter" + help + Video filters plugin + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOMIXER + bool "videomixer" + help + Video mixer + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVENC + bool "wavenc" + help + Encode raw audio into WAV + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPARSE + bool "wavparse (*.wav audio)" + default y + help + Parse a .wav file into raw audio + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M + bool "y4m" + help + Encodes a YUV frame into the yuv4mpeg format (mjpegtools) + +comment "plugins with external dependencies" + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS + bool "ossaudio (OSS audio)" + help + OSS (Open Sound System) support for GStreamer + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS4 + bool "oss4 (Open Sound System 4)" + help + Open Sound System (OSS) version 4 support for GStreamer + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2 + bool "v4l2" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # multi planar api + help + elements for Video 4 Linux + +comment "v4l2 needs a toolchain w/ headers >= 3.0" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE + bool "v4l2-probe (m2m)" + depends on BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2 + help + Enables the V4L2 probe at plugin load time. This enables + support for v4l2 transform devices, such as m2m + devices. These plugins are registered as v4l2videoNconvert + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CAIRO + bool "cairo" + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + help + Cairo-based elements + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLAC + bool "flac (libFLAC)" + depends on BR2_USE_WCHAR # flac + select BR2_PACKAGE_FLAC + help + The FLAC Lossless compressor Codec + +comment "flac needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GDKPIXBUF + bool "gdkpixbuf" + depends on BR2_USE_WCHAR # gdk-pixbuf -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # gdk-pixbuf -> libglib2 + select BR2_PACKAGE_GDK_PIXBUF + help + GdkPixbuf-based image decoder, overlay and sink + +comment "gdkpixbuf needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE + bool "pulseaudio" + depends on BR2_TOOLCHAIN_HAS_THREADS # pulseaudio + depends on BR2_USE_MMU # pulseaudio + depends on !BR2_STATIC_LIBS # pulseaudio + select BR2_PACKAGE_PULSEAUDIO + help + PulseAudio plugin library + +comment "pulseaudio support needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC + bool "souphttpsrc (http client)" + depends on BR2_USE_WCHAR # libsoup -> glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libsoup -> glib2 + select BR2_PACKAGE_LIBSOUP + help + libsoup HTTP client src/sink + +comment "souphttpsrc needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPEEX + bool "speex" + select BR2_PACKAGE_SPEEX + help + Speex plugin library + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TAGLIB + bool "taglib" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + select BR2_PACKAGE_TAGLIB + help + Taglib tagging plugin library + +comment "taglib needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX + bool "vpx (webm)" + depends on !BR2_bfin # libvpx + depends on BR2_TOOLCHAIN_HAS_THREADS # libvpx + select BR2_PACKAGE_LIBVPX + help + VP8 plugin + +comment "libvpx needs a toolchain w/ threads" + depends on !BR2_bfin + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPACK + bool "wavpack (*.wv audio)" + select BR2_PACKAGE_WAVPACK + help + Wavpack lossless/lossy audio format handling + +endif diff --git a/buildroot/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash b/buildroot/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash new file mode 100644 index 0000000..c6f6138 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.12.4.tar.xz.sha256sum +sha256 649f49bec60892d47ee6731b92266974c723554da1c6649f21296097715eb957 gst-plugins-good-1.12.4.tar.xz diff --git a/buildroot/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk b/buildroot/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk new file mode 100644 index 0000000..53e2341 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk @@ -0,0 +1,430 @@ +################################################################################ +# +# gst1-plugins-good +# +################################################################################ + +GST1_PLUGINS_GOOD_VERSION = 1.12.4 +GST1_PLUGINS_GOOD_SOURCE = gst-plugins-good-$(GST1_PLUGINS_GOOD_VERSION).tar.xz +GST1_PLUGINS_GOOD_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-good +GST1_PLUGINS_GOOD_LICENSE_FILES = COPYING +GST1_PLUGINS_GOOD_LICENSE = LGPL-2.1+ + +GST1_PLUGINS_GOOD_CONF_OPTS = \ + --disable-valgrind \ + --disable-examples \ + --disable-directsound \ + --disable-waveform \ + --disable-sunaudio \ + --disable-osx_audio \ + --disable-osx_video \ + --disable-aalib \ + --disable-aalibtest \ + --disable-libcaca + +# Options which require currently unpackaged libraries +GST1_PLUGINS_GOOD_CONF_OPTS += \ + --disable-jack \ + --disable-libdv \ + --disable-dv1394 \ + --disable-shout2 + +GST1_PLUGINS_GOOD_DEPENDENCIES = gstreamer1 gst1-plugins-base + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --with-libv4l2 +GST1_PLUGINS_GOOD_DEPENDENCIES += libv4l +else +GST1_PLUGINS_GOOD_CONF_OPTS += --without-libv4l2 +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-orc +GST1_PLUGINS_GOOD_DEPENDENCIES += orc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ALPHA),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-alpha +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-alpha +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_APETAG),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-apetag +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-apetag +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOFX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-audiofx +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-audiofx +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-audioparsers +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-audioparsers +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUPARSE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-auparse +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-auparse +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-autodetect +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-autodetect +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AVI),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-avi +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-avi +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CUTTER),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-cutter +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-cutter +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEBUGUTILS),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-debugutils +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-debugutils +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEINTERLACE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-deinterlace +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-deinterlace +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DTMF),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-dtmf +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-dtmf +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EFFECTV),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-effectv +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-effectv +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_EQUALIZER),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-equalizer +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-equalizer +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLV),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-flv +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-flv +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-flx +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-flx +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-goom +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-goom +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GOOM2K1),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-goom2k1 +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-goom2k1 +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ICYDEMUX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-icydemux +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-icydemux +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ID3DEMUX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-id3demux +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-id3demux +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-imagefreeze +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-imagefreeze +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_INTERLEAVE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-interleave +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-interleave +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-isomp4 +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-isomp4 +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LAW),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-law +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-law +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_LEVEL),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-level +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-level +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-matroska +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-matroska +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MONOSCOPE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-monoscope +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-monoscope +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIFILE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-multifile +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-multifile +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MULTIPART),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-multipart +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-multipart +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_REPLAYGAIN),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-replaygain +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-replaygain +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-rtp +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-rtp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-rtpmanager +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-rtpmanager +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-rtsp +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-rtsp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SHAPEWIPE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-shapewipe +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-shapewipe +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-smpte +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-smpte +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPECTRUM),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-spectrum +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-spectrum +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-udp +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-udp +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-videobox +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-videobox +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-videocrop +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-videocrop +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOFILTER),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-videofilter +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-videofilter +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOMIXER),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-videomixer +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-videomixer +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVENC),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-wavenc +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-wavenc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPARSE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-wavparse +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-wavparse +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-y4m +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-y4m +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-oss +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-oss +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_OSS4),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-oss4 +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-oss4 +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-gst_v4l2 +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-gst_v4l2 +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-v4l2-probe +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-v4l2-probe +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +GST1_PLUGINS_GOOD_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXv +GST1_PLUGINS_GOOD_CONF_OPTS += \ + --enable-x \ + $(if $(BR2_PACKAGE_XLIB_LIBXFIXES),xlib_libXfixes) \ + $(if $(BR2_PACKAGE_XLIB_LIBXDAMAGE),xlib_libXdamage) +else +GST1_PLUGINS_GOOD_CONF_OPTS += \ + --disable-x +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_CAIRO),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-cairo +GST1_PLUGINS_GOOD_DEPENDENCIES += cairo +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-cairo +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLAC),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-flac +GST1_PLUGINS_GOOD_DEPENDENCIES += flac +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-flac +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_GDKPIXBUF),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-gdk_pixbuf +GST1_PLUGINS_GOOD_DEPENDENCIES += gdk-pixbuf +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-gdk_pixbuf +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_JPEG),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-jpeg +GST1_PLUGINS_GOOD_DEPENDENCIES += jpeg +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PNG),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-libpng +GST1_PLUGINS_GOOD_DEPENDENCIES += libpng +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-libpng +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-pulse +GST1_PLUGINS_GOOD_DEPENDENCIES += pulseaudio +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-pulse +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SOUPHTTPSRC),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-soup +GST1_PLUGINS_GOOD_DEPENDENCIES += libsoup +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-soup +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SPEEX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-speex +GST1_PLUGINS_GOOD_DEPENDENCIES += speex +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-speex +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_TAGLIB),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-taglib +GST1_PLUGINS_GOOD_DEPENDENCIES += taglib +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-taglib +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-vpx +GST1_PLUGINS_GOOD_DEPENDENCIES += libvpx +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-vpx +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPACK),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-wavpack +GST1_PLUGINS_GOOD_DEPENDENCIES += wavpack +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-wavpack +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_ZLIB),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-zlib +GST1_PLUGINS_GOOD_DEPENDENCIES += zlib +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_GOOD_BZ2),y) +GST1_PLUGINS_GOOD_CONF_OPTS += --enable-bz2 +GST1_PLUGINS_GOOD_DEPENDENCIES += bzip2 +else +GST1_PLUGINS_GOOD_CONF_OPTS += --disable-bz2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gst1-plugins-ugly/Config.in b/buildroot/package/gstreamer1/gst1-plugins-ugly/Config.in new file mode 100644 index 0000000..c997411 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-ugly/Config.in @@ -0,0 +1,73 @@ +menuconfig BR2_PACKAGE_GST1_PLUGINS_UGLY + bool "gst1-plugins-ugly" + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + A set of well-supported plug-ins for GStreamer, but might pose + problems for distributors. + + http://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GST1_PLUGINS_UGLY + +comment "dependency-less plugins" + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_ASFDEMUX + bool "asfdemux" + help + Demuxes and muxes audio and video in Microsofts ASF format + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDLPCMDEC + bool "dvdlpcmdec" + help + Decode DVD LPCM frames into standard PCM + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDSUB + bool "dvdsub" + help + DVD subtitle parser and decoder + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_XINGMUX + bool "xingmux" + help + Add XING tags to mpeg audio files + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_REALMEDIA + bool "realmedia" + help + RealMedia support plugins + +comment "plugins with external dependencies (there may be more available)" + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDREAD + bool "dvdread" + select BR2_PACKAGE_LIBDVDREAD + help + Access a DVD with dvdread + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_LAME + bool "lame (*.mp3 audio encoder)" + select BR2_PACKAGE_LAME + help + Encode MP3s with LAME + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPG123 + bool "mpg123 (*.mp3 audio)" + select BR2_PACKAGE_MPG123 + help + mp3 decoding based on the mpg123 library + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPEG2DEC + bool "mpeg2dec" + select BR2_PACKAGE_LIBMPEG2 + help + LibMpeg2 decoder + +config BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_X264 + bool "x264" + select BR2_PACKAGE_X264 + help + x264 encoder + +# Note: to get descriptions use the following. +# # find . -name 'plugin-*.xml' | xargs grep -m 1 description +endif diff --git a/buildroot/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash b/buildroot/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash new file mode 100644 index 0000000..d058153 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.12.4.tar.xz.sha256sum +sha256 1c165b8d888ed350acd8e6ac9f6fe06508e6fcc0a3afc6ccc9fbeb30df9be522 gst-plugins-ugly-1.12.4.tar.xz diff --git a/buildroot/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk b/buildroot/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk new file mode 100644 index 0000000..af02a56 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk @@ -0,0 +1,111 @@ +################################################################################ +# +# gst1-plugins-ugly +# +################################################################################ + +GST1_PLUGINS_UGLY_VERSION = 1.12.4 +GST1_PLUGINS_UGLY_SOURCE = gst-plugins-ugly-$(GST1_PLUGINS_UGLY_VERSION).tar.xz +GST1_PLUGINS_UGLY_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-ugly +GST1_PLUGINS_UGLY_LICENSE_FILES = COPYING +# GPL licensed plugins will append to GST1_PLUGINS_UGLY_LICENSE if enabled. +GST1_PLUGINS_UGLY_LICENSE = LGPL-2.1+ + +GST1_PLUGINS_UGLY_CONF_OPTS = --disable-examples --disable-valgrind + +GST1_PLUGINS_UGLY_CONF_OPTS += \ + --disable-a52dec \ + --disable-amrnb \ + --disable-amrwb \ + --disable-cdio \ + --disable-sidplay \ + --disable-twolame + +GST1_PLUGINS_UGLY_DEPENDENCIES = gstreamer1 gst1-plugins-base + +ifeq ($(BR2_PACKAGE_ORC),y) +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-orc +GST1_PLUGINS_UGLY_DEPENDENCIES += orc +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_ASFDEMUX),y) +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-asfdemux +else +GST1_PLUGINS_UGLY_CONF_OPTS += --disable-asfdemux +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDLPCMDEC),y) +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-dvdlpcmdec +else +GST1_PLUGINS_UGLY_CONF_OPTS += --disable-dvdlpcmdec +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDSUB),y) +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-dvdsub +else +GST1_PLUGINS_UGLY_CONF_OPTS += --disable-dvdsub +endif + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGL1_PLUGIN_XINGMUX),y) +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-xingmux +else +GST1_PLUGINS_UGLY_CONF_OPTS += --disable-xingmux +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_REALMEDIA),y) +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-realmedia +else +GST1_PLUGINS_UGLY_CONF_OPTS += --disable-realmedia +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_DVDREAD),y) +# configure does not use pkg-config to detect libdvdread +ifeq ($(BR2_PACKAGE_LIBDVDCSS)$(BR2_STATIC_LIBS),yy) +GST1_PLUGINS_UGLY_CONF_ENV += LIBS="-ldvdcss" +endif +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-dvdread +GST1_PLUGINS_UGLY_DEPENDENCIES += libdvdread +GST1_PLUGINS_UGLY_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_UGLY_CONF_OPTS += --disable-dvdread +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_LAME),y) +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-lame +GST1_PLUGINS_UGLY_DEPENDENCIES += lame +else +GST1_PLUGINS_UGLY_CONF_OPTS += --disable-lame +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPG123),y) +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-mpg123 +GST1_PLUGINS_UGLY_DEPENDENCIES += mpg123 +else +GST1_PLUGINS_UGLY_CONF_OPTS += --disable-mpg123 +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPEG2DEC),y) +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-mpeg2dec +GST1_PLUGINS_UGLY_DEPENDENCIES += libmpeg2 +GST1_PLUGINS_UGLY_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_UGLY_CONF_OPTS += --disable-mpeg2dec +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_X264),y) +GST1_PLUGINS_UGLY_CONF_OPTS += --enable-x264 +GST1_PLUGINS_UGLY_DEPENDENCIES += x264 +GST1_PLUGINS_UGLY_HAS_GPL_LICENSE = y +else +GST1_PLUGINS_UGLY_CONF_OPTS += --disable-x264 +endif + +# Add GPL license if GPL plugins enabled. +ifeq ($(GST1_PLUGINS_UGLY_HAS_GPL_LICENSE),y) +GST1_PLUGINS_UGLY_LICENSE += GPL-2.0 +endif + +# Use the following command to extract license info for plugins. +# # find . -name 'plugin-*.xml' | xargs grep license + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gst1-rtsp-server/Config.in b/buildroot/package/gstreamer1/gst1-rtsp-server/Config.in new file mode 100644 index 0000000..5869952 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-rtsp-server/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_GST1_RTSP_SERVER + bool "gst1-rtsp-server" + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP # runtime + select BR2_PACKAGE_GST1_PLUGINS_GOOD + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP # runtime + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER # runtime + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP # runtime + help + RTSP server library based on GStreamer. + + http://gstreamer.freedesktop.org/ diff --git a/buildroot/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash b/buildroot/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash new file mode 100644 index 0000000..95c8eef --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.12.4.tar.xz.sha256sum +sha256 7660112ebd59838f1054796b38109dcbe32f0a040e3a252a68a81055aeaa56a9 gst-rtsp-server-1.12.4.tar.xz diff --git a/buildroot/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk b/buildroot/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk new file mode 100644 index 0000000..d6a82ee --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# gst1-rtsp-server +# +################################################################################ + +GST1_RTSP_SERVER_VERSION = 1.12.4 +GST1_RTSP_SERVER_SOURCE = gst-rtsp-server-$(GST1_RTSP_SERVER_VERSION).tar.xz +GST1_RTSP_SERVER_SITE = http://gstreamer.freedesktop.org/src/gst-rtsp-server +GST1_RTSP_SERVER_LICENSE = LGPL-2.0+ +GST1_RTSP_SERVER_LICENSE_FILES = COPYING COPYING.LIB +GST1_RTSP_SERVER_INSTALL_STAGING = YES +GST1_RTSP_SERVER_DEPENDENCIES = \ + host-pkgconf \ + gstreamer1 \ + gst1-plugins-base \ + gst1-plugins-good + +ifeq ($(BR2_PACKAGE_LIBCGROUP),y) +GST1_RTSP_SERVER_DEPENDENCIES += libcgroup +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD),y) +GST1_RTSP_SERVER_DEPENDENCIES += gst1-plugins-bad +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gst1-vaapi/Config.in b/buildroot/package/gstreamer1/gst1-vaapi/Config.in new file mode 100644 index 0000000..91bd4f8 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-vaapi/Config.in @@ -0,0 +1,50 @@ +config BR2_PACKAGE_GST1_VAAPI + bool "gst1-vaapi" + depends on !BR2_STATIC_LIBS # dlopen(), libva + depends on BR2_TOOLCHAIN_HAS_THREADS # libva, libdrm + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_LIBVA + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BAD # gstreamer-codecparsers + help + gstreamer-vaapi consists in a collection of VA-API based + plugins for GStreamer and helper libraries. + + vaapidec is used to decode JPEG, MPEG-2, MPEG-4:2, + H.264 AVC, H.264 MVC, VP8, VC-1, WMV3, HEVC videos to VA + surfaces, depending on the actual value of and the + underlying hardware capabilities. This plugin is also able + to implicitly download the decoded surface to raw YUV + buffers. + + vaapienc is used to encode into MPEG-2, H.264 AVC, + H.264 MVC, JPEG, VP8, HEVC videos, depending on the actual + value of (mpeg2, h264, etc.) and the hardware + capabilities. By default, raw format bitstreams are + generated, so the result may be piped to a muxer, e.g. qtmux + for MP4 containers. + + vaapipostproc is used to filter VA surfaces, for + e.g. scaling, deinterlacing (bob, motion-adaptive, + motion-compensated), noise reduction or sharpening. This + plugin is also used to upload raw YUV pixels into VA + surfaces. + + vaapisink is used to render VA surfaces to an X11 or Wayland + display. This plugin also features a "headless" mode (DRM) + more suited to remote transcode scenarios, with faster + throughput. + + https://cgit.freedesktop.org/gstreamer/gstreamer-vaapi + +if BR2_PACKAGE_GST1_VAAPI + +config BR2_PACKAGE_GST1_VAAPI_ENCODERS + bool "enable encoders" + +endif + +comment "gst1-vaapi needs udev /dev management and a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/gstreamer1/gst1-vaapi/gst1-vaapi.hash b/buildroot/package/gstreamer1/gst1-vaapi/gst1-vaapi.hash new file mode 100644 index 0000000..3eebc0a --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-vaapi/gst1-vaapi.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/gstreamer-vaapi/gstreamer-vaapi-1.12.4.tar.xz.sha256sum +sha256 1c2d77242e1f30c4d1394636cae9f6877228a017960fca96881e0080d8b6e9c9 gstreamer-vaapi-1.12.4.tar.xz diff --git a/buildroot/package/gstreamer1/gst1-vaapi/gst1-vaapi.mk b/buildroot/package/gstreamer1/gst1-vaapi/gst1-vaapi.mk new file mode 100644 index 0000000..6b63741 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-vaapi/gst1-vaapi.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# gst1-vaapi +# +################################################################################ + +GST1_VAAPI_VERSION = 1.12.4 +GST1_VAAPI_SITE = https://gstreamer.freedesktop.org/src/gstreamer-vaapi +GST1_VAAPI_SOURCE = gstreamer-vaapi-$(GST1_VAAPI_VERSION).tar.xz +GST1_VAAPI_LICENSE = LGPL-2.1+ +GST1_VAAPI_LICENSE_FILES = COPYING.LIB + +GST1_VAAPI_DEPENDENCIES += \ + gstreamer1 \ + gst1-plugins-base \ + gst1-plugins-bad \ + libva \ + libdrm + +GST1_VAAPI_CONF_OPTS += \ + --disable-x11 \ + --disable-glx \ + --disable-wayland \ + --disable-egl \ + --disable-gtk-doc-html + +ifeq ($(BR2_PACKAGE_GST1_VAAPI_ENCODERS),y) +GST1_VAAPI_CONF_OPTS += --enable-encoders +else +GST1_VAAPI_CONF_OPTS += --disable-encoders +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gst1-validate/Config.in b/buildroot/package/gstreamer1/gst1-validate/Config.in new file mode 100644 index 0000000..2022d38 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-validate/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_GST1_VALIDATE + bool "gst1-validate" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_JSON_GLIB + select BR2_PACKAGE_PYTHON_PYEXPAT + # cairo is autodetected but needs PNG support + select BR2_PACKAGE_CAIRO_PNG if BR2_PACKAGE_CAIRO + help + GstValidate is a tool that allows GStreamer developers to + check that the GstElements they write behave the way they + are supposed to. + + http://gstreamer.freedesktop.org/ + +comment "gst1-validate depends on python" + depends on !BR2_PACKAGE_PYTHON diff --git a/buildroot/package/gstreamer1/gst1-validate/gst1-validate.hash b/buildroot/package/gstreamer1/gst1-validate/gst1-validate.hash new file mode 100644 index 0000000..50bddd0 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-validate/gst1-validate.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/gst-validate/gst-validate-1.12.4.tar.xz.sha256sum +sha256 f9da9dfe6e5d6f5ba3b38c5752b42d3f927715904942b405c2924d3cb77afba1 gst-validate-1.12.4.tar.xz diff --git a/buildroot/package/gstreamer1/gst1-validate/gst1-validate.mk b/buildroot/package/gstreamer1/gst1-validate/gst1-validate.mk new file mode 100644 index 0000000..d276490 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-validate/gst1-validate.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# gst1-validate +# +################################################################################ + +GST1_VALIDATE_VERSION = 1.12.4 +GST1_VALIDATE_SOURCE = gst-validate-$(GST1_VALIDATE_VERSION).tar.xz +GST1_VALIDATE_SITE = https://gstreamer.freedesktop.org/src/gst-validate +GST1_VALIDATE_LICENSE = LGPL-2.1+ +GST1_VALIDATE_LICENSE_FILES = COPYING + +GST1_VALIDATE_DEPENDENCIES = \ + gstreamer1 \ + gst1-plugins-base \ + json-glib \ + host-python \ + python \ + $(if $(BR2_PACKAGE_CAIRO),cairo) + +GST1_VALIDATE_CONF_OPTS += --disable-sphinx-doc + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gstreamer1-mm/Config.in b/buildroot/package/gstreamer1/gstreamer1-mm/Config.in new file mode 100644 index 0000000..471c083 --- /dev/null +++ b/buildroot/package/gstreamer1/gstreamer1-mm/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_GSTREAMER1_MM + bool "gstreamer1-mm" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # glibmm + depends on BR2_INSTALL_LIBSTDCPP # glibmm + depends on BR2_USE_WCHAR # glibmm -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # glibmm -> libglib2 + select BR2_PACKAGE_GLIBMM + select BR2_PACKAGE_GSTREAMER1_CHECK + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + gstreamermm provides C++ bindings for the GStreamer streaming + multimedia library (http://gstreamer.freedesktop.org). With + gstreamermm it is possible to develop applications that work + with multimedia in C++. + + gstreamermm is developed over glibmm, libsigc++ and libxml++ + and the functionalities they provide. This means that, among + other things, referencing and unreferencing of GObjects is + handled automatically via glibmm's automatic pointer class, + Glib::RefPtr, and libsigc++'s slots are used for callbacks and + signals. + + https://gstreamer.freedesktop.org/bindings/cplusplus.html + +comment "gstreamer1-mm needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.hash b/buildroot/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.hash new file mode 100644 index 0000000..425cf05 --- /dev/null +++ b/buildroot/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.hash @@ -0,0 +1,6 @@ +# From http://ftp.gnome.org/pub/gnome/sources/gstreamermm/1.10/gstreamermm-1.10.0.sha256sum +sha256 be58fe9ef7d7e392568ec85e80a84f4730adbf91fb0355ff7d7c616675ea8d60 gstreamermm-1.10.0.tar.xz + +# Locally computed +sha256 7c78a8d7fc6781d51402d5a6036bedda9cffb0e5d28757e25d54d6eacbb1949f COPYING +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.examples diff --git a/buildroot/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.mk b/buildroot/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.mk new file mode 100644 index 0000000..539c9df --- /dev/null +++ b/buildroot/package/gstreamer1/gstreamer1-mm/gstreamer1-mm.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# gstreamer1-mm +# +################################################################################ + +GSTREAMER1_MM_VERSION_MAJOR = 1.10 +GSTREAMER1_MM_VERSION = $(GSTREAMER1_MM_VERSION_MAJOR).0 +GSTREAMER1_MM_SITE = http://ftp.gnome.org/pub/gnome/sources/gstreamermm/$(GSTREAMER1_MM_VERSION_MAJOR) +GSTREAMER1_MM_SOURCE = gstreamermm-$(GSTREAMER1_MM_VERSION).tar.xz +GSTREAMER1_MM_LICENSE = LGPL-2.1+ (library), GPL-2.0 (examples) +GSTREAMER1_MM_LICENSE_FILES = COPYING COPYING.examples +GSTREAMER1_MM_INSTALL_STAGING = YES +GSTREAMER1_MM_DEPENDENCIES += \ + glibmm \ + gstreamer1 \ + gst1-plugins-base + +GSTREAMER1_MM_CONF_OPTS += \ + --disable-gl \ + --enable-unittests=no \ + --disable-deprecated-api + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gstreamer1.mk b/buildroot/package/gstreamer1/gstreamer1.mk new file mode 100644 index 0000000..8530ff0 --- /dev/null +++ b/buildroot/package/gstreamer1/gstreamer1.mk @@ -0,0 +1 @@ +include $(sort $(wildcard package/gstreamer1/*/*.mk)) diff --git a/buildroot/package/gstreamer1/gstreamer1/Config.in b/buildroot/package/gstreamer1/gstreamer1/Config.in new file mode 100644 index 0000000..e9f1bd0 --- /dev/null +++ b/buildroot/package/gstreamer1/gstreamer1/Config.in @@ -0,0 +1,60 @@ +comment "gstreamer 1.x needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GSTREAMER1 + bool "gstreamer 1.x" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + GStreamer is an open source multimedia framework. This 1.x + version of Gstreamer is incompatible with Gstreamer 0.10.x. + + http://gstreamer.freedesktop.org/ + +if BR2_PACKAGE_GSTREAMER1 + +config BR2_PACKAGE_GSTREAMER1_CHECK + bool "enable unit test libraries" + help + Enable building unit test libraries for gstreamer. + +config BR2_PACKAGE_GSTREAMER1_PARSE + bool "enable command-line parser" + default y + help + Enable command line parser for gstreamer. This may increase + the CPU overhead by a small amount. + +config BR2_PACKAGE_GSTREAMER1_TRACE + bool "enable tracing subsystem" + default y + help + Enable the tracing subsystem within gstreamer. This may + increase CPU overhead by a small amount. + +config BR2_PACKAGE_GSTREAMER1_GST_DEBUG + bool "enable gst-debug trace support" + default y + help + Enable support for the gst-debug tracing functionality in + gstreamer. This has limited CPU overhead, but does increase + the rootfs size somewhat. + +config BR2_PACKAGE_GSTREAMER1_PLUGIN_REGISTRY + bool "enable plugin registry" + default y + help + Enable support for the GStreamer plugin registry. This may + increase the launch-time for a GStreamer application. + +config BR2_PACKAGE_GSTREAMER1_INSTALL_TOOLS + bool "install gst-launch & gst-inspect" + default y + help + Install the gst-launch and gst-inspect tools. This will take + up additional space on the target. + +endif diff --git a/buildroot/package/gstreamer1/gstreamer1/gstreamer1.hash b/buildroot/package/gstreamer1/gstreamer1/gstreamer1.hash new file mode 100644 index 0000000..f8af907 --- /dev/null +++ b/buildroot/package/gstreamer1/gstreamer1/gstreamer1.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.12.4.tar.xz.sha256sum +sha256 5a8704aa4c2eeb04da192c4a9942f94f860ac1a585de90d9f914bac26a970674 gstreamer-1.12.4.tar.xz diff --git a/buildroot/package/gstreamer1/gstreamer1/gstreamer1.mk b/buildroot/package/gstreamer1/gstreamer1/gstreamer1.mk new file mode 100644 index 0000000..ea9f29a --- /dev/null +++ b/buildroot/package/gstreamer1/gstreamer1/gstreamer1.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# gstreamer1 +# +################################################################################ + +GSTREAMER1_VERSION = 1.12.4 +GSTREAMER1_SOURCE = gstreamer-$(GSTREAMER1_VERSION).tar.xz +GSTREAMER1_SITE = https://gstreamer.freedesktop.org/src/gstreamer +GSTREAMER1_INSTALL_STAGING = YES +GSTREAMER1_LICENSE_FILES = COPYING +GSTREAMER1_LICENSE = LGPL-2.0+, LGPL-2.1+ + +GSTREAMER1_CONF_OPTS = \ + --disable-examples \ + --disable-tests \ + --disable-failing-tests \ + --disable-valgrind \ + --disable-benchmarks \ + $(if $(BR2_PACKAGE_GSTREAMER1_CHECK),,--disable-check) \ + $(if $(BR2_PACKAGE_GSTREAMER1_TRACE),,--disable-trace) \ + $(if $(BR2_PACKAGE_GSTREAMER1_PARSE),,--disable-parse) \ + $(if $(BR2_PACKAGE_GSTREAMER1_GST_DEBUG),,--disable-gst-debug) \ + $(if $(BR2_PACKAGE_GSTREAMER1_PLUGIN_REGISTRY),,--disable-registry) \ + $(if $(BR2_PACKAGE_GSTREAMER1_INSTALL_TOOLS),,--disable-tools) + +GSTREAMER1_DEPENDENCIES = \ + host-bison \ + host-flex \ + host-pkgconf \ + libglib2 \ + $(if $(BR2_PACKAGE_LIBUNWIND),libunwind) + +$(eval $(autotools-package)) diff --git a/buildroot/package/gtest/Config.in b/buildroot/package/gtest/Config.in new file mode 100644 index 0000000..3f1f385 --- /dev/null +++ b/buildroot/package/gtest/Config.in @@ -0,0 +1,54 @@ +config BR2_PACKAGE_GTEST + bool "gtest" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + help + Google's framework for writing C++ tests on a variety of + platforms (Linux, Mac OS X, Windows, Cygwin, Windows CE, and + Symbian). Based on the xUnit architecture. Supports + automatic test discovery, a rich set of assertions, + user-defined assertions, death tests, fatal and non-fatal + failures, value- and type-parameterized tests, various + options for running the tests, and XML test report + generation. + + Gtest also allows to easily build testsuites for C programs. + + This package allows running testsuites on the target which + might be advantageous in certain cases. + + https://github.com/google/googletest + +if BR2_PACKAGE_GTEST + +config BR2_PACKAGE_GTEST_GMOCK + bool "gmock" + help + Inspired by jMock, EasyMock, and Hamcrest, and designed with + C++'s specifics in mind, Google C++ Mocking Framework (or + Google Mock for short) is a library for writing and using C++ + mock classes. + + Google Mock: + + * lets you create mock classes trivially using simple + macros, supports a rich set of matchers and actions, + * handles unordered, partially ordered, or completely + ordered expectations, + * is extensible by users, and + * works on Linux, Mac OS X, Windows, Windows Mobile, minGW, + and Symbian. + + There are both host and target packages. The target one has + include files required to compile the tests and the static + libraries required to link/run them. The host package installs + gmock_gen, a Python script used to generate code mocks. + +endif # BR2_PACKAGE_GTEST + +comment "gtest needs a toolchain w/ C++, wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/gtest/gmock.pc b/buildroot/package/gtest/gmock.pc new file mode 100644 index 0000000..4c72354 --- /dev/null +++ b/buildroot/package/gtest/gmock.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${prefix}/lib/ +includedir=${prefix}/include + +Name: gmock +Description: Google C++ Mocking Framework +Version: 1.8.0 +Libs: -L${libdir} -lgmock +Libs.private: -lpthread +Cflags: -I${includedir} diff --git a/buildroot/package/gtest/gtest.hash b/buildroot/package/gtest/gtest.hash new file mode 100644 index 0000000..0a8d8ba --- /dev/null +++ b/buildroot/package/gtest/gtest.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 58a6f4277ca2bc8565222b3bbd58a177609e9c488e8a72649359ba51450db7d8 gtest-release-1.8.0.tar.gz +sha256 9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138 googletest/LICENSE diff --git a/buildroot/package/gtest/gtest.mk b/buildroot/package/gtest/gtest.mk new file mode 100644 index 0000000..b62ceb3 --- /dev/null +++ b/buildroot/package/gtest/gtest.mk @@ -0,0 +1,95 @@ +################################################################################ +# +# gtest +# +################################################################################ + +GTEST_VERSION = release-1.8.0 +GTEST_SITE = $(call github,google,googletest,$(GTEST_VERSION)) +GTEST_INSTALL_STAGING = YES +GTEST_INSTALL_TARGET = NO +GTEST_LICENSE = BSD-3-Clause +GTEST_LICENSE_FILES = googletest/LICENSE + +ifeq ($(BR2_PACKAGE_GTEST_GMOCK),y) +GTEST_DEPENDENCIES += host-gtest +endif + +HOST_GTEST_LICENSE = Apache-2.0 +HOST_GTEST_LICENSE_FILES = googlemock/scripts/generator/LICENSE +ifeq ($(BR2_PACKAGE_PYTHON3),y) +HOST_GTEST_PYTHON_VERSION = $(PYTHON3_VERSION_MAJOR) +HOST_GTEST_DEPENDENCIES += host-python3 +else +HOST_GTEST_PYTHON_VERSION = $(PYTHON_VERSION_MAJOR) +HOST_GTEST_DEPENDENCIES += host-python +endif + +HOST_GTEST_GMOCK_PYTHONPATH = \ + $(HOST_DIR)/lib/python$(HOST_GTEST_PYTHON_VERSION)/site-packages + +# While it is possible to build gtest as shared library, using this gtest shared +# library requires to set some special configure option in the project using +# gtest. +# So, force to build gtest as a static library. +# +# For further details, refer to the explaination given in the README file from +# the gtest sources. +GTEST_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF + +# Ensure that GTest is compiled with -fPIC to allow linking the static +# libraries with dynamically linked programs. This is not a requirement +# for most architectures but is mandatory for ARM. +ifeq ($(BR2_STATIC_LIBS),) +GTEST_CONF_OPTS += -DCMAKE_POSITION_INDEPENDENT_CODE=ON +endif + +GTEST_CONF_OPTS += -DBUILD_GTEST=ON + +ifeq ($(BR2_PACKAGE_GTEST_GMOCK),y) +GTEST_CONF_OPTS += -DBUILD_GMOCK=ON +else +GTEST_CONF_OPTS += -DBUILD_GMOCK=OFF +endif + +define GTEST_INSTALL_MISSING_FILES + $(INSTALL) -D -m 0644 package/gtest/gtest.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/gtest.pc + # Generate the gtest-config script manually, since the CMake + # build system is not doing it. + sed 's%@PACKAGE_TARNAME@%gtest%;\ + s%@PACKAGE_VERSION@%$(GTEST_VERSION)%;\ + s%@prefix@%$(STAGING_DIR)/usr%;\ + s%@exec_prefix@%$(STAGING_DIR)/usr%;\ + s%@libdir@%$(STAGING_DIR)/usr/lib%;\ + s%@includedir@%$(STAGING_DIR)/usr/include%;\ + s%@bindir@%$(STAGING_DIR)/usr/bin%;\ + s%@PTHREAD_CFLAGS@%%;\ + s%@PTHREAD_LIBS@%-lpthread%;' \ + $(@D)/googletest/scripts/gtest-config.in \ + > $(STAGING_DIR)/usr/bin/gtest-config + chmod +x $(STAGING_DIR)/usr/bin/gtest-config +endef + +GTEST_POST_INSTALL_STAGING_HOOKS = GTEST_INSTALL_MISSING_FILES + +ifeq ($(BR2_PACKAGE_GTEST_GMOCK),y) +define GTEST_GMOCK_INSTALL_MISSING_FILE + $(INSTALL) -D -m 0644 package/gtest/gmock.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/gmock.pc +endef + +GTEST_POST_INSTALL_STAGING_HOOKS += GTEST_GMOCK_INSTALL_MISSING_FILE +endif + +define HOST_GTEST_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/googlemock/scripts/generator/gmock_gen.py \ + $(HOST_DIR)/bin/gmock_gen + cp -rp $(@D)/googlemock/scripts/generator/cpp \ + $(HOST_GTEST_GMOCK_PYTHONPATH) +endef + +$(eval $(cmake-package)) +# The host package does not build anything, just installs gmock_gen stuff, so +# it does not need to be a host-cmake-package. +$(eval $(host-generic-package)) diff --git a/buildroot/package/gtest/gtest.pc b/buildroot/package/gtest/gtest.pc new file mode 100644 index 0000000..594e79d --- /dev/null +++ b/buildroot/package/gtest/gtest.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${prefix}/lib/ +includedir=${prefix}/include + +Name: gtest +Description: Google C++ Testing Framework +Version: 1.8.0 +Libs: -L${libdir} -lgtest +Libs.private: -lpthread +Cflags: -I${includedir} diff --git a/buildroot/package/gtk2-engines/Config.in b/buildroot/package/gtk2-engines/Config.in new file mode 100644 index 0000000..756a7d0 --- /dev/null +++ b/buildroot/package/gtk2-engines/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_GTK2_ENGINES + bool "gtk engines" + depends on BR2_PACKAGE_LIBGTK2 + help + A collection of basic theme engines for GTK+. diff --git a/buildroot/package/gtk2-engines/gtk2-engines.hash b/buildroot/package/gtk2-engines/gtk2-engines.hash new file mode 100644 index 0000000..ac56c7d --- /dev/null +++ b/buildroot/package/gtk2-engines/gtk2-engines.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/gtk-engines/2.20/gtk-engines-2.20.2.sha256sum +sha256 15b680abca6c773ecb85253521fa100dd3b8549befeecc7595b10209d62d66b5 gtk-engines-2.20.2.tar.bz2 diff --git a/buildroot/package/gtk2-engines/gtk2-engines.mk b/buildroot/package/gtk2-engines/gtk2-engines.mk new file mode 100644 index 0000000..5f14594 --- /dev/null +++ b/buildroot/package/gtk2-engines/gtk2-engines.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# gtk2-engines +# +################################################################################ + +GTK2_ENGINES_VERSION_MAJOR = 2.20 +GTK2_ENGINES_VERSION = $(GTK2_ENGINES_VERSION_MAJOR).2 +GTK2_ENGINES_SOURCE = gtk-engines-$(GTK2_ENGINES_VERSION).tar.bz2 +GTK2_ENGINES_SITE = http://ftp.gnome.org/pub/GNOME/sources/gtk-engines/$(GTK2_ENGINES_VERSION_MAJOR) +GTK2_ENGINES_DEPENDENCIES = libgtk2 host-intltool +GTK2_ENGINES_LICENSE = LGPL-2.1+ +GTK2_ENGINES_LICENSE_FILES = COPYING + +GTK2_ENGINES_CONF_ENV = \ + ac_cv_func_posix_getpwuid_r=yes \ + glib_cv_stack_grows=no \ + glib_cv_uscore=no \ + ac_cv_func_strtod=yes \ + ac_fsusage_space=yes \ + fu_cv_sys_stat_statfs2_bsize=yes \ + ac_cv_func_closedir_void=no \ + ac_cv_func_getloadavg=no \ + ac_cv_lib_util_getloadavg=no \ + ac_cv_lib_getloadavg_getloadavg=no \ + ac_cv_func_getgroups=yes \ + ac_cv_func_getgroups_works=yes \ + ac_cv_func_chown_works=yes \ + ac_cv_have_decl_euidaccess=no \ + ac_cv_func_euidaccess=no \ + ac_cv_have_decl_strnlen=yes \ + ac_cv_func_strnlen_working=yes \ + ac_cv_func_lstat_dereferences_slashed_symlink=yes \ + ac_cv_func_lstat_empty_string_bug=no \ + ac_cv_func_stat_empty_string_bug=no \ + vb_cv_func_rename_trailing_slash_bug=no \ + ac_cv_have_decl_nanosleep=yes \ + jm_cv_func_nanosleep_works=yes \ + gl_cv_func_working_utimes=yes \ + ac_cv_func_utime_null=yes \ + ac_cv_have_decl_strerror_r=yes \ + ac_cv_func_strerror_r_char_p=no \ + jm_cv_func_svid_putenv=yes \ + ac_cv_func_getcwd_null=yes \ + ac_cv_func_getdelim=yes \ + ac_cv_func_mkstemp=yes \ + utils_cv_func_mkstemp_limitations=no \ + utils_cv_func_mkdir_trailing_slash_bug=no \ + jm_cv_func_gettimeofday_clobber=no \ + gl_cv_func_working_readdir=yes \ + jm_ac_cv_func_link_follows_symlink=no \ + utils_cv_localtime_cache=no \ + ac_cv_struct_st_mtim_nsec=no \ + gl_cv_func_tzset_clobber=no \ + gl_cv_func_getcwd_null=yes \ + gl_cv_func_getcwd_path_max=yes \ + ac_cv_func_fnmatch_gnu=yes \ + am_getline_needs_run_time_check=no \ + am_cv_func_working_getline=yes \ + gl_cv_func_mkdir_trailing_slash_bug=no \ + gl_cv_func_mkstemp_limitations=no \ + ac_cv_func_working_mktime=yes \ + jm_cv_func_working_re_compile_pattern=yes \ + ac_use_included_regex=no \ + gl_cv_c_restrict=no \ + ac_cv_path_CUPS_CONFIG=no + +GTK2_ENGINES_CONF_OPTS = \ + --with-x \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib \ + --disable-glibtest \ + --enable-explicit-deps=no \ + --enable-clearlooks \ + --disable-crux \ + --disable-hc \ + --disable-industrial \ + --disable-mist \ + --disable-redmond \ + --disable-smooth \ + --disable-glide \ + --disable-thinice \ + --enable-animation \ + --disable-development \ + --disable-paranoia \ + --disable-deprecated + +$(eval $(autotools-package)) diff --git a/buildroot/package/gtkmm3/Config.in b/buildroot/package/gtkmm3/Config.in new file mode 100644 index 0000000..8762c72 --- /dev/null +++ b/buildroot/package/gtkmm3/Config.in @@ -0,0 +1,30 @@ +comment "gtkmm3 needs libgtk3 and a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_LIBGTK3 \ + || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_GTKMM3 + bool "gtkmm3" + # Broken on existing external/internal nios2 toolchains, + # revisit when they are upgraded with at least Binutils >= 2.26 + # and GCC >= 5.3. + # https://sourceware.org/bugzilla/show_bug.cgi?id=19405 + depends on !BR2_nios2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pangomm, libgtk3 -> pango -> harfbuzz + depends on BR2_INSTALL_LIBSTDCPP # glibmm, libpangomm -> glibmm/pango + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # *mm/libgtk3 -> libglib2 + depends on BR2_USE_MMU # *mm/libgtk3 -> libglib2 + depends on BR2_USE_WCHAR # *mm/libgtk3 -> libglib2 + depends on BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_ATKMM + select BR2_PACKAGE_CAIROMM + select BR2_PACKAGE_GLIBMM + select BR2_PACKAGE_LIBSIGC + select BR2_PACKAGE_PANGOMM + help + The gtkmm3 package is a set of C++ bindings for GTK 3. + + http://www.gtkmm.org/ diff --git a/buildroot/package/gtkmm3/gtkmm3.hash b/buildroot/package/gtkmm3/gtkmm3.hash new file mode 100644 index 0000000..951b481 --- /dev/null +++ b/buildroot/package/gtkmm3/gtkmm3.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/gtkmm/3.22/gtkmm-3.22.0.sha256sum +sha256 05da4d4b628fb20c8384630ddf478a3b5562952b2d6181fe28d58f6cbc0514f5 gtkmm-3.22.0.tar.xz diff --git a/buildroot/package/gtkmm3/gtkmm3.mk b/buildroot/package/gtkmm3/gtkmm3.mk new file mode 100644 index 0000000..0098891 --- /dev/null +++ b/buildroot/package/gtkmm3/gtkmm3.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# gtkmm3 +# +################################################################################ + +GTKMM3_VERSION_MAJOR = 3.22 +GTKMM3_VERSION = $(GTKMM3_VERSION_MAJOR).0 +GTKMM3_SOURCE = gtkmm-$(GTKMM3_VERSION).tar.xz +GTKMM3_SITE = http://ftp.gnome.org/pub/gnome/sources/gtkmm/$(GTKMM3_VERSION_MAJOR) +GTKMM3_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +GTKMM3_LICENSE_FILES = COPYING COPYING.tools +GTKMM3_INSTALL_STAGING = YES +GTKMM3_DEPENDENCIES = atkmm cairomm glibmm libgtk3 libsigc pangomm host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/gtkperf/Config.in b/buildroot/package/gtkperf/Config.in new file mode 100644 index 0000000..78c35e7 --- /dev/null +++ b/buildroot/package/gtkperf/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_GTKPERF + bool "gtkperf (performance test for GTK2)" + depends on BR2_PACKAGE_LIBGTK2 + help + GtkPerf is an application designed to test GTK+ performance. + The point is to create common testing platform to run + predefined GTK+ widgets + e.g. (opening comboboxes, toggling buttons, scrolling text + yms.) and this way define the speed of device/platform. diff --git a/buildroot/package/gtkperf/gtkperf.hash b/buildroot/package/gtkperf/gtkperf.hash new file mode 100644 index 0000000..819851d --- /dev/null +++ b/buildroot/package/gtkperf/gtkperf.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 9704344e732038eecbd007dd996a56293a6b027b5b76f3f036273a3fae1ab27b gtkperf_0.40.tar.gz diff --git a/buildroot/package/gtkperf/gtkperf.mk b/buildroot/package/gtkperf/gtkperf.mk new file mode 100644 index 0000000..1d1230f --- /dev/null +++ b/buildroot/package/gtkperf/gtkperf.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# gtkperf +# +################################################################################ + +GTKPERF_VERSION = 0.40 +GTKPERF_SOURCE = gtkperf_$(GTKPERF_VERSION).tar.gz +GTKPERF_SITE = http://downloads.sourceforge.net/project/gtkperf/gtkperf/$(GTKPERF_VERSION) +GTKPERF_DEPENDENCIES = libgtk2 +GTKPERF_LICENSE = GPL-2.0 +GTKPERF_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/gtksourceview/Config.in b/buildroot/package/gtksourceview/Config.in new file mode 100644 index 0000000..e87969b --- /dev/null +++ b/buildroot/package/gtksourceview/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_GTKSOURCEVIEW + bool "gtksourceview" + depends on BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_LIBXML2 + help + GtkSourceView is a portable C library that extends the + standard GTK+ framework for multiline text editing with + support for configurable syntax highlighting, unlimited + undo/redo, search and replace, a completion framework, + printing and other features typical of a source code editor. + + https://projects.gnome.org/gtksourceview diff --git a/buildroot/package/gtksourceview/gtksourceview.hash b/buildroot/package/gtksourceview/gtksourceview.hash new file mode 100644 index 0000000..feaae5e --- /dev/null +++ b/buildroot/package/gtksourceview/gtksourceview.hash @@ -0,0 +1,5 @@ +# Hash from: http://ftp.gnome.org/pub/gnome/sources/gtksourceview/3.24/gtksourceview-3.24.6.sha256sum: +sha256 7aa6bdfebcdc73a763dddeaa42f190c40835e6f8495bb9eb8f78587e2577c188 gtksourceview-3.24.6.tar.xz + +# Locally computed: +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/buildroot/package/gtksourceview/gtksourceview.mk b/buildroot/package/gtksourceview/gtksourceview.mk new file mode 100644 index 0000000..2a33ed4 --- /dev/null +++ b/buildroot/package/gtksourceview/gtksourceview.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# gtksourceview +# +################################################################################ + +GTKSOURCEVIEW_VERSION_MAJOR = 3.24 +GTKSOURCEVIEW_VERSION = $(GTKSOURCEVIEW_VERSION_MAJOR).6 +GTKSOURCEVIEW_SOURCE = gtksourceview-$(GTKSOURCEVIEW_VERSION).tar.xz +GTKSOURCEVIEW_SITE = \ + http://ftp.gnome.org/pub/gnome/sources/gtksourceview/$(GTKSOURCEVIEW_VERSION_MAJOR) +GTKSOURCEVIEW_LICENSE = LGPL-2.1+ +GTKSOURCEVIEW_LICENSE_FILES = COPYING +GTKSOURCEVIEW_INSTALL_STAGING = YES +GTKSOURCEVIEW_DEPENDENCIES = host-pkgconf libglib2 libxml2 libgtk3 + +$(eval $(autotools-package)) diff --git a/buildroot/package/guile/0001-fix_arm_endianness.patch b/buildroot/package/guile/0001-fix_arm_endianness.patch new file mode 100644 index 0000000..67c0b60 --- /dev/null +++ b/buildroot/package/guile/0001-fix_arm_endianness.patch @@ -0,0 +1,25 @@ +Fix support for ARM endianness, otherwise it gives the error +"unknown CPU endianness" + +Signed-off-by: Pedro Aguilar + +diff -Nau guile-2.0.11.orig/module/system/base/target.scm guile-2.0.11/module/system/base/target.scm +--- guile-2.0.11.orig/module/system/base/target.scm 2013-02-28 09:42:45.000000000 +0100 ++++ guile-2.0.11/module/system/base/target.scm 2014-11-03 23:05:01.789338997 +0100 +@@ -70,7 +70,15 @@ + ((member cpu '("sparc" "sparc64" "powerpc" "powerpc64" "spu" + "mips" "mips64")) + (endianness big)) +- ((string-match "^arm.*el" cpu) ++ ((string-match "^arm.*el" cpu) ++ (endianness little)) ++ ((string-match "^arm.*eb" cpu) ++ (endianness big)) ++ ((string-prefix? "arm" cpu) ;ARMs are LE by default ++ (endianness little)) ++ ((string-match "^aarch64.*be" cpu) ++ (endianness big)) ++ ((string=? "aarch64" cpu) + (endianness little)) + (else + (error "unknown CPU endianness" cpu))))) diff --git a/buildroot/package/guile/0002-calculate-csqrt_manually.patch b/buildroot/package/guile/0002-calculate-csqrt_manually.patch new file mode 100644 index 0000000..98bb0b6 --- /dev/null +++ b/buildroot/package/guile/0002-calculate-csqrt_manually.patch @@ -0,0 +1,16 @@ +Avoid using scm_from_complex_double(csqrt()) when building with uclibc. + +Signed-off-by: Pedro Aguilar + +diff -Nau guile-2.0.11.orig/configure.ac guile-2.0.11/configure.ac +--- guile-2.0.11.orig/configure.ac 2014-03-12 14:36:02.000000000 +0100 ++++ guile-2.0.11/configure.ac 2014-11-03 23:59:51.897267207 +0100 +@@ -862,7 +862,7 @@ + }]])], + [guile_cv_use_csqrt=yes], + [guile_cv_use_csqrt="no, glibc 2.3 bug"], +- [guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])]) ++ [guile_cv_use_csqrt="no (cross-compiling)"])]) + case $guile_cv_use_csqrt in + yes*) + AC_DEFINE([HAVE_USABLE_CSQRT], 1, [Define to 1 if csqrt is bug-free]) diff --git a/buildroot/package/guile/0003-workaround-ice-ssa-corruption.patch b/buildroot/package/guile/0003-workaround-ice-ssa-corruption.patch new file mode 100644 index 0000000..54f3158 --- /dev/null +++ b/buildroot/package/guile/0003-workaround-ice-ssa-corruption.patch @@ -0,0 +1,64 @@ +libguile/vm-i-system.c: workaround ice ssa corruption while compiling with option -g -O + +While compiling with option -g -O, there was a ssa corruption: +.. +Unable to coalesce ssa_names 48 and 3476 which are marked as MUST COALESCE. +sp_48(ab) and sp_3476(ab) +guile-2.0.11/libguile/vm-engine.c: In function 'vm_debug_engine': +guile-2.0.11/libguile/vm.c:673:19: internal compiler error: SSA corruption + #define VM_NAME vm_debug_engine + ^ +guile-2.0.11/libguile/vm-engine.c:39:1: note: in expansion of macro 'VM_NAME' + VM_NAME (SCM vm, SCM program, SCM *argv, int nargs) + ^ +Please submit a full bug report, +with preprocessed source if appropriate. +See for instructions. +... + +Tweak libguile/vm-i-system.c to add boundary value check to workaround it. + +Upstream-Status: Pending + +Signed-off-by: Hongxu Jia + +Fixes Buildroot autobuilder failures on AArch64. + +Signed-off-by: Thomas Petazzoni +--- + libguile/vm-i-system.c | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c +--- a/libguile/vm-i-system.c ++++ b/libguile/vm-i-system.c +@@ -625,10 +625,22 @@ VM_DEFINE_INSTRUCTION (47, bind_optionals_shuffle, "bind-optionals/shuffle", 6, + /* now shuffle up, from walk to ntotal */ + { + scm_t_ptrdiff nshuf = sp - walk + 1, i; +- sp = (fp - 1) + ntotal + nshuf; +- CHECK_OVERFLOW (); +- for (i = 0; i < nshuf; i++) +- sp[-i] = walk[nshuf-i-1]; ++ /* check the value of nshuf to workaround ice ssa corruption */ ++ /* while compiling with -O -g */ ++ if (nshuf > 0) ++ { ++ sp = (fp - 1) + ntotal + nshuf; ++ CHECK_OVERFLOW (); ++ for (i = 0; i < nshuf; i++) ++ sp[-i] = walk[nshuf-i-1]; ++ } ++ else ++ { ++ sp = (fp - 1) + ntotal + nshuf; ++ CHECK_OVERFLOW (); ++ for (i = 0; i < nshuf; i++) ++ sp[-i] = walk[nshuf-i-1]; ++ } + } + /* and fill optionals & keyword args with SCM_UNDEFINED */ + while (walk <= (fp - 1) + ntotal) +-- +1.9.1 + diff --git a/buildroot/package/guile/Config.in b/buildroot/package/guile/Config.in new file mode 100644 index 0000000..c26c296 --- /dev/null +++ b/buildroot/package/guile/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_GUILE + bool "guile" + depends on !BR2_TOOLCHAIN_USES_MUSL # no strtol_l + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS # bdwgc + depends on BR2_USE_WCHAR # libunistring + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBUNISTRING + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_GMP + select BR2_PACKAGE_BDWGC + select BR2_PACKAGE_LIBTOOL + help + Guile is an interpreter and compiler for the Scheme + programming language, a clean and elegant dialect of Lisp. + + http://www.gnu.org/software/guile + +comment "guile needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/guile/guile.hash b/buildroot/package/guile/guile.hash new file mode 100644 index 0000000..63651cf --- /dev/null +++ b/buildroot/package/guile/guile.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 e8442566256e1be14e51fc18839cd799b966bc5b16c6a1d7a7c35155a8619d82 guile-2.0.14.tar.xz diff --git a/buildroot/package/guile/guile.mk b/buildroot/package/guile/guile.mk new file mode 100644 index 0000000..f53ebdd --- /dev/null +++ b/buildroot/package/guile/guile.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# guile +# +################################################################################ + +GUILE_VERSION = 2.0.14 +GUILE_SOURCE = guile-$(GUILE_VERSION).tar.xz +GUILE_SITE = $(BR2_GNU_MIRROR)/guile +GUILE_INSTALL_STAGING = YES +# For 0002-calculate-csqrt_manually.patch +GUILE_AUTORECONF = YES +GUILE_LICENSE = LGPL-3.0+ +GUILE_LICENSE_FILES = LICENSE COPYING COPYING.LESSER + +# libtool dependency is needed because guile uses libltdl +GUILE_DEPENDENCIES = host-guile libunistring libffi gmp bdwgc host-pkgconf libtool +HOST_GUILE_DEPENDENCIES = host-libunistring host-libffi host-gmp host-bdwgc host-flex host-pkgconf host-gettext + +# The HAVE_GC* CFLAGS specify that we will use internal callbacks +# instead of the ones provided by +# bdwgc. Eg. HAVE_GC_SET_FINALIZER_NOTIFIER specifies that we won't +# use bdwgc's GC_finalizer_notifier callback. Trying to use these +# specific bdwgc's callbacks breaks guile's building. +GUILE_CFLAGS = \ + -DHAVE_GC_SET_FINALIZER_NOTIFIER \ + -DHAVE_GC_GET_HEAP_USAGE_SAFE \ + -DHAVE_GC_GET_FREE_SPACE_DIVISOR \ + -DHAVE_GC_SET_FINALIZE_ON_DEMAND + +ifeq ($(BR2_STATIC_LIBS),y) +GUILE_CFLAGS += -DGC_NO_DLOPEN +endif + +# Triggers assembler error with -Os +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM)$(BR2_OPTIMIZE_S),yy) +GUILE_CFLAGS += -O2 +endif + +# It can use readline, but on the condition that it was build against +# ncurses. If both aren't present disable readline support since the +# host readline/ncurses support can poison the build. +ifeq ($(BR2_PACKAGE_NCURSES)$(BR2_PACKAGE_READLINE),yy) +GUILE_CONF_OPTS += --with-libreadline-prefix=$(STAGING_DIR)/usr +GUILE_DEPENDENCIES += readline +else +GUILE_CONF_OPTS += --without-libreadline-prefix +endif + +GUILE_CONF_ENV += GUILE_FOR_BUILD=$(HOST_DIR)/bin/guile \ + CFLAGS="$(TARGET_CFLAGS) $(GUILE_CFLAGS)" + +GUILE_CONF_OPTS += \ + --with-libltdl-prefix=$(STAGING_DIR)/usr/lib \ + --with-libgmp-prefix=$(STAGING_DIR)/usr/lib \ + --with-libunistring-prefix=$(STAGING_DIR)/usr/lib + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gupnp-av/0001-Fix-static-library-linking-with-gupnp.patch b/buildroot/package/gupnp-av/0001-Fix-static-library-linking-with-gupnp.patch new file mode 100644 index 0000000..eba99da --- /dev/null +++ b/buildroot/package/gupnp-av/0001-Fix-static-library-linking-with-gupnp.patch @@ -0,0 +1,354 @@ +From 268ec01e448ed7cedf90b37fbc27f01806637825 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 30 Oct 2017 22:10:23 +0100 +Subject: [PATCH 1/1] Fix static library linking with gupnp + +gupnp and gupnp-av defines two internal functions with the same name: +xml_util_get_element and xml_util_get_child_element_content, as a result +an application such as rygel can't be build statically. +To fix this issue, rename both functions as +xml_util_get_element2 and xml_util_get_child_element_content2 + +Signed-off-by: Fabrice Fontaine +--- + libgupnp-av/gupnp-cds-last-change-parser.c | 2 +- + libgupnp-av/gupnp-didl-lite-container.c | 4 ++-- + libgupnp-av/gupnp-didl-lite-item.c | 2 +- + libgupnp-av/gupnp-didl-lite-object.c | 26 +++++++++++++------------- + libgupnp-av/gupnp-didl-lite-parser.c | 4 ++-- + libgupnp-av/gupnp-didl-lite-writer.c | 2 +- + libgupnp-av/gupnp-feature-list-parser.c | 2 +- + libgupnp-av/gupnp-last-change-parser.c | 2 +- + libgupnp-av/xml-util.c | 16 ++++++++-------- + libgupnp-av/xml-util.h | 4 ++-- + 10 files changed, 32 insertions(+), 32 deletions(-) + +diff --git a/libgupnp-av/gupnp-cds-last-change-parser.c b/libgupnp-av/gupnp-cds-last-change-parser.c +index cff5f0b..36f6b0a 100644 +--- a/libgupnp-av/gupnp-cds-last-change-parser.c ++++ b/libgupnp-av/gupnp-cds-last-change-parser.c +@@ -119,7 +119,7 @@ gupnp_cds_last_change_parser_parse (GUPnPCDSLastChangeParser *parser, + goto out; + } + +- state_event = xml_util_get_element ((xmlNode *) doc, ++ state_event = xml_util_get_element2 ((xmlNode *) doc, + "StateEvent", + NULL); + if (state_event == NULL) { +diff --git a/libgupnp-av/gupnp-didl-lite-container.c b/libgupnp-av/gupnp-didl-lite-container.c +index d7ac578..c0e7395 100644 +--- a/libgupnp-av/gupnp-didl-lite-container.c ++++ b/libgupnp-av/gupnp-didl-lite-container.c +@@ -340,7 +340,7 @@ gupnp_didl_lite_container_container_update_id_is_set + + xml_node = gupnp_didl_lite_object_get_xml_node + (GUPNP_DIDL_LITE_OBJECT (container)); +- content = xml_util_get_child_element_content (xml_node, ++ content = xml_util_get_child_element_content2 (xml_node, + "containerUpdateID"); + return content != NULL; + } +@@ -390,7 +390,7 @@ gupnp_didl_lite_container_total_deleted_child_count_is_set + + xml_node = gupnp_didl_lite_object_get_xml_node + (GUPNP_DIDL_LITE_OBJECT (container)); +- content = xml_util_get_child_element_content (xml_node, ++ content = xml_util_get_child_element_content2 (xml_node, + "totalDeletedChildCount"); + return content != NULL; + } +diff --git a/libgupnp-av/gupnp-didl-lite-item.c b/libgupnp-av/gupnp-didl-lite-item.c +index 3588052..3d6d4d0 100644 +--- a/libgupnp-av/gupnp-didl-lite-item.c ++++ b/libgupnp-av/gupnp-didl-lite-item.c +@@ -254,7 +254,7 @@ gupnp_didl_lite_item_get_lifetime (GUPnPDIDLLiteItem *item) + object = GUPNP_DIDL_LITE_OBJECT (item); + node = gupnp_didl_lite_object_get_xml_node (object); + +- lifetime_str = xml_util_get_child_element_content (node, "lifetime"); ++ lifetime_str = xml_util_get_child_element_content2 (node, "lifetime"); + lifetime = seconds_from_time (lifetime_str); + + return lifetime; +diff --git a/libgupnp-av/gupnp-didl-lite-object.c b/libgupnp-av/gupnp-didl-lite-object.c +index 68156dc..cab2359 100644 +--- a/libgupnp-av/gupnp-didl-lite-object.c ++++ b/libgupnp-av/gupnp-didl-lite-object.c +@@ -1065,7 +1065,7 @@ gupnp_didl_lite_object_get_upnp_class (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "class"); + } + +@@ -1211,7 +1211,7 @@ gupnp_didl_lite_object_get_title (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "title"); + } + +@@ -1228,7 +1228,7 @@ gupnp_didl_lite_object_get_creator (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "creator"); + } + +@@ -1266,7 +1266,7 @@ gupnp_didl_lite_object_get_artist (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "artist"); + } + +@@ -1303,7 +1303,7 @@ gupnp_didl_lite_object_get_author (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "author"); + } + +@@ -1377,7 +1377,7 @@ gupnp_didl_lite_object_get_genre (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "genre"); + } + +@@ -1394,7 +1394,7 @@ gupnp_didl_lite_object_get_write_status (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "writeStatus"); + } + +@@ -1411,7 +1411,7 @@ gupnp_didl_lite_object_get_album (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "album"); + } + +@@ -1428,7 +1428,7 @@ gupnp_didl_lite_object_get_album_art (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "albumArtURI"); + } + +@@ -1445,7 +1445,7 @@ gupnp_didl_lite_object_get_description (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "description"); + } + +@@ -1462,7 +1462,7 @@ gupnp_didl_lite_object_get_date (GUPnPDIDLLiteObject *object) + { + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + +- return xml_util_get_child_element_content (object->priv->xml_node, ++ return xml_util_get_child_element_content2 (object->priv->xml_node, + "date"); + } + +@@ -1481,7 +1481,7 @@ gupnp_didl_lite_object_get_track_number (GUPnPDIDLLiteObject *object) + + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), -1); + +- str = xml_util_get_child_element_content (object->priv->xml_node, ++ str = xml_util_get_child_element_content2 (object->priv->xml_node, + "originalTrackNumber"); + if (str == NULL) + return -1; +@@ -1552,7 +1552,7 @@ gupnp_didl_lite_object_update_id_is_set (GUPnPDIDLLiteObject *object) + g_return_val_if_fail (object != NULL, FALSE); + g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), FALSE); + +- content = xml_util_get_child_element_content (object->priv->xml_node, ++ content = xml_util_get_child_element_content2 (object->priv->xml_node, + "objectUpdateID"); + return content != NULL; + } +diff --git a/libgupnp-av/gupnp-didl-lite-parser.c b/libgupnp-av/gupnp-didl-lite-parser.c +index 59255ef..93d03c0 100644 +--- a/libgupnp-av/gupnp-didl-lite-parser.c ++++ b/libgupnp-av/gupnp-didl-lite-parser.c +@@ -52,7 +52,7 @@ verify_didl_attributes (xmlNode *node) + { + const char *content; + +- content = xml_util_get_child_element_content (node, "date"); ++ content = xml_util_get_child_element_content2 (node, "date"); + if (content) { + /* try to roughly verify the passed date with ^\d{4}-\d{2}-\d{2} */ + char *ptr = (char *) content; +@@ -251,7 +251,7 @@ gupnp_didl_lite_parser_parse_didl_recursive (GUPnPDIDLLiteParser *parser, + } + + /* Get a pointer to root element */ +- element = xml_util_get_element ((xmlNode *) doc, ++ element = xml_util_get_element2 ((xmlNode *) doc, + "DIDL-Lite", + NULL); + if (element == NULL) { +diff --git a/libgupnp-av/gupnp-didl-lite-writer.c b/libgupnp-av/gupnp-didl-lite-writer.c +index fb37c0b..e61739a 100644 +--- a/libgupnp-av/gupnp-didl-lite-writer.c ++++ b/libgupnp-av/gupnp-didl-lite-writer.c +@@ -223,7 +223,7 @@ filter_node (xmlNode *node, + + if (strcmp ((const char *) node->name, "container") == 0) { + is_container = TRUE; +- container_class = xml_util_get_child_element_content (node, ++ container_class = xml_util_get_child_element_content2 (node, + "class"); + } + +diff --git a/libgupnp-av/gupnp-feature-list-parser.c b/libgupnp-av/gupnp-feature-list-parser.c +index 85fb232..dcaad6b 100644 +--- a/libgupnp-av/gupnp-feature-list-parser.c ++++ b/libgupnp-av/gupnp-feature-list-parser.c +@@ -138,7 +138,7 @@ gupnp_feature_list_parser_parse_text + } + + /* Get a pointer to root element */ +- element = xml_util_get_element ((xmlNode *) doc, "Features", NULL); ++ element = xml_util_get_element2 ((xmlNode *) doc, "Features", NULL); + if (element == NULL) { + g_set_error (error, + G_MARKUP_ERROR, +diff --git a/libgupnp-av/gupnp-last-change-parser.c b/libgupnp-av/gupnp-last-change-parser.c +index a98aecf..7078713 100644 +--- a/libgupnp-av/gupnp-last-change-parser.c ++++ b/libgupnp-av/gupnp-last-change-parser.c +@@ -75,7 +75,7 @@ read_state_variable (const char *variable_name, + xmlNode *variable_node; + const char *val_str; + +- variable_node = xml_util_get_element (instance_node, ++ variable_node = xml_util_get_element2 (instance_node, + variable_name, + NULL); + if (!variable_node) +diff --git a/libgupnp-av/xml-util.c b/libgupnp-av/xml-util.c +index da718b2..8c937e0 100644 +--- a/libgupnp-av/xml-util.c ++++ b/libgupnp-av/xml-util.c +@@ -81,7 +81,7 @@ xml_doc_unref (GUPnPAVXMLDoc *doc) + } + + xmlNode * +-xml_util_get_element (xmlNode *node, ++xml_util_get_element2 (xmlNode *node, + ...) + { + va_list var_args; +@@ -130,13 +130,13 @@ xml_util_get_child_elements_by_name (xmlNode *node, const char *name) + } + + const char * +-xml_util_get_child_element_content (xmlNode *node, ++xml_util_get_child_element_content2 (xmlNode *node, + const char *child_name) + { + xmlNode *child_node; + const char *content; + +- child_node = xml_util_get_element (node, child_name, NULL); ++ child_node = xml_util_get_element2 (node, child_name, NULL); + if (!child_node || !(child_node->children)) + return NULL; + +@@ -154,7 +154,7 @@ xml_util_get_uint_child_element (xmlNode *node, + { + const char *content; + +- content = xml_util_get_child_element_content (node, child_name); ++ content = xml_util_get_child_element_content2 (node, child_name); + if (!content) + return default_value; + +@@ -168,7 +168,7 @@ xml_util_get_uint64_child_element (xmlNode *node, + { + const char *content; + +- content = xml_util_get_child_element_content (node, child_name); ++ content = xml_util_get_child_element_content2 (node, child_name); + if (!content) + return default_value; + +@@ -281,7 +281,7 @@ xml_util_set_child (xmlNode *parent_node, + xmlNode *node; + xmlChar *escaped; + +- node = xml_util_get_element (parent_node, name, NULL); ++ node = xml_util_get_element2 (parent_node, name, NULL); + if (node == NULL) { + xmlNsPtr ns_ptr = NULL; + +@@ -305,7 +305,7 @@ xml_util_unset_child (xmlNode *parent_node, + { + xmlNode *node; + +- node = xml_util_get_element (parent_node, name, NULL); ++ node = xml_util_get_element2 (parent_node, name, NULL); + if (node != NULL) { + xmlUnlinkNode (node); + xmlFreeNode (node); +@@ -342,7 +342,7 @@ xml_util_get_child_string (xmlNode *parent_node, + char *ret; + xmlNode *node; + +- node = xml_util_get_element (parent_node, name, NULL); ++ node = xml_util_get_element2 (parent_node, name, NULL); + if (!node) + return NULL; + +diff --git a/libgupnp-av/xml-util.h b/libgupnp-av/xml-util.h +index 9ae5b19..5ff2020 100644 +--- a/libgupnp-av/xml-util.h ++++ b/libgupnp-av/xml-util.h +@@ -63,7 +63,7 @@ xml_doc_get_type (void) G_GNUC_CONST; + + /* Misc utilities for inspecting xmlNodes */ + G_GNUC_INTERNAL xmlNode * +-xml_util_get_element (xmlNode *node, ++xml_util_get_element2 (xmlNode *node, + ...) G_GNUC_NULL_TERMINATED; + + G_GNUC_INTERNAL GList * +@@ -71,7 +71,7 @@ xml_util_get_child_elements_by_name (xmlNode *node, + const char *name); + + G_GNUC_INTERNAL const char * +-xml_util_get_child_element_content (xmlNode *node, ++xml_util_get_child_element_content2 (xmlNode *node, + const char *child_name); + + G_GNUC_INTERNAL guint +-- +2.14.1 + diff --git a/buildroot/package/gupnp-av/Config.in b/buildroot/package/gupnp-av/Config.in new file mode 100644 index 0000000..7b618f5 --- /dev/null +++ b/buildroot/package/gupnp-av/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_GUPNP_AV + bool "gupnp-av" + depends on BR2_USE_WCHAR # glib2, gupnp + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2, gupnp + depends on BR2_USE_MMU # glib2, gupnp + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_GUPNP + select BR2_PACKAGE_LIBXML2 + help + GUPnP-AV is a collection of helpers for building AV + (audio/video) applications using GUPnP. + + http://www.gupnp.org/ + +comment "gupnp-av needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gupnp-av/gupnp-av.hash b/buildroot/package/gupnp-av/gupnp-av.hash new file mode 100644 index 0000000..e106b18 --- /dev/null +++ b/buildroot/package/gupnp-av/gupnp-av.hash @@ -0,0 +1,5 @@ +# Hash from: http://ftp.gnome.org/pub/gnome/sources/gupnp-av/0.12/gupnp-av-0.12.10.sha256sum: +sha256 8038ef84dddbe7ad91c205bf91dddf684f072df8623f39b6555a6bb72837b85a gupnp-av-0.12.10.tar.xz + +# Hash for license file: +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/buildroot/package/gupnp-av/gupnp-av.mk b/buildroot/package/gupnp-av/gupnp-av.mk new file mode 100644 index 0000000..0940db7 --- /dev/null +++ b/buildroot/package/gupnp-av/gupnp-av.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# gupnp-av +# +################################################################################ + +GUPNP_AV_VERSION_MAJOR = 0.12 +GUPNP_AV_VERSION = $(GUPNP_AV_VERSION_MAJOR).10 +GUPNP_AV_SOURCE = gupnp-av-$(GUPNP_AV_VERSION).tar.xz +GUPNP_AV_SITE = http://ftp.gnome.org/pub/gnome/sources/gupnp-av/$(GUPNP_AV_VERSION_MAJOR) +GUPNP_AV_LICENSE = LGPL-2.0+ +GUPNP_AV_LICENSE_FILES = COPYING +GUPNP_AV_INSTALL_STAGING = YES +GUPNP_AV_DEPENDENCIES = host-pkgconf libglib2 libxml2 gupnp + +$(eval $(autotools-package)) diff --git a/buildroot/package/gupnp-dlna/Config.in b/buildroot/package/gupnp-dlna/Config.in new file mode 100644 index 0000000..a0ecdb3 --- /dev/null +++ b/buildroot/package/gupnp-dlna/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_GUPNP_DLNA + bool "gupnp-dlna" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + help + GUPnP DLNA is a small utility library that aims to ease the + DLNA-related tasks such as media profile guessing, transcoding + to a given profile, etc. + + http://www.gupnp.org/ + +comment "gupnp-dlna needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gupnp-dlna/gupnp-dlna.hash b/buildroot/package/gupnp-dlna/gupnp-dlna.hash new file mode 100644 index 0000000..01c7489 --- /dev/null +++ b/buildroot/package/gupnp-dlna/gupnp-dlna.hash @@ -0,0 +1,5 @@ +# Hash from: http://ftp.gnome.org/pub/gnome/sources/gupnp-dlna/0.10/gupnp-dlna-0.10.5.sha256sum: +sha256 123e368227c11d5c17fc1aa76cbdaffa345355eb51d172cd39fc74a5b468ff6a gupnp-dlna-0.10.5.tar.xz + +# Locally computed: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/gupnp-dlna/gupnp-dlna.mk b/buildroot/package/gupnp-dlna/gupnp-dlna.mk new file mode 100644 index 0000000..304f86a --- /dev/null +++ b/buildroot/package/gupnp-dlna/gupnp-dlna.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# gupnp-dlna +# +################################################################################ + +GUPNP_DLNA_VERSION_MAJOR = 0.10 +GUPNP_DLNA_VERSION = $(GUPNP_DLNA_VERSION_MAJOR).5 +GUPNP_DLNA_SOURCE = gupnp-dlna-$(GUPNP_DLNA_VERSION).tar.xz +GUPNP_DLNA_SITE = \ + http://ftp.gnome.org/pub/gnome/sources/gupnp-dlna/$(GUPNP_DLNA_VERSION_MAJOR) +# COPYING contains LGPL-2.1 but all source files contain LPGL-2.0+ +GUPNP_DLNA_LICENSE = LGPL-2.0+ +GUPNP_DLNA_LICENSE_FILES = COPYING +GUPNP_DLNA_INSTALL_STAGING = YES +GUPNP_DLNA_DEPENDENCIES = host-pkgconf libglib2 libxml2 + +ifeq ($(BR2_PACKAGE_GST_PLUGINS_BASE),y) +GUPNP_DLNA_CONF_OPTS += --enable-legacy-gstreamer-metadata-backend +GUPNP_DLNA_DEPENDENCIES += gstreamer gst-plugins-base +else +GUPNP_DLNA_CONF_OPTS += --disable-legacy-gstreamer-metadata-backend +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) +GUPNP_DLNA_CONF_OPTS += --enable-gstreamer-metadata-backend +GUPNP_DLNA_DEPENDENCIES += gstreamer1 gst1-plugins-base +else +GUPNP_DLNA_CONF_OPTS += --disable-gstreamer-metadata-backend +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gupnp-tools/Config.in b/buildroot/package/gupnp-tools/Config.in new file mode 100644 index 0000000..af66241 --- /dev/null +++ b/buildroot/package/gupnp-tools/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_GUPNP_TOOLS + bool "gupnp-tools" + depends on BR2_PACKAGE_LIBGTK3 + # gssdp, gupnp, libsoup all select on libglib2, so they have + # the same dependencies as libgtk3, which we depend on. So for + # the same of simplicity, we don't replicate all those + # (complex) dependencies. + select BR2_PACKAGE_GSSDP + select BR2_PACKAGE_GUPNP + select BR2_PACKAGE_LIBSOUP + select BR2_PACKAGE_LIBXML2 + help + GUPnP Tools are free replacements of Intel UPnP tools that + use GUPnP. They provides client and server side tools which + enable one to easily test and debug one's UPnP devices and + control points. + + http://www.gupnp.org/ + +comment "gupnp-tools needs libgtk3" + depends on !BR2_PACKAGE_LIBGTK3 diff --git a/buildroot/package/gupnp-tools/gupnp-tools.hash b/buildroot/package/gupnp-tools/gupnp-tools.hash new file mode 100644 index 0000000..d80d832 --- /dev/null +++ b/buildroot/package/gupnp-tools/gupnp-tools.hash @@ -0,0 +1,5 @@ +# Hash from: http://ftp.gnome.org/pub/gnome/sources/gupnp-tools/0.8/gupnp-tools-0.8.14.sha256sum: +sha256 682b952b3cf43818c7d27549c152ea52e43320500820ab3392cf5a29a95e7efa gupnp-tools-0.8.14.tar.xz + +# Locally computed: +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/gupnp-tools/gupnp-tools.mk b/buildroot/package/gupnp-tools/gupnp-tools.mk new file mode 100644 index 0000000..8f95e04 --- /dev/null +++ b/buildroot/package/gupnp-tools/gupnp-tools.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# gupnp-tools +# +################################################################################ + +GUPNP_TOOLS_VERSION_MAJOR = 0.8 +GUPNP_TOOLS_VERSION = $(GUPNP_TOOLS_VERSION_MAJOR).14 +GUPNP_TOOLS_SOURCE = gupnp-tools-$(GUPNP_TOOLS_VERSION).tar.xz +GUPNP_TOOLS_SITE = \ + http://ftp.gnome.org/pub/gnome/sources/gupnp-tools/$(GUPNP_TOOLS_VERSION_MAJOR) +GUPNP_TOOLS_LICENSE = GPL-2.0+ +GUPNP_TOOLS_LICENSE_FILES = COPYING +GUPNP_TOOLS_INSTALL_STAGING = YES +GUPNP_TOOLS_DEPENDENCIES = \ + host-pkgconf \ + libglib2 \ + libxml2 \ + gssdp \ + gupnp \ + libsoup \ + libgtk3 + +ifeq ($(BR2_PACKAGE_GUPNP_AV),y) +GUPNP_TOOLS_CONF_OPTS += --with-av +GUPNP_TOOLS_DEPENDENCIES += gupnp-av +else +GUPNP_TOOLS_CONF_OPTS += --without-av +endif + +ifeq ($(BR2_PACKAGE_GTKSOURCEVIEW),y) +GUPNP_TOOLS_DEPENDENCIES += gtksourceview +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gupnp/Config.in b/buildroot/package/gupnp/Config.in new file mode 100644 index 0000000..3074a42 --- /dev/null +++ b/buildroot/package/gupnp/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_GUPNP + bool "gupnp" + depends on BR2_USE_WCHAR # glib2, gssdp + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2, gssdp + depends on BR2_USE_MMU # glib2, gssdp + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_GSSDP + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + GUPnP implements the UPnP specification: resource announcement + and discovery, description, control, event notification, and + presentation. + + http://www.gupnp.org/ + +comment "gupnp needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gupnp/gupnp.hash b/buildroot/package/gupnp/gupnp.hash new file mode 100644 index 0000000..7f60864 --- /dev/null +++ b/buildroot/package/gupnp/gupnp.hash @@ -0,0 +1,5 @@ +# Hash from: http://ftp.gnome.org/pub/gnome/sources/gupnp/1.0/gupnp-1.0.2.sha256sum: +sha256 5173fda779111c6b01cd4a5e41b594322be9d04f8c74d3361f0a0c2069c77610 gupnp-1.0.2.tar.xz + +# Hash for license file: +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/buildroot/package/gupnp/gupnp.mk b/buildroot/package/gupnp/gupnp.mk new file mode 100644 index 0000000..de08f28 --- /dev/null +++ b/buildroot/package/gupnp/gupnp.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# gupnp +# +################################################################################ + +GUPNP_VERSION_MAJOR = 1.0 +GUPNP_VERSION = $(GUPNP_VERSION_MAJOR).2 +GUPNP_SOURCE = gupnp-$(GUPNP_VERSION).tar.xz +GUPNP_SITE = http://ftp.gnome.org/pub/gnome/sources/gupnp/$(GUPNP_VERSION_MAJOR) +GUPNP_LICENSE = LGPL-2.0+ +GUPNP_LICENSE_FILES = COPYING +GUPNP_INSTALL_STAGING = YES +GUPNP_DEPENDENCIES = host-pkgconf libglib2 libxml2 gssdp util-linux + +$(eval $(autotools-package)) diff --git a/buildroot/package/gutenprint/0001-use-pregen-xmli18n-header.patch b/buildroot/package/gutenprint/0001-use-pregen-xmli18n-header.patch new file mode 100644 index 0000000..533fe33 --- /dev/null +++ b/buildroot/package/gutenprint/0001-use-pregen-xmli18n-header.patch @@ -0,0 +1,48 @@ +src/xml: use preg-gen xmli18n_tmp.h if specified + +Ideally, the programs needed at build-time should be built with +CC_FOR_BUILD, and not with CC_FOR_HOST. + +Unfortunately, this program wants to link against the gutenprint libs, +so we would also need to build them with CC_FOR_HOST, that is build them +twice, once for build, once for host. + +Instead, in the Buildroot context, we first build gutenprint for the build +system, use that to generate the incriminated header, and then re-use that +header to build the gutenprint for the host. + +It is not possible to have such constructs in Makefile.am: + ifeq ($(FOO),) + bar: bla + cat $< >$@ + else + bar: + echo $(FOO) >$@ + endif + +as autoreconf will yell loudly that there is an 'endif' without an 'if'. +Sigh... :-( + +Signed-off-by: "Yann E. MORIN" + +diff -durN gutenprint-5.2.9.orig/src/xml/Makefile.am gutenprint-5.2.9/src/xml/Makefile.am +--- gutenprint-5.2.9.orig/src/xml/Makefile.am 2011-03-30 02:43:24.000000000 +0200 ++++ gutenprint-5.2.9/src/xml/Makefile.am 2013-03-24 17:08:08.435918773 +0100 +@@ -52,10 +52,13 @@ + + + xmli18n-tmp.h: xml-stamp extract-strings +- -rm -f $@ $@.tmp +- ./extract-strings `cat xml-stamp | sed -e 's;^;$(srcdir)/;'` > $@.tmp +- mv $@.tmp $@ +- ++ if [ -z "$(BR2_USE_PREGEN_XMLI18N_TMP_H)" ]; then \ ++ rm -f $@ $@.tmp; \ ++ ./extract-strings `cat xml-stamp | sed -e 's;^;$(srcdir)/;'` > $@.tmp; \ ++ mv $@.tmp $@; \ ++ else \ ++ cp $(BR2_USE_PREGEN_XMLI18N_TMP_H) $@; \ ++ fi + + dist-hook: xmli18n-tmp.h xml-stamp + # xmli18n-tmp.h is needed by po/POTFILES.in at dist time diff --git a/buildroot/package/gutenprint/0002-cups-support-replaces-static-with-static-libtool-lib.patch b/buildroot/package/gutenprint/0002-cups-support-replaces-static-with-static-libtool-lib.patch new file mode 100644 index 0000000..d8cfb7d --- /dev/null +++ b/buildroot/package/gutenprint/0002-cups-support-replaces-static-with-static-libtool-lib.patch @@ -0,0 +1,39 @@ +From 08a5d355160eb2ac8346ae1b94591418343217f9 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 17 Aug 2014 23:43:20 +0200 +Subject: [PATCH 1/1] cups support: replaces -static with -static-libtool-libs + +gutenprint rely on the original behaviour of -static, but since commit +in buildroot "support/libtool: make -static behave like -all-static" [1], +the build of genppd is broken. + +genppd need to be build statically otherwise the following warning appears: +***WARNING: Use of --disable-static-genppd or --disable-static + when building CUPS is very dangerous. The build may + fail when building the PPD files, or may *SILENTLY* + build incorrect PPD files or cause other problems. + Please review the README and release notes carefully! + +[1] http://git.buildroot.net/buildroot/commit/?id=97703978ac870ce2b14ad144f8e082de82aa2c64 + +Signed-off-by: Romain Naour +--- + src/cups/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cups/Makefile.am b/src/cups/Makefile.am +index 1e27ae0..d711b70 100644 +--- a/src/cups/Makefile.am ++++ b/src/cups/Makefile.am +@@ -84,7 +84,7 @@ noinst_SCRIPTS=test-rastertogutenprint + endif + + if BUILD_GENPPD_STATIC +-STATIC_LDOPTS=-static -export-dynamic ++STATIC_LDOPTS=-static-libtool-libs -export-dynamic + endif + + cups_calibrate_SOURCES = cups-calibrate.c +-- +1.9.3 + diff --git a/buildroot/package/gutenprint/0003-print-olympus.c-fix-endianness-detection.patch b/buildroot/package/gutenprint/0003-print-olympus.c-fix-endianness-detection.patch new file mode 100644 index 0000000..fc1746c --- /dev/null +++ b/buildroot/package/gutenprint/0003-print-olympus.c-fix-endianness-detection.patch @@ -0,0 +1,33 @@ +From e0dad4bb237f1155e920c30c6fd3412e96a3e84d Mon Sep 17 00:00:00 2001 +From: Olivier Schonken +Date: Sun, 24 Jan 2016 17:14:21 +0200 +Subject: [PATCH 1/1] print-olympus.c: fix endianness detection + +The __LITTLE_ENDIAN__ and __BIG_ENDIAN__ macros are not a reliable way to +detect endianness. Instead, rely on __BYTE_ORDER like we do in the rest of +the code. + +Signed-off-by: Olivier Schonken +--- + src/main/print-olympus.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/main/print-olympus.c b/src/main/print-olympus.c +index 42c4897..8b2aa80 100644 +--- a/src/main/print-olympus.c ++++ b/src/main/print-olympus.c +@@ -4901,9 +4901,9 @@ dyesub_do_print(stp_vars_t *v, stp_image_t *image) + } + + if (pv.bytes_per_ink_channel > 1) { +-#if defined(__LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) ++#if (__BYTE_ORDER == __LITTLE_ENDIAN) + pv.byteswap = dyesub_feature(caps, DYESUB_FEATURE_BIGENDIAN); +-#elif defined (__BIG_ENDIAN) || defined(__BIG_ENDIAN__) ++#elif (__BYTE_ORDER == __BIG_ENDIAN) + pv.byteswap = !dyesub_feature(caps, DYESUB_FEATURE_BIGENDIAN); + #else + #error "Unable to determine endianness, aborting compilation!" +-- +1.9.1 + diff --git a/buildroot/package/gutenprint/0004-build-Don-t-allow-USB-backends-to-be-built-if-CUPS-i.patch b/buildroot/package/gutenprint/0004-build-Don-t-allow-USB-backends-to-be-built-if-CUPS-i.patch new file mode 100644 index 0000000..1ecc89e --- /dev/null +++ b/buildroot/package/gutenprint/0004-build-Don-t-allow-USB-backends-to-be-built-if-CUPS-i.patch @@ -0,0 +1,41 @@ +From b5e8dc446572c1198a24eff105a394d0f307951e Mon Sep 17 00:00:00 2001 +From: Solomon Peachy +Date: Fri, 15 Apr 2016 23:05:43 -0400 +Subject: [PATCH] build: Don't allow USB backends to be built if CUPS is not + enabled. + +[Waldemar: backport from upstream commit +fc1713589fed645f2c8002c3f66dfb69af314716.] +Signed-off-by: Waldemar Brodkorb +--- + configure.ac | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 800794b..ba30019 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -442,12 +442,14 @@ dnl if test -z "${[EXTRA_LIBREADLINE_DEPS]}" ; then + dnl [EXTRA_LIBREADLINE_DEPS]="" + dnl fi + +-# libusb-1.0 (For CUPS backends) +-PKG_CHECK_MODULES([LIBUSB], [libusb-1.0], +- [HAVE_LIBUSB=yes +- BUILD_LIBUSB_BACKENDS=yes], +- [HAVE_LIBUSB=no +- BUILD_LIBUSB_BACKENDS=no]) ++# libusb-1.0 (For CUPS backends, but only bother if CUPS is enabled) ++if test "x$BUILD_CUPS" = "xyes" ; then ++ PKG_CHECK_MODULES([LIBUSB], [libusb-1.0], ++ [HAVE_LIBUSB=yes ++ BUILD_LIBUSB_BACKENDS=yes], ++ [HAVE_LIBUSB=no ++ BUILD_LIBUSB_BACKENDS=no]) ++fi + + AC_PATH_PROGS([GIMPTOOL2_CHECK], [gimptool-2.0 gimptool]) + if test -z "${GIMPTOOL2_CHECK}" ; then +-- +2.6.4 + diff --git a/buildroot/package/gutenprint/Config.in b/buildroot/package/gutenprint/Config.in new file mode 100644 index 0000000..f93717c --- /dev/null +++ b/buildroot/package/gutenprint/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_GUTENPRINT + bool "gutenprint" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_CUPS + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Gutenprint, formerly named Gimp-Print, is a suite of printer + drivers that may be used with most common UNIX print spooling + systems, including CUPS, lpr, LPRng, or others + + http://gimp-print.sourceforge.net/ + +comment "gutenprint needs a toolchain w/ C++" + depends on BR2_PACKAGE_CUPS + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/gutenprint/gutenprint.hash b/buildroot/package/gutenprint/gutenprint.hash new file mode 100644 index 0000000..a52cc7d --- /dev/null +++ b/buildroot/package/gutenprint/gutenprint.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 c1a34cd2e02527de4d2a9bf6c14732cb9aa11b333f771eb6043fdc974de24df9 gutenprint-5.2.11.tar.bz2 diff --git a/buildroot/package/gutenprint/gutenprint.mk b/buildroot/package/gutenprint/gutenprint.mk new file mode 100644 index 0000000..65b8d31 --- /dev/null +++ b/buildroot/package/gutenprint/gutenprint.mk @@ -0,0 +1,92 @@ +################################################################################ +# +# gutenprint +# +################################################################################ + +GUTENPRINT_VERSION_MAJOR = 5.2 +GUTENPRINT_VERSION = $(GUTENPRINT_VERSION_MAJOR).11 +GUTENPRINT_SITE = http://downloads.sourceforge.net/project/gimp-print/gutenprint-$(GUTENPRINT_VERSION_MAJOR)/$(GUTENPRINT_VERSION) +GUTENPRINT_SOURCE = gutenprint-$(GUTENPRINT_VERSION).tar.bz2 +GUTENPRINT_LICENSE = GPL-2.0+ +GUTENPRINT_LICENSE_FILES = COPYING + +# Needed, as we touch Makefile.am and configure.ac +GUTENPRINT_AUTORECONF = YES + +GUTENPRINT_DEPENDENCIES = \ + cups host-pkgconf \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(if $(BR2_PACKAGE_LIBUSB),libusb) + +# host-gutenprint is needed to generate XML as part of compilation +# the program that generates the xml also links against libgutenprint +# so we need to build both a host package and a target package +GUTENPRINT_DEPENDENCIES += host-gutenprint + +GUTENPRINT_CONF_ENV = \ + ac_cv_path_CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config \ + ac_cv_path_IJS_CONFIG="" + +GUTENPRINT_CONF_OPTS = \ + --disable-libgutenprintui2 \ + --disable-samples \ + --without-doc \ + --without-gimp2 \ + --without-foomatic \ + --without-foomatic3 \ + --disable-escputil \ + --disable-test \ + --disable-testpattern \ + --with-cups="/usr" \ + --with-sysroot="$(STAGING_DIR)" \ + --disable-cups-ppds + +# USE_PREGEN_XMLI18N_TMP_H is added by our patch +GUTENPRINT_MAKE_ENV = BR2_USE_PREGEN_XMLI18N_TMP_H=$(HOST_DIR)/include/xmli18n-tmp.h + +HOST_GUTENPRINT_DEPENDENCIES = host-pkgconf +# The host-gutenprint shall create the required header +HOST_GUTENPRINT_MAKE_ENV = + +# Even with --without-cups, gutenprint will still add the output of +# cups-config --cflags / --ldflags to it's compiler/linker flags if +# available on host. +# Notice: Because of the configure logic, it needs to be set to the +# empty string to to disable this, not just to /bin/false like elsewhere. +HOST_GUTENPRINT_CONF_ENV = ac_cv_path_CUPS_CONFIG='' + +HOST_GUTENPRINT_CONF_OPTS = \ + --disable-libgutenprintui2 \ + --disable-samples \ + --without-gimp2 \ + --without-doc \ + --disable-nls \ + --disable-nls-macos \ + --without-foomatic \ + --without-foomatic3 \ + --disable-escputil \ + --disable-test \ + --disable-testpattern \ + --without-cups + +# Needed by autoreconf +define GUTENPRINT_CREATE_M4_DIR + mkdir -p $(@D)/m4local +endef +GUTENPRINT_POST_PATCH_HOOKS += GUTENPRINT_CREATE_M4_DIR +HOST_GUTENPRINT_POST_PATCH_HOOKS += GUTENPRINT_CREATE_M4_DIR + +define HOST_GUTENPRINT_POST_BUILD_INSTAL_TMP_HEADER + cp $(@D)/src/xml/xmli18n-tmp.h $(HOST_DIR)/include +endef +HOST_GUTENPRINT_POST_BUILD_HOOKS += HOST_GUTENPRINT_POST_BUILD_INSTAL_TMP_HEADER + +define GUTENPRINT_POST_INSTALL_TARGET_FIXUP + mkdir -p $(TARGET_DIR)/usr/share/gutenprint/5.2 + cp -rf $(HOST_DIR)/share/gutenprint/5.2/xml $(TARGET_DIR)/usr/share/gutenprint/5.2 +endef +GUTENPRINT_POST_INSTALL_TARGET_HOOKS += GUTENPRINT_POST_INSTALL_TARGET_FIXUP + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gvfs/Config.in b/buildroot/package/gvfs/Config.in new file mode 100644 index 0000000..44a7521 --- /dev/null +++ b/buildroot/package/gvfs/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_GVFS + bool "gvfs" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_USE_MMU # dbus, glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_SHARED_MIME_INFO + help + gvfs is a userspace virtual filesystem where mount runs as a + separate processes which you talk to via D-Bus. It also + contains a gio module that seamlessly adds gvfs support to + all applications using the gio API. It also supports exposing + the gvfs mounts to non-gio applications using fuse. + + https://wiki.gnome.org/action/show/Projects/gvfs + +comment "gvfs needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/gvfs/gvfs.hash b/buildroot/package/gvfs/gvfs.hash new file mode 100644 index 0000000..63ad77d --- /dev/null +++ b/buildroot/package/gvfs/gvfs.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/gvfs/1.30/gvfs-1.30.3.sha256sum +sha256 b824a29489cae7f39e1a0fc0d154ac7b7bf43d8edd98ba83ffcad2f766d0f175 gvfs-1.30.3.tar.xz diff --git a/buildroot/package/gvfs/gvfs.mk b/buildroot/package/gvfs/gvfs.mk new file mode 100644 index 0000000..7110e39 --- /dev/null +++ b/buildroot/package/gvfs/gvfs.mk @@ -0,0 +1,139 @@ +################################################################################ +# +# gvfs +# +################################################################################ + +GVFS_VERSION_MAJOR = 1.30 +GVFS_VERSION = $(GVFS_VERSION_MAJOR).3 +GVFS_SOURCE = gvfs-$(GVFS_VERSION).tar.xz +GVFS_SITE = http://ftp.gnome.org/pub/GNOME/sources/gvfs/$(GVFS_VERSION_MAJOR) +GVFS_INSTALL_STAGING = YES +GVFS_DEPENDENCIES = host-pkgconf host-libglib2 libglib2 dbus shared-mime-info +GVFS_LICENSE = LGPL-2.0+ +GVFS_LICENSE_FILES = COPYING + +# Export ac_cv_path_LIBGCRYPT_CONFIG unconditionally to prevent +# build system from searching the host paths. +GVFS_CONF_ENV = ac_cv_path_LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config + +# Most of these are missing library support +GVFS_CONF_OPTS = \ + --disable-afc \ + --disable-admin \ + --disable-bash-completion \ + --disable-cdda \ + --disable-gconf \ + --disable-gcr \ + --disable-gdu \ + --disable-goa \ + --disable-google \ + --disable-gphoto2 \ + --disable-hal \ + --disable-keyring \ + --disable-libmtp \ + --disable-udisks2 + +ifeq ($(BR2_PACKAGE_AVAHI),y) +GVFS_DEPENDENCIES += avahi +GVFS_CONF_OPTS += --enable-avahi +else +GVFS_CONF_OPTS += --disable-avahi +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +GVFS_DEPENDENCIES += udev +endif + +ifeq ($(BR2_PACKAGE_LIBGUDEV),y) +GVFS_DEPENDENCIES += libgudev +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +GVFS_DEPENDENCIES += libarchive +GVFS_CONF_OPTS += \ + --enable-archive \ + --with-archive-includes=$(STAGING_DIR)/usr \ + --with-archive-libs=$(STAGING_DIR)/usr +else +GVFS_CONF_OPTS += --disable-archive +endif + +ifeq ($(BR2_PACKAGE_LIBBLURAY),y) +GVFS_DEPENDENCIES += libbluray +GVFS_CONF_OPTS += --enable-bluray +else +GVFS_CONF_OPTS += --disable-bluray +endif + +ifeq ($(BR2_PACKAGE_LIBFUSE),y) +GVFS_DEPENDENCIES += libfuse +GVFS_CONF_OPTS += --enable-fuse +else +GVFS_CONF_OPTS += --disable-fuse +endif + +# AFP support is anon-only without libgcrypt which isn't very useful +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +GVFS_CONF_OPTS += --enable-afp +GVFS_DEPENDENCIES += libgcrypt +else +GVFS_CONF_OPTS += --disable-afp +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3),y) +GVFS_CONF_OPTS += --enable-gtk +GVFS_DEPENDENCIES += libgtk3 +else +GVFS_CONF_OPTS += --disable-gtk +endif + +ifeq ($(BR2_PACKAGE_LIBNFS),y) +GVFS_CONF_OPTS += --enable-nfs +GVFS_DEPENDENCIES += libnfs +else +GVFS_CONF_OPTS += --disable-nfs +endif + +ifeq ($(BR2_PACKAGE_LIBSOUP),y) +GVFS_DEPENDENCIES += libsoup +GVFS_CONF_OPTS += --enable-http +else +GVFS_CONF_OPTS += --disable-http +endif + +ifeq ($(BR2_PACKAGE_SAMBA4),y) +GVFS_DEPENDENCIES += samba4 +GVFS_CONF_OPTS += \ + --enable-samba \ + --with-samba-includes=$(STAGING_DIR)/usr/include/samba-4.0 \ + --with-samba-libs=$(STAGING_DIR)/usr/lib \ + ac_cv_lib_smbclient_smbc_option_get=yes +else +GVFS_CONF_OPTS += --disable-samba +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +GVFS_DEPENDENCIES += systemd +else +GVFS_CONF_OPTS += --disable-libsystemd-login +endif + +define GVFS_REMOVE_USELESS_BINARY + rm $(TARGET_DIR)/usr/bin/gvfs-less +endef + +define GVFS_REMOVE_TARGET_SCHEMAS + rm $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.xml +endef + +define GVFS_COMPILE_SCHEMAS + $(HOST_DIR)/bin/glib-compile-schemas --targetdir=$(TARGET_DIR)/usr/share/glib-2.0/schemas $(STAGING_DIR)/usr/share/glib-2.0/schemas +endef + +GVFS_POST_INSTALL_TARGET_HOOKS += \ + GVFS_REMOVE_USELESS_BINARY \ + GVFS_REMOVE_TARGET_SCHEMAS \ + GVFS_COMPILE_SCHEMAS + +$(eval $(autotools-package)) diff --git a/buildroot/package/gzip/Config.in b/buildroot/package/gzip/Config.in new file mode 100644 index 0000000..f2eac03 --- /dev/null +++ b/buildroot/package/gzip/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_GZIP + bool "gzip" + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Standard GNU compressor. Provides things like gzip, + gunzip, gzcat, etc... + + http://www.gnu.org/software/gzip/gzip.html + +comment "gzip needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/gzip/gzip.hash b/buildroot/package/gzip/gzip.hash new file mode 100644 index 0000000..466f846 --- /dev/null +++ b/buildroot/package/gzip/gzip.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 ff1767ec444f71e5daf8972f6f8bf68cfcca1d2f76c248eb18e8741fc91dbbd3 gzip-1.8.tar.xz diff --git a/buildroot/package/gzip/gzip.mk b/buildroot/package/gzip/gzip.mk new file mode 100644 index 0000000..26fc8ec --- /dev/null +++ b/buildroot/package/gzip/gzip.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# gzip +# +################################################################################ + +GZIP_VERSION = 1.8 +GZIP_SOURCE = gzip-$(GZIP_VERSION).tar.xz +GZIP_SITE = $(BR2_GNU_MIRROR)/gzip +# Some other tools expect it to be in /bin +GZIP_CONF_OPTS = --exec-prefix=/ +# Prefer full gzip over potentially lightweight/slower from busybox +GZIP_DEPENDENCIES = $(if $(BR2_PACKAGE_BUSYBOX),busybox) +GZIP_LICENSE = GPL-3.0+ +GZIP_LICENSE_FILES = COPYING +GZIP_CONF_ENV += gl_cv_func_fflush_stdin=yes +# configure substitutes $(SHELL) for the shell shebang in scripts like +# gzexe. Unfortunately, the same $(SHELL) variable will also be used by +# make to run its commands. Fortunately, /bin/sh is always a POSIX shell +# on both the target and host systems that we support. Even with this, +# the configure check is slightly broken and prints a bogus warning: +# "using /bin/sh, even though it may have file descriptor bugs" +GZIP_CONF_ENV += ac_cv_path_shell=/bin/sh + +$(eval $(autotools-package)) diff --git a/buildroot/package/hans/Config.in b/buildroot/package/hans/Config.in new file mode 100644 index 0000000..54bdfd9 --- /dev/null +++ b/buildroot/package/hans/Config.in @@ -0,0 +1,14 @@ +comment "hans needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_HANS + bool "hans" + depends on BR2_INSTALL_LIBSTDCPP + help + Hans makes it possible to tunnel IPv4 through ICMP echo + packets, so you could call it a ping tunnel. + This can be useful when you find yourself in the situation + that your Internet access is firewalled, but pings are + allowed. + + http://code.gerade.org/hans/ diff --git a/buildroot/package/hans/hans.hash b/buildroot/package/hans/hans.hash new file mode 100644 index 0000000..bde6a7a --- /dev/null +++ b/buildroot/package/hans/hans.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/hanstunnel/files/source/ +md5 8628393ec1b61a6c3a47a0a3dcb455b3 hans-1.0.tar.gz +sha1 0bc857df109af222732cb95c861a0f0a6dd53dee hans-1.0.tar.gz +# Locally computed +sha256 f8f70cf22ba14d9223695c9e9a2d75289d8360f61f533b83ee538836f29a458e hans-1.0.tar.gz diff --git a/buildroot/package/hans/hans.mk b/buildroot/package/hans/hans.mk new file mode 100644 index 0000000..e26c2f3 --- /dev/null +++ b/buildroot/package/hans/hans.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# hans +# +################################################################################ + +HANS_VERSION = 1.0 +HANS_SITE = http://downloads.sourceforge.net/project/hanstunnel/source +HANS_LICENSE = GPL-3.0+ +HANS_LICENSE_FILES = LICENSE + +define HANS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) GCC="$(TARGET_CC)" GPP="$(TARGET_CXX)" -C $(@D) +endef + +define HANS_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/hans $(TARGET_DIR)/usr/sbin/hans +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/harfbuzz/Config.in b/buildroot/package/harfbuzz/Config.in new file mode 100644 index 0000000..a6db984 --- /dev/null +++ b/buildroot/package/harfbuzz/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_HARFBUZZ + bool "harfbuzz" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + help + HarfBuzz is an OpenType text shaping engine + + http://www.freedesktop.org/wiki/Software/HarfBuzz/ + + Harfbuzz can make optional use of cairo, freetype, + glib2 and icu packages if they are selected. + +comment "harfbuzz needs a toolchain w/ C++" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/harfbuzz/harfbuzz.hash b/buildroot/package/harfbuzz/harfbuzz.hash new file mode 100644 index 0000000..5f786dc --- /dev/null +++ b/buildroot/package/harfbuzz/harfbuzz.hash @@ -0,0 +1,5 @@ +# From https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-1.7.1.tar.bz2.sha256 +sha256 9645a6e83313b690602017f18d4eb2adf81f2e54c6fc4471e19331304965154e harfbuzz-1.7.1.tar.bz2 + +# Locally computed +sha256 2a886915de4f296cdae5ed67064f86dba01d0c55286d86e8487f2a5caaf40216 COPYING diff --git a/buildroot/package/harfbuzz/harfbuzz.mk b/buildroot/package/harfbuzz/harfbuzz.mk new file mode 100644 index 0000000..5708745 --- /dev/null +++ b/buildroot/package/harfbuzz/harfbuzz.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# harfbuzz +# +################################################################################ + +HARFBUZZ_VERSION = 1.7.1 +HARFBUZZ_SITE = https://www.freedesktop.org/software/harfbuzz/release +HARFBUZZ_SOURCE = harfbuzz-$(HARFBUZZ_VERSION).tar.bz2 +HARFBUZZ_LICENSE = MIT, ISC (ucdn library) +HARFBUZZ_LICENSE_FILES = COPYING src/hb-ucdn/COPYING +HARFBUZZ_INSTALL_STAGING = YES +HARFBUZZ_CONF_OPTS = --with-coretext=no --with-uniscribe=no + +# freetype & glib2 support required by host-pango +HOST_HARFBUZZ_DEPENDENCIES = \ + host-freetype \ + host-libglib2 +HOST_HARFBUZZ_CONF_OPTS = \ + --with-coretext=no \ + --with-uniscribe=no \ + --with-graphite2=no \ + --with-cairo=no \ + --with-icu=no \ + --with-freetype=yes \ + --with-glib=yes + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +# forgets to link test programs with -pthread breaking static link +HARFBUZZ_CONF_ENV = LDFLAGS="$(TARGET_LDFLAGS) -pthread" +endif + +ifeq ($(BR2_PACKAGE_CAIRO),y) +HARFBUZZ_DEPENDENCIES += cairo +HARFBUZZ_CONF_OPTS += --with-cairo=yes +else +HARFBUZZ_CONF_OPTS += --with-cairo=no +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +HARFBUZZ_DEPENDENCIES += freetype +HARFBUZZ_CONF_OPTS += --with-freetype=yes +else +HARFBUZZ_CONF_OPTS += --with-freetype=no +endif + +ifeq ($(BR2_PACKAGE_GRAPHITE2),y) +HARFBUZZ_DEPENDENCIES += graphite2 +HARFBUZZ_CONF_OPTS += --with-graphite2=yes +else +HARFBUZZ_CONF_OPTS += --with-graphite2=no +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +HARFBUZZ_DEPENDENCIES += libglib2 +HARFBUZZ_CONF_OPTS += --with-glib=yes +else +HARFBUZZ_CONF_OPTS += --with-glib=no +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +HARFBUZZ_DEPENDENCIES += icu +HARFBUZZ_CONF_OPTS += --with-icu=yes +else +HARFBUZZ_CONF_OPTS += --with-icu=no +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/haserl/0001-add-haserl_lualib.inc.patch b/buildroot/package/haserl/0001-add-haserl_lualib.inc.patch new file mode 100644 index 0000000..f9e2a95 --- /dev/null +++ b/buildroot/package/haserl/0001-add-haserl_lualib.inc.patch @@ -0,0 +1,149 @@ +[HACK] add preprocessed lualib file so host-lua isn't needed + +Haserl no longer ships with haserl_lualib.inc, causing lua2c (which needs +host-lua support) to be built to generate it. + +Re-add .inc file from 0.9.33 so we don't need host-lua. + +Signed-off-by: Peter Korsgaard +Signed-off-by: Max Filippov +--- + src/Makefile.in | 3 - + src/haserl_lualib.inc | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 98 insertions(+), 2 deletions(-) + +Index: haserl-0.9.33/src/haserl_lualib.inc +=================================================================== +--- /dev/null ++++ haserl-0.9.33/src/haserl_lualib.inc +@@ -0,0 +1,109 @@ ++/* This file was automatically generated from haserl_lualib.lua. DO NOT EDIT */ ++ ++static const unsigned char haserl_lualib[] = { ++ 27, 76,117, 97, 81, 0, 1, 4, 8, 4, 8, 0, 19, 0, 0, 0, ++ 0, 0, 0, 0, 64,104, 97,115,101,114,108, 95,108,117, 97,108, ++ 105, 98, 46,108,117, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 2, 7, 24, 0, 0, 0, 10, 0, 0, 0, 74, 0, 0, 0,138, ++ 0, 0, 0,202, 0, 0, 0, 10, 1, 0, 0, 74, 1, 0, 0,138, ++ 1, 0, 0,135,129, 1, 0, 71, 65, 1, 0, 7, 1, 1, 0,199, ++ 192, 0, 0,135,128, 0, 0, 71, 64, 0, 0, 7, 0, 0, 0, 5, ++ 0, 0, 0,100, 0, 0, 0, 9, 64,128,131, 5, 0, 0, 0,100, ++ 64, 0, 0, 9, 64, 0,132, 5, 0, 0, 0,100,128, 0, 0, 9, ++ 64,128,132, 30, 0,128, 0, 10, 0, 0, 0, 4, 7, 0, 0, 0, ++ 0, 0, 0, 0,104, 97,115,101,114,108, 0, 4, 5, 0, 0, 0, ++ 0, 0, 0, 0, 70, 79, 82, 77, 0, 4, 4, 0, 0, 0, 0, 0, ++ 0, 0, 69, 78, 86, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 67, ++ 79, 79, 75, 73, 69, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 72, ++ 65, 83, 69, 82, 76, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 71, ++ 69, 84, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 80, 79, 83, 84, ++ 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,115,101,116,102,105,101, ++ 108,100, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,103,101,116,102, ++ 105,101,108,100, 0, 4, 9, 0, 0, 0, 0, 0, 0, 0,109,121, ++ 112,117,116,101,110,118, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 25, 0, 0, 0, 39, 0, 0, 0, 0, 2, 0, 10, 29, ++ 0, 0, 0,133, 0, 0, 0,197, 64, 0, 0,198,128,192, 1, 0, ++ 1, 0, 0, 65,193, 0, 0,220, 0,129, 1, 22,128, 4,128, 5, ++ 2, 1, 0, 64, 2, 0, 3, 28,130, 0, 1, 26, 2, 0, 0, 22, ++ 192, 0,128, 5, 2, 1, 0, 64, 2, 0, 3, 28,130, 0, 1,128, ++ 1, 0, 4, 23, 64,193, 3, 22,128, 1,128, 6,130, 1, 1, 26, ++ 66, 0, 0, 22, 0, 0,128, 10, 2, 0, 0,137, 0, 2, 3,134, ++ 128, 1, 1, 22, 0, 0,128,137, 64, 0, 3,225,128, 0, 0, 22, ++ 128,250,127, 30, 0,128, 0, 6, 0, 0, 0, 4, 3, 0, 0, 0, ++ 0, 0, 0, 0, 95, 71, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, ++ 115,116,114,105,110,103, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, ++ 103,109, 97,116, 99,104, 0, 4, 15, 0, 0, 0, 0, 0, 0, 0, ++ 40, 91, 37,119, 95, 37, 45, 93, 43, 41, 40, 46, 63, 41, 0, 4, ++ 9, 0, 0, 0, 0, 0, 0, 0,116,111,110,117,109, 98,101,114, ++ 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, ++ 29, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, ++ 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, ++ 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, ++ 29, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, ++ 30, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, ++ 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, ++ 34, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 28, 0, 0, 0, ++ 37, 0, 0, 0, 39, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, ++ 0, 0, 0, 0,102, 0, 0, 0, 0, 0, 28, 0, 0, 0, 2, 0, ++ 0, 0, 0, 0, 0, 0,118, 0, 0, 0, 0, 0, 28, 0, 0, 0, ++ 2, 0, 0, 0, 0, 0, 0, 0,116, 0, 1, 0, 0, 0, 28, 0, ++ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,103, ++ 101,110,101,114, 97,116,111,114, 41, 0, 6, 0, 0, 0, 28, 0, ++ 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 40,102,111,114, 32,115, ++ 116, 97,116,101, 41, 0, 6, 0, 0, 0, 28, 0, 0, 0, 14, 0, ++ 0, 0, 0, 0, 0, 0, 40,102,111,114, 32, 99,111,110,116,114, ++ 111,108, 41, 0, 6, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, ++ 0, 0, 0, 0,119, 0, 7, 0, 0, 0, 26, 0, 0, 0, 2, 0, ++ 0, 0, 0, 0, 0, 0,100, 0, 7, 0, 0, 0, 26, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, ++ 47, 0, 0, 0, 0, 1, 0, 8, 12, 0, 0, 0, 69, 0, 0, 0, ++ 133, 64, 0, 0,134,128, 64, 1,192, 0, 0, 0, 1,193, 0, 0, ++ 156, 0,129, 1, 22, 0, 0,128, 70, 64,129, 0,161, 64, 0, 0, ++ 22, 0,255,127, 94, 0, 0, 1, 30, 0,128, 0, 4, 0, 0, 0, ++ 4, 3, 0, 0, 0, 0, 0, 0, 0, 95, 71, 0, 4, 7, 0, 0, ++ 0, 0, 0, 0, 0,115,116,114,105,110,103, 0, 4, 7, 0, 0, ++ 0, 0, 0, 0, 0,103,109, 97,116, 99,104, 0, 4, 7, 0, 0, ++ 0, 0, 0, 0, 0, 91, 37,119, 95, 93, 43, 0, 0, 0, 0, 0, ++ 12, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, ++ 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, ++ 44, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, ++ 47, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, ++ 102, 0, 0, 0, 0, 0, 11, 0, 0, 0, 2, 0, 0, 0, 0, 0, ++ 0, 0,118, 0, 1, 0, 0, 0, 11, 0, 0, 0, 16, 0, 0, 0, ++ 0, 0, 0, 0, 40,102,111,114, 32,103,101,110,101,114, 97,116, ++ 111,114, 41, 0, 6, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, ++ 0, 0, 0, 0, 40,102,111,114, 32,115,116, 97,116,101, 41, 0, ++ 6, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, ++ 40,102,111,114, 32, 99,111,110,116,114,111,108, 41, 0, 6, 0, ++ 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,119, 0, ++ 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 49, 0, 0, 0, 55, 0, 0, 0, 0, 2, 0, 6, ++ 20, 0, 0, 0,133, 0, 0, 0,134, 64, 64, 1,192, 0, 0, 0, ++ 1,129, 0, 0, 65,193, 0, 0,156,128, 0, 2, 0, 0, 0, 1, ++ 133, 0, 0, 0,134, 64, 64, 1,192, 0, 0, 0, 1, 1, 1, 0, ++ 65,193, 0, 0,156,128, 0, 2, 0, 0, 0, 1,133, 64, 1, 0, ++ 134,128, 65, 1,192, 0, 0, 0, 0, 1,128, 0,156, 64,128, 1, ++ 30, 0,128, 0, 7, 0, 0, 0, 4, 7, 0, 0, 0, 0, 0, 0, ++ 0,115,116,114,105,110,103, 0, 4, 5, 0, 0, 0, 0, 0, 0, ++ 0,103,115,117, 98, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0, 91, ++ 92, 93, 92, 91, 93, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 46, ++ 0, 4, 6, 0, 0, 0, 0, 0, 0, 0, 91, 92, 46, 93, 43, 0, ++ 4, 7, 0, 0, 0, 0, 0, 0, 0,104, 97,115,101,114,108, 0, ++ 4, 9, 0, 0, 0, 0, 0, 0, 0,115,101,116,102,105,101,108, ++ 100, 0, 0, 0, 0, 0, 20, 0, 0, 0, 51, 0, 0, 0, 51, 0, ++ 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 51, 0, ++ 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, ++ 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, 0, 0, 52, 0, ++ 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 54, 0, ++ 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 2, 0, 0, 0, 4, 0, ++ 0, 0, 0, 0, 0, 0,107,101,121, 0, 0, 0, 0, 0, 19, 0, ++ 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,118, 97,108,117,101, 0, ++ 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, ++ 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, ++ 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, ++ 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, ++ 23, 0, 0, 0, 23, 0, 0, 0, 25, 0, 0, 0, 39, 0, 0, 0, ++ 25, 0, 0, 0, 41, 0, 0, 0, 47, 0, 0, 0, 41, 0, 0, 0, ++ 49, 0, 0, 0, 55, 0, 0, 0, 49, 0, 0, 0, 55, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, ++}; +Index: haserl-0.9.29/src/Makefile.in +=================================================================== +--- haserl-0.9.29.orig/src/Makefile.in ++++ haserl-0.9.29/src/Makefile.in +@@ -32,7 +32,6 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : +-@USE_LUA_TRUE@noinst_PROGRAMS = lua2c$(EXEEXT) + @INCLUDE_LUASHELL_TRUE@@USE_LUA_TRUE@am__append_1 = h_lua.c h_lua.h + @INCLUDE_LUACSHELL_TRUE@@USE_LUA_TRUE@am__append_2 = h_luac.c h_luac.h + bin_PROGRAMS = haserl$(EXEEXT) +@@ -515,7 +514,7 @@ + @USE_LUA_TRUE@ $(CC_FOR_BUILD) $(CFLAGS) $(LDFLAGS) $(lua2c_LDFLAGS) \ + @USE_LUA_TRUE@ -o $@ $^ $(LIBS) + +-@USE_LUA_TRUE@haserl_lualib.inc : haserl_lualib.lua lua2c ++@USE_LUA_TRUE@haserl_lualib.inc : + @USE_LUA_TRUE@ if ! ./lua2c haserl_lualib haserl_lualib.lua >$@; then \ + @USE_LUA_TRUE@ rm $@; \ + @USE_LUA_TRUE@ exit 1 ;\ diff --git a/buildroot/package/haserl/Config.in b/buildroot/package/haserl/Config.in new file mode 100644 index 0000000..9ccc392 --- /dev/null +++ b/buildroot/package/haserl/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_HASERL + bool "haserl" + depends on BR2_USE_MMU # fork() + help + Haserl is a small cgi wrapper that enables shell scripts to be + embedded into html documents. It is intended for environments + where something like PHP is too big. + + http://haserl.sourceforge.net/ + +config BR2_PACKAGE_HASERL_WITH_LUA + bool "Lua support" + depends on BR2_PACKAGE_HASERL + depends on BR2_PACKAGE_LUA + help + Enable Lua support for haserl diff --git a/buildroot/package/haserl/haserl.hash b/buildroot/package/haserl/haserl.hash new file mode 100644 index 0000000..2b23a6c --- /dev/null +++ b/buildroot/package/haserl/haserl.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/haserl/files/haserl-devel/ +md5 918f0b4f6cec0b438c8b5c78f2989010 haserl-0.9.35.tar.gz +sha1 9a331d41e9d47a81e81e158f9a16bf5443347cd4 haserl-0.9.35.tar.gz diff --git a/buildroot/package/haserl/haserl.mk b/buildroot/package/haserl/haserl.mk new file mode 100644 index 0000000..4c24b9b --- /dev/null +++ b/buildroot/package/haserl/haserl.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# haserl +# +################################################################################ + +HASERL_VERSION = 0.9.35 +HASERL_SITE = http://downloads.sourceforge.net/project/haserl/haserl-devel +HASERL_LICENSE = GPL-2.0 +HASERL_LICENSE_FILES = COPYING +HASERL_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_HASERL_WITH_LUA),y) +HASERL_CONF_OPTS += --with-lua +HASERL_DEPENDENCIES += lua + +# liblua uses dlopen when dynamically linked +ifneq ($(BR2_STATIC_LIBS),y) +HASERL_CONF_ENV += LIBS="-ldl" +endif + +else +HASERL_CONF_OPTS += --without-lua +endif + +define HASERL_REMOVE_EXAMPLES + rm -rf $(TARGET_DIR)/usr/share/haserl +endef + +HASERL_POST_INSTALL_TARGET_HOOKS += HASERL_REMOVE_EXAMPLES + +$(eval $(autotools-package)) diff --git a/buildroot/package/haveged/Config.in b/buildroot/package/haveged/Config.in new file mode 100644 index 0000000..0e49a2d --- /dev/null +++ b/buildroot/package/haveged/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HAVEGED + bool "haveged" + depends on BR2_USE_MMU # fork() + help + The haveged project is an attempt to provide an easy-to-use, + unpredictable random number generator based upon an adaptation + of the HAVEGE algorithm. + + http://www.issihosts.com/haveged/ diff --git a/buildroot/package/haveged/S21haveged b/buildroot/package/haveged/S21haveged new file mode 100755 index 0000000..3e6ce86 --- /dev/null +++ b/buildroot/package/haveged/S21haveged @@ -0,0 +1,25 @@ +#!/bin/sh + +[ -x /usr/sbin/haveged ] || exit 0 + +case "$1" in + start) + printf "Starting haveged: " + start-stop-daemon -S -x /usr/sbin/haveged -- -w 1024 -r 0 + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping haveged: " + start-stop-daemon -K -x /usr/sbin/haveged + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit 0 diff --git a/buildroot/package/haveged/haveged.hash b/buildroot/package/haveged/haveged.hash new file mode 100644 index 0000000..d1133b6 --- /dev/null +++ b/buildroot/package/haveged/haveged.hash @@ -0,0 +1,2 @@ +# From http://www.issihosts.com/haveged/verify/haveged-1.9.1.sha1 +sha1 ab7234b7f57dbb7d500a5ab3cbf0494715ce6499 haveged-1.9.1.tar.gz diff --git a/buildroot/package/haveged/haveged.mk b/buildroot/package/haveged/haveged.mk new file mode 100644 index 0000000..a645557 --- /dev/null +++ b/buildroot/package/haveged/haveged.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# haveged +# +################################################################################ + +HAVEGED_VERSION = 1.9.1 +HAVEGED_SITE = http://www.issihosts.com/haveged +HAVEGED_LICENSE = GPL-3.0+ +HAVEGED_LICENSE_FILES = COPYING + +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +HAVEGED_CONF_OPTS += --enable-clock_gettime=yes +endif + +define HAVEGED_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/haveged/S21haveged \ + $(TARGET_DIR)/etc/init.d/S21haveged +endef + +define HAVEGED_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/haveged/haveged.service \ + $(TARGET_DIR)/usr/lib/systemd/system/haveged.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs /usr/lib/systemd/system/haveged.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/haveged.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/haveged/haveged.service b/buildroot/package/haveged/haveged.service new file mode 100644 index 0000000..91035c6 --- /dev/null +++ b/buildroot/package/haveged/haveged.service @@ -0,0 +1,10 @@ +[Unit] +Description=Entropy Harvesting Daemon +Documentation=man:haveged(8) + +[Service] +ExecStart=/usr/sbin/haveged -F -w 1024 -v 1 +SuccessExitStatus=143 + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/hdparm/Config.in b/buildroot/package/hdparm/Config.in new file mode 100644 index 0000000..52385b1 --- /dev/null +++ b/buildroot/package/hdparm/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HDPARM + bool "hdparm" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + hdparm - get/set hard disk parameters for Linux IDE drives. + + http://www.ibiblio.org/pub/Linux/system/hardware/ diff --git a/buildroot/package/hdparm/hdparm.hash b/buildroot/package/hdparm/hdparm.hash new file mode 100644 index 0000000..f7462e2 --- /dev/null +++ b/buildroot/package/hdparm/hdparm.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/hdparm/files/hdparm/ +md5 410539d0bf3cc247181594581edbfb53 hdparm-9.52.tar.gz +sha1 c641429c5b5d0513acfc86dc31c6b3b35c070a70 hdparm-9.52.tar.gz +# Locally computed +sha256 c3429cd423e271fa565bf584598fd751dd2e773bb7199a592b06b5a61cec4fb6 hdparm-9.52.tar.gz diff --git a/buildroot/package/hdparm/hdparm.mk b/buildroot/package/hdparm/hdparm.mk new file mode 100644 index 0000000..7272202 --- /dev/null +++ b/buildroot/package/hdparm/hdparm.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# hdparm +# +################################################################################ + +HDPARM_VERSION = 9.52 +HDPARM_SITE = http://downloads.sourceforge.net/project/hdparm/hdparm +HDPARM_LICENSE = BSD-Style +HDPARM_LICENSE_FILES = LICENSE.TXT + +define HDPARM_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + STRIP=/bin/true +endef + +define HDPARM_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/hdparm $(TARGET_DIR)/sbin/hdparm +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/heimdal/heimdal.hash b/buildroot/package/heimdal/heimdal.hash new file mode 100644 index 0000000..ac26aa6 --- /dev/null +++ b/buildroot/package/heimdal/heimdal.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c5a2a0030fcc728022fa2332bad85569084d1c3b9a59587b7ebe141b0532acad heimdal-7.5.0.tar.gz diff --git a/buildroot/package/heimdal/heimdal.mk b/buildroot/package/heimdal/heimdal.mk new file mode 100644 index 0000000..5f7b6c6 --- /dev/null +++ b/buildroot/package/heimdal/heimdal.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# heimdal +# +################################################################################ + +HEIMDAL_VERSION = 7.5.0 +HEIMDAL_SITE = https://github.com/heimdal/heimdal/releases/download/heimdal-$(HEIMDAL_VERSION) +HOST_HEIMDAL_DEPENDENCIES = host-e2fsprogs host-ncurses host-pkgconf +HEIMDAL_INSTALL_STAGING = YES +HEIMDAL_MAKE = $(MAKE1) +# static because of -fPIC issues with e2fsprogs on x86_64 host +HOST_HEIMDAL_CONF_OPTS = \ + --disable-shared \ + --enable-static \ + --without-openldap \ + --without-capng \ + --with-db-type-preference= \ + --without-sqlite3 \ + --without-libintl \ + --without-openssl \ + --without-berkeley-db \ + --without-readline \ + --without-libedit \ + --without-hesiod \ + --without-x \ + --disable-mdb-db \ + --disable-ndbm-db \ + --disable-heimdal-documentation + +HOST_HEIMDAL_CONF_ENV = MAKEINFO=true +HEIMDAL_LICENSE = BSD-3-Clause +HEIMDAL_LICENSE_FILES = LICENSE + +# We need asn1_compile in the PATH for samba4 +define HOST_HEIMDAL_MAKE_SYMLINK + ln -sf $(HOST_DIR)/libexec/heimdal/asn1_compile \ + $(HOST_DIR)/bin/asn1_compile + ln -sf $(HOST_DIR)/bin/compile_et \ + $(HOST_DIR)/libexec/heimdal/compile_et +endef + +HOST_HEIMDAL_POST_INSTALL_HOOKS += HOST_HEIMDAL_MAKE_SYMLINK + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/heirloom-mailx/0001-Patched-out-SSL2-support-since-it-is-no-longer-suppo.patch b/buildroot/package/heirloom-mailx/0001-Patched-out-SSL2-support-since-it-is-no-longer-suppo.patch new file mode 100644 index 0000000..db5b19e --- /dev/null +++ b/buildroot/package/heirloom-mailx/0001-Patched-out-SSL2-support-since-it-is-no-longer-suppo.patch @@ -0,0 +1,42 @@ +From: Hilko Bengen +Date: Wed, 27 Apr 2011 00:18:42 +0200 +Subject: Patched out SSL2 support since it is no longer supported by OpenSSL. + +Now that openssl has dropped SSLv2 support we need to patch it out. +Patch picked up from debian patchseries 5. + +Signed-off-by: Gustavo Zacarias + +--- + mailx.1 | 2 +- + openssl.c | 4 +--- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/mailx.1 b/mailx.1 +index 417ea04..a02e430 100644 +--- a/mailx.1 ++++ b/mailx.1 +@@ -3575,7 +3575,7 @@ Only applicable if SSL/TLS support is built using OpenSSL. + .TP + .B ssl-method + Selects a SSL/TLS protocol version; +-valid values are `ssl2', `ssl3', and `tls1'. ++valid values are `ssl3', and `tls1'. + If unset, the method is selected automatically, + if possible. + .TP +diff --git a/openssl.c b/openssl.c +index b4e33fc..44fe4e5 100644 +--- a/openssl.c ++++ b/openssl.c +@@ -216,9 +216,7 @@ ssl_select_method(const char *uhp) + + cp = ssl_method_string(uhp); + if (cp != NULL) { +- if (equal(cp, "ssl2")) +- method = SSLv2_client_method(); +- else if (equal(cp, "ssl3")) ++ if (equal(cp, "ssl3")) + method = SSLv3_client_method(); + else if (equal(cp, "tls1")) + method = TLSv1_client_method(); diff --git a/buildroot/package/heirloom-mailx/0002-fix-libressl-support.patch b/buildroot/package/heirloom-mailx/0002-fix-libressl-support.patch new file mode 100644 index 0000000..0fafa4a --- /dev/null +++ b/buildroot/package/heirloom-mailx/0002-fix-libressl-support.patch @@ -0,0 +1,54 @@ +From aad28d30af6c3a74c522dd61943788e908860c84 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Fri, 4 Aug 2017 07:22:47 -0400 +Subject: [PATCH] fix libressl support + +heirloom-mailx has two small issues when compiling against LibreSSL: + - RAND_egd is used (LibreSSL does not support RAND_egd) + Solution: "Guard" the code calling RAND_egd + + - SSLv3_client_method function is used (LibreSSL does not support SSLv3) + Solution: "Guard" the code with #ifndef OPENSSL_NO_SSL3 + +Signed-off-by: Adam Duskett +--- + openssl.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/openssl.c b/openssl.c +index 44fe4e5..c4a1bb7 100644 +--- a/openssl.c ++++ b/openssl.c +@@ -137,11 +137,13 @@ ssl_rand_init(void) + + if ((cp = value("ssl-rand-egd")) != NULL) { + cp = expand(cp); ++#ifndef OPENSSL_NO_EGD + if (RAND_egd(cp) == -1) { + fprintf(stderr, catgets(catd, CATSET, 245, + "entropy daemon at \"%s\" not available\n"), + cp); + } else ++#endif + state = 1; + } else if ((cp = value("ssl-rand-file")) != NULL) { + cp = expand(cp); +@@ -216,10 +218,15 @@ ssl_select_method(const char *uhp) + + cp = ssl_method_string(uhp); + if (cp != NULL) { ++ #ifndef OPENSSL_NO_SSL3 + if (equal(cp, "ssl3")) + method = SSLv3_client_method(); + else if (equal(cp, "tls1")) + method = TLSv1_client_method(); ++ #else ++ if (equal(cp, "tls1")) ++ method = TLSv1_client_method(); ++ #endif + else { + fprintf(stderr, catgets(catd, CATSET, 244, + "Invalid SSL method \"%s\"\n"), cp); +-- +2.13.3 + diff --git a/buildroot/package/heirloom-mailx/Config.in b/buildroot/package/heirloom-mailx/Config.in new file mode 100644 index 0000000..87664b4 --- /dev/null +++ b/buildroot/package/heirloom-mailx/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_HEIRLOOM_MAILX + bool "heirloom-mailx" + # uses fork() + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + help + Heirloom mailx (previously known as nail) is a mail user + agent for Unix systems. + + It can be used as a command-line mail reader, but also more + importantly on embedded systems, as a mail composition + program and SMTP client, in order to send e-mail from shell + scripts. It supports SMTP authentication (login, plain, + cram-md5), SMTPS, MIME encoding of attachements, and more. + + http://heirloom.sourceforge.net/mailx.html + +comment "heirloom-mailx needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/buildroot/package/heirloom-mailx/heirloom-mailx.hash b/buildroot/package/heirloom-mailx/heirloom-mailx.hash new file mode 100644 index 0000000..6fc36c9 --- /dev/null +++ b/buildroot/package/heirloom-mailx/heirloom-mailx.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/h/heirloom-mailx/heirloom-mailx_12.5-3.dsc +sha256 015ba4209135867f37a0245d22235a392b8bbed956913286b887c2e2a9a421ad heirloom-mailx_12.5.orig.tar.gz diff --git a/buildroot/package/heirloom-mailx/heirloom-mailx.mk b/buildroot/package/heirloom-mailx/heirloom-mailx.mk new file mode 100644 index 0000000..2f7e635 --- /dev/null +++ b/buildroot/package/heirloom-mailx/heirloom-mailx.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# heirloom-mailx +# +################################################################################ + +HEIRLOOM_MAILX_VERSION = 12.5 +HEIRLOOM_MAILX_SOURCE = heirloom-mailx_$(HEIRLOOM_MAILX_VERSION).orig.tar.gz +HEIRLOOM_MAILX_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/h/heirloom-mailx +HEIRLOOM_MAILX_LICENSE = BSD-4-Clause, Bellcore (base64), OpenVision (imap_gssapi), RSA Data Security (md5), Network Working Group (hmac), MPL-1.1 (nss) +HEIRLOOM_MAILX_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +HEIRLOOM_MAILX_DEPENDENCIES += openssl +endif + +define HEIRLOOM_MAILX_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) $(SHELL) ./makeconfig) +endef + +# -fPIC is needed to build with NIOS2 toolchains. +define HEIRLOOM_MAILX_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + CFLAGS="$(TARGET_CFLAGS) -fPIC" \ + -C $(@D) +endef + +define HEIRLOOM_MAILX_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + PREFIX=/usr \ + UCBINSTALL=$(INSTALL) \ + STRIP=/bin/true \ + DESTDIR=$(TARGET_DIR) \ + install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/hiawatha/0001-cmake-allow-build-without-c.patch b/buildroot/package/hiawatha/0001-cmake-allow-build-without-c.patch new file mode 100644 index 0000000..d264d62 --- /dev/null +++ b/buildroot/package/hiawatha/0001-cmake-allow-build-without-c.patch @@ -0,0 +1,34 @@ +From 784e46afd7530f3010726ba73cc1a81059eae8bf Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Mon, 5 Jun 2017 13:26:18 +0200 +Subject: [PATCH] cmake: allow build without c++ + +By default cmake also searches for a c++ compiler: +https://cmake.org/cmake/help/v3.7/command/project.html +"By default C and CXX are enabled if no language options are given." + +This patch restricts the compiler to C to fix a build error detected +by the buildroot autobuilders: +http://autobuild.buildroot.net/results/c04/c04ff29b83c020573add597c355c57a6d9c9761d/build-end.log + +Patch sent upstream: https://github.com/hsleisink/hiawatha/pull/30 + +Signed-off-by: Bernd Kuhls +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4f28d76..e8051fc 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,5 +1,5 @@ + cmake_minimum_required(VERSION 3.0) +-project(Hiawatha VERSION 10.6) ++project(Hiawatha VERSION 10.6 LANGUAGES C) + + # Compiler + set(CMAKE_C_FLAGS "-O2 -Wall -Wextra ${CMAKE_C_FLAGS}") +-- +2.11.0 + diff --git a/buildroot/package/hiawatha/Config.in b/buildroot/package/hiawatha/Config.in new file mode 100644 index 0000000..68e47fd --- /dev/null +++ b/buildroot/package/hiawatha/Config.in @@ -0,0 +1,35 @@ +comment "hiawatha needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_HIAWATHA + bool "hiawatha" + # needs fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_ZLIB + help + Hiawatha is a webserver for Unix and has been built with + security in mind. This resulted in a highly secure + webserver, in both code and features. + + This webserver runs on Linux, BSD, MacOS X and + Windows. Although it can run any kind of CGI / FastCGI + application, it has been optimized for usage with PHP. Most + well known PHP frameworks and CMS applications have been + tested with Hiawatha and ran without a problem. Hiawatha + supports many web and HTTP features such as CGI/FastCGI, + HTTP authentication, virtual host support, request + pipelining, keep alive connections, URL rewriting and many + more. + + http://www.hiawatha-webserver.org/ + +if BR2_PACKAGE_HIAWATHA + +config BR2_PACKAGE_HIAWATHA_SSL + bool "hiawatha TLS support" + select BR2_PACKAGE_MBEDTLS + +endif diff --git a/buildroot/package/hiawatha/hiawatha.hash b/buildroot/package/hiawatha/hiawatha.hash new file mode 100644 index 0000000..3ec11cc --- /dev/null +++ b/buildroot/package/hiawatha/hiawatha.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0cf014ae214be1bf6244c46c25e66805987c948837a4e37f9dede570de49bdeb hiawatha-10.6.tar.gz diff --git a/buildroot/package/hiawatha/hiawatha.mk b/buildroot/package/hiawatha/hiawatha.mk new file mode 100644 index 0000000..4dde254 --- /dev/null +++ b/buildroot/package/hiawatha/hiawatha.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# hiawatha +# +################################################################################ + +HIAWATHA_VERSION = 10.6 +HIAWATHA_SITE = https://www.hiawatha-webserver.org/files +HIAWATHA_DEPENDENCIES = zlib +HIAWATHA_LICENSE = GPL-2.0 +HIAWATHA_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_HIAWATHA_SSL),y) +HIAWATHA_CONF_OPTS += -DUSE_SYSTEM_MBEDTLS=ON +HIAWATHA_DEPENDENCIES += mbedtls +else +HIAWATHA_CONF_OPTS += -DENABLE_TLS=OFF +endif + +HIAWATHA_CONF_OPTS += \ + -DENABLE_TOOLKIT=OFF \ + -DENABLE_XSLT=OFF \ + -DCONFIG_DIR=/etc/hiawatha \ + -DLOG_DIR=/var/log \ + -DPID_DIR=/var/run \ + -DWEBROOT_DIR=/var/www/hiawatha \ + -DWORK_DIR=/var/lib/hiawatha + +$(eval $(cmake-package)) diff --git a/buildroot/package/hicolor-icon-theme/Config.in b/buildroot/package/hicolor-icon-theme/Config.in new file mode 100644 index 0000000..10edbf8 --- /dev/null +++ b/buildroot/package/hicolor-icon-theme/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HICOLOR_ICON_THEME + bool "hicolor icon theme" + help + Freedesktop Hicolor icon theme + + This is the fallback icon theme, which only creates the + standard directory structure for storing icons of third-party + applications (i.e. the ones not available in usual icon + themes). diff --git a/buildroot/package/hicolor-icon-theme/hicolor-icon-theme.hash b/buildroot/package/hicolor-icon-theme/hicolor-icon-theme.hash new file mode 100644 index 0000000..522dcfc --- /dev/null +++ b/buildroot/package/hicolor-icon-theme/hicolor-icon-theme.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9cc45ac3318c31212ea2d8cb99e64020732393ee7630fa6c1810af5f987033cc hicolor-icon-theme-0.15.tar.xz diff --git a/buildroot/package/hicolor-icon-theme/hicolor-icon-theme.mk b/buildroot/package/hicolor-icon-theme/hicolor-icon-theme.mk new file mode 100644 index 0000000..dec75c1 --- /dev/null +++ b/buildroot/package/hicolor-icon-theme/hicolor-icon-theme.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# hicolor-icon-theme +# +################################################################################ + +HICOLOR_ICON_THEME_VERSION = 0.15 +HICOLOR_ICON_THEME_SITE = http://icon-theme.freedesktop.org/releases +HICOLOR_ICON_THEME_SOURCE = hicolor-icon-theme-$(HICOLOR_ICON_THEME_VERSION).tar.xz +HICOLOR_ICON_THEME_LICENSE = GPL-2.0 +HICOLOR_ICON_THEME_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/hidapi/0001-hidtest-dont-use-a-C-source-file-since-it-s-pure-C.patch b/buildroot/package/hidapi/0001-hidtest-dont-use-a-C-source-file-since-it-s-pure-C.patch new file mode 100644 index 0000000..4740cb7 --- /dev/null +++ b/buildroot/package/hidapi/0001-hidtest-dont-use-a-C-source-file-since-it-s-pure-C.patch @@ -0,0 +1,445 @@ +From 2fb04c2245167e247b95400112b5dbea12fcb206 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 30 Dec 2015 20:02:29 +0100 +Subject: [PATCH] hidtest: dont' use a C++ source file, since it's pure C + +This allows to build the test program with toolchains that don't have +C++ support. + +Signed-off-by: Thomas Petazzoni +--- + hidtest/Makefile.am | 6 +- + hidtest/hidtest.c | 194 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + hidtest/hidtest.cpp | 194 ---------------------------------------------------- + 3 files changed, 197 insertions(+), 197 deletions(-) + create mode 100644 hidtest/hidtest.c + delete mode 100644 hidtest/hidtest.cpp + +diff --git a/hidtest/Makefile.am b/hidtest/Makefile.am +index d278644..5f52c3f 100644 +--- a/hidtest/Makefile.am ++++ b/hidtest/Makefile.am +@@ -4,17 +4,17 @@ AM_CPPFLAGS = -I$(top_srcdir)/hidapi/ + if OS_LINUX + noinst_PROGRAMS = hidtest-libusb hidtest-hidraw + +-hidtest_hidraw_SOURCES = hidtest.cpp ++hidtest_hidraw_SOURCES = hidtest.c + hidtest_hidraw_LDADD = $(top_builddir)/linux/libhidapi-hidraw.la + +-hidtest_libusb_SOURCES = hidtest.cpp ++hidtest_libusb_SOURCES = hidtest.c + hidtest_libusb_LDADD = $(top_builddir)/libusb/libhidapi-libusb.la + else + + # Other OS's + noinst_PROGRAMS = hidtest + +-hidtest_SOURCES = hidtest.cpp ++hidtest_SOURCES = hidtest.c + hidtest_LDADD = $(top_builddir)/$(backend)/libhidapi.la + + endif +diff --git a/hidtest/hidtest.c b/hidtest/hidtest.c +new file mode 100644 +index 0000000..94f0a5c +--- /dev/null ++++ b/hidtest/hidtest.c +@@ -0,0 +1,194 @@ ++/******************************************************* ++ Windows HID simplification ++ ++ Alan Ott ++ Signal 11 Software ++ ++ 8/22/2009 ++ ++ Copyright 2009 ++ ++ This contents of this file may be used by anyone ++ for any reason without any conditions and may be ++ used as a starting point for your own applications ++ which use HIDAPI. ++********************************************************/ ++ ++#include ++#include ++#include ++#include ++#include "hidapi.h" ++ ++// Headers needed for sleeping. ++#ifdef _WIN32 ++ #include ++#else ++ #include ++#endif ++ ++int main(int argc, char* argv[]) ++{ ++ int res; ++ unsigned char buf[256]; ++ #define MAX_STR 255 ++ wchar_t wstr[MAX_STR]; ++ hid_device *handle; ++ int i; ++ ++#ifdef WIN32 ++ UNREFERENCED_PARAMETER(argc); ++ UNREFERENCED_PARAMETER(argv); ++#endif ++ ++ struct hid_device_info *devs, *cur_dev; ++ ++ if (hid_init()) ++ return -1; ++ ++ devs = hid_enumerate(0x0, 0x0); ++ cur_dev = devs; ++ while (cur_dev) { ++ printf("Device Found\n type: %04hx %04hx\n path: %s\n serial_number: %ls", cur_dev->vendor_id, cur_dev->product_id, cur_dev->path, cur_dev->serial_number); ++ printf("\n"); ++ printf(" Manufacturer: %ls\n", cur_dev->manufacturer_string); ++ printf(" Product: %ls\n", cur_dev->product_string); ++ printf(" Release: %hx\n", cur_dev->release_number); ++ printf(" Interface: %d\n", cur_dev->interface_number); ++ printf("\n"); ++ cur_dev = cur_dev->next; ++ } ++ hid_free_enumeration(devs); ++ ++ // Set up the command buffer. ++ memset(buf,0x00,sizeof(buf)); ++ buf[0] = 0x01; ++ buf[1] = 0x81; ++ ++ ++ // Open the device using the VID, PID, ++ // and optionally the Serial number. ++ ////handle = hid_open(0x4d8, 0x3f, L"12345"); ++ handle = hid_open(0x4d8, 0x3f, NULL); ++ if (!handle) { ++ printf("unable to open device\n"); ++ return 1; ++ } ++ ++ // Read the Manufacturer String ++ wstr[0] = 0x0000; ++ res = hid_get_manufacturer_string(handle, wstr, MAX_STR); ++ if (res < 0) ++ printf("Unable to read manufacturer string\n"); ++ printf("Manufacturer String: %ls\n", wstr); ++ ++ // Read the Product String ++ wstr[0] = 0x0000; ++ res = hid_get_product_string(handle, wstr, MAX_STR); ++ if (res < 0) ++ printf("Unable to read product string\n"); ++ printf("Product String: %ls\n", wstr); ++ ++ // Read the Serial Number String ++ wstr[0] = 0x0000; ++ res = hid_get_serial_number_string(handle, wstr, MAX_STR); ++ if (res < 0) ++ printf("Unable to read serial number string\n"); ++ printf("Serial Number String: (%d) %ls", wstr[0], wstr); ++ printf("\n"); ++ ++ // Read Indexed String 1 ++ wstr[0] = 0x0000; ++ res = hid_get_indexed_string(handle, 1, wstr, MAX_STR); ++ if (res < 0) ++ printf("Unable to read indexed string 1\n"); ++ printf("Indexed String 1: %ls\n", wstr); ++ ++ // Set the hid_read() function to be non-blocking. ++ hid_set_nonblocking(handle, 1); ++ ++ // Try to read from the device. There shoud be no ++ // data here, but execution should not block. ++ res = hid_read(handle, buf, 17); ++ ++ // Send a Feature Report to the device ++ buf[0] = 0x2; ++ buf[1] = 0xa0; ++ buf[2] = 0x0a; ++ buf[3] = 0x00; ++ buf[4] = 0x00; ++ res = hid_send_feature_report(handle, buf, 17); ++ if (res < 0) { ++ printf("Unable to send a feature report.\n"); ++ } ++ ++ memset(buf,0,sizeof(buf)); ++ ++ // Read a Feature Report from the device ++ buf[0] = 0x2; ++ res = hid_get_feature_report(handle, buf, sizeof(buf)); ++ if (res < 0) { ++ printf("Unable to get a feature report.\n"); ++ printf("%ls", hid_error(handle)); ++ } ++ else { ++ // Print out the returned buffer. ++ printf("Feature Report\n "); ++ for (i = 0; i < res; i++) ++ printf("%02hhx ", buf[i]); ++ printf("\n"); ++ } ++ ++ memset(buf,0,sizeof(buf)); ++ ++ // Toggle LED (cmd 0x80). The first byte is the report number (0x1). ++ buf[0] = 0x1; ++ buf[1] = 0x80; ++ res = hid_write(handle, buf, 17); ++ if (res < 0) { ++ printf("Unable to write()\n"); ++ printf("Error: %ls\n", hid_error(handle)); ++ } ++ ++ ++ // Request state (cmd 0x81). The first byte is the report number (0x1). ++ buf[0] = 0x1; ++ buf[1] = 0x81; ++ hid_write(handle, buf, 17); ++ if (res < 0) ++ printf("Unable to write() (2)\n"); ++ ++ // Read requested state. hid_read() has been set to be ++ // non-blocking by the call to hid_set_nonblocking() above. ++ // This loop demonstrates the non-blocking nature of hid_read(). ++ res = 0; ++ while (res == 0) { ++ res = hid_read(handle, buf, sizeof(buf)); ++ if (res == 0) ++ printf("waiting...\n"); ++ if (res < 0) ++ printf("Unable to read()\n"); ++ #ifdef WIN32 ++ Sleep(500); ++ #else ++ usleep(500*1000); ++ #endif ++ } ++ ++ printf("Data read:\n "); ++ // Print out the returned buffer. ++ for (i = 0; i < res; i++) ++ printf("%02hhx ", buf[i]); ++ printf("\n"); ++ ++ hid_close(handle); ++ ++ /* Free static HIDAPI objects. */ ++ hid_exit(); ++ ++#ifdef WIN32 ++ system("pause"); ++#endif ++ ++ return 0; ++} +diff --git a/hidtest/hidtest.cpp b/hidtest/hidtest.cpp +deleted file mode 100644 +index 94f0a5c..0000000 +--- a/hidtest/hidtest.cpp ++++ /dev/null +@@ -1,194 +0,0 @@ +-/******************************************************* +- Windows HID simplification +- +- Alan Ott +- Signal 11 Software +- +- 8/22/2009 +- +- Copyright 2009 +- +- This contents of this file may be used by anyone +- for any reason without any conditions and may be +- used as a starting point for your own applications +- which use HIDAPI. +-********************************************************/ +- +-#include +-#include +-#include +-#include +-#include "hidapi.h" +- +-// Headers needed for sleeping. +-#ifdef _WIN32 +- #include +-#else +- #include +-#endif +- +-int main(int argc, char* argv[]) +-{ +- int res; +- unsigned char buf[256]; +- #define MAX_STR 255 +- wchar_t wstr[MAX_STR]; +- hid_device *handle; +- int i; +- +-#ifdef WIN32 +- UNREFERENCED_PARAMETER(argc); +- UNREFERENCED_PARAMETER(argv); +-#endif +- +- struct hid_device_info *devs, *cur_dev; +- +- if (hid_init()) +- return -1; +- +- devs = hid_enumerate(0x0, 0x0); +- cur_dev = devs; +- while (cur_dev) { +- printf("Device Found\n type: %04hx %04hx\n path: %s\n serial_number: %ls", cur_dev->vendor_id, cur_dev->product_id, cur_dev->path, cur_dev->serial_number); +- printf("\n"); +- printf(" Manufacturer: %ls\n", cur_dev->manufacturer_string); +- printf(" Product: %ls\n", cur_dev->product_string); +- printf(" Release: %hx\n", cur_dev->release_number); +- printf(" Interface: %d\n", cur_dev->interface_number); +- printf("\n"); +- cur_dev = cur_dev->next; +- } +- hid_free_enumeration(devs); +- +- // Set up the command buffer. +- memset(buf,0x00,sizeof(buf)); +- buf[0] = 0x01; +- buf[1] = 0x81; +- +- +- // Open the device using the VID, PID, +- // and optionally the Serial number. +- ////handle = hid_open(0x4d8, 0x3f, L"12345"); +- handle = hid_open(0x4d8, 0x3f, NULL); +- if (!handle) { +- printf("unable to open device\n"); +- return 1; +- } +- +- // Read the Manufacturer String +- wstr[0] = 0x0000; +- res = hid_get_manufacturer_string(handle, wstr, MAX_STR); +- if (res < 0) +- printf("Unable to read manufacturer string\n"); +- printf("Manufacturer String: %ls\n", wstr); +- +- // Read the Product String +- wstr[0] = 0x0000; +- res = hid_get_product_string(handle, wstr, MAX_STR); +- if (res < 0) +- printf("Unable to read product string\n"); +- printf("Product String: %ls\n", wstr); +- +- // Read the Serial Number String +- wstr[0] = 0x0000; +- res = hid_get_serial_number_string(handle, wstr, MAX_STR); +- if (res < 0) +- printf("Unable to read serial number string\n"); +- printf("Serial Number String: (%d) %ls", wstr[0], wstr); +- printf("\n"); +- +- // Read Indexed String 1 +- wstr[0] = 0x0000; +- res = hid_get_indexed_string(handle, 1, wstr, MAX_STR); +- if (res < 0) +- printf("Unable to read indexed string 1\n"); +- printf("Indexed String 1: %ls\n", wstr); +- +- // Set the hid_read() function to be non-blocking. +- hid_set_nonblocking(handle, 1); +- +- // Try to read from the device. There shoud be no +- // data here, but execution should not block. +- res = hid_read(handle, buf, 17); +- +- // Send a Feature Report to the device +- buf[0] = 0x2; +- buf[1] = 0xa0; +- buf[2] = 0x0a; +- buf[3] = 0x00; +- buf[4] = 0x00; +- res = hid_send_feature_report(handle, buf, 17); +- if (res < 0) { +- printf("Unable to send a feature report.\n"); +- } +- +- memset(buf,0,sizeof(buf)); +- +- // Read a Feature Report from the device +- buf[0] = 0x2; +- res = hid_get_feature_report(handle, buf, sizeof(buf)); +- if (res < 0) { +- printf("Unable to get a feature report.\n"); +- printf("%ls", hid_error(handle)); +- } +- else { +- // Print out the returned buffer. +- printf("Feature Report\n "); +- for (i = 0; i < res; i++) +- printf("%02hhx ", buf[i]); +- printf("\n"); +- } +- +- memset(buf,0,sizeof(buf)); +- +- // Toggle LED (cmd 0x80). The first byte is the report number (0x1). +- buf[0] = 0x1; +- buf[1] = 0x80; +- res = hid_write(handle, buf, 17); +- if (res < 0) { +- printf("Unable to write()\n"); +- printf("Error: %ls\n", hid_error(handle)); +- } +- +- +- // Request state (cmd 0x81). The first byte is the report number (0x1). +- buf[0] = 0x1; +- buf[1] = 0x81; +- hid_write(handle, buf, 17); +- if (res < 0) +- printf("Unable to write() (2)\n"); +- +- // Read requested state. hid_read() has been set to be +- // non-blocking by the call to hid_set_nonblocking() above. +- // This loop demonstrates the non-blocking nature of hid_read(). +- res = 0; +- while (res == 0) { +- res = hid_read(handle, buf, sizeof(buf)); +- if (res == 0) +- printf("waiting...\n"); +- if (res < 0) +- printf("Unable to read()\n"); +- #ifdef WIN32 +- Sleep(500); +- #else +- usleep(500*1000); +- #endif +- } +- +- printf("Data read:\n "); +- // Print out the returned buffer. +- for (i = 0; i < res; i++) +- printf("%02hhx ", buf[i]); +- printf("\n"); +- +- hid_close(handle); +- +- /* Free static HIDAPI objects. */ +- hid_exit(); +- +-#ifdef WIN32 +- system("pause"); +-#endif +- +- return 0; +-} +-- +2.7.4 + diff --git a/buildroot/package/hidapi/Config.in b/buildroot/package/hidapi/Config.in new file mode 100644 index 0000000..b98c2db --- /dev/null +++ b/buildroot/package/hidapi/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_HIDAPI + bool "hidapi" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBGUDEV + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + # runtime UTF conversion support + select BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY if BR2_TOOLCHAIN_USES_GLIBC + help + HIDAPI is a multi-platform library which allows an application + to interface with USB and Bluetooth HID-Class devices on + Windows, Linux, and Mac OS X. + + http://www.signal11.us/oss/hidapi/ + +comment "hidapi needs udev /dev management and a toolchain w/ NPTL threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/hidapi/hidapi.hash b/buildroot/package/hidapi/hidapi.hash new file mode 100644 index 0000000..ed22c78 --- /dev/null +++ b/buildroot/package/hidapi/hidapi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f2ffe5dbba12dfa0a647ae71b1ec5612fed4c20322ef6f6fd46f6f9713ed1a8e hidapi-b5b2e1779b6cd2edda3066bbbf0921a2d6b1c3c0.tar.gz diff --git a/buildroot/package/hidapi/hidapi.mk b/buildroot/package/hidapi/hidapi.mk new file mode 100644 index 0000000..7eed800 --- /dev/null +++ b/buildroot/package/hidapi/hidapi.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# hidapi +# +################################################################################ + +# Use master version as the current stable is very old and some bugs +# have been fixed since then. +HIDAPI_VERSION = b5b2e1779b6cd2edda3066bbbf0921a2d6b1c3c0 +HIDAPI_SITE = $(call github,signal11,hidapi,$(HIDAPI_VERSION)) +HIDAPI_INSTALL_STAGING = YES +# No configure provided, so we need to autoreconf. +HIDAPI_AUTORECONF = YES +HIDAPI_LICENSE = GPL-3.0 or BSD-3-Clause or HIDAPI license +HIDAPI_LICENSE_FILES = LICENSE.txt LICENSE-gpl3.txt LICENSE-bsd.txt LICENSE-orig.txt + +HIDAPI_DEPENDENCIES = libusb libgudev + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +HIDAPI_DEPENDENCIES += libiconv +HIDAPI_CONF_ENV += LIBS="-liconv" +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/hiredis/Config.in b/buildroot/package/hiredis/Config.in new file mode 100644 index 0000000..1656355 --- /dev/null +++ b/buildroot/package/hiredis/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HIREDIS + bool "hiredis" + help + Minimalistic C client for Redis >= 1.2 + + It is minimalistic because it just adds minimal support for + the protocol, but at the same time it uses a high level + printf-alike API in order to make it much higher level than + otherwise suggested by its minimal code base and the lack of + explicit bindings for every Redis command. + + https://github.com/redis/hiredis diff --git a/buildroot/package/hiredis/hiredis.hash b/buildroot/package/hiredis/hiredis.hash new file mode 100644 index 0000000..682ec6d --- /dev/null +++ b/buildroot/package/hiredis/hiredis.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 717e6fc8dc2819bef522deaca516de9e51b9dfa68fe393b7db5c3b6079196f78 hiredis-v0.13.3.tar.gz +sha256 dca05ce8fc87a8261783b4aed0deef8becc9350b6aa770bc714d0c1833b896eb COPYING diff --git a/buildroot/package/hiredis/hiredis.mk b/buildroot/package/hiredis/hiredis.mk new file mode 100644 index 0000000..dd75742 --- /dev/null +++ b/buildroot/package/hiredis/hiredis.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# hiredis +# +################################################################################ + +HIREDIS_VERSION_MAJOR = 0.13 +HIREDIS_VERSION = v$(HIREDIS_VERSION_MAJOR).3 +HIREDIS_SITE = $(call github,redis,hiredis,$(HIREDIS_VERSION)) +HIREDIS_LICENSE = BSD-3-Clause +HIREDIS_LICENSE_FILES = COPYING +HIREDIS_INSTALL_STAGING = YES + +HIREDIS_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + PREFIX=/usr + +HIREDIS_TARGETS = hiredis.pc +ifeq ($(BR2_STATIC_LIBS),y) +HIREDIS_TARGETS += static +else ifeq ($(BR2_SHARED_LIBS),y) +HIREDIS_TARGETS += dynamic +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +HIREDIS_TARGETS += dynamic static +endif + +define HIREDIS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(HIREDIS_MAKE_OPTS) -C $(@D) \ + $(HIREDIS_TARGETS) +endef + +HIREDIS_INCLUDE_DIR = $(STAGING_DIR)/usr/include/hiredis + +ifeq ($(BR2_SHARED_LIBS),) +define HIREDIS_INSTALL_STAGING_STATIC_LIB + $(INSTALL) -D -m 0755 $(@D)/libhiredis.a \ + $(STAGING_DIR)/usr/lib/libhiredis.a +endef +endif + +ifeq ($(BR2_STATIC_LIBS),) +define HIREDIS_INSTALL_STAGING_SHARED_LIB + $(INSTALL) -D -m 0755 $(@D)/libhiredis.so \ + $(STAGING_DIR)/usr/lib/libhiredis.so.$(HIREDIS_VERSION_MAJOR) + ln -sf libhiredis.so.$(HIREDIS_VERSION_MAJOR) $(STAGING_DIR)/usr/lib/libhiredis.so +endef +define HIREDIS_INSTALL_TARGET_SHARED_LIB + $(INSTALL) -D -m 0755 $(@D)/libhiredis.so \ + $(TARGET_DIR)/usr/lib/libhiredis.so.$(HIREDIS_VERSION_MAJOR) + ln -sf libhiredis.so.$(HIREDIS_VERSION_MAJOR) $(TARGET_DIR)/usr/lib/libhiredis.so +endef +endif + +# Do not call make install as this target will build shared and static libraries +define HIREDIS_INSTALL_STAGING_CMDS + mkdir -p $(HIREDIS_INCLUDE_DIR) + cp -dpfr $(@D)/hiredis.h $(@D)/async.h $(@D)/read.h $(@D)/sds.h \ + $(@D)/adapters $(HIREDIS_INCLUDE_DIR) + $(INSTALL) -D -m 0644 $(@D)/hiredis.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/hiredis.pc + $(HIREDIS_INSTALL_STAGING_STATIC_LIB) + $(HIREDIS_INSTALL_STAGING_SHARED_LIB) +endef + +define HIREDIS_INSTALL_TARGET_CMDS + $(HIREDIS_INSTALL_TARGET_SHARED_LIB) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/hostapd/Config.in b/buildroot/package/hostapd/Config.in new file mode 100644 index 0000000..84156e8 --- /dev/null +++ b/buildroot/package/hostapd/Config.in @@ -0,0 +1,73 @@ +config BR2_PACKAGE_HOSTAPD + bool "hostapd" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBNL + help + User space daemon for wireless access points. + + It implements IEEE 802.11 access point management, + IEEE 802.1X/WPA/WPA2/EAP authenticators, RADIUS client, + EAP server and RADIUS authentication server. + + http://w1.fi/hostapd/ + +if BR2_PACKAGE_HOSTAPD + +config BR2_PACKAGE_HOSTAPD_DRIVER_RTW + bool "Enable rtl871xdrv driver" + help + Enable support for Realtek wireless chips. + +config BR2_PACKAGE_HOSTAPD_ACS + bool "Enable ACS" + default y + help + Enable support for standard ACS (Automatic Channel Selection). + Some propietary drivers use a custom algorithm which requires + channel to be set to '0' (which enables ACS in the config), + causing hostapd to use the standard one which doesn't work + for those cases. + +config BR2_PACKAGE_HOSTAPD_EAP + bool "Enable EAP" + depends on !BR2_STATIC_LIBS + help + Enable support for EAP and RADIUS. + +comment "hostapd EAP needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_HOSTAPD_WPS + bool "Enable WPS" + help + Enable support for Wi-Fi Protected Setup. + +config BR2_PACKAGE_HOSTAPD_VLAN + bool "Enable VLAN support" + default y + help + Enable support for VLANs. + +config BR2_PACKAGE_HOSTAPD_VLAN_DYNAMIC + bool "Enable dynamic VLAN support" + default y + depends on BR2_PACKAGE_HOSTAPD_VLAN + help + Enable support for fully dynamic VLANs. + This enables hostapd to automatically create + bridge and VLAN interfaces if necessary. + +config BR2_PACKAGE_HOSTAPD_VLAN_NETLINK + bool "Use netlink-based API for VLAN operations" + default y + depends on BR2_PACKAGE_HOSTAPD_VLAN + help + Use netlink-based kernel API for VLAN operations + instead of ioctl(). + +endif + +comment "hostapd needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/hostapd/hostapd.hash b/buildroot/package/hostapd/hostapd.hash new file mode 100644 index 0000000..588879f --- /dev/null +++ b/buildroot/package/hostapd/hostapd.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 01526b90c1d23bec4b0f052039cc4456c2fd19347b4d830d1d58a0a6aea7117d hostapd-2.6.tar.gz +sha256 e204da659d0583c71af23cb9b55536fe99598ee26a44104344f456e4d17350c6 rtlxdrv.patch +sha256 529113cc81256c6178f3c1cf25dd8d3f33e6d770e4a180bd31c6ab7e4917f40b rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch +sha256 147c8abe07606905d16404fb2d2c8849796ca7c85ed8673c09bb50038bcdeb9e rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch diff --git a/buildroot/package/hostapd/hostapd.mk b/buildroot/package/hostapd/hostapd.mk new file mode 100644 index 0000000..1696670 --- /dev/null +++ b/buildroot/package/hostapd/hostapd.mk @@ -0,0 +1,111 @@ +################################################################################ +# +# hostapd +# +################################################################################ + +HOSTAPD_VERSION = 2.6 +HOSTAPD_SITE = http://w1.fi/releases +HOSTAPD_PATCH = \ + http://w1.fi/security/2017-1/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch \ + http://w1.fi/security/2017-1/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch +HOSTAPD_SUBDIR = hostapd +HOSTAPD_CONFIG = $(HOSTAPD_DIR)/$(HOSTAPD_SUBDIR)/.config +HOSTAPD_DEPENDENCIES = host-pkgconf libnl +HOSTAPD_CFLAGS = $(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/libnl3/ +HOSTAPD_LICENSE = BSD-3-Clause +HOSTAPD_LICENSE_FILES = README +HOSTAPD_CONFIG_SET = + +HOSTAPD_CONFIG_ENABLE = \ + CONFIG_HS20 \ + CONFIG_IEEE80211AC \ + CONFIG_IEEE80211N \ + CONFIG_IEEE80211R \ + CONFIG_INTERNAL_LIBTOMMATH \ + CONFIG_INTERWORKING \ + CONFIG_LIBNL32 + +HOSTAPD_CONFIG_DISABLE = + +# libnl-3 needs -lm (for rint) and -lpthread if linking statically +# And library order matters hence stick -lnl-3 first since it's appended +# in the hostapd Makefiles as in LIBS+=-lnl-3 ... thus failing +ifeq ($(BR2_STATIC_LIBS),y) +HOSTAPD_LIBS += -lnl-3 -lm -lpthread +endif + +# Try to use openssl if it's already available +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +HOSTAPD_DEPENDENCIES += libopenssl +HOSTAPD_LIBS += $(if $(BR2_STATIC_LIBS),-lcrypto -lz) +HOSTAPD_CONFIG_EDITS += 's/\#\(CONFIG_TLS=openssl\)/\1/' +else +HOSTAPD_CONFIG_DISABLE += CONFIG_EAP_PWD +HOSTAPD_CONFIG_EDITS += 's/\#\(CONFIG_TLS=\).*/\1internal/' +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_DRIVER_RTW),y) +HOSTAPD_PATCH += https://github.com/pritambaral/hostapd-rtl871xdrv/raw/master/rtlxdrv.patch +HOSTAPD_CONFIG_SET += CONFIG_DRIVER_RTW +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_ACS),y) +HOSTAPD_CONFIG_ENABLE += CONFIG_ACS +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_EAP),y) +HOSTAPD_CONFIG_ENABLE += \ + CONFIG_EAP \ + CONFIG_RADIUS_SERVER + +# Enable both TLS v1.1 (CONFIG_TLSV11) and v1.2 (CONFIG_TLSV12) +HOSTAPD_CONFIG_ENABLE += CONFIG_TLSV1 +else +HOSTAPD_CONFIG_DISABLE += CONFIG_EAP +HOSTAPD_CONFIG_ENABLE += \ + CONFIG_NO_ACCOUNTING \ + CONFIG_NO_RADIUS +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_WPS),y) +HOSTAPD_CONFIG_ENABLE += CONFIG_WPS +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_VLAN),) +HOSTAPD_CONFIG_ENABLE += CONFIG_NO_VLAN +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_VLAN_DYNAMIC),y) +HOSTAPD_CONFIG_ENABLE += CONFIG_FULL_DYNAMIC_VLAN +endif + +ifeq ($(BR2_PACKAGE_HOSTAPD_VLAN_NETLINK),y) +HOSTAPD_CONFIG_ENABLE += CONFIG_VLAN_NETLINK +endif + +define HOSTAPD_CONFIGURE_CMDS + cp $(@D)/hostapd/defconfig $(HOSTAPD_CONFIG) + sed -i $(patsubst %,-e 's/^#\(%\)/\1/',$(HOSTAPD_CONFIG_ENABLE)) \ + $(patsubst %,-e 's/^\(%\)/#\1/',$(HOSTAPD_CONFIG_DISABLE)) \ + $(patsubst %,-e '1i%=y',$(HOSTAPD_CONFIG_SET)) \ + $(patsubst %,-e %,$(HOSTAPD_CONFIG_EDITS)) \ + $(HOSTAPD_CONFIG) +endef + +define HOSTAPD_BUILD_CMDS + $(TARGET_MAKE_ENV) CFLAGS="$(HOSTAPD_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" LIBS="$(HOSTAPD_LIBS)" \ + $(MAKE) CC="$(TARGET_CC)" -C $(@D)/$(HOSTAPD_SUBDIR) +endef + +define HOSTAPD_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd \ + $(TARGET_DIR)/usr/sbin/hostapd + $(INSTALL) -m 0755 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd_cli \ + $(TARGET_DIR)/usr/bin/hostapd_cli + $(INSTALL) -m 0644 -D $(@D)/$(HOSTAPD_SUBDIR)/hostapd.conf \ + $(TARGET_DIR)/etc/hostapd.conf +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/hplip/0001-build-use-pkg-config-to-discover-libusb.patch b/buildroot/package/hplip/0001-build-use-pkg-config-to-discover-libusb.patch new file mode 100644 index 0000000..59b89a4 --- /dev/null +++ b/buildroot/package/hplip/0001-build-use-pkg-config-to-discover-libusb.patch @@ -0,0 +1,45 @@ +From 1eed2b65eff4c66b80eab0ec46c6705de19bdb9d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 21 Jan 2016 23:54:03 +0100 +Subject: [PATCH] build: use pkg-config to discover libusb + +This allows to remove hardcoded paths to libusb headers. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.am | 4 ++-- + configure.in | 3 +-- + 2 files changed, 3 insertions(+), 4 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 73fed2e..3a4e899 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -92,8 +92,8 @@ libhpmud_la_SOURCES += io/hpmud/musb_libusb01.c + libhpmud_la_LDFLAGS += -lusb + else + libhpmud_la_SOURCES += io/hpmud/musb.c +-libhpmud_la_CFLAGS += -I/usr/include/libusb-1.0 +-libhpmud_la_LDFLAGS += -lusb-1.0 ++libhpmud_la_CFLAGS += $(LIBUSB_CFLAGS) ++libhpmud_la_LDFLAGS += $(LIBUSB_LIBS) + endif + + if NETWORK_BUILD +diff --git a/configure.in b/configure.in +index 3706645..8b06428 100755 +--- a/configure.in ++++ b/configure.in +@@ -542,8 +542,7 @@ if test "$hpijs_only_build" = "no" && test "$hpcups_only_build" = "no"; then + AC_CHECK_LIB([usb], [usb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb support], 2)]) + AC_CHECK_HEADERS(usb.h, ,[AC_MSG_ERROR([cannot find libusb-devel support], 11)]) + else +- AC_CHECK_LIB([usb-1.0], [libusb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb 1.0 support], 2)]) +- AC_CHECK_HEADERS(libusb-1.0/libusb.h, ,[AC_MSG_ERROR([cannot find libusb-1.0-devel support], 11)]) ++ PKG_CHECK_MODULES([LIBUSB], [libusb-1.0]) + fi + fi + +-- +2.6.4 + diff --git a/buildroot/package/hplip/0002-configure.in-fix-AM_INIT_AUTOMAKE-call.patch b/buildroot/package/hplip/0002-configure.in-fix-AM_INIT_AUTOMAKE-call.patch new file mode 100644 index 0000000..db2f0a4 --- /dev/null +++ b/buildroot/package/hplip/0002-configure.in-fix-AM_INIT_AUTOMAKE-call.patch @@ -0,0 +1,35 @@ +From a2de7e834417de68db10dc6f09d5810b06e6cbc8 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 21 Jan 2016 23:54:50 +0100 +Subject: [PATCH] configure.in: fix AM_INIT_AUTOMAKE call + +Uncomment the appropriate call to AM_INIT_AUTOMAKE so that the +"foreign" option is passed, which avoids the need for creating various +unneeded files when autoreconfiguring. + +Add the subdir-objects options since the main Makefile.am references +files in subdirectories. This allows to silence a huge amount of +warning when autoreconfiguring. + +Signed-off-by: Thomas Petazzoni +--- + configure.in | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/configure.in b/configure.in +index 8b06428..680cad5 100755 +--- a/configure.in ++++ b/configure.in +@@ -27,8 +27,7 @@ + + #AC_PREREQ(2.59) + AC_INIT([HP Linux Imaging and Printing], [3.17.10], [3.17.10], [hplip]) +-#AM_INIT_AUTOMAKE([1.9 foreign]) +-AM_INIT_AUTOMAKE ++AM_INIT_AUTOMAKE([1.9 foreign subdir-objects]) + AC_DISABLE_STATIC + + # Checks for programs. +-- +2.6.4 + diff --git a/buildroot/package/hplip/Config.in b/buildroot/package/hplip/Config.in new file mode 100644 index 0000000..f4e0fe7 --- /dev/null +++ b/buildroot/package/hplip/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_HPLIP + bool "hplip" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_CUPS + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on !BR2_STATIC_LIBS # libdl + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_JPEG + help + HP Linux Imaging and Printing (HPLIP) + HPLIP is an HP-developed solution for printing, scanning, and + faxing with HP inkjet and laser based printers in Linux. The + HPLIP project provides printing support for 2,211 printer + models, including Deskjet, Officejet, Photosmart, PSC + (Print Scan Copy), Business Inkjet, LaserJet, Edgeline MFP, + and LaserJet MFP. + + http://hplipopensource.com/ + +comment "hplip needs a toolchain w/ C++, threads, dynamic library" + depends on BR2_PACKAGE_CUPS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/hplip/hplip.hash b/buildroot/package/hplip/hplip.hash new file mode 100644 index 0000000..2260850 --- /dev/null +++ b/buildroot/package/hplip/hplip.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 0f7344174672f63a98a22f3c109005b6eb89fe738b7d466316bf2c53d083476c hplip-3.17.10.tar.gz diff --git a/buildroot/package/hplip/hplip.mk b/buildroot/package/hplip/hplip.mk new file mode 100644 index 0000000..9eac83d --- /dev/null +++ b/buildroot/package/hplip/hplip.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# hplip +# +################################################################################ + +HPLIP_VERSION = 3.17.10 +HPLIP_SITE = http://downloads.sourceforge.net/hplip/hplip +HPLIP_AUTORECONF = YES +HPLIP_DEPENDENCIES = cups libusb jpeg host-pkgconf +HPLIP_LICENSE = GPL-2.0, BSD-3-Clause, MIT +HPLIP_LICENSE_FILES = COPYING + +HPLIP_CONF_OPTS = \ + --disable-qt4 \ + --disable-scan-build \ + --disable-gui-build \ + --disable-doc-build \ + --disable-network-build \ + --enable-hpcups-install \ + --disable-hpijs-install \ + --enable-cups-ppd-install \ + --enable-cups-drv-install \ + --disable-foomatic-ppd-install \ + --disable-foomatic-drv-install \ + --disable-foomatic-rip-hplip-install \ + --enable-new-hpcups \ + --enable-lite-build + +# build system does not support cups-config +HPLIP_CONF_ENV = LIBS=`$(STAGING_DIR)/usr/bin/cups-config --libs` + +ifeq ($(BR2_PACKAGE_DBUS),y) +HPLIP_CONF_OPTS += --enable-dbus-build +HPLIP_DEPENDENCIES += dbus +else +HPLIP_CONF_OPTS += --disable-dbus-build +endif + +define HPLIP_POST_INSTALL_TARGET_FIXUP + mkdir -p $(TARGET_DIR)/usr/share/hplip/data/models + cp $(@D)/data/models/* $(TARGET_DIR)/usr/share/hplip/data/models +endef +HPLIP_POST_INSTALL_TARGET_HOOKS += HPLIP_POST_INSTALL_TARGET_FIXUP + +$(eval $(autotools-package)) diff --git a/buildroot/package/htop/Config.in b/buildroot/package/htop/Config.in new file mode 100644 index 0000000..c19ff27 --- /dev/null +++ b/buildroot/package/htop/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HTOP + bool "htop" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + htop is an interactive text-mode process viewer for Linux. + It aims to be a better top. + + http://hisham.hm/htop/ diff --git a/buildroot/package/htop/htop.hash b/buildroot/package/htop/htop.hash new file mode 100644 index 0000000..cfea23f --- /dev/null +++ b/buildroot/package/htop/htop.hash @@ -0,0 +1,3 @@ +# Hashes from: http://www.freelists.org/post/htop/ANN-htop-202 +md5 7d354d904bad591a931ad57e99fea84a htop-2.0.2.tar.gz +sha1 201f793f13dce2448e36047079875b9bd5bba75a htop-2.0.2.tar.gz diff --git a/buildroot/package/htop/htop.mk b/buildroot/package/htop/htop.mk new file mode 100644 index 0000000..d06e4a5 --- /dev/null +++ b/buildroot/package/htop/htop.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# htop +# +################################################################################ + +HTOP_VERSION = 2.0.2 +HTOP_SITE = http://hisham.hm/htop/releases/$(HTOP_VERSION) +HTOP_DEPENDENCIES = ncurses +# Prevent htop build system from searching the host paths +HTOP_CONF_ENV = HTOP_NCURSES_CONFIG_SCRIPT=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) +HTOP_LICENSE = GPL-2.0 +HTOP_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +HTOP_CONF_OPTS += --enable-unicode +else +HTOP_CONF_OPTS += --disable-unicode +endif + +# ARC uses an old uClibc that needs dladdr() for backtrace support, +# which doesn't work for static only scenario, so as a workaround, we +# pretend that execinfo.h is not available. +ifeq ($(BR2_arc)$(BR2_STATIC_LIBS),yy) +HTOP_CONF_ENV += ac_cv_header_execinfo_h=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/httping/0001-fix-math-library-linking.patch b/buildroot/package/httping/0001-fix-math-library-linking.patch new file mode 100644 index 0000000..0078f41 --- /dev/null +++ b/buildroot/package/httping/0001-fix-math-library-linking.patch @@ -0,0 +1,25 @@ +Move LDFLAGS+=-lm option to the end. +The order of the math library directive '-lm' matters. + +Signed-off-by: Yuvaraj Patil +--- +diff -Nurp httping-2.3.4_orig/Makefile httping-2.3.4/Makefile +--- httping-2.3.4_orig/Makefile 2014-07-23 16:16:36.495546288 +0530 ++++ httping-2.3.4/Makefile 2014-07-23 16:18:42.547541002 +0530 +@@ -37,7 +37,6 @@ DEBUG=yes + WFLAGS=-Wall -W + OFLAGS= + CFLAGS+=$(WFLAGS) $(OFLAGS) -DVERSION=\"$(VERSION)\" -DLOCALEDIR=\"$(LOCALEDIR)\" +-LDFLAGS+=-lm + + PACKAGE=$(TARGET)-$(VERSION) + PREFIX?=/usr +@@ -97,6 +96,8 @@ ifeq ($(ARM),yes) + CC=arm-linux-gcc + endif + ++LDFLAGS+=-lm ++ + all: $(TARGET) $(TRANSLATIONS) + + $(TARGET): $(OBJS) diff --git a/buildroot/package/httping/0002-Makefile-allow-build-without-gettext.patch b/buildroot/package/httping/0002-Makefile-allow-build-without-gettext.patch new file mode 100644 index 0000000..aec1de4 --- /dev/null +++ b/buildroot/package/httping/0002-Makefile-allow-build-without-gettext.patch @@ -0,0 +1,48 @@ +From fe7d6c5a0e5dfe129f228498037393d23d6ae890 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 18 Jul 2017 19:09:03 +0300 +Subject: [PATCH] Makefile: allow build without gettext + +The msgfmt command is part of the gettext package, and is used to generate +binary translation files. When gettext is not installed, build fails. +Translation files are not always needed on size constrained embedded targets. +Add an option to disable translation files generation using the NO_GETTEXT +variable. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/flok99/httping/pull/36 + + Makefile | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Makefile b/Makefile +index 46127f4cdde1..160cc1794ec8 100644 +--- a/Makefile ++++ b/Makefile +@@ -55,7 +55,9 @@ MKDIR=/bin/mkdir + ARCHIVE=/bin/tar cf - + COMPRESS=/bin/gzip -9 + ++ifneq ($(NO_GETTEXT),yes) + TRANSLATIONS=nl.mo ru.mo ++endif + + OBJS=gen.o http.o io.o error.o utils.o main.o tcp.o res.o socks5.o kalman.o cookies.o help.o colors.o + +@@ -118,10 +120,12 @@ install: $(TARGET) $(TRANSLATIONS) + ifneq ($(DEBUG),yes) + $(STRIP) $(DESTDIR)/$(BINDIR)/$(TARGET) + endif ++ifneq ($(NO_GETTEXT),yes) + mkdir -p $(DESTDIR)/$(PREFIX)/share/locale/nl/LC_MESSAGES + cp nl.mo $(DESTDIR)/$(PREFIX)/share/locale/nl/LC_MESSAGES/httping.mo + mkdir -p $(DESTDIR)/$(PREFIX)/share/locale/ru/LC_MESSAGES + cp ru.mo $(DESTDIR)/$(PREFIX)/share/locale/ru/LC_MESSAGES/httping.mo ++endif + + + makefile.inc: +-- +2.13.2 + diff --git a/buildroot/package/httping/Config.in b/buildroot/package/httping/Config.in new file mode 100644 index 0000000..c0e5071 --- /dev/null +++ b/buildroot/package/httping/Config.in @@ -0,0 +1,22 @@ +comment "httping needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_HTTPING + bool "httping" + depends on BR2_USE_WCHAR + help + Httping is like 'ping' but for http-requests. + Give it an url, and it'll show you how long it takes to + connect, send a request and retrieve the reply (only the + headers). + Be aware that the transmission across the network also takes + time! So it measures the latency of the webserver + network. + + http://www.vanheusden.com/httping/ + +if BR2_PACKAGE_HTTPING + +config BR2_PACKAGE_HTTPING_TFO + bool "TCP Fast Open (TFO) support" + +endif diff --git a/buildroot/package/httping/httping.hash b/buildroot/package/httping/httping.hash new file mode 100644 index 0000000..a50eedb --- /dev/null +++ b/buildroot/package/httping/httping.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3e895a0a6d7bd79de25a255a1376d4da88eb09c34efdd0476ab5a907e75bfaf8 httping-2.5.tgz diff --git a/buildroot/package/httping/httping.mk b/buildroot/package/httping/httping.mk new file mode 100644 index 0000000..955ee31 --- /dev/null +++ b/buildroot/package/httping/httping.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# httping +# +################################################################################ + +HTTPING_VERSION = 2.5 +HTTPING_SOURCE = httping-$(HTTPING_VERSION).tgz +HTTPING_SITE = http://www.vanheusden.com/httping +HTTPING_LICENSE = GPL-2.0 +HTTPING_LICENSE_FILES = license.txt +HTTPING_LDFLAGS = $(TARGET_LDFLAGS) \ + $(TARGET_NLS_LIBS) \ + $(if $(BR2_PACKAGE_LIBICONV),-liconv) +HTTPING_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(if $(BR2_PACKAGE_NCURSES_WCHAR),ncurses) \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) \ + $(if $(BR2_PACKAGE_FFTW),fftw) +HTTPING_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) \ + FW=$(if $(BR2_PACKAGE_FFTW),yes,no) \ + NC=$(if $(BR2_PACKAGE_NCURSES_WCHAR),yes,no) \ + SSL=$(if $(BR2_PACKAGE_OPENSSL),yes,no) \ + TFO=$(if $(BR2_PACKAGE_HTTPING_TFO),yes,no) \ + NO_GETTEXT=$(if $(BR2_SYSTEM_ENABLE_NLS),no,yes) + +define HTTPING_BUILD_CMDS + $(HTTPING_MAKE_OPTS) LDFLAGS="$(HTTPING_LDFLAGS)" \ + $(MAKE) DEBUG=no -C $(@D) +endef + +define HTTPING_INSTALL_TARGET_CMDS + $(HTTPING_MAKE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/hwdata/Config.in b/buildroot/package/hwdata/Config.in new file mode 100644 index 0000000..f563988 --- /dev/null +++ b/buildroot/package/hwdata/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_HWDATA + bool "hwdata" + help + Various hardware identification and configuration data + + - Individual Address Block (IAB) and Organizationally Unique + Identifier (OUI) databases, from IEEE Registration Authority + - PCI ID database + - PNP ID database (from Microsoft) + - USB ID database + + https://github.com/vcrhonek/hwdata + +if BR2_PACKAGE_HWDATA + +config BR2_PACKAGE_HWDATA_IAB_OUI_TXT + bool "install iab.txt and oui.txt" + help + Install iab.txt and oui.txt + +config BR2_PACKAGE_HWDATA_PCI_IDS + bool "install pci.ids" + default y + help + Install pci.ids + +config BR2_PACKAGE_HWDATA_PNP_IDS + bool "install pnp.ids" + help + Install pnp.ids + +config BR2_PACKAGE_HWDATA_USB_IDS + bool "install usb.ids" + default y + help + Install usb.ids + +endif diff --git a/buildroot/package/hwdata/hwdata.hash b/buildroot/package/hwdata/hwdata.hash new file mode 100644 index 0000000..dba1be3 --- /dev/null +++ b/buildroot/package/hwdata/hwdata.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 986d919c20a0c7f8b669a63830f6d2f4cb5c4cddcfc944c5e2ae05c2e9e5ec9f hwdata-v0.308.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 21d0406f93e884a050426ebc21931839a45d56bfcbcbfdda7686d583f36f107f LICENSE diff --git a/buildroot/package/hwdata/hwdata.mk b/buildroot/package/hwdata/hwdata.mk new file mode 100644 index 0000000..4603ad6 --- /dev/null +++ b/buildroot/package/hwdata/hwdata.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# hwdata +# +################################################################################ + +HWDATA_VERSION = v0.308 +HWDATA_SITE = $(call github,vcrhonek,hwdata,$(HWDATA_VERSION)) +HWDATA_LICENSE = GPL-2.0+, BSD-3-Clause, XFree86 1.0 +HWDATA_LICENSE_FILES = COPYING LICENSE + +HWDATA_FILES = \ + $(if $(BR2_PACKAGE_HWDATA_IAB_OUI_TXT),iab.txt oui.txt) \ + $(if $(BR2_PACKAGE_HWDATA_PCI_IDS),pci.ids) \ + $(if $(BR2_PACKAGE_HWDATA_PNP_IDS),pnp.ids) \ + $(if $(BR2_PACKAGE_HWDATA_USB_IDS),usb.ids) + +ifneq ($(strip $(HWDATA_FILES)),) +define HWDATA_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 755 $(TARGET_DIR)/usr/share/hwdata + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/share/hwdata \ + $(addprefix $(@D)/,$(HWDATA_FILES)) +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/hwloc/Config.in b/buildroot/package/hwloc/Config.in new file mode 100644 index 0000000..1fb2302 --- /dev/null +++ b/buildroot/package/hwloc/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_HWLOC + bool "hwloc" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Portable Hardware Locality + + Provides a portable abstraction (across OS, versions, + architectures, ...) of the hierarchical topology of modern + architectures, including NUMA memory nodes, sockets, shared + caches, cores and simultaneous multithreading. + + http://www.open-mpi.org/projects/hwloc/ + +comment "hwloc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/hwloc/hwloc.hash b/buildroot/package/hwloc/hwloc.hash new file mode 100644 index 0000000..c523bc5 --- /dev/null +++ b/buildroot/package/hwloc/hwloc.hash @@ -0,0 +1,5 @@ +# From https://www.open-mpi.org/software/hwloc/v1.11/ +md5 13d2e4dbce392cda41f1451d386d9a45 hwloc-1.11.7.tar.bz2 +sha1 7b78850b8504a93972a3f114a0e75f9b115607d9 hwloc-1.11.7.tar.bz2 +# Locally computed +sha256 ab6910e248eed8c85d08b529917a6aae706b32b346e886ba830895e36a809729 hwloc-1.11.7.tar.bz2 diff --git a/buildroot/package/hwloc/hwloc.mk b/buildroot/package/hwloc/hwloc.mk new file mode 100644 index 0000000..598a9c6 --- /dev/null +++ b/buildroot/package/hwloc/hwloc.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# hwloc +# +################################################################################ + +HWLOC_VERSION_MAJOR = 1.11 +HWLOC_VERSION = $(HWLOC_VERSION_MAJOR).7 +HWLOC_SOURCE = hwloc-$(HWLOC_VERSION).tar.bz2 +HWLOC_SITE = http://www.open-mpi.org/software/hwloc/v$(HWLOC_VERSION_MAJOR)/downloads +HWLOC_LICENSE = BSD-3-Clause +HWLOC_LICENSE_FILES = COPYING +HWLOC_DEPENDENCIES = host-pkgconf +HWLOC_INSTALL_STAGING = YES + +HWLOC_CONF_OPTS = \ + --disable-opencl \ + --disable-cuda \ + --disable-nvml \ + --disable-gl \ + --disable-cairo \ + --disable-libxml2 \ + --disable-doxygen + +ifeq ($(BR2_PACKAGE_LIBPCIACCESS),y) +HWLOC_CONF_OPTS += --enable-pci +HWLOC_DEPENDENCIES += libpciaccess +else +HWLOC_CONF_OPTS += --disable-pci +endif + +ifeq ($(BR2_PACKAGE_NUMACTL),y) +HWLOC_CONF_OPTS += --enable-libnuma +HWLOC_DEPENDENCIES += numactl +else +HWLOC_CONF_OPTS += --disable-libnuma +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/i2c-tools/0001-lib-Module.mk-Add-missing-dependencies.patch b/buildroot/package/i2c-tools/0001-lib-Module.mk-Add-missing-dependencies.patch new file mode 100644 index 0000000..09a78da --- /dev/null +++ b/buildroot/package/i2c-tools/0001-lib-Module.mk-Add-missing-dependencies.patch @@ -0,0 +1,34 @@ +From a6a59693066fd8da81f7107479df3e32a129247d Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Wed, 6 Dec 2017 09:55:04 +0100 +Subject: [PATCH] lib/Module.mk: Add missing dependencies + +The lib symlinks lacked a dependency to the actual library file, so +parallel builds could run into a race and break. + +Signed-off-by: Angelo Compagnucci +--- + lib/Module.mk | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/Module.mk b/lib/Module.mk +index 432a051..fd2c8c4 100644 +--- a/lib/Module.mk ++++ b/lib/Module.mk +@@ -42,11 +42,11 @@ endif + $(LIB_DIR)/$(LIB_SHLIBNAME): $(LIB_DIR)/smbus.o + $(CC) -shared $(LDFLAGS) -Wl,--version-script=$(LIB_DIR)/libi2c.map -Wl,-soname,$(LIB_SHSONAME) -o $@ $^ -lc + +-$(LIB_DIR)/$(LIB_SHSONAME): ++$(LIB_DIR)/$(LIB_SHSONAME): $(LIB_DIR)/$(LIB_SHLIBNAME) + $(RM) $@ + $(LN) $(LIB_SHLIBNAME) $@ + +-$(LIB_DIR)/$(LIB_SHBASENAME): ++$(LIB_DIR)/$(LIB_SHBASENAME): $(LIB_DIR)/$(LIB_SHLIBNAME) + $(RM) $@ + $(LN) $(LIB_SHLIBNAME) $@ + +-- +2.7.4 + diff --git a/buildroot/package/i2c-tools/0002-Makefile-Add-flag-to-disable-dynamic-library.patch b/buildroot/package/i2c-tools/0002-Makefile-Add-flag-to-disable-dynamic-library.patch new file mode 100644 index 0000000..b5ec547 --- /dev/null +++ b/buildroot/package/i2c-tools/0002-Makefile-Add-flag-to-disable-dynamic-library.patch @@ -0,0 +1,64 @@ +From 9906b2ecb6aec02d6348d6237b784135e6930d0b Mon Sep 17 00:00:00 2001 +From: Angelo Compagnucci +Date: Wed, 6 Dec 2017 10:12:07 +0100 +Subject: Makefile: Add flag to disable dynamic library + +In such cases where you need to disable entirely the dynamic +library compilation, now you can use the BUILD_DYNAMIC_LIB=0 +flag. + +Signed-off-by: Angelo Compagnucci +Signed-off-by: Jean Delvare +--- + Makefile | 10 +++++++++- + lib/Module.mk | 6 +++++- + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index c85317c..1bb5572 100644 +--- a/Makefile ++++ b/Makefile +@@ -32,12 +32,20 @@ CFLAGS ?= -O2 + CFLAGS += -Wall + SOCFLAGS := -fpic -D_REENTRANT $(CFLAGS) + +-USE_STATIC_LIB ?= 0 ++BUILD_DYNAMIC_LIB ?= 1 + BUILD_STATIC_LIB ?= 1 ++USE_STATIC_LIB ?= 0 ++ + ifeq ($(USE_STATIC_LIB),1) + BUILD_STATIC_LIB := 1 + endif + ++ifeq ($(BUILD_DYNAMIC_LIB),0) ++ifeq ($(BUILD_STATIC_LIB),0) ++$(error BUILD_DYNAMIC_LIB and BUILD_STATIC_LIB cannot be disabled at the same time) ++endif ++endif ++ + KERNELVERSION := $(shell uname -r) + + .PHONY: all strip clean install uninstall +diff --git a/lib/Module.mk b/lib/Module.mk +index fd2c8c4..44fa938 100644 +--- a/lib/Module.mk ++++ b/lib/Module.mk +@@ -27,9 +27,13 @@ LIB_SHSONAME := $(LIB_SHBASENAME).$(LIB_MAINVER) + LIB_SHLIBNAME := $(LIB_SHBASENAME).$(LIB_VER) + LIB_STLIBNAME := libi2c.a + +-LIB_TARGETS := $(LIB_SHLIBNAME) + LIB_LINKS := $(LIB_SHSONAME) $(LIB_SHBASENAME) + LIB_OBJECTS := smbus.o ++ ++LIB_TARGETS := ++ifeq ($(BUILD_DYNAMIC_LIB),1) ++LIB_TARGETS += $(LIB_SHLIBNAME) ++endif + ifeq ($(BUILD_STATIC_LIB),1) + LIB_TARGETS += $(LIB_STLIBNAME) + LIB_OBJECTS += smbus.ao +-- +2.7.4 + diff --git a/buildroot/package/i2c-tools/0003-lib-Module.mk-Drop-unused-variable-LIB_OBJECTS.patch b/buildroot/package/i2c-tools/0003-lib-Module.mk-Drop-unused-variable-LIB_OBJECTS.patch new file mode 100644 index 0000000..43c915c --- /dev/null +++ b/buildroot/package/i2c-tools/0003-lib-Module.mk-Drop-unused-variable-LIB_OBJECTS.patch @@ -0,0 +1,33 @@ +From 1831b618fbedf0bcf15b0465981d133d9e3c53ee Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Wed, 6 Dec 2017 10:46:56 +0100 +Subject: lib/Module.mk: Drop unused variable LIB_OBJECTS + +Signed-off-by: Angelo Compagnucci +--- + lib/Module.mk | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/lib/Module.mk b/lib/Module.mk +index 44fa938..8a58f5b 100644 +--- a/lib/Module.mk ++++ b/lib/Module.mk +@@ -28,7 +28,6 @@ LIB_SHLIBNAME := $(LIB_SHBASENAME).$(LIB_VER) + LIB_STLIBNAME := libi2c.a + + LIB_LINKS := $(LIB_SHSONAME) $(LIB_SHBASENAME) +-LIB_OBJECTS := smbus.o + + LIB_TARGETS := + ifeq ($(BUILD_DYNAMIC_LIB),1) +@@ -36,7 +35,6 @@ LIB_TARGETS += $(LIB_SHLIBNAME) + endif + ifeq ($(BUILD_STATIC_LIB),1) + LIB_TARGETS += $(LIB_STLIBNAME) +-LIB_OBJECTS += smbus.ao + endif + + # +-- +2.7.4 + diff --git a/buildroot/package/i2c-tools/0004-tools-Module.mk-Add-missing-dependencies.patch b/buildroot/package/i2c-tools/0004-tools-Module.mk-Add-missing-dependencies.patch new file mode 100644 index 0000000..d18090b --- /dev/null +++ b/buildroot/package/i2c-tools/0004-tools-Module.mk-Add-missing-dependencies.patch @@ -0,0 +1,67 @@ +From 08b0d67ba7eceb862cb17f52eb1911e9579726ea Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Thu, 14 Dec 2017 08:52:26 +0100 +Subject: [PATCH] tools/Module.mk: Add missing dependencies + +Better build the library before building the tools which link against +it, otherwise parallel builds could run into a race and break. + +Signed-off-by: Jean Delvare +Tested-by: Angelo Compagnucci +Acked-by: Angelo Compagnucci +Signed-off-by: Angelo Compagnucci +--- + lib/Module.mk | 7 +++++++ + tools/Module.mk | 10 +++++----- + 2 files changed, 12 insertions(+), 5 deletions(-) + +diff --git a/lib/Module.mk b/lib/Module.mk +index 8a58f5b..67afe91 100644 +--- a/lib/Module.mk ++++ b/lib/Module.mk +@@ -37,6 +37,13 @@ ifeq ($(BUILD_STATIC_LIB),1) + LIB_TARGETS += $(LIB_STLIBNAME) + endif + ++# Library file to link against (static or dynamic) ++ifeq ($(USE_STATIC_LIB),1) ++LIB_DEPS := $(LIB_DIR)/$(LIB_STLIBNAME) ++else ++LIB_DEPS := $(LIB_DIR)/$(LIB_SHBASENAME) ++endif ++ + # + # Libraries + # +diff --git a/tools/Module.mk b/tools/Module.mk +index 6421a23..609de7a 100644 +--- a/tools/Module.mk ++++ b/tools/Module.mk +@@ -24,19 +24,19 @@ TOOLS_TARGETS := i2cdetect i2cdump i2cset i2cget i2ctransfer + # Programs + # + +-$(TOOLS_DIR)/i2cdetect: $(TOOLS_DIR)/i2cdetect.o $(TOOLS_DIR)/i2cbusses.o ++$(TOOLS_DIR)/i2cdetect: $(TOOLS_DIR)/i2cdetect.o $(TOOLS_DIR)/i2cbusses.o $(LIB_DEPS) + $(CC) $(LDFLAGS) -o $@ $^ $(TOOLS_LDFLAGS) + +-$(TOOLS_DIR)/i2cdump: $(TOOLS_DIR)/i2cdump.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o ++$(TOOLS_DIR)/i2cdump: $(TOOLS_DIR)/i2cdump.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o $(LIB_DEPS) + $(CC) $(LDFLAGS) -o $@ $^ $(TOOLS_LDFLAGS) + +-$(TOOLS_DIR)/i2cset: $(TOOLS_DIR)/i2cset.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o ++$(TOOLS_DIR)/i2cset: $(TOOLS_DIR)/i2cset.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o $(LIB_DEPS) + $(CC) $(LDFLAGS) -o $@ $^ $(TOOLS_LDFLAGS) + +-$(TOOLS_DIR)/i2cget: $(TOOLS_DIR)/i2cget.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o ++$(TOOLS_DIR)/i2cget: $(TOOLS_DIR)/i2cget.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o $(LIB_DEPS) + $(CC) $(LDFLAGS) -o $@ $^ $(TOOLS_LDFLAGS) + +-$(TOOLS_DIR)/i2ctransfer: $(TOOLS_DIR)/i2ctransfer.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o ++$(TOOLS_DIR)/i2ctransfer: $(TOOLS_DIR)/i2ctransfer.o $(TOOLS_DIR)/i2cbusses.o $(TOOLS_DIR)/util.o $(LIB_DEPS) + $(CC) $(LDFLAGS) -o $@ $^ $(TOOLS_LDFLAGS) + + # +-- +2.7.4 + diff --git a/buildroot/package/i2c-tools/0005-lib-Module.mk-Fix-LIB_LINKS-dependency.patch b/buildroot/package/i2c-tools/0005-lib-Module.mk-Fix-LIB_LINKS-dependency.patch new file mode 100644 index 0000000..37a8ebc --- /dev/null +++ b/buildroot/package/i2c-tools/0005-lib-Module.mk-Fix-LIB_LINKS-dependency.patch @@ -0,0 +1,34 @@ +From de278d0933e3caea2508f95fd00e7e338bc12e8f Mon Sep 17 00:00:00 2001 +From: Angelo Compagnucci +Date: Thu, 14 Dec 2017 13:34:29 +0100 +Subject: lib/Module.mk: Fix LIB_LINKS dependency + +LIB_LINKS should be added as a dependency only when +BUILD_DYNAMIC_LIB is enabled. + +Signed-off-by: Angelo Compagnucci +Signed-off-by: Jean Delvare +Fixes: 9906b2ecb6ae ("Makefile: Add flag to disable dynamic library" +--- + lib/Module.mk | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/lib/Module.mk b/lib/Module.mk +index 67afe91..2ebc70d 100644 +--- a/lib/Module.mk ++++ b/lib/Module.mk +@@ -27,10 +27,9 @@ LIB_SHSONAME := $(LIB_SHBASENAME).$(LIB_MAINVER) + LIB_SHLIBNAME := $(LIB_SHBASENAME).$(LIB_VER) + LIB_STLIBNAME := libi2c.a + +-LIB_LINKS := $(LIB_SHSONAME) $(LIB_SHBASENAME) +- + LIB_TARGETS := + ifeq ($(BUILD_DYNAMIC_LIB),1) ++LIB_LINKS := $(LIB_SHSONAME) $(LIB_SHBASENAME) + LIB_TARGETS += $(LIB_SHLIBNAME) + endif + ifeq ($(BUILD_STATIC_LIB),1) +-- +2.7.4 + diff --git a/buildroot/package/i2c-tools/0006-Makefile-Allow-to-really-disable-the-dynamic-library.patch b/buildroot/package/i2c-tools/0006-Makefile-Allow-to-really-disable-the-dynamic-library.patch new file mode 100644 index 0000000..85438cb --- /dev/null +++ b/buildroot/package/i2c-tools/0006-Makefile-Allow-to-really-disable-the-dynamic-library.patch @@ -0,0 +1,33 @@ +From 57d2c370493f2e9e33b30e8767624c648f138ec4 Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Thu, 14 Dec 2017 13:34:34 +0100 +Subject: Makefile: Allow to really disable the dynamic library + +If the user disables the build of the dynamic library, we have to +link the tools with the static library. If we don't, the dependencies +will cause the dynamic library to be built regardless of the user's +request. + +Signed-off-by: Jean Delvare +Fixes: 9906b2ecb6ae ("Makefile: Add flag to disable dynamic library") +Signed-off-by: Angelo Compagnucci +--- + Makefile | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Makefile b/Makefile +index 1bb5572..6bb741f 100644 +--- a/Makefile ++++ b/Makefile +@@ -43,6 +43,8 @@ endif + ifeq ($(BUILD_DYNAMIC_LIB),0) + ifeq ($(BUILD_STATIC_LIB),0) + $(error BUILD_DYNAMIC_LIB and BUILD_STATIC_LIB cannot be disabled at the same time) ++else ++USE_STATIC_LIB := 1 + endif + endif + +-- +2.7.4 + diff --git a/buildroot/package/i2c-tools/0007-eeprog-Module.mk-Add-missing-dependency.patch b/buildroot/package/i2c-tools/0007-eeprog-Module.mk-Add-missing-dependency.patch new file mode 100644 index 0000000..126d388 --- /dev/null +++ b/buildroot/package/i2c-tools/0007-eeprog-Module.mk-Add-missing-dependency.patch @@ -0,0 +1,30 @@ +From f87c97317012a3b96b67237925893b8ffd5f4f50 Mon Sep 17 00:00:00 2001 +From: "Maxin B. John" +Date: Tue, 19 Dec 2017 13:46:15 +0100 +Subject: [PATCH] eeprog/Module.mk: Add missing dependency + +Absence of this dependency caused parallel build to run into a race +and break. + +Signed-off-by: Maxin B. John +Signed-off-by: Jean Delvare +--- + eeprog/Module.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/eeprog/Module.mk b/eeprog/Module.mk +index 9d36869..d215855 100644 +--- a/eeprog/Module.mk ++++ b/eeprog/Module.mk +@@ -20,7 +20,7 @@ EEPROG_TARGETS := eeprog + # Programs + # + +-$(EEPROG_DIR)/eeprog: $(EEPROG_DIR)/eeprog.o $(EEPROG_DIR)/24cXX.o ++$(EEPROG_DIR)/eeprog: $(EEPROG_DIR)/eeprog.o $(EEPROG_DIR)/24cXX.o $(LIB_DEPS) + $(CC) $(LDFLAGS) -o $@ $^ $(EEPROG_LDFLAGS) + + # +-- +2.7.4 + diff --git a/buildroot/package/i2c-tools/0008-lib-Module.mk-don-t-install-dynamic-library-when-dis.patch b/buildroot/package/i2c-tools/0008-lib-Module.mk-don-t-install-dynamic-library-when-dis.patch new file mode 100644 index 0000000..69410ce --- /dev/null +++ b/buildroot/package/i2c-tools/0008-lib-Module.mk-don-t-install-dynamic-library-when-dis.patch @@ -0,0 +1,41 @@ +From ae2e0c9708aeb4a8fb301a1a4016cec7b05fc142 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 2 Jan 2018 06:55:41 +0200 +Subject: [PATCH] lib/Module.mk: don't install dynamic library when disabled + +Do not attempt to install the dynamic library when build of that library +is disabled. Fixes the following installation error: + +install -m 755 lib/libi2c.so.0.1.0 .../target/usr/lib +install: cannot stat 'lib/libi2c.so.0.1.0': No such file or directory +lib/Module.mk:90: recipe for target 'install-lib' failed + +Cc: Angelo Compagnucci +Signed-off-by: Baruch Siach +--- + +Patch status: posted upstream +https://marc.info/?l=linux-i2c&m=151486925730634&w=2 + + lib/Module.mk | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/lib/Module.mk b/lib/Module.mk +index 2ebc70d76ed9..c492961e0a4a 100644 +--- a/lib/Module.mk ++++ b/lib/Module.mk +@@ -88,9 +88,11 @@ clean-lib: + + install-lib: $(addprefix $(LIB_DIR)/,$(LIB_TARGETS)) + $(INSTALL_DIR) $(DESTDIR)$(libdir) ++ifeq ($(BUILD_DYNAMIC_LIB),1) + $(INSTALL_PROGRAM) $(LIB_DIR)/$(LIB_SHLIBNAME) $(DESTDIR)$(libdir) + $(LN) $(LIB_SHLIBNAME) $(DESTDIR)$(libdir)/$(LIB_SHSONAME) + $(LN) $(LIB_SHSONAME) $(DESTDIR)$(libdir)/$(LIB_SHBASENAME) ++endif + ifeq ($(BUILD_STATIC_LIB),1) + $(INSTALL_DATA) $(LIB_DIR)/$(LIB_STLIBNAME) $(DESTDIR)$(libdir) + endif +-- +2.15.1 + diff --git a/buildroot/package/i2c-tools/Config.in b/buildroot/package/i2c-tools/Config.in new file mode 100644 index 0000000..d9b8dd9 --- /dev/null +++ b/buildroot/package/i2c-tools/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_I2C_TOOLS + bool "i2c-tools" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Heterogeneous set of I2C tools for Linux + + This package contains a heterogeneous set of I2C tools for + Linux: a bus probing tool, a chip dumper, register-level + access helpers, EEPROM decoding scripts, and more. + + https://i2c.wiki.kernel.org/index.php/I2C_Tools diff --git a/buildroot/package/i2c-tools/i2c-tools.hash b/buildroot/package/i2c-tools/i2c-tools.hash new file mode 100644 index 0000000..3475d20 --- /dev/null +++ b/buildroot/package/i2c-tools/i2c-tools.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 d900ca1c11c51ea20caa50b096f948008b8a7ad832311b23353e21baa7af28d6 i2c-tools-4.0.tar.xz + +# License file +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/i2c-tools/i2c-tools.mk b/buildroot/package/i2c-tools/i2c-tools.mk new file mode 100644 index 0000000..9ddaa72 --- /dev/null +++ b/buildroot/package/i2c-tools/i2c-tools.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# i2c-tools +# +################################################################################ + +I2C_TOOLS_VERSION = 4.0 +I2C_TOOLS_SOURCE = i2c-tools-$(I2C_TOOLS_VERSION).tar.xz +I2C_TOOLS_SITE = https://www.kernel.org/pub/software/utils/i2c-tools +I2C_TOOLS_LICENSE = GPL-2.0+, GPL-2.0 (py-smbus) +I2C_TOOLS_LICENSE_FILES = COPYING +I2C_TOOLS_MAKE_OPTS = EXTRA=eeprog + +ifeq ($(BR2_PACKAGE_PYTHON),y) +I2C_TOOLS_DEPENDENCIES += python +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +I2C_TOOLS_DEPENDENCIES += python3 +endif + +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +I2C_TOOLS_DEPENDENCIES += busybox +endif + +ifeq ($(BR2_STATIC_LIBS),y) +I2C_TOOLS_MAKE_OPTS += BUILD_DYNAMIC_LIB=0 USE_STATIC_LIB=1 +endif + +ifeq ($(BR2_SHARED_LIBS),y) +I2C_TOOLS_MAKE_OPTS += BUILD_STATIC_LIB=0 +endif + +# Build/install steps mirror the distutil python package type in the python package +# infrastructure +ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y) +# BASE_ENV taken from PKG_PYTHON_DISTUTILS_ENV in package/pkg-python.mk +I2C_TOOLS_PYTHON_BASE_ENV = \ + $(PKG_PYTHON_DISTUTILS_ENV) \ + CFLAGS="$(TARGET_CFLAGS) -I../include" + +define I2C_TOOLS_BUILD_PYSMBUS + (cd $(@D)/py-smbus; \ + $(I2C_TOOLS_PYTHON_BASE_ENV) \ + $(HOST_DIR)/bin/python setup.py build \ + $(PKG_PYTHON_DISTUTILS_BUILD_OPTS)) +endef + +define I2C_TOOLS_INSTALL_PYSMBUS + (cd $(@D)/py-smbus; \ + $(I2C_TOOLS_PYTHON_BASE_ENV) \ + $(HOST_DIR)/bin/python setup.py install \ + $(PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS)) +endef + +endif # BR2_PACKAGE_PYTHON + +define I2C_TOOLS_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) $(I2C_TOOLS_MAKE_OPTS) -C $(@D) + $(I2C_TOOLS_BUILD_PYSMBUS) +endef + +define I2C_TOOLS_INSTALL_TARGET_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) $(I2C_TOOLS_MAKE_OPTS) \ + DESTDIR="$(TARGET_DIR)" prefix=/usr -C $(@D) install + $(I2C_TOOLS_INSTALL_PYSMBUS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/i7z/Config.in b/buildroot/package/i7z/Config.in new file mode 100644 index 0000000..eea74f2 --- /dev/null +++ b/buildroot/package/i7z/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_I7Z + bool "i7z" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_NCURSES + help + "A better i7 (and now i3, i5) reporting tool for Linux." + + i7z can print out the C-states and temperature for i3, i5 + and i7 based Core processors from Intel (including Nehalems, + Sandy Bridge and Ivy Bridge). + + https://github.com/ajaiantilal/i7z + +comment "i7z needs a toolchain w/ threads" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/i7z/i7z.hash b/buildroot/package/i7z/i7z.hash new file mode 100644 index 0000000..1bcf2c6 --- /dev/null +++ b/buildroot/package/i7z/i7z.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 e127bddf850e7febd39cef2d2b13dca5fe19cc2a1bb1099d72b683be5d8bd1c0 i7z-5023138d7c35c4667c938b853e5ea89737334e92.tar.gz diff --git a/buildroot/package/i7z/i7z.mk b/buildroot/package/i7z/i7z.mk new file mode 100644 index 0000000..9c2c673 --- /dev/null +++ b/buildroot/package/i7z/i7z.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# i7z +# +################################################################################ + +I7Z_VERSION = 5023138d7c35c4667c938b853e5ea89737334e92 +I7Z_SITE = $(call github,ajaiantilal,i7z,$(I7Z_VERSION)) +I7Z_LICENSE = GPL-2.0 +I7Z_LICENSE_FILES = COPYING +I7Z_DEPENDENCIES = ncurses + +define I7Z_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define I7Z_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \ + DESTDIR="$(TARGET_DIR)" +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ibrcommon/0001-ibrcommon-data-File.cpp-support-POSIX-basename-call.patch b/buildroot/package/ibrcommon/0001-ibrcommon-data-File.cpp-support-POSIX-basename-call.patch new file mode 100644 index 0000000..b7c1839 --- /dev/null +++ b/buildroot/package/ibrcommon/0001-ibrcommon-data-File.cpp-support-POSIX-basename-call.patch @@ -0,0 +1,55 @@ +From d667b13a87cf3207599a19eb981a893a1d7a67ee Mon Sep 17 00:00:00 2001 +From: Brendan Heading +Date: Mon, 14 Sep 2015 23:25:52 +0100 +Subject: [PATCH 1/1] ibrcommon/data/File.cpp: support POSIX basename call + +Firstly, and somewhat strangely, musl chooses not to provide a basename(3) +prototype within whenever __cplusplus is defined. This can be +solved by including the header defined by POSIX 1003.1 whenever +__GLIBC__ is not defined. + +However, this leads to a second problem. POSIX defines the function as +char* basename(char*) and this is the only version supported by musl. +However, the std::string.cstr() method returns a const char*. + +POSIX says that the string parameter can be modified. However the GNU +implementation never modifies it. glibc therefore supports an extension +when compiling under C++ by also supplying +const char* basename(const char*). This extension is not present on musl +which is the cause of the failure. + +The solution is reasonably straightforward; test if __GLIBC__ is defined +before calling basename. If not, use the fallback already provided for +other platforms whereby basename() is called on a temporary copy. + +Signed-off-by: Brendan Heading +Upstream-status: pending +--- + ibrcommon/data/File.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ibrcommon/data/File.cpp b/ibrcommon/data/File.cpp +index 31af4ae..68e9b4f 100644 +--- a/ibrcommon/data/File.cpp ++++ b/ibrcommon/data/File.cpp +@@ -35,7 +35,7 @@ + #include + #include + +-#if !defined(HAVE_FEATURES_H) || defined(ANDROID) ++#if !defined(HAVE_FEATURES_H) || !defined(__GLIBC__) || defined(ANDROID) + #include + #endif + +@@ -225,7 +225,7 @@ namespace ibrcommon + + std::string File::getBasename() const + { +-#if !defined(ANDROID) && defined(HAVE_FEATURES_H) ++#if !defined(ANDROID) && defined(HAVE_FEATURES_H) && defined(__GLIBC__) + return std::string(basename(_path.c_str())); + #else + char path[_path.length()+1]; +-- +2.4.3 + diff --git a/buildroot/package/ibrcommon/Config.in b/buildroot/package/ibrcommon/Config.in new file mode 100644 index 0000000..36ccfbc --- /dev/null +++ b/buildroot/package/ibrcommon/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_IBRCOMMON + bool "ibrcommon" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + IBR-DTN is a small dtn application that supports: + Bundle Protocol RFC 5050 + Bundle Security Protocol RFC 6257 + + http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn + +comment "ibrcommon needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/ibrcommon/ibrcommon.hash b/buildroot/package/ibrcommon/ibrcommon.hash new file mode 100644 index 0000000..21a0ec6 --- /dev/null +++ b/buildroot/package/ibrcommon/ibrcommon.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9c457c1ebc01e6216524636628c647bef34ab11bd96f0e0788be8749374fdc20 ibrcommon-1.0.1.tar.gz diff --git a/buildroot/package/ibrcommon/ibrcommon.mk b/buildroot/package/ibrcommon/ibrcommon.mk new file mode 100644 index 0000000..4d2d351 --- /dev/null +++ b/buildroot/package/ibrcommon/ibrcommon.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# ibrcommon +# +################################################################################ + +IBRCOMMON_VERSION = 1.0.1 +IBRCOMMON_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases +IBRCOMMON_INSTALL_STAGING = YES +IBRCOMMON_LICENSE = Apache-2.0 +IBRCOMMON_LICENSE_FILES = COPYING README +IBRCOMMON_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +IBRCOMMON_DEPENDENCIES += openssl +IBRCOMMON_CONF_OPTS += --with-openssl +else +IBRCOMMON_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_LIBNL),y) +IBRCOMMON_DEPENDENCIES += libnl +IBRCOMMON_CONF_OPTS += --with-lowpan +else +IBRCOMMON_CONF_OPTS += --without-lowpan +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +IBRCOMMON_DEPENDENCIES += libxml2 +IBRCOMMON_CONF_OPTS += --with-xml +else +IBRCOMMON_CONF_OPTS += --without-xml +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ibrdtn-tools/Config.in b/buildroot/package/ibrdtn-tools/Config.in new file mode 100644 index 0000000..91419d6 --- /dev/null +++ b/buildroot/package/ibrdtn-tools/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_IBRDTN_TOOLS + bool "ibrdtn-tools" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_IBRCOMMON + select BR2_PACKAGE_IBRDTN + help + IBR-DTN is a small dtn application that supports: + Bundle Protocol RFC 5050 + Bundle Security Protocol RFC 6257 + + http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn + +comment "ibrdtn-tools needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/ibrdtn-tools/ibrdtn-tools.hash b/buildroot/package/ibrdtn-tools/ibrdtn-tools.hash new file mode 100644 index 0000000..fb77207 --- /dev/null +++ b/buildroot/package/ibrdtn-tools/ibrdtn-tools.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 eab066cf15f9c322d769c6c9c58adfb474cba7d446fd12e8de5ff6344376795b ibrdtn-tools-1.0.1.tar.gz diff --git a/buildroot/package/ibrdtn-tools/ibrdtn-tools.mk b/buildroot/package/ibrdtn-tools/ibrdtn-tools.mk new file mode 100644 index 0000000..97ec3c9 --- /dev/null +++ b/buildroot/package/ibrdtn-tools/ibrdtn-tools.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# ibrdtn-tools +# +################################################################################ + +IBRDTN_TOOLS_VERSION = 1.0.1 +IBRDTN_TOOLS_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases +IBRDTN_TOOLS_LICENSE = Apache-2.0 +IBRDTN_TOOLS_LICENSE_FILES = COPYING +IBRDTN_TOOLS_DEPENDENCIES = ibrcommon ibrdtn host-pkgconf + +ifeq ($(BR2_STATIC_LIBS),y) +IBRDTN_TOOLS_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -pthread" +endif + +ifeq ($(BR2_PACKAGE_LIBDAEMON),y) +IBRDTN_TOOLS_CONF_OPTS += --with-libdaemon +IBRDTN_TOOLS_DEPENDENCIES += libdaemon +else +IBRDTN_TOOLS_CONF_OPTS += --without-libdaemon +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +IBRDTN_TOOLS_CONF_OPTS += --with-libarchive +IBRDTN_TOOLS_DEPENDENCIES += libarchive +else +IBRDTN_TOOLS_CONF_OPTS += --without-libarchive +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ibrdtn/Config.in b/buildroot/package/ibrdtn/Config.in new file mode 100644 index 0000000..5698315 --- /dev/null +++ b/buildroot/package/ibrdtn/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_IBRDTN + bool "ibrdtn" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_IBRCOMMON + help + IBR-DTN is a small dtn application that supports: + Bundle Protocol RFC 5050 + Bundle Security Protocol RFC 6257 + + This package contains the ibrdtn library. + + http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn + +comment "ibrdtn needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/ibrdtn/ibrdtn.hash b/buildroot/package/ibrdtn/ibrdtn.hash new file mode 100644 index 0000000..5f23327 --- /dev/null +++ b/buildroot/package/ibrdtn/ibrdtn.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 288b14ccbaefb5e3234065c2778c247797ccb3c7afbb6746bb37dc12c620d360 ibrdtn-1.0.1.tar.gz diff --git a/buildroot/package/ibrdtn/ibrdtn.mk b/buildroot/package/ibrdtn/ibrdtn.mk new file mode 100644 index 0000000..3f805c4 --- /dev/null +++ b/buildroot/package/ibrdtn/ibrdtn.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# ibrdtn +# +################################################################################ + +IBRDTN_VERSION = 1.0.1 +IBRDTN_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases +IBRDTN_INSTALL_STAGING = YES +IBRDTN_LICENSE = Apache-2.0 +IBRDTN_LICENSE_FILES = COPYING +IBRDTN_DEPENDENCIES = ibrcommon host-pkgconf + +ifeq ($(BR2_PACKAGE_ZLIB),y) +IBRDTN_CONF_OPTS += --with-compression +IBRDTN_DEPENDENCIES += zlib +else +IBRDTN_CONF_OPTS += --without-compression +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +IBRDTN_CONF_OPTS += --with-glib +IBRDTN_DEPENDENCIES += libglib2 +else +IBRDTN_CONF_OPTS += --without-glib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ibrdtnd/Config.in b/buildroot/package/ibrdtnd/Config.in new file mode 100644 index 0000000..f7f371e --- /dev/null +++ b/buildroot/package/ibrdtnd/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_IBRDTND + bool "ibrdtnd" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_IBRDTN + select BR2_PACKAGE_IBRCOMMON + help + IBR-DTN is a small dtn application that supports: + Bundle Protocol RFC 5050 + Bundle Security Protocol RFC 6257 + + http://trac.ibr.cs.tu-bs.de/project-cm-2012-ibrdtn + +comment "ibrdtnd needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/ibrdtnd/ibrdtnd.hash b/buildroot/package/ibrdtnd/ibrdtnd.hash new file mode 100644 index 0000000..4b7dd7c --- /dev/null +++ b/buildroot/package/ibrdtnd/ibrdtnd.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9bd79636154093ab6bf4fd10d6c62d67c6db45141460847b19def327c93771ed ibrdtnd-1.0.1.tar.gz diff --git a/buildroot/package/ibrdtnd/ibrdtnd.mk b/buildroot/package/ibrdtnd/ibrdtnd.mk new file mode 100644 index 0000000..0632ed3 --- /dev/null +++ b/buildroot/package/ibrdtnd/ibrdtnd.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# ibrdtnd +# +################################################################################ + +IBRDTND_VERSION = 1.0.1 +IBRDTND_SITE = https://www.ibr.cs.tu-bs.de/projects/ibr-dtn/releases +IBRDTND_LICENSE = Apache-2.0 +IBRDTND_LICENSE_FILES = COPYING +IBRDTND_DEPENDENCIES = ibrdtn ibrcommon host-pkgconf + +# Disable features that don't have the necessary dependencies in +# Buildroot +IBRDTND_CONF_OPTS = \ + --disable-dtndht \ + --without-wifip2p \ + --without-vmime + +# don't build documentation +IBRDTND_CONF_ENV = PDFLATEX='no' + +ifeq ($(BR2_PACKAGE_LIBDAEMON),y) +IBRDTND_CONF_OPTS += --enable-libdaemon +IBRDTND_DEPENDENCIES += libdaemon +else +IBRDTND_CONF_OPTS += --disable-libdaemon +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +IBRDTND_CONF_OPTS += --with-curl +IBRDTND_DEPENDENCIES += libcurl +else +IBRDTND_CONF_OPTS += --without-curl +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +IBRDTND_CONF_OPTS += --with-sqlite +IBRDTND_DEPENDENCIES += sqlite +else +IBRDTND_CONF_OPTS += --without-sqlite +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +IBRDTND_CONF_OPTS += --with-tls +IBRDTND_DEPENDENCIES += openssl +else +IBRDTND_CONF_OPTS += --without-tls +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/icu/0001-dont-build-static-dynamic-twice.patch b/buildroot/package/icu/0001-dont-build-static-dynamic-twice.patch new file mode 100644 index 0000000..ccbe534 --- /dev/null +++ b/buildroot/package/icu/0001-dont-build-static-dynamic-twice.patch @@ -0,0 +1,37 @@ +Don't build object files twice + +When passed --enable-static and --enable-shared, icu will generate +both a shared and a static version of its libraries. + +However, in order to do so, it builds each and every object file +twice: once with -fPIC (for the shared library), and once without +-fPIC (for the static library). While admittedly building -fPIC for a +static library generates a slightly suboptimal code, this is what all +the autotools-based project are doing. They build each object file +once, and they use it for both the static and shared libraries. + +icu builds the object files for the shared library as .o files, and +the object files for static library as .ao files. By simply changing +the suffix of object files used for static libraries to ".o", we tell +icu to use the ones built for the shared library (i.e, with -fPIC), +and avoid the double build of icu. + +On a fast build server, this brings the target icu build from +3m41.302s down to 1m43.926s (approximate numbers: some other builds +are running on the system at the same time). + +Signed-off-by: Thomas Petazzoni + +Index: b/source/config/mh-linux +=================================================================== +--- a/source/config/mh-linux ++++ b/source/config/mh-linux +@@ -35,7 +35,7 @@ + ## Shared object suffix + SO = so + ## Non-shared intermediate object suffix +-STATIC_O = ao ++STATIC_O = o + + ## Compilation rules + %.$(STATIC_O): $(srcdir)/%.c diff --git a/buildroot/package/icu/0002-workaround-toolchain-bugs.patch b/buildroot/package/icu/0002-workaround-toolchain-bugs.patch new file mode 100644 index 0000000..b5f25d0 --- /dev/null +++ b/buildroot/package/icu/0002-workaround-toolchain-bugs.patch @@ -0,0 +1,37 @@ +Workaround toolchain bugs + +Many of ARM Sourcery CodeBench toolchain have a bug when compiling +icu's translit.cpp source file. The bug is trigerred when there is a +combination of "-W -Wall" and "-Os", and causes an internal compiler +error. The bug has been reported to Mentor Graphics. + +Even though it is clearly a toolchain bug, having a workaround for it +is trivial in this case. So it will avoid our users falling into this +internal compiler error, and allow our autobuilders to test more +packages using this Sourcery CodeBench toolchain.qq + +[Gustavo: update for ICU4C 54.1] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Gustavo Zacarias + +diff -Nura icu.orig/source/configure icu/source/configure +--- icu.orig/source/configure 2014-12-18 15:49:43.038628644 -0300 ++++ icu/source/configure 2014-12-18 15:51:23.183083232 -0300 +@@ -4323,7 +4323,7 @@ + ;; + esac + +- CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings" ++ CFLAGS="$CFLAGS -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings" + else + case "${host}" in + *-*-cygwin) +@@ -4337,7 +4337,7 @@ + fi + if test "$GXX" = yes + then +- CXXFLAGS="$CXXFLAGS -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long" ++ CXXFLAGS="$CXXFLAGS -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long" + else + case "${host}" in + *-*-cygwin) diff --git a/buildroot/package/icu/0003-detect-compiler-symbol-prefix.patch b/buildroot/package/icu/0003-detect-compiler-symbol-prefix.patch new file mode 100644 index 0000000..1e95375 --- /dev/null +++ b/buildroot/package/icu/0003-detect-compiler-symbol-prefix.patch @@ -0,0 +1,116 @@ +detect and add compiler symbol prefix to the assembly code + +Some compiler, such as Blackfin GNU compiler, prefix a charater to any +C symbol in generated assembly code. If any assembly symbol is invoked +from C code, it needs to be prefixed as well. + +Note: since autoreconf doesn't work with this package because automake +isn't support + +[Ryan: add information about why patching configure is ok] +[Gustavo: update for ICU4C 54.1] + +Signed-off-by: Sonic Zhang +Signed-off-by: Ryan Barnett +Signed-off-by: Gustavo Zacarias + +diff -Nura icu.orig/source/configure icu/source/configure +--- icu.orig/source/configure 2014-12-18 15:49:43.038628644 -0300 ++++ icu/source/configure 2014-12-18 15:56:05.793832186 -0300 +@@ -637,6 +637,7 @@ + ICUDATA_CHAR + SAMPLES_TRUE + TESTS_TRUE ++SYMBOL_PREFIX + ICULIBSUFFIXCNAME + U_HAVE_LIB_SUFFIX + ICULIBSUFFIX +@@ -7414,6 +7415,17 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_UTF16_STRING_RESULT" >&5 + $as_echo "$CHECK_UTF16_STRING_RESULT" >&6; } + ++# Check compiler generated symbol profix ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for symbol prefix" >&5 ++$as_echo "checking for symbol prefix... " >&6; } ++ SYMBOL_PREFIX=`echo "PREFIX=__USER_LABEL_PREFIX__" \ ++ | ${CPP-${CC-gcc} -E} - 2>&1 \ ++ | ${EGREP-grep} "^PREFIX=" \ ++ | sed -e "s:^PREFIX=::" -e "s:__USER_LABEL_PREFIX__::"` ++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SYMBOL_PREFIX" >&5 ++$as_echo "$SYMBOL_PREFIX" >&6; } ++ + # Enable/disable extras + # Check whether --enable-extras was given. + if test "${enable_extras+set}" = set; then : +diff -Nura icu.orig/source/data/Makefile.in icu/source/data/Makefile.in +--- icu.orig/source/data/Makefile.in 2014-12-18 15:49:42.908624160 -0300 ++++ icu/source/data/Makefile.in 2014-12-18 16:01:32.751110913 -0300 +@@ -182,11 +182,11 @@ + packagedata: icupkg.inc $(PKGDATA_LIST) build-local + ifneq ($(ENABLE_STATIC),) + ifeq ($(PKGDATA_MODE),dll) +- $(PKGDATA_INVOKE) $(PKGDATA) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) -m static $(PKGDATA_VERSIONING) $(PKGDATA_LIST) ++ $(PKGDATA_INVOKE) $(PKGDATA) -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) -m static $(PKGDATA_VERSIONING) $(PKGDATA_LIST) + endif + endif + ifneq ($(ICUDATA_SOURCE_IS_NATIVE_TARGET),YES) +- $(PKGDATA_INVOKE) $(PKGDATA) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) $(PKGDATA_LIBNAME) $(PKGDATA_LIST) ++ $(PKGDATA_INVOKE) $(PKGDATA) -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) $(PKGDATA_LIBNAME) $(PKGDATA_LIST) + else + $(INSTALL_DATA) $(ICUDATA_SOURCE_ARCHIVE) $(OUTDIR) + endif +@@ -209,11 +209,11 @@ + endif + ifneq ($(ENABLE_STATIC),) + ifeq ($(PKGDATA_MODE),dll) +- $(PKGDATA_INVOKE) $(PKGDATA) -m static -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) $(PKGDATA_LIST) -I $(ICUPKGDATA_INSTALL_LIBDIR) ++ $(PKGDATA_INVOKE) $(PKGDATA) -m static -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) $(PKGDATA_LIST) -I $(ICUPKGDATA_INSTALL_LIBDIR) + endif + endif + ifneq ($(ICUDATA_SOURCE_IS_NATIVE_TARGET),YES) +- $(PKGDATA_INVOKE) $(PKGDATA) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBNAME) $(PKGDATA_LIST) -I $(ICUPKGDATA_INSTALL_DIR) ++ $(PKGDATA_INVOKE) $(PKGDATA) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBNAME) $(PKGDATA_LIST) -I $(ICUPKGDATA_INSTALL_DIR) + else + $(INSTALL_DATA) $(ICUDATA_SOURCE_ARCHIVE) $(DESTDIR)$(ICUPKGDATA_DIR) + endif +@@ -224,7 +224,7 @@ + #### 390 support + install390: package390 + $(MKINSTALLDIRS) $(TMPDATADIR) $(DESTDIR)$(libdir) +- $(INVOKE) $(PKGDATA) -s $(BUILDDIR)$(STUB_SUFFIX) -T $(OUTTMPDIR_390STUB) -p $(ICUDATA_NAME)$(STUB_SUFFIX) $(PKGDATA_LIBNAME)$(STUB_SUFFIX) -e $(ICUDATA_ENTRY_POINT) $(OS390LIST) -m dll $(PKGDATA_VERSIONING) -I $(DESTDIR)$(ICUPKGDATA_DIR) ++ $(INVOKE) $(PKGDATA) -s $(BUILDDIR)$(STUB_SUFFIX) -T $(OUTTMPDIR_390STUB) -p $(ICUDATA_NAME)$(STUB_SUFFIX) $(PKGDATA_LIBNAME)$(STUB_SUFFIX) -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) $(OS390LIST) -m dll $(PKGDATA_VERSIONING) -I $(DESTDIR)$(ICUPKGDATA_DIR) + ifeq ($(PKGDATA_MODE),dll) + $(INSTALL-L) $(ICUPKGDATA_OUTDIR)/$(FINAL_IMPORT_LIB) $(DESTDIR)$(ICUPKGDATA_DIR)/$(FINAL_IMPORT_LIB) + endif +@@ -232,7 +232,7 @@ + #### $(LIB_ICUDATA_NAME)$(STUB_SUFFIX) is the subset data for batch mode + package390: $(OUTTMPDIR)/icudata390.lst $(PKGDATA_LIST) ./icupkg.inc packagedata + ln -s $(ICUDATA_NAME) $(OUTDIR)/build/$(ICUDATA_NAME)$(STUB_SUFFIX) +- $(INVOKE) $(PKGDATA) -s $(BUILDDIR)$(STUB_SUFFIX) -T $(OUTTMPDIR_390STUB) -p $(ICUDATA_NAME)$(STUB_SUFFIX) $(PKGDATA_LIBNAME)$(STUB_SUFFIX) -e $(ICUDATA_ENTRY_POINT) $(OS390LIST) -m dll $(PKGDATA_VERSIONING) ++ $(INVOKE) $(PKGDATA) -s $(BUILDDIR)$(STUB_SUFFIX) -T $(OUTTMPDIR_390STUB) -p $(ICUDATA_NAME)$(STUB_SUFFIX) $(PKGDATA_LIBNAME)$(STUB_SUFFIX) -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) $(OS390LIST) -m dll $(PKGDATA_VERSIONING) + cp $(ICUPKGDATA_OUTDIR)/$(LIB_ICUDATA_NAME)$(STUB_SUFFIX).$(SO) $(top_builddir)/stubdata/$(LIB_ICUDATA_NAME)$(STUB_SUFFIX).$(SO) + + +diff -Nura icu.orig/source/extra/uconv/Makefile.in icu/source/extra/uconv/Makefile.in +--- icu.orig/source/extra/uconv/Makefile.in 2014-12-18 15:49:42.986626850 -0300 ++++ icu/source/extra/uconv/Makefile.in 2014-12-18 15:57:40.558101179 -0300 +@@ -58,7 +58,8 @@ + ## Static mode + ifeq ($(UCONVMSG_MODE),static) + DEFS += -DUCONVMSG_LINK=$(MSGNAME) +-UCONVMSG_LIB = $(RESDIR)/$(LIBPREFIX)$(STATIC_PREFIX_WHEN_USED)$(MSGNAME).$(A) ++UCONVMSG_LIB = $(RESDIR)/$(LIBPREFIX)$(STATIC_PREFIX_WHEN_USED)@SYMBOL_PREFIX@$(MSGNAME).$(A) ++ + LIBS += $(UCONVMSG_LIB) + PKGMODE=static + INSTALLTO=$(libdir) +@@ -152,7 +153,7 @@ + endif + + $(UCONVMSG_LIB): $(RESFILES) $(RESDIR)/$(RESDIR).lst pkgdata.inc +- $(INVOKE) $(PKGDATA_INVOKE_OPTS) $(TOOLBINDIR)/pkgdata -p $(MSGNAME) $(PKGDATA_OPTS) -m $(PKGMODE) -s $(RESDIR) -d $(RESDIR) -T $(RESDIR) $(RESDIR)/$(RESDIR).lst ++ $(INVOKE) $(PKGDATA_INVOKE_OPTS) $(TOOLBINDIR)/pkgdata -p @SYMBOL_PREFIX@$(MSGNAME) $(PKGDATA_OPTS) -m $(PKGMODE) -s $(RESDIR) -d $(RESDIR) -T $(RESDIR) $(RESDIR)/$(RESDIR).lst + + $(RESDIR)/$(RESDIR).lst: Makefile $(srcdir)/resfiles.mk + @-$(RMV) $@ diff --git a/buildroot/package/icu/0004-link-icudata-as-data-only.patch b/buildroot/package/icu/0004-link-icudata-as-data-only.patch new file mode 100644 index 0000000..d970e8d --- /dev/null +++ b/buildroot/package/icu/0004-link-icudata-as-data-only.patch @@ -0,0 +1,35 @@ +From d5d0c4bb7cc9aa4a132ec0bea13255aee50c1cf9 Mon Sep 17 00:00:00 2001 +From: Maxime Hadjinlian +Date: Fri, 6 Jun 2014 14:55:58 +0200 +Subject: [PATCH] Don't link icudata as a data only library + +This patch cames straight from Debian. It fixes an issue when +libicudata would not have some flags indicating it's EABIhf, causing +applications linked against libicudata to not start on EABIhf +systems. Getting rid of the -nodefaultlibs -nostdlib flags solves the +problem, and is the solution that is used by Debian, see +https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=653457. + +Signed-off-by: Maxime Hadjinlian +--- + source/config/mh-linux | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/source/config/mh-linux b/source/config/mh-linux +index 531a3b2..5a2a7c4 100644 +--- a/source/config/mh-linux ++++ b/source/config/mh-linux +@@ -21,7 +21,9 @@ LD_RPATH= -Wl,-zorigin,-rpath,'$$'ORIGIN + LD_RPATH_PRE = -Wl,-rpath, + + ## These are the library specific LDFLAGS +-LDFLAGSICUDT=-nodefaultlibs -nostdlib ++#LDFLAGSICUDT=-nodefaultlibs -nostdlib ++# Debian change: linking icudata as data only causes too many problems. ++LDFLAGSICUDT= + + ## Compiler switch to embed a library name + # The initial tab in the next line is to prevent icu-config from reading it. +-- +2.0.0.rc2 + diff --git a/buildroot/package/icu/0005-fix-static-linking-with-icu-uc.patch b/buildroot/package/icu/0005-fix-static-linking-with-icu-uc.patch new file mode 100644 index 0000000..965906b --- /dev/null +++ b/buildroot/package/icu/0005-fix-static-linking-with-icu-uc.patch @@ -0,0 +1,34 @@ +From ffff12fd321c7a056e796e74cc508726b0626ae0 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 22 Jul 2015 22:43:25 +0200 +Subject: [PATCH] fix static linking with icu-uc + +During static linking with a C application and libicuuc.a, +-lstdc++ is required. + +Add -lstdc++ in Libs.private of icu-uc.pc. + +Fixes: +http://autobuild.buildroot.net/results/210/2107f9dfb39eeb6559fb4271c7af8b39aef521ca/ + +Signed-off-by: Romain Naour +--- + source/Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source/Makefile.in b/source/Makefile.in +index 9db6c52..ca48e16 100644 +--- a/source/Makefile.in ++++ b/source/Makefile.in +@@ -264,7 +264,7 @@ config/icu-uc.pc: config/icu.pc Makefile icudefs.mk + @echo "Description: $(PACKAGE_ICU_DESCRIPTION): Common and Data libraries" >> $@ + @echo "Name: $(PACKAGE)-uc" >> $@ + @echo "Libs:" '-L$${libdir}' "${ICULIBS_UC}" "${ICULIBS_DT}" >> $@ +- @echo "Libs.private:" '$${baselibs}' >> $@ ++ @echo "Libs.private:" '$${baselibs}' -lstdc++ >> $@ + @echo $@ updated. + + config/icu-i18n.pc: config/icu.pc Makefile icudefs.mk +-- +2.4.3 + diff --git a/buildroot/package/icu/Config.in b/buildroot/package/icu/Config.in new file mode 100644 index 0000000..fde486b --- /dev/null +++ b/buildroot/package/icu/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_ICU + bool "icu" + depends on BR2_HOST_GCC_AT_LEAST_4_8 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HAS_THREADS + # icu does some funky things by generating by itself an ELF + # file, and it cannot easily be changed to generate FLAT + # format. + depends on !BR2_BINFMT_FLAT + help + International Components for Unicode. + + http://site.icu-project.org/ + +if BR2_PACKAGE_ICU + +config BR2_PACKAGE_ICU_CUSTOM_DATA_PATH + string "Path to custom data library file" + help + This option allows to define the path to a custom data + library generated with http://apps.icu-project.org/datacustom/ + Make sure you select the appropiate version to match the one + provided by buildroot. + Leave empty to not use this functionality. + +endif + +comment "icu needs a toolchain w/ C++, wchar, threads, gcc >= 4.8, host gcc >= 4.8" + depends on !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_HOST_GCC_AT_LEAST_4_8 diff --git a/buildroot/package/icu/icu.hash b/buildroot/package/icu/icu.hash new file mode 100644 index 0000000..8b54e22 --- /dev/null +++ b/buildroot/package/icu/icu.hash @@ -0,0 +1,3 @@ +# From http://download.icu-project.org/files/icu4c/60.1/SHASUM512.txt +sha512 a6798f70add1b3bac2197a49e09a0bb636279af7019ce572f63a30ab713e09657ee9d9b20aac7ea806fbb84667ca2eca981411e5053b47c3c705aa496a669233 icu4c-60_1-src.tgz +sha256 24c771ce37201a3ab604852e47d10d21595d0493269dd6c8a5e567e998e18c00 LICENSE diff --git a/buildroot/package/icu/icu.mk b/buildroot/package/icu/icu.mk new file mode 100644 index 0000000..6ac4a25 --- /dev/null +++ b/buildroot/package/icu/icu.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# icu +# +################################################################################ + +ICU_VERSION = 60.1 +ICU_SOURCE = icu4c-$(subst .,_,$(ICU_VERSION))-src.tgz +ICU_SITE = http://download.icu-project.org/files/icu4c/$(ICU_VERSION) +ICU_LICENSE = ICU License +ICU_LICENSE_FILES = LICENSE + +ICU_DEPENDENCIES = host-icu +ICU_INSTALL_STAGING = YES +ICU_CONFIG_SCRIPTS = icu-config +ICU_CONF_OPTS = \ + --with-cross-build=$(HOST_ICU_DIR)/source \ + --disable-samples \ + --disable-tests + +# When available, icu prefers to use C++11 atomics, which rely on the +# __atomic builtins. On certain architectures, this requires linking +# with libatomic starting from gcc 4.8. +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +ICU_CONF_ENV += LIBS="-latomic" +endif + +# strtod_l() is not supported by musl; also xlocale.h is missing +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +ICU_CONF_ENV += ac_cv_func_strtod_l=no +endif + +HOST_ICU_CONF_OPTS = \ + --disable-samples \ + --disable-tests \ + --disable-extras \ + --disable-icuio \ + --disable-layout \ + --disable-renaming +ICU_SUBDIR = source +HOST_ICU_SUBDIR = source + +ICU_CUSTOM_DATA_PATH = $(call qstrip,$(BR2_PACKAGE_ICU_CUSTOM_DATA_PATH)) + +ifneq ($(ICU_CUSTOM_DATA_PATH),) +define ICU_COPY_CUSTOM_DATA + cp $(ICU_CUSTOM_DATA_PATH) $(@D)/source/data/in/ +endef +ICU_POST_PATCH_HOOKS += ICU_COPY_CUSTOM_DATA +endif + +define ICU_REMOVE_DEV_FILES + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,derb genbrk gencfu gencnval gendict genrb icuinfo makeconv uconv) + rm -f $(addprefix $(TARGET_DIR)/usr/sbin/,genccode gencmn gennorm2 gensprep icupkg) + rm -rf $(TARGET_DIR)/usr/share/icu +endef +ICU_POST_INSTALL_TARGET_HOOKS += ICU_REMOVE_DEV_FILES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/ifenslave/Config.in b/buildroot/package/ifenslave/Config.in new file mode 100644 index 0000000..2203284 --- /dev/null +++ b/buildroot/package/ifenslave/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_IFENSLAVE + bool "ifenslave" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Configure network interfaces for parallel routing (bonding) + + http://anonscm.debian.org/cgit/collab-maint/ifenslave.git diff --git a/buildroot/package/ifenslave/ifenslave.hash b/buildroot/package/ifenslave/ifenslave.hash new file mode 100644 index 0000000..dcf31d0 --- /dev/null +++ b/buildroot/package/ifenslave/ifenslave.hash @@ -0,0 +1,3 @@ +# From http://snapshot.debian.org/archive/debian/20170102T091407Z/pool/main/i/ifenslave/ifenslave_2.9.dsc +sha1 a17e88fa298ef337e872c8aa5d7a390921239d1a ifenslave_2.9.tar.xz +sha256 e5666c0b61347bd06f2394c16eca6895fcb5e5cc83d0a1c596a975274de5a3c9 ifenslave_2.9.tar.xz diff --git a/buildroot/package/ifenslave/ifenslave.mk b/buildroot/package/ifenslave/ifenslave.mk new file mode 100644 index 0000000..4030d22 --- /dev/null +++ b/buildroot/package/ifenslave/ifenslave.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# ifenslave +# +################################################################################ + +IFENSLAVE_VERSION = 2.9 +IFENSLAVE_SOURCE = ifenslave_$(IFENSLAVE_VERSION).tar.xz +IFENSLAVE_SITE = http://snapshot.debian.org/archive/debian/20170102T091407Z/pool/main/i/ifenslave +IFENSLAVE_LICENSE = GPL-3.0+ +IFENSLAVE_LICENSE_FILES = debian/copyright +IFENSLAVE_DEPENDENCIES = $(if $(BR2_PACKAGE_BUSYBOX),busybox) + +# shell script, so nothing to build + +define IFENSLAVE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/ifenslave $(TARGET_DIR)/sbin/ifenslave +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ifplugd/0001-cross.patch b/buildroot/package/ifplugd/0001-cross.patch new file mode 100644 index 0000000..6217238 --- /dev/null +++ b/buildroot/package/ifplugd/0001-cross.patch @@ -0,0 +1,17 @@ +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: ifplugd-0.28/configure +=================================================================== +--- ifplugd-0.28.orig/configure ++++ ifplugd-0.28/configure +@@ -5430,7 +5430,7 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test "$cross_compiling" = yes; then +- ac_cv_func_malloc_0_nonnull=no ++ ac_cv_func_malloc_0_nonnull=yes + else + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ diff --git a/buildroot/package/ifplugd/0002-fix-headers.patch b/buildroot/package/ifplugd/0002-fix-headers.patch new file mode 100644 index 0000000..06372a2 --- /dev/null +++ b/buildroot/package/ifplugd/0002-fix-headers.patch @@ -0,0 +1,24 @@ +--- + src/interface.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: ifplugd-0.28/src/interface.c +=================================================================== +--- ifplugd-0.28.orig/src/interface.c ++++ ifplugd-0.28/src/interface.c +@@ -23,7 +23,6 @@ + #endif + + #include +-#include + #include + #include + #include +@@ -32,6 +31,7 @@ + #include + #include + #include ++#include + #include + #include + #include diff --git a/buildroot/package/ifplugd/0003-no-cxx.patch b/buildroot/package/ifplugd/0003-no-cxx.patch new file mode 100644 index 0000000..50ec054 --- /dev/null +++ b/buildroot/package/ifplugd/0003-no-cxx.patch @@ -0,0 +1,17 @@ +[PATCH] ifplugd: configure: don't check for C++ compiler + +The configure script was checking for a C++ compiler (and erroring out +if not found), even though it isn't used for anything. + +Signed-off-by: Peter Korsgaard +diff -urpN ifplugd-0.28/configure.ac ifplugd-0.28.new/configure.ac +--- ifplugd-0.28/configure.ac 2005-06-04 21:21:51.000000000 +0200 ++++ ifplugd-0.28.new/configure.ac 2008-12-13 20:31:13.000000000 +0100 +@@ -33,7 +33,6 @@ if type -p stow > /dev/null && test -d / + fi + + # Checks for programs. +-AC_PROG_CXX + AC_PROG_CC + AC_PROG_CPP + AC_PROG_INSTALL diff --git a/buildroot/package/ifplugd/0004-musl-fix-types.patch b/buildroot/package/ifplugd/0004-musl-fix-types.patch new file mode 100644 index 0000000..174f9c8 --- /dev/null +++ b/buildroot/package/ifplugd/0004-musl-fix-types.patch @@ -0,0 +1,24 @@ +The musl C library does not define type names such as `__uint32_t`. Instead we +use the integer types declared in the ISO C standard header file . + +Signed-off-by: Jörg Krause + +diff -purN ifplugd-0.28.orig/src/ethtool-local.h ifplugd-0.28/src/ethtool-local.h +--- ifplugd-0.28.orig/src/ethtool-local.h 2015-08-01 18:43:47.360916834 +0200 ++++ ifplugd-0.28/src/ethtool-local.h 2015-08-01 18:44:24.256037746 +0200 +@@ -21,10 +21,12 @@ + * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + ++#include ++ + typedef unsigned long long u64; +-typedef __uint32_t u32; +-typedef __uint16_t u16; +-typedef __uint8_t u8; ++typedef uint32_t u32; ++typedef uint16_t u16; ++typedef uint8_t u8; + + #include "ethtool-kernel.h" + diff --git a/buildroot/package/ifplugd/Config.in b/buildroot/package/ifplugd/Config.in new file mode 100644 index 0000000..c4b5b5b --- /dev/null +++ b/buildroot/package/ifplugd/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_IFPLUGD + bool "ifplugd" + # libdaemon uses fork() + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_LIBDAEMON + help + Ifplugd is a daemon which will automatically configure your + ethernet device when a cable is plugged in and automatically + de-configure it if the cable is pulled out. This is useful + on laptops with onboard network adapters, since it will only + configure the interface when a cable is really connected. + + http://0pointer.de/lennart/projects/ifplugd/ diff --git a/buildroot/package/ifplugd/ifplugd.hash b/buildroot/package/ifplugd/ifplugd.hash new file mode 100644 index 0000000..2977c69 --- /dev/null +++ b/buildroot/package/ifplugd/ifplugd.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 474754ac4ab32d738cbf2a4a3e87ee0a2c71b9048a38bdcd7df1e4f9fd6541f0 ifplugd-0.28.tar.gz diff --git a/buildroot/package/ifplugd/ifplugd.mk b/buildroot/package/ifplugd/ifplugd.mk new file mode 100644 index 0000000..b569320 --- /dev/null +++ b/buildroot/package/ifplugd/ifplugd.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# ifplugd +# +################################################################################ + +IFPLUGD_VERSION = 0.28 +IFPLUGD_SITE = http://0pointer.de/lennart/projects/ifplugd +IFPLUGD_LICENSE = GPL-2.0 +IFPLUGD_LICENSE_FILES = LICENSE +IFPLUGD_AUTORECONF = YES + +# install-strip unconditionally overwrites $(TARGET_DIR)/etc/ifplugd/ifplugd.* +IFPLUGD_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec +IFPLUGD_CONF_OPTS = --disable-lynx --with-initdir=/etc/init.d/ +IFPLUGD_DEPENDENCIES = libdaemon + +# Prefer big ifplugd +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +IFPLUGD_DEPENDENCIES += busybox +endif + +define IFPLUGD_INSTALL_FIXUP + $(INSTALL) -D -m 0644 $(@D)/conf/ifplugd.conf $(TARGET_DIR)/etc/ifplugd/ifplugd.conf; \ + $(SED) 's^\(ARGS=.*\)w^\1^' $(TARGET_DIR)/etc/ifplugd/ifplugd.conf; \ + $(INSTALL) -D -m 0755 $(@D)/conf/ifplugd.action \ + $(TARGET_DIR)/etc/ifplugd/ifplugd.action +endef + +IFPLUGD_POST_INSTALL_TARGET_HOOKS += IFPLUGD_INSTALL_FIXUP + +define IFPLUGD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(@D)/conf/ifplugd.init \ + $(TARGET_DIR)/etc/init.d/S45ifplugd + # don't use bash for init script + $(SED) 's^/bin/bash^/bin/sh^g' $(TARGET_DIR)/etc/init.d/S45ifplugd +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/iftop/Config.in b/buildroot/package/iftop/Config.in new file mode 100644 index 0000000..514101c --- /dev/null +++ b/buildroot/package/iftop/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_IFTOP + bool "iftop" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBPCAP + help + iftop does for network usage what top(1) does for CPU usage. + It listens to network traffic on a named interface and + displays a table of current bandwidth usage by pairs of hosts. + Handy for answering the question "why is our ADSL link so + slow?". + + http://www.ex-parrot.com/pdw/iftop/ + +comment "iftop needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/iftop/iftop.hash b/buildroot/package/iftop/iftop.hash new file mode 100644 index 0000000..19ce66b --- /dev/null +++ b/buildroot/package/iftop/iftop.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f733eeea371a7577f8fe353d86dd88d16f5b2a2e702bd96f5ffb2c197d9b4f97 iftop-1.0pre4.tar.gz diff --git a/buildroot/package/iftop/iftop.mk b/buildroot/package/iftop/iftop.mk new file mode 100644 index 0000000..664c725 --- /dev/null +++ b/buildroot/package/iftop/iftop.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# iftop +# +################################################################################ + +IFTOP_VERSION = 1.0pre4 +IFTOP_SITE = http://www.ex-parrot.com/pdw/iftop/download +IFTOP_DEPENDENCIES = ncurses libpcap +IFTOP_LICENSE = GPL-2.0+ +IFTOP_LICENSE_FILES = COPYING + +IFTOP_LIBS = -lpcap +ifeq ($(BR2_STATIC_LIBS),y) +IFTOP_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` +endif +IFTOP_CONF_ENV += LIBS+="$(IFTOP_LIBS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/ifupdown-scripts/Config.in b/buildroot/package/ifupdown-scripts/Config.in new file mode 100644 index 0000000..2f4b0d5 --- /dev/null +++ b/buildroot/package/ifupdown-scripts/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_IFUPDOWN_SCRIPTS + bool "ifupdown scripts" + default y if BR2_ROOTFS_SKELETON_DEFAULT + depends on !BR2_PACKAGE_SYSTEMD_NETWORKD + help + Set of scripts used by ifupdown (either the standalone one, + or the busybox one) to bring network up, or tear it down. diff --git a/buildroot/package/ifupdown-scripts/S40network b/buildroot/package/ifupdown-scripts/S40network new file mode 100755 index 0000000..642c501 --- /dev/null +++ b/buildroot/package/ifupdown-scripts/S40network @@ -0,0 +1,30 @@ +#!/bin/sh +# +# Start the network.... +# + +# Debian ifupdown needs the /run/network lock directory +mkdir -p /run/network + +case "$1" in + start) + printf "Starting network: " + /sbin/ifup -a + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping network: " + /sbin/ifdown -a + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + "$0" stop + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/buildroot/package/ifupdown-scripts/ifupdown-scripts.mk b/buildroot/package/ifupdown-scripts/ifupdown-scripts.mk new file mode 100644 index 0000000..ebc89b3 --- /dev/null +++ b/buildroot/package/ifupdown-scripts/ifupdown-scripts.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# ifupdown-scripts +# +################################################################################ + +define IFUPDOWN_SCRIPTS_LOCALHOST + ( \ + echo "# interface file auto-generated by buildroot"; \ + echo ; \ + echo "auto lo"; \ + echo "iface lo inet loopback"; \ + ) > $(TARGET_DIR)/etc/network/interfaces +endef + +IFUPDOWN_SCRIPTS_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP)) + +ifneq ($(IFUPDOWN_SCRIPTS_DHCP_IFACE),) +define IFUPDOWN_SCRIPTS_DHCP + ( \ + echo ; \ + echo "auto $(IFUPDOWN_SCRIPTS_DHCP_IFACE)"; \ + echo "iface $(IFUPDOWN_SCRIPTS_DHCP_IFACE) inet dhcp"; \ + echo " pre-up /etc/network/nfs_check"; \ + echo " wait-delay 15"; \ + ) >> $(TARGET_DIR)/etc/network/interfaces + $(INSTALL) -m 0755 -D $(IFUPDOWN_SCRIPTS_PKGDIR)/nfs_check \ + $(TARGET_DIR)/etc/network/nfs_check +endef +endif + +define IFUPDOWN_SCRIPTS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/etc/network + $(call SYSTEM_RSYNC,$(IFUPDOWN_SCRIPTS_PKGDIR)/network,$(TARGET_DIR)/etc/network) + $(IFUPDOWN_SCRIPTS_LOCALHOST) + $(IFUPDOWN_SCRIPTS_DHCP) +endef + +define IFUPDOWN_SCRIPTS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(IFUPDOWN_SCRIPTS_PKGDIR)/S40network \ + $(TARGET_DIR)/etc/init.d/S40network +endef + +# ifupdown-scripts can not be selected when systemd-networkd is +# enabled, so if we are enabled with systemd, we must install our +# own service file. +define IFUPDOWN_SCRIPTS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(IFUPDOWN_SCRIPTS_PKGDIR)/network.service \ + $(TARGET_DIR)/etc/systemd/system/network.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../network.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/network.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ifupdown-scripts/network.service b/buildroot/package/ifupdown-scripts/network.service new file mode 100644 index 0000000..0d77bb8 --- /dev/null +++ b/buildroot/package/ifupdown-scripts/network.service @@ -0,0 +1,21 @@ +[Unit] +Description=Network Connectivity +Wants=network.target +Before=network.target + +[Service] +Type=oneshot +RemainAfterExit=yes + +# lo is brought up earlier, which will cause the upcoming "ifup -a" to fail +# with exit code 1, due to an "ip: RTNETLINK answers: File exists" error during +# its "ip addr add ..." command, subsequently causing this unit to fail even +# though it is a benign error. Flushing the lo address with the command below +# before ifup prevents this failure. +ExecStart=/sbin/ip addr flush dev lo + +ExecStart=/sbin/ifup -a +ExecStop=/sbin/ifdown -a + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/ifupdown-scripts/network/if-down.d/.empty b/buildroot/package/ifupdown-scripts/network/if-down.d/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/package/ifupdown-scripts/network/if-post-down.d/.empty b/buildroot/package/ifupdown-scripts/network/if-post-down.d/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/package/ifupdown-scripts/network/if-pre-up.d/wait_iface b/buildroot/package/ifupdown-scripts/network/if-pre-up.d/wait_iface new file mode 100755 index 0000000..ebccff2 --- /dev/null +++ b/buildroot/package/ifupdown-scripts/network/if-pre-up.d/wait_iface @@ -0,0 +1,21 @@ +#!/bin/sh + +# In case we have a slow-to-appear interface (e.g. eth-over-USB), +# and we need to configure it, wait until it appears, but not too +# long either. IF_WAIT_DELAY is in seconds. + +if [ "${IF_WAIT_DELAY}" -a ! -e "/sys/class/net/${IFACE}" ]; then + printf "Waiting for interface %s to appear" "${IFACE}" + while [ ${IF_WAIT_DELAY} -gt 0 ]; do + if [ -e "/sys/class/net/${IFACE}" ]; then + printf "\n" + exit 0 + fi + sleep 1 + printf "." + : $((IF_WAIT_DELAY -= 1)) + done + printf " timeout!\n" + exit 1 +fi + diff --git a/buildroot/package/ifupdown-scripts/network/if-up.d/.empty b/buildroot/package/ifupdown-scripts/network/if-up.d/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/package/ifupdown-scripts/nfs_check b/buildroot/package/ifupdown-scripts/nfs_check new file mode 100755 index 0000000..dfa0cbf --- /dev/null +++ b/buildroot/package/ifupdown-scripts/nfs_check @@ -0,0 +1,20 @@ +#!/bin/sh + +# This allows NFS booting to work while also being able to configure +# the network interface via DHCP when not NFS booting. Otherwise, a +# NFS booted system will likely hang during DHCP configuration. + +# Attempting to configure the network interface used for NFS will +# initially bring that network down. Since the root filesystem is +# accessed over this network, the system hangs. + +# This script is run by ifup and will attempt to detect if a NFS root +# mount uses the interface to be configured (IFACE), and if so does +# not configure it. This should allow the same build to be disk/flash +# booted or NFS booted. + +nfsip=`sed -n '/^[^ ]*:.* \/ nfs.*[ ,]addr=\([0-9.]\+\).*/s//\1/p' /proc/mounts` +if [ -n "$nfsip" ] && ip route get to "$nfsip" | grep -q "dev $IFACE"; then + echo Skipping $IFACE, used for NFS from $nfsip + exit 1 +fi diff --git a/buildroot/package/ifupdown/0001-dont-use-dpkg-architecture.patch b/buildroot/package/ifupdown/0001-dont-use-dpkg-architecture.patch new file mode 100644 index 0000000..bb5c58f --- /dev/null +++ b/buildroot/package/ifupdown/0001-dont-use-dpkg-architecture.patch @@ -0,0 +1,17 @@ +Drop the need for dpkg-architecture, we only build for linux. +Thanks to Károly Kasza for catching this one. + +Signed-off-by: Gustavo Zacarias + +diff -Nura ifupdown.orig/defn2c.pl ifupdown/defn2c.pl +--- ifupdown.orig/defn2c.pl 2014-11-18 16:39:28.878772655 -0300 ++++ ifupdown/defn2c.pl 2014-11-18 16:43:41.120456676 -0300 +@@ -2,7 +2,7 @@ + + use strict; + +-my $DEB_HOST_ARCH_OS = `dpkg-architecture -qDEB_HOST_ARCH_OS`; ++my $DEB_HOST_ARCH_OS = "linux"; + + $DEB_HOST_ARCH_OS =~ s/\n//; + diff --git a/buildroot/package/ifupdown/Config.in b/buildroot/package/ifupdown/Config.in new file mode 100644 index 0000000..97d02b4 --- /dev/null +++ b/buildroot/package/ifupdown/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_IFUPDOWN + bool "ifupdown" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # iproute2 + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + # runtime for ip binary + select BR2_PACKAGE_IPROUTE2 if !BR2_PACKAGE_BUSYBOX + # runtime for run-parts + select BR2_PACKAGE_DEBIANUTILS if !BR2_PACKAGE_BUSYBOX + help + High level tools to configure network interfaces. + + https://tracker.debian.org/pkg/ifupdown + +comment "ifupdown needs a toolchain w/ headers >= 3.4" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/ifupdown/ifupdown.hash b/buildroot/package/ifupdown/ifupdown.hash new file mode 100644 index 0000000..01353c6 --- /dev/null +++ b/buildroot/package/ifupdown/ifupdown.hash @@ -0,0 +1,2 @@ +# From http://ftp.de.debian.org/debian/pool/main/i/ifupdown/ifupdown_0.8.16.dsc +sha256 601416c12e39ac29022951a2867aed5c607f732ac57fd51517bfba92a4cc4fb0 ifupdown_0.8.16.tar.xz diff --git a/buildroot/package/ifupdown/ifupdown.mk b/buildroot/package/ifupdown/ifupdown.mk new file mode 100644 index 0000000..dfc3f3c --- /dev/null +++ b/buildroot/package/ifupdown/ifupdown.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# ifupdown +# +################################################################################ + +IFUPDOWN_VERSION = 0.8.16 +IFUPDOWN_SOURCE = ifupdown_$(IFUPDOWN_VERSION).tar.xz +IFUPDOWN_SITE = http://snapshot.debian.org/archive/debian/20160922T165503Z/pool/main/i/ifupdown +IFUPDOWN_DEPENDENCIES = $(if $(BR2_PACKAGE_BUSYBOX),busybox) +IFUPDOWN_LICENSE = GPL-2.0+ +IFUPDOWN_LICENSE_FILES = COPYING + +define IFUPDOWN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu99 -D'IFUPDOWN_VERSION=\"$(IFUPDOWN_VERSION)\"'" \ + -C $(@D) +endef + +# install doesn't overwrite +define IFUPDOWN_INSTALL_TARGET_CMDS + $(RM) $(TARGET_DIR)/sbin/{ifdown,ifquery} + $(TARGET_MAKE_ENV) $(MAKE) BASEDIR=$(TARGET_DIR) -C $(@D) install +endef + +# We need to switch from /bin/ip to /sbin/ip +IFUPDOWN_DEFN_FILES = can inet inet6 ipx link meta +define IFUPDOWN_MAKE_IP_IN_SBIN + for f in $(IFUPDOWN_DEFN_FILES) ; do \ + $(SED) 's,/bin/ip,/sbin/ip,' $(@D)/$$f.defn ; \ + done +endef +IFUPDOWN_POST_PATCH_HOOKS += IFUPDOWN_MAKE_IP_IN_SBIN + +$(eval $(generic-package)) diff --git a/buildroot/package/igd2-for-linux/Config.in b/buildroot/package/igd2-for-linux/Config.in new file mode 100644 index 0000000..157cc6f --- /dev/null +++ b/buildroot/package/igd2-for-linux/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_IGD2_FOR_LINUX + bool "igd2-for-linux" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_IPTABLES # runtime + select BR2_PACKAGE_LIBUPNP + help + This is The Linux UPnP Internet Gateway Device 2. It is + modified from the original Linux UPnP Internet Gateway Device + [http://linux-igd.sourceforge.net/] according to UPnP + InternetGatewayDevice:2 specifications. + + It implements the UPnP Internet Gateway Device version 2 + specification (IGDv2) and allows UPnP aware clients, such as + MSN Messenger, Azureus or Miranda to work properly from behind + a NAT firewall. + + Please edit /etc/upnpd.conf before using upnpd! + + https://github.com/ffontaine/igd2-for-linux + +comment "igd2-for-linux needs a toolchain w/ threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/igd2-for-linux/S99upnpd b/buildroot/package/igd2-for-linux/S99upnpd new file mode 100644 index 0000000..c023fa4 --- /dev/null +++ b/buildroot/package/igd2-for-linux/S99upnpd @@ -0,0 +1,67 @@ +#!/bin/sh + +NAME=upnpd +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/sbin/$NAME +CFGFILE=/etc/default/$NAME + +LAN=eth0 +WAN=eth0 + +# For the UPnP library to function correctly, networking must be configured +# properly for multicasting as described in +# https://sourceforge.net/p/pupnp/code/ci/master/tree/README. +# Without this addition, device advertisements and control point searches will +# not function. +# However, the route has to be configured once for all UPnP applications +# (igd2-for-linux, ushare, ...) so do not manage UPnP route by default +MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN=0 + +# Read configuration variable file if it is present +if [ -f $CFGFILE ]; then + . $CFGFILE +fi + +DAEMON_ARGS="-f $WAN $LAN" + +start() { + if [ $MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN != 0 ]; then + printf "Add UPnP multicast route on $LAN\n" + route add -net 239.0.0.0 netmask 255.0.0.0 $LAN + fi + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" + if [ $MANAGE_UPNP_MULTICAST_ROUTE_ON_LAN != 0 ]; then + printf "Remove UPnP multicast route on $LAN\n" + route del -net 239.0.0.0 netmask 255.0.0.0 $LAN + fi +} + +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/igd2-for-linux/igd2-for-linux.hash b/buildroot/package/igd2-for-linux/igd2-for-linux.hash new file mode 100644 index 0000000..0425399 --- /dev/null +++ b/buildroot/package/igd2-for-linux/igd2-for-linux.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 523545a26b0d662e9f6913bec2518df6e70f4d497935d88983d994336a1b0ea9 igd2-for-linux-v1.2.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 linuxigd2/doc/LICENSE diff --git a/buildroot/package/igd2-for-linux/igd2-for-linux.mk b/buildroot/package/igd2-for-linux/igd2-for-linux.mk new file mode 100644 index 0000000..68b64f1 --- /dev/null +++ b/buildroot/package/igd2-for-linux/igd2-for-linux.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# igd2-for-linux +# +################################################################################ + +IGD2_FOR_LINUX_VERSION = v1.2 +IGD2_FOR_LINUX_SITE = $(call github,ffontaine,igd2-for-linux,$(IGD2_FOR_LINUX_VERSION)) + +IGD2_FOR_LINUX_LICENSE = GPL-2.0 +IGD2_FOR_LINUX_LICENSE_FILES = linuxigd2/doc/LICENSE + +IGD2_FOR_LINUX_DEPENDENCIES = libupnp + +IGD2_FOR_LINUX_BUILD_DIR = $(@D)/linuxigd2 +IGD2_FOR_LINUX_CONF_DIR = $(IGD2_FOR_LINUX_BUILD_DIR)/configs + +define IGD2_FOR_LINUX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(IGD2_FOR_LINUX_BUILD_DIR) \ + $(TARGET_CONFIGURE_OPTS) \ + LIBUPNP_PREFIX="$(STAGING_DIR)/usr" \ + all +endef + +define IGD2_FOR_LINUX_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(IGD2_FOR_LINUX_BUILD_DIR)/bin/upnpd \ + $(TARGET_DIR)/usr/sbin/upnpd + $(INSTALL) -D -m 0644 $(IGD2_FOR_LINUX_CONF_DIR)/upnpd.conf \ + $(TARGET_DIR)/etc/upnpd.conf + mkdir -p $(TARGET_DIR)/etc/linuxigd/ + cp -dpfr $(IGD2_FOR_LINUX_CONF_DIR)/*.{xml,png} \ + $(TARGET_DIR)/etc/linuxigd/ +endef + +define IGD2_FOR_LINUX_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/igd2-for-linux/S99upnpd \ + $(TARGET_DIR)/etc/init.d/S99upnpd +endef + +define IGD2_FOR_LINUX_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/igd2-for-linux/upnpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/upnpd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/upnpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/upnpd.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/igd2-for-linux/upnpd.service b/buildroot/package/igd2-for-linux/upnpd.service new file mode 100644 index 0000000..91a5b4c --- /dev/null +++ b/buildroot/package/igd2-for-linux/upnpd.service @@ -0,0 +1,22 @@ +[Unit] +Description=UPnP Internet Gateway Device version 2 daemon +After=network.target + +[Service] +Environment="LAN=eth0" +Environment="WAN=eth0" +EnvironmentFile=/etc/default/upnpd +# For the UPnP library to function correctly, networking must be configured +# properly for multicasting as described in +# https://sourceforge.net/p/pupnp/code/ci/master/tree/README. +# Without this addition, device advertisements and control point searches will +# not function. +# However, the route has to be configured once for all UPnP applications +# (igd2-for-linux, ushare, ...) so do not manage UPnP route by default +#ExecStartPre=/sbin/route add -net 239.0.0.0 netmask 255.0.0.0 $LAN +#ExecStopPost=/sbin/route del -net 239.0.0.0 netmask 255.0.0.0 $LAN +ExecStart=/usr/sbin/upnpd -f $WAN $LAN +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/igh-ethercat/Config.in b/buildroot/package/igh-ethercat/Config.in new file mode 100644 index 0000000..e600ef5 --- /dev/null +++ b/buildroot/package/igh-ethercat/Config.in @@ -0,0 +1,29 @@ +comment "igh-ethercat needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_IGH_ETHERCAT + bool "igh-ethercat" + depends on BR2_LINUX_KERNEL + help + IgH EtherCAT Master for Linux. + + http://www.etherlab.org/en/ethercat/index.php + +if BR2_PACKAGE_IGH_ETHERCAT + +config BR2_PACKAGE_IGH_ETHERCAT_8139TOO + bool "8139too driver" + +config BR2_PACKAGE_IGH_ETHERCAT_E100 + bool "e100 driver" + +config BR2_PACKAGE_IGH_ETHERCAT_E1000 + bool "e1000 driver" + +config BR2_PACKAGE_IGH_ETHERCAT_E1000E + bool "e1000e driver" + +config BR2_PACKAGE_IGH_ETHERCAT_R8169 + bool "r8169 driver" + +endif diff --git a/buildroot/package/igh-ethercat/igh-ethercat.hash b/buildroot/package/igh-ethercat/igh-ethercat.hash new file mode 100644 index 0000000..b5ee124 --- /dev/null +++ b/buildroot/package/igh-ethercat/igh-ethercat.hash @@ -0,0 +1,2 @@ +# From http://etherlab.org/download/ethercat/ethercat-1.5.2.tar.bz2.md5 +md5 6b4001f8d975865d74a0b108b3bdda3d ethercat-1.5.2.tar.bz2 diff --git a/buildroot/package/igh-ethercat/igh-ethercat.mk b/buildroot/package/igh-ethercat/igh-ethercat.mk new file mode 100644 index 0000000..b9771e8 --- /dev/null +++ b/buildroot/package/igh-ethercat/igh-ethercat.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# igh-ethercat +# +################################################################################ + +IGH_ETHERCAT_VERSION = 1.5.2 +IGH_ETHERCAT_SITE = http://etherlab.org/download/ethercat +IGH_ETHERCAT_SOURCE = ethercat-$(IGH_ETHERCAT_VERSION).tar.bz2 +IGH_ETHERCAT_LICENSE = GPL-2.0 (IgH EtherCAT master), LGPL-2.1 (libraries) +IGH_ETHERCAT_LICENSE_FILES = COPYING COPYING.LESSER + +IGH_ETHERCAT_INSTALL_STAGING = YES + +IGH_ETHERCAT_CONF_OPTS = \ + --with-linux-dir=$(LINUX_DIR) + +IGH_ETHERCAT_CONF_OPTS += $(if $(BR2_PACKAGE_IGH_ETHERCAT_8139TOO),--enable-8139too,--disable-8139too) +IGH_ETHERCAT_CONF_OPTS += $(if $(BR2_PACKAGE_IGH_ETHERCAT_E100),--enable-e100,--disable-e100) +IGH_ETHERCAT_CONF_OPTS += $(if $(BR2_PACKAGE_IGH_ETHERCAT_E1000),--enable-e1000,--disable-e1000) +IGH_ETHERCAT_CONF_OPTS += $(if $(BR2_PACKAGE_IGH_ETHERCAT_E1000E),--enable-e1000e,--disable-e1000e) +IGH_ETHERCAT_CONF_OPTS += $(if $(BR2_PACKAGE_IGH_ETHERCAT_R8169),--enable-r8169,--disable-r8169) + +$(eval $(kernel-module)) +$(eval $(autotools-package)) diff --git a/buildroot/package/igmpproxy/Config.in b/buildroot/package/igmpproxy/Config.in new file mode 100644 index 0000000..37f39b2 --- /dev/null +++ b/buildroot/package/igmpproxy/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_IGMPPROXY + bool "igmpproxy" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + help + A simple dynamic Multicast Routing Daemon + using only IGMP signalling. It's intended + for simple forwarding of Multicast traffic + between networks. + + http://sourceforge.net/projects/igmpproxy/ + +comment "igmpproxy needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/igmpproxy/igmpproxy.hash b/buildroot/package/igmpproxy/igmpproxy.hash new file mode 100644 index 0000000..2e3a374 --- /dev/null +++ b/buildroot/package/igmpproxy/igmpproxy.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 e60331031f85d1fb834c5272a134f32d32e7834718da19ba3f787dff68389a31 igmpproxy-f47644d8fa7266a784f3ec7b251e7d318bc2f0a9.tar.gz diff --git a/buildroot/package/igmpproxy/igmpproxy.mk b/buildroot/package/igmpproxy/igmpproxy.mk new file mode 100644 index 0000000..8989c74 --- /dev/null +++ b/buildroot/package/igmpproxy/igmpproxy.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# igmpproxy +# +################################################################################ + +IGMPPROXY_VERSION = f47644d8fa7266a784f3ec7b251e7d318bc2f0a9 +IGMPPROXY_SITE = $(call github,pali,igmpproxy,$(IGMPPROXY_VERSION)) +IGMPPROXY_AUTORECONF = YES +IGMPPROXY_LICENSE = GPL-2.0+ +IGMPPROXY_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/ijs/Config.in b/buildroot/package/ijs/Config.in new file mode 100644 index 0000000..50e8161 --- /dev/null +++ b/buildroot/package/ijs/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_IJS + bool "ijs" + depends on BR2_USE_MMU # fork() + help + The IJS package contains a library which implements a + protocol for transmission of raster page images. + + http://www.openprinting.org/ diff --git a/buildroot/package/ijs/ijs.hash b/buildroot/package/ijs/ijs.hash new file mode 100644 index 0000000..1a8f564 --- /dev/null +++ b/buildroot/package/ijs/ijs.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 11a5f5084488c480f3ff5a24d64d7147bb64272bf60a0ba51330a56c5b50cab9 ijs-0.35.tar.bz2 diff --git a/buildroot/package/ijs/ijs.mk b/buildroot/package/ijs/ijs.mk new file mode 100644 index 0000000..dfd3ff9 --- /dev/null +++ b/buildroot/package/ijs/ijs.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# ijs +# +################################################################################ + +IJS_VERSION = 0.35 +IJS_SOURCE = ijs-$(IJS_VERSION).tar.bz2 +IJS_SITE = http://www.openprinting.org/download/ijs/download +IJS_LICENSE = MIT +IJS_LICENSE_FILES = README +# Buildroot libtool patch does not apply, so we autoreconf the +# package. +IJS_AUTORECONF = YES +IJS_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/imagemagick/Config.in b/buildroot/package/imagemagick/Config.in new file mode 100644 index 0000000..4bd81db --- /dev/null +++ b/buildroot/package/imagemagick/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_IMAGEMAGICK + bool "imagemagick" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + ImageMagick(R) is a software suite to create, edit, and + compose bitmap images. It can read, convert and write images + in a variety of formats (about 100) including DPX, EXR, GIF, + JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. + Use ImageMagick to translate, flip, mirror, rotate, scale, + shear and transform images, adjust image colors, apply various + special effects, or draw text, + lines, polygons, ellipses and Bézier curves. + + http://www.imagemagick.org/ + +comment "imagemagick needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/imagemagick/imagemagick.hash b/buildroot/package/imagemagick/imagemagick.hash new file mode 100644 index 0000000..cf529b5 --- /dev/null +++ b/buildroot/package/imagemagick/imagemagick.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ac957ef303fb870cb92331947ebcdcef5b553e80c7897c0aec866889f35e1a23 7.0.7-38.tar.gz +sha256 2318cc05bbd2c25c1b2d13af1aadccc45b9cf6f94757421ae59a3c8ea9064f1c LICENSE diff --git a/buildroot/package/imagemagick/imagemagick.mk b/buildroot/package/imagemagick/imagemagick.mk new file mode 100644 index 0000000..4aa9d56 --- /dev/null +++ b/buildroot/package/imagemagick/imagemagick.mk @@ -0,0 +1,146 @@ +################################################################################ +# +# imagemagick +# +################################################################################ + +IMAGEMAGICK_VERSION = 7.0.7-38 +IMAGEMAGICK_SOURCE = $(IMAGEMAGICK_VERSION).tar.gz +IMAGEMAGICK_SITE = https://github.com/ImageMagick/ImageMagick/archive +IMAGEMAGICK_LICENSE = Apache-2.0 +IMAGEMAGICK_LICENSE_FILES = LICENSE + +IMAGEMAGICK_INSTALL_STAGING = YES +IMAGEMAGICK_CONFIG_SCRIPTS = \ + $(addsuffix -config,MagickCore MagickWand) + +ifeq ($(BR2_INSTALL_LIBSTDCPP)$(BR2_USE_WCHAR),yy) +IMAGEMAGICK_CONFIG_SCRIPTS += Magick++-config +endif + +IMAGEMAGICK_CONF_ENV = ac_cv_sys_file_offset_bits=64 + +IMAGEMAGICK_CONF_OPTS = \ + --program-transform-name='s,,,' \ + --disable-openmp \ + --without-djvu \ + --without-dps \ + --without-flif \ + --without-fpx \ + --without-gslib \ + --without-gvc \ + --without-jbig \ + --without-lqr \ + --without-openexr \ + --without-perl \ + --without-raqm \ + --without-wmf \ + --without-x \ + --with-gs-font-dir=/usr/share/fonts/gs + +IMAGEMAGICK_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +IMAGEMAGICK_CONF_OPTS += --with-fontconfig +IMAGEMAGICK_DEPENDENCIES += fontconfig +else +IMAGEMAGICK_CONF_OPTS += --without-fontconfig +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +IMAGEMAGICK_CONF_OPTS += --with-freetype +IMAGEMAGICK_CONF_ENV += \ + ac_cv_path_freetype_config=$(STAGING_DIR)/usr/bin/freetype-config +IMAGEMAGICK_DEPENDENCIES += freetype +else +IMAGEMAGICK_CONF_OPTS += --without-freetype +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +IMAGEMAGICK_CONF_OPTS += --with-jpeg +IMAGEMAGICK_DEPENDENCIES += jpeg +else +IMAGEMAGICK_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +IMAGEMAGICK_CONF_OPTS += --with-lcms +IMAGEMAGICK_DEPENDENCIES += lcms2 +else +IMAGEMAGICK_CONF_OPTS += --without-lcms +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +IMAGEMAGICK_CONF_OPTS += --with-png +IMAGEMAGICK_DEPENDENCIES += libpng +else +IMAGEMAGICK_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_LIBRSVG),y) +IMAGEMAGICK_CONF_OPTS += --with-rsvg +IMAGEMAGICK_DEPENDENCIES += librsvg +else +IMAGEMAGICK_CONF_OPTS += --without-rsvg +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +IMAGEMAGICK_CONF_OPTS += --with-xml +IMAGEMAGICK_CONF_ENV += ac_cv_path_xml2_config=$(STAGING_DIR)/usr/bin/xml2-config +IMAGEMAGICK_DEPENDENCIES += libxml2 +else +IMAGEMAGICK_CONF_OPTS += --without-xml +endif + +ifeq ($(BR2_PACKAGE_PANGO),y) +IMAGEMAGICK_CONF_OPTS += --with-pango +IMAGEMAGICK_DEPENDENCIES += pango +else +IMAGEMAGICK_CONF_OPTS += --without-pango +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +IMAGEMAGICK_CONF_OPTS += --with-tiff +IMAGEMAGICK_DEPENDENCIES += tiff +else +IMAGEMAGICK_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +IMAGEMAGICK_CONF_OPTS += --with-lzma +IMAGEMAGICK_DEPENDENCIES += xz +else +IMAGEMAGICK_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_FFTW),y) +# configure script misdetects these leading to build errors +IMAGEMAGICK_CONF_ENV += ac_cv_func_creal=yes ac_cv_func_cimag=yes +IMAGEMAGICK_CONF_OPTS += --with-fftw +IMAGEMAGICK_DEPENDENCIES += fftw +else +IMAGEMAGICK_CONF_OPTS += --without-fftw +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +IMAGEMAGICK_CONF_OPTS += --with-webp +IMAGEMAGICK_DEPENDENCIES += webp +else +IMAGEMAGICK_CONF_OPTS += --without-webp +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +IMAGEMAGICK_CONF_OPTS += --with-zlib +IMAGEMAGICK_DEPENDENCIES += zlib +else +IMAGEMAGICK_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +IMAGEMAGICK_CONF_OPTS += --with-bzlib +IMAGEMAGICK_DEPENDENCIES += bzip2 +else +IMAGEMAGICK_CONF_OPTS += --without-bzlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/imlib2/Config.in b/buildroot/package/imlib2/Config.in new file mode 100644 index 0000000..c47178f --- /dev/null +++ b/buildroot/package/imlib2/Config.in @@ -0,0 +1,42 @@ +comment "imlib2 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_IMLIB2 + bool "imlib2" + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_FREETYPE + help + Imlib 2 is the successor to Imlib. This library provides + routines to load, save and render images in various formats. + + http://freshmeat.net/projects/imlib2/ + +if BR2_PACKAGE_IMLIB2 + +config BR2_PACKAGE_IMLIB2_JPEG + bool "JPEG support" + select BR2_PACKAGE_JPEG + +config BR2_PACKAGE_IMLIB2_PNG + bool "PNG support" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_IMLIB2_GIF + bool "GIF support" + select BR2_PACKAGE_GIFLIB + +config BR2_PACKAGE_IMLIB2_TIFF + bool "TIFF support" + select BR2_PACKAGE_TIFF + +config BR2_PACKAGE_IMLIB2_ID3 + bool "ID3 support" + select BR2_PACKAGE_LIBID3TAG + +config BR2_PACKAGE_IMLIB2_X + bool "X support" + default y + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBX11 +endif diff --git a/buildroot/package/imlib2/imlib2.hash b/buildroot/package/imlib2/imlib2.hash new file mode 100644 index 0000000..0c234c8 --- /dev/null +++ b/buildroot/package/imlib2/imlib2.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/enlightenment/files/imlib2-src/1.4.10/ +md5 a0de8524592bbd9f24fcc6cb8352137c imlib2-1.4.10.tar.bz2 +sha1 664df65c6265a2825d685d2f3a4f0d072eb626ac imlib2-1.4.10.tar.bz2 diff --git a/buildroot/package/imlib2/imlib2.mk b/buildroot/package/imlib2/imlib2.mk new file mode 100644 index 0000000..b5012a6 --- /dev/null +++ b/buildroot/package/imlib2/imlib2.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# imlib2 +# +################################################################################ + +IMLIB2_VERSION = 1.4.10 +IMLIB2_SOURCE = imlib2-$(IMLIB2_VERSION).tar.bz2 +IMLIB2_SITE = http://downloads.sourceforge.net/project/enlightenment/imlib2-src/$(IMLIB2_VERSION) +IMLIB2_LICENSE = imlib2 license +IMLIB2_LICENSE_FILES = COPYING + +IMLIB2_INSTALL_STAGING = YES +IMLIB2_DEPENDENCIES = host-pkgconf freetype +IMLIB2_CONF_OPTS = --with-freetype-config=$(STAGING_DIR)/usr/bin/freetype-config +IMLIB2_CONFIG_SCRIPTS = imlib2-config + +ifeq ($(BR2_PACKAGE_IMLIB2_X),y) +IMLIB2_CONF_OPTS += --with-x +IMLIB2_DEPENDENCIES += xlib_libX11 xlib_libXext +else +IMLIB2_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_JPEG),y) +IMLIB2_CONF_OPTS += --with-jpeg +IMLIB2_DEPENDENCIES += jpeg +else +IMLIB2_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_PNG),y) +IMLIB2_CONF_OPTS += --with-png +IMLIB2_DEPENDENCIES += libpng +else +IMLIB2_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_GIF),y) +IMLIB2_CONF_OPTS += --with-gif +IMLIB2_DEPENDENCIES += giflib +else +IMLIB2_CONF_OPTS += --without-gif +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_TIFF),y) +IMLIB2_CONF_OPTS += --with-tiff +IMLIB2_DEPENDENCIES += tiff +else +IMLIB2_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_IMLIB2_ID3),y) +IMLIB2_CONF_OPTS += --with-id3 +IMLIB2_DEPENDENCIES += libid3tag +else +IMLIB2_CONF_OPTS += --without-id3 +endif + +# drop -L from linker flags +define IMLIB2_FIXUP_IMLIB2_CONFIG + $(SED) 's/-L[^ ]*//g' $(STAGING_DIR)/usr/bin/imlib2-config +endef + +IMLIB2_POST_INSTALL_STAGING_HOOKS += IMLIB2_FIXUP_IMLIB2_CONFIG + +$(eval $(autotools-package)) diff --git a/buildroot/package/imx-usb-loader/Config.in.host b/buildroot/package/imx-usb-loader/Config.in.host new file mode 100644 index 0000000..a4a0f88 --- /dev/null +++ b/buildroot/package/imx-usb-loader/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_IMX_USB_LOADER + bool "host imx-usb-loader" + depends on BR2_arm + help + This package contains tools to download and execute code + on Freescale i.MX5/i.MX6 and Vybrid SoCs through the + Serial Download Protocol. + + https://github.com/boundarydevices/imx_usb_loader diff --git a/buildroot/package/imx-usb-loader/imx-usb-loader.hash b/buildroot/package/imx-usb-loader/imx-usb-loader.hash new file mode 100644 index 0000000..e246ff8 --- /dev/null +++ b/buildroot/package/imx-usb-loader/imx-usb-loader.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 717b64cec31f7e1167d4a31e4f511eea97ab80039dd435b7b183c6f41352213a imx-usb-loader-7e77787c83288a421080a9bf2f67063931f561be.tar.gz diff --git a/buildroot/package/imx-usb-loader/imx-usb-loader.mk b/buildroot/package/imx-usb-loader/imx-usb-loader.mk new file mode 100644 index 0000000..946a1f3 --- /dev/null +++ b/buildroot/package/imx-usb-loader/imx-usb-loader.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# imx-usb-loader +# +################################################################################ + +IMX_USB_LOADER_VERSION = 7e77787c83288a421080a9bf2f67063931f561be +IMX_USB_LOADER_SITE = $(call github,boundarydevices,imx_usb_loader,$(IMX_USB_LOADER_VERSION)) +IMX_USB_LOADER_LICENSE = LGPL-2.1+ +IMX_USB_LOADER_LICENSE_FILES = COPYING +HOST_IMX_USB_LOADER_DEPENDENCIES = host-libusb host-pkgconf + +define HOST_IMX_USB_LOADER_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_IMX_USB_LOADER_INSTALL_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) prefix=$(HOST_DIR) install +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/inadyn/Config.in b/buildroot/package/inadyn/Config.in new file mode 100644 index 0000000..d03db83 --- /dev/null +++ b/buildroot/package/inadyn/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_INADYN + bool "inadyn" + depends on BR2_USE_MMU # Uses fork() + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_LIBCONFUSE + select BR2_PACKAGE_LIBITE + help + INADYN is a free DynDNS client. It gives the possibility + to have your own fixed hostname registered on the internet, + although your IP might be changing. + + https://github.com/troglobit/inadyn + +comment "inadyn needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/buildroot/package/inadyn/S70inadyn b/buildroot/package/inadyn/S70inadyn new file mode 100644 index 0000000..ca7b414 --- /dev/null +++ b/buildroot/package/inadyn/S70inadyn @@ -0,0 +1,44 @@ +#!/bin/sh +# +# Start & stop the inadyn client +# + +CONFIG=/etc/inadyn.conf + +# check if CONFIG exists, print message & exit if it doesn't +[ ! -f $CONFIG ] && ( echo "The config file "$CONFIG" is missing...exiting now." && exit 2 ) + +# Allow a few customizations from a config file. Especially inadyn +# must be explicitly enabled by adding ENABLED="yes" in this file. +test -r /etc/default/inadyn && . /etc/default/inadyn + +case "$1" in + start) + printf "Starting inadyn: " + if test "${ENABLED}" != "yes" ; then + echo "SKIPPED" + exit 0 + fi + start-stop-daemon -b -q -S -p /var/run/inadyn.pid -x /usr/sbin/inadyn + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping inadyn: " + if test "${ENABLED}" != "yes" ; then + echo "SKIPPED" + exit 0 + fi + start-stop-daemon -q -K -p /var/run/inadyn.pid -x /usr/sbin/inadyn + [ $? = 0 ] && echo "OK" || echo "FAIL" + rm -f /var/run/inadyn.pid + ;; + restart) + "$0" stop + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/inadyn/inadyn.conf b/buildroot/package/inadyn/inadyn.conf new file mode 100644 index 0000000..1b29027 --- /dev/null +++ b/buildroot/package/inadyn/inadyn.conf @@ -0,0 +1,11 @@ +# Basic configuration file for inadyn +# +# /etc/inadyn.conf +iface = eth0 +period = 300 + +provider default@dyndns.org { + username = test + password = test + hostname = test +} diff --git a/buildroot/package/inadyn/inadyn.hash b/buildroot/package/inadyn/inadyn.hash new file mode 100644 index 0000000..c6c062c --- /dev/null +++ b/buildroot/package/inadyn/inadyn.hash @@ -0,0 +1,5 @@ +# From https://github.com/troglobit/inadyn/releases/download/v2.2.1/inadyn-2.2.1.tar.xz.md5 +md5 8f7796ee45b2a2e282a54a2d31d03953 inadyn-2.2.1.tar.xz +# Locally computed +sha256 e7a74fcf8b7c069990940c0dc4d4d18071005be225667fdfcfa4156c44384579 inadyn-2.2.1.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/inadyn/inadyn.mk b/buildroot/package/inadyn/inadyn.mk new file mode 100644 index 0000000..5eac3b5 --- /dev/null +++ b/buildroot/package/inadyn/inadyn.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# inadyn +# +################################################################################ + +INADYN_VERSION = 2.2.1 +INADYN_SITE = https://github.com/troglobit/inadyn/releases/download/v$(INADYN_VERSION) +INADYN_SOURCE = inadyn-$(INADYN_VERSION).tar.xz +INADYN_LICENSE = GPL-2.0+ +INADYN_LICENSE_FILES = COPYING +INADYN_DEPENDENCIES = host-pkgconf libconfuse libite + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +INADYN_CONF_OPTS += --enable-openssl +INADYN_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +INADYN_DEPENDENCIES += gnutls +else +INADYN_CONF_OPTS += --disable-ssl +endif + +define INADYN_INSTALL_SAMPLE_CONFIG + $(INSTALL) -D -m 0600 package/inadyn/inadyn.conf \ + $(TARGET_DIR)/etc/inadyn.conf +endef +INADYN_POST_INSTALL_TARGET_HOOKS += INADYN_INSTALL_SAMPLE_CONFIG + +define INADYN_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/inadyn/S70inadyn \ + $(TARGET_DIR)/etc/init.d/S70inadyn +endef + +define INADYN_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/inadyn/inadyn.service \ + $(TARGET_DIR)/usr/lib/systemd/system/inadyn.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/inadyn.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/inadyn.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/inadyn/inadyn.service b/buildroot/package/inadyn/inadyn.service new file mode 100644 index 0000000..abc0a1e --- /dev/null +++ b/buildroot/package/inadyn/inadyn.service @@ -0,0 +1,10 @@ +[Unit] +Description=DDNS client +After=syslog.target network.target + +[Service] +ExecStart=/usr/bin/inadyn +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/inconsolata/Config.in b/buildroot/package/inconsolata/Config.in new file mode 100644 index 0000000..de6b388 --- /dev/null +++ b/buildroot/package/inconsolata/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_INCONSOLATA + bool "inconsolata" + help + Inconsolata is a monospace font, designed for code listings + and the like. + + http://www.google.com/fonts/specimen/Inconsolata diff --git a/buildroot/package/inconsolata/inconsolata.hash b/buildroot/package/inconsolata/inconsolata.hash new file mode 100644 index 0000000..49ea958 --- /dev/null +++ b/buildroot/package/inconsolata/inconsolata.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20091207T044352Z/pool/main/t/ttf-inconsolata/ttf-inconsolata_001.010-2.dsc +sha256 ecf8ba44911fcb3c9683aef1ca2b3cfbafa119a3e93c682f448850e1ae08ce93 ttf-inconsolata_001.010.orig.tar.gz diff --git a/buildroot/package/inconsolata/inconsolata.mk b/buildroot/package/inconsolata/inconsolata.mk new file mode 100644 index 0000000..3fe3895 --- /dev/null +++ b/buildroot/package/inconsolata/inconsolata.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# inconsolata +# +################################################################################ + +INCONSOLATA_VERSION = 001.010 +INCONSOLATA_SITE = http://snapshot.debian.org/archive/debian/20090524T155154Z/pool/main/t/ttf-inconsolata +INCONSOLATA_SOURCE = ttf-inconsolata_$(INCONSOLATA_VERSION).orig.tar.gz +INCONSOLATA_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/inconsolata +INCONSOLATA_LICENSE = OFL-1.0 +INCONSOLATA_LICENSE_FILES = OFL.txt + +define INCONSOLATA_INSTALL_TARGET_CMDS + mkdir -p $(INCONSOLATA_TARGET_DIR) + $(INSTALL) -m 644 $(@D)/*.otf $(INCONSOLATA_TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/initscripts/Config.in b/buildroot/package/initscripts/Config.in new file mode 100644 index 0000000..82cbd5c --- /dev/null +++ b/buildroot/package/initscripts/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_INITSCRIPTS + bool + help + The basics startup scripts for both SysV and Busybox diff --git a/buildroot/package/initscripts/init.d/S20urandom b/buildroot/package/initscripts/init.d/S20urandom new file mode 100755 index 0000000..cababe1 --- /dev/null +++ b/buildroot/package/initscripts/init.d/S20urandom @@ -0,0 +1,51 @@ +#! /bin/sh +# +# urandom This script saves the random seed between reboots. +# It is called from the boot, halt and reboot scripts. +# +# Version: @(#)urandom 1.33 22-Jun-1998 miquels@cistron.nl +# + +[ -c /dev/urandom ] || exit 0 +#. /etc/default/rcS + +case "$1" in + start|"") + # check for read only file system + if ! touch /etc/random-seed 2>/dev/null + then + echo "read-only file system detected...done" + exit + fi + if [ "$VERBOSE" != no ] + then + printf "Initializing random number generator... " + fi + # Load and then save 512 bytes, + # which is the size of the entropy pool + cat /etc/random-seed >/dev/urandom + rm -f /etc/random-seed + umask 077 + dd if=/dev/urandom of=/etc/random-seed count=1 \ + >/dev/null 2>&1 || echo "urandom start: failed." + umask 022 + [ "$VERBOSE" != no ] && echo "done." + ;; + stop) + if ! touch /etc/random-seed 2>/dev/null + then + exit + fi + # Carry a random seed from shut-down to start-up; + # see documentation in linux/drivers/char/random.c + [ "$VERBOSE" != no ] && printf "Saving random seed... " + umask 077 + dd if=/dev/urandom of=/etc/random-seed count=1 \ + >/dev/null 2>&1 || echo "urandom stop: failed." + [ "$VERBOSE" != no ] && echo "done." + ;; + *) + echo "Usage: urandom {start|stop}" >&2 + exit 1 + ;; +esac diff --git a/buildroot/package/initscripts/init.d/rcK b/buildroot/package/initscripts/init.d/rcK new file mode 100755 index 0000000..59e9c54 --- /dev/null +++ b/buildroot/package/initscripts/init.d/rcK @@ -0,0 +1,27 @@ +#!/bin/sh + + +# Stop all init scripts in /etc/init.d +# executing them in reversed numerical order. +# +for i in $(ls -r /etc/init.d/S??*) ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set stop + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i stop + ;; + esac +done + diff --git a/buildroot/package/initscripts/init.d/rcS b/buildroot/package/initscripts/init.d/rcS new file mode 100755 index 0000000..de41153 --- /dev/null +++ b/buildroot/package/initscripts/init.d/rcS @@ -0,0 +1,27 @@ +#!/bin/sh + + +# Start all init scripts in /etc/init.d +# executing them in numerical order. +# +for i in /etc/init.d/S??* ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; + esac +done + diff --git a/buildroot/package/initscripts/initscripts.mk b/buildroot/package/initscripts/initscripts.mk new file mode 100644 index 0000000..cfee155 --- /dev/null +++ b/buildroot/package/initscripts/initscripts.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# initscripts +# +################################################################################ + +define INITSCRIPTS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/etc/init.d + $(INSTALL) -D -m 0755 package/initscripts/init.d/* $(TARGET_DIR)/etc/init.d/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/inotify-tools/0001-gcc6.patch b/buildroot/package/inotify-tools/0001-gcc6.patch new file mode 100644 index 0000000..aae622e --- /dev/null +++ b/buildroot/package/inotify-tools/0001-gcc6.patch @@ -0,0 +1,49 @@ +From 5fe3ba82134d8b85adc69cf1d6c5742b4bde20b4 Mon Sep 17 00:00:00 2001 +From: James Knight +Date: Thu, 16 Jun 2016 00:00:57 -0400 +Subject: [PATCH] correct code alignment +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The following replaces the indented section of code from spaces to tabs. +No functional changes. Aside from consistency, this resolves a GCC 6 +build issue with the flag `-Werror=misleading-indentation` enabled: + + inotifywait.c: In function ‘output_event_csv’: + inotifywait.c:126:5: error: this ‘if’ clause does not guard... + [-Werror=misleading-indentation] + if (filename != NULL) + ^~ + inotifywait.c:129:2: note: ...this statement, but the latter is + misleadingly indented as if it is guarded + by the ‘if’ + printf("%s,", csv_escape( inotifytools_event_to_str( event->mask ) + ) ); + ^~~~~~ + +Signed-off-by: James Knight +Signed-off-by: Bernd Kuhls +(downloaded from upstream pull request + https://github.com/rvoicilas/inotify-tools/pull/65) +--- + src/inotifywait.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/inotifywait.c b/src/inotifywait.c +index c5ce5e3..404a85b 100644 +--- a/src/inotifywait.c ++++ b/src/inotifywait.c +@@ -122,9 +122,9 @@ void validate_format( char * fmt ) { + + + void output_event_csv( struct inotify_event * event ) { +- char *filename = csv_escape(inotifytools_filename_from_wd(event->wd)); +- if (filename != NULL) +- printf("%s,", filename); ++ char *filename = csv_escape(inotifytools_filename_from_wd(event->wd)); ++ if (filename != NULL) ++ printf("%s,", filename); + + printf("%s,", csv_escape( inotifytools_event_to_str( event->mask ) ) ); + if ( event->len > 0 ) diff --git a/buildroot/package/inotify-tools/Config.in b/buildroot/package/inotify-tools/Config.in new file mode 100644 index 0000000..1ca01b6 --- /dev/null +++ b/buildroot/package/inotify-tools/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_INOTIFY_TOOLS + bool "inotify-tools" + depends on BR2_USE_MMU # fork() + help + inotify-tools is a C library and a set of command-line + programs for Linux providing a simple interface to inotify. + These programs can be used to monitor and act upon + filesystem events. Provides the 'inotifywait' and + 'inotifywatch' binaries. + + https://github.com/rvoicilas/inotify-tools diff --git a/buildroot/package/inotify-tools/inotify-tools.hash b/buildroot/package/inotify-tools/inotify-tools.hash new file mode 100644 index 0000000..0993dc4 --- /dev/null +++ b/buildroot/package/inotify-tools/inotify-tools.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 628b8efabb65a739dd747fe43b73b29a609b5cfa9628caa127764ed77766a6e1 inotify-tools-1df9af4d6cd0f4af4b1b19254bcf056aed4ae395.tar.gz diff --git a/buildroot/package/inotify-tools/inotify-tools.mk b/buildroot/package/inotify-tools/inotify-tools.mk new file mode 100644 index 0000000..e8b1498 --- /dev/null +++ b/buildroot/package/inotify-tools/inotify-tools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# inotify-tools +# +################################################################################ + +INOTIFY_TOOLS_VERSION = 1df9af4d6cd0f4af4b1b19254bcf056aed4ae395 +INOTIFY_TOOLS_SITE = $(call github,rvoicilas,inotify-tools,$(INOTIFY_TOOLS_VERSION)) +INOTIFY_TOOLS_LICENSE = GPL +INOTIFY_TOOLS_LICENSE_FILES = COPYING +INOTIFY_TOOLS_INSTALL_STAGING = YES +INOTIFY_TOOLS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/input-event-daemon/Config.in b/buildroot/package/input-event-daemon/Config.in new file mode 100644 index 0000000..84177fd --- /dev/null +++ b/buildroot/package/input-event-daemon/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_INPUT_EVENT_DAEMON + bool "input-event-daemon" + # Uses fork() + depends on BR2_USE_MMU + help + input-event-daemon is a daemon which executes + a user-defined command on input events, such as + keys, mouse buttons and switches. + + http://github.com/gandro/input-event-daemon diff --git a/buildroot/package/input-event-daemon/S99input-event-daemon b/buildroot/package/input-event-daemon/S99input-event-daemon new file mode 100755 index 0000000..8d70dd3 --- /dev/null +++ b/buildroot/package/input-event-daemon/S99input-event-daemon @@ -0,0 +1,39 @@ +#! /bin/sh + +[ -f /usr/bin/input-event-daemon ] || exit 0 + +start() { + printf "Starting input-event-daemon: " + input-event-daemon + echo "done" +} + + +stop() { + printf "Stopping input-event-daemon: " + killall input-event-daemon + echo "done" +} + +restart() { + stop + start +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|reload|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/input-event-daemon/input-event-daemon.hash b/buildroot/package/input-event-daemon/input-event-daemon.hash new file mode 100644 index 0000000..d5364a9 --- /dev/null +++ b/buildroot/package/input-event-daemon/input-event-daemon.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1d9a44160aead88080093f74be9d709fbbc2637f982958e2673d80aedacd0a65 input-event-daemon-v0.1.3.tar.gz diff --git a/buildroot/package/input-event-daemon/input-event-daemon.mk b/buildroot/package/input-event-daemon/input-event-daemon.mk new file mode 100644 index 0000000..e61c8cc --- /dev/null +++ b/buildroot/package/input-event-daemon/input-event-daemon.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# input-event-daemon +# +################################################################################ + +INPUT_EVENT_DAEMON_VERSION = v0.1.3 +INPUT_EVENT_DAEMON_SITE = $(call github,gandro,input-event-daemon,$(INPUT_EVENT_DAEMON_VERSION)) +INPUT_EVENT_DAEMON_LICENSE = input-event-daemon license +INPUT_EVENT_DAEMON_LICENSE_FILES = README + +define INPUT_EVENT_DAEMON_BUILD_CMDS + touch $(@D)/input-event-table.h + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) +endef + +define INPUT_EVENT_DAEMON_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/input-event-daemon \ + $(TARGET_DIR)/usr/bin/input-event-daemon + $(INSTALL) -m 644 -D $(@D)/docs/sample.conf \ + $(TARGET_DIR)/etc/input-event-daemon.conf +endef + +define INPUT_EVENT_DAEMON_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/input-event-daemon/S99input-event-daemon \ + $(TARGET_DIR)/etc/init.d/S99input-event-daemon +endef + +define INPUT_EVENT_DAEMON_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/input-event-daemon/input-event-daemon.service \ + $(TARGET_DIR)/usr/lib/systemd/system/input-event-daemon.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf /usr/lib/systemd/system/input-event-daemon.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/input-event-daemon.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/input-event-daemon/input-event-daemon.service b/buildroot/package/input-event-daemon/input-event-daemon.service new file mode 100644 index 0000000..d91e655 --- /dev/null +++ b/buildroot/package/input-event-daemon/input-event-daemon.service @@ -0,0 +1,9 @@ +[Unit] +Description=Input Event Daemon + +[Service] +ExecStart=/usr/bin/input-event-daemon --no-daemon +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/intel-microcode/Config.in b/buildroot/package/intel-microcode/Config.in new file mode 100644 index 0000000..495ebd7 --- /dev/null +++ b/buildroot/package/intel-microcode/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_INTEL_MICROCODE + bool "intel-microcode" + depends on BR2_x86_64 || BR2_i386 + help + This package provides an Intel microcode data file that can be + used to correct processor errors. The iucode-tool package and + proper kernel support are required to upload the microcode. diff --git a/buildroot/package/intel-microcode/intel-microcode.hash b/buildroot/package/intel-microcode/intel-microcode.hash new file mode 100644 index 0000000..999b272 --- /dev/null +++ b/buildroot/package/intel-microcode/intel-microcode.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 0b381face2df1b0a829dc4fa8fa93f47f39e11b1c9c22ebd44f8614657c1e779 microcode-20180312.tgz +sha256 6d4deb65ca688d930e188bf93f78430f134097b161e6df4a2ef00728e14965e3 license.txt diff --git a/buildroot/package/intel-microcode/intel-microcode.mk b/buildroot/package/intel-microcode/intel-microcode.mk new file mode 100644 index 0000000..e3134b6 --- /dev/null +++ b/buildroot/package/intel-microcode/intel-microcode.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# intel-microcode +# +################################################################################ + +INTEL_MICROCODE_VERSION = 20180312 +INTEL_MICROCODE_SOURCE = microcode-$(INTEL_MICROCODE_VERSION).tgz +INTEL_MICROCODE_SITE = http://downloadmirror.intel.com/27591/eng +INTEL_MICROCODE_STRIP_COMPONENTS = 0 +INTEL_MICROCODE_LICENSE = PROPRIETARY +INTEL_MICROCODE_LICENSE_FILES = license.txt +INTEL_MICROCODE_REDISTRIBUTE = NO + +define INTEL_MICROCODE_EXTRACT_LICENSE + head -n 33 $(@D)/microcode.dat > $(@D)/license.txt +endef + +INTEL_MICROCODE_POST_EXTRACT_HOOKS += INTEL_MICROCODE_EXTRACT_LICENSE + +define INTEL_MICROCODE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/microcode.dat \ + $(TARGET_DIR)/usr/share/misc/intel-microcode.dat +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/intltool/0001-perl-5.26-compatibility.patch b/buildroot/package/intltool/0001-perl-5.26-compatibility.patch new file mode 100644 index 0000000..a2a7aef --- /dev/null +++ b/buildroot/package/intltool/0001-perl-5.26-compatibility.patch @@ -0,0 +1,55 @@ +Fix regex errors thrown by Perl 5.26: + +Unescaped left brace in regex is illegal here in regex; marked by <-- HERE in m/^(.*)\${ <-- HERE ?([A-Z_]+)}?(.*)$/ at $BUILDROOT/host/usr/bin/intltool-update line 1065. + +Fetched from: +https://github.com/Alexpux/MSYS2-packages/blob/master/intltool/perl-5.22-compatibility.patch + +Reported upstream: +https://bugs.launchpad.net/intltool/+bug/1696658 + +Signed-off-by: Jörg Krause + +--- intltool-0.51.0.orig/intltool-update.in 2015-03-09 02:39:54.000000000 +0100 ++++ intltool-0.51.0.orig/intltool-update.in 2015-06-19 01:52:07.171228154 +0200 +@@ -1062,7 +1062,7 @@ + } + } + +- if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/) ++ if ($str =~ /^(.*)\$\{?([A-Z_]+)}?(.*)$/) + { + my $rest = $3; + my $untouched = $1; +@@ -1190,10 +1190,10 @@ + $name =~ s/\(+$//g; + $version =~ s/\(+$//g; + +- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/); +- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/); +- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/); +- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/); ++ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/); ++ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/); ++ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/); ++ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/); + } + + if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)[,]?([^,\)]+)?/m) +@@ -1219,11 +1219,11 @@ + $version =~ s/\(+$//g; + $bugurl =~ s/\(+$//g if (defined $bugurl); + +- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/); +- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/); +- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/); +- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/); +- $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\${?\w+}?/); ++ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/); ++ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/); ++ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/); ++ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/); ++ $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\$\{?\w+}?/); + } + + # \s makes this not work, why? diff --git a/buildroot/package/intltool/intltool.hash b/buildroot/package/intltool/intltool.hash new file mode 100644 index 0000000..f6f41dc --- /dev/null +++ b/buildroot/package/intltool/intltool.hash @@ -0,0 +1,5 @@ +# From https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz/+md5 +md5 12e517cac2b57a0121cda351570f1e63 intltool-0.51.0.tar.gz + +# Locally calculated +sha256 67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd intltool-0.51.0.tar.gz diff --git a/buildroot/package/intltool/intltool.mk b/buildroot/package/intltool/intltool.mk new file mode 100644 index 0000000..8595544 --- /dev/null +++ b/buildroot/package/intltool/intltool.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# intltool +# +################################################################################ + +INTLTOOL_VERSION = 0.51.0 +INTLTOOL_SITE = https://launchpad.net/intltool/trunk/$(INTLTOOL_VERSION)/+download +INTLTOOL_LICENSE = GPL-2.0+ +INTLTOOL_LICENSE_FILES = COPYING + +HOST_INTLTOOL_DEPENDENCIES = host-gettext host-libxml-parser-perl + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/iodine/0001-disable-systemd-and-selinux.patch b/buildroot/package/iodine/0001-disable-systemd-and-selinux.patch new file mode 100644 index 0000000..965abb7 --- /dev/null +++ b/buildroot/package/iodine/0001-disable-systemd-and-selinux.patch @@ -0,0 +1,29 @@ +Disable selinux and systemd support since they check for host headers. + +Signed-off-by: Gustavo Zacarias + +diff -Nura iodine-0.7.0.orig/src/osflags iodine-0.7.0/src/osflags +--- iodine-0.7.0.orig/src/osflags 2015-02-20 14:59:00.799958145 -0300 ++++ iodine-0.7.0/src/osflags 2015-02-20 15:05:54.791135141 -0300 +@@ -18,8 +18,8 @@ + ;; + Linux) + FLAGS=""; +- [ -e /usr/include/selinux/selinux.h ] && FLAGS="$FLAGS -lselinux"; +- [ -e /usr/include/systemd/sd-daemon.h ] && FLAGS="$FLAGS -lsystemd-daemon"; ++ #[ -e /usr/include/selinux/selinux.h ] && FLAGS="$FLAGS -lselinux"; ++ #[ -e /usr/include/systemd/sd-daemon.h ] && FLAGS="$FLAGS -lsystemd-daemon"; + echo $FLAGS; + ;; + esac +@@ -34,8 +34,8 @@ + ;; + Linux) + FLAGS="-D_GNU_SOURCE" +- [ -e /usr/include/selinux/selinux.h ] && FLAGS="$FLAGS -DHAVE_SETCON"; +- [ -e /usr/include/systemd/sd-daemon.h ] && FLAGS="$FLAGS -DHAVE_SYSTEMD"; ++ #[ -e /usr/include/selinux/selinux.h ] && FLAGS="$FLAGS -DHAVE_SETCON"; ++ #[ -e /usr/include/systemd/sd-daemon.h ] && FLAGS="$FLAGS -DHAVE_SYSTEMD"; + echo $FLAGS; + ;; + esac diff --git a/buildroot/package/iodine/Config.in b/buildroot/package/iodine/Config.in new file mode 100644 index 0000000..6962cb8 --- /dev/null +++ b/buildroot/package/iodine/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_IODINE + bool "iodine" + select BR2_PACKAGE_ZLIB + help + iodine lets you tunnel IPv4 data through a DNS server. + This can be usable in different situations where + internet access is firewalled, but DNS queries are allowed. + + http://code.kryo.se/iodine/ diff --git a/buildroot/package/iodine/iodine.hash b/buildroot/package/iodine/iodine.hash new file mode 100644 index 0000000..94eb5aa --- /dev/null +++ b/buildroot/package/iodine/iodine.hash @@ -0,0 +1,2 @@ +# From http://code.kryo.se/iodine/ +md5 fdbf3b81cd69caf5230d76a8b039fd99 iodine-0.7.0.tar.gz diff --git a/buildroot/package/iodine/iodine.mk b/buildroot/package/iodine/iodine.mk new file mode 100644 index 0000000..711d709 --- /dev/null +++ b/buildroot/package/iodine/iodine.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# iodine +# +################################################################################ + +IODINE_VERSION = 0.7.0 +IODINE_SITE = http://code.kryo.se/iodine +IODINE_DEPENDENCIES = zlib +IODINE_LICENSE = MIT +IODINE_LICENSE_FILES = README + +IODINE_CFLAGS = $(TARGET_CFLAGS) + +# iodine contains a local implementation of daemon(3) for older +# systems, unless __GLIBC__ is defined. Musl does provide it, but +# unlike uClibc it doesn't define __GLIBC__. Work around it by +# pretending to be glibc as we otherwise end up with symbol conflicts. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +IODINE_CFLAGS += -D__GLIBC__ +endif + +define IODINE_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) CFLAGS="$(IODINE_CFLAGS)" \ + $(MAKE) ARCH=$(BR2_ARCH) -C $(@D) +endef + +define IODINE_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install DESTDIR="$(TARGET_DIR)" prefix=/usr +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/iostat/0001-cpunum.patch b/buildroot/package/iostat/0001-cpunum.patch new file mode 100644 index 0000000..0e75dbf --- /dev/null +++ b/buildroot/package/iostat/0001-cpunum.patch @@ -0,0 +1,27 @@ +From bf646965f75cdad77a45fa3b0046e093b202b2ce Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Thu, 22 Jul 2010 12:42:10 -0300 +Subject: [PATCH] Make cpu number counter more reliable + + +Signed-off-by: Gustavo Zacarias +--- + iostat.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/iostat.c b/iostat.c +index 13e2af7..5d74085 100644 +--- a/iostat.c ++++ b/iostat.c +@@ -140,7 +140,7 @@ void get_number_of_cpus() + + handle_error("Can't open /proc/cpuinfo", !ncpufp); + while (fgets(buffer, sizeof(buffer), ncpufp)) { +- if (!strncmp(buffer, "processor\t:", 11)) ++ if (!strncasecmp(buffer, "processor\t", 10)) + ncpu++; + } + fclose(ncpufp); +-- +1.7.1 + diff --git a/buildroot/package/iostat/Config.in b/buildroot/package/iostat/Config.in new file mode 100644 index 0000000..1aa1464 --- /dev/null +++ b/buildroot/package/iostat/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_IOSTAT + bool "iostat" + help + An I/O performance monitoring utility. + + http://www.linuxinsight.com/iostat_utility.html diff --git a/buildroot/package/iostat/iostat.hash b/buildroot/package/iostat/iostat.hash new file mode 100644 index 0000000..2ba10a3 --- /dev/null +++ b/buildroot/package/iostat/iostat.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 edc5aa73f43bd6c7d49f2c1d5906a0a68c0b28bc4dfdaf1f2aa5ae4a2449c58e iostat-2.2.tar.gz diff --git a/buildroot/package/iostat/iostat.mk b/buildroot/package/iostat/iostat.mk new file mode 100644 index 0000000..4953c73 --- /dev/null +++ b/buildroot/package/iostat/iostat.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# iostat +# +################################################################################ + +IOSTAT_VERSION = 2.2 +IOSTAT_SITE = http://linuxinsight.com/sites/default/files +IOSTAT_LICENSE = GPL +IOSTAT_LICENSE_FILES = LICENSE + +define IOSTAT_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -DHZ=100" +endef + +define IOSTAT_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(IOSTAT_DIR)/iostat $(TARGET_DIR)/usr/bin/iostat +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/iotop/0001-Fix-build-error-with-Python-3.patch b/buildroot/package/iotop/0001-Fix-build-error-with-Python-3.patch new file mode 100644 index 0000000..bf656f8 --- /dev/null +++ b/buildroot/package/iotop/0001-Fix-build-error-with-Python-3.patch @@ -0,0 +1,37 @@ +Status: upstream +http://repo.or.cz/w/iotop.git/commit/99c8d7cedce81f17b851954d94bfa73787300599 + +Signed-off-by: Christophe Vu-Brugier + +From 99c8d7cedce81f17b851954d94bfa73787300599 Mon Sep 17 00:00:00 2001 +From: Christophe Vu-Brugier +Date: Fri, 17 Oct 2014 13:49:31 +0200 +Subject: [PATCH] Fix build error with Python 3 caused by itervalues() in + setup.py + +The itervalues() method is not available in Python 3. As a +consequence, this patch replaces the call to itervalues() in setup.py +with a call to values() which works on both Python 2 and Python 3. + +Signed-off-by: Christophe Vu-Brugier +Signed-off-by: Paul Wise +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 7150102..9de6068 100755 +--- a/setup.py ++++ b/setup.py +@@ -7,7 +7,7 @@ from iotop.version import VERSION + # Dirty hack to make setup.py install the iotop script to sbin/ instead of bin/ + # while still honoring the choice of installing into local/ or not. + if hasattr(distutils_install, 'INSTALL_SCHEMES'): +- for d in distutils_install.INSTALL_SCHEMES.itervalues(): ++ for d in distutils_install.INSTALL_SCHEMES.values(): + if d.get('scripts', '').endswith('/bin'): + d['scripts'] = d['scripts'][:-len('/bin')] + '/sbin' + +-- +2.1.4 + diff --git a/buildroot/package/iotop/Config.in b/buildroot/package/iotop/Config.in new file mode 100644 index 0000000..ada6131 --- /dev/null +++ b/buildroot/package/iotop/Config.in @@ -0,0 +1,12 @@ +comment "iotop depends on python or python3" + depends on !BR2_PACKAGE_PYTHON && !BR2_PACKAGE_PYTHON3 + +config BR2_PACKAGE_IOTOP + bool "iotop" + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_CURSES if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_CURSES if BR2_PACKAGE_PYTHON3 + help + iotop does for I/O usage what top does for CPU usage. + + http://guichaz.free.fr/iotop/ diff --git a/buildroot/package/iotop/iotop.hash b/buildroot/package/iotop/iotop.hash new file mode 100644 index 0000000..b2c497c --- /dev/null +++ b/buildroot/package/iotop/iotop.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1a7c02fd3758bb048d8af861c5f8735eb3ee9abadeaa787f27b8af2b1eaee8ce iotop-0.6.tar.gz diff --git a/buildroot/package/iotop/iotop.mk b/buildroot/package/iotop/iotop.mk new file mode 100644 index 0000000..8b55649 --- /dev/null +++ b/buildroot/package/iotop/iotop.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# iotop +# +################################################################################ + +IOTOP_VERSION = 0.6 +IOTOP_SITE = http://guichaz.free.fr/iotop/files +IOTOP_LICENSE = GPL-2.0+ +IOTOP_LICENSE_FILES = COPYING +IOTOP_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/iozone/0001-targets.patch b/buildroot/package/iozone/0001-targets.patch new file mode 100644 index 0000000..258b960 --- /dev/null +++ b/buildroot/package/iozone/0001-targets.patch @@ -0,0 +1,92 @@ +Add new targets for iozone: + +linux-noaio is for linux targets without AIO (use case: uClibc) +linux-noth is for linux target without threads or AIO + +And make largefile support optional via CFLAGS. + +Signed-off-by: Gustavo Zacarias + +diff -Nura iozone3_414.orig/src/current/makefile iozone3_414/src/current/makefile +--- iozone3_414.orig/src/current/makefile 2013-06-11 09:48:18.257837091 -0300 ++++ iozone3_414/src/current/makefile 2013-06-11 13:05:56.338162144 -0300 +@@ -166,10 +166,28 @@ + # GNU 'C' compiler Linux build with threads, largefiles, async I/O + # + linux: iozone_linux.o libasync.o libbif.o fileop_linux.o pit_server.o +- $(CC) -O3 $(LDFLAGS) iozone_linux.o libasync.o libbif.o -lpthread \ ++ $(CC) $(CFLAGS) $(LDFLAGS) iozone_linux.o libasync.o libbif.o \ ++ -lpthread -lrt -o iozone ++ $(CC) $(CFLAGS) -Dlinux fileop_linux.o -o fileop ++ $(CC) $(CFLAGS) -Dlinux pit_server.o -o pit_server ++ ++# ++# GNU 'C' compiler Linux build with threads, largefiles ++# ++linux-noaio: iozone_linux-noaio.o libbif.o fileop_linux.o pit_server.o ++ $(CC) $(CFLAGS) $(LDFLAGS) iozone_linux-noaio.o libbif.o \ ++ -lpthread -lrt -o iozone ++ $(CC) $(CFLAGS) -Dlinux fileop_linux.o -o fileop ++ $(CC) $(CFLAGS) -Dlinux pit_server.o -o pit_server ++ ++# ++# GNU 'C' compiler Linux build with largefiles ++# ++linux-noth: iozone_linux-noth.o libbif.o fileop_linux.o pit_server.o ++ $(CC) $(CFLAGS) $(LDFLAGS) iozone_linux-noth.o libbif.o \ + -lrt -o iozone +- $(CC) -O3 -Dlinux fileop_linux.o -o fileop +- $(CC) -O3 -Dlinux pit_server.o -o pit_server ++ $(CC) $(CFLAGS) -Dlinux fileop_linux.o -o fileop ++ $(CC) $(CFLAGS) -Dlinux pit_server.o -o pit_server + + # + # GNU 'C' compiler Linux build for powerpc chip with threads, largefiles, async I/O +@@ -795,13 +813,33 @@ + @echo "" + @echo "Building iozone for Linux" + @echo "" +- $(CC) -Wall -c -O3 -Dunix -DHAVE_ANSIC_C -DASYNC_IO -DHAVE_PREAD \ +- -DSHARED_MEM -Dlinux -D_LARGEFILE64_SOURCE $(CFLAGS) iozone.c \ ++ $(CC) -Wall -c -Dunix -DHAVE_ANSIC_C -DASYNC_IO -DHAVE_PREAD \ ++ -DSHARED_MEM -Dlinux $(CFLAGS) iozone.c \ + -DNAME='"linux"' -o iozone_linux.o +- $(CC) -Wall -c -O3 -Dunix -DHAVE_ANSIC_C -DASYNC_IO -D_LARGEFILE64_SOURCE \ ++ $(CC) -Wall -c -Dunix -DHAVE_ANSIC_C -DASYNC_IO \ ++ -DSHARED_MEM -Dlinux $(CFLAGS) libbif.c -o libbif.o ++ $(CC) -Wall -c -Dunix -Dlinux -DHAVE_ANSIC_C -DASYNC_IO \ ++ $(CFLAGS) libasync.c -o libasync.o ++ ++iozone_linux-noaio.o: iozone.c libbif.c ++ @echo "" ++ @echo "Building iozone for Linux no AIO" ++ @echo "" ++ $(CC) -Wall -c -Dunix -DHAVE_ANSIC_C -DHAVE_PREAD \ ++ -DSHARED_MEM -Dlinux $(CFLAGS) iozone.c \ ++ -DNAME='"linux"' -o iozone_linux-noaio.o ++ $(CC) -Wall -c -Dunix -DHAVE_ANSIC_C \ ++ -DSHARED_MEM -Dlinux $(CFLAGS) libbif.c -o libbif.o ++ ++iozone_linux-noth.o: iozone.c libbif.c ++ @echo "" ++ @echo "Building iozone for Linux with no threads" ++ @echo "" ++ $(CC) -Wall -c -Dunix -DHAVE_ANSIC_C -DNO_THREADS -DHAVE_PREAD \ ++ -DSHARED_MEM -Dlinux $(CFLAGS) iozone.c \ ++ -DNAME='"linux"' -o iozone_linux-noth.o ++ $(CC) -Wall -c -Dunix -DHAVE_ANSIC_C -DNO_THREADS \ + -DSHARED_MEM -Dlinux $(CFLAGS) libbif.c -o libbif.o +- $(CC) -Wall -c -O3 -Dunix -Dlinux -DHAVE_ANSIC_C -DASYNC_IO \ +- -D_LARGEFILE64_SOURCE $(CFLAGS) libasync.c -o libasync.o + + fileop_AIX.o: fileop.c + @echo "" +@@ -893,7 +931,7 @@ + @echo "" + @echo "Building fileop for Linux" + @echo "" +- $(CC) -Wall -c -O3 $(CFLAGS) fileop.c -o fileop_linux.o ++ $(CC) -Wall -c $(CFLAGS) fileop.c -o fileop_linux.o + + fileop_openbsd.o: fileop.c + @echo "" diff --git a/buildroot/package/iozone/Config.in b/buildroot/package/iozone/Config.in new file mode 100644 index 0000000..c66def2 --- /dev/null +++ b/buildroot/package/iozone/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_IOZONE + bool "iozone" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + help + IOzone is a filesystem benchmark tool. + The benchmark generates and measures a variety of file + operations + + http://www.iozone.org/ + +comment "iozone needs a toolchain w/ NPTL" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/iozone/iozone.hash b/buildroot/package/iozone/iozone.hash new file mode 100644 index 0000000..b387588 --- /dev/null +++ b/buildroot/package/iozone/iozone.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 bbbda98d7c052d8654ea23fb2187d831107ab4ac89842fa21509276d9a6915f0 iozone3_446.tar diff --git a/buildroot/package/iozone/iozone.mk b/buildroot/package/iozone/iozone.mk new file mode 100644 index 0000000..477a60a --- /dev/null +++ b/buildroot/package/iozone/iozone.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# iozone +# +################################################################################ + +IOZONE_VERSION = 3_446 +IOZONE_SOURCE = iozone$(IOZONE_VERSION).tar +IOZONE_SITE = http://www.iozone.org/src/current +IOZONE_LICENSE = IOzone license (NO DERIVED WORKS ALLOWED) +# IOzone license details can be found at: +# http://www.iozone.org/docs/Iozone_License.txt + +# AIO support not available on uClibc, use the linux (non-aio) target. +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +IOZONE_TARGET = linux-noaio +else +IOZONE_TARGET = linux +endif + +define IOZONE_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) $(IOZONE_TARGET) -C $(@D)/src/current +endef + +define IOZONE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/src/current/iozone \ + $(TARGET_DIR)/usr/bin/iozone +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/iperf/0001-util.h-add-missing-stdbool-header.patch b/buildroot/package/iperf/0001-util.h-add-missing-stdbool-header.patch new file mode 100644 index 0000000..6eeed72 --- /dev/null +++ b/buildroot/package/iperf/0001-util.h-add-missing-stdbool-header.patch @@ -0,0 +1,54 @@ +From babf9a5c2bbce4725963b21e47f413962e33ea88 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Sat, 30 Jul 2016 14:24:33 +0200 +Subject: [PATCH] util.h: add missing stdbool header +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +C requires the stdbool.h header for the 'bool' type. + +Fixes the following build failure under uClibc-ng C library: + +.../arm-linux-gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I../include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -c delay.c +In file included from delay.c:55:0: +../include/util.h:73:1: error: unknown type name ‘bool’ + bool setsock_blocking(int fd, bool blocking); + ^ + +Signed-off-by: Baruch Siach +[Thomas: add AC_PROG_CC_C99, since C99 is needed for the bool type.] +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 1 + + include/util.h | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/configure.ac b/configure.ac +index d59107a..ba30cb7 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -46,6 +46,7 @@ dnl =================================================================== + AC_PROG_CXX + CXXFLAGS=`echo " $CXXFLAGS " | sed -e "s/ -g / /"` # do not want it implicitly + AC_PROG_CC ++AC_PROG_CC_C99 + CFLAGS=`echo " $CFLAGS " | sed -e "s/ -g / /"` # do not want it implicitly + AC_ISC_POSIX + AC_PROG_INSTALL +diff --git a/include/util.h b/include/util.h +index f4ae3d8..91540a9 100644 +--- a/include/util.h ++++ b/include/util.h +@@ -57,6 +57,8 @@ + #include "config.h" + #endif + ++#include ++ + #ifdef __cplusplus + extern "C" { + #endif +-- +2.7.4 + diff --git a/buildroot/package/iperf/0002-fix-speed-display-in-csv-report.patch b/buildroot/package/iperf/0002-fix-speed-display-in-csv-report.patch new file mode 100644 index 0000000..b06c709 --- /dev/null +++ b/buildroot/package/iperf/0002-fix-speed-display-in-csv-report.patch @@ -0,0 +1,39 @@ +From f035e70b72d4285dcdbd393e680777a927cb9da4 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Thu, 28 Jul 2016 19:04:01 -0500 +Subject: [PATCH] perf: fix "speed" display in csv report + +Some parameters displayed in the CSV reports are declared +as uint64_t, but the printf format doesn't reflect this. + +Submitted bug: https://sourceforge.net/p/iperf/bugs/66/ + +Signed-off-by: Matt Poduska +Signed-off-by: Atul Singh +Signed-off-by: Matthew Weber +--- + src/Locale.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/Locale.c b/src/Locale.c +index b5d42b1..7b924fa 100644 +--- a/src/Locale.c ++++ b/src/Locale.c +@@ -260,11 +260,12 @@ const char reportCSV_bw_format[] = + const char reportCSV_bw_jitter_loss_format[] = + "%s,%s,%d,%.1f-%.1f,%I64d,%I64d,%.3f,%d,%d,%.3f,%d\n"; + #else ++#include "inttypes.h" + const char reportCSV_bw_format[] = +-"%s,%s,%d,%.1f-%.1f,%d,%d\n"; ++"%s,%s,%d,%.1f-%.1f,%" PRId64 ",%" PRId64 "\n"; + + const char reportCSV_bw_jitter_loss_format[] = +-"%s,%s,%d,%.1f-%.1f,%d,%d,%.3f,%d,%d,%.3f,%d\n"; ++"%s,%s,%d,%.1f-%.1f,%" PRId64 ",%" PRId64 ",%.3f,%d,%d,%.3f,%d\n"; + #endif //WIN32 + #endif //HAVE_QUAD_SUPPORT + /* ------------------------------------------------------------------- +-- +1.9.1 + diff --git a/buildroot/package/iperf/Config.in b/buildroot/package/iperf/Config.in new file mode 100644 index 0000000..21a2df8 --- /dev/null +++ b/buildroot/package/iperf/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_IPERF + bool "iperf" + depends on BR2_INSTALL_LIBSTDCPP + # uses fork() + depends on BR2_USE_MMU + help + Internet Protocol bandwidth measuring tool for measuring + TCP/UDP performance. + + https://sourceforge.net/projects/iperf2/ + +comment "iperf needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/iperf/iperf.hash b/buildroot/package/iperf/iperf.hash new file mode 100644 index 0000000..0752bfc --- /dev/null +++ b/buildroot/package/iperf/iperf.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/iperf2/files/ +sha1 8b44a23385044bb454e7891966c37339d3bb3711 iperf-2.0.10.tar.gz +# Locally computed: +sha256 7fe4348dcca313b74e0aa9c34a8ccd713b84a5615b8578f4aa94cedce9891ef2 iperf-2.0.10.tar.gz +sha256 5f9f5c4feca3347c3b3c0ada8b16b4e6b698aac4e6f016a24adf61a5915336d1 COPYING diff --git a/buildroot/package/iperf/iperf.mk b/buildroot/package/iperf/iperf.mk new file mode 100644 index 0000000..6449807 --- /dev/null +++ b/buildroot/package/iperf/iperf.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# iperf +# +################################################################################ + +IPERF_VERSION = 2.0.10 +IPERF_SITE = http://downloads.sourceforge.net/project/iperf2 +IPERF_LICENSE = MIT-like +IPERF_LICENSE_FILES = COPYING +# patching configure.ac +IPERF_AUTORECONF = YES + +IPERF_CONF_OPTS = \ + --disable-web100 + +$(eval $(autotools-package)) diff --git a/buildroot/package/iperf3/0001-disable-profiling.patch b/buildroot/package/iperf3/0001-disable-profiling.patch new file mode 100644 index 0000000..09da98e --- /dev/null +++ b/buildroot/package/iperf3/0001-disable-profiling.patch @@ -0,0 +1,20 @@ +This should be an option, but it's not. +Don't force profiled builds, it breaks on many toolchains. +Patch Makefile.in to avoid AUTORECONFing since it needs dummy files +that are missing to succeed (ChangeLog, COPYING, NEWS, README) and it's +simple enough so avoid pulling in dependencies and delays. + +Signed-off-by: Gustavo Zacarias + +diff -Nura iperf-3.0.10.orig/src/Makefile.in iperf-3.0.10/src/Makefile.in +--- iperf-3.0.10.orig/src/Makefile.in 2014-12-17 07:30:46.878310789 -0300 ++++ iperf-3.0.10/src/Makefile.in 2014-12-17 07:33:41.879356643 -0300 +@@ -82,7 +82,7 @@ + host_triplet = @host@ + bin_PROGRAMS = iperf3$(EXEEXT) + noinst_PROGRAMS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT) \ +- iperf3_profile$(EXEEXT) ++ iperf3$(EXEEXT) + TESTS = t_timer$(EXEEXT) t_units$(EXEEXT) t_uuid$(EXEEXT) + subdir = src + DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ diff --git a/buildroot/package/iperf3/0002-Fix-build-using-musl-libc.patch b/buildroot/package/iperf3/0002-Fix-build-using-musl-libc.patch new file mode 100644 index 0000000..f220360 --- /dev/null +++ b/buildroot/package/iperf3/0002-Fix-build-using-musl-libc.patch @@ -0,0 +1,43 @@ +From 1fe02385b60c9dcd8a04b8bd3ff5cff120ec35a6 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 30 Jan 2016 19:23:20 +0100 +Subject: [PATCH 1/1] Fix build using musl libc + +Fixes https://github.com/esnet/iperf/issues/331 + +Signed-off-by: Bernd Kuhls +--- +Patch sent upstream: https://github.com/esnet/iperf/pull/344 + + src/cjson.h | 2 ++ + src/timer.h | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/src/cjson.h b/src/cjson.h +index d4449e6..7af19a9 100644 +--- a/src/cjson.h ++++ b/src/cjson.h +@@ -23,6 +23,8 @@ + #ifndef cJSON__h + #define cJSON__h + ++#include ++ + #ifdef __cplusplus + extern "C" + { +diff --git a/src/timer.h b/src/timer.h +index 0f9c5eb..9b22b7f 100644 +--- a/src/timer.h ++++ b/src/timer.h +@@ -30,6 +30,7 @@ + #ifndef __TIMER_H + #define __TIMER_H + ++#include + #include + + /* TimerClientData is an opaque value that tags along with a timer. The +-- +2.7.0.rc3 + diff --git a/buildroot/package/iperf3/Config.in b/buildroot/package/iperf3/Config.in new file mode 100644 index 0000000..5b2204c --- /dev/null +++ b/buildroot/package/iperf3/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_IPERF3 + bool "iperf3" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + iperf is a tool for active measurements of the maximum + achievable bandwidth on IP networks. + It supports tuning of various parameters related to timing, + protocols, and buffers. For each test it reports the + bandwidth, loss, and other parameters. + It's a redesign of the NLANR/DAST iperf(2) and is not backward + compatible. + + http://software.es.net/iperf/index.html + +comment "iperf3 needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/iperf3/iperf3.hash b/buildroot/package/iperf3/iperf3.hash new file mode 100644 index 0000000..3e34f98 --- /dev/null +++ b/buildroot/package/iperf3/iperf3.hash @@ -0,0 +1,2 @@ +# From http://software.es.net/iperf/news.html +sha256 a4ef73406fe92250602b8da2ae89ec53211f805df97a1d1d629db5a14043734f iperf-3.1.7.tar.gz diff --git a/buildroot/package/iperf3/iperf3.mk b/buildroot/package/iperf3/iperf3.mk new file mode 100644 index 0000000..cc4e724 --- /dev/null +++ b/buildroot/package/iperf3/iperf3.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# iperf3 +# +################################################################################ + +IPERF3_VERSION = 3.1.7 +IPERF3_SITE = http://downloads.es.net/pub/iperf +IPERF3_SOURCE = iperf-$(IPERF3_VERSION).tar.gz +IPERF3_LICENSE = BSD-3-Clause, BSD-2-Clause, MIT +IPERF3_LICENSE_FILES = LICENSE + +IPERF3_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +$(eval $(autotools-package)) diff --git a/buildroot/package/ipmitool/0001-Fix-missing-stddef.h-include.patch b/buildroot/package/ipmitool/0001-Fix-missing-stddef.h-include.patch new file mode 100644 index 0000000..dc3f92e --- /dev/null +++ b/buildroot/package/ipmitool/0001-Fix-missing-stddef.h-include.patch @@ -0,0 +1,38 @@ +From 04d489936191e685123978a1ca370f9cc30e6a06 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Mon, 18 Apr 2016 21:17:26 +0200 +Subject: [PATCH] Fix missing stddef.h include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Needed for wchar_t. Fixes build error: + +imbapi.h:140:9: error: unknown type name 'wchar_t' + typedef wchar_t WCHAR; + +Upstream status: Pending +https://sourceforge.net/p/ipmitool/mailman/message/35022779/ + +Signed-off-by: Jörg Krause +--- + src/plugins/imb/imbapi.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/plugins/imb/imbapi.h b/src/plugins/imb/imbapi.h +index 6ba4121..6b39b47 100644 +--- a/src/plugins/imb/imbapi.h ++++ b/src/plugins/imb/imbapi.h +@@ -33,6 +33,9 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *----------------------------------------------------------------------*/ ++ ++#include ++ + #ifndef _WINDEFS_H + #define _WINDEFS_H + #ifndef FALSE +-- +2.10.2 + diff --git a/buildroot/package/ipmitool/Config.in b/buildroot/package/ipmitool/Config.in new file mode 100644 index 0000000..826bc09 --- /dev/null +++ b/buildroot/package/ipmitool/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_IPMITOOL + bool "ipmitool" + depends on BR2_USE_MMU # fork() + help + IPMItool provides a simple command-line interface to + IPMI-enabled devices. + + http://sourceforge.net/projects/ipmitool/ + +if BR2_PACKAGE_IPMITOOL + +config BR2_PACKAGE_IPMITOOL_LANPLUS + bool "enable lanplus interface" + select BR2_PACKAGE_OPENSSL + help + Enables the IPMI v2.0 RMCP+ LAN interface typically used to + send IPMI commands to the BMC of a remote server. + Not needed if you only want to communicate with the local BMC + of your device using the OpenIPMI ipmi_si kernel module, or if + using the legacy IPMI v1.5 RMCP LAN interface. + +config BR2_PACKAGE_IPMITOOL_USB + bool "enable usb interface" + help + Enables the IPMI USB interface typically used to send inband + IPMI commands to the BMC of a server. + +config BR2_PACKAGE_IPMITOOL_IPMIEVD + bool "ipmievd" + help + IPMI event daemon for sending events to syslog + +config BR2_PACKAGE_IPMITOOL_IPMISHELL + bool "ipmishell" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + IPMI shell interface + +endif diff --git a/buildroot/package/ipmitool/ipmitool.hash b/buildroot/package/ipmitool/ipmitool.hash new file mode 100644 index 0000000..9b16414 --- /dev/null +++ b/buildroot/package/ipmitool/ipmitool.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 0c1ba3b1555edefb7c32ae8cd6a3e04322056bc087918f07189eeedfc8b81e01 ipmitool-1.8.18.tar.bz2 diff --git a/buildroot/package/ipmitool/ipmitool.mk b/buildroot/package/ipmitool/ipmitool.mk new file mode 100644 index 0000000..5254668 --- /dev/null +++ b/buildroot/package/ipmitool/ipmitool.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# ipmitool +# +################################################################################ + +IPMITOOL_VERSION = 1.8.18 +IPMITOOL_SOURCE = ipmitool-$(IPMITOOL_VERSION).tar.bz2 +IPMITOOL_SITE = http://downloads.sourceforge.net/project/ipmitool/ipmitool/$(IPMITOOL_VERSION) +IPMITOOL_LICENSE = BSD-3-Clause +IPMITOOL_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_IPMITOOL_LANPLUS),y) +IPMITOOL_DEPENDENCIES += openssl +IPMITOOL_CONF_OPTS += --enable-intf-lanplus +else +IPMITOOL_CONF_OPTS += --disable-intf-lanplus +endif + +ifeq ($(BR2_PACKAGE_IPMITOOL_USB),y) +IPMITOOL_CONF_OPTS += --enable-intf-usb +else +IPMITOOL_CONF_OPTS += --disable-intf-usb +endif + +ifeq ($(BR2_PACKAGE_IPMITOOL_IPMISHELL),y) +IPMITOOL_DEPENDENCIES += ncurses readline +IPMITOOL_CONF_OPTS += --enable-ipmishell +else +IPMITOOL_CONF_OPTS += --disable-ipmishell +endif + +ifeq ($(BR2_PACKAGE_IPMITOOL_IPMIEVD),) +define IPMITOOL_REMOVE_IPMIEVD + $(RM) -f $(TARGET_DIR)/usr/sbin/ipmievd +endef +IPMITOOL_POST_INSTALL_TARGET_HOOKS += IPMITOOL_REMOVE_IPMIEVD +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ipmiutil/0001-no-build-doc.patch b/buildroot/package/ipmiutil/0001-no-build-doc.patch new file mode 100644 index 0000000..ea7da97 --- /dev/null +++ b/buildroot/package/ipmiutil/0001-no-build-doc.patch @@ -0,0 +1,31 @@ +configure: do not build doc + +Fixes: + http://autobuild.buildroot.org/results/2ec/2ecfb1143ba89ffa5cdc8096bb175b2c396c4670/ + http://autobuild.buildroot.org/results/c49/c497fc446140694084922d51fe6be308ce5c1c1a/ + http://autobuild.buildroot.org/results/434/434b156b5c9b5c7b65ffe6174cf4e029e7e3ffd8/ + +Signed-off-by: "Yann E. MORIN" + +diff --git a/configure.ac b/configure.ac +index 344b27a71a35..41b6ea89167a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -56,7 +56,7 @@ LIB_DIR="/usr/lib" + isredhat=0 + init_scripts="scripts/ipmi_port.sh scripts/ipmiutil_evt scripts/ipmiutil_asy scripts/ipmiutil_wdt" + projdir=`pwd` +-SUBDIR_S="doc scripts lib util" ++SUBDIR_S="scripts lib util" + os=Linux + + # ltmain.sh, config.sub, et al should have been created, but check to be sure. +@@ -162,7 +162,7 @@ AC_ARG_ENABLE([standalone], + LANPLUS_SAM="no" + LD_SAMX="" + CFLAGS="-O2" +- SUBDIR_S="doc scripts util" ++ SUBDIR_S="scripts util" + if test "x$cross_compiling" = "xyes"; then + # cross-compiling, so link with -static (e.g. Android ARM) + CROSS_LFLAGS="-static" diff --git a/buildroot/package/ipmiutil/Config.in b/buildroot/package/ipmiutil/Config.in new file mode 100644 index 0000000..9eb5452 --- /dev/null +++ b/buildroot/package/ipmiutil/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_IPMIUTIL + bool "ipmiutil" + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_x86_64 || BR2_i386 + help + The ipmiutil package provides easy-to-use utilities to view + the SEL, perform an IPMI chassis reset, set up the IPMI LAN + and Platform Event Filter entries to allow SNMP alerts, + Serial-Over-LAN console, event daemon, and other IPMI tasks. + + http://ipmiutil.sourceforge.net/ + +comment "ipmiutil needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on BR2_x86_64 || BR2_i386 diff --git a/buildroot/package/ipmiutil/ipmiutil.hash b/buildroot/package/ipmiutil/ipmiutil.hash new file mode 100644 index 0000000..f9d086b --- /dev/null +++ b/buildroot/package/ipmiutil/ipmiutil.hash @@ -0,0 +1,4 @@ +# From http://sourceforge.net/projects/ipmiutil/files/?source=navbar +sha1 f423a77a374b6a37a16496844f1e6e363e7d63fe ipmiutil-2.9.9.tar.gz +# Locally computed +sha256 beace08386a002c6a4bbbf894bda9899ea34fae4c2181c89f29fb1fa136925f6 ipmiutil-2.9.9.tar.gz diff --git a/buildroot/package/ipmiutil/ipmiutil.mk b/buildroot/package/ipmiutil/ipmiutil.mk new file mode 100644 index 0000000..a5a6b49 --- /dev/null +++ b/buildroot/package/ipmiutil/ipmiutil.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# ipmiutil +# +################################################################################ + +IPMIUTIL_VERSION = 2.9.9 +IPMIUTIL_SITE = http://sourceforge.net/projects/ipmiutil/files +IPMIUTIL_LICENSE = BSD-3-Clause +IPMIUTIL_LICENSE_FILES = COPYING +# We're patching configure.ac +IPMIUTIL_AUTORECONF = YES + +IPMIUTIL_MAKE = $(MAKE1) + +# forgets to link against libcrypto dependencies breaking static link +ifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx) +# tests against distro libcrypto so it might get a false positive when +# the openssl version is old, so force it off +# SKIP_MD2 can be used only if ALLOW_GNU is defined. +IPMIUTIL_CONF_OPTS += CPPFLAGS="$(TARGET_CPPFLAGS) -DALLOW_GNU -DSKIP_MD2" +IPMIUTIL_DEPENDENCIES += openssl +else +IPMIUTIL_CONF_OPTS += --disable-lanplus +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch b/buildroot/package/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch new file mode 100644 index 0000000..ff362c9 --- /dev/null +++ b/buildroot/package/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch @@ -0,0 +1,38 @@ +From 909a6f10157114e09936d2dd545175d7ed84c0fb Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 22 Dec 2016 15:26:30 +0200 +Subject: [PATCH] Add the musl workaround to the libc-compat.h copy + +The libc-compat.h kernel header uses glibc specific macros (__GLIBC__ and +__USE_MISC) to solve conflicts with libc provided headers. This patch makes +libc-compat.h work also for musl libc. + +Signed-off-by: Baruch Siach +--- +Upstream status: libc-compat.h is a local copy of a kernel headers. A proper +musl fix must go to the kernel first. +--- + include/uapi/linux/libc-compat.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h +index 9ab3ace08e2b..e768459d89f9 100644 +--- a/include/uapi/linux/libc-compat.h ++++ b/include/uapi/linux/libc-compat.h +@@ -50,10 +50,12 @@ + #define _LIBC_COMPAT_H + + /* We have included glibc headers... */ +-#if defined(__GLIBC__) ++#if 1 ++#define __USE_MISC + + /* Coordinate with glibc net/if.h header. */ + #if defined(_NET_IF_H) && defined(__USE_MISC) ++#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0 + + /* GLIBC headers included first so don't define anything + * that would already be defined. */ +-- +2.15.0 + diff --git a/buildroot/package/iproute2/Config.in b/buildroot/package/iproute2/Config.in new file mode 100644 index 0000000..ab9e515 --- /dev/null +++ b/buildroot/package/iproute2/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_IPROUTE2 + bool "iproute2" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # __kernel_{u,}long_t + help + Kernel routing and traffic control utilities. Provides things + like ip and tc. + + http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2 + +comment "iproute2 needs a toolchain w/ headers >= 3.4" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 diff --git a/buildroot/package/iproute2/iproute2.hash b/buildroot/package/iproute2/iproute2.hash new file mode 100644 index 0000000..e9b8a0e --- /dev/null +++ b/buildroot/package/iproute2/iproute2.hash @@ -0,0 +1,3 @@ +# From https://kernel.org/pub/linux/utils/net/iproute2/sha256sums.asc +sha256 d43ac068afcc350a448f4581b6e292331ef7e4e7aa746e34981582d5fdb10067 iproute2-4.14.1.tar.xz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/buildroot/package/iproute2/iproute2.mk b/buildroot/package/iproute2/iproute2.mk new file mode 100644 index 0000000..15bb132 --- /dev/null +++ b/buildroot/package/iproute2/iproute2.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# iproute2 +# +################################################################################ + +IPROUTE2_VERSION = 4.14.1 +IPROUTE2_SOURCE = iproute2-$(IPROUTE2_VERSION).tar.xz +IPROUTE2_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/iproute2 +IPROUTE2_DEPENDENCIES = host-bison host-flex host-pkgconf \ + $(if $(BR2_PACKAGE_LIBMNL),libmnl) +IPROUTE2_LICENSE = GPL-2.0+ +IPROUTE2_LICENSE_FILES = COPYING + +# If both iproute2 and busybox are selected, make certain we win +# the fight over who gets to have their utils actually installed. +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +IPROUTE2_DEPENDENCIES += busybox +endif + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +IPROUTE2_DEPENDENCIES += elfutils +endif + +# If we've got iptables enable xtables support for tc +ifeq ($(BR2_PACKAGE_IPTABLES)x$(BR2_STATIC_LIBS),yx) +IPROUTE2_DEPENDENCIES += iptables +define IPROUTE2_WITH_IPTABLES + # Makefile is busted so it never passes IPT_LIB_DIR properly + $(SED) "s/-DIPT/-DXT/" $(@D)/tc/Makefile +endef +else +define IPROUTE2_WITH_IPTABLES + # m_xt.so is built unconditionally + echo "TC_CONFIG_XT:=n" >>$(@D)/config.mk +endef +endif + +# arpd needs BerkeleyDB and links against pthread +ifeq ($(BR2_PACKAGE_BERKELEYDB_COMPAT185)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +IPROUTE2_DEPENDENCIES += berkeleydb +else +define IPROUTE2_DISABLE_ARPD + echo "HAVE_BERKELEY_DB:=n" >> $(@D)/config.mk +endef +endif + +# ifcfg needs bash +ifeq ($(BR2_PACKAGE_BASH),) +define IPROUTE2_REMOVE_IFCFG + rm -f $(TARGET_DIR)/sbin/ifcfg +endef +endif + +define IPROUTE2_CONFIGURE_CMDS + $(SED) 's/gcc/$$CC $$CFLAGS/g' $(@D)/configure + cd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure + $(IPROUTE2_DISABLE_ARPD) + $(IPROUTE2_WITH_IPTABLES) +endef + +define IPROUTE2_BUILD_CMDS + $(SED) 's/$$(CCOPTS)//' $(@D)/netem/Makefile + $(TARGET_MAKE_ENV) LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) \ + DBM_INCLUDE="$(STAGING_DIR)/usr/include" \ + CCOPTS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \ + SHARED_LIBS="$(if $(BR2_STATIC_LIBS),n,y)" -C $(@D) +endef + +define IPROUTE2_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" \ + SBINDIR=/sbin \ + DOCDIR=/usr/share/doc/iproute2-$(IPROUTE2_VERSION) \ + MANDIR=/usr/share/man install + $(IPROUTE2_REMOVE_IFCFG) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/iprutils/Config.in b/buildroot/package/iprutils/Config.in new file mode 100644 index 0000000..0143b53 --- /dev/null +++ b/buildroot/package/iprutils/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_IPRUTILS + bool "iprutils" + depends on BR2_USE_MMU # fork() + depends on !BR2_bfin # pciutils + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBSYSFS + select BR2_PACKAGE_PCIUTILS + select BR2_PACKAGE_ZLIB + help + System utilities for IBM Power RAID devices + + http://sourceforge.net/projects/iprdd/ diff --git a/buildroot/package/iprutils/iprutils.hash b/buildroot/package/iprutils/iprutils.hash new file mode 100644 index 0000000..e5c1754 --- /dev/null +++ b/buildroot/package/iprutils/iprutils.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/iprdd/files/iprutils%20for%202.6%20kernels/2.4.15/ +md5 e4011051bba7470df3936cbba7dced98 iprutils-2.4.15.1.tar.gz +sha1 ed6c362ee3c6bd9023ee60d0d1a1ce5543c27c41 iprutils-2.4.15.1.tar.gz +# Locally computed: +sha256 a733e65f8fb19565f2ef5191eaa2a14d816fabed0fc254ab4bbf1a4c7800ebe5 iprutils-2.4.15.1.tar.gz diff --git a/buildroot/package/iprutils/iprutils.mk b/buildroot/package/iprutils/iprutils.mk new file mode 100644 index 0000000..1165b3d --- /dev/null +++ b/buildroot/package/iprutils/iprutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# iprutils +# +################################################################################ + +IPRUTILS_VERSION_MAJOR = 2.4.15 +IPRUTILS_VERSION = $(IPRUTILS_VERSION_MAJOR).1 +IPRUTILS_SITE = https://downloads.sourceforge.net/project/iprdd/iprutils%20for%202.6%20kernels/$(IPRUTILS_VERSION_MAJOR) +IPRUTILS_DEPENDENCIES = ncurses libsysfs pciutils zlib +IPRUTILS_LICENSE = Common Public License Version 1.0 +IPRUTILS_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/buildroot/package/ipsec-tools/0001-susv3-legacy.patch b/buildroot/package/ipsec-tools/0001-susv3-legacy.patch new file mode 100644 index 0000000..ea98505 --- /dev/null +++ b/buildroot/package/ipsec-tools/0001-susv3-legacy.patch @@ -0,0 +1,35 @@ +Replaces sysv3 legacy functions with modern equivalents. + +Signed-off-by: Julien Boibessot +Index: ipsec-tools-0.7.3/src/racoon/pfkey.c +=================================================================== +--- ipsec-tools-0.7.3.orig/src/racoon/pfkey.c 2010-07-12 14:46:52.000000000 +0200 ++++ ipsec-tools-0.7.3/src/racoon/pfkey.c 2010-07-12 15:01:39.000000000 +0200 +@@ -3008,12 +3008,12 @@ + struct sockaddr *paddr; + + paddr = (struct sockaddr *)(xisr + 1); +- bcopy(paddr, &(*p_isr)->saidx.src, ++ memmove(&(*p_isr)->saidx.src, paddr, + sysdep_sa_len(paddr)); + + paddr = (struct sockaddr *)((caddr_t)paddr + + sysdep_sa_len(paddr)); +- bcopy(paddr, &(*p_isr)->saidx.dst, ++ memmove(&(*p_isr)->saidx.dst, paddr, + sysdep_sa_len(paddr)); + } + +Index: ipsec-tools-0.7.3/src/racoon/racoonctl.c +=================================================================== +--- ipsec-tools-0.7.3.orig/src/racoon/racoonctl.c 2010-07-12 14:49:51.000000000 +0200 ++++ ipsec-tools-0.7.3/src/racoon/racoonctl.c 2010-07-12 15:00:52.000000000 +0200 +@@ -785,7 +785,7 @@ + errx(1, "cannot read source address"); + + /* We get "ip[port]" strip the port */ +- if ((idx = index(srcaddr, '[')) == NULL) ++ if ((idx = strchr(srcaddr, '[')) == NULL) + errx(1, "unexpected source address format"); + *idx = '\0'; + diff --git a/buildroot/package/ipsec-tools/0002-configure-automake.patch b/buildroot/package/ipsec-tools/0002-configure-automake.patch new file mode 100644 index 0000000..a006516 --- /dev/null +++ b/buildroot/package/ipsec-tools/0002-configure-automake.patch @@ -0,0 +1,21 @@ +Needed to fix broken autoreconf + +Downloaded from +https://sources.debian.net/src/ipsec-tools/1:0.8.2%2B20140711-8/debian/patches/automake-options/ + +Signed-off-by: Bernd Kuhls + +Index: pkg-ipsec-tools/configure.ac +=================================================================== +--- pkg-ipsec-tools.orig/configure.ac 2014-06-28 17:25:22.000000000 +0200 ++++ pkg-ipsec-tools/configure.ac 2014-06-28 17:28:13.818373322 +0200 +@@ -6,7 +6,8 @@ AC_INIT(ipsec-tools, 0.8.2) + AC_CONFIG_SRCDIR([configure.ac]) + AC_CONFIG_HEADERS(config.h) + +-AM_INIT_AUTOMAKE(dist-bzip2) ++AC_CONFIG_MACRO_DIR([.]) ++AM_INIT_AUTOMAKE([dist-bzip2 foreign serial-tests]) + + AC_ENABLE_SHARED(no) + diff --git a/buildroot/package/ipsec-tools/0003-Don-t-link-against-libfl.patch b/buildroot/package/ipsec-tools/0003-Don-t-link-against-libfl.patch new file mode 100644 index 0000000..4fa0a02 --- /dev/null +++ b/buildroot/package/ipsec-tools/0003-Don-t-link-against-libfl.patch @@ -0,0 +1,92 @@ +From e48b9097dce7bc2bfbb9e9c542124d3b5cebab39 Mon Sep 17 00:00:00 2001 +From: Paul Barker +Date: Wed, 5 Mar 2014 13:39:14 +0000 +Subject: [PATCH] Don't link against libfl + +We can remove all references to yywrap by adding "%option noyywrap" statements +to each flex source file that doesn't override yywrap. After this, we no longer +need to link against libfl and so no longer get errors about undefined +references to yylex. + +Signed-off-by: Paul Barker +Upstream-status: Submitted 2014-03-11 + see http://sourceforge.net/p/ipsec-tools/mailman/ipsec-tools-devel/thread/CANyK_8ewmxGA3vBVJW6s1APXPmxPR%2BDFWZ61EL8pCt288aKQ6w%40mail.gmail.com/#msg32088797 + +Downloaded from +http://cgit.openembedded.org/meta-openembedded/tree/meta-networking/recipes-support/ipsec-tools/ipsec-tools/0002-Don-t-link-against-libfl.patch + +Signed-off-by: Bernd Kuhls +--- + src/libipsec/Makefile.am | 1 - + src/racoon/Makefile.am | 2 +- + src/racoon/cftoken.l | 2 ++ + src/setkey/Makefile.am | 1 - + src/setkey/token.l | 2 ++ + 5 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/libipsec/Makefile.am b/src/libipsec/Makefile.am +index 6a4e3b3..df1e106 100644 +--- a/src/libipsec/Makefile.am ++++ b/src/libipsec/Makefile.am +@@ -26,7 +26,6 @@ libipsec_la_SOURCES = \ + # version is current:revision:age. + # See: http://www.gnu.org/manual/libtool-1.4.2/html_chapter/libtool_6.html#SEC32 + libipsec_la_LDFLAGS = -version-info 0:1:0 +-libipsec_la_LIBADD = $(LEXLIB) + + noinst_HEADERS = ipsec_strerror.h + +diff --git a/src/racoon/Makefile.am b/src/racoon/Makefile.am +index dbaded9..0662957 100644 +--- a/src/racoon/Makefile.am ++++ b/src/racoon/Makefile.am +@@ -38,7 +38,7 @@ racoon_SOURCES = \ + cftoken.l cfparse.y prsa_tok.l prsa_par.y + EXTRA_racoon_SOURCES = isakmp_xauth.c isakmp_cfg.c isakmp_unity.c throttle.c \ + isakmp_frag.c nattraversal.c security.c $(MISSING_ALGOS) +-racoon_LDADD = $(CRYPTOBJS) $(HYBRID_OBJS) $(NATT_OBJS) $(FRAG_OBJS) $(LEXLIB) \ ++racoon_LDADD = $(CRYPTOBJS) $(HYBRID_OBJS) $(NATT_OBJS) $(FRAG_OBJS) \ + $(SECCTX_OBJS) vmbuf.o sockmisc.o misc.o ../libipsec/libipsec.la + racoon_DEPENDENCIES = \ + $(CRYPTOBJS) $(HYBRID_OBJS) $(NATT_OBJS) $(FRAG_OBJS) $(SECCTX_OBJS) \ +diff --git a/src/racoon/cftoken.l b/src/racoon/cftoken.l +index 490242c..1701922 100644 +--- a/src/racoon/cftoken.l ++++ b/src/racoon/cftoken.l +@@ -106,6 +106,8 @@ static int incstackp = 0; + static int yy_first_time = 1; + %} + ++%option noyywrap ++ + /* common seciton */ + nl \n + ws [ \t]+ +diff --git a/src/setkey/Makefile.am b/src/setkey/Makefile.am +index 746c1f1..389e6cf 100644 +--- a/src/setkey/Makefile.am ++++ b/src/setkey/Makefile.am +@@ -13,7 +13,6 @@ setkey_SOURCES = \ + + setkey_LDFLAGS = ../libipsec/libipsec.la + setkey_DEPENDENCIES = ../libipsec/libipsec.la +-setkey_LDADD = $(LEXLIB) + + noinst_HEADERS = vchar.h extern.h + man8_MANS = setkey.8 +diff --git a/src/setkey/token.l b/src/setkey/token.l +index ad3d843..eb23b76 100644 +--- a/src/setkey/token.l ++++ b/src/setkey/token.l +@@ -88,6 +88,8 @@ + #endif + %} + ++%option noyywrap ++ + /* common section */ + nl \n + ws [ \t]+ +-- +1.9.0 + diff --git a/buildroot/package/ipsec-tools/0004-CVE-2015-4047.patch b/buildroot/package/ipsec-tools/0004-CVE-2015-4047.patch new file mode 100644 index 0000000..f53fe5c --- /dev/null +++ b/buildroot/package/ipsec-tools/0004-CVE-2015-4047.patch @@ -0,0 +1,26 @@ +ipsec-tools: CVE-2015-4047: null pointer dereference crash in racoon + +See: https://bugs.gentoo.org/show_bug.cgi?id=550118 + +Downloaded from +https://gitweb.gentoo.org/repo/gentoo.git/tree/net-vpn/ipsec-tools/files/ipsec-tools-CVE-2015-4047.patch + +See also +https://sources.debian.net/src/ipsec-tools/1:0.8.2%2B20140711-8/debian/patches/bug785778-null-pointer-deref.patch/ + +Signed-off-by: Bernd Kuhls + +--- ./src/racoon/gssapi.c 9 Sep 2006 16:22:09 -0000 1.4 ++++ ./src/racoon/gssapi.c 19 May 2015 15:16:00 -0000 1.6 +@@ -192,6 +192,11 @@ + gss_name_t princ, canon_princ; + OM_uint32 maj_stat, min_stat; + ++ if (iph1->rmconf == NULL) { ++ plog(LLV_ERROR, LOCATION, NULL, "no remote config\n"); ++ return -1; ++ } ++ + gps = racoon_calloc(1, sizeof (struct gssapi_ph1_state)); + if (gps == NULL) { + plog(LLV_ERROR, LOCATION, NULL, "racoon_calloc failed\n"); diff --git a/buildroot/package/ipsec-tools/Config.in b/buildroot/package/ipsec-tools/Config.in new file mode 100644 index 0000000..1635675 --- /dev/null +++ b/buildroot/package/ipsec-tools/Config.in @@ -0,0 +1,75 @@ +config BR2_PACKAGE_IPSEC_TOOLS + bool "ipsec-tools" + depends on BR2_USE_MMU # fork() + depends on !BR2_TOOLCHAIN_USES_MUSL # Use __P() macro all over the tree + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_FLEX + help + This package is required to support IPSec for Linux 2.6+ + + http://ipsec-tools.sourceforge.net/ + +if BR2_PACKAGE_IPSEC_TOOLS + +config BR2_PACKAGE_IPSEC_TOOLS_ADMINPORT + bool "Enable racoonctl(8)" + default y + help + Lets racoon to listen to racoon admin port, which is to + be contacted by racoonctl(8). + +config BR2_PACKAGE_IPSEC_TOOLS_NATT + bool "Enable NAT-Traversal" + help + This needs kernel support, which is available on Linux. On + NetBSD, NAT-Traversal kernel support has not been integrated + yet, you can get it from here: + + http://ipsec-tools.sourceforge.net/netbsd_nat-t.diff If you + + live in a country where software patents are legal, using + NAT-Traversal might infringe a patent. + +config BR2_PACKAGE_IPSEC_TOOLS_FRAG + bool "Enable IKE fragmentation" + help + Enable IKE fragmentation, which is a workaround for + broken routers that drop fragmented packets + +config BR2_PACKAGE_IPSEC_TOOLS_DPD + bool "Enable DPD (Dead Peer Detection)" + help + Enable dead peer detection support + +config BR2_PACKAGE_IPSEC_TOOLS_STATS + bool "Enable statistics logging function" + default y + +config BR2_PACKAGE_IPSEC_TOOLS_READLINE + bool "Enable readline input support" + select BR2_PACKAGE_READLINE + +config BR2_PACKAGE_IPSEC_TOOLS_HYBRID + bool "Enable hybrid, both mode-cfg and xauth support" + help + Hybrid mode is required for successful interoperability + (e.g. Cisco VPN Client). + +choice + prompt "Security context" + default BR2_PACKAGE_IPSEC_SECCTX_DISABLE + help + Selects whether or not to enable security context support. + +config BR2_PACKAGE_IPSEC_SECCTX_DISABLE + bool "Disable security context support" + +config BR2_PACKAGE_IPSEC_SECCTX_ENABLE + bool "Enable SELinux security context support" + +config BR2_PACKAGE_IPSEC_SECCTX_KERNEL + bool "Enable kernel security context" + +endchoice + +endif diff --git a/buildroot/package/ipsec-tools/ipsec-tools.hash b/buildroot/package/ipsec-tools/ipsec-tools.hash new file mode 100644 index 0000000..b12bea9 --- /dev/null +++ b/buildroot/package/ipsec-tools/ipsec-tools.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/ipsec-tools/files/ipsec-tools/0.8.2/ +md5 d53ec14a0a3ece64e09e5e34b3350b41 ipsec-tools-0.8.2.tar.bz2 +sha1 7d92cae9fde59fb4f125636698c43b0a3df3d0f0 ipsec-tools-0.8.2.tar.bz2 diff --git a/buildroot/package/ipsec-tools/ipsec-tools.mk b/buildroot/package/ipsec-tools/ipsec-tools.mk new file mode 100644 index 0000000..c0b180d --- /dev/null +++ b/buildroot/package/ipsec-tools/ipsec-tools.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# ipsec-tools +# +################################################################################ + +IPSEC_TOOLS_VERSION = 0.8.2 +IPSEC_TOOLS_SOURCE = ipsec-tools-$(IPSEC_TOOLS_VERSION).tar.bz2 +IPSEC_TOOLS_SITE = http://sourceforge.net/projects/ipsec-tools/files/ipsec-tools/$(IPSEC_TOOLS_VERSION) +IPSEC_TOOLS_INSTALL_STAGING = YES +IPSEC_TOOLS_MAKE = $(MAKE1) +IPSEC_TOOLS_DEPENDENCIES = openssl flex host-flex +# we patch configure.ac +IPSEC_TOOLS_AUTORECONF = YES + +# configure hardcodes -Werror, so override CFLAGS on make invocation +IPSEC_TOOLS_MAKE_OPTS = CFLAGS='$(TARGET_CFLAGS)' + +# openssl uses zlib, so we need to explicitly link with it when static +ifeq ($(BR2_STATIC_LIBS),y) +IPSEC_TOOLS_CONF_ENV += LIBS=-lz +endif + +IPSEC_TOOLS_CONF_OPTS = \ + --without-libpam \ + --disable-gssapi \ + --with-kernel-headers=$(STAGING_DIR)/usr/include + +ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_ADMINPORT),y) +IPSEC_TOOLS_CONF_OPTS += --enable-adminport +else +IPSEC_TOOLS_CONF_OPTS += --disable-adminport +endif + +ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_NATT),y) +IPSEC_TOOLS_CONF_OPTS += --enable-natt +else +IPSEC_TOOLS_CONF_OPTS += --disable-natt +endif + +ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_FRAG),y) +IPSEC_TOOLS_CONF_OPTS += --enable-frag +else +IPSEC_TOOLS_CONF_OPTS += --disable-frag +endif + +ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_DPD),y) +IPSEC_TOOLS_CONF_OPTS += --enable-dpd +else +IPSEC_TOOLS_CONF_OPTS += --disable-dpd +endif + +ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_STATS),y) +IPSEC_TOOLS_CONF_OPTS += --enable-stats +else +IPSEC_TOOLS_CONF_OPTS += --disable-stats +endif + +ifneq ($(BR2_PACKAGE_IPSEC_TOOLS_READLINE),y) +IPSEC_TOOLS_CONF_OPTS += --without-readline +else +IPSEC_TOOLS_DEPENDENCIES += readline +endif + +ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_HYBRID),y) +IPSEC_TOOLS_CONF_OPTS += --enable-hybrid +else +IPSEC_TOOLS_CONF_OPTS += --disable-hybrid +endif + +ifeq ($(BR2_PACKAGE_IPSEC_SECCTX_DISABLE),y) +IPSEC_TOOLS_CONF_OPTS += --enable-security-context=no +endif +ifeq ($(BR2_PACKAGE_IPSEC_SECCTX_ENABLE),y) +IPSEC_TOOLS_CONF_OPTS += --enable-security-context=yes +endif +ifeq ($(BR2_PACKAGE_IPSEC_SECCTX_KERNEL),y) +IPSEC_TOOLS_CONF_OPTS += --enable-security-context=kernel +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ipset/0001-Replace-the-last-reference-to-u_int8_t-with-uint8_t.patch b/buildroot/package/ipset/0001-Replace-the-last-reference-to-u_int8_t-with-uint8_t.patch new file mode 100644 index 0000000..84863e6 --- /dev/null +++ b/buildroot/package/ipset/0001-Replace-the-last-reference-to-u_int8_t-with-uint8_t.patch @@ -0,0 +1,28 @@ +From a4212bf911026740afc7fce98d9100e2ef5dcea0 Mon Sep 17 00:00:00 2001 +From: Jozsef Kadlecsik +Date: Tue, 26 Sep 2017 07:00:13 +0200 +Subject: [PATCH] Replace the last reference to u_int8_t with uint8_t. + +Signed-off-by: Baruch Siach +--- +Upstream status: commit a4212bf911026740 + + src/ipset.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/ipset.c b/src/ipset.c +index 79f56b869ea7..df0778a92d8b 100644 +--- a/src/ipset.c ++++ b/src/ipset.c +@@ -282,7 +282,7 @@ call_parser(int *argc, char *argv[], const struct ipset_type *type, + const struct ipset_arg *arg; + const char *optstr; + const struct ipset_type *t = type; +- u_int8_t revision = type->revision; ++ uint8_t revision = type->revision; + int ret = 0, i = 1; + + /* Currently CREATE and ADT may have got additional arguments */ +-- +2.14.2 + diff --git a/buildroot/package/ipset/Config.in b/buildroot/package/ipset/Config.in new file mode 100644 index 0000000..6951413 --- /dev/null +++ b/buildroot/package/ipset/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_IPSET + bool "ipset" + select BR2_PACKAGE_LIBMNL + help + Utility to manage IP sets in the linux kernel. + Requires a patched kernel or version >=2.6.39. + + http://ipset.netfilter.org/ diff --git a/buildroot/package/ipset/ipset.hash b/buildroot/package/ipset/ipset.hash new file mode 100644 index 0000000..dcd709e --- /dev/null +++ b/buildroot/package/ipset/ipset.hash @@ -0,0 +1,6 @@ +# From http://ftp.netfilter.org/pub/ipset/ipset-6.34.tar.bz2.md5sum.txt +md5 51bd03f976a1501fd45e1d71a1e2e6bf ipset-6.34.tar.bz2 +# Calculated based on the hash above +sha256 d70e831b670b7aa25dde81fd994d3a7ce0c0e801559a557105576df66cd8d680 ipset-6.34.tar.bz2 +# Locally calculated +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/buildroot/package/ipset/ipset.mk b/buildroot/package/ipset/ipset.mk new file mode 100644 index 0000000..d729956 --- /dev/null +++ b/buildroot/package/ipset/ipset.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# ipset +# +################################################################################ + +IPSET_VERSION = 6.34 +IPSET_SOURCE = ipset-$(IPSET_VERSION).tar.bz2 +IPSET_SITE = http://ipset.netfilter.org +IPSET_DEPENDENCIES = libmnl host-pkgconf +IPSET_CONF_OPTS = --with-kmod=no +IPSET_LICENSE = GPL-2.0 +IPSET_LICENSE_FILES = COPYING +IPSET_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/iptables/0001-utils-nfsynproxy-fix-build-with-musl-libc.patch b/buildroot/package/iptables/0001-utils-nfsynproxy-fix-build-with-musl-libc.patch new file mode 100644 index 0000000..1f86ad1 --- /dev/null +++ b/buildroot/package/iptables/0001-utils-nfsynproxy-fix-build-with-musl-libc.patch @@ -0,0 +1,44 @@ +From 06e0312d0bfd1f0b9e7c23ab654f18524d49e86b Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 2 Mar 2017 09:20:48 +0200 +Subject: [PATCH] utils: nfsynproxy: fix build with musl libc + +The musl libc exposes some struct tcphdr field only when _GNU_SOURCE is +defined. Fix the following build failure: + +nfsynproxy.c: In function ‘parse_packet’: +nfsynproxy.c:34:9: error: ‘const struct tcphdr’ has no member named ‘syn’ + if (!th->syn || !th->ack) + ^ +nfsynproxy.c:34:21: error: ‘const struct tcphdr’ has no member named ‘ack’ + if (!th->syn || !th->ack) + ^ +nfsynproxy.c:42:8: error: ‘const struct tcphdr’ has no member named ‘res2’ + if (th->res2 == 0x1) + ^ +nfsynproxy.c:45:13: error: ‘const struct tcphdr’ has no member named ‘doff’ + length = th->doff * 4 - sizeof(*th); + ^ + +Signed-off-by: Baruch Siach +--- +Upstream status: pending (http://patchwork.ozlabs.org/patch/734503/) + + utils/nfsynproxy.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/utils/nfsynproxy.c b/utils/nfsynproxy.c +index baedc92c5d9f..bf5c416340f1 100644 +--- a/utils/nfsynproxy.c ++++ b/utils/nfsynproxy.c +@@ -6,6 +6,7 @@ + * published by the Free Software Foundation. + */ + ++#define _GNU_SOURCE + #include + #include + #include +-- +2.11.0 + diff --git a/buildroot/package/iptables/Config.in b/buildroot/package/iptables/Config.in new file mode 100644 index 0000000..e6b1260 --- /dev/null +++ b/buildroot/package/iptables/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_IPTABLES + bool "iptables" + help + Linux kernel firewall, NAT, and packet mangling tools. + + http://www.netfilter.org/projects/iptables/index.html + +if BR2_PACKAGE_IPTABLES + +config BR2_PACKAGE_IPTABLES_BPF_NFSYNPROXY + bool "bpfc and nfsynproxy" + select BR2_PACKAGE_LIBPCAP + help + Build bpf compiler and nfsynproxy configuration tool. + +config BR2_PACKAGE_IPTABLES_NFTABLES + bool "nftables compat" + # uses dlfcn + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNFTNL + help + Build nftables compat utilities. + +comment "nftables compat needs a toolchain w/ wchar, dynamic library, headers >= 3.12" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \ + !BR2_USE_WCHAR || BR2_STATIC_LIBS + +endif diff --git a/buildroot/package/iptables/iptables.hash b/buildroot/package/iptables/iptables.hash new file mode 100644 index 0000000..b673c8a --- /dev/null +++ b/buildroot/package/iptables/iptables.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/iptables/iptables-1.6.1.tar.bz2.{md5sum,sha1sum} +md5 ab38a33806b6182c6f53d6afb4619add iptables-1.6.1.tar.bz2 +sha1 b2592490ca7a6c2cd0f069e167a4337c86acdf91 iptables-1.6.1.tar.bz2 diff --git a/buildroot/package/iptables/iptables.mk b/buildroot/package/iptables/iptables.mk new file mode 100644 index 0000000..44cfde2 --- /dev/null +++ b/buildroot/package/iptables/iptables.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# iptables +# +################################################################################ + +IPTABLES_VERSION = 1.6.1 +IPTABLES_SOURCE = iptables-$(IPTABLES_VERSION).tar.bz2 +IPTABLES_SITE = http://ftp.netfilter.org/pub/iptables +IPTABLES_INSTALL_STAGING = YES +IPTABLES_DEPENDENCIES = host-pkgconf \ + $(if $(BR2_PACKAGE_LIBNETFILTER_CONNTRACK),libnetfilter_conntrack) +IPTABLES_LICENSE = GPL-2.0 +IPTABLES_LICENSE_FILES = COPYING +# Building static causes ugly warnings on some plugins +IPTABLES_CONF_OPTS = --libexecdir=/usr/lib --with-kernel=$(STAGING_DIR)/usr \ + $(if $(BR2_STATIC_LIBS),,--disable-static) + +# For connlabel match +ifeq ($(BR2_PACKAGE_LIBNETFILTER_CONNTRACK),y) +IPTABLES_DEPENDENCIES += libnetfilter_conntrack +endif + +# For nfnl_osf +ifeq ($(BR2_PACKAGE_LIBNFNETLINK),y) +IPTABLES_DEPENDENCIES += libnfnetlink +endif + +# For iptables-compat tools +ifeq ($(BR2_PACKAGE_IPTABLES_NFTABLES),y) +IPTABLES_CONF_OPTS += --enable-nftables +IPTABLES_DEPENDENCIES += host-bison host-flex libmnl libnftnl +else +IPTABLES_CONF_OPTS += --disable-nftables +endif + +# bpf compiler support and nfsynproxy tool +ifeq ($(BR2_PACKAGE_IPTABLES_BPF_NFSYNPROXY),y) +# libpcap is tricky for static-only builds and needs help +ifeq ($(BR2_STATIC_LIBS),y) +IPTABLES_LIBS_FOR_STATIC_LINK += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` +IPTABLES_CONF_OPTS += LIBS="$(IPTABLES_LIBS_FOR_STATIC_LINK)" +endif +IPTABLES_CONF_OPTS += --enable-bpf-compiler --enable-nfsynproxy +IPTABLES_DEPENDENCIES += libpcap +else +IPTABLES_CONF_OPTS += --disable-bpf-compiler --disable-nfsynproxy +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/iptraf-ng/Config.in b/buildroot/package/iptraf-ng/Config.in new file mode 100644 index 0000000..5c3b484 --- /dev/null +++ b/buildroot/package/iptraf-ng/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_IPTRAF_NG + bool "iptraf-ng" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + IPTraf-ng is a ncurses-based network monitoring utility. It + gathers data like TCP connection packet and byte counts, + interface statistics and activity indicators. + + https://fedorahosted.org/iptraf-ng/ + + IPTraf-ng is a fork of original IPTraf v3.0.0 + (http://iptraf.seul.org). diff --git a/buildroot/package/iptraf-ng/iptraf-ng.hash b/buildroot/package/iptraf-ng/iptraf-ng.hash new file mode 100644 index 0000000..7cb4d1b --- /dev/null +++ b/buildroot/package/iptraf-ng/iptraf-ng.hash @@ -0,0 +1,2 @@ +# From https://fedorahosted.org/releases/i/p/iptraf-ng/iptraf-ng-1.1.4.tar.gz.sum +sha1 a2e51b0dd6b8c80583fc25d055850c96b3d2f544 iptraf-ng-1.1.4.tar.gz diff --git a/buildroot/package/iptraf-ng/iptraf-ng.mk b/buildroot/package/iptraf-ng/iptraf-ng.mk new file mode 100644 index 0000000..ac572b9 --- /dev/null +++ b/buildroot/package/iptraf-ng/iptraf-ng.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# iptraf-ng +# +################################################################################ + +IPTRAF_NG_VERSION = 1.1.4 +IPTRAF_NG_SITE = https://fedorahosted.org/releases/i/p/iptraf-ng +IPTRAF_NG_LICENSE = GPL-2.0+ +IPTRAF_NG_LICENSE_FILES = LICENSE +IPTRAF_NG_DEPENDENCIES = ncurses + +IPTRAF_NG_MAKE_ENV = \ + NCURSES_LDFLAGS="-lpanel -lncurses" + +IPTRAF_NG_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +$(eval $(autotools-package)) diff --git a/buildroot/package/iputils/Config.in b/buildroot/package/iputils/Config.in new file mode 100644 index 0000000..b5d9141 --- /dev/null +++ b/buildroot/package/iputils/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_IPUTILS + bool "iputils" + depends on BR2_USE_MMU # fork() + help + This package is set of small useful utilities for Linux + networking. It includes complete versions of ping, traceroute, + etc. + + https://github.com/iputils/iputils diff --git a/buildroot/package/iputils/iputils.hash b/buildroot/package/iputils/iputils.hash new file mode 100644 index 0000000..a19348a --- /dev/null +++ b/buildroot/package/iputils/iputils.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f813092f03d17294fd23544b129b95cdb87fe19f7970a51908a6b88509acad8a iputils-s20161105.tar.gz diff --git a/buildroot/package/iputils/iputils.mk b/buildroot/package/iputils/iputils.mk new file mode 100644 index 0000000..13e3389 --- /dev/null +++ b/buildroot/package/iputils/iputils.mk @@ -0,0 +1,77 @@ +################################################################################ +# +# iputils +# +################################################################################ + +# The original upstream was forked to the github repository in 2014 to +# pull fixes from other distribution and centralize the changes after +# the upstream seemed to have gone dormant. The fork contains the +# latest changes including musl support, removing a libsysfs dependency +# and IPv6 updates. +# http://www.spinics.net/lists/netdev/msg279881.html + +IPUTILS_VERSION = s20161105 +IPUTILS_SITE = $(call github,iputils,iputils,$(IPUTILS_VERSION)) +IPUTILS_LICENSE = GPL-2.0+, BSD-3-Clause, BSD-4-Clause +# Only includes a license file for BSD +IPUTILS_LICENSE_FILES = ninfod/COPYING + +# Build after busybox so target ends up with this package's full +# versions of the applications instead of busybox applets. +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +IPUTILS_DEPENDENCIES += busybox +endif + +IPUTILS_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) USE_SYSFS=no USE_IDN=no\ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +IPUTILS_MAKE_OPTS += USE_CAP=yes +IPUTILS_DEPENDENCIES += libcap +else +IPUTILS_MAKE_OPTS += USE_CAP=no +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +IPUTILS_MAKE_OPTS += USE_GCRYPT=yes +IPUTILS_DEPENDENCIES += libgcrypt +else +IPUTILS_MAKE_OPTS += USE_GCRYPT=no +endif + +ifeq ($(BR2_PACKAGE_NETTLE),y) +IPUTILS_MAKE_OPTS += USE_NETTLE=yes +IPUTILS_DEPENDENCIES += nettle +else +IPUTILS_MAKE_OPTS += USE_NETTLE=no +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +IPUTILS_MAKE_OPTS += USE_CRYPTO=yes +IPUTILS_DEPENDENCIES += openssl +else +IPUTILS_MAKE_OPTS += USE_CRYPTO=no +endif + +define IPUTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(IPUTILS_MAKE_OPTS) +endef + +define IPUTILS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/arping $(TARGET_DIR)/sbin/arping + $(INSTALL) -D -m 755 $(@D)/clockdiff $(TARGET_DIR)/bin/clockdiff + $(INSTALL) -D -m 755 $(@D)/ping $(TARGET_DIR)/bin/ping + $(INSTALL) -D -m 755 $(@D)/rarpd $(TARGET_DIR)/sbin/rarpd + $(INSTALL) -D -m 755 $(@D)/rdisc $(TARGET_DIR)/sbin/rdisc + $(INSTALL) -D -m 755 $(@D)/tftpd $(TARGET_DIR)/usr/sbin/in.tftpd + $(INSTALL) -D -m 755 $(@D)/tracepath $(TARGET_DIR)/bin/tracepath + $(INSTALL) -D -m 755 $(@D)/traceroute6 $(TARGET_DIR)/bin/traceroute6 +endef + +define IPUTILS_PERMISSIONS + /bin/ping f 4755 0 0 - - - - - + /bin/traceroute6 f 4755 0 0 - - - - - +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/iqvlinux/Config.in b/buildroot/package/iqvlinux/Config.in new file mode 100644 index 0000000..8959955 --- /dev/null +++ b/buildroot/package/iqvlinux/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_IQVLINUX + bool "iqvlinux" + depends on BR2_LINUX_KERNEL + help + Intel Ethernet Adapter Debug Driver for Linux (iqvlinux), + which supports kernel versions 2.6.x up through 4.0.x. + + This debug driver supports all Intel's networking Tools based + on the SDK version 2.19.36.0 or higher which support Intel + Ethernet chip including e1000, e1000e, i210... + + Note: This driver requires PCI support to be enabled + (i.e. CONFIG_PCI). + + http://sourceforge.net/projects/e1000/files/iqvlinux/ + +comment "iqvlinux needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/iqvlinux/iqvlinux.hash b/buildroot/package/iqvlinux/iqvlinux.hash new file mode 100644 index 0000000..ddf57b7 --- /dev/null +++ b/buildroot/package/iqvlinux/iqvlinux.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/e1000/files/iqvlinux/1.1.5.3/ +sha1 bd94416e4364015dbbd78a22e51080bf7ea81fac iqvlinux.tar.gz +md5 fb6a2a4dc122d39070fcb06985c97a05 iqvlinux.tar.gz +# locally computed +sha256 8cb19f3bfe040100a13bb2d05cb2b54f2b259e55cef23f8cc5aa6f2f31e98bec iqvlinux.tar.gz diff --git a/buildroot/package/iqvlinux/iqvlinux.mk b/buildroot/package/iqvlinux/iqvlinux.mk new file mode 100644 index 0000000..165c7c4 --- /dev/null +++ b/buildroot/package/iqvlinux/iqvlinux.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# iqvlinux +# +################################################################################ + +IQVLINUX_VERSION = 1.1.5.3 +IQVLINUX_SITE = http://sourceforge.net/projects/e1000/files/iqvlinux/$(IQVLINUX_VERSION) +IQVLINUX_SOURCE = iqvlinux.tar.gz + +IQVLINUX_LICENSE = GPL-2.0, BSD-3-Clause +IQVLINUX_LICENSE_FILES = \ + COPYING src/linux/driver/files.txt \ + inc/linux/files.txt inc/files.txt + +IQVLINUX_MODULE_MAKE_OPTS = NALDIR=$(@D) KSRC=$(LINUX_DIR) CC=$(TARGET_CC) + +IQVLINUX_MODULE_SUBDIRS = src/linux/driver + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/irda-utils/0001-daemon.patch b/buildroot/package/irda-utils/0001-daemon.patch new file mode 100644 index 0000000..f6034a7 --- /dev/null +++ b/buildroot/package/irda-utils/0001-daemon.patch @@ -0,0 +1,34 @@ +written by Mike Frysinger + +https://sourceforge.net/tracker/?func=detail&aid=3132053&group_id=5616&atid=305616 + +Rather than using the fork function (which doesnt work on nommu +systems), simply use the daemon() function instead (which does +work). this should work the same before and after for all systems. + +--- a/irattach/util.c ++++ b/irattach/util.c +@@ -156,21 +156,10 @@ + + void fork_now(int ttyfd) + { +- int ret; + int i; + +- if ((ret = fork()) > 0) +- exit(0); +- +- if (ret == -1) +- syslog(LOG_INFO, "forking: %m"); +- if (setsid() < 0) +- syslog(LOG_INFO, "detaching from tty: %m"); +- +- if ((ret = fork()) > 0) { +- /* cleanup_files = 0; */ +- exit(0); +- } ++ if (daemon(1, 1)) ++ syslog(LOG_INFO, "daemon: %m"); + + /* Close all open inherited files! Except for ttyfd! */ + for (i = 0; i < 64; i++) diff --git a/buildroot/package/irda-utils/0002-nommu.patch b/buildroot/package/irda-utils/0002-nommu.patch new file mode 100644 index 0000000..bc76bd3 --- /dev/null +++ b/buildroot/package/irda-utils/0002-nommu.patch @@ -0,0 +1,24 @@ +written by Mike Frysinger + +https://sourceforge.net/tracker/?func=detail&aid=3132056&group_id=5616&atid=305616 + +nommu systems cannot fork() as the hardware cannot support +it. irattach uses it as a minor optimization, but it isnt +necessary for correct functioning of the utility. so add a +NO_FORK define so we nommu peeps can do CFLAGS="... -DNO_FORK=1 +..." and use it in our embedded systems. + +--- a/irattach/irattach.c ++++ b/irattach/irattach.c +@@ -397,7 +397,11 @@ + after_names[i]); + /* Create a new instance for this other + * interface */ ++#ifdef NO_FORK ++ pid = -1; ++#else + pid = fork(); ++#endif + /* If in the child */ + if(!pid) { + /* Get the interface name */ diff --git a/buildroot/package/irda-utils/0003-subdir.patch b/buildroot/package/irda-utils/0003-subdir.patch new file mode 100644 index 0000000..e9b5458 --- /dev/null +++ b/buildroot/package/irda-utils/0003-subdir.patch @@ -0,0 +1,23 @@ +written by Mike Frysinger + +https://sourceforge.net/tracker/?func=detail&aid=3132051&group_id=5616&atid=305616 + +The top level makefile ignores build/install errors in subdirs which makes +packaging a pain to verify. + +--- a/Makefile ++++ b/Makefile +@@ -31,11 +31,11 @@ + CFLAGS= -O2 -W -Wall + + all: +- @-(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done) ++ @(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done) + + + install: +- @-(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done) ++ @(set -e ; for d in $(DIRS) ; do $(MAKE) $(MAKE_OUTPUT) -C $$d $@ ; done) + + + clean: diff --git a/buildroot/package/irda-utils/0004-musl.patch b/buildroot/package/irda-utils/0004-musl.patch new file mode 100644 index 0000000..6cf975b --- /dev/null +++ b/buildroot/package/irda-utils/0004-musl.patch @@ -0,0 +1,31 @@ +Replace use of with . + +kernel headers already provides the +needed definitions, moreover not all libc implementations +provide if_packet.h e.g. musl + +Signed-off-by: Khem Raj +Upstream-Status: Pending +[From http://cgit.openembedded.org/openembedded-core/plain/meta/recipes-connectivity/irda-utils/irda-utils-0.9.18/musl.patch.] +Signed-off-by: Bernd Kuhls + +Index: irda-utils-0.9.18/irdaping/irdaping.c +=================================================================== +--- irda-utils-0.9.18.orig/irdaping/irdaping.c ++++ irda-utils-0.9.18/irdaping/irdaping.c +@@ -33,7 +33,6 @@ + #include + #include + #include /* For struct ifreq */ +-#include /* For struct sockaddr_pkt */ + #include /* For ARPHRD_IRDA */ + #include /* For ETH_P_ALL */ + #include /* For htons */ +@@ -46,6 +45,7 @@ + #include /* __cpu_to_le32 and co. */ + + #include /* For __u8 and co. */ ++#include /* For struct sockaddr_pkt */ + #include + + #ifndef AF_IRDA diff --git a/buildroot/package/irda-utils/Config.in b/buildroot/package/irda-utils/Config.in new file mode 100644 index 0000000..418ab61 --- /dev/null +++ b/buildroot/package/irda-utils/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_IRDA_UTILS + bool "irda-utils" + help + user space utilities which control the IrDA stack + + http://irda.sourceforge.net/ + +if BR2_PACKAGE_IRDA_UTILS + +config BR2_PACKAGE_IRDA_UTILS_IRATTACH + bool "irattach" + +config BR2_PACKAGE_IRDA_UTILS_IRDAPING + bool "irdaping" + +config BR2_PACKAGE_IRDA_UTILS_IRNETD + bool "irnetd" + +endif diff --git a/buildroot/package/irda-utils/irda-utils.hash b/buildroot/package/irda-utils/irda-utils.hash new file mode 100644 index 0000000..6a71c47 --- /dev/null +++ b/buildroot/package/irda-utils/irda-utils.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 61980551e46b2eaa9e17ad31cbc1a638074611fc33bff34163d10c7a67a9fdc6 irda-utils-0.9.18.tar.gz diff --git a/buildroot/package/irda-utils/irda-utils.mk b/buildroot/package/irda-utils/irda-utils.mk new file mode 100644 index 0000000..18a3e58 --- /dev/null +++ b/buildroot/package/irda-utils/irda-utils.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# irda-utils +# +################################################################################ + +IRDA_UTILS_VERSION = 0.9.18 +IRDA_UTILS_SITE = http://downloads.sourceforge.net/project/irda/irda-utils/$(IRDA_UTILS_VERSION) +IRDA_UTILS_LICENSE = GPL-2.0+ +IRDA_UTILS_LICENSE_FILES = man/COPYING + +IRDA_UTILS_CFLAGS = $(TARGET_CFLAGS) -I. +ifeq ($(BR2_USE_MMU),) +IRDA_UTILS_CFLAGS += -DNO_FORK=1 +endif + +define IRDA_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + CC="$(TARGET_CC)" \ + CFLAGS="$(IRDA_UTILS_CFLAGS)" \ + SYS_INCLUDES= \ + DIRS="irattach irdaping irnetd" \ + V=1 -C $(@D) +endef + +IRDA_UTILS_SBINS- = +IRDA_UTILS_SBINS-y = +IRDA_UTILS_SBINS-$(BR2_PACKAGE_IRDA_UTILS_IRATTACH) += irattach +IRDA_UTILS_SBINS-$(BR2_PACKAGE_IRDA_UTILS_IRDAPING) += irdaping +IRDA_UTILS_SBINS-$(BR2_PACKAGE_IRDA_UTILS_IRNETD) += irnetd +IRDA_UTILS_SBINS- += $(IRDA_UTILS_SBINS-y) + +define IRDA_UTILS_INSTALL_TARGET_CMDS + for i in $(IRDA_UTILS_SBINS-y); do \ + $(INSTALL) -m 0755 -D $(@D)/$$i/$$i $(TARGET_DIR)/usr/sbin/$$i || exit 1; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/irqbalance/Config.in b/buildroot/package/irqbalance/Config.in new file mode 100644 index 0000000..6c21497 --- /dev/null +++ b/buildroot/package/irqbalance/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_IRQBALANCE + bool "irqbalance" + help + Irqbalance is a daemon to help balance the cpu load generated + by interrupts across all of a systems cpus. + Irqbalance identifies the highest volume interrupt sources, + and isolates them to a single unique cpu, so that load is + spread as much as possible over an entire processor set, while + minimizing cache hit rates for irq handlers. + + https://github.com/Irqbalance/irqbalance diff --git a/buildroot/package/irqbalance/S13irqbalance b/buildroot/package/irqbalance/S13irqbalance new file mode 100644 index 0000000..b06a337 --- /dev/null +++ b/buildroot/package/irqbalance/S13irqbalance @@ -0,0 +1,34 @@ +#!/bin/sh +# +# Starts irqbalance +# + +EXEC="/usr/sbin/irqbalance" +ARGS="" +PID="/var/run/irqbalance.pid" + +case "$1" in + start) + printf "Starting irqbalance: " + start-stop-daemon -S -q -x $EXEC -- $ARGS + if [ $? != 0 ]; then + echo "FAILED" + exit 1 + else + echo "OK" + fi + pidof irqbalance > $PID + ;; + stop) + printf "Stopping irqbalance: " + start-stop-daemon -K -q -p $PID + echo "OK" + ;; + restart|reload) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/irqbalance/irqbalance.hash b/buildroot/package/irqbalance/irqbalance.hash new file mode 100644 index 0000000..032c491 --- /dev/null +++ b/buildroot/package/irqbalance/irqbalance.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f1b8115948bb9f0bc36b9d7143ee8be751a294bc189d311408e753acc37169c3 irqbalance-v1.0.9.tar.gz diff --git a/buildroot/package/irqbalance/irqbalance.mk b/buildroot/package/irqbalance/irqbalance.mk new file mode 100644 index 0000000..e4e6078 --- /dev/null +++ b/buildroot/package/irqbalance/irqbalance.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# irqbalance +# +################################################################################ + +IRQBALANCE_VERSION = v1.0.9 +IRQBALANCE_SITE = $(call github,irqbalance,irqbalance,$(IRQBALANCE_VERSION)) +IRQBALANCE_LICENSE = GPL-2.0 +IRQBALANCE_LICENSE_FILES = COPYING +IRQBALANCE_DEPENDENCIES = host-pkgconf +# Autoreconf needed because package is distributed without a configure script +IRQBALANCE_AUTORECONF = YES + +# This would be done by the package's autogen.sh script +define IRQBALANCE_PRECONFIGURE + mkdir -p $(@D)/m4 +endef + +IRQBALANCE_PRE_CONFIGURE_HOOKS += IRQBALANCE_PRECONFIGURE + +define IRQBALANCE_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/irqbalance/S13irqbalance \ + $(TARGET_DIR)/etc/init.d/S13irqbalance +endef + +define IRQBALANCE_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/irqbalance/irqbalance.service \ + $(TARGET_DIR)/usr/lib/systemd/system/irqbalance.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/irqbalance.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/irqbalance.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/irqbalance/irqbalance.service b/buildroot/package/irqbalance/irqbalance.service new file mode 100644 index 0000000..9ba3be4 --- /dev/null +++ b/buildroot/package/irqbalance/irqbalance.service @@ -0,0 +1,9 @@ +[Unit] +Description=irqbalance daemon +After=syslog.target + +[Service] +ExecStart=/usr/sbin/irqbalance --foreground + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/irrlicht/0001-override-CPPFLAGS-CXXFLAGS-and-CFLAGS-in-Makefile.patch b/buildroot/package/irrlicht/0001-override-CPPFLAGS-CXXFLAGS-and-CFLAGS-in-Makefile.patch new file mode 100644 index 0000000..d6e4b63 --- /dev/null +++ b/buildroot/package/irrlicht/0001-override-CPPFLAGS-CXXFLAGS-and-CFLAGS-in-Makefile.patch @@ -0,0 +1,44 @@ +From 5c5e6d0f469c8b4384bbe5d6c8f78069c182daf0 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 9 Apr 2017 19:56:55 +0200 +Subject: [PATCH] override CPPFLAGS, CXXFLAGS and CFLAGS in Makefile + +When CPPFLAGS is passed on the command line, include paths for the +bundled libraries are lost. Since the hand written Makefile want +to use them unconditionally, we need to use the key word "override" +before CPPFLAGS. + +Do the same for CXXFLAGS and CFLAGS otherwise -fPIC is lost. + +Signed-off-by: Romain Naour +--- + source/Irrlicht/Makefile | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/source/Irrlicht/Makefile b/source/Irrlicht/Makefile +index 0712b07..b334e9c 100644 +--- a/source/Irrlicht/Makefile ++++ b/source/Irrlicht/Makefile +@@ -62,7 +62,7 @@ LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \ + ############### + #Compiler flags + CXXINCS = -I../../include -Izlib -Ijpeglib -Ilibpng +-CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1 ++override CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1 + CXXFLAGS += -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing + ifndef NDEBUG + CXXFLAGS += -g -D_DEBUG +@@ -74,8 +74,8 @@ CXXFLAGS += -pg + endif + CFLAGS := -O3 -fexpensive-optimizations -DPNG_THREAD_UNSAFE_OK -DPNG_NO_MMX_CODE -DPNG_NO_MNG_FEATURES + +-sharedlib sharedlib_osx: CXXFLAGS += -fPIC +-sharedlib sharedlib_osx: CFLAGS += -fPIC ++sharedlib sharedlib_osx: override CXXFLAGS += -fPIC ++sharedlib sharedlib_osx: override CFLAGS += -fPIC + + #multilib handling + ifeq ($(HOSTTYPE), x86_64) +-- +2.9.3 + diff --git a/buildroot/package/irrlicht/0002-remove-sys-sysctl.h.patch b/buildroot/package/irrlicht/0002-remove-sys-sysctl.h.patch new file mode 100644 index 0000000..d9142a9 --- /dev/null +++ b/buildroot/package/irrlicht/0002-remove-sys-sysctl.h.patch @@ -0,0 +1,38 @@ +From 5382142d37730f6758753b758c91e257ffd5892c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 9 Apr 2017 22:20:19 +0200 +Subject: [PATCH] remove sys/sysctl.h + +With musl irrlicht doesn't build due to missing sys/sysctl.h + +fatal error: sys/sysctl.h: No such file or directory + +From [1] +"sysctl does not work, and NEVER worked. using it is bogus. +it was a bogus experimental syscall that was deprecated before +it was ever used (basically, a broken binary version of +/proc/sys, without any stability between kernel versions for +what the binary constants meant)." + +[1] https://devsonacid.wordpress.com/tag/musl/ + +Signed-off-by: Romain Naour +--- + source/Irrlicht/COSOperator.cpp | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/source/Irrlicht/COSOperator.cpp b/source/Irrlicht/COSOperator.cpp +index 0899d1d..ccf5ef5 100644 +--- a/source/Irrlicht/COSOperator.cpp ++++ b/source/Irrlicht/COSOperator.cpp +@@ -13,7 +13,6 @@ + #include + #ifndef _IRR_SOLARIS_PLATFORM_ + #include +-#include + #endif + #endif + +-- +2.9.3 + diff --git a/buildroot/package/irrlicht/Config.in b/buildroot/package/irrlicht/Config.in new file mode 100644 index 0000000..edd182b --- /dev/null +++ b/buildroot/package/irrlicht/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_IRRLICHT + bool "irrlicht" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_HAS_LIBGL # use GLX + select BR2_PACKAGE_XLIB_LIBXXF86VM # libXxf86vm + help + An open source high performance realtime 3D graphics engine. + + http://irrlicht.sourceforge.net/ + +comment "irrlicht needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +comment "irrlicht needs X11 and an OpenGL provider" + depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/irrlicht/irrlicht.hash b/buildroot/package/irrlicht/irrlicht.hash new file mode 100644 index 0000000..489790e --- /dev/null +++ b/buildroot/package/irrlicht/irrlicht.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/irrlicht/files/Irrlicht%20SDK/1.8/1.8.4 +md5 9401cfff801395010b0912211f3cbb4f irrlicht-1.8.4.zip +sha1 38bf0223fe868d243d6a39d0dc191c8df6e03b3b irrlicht-1.8.4.zip +# locally calculated +sha256 f42b280bc608e545b820206fe2a999c55f290de5c7509a02bdbeeccc1bf9e433 irrlicht-1.8.4.zip diff --git a/buildroot/package/irrlicht/irrlicht.mk b/buildroot/package/irrlicht/irrlicht.mk new file mode 100644 index 0000000..ccd1045 --- /dev/null +++ b/buildroot/package/irrlicht/irrlicht.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# irrlicht +# +################################################################################ + +IRRLICHT_VERSION_MAJOR = 1.8 +IRRLICHT_VERSION = $(IRRLICHT_VERSION_MAJOR).4 +IRRLICHT_SOURCE = irrlicht-$(IRRLICHT_VERSION).zip +IRRLICHT_SITE = https://downloads.sourceforge.net/project/irrlicht/Irrlicht%20SDK/$(IRRLICHT_VERSION_MAJOR)/$(IRRLICHT_VERSION) +IRRLICHT_INSTALL_STAGING = YES + +# Bundled libraries: bzip2, libaesGladman, libpng, lzma, zlib, +# The handcrafted Makefile can only use bundled libraries. +IRRLICHT_LICENSE = Zlib (irrlicht), BSD-3-Clause (libaesGladman), bzip2-1.0.5 (bzip2), IJG (libjpeg), Libpng (libpng) +IRRLICHT_LICENSE_FILES = \ + doc/aesGladman.txt \ + doc/bzip2-license.txt \ + doc/irrlicht-license.txt \ + doc/jpglib-license.txt \ + doc/libpng-license.txt + +IRRLICHT_SUBDIR = source/Irrlicht + +IRRLICHT_DEPENDENCIES = libgl xlib_libXxf86vm + +define IRRLICHT_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/$(IRRLICHT_SOURCE) + mv $(@D)/irrlicht-$(IRRLICHT_VERSION)/* $(@D) + $(RM) -r $(@D)/irrlicht-$(IRRLICHT_VERSION) +endef + +IRRLICHT_CONF_OPTS = $(TARGET_CONFIGURE_OPTS) + +# Build a static library OR a shared library, otherwise we need to compile with -fPIC +# "relocation R_X86_64_32S can not be used when making a shared object; recompile with -fPIC" +ifeq ($(BR2_STATIC_LIBS),) +IRRLICHT_CONF_OPTS += sharedlib +endif + +define IRRLICHT_BUILD_CMDS + $(TARGET_MAKE_ENV) + $(MAKE) -C $(@D)/$(IRRLICHT_SUBDIR) $(IRRLICHT_CONF_OPTS) +endef + +define IRRLICHT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + INSTALL_DIR=$(STAGING_DIR)/usr/lib \ + -C $(@D)/$(IRRLICHT_SUBDIR) install +endef + +define IRRLICHT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + INSTALL_DIR=$(TARGET_DIR)/usr/lib \ + -C $(@D)/$(IRRLICHT_SUBDIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/irssi/Config.in b/buildroot/package/irssi/Config.in new file mode 100644 index 0000000..6361cff --- /dev/null +++ b/buildroot/package/irssi/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_IRSSI + bool "irssi" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + help + Irssi is a terminal based IRC client for UNIX systems. + + http://irssi.org/ + +if BR2_PACKAGE_IRSSI + +config BR2_PACKAGE_IRSSI_PROXY + bool "proxy module" + help + Build the irssi proxy module, which allows an IRC connection + to be shared among multiple clients. + +config BR2_PACKAGE_IRSSI_TRUE_COLOR + bool "true color support" + help + Build with true color support in terminal. + +endif + +comment "irssi needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/irssi/irssi.hash b/buildroot/package/irssi/irssi.hash new file mode 100644 index 0000000..0f29813 --- /dev/null +++ b/buildroot/package/irssi/irssi.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 1b386ca026aa1875c380fd00ef1d24b71fb87cdae39ef5349ecca16c4567feac irssi-1.0.7.tar.xz +# Locally calculated +sha256 a1a27cb2ecee8d5378fbb3562f577104a445d6d66fee89286e16758305e63e2b COPYING diff --git a/buildroot/package/irssi/irssi.mk b/buildroot/package/irssi/irssi.mk new file mode 100644 index 0000000..611365f --- /dev/null +++ b/buildroot/package/irssi/irssi.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# irssi +# +################################################################################ + +IRSSI_VERSION = 1.0.7 +IRSSI_SOURCE = irssi-$(IRSSI_VERSION).tar.xz +# Do not use the github helper here. The generated tarball is *NOT* the +# same as the one uploaded by upstream for the release. +IRSSI_SITE = https://github.com/irssi/irssi/releases/download/$(IRSSI_VERSION) +IRSSI_LICENSE = GPL-2.0+ +IRSSI_LICENSE_FILES = COPYING +IRSSI_DEPENDENCIES = host-pkgconf libglib2 ncurses openssl + +IRSSI_CONF_OPTS = \ + --disable-glibtest \ + --without-perl + +ifeq ($(BR2_PACKAGE_IRSSI_PROXY),y) +IRSSI_CONF_OPTS += --with-proxy +# If shared libs are disabled, 'proxy' has to go in the list of built-in +# modules. +ifeq ($(BR2_STATIC_LIBS),y) +IRSSI_CONF_OPTS += --with-modules=proxy +endif +else +IRSSI_CONF_OPTS += --without-proxy +endif # proxy + +ifeq ($(BR2_PACKAGE_IRSSI_TRUE_COLOR),y) +IRSSI_CONF_OPTS += --enable-true-color +else +IRSSI_CONF_OPTS += --disable-true-color +endif + +# Cross-compiling irssi with the perl interpreter enabled doesn't work +# yet. So, remove scripts as they are useless in that case. +define IRSSI_REMOVE_SCRIPTS + rm -rf $(TARGET_DIR)/usr/share/irssi/scripts/ +endef + +IRSSI_POST_INSTALL_TARGET_HOOKS += IRSSI_REMOVE_SCRIPTS + +$(eval $(autotools-package)) diff --git a/buildroot/package/isl/isl.hash b/buildroot/package/isl/isl.hash new file mode 100644 index 0000000..43e5a46 --- /dev/null +++ b/buildroot/package/isl/isl.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 0f35051cc030b87c673ac1f187de40e386a1482a0cfdf2c552dd6031b307ddc4 isl-0.18.tar.xz diff --git a/buildroot/package/isl/isl.mk b/buildroot/package/isl/isl.mk new file mode 100644 index 0000000..b5f01c4 --- /dev/null +++ b/buildroot/package/isl/isl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# isl +# +################################################################################ + +ISL_VERSION = 0.18 +ISL_SOURCE = isl-$(ISL_VERSION).tar.xz +ISL_SITE = http://isl.gforge.inria.fr +ISL_LICENSE = MIT +ISL_LICENSE_FILES = LICENSE +HOST_ISL_DEPENDENCIES = host-gmp + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/iucode-tool/Config.in b/buildroot/package/iucode-tool/Config.in new file mode 100644 index 0000000..d81dabb --- /dev/null +++ b/buildroot/package/iucode-tool/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_IUCODE_TOOL + bool "iucode-tool" + depends on BR2_x86_64 || BR2_i386 + select BR2_PACKAGE_INTEL_MICROCODE + select BR2_PACKAGE_ARGP_STANDALONE \ + if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + Intel processor microcode tool + + https://gitlab.com/iucode-tool diff --git a/buildroot/package/iucode-tool/S00iucode-tool b/buildroot/package/iucode-tool/S00iucode-tool new file mode 100644 index 0000000..0c1e409 --- /dev/null +++ b/buildroot/package/iucode-tool/S00iucode-tool @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Upload microcode into the processor. +# + +microcode_file="/usr/share/misc/intel-microcode.dat" + +case "$1" in + start) + echo "Starting iucode-tool:" + /usr/sbin/iucode_tool -k $microcode_file + echo "done" + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/iucode-tool/iucode-tool.hash b/buildroot/package/iucode-tool/iucode-tool.hash new file mode 100644 index 0000000..1dab8de --- /dev/null +++ b/buildroot/package/iucode-tool/iucode-tool.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 9810daf925b8a9ca244adc4e1916bcab65601c9ebe87e91c2281f78055982971 iucode-tool_2.2.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/iucode-tool/iucode-tool.mk b/buildroot/package/iucode-tool/iucode-tool.mk new file mode 100644 index 0000000..fb746c3 --- /dev/null +++ b/buildroot/package/iucode-tool/iucode-tool.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# iucode-tool +# +################################################################################ + +IUCODE_TOOL_VERSION = 2.2 +IUCODE_TOOL_SOURCE = iucode-tool_$(IUCODE_TOOL_VERSION).tar.xz +IUCODE_TOOL_SITE = https://gitlab.com/iucode-tool/releases/raw/master +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +IUCODE_TOOL_DEPENDENCIES = argp-standalone +endif +IUCODE_TOOL_LICENSE = GPL-2.0+ +IUCODE_TOOL_LICENSE_FILES = COPYING + +define IUCODE_TOOL_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/iucode-tool/S00iucode-tool \ + $(TARGET_DIR)/etc/init.d/S00iucode-tool +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/iw/0001-iw.c-verbosity.patch b/buildroot/package/iw/0001-iw.c-verbosity.patch new file mode 100644 index 0000000..c09f620 --- /dev/null +++ b/buildroot/package/iw/0001-iw.c-verbosity.patch @@ -0,0 +1,22 @@ +Prevent iw to print usage messages when an error occurs + +--- a/iw.c 2016-10-18 07:46:20.000000000 +0200 ++++ b/iw.c 2018-09-04 08:43:47.999434226 +0200 +@@ -571,10 +571,17 @@ + } + + if (err == HANDLER_RET_USAGE) { ++ /* paravirt */ ++#if 0 + if (cmd) + usage_cmd(cmd); + else + usage(0, NULL); ++#endif /* 0 */ ++ if (cmd) ++ fprintf(stderr, "command failed: %s\n", cmd); ++ else ++ fprintf(stderr, "command failed\n"); + } else if (err == HANDLER_RET_DONE) { + err = 0; + } else if (err < 0) diff --git a/buildroot/package/iw/Config.in b/buildroot/package/iw/Config.in new file mode 100644 index 0000000..fd73b20 --- /dev/null +++ b/buildroot/package/iw/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_IW + bool "iw" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + Utility for wireless devices using the mac80211 kernel stack + + http://wireless.kernel.org/en/users/Documentation/iw + +comment "iw needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/iw/iw.hash b/buildroot/package/iw/iw.hash new file mode 100644 index 0000000..414f342 --- /dev/null +++ b/buildroot/package/iw/iw.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/software/network/iw/sha256sums.asc +sha256 324cc805fad52cba2c16b9ab569906889fb645cc962aac4cfda1db85d2de97ce iw-4.9.tar.xz diff --git a/buildroot/package/iw/iw.mk b/buildroot/package/iw/iw.mk new file mode 100644 index 0000000..aa85cbb --- /dev/null +++ b/buildroot/package/iw/iw.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# iw +# +################################################################################ + +IW_VERSION = 4.9 +IW_SOURCE = iw-$(IW_VERSION).tar.xz +IW_SITE = $(BR2_KERNEL_MIRROR)/software/network/iw +IW_LICENSE = ISC +IW_LICENSE_FILES = COPYING +IW_DEPENDENCIES = host-pkgconf libnl +IW_MAKE_OPTS = CC="$(TARGET_CC)" LD="$(TARGET_LD)" LDFLAGS="$(TARGET_LDFLAGS)" +IW_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + PKG_CONFIG="$(HOST_DIR)/bin/pkg-config" \ + GIT_DIR=$(IW_DIR) + +define IW_BUILD_CMDS + $(IW_MAKE_ENV) $(MAKE) $(IW_MAKE_OPTS) -C $(@D) +endef + +define IW_INSTALL_TARGET_CMDS + $(IW_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jack2/0001-Fix-initialization-in-test-iodelay.patch b/buildroot/package/jack2/0001-Fix-initialization-in-test-iodelay.patch new file mode 100644 index 0000000..ee24938 --- /dev/null +++ b/buildroot/package/jack2/0001-Fix-initialization-in-test-iodelay.patch @@ -0,0 +1,65 @@ +From ff1ed2c4524095055140370c1008a2d9cccc5645 Mon Sep 17 00:00:00 2001 +From: Adrian Knoth +Date: Sat, 11 Jun 2016 05:35:07 +0200 +Subject: [PATCH] Fix initialization in test/iodelay.cpp + +jack_latency_range_t is + +struct _jack_latency_range { + jack_nframes_t min; + jack_nframes_t max; +}; + +and jack_nframes_t is + +typedef uint32_t jack_nframes_t; + +so it's unsigned. Initialising it with -1 is invalid (at least in C++14). We cannot use {0, 0}, because latency_cb has + + jack_latency_range_t range; + range.min = range.max = 0; + if ((range.min != capture_latency.min) || (range.max != + capture_latency.max)) { + capture_latency = range; + } + +so we must not have {0, 0}, otherwise the condition would never be true. + +Using UINT32_MAX should be equivalent to the previous -1. + +[Upstream commit https://github.com/jackaudio/jack2/commit/ff1ed2c4524095055140370c1008a2d9cccc5645] +Signed-off-by: Thomas Petazzoni +--- + tests/iodelay.cpp | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/tests/iodelay.cpp b/tests/iodelay.cpp +index e1ba63fa..1ef470fd 100644 +--- a/tests/iodelay.cpp ++++ b/tests/iodelay.cpp +@@ -20,6 +20,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -167,8 +168,8 @@ static jack_client_t *jack_handle; + static jack_port_t *jack_capt; + static jack_port_t *jack_play; + +-jack_latency_range_t capture_latency = {-1, -1}; +-jack_latency_range_t playback_latency = {-1, -1}; ++jack_latency_range_t capture_latency = {UINT32_MAX, UINT32_MAX}; ++jack_latency_range_t playback_latency = {UINT32_MAX, UINT32_MAX}; + + void + latency_cb (jack_latency_callback_mode_t mode, void *arg) +@@ -266,4 +267,4 @@ int main (int ac, char *av []) + return 0; + } + +-// -------------------------------------------------------------------------------- +\ No newline at end of file ++// -------------------------------------------------------------------------------- diff --git a/buildroot/package/jack2/0002-Improve-check-for-ucontext.patch b/buildroot/package/jack2/0002-Improve-check-for-ucontext.patch new file mode 100644 index 0000000..b8aa1da --- /dev/null +++ b/buildroot/package/jack2/0002-Improve-check-for-ucontext.patch @@ -0,0 +1,84 @@ +From ad79670d6d1e7ef2aad6935715921e5317cbe618 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 23 May 2016 22:28:12 +0200 +Subject: [PATCH] Improve check for ucontext + +The ucontext functionality is not available on all CPUs with all C +libraries. Instead of making just assumptions based on the CPU +architecture, this commit adds the necessary checks in wscript to verify +the availability of the ucontext functionality, before using it in +dbus/sigsegv.c. + +This avoids the long list of architecture exclusions, and make it more +robust when building jack2 for new CPU architectures. + +Signed-off-by: Thomas Petazzoni +--- + dbus/sigsegv.c | 12 ++++++------ + wscript | 16 +++++++++++++++- + 2 files changed, 21 insertions(+), 7 deletions(-) + +diff --git a/dbus/sigsegv.c b/dbus/sigsegv.c +index df2c42c..00a62b5 100644 +--- a/dbus/sigsegv.c ++++ b/dbus/sigsegv.c +@@ -106,20 +106,20 @@ static void signal_segv(int signum, siginfo_t* info, void*ptr) { + jack_error("info.si_errno = %d", info->si_errno); + jack_error("info.si_code = %d (%s)", info->si_code, si_code_str); + jack_error("info.si_addr = %p", info->si_addr); +-#if !defined(__alpha__) && !defined(__ia64__) && !defined(__FreeBSD_kernel__) && !defined(__arm__) && !defined(__hppa__) && !defined(__sh__) && !defined(__aarch64__) ++#if defined(HAVE_UCONTEXT) && defined(HAVE_NGREG) + for(i = 0; i < NGREG; i++) + jack_error("reg[%02d] = 0x" REGFORMAT, i, +-#if defined(__powerpc64__) ++#if defined(HAVE_UCONTEXT_GP_REGS) + ucontext->uc_mcontext.gp_regs[i] +-#elif defined(__powerpc__) ++#elif defined(HAVE_UCONTEXT_UC_REGS) + ucontext->uc_mcontext.uc_regs[i] +-#elif defined(__sparc__) && defined(__arch64__) ++#elif defined(HAVE_UCONTEXT_MC_GREGS) + ucontext->uc_mcontext.mc_gregs[i] +-#else ++#elif defined(HAVE_UCONTEXT_GREGS) + ucontext->uc_mcontext.gregs[i] + #endif + ); +-#endif /* alpha, ia64, kFreeBSD, arm, hppa */ ++#endif /* defined(HAVE_UCONTEXT) && defined(HAVE_NGREG) */ + + #if defined(SIGSEGV_STACK_X86) || defined(SIGSEGV_STACK_IA64) + # if defined(SIGSEGV_STACK_IA64) +diff --git a/wscript b/wscript +index 63ba3aa..34a56fc 100644 +--- a/wscript ++++ b/wscript +@@ -168,10 +168,24 @@ def configure(conf): + + conf.check_cc(header_name='execinfo.h', define_name="HAVE_EXECINFO_H", mandatory=False) + conf.check_cc(header_name='samplerate.h', define_name="HAVE_SAMPLERATE") +- + if conf.is_defined('HAVE_SAMPLERATE'): + conf.env['LIB_SAMPLERATE'] = ['samplerate'] + ++ # test for the availability of ucontext, and how it should be used ++ for t in ("gp_regs", "uc_regs", "mc_gregs", "gregs"): ++ fragment = "#include \n" ++ fragment += "int main() { ucontext_t *ucontext; return (int) ucontext->uc_mcontext.%s[0]; }" % t ++ confvar = "HAVE_UCONTEXT_%s" % t.upper() ++ conf.check_cc(fragment=fragment, define_name=confvar, mandatory=False, ++ msg="Checking for ucontext->uc_mcontext.%s" % t) ++ if conf.is_defined(confvar): ++ conf.define('HAVE_UCONTEXT', 1) ++ ++ fragment = "#include \n" ++ fragment += "int main() { return NGREG; }" ++ conf.check_cc(fragment=fragment, define_name="HAVE_NGREG", mandatory=False, ++ msg="Checking for NGREG") ++ + conf.sub_config('example-clients') + + if conf.check_cfg(package='celt', atleast_version='0.11.0', args='--cflags --libs', mandatory=False): +-- +2.7.4 + diff --git a/buildroot/package/jack2/0003-Make-backtrace-support-depends-on-execinfo.h-existen.patch b/buildroot/package/jack2/0003-Make-backtrace-support-depends-on-execinfo.h-existen.patch new file mode 100644 index 0000000..719c6a8 --- /dev/null +++ b/buildroot/package/jack2/0003-Make-backtrace-support-depends-on-execinfo.h-existen.patch @@ -0,0 +1,67 @@ +From 4b2c73ad056aa327dc3b505410da68cf384317ba Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Mon, 16 May 2016 22:26:05 +0200 +Subject: [PATCH] Make backtrace support depends on execinfo.h existence + +In some C-libraries (like uclibc), backtrace support is optional, so the +execinfo.h file may not exist. + +This change adds the check for execinfo.h header and conditionnaly enable +backtrace support. + +This issue has been triggered by Buildroot farms: + http://autobuild.buildroot.org/results/391/391e71a988250ea66ec4dbee6f60fdce9eaf2766/build-end.log + +Signed-off-by: Samuel Martin +--- + dbus/sigsegv.c | 8 +++++++- + wscript | 1 + + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/dbus/sigsegv.c b/dbus/sigsegv.c +index ee12f91..0b31d89 100644 +--- a/dbus/sigsegv.c ++++ b/dbus/sigsegv.c +@@ -27,7 +27,9 @@ + #include + #include + #include +-#include ++#if defined(HAVE_EXECINFO_H) ++# include ++#endif /* defined(HAVE_EXECINFO_H) */ + #include + #ifndef NO_CPP_DEMANGLE + char * __cxa_demangle(const char * __mangled_name, char * __output_buffer, size_t * __length, int * __status); +@@ -161,12 +163,16 @@ static void signal_segv(int signum, siginfo_t* info, void*ptr) { + bp = (void**)bp[0]; + } + #else ++# if defined(HAVE_EXECINFO_H) + jack_error("Stack trace (non-dedicated):"); + sz = backtrace(bt, 20); + strings = backtrace_symbols(bt, sz); + + for(i = 0; i < sz; ++i) + jack_error("%s", strings[i]); ++# else /* defined(HAVE_EXECINFO_H) */ ++ jack_error("Stack trace not available"); ++# endif /* defined(HAVE_EXECINFO_H) */ + #endif + jack_error("End of stack trace"); + exit (-1); +diff --git a/wscript b/wscript +index aef4bd8..63ba3aa 100644 +--- a/wscript ++++ b/wscript +@@ -166,6 +166,7 @@ def configure(conf): + if conf.env['BUILD_JACKDBUS'] != True: + conf.fatal('jackdbus was explicitly requested but cannot be built') + ++ conf.check_cc(header_name='execinfo.h', define_name="HAVE_EXECINFO_H", mandatory=False) + conf.check_cc(header_name='samplerate.h', define_name="HAVE_SAMPLERATE") + + if conf.is_defined('HAVE_SAMPLERATE'): +-- +2.8.2 + diff --git a/buildroot/package/jack2/0004-tests-define-__STDC_LIMIT_MACROS.patch b/buildroot/package/jack2/0004-tests-define-__STDC_LIMIT_MACROS.patch new file mode 100644 index 0000000..e4990b5 --- /dev/null +++ b/buildroot/package/jack2/0004-tests-define-__STDC_LIMIT_MACROS.patch @@ -0,0 +1,41 @@ +From c971aaab74ca6e7d4ac3a06bd26e7309dfc5da45 Mon Sep 17 00:00:00 2001 +From: Rahul Bedarkar +Date: Mon, 22 Aug 2016 19:04:47 +0530 +Subject: [PATCH] tests: define __STDC_LIMIT_MACROS + +With glibc 2.16, we get following build error when building jack2: + + [193/247] cxx: tests/iodelay.cpp -> build/tests/iodelay.cpp.4.o + ../tests/iodelay.cpp:171:43: error: 'UINT32_MAX' was not declared in this scope + ../tests/iodelay.cpp:171:55: error: 'UINT32_MAX' was not declared in this scope + ../tests/iodelay.cpp:172:44: error: 'UINT32_MAX' was not declared in this scope + ../tests/iodelay.cpp:172:56: error: 'UINT32_MAX' was not declared in this scope + +In glibc 2.17 or older version, Header defines these macros +for C++ only if explicitly requested by defining __STDC_LIMIT_MACROS. + +We can't use since it requires C++11 standard. + +This build issue found by Buildroot autobuilder. +http://autobuild.buildroot.net/results/369/369ce208ffea43dad75ba0a13469159b341e3bf5/ + +Signed-off-by: Rahul Bedarkar +--- + tests/iodelay.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tests/iodelay.cpp b/tests/iodelay.cpp +index 1ef470f..f5c5836 100644 +--- a/tests/iodelay.cpp ++++ b/tests/iodelay.cpp +@@ -20,6 +20,7 @@ + + #include + #include ++#define __STDC_LIMIT_MACROS + #include + #include + #include +-- +2.6.2 + diff --git a/buildroot/package/jack2/0005-gcc7.patch b/buildroot/package/jack2/0005-gcc7.patch new file mode 100644 index 0000000..dadaf44 --- /dev/null +++ b/buildroot/package/jack2/0005-gcc7.patch @@ -0,0 +1,31 @@ +From f7bccdca651592cc4082b28fd4a01ed6ef8ab655 Mon Sep 17 00:00:00 2001 +From: Kjetil Matheussen +Date: Sat, 15 Jul 2017 13:21:59 +0200 +Subject: [PATCH] Tests: Fix compilation with gcc7 + +Fixes +../tests/test.cpp: In function ‘int process4(jack_nframes_t, void*)’: +../tests/test.cpp:483:73: error: call of overloaded ‘abs(jack_nframes_t)’ is ambiguous + if (delta_time > 0 && (jack_nframes_t)abs(delta_time - cur_buffer_size) > tolerance) { + +Downloaded from upstream commit +https://github.com/jackaudio/jack2/commit/f7bccdca651592cc4082b28fd4a01ed6ef8ab655 + +Signed-off-by: Bernd Kuhls +--- + tests/test.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test.cpp b/tests/test.cpp +index 8a8a8117..d2ef9a05 100644 +--- a/tests/test.cpp ++++ b/tests/test.cpp +@@ -479,7 +479,7 @@ int process4(jack_nframes_t nframes, void *arg) + jack_nframes_t delta_time = cur_time - last_time; + + Log("calling process4 callback : jack_frame_time = %ld delta_time = %ld\n", cur_time, delta_time); +- if (delta_time > 0 && (jack_nframes_t)abs(delta_time - cur_buffer_size) > tolerance) { ++ if (delta_time > 0 && abs((int64_t)delta_time - (int64_t)cur_buffer_size) > (int64_t)tolerance) { + printf("!!! ERROR !!! jack_frame_time seems to return incorrect values cur_buffer_size = %d, delta_time = %d tolerance %d\n", cur_buffer_size, delta_time, tolerance); + } + diff --git a/buildroot/package/jack2/0006-fix-ftbfs-with-clang.patch b/buildroot/package/jack2/0006-fix-ftbfs-with-clang.patch new file mode 100644 index 0000000..a73fe69 --- /dev/null +++ b/buildroot/package/jack2/0006-fix-ftbfs-with-clang.patch @@ -0,0 +1,28 @@ +From d3c8e2d8d78899fba40a3e677ed4dbe388d82269 Mon Sep 17 00:00:00 2001 +From: Adrian Knoth +Date: Thu, 18 Sep 2014 18:29:23 +0200 +Subject: [PATCH] Fix FTBFS with clang++ + +Forwarded from http://bugs.debian.org/757820 + +Downloaded from upstream commit +https://github.com/jackaudio/jack2/commit/d3c8e2d8d78899fba40a3e677ed4dbe388d82269 + +Signed-off-by: Bernd Kuhls +--- + common/memops.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/common/memops.c b/common/memops.c +index 27f6194a..2d416b64 100644 +--- a/common/memops.c ++++ b/common/memops.c +@@ -198,7 +198,7 @@ static inline __m128i float_24_sse(__m128 s) + */ + static unsigned int seed = 22222; + +-inline unsigned int fast_rand() { ++static inline unsigned int fast_rand() { + seed = (seed * 96314165) + 907633515; + return seed; + } diff --git a/buildroot/package/jack2/Config.in b/buildroot/package/jack2/Config.in new file mode 100644 index 0000000..f9de7be --- /dev/null +++ b/buildroot/package/jack2/Config.in @@ -0,0 +1,54 @@ +config BR2_PACKAGE_JACK2 + bool "jack2" + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_LIBSAMPLERATE + select BR2_PACKAGE_LIBSNDFILE + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_HWDEP + select BR2_PACKAGE_ALSA_LIB_SEQ + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + # Ensure we get at least one: + select BR2_PACKAGE_JACK2_LEGACY if !BR2_PACKAGE_JACK2_DBUS + help + JACK Audio Connection Kit (server and example clients). + + JACK is a low-latency sound server, allowing multiple + applications to connect to one audio device, and to share + audio between themselves. This package contains the daemon + jackd as well as some example clients. + + http://jackaudio.org/ + +if BR2_PACKAGE_JACK2 + +config BR2_PACKAGE_JACK2_LEGACY + bool "classic jack2" + help + Build and use jackd. + + https://github.com/jackaudio/jackaudio.github.com/wiki/JackDbusPackaging + +config BR2_PACKAGE_JACK2_DBUS + bool "dbus jack2" + depends on BR2_USE_WCHAR # dbus-python, python + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_PYTHON + select BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + help + Build and use jackdbus. + + https://github.com/jackaudio/jackaudio.github.com/wiki/JackDbusPackaging + +endif + +comment "jack2 needs a toolchain w/ threads, C++, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/jack2/jack2.hash b/buildroot/package/jack2/jack2.hash new file mode 100644 index 0000000..ab031b9 --- /dev/null +++ b/buildroot/package/jack2/jack2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 88f1b6601b7c8950e6a2d5940b423a33ee628ae5583da40bdce3d9317d8c600d jack2-v1.9.10.tar.gz diff --git a/buildroot/package/jack2/jack2.mk b/buildroot/package/jack2/jack2.mk new file mode 100644 index 0000000..b61c5d7 --- /dev/null +++ b/buildroot/package/jack2/jack2.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# jack2 +# +################################################################################ + +JACK2_VERSION = v1.9.10 +JACK2_SITE = $(call github,jackaudio,jack2,$(JACK2_VERSION)) +JACK2_LICENSE = GPL-2.0+ (jack server), LGPL-2.1+ (jack library) +JACK2_DEPENDENCIES = libsamplerate libsndfile alsa-lib host-python +JACK2_INSTALL_STAGING = YES + +JACK2_CONF_OPTS = --alsa + +ifeq ($(BR2_PACKAGE_OPUS),y) +JACK2_DEPENDENCIES += opus +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +JACK2_DEPENDENCIES += readline +endif + +ifeq ($(BR2_PACKAGE_JACK2_LEGACY),y) +JACK2_CONF_OPTS += --classic +else +define JACK2_REMOVE_JACK_CONTROL + $(RM) -f $(TARGET_DIR)/usr/bin/jack_control +endef +JACK2_POST_INSTALL_TARGET_HOOKS += JACK2_REMOVE_JACK_CONTROL +endif + +ifeq ($(BR2_PACKAGE_JACK2_DBUS),y) +JACK2_DEPENDENCIES += dbus +JACK2_CONF_OPTS += --dbus +endif + +# Even though it advertises support for celt-0.5.x, jack2 really +# requires celt >= 0.5.2 but we only have 0.5.1.3 and we cannot +# upgrade, so we do not add a dependency to celt051, which it can't +# find anyway as it looks for celt.pc but we only have celt-51.pc. + +# The dependency against eigen is only useful in conjunction with +# gtkiostream, which we do not have, so we don't need to depend on +# eigen. + +$(eval $(waf-package)) diff --git a/buildroot/package/jamvm/0001-Use-fenv.h-when-available-instead-of-fpu_control.h.patch b/buildroot/package/jamvm/0001-Use-fenv.h-when-available-instead-of-fpu_control.h.patch new file mode 100644 index 0000000..78ee9b7 --- /dev/null +++ b/buildroot/package/jamvm/0001-Use-fenv.h-when-available-instead-of-fpu_control.h.patch @@ -0,0 +1,108 @@ +From ecd4eceae98cfb1c83133bdeaa9095546ca8b7c6 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 26 May 2016 15:05:48 +0200 +Subject: [PATCH] Use when available instead of + +musl libc (http://musl-libc.org lack the non-standard +header, which is used in src/os/linux/{i386,x86_64}/init.c files to +setup the floating point precision. This patch makes it use the +standard C header instead when available. + +Original patch at Felix Janda at +https://sourceforge.net/p/jamvm/patches/6/, adapted to still use + if is not provided. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 2 +- + src/os/linux/i386/init.c | 15 +++++++++++++++ + src/os/linux/x86_64/init.c | 15 +++++++++++++-- + 3 files changed, 29 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 19f77e6..ce59a3e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -279,7 +279,7 @@ fi + + dnl Checks for header files. + AC_HEADER_STDC +-AC_CHECK_HEADERS(sys/time.h unistd.h endian.h sys/param.h locale.h alloca.h) ++AC_CHECK_HEADERS(sys/time.h unistd.h endian.h sys/param.h locale.h alloca.h fenv.h) + + if test "$enable_zip" != no; then + AC_CHECK_HEADER(zlib.h,,AC_MSG_ERROR(zlib.h is missing)) +diff --git a/src/os/linux/i386/init.c b/src/os/linux/i386/init.c +index d9c6648..8fefe7d 100644 +--- a/src/os/linux/i386/init.c ++++ b/src/os/linux/i386/init.c +@@ -19,18 +19,33 @@ + * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + ++#include "config.h" ++ ++#if defined(HAVE_FENV_H) ++#include ++#else + #include ++#endif + + /* Change floating point precision to double (64-bit) from + * the extended (80-bit) Linux default. */ + + void setDoublePrecision() { ++#if defined(HAVE_FENV_H) ++ fenv_t fenv; ++ ++ fegetenv(&fenv); ++ fenv.__control_word &= ~0x300; /* _FPU_EXTENDED */ ++ fenv.__control_word |= 0x200; /* _FPU_DOUBLE */ ++ fesetenv(&fenv); ++#else + fpu_control_t cw; + + _FPU_GETCW(cw); + cw &= ~_FPU_EXTENDED; + cw |= _FPU_DOUBLE; + _FPU_SETCW(cw); ++#endif + } + + void initialisePlatform() { +diff --git a/src/os/linux/x86_64/init.c b/src/os/linux/x86_64/init.c +index 9d55229..b42b14e 100644 +--- a/src/os/linux/x86_64/init.c ++++ b/src/os/linux/x86_64/init.c +@@ -19,7 +19,11 @@ + * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +-#ifdef __linux__ ++#include "config.h" ++ ++#if defined(HAVE_FENV_H) ++#include ++#else + #include + #endif + +@@ -30,7 +34,14 @@ + */ + + void setDoublePrecision() { +-#ifdef __linux__ ++#if defined(HAVE_FENV_H) ++ fenv_t fenv; ++ ++ fegetenv(&fenv); ++ fenv.__control_word &= ~0x300; /*_FPU_EXTENDED */ ++ fenv.__control_word |= 0x200; /*_FPU_DOUBLE */ ++ fesetenv(&fenv); ++#else + fpu_control_t cw; + + _FPU_GETCW(cw); +-- +2.7.4 + diff --git a/buildroot/package/jamvm/Config.in b/buildroot/package/jamvm/Config.in new file mode 100644 index 0000000..7717cca --- /dev/null +++ b/buildroot/package/jamvm/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_JAMVM_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if (BR2_mips || BR2_mipsel) \ + && (BR2_MIPS_FP32_MODE_32 || BR2_MIPS_SOFT_FLOAT) + default y if BR2_powerpc + +config BR2_PACKAGE_JAMVM + bool "jamvm" + depends on BR2_PACKAGE_JAMVM_ARCH_SUPPORTS + depends on BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_CLASSPATH + help + JamVM is a new Java Virtual Machine which conforms to the + JVM specification version 2 (blue book). + + http://jamvm.sf.net + +comment "jamvm needs a toolchain w/ threads, dynamic library" + depends on BR2_PACKAGE_JAMVM_ARCH_SUPPORTS + depends on BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/jamvm/jamvm.hash b/buildroot/package/jamvm/jamvm.hash new file mode 100644 index 0000000..f8ef76c --- /dev/null +++ b/buildroot/package/jamvm/jamvm.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 76428e96df0ae9dd964c7a7c74c1e9a837e2f312c39e9a357fa8178f7eff80da jamvm-2.0.0.tar.gz diff --git a/buildroot/package/jamvm/jamvm.mk b/buildroot/package/jamvm/jamvm.mk new file mode 100644 index 0000000..3fcf460 --- /dev/null +++ b/buildroot/package/jamvm/jamvm.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# jamvm +# +################################################################################ + +JAMVM_VERSION = 2.0.0 +JAMVM_SITE = http://downloads.sourceforge.net/project/jamvm/jamvm/JamVM%20$(JAMVM_VERSION) +JAMVM_LICENSE = GPL-2.0+ +JAMVM_LICENSE_FILES = COPYING +JAMVM_DEPENDENCIES = zlib classpath +# For 0001-Use-fenv.h-when-available-instead-of-fpu_control.h.patch +JAMVM_AUTORECONF = YES +# int inlining seems to crash jamvm, don't build shared version of internal lib +JAMVM_CONF_OPTS = \ + --with-classpath-install-dir=/usr \ + --disable-int-inlining \ + --disable-shared \ + --without-pic + +# jamvm has ARM assembly code that cannot be compiled in Thumb2 mode, +# so we must force traditional ARM mode. +ifeq ($(BR2_arm),y) +JAMVM_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +# Needed for autoreconf +define JAMVM_CREATE_M4_DIR + mkdir -p $(@D)/m4 +endef + +JAMVM_POST_PATCH_HOOKS += JAMVM_CREATE_M4_DIR + +$(eval $(autotools-package)) diff --git a/buildroot/package/jansson/Config.in b/buildroot/package/jansson/Config.in new file mode 100644 index 0000000..18c8ce5 --- /dev/null +++ b/buildroot/package/jansson/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_JANSSON + bool "jansson" + help + Jansson is a C library for encoding, decoding and manipulating + JSON data. + + http://www.digip.org/jansson/ diff --git a/buildroot/package/jansson/jansson.hash b/buildroot/package/jansson/jansson.hash new file mode 100644 index 0000000..7a04586 --- /dev/null +++ b/buildroot/package/jansson/jansson.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 78215ad1e277b42681404c1d66870097a50eb084be9d771b1d15576575cf6447 jansson-2.10.tar.gz diff --git a/buildroot/package/jansson/jansson.mk b/buildroot/package/jansson/jansson.mk new file mode 100644 index 0000000..9771434 --- /dev/null +++ b/buildroot/package/jansson/jansson.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# jansson +# +################################################################################ + +JANSSON_VERSION = 2.10 +JANSSON_SITE = http://www.digip.org/jansson/releases +JANSSON_LICENSE = MIT +JANSSON_LICENSE_FILES = LICENSE +JANSSON_INSTALL_STAGING = YES +JANSSON_CONF_ENV = LIBS="-lm" + +$(eval $(autotools-package)) diff --git a/buildroot/package/janus-gateway/0001-disable-ssp.patch b/buildroot/package/janus-gateway/0001-disable-ssp.patch new file mode 100644 index 0000000..f03b585 --- /dev/null +++ b/buildroot/package/janus-gateway/0001-disable-ssp.patch @@ -0,0 +1,22 @@ +Do not force SSP usage + +The toolchain may not support SSP, so do not enforce its usage, let +the package user pass the appropriate CFLAGS to enable SSP if needed. + +Signed-off-by: Gregory Dymarek +Signed-off-by: Thomas Petazzoni +(rebased against v0.1.0) +Signed-off-by: Bernd Kuhls + +diff -rupN janus-gateway-master.orig/Makefile.am janus-gateway-master/Makefile.am +--- janus-gateway-master.orig/Makefile.am 2014-11-27 14:36:31.000000000 +0000 ++++ janus-gateway-master/Makefile.am 2014-12-01 16:39:50.551935028 +0000 +@@ -14,7 +14,7 @@ AM_CFLAGS += -Wredundant-decls # sophia + # some fairly big refactoring though, which can wait. + # AM_CFLAGS += -Wshadow -Wstrict-aliasing=2 + +-AM_CFLAGS += -fstack-protector-all -g -ggdb -fPIC -rdynamic -pthread ++AM_CFLAGS += -g -ggdb -fPIC -rdynamic -pthread + + # FIXME: make docs work with distcheck + DISTCHECK_CONFIGURE_FLAGS = --disable-docs --enable-post-processing diff --git a/buildroot/package/janus-gateway/0002-Add-test-for-Wunused-but-set-variable.patch b/buildroot/package/janus-gateway/0002-Add-test-for-Wunused-but-set-variable.patch new file mode 100644 index 0000000..13bc21e --- /dev/null +++ b/buildroot/package/janus-gateway/0002-Add-test-for-Wunused-but-set-variable.patch @@ -0,0 +1,135 @@ +From c0f075bdee5edabf8f19b68e0880fbd249a89653 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 3 Jan 2015 15:09:59 +0100 +Subject: [PATCH] Add test for -Wunused-but-set-variable + +The -Wunused-but-set-variable option does not exist in some old gcc +versions (gcc 4.5.x), so using it unconditionally breaks the build +with such compilers. + +This commit introduces the AX_CHECK_COMPILE_FLAG m4 macro taken from +the autoconf-archive +(http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_check_compile_flag.m4), +and uses it to detect if the -Wunused-but-set-variable option is +supported, and only uses it in this case. + +Signed-off-by: Thomas Petazzoni +(rebased against v0.1.0) +Signed-off-by: Bernd Kuhls +--- + Makefile.am | 2 +- + configure.ac | 3 ++ + m4/ax_check_compile_flag.m4 | 74 +++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 78 insertions(+), 1 deletion(-) + create mode 100644 m4/ax_check_compile_flag.m4 + +diff --git a/Makefile.am b/Makefile.am +index 5d23e0b..0f51f6a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -6,7 +6,7 @@ AM_CFLAGS = \ + -Wnested-externs -Wstrict-prototypes -Wunsafe-loop-optimizations \ + -Wwrite-strings -Wno-missing-field-initializers -Wno-unused-parameter \ + -Wcast-align -Wformat-nonliteral -Wformat-security -Wswitch-default \ +- -Wmissing-include-dirs -Wno-aggregate-return -Wunused-but-set-variable \ ++ -Wmissing-include-dirs -Wno-aggregate-return @GCC_WARN_UNUSED_BUT_SET@ \ + -Warray-bounds -Wold-style-definition -Wsign-compare -Wlarger-than=65537 + AM_CFLAGS += -Wno-undef # sophiasip is not -Wundef--safe + AM_CFLAGS += -Wno-redundant-decls # sophiasip also contains redundant declarations +diff --git a/configure.ac b/configure.ac +index 17870a7..f9bb1e4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -7,6 +7,9 @@ AM_SILENT_RULES([yes]) + AC_GNU_SOURCE + + AC_PROG_CC ++AX_CHECK_COMPILE_FLAG([-Wunused-but-set-variable], ++ [GCC_WARN_UNUSED_BUT_SET=-Wunused-but-set-variable]) ++AC_SUBST(GCC_WARN_UNUSED_BUT_SET) + + LT_PREREQ([2.2]) + LT_INIT +diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4 +new file mode 100644 +index 0000000..51df0c0 +--- /dev/null ++++ b/m4/ax_check_compile_flag.m4 +@@ -0,0 +1,74 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) ++# ++# DESCRIPTION ++# ++# Check whether the given FLAG works with the current language's compiler ++# or gives an error. (Warnings, however, are ignored) ++# ++# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on ++# success/failure. ++# ++# If EXTRA-FLAGS is defined, it is added to the current language's default ++# flags (e.g. CFLAGS) when the check is done. The check is thus made with ++# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to ++# force the compiler to issue an error when a bad flag is given. ++# ++# INPUT gives an alternative input source to AC_COMPILE_IFELSE. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this ++# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# 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 3 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, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 3 ++ ++AC_DEFUN([AX_CHECK_COMPILE_FLAG], ++[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX ++AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl ++AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ ++ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS ++ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" ++ AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], ++ [AS_VAR_SET(CACHEVAR,[yes])], ++ [AS_VAR_SET(CACHEVAR,[no])]) ++ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) ++AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], ++ [m4_default([$2], :)], ++ [m4_default([$3], :)]) ++AS_VAR_POPDEF([CACHEVAR])dnl ++])dnl AX_CHECK_COMPILE_FLAGS +-- +2.1.0 + diff --git a/buildroot/package/janus-gateway/Config.in b/buildroot/package/janus-gateway/Config.in new file mode 100644 index 0000000..5bd4e95 --- /dev/null +++ b/buildroot/package/janus-gateway/Config.in @@ -0,0 +1,97 @@ +menuconfig BR2_PACKAGE_JANUS_GATEWAY + bool "janus-gateway" + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libnice -> libglib2 + depends on BR2_USE_MMU # libnice + depends on !BR2_STATIC_LIBS # dlopen + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBNICE + select BR2_PACKAGE_LIBSRTP + select BR2_PACKAGE_OPENSSL + help + Janus is an open source, general purpose, WebRTC gateway + designed and developed by Meetecho. + + https://github.com/meetecho/janus-gateway + +if BR2_PACKAGE_JANUS_GATEWAY + +comment "plugins" + +config BR2_PACKAGE_JANUS_AUDIO_BRIDGE + bool "audio bridge" + select BR2_PACKAGE_OPUS + +config BR2_PACKAGE_JANUS_ECHO_TEST + bool "echo test" + +config BR2_PACKAGE_JANUS_RECORDPLAY + bool "record and play" + +config BR2_PACKAGE_JANUS_SIP_GATEWAY + bool "sip gateway" + select BR2_PACKAGE_SOFIA_SIP + +config BR2_PACKAGE_JANUS_STREAMING + bool "streaming" + # SO_REUSEPORT + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + +comment "streaming plugin needs a toolchain w/ headers >= 3.9" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + +config BR2_PACKAGE_JANUS_TEXT_ROOM + bool "text room" + +config BR2_PACKAGE_JANUS_VIDEO_CALL + bool "video call" + +config BR2_PACKAGE_JANUS_VIDEO_ROOM + bool "video room" + +config BR2_PACKAGE_JANUS_VOICE_MAIL + bool "voice mail" + select BR2_PACKAGE_LIBOGG + +comment "transports" + +config BR2_PACKAGE_JANUS_MQTT + bool "MQTT" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_PAHO_MQTT_C + +comment "MQTT transport needs a toolchain w/ threads and dynamic library support" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_JANUS_RABBITMQ + bool "RabbitMQ" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_RABBITMQ_C + +comment "RabbitMQ transport needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_JANUS_REST + bool "REST (HTTP/HTTPS)" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBMICROHTTPD + +comment "REST transport needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_JANUS_UNIX_SOCKETS + bool "Unix Sockets" + default y + +config BR2_PACKAGE_JANUS_WEBSOCKETS + bool "WebSockets" + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBWEBSOCKETS + +endif + +comment "janus-gateway needs a toolchain w/ dynamic library, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/janus-gateway/janus-gateway.hash b/buildroot/package/janus-gateway/janus-gateway.hash new file mode 100644 index 0000000..f84ed8b --- /dev/null +++ b/buildroot/package/janus-gateway/janus-gateway.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 35cbbd5e7b7067e3a0b5ba221ea845814e5b59c733302f88fea80bcf98ce416f janus-gateway-v0.2.6.tar.gz +sha256 0a884af515b4593503f6f0c9b424db3945bd77eaa2644d25f45eb93a412b3c19 COPYING diff --git a/buildroot/package/janus-gateway/janus-gateway.mk b/buildroot/package/janus-gateway/janus-gateway.mk new file mode 100644 index 0000000..c37cda0 --- /dev/null +++ b/buildroot/package/janus-gateway/janus-gateway.mk @@ -0,0 +1,123 @@ +################################################################################ +# +# janus-gateway +# +################################################################################ + +JANUS_GATEWAY_VERSION = v0.2.6 +JANUS_GATEWAY_SITE = $(call github,meetecho,janus-gateway,$(JANUS_GATEWAY_VERSION)) +JANUS_GATEWAY_LICENSE = GPL-3.0 +JANUS_GATEWAY_LICENSE_FILES = COPYING + +# ding-libs provides the ini_config library +JANUS_GATEWAY_DEPENDENCIES = host-pkgconf jansson libnice \ + libsrtp host-gengetopt libglib2 openssl + +# Straight out of the repository, no ./configure, and we also patch +# configure.ac. +JANUS_GATEWAY_AUTORECONF = YES + +define JANUS_GATEWAY_M4 + mkdir -p $(@D)/m4 +endef +JANUS_GATEWAY_POST_PATCH_HOOKS += JANUS_GATEWAY_M4 + +JANUS_GATEWAY_CONF_OPTS = \ + --disable-data-channels \ + --disable-sample-event-handler + +ifeq ($(BR2_PACKAGE_JANUS_AUDIO_BRIDGE),y) +JANUS_GATEWAY_DEPENDENCIES += opus +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-audiobridge +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-audiobridge +endif + +ifeq ($(BR2_PACKAGE_JANUS_ECHO_TEST),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-echotest +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-echotest +endif + +ifeq ($(BR2_PACKAGE_JANUS_RECORDPLAY),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-recordplay +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-recordplay +endif + +ifeq ($(BR2_PACKAGE_JANUS_SIP_GATEWAY),y) +JANUS_GATEWAY_DEPENDENCIES += sofia-sip +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-sip +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-sip +endif + +ifeq ($(BR2_PACKAGE_JANUS_STREAMING),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-streaming +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-streaming +endif + +ifeq ($(BR2_PACKAGE_JANUS_TEXT_ROOM),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-textroom +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-textroom +endif + +ifeq ($(BR2_PACKAGE_JANUS_VIDEO_CALL),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-videocall +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-videocall +endif + +ifeq ($(BR2_PACKAGE_JANUS_VIDEO_ROOM),y) +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-videoroom +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-videoroom +endif + +ifeq ($(BR2_PACKAGE_JANUS_VOICE_MAIL),y) +JANUS_GATEWAY_DEPENDENCIES += libogg +JANUS_GATEWAY_CONF_OPTS += --enable-plugin-voicemail +else +JANUS_GATEWAY_CONF_OPTS += --disable-plugin-voicemail +endif + +ifeq ($(BR2_PACKAGE_JANUS_MQTT),y) +JANUS_GATEWAY_DEPENDENCIES += paho-mqtt-c +JANUS_GATEWAY_CONF_OPTS += --enable-mqtt +else +JANUS_GATEWAY_CONF_OPTS += --disable-mqtt +endif + +ifeq ($(BR2_PACKAGE_JANUS_RABBITMQ),y) +JANUS_GATEWAY_DEPENDENCIES += rabbitmq-c +JANUS_GATEWAY_CONF_OPTS += --enable-rabbitmq +else +JANUS_GATEWAY_CONF_OPTS += --disable-rabbitmq +endif + +ifeq ($(BR2_PACKAGE_JANUS_REST),y) +JANUS_GATEWAY_DEPENDENCIES += libmicrohttpd +JANUS_GATEWAY_CONF_OPTS += --enable-rest +else +JANUS_GATEWAY_CONF_OPTS += --disable-rest +endif + +ifeq ($(BR2_PACKAGE_JANUS_UNIX_SOCKETS),y) +JANUS_GATEWAY_CONF_OPTS += --enable-unix-sockets +else +JANUS_GATEWAY_CONF_OPTS += --disable-unix-sockets +endif + +ifeq ($(BR2_PACKAGE_JANUS_WEBSOCKETS),y) +JANUS_GATEWAY_DEPENDENCIES += libwebsockets +JANUS_GATEWAY_CONF_OPTS += --enable-websockets +else +JANUS_GATEWAY_CONF_OPTS += --disable-websockets +endif + +# Parallel build broken +JANUS_GATEWAY_MAKE = $(MAKE1) + +$(eval $(autotools-package)) diff --git a/buildroot/package/jasper/Config.in b/buildroot/package/jasper/Config.in new file mode 100644 index 0000000..7296936 --- /dev/null +++ b/buildroot/package/jasper/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_JASPER + bool "jasper" + help + JPEG-2000 decoder + + http://www.ece.uvic.ca/~mdadams/jasper/ diff --git a/buildroot/package/jasper/jasper.hash b/buildroot/package/jasper/jasper.hash new file mode 100644 index 0000000..b2b8217 --- /dev/null +++ b/buildroot/package/jasper/jasper.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b50413b41bfc82ae419298b41eadcde1aa31f362fb9dc2ac089e5cbc19f60c24 jasper-version-2.0.13.tar.gz diff --git a/buildroot/package/jasper/jasper.mk b/buildroot/package/jasper/jasper.mk new file mode 100644 index 0000000..2aa3f9d --- /dev/null +++ b/buildroot/package/jasper/jasper.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# jasper +# +################################################################################ + +JASPER_VERSION = version-2.0.13 +JASPER_SITE = $(call github,mdadams,jasper,$(JASPER_VERSION)) +JASPER_INSTALL_STAGING = YES +JASPER_LICENSE = JasPer License Version 2.0 +JASPER_LICENSE_FILES = LICENSE +JASPER_SUPPORTS_IN_SOURCE_BUILD = NO +JASPER_CONF_OPTS = \ + -DCMAKE_DISABLE_FIND_PACKAGE_DOXYGEN=TRUE \ + -DCMAKE_DISABLE_FIND_PACKAGE_LATEX=TRUE + +ifeq ($(BR2_STATIC_LIBS),y) +JASPER_CONF_OPTS += -DJAS_ENABLE_SHARED=OFF +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +JASPER_CONF_OPTS += -DJAS_ENABLE_LIBJPEG=ON +JASPER_DEPENDENCIES += jpeg +else +JASPER_CONF_OPTS += -DJAS_ENABLE_LIBJPEG=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/jemalloc/0001-Disable-documentation.patch b/buildroot/package/jemalloc/0001-Disable-documentation.patch new file mode 100644 index 0000000..a5f252c --- /dev/null +++ b/buildroot/package/jemalloc/0001-Disable-documentation.patch @@ -0,0 +1,29 @@ +From b9113f8dc939dab775dbc64bae03b927f0679467 Mon Sep 17 00:00:00 2001 +From: Eric Le Bihan +Date: Sun, 2 Apr 2017 19:26:04 +0200 +Subject: [PATCH] Disable documentation + +As there is no option to disable documentation, update Makefile.in to +skip it. + +Signed-off-by: Eric Le Bihan +--- + Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index e49a871..74a7541 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -383,7 +383,7 @@ done + + install_doc: install_doc_html install_doc_man + +-install: install_bin install_include install_lib install_doc ++install: install_bin install_include install_lib + + tests_unit: $(TESTS_UNIT:$(srcroot)%.c=$(objroot)%$(EXE)) + tests_integration: $(TESTS_INTEGRATION:$(srcroot)%.c=$(objroot)%$(EXE)) +-- +2.9.3 + diff --git a/buildroot/package/jemalloc/Config.in b/buildroot/package/jemalloc/Config.in new file mode 100644 index 0000000..c3fd8e3 --- /dev/null +++ b/buildroot/package/jemalloc/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb + default y if BR2_aarch64 || BR2_aarch64_be + default y if BR2_i386 || BR2_x86_64 + default y if BR2_mips || BR2_mipsel + default y if BR2_sparc64 + default y if BR2_powerpc + default y if BR2_sh4 || BR2sh4eb || BR2_sh4a || BR2_sh4aeb + +config BR2_PACKAGE_JEMALLOC + bool "jemalloc" + depends on BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + This library providing a malloc(3) implementation that + emphasizes fragmentation avoidance and scalable concurrency + support. + + http://jemalloc.net/ + +comment "jemalloc needs a toolchain w/ dynamic library, threads" + depends on BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/jemalloc/jemalloc.hash b/buildroot/package/jemalloc/jemalloc.hash new file mode 100644 index 0000000..50ac682 --- /dev/null +++ b/buildroot/package/jemalloc/jemalloc.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4814781d395b0ef093b21a08e8e6e0bd3dab8762f9935bbfb71679b0dea7c3e9 jemalloc-5.0.1.tar.bz2 diff --git a/buildroot/package/jemalloc/jemalloc.mk b/buildroot/package/jemalloc/jemalloc.mk new file mode 100644 index 0000000..2424eb5 --- /dev/null +++ b/buildroot/package/jemalloc/jemalloc.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# jemalloc +# +################################################################################ + +JEMALLOC_VERSION = 5.0.1 +JEMALLOC_SOURCE = jemalloc-$(JEMALLOC_VERSION).tar.bz2 +JEMALLOC_SITE = https://github.com/jemalloc/jemalloc/releases/download/$(JEMALLOC_VERSION) +JEMALLOC_LICENSE = BSD-2-Clause +JEMALLOC_LICENSE_FILES = COPYING +JEMALLOC_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_VALGRIND),y) +JEMALLOC_DEPENDENCIES += valgrind +JEMALLOC_CONF_OPTS += --enable-valgrind +else +JEMALLOC_CONF_OPTS += --disable-valgrind +endif + +HOST_JEMALLOC_CONF_OPTS += --disable-valgrind + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/jhead/0001-use-ldflags.patch b/buildroot/package/jhead/0001-use-ldflags.patch new file mode 100644 index 0000000..a1d8185 --- /dev/null +++ b/buildroot/package/jhead/0001-use-ldflags.patch @@ -0,0 +1,16 @@ +Make jhead use LDFLAGS for the final link. + +Signed-off-by: Gustavo Zacarias + +diff -Nura jhead-2.97.orig/makefile jhead-2.97/makefile +--- jhead-2.97.orig/makefile 2013-03-27 09:22:38.759966389 -0300 ++++ jhead-2.97/makefile 2013-03-27 09:25:06.290691745 -0300 +@@ -14,7 +14,7 @@ + ${CC} $(CFLAGS) -c $< -o $@ + + jhead: $(objs) jhead.h +- ${CC} -o jhead $(objs) -lm ++ ${CC} $(LDFLAGS) -o jhead $(objs) -lm + + clean: + rm -f $(objs) jhead diff --git a/buildroot/package/jhead/Config.in b/buildroot/package/jhead/Config.in new file mode 100644 index 0000000..58498cd --- /dev/null +++ b/buildroot/package/jhead/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_JHEAD + bool "jhead" + depends on BR2_USE_WCHAR + help + Jhead is a program for manipulating settings and thumbnails + in Exif jpeg headers used by most Digital Cameras. + + http://www.sentex.net/~mwandel/jhead/ + +comment "jhead needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/jhead/jhead.hash b/buildroot/package/jhead/jhead.hash new file mode 100644 index 0000000..55af7a7 --- /dev/null +++ b/buildroot/package/jhead/jhead.hash @@ -0,0 +1,2 @@ +# Locally calculated from download (no sig, hash) +sha256 88cc01da018e242fe2e05db73f91b6288106858dd70f27506c4989a575d2895e jhead-3.00.tar.gz diff --git a/buildroot/package/jhead/jhead.mk b/buildroot/package/jhead/jhead.mk new file mode 100644 index 0000000..8a99915 --- /dev/null +++ b/buildroot/package/jhead/jhead.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# jhead +# +################################################################################ + +JHEAD_VERSION = 3.00 +JHEAD_SITE = http://www.sentex.net/~mwandel/jhead +JHEAD_LICENSE = Public Domain +JHEAD_LICENSE_FILES = readme.txt + +define JHEAD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define JHEAD_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/jhead $(TARGET_DIR)/usr/bin/jhead +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jimtcl/Config.in b/buildroot/package/jimtcl/Config.in new file mode 100644 index 0000000..635fef1 --- /dev/null +++ b/buildroot/package/jimtcl/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_JIMTCL + bool "jimtcl" + help + Jim Tcl is a small footprint reimplementation of the Tcl + scripting language. The core language engine is compatible + with Tcl 8.5+, while implementing a significant subset of + the Tcl 8.6 command set, plus additional features available + only in Jim Tcl. + + http://jim.tcl.tk diff --git a/buildroot/package/jimtcl/jimtcl.hash b/buildroot/package/jimtcl/jimtcl.hash new file mode 100644 index 0000000..223dbcf --- /dev/null +++ b/buildroot/package/jimtcl/jimtcl.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/j/jimtcl/jimtcl_0.75-1.dsc +sha256 432ad29b98f33efd018d9e1d49a5d07a5efc523c5660983733f7e30d9b2b76cb jimtcl_0.75.orig.tar.xz diff --git a/buildroot/package/jimtcl/jimtcl.mk b/buildroot/package/jimtcl/jimtcl.mk new file mode 100644 index 0000000..389a72a --- /dev/null +++ b/buildroot/package/jimtcl/jimtcl.mk @@ -0,0 +1,82 @@ +################################################################################ +# +# jimtcl +# +################################################################################ + +JIMTCL_VERSION = 0.75 +JIMTCL_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/j/jimtcl +JIMTCL_SOURCE = jimtcl_$(JIMTCL_VERSION).orig.tar.xz +JIMTCL_INSTALL_STAGING = YES +JIMTCL_LICENSE = BSD-2-Clause +JIMTCL_LICENSE_FILES = LICENSE + +JIMTCL_HEADERS_TO_INSTALL = \ + jim.h \ + jim-eventloop.h \ + jim-signal.h \ + jim-subcmd.h \ + jim-win32compat.h \ + jim-config.h + +ifeq ($(BR2_PACKAGE_TCL),) +define JIMTCL_LINK_TCLSH + ln -sf jimsh $(TARGET_DIR)/usr/bin/tclsh +endef +endif + +ifeq ($(BR2_STATIC_LIBS),y) +define JIMTCL_INSTALL_LIB + $(INSTALL) -m 0644 -D $(@D)/libjim.a $(1)/usr/lib/libjim.a +endef +else +JIMTCL_SHARED = --shared +define JIMTCL_INSTALL_LIB + $(INSTALL) -m 0755 -D $(@D)/libjim.so.$(JIMTCL_VERSION) \ + $(1)/usr/lib/libjim.so.$(JIMTCL_VERSION) + ln -sf libjim.so.$(JIMTCL_VERSION) $(1)/usr/lib/libjim.so +endef +endif + +# build system doesn't use autotools, but does use an old version of +# gnuconfig which doesn't know all the architectures supported by +# Buildroot, so update config.guess / config.sub like we do in +# pkg-autotools.mk +JIMTCL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK + +# jimtcl really wants to find a existing $CXX, so feed it false +# when we do not have one. +define JIMTCL_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + CCACHE=none \ + $(if $(BR2_INSTALL_LIBSTDCPP),,CXX=false) \ + ./configure --prefix=/usr \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + $(JIMTCL_SHARED) \ + ) +endef + +# -fPIC is mandatory to build shared libraries on certain architectures +# (e.g. SPARC) and causes no harm or drawbacks on other architectures +define JIMTCL_BUILD_CMDS + SH_CFLAGS="-fPIC" \ + SHOBJ_CFLAGS="-fPIC" \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define JIMTCL_INSTALL_STAGING_CMDS + for i in $(JIMTCL_HEADERS_TO_INSTALL); do \ + cp -a $(@D)/$$i $(STAGING_DIR)/usr/include/ || exit 1 ; \ + done; \ + $(call JIMTCL_INSTALL_LIB,$(STAGING_DIR)) +endef + +define JIMTCL_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/jimsh $(TARGET_DIR)/usr/bin/jimsh + $(call JIMTCL_INSTALL_LIB,$(TARGET_DIR)) + $(JIMTCL_LINK_TCLSH) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jo/Config.in b/buildroot/package/jo/Config.in new file mode 100644 index 0000000..c5532c2 --- /dev/null +++ b/buildroot/package/jo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_JO + bool "jo" + help + Command-line processor to output JSON from a shell + + https://github.com/jpmens/jo diff --git a/buildroot/package/jo/jo.hash b/buildroot/package/jo/jo.hash new file mode 100644 index 0000000..736b0fb --- /dev/null +++ b/buildroot/package/jo/jo.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 63ed4766c2e0fcb5391a14033930329369f437d7060a11d82874e57e278bda5f jo-1.1.tar.gz diff --git a/buildroot/package/jo/jo.mk b/buildroot/package/jo/jo.mk new file mode 100644 index 0000000..ad085b2 --- /dev/null +++ b/buildroot/package/jo/jo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# jo +# +################################################################################ + +JO_VERSION = 1.1 +JO_SITE = https://github.com/jpmens/jo/releases/download/v$(JO_VERSION) +JO_LICENSE = MIT (json.[ch]), GPL-2.0+ (rest) +JO_LICENSE_FILES = COPYING +# don't build man pages +JO_CONF_ENV = ac_cv_path_PANDOC='' + +$(eval $(autotools-package)) diff --git a/buildroot/package/joe/Config.in b/buildroot/package/joe/Config.in new file mode 100644 index 0000000..c9dd967 --- /dev/null +++ b/buildroot/package/joe/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_JOE + bool "joe" + depends on BR2_USE_MMU # fork() + help + Joe's Own Editor + + JOE is an easy-to-use, full featured terminal-based screen + editor. Its behavior is a blending of WordStar and GNU-EMACS + (but it does not use code from either program). + It is a great editor for new users or as an alternative to vi. + + http://joe-editor.sf.net + +config BR2_PACKAGE_JOE_FULL + bool "full install of rc and syntax highlighting files" + default y + depends on BR2_PACKAGE_JOE + help + Install all rc and syntax highlighting files. Without this + option only the joe binary is installed, which contains a + default configuration. diff --git a/buildroot/package/joe/joe.hash b/buildroot/package/joe/joe.hash new file mode 100644 index 0000000..0a9c1fb --- /dev/null +++ b/buildroot/package/joe/joe.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/joe-editor/files/JOE%20sources/joe-4.4/ +sha1 aedf1ac9e6b91053aa26c70e7bba5bbd8136f033 joe-4.4.tar.gz +md5 59e63debe60b456a6ee5c0c27a756a47 joe-4.4.tar.gz +# Locally computed: +sha256 a5704828bbca29acb9e200414fef522c66cdf9ce28150f402d6767da43460979 joe-4.4.tar.gz diff --git a/buildroot/package/joe/joe.mk b/buildroot/package/joe/joe.mk new file mode 100644 index 0000000..3d0e9f7 --- /dev/null +++ b/buildroot/package/joe/joe.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# joe +# +################################################################################ + +JOE_VERSION = 4.4 +JOE_SITE = http://downloads.sourceforge.net/project/joe-editor/JOE%20sources/joe-$(JOE_VERSION) +JOE_LICENSE = GPL-1.0+ +JOE_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_NCURSES),y) +JOE_DEPENDENCIES += ncurses +JOE_CONF_OPTS += --enable-curses +else +JOE_CONF_OPTS += --disable-curses +endif + +ifneq ($(BR2_PACKAGE_JOE_FULL),y) +define JOE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/joe/joe $(TARGET_DIR)/usr/bin/joe +endef +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/jose/0001-lib-hsh.c-rename-hsh-local-variable.patch b/buildroot/package/jose/0001-lib-hsh.c-rename-hsh-local-variable.patch new file mode 100644 index 0000000..0bd259a --- /dev/null +++ b/buildroot/package/jose/0001-lib-hsh.c-rename-hsh-local-variable.patch @@ -0,0 +1,71 @@ +From 591fc6da944ffc29936e0019b2bc225ddc81dbba Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 20 Nov 2017 22:48:33 +0100 +Subject: [PATCH] lib/hsh.c: rename hsh local variable + +The hsh local variable name conflicts with the function prototype of +hsh() in hsh.h, causing the following build issues with old compilers +(gcc 4.7): + +hsh.c: In function 'hsh': +hsh.c:28:21: error: declaration of 'hsh' shadows a global declaration [-Werror=shadow] +hsh.c:26:1: error: shadowed declaration is here [-Werror=shadow] +hsh.c: In function 'hsh_buf': +hsh.c:60:21: error: declaration of 'hsh' shadows a global declaration [-Werror=shadow] +hsh.c:26:1: error: shadowed declaration is here [-Werror=shadow] + +Therefore, we rename this local variable to _hsh. + +Submitted-upstream: https://github.com/latchset/jose/pull/51 +Signed-off-by: Thomas Petazzoni +--- + lib/hsh.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/lib/hsh.c b/lib/hsh.c +index c59a95f..a2a891b 100644 +--- a/lib/hsh.c ++++ b/lib/hsh.c +@@ -25,7 +25,7 @@ + json_t * + hsh(jose_cfg_t *cfg, const char *alg, const void *data, size_t dlen) + { +- jose_io_auto_t *hsh = NULL; ++ jose_io_auto_t *_hsh = NULL; + jose_io_auto_t *enc = NULL; + jose_io_auto_t *buf = NULL; + char b[1024] = {}; +@@ -33,8 +33,8 @@ hsh(jose_cfg_t *cfg, const char *alg, const void *data, size_t dlen) + + buf = jose_io_buffer(cfg, b, &l); + enc = jose_b64_enc_io(buf); +- hsh = hsh_io(cfg, alg, enc); +- if (!buf || !enc || !hsh || !hsh->feed(hsh, data, dlen) || !hsh->done(hsh)) ++ _hsh = hsh_io(cfg, alg, enc); ++ if (!buf || !enc || !_hsh || !_hsh->feed(_hsh, data, dlen) || !_hsh->done(_hsh)) + return NULL; + + return json_stringn(b, l); +@@ -57,7 +57,7 @@ hsh_buf(jose_cfg_t *cfg, const char *alg, + const void *data, size_t dlen, void *hash, size_t hlen) + { + const jose_hook_alg_t *a = NULL; +- jose_io_auto_t *hsh = NULL; ++ jose_io_auto_t *_hsh = NULL; + jose_io_auto_t *buf = NULL; + + a = jose_hook_alg_find(JOSE_HOOK_ALG_KIND_HASH, alg); +@@ -71,8 +71,8 @@ hsh_buf(jose_cfg_t *cfg, const char *alg, + return SIZE_MAX; + + buf = jose_io_buffer(cfg, hash, &hlen); +- hsh = a->hash.hsh(a, cfg, buf); +- if (!buf || !hsh || !hsh->feed(hsh, data, dlen) || !hsh->done(hsh)) ++ _hsh = a->hash.hsh(a, cfg, buf); ++ if (!buf || !_hsh || !_hsh->feed(_hsh, data, dlen) || !_hsh->done(_hsh)) + return SIZE_MAX; + + return hlen; +-- +2.13.6 + diff --git a/buildroot/package/jose/0002-configure-fix-build-with-old-compilers.patch b/buildroot/package/jose/0002-configure-fix-build-with-old-compilers.patch new file mode 100644 index 0000000..0484f38 --- /dev/null +++ b/buildroot/package/jose/0002-configure-fix-build-with-old-compilers.patch @@ -0,0 +1,165 @@ +From 98e9faa4d39cd5b6aaab882877e19ae394ba3810 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 20 Nov 2017 23:10:38 +0100 +Subject: [PATCH] configure: fix build with old compilers + +Old gcc versions (gcc 4.7) do not support all warnings flags currently +hard-coded by configure.ac. In order to fix this, we import the +AX_CHECK_COMPILE_FLAG() macro from the autoconf-archive, and use it in +the configure.ac to only use warning flags when the compiler supports +them. + +Submitted-upstream: https://github.com/latchset/jose/pull/51 +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 46 +++++++++++++++------------- + m4/ax_check_compile_flag.m4 | 74 +++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 105 insertions(+), 22 deletions(-) + create mode 100644 m4/ax_check_compile_flag.m4 + +diff --git a/configure.ac b/configure.ac +index cf8c9a6..6fe4ded 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1,5 +1,6 @@ + AC_PREREQ(2.62) + AC_INIT(jose, 10) ++AC_CONFIG_MACRO_DIRS([m4]) + AC_CANONICAL_SYSTEM + AC_PROG_CC_C99 + +@@ -18,27 +19,30 @@ PKG_CHECK_MODULES([libcrypto], [libcrypto >= 1.0.2]) + AC_OPENMP + AC_SUBST([OPENMP_CFLAGS]) + +-JOSE_CFLAGS="\ +--Wall \ +--Wextra \ +--Werror \ +--Wstrict-aliasing \ +--Wchar-subscripts \ +--Wformat-security \ +--Wmissing-declarations \ +--Wmissing-prototypes \ +--Wnested-externs \ +--Wpointer-arith \ +--Wshadow \ +--Wsign-compare \ +--Wstrict-prototypes \ +--Wtype-limits \ +--Wunused-function \ +--Wno-missing-field-initializers \ +--Wno-unused-command-line-argument \ +--Wno-unused-parameter \ +--Wno-unknown-pragmas \ +-" ++for flag in \ ++ -Wall \ ++ -Wextra \ ++ -Werror \ ++ -Wstrict-aliasing \ ++ -Wchar-subscripts \ ++ -Wformat-security \ ++ -Wmissing-declarations \ ++ -Wmissing-prototypes \ ++ -Wnested-externs \ ++ -Wpointer-arith \ ++ -Wshadow \ ++ -Wsign-compare \ ++ -Wstrict-prototypes \ ++ -Wtype-limits \ ++ -Wunused-function \ ++ -Wno-missing-field-initializers \ ++ -Wno-unused-command-line-argument \ ++ -Wno-unused-parameter \ ++ -Wno-unknown-pragmas ; do ++ AX_CHECK_COMPILE_FLAG([${flag}], ++ [JOSE_CFLAGS="${JOSE_CFLAGS} ${flag}"]) ++done ++ + AC_SUBST([JOSE_CFLAGS]) + + AC_MSG_CHECKING([for linker script support]) +diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4 +new file mode 100644 +index 0000000..dcabb92 +--- /dev/null ++++ b/m4/ax_check_compile_flag.m4 +@@ -0,0 +1,74 @@ ++# =========================================================================== ++# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) ++# ++# DESCRIPTION ++# ++# Check whether the given FLAG works with the current language's compiler ++# or gives an error. (Warnings, however, are ignored) ++# ++# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on ++# success/failure. ++# ++# If EXTRA-FLAGS is defined, it is added to the current language's default ++# flags (e.g. CFLAGS) when the check is done. The check is thus made with ++# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to ++# force the compiler to issue an error when a bad flag is given. ++# ++# INPUT gives an alternative input source to AC_COMPILE_IFELSE. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this ++# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# 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 3 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, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 5 ++ ++AC_DEFUN([AX_CHECK_COMPILE_FLAG], ++[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF ++AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl ++AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ ++ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS ++ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" ++ AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], ++ [AS_VAR_SET(CACHEVAR,[yes])], ++ [AS_VAR_SET(CACHEVAR,[no])]) ++ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) ++AS_VAR_IF(CACHEVAR,yes, ++ [m4_default([$2], :)], ++ [m4_default([$3], :)]) ++AS_VAR_POPDEF([CACHEVAR])dnl ++])dnl AX_CHECK_COMPILE_FLAGS +-- +2.13.6 + diff --git a/buildroot/package/jose/Config.in b/buildroot/package/jose/Config.in new file mode 100644 index 0000000..4a9ed8d --- /dev/null +++ b/buildroot/package/jose/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_JOSE + bool "jose" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_JANSSON + select BR2_PACKAGE_OPENSSL + help + C-language implementation of Javascript Object Signing and + Encryption. + + https://github.com/latchset/jose + +comment "jose needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/jose/jose.hash b/buildroot/package/jose/jose.hash new file mode 100644 index 0000000..376bc0b --- /dev/null +++ b/buildroot/package/jose/jose.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 5c9cdcfb535c4d9f781393d7530521c72b1dd81caa9934cab6dd752cc7efcd72 jose-10.tar.bz2 +sha256 09e8a9bcec8067104652c168685ab0931e7868f9c8284b66f5ae6edae5f1130b COPYING diff --git a/buildroot/package/jose/jose.mk b/buildroot/package/jose/jose.mk new file mode 100644 index 0000000..2758d40 --- /dev/null +++ b/buildroot/package/jose/jose.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# jose +# +################################################################################ + +JOSE_VERSION = 10 +JOSE_SOURCE = jose-$(JOSE_VERSION).tar.bz2 +JOSE_SITE = https://github.com/latchset/jose/releases/download/v$(JOSE_VERSION) +JOSE_LICENSE = Apache-2.0 +JOSE_LICENSE_FILES = COPYING +# 0002-configure-fix-build-with-old-compilers.patch +JOSE_AUTORECONF = YES +JOSE_INSTALL_STAGING = YES +JOSE_DEPENDENCIES = host-pkgconf zlib jansson openssl + +$(eval $(autotools-package)) diff --git a/buildroot/package/jpeg-turbo/jpeg-turbo.hash b/buildroot/package/jpeg-turbo/jpeg-turbo.hash new file mode 100644 index 0000000..11b323b --- /dev/null +++ b/buildroot/package/jpeg-turbo/jpeg-turbo.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/libjpeg-turbo/files/1.5.2/ +sha1 e788f6defa58b4393a5e1685c018f3b962971457 libjpeg-turbo-1.5.2.tar.gz +md5 6b4923e297a7eaa255f08511017a8818 libjpeg-turbo-1.5.2.tar.gz +# Locally computed +sha256 9098943b270388727ae61de82adec73cf9f0dbb240b3bc8b172595ebf405b528 libjpeg-turbo-1.5.2.tar.gz +sha256 5c08657eda60b7946a913ee22ac73603335a468a6aa95204506a1586a8d677ee LICENSE.md +sha256 53a3e3c299e08856964f4c5986e242c3695837b73c64625092f70c774e8af5d2 README.ijg diff --git a/buildroot/package/jpeg-turbo/jpeg-turbo.mk b/buildroot/package/jpeg-turbo/jpeg-turbo.mk new file mode 100644 index 0000000..d52ab91 --- /dev/null +++ b/buildroot/package/jpeg-turbo/jpeg-turbo.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# jpeg-turbo +# +################################################################################ + +JPEG_TURBO_VERSION = 1.5.2 +JPEG_TURBO_SOURCE = libjpeg-turbo-$(JPEG_TURBO_VERSION).tar.gz +JPEG_TURBO_SITE = https://downloads.sourceforge.net/project/libjpeg-turbo/$(JPEG_TURBO_VERSION) +JPEG_TURBO_LICENSE = IJG (libjpeg), BSD-3-Clause (TurboJPEG), Zlib (SIMD) +JPEG_TURBO_LICENSE_FILES = LICENSE.md README.ijg +JPEG_TURBO_INSTALL_STAGING = YES +JPEG_TURBO_PROVIDES = jpeg +JPEG_TURBO_DEPENDENCIES = host-pkgconf + +JPEG_TURBO_CONF_OPTS = --with-jpeg8 + +ifeq ($(BR2_PACKAGE_JPEG_SIMD_SUPPORT),y) +JPEG_TURBO_CONF_OPTS += --with-simd +# x86 simd support needs nasm +JPEG_TURBO_DEPENDENCIES += $(if $(BR2_X86_CPU_HAS_MMX),host-nasm) +else +JPEG_TURBO_CONF_OPTS += --without-simd +endif + +define JPEG_TURBO_REMOVE_USELESS_TOOLS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,cjpeg djpeg jpegtran rdjpgcom tjbench wrjpgcom) +endef + +JPEG_TURBO_POST_INSTALL_TARGET_HOOKS += JPEG_TURBO_REMOVE_USELESS_TOOLS + +$(eval $(autotools-package)) diff --git a/buildroot/package/jpeg/Config.in b/buildroot/package/jpeg/Config.in new file mode 100644 index 0000000..a4a63cc --- /dev/null +++ b/buildroot/package/jpeg/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_JPEG + bool "jpeg support" + help + Select the desired JPEG library provider. + +# jpeg-turbo has simd support for some architectures +config BR2_PACKAGE_JPEG_SIMD_SUPPORT + bool + default y if BR2_X86_CPU_HAS_MMX + default y if BR2_ARM_CPU_HAS_NEON + default y if BR2_POWERPC_CPU_HAS_ALTIVEC + default y if BR2_aarch64 || BR2_aarch64_be + +if BR2_PACKAGE_JPEG + +choice + prompt "jpeg variant" + default BR2_PACKAGE_JPEG_TURBO if BR2_PACKAGE_JPEG_SIMD_SUPPORT + help + Select the normal libjpeg or libjpeg-turbo. + +config BR2_PACKAGE_LIBJPEG + bool "jpeg" + select BR2_PACKAGE_HAS_JPEG + help + The ubiquitous C library for manipulating JPEG images. + + http://www.ijg.org/ + +config BR2_PACKAGE_JPEG_TURBO + bool "jpeg-turbo" + select BR2_PACKAGE_HAS_JPEG + help + Libjpeg-turbo is a derivative of libjpeg that uses SIMD + instructions (MMX, SSE2, NEON) to accelerate baseline JPEG + compression and decompression on x86, x86-64, and ARM + systems. + + http://www.libjpeg-turbo.org + +endchoice + +config BR2_PACKAGE_HAS_JPEG + bool + +config BR2_PACKAGE_PROVIDES_JPEG + string + default "libjpeg" if BR2_PACKAGE_LIBJPEG + default "jpeg-turbo" if BR2_PACKAGE_JPEG_TURBO + +endif diff --git a/buildroot/package/jpeg/jpeg.mk b/buildroot/package/jpeg/jpeg.mk new file mode 100644 index 0000000..2d56be6 --- /dev/null +++ b/buildroot/package/jpeg/jpeg.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# jpeg +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/buildroot/package/jq/Config.in b/buildroot/package/jq/Config.in new file mode 100644 index 0000000..321cbe8 --- /dev/null +++ b/buildroot/package/jq/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_JQ + bool "jq" + help + jq is like sed for JSON data - you can use it to slice and + filter and map and transform structured data with the same + ease that sed, awk, grep and friends let you play with text. + + http://stedolan.github.io/jq/ diff --git a/buildroot/package/jq/Config.in.host b/buildroot/package/jq/Config.in.host new file mode 100644 index 0000000..9fc0e99 --- /dev/null +++ b/buildroot/package/jq/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_JQ + bool "host jq" + help + jq is like sed for JSON data - you can use it to slice and + filter and map and transform structured data with the same + ease that sed, awk, grep and friends let you play with text. + + As a host tool, jq can be useful to create/edit/merge/check + JSON files from a post-build script. + + http://stedolan.github.io/jq/ diff --git a/buildroot/package/jq/jq.hash b/buildroot/package/jq/jq.hash new file mode 100644 index 0000000..2cd6405 --- /dev/null +++ b/buildroot/package/jq/jq.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c4d2bfec6436341113419debf479d833692cc5cdab7eb0326b5a4d4fbe9f493c jq-1.5.tar.gz diff --git a/buildroot/package/jq/jq.mk b/buildroot/package/jq/jq.mk new file mode 100644 index 0000000..79629fa --- /dev/null +++ b/buildroot/package/jq/jq.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# jq +# +################################################################################ + +JQ_VERSION = 1.5 +JQ_SITE = https://github.com/stedolan/jq/releases/download/jq-$(JQ_VERSION) +JQ_LICENSE = MIT (code), CC-BY-3.0 (documentation) +JQ_LICENSE_FILES = COPYING +JQ_INSTALL_STAGING = YES + +# uses c99 specific features +# _GNU_SOURCE added to fix gcc6+ host compilation +# (https://github.com/stedolan/jq/issues/1598) +JQ_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -std=c99 -D_GNU_SOURCE" +HOST_JQ_CONF_ENV += CFLAGS="$(HOST_CFLAGS) -std=c99 -D_GNU_SOURCE" + +# jq explicitly enables maintainer mode, which we don't need/want +JQ_CONF_OPTS += --disable-maintainer-mode +HOST_JQ_CONF_OPTS += --disable-maintainer-mode + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/jquery-datetimepicker/Config.in b/buildroot/package/jquery-datetimepicker/Config.in new file mode 100644 index 0000000..9da3718 --- /dev/null +++ b/buildroot/package/jquery-datetimepicker/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_JQUERY_DATETIMEPICKER + bool "jquery-datetimepicker" + help + Use this plugin to unobtrusively add a datetimepicker, + datepicker or timepicker dropdown to your forms. + + http://xdsoft.net/jqplugins/datetimepicker diff --git a/buildroot/package/jquery-datetimepicker/jquery-datetimepicker.hash b/buildroot/package/jquery-datetimepicker/jquery-datetimepicker.hash new file mode 100644 index 0000000..b6aba87 --- /dev/null +++ b/buildroot/package/jquery-datetimepicker/jquery-datetimepicker.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2f362a8acd149d1487a9460942f135d1037f01ee0cbfecba8c352fa2f79c34c9 jquery-datetimepicker-2.4.5.tar.gz diff --git a/buildroot/package/jquery-datetimepicker/jquery-datetimepicker.mk b/buildroot/package/jquery-datetimepicker/jquery-datetimepicker.mk new file mode 100644 index 0000000..e4d4799 --- /dev/null +++ b/buildroot/package/jquery-datetimepicker/jquery-datetimepicker.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# jquery-datetimepicker +# +################################################################################ + +JQUERY_DATETIMEPICKER_VERSION = 2.4.5 +JQUERY_DATETIMEPICKER_SITE = $(call github,xdan,datetimepicker,$(JQUERY_DATETIMEPICKER_VERSION)) +JQUERY_DATETIMEPICKER_LICENSE = MIT +JQUERY_DATETIMEPICKER_LICENSE_FILES = MIT-LICENSE.txt + +define JQUERY_DATETIMEPICKER_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/jquery.datetimepicker.css \ + $(TARGET_DIR)/var/www/jquery-plugins/datetimepicker/jquery.datetimepicker.css + $(INSTALL) -m 0644 -D $(@D)/jquery.datetimepicker.js \ + $(TARGET_DIR)/var/www/jquery-plugins/datetimepicker/jquery.datetimepicker.js +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jquery-keyboard/Config.in b/buildroot/package/jquery-keyboard/Config.in new file mode 100644 index 0000000..117c4a5 --- /dev/null +++ b/buildroot/package/jquery-keyboard/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_JQUERY_KEYBOARD + bool "jquery-keyboard" + select BR2_PACKAGE_JQUERY_UI + help + Virtual Keyboard using jQuery UI + + https://github.com/Mottie/Keyboard diff --git a/buildroot/package/jquery-keyboard/jquery-keyboard.hash b/buildroot/package/jquery-keyboard/jquery-keyboard.hash new file mode 100644 index 0000000..7502867 --- /dev/null +++ b/buildroot/package/jquery-keyboard/jquery-keyboard.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6a20a1cdc9367c218048125eeb6f78d775175a964b3b9b781a931b63c0f98c66 jquery-keyboard-v1.18.12.tar.gz diff --git a/buildroot/package/jquery-keyboard/jquery-keyboard.mk b/buildroot/package/jquery-keyboard/jquery-keyboard.mk new file mode 100644 index 0000000..a1320dc --- /dev/null +++ b/buildroot/package/jquery-keyboard/jquery-keyboard.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# jquery-keyboard +# +################################################################################ + +JQUERY_KEYBOARD_VERSION = v1.18.12 +JQUERY_KEYBOARD_SITE = $(call github,Mottie,Keyboard,$(JQUERY_KEYBOARD_VERSION)) +JQUERY_KEYBOARD_LICENSE = MIT WTFPL +JQUERY_KEYBOARD_LICENSE_FILES = README.markdown + +define JQUERY_KEYBOARD_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/css/keyboard.css \ + $(TARGET_DIR)/var/www/css/keyboard.css + $(INSTALL) -m 0644 $(@D)/js/jquery.keyboard*.js \ + $(TARGET_DIR)/var/www + $(INSTALL) -m 0644 -D $(@D)/js/jquery.mousewheel.js \ + $(TARGET_DIR)/var/www/jquery.mousewheel.js + $(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/layouts + $(INSTALL) -m 0644 $(@D)/layouts/*.js \ + $(TARGET_DIR)/var/www/layouts +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jquery-mobile/Config.in b/buildroot/package/jquery-mobile/Config.in new file mode 100644 index 0000000..fa31a36 --- /dev/null +++ b/buildroot/package/jquery-mobile/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_JQUERY_MOBILE + bool "jquery-mobile" + help + jQuery-Mobile is a unified, HTML5-based user interface + system for all popular mobile device platforms, built on the + rock-solid jQuery and jQuery UI foundation. Its lightweight + code is built with progressive enhancement, and has a + flexible, easily themeable design. + + http://jquerymobile.com + +if BR2_PACKAGE_JQUERY_MOBILE + +config BR2_PACKAGE_JQUERY_MOBILE_FULL + bool "jquery-mobile development files" + help + Installs the development versions. + +config BR2_PACKAGE_JQUERY_MOBILE_DEMOS + bool "jquery-mobile demo files" + help + Installs the demo files. + The main demo page is http://hostname/demos/index.html + +endif diff --git a/buildroot/package/jquery-mobile/jquery-mobile.hash b/buildroot/package/jquery-mobile/jquery-mobile.hash new file mode 100644 index 0000000..3dfaa07 --- /dev/null +++ b/buildroot/package/jquery-mobile/jquery-mobile.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 7ed156b191dc3e262e3f450aede43adfb738ff0085afed87eb18fe4f43dfc681 jquery.mobile-1.4.3.zip diff --git a/buildroot/package/jquery-mobile/jquery-mobile.mk b/buildroot/package/jquery-mobile/jquery-mobile.mk new file mode 100644 index 0000000..1067952 --- /dev/null +++ b/buildroot/package/jquery-mobile/jquery-mobile.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# jquery-mobile +# +################################################################################ + +JQUERY_MOBILE_VERSION = 1.4.3 +JQUERY_MOBILE_SITE = http://jquerymobile.com/resources/download +JQUERY_MOBILE_SOURCE = jquery.mobile-$(JQUERY_MOBILE_VERSION).zip +JQUERY_MOBILE_LICENSE = MIT + +define JQUERY_MOBILE_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/$(JQUERY_MOBILE_SOURCE) +endef + +JQUERY_MOBILE_INSTALLED_FILES = \ + jquery.mobile.structure-$(JQUERY_MOBILE_VERSION).min.css \ + jquery.mobile.theme-$(JQUERY_MOBILE_VERSION).min.css \ + jquery.mobile-$(JQUERY_MOBILE_VERSION).min.css \ + jquery.mobile-$(JQUERY_MOBILE_VERSION).min.map \ + jquery.mobile-$(JQUERY_MOBILE_VERSION).min.js + +ifeq ($(BR2_PACKAGE_JQUERY_MOBILE_FULL),y) +JQUERY_MOBILE_INSTALLED_FILES += \ + jquery.mobile.structure-$(JQUERY_MOBILE_VERSION).css \ + jquery.mobile.theme-$(JQUERY_MOBILE_VERSION).css \ + jquery.mobile-$(JQUERY_MOBILE_VERSION).css \ + jquery.mobile-$(JQUERY_MOBILE_VERSION).js +endif + +ifeq ($(BR2_PACKAGE_JQUERY_MOBILE_DEMOS),y) +define JQUERY_MOBILE_INSTALL_DEMOS + mkdir -p $(TARGET_DIR)/var/www/demos + cp -r $(@D)/demos/* $(TARGET_DIR)/var/www/demos +endef +endif + +define JQUERY_MOBILE_INSTALL_TARGET_CMDS + for f in $(JQUERY_MOBILE_INSTALLED_FILES) ; do \ + $(INSTALL) -m 0644 -D $(@D)/$$f $(TARGET_DIR)/var/www/$$f || break ; \ + done + mkdir -p $(TARGET_DIR)/var/www/images + cp -r $(@D)/images/* $(TARGET_DIR)/var/www/images + $(JQUERY_MOBILE_INSTALL_DEMOS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jquery-sidebar/Config.in b/buildroot/package/jquery-sidebar/Config.in new file mode 100644 index 0000000..324a20c --- /dev/null +++ b/buildroot/package/jquery-sidebar/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_JQUERY_SIDEBAR + bool "jquery-sidebar" + help + A stupid simple sidebar jQuery plugin. + + http://jillix.github.io/jQuery-sidebar/ diff --git a/buildroot/package/jquery-sidebar/jquery-sidebar.hash b/buildroot/package/jquery-sidebar/jquery-sidebar.hash new file mode 100644 index 0000000..60e44d4 --- /dev/null +++ b/buildroot/package/jquery-sidebar/jquery-sidebar.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 c96e46439a87555f2200442f597cce64f21f81f94d7601ddfc3b837913ddb42f jquery-sidebar-3.3.2.tar.gz diff --git a/buildroot/package/jquery-sidebar/jquery-sidebar.mk b/buildroot/package/jquery-sidebar/jquery-sidebar.mk new file mode 100644 index 0000000..7af3667 --- /dev/null +++ b/buildroot/package/jquery-sidebar/jquery-sidebar.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# jquery-sidebar +# +################################################################################ + +JQUERY_SIDEBAR_VERSION = 3.3.2 +JQUERY_SIDEBAR_SITE = $(call github,jillix,jQuery-sidebar,$(JQUERY_SIDEBAR_VERSION)) +JQUERY_SIDEBAR_LICENSE = MIT +JQUERY_SIDEBAR_LICENSE_FILES = LICENSE + +define JQUERY_SIDEBAR_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/src/jquery.sidebar.min.js \ + $(TARGET_DIR)/var/www/jquery-plugins/sidebar/jquery.sidebar.min.js +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jquery-sparkline/Config.in b/buildroot/package/jquery-sparkline/Config.in new file mode 100644 index 0000000..1741a29 --- /dev/null +++ b/buildroot/package/jquery-sparkline/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_JQUERY_SPARKLINE + bool "jquery-sparkline" + help + This jQuery plugin generates sparklines (small inline + charts) directly in the browser using data supplied either + inline in the HTML, or via javascript. + + The plugin is compatible with most modern browsers and has + been tested with Firefox 2+, Safari 3+, Opera 9, Google + Chrome and Internet Explorer 6, 7 & 8. + + http://www.omnipotent.net/jquery.sparkline/ diff --git a/buildroot/package/jquery-sparkline/jquery-sparkline.hash b/buildroot/package/jquery-sparkline/jquery-sparkline.hash new file mode 100644 index 0000000..d8088bc --- /dev/null +++ b/buildroot/package/jquery-sparkline/jquery-sparkline.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 06e0242da172ab85985db3774c54ac1b53391a5b447857a100c5118b8281a543 jquery.sparkline.min.js diff --git a/buildroot/package/jquery-sparkline/jquery-sparkline.mk b/buildroot/package/jquery-sparkline/jquery-sparkline.mk new file mode 100644 index 0000000..165c2fa --- /dev/null +++ b/buildroot/package/jquery-sparkline/jquery-sparkline.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# jquery-sparkline +# +################################################################################ + +JQUERY_SPARKLINE_VERSION = 2.1.2 +JQUERY_SPARKLINE_SITE = http://www.omnipotent.net/jquery.sparkline/$(JQUERY_SPARKLINE_VERSION) +JQUERY_SPARKLINE_SOURCE = jquery.sparkline.min.js +JQUERY_SPARKLINE_LICENSE = BSD-3-Clause + +define JQUERY_SPARKLINE_EXTRACT_CMDS + cp $(DL_DIR)/$(JQUERY_SPARKLINE_SOURCE) $(@D) +endef + +define JQUERY_SPARKLINE_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/$(JQUERY_SPARKLINE_SOURCE) \ + $(TARGET_DIR)/var/www/jquery.sparkline.js +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jquery-ui-themes/Config.in b/buildroot/package/jquery-ui-themes/Config.in new file mode 100644 index 0000000..fde3014 --- /dev/null +++ b/buildroot/package/jquery-ui-themes/Config.in @@ -0,0 +1,117 @@ +config BR2_PACKAGE_JQUERY_UI_THEMES + bool "jquery-ui-themes" + depends on BR2_PACKAGE_JQUERY_UI + help + Themes for jQuery UI. + + http://jqueryui.com/ + +if BR2_PACKAGE_JQUERY_UI_THEMES + +choice + prompt "theme to install" + help + Specify the jQuery UI theme to install. + +config BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE + bool "black-tie" + +config BR2_PACKAGE_JQUERY_UI_THEME_BLITZER + bool "blitzer" + +config BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO + bool "cupertino" + +config BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE + bool "dark-hive" + +config BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV + bool "dot-luv" + +config BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT + bool "eggplant" + +config BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE + bool "excite-bike" + +config BR2_PACKAGE_JQUERY_UI_THEME_FLICK + bool "flick" + +config BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS + bool "hot-sneaks" + +config BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY + bool "humanity" + +config BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG + bool "le-frog" + +config BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC + bool "mint-choc" + +config BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST + bool "overcast" + +config BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER + bool "pepper-grinder" + +config BR2_PACKAGE_JQUERY_UI_THEME_REDMOND + bool "redmond" + +config BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS + bool "smoothness" + +config BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET + bool "south-street" + +config BR2_PACKAGE_JQUERY_UI_THEME_START + bool "start" + +config BR2_PACKAGE_JQUERY_UI_THEME_SUNNY + bool "sunny" + +config BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE + bool "swanky-purse" + +config BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC + bool "trontastic" + +config BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS + bool "ui-darkness" + +config BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS + bool "ui-lightness" + +config BR2_PACKAGE_JQUERY_UI_THEME_VADER + bool "vader" + +endchoice + +config BR2_PACKAGE_JQUERY_UI_THEMES_THEME + string + default "black-tie" if BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE + default "blitzer" if BR2_PACKAGE_JQUERY_UI_THEME_BLITZER + default "cupertino" if BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO + default "dark-hive" if BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE + default "dot-luv" if BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV + default "eggplant" if BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT + default "excite-bike" if BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE + default "flick" if BR2_PACKAGE_JQUERY_UI_THEME_FLICK + default "hot-sneaks" if BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS + default "humanity" if BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY + default "le-frog" if BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG + default "mint-choc" if BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC + default "overcast" if BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST + default "pepper-grinder" if BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER + default "redmond" if BR2_PACKAGE_JQUERY_UI_THEME_REDMOND + default "smoothness" if BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS + default "south-street" if BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET + default "start" if BR2_PACKAGE_JQUERY_UI_THEME_START + default "sunny" if BR2_PACKAGE_JQUERY_UI_THEME_SUNNY + default "swanky-purse" if BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE + default "trontastic" if BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC + default "ui-darkness" if BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS + default "ui-lightness" if BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS + default "vader" if BR2_PACKAGE_JQUERY_UI_THEME_UI_VADER + +endif diff --git a/buildroot/package/jquery-ui-themes/jquery-ui-themes.hash b/buildroot/package/jquery-ui-themes/jquery-ui-themes.hash new file mode 100644 index 0000000..5441789 --- /dev/null +++ b/buildroot/package/jquery-ui-themes/jquery-ui-themes.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 90467a83abcb8d2471b0d53d21b4c09e2cf686d5350e10a6e84fa3f3616a840f jquery-ui-themes-1.10.4.zip diff --git a/buildroot/package/jquery-ui-themes/jquery-ui-themes.mk b/buildroot/package/jquery-ui-themes/jquery-ui-themes.mk new file mode 100644 index 0000000..cd3dab6 --- /dev/null +++ b/buildroot/package/jquery-ui-themes/jquery-ui-themes.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# jquery-ui-themes +# +################################################################################ + +JQUERY_UI_THEMES_VERSION = 1.10.4 +JQUERY_UI_THEMES_SITE = http://jqueryui.com/resources/download +JQUERY_UI_THEMES_SOURCE = jquery-ui-themes-$(JQUERY_UI_THEMES_VERSION).zip +JQUERY_UI_THEMES_LICENSE = MIT +JQUERY_UI_THEMES_LICENSE_FILES = MIT-LICENSE.txt +JQUERY_UI_THEMES_DEPENDENCIES = jquery-ui + +define JQUERY_UI_THEMES_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/$(JQUERY_UI_THEMES_SOURCE) + mv $(@D)/jquery-ui-themes-$(JQUERY_UI_THEMES_VERSION)/* $(@D) + $(RM) -r $(@D)/jquery-ui-themes-$(JQUERY_UI_THEMES_VERSION) +endef + +define JQUERY_UI_THEMES_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D \ + $(@D)/themes/$(call qstrip,$(BR2_PACKAGE_JQUERY_UI_THEMES_THEME))/jquery-ui.css \ + $(TARGET_DIR)/var/www/jquery-ui.css + $(INSTALL) -d $(TARGET_DIR)/var/www/images + cp -a $(@D)/themes/$(call qstrip,$(BR2_PACKAGE_JQUERY_UI_THEMES_THEME))/images/*.png \ + $(TARGET_DIR)/var/www/images + chmod 0644 $(TARGET_DIR)/var/www/images/*.png +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jquery-ui/Config.in b/buildroot/package/jquery-ui/Config.in new file mode 100644 index 0000000..fd38997 --- /dev/null +++ b/buildroot/package/jquery-ui/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_JQUERY_UI + bool "jquery-ui" + help + jQuery UI provides abstractions for low-level interaction and + animation, advanced effects and high-level, themeable widgets, + built on top of the jQuery JavaScript Library, that you can + use to build highly interactive web applications. + + http://jqueryui.com/ diff --git a/buildroot/package/jquery-ui/jquery-ui.hash b/buildroot/package/jquery-ui/jquery-ui.hash new file mode 100644 index 0000000..daf89d0 --- /dev/null +++ b/buildroot/package/jquery-ui/jquery-ui.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 c76f349930245360f4d1dea672b9a587f8938b536a378e20eeff919f7263f99f jquery-ui-1.10.4.zip diff --git a/buildroot/package/jquery-ui/jquery-ui.mk b/buildroot/package/jquery-ui/jquery-ui.mk new file mode 100644 index 0000000..d829d62 --- /dev/null +++ b/buildroot/package/jquery-ui/jquery-ui.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# jquery-ui +# +################################################################################ + +JQUERY_UI_VERSION = 1.10.4 +# Use buildroot mirror since upstream switched the zipfile and directory +# structure without bumping/renaming. +# Remember to switch back to jqueryui.com when bumping! +JQUERY_UI_SITE = http://sources.buildroot.net +JQUERY_UI_SOURCE = jquery-ui-$(JQUERY_UI_VERSION).zip +JQUERY_UI_LICENSE = MIT +JQUERY_UI_LICENSE_FILES = MIT-LICENSE.txt + +define JQUERY_UI_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/$(JQUERY_UI_SOURCE) + mv $(@D)/jquery-ui-$(JQUERY_UI_VERSION)/* $(@D) + $(RM) -r $(@D)/jquery-ui-$(JQUERY_UI_VERSION) +endef + +define JQUERY_UI_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/ui/minified/jquery-ui.min.js \ + $(TARGET_DIR)/var/www/jquery-ui.js + $(INSTALL) -m 0644 -D $(@D)/ui/minified/i18n/jquery-ui-i18n.min.js \ + $(TARGET_DIR)/var/www/jquery-ui-i18n.js + $(INSTALL) -m 0644 -D $(@D)/themes/base/minified/jquery-ui.min.css \ + $(TARGET_DIR)/var/www/jquery-ui.css + $(INSTALL) -d $(TARGET_DIR)/var/www/images + $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/images \ + $(@D)/themes/base/minified/images/*.png +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jquery-validation/Config.in b/buildroot/package/jquery-validation/Config.in new file mode 100644 index 0000000..39e898e --- /dev/null +++ b/buildroot/package/jquery-validation/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_JQUERY_VALIDATION + bool "jquery-validation" + help + The jQuery Validation Plugin provides drop-in validation for + your existing forms, while making all kinds of + customizations to fit your application really easy. + + http://jqueryvalidation.org/ diff --git a/buildroot/package/jquery-validation/jquery-validation.hash b/buildroot/package/jquery-validation/jquery-validation.hash new file mode 100644 index 0000000..61c16cf --- /dev/null +++ b/buildroot/package/jquery-validation/jquery-validation.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 14efe6f1784ef6e97116b15c77b04b7e8f47ec07b1479bcd6fa0b081faa19440 jquery-validation-1.14.0.zip diff --git a/buildroot/package/jquery-validation/jquery-validation.mk b/buildroot/package/jquery-validation/jquery-validation.mk new file mode 100644 index 0000000..10d2a92 --- /dev/null +++ b/buildroot/package/jquery-validation/jquery-validation.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# jquery-validation +# +################################################################################ + +JQUERY_VALIDATION_VERSION = 1.14.0 +JQUERY_VALIDATION_SITE = http://jqueryvalidation.org/files +JQUERY_VALIDATION_SOURCE = jquery-validation-$(JQUERY_VALIDATION_VERSION).zip +JQUERY_VALIDATION_LICENSE = MIT +JQUERY_VALIDATION_LICENSE_FILES = README.md + +define JQUERY_VALIDATION_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/$(JQUERY_VALIDATION_SOURCE) +endef + +define JQUERY_VALIDATION_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/dist/jquery.validate.min.js \ + $(TARGET_DIR)/var/www/jquery.validate.js +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jquery/Config.in b/buildroot/package/jquery/Config.in new file mode 100644 index 0000000..92f5604 --- /dev/null +++ b/buildroot/package/jquery/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_JQUERY + bool "jQuery" + help + jQuery is a fast and concise JavaScript Library that + simplifies HTML document traversing, event handling, + animating, and Ajax interactions for rapid web development. + + http://jquery.com diff --git a/buildroot/package/jquery/jquery.hash b/buildroot/package/jquery/jquery.hash new file mode 100644 index 0000000..ec43e7c --- /dev/null +++ b/buildroot/package/jquery/jquery.hash @@ -0,0 +1,2 @@ +# Locally computed hashes, not provided by upstream +sha256 2ecd295d295bec062cedebe177e54b9d6b19fc0a841dc5c178c654c9ccff09c0 jquery-1.11.2.min.js diff --git a/buildroot/package/jquery/jquery.mk b/buildroot/package/jquery/jquery.mk new file mode 100644 index 0000000..363ee09 --- /dev/null +++ b/buildroot/package/jquery/jquery.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# jquery +# +################################################################################ + +JQUERY_VERSION = 1.11.2 +JQUERY_SITE = http://code.jquery.com +JQUERY_SOURCE = jquery-$(JQUERY_VERSION).min.js +JQUERY_LICENSE = MIT + +define JQUERY_EXTRACT_CMDS + cp $(DL_DIR)/$(JQUERY_SOURCE) $(@D) +endef + +define JQUERY_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/$(JQUERY_SOURCE) \ + $(TARGET_DIR)/var/www/jquery.js +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jsmin/Config.in b/buildroot/package/jsmin/Config.in new file mode 100644 index 0000000..d0948b8 --- /dev/null +++ b/buildroot/package/jsmin/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_JSMIN + bool "jsmin" + help + JSMin is a filter which removes comments and unnecessary + whitespace from JavaScript files. It typically reduces + filesize by half, resulting in faster downloads. It also + encourages a more expressive programming style because it + eliminates the download cost of clean, literate + self-documentation. + + http://www.crockford.com/javascript/jsmin.html diff --git a/buildroot/package/jsmin/Config.in.host b/buildroot/package/jsmin/Config.in.host new file mode 100644 index 0000000..25ec9bb --- /dev/null +++ b/buildroot/package/jsmin/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_JSMIN + bool "host jsmin" + help + JSMin is a filter which removes comments and unnecessary + whitespace from JavaScript files. It typically reduces + filesize by half, resulting in faster downloads. It also + encourages a more expressive programming style because it + eliminates the download cost of clean, literate + self-documentation. + + http://www.crockford.com/javascript/jsmin.html diff --git a/buildroot/package/jsmin/jsmin.hash b/buildroot/package/jsmin/jsmin.hash new file mode 100644 index 0000000..6080f10 --- /dev/null +++ b/buildroot/package/jsmin/jsmin.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 aae127bf7291a7b2592f36599e5ed6c6423eac7abe0cd5992f82d6d46fe9ed2d jsmin-1bf6ce5f74a9f8752ac7f5d115b8d7ccb31cfe1b.tar.gz diff --git a/buildroot/package/jsmin/jsmin.mk b/buildroot/package/jsmin/jsmin.mk new file mode 100644 index 0000000..84c39a7 --- /dev/null +++ b/buildroot/package/jsmin/jsmin.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# jsmin +# +################################################################################ + +JSMIN_VERSION = 1bf6ce5f74a9f8752ac7f5d115b8d7ccb31cfe1b +JSMIN_SITE = $(call github,douglascrockford,JSMin,$(JSMIN_VERSION)) +JSMIN_LICENSE = MIT +JSMIN_LICENSE_FILES = jsmin.c + +define JSMIN_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) jsmin +endef + +define JSMIN_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/jsmin $(TARGET_DIR)/usr/bin/jsmin +endef + +define HOST_JSMIN_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) jsmin +endef + +define HOST_JSMIN_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/jsmin $(HOST_DIR)/bin/jsmin +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/jsmn/Config.in b/buildroot/package/jsmn/Config.in new file mode 100644 index 0000000..ab14273 --- /dev/null +++ b/buildroot/package/jsmn/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_JSMN + bool "jsmn" + help + jsmn (pronounced like 'jasmine') is a minimalistic JSON + parser in C. It can be easily integrated into + resource-limited or embedded projects. + + https://github.com/zserge/jsmn/ diff --git a/buildroot/package/jsmn/jsmn.hash b/buildroot/package/jsmn/jsmn.hash new file mode 100644 index 0000000..91f6420 --- /dev/null +++ b/buildroot/package/jsmn/jsmn.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 e08993848b2abab62aa9572a560bb6e5ed4762f8537cd67c4de6cb17e17090a0 jsmn-6021415cc75e7922d45b12935f56348b064d8a7f.tar.gz diff --git a/buildroot/package/jsmn/jsmn.mk b/buildroot/package/jsmn/jsmn.mk new file mode 100644 index 0000000..c98f279 --- /dev/null +++ b/buildroot/package/jsmn/jsmn.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# jsmn +# +################################################################################ + +JSMN_VERSION = 6021415cc75e7922d45b12935f56348b064d8a7f +JSMN_SITE = $(call github,zserge,jsmn,$(JSMN_VERSION)) +JSMN_LICENSE = MIT +JSMN_LICENSE_FILES = LICENSE +# static library only +JSMN_INSTALL_STAGING = YES +JSMN_INSTALL_TARGET = NO + +define JSMN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define JSMN_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/libjsmn.a $(STAGING_DIR)/usr/lib/libjsmn.a + $(INSTALL) -D -m 0644 $(@D)/jsmn.h $(STAGING_DIR)/usr/include/jsmn.h +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/json-c/0001-configure.ac-remove-Werror.patch b/buildroot/package/json-c/0001-configure.ac-remove-Werror.patch new file mode 100644 index 0000000..e877671 --- /dev/null +++ b/buildroot/package/json-c/0001-configure.ac-remove-Werror.patch @@ -0,0 +1,32 @@ +From 79d862ccaabc6620ce4b2783a44d6014ae837df9 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Sun, 31 Dec 2017 00:01:37 +0200 +Subject: [PATCH] configure.ac: remove -Werror + +The unconditional _REENTRANT macro causes a warning when building with a +no-threads toolchain. Remove -Werror to fix the build. + +Signed-off-by: Baruch Siach +--- +Patch status: not upstreamable +Issue reported upstream: https://github.com/json-c/json-c/issues/396 +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 024c5aa0d687..74caa4d99e15 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -165,7 +165,7 @@ AS_IF([test "x$enable_Bsymbolic" = "xcheck"], + AS_IF([test "x$enable_Bsymbolic" = "xyes"], [JSON_BSYMBOLIC_LDFLAGS=-Wl[,]-Bsymbolic-functions]) + AC_SUBST(JSON_BSYMBOLIC_LDFLAGS) + +-AX_APPEND_COMPILE_FLAGS([-Wall -Werror -Wcast-qual -Wno-error=deprecated-declarations]) ++AX_APPEND_COMPILE_FLAGS([-Wall -Wcast-qual -Wno-error=deprecated-declarations]) + AX_APPEND_COMPILE_FLAGS([-Wextra -Wwrite-string -Wno-unused-parameter]) + AX_APPEND_COMPILE_FLAGS([-D_GNU_SOURCE -D_REENTRANT]) + +-- +2.15.1 + diff --git a/buildroot/package/json-c/Config.in b/buildroot/package/json-c/Config.in new file mode 100644 index 0000000..4df44a9 --- /dev/null +++ b/buildroot/package/json-c/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_JSON_C + bool "json-c" + # uses __sync_val_compare_and_swap_4 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + help + JSON-C - A JSON implementation in C + + JSON-C implements a reference counting object model that + allows you to easily construct JSON objects in C, output + them as JSON formatted strings and parse JSON formatted + strings back into the C representation of JSON objects. + + https://github.com/json-c/json-c/ diff --git a/buildroot/package/json-c/json-c.hash b/buildroot/package/json-c/json-c.hash new file mode 100644 index 0000000..41e614d --- /dev/null +++ b/buildroot/package/json-c/json-c.hash @@ -0,0 +1,4 @@ +# From https://github.com/json-c/json-c/wiki +sha256 0316780be9ad16c42d7c26b015a784fd5df4b0909fef0aba51cfb13e492ac24d json-c-0.13.tar.gz +# Locally calculated +sha256 74c1e6ca5eba76b54d0ad00d4815c8315c1b3bc45ff99de61d103dc92486284c COPYING diff --git a/buildroot/package/json-c/json-c.mk b/buildroot/package/json-c/json-c.mk new file mode 100644 index 0000000..450ee8b --- /dev/null +++ b/buildroot/package/json-c/json-c.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# json-c +# +################################################################################ + +JSON_C_VERSION = 0.13 +JSON_C_SITE = https://s3.amazonaws.com/json-c_releases/releases +JSON_C_INSTALL_STAGING = YES +JSON_C_LICENSE = MIT +JSON_C_LICENSE_FILES = COPYING + +# Patching configure.ac +JSON_C_AUTORECONF = YES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/json-for-modern-cpp/Config.in b/buildroot/package/json-for-modern-cpp/Config.in new file mode 100644 index 0000000..b045cba --- /dev/null +++ b/buildroot/package/json-for-modern-cpp/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_JSON_FOR_MODERN_CPP + bool "json-for-modern-cpp" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + help + Json for modern c++ has the following desing goals in mind: + + - Intuitive syntax. In languages such as Python, JSON feels + like a first class data type. All the operator magic of + modern C++ is used to achieve the same feeling in c++. + + - Trivial integration. The whole code consists of a single + header file json.hpp. That's it. No library, no + subproject, no dependencies, no complex build system. The + class is written in vanilla C++11. All in all, everything + should require no adjustment of compiler flags or project + settings. + + - Serious testing. The class is heavily unit-tested and + covers 100% of the code, including all exceptional + behavior. Furthermore, it is checked with Valgrind that + there are no memory leaks. To maintain high quality, the + project is following the Core Infrastructure Initiative + (CII) best practices. + + https://github.com/nlohmann/json + +comment "json-for-modern-cpp needs a toolchain w/ C++, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.hash b/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.hash new file mode 100644 index 0000000..7f394aa --- /dev/null +++ b/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 402464cd6d50c81bb6a683d07c537e5a8c4684fd1186826d3aa1385ce6adac13 json-v3.0.1.tar.gz +sha256 6a6115fc4a7239a135f2dce8d33f94cb8a936b8f608ac0f6699fbac278b0dd5b LICENSE.MIT diff --git a/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.mk b/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.mk new file mode 100644 index 0000000..6413d62 --- /dev/null +++ b/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# json-for-modern-cpp +# +################################################################################ + +JSON_FOR_MODERN_CPP_VERSION = v3.0.1 +JSON_FOR_MODERN_CPP_SOURCE = json-${JSON_FOR_MODERN_CPP_VERSION}.tar.gz +JSON_FOR_MODERN_CPP_SITE = $(call github,nlohmann,json,$(JSON_FOR_MODERN_CPP_VERSION)) +JSON_FOR_MODERN_CPP_LICENSE = MIT +JSON_FOR_MODERN_CPP_LICENSE_FILES = LICENSE.MIT +JSON_FOR_MODERN_CPP_INSTALL_STAGING = YES +# header only library +JSON_FOR_MODERN_CPP_INSTALL_TARGET = NO +JSON_FOR_MODERN_CPP_CONF_OPTS = -DJSON_BuildTests=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/json-glib/Config.in b/buildroot/package/json-glib/Config.in new file mode 100644 index 0000000..9df03d9 --- /dev/null +++ b/buildroot/package/json-glib/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_JSON_GLIB + bool "json-glib" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + JSON-GLib is a library providing serialization and + deserialization support for the JavaScript Object Notation + (JSON) format described by RFC 4627. + + https://live.gnome.org/JsonGlib/ + +comment "json-glib needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/json-glib/json-glib.hash b/buildroot/package/json-glib/json-glib.hash new file mode 100644 index 0000000..2f190ab --- /dev/null +++ b/buildroot/package/json-glib/json-glib.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/json-glib/1.2/json-glib-1.2.8.sha256sum +sha256 fd55a9037d39e7a10f0db64309f5f0265fa32ec962bf85066087b83a2807f40a json-glib-1.2.8.tar.xz diff --git a/buildroot/package/json-glib/json-glib.mk b/buildroot/package/json-glib/json-glib.mk new file mode 100644 index 0000000..5ee43d9 --- /dev/null +++ b/buildroot/package/json-glib/json-glib.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# json-glib +# +################################################################################ + +JSON_GLIB_VERSION_MAJOR = 1.2 +JSON_GLIB_VERSION = $(JSON_GLIB_VERSION_MAJOR).8 +JSON_GLIB_SITE = http://ftp.gnome.org/pub/GNOME/sources/json-glib/$(JSON_GLIB_VERSION_MAJOR) +JSON_GLIB_SOURCE = json-glib-$(JSON_GLIB_VERSION).tar.xz +JSON_GLIB_LICENSE = LGPL-2.1+ +JSON_GLIB_LICENSE_FILES = COPYING +JSON_GLIB_INSTALL_STAGING = YES + +JSON_GLIB_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-pkgconf \ + libglib2 + +$(eval $(autotools-package)) diff --git a/buildroot/package/json-javascript/Config.in b/buildroot/package/json-javascript/Config.in new file mode 100644 index 0000000..501c54f --- /dev/null +++ b/buildroot/package/json-javascript/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_JSON_JAVASCRIPT + bool "json-javascript" + help + JSON in JavaScript + + https://github.com/douglascrockford/JSON-js/ diff --git a/buildroot/package/json-javascript/json-javascript.hash b/buildroot/package/json-javascript/json-javascript.hash new file mode 100644 index 0000000..6216445 --- /dev/null +++ b/buildroot/package/json-javascript/json-javascript.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1a9dd4429e4bb4929dcb438f9591a3625bc8cc161f840b5f843d8b1d2c8dcfe5 json-javascript-3d7767b6b1f3da363c625ff54e63bbf20e9e83ac.tar.gz diff --git a/buildroot/package/json-javascript/json-javascript.mk b/buildroot/package/json-javascript/json-javascript.mk new file mode 100644 index 0000000..c15b531 --- /dev/null +++ b/buildroot/package/json-javascript/json-javascript.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# json-javascript +# +################################################################################ + +JSON_JAVASCRIPT_VERSION = 3d7767b6b1f3da363c625ff54e63bbf20e9e83ac +JSON_JAVASCRIPT_SITE = $(call github,douglascrockford,JSON-js,$(JSON_JAVASCRIPT_VERSION)) +JSON_JAVASCRIPT_LICENSE = Public Domain +JSON_JAVASCRIPT_LICENSE_FILES = json2.js + +define JSON_JAVASCRIPT_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/json2.js $(TARGET_DIR)/var/www/json2.js +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/jsoncpp/Config.in b/buildroot/package/jsoncpp/Config.in new file mode 100644 index 0000000..a6c6b91 --- /dev/null +++ b/buildroot/package/jsoncpp/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_JSONCPP + bool "jsoncpp" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + help + JsonCpp is a C++ library that allows manipulating JSON + values, including serialization and deserialization to and + from strings. It can also preserve existing comment in + unserialization/serialization steps, making it a convenient + format to store user input files. + + https://github.com/open-source-parsers/jsoncpp + +comment "jsoncpp needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/buildroot/package/jsoncpp/jsoncpp.hash b/buildroot/package/jsoncpp/jsoncpp.hash new file mode 100644 index 0000000..09ceb58 --- /dev/null +++ b/buildroot/package/jsoncpp/jsoncpp.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 3671ba6051e0f30849942cc66d1798fdf0362d089343a83f704c09ee7156604f jsoncpp-1.8.3.tar.gz diff --git a/buildroot/package/jsoncpp/jsoncpp.mk b/buildroot/package/jsoncpp/jsoncpp.mk new file mode 100644 index 0000000..6dfaece --- /dev/null +++ b/buildroot/package/jsoncpp/jsoncpp.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# jsoncpp +# +################################################################################ + +JSONCPP_VERSION = 1.8.3 +JSONCPP_SITE = $(call github,open-source-parsers,jsoncpp,$(JSONCPP_VERSION)) +JSONCPP_LICENSE = Public Domain or MIT +JSONCPP_LICENSE_FILES = LICENSE +JSONCPP_INSTALL_STAGING = YES + +JSONCPP_CONF_OPTS += \ + -DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF \ + -DJSONCPP_WITH_TESTS=OFF \ + -DJSONCPP_WITH_STRICT_ISO=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/kbd/Config.in b/buildroot/package/kbd/Config.in new file mode 100644 index 0000000..6cf2fc0 --- /dev/null +++ b/buildroot/package/kbd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KBD + bool "kbd" + # Uses fork() + depends on BR2_USE_MMU + help + Keytable files and keyboard utilities. + + http://kernel.org/pub/linux/utils/kbd/ diff --git a/buildroot/package/kbd/kbd.hash b/buildroot/package/kbd/kbd.hash new file mode 100644 index 0000000..3fed6ac --- /dev/null +++ b/buildroot/package/kbd/kbd.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/utils/kbd/sha256sums.asc +sha256 5fd90af6beb225a9bb9b9fb414c090fba53c9a55793e172f508cd43652e59a88 kbd-2.0.4.tar.xz diff --git a/buildroot/package/kbd/kbd.mk b/buildroot/package/kbd/kbd.mk new file mode 100644 index 0000000..c32d82a --- /dev/null +++ b/buildroot/package/kbd/kbd.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# kbd +# +################################################################################ + +KBD_VERSION = 2.0.4 +KBD_SOURCE = kbd-$(KBD_VERSION).tar.xz +KBD_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kbd +KBD_CONF_OPTS = \ + --disable-vlock \ + --disable-tests +KBD_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-pkgconf +KBD_LICENSE = GPL-2.0+ +KBD_LICENSE_FILES = COPYING + +KBD_INSTALL_TARGET_OPTS = MKINSTALLDIRS=$(@D)/config/mkinstalldirs DESTDIR=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/buildroot/package/keepalived/0001-Fix-build-with-Linux-kernel-headers-v4.15.patch b/buildroot/package/keepalived/0001-Fix-build-with-Linux-kernel-headers-v4.15.patch new file mode 100644 index 0000000..b5f21cb --- /dev/null +++ b/buildroot/package/keepalived/0001-Fix-build-with-Linux-kernel-headers-v4.15.patch @@ -0,0 +1,59 @@ +From 15f93dd90484532e25c8f3e43fb34a361a79d7f2 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 9 Feb 2018 11:55:19 +0200 +Subject: [PATCH] Fix build with Linux kernel headers v4.15 + +Linux kernel version 4.15 changed the libc/kernel headers suppression +logic in a way that introduces collisions: + +In file included from ./../include/vrrp_ipaddress.h:32:0, + from ./../include/vrrp_arp.h:31, + from vrrp.c:29: +/home/peko/autobuild/instance-1/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/linux/in.h:29:3: error: redeclaration of enumerator 'IPPROTO_IP' + IPPROTO_IP = 0, /* Dummy protocol for TCP */ + ^ +/home/peko/autobuild/instance-1/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/netinet/in.h:33:5: note: previous definition of 'IPPROTO_IP' was here + IPPROTO_IP = 0, /* Dummy protocol for TCP. */ + ^~~~~~~~~~ + +Include the libc netinet/in.h header first to suppress the kernel +header. + +In addition, add _GNU_SOURCE to vrrp.c for the libc provided in6_pktinfo +definition. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/acassen/keepalived/pull/777 + + keepalived/include/vrrp_arp.h | 1 + + keepalived/vrrp/vrrp.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/keepalived/include/vrrp_arp.h b/keepalived/include/vrrp_arp.h +index 77a26c450b12..a103ab075c1d 100644 +--- a/keepalived/include/vrrp_arp.h ++++ b/keepalived/include/vrrp_arp.h +@@ -24,6 +24,7 @@ + #define _VRRP_ARP_H + + /* system includes */ ++#include + #include + #include + +diff --git a/keepalived/vrrp/vrrp.c b/keepalived/vrrp/vrrp.c +index 3d2bfe41ab4f..435a4b54b2a9 100644 +--- a/keepalived/vrrp/vrrp.c ++++ b/keepalived/vrrp/vrrp.c +@@ -26,6 +26,7 @@ + #include "config.h" + + /* local include */ ++#define _GNU_SOURCE + #include "vrrp_arp.h" + #include "vrrp_ndisc.h" + #include "vrrp_scheduler.h" +-- +2.15.1 + diff --git a/buildroot/package/keepalived/Config.in b/buildroot/package/keepalived/Config.in new file mode 100644 index 0000000..0140e62 --- /dev/null +++ b/buildroot/package/keepalived/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_KEEPALIVED + bool "keepalived" + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS # uses libdl + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_POPT + help + The main goal of the keepalived project is to add a strong & + robust keepalive facility to the Linux Virtual Server + project. It implements a multilayer TCP/IP stack + checks. Keepalived implements a framework based on three + family checks: Layer3, Layer4 & Layer5. This framework gives + the daemon the ability of checking a LVS server pool + states. Keepalived can be sumarize as a LVS driving daemon. + + http://www.keepalived.org/ + +comment "keepalived needs a toolchain w/ dynamic library, headers >= 3.4" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 diff --git a/buildroot/package/keepalived/keepalived.hash b/buildroot/package/keepalived/keepalived.hash new file mode 100644 index 0000000..5d33c5b --- /dev/null +++ b/buildroot/package/keepalived/keepalived.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c0114d86ea4c896557beb0d9367819a423ffba772bc5d7c548dc455e6b3bd048 keepalived-1.3.5.tar.gz diff --git a/buildroot/package/keepalived/keepalived.mk b/buildroot/package/keepalived/keepalived.mk new file mode 100644 index 0000000..59d3cb5 --- /dev/null +++ b/buildroot/package/keepalived/keepalived.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# keepalived +# +################################################################################ + +KEEPALIVED_VERSION = 1.3.5 +KEEPALIVED_SITE = http://www.keepalived.org/software +KEEPALIVED_DEPENDENCIES = host-pkgconf openssl popt +KEEPALIVED_LICENSE = GPL-2.0+ +KEEPALIVED_LICENSE_FILES = COPYING +KEEPALIVED_CONF_OPTS += --disable-dbus + +ifeq ($(BR2_PACKAGE_LIBNL)$(BR2_PACKAGE_LIBNFNETLINK),yy) +KEEPALIVED_DEPENDENCIES += libnl libnfnetlink +KEEPALIVED_CONF_OPTS += --enable-libnl +else +KEEPALIVED_CONF_OPTS += --disable-libnl +endif + +ifeq ($(BR2_PACKAGE_IPSET),y) +KEEPALIVED_DEPENDENCIES += ipset +KEEPALIVED_CONF_OPTS += --enable-libipset +else +KEEPALIVED_CONF_OPTS += --disable-libipset +endif + +ifeq ($(BR2_PACKAGE_IPTABLES),y) +KEEPALIVED_DEPENDENCIES += iptables +KEEPALIVED_CONF_OPTS += --enable-libiptc +else +KEEPALIVED_CONF_OPTS += --disable-libiptc +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/kexec-lite/0001-clean-restart.patch b/buildroot/package/kexec-lite/0001-clean-restart.patch new file mode 100644 index 0000000..faaa93a --- /dev/null +++ b/buildroot/package/kexec-lite/0001-clean-restart.patch @@ -0,0 +1,34 @@ +From 0a654c20e1b9324c57ba4116b52fb6ab33847e1d Mon Sep 17 00:00:00 2001 +From: Jeremy Kerr +Date: Thu, 8 Aug 2013 17:16:31 +0800 +Subject: [PATCH] kexec: Implement clean restart for busybox init + +Signed-off-by: Jeremy Kerr +--- + kexec.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/kexec.c b/kexec.c +index 2edb7df..b2a0c42 100644 +--- a/kexec.c ++++ b/kexec.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -818,7 +819,7 @@ int main(int argc, char *argv[]) + sync(); + exec_kexec(); + } else { +- execlp("shutdown", "shutdown", "-r", "now", NULL); ++ kill(1, SIGQUIT); + } + + return -1; +-- +1.7.10.4 + diff --git a/buildroot/package/kexec-lite/Config.in b/buildroot/package/kexec-lite/Config.in new file mode 100644 index 0000000..cd0e30f --- /dev/null +++ b/buildroot/package/kexec-lite/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_KEXEC_LITE + bool "kexec-lite" + depends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + depends on !BR2_STATIC_LIBS # dtc, elfutils + depends on BR2_USE_WCHAR # elfutils + depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils + select BR2_PACKAGE_ELFUTILS + select BR2_PACKAGE_DTC + select BR2_PACKAGE_DTC_PROGRAMS + help + Kexec is a user space utiltity for loading another kernel + and asking the currently running kernel to do something with + it. + + This package is a tiny implementation of the kexec userspace + components, for devicetree-based platforms. + +comment "kexec-lite needs a uClibc or glibc toolchain w/ wchar, dynamic library" + depends on BR2_powerpc || BR2_powerpc64 + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) diff --git a/buildroot/package/kexec-lite/kexec-lite.hash b/buildroot/package/kexec-lite/kexec-lite.hash new file mode 100644 index 0000000..d71e8d0 --- /dev/null +++ b/buildroot/package/kexec-lite/kexec-lite.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2e9b131324cec9d27840179daa35e3159a4032ff78b74e301850faa007567d0e kexec-lite-87d044a895b1c004320a2676099a54a5a2a74f2e.tar.gz diff --git a/buildroot/package/kexec-lite/kexec-lite.mk b/buildroot/package/kexec-lite/kexec-lite.mk new file mode 100644 index 0000000..8e1ad8d --- /dev/null +++ b/buildroot/package/kexec-lite/kexec-lite.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# kexec-lite +# +################################################################################ + +KEXEC_LITE_VERSION = 87d044a895b1c004320a2676099a54a5a2a74f2e +KEXEC_LITE_SITE = $(call github,antonblanchard,kexec-lite,$(KEXEC_LITE_VERSION)) +KEXEC_LITE_LICENSE = GPL-2.0+ +KEXEC_LITE_LICENSE_FILES = COPYING +KEXEC_LITE_DEPENDENCIES = elfutils dtc + +define KEXEC_LITE_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define KEXEC_LITE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/kexec $(TARGET_DIR)/usr/sbin/kexec +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/kexec/Config.in b/buildroot/package/kexec/Config.in new file mode 100644 index 0000000..c24dff3 --- /dev/null +++ b/buildroot/package/kexec/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_KEXEC + bool "kexec" + depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || \ + BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el || \ + BR2_powerpc || BR2_sh4 || BR2_sh4a + help + Kexec is a user space utility for loading another kernel + and asking the currently running kernel to do something with + it. + + https://www.kernel.org/pub/linux/utils/kernel/kexec/ + +if BR2_PACKAGE_KEXEC + +config BR2_PACKAGE_KEXEC_ZLIB + bool "zlib support" + select BR2_PACKAGE_ZLIB + help + Support for compressed kernel images + +endif diff --git a/buildroot/package/kexec/kexec.hash b/buildroot/package/kexec/kexec.hash new file mode 100644 index 0000000..eaa9d7b --- /dev/null +++ b/buildroot/package/kexec/kexec.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/utils/kernel/kexec/sha256sums.asc +sha256 5b103351ad752c9badd1d65b00eb6de4bce579f944f4df4e3ef3a755ba567010 kexec-tools-2.0.16.tar.xz diff --git a/buildroot/package/kexec/kexec.mk b/buildroot/package/kexec/kexec.mk new file mode 100644 index 0000000..3ce1ed2 --- /dev/null +++ b/buildroot/package/kexec/kexec.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# kexec +# +################################################################################ + +KEXEC_VERSION = 2.0.16 +KEXEC_SOURCE = kexec-tools-$(KEXEC_VERSION).tar.xz +KEXEC_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kernel/kexec +KEXEC_LICENSE = GPL-2.0 +KEXEC_LICENSE_FILES = COPYING + +# Makefile expects $STRIP -o to work, so needed for !BR2_STRIP_strip +KEXEC_MAKE_OPTS = STRIP="$(TARGET_CROSS)strip" + +ifeq ($(BR2_PACKAGE_KEXEC_ZLIB),y) +KEXEC_CONF_OPTS += --with-zlib +KEXEC_DEPENDENCIES = zlib +else +KEXEC_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +KEXEC_CONF_OPTS += --with-lzma +KEXEC_DEPENDENCIES += xz +else +KEXEC_CONF_OPTS += --without-lzma +endif + +define KEXEC_REMOVE_LIB_TOOLS + rm -rf $(TARGET_DIR)/usr/lib/kexec-tools +endef + +KEXEC_POST_INSTALL_TARGET_HOOKS += KEXEC_REMOVE_LIB_TOOLS + +$(eval $(autotools-package)) diff --git a/buildroot/package/keyutils/0001-fix-install-rule.patch b/buildroot/package/keyutils/0001-fix-install-rule.patch new file mode 100644 index 0000000..3670d28 --- /dev/null +++ b/buildroot/package/keyutils/0001-fix-install-rule.patch @@ -0,0 +1,20 @@ +Makefile: fix install rule + +Do not link the .so with an absolute path, otherwise it may point to +the host library. + +Based on the former patch by Yann E. MORIN. + +Signed-off-by: Vicente Olivert Riera + +--- keyutils-1.5.9/Makefile.orig 2014-09-22 16:13:41.593562765 +0100 ++++ keyutils-1.5.9/Makefile 2014-09-22 16:14:05.377963952 +0100 +@@ -168,7 +168,7 @@ ifeq ($(NO_SOLIB),0) + $(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) + $(LNS) $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) + mkdir -p $(DESTDIR)$(USRLIBDIR) +- $(LNS) $(LIBDIR)/$(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB) ++ $(LNS) $(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB) + endif + $(INSTALL) -D keyctl $(DESTDIR)$(BINDIR)/keyctl + $(INSTALL) -D request-key $(DESTDIR)$(SBINDIR)/request-key diff --git a/buildroot/package/keyutils/0002-cifs.patch b/buildroot/package/keyutils/0002-cifs.patch new file mode 100644 index 0000000..b2903f9 --- /dev/null +++ b/buildroot/package/keyutils/0002-cifs.patch @@ -0,0 +1,15 @@ +Patch vampirised from Debian's packaging of keyutils-1.4 + +Author: Marcus Meissner +Description: Added 2 cifs helpers to request-key.conf (for CIFS DFS support) + +diff -Naurp keyutils.orig/request-key.conf keyutils/request-key.conf +--- keyutils.orig/request-key.conf 2008-09-07 23:53:10.000000000 +0000 ++++ keyutils/request-key.conf 2009-02-05 00:53:00.000000000 +0000 +@@ -34,4 +34,6 @@ + create user debug:* negate /bin/keyctl negate %k 30 %S + create user debug:loop:* * |/bin/cat + create user debug:* * /usr/share/keyutils/request-key-debug.sh %k %d %c %S ++create cifs.spnego * * /usr/sbin/cifs.upcall -c %k ++create dns_resolver * * /usr/sbin/cifs.upcall %k + negate * * * /bin/keyctl negate %k 30 %S diff --git a/buildroot/package/keyutils/0003-Add-missing-limits.h-include.patch b/buildroot/package/keyutils/0003-Add-missing-limits.h-include.patch new file mode 100644 index 0000000..45c8439 --- /dev/null +++ b/buildroot/package/keyutils/0003-Add-missing-limits.h-include.patch @@ -0,0 +1,32 @@ +From b2c6d3744dca029560d0d5e780f16561f8eeed53 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 12 Jul 2015 16:22:14 +0200 +Subject: [PATCH] Add missing include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +key.dns_resolver.c uses ‘UINT_MAX’ and ‘ULONG_MAX’, but forgets to +include , which causes build failure with certain C +libraries (notably the musl C library). + +Signed-off-by: Thomas Petazzoni +--- + key.dns_resolver.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/key.dns_resolver.c b/key.dns_resolver.c +index c2a9fe5..d41e219 100644 +--- a/key.dns_resolver.c ++++ b/key.dns_resolver.c +@@ -56,6 +56,7 @@ + #include + #include + #include ++#include + + static const char *DNS_PARSE_VERSION = "1.0"; + static const char prog[] = "key.dns_resolver"; +-- +2.4.5 + diff --git a/buildroot/package/keyutils/Config.in b/buildroot/package/keyutils/Config.in new file mode 100644 index 0000000..6f0758f --- /dev/null +++ b/buildroot/package/keyutils/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_KEYUTILS + bool "keyutils" + depends on !BR2_microblaze + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen + help + These tools are used to control the key management system + built into the Linux kernel. + + http://people.redhat.com/~dhowells/keyutils/ + +comment "keyutils needs a toolchain w/ dynamic library" + depends on !BR2_microblaze + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/keyutils/keyutils.hash b/buildroot/package/keyutils/keyutils.hash new file mode 100644 index 0000000..b14b7be --- /dev/null +++ b/buildroot/package/keyutils/keyutils.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 115c3deae7f181778fd0e0ffaa2dad1bf1fe2f5677cf2e0e348cdb7a1c93afb6 keyutils-1.5.10.tar.bz2 diff --git a/buildroot/package/keyutils/keyutils.mk b/buildroot/package/keyutils/keyutils.mk new file mode 100644 index 0000000..048b689 --- /dev/null +++ b/buildroot/package/keyutils/keyutils.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# keyutils +# +################################################################################ + +KEYUTILS_VERSION = 1.5.10 +KEYUTILS_SOURCE = keyutils-$(KEYUTILS_VERSION).tar.bz2 +KEYUTILS_SITE = http://people.redhat.com/~dhowells/keyutils +KEYUTILS_LICENSE = GPL-2.0+, LGPL-2.1+ +KEYUTILS_LICENSE_FILES = LICENCE.GPL LICENCE.LGPL +KEYUTILS_INSTALL_STAGING = YES + +KEYUTILS_MAKE_PARAMS = \ + INSTALL=$(INSTALL) \ + LIBDIR=/usr/lib \ + USRLIBDIR=/usr/lib \ + CFLAGS="$(TARGET_CFLAGS)" \ + CPPFLAGS="$(TARGET_CPPFLAGS) -I." \ + LNS="$(HOSTLN) -sf" + +ifeq ($(BR2_SHARED_LIBS),y) +KEYUTILS_MAKE_PARAMS += NO_ARLIB=1 +endif + +define KEYUTILS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(KEYUTILS_MAKE_PARAMS) -C $(@D) +endef + +define KEYUTILS_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(KEYUTILS_MAKE_PARAMS) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define KEYUTILS_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(KEYUTILS_MAKE_PARAMS) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/kismet/0001-ncurses.patch b/buildroot/package/kismet/0001-ncurses.patch new file mode 100644 index 0000000..af8fba5 --- /dev/null +++ b/buildroot/package/kismet/0001-ncurses.patch @@ -0,0 +1,11 @@ +--- kismet-2009-06-R1/configure 2009-06-12 04:26:32.000000000 +0100 ++++ kismet-2009-06-R1.mod/configure 2009-08-05 11:27:43.000000000 +0100 +@@ -6981,7 +6981,7 @@ + + + # Add additional cflags since some distros bury panel.h +-CPPFLAGS="$CPPFLAGS -I/usr/include/ncurses" ++#CPPFLAGS="$CPPFLAGS -I/usr/include/ncurses" + + termcontrol="none"; + diff --git a/buildroot/package/kismet/0002-nobsd.patch b/buildroot/package/kismet/0002-nobsd.patch new file mode 100644 index 0000000..451d9ce --- /dev/null +++ b/buildroot/package/kismet/0002-nobsd.patch @@ -0,0 +1,44 @@ +diff -Nura kismet-2009-06-R1/ifcontrol.cc kismet-2009-06-R1-nobsd/ifcontrol.cc +--- kismet-2009-06-R1/ifcontrol.cc 2009-04-08 16:57:44.000000000 -0300 ++++ kismet-2009-06-R1-nobsd/ifcontrol.cc 2009-09-01 12:54:44.000000000 -0300 +@@ -148,7 +148,7 @@ + devlinklen = readlink(devlink.c_str(), devlinktarget, 511); + if (devlinklen > 0) { + devlinktarget[devlinklen] = '\0'; +- rind = rindex(devlinktarget, '/'); ++ rind = strrchr(devlinktarget, '/'); + // If we found it and not at the end of the line + if (rind != NULL && (rind - devlinktarget) + 1 < devlinklen) + return string(rind + 1); +diff -Nura kismet-2009-06-R1/iwcontrol.cc kismet-2009-06-R1-nobsd/iwcontrol.cc +--- kismet-2009-06-R1/iwcontrol.cc 2009-04-20 00:22:55.000000000 -0300 ++++ kismet-2009-06-R1-nobsd/iwcontrol.cc 2009-09-01 12:54:44.000000000 -0300 +@@ -697,7 +697,7 @@ + return -1; + } + +- bzero(buffer, sizeof(buffer)); ++ memset(buffer, 0, sizeof(buffer)); + + memset(&wrq, 0, sizeof(struct iwreq)); + +@@ -732,7 +732,7 @@ + memcpy((char *) &range, buffer, sizeof(iw_range)); + } else { + /* Zero unknown fields */ +- bzero((char *) &range, sizeof(struct iw_range)); ++ memset((char *) &range, 0, sizeof(struct iw_range)); + + /* Initial part unmoved */ + memcpy((char *) &range, buffer, iwr15_off(num_channels)); +diff -Nura kismet-2009-06-R1/madwifing_control.cc kismet-2009-06-R1-nobsd/madwifing_control.cc +--- kismet-2009-06-R1/madwifing_control.cc 2009-03-22 23:19:19.000000000 -0300 ++++ kismet-2009-06-R1-nobsd/madwifing_control.cc 2009-09-01 12:54:42.000000000 -0300 +@@ -34,7 +34,6 @@ + #include + #include + #include +-#include + #include + #include + #include diff --git a/buildroot/package/kismet/0003-fix-curses-libs-ordering.patch b/buildroot/package/kismet/0003-fix-curses-libs-ordering.patch new file mode 100644 index 0000000..8d2b911 --- /dev/null +++ b/buildroot/package/kismet/0003-fix-curses-libs-ordering.patch @@ -0,0 +1,44 @@ +configure: fix ordering of ncurses libraries + +Says Vicente: + [T]he order is very important when doing static builds. + Otherwise we will see errors like this one: + + [...]/sysroot/usr/lib/libpanel.a(p_delete.o): + In function `del_panel': + p_delete.c:(.text+0x68): undefined reference to `_nc_panelhook' + +Fix the order configure adds libraries: new libraries should be added +at the *front* of the list, not at the end. + +Reported-by: Vicente Olivert Riera +Signed-off-by: "Yann E. MORIN" +Cc: Vicente Olivert Riera +[bernd.kuhls@t-online.de: update for 2016-07-R1] +Signed-off-by: Bernd Kuhls + +diff -durN kismet-Kismet-2014-02-R1.orig/configure.in kismet-Kismet-2014-02-R1/configure.in +--- kismet-Kismet-2014-02-R1.orig/configure.ac 2014-02-19 05:37:43.000000000 +0100 ++++ kismet-Kismet-2014-02-R1/configure.ac 2014-12-26 16:46:55.770692349 +0100 +@@ -437,10 +434,10 @@ + AC_MSG_ERROR(Failed to find curses.h or ncurses.h. You probably need to install the curses-devel package from your distribution) + fi + +- LIBS="$LIBS $curseaux" ++ LIBS="$curseaux $LIBS" + AC_CHECK_LIB([panel], [new_panel], + AC_DEFINE(HAVE_LIBPANEL, 1, Panel terminal lib) +- curseaux="$curseaux -lpanel", ++ curseaux="-lpanel $curseaux", + AC_MSG_ERROR(Failed to find libpanel extension to curses/ncurses. Install it, or disable building the Kismet client with --disable-client. Disabling the client is probably not something you want to do normally.)) + + AC_CHECK_HEADER([panel.h], [foundhpanel=yes]) +@@ -450,7 +447,7 @@ + + LIBS="$OLIBS" + +- CLIENTCLIBS="$CLIENTCLIBS $curseaux" ++ CLIENTCLIBS="$curseaux $CLIENTCLIBS" + fi + + AC_SUBST(CLIBS) diff --git a/buildroot/package/kismet/0004-no-include-host-paths.patch b/buildroot/package/kismet/0004-no-include-host-paths.patch new file mode 100644 index 0000000..6819bf4 --- /dev/null +++ b/buildroot/package/kismet/0004-no-include-host-paths.patch @@ -0,0 +1,25 @@ +configure: do not hard-code host paths + +configure hard-codes include dirs to contain /usr/include/ncurses. +Needless to say this does not work well for cross-compilation. + +Remove that directory from the include search dirs. + +Signed-off-by: "Yann E. MORIN" +Cc: Vicente Olivert Riera +[bernd.kuhls@t-online.de: update for 2016-07-R1] +Signed-off-by: Bernd Kuhls + +diff -durN kismet-Kismet-2014-02-R1.orig/configure.in kismet-Kismet-2014-02-R1/configure.in +--- kismet-Kismet-2014-02-R1.orig/configure.ac 2014-02-19 05:37:43.000000000 +0100 ++++ kismet-Kismet-2014-02-R1/configure.ac 2014-12-26 16:46:55.770692349 +0100 +@@ -406,9 +406,6 @@ + ) + AC_SUBST(wantclient) + +-# Add additional cflags since some distros bury panel.h +-CPPFLAGS="$CPPFLAGS -I/usr/include/ncurses" +- + termcontrol="none"; + + if test "$wantclient" = "yes"; then diff --git a/buildroot/package/kismet/0005-dumpfile_tuntap-don-t-include-linux-if_tun.h-kernel-.patch b/buildroot/package/kismet/0005-dumpfile_tuntap-don-t-include-linux-if_tun.h-kernel-.patch new file mode 100644 index 0000000..be69434 --- /dev/null +++ b/buildroot/package/kismet/0005-dumpfile_tuntap-don-t-include-linux-if_tun.h-kernel-.patch @@ -0,0 +1,51 @@ +From 1466cbbdef835634366b2eb3a284fdff5833338c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 19 Aug 2016 23:30:06 +0200 +Subject: [PATCH] dumpfile_tuntap: don't include linux/if_tun.h kernel header + +dumpfile_tuntap.h mixes userspace and kernel headers. + +As suggested in the musl wiki [1], remove the linux/include directives +and copy the required definitions. + +[1] http://wiki.musl-libc.org/wiki/FAQ + +Signed-off-by: Romain Naour +--- + dumpfile_tuntap.h | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +diff --git a/dumpfile_tuntap.h b/dumpfile_tuntap.h +index 37f50b6..8b23a2a 100644 +--- a/dumpfile_tuntap.h ++++ b/dumpfile_tuntap.h +@@ -64,17 +64,18 @@ + #include "packetchain.h" + #include "dumpfile.h" + +-#ifdef SYS_LINUX +-#include ++#ifdef SYS_LINUX ++/* TUNSETIFF ifr flags */ ++#define IFF_TUN 0x0001 ++#define IFF_TAP 0x0002 ++#define IFF_NO_PI 0x1000 + + // Linux IEEE80211 link typ to set + #define LNX_LINKTYPE_80211 801 +-// If the system headers don't have the TUNSETLINK ioctl, define it here, +-// and we'll figure it out at runtime +-#ifndef TUNSETLINK +-#define TUNSETLINK _IOW('T', 205, int) +-#endif +- ++/* Ioctl defines */ ++#define TUNSETNOCSUM _IOW('T', 200, int) ++#define TUNSETIFF _IOW('T', 202, int) ++#define TUNSETLINK _IOW('T', 205, int) + #endif + + struct ipc_dft_open { +-- +2.5.5 + diff --git a/buildroot/package/kismet/Config.in b/buildroot/package/kismet/Config.in new file mode 100644 index 0000000..ab91c0e --- /dev/null +++ b/buildroot/package/kismet/Config.in @@ -0,0 +1,42 @@ +comment "kismet needs a toolchain w/ threads, C++, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +config BR2_PACKAGE_KISMET + bool "kismet" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlfcn.h + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBNL + help + Kismet - 802.11 layer2 wireless network detector, sniffer, + and intrusion detection system. + + Kismet will work with any wireless card which supports raw + monitoring (rfmon) mode, and can sniff 802.11b, 802.11a, and + 802.11g traffic. + + Kismet identifies networks by passively collecting packets + and detecting standard named networks, detecting (and given + time, decloaking) hidden networks, and infering the presence + of nonbeaconing networks via data traffic. + + http://www.kismetwireless.net + +if BR2_PACKAGE_KISMET + +config BR2_PACKAGE_KISMET_CLIENT + bool "Install client" + +config BR2_PACKAGE_KISMET_DRONE + bool "Install drone" + +config BR2_PACKAGE_KISMET_SERVER + bool "Install server" + default y + +endif diff --git a/buildroot/package/kismet/kismet.hash b/buildroot/package/kismet/kismet.hash new file mode 100644 index 0000000..913dffc --- /dev/null +++ b/buildroot/package/kismet/kismet.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 bdb21f153311f1ff3b16621bf0d6740f66369bf0982b0a289c9a12af8847e237 kismet-2016-07-R1.tar.xz diff --git a/buildroot/package/kismet/kismet.mk b/buildroot/package/kismet/kismet.mk new file mode 100644 index 0000000..cee814b --- /dev/null +++ b/buildroot/package/kismet/kismet.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# kismet +# +################################################################################ + +KISMET_VERSION = 2016-07-R1 +KISMET_SOURCE = kismet-$(KISMET_VERSION).tar.xz +KISMET_SITE = http://www.kismetwireless.net/code +KISMET_DEPENDENCIES = host-pkgconf libpcap ncurses libnl +KISMET_CONF_OPTS += --with-netlink-version=3 +KISMET_LICENSE = GPL-2.0+ +KISMET_LICENSE_FILES = debian/copyright + +# We touch configure.in: +KISMET_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +KISMET_DEPENDENCIES += libcap +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +KISMET_DEPENDENCIES += pcre +endif + +ifeq ($(BR2_PACKAGE_KISMET_CLIENT),y) +KISMET_TARGET_BINARIES += kismet_client +endif + +ifeq ($(BR2_PACKAGE_KISMET_SERVER),y) +KISMET_TARGET_BINARIES += kismet_server +KISMET_TARGET_CONFIGS += kismet.conf +endif + +ifeq ($(BR2_PACKAGE_KISMET_DRONE),y) +KISMET_TARGET_BINARIES += kismet_drone +KISMET_TARGET_CONFIGS += kismet_drone.conf +endif + +ifdef KISMET_TARGET_BINARIES +define KISMET_INSTALL_TARGET_BINARIES + $(INSTALL) -m 755 $(addprefix $(KISMET_DIR)/, $(KISMET_TARGET_BINARIES)) $(TARGET_DIR)/usr/bin +endef +endif + +ifdef KISMET_TARGET_CONFIGS +define KISMET_INSTALL_TARGET_CONFIGS + $(INSTALL) -m 644 $(addprefix $(KISMET_DIR)/conf/, $(KISMET_TARGET_CONFIGS)) $(TARGET_DIR)/etc +endef +endif + +define KISMET_INSTALL_TARGET_CMDS + $(KISMET_INSTALL_TARGET_BINARIES) + $(KISMET_INSTALL_TARGET_CONFIGS) +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/kmod/0001-fix-O_CLOEXEC.patch b/buildroot/package/kmod/0001-fix-O_CLOEXEC.patch new file mode 100644 index 0000000..145ac34 --- /dev/null +++ b/buildroot/package/kmod/0001-fix-O_CLOEXEC.patch @@ -0,0 +1,48 @@ +From b39a62f6682463bcd47480348fac3dcd209a19a5 Mon Sep 17 00:00:00 2001 +From: Robert Yang +Date: Wed, 22 Jan 2014 01:06:40 -0500 +Subject: [PATCH] Add dummy definition of O_CLOEXEC + +O_CLOEXEC is introduced from Linux 2.6.23, so old kernel doesn't have +it, we need check before use. + +This patch is much more like a workaround, since it may need fcntl() use +FD_CLOEXEC to replace. + +This problem was reported by "Ting Liu " + +[Thomas De Schampheleire +Signed-off-by: Vicente Olivert Riera + +Upstream-status: rejected, suggests to add in buildroot instead [1] + +[1] http://news.gmane.org/find-root.php?message_id=1412062906%2d27378%2d1%2dgit%2dsend%2demail%2dpatrickdepinguin%40gmail.com + +--- + shared/missing.h | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/shared/missing.h b/shared/missing.h +index 4c0d136..e123e98 100644 +--- a/shared/missing.h ++++ b/shared/missing.h +@@ -19,6 +19,10 @@ + # define __NR_finit_module -1 + #endif + ++#ifndef O_CLOEXEC ++#define O_CLOEXEC 0 ++#endif ++ + #ifndef HAVE_FINIT_MODULE + #include + +-- +1.7.1 + diff --git a/buildroot/package/kmod/0002-shared-util.c-assert_cc-can-only-be-used-inside-func.patch b/buildroot/package/kmod/0002-shared-util.c-assert_cc-can-only-be-used-inside-func.patch new file mode 100644 index 0000000..09fe252 --- /dev/null +++ b/buildroot/package/kmod/0002-shared-util.c-assert_cc-can-only-be-used-inside-func.patch @@ -0,0 +1,56 @@ +From 7cd698eb31059012305d8bb7516577c8cd383e32 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 3 Jun 2017 16:52:37 +0200 +Subject: [PATCH] shared/util.c: assert_cc() can only be used inside functions + +shared/macro.h has two versions of assert_cc, one that uses gcc +_Static_assert(), which requires recent enough gcc versions, and one +that uses a fake array to trigger a build error. The latter can only +work inside functions, so assert_cc() should only be used inside +functions. + +Fixes the following build failure when building kmod with old gcc +versions such as gcc 4.3.x: + +shared/util.c:52: error: expected identifier or '(' before 'do' +shared/util.c:52: error: expected identifier or '(' before 'while' + +Signed-off-by: Thomas Petazzoni +--- + shared/util.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/shared/util.c b/shared/util.c +index 9de080a..fd2028d 100644 +--- a/shared/util.c ++++ b/shared/util.c +@@ -49,8 +49,6 @@ static const struct kmod_ext { + { } + }; + +-assert_cc(EAGAIN == EWOULDBLOCK); +- + /* string handling functions and memory allocations */ + /* ************************************************************************ */ + +@@ -201,6 +199,8 @@ ssize_t read_str_safe(int fd, char *buf, size_t buflen) + size_t todo = buflen - 1; + size_t done = 0; + ++ assert_cc(EAGAIN == EWOULDBLOCK); ++ + do { + ssize_t r = read(fd, buf + done, todo); + +@@ -226,6 +226,8 @@ ssize_t write_str_safe(int fd, const char *buf, size_t buflen) + size_t todo = buflen; + size_t done = 0; + ++ assert_cc(EAGAIN == EWOULDBLOCK); ++ + do { + ssize_t r = write(fd, buf + done, todo); + +-- +2.7.4 + diff --git a/buildroot/package/kmod/Config.in b/buildroot/package/kmod/Config.in new file mode 100644 index 0000000..e59b281 --- /dev/null +++ b/buildroot/package/kmod/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_KMOD + bool "kmod" + depends on !BR2_STATIC_LIBS + help + handle kernel modules + + http://git.kernel.org/?p=utils/kernel/kmod/kmod.git + +if BR2_PACKAGE_KMOD + +config BR2_PACKAGE_KMOD_TOOLS + bool "kmod utilities" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Install kmod module utilities (depmod, insmod, lsmod, + modinfo, modprobe, rmmod). + +endif + +comment "kmod needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/kmod/kmod.hash b/buildroot/package/kmod/kmod.hash new file mode 100644 index 0000000..be350c4 --- /dev/null +++ b/buildroot/package/kmod/kmod.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/utils/kernel/kmod/sha256sums.asc +sha256 610b8d1df172acc39a4fdf1eaa47a57b04873c82f32152e7a62e29b6ff9cb397 kmod-24.tar.xz diff --git a/buildroot/package/kmod/kmod.mk b/buildroot/package/kmod/kmod.mk new file mode 100644 index 0000000..e1149b7 --- /dev/null +++ b/buildroot/package/kmod/kmod.mk @@ -0,0 +1,83 @@ +################################################################################ +# +# kmod +# +################################################################################ + +KMOD_VERSION = 24 +KMOD_SOURCE = kmod-$(KMOD_VERSION).tar.xz +KMOD_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/kernel/kmod +KMOD_INSTALL_STAGING = YES +KMOD_DEPENDENCIES = host-pkgconf +HOST_KMOD_DEPENDENCIES = host-pkgconf + +# license info for libkmod only, conditionally add more below +KMOD_LICENSE = LGPL-2.1+ (library) +KMOD_LICENSE_FILES = libkmod/COPYING + +# --gc-sections triggers binutils ld segfault +# https://sourceware.org/bugzilla/show_bug.cgi?id=21180 +ifeq ($(BR2_microblaze),y) +KMOD_CONF_ENV += cc_cv_LDFLAGS__Wl___gc_sections=false +endif + +# static linking not supported, see +# https://git.kernel.org/cgit/utils/kernel/kmod/kmod.git/commit/?id=b7016153ec8 +KMOD_CONF_OPTS = --disable-static --enable-shared + +KMOD_CONF_OPTS += --disable-manpages +HOST_KMOD_CONF_OPTS = --disable-manpages + +ifeq ($(BR2_PACKAGE_ZLIB),y) +KMOD_DEPENDENCIES += zlib +KMOD_CONF_OPTS += --with-zlib +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +KMOD_DEPENDENCIES += xz +KMOD_CONF_OPTS += --with-xz +endif + +ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y) +KMOD_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3) +KMOD_CONF_OPTS += --enable-python +endif + +ifeq ($(BR2_PACKAGE_KMOD_TOOLS),y) + +# add license info for kmod tools +KMOD_LICENSE := $(KMOD_LICENSE), GPL-2.0+ (tools) +KMOD_LICENSE_FILES += COPYING + +# take precedence over busybox implementation +KMOD_DEPENDENCIES += $(if $(BR2_PACKAGE_BUSYBOX),busybox) + +# /sbin is really /usr/sbin with merged /usr, so adjust relative symlink +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +KMOD_BIN_PATH = ../bin/kmod +else +KMOD_BIN_PATH = ../usr/bin/kmod +endif + +define KMOD_INSTALL_TOOLS + for i in depmod insmod lsmod modinfo modprobe rmmod; do \ + ln -sf $(KMOD_BIN_PATH) $(TARGET_DIR)/sbin/$$i; \ + done +endef + +KMOD_POST_INSTALL_TARGET_HOOKS += KMOD_INSTALL_TOOLS +else +KMOD_CONF_OPTS += --disable-tools +endif + +# We only install depmod, since that's the only tool used for the +# host. +define HOST_KMOD_INSTALL_TOOLS + mkdir -p $(HOST_DIR)/sbin/ + ln -sf ../bin/kmod $(HOST_DIR)/sbin/depmod +endef + +HOST_KMOD_POST_INSTALL_HOOKS += HOST_KMOD_INSTALL_TOOLS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/kmscube/Config.in b/buildroot/package/kmscube/Config.in new file mode 100644 index 0000000..b9fe627 --- /dev/null +++ b/buildroot/package/kmscube/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KMSCUBE + bool "kmscube" + # requires libgbm from mesa3d + depends on BR2_PACKAGE_MESA3D_OPENGL_EGL + depends on BR2_PACKAGE_MESA3D_OPENGL_ES + help + kmscube is an application to test kms/drm drivers. + + https://cgit.freedesktop.org/mesa/kmscube/ diff --git a/buildroot/package/kmscube/kmscube.hash b/buildroot/package/kmscube/kmscube.hash new file mode 100644 index 0000000..e306d00 --- /dev/null +++ b/buildroot/package/kmscube/kmscube.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 254d34209740731a557469030c960bbfd2299485a2ad0cbed2f7040b56a292a7 kmscube-6cbd03ab94066dddbba7bedfde87c7c4319c18d5.tar.gz diff --git a/buildroot/package/kmscube/kmscube.mk b/buildroot/package/kmscube/kmscube.mk new file mode 100644 index 0000000..37983b1 --- /dev/null +++ b/buildroot/package/kmscube/kmscube.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kmscube +# +################################################################################ + +KMSCUBE_VERSION = 6cbd03ab94066dddbba7bedfde87c7c4319c18d5 +KMSCUBE_SITE = https://cgit.freedesktop.org/mesa/kmscube/snapshot +KMSCUBE_LICENSE = MIT +KMSCUBE_DEPENDENCIES = host-pkgconf mesa3d libdrm +KMSCUBE_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/kmsxx/Config.in b/buildroot/package/kmsxx/Config.in new file mode 100644 index 0000000..1d174c1 --- /dev/null +++ b/buildroot/package/kmsxx/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_KMSXX + bool "kms++" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + select BR2_PACKAGE_LIBDRM + help + libkms++ is a C++11 library for kernel mode setting. + + Also included are simple test tools for KMS. + + https://github.com/tomba/kmsxx + +if BR2_PACKAGE_KMSXX + +config BR2_PACKAGE_KMSXX_INSTALL_TESTS + bool "Install test programs" + help + This option allows to install the kmsxx test programs. + +endif + +comment "kms++ needs a toolchain w/ threads, C++, gcc >= 4.8, headers >= 3.8" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 diff --git a/buildroot/package/kmsxx/kmsxx.hash b/buildroot/package/kmsxx/kmsxx.hash new file mode 100644 index 0000000..94a9ea1 --- /dev/null +++ b/buildroot/package/kmsxx/kmsxx.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 28892e50c1d1c83fddff9ec683e3bdbd465f5032d0014ceeab43563b813807e1 kmsxx-cb0786049f960f2bd383617151b01318e02e9ff9.tar.gz diff --git a/buildroot/package/kmsxx/kmsxx.mk b/buildroot/package/kmsxx/kmsxx.mk new file mode 100644 index 0000000..dc0f8c1 --- /dev/null +++ b/buildroot/package/kmsxx/kmsxx.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# kmsxx +# +################################################################################ + +KMSXX_VERSION = cb0786049f960f2bd383617151b01318e02e9ff9 +KMSXX_SITE = $(call github,tomba,kmsxx,$(KMSXX_VERSION)) +KMSXX_LICENSE = MPL-2.0 +KMSXX_LICENSE_FILES = LICENSE +KMSXX_INSTALL_STAGING = YES +KMSXX_DEPENDENCIES = libdrm host-pkgconf +KMSXX_CONF_OPTS = -DKMSXX_ENABLE_PYTHON=OFF + +# Internal error, aborting at dw2gencfi.c:214 in emit_expr_encoded +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79509 +ifeq ($(BR2_m68k_cf),y) +KMSXX_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -fno-dwarf2-cfi-asm" +endif + +ifeq ($(BR2_PACKAGE_KMSXX_INSTALL_TESTS),y) +KMSXX_TESTS = \ + fbtest kmsblank kmscapture \ + kmsprint kmstest kmsview wbcap \ + wbm2m + +define KMSXX_INSTALL_TARGET_TESTS + $(foreach t,$(KMSXX_TESTS),\ + $(INSTALL) -D -m 0755 $(@D)/bin/$(t) \ + $(TARGET_DIR)/usr/bin/$(t) + ) +endef +endif + +KMSXX_LIBS = kms++ kms++util + +define KMSXX_INSTALL_TARGET_CMDS + $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS), + $(foreach l,$(KMSXX_LIBS),\ + $(INSTALL) -D -m 0755 $(@D)/lib/lib$(l).so \ + $(TARGET_DIR)/usr/lib/lib$(l).so + ) + ) + $(KMSXX_INSTALL_TARGET_TESTS) +endef + +# kmsxx only builds shared or static libraries, so when +# BR2_SHARED_STATIC_LIBS=y, we don't have any static library to +# install +define KMSXX_INSTALL_STAGING_CMDS + $(foreach l,$(KMSXX_LIBS),\ + $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS), + $(INSTALL) -D -m 0755 $(@D)/lib/lib$(l).so \ + $(STAGING_DIR)/usr/lib/lib$(l).so) + $(if $(BR2_STATIC_LIBS), + $(INSTALL) -D -m 0755 $(@D)/lib/lib$(l).a \ + $(STAGING_DIR)/usr/lib/lib$(l).a) + mkdir -p $(STAGING_DIR)/usr/include/$(l) + cp -dpfr $(@D)/$(l)/inc/$(l)/* $(STAGING_DIR)/usr/include/$(l)/ + ) +endef + +$(eval $(cmake-package)) diff --git a/buildroot/package/knock/Config.in b/buildroot/package/knock/Config.in new file mode 100644 index 0000000..0060ad0 --- /dev/null +++ b/buildroot/package/knock/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_KNOCK + bool "knock" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPCAP + help + A port knocking implementation. + Provides a daemon and a user application. Port knocking can be + used to run an arbitrary application, once the daemon detects + a predefined sequence of incoming TCP/UDP packets on a network + interface. This can be used, e.g. to open up ports in a + firewall. + + http://www.zeroflux.org/projects/knock diff --git a/buildroot/package/knock/knock.hash b/buildroot/package/knock/knock.hash new file mode 100644 index 0000000..3599e43 --- /dev/null +++ b/buildroot/package/knock/knock.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 940a8de61b4b3530560805c3b9310a077c28c99173c2ccb07ff96720b0e93c58 knock-258a27e5a47809f97c2b9f2751a88c2f94aae891.tar.gz diff --git a/buildroot/package/knock/knock.mk b/buildroot/package/knock/knock.mk new file mode 100644 index 0000000..55f5bfd --- /dev/null +++ b/buildroot/package/knock/knock.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# knock +# +################################################################################ + +KNOCK_VERSION = 258a27e5a47809f97c2b9f2751a88c2f94aae891 +KNOCK_SITE = $(call github,jvinet,knock,$(KNOCK_VERSION)) +KNOCK_AUTORECONF = YES +KNOCK_LICENSE = GPL-2.0+ +KNOCK_LICENSE_FILES = COPYING +KNOCK_DEPENDENCIES = libpcap + +ifeq ($(BR2_STATIC_LIBS),y) +KNOCK_CONF_OPTS = LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/kodi-adsp-basic/Config.in b/buildroot/package/kodi-adsp-basic/Config.in new file mode 100644 index 0000000..87bdd19 --- /dev/null +++ b/buildroot/package/kodi-adsp-basic/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_KODI_ADSP_BASIC + bool "kodi-adsp-basic" + select BR2_PACKAGE_LIBPLATFORM + select BR2_PACKAGE_KODI_PLATFORM + help + This add-on contains basic dsp related parts to handle + speaker delays, channel related volume amplification. As + mode it supports a Dolby Pro Logic II compatible + multichannel downmix to stereo, which becomes available if + only 2 channel output on Kodi is selected. + + https://github.com/kodi-adsp/adsp.basic diff --git a/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.hash b/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.hash new file mode 100644 index 0000000..10dd773 --- /dev/null +++ b/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d6ef031157ceb825a6e6ba114fb20c622ef7f396ddd17ae8bf1954aab25bc2af kodi-adsp-basic-2ae604e591346741324663260696cfa231931870.tar.gz diff --git a/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.mk b/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.mk new file mode 100644 index 0000000..bb114a4 --- /dev/null +++ b/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-adsp-basic +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_ADSP_BASIC_VERSION = 2ae604e591346741324663260696cfa231931870 +KODI_ADSP_BASIC_SITE = $(call github,kodi-adsp,adsp.basic,$(KODI_ADSP_BASIC_VERSION)) +KODI_ADSP_BASIC_LICENSE = GPL-3.0+ +KODI_ADSP_BASIC_LICENSE_FILES = LICENSE.md +KODI_ADSP_BASIC_DEPENDENCIES = libplatform kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-adsp-freesurround/Config.in b/buildroot/package/kodi-adsp-freesurround/Config.in new file mode 100644 index 0000000..80aadf1 --- /dev/null +++ b/buildroot/package/kodi-adsp-freesurround/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_KODI_ADSP_FREESURROUND + bool "kodi-adsp-freesurround" + select BR2_PACKAGE_LIBPLATFORM + select BR2_PACKAGE_KODI_PLATFORM + help + FreeSurround is meant to be the KODI equivalent of your + hi-fi receiver's Dolby ProLogic II button. It's purpose is + to decode surround information from your stereo music and to + produce multichannel output from it. + + https://github.com/kodi-adsp/adsp.freesurround diff --git a/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.hash b/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.hash new file mode 100644 index 0000000..2649bbd --- /dev/null +++ b/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 cf6985be6839530027861b54e2146693d05e802363281ef6f8c1f352dbf94b5c kodi-adsp-freesurround-34f50406bcba22e364711562e5b9205e57ae844b.tar.gz diff --git a/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.mk b/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.mk new file mode 100644 index 0000000..927af74 --- /dev/null +++ b/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-adsp-freesurround +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_ADSP_FREESURROUND_VERSION = 34f50406bcba22e364711562e5b9205e57ae844b +KODI_ADSP_FREESURROUND_SITE = $(call github,kodi-adsp,adsp.freesurround,$(KODI_ADSP_FREESURROUND_VERSION)) +KODI_ADSP_FREESURROUND_LICENSE = GPL-3.0+ +KODI_ADSP_FREESURROUND_LICENSE_FILES = LICENSE.md +KODI_ADSP_FREESURROUND_DEPENDENCIES = libplatform kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audiodecoder-modplug/Config.in b/buildroot/package/kodi-audiodecoder-modplug/Config.in new file mode 100644 index 0000000..0269973 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-modplug/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_MODPLUG + bool "kodi-audiodecoder-modplug" + select BR2_PACKAGE_KODI_PLATFORM + select BR2_PACKAGE_LIBMODPLUG + help + Modplug decoder addon for Kodi + + https://github.com/notspiff/audiodecoder.modplug diff --git a/buildroot/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.hash b/buildroot/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.hash new file mode 100644 index 0000000..9b1c211 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 8be4f8c6324bf790069e42c963e14733c53fcdc27548f21f4822b178f47b8177 kodi-audiodecoder-modplug-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.mk b/buildroot/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.mk new file mode 100644 index 0000000..c5a6f32 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-modplug/kodi-audiodecoder-modplug.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-modplug +# +################################################################################ + +KODI_AUDIODECODER_MODPLUG_VERSION = v1.1.0 +KODI_AUDIODECODER_MODPLUG_SITE = $(call github,notspiff,audiodecoder.modplug,$(KODI_AUDIODECODER_MODPLUG_VERSION)) +KODI_AUDIODECODER_MODPLUG_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_MODPLUG_LICENSE_FILES = src/ModplugCodec.cpp +KODI_AUDIODECODER_MODPLUG_DEPENDENCIES = kodi-platform libmodplug + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audiodecoder-nosefart/Config.in b/buildroot/package/kodi-audiodecoder-nosefart/Config.in new file mode 100644 index 0000000..96591aa --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-nosefart/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_NOSEFART + bool "kodi-audiodecoder-nosefart" + select BR2_PACKAGE_KODI_PLATFORM + help + Nosefart decoder addon for Kodi + + https://github.com/notspiff/audiodecoder.nosefart diff --git a/buildroot/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.hash b/buildroot/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.hash new file mode 100644 index 0000000..df93b25 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 444cc85f4618daa5147a63633db3f300123d5e33b1b5894e7036fa9243e8a535 kodi-audiodecoder-nosefart-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.mk b/buildroot/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.mk new file mode 100644 index 0000000..f56dc19 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-nosefart/kodi-audiodecoder-nosefart.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-nosefart +# +################################################################################ + +KODI_AUDIODECODER_NOSEFART_VERSION = v1.1.0 +KODI_AUDIODECODER_NOSEFART_SITE = $(call github,notspiff,audiodecoder.nosefart,$(KODI_AUDIODECODER_NOSEFART_VERSION)) +KODI_AUDIODECODER_NOSEFART_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_NOSEFART_LICENSE_FILES = src/NSFCodec.cpp +KODI_AUDIODECODER_NOSEFART_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audiodecoder-opus/Config.in b/buildroot/package/kodi-audiodecoder-opus/Config.in new file mode 100644 index 0000000..12d7247 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-opus/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_OPUS + bool "kodi-audiodecoder-opus" + select BR2_PACKAGE_KODI_PLATFORM + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_OPUS + select BR2_PACKAGE_OPUSFILE + help + Opus audio decoder for Kodi + + https://github.com/notspiff/audiodecoder.opus diff --git a/buildroot/package/kodi-audiodecoder-opus/kodi-audiodecoder-opus.hash b/buildroot/package/kodi-audiodecoder-opus/kodi-audiodecoder-opus.hash new file mode 100644 index 0000000..117e9f8 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-opus/kodi-audiodecoder-opus.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 bb7037f903f0396da739005843264acd7227cf96eeeac78b0e36d82872c9acc4 kodi-audiodecoder-opus-d6eb25f0c08033f9a2b4d7402e8baf866ebc731c.tar.gz diff --git a/buildroot/package/kodi-audiodecoder-opus/kodi-audiodecoder-opus.mk b/buildroot/package/kodi-audiodecoder-opus/kodi-audiodecoder-opus.mk new file mode 100644 index 0000000..d93c33a --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-opus/kodi-audiodecoder-opus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-opus +# +################################################################################ + +KODI_AUDIODECODER_OPUS_VERSION = d6eb25f0c08033f9a2b4d7402e8baf866ebc731c +KODI_AUDIODECODER_OPUS_SITE = $(call github,notspiff,audiodecoder.opus,$(KODI_AUDIODECODER_OPUS_VERSION)) +KODI_AUDIODECODER_OPUS_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_OPUS_LICENSE_FILES = src/OpusCodec.cpp +KODI_AUDIODECODER_OPUS_DEPENDENCIES = kodi-platform libogg opus opusfile + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audiodecoder-sidplay/Config.in b/buildroot/package/kodi-audiodecoder-sidplay/Config.in new file mode 100644 index 0000000..ae99afa --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-sidplay/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_SIDPLAY + bool "kodi-audiodecoder-sidplay" + select BR2_PACKAGE_KODI_PLATFORM + select BR2_PACKAGE_LIBSIDPLAY2 + help + Sidplay decoder addon for Kodi + + https://github.com/notspiff/audiodecoder.sidplay diff --git a/buildroot/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.hash b/buildroot/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.hash new file mode 100644 index 0000000..b806956 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 527b188679add8043e8cd691af9735b6fe8bd6935ad8ac8312b459d6f160cdac kodi-audiodecoder-sidplay-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.mk b/buildroot/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.mk new file mode 100644 index 0000000..8eb425f --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-sidplay/kodi-audiodecoder-sidplay.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-sidplay +# +################################################################################ + +KODI_AUDIODECODER_SIDPLAY_VERSION = v1.1.0 +KODI_AUDIODECODER_SIDPLAY_SITE = $(call github,notspiff,audiodecoder.sidplay,$(KODI_AUDIODECODER_SIDPLAY_VERSION)) +KODI_AUDIODECODER_SIDPLAY_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_SIDPLAY_LICENSE_FILES = src/SIDCodec.cpp +KODI_AUDIODECODER_SIDPLAY_DEPENDENCIES = host-pkgconf kodi-platform libsidplay2 + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audiodecoder-snesapu/Config.in b/buildroot/package/kodi-audiodecoder-snesapu/Config.in new file mode 100644 index 0000000..0cb572f --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-snesapu/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_SNESAPU + bool "kodi-audiodecoder-snesapu" + select BR2_PACKAGE_KODI_PLATFORM + help + SPC decoder addon for Kodi + + https://github.com/notspiff/audiodecoder.snesapu diff --git a/buildroot/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.hash b/buildroot/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.hash new file mode 100644 index 0000000..159d67e --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 20d85822d0c01223903b5e5472a1d029fa4931c2a9ac4d399345c4363fa8f905 kodi-audiodecoder-snesapu-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.mk b/buildroot/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.mk new file mode 100644 index 0000000..6104de7 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-snesapu/kodi-audiodecoder-snesapu.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-snesapu +# +################################################################################ + +KODI_AUDIODECODER_SNESAPU_VERSION = v1.1.0 +KODI_AUDIODECODER_SNESAPU_SITE = $(call github,notspiff,audiodecoder.snesapu,$(KODI_AUDIODECODER_SNESAPU_VERSION)) +KODI_AUDIODECODER_SNESAPU_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_SNESAPU_LICENSE_FILES = src/SPCCodec.cpp +KODI_AUDIODECODER_SNESAPU_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audiodecoder-stsound/Config.in b/buildroot/package/kodi-audiodecoder-stsound/Config.in new file mode 100644 index 0000000..6be216a --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-stsound/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_STSOUND + bool "kodi-audiodecoder-stsound" + select BR2_PACKAGE_KODI_PLATFORM + help + YM decoder addon for Kodi + + https://github.com/notspiff/audiodecoder.stsound diff --git a/buildroot/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.hash b/buildroot/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.hash new file mode 100644 index 0000000..133e645 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 c9b6e98d544712f7cec3cf18f866ccaed2fbcd20410179259ae0455ffa967ca4 kodi-audiodecoder-stsound-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.mk b/buildroot/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.mk new file mode 100644 index 0000000..dd5b9da --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-stsound/kodi-audiodecoder-stsound.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-stsound +# +################################################################################ + +KODI_AUDIODECODER_STSOUND_VERSION = v1.1.0 +KODI_AUDIODECODER_STSOUND_SITE = $(call github,notspiff,audiodecoder.stsound,$(KODI_AUDIODECODER_STSOUND_VERSION)) +KODI_AUDIODECODER_STSOUND_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_STSOUND_LICENSE_FILES = src/YMCodec.cpp +KODI_AUDIODECODER_STSOUND_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audiodecoder-timidity/Config.in b/buildroot/package/kodi-audiodecoder-timidity/Config.in new file mode 100644 index 0000000..3372dc5 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-timidity/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_TIMIDITY + bool "kodi-audiodecoder-timidity" + help + Timidity decoder addon for Kodi + + https://github.com/notspiff/audiodecoder.timidity diff --git a/buildroot/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.hash b/buildroot/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.hash new file mode 100644 index 0000000..5711b87 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 83a740010dc7fa01101da370c74e79287ebd67bd28d27125e4372abe2fb3bb47 kodi-audiodecoder-timidity-v1.1.1.tar.gz diff --git a/buildroot/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.mk b/buildroot/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.mk new file mode 100644 index 0000000..e4a97fa --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-timidity/kodi-audiodecoder-timidity.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-timidity +# +################################################################################ + +KODI_AUDIODECODER_TIMIDITY_VERSION = v1.1.1 +KODI_AUDIODECODER_TIMIDITY_SITE = $(call github,notspiff,audiodecoder.timidity,$(KODI_AUDIODECODER_TIMIDITY_VERSION)) +KODI_AUDIODECODER_TIMIDITY_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_TIMIDITY_LICENSE_FILES = src/TimidityCodec.cpp +KODI_AUDIODECODER_TIMIDITY_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audiodecoder-vgmstream/Config.in b/buildroot/package/kodi-audiodecoder-vgmstream/Config.in new file mode 100644 index 0000000..ebf83df --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-vgmstream/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_AUDIODECODER_VGMSTREAM + bool "kodi-audiodecoder-vgmstream" + select BR2_PACKAGE_KODI_PLATFORM + help + VGM decoder addon for Kodi + + https://github.com/notspiff/audiodecoder.vgmstream diff --git a/buildroot/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.hash b/buildroot/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.hash new file mode 100644 index 0000000..28f4272 --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 40cd4f7f143c9313a4437854e31c460046af47bd709364439f0e370ec464af0d kodi-audiodecoder-vgmstream-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.mk b/buildroot/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.mk new file mode 100644 index 0000000..8dc09fa --- /dev/null +++ b/buildroot/package/kodi-audiodecoder-vgmstream/kodi-audiodecoder-vgmstream.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audiodecoder-vgmstream +# +################################################################################ + +KODI_AUDIODECODER_VGMSTREAM_VERSION = v1.1.0 +KODI_AUDIODECODER_VGMSTREAM_SITE = $(call github,notspiff,audiodecoder.vgmstream,$(KODI_AUDIODECODER_VGMSTREAM_VERSION)) +KODI_AUDIODECODER_VGMSTREAM_LICENSE = GPL-2.0+ +KODI_AUDIODECODER_VGMSTREAM_LICENSE_FILES = src/VGMCodec.cpp +KODI_AUDIODECODER_VGMSTREAM_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audioencoder-flac/Config.in b/buildroot/package/kodi-audioencoder-flac/Config.in new file mode 100644 index 0000000..95acbba --- /dev/null +++ b/buildroot/package/kodi-audioencoder-flac/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KODI_AUDIOENCODER_FLAC + bool "kodi-audioencoder-flac" + select BR2_PACKAGE_FLAC + select BR2_PACKAGE_KODI_OPTICALDRIVE + select BR2_PACKAGE_LIBOGG + help + An audioencoder addon for Kodi + + https://github.com/xbmc/audioencoder.flac diff --git a/buildroot/package/kodi-audioencoder-flac/kodi-audioencoder-flac.hash b/buildroot/package/kodi-audioencoder-flac/kodi-audioencoder-flac.hash new file mode 100644 index 0000000..41ddeb4 --- /dev/null +++ b/buildroot/package/kodi-audioencoder-flac/kodi-audioencoder-flac.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 811dac5766dc9ef1a3447c55637edde55c5ddca1d583124e9312328152015ae5 kodi-audioencoder-flac-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-audioencoder-flac/kodi-audioencoder-flac.mk b/buildroot/package/kodi-audioencoder-flac/kodi-audioencoder-flac.mk new file mode 100644 index 0000000..d1c41ca --- /dev/null +++ b/buildroot/package/kodi-audioencoder-flac/kodi-audioencoder-flac.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audioencoder-flac +# +################################################################################ + +KODI_AUDIOENCODER_FLAC_VERSION = v1.1.0 +KODI_AUDIOENCODER_FLAC_SITE = $(call github,xbmc,audioencoder.flac,$(KODI_AUDIOENCODER_FLAC_VERSION)) +KODI_AUDIOENCODER_FLAC_LICENSE = GPL-2.0+ +KODI_AUDIOENCODER_FLAC_LICENSE_FILES = src/EncoderFlac.cpp +KODI_AUDIOENCODER_FLAC_DEPENDENCIES = flac kodi libogg host-pkgconf + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audioencoder-lame/Config.in b/buildroot/package/kodi-audioencoder-lame/Config.in new file mode 100644 index 0000000..dc6a0cd --- /dev/null +++ b/buildroot/package/kodi-audioencoder-lame/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_AUDIOENCODER_LAME + bool "kodi-audioencoder-lame" + select BR2_PACKAGE_KODI_OPTICALDRIVE + select BR2_PACKAGE_LAME + help + An audioencoder addon for Kodi + + https://github.com/xbmc/audioencoder.lame diff --git a/buildroot/package/kodi-audioencoder-lame/kodi-audioencoder-lame.hash b/buildroot/package/kodi-audioencoder-lame/kodi-audioencoder-lame.hash new file mode 100644 index 0000000..b93ae02 --- /dev/null +++ b/buildroot/package/kodi-audioencoder-lame/kodi-audioencoder-lame.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 5118a2925bb0f7eca36b2d0f4d6822b45a8967c9fb91054bfaa8f83d21209c95 kodi-audioencoder-lame-v1.2.0.tar.gz diff --git a/buildroot/package/kodi-audioencoder-lame/kodi-audioencoder-lame.mk b/buildroot/package/kodi-audioencoder-lame/kodi-audioencoder-lame.mk new file mode 100644 index 0000000..941604a --- /dev/null +++ b/buildroot/package/kodi-audioencoder-lame/kodi-audioencoder-lame.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-audioencoder-lame +# +################################################################################ + +KODI_AUDIOENCODER_LAME_VERSION = v1.2.0 +KODI_AUDIOENCODER_LAME_SITE = $(call github,xbmc,audioencoder.lame,$(KODI_AUDIOENCODER_LAME_VERSION)) +KODI_AUDIOENCODER_LAME_LICENSE = GPL-2.0+ +KODI_AUDIOENCODER_LAME_LICENSE_FILES = src/EncoderLame.cpp +KODI_AUDIOENCODER_LAME_DEPENDENCIES = kodi lame +KODI_AUDIOENCODER_LAME_CONF_OPTS += \ + -DLAME_INCLUDE_DIRS=$(STAGING_DIR)/usr/include + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audioencoder-vorbis/Config.in b/buildroot/package/kodi-audioencoder-vorbis/Config.in new file mode 100644 index 0000000..8b84626 --- /dev/null +++ b/buildroot/package/kodi-audioencoder-vorbis/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KODI_AUDIOENCODER_VORBIS + bool "kodi-audioencoder-vorbis" + select BR2_PACKAGE_KODI_OPTICALDRIVE + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + help + An audioencoder addon for Kodi + + https://github.com/xbmc/audioencoder.vorbis diff --git a/buildroot/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.hash b/buildroot/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.hash new file mode 100644 index 0000000..094b2fa --- /dev/null +++ b/buildroot/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f00c74f010b465d43e8206bcbe155785e1f34660ca010acff3b890595ea2352c kodi-audioencoder-vorbis-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.mk b/buildroot/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.mk new file mode 100644 index 0000000..198d3b1 --- /dev/null +++ b/buildroot/package/kodi-audioencoder-vorbis/kodi-audioencoder-vorbis.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audioencoder-vorbis +# +################################################################################ + +KODI_AUDIOENCODER_VORBIS_VERSION = v1.1.0 +KODI_AUDIOENCODER_VORBIS_SITE = $(call github,xbmc,audioencoder.vorbis,$(KODI_AUDIOENCODER_VORBIS_VERSION)) +KODI_AUDIOENCODER_VORBIS_LICENSE = GPL-2.0+ +KODI_AUDIOENCODER_VORBIS_LICENSE_FILES = src/EncoderVorbis.cpp +KODI_AUDIOENCODER_VORBIS_DEPENDENCIES = kodi libogg libvorbis host-pkgconf + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-audioencoder-wav/Config.in b/buildroot/package/kodi-audioencoder-wav/Config.in new file mode 100644 index 0000000..6bdbb9a --- /dev/null +++ b/buildroot/package/kodi-audioencoder-wav/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_AUDIOENCODER_WAV + bool "kodi-audioencoder-wav" + select BR2_PACKAGE_KODI_OPTICALDRIVE + help + An audioencoder addon for Kodi + + https://github.com/xbmc/audioencoder.wav diff --git a/buildroot/package/kodi-audioencoder-wav/kodi-audioencoder-wav.hash b/buildroot/package/kodi-audioencoder-wav/kodi-audioencoder-wav.hash new file mode 100644 index 0000000..c6bbe79 --- /dev/null +++ b/buildroot/package/kodi-audioencoder-wav/kodi-audioencoder-wav.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f9b0f79c8364fb7ef584137031fceb8d2ab1af28e110cfe2a31932631cb8d36e kodi-audioencoder-wav-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-audioencoder-wav/kodi-audioencoder-wav.mk b/buildroot/package/kodi-audioencoder-wav/kodi-audioencoder-wav.mk new file mode 100644 index 0000000..1a9a6b7 --- /dev/null +++ b/buildroot/package/kodi-audioencoder-wav/kodi-audioencoder-wav.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-audioencoder-wav +# +################################################################################ + +KODI_AUDIOENCODER_WAV_VERSION = v1.1.0 +KODI_AUDIOENCODER_WAV_SITE = $(call github,xbmc,audioencoder.wav,$(KODI_AUDIOENCODER_WAV_VERSION)) +KODI_AUDIOENCODER_WAV_LICENSE = GPL-2.0+ +KODI_AUDIOENCODER_WAV_LICENSE_FILES = src/EncoderWav.cpp +KODI_AUDIOENCODER_WAV_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-inputstream-adaptive/Config.in b/buildroot/package/kodi-inputstream-adaptive/Config.in new file mode 100644 index 0000000..cb51273 --- /dev/null +++ b/buildroot/package/kodi-inputstream-adaptive/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_KODI_INPUTSTREAM_ADAPTIVE + bool "kodi-inputstream-adaptive" + # wvdecrypter/cdm/build/build_config.h + depends on BR2_aarch64 || BR2_arm || BR2_i386 || BR2_mipsel \ + || BR2_mips64el || BR2_x86_64 + select BR2_PACKAGE_LIBPLATFORM + select BR2_PACKAGE_KODI_PLATFORM + help + Kodi inputstream addon for several manifest types + + https://github.com/peak3d/inputstream.adaptive diff --git a/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash b/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash new file mode 100644 index 0000000..78b48c1 --- /dev/null +++ b/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 572b2e898484a5ada74c4095539cebf43c198a3147f0f24fe350bc79db053695 kodi-inputstream-adaptive-9af21218a87572bd4ab8d8d660c11f6295144f97.tar.gz diff --git a/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk b/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk new file mode 100644 index 0000000..f7a4c66 --- /dev/null +++ b/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-inputstream-adaptive +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_INPUTSTREAM_ADAPTIVE_VERSION = 9af21218a87572bd4ab8d8d660c11f6295144f97 +KODI_INPUTSTREAM_ADAPTIVE_SITE = $(call github,peak3d,inputstream.adaptive,$(KODI_INPUTSTREAM_ADAPTIVE_VERSION)) +KODI_INPUTSTREAM_ADAPTIVE_LICENSE = GPL-2.0+ +KODI_INPUTSTREAM_ADAPTIVE_LICENSE_FILES = src/main.cpp +KODI_INPUTSTREAM_ADAPTIVE_DEPENDENCIES = libplatform kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-inputstream-rtmp/Config.in b/buildroot/package/kodi-inputstream-rtmp/Config.in new file mode 100644 index 0000000..c40bff2 --- /dev/null +++ b/buildroot/package/kodi-inputstream-rtmp/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_INPUTSTREAM_RTMP + bool "kodi-inputstream-rtmp" + select BR2_PACKAGE_RTMPDUMP + help + RTMP input stream add-on for Kodi + + https://github.com/notspiff/inputstream.rtmp diff --git a/buildroot/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.hash b/buildroot/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.hash new file mode 100644 index 0000000..f5a82d2 --- /dev/null +++ b/buildroot/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 75a3cc87243a7c92a0a2e3f16710a1e60d05cd8dbc8b7fd1852244fbc5da2ae8 kodi-inputstream-rtmp-v1.0.4.tar.gz diff --git a/buildroot/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.mk b/buildroot/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.mk new file mode 100644 index 0000000..80c4bcc --- /dev/null +++ b/buildroot/package/kodi-inputstream-rtmp/kodi-inputstream-rtmp.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-inputstream-rtmp +# +################################################################################ + +KODI_INPUTSTREAM_RTMP_VERSION = v1.0.4 +KODI_INPUTSTREAM_RTMP_SITE = $(call github,notspiff,inputstream.rtmp,$(KODI_INPUTSTREAM_RTMP_VERSION)) +KODI_INPUTSTREAM_RTMP_LICENSE = GPL-2.0+ +KODI_INPUTSTREAM_RTMP_LICENSE_FILES = src/RTMPStream.cpp +KODI_INPUTSTREAM_RTMP_DEPENDENCIES = kodi rtmpdump + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.hash b/buildroot/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.hash new file mode 120000 index 0000000..a575750 --- /dev/null +++ b/buildroot/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.hash @@ -0,0 +1 @@ +../kodi/kodi.hash \ No newline at end of file diff --git a/buildroot/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk b/buildroot/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk new file mode 100644 index 0000000..fcf4888 --- /dev/null +++ b/buildroot/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# kodi-jsonschemabuilder +# +################################################################################ + +# Not possible to directly refer to kodi variables, because of +# first/second expansion trickery... +KODI_JSONSCHEMABUILDER_VERSION = 17.6-Krypton +KODI_JSONSCHEMABUILDER_SITE = $(call github,xbmc,xbmc,$(KODI_JSONSCHEMABUILDER_VERSION)) +KODI_JSONSCHEMABUILDER_SOURCE = kodi-$(KODI_JSONSCHEMABUILDER_VERSION).tar.gz +KODI_JSONSCHEMABUILDER_LICENSE = GPL-2.0 +KODI_JSONSCHEMABUILDER_LICENSE_FILES = LICENSE.GPL +HOST_KODI_JSONSCHEMABUILDER_SUBDIR = tools/depends/native/JsonSchemaBuilder + +HOST_KODI_JSONSCHEMABUILDER_CONF_OPTS = \ + -DCMAKE_MODULE_PATH=$(@D)/project/cmake/modules + +define HOST_KODI_JSONSCHEMABUILDER_INSTALL_CMDS + $(INSTALL) -m 755 -D \ + $(@D)/tools/depends/native/JsonSchemaBuilder/JsonSchemaBuilder \ + $(HOST_DIR)/bin/JsonSchemaBuilder +endef + +$(eval $(host-cmake-package)) diff --git a/buildroot/package/kodi-peripheral-joystick/Config.in b/buildroot/package/kodi-peripheral-joystick/Config.in new file mode 100644 index 0000000..f257710 --- /dev/null +++ b/buildroot/package/kodi-peripheral-joystick/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_KODI_PERIPHERAL_JOYSTICK + bool "kodi-peripheral-joystick" + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_KODI_PLATFORM + help + Kodi joystick support (drivers and button maps) + + https://github.com/xbmc/peripheral.joystick + +comment "kodi-peripheral-joystick needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash b/buildroot/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash new file mode 100644 index 0000000..728c3ca --- /dev/null +++ b/buildroot/package/kodi-peripheral-joystick/kodi-peripheral-joystick.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 9a183e1f92ff2c68816bfa0056c65585a3e1129d924326359d7a5dfbcba6c56a kodi-peripheral-joystick-v1.3.4.tar.gz diff --git a/buildroot/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk b/buildroot/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk new file mode 100644 index 0000000..2fadbcc --- /dev/null +++ b/buildroot/package/kodi-peripheral-joystick/kodi-peripheral-joystick.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-peripheral-joystick +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PERIPHERAL_JOYSTICK_VERSION = v1.3.4 +KODI_PERIPHERAL_JOYSTICK_SITE = $(call github,xbmc,peripheral.joystick,$(KODI_PERIPHERAL_JOYSTICK_VERSION)) +KODI_PERIPHERAL_JOYSTICK_LICENSE = GPL-2.0+ +KODI_PERIPHERAL_JOYSTICK_LICENSE_FILES = src/addon.cpp +KODI_PERIPHERAL_JOYSTICK_DEPENDENCIES = kodi-platform udev + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-peripheral-steamcontroller/Config.in b/buildroot/package/kodi-peripheral-steamcontroller/Config.in new file mode 100644 index 0000000..a994f4c --- /dev/null +++ b/buildroot/package/kodi-peripheral-steamcontroller/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_PERIPHERAL_STEAMCONTROLLER + bool "kodi-peripheral-steamcontroller" + select BR2_PACKAGE_KODI_PLATFORM + select BR2_PACKAGE_LIBUSB + help + Steam controller driver for Kodi + + https://github.com/kodi-game/peripheral.steamcontroller diff --git a/buildroot/package/kodi-peripheral-steamcontroller/kodi-peripheral-steamcontroller.hash b/buildroot/package/kodi-peripheral-steamcontroller/kodi-peripheral-steamcontroller.hash new file mode 100644 index 0000000..c0b3bf6 --- /dev/null +++ b/buildroot/package/kodi-peripheral-steamcontroller/kodi-peripheral-steamcontroller.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d5547b78ba84c9743c884a9377c398b540bfcf23e467e1edf8be2625d400c205 kodi-peripheral-steamcontroller-ef527cd81cfcd6c8342691f5c764e5c51df1fca2.tar.gz diff --git a/buildroot/package/kodi-peripheral-steamcontroller/kodi-peripheral-steamcontroller.mk b/buildroot/package/kodi-peripheral-steamcontroller/kodi-peripheral-steamcontroller.mk new file mode 100644 index 0000000..98cccc8 --- /dev/null +++ b/buildroot/package/kodi-peripheral-steamcontroller/kodi-peripheral-steamcontroller.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-peripheral-steamcontroller +# +################################################################################ + +KODI_PERIPHERAL_STEAMCONTROLLER_VERSION = ef527cd81cfcd6c8342691f5c764e5c51df1fca2 +KODI_PERIPHERAL_STEAMCONTROLLER_SITE = $(call github,kodi-game,peripheral.steamcontroller,$(KODI_PERIPHERAL_STEAMCONTROLLER_VERSION)) +KODI_PERIPHERAL_STEAMCONTROLLER_LICENSE = GPL-2.0+ +KODI_PERIPHERAL_STEAMCONTROLLER_LICENSE_FILES = src/addon.cpp +KODI_PERIPHERAL_STEAMCONTROLLER_DEPENDENCIES = kodi-platform libusb + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-peripheral-xarcade/Config.in b/buildroot/package/kodi-peripheral-xarcade/Config.in new file mode 100644 index 0000000..8d3c678 --- /dev/null +++ b/buildroot/package/kodi-peripheral-xarcade/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_PERIPHERAL_XARCADE + bool "kodi-peripheral-xarcade" + help + X-Arcade Tankstick support for Kodi + + https://github.com/kodi-game/peripheral.xarcade diff --git a/buildroot/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.hash b/buildroot/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.hash new file mode 100644 index 0000000..48dc5a0 --- /dev/null +++ b/buildroot/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 cd503e7f1413214693c28b59f19f3fffe0a54cff5c29d43b2eca9bb31c10edeb kodi-peripheral-xarcade-f1875ba4b7aa6ce85ec40fedf48ed5501c79e5fd.tar.gz diff --git a/buildroot/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.mk b/buildroot/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.mk new file mode 100644 index 0000000..c4ddba3 --- /dev/null +++ b/buildroot/package/kodi-peripheral-xarcade/kodi-peripheral-xarcade.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-peripheral-xarcade +# +################################################################################ + +KODI_PERIPHERAL_XARCADE_VERSION = f1875ba4b7aa6ce85ec40fedf48ed5501c79e5fd +KODI_PERIPHERAL_XARCADE_SITE = $(call github,kodi-game,peripheral.xarcade,$(KODI_PERIPHERAL_XARCADE_VERSION)) +KODI_PERIPHERAL_XARCADE_LICENSE = GPL-2.0+ +KODI_PERIPHERAL_XARCADE_LICENSE_FILES = src/addon.cpp +KODI_PERIPHERAL_XARCADE_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-platform/0001-kodiplatform-config.cmake-fix-for-cross-compilation.patch b/buildroot/package/kodi-platform/0001-kodiplatform-config.cmake-fix-for-cross-compilation.patch new file mode 100644 index 0000000..18a74e7 --- /dev/null +++ b/buildroot/package/kodi-platform/0001-kodiplatform-config.cmake-fix-for-cross-compilation.patch @@ -0,0 +1,54 @@ +From a6e25dba4b5c1d911a4644a0ca116abc642cd72a Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 30 Jul 2015 09:28:24 +0200 +Subject: [PATCH] kodiplatform-config.cmake: fix for cross-compilation + +Use CMAKE_FIND_ROOT_PATH in kodiplatform-config.cmake in order to make +it cross-compilation friendly. + +Signed-off-by: Thomas Petazzoni +--- + CMakeLists.txt | 2 +- + kodiplatform-config.cmake.in | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 25d8004..db23dc9 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -22,7 +22,7 @@ if(NOT WIN32) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") + endif() + +-set(kodiplatform_INCLUDE_DIRS ${TINYXML_INCLUDE_DIR} "${CMAKE_INSTALL_PREFIX}/include/kodi") ++set(kodiplatform_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include/kodi") + IF(WIN32) + LIST(APPEND kodiplatform_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include/kodi/windows") + ENDIF(WIN32) +diff --git a/kodiplatform-config.cmake.in b/kodiplatform-config.cmake.in +index 3fc5273..1bc437a 100644 +--- a/kodiplatform-config.cmake.in ++++ b/kodiplatform-config.cmake.in +@@ -10,16 +10,16 @@ + # + # propagate these properties from one build system to the other + set (kodiplatform_VERSION "@kodiplatform_VERSION_MAJOR@.@kodiplatform_VERSION_MINOR@") +-set (kodiplatform_INCLUDE_DIRS @kodiplatform_INCLUDE_DIRS@ @CMAKE_INSTALL_PREFIX@/include) ++set (kodiplatform_INCLUDE_DIRS @TINYXML_INCLUDE_DIR@ ${CMAKE_FIND_ROOT_PATH}@kodiplatform_INCLUDE_DIRS@ ${CMAKE_FIND_ROOT_PATH}@CMAKE_INSTALL_PREFIX@/include) + set (kodiplatform_LIBRARY_DIRS "@CMAKE_LIBRARY_OUTPUT_DIRECTORY@") + set (kodiplatform_LINKER_FLAGS "@kodiplatform_LINKER_FLAGS@") + set (kodiplatform_CONFIG_VARS "@kodiplatform_CONFIG_VARS@") + + # libraries come from the build tree where this file was generated + if(WIN32) +- set (kodiplatform_LIBRARY "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/kodiplatform.lib") ++ set (kodiplatform_LIBRARY "${CMAKE_FIND_ROOT_PATH}@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/kodiplatform.lib") + else(WIN32) +- set (kodiplatform_LIBRARY "-L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -lkodiplatform") ++ set (kodiplatform_LIBRARY "-L${CMAKE_FIND_ROOT_PATH}@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -lkodiplatform") + endif(WIN32) + set (kodiplatform_LIBRARIES ${kodiplatform_LIBRARY} "@kodiplatform_LIBRARIES@") + mark_as_advanced (kodiplatform_LIBRARY) +-- +2.5.0 + diff --git a/buildroot/package/kodi-platform/Config.in b/buildroot/package/kodi-platform/Config.in new file mode 100644 index 0000000..cde1925 --- /dev/null +++ b/buildroot/package/kodi-platform/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PLATFORM + bool + select BR2_PACKAGE_LIBPLATFORM + help + Kodi add-on platform support library + + https://github.com/xbmc/kodi-platform diff --git a/buildroot/package/kodi-platform/kodi-platform.hash b/buildroot/package/kodi-platform/kodi-platform.hash new file mode 100644 index 0000000..d99c622 --- /dev/null +++ b/buildroot/package/kodi-platform/kodi-platform.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 c53f37888d752e233f5adabc6ecfb8a1ea02728e010007200bbf671f6b9462de kodi-platform-36fb49371dbce49bf470a5bb1fc51b74b4a3612d.tar.gz diff --git a/buildroot/package/kodi-platform/kodi-platform.mk b/buildroot/package/kodi-platform/kodi-platform.mk new file mode 100644 index 0000000..53f8ce9 --- /dev/null +++ b/buildroot/package/kodi-platform/kodi-platform.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# kodi-platform +# +################################################################################ + +KODI_PLATFORM_VERSION = 36fb49371dbce49bf470a5bb1fc51b74b4a3612d +KODI_PLATFORM_SITE = $(call github,xbmc,kodi-platform,$(KODI_PLATFORM_VERSION)) +KODI_PLATFORM_LICENSE = GPL-2.0+ +KODI_PLATFORM_LICENSE_FILES = src/util/XMLUtils.h +KODI_PLATFORM_INSTALL_STAGING = YES +KODI_PLATFORM_DEPENDENCIES = libplatform kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-argustv/Config.in b/buildroot/package/kodi-pvr-argustv/Config.in new file mode 100644 index 0000000..216000a --- /dev/null +++ b/buildroot/package/kodi-pvr-argustv/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_PVR_ARGUSTV + bool "kodi-pvr-argustv" + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_KODI_PLATFORM + help + Kodi's ARGUS TV client addon + + https://github.com/kodi-pvr/pvr.argustv diff --git a/buildroot/package/kodi-pvr-argustv/kodi-pvr-argustv.hash b/buildroot/package/kodi-pvr-argustv/kodi-pvr-argustv.hash new file mode 100644 index 0000000..138efa1 --- /dev/null +++ b/buildroot/package/kodi-pvr-argustv/kodi-pvr-argustv.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 ba9e4d76b9e6d2d879e95eeda0d919ca5eabc0d6f59037f173cd9294b2ce8e4a kodi-pvr-argustv-2.5.6-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-argustv/kodi-pvr-argustv.mk b/buildroot/package/kodi-pvr-argustv/kodi-pvr-argustv.mk new file mode 100644 index 0000000..2cf4d75 --- /dev/null +++ b/buildroot/package/kodi-pvr-argustv/kodi-pvr-argustv.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-argustv +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_ARGUSTV_VERSION = 2.5.6-Krypton +KODI_PVR_ARGUSTV_SITE = $(call github,kodi-pvr,pvr.argustv,$(KODI_PVR_ARGUSTV_VERSION)) +KODI_PVR_ARGUSTV_LICENSE = GPL-2.0+ +KODI_PVR_ARGUSTV_LICENSE_FILES = src/client.h +KODI_PVR_ARGUSTV_DEPENDENCIES = jsoncpp kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-dvblink/Config.in b/buildroot/package/kodi-pvr-dvblink/Config.in new file mode 100644 index 0000000..57f1127 --- /dev/null +++ b/buildroot/package/kodi-pvr-dvblink/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_PVR_DVBLINK + bool "kodi-pvr-dvblink" + select BR2_PACKAGE_KODI_PLATFORM + select BR2_PACKAGE_TINYXML2 + help + Kodi's DVBLink client addon + + https://github.com/kodi-pvr/pvr.dvblink diff --git a/buildroot/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash b/buildroot/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash new file mode 100644 index 0000000..e9b8673 --- /dev/null +++ b/buildroot/package/kodi-pvr-dvblink/kodi-pvr-dvblink.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 a45fff0c1fe6d91fd957e2a4e62e9c72a5c36d796c41caa6b1e5a4814f82a503 kodi-pvr-dvblink-3.4.5v2-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk b/buildroot/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk new file mode 100644 index 0000000..9860b63 --- /dev/null +++ b/buildroot/package/kodi-pvr-dvblink/kodi-pvr-dvblink.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-dvblink +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_DVBLINK_VERSION = 3.4.5v2-Krypton +KODI_PVR_DVBLINK_SITE = $(call github,kodi-pvr,pvr.dvblink,$(KODI_PVR_DVBLINK_VERSION)) +KODI_PVR_DVBLINK_LICENSE = GPL-2.0+ +KODI_PVR_DVBLINK_LICENSE_FILES = src/client.h +KODI_PVR_DVBLINK_DEPENDENCIES = kodi-platform tinyxml2 + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-dvbviewer/Config.in b/buildroot/package/kodi-pvr-dvbviewer/Config.in new file mode 100644 index 0000000..e7dd7b3 --- /dev/null +++ b/buildroot/package/kodi-pvr-dvbviewer/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_DVBVIEWER + bool "kodi-pvr-dvbviewer" + select BR2_PACKAGE_KODI_PLATFORM + help + Kodi's DVBViewer client addon + + https://github.com/kodi-pvr/pvr.dvbviewer diff --git a/buildroot/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash b/buildroot/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash new file mode 100644 index 0000000..017bd83 --- /dev/null +++ b/buildroot/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f1cd26234e33a027d1ef2f3ea7b5f33be3a8aff9a7bf0117ee4bdfcf1e18fd9f kodi-pvr-dvbviewer-2.4.14-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk b/buildroot/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk new file mode 100644 index 0000000..bc37de7 --- /dev/null +++ b/buildroot/package/kodi-pvr-dvbviewer/kodi-pvr-dvbviewer.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-dvbviewer +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_DVBVIEWER_VERSION = 2.4.14-Krypton +KODI_PVR_DVBVIEWER_SITE = $(call github,kodi-pvr,pvr.dvbviewer,$(KODI_PVR_DVBVIEWER_VERSION)) +KODI_PVR_DVBVIEWER_LICENSE = GPL-2.0+ +KODI_PVR_DVBVIEWER_LICENSE_FILES = src/client.h +KODI_PVR_DVBVIEWER_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-filmon/Config.in b/buildroot/package/kodi-pvr-filmon/Config.in new file mode 100644 index 0000000..0b662df --- /dev/null +++ b/buildroot/package/kodi-pvr-filmon/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_PVR_FILMON + bool "kodi-pvr-filmon" + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_KODI_PLATFORM + help + Filmon PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.filmon diff --git a/buildroot/package/kodi-pvr-filmon/kodi-pvr-filmon.hash b/buildroot/package/kodi-pvr-filmon/kodi-pvr-filmon.hash new file mode 100644 index 0000000..7417b26 --- /dev/null +++ b/buildroot/package/kodi-pvr-filmon/kodi-pvr-filmon.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 0384db9cbcd8ab2e7b8b0eb8c22e8913e734e436234c43d357718c5273058605 kodi-pvr-filmon-1.4.8-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-filmon/kodi-pvr-filmon.mk b/buildroot/package/kodi-pvr-filmon/kodi-pvr-filmon.mk new file mode 100644 index 0000000..daa3e39 --- /dev/null +++ b/buildroot/package/kodi-pvr-filmon/kodi-pvr-filmon.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-filmon +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_FILMON_VERSION = 1.4.8-Krypton +KODI_PVR_FILMON_SITE = $(call github,kodi-pvr,pvr.filmon,$(KODI_PVR_FILMON_VERSION)) +KODI_PVR_FILMON_LICENSE = GPL-2.0+ +KODI_PVR_FILMON_LICENSE_FILES = src/client.h +KODI_PVR_FILMON_DEPENDENCIES = jsoncpp kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-hdhomerun/Config.in b/buildroot/package/kodi-pvr-hdhomerun/Config.in new file mode 100644 index 0000000..ed5b914 --- /dev/null +++ b/buildroot/package/kodi-pvr-hdhomerun/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KODI_PVR_HDHOMERUN + bool "kodi-pvr-hdhomerun" + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_KODI_PLATFORM + select BR2_PACKAGE_LIBHDHOMERUN + help + Kodi's HDHomeRun client addon + + https://github.com/kodi-pvr/pvr.hdhomerun diff --git a/buildroot/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash b/buildroot/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash new file mode 100644 index 0000000..8262f4e --- /dev/null +++ b/buildroot/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 3c000b3ebab2b12f5635451f6a71ad01c4f4d7043623cfeebfe6b7c662e026d9 kodi-pvr-hdhomerun-2.4.7-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk b/buildroot/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk new file mode 100644 index 0000000..75fa487 --- /dev/null +++ b/buildroot/package/kodi-pvr-hdhomerun/kodi-pvr-hdhomerun.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-hdhomerun +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_HDHOMERUN_VERSION = 2.4.7-Krypton +KODI_PVR_HDHOMERUN_SITE = $(call github,kodi-pvr,pvr.hdhomerun,$(KODI_PVR_HDHOMERUN_VERSION)) +KODI_PVR_HDHOMERUN_LICENSE = GPL-2.0+ +KODI_PVR_HDHOMERUN_LICENSE_FILES = src/client.h +KODI_PVR_HDHOMERUN_DEPENDENCIES = jsoncpp kodi-platform libhdhomerun + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-hts/Config.in b/buildroot/package/kodi-pvr-hts/Config.in new file mode 100644 index 0000000..c4c4497 --- /dev/null +++ b/buildroot/package/kodi-pvr-hts/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_HTS + bool "kodi-pvr-hts" + select BR2_PACKAGE_KODI_PLATFORM + help + Tvheadend HTSP PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.hts diff --git a/buildroot/package/kodi-pvr-hts/kodi-pvr-hts.hash b/buildroot/package/kodi-pvr-hts/kodi-pvr-hts.hash new file mode 100644 index 0000000..87eafac --- /dev/null +++ b/buildroot/package/kodi-pvr-hts/kodi-pvr-hts.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 96e949526ebf4af542da572e704c0c052ec807408dc0ea65603a15614b889dd1 kodi-pvr-hts-3211941dade740ad92581f488402146794798e74.tar.gz diff --git a/buildroot/package/kodi-pvr-hts/kodi-pvr-hts.mk b/buildroot/package/kodi-pvr-hts/kodi-pvr-hts.mk new file mode 100644 index 0000000..7f43b04 --- /dev/null +++ b/buildroot/package/kodi-pvr-hts/kodi-pvr-hts.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-hts +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_HTS_VERSION = 3211941dade740ad92581f488402146794798e74 +KODI_PVR_HTS_SITE = $(call github,kodi-pvr,pvr.hts,$(KODI_PVR_HTS_VERSION)) +KODI_PVR_HTS_LICENSE = GPL-2.0+ +KODI_PVR_HTS_LICENSE_FILES = src/client.h +KODI_PVR_HTS_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-iptvsimple/Config.in b/buildroot/package/kodi-pvr-iptvsimple/Config.in new file mode 100644 index 0000000..b596749 --- /dev/null +++ b/buildroot/package/kodi-pvr-iptvsimple/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_IPTVSIMPLE + bool "kodi-pvr-iptvsimple" + select BR2_PACKAGE_KODI_PLATFORM + help + IPTV Live TV and Radio PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.iptvsimple diff --git a/buildroot/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash b/buildroot/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash new file mode 100644 index 0000000..0b0406f --- /dev/null +++ b/buildroot/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 329bd71e5c786d7b037bf5fd103ee4abff892afc6e5186a5d0a797194a8c4c7c kodi-pvr-iptvsimple-2.4.14-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk b/buildroot/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk new file mode 100644 index 0000000..0df509e --- /dev/null +++ b/buildroot/package/kodi-pvr-iptvsimple/kodi-pvr-iptvsimple.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-iptvsimple +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_IPTVSIMPLE_VERSION = 2.4.14-Krypton +KODI_PVR_IPTVSIMPLE_SITE = $(call github,kodi-pvr,pvr.iptvsimple,$(KODI_PVR_IPTVSIMPLE_VERSION)) +KODI_PVR_IPTVSIMPLE_LICENSE = GPL-2.0+ +KODI_PVR_IPTVSIMPLE_LICENSE_FILES = src/client.h +KODI_PVR_IPTVSIMPLE_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-mediaportal-tvserver/0001-live555-remove-xlocale.h-from-Locale.hh.patch b/buildroot/package/kodi-pvr-mediaportal-tvserver/0001-live555-remove-xlocale.h-from-Locale.hh.patch new file mode 100644 index 0000000..7abb153 --- /dev/null +++ b/buildroot/package/kodi-pvr-mediaportal-tvserver/0001-live555-remove-xlocale.h-from-Locale.hh.patch @@ -0,0 +1,33 @@ +From 64b264d141fd80991ac071c5370802e2d7394f6d Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 3 Dec 2017 22:17:12 +0100 +Subject: [PATCH] live555: remove xlocale.h from Locale.hh + +Fixes build error with glibc 2.26: +https://sourceware.org/glibc/wiki/Release/2.26#Removal_of_.27xlocale.h.27 + +Patch sent upstream: +https://github.com/kodi-pvr/pvr.mediaportal.tvserver/pull/79 + +Signed-off-by: Bernd Kuhls +--- + src/lib/live555/liveMedia/include/Locale.hh | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/src/lib/live555/liveMedia/include/Locale.hh b/src/lib/live555/liveMedia/include/Locale.hh +index b327948..c4b4f4a 100644 +--- a/src/lib/live555/liveMedia/include/Locale.hh ++++ b/src/lib/live555/liveMedia/include/Locale.hh +@@ -43,9 +43,6 @@ along with this library; if not, write to the Free Software Foundation, Inc., + + #ifndef LOCALE_NOT_USED + #include +-#ifndef XLOCALE_NOT_USED +-#include // because, on some systems, doesn't include ; this makes sure that we get both +-#endif + #endif + + +-- +2.11.0 + diff --git a/buildroot/package/kodi-pvr-mediaportal-tvserver/Config.in b/buildroot/package/kodi-pvr-mediaportal-tvserver/Config.in new file mode 100644 index 0000000..733ca88 --- /dev/null +++ b/buildroot/package/kodi-pvr-mediaportal-tvserver/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_MEDIAPORTAL_TVSERVER + bool "kodi-pvr-mediaportal-tvserver" + select BR2_PACKAGE_KODI_PLATFORM + help + MediaPortal TVServer PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.mediaportal.tvserver diff --git a/buildroot/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash b/buildroot/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash new file mode 100644 index 0000000..6eb0abf --- /dev/null +++ b/buildroot/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 3f5c022f83636b3739f26c1a07166b498eac82e8081ed7551980f4bb27c6b56e kodi-pvr-mediaportal-tvserver-2.4.19v2-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk b/buildroot/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk new file mode 100644 index 0000000..99a3189 --- /dev/null +++ b/buildroot/package/kodi-pvr-mediaportal-tvserver/kodi-pvr-mediaportal-tvserver.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-mediaportal-tvserver +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION = 2.4.19v2-Krypton +KODI_PVR_MEDIAPORTAL_TVSERVER_SITE = $(call github,kodi-pvr,pvr.mediaportal.tvserver,$(KODI_PVR_MEDIAPORTAL_TVSERVER_VERSION)) +KODI_PVR_MEDIAPORTAL_TVSERVER_LICENSE = GPL-2.0+ +KODI_PVR_MEDIAPORTAL_TVSERVER_LICENSE_FILES = src/client.h +KODI_PVR_MEDIAPORTAL_TVSERVER_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-mythtv/Config.in b/buildroot/package/kodi-pvr-mythtv/Config.in new file mode 100644 index 0000000..798ff3e --- /dev/null +++ b/buildroot/package/kodi-pvr-mythtv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_MYTHTV + bool "kodi-pvr-mythtv" + select BR2_PACKAGE_KODI_PLATFORM + help + MythTV PVR for Kodi + + https://github.com/kodi-pvr/pvr.mythtv diff --git a/buildroot/package/kodi-pvr-mythtv/kodi-pvr-mythtv.hash b/buildroot/package/kodi-pvr-mythtv/kodi-pvr-mythtv.hash new file mode 100644 index 0000000..82923a8 --- /dev/null +++ b/buildroot/package/kodi-pvr-mythtv/kodi-pvr-mythtv.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 fd60aba0dac25ab5885371495a5dfca53308c1fa23215299b0f62997c7391e1e kodi-pvr-mythtv-4.15.3.tar.gz diff --git a/buildroot/package/kodi-pvr-mythtv/kodi-pvr-mythtv.mk b/buildroot/package/kodi-pvr-mythtv/kodi-pvr-mythtv.mk new file mode 100644 index 0000000..8099ffa --- /dev/null +++ b/buildroot/package/kodi-pvr-mythtv/kodi-pvr-mythtv.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-mythtv +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_MYTHTV_VERSION = 4.15.3 +KODI_PVR_MYTHTV_SITE = $(call github,janbar,pvr.mythtv,$(KODI_PVR_MYTHTV_VERSION)) +KODI_PVR_MYTHTV_LICENSE = GPL-2.0+ +KODI_PVR_MYTHTV_LICENSE_FILES = src/client.h +KODI_PVR_MYTHTV_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-nextpvr/Config.in b/buildroot/package/kodi-pvr-nextpvr/Config.in new file mode 100644 index 0000000..e520426 --- /dev/null +++ b/buildroot/package/kodi-pvr-nextpvr/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_NEXTPVR + bool "kodi-pvr-nextpvr" + select BR2_PACKAGE_KODI_PLATFORM + help + Kodi's NextPVR client addon + + https://github.com/kodi-pvr/pvr.nextpvr diff --git a/buildroot/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash b/buildroot/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash new file mode 100644 index 0000000..3d10b5b --- /dev/null +++ b/buildroot/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 b126943a6d48ea4d2df38951505f385c2a499e399201eccd798a34076d3c5842 kodi-pvr-nextpvr-2.4.13-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk b/buildroot/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk new file mode 100644 index 0000000..d0a0499 --- /dev/null +++ b/buildroot/package/kodi-pvr-nextpvr/kodi-pvr-nextpvr.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-nextpvr +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_NEXTPVR_VERSION = 2.4.13-Krypton +KODI_PVR_NEXTPVR_SITE = $(call github,kodi-pvr,pvr.nextpvr,$(KODI_PVR_NEXTPVR_VERSION)) +KODI_PVR_NEXTPVR_LICENSE = GPL-2.0+ +KODI_PVR_NEXTPVR_LICENSE_FILES = src/client.h +KODI_PVR_NEXTPVR_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-njoy/Config.in b/buildroot/package/kodi-pvr-njoy/Config.in new file mode 100644 index 0000000..33c493c --- /dev/null +++ b/buildroot/package/kodi-pvr-njoy/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_NJOY + bool "kodi-pvr-njoy" + select BR2_PACKAGE_KODI_PLATFORM + help + Kodi's Njoy N7 client addon + + https://github.com/kodi-pvr/pvr.njoy diff --git a/buildroot/package/kodi-pvr-njoy/kodi-pvr-njoy.hash b/buildroot/package/kodi-pvr-njoy/kodi-pvr-njoy.hash new file mode 100644 index 0000000..261558e --- /dev/null +++ b/buildroot/package/kodi-pvr-njoy/kodi-pvr-njoy.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 e4e0a6bb1bf0c6f8ae011eba58c5f0ae19a6574bb35fc6a7fbdbb99d20242a2c kodi-pvr-njoy-2.4.3-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-njoy/kodi-pvr-njoy.mk b/buildroot/package/kodi-pvr-njoy/kodi-pvr-njoy.mk new file mode 100644 index 0000000..e946e67 --- /dev/null +++ b/buildroot/package/kodi-pvr-njoy/kodi-pvr-njoy.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-njoy +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_NJOY_VERSION = 2.4.3-Krypton +KODI_PVR_NJOY_SITE = $(call github,kodi-pvr,pvr.njoy,$(KODI_PVR_NJOY_VERSION)) +KODI_PVR_NJOY_LICENSE = GPL-2.0+ +KODI_PVR_NJOY_LICENSE_FILES = src/client.h +KODI_PVR_NJOY_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-pctv/Config.in b/buildroot/package/kodi-pvr-pctv/Config.in new file mode 100644 index 0000000..255cd4a --- /dev/null +++ b/buildroot/package/kodi-pvr-pctv/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_PVR_PCTV + bool "kodi-pvr-pctv" + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_KODI_PLATFORM + help + PCTV PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.vdr.vnsi diff --git a/buildroot/package/kodi-pvr-pctv/kodi-pvr-pctv.hash b/buildroot/package/kodi-pvr-pctv/kodi-pvr-pctv.hash new file mode 100644 index 0000000..5044806 --- /dev/null +++ b/buildroot/package/kodi-pvr-pctv/kodi-pvr-pctv.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 95f95f39739baf6013bb6c9188743f842f6ba3e1fa541907067f795e1a3c66a1 kodi-pvr-pctv-1.4.7-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-pctv/kodi-pvr-pctv.mk b/buildroot/package/kodi-pvr-pctv/kodi-pvr-pctv.mk new file mode 100644 index 0000000..6c7a030 --- /dev/null +++ b/buildroot/package/kodi-pvr-pctv/kodi-pvr-pctv.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-pctv +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_PCTV_VERSION = 1.4.7-Krypton +KODI_PVR_PCTV_SITE = $(call github,kodi-pvr,pvr.pctv,$(KODI_PVR_PCTV_VERSION)) +KODI_PVR_PCTV_LICENSE = GPL-2.0+ +KODI_PVR_PCTV_LICENSE_FILES = src/client.h +KODI_PVR_PCTV_DEPENDENCIES = jsoncpp kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-stalker/0001-src-CWatchdog.h-Fix-gcc7-build.patch b/buildroot/package/kodi-pvr-stalker/0001-src-CWatchdog.h-Fix-gcc7-build.patch new file mode 100644 index 0000000..2d85f6b --- /dev/null +++ b/buildroot/package/kodi-pvr-stalker/0001-src-CWatchdog.h-Fix-gcc7-build.patch @@ -0,0 +1,29 @@ +From bb16ccd14deb3a01049daec37b6d2e7711ef4738 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 13 May 2017 20:22:08 +0200 +Subject: [PATCH] src/CWatchdog.h: Fix gcc7 build + +Building with gcc7 is broken: + +src/CWatchdog.h:31:58: error: 'std::function' has not been declared + CWatchdog(unsigned int interval, SAPI *api, std::function errorCallback); + ^~~~~~~~ + +Submitted-upstream: https://github.com/kodi-pvr/pvr.stalker/pull/93 +Signed-off-by: Bernd Kuhls +--- + src/CWatchdog.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/CWatchdog.h b/src/CWatchdog.h +index c465e91..239d95d 100644 +--- a/src/CWatchdog.h ++++ b/src/CWatchdog.h +@@ -22,6 +22,7 @@ + */ + + #include ++#include + + #include "SAPI.h" + diff --git a/buildroot/package/kodi-pvr-stalker/Config.in b/buildroot/package/kodi-pvr-stalker/Config.in new file mode 100644 index 0000000..d334d0c --- /dev/null +++ b/buildroot/package/kodi-pvr-stalker/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_KODI_PVR_STALKER + bool "kodi-pvr-stalker" + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_KODI_PLATFORM + select BR2_PACKAGE_LIBXML2 + help + A PVR Client that connects Kodi to Stalker Middleware + + https://github.com/kodi-pvr/pvr.stalker diff --git a/buildroot/package/kodi-pvr-stalker/kodi-pvr-stalker.hash b/buildroot/package/kodi-pvr-stalker/kodi-pvr-stalker.hash new file mode 100644 index 0000000..07c768f --- /dev/null +++ b/buildroot/package/kodi-pvr-stalker/kodi-pvr-stalker.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 466cb3869927cdd245a746a32d92250e198befe577f7a847884eab1fd8eeb139 kodi-pvr-stalker-2.8.6-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-stalker/kodi-pvr-stalker.mk b/buildroot/package/kodi-pvr-stalker/kodi-pvr-stalker.mk new file mode 100644 index 0000000..32ac2ca --- /dev/null +++ b/buildroot/package/kodi-pvr-stalker/kodi-pvr-stalker.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-stalker +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_STALKER_VERSION = 2.8.6-Krypton +KODI_PVR_STALKER_SITE = $(call github,kodi-pvr,pvr.stalker,$(KODI_PVR_STALKER_VERSION)) +KODI_PVR_STALKER_LICENSE = GPL-2.0+ +KODI_PVR_STALKER_LICENSE_FILES = src/client.h +KODI_PVR_STALKER_DEPENDENCIES = jsoncpp kodi-platform libxml2 + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-vbox/Config.in b/buildroot/package/kodi-pvr-vbox/Config.in new file mode 100644 index 0000000..c1c22c1 --- /dev/null +++ b/buildroot/package/kodi-pvr-vbox/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_KODI_PVR_VBOX + bool "kodi-pvr-vbox" + select BR2_PACKAGE_KODI_PLATFORM + help + Kodi PVR addon for interfacing with VBox Communications XTi TV + Gateway + + https://github.com/kodi-pvr/pvr.vbox diff --git a/buildroot/package/kodi-pvr-vbox/kodi-pvr-vbox.hash b/buildroot/package/kodi-pvr-vbox/kodi-pvr-vbox.hash new file mode 100644 index 0000000..5f2c78f --- /dev/null +++ b/buildroot/package/kodi-pvr-vbox/kodi-pvr-vbox.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 78065a46b95b3988b1e49fe05da249a1896f54a2c30116a9446f7c4f55db743b kodi-pvr-vbox-3.6.10-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-vbox/kodi-pvr-vbox.mk b/buildroot/package/kodi-pvr-vbox/kodi-pvr-vbox.mk new file mode 100644 index 0000000..2c54e14 --- /dev/null +++ b/buildroot/package/kodi-pvr-vbox/kodi-pvr-vbox.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-vbox +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_VBOX_VERSION = 3.6.10-Krypton +KODI_PVR_VBOX_SITE = $(call github,kodi-pvr,pvr.vbox,$(KODI_PVR_VBOX_VERSION)) +KODI_PVR_VBOX_LICENSE = GPL-2.0+ +KODI_PVR_VBOX_LICENSE_FILES = src/client.h +KODI_PVR_VBOX_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-vdr-vnsi/Config.in b/buildroot/package/kodi-pvr-vdr-vnsi/Config.in new file mode 100644 index 0000000..768dec8 --- /dev/null +++ b/buildroot/package/kodi-pvr-vdr-vnsi/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_VDR_VNSI + bool "kodi-pvr-vdr-vnsi" + select BR2_PACKAGE_KODI_PLATFORM + help + Kodi PVR addon VNSI + + https://github.com/kodi-pvr/pvr.vdr.vnsi diff --git a/buildroot/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash b/buildroot/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash new file mode 100644 index 0000000..6d42583 --- /dev/null +++ b/buildroot/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 b65acb7ade6eaac395ea357158a4aae5ccd141612acfd834b72fbdf8db4e8b0e kodi-pvr-vdr-vnsi-4ed7d602924dbfcdd2770c0e13423092e829460d.tar.gz diff --git a/buildroot/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk b/buildroot/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk new file mode 100644 index 0000000..e068641 --- /dev/null +++ b/buildroot/package/kodi-pvr-vdr-vnsi/kodi-pvr-vdr-vnsi.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-vdr-vnsi +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_VDR_VNSI_VERSION = 4ed7d602924dbfcdd2770c0e13423092e829460d +KODI_PVR_VDR_VNSI_SITE = $(call github,kodi-pvr,pvr.vdr.vnsi,$(KODI_PVR_VDR_VNSI_VERSION)) +KODI_PVR_VDR_VNSI_LICENSE = GPL-2.0+ +KODI_PVR_VDR_VNSI_LICENSE_FILES = src/client.h +KODI_PVR_VDR_VNSI_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-vuplus/Config.in b/buildroot/package/kodi-pvr-vuplus/Config.in new file mode 100644 index 0000000..a56c4ed --- /dev/null +++ b/buildroot/package/kodi-pvr-vuplus/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_VUPLUS + bool "kodi-pvr-vuplus" + select BR2_PACKAGE_KODI_PLATFORM + help + VuPlus PVR client addon for Kodi + + https://github.com/kodi-pvr/pvr.vuplus diff --git a/buildroot/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash b/buildroot/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash new file mode 100644 index 0000000..f4f6756 --- /dev/null +++ b/buildroot/package/kodi-pvr-vuplus/kodi-pvr-vuplus.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 a8c7345e4e2e415e29c21f14460b257dfbe08ed5ecf1cc2dc6bc393a10f95cf3 kodi-pvr-vuplus-2.4.12-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk b/buildroot/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk new file mode 100644 index 0000000..581d884 --- /dev/null +++ b/buildroot/package/kodi-pvr-vuplus/kodi-pvr-vuplus.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-vuplus +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_VUPLUS_VERSION = 2.4.12-Krypton +KODI_PVR_VUPLUS_SITE = $(call github,kodi-pvr,pvr.vuplus,$(KODI_PVR_VUPLUS_VERSION)) +KODI_PVR_VUPLUS_LICENSE = GPL-2.0+ +KODI_PVR_VUPLUS_LICENSE_FILES = src/client.h +KODI_PVR_VUPLUS_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-pvr-wmc/Config.in b/buildroot/package/kodi-pvr-wmc/Config.in new file mode 100644 index 0000000..2672c83 --- /dev/null +++ b/buildroot/package/kodi-pvr-wmc/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_PVR_WMC + bool "kodi-pvr-wmc" + select BR2_PACKAGE_KODI_PLATFORM + help + Kodi's Windows Media Center client addon + + https://github.com/kodi-pvr/pvr.wmc diff --git a/buildroot/package/kodi-pvr-wmc/kodi-pvr-wmc.hash b/buildroot/package/kodi-pvr-wmc/kodi-pvr-wmc.hash new file mode 100644 index 0000000..4c050fb --- /dev/null +++ b/buildroot/package/kodi-pvr-wmc/kodi-pvr-wmc.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 7f5dfb88f54d511d575b7aabd94e1a862afb7e8a0b89fa957db6a135c31846eb kodi-pvr-wmc-1.4.9v2-Krypton.tar.gz diff --git a/buildroot/package/kodi-pvr-wmc/kodi-pvr-wmc.mk b/buildroot/package/kodi-pvr-wmc/kodi-pvr-wmc.mk new file mode 100644 index 0000000..b6e3d43 --- /dev/null +++ b/buildroot/package/kodi-pvr-wmc/kodi-pvr-wmc.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# kodi-pvr-wmc +# +################################################################################ + +# This cset is on the branch 'Krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_PVR_WMC_VERSION = 1.4.9v2-Krypton +KODI_PVR_WMC_SITE = $(call github,kodi-pvr,pvr.wmc,$(KODI_PVR_WMC_VERSION)) +KODI_PVR_WMC_LICENSE = GPL-2.0+ +KODI_PVR_WMC_LICENSE_FILES = src/client.h +KODI_PVR_WMC_DEPENDENCIES = kodi-platform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-asteroids/Config.in b/buildroot/package/kodi-screensaver-asteroids/Config.in new file mode 100644 index 0000000..ccc2aba --- /dev/null +++ b/buildroot/package/kodi-screensaver-asteroids/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_ASTEROIDS + bool "kodi-screensaver-asteroids" + depends on BR2_PACKAGE_HAS_LIBGL + help + Asteroids screensaver for Kodi + + https://github.com/notspiff/screensaver.asteroids + +comment "kodi-screensaver-asteroids needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.hash b/buildroot/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.hash new file mode 100644 index 0000000..7d105be --- /dev/null +++ b/buildroot/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2e072e6aad12f707dec1e70b7df26c590bb41fed8880dcfdbe6c99949b7e287a kodi-screensaver-asteroids-v1.1.2.tar.gz diff --git a/buildroot/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.mk b/buildroot/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.mk new file mode 100644 index 0000000..46df2e7 --- /dev/null +++ b/buildroot/package/kodi-screensaver-asteroids/kodi-screensaver-asteroids.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-asteroids +# +################################################################################ + +KODI_SCREENSAVER_ASTEROIDS_VERSION = v1.1.2 +KODI_SCREENSAVER_ASTEROIDS_SITE = $(call github,notspiff,screensaver.asteroids,$(KODI_SCREENSAVER_ASTEROIDS_VERSION)) +KODI_SCREENSAVER_ASTEROIDS_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_ASTEROIDS_LICENSE_FILES = src/main.cpp +KODI_SCREENSAVER_ASTEROIDS_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-asterwave/Config.in b/buildroot/package/kodi-screensaver-asterwave/Config.in new file mode 100644 index 0000000..bd5db73 --- /dev/null +++ b/buildroot/package/kodi-screensaver-asterwave/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_ASTERWAVE + bool "kodi-screensaver-asterwave" + depends on BR2_PACKAGE_HAS_LIBGL # libglu, libsoil + select BR2_PACKAGE_LIBGLU + select BR2_PACKAGE_LIBSOIL + help + AsterWave screensaver for Kodi + + https://github.com/notspiff/screensaver.asterwave + +comment "kodi-screensaver-asterwave needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.hash b/buildroot/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.hash new file mode 100644 index 0000000..f8f6d7b --- /dev/null +++ b/buildroot/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 48cd459b60b2407b8bae9107760a013d04ee29e00fddbce9550291896d42ef64 kodi-screensaver-asterwave-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.mk b/buildroot/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.mk new file mode 100644 index 0000000..b8c3a2a --- /dev/null +++ b/buildroot/package/kodi-screensaver-asterwave/kodi-screensaver-asterwave.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# kodi-screensaver-asterwave +# +################################################################################ + +KODI_SCREENSAVER_ASTERWAVE_VERSION = v1.1.0 +KODI_SCREENSAVER_ASTERWAVE_SITE = $(call github,notspiff,screensaver.asterwave,$(KODI_SCREENSAVER_ASTERWAVE_VERSION)) +KODI_SCREENSAVER_ASTERWAVE_DEPENDENCIES = kodi libglu libsoil + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-biogenesis/Config.in b/buildroot/package/kodi-screensaver-biogenesis/Config.in new file mode 100644 index 0000000..cdc2d91 --- /dev/null +++ b/buildroot/package/kodi-screensaver-biogenesis/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_BIOGENESIS + bool "kodi-screensaver-biogenesis" + depends on BR2_PACKAGE_HAS_LIBGL + help + BioGenesis screensaver for Kodi + + https://github.com/notspiff/screensaver.biogenesis + +comment "kodi-screensaver-biogenesis needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.hash b/buildroot/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.hash new file mode 100644 index 0000000..63b9d3c --- /dev/null +++ b/buildroot/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 b97dc804261b19df725e0a9f1af3be6903226ae616fcac170f7b9c1a67bf811a kodi-screensaver-biogenesis-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.mk b/buildroot/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.mk new file mode 100644 index 0000000..c5ebd85 --- /dev/null +++ b/buildroot/package/kodi-screensaver-biogenesis/kodi-screensaver-biogenesis.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-biogenesis +# +################################################################################ + +KODI_SCREENSAVER_BIOGENESIS_VERSION = v1.1.0 +KODI_SCREENSAVER_BIOGENESIS_SITE = $(call github,notspiff,screensaver.biogenesis,$(KODI_SCREENSAVER_BIOGENESIS_VERSION)) +KODI_SCREENSAVER_BIOGENESIS_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_BIOGENESIS_LICENSE_FILES = src/Life.cpp +KODI_SCREENSAVER_BIOGENESIS_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-cpblobs/Config.in b/buildroot/package/kodi-screensaver-cpblobs/Config.in new file mode 100644 index 0000000..e80ea0e --- /dev/null +++ b/buildroot/package/kodi-screensaver-cpblobs/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_CPBLOBS + bool "kodi-screensaver-cpblobs" + depends on BR2_PACKAGE_HAS_LIBGL # libsoil + select BR2_PACKAGE_LIBSOIL + help + CpBlobs screensaver for Kodi + + https://github.com/notspiff/screensaver.cpblobs + +comment "kodi-screensaver-cpblobs needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.hash b/buildroot/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.hash new file mode 100644 index 0000000..21443d8 --- /dev/null +++ b/buildroot/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 1ca5e4de61251de7e420dc6ded3156960f9bb52ed7ff0243f305768147d470e3 kodi-screensaver-cpblobs-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.mk b/buildroot/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.mk new file mode 100644 index 0000000..63a8dfa --- /dev/null +++ b/buildroot/package/kodi-screensaver-cpblobs/kodi-screensaver-cpblobs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-cpblobs +# +################################################################################ + +KODI_SCREENSAVER_CPBLOBS_VERSION = v1.1.0 +KODI_SCREENSAVER_CPBLOBS_SITE = $(call github,notspiff,screensaver.cpblobs,$(KODI_SCREENSAVER_CPBLOBS_VERSION)) +KODI_SCREENSAVER_CPBLOBS_LICENSE = GPL-2.0 +KODI_SCREENSAVER_CPBLOBS_LICENSE_FILES = LICENSE +KODI_SCREENSAVER_CPBLOBS_DEPENDENCIES = kodi libsoil + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-crystalmorph/Config.in b/buildroot/package/kodi-screensaver-crystalmorph/Config.in new file mode 100644 index 0000000..1303d22 --- /dev/null +++ b/buildroot/package/kodi-screensaver-crystalmorph/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_CRYSTALMORPH + bool "kodi-screensaver-crystalmorph" + depends on BR2_PACKAGE_HAS_LIBGL # libglu + help + CrystalMorph screensaver for Kodi + + https://github.com/notspiff/screensaver.crystalmorph + +comment "kodi-screensaver-crystalmorph needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-crystalmorph/kodi-screensaver-crystalmorph.hash b/buildroot/package/kodi-screensaver-crystalmorph/kodi-screensaver-crystalmorph.hash new file mode 100644 index 0000000..ff9d6d0 --- /dev/null +++ b/buildroot/package/kodi-screensaver-crystalmorph/kodi-screensaver-crystalmorph.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 a8400c8d8be0fe0ba616ad1d0ef5fd798980a9dd4e38ef88bee9bf74a06975d5 kodi-screensaver-crystalmorph-1dc9bf3f57cc2c5345efec64d9499c3bf8f7bd6e.tar.gz diff --git a/buildroot/package/kodi-screensaver-crystalmorph/kodi-screensaver-crystalmorph.mk b/buildroot/package/kodi-screensaver-crystalmorph/kodi-screensaver-crystalmorph.mk new file mode 100644 index 0000000..83629e4 --- /dev/null +++ b/buildroot/package/kodi-screensaver-crystalmorph/kodi-screensaver-crystalmorph.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-crystalmorph +# +################################################################################ + +KODI_SCREENSAVER_CRYSTALMORPH_VERSION = 1dc9bf3f57cc2c5345efec64d9499c3bf8f7bd6e +KODI_SCREENSAVER_CRYSTALMORPH_SITE = $(call github,notspiff,screensaver.crystalmorph,$(KODI_SCREENSAVER_CRYSTALMORPH_VERSION)) +KODI_SCREENSAVER_CRYSTALMORPH_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_CRYSTALMORPH_LICENSE_FILES = src/Fractal.cpp +KODI_SCREENSAVER_CRYSTALMORPH_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-greynetic/Config.in b/buildroot/package/kodi-screensaver-greynetic/Config.in new file mode 100644 index 0000000..ce636b8 --- /dev/null +++ b/buildroot/package/kodi-screensaver-greynetic/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_GREYNETIC + bool "kodi-screensaver-greynetic" + depends on BR2_PACKAGE_HAS_LIBGL + help + Greynetic screensaver for Kodi + + https://github.com/notspiff/screensaver.greynetic + +comment "kodi-screensaver-greynetic needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.hash b/buildroot/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.hash new file mode 100644 index 0000000..212aee6 --- /dev/null +++ b/buildroot/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 55a77487f02d282e8431e64de3cb263489037c2374a4b9cdd7aa189093e7621f kodi-screensaver-greynetic-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.mk b/buildroot/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.mk new file mode 100644 index 0000000..66435eb --- /dev/null +++ b/buildroot/package/kodi-screensaver-greynetic/kodi-screensaver-greynetic.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-greynetic +# +################################################################################ + +KODI_SCREENSAVER_GREYNETIC_VERSION = v1.1.0 +KODI_SCREENSAVER_GREYNETIC_SITE = $(call github,notspiff,screensaver.greynetic,$(KODI_SCREENSAVER_GREYNETIC_VERSION)) +KODI_SCREENSAVER_GREYNETIC_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_GREYNETIC_LICENSE_FILES = src/GreyNetic.cpp +KODI_SCREENSAVER_GREYNETIC_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-matrixtrails/Config.in b/buildroot/package/kodi-screensaver-matrixtrails/Config.in new file mode 100644 index 0000000..e2d3f71 --- /dev/null +++ b/buildroot/package/kodi-screensaver-matrixtrails/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_MATRIXTRAILS + bool "kodi-screensaver-matrixtrails" + depends on BR2_PACKAGE_HAS_LIBGL # libsoil + select BR2_PACKAGE_LIBSOIL + help + Matrix trails screensaver for Kodi + + https://github.com/notspiff/screensaver.matrixtrails + +comment "kodi-screensaver-matrixtrails needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.hash b/buildroot/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.hash new file mode 100644 index 0000000..55deabe --- /dev/null +++ b/buildroot/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2b531f51b86536df2a5268547e3d1b7fabc8a1dc930808b46685afcc455bb8fa kodi-screensaver-matrixtrails-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.mk b/buildroot/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.mk new file mode 100644 index 0000000..142e48d --- /dev/null +++ b/buildroot/package/kodi-screensaver-matrixtrails/kodi-screensaver-matrixtrails.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# kodi-screensaver-matrixtrails +# +################################################################################ + +KODI_SCREENSAVER_MATRIXTRAILS_VERSION = v1.1.0 +KODI_SCREENSAVER_MATRIXTRAILS_SITE = $(call github,notspiff,screensaver.matrixtrails,$(KODI_SCREENSAVER_MATRIXTRAILS_VERSION)) +KODI_SCREENSAVER_MATRIXTRAILS_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_MATRIXTRAILS_LICENSE_FILES = src/matrixtrails.cpp + +KODI_SCREENSAVER_MATRIXTRAILS_DEPENDENCIES = kodi libsoil + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-pingpong/Config.in b/buildroot/package/kodi-screensaver-pingpong/Config.in new file mode 100644 index 0000000..3971052 --- /dev/null +++ b/buildroot/package/kodi-screensaver-pingpong/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_PINGPONG + bool "kodi-screensaver-pingpong" + depends on BR2_PACKAGE_HAS_LIBGL + help + Ping-pong screensaver for Kodi + + https://github.com/notspiff/screensaver.pingpong + +comment "kodi-screensaver-pingpong needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.hash b/buildroot/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.hash new file mode 100644 index 0000000..aad8314 --- /dev/null +++ b/buildroot/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 99e9cbc3815d4e3dad964b2d233dbf6acc4416121398f7fca75f3811cb04d88f kodi-screensaver-pingpong-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.mk b/buildroot/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.mk new file mode 100644 index 0000000..8b6426d --- /dev/null +++ b/buildroot/package/kodi-screensaver-pingpong/kodi-screensaver-pingpong.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-pingpong +# +################################################################################ + +KODI_SCREENSAVER_PINGPONG_VERSION = v1.1.0 +KODI_SCREENSAVER_PINGPONG_SITE = $(call github,notspiff,screensaver.pingpong,$(KODI_SCREENSAVER_PINGPONG_VERSION)) +KODI_SCREENSAVER_PINGPONG_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_PINGPONG_LICENSE_FILES = src/readme.txt +KODI_SCREENSAVER_PINGPONG_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-planestate/Config.in b/buildroot/package/kodi-screensaver-planestate/Config.in new file mode 100644 index 0000000..b63d70e --- /dev/null +++ b/buildroot/package/kodi-screensaver-planestate/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_PLANESTATE + bool "kodi-screensaver-planestate" + depends on BR2_PACKAGE_HAS_LIBGL # libsoil + select BR2_PACKAGE_LIBSOIL + help + PlaneState screensaver for Kodi + + https://github.com/notspiff/screensaver.planestate + +comment "kodi-screensaver-planestate needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-planestate/kodi-screensaver-planestate.hash b/buildroot/package/kodi-screensaver-planestate/kodi-screensaver-planestate.hash new file mode 100644 index 0000000..de5f6cf --- /dev/null +++ b/buildroot/package/kodi-screensaver-planestate/kodi-screensaver-planestate.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 6059630e56bd022a27f73fe7c94fcf6a66792e7bb10f54a7893f536c23b95b99 kodi-screensaver-planestate-5341406dd05439a1a0245ab3f6d1a8964461d0e5.tar.gz diff --git a/buildroot/package/kodi-screensaver-planestate/kodi-screensaver-planestate.mk b/buildroot/package/kodi-screensaver-planestate/kodi-screensaver-planestate.mk new file mode 100644 index 0000000..0e90ffc --- /dev/null +++ b/buildroot/package/kodi-screensaver-planestate/kodi-screensaver-planestate.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# kodi-screensaver-planestate +# +################################################################################ + +KODI_SCREENSAVER_PLANESTATE_VERSION = 5341406dd05439a1a0245ab3f6d1a8964461d0e5 +KODI_SCREENSAVER_PLANESTATE_SITE = $(call github,notspiff,screensaver.planestate,$(KODI_SCREENSAVER_PLANESTATE_VERSION)) +KODI_SCREENSAVER_PLANESTATE_DEPENDENCIES = kodi libsoil + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-pyro/Config.in b/buildroot/package/kodi-screensaver-pyro/Config.in new file mode 100644 index 0000000..982542d --- /dev/null +++ b/buildroot/package/kodi-screensaver-pyro/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_PYRO + bool "kodi-screensaver-pyro" + depends on BR2_PACKAGE_HAS_LIBGL + help + Pyro screensaver for Kodi + + https://github.com/notspiff/screensaver.pyro + +comment "kodi-screensaver-pyro needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-pyro/kodi-screensaver-pyro.hash b/buildroot/package/kodi-screensaver-pyro/kodi-screensaver-pyro.hash new file mode 100644 index 0000000..a16ee8e --- /dev/null +++ b/buildroot/package/kodi-screensaver-pyro/kodi-screensaver-pyro.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 0dcaed581ffe5595878338a8c9c55bd7acc87e03d30a4d3ca4a03c3f8db66ddc kodi-screensaver-pyro-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-screensaver-pyro/kodi-screensaver-pyro.mk b/buildroot/package/kodi-screensaver-pyro/kodi-screensaver-pyro.mk new file mode 100644 index 0000000..bc50118 --- /dev/null +++ b/buildroot/package/kodi-screensaver-pyro/kodi-screensaver-pyro.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-pyro +# +################################################################################ + +KODI_SCREENSAVER_PYRO_VERSION = v1.1.0 +KODI_SCREENSAVER_PYRO_SITE = $(call github,notspiff,screensaver.pyro,$(KODI_SCREENSAVER_PYRO_VERSION)) +KODI_SCREENSAVER_PYRO_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_PYRO_LICENSE_FILES = src/Pyro.cpp +KODI_SCREENSAVER_PYRO_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-rsxs/0001-cross-compile.patch b/buildroot/package/kodi-screensaver-rsxs/0001-cross-compile.patch new file mode 100644 index 0000000..a7b2053 --- /dev/null +++ b/buildroot/package/kodi-screensaver-rsxs/0001-cross-compile.patch @@ -0,0 +1,37 @@ +Fix cross-compilation + +Use the cross-compiler and not the host version. + +Patch sent upstream: +https://github.com/notspiff/screensavers.rsxs/pull/5 + +Signed-off-by: Bernd Kuhls + +diff -uNr screensavers.rsxs-195e0ec3fbbcb2ee2012cd560e42d05167f0f259.org/CMakeLists.txt screensavers.rsxs-195e0ec3fbbcb2ee2012cd560e42d05167f0f259/CMakeLists.txt +--- screensavers.rsxs-195e0ec3fbbcb2ee2012cd560e42d05167f0f259.org/CMakeLists.txt 2015-03-19 12:20:23.000000000 +0100 ++++ screensavers.rsxs-195e0ec3fbbcb2ee2012cd560e42d05167f0f259/CMakeLists.txt 2015-07-19 20:26:16.660481032 +0200 +@@ -33,6 +33,11 @@ + ${PROJECT_SOURCE_DIR}/${rsxs_dir}/src/skyrocket + ${PROJECT_SOURCE_DIR}/${rsxs_dir}/src/solarwinds) + ++ ++get_filename_component( COMPILER_FILENAME "${CMAKE_C_COMPILER}" NAME ) ++string( REGEX REPLACE "-[^-]+$" "" ++ TOOLCHAIN_NAME "${COMPILER_FILENAME}" ) ++ + include(ExternalProject) + set(update_command "") + if(BOOTSTRAP_IN_TREE OR NOT DEFINED BOOTSTRAP_IN_TREE) +@@ -46,8 +51,11 @@ + endif() + endif() + externalproject_add(rsxs SOURCE_DIR ${PROJECT_SOURCE_DIR}/${rsxs_dir} +- CONFIGURE_COMMAND ${configure_start} ++ CONFIGURE_COMMAND gl_cv_func_gettimeofday_clobber=no ac_cv_type__Bool=yes ++ ac_cv_func_malloc_0_nonnull=yes ++ ${configure_start} + --prefix= ++ --host=${TOOLCHAIN_NAME} + --without-xscreensaver + --disable-cyclone + --disable-euphoria diff --git a/buildroot/package/kodi-screensaver-rsxs/0002-fix-default-include-dir.patch b/buildroot/package/kodi-screensaver-rsxs/0002-fix-default-include-dir.patch new file mode 100644 index 0000000..a7e7c74 --- /dev/null +++ b/buildroot/package/kodi-screensaver-rsxs/0002-fix-default-include-dir.patch @@ -0,0 +1,28 @@ +Fix X include path to prevent error during configure + +Downloaded from +https://github.com/LibreELEC/LibreELEC.tv/blob/master/packages/mediacenter/kodi-binary-addons/screensavers.rsxs/patches/screensavers.rsxs-0002-fix-default-include-dir.patch + +Signed-off-by: Bernd Kuhls + +diff -Naur screensavers.rsxs-3241d29.orig/CMakeLists.txt screensavers.rsxs-3241d29/CMakeLists.txt +--- screensavers.rsxs-3241d29.orig/CMakeLists.txt 2015-10-22 23:59:38.187280475 -0700 ++++ screensavers.rsxs-3241d29/CMakeLists.txt 2015-10-23 00:00:27.228113829 -0700 +@@ -17,7 +17,7 @@ + include_directories(${OpenGL_INCLUDE_DIR} + ${PNG_INCLUDE_DIR} + ${KODI_INCLUDE_DIR} +- ${X_INCLUDE_DIRS} ++ ${X_INCLUDE_DIR} + ${CMAKE_BINARY_DIR}/rsxs-prefix/src/rsxs-build + ${PROJECT_SOURCE_DIR}/${rsxs_dir}/src + ${PROJECT_SOURCE_DIR}/${rsxs_dir}/lib +@@ -67,7 +67,7 @@ + --disable-skyrocket + --disable-solarwinds + --disable-sound +- --x-includes=${X_INCLUDE_DIRS} ++ --x-includes=${X_INCLUDE_DIR} + --x-libraries=${X_LIBRARIES} + ${PNG_PATH} + ${EXTRA_FLAGS} diff --git a/buildroot/package/kodi-screensaver-rsxs/Config.in b/buildroot/package/kodi-screensaver-rsxs/Config.in new file mode 100644 index 0000000..c523ce5 --- /dev/null +++ b/buildroot/package/kodi-screensaver-rsxs/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_RSXS + bool "kodi-screensaver-rsxs" + depends on BR2_PACKAGE_HAS_LIBGL # libglu + depends on BR2_PACKAGE_XORG7 # xlib_libXmu + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_XLIB_LIBXMU + help + RSXS screensaver add-ons for Kodi + + https://github.com/notspiff/screensavers.rsxs + +comment "kodi-screensaver-rsxs depends on X.org and needs OpenGL" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.hash b/buildroot/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.hash new file mode 100644 index 0000000..66d79a0 --- /dev/null +++ b/buildroot/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 8436c29d2f42bc65ff6f1abc2f1d05a613cc2ebb16d793e02b1f2bee296952a6 kodi-screensaver-rsxs-v1.3.0.tar.gz diff --git a/buildroot/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.mk b/buildroot/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.mk new file mode 100644 index 0000000..8445bf8 --- /dev/null +++ b/buildroot/package/kodi-screensaver-rsxs/kodi-screensaver-rsxs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-rsxs +# +################################################################################ + +KODI_SCREENSAVER_RSXS_VERSION = v1.3.0 +KODI_SCREENSAVER_RSXS_SITE = $(call github,notspiff,screensavers.rsxs,$(KODI_SCREENSAVER_RSXS_VERSION)) +KODI_SCREENSAVER_RSXS_LICENSE = GPL-3.0 +KODI_SCREENSAVER_RSXS_LICENSE_FILES = lib/rsxs-1.0/COPYING +KODI_SCREENSAVER_RSXS_DEPENDENCIES = kodi libpng xlib_libXmu + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-screensaver-stars/Config.in b/buildroot/package/kodi-screensaver-stars/Config.in new file mode 100644 index 0000000..bcfb47b --- /dev/null +++ b/buildroot/package/kodi-screensaver-stars/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_SCREENSAVER_STARS + bool "kodi-screensaver-stars" + depends on BR2_PACKAGE_HAS_LIBGL + help + Starfield screensaver for Kodi + + https://github.com/notspiff/screensaver.stars + +comment "kodi-screensaver-stars needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-screensaver-stars/kodi-screensaver-stars.hash b/buildroot/package/kodi-screensaver-stars/kodi-screensaver-stars.hash new file mode 100644 index 0000000..7f8c9ae --- /dev/null +++ b/buildroot/package/kodi-screensaver-stars/kodi-screensaver-stars.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 525caac94fd2bd858daf9fa7719eea4181c168e5c692bb896689625bf4437d32 kodi-screensaver-stars-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-screensaver-stars/kodi-screensaver-stars.mk b/buildroot/package/kodi-screensaver-stars/kodi-screensaver-stars.mk new file mode 100644 index 0000000..e94670c --- /dev/null +++ b/buildroot/package/kodi-screensaver-stars/kodi-screensaver-stars.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-screensaver-stars +# +################################################################################ + +KODI_SCREENSAVER_STARS_VERSION = v1.1.0 +KODI_SCREENSAVER_STARS_SITE = $(call github,notspiff,screensaver.stars,$(KODI_SCREENSAVER_STARS_VERSION)) +KODI_SCREENSAVER_STARS_LICENSE = GPL-2.0+ +KODI_SCREENSAVER_STARS_LICENSE_FILES = src/StarField.cpp +KODI_SCREENSAVER_STARS_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-skin-confluence/Config.in b/buildroot/package/kodi-skin-confluence/Config.in new file mode 100644 index 0000000..08b6568 --- /dev/null +++ b/buildroot/package/kodi-skin-confluence/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_SKIN_CONFLUENCE + bool "kodi-skin-confluence" + help + Kodi confluence skin + + https://github.com/xbmc/skin.confluence diff --git a/buildroot/package/kodi-skin-confluence/kodi-skin-confluence.hash b/buildroot/package/kodi-skin-confluence/kodi-skin-confluence.hash new file mode 100644 index 0000000..2dabbbd --- /dev/null +++ b/buildroot/package/kodi-skin-confluence/kodi-skin-confluence.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 1fa8ebeec269e678111f64bec373d98e34b4ba1b32e583a505431b2562910ba0 kodi-skin-confluence-37bba429adc16d49a07add08de406682e1cc673a.tar.gz diff --git a/buildroot/package/kodi-skin-confluence/kodi-skin-confluence.mk b/buildroot/package/kodi-skin-confluence/kodi-skin-confluence.mk new file mode 100644 index 0000000..e9cdf3f --- /dev/null +++ b/buildroot/package/kodi-skin-confluence/kodi-skin-confluence.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# kodi-skin-confluence +# +################################################################################ + +# This cset is on the branch 'krypton' +# When Kodi is updated, then this should be updated to the corresponding branch +KODI_SKIN_CONFLUENCE_VERSION = 37bba429adc16d49a07add08de406682e1cc673a +KODI_SKIN_CONFLUENCE_SITE = $(call github,xbmc,skin.confluence,$(KODI_SKIN_CONFLUENCE_VERSION)) +KODI_SKIN_CONFLUENCE_LICENSE = GPL-2.0 +KODI_SKIN_CONFLUENCE_LICENSE_FILES = LICENSE.txt +KODI_SKIN_CONFLUENCE_DEPENDENCIES = kodi + +define KODI_SKIN_CONFLUENCE_BUILD_CMDS + $(HOST_DIR)/bin/TexturePacker -input $(@D)/media/ -output $(@D)/media/Textures.xbt -dupecheck -use_none +endef + +define KODI_SKIN_CONFLUENCE_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence + cp -dpfr $(@D)/* $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence + find $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence/media -name *.jpg -delete + find $(TARGET_DIR)/usr/share/kodi/addons/skin.confluence/media -name *.png -delete +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/kodi-texturepacker/0001-texturepacker.patch b/buildroot/package/kodi-texturepacker/0001-texturepacker.patch new file mode 100644 index 0000000..8830b4c --- /dev/null +++ b/buildroot/package/kodi-texturepacker/0001-texturepacker.patch @@ -0,0 +1,16 @@ +Fix host compile + +Signed-off-by: Bernd Kuhls + +diff -uNr xbmc-656cba5d5c7c5edb166196b48560825b9b1f03fd.org/tools/depends/native/TexturePacker/Makefile xbmc-656cba5d5c7c5edb166196b48560825b9b1f03fd/tools/depends/native/TexturePacker/Makefile +--- xbmc-656cba5d5c7c5edb166196b48560825b9b1f03fd.org/tools/depends/native/TexturePacker/Makefile 2015-01-25 09:00:48.000000000 +0100 ++++ xbmc-656cba5d5c7c5edb166196b48560825b9b1f03fd/tools/depends/native/TexturePacker/Makefile 2015-01-25 13:03:23.606140953 +0100 +@@ -36,7 +36,7 @@ + -rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM) + cd $(PLATFORM); cp -a $(SOURCE)/* . + cd $(PLATFORM); ./autogen.sh +- cd $(PLATFORM); ./configure --prefix=$(PREFIX) $(EXTRA_CONFIGURE) EXTRA_DEFINES="$(NATIVE_ARCH_DEFINES)" ++ cd $(PLATFORM); ./configure --prefix=$(PREFIX) EXTRA_DEFINES="$(NATIVE_ARCH_DEFINES)" + + + $(APP): $(PLATFORM) diff --git a/buildroot/package/kodi-texturepacker/0002-fix_reallocarray.patch b/buildroot/package/kodi-texturepacker/0002-fix_reallocarray.patch new file mode 100644 index 0000000..e32d09e --- /dev/null +++ b/buildroot/package/kodi-texturepacker/0002-fix_reallocarray.patch @@ -0,0 +1,170 @@ +From ebc5dfcad836936a14e6f18fd7faa377b3c804e7 Mon Sep 17 00:00:00 2001 +From: MilhouseVH +Date: Mon, 6 Nov 2017 11:47:28 +0000 +Subject: [PATCH] TexturePacker: use C++ headers + +Signed-off-by: Dagg Stompler +--- + tools/depends/native/TexturePacker/src/SimpleFS.h | 4 ++-- + tools/depends/native/TexturePacker/src/TexturePacker.cpp | 2 +- + tools/depends/native/TexturePacker/src/XBTFWriter.cpp | 6 +++--- + tools/depends/native/TexturePacker/src/XBTFWriter.h | 2 +- + tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp | 2 +- + tools/depends/native/TexturePacker/src/md5.h | 4 ++-- + 6 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/tools/depends/native/TexturePacker/src/SimpleFS.h b/tools/depends/native/TexturePacker/src/SimpleFS.h +index c48814c0ad..c2288cf8de 100644 +--- a/tools/depends/native/TexturePacker/src/SimpleFS.h ++++ b/tools/depends/native/TexturePacker/src/SimpleFS.h +@@ -20,9 +20,9 @@ + * + */ + +-#include ++#include + #include +-#include ++#include + + class CFile + { +diff --git a/tools/depends/native/TexturePacker/src/TexturePacker.cpp b/tools/depends/native/TexturePacker/src/TexturePacker.cpp +index ba618be574..045c5ce38d 100644 +--- a/tools/depends/native/TexturePacker/src/TexturePacker.cpp ++++ b/tools/depends/native/TexturePacker/src/TexturePacker.cpp +@@ -22,7 +22,7 @@ + #include + #include + #define __STDC_FORMAT_MACROS +-#include ++#include + #define platform_stricmp _stricmp + #else + #define platform_stricmp stricmp +diff --git a/tools/depends/native/TexturePacker/src/XBTFWriter.cpp b/tools/depends/native/TexturePacker/src/XBTFWriter.cpp +index 9e2493369b..2e80ba674c 100644 +--- a/tools/depends/native/TexturePacker/src/XBTFWriter.cpp ++++ b/tools/depends/native/TexturePacker/src/XBTFWriter.cpp +@@ -19,14 +19,14 @@ + */ + + #define __STDC_FORMAT_MACROS +-#include ++#include + #if defined(TARGET_FREEBSD) || defined(TARGET_DARWIN) +-#include ++#include + #elif !defined(TARGET_DARWIN) + #include + #endif + #include +-#include ++#include + + #include "XBTFWriter.h" + #include "guilib/XBTFReader.h" +diff --git a/tools/depends/native/TexturePacker/src/XBTFWriter.h b/tools/depends/native/TexturePacker/src/XBTFWriter.h +index 7509303a51..d5cf1a2965 100644 +--- a/tools/depends/native/TexturePacker/src/XBTFWriter.h ++++ b/tools/depends/native/TexturePacker/src/XBTFWriter.h +@@ -23,7 +23,7 @@ + + #include + #include +-#include ++#include + + #include "guilib/XBTF.h" + +diff --git a/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp b/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp +index 56c22f7c3a..3ddb20fe88 100644 +--- a/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp ++++ b/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp +@@ -20,7 +20,7 @@ + + #include "GifHelper.h" + #include +-#include ++#include + #include + + #define UNSIGNED_LITTLE_ENDIAN(lo, hi) ((lo) | ((hi) << 8)) +diff --git a/tools/depends/native/TexturePacker/src/md5.h b/tools/depends/native/TexturePacker/src/md5.h +index 456e5be17f..4bb48e0810 100644 +--- a/tools/depends/native/TexturePacker/src/md5.h ++++ b/tools/depends/native/TexturePacker/src/md5.h +@@ -23,8 +23,8 @@ + #ifndef MD5_H + #define MD5_H + +-#include /* for memcpy() */ +-#include ++#include /* for memcpy() */ ++#include + + struct MD5Context + { +-- +2.16.0 + +From ff3e6dad5fdb7b9a2985b2547c8020c709af0340 Mon Sep 17 00:00:00 2001 +From: MilhouseVH +Date: Mon, 6 Nov 2017 18:05:17 +0000 +Subject: [PATCH] TexturePacker: drop unused variable + +--- + tools/depends/native/TexturePacker/src/decoder/JPGDecoder.cpp | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/tools/depends/native/TexturePacker/src/decoder/JPGDecoder.cpp b/tools/depends/native/TexturePacker/src/decoder/JPGDecoder.cpp +index 53f5e9beb7..b0f18bed68 100644 +--- a/tools/depends/native/TexturePacker/src/decoder/JPGDecoder.cpp ++++ b/tools/depends/native/TexturePacker/src/decoder/JPGDecoder.cpp +@@ -72,7 +72,6 @@ bool JPGDecoder::LoadFile(const std::string &filename, DecodedFrames &frames) + struct jpeg_decompress_struct cinfo; + struct jpeg_error_mgr jerr; + +- char *linha; + int ImageSize; + + cinfo.err = jpeg_std_error(&jerr); +@@ -89,7 +88,6 @@ bool JPGDecoder::LoadFile(const std::string &filename, DecodedFrames &frames) + DecodedFrame frame; + + frame.rgbaImage.pixels = (char *)new char[ImageSize]; +- linha = (char *)frame.rgbaImage.pixels; + + unsigned char *scanlinebuff = new unsigned char[3 * cinfo.image_width]; + unsigned char *dst = (unsigned char *)frame.rgbaImage.pixels; +-- +2.16.0 + +From ee441543be07de1222bcff2587bfcdb5c1231989 Mon Sep 17 00:00:00 2001 +From: MilhouseVH +Date: Mon, 6 Nov 2017 21:02:06 +0000 +Subject: [PATCH] TexturePacker: include GifHelper after system headers + +--- + tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp b/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp +index 3ddb20fe88..9ced4ec5bc 100644 +--- a/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp ++++ b/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp +@@ -18,10 +18,10 @@ + * + */ + +-#include "GifHelper.h" + #include + #include + #include ++#include "GifHelper.h" + + #define UNSIGNED_LITTLE_ENDIAN(lo, hi) ((lo) | ((hi) << 8)) + #define GIF_MAX_MEMORY 82944000U // about 79 MB, which is equivalent to 10 full hd frames. +-- +2.16.0 + diff --git a/buildroot/package/kodi-texturepacker/kodi-texturepacker.hash b/buildroot/package/kodi-texturepacker/kodi-texturepacker.hash new file mode 120000 index 0000000..a575750 --- /dev/null +++ b/buildroot/package/kodi-texturepacker/kodi-texturepacker.hash @@ -0,0 +1 @@ +../kodi/kodi.hash \ No newline at end of file diff --git a/buildroot/package/kodi-texturepacker/kodi-texturepacker.mk b/buildroot/package/kodi-texturepacker/kodi-texturepacker.mk new file mode 100644 index 0000000..31e3580 --- /dev/null +++ b/buildroot/package/kodi-texturepacker/kodi-texturepacker.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# kodi-texturepacker +# +################################################################################ + +# Not possible to directly refer to kodi variables, because of +# first/second expansion trickery... +KODI_TEXTUREPACKER_VERSION = 17.6-Krypton +KODI_TEXTUREPACKER_SITE = $(call github,xbmc,xbmc,$(KODI_TEXTUREPACKER_VERSION)) +KODI_TEXTUREPACKER_SOURCE = kodi-$(KODI_TEXTUREPACKER_VERSION).tar.gz +KODI_TEXTUREPACKER_LICENSE = GPL-2.0 +KODI_TEXTUREPACKER_LICENSE_FILES = LICENSE.GPL +HOST_KODI_TEXTUREPACKER_SUBDIR = tools/depends/native/TexturePacker +HOST_KODI_TEXTUREPACKER_DEPENDENCIES = \ + host-giflib \ + host-libjpeg \ + host-libpng \ + host-lzo + +HOST_KODI_TEXTUREPACKER_CXXFLAGS = \ + $(HOST_CXXFLAGS) \ + -std=c++0x \ + -DTARGET_POSIX \ + -DTARGET_LINUX \ + -D_LINUX \ + -I$(@D)/xbmc/linux + +HOST_KODI_TEXTUREPACKER_CONF_OPTS += \ + -DCMAKE_CXX_FLAGS="$(HOST_KODI_TEXTUREPACKER_CXXFLAGS)" \ + -DCMAKE_MODULE_PATH=$(@D)/project/cmake/modules \ + -DCORE_SOURCE_DIR=$(@D) \ + -Wno-dev + +define HOST_KODI_TEXTUREPACKER_INSTALL_CMDS + $(INSTALL) -m 755 -D \ + $(@D)/tools/depends/native/TexturePacker/TexturePacker \ + $(HOST_DIR)/bin/TexturePacker +endef + +$(eval $(host-cmake-package)) diff --git a/buildroot/package/kodi-visualisation-fishbmc/Config.in b/buildroot/package/kodi-visualisation-fishbmc/Config.in new file mode 100644 index 0000000..9e2eabb --- /dev/null +++ b/buildroot/package/kodi-visualisation-fishbmc/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_VISUALISATION_FISHBMC + bool "kodi-visualisation-fishbmc" + depends on BR2_PACKAGE_HAS_LIBGL + help + Fische visualiser for Kodi + + https://github.com/notspiff/visualization.fishbmc + +comment "kodi-visualisation-fishbmc needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.hash b/buildroot/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.hash new file mode 100644 index 0000000..c89ca9a --- /dev/null +++ b/buildroot/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 cf42a21978578cb5ecb10c20fe09791183d8ef2998ff9d956a84142a7dda8f72 kodi-visualisation-fishbmc-v4.1.0.tar.gz diff --git a/buildroot/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.mk b/buildroot/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.mk new file mode 100644 index 0000000..d08c215 --- /dev/null +++ b/buildroot/package/kodi-visualisation-fishbmc/kodi-visualisation-fishbmc.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-fishbmc +# +################################################################################ + +KODI_VISUALISATION_FISHBMC_VERSION = v4.1.0 +KODI_VISUALISATION_FISHBMC_SITE = $(call github,notspiff,visualization.fishbmc,$(KODI_VISUALISATION_FISHBMC_VERSION)) +KODI_VISUALISATION_FISHBMC_LICENSE = GPL-2.0+ +KODI_VISUALISATION_FISHBMC_LICENSE_FILES = visualization.fishbmc/LICENSE +KODI_VISUALISATION_FISHBMC_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-visualisation-goom/0001-cross-compile.patch b/buildroot/package/kodi-visualisation-goom/0001-cross-compile.patch new file mode 100644 index 0000000..8dd0fe9 --- /dev/null +++ b/buildroot/package/kodi-visualisation-goom/0001-cross-compile.patch @@ -0,0 +1,32 @@ +Fix cross-compilation + +Use the cross-compiler and not the host version. + +Patch sent upstream: +https://github.com/notspiff/visualization.goom/pull/4 + +Signed-off-by: Bernd Kuhls + +diff -uNr visualization.goom-fb5933ba5b2143d055cc7749dc60a82f6002b305.org/CMakeLists.txt visualization.goom-fb5933ba5b2143d055cc7749dc60a82f6002b305/CMakeLists.txt +--- visualization.goom-fb5933ba5b2143d055cc7749dc60a82f6002b305.org/CMakeLists.txt 2014-10-31 11:34:21.000000000 +0100 ++++ visualization.goom-fb5933ba5b2143d055cc7749dc60a82f6002b305/CMakeLists.txt 2015-07-19 19:49:43.340054342 +0200 +@@ -13,6 +13,10 @@ + ${KODI_INCLUDE_DIR} + ${PROJECT_SOURCE_DIR}/lib/goom2k4-0/src) + ++get_filename_component( COMPILER_FILENAME "${CMAKE_C_COMPILER}" NAME ) ++string( REGEX REPLACE "-[^-]+$" "" ++ TOOLCHAIN_NAME "${COMPILER_FILENAME}" ) ++ + include(ExternalProject) + set(update_command "") + if(BOOTSTRAP_IN_TREE OR NOT DEFINED BOOTSTRAP_IN_TREE) +@@ -20,7 +24,7 @@ + endif() + externalproject_add(libgoom SOURCE_DIR ${PROJECT_SOURCE_DIR}/lib/goom2k4-0 + "${update_command}" +- CONFIGURE_COMMAND ${PROJECT_SOURCE_DIR}/lib/goom2k4-0/configure --disable-shared --enable-static --with-pic --prefix= ++ CONFIGURE_COMMAND ${PROJECT_SOURCE_DIR}/lib/goom2k4-0/configure --disable-shared --enable-static --with-pic --prefix= --host=${TOOLCHAIN_NAME} + BUILD_COMMAND ${MAKE} + INSTALL_COMMAND "") + diff --git a/buildroot/package/kodi-visualisation-goom/Config.in b/buildroot/package/kodi-visualisation-goom/Config.in new file mode 100644 index 0000000..de4d2ef --- /dev/null +++ b/buildroot/package/kodi-visualisation-goom/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_KODI_VISUALISATION_GOOM + bool "kodi-visualisation-goom" + depends on BR2_PACKAGE_HAS_LIBGL + help + GOOM visualiser for Kodi + + https://github.com/notspiff/visualization.goom + +comment "kodi-visualization-goom needs OpenGL" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/kodi-visualisation-goom/kodi-visualisation-goom.hash b/buildroot/package/kodi-visualisation-goom/kodi-visualisation-goom.hash new file mode 100644 index 0000000..fa5fbf6 --- /dev/null +++ b/buildroot/package/kodi-visualisation-goom/kodi-visualisation-goom.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 501b8b1d5bd174ec71d57894293ae5eb0c1f41c3b725ab5e7b5a1c5eeea77a7f kodi-visualisation-goom-54da35870930acd1a3a36195dd2c1498ac336b90.tar.gz diff --git a/buildroot/package/kodi-visualisation-goom/kodi-visualisation-goom.mk b/buildroot/package/kodi-visualisation-goom/kodi-visualisation-goom.mk new file mode 100644 index 0000000..a7503a9 --- /dev/null +++ b/buildroot/package/kodi-visualisation-goom/kodi-visualisation-goom.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# kodi-visualisation-goom +# +################################################################################ + +KODI_VISUALISATION_GOOM_VERSION = 54da35870930acd1a3a36195dd2c1498ac336b90 +KODI_VISUALISATION_GOOM_SITE = $(call github,notspiff,visualization.goom,$(KODI_VISUALISATION_GOOM_VERSION)) +KODI_VISUALISATION_GOOM_LICENSE = GPL-2.0+ +KODI_VISUALISATION_GOOM_LICENSE_FILES = src/Main.cpp + +KODI_VISUALISATION_GOOM_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-visualisation-shadertoy/0001-FindOpenGLES2-also-search-for-egl-with-pkg-config.patch b/buildroot/package/kodi-visualisation-shadertoy/0001-FindOpenGLES2-also-search-for-egl-with-pkg-config.patch new file mode 100644 index 0000000..8de96a6 --- /dev/null +++ b/buildroot/package/kodi-visualisation-shadertoy/0001-FindOpenGLES2-also-search-for-egl-with-pkg-config.patch @@ -0,0 +1,44 @@ +From 9c428c3c9f120a11468f98546bcc754d2c3302af Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 30 Jul 2015 10:02:15 +0200 +Subject: [PATCH] FindOpenGLES2: also search for egl with pkg-config + +The non-pkg-config path looks for both EGL *and* OpenGL ES, but not +the pkg-config path, which might lead to missing libraries/headers if +egl.pc has more header paths or libraries than glesv2.pc. + +Signed-off-by: Thomas Petazzoni +--- + CMakeLists.txt | 2 +- + FindOpenGLES2.cmake | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8b084cf..81bbe27 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -35,7 +35,7 @@ + endif() + endif() + +- include_directories(${OpenGL_INCLUDE_DIR} ++ include_directories(${OpenGL_INCLUDE_DIR} ${OpenGLES2_INCLUDE_DIRS} + ${KODI_INCLUDE_DIR} + ${p8-platform_INCLUDE_DIRS} + ${PROJECT_SOURCE_DIR}/lib/kissfft +diff --git a/FindOpenGLES2.cmake b/FindOpenGLES2.cmake +index e1b7d21..2a9ce0d 100644 +--- a/FindOpenGLES2.cmake ++++ b/FindOpenGLES2.cmake +@@ -7,7 +7,7 @@ + + find_package(PkgConfig) + if(PKG_CONFIG_FOUND) +- pkg_check_modules(OpenGLES2 glesv2) ++ pkg_check_modules(OpenGLES2 glesv2 egl) + endif(PKG_CONFIG_FOUND) + + if(NOT OPENGLES2_FOUND) +-- +2.5.0 + diff --git a/buildroot/package/kodi-visualisation-shadertoy/Config.in b/buildroot/package/kodi-visualisation-shadertoy/Config.in new file mode 100644 index 0000000..3b981d0 --- /dev/null +++ b/buildroot/package/kodi-visualisation-shadertoy/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_KODI_VISUALISATION_SHADERTOY + bool "kodi-visualisation-shadertoy" + select BR2_PACKAGE_LIBPLATFORM + help + Shadertoy visualiser for Kodi + + https://github.com/notspiff/visualization.shadertoy diff --git a/buildroot/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.hash b/buildroot/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.hash new file mode 100644 index 0000000..a0df397 --- /dev/null +++ b/buildroot/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 4456e88bc94bcb3e2481286b27926a1f6d85d6f857de31a46d50f44fead01abd kodi-visualisation-shadertoy-v1.1.5.tar.gz diff --git a/buildroot/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.mk b/buildroot/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.mk new file mode 100644 index 0000000..9238915 --- /dev/null +++ b/buildroot/package/kodi-visualisation-shadertoy/kodi-visualisation-shadertoy.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-shadertoy +# +################################################################################ + +KODI_VISUALISATION_SHADERTOY_VERSION = v1.1.5 +KODI_VISUALISATION_SHADERTOY_SITE = $(call github,notspiff,visualization.shadertoy,$(KODI_VISUALISATION_SHADERTOY_VERSION)) +KODI_VISUALISATION_SHADERTOY_LICENSE = GPL-2.0+ +KODI_VISUALISATION_SHADERTOY_LICENSE_FILES = src/main.cpp +KODI_VISUALISATION_SHADERTOY_DEPENDENCIES = kodi libplatform + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-visualisation-spectrum/Config.in b/buildroot/package/kodi-visualisation-spectrum/Config.in new file mode 100644 index 0000000..3b2b0a2 --- /dev/null +++ b/buildroot/package/kodi-visualisation-spectrum/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_VISUALISATION_SPECTRUM + bool "kodi-visualisation-spectrum" + help + Spectrum visualiser for Kodi + + https://github.com/notspiff/visualization.spectrum diff --git a/buildroot/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.hash b/buildroot/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.hash new file mode 100644 index 0000000..6c892ed --- /dev/null +++ b/buildroot/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 7ee78ff5c24e3f81b6e2a9208237f34667cb9faa5453d7bdb900ab65245973f1 kodi-visualisation-spectrum-v1.1.1.tar.gz diff --git a/buildroot/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.mk b/buildroot/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.mk new file mode 100644 index 0000000..3ab2c99 --- /dev/null +++ b/buildroot/package/kodi-visualisation-spectrum/kodi-visualisation-spectrum.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-spectrum +# +################################################################################ + +KODI_VISUALISATION_SPECTRUM_VERSION = v1.1.1 +KODI_VISUALISATION_SPECTRUM_SITE = $(call github,notspiff,visualization.spectrum,$(KODI_VISUALISATION_SPECTRUM_VERSION)) +KODI_VISUALISATION_SPECTRUM_LICENSE = GPL-2.0+ +KODI_VISUALISATION_SPECTRUM_LICENSE_FILES = COPYING +KODI_VISUALISATION_SPECTRUM_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-visualisation-waveforhue/Config.in b/buildroot/package/kodi-visualisation-waveforhue/Config.in new file mode 100644 index 0000000..9694027 --- /dev/null +++ b/buildroot/package/kodi-visualisation-waveforhue/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_VISUALISATION_WAVEFORHUE + bool "kodi-visualisation-waveforhue" + help + WaveForHue visualiser for Kodi + + https://github.com/notspiff/visualization.waveforhue diff --git a/buildroot/package/kodi-visualisation-waveforhue/kodi-visualisation-waveforhue.hash b/buildroot/package/kodi-visualisation-waveforhue/kodi-visualisation-waveforhue.hash new file mode 100644 index 0000000..e7e97f1 --- /dev/null +++ b/buildroot/package/kodi-visualisation-waveforhue/kodi-visualisation-waveforhue.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 80c466c55aee97d01442892135d4785070333e39f45942da17b65239758e5ae9 kodi-visualisation-waveforhue-b1805dbdba07e5e5b62115490c703aca43e9065c.tar.gz diff --git a/buildroot/package/kodi-visualisation-waveforhue/kodi-visualisation-waveforhue.mk b/buildroot/package/kodi-visualisation-waveforhue/kodi-visualisation-waveforhue.mk new file mode 100644 index 0000000..3ff32e6 --- /dev/null +++ b/buildroot/package/kodi-visualisation-waveforhue/kodi-visualisation-waveforhue.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-waveforhue +# +################################################################################ + +KODI_VISUALISATION_WAVEFORHUE_VERSION = b1805dbdba07e5e5b62115490c703aca43e9065c +KODI_VISUALISATION_WAVEFORHUE_SITE = $(call github,hardyt,visualization.waveforhue,$(KODI_VISUALISATION_WAVEFORHUE_VERSION)) +KODI_VISUALISATION_WAVEFORHUE_LICENSE = GPL-2.0+ +KODI_VISUALISATION_WAVEFORHUE_LICENSE_FILES = COPYING +KODI_VISUALISATION_WAVEFORHUE_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-visualisation-waveform/Config.in b/buildroot/package/kodi-visualisation-waveform/Config.in new file mode 100644 index 0000000..56f2509 --- /dev/null +++ b/buildroot/package/kodi-visualisation-waveform/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_KODI_VISUALISATION_WAVEFORM + bool "kodi-visualisation-waveform" + help + Waveform visualiser for Kodi + + https://github.com/notspiff/visualization.waveform diff --git a/buildroot/package/kodi-visualisation-waveform/kodi-visualisation-waveform.hash b/buildroot/package/kodi-visualisation-waveform/kodi-visualisation-waveform.hash new file mode 100644 index 0000000..1fdecbe --- /dev/null +++ b/buildroot/package/kodi-visualisation-waveform/kodi-visualisation-waveform.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 cf10d8d78cb2bde4a0a21bb7e467445617b46593c093ef05f336f95a048f2d54 kodi-visualisation-waveform-v1.1.0.tar.gz diff --git a/buildroot/package/kodi-visualisation-waveform/kodi-visualisation-waveform.mk b/buildroot/package/kodi-visualisation-waveform/kodi-visualisation-waveform.mk new file mode 100644 index 0000000..d906c65 --- /dev/null +++ b/buildroot/package/kodi-visualisation-waveform/kodi-visualisation-waveform.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# kodi-visualisation-waveform +# +################################################################################ + +KODI_VISUALISATION_WAVEFORM_VERSION = v1.1.0 +KODI_VISUALISATION_WAVEFORM_SITE = $(call github,notspiff,visualization.waveform,$(KODI_VISUALISATION_WAVEFORM_VERSION)) +KODI_VISUALISATION_WAVEFORM_LICENSE = GPL-2.0+ +KODI_VISUALISATION_WAVEFORM_LICENSE_FILES = COPYING +KODI_VISUALISATION_WAVEFORM_DEPENDENCIES = kodi + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi/0001-kodi-config.cmake-use-CMAKE_FIND_ROOT_PATH-to-fix-cr.patch b/buildroot/package/kodi/0001-kodi-config.cmake-use-CMAKE_FIND_ROOT_PATH-to-fix-cr.patch new file mode 100644 index 0000000..0b88ce9 --- /dev/null +++ b/buildroot/package/kodi/0001-kodi-config.cmake-use-CMAKE_FIND_ROOT_PATH-to-fix-cr.patch @@ -0,0 +1,42 @@ +From 6604cce38fed748e98d3bd2bf9d0f368d67eeb3c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 29 Jul 2015 23:13:33 +0200 +Subject: [PATCH] kodi-config.cmake: use CMAKE_FIND_ROOT_PATH to fix + cross-compilation + +When cross-compiling, the location at build time of the libraries is +not the same as the one at run-time. The CMAKE_FIND_ROOT_PATH variable +is here to handle this difference, so use it in kodi-config.cmake. + +Signed-off-by: Thomas Petazzoni +(rebased and simplified for Kodi 17.0-Krypton) +Signed-off-by: Bernd Kuhls +--- + project/cmake/KodiConfig.cmake.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/project/cmake/KodiConfig.cmake.in b/project/cmake/KodiConfig.cmake.in +index 76626ec..ffb8e1d 100644 +--- a/project/cmake/KodiConfig.cmake.in ++++ b/project/cmake/KodiConfig.cmake.in +@@ -7,7 +7,7 @@ if(NOT @APP_NAME_UC@_PREFIX) + set(@APP_NAME_UC@_PREFIX @APP_PREFIX@) + endif() + if(NOT @APP_NAME_UC@_INCLUDE_DIR) +- set(@APP_NAME_UC@_INCLUDE_DIR @APP_INCLUDE_DIR@) ++ set(@APP_NAME_UC@_INCLUDE_DIR ${CMAKE_FIND_ROOT_PATH}/@APP_INCLUDE_DIR@) + endif() + if(NOT @APP_NAME_UC@_LIB_DIR) + set(@APP_NAME_UC@_LIB_DIR @APP_LIB_DIR@) +@@ -18,7 +18,7 @@ endif() + if(NOT WIN32) + set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} @CXX11_SWITCH@") + endif() +-list(APPEND CMAKE_MODULE_PATH @APP_LIB_DIR@ @APP_DATA_DIR@/cmake) ++list(APPEND CMAKE_MODULE_PATH ${CMAKE_FIND_ROOT_PATH}/@APP_LIB_DIR@ ${CMAKE_FIND_ROOT_PATH}/@APP_DATA_DIR@/cmake) + + string(REPLACE ";" " " ARCH_DEFINES "@ARCH_DEFINES@") + add_definitions(${ARCH_DEFINES} -DBUILD_KODI_ADDON) +-- +2.5.0 + diff --git a/buildroot/package/kodi/0002-CMake-Remove-dependency-on-gmp-and-libintl-from-Find.patch b/buildroot/package/kodi/0002-CMake-Remove-dependency-on-gmp-and-libintl-from-Find.patch new file mode 100644 index 0000000..80bf954 --- /dev/null +++ b/buildroot/package/kodi/0002-CMake-Remove-dependency-on-gmp-and-libintl-from-Find.patch @@ -0,0 +1,39 @@ +CMake: Remove dependency on gmp and libintl from FindPython.cmake + +Downloaded from Openelec: +https://github.com/OpenELEC/OpenELEC.tv/blob/master/packages/mediacenter/kodi/patches/kodi-998.02-cmake-python.patch + +The dependency for libintl and gmp was introduced by this commit +https://github.com/xbmc/xbmc/commit/8558d672e98b62f3ea0126ba491376add8ed71cb +without further explanation and, apparently, without necessity. + +A question asking whether this is really needed was sent upstream: +https://github.com/xbmc/xbmc/pull/10973#pullrequestreview-34179550 + +Signed-off-by: Bernd Kuhls + +diff -Naur kodi-17.1-Krypton/project/cmake/modules/FindPython.cmake kodi-17.1-Krypton.patch/project/cmake/modules/FindPython.cmake +--- kodi-17.1-Krypton/project/cmake/modules/FindPython.cmake 2017-03-20 17:17:49.000000000 +0100 ++++ kodi-17.1-Krypton.patch/project/cmake/modules/FindPython.cmake 2017-03-30 11:10:01.065718667 +0200 +@@ -16,14 +16,12 @@ + if(KODI_DEPENDSBUILD) + find_library(FFI_LIBRARY ffi REQUIRED) + find_library(EXPAT_LIBRARY expat REQUIRED) +- find_library(INTL_LIBRARY intl REQUIRED) +- find_library(GMP_LIBRARY gmp REQUIRED) + + if(NOT CORE_SYSTEM_NAME STREQUAL android) + set(PYTHON_DEP_LIBRARIES pthread dl util) + endif() + +- set(PYTHON_LIBRARIES ${PYTHON_LIBRARY} ${FFI_LIBRARY} ${EXPAT_LIBRARY} ${INTL_LIBRARY} ${GMP_LIBRARY} ${PYTHON_DEP_LIBRARIES}) ++ set(PYTHON_LIBRARIES ${PYTHON_LIBRARY} ${FFI_LIBRARY} ${EXPAT_LIBRARY} ${PYTHON_DEP_LIBRARIES}) + else() + find_package(PythonLibs 2.7 REQUIRED) + list(APPEND PYTHON_LIBRARIES ${PC_PYTHON_STATIC_LIBRARIES}) +@@ -36,4 +34,4 @@ + set(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR}) + endif() + +-mark_as_advanced(PYTHON_EXECUTABLE PYTHON_INCLUDE_DIRS PYTHON_INCLUDE_DIR PYTHON_LIBRARY PYTHON_LIBRARIES PYTHON_LDFLAGS FFI_LIBRARY EXPAT_LIBRARY INTL_LIBRARY GMP_LIBRARY) ++mark_as_advanced(PYTHON_EXECUTABLE PYTHON_INCLUDE_DIRS PYTHON_INCLUDE_DIR PYTHON_LIBRARY PYTHON_LIBRARIES PYTHON_LDFLAGS FFI_LIBRARY EXPAT_LIBRARY) diff --git a/buildroot/package/kodi/0003-cmake-iconv-is-a-required-dependency.patch b/buildroot/package/kodi/0003-cmake-iconv-is-a-required-dependency.patch new file mode 100644 index 0000000..b95771c --- /dev/null +++ b/buildroot/package/kodi/0003-cmake-iconv-is-a-required-dependency.patch @@ -0,0 +1,92 @@ +From 70ab56d74aff8b2e3ac49fed6bdf3751c9b1457e Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 12 Feb 2017 14:24:18 +0100 +Subject: [PATCH] [cmake] iconv is a required dependency + +This patch adds support for libiconv currently only provided by the +autoconf-based build system: +https://github.com/xbmc/xbmc/blob/Krypton/configure.ac#L1172 + +This commit fixes an error during linking with an uClibc-based +buildroot toolchain: + +[100%] Linking CXX executable kodi.bin +/home/buildroot/br8_ffmpeg3_kodi17_github/output/host/usr/lib/gcc/i586-buildroot-linux-uclibc/6.3.0/../../../../i586-buildroot-linux-uclibc/bin/ld: build/utils/utils.a(CharsetConverter.cpp.o): undefined reference to symbol 'libiconv_open' +/home/buildroot/br8_ffmpeg3_kodi17_github/output/host/usr/i586-buildroot-linux-uclibc/sysroot/usr/lib32/libiconv.so.2: error adding symbols: DSO missing from command line + +Backported to Krypton from master branch commit: +https://github.com/xbmc/xbmc/commit/9a64537543e8dc8609ca8a98181ba17f30c53493 + +Signed-off-by: Bernd Kuhls +--- + project/cmake/CMakeLists.txt | 2 +- + project/cmake/modules/FindIconv.cmake | 44 +++++++++++++++++++++++++++++++++++ + 2 files changed, 45 insertions(+), 1 deletion(-) + create mode 100644 project/cmake/modules/FindIconv.cmake + +diff --git a/project/cmake/CMakeLists.txt b/project/cmake/CMakeLists.txt +index aeb1ff47c2..07c1d1a8d3 100644 +--- a/project/cmake/CMakeLists.txt ++++ b/project/cmake/CMakeLists.txt +@@ -103,7 +103,7 @@ list(APPEND DEPLIBS ${CMAKE_THREAD_LIBS_INIT}) + + # Required dependencies + set(required_deps Sqlite3 FreeType PCRE Cpluff LibDvd +- TinyXML Python Yajl Cdio ++ TinyXML Python Yajl Cdio Iconv + Lzo2 Fribidi TagLib FFMPEG CrossGUID) + if(NOT WIN32) + list(APPEND required_deps ZLIB) +diff --git a/project/cmake/modules/FindIconv.cmake b/project/cmake/modules/FindIconv.cmake +new file mode 100644 +index 0000000000..8ee01fb6b8 +--- /dev/null ++++ b/project/cmake/modules/FindIconv.cmake +@@ -0,0 +1,44 @@ ++#.rst: ++# FindICONV ++# -------- ++# Finds the ICONV library ++# ++# This will will define the following variables:: ++# ++# ICONV_FOUND - system has ICONV ++# ICONV_INCLUDE_DIRS - the ICONV include directory ++# ICONV_LIBRARIES - the ICONV libraries ++# ++# and the following imported targets:: ++# ++# ICONV::ICONV - The ICONV library ++ ++find_path(ICONV_INCLUDE_DIR NAMES iconv.h) ++ ++find_library(ICONV_LIBRARY NAMES iconv libiconv c) ++ ++set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY}) ++check_function_exists(iconv HAVE_ICONV_FUNCTION) ++if(NOT HAVE_ICONV_FUNCTION) ++ check_function_exists(libiconv HAVE_LIBICONV_FUNCTION2) ++ set(HAVE_ICONV_FUNCTION ${HAVE_LIBICONV_FUNCTION2}) ++ unset(HAVE_LIBICONV_FUNCTION2) ++endif() ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(Iconv ++ REQUIRED_VARS ICONV_LIBRARY ICONV_INCLUDE_DIR HAVE_ICONV_FUNCTION) ++ ++if(ICONV_FOUND) ++ set(ICONV_LIBRARIES ${ICONV_LIBRARY}) ++ set(ICONV_INCLUDE_DIRS ${ICONV_INCLUDE_DIR}) ++ ++ if(NOT TARGET ICONV::ICONV) ++ add_library(ICONV::ICONV UNKNOWN IMPORTED) ++ set_target_properties(ICONV::ICONV PROPERTIES ++ IMPORTED_LOCATION "${ICONV_LIBRARY}" ++ INTERFACE_INCLUDE_DIRECTORIES "${ICONV_INCLUDE_DIR}") ++ endif() ++endif() ++ ++mark_as_advanced(ICONV_INCLUDE_DIR ICONV_LIBRARY HAVE_ICONV_FUNCTION) +-- +2.11.0 + diff --git a/buildroot/package/kodi/Config.in b/buildroot/package/kodi/Config.in new file mode 100644 index 0000000..071c03d --- /dev/null +++ b/buildroot/package/kodi/Config.in @@ -0,0 +1,354 @@ +config BR2_PACKAGE_KODI_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + # i386: needs sse (see upstream PR 10351) + depends on !(BR2_i386 && !BR2_X86_CPU_HAS_SSE) + depends on BR2_USE_MMU # libcdio, and others + +comment "kodi needs python w/ .py modules, a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.8, host gcc >= 4.6" + depends on BR2_PACKAGE_KODI_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !BR2_HOST_GCC_AT_LEAST_4_6 \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + || BR2_TOOLCHAIN_USES_MUSL \ + || !BR2_PACKAGE_PYTHON \ + || BR2_PACKAGE_PYTHON_PYC_ONLY + +config BR2_PACKAGE_KODI_EGL_GLES + bool + default y + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGLES + depends on !BR2_PACKAGE_KODI_GL_EGL # prefer GL if available + +config BR2_PACKAGE_KODI_GL_EGL + bool + default y + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGL + +comment "kodi needs an OpenGL EGL with either an openGL or an OpenGL ES backend" + depends on !BR2_PACKAGE_KODI_GL_EGL && !BR2_PACKAGE_KODI_EGL_GLES + +menuconfig BR2_PACKAGE_KODI + bool "kodi" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_HOST_GCC_AT_LEAST_4_6 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_PACKAGE_KODI_EGL_GLES || BR2_PACKAGE_KODI_GL_EGL + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS # python and others + depends on BR2_PACKAGE_KODI_ARCH_SUPPORTS + depends on BR2_PACKAGE_PYTHON + depends on !BR2_PACKAGE_PYTHON_PYC_ONLY + select BR2_NEEDS_HOST_JAVA + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_GPL + select BR2_PACKAGE_FFMPEG_POSTPROC # postproc depends on GPL + select BR2_PACKAGE_FFMPEG_SWSCALE + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBASS + select BR2_PACKAGE_LIBCDIO + select BR2_PACKAGE_LIBCROSSGUID + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBFRIBIDI + select BR2_PACKAGE_LIBGLU if BR2_PACKAGE_KODI_GL_EGL + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBPLIST + select BR2_PACKAGE_LIBSAMPLERATE + select BR2_PACKAGE_LZO + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_PCRE_UCP + select BR2_PACKAGE_PYTHON_BSDDB + select BR2_PACKAGE_PYTHON_BZIP2 + select BR2_PACKAGE_PYTHON_CURSES + select BR2_PACKAGE_PYTHON_PYEXPAT + select BR2_PACKAGE_PYTHON_READLINE + select BR2_PACKAGE_PYTHON_SQLITE + select BR2_PACKAGE_PYTHON_SSL + select BR2_PACKAGE_PYTHON_UNICODEDATA + select BR2_PACKAGE_PYTHON_ZLIB + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_TAGLIB + select BR2_PACKAGE_TINYXML + select BR2_PACKAGE_LIBDRM if BR2_PACKAGE_KODI_GL_EGL + select BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_KODI_GL_EGL + select BR2_PACKAGE_YAJL + select BR2_PACKAGE_ZLIB + select BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY if BR2_TOOLCHAIN_USES_GLIBC # runtime UTF conversion support + help + Kodi is an award-winning free and open source (GPL) software + media player and entertainment hub for digital media. + + http://kodi.tv + +if BR2_PACKAGE_KODI + +source "package/kodi-platform/Config.in" + +config BR2_PACKAGE_KODI_ALSA_LIB + bool "alsa" + select BR2_PACKAGE_ALSA_LIB + help + Enable alsa support. + +config BR2_PACKAGE_KODI_AVAHI + bool "avahi" + select BR2_PACKAGE_AVAHI + select BR2_PACKAGE_AVAHI_DAEMON + help + Enable Avahi support. + Select this if you want Kodi to support Bonjour protocol. + +config BR2_PACKAGE_KODI_BLUEZ + bool "bluetooth" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5_utils + depends on !BR2_PACKAGE_BLUEZ_UTILS # bluez5_utils + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5_utils + select BR2_PACKAGE_BLUEZ5_UTILS + help + Enable bluetooth support + +config BR2_PACKAGE_KODI_DBUS + bool "dbus" + select BR2_PACKAGE_DBUS + help + Enable D-Bus support + +config BR2_PACKAGE_KODI_EVENTCLIENTS + bool "eventclients" + help + Enable event clients support + + https://github.com/xbmc/xbmc/blob/master/tools/EventClients/README.txt + +config BR2_PACKAGE_KODI_LIBBLURAY + bool "blu-ray" + select BR2_PACKAGE_LIBBLURAY + help + Enable Blu-ray input support. + Select this if you want to play back Blu-ray content. + +config BR2_PACKAGE_KODI_LIBCEC + bool "hdmi cec" + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_LIBCEC + help + Enable CEC (Consumer Electronics Control) support. + Select this if you want Kodi to support HDMI CEC. + +comment "hdmi cec support needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV + +config BR2_PACKAGE_KODI_LCMS2 + bool "lcms2" + select BR2_PACKAGE_LCMS2 + help + Enable color management support. + +config BR2_PACKAGE_KODI_LIRC + bool "lirc" + help + Enable lirc support + +config BR2_PACKAGE_KODI_LIBMICROHTTPD + bool "web server" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt, libmicrohttpd + select BR2_PACKAGE_LIBMICROHTTPD + help + Enable webserver feature + +config BR2_PACKAGE_KODI_LIBNFS + bool "nfs" + # libnfs -> libtirpc + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBNFS + help + Enable NFS server support. + +comment "nfs support needs a toolchain w/ threads support" + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) + +config BR2_PACKAGE_KODI_MYSQL + bool "mysql" + select BR2_PACKAGE_MYSQL + help + Enable MySQL support + +config BR2_PACKAGE_KODI_NONFREE + bool "nonfree components" + help + Enable components with non-free licenses. This option + currently only controls support for RAR archives. + +config BR2_PACKAGE_KODI_PULSEAUDIO + bool "pulseaudio" + # Pulseaudio support in kodi needs glib support in Pulseaudio, + # see FindPulseAudio.cmake. Kodi meets all dependencies of + # libglib2, so there is no need to propagate them here. + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PULSEAUDIO + help + Enable Pulseaudio support. + +config BR2_PACKAGE_KODI_LIBSHAIRPLAY + bool "shairport" + select BR2_PACKAGE_LIBSHAIRPLAY + help + Enable Shairport support. + Select this if you want to stream content from an Apple + device. + +config BR2_PACKAGE_KODI_LIBSMBCLIENT + bool "samba" + depends on BR2_PACKAGE_SAMBA4 + help + Enable Samba support + +config BR2_PACKAGE_KODI_LIBSSH + bool "ssh" + select BR2_PACKAGE_LIBSSH + help + Enable sftp virtual filesystem using libssh. + +config BR2_PACKAGE_KODI_LIBTHEORA + bool "theora" + select BR2_PACKAGE_LIBTHEORA + help + Enable Theora input support. + Select this if you want to play back OGG/OGV files (Video). + +config BR2_PACKAGE_KODI_LIBUSB + bool "usb" + # https://github.com/xbmc/xbmc/blob/Jarvis/configure.ac#L1554 + # "if libudev is available, we don't need libusb" + depends on !BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Enable libusb support. + +config BR2_PACKAGE_KODI_LIBVA + bool "va" + depends on BR2_PACKAGE_KODI_GL_EGL + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBVA + help + Enable libva support. + +comment "libva support needs X.org with an openGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_KODI_GL_EGL + +config BR2_PACKAGE_KODI_LIBVDPAU + bool "vdpau" + depends on BR2_PACKAGE_KODI_GL_EGL + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBVDPAU + help + Enable libvdpau support. + +comment "libvdpau support needs X.org with an openGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_KODI_GL_EGL + +config BR2_PACKAGE_KODI_UPNP + bool "upnp" + help + Enable UPnP support + +config BR2_PACKAGE_KODI_OPTICALDRIVE + bool "optical drives" + help + Add support for optical drives, to read e.g. DVDs... + +menu "Audio decoder addons" + source "package/kodi-audiodecoder-modplug/Config.in" + source "package/kodi-audiodecoder-nosefart/Config.in" + source "package/kodi-audiodecoder-opus/Config.in" + source "package/kodi-audiodecoder-sidplay/Config.in" + source "package/kodi-audiodecoder-snesapu/Config.in" + source "package/kodi-audiodecoder-stsound/Config.in" + source "package/kodi-audiodecoder-timidity/Config.in" + source "package/kodi-audiodecoder-vgmstream/Config.in" +endmenu + +menu "Audio DSP addons" + source "package/kodi-adsp-basic/Config.in" + source "package/kodi-adsp-freesurround/Config.in" +endmenu + +menu "Audio encoder addons" + source "package/kodi-audioencoder-flac/Config.in" + source "package/kodi-audioencoder-lame/Config.in" + source "package/kodi-audioencoder-vorbis/Config.in" + source "package/kodi-audioencoder-wav/Config.in" +endmenu + +menu "Peripheral addons" + source "package/kodi-peripheral-joystick/Config.in" + source "package/kodi-peripheral-steamcontroller/Config.in" + source "package/kodi-peripheral-xarcade/Config.in" +endmenu + +menu "Inputstream addons" + source "package/kodi-inputstream-adaptive/Config.in" + source "package/kodi-inputstream-rtmp/Config.in" +endmenu + +menu "PVR addons" + source "package/kodi-pvr-argustv/Config.in" + source "package/kodi-pvr-dvblink/Config.in" + source "package/kodi-pvr-dvbviewer/Config.in" + source "package/kodi-pvr-filmon/Config.in" + source "package/kodi-pvr-hdhomerun/Config.in" + source "package/kodi-pvr-hts/Config.in" + source "package/kodi-pvr-iptvsimple/Config.in" + source "package/kodi-pvr-mediaportal-tvserver/Config.in" + source "package/kodi-pvr-mythtv/Config.in" + source "package/kodi-pvr-nextpvr/Config.in" + source "package/kodi-pvr-njoy/Config.in" + source "package/kodi-pvr-pctv/Config.in" + source "package/kodi-pvr-stalker/Config.in" + source "package/kodi-pvr-vbox/Config.in" + source "package/kodi-pvr-vdr-vnsi/Config.in" + source "package/kodi-pvr-vuplus/Config.in" + source "package/kodi-pvr-wmc/Config.in" +endmenu + +menu "Screensavers" + source "package/kodi-screensaver-asteroids/Config.in" + source "package/kodi-screensaver-asterwave/Config.in" + source "package/kodi-screensaver-biogenesis/Config.in" + source "package/kodi-screensaver-cpblobs/Config.in" + source "package/kodi-screensaver-crystalmorph/Config.in" + source "package/kodi-screensaver-greynetic/Config.in" + source "package/kodi-screensaver-matrixtrails/Config.in" + source "package/kodi-screensaver-pingpong/Config.in" + source "package/kodi-screensaver-planestate/Config.in" + source "package/kodi-screensaver-pyro/Config.in" + source "package/kodi-screensaver-rsxs/Config.in" + source "package/kodi-screensaver-stars/Config.in" +endmenu + +menu "Skins" + source "package/kodi-skin-confluence/Config.in" +endmenu + +menu "Visualisations" + source "package/kodi-visualisation-fishbmc/Config.in" + source "package/kodi-visualisation-goom/Config.in" + source "package/kodi-visualisation-shadertoy/Config.in" + source "package/kodi-visualisation-spectrum/Config.in" + source "package/kodi-visualisation-waveforhue/Config.in" + source "package/kodi-visualisation-waveform/Config.in" +endmenu + +endif # BR2_PACKAGE_KODI diff --git a/buildroot/package/kodi/S50kodi b/buildroot/package/kodi/S50kodi new file mode 100755 index 0000000..0afe7a6 --- /dev/null +++ b/buildroot/package/kodi/S50kodi @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Starts Kodi +# + +BIN=/usr/bin/br-kodi +KODI=/usr/lib/kodi/kodi.bin +KODI_ARGS="--standalone -fs -n" +PIDFILE=/var/run/kodi.pid + +start() { + printf "Starting Kodi: " + start-stop-daemon -S -q -b -m -p $PIDFILE --exec $BIN -- $KODI $KODI_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping Kodi: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/kodi/br-kodi b/buildroot/package/kodi/br-kodi new file mode 100755 index 0000000..83d4d4e --- /dev/null +++ b/buildroot/package/kodi/br-kodi @@ -0,0 +1,36 @@ +#!/bin/sh + +# We're called with the real Kodi executable as +# first argument, followed by any Kodi extra args +KODI="${1}" +shift + +# In case someone asked we terminate, just kill +# the Kodi process +trap_kill() { + LOOP=0 + killall "${KODI##*/}" +} +trap trap_kill INT QUIT TERM + +LOOP=1 +while [ ${LOOP} -eq 1 ]; do + # Hack: BusyBox ash does not catch signals while a non-builtin + # is running, and only catches the signal when the non-builtin + # command ends. So, we just background the Kodi binary, and wait + # for it. But BusyBox' ash's wait builtin does not return the + # exit code even if there was only one job (which is correct + # for POSIX). So we explicitly wait for the Kodi job + "${KODI}" "${@}" & + wait %1 + ret=$? + case "${ret}" in + 0) ;; + 64) poweroff; LOOP=0;; + 66) reboot; LOOP=0;; + *) # Crash + sleep 1 + ;; + esac +done +exit ${ret} diff --git a/buildroot/package/kodi/kodi.hash b/buildroot/package/kodi/kodi.hash new file mode 100644 index 0000000..23a11ca --- /dev/null +++ b/buildroot/package/kodi/kodi.hash @@ -0,0 +1,8 @@ +# Locally computed +sha256 c8312fe92e5bab1cdac1da93d60baed88fa1574146c50c44e3c86d01671c2b1d kodi-17.6-Krypton.tar.gz +# Locally computed - libdvdcss +sha256 b6eb2d929ff56cb051152c32010afc5e7cf5fe8c5ae32dca412a2b46b6b57e34 2f12236.tar.gz +# Locally computed - libdvdnav +sha256 312b3d15bc448d24e92f4b2e7248409525eccc4e75776026d805478e51c5ef3d 981488f.tar.gz +# Locally computed - libdvdread +sha256 e7179b2054163652596a56301c9f025515cb08c6d6310b42b897c3ad11c0199b 17d99db.tar.gz diff --git a/buildroot/package/kodi/kodi.mk b/buildroot/package/kodi/kodi.mk new file mode 100644 index 0000000..9d3b65a --- /dev/null +++ b/buildroot/package/kodi/kodi.mk @@ -0,0 +1,419 @@ +################################################################################ +# +# kodi +# +################################################################################ + +# When updating the version, please also update kodi-jsonschemabuilder +# and kodi-texturepacker +KODI_VERSION = 17.6-Krypton +KODI_SITE = $(call github,xbmc,xbmc,$(KODI_VERSION)) +KODI_LICENSE = GPL-2.0 +KODI_LICENSE_FILES = LICENSE.GPL +# needed for binary addons +KODI_INSTALL_STAGING = YES +KODI_DEPENDENCIES = \ + bzip2 \ + expat \ + ffmpeg \ + fontconfig \ + freetype \ + host-gawk \ + host-gperf \ + host-kodi-jsonschemabuilder \ + host-kodi-texturepacker \ + host-nasm \ + host-swig \ + host-xmlstarlet \ + host-zip \ + libass \ + libcdio \ + libcrossguid \ + libcurl \ + libfribidi \ + libplist \ + libsamplerate \ + lzo \ + ncurses \ + openssl \ + pcre \ + python \ + readline \ + sqlite \ + taglib \ + tinyxml \ + yajl \ + zlib + +KODI_SUBDIR = project/cmake + +KODI_LIBDVDCSS_VERSION = 2f12236 +KODI_LIBDVDNAV_VERSION = 981488f +KODI_LIBDVDREAD_VERSION = 17d99db + +KODI_EXTRA_DOWNLOADS = \ + https://github.com/xbmc/libdvdcss/archive/$(KODI_LIBDVDCSS_VERSION).tar.gz \ + https://github.com/xbmc/libdvdnav/archive/$(KODI_LIBDVDNAV_VERSION).tar.gz \ + https://github.com/xbmc/libdvdread/archive/$(KODI_LIBDVDREAD_VERSION).tar.gz + +KODI_CONF_OPTS += \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) $(KODI_C_FLAGS)" \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) $(KODI_CXX_FLAGS)" \ + -DENABLE_CCACHE=OFF \ + -DENABLE_DVDCSS=ON \ + -DENABLE_INTERNAL_CROSSGUID=OFF \ + -DENABLE_INTERNAL_FFMPEG=OFF \ + -DKODI_DEPENDSBUILD=OFF \ + -DENABLE_OPENSSL=ON \ + -DNATIVEPREFIX=$(HOST_DIR) \ + -DDEPENDS_PATH=$(@D) \ + -DWITH_FFMPEG=$(STAGING_DIR)/usr \ + -DWITH_TEXTUREPACKER=$(HOST_DIR)/bin/TexturePacker \ + -DLIBDVDCSS_URL=$(DL_DIR)/$(KODI_LIBDVDCSS_VERSION).tar.gz \ + -DLIBDVDNAV_URL=$(DL_DIR)/$(KODI_LIBDVDNAV_VERSION).tar.gz \ + -DLIBDVDREAD_URL=$(DL_DIR)/$(KODI_LIBDVDREAD_VERSION).tar.gz \ + -DENABLE_IMX=OFF + +ifeq ($(BR2_ENABLE_LOCALE),) +KODI_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +KODI_CONF_OPTS += -DCORE_SYSTEM_NAME=rbpi +KODI_DEPENDENCIES += rpi-userland +# These CPU-specific options are only used on rbpi: +# https://github.com/xbmc/xbmc/blob/Krypton/project/cmake/scripts/rbpi/ArchSetup.cmake#L13 +ifeq ($(BR2_arm1176jzf_s)$(BR2_cortex_a7)$(BR2_cortex_a53),y) +KODI_CONF_OPTS += -DWITH_CPU=$(BR2_GCC_TARGET_CPU) +endif +else +ifeq ($(BR2_arceb)$(BR2_arcle),y) +KODI_CONF_OPTS += -DWITH_ARCH=arc -DWITH_CPU=arc +else ifeq ($(BR2_armeb),y) +KODI_CONF_OPTS += -DWITH_ARCH=arm -DWITH_CPU=arm +else ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) +KODI_CONF_OPTS += \ + -DWITH_ARCH=mips$(if $(BR2_ARCH_IS_64),64) \ + -DWITH_CPU=mips$(if $(BR2_ARCH_IS_64),64) +else ifeq ($(BR2_powerpc)$(BR2_powerpc64le),y) +KODI_CONF_OPTS += \ + -DWITH_ARCH=powerpc$(if $(BR2_ARCH_IS_64),64) \ + -DWITH_CPU=powerpc$(if $(BR2_ARCH_IS_64),64) +else ifeq ($(BR2_powerpc64)$(BR2_sparc64)$(BR2_sh4)$(BR2_xtensa),y) +KODI_CONF_OPTS += -DWITH_ARCH=$(BR2_ARCH) -DWITH_CPU=$(BR2_ARCH) +else +# Kodi auto-detects ARCH, tested: arm, aarch64, i386, x86_64 +# see project/cmake/scripts/linux/ArchSetup.cmake +KODI_CONF_OPTS += -DWITH_CPU=$(BR2_ARCH) +endif +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +KODI_CONF_OPTS += -D_SSE_OK=ON -D_SSE_TRUE=ON +else +KODI_CONF_OPTS += -D_SSE_OK=OFF -D_SSE_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +KODI_CONF_OPTS += -D_SSE2_OK=ON -D_SSE2_TRUE=ON +else +KODI_CONF_OPTS += -D_SSE2_OK=OFF -D_SSE2_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE3),y) +KODI_CONF_OPTS += -D_SSE3_OK=ON -D_SSE3_TRUE=ON +else +KODI_CONF_OPTS += -D_SSE3_OK=OFF -D_SSE3_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSSE3),y) +KODI_CONF_OPTS += -D_SSSE3_OK=ON -D_SSSE3_TRUE=ON +else +KODI_CONF_OPTS += -D_SSSE3_OK=OFF -D_SSSE3_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE4),y) +KODI_CONF_OPTS += -D_SSE41_OK=ON -D_SSE41_TRUE=ON +else +KODI_CONF_OPTS += -D_SSE41_OK=OFF -D_SSE41_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE42),y) +KODI_CONF_OPTS += -D_SSE42_OK=ON -D_SSE42_TRUE=ON +else +KODI_CONF_OPTS += -D_SSE42_OK=OFF -D_SSE42_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_AVX),y) +KODI_CONF_OPTS += -D_AVX_OK=ON -D_AVX_TRUE=ON +else +KODI_CONF_OPTS += -D_AVX_OK=OFF -D_AVX_TRUE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_AVX2),y) +KODI_CONF_OPTS += -D_AVX2_OK=ON -D_AVX2_TRUE=ON +else +KODI_CONF_OPTS += -D_AVX2_OK=OFF -D_AVX2_TRUE=OFF +endif + +# mips: uses __atomic_load_8 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +KODI_CXX_FLAGS += -latomic +endif + +ifeq ($(BR2_PACKAGE_KODI_MYSQL),y) +KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=ON +KODI_DEPENDENCIES += mysql +else +KODI_CONF_OPTS += -DENABLE_MYSQLCLIENT=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_NONFREE),y) +KODI_CONF_OPTS += -DENABLE_NONFREE=ON +KODI_LICENSE := $(KODI_LICENSE), unrar +KODI_LICENSE_FILES += lib/UnrarXLib/license.txt +else +KODI_CONF_OPTS += -DENABLE_NONFREE=OFF +endif + +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +KODI_CONF_OPTS += -DCORE_SYSTEM_NAME=rbpi +KODI_DEPENDENCIES += rpi-userland +else +# Kodi considers "rpbi" and "linux" as two separate platforms. The +# below options, defined in +# project/cmake/scripts/linux/ArchSetup.cmake are only valid for the +# "linux" platforms. The "rpbi" platform has a different set of +# options, defined in project/cmake/scripts/rbpi/ +KODI_CONF_OPTS += -DENABLE_LDGOLD=OFF +ifeq ($(BR2_PACKAGE_LIBAMCODEC),y) +KODI_CONF_OPTS += -DENABLE_AML=ON +KODI_DEPENDENCIES += libamcodec +else +KODI_CONF_OPTS += -DENABLE_AML=OFF +endif +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +KODI_CONF_OPTS += -DENABLE_UDEV=ON +KODI_DEPENDENCIES += udev +else +KODI_CONF_OPTS += -DENABLE_UDEV=OFF +ifeq ($(BR2_PACKAGE_KODI_LIBUSB),y) +KODI_CONF_OPTS += -DENABLE_LIBUSB=ON +KODI_DEPENDENCIES += libusb-compat +endif +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +KODI_CONF_OPTS += -DENABLE_CAP=ON +KODI_DEPENDENCIES += libcap +else +KODI_CONF_OPTS += -DENABLE_CAP=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBXML2)$(BR2_PACKAGE_LIBXSLT),yy) +KODI_CONF_OPTS += -DENABLE_XSLT=ON +KODI_DEPENDENCIES += libxml2 libxslt +else +KODI_CONF_OPTS += -DENABLE_XSLT=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_BLUEZ),y) +KODI_CONF_OPTS += -DENABLE_BLUETOOTH=ON +KODI_DEPENDENCIES += bluez5_utils +else +KODI_CONF_OPTS += -DENABLE_BLUETOOTH=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_DBUS),y) +KODI_DEPENDENCIES += dbus +KODI_CONF_OPTS += -DENABLE_DBUS=ON +else +KODI_CONF_OPTS += -DENABLE_DBUS=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_EVENTCLIENTS),y) +KODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=ON +else +KODI_CONF_OPTS += -DENABLE_EVENTCLIENTS=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_ALSA_LIB),y) +KODI_CONF_OPTS += -DENABLE_ALSA=ON +KODI_DEPENDENCIES += alsa-lib +else +KODI_CONF_OPTS += -DENABLE_ALSA=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_GL_EGL),y) +KODI_DEPENDENCIES += libegl libglu libgl xlib_libX11 xlib_libXext \ + xlib_libXrandr libdrm +KODI_CONF_OPTS += -DENABLE_OPENGL=ON -DENABLE_X11=ON -DENABLE_OPENGLES=OFF +else +KODI_CONF_OPTS += -DENABLE_OPENGL=OFF -DENABLE_X11=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_EGL_GLES),y) +KODI_DEPENDENCIES += libegl libgles +KODI_CONF_OPTS += \ + -DENABLE_OPENGLES=ON +KODI_C_FLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl` +KODI_CXX_FLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl` +else +KODI_CONF_OPTS += -DENABLE_OPENGLES=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBMICROHTTPD),y) +KODI_CONF_OPTS += -DENABLE_MICROHTTPD=ON +KODI_DEPENDENCIES += libmicrohttpd +else +KODI_CONF_OPTS += -DENABLE_MICROHTTPD=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBSMBCLIENT),y) +KODI_DEPENDENCIES += samba4 +KODI_CONF_OPTS += -DENABLE_SMBCLIENT=ON +else +KODI_CONF_OPTS += -DENABLE_SMBCLIENT=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBNFS),y) +KODI_DEPENDENCIES += libnfs +KODI_CONF_OPTS += -DENABLE_NFS=ON +else +KODI_CONF_OPTS += -DENABLE_NFS=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBBLURAY),y) +KODI_DEPENDENCIES += libbluray +KODI_CONF_OPTS += -DENABLE_BLURAY=ON +else +KODI_CONF_OPTS += -DENABLE_BLURAY=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBSHAIRPLAY),y) +KODI_DEPENDENCIES += libshairplay +KODI_CONF_OPTS += -DENABLE_AIRTUNES=ON +else +KODI_CONF_OPTS += -DENABLE_AIRTUNES=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBSSH),y) +KODI_DEPENDENCIES += libssh +KODI_CONF_OPTS += -DENABLE_SSH=ON +else +KODI_CONF_OPTS += -DENABLE_SSH=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_AVAHI),y) +KODI_DEPENDENCIES += avahi +KODI_CONF_OPTS += -DENABLE_AVAHI=ON +else +KODI_CONF_OPTS += -DENABLE_AVAHI=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBCEC),y) +KODI_DEPENDENCIES += libcec +KODI_CONF_OPTS += -DENABLE_CEC=ON +else +KODI_CONF_OPTS += -DENABLE_CEC=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LCMS2),y) +KODI_DEPENDENCIES += lcms2 +KODI_CONF_OPTS += -DENABLE_LCMS2=ON +else +KODI_CONF_OPTS += -DENABLE_LCMS2=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIRC),y) +KODI_CONF_OPTS += -DENABLE_LIRC=ON +else +KODI_CONF_OPTS += -DENABLE_LIRC=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBTHEORA),y) +KODI_DEPENDENCIES += libtheora +endif + +# kodi needs libva & libva-glx +ifeq ($(BR2_PACKAGE_KODI_LIBVA)$(BR2_PACKAGE_MESA3D_DRI_DRIVER),yy) +KODI_DEPENDENCIES += mesa3d libva +KODI_CONF_OPTS += -DENABLE_VAAPI=ON +else +KODI_CONF_OPTS += -DENABLE_VAAPI=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_LIBVDPAU),y) +KODI_DEPENDENCIES += libvdpau +KODI_CONF_OPTS += -DENABLE_VDPAU=ON +else +KODI_CONF_OPTS += -DENABLE_VDPAU=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_UPNP),y) +KODI_CONF_OPTS += -DENABLE_UPNP=ON +else +KODI_CONF_OPTS += -DENABLE_UPNP=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_OPTICALDRIVE),y) +KODI_CONF_OPTS += -DENABLE_OPTICAL=ON +else +KODI_CONF_OPTS += -DENABLE_OPTICAL=OFF +endif + +ifeq ($(BR2_PACKAGE_KODI_PULSEAUDIO),y) +KODI_CONF_OPTS += -DENABLE_PULSEAUDIO=ON +KODI_DEPENDENCIES += pulseaudio +else +KODI_CONF_OPTS += -DENABLE_PULSEAUDIO=OFF +endif + +# Remove versioncheck addon, updating Kodi is done by building a new +# buildroot image. +KODI_ADDON_MANIFEST = $(TARGET_DIR)/usr/share/kodi/system/addon-manifest.xml +define KODI_CLEAN_UNUSED_ADDONS + rm -Rf $(TARGET_DIR)/usr/share/kodi/addons/service.xbmc.versioncheck + $(HOST_DIR)/bin/xml ed -L \ + -d "/addons/addon[text()='service.xbmc.versioncheck']" \ + $(KODI_ADDON_MANIFEST) +endef +KODI_POST_INSTALL_TARGET_HOOKS += KODI_CLEAN_UNUSED_ADDONS + +define KODI_INSTALL_BR_WRAPPER + $(INSTALL) -D -m 0755 package/kodi/br-kodi \ + $(TARGET_DIR)/usr/bin/br-kodi +endef +KODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_BR_WRAPPER + +# When run from a startup script, Kodi has no $HOME where to store its +# configuration, so ends up storing it in /.kodi (yes, at the root of +# the rootfs). This is a problem for read-only filesystems. But we can't +# easily change that, so create /.kodi as a symlink where we want the +# config to eventually be. Add synlinks for the legacy XBMC name as well +define KODI_INSTALL_CONFIG_DIR + $(INSTALL) -d -m 0755 $(TARGET_DIR)/var/kodi + ln -sf /var/kodi $(TARGET_DIR)/.kodi + ln -sf /var/kodi $(TARGET_DIR)/var/xbmc + ln -sf /var/kodi $(TARGET_DIR)/.xbmc +endef +KODI_POST_INSTALL_TARGET_HOOKS += KODI_INSTALL_CONFIG_DIR + +define KODI_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/kodi/S50kodi \ + $(TARGET_DIR)/etc/init.d/S50kodi +endef + +define KODI_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/kodi/kodi.service \ + $(TARGET_DIR)/usr/lib/systemd/system/kodi.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/kodi.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/kodi.service +endef + +$(eval $(cmake-package)) diff --git a/buildroot/package/kodi/kodi.service b/buildroot/package/kodi/kodi.service new file mode 100644 index 0000000..f30741c --- /dev/null +++ b/buildroot/package/kodi/kodi.service @@ -0,0 +1,12 @@ +[Unit] +Description = Kodi Entertainment Center +After = network.target + +[Service] +Type = simple +ExecStart = /usr/lib/kodi/kodi.bin --standalone -fs -n +Restart = on-failure + +[Install] +WantedBy = multi-user.target + diff --git a/buildroot/package/kompexsqlite/0001-Makefile-use-autoconf-CXX-for-proper-builds.patch b/buildroot/package/kompexsqlite/0001-Makefile-use-autoconf-CXX-for-proper-builds.patch new file mode 100644 index 0000000..408c100 --- /dev/null +++ b/buildroot/package/kompexsqlite/0001-Makefile-use-autoconf-CXX-for-proper-builds.patch @@ -0,0 +1,27 @@ +From 769693d9ddf63b04dd4aad6cad080f3cee3f997e Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Thu, 11 Jun 2015 14:08:38 -0300 +Subject: [PATCH] Makefile: use autoconf CXX for proper builds + +Status: applied upstream. + +Signed-off-by: Gustavo Zacarias +--- + Makefile.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Makefile.in b/Makefile.in +index 91fb8b2..fe862cd 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -23,6 +23,7 @@ mandir = $(prefix)/share/man/man3 + headerdir = $(prefix)/include/kompex + + CC = @CC@ ++CXX = @CXX@ + CFLAGS = @CFLAGS@ + CPPFLAGS = $(CFLAGS) @CPPFLAGS@ + LDFLAGS = @LDFLAGS@ +-- +2.3.6 + diff --git a/buildroot/package/kompexsqlite/0002-append-to-cflags-and-cxxflags.patch b/buildroot/package/kompexsqlite/0002-append-to-cflags-and-cxxflags.patch new file mode 100644 index 0000000..abd0dc0 --- /dev/null +++ b/buildroot/package/kompexsqlite/0002-append-to-cflags-and-cxxflags.patch @@ -0,0 +1,49 @@ +From 3eb064ffa9b43fb5f245b8abda48a1c152a6f2d7 Mon Sep 17 00:00:00 2001 +From: me +Date: Thu, 20 Nov 2014 14:37:34 -0700 +Subject: [PATCH] Append to CFLAGS and CXXFLAGS as setup by ./configure. This + can allow users to Customize the SQLite build process with compile time + #defines rather than altering the sources. + +Signed-off-by: Max Filippov +--- +Backported from: 3eb064ffa9b43fb5f245b8abda48a1c152a6f2d7 + + Makefile-shared.mk | 4 ++-- + Makefile-static.mk | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile-shared.mk b/Makefile-shared.mk +index b2a4920..d15ce3c 100644 +--- a/Makefile-shared.mk ++++ b/Makefile-shared.mk +@@ -12,10 +12,10 @@ OBJS= \ + ${objsdir}/sqlite3.o + + # C Compiler Flags +-CFLAGS= -fPIC -MMD -MP ++CFLAGS+= -fPIC -MMD -MP + + # CC Compiler Flags +-CPPFLAGS= -DKOMPEX_SQLITEWRAPPER_EXPORT -DKOMPEX_SQLITEWRAPPER_DYN -fPIC -MMD -MP -I${includedir} ++CPPFLAGS+= -DKOMPEX_SQLITEWRAPPER_EXPORT -DKOMPEX_SQLITEWRAPPER_DYN -fPIC -MMD -MP -I${includedir} + + # Link Libraries and Options + LDLIBSOPTIONS= -shared -fPIC +diff --git a/Makefile-static.mk b/Makefile-static.mk +index 429a4ff..0678681 100644 +--- a/Makefile-static.mk ++++ b/Makefile-static.mk +@@ -12,10 +12,10 @@ OBJS= \ + ${objsdir}/sqlite3.o + + # C Compiler Flags +-CFLAGS= -MMD -MP ++CFLAGS+= -MMD -MP + + # CC Compiler Flags +-CPPFLAGS= -I${includedir} -MMD -MP ++CPPFLAGS+= -I${includedir} -MMD -MP + + # Link Libraries and Options + LDLIBSOPTIONS= diff --git a/buildroot/package/kompexsqlite/Config.in b/buildroot/package/kompexsqlite/Config.in new file mode 100644 index 0000000..5b71842 --- /dev/null +++ b/buildroot/package/kompexsqlite/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_KOMPEXSQLITE + bool "kompexsqlite" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + help + The Kompex SQLite Wrapper is an open source C++ wrapper + library for SQLite. + + http://sqlitewrapper.kompex-online.com/index.php + +comment "kompexsqlite needs a toolchain w/ C++, wchar, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/kompexsqlite/kompexsqlite.hash b/buildroot/package/kompexsqlite/kompexsqlite.hash new file mode 100644 index 0000000..3c94adf --- /dev/null +++ b/buildroot/package/kompexsqlite/kompexsqlite.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 73bec94fe5dd3a24bd8668b3a131a84dbe39a992579eebab1236aa0e73b2c9cc v1.10.12-1.tar.gz diff --git a/buildroot/package/kompexsqlite/kompexsqlite.mk b/buildroot/package/kompexsqlite/kompexsqlite.mk new file mode 100644 index 0000000..51b80aa --- /dev/null +++ b/buildroot/package/kompexsqlite/kompexsqlite.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# kompexsqlite +# +################################################################################ + +KOMPEXSQLITE_VERSION = v1.10.12-1 +KOMPEXSQLITE_SOURCE = $(KOMPEXSQLITE_VERSION).tar.gz +KOMPEXSQLITE_SITE = https://github.com/Aethelflaed/kompex-sqlite-wrapper/archive +KOMPEXSQLITE_INSTALL_STAGING = YES +KOMPEXSQLITE_LICENSE = LGPL-3.0+ (wrapper), Public Domain (bundled sqlite) +KOMPEXSQLITE_LICENSE_FILES = LICENSE.txt + +$(eval $(autotools-package)) diff --git a/buildroot/package/ktap/Config.in b/buildroot/package/ktap/Config.in new file mode 100644 index 0000000..38293f6 --- /dev/null +++ b/buildroot/package/ktap/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_KTAP + bool "ktap" + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS + help + ktap is a script-based dynamic tracing tool for Linux + + It uses a scripting language and lets users trace the Linux + kernel dynamically. ktap is designed to give operational + insights with interoperability that allows users to tune, + troubleshoot and extend kernel and application. + It's similar to Linux Systemtap and Solaris Dtrace. + + ktap doesn't support kernels older than 3.1. + + To be able to resolve symbols in DSO and for sdt, you need to + enable elfutils. + + Your kernel must have CONFIG_EVENT_TRACING, + CONFIG_PERF_EVENTS, and CONFIG_DEBUG_FS enabled to compile. + + Buildroot automatically enables these in the kernel + configuration. + + http://www.ktap.org + +comment "ktap needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "ktap needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/ktap/ktap.hash b/buildroot/package/ktap/ktap.hash new file mode 100644 index 0000000..1eff712 --- /dev/null +++ b/buildroot/package/ktap/ktap.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 44a0808d57175cf9d15466f720e1e10d5ed1abc3497aedf9ddd6469545552345 ktap-23bc7a4a94bd9e4e1b8b7c06632e61c041d57b5f.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 LICENSE-GPL diff --git a/buildroot/package/ktap/ktap.mk b/buildroot/package/ktap/ktap.mk new file mode 100644 index 0000000..3b9134d --- /dev/null +++ b/buildroot/package/ktap/ktap.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# ktap +# +################################################################################ + +KTAP_VERSION = 23bc7a4a94bd9e4e1b8b7c06632e61c041d57b5f +KTAP_SITE = $(call github,ktap,ktap,$(KTAP_VERSION)) +KTAP_LICENSE = GPL-2.0 +KTAP_LICENSE_FILES = LICENSE-GPL + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +KTAP_DEPENDENCIES += elfutils +else +KTAP_FLAGS += NO_LIBELF=1 +endif + +define KTAP_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) $(KTAP_FLAGS) ktap +endef + +define KTAP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m755 $(@D)/ktap $(TARGET_DIR)/usr/bin/ktap +endef + +KTAP_MODULE_MAKE_OPTS = KVERSION=$(LINUX_VERSION_PROBED) + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/kvazaar/0001-Modify-and-use-FILL_ARRAY-macro-to-prevent-warning-o.patch b/buildroot/package/kvazaar/0001-Modify-and-use-FILL_ARRAY-macro-to-prevent-warning-o.patch new file mode 100644 index 0000000..633da8b --- /dev/null +++ b/buildroot/package/kvazaar/0001-Modify-and-use-FILL_ARRAY-macro-to-prevent-warning-o.patch @@ -0,0 +1,56 @@ +From 47a9f0de049e77e866ea5bdd4bc7c795ea6dd641 Mon Sep 17 00:00:00 2001 +From: Ari Lemmetti +Date: Tue, 11 Apr 2017 12:57:22 +0300 +Subject: [PATCH] Modify and use FILL_ARRAY macro to prevent warning on GCC 7 + +Following warning was given and is false positive + +error: 'memset' used with length equal to number of elements without multiplication by element size [-Werror=memset-elt-size] + +Signed-off-by: Baruch Siach +--- +Upstream commit 47a9f0de049e7. + + src/global.h | 6 +++++- + src/rdo.c | 8 ++++---- + 2 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/src/global.h b/src/global.h +index bedcd49c2e02..518167443f35 100644 +--- a/src/global.h ++++ b/src/global.h +@@ -219,7 +219,11 @@ typedef int16_t coeff_t; + // Fill a structure or a static array with val bytes. + #define FILL(var, val) memset(&(var), (val), sizeof(var)) + // Fill a number of elements in an array with val bytes. +-#define FILL_ARRAY(ar, val, size) memset((ar), (val), (size) * sizeof(*(ar))) ++#define FILL_ARRAY(ar, val, size) \ ++{\ ++ void *temp_ptr = (void*)(ar);\ ++ memset((temp_ptr), (val), (size) * sizeof(*(ar)));\ ++} + + #define FREE_POINTER(pointer) { free((void*)pointer); pointer = NULL; } + #define MOVE_POINTER(dst_pointer,src_pointer) { dst_pointer = src_pointer; src_pointer = NULL; } +diff --git a/src/rdo.c b/src/rdo.c +index 52305fd72fab..2579f2808441 100644 +--- a/src/rdo.c ++++ b/src/rdo.c +@@ -558,10 +558,10 @@ void kvz_rdoq(encoder_state_t * const state, coeff_t *coef, coeff_t *dest_coeff, + // Explicitly tell the only possible numbers of elements to be zeroed. + // Hope the compiler is able to utilize this information. + switch (cg_num) { +- case 1: memset(sig_coeffgroup_flag, 0, 1 * sizeof(sig_coeffgroup_flag[0])); break; +- case 4: memset(sig_coeffgroup_flag, 0, 4 * sizeof(sig_coeffgroup_flag[0])); break; +- case 16: memset(sig_coeffgroup_flag, 0, 16 * sizeof(sig_coeffgroup_flag[0])); break; +- case 64: memset(sig_coeffgroup_flag, 0, 64 * sizeof(sig_coeffgroup_flag[0])); break; ++ case 1: FILL_ARRAY(sig_coeffgroup_flag, 0, 1); break; ++ case 4: FILL_ARRAY(sig_coeffgroup_flag, 0, 4); break; ++ case 16: FILL_ARRAY(sig_coeffgroup_flag, 0, 16); break; ++ case 64: FILL_ARRAY(sig_coeffgroup_flag, 0, 64); break; + default: assert(0 && "There should be 1, 4, 16 or 64 coefficient groups"); + } + +-- +2.13.2 + diff --git a/buildroot/package/kvazaar/Config.in b/buildroot/package/kvazaar/Config.in new file mode 100644 index 0000000..558d161 --- /dev/null +++ b/buildroot/package/kvazaar/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_KVAZAAR + bool "kvazaar" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + # use deprecated altivec vec_lvsl() + depends on !BR2_powerpc && !BR2_powerpc64 && !BR2_powerpc64le + help + An open-source HEVC encoder licensed under LGPLv2.1 + + https://github.com/ultravideo/kvazaar + +comment "kvazaar needs a toolchain w/ C++, threads" + depends on !BR2_powerpc && !BR2_powerpc64 && !BR2_powerpc64le + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/kvazaar/kvazaar.hash b/buildroot/package/kvazaar/kvazaar.hash new file mode 100644 index 0000000..80f480b --- /dev/null +++ b/buildroot/package/kvazaar/kvazaar.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8e382738a51004bfcfca4c832e8b41fe6a17f889f3c39151dc1c1a37261a3a6d kvazaar-v1.1.0.tar.gz diff --git a/buildroot/package/kvazaar/kvazaar.mk b/buildroot/package/kvazaar/kvazaar.mk new file mode 100644 index 0000000..f9149a7 --- /dev/null +++ b/buildroot/package/kvazaar/kvazaar.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# kvazaar +# +################################################################################ + +KVAZAAR_VERSION = v1.1.0 +KVAZAAR_SITE = $(call github,ultravideo,kvazaar,$(KVAZAAR_VERSION)) +KVAZAAR_LICENSE = LGPL-2.1+ +KVAZAAR_LICENSE_FILES = COPYING +KVAZAAR_AUTORECONF = YES +KVAZAAR_INSTALL_STAGING = YES +KVAZAAR_DEPENDENCIES = host-pkgconf +KVAZAAR_CONF_OPTS = --without-cryptopp + +$(eval $(autotools-package)) diff --git a/buildroot/package/kvm-unit-tests/0001-Makefile-remove-Werror-to-avoid-build-failures.patch b/buildroot/package/kvm-unit-tests/0001-Makefile-remove-Werror-to-avoid-build-failures.patch new file mode 100644 index 0000000..cbfa3a8 --- /dev/null +++ b/buildroot/package/kvm-unit-tests/0001-Makefile-remove-Werror-to-avoid-build-failures.patch @@ -0,0 +1,27 @@ +From 08e14a662b9e75daec29722e49150869952ba1b6 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 20 Nov 2017 22:09:39 +0100 +Subject: [PATCH] Makefile: remove -Werror to avoid build failures + +Signed-off-by: Thomas Petazzoni +[Matthew: Refactoring of Thomas Petazzoni's original.] +Signed-off-by: Matthew Weber +--- + Makefile | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 7231334..d9ad42b 100644 +--- a/Makefile ++++ b/Makefile +@@ -53,7 +53,6 @@ cc-option = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null \ + COMMON_CFLAGS += -g $(autodepend-flags) + COMMON_CFLAGS += -Wall -Wwrite-strings -Wclobbered -Wempty-body -Wuninitialized + COMMON_CFLAGS += -Wignored-qualifiers -Wunused-but-set-parameter +-COMMON_CFLAGS += -Werror + frame-pointer-flag=-f$(if $(KEEP_FRAME_POINTER),no-,)omit-frame-pointer + fomit_frame_pointer := $(call cc-option, $(frame-pointer-flag), "") + fnostack_protector := $(call cc-option, -fno-stack-protector, "") +-- +2.14.2 + diff --git a/buildroot/package/kvm-unit-tests/0002-kvm-unit-tests-test-for-rdseed-rdrand.patch b/buildroot/package/kvm-unit-tests/0002-kvm-unit-tests-test-for-rdseed-rdrand.patch new file mode 100644 index 0000000..47f15c6 --- /dev/null +++ b/buildroot/package/kvm-unit-tests/0002-kvm-unit-tests-test-for-rdseed-rdrand.patch @@ -0,0 +1,110 @@ +From 8d9a62a5fa89001266352a929c5d40b28c0dda85 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Fri, 12 Jan 2018 19:07:27 -0600 +Subject: [PATCH v2] kvm-unit-tests: test for rdseed/rdrand + +The build fails when the host binutils isn't at least 2.23 +(2.22.x introduced RDSEED). + +Fixes: +http://autobuild.buildroot.net/results/c39/c3987a3cbd2960b0ff50f872636bdfd8d1a9c820/ + +Upstream: +https://marc.info/?l=kvm&m=151580743523259&w=2 + +Signed-off-by: Matthew Weber +--- + Makefile | 2 +- + configure | 18 ++++++++++++++++++ + x86/vmx_tests.c | 6 ++++++ + 3 files changed, 25 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index d9ad42b..799e9b5 100644 +--- a/Makefile ++++ b/Makefile +@@ -50,7 +50,7 @@ include $(SRCDIR)/$(TEST_DIR)/Makefile + cc-option = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null \ + > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) + +-COMMON_CFLAGS += -g $(autodepend-flags) ++COMMON_CFLAGS += -g $(autodepend-flags) $(EXTRA_CFLAGS) + COMMON_CFLAGS += -Wall -Wwrite-strings -Wclobbered -Wempty-body -Wuninitialized + COMMON_CFLAGS += -Wignored-qualifiers -Wunused-but-set-parameter + frame-pointer-flag=-f$(if $(KEEP_FRAME_POINTER),no-,)omit-frame-pointer +diff --git a/configure b/configure +index dd9d361..21c0219 100755 +--- a/configure ++++ b/configure +@@ -171,6 +171,23 @@ mkdir -p lib + ln -sf "$asm" lib/asm + + ++cat > rd_test.c < ++int main() { ++ uint16_t seed=0; ++ unsigned char ok; ++ asm volatile ("rdseed %0; setc %1" ++ : "=r" (seed), "=qm" (ok)); ++ return ok; ++} ++EOF ++if $cross_prefix$cc -o /dev/null rd_test.c &> /dev/null; then ++ echo "Checking for rdseed/rdrand... Yes." ++else ++ echo "Checking for rdseed/rdrand... No." ++ extra_cflags="-DNO_RDSEEDRAND" ++fi ++ + # create the config + cat < config.mak + SRCDIR=$srcdir +@@ -181,6 +198,7 @@ ARCH_NAME=$arch_name + PROCESSOR=$processor + CC=$cross_prefix$cc + CXX=$cross_prefix$cxx ++EXTRA_CFLAGS=$extra_cflags + LD=$cross_prefix$ld + OBJCOPY=$cross_prefix$objcopy + OBJDUMP=$cross_prefix$objdump +diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c +index 4a3e94b..2cbe3eb 100644 +--- a/x86/vmx_tests.c ++++ b/x86/vmx_tests.c +@@ -770,8 +770,10 @@ asm( + "insn_sldt: sldt %ax;ret\n\t" + "insn_lldt: xor %eax, %eax; lldt %ax;ret\n\t" + "insn_str: str %ax;ret\n\t" ++#ifndef NO_RDSEEDRAND + "insn_rdrand: rdrand %rax;ret\n\t" + "insn_rdseed: rdseed %rax;ret\n\t" ++#endif + ); + extern void insn_hlt(); + extern void insn_invlpg(); +@@ -796,8 +798,10 @@ extern void insn_lldt(); + extern void insn_str(); + extern void insn_cpuid(); + extern void insn_invd(); ++#ifndef NO_RDSEEDRAND + extern void insn_rdrand(); + extern void insn_rdseed(); ++#endif + + u32 cur_insn; + u64 cr3; +@@ -853,8 +857,10 @@ static struct insn_table insn_table[] = { + {"DESC_TABLE (LLDT)", CPU_DESC_TABLE, insn_lldt, INSN_CPU1, 47, 0, 0, 0}, + {"DESC_TABLE (STR)", CPU_DESC_TABLE, insn_str, INSN_CPU1, 47, 0, 0, 0}, + /* LTR causes a #GP if done with a busy selector, so it is not tested. */ ++#ifndef NO_RDSEEDRAND + {"RDRAND", CPU_RDRAND, insn_rdrand, INSN_CPU1, VMX_RDRAND, 0, 0, 0}, + {"RDSEED", CPU_RDSEED, insn_rdseed, INSN_CPU1, VMX_RDSEED, 0, 0, 0}, ++#endif + // Instructions always trap + {"CPUID", 0, insn_cpuid, INSN_ALWAYS_TRAP, 10, 0, 0, 0}, + {"INVD", 0, insn_invd, INSN_ALWAYS_TRAP, 13, 0, 0, 0}, +-- +1.9.1 + diff --git a/buildroot/package/kvm-unit-tests/Config.in b/buildroot/package/kvm-unit-tests/Config.in new file mode 100644 index 0000000..8b7908e --- /dev/null +++ b/buildroot/package/kvm-unit-tests/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_KVM_UNIT_TESTS_ARCH_SUPPORTS + bool + # On ARM, it uses virtualization extensions + default y if BR2_cortex_a7 || BR2_cortex_a12 || \ + BR2_cortex_a15 || BR2_cortex_a15_a7 || \ + BR2_cortex_a17 || BR2_cortex_a17_a7 + default y if BR2_i386 || BR2_x86_64 + default y if BR2_powerpc64 || BR2_powerpc64le + +config BR2_PACKAGE_KVM_UNIT_TESTS + bool "kvm-unit-tests" + depends on BR2_PACKAGE_KVM_UNIT_TESTS_ARCH_SUPPORTS + # on i386 and x86-64, __builtin_reachable is used, so we need + # gcc 4.5 at least. on i386, we use the target gcc, while on + # x86-64 we use the host gcc (see .mk file for details) + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 || !BR2_i386 + depends on BR2_HOST_GCC_AT_LEAST_4_5 || !BR2_x86_64 + depends on BR2_HOSTARCH = "x86_64" || !BR2_x86_64 + select BR2_HOSTARCH_NEEDS_IA32_COMPILER if BR2_x86_64=y + help + kvm-unit-tests is a project as old as KVM. As its name + suggests, it's purpose is to provide unit tests for KVM. The + unit tests are tiny guest operating systems that generally + execute only tens of lines of C and assembler test code in + order to obtain its PASS/FAIL result. Unit tests provide KVM + and virt hardware functional testing by targeting the + features through minimal implementations of their use per + the hardware specification. The simplicity of unit tests + make them easy to verify they are correct, easy to maintain, + and easy to use in timing measurements. Unit tests are also + often used for quick and dirty bug reproducers. The + reproducers may then be kept as regression tests. It's + strongly encouraged that patches implementing new KVM + features are submitted with accompanying unit tests. + + http://www.linux-kvm.org/page/KVM-unit-tests + +comment "kvm-unit-tests needs a toolchain w/ gcc >= 4.5" + depends on BR2_i386 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + +comment "kvm-unit-tests needs a host gcc >= 4.5" + depends on BR2_x86_64 + depends on !BR2_HOST_GCC_AT_LEAST_4_5 diff --git a/buildroot/package/kvm-unit-tests/kvm-unit-tests.hash b/buildroot/package/kvm-unit-tests/kvm-unit-tests.hash new file mode 100644 index 0000000..bb827de --- /dev/null +++ b/buildroot/package/kvm-unit-tests/kvm-unit-tests.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 346c543de9e953db283072e1c591cab9d0eb775f7fb1fff3d7560f38bdf6bdf2 kvm-unit-tests-kvm-unit-tests-20171020.tar.gz diff --git a/buildroot/package/kvm-unit-tests/kvm-unit-tests.mk b/buildroot/package/kvm-unit-tests/kvm-unit-tests.mk new file mode 100644 index 0000000..54614e2 --- /dev/null +++ b/buildroot/package/kvm-unit-tests/kvm-unit-tests.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# kvm-unit-tests +# +################################################################################ + +KVM_UNIT_TESTS_VERSION = kvm-unit-tests-20171020 +KVM_UNIT_TESTS_SITE = $(BR2_KERNEL_MIRROR)/scm/virt/kvm/kvm-unit-tests.git +KVM_UNIT_TESTS_SITE_METHOD = git +KVM_UNIT_TESTS_LICENSE = LGPL-2.0 +KVM_UNIT_TESTS_LICENSE_FILES = COPYRIGHT + +ifeq ($(BR2_arm),y) +KVM_UNIT_TESTS_ARCH = arm +else ifeq ($(BR2_i386),y) +KVM_UNIT_TESTS_ARCH = i386 +else ifeq ($(BR2_powerpc64)$(BR2_powerpc64le),y) +KVM_UNIT_TESTS_ARCH = ppc64 +else ifeq ($(BR2_x86_64),y) +KVM_UNIT_TESTS_ARCH = x86_64 +endif + +ifeq ($(BR2_ENDIAN),"LITTLE") +KVM_UNIT_TESTS_ENDIAN = little +else +KVM_UNIT_TESTS_ENDIAN = big +endif + +KVM_UNIT_TESTS_CONF_OPTS =\ + --arch="$(KVM_UNIT_TESTS_ARCH)" \ + --processor="$(call qstrip,$(BR2_GCC_TARGET_CPU))" \ + --endian="$(KVM_UNIT_TESTS_ENDIAN)" + +# For all architectures but x86-64, we use the target +# compiler. However, for x86-64, we use the host compiler, as +# kvm-unit-tests builds 32 bit code, which Buildroot toolchains for +# x86-64 cannot do. +ifneq ($(BR2_x86_64),y) +KVM_UNIT_TESTS_CONF_OPTS += --cross-prefix="$(TARGET_CROSS)" +endif + +define KVM_UNIT_TESTS_CONFIGURE_CMDS + cd $(@D) && ./configure $(KVM_UNIT_TESTS_CONF_OPTS) +endef + +define KVM_UNIT_TESTS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) standalone +endef + +define KVM_UNIT_TESTS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR)/usr/share/kvm-unit-tests/ \ + install +endef + +# Does use configure script but not an autotools one +$(eval $(generic-package)) diff --git a/buildroot/package/kvmtool/Config.in b/buildroot/package/kvmtool/Config.in new file mode 100644 index 0000000..bf19a25 --- /dev/null +++ b/buildroot/package/kvmtool/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_KVMTOOL + bool "kvmtool" + depends on BR2_USE_MMU # guest simple init fork() + # No MADV_HUGEPAGE define in uClibc(-ng) + depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) + # Only mips big-endian seems to be supported (build breaks) + # Should work on powerpc64 but the build breaks with missing types + depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \ + BR2_mips || BR2_x86_64 + # libfdt is only required for DT architectures... + # ...but it's not able to build for static targets + depends on !(BR2_STATIC_LIBS && (BR2_aarch64 || BR2_arm || BR2_armeb)) + select BR2_PACKAGE_DTC if BR2_aarch64 || BR2_arm || BR2_armeb + help + kvmtool is a lightweight tool for hosting KVM guests. + As a pure virtualization tool it only supports guests using + the same architecture, though it supports running 32-bit + guests on those 64-bit architectures that allow this. + + https://git.kernel.org/cgit/linux/kernel/git/will/kvmtool.git/tree/README + +comment "kvmtool needs a glibc or musl toolchain" + depends on BR2_USE_MMU + depends on BR2_i386 || BR2_mips || BR2_x86_64 + depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) + +comment "kvmtool needs a glibc or musl toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_aarch64 || BR2_arm || BR2_armeb + depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/kvmtool/kvmtool.hash b/buildroot/package/kvmtool/kvmtool.hash new file mode 100644 index 0000000..4282773 --- /dev/null +++ b/buildroot/package/kvmtool/kvmtool.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2d55e4521ac040b870db015e1f075d69b89f940242d7ce5708f7d7060d62c0cc kvmtool-f77d646ba01d04be5aad9449ac00719c043fe36e.tar.gz diff --git a/buildroot/package/kvmtool/kvmtool.mk b/buildroot/package/kvmtool/kvmtool.mk new file mode 100644 index 0000000..5894e47 --- /dev/null +++ b/buildroot/package/kvmtool/kvmtool.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# kvmtool +# +################################################################################ + +KVMTOOL_VERSION = f77d646ba01d04be5aad9449ac00719c043fe36e +KVMTOOL_SITE = $(BR2_KERNEL_MIRROR)/scm/linux/kernel/git/will/kvmtool.git +KVMTOOL_SITE_METHOD = git +KVMTOOL_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_BINUTILS),binutils) \ + $(if $(BR2_PACKAGE_DTC),dtc) \ + $(if $(BR2_PACKAGE_LIBAIO),libaio) \ + $(if $(BR2_PACKAGE_LIBGTK3),libgtk3) \ + $(if $(BR2_PACKAGE_LIBVNCSERVER),libvncserver) \ + $(if $(BR2_PACKAGE_SDL),sdl) \ + $(if $(BR2_PACKAGE_ZLIB),zlib) +KVMTOOL_LICENSE = GPL-2.0 +KVMTOOL_LICENSE_FILES = COPYING + +# Disable -Werror, otherwise musl is not happy +KVMTOOL_MAKE_OPTS = \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + LDFLAGS="$(TARGET_LDFLAGS) $(KVMTOOL_EXTRA_LDFLAGS)" \ + WERROR=0 + +define KVMTOOL_BUILD_CMDS + $(TARGET_MAKE_ENV) ARCH=$(KERNEL_ARCH) $(MAKE) -C $(@D) $(KVMTOOL_MAKE_OPTS) +endef + +define KVMTOOL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) ARCH=$(KERNEL_ARCH) $(MAKE) -C $(@D) \ + $(KVMTOOL_MAKE_OPTS) install DESTDIR=$(TARGET_DIR) prefix=/usr +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/kyua/Config.in b/buildroot/package/kyua/Config.in new file mode 100644 index 0000000..4fc5e09 --- /dev/null +++ b/buildroot/package/kyua/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_KYUA + bool "kyua" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LUAINTERPRETER # lutok + depends on !BR2_PACKAGE_LUAJIT # lutok + depends on !BR2_STATIC_LIBS # lutok + depends on BR2_USE_MMU # atf + select BR2_PACKAGE_ATF + select BR2_PACKAGE_LUTOK + select BR2_PACKAGE_SQLITE + help + Kyua is a testing framework for infrastructure software, + originally designed to equip BSD-based operating systems + with a test suite. This means that Kyua is lightweight + and simple, and that Kyua integrates well with various build + systems and continuous integration frameworks. + + https://github.com/jmmv/kyua + +comment "kyua needs a toolchain w/ C++, dynamic library and full Lua" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_PACKAGE_LUAJIT || BR2_STATIC_LIBS + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + depends on BR2_USE_MMU diff --git a/buildroot/package/kyua/kyua.hash b/buildroot/package/kyua/kyua.hash new file mode 100644 index 0000000..298d0d8 --- /dev/null +++ b/buildroot/package/kyua/kyua.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2b8b64a458b642df75086eeb73e8073d105b8d9cff04c9b1a905b68bc8502560 kyua-0.11.tar.gz diff --git a/buildroot/package/kyua/kyua.mk b/buildroot/package/kyua/kyua.mk new file mode 100644 index 0000000..9e1c810 --- /dev/null +++ b/buildroot/package/kyua/kyua.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# kyua +# +################################################################################ + +KYUA_VERSION = 0.11 +KYUA_SITE = https://github.com/jmmv/kyua/releases/download/kyua-$(KYUA_VERSION) +KYUA_DEPENDENCIES = host-pkgconf atf lutok sqlite +KYUA_CONF_OPTS = --without-doxygen --without-atf +KYUA_LICENSE = BSD-3-Clause +KYUA_LICENSE_FILES = COPYING +KYUA_CONF_ENV = \ + kyua_cv_attribute_noreturn=yes \ + kyua_cv_getcwd_dyn=yes \ + kyua_cv_lchmod_works=no \ + kyua_cv_getopt_gnu=yes \ + kyua_cv_getopt_optind_reset_value=0 \ + kyua_cv_signals_lastno=15 + +define KYUA_INSTALL_CONFIG + $(INSTALL) -D -m 644 $(@D)/examples/kyua.conf $(TARGET_DIR)/etc/kyua/kyua.conf +endef + +KYUA_POST_INSTALL_HOOKS += KYUA_INSTALL_CONFIG + +$(eval $(autotools-package)) diff --git a/buildroot/package/lame/Config.in b/buildroot/package/lame/Config.in new file mode 100644 index 0000000..2b144a0 --- /dev/null +++ b/buildroot/package/lame/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LAME + bool "lame" + help + LAME is a high quality MPEG Audio Layer III (MP3) encoder. + + http://lame.sourceforge.net/ diff --git a/buildroot/package/lame/lame.hash b/buildroot/package/lame/lame.hash new file mode 100644 index 0000000..58dc6f7 --- /dev/null +++ b/buildroot/package/lame/lame.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e lame-3.100.tar.gz +sha256 bfe4a52dc4645385f356a8e83cc54216a293e3b6f1cb4f79f5fc0277abf937fd COPYING diff --git a/buildroot/package/lame/lame.mk b/buildroot/package/lame/lame.mk new file mode 100644 index 0000000..3d76ab9 --- /dev/null +++ b/buildroot/package/lame/lame.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# lame +# +################################################################################ + +LAME_VERSION = 3.100 +LAME_SITE = http://downloads.sourceforge.net/project/lame/lame/$(LAME_VERSION) +LAME_DEPENDENCIES = host-pkgconf +LAME_INSTALL_STAGING = YES +LAME_CONF_ENV = GTK_CONFIG=/bin/false +LAME_CONF_OPTS = --enable-dynamic-frontends +LAME_LICENSE = LGPL-2.0+ +LAME_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +LAME_DEPENDENCIES += libsndfile +LAME_CONF_OPTS += --with-fileio=sndfile +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +LAME_DEPENDENCIES += ncurses +endif + +ifeq ($(BR2_ENDIAN),"BIG") +define LAME_BIGENDIAN_ARCH + echo "#define WORDS_BIGENDIAN 1" >>$(@D)/config.h +endef +endif + +LAME_POST_CONFIGURE_HOOKS += LAME_BIGENDIAN_ARCH + +$(eval $(autotools-package)) diff --git a/buildroot/package/lapack/Config.in b/buildroot/package/lapack/Config.in new file mode 100644 index 0000000..9687ace --- /dev/null +++ b/buildroot/package/lapack/Config.in @@ -0,0 +1,21 @@ +comment "lapack/blas needs a toolchain w/ fortran" + depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC) + depends on !BR2_TOOLCHAIN_HAS_FORTRAN + +config BR2_PACKAGE_LAPACK + bool "lapack/blas" + depends on BR2_TOOLCHAIN_HAS_FORTRAN + # _fpu_control is used on PowerPC, but not available with uClibc + depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC) + help + LAPACK and BLAS FORTRAN implementation. This package + installs two libraries: libblas and liblapack. + + http://www.netlib.org/lapack/ + +config BR2_PACKAGE_LAPACK_COMPLEX + bool "Complex/Complex16 support" + default y + depends on BR2_PACKAGE_LAPACK + help + Builds support for COMPLEX and COMPLEX16 data types. diff --git a/buildroot/package/lapack/lapack.hash b/buildroot/package/lapack/lapack.hash new file mode 100644 index 0000000..fd3feef --- /dev/null +++ b/buildroot/package/lapack/lapack.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 f6c53fd9f56932f3ddb3d5e24c1c07e4cd9b3b08e7f89de9c867125eecc9a1c8 lapack-3.7.1.tgz diff --git a/buildroot/package/lapack/lapack.mk b/buildroot/package/lapack/lapack.mk new file mode 100644 index 0000000..4e74bbd --- /dev/null +++ b/buildroot/package/lapack/lapack.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# lapack +# +################################################################################ + +LAPACK_VERSION = 3.7.1 +LAPACK_SOURCE = lapack-$(LAPACK_VERSION).tgz +LAPACK_LICENSE = BSD-3-Clause +LAPACK_LICENSE_FILES = LICENSE +LAPACK_SITE = http://www.netlib.org/lapack +LAPACK_INSTALL_STAGING = YES +LAPACK_SUPPORTS_IN_SOURCE_BUILD = NO +LAPACK_CONF_OPTS = -DLAPACKE=ON -DCBLAS=ON + +ifeq ($(BR2_PACKAGE_LAPACK_COMPLEX),y) +LAPACK_CONF_OPTS += -DBUILD_COMPLEX=ON -DBUILD_COMPLEX16=ON +else +LAPACK_CONF_OPTS += -DBUILD_COMPLEX=OFF -DBUILD_COMPLEX16=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/latencytop/0001-makefile.patch b/buildroot/package/latencytop/0001-makefile.patch new file mode 100644 index 0000000..fa8c51c --- /dev/null +++ b/buildroot/package/latencytop/0001-makefile.patch @@ -0,0 +1,28 @@ +Usee $(CC) to enable cross compiling and link to the right ncurses library. + +Signed-off-by: Qais Yousef + +--- latencytop-0.5/Makefile.old 2012-04-18 11:59:39.748084334 +0100 ++++ latencytop-0.5/Makefile 2012-04-18 12:00:08.659112340 +0100 +@@ -4,7 +4,7 @@ + DESTDIR = + SBINDIR = /usr/sbin + XCFLAGS = -W -g `pkg-config --cflags glib-2.0` -D_FORTIFY_SOURCE=2 -Wno-sign-compare +-LDF = -Wl,--as-needed `pkg-config --libs glib-2.0` -lncursesw ++LDF = -Wl,--as-needed `pkg-config --libs glib-2.0` -lncurses + + OBJS= latencytop.o text_display.o translate.o fsync.o + +@@ -26,10 +26,10 @@ + + # We write explicity this "implicit rule" + %.o : %.c +- gcc -c $(CFLAGS) $(XCFLAGS) $< -o $@ ++ $(CC) -c $(CFLAGS) $(XCFLAGS) $< -o $@ + + latencytop: $(OBJS) latencytop.h Makefile +- gcc $(CFLAGS) $(OBJS) $(LDF) -o latencytop ++ $(CC) $(CFLAGS) $(OBJS) $(LDF) -o latencytop + + clean: + rm -f *~ latencytop DEADJOE *.o diff --git a/buildroot/package/latencytop/Config.in b/buildroot/package/latencytop/Config.in new file mode 100644 index 0000000..b54ef05 --- /dev/null +++ b/buildroot/package/latencytop/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_LATENCYTOP + bool "latencytop" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBGLIB2 + help + There are many types and causes of latency. LatencyTOP + focuses on the type of latency that causes skips in audio, + stutters in your desktop experience or that overloads your + server (while you have plenty of CPU power left). + + LatencyTOP focuses on the cases where the applications want + to run and execute useful code, but there's some resource + that's not currently available (and the kernel then blocks + the process). This is done both on a system level and on a + per process level, so that you can see what's happening to + the system, and which process is suffering and/or causing + the delays. + + http://www.latencytop.org + +comment "latencytop needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/latencytop/latencytop.hash b/buildroot/package/latencytop/latencytop.hash new file mode 100644 index 0000000..4be004c --- /dev/null +++ b/buildroot/package/latencytop/latencytop.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 9e7f72fbea7bd918e71212a1eabaad8488d2c602205d2e3c95d62cd57e9203ef latencytop-0.5.tar.gz diff --git a/buildroot/package/latencytop/latencytop.mk b/buildroot/package/latencytop/latencytop.mk new file mode 100644 index 0000000..56afe86 --- /dev/null +++ b/buildroot/package/latencytop/latencytop.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# latencytop +# +################################################################################ + +LATENCYTOP_VERSION = 0.5 +LATENCYTOP_SITE = http://www.latencytop.org/download +LATENCYTOP_DEPENDENCIES = libglib2 ncurses +LATENCYTOP_LICENSE = GPL-2.0 +LATENCYTOP_LICENSE_FILES = latencytop.c + +# NOTE: GTK is heavy weight, we intentionally build the text (ncurses) +# version only +define LATENCYTOP_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) HAS_GTK_GUI= +endef + +define LATENCYTOP_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) install -C $(@D) DESTDIR=$(TARGET_DIR) HAS_GTK_GUI= +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/lbase64/0001-retro-compatible-with-Lua-5.1.patch b/buildroot/package/lbase64/0001-retro-compatible-with-Lua-5.1.patch new file mode 100644 index 0000000..12acf44 --- /dev/null +++ b/buildroot/package/lbase64/0001-retro-compatible-with-Lua-5.1.patch @@ -0,0 +1,20 @@ +retro compatible with Lua 5.1 C/API + +Signed-off-by: Francois Perrad + +Index: b/lbase64.c +=================================================================== +--- a/lbase64.c ++++ b/lbase64.c +@@ -111,7 +111,11 @@ + + LUALIB_API int luaopen_base64(lua_State *L) + { ++#if LUA_VERSION_NUM >= 502 + luaL_newlib(L,R); ++#else ++ luaL_register(L,MYNAME,R); ++#endif + lua_pushliteral(L,"version"); /** version */ + lua_pushliteral(L,MYVERSION); + lua_settable(L,-3); diff --git a/buildroot/package/lbase64/Config.in b/buildroot/package/lbase64/Config.in new file mode 100644 index 0000000..34ef943 --- /dev/null +++ b/buildroot/package/lbase64/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LBASE64 + bool "lbase64" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + A base64 library for Lua + + http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/#lbase64 diff --git a/buildroot/package/lbase64/lbase64.hash b/buildroot/package/lbase64/lbase64.hash new file mode 100644 index 0000000..d835d40 --- /dev/null +++ b/buildroot/package/lbase64/lbase64.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b83dbc87330a322e5222cd891a6e258b533f5b6c46e8f3c18fc0265e4c991aaa lbase64.tar.gz diff --git a/buildroot/package/lbase64/lbase64.mk b/buildroot/package/lbase64/lbase64.mk new file mode 100644 index 0000000..0225fc6 --- /dev/null +++ b/buildroot/package/lbase64/lbase64.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# lbase64 +# +################################################################################ + +LBASE64_VERSION = 20120820 +LBASE64_SITE = http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/5.3 +LBASE64_SOURCE = lbase64.tar.gz +LBASE64_LICENSE = Public domain +LBASE64_LICENSE_FILES = README +LBASE64_DEPENDENCIES = luainterpreter + +define LBASE64_BUILD_CMDS + $(MAKE1) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -fPIC" -C $(@D) so +endef + +define LBASE64_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/base64.so \ + $(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)/base64.so +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/lbreakout2/Config.in b/buildroot/package/lbreakout2/Config.in new file mode 100644 index 0000000..eeb8a06 --- /dev/null +++ b/buildroot/package/lbreakout2/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_LBREAKOUT2 + bool "LBreakout2" + select BR2_PACKAGE_SDL + select BR2_PACKAGE_LIBPNG + help + LBreakout2 is the successor to LBreakout, a breakout-style + arcade game in the manner of Arkanoid. Requires SDL, libpng, + and optionnally SDL_mixer/SDL_net. + A display with minimum 640x480 resolution, a keyboard and a + mouse are recommanded. + + http://lgames.sourceforge.net/index.php?project=LBreakout2 + +if BR2_PACKAGE_LBREAKOUT2 + +config BR2_PACKAGE_LBREAKOUT2_AUDIO + bool "audio support" + default y + select BR2_PACKAGE_SDL_MIXER + help + Activates audio support in LBreakout2. Will add SDL_mixer. + +config BR2_PACKAGE_LBREAKOUT2_NET + bool "network support" + default y + select BR2_PACKAGE_SDL_NET + help + Activates network support LBreakout2. Will add SDL_net. + +endif diff --git a/buildroot/package/lbreakout2/lbreakout2.hash b/buildroot/package/lbreakout2/lbreakout2.hash new file mode 100644 index 0000000..0d305dc --- /dev/null +++ b/buildroot/package/lbreakout2/lbreakout2.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/lgames/files/lbreakout2/2.6/ +md5 1a9238b83f9f13f09b7a4d53e00b4e84 lbreakout2-2.6.5.tar.gz +sha1 d92326499165fd368be04378d633e13d42b4d2d7 lbreakout2-2.6.5.tar.gz +# Locally computed: +sha256 9104d6175553da3442dc6a5fc407a669e2f5aff3eedc5d30409eb003b7a78d6f lbreakout2-2.6.5.tar.gz diff --git a/buildroot/package/lbreakout2/lbreakout2.mk b/buildroot/package/lbreakout2/lbreakout2.mk new file mode 100644 index 0000000..49db8d5 --- /dev/null +++ b/buildroot/package/lbreakout2/lbreakout2.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# lbreakout2 +# +################################################################################ + +LBREAKOUT2_VERSION_MAJOR = 2.6 +LBREAKOUT2_VERSION = $(LBREAKOUT2_VERSION_MAJOR).5 +LBREAKOUT2_SITE = https://downloads.sourceforge.net/lgames/lbreakout2/$(LBREAKOUT2_VERSION_MAJOR) +LBREAKOUT2_LICENSE = GPL-2.0+ +LBREAKOUT2_LICENSE_FILES = COPYING + +LBREAKOUT2_DEPENDENCIES = sdl libpng $(TARGET_NLS_DEPENDENCIES) + +LBREAKOUT2_CONF_ENV = \ + SDL_CONFIG="$(STAGING_DIR)/usr/bin/sdl-config" \ + LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LBREAKOUT2_AUDIO),y) +LBREAKOUT2_DEPENDENCIES += sdl_mixer +LBREAKOUT2_CONF_OPTS += --enable-audio=yes +else +LBREAKOUT2_CONF_OPTS += --disable-audio +endif + +ifeq ($(BR2_PACKAGE_LBREAKOUT2_NET),y) +LBREAKOUT2_DEPENDENCIES += sdl_net +LBREAKOUT2_CONF_OPTS += --enable-network=yes +else +LBREAKOUT2_CONF_OPTS += --disable-network +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/lcdapi/Config.in b/buildroot/package/lcdapi/Config.in new file mode 100644 index 0000000..154689b --- /dev/null +++ b/buildroot/package/lcdapi/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LCDAPI + bool "lcdapi" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + C++ client API for lcdproc, containing a set of widget + classes. + + https://github.com/spdawson/lcdapi + +comment "lcdapi needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/lcdapi/lcdapi.hash b/buildroot/package/lcdapi/lcdapi.hash new file mode 100644 index 0000000..c04ea02 --- /dev/null +++ b/buildroot/package/lcdapi/lcdapi.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 6afdd4238af1fa7ea5f10378601381fc3f535a10504dc7d4ea8eab56e0dda091 lcdapi-v0.11.tar.gz diff --git a/buildroot/package/lcdapi/lcdapi.mk b/buildroot/package/lcdapi/lcdapi.mk new file mode 100644 index 0000000..f7c71df --- /dev/null +++ b/buildroot/package/lcdapi/lcdapi.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# lcdapi +# +################################################################################ + +LCDAPI_VERSION = v0.11 +LCDAPI_SITE = $(call github,spdawson,lcdapi,$(LCDAPI_VERSION)) +LCDAPI_LICENSE = LGPL-2.1+ +LCDAPI_LICENSE_FILES = COPYING +LCDAPI_AUTORECONF = YES +LCDAPI_INSTALL_STAGING = YES + +# Internal error, aborting at dw2gencfi.c:214 in emit_expr_encoded +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79509 +ifeq ($(BR2_m68k_cf),y) +LCDAPI_CONF_OPTS += CXXFLAGS="$(TARGET_CXXFLAGS) -fno-dwarf2-cfi-asm" +endif + +define LCDAPI_CREATE_M4_DIR + mkdir -p $(@D)/m4 +endef + +LCDAPI_POST_PATCH_HOOKS += LCDAPI_CREATE_M4_DIR + +$(eval $(autotools-package)) diff --git a/buildroot/package/lcdproc/0001-Add-missing-ioctl-header.patch b/buildroot/package/lcdproc/0001-Add-missing-ioctl-header.patch new file mode 100644 index 0000000..8c21235 --- /dev/null +++ b/buildroot/package/lcdproc/0001-Add-missing-ioctl-header.patch @@ -0,0 +1,50 @@ +From 6267665454501512ac054202b38e4e6a72fa284b Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 8 Sep 2017 14:19:11 +0300 +Subject: [PATCH] Add missing ioctl header + +The spidev.h header uses macros from linux/ioctl.h. Add this header +explicitly since some libc, like musl, do not include it implicitly. +This fixes the following build failure: + +In file included from .../sysroot/usr/include/sys/ioctl.h:7:0, + from hd44780-spi.c:31: +hd44780-spi.c: In function ‘spi_transfer’: +hd44780-spi.c:89:24: error: ‘_IOC_SIZEBITS’ undeclared (first use in this function) + status = ioctl(p->fd, SPI_IOC_MESSAGE(1), &xfer); + ^ +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/lcdproc/lcdproc/pull/90 + + server/drivers/hd44780-pifacecad.c | 1 + + server/drivers/hd44780-spi.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/server/drivers/hd44780-pifacecad.c b/server/drivers/hd44780-pifacecad.c +index a73b9f9b1f82..55139124d852 100644 +--- a/server/drivers/hd44780-pifacecad.c ++++ b/server/drivers/hd44780-pifacecad.c +@@ -54,6 +54,7 @@ + #include + #include + #include ++#include + #include + #include + +diff --git a/server/drivers/hd44780-spi.c b/server/drivers/hd44780-spi.c +index 791156f87a26..74c85fb014aa 100644 +--- a/server/drivers/hd44780-spi.c ++++ b/server/drivers/hd44780-spi.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + +-- +2.14.1 + diff --git a/buildroot/package/lcdproc/0001-LCDd.conf.patch b/buildroot/package/lcdproc/0001-LCDd.conf.patch new file mode 100644 index 0000000..283ac88 --- /dev/null +++ b/buildroot/package/lcdproc/0001-LCDd.conf.patch @@ -0,0 +1,18 @@ +Fix the default LCDd configuration file, so that the DriverPath +is set to the correct lcdproc library install path, rather than +the dummy/default path. + +Signed-off-by: Simon Dawson +--- + +--- lcdproc-0.5.3/LCDd.conf.orig 2009-06-20 14:48:34.000000000 +0100 ++++ lcdproc-0.5.3/LCDd.conf 2010-05-11 10:02:21.000000000 +0100 +@@ -34,7 +34,7 @@ + # the driver modules and will thus not be able to + # function properly. + # NOTE: Always place a slash as last character ! +-DriverPath=server/drivers/ ++DriverPath=/usr/lib/lcdproc/ + + # Tells the server to load the given drivers. Multiple lines can be given. + # The name of the driver is case sensitive and determines the section diff --git a/buildroot/package/lcdproc/Config.in b/buildroot/package/lcdproc/Config.in new file mode 100644 index 0000000..042abd6 --- /dev/null +++ b/buildroot/package/lcdproc/Config.in @@ -0,0 +1,29 @@ +comment "lcdproc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_LCDPROC + bool "lcdproc" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_ZLIB + help + LCD display driver daemon and clients + + http://lcdproc.org/ + +if BR2_PACKAGE_LCDPROC + +config BR2_PACKAGE_LCDPROC_DRIVERS + string "List of drivers to build" + default "all" + help + Specify a comma-separated list of lcdproc drivers to be built + +config BR2_PACKAGE_LCDPROC_MENUS + bool "Menu support" + help + Enable support for lcdproc menus + +endif diff --git a/buildroot/package/lcdproc/lcdproc.hash b/buildroot/package/lcdproc/lcdproc.hash new file mode 100644 index 0000000..00f6854 --- /dev/null +++ b/buildroot/package/lcdproc/lcdproc.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 843007d377adc856529ed0c7c42c9a7563043f06b1b73add0372bba3a3029804 lcdproc-0.5.7.tar.gz +sha256 d48a915496c96ff775b377d2222de3150ae5172bfb84a6ec9f9ceab962f97b83 lcdproc-0.5.9.tar.gz diff --git a/buildroot/package/lcdproc/lcdproc.mk b/buildroot/package/lcdproc/lcdproc.mk new file mode 100644 index 0000000..e5b6172 --- /dev/null +++ b/buildroot/package/lcdproc/lcdproc.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# lcdproc +# +################################################################################ + +LCDPROC_VERSION = 0.5.9 +LCDPROC_SITE = https://github.com/lcdproc/lcdproc/releases/download/v$(LCDPROC_VERSION) +LCDPROC_LICENSE = GPL-2.0+ +LCDPROC_LICENSE_FILES = COPYING +LCDPROC_MAKE = $(MAKE1) + +LCDPROC_CONF_OPTS = --enable-drivers=$(BR2_PACKAGE_LCDPROC_DRIVERS) + +ifeq ($(BR2_PACKAGE_LCDPROC_MENUS),y) +LCDPROC_CONF_OPTS += --enable-lcdproc-menus +endif + +LCDPROC_DEPENDENCIES = freetype ncurses zlib + +LCDPROC_CONF_ENV += ac_cv_path_FT2_CONFIG=$(STAGING_DIR)/usr/bin/freetype-config + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LCDPROC_DEPENDENCIES += libpng +LCDPROC_CONF_ENV += ac_cv_path__png_config=$(STAGING_DIR)/usr/bin/libpng-config +LCDPROC_CONF_OPTS += --enable-libpng +else +LCDPROC_CONF_OPTS += --disable-libpng +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/lcms2/0001-Fix-lcms2.pc.in-thread-library-dependency.patch b/buildroot/package/lcms2/0001-Fix-lcms2.pc.in-thread-library-dependency.patch new file mode 100644 index 0000000..f8c0d00 --- /dev/null +++ b/buildroot/package/lcms2/0001-Fix-lcms2.pc.in-thread-library-dependency.patch @@ -0,0 +1,26 @@ +From 0b55fd4e0935a0231ca258fde631a95215df2f72 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Fri, 11 Nov 2016 23:29:56 +0100 +Subject: [PATCH] Fix lcms2.pc.in thread library dependency. + +Needed (sometimes) for static linking. + +Signed-off-by: Peter Seiderer +--- + lcms2.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lcms2.pc.in b/lcms2.pc.in +index b715f59..5b4213c 100644 +--- a/lcms2.pc.in ++++ b/lcms2.pc.in +@@ -7,5 +7,5 @@ Name: @PACKAGE@ + Description: LCMS Color Management Library + Version: @VERSION@ + Libs: -L${libdir} -llcms2 +-Libs.private: @LIB_MATH@ ++Libs.private: @LIB_MATH@ @LIB_THREAD@ + Cflags: -I${includedir} +-- +2.8.1 + diff --git a/buildroot/package/lcms2/0002-Added-an-extra-check-to-MLU-bounds.patch b/buildroot/package/lcms2/0002-Added-an-extra-check-to-MLU-bounds.patch new file mode 100644 index 0000000..9a5d9dd --- /dev/null +++ b/buildroot/package/lcms2/0002-Added-an-extra-check-to-MLU-bounds.patch @@ -0,0 +1,27 @@ +From 5ca71a7bc18b6897ab21d815d15e218e204581e2 Mon Sep 17 00:00:00 2001 +From: Marti +Date: Mon, 15 Aug 2016 23:31:39 +0200 +Subject: [PATCH] Added an extra check to MLU bounds + +Thanks to Ibrahim el-sayed for spotting the bug + +Signed-off-by: Peter Korsgaard +--- + src/cmstypes.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/cmstypes.c b/src/cmstypes.c +index cb61860..c7328b9 100644 +--- a/src/cmstypes.c ++++ b/src/cmstypes.c +@@ -1460,6 +1460,7 @@ void *Type_MLU_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsU + + // Check for overflow + if (Offset < (SizeOfHeader + 8)) goto Error; ++ if ((Offset + Len) > SizeOfTag + 8) goto Error; + + // True begin of the string + BeginOfThisString = Offset - SizeOfHeader - 8; +-- +2.11.0 + diff --git a/buildroot/package/lcms2/Config.in b/buildroot/package/lcms2/Config.in new file mode 100644 index 0000000..19e1b9c --- /dev/null +++ b/buildroot/package/lcms2/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LCMS2 + bool "lcms2" + help + Little Color Management Software (CMS) intends to be an OPEN + SOURCE small-footprint color management engine, with special + focus on accuracy and performance. + It uses the International Color Consortium standard (ICC), + which is the modern standard when regarding to color + management. + + http://www.littlecms.com/ diff --git a/buildroot/package/lcms2/lcms2.hash b/buildroot/package/lcms2/lcms2.hash new file mode 100644 index 0000000..1cf1017 --- /dev/null +++ b/buildroot/package/lcms2/lcms2.hash @@ -0,0 +1,4 @@ +# From https://sourceforge.net/projects/lcms/files/lcms/2.8 +sha1 e9535ec4a572b8fc7a1c405c35e6f4dc97714197 lcms2-2.8.tar.gz +# Locally computed: +sha256 66d02b229d2ea9474e62c2b6cd6720fde946155cd1d0d2bffdab829790a0fb22 lcms2-2.8.tar.gz diff --git a/buildroot/package/lcms2/lcms2.mk b/buildroot/package/lcms2/lcms2.mk new file mode 100644 index 0000000..29f8ac8 --- /dev/null +++ b/buildroot/package/lcms2/lcms2.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# lcms2 +# +################################################################################ + +LCMS2_VERSION = 2.8 +LCMS2_SITE = http://downloads.sourceforge.net/project/lcms/lcms/$(LCMS2_VERSION) +LCMS2_LICENSE = MIT +LCMS2_LICENSE_FILES = COPYING +LCMS2_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_JPEG),y) +LCMS2_CONF_OPTS += --with-jpeg +LCMS2_DEPENDENCIES += jpeg +else +LCMS2_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +LCMS2_CONF_OPTS += --with-tiff +LCMS2_DEPENDENCIES += tiff +else +LCMS2_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LCMS2_CONF_OPTS += --with-zlib +LCMS2_DEPENDENCIES += zlib +else +LCMS2_CONF_OPTS += --without-zlib +endif + +$(eval $(host-autotools-package)) +$(eval $(autotools-package)) diff --git a/buildroot/package/leafnode2/0001-cross_makefile.patch b/buildroot/package/leafnode2/0001-cross_makefile.patch new file mode 100644 index 0000000..b61a8ef --- /dev/null +++ b/buildroot/package/leafnode2/0001-cross_makefile.patch @@ -0,0 +1,39 @@ +Fix cross-compilation issues + + - During target package compilation the host version of b_sortnl is + needed. + + - Do not call a 'amiroot' program built for the target when + cross-compiling. We're anyway not root, so simply remove the + chown/chgrp dance. + +Signed-off-by: Bernd Kuhls +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile.in +=================================================================== +--- a/Makefile.in ++++ b/Makefile.in +@@ -1853,7 +1853,7 @@ + + configparam_data.c: $(srcdir)/config.table b_sortnl$(EXEEXT) genconfigparam_data.awk + rm -f config.table.sorted +- ./b_sortnl$(EXEEXT) <$(srcdir)/config.table >config.table.sorted ++ ./b_sortnl_host$(EXEEXT) <$(srcdir)/config.table >config.table.sorted + $(AWK) -f $(srcdir)/genconfigparam_data.awk $@ \ + || { rm -f $@ ; false ; } + +@@ -1868,13 +1868,7 @@ + install-data-hook: + $(INSTALL) -d -m 02770 $(DESTDIR)$(SPOOLDIR) + $(INSTALL) -d -m 02770 $(DESTDIR)$(SPOOLDIR)/leaf.node +- -./amiroot && chown $(RUNAS_USER) $(DESTDIR)$(SPOOLDIR) +- -./amiroot && chown $(RUNAS_USER) $(DESTDIR)$(SPOOLDIR)/leaf.node +- -./amiroot && chgrp $(RUNAS_GROUP) $(DESTDIR)$(SPOOLDIR) +- -./amiroot && chgrp $(RUNAS_GROUP) $(DESTDIR)$(SPOOLDIR)/leaf.node + rm -f $(DESTDIR)$(sbindir)/leafnode-version # now in $(bindir) +- ./amiroot && p=$(DESTDIR)$(bindir)/newsq && chown 0 $$p \ +- && chgrp $(RUNAS_GROUP) $$p && chmod 2111 $$p ; true + @echo + @echo "### If upgrading from leafnode before 1.6," + @echo "### run: make update" diff --git a/buildroot/package/leafnode2/Config.in b/buildroot/package/leafnode2/Config.in new file mode 100644 index 0000000..93d3090 --- /dev/null +++ b/buildroot/package/leafnode2/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LEAFNODE2 + bool "leafnode2" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_PCRE + help + Leafnode-2 is a store-and-forward NNTP (or Usenet) proxy + server designed for small sites with just a few active + newsgroups. + + Leafnode-2 needs inetd, check chapter 14 of the documentation + at: + http://www.dt.e-technik.uni-dortmund.de/~ma/leafnode/beta/leafnode-readme.txt + + For example, you can add this line to inetd.conf: + nntp stream tcp nowait news /usr/sbin/leafnode + + http://www.dt.e-technik.tu-dortmund.de/~ma/leafnode/beta diff --git a/buildroot/package/leafnode2/leafnode2.hash b/buildroot/package/leafnode2/leafnode2.hash new file mode 100644 index 0000000..9c94fb9 --- /dev/null +++ b/buildroot/package/leafnode2/leafnode2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 34eba2cbbb871b724c8d5dd402d1c358aeb21ba426beb5658e155ed0d7461075 leafnode-2.0.0.alpha20140727b.tar.bz2 diff --git a/buildroot/package/leafnode2/leafnode2.mk b/buildroot/package/leafnode2/leafnode2.mk new file mode 100644 index 0000000..a02aad4 --- /dev/null +++ b/buildroot/package/leafnode2/leafnode2.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# leafnode2 +# +################################################################################ + +LEAFNODE2_VERSION = 2.0.0.alpha20140727b +LEAFNODE2_SOURCE = leafnode-$(LEAFNODE2_VERSION).tar.bz2 +LEAFNODE2_SITE = http://krusty.dt.e-technik.tu-dortmund.de/~ma/leafnode/beta +LEAFNODE2_LICENSE = LGPL-2.1 +LEAFNODE2_LICENSE_FILES = COPYING COPYING.LGPL +LEAFNODE2_DEPENDENCIES = host-pcre pcre + +LEAFNODE2_CONF_ENV = \ + PCRECONFIG="$(STAGING_DIR)/usr/bin/pcre-config" + +# --enable-runas-user use 'news' as default but the configure stop +# if news doesn't exist on the build host. +# Use 'root' while cross-compiling +LEAFNODE2_CONF_OPTS = \ + --sysconfdir=/etc/leafnode2 \ + --enable-spooldir=/var/spool/news \ + --enable-runas-user=root + +# Leafnode2 needs the host version of b_sortnl during +# compilation. Instead of creating a seperate host package and +# installing b_sortnl to $(HOST_DIR) this binary is compiled +# on-the-fly, host-pcre is needed for this +define LEAFNODE2_BUILD_SORTNL_TOOL + cd $(@D); \ + $(HOSTCC) $(HOST_CFLAGS) -o b_sortnl_host \ + arc4random.c mergesort.c b_sortnl.c critmem_malloc.c \ + critmem_realloc.c -DHAVE_CONFIG_H -I$(HOST_DIR)/include \ + -L $(HOST_DIR)/lib -Wl,-rpath,$(HOST_DIR)/lib -lpcre +endef + +LEAFNODE2_PRE_BUILD_HOOKS += LEAFNODE2_BUILD_SORTNL_TOOL + +define LEAFNODE2_USERS + news -1 news -1 * - - - Leafnode2 daemon +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/leafpad/Config.in b/buildroot/package/leafpad/Config.in new file mode 100644 index 0000000..a440854 --- /dev/null +++ b/buildroot/package/leafpad/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LEAFPAD + bool "leafpad" + depends on BR2_PACKAGE_LIBGTK2 + help + GTK+ based simple text editor + + http://savannah.nongnu.org/download/leafpad diff --git a/buildroot/package/leafpad/leafpad.hash b/buildroot/package/leafpad/leafpad.hash new file mode 100644 index 0000000..be56d41 --- /dev/null +++ b/buildroot/package/leafpad/leafpad.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 959d22ae07f22803bc66ff40d373a854532a6e4732680bf8a96a3fbcb9f80a2c leafpad-0.8.18.1.tar.gz diff --git a/buildroot/package/leafpad/leafpad.mk b/buildroot/package/leafpad/leafpad.mk new file mode 100644 index 0000000..c6c28d1 --- /dev/null +++ b/buildroot/package/leafpad/leafpad.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# leafpad +# +################################################################################ + +LEAFPAD_VERSION = 0.8.18.1 +LEAFPAD_SITE = http://savannah.nongnu.org/download/leafpad +LEAFPAD_DEPENDENCIES = libgtk2 host-intltool +LEAFPAD_LICENSE = GPL-2.0+ +LEAFPAD_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/lensfun/Config.in b/buildroot/package/lensfun/Config.in new file mode 100644 index 0000000..7ec4902 --- /dev/null +++ b/buildroot/package/lensfun/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_LENSFUN + bool "lensfun" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + Lensfun itself is only a library for correcting several + artefacts and a database for storing lens profiles. To + actually use Lensfun to process your images you need an + image editing application with Lensfun support. + + http://lensfun.sourceforge.net + +if BR2_PACKAGE_LENSFUN + +config BR2_PACKAGE_LENSFUN_TOOLS + bool "lensfun tools" + select BR2_PACKAGE_LIBPNG + help + Build 'lenstool'. + +endif + +comment "lensfun needs a toolchain w/ C++, threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR diff --git a/buildroot/package/lensfun/lensfun.hash b/buildroot/package/lensfun/lensfun.hash new file mode 100644 index 0000000..a60f8f4 --- /dev/null +++ b/buildroot/package/lensfun/lensfun.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/lensfun/files/0.3.2 +sha1 1d978b15aa7304d66a4931fa37ca9f8f89396c16 lensfun-0.3.2.tar.gz +md5 247e59a0812ec451f6cd0d20b3379cb5 lensfun-0.3.2.tar.gz +# Locally calculated +sha256 ae8bcad46614ca47f5bda65b00af4a257a9564a61725df9c74cb260da544d331 lensfun-0.3.2.tar.gz diff --git a/buildroot/package/lensfun/lensfun.mk b/buildroot/package/lensfun/lensfun.mk new file mode 100644 index 0000000..9258409 --- /dev/null +++ b/buildroot/package/lensfun/lensfun.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# lensfun +# +################################################################################ + +LENSFUN_VERSION = 0.3.2 +LENSFUN_SITE = https://sourceforge.net/projects/lensfun/files/$(LENSFUN_VERSION) +LENSFUN_LICENSE = LGPL-3.0+ (libraries), GPL-3.0+ (programs) +LENSFUN_LICENSE_FILES = docs/gpl-3.0.txt docs/lgpl-3.0.txt +LENSFUN_INSTALL_STAGING = YES +LENSFUN_DEPENDENCIES = libglib2 + +# lensfun doesn't support in source build, it fail to build lensfun tools. +LENSFUN_SUPPORTS_IN_SOURCE_BUILD = NO + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +LENSFUN_CONF_OPTS += -DBUILD_FOR_SSE=ON +else +LENSFUN_CONF_OPTS += -DBUILD_FOR_SSE=OFF +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +LENSFUN_CONF_OPTS += -DBUILD_FOR_SSE2=ON +else +LENSFUN_CONF_OPTS += -DBUILD_FOR_SSE2=OFF +endif + +ifeq ($(BR2_PACKAGE_LENSFUN_TOOLS),y) +LENSFUN_DEPENDENCIES += libpng +LENSFUN_CONF_OPTS += -DBUILD_LENSTOOL=ON +# broken +else +LENSFUN_CONF_OPTS += -DBUILD_LENSTOOL=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +LENSFUN_CONF_OPTS += -DBUILD_STATIC=ON +else +LENSFUN_CONF_OPTS += -DBUILD_STATIC=OFF +endif + +# Don't install helper scripts (which require python3 and gksudo). +# Don't run setup.py on the host. +LENSFUN_CONF_OPTS += -DINSTALL_HELPER_SCRIPTS=OFF -DPYTHON=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/leptonica/Config.in b/buildroot/package/leptonica/Config.in new file mode 100644 index 0000000..ec4920c --- /dev/null +++ b/buildroot/package/leptonica/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LEPTONICA + bool "leptonica" + help + Leptonica is an image processing and image analysis library. + + http://www.leptonica.org/ diff --git a/buildroot/package/leptonica/leptonica.hash b/buildroot/package/leptonica/leptonica.hash new file mode 100644 index 0000000..f67f2b8 --- /dev/null +++ b/buildroot/package/leptonica/leptonica.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 29c35426a416bf454413c6fec24c24a0b633e26144a17e98351b6dffaa4a833b leptonica-1.74.4.tar.gz diff --git a/buildroot/package/leptonica/leptonica.mk b/buildroot/package/leptonica/leptonica.mk new file mode 100644 index 0000000..6a958a3 --- /dev/null +++ b/buildroot/package/leptonica/leptonica.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# leptonica +# +################################################################################ + +LEPTONICA_VERSION = 1.74.4 +LEPTONICA_SITE = http://www.leptonica.org/source +LEPTONICA_LICENSE = BSD-2-Clause +LEPTONICA_LICENSE_FILES = leptonica-license.txt +LEPTONICA_INSTALL_STAGING = YES +LEPTONICA_DEPENDENCIES = host-pkgconf + +LEPTONICA_CONF_OPTS += --disable-programs + +ifeq ($(BR2_PACKAGE_GIFLIB),y) +LEPTONICA_DEPENDENCIES += giflib +LEPTONICA_CONF_OPTS += --with-giflib +else +LEPTONICA_CONF_OPTS += --without-giflib +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LEPTONICA_DEPENDENCIES += jpeg +LEPTONICA_CONF_OPTS += --with-jpeg +else +LEPTONICA_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LEPTONICA_DEPENDENCIES += libpng +LEPTONICA_CONF_OPTS += --with-libpng +else +LEPTONICA_CONF_OPTS += --without-libpng +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +LEPTONICA_DEPENDENCIES += openjpeg +LEPTONICA_CONF_OPTS += --with-libopenjpeg +else +LEPTONICA_CONF_OPTS += --without-libopenjpeg +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +LEPTONICA_DEPENDENCIES += tiff +LEPTONICA_CONF_OPTS += --with-libtiff +else +LEPTONICA_CONF_OPTS += --without-libtiff +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +LEPTONICA_DEPENDENCIES += webp +LEPTONICA_CONF_OPTS += --with-libwebp +else +LEPTONICA_CONF_OPTS += --without-libwebp +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LEPTONICA_DEPENDENCIES += zlib +LEPTONICA_CONF_OPTS += --with-zlib +else +LEPTONICA_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/less/Config.in b/buildroot/package/less/Config.in new file mode 100644 index 0000000..caf688a --- /dev/null +++ b/buildroot/package/less/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LESS + bool "less" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + help + Excellent text file viewer. + + http://www.greenwoodsoftware.com/ diff --git a/buildroot/package/less/less.hash b/buildroot/package/less/less.hash new file mode 100644 index 0000000..3a6c799 --- /dev/null +++ b/buildroot/package/less/less.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 f3dc8455cb0b2b66e0c6b816c00197a71bf6d1787078adeee0bcf2aea4b12706 less-487.tar.gz diff --git a/buildroot/package/less/less.mk b/buildroot/package/less/less.mk new file mode 100644 index 0000000..bccc08b --- /dev/null +++ b/buildroot/package/less/less.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# less +# +################################################################################ + +LESS_VERSION = 487 +LESS_SITE = $(BR2_GNU_MIRROR)/less +LESS_LICENSE = GPL-3.0+ +LESS_LICENSE_FILES = COPYING +# Build after busybox, full-blown is better +LESS_DEPENDENCIES = ncurses $(if $(BR2_PACKAGE_BUSYBOX),busybox) + +define LESS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/less $(TARGET_DIR)/usr/bin/less +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/lesstif/Config.in b/buildroot/package/lesstif/Config.in new file mode 100644 index 0000000..654ee6f --- /dev/null +++ b/buildroot/package/lesstif/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LESSTIF + bool "lesstif" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_FREETYPE + help + lesstif is the Hungry Programmers' version of OSF/Motif + + http://lesstif.sourceforge.net/ diff --git a/buildroot/package/lesstif/lesstif.hash b/buildroot/package/lesstif/lesstif.hash new file mode 100644 index 0000000..c2ede8b --- /dev/null +++ b/buildroot/package/lesstif/lesstif.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 eb4aa38858c29a4a3bcf605cfe7d91ca41f4522d78d770f69721e6e3a4ecf7e3 lesstif-0.95.2.tar.bz2 diff --git a/buildroot/package/lesstif/lesstif.mk b/buildroot/package/lesstif/lesstif.mk new file mode 100644 index 0000000..378c594 --- /dev/null +++ b/buildroot/package/lesstif/lesstif.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# lesstif +# +################################################################################ + +LESSTIF_VERSION = 0.95.2 +LESSTIF_SOURCE = lesstif-$(LESSTIF_VERSION).tar.bz2 +LESSTIF_SITE = http://downloads.sourceforge.net/project/lesstif/lesstif/$(LESSTIF_VERSION) +LESSTIF_INSTALL_STAGING = YES +LESSTIF_DEPENDENCIES = \ + xlib_libXt \ + xlib_libXext \ + freetype +LESSTIF_LICENSE = LGPL-2.0+ +LESSTIF_LICENSE_FILES = COPYING.LIB +LESSTIF_CONF_OPTS = \ + --with-gnu-ld \ + --with-freetype-config=$(STAGING_DIR)/usr/bin/freetype-config \ + --enable-production=yes \ + --enable-build-tests=no \ + --no-recursion + +# Reduces the buggy makefile to the smallest possible (and working) thing +define LESSTIF_NOMAN2HTML + echo "all:" > $(@D)/doc/Makefile + echo "" >> $(@D)/doc/Makefile + echo "install:" >> $(@D)/doc/Makefile + echo "" >> $(@D)/doc/Makefile + echo "clean:" >> $(@D)/doc/Makefile +endef + +# Prevents to copy ac_find_motif.m4 on target, it would else +# be created at $(TARGET_DIR)/$(HOST_DIR)/share/aclocal/ac_find_motif.m4 +define LESSTIF_FIXACLOCAL + sed -i -e "/install-data-am: install-aclocalDATA/d" $(@D)/scripts/autoconf/Makefile +endef + +LESSTIF_POST_CONFIGURE_HOOKS += LESSTIF_NOMAN2HTML +LESSTIF_POST_CONFIGURE_HOOKS += LESSTIF_FIXACLOCAL + +$(eval $(autotools-package)) diff --git a/buildroot/package/let-me-create/0001-fix-build-with-musl-C-library.patch b/buildroot/package/let-me-create/0001-fix-build-with-musl-C-library.patch new file mode 100644 index 0000000..90a7246 --- /dev/null +++ b/buildroot/package/let-me-create/0001-fix-build-with-musl-C-library.patch @@ -0,0 +1,38 @@ +From 93fbc53a727a49dd5061e44e3156ff2044e6e0b5 Mon Sep 17 00:00:00 2001 +From: Rahul Bedarkar +Date: Tue, 1 Aug 2017 22:44:22 +0530 +Subject: [PATCH] fix build with musl C library + +With musl C library, we get following build error: + +/home/buildroot/autobuild/run/instance-3/output/build/let-me-create-v1.5.2/src/core/spi.c: In function 'spi_transfer': +/home/buildroot/autobuild/run/instance-3/output/build/let-me-create-v1.5.2/src/core/spi.c:170:19: error: '_IOC_SIZEBITS' undeclared (first use in this function) +if (ioctl(fd, SPI_IOC_MESSAGE(1), &tr) < 0) { +^ +/home/buildroot/autobuild/run/instance-3/output/build/let-me-create-v1.5.2/src/core/spi.c:170:19: note: each undeclared identifier is reported only once for each function it appears in + +Include for musl C library compatibility. + +This build issue is detected by Buildroot autobuilder: +http://autobuild.buildroot.net/results/af9/af946fa6fe05ee265e4ac97742b15afeb0cea1ab/ + +Signed-off-by: Rahul Bedarkar rahulbedarkar89@gmail.com +--- +Upstream status: https://github.com/CreatorDev/LetMeCreate/pull/29 + + src/core/spi.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/core/spi.c b/src/core/spi.c +index 4d55cee..9ec7ea9 100644 +--- a/src/core/spi.c ++++ b/src/core/spi.c +@@ -1,4 +1,5 @@ + #include ++#include + #include + #include + #include +-- +2.7.4 + diff --git a/buildroot/package/let-me-create/Config.in b/buildroot/package/let-me-create/Config.in new file mode 100644 index 0000000..b0fdc73 --- /dev/null +++ b/buildroot/package/let-me-create/Config.in @@ -0,0 +1,27 @@ +comment "let-me-create needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS + +config BR2_PACKAGE_LET_ME_CREATE + bool "let-me-create" + # build issues in static libs configuration + # see https://github.com/CreatorDev/LetMeCreate/issues/28 + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + This library is collection of small wrappers for some + interfaces on the Creator Ci40 board. It aims at making + easier to develop on this platform. It also provides + wrappers for a few clicks. + + https://github.com/CreatorDev/LetMeCreate + +if BR2_PACKAGE_LET_ME_CREATE + +config BR2_PACKAGE_LET_ME_CREATE_EXAMPLES + bool "Build and install examples" + help + Build and install examples + +endif diff --git a/buildroot/package/let-me-create/let-me-create.hash b/buildroot/package/let-me-create/let-me-create.hash new file mode 100644 index 0000000..45b5e55 --- /dev/null +++ b/buildroot/package/let-me-create/let-me-create.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 5f42858a2062f34d2578e9cb1aed3ccb8d2409d908aa4c41a924418666d5f2bd let-me-create-v1.5.2.tar.gz diff --git a/buildroot/package/let-me-create/let-me-create.mk b/buildroot/package/let-me-create/let-me-create.mk new file mode 100644 index 0000000..2dd07ef --- /dev/null +++ b/buildroot/package/let-me-create/let-me-create.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# LetMeCreate +# +################################################################################ + +LET_ME_CREATE_VERSION = v1.5.2 +LET_ME_CREATE_SITE = $(call github,CreatorDev,LetMeCreate,$(LET_ME_CREATE_VERSION)) +LET_ME_CREATE_INSTALL_STAGING = YES +LET_ME_CREATE_LICENSE = BSD-3-Clause +LET_ME_CREATE_LICENSE_FILES = LICENSE + +# pure static build not supported +ifeq ($(BR2_SHARED_LIBS),y) +LET_ME_CREATE_CONF_OPTS += -DBUILD_STATIC=OFF -DBUILD_SHARED=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LET_ME_CREATE_CONF_OPTS += -DBUILD_STATIC=ON -DBUILD_SHARED=ON +endif + +ifeq ($(BR2_PACKAGE_LET_ME_CREATE_EXAMPLES),y) +LET_ME_CREATE_CONF_OPTS += -DBUILD_EXAMPLES=ON +else +LET_ME_CREATE_CONF_OPTS += -DBUILD_EXAMPLES=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/leveldb/0001-Fix-compilation-with-g-4.8.2.patch b/buildroot/package/leveldb/0001-Fix-compilation-with-g-4.8.2.patch new file mode 100644 index 0000000..f392160 --- /dev/null +++ b/buildroot/package/leveldb/0001-Fix-compilation-with-g-4.8.2.patch @@ -0,0 +1,31 @@ +From 8a8016f6d2af335ab205aa40d5274fc9b0c7a566 Mon Sep 17 00:00:00 2001 +From: Steve James +Date: Sun, 5 Apr 2015 16:29:51 +0200 +Subject: [PATCH 1/2] Fix compilation with g++ 4.8.2 + +Where db_iter.cc fails to get a typedef for ssize_t when compiled by +GCC. + +Upstream-Status: Submitted [https://github.com/google/leveldb/issues/233] + +Signed-off-by: Steve James +Signed-off-by: Thomas Petazzoni +--- + db/db_iter.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/db/db_iter.cc b/db/db_iter.cc +index 3b2035e..c2e5f35 100644 +--- a/db/db_iter.cc ++++ b/db/db_iter.cc +@@ -13,6 +13,7 @@ + #include "util/logging.h" + #include "util/mutexlock.h" + #include "util/random.h" ++#include // for ssize_t + + namespace leveldb { + +-- +2.1.0 + diff --git a/buildroot/package/leveldb/0002-Add-install-recipe.patch b/buildroot/package/leveldb/0002-Add-install-recipe.patch new file mode 100644 index 0000000..29bf4a4 --- /dev/null +++ b/buildroot/package/leveldb/0002-Add-install-recipe.patch @@ -0,0 +1,42 @@ +From bf646b73391d3d2d0b9780a399dd24880c66b9ab Mon Sep 17 00:00:00 2001 +From: Steve James +Date: Sun, 5 Apr 2015 16:30:46 +0200 +Subject: [PATCH 2/2] Add install recipe + +Upstream-Status: Rejected [https://github.com/google/leveldb/pull/276] + +Signed-off-by: Steve James +Signed-off-by: Thomas Petazzoni +[baruch: update for v1.19] +Signed-off-by: Baruch Siach +[Bernd: update for v1.20] +Signed-off-by: Bernd Kuhls +--- + Makefile | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/Makefile b/Makefile +index 07a5a1ead6fd..c87023db527a 100644 +--- a/Makefile ++++ b/Makefile +@@ -412,3 +412,17 @@ $(SHARED_OUTDIR)/%.o: %.cc + + $(SHARED_OUTDIR)/port/port_posix_sse.o: port/port_posix_sse.cc + $(CXX) $(CXXFLAGS) $(PLATFORM_SHARED_CFLAGS) $(PLATFORM_SSEFLAGS) -c $< -o $@ ++ ++INSTALL_ROOT = / ++INSTALL_PREFIX= usr/local ++ ++install: all ++ install -d -m 0755 $(INSTALL_ROOT)$(INSTALL_PREFIX)/include/leveldb ++ install -D -m 0644 include/leveldb/*.h $(INSTALL_ROOT)$(INSTALL_PREFIX)/include/leveldb ++ install -d -m 0755 $(INSTALL_ROOT)$(INSTALL_PREFIX)/lib ++ install -m 0644 $(STATIC_OUTDIR)/libleveldb.a $(INSTALL_ROOT)$(INSTALL_PREFIX)/lib ++ifneq (,$(SHARED_LIBS)) ++ install -m 0755 $(SHARED_OUTDIR)/$(SHARED_LIB3) $(INSTALL_ROOT)$(INSTALL_PREFIX)/lib ++ ln -sf $(SHARED_LIB3) $(INSTALL_ROOT)$(INSTALL_PREFIX)/lib/$(SHARED_LIB1) ++ ln -sf $(SHARED_LIB3) $(INSTALL_ROOT)$(INSTALL_PREFIX)/lib/$(SHARED_LIB2) ++endif +-- +2.1.0 + diff --git a/buildroot/package/leveldb/Config.in b/buildroot/package/leveldb/Config.in new file mode 100644 index 0000000..c44ef13 --- /dev/null +++ b/buildroot/package/leveldb/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LEVELDB + bool "leveldb" + # Missing/broken atomic pointer support + depends on !BR2_bfin + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_SNAPPY + help + LevelDB is a fast key-value storage library written at Google + that provides an ordered mapping from string keys to string + values. + + https://github.com/google/leveldb + +comment "leveldb needs a toolchain w/ C++, threads" + depends on !BR2_bfin + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/leveldb/leveldb.hash b/buildroot/package/leveldb/leveldb.hash new file mode 100644 index 0000000..a5300d7 --- /dev/null +++ b/buildroot/package/leveldb/leveldb.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f5abe8b5b209c2f36560b75f32ce61412f39a2922f7045ae764a2c23335b6664 leveldb-v1.20.tar.gz diff --git a/buildroot/package/leveldb/leveldb.mk b/buildroot/package/leveldb/leveldb.mk new file mode 100644 index 0000000..54942a0 --- /dev/null +++ b/buildroot/package/leveldb/leveldb.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# leveldb +# +################################################################################ + +LEVELDB_VERSION = v1.20 +LEVELDB_SITE = $(call github,google,leveldb,$(LEVELDB_VERSION)) +LEVELDB_LICENSE = BSD-3-Clause +LEVELDB_LICENSE_FILES = LICENSE +LEVELDB_INSTALL_STAGING = YES +LEVELDB_DEPENDENCIES = snappy + +# Disable the shared library for static only build +ifeq ($(BR2_STATIC_LIBS),y) +LEVELDB_MAKE_ARGS += SHARED_LIBS= SHARED_PROGRAMS= +endif + +define LEVELDB_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + $(LEVELDB_MAKE_ARGS) -C $(@D) +endef + +define LEVELDB_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + INSTALL_ROOT=$(STAGING_DIR) INSTALL_PREFIX=/usr \ + $(LEVELDB_MAKE_ARGS) -C $(@D) install +endef + +define LEVELDB_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + INSTALL_ROOT=$(TARGET_DIR) INSTALL_PREFIX=/usr \ + $(LEVELDB_MAKE_ARGS) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/lft/Config.in b/buildroot/package/lft/Config.in new file mode 100644 index 0000000..9ed7b8b --- /dev/null +++ b/buildroot/package/lft/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LFT + bool "lft" + select BR2_PACKAGE_LIBPCAP + help + LFT, short for Layer Four Traceroute, is a sort of + 'traceroute' that often works much faster (than the + commonly-used Van Jacobson method) and goes through many + configurations of packet-filters (firewalls). + + http://pwhois.org/lft/ diff --git a/buildroot/package/lft/lft.hash b/buildroot/package/lft/lft.hash new file mode 100644 index 0000000..1b0454c --- /dev/null +++ b/buildroot/package/lft/lft.hash @@ -0,0 +1,4 @@ +# From http://pwhois.org/lft/ +md5 746dc08f2e20d0e0240f28873b3bb244 lft-3.79.tar.gz +# Locally calculated +sha256 08e5c7973551b529c850bffbc7152c4e5f0bcb1f07ebbb39151a7dc9a3bf9de0 lft-3.79.tar.gz diff --git a/buildroot/package/lft/lft.mk b/buildroot/package/lft/lft.mk new file mode 100644 index 0000000..0555ab9 --- /dev/null +++ b/buildroot/package/lft/lft.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# lft +# +################################################################################ + +LFT_VERSION = 3.79 +LFT_SITE = http://pwhois.org/get +LFT_DEPENDENCIES = libpcap +LFT_LICENSE = VOSTROM Public License for Open Source +LFT_LICENSE_FILES = COPYING +LFT_CONF_OPTS = --with-pcap=$(STAGING_DIR)/usr +LFT_MAKE_ENV = STRIP=true + +ifeq ($(BR2_STATIC_LIBS),y) +LFT_CONF_OPTS += LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/lftp/0001-fix-static-link-with-readline.patch b/buildroot/package/lftp/0001-fix-static-link-with-readline.patch new file mode 100644 index 0000000..3392396 --- /dev/null +++ b/buildroot/package/lftp/0001-fix-static-link-with-readline.patch @@ -0,0 +1,40 @@ +fix static link with readline + +When readline is static library, we need to link against ncurses +because readline needs ncurses. It is because, dependent library's +symbols are not resolved when static library is built. Those symbols +are resolved program tries to link with static library. + +We can't pass linker flags for ncurses by setting LIBS environment +variable via _CONF_ENV because it looks like build system is not +taking that into account and even though it would have been, order of +linking is important. + +We can't also pass linker flags for ncurses via --with-readline-libs +conf options because it causes lftp_LIB_READLINE macro to take readline +headers from host machine if available. To use --with-readline-libs +we need to set --with-readline=yes and --with-readline-inc to include +dir. But when --with-readline=yes, readline_prefix is computed based +on if headers can be found in /usr/local or /usr. If readline is +installed on host machine, then configure fails since we are using +headers for host machine. If headers are not found in /usr/local or /usr +then only path specified --with-readline-inc is taken into account. +So specifying linker flags for ncurses via --with-readline-libs will +not work in all cases. + +So it looks like, updating linker flags directly is only option to fix +static link issue against readline. + +Signed-off-by: Rahul Bedarkar + +--- lftp-4.7.3/m4/lftp_lib_readline.m4.old 2016-08-08 19:49:12.217596470 +0530 ++++ lftp-4.7.3/m4/lftp_lib_readline.m4 2016-08-08 19:49:46.265596398 +0530 +@@ -108,7 +108,7 @@ AC_DEFUN([lftp_LIB_READLINE], + readline_include_dir="$readline_include_dir/readline" + fi + readline_ld_flags="-L$readline_prefix/lib" +- readline_lib_flags="-lreadline" ++ readline_lib_flags="-lreadline -lncurses" + run_readline_test="yes" + elif test "$readline_requested" = "yes"; then + if test -n "$readline_include_dir" -a -n "$readline_lib_flags"; then diff --git a/buildroot/package/lftp/0002-fix-gcc-6-conflicts-signbit.patch b/buildroot/package/lftp/0002-fix-gcc-6-conflicts-signbit.patch new file mode 100644 index 0000000..e906c7a --- /dev/null +++ b/buildroot/package/lftp/0002-fix-gcc-6-conflicts-signbit.patch @@ -0,0 +1,57 @@ +Use instead of to fix gcc 6.x build + +This patch fixes the following build issue: + +../lib/math.h:2577:1: error: ‘int signbit(float)’ conflicts with a previous declaration + +that occurs with gcc 6.x. + +Patch taken from +https://raw.githubusercontent.com/openembedded/meta-openembedded/master/meta-networking/recipes-connectivity/lftp/files/fix-gcc-6-conflicts-signbit.patch + +Signed-off-by: Thomas Petazzoni + +--- lftp-4.6.3a/src/NetAccess.cc.orig 2016-06-18 10:25:51.063358981 -0400 ++++ lftp-4.6.3a/src/NetAccess.cc 2016-06-18 10:26:04.143359209 -0400 +@@ -21,7 +21,7 @@ + + #include + #include +-#include ++#include + #include + + #include "NetAccess.h" +--- lftp-4.6.3a/src/Speedometer.cc.orig 2016-06-18 10:24:58.895358073 -0400 ++++ lftp-4.6.3a/src/Speedometer.cc 2016-06-18 10:25:10.879358281 -0400 +@@ -18,7 +18,7 @@ + */ + + #include +-#include ++#include + #include + #include "Speedometer.h" + #include "misc.h" +--- lftp-4.6.3a/src/FileCopy.cc.orig 2016-06-18 10:24:15.939357325 -0400 ++++ lftp-4.6.3a/src/FileCopy.cc 2016-06-18 10:24:24.583357475 -0400 +@@ -36,7 +36,7 @@ + #include + #include + #include +-#include ++#include + #include + #include "FileCopy.h" + #include "url.h" +--- lftp-4.6.3a/src/ResMgr.cc.orig 2016-06-18 10:23:31.387356549 -0400 ++++ lftp-4.6.3a/src/ResMgr.cc 2016-06-18 10:23:41.771356729 -0400 +@@ -23,7 +23,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include diff --git a/buildroot/package/lftp/Config.in b/buildroot/package/lftp/Config.in new file mode 100644 index 0000000..ebe8882 --- /dev/null +++ b/buildroot/package/lftp/Config.in @@ -0,0 +1,67 @@ +config BR2_PACKAGE_LFTP + bool "lftp" + depends on BR2_USE_WCHAR + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS + help + LFTP is a sophisticated ftp/http client, and a file transfer + program supporting a number of network protocols. Like BASH, + it has job control and uses the readline library for input. It + has bookmarks, a built-in mirror command, and can transfer + several files in parallel. + It was designed with reliability in mind. + + http://lftp.yar.ru/ + +if BR2_PACKAGE_LFTP + +comment "Commands" + +config BR2_PACKAGE_LFTP_CMD_MIRROR + bool "Mirror command" + default y + help + Enable mirror command + +config BR2_PACKAGE_LFTP_CMD_SLEEP + bool "Sleep command" + default y + help + Enable sleep command + +config BR2_PACKAGE_LFTP_CMD_TORRENT + bool "Torrent command" + help + Enable torrent command + +comment "Protocols" + +config BR2_PACKAGE_LFTP_PROTO_FISH + bool "FISH protocol" + help + Enable FISH protocol + +config BR2_PACKAGE_LFTP_PROTO_FTP + bool "FTP protocol" + default y + help + Enable FTP protocol + +config BR2_PACKAGE_LFTP_PROTO_HTTP + bool "HTTP protocol" + help + Enable HTTP protocol + +config BR2_PACKAGE_LFTP_PROTO_SFTP + bool "SFTP protocol" + help + Enable SFTP protocol + +endif # BR2_PACKAGE_LFTP + +comment "lftp requires a toolchain w/ C++, wchar" + depends on BR2_USE_MMU + depends on !(BR2_USE_WCHAR && BR2_INSTALL_LIBSTDCPP) diff --git a/buildroot/package/lftp/lftp.hash b/buildroot/package/lftp/lftp.hash new file mode 100644 index 0000000..99dd994 --- /dev/null +++ b/buildroot/package/lftp/lftp.hash @@ -0,0 +1,4 @@ +# From http://lftp.yar.ru/ftp/lftp-4.8.0.md5sum +md5 468558412ad3575ef8e98547c41339f4 lftp-4.8.0.tar.xz +# Locally calculated after checking gpg signature +sha256 7a2880968088b4aeec43b6b6680fef0e065e1dddcce9b409390157e9766b690f lftp-4.8.0.tar.xz diff --git a/buildroot/package/lftp/lftp.mk b/buildroot/package/lftp/lftp.mk new file mode 100644 index 0000000..b174057 --- /dev/null +++ b/buildroot/package/lftp/lftp.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# lftp +# +################################################################################ + +LFTP_VERSION = 4.8.0 +LFTP_SOURCE = lftp-$(LFTP_VERSION).tar.xz +LFTP_SITE = http://lftp.yar.ru/ftp +LFTP_LICENSE = GPL-3.0+ +LFTP_LICENSE_FILES = COPYING +# Needed so that our libtool patch applies properly, and for patch +# 0001-fix-static-link-with-readline.patch. +LFTP_AUTORECONF = YES +LFTP_DEPENDENCIES = readline zlib host-pkgconf + +# Help lftp finding readline and zlib +LFTP_CONF_OPTS = \ + --with-readline=$(STAGING_DIR)/usr \ + --with-zlib=$(STAGING_DIR)/usr + +ifneq ($(BR2_STATIC_LIBS),y) +LFTP_CONF_OPTS += --with-modules +endif + +ifeq ($(BR2_PACKAGE_EXPAT)$(BR2_PACKAGE_LFTP_PROTO_HTTP),yy) +LFTP_DEPENDENCIES += expat +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +LFTP_DEPENDENCIES += gnutls +LFTP_CONF_OPTS += --with-gnutls +else +LFTP_CONF_OPTS += --without-gnutls +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LFTP_DEPENDENCIES += openssl +LFTP_CONF_OPTS += --with-openssl +else +LFTP_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +LFTP_DEPENDENCIES += libidn +LFTP_CONF_OPTS += --with-libidn=$(STAGING_DIR)/usr +else +LFTP_CONF_OPTS += --without-libidn +endif + +# Remove /usr/share/lftp +define LFTP_REMOVE_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/lftp +endef + +LFTP_POST_INSTALL_TARGET_HOOKS += LFTP_REMOVE_DATA + +# Optional commands and protocols +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_MIRROR) += cmd-mirror.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_SLEEP) += cmd-sleep.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_CMD_TORRENT) += cmd-torrent.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_FISH) += proto-fish.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_FTP) += proto-ftp.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_HTTP) += proto-http.so +LFTP_MODULES_TO_REMOVE-$(BR2_PACKAGE_LFTP_PROTO_SFTP) += proto-sftp.so + +define LFTP_REMOVE_MODULES + for f in $(LFTP_MODULES_TO_REMOVE-) ; do \ + $(RM) -f $(TARGET_DIR)/usr/lib/lftp/$(LFTP_VERSION)/$$f ; \ + done +endef + +LFTP_POST_INSTALL_TARGET_HOOKS += LFTP_REMOVE_MODULES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libaacs/Config.in b/buildroot/package/libaacs/Config.in new file mode 100644 index 0000000..d59b6da --- /dev/null +++ b/buildroot/package/libaacs/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBAACS + bool "libaacs" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBGCRYPT + help + libaacs is a research project to implement the Advanced Access + Content System specification. + NB: this project doesn't offer any key or certificate that + could be used to decode encrypted copyrighted material. + + http://www.videolan.org/developers/libaacs.html + +comment "libaacs needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libaacs/libaacs.hash b/buildroot/package/libaacs/libaacs.hash new file mode 100644 index 0000000..84947e0 --- /dev/null +++ b/buildroot/package/libaacs/libaacs.hash @@ -0,0 +1,2 @@ +# From http://download.videolan.org/pub/videolan/libaacs/0.9.0/libaacs-0.9.0.tar.bz2.sha512 +sha512 b9c658db22a0966486070d3b762509a7c0120469ab29d1e57c1b624cad309701de8b92455ec649db4d731be4a5c29c38fb4f99bb7617dbb4254270284a1903f6 libaacs-0.9.0.tar.bz2 diff --git a/buildroot/package/libaacs/libaacs.mk b/buildroot/package/libaacs/libaacs.mk new file mode 100644 index 0000000..143b0ff --- /dev/null +++ b/buildroot/package/libaacs/libaacs.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libaacs +# +################################################################################ + +LIBAACS_VERSION = 0.9.0 +LIBAACS_SITE = http://download.videolan.org/pub/videolan/libaacs/$(LIBAACS_VERSION) +LIBAACS_SOURCE = libaacs-$(LIBAACS_VERSION).tar.bz2 +LIBAACS_LICENSE = LGPL-2.1+ +LIBAACS_LICENSE_FILES = COPYING +LIBAACS_INSTALL_STAGING = YES +LIBAACS_DEPENDENCIES = host-bison host-flex libgcrypt +LIBAACS_CONF_OPTS = \ + --disable-werror \ + --disable-extra-warnings \ + --disable-optimizations \ + --disable-examples \ + --disable-debug \ + --with-gnu-ld \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr \ + --with-gpg-error-prefix=$(STAGING_DIR)/usr + +$(eval $(autotools-package)) diff --git a/buildroot/package/libaio/0001-arches.patch b/buildroot/package/libaio/0001-arches.patch new file mode 100644 index 0000000..4b77f57 --- /dev/null +++ b/buildroot/package/libaio/0001-arches.patch @@ -0,0 +1,249 @@ +Patch borrowed from OpenEmbedded, available at +/meta/recipes-extended/libaio/libaio/00_arches.patch in their source +tree. This patch has been modified to only add the MIPS definitions. + +The patch adds MIPS specific definitions (syscall number and macros). + +Signed-off-by: Alistair Francis + +Index: libaio-0.3.110/src/syscall.h +=================================================================== +--- libaio-0.3.110.orig/src/syscall.h ++++ libaio-0.3.110/src/syscall.h +@@ -28,6 +28,8 @@ + #include "syscall-sparc.h" + #elif defined(__aarch64__) + #include "syscall-arm64.h" ++#elif defined(__mips__) ++#include "syscall-mips.h" + #else + #warning "using generic syscall method" + #include "syscall-generic.h" +Index: libaio-0.3.110/src/syscall-mips.h +=================================================================== +--- /dev/null ++++ libaio-0.3.110/src/syscall-mips.h +@@ -0,0 +1,223 @@ ++/* ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file "COPYING" in the main directory of this archive ++ * for more details. ++ * ++ * Copyright (C) 1995, 96, 97, 98, 99, 2000 by Ralf Baechle ++ * Copyright (C) 1999, 2000 Silicon Graphics, Inc. ++ * ++ * Changed system calls macros _syscall5 - _syscall7 to push args 5 to 7 onto ++ * the stack. Robin Farine for ACN S.A, Copyright (C) 1996 by ACN S.A ++ */ ++ ++#ifndef _MIPS_SIM_ABI32 ++#define _MIPS_SIM_ABI32 1 ++#define _MIPS_SIM_NABI32 2 ++#define _MIPS_SIM_ABI64 3 ++#endif ++ ++#if _MIPS_SIM == _MIPS_SIM_ABI32 ++ ++/* ++ * Linux o32 style syscalls are in the range from 4000 to 4999. ++ */ ++#define __NR_Linux 4000 ++#define __NR_io_setup (__NR_Linux + 241) ++#define __NR_io_destroy (__NR_Linux + 242) ++#define __NR_io_getevents (__NR_Linux + 243) ++#define __NR_io_submit (__NR_Linux + 244) ++#define __NR_io_cancel (__NR_Linux + 245) ++ ++#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ ++ ++#if _MIPS_SIM == _MIPS_SIM_ABI64 ++ ++/* ++ * Linux 64-bit syscalls are in the range from 5000 to 5999. ++ */ ++#define __NR_Linux 5000 ++#define __NR_io_setup (__NR_Linux + 200) ++#define __NR_io_destroy (__NR_Linux + 201) ++#define __NR_io_getevents (__NR_Linux + 202) ++#define __NR_io_submit (__NR_Linux + 203) ++#define __NR_io_cancel (__NR_Linux + 204) ++#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ ++ ++#if _MIPS_SIM == _MIPS_SIM_NABI32 ++ ++/* ++ * Linux N32 syscalls are in the range from 6000 to 6999. ++ */ ++#define __NR_Linux 6000 ++#define __NR_io_setup (__NR_Linux + 200) ++#define __NR_io_destroy (__NR_Linux + 201) ++#define __NR_io_getevents (__NR_Linux + 202) ++#define __NR_io_submit (__NR_Linux + 203) ++#define __NR_io_cancel (__NR_Linux + 204) ++#endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ ++ ++#define io_syscall1(type,fname,sname,atype,a) \ ++type fname(atype a) \ ++{ \ ++ register unsigned long __a0 asm("$4") = (unsigned long) a; \ ++ register unsigned long __a3 asm("$7"); \ ++ unsigned long __v0; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "li\t$2, %3\t\t\t# " #fname "\n\t" \ ++ "syscall\n\t" \ ++ "move\t%0, $2\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "=r" (__a3) \ ++ : "r" (__a0), "i" (__NR_##sname) \ ++ : "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", \ ++ "memory"); \ ++ \ ++ if (__a3 == 0) \ ++ return (type) __v0; \ ++ return (type) -1; \ ++} ++ ++#define io_syscall2(type,fname,sname,atype,a,btype,b) \ ++type fname(atype a, btype b) \ ++{ \ ++ register unsigned long __a0 asm("$4") = (unsigned long) a; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) b; \ ++ register unsigned long __a3 asm("$7"); \ ++ unsigned long __v0; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "li\t$2, %4\t\t\t# " #fname "\n\t" \ ++ "syscall\n\t" \ ++ "move\t%0, $2\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "=r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "i" (__NR_##sname) \ ++ : "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", \ ++ "memory"); \ ++ \ ++ if (__a3 == 0) \ ++ return (type) __v0; \ ++ return (type) -1; \ ++} ++ ++#define io_syscall3(type,fname,sname,atype,a,btype,b,ctype,c) \ ++type fname(atype a, btype b, ctype c) \ ++{ \ ++ register unsigned long __a0 asm("$4") = (unsigned long) a; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) b; \ ++ register unsigned long __a2 asm("$6") = (unsigned long) c; \ ++ register unsigned long __a3 asm("$7"); \ ++ unsigned long __v0; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "li\t$2, %5\t\t\t# " #fname "\n\t" \ ++ "syscall\n\t" \ ++ "move\t%0, $2\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "=r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (__NR_##sname) \ ++ : "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", \ ++ "memory"); \ ++ \ ++ if (__a3 == 0) \ ++ return (type) __v0; \ ++ return (type) -1; \ ++} ++ ++#define io_syscall4(type,fname,sname,atype,a,btype,b,ctype,c,dtype,d) \ ++type fname(atype a, btype b, ctype c, dtype d) \ ++{ \ ++ register unsigned long __a0 asm("$4") = (unsigned long) a; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) b; \ ++ register unsigned long __a2 asm("$6") = (unsigned long) c; \ ++ register unsigned long __a3 asm("$7") = (unsigned long) d; \ ++ unsigned long __v0; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "li\t$2, %5\t\t\t# " #fname "\n\t" \ ++ "syscall\n\t" \ ++ "move\t%0, $2\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "+r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (__NR_##sname) \ ++ : "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", \ ++ "memory"); \ ++ \ ++ if (__a3 == 0) \ ++ return (type) __v0; \ ++ return (type) -1; \ ++} ++ ++#if (_MIPS_SIM == _MIPS_SIM_ABI32) ++ ++/* ++ * Using those means your brain needs more than an oil change ;-) ++ */ ++ ++#define io_syscall5(type,fname,sname,atype,a,btype,b,ctype,c,dtype,d,etype,e) \ ++type fname(atype a, btype b, ctype c, dtype d, etype e) \ ++{ \ ++ register unsigned long __a0 asm("$4") = (unsigned long) a; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) b; \ ++ register unsigned long __a2 asm("$6") = (unsigned long) c; \ ++ register unsigned long __a3 asm("$7") = (unsigned long) d; \ ++ unsigned long __v0; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "lw\t$2, %6\n\t" \ ++ "subu\t$29, 32\n\t" \ ++ "sw\t$2, 16($29)\n\t" \ ++ "li\t$2, %5\t\t\t# " #fname "\n\t" \ ++ "syscall\n\t" \ ++ "move\t%0, $2\n\t" \ ++ "addiu\t$29, 32\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "+r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "r" (__a2), "i" (__NR_##sname), \ ++ "m" ((unsigned long)e) \ ++ : "$2", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", \ ++ "memory"); \ ++ \ ++ if (__a3 == 0) \ ++ return (type) __v0; \ ++ return (type) -1; \ ++} ++ ++#endif /* (_MIPS_SIM == _MIPS_SIM_ABI32) */ ++ ++#if (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64) ++ ++#define io_syscall5(type,fname,sname,atype,a,btype,b,ctype,c,dtype,d,etype,e) \ ++type fname (atype a,btype b,ctype c,dtype d,etype e) \ ++{ \ ++ register unsigned long __a0 asm("$4") = (unsigned long) a; \ ++ register unsigned long __a1 asm("$5") = (unsigned long) b; \ ++ register unsigned long __a2 asm("$6") = (unsigned long) c; \ ++ register unsigned long __a3 asm("$7") = (unsigned long) d; \ ++ register unsigned long __a4 asm("$8") = (unsigned long) e; \ ++ unsigned long __v0; \ ++ \ ++ __asm__ volatile ( \ ++ ".set\tnoreorder\n\t" \ ++ "li\t$2, %6\t\t\t# " #fname "\n\t" \ ++ "syscall\n\t" \ ++ "move\t%0, $2\n\t" \ ++ ".set\treorder" \ ++ : "=&r" (__v0), "+r" (__a3) \ ++ : "r" (__a0), "r" (__a1), "r" (__a2), "r" (__a4), "i" (__NR_##sname) \ ++ : "$2", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", \ ++ "memory"); \ ++ \ ++ if (__a3 == 0) \ ++ return (type) __v0; \ ++ return (type) -1; \ ++} ++ ++#endif /* (_MIPS_SIM == _MIPS_SIM_NABI32) || (_MIPS_SIM == _MIPS_SIM_ABI64) */ ++ diff --git a/buildroot/package/libaio/0002-src-Makefile-add-ENABLE_SHARED-boolean-to-allow-stat.patch b/buildroot/package/libaio/0002-src-Makefile-add-ENABLE_SHARED-boolean-to-allow-stat.patch new file mode 100644 index 0000000..50703c3 --- /dev/null +++ b/buildroot/package/libaio/0002-src-Makefile-add-ENABLE_SHARED-boolean-to-allow-stat.patch @@ -0,0 +1,56 @@ +From 14dee5707716629b1bc8d06b93cdfe9ea1a3b813 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 29 Aug 2016 22:14:26 +0200 +Subject: [PATCH] src/Makefile: add ENABLE_SHARED boolean to allow static-only + build + +Currently, the libaio builds sytem builds a shared library +unconditionally. In some environments, this is not possible or +desirable. This commit adds a new Makefile variable, ENABLE_SHARED, +which defaults to "1" (i.e shared library enabled) and that allows to +override this behavior, and therefore to disable the build and +installation of the shared library. + +Signed-off-by: Thomas Petazzoni +--- + src/Makefile | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index eadb336..cfab240 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -8,12 +8,17 @@ SO_CFLAGS=-shared $(CFLAGS) + L_CFLAGS=$(CFLAGS) + LINK_FLAGS= + LINK_FLAGS+=$(LDFLAGS) ++ENABLE_SHARED ?= 1 + + soname=libaio.so.1 + minor=0 + micro=1 + libname=$(soname).$(minor).$(micro) +-all_targets += libaio.a $(libname) ++all_targets += libaio.a ++ ++ifeq ($(ENABLE_SHARED),1) ++all_targets += $(libname) ++endif + + all: $(all_targets) + +@@ -55,9 +60,11 @@ $(libname): $(libaio_sobjs) libaio.map + install: $(all_targets) + install -D -m 644 libaio.h $(includedir)/libaio.h + install -D -m 644 libaio.a $(libdir)/libaio.a ++ifeq ($(ENABLE_SHARED),1) + install -D -m 755 $(libname) $(libdir)/$(libname) + ln -sf $(libname) $(libdir)/$(soname) + ln -sf $(libname) $(libdir)/libaio.so ++endif + + $(libaio_objs): libaio.h + +-- +2.7.4 + diff --git a/buildroot/package/libaio/0003-destdir.patch b/buildroot/package/libaio/0003-destdir.patch new file mode 100644 index 0000000..583a2af --- /dev/null +++ b/buildroot/package/libaio/0003-destdir.patch @@ -0,0 +1,24 @@ +Patch borrowed from OpenEmbedded, available at +recipes/libaio/libaio-0.3.106/destdir.patch in their source tree. + +It just adds support for the traditional DESTDIR variable to install +the library in a different sysroot than the normal /. + +Signed-off-by: Thomas Petazzoni +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: libaio-0.3.109/Makefile +=================================================================== +--- libaio-0.3.109.orig/Makefile ++++ libaio-0.3.109/Makefile +@@ -23,7 +23,7 @@ + @$(MAKE) -C src + + install: +- @$(MAKE) -C src install prefix=$(prefix) includedir=$(includedir) libdir=$(libdir) ++ @$(MAKE) -C src install prefix=$(DESTDIR)$(prefix) includedir=$(DESTDIR)$(includedir) libdir=$(DESTDIR)$(libdir) + + check: + @$(MAKE) -C harness check diff --git a/buildroot/package/libaio/Config.in b/buildroot/package/libaio/Config.in new file mode 100644 index 0000000..ea21a36 --- /dev/null +++ b/buildroot/package/libaio/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \ + BR2_m68k || BR2_mips || BR2_mipsel || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \ + BR2_x86_64 + +config BR2_PACKAGE_LIBAIO + bool "libaio" + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + help + Library for doing asynchronous I/O diff --git a/buildroot/package/libaio/libaio.hash b/buildroot/package/libaio/libaio.hash new file mode 100644 index 0000000..7aa8961 --- /dev/null +++ b/buildroot/package/libaio/libaio.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/liba/libaio/libaio_0.3.110-1.dsc +sha256 e019028e631725729376250e32b473012f7cb68e1f7275bfc1bbcdd0f8745f7e libaio_0.3.110.orig.tar.gz diff --git a/buildroot/package/libaio/libaio.mk b/buildroot/package/libaio/libaio.mk new file mode 100644 index 0000000..03029d8 --- /dev/null +++ b/buildroot/package/libaio/libaio.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libaio +# +################################################################################ + +LIBAIO_VERSION = 0.3.110 +LIBAIO_SOURCE = libaio_$(LIBAIO_VERSION).orig.tar.gz +LIBAIO_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/liba/libaio +LIBAIO_INSTALL_STAGING = YES +LIBAIO_LICENSE = LGPL-2.1+ +LIBAIO_LICENSE_FILES = COPYING + +LIBAIO_CONFIGURE_OPTS = $(TARGET_CONFIGURE_OPTS) + +ifeq ($(BR2_STATIC_LIBS),y) +LIBAIO_CONFIGURE_OPTS += ENABLE_SHARED=0 +endif + +# On PowerPC, a weird toolchain issue causes -Os builds to produce +# references to hidden symbols, so we're forcing -O2 +ifeq ($(BR2_powerpc),y) +LIBAIO_CONFIGURE_OPTS += CFLAGS="$(subst -Os,-O2,$(TARGET_CFLAGS))" +endif + +define LIBAIO_BUILD_CMDS + $(LIBAIO_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define LIBAIO_INSTALL_STAGING_CMDS + $(LIBAIO_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define LIBAIO_INSTALL_TARGET_CMDS + $(LIBAIO_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libamcodec/Config.in b/buildroot/package/libamcodec/Config.in new file mode 100644 index 0000000..45846e6 --- /dev/null +++ b/buildroot/package/libamcodec/Config.in @@ -0,0 +1,14 @@ +comment "libamcodec needs a toolchain w/ threads, dynamic library" + depends on BR2_arm || BR2_aarch64 + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_LIBAMCODEC + bool "libamcodec" + depends on BR2_arm || BR2_aarch64 + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + depends on !BR2_STATIC_LIBS # dlfcn.h + select BR2_PACKAGE_ALSA_LIB + help + Interface library for Amlogic media codecs + + https://github.com/mdrjr/c2_aml_libs.git diff --git a/buildroot/package/libamcodec/libamcodec.hash b/buildroot/package/libamcodec/libamcodec.hash new file mode 100644 index 0000000..a76d20a --- /dev/null +++ b/buildroot/package/libamcodec/libamcodec.hash @@ -0,0 +1,2 @@ +# Locally computed hash +sha256 2c9812154b6dfd6a6c9c43aa334d0d03f299379fdf83c20121ad3f3d3f97c666 libamcodec-296f39bc6fc47ddf5d88b9fd3cfb82a5b39048ca.tar.gz diff --git a/buildroot/package/libamcodec/libamcodec.mk b/buildroot/package/libamcodec/libamcodec.mk new file mode 100644 index 0000000..3fab228 --- /dev/null +++ b/buildroot/package/libamcodec/libamcodec.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# libamcodec +# +################################################################################ + +LIBAMCODEC_VERSION = 296f39bc6fc47ddf5d88b9fd3cfb82a5b39048ca +LIBAMCODEC_SITE = $(call github,mdrjr,c2_aml_libs,$(LIBAMCODEC_VERSION)) +LIBAMCODEC_DEPENDENCIES = alsa-lib +LIBAMCODEC_LICENSE = Unclear +LIBAMCODEC_INSTALL_STAGING = YES + +# This package uses the AML_LIBS_STAGING_DIR variable to construct the +# header and library paths used when compiling +define LIBAMCODEC_BUILD_CMDS + $(foreach d,amavutils amadec amcodec,\ + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + -C $(@D)/$(d) AML_LIBS_STAGING_DIR=$(STAGING_DIR) + ) +endef + +define LIBAMCODEC_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0755 $(@D)/amavutils/libamavutils.so $(STAGING_DIR)/usr/lib/libamavutils.so + $(INSTALL) -D -m 0555 $(@D)/amadec/libamadec.so $(STAGING_DIR)/usr/lib/libamadec.so + $(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(STAGING_DIR)/usr/lib/libamcodec.so + mkdir -p $(STAGING_DIR)/usr/include/amcodec + cp -rf $(@D)/amcodec/include/* $(STAGING_DIR)/usr/include/amcodec +endef + +define LIBAMCODEC_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/amavutils/libamavutils.so $(TARGET_DIR)/usr/lib/libamavutils.so + $(INSTALL) -D -m 0555 $(@D)/amadec/libamadec.so $(TARGET_DIR)/usr/lib/libamadec.so + $(INSTALL) -D -m 0555 $(@D)/amcodec/libamcodec.so $(TARGET_DIR)/usr/lib/libamcodec.so +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libao/Config.in b/buildroot/package/libao/Config.in new file mode 100644 index 0000000..1fab6d9 --- /dev/null +++ b/buildroot/package/libao/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBAO + bool "libao" + help + Libao is a cross-platform audio library that allows programs + to output audio using a simple API on a wide variety of + platforms. + + http://www.xiph.org/ao/ diff --git a/buildroot/package/libao/libao.hash b/buildroot/package/libao/libao.hash new file mode 100644 index 0000000..64174da --- /dev/null +++ b/buildroot/package/libao/libao.hash @@ -0,0 +1,2 @@ +# From http://downloads.xiph.org/releases/ao/SHA256SUMS.txt +sha256 03ad231ad1f9d64b52474392d63c31197b0bc7bd416e58b1c10a329a5ed89caf libao-1.2.0.tar.gz diff --git a/buildroot/package/libao/libao.mk b/buildroot/package/libao/libao.mk new file mode 100644 index 0000000..501ea0c --- /dev/null +++ b/buildroot/package/libao/libao.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# libao +# +################################################################################ + +LIBAO_VERSION = 1.2.0 +LIBAO_SITE = http://downloads.xiph.org/releases/ao +LIBAO_DEPENDENCIES = host-pkgconf +LIBAO_INSTALL_STAGING = YES +LIBAO_LICENSE = GPL-2.0+ +LIBAO_LICENSE_FILES = COPYING +LIBAO_CONF_OPTS = \ + --disable-esd \ + --disable-wmm \ + --disable-arts \ + --disable-nas \ + --disable-pulse \ + --disable-broken-oss + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +LIBAO_DEPENDENCIES += alsa-lib +LIBAO_CONF_OPTS += --enable-alsa --enable-alsa-mmap + +# Remove the OSS plugin if ALSA is enabled, as libao will prefer ALSA anyway +define LIBAO_REMOVE_OSS_PLUGIN + rm -f $(TARGET_DIR)/usr/lib/ao/plugins-4/liboss.so +endef +LIBAO_POST_INSTALL_TARGET_HOOKS += LIBAO_REMOVE_OSS_PLUGIN +else +LIBAO_CONF_OPTS += --disable-alsa +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libarchive/0001-Do-something-sensible-for-empty-strings-to-make-fuzz.patch b/buildroot/package/libarchive/0001-Do-something-sensible-for-empty-strings-to-make-fuzz.patch new file mode 100644 index 0000000..1d1d80d --- /dev/null +++ b/buildroot/package/libarchive/0001-Do-something-sensible-for-empty-strings-to-make-fuzz.patch @@ -0,0 +1,42 @@ +From fa7438a0ff4033e4741c807394a9af6207940d71 Mon Sep 17 00:00:00 2001 +From: Joerg Sonnenberger +Date: Tue, 5 Sep 2017 18:12:19 +0200 +Subject: [PATCH] Do something sensible for empty strings to make fuzzers + happy. + +Signed-off-by: Baruch Siach +--- +Upstream status: commit fa7438a0ff + + libarchive/archive_read_support_format_xar.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/libarchive/archive_read_support_format_xar.c b/libarchive/archive_read_support_format_xar.c +index 7a22beb9d8e4..93eeacc5e6eb 100644 +--- a/libarchive/archive_read_support_format_xar.c ++++ b/libarchive/archive_read_support_format_xar.c +@@ -1040,6 +1040,9 @@ atol10(const char *p, size_t char_cnt) + uint64_t l; + int digit; + ++ if (char_cnt == 0) ++ return (0); ++ + l = 0; + digit = *p - '0'; + while (digit >= 0 && digit < 10 && char_cnt-- > 0) { +@@ -1054,7 +1057,10 @@ atol8(const char *p, size_t char_cnt) + { + int64_t l; + int digit; +- ++ ++ if (char_cnt == 0) ++ return (0); ++ + l = 0; + while (char_cnt-- > 0) { + if (*p >= '0' && *p <= '7') +-- +2.14.1 + diff --git a/buildroot/package/libarchive/Config.in b/buildroot/package/libarchive/Config.in new file mode 100644 index 0000000..fd429ac --- /dev/null +++ b/buildroot/package/libarchive/Config.in @@ -0,0 +1,33 @@ +comment "libarchive needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_LIBARCHIVE + bool "libarchive" + depends on BR2_USE_WCHAR + help + Libarchive is a reusable C library for reading and writing a + variety of streaming archive formats. + + http://www.libarchive.org/ + +if BR2_PACKAGE_LIBARCHIVE + +config BR2_PACKAGE_LIBARCHIVE_BSDTAR + bool "bsdtar" + help + The 'bsdtar' program is a full-featured 'tar' + replacement built on libarchive. + +config BR2_PACKAGE_LIBARCHIVE_BSDCPIO + bool "bsdcpio" + help + The 'bsdcpio' program is a different interface to + essentially the same functionality as 'bsdtar'. + +config BR2_PACKAGE_LIBARCHIVE_BSDCAT + bool "bsdcat" + help + The 'bsdcat' program is a simple replacement tool + for zcat, bzcat, xzcat, and such. + +endif diff --git a/buildroot/package/libarchive/libarchive.hash b/buildroot/package/libarchive/libarchive.hash new file mode 100644 index 0000000..98a34ad --- /dev/null +++ b/buildroot/package/libarchive/libarchive.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 ed2dbd6954792b2c054ccf8ec4b330a54b85904a80cef477a1c74643ddafa0ce libarchive-3.3.2.tar.gz diff --git a/buildroot/package/libarchive/libarchive.mk b/buildroot/package/libarchive/libarchive.mk new file mode 100644 index 0000000..1c8391b --- /dev/null +++ b/buildroot/package/libarchive/libarchive.mk @@ -0,0 +1,131 @@ +################################################################################ +# +# libarchive +# +################################################################################ + +LIBARCHIVE_VERSION = 3.3.2 +LIBARCHIVE_SITE = http://www.libarchive.org/downloads +LIBARCHIVE_INSTALL_STAGING = YES +LIBARCHIVE_LICENSE = BSD-2-Clause, BSD-3-Clause +LIBARCHIVE_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBARCHIVE_BSDTAR),y) +ifeq ($(BR2_STATIC_LIBS),y) +LIBARCHIVE_CONF_OPTS += --enable-bsdtar=static +else +LIBARCHIVE_CONF_OPTS += --enable-bsdtar=shared +endif +else +LIBARCHIVE_CONF_OPTS += --disable-bsdtar +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE_BSDCPIO),y) +ifeq ($(BR2_STATIC_LIBS),y) +LIBARCHIVE_CONF_OPTS += --enable-bsdcpio=static +else +LIBARCHIVE_CONF_OPTS += --enable-bsdcpio=shared +endif +else +LIBARCHIVE_CONF_OPTS += --disable-bsdcpio +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE_BSDCAT),y) +ifeq ($(BR2_STATIC_LIBS),y) +LIBARCHIVE_CONF_OPTS += --enable-bsdcat=static +else +LIBARCHIVE_CONF_OPTS += --enable-bsdcat=shared +endif +else +LIBARCHIVE_CONF_OPTS += --disable-bsdcat +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +LIBARCHIVE_DEPENDENCIES += acl +else +LIBARCHIVE_CONF_OPTS += --disable-acl +endif + +ifeq ($(BR2_PACKAGE_ATTR),y) +LIBARCHIVE_DEPENDENCIES += attr +else +LIBARCHIVE_CONF_OPTS += --disable-xattr +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +LIBARCHIVE_CONF_OPTS += --with-bz2lib +LIBARCHIVE_DEPENDENCIES += bzip2 +else +LIBARCHIVE_CONF_OPTS += --without-bz2lib +endif + +ifeq ($(BR2_PACKAGE_EXPAT),y) +LIBARCHIVE_DEPENDENCIES += expat +else +LIBARCHIVE_CONF_OPTS += --without-expat +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +LIBARCHIVE_DEPENDENCIES += libiconv +else +LIBARCHIVE_CONF_OPTS += --without-libiconv-prefix +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +LIBARCHIVE_DEPENDENCIES += libxml2 +LIBARCHIVE_CONF_ENV += XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config +else +LIBARCHIVE_CONF_OPTS += --without-xml2 +endif + +ifeq ($(BR2_PACKAGE_LZO),y) +LIBARCHIVE_DEPENDENCIES += lzo +else +LIBARCHIVE_CONF_OPTS += --without-lzo2 +endif + +ifeq ($(BR2_PACKAGE_NETTLE),y) +LIBARCHIVE_DEPENDENCIES += nettle +else +LIBARCHIVE_CONF_OPTS += --without-nettle +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBARCHIVE_DEPENDENCIES += openssl +else +LIBARCHIVE_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBARCHIVE_DEPENDENCIES += zlib +else +LIBARCHIVE_CONF_OPTS += --without-zlib +endif + +# libarchive requires LZMA with thread support in the toolchain +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS)$(BR2_PACKAGE_XZ),yy) +LIBARCHIVE_DEPENDENCIES += xz +LIBARCHIVE_CONF_OPTS += --with-lzma +else +LIBARCHIVE_CONF_OPTS += --without-lzma +endif + +# The only user of host-libarchive needs zlib support +HOST_LIBARCHIVE_DEPENDENCIES = host-zlib +HOST_LIBARCHIVE_CONF_OPTS = \ + --disable-bsdtar \ + --disable-bsdcpio \ + --disable-bsdcat \ + --disable-acl \ + --disable-xattr \ + --without-bz2lib \ + --without-expat \ + --without-libiconv-prefix \ + --without-xml2 \ + --without-lzo2 \ + --without-nettle \ + --without-openssl \ + --without-lzma + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libargtable2/Config.in b/buildroot/package/libargtable2/Config.in new file mode 100644 index 0000000..42d067b --- /dev/null +++ b/buildroot/package/libargtable2/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBARGTABLE2 + bool "libargtable2" + help + A greatly simplified and yet quite robust argument parsing + set of library calls. + + http://argtable.sourceforge.net/ diff --git a/buildroot/package/libargtable2/libargtable2.hash b/buildroot/package/libargtable2/libargtable2.hash new file mode 100644 index 0000000..9addbc5 --- /dev/null +++ b/buildroot/package/libargtable2/libargtable2.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 8f77e8a7ced5301af6e22f47302fdbc3b1ff41f2b83c43c77ae5ca041771ddbf argtable2-13.tar.gz diff --git a/buildroot/package/libargtable2/libargtable2.mk b/buildroot/package/libargtable2/libargtable2.mk new file mode 100644 index 0000000..8215f55 --- /dev/null +++ b/buildroot/package/libargtable2/libargtable2.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libargtable2 +# +################################################################################ + +LIBARGTABLE2_VERSION = 13 +LIBARGTABLE2_SOURCE = argtable2-$(LIBARGTABLE2_VERSION).tar.gz +LIBARGTABLE2_SITE = http://downloads.sourceforge.net/project/argtable/argtable/argtable-2.13 +LIBARGTABLE2_INSTALL_STAGING = YES +LIBARGTABLE2_CONF_OPTS = \ + --disable-example \ + --disable-kernel-module \ + --enable-lib \ + --enable-util +LIBARGTABLE2_LICENSE = LGPL-2.0+ +LIBARGTABLE2_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libart/0001-art-config-cross.patch b/buildroot/package/libart/0001-art-config-cross.patch new file mode 100644 index 0000000..a54f26a --- /dev/null +++ b/buildroot/package/libart/0001-art-config-cross.patch @@ -0,0 +1,34 @@ +diff -Nura libart_lgpl-2.3.21.orig/Makefile.am libart_lgpl-2.3.21/Makefile.am +--- libart_lgpl-2.3.21.orig/Makefile.am 2011-02-01 10:07:39.687545397 -0300 ++++ libart_lgpl-2.3.21/Makefile.am 2011-02-01 10:08:48.320545396 -0300 +@@ -5,11 +5,6 @@ + + noinst_SCRIPTS = gen_art_config.sh + +-BUILT_SOURCES = art_config.h +- +-art_config.h: +- ./gen_art_config.sh > art_config.h +- + EXTRA_DIST = \ + libart.def \ + libart-config.in \ +diff -Nura libart_lgpl-2.3.21.orig/art_config.h libart_lgpl-2.3.21/art_config.h +--- libart_lgpl-2.3.21.orig/art_config.h 2011-02-01 10:07:39.688545397 -0300 ++++ libart_lgpl-2.3.21/art_config.h 2011-02-01 10:08:27.315545395 -0300 +@@ -1,9 +1,15 @@ + /* Automatically generated by gen_art_config */ + ++#include ++ + #define ART_SIZEOF_CHAR 1 + #define ART_SIZEOF_SHORT 2 + #define ART_SIZEOF_INT 4 ++#if LONG_MAX == 2147483647L + #define ART_SIZEOF_LONG 4 ++#else ++#define ART_SIZEOF_LONG 8 ++#endif + + typedef unsigned char art_u8; + typedef unsigned short art_u16; diff --git a/buildroot/package/libart/Config.in b/buildroot/package/libart/Config.in new file mode 100644 index 0000000..9262335 --- /dev/null +++ b/buildroot/package/libart/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBART + bool "libart" + help + Libart is a library for high-performance 2D graphics. It + supports a very powerful imaging model, basically the same + as SVG and the Java 2D API. It includes all PostScript + imaging operations, and adds antialiasing and + alpha-transparency. It is also highly tuned for incremental + rendering. It contains data structures and algorithms suited + to rapid, precise computation of Region of Interest, and a + two-phase rendering pipeline optimized for interactive + display. + + http://www.levien.com/libart/ diff --git a/buildroot/package/libart/libart.hash b/buildroot/package/libart/libart.hash new file mode 100644 index 0000000..769c3bf --- /dev/null +++ b/buildroot/package/libart/libart.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/libart_lgpl/2.3/libart_lgpl-2.3.21.sha256sum +sha256 2a10b1c884bb37c7bd5c5eba59dbd0d28bf68e64a42d7f2083c836f60f8e98fa libart_lgpl-2.3.21.tar.gz diff --git a/buildroot/package/libart/libart.mk b/buildroot/package/libart/libart.mk new file mode 100644 index 0000000..b3c6176 --- /dev/null +++ b/buildroot/package/libart/libart.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libart +# +################################################################################ + +LIBART_VERSION_MAJOR = 2.3 +LIBART_VERSION = $(LIBART_VERSION_MAJOR).21 +LIBART_SOURCE = libart_lgpl-$(LIBART_VERSION).tar.gz +LIBART_SITE = http://ftp.gnome.org/pub/gnome/sources/libart_lgpl/$(LIBART_VERSION_MAJOR) +LIBART_AUTORECONF = YES +LIBART_INSTALL_STAGING = YES +LIBART_CONFIG_SCRIPTS = libart2-config +LIBART_LICENSE = LGPL-2.0+ +LIBART_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libasplib/0001-asplib_CPUTimer.h-Fix-time.h-include.patch b/buildroot/package/libasplib/0001-asplib_CPUTimer.h-Fix-time.h-include.patch new file mode 100644 index 0000000..c91ddbf --- /dev/null +++ b/buildroot/package/libasplib/0001-asplib_CPUTimer.h-Fix-time.h-include.patch @@ -0,0 +1,39 @@ +From 7291289ba0c052e45e2a0330642318798d6a4caf Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Fri, 27 Jan 2017 16:02:27 +0100 +Subject: [PATCH 1/1] asplib_CPUTimer.h: Fix time.h include + +According to https://linux.die.net/man/3/clock_gettime time.h needs to +be included instead of sys/time.h. + +This patch fixes a build error found by buildroot autobuilders: + +http://autobuild.buildroot.net/results/cc0/cc0b928ee24a526b7c82fd3f391e2be024a14578// + +/home/peko/autobuild/instance-1/output/build/libasplib-be7fac89218a84b75f7598e3d76625ece99296f2/asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.cpp: In member function 'void asplib::CCPUTimer::start_Timer()': +/home/peko/autobuild/instance-1/output/build/libasplib-be7fac89218a84b75f7598e3d76625ece99296f2/asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.cpp:69:19: error: 'CLOCK_REALTIME' was not declared in this scope + clock_gettime(CLOCK_REALTIME, &m_startTime); + +Patch sent upstream: https://github.com/AchimTuran/asplib/pull/34 + +Signed-off-by: Bernd Kuhls +--- + asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.h b/asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.h +index a61ff49..a9676e0 100644 +--- a/asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.h ++++ b/asplib_modules/Timer/asplib/Timer/asplib_CPUTimer.h +@@ -29,7 +29,7 @@ + #include + #include + #elif defined(TARGET_LINUX) +- #include ++ #include + #endif + + namespace asplib +-- +2.11.0 + diff --git a/buildroot/package/libasplib/Config.in b/buildroot/package/libasplib/Config.in new file mode 100644 index 0000000..89d5448 --- /dev/null +++ b/buildroot/package/libasplib/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBASPLIB + bool "libasplib" + depends on BR2_INSTALL_LIBSTDCPP + help + asplib (Achim's Signal Processing LIBrary), is a small and + lightweight C++ library for digital signal processing. + + https://github.com/AchimTuran/asplib + +comment "asplib needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/libasplib/libasplib.hash b/buildroot/package/libasplib/libasplib.hash new file mode 100644 index 0000000..76534e5 --- /dev/null +++ b/buildroot/package/libasplib/libasplib.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 68e117348fa17592dde7672477e927119a0e477103ced1d3a57d92e30880a147 libasplib-be7fac89218a84b75f7598e3d76625ece99296f2.tar.gz diff --git a/buildroot/package/libasplib/libasplib.mk b/buildroot/package/libasplib/libasplib.mk new file mode 100644 index 0000000..e13945c --- /dev/null +++ b/buildroot/package/libasplib/libasplib.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libasplib +# +################################################################################ + +LIBASPLIB_VERSION = be7fac89218a84b75f7598e3d76625ece99296f2 +LIBASPLIB_SITE = $(call github,AchimTuran,asplib,$(LIBASPLIB_VERSION)) +LIBASPLIB_LICENSE = GPL-3.0+ +LIBASPLIB_LICENSE_FILES = LICENSE +LIBASPLIB_INSTALL_STAGING = YES + +LIBASPLIB_CONF_OPTS = \ + -DASPLIB_MODULES_TO_BUILD=some \ + -DBUILD_BIQUAD=ON \ + -DBUILD_IIR=ON \ + -DBUILD_LOGGER=ON \ + -DBUILD_SIGNALS=ON \ + -DBUILD_TIMER=ON + +# Internal error, aborting at dw2gencfi.c:214 in emit_expr_encoded +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79509 +ifeq ($(BR2_m68k_cf),y) +LIBASPLIB_CXXFLAGS += -fno-dwarf2-cfi-asm +endif + +LIBASPLIB_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) $(LIBASPLIB_CXXFLAGS)" + +$(eval $(cmake-package)) diff --git a/buildroot/package/libass/Config.in b/buildroot/package/libass/Config.in new file mode 100644 index 0000000..7690685 --- /dev/null +++ b/buildroot/package/libass/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBASS + bool "libass" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBFRIBIDI + help + libass is a portable subtitle renderer for the ASS/SSA + (Advanced Substation Alpha/Substation Alpha) subtitle format + + http://code.google.com/p/libass/ diff --git a/buildroot/package/libass/libass.hash b/buildroot/package/libass/libass.hash new file mode 100644 index 0000000..d98b163 --- /dev/null +++ b/buildroot/package/libass/libass.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 7065e5f5fb76e46f2042a62e7c68d81e5482dbeeda24644db1bd066e44da7e9d libass-0.13.7.tar.xz diff --git a/buildroot/package/libass/libass.mk b/buildroot/package/libass/libass.mk new file mode 100644 index 0000000..41f027d --- /dev/null +++ b/buildroot/package/libass/libass.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# libass +# +################################################################################ + +LIBASS_VERSION = 0.13.7 +LIBASS_SOURCE = libass-$(LIBASS_VERSION).tar.xz +# Do not use the github helper here, the generated tarball is *NOT* +# the same as the one uploaded by upstream for the release. +LIBASS_SITE = https://github.com/libass/libass/releases/download/$(LIBASS_VERSION) +LIBASS_INSTALL_STAGING = YES +LIBASS_LICENSE = ISC +LIBASS_LICENSE_FILES = COPYING +LIBASS_DEPENDENCIES = \ + host-pkgconf \ + freetype \ + libfribidi \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +# configure: WARNING: Install yasm for a significantly faster libass build. +# only for Intel archs +ifeq ($(BR2_i386)$(BR2_x86_64),y) +LIBASS_DEPENDENCIES += host-yasm +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +LIBASS_DEPENDENCIES += fontconfig +LIBASS_CONF_OPTS += --enable-fontconfig +else +LIBASS_CONF_OPTS += --disable-fontconfig --disable-require-system-font-provider +endif + +ifeq ($(BR2_PACKAGE_HARFBUZZ),y) +LIBASS_DEPENDENCIES += harfbuzz +LIBASS_CONF_OPTS += --enable-harfbuzz +else +LIBASS_CONF_OPTS += --disable-harfbuzz +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libassuan/Config.in b/buildroot/package/libassuan/Config.in new file mode 100644 index 0000000..012e65c --- /dev/null +++ b/buildroot/package/libassuan/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBASSUAN + bool "libassuan" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBGPG_ERROR + help + Libassuan is a small library implementing the so-called + Assuan protocol. + + This protocol is used for IPC between most newer GnuPG + components. Both, server and client side functions are + provided. + + http://www.gnupg.org/related_software/libassuan/ diff --git a/buildroot/package/libassuan/libassuan.hash b/buildroot/package/libassuan/libassuan.hash new file mode 100644 index 0000000..2e80cfa --- /dev/null +++ b/buildroot/package/libassuan/libassuan.hash @@ -0,0 +1,7 @@ +# From https://www.gnupg.org/download/integrity_check.html +sha1 c8432695bf1daa914a92f51e911881ed93d50604 libassuan-2.5.1.tar.bz2 +# Locally calculated after checking signature +# https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.1.tar.bz2.sig +sha256 47f96c37b4f2aac289f0bc1bacfa8bd8b4b209a488d3d15e2229cb6cc9b26449 libassuan-2.5.1.tar.bz2 +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/buildroot/package/libassuan/libassuan.mk b/buildroot/package/libassuan/libassuan.mk new file mode 100644 index 0000000..e807086 --- /dev/null +++ b/buildroot/package/libassuan/libassuan.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libassuan +# +################################################################################ + +LIBASSUAN_VERSION = 2.5.1 +LIBASSUAN_SITE = ftp://ftp.gnupg.org/gcrypt/libassuan +LIBASSUAN_SOURCE = libassuan-$(LIBASSUAN_VERSION).tar.bz2 +LIBASSUAN_LICENSE = LGPL-2.1+ (library), GPL-3.0 (tests, doc) +LIBASSUAN_LICENSE_FILES = COPYING.LIB COPYING +LIBASSUAN_INSTALL_STAGING = YES +LIBASSUAN_DEPENDENCIES = libgpg-error +LIBASSUAN_CONF_OPTS = \ + --with-gpg-error-prefix=$(STAGING_DIR)/usr + +$(eval $(autotools-package)) diff --git a/buildroot/package/libatasmart/0001-strpool-cross-flags.patch b/buildroot/package/libatasmart/0001-strpool-cross-flags.patch new file mode 100644 index 0000000..89b91cc --- /dev/null +++ b/buildroot/package/libatasmart/0001-strpool-cross-flags.patch @@ -0,0 +1,42 @@ +From 730158700ea7a554c37f24bfbf5f4985f7280f3e Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Wed, 6 Feb 2013 14:07:02 +0100 +Subject: [PATCH] strpool: don't mix up host/build flags when cross compiling + +Submitted upstream as https://bugs.freedesktop.org/show_bug.cgi?id=60364 + +Commit b71035ce89 (build-sys: modernize build system) changed the strpool +(which needs to be built for the build machine) compilation to use +AM_CFLAGS / AM_LDFLAGS rather than CFLAGS / LDFLAGS. This is wrong, as +The AM_ version is used TOGETHER with (the user supplied) CFLAGS/LDFLAGS, +causing strpool to use both CFLAGS (for host) and CCFLAGS_FOR_BUILD (for +build) flags, breaking cross compilation with errors like: + +cc1: error: unrecognized command line option "-mabi=spe" + +Instead overwrite the (user supplied) CFLAGS with the (user supplied) +CFLAGS_FOR_BUILD (and similar for LDFLAGS) like we used to do. + +Signed-off-by: Peter Korsgaard +--- + strpool/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/strpool/Makefile.am b/strpool/Makefile.am +index b041cea..5b335a5 100644 +--- a/strpool/Makefile.am ++++ b/strpool/Makefile.am +@@ -17,8 +17,8 @@ + # . + + CC = @CC_FOR_BUILD@ +-AM_CFLAGS = @BUILD_CFLAGS@ +-AM_LDFLAGS = @BUILD_LDFLAGS@ ++CFLAGS = @BUILD_CFLAGS@ ++LDFLAGS = @BUILD_LDFLAGS@ + + noinst_PROGRAMS = \ + strpool +-- +1.7.10.4 + diff --git a/buildroot/package/libatasmart/Config.in b/buildroot/package/libatasmart/Config.in new file mode 100644 index 0000000..9db3b09 --- /dev/null +++ b/buildroot/package/libatasmart/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBATASMART + bool "libatasmart" + depends on BR2_PACKAGE_HAS_UDEV # libudev is configure dependency + help + The libatasmart package is a disk reporting library. + It only supports a subset of the ATA S.M.A.R.T. functionality. + + http://0pointer.de/blog/projects/being-smart.html + +comment "libatasmart requires udev to be enabled" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/libatasmart/libatasmart.hash b/buildroot/package/libatasmart/libatasmart.hash new file mode 100644 index 0000000..8733d07 --- /dev/null +++ b/buildroot/package/libatasmart/libatasmart.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 61f0ea345f63d28ab2ff0dc352c22271661b66bf09642db3a4049ac9dbdb0f8d libatasmart-0.19.tar.xz diff --git a/buildroot/package/libatasmart/libatasmart.mk b/buildroot/package/libatasmart/libatasmart.mk new file mode 100644 index 0000000..1d4eeaa --- /dev/null +++ b/buildroot/package/libatasmart/libatasmart.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libatasmart +# +################################################################################ + +LIBATASMART_VERSION = 0.19 +LIBATASMART_SOURCE = libatasmart-$(LIBATASMART_VERSION).tar.xz +LIBATASMART_SITE = http://0pointer.de/public +LIBATASMART_LICENSE = LGPL-2.1 +LIBATASMART_LICENSE_FILES = LGPL +LIBATASMART_INSTALL_STAGING = YES + +# package doesn't include configure script +LIBATASMART_AUTORECONF = YES + +LIBATASMART_DEPENDENCIES = udev + +$(eval $(autotools-package)) diff --git a/buildroot/package/libatomic_ops/Config.in b/buildroot/package/libatomic_ops/Config.in new file mode 100644 index 0000000..e9206f3 --- /dev/null +++ b/buildroot/package/libatomic_ops/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || BR2_sparc || BR2_sparc64 || BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || BR2_x86_64 || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + # Unsupported for MIPS R6 + depends on !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6 + +config BR2_PACKAGE_LIBATOMIC_OPS + bool "libatomic_ops" + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + help + Atomic operations library + + https://github.com/ivmai/libatomic_ops diff --git a/buildroot/package/libatomic_ops/libatomic_ops.hash b/buildroot/package/libatomic_ops/libatomic_ops.hash new file mode 100644 index 0000000..90af18d --- /dev/null +++ b/buildroot/package/libatomic_ops/libatomic_ops.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 7ee6a1772a49d02711b97c600bd214bd86ba8a31bd7c6d6e850b502780de367c libatomic_ops-v7.4.10.tar.gz +sha256 f0e630c0ca489767033da5a0c869fb4231db522c5ff479ce55a853a923a00f69 doc/LICENSING.txt +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/libatomic_ops/libatomic_ops.mk b/buildroot/package/libatomic_ops/libatomic_ops.mk new file mode 100644 index 0000000..dff62c5 --- /dev/null +++ b/buildroot/package/libatomic_ops/libatomic_ops.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libatomic_ops +# +################################################################################ + +LIBATOMIC_OPS_VERSION = v7.4.10 +LIBATOMIC_OPS_SITE = $(call github,ivmai,libatomic_ops,$(LIBATOMIC_OPS_VERSION)) +LIBATOMIC_OPS_AUTORECONF = YES + +# From doc/LICENSING.txt: "Our intent is to make it easy to use +# libatomic_ops, in both free and proprietary software. Hence most +# code that we expect to be linked into a client application is +# covered by an MIT-style license. A few library routines are covered +# by the GNU General Public License. These are put into a separate +# library, libatomic_ops_gpl.a." +LIBATOMIC_OPS_LICENSE = MIT (main library) / GPL-2.0+ (gpl extension) +LIBATOMIC_OPS_LICENSE_FILES = doc/LICENSING.txt COPYING + +LIBATOMIC_OPS_INSTALL_STAGING = YES + +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +LIBATOMIC_OPS_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -DAO_NO_SPARC_V9" +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libb64/Config.in b/buildroot/package/libb64/Config.in new file mode 100644 index 0000000..405d0b8 --- /dev/null +++ b/buildroot/package/libb64/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBB64 + bool "libb64" + help + libb64 is a library of ANSI C routines for fast encoding + and decoding of data into and from a base64-encoded format. + C++ wrappers are included, as well as the source code for + standalone encoding and decoding executables. + + Base64 uses a subset of displayable ASCII characters, and is + therefore a useful encoding for storing binary data in a text + file, such as XML, or sending binary data over text-only + email. + + http://libb64.sourceforge.net diff --git a/buildroot/package/libb64/libb64.hash b/buildroot/package/libb64/libb64.hash new file mode 100644 index 0000000..012a7b0 --- /dev/null +++ b/buildroot/package/libb64/libb64.hash @@ -0,0 +1,3 @@ +# sha1 from sourceforge, sha256 locally computed +sha1 04b3e21b8c951d27f02fe91249ca3474554af0b9 libb64-1.2.1.zip +sha256 20106f0ba95cfd9c35a13c71206643e3fb3e46512df3e2efb2fdbf87116314b2 libb64-1.2.1.zip diff --git a/buildroot/package/libb64/libb64.mk b/buildroot/package/libb64/libb64.mk new file mode 100644 index 0000000..4dea959 --- /dev/null +++ b/buildroot/package/libb64/libb64.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libb64 +# +################################################################################ + +LIBB64_VERSION = 1.2.1 +LIBB64_SOURCE = libb64-$(LIBB64_VERSION).zip +LIBB64_SITE = https://downloads.sourceforge.net/project/libb64/libb64/libb64 +LIBB64_LICENSE = Public Domain +LIBB64_LICENSE_FILES = LICENSE +LIBB64_INSTALL_STAGING = YES +# Only static lib and headers +LIBB64_INSTALL_TARGET = NO + +define LIBB64_EXTRACT_CMDS + unzip $(DL_DIR)/$(LIBB64_SOURCE) -d $(BUILD_DIR) +endef + +define LIBB64_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CCFLAGS="$(TARGET_CFLAGS)" -C $(@D) all_src +endef + +define LIBB64_INSTALL_STAGING_CMDS + $(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include/b64 + $(INSTALL) -m 0644 $(@D)/include/b64/* $(STAGING_DIR)/usr/include/b64 + $(INSTALL) -D -m 0755 $(@D)/src/libb64.a $(STAGING_DIR)/usr/lib +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libbdplus/Config.in b/buildroot/package/libbdplus/Config.in new file mode 100644 index 0000000..2d314d1 --- /dev/null +++ b/buildroot/package/libbdplus/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBBDPLUS + bool "libbdplus" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBGCRYPT + help + libbdplus is a research project to implement the BD+ System + Specifications. + This research project provides, through an open-source + library, a way to understand how the BD+ works. + NB: this project doesn't offer any key, configuration file or + certificate that could be used to decode encrypted copyrighted + material. + + http://www.videolan.org/developers/libbdplus.html + +comment "libbdplus needs a toolchain w/ threads, dynamic library" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/libbdplus/libbdplus.hash b/buildroot/package/libbdplus/libbdplus.hash new file mode 100644 index 0000000..552cd71 --- /dev/null +++ b/buildroot/package/libbdplus/libbdplus.hash @@ -0,0 +1,2 @@ +# From http://download.videolan.org/pub/videolan/libbdplus/0.1.2/libbdplus-0.1.2.tar.bz2.sha512 +sha512 e00e7bc9f52b9275646593b753ba646b052255be94a7241965f4dbe4734f8f6a072973ed4b9997957f939236b0633897c295749f79e232188430795be5b5087b libbdplus-0.1.2.tar.bz2 diff --git a/buildroot/package/libbdplus/libbdplus.mk b/buildroot/package/libbdplus/libbdplus.mk new file mode 100644 index 0000000..b0e8b14 --- /dev/null +++ b/buildroot/package/libbdplus/libbdplus.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libbdplus +# +################################################################################ + +LIBBDPLUS_VERSION = 0.1.2 +LIBBDPLUS_SITE = http://download.videolan.org/pub/videolan/libbdplus/$(LIBBDPLUS_VERSION) +LIBBDPLUS_SOURCE = libbdplus-$(LIBBDPLUS_VERSION).tar.bz2 +LIBBDPLUS_LICENSE = LGPL-2.1+ +LIBBDPLUS_LICENSE_FILES = COPYING +LIBBDPLUS_INSTALL_STAGING = YES +LIBBDPLUS_DEPENDENCIES = libgcrypt +LIBBDPLUS_CONF_OPTS = \ + --disable-werror \ + --disable-extra-warnings \ + --disable-optimizations \ + --disable-examples \ + --disable-debug \ + --with-gnu-ld \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr \ + --with-gpg-error-prefix=$(STAGING_DIR)/usr + +ifeq ($(BR2_PACKAGE_LIBAACS),y) +LIBBDPLUS_DEPENDENCIES += libaacs +LIBBDPLUS_CONF_OPTS += --with-libaacs +else +LIBBDPLUS_CONF_OPTS += --without-libaacs +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libbluray/Config.in b/buildroot/package/libbluray/Config.in new file mode 100644 index 0000000..b958935 --- /dev/null +++ b/buildroot/package/libbluray/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBBLURAY + bool "libbluray" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + libbluray is a client library for accessing bluray disks. + + http://www.videolan.org/developers/libbluray.html + +comment "libbluray needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/libbluray/libbluray.hash b/buildroot/package/libbluray/libbluray.hash new file mode 100644 index 0000000..9a35c5d --- /dev/null +++ b/buildroot/package/libbluray/libbluray.hash @@ -0,0 +1,3 @@ +# From http://get.videolan.org/libbluray/1.0.2/libbluray-1.0.2.tar.bz2.sha512 +sha512 e1360ad08aa6cc67a80efa81a09004faebbe31105f1961494f82f655e3e7378b198ee3bc534b0d0c2bfec726939b11b545cc8bbfa30794fc647432dadf71089b libbluray-1.0.2.tar.bz2 +sha256 b3aa400aca6d2ba1f0bd03bd98d03d1fe7489a3bbb26969d72016360af8a5c9d COPYING diff --git a/buildroot/package/libbluray/libbluray.mk b/buildroot/package/libbluray/libbluray.mk new file mode 100644 index 0000000..3d7ce35 --- /dev/null +++ b/buildroot/package/libbluray/libbluray.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# libbluray +# +################################################################################ + +LIBBLURAY_VERSION = 1.0.2 +LIBBLURAY_SITE = http://get.videolan.org/libbluray/$(LIBBLURAY_VERSION) +LIBBLURAY_SOURCE = libbluray-$(LIBBLURAY_VERSION).tar.bz2 +LIBBLURAY_INSTALL_STAGING = YES +LIBBLURAY_LICENSE = LGPL-2.1+ +LIBBLURAY_LICENSE_FILES = COPYING +LIBBLURAY_DEPENDENCIES = host-pkgconf + +LIBBLURAY_CONF_OPTS = --disable-bdjava-jar + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +LIBBLURAY_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +LIBBLURAY_DEPENDENCIES += freetype +LIBBLURAY_CONF_OPTS += --with-freetype +else +LIBBLURAY_CONF_OPTS += --without-freetype +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +LIBBLURAY_DEPENDENCIES += fontconfig +LIBBLURAY_CONF_OPTS += --with-fontconfig +else +LIBBLURAY_CONF_OPTS += --without-fontconfig +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +LIBBLURAY_DEPENDENCIES += libxml2 +LIBBLURAY_CONF_OPTS += --with-libxml2 +else +LIBBLURAY_CONF_OPTS += --without-libxml2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libbroadvoice/Config.in b/buildroot/package/libbroadvoice/Config.in new file mode 100644 index 0000000..3301ba8 --- /dev/null +++ b/buildroot/package/libbroadvoice/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBBROADVOICE + bool "libbroadvoice" + # broken with gcc <= 4.8 on arc + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59049 + depends on !BR2_arc || BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + broadvoice - a library for the BroadVoice 16 and 32 speech + codecs + + https://www.broadcom.com/support/broadvoice diff --git a/buildroot/package/libbroadvoice/libbroadvoice.hash b/buildroot/package/libbroadvoice/libbroadvoice.hash new file mode 100644 index 0000000..e339aa4 --- /dev/null +++ b/buildroot/package/libbroadvoice/libbroadvoice.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 b68c91d5af6e493c3d4fc3be04825e109a7593fe4de8c18ec75546004eeb4749 libbroadvoice-f65b0f50c8c767229fbf1758370880abc0d78564.tar.gz diff --git a/buildroot/package/libbroadvoice/libbroadvoice.mk b/buildroot/package/libbroadvoice/libbroadvoice.mk new file mode 100644 index 0000000..9c6b4e2 --- /dev/null +++ b/buildroot/package/libbroadvoice/libbroadvoice.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libbroadvoice +# +################################################################################ + +LIBBROADVOICE_VERSION = f65b0f50c8c767229fbf1758370880abc0d78564 +# we use the FreeSwitch fork because (quoting README): +# "This library is based on the Broadcom reference code, but has been +# heavily modified so that it builds into a proper library, with a clean +# usable interface, on a range of platforms." +LIBBROADVOICE_SITE = https://freeswitch.org/stash/scm/sd/libbroadvoice.git +LIBBROADVOICE_SITE_METHOD = git +LIBBROADVOICE_LICENSE = LGPL-2.1 +LIBBROADVOICE_LICENSE_FILES = COPYING +LIBBROADVOICE_AUTORECONF = YES +LIBBROADVOICE_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libbsd/Config.in b/buildroot/package/libbsd/Config.in new file mode 100644 index 0000000..11e4c4d --- /dev/null +++ b/buildroot/package/libbsd/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + bool + default y + # libbsd does not support those architectures (see src/local-elf.h) + depends on !BR2_microblaze + depends on !BR2_arc + +config BR2_PACKAGE_LIBBSD + bool "libbsd" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_USES_GLIBC + help + This library provides useful functions commonly found on BSD + systems, and lacking on others like GNU systems, thus making + it easier to port projects with strong BSD origins, without + needing to embed the same code over and over again on each + project. + + http://libbsd.freedesktop.org/ + +comment "libbsd needs a glibc toolchain w/ threads" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/libbsd/libbsd.hash b/buildroot/package/libbsd/libbsd.hash new file mode 100644 index 0000000..133df90 --- /dev/null +++ b/buildroot/package/libbsd/libbsd.hash @@ -0,0 +1,3 @@ +# From https://lists.freedesktop.org/archives/libbsd/2018-January/000166.html +sha256 f548f10e5af5a08b1e22889ce84315b1ebe41505b015c9596bad03fd13a12b31 libbsd-0.8.7.tar.xz +sha256 0b6cedd686394f9c811a6a9fd314d68ab4738475ad3d9df61154259fa649a2a7 COPYING diff --git a/buildroot/package/libbsd/libbsd.mk b/buildroot/package/libbsd/libbsd.mk new file mode 100644 index 0000000..e211389 --- /dev/null +++ b/buildroot/package/libbsd/libbsd.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libbsd +# +################################################################################ + +LIBBSD_VERSION = 0.8.7 +LIBBSD_SOURCE = libbsd-$(LIBBSD_VERSION).tar.xz +LIBBSD_SITE = https://archive.hadrons.org/software/libbsd +LIBBSD_LICENSE = BSD-3-Clause, MIT +LIBBSD_LICENSE_FILES = COPYING +LIBBSD_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libbson/Config.in b/buildroot/package/libbson/Config.in new file mode 100644 index 0000000..4305ca9 --- /dev/null +++ b/buildroot/package/libbson/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBBSON + bool "libbson" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libbson is a library providing useful routines related to + building, parsing, and iterating BSON documents. + +comment "libbson needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libbson/libbson.hash b/buildroot/package/libbson/libbson.hash new file mode 100644 index 0000000..27abe90 --- /dev/null +++ b/buildroot/package/libbson/libbson.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 aad410123e4bd8a9804c3c3d79e03344e2df104872594dc2cf19605d492944ba libbson-1.6.2.tar.gz diff --git a/buildroot/package/libbson/libbson.mk b/buildroot/package/libbson/libbson.mk new file mode 100644 index 0000000..8a71fc3 --- /dev/null +++ b/buildroot/package/libbson/libbson.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libbson +# +################################################################################ + +LIBBSON_VERSION = 1.6.2 +LIBBSON_SITE = https://github.com/mongodb/libbson/releases/download/$(LIBBSON_VERSION) +LIBBSON_LICENSE = Apache-2.0, MIT (jsonl), ISC (b64), Zlib (md5) +LIBBSON_LICENSE_FILES = COPYING THIRD_PARTY_NOTICES +LIBBSON_CONF_OPTS = \ + --disable-tests \ + --disable-examples \ + --disable-man-pages \ + --disable-html-docs + +LIBBSON_INSTALL_STAGING = YES + +# Also has CMake support, but that forces shared+static libs and static +# lib has a different name. +$(eval $(autotools-package)) diff --git a/buildroot/package/libcap-ng/Config.in b/buildroot/package/libcap-ng/Config.in new file mode 100644 index 0000000..46f0b69 --- /dev/null +++ b/buildroot/package/libcap-ng/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBCAP_NG + bool "libcap-ng" + help + The libcap-ng library is intended to make programming with + posix capabilities much easier than the traditional libcap + library. It includes utilities that can analyse all currently + running applications and print out any capabilities and + whether or not it has an open ended bounding set. + + http://people.redhat.com/sgrubb/libcap-ng/ diff --git a/buildroot/package/libcap-ng/libcap-ng.hash b/buildroot/package/libcap-ng/libcap-ng.hash new file mode 100644 index 0000000..b433b75 --- /dev/null +++ b/buildroot/package/libcap-ng/libcap-ng.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c21af997445cd4107a55d386f955c5ea6f6e96ead693e9151277c0ab5f97d05f libcap-ng-0.7.8.tar.gz diff --git a/buildroot/package/libcap-ng/libcap-ng.mk b/buildroot/package/libcap-ng/libcap-ng.mk new file mode 100644 index 0000000..568f167 --- /dev/null +++ b/buildroot/package/libcap-ng/libcap-ng.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libcap-ng +# +################################################################################ + +LIBCAP_NG_VERSION = 0.7.8 +LIBCAP_NG_SITE = http://people.redhat.com/sgrubb/libcap-ng +LIBCAP_NG_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (library) +LIBCAP_NG_LICENSE_FILES = COPYING COPYING.LIB +LIBCAP_NG_INSTALL_STAGING = YES + +LIBCAP_NG_CONF_ENV = ac_cv_prog_swig_found=no +LIBCAP_NG_CONF_OPTS = --without-python + +$(eval $(autotools-package)) diff --git a/buildroot/package/libcap/0001-build-system-fixes-for-cross-compilation.patch b/buildroot/package/libcap/0001-build-system-fixes-for-cross-compilation.patch new file mode 100644 index 0000000..de24090 --- /dev/null +++ b/buildroot/package/libcap/0001-build-system-fixes-for-cross-compilation.patch @@ -0,0 +1,53 @@ +From d8d70559a279706c206761dfaf665d2197934123 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sun, 6 Mar 2016 22:52:02 +0100 +Subject: [PATCH] build-system: fixes for cross-compilation + +Avoid the libcap buildsys forcing CC/CFLAGS/LDFLAGS/AR/RANLIB + +Signed-off-by: Gustavo Zacarias +[yann.morin.1998@free.fr: dont chmod +x the shared lib] +Signed-off-by: "Yann E. MORIN" + +diff --git a/Make.Rules b/Make.Rules +index 8347b26..8a07a3f 100644 +--- a/Make.Rules ++++ b/Make.Rules +@@ -48,26 +48,26 @@ MINOR=25 + KERNEL_HEADERS := $(topdir)/libcap/include/uapi + IPATH += -fPIC -I$(KERNEL_HEADERS) -I$(topdir)/libcap/include + +-CC := gcc +-CFLAGS := -O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 +-BUILD_CC := $(CC) +-BUILD_CFLAGS := $(CFLAGS) $(IPATH) +-AR := ar +-RANLIB := ranlib ++CC ?= gcc ++CFLAGS ?= -O2 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 ++BUILD_CC ?= $(CC) ++BUILD_CFLAGS ?= $(CFLAGS) $(IPATH) ++AR ?= ar ++RANLIB ?= ranlib + DEBUG = -g #-DDEBUG + WARNINGS=-Wall -Wwrite-strings \ + -Wpointer-arith -Wcast-qual -Wcast-align \ + -Wstrict-prototypes -Wmissing-prototypes \ + -Wnested-externs -Winline -Wshadow + LD=$(CC) -Wl,-x -shared +-LDFLAGS := #-g ++LDFLAGS ?= #-g + BUILD_GPERF := $(shell which gperf >/dev/null 2>/dev/null && echo yes) + + SYSTEM_HEADERS = /usr/include + INCS=$(topdir)/libcap/include/sys/capability.h + LDFLAGS += -L$(topdir)/libcap + CFLAGS += -Dlinux $(WARNINGS) $(DEBUG) +-PAM_CAP := $(shell if [ -f /usr/include/security/pam_modules.h ]; then echo yes ; else echo no ; fi) ++PAM_CAP = no + INDENT := $(shell if [ -n "$$(which indent 2>/dev/null)" ]; then echo "| indent -kr" ; fi) + DYNAMIC := $(shell if [ ! -d "$(topdir)/.git" ]; then echo yes; fi) + +-- +1.9.1 + diff --git a/buildroot/package/libcap/0002-libcap-split-install-into-install-shared-install-sta.patch b/buildroot/package/libcap/0002-libcap-split-install-into-install-shared-install-sta.patch new file mode 100644 index 0000000..a8579b7 --- /dev/null +++ b/buildroot/package/libcap/0002-libcap-split-install-into-install-shared-install-sta.patch @@ -0,0 +1,48 @@ +From af21635665ab568f3333ff9fe8b474f4950e5acb Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 6 Mar 2016 22:53:24 +0100 +Subject: [PATCH] libcap: split install into install-shared/install-static + +In order to support static only builds, split the install target into +install-shared and install-static targets. + +Signed-off-by: Thomas Petazzoni +[yann.morin.1998@free.fr: install the .pc file in the common rule] +Signed-off-by: "Yann E. MORIN" + +diff --git a/libcap/Makefile b/libcap/Makefile +index d189777..44ddb27 100644 +--- a/libcap/Makefile ++++ b/libcap/Makefile +@@ -62,19 +62,25 @@ $(MINLIBNAME): $(OBJS) + cap_text.o: cap_text.c $(USE_GPERF_OUTPUT) $(INCLS) + $(CC) $(CFLAGS) $(IPATH) $(INCLUDE_GPERF_OUTPUT) -c $< -o $@ + +-install: all ++install: install-shared install-static ++ ++install-common: + mkdir -p -m 0755 $(FAKEROOT)$(INCDIR)/sys + install -m 0644 include/sys/capability.h $(FAKEROOT)$(INCDIR)/sys ++ mkdir -p -m 0755 $(FAKEROOT)$(PKGCONFIGDIR) ++ install -m 0644 libcap.pc $(FAKEROOT)$(PKGCONFIGDIR)/libcap.pc ++ ++install-static: $(STALIBNAME) install-common + mkdir -p -m 0755 $(FAKEROOT)$(LIBDIR) + install -m 0644 $(STALIBNAME) $(FAKEROOT)$(LIBDIR)/$(STALIBNAME) ++ ++install-shared: $(MINLIBNAME) install-common + install -m 0644 $(MINLIBNAME) $(FAKEROOT)$(LIBDIR)/$(MINLIBNAME) + ln -sf $(MINLIBNAME) $(FAKEROOT)$(LIBDIR)/$(MAJLIBNAME) + ln -sf $(MAJLIBNAME) $(FAKEROOT)$(LIBDIR)/$(LIBNAME) + ifeq ($(FAKEROOT),) + -/sbin/ldconfig + endif +- mkdir -p -m 0755 $(FAKEROOT)$(PKGCONFIGDIR) +- install -m 0644 libcap.pc $(FAKEROOT)$(PKGCONFIGDIR)/libcap.pc + + clean: + $(LOCALCLEAN) +-- +1.9.1 + diff --git a/buildroot/package/libcap/0003-libcap-cap_file.c-fix-build-with-old-kernel-headers.patch b/buildroot/package/libcap/0003-libcap-cap_file.c-fix-build-with-old-kernel-headers.patch new file mode 100644 index 0000000..02cc228 --- /dev/null +++ b/buildroot/package/libcap/0003-libcap-cap_file.c-fix-build-with-old-kernel-headers.patch @@ -0,0 +1,51 @@ +From ace694e9574eb38e07cfe0db235434eb40003f47 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 14 Mar 2016 22:39:15 +0100 +Subject: [PATCH] libcap/cap_file.c: fix build with old kernel headers + +Signed-off-by: Thomas Petazzoni +--- + libcap/cap_file.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +diff --git a/libcap/cap_file.c b/libcap/cap_file.c +index 40756ea..e3d54dd 100644 +--- a/libcap/cap_file.c ++++ b/libcap/cap_file.c +@@ -23,6 +23,33 @@ extern int fsetxattr(int, const char *, const void *, size_t, int); + extern int removexattr(const char *, const char *); + extern int fremovexattr(int, const char *); + ++ ++/* ++ * Old kernels (before 2.6.36) were defining XATTR_NAME_CAPS in ++ * , but using XATTR_SECURITY_PREFIX and ++ * XATTR_CAPS_SUFFIX which were defined in the kernel-only part of ++ * . ++ * ++ * In kernel 2.6.36 (commit af4f136056c984b0aa67feed7d3170b958370b2f), ++ * the XATTR_NAME_CAPS definition was moved to the kernel-only part of ++ * . It's only in kernel 3.0 (commit ++ * 1dbe39424a43e56a6c9aed12661192af51dcdb9f) that was ++ * fixed to expose XATTR_NAME_CAPS and the related definitions to ++ * userspace. ++ * ++ * In order to cope with kernels < 3.0, we define here the appropriate ++ * values, which we assume haven't changed over history. ++ */ ++#ifndef XATTR_CAPS_SUFFIX ++#define XATTR_CAPS_SUFFIX "capability" ++#endif ++#ifndef XATTR_SECURITY_PREFIX ++#define XATTR_SECURITY_PREFIX "security." ++#endif ++#ifndef XATTR_NAME_CAPS ++#define XATTR_NAME_CAPS XATTR_SECURITY_PREFIX XATTR_CAPS_SUFFIX ++#endif ++ + #include "libcap.h" + + #ifdef VFS_CAP_U32 +-- +2.6.4 + diff --git a/buildroot/package/libcap/Config.in b/buildroot/package/libcap/Config.in new file mode 100644 index 0000000..5b0c827 --- /dev/null +++ b/buildroot/package/libcap/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBCAP + bool "libcap" + help + This library implements the user-space interfaces to the + POSIX 1003.1e capabilities available in Linux kernels. These + capabilities are a partitioning of the all powerful root + privilege into a set of distinct privileges. + + http://sites.google.com/site/fullycapable/ + +if BR2_PACKAGE_LIBCAP + +config BR2_PACKAGE_LIBCAP_TOOLS + bool "install tools" + depends on BR2_USE_MMU + help + Install setcap, getcap, getpcaps and capsh tools. + + For these tools to run properly, you should enable, in your + kernel configuration, extended file attributes/security labels + support for the file system type used on target system (e.g. + CONFIG_EXT2_FS_XATTR and CONFIG_EXT2_FS_SECURITY for ext2). + +endif diff --git a/buildroot/package/libcap/libcap.hash b/buildroot/package/libcap/libcap.hash new file mode 100644 index 0000000..2d3aee5 --- /dev/null +++ b/buildroot/package/libcap/libcap.hash @@ -0,0 +1,5 @@ +# https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/sha256sums.asc +sha256 693c8ac51e983ee678205571ef272439d83afe62dd8e424ea14ad9790bc35162 libcap-2.25.tar.xz + +# Hash for license file: +sha256 088cabde4662b4121258d298b0b2967bc1abffa134457ed9bc4a359685ab92bc License diff --git a/buildroot/package/libcap/libcap.mk b/buildroot/package/libcap/libcap.mk new file mode 100644 index 0000000..a947fa0 --- /dev/null +++ b/buildroot/package/libcap/libcap.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# libcap +# +################################################################################ + +LIBCAP_VERSION = 2.25 +LIBCAP_SITE = https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2 +LIBCAP_SOURCE = libcap-$(LIBCAP_VERSION).tar.xz +LIBCAP_LICENSE = GPL-2.0 or BSD-3-Clause +LIBCAP_LICENSE_FILES = License + +LIBCAP_DEPENDENCIES = host-libcap host-gperf +LIBCAP_INSTALL_STAGING = YES + +HOST_LIBCAP_DEPENDENCIES = host-gperf + +ifeq ($(BR2_STATIC_LIBS),y) +LIBCAP_MAKE_TARGET = libcap.a libcap.pc +LIBCAP_MAKE_INSTALL_TARGET = install-static +else ifeq ($(BR2_SHARED_LIBS),y) +LIBCAP_MAKE_TARGET = all +LIBCAP_MAKE_INSTALL_TARGET = install-shared +else +LIBCAP_MAKE_TARGET = all +LIBCAP_MAKE_INSTALL_TARGET = install +endif + +LIBCAP_MAKE_FLAGS = \ + BUILD_CC="$(HOSTCC)" \ + BUILD_CFLAGS="$(HOST_CFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBCAP_TOOLS),y) +define LIBCAP_BUILD_TOOLS_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/progs \ + $(LIBCAP_MAKE_FLAGS) +endef + +define LIBCAP_INSTALL_TOOLS_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/progs \ + RAISE_SETFCAP=no prefix=/usr \ + DESTDIR=$(TARGET_DIR) $(LIBCAP_MAKE_FLAGS) install +endef +endif + +define LIBCAP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/libcap \ + $(LIBCAP_MAKE_FLAGS) $(LIBCAP_MAKE_TARGET) + $(LIBCAP_BUILD_TOOLS_CMDS) +endef + +define LIBCAP_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libcap $(LIBCAP_MAKE_FLAGS) \ + DESTDIR=$(STAGING_DIR) prefix=/usr lib=lib $(LIBCAP_MAKE_INSTALL_TARGET) +endef + +define LIBCAP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/libcap $(LIBCAP_MAKE_FLAGS) \ + DESTDIR=$(TARGET_DIR) prefix=/usr lib=lib $(LIBCAP_MAKE_INSTALL_TARGET) + $(LIBCAP_INSTALL_TOOLS_CMDS) +endef + +define HOST_LIBCAP_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)\ + RAISE_SETFCAP=no +endef + +define HOST_LIBCAP_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) prefix=$(HOST_DIR) \ + RAISE_SETFCAP=no lib=lib install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/libcdaudio/Config.in b/buildroot/package/libcdaudio/Config.in new file mode 100644 index 0000000..3eca607 --- /dev/null +++ b/buildroot/package/libcdaudio/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBCDAUDIO + bool "libcdaudio" + # binutils assertion failure + depends on !BR2_nios2 + help + libcdaudio is a library designed to provide functions to + control operation of a CD-ROM when playing audio CDs. It + also contains functions for CDDB and CD Index lookup. + + http://libcdaudio.sourceforge.net/ diff --git a/buildroot/package/libcdaudio/libcdaudio.hash b/buildroot/package/libcdaudio/libcdaudio.hash new file mode 100644 index 0000000..f8e1112 --- /dev/null +++ b/buildroot/package/libcdaudio/libcdaudio.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 5fdaf9af5ac4f75c0215d000b82b128fd054a582f81cc4f039a1e7fe69335ebb libcdaudio-0.99.12p2.tar.gz diff --git a/buildroot/package/libcdaudio/libcdaudio.mk b/buildroot/package/libcdaudio/libcdaudio.mk new file mode 100644 index 0000000..5d421eb --- /dev/null +++ b/buildroot/package/libcdaudio/libcdaudio.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libcdaudio +# +################################################################################ + +LIBCDAUDIO_VERSION = 0.99.12p2 +LIBCDAUDIO_SITE = http://downloads.sourceforge.net/project/libcdaudio/libcdaudio/$(LIBCDAUDIO_VERSION) +LIBCDAUDIO_INSTALL_STAGING = YES +LIBCDAUDIO_CONFIG_SCRIPTS = libcdaudio-config +LIBCDAUDIO_LICENSE = GPL-2.0+ +LIBCDAUDIO_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libcddb/Config.in b/buildroot/package/libcddb/Config.in new file mode 100644 index 0000000..f2bb827 --- /dev/null +++ b/buildroot/package/libcddb/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBCDDB + bool "libcddb" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Libcddb is a C library to access data on a CDDB server + (freedb.org). It allows you to: + * search the database for possible CD matches; + * retrieve detailed information about a specific CD; + * submit new CD entries to the database. + + http://libcddb.sourceforge.net/index.html + +if BR2_PACKAGE_LIBCDDB + +config BR2_PACKAGE_LIBCDDB_INSTALL_CDDB_QUERY + bool "install cddb_query" + help + cddb_query is an optionnal libcddb test program. + +endif diff --git a/buildroot/package/libcddb/libcddb.hash b/buildroot/package/libcddb/libcddb.hash new file mode 100644 index 0000000..9e60683 --- /dev/null +++ b/buildroot/package/libcddb/libcddb.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 35ce0ee1741ea38def304ddfe84a958901413aa829698357f0bee5bb8f0a223b libcddb-1.3.2.tar.bz2 diff --git a/buildroot/package/libcddb/libcddb.mk b/buildroot/package/libcddb/libcddb.mk new file mode 100644 index 0000000..952a879 --- /dev/null +++ b/buildroot/package/libcddb/libcddb.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# libcddb +# +################################################################################ + +LIBCDDB_VERSION = 1.3.2 +LIBCDDB_SOURCE = libcddb-$(LIBCDDB_VERSION).tar.bz2 +LIBCDDB_SITE = http://downloads.sourceforge.net/libcddb +LIBCDDB_LICENSE = LGPL-2.0+ +LIBCDDB_LICENSE_FILES = COPYING +LIBCDDB_INSTALL_STAGING = YES + +ifeq ($(BR2_ENABLE_LOCALE),) +LIBCDDB_DEPENDENCIES += libiconv +endif + +define LIBCDDB_REMOVE_CDDB_QUERY + rm -f $(TARGET_DIR)/usr/bin/cddb_query +endef + +ifeq ($(BR2_PACKAGE_LIBCDDB_INSTALL_CDDB_QUERY),) +LIBCDDB_POST_INSTALL_TARGET_HOOKS += LIBCDDB_REMOVE_CDDB_QUERY +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libcdio/Config.in b/buildroot/package/libcdio/Config.in new file mode 100644 index 0000000..fdc001e --- /dev/null +++ b/buildroot/package/libcdio/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBCDIO + bool "libcdio" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + The GNU Compact Disc Input and Control library. + + http://www.gnu.org/software/libcdio/ diff --git a/buildroot/package/libcdio/libcdio.hash b/buildroot/package/libcdio/libcdio.hash new file mode 100644 index 0000000..35c632a --- /dev/null +++ b/buildroot/package/libcdio/libcdio.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking signature +sha256 96e2c903f866ae96f9f5b9048fa32db0921464a2286f5b586c0f02699710025a libcdio-0.94.tar.gz diff --git a/buildroot/package/libcdio/libcdio.mk b/buildroot/package/libcdio/libcdio.mk new file mode 100644 index 0000000..f0fc335 --- /dev/null +++ b/buildroot/package/libcdio/libcdio.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libcdio +# +################################################################################ + +LIBCDIO_VERSION = 0.94 +LIBCDIO_SITE = $(BR2_GNU_MIRROR)/libcdio +LIBCDIO_INSTALL_STAGING = YES +LIBCDIO_LICENSE = GPL-3.0+ +LIBCDIO_LICENSE_FILES = COPYING +LIBCDIO_CONF_OPTS = --disable-example-progs --disable-cddb + +ifeq ($(BR2_ENABLE_LOCALE),) +LIBCDIO_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),) +LIBCDIO_CONF_OPTS += --disable-cxx +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +LIBCDIO_DEPENDENCIES += ncurses +else +LIBCDIO_CONF_OPTS += --without-cdda-player +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libcec/Config.in b/buildroot/package/libcec/Config.in new file mode 100644 index 0000000..2dddc53 --- /dev/null +++ b/buildroot/package/libcec/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBCEC + bool "libcec" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + select BR2_PACKAGE_LIBPLATFORM + help + libcec allows you in combination with the right hardware to + control your home theater devices with your TV remote + control utilizing existing HDMI cabling. + + http://libcec.pulse-eight.com + +comment "libcec needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/libcec/libcec.hash b/buildroot/package/libcec/libcec.hash new file mode 100644 index 0000000..5416c20 --- /dev/null +++ b/buildroot/package/libcec/libcec.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 b8b8dd31f3ebdd5472f03ab7d401600ea0d959b1288b9ca24bf457ef60e2ba27 libcec-4.0.2.tar.gz diff --git a/buildroot/package/libcec/libcec.mk b/buildroot/package/libcec/libcec.mk new file mode 100644 index 0000000..99d1c8b --- /dev/null +++ b/buildroot/package/libcec/libcec.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# libcec +# +################################################################################ + +LIBCEC_VERSION = 4.0.2 +LIBCEC_SITE = $(call github,Pulse-Eight,libcec,libcec-$(LIBCEC_VERSION)) +LIBCEC_LICENSE = GPL-2.0+ +LIBCEC_LICENSE_FILES = COPYING + +LIBCEC_INSTALL_STAGING = YES +LIBCEC_DEPENDENCIES = host-pkgconf libplatform + +ifeq ($(BR2_PACKAGE_LOCKDEV),y) +LIBCEC_DEPENDENCIES += lockdev +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBCEC_DEPENDENCIES += udev +endif + +ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y) +LIBCEC_DEPENDENCIES += host-swig $(if $(BR2_PACKAGE_PYTHON3),python3,python) +endif + +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +LIBCEC_DEPENDENCIES += rpi-userland +LIBCEC_CONF_OPTS += \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) -lvcos -lvchiq_arm" \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) \ + -I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux \ + -I$(STAGING_DIR)/usr/include/interface/vcos/pthreads" +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +LIBCEC_DEPENDENCIES += xlib_libXrandr +endif + +# Disable information about how libCEC is compiled. +LIBCEC_CONF_OPTS += -DHAVE_GIT_BIN="" \ + -DHAVE_DATE_BIN="" \ + -DHAVE_WHOAMI_BIN="" \ + -DHAVE_HOSTNAME_BIN="" \ + -DHAVE_UNAME_BIN="" + +$(eval $(cmake-package)) diff --git a/buildroot/package/libcgi/0001-CMakeLists.txt-libcgi-is-in-C.patch b/buildroot/package/libcgi/0001-CMakeLists.txt-libcgi-is-in-C.patch new file mode 100644 index 0000000..682bfe5 --- /dev/null +++ b/buildroot/package/libcgi/0001-CMakeLists.txt-libcgi-is-in-C.patch @@ -0,0 +1,32 @@ +From 043f7a470e32c036f0fe933ec5cd2003087d6b2e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 2 Sep 2017 23:50:42 +0200 +Subject: [PATCH] CMakeLists.txt: libcgi is in C + +By default, CMake checks that both C and C++ compilers are +available. However, since libcgi is only C, there's no need for a C++ +compiler check. Therefore, this commit adjusts the project() variable +definition to only require C language support. + +Signed-off-by: Thomas Petazzoni +Submitted-upstream: https://github.com/rafaelsteil/libcgi/pull/38 +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f98a99d..c599ca9 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -3,7 +3,7 @@ + # + cmake_minimum_required(VERSION 2.8.8) + +-project(cgi) ++project(cgi C) + string(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC) + string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LC) + set(LIBPREFIX ${PROJECT_NAME}) +-- +2.13.5 + diff --git a/buildroot/package/libcgi/0002-CMakeLists.txt-don-t-force-the-build-of-a-shared-lib.patch b/buildroot/package/libcgi/0002-CMakeLists.txt-don-t-force-the-build-of-a-shared-lib.patch new file mode 100644 index 0000000..ebf91b0 --- /dev/null +++ b/buildroot/package/libcgi/0002-CMakeLists.txt-don-t-force-the-build-of-a-shared-lib.patch @@ -0,0 +1,44 @@ +From 9bb9d67da0e4faf4bb3a47786dee127e66a49ed0 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 3 Sep 2017 15:22:30 +0200 +Subject: [PATCH] CMakeLists.txt: don't force the build of a shared library + +Building a shared library doesn't work on all platforms, so instead, +let CMake rely on the standard BUILD_SHARED_LIBS variable to decide +whether a static or shared library should be built. + +Signed-off-by: Thomas Petazzoni +Submitted-upstream: https://github.com/rafaelsteil/libcgi/pull/39 +--- + src/CMakeLists.txt | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index f32d22e..3bde408 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -23,17 +23,18 @@ set(CGI_SRC + ) + + # create binary +-add_library(${PROJECT_NAME}-shared SHARED ${CGI_SRC}) +-set_target_properties(${PROJECT_NAME}-shared PROPERTIES ++add_library(${PROJECT_NAME} ${CGI_SRC}) ++set_target_properties(${PROJECT_NAME} PROPERTIES + OUTPUT_NAME ${PROJECT_NAME} + SOVERSION ${PROJECT_VERSION_MAJOR} + VERSION ${PROJECT_VERSION} + ) + + # install binary +-install(TARGETS ${PROJECT_NAME}-shared ++install(TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}-targets + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ++ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + ) + + # install cmake targets +-- +2.13.5 + diff --git a/buildroot/package/libcgi/Config.in b/buildroot/package/libcgi/Config.in new file mode 100644 index 0000000..3336907 --- /dev/null +++ b/buildroot/package/libcgi/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBCGI + bool "libcgi" + help + LibCGI is a library written from scratch to easily make + CGI applications in C. + + There are a lot of functions like string manipulation, + session and cookie support, GET and POST methods manipulation + etc..., to help you to quickly write powerful CGI programs. + + https://github.com/rafaelsteil/libcgi/ diff --git a/buildroot/package/libcgi/libcgi.hash b/buildroot/package/libcgi/libcgi.hash new file mode 100644 index 0000000..f071cc0 --- /dev/null +++ b/buildroot/package/libcgi/libcgi.hash @@ -0,0 +1,5 @@ +# From https://github.com/rafaelsteil/libcgi/releases/download/v1.1/libcgi-1.1.tar.gz.sha256sum +sha256 128445f2f828e84905d51bd53d11e2e08c489df3a07225ff9f198c1318092fe6 libcgi-1.1.tar.gz + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/libcgi/libcgi.mk b/buildroot/package/libcgi/libcgi.mk new file mode 100644 index 0000000..d1e403f --- /dev/null +++ b/buildroot/package/libcgi/libcgi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libcgi +# +################################################################################ + +LIBCGI_VERSION = 1.1 +LIBCGI_SITE = https://github.com/rafaelsteil/libcgi/releases/download/v$(LIBCGI_VERSION) + +LIBCGI_INSTALL_STAGING = YES +LIBCGI_LICENSE = LGPL-2.1+ +LIBCGI_LICENSE_FILES = COPYING + +$(eval $(cmake-package)) diff --git a/buildroot/package/libcgicc/0001-disable-documentation-option.patch b/buildroot/package/libcgicc/0001-disable-documentation-option.patch new file mode 100644 index 0000000..a7b04a8 --- /dev/null +++ b/buildroot/package/libcgicc/0001-disable-documentation-option.patch @@ -0,0 +1,50 @@ +Index: cgicc-3.2.9/Makefile.am +=================================================================== +--- cgicc-3.2.9.orig/Makefile.am 2010-02-25 16:34:06.000000000 +0100 ++++ cgicc-3.2.9/Makefile.am 2010-02-25 16:34:14.000000000 +0100 +@@ -8,9 +8,15 @@ + DEMO = + endif + ++if DOC ++DOCDIR = doc ++else ++DOC = ++endif ++ + ACLOCAL_AMFLAGS= + +-SUBDIRS = cgicc doc support $(DEMO) ++SUBDIRS = cgicc $(DOCDIR) support $(DEMO) + + CLEANFILES = *~ + +Index: cgicc-3.2.9/configure.ac +=================================================================== +--- cgicc-3.2.9.orig/configure.ac 2010-02-25 16:34:06.000000000 +0100 ++++ cgicc-3.2.9/configure.ac 2010-02-25 16:45:46.000000000 +0100 +@@ -17,9 +17,23 @@ + AC_PROG_CXX + AC_PROG_INSTALL + AC_PROG_LIBTOOL +-AC_CHECK_PROG(DOXYGEN, doxygen, doxygen, /bin/echo) + + ++AC_ARG_ENABLE(doc, ++ [ --enable-doc build doc [[default=yes]]], ++ [case "${enableval}" in ++ yes) cgicc_doc=yes ;; ++ no) cgicc_doc=no ;; ++ *) AC_MSG_ERROR(bad value ${enableval} for --enable-doc) ;; ++ esac], cgicc_doc=yes) ++ ++if test "$cgicc_doc" = yes; then ++ AC_CHECK_PROG(DOXYGEN, doxygen, doxygen) ++ if test -z "$DOXYGEN" ; then ++ AC_MSG_ERROR([Doxygen is required to build the documentation]) ++ fi ++fi ++AM_CONDITIONAL(DOC, test "$cgicc_doc" = yes) + + dnl Determine host system type + diff --git a/buildroot/package/libcgicc/Config.in b/buildroot/package/libcgicc/Config.in new file mode 100644 index 0000000..e1f6904 --- /dev/null +++ b/buildroot/package/libcgicc/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBCGICC + bool "libcgicc" + depends on BR2_INSTALL_LIBSTDCPP + help + GNU cgicc is a C++ class library that greatly simplifies + the creation of CGI applications for the World Wide Web. + + http://www.cgicc.com + +comment "libcgicc needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/libcgicc/libcgicc.hash b/buildroot/package/libcgicc/libcgicc.hash new file mode 100644 index 0000000..313478d --- /dev/null +++ b/buildroot/package/libcgicc/libcgicc.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 d94a2b5dec6d5eb6f05f114e2c7a64aeb7da71708ebe7b5f32bd6ebde1dfbc96 cgicc-3.2.16.tar.bz2 diff --git a/buildroot/package/libcgicc/libcgicc.mk b/buildroot/package/libcgicc/libcgicc.mk new file mode 100644 index 0000000..09df3a1 --- /dev/null +++ b/buildroot/package/libcgicc/libcgicc.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libcgicc +# +################################################################################ + +LIBCGICC_VERSION = 3.2.16 +LIBCGICC_SITE = $(BR2_GNU_MIRROR)/cgicc +LIBCGICC_SOURCE = cgicc-$(LIBCGICC_VERSION).tar.bz2 +LIBCGICC_LICENSE = LGPL-3.0+ (library), GFDL-1.2+ (docs) +LIBCGICC_LICENSE_FILES = COPYING.LIB COPYING.DOC +LIBCGICC_INSTALL_STAGING = YES +LIBCGICC_AUTORECONF = YES +LIBCGICC_CONFIG_SCRIPTS = cgicc-config +LIBCGICC_CONF_OPTS = \ + --disable-demos \ + --disable-doc + +$(eval $(autotools-package)) diff --git a/buildroot/package/libcgroup/Config.in b/buildroot/package/libcgroup/Config.in new file mode 100644 index 0000000..03efa71 --- /dev/null +++ b/buildroot/package/libcgroup/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_LIBCGROUP + bool "libcgroup" + depends on BR2_INSTALL_LIBSTDCPP + # libcgroup uses which is not included by default in uClibc + depends on BR2_TOOLCHAIN_USES_GLIBC + help + libcgroup is a library that abstracts the control + group file system in Linux. + + http://libcg.sourceforge.net/ + +if BR2_PACKAGE_LIBCGROUP + +config BR2_PACKAGE_LIBCGROUP_TOOLS + bool "install tools" + help + Include a set of command-line tools for managing cgroups. + +endif + +comment "libcgroup needs a glibc toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/libcgroup/libcgroup.hash b/buildroot/package/libcgroup/libcgroup.hash new file mode 100644 index 0000000..c671791 --- /dev/null +++ b/buildroot/package/libcgroup/libcgroup.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 e4e38bdc7ef70645ce33740ddcca051248d56b53283c0dc6d404e17706f6fb51 libcgroup-0.41.tar.bz2 diff --git a/buildroot/package/libcgroup/libcgroup.mk b/buildroot/package/libcgroup/libcgroup.mk new file mode 100644 index 0000000..3845627 --- /dev/null +++ b/buildroot/package/libcgroup/libcgroup.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# libcgroup +# +################################################################################ + +LIBCGROUP_VERSION = 0.41 +LIBCGROUP_SOURCE = libcgroup-$(LIBCGROUP_VERSION).tar.bz2 +LIBCGROUP_SITE = http://downloads.sourceforge.net/project/libcg/libcgroup/v$(LIBCGROUP_VERSION) +LIBCGROUP_LICENSE = LGPL-2.1 +LIBCGROUP_LICENSE_FILES = COPYING +LIBCGROUP_DEPENDENCIES = host-bison host-flex +LIBCGROUP_INSTALL_STAGING = YES + +# Undefining _FILE_OFFSET_BITS here because of a "bug" with glibc fts.h +# large file support. See https://bugzilla.redhat.com/show_bug.cgi?id=574992 +# for more information. +LIBCGROUP_CONF_ENV = \ + CXXFLAGS="$(TARGET_CXXFLAGS) -U_FILE_OFFSET_BITS" \ + CFLAGS="$(TARGET_CFLAGS) -U_FILE_OFFSET_BITS" + +LIBCGROUP_CONF_OPTS = \ + --disable-daemon \ + --disable-initscript-install + +ifeq ($(BR2_PACKAGE_LIBCGROUP_TOOLS),y) +LIBCGROUP_CONF_OPTS += --enable-tools +else +LIBCGROUP_CONF_OPTS += --disable-tools +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +LIBCGROUP_DEPENDENCIES += linux-pam +LIBCGROUP_CONF_OPTS += --enable-pam +else +LIBCGROUP_CONF_OPTS += --disable-pam +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libcli/Config.in b/buildroot/package/libcli/Config.in new file mode 100644 index 0000000..3b625c3 --- /dev/null +++ b/buildroot/package/libcli/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBCLI + bool "libcli" + help + Libcli provides a shared library for including a Cisco-like + command- line interface into other software. It's a telnet + interface which supports command-line editing, history, + authentication and callbacks for a user-definable function + tree. + + http://sites.dparrish.com/libcli diff --git a/buildroot/package/libcli/libcli.hash b/buildroot/package/libcli/libcli.hash new file mode 100644 index 0000000..f6ea12a --- /dev/null +++ b/buildroot/package/libcli/libcli.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3c801cb0112b6b5e07bdc3b98c034b36df6f33a8ed95ce74520b704bdbc0f36d libcli-c63c9d35144939c8b4fa3c5394aed2e29ff517b0.tar.gz diff --git a/buildroot/package/libcli/libcli.mk b/buildroot/package/libcli/libcli.mk new file mode 100644 index 0000000..0fef008 --- /dev/null +++ b/buildroot/package/libcli/libcli.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# libcli +# +################################################################################ + +LIBCLI_VERSION = c63c9d35144939c8b4fa3c5394aed2e29ff517b0 +LIBCLI_SITE = $(call github,dparrish,libcli,$(LIBCLI_VERSION)) +LIBCLI_LICENSE = LGPL-2.1 +LIBCLI_LICENSE_FILES = COPYING +LIBCLI_INSTALL_STAGING = YES + +# We will pass optimisation level via CFLAGS so remove libcli default +LIBCLI_MAKE_ARGS += OPTIM= + +# We can't run the test harness +LIBCLI_MAKE_ARGS += TESTS= + +# Disable the static library for shared only build +ifeq ($(BR2_SHARED_LIBS),y) +LIBCLI_MAKE_ARGS += STATIC_LIB= +endif + +# Disable the shared library for static only build +ifeq ($(BR2_STATIC_LIBS),y) +LIBCLI_MAKE_ARGS += DYNAMIC_LIB= +endif + +define LIBCLI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(LIBCLI_MAKE_ARGS) +endef + +define LIBCLI_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(LIBCLI_MAKE_ARGS) DESTDIR=$(STAGING_DIR) PREFIX=/usr install +endef + +define LIBCLI_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(LIBCLI_MAKE_ARGS) DESTDIR=$(TARGET_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libcoap/Config.in b/buildroot/package/libcoap/Config.in new file mode 100644 index 0000000..6e0c190 --- /dev/null +++ b/buildroot/package/libcoap/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBCOAP + bool "libcoap" + help + libcoap is a C implementation of a lightweight + application-protocol for devices that are constrained their + resources such as computing power, RF range, memory, bandwith, + or network packet sizes. This protocol, CoAP, is standardized + by the IETF as RFC 7252. For further information related to + CoAP, see . + + https://github.com/obgm/libcoap diff --git a/buildroot/package/libcoap/libcoap.hash b/buildroot/package/libcoap/libcoap.hash new file mode 100644 index 0000000..deb94ec --- /dev/null +++ b/buildroot/package/libcoap/libcoap.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 f7e26dc232c177336474a14487771037a8fb32e311f5ccd076a00dc04b6d7b7a libcoap-v4.1.2.tar.gz +sha256 28b61fbf3c5477611d7f6ead97d15348934496d27dca815b34d45e622730e72e COPYING +sha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 LICENSE.GPL +sha256 9d5aeec17bdf82369bbe6e89efb07b7b35abefa044ea1d25cb2feeb70df1c208 LICENSE.BSD diff --git a/buildroot/package/libcoap/libcoap.mk b/buildroot/package/libcoap/libcoap.mk new file mode 100644 index 0000000..4f87886 --- /dev/null +++ b/buildroot/package/libcoap/libcoap.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libcoap +# +################################################################################ + +LIBCOAP_VERSION = v4.1.2 +LIBCOAP_SITE = $(call github,obgm,libcoap,$(LIBCOAP_VERSION)) +LIBCOAP_INSTALL_STAGING = YES +LIBCOAP_LICENSE = GPL-2.0+ or BSD-2-Clause +LIBCOAP_LICENSE_FILES = COPYING LICENSE.GPL LICENSE.BSD +LIBCOAP_DEPENDENCIES = host-pkgconf +LIBCOAP_CONF_OPTS = --disable-examples +LIBCOAP_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libcodec2/0001-fix-codec2-pc-in.patch b/buildroot/package/libcodec2/0001-fix-codec2-pc-in.patch new file mode 100644 index 0000000..5950219 --- /dev/null +++ b/buildroot/package/libcodec2/0001-fix-codec2-pc-in.patch @@ -0,0 +1,20 @@ +Fix includedir in codec2.pc.in + +The template file codec2.pc.in contains the wrong path to the header +files: they are installed in /usr/include/codec2 and not /usr/include/ +directly. + +Signed-off-by: Thomas Petazzoni + +Index: b/codec2.pc.in +=================================================================== +--- a/codec2.pc.in ++++ b/codec2.pc.in +@@ -1,6 +1,6 @@ + prefix=@CMAKE_INSTALL_PREFIX@ + libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ +-includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@/ ++includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@/codec2 + + Name: codec2 + Description: A speech codec for 2400 bit/s and below diff --git a/buildroot/package/libcodec2/Config.in b/buildroot/package/libcodec2/Config.in new file mode 100644 index 0000000..9a9eb86 --- /dev/null +++ b/buildroot/package/libcodec2/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBCODEC2 + bool "libcodec2" + help + Codec2 is an open source low bit rate speech codec designed + for communications quality speech between 700 and 3200 bit/s. + + http://rowetel.com/codec2.html + +if BR2_PACKAGE_LIBCODEC2 + +config BR2_PACKAGE_LIBCODEC2_EXAMPLES + bool "libcodec2_examples" + help + Install Codec2 examples. + +endif diff --git a/buildroot/package/libcodec2/libcodec2.hash b/buildroot/package/libcodec2/libcodec2.hash new file mode 100644 index 0000000..e401e9d --- /dev/null +++ b/buildroot/package/libcodec2/libcodec2.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 0695bb93cd985dd39f02f0db35ebc28a98b9b88747318f90774aba5f374eadb2 codec2-0.7.tar.xz +sha256 9ebb6f82b7380a62ac74c5f0322c88e6744dedf2ebe1f54d6f088282b39844bf COPYING diff --git a/buildroot/package/libcodec2/libcodec2.mk b/buildroot/package/libcodec2/libcodec2.mk new file mode 100644 index 0000000..3253a35 --- /dev/null +++ b/buildroot/package/libcodec2/libcodec2.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libcodec2 +# +################################################################################ + +LIBCODEC2_VERSION = 0.7 +LIBCODEC2_SITE = https://freedv.com/wp-content/uploads/sites/8/2017/10 +LIBCODEC2_SOURCE = codec2-$(LIBCODEC2_VERSION).tar.xz +LIBCODEC2_LICENSE = LGPL-2.1 +LIBCODEC2_LICENSE_FILES = COPYING +LIBCODEC2_INSTALL_STAGING = YES +LIBCODEC2_SUPPORTS_IN_SOURCE_BUILD = NO +LIBCODEC2_CONF_OPTS = -DUNITTEST=OFF + +ifeq ($(BR2_PACKAGE_LIBCODEC2_EXAMPLES),y) +LIBCODEC2_CONF_OPTS += -DINSTALL_EXAMPLES=ON +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libcofi/Config.in b/buildroot/package/libcofi/Config.in new file mode 100644 index 0000000..b9d22d4 --- /dev/null +++ b/buildroot/package/libcofi/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBCOFI + bool "libcofi" + depends on BR2_arm + # builds a shared library + depends on !BR2_STATIC_LIBS + help + A replacement for memcpy and memset functionality for the + Raspberry Pi with the intention of gaining greater + performance. + + https://github.com/simonjhall/copies-and-fills + +comment "libcofi needs a toolchain w/ dynamic library" + depends on BR2_arm + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libcofi/libcofi.hash b/buildroot/package/libcofi/libcofi.hash new file mode 100644 index 0000000..1baaece --- /dev/null +++ b/buildroot/package/libcofi/libcofi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 72ec89c19267612b316ec9c5835c07212b8f0a377c5b4c20b6e46e69a6e4a5e5 libcofi-7313fbe12b0593034d0a1b606bf33c7cf4ababce.tar.gz diff --git a/buildroot/package/libcofi/libcofi.mk b/buildroot/package/libcofi/libcofi.mk new file mode 100644 index 0000000..e611db6 --- /dev/null +++ b/buildroot/package/libcofi/libcofi.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libcofi +# +################################################################################ + +LIBCOFI_VERSION = 7313fbe12b0593034d0a1b606bf33c7cf4ababce +LIBCOFI_SITE = $(call github,simonjhall,copies-and-fills,$(LIBCOFI_VERSION)) +LIBCOFI_LICENSE = LGPL-2.1 +LIBCOFI_LICENSE_FILES = README.md + +define LIBCOFI_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define LIBCOFI_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/libcofi_rpi.so $(TARGET_DIR)/usr/lib/libcofi_rpi.so +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libconfig/Config.in b/buildroot/package/libconfig/Config.in new file mode 100644 index 0000000..75dacab --- /dev/null +++ b/buildroot/package/libconfig/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBCONFIG + bool "libconfig" + help + Libconfig is a simple library for manipulating structured + configuration files. The file format is more compact and more + readable than XML. And unlike XML, it is type-aware, so it is + not necessary to do string parsing in application code. + + http://www.hyperrealm.com/libconfig/ diff --git a/buildroot/package/libconfig/libconfig.hash b/buildroot/package/libconfig/libconfig.hash new file mode 100644 index 0000000..30110cb --- /dev/null +++ b/buildroot/package/libconfig/libconfig.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 e31daa390d8e4461c8830512fe2e13ba1a3d6a02a2305a02429eec61e68703f6 libconfig-1.5.tar.gz diff --git a/buildroot/package/libconfig/libconfig.mk b/buildroot/package/libconfig/libconfig.mk new file mode 100644 index 0000000..ed7e40f --- /dev/null +++ b/buildroot/package/libconfig/libconfig.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libconfig +# +################################################################################ + +LIBCONFIG_VERSION = 1.5 +LIBCONFIG_SITE = http://www.hyperrealm.com/libconfig +LIBCONFIG_LICENSE = LGPL-2.1+ +LIBCONFIG_LICENSE_FILES = COPYING.LIB +LIBCONFIG_INSTALL_STAGING = YES +LIBCONFIG_CONF_OPTS = --disable-examples + +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +LIBCONFIG_CONF_OPTS += --disable-cxx +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libconfuse/Config.in b/buildroot/package/libconfuse/Config.in new file mode 100644 index 0000000..b96b8f2 --- /dev/null +++ b/buildroot/package/libconfuse/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBCONFUSE + bool "libconfuse" + help + LibConfuse is a configuration file parser library written in + C. It supports sections and (lists of) values (strings, + integers, floats, booleans or other sections), as well as some + other features (such as single/double-quoted strings, + environment variable expansion, functions and nested include + statements. + + https://github.com/martinh/libconfuse/ diff --git a/buildroot/package/libconfuse/libconfuse.hash b/buildroot/package/libconfuse/libconfuse.hash new file mode 100644 index 0000000..826a926 --- /dev/null +++ b/buildroot/package/libconfuse/libconfuse.hash @@ -0,0 +1,4 @@ +# From https://github.com/martinh/libconfuse/releases/download/v3.2/confuse-3.2.tar.xz.md5 +md5 84259ac3bd495645ab2fe61654917232 confuse-3.2.tar.xz +# Locally computed +sha256 a46abb8696026d314197b6a70ae1a1c296342a9a68aa69b1935709c1477a4e48 confuse-3.1.tar.xz diff --git a/buildroot/package/libconfuse/libconfuse.mk b/buildroot/package/libconfuse/libconfuse.mk new file mode 100644 index 0000000..431fefd --- /dev/null +++ b/buildroot/package/libconfuse/libconfuse.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libconfuse +# +################################################################################ + +LIBCONFUSE_VERSION = 3.2 +LIBCONFUSE_SOURCE = confuse-$(LIBCONFUSE_VERSION).tar.xz +LIBCONFUSE_SITE = https://github.com/martinh/libconfuse/releases/download/v$(LIBCONFUSE_VERSION) +LIBCONFUSE_INSTALL_STAGING = YES +LIBCONFUSE_CONF_OPTS = --disable-rpath +LIBCONFUSE_LICENSE = ISC +LIBCONFUSE_LICENSE_FILES = LICENSE +LIBCONFUSE_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libcpprestsdk/0001-fix-xlocale-header-check.patch b/buildroot/package/libcpprestsdk/0001-fix-xlocale-header-check.patch new file mode 100644 index 0000000..ffed94a --- /dev/null +++ b/buildroot/package/libcpprestsdk/0001-fix-xlocale-header-check.patch @@ -0,0 +1,55 @@ +From a826b7b656c165bc35746d9af3ec371387d2bca1 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 23 Oct 2017 08:11:21 -0400 +Subject: [PATCH] fix xlocale header check + +asyncrt_utils.h checks if __GLIBC__ is not defined before including +xlocal.h. This will cause a compilation failure on uclibc and musl. + +Add a proper check in CMakeLists.txt and check for HAVE_XLOCALE_H +instead of __GLIBC__ + +Upstream-Status: Accepted +Signed-off-by: Adam Duskett +--- + Release/CMakeLists.txt | 3 +++ + Release/include/cpprest/asyncrt_utils.h | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/Release/CMakeLists.txt b/Release/CMakeLists.txt +index d57aa3d..eefae75 100644 +--- a/Release/CMakeLists.txt ++++ b/Release/CMakeLists.txt +@@ -42,6 +42,7 @@ include(cmake/cpprest_find_boost.cmake) + include(cmake/cpprest_find_zlib.cmake) + include(cmake/cpprest_find_openssl.cmake) + include(cmake/cpprest_find_websocketpp.cmake) ++include(CheckIncludeFiles) + + find_package(Threads REQUIRED) + if(THREADS_HAVE_PTHREAD_ARG) +@@ -56,6 +57,8 @@ if(CPPREST_EXCLUDE_WEBSOCKETS) + set(CPPREST_WEBSOCKETS_IMPL none CACHE STRING "Internal use.") + endif() + ++CHECK_INCLUDE_FILES(xlocale.h HAVE_XLOCALE_H) ++ + if(APPLE) # Note: also iOS + set(CPPREST_PPLX_IMPL apple CACHE STRING "Internal use.") + set(CPPREST_WEBSOCKETS_IMPL wspp CACHE STRING "Internal use.") +diff --git a/Release/include/cpprest/asyncrt_utils.h b/Release/include/cpprest/asyncrt_utils.h +index fac70a9..8faa2dc 100644 +--- a/Release/include/cpprest/asyncrt_utils.h ++++ b/Release/include/cpprest/asyncrt_utils.h +@@ -29,7 +29,7 @@ + + #ifndef _WIN32 + #include +-#if !defined(ANDROID) && !defined(__ANDROID__) && !defined(__GLIBC__) // CodePlex 269 ++#if !defined(ANDROID) && !defined(__ANDROID__) && defined(HAVE_XLOCALE_H) // CodePlex 269 + /* Systems using glibc: xlocale.h has been removed from glibc 2.26 + The above include of locale.h is sufficient + Further details: https://sourceware.org/git/?p=glibc.git;a=commit;h=f0be25b6336db7492e47d2e8e72eb8af53b5506d */ +-- +2.13.6 + diff --git a/buildroot/package/libcpprestsdk/0002-include-sys-time-for-struct-timeval.patch b/buildroot/package/libcpprestsdk/0002-include-sys-time-for-struct-timeval.patch new file mode 100644 index 0000000..12f049b --- /dev/null +++ b/buildroot/package/libcpprestsdk/0002-include-sys-time-for-struct-timeval.patch @@ -0,0 +1,28 @@ +From 25453f9c186cf441881b06bc5503d979acb0ab75 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 23 Oct 2017 09:38:11 -0400 +Subject: [PATCH] Include sys/time.h for struct timeval + +This is needed with musl. + +Upstream-Status: Accepted +Signed-off-by: Adam Duskett +--- + Release/include/cpprest/asyncrt_utils.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Release/include/cpprest/asyncrt_utils.h b/Release/include/cpprest/asyncrt_utils.h +index 8faa2dc..aab87a5 100644 +--- a/Release/include/cpprest/asyncrt_utils.h ++++ b/Release/include/cpprest/asyncrt_utils.h +@@ -28,6 +28,7 @@ + #endif + + #ifndef _WIN32 ++#include + #include + #if !defined(ANDROID) && !defined(__ANDROID__) && defined(HAVE_XLOCALE_H) // CodePlex 269 + /* Systems using glibc: xlocale.h has been removed from glibc 2.26 +-- +2.13.6 + diff --git a/buildroot/package/libcpprestsdk/0003-fix-strand.patch b/buildroot/package/libcpprestsdk/0003-fix-strand.patch new file mode 100644 index 0000000..f5710b3 --- /dev/null +++ b/buildroot/package/libcpprestsdk/0003-fix-strand.patch @@ -0,0 +1,28 @@ +From e75d642726c4c78c368e74660ef4bc5503f3ec12 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Sun, 14 Jan 2018 14:44:02 -0500 +Subject: [PATCH] fix strand + +From upstream, fixes compiling against boost 1.66 strand. + +Commit IDs 6b2e0480018530b616f61d5cdc786c92ba148bb7 + +Signed-off-by: Adam Duskett +--- + Release/include/pplx/threadpool.h | 2 +- + Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp b/Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp +index 0be40f6b..395632c3 100644 +--- a/Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp ++++ b/Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp +@@ -422,7 +422,7 @@ class connection : public config::socket_type::socket_con_type { + m_io_service = io_service; + + if (config::enable_multithreading) { +- m_strand = lib::make_shared( ++ m_strand = lib::make_shared( + lib::ref(*io_service)); + + m_async_read_handler = m_strand->wrap(lib::bind( diff --git a/buildroot/package/libcpprestsdk/0004-libcpprestsdk-fix-building-as-a-static-library.patch b/buildroot/package/libcpprestsdk/0004-libcpprestsdk-fix-building-as-a-static-library.patch new file mode 100644 index 0000000..de90017 --- /dev/null +++ b/buildroot/package/libcpprestsdk/0004-libcpprestsdk-fix-building-as-a-static-library.patch @@ -0,0 +1,38 @@ +From 8a9c3db14a390c0a8788405e52e9b8737a430191 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 12 Feb 2018 07:49:34 -0500 +Subject: [PATCH] libcpprestsdk: fix building as a static library + +Use pkg-config to find OpenSSL. This will automatically find any +dependent libraries and put them in the correct order for linking. + +Upstream status: submitted +https://github.com/Microsoft/cpprestsdk/pull/688 + +Signed-off-by: Adam Duskett +--- + Release/cmake/cpprest_find_openssl.cmake | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/Release/cmake/cpprest_find_openssl.cmake b/Release/cmake/cpprest_find_openssl.cmake +index 0b49a7e..2be8afb 100644 +--- a/Release/cmake/cpprest_find_openssl.cmake ++++ b/Release/cmake/cpprest_find_openssl.cmake +@@ -41,8 +41,12 @@ function(cpprest_find_openssl) + # This should prevent linking against the system provided 0.9.8y + set(_OPENSSL_VERSION "") + endif() +- find_package(OpenSSL 1.0.0 REQUIRED) +- ++ if(UNIX) ++ find_package(PkgConfig REQUIRED) ++ pkg_search_module(OPENSSL openssl REQUIRED) ++ else() ++ find_package(OpenSSL 1.0.0 REQUIRED) ++ endif() + INCLUDE(CheckCXXSourceCompiles) + set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}") + set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}") +-- +2.14.3 + diff --git a/buildroot/package/libcpprestsdk/Config.in b/buildroot/package/libcpprestsdk/Config.in new file mode 100644 index 0000000..a07159b --- /dev/null +++ b/buildroot/package/libcpprestsdk/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_LIBCPPRESTSDK + bool "libcpprestsdk" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # boost + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_ATOMIC + select BR2_PACKAGE_BOOST_CHRONO + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_RANDOM + select BR2_PACKAGE_BOOST_REGEX + select BR2_PACKAGE_BOOST_THREAD + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + The C++ REST SDK is a Microsoft project for cloud-based + client-server communication in native code using a modern + asynchronous C++ API design. This project aims to help C++ + developers connect to and interact with services. + + https://github.com/Microsoft/cpprestsdk + +comment "libcpprestsdk needs a toolchain w/ NPTL, C++, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_INSTALL_LIBSTDCPP || \ + !BR2_USE_WCHAR + +comment "libcpprestsdk needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/buildroot/package/libcpprestsdk/libcpprestsdk.hash b/buildroot/package/libcpprestsdk/libcpprestsdk.hash new file mode 100644 index 0000000..0bddfc9 --- /dev/null +++ b/buildroot/package/libcpprestsdk/libcpprestsdk.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 f38bc48e6fca969de794dcd65889df6563855cee5ff99742dafc6b2869976e71 libcpprestsdk-v2.10.1.tar.gz +sha256 5c191789f502ac87df83b57008d2fc3e47fbf31315381b5bc4309f6602d0fe97 license.txt diff --git a/buildroot/package/libcpprestsdk/libcpprestsdk.mk b/buildroot/package/libcpprestsdk/libcpprestsdk.mk new file mode 100644 index 0000000..4d30f07 --- /dev/null +++ b/buildroot/package/libcpprestsdk/libcpprestsdk.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libcpprestsdk +# +################################################################################ + +LIBCPPRESTSDK_VERSION = v2.10.1 +LIBCPPRESTSDK_SITE = $(call github,Microsoft,cpprestsdk,$(LIBCPPRESTSDK_VERSION)) +LIBCPPRESTSDK_LICENSE = MIT +LIBCPPRESTSDK_LICENSE_FILES = license.txt +LIBCPPRESTSDK_SUBDIR = Release +LIBCPPRESTSDK_DEPENDENCIES += host-pkgconf boost openssl zlib +LIBCPPRESTSDK_CONF_OPTS = -DWERROR=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/libcroco/0001-input-check-end-of-input-before-reading-a-byte.patch b/buildroot/package/libcroco/0001-input-check-end-of-input-before-reading-a-byte.patch new file mode 100644 index 0000000..831b1a7 --- /dev/null +++ b/buildroot/package/libcroco/0001-input-check-end-of-input-before-reading-a-byte.patch @@ -0,0 +1,62 @@ +From 898e3a8c8c0314d2e6b106809a8e3e93cf9d4394 Mon Sep 17 00:00:00 2001 +From: Ignacio Casal Quinteiro +Date: Sun, 16 Apr 2017 13:13:43 +0200 +Subject: [PATCH] input: check end of input before reading a byte + +Fixes CVE-2017-7960 + +When reading bytes we weren't check that the index wasn't +out of bound and this could produce an invalid read which +could deal to a security bug. + +Signed-off-by: Peter Korsgaard +--- + src/cr-input.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/src/cr-input.c b/src/cr-input.c +index 49000b1..3b63a88 100644 +--- a/src/cr-input.c ++++ b/src/cr-input.c +@@ -256,7 +256,7 @@ cr_input_new_from_uri (const gchar * a_file_uri, enum CREncoding a_enc) + *we should free buf here because it's own by CRInput. + *(see the last parameter of cr_input_new_from_buf(). + */ +- buf = NULL ; ++ buf = NULL; + } + + cleanup: +@@ -404,6 +404,8 @@ cr_input_get_nb_bytes_left (CRInput const * a_this) + enum CRStatus + cr_input_read_byte (CRInput * a_this, guchar * a_byte) + { ++ gulong nb_bytes_left = 0; ++ + g_return_val_if_fail (a_this && PRIVATE (a_this) + && a_byte, CR_BAD_PARAM_ERROR); + +@@ -413,6 +415,12 @@ cr_input_read_byte (CRInput * a_this, guchar * a_byte) + if (PRIVATE (a_this)->end_of_input == TRUE) + return CR_END_OF_INPUT_ERROR; + ++ nb_bytes_left = cr_input_get_nb_bytes_left (a_this); ++ ++ if (nb_bytes_left < 1) { ++ return CR_END_OF_INPUT_ERROR; ++ } ++ + *a_byte = PRIVATE (a_this)->in_buf[PRIVATE (a_this)->next_byte_index]; + + if (PRIVATE (a_this)->nb_bytes - +@@ -477,7 +485,6 @@ cr_input_read_char (CRInput * a_this, guint32 * a_char) + if (*a_char == '\n') { + PRIVATE (a_this)->end_of_line = TRUE; + } +- + } + + return status; +-- +2.11.0 + diff --git a/buildroot/package/libcroco/0002-tknzr-support-only-max-long-rgb-values.patch b/buildroot/package/libcroco/0002-tknzr-support-only-max-long-rgb-values.patch new file mode 100644 index 0000000..1a9bcd9 --- /dev/null +++ b/buildroot/package/libcroco/0002-tknzr-support-only-max-long-rgb-values.patch @@ -0,0 +1,46 @@ +From 9ad72875e9f08e4c519ef63d44cdbd94aa9504f7 Mon Sep 17 00:00:00 2001 +From: Ignacio Casal Quinteiro +Date: Sun, 16 Apr 2017 13:56:09 +0200 +Subject: [PATCH] tknzr: support only max long rgb values + +Fixes CVE-2017-7961 + +This fixes a possible out of bound when reading rgbs which +are longer than the support MAXLONG + +Signed-off-by: Peter Korsgaard +--- + src/cr-tknzr.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/cr-tknzr.c b/src/cr-tknzr.c +index 1a7cfeb..1548c35 100644 +--- a/src/cr-tknzr.c ++++ b/src/cr-tknzr.c +@@ -1279,6 +1279,11 @@ cr_tknzr_parse_rgb (CRTknzr * a_this, CRRgb ** a_rgb) + status = cr_tknzr_parse_num (a_this, &num); + ENSURE_PARSING_COND ((status == CR_OK) && (num != NULL)); + ++ if (num->val > G_MAXLONG) { ++ status = CR_PARSING_ERROR; ++ goto error; ++ } ++ + red = num->val; + cr_num_destroy (num); + num = NULL; +@@ -1298,6 +1303,11 @@ cr_tknzr_parse_rgb (CRTknzr * a_this, CRRgb ** a_rgb) + status = cr_tknzr_parse_num (a_this, &num); + ENSURE_PARSING_COND ((status == CR_OK) && (num != NULL)); + ++ if (num->val > G_MAXLONG) { ++ status = CR_PARSING_ERROR; ++ goto error; ++ } ++ + PEEK_BYTE (a_this, 1, &next_bytes[0]); + if (next_bytes[0] == '%') { + SKIP_CHARS (a_this, 1); +-- +2.11.0 + diff --git a/buildroot/package/libcroco/Config.in b/buildroot/package/libcroco/Config.in new file mode 100644 index 0000000..ad78a14 --- /dev/null +++ b/buildroot/package/libcroco/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBCROCO + bool "libcroco" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBGLIB2 + help + Libcroco is a standalone css2 parsing and manipulation + library. The parser provides a low level event driven SAC + like api and a css object model like api. + + Libcroco provides a CSS2 selection engine and an + experimental xml/css rendering engine. + + https://github.com/GNOME/libcroco + +comment "libcroco needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libcroco/libcroco.hash b/buildroot/package/libcroco/libcroco.hash new file mode 100644 index 0000000..83d2ffe --- /dev/null +++ b/buildroot/package/libcroco/libcroco.hash @@ -0,0 +1,2 @@ +# From http://ftp.acc.umu.se/pub/gnome/sources/libcroco/0.6/libcroco-0.6.12.sha256sum +sha256 ddc4b5546c9fb4280a5017e2707fbd4839034ed1aba5b7d4372212f34f84f860 libcroco-0.6.12.tar.xz diff --git a/buildroot/package/libcroco/libcroco.mk b/buildroot/package/libcroco/libcroco.mk new file mode 100644 index 0000000..612fd1f --- /dev/null +++ b/buildroot/package/libcroco/libcroco.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libcroco +# +################################################################################ + +LIBCROCO_VERSION_MAJOR = 0.6 +LIBCROCO_VERSION = $(LIBCROCO_VERSION_MAJOR).12 +LIBCROCO_SITE = http://ftp.gnome.org/pub/gnome/sources/libcroco/$(LIBCROCO_VERSION_MAJOR) +LIBCROCO_SOURCE = libcroco-$(LIBCROCO_VERSION).tar.xz +LIBCROCO_INSTALL_STAGING = YES +LIBCROCO_DEPENDENCIES = host-pkgconf libglib2 libxml2 +HOST_LIBCROCO_DEPENDENCIES = host-pkgconf host-libglib2 host-libxml2 +LIBCROCO_CONFIG_SCRIPTS = croco-$(LIBCROCO_VERSION_MAJOR)-config +# NEWS states that it's only LGPL +# Source code says v2.1+ even though COPYING.LIB is v2 +LIBCROCO_LICENSE = LGPL-2.1+ +LIBCROCO_LICENSE_FILES = COPYING.LIB + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libcrossguid/Config.in b/buildroot/package/libcrossguid/Config.in new file mode 100644 index 0000000..49060bc --- /dev/null +++ b/buildroot/package/libcrossguid/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBCROSSGUID + bool "libcrossguid" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Lightweight cross platform C++ GUID/UUID library + + https://github.com/graeme-hill/crossguid + +comment "libcrossguid needs a toolchain w/ C++, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 diff --git a/buildroot/package/libcrossguid/libcrossguid.hash b/buildroot/package/libcrossguid/libcrossguid.hash new file mode 100644 index 0000000..a991da5 --- /dev/null +++ b/buildroot/package/libcrossguid/libcrossguid.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 022c9f02cc36e865cd8fd0111a597ff2bd91988deeb348dbe2aba64aed1abd99 libcrossguid-8f399e8bd4252be9952f3dfa8199924cc8487ca4.tar.gz diff --git a/buildroot/package/libcrossguid/libcrossguid.mk b/buildroot/package/libcrossguid/libcrossguid.mk new file mode 100644 index 0000000..46d9a9d --- /dev/null +++ b/buildroot/package/libcrossguid/libcrossguid.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libcrossguid +# +################################################################################ + +LIBCROSSGUID_VERSION = 8f399e8bd4252be9952f3dfa8199924cc8487ca4 +LIBCROSSGUID_SITE = $(call github,graeme-hill,crossguid,$(LIBCROSSGUID_VERSION)) +LIBCROSSGUID_LICENSE = MIT +LIBCROSSGUID_LICENSE_FILES = LICENSE +LIBCROSSGUID_INSTALL_STAGING = YES +# only a static library +LIBCROSSGUID_INSTALL_TARGET = NO +LIBCROSSGUID_DEPENDENCIES = util-linux + +define LIBCROSSGUID_BUILD_CMDS + (cd $(@D); $(TARGET_CXX) $(TARGET_CXXFLAGS) -std=c++11 -DGUID_LIBUUID \ + -c guid.cpp -o guid.o) + (cd $(@D); $(TARGET_AR) rvs libcrossguid.a guid.o) +endef + +define LIBCROSSGUID_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 644 $(@D)/libcrossguid.a \ + $(STAGING_DIR)/usr/lib/libcrossguid.a + $(INSTALL) -D -m 644 $(@D)/guid.h $(STAGING_DIR)/usr/include/guid.h +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libcsv/Config.in b/buildroot/package/libcsv/Config.in new file mode 100644 index 0000000..797c735 --- /dev/null +++ b/buildroot/package/libcsv/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBCSV + bool "libcsv" + help + libcsv is a small, simple and fast CSV library written in + pure ANSI C89 that can read and write CSV data. It provides + a straight-forward interface using callback functions to + handle parsed fields and rows and can parse improperly + formatted CSV files. + + https://sourceforge.net/projects/libcsv/ diff --git a/buildroot/package/libcsv/libcsv.hash b/buildroot/package/libcsv/libcsv.hash new file mode 100644 index 0000000..e35c44f --- /dev/null +++ b/buildroot/package/libcsv/libcsv.hash @@ -0,0 +1,2 @@ +#locally computed +sha256 d9c0431cb803ceb9896ce74f683e6e5a0954e96ae1d9e4028d6e0f967bebd7e4 libcsv-3.0.3.tar.gz diff --git a/buildroot/package/libcsv/libcsv.mk b/buildroot/package/libcsv/libcsv.mk new file mode 100644 index 0000000..d0ce643 --- /dev/null +++ b/buildroot/package/libcsv/libcsv.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libcsv +# +################################################################################ + +LIBCSV_VERSION = 3.0.3 +LIBCSV_SITE = http://sourceforge.net/projects/libcsv/files +LIBCSV_LICENSE = LGPL-2.1+ +LIBCSV_LICENSE_FILES = COPYING.LESSER +LIBCSV_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libcue/Config.in b/buildroot/package/libcue/Config.in new file mode 100644 index 0000000..69e6495 --- /dev/null +++ b/buildroot/package/libcue/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBCUE + bool "libcue" + select BR2_PACKAGE_FLEX + help + CUE Sheet Parser Library + + https://github.com/lipnitsk/libcue diff --git a/buildroot/package/libcue/libcue.hash b/buildroot/package/libcue/libcue.hash new file mode 100644 index 0000000..779cda0 --- /dev/null +++ b/buildroot/package/libcue/libcue.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 c3c46d58cebf15b3fe07e6f649014694d338ddd880e941bfb1fd3cedae66c62f libcue-v1.4.0.tar.gz diff --git a/buildroot/package/libcue/libcue.mk b/buildroot/package/libcue/libcue.mk new file mode 100644 index 0000000..7f8e45e --- /dev/null +++ b/buildroot/package/libcue/libcue.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libcue +# +################################################################################ + +LIBCUE_VERSION = v1.4.0 +LIBCUE_SITE = $(call github,lipnitsk,libcue,$(LIBCUE_VERSION)) +LIBCUE_LICENSE = GPL-2.0, BSD-2-Clause (rem.c) +LIBCUE_LICENSE_FILES = COPYING +LIBCUE_DEPENDENCIES = host-bison host-flex flex +LIBCUE_INSTALL_STAGING = YES +LIBCUE_AUTORECONF = YES + +LIBCUE_MAKE = $(MAKE1) + +# Needed for autoreconf +define LIBCUE_MAKE_CONFIG_DIR + mkdir $(@D)/config +endef +LIBCUE_POST_EXTRACT_HOOKS += LIBCUE_MAKE_CONFIG_DIR + +$(eval $(autotools-package)) diff --git a/buildroot/package/libcuefile/0001-fix-static-link.patch b/buildroot/package/libcuefile/0001-fix-static-link.patch new file mode 100644 index 0000000..6eb5890 --- /dev/null +++ b/buildroot/package/libcuefile/0001-fix-static-link.patch @@ -0,0 +1,25 @@ +Fix static only build + +Make sure to build the shared library only if BUILD_SHARED_LIBS is +ON. Normally, CMake takes care of this automatically, but libcuefile +wants to build both the shared and static variants, so the normal +logic of CMake doesn't apply. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/CMakeLists.txt +=================================================================== +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -4,7 +4,11 @@ + add_library(cuefile-static STATIC cd cdtext cue_parse cue_print cue_scan cuefile time toc toc_parse toc_print toc_scan) + set_target_properties(cuefile-static PROPERTIES OUTPUT_NAME cuefile CLEAN_DIRECT_OUTPUT 1) + ++if (BUILD_SHARED_LIBS) + add_library(cuefile-shared SHARED cd cdtext cue_parse cue_print cue_scan cuefile time toc toc_parse toc_print toc_scan) + set_target_properties(cuefile-shared PROPERTIES OUTPUT_NAME cuefile CLEAN_DIRECT_OUTPUT 1 VERSION 0.0.0 SOVERSION 0) + + install(TARGETS cuefile-static cuefile-shared LIBRARY DESTINATION "lib${LIB_SUFFIX}" ARCHIVE DESTINATION "lib${LIB_SUFFIX}") ++else (BUILD_SHARED_LIBS) ++install(TARGETS cuefile-static LIBRARY DESTINATION "lib${LIB_SUFFIX}" ARCHIVE DESTINATION "lib${LIB_SUFFIX}") ++endif (BUILD_SHARED_LIBS) diff --git a/buildroot/package/libcuefile/Config.in b/buildroot/package/libcuefile/Config.in new file mode 100644 index 0000000..416b3e1 --- /dev/null +++ b/buildroot/package/libcuefile/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBCUEFILE + bool "libcuefile" + help + Cue File library from Musepack + + http://www.musepack.net/ diff --git a/buildroot/package/libcuefile/libcuefile.hash b/buildroot/package/libcuefile/libcuefile.hash new file mode 100644 index 0000000..57db91f --- /dev/null +++ b/buildroot/package/libcuefile/libcuefile.hash @@ -0,0 +1,4 @@ +# From https://www.musepack.net/index.php?pg=src +md5 1a6ac52e1080fd54f0f59372345f1e4e libcuefile_r475.tar.gz +# Calculated based on the hash above +sha256 b681ca6772b3f64010d24de57361faecf426ee6182f5969fcf29b3f649133fe7 libcuefile_r475.tar.gz diff --git a/buildroot/package/libcuefile/libcuefile.mk b/buildroot/package/libcuefile/libcuefile.mk new file mode 100644 index 0000000..66b589b --- /dev/null +++ b/buildroot/package/libcuefile/libcuefile.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libcuefile +# +################################################################################ + +LIBCUEFILE_VERSION = r475 +LIBCUEFILE_SITE = http://files.musepack.net/source +LIBCUEFILE_SOURCE = libcuefile_$(LIBCUEFILE_VERSION).tar.gz +LIBCUEFILE_INSTALL_STAGING = YES +LIBCUEFILE_LICENSE = GPL-2.0+ +LIBCUEFILE_LICENSE_FILES = COPYING + +define LIBCUEFILE_INSTALL_STAGING_INCLUDES + cp -r $(@D)/include $(STAGING_DIR)/usr +endef + +define LIBCUEFILE_INSTALL_TARGET_INCLUDES + cp -r $(@D)/include $(TARGET_DIR)/usr +endef + +LIBCUEFILE_POST_INSTALL_STAGING_HOOKS += LIBCUEFILE_INSTALL_STAGING_INCLUDES +LIBCUEFILE_POST_INSTALL_TARGET_HOOKS += LIBCUEFILE_INSTALL_TARGET_INCLUDES + +$(eval $(cmake-package)) diff --git a/buildroot/package/libcurl/Config.in b/buildroot/package/libcurl/Config.in new file mode 100644 index 0000000..21c2ee2 --- /dev/null +++ b/buildroot/package/libcurl/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_LIBCURL + bool "libcurl" + help + cURL is a tool for getting files from FTP, HTTP, Gopher, + Telnet, and Dict servers, using any of the supported + protocols. + + http://curl.haxx.se/ + +if BR2_PACKAGE_LIBCURL + +config BR2_PACKAGE_CURL + bool "curl binary" + help + Install curl binary as well + +config BR2_PACKAGE_LIBCURL_VERBOSE + bool "enable verbose strings" + help + Enable verbose text strings + +endif diff --git a/buildroot/package/libcurl/libcurl.hash b/buildroot/package/libcurl/libcurl.hash new file mode 100644 index 0000000..9a57153 --- /dev/null +++ b/buildroot/package/libcurl/libcurl.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://curl.haxx.se/download/curl-7.61.0.tar.xz.asc +# with key 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2 +sha256 ef6e55192d04713673b4409ccbcb4cb6cd723137d6e10ca45b0c593a454e1720 curl-7.61.0.tar.xz +sha256 5f3849ec38ddb927e79f514bf948890c41b8d1407286a49609b8fb1585931095 COPYING diff --git a/buildroot/package/libcurl/libcurl.mk b/buildroot/package/libcurl/libcurl.mk new file mode 100644 index 0000000..f07a537 --- /dev/null +++ b/buildroot/package/libcurl/libcurl.mk @@ -0,0 +1,104 @@ +################################################################################ +# +# libcurl +# +################################################################################ + +LIBCURL_VERSION = 7.61.0 +LIBCURL_SOURCE = curl-$(LIBCURL_VERSION).tar.xz +LIBCURL_SITE = https://curl.haxx.se/download +LIBCURL_DEPENDENCIES = host-pkgconf \ + $(if $(BR2_PACKAGE_ZLIB),zlib) \ + $(if $(BR2_PACKAGE_LIBIDN),libidn) \ + $(if $(BR2_PACKAGE_RTMPDUMP),rtmpdump) +LIBCURL_LICENSE = curl +LIBCURL_LICENSE_FILES = COPYING +LIBCURL_INSTALL_STAGING = YES + +# We disable NTLM support because it uses fork(), which doesn't work +# on non-MMU platforms. Moreover, this authentication method is +# probably almost never used. See +# http://curl.haxx.se/docs/manpage.html#--ntlm. +LIBCURL_CONF_OPTS = --disable-manual --disable-ntlm-wb \ + --enable-hidden-symbols --with-random=/dev/urandom --disable-curldebug + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBCURL_CONF_OPTS += --enable-threaded-resolver +else +LIBCURL_CONF_OPTS += --disable-threaded-resolver +endif + +ifeq ($(BR2_PACKAGE_LIBCURL_VERBOSE),y) +LIBCURL_CONF_OPTS += --enable-verbose +else +LIBCURL_CONF_OPTS += --disable-verbose +endif + +LIBCURL_CONFIG_SCRIPTS = curl-config + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBCURL_DEPENDENCIES += openssl +# configure adds the cross openssl dir to LD_LIBRARY_PATH which screws up +# native stuff during the rest of configure when target == host. +# Fix it by setting LD_LIBRARY_PATH to something sensible so those libs +# are found first. +LIBCURL_CONF_ENV += LD_LIBRARY_PATH=$(if $(LD_LIBRARY_PATH),$(LD_LIBRARY_PATH):)/lib:/usr/lib +LIBCURL_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr \ + --with-ca-path=/etc/ssl/certs +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +LIBCURL_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr +LIBCURL_DEPENDENCIES += gnutls +else ifeq ($(BR2_PACKAGE_LIBNSS),y) +LIBCURL_CONF_OPTS += --with-nss=$(STAGING_DIR)/usr +LIBCURL_CONF_ENV += CPPFLAGS="$(TARGET_CPPFLAGS) `$(PKG_CONFIG_HOST_BINARY) nspr nss --cflags`" +LIBCURL_DEPENDENCIES += libnss +else ifeq ($(BR2_PACKAGE_MBEDTLS),y) +LIBCURL_CONF_OPTS += --with-mbedtls=$(STAGING_DIR)/usr +LIBCURL_DEPENDENCIES += mbedtls +else +LIBCURL_CONF_OPTS += --without-ssl --without-gnutls \ + --without-polarssl --without-nss --without-mbedtls +endif + +ifeq ($(BR2_PACKAGE_C_ARES),y) +LIBCURL_DEPENDENCIES += c-ares +LIBCURL_CONF_OPTS += --enable-ares +else +LIBCURL_CONF_OPTS += --disable-ares +endif + +# Configure curl to support libssh2 +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +LIBCURL_DEPENDENCIES += libssh2 +LIBCURL_CONF_OPTS += --with-libssh2 +else +LIBCURL_CONF_OPTS += --without-libssh2 +endif + +define LIBCURL_FIX_DOT_PC + printf 'Requires: openssl\n' >>$(@D)/libcurl.pc.in +endef +LIBCURL_POST_PATCH_HOOKS += $(if $(BR2_PACKAGE_OPENSSL),LIBCURL_FIX_DOT_PC) + +ifeq ($(BR2_PACKAGE_CURL),) +define LIBCURL_TARGET_CLEANUP + rm -rf $(TARGET_DIR)/usr/bin/curl +endef +LIBCURL_POST_INSTALL_TARGET_HOOKS += LIBCURL_TARGET_CLEANUP +endif + +HOST_LIBCURL_DEPENDENCIES = host-openssl +HOST_LIBCURL_CONF_OPTS = \ + --disable-manual \ + --disable-ntlm-wb \ + --disable-curldebug \ + --with-ssl \ + --without-gnutls \ + --without-mbedtls \ + --without-polarssl \ + --without-nss + +HOST_LIBCURL_POST_PATCH_HOOKS += LIBCURL_FIX_DOT_PC + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libdaemon/0001-testd-use-unistd-h-instead-of-sys-unistd-h.patch b/buildroot/package/libdaemon/0001-testd-use-unistd-h-instead-of-sys-unistd-h.patch new file mode 100644 index 0000000..c8f4270 --- /dev/null +++ b/buildroot/package/libdaemon/0001-testd-use-unistd-h-instead-of-sys-unistd-h.patch @@ -0,0 +1,16 @@ +examples/testd.c: As the C POSIX library recommends include the +instead of . This removes an error when building libdaemon +against the musl C library. + +Signed-off-by: Jörg Krause +--- libdaemon-0.14.orig/examples/testd.c 2014-08-30 00:27:08.359832977 +0200 ++++ libdaemon-0.14/examples/testd.c 2014-08-30 00:27:25.439832670 +0200 +@@ -23,7 +23,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include diff --git a/buildroot/package/libdaemon/Config.in b/buildroot/package/libdaemon/Config.in new file mode 100644 index 0000000..bfcedc1 --- /dev/null +++ b/buildroot/package/libdaemon/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBDAEMON + bool "libdaemon" + # needs fork() + depends on BR2_USE_MMU + help + libdaemon is a lightweight C library that eases the + writing of UNIX daemons. + + http://0pointer.de/lennart/projects/libdaemon/ diff --git a/buildroot/package/libdaemon/libdaemon.hash b/buildroot/package/libdaemon/libdaemon.hash new file mode 100644 index 0000000..8dbbb5a --- /dev/null +++ b/buildroot/package/libdaemon/libdaemon.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 fd23eb5f6f986dcc7e708307355ba3289abe03cc381fc47a80bca4a50aa6b834 libdaemon-0.14.tar.gz diff --git a/buildroot/package/libdaemon/libdaemon.mk b/buildroot/package/libdaemon/libdaemon.mk new file mode 100644 index 0000000..a8f7510 --- /dev/null +++ b/buildroot/package/libdaemon/libdaemon.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libdaemon +# +################################################################################ + +LIBDAEMON_VERSION = 0.14 +LIBDAEMON_SITE = http://0pointer.de/lennart/projects/libdaemon +LIBDAEMON_LICENSE = LGPL-2.1+ +LIBDAEMON_LICENSE_FILES = LICENSE +LIBDAEMON_INSTALL_STAGING = YES +LIBDAEMON_CONF_ENV = ac_cv_func_setpgrp_void=no +LIBDAEMON_CONF_OPTS = --disable-lynx +LIBDAEMON_DEPENDENCIES = host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/libdcadec/Config.in b/buildroot/package/libdcadec/Config.in new file mode 100644 index 0000000..2687a18 --- /dev/null +++ b/buildroot/package/libdcadec/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBDCADEC + bool "libdcadec" + help + dcadec is a free DTS Coherent Acoustics decoder with support + for HD extensions. + + https://github.com/foo86/dcadec diff --git a/buildroot/package/libdcadec/libdcadec.hash b/buildroot/package/libdcadec/libdcadec.hash new file mode 100644 index 0000000..dda58d1 --- /dev/null +++ b/buildroot/package/libdcadec/libdcadec.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ed9d207fde3e8d576f3af8b0d1235b3371e315175757173689104efcaebf0d44 libdcadec-v0.2.0.tar.gz diff --git a/buildroot/package/libdcadec/libdcadec.mk b/buildroot/package/libdcadec/libdcadec.mk new file mode 100644 index 0000000..a5a98be --- /dev/null +++ b/buildroot/package/libdcadec/libdcadec.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# libdcadec +# +################################################################################ + +LIBDCADEC_VERSION = v0.2.0 +LIBDCADEC_SITE = $(call github,foo86,dcadec,$(LIBDCADEC_VERSION)) +LIBDCADEC_LICENSE = LGPL-2.1+ +LIBDCADEC_LICENSE_FILES = COPYING.LGPLv2.1 +LIBDCADEC_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),) +LIBDCADEC_SHARED = CONFIG_SHARED=1 +endif + +define LIBDCADEC_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu99" \ + $(LIBDCADEC_SHARED) -C $(@D) +endef + +define LIBDCADEC_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(LIBDCADEC_SHARED) DESTDIR=$(STAGING_DIR) PREFIX=/usr install +endef + +define LIBDCADEC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(LIBDCADEC_SHARED) DESTDIR=$(TARGET_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libdmtx/Config.in b/buildroot/package/libdmtx/Config.in new file mode 100644 index 0000000..b81b99c --- /dev/null +++ b/buildroot/package/libdmtx/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBDMTX + bool "libdmtx" + help + libdmtx is a software library that enables programs to read + and write Data Matrix barcodes of the modern ECC200 variety. + + http://www.libdmtx.org/ diff --git a/buildroot/package/libdmtx/libdmtx.hash b/buildroot/package/libdmtx/libdmtx.hash new file mode 100644 index 0000000..505baf4 --- /dev/null +++ b/buildroot/package/libdmtx/libdmtx.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 686bcfb44e50b96345aa53f41e285f2118a2cf87a333b69b74165a2e7ddca492 libdmtx-0.7.4.tar.gz diff --git a/buildroot/package/libdmtx/libdmtx.mk b/buildroot/package/libdmtx/libdmtx.mk new file mode 100644 index 0000000..f718b13 --- /dev/null +++ b/buildroot/package/libdmtx/libdmtx.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libdmtx +# +################################################################################ + +LIBDMTX_VERSION = 0.7.4 +LIBDMTX_SITE = http://downloads.sourceforge.net/project/libdmtx/libdmtx/$(LIBDMTX_VERSION) +LIBDMTX_LICENSE = BSD-2-Clause or Special Permission +LIBDMTX_LICENSE_FILES = LICENSE +LIBDMTX_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libdnet/0001-python-gcc.patch b/buildroot/package/libdnet/0001-python-gcc.patch new file mode 100644 index 0000000..ea732e4 --- /dev/null +++ b/buildroot/package/libdnet/0001-python-gcc.patch @@ -0,0 +1,20 @@ +--- a/python/dnet.c 2006-01-19 18:08:23.000000000 +1100 ++++ b/python/dnet.c 2008-09-03 16:30:47.000000000 +1000 +@@ -2726,7 +2726,7 @@ + PyObject *__pyx_3 = 0; + unsigned short __pyx_4; + Py_INCREF(__pyx_v_self); +- ((PyObject*)__pyx_v_next) = Py_None; Py_INCREF(((PyObject*)__pyx_v_next)); ++ __pyx_v_next = (struct __pyx_obj_4dnet_addr*)Py_None; Py_INCREF(((PyObject*)__pyx_v_next)); + + /* "/Users/dugsong/projects/libdnet/python/./dnet.pyx":634 */ + __pyx_1 = (((struct __pyx_obj_4dnet___addr_ip4_iter *)__pyx_v_self)->cur <= ((struct __pyx_obj_4dnet___addr_ip4_iter *)__pyx_v_self)->max); +@@ -2738,7 +2739,7 @@ + Py_DECREF(__pyx_2); __pyx_2 = 0; + if (!__Pyx_TypeTest(__pyx_3, __pyx_ptype_4dnet_addr)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; goto __pyx_L1;} + Py_DECREF(((PyObject *)__pyx_v_next)); +- ((PyObject *)__pyx_v_next) = __pyx_3; ++ __pyx_v_next = (struct __pyx_obj_4dnet_addr*)__pyx_3; + __pyx_3 = 0; + + /* "/Users/dugsong/projects/libdnet/python/./dnet.pyx":636 */ diff --git a/buildroot/package/libdnet/0002-python-makefile.patch b/buildroot/package/libdnet/0002-python-makefile.patch new file mode 100644 index 0000000..fb41e43 --- /dev/null +++ b/buildroot/package/libdnet/0002-python-makefile.patch @@ -0,0 +1,16 @@ +--- + python/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +Index: libdnet-1.11/python/Makefile.am +=================================================================== +--- libdnet-1.11.orig/python/Makefile.am ++++ libdnet-1.11/python/Makefile.am +@@ -11,6 +11,7 @@ + pyrexc $(srcdir)/dnet.pyx + + python-build: $(srcdir)/dnet.c ++ CC="$(CC)" LDSHARED="$(CC) -shared" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" $(PYTHON) setup.py build_ext -I$(PYINCDIR) -L$(PYLIBDIR) + $(PYTHON) setup.py build + touch python-build + diff --git a/buildroot/package/libdnet/Config.in b/buildroot/package/libdnet/Config.in new file mode 100644 index 0000000..e7ba3a2 --- /dev/null +++ b/buildroot/package/libdnet/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBDNET + bool "libdnet" + help + libdnet - simplified interface to low-level networking + routines. + + http://libdnet.sourceforge.net/ + +if BR2_PACKAGE_LIBDNET + +config BR2_PACKAGE_LIBDNET_PYTHON + bool "libdnet python module" + depends on BR2_PACKAGE_PYTHON + help + dnet module for python + +comment "dnet module for python requires python package" + depends on !BR2_PACKAGE_PYTHON + +endif diff --git a/buildroot/package/libdnet/libdnet.hash b/buildroot/package/libdnet/libdnet.hash new file mode 100644 index 0000000..ee41872 --- /dev/null +++ b/buildroot/package/libdnet/libdnet.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 0eb78415c8f2564c2f1e8ad36e98473348d9c94852f796a226360c716cc7ca53 libdnet-1.11.tar.gz diff --git a/buildroot/package/libdnet/libdnet.mk b/buildroot/package/libdnet/libdnet.mk new file mode 100644 index 0000000..00d9c4f --- /dev/null +++ b/buildroot/package/libdnet/libdnet.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libdnet +# +################################################################################ + +LIBDNET_VERSION = 1.11 +LIBDNET_SITE = http://downloads.sourceforge.net/project/libdnet/libdnet/libdnet-$(LIBDNET_VERSION) +LIBDNET_LICENSE = BSD-3-Clause +LIBDNET_LICENSE_FILES = LICENSE +LIBDNET_INSTALL_STAGING = YES +LIBDNET_AUTORECONF = YES +LIBDNET_CONF_OPTS = \ + --with-gnu-ld \ + --with-check=no + +ifneq ($(BR2_PACKAGE_LIBDNET_PYTHON),) +LIBDNET_DEPENDENCIES = python +LIBDNET_CONF_OPTS += --with-python +LIBDNET_MAKE_OPTS = PYINCDIR=$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) PYLIBDIR=$(STAGING_DIR)/usr/lib +LIBDNET_INSTALL_TARGET_OPTS = $(LIBDNET_MAKE_OPTS) DESTDIR=$(TARGET_DIR) INSTALL_STRIP_FLAG=-s install-exec +LIBDNET_INSTALL_STAGING_OPTS = $(LIBDNET_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install +endif + +# Needed for autoreconf to work properly +define LIBDNET_FIXUP_ACINCLUDE_M4 + ln -sf config/acinclude.m4 $(@D) +endef + +LIBDNET_POST_EXTRACT_HOOKS += LIBDNET_FIXUP_ACINCLUDE_M4 + +define LIBDNET_REMOVE_CONFIG_SCRIPT + $(RM) -f $(TARGET_DIR)/usr/bin/dnet-config +endef + +LIBDNET_POST_INSTALL_TARGET_HOOKS += LIBDNET_REMOVE_CONFIG_SCRIPT + +$(eval $(autotools-package)) diff --git a/buildroot/package/libdri2/Config.in b/buildroot/package/libdri2/Config.in new file mode 100644 index 0000000..a10df74 --- /dev/null +++ b/buildroot/package/libdri2/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBDRI2 + bool "libdri2" + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XPROTO_DRI2PROTO + help + Library for the DRI2 extension to the X Window System. + + https://github.com/robclark/libdri2 + +comment "libdri2 needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libdri2/libdri2.hash b/buildroot/package/libdri2/libdri2.hash new file mode 100644 index 0000000..03a37ad --- /dev/null +++ b/buildroot/package/libdri2/libdri2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7c427f5c3fbda3d1df1dc77129e87605f4af1f3ad2adf2653c560d1703aa4395 libdri2-4f1eef3183df2b270c3d5cbef07343ee5127a6a4.tar.gz diff --git a/buildroot/package/libdri2/libdri2.mk b/buildroot/package/libdri2/libdri2.mk new file mode 100644 index 0000000..22854b5 --- /dev/null +++ b/buildroot/package/libdri2/libdri2.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libdri2 +# +################################################################################ + +LIBDRI2_VERSION = 4f1eef3183df2b270c3d5cbef07343ee5127a6a4 +LIBDRI2_SITE = $(call github,robclark,libdri2,$(LIBDRI2_VERSION)) +LIBDRI2_DEPENDENCIES = xlib_libXext xproto_dri2proto xlib_libXdamage libdrm +LIBDRI2_LICENSE = MIT +LIBDRI2_LICENSE_FILES = COPYING + +LIBDRI2_INSTALL_STAGING = YES +LIBDRI2_AUTORECONF = YES +LIBDRI2_CONF_ENV = xorg_cv_malloc0_returns_null=true + +$(eval $(autotools-package)) diff --git a/buildroot/package/libdrm/0001-Add-ARM-support-into-xf86drm.h.patch b/buildroot/package/libdrm/0001-Add-ARM-support-into-xf86drm.h.patch new file mode 100644 index 0000000..3c00e9c --- /dev/null +++ b/buildroot/package/libdrm/0001-Add-ARM-support-into-xf86drm.h.patch @@ -0,0 +1,56 @@ +From 2e3dd0040e676530f7e735fab335ff449b9b3f4d Mon Sep 17 00:00:00 2001 +From: Lauren Post +Date: Tue, 22 Mar 2016 22:08:25 +0100 +Subject: [PATCH] Add ARM support into xf86drm.h + +This provides support for Xorg interface. Without this the vivante +samples will hang during close requiring a reboot + +[Adapted from yocto project] +Upstream-Status: Pending +Signed-off-by: Lauren Post +Signed-off-by: Evan Kotara +[Thomas: change CAS code to only be used on ARMv6/ARMv7, and not +ARMv4/ARMv5, which don't support ldrex/strex. If no CAS implementation +is provided libdrm falls back to a system call for locking/unlocking.] +Signed-off-by: Thomas Petazzoni +--- + xf86drm.h | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +diff --git a/xf86drm.h b/xf86drm.h +index 481d882..72341f6 100644 +--- a/xf86drm.h ++++ b/xf86drm.h +@@ -469,6 +469,28 @@ do { register unsigned int __old __asm("o0"); \ + : "cr0", "memory"); \ + } while (0) + ++# elif defined (__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ ++ || defined (__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \ ++ || defined (__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) \ ++ || defined (__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ ++ || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ ++ || defined(__ARM_ARCH_7EM__) ++ #undef DRM_DEV_MODE ++ #define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) ++ ++ #define DRM_CAS(lock,old,new,__ret) \ ++ do { \ ++ __asm__ __volatile__ ( \ ++ "1: ldrex %0, [%1]\n" \ ++ " teq %0, %2\n" \ ++ " ite eq\n" \ ++ " strexeq %0, %3, [%1]\n" \ ++ " movne %0, #1\n" \ ++ : "=&r" (__ret) \ ++ : "r" (lock), "r" (old), "r" (new) \ ++ : "cc","memory"); \ ++ } while (0) ++ + #endif /* architecture */ + #endif /* __GNUC__ >= 2 */ + +-- +2.6.4 + diff --git a/buildroot/package/libdrm/0002-xf86atomic-require-CAS-support-in-libatomic_ops.patch b/buildroot/package/libdrm/0002-xf86atomic-require-CAS-support-in-libatomic_ops.patch new file mode 100644 index 0000000..ff920fb --- /dev/null +++ b/buildroot/package/libdrm/0002-xf86atomic-require-CAS-support-in-libatomic_ops.patch @@ -0,0 +1,32 @@ +From 7384f79f69fdb7b691cc5b0c28c301b3fe8b633e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 26 May 2016 10:46:57 +0200 +Subject: [PATCH] xf86atomic: require CAS support in libatomic_ops + +Since AO_compare_and_swap_full() is used by libdrm, AO_REQUIRE_CAS +must be defined before including so that we are sure +that CAS support will be provided. This is necessary to make sure that +the AO_compare_and_swap_full() function will be provided on all +architectures, including the ones that don't have built-in CAS support +such as SPARCv8. + +Signed-off-by: Thomas Petazzoni +--- + xf86atomic.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/xf86atomic.h b/xf86atomic.h +index 922b37d..d7017a5 100644 +--- a/xf86atomic.h ++++ b/xf86atomic.h +@@ -58,6 +58,7 @@ typedef struct { + #endif + + #if HAVE_LIB_ATOMIC_OPS ++#define AO_REQUIRE_CAS + #include + + #define HAS_ATOMIC_OPS 1 +-- +2.7.4 + diff --git a/buildroot/package/libdrm/0003-configure-Makefile.am-use-pkg-config-to-discover-lib.patch b/buildroot/package/libdrm/0003-configure-Makefile.am-use-pkg-config-to-discover-lib.patch new file mode 100644 index 0000000..0fbe77e --- /dev/null +++ b/buildroot/package/libdrm/0003-configure-Makefile.am-use-pkg-config-to-discover-lib.patch @@ -0,0 +1,162 @@ +From 57d544ff2f96a26cac07d5be00ff7b67678ae7b8 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 18 Dec 2017 13:08:39 +0100 +Subject: [PATCH] configure/Makefile.am: use pkg-config to discover + libatomic_ops + +The configure script currently tests the availability of libatomic_ops +by checking the presence of atomic_ops.h. While this is good enough as +an availability test, it is not sufficient as on some platforms, +libatomic_ops provides an actual shared library against which we +should be linked to access libatomic_ops functionality. + +Therefore, we instead use PKG_CHECK_MODULES() to test the availability +of libatomic_ops. Besides testing its availability, this also fills in +the ATOMIC_OPS_LIBS variable with the list of libraries we need to +link with to use libatomic_ops. + +All Mesa drivers that include xf86atomic.h have been updated to link +against ATOMIC_OPS_LIBS. + +Of course, if we're not using libatomic_ops, ATOMIC_OPS_LIBS is empty, +and we don't link against it. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Peter Seiderer +[Bernd: PKG_CHECK_MODULES should not fail when libatomic_ops is missing] +Signed-off-by: Bernd Kuhls +--- + amdgpu/Makefile.am | 2 +- + configure.ac | 2 +- + etnaviv/Makefile.am | 3 ++- + freedreno/Makefile.am | 3 ++- + intel/Makefile.am | 3 ++- + nouveau/Makefile.am | 2 +- + omap/Makefile.am | 2 +- + radeon/Makefile.am | 2 +- + tegra/Makefile.am | 2 +- + 9 files changed, 12 insertions(+), 9 deletions(-) + +diff --git a/amdgpu/Makefile.am b/amdgpu/Makefile.am +index a1b0d05c..b2bcceff 100644 +--- a/amdgpu/Makefile.am ++++ b/amdgpu/Makefile.am +@@ -36,7 +36,7 @@ AM_CPPFLAGS = -DAMDGPU_ASIC_ID_TABLE=\"${libdrmdatadir}/amdgpu.ids\" + libdrm_amdgpu_la_LTLIBRARIES = libdrm_amdgpu.la + libdrm_amdgpu_ladir = $(libdir) + libdrm_amdgpu_la_LDFLAGS = -version-number 1:0:0 -no-undefined +-libdrm_amdgpu_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ ++libdrm_amdgpu_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @ATOMIC_OPS_LIBS@ + + libdrm_amdgpu_la_SOURCES = $(LIBDRM_AMDGPU_FILES) + amdgpu_asic_id.lo: $(top_srcdir)/data/amdgpu.ids +diff --git a/configure.ac b/configure.ac +index 35378b33..501d0871 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -247,7 +247,7 @@ AC_CACHE_CHECK([for native atomic primitives], drm_cv_atomic_primitives, [ + ]],[[]])], [drm_cv_atomic_primitives="Intel"],[]) + + if test "x$drm_cv_atomic_primitives" = "xnone"; then +- AC_CHECK_HEADER([atomic_ops.h], drm_cv_atomic_primitives="libatomic-ops") ++ PKG_CHECK_MODULES(ATOMIC_OPS, [atomic_ops], drm_cv_atomic_primitives="libatomic-ops", true) + fi + + # atomic functions defined in & libc on Solaris +diff --git a/etnaviv/Makefile.am b/etnaviv/Makefile.am +index be96ba86..669cf14f 100644 +--- a/etnaviv/Makefile.am ++++ b/etnaviv/Makefile.am +@@ -12,7 +12,8 @@ libdrm_etnaviv_la_LDFLAGS = -version-number 1:0:0 -no-undefined + libdrm_etnaviv_la_LIBADD = \ + ../libdrm.la \ + @PTHREADSTUBS_LIBS@ \ +- @CLOCK_LIB@ ++ @CLOCK_LIB@ \ ++ @ATOMIC_OPS_LIBS@ + + libdrm_etnaviv_la_SOURCES = $(LIBDRM_ETNAVIV_FILES) + +diff --git a/freedreno/Makefile.am b/freedreno/Makefile.am +index cbb0d031..238407e3 100644 +--- a/freedreno/Makefile.am ++++ b/freedreno/Makefile.am +@@ -14,7 +14,8 @@ libdrm_freedreno_la_LDFLAGS = -version-number 1:0:0 -no-undefined + libdrm_freedreno_la_LIBADD = \ + ../libdrm.la \ + @PTHREADSTUBS_LIBS@ \ +- @CLOCK_LIB@ ++ @CLOCK_LIB@ \ ++ @ATOMIC_OPS_LIBS@ + + libdrm_freedreno_la_SOURCES = $(LIBDRM_FREEDRENO_FILES) + if HAVE_FREEDRENO_KGSL +diff --git a/intel/Makefile.am b/intel/Makefile.am +index c52e8c08..f3635a64 100644 +--- a/intel/Makefile.am ++++ b/intel/Makefile.am +@@ -38,7 +38,8 @@ libdrm_intel_la_LDFLAGS = -version-number 1:0:0 -no-undefined + libdrm_intel_la_LIBADD = ../libdrm.la \ + @PTHREADSTUBS_LIBS@ \ + @PCIACCESS_LIBS@ \ +- @CLOCK_LIB@ ++ @CLOCK_LIB@ \ ++ @ATOMIC_OPS_LIBS@ + + libdrm_intel_la_SOURCES = $(LIBDRM_INTEL_FILES) + +diff --git a/nouveau/Makefile.am b/nouveau/Makefile.am +index 344a8445..a4e6a78b 100644 +--- a/nouveau/Makefile.am ++++ b/nouveau/Makefile.am +@@ -10,7 +10,7 @@ AM_CFLAGS = \ + libdrm_nouveau_la_LTLIBRARIES = libdrm_nouveau.la + libdrm_nouveau_ladir = $(libdir) + libdrm_nouveau_la_LDFLAGS = -version-number 2:0:0 -no-undefined +-libdrm_nouveau_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ ++libdrm_nouveau_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @ATOMIC_OPS_LIBS@ + + libdrm_nouveau_la_SOURCES = $(LIBDRM_NOUVEAU_FILES) + +diff --git a/omap/Makefile.am b/omap/Makefile.am +index 599bb9de..524afee3 100644 +--- a/omap/Makefile.am ++++ b/omap/Makefile.am +@@ -7,7 +7,7 @@ AM_CFLAGS = \ + libdrm_omap_la_LTLIBRARIES = libdrm_omap.la + libdrm_omap_ladir = $(libdir) + libdrm_omap_la_LDFLAGS = -version-number 1:0:0 -no-undefined +-libdrm_omap_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ ++libdrm_omap_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @ATOMIC_OPS_LIBS@ + + libdrm_omap_la_SOURCES = omap_drm.c + +diff --git a/radeon/Makefile.am b/radeon/Makefile.am +index e2415314..c27d3c75 100644 +--- a/radeon/Makefile.am ++++ b/radeon/Makefile.am +@@ -33,7 +33,7 @@ AM_CFLAGS = \ + libdrm_radeon_la_LTLIBRARIES = libdrm_radeon.la + libdrm_radeon_ladir = $(libdir) + libdrm_radeon_la_LDFLAGS = -version-number 1:0:1 -no-undefined +-libdrm_radeon_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ ++libdrm_radeon_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @ATOMIC_OPS_LIBS@ + + libdrm_radeon_la_SOURCES = $(LIBDRM_RADEON_FILES) + +diff --git a/tegra/Makefile.am b/tegra/Makefile.am +index fb40be55..12abe8c4 100644 +--- a/tegra/Makefile.am ++++ b/tegra/Makefile.am +@@ -9,7 +9,7 @@ AM_CFLAGS = \ + libdrm_tegra_ladir = $(libdir) + libdrm_tegra_la_LTLIBRARIES = libdrm_tegra.la + libdrm_tegra_la_LDFLAGS = -version-number 0:0:0 -no-undefined +-libdrm_tegra_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ ++libdrm_tegra_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @ATOMIC_OPS_LIBS@ + + libdrm_tegra_la_SOURCES = \ + private.h \ +-- +2.14.3 + diff --git a/buildroot/package/libdrm/Config.in b/buildroot/package/libdrm/Config.in new file mode 100644 index 0000000..581f921 --- /dev/null +++ b/buildroot/package/libdrm/Config.in @@ -0,0 +1,108 @@ +menuconfig BR2_PACKAGE_LIBDRM + bool "libdrm" + depends on BR2_TOOLCHAIN_HAS_THREADS # libpthread-stubs + select BR2_PACKAGE_LIBPTHREAD_STUBS + help + Direct Rendering Manager + + http://dri.freedesktop.org/libdrm/ + +if BR2_PACKAGE_LIBDRM + +config BR2_PACKAGE_LIBDRM_HAS_ATOMIC + bool + default y if BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS || \ + BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + bool + select BR2_PACKAGE_LIBATOMIC_OPS if !BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_LIBDRM_INTEL + bool "intel" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + select BR2_PACKAGE_LIBPCIACCESS + help + Install intel graphics driver. + +config BR2_PACKAGE_LIBDRM_RADEON + bool "radeon" + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install AMD/ATI graphics driver. + +config BR2_PACKAGE_LIBDRM_AMDGPU + bool "amdgpu" + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install AMD GPU driver. + +config BR2_PACKAGE_LIBDRM_NOUVEAU + bool "nouveau" + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install NVIDIA graphics driver. + +config BR2_PACKAGE_LIBDRM_VMWGFX + bool "vmwgfx" + depends on BR2_i386 || BR2_x86_64 + help + Installs Vmware graphics driver. + +config BR2_PACKAGE_LIBDRM_OMAP + bool "omap (experimental)" + depends on BR2_arm + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install the TI OMAP driver using an experimental API. + +config BR2_PACKAGE_LIBDRM_ETNAVIV + bool "etnaviv (experimental)" + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install the Etnaviv/Vivante driver using an experimental API. + +config BR2_PACKAGE_LIBDRM_EXYNOS + bool "exynos (experimental)" + depends on BR2_arm + help + Install Samsung Exynos driver using an experimental API. + +config BR2_PACKAGE_LIBDRM_FREEDRENO + bool "freedreno" + depends on BR2_arm || BR2_aarch64 || BR2_aarch64_be + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install Qualcomm Snapdragon driver. + +config BR2_PACKAGE_LIBDRM_TEGRA + bool "tegra (experimental)" + depends on BR2_arm + depends on BR2_PACKAGE_LIBDRM_HAS_ATOMIC + select BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC + help + Install NVIDIA Tegra driver using an experimental API. + +config BR2_PACKAGE_LIBDRM_VC4 + bool "vc4" + depends on BR2_aarch64 || BR2_arm + help + Install vc4 (Raspberry Pi) driver. + +config BR2_PACKAGE_LIBDRM_INSTALL_TESTS + bool "Install test programs" + help + This option allows to install the libdrm test programs. + +endif + +comment "libdrm needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libdrm/libdrm.hash b/buildroot/package/libdrm/libdrm.hash new file mode 100644 index 0000000..0842411 --- /dev/null +++ b/buildroot/package/libdrm/libdrm.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/dri-devel/2017-December/160530.html +md5 5307a147dde67ac643f6753a42b5d32c libdrm-2.4.89.tar.bz2 +sha1 43123da26271df9a29deb687c1855bef3fed249c libdrm-2.4.89.tar.bz2 +sha256 629f9782aabbb4809166de5f24d26fe0766055255038f16935602d89f136a02e libdrm-2.4.89.tar.bz2 +sha512 380e4e46cd3971a73264bd1b482791fab0503268adb65ac81b674df009662cfb8ef5741e362f19670b2a43b1c46f022d857706c9a4bebed2b1cddaa317b7706d libdrm-2.4.89.tar.bz2 diff --git a/buildroot/package/libdrm/libdrm.mk b/buildroot/package/libdrm/libdrm.mk new file mode 100644 index 0000000..1c898a5 --- /dev/null +++ b/buildroot/package/libdrm/libdrm.mk @@ -0,0 +1,120 @@ +################################################################################ +# +# libdrm +# +################################################################################ + +LIBDRM_VERSION = 2.4.89 +LIBDRM_SOURCE = libdrm-$(LIBDRM_VERSION).tar.bz2 +LIBDRM_SITE = https://dri.freedesktop.org/libdrm +LIBDRM_LICENSE = MIT +LIBDRM_INSTALL_STAGING = YES + +# patch 0003-configure-Makefile.am-use-pkg-config-to-discover-lib.patch +# touching configure.ac/Makefile.am (and host-xutil_util-macros dependency) +LIBDRM_AUTORECONF = YES + +LIBDRM_DEPENDENCIES = \ + libpthread-stubs \ + host-pkgconf \ + host-xutil_util-macros + +LIBDRM_CONF_OPTS = \ + --disable-cairo-tests \ + --disable-manpages + +LIBDRM_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' + +ifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y) +LIBDRM_DEPENDENCIES += libatomic_ops +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +LIBDRM_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -DAO_NO_SPARC_V9" +endif +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_INTEL),y) +LIBDRM_CONF_OPTS += --enable-intel +LIBDRM_DEPENDENCIES += libpciaccess +else +LIBDRM_CONF_OPTS += --disable-intel +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_RADEON),y) +LIBDRM_CONF_OPTS += --enable-radeon +else +LIBDRM_CONF_OPTS += --disable-radeon +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_AMDGPU),y) +LIBDRM_CONF_OPTS += --enable-amdgpu +else +LIBDRM_CONF_OPTS += --disable-amdgpu +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_NOUVEAU),y) +LIBDRM_CONF_OPTS += --enable-nouveau +else +LIBDRM_CONF_OPTS += --disable-nouveau +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_VMWGFX),y) +LIBDRM_CONF_OPTS += --enable-vmwgfx +else +LIBDRM_CONF_OPTS += --disable-vmwgfx +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_OMAP),y) +LIBDRM_CONF_OPTS += --enable-omap-experimental-api +else +LIBDRM_CONF_OPTS += --disable-omap-experimental-api +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_ETNAVIV),y) +LIBDRM_CONF_OPTS += --enable-etnaviv-experimental-api +else +LIBDRM_CONF_OPTS += --disable-etnaviv-experimental-api +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_EXYNOS),y) +LIBDRM_CONF_OPTS += --enable-exynos-experimental-api +else +LIBDRM_CONF_OPTS += --disable-exynos-experimental-api +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_FREEDRENO),y) +LIBDRM_CONF_OPTS += --enable-freedreno +else +LIBDRM_CONF_OPTS += --disable-freedreno +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_TEGRA),y) +LIBDRM_CONF_OPTS += --enable-tegra-experimental-api +else +LIBDRM_CONF_OPTS += --disable-tegra-experimental-api +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_VC4),y) +LIBDRM_CONF_OPTS += --enable-vc4 +else +LIBDRM_CONF_OPTS += --disable-vc4 +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBDRM_CONF_OPTS += --enable-udev +LIBDRM_DEPENDENCIES += udev +else +LIBDRM_CONF_OPTS += --disable-udev +endif + +ifeq ($(BR2_PACKAGE_VALGRIND),y) +LIBDRM_CONF_OPTS += --enable-valgrind +LIBDRM_DEPENDENCIES += valgrind +else +LIBDRM_CONF_OPTS += --disable-valgrind +endif + +ifeq ($(BR2_PACKAGE_LIBDRM_INSTALL_TESTS),y) +LIBDRM_CONF_OPTS += --enable-install-test-programs +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libdvbcsa/0001-altivec-powerpc64.patch b/buildroot/package/libdvbcsa/0001-altivec-powerpc64.patch new file mode 100644 index 0000000..3605c14 --- /dev/null +++ b/buildroot/package/libdvbcsa/0001-altivec-powerpc64.patch @@ -0,0 +1,33 @@ +Fix compile on powerpc64/powerpc64le w/ altivec + +Correct the type of some vectors passed to vec_slo() or vec_sro(), which only +takes a char vector. + +Signed-off-by: Sam Bobroff + +--- a/src/dvbcsa_bs_altivec.h 2016-11-28 14:33:34.410021500 +1100 ++++ b/src/dvbcsa_bs_altivec.h 2016-11-28 14:34:25.442238715 +1100 +@@ -64,7 +64,7 @@ + } + case 0x29: { + dvbcsa_bs_word_t x = vec_splat_u8(10); +- return (dvbcsa_bs_word_t)vec_add(vec_splat_u8(0x1),vec_rl(x,x)); ++ return (dvbcsa_bs_word_t)vec_add((dvbcsa_bs_word_t)vec_splat_u8(0x1),vec_rl(x,x)); + } + case 0x40: { + dvbcsa_bs_word_t x = vec_splat_u8(4); +@@ -99,10 +99,10 @@ + #define SHVAL_14 BS_VAL8(0e) + #define SHVAL_7 BS_VAL8(07) + +-#define BS_SHL(a, n) ({ dvbcsa_bs_word_t x = SHVAL_##n; vec_sll(vec_slo((a), x), x); }) +-#define BS_SHR(a, n) ({ dvbcsa_bs_word_t x = SHVAL_##n; vec_srl(vec_sro((a), x), x); }) +-#define BS_SHL8(a, n) ({ dvbcsa_bs_word_t x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_slo((a), x); }) +-#define BS_SHR8(a, n) ({ dvbcsa_bs_word_t x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_sro((a), x); }) ++#define BS_SHL(a, n) ({ vector unsigned char x = SHVAL_##n; vec_sll(vec_slo((a), x), x); }) ++#define BS_SHR(a, n) ({ vector unsigned char x = SHVAL_##n; vec_srl(vec_sro((a), x), x); }) ++#define BS_SHL8(a, n) ({ vector unsigned char x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_slo((a), x); }) ++#define BS_SHR8(a, n) ({ vector unsigned char x = vec_splat_u8(n*2); x = vec_add(x,x); x = vec_add(x,x); vec_sro((a), x); }) + + #define BS_EXTRACT8(a, n) ((uint8_t*)&(a))[15 - (n)] + diff --git a/buildroot/package/libdvbcsa/Config.in b/buildroot/package/libdvbcsa/Config.in new file mode 100644 index 0000000..1253ffb --- /dev/null +++ b/buildroot/package/libdvbcsa/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBDVBCSA + bool "libdvbcsa" + help + libdvbcsa is a free implementation of the DVB Common + Scrambling Algorithm - DVB/CSA - with encryption and + decryption capabilities + + As libdvbcsa implements a standard, it is completely legal to + use it. + + http://www.videolan.org/developers/libdvbcsa.html diff --git a/buildroot/package/libdvbcsa/libdvbcsa.hash b/buildroot/package/libdvbcsa/libdvbcsa.hash new file mode 100644 index 0000000..d8360e6 --- /dev/null +++ b/buildroot/package/libdvbcsa/libdvbcsa.hash @@ -0,0 +1,4 @@ +# From http://download.videolan.org/pub/videolan/libdvbcsa/1.1.0/libdvbcsa-1.1.0.tar.gz.sha256 +sha256 4db78af5cdb2641dfb1136fe3531960a477c9e3e3b6ba19a2754d046af3f456d libdvbcsa-1.1.0.tar.gz +# From http://download.videolan.org/pub/videolan/libdvbcsa/1.1.0/libdvbcsa-1.1.0.tar.gz.sha1 +sha1 5f4640a7e93ae6494f24a881414e5c343f803365 libdvbcsa-1.1.0.tar.gz diff --git a/buildroot/package/libdvbcsa/libdvbcsa.mk b/buildroot/package/libdvbcsa/libdvbcsa.mk new file mode 100644 index 0000000..8b733e7 --- /dev/null +++ b/buildroot/package/libdvbcsa/libdvbcsa.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libdvbcsa +# +################################################################################ + +LIBDVBCSA_VERSION = 1.1.0 +LIBDVBCSA_SITE = http://get.videolan.org/libdvbcsa/$(LIBDVBCSA_VERSION) +LIBDVBCSA_LICENSE = GPL-2.0+ +LIBDVBCSA_LICENSE_FILES = COPYING +LIBDVBCSA_INSTALL_STAGING = YES + +ifeq ($(BR2_X86_CPU_HAS_MMX),y) +LIBDVBCSA_CONF_OPTS += --enable-mmx +else +LIBDVBCSA_CONF_OPTS += --disable-mmx +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +LIBDVBCSA_CONF_OPTS += --enable-sse2 +else +LIBDVBCSA_CONF_OPTS += --disable-sse2 +endif + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +LIBDVBCSA_CONF_OPTS += --enable-altivec +LIBDVBCSA_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -flax-vector-conversions" +else +LIBDVBCSA_CONF_OPTS += --disable-altivec +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libdvbpsi/Config.in b/buildroot/package/libdvbpsi/Config.in new file mode 100644 index 0000000..e52079b --- /dev/null +++ b/buildroot/package/libdvbpsi/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBDVBPSI + bool "libdvbpsi" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libdvbpsi is a simple library designed for decoding and + generation of MPEG TS and DVB PSI tables according to + standards ISO/IEC 13818 and ITU-T H.222.0. + + http://www.videolan.org/developers/libdvbpsi.html + +comment "libdvbpsi needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libdvbpsi/libdvbpsi.hash b/buildroot/package/libdvbpsi/libdvbpsi.hash new file mode 100644 index 0000000..cf76616 --- /dev/null +++ b/buildroot/package/libdvbpsi/libdvbpsi.hash @@ -0,0 +1,4 @@ +# From http://download.videolan.org/pub/libdvbpsi/1.3.0/libdvbpsi-1.3.0.tar.bz2.md5 +md5 2b217039a1299000c39423441f77e76a libdvbpsi-1.3.0.tar.bz2 +# From http://download.videolan.org/pub/libdvbpsi/1.3.0/libdvbpsi-1.3.0.tar.bz2.sha256 +sha256 a2fed1d11980662f919bbd1f29e2462719e0f6227e1a531310bd5a706db0a1fe libdvbpsi-1.3.0.tar.bz2 diff --git a/buildroot/package/libdvbpsi/libdvbpsi.mk b/buildroot/package/libdvbpsi/libdvbpsi.mk new file mode 100644 index 0000000..9a0a4ac --- /dev/null +++ b/buildroot/package/libdvbpsi/libdvbpsi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libdvbpsi +# +################################################################################ + +LIBDVBPSI_VERSION = 1.3.0 +LIBDVBPSI_SITE = http://download.videolan.org/pub/libdvbpsi/$(LIBDVBPSI_VERSION) +LIBDVBPSI_SOURCE = libdvbpsi-$(LIBDVBPSI_VERSION).tar.bz2 +LIBDVBPSI_LICENSE = LGPL-2.1+ +LIBDVBPSI_LICENSE_FILES = COPYING +LIBDVBPSI_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libdvbsi/Config.in b/buildroot/package/libdvbsi/Config.in new file mode 100644 index 0000000..fa0dcea --- /dev/null +++ b/buildroot/package/libdvbsi/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBDVBSI + bool "libdvbsi" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + help + C++ parsing library for Service Information (SI) in DVB + systems. With libdvbsi++ you can convert raw DVB service + information to a set of C++ objects, removing the need to + parse data manually. + + http://www.saftware.de/ + +comment "libdvbsi++ needs a toolchain w/ C++, wchar, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libdvbsi/libdvbsi.hash b/buildroot/package/libdvbsi/libdvbsi.hash new file mode 100644 index 0000000..7454625 --- /dev/null +++ b/buildroot/package/libdvbsi/libdvbsi.hash @@ -0,0 +1,2 @@ +# From http://www.saftware.de/libdvbsi++/libdvbsi++-0.3.7.tar.bz2.md5 +md5 7eb50352c06b17c499a6d51e18e99ec5 libdvbsi++-0.3.7.tar.bz2 diff --git a/buildroot/package/libdvbsi/libdvbsi.mk b/buildroot/package/libdvbsi/libdvbsi.mk new file mode 100644 index 0000000..bfddd64 --- /dev/null +++ b/buildroot/package/libdvbsi/libdvbsi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libdvbsi +# +################################################################################ + +LIBDVBSI_VERSION = 0.3.7 +LIBDVBSI_SOURCE = libdvbsi++-$(LIBDVBSI_VERSION).tar.bz2 +LIBDVBSI_SITE = http://www.saftware.de/libdvbsi++ +LIBDVBSI_INSTALL_STAGING = YES +LIBDVBSI_LICENSE = LGPL-2.1 +LIBDVBSI_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libdvdcss/Config.in b/buildroot/package/libdvdcss/Config.in new file mode 100644 index 0000000..a8c3b84 --- /dev/null +++ b/buildroot/package/libdvdcss/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBDVDCSS + bool "libdvdcss" + help + libdvdcss is a simple library designed for accessing DVDs like + a block device without having to bother about the decryption. + + http://www.videolan.org/developers/libdvdcss.html diff --git a/buildroot/package/libdvdcss/libdvdcss.hash b/buildroot/package/libdvdcss/libdvdcss.hash new file mode 100644 index 0000000..57abd77 --- /dev/null +++ b/buildroot/package/libdvdcss/libdvdcss.hash @@ -0,0 +1,2 @@ +# From http://download.videolan.org/pub/videolan/libdvdcss/1.4.0/libdvdcss-1.4.0.tar.bz2.sha256 +sha256 2089375984800df29a4817b37f3123c1706723342d6dab4d0a8b75c25c2c845a libdvdcss-1.4.0.tar.bz2 diff --git a/buildroot/package/libdvdcss/libdvdcss.mk b/buildroot/package/libdvdcss/libdvdcss.mk new file mode 100644 index 0000000..e5ba3af --- /dev/null +++ b/buildroot/package/libdvdcss/libdvdcss.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libdvdcss +# +################################################################################ + +LIBDVDCSS_VERSION = 1.4.0 +LIBDVDCSS_SOURCE = libdvdcss-$(LIBDVDCSS_VERSION).tar.bz2 +LIBDVDCSS_SITE = http://www.videolan.org/pub/videolan/libdvdcss/$(LIBDVDCSS_VERSION) +LIBDVDCSS_INSTALL_STAGING = YES +LIBDVDCSS_LICENSE = GPL-2.0+ +LIBDVDCSS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libdvdnav/0001-do-not-match-nios2-as-os2.patch b/buildroot/package/libdvdnav/0001-do-not-match-nios2-as-os2.patch new file mode 100644 index 0000000..27030bb --- /dev/null +++ b/buildroot/package/libdvdnav/0001-do-not-match-nios2-as-os2.patch @@ -0,0 +1,16 @@ +Fix misdetection while nios2 cross-compile + +Signed-off-bye: Waldemar Brodkorb + +diff -Nur libdvdnav-5.0.3.orig/configure.ac libdvdnav-5.0.3/configure.ac +--- libdvdnav-5.0.3.orig/configure.ac 2015-01-27 16:57:43.000000000 +0100 ++++ libdvdnav-5.0.3/configure.ac 2016-07-31 11:48:09.312947473 +0200 +@@ -73,7 +73,7 @@ + [*mingw32* | *cygwin*], [AC_CHECK_FUNCS(gettimeofday)]) + + AS_CASE([$host], +- [*os2*], [LDFLAGS="$LDFLAGS -no-undefined"]) ++ [*-os2*], [LDFLAGS="$LDFLAGS -no-undefined"]) + + dnl --------------------------------------------- + dnl threads diff --git a/buildroot/package/libdvdnav/Config.in b/buildroot/package/libdvdnav/Config.in new file mode 100644 index 0000000..8cfcb4a --- /dev/null +++ b/buildroot/package/libdvdnav/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBDVDNAV + bool "libdvdnav" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBDVDREAD + help + libdvdnav is a library that allows easy use of sophisticated + DVD navigation features such as DVD menus, multiangle + playback and even interactive DVD games. + + http://www.mplayerhq.hu + +comment "libdvdnav needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libdvdnav/libdvdnav.hash b/buildroot/package/libdvdnav/libdvdnav.hash new file mode 100644 index 0000000..d3b6fdb --- /dev/null +++ b/buildroot/package/libdvdnav/libdvdnav.hash @@ -0,0 +1,2 @@ +# From http://download.videolan.org/pub/videolan/libdvdnav/5.0.3/libdvdnav-5.0.3.tar.bz2.sha256 +sha256 5097023e3d2b36944c763f1df707ee06b19dc639b2b68fb30113a5f2cbf60b6d libdvdnav-5.0.3.tar.bz2 diff --git a/buildroot/package/libdvdnav/libdvdnav.mk b/buildroot/package/libdvdnav/libdvdnav.mk new file mode 100644 index 0000000..5cb47ab --- /dev/null +++ b/buildroot/package/libdvdnav/libdvdnav.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libdvdnav +# +################################################################################ + +LIBDVDNAV_VERSION = 5.0.3 +LIBDVDNAV_SOURCE = libdvdnav-$(LIBDVDNAV_VERSION).tar.bz2 +LIBDVDNAV_SITE = http://www.videolan.org/pub/videolan/libdvdnav/$(LIBDVDNAV_VERSION) +LIBDVDNAV_INSTALL_STAGING = YES +LIBDVDNAV_DEPENDENCIES = libdvdread host-pkgconf +LIBDVDNAV_LICENSE = GPL-2.0+ +LIBDVDNAV_LICENSE_FILES = COPYING +# 0001-do-not-match-nios2-as-os2.patch +LIBDVDNAV_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libdvdread/Config.in b/buildroot/package/libdvdread/Config.in new file mode 100644 index 0000000..91bec83 --- /dev/null +++ b/buildroot/package/libdvdread/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBDVDREAD + bool "libdvdread" + select BR2_PACKAGE_LIBDVDCSS + help + libdvdread provides a simple foundation for reading + DVD-Video images. + + http://www.mplayerhq.hu/MPlayer/releases/dvdnav/ diff --git a/buildroot/package/libdvdread/libdvdread.hash b/buildroot/package/libdvdread/libdvdread.hash new file mode 100644 index 0000000..bef93fc --- /dev/null +++ b/buildroot/package/libdvdread/libdvdread.hash @@ -0,0 +1,2 @@ +# From http://download.videolan.org/pub/videolan/libdvdread/5.0.0/libdvdread-5.0.3.tar.bz2.sha256 +sha256 321cdf2dbdc83c96572bc583cd27d8c660ddb540ff16672ecb28607d018ed82b libdvdread-5.0.3.tar.bz2 diff --git a/buildroot/package/libdvdread/libdvdread.mk b/buildroot/package/libdvdread/libdvdread.mk new file mode 100644 index 0000000..0e335e5 --- /dev/null +++ b/buildroot/package/libdvdread/libdvdread.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libdvdread +# +################################################################################ + +LIBDVDREAD_VERSION = 5.0.3 +LIBDVDREAD_SOURCE = libdvdread-$(LIBDVDREAD_VERSION).tar.bz2 +LIBDVDREAD_SITE = http://www.videolan.org/pub/videolan/libdvdread/$(LIBDVDREAD_VERSION) +LIBDVDREAD_INSTALL_STAGING = YES +LIBDVDREAD_LICENSE = GPL-2.0+ +LIBDVDREAD_LICENSE_FILES = COPYING +LIBDVDREAD_CONF_OPTS = --with-libdvdcss +LIBDVDREAD_DEPENDENCIES = libdvdcss host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/libeXosip2/0001-use-pkg-config-to-detect-openssl.patch b/buildroot/package/libeXosip2/0001-use-pkg-config-to-detect-openssl.patch new file mode 100644 index 0000000..69e349f --- /dev/null +++ b/buildroot/package/libeXosip2/0001-use-pkg-config-to-detect-openssl.patch @@ -0,0 +1,62 @@ +configure: use pkg-config to find openssl + +The current check is broken for static linking, since the openssl +libs need to be linked against libz, which is missing in the link +command when doing a static build: + http://autobuild.buildroot.net/results/787/787cd9992b00d8008641af208f5fb7c4afb40b06/build-end.log + +Instead of trying convoluted tests to decide what additional libs +are required, just delegate this job to pkg-config. + +At the same time, fix a few legacy, deprecated constructs in favour +of their new counterparts. + +Signed-off-by: "Yann E. MORIN" + +--- +Upstream status: submitted, but no public mailing list (sent to the +mail documented in: http://www.antisip.com/doc/exosip2/index.html ) + +diff -durN libeXosip2-3.6.0.orig/configure.in libeXosip2-3.6.0/configure.in +--- libeXosip2-3.6.0.orig/configure.in 2014-06-22 23:58:26.549487427 +0200 ++++ libeXosip2-3.6.0/configure.in 2014-06-22 23:59:12.822008499 +0200 +@@ -44,7 +44,7 @@ + AC_CONFIG_AUX_DIR(scripts) + AC_CONFIG_HEADERS(config.h) + AM_INIT_AUTOMAKE($PACKAGE, $VERSION) +-AM_ACLOCAL_INCLUDE(scripts) ++AC_CONFIG_MACRO_DIR([scripts]) + + AC_CANONICAL_HOST + +@@ -371,13 +371,15 @@ + + AC_ARG_ENABLE(openssl, + [ --enable-openssl enable support for openssl], +- enable_openssl=$enableval,enable_openssl="yes") ++ enable_openssl=$enableval,enable_openssl="auto") + +-if test "$enable_openssl" = "yes" ; then +- AC_CHECK_HEADERS(openssl/ssl.h) +- AC_CHECK_LIB(ssl,SSL_CTX_new,[EXOSIP_LIB="$EXOSIP_LIB -lssl"]) +- AC_CHECK_LIB(crypto,X509_get_issuer_name,[EXOSIP_LIB="$EXOSIP_LIB -lcrypto"]) +-fi ++AS_IF([test "$enable_openssl" = "yes" -o "$enable_openssl" = "auto"], ++ [PKG_CHECK_MODULES([SSL], [openssl], ++ [EXOSIP_LIB="$EXOSIP_LIB $SSL_LIBS"], ++ [AS_IF([test "$enable_openssl" = "yes"], ++ [AC_MSG_ERROR([can not find openssl])]) ++ ]) ++ ]) + + AC_ARG_ENABLE(srvrec, + [ --enable-srvrec enable support for SRV records DNS queries (yes) ], +diff -durN build/libeXosip2-3.6.0.orig/Makefile.am build/libeXosip2-3.6.0/Makefile.am +--- libeXosip2-3.6.0.orig/Makefile.am 2014-06-23 00:14:25.328226745 +0200 ++++ libeXosip2-3.6.0/Makefile.am 2014-06-23 00:14:38.296371236 +0200 +@@ -1,4 +1,4 @@ +- ++ACLOCAL_AMFLAGS = -I scripts + EXTRA_DIST = README autogen.sh + + SUBDIRS = scripts platform src include tools help diff --git a/buildroot/package/libeXosip2/Config.in b/buildroot/package/libeXosip2/Config.in new file mode 100644 index 0000000..4cb8218 --- /dev/null +++ b/buildroot/package/libeXosip2/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBEXOSIP2 + bool "libeXosip2" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBOSIP2 + help + eXosip is a library that hides the complexity of using the + SIP protocol for mutlimedia session establishement. + This protocol is mainly to be used by VoIP telephony + applications (endpoints or conference server) but might be + also usefull for any application that wish to establish + sessions like multiplayer games. + eXosip is based in libosip. + + http://savannah.nongnu.org/projects/exosip/ diff --git a/buildroot/package/libeXosip2/libeXosip2.hash b/buildroot/package/libeXosip2/libeXosip2.hash new file mode 100644 index 0000000..1f16994 --- /dev/null +++ b/buildroot/package/libeXosip2/libeXosip2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 91da1a084c9ab663afe04b493342e075ad59ac54a1af011c7f2ba4543a923564 libeXosip2-3.6.0.tar.gz diff --git a/buildroot/package/libeXosip2/libeXosip2.mk b/buildroot/package/libeXosip2/libeXosip2.mk new file mode 100644 index 0000000..04f8672 --- /dev/null +++ b/buildroot/package/libeXosip2/libeXosip2.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# libexosip2 +# +################################################################################ + +LIBEXOSIP2_VERSION = 3.6.0 +LIBEXOSIP2_SITE = http://download.savannah.gnu.org/releases/exosip +LIBEXOSIP2_INSTALL_STAGING = YES +LIBEXOSIP2_LICENSE = GPL-2.0+ +LIBEXOSIP2_LICENSE_FILES = COPYING + +LIBEXOSIP2_DEPENDENCIES = host-pkgconf libosip2 + +# We are touching configure.in and Makefile.am with one of our patches +LIBEXOSIP2_AUTORECONF = YES + +ifeq ($(BR2_arc),y) +# toolchain __arc__ define conflicts with libeXosip2 source +LIBEXOSIP2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -U__arc__" +endif + +ifeq ($(BR2_PACKAGE_C_ARES),y) +LIBEXOSIP2_DEPENDENCIES += c-ares +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBEXOSIP2_DEPENDENCIES += openssl +LIBEXOSIP2_CONF_OPTS += --enable-openssl +else +LIBEXOSIP2_CONF_OPTS += --disable-openssl +endif + +LIBEXOSIP2_CONF_OPTS += \ + --enable-mt=$(if $(BR2_TOOLCHAIN_HAS_THREADS),yes,no) + +$(eval $(autotools-package)) diff --git a/buildroot/package/libebml/Config.in b/buildroot/package/libebml/Config.in new file mode 100644 index 0000000..a00b894 --- /dev/null +++ b/buildroot/package/libebml/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBEBML + bool "libebml" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + help + Access library for the EBML (Extensible Binary Meta + Language, a binary derivative of XML) format. + + http://matroska.org + +comment "libebml needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/buildroot/package/libebml/libebml.hash b/buildroot/package/libebml/libebml.hash new file mode 100644 index 0000000..5abc1eb --- /dev/null +++ b/buildroot/package/libebml/libebml.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 35fb44daa41961f94a0ac1b8f06801e88cc9bf2ad6f562ced8ab7c1f1a875499 libebml-1.3.3.tar.bz2 diff --git a/buildroot/package/libebml/libebml.mk b/buildroot/package/libebml/libebml.mk new file mode 100644 index 0000000..8c5dee3 --- /dev/null +++ b/buildroot/package/libebml/libebml.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libebml +# +################################################################################ + +LIBEBML_VERSION = 1.3.3 +LIBEBML_SOURCE = libebml-$(LIBEBML_VERSION).tar.bz2 +LIBEBML_SITE = http://dl.matroska.org/downloads/libebml +LIBEBML_INSTALL_STAGING = YES +LIBEBML_LICENSE = LGPL-2.1+ +LIBEBML_LICENSE_FILES = LICENSE.LGPL + +$(eval $(autotools-package)) diff --git a/buildroot/package/libebur128/Config.in b/buildroot/package/libebur128/Config.in new file mode 100644 index 0000000..0d68b39 --- /dev/null +++ b/buildroot/package/libebur128/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBEBUR128 + bool "libebur128" + # build system has no support to disable shared linking + # leading to a build error with a static-only toolchain + depends on !BR2_STATIC_LIBS + help + libebur128 is a library that implements the EBU R 128 standard + for loudness normalization. + + https://github.com/jiixyj/libebur128 + +comment "libebur128 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libebur128/libebur128.hash b/buildroot/package/libebur128/libebur128.hash new file mode 100644 index 0000000..2b0d3e3 --- /dev/null +++ b/buildroot/package/libebur128/libebur128.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 1d0d7e855da04010a2432e11fbc596502caf11b61c3b571ccbcb10095fe44b43 libebur128-v1.2.2.tar.gz +sha256 d6b4754bb67bdd08b97d5d11b2d7434997a371585a78fe77007149df3af8d09c COPYING diff --git a/buildroot/package/libebur128/libebur128.mk b/buildroot/package/libebur128/libebur128.mk new file mode 100644 index 0000000..24c2f24 --- /dev/null +++ b/buildroot/package/libebur128/libebur128.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libebur128 +# +################################################################################ + +LIBEBUR128_VERSION = v1.2.2 +LIBEBUR128_SITE = $(call github,jiixyj,libebur128,$(LIBEBUR128_VERSION)) +LIBEBUR128_LICENSE = MIT +LIBEBUR128_LICENSE_FILES = COPYING +LIBEBUR128_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/buildroot/package/libedit/0001-check-bsd-functions-in-libbsd.patch b/buildroot/package/libedit/0001-check-bsd-functions-in-libbsd.patch new file mode 100644 index 0000000..de452a5 --- /dev/null +++ b/buildroot/package/libedit/0001-check-bsd-functions-in-libbsd.patch @@ -0,0 +1,20 @@ +configure: on Linux, the BSD functions require linking against libbsd + +Signed-off-by: "Yann E. MORIN" +(Rebased against 20150325-3.1) +Signed-off-by: Bernd Kuhls + +diff -durN libedit-20130712-3.1.orig/configure.ac libedit-20130712-3.1/configure.ac +--- libedit-20130712-3.1.orig/configure.ac 2013-07-12 20:39:22.000000000 +0200 ++++ libedit-20130712-3.1/configure.ac 2013-07-28 23:35:35.012676469 +0200 +@@ -117,6 +117,10 @@ + #AC_FUNC_REALLOC + AC_TYPE_SIGNAL + AC_FUNC_STAT ++ ++# Search for libbsd for *vis functions ++AC_CHECK_LIB([bsd], [vis]) ++ + AC_CHECK_FUNCS([endpwent isascii memchr memset re_comp regcomp strcasecmp strchr strcspn strdup strerror strrchr strstr strtol issetugid wcsdup strlcpy strlcat fgetln vis strvis strunvis __secure_getenv secure_getenv]) + + # strlcpy diff --git a/buildroot/package/libedit/Config.in b/buildroot/package/libedit/Config.in new file mode 100644 index 0000000..8ccf3ed --- /dev/null +++ b/buildroot/package/libedit/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBEDIT + bool "libedit" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + The editline library (from BSD) provides generic line editing + and history functions. It slightly resembles GNU readline. + + The official homepage is at: + http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-5-0/src/lib/libedit/ + + Jess Thrysoee maintains an autotoolified package, which we use + in Buildroot as it makes it much simpler than using the + upstream sources which require pmake. + + http://www.thrysoee.dk/editline + +comment "libedit needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/libedit/libedit.hash b/buildroot/package/libedit/libedit.hash new file mode 100644 index 0000000..4bfb8af --- /dev/null +++ b/buildroot/package/libedit/libedit.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 c88a5e4af83c5f40dda8455886ac98923a9c33125699742603a88a0253fcc8c5 libedit-20150325-3.1.tar.gz diff --git a/buildroot/package/libedit/libedit.mk b/buildroot/package/libedit/libedit.mk new file mode 100644 index 0000000..51ca87d --- /dev/null +++ b/buildroot/package/libedit/libedit.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# libedit +# +################################################################################ + +LIBEDIT_VERSION = 20150325-3.1 +LIBEDIT_SITE = http://www.thrysoee.dk/editline +LIBEDIT_INSTALL_STAGING = YES +LIBEDIT_DEPENDENCIES = ncurses +LIBEDIT_LICENSE = BSD-3-Clause +LIBEDIT_LICENSE_FILES = COPYING + +# We're patching configure.ac +LIBEDIT_AUTORECONF = YES + +# Needed for autoreconf to work properly +define LIBEDIT_FIXUP_M4_DIR + mkdir $(@D)/m4 +endef +LIBEDIT_POST_EXTRACT_HOOKS += LIBEDIT_FIXUP_M4_DIR + +# Doesn't really support !wchar, but support is disabled otherwise +LIBEDIT_CONF_OPTS += --enable-widec + +# musl is ISO 10646 compliant but doesn't define __STDC_ISO_10646__, +# so let's define it manually +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LIBEDIT_CONF_OPTS += CFLAGS="$(TARGET_CFLAGS) -D__STDC_ISO_10646__=201103L" +endif + +# Note: libbsd required for *vis functions, but works only with a toolchain +# with __progname; otherwise, some features are disabled, as if libbsd was +# missing entirely. +ifeq ($(BR2_PACKAGE_LIBBSD),y) +LIBEDIT_DEPENDENCIES += libbsd +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libee/Config.in b/buildroot/package/libee/Config.in new file mode 100644 index 0000000..9a3411e --- /dev/null +++ b/buildroot/package/libee/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBEE + bool "libee" + select BR2_PACKAGE_LIBESTR + help + An Event Expression Library inspired by CEE. + + CEE is an upcoming standard used to describe network + events in a number of normalized formats. It's goal is + to unify they currently many different representations + that exist in the industry. + + The core idea of libee is to provide a small but hopefully + convenient API layer above the CEE standard. However, CEE + is not finished. At the time of this writing, CEE is under + heavy development and even some of its core data structures + (like the data dictionary and taxonmy) have not been fully + specified. + + http://www.libee.org diff --git a/buildroot/package/libee/libee.hash b/buildroot/package/libee/libee.hash new file mode 100644 index 0000000..b70242a --- /dev/null +++ b/buildroot/package/libee/libee.hash @@ -0,0 +1,2 @@ +# From http://www.libee.org/download/libee-0-4-1/ +md5 7bbf4160876c12db6193c06e2badedb2 libee-0.4.1.tar.gz diff --git a/buildroot/package/libee/libee.mk b/buildroot/package/libee/libee.mk new file mode 100644 index 0000000..9879eff --- /dev/null +++ b/buildroot/package/libee/libee.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libee +# +################################################################################ + +LIBEE_VERSION = 0.4.1 +LIBEE_SITE = http://www.libee.org/download/files/download +LIBEE_LICENSE = LGPL-2.1+ +LIBEE_LICENSE_FILES = COPYING +LIBEE_DEPENDENCIES = libestr host-pkgconf +LIBEE_INSTALL_STAGING = YES + +LIBEE_MAKE = $(MAKE1) + +$(eval $(autotools-package)) diff --git a/buildroot/package/libenca/Config.in b/buildroot/package/libenca/Config.in new file mode 100644 index 0000000..5e951ed --- /dev/null +++ b/buildroot/package/libenca/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBENCA + bool "libenca" + help + Extremely Naive Charset Analyser + + http://cihar.com/software/enca/ diff --git a/buildroot/package/libenca/libenca.hash b/buildroot/package/libenca/libenca.hash new file mode 100644 index 0000000..1a03c8f --- /dev/null +++ b/buildroot/package/libenca/libenca.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3a487eca40b41021e2e4b7a6440b97d822e6532db5464471f572ecf77295e8b8 enca-1.19.tar.xz diff --git a/buildroot/package/libenca/libenca.mk b/buildroot/package/libenca/libenca.mk new file mode 100644 index 0000000..63b6895 --- /dev/null +++ b/buildroot/package/libenca/libenca.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libenca +# +################################################################################ + +LIBENCA_VERSION = 1.19 +LIBENCA_SITE = http://dl.cihar.com/enca +LIBENCA_SOURCE = enca-$(LIBENCA_VERSION).tar.xz +LIBENCA_INSTALL_STAGING = YES +LIBENCA_LICENSE = GPL-2.0 +LIBENCA_LICENSE_FILES = COPYING +LIBENCA_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +LIBENCA_CONF_ENV += \ + ac_cv_file__dev_random=yes \ + ac_cv_file__dev_urandom=yes \ + ac_cv_file__dev_arandom=no \ + ac_cv_file__dev_srandom=no + +define LIBENCA_MAKE_HOST_TOOL + $(MAKE) -C $(@D)/tools $(HOST_CONFIGURE_OPTS) make_hash +endef + +LIBENCA_PRE_BUILD_HOOKS += LIBENCA_MAKE_HOST_TOOL + +$(eval $(autotools-package)) diff --git a/buildroot/package/libepoxy/0001-Forward-EGL-cflags-into-epoxy.pc.patch b/buildroot/package/libepoxy/0001-Forward-EGL-cflags-into-epoxy.pc.patch new file mode 100644 index 0000000..286f875 --- /dev/null +++ b/buildroot/package/libepoxy/0001-Forward-EGL-cflags-into-epoxy.pc.patch @@ -0,0 +1,32 @@ +From 99b8373dbe8fb3bac835ebad90f91cfd213e4acb Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Wed, 15 Mar 2017 10:02:54 -0300 +Subject: [PATCH] Forward EGL cflags into epoxy.pc + +When building mesa egl without x11 and gles2 the headers need a +MESA_EGL_NO_X11_HEADERS define to avoid including X11 headers. +Forward EGL CFLAGS into epoxy.pc to avoid build failures when linking +against libepoxy on this scenario. + +Signed-off-by: Gustavo Zacarias +--- +Status: pull request https://github.com/anholt/libepoxy/pull/113 + + epoxy.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/epoxy.pc.in b/epoxy.pc.in +index 7828a77..8278b7d 100644 +--- a/epoxy.pc.in ++++ b/epoxy.pc.in +@@ -10,6 +10,6 @@ epoxy_has_wgl=@epoxy_has_wgl@ + Name: epoxy + Description: epoxy GL dispatch Library + Version: @PACKAGE_VERSION@ +-Cflags: -I${includedir} ++Cflags: -I${includedir} @EGL_CFLAGS@ + Libs: -L${libdir} -lepoxy + Libs.private: @DLOPEN_LIBS@ +-- +2.10.2 + diff --git a/buildroot/package/libepoxy/Config.in b/buildroot/package/libepoxy/Config.in new file mode 100644 index 0000000..9da190b --- /dev/null +++ b/buildroot/package/libepoxy/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBEPOXY + bool "libepoxy" + depends on BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XUTIL_UTIL_MACROS + help + Epoxy is a library for handling OpenGL function pointer + management for you. + + https://github.com/anholt/libepoxy + +comment "libepoxy needs an OpenGL and/or OpenGL EGL backend" + depends on !BR2_PACKAGE_HAS_LIBEGL && !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/libepoxy/libepoxy.hash b/buildroot/package/libepoxy/libepoxy.hash new file mode 100644 index 0000000..d7ebec5 --- /dev/null +++ b/buildroot/package/libepoxy/libepoxy.hash @@ -0,0 +1,2 @@ +# From ftp://ftp.gnome.org/pub/GNOME/sources/libepoxy/1.4/libepoxy-1.4.3.sha256sum +sha256 0b808a06c9685a62fca34b680abb8bc7fb2fda074478e329b063c1f872b826f6 libepoxy-1.4.3.tar.xz diff --git a/buildroot/package/libepoxy/libepoxy.mk b/buildroot/package/libepoxy/libepoxy.mk new file mode 100644 index 0000000..366cc11 --- /dev/null +++ b/buildroot/package/libepoxy/libepoxy.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libepoxy +# +################################################################################ + +LIBEPOXY_VERSION_MAJOR = 1.4 +LIBEPOXY_VERSION = $(LIBEPOXY_VERSION_MAJOR).3 +LIBEPOXY_SITE = http://ftp.gnome.org/pub/gnome/sources/libepoxy/$(LIBEPOXY_VERSION_MAJOR) +LIBEPOXY_SOURCE = libepoxy-$(LIBEPOXY_VERSION).tar.xz +LIBEPOXY_INSTALL_STAGING = YES +LIBEPOXY_DEPENDENCIES = host-pkgconf xutil_util-macros +LIBEPOXY_LICENSE = MIT +LIBEPOXY_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) +LIBEPOXY_CONF_OPTS += --enable-egl +LIBEPOXY_DEPENDENCIES += libegl +else +LIBEPOXY_CONF_OPTS += --disable-egl +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_XLIB_LIBX11),yy) +LIBEPOXY_CONF_OPTS += --enable-glx +LIBEPOXY_DEPENDENCIES += libgl xlib_libX11 +else +LIBEPOXY_CONF_OPTS += --disable-glx +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/liberation/Config.in b/buildroot/package/liberation/Config.in new file mode 100644 index 0000000..b68166f --- /dev/null +++ b/buildroot/package/liberation/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_LIBERATION + bool "Liberation (Free fonts)" + help + The Liberation Fonts are intended to be replacements for the + three most commonly used fonts on Microsoft systems: + Times New Roman, Arial, and Courier New. + +if BR2_PACKAGE_LIBERATION + +config BR2_PACKAGE_LIBERATION_MONO + bool "mono fonts" + default y + +config BR2_PACKAGE_LIBERATION_SANS + bool "sans fonts" + default y + +config BR2_PACKAGE_LIBERATION_SERIF + bool "serif fonts" + default y + +endif diff --git a/buildroot/package/liberation/liberation.hash b/buildroot/package/liberation/liberation.hash new file mode 100644 index 0000000..3432880 --- /dev/null +++ b/buildroot/package/liberation/liberation.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7890278a6cd17873c57d9cd785c2d230d9abdea837e96516019c5885dd271504 liberation-fonts-ttf-2.00.1.tar.gz diff --git a/buildroot/package/liberation/liberation.mk b/buildroot/package/liberation/liberation.mk new file mode 100644 index 0000000..cabee17 --- /dev/null +++ b/buildroot/package/liberation/liberation.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# liberation +# +################################################################################ + +LIBERATION_VERSION = 2.00.1 +LIBERATION_SITE = https://releases.pagure.org/liberation-fonts +LIBERATION_SOURCE = liberation-fonts-ttf-$(LIBERATION_VERSION).tar.gz +LIBERATION_TARGET_DIR = $(TARGET_DIR)/usr/share/fonts/liberation +LIBERATION_LICENSE = OFL-1.1 +LIBERATION_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_LIBERATION_MONO),y) +define LIBERATION_INSTALL_MONO + $(INSTALL) -m 644 $(@D)/LiberationMono*.ttf $(LIBERATION_TARGET_DIR) +endef +endif + +ifeq ($(BR2_PACKAGE_LIBERATION_SANS),y) +define LIBERATION_INSTALL_SANS + $(INSTALL) -m 644 $(@D)/LiberationSans*.ttf $(LIBERATION_TARGET_DIR) +endef +endif + +ifeq ($(BR2_PACKAGE_LIBERATION_SERIF),y) +define LIBERATION_INSTALL_SERIF + $(INSTALL) -m 644 $(@D)/LiberationSerif*.ttf $(LIBERATION_TARGET_DIR) +endef +endif + +define LIBERATION_INSTALL_TARGET_CMDS + mkdir -p $(LIBERATION_TARGET_DIR) + $(LIBERATION_INSTALL_MONO) + $(LIBERATION_INSTALL_SANS) + $(LIBERATION_INSTALL_SERIF) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libesmtp/Config.in b/buildroot/package/libesmtp/Config.in new file mode 100644 index 0000000..ba9d527 --- /dev/null +++ b/buildroot/package/libesmtp/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBESMTP + bool "libesmtp" + depends on !BR2_STATIC_LIBS + help + Library for sending emails through SMTP. + + http://www.stafford.uklinux.net/libesmtp + +comment "libesmtp needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libesmtp/libesmtp.hash b/buildroot/package/libesmtp/libesmtp.hash new file mode 100644 index 0000000..c9c0fa3 --- /dev/null +++ b/buildroot/package/libesmtp/libesmtp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d0a61a5c52d99fa7ce7d00ed0a07e341dbda67101dbed1ab0cdae3f37db4eb0b libesmtp-1.0.6.tar.bz2 diff --git a/buildroot/package/libesmtp/libesmtp.mk b/buildroot/package/libesmtp/libesmtp.mk new file mode 100644 index 0000000..b0f88c7 --- /dev/null +++ b/buildroot/package/libesmtp/libesmtp.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libesmtp +# +################################################################################ + +LIBESMTP_VERSION = 1.0.6 +LIBESMTP_SOURCE = libesmtp-$(LIBESMTP_VERSION).tar.bz2 +LIBESMTP_SITE = http://www.stafford.uklinux.net/libesmtp +LIBESMTP_INSTALL_STAGING = YES +LIBESMTP_CONFIG_SCRIPTS = libesmtp-config +LIBESMTP_DEPENDENCIES = $(if $(BR2_PACKAGE_OPENSSL),openssl) +LIBESMTP_LICENSE = GPL-2.0+ (examples), LGPL-2.1+ (library) +LIBESMTP_LICENSE_FILES = COPYING COPYING.LIB + +$(eval $(autotools-package)) diff --git a/buildroot/package/libestr/Config.in b/buildroot/package/libestr/Config.in new file mode 100644 index 0000000..b1ca2a5 --- /dev/null +++ b/buildroot/package/libestr/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBESTR + bool "libestr" + help + Some essentials for string handling (and a bit more) + + http://libestr.adiscon.com/ diff --git a/buildroot/package/libestr/libestr.hash b/buildroot/package/libestr/libestr.hash new file mode 100644 index 0000000..e37cbb1 --- /dev/null +++ b/buildroot/package/libestr/libestr.hash @@ -0,0 +1,2 @@ +# From http://libestr.adiscon.com/download/libestr-0-1-10/ +sha256 bd655e126e750edd18544b88eb1568d200a424a0c23f665eb14bbece07ac703c libestr-0.1.10.tar.gz diff --git a/buildroot/package/libestr/libestr.mk b/buildroot/package/libestr/libestr.mk new file mode 100644 index 0000000..dcd2094 --- /dev/null +++ b/buildroot/package/libestr/libestr.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libestr +# +################################################################################ + +LIBESTR_VERSION = 0.1.10 +LIBESTR_SITE = http://libestr.adiscon.com/files/download +LIBESTR_LICENSE = LGPL-2.1+ +LIBESTR_LICENSE_FILES = COPYING +LIBESTR_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libev/Config.in b/buildroot/package/libev/Config.in new file mode 100644 index 0000000..db8d263 --- /dev/null +++ b/buildroot/package/libev/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBEV + bool "libev" + # needs memory fences + depends on !BR2_bfin + help + Userspace library for handling asynchronous notifications + + http://software.schmorp.de/pkg/libev.html diff --git a/buildroot/package/libev/libev.hash b/buildroot/package/libev/libev.hash new file mode 100644 index 0000000..d3b7bb5 --- /dev/null +++ b/buildroot/package/libev/libev.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 973593d3479abdf657674a55afe5f78624b0e440614e2b8cb3a07f16d4d7f821 libev-4.24.tar.gz diff --git a/buildroot/package/libev/libev.mk b/buildroot/package/libev/libev.mk new file mode 100644 index 0000000..5d9020c --- /dev/null +++ b/buildroot/package/libev/libev.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libev +# +################################################################################ + +LIBEV_VERSION = 4.24 +LIBEV_SITE = http://dist.schmorp.de/libev/Attic +LIBEV_INSTALL_STAGING = YES +LIBEV_LICENSE = BSD-2-Clause or GPL-2.0+ +LIBEV_LICENSE_FILES = LICENSE + +# The 'compatibility' event.h header conflicts with libevent +# It's completely unnecessary for BR packages so remove it +define LIBEV_DISABLE_EVENT_H_INSTALL + $(SED) 's/ event.h//' $(@D)/Makefile.in +endef +LIBEV_POST_PATCH_HOOKS += LIBEV_DISABLE_EVENT_H_INSTALL + +$(eval $(autotools-package)) diff --git a/buildroot/package/libevdev/0001-configure-add-disable-runtime-tests-option.patch b/buildroot/package/libevdev/0001-configure-add-disable-runtime-tests-option.patch new file mode 100644 index 0000000..6a82917 --- /dev/null +++ b/buildroot/package/libevdev/0001-configure-add-disable-runtime-tests-option.patch @@ -0,0 +1,51 @@ +From fe965061b4306e3ca811ff86dc1ca29f7db9af18 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sun, 11 Oct 2015 13:33:19 +0200 +Subject: [PATCH] configure: add '--disable-runtime-tests' option + +Signed-off-by: Peter Seiderer +--- + configure.ac | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index c1a9111..8fe7b8b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -76,13 +76,20 @@ else + AC_MSG_WARN([check not found - skipping building unit tests]) + fi + AM_CONDITIONAL(HAVE_VALGRIND, [test "x$VALGRIND" != "x"]) +-AM_CONDITIONAL(ENABLE_RUNTIME_TESTS, [test "x$HAVE_CHECK" = "xyes"]) ++ ++AC_ARG_ENABLE([runtime-tests], ++ AS_HELP_STRING([--disable-runtime-tests], [Disable runtime tests])) ++AS_IF([test "x$enable_runtime_tests" != "xno"], ++ [enable_runtime_tests=yes], ++ [enable_runtime_tests=no]) ++ ++AM_CONDITIONAL(ENABLE_RUNTIME_TESTS, [test "x${enable_runtime_tests}x$HAVE_CHECK" = "xyesxyes"]) + AM_CONDITIONAL(ENABLE_STATIC_LINK_TEST, [test "x$enable_static" = "xyes"]) + + AC_ARG_ENABLE([test-run], + AS_HELP_STRING([--enable-test-run], [For internal use only]), + [run_tests="$enableval"], [run_tests="yes"]) +-AM_CONDITIONAL(RUN_TESTS, [test "x$run_tests" = "xyes"]) ++AM_CONDITIONAL(RUN_TESTS, [test "x${enable_runtime_tests}x$run_tests" = "xyesxyes"]) + + with_cflags="" + if test "x$GCC" = "xyes"; then +@@ -167,8 +174,8 @@ AC_MSG_RESULT([ + Libdir ${libdir} + + Build documentation ${have_doxygen} +- Enable unit-tests ${HAVE_CHECK} +- Run unit-tests ${run_tests} ++ Enable unit-tests ${HAVE_CHECK} (runtime-tests: ${enable_runtime_tests}) ++ Run unit-tests ${run_tests} (runtime-tests: ${enable_runtime_tests}) + Enable profiling ${enable_gcov} + Static library symbol check ${static_symbol_leaks_test} + ]) +-- +2.11.0 + diff --git a/buildroot/package/libevdev/Config.in b/buildroot/package/libevdev/Config.in new file mode 100644 index 0000000..91dd9db --- /dev/null +++ b/buildroot/package/libevdev/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBEVDEV + bool "libevdev" + help + libevdev is a wrapper library for evdev devices + + http://freedesktop.org/wiki/Software/libevdev/ diff --git a/buildroot/package/libevdev/libevdev.hash b/buildroot/package/libevdev/libevdev.hash new file mode 100644 index 0000000..0702a7b --- /dev/null +++ b/buildroot/package/libevdev/libevdev.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/input-tools/2018-January/001447.html +md5 c25a8c3939e4ad59a5e9e5e1e354832d libevdev-1.5.8.tar.xz +sha1 a60e7a43570cdbc64af5adf99ca80023d21a1174 libevdev-1.5.8.tar.xz +sha256 6083d81e46609da8ba80cb826c02d9080764a6dec33c8267ccb7e158833d4c6d libevdev-1.5.8.tar.xz +sha512 e9485d8c6b48ebf762b32b003bc6b761c548024ad3bc34a0793485b53383746881fcc9b206a078d571937291e519d9822e50c5d8816778d347094691b65ec3fa libevdev-1.5.8.tar.xz diff --git a/buildroot/package/libevdev/libevdev.mk b/buildroot/package/libevdev/libevdev.mk new file mode 100644 index 0000000..1893863 --- /dev/null +++ b/buildroot/package/libevdev/libevdev.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libevdev +# +################################################################################ + +LIBEVDEV_VERSION = 1.5.8 +LIBEVDEV_SITE = http://www.freedesktop.org/software/libevdev +LIBEVDEV_SOURCE = libevdev-$(LIBEVDEV_VERSION).tar.xz +LIBEVDEV_LICENSE = X11 +LIBEVDEV_LICENSE_FILES = COPYING + +# patch touches configure.ac +LIBEVDEV_AUTORECONF = YES + +# Uses PKG_CHECK_MODULES() in configure.ac +LIBEVDEV_DEPENDENCIES = host-pkgconf + +LIBEVDEV_INSTALL_STAGING = YES + +LIBEVDEV_CONF_OPTS += --disable-runtime-tests + +$(eval $(autotools-package)) diff --git a/buildroot/package/libevent/0001-Disable-building-test-programs.patch b/buildroot/package/libevent/0001-Disable-building-test-programs.patch new file mode 100644 index 0000000..a1ce774 --- /dev/null +++ b/buildroot/package/libevent/0001-Disable-building-test-programs.patch @@ -0,0 +1,31 @@ +From 4b5a135fa681e85eb6988a379f59f3c7a41cc48c Mon Sep 17 00:00:00 2001 +From: Gilles Talis +Date: Fri, 21 Jun 2013 15:25:11 -0700 +Subject: [PATCH 1/2] Disable building test programs + +We are not really interested in building test programs. +Moreover, these programs use fork() function that is +not available on MMU-less architectures. + +Signed-off-by: Gilles Talis +[aduskett@gmail.com: Updated for 2.1.8] +Signed-off-by: Adam Duskett +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 42879a3..dc90359 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -144,7 +144,6 @@ + BUILT_SOURCES = + include include/include.am + include sample/include.am +-include test/include.am + + if BUILD_WIN32 + +-- +2.1.1 + diff --git a/buildroot/package/libevent/Config.in b/buildroot/package/libevent/Config.in new file mode 100644 index 0000000..c32f29e --- /dev/null +++ b/buildroot/package/libevent/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBEVENT + bool "libevent" + help + Userspace library for handling asynchronous notifications + + http://libevent.org diff --git a/buildroot/package/libevent/libevent.hash b/buildroot/package/libevent/libevent.hash new file mode 100644 index 0000000..21381c8 --- /dev/null +++ b/buildroot/package/libevent/libevent.hash @@ -0,0 +1,3 @@ +# locally computed +md5 f3eeaed018542963b7d2416ef1135ecc libevent-2.1.8-stable.tar.gz +sha1 2a1b8bb7a262d3fd0ed6a080a20991a6eed675ec libevent-2.1.8-stable.tar.gz diff --git a/buildroot/package/libevent/libevent.mk b/buildroot/package/libevent/libevent.mk new file mode 100644 index 0000000..65bf1c2 --- /dev/null +++ b/buildroot/package/libevent/libevent.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libevent +# +################################################################################ + +LIBEVENT_VERSION = 2.1.8-stable +LIBEVENT_SITE = https://github.com/libevent/libevent/releases/download/release-$(LIBEVENT_VERSION) +LIBEVENT_INSTALL_STAGING = YES +LIBEVENT_LICENSE = BSD-3-Clause, OpenBSD +LIBEVENT_LICENSE_FILES = LICENSE +# For 0001-Disable-building-test-programs.patch +LIBEVENT_AUTORECONF = YES +LIBEVENT_CONF_OPTS = --disable-samples +HOST_LIBEVENT_CONF_OPTS = --disable-samples --disable-openssl + +define LIBEVENT_REMOVE_PYSCRIPT + rm $(TARGET_DIR)/usr/bin/event_rpcgen.py +endef + +# libevent installs a python script to target - get rid of it if we +# don't have python support enabled +ifneq ($(BR2_PACKAGE_PYTHON),y) +LIBEVENT_POST_INSTALL_TARGET_HOOKS += LIBEVENT_REMOVE_PYSCRIPT +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +LIBEVENT_DEPENDENCIES += host-pkgconf libopenssl +LIBEVENT_CONF_OPTS += --enable-openssl +else +LIBEVENT_CONF_OPTS += --disable-openssl +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libexif/Config.in b/buildroot/package/libexif/Config.in new file mode 100644 index 0000000..8a38b47 --- /dev/null +++ b/buildroot/package/libexif/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBEXIF + bool "libexif" + help + Most digital cameras produce EXIF files, which are JPEG + files with extra tags that contain information about the + image. The EXIF library allows you to parse an EXIF file + and read the data from those tags. + + http://libexif.sf.net diff --git a/buildroot/package/libexif/libexif.hash b/buildroot/package/libexif/libexif.hash new file mode 100644 index 0000000..cf1b4d7 --- /dev/null +++ b/buildroot/package/libexif/libexif.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 16cdaeb62eb3e6dfab2435f7d7bccd2f37438d21c5218ec4e58efa9157d4d41a libexif-0.6.21.tar.bz2 diff --git a/buildroot/package/libexif/libexif.mk b/buildroot/package/libexif/libexif.mk new file mode 100644 index 0000000..a4ec5ed --- /dev/null +++ b/buildroot/package/libexif/libexif.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libexif +# +################################################################################ + +LIBEXIF_VERSION = 0.6.21 +LIBEXIF_SOURCE = libexif-$(LIBEXIF_VERSION).tar.bz2 +LIBEXIF_SITE = http://downloads.sourceforge.net/project/libexif/libexif/$(LIBEXIF_VERSION) +LIBEXIF_INSTALL_STAGING = YES +LIBEXIF_DEPENDENCIES = host-pkgconf +LIBEXIF_LICENSE = LGPL-2.1+ +LIBEXIF_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libfastjson/0001-m4-fix-detection-of-atomics.patch b/buildroot/package/libfastjson/0001-m4-fix-detection-of-atomics.patch new file mode 100644 index 0000000..1fdbf19 --- /dev/null +++ b/buildroot/package/libfastjson/0001-m4-fix-detection-of-atomics.patch @@ -0,0 +1,86 @@ +From df087711cf7be55268a55e7820f4d928cb34c078 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 9 Jul 2016 20:44:36 +0200 +Subject: [PATCH] m4: fix detection of atomics + +In cross-compilation, it is impossible to run code at configure time to +detect the target specifics. + +As such, AC_TRY_RUN fails miserably to detect reliably that atomic +intrisics are present in a toolchain, and decides they are not just +because this is cross-compilation. + +Instead of AC_TRY_RUN, use AC_LINK_IFELSE that does not need to actually +run code, since all we're interested in is whether the intrisics are +present (or not). Fix both the 32- and 64-bit variants, even if the +latter is not used currently. + +Fixes build failures detected by the Buildroot autobuilders, like: + http://autobuild.buildroot.org/results/23a/23ac0e742ed3a70ae4d038f8c9eadc23e708f671/build-end.log + http://autobuild.buildroot.org/results/192/1923d0b570adba494f83747a9610ea6ec35f5223/build-end.log + +and many other cases, espcially on architectures where such intrisics are +present, but where the toolchain does not have threads (and anyway, it +is much more efficient to use the intrisics rather than use mutexes). + +Signed-off-by: "Yann E. MORIN" +--- +Patch sent upstream: + https://github.com/rsyslog/libfastjson/pull/109 + +--- + m4/atomic_operations.m4 | 6 ++---- + m4/atomic_operations_64bit.m4 | 6 ++---- + 2 files changed, 4 insertions(+), 8 deletions(-) + +diff --git a/m4/atomic_operations.m4 b/m4/atomic_operations.m4 +index ad0ee60..7d2bca6 100644 +--- a/m4/atomic_operations.m4 ++++ b/m4/atomic_operations.m4 +@@ -9,9 +9,7 @@ + # + AC_DEFUN([RS_ATOMIC_OPERATIONS], + [AC_CACHE_CHECK([whether the compiler provides atomic builtins], [ap_cv_atomic_builtins], +-[AC_TRY_RUN([ +-int main() +-{ ++[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[ + unsigned long val = 1010, tmp, *mem = &val; + + if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020) +@@ -44,7 +42,7 @@ int main() + return 1; + + return 0; +-}], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no], [ap_cv_atomic_builtins=no])]) ++]])], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no])]) + + if test "$ap_cv_atomic_builtins" = "yes"; then + AC_DEFINE(HAVE_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins]) +diff --git a/m4/atomic_operations_64bit.m4 b/m4/atomic_operations_64bit.m4 +index 9fbef0a..d01a977 100644 +--- a/m4/atomic_operations_64bit.m4 ++++ b/m4/atomic_operations_64bit.m4 +@@ -9,9 +9,7 @@ + # + AC_DEFUN([RS_ATOMIC_OPERATIONS_64BIT], + [AC_CACHE_CHECK([whether the compiler provides atomic builtins for 64 bit data types], [ap_cv_atomic_builtins_64], +-[AC_TRY_RUN([ +-int main() +-{ ++[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[ + unsigned long long val = 1010, tmp, *mem = &val; + + if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020) +@@ -44,7 +42,7 @@ int main() + return 1; + + return 0; +-}], [ap_cv_atomic_builtins_64=yes], [ap_cv_atomic_builtins_64=no], [ap_cv_atomic_builtins_64=no])]) ++]])], [ap_cv_atomic_builtins_64=yes], [ap_cv_atomic_builtins_64=no])]) + + if test "$ap_cv_atomic_builtins_64" = "yes"; then + AC_DEFINE(HAVE_ATOMIC_BUILTINS64, 1, [Define if compiler provides 64 bit atomic builtins]) +-- +2.7.4 + diff --git a/buildroot/package/libfastjson/Config.in b/buildroot/package/libfastjson/Config.in new file mode 100644 index 0000000..a3a7c80 --- /dev/null +++ b/buildroot/package/libfastjson/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBFASTJSON + bool "libfastjson" + # uses the __sync_*_4 intrisics, or pthreads to emulate atomicity + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_THREADS + help + Libfastjson - A fast json library for C + + Libfastjson is a fork from json-c. The aim of this project + is not to provide a slightly modified clone of json-c. + Its aim is to provide: + + - a small library with essential json handling functions + - sufficiently good json support (not 100% standards + compliant) + - be very fast in processing + + https://github.com/rsyslog/libfastjson/ diff --git a/buildroot/package/libfastjson/libfastjson.hash b/buildroot/package/libfastjson/libfastjson.hash new file mode 100644 index 0000000..427db9c --- /dev/null +++ b/buildroot/package/libfastjson/libfastjson.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 03ef63dcc88417e71c19ce4436804159e3397e3a20d3529efef6a43c3bef5c8d libfastjson-v0.99.4.tar.gz diff --git a/buildroot/package/libfastjson/libfastjson.mk b/buildroot/package/libfastjson/libfastjson.mk new file mode 100644 index 0000000..06da0d8 --- /dev/null +++ b/buildroot/package/libfastjson/libfastjson.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libfastjson +# +################################################################################ + +LIBFASTJSON_VERSION = v0.99.4 +LIBFASTJSON_SITE = $(call github,rsyslog,libfastjson,$(LIBFASTJSON_VERSION)) +LIBFASTJSON_INSTALL_STAGING = YES +LIBFASTJSON_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +# From git +LIBFASTJSON_AUTORECONF = YES +LIBFASTJSON_LICENSE = MIT +LIBFASTJSON_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libfcgi/0001-eof.patch b/buildroot/package/libfcgi/0001-eof.patch new file mode 100644 index 0000000..e731426 --- /dev/null +++ b/buildroot/package/libfcgi/0001-eof.patch @@ -0,0 +1,24 @@ +[PATCH] fix build with C++ support and gcc >= 4.4 + +EOF is defined in stdio, so ensure it is included. + +Based on similar patch by Markus Rothe: +http://comments.gmane.org/gmane.comp.web.fastcgi.devel/3205 + +Signed-off-by: Peter Korsgaard +--- + libfcgi/fcgio.cpp | 1 + + 1 file changed, 1 insertion(+) + +Index: fcgi-2.4.0/libfcgi/fcgio.cpp +=================================================================== +--- fcgi-2.4.0.orig/libfcgi/fcgio.cpp ++++ fcgi-2.4.0/libfcgi/fcgio.cpp +@@ -22,6 +22,7 @@ + #define DLLAPI __declspec(dllexport) + #endif + ++#include + #include + #include "fcgio.h" + diff --git a/buildroot/package/libfcgi/0002-link-against-libfcgi-la.patch b/buildroot/package/libfcgi/0002-link-against-libfcgi-la.patch new file mode 100644 index 0000000..8a5973a --- /dev/null +++ b/buildroot/package/libfcgi/0002-link-against-libfcgi-la.patch @@ -0,0 +1,20 @@ +Properly link libfcgi++ against libfcgi + +We cannot directly use -lfcgi to link libfcgi++ against libfcgi, +because libfcgi is not installed at this time. Instead, we should rely +on libtool doing the right thing, by specifying libfcgi.la in +libfcgi++ LIBADD variable. + +Signed-off-by: Thomas Petazzoni + +Index: b/libfcgi/Makefile.am +=================================================================== +--- a/libfcgi/Makefile.am ++++ b/libfcgi/Makefile.am +@@ -23,5 +23,6 @@ + $(INCLUDEDIR)/fcgio.h \ + fcgio.cpp + libfcgi___la_CFLAGS = @PTHREAD_CFLAGS@ +-libfcgi___la_LDFLAGS = -lfcgi -rpath @libdir@ ++libfcgi___la_LIBADD = libfcgi.la ++libfcgi___la_LDFLAGS = -rpath @libdir@ diff --git a/buildroot/package/libfcgi/0003-link-against-math.patch b/buildroot/package/libfcgi/0003-link-against-math.patch new file mode 100644 index 0000000..c60c6d5 --- /dev/null +++ b/buildroot/package/libfcgi/0003-link-against-math.patch @@ -0,0 +1,16 @@ +Link libfcgi against the math library. + +Signed-off-by: Thomas Claveirole + +Index: b/libfcgi/Makefile.am +=================================================================== +--- a/libfcgi/Makefile.am ++++ b/libfcgi/Makefile.am +@@ -18,6 +18,7 @@ + os_@SYSTEM@.c + libfcgi_la_CC = @PTHREAD_CC@ + libfcgi_la_CFLAGS = @PTHREAD_CFLAGS@ ++libfcgi_la_LIBADD = -lm + + libfcgi___la_SOURCES = $(INCLUDE_FILES) \ + $(INCLUDEDIR)/fcgio.h \ diff --git a/buildroot/package/libfcgi/0004-make-autoreconfable.patch b/buildroot/package/libfcgi/0004-make-autoreconfable.patch new file mode 100644 index 0000000..e255fc6 --- /dev/null +++ b/buildroot/package/libfcgi/0004-make-autoreconfable.patch @@ -0,0 +1,67 @@ +Make the package autoreconfigurable + +Adjust minor details in Makefile.am and configure.in in order to make +the package compatible with the autoconf/automake versions we are +using in Buildroot. + +Signed-off-by: Thomas Petazzoni + +Index: b/cgi-fcgi/Makefile.am +=================================================================== +--- a/cgi-fcgi/Makefile.am ++++ b/cgi-fcgi/Makefile.am +@@ -2,7 +2,7 @@ + bin_PROGRAMS = cgi-fcgi + + INCLUDEDIR = ../include +-CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include ++AM_CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include + + INCLUDE_FILES = $(INCLUDEDIR)/fastcgi.h \ + $(INCLUDEDIR)/fcgiapp.h \ +Index: b/configure.in +=================================================================== +--- a/configure.in ++++ b/configure.in +@@ -4,12 +4,13 @@ + dnl generate the file "configure", which is run during the build + dnl to configure the system for the local environment. + +-AC_INIT +-AM_INIT_AUTOMAKE(fcgi, 2.4.0) ++AC_INIT([fcgi], [2.4.0]) ++AM_INIT_AUTOMAKE([foreign]) + + AM_CONFIG_HEADER(fcgi_config.h) + + AC_PROG_CC ++AC_PROG_CC_C_O + AC_PROG_CPP + AC_PROG_INSTALL + AC_PROG_LIBTOOL +Index: b/examples/Makefile.am +=================================================================== +--- a/examples/Makefile.am ++++ b/examples/Makefile.am +@@ -11,7 +11,7 @@ + EXTRA_PROGRAMS = threaded echo-cpp + + INCLUDEDIR = ../include +-CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include ++AM_CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include + + INCLUDE_FILES = $(INCLUDEDIR)/fastcgi.h \ + $(INCLUDEDIR)/fcgiapp.h \ +Index: b/libfcgi/Makefile.am +=================================================================== +--- a/libfcgi/Makefile.am ++++ b/libfcgi/Makefile.am +@@ -1,7 +1,7 @@ + # $Id: Makefile.am,v 1.9 2001/12/22 03:16:20 robs Exp $ + + INCLUDEDIR = ../include +-CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include ++AM_CPPFLAGS = @CPPFLAGS@ -I$(top_srcdir)/include + + INCLUDE_FILES = $(INCLUDEDIR)/fastcgi.h \ + $(INCLUDEDIR)/fcgiapp.h \ diff --git a/buildroot/package/libfcgi/0005-disable-examples.patch b/buildroot/package/libfcgi/0005-disable-examples.patch new file mode 100644 index 0000000..4a9916f --- /dev/null +++ b/buildroot/package/libfcgi/0005-disable-examples.patch @@ -0,0 +1,21 @@ +Common subdirectories: libfcgi-2.4.0.orig/cgi-fcgi and libfcgi-2.4.0/cgi-fcgi +Common subdirectories: libfcgi-2.4.0.orig/doc and libfcgi-2.4.0/doc +Common subdirectories: libfcgi-2.4.0.orig/examples and libfcgi-2.4.0/examples +Common subdirectories: libfcgi-2.4.0.orig/images and libfcgi-2.4.0/images +Common subdirectories: libfcgi-2.4.0.orig/include and libfcgi-2.4.0/include +Common subdirectories: libfcgi-2.4.0.orig/java and libfcgi-2.4.0/java +Common subdirectories: libfcgi-2.4.0.orig/libfcgi and libfcgi-2.4.0/libfcgi +diff -du libfcgi-2.4.0.orig/Makefile.am libfcgi-2.4.0/Makefile.am +--- libfcgi-2.4.0.orig/Makefile.am 2001-12-22 14:05:39.000000000 +0100 ++++ libfcgi-2.4.0/Makefile.am 2014-07-19 16:56:21.935216540 +0200 +@@ -4,7 +4,7 @@ + # $Id: Makefile.am,v 1.7 2001/12/22 13:05:39 robs Exp $ + # + +-SUBDIRS = libfcgi cgi-fcgi examples include ++SUBDIRS = libfcgi cgi-fcgi include + + include_HEADERS = fcgi_config.h + +Common subdirectories: libfcgi-2.4.0.orig/perl and libfcgi-2.4.0/perl +Common subdirectories: libfcgi-2.4.0.orig/Win32 and libfcgi-2.4.0/Win32 diff --git a/buildroot/package/libfcgi/0006-fix-CVE-2012-6687.patch b/buildroot/package/libfcgi/0006-fix-CVE-2012-6687.patch new file mode 100644 index 0000000..10d33ed --- /dev/null +++ b/buildroot/package/libfcgi/0006-fix-CVE-2012-6687.patch @@ -0,0 +1,104 @@ +libfcgi:add security patch for CVE-2012-6687 +CVE-2012-6687 - remote attackers cause a denial of service (crash) via a large number +of connections (http://www.cvedetails.com/cve/CVE-2012-6687/). +Fix:use poll in os_unix.c instead of select to avoid problem with > 1024 connections. +This patch libfcgi_2.4.0-8.3.debian.tar.xz is pulled from the below link: +(https://launchpad.net/ubuntu/+source/libfcgi/2.4.0-8.3) +The next release of libfcgi is 2.4.1 which may have this fix is yet to be released +officially. + +Signed-off-by: Anton Kortunov +Signed-off-by: Niranjan Reddy + +Index: b/libfcgi/os_unix.c +=================================================================== +--- a/libfcgi/os_unix.c ++++ b/libfcgi/os_unix.c +@@ -42,6 +42,7 @@ + #include + #include + #include ++#include + + #ifdef HAVE_NETDB_H + #include +@@ -103,6 +104,9 @@ + static int shutdownPending = FALSE; + static int shutdownNow = FALSE; + ++static int libfcgiOsClosePollTimeout = 2000; ++static int libfcgiIsAfUnixKeeperPollTimeout = 2000; ++ + void OS_ShutdownPending() + { + shutdownPending = TRUE; +@@ -168,6 +172,16 @@ + if(libInitialized) + return 0; + ++ char *libfcgiOsClosePollTimeoutStr = getenv( "LIBFCGI_OS_CLOSE_POLL_TIMEOUT" ); ++ if(libfcgiOsClosePollTimeoutStr) { ++ libfcgiOsClosePollTimeout = atoi(libfcgiOsClosePollTimeoutStr); ++ } ++ ++ char *libfcgiIsAfUnixKeeperPollTimeoutStr = getenv( "LIBFCGI_IS_AF_UNIX_KEEPER_POLL_TIMEOUT" ); ++ if(libfcgiIsAfUnixKeeperPollTimeoutStr) { ++ libfcgiIsAfUnixKeeperPollTimeout = atoi(libfcgiIsAfUnixKeeperPollTimeoutStr); ++ } ++ + asyncIoTable = (AioInfo *)malloc(asyncIoTableSize * sizeof(AioInfo)); + if(asyncIoTable == NULL) { + errno = ENOMEM; +@@ -755,19 +769,16 @@ + + if (shutdown(fd, 1) == 0) + { +- struct timeval tv; +- fd_set rfds; ++ struct pollfd pfd; + int rv; + char trash[1024]; + +- FD_ZERO(&rfds); ++ pfd.fd = fd; ++ pfd.events = POLLIN; + + do + { +- FD_SET(fd, &rfds); +- tv.tv_sec = 2; +- tv.tv_usec = 0; +- rv = select(fd + 1, &rfds, NULL, NULL, &tv); ++ rv = poll(&pfd, 1, libfcgiOsClosePollTimeout); + } + while (rv > 0 && read(fd, trash, sizeof(trash)) > 0); + } +@@ -1116,13 +1127,11 @@ + */ + static int is_af_unix_keeper(const int fd) + { +- struct timeval tval = { READABLE_UNIX_FD_DROP_DEAD_TIMEVAL }; +- fd_set read_fds; +- +- FD_ZERO(&read_fds); +- FD_SET(fd, &read_fds); ++ struct pollfd pfd; ++ pfd.fd = fd; ++ pfd.events = POLLIN; + +- return select(fd + 1, &read_fds, NULL, NULL, &tval) >= 0 && FD_ISSET(fd, &read_fds); ++ return poll(&pfd, 1, libfcgiIsAfUnixKeeperPollTimeout) >= 0 && (pfd.revents & POLLIN); + } + + /* + +Index: b/examples/Makefile.am +=================================================================== +--- a/examples/Makefile.am ++++ b/examples/Makefile.am +@@ -34,5 +34,5 @@ threaded_CFLAGS = @PTHREAD_CFLAGS@ + threaded_LDFLAGS = @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ + + echo_cpp_SOURCES = $(INCLUDE_FILES) $(INCLUDEDIR)/fcgio.h echo-cpp.cpp +-echo_cpp_LDADD = $(LIBDIR)/libfcgi++.la ++echo_cpp_LDADD = $(LIBDIR)/libfcgi++.la $(LIBDIR)/libfcgi.la diff --git a/buildroot/package/libfcgi/Config.in b/buildroot/package/libfcgi/Config.in new file mode 100644 index 0000000..47ff8a2 --- /dev/null +++ b/buildroot/package/libfcgi/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBFCGI + bool "libfcgi" + depends on BR2_USE_MMU # fork() + help + FCGI, a fastcgi developer library for C/C++ + + http://www.fastcgi.com/ diff --git a/buildroot/package/libfcgi/libfcgi.hash b/buildroot/package/libfcgi/libfcgi.hash new file mode 100644 index 0000000..586ff1e --- /dev/null +++ b/buildroot/package/libfcgi/libfcgi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 66fc45c6b36a21bf2fbbb68e90f780cc21a9da1fffbae75e76d2b4402d3f05b9 fcgi-2.4.0.tar.gz diff --git a/buildroot/package/libfcgi/libfcgi.mk b/buildroot/package/libfcgi/libfcgi.mk new file mode 100644 index 0000000..78da772 --- /dev/null +++ b/buildroot/package/libfcgi/libfcgi.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libfcgi +# +################################################################################ + +LIBFCGI_VERSION = 2.4.0 +LIBFCGI_SOURCE = fcgi-$(LIBFCGI_VERSION).tar.gz +LIBFCGI_SITE = http://www.fastcgi.com/dist +LIBFCGI_LICENSE = OML +LIBFCGI_LICENSE_FILES = LICENSE.TERMS +LIBFCGI_INSTALL_STAGING = YES +LIBFCGI_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libffi/0001-Fix-installation-location-of-libffi.patch b/buildroot/package/libffi/0001-Fix-installation-location-of-libffi.patch new file mode 100644 index 0000000..6ac9123 --- /dev/null +++ b/buildroot/package/libffi/0001-Fix-installation-location-of-libffi.patch @@ -0,0 +1,55 @@ +From 580f46a7bc6e9fea3a2227b5268cc3aed1d60e3b Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 7 Feb 2013 22:26:56 +0100 +Subject: [PATCH] Fix installation location of libffi +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The libffi is currently declared as toolexeclib_LTLIBRARIES. In many +cases, toolexeclib libraries will be installed in /usr/lib, so it +doesn't make any difference. + +However, with multilib toolchains, they get installed in a +subdirectory of /usr/lib/. For example, with a Sourcery CodeBench +PowerPC toolchain, if the e500mc multilib variant is used, the libffi +library gets installed in /usr/lib/te500mc/. This is due to the +following code in the configure script: + + multi_os_directory=`$CC -print-multi-os-directory` + case $multi_os_directory in + .) ;; # Avoid trailing /. + *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; + esac + +Once the library is installed in /usr/lib/te500mc/, nothing works +because this installation location is inconsistent with the +installation location declared in libffi.pc. + +So, instead of using this bizarre toolexeclib_LTLIBRARIES, simply use +the more standard lib_LTLIBRARIES, which ensures that the libffi +library is always installed in /usr/lib. + +Signed-off-by: Thomas Petazzoni +[unfuzz for 3.2.1] +Signed-off-by: Jörg Krause +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 0e40451..309474c 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -104,7 +104,7 @@ FLAGS_TO_PASS = $(AM_MAKEFLAGS) + + MAKEOVERRIDES= + +-toolexeclib_LTLIBRARIES = libffi.la ++lib_LTLIBRARIES = libffi.la + noinst_LTLIBRARIES = libffi_convenience.la + + libffi_la_SOURCES = src/prep_cif.c src/types.c \ +-- +2.5.3 + diff --git a/buildroot/package/libffi/0002-Fix-use-of-compact-eh-frames-on-MIPS.patch b/buildroot/package/libffi/0002-Fix-use-of-compact-eh-frames-on-MIPS.patch new file mode 100644 index 0000000..c19e395 --- /dev/null +++ b/buildroot/package/libffi/0002-Fix-use-of-compact-eh-frames-on-MIPS.patch @@ -0,0 +1,45 @@ +From 31b6b6bc14197cd4183bdbd311fddeb36b5ae100 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Sat, 19 Sep 2015 22:53:29 +0200 +Subject: [PATCH] Fix use of compact eh frames on MIPS +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Newer MIPS toolchains use a different (compact) eh_frame format. +libffi don't like them, so we have to switch to the older format. + +This patch add -mno-compact-eh to CFLAGS when compiling for +Mips and compiler support it. + +Signed-off-by: Jérôme Pouiller +[unfuzz for 3.2.1] +Signed-off-by: Jörg Krause +--- + configure.ac | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/configure.ac b/configure.ac +index a7bf5ee..36cd0d4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -469,6 +469,16 @@ esac + AM_CONDITIONAL(FFI_EXEC_TRAMPOLINE_TABLE, test x$FFI_EXEC_TRAMPOLINE_TABLE = x1) + AC_SUBST(FFI_EXEC_TRAMPOLINE_TABLE) + ++if test x$TARGET = xMIPS; then ++ save_CFLAGS="$CFLAGS" ++ CFLAGS=-mno-compact-eh ++ AC_MSG_CHECKING([whether the C compiler needs -mno-compact-eh]) ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], ++ [AC_MSG_RESULT([yes])]; [save_CFLAGS="$save_CFLAGS -mno-compact-eh"], ++ [AC_MSG_RESULT([no])]) ++ CFLAGS="$save_CFLAGS" ++fi ++ + if test x$TARGET = xX86_64; then + AC_CACHE_CHECK([toolchain supports unwind section type], + libffi_cv_as_x86_64_unwind_section_type, [ +-- +2.5.3 + diff --git a/buildroot/package/libffi/0003-libffi-enable-hardfloat-in-the-MIPS-assembly-code.patch b/buildroot/package/libffi/0003-libffi-enable-hardfloat-in-the-MIPS-assembly-code.patch new file mode 100644 index 0000000..776990d --- /dev/null +++ b/buildroot/package/libffi/0003-libffi-enable-hardfloat-in-the-MIPS-assembly-code.patch @@ -0,0 +1,41 @@ +From 48bc37fabbc685b1e3293055bd33ca66c619305e Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Wed, 13 Jan 2016 14:49:59 +0000 +Subject: [PATCH] libffi: enable hardfloat in the MIPS assembly code + +This way it will be possible to build it for soft-float. This is only a +temporary fix. The package needs to be fixed properly. + +Signed-off-by: Vicente Olivert Riera +--- + src/mips/n32.S | 1 + + src/mips/o32.S | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/src/mips/n32.S b/src/mips/n32.S +index c6985d3..dc842d5 100644 +--- a/src/mips/n32.S ++++ b/src/mips/n32.S +@@ -44,6 +44,7 @@ + .abicalls + #endif + .set mips4 ++ .set hardfloat + .text + .align 2 + .globl ffi_call_N32 +diff --git a/src/mips/o32.S b/src/mips/o32.S +index eb27981..b653daf 100644 +--- a/src/mips/o32.S ++++ b/src/mips/o32.S +@@ -42,6 +42,7 @@ + #define RA_OFF (SIZEOF_FRAME - 1 * FFI_SIZEOF_ARG) + + .abicalls ++ .set hardfloat + .text + .align 2 + .globl ffi_call_O32 +-- +2.4.10 + diff --git a/buildroot/package/libffi/0004-m68k-support-ISA-A-Coldfire-CPUs.patch b/buildroot/package/libffi/0004-m68k-support-ISA-A-Coldfire-CPUs.patch new file mode 100644 index 0000000..9308c89 --- /dev/null +++ b/buildroot/package/libffi/0004-m68k-support-ISA-A-Coldfire-CPUs.patch @@ -0,0 +1,77 @@ +From 733bb188b898385cfb5ad28cc0e3ecaf38237350 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Sat, 20 Aug 2016 00:52:19 +0200 +Subject: [PATCH] m68k: support ISA-A Coldfire CPUs + +Fix compilation for m68k/coldfire CPUs like mcf5208. + +Signed-off-by: Waldemar Brodkorb +Signed-off-by: Thorsten Glaser +--- + src/m68k/sysv.S | 29 ++++++++++++++++++++++++++++- + 1 file changed, 28 insertions(+), 1 deletion(-) + +diff --git a/src/m68k/sysv.S b/src/m68k/sysv.S +index ec2b14f..ea40f11 100644 +--- a/src/m68k/sysv.S ++++ b/src/m68k/sysv.S +@@ -3,7 +3,7 @@ + sysv.S - Copyright (c) 2012 Alan Hourihane + Copyright (c) 1998, 2012 Andreas Schwab + Copyright (c) 2008 Red Hat, Inc. +- Copyright (c) 2012 Thorsten Glaser ++ Copyright (c) 2012, 2016 Thorsten Glaser + + m68k Foreign Function Interface + +@@ -72,6 +72,15 @@ CALLFUNC(ffi_call_SYSV): + pea 4(%sp) + #if !defined __PIC__ + jsr CALLFUNC(ffi_prep_args) ++#elif defined(__uClinux__) && defined(__ID_SHARED_LIBRARY__) ++ move.l _current_shared_library_a5_offset_(%a5),%a0 ++ move.l CALLFUNC(ffi_prep_args@GOT)(%a0),%a0 ++ jsr (%a0) ++#elif defined(__mcoldfire__) && !defined(__mcfisab__) && !defined(__mcfisac__) ++ move.l #_GLOBAL_OFFSET_TABLE_@GOTPC,%a0 ++ lea (-6,%pc,%a0),%a0 ++ move.l CALLFUNC(ffi_prep_args@GOT)(%a0),%a0 ++ jsr (%a0) + #else + bsr.l CALLFUNC(ffi_prep_args@PLTPC) + #endif +@@ -215,6 +224,15 @@ CALLFUNC(ffi_closure_SYSV): + move.l %a0,-(%sp) + #if !defined __PIC__ + jsr CALLFUNC(ffi_closure_SYSV_inner) ++#elif defined(__uClinux__) && defined(__ID_SHARED_LIBRARY__) ++ move.l _current_shared_library_a5_offset_(%a5),%a0 ++ move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 ++ jsr (%a0) ++#elif defined(__mcoldfire__) && !defined(__mcfisab__) && !defined(__mcfisac__) ++ move.l #_GLOBAL_OFFSET_TABLE_@GOTPC,%a0 ++ lea (-6,%pc,%a0),%a0 ++ move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 ++ jsr (%a0) + #else + bsr.l CALLFUNC(ffi_closure_SYSV_inner@PLTPC) + #endif +@@ -317,6 +335,15 @@ CALLFUNC(ffi_closure_struct_SYSV): + move.l %a0,-(%sp) + #if !defined __PIC__ + jsr CALLFUNC(ffi_closure_SYSV_inner) ++#elif defined(__uClinux__) && defined(__ID_SHARED_LIBRARY__) ++ move.l _current_shared_library_a5_offset_(%a5),%a0 ++ move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 ++ jsr (%a0) ++#elif defined(__mcoldfire__) && !defined(__mcfisab__) && !defined(__mcfisac__) ++ move.l #_GLOBAL_OFFSET_TABLE_@GOTPC,%a0 ++ lea (-6,%pc,%a0),%a0 ++ move.l CALLFUNC(ffi_closure_SYSV_inner@GOT)(%a0),%a0 ++ jsr (%a0) + #else + bsr.l CALLFUNC(ffi_closure_SYSV_inner@PLTPC) + #endif +-- +1.7.10.4 + diff --git a/buildroot/package/libffi/0005-mips-use-__linux__-and-not-linux.patch b/buildroot/package/libffi/0005-mips-use-__linux__-and-not-linux.patch new file mode 100644 index 0000000..a48f3d3 --- /dev/null +++ b/buildroot/package/libffi/0005-mips-use-__linux__-and-not-linux.patch @@ -0,0 +1,37 @@ +From 1f43e5edfd91bee80e518432b80db01f1bf226e3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 22 Oct 2017 15:02:11 +0200 +Subject: [PATCH] mips: use __linux__ and not linux + +The "linux" symbol is not POSIX compliant [1], and therefore not +defined when building with -std=c99. Due to this, the linux +conditional block doesn't get used on Linux when building Python 3.x +(which is built with -std=c99). To fix this, we use the POSIX +compliant __linux__ symbol, which is defined when -std=c99 is used. + +This fixes the build of Python 3.x on MIPS/musl configuration, as it +makes sures that gets included and not . + +[1] https://sourceforge.net/p/predef/wiki/OperatingSystems/ + +Signed-off-by: Thomas Petazzoni +--- + src/mips/ffitarget.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/mips/ffitarget.h b/src/mips/ffitarget.h +index 717d659..6faa358 100644 +--- a/src/mips/ffitarget.h ++++ b/src/mips/ffitarget.h +@@ -32,7 +32,7 @@ + #error "Please do not include ffitarget.h directly into your source. Use ffi.h instead." + #endif + +-#ifdef linux ++#ifdef __linux__ + # include + #elif defined(__rtems__) + /* +-- +2.13.6 + diff --git a/buildroot/package/libffi/Config.in b/buildroot/package/libffi/Config.in new file mode 100644 index 0000000..6edf570 --- /dev/null +++ b/buildroot/package/libffi/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBFFI + bool "libffi" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The libffi library provides a portable, high level + programming interface to various calling conventions. This + allows a programmer to call any function specified by a call + interface description at run-time. + + http://sourceware.org/libffi/ + +comment "libffi needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libffi/libffi.hash b/buildroot/package/libffi/libffi.hash new file mode 100644 index 0000000..0153f7e --- /dev/null +++ b/buildroot/package/libffi/libffi.hash @@ -0,0 +1,4 @@ +# From ftp://sourceware.org/pub/libffi/sha512.sum +sha512 980ca30a8d76f963fca722432b1fe5af77d7a4e4d2eac5144fbc5374d4c596609a293440573f4294207e1bdd9fda80ad1e1cafb2ffb543df5a275bc3bd546483 libffi-3.2.1.tar.gz +# License files, locally calculated +sha256 0f4d7a0bfb83c37465d42dc305f124189196cc0cc2cc8d6f8461103682aebbc5 LICENSE diff --git a/buildroot/package/libffi/libffi.mk b/buildroot/package/libffi/libffi.mk new file mode 100644 index 0000000..32e01e9 --- /dev/null +++ b/buildroot/package/libffi/libffi.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# libffi +# +################################################################################ + +LIBFFI_VERSION = 3.2.1 +LIBFFI_SITE = ftp://sourceware.org/pub/libffi +LIBFFI_LICENSE = MIT +LIBFFI_LICENSE_FILES = LICENSE +LIBFFI_INSTALL_STAGING = YES +LIBFFI_AUTORECONF = YES + +# Move the headers to the usual location, and adjust the .pc file +# accordingly. +define LIBFFI_MOVE_HEADERS + mv $(1)/lib/libffi-$(LIBFFI_VERSION)/include/*.h $(1)/include/ + $(SED) '/^includedir.*/d' -e '/^Cflags:.*/d' \ + $(1)/lib/pkgconfig/libffi.pc + rm -rf $(1)/lib/libffi-* +endef + +LIBFFI_MOVE_STAGING_HEADERS = $(call LIBFFI_MOVE_HEADERS,$(STAGING_DIR)/usr) +LIBFFI_POST_INSTALL_STAGING_HOOKS += LIBFFI_MOVE_STAGING_HEADERS + +HOST_LIBFFI_MOVE_HOST_HEADERS = $(call LIBFFI_MOVE_HEADERS,$(HOST_DIR)) +HOST_LIBFFI_POST_INSTALL_HOOKS += HOST_LIBFFI_MOVE_HOST_HEADERS + +# Remove headers that are not at the usual location from the target +define LIBFFI_REMOVE_TARGET_HEADERS + $(RM) -rf $(TARGET_DIR)/usr/lib/libffi-$(LIBFFI_VERSION) +endef + +LIBFFI_POST_INSTALL_TARGET_HOOKS += LIBFFI_REMOVE_TARGET_HEADERS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libfm-extra/Config.in b/buildroot/package/libfm-extra/Config.in new file mode 100644 index 0000000..eefc022 --- /dev/null +++ b/buildroot/package/libfm-extra/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBFM_EXTRA + bool "libfm-extra" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + The libfm-extra package contains a library and other files + required by menu-cache-gen libexec of menu-cache + + http://wiki.lxde.org/en/Libfm + +comment "libfm-extra needs a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libfm-extra/libfm-extra.hash b/buildroot/package/libfm-extra/libfm-extra.hash new file mode 100644 index 0000000..8a78ade --- /dev/null +++ b/buildroot/package/libfm-extra/libfm-extra.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/LibFM/ +md5 74997d75e7e87dc73398746fd373bf52 libfm-1.2.4.tar.xz +sha1 2f8183389c8e74edb15c6c8ab260df5dd39f3b2d libfm-1.2.4.tar.xz diff --git a/buildroot/package/libfm-extra/libfm-extra.mk b/buildroot/package/libfm-extra/libfm-extra.mk new file mode 100644 index 0000000..67d6dc1 --- /dev/null +++ b/buildroot/package/libfm-extra/libfm-extra.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libfm-extra +# +################################################################################ + +LIBFM_EXTRA_VERSION = 1.2.4 +LIBFM_EXTRA_SOURCE = libfm-$(LIBFM_EXTRA_VERSION).tar.xz +LIBFM_EXTRA_SITE = http://sourceforge.net/projects/pcmanfm/files +LIBFM_EXTRA_DEPENDENCIES = libglib2 host-intltool +LIBFM_EXTRA_LICENSE = GPL-2.0+, LGPL-2.1+ +LIBFM_EXTRA_LICENSE_FILES = COPYING src/extra/fm-xml-file.c +LIBFM_EXTRA_INSTALL_STAGING = YES +LIBFM_EXTRA_CONF_OPTS = --with-extra-only --with-gtk=no + +$(eval $(autotools-package)) diff --git a/buildroot/package/libfm/Config.in b/buildroot/package/libfm/Config.in new file mode 100644 index 0000000..81f2e10 --- /dev/null +++ b/buildroot/package/libfm/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_LIBFM + bool "libfm" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_INSTALL_LIBSTDCPP # libgtk2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGTK2 if !BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_MENU_CACHE + help + A glib/gio-based library providing some file management + utilities and related-widgets missing in gtk+/glib. This is + the core of PCManFM. The library is desktop independent + (not LXDE specific) and has clean API. It can be used to + develop other applications requiring file management + functionality. For example, you can create your own file + manager with facilities provided by libfm. + + http://wiki.lxde.org/en/Libfm + +comment "libfm needs X.org and a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_XORG7 diff --git a/buildroot/package/libfm/libfm.hash b/buildroot/package/libfm/libfm.hash new file mode 100644 index 0000000..69c4c31 --- /dev/null +++ b/buildroot/package/libfm/libfm.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/LibFM/ +md5 a1ba9ae5e920f38b647dd511edd6c807 libfm-1.2.5.tar.xz +sha1 5887aa4e85ee0964e7da67368136849957afd5d6 libfm-1.2.5.tar.xz diff --git a/buildroot/package/libfm/libfm.mk b/buildroot/package/libfm/libfm.mk new file mode 100644 index 0000000..c49cd3e --- /dev/null +++ b/buildroot/package/libfm/libfm.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libfm +# +################################################################################ + +LIBFM_VERSION = 1.2.5 +LIBFM_SOURCE = libfm-$(LIBFM_VERSION).tar.xz +LIBFM_SITE = http://sourceforge.net/projects/pcmanfm/files +LIBFM_DEPENDENCIES = menu-cache libglib2 cairo +LIBFM_LICENSE = GPL-2.0+, LGPL-2.1+ +LIBFM_LICENSE_FILES = COPYING src/extra/fm-xml-file.c +LIBFM_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +LIBFM_CONF_OPTS += --enable-exif +LIBFM_DEPENDENCIES += libexif +else +LIBFM_CONF_OPTS += --disable-exif +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +LIBFM_CONF_OPTS += --with-gtk=3 +LIBFM_DEPENDENCIES += libgtk3 +else +LIBFM_CONF_OPTS += --with-gtk=2 +LIBFM_DEPENDENCIES += libgtk2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libfreefare/Config.in b/buildroot/package/libfreefare/Config.in new file mode 100644 index 0000000..2bb0c93 --- /dev/null +++ b/buildroot/package/libfreefare/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBFREEFARE + bool "libfreefare" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBNFC + help + Library for high level manipulation of MIFARE cards. + + http://nfc-tools.org/index.php?title=Libfreefare + +comment "libfreefare needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libfreefare/libfreefare.hash b/buildroot/package/libfreefare/libfreefare.hash new file mode 100644 index 0000000..4d23136 --- /dev/null +++ b/buildroot/package/libfreefare/libfreefare.hash @@ -0,0 +1,2 @@ +# From https://github.com/nfc-tools/libfreefare/releases/download/libfreefare-0.4.0/libfreefare-0.4.0.tar.bz2 +sha256 bfa31d14a99a1247f5ed49195d6373de512e3eb75bf1627658b40cf7f876bc64 libfreefare-0.4.0.tar.bz2 diff --git a/buildroot/package/libfreefare/libfreefare.mk b/buildroot/package/libfreefare/libfreefare.mk new file mode 100644 index 0000000..13e6f2a --- /dev/null +++ b/buildroot/package/libfreefare/libfreefare.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libfreefare +# +################################################################################ + +LIBFREEFARE_VERSION = 0.4.0 +LIBFREEFARE_SOURCE = libfreefare-$(LIBFREEFARE_VERSION).tar.bz2 +# Do not use the github helper here, the generated tarball is *NOT* +# the same as the one uploaded by upstream for the release. +LIBFREEFARE_SITE = https://github.com/nfc-tools/libfreefare/releases/download/libfreefare-$(LIBFREEFARE_VERSION) +LIBFREEFARE_DEPENDENCIES = libnfc openssl +LIBFREEFARE_LICENSE = LGPL-3.0+ with exception +LIBFREEFARE_LICENSE_FILES = COPYING + +ifeq ($(BR2_STATIC_LIBS),y) +# openssl needs zlib even if the libfreefare example itself doesn't +LIBFREEFARE_CONF_ENV += LIBS='-lz' +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libfreeglut/Config.in b/buildroot/package/libfreeglut/Config.in new file mode 100644 index 0000000..ccb2d5c --- /dev/null +++ b/buildroot/package/libfreeglut/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBFREEGLUT + bool "libfreeglut" + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBGLU + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXXF86VM + help + FreeGLUT is a free-software/open-source alternative to the + OpenGL Utility Toolkit (GLUT) library. GLUT (and hence + FreeGLUT) takes care of all the system-specific chores + required for creating windows, initializing OpenGL contexts, + and handling input events, to allow for trully portable OpenGL + programs. + + http://freeglut.sourceforge.net + +comment "libfreeglut depends on X.org and needs an OpenGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/libfreeglut/libfreeglut.hash b/buildroot/package/libfreeglut/libfreeglut.hash new file mode 100644 index 0000000..a69a0b4 --- /dev/null +++ b/buildroot/package/libfreeglut/libfreeglut.hash @@ -0,0 +1,2 @@ +# From http://sourceforge.net/projects/freeglut/files/freeglut/3.0.0/ +sha1 fca52242f9344627a30f11487ee42002e6b0dacd freeglut-3.0.0.tar.gz diff --git a/buildroot/package/libfreeglut/libfreeglut.mk b/buildroot/package/libfreeglut/libfreeglut.mk new file mode 100644 index 0000000..507cb52 --- /dev/null +++ b/buildroot/package/libfreeglut/libfreeglut.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# libfreeglut +# +################################################################################ + +LIBFREEGLUT_VERSION = 3.0.0 +LIBFREEGLUT_SOURCE = freeglut-$(LIBFREEGLUT_VERSION).tar.gz +LIBFREEGLUT_SITE = http://downloads.sourceforge.net/freeglut +LIBFREEGLUT_LICENSE = MIT +LIBFREEGLUT_LICENSE_FILES = COPYING +LIBFREEGLUT_INSTALL_STAGING = YES +LIBFREEGLUT_DEPENDENCIES = \ + libgl \ + libglu \ + xlib_libXi \ + xlib_libXrandr \ + xlib_libXxf86vm + +LIBFREEGLUT_CONF_OPTS = -DFREEGLUT_BUILD_DEMOS=OFF + +# package depends on X.org which depends on !BR2_STATIC_LIBS +ifeq ($(BR2_SHARED_LIBS),y) +LIBFREEGLUT_CONF_OPTS += \ + -DFREEGLUT_BUILD_SHARED_LIBS=ON \ + -DFREEGLUT_BUILD_STATIC_LIBS=OFF +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LIBFREEGLUT_CONF_OPTS += \ + -DFREEGLUT_BUILD_SHARED_LIBS=ON \ + -DFREEGLUT_BUILD_STATIC_LIBS=ON +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libfreeimage/0001-no-root-install.patch b/buildroot/package/libfreeimage/0001-no-root-install.patch new file mode 100644 index 0000000..54756d8 --- /dev/null +++ b/buildroot/package/libfreeimage/0001-no-root-install.patch @@ -0,0 +1,20 @@ +Makefile.gnu: allow non-root install by not enforcing root ownserhip + +Signed-off-by: Rémi Rérolle + +diff -ruN a/Makefile.gnu b/Makefile.gnu +--- a/Makefile.gnu 2015-04-09 16:34:02.315316841 +0200 ++++ b/Makefile.gnu 2015-04-09 16:34:28.875483201 +0200 +@@ -71,9 +71,9 @@ + + install: + install -d $(INCDIR) $(INSTALLDIR) +- install -m 644 -o root -g root $(HEADER) $(INCDIR) +- install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR) +- install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR) ++ install -m 644 $(HEADER) $(INCDIR) ++ install -m 644 $(STATICLIB) $(INSTALLDIR) ++ install -m 755 $(SHAREDLIB) $(INSTALLDIR) + ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME) + ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME) + # ldconfig diff --git a/buildroot/package/libfreeimage/0002-fix-cpuid-x86.patch b/buildroot/package/libfreeimage/0002-fix-cpuid-x86.patch new file mode 100644 index 0000000..98b0e9c --- /dev/null +++ b/buildroot/package/libfreeimage/0002-fix-cpuid-x86.patch @@ -0,0 +1,67 @@ +Fix build issue caused by invalid register usage on x86 + +Patch taken from https://github.com/openexr/openexr/issues/128. + +Signed-off-by: Thomas Petazzoni + +Index: b/Source/OpenEXR/IlmImf/ImfSystemSpecific.cpp +=================================================================== +--- a/Source/OpenEXR/IlmImf/ImfSystemSpecific.cpp ++++ b/Source/OpenEXR/IlmImf/ImfSystemSpecific.cpp +@@ -40,21 +40,19 @@ + + namespace { + #if defined(IMF_HAVE_SSE2) && defined(__GNUC__) +- ++#include + // Helper functions for gcc + SSE enabled +- void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx) ++ void cpuid(unsigned int n, unsigned int &eax, unsigned int &ebx, ++ unsigned int &ecx, unsigned int &edx) + { +- __asm__ __volatile__ ( +- "cpuid" +- : /* Output */ "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) +- : /* Input */ "a"(n) +- : /* Clobber */); ++ __get_cpuid(n, &eax, &ebx, &ecx, &edx); + } + + #else // IMF_HAVE_SSE2 && __GNUC__ + + // Helper functions for generic compiler - all disabled +- void cpuid(int n, int &eax, int &ebx, int &ecx, int &edx) ++ void cpuid(unsigned int n, unsigned int &eax, unsigned int &ebx, ++ unsigned int &ecx, unsigned int &edx) + { + eax = ebx = ecx = edx = 0; + } +@@ -64,7 +62,7 @@ + + #ifdef OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX + +- void xgetbv(int n, int &eax, int &edx) ++ void xgetbv(unsigned int n, unsigned int &eax, unsigned int &edx) + { + __asm__ __volatile__ ( + "xgetbv" +@@ -75,7 +73,7 @@ + + #else // OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX + +- void xgetbv(int n, int &eax, int &edx) ++ void xgetbv(unsigned int n, unsigned int &eax, unsigned int &edx) + { + eax = edx = 0; + } +@@ -94,8 +92,8 @@ + f16c(false) + { + bool osxsave = false; +- int max = 0; +- int eax, ebx, ecx, edx; ++ unsigned int max = 0; ++ unsigned int eax, ebx, ecx, edx; + + cpuid(0, max, ebx, ecx, edx); + if (max > 0) diff --git a/buildroot/package/libfreeimage/0003-LibWebP-fix-compilation-issue-with-GCC-5.x-C-11.patch b/buildroot/package/libfreeimage/0003-LibWebP-fix-compilation-issue-with-GCC-5.x-C-11.patch new file mode 100644 index 0000000..6964827 --- /dev/null +++ b/buildroot/package/libfreeimage/0003-LibWebP-fix-compilation-issue-with-GCC-5.x-C-11.patch @@ -0,0 +1,1172 @@ +From 44bce1b66c1cdd5308ac3ac773ea0a53d83790fd Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Tue, 24 Nov 2015 21:16:39 +0100 +Subject: [PATCH] LibWebP: fix compilation issue with GCC 5.x / C++11 + +GCC 5.1 / C++11 gets confused about the "#" in the inline assembly +code, and dies with errors like: + +Source/LibWebP/./src/dsp/dsp.upsampling_mips_dsp_r2.c:37:34: error: invalid +character ' ' in raw string delimiter + +Fix it by introducting white space around the string literals like it has +been done in upstream webp: + +https://chromium.googlesource.com/webm/libwebp/+/eebaf97f5a1cb713d81d311308d8a48c124e5aef + +Discussed upstream: +http://sourceforge.net/p/freeimage/discussion/36110/thread/605ef8e4/ + +[Scripted by sed -i 's/"\(#[A-Z0-9]*\)"/" \1 "/g' *.c] +Signed-off-by: Peter Korsgaard +--- + Source/LibWebP/src/dsp/dsp.dec_mips_dsp_r2.c | 28 +- + Source/LibWebP/src/dsp/dsp.enc_mips32.c | 314 ++++++++++----------- + Source/LibWebP/src/dsp/dsp.enc_mips_dsp_r2.c | 288 +++++++++---------- + Source/LibWebP/src/dsp/dsp.filters_mips_dsp_r2.c | 10 +- + Source/LibWebP/src/dsp/dsp.lossless_mips32.c | 34 +-- + Source/LibWebP/src/dsp/dsp.lossless_mips_dsp_r2.c | 8 +- + .../LibWebP/src/dsp/dsp.upsampling_mips_dsp_r2.c | 18 +- + Source/LibWebP/src/dsp/dsp.yuv_mips_dsp_r2.c | 10 +- + 8 files changed, 355 insertions(+), 355 deletions(-) + +diff --git a/Source/LibWebP/src/dsp/dsp.dec_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.dec_mips_dsp_r2.c +index dac2c93..aaa8111 100644 +--- a/Source/LibWebP/src/dsp/dsp.dec_mips_dsp_r2.c ++++ b/Source/LibWebP/src/dsp/dsp.dec_mips_dsp_r2.c +@@ -548,10 +548,10 @@ static void SimpleVFilter16(uint8_t* p, int stride, int thresh) { + // TEMP3 = SRC[D + D1 * BPS] + #define LOAD_4_BYTES(TEMP0, TEMP1, TEMP2, TEMP3, \ + A, A1, B, B1, C, C1, D, D1, SRC) \ +- "lbu %["#TEMP0"], "#A"+"#A1"*"XSTR(BPS)"(%["#SRC"]) \n\t" \ +- "lbu %["#TEMP1"], "#B"+"#B1"*"XSTR(BPS)"(%["#SRC"]) \n\t" \ +- "lbu %["#TEMP2"], "#C"+"#C1"*"XSTR(BPS)"(%["#SRC"]) \n\t" \ +- "lbu %["#TEMP3"], "#D"+"#D1"*"XSTR(BPS)"(%["#SRC"]) \n\t" \ ++ "lbu %[" #TEMP0 "], " #A "+" #A1 "*"XSTR(BPS)"(%[" #SRC "]) \n\t" \ ++ "lbu %[" #TEMP1 "], " #B "+" #B1 "*"XSTR(BPS)"(%[" #SRC "]) \n\t" \ ++ "lbu %[" #TEMP2 "], " #C "+" #C1 "*"XSTR(BPS)"(%[" #SRC "]) \n\t" \ ++ "lbu %[" #TEMP3 "], " #D "+" #D1 "*"XSTR(BPS)"(%[" #SRC "]) \n\t" \ + + static void SimpleHFilter16(uint8_t* p, int stride, int thresh) { + int i; +@@ -623,8 +623,8 @@ static void SimpleHFilter16i(uint8_t* p, int stride, int thresh) { + // DST[A * BPS] = TEMP0 + // DST[B + C * BPS] = TEMP1 + #define STORE_8_BYTES(TEMP0, TEMP1, A, B, C, DST) \ +- "usw %["#TEMP0"], "#A"*"XSTR(BPS)"(%["#DST"]) \n\t" \ +- "usw %["#TEMP1"], "#B"+"#C"*"XSTR(BPS)"(%["#DST"]) \n\t" ++ "usw %[" #TEMP0 "], " #A "*"XSTR(BPS)"(%[" #DST "]) \n\t" \ ++ "usw %[" #TEMP1 "], " #B "+" #C "*"XSTR(BPS)"(%[" #DST "]) \n\t" + + static void VE4(uint8_t* dst) { // vertical + const uint8_t* top = dst - BPS; +@@ -725,8 +725,8 @@ static void RD4(uint8_t* dst) { // Down-right + // TEMP0 = SRC[A * BPS] + // TEMP1 = SRC[B + C * BPS] + #define LOAD_8_BYTES(TEMP0, TEMP1, A, B, C, SRC) \ +- "ulw %["#TEMP0"], "#A"*"XSTR(BPS)"(%["#SRC"]) \n\t" \ +- "ulw %["#TEMP1"], "#B"+"#C"*"XSTR(BPS)"(%["#SRC"]) \n\t" ++ "ulw %[" #TEMP0 "], " #A "*"XSTR(BPS)"(%[" #SRC "]) \n\t" \ ++ "ulw %[" #TEMP1 "], " #B "+" #C "*"XSTR(BPS)"(%[" #SRC "]) \n\t" + + static void LD4(uint8_t* dst) { // Down-Left + int temp0, temp1, temp2, temp3, temp4; +@@ -873,24 +873,24 @@ static void DC8uvNoTop(uint8_t* dst) { // DC with no top samples + #define CLIPPING(SIZE) \ + "preceu.ph.qbl %[temp2], %[temp0] \n\t" \ + "preceu.ph.qbr %[temp0], %[temp0] \n\t" \ +-".if "#SIZE" == 8 \n\t" \ ++".if " #SIZE " == 8 \n\t" \ + "preceu.ph.qbl %[temp3], %[temp1] \n\t" \ + "preceu.ph.qbr %[temp1], %[temp1] \n\t" \ + ".endif \n\t" \ + "addu.ph %[temp2], %[temp2], %[dst_1] \n\t" \ + "addu.ph %[temp0], %[temp0], %[dst_1] \n\t" \ +-".if "#SIZE" == 8 \n\t" \ ++".if " #SIZE " == 8 \n\t" \ + "addu.ph %[temp3], %[temp3], %[dst_1] \n\t" \ + "addu.ph %[temp1], %[temp1], %[dst_1] \n\t" \ + ".endif \n\t" \ + "shll_s.ph %[temp2], %[temp2], 7 \n\t" \ + "shll_s.ph %[temp0], %[temp0], 7 \n\t" \ +-".if "#SIZE" == 8 \n\t" \ ++".if " #SIZE " == 8 \n\t" \ + "shll_s.ph %[temp3], %[temp3], 7 \n\t" \ + "shll_s.ph %[temp1], %[temp1], 7 \n\t" \ + ".endif \n\t" \ + "precrqu_s.qb.ph %[temp0], %[temp2], %[temp0] \n\t" \ +-".if "#SIZE" == 8 \n\t" \ ++".if " #SIZE " == 8 \n\t" \ + "precrqu_s.qb.ph %[temp1], %[temp3], %[temp1] \n\t" \ + ".endif \n\t" + +@@ -899,7 +899,7 @@ static void DC8uvNoTop(uint8_t* dst) { // DC with no top samples + int dst_1 = ((int)(DST)[-1] << 16) + (DST)[-1]; \ + int temp0, temp1, temp2, temp3; \ + __asm__ volatile ( \ +- ".if "#SIZE" < 8 \n\t" \ ++ ".if " #SIZE " < 8 \n\t" \ + "ulw %[temp0], 0(%[top]) \n\t" \ + "subu.ph %[dst_1], %[dst_1], %[top_1] \n\t" \ + CLIPPING(4) \ +@@ -911,7 +911,7 @@ static void DC8uvNoTop(uint8_t* dst) { // DC with no top samples + CLIPPING(8) \ + "usw %[temp0], 0(%[dst]) \n\t" \ + "usw %[temp1], 4(%[dst]) \n\t" \ +- ".if "#SIZE" == 16 \n\t" \ ++ ".if " #SIZE " == 16 \n\t" \ + "ulw %[temp0], 8(%[top]) \n\t" \ + "ulw %[temp1], 12(%[top]) \n\t" \ + CLIPPING(8) \ +diff --git a/Source/LibWebP/src/dsp/dsp.enc_mips32.c b/Source/LibWebP/src/dsp/dsp.enc_mips32.c +index 545aa3a..bf1c16d 100644 +--- a/Source/LibWebP/src/dsp/dsp.enc_mips32.c ++++ b/Source/LibWebP/src/dsp/dsp.enc_mips32.c +@@ -31,26 +31,26 @@ static const int kC2 = 35468; + // TEMP0..TEMP3 - registers for corresponding tmp elements + // TEMP4..TEMP5 - temporary registers + #define VERTICAL_PASS(A, B, C, D, TEMP4, TEMP0, TEMP1, TEMP2, TEMP3) \ +- "lh %[temp16], "#A"(%[temp20]) \n\t" \ +- "lh %[temp18], "#B"(%[temp20]) \n\t" \ +- "lh %[temp17], "#C"(%[temp20]) \n\t" \ +- "lh %[temp19], "#D"(%[temp20]) \n\t" \ +- "addu %["#TEMP4"], %[temp16], %[temp18] \n\t" \ ++ "lh %[temp16], " #A "(%[temp20]) \n\t" \ ++ "lh %[temp18], " #B "(%[temp20]) \n\t" \ ++ "lh %[temp17], " #C "(%[temp20]) \n\t" \ ++ "lh %[temp19], " #D "(%[temp20]) \n\t" \ ++ "addu %[" #TEMP4 "], %[temp16], %[temp18] \n\t" \ + "subu %[temp16], %[temp16], %[temp18] \n\t" \ +- "mul %["#TEMP0"], %[temp17], %[kC2] \n\t" \ ++ "mul %[" #TEMP0 "], %[temp17], %[kC2] \n\t" \ + "mul %[temp18], %[temp19], %[kC1] \n\t" \ + "mul %[temp17], %[temp17], %[kC1] \n\t" \ + "mul %[temp19], %[temp19], %[kC2] \n\t" \ +- "sra %["#TEMP0"], %["#TEMP0"], 16 \n\n" \ ++ "sra %[" #TEMP0 "], %[" #TEMP0 "], 16 \n\n" \ + "sra %[temp18], %[temp18], 16 \n\n" \ + "sra %[temp17], %[temp17], 16 \n\n" \ + "sra %[temp19], %[temp19], 16 \n\n" \ +- "subu %["#TEMP2"], %["#TEMP0"], %[temp18] \n\t" \ +- "addu %["#TEMP3"], %[temp17], %[temp19] \n\t" \ +- "addu %["#TEMP0"], %["#TEMP4"], %["#TEMP3"] \n\t" \ +- "addu %["#TEMP1"], %[temp16], %["#TEMP2"] \n\t" \ +- "subu %["#TEMP2"], %[temp16], %["#TEMP2"] \n\t" \ +- "subu %["#TEMP3"], %["#TEMP4"], %["#TEMP3"] \n\t" ++ "subu %[" #TEMP2 "], %[" #TEMP0 "], %[temp18] \n\t" \ ++ "addu %[" #TEMP3 "], %[temp17], %[temp19] \n\t" \ ++ "addu %[" #TEMP0 "], %[" #TEMP4 "], %[" #TEMP3 "] \n\t" \ ++ "addu %[" #TEMP1 "], %[temp16], %[" #TEMP2 "] \n\t" \ ++ "subu %[" #TEMP2 "], %[temp16], %[" #TEMP2 "] \n\t" \ ++ "subu %[" #TEMP3 "], %[" #TEMP4 "], %[" #TEMP3 "] \n\t" + + // macro for one horizontal pass in ITransformOne + // MUL and STORE macros inlined +@@ -59,58 +59,58 @@ static const int kC2 = 35468; + // A - offset in bytes to load from ref and store to dst buffer + // TEMP0, TEMP4, TEMP8 and TEMP12 - registers for corresponding tmp elements + #define HORIZONTAL_PASS(A, TEMP0, TEMP4, TEMP8, TEMP12) \ +- "addiu %["#TEMP0"], %["#TEMP0"], 4 \n\t" \ +- "addu %[temp16], %["#TEMP0"], %["#TEMP8"] \n\t" \ +- "subu %[temp17], %["#TEMP0"], %["#TEMP8"] \n\t" \ +- "mul %["#TEMP0"], %["#TEMP4"], %[kC2] \n\t" \ +- "mul %["#TEMP8"], %["#TEMP12"], %[kC1] \n\t" \ +- "mul %["#TEMP4"], %["#TEMP4"], %[kC1] \n\t" \ +- "mul %["#TEMP12"], %["#TEMP12"], %[kC2] \n\t" \ +- "sra %["#TEMP0"], %["#TEMP0"], 16 \n\t" \ +- "sra %["#TEMP8"], %["#TEMP8"], 16 \n\t" \ +- "sra %["#TEMP4"], %["#TEMP4"], 16 \n\t" \ +- "sra %["#TEMP12"], %["#TEMP12"], 16 \n\t" \ +- "subu %[temp18], %["#TEMP0"], %["#TEMP8"] \n\t" \ +- "addu %[temp19], %["#TEMP4"], %["#TEMP12"] \n\t" \ +- "addu %["#TEMP0"], %[temp16], %[temp19] \n\t" \ +- "addu %["#TEMP4"], %[temp17], %[temp18] \n\t" \ +- "subu %["#TEMP8"], %[temp17], %[temp18] \n\t" \ +- "subu %["#TEMP12"], %[temp16], %[temp19] \n\t" \ ++ "addiu %[" #TEMP0 "], %[" #TEMP0 "], 4 \n\t" \ ++ "addu %[temp16], %[" #TEMP0 "], %[" #TEMP8 "] \n\t" \ ++ "subu %[temp17], %[" #TEMP0 "], %[" #TEMP8 "] \n\t" \ ++ "mul %[" #TEMP0 "], %[" #TEMP4 "], %[kC2] \n\t" \ ++ "mul %[" #TEMP8 "], %[" #TEMP12 "], %[kC1] \n\t" \ ++ "mul %[" #TEMP4 "], %[" #TEMP4 "], %[kC1] \n\t" \ ++ "mul %[" #TEMP12 "], %[" #TEMP12 "], %[kC2] \n\t" \ ++ "sra %[" #TEMP0 "], %[" #TEMP0 "], 16 \n\t" \ ++ "sra %[" #TEMP8 "], %[" #TEMP8 "], 16 \n\t" \ ++ "sra %[" #TEMP4 "], %[" #TEMP4 "], 16 \n\t" \ ++ "sra %[" #TEMP12 "], %[" #TEMP12 "], 16 \n\t" \ ++ "subu %[temp18], %[" #TEMP0 "], %[" #TEMP8 "] \n\t" \ ++ "addu %[temp19], %[" #TEMP4 "], %[" #TEMP12 "] \n\t" \ ++ "addu %[" #TEMP0 "], %[temp16], %[temp19] \n\t" \ ++ "addu %[" #TEMP4 "], %[temp17], %[temp18] \n\t" \ ++ "subu %[" #TEMP8 "], %[temp17], %[temp18] \n\t" \ ++ "subu %[" #TEMP12 "], %[temp16], %[temp19] \n\t" \ + "lw %[temp20], 0(%[args]) \n\t" \ +- "sra %["#TEMP0"], %["#TEMP0"], 3 \n\t" \ +- "sra %["#TEMP4"], %["#TEMP4"], 3 \n\t" \ +- "sra %["#TEMP8"], %["#TEMP8"], 3 \n\t" \ +- "sra %["#TEMP12"], %["#TEMP12"], 3 \n\t" \ +- "lbu %[temp16], 0+"XSTR(BPS)"*"#A"(%[temp20]) \n\t" \ +- "lbu %[temp17], 1+"XSTR(BPS)"*"#A"(%[temp20]) \n\t" \ +- "lbu %[temp18], 2+"XSTR(BPS)"*"#A"(%[temp20]) \n\t" \ +- "lbu %[temp19], 3+"XSTR(BPS)"*"#A"(%[temp20]) \n\t" \ +- "addu %["#TEMP0"], %[temp16], %["#TEMP0"] \n\t" \ +- "addu %["#TEMP4"], %[temp17], %["#TEMP4"] \n\t" \ +- "addu %["#TEMP8"], %[temp18], %["#TEMP8"] \n\t" \ +- "addu %["#TEMP12"], %[temp19], %["#TEMP12"] \n\t" \ +- "slt %[temp16], %["#TEMP0"], $zero \n\t" \ +- "slt %[temp17], %["#TEMP4"], $zero \n\t" \ +- "slt %[temp18], %["#TEMP8"], $zero \n\t" \ +- "slt %[temp19], %["#TEMP12"], $zero \n\t" \ +- "movn %["#TEMP0"], $zero, %[temp16] \n\t" \ +- "movn %["#TEMP4"], $zero, %[temp17] \n\t" \ +- "movn %["#TEMP8"], $zero, %[temp18] \n\t" \ +- "movn %["#TEMP12"], $zero, %[temp19] \n\t" \ ++ "sra %[" #TEMP0 "], %[" #TEMP0 "], 3 \n\t" \ ++ "sra %[" #TEMP4 "], %[" #TEMP4 "], 3 \n\t" \ ++ "sra %[" #TEMP8 "], %[" #TEMP8 "], 3 \n\t" \ ++ "sra %[" #TEMP12 "], %[" #TEMP12 "], 3 \n\t" \ ++ "lbu %[temp16], 0+"XSTR(BPS)"*" #A "(%[temp20]) \n\t" \ ++ "lbu %[temp17], 1+"XSTR(BPS)"*" #A "(%[temp20]) \n\t" \ ++ "lbu %[temp18], 2+"XSTR(BPS)"*" #A "(%[temp20]) \n\t" \ ++ "lbu %[temp19], 3+"XSTR(BPS)"*" #A "(%[temp20]) \n\t" \ ++ "addu %[" #TEMP0 "], %[temp16], %[" #TEMP0 "] \n\t" \ ++ "addu %[" #TEMP4 "], %[temp17], %[" #TEMP4 "] \n\t" \ ++ "addu %[" #TEMP8 "], %[temp18], %[" #TEMP8 "] \n\t" \ ++ "addu %[" #TEMP12 "], %[temp19], %[" #TEMP12 "] \n\t" \ ++ "slt %[temp16], %[" #TEMP0 "], $zero \n\t" \ ++ "slt %[temp17], %[" #TEMP4 "], $zero \n\t" \ ++ "slt %[temp18], %[" #TEMP8 "], $zero \n\t" \ ++ "slt %[temp19], %[" #TEMP12 "], $zero \n\t" \ ++ "movn %[" #TEMP0 "], $zero, %[temp16] \n\t" \ ++ "movn %[" #TEMP4 "], $zero, %[temp17] \n\t" \ ++ "movn %[" #TEMP8 "], $zero, %[temp18] \n\t" \ ++ "movn %[" #TEMP12 "], $zero, %[temp19] \n\t" \ + "addiu %[temp20], $zero, 255 \n\t" \ +- "slt %[temp16], %["#TEMP0"], %[temp20] \n\t" \ +- "slt %[temp17], %["#TEMP4"], %[temp20] \n\t" \ +- "slt %[temp18], %["#TEMP8"], %[temp20] \n\t" \ +- "slt %[temp19], %["#TEMP12"], %[temp20] \n\t" \ +- "movz %["#TEMP0"], %[temp20], %[temp16] \n\t" \ +- "movz %["#TEMP4"], %[temp20], %[temp17] \n\t" \ ++ "slt %[temp16], %[" #TEMP0 "], %[temp20] \n\t" \ ++ "slt %[temp17], %[" #TEMP4 "], %[temp20] \n\t" \ ++ "slt %[temp18], %[" #TEMP8 "], %[temp20] \n\t" \ ++ "slt %[temp19], %[" #TEMP12 "], %[temp20] \n\t" \ ++ "movz %[" #TEMP0 "], %[temp20], %[temp16] \n\t" \ ++ "movz %[" #TEMP4 "], %[temp20], %[temp17] \n\t" \ + "lw %[temp16], 8(%[args]) \n\t" \ +- "movz %["#TEMP8"], %[temp20], %[temp18] \n\t" \ +- "movz %["#TEMP12"], %[temp20], %[temp19] \n\t" \ +- "sb %["#TEMP0"], 0+"XSTR(BPS)"*"#A"(%[temp16]) \n\t" \ +- "sb %["#TEMP4"], 1+"XSTR(BPS)"*"#A"(%[temp16]) \n\t" \ +- "sb %["#TEMP8"], 2+"XSTR(BPS)"*"#A"(%[temp16]) \n\t" \ +- "sb %["#TEMP12"], 3+"XSTR(BPS)"*"#A"(%[temp16]) \n\t" ++ "movz %[" #TEMP8 "], %[temp20], %[temp18] \n\t" \ ++ "movz %[" #TEMP12 "], %[temp20], %[temp19] \n\t" \ ++ "sb %[" #TEMP0 "], 0+"XSTR(BPS)"*" #A "(%[temp16]) \n\t" \ ++ "sb %[" #TEMP4 "], 1+"XSTR(BPS)"*" #A "(%[temp16]) \n\t" \ ++ "sb %[" #TEMP8 "], 2+"XSTR(BPS)"*" #A "(%[temp16]) \n\t" \ ++ "sb %[" #TEMP12 "], 3+"XSTR(BPS)"*" #A "(%[temp16]) \n\t" + + // Does one or two inverse transforms. + static WEBP_INLINE void ITransformOne(const uint8_t* ref, const int16_t* in, +@@ -161,9 +161,9 @@ static void ITransform(const uint8_t* ref, const int16_t* in, + // K - offset in bytes (kZigzag[n] * 4) + // N - offset in bytes (n * 2) + #define QUANTIZE_ONE(J, K, N) \ +- "lh %[temp0], "#J"(%[ppin]) \n\t" \ +- "lhu %[temp1], "#J"(%[ppsharpen]) \n\t" \ +- "lw %[temp2], "#K"(%[ppzthresh]) \n\t" \ ++ "lh %[temp0], " #J "(%[ppin]) \n\t" \ ++ "lhu %[temp1], " #J "(%[ppsharpen]) \n\t" \ ++ "lw %[temp2], " #K "(%[ppzthresh]) \n\t" \ + "sra %[sign], %[temp0], 15 \n\t" \ + "xor %[coeff], %[temp0], %[sign] \n\t" \ + "subu %[coeff], %[coeff], %[sign] \n\t" \ +@@ -172,9 +172,9 @@ static void ITransform(const uint8_t* ref, const int16_t* in, + "addiu %[temp5], $zero, 0 \n\t" \ + "addiu %[level], $zero, 0 \n\t" \ + "beqz %[temp4], 2f \n\t" \ +- "lhu %[temp1], "#J"(%[ppiq]) \n\t" \ +- "lw %[temp2], "#K"(%[ppbias]) \n\t" \ +- "lhu %[temp3], "#J"(%[ppq]) \n\t" \ ++ "lhu %[temp1], " #J "(%[ppiq]) \n\t" \ ++ "lw %[temp2], " #K "(%[ppbias]) \n\t" \ ++ "lhu %[temp3], " #J "(%[ppq]) \n\t" \ + "mul %[level], %[coeff], %[temp1] \n\t" \ + "addu %[level], %[level], %[temp2] \n\t" \ + "sra %[level], %[level], 17 \n\t" \ +@@ -184,8 +184,8 @@ static void ITransform(const uint8_t* ref, const int16_t* in, + "subu %[level], %[level], %[sign] \n\t" \ + "mul %[temp5], %[level], %[temp3] \n\t" \ + "2: \n\t" \ +- "sh %[temp5], "#J"(%[ppin]) \n\t" \ +- "sh %[level], "#N"(%[pout]) \n\t" ++ "sh %[temp5], " #J "(%[ppin]) \n\t" \ ++ "sh %[level], " #N "(%[pout]) \n\t" + + static int QuantizeBlock(int16_t in[16], int16_t out[16], + const VP8Matrix* const mtx) { +@@ -254,14 +254,14 @@ static int Quantize2Blocks(int16_t in[32], int16_t out[32], + // E..H - offsets in bytes to store first results to tmp buffer + // E1..H1 - offsets in bytes to store second results to tmp buffer + #define HORIZONTAL_PASS(A, E, F, G, H, E1, F1, G1, H1) \ +- "lbu %[temp0], 0+"XSTR(BPS)"*"#A"(%[a]) \n\t" \ +- "lbu %[temp1], 1+"XSTR(BPS)"*"#A"(%[a]) \n\t" \ +- "lbu %[temp2], 2+"XSTR(BPS)"*"#A"(%[a]) \n\t" \ +- "lbu %[temp3], 3+"XSTR(BPS)"*"#A"(%[a]) \n\t" \ +- "lbu %[temp4], 0+"XSTR(BPS)"*"#A"(%[b]) \n\t" \ +- "lbu %[temp5], 1+"XSTR(BPS)"*"#A"(%[b]) \n\t" \ +- "lbu %[temp6], 2+"XSTR(BPS)"*"#A"(%[b]) \n\t" \ +- "lbu %[temp7], 3+"XSTR(BPS)"*"#A"(%[b]) \n\t" \ ++ "lbu %[temp0], 0+"XSTR(BPS)"*" #A "(%[a]) \n\t" \ ++ "lbu %[temp1], 1+"XSTR(BPS)"*" #A "(%[a]) \n\t" \ ++ "lbu %[temp2], 2+"XSTR(BPS)"*" #A "(%[a]) \n\t" \ ++ "lbu %[temp3], 3+"XSTR(BPS)"*" #A "(%[a]) \n\t" \ ++ "lbu %[temp4], 0+"XSTR(BPS)"*" #A "(%[b]) \n\t" \ ++ "lbu %[temp5], 1+"XSTR(BPS)"*" #A "(%[b]) \n\t" \ ++ "lbu %[temp6], 2+"XSTR(BPS)"*" #A "(%[b]) \n\t" \ ++ "lbu %[temp7], 3+"XSTR(BPS)"*" #A "(%[b]) \n\t" \ + "addu %[temp8], %[temp0], %[temp2] \n\t" \ + "subu %[temp0], %[temp0], %[temp2] \n\t" \ + "addu %[temp2], %[temp1], %[temp3] \n\t" \ +@@ -278,14 +278,14 @@ static int Quantize2Blocks(int16_t in[32], int16_t out[32], + "subu %[temp3], %[temp3], %[temp6] \n\t" \ + "addu %[temp6], %[temp4], %[temp5] \n\t" \ + "subu %[temp4], %[temp4], %[temp5] \n\t" \ +- "sw %[temp7], "#E"(%[tmp]) \n\t" \ +- "sw %[temp2], "#H"(%[tmp]) \n\t" \ +- "sw %[temp8], "#F"(%[tmp]) \n\t" \ +- "sw %[temp0], "#G"(%[tmp]) \n\t" \ +- "sw %[temp1], "#E1"(%[tmp]) \n\t" \ +- "sw %[temp3], "#H1"(%[tmp]) \n\t" \ +- "sw %[temp6], "#F1"(%[tmp]) \n\t" \ +- "sw %[temp4], "#G1"(%[tmp]) \n\t" ++ "sw %[temp7], " #E "(%[tmp]) \n\t" \ ++ "sw %[temp2], " #H "(%[tmp]) \n\t" \ ++ "sw %[temp8], " #F "(%[tmp]) \n\t" \ ++ "sw %[temp0], " #G "(%[tmp]) \n\t" \ ++ "sw %[temp1], " #E1 "(%[tmp]) \n\t" \ ++ "sw %[temp3], " #H1 "(%[tmp]) \n\t" \ ++ "sw %[temp6], " #F1 "(%[tmp]) \n\t" \ ++ "sw %[temp4], " #G1 "(%[tmp]) \n\t" + + // macro for one vertical pass in Disto4x4 (TTransform) + // two calls of function TTransform are merged into single one +@@ -300,10 +300,10 @@ static int Quantize2Blocks(int16_t in[32], int16_t out[32], + // A1..D1 - offsets in bytes to load second results from tmp buffer + // E..H - offsets in bytes to load from w buffer + #define VERTICAL_PASS(A, B, C, D, A1, B1, C1, D1, E, F, G, H) \ +- "lw %[temp0], "#A1"(%[tmp]) \n\t" \ +- "lw %[temp1], "#C1"(%[tmp]) \n\t" \ +- "lw %[temp2], "#B1"(%[tmp]) \n\t" \ +- "lw %[temp3], "#D1"(%[tmp]) \n\t" \ ++ "lw %[temp0], " #A1 "(%[tmp]) \n\t" \ ++ "lw %[temp1], " #C1 "(%[tmp]) \n\t" \ ++ "lw %[temp2], " #B1 "(%[tmp]) \n\t" \ ++ "lw %[temp3], " #D1 "(%[tmp]) \n\t" \ + "addu %[temp8], %[temp0], %[temp1] \n\t" \ + "subu %[temp0], %[temp0], %[temp1] \n\t" \ + "addu %[temp1], %[temp2], %[temp3] \n\t" \ +@@ -324,18 +324,18 @@ static int Quantize2Blocks(int16_t in[32], int16_t out[32], + "subu %[temp1], %[temp1], %[temp5] \n\t" \ + "subu %[temp0], %[temp0], %[temp6] \n\t" \ + "subu %[temp8], %[temp8], %[temp7] \n\t" \ +- "lhu %[temp4], "#E"(%[w]) \n\t" \ +- "lhu %[temp5], "#F"(%[w]) \n\t" \ +- "lhu %[temp6], "#G"(%[w]) \n\t" \ +- "lhu %[temp7], "#H"(%[w]) \n\t" \ ++ "lhu %[temp4], " #E "(%[w]) \n\t" \ ++ "lhu %[temp5], " #F "(%[w]) \n\t" \ ++ "lhu %[temp6], " #G "(%[w]) \n\t" \ ++ "lhu %[temp7], " #H "(%[w]) \n\t" \ + "madd %[temp4], %[temp3] \n\t" \ + "madd %[temp5], %[temp1] \n\t" \ + "madd %[temp6], %[temp0] \n\t" \ + "madd %[temp7], %[temp8] \n\t" \ +- "lw %[temp0], "#A"(%[tmp]) \n\t" \ +- "lw %[temp1], "#C"(%[tmp]) \n\t" \ +- "lw %[temp2], "#B"(%[tmp]) \n\t" \ +- "lw %[temp3], "#D"(%[tmp]) \n\t" \ ++ "lw %[temp0], " #A "(%[tmp]) \n\t" \ ++ "lw %[temp1], " #C "(%[tmp]) \n\t" \ ++ "lw %[temp2], " #B "(%[tmp]) \n\t" \ ++ "lw %[temp3], " #D "(%[tmp]) \n\t" \ + "addu %[temp8], %[temp0], %[temp1] \n\t" \ + "subu %[temp0], %[temp0], %[temp1] \n\t" \ + "addu %[temp1], %[temp2], %[temp3] \n\t" \ +@@ -413,70 +413,70 @@ static int Disto16x16(const uint8_t* const a, const uint8_t* const b, + // A - offset in bytes to load from src and ref buffers + // TEMP0..TEMP3 - registers for corresponding tmp elements + #define HORIZONTAL_PASS(A, TEMP0, TEMP1, TEMP2, TEMP3) \ +- "lw %["#TEMP1"], 0(%[args]) \n\t" \ +- "lw %["#TEMP2"], 4(%[args]) \n\t" \ +- "lbu %[temp16], 0+"XSTR(BPS)"*"#A"(%["#TEMP1"]) \n\t" \ +- "lbu %[temp17], 0+"XSTR(BPS)"*"#A"(%["#TEMP2"]) \n\t" \ +- "lbu %[temp18], 1+"XSTR(BPS)"*"#A"(%["#TEMP1"]) \n\t" \ +- "lbu %[temp19], 1+"XSTR(BPS)"*"#A"(%["#TEMP2"]) \n\t" \ ++ "lw %[" #TEMP1 "], 0(%[args]) \n\t" \ ++ "lw %[" #TEMP2 "], 4(%[args]) \n\t" \ ++ "lbu %[temp16], 0+"XSTR(BPS)"*" #A "(%[" #TEMP1 "]) \n\t" \ ++ "lbu %[temp17], 0+"XSTR(BPS)"*" #A "(%[" #TEMP2 "]) \n\t" \ ++ "lbu %[temp18], 1+"XSTR(BPS)"*" #A "(%[" #TEMP1 "]) \n\t" \ ++ "lbu %[temp19], 1+"XSTR(BPS)"*" #A "(%[" #TEMP2 "]) \n\t" \ + "subu %[temp20], %[temp16], %[temp17] \n\t" \ +- "lbu %[temp16], 2+"XSTR(BPS)"*"#A"(%["#TEMP1"]) \n\t" \ +- "lbu %[temp17], 2+"XSTR(BPS)"*"#A"(%["#TEMP2"]) \n\t" \ +- "subu %["#TEMP0"], %[temp18], %[temp19] \n\t" \ +- "lbu %[temp18], 3+"XSTR(BPS)"*"#A"(%["#TEMP1"]) \n\t" \ +- "lbu %[temp19], 3+"XSTR(BPS)"*"#A"(%["#TEMP2"]) \n\t" \ +- "subu %["#TEMP1"], %[temp16], %[temp17] \n\t" \ +- "subu %["#TEMP2"], %[temp18], %[temp19] \n\t" \ +- "addu %["#TEMP3"], %[temp20], %["#TEMP2"] \n\t" \ +- "subu %["#TEMP2"], %[temp20], %["#TEMP2"] \n\t" \ +- "addu %[temp20], %["#TEMP0"], %["#TEMP1"] \n\t" \ +- "subu %["#TEMP0"], %["#TEMP0"], %["#TEMP1"] \n\t" \ +- "mul %[temp16], %["#TEMP2"], %[c5352] \n\t" \ +- "mul %[temp17], %["#TEMP2"], %[c2217] \n\t" \ +- "mul %[temp18], %["#TEMP0"], %[c5352] \n\t" \ +- "mul %[temp19], %["#TEMP0"], %[c2217] \n\t" \ +- "addu %["#TEMP1"], %["#TEMP3"], %[temp20] \n\t" \ +- "subu %[temp20], %["#TEMP3"], %[temp20] \n\t" \ +- "sll %["#TEMP0"], %["#TEMP1"], 3 \n\t" \ +- "sll %["#TEMP2"], %[temp20], 3 \n\t" \ ++ "lbu %[temp16], 2+"XSTR(BPS)"*" #A "(%[" #TEMP1 "]) \n\t" \ ++ "lbu %[temp17], 2+"XSTR(BPS)"*" #A "(%[" #TEMP2 "]) \n\t" \ ++ "subu %[" #TEMP0 "], %[temp18], %[temp19] \n\t" \ ++ "lbu %[temp18], 3+"XSTR(BPS)"*" #A "(%[" #TEMP1 "]) \n\t" \ ++ "lbu %[temp19], 3+"XSTR(BPS)"*" #A "(%[" #TEMP2 "]) \n\t" \ ++ "subu %[" #TEMP1 "], %[temp16], %[temp17] \n\t" \ ++ "subu %[" #TEMP2 "], %[temp18], %[temp19] \n\t" \ ++ "addu %[" #TEMP3 "], %[temp20], %[" #TEMP2 "] \n\t" \ ++ "subu %[" #TEMP2 "], %[temp20], %[" #TEMP2 "] \n\t" \ ++ "addu %[temp20], %[" #TEMP0 "], %[" #TEMP1 "] \n\t" \ ++ "subu %[" #TEMP0 "], %[" #TEMP0 "], %[" #TEMP1 "] \n\t" \ ++ "mul %[temp16], %[" #TEMP2 "], %[c5352] \n\t" \ ++ "mul %[temp17], %[" #TEMP2 "], %[c2217] \n\t" \ ++ "mul %[temp18], %[" #TEMP0 "], %[c5352] \n\t" \ ++ "mul %[temp19], %[" #TEMP0 "], %[c2217] \n\t" \ ++ "addu %[" #TEMP1 "], %[" #TEMP3 "], %[temp20] \n\t" \ ++ "subu %[temp20], %[" #TEMP3 "], %[temp20] \n\t" \ ++ "sll %[" #TEMP0 "], %[" #TEMP1 "], 3 \n\t" \ ++ "sll %[" #TEMP2 "], %[temp20], 3 \n\t" \ + "addiu %[temp16], %[temp16], 1812 \n\t" \ + "addiu %[temp17], %[temp17], 937 \n\t" \ + "addu %[temp16], %[temp16], %[temp19] \n\t" \ + "subu %[temp17], %[temp17], %[temp18] \n\t" \ +- "sra %["#TEMP1"], %[temp16], 9 \n\t" \ +- "sra %["#TEMP3"], %[temp17], 9 \n\t" ++ "sra %[" #TEMP1 "], %[temp16], 9 \n\t" \ ++ "sra %[" #TEMP3 "], %[temp17], 9 \n\t" + + // macro for one vertical pass in FTransform + // temp0..temp15 holds tmp[0]..tmp[15] + // A..D - offsets in bytes to store to out buffer + // TEMP0, TEMP4, TEMP8 and TEMP12 - registers for corresponding tmp elements + #define VERTICAL_PASS(A, B, C, D, TEMP0, TEMP4, TEMP8, TEMP12) \ +- "addu %[temp16], %["#TEMP0"], %["#TEMP12"] \n\t" \ +- "subu %[temp19], %["#TEMP0"], %["#TEMP12"] \n\t" \ +- "addu %[temp17], %["#TEMP4"], %["#TEMP8"] \n\t" \ +- "subu %[temp18], %["#TEMP4"], %["#TEMP8"] \n\t" \ +- "mul %["#TEMP8"], %[temp19], %[c2217] \n\t" \ +- "mul %["#TEMP12"], %[temp18], %[c2217] \n\t" \ +- "mul %["#TEMP4"], %[temp19], %[c5352] \n\t" \ ++ "addu %[temp16], %[" #TEMP0 "], %[" #TEMP12 "] \n\t" \ ++ "subu %[temp19], %[" #TEMP0 "], %[" #TEMP12 "] \n\t" \ ++ "addu %[temp17], %[" #TEMP4 "], %[" #TEMP8 "] \n\t" \ ++ "subu %[temp18], %[" #TEMP4 "], %[" #TEMP8 "] \n\t" \ ++ "mul %[" #TEMP8 "], %[temp19], %[c2217] \n\t" \ ++ "mul %[" #TEMP12 "], %[temp18], %[c2217] \n\t" \ ++ "mul %[" #TEMP4 "], %[temp19], %[c5352] \n\t" \ + "mul %[temp18], %[temp18], %[c5352] \n\t" \ + "addiu %[temp16], %[temp16], 7 \n\t" \ +- "addu %["#TEMP0"], %[temp16], %[temp17] \n\t" \ +- "sra %["#TEMP0"], %["#TEMP0"], 4 \n\t" \ +- "addu %["#TEMP12"], %["#TEMP12"], %["#TEMP4"] \n\t" \ +- "subu %["#TEMP4"], %[temp16], %[temp17] \n\t" \ +- "sra %["#TEMP4"], %["#TEMP4"], 4 \n\t" \ +- "addiu %["#TEMP8"], %["#TEMP8"], 30000 \n\t" \ +- "addiu %["#TEMP12"], %["#TEMP12"], 12000 \n\t" \ +- "addiu %["#TEMP8"], %["#TEMP8"], 21000 \n\t" \ +- "subu %["#TEMP8"], %["#TEMP8"], %[temp18] \n\t" \ +- "sra %["#TEMP12"], %["#TEMP12"], 16 \n\t" \ +- "sra %["#TEMP8"], %["#TEMP8"], 16 \n\t" \ +- "addiu %[temp16], %["#TEMP12"], 1 \n\t" \ +- "movn %["#TEMP12"], %[temp16], %[temp19] \n\t" \ +- "sh %["#TEMP0"], "#A"(%[temp20]) \n\t" \ +- "sh %["#TEMP4"], "#C"(%[temp20]) \n\t" \ +- "sh %["#TEMP8"], "#D"(%[temp20]) \n\t" \ +- "sh %["#TEMP12"], "#B"(%[temp20]) \n\t" ++ "addu %[" #TEMP0 "], %[temp16], %[temp17] \n\t" \ ++ "sra %[" #TEMP0 "], %[" #TEMP0 "], 4 \n\t" \ ++ "addu %[" #TEMP12 "], %[" #TEMP12 "], %[" #TEMP4 "] \n\t" \ ++ "subu %[" #TEMP4 "], %[temp16], %[temp17] \n\t" \ ++ "sra %[" #TEMP4 "], %[" #TEMP4 "], 4 \n\t" \ ++ "addiu %[" #TEMP8 "], %[" #TEMP8 "], 30000 \n\t" \ ++ "addiu %[" #TEMP12 "], %[" #TEMP12 "], 12000 \n\t" \ ++ "addiu %[" #TEMP8 "], %[" #TEMP8 "], 21000 \n\t" \ ++ "subu %[" #TEMP8 "], %[" #TEMP8 "], %[temp18] \n\t" \ ++ "sra %[" #TEMP12 "], %[" #TEMP12 "], 16 \n\t" \ ++ "sra %[" #TEMP8 "], %[" #TEMP8 "], 16 \n\t" \ ++ "addiu %[temp16], %[" #TEMP12 "], 1 \n\t" \ ++ "movn %[" #TEMP12 "], %[temp16], %[temp19] \n\t" \ ++ "sh %[" #TEMP0 "], " #A "(%[temp20]) \n\t" \ ++ "sh %[" #TEMP4 "], " #C "(%[temp20]) \n\t" \ ++ "sh %[" #TEMP8 "], " #D "(%[temp20]) \n\t" \ ++ "sh %[" #TEMP12 "], " #B "(%[temp20]) \n\t" + + static void FTransform(const uint8_t* src, const uint8_t* ref, int16_t* out) { + int temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8; +@@ -516,14 +516,14 @@ static void FTransform(const uint8_t* src, const uint8_t* ref, int16_t* out) { + #if !defined(WORK_AROUND_GCC) + + #define GET_SSE_INNER(A, B, C, D) \ +- "lbu %[temp0], "#A"(%[a]) \n\t" \ +- "lbu %[temp1], "#A"(%[b]) \n\t" \ +- "lbu %[temp2], "#B"(%[a]) \n\t" \ +- "lbu %[temp3], "#B"(%[b]) \n\t" \ +- "lbu %[temp4], "#C"(%[a]) \n\t" \ +- "lbu %[temp5], "#C"(%[b]) \n\t" \ +- "lbu %[temp6], "#D"(%[a]) \n\t" \ +- "lbu %[temp7], "#D"(%[b]) \n\t" \ ++ "lbu %[temp0], " #A "(%[a]) \n\t" \ ++ "lbu %[temp1], " #A "(%[b]) \n\t" \ ++ "lbu %[temp2], " #B "(%[a]) \n\t" \ ++ "lbu %[temp3], " #B "(%[b]) \n\t" \ ++ "lbu %[temp4], " #C "(%[a]) \n\t" \ ++ "lbu %[temp5], " #C "(%[b]) \n\t" \ ++ "lbu %[temp6], " #D "(%[a]) \n\t" \ ++ "lbu %[temp7], " #D "(%[b]) \n\t" \ + "subu %[temp0], %[temp0], %[temp1] \n\t" \ + "subu %[temp2], %[temp2], %[temp3] \n\t" \ + "subu %[temp4], %[temp4], %[temp5] \n\t" \ +diff --git a/Source/LibWebP/src/dsp/dsp.enc_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.enc_mips_dsp_r2.c +index ec58efe..1a3f968 100644 +--- a/Source/LibWebP/src/dsp/dsp.enc_mips_dsp_r2.c ++++ b/Source/LibWebP/src/dsp/dsp.enc_mips_dsp_r2.c +@@ -27,25 +27,25 @@ static const int kC2 = 35468; + // I - input (macro doesn't change it) + #define ADD_SUB_HALVES_X4(O0, O1, O2, O3, O4, O5, O6, O7, \ + I0, I1, I2, I3, I4, I5, I6, I7) \ +- "addq.ph %["#O0"], %["#I0"], %["#I1"] \n\t" \ +- "subq.ph %["#O1"], %["#I0"], %["#I1"] \n\t" \ +- "addq.ph %["#O2"], %["#I2"], %["#I3"] \n\t" \ +- "subq.ph %["#O3"], %["#I2"], %["#I3"] \n\t" \ +- "addq.ph %["#O4"], %["#I4"], %["#I5"] \n\t" \ +- "subq.ph %["#O5"], %["#I4"], %["#I5"] \n\t" \ +- "addq.ph %["#O6"], %["#I6"], %["#I7"] \n\t" \ +- "subq.ph %["#O7"], %["#I6"], %["#I7"] \n\t" ++ "addq.ph %[" #O0 "], %[" #I0 "], %[" #I1 "] \n\t" \ ++ "subq.ph %[" #O1 "], %[" #I0 "], %[" #I1 "] \n\t" \ ++ "addq.ph %[" #O2 "], %[" #I2 "], %[" #I3 "] \n\t" \ ++ "subq.ph %[" #O3 "], %[" #I2 "], %[" #I3 "] \n\t" \ ++ "addq.ph %[" #O4 "], %[" #I4 "], %[" #I5 "] \n\t" \ ++ "subq.ph %[" #O5 "], %[" #I4 "], %[" #I5 "] \n\t" \ ++ "addq.ph %[" #O6 "], %[" #I6 "], %[" #I7 "] \n\t" \ ++ "subq.ph %[" #O7 "], %[" #I6 "], %[" #I7 "] \n\t" + + // IO - input/output + #define ABS_X8(IO0, IO1, IO2, IO3, IO4, IO5, IO6, IO7) \ +- "absq_s.ph %["#IO0"], %["#IO0"] \n\t" \ +- "absq_s.ph %["#IO1"], %["#IO1"] \n\t" \ +- "absq_s.ph %["#IO2"], %["#IO2"] \n\t" \ +- "absq_s.ph %["#IO3"], %["#IO3"] \n\t" \ +- "absq_s.ph %["#IO4"], %["#IO4"] \n\t" \ +- "absq_s.ph %["#IO5"], %["#IO5"] \n\t" \ +- "absq_s.ph %["#IO6"], %["#IO6"] \n\t" \ +- "absq_s.ph %["#IO7"], %["#IO7"] \n\t" ++ "absq_s.ph %[" #IO0 "], %[" #IO0 "] \n\t" \ ++ "absq_s.ph %[" #IO1 "], %[" #IO1 "] \n\t" \ ++ "absq_s.ph %[" #IO2 "], %[" #IO2 "] \n\t" \ ++ "absq_s.ph %[" #IO3 "], %[" #IO3 "] \n\t" \ ++ "absq_s.ph %[" #IO4 "], %[" #IO4 "] \n\t" \ ++ "absq_s.ph %[" #IO5 "], %[" #IO5 "] \n\t" \ ++ "absq_s.ph %[" #IO6 "], %[" #IO6 "] \n\t" \ ++ "absq_s.ph %[" #IO7 "], %[" #IO7 "] \n\t" + + // dpa.w.ph $ac0 temp0 ,temp1 + // $ac += temp0[31..16] * temp1[31..16] + temp0[15..0] * temp1[15..0] +@@ -56,15 +56,15 @@ static const int kC2 = 35468; + #define MUL_HALF(O0, I0, I1, I2, I3, I4, I5, I6, I7, \ + I8, I9, I10, I11, I12, I13, I14, I15) \ + "mult $ac0, $zero, $zero \n\t" \ +- "dpa.w.ph $ac0, %["#I2"], %["#I0"] \n\t" \ +- "dpax.w.ph $ac0, %["#I5"], %["#I6"] \n\t" \ +- "dpa.w.ph $ac0, %["#I8"], %["#I9"] \n\t" \ +- "dpax.w.ph $ac0, %["#I11"], %["#I4"] \n\t" \ +- "dpa.w.ph $ac0, %["#I12"], %["#I7"] \n\t" \ +- "dpax.w.ph $ac0, %["#I13"], %["#I1"] \n\t" \ +- "dpa.w.ph $ac0, %["#I14"], %["#I3"] \n\t" \ +- "dpax.w.ph $ac0, %["#I15"], %["#I10"] \n\t" \ +- "mflo %["#O0"], $ac0 \n\t" ++ "dpa.w.ph $ac0, %[" #I2 "], %[" #I0 "] \n\t" \ ++ "dpax.w.ph $ac0, %[" #I5 "], %[" #I6 "] \n\t" \ ++ "dpa.w.ph $ac0, %[" #I8 "], %[" #I9 "] \n\t" \ ++ "dpax.w.ph $ac0, %[" #I11 "], %[" #I4 "] \n\t" \ ++ "dpa.w.ph $ac0, %[" #I12 "], %[" #I7 "] \n\t" \ ++ "dpax.w.ph $ac0, %[" #I13 "], %[" #I1 "] \n\t" \ ++ "dpa.w.ph $ac0, %[" #I14 "], %[" #I3 "] \n\t" \ ++ "dpax.w.ph $ac0, %[" #I15 "], %[" #I10 "] \n\t" \ ++ "mflo %[" #O0 "], $ac0 \n\t" + + #define OUTPUT_EARLY_CLOBBER_REGS_17() \ + OUTPUT_EARLY_CLOBBER_REGS_10(), \ +@@ -77,69 +77,69 @@ static const int kC2 = 35468; + // A - offset in bytes to load from src and ref buffers + // TEMP0..TEMP3 - registers for corresponding tmp elements + #define HORIZONTAL_PASS(A, TEMP0, TEMP1, TEMP2, TEMP3) \ +- "lw %["#TEMP0"], 0(%[args]) \n\t" \ +- "lw %["#TEMP1"], 4(%[args]) \n\t" \ +- "lw %["#TEMP2"], "XSTR(BPS)"*"#A"(%["#TEMP0"]) \n\t" \ +- "lw %["#TEMP3"], "XSTR(BPS)"*"#A"(%["#TEMP1"]) \n\t" \ +- "preceu.ph.qbl %["#TEMP0"], %["#TEMP2"] \n\t" \ +- "preceu.ph.qbl %["#TEMP1"], %["#TEMP3"] \n\t" \ +- "preceu.ph.qbr %["#TEMP2"], %["#TEMP2"] \n\t" \ +- "preceu.ph.qbr %["#TEMP3"], %["#TEMP3"] \n\t" \ +- "subq.ph %["#TEMP0"], %["#TEMP0"], %["#TEMP1"] \n\t" \ +- "subq.ph %["#TEMP2"], %["#TEMP2"], %["#TEMP3"] \n\t" \ +- "rotr %["#TEMP0"], %["#TEMP0"], 16 \n\t" \ +- "addq.ph %["#TEMP1"], %["#TEMP2"], %["#TEMP0"] \n\t" \ +- "subq.ph %["#TEMP3"], %["#TEMP2"], %["#TEMP0"] \n\t" \ +- "seh %["#TEMP0"], %["#TEMP1"] \n\t" \ +- "sra %[temp16], %["#TEMP1"], 16 \n\t" \ +- "seh %[temp19], %["#TEMP3"] \n\t" \ +- "sra %["#TEMP3"], %["#TEMP3"], 16 \n\t" \ +- "subu %["#TEMP2"], %["#TEMP0"], %[temp16] \n\t" \ +- "addu %["#TEMP0"], %["#TEMP0"], %[temp16] \n\t" \ ++ "lw %[" #TEMP0 "], 0(%[args]) \n\t" \ ++ "lw %[" #TEMP1 "], 4(%[args]) \n\t" \ ++ "lw %[" #TEMP2 "], "XSTR(BPS)"*" #A "(%[" #TEMP0 "]) \n\t" \ ++ "lw %[" #TEMP3 "], "XSTR(BPS)"*" #A "(%[" #TEMP1 "]) \n\t" \ ++ "preceu.ph.qbl %[" #TEMP0 "], %[" #TEMP2 "] \n\t" \ ++ "preceu.ph.qbl %[" #TEMP1 "], %[" #TEMP3 "] \n\t" \ ++ "preceu.ph.qbr %[" #TEMP2 "], %[" #TEMP2 "] \n\t" \ ++ "preceu.ph.qbr %[" #TEMP3 "], %[" #TEMP3 "] \n\t" \ ++ "subq.ph %[" #TEMP0 "], %[" #TEMP0 "], %[" #TEMP1 "] \n\t" \ ++ "subq.ph %[" #TEMP2 "], %[" #TEMP2 "], %[" #TEMP3 "] \n\t" \ ++ "rotr %[" #TEMP0 "], %[" #TEMP0 "], 16 \n\t" \ ++ "addq.ph %[" #TEMP1 "], %[" #TEMP2 "], %[" #TEMP0 "] \n\t" \ ++ "subq.ph %[" #TEMP3 "], %[" #TEMP2 "], %[" #TEMP0 "] \n\t" \ ++ "seh %[" #TEMP0 "], %[" #TEMP1 "] \n\t" \ ++ "sra %[temp16], %[" #TEMP1 "], 16 \n\t" \ ++ "seh %[temp19], %[" #TEMP3 "] \n\t" \ ++ "sra %[" #TEMP3 "], %[" #TEMP3 "], 16 \n\t" \ ++ "subu %[" #TEMP2 "], %[" #TEMP0 "], %[temp16] \n\t" \ ++ "addu %[" #TEMP0 "], %[" #TEMP0 "], %[temp16] \n\t" \ + "mul %[temp17], %[temp19], %[c2217] \n\t" \ +- "mul %[temp18], %["#TEMP3"], %[c5352] \n\t" \ +- "mul %["#TEMP1"], %[temp19], %[c5352] \n\t" \ +- "mul %[temp16], %["#TEMP3"], %[c2217] \n\t" \ +- "sll %["#TEMP2"], %["#TEMP2"], 3 \n\t" \ +- "sll %["#TEMP0"], %["#TEMP0"], 3 \n\t" \ +- "subu %["#TEMP3"], %[temp17], %[temp18] \n\t" \ +- "addu %["#TEMP1"], %[temp16], %["#TEMP1"] \n\t" \ +- "addiu %["#TEMP3"], %["#TEMP3"], 937 \n\t" \ +- "addiu %["#TEMP1"], %["#TEMP1"], 1812 \n\t" \ +- "sra %["#TEMP3"], %["#TEMP3"], 9 \n\t" \ +- "sra %["#TEMP1"], %["#TEMP1"], 9 \n\t" ++ "mul %[temp18], %[" #TEMP3 "], %[c5352] \n\t" \ ++ "mul %[" #TEMP1 "], %[temp19], %[c5352] \n\t" \ ++ "mul %[temp16], %[" #TEMP3 "], %[c2217] \n\t" \ ++ "sll %[" #TEMP2 "], %[" #TEMP2 "], 3 \n\t" \ ++ "sll %[" #TEMP0 "], %[" #TEMP0 "], 3 \n\t" \ ++ "subu %[" #TEMP3 "], %[temp17], %[temp18] \n\t" \ ++ "addu %[" #TEMP1 "], %[temp16], %[" #TEMP1 "] \n\t" \ ++ "addiu %[" #TEMP3 "], %[" #TEMP3 "], 937 \n\t" \ ++ "addiu %[" #TEMP1 "], %[" #TEMP1 "], 1812 \n\t" \ ++ "sra %[" #TEMP3 "], %[" #TEMP3 "], 9 \n\t" \ ++ "sra %[" #TEMP1 "], %[" #TEMP1 "], 9 \n\t" + + // macro for one vertical pass in FTransform + // temp0..temp15 holds tmp[0]..tmp[15] + // A..D - offsets in bytes to store to out buffer + // TEMP0, TEMP4, TEMP8 and TEMP12 - registers for corresponding tmp elements + #define VERTICAL_PASS(A, B, C, D, TEMP0, TEMP4, TEMP8, TEMP12) \ +- "addu %[temp16], %["#TEMP0"], %["#TEMP12"] \n\t" \ +- "subu %[temp19], %["#TEMP0"], %["#TEMP12"] \n\t" \ +- "addu %[temp17], %["#TEMP4"], %["#TEMP8"] \n\t" \ +- "subu %[temp18], %["#TEMP4"], %["#TEMP8"] \n\t" \ +- "mul %["#TEMP8"], %[temp19], %[c2217] \n\t" \ +- "mul %["#TEMP12"], %[temp18], %[c2217] \n\t" \ +- "mul %["#TEMP4"], %[temp19], %[c5352] \n\t" \ ++ "addu %[temp16], %[" #TEMP0 "], %[" #TEMP12 "] \n\t" \ ++ "subu %[temp19], %[" #TEMP0 "], %[" #TEMP12 "] \n\t" \ ++ "addu %[temp17], %[" #TEMP4 "], %[" #TEMP8 "] \n\t" \ ++ "subu %[temp18], %[" #TEMP4 "], %[" #TEMP8 "] \n\t" \ ++ "mul %[" #TEMP8 "], %[temp19], %[c2217] \n\t" \ ++ "mul %[" #TEMP12 "], %[temp18], %[c2217] \n\t" \ ++ "mul %[" #TEMP4 "], %[temp19], %[c5352] \n\t" \ + "mul %[temp18], %[temp18], %[c5352] \n\t" \ + "addiu %[temp16], %[temp16], 7 \n\t" \ +- "addu %["#TEMP0"], %[temp16], %[temp17] \n\t" \ +- "sra %["#TEMP0"], %["#TEMP0"], 4 \n\t" \ +- "addu %["#TEMP12"], %["#TEMP12"], %["#TEMP4"] \n\t" \ +- "subu %["#TEMP4"], %[temp16], %[temp17] \n\t" \ +- "sra %["#TEMP4"], %["#TEMP4"], 4 \n\t" \ +- "addiu %["#TEMP8"], %["#TEMP8"], 30000 \n\t" \ +- "addiu %["#TEMP12"], %["#TEMP12"], 12000 \n\t" \ +- "addiu %["#TEMP8"], %["#TEMP8"], 21000 \n\t" \ +- "subu %["#TEMP8"], %["#TEMP8"], %[temp18] \n\t" \ +- "sra %["#TEMP12"], %["#TEMP12"], 16 \n\t" \ +- "sra %["#TEMP8"], %["#TEMP8"], 16 \n\t" \ +- "addiu %[temp16], %["#TEMP12"], 1 \n\t" \ +- "movn %["#TEMP12"], %[temp16], %[temp19] \n\t" \ +- "sh %["#TEMP0"], "#A"(%[temp20]) \n\t" \ +- "sh %["#TEMP4"], "#C"(%[temp20]) \n\t" \ +- "sh %["#TEMP8"], "#D"(%[temp20]) \n\t" \ +- "sh %["#TEMP12"], "#B"(%[temp20]) \n\t" ++ "addu %[" #TEMP0 "], %[temp16], %[temp17] \n\t" \ ++ "sra %[" #TEMP0 "], %[" #TEMP0 "], 4 \n\t" \ ++ "addu %[" #TEMP12 "], %[" #TEMP12 "], %[" #TEMP4 "] \n\t" \ ++ "subu %[" #TEMP4 "], %[temp16], %[temp17] \n\t" \ ++ "sra %[" #TEMP4 "], %[" #TEMP4 "], 4 \n\t" \ ++ "addiu %[" #TEMP8 "], %[" #TEMP8 "], 30000 \n\t" \ ++ "addiu %[" #TEMP12 "], %[" #TEMP12 "], 12000 \n\t" \ ++ "addiu %[" #TEMP8 "], %[" #TEMP8 "], 21000 \n\t" \ ++ "subu %[" #TEMP8 "], %[" #TEMP8 "], %[temp18] \n\t" \ ++ "sra %[" #TEMP12 "], %[" #TEMP12 "], 16 \n\t" \ ++ "sra %[" #TEMP8 "], %[" #TEMP8 "], 16 \n\t" \ ++ "addiu %[temp16], %[" #TEMP12 "], 1 \n\t" \ ++ "movn %[" #TEMP12 "], %[temp16], %[temp19] \n\t" \ ++ "sh %[" #TEMP0 "], " #A "(%[temp20]) \n\t" \ ++ "sh %[" #TEMP4 "], " #C "(%[temp20]) \n\t" \ ++ "sh %[" #TEMP8 "], " #D "(%[temp20]) \n\t" \ ++ "sh %[" #TEMP12 "], " #B "(%[temp20]) \n\t" + + static void FTransform(const uint8_t* src, const uint8_t* ref, int16_t* out) { + const int c2217 = 2217; +@@ -329,11 +329,11 @@ static int Disto16x16(const uint8_t* const a, const uint8_t* const b, + // Intra predictions + + #define FILL_PART(J, SIZE) \ +- "usw %[value], 0+"#J"*"XSTR(BPS)"(%[dst]) \n\t" \ +- "usw %[value], 4+"#J"*"XSTR(BPS)"(%[dst]) \n\t" \ +- ".if "#SIZE" == 16 \n\t" \ +- "usw %[value], 8+"#J"*"XSTR(BPS)"(%[dst]) \n\t" \ +- "usw %[value], 12+"#J"*"XSTR(BPS)"(%[dst]) \n\t" \ ++ "usw %[value], 0+" #J "*"XSTR(BPS)"(%[dst]) \n\t" \ ++ "usw %[value], 4+" #J "*"XSTR(BPS)"(%[dst]) \n\t" \ ++ ".if " #SIZE " == 16 \n\t" \ ++ "usw %[value], 8+" #J "*"XSTR(BPS)"(%[dst]) \n\t" \ ++ "usw %[value], 12+" #J "*"XSTR(BPS)"(%[dst]) \n\t" \ + ".endif \n\t" + + #define FILL_8_OR_16(DST, VALUE, SIZE) do { \ +@@ -348,7 +348,7 @@ static int Disto16x16(const uint8_t* const a, const uint8_t* const b, + FILL_PART( 5, SIZE) \ + FILL_PART( 6, SIZE) \ + FILL_PART( 7, SIZE) \ +- ".if "#SIZE" == 16 \n\t" \ ++ ".if " #SIZE " == 16 \n\t" \ + FILL_PART( 8, 16) \ + FILL_PART( 9, 16) \ + FILL_PART(10, 16) \ +@@ -425,7 +425,7 @@ HORIZONTAL_PRED(dst, left, 16) + CLIPPING() \ + "usw %[temp0], 0(%[dst]) \n\t" \ + "usw %[temp1], 4(%[dst]) \n\t" \ +- ".if "#SIZE" == 16 \n\t" \ ++ ".if " #SIZE " == 16 \n\t" \ + "ulw %[temp0], 8(%[top]) \n\t" \ + "ulw %[temp1], 12(%[top]) \n\t" \ + CLIPPING() \ +@@ -1060,8 +1060,8 @@ static void Intra4Preds(uint8_t* dst, const uint8_t* top) { + #if !defined(WORK_AROUND_GCC) + + #define GET_SSE_INNER(A) \ +- "lw %[temp0], "#A"(%[a]) \n\t" \ +- "lw %[temp1], "#A"(%[b]) \n\t" \ ++ "lw %[temp0], " #A "(%[a]) \n\t" \ ++ "lw %[temp1], " #A "(%[b]) \n\t" \ + "preceu.ph.qbr %[temp2], %[temp0] \n\t" \ + "preceu.ph.qbl %[temp0], %[temp0] \n\t" \ + "preceu.ph.qbr %[temp3], %[temp1] \n\t" \ +@@ -1185,28 +1185,28 @@ static int SSE4x4(const uint8_t* a, const uint8_t* b) { + // N - offset in bytes (n * 2) + // N1 - offset in bytes ((n + 1) * 2) + #define QUANTIZE_ONE(J, K, N, N1) \ +- "ulw %[temp1], "#J"(%[ppin]) \n\t" \ +- "ulw %[temp2], "#J"(%[ppsharpen]) \n\t" \ +- "lhu %[temp3], "#K"(%[ppzthresh]) \n\t" \ +- "lhu %[temp6], "#K"+4(%[ppzthresh]) \n\t" \ ++ "ulw %[temp1], " #J "(%[ppin]) \n\t" \ ++ "ulw %[temp2], " #J "(%[ppsharpen]) \n\t" \ ++ "lhu %[temp3], " #K "(%[ppzthresh]) \n\t" \ ++ "lhu %[temp6], " #K "+4(%[ppzthresh]) \n\t" \ + "absq_s.ph %[temp4], %[temp1] \n\t" \ + "ins %[temp3], %[temp6], 16, 16 \n\t" \ + "addu.ph %[coeff], %[temp4], %[temp2] \n\t" \ + "shra.ph %[sign], %[temp1], 15 \n\t" \ + "li %[level], 0x10001 \n\t" \ + "cmp.lt.ph %[temp3], %[coeff] \n\t" \ +- "lhu %[temp1], "#J"(%[ppiq]) \n\t" \ ++ "lhu %[temp1], " #J "(%[ppiq]) \n\t" \ + "pick.ph %[temp5], %[level], $0 \n\t" \ +- "lw %[temp2], "#K"(%[ppbias]) \n\t" \ ++ "lw %[temp2], " #K "(%[ppbias]) \n\t" \ + "beqz %[temp5], 0f \n\t" \ +- "lhu %[temp3], "#J"(%[ppq]) \n\t" \ ++ "lhu %[temp3], " #J "(%[ppq]) \n\t" \ + "beq %[temp5], %[level], 1f \n\t" \ + "andi %[temp5], %[temp5], 0x1 \n\t" \ + "andi %[temp4], %[coeff], 0xffff \n\t" \ + "beqz %[temp5], 2f \n\t" \ + "mul %[level], %[temp4], %[temp1] \n\t" \ +- "sh $0, "#J"+2(%[ppin]) \n\t" \ +- "sh $0, "#N1"(%[pout]) \n\t" \ ++ "sh $0, " #J "+2(%[ppin]) \n\t" \ ++ "sh $0, " #N1 "(%[pout]) \n\t" \ + "addu %[level], %[level], %[temp2] \n\t" \ + "sra %[level], %[level], 17 \n\t" \ + "slt %[temp4], %[max_level], %[level] \n\t" \ +@@ -1216,15 +1216,15 @@ static int SSE4x4(const uint8_t* a, const uint8_t* b) { + "subu %[level], %[level], %[temp6] \n\t" \ + "mul %[temp5], %[level], %[temp3] \n\t" \ + "or %[ret], %[ret], %[level] \n\t" \ +- "sh %[level], "#N"(%[pout]) \n\t" \ +- "sh %[temp5], "#J"(%[ppin]) \n\t" \ ++ "sh %[level], " #N "(%[pout]) \n\t" \ ++ "sh %[temp5], " #J "(%[ppin]) \n\t" \ + "j 3f \n\t" \ + "2: \n\t" \ +- "lhu %[temp1], "#J"+2(%[ppiq]) \n\t" \ ++ "lhu %[temp1], " #J "+2(%[ppiq]) \n\t" \ + "srl %[temp5], %[coeff], 16 \n\t" \ + "mul %[level], %[temp5], %[temp1] \n\t" \ +- "lw %[temp2], "#K"+4(%[ppbias]) \n\t" \ +- "lhu %[temp3], "#J"+2(%[ppq]) \n\t" \ ++ "lw %[temp2], " #K "+4(%[ppbias]) \n\t" \ ++ "lhu %[temp3], " #J "+2(%[ppq]) \n\t" \ + "addu %[level], %[level], %[temp2] \n\t" \ + "sra %[level], %[level], 17 \n\t" \ + "srl %[temp6], %[sign], 16 \n\t" \ +@@ -1233,20 +1233,20 @@ static int SSE4x4(const uint8_t* a, const uint8_t* b) { + "xor %[level], %[level], %[temp6] \n\t" \ + "subu %[level], %[level], %[temp6] \n\t" \ + "mul %[temp5], %[level], %[temp3] \n\t" \ +- "sh $0, "#J"(%[ppin]) \n\t" \ +- "sh $0, "#N"(%[pout]) \n\t" \ ++ "sh $0, " #J "(%[ppin]) \n\t" \ ++ "sh $0, " #N "(%[pout]) \n\t" \ + "or %[ret], %[ret], %[level] \n\t" \ +- "sh %[temp5], "#J"+2(%[ppin]) \n\t" \ +- "sh %[level], "#N1"(%[pout]) \n\t" \ ++ "sh %[temp5], " #J "+2(%[ppin]) \n\t" \ ++ "sh %[level], " #N1 "(%[pout]) \n\t" \ + "j 3f \n\t" \ + "1: \n\t" \ +- "lhu %[temp1], "#J"(%[ppiq]) \n\t" \ +- "lw %[temp2], "#K"(%[ppbias]) \n\t" \ +- "ulw %[temp3], "#J"(%[ppq]) \n\t" \ ++ "lhu %[temp1], " #J "(%[ppiq]) \n\t" \ ++ "lw %[temp2], " #K "(%[ppbias]) \n\t" \ ++ "ulw %[temp3], " #J "(%[ppq]) \n\t" \ + "andi %[temp5], %[coeff], 0xffff \n\t" \ + "srl %[temp0], %[coeff], 16 \n\t" \ +- "lhu %[temp6], "#J"+2(%[ppiq]) \n\t" \ +- "lw %[coeff], "#K"+4(%[ppbias]) \n\t" \ ++ "lhu %[temp6], " #J "+2(%[ppiq]) \n\t" \ ++ "lw %[coeff], " #K "+4(%[ppbias]) \n\t" \ + "mul %[level], %[temp5], %[temp1] \n\t" \ + "mul %[temp4], %[temp0], %[temp6] \n\t" \ + "addu %[level], %[level], %[temp2] \n\t" \ +@@ -1259,15 +1259,15 @@ static int SSE4x4(const uint8_t* a, const uint8_t* b) { + "subu.ph %[level], %[level], %[sign] \n\t" \ + "mul.ph %[temp3], %[level], %[temp3] \n\t" \ + "or %[ret], %[ret], %[level] \n\t" \ +- "sh %[level], "#N"(%[pout]) \n\t" \ ++ "sh %[level], " #N "(%[pout]) \n\t" \ + "srl %[level], %[level], 16 \n\t" \ +- "sh %[level], "#N1"(%[pout]) \n\t" \ +- "usw %[temp3], "#J"(%[ppin]) \n\t" \ ++ "sh %[level], " #N1 "(%[pout]) \n\t" \ ++ "usw %[temp3], " #J "(%[ppin]) \n\t" \ + "j 3f \n\t" \ + "0: \n\t" \ +- "sh $0, "#N"(%[pout]) \n\t" \ +- "sh $0, "#N1"(%[pout]) \n\t" \ +- "usw $0, "#J"(%[ppin]) \n\t" \ ++ "sh $0, " #N "(%[pout]) \n\t" \ ++ "sh $0, " #N1 "(%[pout]) \n\t" \ ++ "usw $0, " #J "(%[ppin]) \n\t" \ + "3: \n\t" + + static int QuantizeBlock(int16_t in[16], int16_t out[16], +@@ -1326,37 +1326,37 @@ static int Quantize2Blocks(int16_t in[32], int16_t out[32], + // A, B, C, D - offset in bytes to load from in buffer + // TEMP0, TEMP1 - registers for corresponding tmp elements + #define HORIZONTAL_PASS_WHT(A, B, C, D, TEMP0, TEMP1) \ +- "lh %["#TEMP0"], "#A"(%[in]) \n\t" \ +- "lh %["#TEMP1"], "#B"(%[in]) \n\t" \ +- "lh %[temp8], "#C"(%[in]) \n\t" \ +- "lh %[temp9], "#D"(%[in]) \n\t" \ +- "ins %["#TEMP1"], %["#TEMP0"], 16, 16 \n\t" \ ++ "lh %[" #TEMP0 "], " #A "(%[in]) \n\t" \ ++ "lh %[" #TEMP1 "], " #B "(%[in]) \n\t" \ ++ "lh %[temp8], " #C "(%[in]) \n\t" \ ++ "lh %[temp9], " #D "(%[in]) \n\t" \ ++ "ins %[" #TEMP1 "], %[" #TEMP0 "], 16, 16 \n\t" \ + "ins %[temp9], %[temp8], 16, 16 \n\t" \ +- "subq.ph %[temp8], %["#TEMP1"], %[temp9] \n\t" \ +- "addq.ph %[temp9], %["#TEMP1"], %[temp9] \n\t" \ +- "precrq.ph.w %["#TEMP0"], %[temp8], %[temp9] \n\t" \ ++ "subq.ph %[temp8], %[" #TEMP1 "], %[temp9] \n\t" \ ++ "addq.ph %[temp9], %[" #TEMP1 "], %[temp9] \n\t" \ ++ "precrq.ph.w %[" #TEMP0 "], %[temp8], %[temp9] \n\t" \ + "append %[temp8], %[temp9], 16 \n\t" \ +- "subq.ph %["#TEMP1"], %["#TEMP0"], %[temp8] \n\t" \ +- "addq.ph %["#TEMP0"], %["#TEMP0"], %[temp8] \n\t" \ +- "rotr %["#TEMP1"], %["#TEMP1"], 16 \n\t" ++ "subq.ph %[" #TEMP1 "], %[" #TEMP0 "], %[temp8] \n\t" \ ++ "addq.ph %[" #TEMP0 "], %[" #TEMP0 "], %[temp8] \n\t" \ ++ "rotr %[" #TEMP1 "], %[" #TEMP1 "], 16 \n\t" + + // macro for one vertical pass in FTransformWHT + // temp0..temp7 holds tmp[0]..tmp[15] + // A, B, C, D - offsets in bytes to store to out buffer + // TEMP0, TEMP2, TEMP4 and TEMP6 - registers for corresponding tmp elements + #define VERTICAL_PASS_WHT(A, B, C, D, TEMP0, TEMP2, TEMP4, TEMP6) \ +- "addq.ph %[temp8], %["#TEMP0"], %["#TEMP4"] \n\t" \ +- "addq.ph %[temp9], %["#TEMP2"], %["#TEMP6"] \n\t" \ +- "subq.ph %["#TEMP2"], %["#TEMP2"], %["#TEMP6"] \n\t" \ +- "subq.ph %["#TEMP6"], %["#TEMP0"], %["#TEMP4"] \n\t" \ +- "addqh.ph %["#TEMP0"], %[temp8], %[temp9] \n\t" \ +- "subqh.ph %["#TEMP4"], %["#TEMP6"], %["#TEMP2"] \n\t" \ +- "addqh.ph %["#TEMP2"], %["#TEMP2"], %["#TEMP6"] \n\t" \ +- "subqh.ph %["#TEMP6"], %[temp8], %[temp9] \n\t" \ +- "usw %["#TEMP0"], "#A"(%[out]) \n\t" \ +- "usw %["#TEMP2"], "#B"(%[out]) \n\t" \ +- "usw %["#TEMP4"], "#C"(%[out]) \n\t" \ +- "usw %["#TEMP6"], "#D"(%[out]) \n\t" ++ "addq.ph %[temp8], %[" #TEMP0 "], %[" #TEMP4 "] \n\t" \ ++ "addq.ph %[temp9], %[" #TEMP2 "], %[" #TEMP6 "] \n\t" \ ++ "subq.ph %[" #TEMP2 "], %[" #TEMP2 "], %[" #TEMP6 "] \n\t" \ ++ "subq.ph %[" #TEMP6 "], %[" #TEMP0 "], %[" #TEMP4 "] \n\t" \ ++ "addqh.ph %[" #TEMP0 "], %[temp8], %[temp9] \n\t" \ ++ "subqh.ph %[" #TEMP4 "], %[" #TEMP6 "], %[" #TEMP2 "] \n\t" \ ++ "addqh.ph %[" #TEMP2 "], %[" #TEMP2 "], %[" #TEMP6 "] \n\t" \ ++ "subqh.ph %[" #TEMP6 "], %[temp8], %[temp9] \n\t" \ ++ "usw %[" #TEMP0 "], " #A "(%[out]) \n\t" \ ++ "usw %[" #TEMP2 "], " #B "(%[out]) \n\t" \ ++ "usw %[" #TEMP4 "], " #C "(%[out]) \n\t" \ ++ "usw %[" #TEMP6 "], " #D "(%[out]) \n\t" + + static void FTransformWHT(const int16_t* in, int16_t* out) { + int temp0, temp1, temp2, temp3, temp4; +@@ -1385,10 +1385,10 @@ static void FTransformWHT(const int16_t* in, int16_t* out) { + // convert 8 coeffs at time + // A, B, C, D - offsets in bytes to load from out buffer + #define CONVERT_COEFFS_TO_BIN(A, B, C, D) \ +- "ulw %[temp0], "#A"(%[out]) \n\t" \ +- "ulw %[temp1], "#B"(%[out]) \n\t" \ +- "ulw %[temp2], "#C"(%[out]) \n\t" \ +- "ulw %[temp3], "#D"(%[out]) \n\t" \ ++ "ulw %[temp0], " #A "(%[out]) \n\t" \ ++ "ulw %[temp1], " #B "(%[out]) \n\t" \ ++ "ulw %[temp2], " #C "(%[out]) \n\t" \ ++ "ulw %[temp3], " #D "(%[out]) \n\t" \ + "absq_s.ph %[temp0], %[temp0] \n\t" \ + "absq_s.ph %[temp1], %[temp1] \n\t" \ + "absq_s.ph %[temp2], %[temp2] \n\t" \ +diff --git a/Source/LibWebP/src/dsp/dsp.filters_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.filters_mips_dsp_r2.c +index 6c34efb..6a1f8f4 100644 +--- a/Source/LibWebP/src/dsp/dsp.filters_mips_dsp_r2.c ++++ b/Source/LibWebP/src/dsp/dsp.filters_mips_dsp_r2.c +@@ -48,7 +48,7 @@ + "srl %[temp0], %[length], 0x2 \n\t" \ + "beqz %[temp0], 4f \n\t" \ + " andi %[temp6], %[length], 0x3 \n\t" \ +- ".if "#INVERSE" \n\t" \ ++ ".if " #INVERSE " \n\t" \ + "lbu %[temp1], -1(%[src]) \n\t" \ + "1: \n\t" \ + "lbu %[temp2], 0(%[src]) \n\t" \ +@@ -84,7 +84,7 @@ + "lbu %[temp1], -1(%[src]) \n\t" \ + "lbu %[temp2], 0(%[src]) \n\t" \ + "addiu %[src], %[src], 1 \n\t" \ +- ".if "#INVERSE" \n\t" \ ++ ".if " #INVERSE " \n\t" \ + "addu %[temp3], %[temp1], %[temp2] \n\t" \ + "sb %[temp3], -1(%[src]) \n\t" \ + ".else \n\t" \ +@@ -131,7 +131,7 @@ static WEBP_INLINE void PredictLine(const uint8_t* src, uint8_t* dst, + "ulw %[temp3], 4(%[src]) \n\t" \ + "ulw %[temp4], 4(%[pred]) \n\t" \ + "addiu %[src], %[src], 8 \n\t" \ +- ".if "#INVERSE" \n\t" \ ++ ".if " #INVERSE " \n\t" \ + "addu.qb %[temp5], %[temp1], %[temp2] \n\t" \ + "addu.qb %[temp6], %[temp3], %[temp4] \n\t" \ + ".else \n\t" \ +@@ -152,7 +152,7 @@ static WEBP_INLINE void PredictLine(const uint8_t* src, uint8_t* dst, + "lbu %[temp2], 0(%[pred]) \n\t" \ + "addiu %[src], %[src], 1 \n\t" \ + "addiu %[pred], %[pred], 1 \n\t" \ +- ".if "#INVERSE" \n\t" \ ++ ".if " #INVERSE " \n\t" \ + "addu %[temp3], %[temp1], %[temp2] \n\t" \ + ".else \n\t" \ + "subu %[temp3], %[temp1], %[temp2] \n\t" \ +@@ -177,7 +177,7 @@ static WEBP_INLINE void PredictLine(const uint8_t* src, uint8_t* dst, + __asm__ volatile ( \ + "lbu %[temp1], 0(%[src]) \n\t" \ + "lbu %[temp2], 0(%[pred]) \n\t" \ +- ".if "#INVERSE" \n\t" \ ++ ".if " #INVERSE " \n\t" \ + "addu %[temp3], %[temp1], %[temp2] \n\t" \ + ".else \n\t" \ + "subu %[temp3], %[temp1], %[temp2] \n\t" \ +diff --git a/Source/LibWebP/src/dsp/dsp.lossless_mips32.c b/Source/LibWebP/src/dsp/dsp.lossless_mips32.c +index 68fbe85..abe97c1 100644 +--- a/Source/LibWebP/src/dsp/dsp.lossless_mips32.c ++++ b/Source/LibWebP/src/dsp/dsp.lossless_mips32.c +@@ -285,28 +285,28 @@ static VP8LStreaks HuffmanCostCombinedCount(const uint32_t* X, + // literal_ and successive histograms could be unaligned + // so we must use ulw and usw + #define ADD_TO_OUT(A, B, C, D, E, P0, P1, P2) \ +- "ulw %[temp0], "#A"(%["#P0"]) \n\t" \ +- "ulw %[temp1], "#B"(%["#P0"]) \n\t" \ +- "ulw %[temp2], "#C"(%["#P0"]) \n\t" \ +- "ulw %[temp3], "#D"(%["#P0"]) \n\t" \ +- "ulw %[temp4], "#A"(%["#P1"]) \n\t" \ +- "ulw %[temp5], "#B"(%["#P1"]) \n\t" \ +- "ulw %[temp6], "#C"(%["#P1"]) \n\t" \ +- "ulw %[temp7], "#D"(%["#P1"]) \n\t" \ ++ "ulw %[temp0], " #A "(%[" #P0 "]) \n\t" \ ++ "ulw %[temp1], " #B "(%[" #P0 "]) \n\t" \ ++ "ulw %[temp2], " #C "(%[" #P0 "]) \n\t" \ ++ "ulw %[temp3], " #D "(%[" #P0 "]) \n\t" \ ++ "ulw %[temp4], " #A "(%[" #P1 "]) \n\t" \ ++ "ulw %[temp5], " #B "(%[" #P1 "]) \n\t" \ ++ "ulw %[temp6], " #C "(%[" #P1 "]) \n\t" \ ++ "ulw %[temp7], " #D "(%[" #P1 "]) \n\t" \ + "addu %[temp4], %[temp4], %[temp0] \n\t" \ + "addu %[temp5], %[temp5], %[temp1] \n\t" \ + "addu %[temp6], %[temp6], %[temp2] \n\t" \ + "addu %[temp7], %[temp7], %[temp3] \n\t" \ +- "addiu %["#P0"], %["#P0"], 16 \n\t" \ +- ".if "#E" == 1 \n\t" \ +- "addiu %["#P1"], %["#P1"], 16 \n\t" \ ++ "addiu %[" #P0 "], %[" #P0 "], 16 \n\t" \ ++ ".if " #E " == 1 \n\t" \ ++ "addiu %[" #P1 "], %[" #P1 "], 16 \n\t" \ + ".endif \n\t" \ +- "usw %[temp4], "#A"(%["#P2"]) \n\t" \ +- "usw %[temp5], "#B"(%["#P2"]) \n\t" \ +- "usw %[temp6], "#C"(%["#P2"]) \n\t" \ +- "usw %[temp7], "#D"(%["#P2"]) \n\t" \ +- "addiu %["#P2"], %["#P2"], 16 \n\t" \ +- "bne %["#P0"], %[LoopEnd], 1b \n\t" \ ++ "usw %[temp4], " #A "(%[" #P2 "]) \n\t" \ ++ "usw %[temp5], " #B "(%[" #P2 "]) \n\t" \ ++ "usw %[temp6], " #C "(%[" #P2 "]) \n\t" \ ++ "usw %[temp7], " #D "(%[" #P2 "]) \n\t" \ ++ "addiu %[" #P2 "], %[" #P2 "], 16 \n\t" \ ++ "bne %[" #P0 "], %[LoopEnd], 1b \n\t" \ + ".set pop \n\t" \ + + #define ASM_END_COMMON_0 \ +diff --git a/Source/LibWebP/src/dsp/dsp.lossless_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.lossless_mips_dsp_r2.c +index 821cda9..31ac181 100644 +--- a/Source/LibWebP/src/dsp/dsp.lossless_mips_dsp_r2.c ++++ b/Source/LibWebP/src/dsp/dsp.lossless_mips_dsp_r2.c +@@ -29,14 +29,14 @@ static void FUNC_NAME(const TYPE* src, \ + for (x = 0; x < (width >> 2); ++x) { \ + int tmp1, tmp2, tmp3, tmp4; \ + __asm__ volatile ( \ +- ".ifc "#TYPE", uint8_t \n\t" \ ++ ".ifc " #TYPE ", uint8_t \n\t" \ + "lbu %[tmp1], 0(%[src]) \n\t" \ + "lbu %[tmp2], 1(%[src]) \n\t" \ + "lbu %[tmp3], 2(%[src]) \n\t" \ + "lbu %[tmp4], 3(%[src]) \n\t" \ + "addiu %[src], %[src], 4 \n\t" \ + ".endif \n\t" \ +- ".ifc "#TYPE", uint32_t \n\t" \ ++ ".ifc " #TYPE ", uint32_t \n\t" \ + "lw %[tmp1], 0(%[src]) \n\t" \ + "lw %[tmp2], 4(%[src]) \n\t" \ + "lw %[tmp3], 8(%[src]) \n\t" \ +@@ -55,7 +55,7 @@ static void FUNC_NAME(const TYPE* src, \ + "lwx %[tmp2], %[tmp2](%[color_map]) \n\t" \ + "lwx %[tmp3], %[tmp3](%[color_map]) \n\t" \ + "lwx %[tmp4], %[tmp4](%[color_map]) \n\t" \ +- ".ifc "#TYPE", uint8_t \n\t" \ ++ ".ifc " #TYPE ", uint8_t \n\t" \ + "ext %[tmp1], %[tmp1], 8, 8 \n\t" \ + "ext %[tmp2], %[tmp2], 8, 8 \n\t" \ + "ext %[tmp3], %[tmp3], 8, 8 \n\t" \ +@@ -66,7 +66,7 @@ static void FUNC_NAME(const TYPE* src, \ + "sb %[tmp4], 3(%[dst]) \n\t" \ + "addiu %[dst], %[dst], 4 \n\t" \ + ".endif \n\t" \ +- ".ifc "#TYPE", uint32_t \n\t" \ ++ ".ifc " #TYPE ", uint32_t \n\t" \ + "sw %[tmp1], 0(%[dst]) \n\t" \ + "sw %[tmp2], 4(%[dst]) \n\t" \ + "sw %[tmp3], 8(%[dst]) \n\t" \ +diff --git a/Source/LibWebP/src/dsp/dsp.upsampling_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.upsampling_mips_dsp_r2.c +index a7864a0..cb3adfe 100644 +--- a/Source/LibWebP/src/dsp/dsp.upsampling_mips_dsp_r2.c ++++ b/Source/LibWebP/src/dsp/dsp.upsampling_mips_dsp_r2.c +@@ -34,15 +34,15 @@ + G = G - t2 + kGCst; \ + B = B + kBCst; \ + __asm__ volatile ( \ +- "shll_s.w %["#R"], %["#R"], 9 \n\t" \ +- "shll_s.w %["#G"], %["#G"], 9 \n\t" \ +- "shll_s.w %["#B"], %["#B"], 9 \n\t" \ +- "precrqu_s.qb.ph %["#R"], %["#R"], $zero \n\t" \ +- "precrqu_s.qb.ph %["#G"], %["#G"], $zero \n\t" \ +- "precrqu_s.qb.ph %["#B"], %["#B"], $zero \n\t" \ +- "srl %["#R"], %["#R"], 24 \n\t" \ +- "srl %["#G"], %["#G"], 24 \n\t" \ +- "srl %["#B"], %["#B"], 24 \n\t" \ ++ "shll_s.w %[" #R "], %[" #R "], 9 \n\t" \ ++ "shll_s.w %[" #G "], %[" #G "], 9 \n\t" \ ++ "shll_s.w %[" #B "], %[" #B "], 9 \n\t" \ ++ "precrqu_s.qb.ph %[" #R "], %[" #R "], $zero \n\t" \ ++ "precrqu_s.qb.ph %[" #G "], %[" #G "], $zero \n\t" \ ++ "precrqu_s.qb.ph %[" #B "], %[" #B "], $zero \n\t" \ ++ "srl %[" #R "], %[" #R "], 24 \n\t" \ ++ "srl %[" #G "], %[" #G "], 24 \n\t" \ ++ "srl %[" #B "], %[" #B "], 24 \n\t" \ + : [R]"+r"(R), [G]"+r"(G), [B]"+r"(B) \ + : \ + ); \ +diff --git a/Source/LibWebP/src/dsp/dsp.yuv_mips_dsp_r2.c b/Source/LibWebP/src/dsp/dsp.yuv_mips_dsp_r2.c +index 66adde5..51cbe9e 100644 +--- a/Source/LibWebP/src/dsp/dsp.yuv_mips_dsp_r2.c ++++ b/Source/LibWebP/src/dsp/dsp.yuv_mips_dsp_r2.c +@@ -39,12 +39,12 @@ + "addu %[temp5], %[temp0], %[temp1] \n\t" \ + "subu %[temp6], %[temp0], %[temp2] \n\t" \ + "addu %[temp7], %[temp0], %[temp4] \n\t" \ +-".if "#K" \n\t" \ ++".if " #K " \n\t" \ + "lbu %[temp0], 1(%[y]) \n\t" \ + ".endif \n\t" \ + "shll_s.w %[temp5], %[temp5], 9 \n\t" \ + "shll_s.w %[temp6], %[temp6], 9 \n\t" \ +-".if "#K" \n\t" \ ++".if " #K " \n\t" \ + "mul %[temp0], %[t_con_5], %[temp0] \n\t" \ + ".endif \n\t" \ + "shll_s.w %[temp7], %[temp7], 9 \n\t" \ +@@ -54,9 +54,9 @@ + "srl %[temp5], %[temp5], 24 \n\t" \ + "srl %[temp6], %[temp6], 24 \n\t" \ + "srl %[temp7], %[temp7], 24 \n\t" \ +- "sb %[temp5], "#R"(%[dst]) \n\t" \ +- "sb %[temp6], "#G"(%[dst]) \n\t" \ +- "sb %[temp7], "#B"(%[dst]) \n\t" \ ++ "sb %[temp5], " #R "(%[dst]) \n\t" \ ++ "sb %[temp6], " #G "(%[dst]) \n\t" \ ++ "sb %[temp7], " #B "(%[dst]) \n\t" \ + + #define ASM_CLOBBER_LIST() \ + : [temp0]"=&r"(temp0), [temp1]"=&r"(temp1), [temp2]"=&r"(temp2), \ +-- +2.1.4 + diff --git a/buildroot/package/libfreeimage/0004-fix-gcc-6.patch b/buildroot/package/libfreeimage/0004-fix-gcc-6.patch new file mode 100644 index 0000000..0f10dec --- /dev/null +++ b/buildroot/package/libfreeimage/0004-fix-gcc-6.patch @@ -0,0 +1,31 @@ +libraw/dc_raw: fix gcc-6 failures + +With gcc-6, it is no longer allowed to narrow the type of constants in +a constant array declaration. + +Fixes: + http://autobuild.buildroot.org/results/081/0811531872f69f9febbdc482dfbdd7fb5c35d1c8/build-end.log + +Signed-off-by: "Yann E. MORIN" + +diff -durN a/Source/LibRawLite/internal/dcraw_common.cpp b/Source/LibRawLite/internal/dcraw_common.cpp +--- a/Source/LibRawLite/internal/dcraw_common.cpp ++++ b/Source/LibRawLite/internal/dcraw_common.cpp +@@ -2479,7 +2479,7 @@ + + void CLASS kodak_radc_load_raw() + { +- static const char src[] = { ++ static const signed char src[] = { + 1,1, 2,3, 3,4, 4,2, 5,7, 6,5, 7,6, 7,8, + 1,0, 2,1, 3,3, 4,4, 5,2, 6,7, 7,6, 8,5, 8,8, + 2,1, 2,3, 3,0, 3,2, 3,4, 4,6, 5,5, 6,7, 6,8, +@@ -4519,7 +4519,7 @@ + */ + void CLASS vng_interpolate() + { +- static const signed char *cp, terms[] = { ++ static const int *cp, terms[] = { + -2,-2,+0,-1,0,0x01, -2,-2,+0,+0,1,0x01, -2,-1,-1,+0,0,0x01, + -2,-1,+0,-1,0,0x02, -2,-1,+0,+0,0,0x03, -2,-1,+0,+1,1,0x01, + -2,+0,+0,-1,0,0x06, -2,+0,+0,+0,1,0x02, -2,+0,+0,+1,0,0x03, diff --git a/buildroot/package/libfreeimage/Config.in b/buildroot/package/libfreeimage/Config.in new file mode 100644 index 0000000..4b462cb --- /dev/null +++ b/buildroot/package/libfreeimage/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBFREEIMAGE + bool "libfreeimage" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + # compiler issue: "Error: invalid register number `63'" + depends on !BR2_arc + # Numerous build issues + depends on !BR2_bfin + help + FreeImage is an Open Source library project for developers who + would like to support popular graphics image formats like PNG, + BMP, JPEG, TIFF and others as needed by today's multimedia + applications. + + http://freeimage.sourceforge.net + +comment "libfreeimage needs a toolchain w/ C++, dynamic library, wchar" + depends on !BR2_arc + depends on !BR2_bfin + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/buildroot/package/libfreeimage/libfreeimage.hash b/buildroot/package/libfreeimage/libfreeimage.hash new file mode 100644 index 0000000..4e69508 --- /dev/null +++ b/buildroot/package/libfreeimage/libfreeimage.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 fbfc65e39b3d4e2cb108c4ffa8c41fd02c07d4d436c594fff8dab1a6d5297f89 FreeImage3170.zip diff --git a/buildroot/package/libfreeimage/libfreeimage.mk b/buildroot/package/libfreeimage/libfreeimage.mk new file mode 100644 index 0000000..0ca2393 --- /dev/null +++ b/buildroot/package/libfreeimage/libfreeimage.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libfreeimage +# +################################################################################ + +LIBFREEIMAGE_VERSION = 3.17.0 +LIBFREEIMAGE_SITE = http://downloads.sourceforge.net/freeimage +LIBFREEIMAGE_SOURCE = FreeImage$(subst .,,$(LIBFREEIMAGE_VERSION)).zip +LIBFREEIMAGE_LICENSE = GPL-2.0 or GPL-3.0 or FreeImage Public License +LIBFREEIMAGE_LICENSE_FILES = license-gplv2.txt license-gplv3.txt license-fi.txt +LIBFREEIMAGE_INSTALL_STAGING = YES + +define LIBFREEIMAGE_EXTRACT_CMDS + $(UNZIP) $(DL_DIR)/$(LIBFREEIMAGE_SOURCE) -d $(@D) + mv $(@D)/FreeImage/* $(@D) + rmdir $(@D)/FreeImage +endef + +define LIBFREEIMAGE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define LIBFREEIMAGE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define LIBFREEIMAGE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libfribidi/Config.in b/buildroot/package/libfribidi/Config.in new file mode 100644 index 0000000..74d9c5b --- /dev/null +++ b/buildroot/package/libfribidi/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBFRIBIDI + bool "libfribidi" + help + GNU FriBidi is an implementation of the Unicode + Bidirectional Algorithm (bidi). + + http://www.fribidi.org/ diff --git a/buildroot/package/libfribidi/libfribidi.hash b/buildroot/package/libfribidi/libfribidi.hash new file mode 100644 index 0000000..79b5dd3 --- /dev/null +++ b/buildroot/package/libfribidi/libfribidi.hash @@ -0,0 +1,2 @@ +# From http://www.fribidi.org/download/fribidi-0.19.7.tar.bz2.sha256 +sha256 08222a6212bbc2276a2d55c3bf370109ae4a35b689acbc66571ad2a670595a8e fribidi-0.19.7.tar.bz2 diff --git a/buildroot/package/libfribidi/libfribidi.mk b/buildroot/package/libfribidi/libfribidi.mk new file mode 100644 index 0000000..a7a8519 --- /dev/null +++ b/buildroot/package/libfribidi/libfribidi.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libfribidi +# +################################################################################ + +LIBFRIBIDI_VERSION = 0.19.7 +LIBFRIBIDI_SOURCE = fribidi-$(LIBFRIBIDI_VERSION).tar.bz2 +LIBFRIBIDI_SITE = http://www.fribidi.org/download +LIBFRIBIDI_LICENSE = LGPL-2.1+ +LIBFRIBIDI_LICENSE_FILES = COPYING +LIBFRIBIDI_INSTALL_STAGING = YES +# Ships a beta libtool version hence our patch doesn't apply. +# Run autoreconf to regenerate ltmain.sh. +LIBFRIBIDI_AUTORECONF = YES +LIBFRIBIDI_DEPENDENCIES = host-pkgconf +# libglib2 dependency causes a build failure, and this optional +# dependency is going to be removed upstream, see +# https://github.com/behdad/fribidi/pull/14 +LIBFRIBIDI_CONF_OPTS = --with-glib=no + +$(eval $(autotools-package)) diff --git a/buildroot/package/libftdi/0001_pkgconfig_libusb.patch b/buildroot/package/libftdi/0001_pkgconfig_libusb.patch new file mode 100644 index 0000000..389291d --- /dev/null +++ b/buildroot/package/libftdi/0001_pkgconfig_libusb.patch @@ -0,0 +1,47 @@ +--- + configure.in | 35 +++++++++++------------------------ + 1 file changed, 11 insertions(+), 24 deletions(-) + +--- a/configure.in ++++ b/configure.in +@@ -8,30 +8,17 @@ + AM_PROG_LIBTOOL + AC_PROG_CXX + +-dnl check for libusb-config +-AC_CHECK_TOOL(HAVELIBUSB, libusb-config) +- +-if test ! -z "$HAVELIBUSB"; then +- LIBUSB_CFLAGS=`$HAVELIBUSB --cflags` +- LIBUSB_LIBS=`$HAVELIBUSB --libs` +- +- CFLAGS="$CFLAGS $LIBUSB_CFLAGS" +- LIBS="$LIBS $LIBUSB_LIBS" +-else +- AC_MSG_ERROR([*** libusb-config not found. You need a working libusb installation.]) +-fi +- +-dnl check for version of libusb +-AC_MSG_CHECKING([if libusb version is >= 0.1.7]) +-libusb_version_needed="1007" +-libusb_version=`$HAVELIBUSB --version | sed -e "s/libusb //" | awk 'BEGIN { FS = "."; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'` ++dnl check for libusb ++PKG_CHECK_MODULES(LIBUSB, libusb >= 0.1.11) ++CFLAGS="$CFLAGS $LIBUSB_CFLAGS" ++LIBS="$LIBS $LIBUSB_LIBS" + +-if test $libusb_version -lt $libusb_version_needed; then +- AC_MSG_RESULT(no) +- AC_MSG_ERROR([*** libusb is too old ($libusb_version). You need a libusb installation newer or equal to 0.1.7.]) +-else +- AC_MSG_RESULT(yes) +-fi ++dnl Check for recent pkg-config which supports Requires.private ++case `$PKG_CONFIG --version` in ++0.?|0.1[0-7]) PKGCONFIG_REQUIRES="Requires"; ;; ++*) PKGCONFIG_REQUIRES="Requires.private"; ;; ++esac ++AC_SUBST(PKGCONFIG_REQUIRES) + + ENABLE_ASYNC_MODE=0 + AC_ARG_WITH(async-mode, diff --git a/buildroot/package/libftdi/0002-libftdi.pc-requires-libusb-fix-static-build.patch b/buildroot/package/libftdi/0002-libftdi.pc-requires-libusb-fix-static-build.patch new file mode 100644 index 0000000..ee47af6 --- /dev/null +++ b/buildroot/package/libftdi/0002-libftdi.pc-requires-libusb-fix-static-build.patch @@ -0,0 +1,27 @@ +From d3d6ca63cb86727533d7d83c98e70002bb04f343 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Wed, 21 Jan 2015 11:18:59 +0100 +Subject: [PATCH] libftdi.pc: requires libusb (fix static build) + +--- + libftdi.pc.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libftdi.pc.in b/libftdi.pc.in +index 2061b91..57f0a09 100644 +--- a/libftdi.pc.in ++++ b/libftdi.pc.in +@@ -5,8 +5,8 @@ includedir=@includedir@ + + Name: libftdi + Description: Library to program and control the FTDI USB controller +-Requires: ++Requires: libusb + Version: @VERSION@ +-Libs: -L${libdir} -lftdi -lusb ++Libs: -L${libdir} -lftdi + Cflags: -I${includedir} + +-- +2.1.0 + diff --git a/buildroot/package/libftdi/Config.in b/buildroot/package/libftdi/Config.in new file mode 100644 index 0000000..beb42d3 --- /dev/null +++ b/buildroot/package/libftdi/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_LIBFTDI + bool "libftdi" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Userspace access to FTDI USB interface chips + + http://www.intra2net.com/en/developer/libftdi/index.php + +if BR2_PACKAGE_LIBFTDI + +config BR2_PACKAGE_LIBTFDI_CPP + bool "C++ bindings" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + select BR2_PACKAGE_BOOST + help + C++ bindings for libftdi + +comment "libftdi C++ bindings need a toolchain w/ wchar, C++" + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP + +endif # BR2_PACKAGE_LIBFTDI + +comment "libftdi needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libftdi/libftdi.hash b/buildroot/package/libftdi/libftdi.hash new file mode 100644 index 0000000..5d9f876 --- /dev/null +++ b/buildroot/package/libftdi/libftdi.hash @@ -0,0 +1,2 @@ +# Locally computed (after checking the signature from http://www.intra2net.com/en/developer/libftdi/download.php) +sha256 3176d5b5986438f33f5208e690a8bfe90941be501cc0a72118ce3d338d4b838e libftdi-0.20.tar.gz diff --git a/buildroot/package/libftdi/libftdi.mk b/buildroot/package/libftdi/libftdi.mk new file mode 100644 index 0000000..c1952ac --- /dev/null +++ b/buildroot/package/libftdi/libftdi.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# libftdi +# +################################################################################ + +LIBFTDI_VERSION = 0.20 +LIBFTDI_SITE = http://www.intra2net.com/en/developer/libftdi/download +LIBFTDI_DEPENDENCIES = libusb-compat libusb +HOST_LIBFTDI_DEPENDENCIES = host-libusb-compat host-libusb +LIBFTDI_INSTALL_STAGING = YES +LIBFTDI_CONFIG_SCRIPTS = libftdi-config +LIBFTDI_AUTORECONF = YES + +LIBFTDI_CONF_OPTS = --without-examples + +# configure detect it automaticaly so we need to force it +ifeq ($(BR2_PACKAGE_LIBTFDI_CPP),y) +LIBFTDI_DEPENDENCIES += boost +LIBFTDI_CONF_OPTS += --enable-libftdipp +else +LIBFTDI_CONF_OPTS += --disable-libftdipp +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch b/buildroot/package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch new file mode 100644 index 0000000..487fc28 --- /dev/null +++ b/buildroot/package/libftdi1/0001-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch @@ -0,0 +1,96 @@ +From 7e57ff280b55b45e74329b9988279e8831d32eab Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 25 Jan 2015 09:45:04 +0100 +Subject: [PATCH 1/2] cmake: use the standard CMake flag to drive the shared + object build + +Remove the STATICLIBS CMake option (and the code handling it) and let +the standard CMake flags drive the shared object build. + +Signed-off-by: Samuel Martin +--- + CMakeLists.txt | 2 -- + ftdipp/CMakeLists.txt | 15 +-------------- + src/CMakeLists.txt | 13 +------------ + 3 files changed, 2 insertions(+), 28 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 74f80f4..0ba0b08 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -46,8 +46,6 @@ set(CPACK_COMPONENT_SHAREDLIBS_GROUP "Development") + set(CPACK_COMPONENT_STATICLIBS_GROUP "Development") + set(CPACK_COMPONENT_HEADERS_GROUP "Development") + +-option ( STATICLIBS "Build static libraries" ON ) +- + # guess LIB_SUFFIX, don't take debian multiarch into account + if ( NOT DEFINED LIB_SUFFIX ) + if( CMAKE_SYSTEM_NAME MATCHES "Linux" +diff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt +index 7500211..27e7884 100644 +--- a/ftdipp/CMakeLists.txt ++++ b/ftdipp/CMakeLists.txt +@@ -23,8 +23,7 @@ if (FTDIPP) + set(FTDI_BUILD_CPP True PARENT_SCOPE) + message(STATUS "Building libftdi1++") + +- # Shared library +- add_library(ftdipp1 SHARED ${cpp_sources}) ++ add_library(ftdipp1 ${cpp_sources}) + + math(EXPR VERSION_FIXUP "${MAJOR_VERSION} + 1") # Compatiblity with previous releases + set_target_properties(ftdipp1 PROPERTIES VERSION ${VERSION_FIXUP}.${MINOR_VERSION}.0 SOVERSION 2) +@@ -41,18 +40,6 @@ if (FTDIPP) + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX} + ) +- +- # Static library +- if ( STATICLIBS ) +- add_library(ftdipp1-static STATIC ${cpp_sources}) +- set_target_properties(ftdipp1-static PROPERTIES OUTPUT_NAME "ftdipp1") +- set_target_properties(ftdipp1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +- +- install ( TARGETS ftdipp1-static +- ARCHIVE DESTINATION lib${LIB_SUFFIX} +- COMPONENT staticlibs +- ) +- endif () + + install ( FILES ${cpp_headers} + DESTINATION include/${PROJECT_NAME} +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 9fd86a6..501d4a8 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -21,7 +21,7 @@ configure_file(ftdi_version_i.h.in "${CMAKE_CURRENT_BINARY_DIR}/ftdi_version_i.h + set(c_sources ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.c ${CMAKE_CURRENT_SOURCE_DIR}/ftdi_stream.c CACHE INTERNAL "List of c sources" ) + set(c_headers ${CMAKE_CURRENT_SOURCE_DIR}/ftdi.h CACHE INTERNAL "List of c headers" ) + +-add_library(ftdi1 SHARED ${c_sources}) ++add_library(ftdi1 ${c_sources}) + + math(EXPR VERSION_FIXUP "${MAJOR_VERSION} + 1") # Compatiblity with previous releases + set_target_properties(ftdi1 PROPERTIES VERSION ${VERSION_FIXUP}.${MINOR_VERSION}.0 SOVERSION 2) +@@ -38,17 +38,6 @@ install ( TARGETS ftdi1 + ARCHIVE DESTINATION lib${LIB_SUFFIX} + ) + +-if ( STATICLIBS ) +- add_library(ftdi1-static STATIC ${c_sources}) +- target_link_libraries(ftdi1-static ${LIBUSB_LIBRARIES}) +- set_target_properties(ftdi1-static PROPERTIES OUTPUT_NAME "ftdi1") +- set_target_properties(ftdi1-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +- install ( TARGETS ftdi1-static +- ARCHIVE DESTINATION lib${LIB_SUFFIX} +- COMPONENT staticlibs +- ) +-endif () +- + install ( FILES ${c_headers} + DESTINATION include/${PROJECT_NAME} + COMPONENT headers +-- +2.2.2 + diff --git a/buildroot/package/libftdi1/0002-cmake-fix-FindUSB1.cmake.patch b/buildroot/package/libftdi1/0002-cmake-fix-FindUSB1.cmake.patch new file mode 100644 index 0000000..5619a0c --- /dev/null +++ b/buildroot/package/libftdi1/0002-cmake-fix-FindUSB1.cmake.patch @@ -0,0 +1,34 @@ +From 81275d75ae88fe8ab1915d3ba260ea935e63c362 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 25 Jan 2015 10:01:17 +0100 +Subject: [PATCH 2/2] cmake: fix FindUSB1.cmake + +Make sure all ldflags are correctly set, especially for static build. + +Signed-off-by: Samuel Martin +--- + cmake/FindUSB1.cmake | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/cmake/FindUSB1.cmake b/cmake/FindUSB1.cmake +index b90e297..e7f1b3c 100644 +--- a/cmake/FindUSB1.cmake ++++ b/cmake/FindUSB1.cmake +@@ -26,8 +26,12 @@ else (LIBUSB_INCLUDE_DIR AND LIBUSB_LIBRARIES) + PATH_SUFFIXES libusb-1.0 + PATHS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS}) + +- FIND_LIBRARY(LIBUSB_LIBRARIES NAMES usb-1.0 +- PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS}) ++ set(LIBUSB_LIBRARIES ${PC_LIBUSB_STATIC_LDFLAGS} ${PC_LIBUSB_STATIC_LDFLAGS_OTHER}) ++ foreach(libname ${PC_LIBUSB_STATIC_LIBRARIES}) ++ FIND_LIBRARY(lib NAMES ${libname} ++ PATHS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS}) ++ list(APPEND LIBUSB_LIBRARIES ${lib}) ++ endforeach() + + include(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR) +-- +2.2.2 + diff --git a/buildroot/package/libftdi1/0003-cmake-do-not-check-for-g-when-FTDIPP-is-disabled.patch b/buildroot/package/libftdi1/0003-cmake-do-not-check-for-g-when-FTDIPP-is-disabled.patch new file mode 100644 index 0000000..be0913d --- /dev/null +++ b/buildroot/package/libftdi1/0003-cmake-do-not-check-for-g-when-FTDIPP-is-disabled.patch @@ -0,0 +1,46 @@ +From c215d5ecd985b57700e817920d0e99112b4a571b Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 25 Jan 2015 13:35:24 +0100 +Subject: [PATCH] cmake: do not check for g++ when FTDIPP is disabled + +Signed-off-by: Samuel Martin +--- + CMakeLists.txt | 6 ++++-- + ftdipp/CMakeLists.txt | 1 + + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0ba0b08..e880211 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,5 +1,5 @@ + # Project +-project(libftdi1) ++project(libftdi1 C) + set(MAJOR_VERSION 1) + set(MINOR_VERSION 2) + set(PACKAGE libftdi1) +@@ -145,7 +145,9 @@ else(DOCUMENTATION AND DOXYGEN_FOUND) + endif(DOCUMENTATION AND DOXYGEN_FOUND) + + add_subdirectory(src) +-add_subdirectory(ftdipp) ++if(FTDIPP) ++ add_subdirectory(ftdipp) ++endif() + add_subdirectory(python) + add_subdirectory(ftdi_eeprom) + add_subdirectory(examples) +diff --git a/ftdipp/CMakeLists.txt b/ftdipp/CMakeLists.txt +index 27e7884..2d080f4 100644 +--- a/ftdipp/CMakeLists.txt ++++ b/ftdipp/CMakeLists.txt +@@ -1,4 +1,5 @@ + # Check ++project(libftdipp1 C CXX) + set(FTDI_BUILD_CPP False PARENT_SCOPE) + + option ( FTDIPP "Build C++ binding library libftdi1++" ON ) +-- +2.2.2 + diff --git a/buildroot/package/libftdi1/Config.in b/buildroot/package/libftdi1/Config.in new file mode 100644 index 0000000..d473213 --- /dev/null +++ b/buildroot/package/libftdi1/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_LIBFTDI1 + bool "libftdi1" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Userspace access to FTDI USB interface chips (version 1.x) + + http://www.intra2net.com/en/developer/libftdi/index.php + +if BR2_PACKAGE_LIBFTDI1 + +config BR2_PACKAGE_LIBFTDI1_LIBFTDIPP1 + bool "libftdipp1" + depends on BR2_INSTALL_LIBSTDCPP # boost + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR # boost + select BR2_PACKAGE_BOOST + help + C++ bindings for libftdi + +comment "libftdipp1 needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR + +config BR2_PACKAGE_LIBFTDI1_PYTHON_BINDINGS + bool "python bindings" + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + help + Python bindings for libftdi + +config BR2_PACKAGE_LIBFTDI1_FDTI_EEPROM + bool "ftdi_eeprom tool" + select BR2_PACKAGE_LIBCONFUSE + +endif # BR2_PACKAGE_LIBFTDI1 + +comment "libftdi1 needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libftdi1/libftdi1.hash b/buildroot/package/libftdi1/libftdi1.hash new file mode 100644 index 0000000..40512a7 --- /dev/null +++ b/buildroot/package/libftdi1/libftdi1.hash @@ -0,0 +1,3 @@ +# Locally computed after checking the signature +# https://www.intra2net.com/en/developer/libftdi/download/libftdi1-1.4.tar.bz2.sig +sha256 ec36fb49080f834690c24008328a5ef42d3cf584ef4060f3a35aa4681cb31b74 libftdi1-1.4.tar.bz2 diff --git a/buildroot/package/libftdi1/libftdi1.mk b/buildroot/package/libftdi1/libftdi1.mk new file mode 100644 index 0000000..c45c83a --- /dev/null +++ b/buildroot/package/libftdi1/libftdi1.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libftdi1 +# +################################################################################ + +LIBFTDI1_VERSION = 1.4 +LIBFTDI1_SOURCE = libftdi1-$(LIBFTDI1_VERSION).tar.bz2 +LIBFTDI1_SITE = http://www.intra2net.com/en/developer/libftdi/download +LIBFTDI1_INSTALL_STAGING = YES +LIBFTDI1_DEPENDENCIES = libusb +LIBFTDI1_LICENSE = LGPL-2.0 (libftdi1), GPL-2.0 with exception (ftdipp1) +LIBFTDI1_LICENSE_FILES = LICENSE COPYING.GPL COPYING.LIB +LIBFTDI1_CONF_OPTS = -DDOCUMENTATION=OFF -DEXAMPLES=OFF + +ifeq ($(BR2_PACKAGE_LIBFTDI1_LIBFTDIPP1),y) +LIBFTDI1_DEPENDENCIES += boost +LIBFTDI1_CONF_OPTS += -DFTDIPP=ON +else +LIBFTDI1_CONF_OPTS += -DFTDIPP=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI1_PYTHON_BINDINGS),y) +LIBFTDI1_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3) host-swig +LIBFTDI1_CONF_OPTS += -DPYTHON_BINDINGS=ON +else +LIBFTDI1_CONF_OPTS += -DPYTHON_BINDINGS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI1_FDTI_EEPROM),y) +# ftdi_eeprom optionally depends on libintl +LIBFTDI1_DEPENDENCIES += libconfuse $(TARGET_NLS_DEPENDENCIES) +LIBFTDI1_CONF_OPTS += -DFTDI_EEPROM=ON +else +LIBFTDI1_CONF_OPTS += -DFTDI_EEPROM=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libfuse/0001-fix-aarch64-build.patch b/buildroot/package/libfuse/0001-fix-aarch64-build.patch new file mode 100644 index 0000000..3b88687 --- /dev/null +++ b/buildroot/package/libfuse/0001-fix-aarch64-build.patch @@ -0,0 +1,22 @@ +Fix build on the AArch64 platform + +Upstream-Status: Submitted + +Signed-off-by: Riku Voipio + +--- a/include/fuse_kernel.h ++++ b/include/fuse_kernel.h +@@ -88,12 +88,7 @@ + #ifndef _LINUX_FUSE_H + #define _LINUX_FUSE_H + +-#include +-#define __u64 uint64_t +-#define __s64 int64_t +-#define __u32 uint32_t +-#define __s32 int32_t +-#define __u16 uint16_t ++#include + + /* + * Version negotiation: diff --git a/buildroot/package/libfuse/Config.in b/buildroot/package/libfuse/Config.in new file mode 100644 index 0000000..2b0e31a --- /dev/null +++ b/buildroot/package/libfuse/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBFUSE + bool "libfuse" + # Really doesn't like static, see fuse/lib/fuse.c + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + FUSE (Filesystem in UserSpacE) + + https://github.com/libfuse/libfuse + +comment "libfuse needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/libfuse/libfuse.hash b/buildroot/package/libfuse/libfuse.hash new file mode 100644 index 0000000..60bdf63 --- /dev/null +++ b/buildroot/package/libfuse/libfuse.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 832432d1ad4f833c20e13b57cf40ce5277a9d33e483205fc63c78111b3358874 fuse-2.9.7.tar.gz diff --git a/buildroot/package/libfuse/libfuse.mk b/buildroot/package/libfuse/libfuse.mk new file mode 100644 index 0000000..dc177d0 --- /dev/null +++ b/buildroot/package/libfuse/libfuse.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libfuse +# +################################################################################ + +LIBFUSE_VERSION = 2.9.7 +LIBFUSE_SOURCE = fuse-$(LIBFUSE_VERSION).tar.gz +LIBFUSE_SITE = https://github.com/libfuse/libfuse/releases/download/fuse-$(LIBFUSE_VERSION) +LIBFUSE_LICENSE = GPL-2.0, LGPL-2.1 +LIBFUSE_LICENSE_FILES = COPYING COPYING.LIB +LIBFUSE_INSTALL_STAGING = YES +LIBFUSE_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) +LIBFUSE_CONF_OPTS = \ + --disable-example \ + --enable-lib \ + --enable-util + +define LIBFUSE_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/bin/fusermount $(TARGET_DIR)/usr/bin/ + cp -dpf $(STAGING_DIR)/usr/lib/libfuse.so* $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/libg7221/Config.in b/buildroot/package/libg7221/Config.in new file mode 100644 index 0000000..e057d28 --- /dev/null +++ b/buildroot/package/libg7221/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBG7221 + bool "libg7221" + help + libg722_1 is a library for the ITU G.722.1 and Annex C + wideband speech codecs. + + http://www.soft-switch.org diff --git a/buildroot/package/libg7221/libg7221.hash b/buildroot/package/libg7221/libg7221.hash new file mode 100644 index 0000000..d1472a6 --- /dev/null +++ b/buildroot/package/libg7221/libg7221.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 330dafa58d37a585a866167bc33f8fbe06dbcfc9a69cad43fab0b6702ebf2393 libg7221-dbfc29d4806ecdace50379a2f4d68a992a6fec34.tar.gz diff --git a/buildroot/package/libg7221/libg7221.mk b/buildroot/package/libg7221/libg7221.mk new file mode 100644 index 0000000..813af11 --- /dev/null +++ b/buildroot/package/libg7221/libg7221.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libg7221 +# +################################################################################ + +LIBG7221_VERSION = dbfc29d4806ecdace50379a2f4d68a992a6fec34 +# we use the FreeSwitch fork because it contains pkgconf support +LIBG7221_SITE = https://freeswitch.org/stash/scm/sd/libg7221.git +LIBG7221_SITE_METHOD = git +LIBG7221_LICENSE = Polycom +LIBG7221_LICENSE_FILES = COPYING +LIBG7221_AUTORECONF = YES +LIBG7221_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libgcrypt/0001-ac_cv_sys_symbol_underscore.patch b/buildroot/package/libgcrypt/0001-ac_cv_sys_symbol_underscore.patch new file mode 100644 index 0000000..95db0fb --- /dev/null +++ b/buildroot/package/libgcrypt/0001-ac_cv_sys_symbol_underscore.patch @@ -0,0 +1,27 @@ +diff --git a/acinclude.m4 b/acinclude.m4 +index a7bc0fa..1a5bffc 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -76,13 +76,14 @@ case "${host}" in + i386-emx-os2 | i[3456]86-pc-os2*emx | i386-pc-msdosdjgpp) + ac_cv_sys_symbol_underscore=yes + ;; +- *) +- if test "$cross_compiling" = yes; then +- if test "x$ac_cv_sys_symbol_underscore" = x ; then +- ac_cv_sys_symbol_underscore=yes +- fi +- else +- tmp_do_check="yes" ++ *) if test -z "$ac_cv_sys_symbol_underscore"; then ++ if test "$cross_compiling" = yes; then ++ if test "x$ac_cv_sys_symbol_underscore" = x ; then ++ ac_cv_sys_symbol_underscore=yes ++ fi ++ else ++ tmp_do_check="yes" ++ fi + fi + ;; + esac + diff --git a/buildroot/package/libgcrypt/0002-reconfigure.patch b/buildroot/package/libgcrypt/0002-reconfigure.patch new file mode 100644 index 0000000..87d29a2 --- /dev/null +++ b/buildroot/package/libgcrypt/0002-reconfigure.patch @@ -0,0 +1,27 @@ +diff --git a/configure b/configure +index 70a6d50..8f55d95 100755 +--- a/configure ++++ b/configure +@@ -22306,14 +22306,15 @@ case "${host}" in + i386-emx-os2 | i345686-pc-os2*emx | i386-pc-msdosdjgpp) + ac_cv_sys_symbol_underscore=yes + ;; +- *) +- if test "$cross_compiling" = yes; then +- if test "x$ac_cv_sys_symbol_underscore" = x ; then +- ac_cv_sys_symbol_underscore=yes ++ *)if test -z "$ac_cv_sys_symbol_underscore";then ++ if test "$cross_compiling" = yes; then ++ if test "x$ac_cv_sys_symbol_underscore" = x ; then ++ ac_cv_sys_symbol_underscore=yes ++ fi ++ else ++ tmp_do_check="yes" ++ fi + fi +- else +- tmp_do_check="yes" +- fi + ;; + esac + if test "$tmp_do_check" = "yes"; then diff --git a/buildroot/package/libgcrypt/Config.in b/buildroot/package/libgcrypt/Config.in new file mode 100644 index 0000000..d3e5d4f --- /dev/null +++ b/buildroot/package/libgcrypt/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBGCRYPT + bool "libgcrypt" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + select BR2_PACKAGE_LIBGPG_ERROR + help + LibGCrypt is GNU's basic cryptographic library. + + http://www.gnu.org/software/libgcrypt/ diff --git a/buildroot/package/libgcrypt/libgcrypt.hash b/buildroot/package/libgcrypt/libgcrypt.hash new file mode 100644 index 0000000..dce6522 --- /dev/null +++ b/buildroot/package/libgcrypt/libgcrypt.hash @@ -0,0 +1,6 @@ +# From https://lists.gnupg.org/pipermail/gnupg-announce/2018q2/000426.html +sha1 13bd2ce69e59ab538e959911dfae80ea309636e3 libgcrypt-1.8.3.tar.bz2 +# Locally calculated after checking signature +# https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.3.tar.bz2.sig +sha256 66ec90be036747602f2b48f98312361a9180c97c68a690a5f376fa0f67d0af7c libgcrypt-1.8.3.tar.bz2 +sha256 ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532 COPYING.LIB diff --git a/buildroot/package/libgcrypt/libgcrypt.mk b/buildroot/package/libgcrypt/libgcrypt.mk new file mode 100644 index 0000000..f25944d --- /dev/null +++ b/buildroot/package/libgcrypt/libgcrypt.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libgcrypt +# +################################################################################ + +LIBGCRYPT_VERSION = 1.8.3 +LIBGCRYPT_SOURCE = libgcrypt-$(LIBGCRYPT_VERSION).tar.bz2 +LIBGCRYPT_LICENSE = LGPL-2.1+ +LIBGCRYPT_LICENSE_FILES = COPYING.LIB +LIBGCRYPT_SITE = https://gnupg.org/ftp/gcrypt/libgcrypt +LIBGCRYPT_INSTALL_STAGING = YES +LIBGCRYPT_DEPENDENCIES = libgpg-error +LIBGCRYPT_CONFIG_SCRIPTS = libgcrypt-config + +LIBGCRYPT_CONF_ENV = \ + ac_cv_sys_symbol_underscore=no +LIBGCRYPT_CONF_OPTS = \ + --with-gpg-error-prefix=$(STAGING_DIR)/usr + +# Libgcrypt doesn't support assembly for coldfire +ifeq ($(BR2_m68k_cf),y) +LIBGCRYPT_CONF_OPTS += --disable-asm +endif + +# Code doesn't build in thumb mode +ifeq ($(BR2_arm),y) +LIBGCRYPT_CONF_ENV += CFLAGS="$(patsubst -mthumb,,$(TARGET_CFLAGS))" +endif + +# Tests use fork() +define LIBGCRYPT_DISABLE_TESTS + $(SED) 's/ tests//' $(@D)/Makefile.in +endef + +LIBGCRYPT_POST_PATCH_HOOKS += LIBGCRYPT_DISABLE_TESTS + +$(eval $(autotools-package)) diff --git a/buildroot/package/libgdiplus/Config.in b/buildroot/package/libgdiplus/Config.in new file mode 100644 index 0000000..6ddf44f --- /dev/null +++ b/buildroot/package/libgdiplus/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBGDIPLUS + bool "libgdiplus" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # libglib2 -> gettext + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_XLIB_LIBXFT + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBPNG + help + An Open Source implementation of the GDI+ API. + + https://github.com/mono/libgdiplus + +comment "libgdiplus needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libgdiplus/libgdiplus.hash b/buildroot/package/libgdiplus/libgdiplus.hash new file mode 100644 index 0000000..740fefd --- /dev/null +++ b/buildroot/package/libgdiplus/libgdiplus.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 ce31da0c6952c8fd160813dfa9bf4a9a871bfe7284e9e3abff9a8ee689acfe58 libgdiplus-5.4.tar.gz diff --git a/buildroot/package/libgdiplus/libgdiplus.mk b/buildroot/package/libgdiplus/libgdiplus.mk new file mode 100644 index 0000000..eb18585 --- /dev/null +++ b/buildroot/package/libgdiplus/libgdiplus.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# libgdiplus +# +################################################################################ + +LIBGDIPLUS_VERSION = 5.4 +LIBGDIPLUS_SITE = $(call github,mono,libgdiplus,$(LIBGDIPLUS_VERSION)) + +# Although there is a LICENSE file thas specifies LGPL or MPL-1.1, +# looks like it is incorrect. The actual source files specify that +# they're licensed under MIT, and so does the COPYING file (and they +# all predate the addition of the LICENSE file). +LIBGDIPLUS_LICENSE = MIT +LIBGDIPLUS_LICENSE_FILES = COPYING src/carbon-private.h + +LIBGDIPLUS_INSTALL_STAGING = YES + +# github tarball doesn't have configure +LIBGDIPLUS_AUTORECONF = YES + +LIBGDIPLUS_DEPENDENCIES = xlib_libXft libglib2 cairo libpng host-pkgconf + +ifeq ($(BR2_PACKAGE_GIFLIB),y) +LIBGDIPLUS_CONF_OPTS += --with-libgif +LIBGDIPLUS_DEPENDENCIES += giflib +else +LIBGDIPLUS_CONF_OPTS += --without-libgif +endif + +# there is a bug in the configure script that enables pango support +# when passing --without-pango, so let's just not use it +ifeq ($(BR2_PACKAGE_PANGO),y) +LIBGDIPLUS_CONF_OPTS += --with-pango +LIBGDIPLUS_DEPENDENCIES += pango +endif + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +LIBGDIPLUS_CONF_OPTS += --with-libexif +LIBGDIPLUS_DEPENDENCIES += libexif +else +LIBGDIPLUS_CONF_OPTS += --without-libexif +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBGDIPLUS_CONF_OPTS += --with-libjpeg=$(STAGING_DIR)/usr +LIBGDIPLUS_DEPENDENCIES += jpeg +else +LIBGDIPLUS_CONF_OPTS += --without-libjpeg +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +LIBGDIPLUS_CONF_OPTS += --with-libtiff=$(STAGING_DIR)/usr +LIBGDIPLUS_DEPENDENCIES += tiff +else +LIBGDIPLUS_CONF_OPTS += --without-libtiff +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libgee/Config.in b/buildroot/package/libgee/Config.in new file mode 100644 index 0000000..07c387c --- /dev/null +++ b/buildroot/package/libgee/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBGEE + bool "libgee" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBGLIB2 + help + Libgee is an utility library providing GObject-based + interfaces and classes for commonly used data structures. + + https://wiki.gnome.org/Projects/Libgee + +comment "libgee needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libgee/libgee.hash b/buildroot/package/libgee/libgee.hash new file mode 100644 index 0000000..83ac810 --- /dev/null +++ b/buildroot/package/libgee/libgee.hash @@ -0,0 +1,2 @@ +# From http://ftp.acc.umu.se/pub/gnome/sources/libgee/0.18/libgee-0.18.1.sha256sum +sha256 99686bbe5a9c89ba9502c25f61314ee8efa0dd2a1159c9a639afc1458c2839a2 libgee-0.18.1.tar.xz diff --git a/buildroot/package/libgee/libgee.mk b/buildroot/package/libgee/libgee.mk new file mode 100644 index 0000000..9d87169 --- /dev/null +++ b/buildroot/package/libgee/libgee.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libgee +# +################################################################################ + +LIBGEE_VERSION_MAJOR = 0.18 +LIBGEE_VERSION = $(LIBGEE_VERSION_MAJOR).1 +LIBGEE_SITE = http://ftp.gnome.org/pub/gnome/sources/libgee/$(LIBGEE_VERSION_MAJOR) +LIBGEE_SOURCE = libgee-$(LIBGEE_VERSION).tar.xz +LIBGEE_DEPENDENCIES = host-pkgconf host-vala libglib2 +LIBGEE_INSTALL_STAGING = YES +LIBGEE_LICENSE = LGPL-2.1+ +LIBGEE_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libgeotiff/0001-use-pkg-config.patch b/buildroot/package/libgeotiff/0001-use-pkg-config.patch new file mode 100644 index 0000000..a4b11f1 --- /dev/null +++ b/buildroot/package/libgeotiff/0001-use-pkg-config.patch @@ -0,0 +1,79 @@ +Use pkg-config for libtiff detection + +Using pkg-config allows proper behavior in static-only contexts: the +libtiff library might depend on libz and libjpeg. + +This patch also fixes a few other issues in the configure.ac script +that prevents autoreconf to work, or proper detection of the proj +library. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -196,39 +196,12 @@ + + TIFF_CONFIG="no" + +-AC_ARG_WITH(libtiff, [ --with-libtiff=dir Use libtiff in directory dir],,) +- +-if test "$with_libtiff" != "" ; then +- if test -f $with_libtiff/include/tiffio.h -a -d $with_libtiff/lib ; then +- LIBS="-L$with_libtiff/lib -ltiff $LIBS" +- TIFF_INC=-I$with_libtiff/include +- else +- LIBS="-L$with_libtiff -ltiff $LIBS" +- TIFF_INC=-I$with_libtiff +- fi +- LIBS_SAVED="$LIBS" +- AC_CHECK_LIB(tiff,TIFFOpen,[TIFF_CONFIG=yes], +- AC_MSG_ERROR([failed to link with -ltiff to find TIFFOpen]),-lm) +- AC_CHECK_LIB(tiff,TIFFMergeFieldInfo,[TIFF_CONFIG=yes], +- AC_MSG_ERROR([Libtiff 3.6.0 Beta or later required for this version of +-libgeotiff. Please upgrade or use an older version of libgeotiff.]),-lm) +- LIBS="$LIBS_SAVED" +-else +- AC_CHECK_LIB(tiff,TIFFOpen,[TIFF_CONFIG=yes], +- AC_MSG_ERROR([You will need to substantially rewrite libxtiff to +-build libgeotiff without libtiff]),-lm) +- LIBS_SAVED="$LIBS" +- AC_CHECK_LIB(tiff,TIFFMergeFieldInfo,[TIFF_CONFIG=yes], +- AC_MSG_ERROR([Libtiff 3.6.0 Beta or later required for this version of +-libgeotiff. Please upgrade libtiff or use an older version of libgeotiff.]),-lm) +- LIBS="$LIBS -ltiff" +- TIFF_INC= +- TIFF_CONFIG="yes" +-fi +- ++PKG_CHECK_MODULES(LIBTIFF, libtiff-4) ++TIFF_INC="$LIBTIFF_CFLAGS" ++LIBS="$LIBS $LIBTIFF_LIBS" ++TIFF_CONFIG="yes" + + AC_SUBST([TIFF_INC]) +-AC_SUBST([TIFF_PREFIX]) + AM_CONDITIONAL([TIFF_IS_CONFIG], [test ! x$TIFF_CONFIG = xno]) + + dnl +@@ -280,15 +253,16 @@ + PROJ_INC=-I$PROJ_INC + + AC_SUBST(PROJ_INC,$PROJ_INC) +- AC_DEFINE(HAVE_PROJECTS_H) ++ AC_DEFINE([HAVE_PROJECTS_H], [], [Whether proj library header is available]) + AC_DEFINE(HAVE_LIBPROJ) + AC_SUBST([HAVE_LIBPROJ]) + PROJ_CONFIG="yes" +- + else + AC_CHECK_LIB(proj,pj_init,,,-lm) + AC_CHECK_HEADERS(proj_api.h,,) +- PROJ_CONFIG="yes" ++ if "$ac_cv_lib_proj_pj_init" = "yes" -a "$ac_cv_header_proj_api_h" = "yes"; then ++ PROJ_CONFIG="yes" ++ fi + fi + + AM_CONDITIONAL([PROJ_IS_CONFIG], [test ! x$PROJ_CONFIG = xno]) diff --git a/buildroot/package/libgeotiff/Config.in b/buildroot/package/libgeotiff/Config.in new file mode 100644 index 0000000..530cd45 --- /dev/null +++ b/buildroot/package/libgeotiff/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBGEOTIFF + bool "libgeotiff" + select BR2_PACKAGE_TIFF + help + Libgeotiff is an open source library normally hosted on top of + libtiff for reading, and writing GeoTIFF information tags. + + http://geotiff.osgeo.org diff --git a/buildroot/package/libgeotiff/libgeotiff.hash b/buildroot/package/libgeotiff/libgeotiff.hash new file mode 100644 index 0000000..66b8cb7 --- /dev/null +++ b/buildroot/package/libgeotiff/libgeotiff.hash @@ -0,0 +1,2 @@ +# Locally computed +sha1 4c6f405869826bb7d9f35f1d69167e3b44a57ef0 libgeotiff-1.4.0.tar.gz diff --git a/buildroot/package/libgeotiff/libgeotiff.mk b/buildroot/package/libgeotiff/libgeotiff.mk new file mode 100644 index 0000000..96f04c2 --- /dev/null +++ b/buildroot/package/libgeotiff/libgeotiff.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libgeotiff +# +################################################################################ + +LIBGEOTIFF_VERSION = 1.4.0 +LIBGEOTIFF_SITE = http://download.osgeo.org/geotiff/libgeotiff +LIBGEOTIFF_LICENSE = X11-style, public domain +LIBGEOTIFF_LICENSE_FILES = LICENSE +LIBGEOTIFF_DEPENDENCIES = tiff host-pkgconf +LIBGEOTIFF_INSTALL_STAGING = YES +LIBGEOTIFF_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBGEOTIFF_DEPENDENCIES += zlib +LIBGEOTIFF_CONF_OPTS += --with-zlib +else +LIBGEOTIFF_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBGEOTIFF_DEPENDENCIES += jpeg +LIBGEOTIFF_CONF_OPTS += --with-jpeg +else +LIBGEOTIFF_CONF_OPTS += --without-jpeg +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libglade/Config.in b/buildroot/package/libglade/Config.in new file mode 100644 index 0000000..e269a07 --- /dev/null +++ b/buildroot/package/libglade/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBGLADE + bool "libglade" + depends on BR2_PACKAGE_LIBGTK2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_ATK + select BR2_PACKAGE_LIBXML2 + help + Libglade allows you to load glade interface files in a program + at runtime. It doesn't require GLADE to be used, but GLADE is + by far the easiest way to create the interface files. + + http://ftp.gnome.org/pub/GNOME/sources/libglade/ + +comment "libglade needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_LIBGTK2 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libglade/libglade.hash b/buildroot/package/libglade/libglade.hash new file mode 100644 index 0000000..fdcc837 --- /dev/null +++ b/buildroot/package/libglade/libglade.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/libglade/2.6/libglade-2.6.4.sha256sum +sha256 64361e7647839d36ed8336d992fd210d3e8139882269bed47dc4674980165dec libglade-2.6.4.tar.bz2 diff --git a/buildroot/package/libglade/libglade.mk b/buildroot/package/libglade/libglade.mk new file mode 100644 index 0000000..32fa595 --- /dev/null +++ b/buildroot/package/libglade/libglade.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libglade +# +################################################################################ + +LIBGLADE_VERSION_MAJOR = 2.6 +LIBGLADE_VERSION = $(LIBGLADE_VERSION_MAJOR).4 +LIBGLADE_SOURCE = libglade-$(LIBGLADE_VERSION).tar.bz2 +LIBGLADE_SITE = http://ftp.gnome.org/pub/GNOME/sources/libglade/$(LIBGLADE_VERSION_MAJOR) +LIBGLADE_INSTALL_STAGING = YES +LIBGLADE_DEPENDENCIES = host-pkgconf libglib2 libgtk2 atk libxml2 +LIBGLADE_LICENSE = LGPL-2.0+ +LIBGLADE_LICENSE_FILES = COPYING + +define LIBGLADE_INSTALL_FIX + rm -rf $(TARGET_DIR)/usr/share/xml/libglade \ + $(TARGET_DIR)/usr/bin/libglade-convert +endef + +LIBGLADE_POST_INSTALL_TARGET_HOOKS += LIBGLADE_INSTALL_FIX + +$(eval $(autotools-package)) diff --git a/buildroot/package/libglew/Config.in b/buildroot/package/libglew/Config.in new file mode 100644 index 0000000..099c946 --- /dev/null +++ b/buildroot/package/libglew/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBGLEW + bool "libglew" + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXMU + help + The OpenGL Extension Wrangler Library (GLEW) is a + cross-platform C/C++ extension loading library. GLEW provides + efficient run-time mechanisms for determining which OpenGL + extensions are supported on the target platform. OpenGL core + and extension functionality is exposed in a single header + file. + + http://glew.sourceforge.net + +comment "libglew depends on X.org and needs an OpenGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/libglew/libglew.hash b/buildroot/package/libglew/libglew.hash new file mode 100644 index 0000000..44684ff --- /dev/null +++ b/buildroot/package/libglew/libglew.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/glew/files/glew/2.0.0/ +sha1 6e15c84f7e1fad34cd3679f784a233744ddf048f glew-2.0.0.tgz +md5 2a2cd7c98f13854d2fcddae0d2b20411 glew-2.0.0.tgz +# Locally computed: +sha256 c572c30a4e64689c342ba1624130ac98936d7af90c3103f9ce12b8a0c5736764 glew-2.0.0.tgz diff --git a/buildroot/package/libglew/libglew.mk b/buildroot/package/libglew/libglew.mk new file mode 100644 index 0000000..277a171 --- /dev/null +++ b/buildroot/package/libglew/libglew.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# libglew +# +################################################################################ + +LIBGLEW_VERSION = 2.0.0 +LIBGLEW_SOURCE = glew-$(LIBGLEW_VERSION).tgz +LIBGLEW_SITE = http://sourceforge.net/projects/glew/files/glew/$(LIBGLEW_VERSION) +LIBGLEW_LICENSE = BSD-3-Clause, MIT +LIBGLEW_LICENSE_FILES = LICENSE.txt +LIBGLEW_INSTALL_STAGING = YES +LIBGLEW_DEPENDENCIES = libgl xlib_libX11 xlib_libXext xlib_libXi xlib_libXmu + +# using $TARGET_CONFIGURE_OPTS breaks compilation +define LIBGLEW_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + GLEW_DEST="/usr" LIBDIR="/usr/lib" \ + AR="$(TARGET_AR)" CC="$(TARGET_CC)" \ + LD="$(TARGET_CC)" STRIP="$(TARGET_STRIP)" \ + POPT="$(TARGET_CFLAGS)" LDFLAGS.EXTRA="$(TARGET_LDFLAGS)" +endef + +define LIBGLEW_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + GLEW_DEST="$(STAGING_DIR)/usr" LIBDIR="$(STAGING_DIR)/usr/lib" \ + $(TARGET_CONFIGURE_OPTS) install +endef + +define LIBGLEW_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + GLEW_DEST="$(TARGET_DIR)/usr" LIBDIR="$(TARGET_DIR)/usr/lib" \ + $(TARGET_CONFIGURE_OPTS) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libglfw/Config.in b/buildroot/package/libglfw/Config.in new file mode 100644 index 0000000..045bd26 --- /dev/null +++ b/buildroot/package/libglfw/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBGLFW + bool "libglfw" + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXINERAMA + select BR2_PACKAGE_XLIB_LIBXRANDR + help + GLFW is an Open Source, multi-platform library for creating + windows with OpenGL contexts and receiving input and events. + + http://www.glfw.org + +comment "libglfw depends on X.org and needs an OpenGL backend" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/libglfw/libglfw.hash b/buildroot/package/libglfw/libglfw.hash new file mode 100644 index 0000000..c0ad2af --- /dev/null +++ b/buildroot/package/libglfw/libglfw.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 e10f0de1384d75e6fc210c53e91843f6110d6c4f3afbfb588130713c2f9d8fe8 libglfw-3.2.1.tar.gz diff --git a/buildroot/package/libglfw/libglfw.mk b/buildroot/package/libglfw/libglfw.mk new file mode 100644 index 0000000..b6dde2e --- /dev/null +++ b/buildroot/package/libglfw/libglfw.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libglfw +# +################################################################################ + +LIBGLFW_VERSION = 3.2.1 +LIBGLFW_SITE = $(call github,glfw,glfw,$(LIBGLFW_VERSION)) +LIBGLFW_INSTALL_STAGING = YES +LIBGLFW_DEPENDENCIES = libgl xlib_libXcursor xlib_libXext \ + xlib_libXinerama xlib_libXrandr +LIBGLFW_LICENSE = Zlib +LIBGLFW_LICENSE_FILES = COPYING.txt + +LIBGLFW_CONF_OPTS += \ + -DGLFW_BUILD_EXAMPLES=OFF \ + -DGLFW_BUILD_TESTS=OFF \ + -DGLFW_BUILD_DOCS=OFF + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +LIBGLFW_DEPENDENCIES += xlib_libXi +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y) +LIBGLFW_DEPENDENCIES += xlib_libXxf86vm +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libglib2/0001-fix-compile-time-atomic-detection.patch b/buildroot/package/libglib2/0001-fix-compile-time-atomic-detection.patch new file mode 100644 index 0000000..708188b --- /dev/null +++ b/buildroot/package/libglib2/0001-fix-compile-time-atomic-detection.patch @@ -0,0 +1,32 @@ +From d5c628a6179b99705fa05ab87437321b132c81bc Mon Sep 17 00:00:00 2001 +From: Brendan Heading +Date: Wed, 21 Jun 2017 16:36:15 -0400 +Subject: [PATCH] Fix compile time atomic detection + +Improved compile-time detection of atomic support in the compiler. + +Upstream-Status: submitted +See : https://bugzilla.gnome.org/show_bug.cgi?id=752731 + +Signed-off-by: Brendan Heading +Signed-off-by: Adam Duskett +--- + glib/gthread-posix.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/glib/gthread-posix.c b/glib/gthread-posix.c +index 71a6b7b..d09d029 100644 +--- a/glib/gthread-posix.c ++++ b/glib/gthread-posix.c +@@ -65,7 +65,7 @@ + #endif + + /* clang defines __ATOMIC_SEQ_CST but doesn't support the GCC extension */ +-#if defined(HAVE_FUTEX) && defined(__ATOMIC_SEQ_CST) && !defined(__clang__) ++#if defined(HAVE_FUTEX) && defined(__ATOMIC_SEQ_CST) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4) && !defined(__clang__) + #define USE_NATIVE_MUTEX + #endif + +-- +2.9.4 + diff --git a/buildroot/package/libglib2/0002-disable-tests.patch b/buildroot/package/libglib2/0002-disable-tests.patch new file mode 100644 index 0000000..523ebb3 --- /dev/null +++ b/buildroot/package/libglib2/0002-disable-tests.patch @@ -0,0 +1,60 @@ +From ee2d6609bce808ac72afdbf86db1a6e27c78171e Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Wed, 21 Jun 2017 16:37:54 -0400 +Subject: [PATCH] disable tests + +Disable tests, some of them need python and sometimes host-python +gets mixed with distro python leading to build failures. + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Adam Duskett +--- + Makefile.am | 2 +- + gio/Makefile.am | 2 +- + glib/Makefile.am | 4 ++-- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 008ad58..007332d 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -6,7 +6,7 @@ include $(top_srcdir)/glib.mk + + ACLOCAL_AMFLAGS = -I m4macros ${ACLOCAL_FLAGS} + +-SUBDIRS = . m4macros glib gmodule gthread gobject gio po docs tests ++SUBDIRS = . m4macros glib gmodule gthread gobject gio po docs + DIST_SUBDIRS = $(SUBDIRS) build win32 + + bin_SCRIPTS = glib-gettextize +diff --git a/gio/Makefile.am b/gio/Makefile.am +index 67db1b7..78309b5 100644 +--- a/gio/Makefile.am ++++ b/gio/Makefile.am +@@ -244,7 +244,7 @@ platform_libadd += win32/libgiowin32.la + platform_deps += win32/libgiowin32.la + endif + +-SUBDIRS += . tests ++SUBDIRS += . + + if HAVE_FAM + SUBDIRS += fam +diff --git a/glib/Makefile.am b/glib/Makefile.am +index d755853..61166e5 100644 +--- a/glib/Makefile.am ++++ b/glib/Makefile.am +@@ -33,8 +33,8 @@ else + MAYBE_PCRE = pcre + endif + +-SUBDIRS = libcharset $(PRINTF_SUBDIR) $(MAYBE_PCRE) update-pcre . tests +-DIST_SUBDIRS = libcharset gnulib pcre update-pcre tests ++SUBDIRS = libcharset $(PRINTF_SUBDIR) $(MAYBE_PCRE) update-pcre . ++DIST_SUBDIRS = libcharset gnulib pcre update-pcre + + AM_CPPFLAGS = \ + $(glib_INCLUDES) \ +-- +2.9.4 + diff --git a/buildroot/package/libglib2/0004-Do-not-hardcode-python-path-into-various-tools.patch b/buildroot/package/libglib2/0004-Do-not-hardcode-python-path-into-various-tools.patch new file mode 100644 index 0000000..fa558e6 --- /dev/null +++ b/buildroot/package/libglib2/0004-Do-not-hardcode-python-path-into-various-tools.patch @@ -0,0 +1,48 @@ +From b9160d951b9af647b97766c57295ca4f45cf9521 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin +Date: Tue, 3 Oct 2017 10:45:55 +0300 +Subject: [PATCH] Do not hardcode python path into various tools + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Alexander Kanavin +Fetch from: http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-core/glib-2.0/glib-2.0/0010-Do-not-hardcode-python-path-into-various-tools.patch?id=eef7883587acc933d6f34b559ec03ff84d18573b +Signed-off-by: David Owens +--- + gio/gdbus-2.0/codegen/gdbus-codegen.in | 2 +- + gobject/glib-genmarshal.in | 2 +- + gobject/glib-mkenums.in | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/gio/gdbus-2.0/codegen/gdbus-codegen.in b/gio/gdbus-2.0/codegen/gdbus-codegen.in +index 8050981..e693ef3 100644 +--- a/gio/gdbus-2.0/codegen/gdbus-codegen.in ++++ b/gio/gdbus-2.0/codegen/gdbus-codegen.in +@@ -1,4 +1,4 @@ +-#!/usr/bin/env @PYTHON@ ++#!/usr/bin/env python + + # GDBus - GLib D-Bus Library + # +diff --git a/gobject/glib-genmarshal.in b/gobject/glib-genmarshal.in +index 09e8408..b2f9d99 100755 +--- a/gobject/glib-genmarshal.in ++++ b/gobject/glib-genmarshal.in +@@ -1,4 +1,4 @@ +-#!/usr/bin/env @PYTHON@ ++#!/usr/bin/env python + + # pylint: disable=too-many-lines, missing-docstring, invalid-name + +diff --git a/gobject/glib-mkenums.in b/gobject/glib-mkenums.in +index d4bfd11..051fce4 100755 +--- a/gobject/glib-mkenums.in ++++ b/gobject/glib-mkenums.in +@@ -1,4 +1,4 @@ +-#!/usr/bin/env @PYTHON@ ++#!/usr/bin/env python + + # If the code below looks horrible and unpythonic, do not panic. + # +-- +2.14.1 + diff --git a/buildroot/package/libglib2/Config.in b/buildroot/package/libglib2/Config.in new file mode 100644 index 0000000..ea946ba --- /dev/null +++ b/buildroot/package/libglib2/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBGLIB2 + bool "libglib2" + depends on BR2_USE_WCHAR # gettext + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_PCRE_UCP + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_ZLIB + help + Low-level core library that forms the basis of GTK+ and GNOME. + + http://www.gtk.org/ + +comment "libglib2 needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libglib2/libglib2.hash b/buildroot/package/libglib2/libglib2.hash new file mode 100644 index 0000000..cf1c955 --- /dev/null +++ b/buildroot/package/libglib2/libglib2.hash @@ -0,0 +1,4 @@ +# https://download.gnome.org/sources/glib/2.54/glib-2.54.2.sha256sum +sha256 bb89e5c5aad33169a8c7f28b45671c7899c12f74caf707737f784d7102758e6c glib-2.54.2.tar.xz +# License files, locally calculated +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/libglib2/libglib2.mk b/buildroot/package/libglib2/libglib2.mk new file mode 100644 index 0000000..ff28ca6 --- /dev/null +++ b/buildroot/package/libglib2/libglib2.mk @@ -0,0 +1,175 @@ +################################################################################ +# +# libglib2 +# +################################################################################ + +LIBGLIB2_VERSION_MAJOR = 2.54 +LIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).2 +LIBGLIB2_SOURCE = glib-$(LIBGLIB2_VERSION).tar.xz +LIBGLIB2_SITE = http://ftp.gnome.org/pub/gnome/sources/glib/$(LIBGLIB2_VERSION_MAJOR) +LIBGLIB2_LICENSE = LGPL-2.1+ +LIBGLIB2_LICENSE_FILES = COPYING +# 0002-disable-tests.patch +LIBGLIB2_AUTORECONF = YES + +LIBGLIB2_INSTALL_STAGING = YES +LIBGLIB2_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install + +LIBGLIB2_CONF_ENV = \ + ac_cv_func_posix_getpwuid_r=yes \ + glib_cv_stack_grows=no \ + glib_cv_uscore=no \ + ac_cv_func_strtod=yes \ + ac_fsusage_space=yes \ + fu_cv_sys_stat_statfs2_bsize=yes \ + ac_cv_func_closedir_void=no \ + ac_cv_func_getloadavg=no \ + ac_cv_lib_util_getloadavg=no \ + ac_cv_lib_getloadavg_getloadavg=no \ + ac_cv_func_getgroups=yes \ + ac_cv_func_getgroups_works=yes \ + ac_cv_func_chown_works=yes \ + ac_cv_have_decl_euidaccess=no \ + ac_cv_func_euidaccess=no \ + ac_cv_have_decl_strnlen=yes \ + ac_cv_func_strnlen_working=yes \ + ac_cv_func_lstat_dereferences_slashed_symlink=yes \ + ac_cv_func_lstat_empty_string_bug=no \ + ac_cv_func_stat_empty_string_bug=no \ + vb_cv_func_rename_trailing_slash_bug=no \ + ac_cv_have_decl_nanosleep=yes \ + jm_cv_func_nanosleep_works=yes \ + gl_cv_func_working_utimes=yes \ + ac_cv_func_utime_null=yes \ + jm_cv_func_svid_putenv=yes \ + ac_cv_func_getcwd_null=yes \ + ac_cv_func_getdelim=yes \ + ac_cv_func_mkstemp=yes \ + utils_cv_func_mkstemp_limitations=no \ + utils_cv_func_mkdir_trailing_slash_bug=no \ + jm_cv_func_gettimeofday_clobber=no \ + gl_cv_func_working_readdir=yes \ + jm_ac_cv_func_link_follows_symlink=no \ + utils_cv_localtime_cache=no \ + ac_cv_struct_st_mtim_nsec=no \ + gl_cv_func_tzset_clobber=no \ + gl_cv_func_getcwd_null=yes \ + gl_cv_func_getcwd_path_max=yes \ + ac_cv_func_fnmatch_gnu=yes \ + am_getline_needs_run_time_check=no \ + am_cv_func_working_getline=yes \ + gl_cv_func_mkdir_trailing_slash_bug=no \ + gl_cv_func_mkstemp_limitations=no \ + ac_cv_func_working_mktime=yes \ + jm_cv_func_working_re_compile_pattern=yes \ + ac_use_included_regex=no \ + gl_cv_c_restrict=no \ + ac_cv_path_GLIB_GENMARSHAL=$(HOST_DIR)/bin/glib-genmarshal \ + ac_cv_prog_F77=no \ + ac_cv_func_posix_getgrgid_r=no \ + glib_cv_long_long_format=ll \ + ac_cv_func_printf_unix98=yes \ + ac_cv_func_vsnprintf_c99=yes \ + ac_cv_func_newlocale=no \ + ac_cv_func_uselocale=no \ + ac_cv_func_strtod_l=no \ + ac_cv_func_strtoll_l=no \ + ac_cv_func_strtoull_l=no \ + gt_cv_c_wchar_t=$(if $(BR2_USE_WCHAR),yes,no) + +# old uClibc versions don't provide qsort_r +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y) +LIBGLIB2_CONF_ENV += glib_cv_have_qsort_r=no +else +LIBGLIB2_CONF_ENV += glib_cv_have_qsort_r=yes +endif + +# glib/valgrind.h contains inline asm not compatible with thumb1 +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +LIBGLIB2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -marm" +endif + +HOST_LIBGLIB2_CONF_OPTS = \ + --disable-coverage \ + --disable-dtrace \ + --disable-fam \ + --disable-libelf \ + --disable-selinux \ + --disable-systemtap \ + --disable-xattr \ + --with-pcre=system + +LIBGLIB2_DEPENDENCIES = \ + host-pkgconf host-libglib2 \ + libffi pcre util-linux zlib $(TARGET_NLS_DEPENDENCIES) + +HOST_LIBGLIB2_DEPENDENCIES = \ + host-gettext \ + host-libffi \ + host-pcre \ + host-pkgconf \ + host-util-linux \ + host-zlib + +LIBGLIB2_CONF_OPTS = \ + --with-pcre=system \ + --disable-compile-warnings + +ifneq ($(BR2_ENABLE_LOCALE),y) +LIBGLIB2_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +LIBGLIB2_CONF_OPTS += --enable-libelf +LIBGLIB2_DEPENDENCIES += elfutils +else +LIBGLIB2_CONF_OPTS += --disable-libelf +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +LIBGLIB2_CONF_OPTS += --with-libiconv=gnu +LIBGLIB2_DEPENDENCIES += libiconv +endif + +# Purge gdb-related files +ifneq ($(BR2_PACKAGE_GDB),y) +define LIBGLIB2_REMOVE_GDB_FILES + rm -rf $(TARGET_DIR)/usr/share/glib-2.0/gdb +endef +endif + +# Purge useless binaries from target +define LIBGLIB2_REMOVE_DEV_FILES + rm -rf $(TARGET_DIR)/usr/lib/glib-2.0 + rm -rf $(addprefix $(TARGET_DIR)/usr/share/glib-2.0/,codegen gettext) + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,gdbus-codegen glib-compile-schemas glib-compile-resources glib-genmarshal glib-gettextize glib-mkenums gobject-query gtester gtester-report) + $(LIBGLIB2_REMOVE_GDB_FILES) +endef + +LIBGLIB2_POST_INSTALL_TARGET_HOOKS += LIBGLIB2_REMOVE_DEV_FILES + +# Remove schema sources/DTDs, we use staging ones to compile them. +# Do so at target finalization since other packages install additional +# ones and we want to deal with it in a single place. +define LIBGLIB2_REMOVE_TARGET_SCHEMAS + rm -f $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.xml \ + $(TARGET_DIR)/usr/share/glib-2.0/schemas/*.dtd +endef + +# Compile schemas at target finalization since other packages install +# them as well, and better do it in a central place. +# It's used at run time so it doesn't matter defering it. +define LIBGLIB2_COMPILE_SCHEMAS + $(HOST_DIR)/bin/glib-compile-schemas \ + $(STAGING_DIR)/usr/share/glib-2.0/schemas \ + --targetdir=$(TARGET_DIR)/usr/share/glib-2.0/schemas +endef + +LIBGLIB2_TARGET_FINALIZE_HOOKS += LIBGLIB2_REMOVE_TARGET_SCHEMAS +LIBGLIB2_TARGET_FINALIZE_HOOKS += LIBGLIB2_COMPILE_SCHEMAS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +LIBGLIB2_HOST_BINARY = $(HOST_DIR)/bin/glib-genmarshal diff --git a/buildroot/package/libglob/Config.in b/buildroot/package/libglob/Config.in new file mode 100644 index 0000000..029ed6a --- /dev/null +++ b/buildroot/package/libglob/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_LIBGLOB + bool "libglob" + help + OpenBSD implementation of glob(3). diff --git a/buildroot/package/libglob/libglob.hash b/buildroot/package/libglob/libglob.hash new file mode 100644 index 0000000..0b39407 --- /dev/null +++ b/buildroot/package/libglob/libglob.hash @@ -0,0 +1,2 @@ +# Locally calculated: +sha256 4f1b204dad065689941c64828a92441fb316c9c7539b39525fa728125da65e22 libglob-1.0.tar.gz diff --git a/buildroot/package/libglob/libglob.mk b/buildroot/package/libglob/libglob.mk new file mode 100644 index 0000000..90356b3 --- /dev/null +++ b/buildroot/package/libglob/libglob.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# libglob +# +################################################################################ + +LIBGLOB_VERSION = 1.0 +LIBGLOB_SITE = $(call github,voidlinux,libglob,$(LIBGLOB_VERSION)) +LIBGLOB_LICENSE = BSD-3-Clause +LIBGLOB_LICENSE_FILES = LICENSE +LIBGLOB_INSTALL_STAGING = YES + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBGLOB_MAKE_TARGETS += libglob.so +# $1: destination directory +define LIBGLOB_INSTALL_SHARED + $(INSTALL) -m 0755 -D $(@D)/libglob.so.0.0.0 \ + $(1)/usr/lib/libglob.so.0.0.0 + ln -sf libglob.so.0.0.0 $(1)/usr/lib/libglob.so.0 + ln -sf libglob.so.0.0.0 $(1)/usr/lib/libglob.so +endef +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBGLOB_MAKE_TARGETS += libglob.a +# $1: destination directory +define LIBGLOB_INSTALL_STATIC + $(INSTALL) -m 0644 -D $(@D)/libglob.a $(1)/usr/lib/libglob.a +endef +endif + +define LIBGLOB_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBGLOB_MAKE_TARGETS) +endef + +define LIBGLOB_INSTALL_STAGING_CMDS + $(INSTALL) -m 0644 -D $(@D)/glob.h \ + $(STAGING_DIR)/usr/include/libglob/glob.h + $(call LIBGLOB_INSTALL_SHARED,$(STAGING_DIR)) + $(call LIBGLOB_INSTALL_STATIC,$(STAGING_DIR)) +endef + +define LIBGLOB_INSTALL_TARGET_CMDS + $(call LIBGLOB_INSTALL_SHARED,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libglu/Config.in b/buildroot/package/libglu/Config.in new file mode 100644 index 0000000..de8e1ef --- /dev/null +++ b/buildroot/package/libglu/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBGLU + bool "libglu" + depends on BR2_PACKAGE_HAS_LIBGL + help + Mesa OpenGL Utility library + + http://cgit.freedesktop.org/mesa/glu/ + +comment "libglu needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/libglu/libglu.hash b/buildroot/package/libglu/libglu.hash new file mode 100644 index 0000000..784386e --- /dev/null +++ b/buildroot/package/libglu/libglu.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 3d19cca9b26ec4048dd22e3d294acd43e080a3205a29ff47765bd514571ea8f9 glu-9.0.0.tar.gz diff --git a/buildroot/package/libglu/libglu.mk b/buildroot/package/libglu/libglu.mk new file mode 100644 index 0000000..0e5242f --- /dev/null +++ b/buildroot/package/libglu/libglu.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# libglu +# +################################################################################ + +LIBGLU_VERSION = 9.0.0 +LIBGLU_SITE = http://cgit.freedesktop.org/mesa/glu/snapshot +LIBGLU_SOURCE = glu-$(LIBGLU_VERSION).tar.gz +LIBGLU_LICENSE = SGI-B-2.0 +LIBGLU_LICENSE_FILES = include/GL/glu.h +LIBGLU_INSTALL_STAGING = YES +# upstream does not distribute a autoconf´ed configure script +LIBGLU_AUTORECONF = YES +LIBGLU_DEPENDENCIES = libgl host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/libgpg-error/Config.in b/buildroot/package/libgpg-error/Config.in new file mode 100644 index 0000000..40424e4 --- /dev/null +++ b/buildroot/package/libgpg-error/Config.in @@ -0,0 +1,49 @@ +config BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + bool + # see src/syscfg/ + default y if \ + BR2_aarch64 || BR2_aarch64_eb || BR2_arm || \ + BR2_armeb || BR2_i386 || BR2_mips || \ + BR2_mipsel || BR2_mips64 || BR2_mips64el || \ + BR2_m68k || BR2_nios2 || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sh4 || \ + BR2_sh4eb || BR2_sh4a || BR2_sh4aeb || \ + BR2_sparc || BR2_sparc64 || BR2_x86_64 + +config BR2_PACKAGE_LIBGPG_ERROR + bool "libgpg-error" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + help + Libgpg-error is a small library with error codes and + descriptions shared by most GnuPG related software. + + https://www.gnupg.org/related_software/libgpg-error + +config BR2_PACKAGE_LIBGPG_ERROR_SYSCFG + string + default "aarch64-unknown-linux-gnu" \ + if BR2_aarch64 || BR2_aarch64_eb + default "arm-unknown-linux-gnueabi" \ + if BR2_arm || BR2_armeb + default "i686-pc-linux-gnu" \ + if BR2_i386 + default "mips-unknown-linux-gnu" \ + if BR2_mips || BR2_mipsel + default "mips64el-unknown-linux-gnuabi64" \ + if BR2_mips64 || BR2_mips64el + default "m68k-unknown-linux-gnu" \ + if BR2_m68k + default "nios2-unknown-linux-gnu" \ + if BR2_nios2 + default "powerpc-unknown-linux-gnu" \ + if BR2_powerpc + default "powerpc64-unknown-linux-gnu" \ + if BR2_powerpc64 || BR2_powerpc64le + default "sh4-unknown-linux-gnu" \ + if BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb + default "sparc-unknown-linux-gnu" \ + if BR2_sparc + default "sparc64-unknown-linux-gnu" \ + if BR2_sparc64 + default "x86_64-pc-linux-gnu" \ + if BR2_x86_64 diff --git a/buildroot/package/libgpg-error/libgpg-error.hash b/buildroot/package/libgpg-error/libgpg-error.hash new file mode 100644 index 0000000..0e6304d --- /dev/null +++ b/buildroot/package/libgpg-error/libgpg-error.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.29.tar.bz2.sig +sha256 ece926fa5719d17a7ad8da618712cfa2f8a796ab2f2af9d544c5bb093383b1ea libgpg-error-1.29.tar.bz2 +# Locally calculated +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB diff --git a/buildroot/package/libgpg-error/libgpg-error.mk b/buildroot/package/libgpg-error/libgpg-error.mk new file mode 100644 index 0000000..862cb44 --- /dev/null +++ b/buildroot/package/libgpg-error/libgpg-error.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libgpg-error +# +################################################################################ + +LIBGPG_ERROR_VERSION = 1.29 +LIBGPG_ERROR_SITE = https://www.gnupg.org/ftp/gcrypt/libgpg-error +LIBGPG_ERROR_SOURCE = libgpg-error-$(LIBGPG_ERROR_VERSION).tar.bz2 +LIBGPG_ERROR_LICENSE = GPL-2.0+, LGPL-2.1+ +LIBGPG_ERROR_LICENSE_FILES = COPYING COPYING.LIB +LIBGPG_ERROR_INSTALL_STAGING = YES +LIBGPG_ERROR_CONFIG_SCRIPTS = gpg-error-config +LIBGPG_ERROR_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +define LIBGPG_ERROR_FIX_CROSS_COMPILATION + cd $(@D)/src/syscfg && \ + ln -s lock-obj-pub.$(call qstrip, $(BR2_PACKAGE_LIBGPG_ERROR_SYSCFG)).h \ + lock-obj-pub.$(GNU_TARGET_NAME).h +endef +LIBGPG_ERROR_PRE_CONFIGURE_HOOKS += LIBGPG_ERROR_FIX_CROSS_COMPILATION + +LIBGPG_ERROR_CONF_OPTS = --disable-tests + +$(eval $(autotools-package)) diff --git a/buildroot/package/libgpgme/0001-core-Tweak-STATUS_FAILURE-handling.patch b/buildroot/package/libgpgme/0001-core-Tweak-STATUS_FAILURE-handling.patch new file mode 100644 index 0000000..ae0e9c5 --- /dev/null +++ b/buildroot/package/libgpgme/0001-core-Tweak-STATUS_FAILURE-handling.patch @@ -0,0 +1,51 @@ +From b99502274ae5efdf6df0d967900ec3d1e64373d7 Mon Sep 17 00:00:00 2001 +From: Werner Koch +Date: Thu, 12 Apr 2018 20:36:30 +0200 +Subject: [PATCH] core: Tweak STATUS_FAILURE handling. + +* src/op-support.c (_gpgme_parse_failure): Ignore failures with +location "gpg-exit". +* tests/gpg/t-verify.c (main): Adjust for the now working checking of +the second key. + +Signed-off-by: Werner Koch +[baruch: drop test] +Signed-off-by: Baruch Siach +--- +Upstream status: commit b99502274ae + + src/op-support.c | 10 +++++++++- + tests/gpg/t-verify.c | 8 +++++--- + 2 files changed, 14 insertions(+), 4 deletions(-) + +diff --git a/src/op-support.c b/src/op-support.c +index 43cb1c760e0d..e55875f904d0 100644 +--- a/src/op-support.c ++++ b/src/op-support.c +@@ -400,7 +400,13 @@ _gpgme_parse_plaintext (char *args, char **filenamep) + + + /* Parse a FAILURE status line and return the error code. ARGS is +- modified to contain the location part. */ ++ * modified to contain the location part. Note that for now we ignore ++ * failure codes with a location of gpg-exit; they are too trouble ++ * some. Instead we should eventually record that error in the ++ * context and provide a function to return a fuller error ++ * description; this could then also show the location of the error ++ * (e.g. "option- parser") to make it easier for the user to detect ++ * the actual error. */ + gpgme_error_t + _gpgme_parse_failure (char *args) + { +@@ -418,6 +424,8 @@ _gpgme_parse_failure (char *args) + *where = '\0'; + + where = args; ++ if (!strcmp (where, "gpg-exit")) ++ return 0; + + return atoi (which); + } +-- +2.17.0 + diff --git a/buildroot/package/libgpgme/Config.in b/buildroot/package/libgpgme/Config.in new file mode 100644 index 0000000..4aabd06 --- /dev/null +++ b/buildroot/package/libgpgme/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBGPGME + bool "libgpgme" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + depends on BR2_USE_MMU # libassuan + #gnupg is not needed to build, but at runtime. + select BR2_PACKAGE_GNUPG if !BR2_PACKAGE_GNUPG2 + select BR2_PACKAGE_LIBGPG_ERROR + select BR2_PACKAGE_LIBASSUAN + help + GnuPG Made Easy (GPGME) is a library designed to make access + to GnuPG easier for applications. + + http://www.gnupg.org/related_software/gpgme/ diff --git a/buildroot/package/libgpgme/libgpgme.hash b/buildroot/package/libgpgme/libgpgme.hash new file mode 100644 index 0000000..6bd595c --- /dev/null +++ b/buildroot/package/libgpgme/libgpgme.hash @@ -0,0 +1,7 @@ +# From https://lists.gnupg.org/pipermail/gnupg-announce/2017q4/000418.html +sha1 77d3390887da25ed70b7ac04392360efbdca501f gpgme-1.10.0.tar.bz2 +# Locally calculated after checking pgp signature +# https://gnupg.org/ftp/gcrypt/gpgme/gpgme-1.10.0.tar.bz2.sig +sha256 1a8fed1197c3b99c35f403066bb344a26224d292afc048cfdfc4ccd5690a0693 gpgme-1.10.0.tar.bz2 +# Locally calculated +sha256 ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532 COPYING.LESSER diff --git a/buildroot/package/libgpgme/libgpgme.mk b/buildroot/package/libgpgme/libgpgme.mk new file mode 100644 index 0000000..5c46c7c --- /dev/null +++ b/buildroot/package/libgpgme/libgpgme.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# libgpgme +# +################################################################################ + +LIBGPGME_VERSION = 1.10.0 +LIBGPGME_SITE = https://gnupg.org/ftp/gcrypt/gpgme +LIBGPGME_SOURCE = gpgme-$(LIBGPGME_VERSION).tar.bz2 +LIBGPGME_LICENSE = LGPL-2.1+ +LIBGPGME_LICENSE_FILES = COPYING.LESSER +LIBGPGME_INSTALL_STAGING = YES +LIBGPGME_DEPENDENCIES = libassuan libgpg-error +LIBGPGME_LANGUAGE_BINDINGS = cl + +LIBGPGME_CONF_OPTS = \ + --with-gpg-error-prefix=$(STAGING_DIR)/usr \ + --with-libassuan-prefix=$(STAGING_DIR)/usr \ + --disable-gpgsm-test \ + --disable-gpgconf-test \ + --disable-g13-test \ + --disable-gpg-test \ + --enable-languages=$(LIBGPGME_LANGUAGE_BINDINGS) + +# C++ bindings require a C++11 capable gcc +ifeq ($(BR2_INSTALL_LIBSTDCPP)$(BR2_TOOLCHAIN_GCC_AT_LEAST_4_8),yy) +LIBGPGME_LANGUAGE_BINDINGS := $(LIBGPGME_LANGUAGE_BINDINGS),cpp +endif + +# Handle argp-standalone or it errors out during build +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +# musl libc does not define error_t in errno.h, but argp.h does. +# Assume we have error_t to avoid collision with the argp.h error_t. +LIBGPGME_CONF_ENV += LIBS="-largp" ac_cv_type_error_t=yes +LIBGPGME_DEPENDENCIES += argp-standalone +endif + +# MIPS N64 (re)introduced getdents64 in kernel version 3.10 +ifeq ($(BR2_MIPS_NABI64)x$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10),yx) +LIBGPGME_CONF_OPTS += --disable-linux-getdents +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libgphoto2/Config.in b/buildroot/package/libgphoto2/Config.in new file mode 100644 index 0000000..fc60dd6 --- /dev/null +++ b/buildroot/package/libgphoto2/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBGPHOTO2 + bool "libgphoto2" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBTOOL + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBXML2 + help + libgphoto2 is the core library designed to allow access to + digital camera by external programs. + + http://gphoto.org/proj/libgphoto2/ + +comment "libgphoto needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libgphoto2/libgphoto2.hash b/buildroot/package/libgphoto2/libgphoto2.hash new file mode 100644 index 0000000..1afe275 --- /dev/null +++ b/buildroot/package/libgphoto2/libgphoto2.hash @@ -0,0 +1,6 @@ +# https://sourceforge.net/projects/gphoto/files/libgphoto/2.5.13/ +md5 73bf5b3d94c8c6f5fad9ea6b5e561843 libgphoto2-2.5.13.tar.bz2 +sha1 cef2d2f1930f8ada16a63aca15683188231a626a libgphoto2-2.5.13.tar.bz2 + +# Locally calculated hash +sha256 ceaacbdf187d1cd1aed5336991f46b0100f6960b6c8383f9aeab98f1f64780ef libgphoto2-2.5.13.tar.bz2 diff --git a/buildroot/package/libgphoto2/libgphoto2.mk b/buildroot/package/libgphoto2/libgphoto2.mk new file mode 100644 index 0000000..f6dadf1 --- /dev/null +++ b/buildroot/package/libgphoto2/libgphoto2.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# libgphoto2 +# +################################################################################ + +LIBGPHOTO2_VERSION = 2.5.13 +LIBGPHOTO2_SOURCE = libgphoto2-$(LIBGPHOTO2_VERSION).tar.bz2 +# Project is maintained on github but github tarball doesn't have +# configure, so use tarballs from SourceForge +LIBGPHOTO2_SITE = https://downloads.sourceforge.net/project/gphoto/libgphoto/$(LIBGPHOTO2_VERSION) +LIBGPHOTO2_LICENSE = LGPL-2.1+, GPL-2.0 (adc65), GPL-2.0+ (some camlibs), \ + LGPL-2.0 (sipix), LGPL-3.0+ (pentax), BSD-3-Clause (ax203/tinyjpeg) +# There is a single license file for the LGPL-2.1, no license files +# for other licenses +LIBGPHOTO2_LICENSE_FILES = COPYING +LIBGPHOTO2_INSTALL_STAGING = YES + +LIBGPHOTO2_DEPENDENCIES = libxml2 libusb libtool host-pkgconf + +LIBGPHOTO2_CONF_ENV = udevscriptdir=/lib/udev +LIBGPHOTO2_CONF_OPTS += --without-rpmbuild --disable-gp2ddb --disable-internal-docs + +ifeq ($(BR2_PACKAGE_LIBUSB_COMPAT),y) +# libusb-compat is not actually used, but it is detected, so add it +# here to guarantee reproducible builds +LIBGPHOTO2_DEPENDENCIES += libusb-compat +endif + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +LIBGPHOTO2_DEPENDENCIES += libexif +LIBGPHOTO2_CONF_OPTS += --with-libexif=auto +else +LIBGPHOTO2_CONF_OPTS += --with-libexif=no +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBGPHOTO2_DEPENDENCIES += jpeg +LIBGPHOTO2_CONF_OPTS += --with-jpeg +else +LIBGPHOTO2_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_GD),y) +LIBGPHOTO2_DEPENDENCIES += gd +LIBGPHOTO2_CONF_OPTS += --with-gdlib=auto +else +LIBGPHOTO2_CONF_OPTS += --with-gdlib=no +endif + +ifeq ($(BR2_PACKAGE_LOCKDEV),y) +LIBGPHOTO2_DEPENDENCIES += lockdev +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libgpiod/Config.in b/buildroot/package/libgpiod/Config.in new file mode 100644 index 0000000..63a7cb6 --- /dev/null +++ b/buildroot/package/libgpiod/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBGPIOD + bool "libgpiod" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + help + This is a C library that abstracts the GPIO character + device operations on linux. + + https://github.com/brgl/libgpiod + +if BR2_PACKAGE_LIBGPIOD + +config BR2_PACKAGE_LIBGPIOD_TOOLS + bool "install tools" + help + Include a set of command-line tools for managing GPIOs. + +endif + +comment "libgpiod needs kernel headers >= 4.8" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 diff --git a/buildroot/package/libgpiod/libgpiod.hash b/buildroot/package/libgpiod/libgpiod.hash new file mode 100644 index 0000000..6baeee2 --- /dev/null +++ b/buildroot/package/libgpiod/libgpiod.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/software/libs/libgpiod/sha256sums.asc +sha256 50c7862428ca90b58672e2475aea66d33a6fc86c6bab1928c0660f3aedf44a37 libgpiod-0.3.2.tar.xz +# Hash for license file +sha256 ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed COPYING diff --git a/buildroot/package/libgpiod/libgpiod.mk b/buildroot/package/libgpiod/libgpiod.mk new file mode 100644 index 0000000..bc2e51d --- /dev/null +++ b/buildroot/package/libgpiod/libgpiod.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libgpiod +# +################################################################################ + +LIBGPIOD_VERSION = 0.3.2 +LIBGPIOD_SOURCE = libgpiod-$(LIBGPIOD_VERSION).tar.xz +LIBGPIOD_SITE = https://www.kernel.org/pub/software/libs/libgpiod +LIBGPIOD_LICENSE = LGPL-2.1+ +LIBGPIOD_LICENSE_FILES = COPYING +LIBGPIOD_INSTALL_STAGING = YES + +LIBGPIOD_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBGPIOD_TOOLS),y) +LIBGPIOD_CONF_OPTS += --enable-tools +else +LIBGPIOD_CONF_OPTS += --disable-tools +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libgsasl/Config.in b/buildroot/package/libgsasl/Config.in new file mode 100644 index 0000000..5181386 --- /dev/null +++ b/buildroot/package/libgsasl/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBGSASL + bool "libgsasl" + help + Simple Authentication and Security Layer framework Library. + GNU SASL is an implementation of the Simple Authentication and + Security Layer framework and a few common SASL mechanisms. + SASL is used by network servers (e.g., IMAP, SMTP) to request + authentication from clients, and in clients to authenticate + against servers. + + http://www.gnu.org/software/gsasl diff --git a/buildroot/package/libgsasl/libgsasl.hash b/buildroot/package/libgsasl/libgsasl.hash new file mode 100644 index 0000000..4205927 --- /dev/null +++ b/buildroot/package/libgsasl/libgsasl.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 3adfb49f9c92a719dea855fd1840d698cde55d4648d332a69032ba8bea207720 libgsasl-1.8.0.tar.gz diff --git a/buildroot/package/libgsasl/libgsasl.mk b/buildroot/package/libgsasl/libgsasl.mk new file mode 100644 index 0000000..9a62543 --- /dev/null +++ b/buildroot/package/libgsasl/libgsasl.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libgsasl +# +################################################################################ + +LIBGSASL_VERSION = 1.8.0 +LIBGSASL_SITE = $(BR2_GNU_MIRROR)/gsasl +LIBGSASL_LICENSE = LGPL-2.1+ (library), GPL-3.0+ (programs) +LIBGSASL_LICENSE_FILES = README COPYING.LIB COPYING +LIBGSASL_INSTALL_STAGING = YES +# It doesn't seem to build with our libgcrypt so better be safe +LIBGSASL_CONF_OPTS = --without-libgcrypt + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +LIBGSASL_CONF_OPTS += --with-libidn-prefix=$(STAGING_DIR)/usr +LIBGSASL_DEPENDENCIES += libidn +else +LIBGSASL_CONF_OPTS += --without-stringprep +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libgsm/0001-misc-fixes-from-archlinux.patch b/buildroot/package/libgsm/0001-misc-fixes-from-archlinux.patch new file mode 100644 index 0000000..86f4d42 --- /dev/null +++ b/buildroot/package/libgsm/0001-misc-fixes-from-archlinux.patch @@ -0,0 +1,218 @@ +From e8f43832d401ad1e071e6860b2bf4a1e796d4356 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Fri, 28 Jul 2017 08:18:22 -0400 +Subject: [PATCH] Misc fixes from Archlinux + +Patch from: + https://git.archlinux.org/svntogit/packages.git/plain/gsm/trunk/gsm.patch + +Signed-off-by: "Yann E. MORIN" +Signed-off-by: Adam Duskett +Refresh for 1.0.17 +--- + Makefile | 84 ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 42 insertions(+), 42 deletions(-) + +diff --git a/Makefile b/Makefile +index d5c0c90..ef61bd5 100644 +--- a/Makefile ++++ b/Makefile +@@ -44,7 +44,7 @@ WAV49 = -DWAV49 + # CCFLAGS = -c -O + + CC = gcc -ansi -pedantic +-CCFLAGS = -c -O2 -DNeedFunctionPrototypes=1 -Wall -Wno-comment ++CCFLAGS = -c -O2 -fPIC -DNeedFunctionPrototypes=1 -Wall -Wno-comment + + LD = $(CC) + +@@ -96,11 +96,11 @@ TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/man/man1 + # Other tools + + SHELL = /bin/sh +-LN = ln ++LN = ln -s -f + BASENAME = basename + AR = ar + ARFLAGS = cr +-RMFLAGS = ++RMFLAGS = -f + FIND = find + COMPRESS = compress + COMPRESSFLAGS = +@@ -139,7 +139,7 @@ LFLAGS = $(LDFLAGS) $(LDINC) + + # Targets + +-LIBGSM = $(LIB)/libgsm.a ++LIBGSMSO = $(LIB)/libgsm.so + + TOAST = $(BIN)/toast + UNTOAST = $(BIN)/untoast +@@ -257,7 +257,7 @@ STUFF = ChangeLog \ + # Install targets + + GSM_INSTALL_TARGETS = \ +- $(GSM_INSTALL_LIB)/libgsm.a \ ++ $(GSM_INSTALL_LIB)/libgsm.so \ + $(GSM_INSTALL_INC)/gsm.h \ + $(GSM_INSTALL_MAN)/gsm.3 \ + $(GSM_INSTALL_MAN)/gsm_explode.3 \ +@@ -279,7 +279,7 @@ TOAST_INSTALL_TARGETS = \ + + # Target rules + +-all: $(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST) ++all: $(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST) + @-echo $(ROOT): Done. + + tst: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result +@@ -299,24 +299,23 @@ install: toastinstall gsminstall + + # The basic API: libgsm + +-$(LIBGSM): $(LIB) $(GSM_OBJECTS) +- -rm $(RMFLAGS) $(LIBGSM) +- $(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS) +- $(RANLIB) $(LIBGSM) +- ++$(LIBGSMSO): $(LIB) $(GSM_OBJECTS) ++ $(LD) -shared -Wl,-soname,libgsm.so.1 -o $@.1.0.13 $(GSM_OBJECTS) ++ $(LN) libgsm.so.1.0.13 $(LIBGSMSO).1 ++ $(LN) libgsm.so.1.0.13 $(LIBGSMSO) + + # Toast, Untoast and Tcat -- the compress-like frontends to gsm. + +-$(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSM) +- $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB) ++$(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSMSO) ++ $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB) + + $(UNTOAST): $(BIN) $(TOAST) + -rm $(RMFLAGS) $(UNTOAST) +- $(LN) $(TOAST) $(UNTOAST) ++ $(LN) toast $(UNTOAST) + + $(TCAT): $(BIN) $(TOAST) + -rm $(RMFLAGS) $(TCAT) +- $(LN) $(TOAST) $(TCAT) ++ $(LN) toast $(TCAT) + + + # The local bin and lib directories +@@ -351,53 +350,54 @@ toastuninstall: + fi + + $(TOAST_INSTALL_BIN)/toast: $(TOAST) +- -rm $@ ++ -rm $(RMFLAGS) $@ + cp $(TOAST) $@ + chmod 755 $@ + + $(TOAST_INSTALL_BIN)/untoast: $(TOAST_INSTALL_BIN)/toast +- -rm $@ +- ln $? $@ ++ -rm $(RMFLAGS) $@ ++ $(LN) toast $@ + + $(TOAST_INSTALL_BIN)/tcat: $(TOAST_INSTALL_BIN)/toast +- -rm $@ +- ln $? $@ ++ -rm $(RMFLAGS) $@ ++ $(LN) toast $@ + + $(TOAST_INSTALL_MAN)/toast.1: $(MAN)/toast.1 +- -rm $@ ++ -rm $(RMFLAGS) $@ + cp $? $@ + chmod 444 $@ + + $(GSM_INSTALL_MAN)/gsm.3: $(MAN)/gsm.3 +- -rm $@ ++ -rm $(RMFLAGS) $@ + cp $? $@ + chmod 444 $@ + + $(GSM_INSTALL_MAN)/gsm_option.3: $(MAN)/gsm_option.3 +- -rm $@ ++ -rm $(RMFLAGS) $@ + cp $? $@ + chmod 444 $@ + + $(GSM_INSTALL_MAN)/gsm_explode.3: $(MAN)/gsm_explode.3 +- -rm $@ ++ -rm $(RMFLAGS) $@ + cp $? $@ + chmod 444 $@ + + $(GSM_INSTALL_MAN)/gsm_print.3: $(MAN)/gsm_print.3 +- -rm $@ ++ -rm $(RMFLAGS) $@ + cp $? $@ + chmod 444 $@ + + $(GSM_INSTALL_INC)/gsm.h: $(INC)/gsm.h +- -rm $@ +- cp $? $@ +- chmod 444 $@ +- +-$(GSM_INSTALL_LIB)/libgsm.a: $(LIBGSM) +- -rm $@ ++ -rm $(RMFLAGS) $@ + cp $? $@ + chmod 444 $@ + ++$(GSM_INSTALL_LIB)/libgsm.so: $(LIBGSMSO) ++ -rm $(RMFLAGS) $@ $@.1 $@.1.0.13 ++ cp $?.1.0.13 $@.1.0.13 ++ chmod 755 $@.1.0.13 ++ $(LN) libgsm.so.1.0.13 $@ ++ $(LN) libgsm.so.1.0.13 $@.1 + + # Distribution + +@@ -425,7 +425,7 @@ semi-clean: + -print | xargs rm $(RMFLAGS) + + clean: semi-clean +- -rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add \ ++ -rm $(RMFLAGS) $(LIBGSMSO)* $(ADDTST)/add \ + $(TOAST) $(TCAT) $(UNTOAST) \ + $(ROOT)/gsm-1.0.tar.Z + +@@ -473,22 +473,22 @@ $(ADDTST)/add: $(ADDTST)/add_test.o + $(TST)/test-result: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/run + ( cd $(TST); ./run ) + +-$(TST)/lin2txt: $(TST)/lin2txt.o $(LIBGSM) ++$(TST)/lin2txt: $(TST)/lin2txt.o $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TST)/lin2txt \ +- $(TST)/lin2txt.o $(LIBGSM) $(LDLIB) ++ $(TST)/lin2txt.o $(LIBGSMSO) $(LDLIB) + +-$(TST)/lin2cod: $(TST)/lin2cod.o $(LIBGSM) ++$(TST)/lin2cod: $(TST)/lin2cod.o $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TST)/lin2cod \ +- $(TST)/lin2cod.o $(LIBGSM) $(LDLIB) ++ $(TST)/lin2cod.o $(LIBGSMSO) $(LDLIB) + +-$(TST)/gsm2cod: $(TST)/gsm2cod.o $(LIBGSM) ++$(TST)/gsm2cod: $(TST)/gsm2cod.o $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TST)/gsm2cod \ +- $(TST)/gsm2cod.o $(LIBGSM) $(LDLIB) ++ $(TST)/gsm2cod.o $(LIBGSMSO) $(LDLIB) + +-$(TST)/cod2txt: $(TST)/cod2txt.o $(LIBGSM) ++$(TST)/cod2txt: $(TST)/cod2txt.o $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TST)/cod2txt \ +- $(TST)/cod2txt.o $(LIBGSM) $(LDLIB) ++ $(TST)/cod2txt.o $(LIBGSMSO) $(LDLIB) + +-$(TST)/cod2lin: $(TST)/cod2lin.o $(LIBGSM) ++$(TST)/cod2lin: $(TST)/cod2lin.o $(LIBGSMSO) + $(LD) $(LFLAGS) -o $(TST)/cod2lin \ +- $(TST)/cod2lin.o $(LIBGSM) $(LDLIB) ++ $(TST)/cod2lin.o $(LIBGSMSO) $(LDLIB) +-- +2.13.3 + diff --git a/buildroot/package/libgsm/Config.in b/buildroot/package/libgsm/Config.in new file mode 100644 index 0000000..c6edefe --- /dev/null +++ b/buildroot/package/libgsm/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBGSM + bool "libgsm" + depends on !BR2_STATIC_LIBS + help + Shared libraries for GSM 06.10 lossy speech compression. + + http://www.quut.com/gsm + +comment "libgsm needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libgsm/libgsm.hash b/buildroot/package/libgsm/libgsm.hash new file mode 100644 index 0000000..a73359d --- /dev/null +++ b/buildroot/package/libgsm/libgsm.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 855a57d1694941ddf3c73cb79b8d0b3891e9c9e7870b4981613b734e1ad07601 gsm-1.0.17.tar.gz diff --git a/buildroot/package/libgsm/libgsm.mk b/buildroot/package/libgsm/libgsm.mk new file mode 100644 index 0000000..0add45c --- /dev/null +++ b/buildroot/package/libgsm/libgsm.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# libgsm +# +################################################################################ + +LIBGSM_VERSION = 1.0.17 +LIBGSM_SOURCE = gsm-$(LIBGSM_VERSION).tar.gz +LIBGSM_SITE = http://www.quut.com/gsm +LIBGSM_LICENSE = gsm +LIBGSM_LICENSE_FILES = COPYRIGHT +LIBGSM_INSTALL_STAGING = YES + +define LIBGSM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC=$(TARGET_CC) -C $(@D) +endef + +# Install targets are not safe for parallel jobs. However, since there's +# just only a bunch of files to install, just do it manually. Note that, +# even though the package version is '1.0.16', the solib is generated as +# '1.0.13' and its SONAME is just '1'. +# +# For staging, we install all the .so symlinks, and the header. +define LIBGSM_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/inc/gsm.h $(STAGING_DIR)/usr/include/gsm.h + $(INSTALL) -D -m 0644 $(@D)/lib/libgsm.so.1.0.13 $(STAGING_DIR)/usr/lib/libgsm.so.1.0.13 + ln -sf libgsm.so.1.0.13 $(STAGING_DIR)/usr/lib/libgsm.so.1 + ln -sf libgsm.so.1.0.13 $(STAGING_DIR)/usr/lib/libgsm.so +endef + +# Install targets are not safe for parallel jobs. However, since there's +# just only a bunch of files to install, just do it manually. Note that, +# even though the package version is '1.0.16', the solib is versioned as +# '1.0.13' and its SONAME is just versioned with '1'. +# +# For target, we just need the library to be installed as its SONAME, and +# the programs. +define LIBGSM_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/lib/libgsm.so.1.0.13 $(TARGET_DIR)/usr/lib/libgsm.so.1 + $(INSTALL) -D -m 0755 $(@D)/bin/toast $(TARGET_DIR)/usr/bin/toast + $(INSTALL) -D -m 0755 $(@D)/bin/tcat $(TARGET_DIR)/usr/bin/tcat + $(INSTALL) -D -m 0755 $(@D)/bin/untoast $(TARGET_DIR)/usr/bin/untoast +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libgta/Config.in b/buildroot/package/libgta/Config.in new file mode 100644 index 0000000..894dced --- /dev/null +++ b/buildroot/package/libgta/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBGTA + bool "libgta" + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_XZ + help + Libgta is a portable library that implements the Generic + Tagged Array (GTA) file format. + + http://gta.nongnu.org diff --git a/buildroot/package/libgta/libgta.hash b/buildroot/package/libgta/libgta.hash new file mode 100644 index 0000000..d5fceb4 --- /dev/null +++ b/buildroot/package/libgta/libgta.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1d2ff713955eee28310de082a8fd8e236403c27dee3716ba1238c56e6643e4fb libgta-1.0.8.tar.xz +sha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89 COPYING diff --git a/buildroot/package/libgta/libgta.mk b/buildroot/package/libgta/libgta.mk new file mode 100644 index 0000000..1189fee --- /dev/null +++ b/buildroot/package/libgta/libgta.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libgta +# +################################################################################ + +LIBGTA_VERSION = 1.0.8 +LIBGTA_SITE = http://download.savannah.nongnu.org/releases/gta +LIBGTA_SOURCE = libgta-$(LIBGTA_VERSION).tar.xz +LIBGTA_INSTALL_STAGING = YES +LIBGTA_DEPENDENCIES = host-pkgconf bzip2 xz zlib +LIBGTA_LICENSE = LGPL-2.1+ +LIBGTA_LICENSE_FILES = COPYING + +LIBGTA_CONF_OPTS += -DGTA_BUILD_DOCUMENTATION=OFF + +ifeq ($(BR2_STATIC_LIBS),) +LIBGTA_CONF_OPTS += -DGTA_BUILD_SHARED_LIB=ON +else +LIBGTA_CONF_OPTS += -DGTA_BUILD_SHARED_LIB=OFF +endif + +ifeq ($(BR2_SHARED_LIBS),) +LIBGTA_CONF_OPTS += -DGTA_BUILD_STATIC_LIB=ON +else +LIBGTA_CONF_OPTS += -DGTA_BUILD_STATIC_LIB=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libgtk2/0001-reduce-dependencies.patch b/buildroot/package/libgtk2/0001-reduce-dependencies.patch new file mode 100644 index 0000000..3250cae --- /dev/null +++ b/buildroot/package/libgtk2/0001-reduce-dependencies.patch @@ -0,0 +1,117 @@ +Hack the configure.in file to add a "none" gdktarget which removes +dependencies on graphic backends such as X.org or DirectFB. Gtk does +not fully build in this mode, but it builds sufficiently to build the +host tools that are needed to build the target Gtk. + +Changes: + Ported to 2.24.18 + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Spenser Gilliland +--- +Index: libgtk2-2.24.18/configure.ac +=================================================================== +--- libgtk2-2.24.18.orig/configure.ac 2013-05-13 07:02:44.000000000 -0500 ++++ libgtk2-2.24.18/configure.ac 2013-05-27 02:12:09.947030335 -0500 +@@ -258,12 +258,12 @@ + gdktarget=x11 + fi + +-AC_ARG_WITH(gdktarget, [ --with-gdktarget=[[x11/win32/quartz/directfb]] select non-default GDK target], ++AC_ARG_WITH(gdktarget, [ --with-gdktarget=[[x11/win32/quartz/directfb/none]] select non-default GDK target], + gdktarget=$with_gdktarget) + + AC_SUBST(gdktarget) + case $gdktarget in +- x11|win32|quartz|directfb) ;; ++ x11|win32|quartz|directfb|none) ;; + *) AC_MSG_ERROR([Invalid target for GDK: use x11, quartz, directfb or win32.]);; + esac + +@@ -372,11 +373,15 @@ + ## annoying to construct + PKG_CHECK_MODULES(BASE_DEPENDENCIES, + [glib-2.0 >= glib_required_version dnl +- atk >= atk_required_version dnl +- pango >= pango_required_version dnl +- cairo >= cairo_required_version dnl + gdk-pixbuf-2.0 >= gdk_pixbuf_required_version]) + ++if test "x$gdktarget" != "xnone"; then ++ PKG_CHECK_MODULES(BASE_DEPENDENCIES, ++ [atk >= atk_required_version dnl ++ pango >= pango_required_version dnl ++ cairo >= cairo_required_version]) ++fi ++ + ## In addition to checking that cairo is present, we also need to + ## check that the correct cairo backend is there. E.g. if the GDK + ## target is win32 we need the cairo-win32 backend and so on. +@@ -387,8 +392,11 @@ + if test "x$cairo_backend" = "xx11"; then + cairo_backend=xlib + fi +-PKG_CHECK_MODULES(CAIRO_BACKEND, +- [cairo-$cairo_backend >= cairo_required_version]) ++ ++if test "x$gdktarget" != "xnone"; then ++ PKG_CHECK_MODULES(CAIRO_BACKEND, ++ [cairo-$cairo_backend >= cairo_required_version]) ++fi + + PKG_CHECK_MODULES(GMODULE, [gmodule-2.0]) + +@@ -1279,6 +1287,7 @@ + AM_CONDITIONAL(USE_DIRECTFB, false) + fi + ++if test "x$gdktarget" != "xnone"; then + + # Check for Pango flags + +@@ -1324,6 +1333,8 @@ + GDK_PACKAGES="$PANGO_PACKAGES gio-2.0 gdk-pixbuf-2.0 cairo-$cairo_backend" + fi + ++fi # gdktarget != none ++ + GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES` $MATH_LIB" + GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES` $GDK_EXTRA_CFLAGS" + # +@@ -1341,6 +1352,7 @@ + AC_SUBST(GDK_DEP_LIBS) + AC_SUBST(GDK_DEP_CFLAGS) + ++if test "x$gdktarget" != "xnone"; then + + ######################################## + # Check for Accessibility Toolkit flags +@@ -1372,6 +1384,10 @@ + fi + + GTK_PACKAGES="atk cairo gdk-pixbuf-2.0 gio-2.0" ++else # gdktarget != none ++GTK_PACKAGES="gdk-pixbuf-2.0" ++fi # gdktarget != none ++ + if test "x$gdktarget" = "xx11"; then + GTK_PACKAGES="$GTK_PACKAGES pangoft2" + fi +@@ -1533,6 +1549,8 @@ + gtk_save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $GTK_DEP_CFLAGS $GDK_DEP_CFLAGS" + ++if test "x$gdktarget" != "xnone"; then ++ + AC_CHECK_HEADER(cairo-pdf.h,,AC_MSG_ERROR([ + *** Can't find cairo-pdf.h. You must build Cairo with the pdf + *** backend enabled.])) +@@ -1547,6 +1565,8 @@ + *** svg backend enabled.])) + fi + ++fi # gdktarget != none ++ + CPPFLAGS="$gtk_save_cppflags" + + diff --git a/buildroot/package/libgtk2/Config.in b/buildroot/package/libgtk2/Config.in new file mode 100644 index 0000000..aa297d7 --- /dev/null +++ b/buildroot/package/libgtk2/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_LIBGTK2 + bool "libgtk2" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + select BR2_PACKAGE_ATK + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PS + select BR2_PACKAGE_CAIRO_PDF + select BR2_PACKAGE_CAIRO_SVG + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_GDK_PIXBUF + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRENDER + help + The GTK+ version 2 graphical user interface library + + http://www.gtk.org/ + +if BR2_PACKAGE_LIBGTK2 + +config BR2_PACKAGE_LIBGTK2_DEMO + bool "Install libgtk2 demo program" + help + The GTK+ source base contains a gtk-demo program. This + option allows to install this program to the target. + +endif + +comment "libgtk2 needs a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_XORG7 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libgtk2/libgtk2.hash b/buildroot/package/libgtk2/libgtk2.hash new file mode 100644 index 0000000..3388c5c --- /dev/null +++ b/buildroot/package/libgtk2/libgtk2.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.31.sha256sum +sha256 68c1922732c7efc08df4656a5366dcc3afdc8791513400dac276009b40954658 gtk+-2.24.31.tar.xz diff --git a/buildroot/package/libgtk2/libgtk2.mk b/buildroot/package/libgtk2/libgtk2.mk new file mode 100644 index 0000000..0b26d72 --- /dev/null +++ b/buildroot/package/libgtk2/libgtk2.mk @@ -0,0 +1,127 @@ +################################################################################ +# +# libgtk2 +# +################################################################################ + +LIBGTK2_VERSION_MAJOR = 2.24 +LIBGTK2_VERSION = $(LIBGTK2_VERSION_MAJOR).31 +LIBGTK2_SOURCE = gtk+-$(LIBGTK2_VERSION).tar.xz +LIBGTK2_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk+/$(LIBGTK2_VERSION_MAJOR) +LIBGTK2_INSTALL_STAGING = YES +LIBGTK2_LICENSE = LGPL-2.0+ +LIBGTK2_LICENSE_FILES = COPYING +# For 0001-reduce-dependencies.patch +LIBGTK2_AUTORECONF = YES + +LIBGTK2_CONF_ENV = \ + ac_cv_path_GTK_UPDATE_ICON_CACHE=$(HOST_DIR)/bin/gtk-update-icon-cache \ + ac_cv_path_GDK_PIXBUF_CSOURCE=$(HOST_DIR)/bin/gdk-pixbuf-csource \ + DB2HTML=false + +LIBGTK2_CONF_OPTS = --disable-glibtest --enable-explicit-deps=no + +LIBGTK2_DEPENDENCIES = host-pkgconf host-libgtk2 libglib2 cairo pango atk gdk-pixbuf + +# Xorg dependencies +LIBGTK2_CONF_OPTS += \ + --with-x \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib \ + --with-gdktarget=x11 +LIBGTK2_DEPENDENCIES += \ + fontconfig xlib_libX11 xlib_libXext xlib_libXrender + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +LIBGTK2_CONF_OPTS += --enable-xinerama +LIBGTK2_DEPENDENCIES += xlib_libXinerama +else +LIBGTK2_CONF_OPTS += --disable-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +LIBGTK2_CONF_OPTS += --with-xinput=yes +LIBGTK2_DEPENDENCIES += xlib_libXi +else +LIBGTK2_CONF_OPTS += --with-xinput=no +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +LIBGTK2_DEPENDENCIES += xlib_libXrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +LIBGTK2_DEPENDENCIES += xlib_libXcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +LIBGTK2_DEPENDENCIES += xlib_libXfixes +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +LIBGTK2_DEPENDENCIES += xlib_libXcomposite +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) +LIBGTK2_DEPENDENCIES += xlib_libXdamage +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LIBGTK2_DEPENDENCIES += libpng +else +LIBGTK2_CONF_OPTS += --without-libpng +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBGTK2_DEPENDENCIES += jpeg +else +LIBGTK2_CONF_OPTS += --without-libjpeg +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +LIBGTK2_DEPENDENCIES += tiff +else +LIBGTK2_CONF_OPTS += --without-libtiff +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +LIBGTK2_CONF_OPTS += CUPS_CONFIG="$(STAGING_DIR)/usr/bin/cups-config" +LIBGTK2_DEPENDENCIES += cups +else +LIBGTK2_CONF_OPTS += --disable-cups +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2_DEMO),) +define LIBGTK2_POST_INSTALL_TWEAKS + rm -rf $(TARGET_DIR)/usr/share/gtk-2.0/demo $(TARGET_DIR)/usr/bin/gtk-demo +endef + +LIBGTK2_POST_INSTALL_TARGET_HOOKS += LIBGTK2_POST_INSTALL_TWEAKS +endif + +# We do not build a full version of libgtk2 for the host, because that +# requires compiling Cairo, Pango, ATK and X.org for the +# host. Therefore, we patch it to remove dependencies, and we hack the +# build to only build gdk-pixbuf-from-source and +# gtk-update-icon-cache, which are the host tools needed to build Gtk +# for the target. + +HOST_LIBGTK2_DEPENDENCIES = host-libglib2 host-libpng host-gdk-pixbuf +HOST_LIBGTK2_CONF_OPTS = \ + --disable-static \ + --disable-glibtest \ + --without-libtiff \ + --without-libjpeg \ + --with-gdktarget=none \ + --disable-cups + +define HOST_LIBGTK2_BUILD_CMDS + $(HOST_MAKE_ENV) make -C $(@D)/gtk gtk-update-icon-cache +endef + +define HOST_LIBGTK2_INSTALL_CMDS + cp $(@D)/gtk/gtk-update-icon-cache $(HOST_DIR)/bin +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libgtk3/0001-no-gtk-doc.patch b/buildroot/package/libgtk3/0001-no-gtk-doc.patch new file mode 100644 index 0000000..6dede73 --- /dev/null +++ b/buildroot/package/libgtk3/0001-no-gtk-doc.patch @@ -0,0 +1,25 @@ +Same patch as for systemd in commit +http://git.buildroot.net/buildroot/commit/?id=7144f2f04b70553 + +Fix deactivation of gtk-doc + +The tarball contains the Makefile for building documentation with gtk-doc, +Unfortunately the AM_CONDITIONAL variable is not the correct one, which +results in an error when running autoreconf. + +This patch fixes this issue. + +Signed-off-by: Eric Le Bihan +Signed-off-by: Hadrien Boutteville + +--- a/gtk-doc.make ++++ b/gtk-doc.make +@@ -267,7 +267,7 @@ + # + # Require gtk-doc when making dist + # +-if HAVE_GTK_DOC ++if ENABLE_GTK_DOC + dist-check-gtkdoc: docs + else + dist-check-gtkdoc: diff --git a/buildroot/package/libgtk3/0002-fix-introspection-check.patch b/buildroot/package/libgtk3/0002-fix-introspection-check.patch new file mode 100644 index 0000000..4c2806d --- /dev/null +++ b/buildroot/package/libgtk3/0002-fix-introspection-check.patch @@ -0,0 +1,28 @@ +Fix HAVE_INTROSPECTION does not appear in AM_CONDITIONAL + +During autoreconf GOBJECT_INTROSPECTION_CHECK could not be resolved because we +don't have introspection which provides its custom m4 macro. Reconfigure fails +with: + +gdk/Makefile.am:196: error: HAVE_INTROSPECTION does not appear in AM_CONDITIONAL +gtk/Makefile.am:1347: error: HAVE_INTROSPECTION does not appear in AM_CONDITIONAL + +We avoid to add a copy of introspection.m4 in the m4 directory of libgtk3 by +adding a check, as performed in Systemd. + +Signed-off-by: Hadrien Boutteville + +--- a/configure.ac ++++ b/configure.ac +@@ -1621,7 +1621,10 @@ + # GObject introspection + ################################################## + +-GOBJECT_INTROSPECTION_CHECK(introspection_required_version) ++m4_ifdef([GOBJECT_INTROSPECTION_CHECK], ++ [GOBJECT_INTROSPECTION_CHECK(introspection_required_version)], ++ [AM_CONDITIONAL([HAVE_INTROSPECTION], [false]) ++ enable_introspection=no]) + + ################################################## + # colord module diff --git a/buildroot/package/libgtk3/0003-disable-atk-bridge.patch b/buildroot/package/libgtk3/0003-disable-atk-bridge.patch new file mode 100644 index 0000000..c92174f --- /dev/null +++ b/buildroot/package/libgtk3/0003-disable-atk-bridge.patch @@ -0,0 +1,45 @@ +Remove atk-bridge support. + +atk-bridge doesn't seem useful for now in Buildroot and requires to +add two new packages just for it: at-spi2-core and at-spi2-atk. + +Signed-off-by: Hadrien Boutteville + +--- a/configure.ac ++++ b/configure.ac +@@ -1349,11 +1349,7 @@ + # Check for Accessibility Toolkit flags + ######################################## + +-if test x$enable_x11_backend = xyes; then +- ATK_PACKAGES="atk atk-bridge-2.0" +-else +- ATK_PACKAGES="atk" +-fi ++ATK_PACKAGES="atk" + + PKG_CHECK_MODULES(ATK, $ATK_PACKAGES) + +--- a/gtk/a11y/gtkaccessibility.c ++++ b/gtk/a11y/gtkaccessibility.c +@@ -37,10 +37,6 @@ + #include + #include + +-#ifdef GDK_WINDOWING_X11 +-#include +-#endif +- + static gboolean gail_focus_watcher (GSignalInvocationHint *ihint, + guint n_param_values, + const GValue *param_values, +@@ -987,9 +983,5 @@ + _gtk_accessibility_override_atk_util (); + do_window_event_initialization (); + +-#ifdef GDK_WINDOWING_X11 +- atk_bridge_adaptor_init (NULL, NULL); +-#endif +- + atk_misc_instance = g_object_new (GTK_TYPE_MISC_IMPL, NULL); + } diff --git a/buildroot/package/libgtk3/0004-Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch b/buildroot/package/libgtk3/0004-Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch new file mode 100644 index 0000000..cea4259 --- /dev/null +++ b/buildroot/package/libgtk3/0004-Remove-Gdk-dependency-from-gtk-encode-symbolic-svg.patch @@ -0,0 +1,105 @@ +From 4d09ff324419fe4e671233044e424378da53969b Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen +Date: Tue, 9 Jun 2015 14:20:30 +0300 +Subject: [PATCH] Remove Gdk-dependency from gtk-encode-symbolic-svg + +Building gtk-encode-symbolic-svg without building Gdk is useful +as only the icon tools are needed on the native build: this makes +native build much faster and requires much less dependencies. + +Upstream-Status: Pending + +Signed-off-by: Jussi Kukkonen +Signed-off-by: Gustavo Zacarias +--- +Patch status: taken from yocto, upstream pending + + gtk/encodesymbolic.c | 36 ++++++++++-------------------------- + 1 file changed, 10 insertions(+), 26 deletions(-) + +diff --git a/gtk/encodesymbolic.c b/gtk/encodesymbolic.c +index 9f7d015..1f07563 100644 +--- a/gtk/encodesymbolic.c ++++ b/gtk/encodesymbolic.c +@@ -19,7 +19,6 @@ + + #include + #include +-#include + #include + + #ifdef HAVE_UNISTD_H +@@ -43,30 +42,18 @@ static GdkPixbuf * + load_symbolic_svg (char *file_data, gsize file_len, + int width, + int height, +- const GdkRGBA *fg, +- const GdkRGBA *success_color, +- const GdkRGBA *warning_color, +- const GdkRGBA *error_color, ++ const char *css_fg, ++ const char *css_success, ++ const char *css_warning, ++ const char *css_error, + GError **error) + { + GInputStream *stream; + GdkPixbuf *pixbuf; +- gchar *css_fg; +- gchar *css_success; +- gchar *css_warning; +- gchar *css_error; + gchar *data; + gchar *svg_width, *svg_height; + gchar *escaped_file_data; + +- css_fg = gdk_rgba_to_string (fg); +- +- css_success = css_warning = css_error = NULL; +- +- css_warning = gdk_rgba_to_string (warning_color); +- css_error = gdk_rgba_to_string (error_color); +- css_success = gdk_rgba_to_string (success_color); +- + /* Fetch size from the original icon */ + stream = g_memory_input_stream_new_from_data (file_data, file_len, NULL); + pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, error); +@@ -105,10 +92,6 @@ load_symbolic_svg (char *file_data, gsize file_len, + "", + NULL); + g_free (escaped_file_data); +- g_free (css_fg); +- g_free (css_warning); +- g_free (css_error); +- g_free (css_success); + g_free (svg_width); + g_free (svg_height); + +@@ -167,7 +150,8 @@ make_symbolic_pixbuf (char *file, + GError **error) + + { +- GdkRGBA r = { 1,0,0,1}, g = {0,1,0,1}; ++ const char r[] = "rgba(255,0,0,1)"; ++ const char g[] = "rgba(0,255,0,1)"; + GdkPixbuf *loaded; + GdkPixbuf *pixbuf; + int plane; +@@ -196,10 +180,10 @@ make_symbolic_pixbuf (char *file, + * the "rest", as all color fractions should add up to 1. + */ + loaded = load_symbolic_svg (file_data, file_len, width, height, +- &g, +- plane == 0 ? &r : &g, +- plane == 1 ? &r : &g, +- plane == 2 ? &r : &g, ++ g, ++ plane == 0 ? r : g, ++ plane == 1 ? r : g, ++ plane == 2 ? r : g, + error); + if (loaded == NULL) + return NULL; +-- +2.1.4 + diff --git a/buildroot/package/libgtk3/Config.in b/buildroot/package/libgtk3/Config.in new file mode 100644 index 0000000..12e6470 --- /dev/null +++ b/buildroot/package/libgtk3/Config.in @@ -0,0 +1,106 @@ +comment "libgtk3 needs a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS + +comment "libgtk3 needs an OpenGL or an OpenGL-EGL/wayland backend" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_HAS_LIBEGL_WAYLAND && \ + !BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_LIBGTK3 + bool "libgtk3" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND || \ + BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_ATK + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PS + select BR2_PACKAGE_CAIRO_PDF + select BR2_PACKAGE_CAIRO_SVG + select BR2_PACKAGE_LIBEPOXY + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_GDK_PIXBUF + # At least one backend is required + select BR2_PACKAGE_LIBGTK3_BROADWAY if \ + !(BR2_PACKAGE_LIBGTK3_X11 || BR2_PACKAGE_LIBGTK3_WAYLAND) + help + The GTK+ version 3 graphical user interface library + + http://www.gtk.org/ + +if BR2_PACKAGE_LIBGTK3 + +config BR2_PACKAGE_LIBGTK3_BROADWAY + bool "Broadway GDK backend" + default y + help + This enables the Broadway backend for GDK, which provides + support for displaying GTK+ applications in a web browser, + using HTML5 and web sockets. + + For example, to run gtk3-demo on a target which IP address is + 192.168.0.1 and use it from a web browser, execute the + following commands: + + $ broadwayd -a 192.168.0.1 -p 8080 :2 & + $ export GDK_BACKEND=broadway + $ export BROADWAY_DISPLAY=:2 + $ gtk3-demo + + Then open a web browser at address http://192.168.0.1:8080. + Javascript and web sockets should be enabled. + +comment "Wayland GDK backend needs an OpenGL EGL backend provided by mesa3d w/ headers >= 3.17" + depends on !BR2_PACKAGE_MESA3D_OPENGL_EGL || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + +config BR2_PACKAGE_LIBGTK3_WAYLAND + bool "Wayland GDK backend" + default y + depends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_LIBXKBCOMMON + help + This enables the Wayland backend for GDK. + +comment "X11 GDK backend needs an OpenGL provider" + depends on !BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_LIBGTK3_X11 + bool "X11 GDK backend" + default y + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXI + help + This enables the X11 backend for GDK. + +config BR2_PACKAGE_LIBGTK3_DEMO + bool "Install libgtk3 demo program" + select BR2_PACKAGE_SHARED_MIME_INFO + select BR2_PACKAGE_HICOLOR_ICON_THEME + help + The GTK+ source base contains a demo program. This + option allows to install this program to the target. + +config BR2_PACKAGE_LIBGTK3_TESTS + bool "Install libgtk3 tests" + help + The GTK+ source base contains tests. This option + allows to install them to the target. + +endif diff --git a/buildroot/package/libgtk3/libgtk3.hash b/buildroot/package/libgtk3/libgtk3.hash new file mode 100644 index 0000000..0f259e9 --- /dev/null +++ b/buildroot/package/libgtk3/libgtk3.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/gtk+/3.22/gtk+-3.22.15.sha256sum +sha256 c8a012c2a99132629ab043f764a2b7cb6388483a015cd15c7a4288bec3590fdb gtk+-3.22.15.tar.xz diff --git a/buildroot/package/libgtk3/libgtk3.mk b/buildroot/package/libgtk3/libgtk3.mk new file mode 100644 index 0000000..b4a8b8c --- /dev/null +++ b/buildroot/package/libgtk3/libgtk3.mk @@ -0,0 +1,190 @@ +################################################################################ +# +# libgtk3 +# +################################################################################ + +LIBGTK3_VERSION_MAJOR = 3.22 +LIBGTK3_VERSION = $(LIBGTK3_VERSION_MAJOR).15 +LIBGTK3_SOURCE = gtk+-$(LIBGTK3_VERSION).tar.xz +LIBGTK3_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk+/$(LIBGTK3_VERSION_MAJOR) +LIBGTK3_LICENSE = LGPL-2.0+ +LIBGTK3_LICENSE_FILES = COPYING +LIBGTK3_INSTALL_STAGING = YES +LIBGTK3_AUTORECONF = YES + +LIBGTK3_CONF_ENV = \ + ac_cv_path_GTK_UPDATE_ICON_CACHE=$(HOST_DIR)/bin/gtk-update-icon-cache \ + ac_cv_path_GDK_PIXBUF_CSOURCE=$(HOST_DIR)/bin/gdk-pixbuf-csource \ + PKG_CONFIG_FOR_BUILD=$(HOST_DIR)/bin/pkgconf + +LIBGTK3_CONF_OPTS = \ + --disable-glibtest \ + --enable-explicit-deps=no + +# Override pkg-config pkgdatadir variable, it needs the prefix +LIBGTK3_MAKE_OPTS = \ + WAYLAND_PROTOCOLS_DATADIR=$(STAGING_DIR)/usr/share/wayland-protocols + +LIBGTK3_DEPENDENCIES = host-pkgconf host-libgtk3 atk libglib2 cairo pango gdk-pixbuf libepoxy + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +LIBGTK3_DEPENDENCIES += fontconfig xlib_libX11 xlib_libXext xlib_libXrender xlib_libXi + +LIBGTK3_CONF_OPTS += \ + --enable-x11-backend \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib +else +LIBGTK3_CONF_OPTS += --disable-x11-backend +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y) +LIBGTK3_DEPENDENCIES += wayland wayland-protocols libxkbcommon +LIBGTK3_CONF_OPTS += --enable-wayland-backend +else +LIBGTK3_CONF_OPTS += --disable-wayland-backend +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_BROADWAY),y) +LIBGTK3_CONF_OPTS += --enable-broadway-backend +else +LIBGTK3_CONF_OPTS += --disable-broadway-backend +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +LIBGTK3_CONF_OPTS += --enable-xinerama +LIBGTK3_DEPENDENCIES += xlib_libXinerama +else +LIBGTK3_CONF_OPTS += --disable-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +LIBGTK3_CONF_OPTS += --enable-xrandr +LIBGTK3_DEPENDENCIES += xlib_libXrandr +else +LIBGTK3_CONF_OPTS += --disable-xrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +LIBGTK3_DEPENDENCIES += xlib_libXcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +LIBGTK3_CONF_OPTS += --enable-xfixes +LIBGTK3_DEPENDENCIES += xlib_libXfixes +else +LIBGTK3_CONF_OPTS += --disable-xfixes +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +LIBGTK3_CONF_OPTS += --enable-xcomposite +LIBGTK3_DEPENDENCIES += xlib_libXcomposite +else +LIBGTK3_CONF_OPTS += --disable-xcomposite +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) +LIBGTK3_CONF_OPTS += --enable-xdamage +LIBGTK3_DEPENDENCIES += xlib_libXdamage +else +LIBGTK3_CONF_OPTS += --disable-xdamage +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y) +LIBGTK3_CONF_OPTS += --enable-xkb +LIBGTK3_DEPENDENCIES += xlib_libxkbfile +else +LIBGTK3_CONF_OPTS += --disable-xkb +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +LIBGTK3_CONF_OPTS += --enable-cups +LIBGTK3_CONF_ENV += ac_cv_path_CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config +LIBGTK3_DEPENDENCIES += cups +else +LIBGTK3_CONF_OPTS += --disable-cups +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_DEMO),y) +LIBGTK3_DEPENDENCIES += hicolor-icon-theme shared-mime-info +else +define LIBGTK3_REMOVE_DEMOS + $(RM) $(TARGET_DIR)/usr/bin/gtk3-demo \ + $(TARGET_DIR)/usr/bin/gtk3-demo-application +endef +LIBGTK3_POST_INSTALL_TARGET_HOOKS += LIBGTK3_REMOVE_DEMOS +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_TESTS),y) +LIBGTK3_CONF_OPTS += --enable-installed-tests +else +LIBGTK3_CONF_OPTS += --disable-installed-tests +endif + +define LIBGTK3_COMPILE_GLIB_SCHEMAS + $(HOST_DIR)/bin/glib-compile-schemas \ + $(TARGET_DIR)/usr/share/glib-2.0/schemas +endef + +LIBGTK3_POST_INSTALL_TARGET_HOOKS += LIBGTK3_COMPILE_GLIB_SCHEMAS + +# gtk+ >= 3.10 can build a native version of gtk-update-icon-cache if +# --enable-gtk2-dependency=no is set when invoking './configure'. +# +# Unfortunately, if the target toolchain is based on uClibc, the macro +# AM_GLIB_GNU_GETTEXT will detect the libintl built for the target and +# will add '-lintl' to the default list of libraries for the linker (used +# for both native and target builds). +# +# But no native version of libintl is available (the functions are +# provided by glibc). So gtk-update-icon-cache will not build. +# +# As a workaround, we build gtk-update-icon-cache on our own, set +# --enable-gtk2-dependency=yes and force './configure' to use our version. + +HOST_LIBGTK3_DEPENDENCIES = \ + host-libglib2 \ + host-libpng \ + host-gdk-pixbuf \ + host-pkgconf \ + host-librsvg + +HOST_LIBGTK3_CFLAGS = \ + `$(HOST_DIR)/bin/pkgconf --cflags --libs gdk-pixbuf-2.0` \ + `$(HOST_DIR)/bin/pkgconf --cflags --libs gio-2.0` + +define HOST_LIBGTK3_CONFIGURE_CMDS + echo "#define GETTEXT_PACKAGE \"gtk30\"" >> $(@D)/gtk/config.h + echo "#define HAVE_UNISTD_H 1" >> $(@D)/gtk/config.h + echo "#define HAVE_FTW_H 1" >> $(@D)/gtk/config.h +endef + +define HOST_LIBGTK3_BUILD_CMDS + $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ + $(@D)/gtk/updateiconcache.c \ + $(HOST_LIBGTK3_CFLAGS) \ + -o $(@D)/gtk/gtk-update-icon-cache + $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ + $(@D)/gtk/encodesymbolic.c \ + $(HOST_LIBGTK3_CFLAGS) \ + -o $(@D)/gtk/gtk-encode-symbolic-svg +endef + +define HOST_LIBGTK3_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/gtk/gtk-update-icon-cache \ + $(HOST_DIR)/bin/gtk-update-icon-cache + $(INSTALL) -D -m 0755 $(@D)/gtk/gtk-encode-symbolic-svg \ + $(HOST_DIR)/bin/gtk-encode-symbolic-svg +endef + +# Create icon-theme.cache for each of the icon directories/themes +# It's not strictly necessary but speeds up lookups +define LIBGTK3_UPDATE_ICON_CACHE + find $(TARGET_DIR)/usr/share/icons -maxdepth 1 -mindepth 1 -type d \ + -exec $(HOST_DIR)/bin/gtk-update-icon-cache {} \; +endef +LIBGTK3_TARGET_FINALIZE_HOOKS += LIBGTK3_UPDATE_ICON_CACHE + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libgudev/Config.in b/buildroot/package/libgudev/Config.in new file mode 100644 index 0000000..21606ac --- /dev/null +++ b/buildroot/package/libgudev/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBGUDEV + bool "libgudev" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_USE_WCHAR # gettext + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBGLIB2 + help + This library provides GObject bindings for libudev. It was + originally part of udev-extras, then udev, then systemd. + It's now a project on its own. Required for building some + programs that use udev, when using systemd. + + https://wiki.gnome.org/Projects/libgudev + +comment "libgudev needs udev /dev handling and a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/libgudev/libgudev.hash b/buildroot/package/libgudev/libgudev.hash new file mode 100644 index 0000000..a6c1d6b --- /dev/null +++ b/buildroot/package/libgudev/libgudev.hash @@ -0,0 +1,2 @@ +# From: http://ftp.gnome.org/pub/GNOME/sources/libgudev/230/libgudev-230.sha256sum +sha256 a2e77faced0c66d7498403adefcc0707105e03db71a2b2abd620025b86347c18 libgudev-230.tar.xz diff --git a/buildroot/package/libgudev/libgudev.mk b/buildroot/package/libgudev/libgudev.mk new file mode 100644 index 0000000..fce710a --- /dev/null +++ b/buildroot/package/libgudev/libgudev.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libgudev +# +################################################################################ + +LIBGUDEV_VERSION = 230 +LIBGUDEV_SOURCE = libgudev-$(LIBGUDEV_VERSION).tar.xz +LIBGUDEV_SITE = http://ftp.gnome.org/pub/GNOME/sources/libgudev/$(LIBGUDEV_VERSION) +LIBGUDEV_INSTALL_STAGING = YES +LIBGUDEV_DEPENDENCIES = host-pkgconf udev libglib2 +LIBGUDEV_LICENSE = LGPL-2.1+ +LIBGUDEV_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libhdhomerun/0001-dont-strip.patch b/buildroot/package/libhdhomerun/0001-dont-strip.patch new file mode 100644 index 0000000..17a9ff4 --- /dev/null +++ b/buildroot/package/libhdhomerun/0001-dont-strip.patch @@ -0,0 +1,18 @@ +Disable strip in Makefile. + +Patch downloaded from Gentoo: +https://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/libhdhomerun/files/dont-strip.patch + +Signed-off-by: Bernd Kuhls + +diff -Nur libhdhomerun/Makefile libhdhomerun.fix/Makefile +--- libhdhomerun/Makefile 2012-08-30 15:46:27.000000000 -0500 ++++ libhdhomerun.fix/Makefile 2013-03-24 14:47:08.740937164 -0500 +@@ -42,7 +42,6 @@ + + hdhomerun_config$(BINEXT) : hdhomerun_config.c $(LIBSRCS) + $(CC) $(CFLAGS) $+ $(LDFLAGS) -o $@ +- $(STRIP) $@ + + libhdhomerun$(LIBEXT) : $(LIBSRCS) + $(CC) $(CFLAGS) -fPIC -DDLL_EXPORT $(SHARED) $+ $(LDFLAGS) -o $@ diff --git a/buildroot/package/libhdhomerun/Config.in b/buildroot/package/libhdhomerun/Config.in new file mode 100644 index 0000000..9425c1b --- /dev/null +++ b/buildroot/package/libhdhomerun/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBHDHOMERUN + bool "libhdhomerun" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + HDHomeRun is a network-attached digital television tuner + box, produced by the company SiliconDust USA, Inc. + + http://www.silicondust.com + +comment "libhdhomerun needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/libhdhomerun/libhdhomerun.hash b/buildroot/package/libhdhomerun/libhdhomerun.hash new file mode 100644 index 0000000..0938889 --- /dev/null +++ b/buildroot/package/libhdhomerun/libhdhomerun.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 0cb392231961fab6c226c69012503e2ebe46ac0f13512689bd37d6cf9ee838a1 libhdhomerun_20170930.tgz diff --git a/buildroot/package/libhdhomerun/libhdhomerun.mk b/buildroot/package/libhdhomerun/libhdhomerun.mk new file mode 100644 index 0000000..10aff88 --- /dev/null +++ b/buildroot/package/libhdhomerun/libhdhomerun.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libhdhomerun +# +################################################################################ + +LIBHDHOMERUN_VERSION = 20170930 +LIBHDHOMERUN_SOURCE = libhdhomerun_$(LIBHDHOMERUN_VERSION).tgz +LIBHDHOMERUN_SITE = http://download.silicondust.com/hdhomerun +LIBHDHOMERUN_LICENSE = LGPL-2.1+ +LIBHDHOMERUN_LICENSE_FILES = LICENSE +LIBHDHOMERUN_INSTALL_STAGING = YES + +define LIBHDHOMERUN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) \ + CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) +endef + +define LIBHDHOMERUN_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0755 $(@D)/libhdhomerun.so \ + $(STAGING_DIR)/usr/lib/libhdhomerun.so + mkdir -p $(STAGING_DIR)/usr/include/libhdhomerun/ + $(INSTALL) -m 0644 $(@D)/*.h \ + $(STAGING_DIR)/usr/include/libhdhomerun/ +endef + +define LIBHDHOMERUN_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/libhdhomerun.so \ + $(TARGET_DIR)/usr/lib/libhdhomerun.so +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libhid/0001-dont-fiddle-with-debug-flags.patch b/buildroot/package/libhid/0001-dont-fiddle-with-debug-flags.patch new file mode 100644 index 0000000..44a1728 --- /dev/null +++ b/buildroot/package/libhid/0001-dont-fiddle-with-debug-flags.patch @@ -0,0 +1,19 @@ +MD_CONF_DEBUGGING changes CFLAGS and CXXFLAGS with a horrible magic so disable +it to prevent compilation errors. + +downloaded from +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/libhid/files/libhid-0.2.16-gentoo.patch?revision=1.1&view=markup + +Signed-off-by: Bernd Kuhls + +diff -uNr libhid-0.2.16.org/configure.ac libhid-0.2.16/configure.ac +--- libhid-0.2.16.org/configure.ac 2007-04-01 22:32:10.000000000 +0200 ++++ libhid-0.2.16/configure.ac 2014-10-19 21:31:00.550091947 +0200 +@@ -78,7 +78,6 @@ + AC_C_BIGENDIAN + AC_C_STRINGIZE + +-MD_CONF_DEBUGGING + MD_CONF_COMPILER + AM_CONDITIONAL(OS_LINUX, test "$MD_OS" = "linux") + AM_CONDITIONAL(OS_BSD, test "$MD_OS" = "bsd") diff --git a/buildroot/package/libhid/0002-no-newline-in-ldflags.patch b/buildroot/package/libhid/0002-no-newline-in-ldflags.patch new file mode 100644 index 0000000..df845ee --- /dev/null +++ b/buildroot/package/libhid/0002-no-newline-in-ldflags.patch @@ -0,0 +1,22 @@ +Fix improper usage of macro that introduces a wrong newline + +The MD_CONF_FLAGS() macro was used with a final newline that +introduces an invalid newline in the middle of the macro expansion +when defining LDFLAGS. + +Signed-off-by: Thomas Petazzoni + +Index: libhid-0.2.16/configure.ac +=================================================================== +--- libhid-0.2.16.orig/configure.ac 2007-04-01 22:32:10.000000000 +0200 ++++ libhid-0.2.16/configure.ac 2012-12-12 20:24:03.000000000 +0100 +@@ -102,8 +102,7 @@ + [], + [$OS_CFLAGS $LIBUSB_CFLAGS], + [], +- [$OS_LDFLAGS $LIBUSB_LIBS] +-) ++ [$OS_LDFLAGS $LIBUSB_LIBS]) + + MD_CONF_DB2MAN + diff --git a/buildroot/package/libhid/0003-uclinux.patch b/buildroot/package/libhid/0003-uclinux.patch new file mode 100644 index 0000000..cb3c452 --- /dev/null +++ b/buildroot/package/libhid/0003-uclinux.patch @@ -0,0 +1,27 @@ +Good old 'uclinux is also linux' + +Signed-off-by: Gustavo Zacarias + +diff -Nura libhid-0.2.16.orig/configure.ac libhid-0.2.16/configure.ac +--- libhid-0.2.16.orig/configure.ac 2014-06-22 09:35:50.277261742 -0300 ++++ libhid-0.2.16/configure.ac 2014-06-22 09:36:10.688951947 -0300 +@@ -80,6 +80,7 @@ + + MD_CONF_DEBUGGING + MD_CONF_COMPILER ++AM_CONDITIONAL(OS_LINUX, test "$MD_OS" = "uclinux") + AM_CONDITIONAL(OS_LINUX, test "$MD_OS" = "linux") + AM_CONDITIONAL(OS_BSD, test "$MD_OS" = "bsd") + AM_CONDITIONAL(OS_SOLARIS, test "$MD_OS" = "solaris") +diff -Nura libhid-0.2.16.orig/m4/md_check_os.m4 libhid-0.2.16/m4/md_check_os.m4 +--- libhid-0.2.16.orig/m4/md_check_os.m4 2014-06-22 09:35:50.275261675 -0300 ++++ libhid-0.2.16/m4/md_check_os.m4 2014-06-22 09:46:17.651475891 -0300 +@@ -3,7 +3,7 @@ + AC_CANONICAL_HOST + AC_MSG_CHECKING(for target OS) + case $host in +- *-linux*) ++ *-linux*|*-uclinux*) + AC_DEFINE(OS_LINUX, [], [define to 1 if building for Linux]) + AC_SUBST(OS_LINUX) + MD_OS=linux diff --git a/buildroot/package/libhid/Config.in b/buildroot/package/libhid/Config.in new file mode 100644 index 0000000..e6f2012 --- /dev/null +++ b/buildroot/package/libhid/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBHID + bool "libhid" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Userspace library for accessing USB HID devices + + http://libhid.alioth.debian.org + +comment "libhid needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libhid/libhid.hash b/buildroot/package/libhid/libhid.hash new file mode 100644 index 0000000..7a843b6 --- /dev/null +++ b/buildroot/package/libhid/libhid.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 f6809ab3b9c907cbb05ceba9ee6ca23a705f85fd71588518e14b3a7d9f2550e5 libhid-0.2.16.tar.gz diff --git a/buildroot/package/libhid/libhid.mk b/buildroot/package/libhid/libhid.mk new file mode 100644 index 0000000..b2e890c --- /dev/null +++ b/buildroot/package/libhid/libhid.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libhid +# +################################################################################ + +LIBHID_VERSION = 0.2.16 +LIBHID_SITE = http://sources.buildroot.net +LIBHID_DEPENDENCIES = libusb-compat libusb +LIBHID_INSTALL_STAGING = YES +LIBHID_AUTORECONF = YES +LIBHID_LICENSE = GPL-2.0 +LIBHID_LICENSE_FILES = COPYING +# configure runs libusb-config for cflags/ldflags. Ensure it picks up +# the target version +LIBHID_CONF_ENV = PATH=$(STAGING_DIR)/usr/bin:$(BR_PATH) +LIBHID_CONF_OPTS = \ + --disable-swig \ + --disable-werror \ + --without-doxygen \ + --disable-package-config + +$(eval $(autotools-package)) diff --git a/buildroot/package/libhttpparser/0001-Use-f-option-when-calling-ln-at-install-time.patch b/buildroot/package/libhttpparser/0001-Use-f-option-when-calling-ln-at-install-time.patch new file mode 100644 index 0000000..70f16f6 --- /dev/null +++ b/buildroot/package/libhttpparser/0001-Use-f-option-when-calling-ln-at-install-time.patch @@ -0,0 +1,39 @@ +From 384917321c45e492b0ca7aaa94d4b15324aef95d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 28 Aug 2015 19:02:11 +0200 +Subject: [PATCH] Use -f option when calling ln at install time + +This allows "make install; make install" to work properly. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Renaud AUBIN +--- + Makefile | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 6cf63bd..c182e5c 100644 +--- a/Makefile ++++ b/Makefile +@@ -133,14 +133,14 @@ tags: http_parser.c http_parser.h test.c + install: library + $(INSTALL) -D http_parser.h $(DESTDIR)$(INCLUDEDIR)/http_parser.h + $(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) +- ln -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) +- ln -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) ++ ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) ++ ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) + + install-strip: library + $(INSTALL) -D http_parser.h $(DESTDIR)$(INCLUDEDIR)/http_parser.h + $(INSTALL) -D -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) +- ln -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) +- ln -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) ++ ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) ++ ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) + + uninstall: + rm $(DESTDIR)$(INCLUDEDIR)/http_parser.h +-- +2.6.2 + diff --git a/buildroot/package/libhttpparser/Config.in b/buildroot/package/libhttpparser/Config.in new file mode 100644 index 0000000..4356304 --- /dev/null +++ b/buildroot/package/libhttpparser/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBHTTPPARSER + bool "libhttpparser" + depends on !BR2_STATIC_LIBS + help + This is a parser for HTTP messages written in C. It + parses both requests and responses. The parser is + designed to be used in performance HTTP applications. + It does not make any syscalls nor allocations, it does + not buffer data, it can be interrupted at anytime. + Depending on your architecture, it only requires about + 40 bytes of data per message stream (in a web server + that is per connection). + + https://github.com/nodejs/http-parser + +comment "libhttpparser needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libhttpparser/libhttpparser.hash b/buildroot/package/libhttpparser/libhttpparser.hash new file mode 100644 index 0000000..8ffceb2 --- /dev/null +++ b/buildroot/package/libhttpparser/libhttpparser.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 7277c6f99bf6fc272eb5d8fc3dca01e7cc1d4ae609b5d2c5d5e18added98479d libhttpparser-v2.8.0.tar.gz diff --git a/buildroot/package/libhttpparser/libhttpparser.mk b/buildroot/package/libhttpparser/libhttpparser.mk new file mode 100644 index 0000000..5f50d87 --- /dev/null +++ b/buildroot/package/libhttpparser/libhttpparser.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libhttpparser +# +################################################################################ + +LIBHTTPPARSER_VERSION = v2.8.0 +LIBHTTPPARSER_SITE = $(call github,nodejs,http-parser,$(LIBHTTPPARSER_VERSION)) +LIBHTTPPARSER_INSTALL_STAGING = YES +LIBHTTPPARSER_LICENSE = MIT +LIBHTTPPARSER_LICENSE_FILES = LICENSE-MIT + +define LIBHTTPPARSER_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) library package +endef + +define LIBHTTPPARSER_INSTALL_STAGING_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) PREFIX=$(STAGING_DIR)/usr install + $(INSTALL) -D -m 0644 $(@D)/libhttp_parser.a $(STAGING_DIR)/usr/lib/libhttp_parser.a +endef + +define LIBHTTPPARSER_INSTALL_TARGET_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) PREFIX=$(TARGET_DIR)/usr install +endef + +define HOST_LIBHTTPPARSER_BUILD_CMDS + $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) library package +endef + +define HOST_LIBHTTPPARSER_INSTALL_CMDS + $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) PREFIX=$(HOST_DIR)/usr install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/libical/0001-no-tests.patch b/buildroot/package/libical/0001-no-tests.patch new file mode 100644 index 0000000..324c04f --- /dev/null +++ b/buildroot/package/libical/0001-no-tests.patch @@ -0,0 +1,19 @@ +Disable tests to avoid MMU dependency due to fork. + +Fixes +CMakeFiles/regression.dir/regression.c.o: In function `_test_file_locks': +/home/br/br4/output/build/libical-v1.0.1/src/test/regression.c:(.text+0x96d8): undefined reference to `_fork' + +Signed-off-by: Bernd Kuhls + +diff -uNr libical-1.0.1.org/src/CMakeLists.txt libical-1.0.1/src/CMakeLists.txt +--- libical-1.0.1.org/src/CMakeLists.txt 2014-10-09 17:07:05.000000000 +0200 ++++ libical-1.0.1/src/CMakeLists.txt 2015-04-25 17:41:22.657345548 +0200 +@@ -1,7 +1,6 @@ + add_subdirectory(libical) + add_subdirectory(libicalss) + add_subdirectory(libicalvcal) +-add_subdirectory(test) + + if(MSVC) + install(FILES diff --git a/buildroot/package/libical/Config.in b/buildroot/package/libical/Config.in new file mode 100644 index 0000000..7c1d4a1 --- /dev/null +++ b/buildroot/package/libical/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBICAL + bool "libical" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + select BR2_TARGET_TZ_INFO + help + libical is an Open Source (MPL/LGPL) implementation of the + IETF's iCalendar Calendaring and Scheduling protocols. + + http://libical.github.io/libical + +comment "libical needs a toolchain w/ C++, dynamic library, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/libical/libical.hash b/buildroot/package/libical/libical.hash new file mode 100644 index 0000000..5c42cdc --- /dev/null +++ b/buildroot/package/libical/libical.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 089ce3c42d97fbd7a5d4b3c70adbdd82115dd306349c1f5c46a8fb3f8c949592 libical-1.0.1.tar.gz diff --git a/buildroot/package/libical/libical.mk b/buildroot/package/libical/libical.mk new file mode 100644 index 0000000..7125aa8 --- /dev/null +++ b/buildroot/package/libical/libical.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libical +# +################################################################################ + +LIBICAL_VERSION = 1.0.1 +LIBICAL_SITE = https://github.com/libical/libical/releases/download/v$(LIBICAL_VERSION) +LIBICAL_INSTALL_STAGING = YES +LIBICAL_LICENSE = MPL-1.0 or LGPL-2.1 +LIBICAL_LICENSE_FILES = LICENSE + +# building without this option is broken, it is used by +# Gentoo/alpinelinux as well +LIBICAL_CONF_OPTS = -DSHARED_ONLY=true +# never build time zone info, always use system's tzinfo +LIBICAL_CONF_OPTS += -DUSE_BUILTIN_TZDATA=false + +$(eval $(cmake-package)) diff --git a/buildroot/package/libiconv/Config.in b/buildroot/package/libiconv/Config.in new file mode 100644 index 0000000..ee4fd62 --- /dev/null +++ b/buildroot/package/libiconv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBICONV + bool "libiconv" + depends on !BR2_ENABLE_LOCALE + help + unicode conversion library + + http://ftp.gnu.org/pub/gnu/libiconv diff --git a/buildroot/package/libiconv/libiconv.hash b/buildroot/package/libiconv/libiconv.hash new file mode 100644 index 0000000..440daee --- /dev/null +++ b/buildroot/package/libiconv/libiconv.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178 libiconv-1.15.tar.gz diff --git a/buildroot/package/libiconv/libiconv.mk b/buildroot/package/libiconv/libiconv.mk new file mode 100644 index 0000000..9a81336 --- /dev/null +++ b/buildroot/package/libiconv/libiconv.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libiconv +# +################################################################################ + +LIBICONV_VERSION = 1.15 +LIBICONV_SITE = $(BR2_GNU_MIRROR)/libiconv +LIBICONV_INSTALL_STAGING = YES +LIBICONV_LICENSE = GPL-3.0+ (iconv program), LGPL-2.0+ (library) +LIBICONV_LICENSE_FILES = COPYING COPYING.LIB + +# Don't build the preloadable library, as we don't need it (it's only +# for LD_PRELOAD to replace glibc's iconv, but we never build libiconv +# when glibc is used). And it causes problems for static only builds. +define LIBICONV_DISABLE_PRELOAD + $(SED) '/preload/d' $(@D)/Makefile.in +endef +LIBICONV_PRE_CONFIGURE_HOOKS += LIBICONV_DISABLE_PRELOAD + +$(eval $(autotools-package)) + +# Configurations where the toolchain supports locales and the libiconv +# package is enabled are incorrect, because the toolchain already +# provides libiconv functionality, and having both confuses packages. +ifeq ($(BR2_PACKAGE_LIBICONV)$(BR2_ENABLE_LOCALE),yy) +$(error Libiconv should never be enabled when the toolchain supports locales. Report this failure to Buildroot developers) +endif diff --git a/buildroot/package/libid3tag/Config.in b/buildroot/package/libid3tag/Config.in new file mode 100644 index 0000000..869b9f7 --- /dev/null +++ b/buildroot/package/libid3tag/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBID3TAG + bool "libid3tag" + select BR2_PACKAGE_ZLIB + help + ID3 tag reading library from the MAD project. + + http://www.underbit.com/products/mad/ diff --git a/buildroot/package/libid3tag/libid3tag.hash b/buildroot/package/libid3tag/libid3tag.hash new file mode 100644 index 0000000..fb02882 --- /dev/null +++ b/buildroot/package/libid3tag/libid3tag.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 63da4f6e7997278f8a3fef4c6a372d342f705051d1eeb6a46a86b03610e26151 libid3tag-0.15.1b.tar.gz diff --git a/buildroot/package/libid3tag/libid3tag.mk b/buildroot/package/libid3tag/libid3tag.mk new file mode 100644 index 0000000..951ae09 --- /dev/null +++ b/buildroot/package/libid3tag/libid3tag.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libid3tag +# +################################################################################ + +LIBID3TAG_VERSION = 0.15.1b +LIBID3TAG_SITE = http://downloads.sourceforge.net/project/mad/libid3tag/$(LIBID3TAG_VERSION) +LIBID3TAG_LICENSE = GPL-2.0+ +LIBID3TAG_LICENSE_FILES = COPYING COPYRIGHT +LIBID3TAG_INSTALL_STAGING = YES +LIBID3TAG_DEPENDENCIES = zlib +LIBID3TAG_LIBTOOL_PATCH = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/libidn/0001-lib-punycode.c-decode_digit-Fix-integer-overflow.patch b/buildroot/package/libidn/0001-lib-punycode.c-decode_digit-Fix-integer-overflow.patch new file mode 100644 index 0000000..8a8ca47 --- /dev/null +++ b/buildroot/package/libidn/0001-lib-punycode.c-decode_digit-Fix-integer-overflow.patch @@ -0,0 +1,36 @@ +From e9e81b8063b095b02cf104bb992fa9bf9515b9d8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tim=20R=C3=BChsen?= +Date: Fri, 1 Sep 2017 10:04:48 +0200 +Subject: [PATCH] lib/punycode.c (decode_digit): Fix integer overflow + +This fix is a backport from libidn2 and addresses +CVE-2017-14062. + +Signed-off-by: Baruch Siach +--- +Upstream status: commit e9e81b8063b095 + + lib/punycode.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/lib/punycode.c b/lib/punycode.c +index 86819a7deb85..49250a13e2cc 100644 +--- a/lib/punycode.c ++++ b/lib/punycode.c +@@ -88,10 +88,10 @@ enum + /* point (for use in representing integers) in the range 0 to */ + /* base-1, or base if cp does not represent a value. */ + +-static punycode_uint +-decode_digit (punycode_uint cp) ++static unsigned ++decode_digit (int cp) + { +- return cp - 48 < 10 ? cp - 22 : cp - 65 < 26 ? cp - 65 : ++ return (unsigned) cp - 48 < 10 ? cp - 22 : cp - 65 < 26 ? cp - 65 : + cp - 97 < 26 ? cp - 97 : base; + } + +-- +2.14.1 + diff --git a/buildroot/package/libidn/0002-Update-intprops.h-for-gcc-7-compatibility.patch b/buildroot/package/libidn/0002-Update-intprops.h-for-gcc-7-compatibility.patch new file mode 100644 index 0000000..8972044 --- /dev/null +++ b/buildroot/package/libidn/0002-Update-intprops.h-for-gcc-7-compatibility.patch @@ -0,0 +1,333 @@ +From bd705da12e244dda18474a54a2942591e5ef5148 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tim=20R=C3=BChsen?= +Date: Wed, 1 Feb 2017 10:44:36 +0100 +Subject: [PATCH] Update intprops.h for gcc-7 compatibility + +[Backport from upstream commit 230930b3bc3e431b819eb45420cb42475d83ca93.] +Signed-off-by: Thomas Petazzoni +--- + gl/intprops.h | 65 ++++++++++++++++++++++++++++++-------------------- + lib/gltests/intprops.h | 65 ++++++++++++++++++++++++++++++-------------------- + 2 files changed, 78 insertions(+), 52 deletions(-) + +diff --git a/gl/intprops.h b/gl/intprops.h +index e1fce5c9..eb06b691 100644 +--- a/gl/intprops.h ++++ b/gl/intprops.h +@@ -1,18 +1,18 @@ + /* intprops.h -- properties of integer types + +- Copyright (C) 2001-2016 Free Software Foundation, Inc. ++ Copyright (C) 2001-2017 Free Software Foundation, Inc. + + 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 3 of the License, or ++ under the terms of the GNU Lesser General Public License as published ++ by the Free Software Foundation; either version 2.1 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. ++ GNU Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License ++ You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + + /* Written by Paul Eggert. */ +@@ -47,12 +47,16 @@ + + /* Minimum and maximum values for integer types and expressions. */ + ++/* The width in bits of the integer type or expression T. ++ Padding bits are not supported; this is checked at compile-time below. */ ++#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) ++ + /* The maximum and minimum values for the integer type T. */ + #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) + #define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ +- : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) ++ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) + + /* The maximum and minimum values for the type of the expression E, + after integer promotion. E should not have side effects. */ +@@ -65,7 +69,13 @@ + ? _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_NEGATE_CONVERT (e, 1)) + #define _GL_SIGNED_INT_MAXIMUM(e) \ +- (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1) ++ (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH ((e) + 0) - 2)) - 1) * 2 + 1) ++ ++/* Work around OpenVMS incompatibility with C99. */ ++#if !defined LLONG_MAX && defined __INT64_MAX ++# define LLONG_MAX __INT64_MAX ++# define LLONG_MIN __INT64_MIN ++#endif + + /* This include file assumes that signed types are two's complement without + padding bits; the above macros have undefined behavior otherwise. +@@ -84,10 +94,15 @@ verify (TYPE_MAXIMUM (long int) == LONG_MAX); + verify (TYPE_MINIMUM (long long int) == LLONG_MIN); + verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + #endif ++/* Similarly, sanity-check one ISO/IEC TS 18661-1:2014 macro if defined. */ ++#ifdef UINT_WIDTH ++verify (TYPE_WIDTH (unsigned int) == UINT_WIDTH); ++#endif + + /* Does the __typeof__ keyword work? This could be done by + 'configure', but for now it's easier to do it by hand. */ +-#if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \ ++#if (2 <= __GNUC__ \ ++ || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ + || (0x5110 <= __SUNPRO_C && !__STDC__)) + # define _GL_HAVE___TYPEOF__ 1 + #else +@@ -116,8 +131,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + signed, this macro may overestimate the true bound by one byte when + applied to unsigned types of size 2, 4, 16, ... bytes. */ + #define INT_STRLEN_BOUND(t) \ +- (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \ +- - _GL_SIGNED_TYPE_OR_EXPR (t)) \ ++ (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \ + + _GL_SIGNED_TYPE_OR_EXPR (t)) + + /* Bound on buffer size needed to represent an integer type or expression T, +@@ -222,20 +236,23 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + ? (a) < (min) >> (b) \ + : (max) >> (b) < (a)) + +-/* True if __builtin_add_overflow (A, B, P) works when P is null. */ +-#define _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL (7 <= __GNUC__) ++/* True if __builtin_add_overflow (A, B, P) works when P is non-null. */ ++#define _GL_HAS_BUILTIN_OVERFLOW (5 <= __GNUC__) ++ ++/* True if __builtin_add_overflow_p (A, B, C) works. */ ++#define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) + + /* The _GL*_OVERFLOW macros have the same restrictions as the + *_RANGE_OVERFLOW macros, except that they do not assume that operands + (e.g., A and B) have the same type as MIN and MAX. Instead, they assume + that the result (e.g., A + B) has that type. */ +-#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL +-# define _GL_ADD_OVERFLOW(a, b, min, max) +- __builtin_add_overflow (a, b, (__typeof__ ((a) + (b)) *) 0) +-# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) +- __builtin_sub_overflow (a, b, (__typeof__ ((a) - (b)) *) 0) +-# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) +- __builtin_mul_overflow (a, b, (__typeof__ ((a) * (b)) *) 0) ++#if _GL_HAS_BUILTIN_OVERFLOW_P ++# define _GL_ADD_OVERFLOW(a, b, min, max) \ ++ __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0) ++# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ ++ __builtin_sub_overflow_p (a, b, (__typeof__ ((a) - (b))) 0) ++# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ ++ __builtin_mul_overflow_p (a, b, (__typeof__ ((a) * (b))) 0) + #else + # define _GL_ADD_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ +@@ -315,7 +332,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) + #define INT_SUBTRACT_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) +-#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL ++#if _GL_HAS_BUILTIN_OVERFLOW_P + # define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) + #else + # define INT_NEGATE_OVERFLOW(a) \ +@@ -349,10 +366,6 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + #define INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, __builtin_mul_overflow, INT_MULTIPLY_OVERFLOW) + +-#ifndef __has_builtin +-# define __has_builtin(x) 0 +-#endif +- + /* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 + https://llvm.org/bugs/show_bug.cgi?id=25390 +@@ -369,7 +382,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + the operation. BUILTIN is the builtin operation, and OVERFLOW the + overflow predicate. Return 1 if the result overflows. See above + for restrictions. */ +-#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow) ++#if _GL_HAS_BUILTIN_OVERFLOW + # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r) + #elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS + # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ +@@ -412,7 +425,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + # else + # define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ +- long int, LONG_MIN, LONG_MAX)) ++ long int, LONG_MIN, LONG_MAX) + # endif + #endif + +diff --git a/lib/gltests/intprops.h b/lib/gltests/intprops.h +index e1fce5c9..eb06b691 100644 +--- a/lib/gltests/intprops.h ++++ b/lib/gltests/intprops.h +@@ -1,18 +1,18 @@ + /* intprops.h -- properties of integer types + +- Copyright (C) 2001-2016 Free Software Foundation, Inc. ++ Copyright (C) 2001-2017 Free Software Foundation, Inc. + + 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 3 of the License, or ++ under the terms of the GNU Lesser General Public License as published ++ by the Free Software Foundation; either version 2.1 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. ++ GNU Lesser General Public License for more details. + +- You should have received a copy of the GNU General Public License ++ You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . */ + + /* Written by Paul Eggert. */ +@@ -47,12 +47,16 @@ + + /* Minimum and maximum values for integer types and expressions. */ + ++/* The width in bits of the integer type or expression T. ++ Padding bits are not supported; this is checked at compile-time below. */ ++#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) ++ + /* The maximum and minimum values for the integer type T. */ + #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) + #define TYPE_MAXIMUM(t) \ + ((t) (! TYPE_SIGNED (t) \ + ? (t) -1 \ +- : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) ++ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) + + /* The maximum and minimum values for the type of the expression E, + after integer promotion. E should not have side effects. */ +@@ -65,7 +69,13 @@ + ? _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_NEGATE_CONVERT (e, 1)) + #define _GL_SIGNED_INT_MAXIMUM(e) \ +- (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1) ++ (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH ((e) + 0) - 2)) - 1) * 2 + 1) ++ ++/* Work around OpenVMS incompatibility with C99. */ ++#if !defined LLONG_MAX && defined __INT64_MAX ++# define LLONG_MAX __INT64_MAX ++# define LLONG_MIN __INT64_MIN ++#endif + + /* This include file assumes that signed types are two's complement without + padding bits; the above macros have undefined behavior otherwise. +@@ -84,10 +94,15 @@ verify (TYPE_MAXIMUM (long int) == LONG_MAX); + verify (TYPE_MINIMUM (long long int) == LLONG_MIN); + verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + #endif ++/* Similarly, sanity-check one ISO/IEC TS 18661-1:2014 macro if defined. */ ++#ifdef UINT_WIDTH ++verify (TYPE_WIDTH (unsigned int) == UINT_WIDTH); ++#endif + + /* Does the __typeof__ keyword work? This could be done by + 'configure', but for now it's easier to do it by hand. */ +-#if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \ ++#if (2 <= __GNUC__ \ ++ || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ + || (0x5110 <= __SUNPRO_C && !__STDC__)) + # define _GL_HAVE___TYPEOF__ 1 + #else +@@ -116,8 +131,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + signed, this macro may overestimate the true bound by one byte when + applied to unsigned types of size 2, 4, 16, ... bytes. */ + #define INT_STRLEN_BOUND(t) \ +- (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \ +- - _GL_SIGNED_TYPE_OR_EXPR (t)) \ ++ (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \ + + _GL_SIGNED_TYPE_OR_EXPR (t)) + + /* Bound on buffer size needed to represent an integer type or expression T, +@@ -222,20 +236,23 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + ? (a) < (min) >> (b) \ + : (max) >> (b) < (a)) + +-/* True if __builtin_add_overflow (A, B, P) works when P is null. */ +-#define _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL (7 <= __GNUC__) ++/* True if __builtin_add_overflow (A, B, P) works when P is non-null. */ ++#define _GL_HAS_BUILTIN_OVERFLOW (5 <= __GNUC__) ++ ++/* True if __builtin_add_overflow_p (A, B, C) works. */ ++#define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) + + /* The _GL*_OVERFLOW macros have the same restrictions as the + *_RANGE_OVERFLOW macros, except that they do not assume that operands + (e.g., A and B) have the same type as MIN and MAX. Instead, they assume + that the result (e.g., A + B) has that type. */ +-#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL +-# define _GL_ADD_OVERFLOW(a, b, min, max) +- __builtin_add_overflow (a, b, (__typeof__ ((a) + (b)) *) 0) +-# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) +- __builtin_sub_overflow (a, b, (__typeof__ ((a) - (b)) *) 0) +-# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) +- __builtin_mul_overflow (a, b, (__typeof__ ((a) * (b)) *) 0) ++#if _GL_HAS_BUILTIN_OVERFLOW_P ++# define _GL_ADD_OVERFLOW(a, b, min, max) \ ++ __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0) ++# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ ++ __builtin_sub_overflow_p (a, b, (__typeof__ ((a) - (b))) 0) ++# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ ++ __builtin_mul_overflow_p (a, b, (__typeof__ ((a) * (b))) 0) + #else + # define _GL_ADD_OVERFLOW(a, b, min, max) \ + ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ +@@ -315,7 +332,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) + #define INT_SUBTRACT_OVERFLOW(a, b) \ + _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) +-#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL ++#if _GL_HAS_BUILTIN_OVERFLOW_P + # define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) + #else + # define INT_NEGATE_OVERFLOW(a) \ +@@ -349,10 +366,6 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + #define INT_MULTIPLY_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, *, __builtin_mul_overflow, INT_MULTIPLY_OVERFLOW) + +-#ifndef __has_builtin +-# define __has_builtin(x) 0 +-#endif +- + /* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 + https://llvm.org/bugs/show_bug.cgi?id=25390 +@@ -369,7 +382,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + the operation. BUILTIN is the builtin operation, and OVERFLOW the + overflow predicate. Return 1 if the result overflows. See above + for restrictions. */ +-#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow) ++#if _GL_HAS_BUILTIN_OVERFLOW + # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r) + #elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS + # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ +@@ -412,7 +425,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); + # else + # define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ +- long int, LONG_MIN, LONG_MAX)) ++ long int, LONG_MIN, LONG_MAX) + # endif + #endif + +-- +2.13.6 + diff --git a/buildroot/package/libidn/Config.in b/buildroot/package/libidn/Config.in new file mode 100644 index 0000000..20e0e2b --- /dev/null +++ b/buildroot/package/libidn/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBIDN + bool "libidn" + help + Libidn's purpose is to encode and decode internationalized + domain names. + + http://www.gnu.org/software/libidn/ + +if BR2_PACKAGE_LIBIDN + +config BR2_PACKAGE_LIBIDN_BINARY + bool "idn binary" + help + Install idn command line tool + +endif diff --git a/buildroot/package/libidn/libidn.hash b/buildroot/package/libidn/libidn.hash new file mode 100644 index 0000000..4658a3e --- /dev/null +++ b/buildroot/package/libidn/libidn.hash @@ -0,0 +1,4 @@ +# From http://lists.nongnu.org/archive/html/help-libidn/2016-07/msg00009.html +sha1 57872fdc665dcc585e16f4ac0bb35374b1103f7e libidn-1.33.tar.gz +# Calculated based on the hash above +sha256 44a7aab635bb721ceef6beecc4d49dfd19478325e1b47f3196f7d2acc4930e19 libidn-1.33.tar.gz diff --git a/buildroot/package/libidn/libidn.mk b/buildroot/package/libidn/libidn.mk new file mode 100644 index 0000000..b50a8b6 --- /dev/null +++ b/buildroot/package/libidn/libidn.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libidn +# +################################################################################ + +LIBIDN_VERSION = 1.33 +LIBIDN_SITE = $(BR2_GNU_MIRROR)/libidn +LIBIDN_INSTALL_STAGING = YES +LIBIDN_CONF_ENV = EMACS="no" MAKEINFO=true +LIBIDN_CONF_OPTS = --disable-java --enable-csharp=no +LIBIDN_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) $(if $(BR2_PACKAGE_LIBICONV),libiconv) +LIBIDN_LICENSE = GPL-2.0+, GPL-3.0+, LGPL-3.0+ +LIBIDN_LICENSE_FILES = COPYINGv2 COPYINGv3 COPYING.LESSERv3 +# lib/punycode.c patch triggers reconf in doc/ +LIBIDN_AUTORECONF = YES + +define LIBIDN_REMOVE_BINARY + rm -f $(TARGET_DIR)/usr/bin/idn +endef + +ifneq ($(BR2_PACKAGE_LIBIDN_BINARY),y) +LIBIDN_POST_INSTALL_TARGET_HOOKS += LIBIDN_REMOVE_BINARY +endif + +define LIBIDN_REMOVE_EMACS_STUFF + rm -rf $(TARGET_DIR)/usr/share/emacs +endef + +LIBIDN_POST_INSTALL_TARGET_HOOKS += LIBIDN_REMOVE_EMACS_STUFF + +$(eval $(autotools-package)) diff --git a/buildroot/package/libiio/Config.in b/buildroot/package/libiio/Config.in new file mode 100644 index 0000000..b58ac7f --- /dev/null +++ b/buildroot/package/libiio/Config.in @@ -0,0 +1,98 @@ +config BR2_PACKAGE_LIBIIO + bool "libiio" + select BR2_PACKAGE_LIBIIO_LOCAL_BACKEND if !BR2_PACKAGE_LIBIIO_XML_BACKEND + help + Libiio is a library to ease the development of software + interfacing Linux Industrial I/O (IIO) devices. + + http://wiki.analog.com/resources/tools-software/linux-software/libiio + +if BR2_PACKAGE_LIBIIO + +config BR2_PACKAGE_LIBIIO_LOCAL_BACKEND + bool "Local backend" + default y + help + Enable the local backend of the library. + +config BR2_PACKAGE_LIBIIO_XML_BACKEND + bool "XML backend" + default y + select BR2_PACKAGE_LIBXML2 + help + Enable the XML backend of the library. + +config BR2_PACKAGE_LIBIIO_NETWORK_BACKEND + bool "Network backend" + default y + select BR2_PACKAGE_LIBIIO_XML_BACKEND + help + Enable the network backend of the library. + +config BR2_PACKAGE_LIBIIO_USB_BACKEND + bool "USB backend" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS # from libusb + select BR2_PACKAGE_LIBIIO_XML_BACKEND + select BR2_PACKAGE_LIBUSB + help + Enable the USB backend of the library. + +comment "The USB backend needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_LIBIIO_SERIAL_BACKEND + bool "Serial backend" + default y + select BR2_PACKAGE_LIBIIO_XML_BACKEND + select BR2_PACKAGE_LIBSERIALPORT + help + Enable the serial backend of the library. + +config BR2_PACKAGE_LIBIIO_IIOD + bool "IIO Daemon" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBIIO_LOCAL_BACKEND + help + Install the IIO Daemon. + +config BR2_PACKAGE_LIBIIO_IIOD_USBD + bool "USB support in the IIO Daemon (FunctionFS)" + depends on BR2_PACKAGE_LIBIIO_IIOD + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # usb_functionfs_descs_head_v2 + select BR2_PACKAGE_LIBAIO + help + Add support for USB through FunctionFS with IIOD. + +comment "USB support in the IIO Daemon requires libaio, headers >= 3.18" + depends on BR2_PACKAGE_LIBIIO_IIOD + depends on !BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +comment "IIO Daemon needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_LIBIIO_TESTS + bool "Install test programs" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Install the test programs (iio_info, iio_genxml, iio_readdev). + +comment "IIO test programs need a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_LIBIIO_BINDINGS_CSHARP + bool "Install C# bindings" + depends on BR2_PACKAGE_MONO + help + Install the C# bindings. + +config BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON + bool "Install Python bindings" + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + help + Install the Python bindings. + +endif diff --git a/buildroot/package/libiio/S99iiod b/buildroot/package/libiio/S99iiod new file mode 100644 index 0000000..df2f763 --- /dev/null +++ b/buildroot/package/libiio/S99iiod @@ -0,0 +1,30 @@ +#!/bin/sh + +# Server-side demuxing by default +IIOD_OPTS=-D + +[ -r /etc/default/iiod ] && . /etc/default/iiod + +case "$1" in + start) + echo "Starting IIO Server Daemon" + start-stop-daemon -S -b -q -m -p /var/run/iiod.pid -x /usr/sbin/iiod -- $IIOD_OPTS + exit $? + ;; + + stop) + echo "Stopping IIO Server Daemon" + start-stop-daemon -K -q -p /var/run/iiod.pid 2>/dev/null + exit $? + ;; + + restart) + $0 stop + sleep 1 + $0 start + ;; + + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/libiio/libiio.hash b/buildroot/package/libiio/libiio.hash new file mode 100644 index 0000000..027e2a0 --- /dev/null +++ b/buildroot/package/libiio/libiio.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 002d57f35715821efae66479859bc5357b4d8d33bfff1446b4e17b02ae2c10d2 libiio-0.10.tar.gz diff --git a/buildroot/package/libiio/libiio.mk b/buildroot/package/libiio/libiio.mk new file mode 100644 index 0000000..3fbd391 --- /dev/null +++ b/buildroot/package/libiio/libiio.mk @@ -0,0 +1,98 @@ +################################################################################ +# +# libiio +# +################################################################################ + +LIBIIO_VERSION = 0.10 +LIBIIO_SITE = $(call github,analogdevicesinc,libiio,v$(LIBIIO_VERSION)) +LIBIIO_INSTALL_STAGING = YES +LIBIIO_LICENSE = LGPL-2.1+ +LIBIIO_LICENSE_FILES = COPYING.txt + +LIBIIO_CONF_OPTS = -DENABLE_IPV6=ON \ + -DWITH_LOCAL_BACKEND=$(if $(BR2_PACKAGE_LIBIIO_LOCAL_BACKEND),ON,OFF) \ + -DWITH_NETWORK_BACKEND=$(if $(BR2_PACKAGE_LIBIIO_NETWORK_BACKEND),ON,OFF) \ + -DWITH_MATLAB_BINDINGS_API=OFF \ + -DMATLAB_BINDINGS=OFF \ + -DINSTALL_UDEV_RULE=$(if $(BR2_PACKAGE_HAS_UDEV),ON,OFF) \ + -DWITH_TESTS=$(if $(BR2_PACKAGE_LIBIIO_TESTS),ON,OFF) \ + -DWITH_DOC=OFF + +ifeq ($(BR2_PACKAGE_LIBIIO_XML_BACKEND),y) +LIBIIO_DEPENDENCIES += libxml2 +LIBIIO_CONF_OPTS += -DWITH_XML_BACKEND=ON +else +LIBIIO_CONF_OPTS += -DWITH_XML_BACKEND=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_USB_BACKEND),y) +LIBIIO_DEPENDENCIES += libusb +LIBIIO_CONF_OPTS += -DWITH_USB_BACKEND=ON +else +LIBIIO_CONF_OPTS += -DWITH_USB_BACKEND=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_SERIAL_BACKEND),y) +LIBIIO_DEPENDENCIES += libserialport +LIBIIO_CONF_OPTS += -DWITH_SERIAL_BACKEND=ON +else +LIBIIO_CONF_OPTS += -DWITH_SERIAL_BACKEND=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_IIOD),y) +LIBIIO_DEPENDENCIES += host-flex host-bison +LIBIIO_CONF_OPTS += -DWITH_IIOD=ON +else +LIBIIO_CONF_OPTS += -DWITH_IIOD=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_IIOD_USBD),y) +LIBIIO_DEPENDENCIES += libaio +LIBIIO_CONF_OPTS += -DWITH_IIOD_USBD=ON +else +LIBIIO_CONF_OPTS += -DWITH_IIOD_USBD=OFF +endif + +# Avahi support in libiio requires avahi-client, which needs avahi-daemon and dbus +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy) +LIBIIO_DEPENDENCIES += avahi +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON),y) +ifeq ($(BR2_PACKAGE_PYTHON),y) +LIBIIO_DEPENDENCIES += python +else ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBIIO_DEPENDENCIES += python3 +endif +LIBIIO_CONF_OPTS += -DPYTHON_BINDINGS=ON +else +LIBIIO_CONF_OPTS += -DPYTHON_BINDINGS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_BINDINGS_CSHARP),y) +define LIBIIO_INSTALL_CSHARP_BINDINGS_TO_TARGET + rm $(TARGET_DIR)/usr/lib/cli/libiio-sharp-$(LIBIIO_VERSION)/libiio-sharp.dll.mdb + $(HOST_DIR)/bin/gacutil -root $(TARGET_DIR)/usr/lib -i \ + $(TARGET_DIR)/usr/lib/cli/libiio-sharp-$(LIBIIO_VERSION)/libiio-sharp.dll +endef +define LIBIIO_INSTALL_CSHARP_BINDINGS_TO_STAGING + $(HOST_DIR)/bin/gacutil -root $(STAGING_DIR)/usr/lib -i \ + $(STAGING_DIR)/usr/lib/cli/libiio-sharp-$(LIBIIO_VERSION)/libiio-sharp.dll +endef +LIBIIO_POST_INSTALL_TARGET_HOOKS += LIBIIO_INSTALL_CSHARP_BINDINGS_TO_TARGET +LIBIIO_POST_INSTALL_STAGING_HOOKS += LIBIIO_INSTALL_CSHARP_BINDINGS_TO_STAGING +LIBIIO_DEPENDENCIES += mono +LIBIIO_CONF_OPTS += -DCSHARP_BINDINGS=ON +else +LIBIIO_CONF_OPTS += -DCSHARP_BINDINGS=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBIIO_IIOD),y) +define LIBIIO_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/libiio/S99iiod \ + $(TARGET_DIR)/etc/init.d/S99iiod +endef +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libilbc/Config.in b/buildroot/package/libilbc/Config.in new file mode 100644 index 0000000..89d5db2 --- /dev/null +++ b/buildroot/package/libilbc/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBILBC + bool "libilbc" + help + iLBC (internet Low Bitrate Codec) is a FREE speech codec + suitable for robust voice communication over IP. + + http://www.webrtc.org/license-rights/ilbc-freeware diff --git a/buildroot/package/libilbc/libilbc.hash b/buildroot/package/libilbc/libilbc.hash new file mode 100644 index 0000000..e6789c5 --- /dev/null +++ b/buildroot/package/libilbc/libilbc.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 70cd6a4f6bbe6dcebfc4293eea7b6200f883d1bf0affa1efba819d44d274e35f libilbc-829b08c7902ceb87a261279fabb36b6d523c6e07.tar.gz diff --git a/buildroot/package/libilbc/libilbc.mk b/buildroot/package/libilbc/libilbc.mk new file mode 100644 index 0000000..06d94eb --- /dev/null +++ b/buildroot/package/libilbc/libilbc.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libilbc +# +################################################################################ + +LIBILBC_VERSION = 829b08c7902ceb87a261279fabb36b6d523c6e07 +LIBILBC_SITE = https://freeswitch.org/stash/scm/sd/libilbc.git +LIBILBC_SITE_METHOD = git +LIBILBC_LICENSE = Global IP Sound iLBC Public License v2.0 +LIBILBC_LICENSE_FILES = gips_iLBClicense.pdf +LIBILBC_AUTORECONF = YES +LIBILBC_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libimxvpuapi/Config.in b/buildroot/package/libimxvpuapi/Config.in new file mode 100644 index 0000000..8b8b839 --- /dev/null +++ b/buildroot/package/libimxvpuapi/Config.in @@ -0,0 +1,16 @@ +comment "libimxvpuapi needs an i.MX platform with VPU support" + depends on BR2_arm + depends on !BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + +config BR2_PACKAGE_LIBIMXVPUAPI + bool "libimxvpuapi" + depends on BR2_arm # Only relevant for i.MX + depends on BR2_PACKAGE_FREESCALE_IMX_HAS_VPU + select BR2_PACKAGE_IMX_VPU + help + This library provides an API for using the iMX6 VPU video + engine. It is an alternative to Freescale's VPU + wrapper. Both the wrapper and this library are layered on + top of imx-vpu, the low-level iMX6 VPU interface. + + https://github.com/Freescale/libimxvpuapi diff --git a/buildroot/package/libimxvpuapi/libimxvpuapi.hash b/buildroot/package/libimxvpuapi/libimxvpuapi.hash new file mode 100644 index 0000000..cd0c8f1 --- /dev/null +++ b/buildroot/package/libimxvpuapi/libimxvpuapi.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 7151e10a24929935bada1d3d87626f17e411575b3a4ac0d86440999ad0100a55 libimxvpuapi-0.10.3.tar.gz diff --git a/buildroot/package/libimxvpuapi/libimxvpuapi.mk b/buildroot/package/libimxvpuapi/libimxvpuapi.mk new file mode 100644 index 0000000..bcabbf3 --- /dev/null +++ b/buildroot/package/libimxvpuapi/libimxvpuapi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libimxvpuapi +# +################################################################################ + +LIBIMXVPUAPI_VERSION = 0.10.3 +LIBIMXVPUAPI_SITE = $(call github,Freescale,libimxvpuapi,$(LIBIMXVPUAPI_VERSION)) +LIBIMXVPUAPI_LICENSE = LGPL-2.1+ +LIBIMXVPUAPI_LICENSE_FILES = LICENSE +LIBIMXVPUAPI_DEPENDENCIES = host-pkgconf host-python imx-vpu +LIBIMXVPUAPI_INSTALL_STAGING = YES + +$(eval $(waf-package)) diff --git a/buildroot/package/libinput/Config.in b/buildroot/package/libinput/Config.in new file mode 100644 index 0000000..f7793df --- /dev/null +++ b/buildroot/package/libinput/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBINPUT + bool "libinput" + depends on BR2_ENABLE_LOCALE + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_LIBEVDEV + select BR2_PACKAGE_MTDEV + help + libinput is a library to handle input devices in Wayland + compositors and to provide a generic X.Org input driver. + It provides device detection, device handling, input device + event processing and abstraction so minimize the amount of + custom input code compositors need to provide the common + set of functionality that users expect. + + http://freedesktop.org/wiki/Software/libinput/ + +comment "libinput needs udev /dev management and a toolchain w/ locale" + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_ENABLE_LOCALE diff --git a/buildroot/package/libinput/libinput.hash b/buildroot/package/libinput/libinput.hash new file mode 100644 index 0000000..4e64568 --- /dev/null +++ b/buildroot/package/libinput/libinput.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/wayland-devel/2017-September/034949.html +md5 e94e9aa765da9533c23b80b440638de9 libinput-1.8.2.tar.xz +sha1 1c55462eb598b91c9c360f31170a408fb8d38d22 libinput-1.8.2.tar.xz +sha256 013518ee0adb2287e6e1f08412efba2137320738cadb5399b783738f04cbab38 libinput-1.8.2.tar.xz +sha512 555a7680cc8aaf62c5370a865f3aff0a933d42d94a3d8861c072666b02c9e1be45ea39de9a749a9575cdfb613b6150e412e18559d94d4919f21ca4680a3c76a7 libinput-1.8.2.tar.xz diff --git a/buildroot/package/libinput/libinput.mk b/buildroot/package/libinput/libinput.mk new file mode 100644 index 0000000..f904b79 --- /dev/null +++ b/buildroot/package/libinput/libinput.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# libinput +# +################################################################################ + +LIBINPUT_VERSION = 1.8.2 +LIBINPUT_SOURCE = libinput-$(LIBINPUT_VERSION).tar.xz +LIBINPUT_SITE = http://www.freedesktop.org/software/libinput +LIBINPUT_DEPENDENCIES = host-pkgconf libevdev mtdev udev +LIBINPUT_INSTALL_STAGING = YES +LIBINPUT_LICENSE = MIT +LIBINPUT_LICENSE_FILES = COPYING +# Tests need fork, so just disable them everywhere. +LIBINPUT_CONF_OPTS = --disable-tests --disable-libwacom + +ifeq ($(BR2_PACKAGE_LIBGTK3),y) +LIBINPUT_CONF_OPTS += --enable-debug-gui +LIBINPUT_DEPENDENCIES += libgtk3 +else +LIBINPUT_CONF_OPTS += --disable-debug-gui +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libiqrf/0001-cmake-handle-static-library-and-find-required-thread.patch b/buildroot/package/libiqrf/0001-cmake-handle-static-library-and-find-required-thread.patch new file mode 100644 index 0000000..cfd7d54 --- /dev/null +++ b/buildroot/package/libiqrf/0001-cmake-handle-static-library-and-find-required-thread.patch @@ -0,0 +1,45 @@ +From 46660112b76664473cc98b8ae6c863fd27c27d2d Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Fri, 29 Aug 2014 23:40:59 +0200 +Subject: [PATCH 1/1] cmake: handle static library and find required thread + module + +Signed-off-by: Samuel Martin +--- + CMakeLists.txt | 2 ++ + src/CMakeLists.txt | 4 +++- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 79f644c..7779a2a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,7 +6,9 @@ enable_testing() + # use local module (for Findlibusb-1.0.cmake) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") + ++find_package(Threads REQUIRED) + find_package(libusb-1.0 REQUIRED) ++ + if (NOT LIBUSB_1_FOUND) + message(FATAL_ERROR "libusb-1.0 not installed. (try apt-get install libusb-1.0-0-dev)") + endif (NOT LIBUSB_1_FOUND) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 149d198..0597ccd 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -18,8 +18,10 @@ set (iqrf_sources + + include_directories ("${LIBUSB_1_INCLUDE_DIRS}") + +-add_library(iqrf SHARED ${iqrf_sources} ${iqrf_headers}) ++add_library(iqrf ${iqrf_sources} ${iqrf_headers}) ++ + target_link_libraries(iqrf ${LIBUSB_1_LIBRARIES}) ++target_link_libraries(iqrf ${CMAKE_THREAD_LIBS_INIT}) + + set_target_properties(iqrf PROPERTIES + VERSION "${iqrf_version_major}.${iqrf_version_minor}" +-- +2.1.0 + diff --git a/buildroot/package/libiqrf/0002-use-only-c-language.patch b/buildroot/package/libiqrf/0002-use-only-c-language.patch new file mode 100644 index 0000000..2f1c23c --- /dev/null +++ b/buildroot/package/libiqrf/0002-use-only-c-language.patch @@ -0,0 +1,29 @@ +Use only the C language + +libirqf is written completely in C, but by default, CMake assumes that +both C and C++ are used, and therefore verifies that a C++ compiler is +installed. This may not necessarily be the case for a C-only package +in Buildroot. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/CMakeLists.txt +=================================================================== +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -1,5 +1,3 @@ +-project(iqrf) +- + set (iqrf_version_major 0) + set (iqrf_version_minor 1) + set (iqrf_version_patch 2) +Index: b/CMakeLists.txt +=================================================================== +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,3 +1,5 @@ ++project(iqrf C) ++ + cmake_minimum_required(VERSION 2.8.1) + enable_testing() + diff --git a/buildroot/package/libiqrf/Config.in b/buildroot/package/libiqrf/Config.in new file mode 100644 index 0000000..03555e0 --- /dev/null +++ b/buildroot/package/libiqrf/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBIQRF + bool "libiqrf" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + This library implement specific protocol + which is used for communicating with iqrf devices + (http://iqrf.org) over usb. For usb access is used + libusb library. + + https://github.com/nandra/libiqrf + +comment "libiqrf needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libiqrf/libiqrf.hash b/buildroot/package/libiqrf/libiqrf.hash new file mode 100644 index 0000000..12d526c --- /dev/null +++ b/buildroot/package/libiqrf/libiqrf.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8111031dd9dd6093a1927eb32dd7476fe22cfee9190043aa8e4c88003c104b16 libiqrf-v0.1.2.tar.gz diff --git a/buildroot/package/libiqrf/libiqrf.mk b/buildroot/package/libiqrf/libiqrf.mk new file mode 100644 index 0000000..f403a5e --- /dev/null +++ b/buildroot/package/libiqrf/libiqrf.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libiqrf +# +################################################################################ + +LIBIQRF_VERSION = v0.1.2 +LIBIQRF_SITE = $(call github,nandra,libiqrf,$(LIBIQRF_VERSION)) +LIBIQRF_INSTALL_STAGING = YES +LIBIQRF_DEPENDENCIES = libusb +LIBIQRF_LICENSE = LGPL-2.1+ + +$(eval $(cmake-package)) diff --git a/buildroot/package/libiscsi/0001-Do-not-use-I-usr-include.-This-is-unsafe-when-cross-compiling.patch b/buildroot/package/libiscsi/0001-Do-not-use-I-usr-include.-This-is-unsafe-when-cross-compiling.patch new file mode 100644 index 0000000..dc047ef --- /dev/null +++ b/buildroot/package/libiscsi/0001-Do-not-use-I-usr-include.-This-is-unsafe-when-cross-compiling.patch @@ -0,0 +1,67 @@ +From f27bdf64f0c375352ca42928071a9178a5a04c46 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Sun, 16 Oct 2016 10:53:13 +0100 +Subject: [PATCH] Do not use -I/usr/include. This is unsafe when cross-compiling. + +Upstream status: PR sent (https://github.com/sahlberg/libiscsi/pull/219) + +Signed-off-by: Vicente Olivert Riera +--- + examples/Makefile.am | 2 +- + lib/Makefile.am | 2 +- + tests/Makefile.am | 2 +- + utils/Makefile.am | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/examples/Makefile.am b/examples/Makefile.am +index 0de0b1f..42ad818 100644 +--- a/examples/Makefile.am ++++ b/examples/Makefile.am +@@ -1,6 +1,6 @@ + AM_CPPFLAGS=-I. -I${srcdir}/../include "-D_U_=__attribute__((unused))" \ + "-D_R_(A,B)=__attribute__((format(printf,A,B)))" +-AM_CFLAGS=$(WARN_CFLAGS) -I/usr/include ++AM_CFLAGS=$(WARN_CFLAGS) + LDADD = ../lib/libiscsi.la + + noinst_PROGRAMS = iscsiclient iscsi-dd +diff --git a/lib/Makefile.am b/lib/Makefile.am +index d612fb7..47ffc33 100644 +--- a/lib/Makefile.am ++++ b/lib/Makefile.am +@@ -29,7 +29,7 @@ libiscsi_la_CPPFLAGS = -I${srcdir}/../include -I$(srcdir)/include \ + "-D_U_=__attribute__((unused))" \ + "-D_R_(A,B)=__attribute__((format(printf,A,B)))" + +-AM_CFLAGS=$(WARN_CFLAGS) -I/usr/include ++AM_CFLAGS=$(WARN_CFLAGS) + + dist_noinst_DATA = libiscsi.syms libiscsi.def + +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 9d699fc..b4cbf21 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -1,6 +1,6 @@ + AM_CPPFLAGS = -I../include "-D_U_=__attribute__((unused))" \ + "-D_R_(A,B)=__attribute__((format(printf,A,B)))" +-AM_CFLAGS = $(WARN_CFLAGS) -I/usr/include ++AM_CFLAGS = $(WARN_CFLAGS) + LDADD = ../lib/libiscsi.la + + noinst_PROGRAMS = prog_reconnect prog_reconnect_timeout prog_noop_reply \ +diff --git a/utils/Makefile.am b/utils/Makefile.am +index 657ca9d..bde1c81 100644 +--- a/utils/Makefile.am ++++ b/utils/Makefile.am +@@ -1,6 +1,6 @@ + AM_CPPFLAGS = -I${srcdir}/../include "-D_U_=__attribute__((unused))" \ + "-D_R_(A,B)=__attribute__((format(printf,A,B)))" +-AM_CFLAGS = $(WARN_CFLAGS) -I/usr/include ++AM_CFLAGS = $(WARN_CFLAGS) + LDADD = ../lib/libiscsi.la + + bin_PROGRAMS = iscsi-inq iscsi-ls iscsi-perf iscsi-readcapacity16 \ +-- +2.10.0 + diff --git a/buildroot/package/libiscsi/Config.in b/buildroot/package/libiscsi/Config.in new file mode 100644 index 0000000..760fece --- /dev/null +++ b/buildroot/package/libiscsi/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBISCSI + bool "libiscsi" + help + Libiscsi is a client-side library to implement the iSCSI + protocol that can be used to access resource of an iSCSI + Target. + + The library is fully async with regards to iscsi commands and + scsi tasks, but a sync layer is also provided for ease of use + for simpler applications. + + https://github.com/sahlberg/libiscsi (no proper homepage) diff --git a/buildroot/package/libiscsi/libiscsi.hash b/buildroot/package/libiscsi/libiscsi.hash new file mode 100644 index 0000000..4f7d1af --- /dev/null +++ b/buildroot/package/libiscsi/libiscsi.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 464d104e12533dc11f0dd7662cbc2f01c132f94aa4f5bd519e3413ef485830e8 libiscsi-1.18.0.tar.gz diff --git a/buildroot/package/libiscsi/libiscsi.mk b/buildroot/package/libiscsi/libiscsi.mk new file mode 100644 index 0000000..6c86008 --- /dev/null +++ b/buildroot/package/libiscsi/libiscsi.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libiscsi +# +################################################################################ + +LIBISCSI_VERSION = 1.18.0 +LIBISCSI_SITE = $(call github,sahlberg,libiscsi,$(LIBISCSI_VERSION)) +LIBISCSI_LICENSE = GPL-2.0+, LGPL-2.1+ +LIBISCSI_LICENSE_FILES = COPYING LICENCE-GPL-2.txt LICENCE-LGPL-2.1.txt +LIBISCSI_INSTALL_STAGING = YES +LIBISCSI_AUTORECONF = YES + +# We need to create the m4 directory to make autoreconf work properly. +define LIBISCSI_CREATE_M4_DIR + mkdir -p $(@D)/m4 +endef +LIBISCSI_POST_PATCH_HOOKS += LIBISCSI_CREATE_M4_DIR + +$(eval $(autotools-package)) diff --git a/buildroot/package/libite/Config.in b/buildroot/package/libite/Config.in new file mode 100644 index 0000000..80d2979 --- /dev/null +++ b/buildroot/package/libite/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBITE + bool "libite" + help + Libite is a lightweight library of frog DNA. It can be used + to fill the gaps in any dinosaur project. It holds useful + functions and macros developed by both Finit and the OpenBSD + project. Most notably the string functions: strlcpy(3), + strlcat(3) and the highly useful *BSD sys/queue.h and + sys/tree.h API's. + + Libite is the frog DNA missing in GNU libc. However, -lite + does not aim to become another GLIB! One noticeable gap in + GLIBC is the missing _SAFE macros in the BSD sys/queue.h API + - highly recommended when traversing lists to delete/free + nodes. + + https://github.com/troglobit/libite diff --git a/buildroot/package/libite/libite.hash b/buildroot/package/libite/libite.hash new file mode 100644 index 0000000..ec894c5 --- /dev/null +++ b/buildroot/package/libite/libite.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 18c087123f02cc3cfb612bf53b12dc8a94d4d3ebf015ed5937b1f9203eef72f8 libite-v1.9.2.tar.gz +sha256 0e97ab27b60e20a7ddb8e9638189ad159124e51d2c12e12735b05423df224da5 LICENSE +sha256 9e0fb98d251dddf5ba81a355f6b4d89835ec53bc5d7f5fcd2c866b54ec5ccec8 chomp.c +sha256 a7d29c148e057fae11a87febc3a51970a26433c35a08fc710be689394442d32d pidfile.c diff --git a/buildroot/package/libite/libite.mk b/buildroot/package/libite/libite.mk new file mode 100644 index 0000000..e88060d --- /dev/null +++ b/buildroot/package/libite/libite.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libite +# +################################################################################ + +LIBITE_VERSION = v1.9.2 +LIBITE_SITE = $(call github,troglobit,libite,$(LIBITE_VERSION)) +LIBITE_LICENSE = MIT, X11, ISC, BSD-2-Clause +LIBITE_LICENSE_FILES = LICENSE chomp.c pidfile.c +LIBITE_INSTALL_STAGING = YES +LIBITE_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libjpeg/libjpeg.hash b/buildroot/package/libjpeg/libjpeg.hash new file mode 100644 index 0000000..2ad7dda --- /dev/null +++ b/buildroot/package/libjpeg/libjpeg.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 240fd398da741669bf3c90366f58452ea59041cacc741a489b99f2f6a0bad052 jpegsrc.v9b.tar.gz diff --git a/buildroot/package/libjpeg/libjpeg.mk b/buildroot/package/libjpeg/libjpeg.mk new file mode 100644 index 0000000..36f084b --- /dev/null +++ b/buildroot/package/libjpeg/libjpeg.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libjpeg +# +################################################################################ + +LIBJPEG_VERSION = 9b +LIBJPEG_SITE = http://www.ijg.org/files +LIBJPEG_SOURCE = jpegsrc.v$(LIBJPEG_VERSION).tar.gz +LIBJPEG_LICENSE = IJG +LIBJPEG_LICENSE_FILES = README +LIBJPEG_INSTALL_STAGING = YES +LIBJPEG_PROVIDES = jpeg + +define LIBJPEG_REMOVE_USELESS_TOOLS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,cjpeg djpeg jpegtran rdjpgcom wrjpgcom) +endef + +LIBJPEG_POST_INSTALL_TARGET_HOOKS += LIBJPEG_REMOVE_USELESS_TOOLS + +define LIBJPEG_INSTALL_STAGING_PC + $(INSTALL) -D -m 0644 package/libjpeg/libjpeg.pc.in \ + $(STAGING_DIR)/usr/lib/pkgconfig/libjpeg.pc + version=`sed -e '/^PACKAGE_VERSION/!d;s/PACKAGE_VERSION = \(.*\)/\1/' $(@D)/Makefile` ; \ + $(SED) "s/@PACKAGE_VERSION@/$${version}/" $(STAGING_DIR)/usr/lib/pkgconfig/libjpeg.pc +endef + +LIBJPEG_POST_INSTALL_STAGING_HOOKS += LIBJPEG_INSTALL_STAGING_PC + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libjpeg/libjpeg.pc.in b/buildroot/package/libjpeg/libjpeg.pc.in new file mode 100644 index 0000000..59220ca --- /dev/null +++ b/buildroot/package/libjpeg/libjpeg.pc.in @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=/usr +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libjpeg +Description: A JPEG codec that provides the libjpeg API +Version: @PACKAGE_VERSION@ +Libs: -L${libdir} -ljpeg +Cflags: -I${includedir} diff --git a/buildroot/package/libjson/0001-fix-broken-makefile.patch b/buildroot/package/libjson/0001-fix-broken-makefile.patch new file mode 100644 index 0000000..8ceb0ca --- /dev/null +++ b/buildroot/package/libjson/0001-fix-broken-makefile.patch @@ -0,0 +1,16 @@ +Fix the broken libjson makefile. + +Signed-off-by: Simon Dawson + +diff -Nurp a/makefile b/makefile +--- a/makefile 2012-05-30 10:15:42.000000000 +0100 ++++ b/makefile 2013-03-27 18:45:34.814670534 +0000 +@@ -170,7 +170,7 @@ include_path = $(prefix)/$(includedi + # Usage check + ifdef CXXFLAGS + ifdef BUILD_TYPE +- $(error CXXFLAGS and BUILD_TYPE are mutually exclusive) ++$(error CXXFLAGS and BUILD_TYPE are mutually exclusive) + endif + endif + diff --git a/buildroot/package/libjson/Config.in b/buildroot/package/libjson/Config.in new file mode 100644 index 0000000..50a9931 --- /dev/null +++ b/buildroot/package/libjson/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBJSON + bool "libjson" + depends on BR2_INSTALL_LIBSTDCPP + help + A JSON reader and writer which is super-efficient and usually + runs circles around other JSON libraries. + + http://sourceforge.net/projects/libjson/ + +comment "libjson needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/libjson/libjson.hash b/buildroot/package/libjson/libjson.hash new file mode 100644 index 0000000..f3447ee --- /dev/null +++ b/buildroot/package/libjson/libjson.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 07267a3951038ee2e02d26cc41bf8e275668c38f751240d3e78dc979182e7376 libjson_7.6.1.zip diff --git a/buildroot/package/libjson/libjson.mk b/buildroot/package/libjson/libjson.mk new file mode 100644 index 0000000..74224ba --- /dev/null +++ b/buildroot/package/libjson/libjson.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# libjson +# +################################################################################ + +LIBJSON_VERSION = 7.6.1 +LIBJSON_SITE = http://downloads.sourceforge.net/project/libjson +LIBJSON_SOURCE = libjson_$(LIBJSON_VERSION).zip +LIBJSON_INSTALL_STAGING = YES +LIBJSON_LICENSE = BSD-2-Clause +LIBJSON_LICENSE_FILES = License.txt + +LIBJSON_CXXFLAGS = $(TARGET_CFLAGS) -DNDEBUG + +ifeq ($(BR2_STATIC_LIBS),y) +LIBJSON_MAKE_OPTS += SHARED=0 +else +LIBJSON_MAKE_OPTS += SHARED=1 +LIBJSON_CXXFLAGS += -fPIC +endif + +LIBJSON_MAKE_OPTS += BUILD_TYPE= CXXFLAGS="$(LIBJSON_CXXFLAGS)" + +define LIBJSON_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/$(LIBJSON_SOURCE) + mv $(@D)/libjson/* $(@D) + $(RM) -r $(@D)/libjson + $(SED) '/ldconfig/d' $(@D)/makefile +endef + +define LIBJSON_BUILD_CMDS + mkdir -p $(@D)/Objects_$(if $(BR2_STATIC_LIBS),static,shared) \ + $(@D)/_internal/Source/Dependencies + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(LIBJSON_MAKE_OPTS) -C $(@D) +endef + +define LIBJSON_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(LIBJSON_MAKE_OPTS) prefix=$(TARGET_DIR)/usr install -C $(@D) +endef + +define LIBJSON_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(LIBJSON_MAKE_OPTS) prefix=$(STAGING_DIR)/usr install -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libkcapi/0001-Have-sufficient-memory-size-for-message.patch b/buildroot/package/libkcapi/0001-Have-sufficient-memory-size-for-message.patch new file mode 100644 index 0000000..39e683f --- /dev/null +++ b/buildroot/package/libkcapi/0001-Have-sufficient-memory-size-for-message.patch @@ -0,0 +1,31 @@ +From b56deda7c13c257050fdbdd71c1a5a47b78aa63e Mon Sep 17 00:00:00 2001 +From: Stephan Mueller +Date: Thu, 3 Aug 2017 17:50:51 +0200 +Subject: [PATCH] Have sufficient memory size for message + +With GCC 7, the size of the buffer in snprintf is checked. The +occurrence here is found to be too small. + +Signed-off-by: Stephan Mueller +[Upstream commit: https://github.com/smuellerDD/libkcapi/commit/b56deda7c13c257050fdbdd71c1a5a47b78aa63e] +Signed-off-by: Marcin Nowakowski +--- + speed-test/cryptoperf-base.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/speed-test/cryptoperf-base.c b/speed-test/cryptoperf-base.c +index 8766ca7..07384ae 100644 +--- a/speed-test/cryptoperf-base.c ++++ b/speed-test/cryptoperf-base.c +@@ -172,7 +172,7 @@ char *cp_print_status(struct cp_test *test, int raw) + (unsigned long)(processed_bytes/totaltime), + (unsigned long)ops); + } else { +- #define VALLEN 10 ++ #define VALLEN 23 + char byteseconds[VALLEN + 1]; + + memset(byteseconds, 0, sizeof(byteseconds)); +-- +2.7.4 + diff --git a/buildroot/package/libkcapi/0002-Do-not-compile-unused-functions.patch b/buildroot/package/libkcapi/0002-Do-not-compile-unused-functions.patch new file mode 100644 index 0000000..97ab7fc --- /dev/null +++ b/buildroot/package/libkcapi/0002-Do-not-compile-unused-functions.patch @@ -0,0 +1,35 @@ +From 217b154a5f65d46064ceb69ce69664105e703a74 Mon Sep 17 00:00:00 2001 +From: Stephan Mueller +Date: Thu, 3 Aug 2017 17:52:48 +0200 +Subject: [PATCH] Do not compile unused functions + +GCC 7 now rightfully complains about unused functions. + +Signed-off-by: Stephan Mueller + +[Upstream commit: https://github.com/smuellerDD/libkcapi/commit/217b154a5f65d46064ceb69ce69664105e703a74] +Signed-off-by: Marcin Nowakowski +--- + apps/kcapi-rng.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/apps/kcapi-rng.c b/apps/kcapi-rng.c +index df7decf..e15edf9 100644 +--- a/apps/kcapi-rng.c ++++ b/apps/kcapi-rng.c +@@ -45,6 +45,7 @@ struct kcapi_handle *rng = NULL; + unsigned int Verbosity = 0; + char *rng_name = NULL; + ++#ifndef HAVE_GETRANDOM + static int read_complete(int fd, uint8_t *buf, uint32_t buflen) + { + ssize_t ret; +@@ -76,6 +77,7 @@ static int read_random(uint8_t *buf, uint32_t buflen) + close(fd); + return ret; + } ++#endif + + static int get_random(uint8_t *buf, uint32_t buflen) + { diff --git a/buildroot/package/libkcapi/0003-Unify-code-to-read-from-seed-sources.patch b/buildroot/package/libkcapi/0003-Unify-code-to-read-from-seed-sources.patch new file mode 100644 index 0000000..b636ffe --- /dev/null +++ b/buildroot/package/libkcapi/0003-Unify-code-to-read-from-seed-sources.patch @@ -0,0 +1,132 @@ +From 450dfb09ee72ffedea8f2a25fdce17295f01f62f Mon Sep 17 00:00:00 2001 +From: Stephan Mueller +Date: Tue, 8 Aug 2017 10:04:06 +0200 +Subject: [PATCH] Unify code to read from seed sources + +Remove the code duplication for FD reads and syscall reads. + +This patch also fixes the use of __NR_getrandom resolution. + +[Upstream commit: https://github.com/smuellerDD/libkcapi/commit/450dfb09ee72ffedea8f2a25fdce17295f01f62f] +Signed-off-by: Marcin Nowakowski + +--- + apps/kcapi-rng.c | 71 +++++++++++++++++++++++++------------------------------- + 1 file changed, 32 insertions(+), 39 deletions(-) + +diff --git a/apps/kcapi-rng.c b/apps/kcapi-rng.c +index e15edf9..96da111 100644 +--- a/apps/kcapi-rng.c ++++ b/apps/kcapi-rng.c +@@ -17,7 +17,9 @@ + * DAMAGE. + */ + ++#define _GNU_SOURCE + #include ++#include + #include + #include + #include +@@ -41,56 +43,48 @@ + /* Minimum seed is 256 bits. */ + #define KCAPI_RNG_MINSEEDSIZE 32 + +-struct kcapi_handle *rng = NULL; +-unsigned int Verbosity = 0; +-char *rng_name = NULL; ++static struct kcapi_handle *rng = NULL; ++static unsigned int Verbosity = 0; ++static char *rng_name = NULL; + +-#ifndef HAVE_GETRANDOM +-static int read_complete(int fd, uint8_t *buf, uint32_t buflen) ++#if !defined(HAVE_GETRANDOM) && !defined(__NR_getrandom) ++static int random_fd = -1; ++static int open_random(void) + { +- ssize_t ret; ++ random_fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC); ++ if (0 > random_fd) ++ return random_fd; + +- do { +- ret = read(fd, buf, buflen); +- if (0 < ret) { +- buflen -= ret; +- buf += ret; +- } +- } while ((0 < ret || EINTR == errno || ERESTART == errno) +- && buflen > 0); +- +- if (buflen == 0) +- return 0; +- return 1; ++ return 0; + } + +-static int read_random(uint8_t *buf, uint32_t buflen) ++static void close_random(void) + { +- int fd; +- int ret = 0; +- +- fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC); +- if (0 > fd) +- return fd; +- +- ret = read_complete(fd, buf, buflen); +- close(fd); +- return ret; ++ close(random_fd); + } + #endif + + static int get_random(uint8_t *buf, uint32_t buflen) + { ++ ssize_t ret; ++ + if (buflen > INT_MAX) + return 1; + ++#if (!defined(HAVE_GETRANDOM) && !defined(__NR_getrandom)) ++ ret = open_random(); ++ if (ret) ++ return ret; ++#endif ++ ++ do { + #ifdef HAVE_GETRANDOM +- return getrandom(buf, buflen, 0); ++ ret = getrandom(buf, buflen, 0); ++#elif defined __NR_getrandom ++ ret = syscall(__NR_getrandom, buf, buflen, 0); + #else +-# ifdef __NR_getrandom +- do { +- int ret = syscall(__NR_getrandom, buf, buflen, 0); +- ++ ret = read(random_fd, buf, buflen); ++#endif + if (0 < ret) { + buflen -= ret; + buf += ret; +@@ -98,14 +92,13 @@ static int get_random(uint8_t *buf, uint32_t buflen) + } while ((0 < ret || EINTR == errno || ERESTART == errno) + && buflen > 0); + ++#if (!defined(HAVE_GETRANDOM) && !defined(__NR_getrandom)) ++ close_random(); ++#endif ++ + if (buflen == 0) + return 0; +- + return 1; +-# else +- return read_random(buf, buflen); +-# endif +-#endif + } + + static void usage(void) diff --git a/buildroot/package/libkcapi/0004-internal.h-make-inline-functions-static.patch b/buildroot/package/libkcapi/0004-internal.h-make-inline-functions-static.patch new file mode 100644 index 0000000..a050173 --- /dev/null +++ b/buildroot/package/libkcapi/0004-internal.h-make-inline-functions-static.patch @@ -0,0 +1,103 @@ +From 2b9e01ee31c1b7596b19f0c89954e93e217b0479 Mon Sep 17 00:00:00 2001 +From: Marcin Nowakowski +Date: Thu, 21 Sep 2017 10:16:33 +0200 +Subject: [PATCH] internal.h: make inline functions static + +With some GCC configurations/build options it is possible for gcc to +ignore the inline hint. As the methods are not declared static, gcc +expects a definition to be provided elsewhere, which is not the case +here resulting in the following linker error: + +libtool: link: /home/marcin/br-test-pkg/br-arm-cortex-a9-glibc/host/bin/arm-linux-gcc +-fstack-protector-strong -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE +-D_FILE_OFFSET_BITS=64 -Os -Wl,-z -Wl,relro -Wl,-z -Wl,now -o bin/kcapi +test/bin_kcapi-kcapi-main.o ./.libs/libkcapi.so -Wl,-rpath +-Wl,/home/marcin/br-test-pkg/br-arm-cortex-a9-glibc/build/libkcapi-0.14.0/.libs +./.libs/libkcapi.so: undefined reference to `_kcapi_common_vmsplice_iov' +./.libs/libkcapi.so: undefined reference to `_kcapi_common_read_data' +./.libs/libkcapi.so: undefined reference to `_kcapi_aio_read_iov' +./.libs/libkcapi.so: undefined reference to `_kcapi_common_recv_data' +./.libs/libkcapi.so: undefined reference to `_kcapi_common_send_data' +./.libs/libkcapi.so: undefined reference to `_kcapi_common_vmsplice_chunk' +./.libs/libkcapi.so: undefined reference to `_kcapi_common_send_meta' +collect2: error: ld returned 1 exit status + +$ arm-linux-gcc --version +arm-linux-gcc.br_real (Buildroot 2017.08-git-01078-g95b1dae) 7.1.0 + +Signed-off-by: Marcin Nowakowski +Signed-off-by: Stephan Mueller + +[Upstream commit: https://github.com/smuellerDD/libkcapi/commit/2b9e01ee31c1b7596b19f0c89954e93e217b0479] +Signed-off-by: Marcin Nowakowski +--- + lib/internal.h | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/lib/internal.h b/lib/internal.h +index 0d98f24..addf450 100644 +--- a/lib/internal.h ++++ b/lib/internal.h +@@ -233,7 +233,7 @@ void kcapi_dolog(int severity, const char *fmt, ...); + int32_t _kcapi_common_send_meta_fd(struct kcapi_handle *handle, int *fdptr, + struct iovec *iov, uint32_t iovlen, + uint32_t enc, uint32_t flags); +-inline int32_t _kcapi_common_send_meta(struct kcapi_handle *handle, ++static inline int32_t _kcapi_common_send_meta(struct kcapi_handle *handle, + struct iovec *iov, uint32_t iovlen, + uint32_t enc, uint32_t flags) + { +@@ -244,7 +244,7 @@ inline int32_t _kcapi_common_send_meta(struct kcapi_handle *handle, + int32_t _kcapi_common_vmsplice_iov_fd(struct kcapi_handle *handle, int *fdptr, + struct iovec *iov, unsigned long iovlen, + uint32_t flags); +-inline int32_t _kcapi_common_vmsplice_iov(struct kcapi_handle *handle, ++static inline int32_t _kcapi_common_vmsplice_iov(struct kcapi_handle *handle, + struct iovec *iov, unsigned long iovlen, + uint32_t flags) + { +@@ -255,7 +255,7 @@ inline int32_t _kcapi_common_vmsplice_iov(struct kcapi_handle *handle, + int32_t _kcapi_common_send_data_fd(struct kcapi_handle *handle, int *fdprt, + struct iovec *iov, uint32_t iovlen, + uint32_t flags); +-inline int32_t _kcapi_common_send_data(struct kcapi_handle *handle, ++static inline int32_t _kcapi_common_send_data(struct kcapi_handle *handle, + struct iovec *iov, uint32_t iovlen, + uint32_t flags) + { +@@ -265,7 +265,7 @@ inline int32_t _kcapi_common_send_data(struct kcapi_handle *handle, + + int32_t _kcapi_common_recv_data_fd(struct kcapi_handle *handle, int *fdptr, + struct iovec *iov, uint32_t iovlen); +-inline int32_t _kcapi_common_recv_data(struct kcapi_handle *handle, ++static inline int32_t _kcapi_common_recv_data(struct kcapi_handle *handle, + struct iovec *iov, uint32_t iovlen) + { + return _kcapi_common_recv_data_fd(handle, &handle->opfd, iov, iovlen); +@@ -273,7 +273,7 @@ inline int32_t _kcapi_common_recv_data(struct kcapi_handle *handle, + + int32_t _kcapi_common_read_data_fd(struct kcapi_handle *handle, int *fdptr, + uint8_t *out, uint32_t outlen); +-inline int32_t _kcapi_common_read_data(struct kcapi_handle *handle, ++static inline int32_t _kcapi_common_read_data(struct kcapi_handle *handle, + uint8_t *out, uint32_t outlen) + { + return _kcapi_common_read_data_fd(handle, &handle->opfd, out, outlen); +@@ -285,7 +285,7 @@ int _kcapi_common_close(struct kcapi_handle *handle, int fdptr); + int32_t _kcapi_common_vmsplice_chunk_fd(struct kcapi_handle *handle, int *fdptr, + const uint8_t *in, uint32_t inlen, + uint32_t flags); +-inline int32_t _kcapi_common_vmsplice_chunk(struct kcapi_handle *handle, ++static inline int32_t _kcapi_common_vmsplice_chunk(struct kcapi_handle *handle, + const uint8_t *in, uint32_t inlen, + uint32_t flags) + { +@@ -315,7 +315,7 @@ int _kcapi_aio_send_iov(struct kcapi_handle *handle, struct iovec *iov, + + int32_t _kcapi_aio_read_iov_fd(struct kcapi_handle *handle, int *fdptr, + struct iovec *iov, uint32_t iovlen); +-inline int32_t _kcapi_aio_read_iov(struct kcapi_handle *handle, ++static inline int32_t _kcapi_aio_read_iov(struct kcapi_handle *handle, + struct iovec *iov, uint32_t iovlen) + { + return _kcapi_aio_read_iov_fd(handle, &handle->opfd, iov, iovlen); diff --git a/buildroot/package/libkcapi/Config.in b/buildroot/package/libkcapi/Config.in new file mode 100644 index 0000000..2b98177 --- /dev/null +++ b/buildroot/package/libkcapi/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBKCAPI + bool "libkcapi" + help + Linux Kernel Crypto API userspace interface library + + http://www.chronox.de/libkcapi.html + +if BR2_PACKAGE_LIBKCAPI + +config BR2_PACKAGE_LIBKCAPI_APPS + bool "build test applications" + depends on BR2_USE_MMU # fork() + help + Build additional test applications that can provide + performance or algorithm tests. + +endif diff --git a/buildroot/package/libkcapi/libkcapi.hash b/buildroot/package/libkcapi/libkcapi.hash new file mode 100644 index 0000000..9873e66 --- /dev/null +++ b/buildroot/package/libkcapi/libkcapi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 411fc32b3e36ac0268837a8d4538eb8aef487b3a3e9b21a2b88b8ed2f926edf3 libkcapi-0.14.0.tar.xz diff --git a/buildroot/package/libkcapi/libkcapi.mk b/buildroot/package/libkcapi/libkcapi.mk new file mode 100644 index 0000000..d21c81b --- /dev/null +++ b/buildroot/package/libkcapi/libkcapi.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libkcapi +# +################################################################################ + +LIBKCAPI_VERSION = 0.14.0 +LIBKCAPI_SOURCE = libkcapi-$(LIBKCAPI_VERSION).tar.xz +LIBKCAPI_SITE = http://www.chronox.de/libkcapi +LIBKCAPI_AUTORECONF = YES +LIBKCAPI_INSTALL_STAGING = YES +LIBKCAPI_LICENSE = BSD-3-Clause (library), BSD-3-Clause or GPL-2.0 (programs) +LIBKCAPI_LICENSE_FILES = COPYING COPYING.gplv2 COPYING.bsd + +ifeq ($(BR2_PACKAGE_LIBKCAPI_APPS),y) +LIBKCAPI_CONF_OPTS += \ + --enable-kcapi-speed \ + --enable-kcapi-test \ + --enable-kcapi-hasher \ + --enable-kcapi-rngapp +else +LIBKCAPI_CONF_OPTS += \ + --disable-kcapi-speed \ + --disable-kcapi-test \ + --disable-kcapi-hasher \ + --disable-kcapi-rngapp +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libksba/Config.in b/buildroot/package/libksba/Config.in new file mode 100644 index 0000000..1f25d6d --- /dev/null +++ b/buildroot/package/libksba/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBKSBA + bool "libksba" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + select BR2_PACKAGE_LIBGPG_ERROR + help + CMS and X.509 library + + https://www.gnupg.org/related_software/libksba/ diff --git a/buildroot/package/libksba/libksba.hash b/buildroot/package/libksba/libksba.hash new file mode 100644 index 0000000..f0a38f3 --- /dev/null +++ b/buildroot/package/libksba/libksba.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 41444fd7a6ff73a79ad9728f985e71c9ba8cd3e5e53358e70d5f066d35c1a340 libksba-1.3.5.tar.bz2 diff --git a/buildroot/package/libksba/libksba.mk b/buildroot/package/libksba/libksba.mk new file mode 100644 index 0000000..25b17a4 --- /dev/null +++ b/buildroot/package/libksba/libksba.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libksba +# +################################################################################ + +LIBKSBA_VERSION = 1.3.5 +LIBKSBA_SOURCE = libksba-$(LIBKSBA_VERSION).tar.bz2 +LIBKSBA_SITE = ftp://ftp.gnupg.org/gcrypt/libksba +LIBKSBA_LICENSE = LGPL-3.0+ or GPL-2.0+ (library, headers), GPL-3.0+ (manual, tests, build system) +LIBKSBA_LICENSE_FILES = AUTHORS COPYING COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv3 +LIBKSBA_INSTALL_STAGING = YES +LIBKSBA_DEPENDENCIES = libgpg-error +LIBKSBA_CONF_OPTS = --with-gpg-error-prefix=$(STAGING_DIR)/usr + +$(eval $(autotools-package)) diff --git a/buildroot/package/libldns/Config.in b/buildroot/package/libldns/Config.in new file mode 100644 index 0000000..696fec9 --- /dev/null +++ b/buildroot/package/libldns/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBLDNS + bool "libldns" + select BR2_PACKAGE_OPENSSL + help + The goal of ldns is to simplify DNS programming, it supports + recent RFCs like the DNSSEC documents, and allows developers + to easily create software conforming to current RFCs, and + experimental software for current Internet Drafts. + + http://www.nlnetlabs.nl/projects/ldns diff --git a/buildroot/package/libldns/libldns.hash b/buildroot/package/libldns/libldns.hash new file mode 100644 index 0000000..dc6b1a3 --- /dev/null +++ b/buildroot/package/libldns/libldns.hash @@ -0,0 +1,4 @@ +# From http://www.nlnetlabs.nl/downloads/ldns/ldns-1.7.0.tar.gz.sha1 +sha1 ceeeccf8a27e61a854762737f6ee02f44662c1b8 ldns-1.7.0.tar.gz +# From http://www.nlnetlabs.nl/downloads/ldns/ldns-1.7.0.tar.gz.sha256 +sha256 c19f5b1b4fb374cfe34f4845ea11b1e0551ddc67803bd6ddd5d2a20f0997a6cc ldns-1.7.0.tar.gz diff --git a/buildroot/package/libldns/libldns.mk b/buildroot/package/libldns/libldns.mk new file mode 100644 index 0000000..d3c89bb --- /dev/null +++ b/buildroot/package/libldns/libldns.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# libldns +# +################################################################################ + +LIBLDNS_VERSION = 1.7.0 +LIBLDNS_SOURCE = ldns-$(LIBLDNS_VERSION).tar.gz +LIBLDNS_SITE = http://www.nlnetlabs.nl/downloads/ldns +LIBLDNS_LICENSE = BSD-3-Clause +LIBLDNS_LICENSE_FILES = LICENSE +LIBLDNS_INSTALL_STAGING = YES +LIBLDNS_DEPENDENCIES = openssl +# --disable-dane-verify can be removed after openssl bump to 1.1.x +LIBLDNS_CONF_OPTS = \ + --with-ssl=$(STAGING_DIR)/usr \ + --enable-dane \ + --disable-dane-verify \ + --enable-ecdsa \ + --enable-gost \ + --enable-sha2 \ + --without-examples \ + --without-p5-dns-ldns \ + --without-pyldns \ + --without-pyldnsx + +ifeq ($(BR2_STATIC_LIBS),y) +LIBLDNS_DEPENDENCIES += host-pkgconf +# missing -lz breaks configure, add it using pkgconf +LIBLDNS_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs openssl`" +endif + +# the linktest make target fails with static linking, and we are only +# interested in the lib target anyway +LIBLDNS_MAKE_OPTS = lib + +$(eval $(autotools-package)) diff --git a/buildroot/package/liblinear/0001-blas-don-t-overwrite-ar-options.patch b/buildroot/package/liblinear/0001-blas-don-t-overwrite-ar-options.patch new file mode 100644 index 0000000..5d1ef3f --- /dev/null +++ b/buildroot/package/liblinear/0001-blas-don-t-overwrite-ar-options.patch @@ -0,0 +1,35 @@ +From cae4c3b80fee0f3637d70f6d33946888c8105637 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 13 Dec 2014 17:16:58 +0100 +Subject: [PATCH 1/1] blas: don't overwrite ar options + +ar's rcv options get lost when AR is passed on +the command line. + +Signed-off-by: Romain Naour +--- + blas/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/blas/Makefile b/blas/Makefile +index 895fd24..78cec9a 100644 +--- a/blas/Makefile ++++ b/blas/Makefile +@@ -1,4 +1,4 @@ +-AR = ar rcv ++AR = ar + RANLIB = ranlib + + HEADERS = blas.h blasp.h +@@ -8,7 +8,7 @@ CFLAGS = $(OPTFLAGS) + FFLAGS = $(OPTFLAGS) + + blas: $(FILES) $(HEADERS) +- $(AR) blas.a $(FILES) ++ $(AR) rcv blas.a $(FILES) + $(RANLIB) blas.a + + clean: +-- +1.9.3 + diff --git a/buildroot/package/liblinear/0002-build-static-lib.patch b/buildroot/package/liblinear/0002-build-static-lib.patch new file mode 100644 index 0000000..98657d3 --- /dev/null +++ b/buildroot/package/liblinear/0002-build-static-lib.patch @@ -0,0 +1,18 @@ +Makefile: add a rule to build a static library + +Signed-off-by: "Yann E. MORIN" +diff -durN liblinear-1.96.orig/Makefile liblinear-1.96/Makefile +--- liblinear-1.96.orig/Makefile 2014-11-15 07:50:23.000000000 +0100 ++++ liblinear-1.96/Makefile 2014-12-14 00:23:00.135893956 +0100 +@@ -16,6 +16,11 @@ + fi; \ + $(CXX) $${SHARED_LIB_FLAG} linear.o tron.o blas/blas.a -o liblinear.so.$(SHVER) + ++# Keeping blas/blas.a as a pre-requisite, to ensure all .o files are built ++static-lib: linear.o tron.o blas/blas.a ++ $(AR) rcv liblinear.a linear.o tron.o blas/*.o ++ $(RANLIB) liblinear.a ++ + train: tron.o linear.o train.c blas/blas.a + $(CXX) $(CFLAGS) -o train train.c tron.o linear.o $(LIBS) + diff --git a/buildroot/package/liblinear/Config.in b/buildroot/package/liblinear/Config.in new file mode 100644 index 0000000..cabcba0 --- /dev/null +++ b/buildroot/package/liblinear/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBLINEAR + bool "liblinear" + depends on BR2_INSTALL_LIBSTDCPP + help + liblinear is a linear classifier for data with millions of + instances and features. + + http://www.csie.ntu.edu.tw/~cjlin/liblinear/ + +comment "liblinear needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/liblinear/liblinear.hash b/buildroot/package/liblinear/liblinear.hash new file mode 100644 index 0000000..4f03fa4 --- /dev/null +++ b/buildroot/package/liblinear/liblinear.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 fa5c12dedc76ffca12f1681de7073b03af68163c4e4be65194217c99e55a7d68 liblinear-2.1.tar.gz diff --git a/buildroot/package/liblinear/liblinear.mk b/buildroot/package/liblinear/liblinear.mk new file mode 100644 index 0000000..84527ab --- /dev/null +++ b/buildroot/package/liblinear/liblinear.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# liblinear +# +################################################################################ + +LIBLINEAR_VERSION = 2.1 +LIBLINEAR_SITE = http://www.csie.ntu.edu.tw/~cjlin/liblinear +LIBLINEAR_LICENSE = BSD-3-Clause +LIBLINEAR_LICENSE_FILES = COPYRIGHT +LIBLINEAR_INSTALL_STAGING = YES +LIBLINEAR_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +# $1: destination directory +define LIBLINEAR_INSTALL_SHARED + $(INSTALL) -m 0644 -D $(@D)/liblinear.so.3 $(1)/usr/lib/liblinear.so.3 + ln -sf liblinear.so.3 $(1)/usr/lib/liblinear.so +endef +LIBLINEAR_CFLAGS += -fPIC +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +# $1: destination directory +define LIBLINEAR_INSTALL_STATIC + $(INSTALL) -m 0644 -D $(@D)/liblinear.a $(1)/usr/lib/liblinear.a +endef +endif + +define LIBLINEAR_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(LIBLINEAR_CFLAGS)" -C $(@D) \ + $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),lib) \ + $(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),static-lib) +endef + +define LIBLINEAR_INSTALL_STAGING_CMDS + $(INSTALL) -m 0644 -D $(@D)/linear.h $(STAGING_DIR)/usr/include/linear.h + $(call LIBLINEAR_INSTALL_SHARED,$(STAGING_DIR)) + $(call LIBLINEAR_INSTALL_STATIC,$(STAGING_DIR)) +endef + +define LIBLINEAR_INSTALL_TARGET_CMDS + $(call LIBLINEAR_INSTALL_SHARED,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libllcp/Config.in b/buildroot/package/libllcp/Config.in new file mode 100644 index 0000000..1660e92 --- /dev/null +++ b/buildroot/package/libllcp/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBLLCP + bool "libllcp" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBNFC + help + Library extending libnfc with support for Logical Link Control + Protocol. + + https://github.com/nfc-tools/libllcp diff --git a/buildroot/package/libllcp/libllcp.hash b/buildroot/package/libllcp/libllcp.hash new file mode 100644 index 0000000..47c909f --- /dev/null +++ b/buildroot/package/libllcp/libllcp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4336533304a11ecb3041d211ccecd7759b7c7aad4f44037721803e2da1094d22 libllcp-05dfa8003433a7070bfd8ae02efdb0203bbf34aa.tar.gz diff --git a/buildroot/package/libllcp/libllcp.mk b/buildroot/package/libllcp/libllcp.mk new file mode 100644 index 0000000..ad4fca6 --- /dev/null +++ b/buildroot/package/libllcp/libllcp.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libllcp +# +################################################################################ + +LIBLLCP_VERSION = 05dfa8003433a7070bfd8ae02efdb0203bbf34aa +LIBLLCP_SITE = $(call github,nfc-tools,libllcp,$(LIBLLCP_VERSION)) +LIBLLCP_DEPENDENCIES = host-pkgconf libnfc +# There's no ./configure in the repository, so we need to autoreconf +LIBLLCP_AUTORECONF = YES +LIBLLCP_INSTALL_STAGING = YES +LIBLLCP_LICENSE = GPL-3.0+ +LIBLLCP_LICENSE_FILES = COPYING +# ensure graphviz isn't used +LIBLLCP_CONF_ENV = ac_cv_path_DOT= + +$(eval $(autotools-package)) diff --git a/buildroot/package/liblo/Config.in b/buildroot/package/liblo/Config.in new file mode 100644 index 0000000..705ac84 --- /dev/null +++ b/buildroot/package/liblo/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBLO + bool "liblo" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + liblo is an implementation of the Open Sound Control + protocol for POSIX systems + + http://liblo.sourceforge.net/ + +comment "liblo needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/liblo/liblo.hash b/buildroot/package/liblo/liblo.hash new file mode 100644 index 0000000..a4e01a6 --- /dev/null +++ b/buildroot/package/liblo/liblo.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/liblo/files/liblo/0.26/ +sha1 21942c8f19e9829b5842cb85352f98c49dfbc823 liblo-0.26.tar.gz +md5 5351de14262560e15e7f23865293b16f liblo-0.26.tar.gz diff --git a/buildroot/package/liblo/liblo.mk b/buildroot/package/liblo/liblo.mk new file mode 100644 index 0000000..3c852be --- /dev/null +++ b/buildroot/package/liblo/liblo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# liblo +# +################################################################################ + +LIBLO_VERSION = 0.26 +LIBLO_SITE = http://downloads.sourceforge.net/project/liblo/liblo/$(LIBLO_VERSION) + +LIBLO_LICENSE = LGPL-2.1+ +LIBLO_LICENSE_FILES = COPYING +LIBLO_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/liblockfile/0001-install.patch b/buildroot/package/liblockfile/0001-install.patch new file mode 100644 index 0000000..bfa197c --- /dev/null +++ b/buildroot/package/liblockfile/0001-install.patch @@ -0,0 +1,16 @@ +diff -ur liblockfile-1.06.1/Makefile.in liblockfile-1.06.1-patched/Makefile.in +--- liblockfile-1.06.1/Makefile.in 2001-03-16 22:08:33.000000000 -0600 ++++ liblockfile-1.06.1-patched/Makefile.in 2007-04-11 07:18:38.000000000 -0500 +@@ -60,11 +60,7 @@ + + install_common: + install -m 644 lockfile.h maillock.h $(ROOT)$(includedir) +- if [ "$(MAILGROUP)" != "" ]; then\ +- install -g $(MAILGROUP) -m 2755 dotlockfile $(ROOT)$(bindir);\ +- else \ +- install -g root -m 755 dotlockfile $(ROOT)$(bindir); \ +- fi ++ install -m 2755 dotlockfile $(ROOT)$(bindir);\ + install -m 644 *.1 $(ROOT)$(mandir)/man1 + install -m 644 *.3 $(ROOT)$(mandir)/man3 + diff --git a/buildroot/package/liblockfile/Config.in b/buildroot/package/liblockfile/Config.in new file mode 100644 index 0000000..88a9c33 --- /dev/null +++ b/buildroot/package/liblockfile/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_LIBLOCKFILE + bool "liblockfile" + help + NFS-safe locking library. diff --git a/buildroot/package/liblockfile/liblockfile.hash b/buildroot/package/liblockfile/liblockfile.hash new file mode 100644 index 0000000..4421673 --- /dev/null +++ b/buildroot/package/liblockfile/liblockfile.hash @@ -0,0 +1,3 @@ +# From http://snapshot.debian.org/archive/debian/20151026T153523Z/pool/main/libl/liblockfile/liblockfile_1.09-6.dsc +sha256 16979eba05396365e1d6af7100431ae9d32f9bc063930d1de66298a0695f1b7f liblockfile_1.09.orig.tar.gz +sha256 d45eacb7c637c16d03c777c55989d98da494ae9584a0783fe6dbf0db60fa290f liblockfile_1.09-6.debian.tar.bz2 diff --git a/buildroot/package/liblockfile/liblockfile.mk b/buildroot/package/liblockfile/liblockfile.mk new file mode 100644 index 0000000..0710868 --- /dev/null +++ b/buildroot/package/liblockfile/liblockfile.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# liblockfile +# +################################################################################ + +LIBLOCKFILE_VERSION = 1.09 +LIBLOCKFILE_SOURCE = liblockfile_$(LIBLOCKFILE_VERSION).orig.tar.gz +LIBLOCKFILE_SITE = http://snapshot.debian.org/archive/debian/20151026T153523Z/pool/main/libl/liblockfile +LIBLOCKFILE_PATCH = liblockfile_$(LIBLOCKFILE_VERSION)-6.debian.tar.bz2 + +LIBLOCKFILE_LICENSE = LGPL-2.0+, GPL-2.0+ (dotlockfile) +LIBLOCKFILE_LICENSE_FILES = COPYRIGHT + +LIBLOCKFILE_INSTALL_STAGING = YES +LIBLOCKFILE_CONF_OPTS = --mandir=/usr/share/man + +define LIBLOCKFILE_INSTALL_STAGING_CMDS + mkdir -p $(addprefix $(STAGING_DIR)/usr/share/man/man,1 3) + rm -f $(STAGING_DIR)/usr/lib/liblockfile.so + $(TARGET_MAKE_ENV) $(MAKE) -C $(LIBLOCKFILE_DIR) ROOT=$(STAGING_DIR) install + ln -sf liblockfile.so $(STAGING_DIR)/usr/lib/liblockfile.so.1 +endef + +define LIBLOCKFILE_INSTALL_TARGET_CMDS + cp -a $(STAGING_DIR)/usr/lib/liblockfile.so* $(TARGET_DIR)/usr/lib +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/liblog4c-localtime/0001-log4c.m4-fix-underquoted-definition-of-AM_PATH_LOG4C.patch b/buildroot/package/liblog4c-localtime/0001-log4c.m4-fix-underquoted-definition-of-AM_PATH_LOG4C.patch new file mode 100644 index 0000000..1fe0798 --- /dev/null +++ b/buildroot/package/liblog4c-localtime/0001-log4c.m4-fix-underquoted-definition-of-AM_PATH_LOG4C.patch @@ -0,0 +1,34 @@ +From b7290560082e91673431de79e1fa318c9fd90261 Mon Sep 17 00:00:00 2001 +From: Danomi Manchego +Date: Sat, 25 Oct 2014 19:42:38 +0200 +Subject: [PATCH 1/5] log4c.m4: fix "underquoted definition of AM_PATH_LOG4C" + warning + +When autoreconfiguring liblog4c-localtime, there is a warning from +autoconf caused by an underquoted definition of AM_PATH_LOG4C. This +patch fixes this warning. + +Submitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1 + +Signed-off-by: Danomi Manchego +Signed-off-by: Thomas Petazzoni +--- + log4c.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/log4c.m4 b/log4c.m4 +index 551a90d..96424c0 100644 +--- a/log4c.m4 ++++ b/log4c.m4 +@@ -4,7 +4,7 @@ + dnl AM_PATH_LOG4C([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) + dnl Test for LOG4C, and define LOG4C_CFLAGS and LOG4C_LIBS + dnl +-AC_DEFUN(AM_PATH_LOG4C, ++AC_DEFUN([AM_PATH_LOG4C], + [dnl + dnl Get the cflags and libraries from the log4c-config script + dnl +-- +2.0.0 + diff --git a/buildroot/package/liblog4c-localtime/0002-Fix-linking-error-without-pthread.patch b/buildroot/package/liblog4c-localtime/0002-Fix-linking-error-without-pthread.patch new file mode 100644 index 0000000..5b679e3 --- /dev/null +++ b/buildroot/package/liblog4c-localtime/0002-Fix-linking-error-without-pthread.patch @@ -0,0 +1,38 @@ +From 435b28cd90973cc03a533e75e90a46cd9f197dff Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Sat, 25 Oct 2014 19:44:01 +0200 +Subject: [PATCH 2/5] Fix linking error without pthread + +The rollingfile functionality only gets built if pthread support is +available, but a call to these functions from log4c_fini() was outside +the #if WITH_ROLLINGFILE conditional, causing linker errors when the +library is used. + +Submitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1 + +Signed-off-by: Peter Korsgaard +Signed-off-by: Thomas Petazzoni +--- + src/log4c/init.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/log4c/init.c b/src/log4c/init.c +index 99883ea..7dd9eb4 100644 +--- a/src/log4c/init.c ++++ b/src/log4c/init.c +@@ -267,10 +267,12 @@ extern int log4c_fini(void) + log4c_layout_factory = NULL; + } + ++#ifdef WITH_ROLLINGFILE + if (log4c_rollingpolicy_factory) { + sd_factory_delete(log4c_rollingpolicy_factory); + log4c_rollingpolicy_factory = NULL; + } ++#endif + + #ifdef __SD_DEBUG__ + if( getenv("SD_DEBUG")){ +-- +2.0.0 + diff --git a/buildroot/package/liblog4c-localtime/0003-Fix-debug-mode-build-with-uClibc.patch b/buildroot/package/liblog4c-localtime/0003-Fix-debug-mode-build-with-uClibc.patch new file mode 100644 index 0000000..4b9a45d --- /dev/null +++ b/buildroot/package/liblog4c-localtime/0003-Fix-debug-mode-build-with-uClibc.patch @@ -0,0 +1,69 @@ +From acbaee34bcb1881db97969dd2c411446f32ca4cc Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 25 Oct 2014 19:45:33 +0200 +Subject: [PATCH 3/5] Fix debug mode build with uClibc + +When --enable-debug is passed, liblog4c-localtime wants to use +. It takes the precaution of testing if __GLIBC__ is +defined. But unfortunately, the uClibc C library pretends to be +compatible with glibc by defining __GLIBC__, but it doesn't provide +mcheck.h. + +To better support this situation, we add an AC_CHECK_HEADERS() check +on mcheck.h, and then use HAVE_MCHECK_H were appropriate. + +Submitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1 + +Signed-off-by: Thomas Petazzoni +--- + configure.in | 2 +- + src/log4c/init.c | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.in b/configure.in +index 612ccbe..dbf11e9 100644 +--- a/configure.in ++++ b/configure.in +@@ -115,7 +115,7 @@ AM_CONDITIONAL(TEST, test x$enable_test = xyes) + AC_HEADER_STDC + AC_CHECK_HEADERS([fcntl.h inttypes.h langinfo.h limits.h stddef.h stdint.h \ + stdlib.h string.h sys/time.h syslog.h unistd.h stdarg.h varargs.h getopt.h \ +-pthread.h]) ++pthread.h mcheck.h]) + + # Checks for typedefs, structures, and compiler characteristics. + AC_C_CONST +diff --git a/src/log4c/init.c b/src/log4c/init.c +index 7dd9eb4..4b88210 100644 +--- a/src/log4c/init.c ++++ b/src/log4c/init.c +@@ -35,7 +35,7 @@ static const char version[] = "$Id$"; + #include + #include + +-#if defined(__LOG4C_DEBUG__) && defined(__GLIBC__) ++#if defined(__LOG4C_DEBUG__) && defined(HAVE_MCHECK_H) + #include + #endif + +@@ -100,7 +100,7 @@ extern int log4c_init(void) + sd_debug("log4c_init["); + + /* activate GLIBC allocation debugging */ +-#if defined(__LOG4C_DEBUG__) && defined(__GLIBC__) ++#if defined(__LOG4C_DEBUG__) && defined(HAVE_MCHECK_H) + mtrace(); + #endif + +@@ -280,7 +280,7 @@ extern int log4c_fini(void) + log4c_dump_all_instances(stderr); + } + #endif +-#if defined(__LOG4C_DEBUG__) && defined(__GLIBC__) ++#if defined(__LOG4C_DEBUG__) && defined(HAVE_MCHECK_H) + muntrace(); + #endif + +-- +2.0.0 + diff --git a/buildroot/package/liblog4c-localtime/0004-Add-AC_CONFIG_MACRO_DIR-to-configure.in.patch b/buildroot/package/liblog4c-localtime/0004-Add-AC_CONFIG_MACRO_DIR-to-configure.in.patch new file mode 100644 index 0000000..479eb39 --- /dev/null +++ b/buildroot/package/liblog4c-localtime/0004-Add-AC_CONFIG_MACRO_DIR-to-configure.in.patch @@ -0,0 +1,30 @@ +From a2553c203d8b8257dea1d2e2139b220935587144 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 25 Oct 2014 20:03:25 +0200 +Subject: [PATCH 4/5] Add AC_CONFIG_MACRO_DIR to configure.in + +Without AC_CONFIG_MACRO_DIR, when autoreconfiguring the package, it +cannot find AM_PATH_EXPAT which is defined in config/expat.m4. + +Submitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1 + +Signed-off-by: Thomas Petazzoni +--- + configure.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.in b/configure.in +index dbf11e9..769b204 100644 +--- a/configure.in ++++ b/configure.in +@@ -5,6 +5,7 @@ AC_PREREQ(2.57) + AC_INIT + AC_CONFIG_SRCDIR([configure.in]) + AC_CONFIG_AUX_DIR(config) ++AC_CONFIG_MACRO_DIR([config]) + AM_CONFIG_HEADER(src/config.h) + + LOG4C_MAJOR_VERSION=1 +-- +2.0.0 + diff --git a/buildroot/package/liblog4c-localtime/0005-Fix-C-support.patch b/buildroot/package/liblog4c-localtime/0005-Fix-C-support.patch new file mode 100644 index 0000000..6ba25c3 --- /dev/null +++ b/buildroot/package/liblog4c-localtime/0005-Fix-C-support.patch @@ -0,0 +1,61 @@ +From bdccec4c374a93480a7fd303d15e20810a5d5b7e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 25 Oct 2014 21:22:40 +0200 +Subject: [PATCH 5/5] Fix C++ support + +Autoreconf fails with the following message: + +tests/log4c/Makefile.am: error: C++ source seen but 'CXX' is undefined + +So this commit adds the AC_PROG_CXX macro to configure.in, and ensures +that the C++ test is only built if a C++ compiler is available. + +Submitted upstream: https://github.com/rcmadruga/log4c-localtime/pull/1 + +Signed-off-by: Thomas Petazzoni +--- + configure.in | 3 +++ + tests/log4c/Makefile.am | 6 +++++- + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/configure.in b/configure.in +index 769b204..ce75800 100644 +--- a/configure.in ++++ b/configure.in +@@ -38,6 +38,7 @@ AC_DEFINE(_GNU_SOURCE,1,"POSIXandGNU extensions") + #. + AC_PROG_YACC + AC_PROG_CC ++AC_PROG_CXX + AC_PROG_CPP + AM_PROG_LEX + AC_PROG_AWK +@@ -47,6 +48,8 @@ AC_PROG_MAKE_SET + AC_PROG_RANLIB + AC_PROG_LIBTOOL + ++AM_CONDITIONAL([USE_CXX], [test "$ac_cv_prog_CXX" != "no"]) ++ + # platform idioms + case "$host" in + *-hp-hpux*) +diff --git a/tests/log4c/Makefile.am b/tests/log4c/Makefile.am +index f647f27..b1b4ed6 100644 +--- a/tests/log4c/Makefile.am ++++ b/tests/log4c/Makefile.am +@@ -3,7 +3,11 @@ INCLUDES = \ + -DSRCDIR="\"$(srcdir)\"" + + noinst_PROGRAMS = test_category test_rc bench bench_fwrite \ +- test_stream2 test_layout_r cpp_compile_test ++ test_stream2 test_layout_r ++ ++if USE_CXX ++noinst_PROGRAMS += cpp_compile_test ++endif + + if WITH_ROLLINGFILE + noinst_PROGRAMS += test_rollingfile_appender test_rollingfile_appender_mt +-- +2.0.0 + diff --git a/buildroot/package/liblog4c-localtime/Config.in b/buildroot/package/liblog4c-localtime/Config.in new file mode 100644 index 0000000..fd6cab8 --- /dev/null +++ b/buildroot/package/liblog4c-localtime/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBLOG4C_LOCALTIME + bool "liblog4c-localtime" + select BR2_PACKAGE_EXPAT + help + Log4c is a library of C for flexible logging to files, syslog + and other destinations. + This version is with localtime patch, to make lib show times + in local timezone. + + https://github.com/rcmadruga/log4c-localtime + http://log4c.sourceforge.net/ diff --git a/buildroot/package/liblog4c-localtime/liblog4c-localtime.hash b/buildroot/package/liblog4c-localtime/liblog4c-localtime.hash new file mode 100644 index 0000000..2e4e641 --- /dev/null +++ b/buildroot/package/liblog4c-localtime/liblog4c-localtime.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a1f68d8251509c0171f8bfea42f9e2a5255a4185f7dcbe67f584aa09709b2496 liblog4c-localtime-v1.0.tar.gz diff --git a/buildroot/package/liblog4c-localtime/liblog4c-localtime.mk b/buildroot/package/liblog4c-localtime/liblog4c-localtime.mk new file mode 100644 index 0000000..fba0d4f --- /dev/null +++ b/buildroot/package/liblog4c-localtime/liblog4c-localtime.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# liblog4c-localtime +# +################################################################################ + +LIBLOG4C_LOCALTIME_VERSION = v1.0 +LIBLOG4C_LOCALTIME_SITE = $(call github,rcmadruga,log4c-localtime,$(LIBLOG4C_LOCALTIME_VERSION)) +LIBLOG4C_LOCALTIME_INSTALL_STAGING = YES +LIBLOG4C_LOCALTIME_CONF_OPTS = --disable-expattest +LIBLOG4C_LOCALTIME_DEPENDENCIES = expat +LIBLOG4C_LOCALTIME_CONFIG_SCRIPTS = log4c-config +LIBLOG4C_LOCALTIME_LICENSE = LGPL-2.1 +LIBLOG4C_LOCALTIME_LICENSE_FILES = COPYING +LIBLOG4C_LOCALTIME_AUTORECONF = YES + +define LIBLOG4C_LOCALTIME_FIX_CONFIGURE_PERMS + chmod +x $(@D)/configure +endef + +LIBLOG4C_LOCALTIME_PRE_CONFIGURE_HOOKS += LIBLOG4C_LOCALTIME_FIX_CONFIGURE_PERMS + +$(eval $(autotools-package)) diff --git a/buildroot/package/liblogging/Config.in b/buildroot/package/liblogging/Config.in new file mode 100644 index 0000000..a39fdf8 --- /dev/null +++ b/buildroot/package/liblogging/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBLOGGING + bool "liblogging" + help + Liblogging is an easy to use library for + logging. It offers an enhanced replacement + for the syslog() call, but retains its ease of use. + + https://www.rsyslog.com/liblogging/ diff --git a/buildroot/package/liblogging/liblogging.hash b/buildroot/package/liblogging/liblogging.hash new file mode 100644 index 0000000..f5674a1 --- /dev/null +++ b/buildroot/package/liblogging/liblogging.hash @@ -0,0 +1,2 @@ +# From http://www.liblogging.org/ +sha256 310dc1691279b7a669d383581fe4b0babdc7bf75c9b54a24e51e60428624890b liblogging-1.0.5.tar.gz diff --git a/buildroot/package/liblogging/liblogging.mk b/buildroot/package/liblogging/liblogging.mk new file mode 100644 index 0000000..ec57a0a --- /dev/null +++ b/buildroot/package/liblogging/liblogging.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# liblogging +# +################################################################################ + +LIBLOGGING_VERSION = 1.0.5 +LIBLOGGING_SITE = http://download.rsyslog.com/liblogging +LIBLOGGING_LICENSE = BSD-2-Clause +LIBLOGGING_LICENSE_FILES = COPYING +LIBLOGGING_INSTALL_STAGING = YES +LIBLOGGING_CONF_OPTS = --enable-cached-man-pages + +ifeq ($(BR2_INIT_SYSTEMD),y) +LIBLOGGING_CONF_OPTS += --enable-journal +LIBLOGGING_DEPENDENCIES += systemd +else +LIBLOGGING_CONF_OPTS += --disable-journal +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libloki/0001-allow-to-install-to-a-specific-location-using-DESTDI.patch b/buildroot/package/libloki/0001-allow-to-install-to-a-specific-location-using-DESTDI.patch new file mode 100644 index 0000000..d19306f --- /dev/null +++ b/buildroot/package/libloki/0001-allow-to-install-to-a-specific-location-using-DESTDI.patch @@ -0,0 +1,65 @@ +From 0b80e8beff68a0570fdc2d9281992060414475c1 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 29 Apr 2017 22:13:54 +0200 +Subject: [PATCH] allow to install to a specific location using DESTDIR + +DESTDIR is the autotools standard variable where to copy +headers, libraries and binaries. It's not the same as "prefix". + +So while installing to Buildroot STAGING directory, use prefix=/usr +and DESTOR=$(STAGING_DIR). + +Signed-off-by: Romain Naour +Sigend-off-by: Corentin GUILLEVIC +--- + include/Makefile | 12 ++++++------ + src/Makefile | 10 +++++----- + 2 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/include/Makefile b/include/Makefile +index 26a8139..a8cf369 100644 +--- a/include/Makefile ++++ b/include/Makefile +@@ -2,10 +2,10 @@ include ../Makefile.common + + .PHONY: install + install: +- mkdir -p $(prefix)/include/loki +- mkdir -p $(prefix)/include/loki/flex +- mkdir -p $(prefix)/include/loki/yasli ++ mkdir -p $(DESTDIR)$(prefix)/include/loki ++ mkdir -p $(DESTDIR)$(prefix)/include/loki/flex ++ mkdir -p $(DESTDIR)$(prefix)/include/loki/yasli + +- install -m 644 loki/*.h $(prefix)/include/loki +- install -m 644 loki/flex/*.h $(prefix)/include/loki/flex +- install -m 644 loki/yasli/*.h $(prefix)/include/loki/yasli ++ install -m 644 loki/*.h $(DESTDIR)$(prefix)/include/loki ++ install -m 644 loki/flex/*.h $(DESTDIR)$(prefix)/include/loki/flex ++ install -m 644 loki/yasli/*.h $(DESTDIR)$(prefix)/include/loki/yasli +diff --git a/src/Makefile b/src/Makefile +index b272929..054285e 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -74,13 +74,13 @@ INSTALL_DATA := $(INSTALL) -m 644 + install: install-static install-shared + + install-static: $(RESULT_DIR)$(STATIC_LIB) +- mkdir -p $(prefix)/lib +- $(INSTALL_DATA) $(RESULT_DIR)$(STATIC_LIB) $(prefix)/lib ++ mkdir -p $(DESTDIR)$(prefix)/lib ++ $(INSTALL_DATA) $(RESULT_DIR)$(STATIC_LIB) $(DESTDIR)$(prefix)/lib + + install-shared: $(RESULT_DIR)$(SHARED_LIB_VERSIONED) +- mkdir -p $(prefix)/lib +- $(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(prefix)/lib +- cd $(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE) ++ mkdir -p $(DESTDIR)$(prefix)/lib ++ $(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(DESTDIR)$(prefix)/lib ++ cd $(DESTDIR)$(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE) + + %.lo : %.cpp + $(CXX) -c $(CXXFLAGS) -fPIC $(CPPFLAGS) -o $@ $< +-- +2.9.3 + diff --git a/buildroot/package/libloki/0002-use-ln-snf.patch b/buildroot/package/libloki/0002-use-ln-snf.patch new file mode 100644 index 0000000..5b73d7f --- /dev/null +++ b/buildroot/package/libloki/0002-use-ln-snf.patch @@ -0,0 +1,31 @@ +From 7fcaa080ef3fddb3f7dcfaf2984bc397d7c9e96c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 29 Apr 2017 22:27:26 +0200 +Subject: [PATCH] use ln -snf + +Otherwise the install step fail due to existing symlink. + +'libloki.so': File exists + +Signed-off-by: Romain Naour +Sigend-off-by: Corentin GUILLEVIC +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index 054285e..2c169ab 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -80,7 +80,7 @@ install-static: $(RESULT_DIR)$(STATIC_LIB) + install-shared: $(RESULT_DIR)$(SHARED_LIB_VERSIONED) + mkdir -p $(DESTDIR)$(prefix)/lib + $(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(DESTDIR)$(prefix)/lib +- cd $(DESTDIR)$(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE) ++ cd $(DESTDIR)$(prefix)/lib; ln -snf $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE) + + %.lo : %.cpp + $(CXX) -c $(CXXFLAGS) -fPIC $(CPPFLAGS) -o $@ $< +-- +2.9.3 + diff --git a/buildroot/package/libloki/Config.in b/buildroot/package/libloki/Config.in new file mode 100644 index 0000000..4ce4429 --- /dev/null +++ b/buildroot/package/libloki/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBLOKI + bool "libloki" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + A C++ library of designs, containing flexible + implementations of common design patterns and idioms. + + http://sourceforge.net/projects/loki-lib + +comment "libloki needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libloki/libloki.hash b/buildroot/package/libloki/libloki.hash new file mode 100644 index 0000000..52d67c8 --- /dev/null +++ b/buildroot/package/libloki/libloki.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/loki-lib/files/Loki/Loki%200.1.7 +md5 33a24bcbb99fa2ec8fcbbab65649f3f6 loki-0.1.7.tar.bz2 +sha1 006c630217b1e1fd33015dc0597d2d743d8ee4e3 loki-0.1.7.tar.bz2 +# locally computed +sha256 07553754f6be2738559947db69b0718512665bf4a34015fa3a875b6eb1111198 loki-0.1.7.tar.bz2 diff --git a/buildroot/package/libloki/libloki.mk b/buildroot/package/libloki/libloki.mk new file mode 100644 index 0000000..7564239 --- /dev/null +++ b/buildroot/package/libloki/libloki.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libloki +# +################################################################################ + +LIBLOKI_VERSION = 0.1.7 +LIBLOKI_SOURCE = loki-$(LIBLOKI_VERSION).tar.bz2 +LIBLOKI_SITE = https://sourceforge.net/projects/loki-lib/files/Loki/Loki%20$(LIBLOKI_VERSION) +LIBLOKI_LICENSE = MIT +LIBLOKI_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +LIBLOKI_BUILD_TARGETS += build-static +LIBLOKI_INSTALL_TARGETS += install-static +else ifeq ($(BR2_SHARED_LIBS),y) +LIBLOKI_BUILD_TARGETS += build-shared +LIBLOKI_INSTALL_TARGETS += install-shared +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LIBLOKI_BUILD_TARGETS += build-static build-shared +LIBLOKI_INSTALL_TARGETS += install-static install-shared +endif + +define LIBLOKI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + -C $(@D) $(LIBLOKI_BUILD_TARGETS) +endef + +define LIBLOKI_INSTALL_STAGING_CMDS + $(MAKE) -C $(@D)/src DESTDIR=$(STAGING_DIR) $(LIBLOKI_INSTALL_TARGETS) + $(MAKE) -C $(@D)/include DESTDIR=$(STAGING_DIR) install +endef + +define LIBLOKI_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D)/src DESTDIR=$(TARGET_DIR) $(LIBLOKI_INSTALL_TARGETS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libmad/0001-mips-h-constraint-removal.patch b/buildroot/package/libmad/0001-mips-h-constraint-removal.patch new file mode 100644 index 0000000..0958587 --- /dev/null +++ b/buildroot/package/libmad/0001-mips-h-constraint-removal.patch @@ -0,0 +1,72 @@ +http://patchwork.openembedded.org/patch/921/ + +diff -ur libmad-0.15.1b-orig/fixed.h libmad-0.15.1b/fixed.h +--- libmad-0.15.1b-orig/fixed.h 2004-02-17 12:32:03.000000000 +1030 ++++ libmad-0.15.1b/fixed.h 2009-08-05 10:46:30.000000000 +0930 +@@ -299,6 +299,23 @@ + + # elif defined(FPM_MIPS) + ++/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ ++#if defined (__GNUC__) && defined (__GNUC_MINOR__) ++#define __GNUC_PREREQ(maj, min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++#define __GNUC_PREREQ(maj, min) 0 ++#endif ++ ++#if __GNUC_PREREQ(4,4) ++ typedef unsigned int u64_di_t __attribute__ ((mode (DI))); ++# define MAD_F_MLX(hi, lo, x, y) \ ++ do { \ ++ u64_di_t __ll = (u64_di_t) (x) * (y); \ ++ hi = __ll >> 32; \ ++ lo = __ll; \ ++ } while (0) ++#else + /* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). +@@ -328,6 +345,7 @@ + : "%r" ((x) >> 12), "r" ((y) >> 16)) + # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) + # endif ++#endif /* __GNU_PREREQ(4,4) */ + + # if defined(OPT_SPEED) + # define mad_f_scale64(hi, lo) \ +diff -ur libmad-0.15.1b-orig/mad.h libmad-0.15.1b/mad.h +--- libmad-0.15.1b-orig/mad.h 2004-02-17 13:25:44.000000000 +1030 ++++ libmad-0.15.1b/mad.h 2009-08-05 10:42:40.000000000 +0930 +@@ -344,6 +344,23 @@ + + # elif defined(FPM_MIPS) + ++/* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */ ++#if defined (__GNUC__) && defined (__GNUC_MINOR__) ++#define __GNUC_PREREQ(maj, min) \ ++ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) ++#else ++#define __GNUC_PREREQ(maj, min) 0 ++#endif ++ ++#if __GNUC_PREREQ(4,4) ++ typedef unsigned int u64_di_t __attribute__ ((mode (DI))); ++# define MAD_F_MLX(hi, lo, x, y) \ ++ do { \ ++ u64_di_t __ll = (u64_di_t) (x) * (y); \ ++ hi = __ll >> 32; \ ++ lo = __ll; \ ++ } while (0) ++#else + /* + * This MIPS version is fast and accurate; the disposition of the least + * significant bit depends on OPT_ACCURACY via mad_f_scale64(). +@@ -373,6 +390,7 @@ + : "%r" ((x) >> 12), "r" ((y) >> 16)) + # define MAD_F_MLZ(hi, lo) ((mad_fixed_t) (lo)) + # endif ++#endif /* __GNU_PREREQ(4,4) */ + + # if defined(OPT_SPEED) + # define mad_f_scale64(hi, lo) \ diff --git a/buildroot/package/libmad/0003-remove-deprecated-cflags.patch b/buildroot/package/libmad/0003-remove-deprecated-cflags.patch new file mode 100644 index 0000000..e504083 --- /dev/null +++ b/buildroot/package/libmad/0003-remove-deprecated-cflags.patch @@ -0,0 +1,33 @@ +libmad: remove deprecated cflags (-fforce-mem) + +fforce-mem has long been deprecated, and is completely removed from +gcc 4.3.x on. +--- + configure | 1 - + configure.ac | 1 - + 2 files changed, 2 deletions(-) + +Index: libmad-0.15.1b/configure.ac +=================================================================== +--- libmad-0.15.1b.orig/configure.ac ++++ libmad-0.15.1b/configure.ac +@@ -140,7 +140,6 @@ + case "$optimize" in + -O|"-O "*) + optimize="-O" +- optimize="$optimize -fforce-mem" + optimize="$optimize -fforce-addr" + : #x optimize="$optimize -finline-functions" + : #- optimize="$optimize -fstrength-reduce" +Index: libmad-0.15.1b/configure +=================================================================== +--- libmad-0.15.1b.orig/configure ++++ libmad-0.15.1b/configure +@@ -19099,7 +19099,6 @@ + case "$optimize" in + -O|"-O "*) + optimize="-O" +- optimize="$optimize -fforce-mem" + optimize="$optimize -fforce-addr" + : #x optimize="$optimize -finline-functions" + : #- optimize="$optimize -fstrength-reduce" diff --git a/buildroot/package/libmad/0004-thumb2-fixed-arm.patch b/buildroot/package/libmad/0004-thumb2-fixed-arm.patch new file mode 100644 index 0000000..befda48 --- /dev/null +++ b/buildroot/package/libmad/0004-thumb2-fixed-arm.patch @@ -0,0 +1,40 @@ +Fixes Thumb2-related build failure + +Patch below comes from the Debian libmad package. + +Signed-off-by: Thomas Petazzoni + +From: Dave Martin +Subject: "rsc" doesnt exist anymore in thumb2 + +diff --git a/fixed.h b/fixed.h +index 4b58abf..ba4bc26 100644 +--- a/fixed.h ++++ b/fixed.h +@@ -275,12 +275,25 @@ mad_fixed_t mad_f_mul_inline(mad_fixed_t x, mad_fixed_t y) + : "+r" (lo), "+r" (hi) \ + : "%r" (x), "r" (y)) + ++#ifdef __thumb__ ++/* In Thumb-2, the RSB-immediate instruction is only allowed with a zero ++ operand. If needed this code can also support Thumb-1 ++ (simply append "s" to the end of the second two instructions). */ ++# define MAD_F_MLN(hi, lo) \ ++ asm ("rsbs %0, %0, #0\n\t" \ ++ "sbc %1, %1, %1\n\t" \ ++ "sub %1, %1, %2" \ ++ : "+&r" (lo), "=&r" (hi) \ ++ : "r" (hi) \ ++ : "cc") ++#else /* ! __thumb__ */ + # define MAD_F_MLN(hi, lo) \ + asm ("rsbs %0, %2, #0\n\t" \ + "rsc %1, %3, #0" \ +- : "=r" (lo), "=r" (hi) \ ++ : "=&r" (lo), "=r" (hi) \ + : "0" (lo), "1" (hi) \ + : "cc") ++#endif /* __thumb__ */ + + # define mad_f_scale64(hi, lo) \ + ({ mad_fixed_t __result; \ diff --git a/buildroot/package/libmad/0005-thumb2-imdct-arm.patch b/buildroot/package/libmad/0005-thumb2-imdct-arm.patch new file mode 100644 index 0000000..414b9c8 --- /dev/null +++ b/buildroot/package/libmad/0005-thumb2-imdct-arm.patch @@ -0,0 +1,20 @@ +Fixes Thumb2 related build failure + +Patch below comes from the Debian libmad package. + +Signed-off-by: Thomas Petazzoni + +From: Konstantinos Margaritis +Subject: use "adr" instead of "add" to make code ready for thumb2 + +--- ./imdct_l_arm.S.orig 2010-02-25 13:25:23.000000000 +0100 ++++ ./imdct_l_arm.S 2010-02-25 13:27:26.000000000 +0100 +@@ -468,7 +468,7 @@ + + @---- + +- add r2, pc, #(imdct36_long_karray-.-8) @ r2 = base address of Knn array (PIC safe ?) ++ adr r2, imdct36_long_karray + + + loop: diff --git a/buildroot/package/libmad/Config.in b/buildroot/package/libmad/Config.in new file mode 100644 index 0000000..1d6bdd8 --- /dev/null +++ b/buildroot/package/libmad/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_LIBMAD + bool "libmad" + help + High-quality MPEG audio decoder. All computations are + performed with fixed-point integer arithmetic, making it ideal + for systems without a floating-point unit. + + http://www.underbit.com/products/mad/ + +if BR2_PACKAGE_LIBMAD + +choice + prompt "Speed vs. accuracy" + default BR2_PACKAGE_LIBMAD_OPTIMIZATION_DEFAULT + +config BR2_PACKAGE_LIBMAD_OPTIMIZATION_DEFAULT + bool "Default" + help + Keep optimizations balanced between speed and accuracy. + +config BR2_PACKAGE_LIBMAD_OPTIMIZATION_SPEED + bool "Optimize for speed over accuracy" + help + Compromise accuracy for speed. + +config BR2_PACKAGE_LIBMAD_OPTIMIZATION_ACCURACY + bool "Optimize for accuracy over speed" + help + Compromise speed for accuracy. + +endchoice + +config BR2_PACKAGE_LIBMAD_SSO + bool "Subband synthesis optimization" + help + Use the subband synthesis optimization, with reduced accuracy. + +config BR2_PACKAGE_LIBMAD_ASO + bool "Architecture-specific optimizations" + default y + # arm optimization needs classic arm instructions support + depends on !(BR2_arm && !BR2_ARM_CPU_HAS_ARM) + help + Use certain architecture-specific optimizations. + +config BR2_PACKAGE_LIBMAD_STRICT_ISO + bool "Strict ISO/IEC interpretations" + help + Use strict ISO/IEC interpretations. + +endif diff --git a/buildroot/package/libmad/libmad.hash b/buildroot/package/libmad/libmad.hash new file mode 100644 index 0000000..173399f --- /dev/null +++ b/buildroot/package/libmad/libmad.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 libmad-0.15.1b.tar.gz +sha256 0e21f2c6b19337d0b237dacc04f7b90a56be7f359f4c9a2ee0b202d9af0cfa69 frame_length.diff diff --git a/buildroot/package/libmad/libmad.mk b/buildroot/package/libmad/libmad.mk new file mode 100644 index 0000000..7175eaa --- /dev/null +++ b/buildroot/package/libmad/libmad.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# libmad +# +################################################################################ + +LIBMAD_VERSION = 0.15.1b +LIBMAD_SITE = http://downloads.sourceforge.net/project/mad/libmad/$(LIBMAD_VERSION) +LIBMAD_INSTALL_STAGING = YES +LIBMAD_LIBTOOL_PATCH = NO +LIBMAD_LICENSE = GPL-2.0+ +LIBMAD_LICENSE_FILES = COPYING +LIBMAD_PATCH = \ + https://sources.debian.net/data/main/libm/libmad/0.15.1b-8/debian/patches/frame_length.diff + +define LIBMAD_PREVENT_AUTOMAKE + # Prevent automake from running. + (cd $(@D); touch -c config* aclocal.m4 Makefile*); +endef + +define LIBMAD_INSTALL_STAGING_PC + $(INSTALL) -D package/libmad/mad.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/mad.pc +endef + +LIBMAD_POST_PATCH_HOOKS += LIBMAD_PREVENT_AUTOMAKE +LIBMAD_POST_INSTALL_STAGING_HOOKS += LIBMAD_INSTALL_STAGING_PC + +LIBMAD_CONF_OPTS = \ + --disable-debugging \ + $(if $(BR2_PACKAGE_LIBMAD_OPTIMIZATION_SPEED),--enable-speed) \ + $(if $(BR2_PACKAGE_LIBMAD_OPTIMIZATION_ACCURACY),--enable-accuracy) \ + --$(if $(BR2_PACKAGE_LIBMAD_SSO),enable,disable)-sso \ + --$(if $(BR2_PACKAGE_LIBMAD_ASO),enable,disable)-aso \ + --$(if $(BR2_PACKAGE_LIBMAD_STRICT_ISO),enable,disable)-strict-iso + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmad/mad.pc b/buildroot/package/libmad/mad.pc new file mode 100644 index 0000000..14af388 --- /dev/null +++ b/buildroot/package/libmad/mad.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: mad +Description: MPEG Audio Decoder +Requires: +Version: 0.15.1b +Libs: -L${libdir} -lmad +Cflags: -I${includedir} diff --git a/buildroot/package/libmatroska/Config.in b/buildroot/package/libmatroska/Config.in new file mode 100644 index 0000000..ec0e841 --- /dev/null +++ b/buildroot/package/libmatroska/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBMATROSKA + bool "libmatroska" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBEBML + help + Extensible open standard audio/video container format access + library. + + http://matroska.org + +comment "libmatroska needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/buildroot/package/libmatroska/libmatroska.hash b/buildroot/package/libmatroska/libmatroska.hash new file mode 100644 index 0000000..275af63 --- /dev/null +++ b/buildroot/package/libmatroska/libmatroska.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d3efaa9f6d3964351a05bea0f848a8d5dc570e4791f179816ce9a93730296bd7 libmatroska-1.4.4.tar.bz2 diff --git a/buildroot/package/libmatroska/libmatroska.mk b/buildroot/package/libmatroska/libmatroska.mk new file mode 100644 index 0000000..18ea505 --- /dev/null +++ b/buildroot/package/libmatroska/libmatroska.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libmatroska +# +################################################################################ + +LIBMATROSKA_VERSION = 1.4.4 +LIBMATROSKA_SOURCE = libmatroska-$(LIBMATROSKA_VERSION).tar.bz2 +LIBMATROSKA_SITE = http://dl.matroska.org/downloads/libmatroska +LIBMATROSKA_INSTALL_STAGING = YES +LIBMATROSKA_LICENSE = LGPL-2.1+ +LIBMATROSKA_LICENSE_FILES = LICENSE.LGPL +LIBMATROSKA_DEPENDENCIES = libebml host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmaxminddb/0001-Add-disable-binaries.patch b/buildroot/package/libmaxminddb/0001-Add-disable-binaries.patch new file mode 100644 index 0000000..0053cac --- /dev/null +++ b/buildroot/package/libmaxminddb/0001-Add-disable-binaries.patch @@ -0,0 +1,53 @@ +From 501f85fa729d08b90f0e1ff6f9378a0864f722a7 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 2 Feb 2018 13:19:18 +0100 +Subject: [PATCH] Add --disable-binaries + +mmdblookup now depends on pthread.h which can be disabled on some +toolchains so add an option to be able to compile libmaxminddb without +this binary + +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 6 +++++- + configure.ac | 6 ++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index cebcd31..cfbfd77 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -4,8 +4,12 @@ include_HEADERS = include/maxminddb.h + nodist_include_HEADERS = include/maxminddb_config.h + + SUBDIRS = \ +- src \ ++ src ++ ++if BINARIES ++SUBDIRS += \ + bin ++endif + + if TESTS + SUBDIRS += \ +diff --git a/configure.ac b/configure.ac +index c494746..4d1beb4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -119,6 +119,12 @@ AC_ARG_ENABLE( + esac],[debug=false]) + AM_CONDITIONAL([DEBUG], [test x$debug = xtrue]) + ++AC_ARG_ENABLE([binaries], ++ AS_HELP_STRING([--enable-binaries], [Compilation of binaries code]), ++ [enable_binaries=${enableval}], ++ [enable_binaries=yes]) ++AM_CONDITIONAL([BINARIES], [test "${enable_binaries}" = "yes"]) ++ + AC_ARG_ENABLE([tests], + AS_HELP_STRING([--enable-tests], [Compilation of tests code]), + [enable_tests=${enableval}], +-- +2.7.4 + diff --git a/buildroot/package/libmaxminddb/Config.in b/buildroot/package/libmaxminddb/Config.in new file mode 100644 index 0000000..1b8061b --- /dev/null +++ b/buildroot/package/libmaxminddb/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBMAXMINDDB + bool "libmaxminddb" + help + C library for the MaxMind DB file format + + The libmaxminddb library provides a C library for reading + MaxMind DB files, including the GeoIP2 databases from + MaxMind. This is a custom binary format designed to + facilitate fast lookups of IP addresses while allowing for + great flexibility in the type of data associated with an + address. + + The MaxMind DB format is an open format. The spec is + available at http://maxmind.github.io/MaxMind-DB/. This spec + is licensed under the Creative Commons + Attribution-ShareAlike 3.0 Unported License. + + http://maxmind.github.io/libmaxminddb diff --git a/buildroot/package/libmaxminddb/libmaxminddb.hash b/buildroot/package/libmaxminddb/libmaxminddb.hash new file mode 100644 index 0000000..073458a --- /dev/null +++ b/buildroot/package/libmaxminddb/libmaxminddb.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 c0785521c7e5515f1169db90ed6e51bc2a5a000377d0fbad87e4d5a791a6e364 libmaxminddb-1.3.2.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/buildroot/package/libmaxminddb/libmaxminddb.mk b/buildroot/package/libmaxminddb/libmaxminddb.mk new file mode 100644 index 0000000..25d4d33 --- /dev/null +++ b/buildroot/package/libmaxminddb/libmaxminddb.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libmaxminddb +# +################################################################################ + +LIBMAXMINDDB_VERSION = 1.3.2 +LIBMAXMINDDB_SITE = $(call github,maxmind,libmaxminddb,$(LIBMAXMINDDB_VERSION)) +LIBMAXMINDDB_INSTALL_STAGING = YES +LIBMAXMINDDB_LICENSE = Apache-2.0 +LIBMAXMINDDB_LICENSE_FILES = LICENSE +# Fetched from Github, with no configure script +LIBMAXMINDDB_AUTORECONF = YES +LIBMAXMINDDB_CONF_OPTS = --disable-tests + +# mmdblookup binary depends on pthreads +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBMAXMINDDB_CONF_OPTS += --enable-binaries +else +LIBMAXMINDDB_CONF_OPTS += --disable-binaries +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmbim/0001-mbim-device-prefer-realpath-to-canonicalize_file_nam.patch b/buildroot/package/libmbim/0001-mbim-device-prefer-realpath-to-canonicalize_file_nam.patch new file mode 100644 index 0000000..1a72b61 --- /dev/null +++ b/buildroot/package/libmbim/0001-mbim-device-prefer-realpath-to-canonicalize_file_nam.patch @@ -0,0 +1,37 @@ +From 6b043b9b676e88a80e3d4013863c5e970fdde1df Mon Sep 17 00:00:00 2001 +From: Aleksander Morgado +Date: Mon, 11 Sep 2017 09:31:03 +0200 +Subject: [PATCH] mbim-device: prefer realpath() to canonicalize_file_name() + +Usually the canonicalize_file_name() GNU extension is preferred to the +POSIX realpath(), as it covers some of the limitations the latter has. +But this extension isn't available in lots of platforms or in other +c library implementations (e.g. musl), so just default to the POSIX +method to improve portability. + +Note that the check for canonicalize_file_name() availability during +configure isn't as trivial as adding a new AC_CHECK_FUNCS(), and +importing a gnulib module seems overkill just for this one liner. + +(cherry picked from commit 417b0b80023dc30d61c111ec0a54da2884d3a541) +Signed-off-by: Aleksander Morgado +--- + src/libmbim-glib/mbim-device.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libmbim-glib/mbim-device.c b/src/libmbim-glib/mbim-device.c +index e1f32a6..20e64af 100644 +--- a/src/libmbim-glib/mbim-device.c ++++ b/src/libmbim-glib/mbim-device.c +@@ -867,7 +867,7 @@ get_descriptors_filepath (MbimDevice *self) + * /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:2.0 + */ + tmp = g_strdup_printf ("/sys/class/%s/%s/device", subsystems[i], device_basename); +- path = canonicalize_file_name (tmp); ++ path = realpath (tmp, NULL); + g_free (tmp); + + if (g_file_test (path, G_FILE_TEST_EXISTS)) { +-- +2.13.1 + diff --git a/buildroot/package/libmbim/Config.in b/buildroot/package/libmbim/Config.in new file mode 100644 index 0000000..fd7dbb3 --- /dev/null +++ b/buildroot/package/libmbim/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBMBIM + bool "libmbim" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + libmbim is a glib-based library for talking to WWAN modems and + devices which speak the Mobile Interface Broadband Model + (MBIM) protocol. + + http://www.freedesktop.org/wiki/Software/libmbim/ + +comment "libmbim needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libmbim/libmbim.hash b/buildroot/package/libmbim/libmbim.hash new file mode 100644 index 0000000..664513e --- /dev/null +++ b/buildroot/package/libmbim/libmbim.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 22cafe6b8432433aa58bedcf7db71111522ce6531bfe24e8e9b6058412cd31cf libmbim-1.14.2.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/buildroot/package/libmbim/libmbim.mk b/buildroot/package/libmbim/libmbim.mk new file mode 100644 index 0000000..b67905a --- /dev/null +++ b/buildroot/package/libmbim/libmbim.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libmbim +# +################################################################################ + +LIBMBIM_VERSION = 1.14.2 +LIBMBIM_SITE = http://www.freedesktop.org/software/libmbim +LIBMBIM_SOURCE = libmbim-$(LIBMBIM_VERSION).tar.xz +LIBMBIM_LICENSE = LGPL-2.0+ (library), GPL-2.0+ (programs) +LIBMBIM_LICENSE_FILES = COPYING COPYING.LIB +LIBMBIM_INSTALL_STAGING = YES + +LIBMBIM_DEPENDENCIES = libglib2 + +# we don't want -Werror +LIBMBIM_CONF_OPTS = --enable-more-warnings=no + +# if libgudev available, request udev support +ifeq ($(BR2_PACKAGE_LIBGUDEV),y) +LIBMBIM_DEPENDENCIES += libgudev +LIBMBIM_CONF_OPTS += --with-udev +else +LIBMBIM_CONF_OPTS += --without-udev +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmbus/Config.in b/buildroot/package/libmbus/Config.in new file mode 100644 index 0000000..ae3e85c --- /dev/null +++ b/buildroot/package/libmbus/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBMBUS + bool "libmbus" + help + libmbus is a library for communicating with energy metering + devices. It supports TCP and RS232 M-bus gateways. + (M-bus standard: http://www.m-bus.com/) + + http://www.rscada.se/libmbus/ diff --git a/buildroot/package/libmbus/libmbus.hash b/buildroot/package/libmbus/libmbus.hash new file mode 100644 index 0000000..faf6a27 --- /dev/null +++ b/buildroot/package/libmbus/libmbus.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9fca42592da0ba75df66c6f885a4dbfa916d23e65e3d1ce6e38d940d2a2719a4 libmbus-0.8.0.tar.gz diff --git a/buildroot/package/libmbus/libmbus.mk b/buildroot/package/libmbus/libmbus.mk new file mode 100644 index 0000000..61f797b --- /dev/null +++ b/buildroot/package/libmbus/libmbus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libmbus +# +################################################################################ + +LIBMBUS_VERSION = 0.8.0 +LIBMBUS_SITE = http://www.rscada.se/public-dist +LIBMBUS_INSTALL_STAGING = YES +LIBMBUS_LICENSE = BSD-3-Clause +LIBMBUS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmcrypt/0001-nocxx.patch b/buildroot/package/libmcrypt/0001-nocxx.patch new file mode 100644 index 0000000..b1c2871 --- /dev/null +++ b/buildroot/package/libmcrypt/0001-nocxx.patch @@ -0,0 +1,15 @@ +libmcrypt doesn't use C++ so remove the check. + +Signed-off-by: Gustavo Zacarias + +diff -Nura libmcrypt-2.5.8.orig/configure.in libmcrypt-2.5.8/configure.in +--- libmcrypt-2.5.8.orig/configure.in 2013-01-07 12:20:44.332200669 -0300 ++++ libmcrypt-2.5.8/configure.in 2013-01-07 12:20:50.405390565 -0300 +@@ -19,7 +19,6 @@ + + AC_PROG_MAKE_SET + +-AC_PROG_CXX + AC_PROG_CC + AC_PROG_CPP + AC_PROG_INSTALL diff --git a/buildroot/package/libmcrypt/Config.in b/buildroot/package/libmcrypt/Config.in new file mode 100644 index 0000000..784d2c2 --- /dev/null +++ b/buildroot/package/libmcrypt/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBMCRYPT + bool "libmcrypt" + help + libmcrypt is a library that provides uniform interface to + access several encryption algorithms. + + http://mcrypt.sourceforge.net/ diff --git a/buildroot/package/libmcrypt/libmcrypt.hash b/buildroot/package/libmcrypt/libmcrypt.hash new file mode 100644 index 0000000..d0d3a9c --- /dev/null +++ b/buildroot/package/libmcrypt/libmcrypt.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 e4eb6c074bbab168ac47b947c195ff8cef9d51a211cdd18ca9c9ef34d27a373e libmcrypt-2.5.8.tar.gz diff --git a/buildroot/package/libmcrypt/libmcrypt.mk b/buildroot/package/libmcrypt/libmcrypt.mk new file mode 100644 index 0000000..e93f013 --- /dev/null +++ b/buildroot/package/libmcrypt/libmcrypt.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libmcrypt +# +################################################################################ + +LIBMCRYPT_VERSION = 2.5.8 +LIBMCRYPT_SITE = http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/$(LIBMCRYPT_VERSION) +LIBMCRYPT_AUTORECONF = YES +LIBMCRYPT_INSTALL_STAGING = YES +LIBMCRYPT_LICENSE = LGPL-2.1 +LIBMCRYPT_LICENSE_FILES = COPYING.LIB +LIBMCRYPT_CONFIG_SCRIPTS = libmcrypt-config + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmediaart/Config.in b/buildroot/package/libmediaart/Config.in new file mode 100644 index 0000000..e5e770d --- /dev/null +++ b/buildroot/package/libmediaart/Config.in @@ -0,0 +1,44 @@ +comment "libmediaart needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_LIBMEDIAART + bool "libmediaart" + depends on BR2_USE_MMU # glib2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + Library tasked with managing, extracting and handling media + art caches + + https://github.com/GNOME/libmediaart + +if BR2_PACKAGE_LIBMEDIAART + +choice + prompt "media art backend" + default BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE + +config BR2_PACKAGE_MEDIAART_BACKEND_NONE + bool "none" + help + With no backend, libmediaart will not be able to process MP3 + album art. + +config BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF + bool "gdk-pixbuf" + select BR2_PACKAGE_GDK_PIXBUF + +config BR2_PACKAGE_MEDIAART_BACKEND_QT + bool "Qt" + depends on BR2_PACKAGE_QT || BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT_GUI_MODULE if BR2_PACKAGE_QT + select BR2_PACKAGE_QT5BASE_GUI if BR2_PACKAGE_QT5 + +comment "Qt backend depends on Qt or Qt5" + depends on !BR2_PACKAGE_QT && !BR2_PACKAGE_QT5 + +endchoice + +endif # BR2_PACKAGE_MEDIAART diff --git a/buildroot/package/libmediaart/libmediaart.hash b/buildroot/package/libmediaart/libmediaart.hash new file mode 100644 index 0000000..d51c056 --- /dev/null +++ b/buildroot/package/libmediaart/libmediaart.hash @@ -0,0 +1,5 @@ +# Hash from: http://ftp.gnome.org/pub/gnome/sources/libmediaart/1.9/libmediaart-1.9.4.sha256sum: +sha256 a57be017257e4815389afe4f58fdacb6a50e74fd185452b23a652ee56b04813d libmediaart-1.9.4.tar.xz + +# Locally computed: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LESSER diff --git a/buildroot/package/libmediaart/libmediaart.mk b/buildroot/package/libmediaart/libmediaart.mk new file mode 100644 index 0000000..db4f1fa --- /dev/null +++ b/buildroot/package/libmediaart/libmediaart.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# libmediaart +# +################################################################################ + +LIBMEDIAART_VERSION_MAJOR = 1.9 +LIBMEDIAART_VERSION = $(LIBMEDIAART_VERSION_MAJOR).4 +LIBMEDIAART_SOURCE = libmediaart-$(LIBMEDIAART_VERSION).tar.xz +LIBMEDIAART_SITE = \ + http://ftp.gnome.org/pub/gnome/sources/libmediaart/$(LIBMEDIAART_VERSION_MAJOR) +LIBMEDIAART_LICENSE = LGPL-2.1+ +LIBMEDIAART_LICENSE_FILES = COPYING.LESSER +LIBMEDIAART_INSTALL_STAGING = YES +LIBMEDIAART_DEPENDENCIES = libglib2 +LIBMEDIAART_CONF_OPTS = --disable-unit-tests + +ifeq ($(BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF),y) +LIBMEDIAART_DEPENDENCIES += gdk-pixbuf +LIBMEDIAART_CONF_OPTS += \ + --enable-gdkpixbuf \ + --disable-qt +else ifeq ($(BR2_PACKAGE_MEDIAART_BACKEND_QT),y) +# qt5 needs c++11 (since qt-5.7) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +LIBMEDIAART_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" +endif +LIBMEDIAART_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_QT),qt) \ + $(if $(BR2_PACKAGE_QT5),qt5base) +LIBMEDIAART_CONF_OPTS += \ + --disable-gdkpixbuf \ + --enable-qt +else ifeq ($(BR2_PACKAGE_MEDIAART_BACKEND_NONE),y) +LIBMEDIAART_CONF_OPTS += \ + --disable-gdkpixbuf \ + --disable-qt +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmemcached/0001-disable-tests.patch b/buildroot/package/libmemcached/0001-disable-tests.patch new file mode 100644 index 0000000..6128306 --- /dev/null +++ b/buildroot/package/libmemcached/0001-disable-tests.patch @@ -0,0 +1,42 @@ +Disable the tests, cuts build time by half and avoids build issues +with extra dependencies. + +Signed-off-by: Gustavo Zacarias + +diff -Nura libmemcached-1.0.18.orig/Makefile.am libmemcached-1.0.18/Makefile.am +--- libmemcached-1.0.18.orig/Makefile.am 2014-07-19 09:24:45.246418899 -0300 ++++ libmemcached-1.0.18/Makefile.am 2014-07-19 09:25:12.701349345 -0300 +@@ -1,6 +1,6 @@ + # vim:ft=automake + +-ACLOCAL_AMFLAGS= -I m4 -I libtest/m4 ++ACLOCAL_AMFLAGS= -I m4 + AM_YFLAGS= -d + + # includes append to these: +@@ -45,8 +45,6 @@ + include libmemcached-1.0/include.am + else + +-include libtest/include.am +- + include libhashkit-1.0/include.am + include libmemcached-1.0/include.am + +@@ -76,7 +74,6 @@ + include libmemcachedinternal/util/include.am + include rpm/include.mk + include support/include.am +-include tests/include.am + include util/include.am + include win32/include.am + +@@ -103,7 +100,7 @@ + @echo "Files that need to be either removed or checked in:" + @bzr unknowns + +-clean-local: clean-libtest-check clean-docs-check clean-rpm ++clean-local: clean-docs-check clean-rpm + + + lcov: lcov-clean check diff --git a/buildroot/package/libmemcached/0002-disable-sanitizer.patch b/buildroot/package/libmemcached/0002-disable-sanitizer.patch new file mode 100644 index 0000000..108da22 --- /dev/null +++ b/buildroot/package/libmemcached/0002-disable-sanitizer.patch @@ -0,0 +1,25 @@ +Disable sanitizer checks, they're busted. + +Signed-off-by: Gustavo Zacarias + +diff -Nura libmemcached-1.0.18.orig/m4/ax_harden_compiler_flags.m4 libmemcached-1.0.18/m4/ax_harden_compiler_flags.m4 +--- libmemcached-1.0.18.orig/m4/ax_harden_compiler_flags.m4 2014-11-13 08:07:09.011614311 -0300 ++++ libmemcached-1.0.18/m4/ax_harden_compiler_flags.m4 2014-11-13 08:07:52.406092440 -0300 +@@ -222,8 +222,6 @@ + # GCC 4.5 removed this. + # _APPEND_COMPILE_FLAGS_ERROR([-Wunreachable-code]) + +- _SET_SANITIZE_FLAGS +- + AS_IF([test "x$ax_enable_debug" = xno], + [AS_IF([test "x$ac_cv_vcs_checkout" = xyes], + [AS_IF([test "x${host_os}" != "xmingw"], +@@ -337,8 +335,6 @@ + _APPEND_COMPILE_FLAGS_ERROR([-fstack-protector-all]) + ])])])]) + +- _SET_SANITIZE_FLAGS +- + AS_IF([test "x$ac_cv_warnings_as_errors" = xyes], + [AX_APPEND_FLAG([-Werror])]) + AC_LANG_POP([C++]) diff --git a/buildroot/package/libmemcached/0003-move-ac_config_aux_dir.patch b/buildroot/package/libmemcached/0003-move-ac_config_aux_dir.patch new file mode 100644 index 0000000..790aa93 --- /dev/null +++ b/buildroot/package/libmemcached/0003-move-ac_config_aux_dir.patch @@ -0,0 +1,25 @@ +Move AC_CONFIG_AUX_DIR up a few lines so the autotools can find it + +This patch is based on the same solution adopted by Debian: + + https://lists.debian.org/debian-release/2014/11/msg01231.html + +Signed-off-by: Vicente Olivert Riera + +diff -rup a/configure.ac b/configure.ac +--- a/configure.ac 2014-02-09 11:52:42.000000000 +0000 ++++ b/configure.ac 2015-01-06 15:07:10.003074775 +0000 +@@ -13,11 +13,12 @@ m4_include([version.m4]) + AC_PREREQ([2.61]) + AC_INIT([libmemcached],VERSION_NUMBER,[http://libmemcached.org/]) + ++AC_CONFIG_AUX_DIR([build-aux]) ++ + # Setup the compilers early on + AC_PROG_CC([cc gcc clang]) + AC_PROG_CXX([c++ g++ clang++]) + +-AC_CONFIG_AUX_DIR([build-aux]) + AC_CONFIG_MACRO_DIR([m4]) + + AC_CANONICAL_HOST diff --git a/buildroot/package/libmemcached/0004-disable-doc-and-man.patch b/buildroot/package/libmemcached/0004-disable-doc-and-man.patch new file mode 100644 index 0000000..9605095 --- /dev/null +++ b/buildroot/package/libmemcached/0004-disable-doc-and-man.patch @@ -0,0 +1,37 @@ +From 6c01bd3562cc18fbafdf950bbeb73a399c1adcdd Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Tue, 12 May 2015 00:00:02 +0200 +Subject: [PATCH] disable doc and man + +WARNING: master file /home/naourr/git/buildroot/test/libmemcached-bfin/build/libmemcached-1.0.18/docs/index.rst not found + +Exception occurred: + File "/usr/lib/python2.7/site-packages/sphinx/environment.py", line 1213, in get_doctree + f = open(doctree_filename, 'rb') +IOError: [Errno 2] No such file or directory: '/home/naourr/buildroot-test/test/libmemcached-bfin/build/libmemcached-1.0.18/man/.doctrees/hashkit_create.doctree' +The full traceback has been saved in /tmp/sphinx-err-JCIsnB.log, if you want to report the issue to the developers. +Please also report this if it was a user error, so that a better error message can be provided next time. +Either send bugs to the mailing list at , +or report them in the tracker at . Thanks! + +Signed-off-by: Romain Naour +--- + Makefile.am | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 7f44102..cb7d058 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -55,8 +55,6 @@ endif + include libmemcachedutil-1.0/include.am + + include clients/include.am +-include docs/include.am +-include man/include.am + + if BUILD_LIBMEMCACHED_PROTOCOL + include example/include.am +-- +1.9.3 + diff --git a/buildroot/package/libmemcached/0005-fix-pointer-comparaison.patch b/buildroot/package/libmemcached/0005-fix-pointer-comparaison.patch new file mode 100644 index 0000000..c9f8dd1 --- /dev/null +++ b/buildroot/package/libmemcached/0005-fix-pointer-comparaison.patch @@ -0,0 +1,30 @@ +Fix pointer comparaison + +opt_servers is a pointer, not a boolean, so testing against false to +know if the pointer is NULL no longer works with the more strict gcc +7.x checks. + +[Taken from http://pkgs.fedoraproject.org/cgit/rpms/libmemcached.git/plain/libmemcached-build.patch.] +Signed-off-by: Thomas Petazzoni + +diff -up ./clients/memflush.cc.old ./clients/memflush.cc +--- ./clients/memflush.cc.old 2017-02-12 10:12:59.615209225 +0100 ++++ ./clients/memflush.cc 2017-02-12 10:13:39.998382783 +0100 +@@ -39,7 +39,7 @@ int main(int argc, char *argv[]) + { + options_parse(argc, argv); + +- if (opt_servers == false) ++ if (!opt_servers) + { + char *temp; + +@@ -48,7 +48,7 @@ int main(int argc, char *argv[]) + opt_servers= strdup(temp); + } + +- if (opt_servers == false) ++ if (!opt_servers) + { + std::cerr << "No Servers provided" << std::endl; + exit(EXIT_FAILURE); diff --git a/buildroot/package/libmemcached/Config.in b/buildroot/package/libmemcached/Config.in new file mode 100644 index 0000000..4af2b3b --- /dev/null +++ b/buildroot/package/libmemcached/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBMEMCACHED + bool "libmemcached" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libMemcached is an open source C/C++ client library and tools + for the memcached server. + It has been designed to be light on memory usage, thread safe, + and provide full access to server side methods. + + http://libmemcached.org/libMemcached.html + +comment "libmemcached needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libmemcached/libmemcached.hash b/buildroot/package/libmemcached/libmemcached.hash new file mode 100644 index 0000000..85df58f --- /dev/null +++ b/buildroot/package/libmemcached/libmemcached.hash @@ -0,0 +1,2 @@ +# From https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz/+md5 +md5 b3958716b4e53ddc5992e6c49d97e819 libmemcached-1.0.18.tar.gz diff --git a/buildroot/package/libmemcached/libmemcached.mk b/buildroot/package/libmemcached/libmemcached.mk new file mode 100644 index 0000000..2495526 --- /dev/null +++ b/buildroot/package/libmemcached/libmemcached.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libmemcached +# +################################################################################ + +LIBMEMCACHED_VERSION_MAJOR = 1.0 +LIBMEMCACHED_VERSION = $(LIBMEMCACHED_VERSION_MAJOR).18 +LIBMEMCACHED_SITE = http://launchpad.net/libmemcached/$(LIBMEMCACHED_VERSION_MAJOR)/$(LIBMEMCACHED_VERSION)/+download +LIBMEMCACHED_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' \ + ax_cv_check_cflags__Werror__fmudflapth=no \ + ax_cv_check_cxxflags__Werror__fmudflapth=no +LIBMEMCACHED_CONF_OPTS = --disable-dtrace +LIBMEMCACHED_INSTALL_STAGING = YES +LIBMEMCACHED_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBEVENT),libevent) +# For 0001-disable-tests.patch and 0002-disable-sanitizer.patch +LIBMEMCACHED_AUTORECONF = YES +LIBMEMCACHED_LICENSE = BSD-3-Clause +LIBMEMCACHED_LICENSE_FILES = COPYING + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +LIBMEMCACHED_CONF_ENV += \ + ax_cv_check_cflags__Werror__fPIE=no \ + ax_cv_check_cflags__Werror__pie=no \ + ax_cv_check_cxxflags__Werror__fPIE=no \ + ax_cv_check_cxxflags__Werror__pie=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmhash/Config.in b/buildroot/package/libmhash/Config.in new file mode 100644 index 0000000..774ff1b --- /dev/null +++ b/buildroot/package/libmhash/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBMHASH + bool "libmhash" + help + Mhash is a free (under GNU Lesser GPL) library which provides + a uniform interface to a large number of hash algorithms. + These algorithms can be used to compute checksums, message + digests, and other signatures. + + http://mhash.sourceforge.net/ diff --git a/buildroot/package/libmhash/libmhash.hash b/buildroot/package/libmhash/libmhash.hash new file mode 100644 index 0000000..5ae5686 --- /dev/null +++ b/buildroot/package/libmhash/libmhash.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 56521c52a9033779154432d0ae47ad7198914785265e1f570cee21ab248dfef0 mhash-0.9.9.9.tar.bz2 diff --git a/buildroot/package/libmhash/libmhash.mk b/buildroot/package/libmhash/libmhash.mk new file mode 100644 index 0000000..f2da10e --- /dev/null +++ b/buildroot/package/libmhash/libmhash.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libmhash +# +################################################################################ + +LIBMHASH_VERSION = 0.9.9.9 +LIBMHASH_SITE = http://downloads.sourceforge.net/project/mhash/mhash/$(LIBMHASH_VERSION) +LIBMHASH_SOURCE = mhash-$(LIBMHASH_VERSION).tar.bz2 +LIBMHASH_INSTALL_STAGING = YES +LIBMHASH_LICENSE = LGPL-2.0 +LIBMHASH_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmicrohttpd/Config.in b/buildroot/package/libmicrohttpd/Config.in new file mode 100644 index 0000000..7f3c9bb --- /dev/null +++ b/buildroot/package/libmicrohttpd/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_LIBMICROHTTPD + bool "libmicrohttpd" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + GNU libmicrohttpd is a small C library that makes it easy to + run an HTTP server as part of another application. + + http://www.gnu.org/software/libmicrohttpd/ + +if BR2_PACKAGE_LIBMICROHTTPD + +config BR2_PACKAGE_LIBMICROHTTPD_SSL + bool "https support" + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_WCHAR + select BR2_PACKAGE_GNUTLS + help + Enable HTTPS (SSL) support. + +comment "libmicrohttpd https support needs a toolchain w/ wchar, dynamic library" + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS + +endif + +comment "libmicrohttpd needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libmicrohttpd/libmicrohttpd.hash b/buildroot/package/libmicrohttpd/libmicrohttpd.hash new file mode 100644 index 0000000..e628cb2 --- /dev/null +++ b/buildroot/package/libmicrohttpd/libmicrohttpd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 dec1a76487d7e48ad74b468a888bfda1c05731f185ff950f1e363ca9d39caf4e libmicrohttpd-0.9.57.tar.gz +sha256 70e12e2a60151b9ed1a4c94a5ffeb99cd086fa94542b5a92fec581506e8d3121 COPYING diff --git a/buildroot/package/libmicrohttpd/libmicrohttpd.mk b/buildroot/package/libmicrohttpd/libmicrohttpd.mk new file mode 100644 index 0000000..62fb7fc --- /dev/null +++ b/buildroot/package/libmicrohttpd/libmicrohttpd.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# libmicrohttpd +# +################################################################################ + +LIBMICROHTTPD_VERSION = 0.9.57 +LIBMICROHTTPD_SITE = $(BR2_GNU_MIRROR)/libmicrohttpd +LIBMICROHTTPD_LICENSE_FILES = COPYING +LIBMICROHTTPD_INSTALL_STAGING = YES +LIBMICROHTTPD_CONF_OPTS = --disable-curl --disable-examples +LIBMICROHTTPD_CFLAGS = $(TARGET_CFLAGS) -std=c99 + +# gcc on arc and bfin doesn't define _REENTRANT when -pthread is +# passed while it should. Compensate this deficiency here otherwise +# libmicrohttpd configure script doesn't find that thread support is +# enabled. +ifeq ($(BR2_arc)$(BR2_bfin),y) +LIBMICROHTTPD_CFLAGS += -D_REENTRANT +endif + +LIBMICROHTTPD_CONF_ENV += CFLAGS="$(LIBMICROHTTPD_CFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBMICROHTTPD_SSL),y) +LIBMICROHTTPD_LICENSE = LGPL-2.1+ +LIBMICROHTTPD_DEPENDENCIES += host-pkgconf gnutls +LIBMICROHTTPD_CONF_OPTS += --enable-https --with-gnutls=$(STAGING_DIR)/usr +else +LIBMICROHTTPD_LICENSE = LGPL-2.1+ or eCos +LIBMICROHTTPD_CONF_OPTS += --disable-https +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libminiupnpc/0001-miniupnpc-Fix-CVE-2017-8798.patch b/buildroot/package/libminiupnpc/0001-miniupnpc-Fix-CVE-2017-8798.patch new file mode 100644 index 0000000..25591fc --- /dev/null +++ b/buildroot/package/libminiupnpc/0001-miniupnpc-Fix-CVE-2017-8798.patch @@ -0,0 +1,59 @@ +From f0f1f4b22d6a98536377a1bb07e7c20e4703d229 Mon Sep 17 00:00:00 2001 +From: Thomas Bernard +Date: Tue, 9 May 2017 12:00:47 +0200 +Subject: [PATCH] miniupnpc: Fix CVE-2017-8798 + +Thanks to tin/Team OSTStrom + +[Peter: drop Changelog.txt modification, convert to -p1 format] +Signed-off-by: Peter Korsgaard +--- + miniupnpc/miniwget.c | 12 +++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +diff --git a/miniwget.c b/miniwget.c +index 37cb47b7..1eda57c5 100644 +--- a/miniwget.c ++++ b/miniwget.c +@@ -284,11 +284,12 @@ getHTTPResponse(int s, int * size, int * status_code) + goto end_of_stream; + } + } +- bytestocopy = ((int)chunksize < (n - i))?chunksize:(unsigned int)(n - i); ++ /* it is guaranteed that (n >= i) */ ++ bytestocopy = (chunksize < (unsigned int)(n - i))?chunksize:(unsigned int)(n - i); + if((content_buf_used + bytestocopy) > content_buf_len) + { + char * tmp; +- if(content_length >= (int)(content_buf_used + bytestocopy)) { ++ if((content_length >= 0) && ((unsigned int)content_length >= (content_buf_used + bytestocopy))) { + content_buf_len = content_length; + } else { + content_buf_len = content_buf_used + bytestocopy; +@@ -313,14 +314,15 @@ getHTTPResponse(int s, int * size, int * status_code) + { + /* not chunked */ + if(content_length > 0 +- && (int)(content_buf_used + n) > content_length) { ++ && (content_buf_used + n) > (unsigned int)content_length) { + /* skipping additional bytes */ + n = content_length - content_buf_used; + } + if(content_buf_used + n > content_buf_len) + { + char * tmp; +- if(content_length >= (int)(content_buf_used + n)) { ++ if(content_length >= 0 ++ && (unsigned int)content_length >= (content_buf_used + n)) { + content_buf_len = content_length; + } else { + content_buf_len = content_buf_used + n; +@@ -340,7 +342,7 @@ getHTTPResponse(int s, int * size, int * status_code) + } + } + /* use the Content-Length header value if available */ +- if(content_length > 0 && (int)content_buf_used >= content_length) ++ if(content_length > 0 && content_buf_used >= (unsigned int)content_length) + { + #ifdef DEBUG + printf("End of HTTP content\n"); diff --git a/buildroot/package/libminiupnpc/Config.in b/buildroot/package/libminiupnpc/Config.in new file mode 100644 index 0000000..a3410a0 --- /dev/null +++ b/buildroot/package/libminiupnpc/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBMINIUPNPC + bool "libminiupnpc" + depends on !BR2_BINFMT_FLAT + depends on !BR2_STATIC_LIBS + help + The UPnP protocol is supported by most home adsl/cable routers + and Microsoft Windows 2K/XP. The aim of the MiniUPnP project + is to bring a free software solution to support the "Internet + Gateway Device" part of the protocol. + + Miniupnpc aims at the simplest library possible, with the + smallest footprint and no dependencies to other libraries such + as XML parsers or HTTP implementations. All the code is pure + ANSI C. + + http://miniupnp.free.fr + +comment "libminiupnpc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on !BR2_BINFMT_FLAT diff --git a/buildroot/package/libminiupnpc/libminiupnpc.hash b/buildroot/package/libminiupnpc/libminiupnpc.hash new file mode 100644 index 0000000..c83b38a --- /dev/null +++ b/buildroot/package/libminiupnpc/libminiupnpc.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d434ceb8986efbe199c5ca53f90ed53eab290b1e6d0530b717eb6fa49d61f93b miniupnpc-2.0.tar.gz +sha256 4025f2214fa46ad40c156605b83d66e8faf45823e67eb3337af3869716e6d7dd LICENSE diff --git a/buildroot/package/libminiupnpc/libminiupnpc.mk b/buildroot/package/libminiupnpc/libminiupnpc.mk new file mode 100644 index 0000000..66b08b4 --- /dev/null +++ b/buildroot/package/libminiupnpc/libminiupnpc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libminiupnpc +# +################################################################################ + +LIBMINIUPNPC_VERSION = 2.0 +LIBMINIUPNPC_SOURCE = miniupnpc-$(LIBMINIUPNPC_VERSION).tar.gz +LIBMINIUPNPC_SITE = http://miniupnp.free.fr/files +LIBMINIUPNPC_INSTALL_STAGING = YES +LIBMINIUPNPC_LICENSE = BSD-3-Clause +LIBMINIUPNPC_LICENSE_FILES = LICENSE + +$(eval $(cmake-package)) diff --git a/buildroot/package/libmms/Config.in b/buildroot/package/libmms/Config.in new file mode 100644 index 0000000..11df6e5 --- /dev/null +++ b/buildroot/package/libmms/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBMMS + bool "libmms" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + help + LibMMS is a common library for parsing mms:// and mmsh:// + type network streams. These are commonly used to stream + Windows Media Video content over the web. LibMMS itself is + only for receiving MMS stream, it doesn't handle sending at + all. + + http://launchpad.net/libmms + +comment "libmms needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libmms/libmms.hash b/buildroot/package/libmms/libmms.hash new file mode 100644 index 0000000..69865f7 --- /dev/null +++ b/buildroot/package/libmms/libmms.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 01931b62172d7d7050fc9ef9b1b64162f3b6e9f6cc4415170192a32a0b7ea432 libmms-0.6.2.tar.gz diff --git a/buildroot/package/libmms/libmms.mk b/buildroot/package/libmms/libmms.mk new file mode 100644 index 0000000..dd0b1df --- /dev/null +++ b/buildroot/package/libmms/libmms.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libmms +# +################################################################################ + +LIBMMS_VERSION = 0.6.2 +LIBMMS_SITE = http://downloads.sourceforge.net/project/libmms/libmms/$(LIBMMS_VERSION) +LIBMMS_INSTALL_STAGING = YES +LIBMMS_DEPENDENCIES = host-pkgconf libglib2 +LIBMMS_LICENSE = LGPL-2.1+ +LIBMMS_LICENSE_FILES = COPYING.LIB + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmng/0001-jpeg-9a.patch b/buildroot/package/libmng/0001-jpeg-9a.patch new file mode 100644 index 0000000..5d65133 --- /dev/null +++ b/buildroot/package/libmng/0001-jpeg-9a.patch @@ -0,0 +1,22 @@ +Adaptation from gentoo patch for libmng 2.0.3 +See https://bugs.gentoo.org/show_bug.cgi?id=520906 + +Signed-off-by: Gustavo Zacarias + +diff -Nura libmng-2.0.3.orig/libmng_types.h libmng-2.0.3/libmng_types.h +--- libmng-2.0.3.orig/libmng_types.h 2015-09-24 10:32:05.500984924 -0300 ++++ libmng-2.0.3/libmng_types.h 2015-09-24 10:33:11.145254771 -0300 +@@ -200,13 +200,6 @@ + #undef FAR /* possibly defined by zlib or lcms */ + #endif + #define JPEG_INTERNAL_OPTIONS /* for RGB_PIXELSIZE */ +-/* There has been a change in jpeg-9 : */ +-#if !defined(HAVE_BOOLEAN) && !defined(_WIN32) +-#define HAVE_BOOLEAN +-#endif +-#ifndef _WIN32 +-typedef int boolean; +-#endif + /* For jpegsrc.v09a: */ + #include + #include diff --git a/buildroot/package/libmng/Config.in b/buildroot/package/libmng/Config.in new file mode 100644 index 0000000..a0bd59c --- /dev/null +++ b/buildroot/package/libmng/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBMNG + bool "libmng" + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_ZLIB + help + The reference library for reading, displaying, writing and + examining Multiple-Image Network Graphics. + + http://sourceforge.net/projects/libmng/ diff --git a/buildroot/package/libmng/libmng.hash b/buildroot/package/libmng/libmng.hash new file mode 100644 index 0000000..a695cc3 --- /dev/null +++ b/buildroot/package/libmng/libmng.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/libmng/files/libmng-devel/2.0.3/ +md5 e9e899adb1b681b17f14d91e261878c5 libmng-2.0.3.tar.xz +sha1 0f141482ffcef6f8cd4413f945a59310ac2e49af libmng-2.0.3.tar.xz diff --git a/buildroot/package/libmng/libmng.mk b/buildroot/package/libmng/libmng.mk new file mode 100644 index 0000000..090fe18 --- /dev/null +++ b/buildroot/package/libmng/libmng.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libmng +# +################################################################################ + +LIBMNG_VERSION = 2.0.3 +LIBMNG_SITE = http://downloads.sourceforge.net/project/libmng/libmng-devel/$(LIBMNG_VERSION) +LIBMNG_SOURCE = libmng-$(LIBMNG_VERSION).tar.xz +LIBMNG_DEPENDENCIES = jpeg zlib +LIBMNG_CONF_OPTS = --without-lcms +LIBMNG_INSTALL_STAGING = YES +LIBMNG_LICENSE = libmng license +LIBMNG_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_LCMS2),y) +LIBMNG_DEPDENDENCIES += lcms2 +else +LIBMNG_CONF_OPTS += --without-lcms2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmnl/Config.in b/buildroot/package/libmnl/Config.in new file mode 100644 index 0000000..5acfb24 --- /dev/null +++ b/buildroot/package/libmnl/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBMNL + bool "libmnl" + help + libmnl is a minimalistic user-space library oriented + to Netlink developers. + + http://netfilter.org/projects/libmnl/ diff --git a/buildroot/package/libmnl/libmnl.hash b/buildroot/package/libmnl/libmnl.hash new file mode 100644 index 0000000..98385b8 --- /dev/null +++ b/buildroot/package/libmnl/libmnl.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/libmnl/libmnl-1.0.4.tar.bz2.{md5sum,sha1sum} +md5 be9b4b5328c6da1bda565ac5dffadb2d libmnl-1.0.4.tar.bz2 +sha1 2db40dea612e88c62fd321906be40ab5f8f1685a libmnl-1.0.4.tar.bz2 diff --git a/buildroot/package/libmnl/libmnl.mk b/buildroot/package/libmnl/libmnl.mk new file mode 100644 index 0000000..7fcce4c --- /dev/null +++ b/buildroot/package/libmnl/libmnl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libmnl +# +################################################################################ + +LIBMNL_VERSION = 1.0.4 +LIBMNL_SOURCE = libmnl-$(LIBMNL_VERSION).tar.bz2 +LIBMNL_SITE = http://netfilter.org/projects/libmnl/files +LIBMNL_INSTALL_STAGING = YES +LIBMNL_LICENSE = LGPL-2.1+ +LIBMNL_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmodbus/Config.in b/buildroot/package/libmodbus/Config.in new file mode 100644 index 0000000..642b57c --- /dev/null +++ b/buildroot/package/libmodbus/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBMODBUS + bool "libmodbus" + help + libmodbus is a free software library to send/receive data + according to the Modbus protocol. This library is written in C + and supports RTU (serial) and TCP (Ethernet) communications. + + http://libmodbus.org diff --git a/buildroot/package/libmodbus/libmodbus.hash b/buildroot/package/libmodbus/libmodbus.hash new file mode 100644 index 0000000..b5c4450 --- /dev/null +++ b/buildroot/package/libmodbus/libmodbus.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 c8c862b0e9a7ba699a49bc98f62bdffdfafd53a5716c0e162696b4bf108d3637 libmodbus-3.1.4.tar.gz diff --git a/buildroot/package/libmodbus/libmodbus.mk b/buildroot/package/libmodbus/libmodbus.mk new file mode 100644 index 0000000..e5a6c63 --- /dev/null +++ b/buildroot/package/libmodbus/libmodbus.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libmodbus +# +################################################################################ + +LIBMODBUS_VERSION = 3.1.4 +LIBMODBUS_SITE = http://libmodbus.org/releases +LIBMODBUS_LICENSE = LGPL-2.1+ +LIBMODBUS_LICENSE_FILES = COPYING.LESSER +LIBMODBUS_INSTALL_STAGING = YES +LIBMODBUS_CONF_OPTS = --without-documentation --disable-tests + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmodplug/Config.in b/buildroot/package/libmodplug/Config.in new file mode 100644 index 0000000..cfc774a --- /dev/null +++ b/buildroot/package/libmodplug/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBMODPLUG + bool "libmodplug" + depends on BR2_INSTALL_LIBSTDCPP + help + MOD music file decoder + + http://modplug-xmms.sourceforge.net/ + +comment "libmodplug needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/libmodplug/libmodplug.hash b/buildroot/package/libmodplug/libmodplug.hash new file mode 100644 index 0000000..0077e26 --- /dev/null +++ b/buildroot/package/libmodplug/libmodplug.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 77462d12ee99476c8645cb5511363e3906b88b33a6b54362b4dbc0f39aa2daad libmodplug-0.8.8.5.tar.gz diff --git a/buildroot/package/libmodplug/libmodplug.mk b/buildroot/package/libmodplug/libmodplug.mk new file mode 100644 index 0000000..d9d74df --- /dev/null +++ b/buildroot/package/libmodplug/libmodplug.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libmodplug +# +################################################################################ + +LIBMODPLUG_VERSION = 0.8.8.5 +LIBMODPLUG_SITE = http://downloads.sourceforge.net/project/modplug-xmms/libmodplug/$(LIBMODPLUG_VERSION) +LIBMODPLUG_INSTALL_STAGING = YES +LIBMODPLUG_LICENSE = Public Domain +LIBMODPLUG_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmpd/Config.in b/buildroot/package/libmpd/Config.in new file mode 100644 index 0000000..1e3b860 --- /dev/null +++ b/buildroot/package/libmpd/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBMPD + bool "libmpd" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + High-level client library for accessing Music Player Daemon. + LibMpd is a library that provides high-level, callback-based + access to Music Player Daemon (mpd). + + http://gmpcwiki.sarine.nl/index.php?title=Libmpd + +comment "libmpd needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libmpd/libmpd.hash b/buildroot/package/libmpd/libmpd.hash new file mode 100644 index 0000000..ca06c75 --- /dev/null +++ b/buildroot/package/libmpd/libmpd.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 fe20326b0d10641f71c4673fae637bf9222a96e1712f71f170fca2fc34bf7a83 libmpd-11.8.17.tar.gz diff --git a/buildroot/package/libmpd/libmpd.mk b/buildroot/package/libmpd/libmpd.mk new file mode 100644 index 0000000..2aa7ff7 --- /dev/null +++ b/buildroot/package/libmpd/libmpd.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libmpd +# +################################################################################ + +LIBMPD_VERSION_MAJOR = 11.8 +LIBMPD_VERSION = $(LIBMPD_VERSION_MAJOR).17 +LIBMPD_SITE = http://download.sarine.nl/Programs/gmpc/$(LIBMPD_VERSION_MAJOR) +LIBMPD_INSTALL_STAGING = YES +LIBMPD_DEPENDENCIES = libglib2 +LIBMPD_LICENSE = GPL-2.0+ +LIBMPD_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmpdclient/Config.in b/buildroot/package/libmpdclient/Config.in new file mode 100644 index 0000000..ba0df56 --- /dev/null +++ b/buildroot/package/libmpdclient/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBMPDCLIENT + bool "libmpdclient" + help + A stable, documented, asynchronous API library for interfacing + MPD in the C, C++ & Objective C languages. + + http://www.musicpd.org/libs/libmpdclient/ diff --git a/buildroot/package/libmpdclient/libmpdclient.hash b/buildroot/package/libmpdclient/libmpdclient.hash new file mode 100644 index 0000000..2fd20a4 --- /dev/null +++ b/buildroot/package/libmpdclient/libmpdclient.hash @@ -0,0 +1,2 @@ +# Verified against http://www.musicpd.org/download/libmpdclient/2/libmpdclient-2.10.tar.xz.sig, sha256 locally computed +sha256 4f08cde82dae70895f8e4532a6e9b54b201efd5591c6b5d6834895807ed2ff82 libmpdclient-2.10.tar.xz diff --git a/buildroot/package/libmpdclient/libmpdclient.mk b/buildroot/package/libmpdclient/libmpdclient.mk new file mode 100644 index 0000000..691aba9 --- /dev/null +++ b/buildroot/package/libmpdclient/libmpdclient.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libmpdclient +# +################################################################################ + +LIBMPDCLIENT_VERSION_MAJOR = 2 +LIBMPDCLIENT_VERSION = $(LIBMPDCLIENT_VERSION_MAJOR).10 +LIBMPDCLIENT_SOURCE = libmpdclient-$(LIBMPDCLIENT_VERSION).tar.xz +LIBMPDCLIENT_SITE = http://www.musicpd.org/download/libmpdclient/$(LIBMPDCLIENT_VERSION_MAJOR) +LIBMPDCLIENT_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +LIBMPDCLIENT_INSTALL_STAGING = YES +LIBMPDCLIENT_LICENSE = BSD-3-Clause +LIBMPDCLIENT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libmpeg2/0001-altivec.patch b/buildroot/package/libmpeg2/0001-altivec.patch new file mode 100644 index 0000000..4928a62 --- /dev/null +++ b/buildroot/package/libmpeg2/0001-altivec.patch @@ -0,0 +1,23 @@ +[PATCH] fix altivec.h detection + +Patch from Gentoo: + +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-libs/libmpeg2/files/libmpeg2-0.5.1-altivec.patch?revision=1.1&view=markup + +Signed-off-by: Peter Korsgaard +--- a/configure.ac.bak 2010-05-25 17:12:14.756245990 +0000 ++++ b/configure.ac 2010-05-25 17:11:51.629581723 +0000 +@@ -79,11 +79,10 @@ + CFLAGS="$OPT_CFLAGS $TRY_CFLAGS $CFLAGS" + AC_MSG_CHECKING([if is needed]) + AC_TRY_COMPILE([], +- [typedef vector int t; +- vec_ld(0, (unsigned char *)0);], ++ [vector int t; t = vec_add(t,t);], + [have_altivec=yes; AC_MSG_RESULT(no)], + [AC_TRY_COMPILE([#include ], +- [typedef vector int t; vec_ld(0, (unsigned char *)0);], ++ [vector int t; t = vec_add(t,t);], + [AC_DEFINE([HAVE_ALTIVEC_H],, + [Define to 1 if you have the header.]) + have_altivec=yes; AC_MSG_RESULT(yes)], diff --git a/buildroot/package/libmpeg2/0002-armv4l.patch b/buildroot/package/libmpeg2/0002-armv4l.patch new file mode 100644 index 0000000..70d45ef --- /dev/null +++ b/buildroot/package/libmpeg2/0002-armv4l.patch @@ -0,0 +1,24 @@ +Patch taken from gentoo. + +Signed-off-by: Gustavo Zacarias + +diff -urNp libmpeg2.orig/libmpeg2/motion_comp_arm_s.S libmpeg2/libmpeg2/motion_comp_arm_s.S +--- libmpeg2.orig/libmpeg2/motion_comp_arm_s.S 2008-07-09 21:16:05.000000000 +0200 ++++ libmpeg2/libmpeg2/motion_comp_arm_s.S 2009-11-20 19:55:22.000000000 +0100 +@@ -19,6 +19,16 @@ + @ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + ++@ Data preload is supported only by ARM V5TE and above ++ ++#if (defined (__ARM_ARCH_2__) || defined (__ARM_ARCH_3__) \ ++ || defined (__ARM_ARCH_3M__) || defined (__ARM_ARCH_4__) \ ++ || defined (__ARM_ARCH_4T__) || defined (__ARM_ARCH_5__) \ ++ || defined (__ARM_ARCH_5T__)) ++.macro pld reg ++.endm ++#endif ++ + .text + + @ ---------------------------------------------------------------- diff --git a/buildroot/package/libmpeg2/0003-fix-arm-detection.patch b/buildroot/package/libmpeg2/0003-fix-arm-detection.patch new file mode 100644 index 0000000..69ec454 --- /dev/null +++ b/buildroot/package/libmpeg2/0003-fix-arm-detection.patch @@ -0,0 +1,39 @@ +Improve the ARM detection to work on Thumb-only architecture + +The ARM-specific assembly code doesn't build on Thumb-only +architectures such as ARMv7-M, but the configure script assumes that +if the host tuple is arm*, then it can build and use the ARM optimized +code. + +This patch improves the configure.ac detection logic, by building one +of the instruction of the optimized assembly code, and using this to +decide whether or not the optimizations should be enabled. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -101,8 +101,10 @@ + alpha*) + AC_DEFINE([ARCH_ALPHA],,[alpha architecture]);; + arm*) +- arm_conditional=: +- AC_DEFINE([ARCH_ARM],,[ARM architecture]);; ++ AC_TRY_LINK([], [asm(".syntax divided\nstmfd sp!,{r4-r11,lr}")], ++ [AC_DEFINE([ARCH_ARM],,[ARM architecture]) ++ use_arm_optimization=yes], ++ [use_arm_optimization=no]) + esac + elif test x"$CC" = x"tendracc"; then + dnl TenDRA portability checking compiler +@@ -122,7 +124,7 @@ + esac + fi + +-AM_CONDITIONAL(ARCH_ARM, ${arm_conditional}) ++AM_CONDITIONAL(ARCH_ARM, test "${use_arm_optimization}" = "yes") + + dnl Checks for libtool - this must be done after we set cflags + AC_LIBTOOL_WIN32_DLL diff --git a/buildroot/package/libmpeg2/0004-fix-sparc.patch b/buildroot/package/libmpeg2/0004-fix-sparc.patch new file mode 100644 index 0000000..d876b66 --- /dev/null +++ b/buildroot/package/libmpeg2/0004-fix-sparc.patch @@ -0,0 +1,16 @@ +Do not use sparcv9 optimization flags for sparcv8 builds + +Signed-off-by: Waldemar Brodkorb + +diff -Nur libmpeg2-0.5.1.orig/configure.ac libmpeg2-0.5.1/configure.ac +--- libmpeg2-0.5.1.orig/configure.ac 2008-07-18 16:30:17.000000000 +0200 ++++ libmpeg2-0.5.1/configure.ac 2017-04-26 21:09:15.780838339 +0200 +@@ -95,7 +95,7 @@ + break + fi + done;; +- sparc-* | sparc64-*) ++ sparc64-*) + AC_DEFINE([ARCH_SPARC],,[sparc architecture]) + TRY_CFLAGS="$OPT_CFLAGS -mcpu=ultrasparc -mvis" + AC_TRY_CFLAGS([$TRY_CFLAGS $CFLAGS],[OPT_CFLAGS="$TRY_CFLAGS"]);; diff --git a/buildroot/package/libmpeg2/Config.in b/buildroot/package/libmpeg2/Config.in new file mode 100644 index 0000000..6d7ff67 --- /dev/null +++ b/buildroot/package/libmpeg2/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBMPEG2 + bool "libmpeg2" + help + MPEG1/MPEG2 video decoder library + + http://libmpeg2.sourceforge.net/ + +if BR2_PACKAGE_LIBMPEG2 + +config BR2_PACKAGE_LIBMPEG2_BINS + bool "mpeg2 binaries" + help + Install mpeg2dec, corrupt_mpeg2 and extract_mpeg2 programs as + well. + +endif diff --git a/buildroot/package/libmpeg2/libmpeg2.hash b/buildroot/package/libmpeg2/libmpeg2.hash new file mode 100644 index 0000000..c2adb67 --- /dev/null +++ b/buildroot/package/libmpeg2/libmpeg2.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 dee22e893cb5fc2b2b6ebd60b88478ab8556cb3b93f9a0d7ce8f3b61851871d4 libmpeg2-0.5.1.tar.gz diff --git a/buildroot/package/libmpeg2/libmpeg2.mk b/buildroot/package/libmpeg2/libmpeg2.mk new file mode 100644 index 0000000..db9b2f8 --- /dev/null +++ b/buildroot/package/libmpeg2/libmpeg2.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# libmpeg2 +# +################################################################################ + +LIBMPEG2_VERSION = 0.5.1 +LIBMPEG2_SITE = http://libmpeg2.sourceforge.net/files +LIBMPEG2_LICENSE = GPL-2.0+ +LIBMPEG2_LICENSE_FILES = COPYING +LIBMPEG2_INSTALL_STAGING = YES +LIBMPEG2_AUTORECONF = YES +LIBMPEG2_CONF_OPTS = --without-x --disable-directx + +ifeq ($(BR2_PACKAGE_SDL),y) +LIBMPEG2_CONF_ENV += ac_cv_prog_SDLCONFIG=$(STAGING_DIR)/usr/bin/sdl-config +LIBMPEG2_CONF_OPTS += --enable-sdl +LIBMPEG2_DEPENDENCIES += sdl +else +LIBMPEG2_CONF_OPTS += --disable-sdl +endif + +ifneq ($(BR2_PACKAGE_LIBMPEG2_BINS),y) +define LIBMPEG2_REMOVE_BINS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/,\ + mpeg2dec corrupt_mpeg2 extract_mpeg2) +endef + +LIBMPEG2_POST_INSTALL_TARGET_HOOKS += LIBMPEG2_REMOVE_BINS +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnatpmp/Config.in b/buildroot/package/libnatpmp/Config.in new file mode 100644 index 0000000..879e5ee --- /dev/null +++ b/buildroot/package/libnatpmp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBNATPMP + bool "libnatpmp" + depends on !BR2_BINFMT_FLAT + depends on !BR2_STATIC_LIBS + help + libnatpmp is an attempt to make a portable and fully compliant + implementation of the NAT-PMP protocol for the client side. It + is based on non blocking sockets and all calls of the API are + asynchronous. It is therefore very easy to integrate the + NAT-PMP code to any event driven code. + + http://miniupnp.free.fr/libnatpmp.html + +comment "libnatpmp needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on !BR2_BINFMT_FLAT diff --git a/buildroot/package/libnatpmp/libnatpmp.hash b/buildroot/package/libnatpmp/libnatpmp.hash new file mode 100644 index 0000000..a5cab3c --- /dev/null +++ b/buildroot/package/libnatpmp/libnatpmp.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 e1aa9c4c4219bc06943d6b2130f664daee213fb262fcb94dd355815b8f4536b0 libnatpmp-20150609.tar.gz diff --git a/buildroot/package/libnatpmp/libnatpmp.mk b/buildroot/package/libnatpmp/libnatpmp.mk new file mode 100644 index 0000000..3623027 --- /dev/null +++ b/buildroot/package/libnatpmp/libnatpmp.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libnatpmp +# +################################################################################ + +LIBNATPMP_VERSION = 20150609 +LIBNATPMP_SITE = http://miniupnp.free.fr/files +LIBNATPMP_INSTALL_STAGING = YES +LIBNATPMP_LICENSE = BSD-3-Clause +LIBNATPMP_LICENSE_FILES = LICENSE + +define LIBNATPMP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" +endef + +define LIBNATPMP_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + PREFIX=$(STAGING_DIR) \ + HEADERS='declspec.h natpmp.h' \ + $(TARGET_CONFIGURE_OPTS) install +endef + +define LIBNATPMP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + PREFIX=$(TARGET_DIR) \ + $(TARGET_CONFIGURE_OPTS) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libndp/0001-ndptool.c-Fix-musl-build.patch b/buildroot/package/libndp/0001-ndptool.c-Fix-musl-build.patch new file mode 100644 index 0000000..547598c --- /dev/null +++ b/buildroot/package/libndp/0001-ndptool.c-Fix-musl-build.patch @@ -0,0 +1,30 @@ +From 561f80b9a848be923f37bf1afedbecf92da3b2e7 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 30 Jan 2016 16:36:39 +0100 +Subject: [PATCH 1/1] ndptool.c: Fix musl build + +Fixes a build issue with the musl C library +http://autobuild.buildroot.net/results/d42/d42bebe51bbec38f131840b6bbefdc162f0ad194/build-end.log + +Patch sent upstream: https://github.com/jpirko/libndp/pull/7 + +Signed-off-by: Bernd Kuhls +--- + utils/ndptool.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/utils/ndptool.c b/utils/ndptool.c +index 04ec4e1..c6ef48c 100644 +--- a/utils/ndptool.c ++++ b/utils/ndptool.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include + + enum verbosity_level { +-- +2.7.0.rc3 + diff --git a/buildroot/package/libndp/Config.in b/buildroot/package/libndp/Config.in new file mode 100644 index 0000000..6639bb5 --- /dev/null +++ b/buildroot/package/libndp/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBNDP + bool "libndp" + help + This package contains a library which provides a wrapper + for IPv6 Neighbor Discovery Protocol. It also provides a tool + named ndptool for sending and receiving NDP messages. + + https://github.com/jpirko/libndp diff --git a/buildroot/package/libndp/libndp.hash b/buildroot/package/libndp/libndp.hash new file mode 100644 index 0000000..51e312d --- /dev/null +++ b/buildroot/package/libndp/libndp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 42c0a8938d4302c72a42e2d954deef7e4903bb3974da6804a929a3cd0b5b6aa7 libndp-v1.5.tar.gz diff --git a/buildroot/package/libndp/libndp.mk b/buildroot/package/libndp/libndp.mk new file mode 100644 index 0000000..4fa1d33 --- /dev/null +++ b/buildroot/package/libndp/libndp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libndp +# +################################################################################ + +LIBNDP_VERSION = v1.5 +LIBNDP_SITE = $(call github,jpirko,libndp,$(LIBNDP_VERSION)) +LIBNDP_LICENSE = LGPL-2.1+ +LIBNDP_LICENSE_FILES = COPYING +LIBNDP_AUTORECONF = YES +LIBNDP_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnet/0001-support-musl-libc.patch b/buildroot/package/libnet/0001-support-musl-libc.patch new file mode 100644 index 0000000..0704157 --- /dev/null +++ b/buildroot/package/libnet/0001-support-musl-libc.patch @@ -0,0 +1,50 @@ +From ffd7fab744a9ad2893169a8fb6244074604d5d0d Mon Sep 17 00:00:00 2001 +From: rofl0r +Date: Tue, 12 Aug 2014 21:51:39 +0200 +Subject: [PATCH] Support musl libc, remove support for glibc < 2.1 + +The workarounds for glibc < 2.1 (was released february 1999) break the +build with musl libc. + +It is very unlikely that 2.0 or earlier is still in use, and if so, +1) that's a big security hole +2) code wouldnt compile anyway since noone tested build in the last decade +3) user of it wouldn't expect anyway to get bleeding edge sw built on it, + so he would just use the latest version that works for him. + +Closes #52 +--- + libnet/src/libnet_link_linux.c | 11 ----------- + 1 file changed, 11 deletions(-) + +diff --git a/libnet/src/libnet_link_linux.c b/libnet/src/libnet_link_linux.c +index 054458d..3c6df3c 100644 +--- a/src/libnet_link_linux.c ++++ b/src/libnet_link_linux.c +@@ -30,26 +30,15 @@ + #include + + #include +-#if (__GLIBC__) + #include + #include +-#else +-#include +-#include +-#endif + + #if (HAVE_PACKET_SOCKET) + #ifndef SOL_PACKET + #define SOL_PACKET 263 + #endif /* SOL_PACKET */ +-#if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1 + #include + #include /* the L2 protocols */ +-#else +-#include +-#include +-#include /* The L2 protocols */ +-#endif + #endif /* HAVE_PACKET_SOCKET */ + + #include "../include/libnet.h" diff --git a/buildroot/package/libnet/Config.in b/buildroot/package/libnet/Config.in new file mode 100644 index 0000000..7186972 --- /dev/null +++ b/buildroot/package/libnet/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBNET + bool "libnet" + help + libnet provides a portable framework for low-level network + packet construction. + + http://sourceforge.net/projects/libnet-dev diff --git a/buildroot/package/libnet/libnet.hash b/buildroot/package/libnet/libnet.hash new file mode 100644 index 0000000..dd33490 --- /dev/null +++ b/buildroot/package/libnet/libnet.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/libnet-dev/files/ +sha1 dffff71c325584fdcf99b80567b60f8ad985e34c libnet-1.1.6.tar.gz +md5 710296fe424a49344e5fcc0d09e53317 libnet-1.1.6.tar.gz diff --git a/buildroot/package/libnet/libnet.mk b/buildroot/package/libnet/libnet.mk new file mode 100644 index 0000000..9661068 --- /dev/null +++ b/buildroot/package/libnet/libnet.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libnet +# +################################################################################ + +LIBNET_VERSION = 1.1.6 +LIBNET_SITE = http://sourceforge.net/projects/libnet-dev/files +LIBNET_INSTALL_STAGING = YES +# PF_PACKET is always available on Linux +LIBNET_CONF_OPTS = libnet_cv_have_packet_socket=yes +LIBNET_LICENSE = BSD-2-Clause, BSD-3-Clause +LIBNET_LICENSE_FILES = doc/COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnetfilter_acct/Config.in b/buildroot/package/libnetfilter_acct/Config.in new file mode 100644 index 0000000..ecfef6d --- /dev/null +++ b/buildroot/package/libnetfilter_acct/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBNETFILTER_ACCT + bool "libnetfilter_acct" + select BR2_PACKAGE_LIBMNL + help + libnetfilter_acct is the userspace library providing interface + to extended accounting infrastructure. + + http://www.netfilter.org/projects/libnetfilter_acct/ diff --git a/buildroot/package/libnetfilter_acct/libnetfilter_acct.hash b/buildroot/package/libnetfilter_acct/libnetfilter_acct.hash new file mode 100644 index 0000000..7c38664 --- /dev/null +++ b/buildroot/package/libnetfilter_acct/libnetfilter_acct.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/libnetfilter_acct/libnetfilter_acct-1.0.3.tar.bz2.{md5sum,sha1sum} +md5 814b2972b2f5c740ff87510bc109168b libnetfilter_acct-1.0.3.tar.bz2 +sha1 4b9073e4aa989b0f000c8da1ab01b22fceed52b2 libnetfilter_acct-1.0.3.tar.bz2 diff --git a/buildroot/package/libnetfilter_acct/libnetfilter_acct.mk b/buildroot/package/libnetfilter_acct/libnetfilter_acct.mk new file mode 100644 index 0000000..e791f6f --- /dev/null +++ b/buildroot/package/libnetfilter_acct/libnetfilter_acct.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libnetfilter_acct +# +################################################################################ + +LIBNETFILTER_ACCT_VERSION = 1.0.3 +LIBNETFILTER_ACCT_SOURCE = libnetfilter_acct-$(LIBNETFILTER_ACCT_VERSION).tar.bz2 +LIBNETFILTER_ACCT_SITE = http://www.netfilter.org/projects/libnetfilter_acct/files +LIBNETFILTER_ACCT_INSTALL_STAGING = YES +LIBNETFILTER_ACCT_DEPENDENCIES = host-pkgconf libmnl +LIBNETFILTER_ACCT_LICENSE = LGPL-2.1+ +LIBNETFILTER_ACCT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnetfilter_conntrack/Config.in b/buildroot/package/libnetfilter_conntrack/Config.in new file mode 100644 index 0000000..f9a407f --- /dev/null +++ b/buildroot/package/libnetfilter_conntrack/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBNETFILTER_CONNTRACK + bool "libnetfilter_conntrack" + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNFNETLINK + help + libnetfilter_conntrack is a userspace library providing + a programming interface (API) to the in-kernel + connection tracking state table. + + http://www.netfilter.org/projects/libnetfilter_conntrack/ diff --git a/buildroot/package/libnetfilter_conntrack/libnetfilter_conntrack.hash b/buildroot/package/libnetfilter_conntrack/libnetfilter_conntrack.hash new file mode 100644 index 0000000..de9d1d3 --- /dev/null +++ b/buildroot/package/libnetfilter_conntrack/libnetfilter_conntrack.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/libnetfilter_conntrack/libnetfilter_conntrack-1.0.6.tar.bz2.{md5sum,sha1sum} +md5 7139c5f408dd9606ffecfd5dcda8175b libnetfilter_conntrack-1.0.6.tar.bz2 +sha1 015f985a8e171889a67769ba02d070eca53bac07 libnetfilter_conntrack-1.0.6.tar.bz2 diff --git a/buildroot/package/libnetfilter_conntrack/libnetfilter_conntrack.mk b/buildroot/package/libnetfilter_conntrack/libnetfilter_conntrack.mk new file mode 100644 index 0000000..2e9f6b7 --- /dev/null +++ b/buildroot/package/libnetfilter_conntrack/libnetfilter_conntrack.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libnetfilter_conntrack +# +################################################################################ + +LIBNETFILTER_CONNTRACK_VERSION = 1.0.6 +LIBNETFILTER_CONNTRACK_SOURCE = libnetfilter_conntrack-$(LIBNETFILTER_CONNTRACK_VERSION).tar.bz2 +LIBNETFILTER_CONNTRACK_SITE = http://www.netfilter.org/projects/libnetfilter_conntrack/files +LIBNETFILTER_CONNTRACK_INSTALL_STAGING = YES +LIBNETFILTER_CONNTRACK_DEPENDENCIES = host-pkgconf libnfnetlink libmnl +LIBNETFILTER_CONNTRACK_LICENSE = GPL-2.0+ +LIBNETFILTER_CONNTRACK_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnetfilter_cthelper/0001-uclinux.patch b/buildroot/package/libnetfilter_cthelper/0001-uclinux.patch new file mode 100644 index 0000000..7a6ca70 --- /dev/null +++ b/buildroot/package/libnetfilter_cthelper/0001-uclinux.patch @@ -0,0 +1,26 @@ +From d028334281b218209412ec6e1dba56ca96320bd9 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 10 Sep 2013 16:08:29 -0300 +Subject: [PATCH] configure: uclinux is also linux + +Signed-off-by: Gustavo Zacarias +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index d52b1ce..9389b70 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -22,7 +22,7 @@ AC_DISABLE_STATIC + LT_INIT + CHECK_GCC_FVISIBILITY + case "$host" in +-*-*-linux*) ;; ++*-*-linux* | *-*-uclinux*) ;; + *) AC_MSG_ERROR([Linux only, dude!]);; + esac + +-- +1.8.1.5 + diff --git a/buildroot/package/libnetfilter_cthelper/Config.in b/buildroot/package/libnetfilter_cthelper/Config.in new file mode 100644 index 0000000..8d9b1dd --- /dev/null +++ b/buildroot/package/libnetfilter_cthelper/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBNETFILTER_CTHELPER + bool "libnetfilter_cthelper" + select BR2_PACKAGE_LIBMNL + help + libnetfilter_cthelper is the userspace library that provides + the programming interface to the user-space helper + infrastructure available since Linux kernel 3.6. + + http://www.netfilter.org/projects/libnetfilter_cthelper/ diff --git a/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.hash b/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.hash new file mode 100644 index 0000000..5108652 --- /dev/null +++ b/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/libnetfilter_cthelper/libnetfilter_cthelper-1.0.0.tar.bz2.{md5sum,sha1sum} +md5 b2efab1a3a198a5add448960ba011acd libnetfilter_cthelper-1.0.0.tar.bz2 +sha1 5d0a82794bd46aafde20c16800edca23d563de66 libnetfilter_cthelper-1.0.0.tar.bz2 diff --git a/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.mk b/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.mk new file mode 100644 index 0000000..61d6acd --- /dev/null +++ b/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libnetfilter_cthelper +# +################################################################################ + +LIBNETFILTER_CTHELPER_VERSION = 1.0.0 +LIBNETFILTER_CTHELPER_SOURCE = libnetfilter_cthelper-$(LIBNETFILTER_CTHELPER_VERSION).tar.bz2 +LIBNETFILTER_CTHELPER_SITE = http://www.netfilter.org/projects/libnetfilter_cthelper/files +LIBNETFILTER_CTHELPER_INSTALL_STAGING = YES +LIBNETFILTER_CTHELPER_DEPENDENCIES = host-pkgconf libmnl +LIBNETFILTER_CTHELPER_AUTORECONF = YES +LIBNETFILTER_CTHELPER_LICENSE = GPL-2.0+ +LIBNETFILTER_CTHELPER_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnetfilter_cttimeout/0001-uclinux.patch b/buildroot/package/libnetfilter_cttimeout/0001-uclinux.patch new file mode 100644 index 0000000..5d462d8 --- /dev/null +++ b/buildroot/package/libnetfilter_cttimeout/0001-uclinux.patch @@ -0,0 +1,26 @@ +From d8d2ec14bc192f998afae2b71c69248e73518ddf Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 10 Sep 2013 16:09:14 -0300 +Subject: [PATCH] configure: uclinux is also linux + +Signed-off-by: Gustavo Zacarias +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index d79e941..aeb6ad0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -22,7 +22,7 @@ AC_DISABLE_STATIC + LT_INIT + CHECK_GCC_FVISIBILITY + case "$host" in +-*-*-linux*) ;; ++*-*-linux* | *-*-uclinux*) ;; + *) AC_MSG_ERROR([Linux only, dude!]);; + esac + +-- +1.8.1.5 + diff --git a/buildroot/package/libnetfilter_cttimeout/Config.in b/buildroot/package/libnetfilter_cttimeout/Config.in new file mode 100644 index 0000000..333919b --- /dev/null +++ b/buildroot/package/libnetfilter_cttimeout/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT + bool "libnetfilter_cttimeout" + select BR2_PACKAGE_LIBMNL + help + libnetfilter_cttimeout is the userspace library that provides + the programming interface to the fine-grain + connection tracking timeout infrastructure. + + http://www.netfilter.org/projects/libnetfilter_cttimeout/ diff --git a/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash b/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash new file mode 100644 index 0000000..7749f96 --- /dev/null +++ b/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/libnetfilter_cttimeout/libnetfilter_cttimeout-1.0.0.tar.bz2.{md5sum,sha1sum} +md5 7697437fc9ebb6f6b83df56a633db7f9 libnetfilter_cttimeout-1.0.0.tar.bz2 +sha1 24cba24b0371e80007be4ea0fa9d872df63b8a7a libnetfilter_cttimeout-1.0.0.tar.bz2 diff --git a/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.mk b/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.mk new file mode 100644 index 0000000..9c4c951 --- /dev/null +++ b/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libnetfilter_cttimeout +# +################################################################################ + +LIBNETFILTER_CTTIMEOUT_VERSION = 1.0.0 +LIBNETFILTER_CTTIMEOUT_SOURCE = libnetfilter_cttimeout-$(LIBNETFILTER_CTTIMEOUT_VERSION).tar.bz2 +LIBNETFILTER_CTTIMEOUT_SITE = http://www.netfilter.org/projects/libnetfilter_cttimeout/files +LIBNETFILTER_CTTIMEOUT_INSTALL_STAGING = YES +LIBNETFILTER_CTTIMEOUT_DEPENDENCIES = host-pkgconf libmnl +LIBNETFILTER_CTTIMEOUT_AUTORECONF = YES +LIBNETFILTER_CTTIMEOUT_LICENSE = GPL-2.0+ +LIBNETFILTER_CTTIMEOUT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnetfilter_log/0001-uclinux.patch b/buildroot/package/libnetfilter_log/0001-uclinux.patch new file mode 100644 index 0000000..75d4a1e --- /dev/null +++ b/buildroot/package/libnetfilter_log/0001-uclinux.patch @@ -0,0 +1,26 @@ +From e36a2377e7ec50f6f675eb41f79edcda6ddebe5c Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 10 Sep 2013 15:48:50 -0300 +Subject: [PATCH] configure: uclinux is also linux + +Signed-off-by: Gustavo Zacarias +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index e6e1317..189a753 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -20,7 +20,7 @@ AC_PROG_INSTALL + AC_PROG_LN_S + + case "$host" in +-*-*-linux*) ;; ++*-*-linux* | *-*-uclinux*) ;; + *) AC_MSG_ERROR([Linux only, dude!]);; + esac + +-- +1.8.1.5 + diff --git a/buildroot/package/libnetfilter_log/Config.in b/buildroot/package/libnetfilter_log/Config.in new file mode 100644 index 0000000..927cd0a --- /dev/null +++ b/buildroot/package/libnetfilter_log/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBNETFILTER_LOG + bool "libnetfilter_log" + select BR2_PACKAGE_LIBNFNETLINK + help + libnetfilter_log is a userspace library providing interface + to packets that have been logged by the kernel packet filter. + + http://www.netfilter.org/projects/libnetfilter_log/ diff --git a/buildroot/package/libnetfilter_log/libnetfilter_log.hash b/buildroot/package/libnetfilter_log/libnetfilter_log.hash new file mode 100644 index 0000000..4fe6a9b --- /dev/null +++ b/buildroot/package/libnetfilter_log/libnetfilter_log.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/libnetfilter_log/libnetfilter_log-1.0.1.tar.bz2.{md5sum,sha1sum} +md5 2a4bb0654ae675a52d2e8d1c06090b94 libnetfilter_log-1.0.1.tar.bz2 +sha1 0b95bcb1ad15eea906fa3607cd6c2290bd48d5bd libnetfilter_log-1.0.1.tar.bz2 diff --git a/buildroot/package/libnetfilter_log/libnetfilter_log.mk b/buildroot/package/libnetfilter_log/libnetfilter_log.mk new file mode 100644 index 0000000..bcf755e --- /dev/null +++ b/buildroot/package/libnetfilter_log/libnetfilter_log.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libnetfilter_log +# +################################################################################ + +LIBNETFILTER_LOG_VERSION = 1.0.1 +LIBNETFILTER_LOG_SOURCE = libnetfilter_log-$(LIBNETFILTER_LOG_VERSION).tar.bz2 +LIBNETFILTER_LOG_SITE = http://www.netfilter.org/projects/libnetfilter_log/files +LIBNETFILTER_LOG_INSTALL_STAGING = YES +LIBNETFILTER_LOG_DEPENDENCIES = host-pkgconf libnfnetlink +LIBNETFILTER_LOG_AUTORECONF = YES +LIBNETFILTER_LOG_LICENSE = GPL-2.0+ +LIBNETFILTER_LOG_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnetfilter_queue/0001-uclinux.patch b/buildroot/package/libnetfilter_queue/0001-uclinux.patch new file mode 100644 index 0000000..21895d9 --- /dev/null +++ b/buildroot/package/libnetfilter_queue/0001-uclinux.patch @@ -0,0 +1,26 @@ +From 311b60655761f6f3c4fe44cf6eff63427283f25e Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 10 Sep 2013 16:13:58 -0300 +Subject: [PATCH] configure: uclinux is also linux + +Signed-off-by: Gustavo Zacarias +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 07747a6..289868f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -21,7 +21,7 @@ AC_PROG_INSTALL + CHECK_GCC_FVISIBILITY + + case "$host" in +-*-*-linux*) ;; ++*-*-linux* | *-*-uclinux*) ;; + *) AC_MSG_ERROR([Linux only, dude!]);; + esac + +-- +1.8.1.5 + diff --git a/buildroot/package/libnetfilter_queue/0002-musl.patch b/buildroot/package/libnetfilter_queue/0002-musl.patch new file mode 100644 index 0000000..3765d58 --- /dev/null +++ b/buildroot/package/libnetfilter_queue/0002-musl.patch @@ -0,0 +1,45 @@ +From 5348da83403383a60831f4c297841afb98692887 Mon Sep 17 00:00:00 2001 +From: Felix Janda +Date: Sat, 16 May 2015 14:45:46 +0200 +Subject: [PATCH] extra: Define _GNU_SOURCE to get members of tcphdr&ucphdr + +The source uses linux names for members of tcphdr. For example +"source" instead of "th_sport", ... musl libc's headers need +_GNU_SOURCE defined in order to expose these. + +Signed-off-by: Felix Janda +Signed-off-by: Pablo Neira Ayuso +[yann.morin.1998@free.fr: backported from upstream] +Signed-off-by: "Yann E. MORIN" +--- + src/extra/tcp.c | 1 + + src/extra/udp.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/src/extra/tcp.c b/src/extra/tcp.c +index bf161aa..d1cd79d 100644 +--- a/src/extra/tcp.c ++++ b/src/extra/tcp.c +@@ -15,6 +15,7 @@ + #include + #include + #include ++#define _GNU_SOURCE + #include + + #include +diff --git a/src/extra/udp.c b/src/extra/udp.c +index 6e6baed..8c44a66 100644 +--- a/src/extra/udp.c ++++ b/src/extra/udp.c +@@ -14,6 +14,7 @@ + #include + #include + #include ++#define _GNU_SOURCE + #include + + #include +-- +1.9.1 + diff --git a/buildroot/package/libnetfilter_queue/Config.in b/buildroot/package/libnetfilter_queue/Config.in new file mode 100644 index 0000000..e93e8ea --- /dev/null +++ b/buildroot/package/libnetfilter_queue/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBNETFILTER_QUEUE + bool "libnetfilter_queue" + select BR2_PACKAGE_LIBNFNETLINK + select BR2_PACKAGE_LIBMNL + help + libnetfilter_queue is the userspace library that provides + the programming interface to the fine-grain + connection tracking timeout infrastructure. + + http://www.netfilter.org/projects/libnetfilter_queue/ diff --git a/buildroot/package/libnetfilter_queue/libnetfilter_queue.hash b/buildroot/package/libnetfilter_queue/libnetfilter_queue.hash new file mode 100644 index 0000000..4ea3721 --- /dev/null +++ b/buildroot/package/libnetfilter_queue/libnetfilter_queue.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/libnetfilter_queue/libnetfilter_queue-1.0.2.tar.bz2.{md5sum,sha1sum} +md5 df09befac35cb215865b39a36c96a3fa libnetfilter_queue-1.0.2.tar.bz2 +sha1 8cc0b8ed33162281bc9fa8bcfa8c9dcb08848ff9 libnetfilter_queue-1.0.2.tar.bz2 diff --git a/buildroot/package/libnetfilter_queue/libnetfilter_queue.mk b/buildroot/package/libnetfilter_queue/libnetfilter_queue.mk new file mode 100644 index 0000000..75910c5 --- /dev/null +++ b/buildroot/package/libnetfilter_queue/libnetfilter_queue.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libnetfilter_queue +# +################################################################################ + +LIBNETFILTER_QUEUE_VERSION = 1.0.2 +LIBNETFILTER_QUEUE_SOURCE = libnetfilter_queue-$(LIBNETFILTER_QUEUE_VERSION).tar.bz2 +LIBNETFILTER_QUEUE_SITE = http://www.netfilter.org/projects/libnetfilter_queue/files +LIBNETFILTER_QUEUE_INSTALL_STAGING = YES +LIBNETFILTER_QUEUE_DEPENDENCIES = host-pkgconf libnfnetlink libmnl +LIBNETFILTER_QUEUE_AUTORECONF = YES +LIBNETFILTER_QUEUE_LICENSE = GPL-2.0+ +LIBNETFILTER_QUEUE_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnfc/0001-build-systems-make-example-build-optional.patch b/buildroot/package/libnfc/0001-build-systems-make-example-build-optional.patch new file mode 100644 index 0000000..06577c5 --- /dev/null +++ b/buildroot/package/libnfc/0001-build-systems-make-example-build-optional.patch @@ -0,0 +1,82 @@ +From 40a4871b171293d98acb40cf54be9ee9b78a3244 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Wed, 6 Jun 2012 00:49:25 +0200 +Subject: [PATCH 1/1] build systems: make example build optional + +This patch makes example build optional for both cmake and autotools build +systems. + +In order to keep the former behavior, example build is enabled by default. + +Signed-off-by: Samuel Martin + +diff -Nurp a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt 2013-12-08 18:51:01.000000000 +0000 ++++ b/CMakeLists.txt 2014-01-08 12:51:42.435096403 +0000 +@@ -39,6 +39,7 @@ IF(LIBNFC_ENVVARS) + ADD_DEFINITIONS(-DENVVARS) + ENDIF(LIBNFC_ENVVARS) + ++SET(BUILD_EXAMPLES ON CACHE BOOL "Build examples") + SET(LIBNFC_DEBUG_MODE OFF CACHE BOOL "Debug mode") + IF(LIBNFC_DEBUG_MODE) + ADD_DEFINITIONS(-DDEBUG) +@@ -155,7 +156,10 @@ ENDIF(WIN32) + ADD_SUBDIRECTORY(libnfc) + ADD_SUBDIRECTORY(include) + ADD_SUBDIRECTORY(utils) +-ADD_SUBDIRECTORY(examples) ++ ++IF(BUILD_EXAMPLES) ++ ADD_SUBDIRECTORY(examples) ++ENDIF(BUILD_EXAMPLES) + + # Binary Package + IF(WIN32) +diff -Nurp a/Makefile.am b/Makefile.am +--- a/Makefile.am 2013-12-08 18:51:01.000000000 +0000 ++++ b/Makefile.am 2014-01-08 12:52:12.807018593 +0000 +@@ -2,7 +2,13 @@ ACLOCAL_AMFLAGS = -I m4 + + AM_CFLAGS = $(LIBNFC_CFLAGS) + +-SUBDIRS = libnfc utils examples include contrib cmake test ++SUBDIRS = libnfc utils ++ ++if EXAMPLE_ENABLED ++SUBDIRS += examples ++endif ++ ++SUBDIRS += include contrib cmake test + + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = libnfc.pc +diff -Nurp a/configure.ac b/configure.ac +--- a/configure.ac 2013-12-08 18:51:01.000000000 +0000 ++++ b/configure.ac 2014-01-08 12:53:02.054872564 +0000 +@@ -142,6 +142,14 @@ then + fi + AM_CONDITIONAL(DOC_ENABLED, [test x"$enable_doc" = xyes]) + ++# Example build (default: yes) ++AC_ARG_ENABLE([example],AS_HELP_STRING([--enable-example],[Enable example build.]),[enable_example=$enableval],[enable_example="yes"]) ++ ++AC_MSG_CHECKING(for example build) ++AC_MSG_RESULT($enable_example) ++ ++AM_CONDITIONAL(EXAMPLE_ENABLED, [test x"$enable_example" = xyes]) ++ + # Dependencies + PKG_CONFIG_REQUIRES="" + +@@ -160,7 +168,10 @@ if test x$ac_cv_with_cutter = xyes -a x$ + fi + AM_CONDITIONAL([WITH_CUTTER], [test "$ac_cv_use_cutter" != "no"]) + ++if test x"$enable_example" = "xyes" ++then + AC_CHECK_READLINE ++fi + + # Help us to write great code ;-) + CFLAGS="$CFLAGS -Wall -pedantic -Wextra" diff --git a/buildroot/package/libnfc/Config.in b/buildroot/package/libnfc/Config.in new file mode 100644 index 0000000..c8fe251 --- /dev/null +++ b/buildroot/package/libnfc/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBNFC + bool "libnfc" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Public platform independent Near Field Communication (NFC) + library. + + http://www.libnfc.org/ + +if BR2_PACKAGE_LIBNFC + +config BR2_PACKAGE_LIBNFC_EXAMPLES + bool "build libnfc examples" + select BR2_PACKAGE_READLINE + +endif + +comment "libnfc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libnfc/libnfc.hash b/buildroot/package/libnfc/libnfc.hash new file mode 100644 index 0000000..307e049 --- /dev/null +++ b/buildroot/package/libnfc/libnfc.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 945e74d8e27683f9b8a6f6e529557b305d120df347a960a6a7ead6cb388f4072 libnfc-1.7.1.tar.bz2 diff --git a/buildroot/package/libnfc/libnfc.mk b/buildroot/package/libnfc/libnfc.mk new file mode 100644 index 0000000..b13fd69 --- /dev/null +++ b/buildroot/package/libnfc/libnfc.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libnfc +# +################################################################################ + +LIBNFC_VERSION = 1.7.1 +LIBNFC_SOURCE = libnfc-$(LIBNFC_VERSION).tar.bz2 +LIBNFC_SITE = https://github.com/nfc-tools/libnfc/releases/download/libnfc-$(LIBNFC_VERSION) +LIBNFC_LICENSE = LGPL-3.0+ +LIBNFC_LICENSE_FILES = COPYING +LIBNFC_AUTORECONF = YES +LIBNFC_INSTALL_STAGING = YES + +LIBNFC_DEPENDENCIES = host-pkgconf libusb libusb-compat + +# N.B. The acr122 driver requires pcsc-lite. +LIBNFC_CONF_OPTS = --with-drivers=arygon,pn53x_usb + +ifeq ($(BR2_PACKAGE_LIBNFC_EXAMPLES),y) +LIBNFC_CONF_OPTS += --enable-example +LIBNFC_DEPENDENCIES += readline +else +LIBNFC_CONF_OPTS += --disable-example +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnfnetlink/0001-uclinux.patch b/buildroot/package/libnfnetlink/0001-uclinux.patch new file mode 100644 index 0000000..b152012 --- /dev/null +++ b/buildroot/package/libnfnetlink/0001-uclinux.patch @@ -0,0 +1,26 @@ +From 8e5a9d8f32c9646d01d8c84e979892dfd28a7f7c Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 10 Sep 2013 15:35:22 -0300 +Subject: [PATCH] configure: uclinux is also linux + +Signed-off-by: Gustavo Zacarias +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 0926a1c..b979772 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -18,7 +18,7 @@ AC_DISABLE_STATIC + AM_PROG_LIBTOOL + + case "$host" in +-*-*-linux*) ;; ++*-*-linux* | *-*-uclinux*) ;; + *) AC_MSG_ERROR([Linux only, dude!]);; + esac + +-- +1.8.1.5 + diff --git a/buildroot/package/libnfnetlink/0002-musl.patch b/buildroot/package/libnfnetlink/0002-musl.patch new file mode 100644 index 0000000..bee7898 --- /dev/null +++ b/buildroot/package/libnfnetlink/0002-musl.patch @@ -0,0 +1,32 @@ +Include to get the u_int* definitions + +This is needed to fix the build with the musl C library, and this +patch comes from +http://git.alpinelinux.org/cgit/aports/plain/main/libnfnetlink/musl-fix-includes.patch. + +It will no longer be needed with upcoming upstream releases of +libnfnetlink, since they have switched to use the types +instead. However this change was too invasive to backport. + +Signed-off-by: Thomas Petazzoni + +--- libnfnetlink-1.0.1.orig/include/libnfnetlink/linux_nfnetlink.h ++++ libnfnetlink-1.0.1/include/libnfnetlink/linux_nfnetlink.h +@@ -1,6 +1,6 @@ + #ifndef _NFNETLINK_H + #define _NFNETLINK_H +-#include ++#include + #include + + enum nfnetlink_groups { +--- libnfnetlink-1.0.1.orig/include/libnfnetlink/libnfnetlink.h ++++ libnfnetlink-1.0.1/include/libnfnetlink/libnfnetlink.h +@@ -15,6 +15,7 @@ + #define aligned_u64 unsigned long long __attribute__((aligned(8))) + #endif + ++#include + #include /* for sa_family_t */ + #include + #include diff --git a/buildroot/package/libnfnetlink/Config.in b/buildroot/package/libnfnetlink/Config.in new file mode 100644 index 0000000..fa247c5 --- /dev/null +++ b/buildroot/package/libnfnetlink/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBNFNETLINK + bool "libnfnetlink" + help + libnfnetlink is the low-level library for netfilter related + kernel/userspace communication. + It provides a generic messaging infrastructure for in-kernel + netfilter subsystems (such as nfnetlink_log, nfnetlink_queue, + nfnetlink_conntrack) and their respective users + and/or management tools in userspace. + + http://www.netfilter.org/projects/libnfnetlink/ diff --git a/buildroot/package/libnfnetlink/libnfnetlink.hash b/buildroot/package/libnfnetlink/libnfnetlink.hash new file mode 100644 index 0000000..93844f2 --- /dev/null +++ b/buildroot/package/libnfnetlink/libnfnetlink.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/libnfnetlink/libnfnetlink-1.0.1.tar.bz2.{md5sum,sha1sum} +md5 98927583d2016a9fb1936fed992e2c5e libnfnetlink-1.0.1.tar.bz2 +sha1 27ae2dfbd976e28cb7a417f9e946c901f512dd9a libnfnetlink-1.0.1.tar.bz2 diff --git a/buildroot/package/libnfnetlink/libnfnetlink.mk b/buildroot/package/libnfnetlink/libnfnetlink.mk new file mode 100644 index 0000000..13f5d72 --- /dev/null +++ b/buildroot/package/libnfnetlink/libnfnetlink.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libnfnetlink +# +################################################################################ + +LIBNFNETLINK_VERSION = 1.0.1 +LIBNFNETLINK_SOURCE = libnfnetlink-$(LIBNFNETLINK_VERSION).tar.bz2 +LIBNFNETLINK_SITE = http://www.netfilter.org/projects/libnfnetlink/files +LIBNFNETLINK_AUTORECONF = YES +LIBNFNETLINK_INSTALL_STAGING = YES +LIBNFNETLINK_LICENSE = GPL-2.0 +LIBNFNETLINK_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnfs/Config.in b/buildroot/package/libnfs/Config.in new file mode 100644 index 0000000..2a1ef03 --- /dev/null +++ b/buildroot/package/libnfs/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBNFS + bool "libnfs" + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + nfs userspace implementation. + + http://github.com/sahlberg/libnfs + +comment "libnfs needs a toolchain w/ threads" + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) diff --git a/buildroot/package/libnfs/libnfs.hash b/buildroot/package/libnfs/libnfs.hash new file mode 100644 index 0000000..cfe6678 --- /dev/null +++ b/buildroot/package/libnfs/libnfs.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 7ea6cd8fa6c461d01091e584d424d28e137d23ff4b65b95d01a3fd0ef95d120e libnfs-libnfs-2.0.0.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENCE-LGPL-2.1.txt diff --git a/buildroot/package/libnfs/libnfs.mk b/buildroot/package/libnfs/libnfs.mk new file mode 100644 index 0000000..d961fd1 --- /dev/null +++ b/buildroot/package/libnfs/libnfs.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libnfs +# +################################################################################ + +LIBNFS_VERSION = libnfs-2.0.0 +LIBNFS_SITE = $(call github,sahlberg,libnfs,$(LIBNFS_VERSION)) +LIBNFS_INSTALL_STAGING = YES +LIBNFS_AUTORECONF = YES +LIBNFS_LICENSE = LGPL-2.1+ +LIBNFS_LICENSE_FILES = LICENCE-LGPL-2.1.txt +LIBNFS_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +LIBNFS_DEPENDENCIES += libtirpc +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnftnl/0001-Rename-xfree-to-libnftnl_xfree-to-avoid-symbol-namin.patch b/buildroot/package/libnftnl/0001-Rename-xfree-to-libnftnl_xfree-to-avoid-symbol-namin.patch new file mode 100644 index 0000000..1062f2b --- /dev/null +++ b/buildroot/package/libnftnl/0001-Rename-xfree-to-libnftnl_xfree-to-avoid-symbol-namin.patch @@ -0,0 +1,911 @@ +From a51cdce6fd271a5cc393c5e56996846d9c453d6a Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 2 Jun 2016 23:03:27 -0300 +Subject: [PATCH] Rename xfree() to libnftnl_xfree() to avoid symbol naming + conflict + +When ELF binaries and shared libraries are used, the internal +functions of libnftnl such as xfree() are not visible to the outside +world (their visibility is 'hidden'). Therefore, the fact that other +programs (especially nftables) may have symbols with the same name +does not cause any problem. + +However, when doing static linking on a non-ELF platform (such as +Blackfin, which uses the FLAT binary format), there is no way of +encoding this visibility. Therefore, the xfree() symbols of libnftnl +becomes visible to the outside world, causing a conflict with the +xfree() symbol defined by nftables. + +To solve this, this patch renames the libnftnl xfree() function to +libnftnl_xfree(). + +Signed-off-by: Thomas Petazzoni +[Gustavo: update for version 1.0.7] +Signed-off-by: Gustavo Zacarias +[baruch: update for version 1.0.9] +Signed-off-by: Baruch Siach +--- + include/utils.h | 2 +- + src/chain.c | 36 ++++++++++++++++++------------------ + src/common.c | 2 +- + src/expr.c | 4 ++-- + src/expr/data_reg.c | 2 +- + src/expr/dynset.c | 2 +- + src/expr/immediate.c | 2 +- + src/expr/log.c | 6 +++--- + src/expr/lookup.c | 2 +- + src/expr/match.c | 6 +++--- + src/expr/target.c | 6 +++--- + src/gen.c | 2 +- + src/object.c | 14 +++++++------- + src/rule.c | 32 ++++++++++++++++---------------- + src/ruleset.c | 2 +- + src/set.c | 28 ++++++++++++++-------------- + src/set_elem.c | 28 ++++++++++++++-------------- + src/table.c | 14 +++++++------- + src/trace.c | 14 +++++++------- + src/udata.c | 2 +- + src/utils.c | 2 +- + 21 files changed, 104 insertions(+), 104 deletions(-) + +diff --git a/include/utils.h b/include/utils.h +index 3cc659652fe2..820556715013 100644 +--- a/include/utils.h ++++ b/include/utils.h +@@ -17,7 +17,7 @@ + + #define __noreturn __attribute__((__noreturn__)) + +-#define xfree(ptr) free((void *)ptr); ++#define nftnl_xfree(ptr) free((void *)ptr); + + #define div_round_up(n, d) (((n) + (d) - 1) / (d)) + +diff --git a/src/chain.c b/src/chain.c +index eff518680873..03033bbcb93b 100644 +--- a/src/chain.c ++++ b/src/chain.c +@@ -97,14 +97,14 @@ EXPORT_SYMBOL(nftnl_chain_free); + void nftnl_chain_free(const struct nftnl_chain *c) + { + if (c->flags & (1 << NFTNL_CHAIN_NAME)) +- xfree(c->name); ++ nftnl_xfree(c->name); + if (c->flags & (1 << NFTNL_CHAIN_TABLE)) +- xfree(c->table); ++ nftnl_xfree(c->table); + if (c->flags & (1 << NFTNL_CHAIN_TYPE)) +- xfree(c->type); ++ nftnl_xfree(c->type); + if (c->flags & (1 << NFTNL_CHAIN_DEV)) +- xfree(c->dev); +- xfree(c); ++ nftnl_xfree(c->dev); ++ nftnl_xfree(c); + } + + EXPORT_SYMBOL(nftnl_chain_is_set); +@@ -121,15 +121,15 @@ void nftnl_chain_unset(struct nftnl_chain *c, uint16_t attr) + + switch (attr) { + case NFTNL_CHAIN_NAME: +- xfree(c->name); ++ nftnl_xfree(c->name); + break; + case NFTNL_CHAIN_TABLE: +- xfree(c->table); ++ nftnl_xfree(c->table); + break; + case NFTNL_CHAIN_USE: + break; + case NFTNL_CHAIN_TYPE: +- xfree(c->type); ++ nftnl_xfree(c->type); + break; + case NFTNL_CHAIN_HOOKNUM: + case NFTNL_CHAIN_PRIO: +@@ -140,7 +140,7 @@ void nftnl_chain_unset(struct nftnl_chain *c, uint16_t attr) + case NFTNL_CHAIN_FAMILY: + break; + case NFTNL_CHAIN_DEV: +- xfree(c->dev); ++ nftnl_xfree(c->dev); + break; + default: + return; +@@ -169,7 +169,7 @@ int nftnl_chain_set_data(struct nftnl_chain *c, uint16_t attr, + switch(attr) { + case NFTNL_CHAIN_NAME: + if (c->flags & (1 << NFTNL_CHAIN_NAME)) +- xfree(c->name); ++ nftnl_xfree(c->name); + + c->name = strdup(data); + if (!c->name) +@@ -177,7 +177,7 @@ int nftnl_chain_set_data(struct nftnl_chain *c, uint16_t attr, + break; + case NFTNL_CHAIN_TABLE: + if (c->flags & (1 << NFTNL_CHAIN_TABLE)) +- xfree(c->table); ++ nftnl_xfree(c->table); + + c->table = strdup(data); + if (!c->table) +@@ -209,7 +209,7 @@ int nftnl_chain_set_data(struct nftnl_chain *c, uint16_t attr, + break; + case NFTNL_CHAIN_TYPE: + if (c->flags & (1 << NFTNL_CHAIN_TYPE)) +- xfree(c->type); ++ nftnl_xfree(c->type); + + c->type = strdup(data); + if (!c->type) +@@ -217,7 +217,7 @@ int nftnl_chain_set_data(struct nftnl_chain *c, uint16_t attr, + break; + case NFTNL_CHAIN_DEV: + if (c->flags & (1 << NFTNL_CHAIN_DEV)) +- xfree(c->dev); ++ nftnl_xfree(c->dev); + + c->dev = strdup(data); + if (!c->dev) +@@ -541,7 +541,7 @@ int nftnl_chain_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_chain *c) + + if (tb[NFTA_CHAIN_NAME]) { + if (c->flags & (1 << NFTNL_CHAIN_NAME)) +- xfree(c->name); ++ nftnl_xfree(c->name); + c->name = strdup(mnl_attr_get_str(tb[NFTA_CHAIN_NAME])); + if (!c->name) + return -1; +@@ -549,7 +549,7 @@ int nftnl_chain_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_chain *c) + } + if (tb[NFTA_CHAIN_TABLE]) { + if (c->flags & (1 << NFTNL_CHAIN_TABLE)) +- xfree(c->table); ++ nftnl_xfree(c->table); + c->table = strdup(mnl_attr_get_str(tb[NFTA_CHAIN_TABLE])); + if (!c->table) + return -1; +@@ -579,7 +579,7 @@ int nftnl_chain_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_chain *c) + } + if (tb[NFTA_CHAIN_TYPE]) { + if (c->flags & (1 << NFTNL_CHAIN_TYPE)) +- xfree(c->type); ++ nftnl_xfree(c->type); + c->type = strdup(mnl_attr_get_str(tb[NFTA_CHAIN_TYPE])); + if (!c->type) + return -1; +@@ -902,7 +902,7 @@ void nftnl_chain_list_free(struct nftnl_chain_list *list) + list_del(&r->head); + nftnl_chain_free(r); + } +- xfree(list); ++ nftnl_xfree(list); + } + + EXPORT_SYMBOL(nftnl_chain_list_is_empty); +@@ -988,5 +988,5 @@ struct nftnl_chain *nftnl_chain_list_iter_next(struct nftnl_chain_list_iter *ite + EXPORT_SYMBOL(nftnl_chain_list_iter_destroy); + void nftnl_chain_list_iter_destroy(struct nftnl_chain_list_iter *iter) + { +- xfree(iter); ++ nftnl_xfree(iter); + } +diff --git a/src/common.c b/src/common.c +index 561c95439114..d0124134ea29 100644 +--- a/src/common.c ++++ b/src/common.c +@@ -68,7 +68,7 @@ struct nftnl_parse_err *nftnl_parse_err_alloc(void) + EXPORT_SYMBOL(nftnl_parse_err_free); + void nftnl_parse_err_free(struct nftnl_parse_err *err) + { +- xfree(err); ++ nftnl_xfree(err); + } + + EXPORT_SYMBOL(nftnl_parse_perror); +diff --git a/src/expr.c b/src/expr.c +index 62565e046996..97f16275f44f 100644 +--- a/src/expr.c ++++ b/src/expr.c +@@ -51,7 +51,7 @@ void nftnl_expr_free(const struct nftnl_expr *expr) + if (expr->ops->free) + expr->ops->free(expr); + +- xfree(expr); ++ nftnl_xfree(expr); + } + + EXPORT_SYMBOL(nftnl_expr_is_set); +@@ -270,7 +270,7 @@ struct nftnl_expr *nftnl_expr_parse(struct nlattr *attr) + return expr; + + err2: +- xfree(expr); ++ nftnl_xfree(expr); + err1: + return NULL; + } +diff --git a/src/expr/data_reg.c b/src/expr/data_reg.c +index 1b28b291617b..8c7abdb91d21 100644 +--- a/src/expr/data_reg.c ++++ b/src/expr/data_reg.c +@@ -379,7 +379,7 @@ void nftnl_free_verdict(const union nftnl_data_reg *data) + switch(data->verdict) { + case NFT_JUMP: + case NFT_GOTO: +- xfree(data->chain); ++ nftnl_xfree(data->chain); + break; + default: + break; +diff --git a/src/expr/dynset.c b/src/expr/dynset.c +index 160d0e15c151..614124d841c7 100644 +--- a/src/expr/dynset.c ++++ b/src/expr/dynset.c +@@ -330,7 +330,7 @@ static void nftnl_expr_dynset_free(const struct nftnl_expr *e) + { + struct nftnl_expr_dynset *dynset = nftnl_expr_data(e); + +- xfree(dynset->set_name); ++ nftnl_xfree(dynset->set_name); + } + + static bool nftnl_expr_dynset_cmp(const struct nftnl_expr *e1, +diff --git a/src/expr/immediate.c b/src/expr/immediate.c +index b0570bd539a4..6a0732c38ebd 100644 +--- a/src/expr/immediate.c ++++ b/src/expr/immediate.c +@@ -44,7 +44,7 @@ nftnl_expr_immediate_set(struct nftnl_expr *e, uint16_t type, + break; + case NFTNL_EXPR_IMM_CHAIN: + if (e->flags & (1 << NFTNL_EXPR_IMM_CHAIN)) +- xfree(imm->data.chain); ++ nftnl_xfree(imm->data.chain); + + imm->data.chain = strdup(data); + if (!imm->data.chain) +diff --git a/src/expr/log.c b/src/expr/log.c +index 86d965136cd4..0624a7712237 100644 +--- a/src/expr/log.c ++++ b/src/expr/log.c +@@ -39,7 +39,7 @@ static int nftnl_expr_log_set(struct nftnl_expr *e, uint16_t type, + switch(type) { + case NFTNL_EXPR_LOG_PREFIX: + if (log->flags & (1 << NFTNL_EXPR_LOG_PREFIX)) +- xfree(log->prefix); ++ nftnl_xfree(log->prefix); + + log->prefix = strdup(data); + if (!log->prefix) +@@ -155,7 +155,7 @@ nftnl_expr_log_parse(struct nftnl_expr *e, struct nlattr *attr) + + if (tb[NFTA_LOG_PREFIX]) { + if (log->prefix) +- xfree(log->prefix); ++ nftnl_xfree(log->prefix); + + log->prefix = strdup(mnl_attr_get_str(tb[NFTA_LOG_PREFIX])); + if (!log->prefix) +@@ -317,7 +317,7 @@ static void nftnl_expr_log_free(const struct nftnl_expr *e) + { + struct nftnl_expr_log *log = nftnl_expr_data(e); + +- xfree(log->prefix); ++ nftnl_xfree(log->prefix); + } + + static bool nftnl_expr_log_cmp(const struct nftnl_expr *e1, +diff --git a/src/expr/lookup.c b/src/expr/lookup.c +index 5fcb81f3a7a2..45f5dfefd33f 100644 +--- a/src/expr/lookup.c ++++ b/src/expr/lookup.c +@@ -258,7 +258,7 @@ static void nftnl_expr_lookup_free(const struct nftnl_expr *e) + { + struct nftnl_expr_lookup *lookup = nftnl_expr_data(e); + +- xfree(lookup->set_name); ++ nftnl_xfree(lookup->set_name); + } + + static bool nftnl_expr_lookup_cmp(const struct nftnl_expr *e1, +diff --git a/src/expr/match.c b/src/expr/match.c +index dd09e1e85192..09e35c528aca 100644 +--- a/src/expr/match.c ++++ b/src/expr/match.c +@@ -50,7 +50,7 @@ nftnl_expr_match_set(struct nftnl_expr *e, uint16_t type, + break; + case NFTNL_EXPR_MT_INFO: + if (e->flags & (1 << NFTNL_EXPR_MT_INFO)) +- xfree(mt->data); ++ nftnl_xfree(mt->data); + + mt->data = data; + mt->data_len = data_len; +@@ -147,7 +147,7 @@ static int nftnl_expr_match_parse(struct nftnl_expr *e, struct nlattr *attr) + void *match_data; + + if (e->flags & (1 << NFTNL_EXPR_MT_INFO)) +- xfree(match->data); ++ nftnl_xfree(match->data); + + match_data = calloc(1, len); + if (match_data == NULL) +@@ -217,7 +217,7 @@ static void nftnl_expr_match_free(const struct nftnl_expr *e) + { + struct nftnl_expr_match *match = nftnl_expr_data(e); + +- xfree(match->data); ++ nftnl_xfree(match->data); + } + + static bool nftnl_expr_match_cmp(const struct nftnl_expr *e1, +diff --git a/src/expr/target.c b/src/expr/target.c +index ed4bf7df6328..5e28925debeb 100644 +--- a/src/expr/target.c ++++ b/src/expr/target.c +@@ -50,7 +50,7 @@ nftnl_expr_target_set(struct nftnl_expr *e, uint16_t type, + break; + case NFTNL_EXPR_TG_INFO: + if (e->flags & (1 << NFTNL_EXPR_TG_INFO)) +- xfree(tg->data); ++ nftnl_xfree(tg->data); + + tg->data = data; + tg->data_len = data_len; +@@ -147,7 +147,7 @@ static int nftnl_expr_target_parse(struct nftnl_expr *e, struct nlattr *attr) + void *target_data; + + if (target->data) +- xfree(target->data); ++ nftnl_xfree(target->data); + + target_data = calloc(1, len); + if (target_data == NULL) +@@ -217,7 +217,7 @@ static void nftnl_expr_target_free(const struct nftnl_expr *e) + { + struct nftnl_expr_target *target = nftnl_expr_data(e); + +- xfree(target->data); ++ nftnl_xfree(target->data); + } + + static bool nftnl_expr_target_cmp(const struct nftnl_expr *e1, +diff --git a/src/gen.c b/src/gen.c +index f92180c7baf6..4fe078d3832c 100644 +--- a/src/gen.c ++++ b/src/gen.c +@@ -38,7 +38,7 @@ struct nftnl_gen *nftnl_gen_alloc(void) + EXPORT_SYMBOL(nftnl_gen_free); + void nftnl_gen_free(const struct nftnl_gen *gen) + { +- xfree(gen); ++ nftnl_xfree(gen); + } + + EXPORT_SYMBOL(nftnl_gen_is_set); +diff --git a/src/object.c b/src/object.c +index 30000f748da4..1b5965d7abdc 100644 +--- a/src/object.c ++++ b/src/object.c +@@ -50,11 +50,11 @@ EXPORT_SYMBOL(nftnl_obj_free); + void nftnl_obj_free(const struct nftnl_obj *obj) + { + if (obj->flags & (1 << NFTNL_OBJ_TABLE)) +- xfree(obj->table); ++ nftnl_xfree(obj->table); + if (obj->flags & (1 << NFTNL_OBJ_NAME)) +- xfree(obj->name); ++ nftnl_xfree(obj->name); + +- xfree(obj); ++ nftnl_xfree(obj); + } + + EXPORT_SYMBOL(nftnl_obj_is_set); +@@ -77,11 +77,11 @@ void nftnl_obj_set_data(struct nftnl_obj *obj, uint16_t attr, + + switch (attr) { + case NFTNL_OBJ_TABLE: +- xfree(obj->table); ++ nftnl_xfree(obj->table); + obj->table = strdup(data); + break; + case NFTNL_OBJ_NAME: +- xfree(obj->name); ++ nftnl_xfree(obj->name); + obj->name = strdup(data); + break; + case NFTNL_OBJ_TYPE: +@@ -523,7 +523,7 @@ void nftnl_obj_list_free(struct nftnl_obj_list *list) + list_del(&r->head); + nftnl_obj_free(r); + } +- xfree(list); ++ nftnl_xfree(list); + } + + EXPORT_SYMBOL(nftnl_obj_list_is_empty); +@@ -610,5 +610,5 @@ struct nftnl_obj *nftnl_obj_list_iter_next(struct nftnl_obj_list_iter *iter) + EXPORT_SYMBOL(nftnl_obj_list_iter_destroy); + void nftnl_obj_list_iter_destroy(struct nftnl_obj_list_iter *iter) + { +- xfree(iter); ++ nftnl_xfree(iter); + } +diff --git a/src/rule.c b/src/rule.c +index e4cba1f7a352..911f327a6f9f 100644 +--- a/src/rule.c ++++ b/src/rule.c +@@ -75,13 +75,13 @@ void nftnl_rule_free(const struct nftnl_rule *r) + nftnl_expr_free(e); + + if (r->flags & (1 << (NFTNL_RULE_TABLE))) +- xfree(r->table); ++ nftnl_xfree(r->table); + if (r->flags & (1 << (NFTNL_RULE_CHAIN))) +- xfree(r->chain); ++ nftnl_xfree(r->chain); + if (r->flags & (1 << (NFTNL_RULE_USERDATA))) +- xfree(r->user.data); ++ nftnl_xfree(r->user.data); + +- xfree(r); ++ nftnl_xfree(r); + } + + EXPORT_SYMBOL(nftnl_rule_is_set); +@@ -98,10 +98,10 @@ void nftnl_rule_unset(struct nftnl_rule *r, uint16_t attr) + + switch (attr) { + case NFTNL_RULE_TABLE: +- xfree(r->table); ++ nftnl_xfree(r->table); + break; + case NFTNL_RULE_CHAIN: +- xfree(r->chain); ++ nftnl_xfree(r->chain); + break; + case NFTNL_RULE_HANDLE: + case NFTNL_RULE_COMPAT_PROTO: +@@ -111,7 +111,7 @@ void nftnl_rule_unset(struct nftnl_rule *r, uint16_t attr) + case NFTNL_RULE_ID: + break; + case NFTNL_RULE_USERDATA: +- xfree(r->user.data); ++ nftnl_xfree(r->user.data); + break; + } + +@@ -137,7 +137,7 @@ int nftnl_rule_set_data(struct nftnl_rule *r, uint16_t attr, + switch(attr) { + case NFTNL_RULE_TABLE: + if (r->flags & (1 << NFTNL_RULE_TABLE)) +- xfree(r->table); ++ nftnl_xfree(r->table); + + r->table = strdup(data); + if (!r->table) +@@ -145,7 +145,7 @@ int nftnl_rule_set_data(struct nftnl_rule *r, uint16_t attr, + break; + case NFTNL_RULE_CHAIN: + if (r->flags & (1 << NFTNL_RULE_CHAIN)) +- xfree(r->chain); ++ nftnl_xfree(r->chain); + + r->chain = strdup(data); + if (!r->chain) +@@ -168,7 +168,7 @@ int nftnl_rule_set_data(struct nftnl_rule *r, uint16_t attr, + break; + case NFTNL_RULE_USERDATA: + if (r->flags & (1 << NFTNL_RULE_USERDATA)) +- xfree(r->user.data); ++ nftnl_xfree(r->user.data); + + r->user.data = malloc(data_len); + if (!r->user.data) +@@ -453,7 +453,7 @@ int nftnl_rule_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_rule *r) + + if (tb[NFTA_RULE_TABLE]) { + if (r->flags & (1 << NFTNL_RULE_TABLE)) +- xfree(r->table); ++ nftnl_xfree(r->table); + r->table = strdup(mnl_attr_get_str(tb[NFTA_RULE_TABLE])); + if (!r->table) + return -1; +@@ -461,7 +461,7 @@ int nftnl_rule_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_rule *r) + } + if (tb[NFTA_RULE_CHAIN]) { + if (r->flags & (1 << NFTNL_RULE_CHAIN)) +- xfree(r->chain); ++ nftnl_xfree(r->chain); + r->chain = strdup(mnl_attr_get_str(tb[NFTA_RULE_CHAIN])); + if (!r->chain) + return -1; +@@ -490,7 +490,7 @@ int nftnl_rule_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_rule *r) + mnl_attr_get_payload(tb[NFTA_RULE_USERDATA]); + + if (r->flags & (1 << NFTNL_RULE_USERDATA)) +- xfree(r->user.data); ++ nftnl_xfree(r->user.data); + + r->user.len = mnl_attr_get_payload_len(tb[NFTA_RULE_USERDATA]); + +@@ -910,7 +910,7 @@ struct nftnl_expr *nftnl_expr_iter_next(struct nftnl_expr_iter *iter) + EXPORT_SYMBOL(nftnl_expr_iter_destroy); + void nftnl_expr_iter_destroy(struct nftnl_expr_iter *iter) + { +- xfree(iter); ++ nftnl_xfree(iter); + } + + EXPORT_SYMBOL(nftnl_rule_cmp); +@@ -971,7 +971,7 @@ void nftnl_rule_list_free(struct nftnl_rule_list *list) + list_del(&r->head); + nftnl_rule_free(r); + } +- xfree(list); ++ nftnl_xfree(list); + } + + EXPORT_SYMBOL(nftnl_rule_list_is_empty); +@@ -1063,5 +1063,5 @@ struct nftnl_rule *nftnl_rule_list_iter_next(struct nftnl_rule_list_iter *iter) + EXPORT_SYMBOL(nftnl_rule_list_iter_destroy); + void nftnl_rule_list_iter_destroy(const struct nftnl_rule_list_iter *iter) + { +- xfree(iter); ++ nftnl_xfree(iter); + } +diff --git a/src/ruleset.c b/src/ruleset.c +index eb49fde582c2..1639cae68c61 100644 +--- a/src/ruleset.c ++++ b/src/ruleset.c +@@ -72,7 +72,7 @@ void nftnl_ruleset_free(const struct nftnl_ruleset *r) + nftnl_set_list_free(r->set_list); + if (r->flags & (1 << NFTNL_RULESET_RULELIST)) + nftnl_rule_list_free(r->rule_list); +- xfree(r); ++ nftnl_xfree(r); + } + + EXPORT_SYMBOL(nftnl_ruleset_is_set); +diff --git a/src/set.c b/src/set.c +index ac24eae6bb16..2b758c4ec89a 100644 +--- a/src/set.c ++++ b/src/set.c +@@ -46,17 +46,17 @@ void nftnl_set_free(const struct nftnl_set *s) + struct nftnl_set_elem *elem, *tmp; + + if (s->flags & (1 << NFTNL_SET_TABLE)) +- xfree(s->table); ++ nftnl_xfree(s->table); + if (s->flags & (1 << NFTNL_SET_NAME)) +- xfree(s->name); ++ nftnl_xfree(s->name); + if (s->flags & (1 << NFTNL_SET_USERDATA)) +- xfree(s->user.data); ++ nftnl_xfree(s->user.data); + + list_for_each_entry_safe(elem, tmp, &s->element_list, head) { + list_del(&elem->head); + nftnl_set_elem_free(elem); + } +- xfree(s); ++ nftnl_xfree(s); + } + + EXPORT_SYMBOL(nftnl_set_is_set); +@@ -73,10 +73,10 @@ void nftnl_set_unset(struct nftnl_set *s, uint16_t attr) + + switch (attr) { + case NFTNL_SET_TABLE: +- xfree(s->table); ++ nftnl_xfree(s->table); + break; + case NFTNL_SET_NAME: +- xfree(s->name); ++ nftnl_xfree(s->name); + break; + case NFTNL_SET_FLAGS: + case NFTNL_SET_KEY_TYPE: +@@ -92,7 +92,7 @@ void nftnl_set_unset(struct nftnl_set *s, uint16_t attr) + case NFTNL_SET_GC_INTERVAL: + break; + case NFTNL_SET_USERDATA: +- xfree(s->user.data); ++ nftnl_xfree(s->user.data); + break; + default: + return; +@@ -125,7 +125,7 @@ int nftnl_set_set_data(struct nftnl_set *s, uint16_t attr, const void *data, + switch(attr) { + case NFTNL_SET_TABLE: + if (s->flags & (1 << NFTNL_SET_TABLE)) +- xfree(s->table); ++ nftnl_xfree(s->table); + + s->table = strdup(data); + if (!s->table) +@@ -133,7 +133,7 @@ int nftnl_set_set_data(struct nftnl_set *s, uint16_t attr, const void *data, + break; + case NFTNL_SET_NAME: + if (s->flags & (1 << NFTNL_SET_NAME)) +- xfree(s->name); ++ nftnl_xfree(s->name); + + s->name = strdup(data); + if (!s->name) +@@ -177,7 +177,7 @@ int nftnl_set_set_data(struct nftnl_set *s, uint16_t attr, const void *data, + break; + case NFTNL_SET_USERDATA: + if (s->flags & (1 << NFTNL_SET_USERDATA)) +- xfree(s->user.data); ++ nftnl_xfree(s->user.data); + + s->user.data = malloc(data_len); + if (!s->user.data) +@@ -478,7 +478,7 @@ int nftnl_set_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_set *s) + + if (tb[NFTA_SET_TABLE]) { + if (s->flags & (1 << NFTNL_SET_TABLE)) +- xfree(s->table); ++ nftnl_xfree(s->table); + s->table = strdup(mnl_attr_get_str(tb[NFTA_SET_TABLE])); + if (!s->table) + return -1; +@@ -486,7 +486,7 @@ int nftnl_set_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_set *s) + } + if (tb[NFTA_SET_NAME]) { + if (s->flags & (1 << NFTNL_SET_NAME)) +- xfree(s->name); ++ nftnl_xfree(s->name); + s->name = strdup(mnl_attr_get_str(tb[NFTA_SET_NAME])); + if (!s->name) + return -1; +@@ -982,7 +982,7 @@ void nftnl_set_list_free(struct nftnl_set_list *list) + list_del(&s->head); + nftnl_set_free(s); + } +- xfree(list); ++ nftnl_xfree(list); + } + + EXPORT_SYMBOL(nftnl_set_list_is_empty); +@@ -1074,7 +1074,7 @@ struct nftnl_set *nftnl_set_list_iter_next(struct nftnl_set_list_iter *iter) + EXPORT_SYMBOL(nftnl_set_list_iter_destroy); + void nftnl_set_list_iter_destroy(const struct nftnl_set_list_iter *iter) + { +- xfree(iter); ++ nftnl_xfree(iter); + } + + static struct nftnl_set *nftnl_set_lookup(const char *this_set_name, +diff --git a/src/set_elem.c b/src/set_elem.c +index e02a38791c9a..100ccda699c6 100644 +--- a/src/set_elem.c ++++ b/src/set_elem.c +@@ -43,18 +43,18 @@ EXPORT_SYMBOL(nftnl_set_elem_free); + void nftnl_set_elem_free(struct nftnl_set_elem *s) + { + if (s->flags & (1 << NFTNL_SET_ELEM_CHAIN)) +- xfree(s->data.chain); ++ nftnl_xfree(s->data.chain); + + if (s->flags & (1 << NFTNL_SET_ELEM_EXPR)) + nftnl_expr_free(s->expr); + + if (s->flags & (1 << NFTNL_SET_ELEM_USERDATA)) +- xfree(s->user.data); ++ nftnl_xfree(s->user.data); + + if (s->flags & (1 << NFTNL_SET_ELEM_OBJREF)) +- xfree(s->objref); ++ nftnl_xfree(s->objref); + +- xfree(s); ++ nftnl_xfree(s); + } + + EXPORT_SYMBOL(nftnl_set_elem_is_set); +@@ -71,7 +71,7 @@ void nftnl_set_elem_unset(struct nftnl_set_elem *s, uint16_t attr) + + switch (attr) { + case NFTNL_SET_ELEM_CHAIN: +- xfree(s->data.chain); ++ nftnl_xfree(s->data.chain); + break; + case NFTNL_SET_ELEM_FLAGS: + case NFTNL_SET_ELEM_KEY: /* NFTA_SET_ELEM_KEY */ +@@ -81,13 +81,13 @@ void nftnl_set_elem_unset(struct nftnl_set_elem *s, uint16_t attr) + case NFTNL_SET_ELEM_EXPIRATION: /* NFTA_SET_ELEM_EXPIRATION */ + break; + case NFTNL_SET_ELEM_USERDATA: /* NFTA_SET_ELEM_USERDATA */ +- xfree(s->user.data); ++ nftnl_xfree(s->user.data); + break; + case NFTNL_SET_ELEM_EXPR: + nftnl_expr_free(s->expr); + break; + case NFTNL_SET_ELEM_OBJREF: +- xfree(s->objref); ++ nftnl_xfree(s->objref); + break; + default: + return; +@@ -113,7 +113,7 @@ int nftnl_set_elem_set(struct nftnl_set_elem *s, uint16_t attr, + break; + case NFTNL_SET_ELEM_CHAIN: /* NFTA_SET_ELEM_DATA */ + if (s->flags & (1 << NFTNL_SET_ELEM_CHAIN)) +- xfree(s->data.chain); ++ nftnl_xfree(s->data.chain); + + s->data.chain = strdup(data); + if (!s->data.chain) +@@ -128,7 +128,7 @@ int nftnl_set_elem_set(struct nftnl_set_elem *s, uint16_t attr, + break; + case NFTNL_SET_ELEM_USERDATA: /* NFTA_SET_ELEM_USERDATA */ + if (s->flags & (1 << NFTNL_SET_ELEM_USERDATA)) +- xfree(s->user.data); ++ nftnl_xfree(s->user.data); + + s->user.data = malloc(data_len); + if (!s->user.data) +@@ -138,7 +138,7 @@ int nftnl_set_elem_set(struct nftnl_set_elem *s, uint16_t attr, + break; + case NFTNL_SET_ELEM_OBJREF: + if (s->flags & (1 << NFTNL_SET_ELEM_OBJREF)) +- xfree(s->objref); ++ nftnl_xfree(s->objref); + + s->objref = strdup(data); + if (!s->objref) +@@ -431,7 +431,7 @@ static int nftnl_set_elems_parse2(struct nftnl_set *s, const struct nlattr *nest + mnl_attr_get_payload(tb[NFTA_SET_ELEM_USERDATA]); + + if (e->flags & (1 << NFTNL_RULE_USERDATA)) +- xfree(e->user.data); ++ nftnl_xfree(e->user.data); + + e->user.len = mnl_attr_get_payload_len(tb[NFTA_SET_ELEM_USERDATA]); + e->user.data = malloc(e->user.len); +@@ -516,7 +516,7 @@ int nftnl_set_elems_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_set *s) + + if (tb[NFTA_SET_ELEM_LIST_TABLE]) { + if (s->flags & (1 << NFTNL_SET_TABLE)) +- xfree(s->table); ++ nftnl_xfree(s->table); + s->table = + strdup(mnl_attr_get_str(tb[NFTA_SET_ELEM_LIST_TABLE])); + if (!s->table) +@@ -525,7 +525,7 @@ int nftnl_set_elems_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_set *s) + } + if (tb[NFTA_SET_ELEM_LIST_SET]) { + if (s->flags & (1 << NFTNL_SET_NAME)) +- xfree(s->name); ++ nftnl_xfree(s->name); + s->name = + strdup(mnl_attr_get_str(tb[NFTA_SET_ELEM_LIST_SET])); + if (!s->name) +@@ -816,7 +816,7 @@ struct nftnl_set_elem *nftnl_set_elems_iter_next(struct nftnl_set_elems_iter *it + EXPORT_SYMBOL(nftnl_set_elems_iter_destroy); + void nftnl_set_elems_iter_destroy(struct nftnl_set_elems_iter *iter) + { +- xfree(iter); ++ nftnl_xfree(iter); + } + + static bool nftnl_attr_nest_overflow(struct nlmsghdr *nlh, +diff --git a/src/table.c b/src/table.c +index 7f97ca4e5807..7ac57c33021b 100644 +--- a/src/table.c ++++ b/src/table.c +@@ -46,9 +46,9 @@ EXPORT_SYMBOL(nftnl_table_free); + void nftnl_table_free(const struct nftnl_table *t) + { + if (t->flags & (1 << NFTNL_TABLE_NAME)) +- xfree(t->name); ++ nftnl_xfree(t->name); + +- xfree(t); ++ nftnl_xfree(t); + } + + EXPORT_SYMBOL(nftnl_table_is_set); +@@ -65,7 +65,7 @@ void nftnl_table_unset(struct nftnl_table *t, uint16_t attr) + + switch (attr) { + case NFTNL_TABLE_NAME: +- xfree(t->name); ++ nftnl_xfree(t->name); + break; + case NFTNL_TABLE_FLAGS: + case NFTNL_TABLE_FAMILY: +@@ -91,7 +91,7 @@ int nftnl_table_set_data(struct nftnl_table *t, uint16_t attr, + switch (attr) { + case NFTNL_TABLE_NAME: + if (t->flags & (1 << NFTNL_TABLE_NAME)) +- xfree(t->name); ++ nftnl_xfree(t->name); + + t->name = strdup(data); + if (!t->name) +@@ -230,7 +230,7 @@ int nftnl_table_nlmsg_parse(const struct nlmsghdr *nlh, struct nftnl_table *t) + + if (tb[NFTA_TABLE_NAME]) { + if (t->flags & (1 << NFTNL_TABLE_NAME)) +- xfree(t->name); ++ nftnl_xfree(t->name); + t->name = strdup(mnl_attr_get_str(tb[NFTA_TABLE_NAME])); + if (!t->name) + return -1; +@@ -452,7 +452,7 @@ void nftnl_table_list_free(struct nftnl_table_list *list) + list_del(&r->head); + nftnl_table_free(r); + } +- xfree(list); ++ nftnl_xfree(list); + } + + EXPORT_SYMBOL(nftnl_table_list_is_empty); +@@ -538,5 +538,5 @@ struct nftnl_table *nftnl_table_list_iter_next(struct nftnl_table_list_iter *ite + EXPORT_SYMBOL(nftnl_table_list_iter_destroy); + void nftnl_table_list_iter_destroy(const struct nftnl_table_list_iter *iter) + { +- xfree(iter); ++ nftnl_xfree(iter); + } +diff --git a/src/trace.c b/src/trace.c +index f4264377508e..8a18391d83d1 100644 +--- a/src/trace.c ++++ b/src/trace.c +@@ -61,13 +61,13 @@ struct nftnl_trace *nftnl_trace_alloc(void) + EXPORT_SYMBOL(nftnl_trace_free); + void nftnl_trace_free(const struct nftnl_trace *t) + { +- xfree(t->chain); +- xfree(t->table); +- xfree(t->jump_target); +- xfree(t->ll.data); +- xfree(t->nh.data); +- xfree(t->th.data); +- xfree(t); ++ nftnl_xfree(t->chain); ++ nftnl_xfree(t->table); ++ nftnl_xfree(t->jump_target); ++ nftnl_xfree(t->ll.data); ++ nftnl_xfree(t->nh.data); ++ nftnl_xfree(t->th.data); ++ nftnl_xfree(t); + } + + EXPORT_SYMBOL(nftnl_trace_is_set); +diff --git a/src/udata.c b/src/udata.c +index 6bd965161c43..049819304ef5 100644 +--- a/src/udata.c ++++ b/src/udata.c +@@ -33,7 +33,7 @@ struct nftnl_udata_buf *nftnl_udata_buf_alloc(uint32_t data_size) + EXPORT_SYMBOL(nftnl_udata_buf_free); + void nftnl_udata_buf_free(const struct nftnl_udata_buf *buf) + { +- xfree(buf); ++ nftnl_xfree(buf); + } + + EXPORT_SYMBOL(nftnl_udata_buf_len); +diff --git a/src/utils.c b/src/utils.c +index 3e449609395e..08f668f56a95 100644 +--- a/src/utils.c ++++ b/src/utils.c +@@ -264,7 +264,7 @@ int nftnl_fprintf(FILE *fp, const void *obj, uint32_t cmd, uint32_t type, + + out: + if (buf != _buf) +- xfree(buf); ++ nftnl_xfree(buf); + + return ret; + } +-- +2.15.1 + diff --git a/buildroot/package/libnftnl/0002-Add-Libs.private-field-to-libnftnl.pc.patch b/buildroot/package/libnftnl/0002-Add-Libs.private-field-to-libnftnl.pc.patch new file mode 100644 index 0000000..ce3e950 --- /dev/null +++ b/buildroot/package/libnftnl/0002-Add-Libs.private-field-to-libnftnl.pc.patch @@ -0,0 +1,49 @@ +From d89fca062ba966332b573673fdd5c4cf01c3e2f5 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 29 Dec 2014 15:32:08 +0100 +Subject: [PATCH 2/2] Add Libs.private field to libnftnl.pc + +Static linking userspace programs such as nftables against libnftnl +currently doesn't work out of the box, because libnftnl is linked +against libmnl, but this isn't expressed in libnftnl pkg-config +file: + + CCLD nft +[...]/bfin-buildroot-uclinux-uclibc/sysroot/usr/lib/libnftnl.a(table.o): In function `_nft_table_nlmsg_parse': +table.c:(.text+0x480): undefined reference to `_mnl_attr_parse' +table.c:(.text+0x492): undefined reference to `_mnl_attr_get_str' +table.c:(.text+0x4a8): undefined reference to `_mnl_attr_get_u32' +table.c:(.text+0x4ca): undefined reference to `_mnl_attr_get_u32' +[...] + +The Libs.private field is specifically designed for such usage: + +From pkg-config documentation: + + Libs.private: + + This line should list any private libraries in use. Private + libraries are libraries which are not exposed through your + library, but are needed in the case of static linking. + +Therefore, this patch adds a reference to libmnl in the Libs.private +field of libnftnl pkg-config file. + +Signed-off-by: Thomas Petazzoni +--- + libnftnl.pc.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libnftnl.pc.in b/libnftnl.pc.in +index fd5cc6a..7fef921 100644 +--- a/libnftnl.pc.in ++++ b/libnftnl.pc.in +@@ -12,4 +12,5 @@ Version: @VERSION@ + Requires: + Conflicts: + Libs: -L${libdir} -lnftnl ++Libs.private: @LIBMNL_LIBS@ + Cflags: -I${includedir} +-- +2.1.0 + diff --git a/buildroot/package/libnftnl/Config.in b/buildroot/package/libnftnl/Config.in new file mode 100644 index 0000000..d4c9a1b --- /dev/null +++ b/buildroot/package/libnftnl/Config.in @@ -0,0 +1,35 @@ +comment "libnftnl needs a toolchain w/ headers >= 3.12" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + +config BR2_PACKAGE_LIBNFTNL + bool "libnftnl" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_PACKAGE_LIBMNL + help + libnftnl is a userspace library providing a low-level + netlink programming interface (API) to the in-kernel + nf_tables subsystem. The library libnftnl has been + previously known as libnftables. This library is + currently used by nftables. + + http://netfilter.org/projects/libnftnl/index.html + +if BR2_PACKAGE_LIBNFTNL + +config BR2_PACKAGE_LIBNFTNL_JSON + bool "enable JSON support" + select BR2_PACKAGE_JANSSON + help + Enable JSON parsing support + +config BR2_PACKAGE_LIBNFTNL_XML + bool "enable XML support" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_MXML + help + Enable XML parsing support + +comment "libnftnl XML parsing support needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +endif diff --git a/buildroot/package/libnftnl/libnftnl.hash b/buildroot/package/libnftnl/libnftnl.hash new file mode 100644 index 0000000..c798dd2 --- /dev/null +++ b/buildroot/package/libnftnl/libnftnl.hash @@ -0,0 +1,6 @@ +# From http://www.netfilter.org/projects/libnftnl/downloads.html +sha1 90b70f52a26f88ab1106671e797faac21265fa6a libnftnl-1.0.9.tar.bz2 +# Locally calculated after checking pgp signature +# http://www.netfilter.org/projects/libnftnl/files/libnftnl-1.0.9.tar.bz2.sig +sha256 fec1d824aee301e59a11aeaae2a2d429cb99ead81e6bafab791a4dd6569b3635 libnftnl-1.0.9.tar.bz2 +sha256 98193898c663001eff2fdcfb676e210c13042bc1a05e8d570c363efa396f8e24 COPYING diff --git a/buildroot/package/libnftnl/libnftnl.mk b/buildroot/package/libnftnl/libnftnl.mk new file mode 100644 index 0000000..8c8b3f8 --- /dev/null +++ b/buildroot/package/libnftnl/libnftnl.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libnftnl +# +################################################################################ + +LIBNFTNL_VERSION = 1.0.9 +LIBNFTNL_SITE = http://netfilter.org/projects/libnftnl/files +LIBNFTNL_SOURCE = libnftnl-$(LIBNFTNL_VERSION).tar.bz2 +LIBNFTNL_LICENSE = GPL-2.0+ +LIBNFTNL_LICENSE_FILES = COPYING +LIBNFTNL_INSTALL_STAGING = YES +LIBNFTNL_DEPENDENCIES = host-pkgconf libmnl + +ifeq ($(BR2_PACKAGE_LIBNFTNL_JSON),y) +LIBNFTNL_CONF_OPTS += --with-json-parsing +LIBNFTNL_DEPENDENCIES += jansson +else +LIBNFTNL_CONF_OPTS += --without-json-parsing +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnice/0001-configure-Fix-configure-failure-when-building-without-.patch b/buildroot/package/libnice/0001-configure-Fix-configure-failure-when-building-without-.patch new file mode 100644 index 0000000..f6b2eb4 --- /dev/null +++ b/buildroot/package/libnice/0001-configure-Fix-configure-failure-when-building-without-.patch @@ -0,0 +1,45 @@ +From 81a929ac141aae66b6450e8ce93cb357ed404cda Mon Sep 17 00:00:00 2001 +From: Timo Gurr +Date: Mon, 1 Jun 2015 16:10:16 +0200 +Subject: [PATCH] configure: Fix configure failure when building without + gstreamer support + +Error introduced in 20ea22e0a11a9bdfe4d8125b68083249b694338a, resulting in a +configure/build error when building without gstreamer: + +configure: error: conditional "HAVE_GST_CHECK" was never defined. +Usually this means the macro was only invoked conditionally. + +https://bugs.freedesktop.org/show_bug.cgi?id=90801 +Signed-off-by: Gustavo Zacarias +--- +Patch status: upstream + + configure.ac | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 6031cec..64a571f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -231,9 +231,6 @@ AS_IF([test "$with_gstreamer" != no], [ + [ + have_gst_check=no + ]) +- +- AM_CONDITIONAL(HAVE_GST_CHECK, test "$have_gst_check" = yes) +- + ]) + + AS_IF([test "$with_gstreamer010" != no], [ +@@ -260,6 +257,7 @@ AC_SUBST(gstplugindir) + AC_SUBST(gstplugin010dir) + + AM_CONDITIONAL(WITH_GSTREAMER, test "$with_gstreamer" = yes) ++AM_CONDITIONAL(HAVE_GST_CHECK, test "$have_gst_check" = yes) + AM_CONDITIONAL(WITH_GSTREAMER010, test "$with_gstreamer010" = yes) + + GUPNP_IGD_REQUIRED=0.2.4 +-- +2.10.2 + diff --git a/buildroot/package/libnice/Config.in b/buildroot/package/libnice/Config.in new file mode 100644 index 0000000..c803a31 --- /dev/null +++ b/buildroot/package/libnice/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBNICE + bool "libnice" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBGLIB2 + help + Libnice is an implementation of the IETF's Interactive + Connectivity Establishment (ICE) standard (RFC 5245) and the + Session Traversal Utilities for NAT (STUN) standard (RFC + 5389). + + It provides a GLib-based library, libnice and a Glib-free + library, libstun as well as GStreamer elements. + + http://nice.freedesktop.org/wiki/ + +comment "libnice needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libnice/libnice.hash b/buildroot/package/libnice/libnice.hash new file mode 100644 index 0000000..d08c2d7 --- /dev/null +++ b/buildroot/package/libnice/libnice.hash @@ -0,0 +1,2 @@ +# Locally computed after checking pgp signature +sha256 61112d9f3be933a827c8365f20551563953af6718057928f51f487bfe88419e1 libnice-0.1.13.tar.gz diff --git a/buildroot/package/libnice/libnice.mk b/buildroot/package/libnice/libnice.mk new file mode 100644 index 0000000..6afcb76 --- /dev/null +++ b/buildroot/package/libnice/libnice.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libnice +# +################################################################################ + +LIBNICE_VERSION = 0.1.13 +LIBNICE_SITE = http://nice.freedesktop.org/releases +LIBNICE_LICENSE = MPL-1.1 or LGPL-2.1 +LIBNICE_LICENSE_FILES = COPYING COPYING.MPL COPYING.LGPL +LIBNICE_DEPENDENCIES = libglib2 host-pkgconf +LIBNICE_INSTALL_STAGING = YES +# For 0001-configure-Fix-configure-failure-when-building-without-.patch +LIBNICE_AUTORECONF = YES +LIBNICE_CONF_OPTS = \ + --without-gstreamer \ + --without-gstreamer-0.10 + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnl/0001-build-add-Libs.private-field-in-libnl-pkg-config-fil.patch b/buildroot/package/libnl/0001-build-add-Libs.private-field-in-libnl-pkg-config-fil.patch new file mode 100644 index 0000000..845a593 --- /dev/null +++ b/buildroot/package/libnl/0001-build-add-Libs.private-field-in-libnl-pkg-config-fil.patch @@ -0,0 +1,30 @@ +From db0d59cd06f3ffd350379847c0885e1bfb85af0f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 7 Mar 2015 11:34:42 +0100 +Subject: [PATCH 2/2] build: add Libs.private field in libnl pkg-config file + +In order to support static linking, the libnl pkg-config file should +indicate in its Libs.private field the libraries that libnl-3.0.a +requires. The LIBS variable contains the appropriate list of +libraries: -lm in all cases, and -lpthread when pthread support is +enabled. This allows to statically link applications against libnl +properly. + +Signed-off-by: Thomas Petazzoni +--- + libnl-3.0.pc.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libnl-3.0.pc.in b/libnl-3.0.pc.in +index b87e3dc..ddbc999 100644 +--- a/libnl-3.0.pc.in ++++ b/libnl-3.0.pc.in +@@ -7,4 +7,5 @@ Name: libnl + Description: Convenience library for netlink sockets + Version: @PACKAGE_VERSION@ + Libs: -L${libdir} -lnl-@MAJ_VERSION@ ++Libs.private: @LIBS@ + Cflags: -I${includedir}/libnl@MAJ_VERSION@ +-- +2.1.0 + diff --git a/buildroot/package/libnl/0002-Add-musl-workaround-to-the-libc-compat.h-copy.patch b/buildroot/package/libnl/0002-Add-musl-workaround-to-the-libc-compat.h-copy.patch new file mode 100644 index 0000000..57d1c87 --- /dev/null +++ b/buildroot/package/libnl/0002-Add-musl-workaround-to-the-libc-compat.h-copy.patch @@ -0,0 +1,37 @@ +From be07fdbc9658de19304defa7538f219cd3f21ec0 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Sun, 12 Mar 2017 08:52:20 +0200 +Subject: [PATCH] Add musl workaround to the libc-compat.h copy + +The libc-compat.h kernel header uses glibc specific macros to solve conflicts +with libc provided headers. This patch makes libc-compat.h work also for musl +libc. + +Future rebase note: when upstream updates libc-compat.h some additional macro +definitions will be needed. See the Buildroot iproute2 patch +package/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch. + +Signed-off-by: Baruch Siach +--- +Upstream status: libc-compat.h is a local copy of a kernel headers. A proper +musl fix must go to the kernel first. +--- + include/linux-private/linux/libc-compat.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/linux-private/linux/libc-compat.h b/include/linux-private/linux/libc-compat.h +index 9bed5b6ae4d9..e2562a819464 100644 +--- a/include/linux-private/linux/libc-compat.h ++++ b/include/linux-private/linux/libc-compat.h +@@ -49,7 +49,7 @@ + #define _LIBC_COMPAT_H + + /* We have included glibc headers... */ +-#if defined(__GLIBC__) ++#if 1 + + /* Coordinate with glibc netinet/in.h header. */ + #if defined(_NETINET_IN_H) +-- +2.11.0 + diff --git a/buildroot/package/libnl/Config.in b/buildroot/package/libnl/Config.in new file mode 100644 index 0000000..1e29f57 --- /dev/null +++ b/buildroot/package/libnl/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_LIBNL + bool "libnl" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + A library for applications dealing with netlink socket. + + https://github.com/thom311/libnl + +if BR2_PACKAGE_LIBNL + +config BR2_PACKAGE_LIBNL_TOOLS + bool "install tools" + # uses + depends on !BR2_STATIC_LIBS + help + Install binary tools. + +comment "libnl tools needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS +endif + +comment "libnl needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libnl/libnl.hash b/buildroot/package/libnl/libnl.hash new file mode 100644 index 0000000..b9c6260 --- /dev/null +++ b/buildroot/package/libnl/libnl.hash @@ -0,0 +1,4 @@ +# From https://github.com/thom311/libnl/releases/download/libnl3_4_0/libnl-3.4.0.tar.gz.sha256sum +sha256 b7287637ae71c6db6f89e1422c995f0407ff2fe50cecd61a312b6a9b0921f5bf libnl-3.4.0.tar.gz +# Locally calculated +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/libnl/libnl.mk b/buildroot/package/libnl/libnl.mk new file mode 100644 index 0000000..397910c --- /dev/null +++ b/buildroot/package/libnl/libnl.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libnl +# +################################################################################ + +LIBNL_VERSION = 3.4.0 +LIBNL_SITE = https://github.com/thom311/libnl/releases/download/libnl$(subst .,_,$(LIBNL_VERSION)) +LIBNL_LICENSE = LGPL-2.1+ +LIBNL_LICENSE_FILES = COPYING +LIBNL_INSTALL_STAGING = YES +LIBNL_DEPENDENCIES = host-bison host-flex host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBNL_TOOLS),y) +LIBNL_CONF_OPTS += --enable-cli +else +LIBNL_CONF_OPTS += --disable-cli +endif + +ifeq ($(BR2_PACKAGE_CHECK),y) +LIBNL_DEPENDENCIES += check +LIBNL_CONF_OPTS += --enable-unit-tests +else +LIBNL_CONF_OPTS += --disable-unit-tests +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnpth/Config.in b/buildroot/package/libnpth/Config.in new file mode 100644 index 0000000..71f9fcb --- /dev/null +++ b/buildroot/package/libnpth/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBNPTH + bool "libnpth" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + nPth is a library to provide the GNU Pth API and thus a + non-preemptive threads implementation. + + https://www.gnupg.org/related_software/npth/index.html + +comment "libnpth needs a toolchain w/ threads support" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/libnpth/libnpth.hash b/buildroot/package/libnpth/libnpth.hash new file mode 100644 index 0000000..f8cfefa --- /dev/null +++ b/buildroot/package/libnpth/libnpth.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking signature +sha256 294a690c1f537b92ed829d867bee537e46be93fbd60b16c04630fbbfcd9db3c2 npth-1.5.tar.bz2 diff --git a/buildroot/package/libnpth/libnpth.mk b/buildroot/package/libnpth/libnpth.mk new file mode 100644 index 0000000..7b2eb2a --- /dev/null +++ b/buildroot/package/libnpth/libnpth.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libnpth +# +################################################################################ + +LIBNPTH_VERSION = 1.5 +LIBNPTH_SOURCE = npth-$(LIBNPTH_VERSION).tar.bz2 +LIBNPTH_SITE = https://www.gnupg.org/ftp/gcrypt/npth +LIBNPTH_LICENSE = LGPL-2.0+ +LIBNPTH_LICENSE_FILES = COPYING.LIB +LIBNPTH_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnspr/0001-nios2.patch b/buildroot/package/libnspr/0001-nios2.patch new file mode 100644 index 0000000..e10e7e9 --- /dev/null +++ b/buildroot/package/libnspr/0001-nios2.patch @@ -0,0 +1,74 @@ +Add Nios-II support + +[Gustavo: update for nspr 4.10.9] +Signed-off-by: Ezequiel Garcia + +Index: b/nspr/pr/include/md/_linux.cfg +=================================================================== +--- a/nspr/pr/include/md/_linux.cfg ++++ b/nspr/pr/include/md/_linux.cfg +@@ -1017,6 +1017,51 @@ + #define PR_BYTES_PER_WORD_LOG2 2 + #define PR_BYTES_PER_DWORD_LOG2 3 + ++#elif defined(__nios2__) ++ ++#define IS_LITTLE_ENDIAN 1 ++#undef IS_BIG_ENDIAN ++ ++#define PR_BYTES_PER_BYTE 1 ++#define PR_BYTES_PER_SHORT 2 ++#define PR_BYTES_PER_INT 4 ++#define PR_BYTES_PER_INT64 8 ++#define PR_BYTES_PER_LONG 4 ++#define PR_BYTES_PER_FLOAT 4 ++#define PR_BYTES_PER_DOUBLE 8 ++#define PR_BYTES_PER_WORD 4 ++#define PR_BYTES_PER_DWORD 8 ++ ++#define PR_BITS_PER_BYTE 8 ++#define PR_BITS_PER_SHORT 16 ++#define PR_BITS_PER_INT 32 ++#define PR_BITS_PER_INT64 64 ++#define PR_BITS_PER_LONG 32 ++#define PR_BITS_PER_FLOAT 32 ++#define PR_BITS_PER_DOUBLE 64 ++#define PR_BITS_PER_WORD 32 ++ ++#define PR_BITS_PER_BYTE_LOG2 3 ++#define PR_BITS_PER_SHORT_LOG2 4 ++#define PR_BITS_PER_INT_LOG2 5 ++#define PR_BITS_PER_INT64_LOG2 6 ++#define PR_BITS_PER_LONG_LOG2 5 ++#define PR_BITS_PER_FLOAT_LOG2 5 ++#define PR_BITS_PER_DOUBLE_LOG2 6 ++#define PR_BITS_PER_WORD_LOG2 5 ++ ++#define PR_ALIGN_OF_SHORT 2 ++#define PR_ALIGN_OF_INT 4 ++#define PR_ALIGN_OF_LONG 4 ++#define PR_ALIGN_OF_INT64 4 ++#define PR_ALIGN_OF_FLOAT 4 ++#define PR_ALIGN_OF_DOUBLE 4 ++#define PR_ALIGN_OF_POINTER 4 ++#define PR_ALIGN_OF_WORD 4 ++ ++#define PR_BYTES_PER_WORD_LOG2 2 ++#define PR_BYTES_PER_DWORD_LOG2 3 ++ + #else + + #error "Unknown CPU architecture" +Index: b/nspr/pr/include/md/_linux.h +=================================================================== +--- a/nspr/pr/include/md/_linux.h ++++ b/nspr/pr/include/md/_linux.h +@@ -57,6 +57,8 @@ + #define _PR_SI_ARCHITECTURE "m32r" + #elif defined(__or1k__) + #define _PR_SI_ARCHITECTURE "or1k" ++#elif defined(__nios2__) ++#define _PR_SI_ARCHITECTURE "nios2" + #else + #error "Unknown CPU architecture" + #endif diff --git a/buildroot/package/libnspr/0002-microblaze.patch b/buildroot/package/libnspr/0002-microblaze.patch new file mode 100644 index 0000000..7cf1f0d --- /dev/null +++ b/buildroot/package/libnspr/0002-microblaze.patch @@ -0,0 +1,79 @@ +Add Microblaze support + +[Gustavo: update for nspr 4.10.9] +Signed-off-by: Spenser Gilliland + +Index: b/nspr/pr/include/md/_linux.cfg +=================================================================== +--- a/nspr/pr/include/md/_linux.cfg ++++ b/nspr/pr/include/md/_linux.cfg +@@ -1062,6 +1062,56 @@ + #define PR_BYTES_PER_WORD_LOG2 2 + #define PR_BYTES_PER_DWORD_LOG2 3 + ++#elif defined(__microblaze__) ++ ++#if defined(__BIG_ENDIAN__) ++#define IS_BIG_ENDIAN 1 ++#undef IS_LITTLE_ENDIAN ++#else ++#define IS_LITTLE_ENDIAN 1 ++#undef IS_BIG_ENDIAN ++#endif ++ ++#define PR_BYTES_PER_BYTE 1 ++#define PR_BYTES_PER_SHORT 2 ++#define PR_BYTES_PER_INT 4 ++#define PR_BYTES_PER_INT64 8 ++#define PR_BYTES_PER_LONG 4 ++#define PR_BYTES_PER_FLOAT 4 ++#define PR_BYTES_PER_DOUBLE 8 ++#define PR_BYTES_PER_WORD 4 ++#define PR_BYTES_PER_DWORD 8 ++ ++#define PR_BITS_PER_BYTE 8 ++#define PR_BITS_PER_SHORT 16 ++#define PR_BITS_PER_INT 32 ++#define PR_BITS_PER_INT64 64 ++#define PR_BITS_PER_LONG 32 ++#define PR_BITS_PER_FLOAT 32 ++#define PR_BITS_PER_DOUBLE 64 ++#define PR_BITS_PER_WORD 32 ++ ++#define PR_BITS_PER_BYTE_LOG2 3 ++#define PR_BITS_PER_SHORT_LOG2 4 ++#define PR_BITS_PER_INT_LOG2 5 ++#define PR_BITS_PER_INT64_LOG2 6 ++#define PR_BITS_PER_LONG_LOG2 5 ++#define PR_BITS_PER_FLOAT_LOG2 5 ++#define PR_BITS_PER_DOUBLE_LOG2 6 ++#define PR_BITS_PER_WORD_LOG2 5 ++ ++#define PR_ALIGN_OF_SHORT 2 ++#define PR_ALIGN_OF_INT 4 ++#define PR_ALIGN_OF_LONG 4 ++#define PR_ALIGN_OF_INT64 4 ++#define PR_ALIGN_OF_FLOAT 4 ++#define PR_ALIGN_OF_DOUBLE 4 ++#define PR_ALIGN_OF_POINTER 4 ++#define PR_ALIGN_OF_WORD 4 ++ ++#define PR_BYTES_PER_WORD_LOG2 2 ++#define PR_BYTES_PER_DWORD_LOG2 3 ++ + #else + + #error "Unknown CPU architecture" +Index: b/nspr/pr/include/md/_linux.h +=================================================================== +--- a/nspr/pr/include/md/_linux.h ++++ b/nspr/pr/include/md/_linux.h +@@ -57,6 +57,8 @@ + #define _PR_SI_ARCHITECTURE "m32r" + #elif defined(__or1k__) + #define _PR_SI_ARCHITECTURE "or1k" ++#elif defined(__microblaze__) ++#define _PR_SI_ARCHITECTURE "microblaze" + #elif defined(__nios2__) + #define _PR_SI_ARCHITECTURE "nios2" + #else diff --git a/buildroot/package/libnspr/Config.in b/buildroot/package/libnspr/Config.in new file mode 100644 index 0000000..ba1ea55 --- /dev/null +++ b/buildroot/package/libnspr/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT + def_bool y + depends on !BR2_arc && !BR2_xtensa && !BR2_bfin + +if BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT + +config BR2_PACKAGE_LIBNSPR + bool "libnspr" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + NSPR is the Netscape Portable Runtime library which provides + a platform-neutral API for system level and libc like + functions. The library is used by the Mozilla project as well + as others. + + http://www.mozilla.org/projects/nspr/ + +comment "libnspr needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +endif diff --git a/buildroot/package/libnspr/libnspr.hash b/buildroot/package/libnspr/libnspr.hash new file mode 100644 index 0000000..46c091e --- /dev/null +++ b/buildroot/package/libnspr/libnspr.hash @@ -0,0 +1,4 @@ +# From https://ftp.mozilla.org/pub/nspr/releases/v4.17/src/SHA256SUMS +sha256 590a0aea29412ae22d7728038c21ef2ab42646e48172a47d2e4bb782846d1095 nspr-4.17.tar.gz +# Locally calculated +sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 nspr/LICENSE diff --git a/buildroot/package/libnspr/libnspr.mk b/buildroot/package/libnspr/libnspr.mk new file mode 100644 index 0000000..0c782ae --- /dev/null +++ b/buildroot/package/libnspr/libnspr.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# libnspr +# +################################################################################ + +LIBNSPR_VERSION = 4.17 +LIBNSPR_SOURCE = nspr-$(LIBNSPR_VERSION).tar.gz +LIBNSPR_SITE = https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v$(LIBNSPR_VERSION)/src +LIBNSPR_SUBDIR = nspr +LIBNSPR_INSTALL_STAGING = YES +LIBNSPR_CONFIG_SCRIPTS = nspr-config +LIBNSPR_LICENSE = MPL-2.0 +LIBNSPR_LICENSE_FILES = nspr/LICENSE + +# Set the host CFLAGS and LDFLAGS so NSPR does not guess wrongly +LIBNSPR_CONF_ENV = \ + HOST_CFLAGS="-g -O2" \ + HOST_LDFLAGS="-lc" +# NSPR mixes up --build and --host +LIBNSPR_CONF_OPTS = --host=$(GNU_HOST_NAME) +LIBNSPR_CONF_OPTS += --$(if $(BR2_ARCH_IS_64),en,dis)able-64bit + +# ./nspr/pr/include/md/_linux.h tests only __GLIBC__ version to detect +# c-library features, list musl features here for now (taken from +# Alpine Linux). +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LIBNSPR_CFLAGS += \ + -D_PR_POLL_AVAILABLE \ + -D_PR_HAVE_OFF64_T \ + -D_PR_INET6 \ + -D_PR_HAVE_INET_NTOP \ + -D_PR_HAVE_GETHOSTBYNAME2 \ + -D_PR_HAVE_GETADDRINFO \ + -D_PR_INET6_PROBE +endif + +LIBNSPR_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) $(LIBNSPR_CFLAGS)" + +ifeq ($(BR2_STATIC_LIBS),y) +LIBNSPR_MAKE_OPTS = SHARED_LIBRARY= +LIBNSPR_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) SHARED_LIBRARY= install +LIBNSPR_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) SHARED_LIBRARY= install +endif + +ifeq ($(BR2_SHARED_LIBS),y) +LIBNSPR_MAKE_OPTS = LIBRARY= +LIBNSPR_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) LIBRARY= install +LIBNSPR_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LIBRARY= install +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libnss/0001-uclibc.patch b/buildroot/package/libnss/0001-uclibc.patch new file mode 100644 index 0000000..b81db93 --- /dev/null +++ b/buildroot/package/libnss/0001-uclibc.patch @@ -0,0 +1,20 @@ +uCLibc does not define RTLD_NOLOAD. + +[Gustavo: update for nss 3.16.1] +Signed-off-by: Will Newton + +diff -Nura nss-3.16.1.orig/nss/lib/freebl/stubs.c nss-3.16.1/nss/lib/freebl/stubs.c +--- nss-3.16.1.orig/nss/lib/freebl/stubs.c 2014-06-18 10:34:30.529997002 -0300 ++++ nss-3.16.1/nss/lib/freebl/stubs.c 2014-06-18 10:36:25.508882650 -0300 +@@ -594,6 +594,11 @@ + return SECSuccess; + } + ++/* uClibc does not define RTLD_NOLOAD. */ ++#ifndef RTLD_NOLOAD ++#define RTLD_NOLOAD 0 ++#endif ++ + /* + * fetch the library if it's loaded. For NSS it should already be loaded + */ diff --git a/buildroot/package/libnss/0004-Bug-1438426-Avoid-stringop-truncation-warning-r-fran.patch b/buildroot/package/libnss/0004-Bug-1438426-Avoid-stringop-truncation-warning-r-fran.patch new file mode 100644 index 0000000..c14880b --- /dev/null +++ b/buildroot/package/libnss/0004-Bug-1438426-Avoid-stringop-truncation-warning-r-fran.patch @@ -0,0 +1,33 @@ +From f0ce70989526fc9a0223398c99ea0d09777ea5df Mon Sep 17 00:00:00 2001 +From: Martin Thomson +Date: Thu, 15 Feb 2018 16:34:02 +1100 +Subject: [PATCH] Bug 1438426 - Avoid stringop-truncation warning, r=franziskus + +--HG-- +extra : rebase_source : 4ea1630d0da0ce3523309e3da33ee50961682242 + +Upstream-commit: https://github.com/nss-dev/nss/commit/f0ce70989526fc9a0223398c99ea0d09777ea5df +[Thomas: edited after git format-patch to add the nss/ prefix needed +for the patch to apply properly on the source code extracted by the +tarball.] +Signed-off-by: Thomas Petazzoni +--- + nss/coreconf/nsinstall/pathsub.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/nss/coreconf/nsinstall/pathsub.c b/nss/coreconf/nsinstall/pathsub.c +index a42a9f30a..c31a946f0 100644 +--- a/nss/coreconf/nsinstall/pathsub.c ++++ b/nss/coreconf/nsinstall/pathsub.c +@@ -212,7 +212,7 @@ reversepath(char *inpath, char *name, int len, char *outpath) + xchdir(".."); + } else { + cp -= 3; +- strncpy(cp, "../", 3); ++ memcpy(cp, "../", 3); + xchdir(buf); + } + } +-- +2.14.3 + diff --git a/buildroot/package/libnss/Config.in b/buildroot/package/libnss/Config.in new file mode 100644 index 0000000..599c9a6 --- /dev/null +++ b/buildroot/package/libnss/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBNSS + bool "libnss" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnspr + depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT # libnspr + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBNSPR + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_ZLIB + help + Network Security Services (NSS) is a set of libraries designed + to support development of security-enabled client and server + applications. Applications built with NSS can support SSL v2 + and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, + and X.509 v3 certificates. + + http://www.mozilla.org/projects/security/pki/nss/ + +comment "libnss needs a toolchain w/ threads, dynamic library" + depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/libnss/libnss.hash b/buildroot/package/libnss/libnss.hash new file mode 100644 index 0000000..6c8ce83 --- /dev/null +++ b/buildroot/package/libnss/libnss.hash @@ -0,0 +1,4 @@ +# From https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_33_RTM/src/SHA256SUMS +sha256 98f0dabd36408e83dd3a11727336cc3cdfee4cbdd9aede2b2831eb2389c284e4 nss-3.33.tar.gz +# Locally calculated +sha256 a20c1a32d1f8102432360b42e932869f7c11c7cdbacf9cac554c422132af47f4 nss/COPYING diff --git a/buildroot/package/libnss/libnss.mk b/buildroot/package/libnss/libnss.mk new file mode 100644 index 0000000..27d305c --- /dev/null +++ b/buildroot/package/libnss/libnss.mk @@ -0,0 +1,95 @@ +################################################################################ +# +# libnss +# +################################################################################ + +LIBNSS_VERSION = 3.33 +LIBNSS_SOURCE = nss-$(LIBNSS_VERSION).tar.gz +LIBNSS_SITE = https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_$(subst .,_,$(LIBNSS_VERSION))_RTM/src +LIBNSS_DISTDIR = dist +LIBNSS_INSTALL_STAGING = YES +LIBNSS_DEPENDENCIES = libnspr sqlite zlib +LIBNSS_LICENSE = MPL-2.0 +LIBNSS_LICENSE_FILES = nss/COPYING + +# --gc-sections triggers binutils ld segfault +# https://sourceware.org/bugzilla/show_bug.cgi?id=21180 +ifeq ($(BR2_microblaze),y) +define LIBNSS_DROP_GC_SECTIONS + sed -i 's:-Wl,--gc-sections::g' $(@D)/nss/coreconf/Linux.mk +endef + +LIBNSS_PRE_CONFIGURE_HOOKS += LIBNSS_DROP_GC_SECTIONS +endif + +LIBNSS_BUILD_VARS = \ + MOZILLA_CLIENT=1 \ + NSPR_INCLUDE_DIR=$(STAGING_DIR)/usr/include/nspr \ + NSPR_LIB_DIR=$(STAGING_DIR)/usr/lib \ + BUILD_OPT=1 \ + NS_USE_GCC=1 \ + NSS_DISABLE_GTESTS=1 \ + NSS_USE_SYSTEM_SQLITE=1 \ + NSS_ENABLE_ECC=1 \ + NATIVE_CC="$(HOSTCC)" \ + OS_ARCH="Linux" \ + OS_RELEASE="2.6" \ + OS_TEST="$(ARCH)" + +# #pragma usage needs gcc >= 4.8 +# See https://bugzilla.mozilla.org/show_bug.cgi?id=1226179 +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_8),) +LIBNSS_BUILD_VARS += NSS_ENABLE_WERROR=0 +endif + +ifeq ($(BR2_ARCH_IS_64),y) +# MIPS64 n32 is treated as a 32-bit architecture by libnss. +# See: https://bugzilla.mozilla.org/show_bug.cgi?id=1010730 +ifeq ($(BR2_MIPS_NABI32),) +LIBNSS_BUILD_VARS += USE_64=1 +endif +endif + +define LIBNSS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D)/nss coreconf \ + SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \ + DIST=$(@D)/$(LIBNSS_DISTDIR) \ + CHECKLOC= \ + $(LIBNSS_BUILD_VARS) + $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D)/nss lib/dbm all \ + SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \ + DIST=$(@D)/$(LIBNSS_DISTDIR) \ + CHECKLOC= \ + $(LIBNSS_BUILD_VARS) NATIVE_FLAGS="$(HOST_CFLAGS)" +endef + +define LIBNSS_INSTALL_STAGING_CMDS + $(INSTALL) -m 755 -t $(STAGING_DIR)/usr/lib/ \ + $(@D)/$(LIBNSS_DISTDIR)/lib/*.so + $(INSTALL) -m 755 -d $(STAGING_DIR)/usr/include/nss + $(INSTALL) -m 644 -t $(STAGING_DIR)/usr/include/nss \ + $(@D)/$(LIBNSS_DISTDIR)/public/nss/* + $(INSTALL) -m 755 -t $(STAGING_DIR)/usr/lib/ \ + $(@D)/$(LIBNSS_DISTDIR)/lib/*.a + $(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \ + $(STAGING_DIR)/usr/lib/pkgconfig/nss.pc + $(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \ + $(STAGING_DIR)/usr/lib/pkgconfig/nss.pc +endef + +define LIBNSS_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/lib/ \ + $(@D)/$(LIBNSS_DISTDIR)/lib/*.so + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/include/nss + $(INSTALL) -m 644 -t $(TARGET_DIR)/usr/include/nss \ + $(@D)/$(LIBNSS_DISTDIR)/public/nss/* + $(INSTALL) -m 755 -t $(TARGET_DIR)/usr/lib/ \ + $(@D)/$(LIBNSS_DISTDIR)/lib/*.a + $(INSTALL) -D -m 0644 $(TOPDIR)/package/libnss/nss.pc.in \ + $(TARGET_DIR)/usr/lib/pkgconfig/nss.pc + $(SED) 's/@VERSION@/$(LIBNSS_VERSION)/g;' \ + $(TARGET_DIR)/usr/lib/pkgconfig/nss.pc +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libnss/nss.pc.in b/buildroot/package/libnss/nss.pc.in new file mode 100644 index 0000000..e27783f --- /dev/null +++ b/buildroot/package/libnss/nss.pc.in @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include/nss + +Name: NSS +Description: Mozilla Network Security Services +Version: @VERSION@ +Requires: nspr +Libs: -L${libdir} -lnss3 -lnssutil3 -lsmime3 -lssl3 +Cflags: -I${includedir} diff --git a/buildroot/package/liboauth/Config.in b/buildroot/package/liboauth/Config.in new file mode 100644 index 0000000..4ed0efa --- /dev/null +++ b/buildroot/package/liboauth/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBOAUTH + bool "liboauth" + select BR2_PACKAGE_OPENSSL + help + liboauth is a collection of c functions implementing the oAuth + Core 1.0 Rev A standard API. liboauth provides basic functions + to escape and encode parameters according to oAuth specs and + offers high-level functions to sign requests or verify + signatures. + + http://liboauth.sourceforge.net/ diff --git a/buildroot/package/liboauth/liboauth.hash b/buildroot/package/liboauth/liboauth.hash new file mode 100644 index 0000000..6806a08 --- /dev/null +++ b/buildroot/package/liboauth/liboauth.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 0df60157b052f0e774ade8a8bac59d6e8d4b464058cc55f9208d72e41156811f liboauth-1.0.3.tar.gz diff --git a/buildroot/package/liboauth/liboauth.mk b/buildroot/package/liboauth/liboauth.mk new file mode 100644 index 0000000..bd54330 --- /dev/null +++ b/buildroot/package/liboauth/liboauth.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# liboauth +# +################################################################################ + +LIBOAUTH_VERSION = 1.0.3 +LIBOAUTH_SITE = http://downloads.sourceforge.net/project/liboauth +LIBOAUTH_INSTALL_STAGING = YES +LIBOAUTH_DEPENDENCIES += host-pkgconf openssl +LIBOAUTH_LICENSE = MIT +LIBOAUTH_LICENSE_FILES = COPYING.MIT + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LIBOAUTH_DEPENDENCIES += libcurl +else +LIBOAUTH_CONF_OPTS += --disable-libcurl +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libogg/Config.in b/buildroot/package/libogg/Config.in new file mode 100644 index 0000000..bf719ff --- /dev/null +++ b/buildroot/package/libogg/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBOGG + bool "libogg" + help + Ogg is a multimedia container format, and the native file + and stream format for the Xiph.org multimedia codecs. As + with all Xiph.org technology is it an open format free for + anyone to use. + + http://xiph.org/ogg/ diff --git a/buildroot/package/libogg/libogg.hash b/buildroot/package/libogg/libogg.hash new file mode 100644 index 0000000..0c65b8e --- /dev/null +++ b/buildroot/package/libogg/libogg.hash @@ -0,0 +1,2 @@ +# From: http://www.xiph.org/downloads/ +sha256 4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08 libogg-1.3.3.tar.xz diff --git a/buildroot/package/libogg/libogg.mk b/buildroot/package/libogg/libogg.mk new file mode 100644 index 0000000..4c97e9a --- /dev/null +++ b/buildroot/package/libogg/libogg.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libogg +# +################################################################################ + +LIBOGG_VERSION = 1.3.3 +LIBOGG_SOURCE = libogg-$(LIBOGG_VERSION).tar.xz +LIBOGG_SITE = http://downloads.xiph.org/releases/ogg +LIBOGG_LICENSE = BSD-3-Clause +LIBOGG_LICENSE_FILES = COPYING + +LIBOGG_INSTALL_STAGING = YES +LIBOGG_DEPENDENCIES = host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/libopenh264/Config.in b/buildroot/package/libopenh264/Config.in new file mode 100644 index 0000000..2b77578 --- /dev/null +++ b/buildroot/package/libopenh264/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || \ + BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \ + BR2_x86_64 + +config BR2_PACKAGE_LIBOPENH264 + bool "libopenh264" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS + help + OpenH264 is a codec library which supports H.264 encoding and + decoding. + + http://www.openh264.org + +comment "libopenh264 needs a toolchain w/ C++, dynamic library, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + depends on BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS diff --git a/buildroot/package/libopenh264/libopenh264.hash b/buildroot/package/libopenh264/libopenh264.hash new file mode 100644 index 0000000..2fc76ec --- /dev/null +++ b/buildroot/package/libopenh264/libopenh264.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 65d307bf312543ad6e98ec02abb7c27d8fd2c9740fd069d7249844612674a2c7 libopenh264-v1.6.0.tar.gz diff --git a/buildroot/package/libopenh264/libopenh264.mk b/buildroot/package/libopenh264/libopenh264.mk new file mode 100644 index 0000000..feead5b --- /dev/null +++ b/buildroot/package/libopenh264/libopenh264.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# libopenh264 +# +################################################################################ + +LIBOPENH264_VERSION = v1.6.0 +LIBOPENH264_SITE = $(call github,cisco,openh264,$(LIBOPENH264_VERSION)) +LIBOPENH264_LICENSE = BSD-2-Clause +LIBOPENH264_LICENSE_FILES = LICENSE +LIBOPENH264_INSTALL_STAGING = YES + +ifeq ($(BR2_aarch64),y) +LIBOPENH264_ARCH = aarch64 +else ifeq ($(BR2_arm)$(BR2_armeb),y) +LIBOPENH264_ARCH = arm +else ifeq ($(BR2_i386),y) +LIBOPENH264_ARCH = x86 +LIBOPENH264_DEPENDENCIES += host-nasm +else ifeq ($(BR2_mips)$(BR2_mipsel),y) +LIBOPENH264_ARCH = mips +else ifeq ($(BR2_mips64)$(BR2_mips64el),y) +LIBOPENH264_ARCH = mips64 +else ifeq ($(BR2_x86_64),y) +LIBOPENH264_ARCH = x86_64 +LIBOPENH264_DEPENDENCIES += host-nasm +endif + +# ENABLE64BIT is really only used for x86-64, other 64 bits +# architecture don't need it. +LIBOPENH264_MAKE_OPTS = \ + ARCH=$(LIBOPENH264_ARCH) \ + ENABLE64BIT=$(if $(BR2_x86_64),Yes,No) + +define LIBOPENH264_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBOPENH264_MAKE_OPTS) +endef + +define LIBOPENH264_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBOPENH264_MAKE_OPTS) \ + DESTDIR=$(STAGING_DIR) PREFIX=/usr install +endef + +define LIBOPENH264_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LIBOPENH264_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libopenssl/0001-Dont-waste-time-building-manpages-if-we-re-not-going.patch b/buildroot/package/libopenssl/0001-Dont-waste-time-building-manpages-if-we-re-not-going.patch new file mode 100644 index 0000000..10d2b75 --- /dev/null +++ b/buildroot/package/libopenssl/0001-Dont-waste-time-building-manpages-if-we-re-not-going.patch @@ -0,0 +1,27 @@ +From 389efb564fa1453a9da835393eec9006bfae2a52 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Sat, 16 May 2015 18:53:51 +0200 +Subject: Dont waste time building manpages if we're not going to use em. + +Signed-off-by: Ryan Barnett +[Gustavo: update for parallel-build] +--- + Makefile.org | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.org b/Makefile.org +index 60f07cc..976ceaf 100644 +--- a/Makefile.org ++++ b/Makefile.org +@@ -527,7 +527,7 @@ dist: + dist_pem_h: + (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean) + +-install: install_docs install_sw ++install: install_sw + + install_sw: + @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \ +-- +1.9.1 + diff --git a/buildroot/package/libopenssl/0002-cryptodev-Fix-issue-with-signature-generation.patch b/buildroot/package/libopenssl/0002-cryptodev-Fix-issue-with-signature-generation.patch new file mode 100644 index 0000000..4729550 --- /dev/null +++ b/buildroot/package/libopenssl/0002-cryptodev-Fix-issue-with-signature-generation.patch @@ -0,0 +1,450 @@ +From 90fd7e8f1a316cda86ee442b43fcd7d5e5baeede Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sat, 16 May 2015 18:55:08 +0200 +Subject: cryptodev: Fix issue with signature generation + +Forward port of 0001-cryptodev-Fix-issue-with-signature-generation.patch +from http://rt.openssl.org/Ticket/Display.html?id=2770&user=guest&pass=guest +It was originally targetted at 1.0.2-beta3. + +Without this patch digest acceleration via cryptodev is broken. + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Ryan Barnett +--- + crypto/engine/eng_cryptodev.c | 195 +++++++++++++++++++++++++++++++----------- + 1 file changed, 146 insertions(+), 49 deletions(-) + +diff --git a/crypto/engine/eng_cryptodev.c b/crypto/engine/eng_cryptodev.c +index 926d95c..7021d9a 100644 +--- a/crypto/engine/eng_cryptodev.c ++++ b/crypto/engine/eng_cryptodev.c +@@ -2,6 +2,7 @@ + * Copyright (c) 2002 Bob Beck + * Copyright (c) 2002 Theo de Raadt + * Copyright (c) 2002 Markus Friedl ++ * Copyright (c) 2012 Nikos Mavrogiannopoulos + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without +@@ -72,7 +73,6 @@ struct dev_crypto_state { + struct session_op d_sess; + int d_fd; + # ifdef USE_CRYPTODEV_DIGESTS +- char dummy_mac_key[HASH_MAX_LEN]; + unsigned char digest_res[HASH_MAX_LEN]; + char *mac_data; + int mac_len; +@@ -189,8 +189,10 @@ static struct { + static struct { + int id; + int nid; +- int keylen; ++ int digestlen; + } digests[] = { ++#if 0 ++ /* HMAC is not supported */ + { + CRYPTO_MD5_HMAC, NID_hmacWithMD5, 16 + }, +@@ -198,15 +200,15 @@ static struct { + CRYPTO_SHA1_HMAC, NID_hmacWithSHA1, 20 + }, + { +- CRYPTO_RIPEMD160_HMAC, NID_ripemd160, 16 +- /* ? */ ++ CRYPTO_SHA2_256_HMAC, NID_hmacWithSHA256, 32 + }, + { +- CRYPTO_MD5_KPDK, NID_undef, 0 ++ CRYPTO_SHA2_384_HMAC, NID_hmacWithSHA384, 48 + }, + { +- CRYPTO_SHA1_KPDK, NID_undef, 0 ++ CRYPTO_SHA2_512_HMAC, NID_hmacWithSHA512, 64 + }, ++#endif + { + CRYPTO_MD5, NID_md5, 16 + }, +@@ -214,6 +216,15 @@ static struct { + CRYPTO_SHA1, NID_sha1, 20 + }, + { ++ CRYPTO_SHA2_256, NID_sha256, 32 ++ }, ++ { ++ CRYPTO_SHA2_384, NID_sha384, 48 ++ }, ++ { ++ CRYPTO_SHA2_512, NID_sha512, 64 ++ }, ++ { + 0, NID_undef, 0 + }, + }; +@@ -288,13 +299,14 @@ static int get_cryptodev_ciphers(const int **cnids) + static int nids[CRYPTO_ALGORITHM_MAX]; + struct session_op sess; + int fd, i, count = 0; ++ unsigned char fake_key[CRYPTO_CIPHER_MAX_KEY_LEN]; + + if ((fd = get_dev_crypto()) < 0) { + *cnids = NULL; + return (0); + } + memset(&sess, 0, sizeof(sess)); +- sess.key = (caddr_t) "123456789abcdefghijklmno"; ++ sess.key = (void*)fake_key; + + for (i = 0; ciphers[i].id && count < CRYPTO_ALGORITHM_MAX; i++) { + if (ciphers[i].nid == NID_undef) +@@ -327,18 +339,19 @@ static int get_cryptodev_digests(const int **cnids) + static int nids[CRYPTO_ALGORITHM_MAX]; + struct session_op sess; + int fd, i, count = 0; ++ unsigned char fake_key[CRYPTO_CIPHER_MAX_KEY_LEN]; + + if ((fd = get_dev_crypto()) < 0) { + *cnids = NULL; + return (0); + } + memset(&sess, 0, sizeof(sess)); +- sess.mackey = (caddr_t) "123456789abcdefghijklmno"; ++ sess.mackey = fake_key; + for (i = 0; digests[i].id && count < CRYPTO_ALGORITHM_MAX; i++) { + if (digests[i].nid == NID_undef) + continue; + sess.mac = digests[i].id; +- sess.mackeylen = digests[i].keylen; ++ sess.mackeylen = 8; + sess.cipher = 0; + if (ioctl(fd, CIOCGSESSION, &sess) != -1 && + ioctl(fd, CIOCFSESSION, &sess.ses) != -1) +@@ -424,14 +437,14 @@ cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, + cryp.ses = sess->ses; + cryp.flags = 0; + cryp.len = inl; +- cryp.src = (caddr_t) in; +- cryp.dst = (caddr_t) out; ++ cryp.src = (void*) in; ++ cryp.dst = (void*) out; + cryp.mac = 0; + + cryp.op = ctx->encrypt ? COP_ENCRYPT : COP_DECRYPT; + + if (ctx->cipher->iv_len) { +- cryp.iv = (caddr_t) ctx->iv; ++ cryp.iv = (void*) ctx->iv; + if (!ctx->encrypt) { + iiv = in + inl - ctx->cipher->iv_len; + memcpy(save_iv, iiv, ctx->cipher->iv_len); +@@ -483,7 +496,7 @@ cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + if ((state->d_fd = get_dev_crypto()) < 0) + return (0); + +- sess->key = (caddr_t) key; ++ sess->key = (void*)key; + sess->keylen = ctx->key_len; + sess->cipher = cipher; + +@@ -749,16 +762,6 @@ static int digest_nid_to_cryptodev(int nid) + return (0); + } + +-static int digest_key_length(int nid) +-{ +- int i; +- +- for (i = 0; digests[i].id; i++) +- if (digests[i].nid == nid) +- return digests[i].keylen; +- return (0); +-} +- + static int cryptodev_digest_init(EVP_MD_CTX *ctx) + { + struct dev_crypto_state *state = ctx->md_data; +@@ -769,7 +772,6 @@ static int cryptodev_digest_init(EVP_MD_CTX *ctx) + printf("cryptodev_digest_init: Can't get digest \n"); + return (0); + } +- + memset(state, 0, sizeof(struct dev_crypto_state)); + + if ((state->d_fd = get_dev_crypto()) < 0) { +@@ -777,8 +779,8 @@ static int cryptodev_digest_init(EVP_MD_CTX *ctx) + return (0); + } + +- sess->mackey = state->dummy_mac_key; +- sess->mackeylen = digest_key_length(ctx->digest->type); ++ sess->mackey = NULL; ++ sess->mackeylen = 0; + sess->mac = digest; + + if (ioctl(state->d_fd, CIOCGSESSION, sess) < 0) { +@@ -794,8 +796,8 @@ static int cryptodev_digest_init(EVP_MD_CTX *ctx) + static int cryptodev_digest_update(EVP_MD_CTX *ctx, const void *data, + size_t count) + { +- struct crypt_op cryp; + struct dev_crypto_state *state = ctx->md_data; ++ struct crypt_op cryp; + struct session_op *sess = &state->d_sess; + + if (!data || state->d_fd < 0) { +@@ -804,7 +806,7 @@ static int cryptodev_digest_update(EVP_MD_CTX *ctx, const void *data, + } + + if (!count) { +- return (0); ++ return (1); + } + + if (!(ctx->flags & EVP_MD_CTX_FLAG_ONESHOT)) { +@@ -828,9 +830,9 @@ static int cryptodev_digest_update(EVP_MD_CTX *ctx, const void *data, + cryp.ses = sess->ses; + cryp.flags = 0; + cryp.len = count; +- cryp.src = (caddr_t) data; ++ cryp.src = (void*) data; + cryp.dst = NULL; +- cryp.mac = (caddr_t) state->digest_res; ++ cryp.mac = (void*) state->digest_res; + if (ioctl(state->d_fd, CIOCCRYPT, &cryp) < 0) { + printf("cryptodev_digest_update: digest failed\n"); + return (0); +@@ -844,8 +846,6 @@ static int cryptodev_digest_final(EVP_MD_CTX *ctx, unsigned char *md) + struct dev_crypto_state *state = ctx->md_data; + struct session_op *sess = &state->d_sess; + +- int ret = 1; +- + if (!md || state->d_fd < 0) { + printf("cryptodev_digest_final: illegal input\n"); + return (0); +@@ -859,7 +859,7 @@ static int cryptodev_digest_final(EVP_MD_CTX *ctx, unsigned char *md) + cryp.len = state->mac_len; + cryp.src = state->mac_data; + cryp.dst = NULL; +- cryp.mac = (caddr_t) md; ++ cryp.mac = (void*)md; + if (ioctl(state->d_fd, CIOCCRYPT, &cryp) < 0) { + printf("cryptodev_digest_final: digest failed\n"); + return (0); +@@ -870,7 +870,7 @@ static int cryptodev_digest_final(EVP_MD_CTX *ctx, unsigned char *md) + + memcpy(md, state->digest_res, ctx->digest->md_size); + +- return (ret); ++ return 1; + } + + static int cryptodev_digest_cleanup(EVP_MD_CTX *ctx) +@@ -921,8 +921,8 @@ static int cryptodev_digest_copy(EVP_MD_CTX *to, const EVP_MD_CTX *from) + + digest = digest_nid_to_cryptodev(to->digest->type); + +- sess->mackey = dstate->dummy_mac_key; +- sess->mackeylen = digest_key_length(to->digest->type); ++ sess->mackey = NULL; ++ sess->mackeylen = 0; + sess->mac = digest; + + dstate->d_fd = get_dev_crypto(); +@@ -947,32 +947,116 @@ static int cryptodev_digest_copy(EVP_MD_CTX *to, const EVP_MD_CTX *from) + + const EVP_MD cryptodev_sha1 = { + NID_sha1, +- NID_undef, ++ NID_sha1WithRSAEncryption, + SHA_DIGEST_LENGTH, ++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT) ++ EVP_MD_FLAG_PKEY_METHOD_SIGNATURE| ++ EVP_MD_FLAG_DIGALGID_ABSENT| ++#endif + EVP_MD_FLAG_ONESHOT, + cryptodev_digest_init, + cryptodev_digest_update, + cryptodev_digest_final, + cryptodev_digest_copy, + cryptodev_digest_cleanup, +- EVP_PKEY_NULL_method, ++ EVP_PKEY_RSA_method, + SHA_CBLOCK, +- sizeof(struct dev_crypto_state), ++ sizeof(EVP_MD *)+sizeof(struct dev_crypto_state), + }; + +-const EVP_MD cryptodev_md5 = { ++static const EVP_MD cryptodev_sha256 = { ++ NID_sha256, ++ NID_sha256WithRSAEncryption, ++ SHA256_DIGEST_LENGTH, ++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT) ++ EVP_MD_FLAG_PKEY_METHOD_SIGNATURE| ++ EVP_MD_FLAG_DIGALGID_ABSENT| ++#endif ++ EVP_MD_FLAG_ONESHOT, ++ cryptodev_digest_init, ++ cryptodev_digest_update, ++ cryptodev_digest_final, ++ cryptodev_digest_copy, ++ cryptodev_digest_cleanup, ++ EVP_PKEY_RSA_method, ++ SHA256_CBLOCK, ++ sizeof(EVP_MD *)+sizeof(struct dev_crypto_state), ++}; ++ ++static const EVP_MD cryptodev_sha224 = { ++ NID_sha224, ++ NID_sha224WithRSAEncryption, ++ SHA224_DIGEST_LENGTH, ++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT) ++ EVP_MD_FLAG_PKEY_METHOD_SIGNATURE| ++ EVP_MD_FLAG_DIGALGID_ABSENT| ++#endif ++ EVP_MD_FLAG_ONESHOT, ++ cryptodev_digest_init, ++ cryptodev_digest_update, ++ cryptodev_digest_final, ++ cryptodev_digest_copy, ++ cryptodev_digest_cleanup, ++ EVP_PKEY_RSA_method, ++ SHA256_CBLOCK, ++ sizeof(EVP_MD *)+sizeof(struct dev_crypto_state), ++}; ++ ++static const EVP_MD cryptodev_sha384 = { ++ NID_sha384, ++ NID_sha384WithRSAEncryption, ++ SHA384_DIGEST_LENGTH, ++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT) ++ EVP_MD_FLAG_PKEY_METHOD_SIGNATURE| ++ EVP_MD_FLAG_DIGALGID_ABSENT| ++#endif ++ EVP_MD_FLAG_ONESHOT, ++ cryptodev_digest_init, ++ cryptodev_digest_update, ++ cryptodev_digest_final, ++ cryptodev_digest_copy, ++ cryptodev_digest_cleanup, ++ EVP_PKEY_RSA_method, ++ SHA512_CBLOCK, ++ sizeof(EVP_MD *)+sizeof(struct dev_crypto_state), ++}; ++ ++static const EVP_MD cryptodev_sha512 = { ++ NID_sha512, ++ NID_sha512WithRSAEncryption, ++ SHA512_DIGEST_LENGTH, ++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT) ++ EVP_MD_FLAG_PKEY_METHOD_SIGNATURE| ++ EVP_MD_FLAG_DIGALGID_ABSENT| ++#endif ++ EVP_MD_FLAG_ONESHOT, ++ cryptodev_digest_init, ++ cryptodev_digest_update, ++ cryptodev_digest_final, ++ cryptodev_digest_copy, ++ cryptodev_digest_cleanup, ++ EVP_PKEY_RSA_method, ++ SHA512_CBLOCK, ++ sizeof(EVP_MD *)+sizeof(struct dev_crypto_state), ++}; ++ ++static const EVP_MD cryptodev_md5 = { + NID_md5, +- NID_undef, ++ NID_md5WithRSAEncryption, + 16 /* MD5_DIGEST_LENGTH */ , ++#if defined(EVP_MD_FLAG_PKEY_METHOD_SIGNATURE) && defined(EVP_MD_FLAG_DIGALGID_ABSENT) ++ EVP_MD_FLAG_PKEY_METHOD_SIGNATURE| ++ EVP_MD_FLAG_DIGALGID_ABSENT| ++#endif + EVP_MD_FLAG_ONESHOT, + cryptodev_digest_init, + cryptodev_digest_update, + cryptodev_digest_final, + cryptodev_digest_copy, + cryptodev_digest_cleanup, +- EVP_PKEY_NULL_method, ++ EVP_PKEY_RSA_method, + 64 /* MD5_CBLOCK */ , +- sizeof(struct dev_crypto_state), ++ sizeof(EVP_MD *)+sizeof(struct dev_crypto_state), + }; + + # endif /* USE_CRYPTODEV_DIGESTS */ +@@ -992,6 +1076,18 @@ cryptodev_engine_digests(ENGINE *e, const EVP_MD **digest, + case NID_sha1: + *digest = &cryptodev_sha1; + break; ++ case NID_sha224: ++ *digest = &cryptodev_sha224; ++ break; ++ case NID_sha256: ++ *digest = &cryptodev_sha256; ++ break; ++ case NID_sha384: ++ *digest = &cryptodev_sha384; ++ break; ++ case NID_sha512: ++ *digest = &cryptodev_sha512; ++ break; + default: + # endif /* USE_CRYPTODEV_DIGESTS */ + *digest = NULL; +@@ -1022,7 +1118,7 @@ static int bn2crparam(const BIGNUM *a, struct crparam *crp) + return (1); + memset(b, 0, bytes); + +- crp->crp_p = (caddr_t) b; ++ crp->crp_p = (void*) b; + crp->crp_nbits = bits; + + for (i = 0, j = 0; i < a->top; i++) { +@@ -1277,7 +1373,7 @@ static DSA_SIG *cryptodev_dsa_do_sign(const unsigned char *dgst, int dlen, + kop.crk_op = CRK_DSA_SIGN; + + /* inputs: dgst dsa->p dsa->q dsa->g dsa->priv_key */ +- kop.crk_param[0].crp_p = (caddr_t) dgst; ++ kop.crk_param[0].crp_p = (void*)dgst; + kop.crk_param[0].crp_nbits = dlen * 8; + if (bn2crparam(dsa->p, &kop.crk_param[1])) + goto err; +@@ -1317,7 +1413,7 @@ cryptodev_dsa_verify(const unsigned char *dgst, int dlen, + kop.crk_op = CRK_DSA_VERIFY; + + /* inputs: dgst dsa->p dsa->q dsa->g dsa->pub_key sig->r sig->s */ +- kop.crk_param[0].crp_p = (caddr_t) dgst; ++ kop.crk_param[0].crp_p = (void*)dgst; + kop.crk_param[0].crp_nbits = dlen * 8; + if (bn2crparam(dsa->p, &kop.crk_param[1])) + goto err; +@@ -1398,9 +1494,10 @@ cryptodev_dh_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh) + goto err; + kop.crk_iparams = 3; + +- kop.crk_param[3].crp_p = (caddr_t) key; +- kop.crk_param[3].crp_nbits = keylen * 8; ++ kop.crk_param[3].crp_p = (void*) key; ++ kop.crk_param[3].crp_nbits = keylen; + kop.crk_oparams = 1; ++ dhret = keylen / 8; + + if (ioctl(fd, CIOCKEY, &kop) == -1) { + const DH_METHOD *meth = DH_OpenSSL(); +@@ -1470,7 +1567,7 @@ void ENGINE_load_cryptodev(void) + put_dev_crypto(fd); + + if (!ENGINE_set_id(engine, "cryptodev") || +- !ENGINE_set_name(engine, "BSD cryptodev engine") || ++ !ENGINE_set_name(engine, "cryptodev engine") || + !ENGINE_set_ciphers(engine, cryptodev_engine_ciphers) || + !ENGINE_set_digests(engine, cryptodev_engine_digests) || + !ENGINE_set_ctrl_function(engine, cryptodev_ctrl) || +-- +1.9.1 + diff --git a/buildroot/package/libopenssl/0003-Reproducible-build-do-not-leak-compiler-path.patch b/buildroot/package/libopenssl/0003-Reproducible-build-do-not-leak-compiler-path.patch new file mode 100644 index 0000000..eff72c5 --- /dev/null +++ b/buildroot/package/libopenssl/0003-Reproducible-build-do-not-leak-compiler-path.patch @@ -0,0 +1,26 @@ +From 875fcad2ad84877763cba86c1265b57679b878b0 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Tue, 24 Oct 2017 16:58:32 +0200 +Subject: [PATCH] Reproducible build: do not leak compiler path + +Signed-off-by: Peter Seiderer +--- + crypto/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/crypto/Makefile b/crypto/Makefile +index 7869996..7e63291 100644 +--- a/crypto/Makefile ++++ b/crypto/Makefile +@@ -55,7 +55,7 @@ top: + all: shared + + buildinf.h: ../Makefile +- $(PERL) $(TOP)/util/mkbuildinf.pl "$(CC) $(CFLAGS)" "$(PLATFORM)" >buildinf.h ++ $(PERL) $(TOP)/util/mkbuildinf.pl "$$(basename $(CC)) $(CFLAGS)" "$(PLATFORM)" >buildinf.h + + x86cpuid.s: x86cpuid.pl perlasm/x86asm.pl + $(PERL) x86cpuid.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@ +-- +2.11.0 + diff --git a/buildroot/package/libopenssl/libopenssl.hash b/buildroot/package/libopenssl/libopenssl.hash new file mode 100644 index 0000000..48b7471 --- /dev/null +++ b/buildroot/package/libopenssl/libopenssl.hash @@ -0,0 +1,8 @@ +# From https://www.openssl.org/source/openssl-1.0.2o.tar.gz.sha256 +sha256 ec3f5c9714ba0fd45cb4e087301eb1336c317e0d20b575a125050470e8089e4d openssl-1.0.2o.tar.gz +# Locally computed +sha256 eddd8a5123748052c598214487ac178e4bfa4e31ba2ec520c70d59c8c5bfa2e9 openssl-1.0.2a-parallel-install-dirs.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d +sha256 147c3eeaad614c044749ea527cb433eae5e2d5cad34a78c6ba61cd967bfbe01f openssl-1.0.2a-parallel-obj-headers.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d +sha256 30cb49489de5041841a74da9155cd4fabfbce33237262ba7cd23974314ae2956 openssl-1.0.2a-parallel-symlinking.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d +sha256 deaf6f3af41874ecc6d63841ea14b8e6c71cea81d4a511a754bc90c9a993147f openssl-1.0.2d-parallel-build.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d +sha256 c8f60f4842bbad0353f5d81620e72b168b5638ca3a0a999f5da113b22491612e LICENSE diff --git a/buildroot/package/libopenssl/libopenssl.mk b/buildroot/package/libopenssl/libopenssl.mk new file mode 100644 index 0000000..16a9c2e --- /dev/null +++ b/buildroot/package/libopenssl/libopenssl.mk @@ -0,0 +1,171 @@ +################################################################################ +# +# libopenssl +# +################################################################################ + +LIBOPENSSL_VERSION = 1.0.2o +LIBOPENSSL_SITE = http://www.openssl.org/source +LIBOPENSSL_SOURCE = openssl-$(LIBOPENSSL_VERSION).tar.gz +LIBOPENSSL_LICENSE = OpenSSL or SSLeay +LIBOPENSSL_LICENSE_FILES = LICENSE +LIBOPENSSL_INSTALL_STAGING = YES +LIBOPENSSL_DEPENDENCIES = zlib +HOST_LIBOPENSSL_DEPENDENCIES = host-zlib +LIBOPENSSL_TARGET_ARCH = generic32 +LIBOPENSSL_CFLAGS = $(TARGET_CFLAGS) +LIBOPENSSL_PROVIDES = openssl +LIBOPENSSL_PATCH = \ + https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-libs/openssl/files/openssl-1.0.2d-parallel-build.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d \ + https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-libs/openssl/files/openssl-1.0.2a-parallel-obj-headers.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d \ + https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-libs/openssl/files/openssl-1.0.2a-parallel-install-dirs.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d \ + https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-libs/openssl/files/openssl-1.0.2a-parallel-symlinking.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +LIBOPENSSL_CFLAGS += -mxgot +endif + +ifeq ($(BR2_USE_MMU),) +LIBOPENSSL_CFLAGS += -DHAVE_FORK=0 +endif + +ifeq ($(BR2_PACKAGE_HAS_CRYPTODEV),y) +LIBOPENSSL_CFLAGS += -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS +LIBOPENSSL_DEPENDENCIES += cryptodev +endif + +# Some architectures are optimized in OpenSSL +# Doesn't work for thumb-only (Cortex-M?) +ifeq ($(BR2_ARM_CPU_HAS_ARM),y) +LIBOPENSSL_TARGET_ARCH = armv4 +endif +ifeq ($(ARCH),aarch64) +LIBOPENSSL_TARGET_ARCH = aarch64 +endif +ifeq ($(ARCH),powerpc) +# 4xx cores seem to have trouble with openssl's ASM optimizations +ifeq ($(BR2_powerpc_401)$(BR2_powerpc_403)$(BR2_powerpc_405)$(BR2_powerpc_405fp)$(BR2_powerpc_440)$(BR2_powerpc_440fp),) +LIBOPENSSL_TARGET_ARCH = ppc +endif +endif +ifeq ($(ARCH),powerpc64) +LIBOPENSSL_TARGET_ARCH = ppc64 +endif +ifeq ($(ARCH),powerpc64le) +LIBOPENSSL_TARGET_ARCH = ppc64le +endif +ifeq ($(ARCH),x86_64) +LIBOPENSSL_TARGET_ARCH = x86_64 +endif + +define HOST_LIBOPENSSL_CONFIGURE_CMDS + (cd $(@D); \ + $(HOST_CONFIGURE_OPTS) \ + ./config \ + --prefix=$(HOST_DIR) \ + --openssldir=$(HOST_DIR)/etc/ssl \ + --libdir=/lib \ + shared \ + zlib-dynamic \ + ) + $(SED) "s#-O[0-9]#$(HOST_CFLAGS)#" $(@D)/Makefile +endef + +define LIBOPENSSL_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + ./Configure \ + linux-$(LIBOPENSSL_TARGET_ARCH) \ + --prefix=/usr \ + --openssldir=/etc/ssl \ + --libdir=/lib \ + $(if $(BR2_TOOLCHAIN_HAS_THREADS),threads,no-threads) \ + $(if $(BR2_STATIC_LIBS),no-shared,shared) \ + no-rc5 \ + enable-camellia \ + enable-mdc2 \ + enable-tlsext \ + $(if $(BR2_STATIC_LIBS),zlib,zlib-dynamic) \ + $(if $(BR2_STATIC_LIBS),no-dso) \ + ) + $(SED) "s#-march=[-a-z0-9] ##" -e "s#-mcpu=[-a-z0-9] ##g" $(@D)/Makefile + $(SED) "s#-O[0-9]#$(LIBOPENSSL_CFLAGS)#" $(@D)/Makefile + $(SED) "s# build_tests##" $(@D)/Makefile +endef + +# libdl is not available in a static build, and this is not implied by no-dso +ifeq ($(BR2_STATIC_LIBS),y) +define LIBOPENSSL_FIXUP_STATIC_MAKEFILE + $(SED) 's#-ldl##g' $(@D)/Makefile +endef +LIBOPENSSL_POST_CONFIGURE_HOOKS += LIBOPENSSL_FIXUP_STATIC_MAKEFILE +endif + +define HOST_LIBOPENSSL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define LIBOPENSSL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define LIBOPENSSL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) INSTALL_PREFIX=$(STAGING_DIR) install +endef + +define HOST_LIBOPENSSL_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +define LIBOPENSSL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) INSTALL_PREFIX=$(TARGET_DIR) install + rm -rf $(TARGET_DIR)/usr/lib/ssl + rm -f $(TARGET_DIR)/usr/bin/c_rehash +endef + +# libdl has no business in a static build +ifeq ($(BR2_STATIC_LIBS),y) +define LIBOPENSSL_FIXUP_STATIC_PKGCONFIG + $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libcrypto.pc + $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libssl.pc + $(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/openssl.pc +endef +LIBOPENSSL_POST_INSTALL_STAGING_HOOKS += LIBOPENSSL_FIXUP_STATIC_PKGCONFIG +endif + +ifneq ($(BR2_STATIC_LIBS),y) +# libraries gets installed read only, so strip fails +define LIBOPENSSL_INSTALL_FIXUPS_SHARED + chmod +w $(TARGET_DIR)/usr/lib/engines/lib*.so + for i in $(addprefix $(TARGET_DIR)/usr/lib/,libcrypto.so.* libssl.so.*); \ + do chmod +w $$i; done +endef +LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_INSTALL_FIXUPS_SHARED +endif + +ifeq ($(BR2_PACKAGE_PERL),) +define LIBOPENSSL_REMOVE_PERL_SCRIPTS + $(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.pl,tsget} +endef +LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_PERL_SCRIPTS +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL_BIN),) +define LIBOPENSSL_REMOVE_BIN + $(RM) -f $(TARGET_DIR)/usr/bin/openssl + $(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.*,c_*} +endef +LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_BIN +endif + +ifneq ($(BR2_PACKAGE_LIBOPENSSL_ENGINES),y) +define LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES + rm -rf $(TARGET_DIR)/usr/lib/engines +endef +LIBOPENSSL_POST_INSTALL_TARGET_HOOKS += LIBOPENSSL_REMOVE_LIBOPENSSL_ENGINES +endif + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/liboping/Config.in b/buildroot/package/liboping/Config.in new file mode 100644 index 0000000..1d2de31 --- /dev/null +++ b/buildroot/package/liboping/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBOPING + bool "liboping" + help + liboping is a C library to generate ICMP echo requests, + better known as "ping packets". + + http://noping.cc/ diff --git a/buildroot/package/liboping/liboping.hash b/buildroot/package/liboping/liboping.hash new file mode 100644 index 0000000..3e796cc --- /dev/null +++ b/buildroot/package/liboping/liboping.hash @@ -0,0 +1,2 @@ +# From http://noping.cc/#download +sha256 44bb1d88b56b88fda5533edb3aa005c69b3cd396f20453a157d7e31e536f3530 liboping-1.9.0.tar.bz2 diff --git a/buildroot/package/liboping/liboping.mk b/buildroot/package/liboping/liboping.mk new file mode 100644 index 0000000..114e0c2 --- /dev/null +++ b/buildroot/package/liboping/liboping.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# liboping +# +################################################################################ + +LIBOPING_VERSION = 1.9.0 +LIBOPING_SITE = http://noping.cc/files +LIBOPING_SOURCE = liboping-$(LIBOPING_VERSION).tar.bz2 +LIBOPING_INSTALL_STAGING = YES +LIBOPING_DEPENDENCIES = $(if $(BR2_PACKAGE_NCURSES),ncurses) +LIBOPING_CONF_OPTS = --without-perl-bindings +LIBOPING_LICENSE = LGPL-2.1+, GPL-2.0 +LIBOPING_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libosip2/0001-fix-bug-report-sr-109133-Heap-buffer-overflow-in-uti.patch b/buildroot/package/libosip2/0001-fix-bug-report-sr-109133-Heap-buffer-overflow-in-uti.patch new file mode 100644 index 0000000..7f2c2d4 --- /dev/null +++ b/buildroot/package/libosip2/0001-fix-bug-report-sr-109133-Heap-buffer-overflow-in-uti.patch @@ -0,0 +1,30 @@ +From 7e0793e15e21f68337e130c67b031ca38edf055f Mon Sep 17 00:00:00 2001 +From: Aymeric Moizard +Date: Mon, 5 Sep 2016 15:01:53 +0200 +Subject: [PATCH] * fix bug report: sr #109133: Heap buffer overflow in + utility function *osip_clrncpy* https://savannah.gnu.org/support/?109133 + +Signed-off-by: Peter Korsgaard +--- + src/osipparser2/osip_port.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/osipparser2/osip_port.c b/src/osipparser2/osip_port.c +index 0e64147..d8941b0 100644 +--- a/src/osipparser2/osip_port.c ++++ b/src/osipparser2/osip_port.c +@@ -1291,8 +1291,10 @@ osip_clrncpy (char *dst, const char *src, size_t len) + char *p; + size_t spaceless_length; + +- if (src == NULL) ++ if (src == NULL || len == 0) { ++ *dst = '\0'; + return NULL; ++ } + + /* find the start of relevant text */ + pbeg = src; +-- +2.11.0 + diff --git a/buildroot/package/libosip2/Config.in b/buildroot/package/libosip2/Config.in new file mode 100644 index 0000000..5b1d3d2 --- /dev/null +++ b/buildroot/package/libosip2/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBOSIP2 + bool "libosip2" + help + GNU SIP (Session Initiation Protocol) + This library aims to provide multimedia and telecom software + developers an easy and powerful interface to initiate and + control SIP based sessions in their applications. + SIP is a open standard replacement from IETF for H323. + + http://www.gnu.org/software/osip/ diff --git a/buildroot/package/libosip2/libosip2.hash b/buildroot/package/libosip2/libosip2.hash new file mode 100644 index 0000000..9ff2d9a --- /dev/null +++ b/buildroot/package/libosip2/libosip2.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 c9a18b0c760506d150017cdb1fa5c1cefe12b8dcbbf9a7e784eb75af376e96cd libosip2-3.6.0.tar.gz diff --git a/buildroot/package/libosip2/libosip2.mk b/buildroot/package/libosip2/libosip2.mk new file mode 100644 index 0000000..9302b99 --- /dev/null +++ b/buildroot/package/libosip2/libosip2.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libosip2 +# +################################################################################ + +LIBOSIP2_VERSION = 3.6.0 +LIBOSIP2_SITE = $(BR2_GNU_MIRROR)/osip +LIBOSIP2_INSTALL_STAGING = YES +LIBOSIP2_LICENSE = LGPL-2.1+ +LIBOSIP2_LICENSE_FILES = COPYING + +ifeq ($(BR2_arc),y) +# toolchain __arc__ define conflicts with libosip2 source +LIBOSIP2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -U__arc__" +endif + +LIBOSIP2_CONF_OPTS = \ + --enable-mt=$(if $(BR2_TOOLCHAIN_HAS_THREADS),yes,no) + +$(eval $(autotools-package)) diff --git a/buildroot/package/libostree/Config.in b/buildroot/package/libostree/Config.in new file mode 100644 index 0000000..b62f4ea --- /dev/null +++ b/buildroot/package/libostree/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_LIBOSTREE + bool "libostree" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpgme + depends on !BR2_STATIC_LIBS # libfuse + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_USE_MMU # e2fsprogs, libfuse,libglib2, libgpgme + # doesn't build with musl due to lack of TEMP_FAILURE_RETRY() + depends on !BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_E2FSPROGS + select BR2_PACKAGE_LIBFUSE + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGPGME + select BR2_PACKAGE_XZ + help + OSTree is an upgrade system for Linux-based operating + systems. + + https://ostree.readthedocs.io/en/latest/ + +comment "libostree needs a uClibc or glibc toolchain w/ threads, dynamic library, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || !BR2_USE_WCHAR || BR2_TOOLCHAIN_USES_MUSL + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS + depends on BR2_USE_MMU diff --git a/buildroot/package/libostree/libostree.hash b/buildroot/package/libostree/libostree.hash new file mode 100644 index 0000000..54bc263 --- /dev/null +++ b/buildroot/package/libostree/libostree.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8b5e3b80425b91c93aeb916bb047ee194aa138a9cf00ce173dcc0ebc0dd11f4b libostree-2018.1.tar.xz +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/buildroot/package/libostree/libostree.mk b/buildroot/package/libostree/libostree.mk new file mode 100644 index 0000000..f3e79c8 --- /dev/null +++ b/buildroot/package/libostree/libostree.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# libostree +# +################################################################################ + +LIBOSTREE_VERSION = 2018.1 +LIBOSTREE_SOURCE = libostree-$(LIBOSTREE_VERSION).tar.xz +LIBOSTREE_SITE = https://github.com/ostreedev/ostree/releases/download/v$(LIBOSTREE_VERSION) + +LIBOSTREE_LICENSE = LGPL-2.0+ +LIBOSTREE_LICENSE_FILES = COPYING +LIBOSTREE_DEPENDENCIES = e2fsprogs host-bison host-pkgconf libfuse libglib2 libgpgme xz +LIBOSTREE_INSTALL_STAGING = YES + +LIBOSTREE_CONF_OPTS += \ + --with-gpgme-prefix=$(STAGING_DIR)/usr \ + --disable-gtk-doc \ + --disable-gtk-doc-html \ + --disable-gtk-doc-pdf \ + --disable-man + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBOSTREE_CONF_OPTS += --with-openssl +LIBOSTREE_DEPENDENCIES += openssl +else +LIBOSTREE_CONF_OPTS += --without-openssl +endif + +# Avahi support needs libavahi-client, which is built by avahi if avahi-daemon +# and dbus is selected. Since there is no BR2_PACKAGE_LIBAVAHI_CLIENT config +# option yet, use the avahi-daemon and dbus config symbols to check for +# libavahi-client. +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy) +LIBOSTREE_CONF_OPTS += --with-avahi +LIBOSTREE_DEPENDENCIES += avahi +else +LIBOSTREE_CONF_OPTS += --without-avahi +endif + +#cURL support depends on libsoup +ifeq ($(BR2_PACKAGE_LIBSOUP),y) +LIBOSTREE_CONF_OPTS += --with-soup +LIBOSTREE_DEPENDENCIES += libsoup +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LIBOSTREE_CONF_OPTS += --with-curl +LIBOSTREE_DEPENDENCIES += libcurl +else +LIBOSTREE_CONF_OPTS += --without-curl +endif +else +LIBOSTREE_CONF_OPTS += --without-soup --without-curl +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +LIBOSTREE_CONF_OPTS += --with-libarchive +LIBOSTREE_DEPENDENCIES += libarchive +else +LIBOSTREE_CONF_OPTS += --without-libarchive +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LIBOSTREE_CONF_OPTS += --with-selinux +LIBOSTREE_DEPENDENCIES += libselinux +else +LIBOSTREE_CONF_OPTS += --without-selinux +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libpam-radius-auth/Config.in b/buildroot/package/libpam-radius-auth/Config.in new file mode 100644 index 0000000..a0dec14 --- /dev/null +++ b/buildroot/package/libpam-radius-auth/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBPAM_RADIUS_AUTH + bool "libpam-radius-auth" + help + This is the PAM to RADIUS authentication module. It allows + any PAM-capable machine to become a RADIUS client for + authentication and accounting requests. You will need a + RADIUS server to perform the actual authentication. + + http://freeradius.org/pam_radius_auth/ diff --git a/buildroot/package/libpam-radius-auth/libpam-radius-auth.hash b/buildroot/package/libpam-radius-auth/libpam-radius-auth.hash new file mode 100644 index 0000000..ffd7404 --- /dev/null +++ b/buildroot/package/libpam-radius-auth/libpam-radius-auth.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking PGP signature +sha256 742d79fc39824726c098e746bd3dc3484f983f5ee082c621c1e848b2c3725305 pam_radius-1.4.0.tar.gz diff --git a/buildroot/package/libpam-radius-auth/libpam-radius-auth.mk b/buildroot/package/libpam-radius-auth/libpam-radius-auth.mk new file mode 100644 index 0000000..184e48d --- /dev/null +++ b/buildroot/package/libpam-radius-auth/libpam-radius-auth.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libpam-radius-auth +# +################################################################################ + +LIBPAM_RADIUS_AUTH_VERSION = 1.4.0 +LIBPAM_RADIUS_AUTH_SITE = ftp://ftp.freeradius.org/pub/radius +LIBPAM_RADIUS_AUTH_SOURCE = pam_radius-$(LIBPAM_RADIUS_AUTH_VERSION).tar.gz +LIBPAM_RADIUS_AUTH_DEPENDENCIES = linux-pam +LIBPAM_RADIUS_AUTH_INSTALL_STAGING = YES +LIBPAM_RADIUS_AUTH_LICENSE = GPL-2.0+ +LIBPAM_RADIUS_AUTH_LICENSE_FILES = LICENSE +# While autoconf is used for configuration, the Makefile is +# hand-written, so we need to pass CC, LD, CFLAGS at build time. +LIBPAM_RADIUS_AUTH_MAKE_ENV = $(TARGET_CONFIGURE_OPTS) + +define LIBPAM_RADIUS_AUTH_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/lib/security/ + cp -dpfr $(@D)/pam_radius_auth.so* $(STAGING_DIR)/lib/security/ +endef + +define LIBPAM_RADIUS_AUTH_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/security/ + cp -dpfr $(@D)/pam_radius_auth.so* $(TARGET_DIR)/lib/security/ +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/libpam-tacplus/Config.in b/buildroot/package/libpam-tacplus/Config.in new file mode 100644 index 0000000..2d80809 --- /dev/null +++ b/buildroot/package/libpam-tacplus/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBPAM_TACPLUS + bool "libpam-tacplus" + help + TACACS+ protocol client library and PAM module in C. This + PAM module support authentication, authorization (account + management) and accounting (session management)performed + using TACACS+ protocol designed by Cisco. + + https://github.com/jeroennijhof/pam_tacplus diff --git a/buildroot/package/libpam-tacplus/libpam-tacplus.hash b/buildroot/package/libpam-tacplus/libpam-tacplus.hash new file mode 100644 index 0000000..c8a7723 --- /dev/null +++ b/buildroot/package/libpam-tacplus/libpam-tacplus.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 747f7ad980a3726ed3abc5fec92e867efa8af8c53caac547cab7eb6af5ce0edf libpam-tacplus-1.3.9.tar.gz diff --git a/buildroot/package/libpam-tacplus/libpam-tacplus.mk b/buildroot/package/libpam-tacplus/libpam-tacplus.mk new file mode 100644 index 0000000..f43e2b9 --- /dev/null +++ b/buildroot/package/libpam-tacplus/libpam-tacplus.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libpam-tacplus +# +################################################################################ + +LIBPAM_TACPLUS_VERSION = 1.3.9 +LIBPAM_TACPLUS_SITE = $(call github,jeroennijhof,pam_tacplus,$(LIBPAM_TACPLUS_VERSION)) +LIBPAM_TACPLUS_LICENSE = GPL-2.0+ +LIBPAM_TACPLUS_LICENSE_FILES = COPYING +LIBPAM_TACPLUS_DEPENDENCIES = linux-pam +# Fetching from github, we need to generate the configure script +LIBPAM_TACPLUS_AUTORECONF = YES +LIBPAM_TACPLUS_AUTORECONF_OPTS = -I m4 +LIBPAM_TACPLUS_INSTALL_STAGING = YES +LIBPAM_TACPLUS_CONF_ENV = \ + ax_cv_check_cflags___fstack_protector_all=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) +LIBPAM_TACPLUS_CONF_OPTS = \ + --enable-pamdir=/lib/security + +$(eval $(autotools-package)) diff --git a/buildroot/package/libpcap/Config.in b/buildroot/package/libpcap/Config.in new file mode 100644 index 0000000..643acbe --- /dev/null +++ b/buildroot/package/libpcap/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBPCAP + bool "libpcap" + select BR2_PACKAGE_ZLIB + help + A system-independent library for user-level network packet + capture. + + http://www.tcpdump.org/ diff --git a/buildroot/package/libpcap/libpcap.hash b/buildroot/package/libpcap/libpcap.hash new file mode 100644 index 0000000..6894046 --- /dev/null +++ b/buildroot/package/libpcap/libpcap.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 673dbc69fdc3f5a86fb5759ab19899039a8e5e6c631749e48dcd9c6f0c83541e libpcap-1.8.1.tar.gz diff --git a/buildroot/package/libpcap/libpcap.mk b/buildroot/package/libpcap/libpcap.mk new file mode 100644 index 0000000..c4c5f31 --- /dev/null +++ b/buildroot/package/libpcap/libpcap.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# libpcap +# +################################################################################ + +LIBPCAP_VERSION = 1.8.1 +LIBPCAP_SITE = http://www.tcpdump.org/release +LIBPCAP_LICENSE = BSD-3-Clause +LIBPCAP_LICENSE_FILES = LICENSE +LIBPCAP_INSTALL_STAGING = YES +LIBPCAP_DEPENDENCIES = zlib host-flex host-bison + +LIBPCAP_CONF_ENV = \ + ac_cv_header_linux_wireless_h=yes \ + CFLAGS="$(LIBPCAP_CFLAGS)" +LIBPCAP_CFLAGS = $(TARGET_CFLAGS) +LIBPCAP_CONF_OPTS = --disable-yydebug --with-pcap=linux +LIBPCAP_CONFIG_SCRIPTS = pcap-config + +# Omit -rpath from pcap-config output +define LIBPCAP_CONFIG_REMOVE_RPATH + $(SED) 's/^V_RPATH_OPT=.*/V_RPATH_OPT=""/g' $(@D)/pcap-config +endef +LIBPCAP_POST_BUILD_HOOKS = LIBPCAP_CONFIG_REMOVE_RPATH + +# On purpose, not compatible with bluez5 +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +LIBPCAP_DEPENDENCIES += bluez_utils +else +LIBPCAP_CONF_OPTS += --disable-bluetooth +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +LIBPCAP_CONF_OPTS += --enable-dbus +LIBPCAP_DEPENDENCIES += dbus +else +LIBPCAP_CONF_OPTS += --disable-dbus +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +LIBPCAP_CONF_OPTS += --enable-canusb +LIBPCAP_DEPENDENCIES += libusb +else +LIBPCAP_CONF_OPTS += --disable-canusb +endif + +ifeq ($(BR2_PACKAGE_LIBNL),y) +LIBPCAP_DEPENDENCIES += libnl +LIBPCAP_CFLAGS += "-I$(STAGING_DIR)/usr/include/libnl3" +LIBPCAP_CONF_OPTS += --with-libnl=$(STAGING_DIR)/usr +else +LIBPCAP_CONF_OPTS += --without-libnl +endif + +# microblaze/sparc/sparc64 need -fPIC instead of -fpic +ifeq ($(BR2_microblaze)$(BR2_sparc)$(BR2_sparc64),y) +LIBPCAP_CFLAGS += -fPIC +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libpciaccess/0001-musl-arm.patch b/buildroot/package/libpciaccess/0001-musl-arm.patch new file mode 100644 index 0000000..0077f45 --- /dev/null +++ b/buildroot/package/libpciaccess/0001-musl-arm.patch @@ -0,0 +1,20 @@ +Fix musl build + +Inspired by http://patchwork.openembedded.org/patch/111661/ +"inb/outb are implemented for ARM on glibc but not on linux in general +therefore the conditional has to reflect that" + +Signed-off-by: Bernd Kuhls + +diff -uNr libpciaccess-0.13.4.org/src/linux_sysfs.c libpciaccess-0.13.4/src/linux_sysfs.c +--- libpciaccess-0.13.4.org/src/linux_sysfs.c 2015-05-01 06:44:47.000000000 +0200 ++++ libpciaccess-0.13.4/src/linux_sysfs.c 2016-01-24 15:27:57.141562678 +0100 +@@ -49,7 +49,7 @@ + #include + #include + +-#if defined(__i386__) || defined(__x86_64__) || defined(__arm__) ++#if defined(__i386__) || defined(__x86_64__) + #include + #else + #define inb(x) -1 diff --git a/buildroot/package/libpciaccess/Config.in b/buildroot/package/libpciaccess/Config.in new file mode 100644 index 0000000..6cc983f --- /dev/null +++ b/buildroot/package/libpciaccess/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_LIBPCIACCESS + bool "libpciaccess" + help + X.Org libpciaccess diff --git a/buildroot/package/libpciaccess/libpciaccess.hash b/buildroot/package/libpciaccess/libpciaccess.hash new file mode 100644 index 0000000..b73c27c --- /dev/null +++ b/buildroot/package/libpciaccess/libpciaccess.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-October/002817.html +md5 8f436e151d5106a9cfaa71857a066d33 libpciaccess-0.14.tar.bz2 +sha1 f70a958bf4e744cb4ee93be64e9bc52ac05cdaeb libpciaccess-0.14.tar.bz2 +sha256 3df543e12afd41fea8eac817e48cbfde5aed8817b81670a4e9e493bb2f5bf2a4 libpciaccess-0.14.tar.bz2 +sha512 bf40214dfd22f2a223f7c948566e6eaa4bfed60116e71b3eb19f6fe7ab2c4546649eb0416c06d5983e476ea5e27de036936646eb5f800ea97763b6d1f1976f4b libpciaccess-0.14.tar.bz2 diff --git a/buildroot/package/libpciaccess/libpciaccess.mk b/buildroot/package/libpciaccess/libpciaccess.mk new file mode 100644 index 0000000..93b5fc7 --- /dev/null +++ b/buildroot/package/libpciaccess/libpciaccess.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libpciaccess +# +################################################################################ + +LIBPCIACCESS_VERSION = 0.14 +LIBPCIACCESS_SOURCE = libpciaccess-$(LIBPCIACCESS_VERSION).tar.bz2 +LIBPCIACCESS_SITE = http://xorg.freedesktop.org/releases/individual/lib +LIBPCIACCESS_LICENSE = MIT +LIBPCIACCESS_LICENSE_FILES = COPYING +LIBPCIACCESS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBPCIACCESS_CONF_OPTS += --with-zlib +LIBPCIACCESS_DEPENDENCIES += zlib +else +LIBPCIACCESS_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libpfm4/Config.in b/buildroot/package/libpfm4/Config.in new file mode 100644 index 0000000..441c6de --- /dev/null +++ b/buildroot/package/libpfm4/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBPFM4 + bool "libpfm4" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + help + A helper library to help encode Performance Events to use with + Operating system kernels performance monitoring interfaces. + + http://perfmon2.sourceforge.net/ + +comment "libpfm4 needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/libpfm4/libpfm4.hash b/buildroot/package/libpfm4/libpfm4.hash new file mode 100644 index 0000000..8bebc49 --- /dev/null +++ b/buildroot/package/libpfm4/libpfm4.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/perfmon2/files/libpfm4/: +sha1 2ed06d6e746f7b1cd4b70e9736e621052f60d625 libpfm-4.6.0.tar.gz +md5 5077b9022440e4951d96f2d0e73bd487 libpfm-4.6.0.tar.gz +# Locally calculated +sha256 5ab1e5b0472550f9037a8800834f6bc3b927690070f69fac0b67284b4b05fd5f libpfm-4.6.0.tar.gz diff --git a/buildroot/package/libpfm4/libpfm4.mk b/buildroot/package/libpfm4/libpfm4.mk new file mode 100644 index 0000000..913fc35 --- /dev/null +++ b/buildroot/package/libpfm4/libpfm4.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libpfm4 +# +################################################################################ + +LIBPFM4_VERSION = 4.6.0 +LIBPFM4_SOURCE = libpfm-$(LIBPFM4_VERSION).tar.gz +LIBPFM4_SITE = http://downloads.sourceforge.net/project/perfmon2/libpfm4 +LIBPFM4_LICENSE = libpfm4 license +LIBPFM4_LICENSE_FILES = COPYING +LIBPFM4_INSTALL_STAGING = YES + +LIBPFM4_FLAGS = SYS=Linux ARCH=$(BR2_ARCH) \ + CC="$(TARGET_CC)" LDCONFIG=true \ + CONFIG_PFMLIB_SHARED=$(if $(BR2_STATIC_LIBS),n,y) \ + DBG= + +define LIBPFM4_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBPFM4_FLAGS) +endef + +define LIBPFM4_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBPFM4_FLAGS) PREFIX=$(STAGING_DIR)/usr install +endef + +define LIBPFM4_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBPFM4_FLAGS) PREFIX=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libphidget/Config.in b/buildroot/package/libphidget/Config.in new file mode 100644 index 0000000..61e9154 --- /dev/null +++ b/buildroot/package/libphidget/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_LIBPHIDGET + bool "libphidget" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBUSB + help + The libphidget library provides an API for controlling + Phidgets USB devices. The library translates API function + calls to libusb function calls to control attached Phidgets + devices that provide GPIO's, DAC's, accelerometers, servo + motors, and other capabilities either singly or on combo + devices. + + To use libphidget for controlling locally attached devices you + need to set up the userspace USB device tree /dev/bus/usb. See + file udev/99-phidgets.rules. + + The libphidget library also contains an API for sending + commands to a local or remote phidgetwebservice using HTTP. + The phidgetwebservice then translates HTTP requests to + libphidget API function calls to control locally attached + Phidgets devices. + + http://phidgets.com/ + +comment "libphidget needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libphidget/libphidget.hash b/buildroot/package/libphidget/libphidget.hash new file mode 100644 index 0000000..a89ba36 --- /dev/null +++ b/buildroot/package/libphidget/libphidget.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 2d496828a085ada8ff139da9306bd2b8cb987798fee93caf0089dc399195e238 libphidget_2.1.8.20140319.tar.gz diff --git a/buildroot/package/libphidget/libphidget.mk b/buildroot/package/libphidget/libphidget.mk new file mode 100644 index 0000000..803d501 --- /dev/null +++ b/buildroot/package/libphidget/libphidget.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libphidget +# +################################################################################ + +LIBPHIDGET_VERSION = 2.1.8.20140319 +LIBPHIDGET_SOURCE = libphidget_$(LIBPHIDGET_VERSION).tar.gz +LIBPHIDGET_SITE = https://www.phidgets.com/downloads/phidget21/libraries/linux/libphidget +LIBPHIDGET_DEPENDENCIES = libusb +LIBPHIDGET_CONF_OPTS = --disable-ldconfig +LIBPHIDGET_INSTALL_STAGING = YES +LIBPHIDGET_LICENSE = LGPL-3.0 +LIBPHIDGET_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libpjsip/0001-Fixed-possible-function-name-clash.patch b/buildroot/package/libpjsip/0001-Fixed-possible-function-name-clash.patch new file mode 100644 index 0000000..435b0ea --- /dev/null +++ b/buildroot/package/libpjsip/0001-Fixed-possible-function-name-clash.patch @@ -0,0 +1,26 @@ +Re #2059 (misc): Fixed possible function name clash with md5 due to non-static function. + +Backported from: https://trac.pjsip.org/repos/changeset/5688 +Signed-off-by: Luca Ceresoli + +Index: pjlib-util/src/pjlib-util/md5.c +=================================================================== +diff --git a/pjproject/pjlib-util/src/pjlib-util/md5.c b/pjproject/pjlib-util/src/pjlib-util/md5.c +--- a/pjlib-util/src/pjlib-util/md5.c (revision 5687) ++++ b/pjlib-util/src/pjlib-util/md5.c (revision 5688) +@@ -29,13 +29,13 @@ + #ifndef HIGHFIRST + #define byteReverse(buf, len) /* Nothing */ + #else +-void byteReverse(unsigned char *buf, unsigned longs); ++static void byteReverse(unsigned char *buf, unsigned longs); + + #ifndef ASM_MD5 + /* + * Note: this code is harmless on little-endian machines. + */ +-void byteReverse(unsigned char *buf, unsigned longs) ++static void byteReverse(unsigned char *buf, unsigned longs) + { + pj_uint32_t t; + do { diff --git a/buildroot/package/libpjsip/Config.in b/buildroot/package/libpjsip/Config.in new file mode 100644 index 0000000..727d2ec --- /dev/null +++ b/buildroot/package/libpjsip/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBPJSIP + bool "libpjsip" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBSRTP + help + PJSIP is a free and open source multimedia communication + library written in C language implementing standard based + protocols such as: SIP, SDP, RTP, STUN, TURN, and ICE. + + http://www.pjsip.org + +comment "libpjsip needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libpjsip/libpjsip.hash b/buildroot/package/libpjsip/libpjsip.hash new file mode 100644 index 0000000..36c2ea1 --- /dev/null +++ b/buildroot/package/libpjsip/libpjsip.hash @@ -0,0 +1,6 @@ +# From http://www.pjsip.org/release/2.7.2/MD5SUM.TXT +md5 fa3f0bc098c4bff48ddd92db1c016a7a pjproject-2.7.2.tar.bz2 + +# Locally computed +sha256 9c2c828abab7626edf18e04b041ef274bfaa86f99adf2c25ff56f1509e813772 pjproject-2.7.2.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/libpjsip/libpjsip.mk b/buildroot/package/libpjsip/libpjsip.mk new file mode 100644 index 0000000..db9e474 --- /dev/null +++ b/buildroot/package/libpjsip/libpjsip.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# libpjsip +# +################################################################################ + +LIBPJSIP_VERSION = 2.7.2 +LIBPJSIP_SOURCE = pjproject-$(LIBPJSIP_VERSION).tar.bz2 +LIBPJSIP_SITE = http://www.pjsip.org/release/$(LIBPJSIP_VERSION) +LIBPJSIP_DEPENDENCIES = libsrtp +LIBPJSIP_LICENSE = GPL-2.0+ +LIBPJSIP_LICENSE_FILES = COPYING +LIBPJSIP_INSTALL_STAGING = YES +LIBPJSIP_MAKE = $(MAKE1) + +LIBPJSIP_CFLAGS = $(TARGET_CFLAGS) -DPJ_HAS_IPV6=1 + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +LIBPJSIP_CFLAGS += -mxgot +endif + +LIBPJSIP_CONF_ENV = \ + LD="$(TARGET_CC)" \ + CFLAGS="$(LIBPJSIP_CFLAGS)" + +LIBPJSIP_CONF_OPTS = \ + --disable-sound \ + --disable-gsm-codec \ + --disable-speex-codec \ + --disable-speex-aec \ + --disable-resample \ + --disable-video \ + --disable-opencore-amr \ + --disable-g7221-codec \ + --disable-ilbc-codec \ + --disable-libwebrtc \ + --disable-opus \ + --disable-oss \ + --disable-ext-sound \ + --disable-g711-codec \ + --disable-l16-codec \ + --disable-g722-codec \ + --disable-libsamplerate \ + --disable-sdl \ + --disable-ffmpeg \ + --disable-v4l2 \ + --disable-openh264 \ + --disable-libyuv \ + --disable-ipp \ + --disable-silk \ + --with-external-srtp + +# Note: aconfigure.ac is broken: --enable-epoll or --disable-epoll will +# both enable it. But that's OK, epoll is better than the alternative, +# so we want to use it. +LIBPJSIP_CONF_OPTS += --enable-epoll + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +LIBPJSIP_DEPENDENCIES += libopenssl +LIBPJSIP_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr +else +LIBPJSIP_CONF_OPTS += --disable-ssl +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +LIBPJSIP_DEPENDENCIES += util-linux +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libplatform/0001-p8-platform-config-fix-lookup-paths.patch b/buildroot/package/libplatform/0001-p8-platform-config-fix-lookup-paths.patch new file mode 100644 index 0000000..d487fd9 --- /dev/null +++ b/buildroot/package/libplatform/0001-p8-platform-config-fix-lookup-paths.patch @@ -0,0 +1,38 @@ +From 01b5478638c705af29f09ad4ed70289f70a21dcf Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 6 Feb 2017 14:04:47 +0100 +Subject: [PATCH] p8-platform-config: fix lookup paths + +Use the proper methods to find the headers and the library. + +Signed-off-by: Samuel Martin +Signed-off-by: "Yann E. MORIN" +--- + p8-platform-config.cmake.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/p8-platform-config.cmake.in b/p8-platform-config.cmake.in +index 47f30f1..f59418d 100644 +--- a/p8-platform-config.cmake.in ++++ b/p8-platform-config.cmake.in +@@ -10,7 +10,7 @@ + # + # propagate these properties from one build system to the other + set (p8-platform_VERSION "@p8-platform_VERSION_MAJOR@.@p8-platform_VERSION_MINOR@") +-set (p8-platform_INCLUDE_DIRS @p8-platform_INCLUDE_DIRS@ @CMAKE_INSTALL_PREFIX@/include) ++find_path (p8-platform_INCLUDE_DIRS p8-platform/os.h) + set (p8-platform_LIBRARY_DIRS "@CMAKE_LIBRARY_OUTPUT_DIRECTORY@") + set (p8-platform_LINKER_FLAGS "@p8-platform_LINKER_FLAGS@") + set (p8-platform_CONFIG_VARS "@p8-platform_CONFIG_VARS@") +@@ -19,7 +19,7 @@ set (p8-platform_CONFIG_VARS "@p8-platform_CONFIG_VARS@") + if(WIN32) + set (p8-platform_LIBRARY "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/p8-platform.lib") + else(WIN32) +- set (p8-platform_LIBRARY "-L@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ -lp8-platform") ++ find_library (p8-platform_LIBRARY p8-platform) + endif(WIN32) + set (p8-platform_LIBRARIES ${p8-platform_LIBRARY} "@p8-platform_LIBRARIES@") + mark_as_advanced (p8-platform_LIBRARY) +-- +2.7.4 + diff --git a/buildroot/package/libplatform/Config.in b/buildroot/package/libplatform/Config.in new file mode 100644 index 0000000..ade6baf --- /dev/null +++ b/buildroot/package/libplatform/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBPLATFORM + bool + help + Platform support library used by libCEC and binary add-ons for + Kodi + + https://github.com/Pulse-Eight/platform diff --git a/buildroot/package/libplatform/libplatform.hash b/buildroot/package/libplatform/libplatform.hash new file mode 100644 index 0000000..5162b43 --- /dev/null +++ b/buildroot/package/libplatform/libplatform.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 dd07bea9cb5676220586e772f09eab51f1093e5ef0faadee80f7c0e99f5f6c1c libplatform-2d90f98620e25f47702c9e848380c0d93f29462b.tar.gz diff --git a/buildroot/package/libplatform/libplatform.mk b/buildroot/package/libplatform/libplatform.mk new file mode 100644 index 0000000..c805af2 --- /dev/null +++ b/buildroot/package/libplatform/libplatform.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libplatform +# +################################################################################ + +LIBPLATFORM_VERSION = 2d90f98620e25f47702c9e848380c0d93f29462b +LIBPLATFORM_SITE = $(call github,Pulse-Eight,platform,$(LIBPLATFORM_VERSION)) +LIBPLATFORM_LICENSE = GPL-2.0+ +LIBPLATFORM_LICENSE_FILES = src/os.h +LIBPLATFORM_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/buildroot/package/libplayer/0001-add-fpic.patch b/buildroot/package/libplayer/0001-add-fpic.patch new file mode 100644 index 0000000..e4b227f --- /dev/null +++ b/buildroot/package/libplayer/0001-add-fpic.patch @@ -0,0 +1,18 @@ +Add -fPIC to CFLAGS + +-fPIC is needed to build shared library code. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -9,6 +9,7 @@ + SHARED_LIBNAME_VERSION = $(SHARED_LIBNAME).$(VERSION) + SHARED_LIBNAME_MAJOR = $(SHARED_LIBNAME).$(shell echo $(VERSION) | cut -f1 -d.) + SHARED_LIBNAME_FLAGS = -shared -Wl,-soname,$(SHARED_LIBNAME_MAJOR) ++CFLAGS = -fPIC + + ifeq ($(BUILD_STATIC),yes) + BUILD_RULES += lib_static diff --git a/buildroot/package/libplayer/0002-fix-configure-cflags.patch b/buildroot/package/libplayer/0002-fix-configure-cflags.patch new file mode 100644 index 0000000..186afd5 --- /dev/null +++ b/buildroot/package/libplayer/0002-fix-configure-cflags.patch @@ -0,0 +1,41 @@ +From: Arnout Vandecappelle (Essensium/Mind) +Subject: [PATCH] libplayer: Fix handling of cflags in configure. + +The cflags returned by pkg-config or another config script may consist +of several arguments for the compiler. These should not be quoted together +into a single argument. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- +Sent upstream to devel@geexbox.org on July 11, 2012. +--- +diff -rup libplayer-2.0.1.orig/configure libplayer-2.0.1/configure +--- libplayer-2.0.1.orig/configure 2010-10-03 19:26:11.000000000 +0200 ++++ libplayer-2.0.1/configure 2012-07-10 23:33:02.783701852 +0200 +@@ -342,7 +342,7 @@ check_libconfig(){ + err=1 + if `which "$config" 1>/dev/null 2>&1`; then + cflags=`$config $ccflags` +- [ -n "$cflags" ] && check_cflags "$cflags" ++ [ -n "$cflags" ] && check_cflags $cflags + libs=`$config $clibs` + if [ -n "$libs" ]; then + temp_extralibs "$libs" +@@ -364,7 +364,7 @@ check_libconfig_exists(){ + err=1 + if `which "$config" 1>/dev/null 2>&1`; then + cflags=`$config $ccflags` +- [ -n "$cflags" ] && temp_cflags "$cflags" ++ [ -n "$cflags" ] && temp_cflags $cflags + libs=`$config $clibs` + if [ -n "$libs" ]; then + temp_extralibs "$libs" +@@ -386,7 +386,7 @@ check_pkgconfig(){ + err=1 + if `which pkg-config 1>/dev/null 2>&1`; then + cflags=`pkg-config $pkg $ccflags` +- [ -n "$cflags" ] && check_cflags "$cflags" ++ [ -n "$cflags" ] && check_cflags $cflags + libs=`pkg-config $pkg $clibs` + if [ -n "$libs" ]; then + temp_extralibs "$libs" diff --git a/buildroot/package/libplayer/Config.in b/buildroot/package/libplayer/Config.in new file mode 100644 index 0000000..82083a0 --- /dev/null +++ b/buildroot/package/libplayer/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_LIBPLAYER + bool "libplayer" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libplayer provides a generic A/V API that relies on various + multimedia player for Linux systems. It currently supports + MPlayer, xine VLC and GStreamer only + + http://libplayer.geexbox.org/ + +if BR2_PACKAGE_LIBPLAYER +config BR2_PACKAGE_LIBPLAYER_MPLAYER + bool "mplayer backend" + depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # mplayer + select BR2_PACKAGE_MPLAYER + +config BR2_PACKAGE_LIBPLAYER_GSTREAMER + bool "gstreamer backend" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on !BR2_STATIC_LIBS # gstreamer + select BR2_PACKAGE_GSTREAMER + +comment "gstreamer backend needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS +endif + +comment "libplayer needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libplayer/libplayer.hash b/buildroot/package/libplayer/libplayer.hash new file mode 100644 index 0000000..6f13143 --- /dev/null +++ b/buildroot/package/libplayer/libplayer.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 aa5eeb54f773bc9cad2733e4a0b5870208fc7f75024515ea87e55f64653e9d65 libplayer-2.0.1.tar.bz2 diff --git a/buildroot/package/libplayer/libplayer.mk b/buildroot/package/libplayer/libplayer.mk new file mode 100644 index 0000000..f4ecced --- /dev/null +++ b/buildroot/package/libplayer/libplayer.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# libplayer +# +################################################################################ + +LIBPLAYER_VERSION = 2.0.1 +LIBPLAYER_SITE = http://libplayer.geexbox.org/releases +LIBPLAYER_SOURCE = libplayer-$(LIBPLAYER_VERSION).tar.bz2 +LIBPLAYER_LICENSE = LGPL-2.1+ +LIBPLAYER_LICENSE_FILES = COPYING + +# When passing the standard buildroot configure arguments, the configure script +# breaks on --target and --host options. Thus we need to define a configure cmd +# ourselves. +define LIBPLAYER_CONFIGURE_CMDS + (cd $(@D) && rm -rf config.cache && \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure \ + --prefix=/usr \ + --cross-compile \ + $(SHARED_STATIC_LIBS_OPTS) \ + $(LIBPLAYER_CONF_OPTS) \ + ) +endef + +ifeq ($(BR2_PACKAGE_LIBPLAYER_MPLAYER),y) +LIBPLAYER_DEPENDENCIES += mplayer +LIBPLAYER_CONF_OPTS += --enable-mplayer +else +LIBPLAYER_CONF_OPTS += --disable-mplayer +endif + +ifeq ($(BR2_PACKAGE_LIBPLAYER_GSTREAMER),y) +LIBPLAYER_DEPENDENCIES += gstreamer +LIBPLAYER_CONF_OPTS += --enable-gstreamer +else +LIBPLAYER_CONF_OPTS += --disable-gstreamer +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libplist/Config.in b/buildroot/package/libplist/Config.in new file mode 100644 index 0000000..5a246b4 --- /dev/null +++ b/buildroot/package/libplist/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBPLIST + bool "libplist" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libplist is a client for manipulating Apple Property List + (.plist) files + + http://www.libimobiledevice.org/ + +comment "libplist needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libplist/libplist.hash b/buildroot/package/libplist/libplist.hash new file mode 100644 index 0000000..63c2515 --- /dev/null +++ b/buildroot/package/libplist/libplist.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3a7e9694c2d9a85174ba1fa92417cfabaea7f6d19631e544948dc7e17e82f602 libplist-2.0.0.tar.bz2 diff --git a/buildroot/package/libplist/libplist.mk b/buildroot/package/libplist/libplist.mk new file mode 100644 index 0000000..09fc816 --- /dev/null +++ b/buildroot/package/libplist/libplist.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libplist +# +################################################################################ + +LIBPLIST_VERSION = 2.0.0 +LIBPLIST_SOURCE = libplist-$(LIBPLIST_VERSION).tar.bz2 +LIBPLIST_SITE = http://www.libimobiledevice.org/downloads +LIBPLIST_INSTALL_STAGING = YES +LIBPLIST_LICENSE = LGPL-2.1+ +LIBPLIST_LICENSE_FILES = COPYING + +# Disable building Python bindings, because it requires host-cython, which +# is not packaged in Buildroot at all. +LIBPLIST_CONF_OPTS = --without-cython + +$(eval $(autotools-package)) diff --git a/buildroot/package/libpng/0001-Disable-pngfix-and-png-fix-itxt.patch b/buildroot/package/libpng/0001-Disable-pngfix-and-png-fix-itxt.patch new file mode 100644 index 0000000..d232e4d --- /dev/null +++ b/buildroot/package/libpng/0001-Disable-pngfix-and-png-fix-itxt.patch @@ -0,0 +1,47 @@ +From 60c3ee917c8e7a4760b1ef7c3dc2b44a615150d3 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Thu, 26 May 2016 16:26:18 -0300 +Subject: [PATCH] Disable pngfix and png-fix-itxt + +Disable the new pngfix and png-fix-itxt tools: they take up space, fail +to build on some oddball toolchain configurations and aren't +expected/needed in a non-interactive embedded system. + +[Julien: update for 1.6.25] +Signed-off-by: Julien Boibessot + +Signed-off-by: Gustavo Zacarias +--- + Makefile.am | 2 +- + Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 7212951..3430dca 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -18,7 +18,7 @@ check_PROGRAMS += timepng + endif + + # Utilities - installed +-bin_PROGRAMS= pngfix png-fix-itxt ++bin_PROGRAMS= + + # This ensures that pnglibconf.h gets built at the start of 'make all' or + # 'make check', but it does not add dependencies to the individual programs, +diff --git a/Makefile.in b/Makefile.in +index a66f6aa..4e67782 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -104,7 +104,7 @@ check_PROGRAMS = pngtest$(EXEEXT) pngunknown$(EXEEXT) \ + pngstest$(EXEEXT) pngvalid$(EXEEXT) pngimage$(EXEEXT) \ + pngcp$(EXEEXT) $(am__EXEEXT_1) + @HAVE_CLOCK_GETTIME_TRUE@am__append_1 = timepng +-bin_PROGRAMS = pngfix$(EXEEXT) png-fix-itxt$(EXEEXT) ++bin_PROGRAMS = + @PNG_ARM_NEON_TRUE@am__append_2 = arm/arm_init.c\ + @PNG_ARM_NEON_TRUE@ arm/filter_neon.S arm/filter_neon_intrinsics.c + +-- +2.7.3 + diff --git a/buildroot/package/libpng/0002-Don-t-append-prefix-to-symbol-names-in-version-script.patch b/buildroot/package/libpng/0002-Don-t-append-prefix-to-symbol-names-in-version-script.patch new file mode 100644 index 0000000..de77222 --- /dev/null +++ b/buildroot/package/libpng/0002-Don-t-append-prefix-to-symbol-names-in-version-script.patch @@ -0,0 +1,55 @@ +From 473fdecd9a580b45251480b8ccbbb1927c598310 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Thu, 26 May 2016 16:27:13 -0300 +Subject: [PATCH] Don't append prefix to symbol names in version script + +Even if Blackfin GNU toolchain add prefix '_' to all symbols, +symbol prefix is not accepted in the link flag --version-script. +Don't append prefix in the symbols in the version script file. + +Original patch by: Sonic Zhang + +[Gustavo: update for 1.6.22] +Signed-off-by: Gustavo Zacarias + +[Julien: update for 1.6.25] +Signed-off-by: Julien Boibessot + +[Bernd: update for 1.6.29] +Signed-off-by: Bernd Kuhls + +Signed-off-by: Gustavo Zacarias +--- + Makefile.am | 2 +- + Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 3430dca..db6a7a2 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -245,7 +245,7 @@ contrib/tools/pngfix.o: pnglibconf.h + # interfering with the symbol file format. + SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0'\ + -DPNGLIB_VERSION='@PNGLIB_VERSION@'\ +- -DSYMBOL_PREFIX='$(SYMBOL_PREFIX)'\ ++ -DSYMBOL_PREFIX=''\ + -DPNG_NO_USE_READ_MACROS -DPNG_BUILDING_SYMBOL_TABLE + + if DO_PNG_PREFIX +diff --git a/Makefile.in b/Makefile.in +index 4e67782..5f468d9 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -766,7 +766,7 @@ SUFFIXES = .chk .out + # interfering with the symbol file format. + SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0' \ + -DPNGLIB_VERSION='@PNGLIB_VERSION@' \ +- -DSYMBOL_PREFIX='$(SYMBOL_PREFIX)' -DPNG_NO_USE_READ_MACROS \ ++ -DSYMBOL_PREFIX='' -DPNG_NO_USE_READ_MACROS \ + -DPNG_BUILDING_SYMBOL_TABLE $(am__append_9) + + # EXT_LIST is a list of the possibly library directory extensions, this exists +-- +2.7.3 + diff --git a/buildroot/package/libpng/Config.in b/buildroot/package/libpng/Config.in new file mode 100644 index 0000000..b0a3646 --- /dev/null +++ b/buildroot/package/libpng/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBPNG + bool "libpng" + select BR2_PACKAGE_ZLIB + help + Library for handling PNG (Portable Network Graphics) + images. + + http://www.libpng.org/ diff --git a/buildroot/package/libpng/libpng.hash b/buildroot/package/libpng/libpng.hash new file mode 100644 index 0000000..0a0cebe --- /dev/null +++ b/buildroot/package/libpng/libpng.hash @@ -0,0 +1,7 @@ +# From http://sourceforge.net/projects/libpng/files/libpng16/1.6.34/ +md5 c05b6ca7190a5e387b78657dbe5536b2 libpng-1.6.34.tar.xz +sha1 45de4ec996ffcc3e18037e7c128abe95f4d0292a libpng-1.6.34.tar.xz + +# Locally computed: +sha256 2f1e960d92ce3b3abd03d06dfec9637dfbd22febf107a536b44f7a47c60659f6 libpng-1.6.34.tar.xz +sha256 a247c24f82bacf0403fe2f3d5550493a91cdb575fe7036b764bda8cacf3efd9c LICENSE diff --git a/buildroot/package/libpng/libpng.mk b/buildroot/package/libpng/libpng.mk new file mode 100644 index 0000000..f8594c8 --- /dev/null +++ b/buildroot/package/libpng/libpng.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libpng +# +################################################################################ + +LIBPNG_VERSION = 1.6.34 +LIBPNG_SERIES = 16 +LIBPNG_SOURCE = libpng-$(LIBPNG_VERSION).tar.xz +LIBPNG_SITE = http://downloads.sourceforge.net/project/libpng/libpng${LIBPNG_SERIES}/$(LIBPNG_VERSION) +LIBPNG_LICENSE = Libpng +LIBPNG_LICENSE_FILES = LICENSE +LIBPNG_INSTALL_STAGING = YES +LIBPNG_DEPENDENCIES = host-pkgconf zlib +HOST_LIBPNG_DEPENDENCIES = host-pkgconf host-zlib +LIBPNG_CONFIG_SCRIPTS = libpng$(LIBPNG_SERIES)-config libpng-config + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +LIBPNG_CONF_OPTS += --enable-arm-neon +else +LIBPNG_CONF_OPTS += --disable-arm-neon +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE2),y) +LIBPNG_CONF_OPTS += --enable-intel-sse +else +LIBPNG_CONF_OPTS += --disable-intel-sse +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libpqxx/0001-include-sys-time.h-outside-fallback-select-55.patch b/buildroot/package/libpqxx/0001-include-sys-time.h-outside-fallback-select-55.patch new file mode 100644 index 0000000..4c63575 --- /dev/null +++ b/buildroot/package/libpqxx/0001-include-sys-time.h-outside-fallback-select-55.patch @@ -0,0 +1,119 @@ +From 44970d7331e4f369e160af0135a2d1fc16f27a21 Mon Sep 17 00:00:00 2001 +From: jdknight-rockwellcollins +Date: Mon, 15 Jan 2018 12:41:25 -0500 +Subject: [PATCH] include sys/time.h outside fallback select (#55) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The implementation of 'wait_fd' (inside 'connection_base.cxx') always +relies on the existence of the 'timeval' structure. In Linux, this +structure is provided by the header 'sys/time.h'. If polling or select +capabilities are detected, the structure is never included into the +source and will result in a compilation error (GCC 7.x): + + connection_base.cxx:1153:28: error: ‘{anonymous}::tv_milliseconds’ declared as an ‘inline’ variable + inline int tv_milliseconds(timeval *tv = nullptr) + ^~~~~~~ + ... + +The following moves the 'HAVE_SYS_TIME_H' check outside the +select-fallback case so that the header can be included no matter the +event-function feature is used. + +Signed-off-by: James Knight +--- + configure | 28 ++++++++++++---------------- + configure.ac | 6 +----- + src/connection_base.cxx | 2 +- + 3 files changed, 14 insertions(+), 22 deletions(-) + +diff --git a/configure b/configure +index 7d6d96a98e0fcb7dde1e05adf034afe624ada6d6..dd2a33cb54dba5d3223fc2b4c8d03be7c8abde4e 100755 +--- a/configure ++++ b/configure +@@ -17285,22 +17285,6 @@ fi + done + + +-if test "$select_h" != "yes" +-then +-for ac_header in sys/time.h +-do : +- ac_fn_cxx_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +-if test "x$ac_cv_header_sys_time_h" = xyes; then : +- cat >>confdefs.h <<_ACEOF +-#define HAVE_SYS_TIME_H 1 +-_ACEOF +- +-fi +- +-done +- +-fi +- + # Some systems keep select() in a separate library which is not linked by + # default. See if we need one of those. + socklibok=no +@@ -17419,6 +17403,18 @@ fi + + fi # No poll() + ++for ac_header in sys/time.h ++do : ++ ac_fn_cxx_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" ++if test "x$ac_cv_header_sys_time_h" = xyes; then : ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_SYS_TIME_H 1 ++_ACEOF ++ ++fi ++ ++done ++ + + # Add options to compiler command line, if compiler accepts them. + add_compiler_opts_if_ok() { +diff --git a/configure.ac b/configure.ac +index 8977c3d3900a5de66b580365d8fe7d133cd1042d..6649f7fa0ed0572489a0db09517c659012ce707c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -117,11 +117,6 @@ then + select_h=no + AC_CHECK_HEADERS([sys/select.h], [select_h=yes]) + +-if test "$select_h" != "yes" +-then +-AC_CHECK_HEADERS([sys/time.h]) +-fi +- + # Some systems keep select() in a separate library which is not linked by + # default. See if we need one of those. + socklibok=no +@@ -150,6 +145,7 @@ fi + + fi # No poll() + ++AC_CHECK_HEADERS([sys/time.h]) + + # Add options to compiler command line, if compiler accepts them. + add_compiler_opts_if_ok() { +diff --git a/src/connection_base.cxx b/src/connection_base.cxx +index 37ed7728ffd02e1fded3b5d64d6fb2d5fd74d5ed..0ec55bc5bd761690f66b67396cfbf3e3c56ba618 100644 +--- a/src/connection_base.cxx ++++ b/src/connection_base.cxx +@@ -38,10 +38,10 @@ + #if defined(HAVE_UNISTD_H) + #include + #endif ++#endif + #if defined(HAVE_SYS_TIME_H) + #include + #endif +-#endif + + #include "libpq-fe.h" + +-- +1.8.3.msysgit.0 + diff --git a/buildroot/package/libpqxx/Config.in b/buildroot/package/libpqxx/Config.in new file mode 100644 index 0000000..9553d79 --- /dev/null +++ b/buildroot/package/libpqxx/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBPQXX + bool "libpqxx" + depends on BR2_PACKAGE_POSTGRESQL + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + help + libpqxx is the official C++ client API for PostgreSQL, the + enterprise-strength open-source relational database. + + http://pqxx.org/development/libpqxx/ + +comment "libpqxx needs toolchain w/ C++, gcc >= 4.8, threads" + depends on BR2_PACKAGE_POSTGRESQL + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libpqxx/libpqxx.hash b/buildroot/package/libpqxx/libpqxx.hash new file mode 100644 index 0000000..372be60 --- /dev/null +++ b/buildroot/package/libpqxx/libpqxx.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 81cac92458efd799fadb0374107464320d93eba71de05aedf21afb9c8dda7c3a libpqxx-6.0.0.tar.gz +sha256 9e1c78fa302e4e9738bf3315b130429035c03fcb0f046531ccd977cb474f6b31 COPYING diff --git a/buildroot/package/libpqxx/libpqxx.mk b/buildroot/package/libpqxx/libpqxx.mk new file mode 100644 index 0000000..ccafa9c --- /dev/null +++ b/buildroot/package/libpqxx/libpqxx.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libpqxx +# +################################################################################ + +LIBPQXX_VERSION = 6.0.0 +LIBPQXX_SITE = $(call github,jtv,libpqxx,$(LIBPQXX_VERSION)) +LIBPQXX_INSTALL_STAGING = YES +LIBPQXX_DEPENDENCIES = postgresql +LIBPQXX_LICENSE = BSD-3-Clause +LIBPQXX_LICENSE_FILES = COPYING + +LIBPQXX_CONF_ENV += ac_cv_path_PG_CONFIG=$(STAGING_DIR)/usr/bin/pg_config + +$(eval $(autotools-package)) diff --git a/buildroot/package/libpri/Config.in b/buildroot/package/libpri/Config.in new file mode 100644 index 0000000..de2d96f --- /dev/null +++ b/buildroot/package/libpri/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBPRI + bool "libpri" + depends on BR2_USE_MMU # fork() + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_DAHDI_LINUX + select BR2_PACKAGE_DAHDI_TOOLS + help + libpri is an open source library that encapsulates the + protocols used to communicate over ISDN Primary Rate + Interfaces (T1, E1, J1). + + http://www.asterisk.org/downloads/libpri + +comment "libpri needs a kernel to be built" + depends on BR2_USE_MMU + depends on !BR2_LINUX_KERNEL + +comment "libpri needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libpri/libpri.hash b/buildroot/package/libpri/libpri.hash new file mode 100644 index 0000000..47c4a00 --- /dev/null +++ b/buildroot/package/libpri/libpri.hash @@ -0,0 +1,7 @@ +# sha1 and sha256 from http://downloads.asterisk.org/pub/telephony/libpri/releases/ +sha1 63536f3300fb007dfd5fe8064406992ca938bd9a libpri-1.5.0.tar.gz +sha256 ee224bc4aa65c54546bd09675c3f0b71817ce9e277332bce86989d8dcd556a24 libpri-1.5.0.tar.gz + +# License files, locally calculated +sha256 fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7 LICENSE +sha256 53b8b3aea4faec23fd9dbd4936044aca80c9b00343e6e58ee3303cec19512b33 README diff --git a/buildroot/package/libpri/libpri.mk b/buildroot/package/libpri/libpri.mk new file mode 100644 index 0000000..2e2d0e8 --- /dev/null +++ b/buildroot/package/libpri/libpri.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# libpri +# +################################################################################ + +LIBPRI_VERSION = 1.5.0 +LIBPRI_SITE = http://downloads.asterisk.org/pub/telephony/libpri/releases + +LIBPRI_LICENSE = GPL-2.0 with OpenH323 exception +LIBPRI_LICENSE_FILES = LICENSE README + +LIBPRI_DEPENDENCIES = dahdi-linux dahdi-tools +LIBPRI_INSTALL_STAGING = YES + +# The Makefile default rule will always try to generate both libraries. +# So we need to explicitly build only what we can. +ifneq ($(BR2_SHARED_LIBS),y) +LIBPRI_LIBS = libpri.a +define LIBPRI_INSTALL_A + $(INSTALL) -D -m 0644 $(@D)/libpri.a $(1)/usr/lib/libpri.a +endef +endif + +ifneq ($(BR2_STATIC_LIBS),y) +LIBPRI_LIBS += libpri.so.1.4 +define LIBPRI_INSTALL_SO + $(INSTALL) -D -m 0644 $(@D)/libpri.so.1.4 $(1)/usr/lib/libpri.so.1.4 + ln -sf libpri.so.1.4 $(1)/usr/lib/libpri.so +endef +endif + +LIBPRI_UTILS = pridump pritest rosetest testprilib + +define LIBPRI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(LIBPRI_LIBS) $(LIBPRI_UTILS) +endef + +define LIBPRI_INSTALL_STAGING_CMDS + $(call LIBPRI_INSTALL_A,$(STAGING_DIR)) + $(call LIBPRI_INSTALL_SO,$(STAGING_DIR)) + $(INSTALL) -D -m 0644 $(@D)/libpri.h $(STAGING_DIR)/usr/include/libpri.h +endef + +define LIBPRI_INSTALL_TARGET_CMDS + $(foreach u,$(LIBPRI_UTILS),\ + $(INSTALL) -D -m 0755 $(@D)/$(u) $(TARGET_DIR)/usr/sbin/$(u)$(sep)) + $(call LIBPRI_INSTALL_SO,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libpthread-stubs/Config.in b/buildroot/package/libpthread-stubs/Config.in new file mode 100644 index 0000000..a4ce1cb --- /dev/null +++ b/buildroot/package/libpthread-stubs/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBPTHREAD_STUBS + bool "libpthread-stubs" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + This library provides weak aliases for pthread functions not + provided in libc or otherwise available by default. + + http://xcb.freedesktop.org/ + +comment "libpthread-stubs needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libpthread-stubs/libpthread-stubs.hash b/buildroot/package/libpthread-stubs/libpthread-stubs.hash new file mode 100644 index 0000000..b6e38e8 --- /dev/null +++ b/buildroot/package/libpthread-stubs/libpthread-stubs.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 e4d05911a3165d3b18321cc067fdd2f023f06436e391c6a28dff618a78d2e733 libpthread-stubs-0.4.tar.bz2 diff --git a/buildroot/package/libpthread-stubs/libpthread-stubs.mk b/buildroot/package/libpthread-stubs/libpthread-stubs.mk new file mode 100644 index 0000000..9cf6970 --- /dev/null +++ b/buildroot/package/libpthread-stubs/libpthread-stubs.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libpthread-stubs +# +################################################################################ + +LIBPTHREAD_STUBS_VERSION = 0.4 +LIBPTHREAD_STUBS_SOURCE = libpthread-stubs-$(LIBPTHREAD_STUBS_VERSION).tar.bz2 +LIBPTHREAD_STUBS_SITE = http://xcb.freedesktop.org/dist +LIBPTHREAD_STUBS_LICENSE = MIT +LIBPTHREAD_STUBS_LICENSE_FILES = COPYING + +LIBPTHREAD_STUBS_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +LIBPTHREAD_STUBS_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -pthread" +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libpthsem/0001-fix-build-on-linux-3.x-host.patch b/buildroot/package/libpthsem/0001-fix-build-on-linux-3.x-host.patch new file mode 100644 index 0000000..21fff4e --- /dev/null +++ b/buildroot/package/libpthsem/0001-fix-build-on-linux-3.x-host.patch @@ -0,0 +1,28 @@ +From 2d0450bfa3fb7003098da1a7fe24c3ae140912dc Mon Sep 17 00:00:00 2001 +From: Gregory Hermant +Date: Mon, 22 Oct 2012 15:11:53 +0200 +Subject: [PATCH] pthsem build on Linux 3.x host + + +Signed-off-by: Michael Markstaller +Signed-off-by: Gregory Hermant +--- + acinclude.m4 | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/acinclude.m4 b/acinclude.m4 +index 03b42de..fea9bc8 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -892,6 +892,8 @@ case $PLATFORM in + case "x`uname -r`" in + changequote(, )dnl + x2.[23456789]* ) ;; ++changequote(, )dnl ++ x3.* ) ;; + changequote([, ]) + * ) braindead=yes ;; + esac +-- +1.7.9.5 + diff --git a/buildroot/package/libpthsem/Config.in b/buildroot/package/libpthsem/Config.in new file mode 100644 index 0000000..c2856c5 --- /dev/null +++ b/buildroot/package/libpthsem/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBPTHSEM + bool "libpthsem" + depends on BR2_USE_MMU # fork() + help + GNU pth is a user mode multi threading library. pthsem is an + extend version, with support for semaphores added. + + http://www.auto.tuwien.ac.at/~mkoegler/pth/ + +if BR2_PACKAGE_LIBPTHSEM + +config BR2_PACKAGE_LIBPTHSEM_COMPAT + bool "libpth compatibility" + help + This option enables the compatibility with the original + libpth library. + +endif diff --git a/buildroot/package/libpthsem/libpthsem.hash b/buildroot/package/libpthsem/libpthsem.hash new file mode 100644 index 0000000..b6aa2b8 --- /dev/null +++ b/buildroot/package/libpthsem/libpthsem.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4024cafdd5d4bce2b1778a6be5491222c3f6e7ef1e43971264c451c0012c5c01 pthsem_2.0.8.tar.gz diff --git a/buildroot/package/libpthsem/libpthsem.mk b/buildroot/package/libpthsem/libpthsem.mk new file mode 100644 index 0000000..dfe25af --- /dev/null +++ b/buildroot/package/libpthsem/libpthsem.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# libpthsem +# +################################################################################ + +LIBPTHSEM_VERSION = 2.0.8 +LIBPTHSEM_SOURCE = pthsem_$(LIBPTHSEM_VERSION).tar.gz +LIBPTHSEM_SITE = http://www.auto.tuwien.ac.at/~mkoegler/pth +LIBPTHSEM_LICENSE = LGPL-2.1+ +LIBPTHSEM_LICENSE_FILES = COPYING +LIBPTHSEM_AUTORECONF = YES +LIBPTHSEM_INSTALL_STAGING = YES +LIBPTHSEM_CONFIG_SCRIPTS = pthsem-config + +# Force the setjmp/longjmp detection, because the test being done in +# the AC_CHECK_SJLJ macro is not cross-compilation safe: it checks the +# running kernel with 'uname -r', and checks the C library version by +# looking at /usr/include/features.h. In terms of kernel version, it +# assumes any version later than 2.2.x is fine, except that it doesn't +# recognize 4.x as a valid kernel version, recognizing such systems as +# "braindead" and therefore falling back to the 'sjljlx' value for +# ac_cv_check_sjlj. In terms of C library version, it wants +# __GLIBC_MINOR to be at least 1. Since both conditions are true for +# all Buildroot systems, we can simply force the setjmp/longjmp +# detection to ssjlj. +LIBPTHSEM_CONF_ENV += \ + ac_cv_check_sjlj=ssjlj + +ifeq ($(BR2_PACKAGE_LIBPTHSEM_COMPAT),y) +LIBPTHSEM_CONF_OPTS += --enable-compat +LIBPTHSEM_CONFIG_SCRIPTS += pth-config +else +LIBPTHSEM_CONF_OPTS += --disable-compat +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libpwquality/0001-Fix-build-with-disable-nls-on-platforms-without-libi.patch b/buildroot/package/libpwquality/0001-Fix-build-with-disable-nls-on-platforms-without-libi.patch new file mode 100644 index 0000000..3bae15c --- /dev/null +++ b/buildroot/package/libpwquality/0001-Fix-build-with-disable-nls-on-platforms-without-libi.patch @@ -0,0 +1,47 @@ +From fd1694c9d85666a39fe39e76518581b1ccd5a6c5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20S=C3=B8rensen?= +Date: Thu, 2 Feb 2017 11:16:49 +0100 +Subject: [PATCH] Fix build with --disable-nls on platforms without libintl + included in libc. + +Signed-off-by: Stefan Sørensen + +--- + +Status: accepted upstream, not yet released. + +diff --git a/src/pwmake.c b/src/pwmake.c +index 5b8cfb8..81f7cd3 100644 +--- a/src/pwmake.c ++++ b/src/pwmake.c +@@ -33,9 +33,11 @@ main(int argc, char *argv[]) + int bits; + void *auxerror; + ++#ifdef ENABLE_NLS + setlocale(LC_ALL, ""); + bindtextdomain("libpwquality", "/usr/share/locale"); + textdomain("libpwquality"); ++#endif + + if (argc != 2) { + usage(basename(argv[0])); +diff --git a/src/pwscore.c b/src/pwscore.c +index 219a175..24c13f2 100644 +--- a/src/pwscore.c ++++ b/src/pwscore.c +@@ -34,9 +34,11 @@ main(int argc, char *argv[]) + size_t len; + char *user = NULL; + ++#ifdef ENABLE_NLS + setlocale(LC_ALL, ""); + bindtextdomain("libpwquality", "/usr/share/locale"); + textdomain("libpwquality"); ++#endif + + if (argc > 2) { + usage(basename(argv[0])); +-- +2.9.3 + diff --git a/buildroot/package/libpwquality/0002-Fix-memory-leak-in-settings-when-using-bad-word-list.patch b/buildroot/package/libpwquality/0002-Fix-memory-leak-in-settings-when-using-bad-word-list.patch new file mode 100644 index 0000000..1b4f242 --- /dev/null +++ b/buildroot/package/libpwquality/0002-Fix-memory-leak-in-settings-when-using-bad-word-list.patch @@ -0,0 +1,26 @@ +From b1f2f1f71894fa0af92041fb4d5b6146101d63e5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20S=C3=B8rensen?= +Date: Thu, 2 Feb 2017 11:17:26 +0100 +Subject: [PATCH] Fix memory leak in settings when using bad word list. + +Signed-off-by: Stefan Sørensen + +--- + +Status: accepted upstream, not yet released. + +diff --git a/src/settings.c b/src/settings.c +index 5c38b30..4b026b1 100644 +--- a/src/settings.c ++++ b/src/settings.c +@@ -46,6 +46,7 @@ pwquality_free_settings(pwquality_settings_t *pwq) + { + if (pwq) { + free(pwq->dict_path); ++ free(pwq->bad_words); + free(pwq); + } + } +-- +2.9.3 + diff --git a/buildroot/package/libpwquality/Config.in b/buildroot/package/libpwquality/Config.in new file mode 100644 index 0000000..23e1515 --- /dev/null +++ b/buildroot/package/libpwquality/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBPWQUALITY + bool "libpwquality" + select BR2_PACKAGE_CRACKLIB + help + This is a library for password quality checks and generation + of random passwords that pass the checks. This library uses + the cracklib and cracklib dictionaries to perform some of + the checks. + + https://github.com/libpwquality/libpwquality + +if BR2_PACKAGE_LIBPWQUALITY + +config BR2_PACKAGE_LIBPWQUALITY_TOOLS + bool "install tools" + help + Install libpwquality command line tools generating/checking + passwords. + +endif diff --git a/buildroot/package/libpwquality/libpwquality.hash b/buildroot/package/libpwquality/libpwquality.hash new file mode 100644 index 0000000..0e3f9e3 --- /dev/null +++ b/buildroot/package/libpwquality/libpwquality.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 74d2ea90e103323c1f2d6a6cc9617cdae6877573eddb31aaf31a40f354cc2d2a libpwquality-1.3.0.tar.bz2 diff --git a/buildroot/package/libpwquality/libpwquality.mk b/buildroot/package/libpwquality/libpwquality.mk new file mode 100644 index 0000000..697af0b --- /dev/null +++ b/buildroot/package/libpwquality/libpwquality.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# libpwquality +# +################################################################################ + +LIBPWQUALITY_VERSION = 1.3.0 +LIBPWQUALITY_SOURCE = libpwquality-$(LIBPWQUALITY_VERSION).tar.bz2 +LIBPWQUALITY_SITE = https://github.com/libpwquality/libpwquality/releases/download/libpwquality-$(LIBPWQUALITY_VERSION) +LIBPWQUALITY_LICENSE = BSD-3-Clause or GPL-2.0+ +LIBPWQUALITY_INSTALL_STAGING = YES +LIBPWQUALITY_DEPENDENCIES = cracklib +LIBPWQUALITY_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_PYTHON),y) +LIBPWQUALITY_CONF_OPTS += --enable-python-bindings +LIBPWQUALITY_DEPENDENCIES += python +LIBPWQUALITY_MAKE_ENV += $(PKG_PYTHON_DISTUTILS_ENV) +else +LIBPWQUALITY_CONF_OPTS += --disable-python-bindings +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +LIBPWQUALITY_CONF_OPTS += --enable-pam +LIBPWQUALITY_DEPENDENCIES += linux-pam +else +LIBPWQUALITY_CONF_OPTS += --disable-pam +endif + +# Static link with cracklib requires -lz if zlib is enabled +ifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_ZLIB),yy) +LIBPWQUALITY_CONF_ENV += LIBS="-lz" +endif + +ifeq ($(BR2_PACKAGE_LIBPWQUALITY_TOOLS),) +define LIBPWQUALITY_REMOVE_TOOLS + rm -f $(TARGET_DIR)/usr/bin/pwmake + rm -f $(TARGET_DIR)/usr/bin/pwscore +endef + +LIBPWQUALITY_POST_INSTALL_TARGET_HOOKS += LIBPWQUALITY_REMOVE_TOOLS +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libqmi/0001-musl-compat-canonicalize_file_name.patch b/buildroot/package/libqmi/0001-musl-compat-canonicalize_file_name.patch new file mode 100644 index 0000000..3ae1c2e --- /dev/null +++ b/buildroot/package/libqmi/0001-musl-compat-canonicalize_file_name.patch @@ -0,0 +1,61 @@ +From 8f6181b6f8dd82aa1ab1288cc7f2fd05d4a2519f Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Mon, 1 May 2017 19:55:07 -0500 +Subject: [PATCH] musl compat canonicalize_file_name() + +Adds an equivalent of canonicalize_file_name +using realpath(). + +Bug report (origin of this patch): +https://bugs.freedesktop.org/show_bug.cgi?id=99944 + +Bug report has been updated with suggestion to not use inline. + +Signed-off-by: Matthew Weber +--- + configure.ac | 2 ++ + src/libqmi-glib/qmi-utils.c | 15 +++++++++++++++ + 2 files changed, 17 insertions(+) + +diff --git a/configure.ac b/configure.ac +index c56fa3e..d835db4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -80,6 +80,8 @@ AC_SUBST(GLIB_LIBS) + GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` + AC_SUBST(GLIB_MKENUMS) + ++AC_CHECK_FUNCS([canonicalize_file_name]) ++ + dnl qmi-firmware-update is optional, enabled by default + AC_ARG_ENABLE([firmware-update], + AS_HELP_STRING([--enable-firmware-update], +diff --git a/src/libqmi-glib/qmi-utils.c b/src/libqmi-glib/qmi-utils.c +index 29e5f22..26aff9e 100644 +--- a/src/libqmi-glib/qmi-utils.c ++++ b/src/libqmi-glib/qmi-utils.c +@@ -34,6 +34,21 @@ + #include "qmi-utils.h" + #include "qmi-error-types.h" + ++#ifndef HAVE_CANONICALIZE_FILE_NAME ++#include ++static char * canonicalize_file_name(const char *path) ++{ ++ char buf[PATH_MAX] = { }; ++ ++ snprintf(buf, sizeof(buf) - 1, "%s", path); ++ ++ if (!realpath(path, buf)) ++ return NULL; ++ ++ return strdup(buf); ++} ++#endif ++ + /** + * SECTION:qmi-utils + * @title: Common utilities +-- +1.9.1 + diff --git a/buildroot/package/libqmi/Config.in b/buildroot/package/libqmi/Config.in new file mode 100644 index 0000000..f1d111b --- /dev/null +++ b/buildroot/package/libqmi/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBQMI + bool "libqmi" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + libqmi is a glib-based library for talking to WWAN modems and + devices which speak the Qualcomm MSM Interface (QMI) protocol. + + http://www.freedesktop.org/wiki/Software/libqmi/ + +comment "libqmi needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libqmi/libqmi.hash b/buildroot/package/libqmi/libqmi.hash new file mode 100644 index 0000000..1c54231 --- /dev/null +++ b/buildroot/package/libqmi/libqmi.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 a0a42c55935e75a630208e2f70840bd4407f56fe1c5258f5b0f6c0aaedf88cec libqmi-1.18.0.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/buildroot/package/libqmi/libqmi.mk b/buildroot/package/libqmi/libqmi.mk new file mode 100644 index 0000000..0887564 --- /dev/null +++ b/buildroot/package/libqmi/libqmi.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# libqmi +# +################################################################################ + +LIBQMI_VERSION = 1.18.0 +LIBQMI_SITE = http://www.freedesktop.org/software/libqmi +LIBQMI_SOURCE = libqmi-$(LIBQMI_VERSION).tar.xz +LIBQMI_LICENSE = LGPL-2.0+ (library), GPL-2.0+ (programs) +LIBQMI_LICENSE_FILES = COPYING COPYING.LIB +LIBQMI_INSTALL_STAGING = YES +# 0001-musl-compat-canonicalize_file_name.patch +LIBQMI_AUTORECONF = YES + +LIBQMI_DEPENDENCIES = libglib2 + +# we don't want -Werror +LIBQMI_CONF_OPTS = --enable-more-warnings=no + +# if libgudev available, request udev support for a better +# qmi-firmware-update experience +ifeq ($(BR2_PACKAGE_LIBGUDEV),y) +LIBQMI_DEPENDENCIES += libgudev +LIBQMI_CONF_OPTS += --with-udev +else +LIBQMI_CONF_OPTS += --without-udev +endif + +# if libmbim available, request QMI-over-MBIM support +ifeq ($(BR2_PACKAGE_LIBMBIM),y) +LIBQMI_DEPENDENCIES += libmbim +LIBQMI_CONF_OPTS += --enable-mbim-qmux +else +LIBQMI_CONF_OPTS += --disable-mbim-qmux +endif + +# if ModemManager available, enable MM runtime check in +# qmi-firmware-update (note that we don't need to build-depend on +# anything else) +ifeq ($(BR2_PACKAGE_MODEM_MANAGER),y) +LIBQMI_CONF_OPTS += --enable-mm-runtime-check +else +LIBQMI_CONF_OPTS += --disable-mm-runtime-check +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libqrencode/Config.in b/buildroot/package/libqrencode/Config.in new file mode 100644 index 0000000..b866626 --- /dev/null +++ b/buildroot/package/libqrencode/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBQRENCODE + bool "libqrencode" + help + libqrencode is a C library for encoding data in a QR Code + symbol, a kind of 2D symbology that can be scanned by handy + terminals such as a mobile phone with CCD. The capacity of + QR Code is up to 7000 digits or 4000 characters, and is + highly robust. + + http://fukuchi.org/works/qrencode/index.html + +if BR2_PACKAGE_LIBQRENCODE + +config BR2_PACKAGE_LIBQRENCODE_TOOLS + bool "libqrencode tools" + select BR2_PACKAGE_LIBPNG + help + Build command-line tools + +endif #BR2_PACKAGE_LIBQRENCODE diff --git a/buildroot/package/libqrencode/libqrencode.hash b/buildroot/package/libqrencode/libqrencode.hash new file mode 100644 index 0000000..8c94ccd --- /dev/null +++ b/buildroot/package/libqrencode/libqrencode.hash @@ -0,0 +1,2 @@ +# From http://fukuchi.org/works/qrencode/qrencode-3.4.2.tar.gz.sha1 +sha1 7daaad61f333ff6cdabfb0d925c3ab668d16dee2 qrencode-3.4.2.tar.gz diff --git a/buildroot/package/libqrencode/libqrencode.mk b/buildroot/package/libqrencode/libqrencode.mk new file mode 100644 index 0000000..8f17b89 --- /dev/null +++ b/buildroot/package/libqrencode/libqrencode.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libqrencode +# +################################################################################ + +LIBQRENCODE_VERSION = 3.4.2 +LIBQRENCODE_SOURCE = qrencode-$(LIBQRENCODE_VERSION).tar.gz +LIBQRENCODE_SITE = http://fukuchi.org/works/qrencode +LIBQRENCODE_DEPENDENCIES = host-pkgconf +LIBQRENCODE_INSTALL_STAGING = YES +LIBQRENCODE_LICENSE = LGPL-2.1+ +LIBQRENCODE_LICENSE_FILES = COPYING + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBQRENCODE_CONF_ENV += LIBS='-pthread' +else +LIBQRENCODE_CONF_OPTS += --disable-thread-safety +endif + +ifeq ($(BR2_PACKAGE_LIBQRENCODE_TOOLS),y) +LIBQRENCODE_CONF_OPTS += --with-tools=yes +LIBQRENCODE_DEPENDENCIES += libpng +else +LIBQRENCODE_CONF_OPTS += --with-tools=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libraw/0001-Remove-paths-which-break-cross-compilation.patch b/buildroot/package/libraw/0001-Remove-paths-which-break-cross-compilation.patch new file mode 100644 index 0000000..0f0eee1 --- /dev/null +++ b/buildroot/package/libraw/0001-Remove-paths-which-break-cross-compilation.patch @@ -0,0 +1,29 @@ +From 1f9c2ebc9c65e8ce7fdbece55d578cf00c6c4b46 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 30 Jan 2016 17:06:04 +0100 +Subject: [PATCH 1/1] Remove paths which break cross-compilation + +Patch sent upstream: https://github.com/LibRaw/LibRaw/pull/57 + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 9bb07b2..78064d9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -16,9 +16,6 @@ AC_SUBST(LIBTOOL_DEPS) + + # Config files to generate + +-CPPFLAGS="$CPPFLAGS -I/usr/local/include" +-LDFLAGS="$LDFLAGS -L/usr/local/lib" +- + AC_CONFIG_FILES([ + Makefile + libraw.pc +-- +2.7.0.rc3 + diff --git a/buildroot/package/libraw/0002-libraw_x3f.cpp-remove-Byte-order-mark.patch b/buildroot/package/libraw/0002-libraw_x3f.cpp-remove-Byte-order-mark.patch new file mode 100644 index 0000000..24f0eb1 --- /dev/null +++ b/buildroot/package/libraw/0002-libraw_x3f.cpp-remove-Byte-order-mark.patch @@ -0,0 +1,39 @@ +From 0f2507bfe30f2df10dfc38b94cdfde5594902b8e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 12 Feb 2016 10:00:12 +0100 +Subject: [PATCH] libraw_x3f.cpp: remove Byte order mark + +The U+FEFF character, which is a Byte order mark, at the beginning of +libraw_x3f.cpp, prevents gcc 4.3.x from building this file: + +src/../internal/libraw_x3f.cpp:1: error: stray '\357' in program +src/../internal/libraw_x3f.cpp:1: error: stray '\273' in program +src/../internal/libraw_x3f.cpp:1: error: stray '\277' in program + +Support in gcc for the Byte order mark has been added in gcc +4.4.x. Since anyway this Byte order mark is not useful, we simply +remove it. + +See https://en.wikipedia.org/wiki/Byte_order_mark for more details. + +Signed-off-by: Thomas Petazzoni +--- +Submitted upstream at: +https://github.com/LibRaw/LibRaw/pull/61 + + internal/libraw_x3f.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/internal/libraw_x3f.cpp b/internal/libraw_x3f.cpp +index dbf28c1..67047ab 100644 +--- a/internal/libraw_x3f.cpp ++++ b/internal/libraw_x3f.cpp +@@ -1,4 +1,4 @@ +-/* Library for accessing X3F Files ++/* Library for accessing X3F Files + ---------------------------------------------------------------- + BSD-style License + ---------------------------------------------------------------- +-- +2.6.4 + diff --git a/buildroot/package/libraw/Config.in b/buildroot/package/libraw/Config.in new file mode 100644 index 0000000..de763cd --- /dev/null +++ b/buildroot/package/libraw/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBRAW + bool "libraw" + depends on BR2_INSTALL_LIBSTDCPP + help + libraw is a raw image manipulation library + + http://www.libraw.org/ + +comment "libraw needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/libraw/libraw.hash b/buildroot/package/libraw/libraw.hash new file mode 100644 index 0000000..2979425 --- /dev/null +++ b/buildroot/package/libraw/libraw.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e599651a4cc37e00cfc2d2b56be87c3a4e4dae2c360b680fe9ab3f93d07cdea1 LibRaw-0.17.1.tar.gz +sha256 3c09bc4d70268e78798696c5ea3a8cc65fe4e161811d5321fc3ef2ca012d8fd1 0001-Fix_gcc6_narrowing_conversion.patch?id=d890937aaca6359df45a66b35e547c94ca564823 diff --git a/buildroot/package/libraw/libraw.mk b/buildroot/package/libraw/libraw.mk new file mode 100644 index 0000000..589ff89 --- /dev/null +++ b/buildroot/package/libraw/libraw.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# libraw +# +################################################################################ + +LIBRAW_VERSION = 0.17.1 +LIBRAW_SOURCE = LibRaw-$(LIBRAW_VERSION).tar.gz +LIBRAW_SITE = http://www.libraw.org/data +LIBRAW_PATCH = \ + https://anonscm.debian.org/cgit/pkg-phototools/libraw.git/plain/debian/patches/0001-Fix_gcc6_narrowing_conversion.patch?id=d890937aaca6359df45a66b35e547c94ca564823 + +LIBRAW_INSTALL_STAGING = YES +# we patch configure.ac +LIBRAW_AUTORECONF = YES +LIBRAW_CONF_OPTS += \ + --disable-examples \ + --disable-openmp \ + --disable-demosaic-pack-gpl2 \ + --disable-demosaic-pack-gpl3 +LIBRAW_LICENSE = LGPL-2.1 or CDDL-1.0 or LibRaw Software License 27032010 +LIBRAW_LICENSE_FILES = LICENSE.LGPL LICENSE.CDDL LICENSE.LibRaw.pdf README +LIBRAW_DEPENDENCIES = host-pkgconf +LIBRAW_CXXFLAGS = $(TARGET_CXXFLAGS) +LIBRAW_CONF_ENV = CXXFLAGS="$(LIBRAW_CXXFLAGS)" + +ifeq ($(BR2_PACKAGE_JASPER),y) +LIBRAW_CONF_OPTS += --enable-jasper +LIBRAW_DEPENDENCIES += jasper +# glibc prior to 2.18 only defines constants such as SIZE_MAX or +# INT_FAST32_MAX for C++ code if __STDC_LIMIT_MACROS is defined +LIBRAW_CXXFLAGS += -D__STDC_LIMIT_MACROS +else +LIBRAW_CONF_OPTS += --disable-jasper +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBRAW_CONF_OPTS += --enable-jpeg +LIBRAW_DEPENDENCIES += jpeg +else +LIBRAW_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +LIBRAW_CONF_OPTS += --enable-lcms +LIBRAW_DEPENDENCIES += lcms2 host-pkgconf +else +LIBRAW_CONF_OPTS += --disable-lcms +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libraw1394/0001-testlibraw-build-the-CLOCK_MONOTONIC_RAW-test-condit.patch b/buildroot/package/libraw1394/0001-testlibraw-build-the-CLOCK_MONOTONIC_RAW-test-condit.patch new file mode 100644 index 0000000..b87ef71 --- /dev/null +++ b/buildroot/package/libraw1394/0001-testlibraw-build-the-CLOCK_MONOTONIC_RAW-test-condit.patch @@ -0,0 +1,38 @@ +From 94c66ade15d7fc468b52c72dfe76a8c10b1910a7 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 12 Feb 2016 10:13:45 +0100 +Subject: [PATCH] testlibraw: build the CLOCK_MONOTONIC_RAW test conditionally + +CLOCK_MONOTONIC_RAW is a somewhat recent addition, and some older +toolchains/kernels may not have the support for it. Therefore, we +build the part of the test that uses CLOCK_MONOTONIC_RAW only when +this definition is available. + +Signed-off-by: Thomas Petazzoni +--- + tools/testlibraw.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tools/testlibraw.c b/tools/testlibraw.c +index d8a0702..ae37157 100644 +--- a/tools/testlibraw.c ++++ b/tools/testlibraw.c +@@ -211,6 +211,7 @@ read_cycle_timer(raw1394handle_t handle) + printf(" local time from CLOCK_MONOTONIC: %lld us\n", + (unsigned long long)local_time); + ++#if defined(CLOCK_MONOTONIC_RAW) + retval = raw1394_read_cycle_timer_and_clock(handle, &ct, &local_time, + CLOCK_MONOTONIC_RAW); + if (retval < 0) { +@@ -221,6 +222,7 @@ read_cycle_timer(raw1394handle_t handle) + ct >> 25, (ct >> 12) & 0x1fff, ct & 0xfff); + printf(" local time from CLOCK_MONOTONIC_RAW: %lld us\n", + (unsigned long long)local_time); ++#endif + } + + int test_card(int card) +-- +2.6.4 + diff --git a/buildroot/package/libraw1394/Config.in b/buildroot/package/libraw1394/Config.in new file mode 100644 index 0000000..7a64959 --- /dev/null +++ b/buildroot/package/libraw1394/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBRAW1394 + bool "libraw1394" + help + libraw1394 provides direct access to the IEEE 1394 bus through + the Linux 1394 subsystem's raw1394 user space interface. + + http://sourceforge.net/projects/libraw1394/ diff --git a/buildroot/package/libraw1394/libraw1394.hash b/buildroot/package/libraw1394/libraw1394.hash new file mode 100644 index 0000000..b785995 --- /dev/null +++ b/buildroot/package/libraw1394/libraw1394.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/linux/libs/ieee1394/sha256sums.asc +sha256 1bab9780189f9d1eb4e973df12679c04f979c21e024240fc98e536ff5b680ee9 libraw1394-2.1.1.tar.xz +# Locally computed +sha256 39369c65fbed7fccc2e6d8e645f258f101c414107d67238f10996e6c2009f20d fix-types.patch diff --git a/buildroot/package/libraw1394/libraw1394.mk b/buildroot/package/libraw1394/libraw1394.mk new file mode 100644 index 0000000..73517ed --- /dev/null +++ b/buildroot/package/libraw1394/libraw1394.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libraw1394 +# +################################################################################ + +LIBRAW1394_VERSION = 2.1.1 +LIBRAW1394_SOURCE = libraw1394-$(LIBRAW1394_VERSION).tar.xz +LIBRAW1394_SITE = $(BR2_KERNEL_MIRROR)/linux/libs/ieee1394 +LIBRAW1394_PATCH = http://git.alpinelinux.org/cgit/aports/plain/main/libraw1394/fix-types.patch +LIBRAW1394_INSTALL_STAGING = YES +LIBRAW1394_LICENSE = LGPL-2.1+ +LIBRAW1394_LICENSE_FILES = COPYING.LIB + +$(eval $(autotools-package)) diff --git a/buildroot/package/libreplaygain/Config.in b/buildroot/package/libreplaygain/Config.in new file mode 100644 index 0000000..d0045b2 --- /dev/null +++ b/buildroot/package/libreplaygain/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBREPLAYGAIN + bool "libreplaygain" + help + Replay Gain library from Musepack + + http://www.musepack.net/ diff --git a/buildroot/package/libreplaygain/libreplaygain.hash b/buildroot/package/libreplaygain/libreplaygain.hash new file mode 100644 index 0000000..7a61098 --- /dev/null +++ b/buildroot/package/libreplaygain/libreplaygain.hash @@ -0,0 +1,4 @@ +# From https://www.musepack.net/index.php?pg=src +md5 e27b3b1249b7fbae92d656d9e3d26633 libreplaygain_r475.tar.gz +# Calculated based on the hash above +sha256 8258bf785547ac2cda43bb195e07522f0a3682f55abe97753c974609ec232482 libreplaygain_r475.tar.gz diff --git a/buildroot/package/libreplaygain/libreplaygain.mk b/buildroot/package/libreplaygain/libreplaygain.mk new file mode 100644 index 0000000..ff0950c --- /dev/null +++ b/buildroot/package/libreplaygain/libreplaygain.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libreplaygain +# +################################################################################ + +LIBREPLAYGAIN_VERSION = r475 +LIBREPLAYGAIN_SITE = http://files.musepack.net/source +LIBREPLAYGAIN_SOURCE = libreplaygain_$(LIBREPLAYGAIN_VERSION).tar.gz +# upstream doesn't ship configure +LIBREPLAYGAIN_AUTORECONF = YES +LIBREPLAYGAIN_INSTALL_STAGING = YES +LIBREPLAYGAIN_LICENSE = LGPL-2.1+ +LIBREPLAYGAIN_LICENSE_FILES = src/gain_analysis.c + +$(eval $(autotools-package)) diff --git a/buildroot/package/libressl/0001-remove-test-z-DESTDIR-from-ltmain.patch b/buildroot/package/libressl/0001-remove-test-z-DESTDIR-from-ltmain.patch new file mode 100644 index 0000000..901a48c --- /dev/null +++ b/buildroot/package/libressl/0001-remove-test-z-DESTDIR-from-ltmain.patch @@ -0,0 +1,28 @@ +From 4317d43d74996ad7ec3270b1e786e91a19312309 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Sat, 24 Jun 2017 13:08:57 -0400 +Subject: [PATCH] remove test -z "$DESTDIR" from ltmain.sh. + +Without this patch, buildroot-libtool-v2.4.patch will fail to apply. + +Signed-off-by: Adam Duskett +--- + ltmain.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ltmain.sh b/ltmain.sh +index 5d29bd6..6c90601 100644 +--- a/ltmain.sh ++++ b/ltmain.sh +@@ -6658,7 +6658,7 @@ func_mode_link () + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" +- test -z "$DESTDIR" && need_relink=yes ++ need_relink=yes + fi + ;; + esac +-- +2.9.4 + diff --git a/buildroot/package/libressl/0002-Fix-build-with-musl-and-older-Linux-kernel.patch b/buildroot/package/libressl/0002-Fix-build-with-musl-and-older-Linux-kernel.patch new file mode 100644 index 0000000..ddb9534 --- /dev/null +++ b/buildroot/package/libressl/0002-Fix-build-with-musl-and-older-Linux-kernel.patch @@ -0,0 +1,38 @@ +From: Baruch Siach +Date: Fri, 29 Sep 2017 10:06:52 +0300 +Subject: [PATCH] Fix build with musl and older Linux kernel + +The musl libc carries its own copy of Linux system calls. When building +with Linux headers older than v3.17, musl provides SYS_getrandom +definition, but not GRND_NONBLOCK. This causes build failure for +libressl and openntpd: + +getentropy_linux.c: In function 'getentropy_getrandom': +getentropy_linux.c:205:42: error: 'GRND_NONBLOCK' undeclared (first use in this function) + ret = syscall(SYS_getrandom, buf, len, GRND_NONBLOCK); + ^~~~~~~~~~~~~ + +Define GRND_NONBLOCK locally when its definition is missing to fix the +build. There should be no run-time effect. Older kernels return ENOSYS +for unsupported syscall(). + +[ from upstream pull request with file location changed ] +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/libressl-portable/openbsd/pull/82 + +diff -Nuar libressl-2.5.5-orig/crypto/compat/getentropy_linux.c libressl-2.5.5/crypto/compat/getentropy_linux.c +--- libressl-2.5.5-orig/crypto/compat/getentropy_linux.c 2017-07-09 13:59:48.000000000 +0300 ++++ libressl-2.5.5/crypto/compat/getentropy_linux.c 2017-09-29 10:03:32.447958829 +0300 +@@ -194,6 +194,11 @@ + } + + #ifdef SYS_getrandom ++ ++#ifndef GRND_NONBLOCK ++#define GRND_NONBLOCK 0x0001 ++#endif ++ + static int + getentropy_getrandom(void *buf, size_t len) + { diff --git a/buildroot/package/libressl/libressl.hash b/buildroot/package/libressl/libressl.hash new file mode 100644 index 0000000..555a75c --- /dev/null +++ b/buildroot/package/libressl/libressl.hash @@ -0,0 +1,2 @@ +# From https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/SHA256 +sha256 859edfc71019d27c448fe148e679afdd972a0baa91b21f02b2b2f5f8a84ddd2a libressl-2.6.5.tar.gz diff --git a/buildroot/package/libressl/libressl.mk b/buildroot/package/libressl/libressl.mk new file mode 100644 index 0000000..466b0b8 --- /dev/null +++ b/buildroot/package/libressl/libressl.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libressl +# +################################################################################ + +LIBRESSL_VERSION = 2.6.5 +LIBRESSL_SITE = https://ftp.openbsd.org/pub/OpenBSD/LibreSSL +LIBRESSL_LICENSE = ISC (new additions), OpenSSL or SSLeay (original OpenSSL code) +LIBRESSL_LICENSE_FILES = COPYING +LIBRESSL_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_LIBRESSL_BIN),) +define LIBRESSL_REMOVE_BIN + $(RM) -f $(TARGET_DIR)/usr/bin/openssl +endef +LIBRESSL_POST_INSTALL_TARGET_HOOKS += LIBRESSL_REMOVE_BIN +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libroxml/Config.in b/buildroot/package/libroxml/Config.in new file mode 100644 index 0000000..2fcf2f2 --- /dev/null +++ b/buildroot/package/libroxml/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBROXML + bool "roxml" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libroxml is a light and powerful xml parsing library with + xpath handling. Roxml is a binary using libroxml to explore + xml file from shell scripts. + + http://www.libroxml.net + +comment "libroxml needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libroxml/libroxml.hash b/buildroot/package/libroxml/libroxml.hash new file mode 100644 index 0000000..32482e6 --- /dev/null +++ b/buildroot/package/libroxml/libroxml.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1da8f20b530eba4409f2b217587d2f1281ff5d9ba45b24aeac71b94c6c621b78 libroxml-2.3.0.tar.gz diff --git a/buildroot/package/libroxml/libroxml.mk b/buildroot/package/libroxml/libroxml.mk new file mode 100644 index 0000000..5582b38 --- /dev/null +++ b/buildroot/package/libroxml/libroxml.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libroxml +# +################################################################################ + +LIBROXML_VERSION = 2.3.0 +LIBROXML_SITE = http://download.libroxml.net/pool/v2.x +LIBROXML_INSTALL_STAGING = YES +LIBROXML_LICENSE = LGPL-2.1+ with static link exception +LIBROXML_LICENSE_FILES = License.txt + +LIBROXML_CONF_OPTS = --disable-silent-rules + +# libroxml forgets to compile/link with -pthread, even though it uses +# thread functions breaking static linking +LIBROXML_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -pthread" LIBS="-pthread" + +$(eval $(autotools-package)) diff --git a/buildroot/package/librsvg/Config.in b/buildroot/package/librsvg/Config.in new file mode 100644 index 0000000..ffb0287 --- /dev/null +++ b/buildroot/package/librsvg/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBRSVG + bool "librsvg" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_INSTALL_LIBSTDCPP # pango + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_GDK_PIXBUF + select BR2_PACKAGE_LIBCROCO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_PANGO + help + The rsvg library is an efficient renderer for Scalable + Vector Graphics (SVG) pictures. + + https://wiki.gnome.org/Projects/LibRsvg + +comment "librsvg needs a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/librsvg/librsvg.hash b/buildroot/package/librsvg/librsvg.hash new file mode 100644 index 0000000..6f4b074 --- /dev/null +++ b/buildroot/package/librsvg/librsvg.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/librsvg/2.40/librsvg-2.40.20.sha256sum +sha256 cff4dd3c3b78bfe99d8fcfad3b8ba1eee3289a0823c0e118d78106be6b84c92b librsvg-2.40.20.tar.xz diff --git a/buildroot/package/librsvg/librsvg.mk b/buildroot/package/librsvg/librsvg.mk new file mode 100644 index 0000000..4f563ce --- /dev/null +++ b/buildroot/package/librsvg/librsvg.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# librsvg +# +################################################################################ + +LIBRSVG_VERSION_MAJOR = 2.40 +LIBRSVG_VERSION = $(LIBRSVG_VERSION_MAJOR).20 +LIBRSVG_SITE = http://ftp.gnome.org/pub/gnome/sources/librsvg/$(LIBRSVG_VERSION_MAJOR) +LIBRSVG_SOURCE = librsvg-$(LIBRSVG_VERSION).tar.xz +LIBRSVG_INSTALL_STAGING = YES +LIBRSVG_CONF_OPTS = --disable-pixbuf-loader --disable-tools --enable-introspection=no +HOST_LIBRSVG_CONF_OPTS = --enable-introspection=no +LIBRSVG_DEPENDENCIES = cairo host-gdk-pixbuf gdk-pixbuf libcroco libglib2 libxml2 pango \ + $(if $(BR2_PACKAGE_LIBGTK3),libgtk3) +HOST_LIBRSVG_DEPENDENCIES = host-cairo host-gdk-pixbuf host-libcroco host-libglib2 host-libxml2 host-pango +LIBRSVG_LICENSE = LGPL-2.0+ +LIBRSVG_LICENSE_FILES = COPYING.LIB + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/librsync/0001-CMakeLists.txt-Don-t-require-a-C-compiler.patch b/buildroot/package/librsync/0001-CMakeLists.txt-Don-t-require-a-C-compiler.patch new file mode 100644 index 0000000..af5d28c --- /dev/null +++ b/buildroot/package/librsync/0001-CMakeLists.txt-Don-t-require-a-C-compiler.patch @@ -0,0 +1,33 @@ +From c1af3e1b926fa04dbddc2d30586ff26026083134 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 26 Sep 2017 19:06:43 +0200 +Subject: [PATCH] CMakeLists.txt: Don't require a C++ compiler + +By default, CMake assumes that the project is using both C and C++. By +explicitly passing 'C' as argument of the project() macro, we tell CMake +that only C is used, which prevents CMake from erroring out if a C++ +compiler doesn't exist. + +Patch sent upstream: https://github.com/librsync/librsync/pull/116 + +Signed-off-by: Bernd Kuhls +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 85536e3..7fe1eda 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -16,7 +16,7 @@ + # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + +-project(librsync) ++project(librsync C) + cmake_minimum_required(VERSION 2.6) + + INCLUDE(CMakeDependentOption) +-- +2.11.0 + diff --git a/buildroot/package/librsync/Config.in b/buildroot/package/librsync/Config.in new file mode 100644 index 0000000..6957ddc --- /dev/null +++ b/buildroot/package/librsync/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBRSYNC + bool "librsync" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_POPT + help + librsync implements the rolling-checksum algorithm of + remote file synchronization that was popularized by the + rsync utility and is used in rproxy. + + https://github.com/librsync/librsync + +comment "librsync needs a toolchain w/ dynamic library support" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/librsync/librsync.hash b/buildroot/package/librsync/librsync.hash new file mode 100644 index 0000000..2d5e2e0 --- /dev/null +++ b/buildroot/package/librsync/librsync.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 b5c4dd114289832039397789e42d4ff0d1108ada89ce74f1999398593fae2169 librsync-v2.0.0.tar.gz diff --git a/buildroot/package/librsync/librsync.mk b/buildroot/package/librsync/librsync.mk new file mode 100644 index 0000000..07b684a --- /dev/null +++ b/buildroot/package/librsync/librsync.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# librsync +# +################################################################################ + +LIBRSYNC_VERSION = v2.0.0 +LIBRSYNC_SITE = $(call github,librsync,librsync,$(LIBRSYNC_VERSION)) +LIBRSYNC_LICENSE = LGPL-2.1+ +LIBRSYNC_LICENSE_FILES = COPYING +LIBRSYNC_INSTALL_STAGING = YES +LIBRSYNC_DEPENDENCIES = zlib bzip2 popt + +$(eval $(cmake-package)) diff --git a/buildroot/package/librtas/0001-librtas-install-librtas.so.1-symlink.patch b/buildroot/package/librtas/0001-librtas-install-librtas.so.1-symlink.patch new file mode 100644 index 0000000..2150c3f --- /dev/null +++ b/buildroot/package/librtas/0001-librtas-install-librtas.so.1-symlink.patch @@ -0,0 +1,31 @@ +Add a line to the librtas Makefile to create librtas.so.1 when +performing "make install". + +Without this patch programs linked with librtas will fail at run time: + +error while loading shared libraries: librtas.so.1: cannot open shared +object file: No such file or directory + +A patch has been submitted upstream so it is likely that this patch +can be dropped after the next release of librtas. + +Signed-off-by: Sam Bobroff +--- + librtas_src/Makefile | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/librtas_src/Makefile b/librtas_src/Makefile +index 3a10222..deba29d 100644 +--- a/librtas_src/Makefile ++++ b/librtas_src/Makefile +@@ -33,6 +33,7 @@ install: + @$(call install_lib,$(LIBRTAS),$(DESTDIR)) + @$(call install_inc,$(HEADERS),$(DESTDIR)) + @ln -sf $(LIBRTAS) $(DESTDIR)/$(LIB_DIR)$(call is_lib64,$(LIBRTAS))/$(LIBRTAS_SONAME) ++ @ln -sf $(LIBRTAS) $(DESTDIR)/$(LIB_DIR)$(call is_lib64,$(LIBRTAS))/$(LIBRTAS_SONAME).1 + + uninstall: + @$(call uninstall_lib,$(LIBRTAS),$(DESTDIR)) +-- +1.7.10.4 + diff --git a/buildroot/package/librtas/Config.in b/buildroot/package/librtas/Config.in new file mode 100644 index 0000000..11660eb --- /dev/null +++ b/buildroot/package/librtas/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBRTAS + bool "librtas" + depends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + depends on BR2_TOOLCHAIN_USES_GLIBC + help + The librtas package provides an interface for Run-Time + Abstraction Services (RTAS) calls on PAPR platforms. + The libraries allow users to examine and manipulate hardware, + and parse RTAS events. + + http://librtas.sourceforge.net/ + +comment "librtas needs a glibc toolchain" + depends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/librtas/librtas.hash b/buildroot/package/librtas/librtas.hash new file mode 100644 index 0000000..c81b583 --- /dev/null +++ b/buildroot/package/librtas/librtas.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d5f2951b0934ffbd82bebf26acfa103cc21d89f4c90c7c41472acf7b4ec6d907 librtas-1.3.13.tar.gz diff --git a/buildroot/package/librtas/librtas.mk b/buildroot/package/librtas/librtas.mk new file mode 100644 index 0000000..46c4cb4 --- /dev/null +++ b/buildroot/package/librtas/librtas.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# librtas +# +################################################################################ + +LIBRTAS_VERSION = 1.3.13 +LIBRTAS_SITE = http://downloads.sourceforge.net/project/librtas +LIBRTAS_LICENSE = Common Public License Version 1.0 +LIBRTAS_LICENSE_FILES = COPYRIGHT +LIBRTAS_INSTALL_STAGING = YES + +define LIBRTAS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define LIBRTAS_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define LIBRTAS_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/librtlsdr/0001-disable_shared_library_target_in_build.patch b/buildroot/package/librtlsdr/0001-disable_shared_library_target_in_build.patch new file mode 100644 index 0000000..b763c48 --- /dev/null +++ b/buildroot/package/librtlsdr/0001-disable_shared_library_target_in_build.patch @@ -0,0 +1,80 @@ +librtlsdr: disable shared library target in build + +Disable shared library target if BUILD_SHARED_LIBS if OFF. + +Signed-off-by: Yuvaraj Patil +--- +diff -Nurp librtlsdr-v0.5.3_orig/src/CMakeLists.txt librtlsdr-v0.5.3/src/CMakeLists.txt +--- librtlsdr-v0.5.3_orig/src/CMakeLists.txt 2014-09-24 17:31:40.610337074 +0530 ++++ librtlsdr-v0.5.3/src/CMakeLists.txt 2014-09-24 17:32:38.838334632 +0530 +@@ -20,6 +20,7 @@ + ######################################################################## + # Setup library + ######################################################################## ++if(BUILD_SHARED_LIBS) + add_library(rtlsdr_shared SHARED + librtlsdr.c + tuner_e4k.c +@@ -37,6 +38,7 @@ set_target_properties(rtlsdr_shared PROP + set_target_properties(rtlsdr_shared PROPERTIES OUTPUT_NAME rtlsdr) + set_target_properties(rtlsdr_shared PROPERTIES SOVERSION ${MAJOR_VERSION}) + set_target_properties(rtlsdr_shared PROPERTIES VERSION ${LIBVER}) ++endif() + + add_library(rtlsdr_static STATIC + librtlsdr.c +@@ -71,6 +73,12 @@ if(NOT WIN32) + set_target_properties(rtlsdr_static PROPERTIES OUTPUT_NAME rtlsdr) + endif() + ++if(BUILD_SHARED_LIBS) ++set(rtlsdr_lib rtlsdr_shared) ++else() ++set(rtlsdr_lib rtlsdr_static) ++endif() ++ + ######################################################################## + # Build utility + ######################################################################## +@@ -81,33 +89,33 @@ add_executable(rtl_fm rtl_fm.c) + add_executable(rtl_eeprom rtl_eeprom.c) + add_executable(rtl_adsb rtl_adsb.c) + add_executable(rtl_power rtl_power.c) +-set(INSTALL_TARGETS rtlsdr_shared rtlsdr_static rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power) ++set(INSTALL_TARGETS ${rtlsdr_lib} rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power) + +-target_link_libraries(rtl_sdr rtlsdr_shared convenience_static ++target_link_libraries(rtl_sdr ${rtlsdr_lib} convenience_static + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + ) +-target_link_libraries(rtl_tcp rtlsdr_shared convenience_static ++target_link_libraries(rtl_tcp ${rtlsdr_lib} convenience_static + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + ) +-target_link_libraries(rtl_test rtlsdr_shared convenience_static ++target_link_libraries(rtl_test ${rtlsdr_lib} convenience_static + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + ) +-target_link_libraries(rtl_fm rtlsdr_shared convenience_static ++target_link_libraries(rtl_fm ${rtlsdr_lib} convenience_static + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + ) +-target_link_libraries(rtl_eeprom rtlsdr_shared convenience_static ++target_link_libraries(rtl_eeprom ${rtlsdr_lib} convenience_static + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + ) +-target_link_libraries(rtl_adsb rtlsdr_shared convenience_static ++target_link_libraries(rtl_adsb ${rtlsdr_lib} convenience_static + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + ) +-target_link_libraries(rtl_power rtlsdr_shared convenience_static ++target_link_libraries(rtl_power ${rtlsdr_lib} convenience_static + ${LIBUSB_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} + ) diff --git a/buildroot/package/librtlsdr/0002-fix-builds-with-newer-compilers-C-standards.patch b/buildroot/package/librtlsdr/0002-fix-builds-with-newer-compilers-C-standards.patch new file mode 100644 index 0000000..b663d08 --- /dev/null +++ b/buildroot/package/librtlsdr/0002-fix-builds-with-newer-compilers-C-standards.patch @@ -0,0 +1,68 @@ +From ea6a86d8e792430faa3a8161ee99f2bc392875d1 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger +Date: Fri, 3 Feb 2017 15:44:18 -1000 +Subject: [PATCH] fix builds with newer compilers & C standards + +The meaning of "inline" has changed when "static" is not used. +Since none of these functions are used outside of their respective +files, mark them as static to avoid build errors where funcs are +not inlined (based on compiler flags too). + +Upstream status: pull request #38 + +Signed-off-by: Gwenhael Goavec-Merou +--- + src/rtl_adsb.c | 8 ++++---- + src/rtl_power.c | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/rtl_adsb.c b/src/rtl_adsb.c +index e611e78..a3bfa7f 100644 +--- a/src/rtl_adsb.c ++++ b/src/rtl_adsb.c +@@ -182,7 +182,7 @@ int magnitute(uint8_t *buf, int len) + return len/2; + } + +-inline uint16_t single_manchester(uint16_t a, uint16_t b, uint16_t c, uint16_t d) ++static inline uint16_t single_manchester(uint16_t a, uint16_t b, uint16_t c, uint16_t d) + /* takes 4 consecutive real samples, return 0 or 1, BADSAMPLE on error */ + { + int bit, bit_p; +@@ -223,17 +223,17 @@ inline uint16_t single_manchester(uint16_t a, uint16_t b, uint16_t c, uint16_t d + return BADSAMPLE; + } + +-inline uint16_t min16(uint16_t a, uint16_t b) ++static inline uint16_t min16(uint16_t a, uint16_t b) + { + return ab ? a : b; + } + +-inline int preamble(uint16_t *buf, int i) ++static inline int preamble(uint16_t *buf, int i) + /* returns 0/1 for preamble at index i */ + { + int i2; +diff --git a/src/rtl_power.c b/src/rtl_power.c +index aa7a138..a7a43bb 100644 +--- a/src/rtl_power.c ++++ b/src/rtl_power.c +@@ -249,7 +249,7 @@ void sine_table(int size) + } + } + +-inline int16_t FIX_MPY(int16_t a, int16_t b) ++static inline int16_t FIX_MPY(int16_t a, int16_t b) + /* fixed point multiply and scale */ + { + int c = ((int)a * (int)b) >> 14; +-- +2.13.0 + diff --git a/buildroot/package/librtlsdr/Config.in b/buildroot/package/librtlsdr/Config.in new file mode 100644 index 0000000..c2bf1a9 --- /dev/null +++ b/buildroot/package/librtlsdr/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIBRTLSDR + bool "librtlsdr" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBUSB + help + Library and command line programs for accessing + RTL2832U SDR dongles. + + http://sdr.osmocom.org/trac/wiki/rtl-sdr/ + +if BR2_PACKAGE_LIBRTLSDR + +config BR2_PACKAGE_LIBRTLSDR_DETACH_DRIVER + bool "Detach kernel driver" + default y + help + Enable this option if you would like librtlsdr to + automatically detach any kernel driver associated to the + RTL2832U USB device on startup if one is loaded. + +endif + +comment "librtlsdr needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/librtlsdr/librtlsdr.hash b/buildroot/package/librtlsdr/librtlsdr.hash new file mode 100644 index 0000000..24bca46 --- /dev/null +++ b/buildroot/package/librtlsdr/librtlsdr.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 98fb5c34ac94d6f2235a0bb41a08f8bed7949e1d1b91ea57a7c1110191ea58de librtlsdr-v0.5.3.tar.gz diff --git a/buildroot/package/librtlsdr/librtlsdr.mk b/buildroot/package/librtlsdr/librtlsdr.mk new file mode 100644 index 0000000..ca0a438 --- /dev/null +++ b/buildroot/package/librtlsdr/librtlsdr.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# librtlsdr +# +################################################################################ + +LIBRTLSDR_VERSION = v0.5.3 +LIBRTLSDR_SITE = $(call github,steve-m,librtlsdr,$(LIBRTLSDR_VERSION)) +LIBRTLSDR_LICENSE = GPL-2.0+ +LIBRTLSDR_LICENSE_FILES = COPYING +LIBRTLSDR_INSTALL_STAGING = YES +LIBRTLSDR_DEPENDENCIES = libusb + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBRTLSDR_CONF_OPTS += -DINSTALL_UDEV_RULES=ON +endif + +ifeq ($(BR2_PACKAGE_LIBRTLSDR_DETACH_DRIVER),y) +LIBRTLSDR_CONF_OPTS += -DDETACH_KERNEL_DRIVER=1 +endif + +# In case of static-lib-only builds, CMake's FindThreads.cmake code tries to +# get the right flags, checking first for -lpthreads, then -lpthread, and lastly +# for -pthread. +# The 2 first link checks fail because of undefined symbols: __libc_setup_tls. +# In the later check, CMake successfully compiles and links the test program, +# but it also tries to run it, which is wrong when cross-compiling. +# +# The following CMake variable only disables the TRY_RUN call in the -pthread +# test. +LIBRTLSDR_CONF_OPTS += -DTHREADS_PTHREAD_ARG=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/libsamplerate/Config.in b/buildroot/package/libsamplerate/Config.in new file mode 100644 index 0000000..b394fdb --- /dev/null +++ b/buildroot/package/libsamplerate/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBSAMPLERATE + bool "libsamplerate" + help + Secret Rabbit Code (aka libsamplerate) is a Sample Rate + Converter for audio. One example of where such a thing would + be useful is converting audio from the CD sample rate of + 44.1kHz to the 48kHz sample rate used by DAT players. + + http://www.mega-nerd.com/SRC/ diff --git a/buildroot/package/libsamplerate/libsamplerate.hash b/buildroot/package/libsamplerate/libsamplerate.hash new file mode 100644 index 0000000..a303f0b --- /dev/null +++ b/buildroot/package/libsamplerate/libsamplerate.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 0a7eb168e2f21353fb6d84da152e4512126f7dc48ccb0be80578c565413444c1 libsamplerate-0.1.9.tar.gz diff --git a/buildroot/package/libsamplerate/libsamplerate.mk b/buildroot/package/libsamplerate/libsamplerate.mk new file mode 100644 index 0000000..c107650 --- /dev/null +++ b/buildroot/package/libsamplerate/libsamplerate.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libsamplerate +# +################################################################################ + +LIBSAMPLERATE_VERSION = 0.1.9 +LIBSAMPLERATE_SITE = http://www.mega-nerd.com/SRC +LIBSAMPLERATE_INSTALL_STAGING = YES +LIBSAMPLERATE_DEPENDENCIES = host-pkgconf +LIBSAMPLERATE_CONF_OPTS = --disable-fftw --program-transform-name='' +LIBSAMPLERATE_LICENSE = BSD-2-Clause +LIBSAMPLERATE_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +LIBSAMPLERATE_DEPENDENCIES += alsa-lib +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +LIBSAMPLERATE_DEPENDENCIES += libsndfile +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libscrypt/0001-Allow-adding-options-to-CFLAGS-and-LDFLAGS-variables.patch b/buildroot/package/libscrypt/0001-Allow-adding-options-to-CFLAGS-and-LDFLAGS-variables.patch new file mode 100644 index 0000000..a023a6f --- /dev/null +++ b/buildroot/package/libscrypt/0001-Allow-adding-options-to-CFLAGS-and-LDFLAGS-variables.patch @@ -0,0 +1,34 @@ +From 097c5d9248f4afd34c73de5aba01a143ef784257 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20S=C3=B8rensen?= +Date: Tue, 14 Mar 2017 09:23:51 +0100 +Subject: [PATCH] Allow adding options to CFLAGS and LDFLAGS variables +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This also removes a number of hard-coded CFLAGS, leaving it up to the +user to pass appropriate optimization/hardening flags. + +Signed-off-by: Stefan Sørensen +--- + Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 7022a4a..3098a9a 100644 +--- a/Makefile ++++ b/Makefile +@@ -5,8 +5,8 @@ MAKE_DIR ?= install -d + INSTALL_DATA ?= install + + CC?=gcc +-CFLAGS?=-O2 -Wall -g -D_FORTIFY_SOURCE=2 -fstack-protector -fPIC +-LDFLAGS?=-Wl,-z,now -Wl,-z,relro -Wl,-soname,libscrypt.so.0 -Wl,--version-script=libscrypt.version ++override CFLAGS+=-fPIC ++override LDFLAGS+=-Wl,-z,now -Wl,-z,relro -Wl,-soname,libscrypt.so.0 -Wl,--version-script=libscrypt.version + CFLAGS_EXTRA?=-Wl,-rpath=. + + all: reference +-- +2.7.4 + diff --git a/buildroot/package/libscrypt/Config.in b/buildroot/package/libscrypt/Config.in new file mode 100644 index 0000000..b467fd6 --- /dev/null +++ b/buildroot/package/libscrypt/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBSCRYPT + bool "libscrypt" + # Unconditionally builds a shared library + depends on !BR2_STATIC_LIBS + help + This is a library that implements the secure password + hashing function "scrypt". + + http://www.lolware.net/libscrypt.html + +comment "libscrypt needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libscrypt/libscrypt.hash b/buildroot/package/libscrypt/libscrypt.hash new file mode 100644 index 0000000..bf3f441 --- /dev/null +++ b/buildroot/package/libscrypt/libscrypt.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 68e377e79745c10d489b759b970e52d819dbb80dd8ca61f8c975185df3f457d3 libscrypt-v1.21.tar.gz diff --git a/buildroot/package/libscrypt/libscrypt.mk b/buildroot/package/libscrypt/libscrypt.mk new file mode 100644 index 0000000..6086ea9 --- /dev/null +++ b/buildroot/package/libscrypt/libscrypt.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libscrypt +# +################################################################################ + +LIBSCRYPT_VERSION = v1.21 +LIBSCRYPT_SITE = $(call github,technion,libscrypt,$(LIBSCRYPT_VERSION)) +LIBSCRYPT_LICENSE = BSD-2-Clause +LIBSCRYPT_LICENSE_FILES = LICENSE +LIBSCRYPT_INSTALL_STAGING = YES + +define LIBSCRYPT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define LIBSCRYPT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=/usr \ + DESTDIR=$(STAGING_DIR) install +endef + +define LIBSCRYPT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=/usr \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libseccomp/0001-remove-static.patch b/buildroot/package/libseccomp/0001-remove-static.patch new file mode 100644 index 0000000..6fd81f9 --- /dev/null +++ b/buildroot/package/libseccomp/0001-remove-static.patch @@ -0,0 +1,29 @@ +Do not force static link, it breaks build with +# BR2_STATIC_LIBS is not set +BR2_SHARED_LIBS=y + +Signed-off-by: Bernd Kuhls + +diff -uNr libseccomp-2.2.0.org/tests/Makefile.am libseccomp-2.2.0/tests/Makefile.am +--- libseccomp-2.2.0.org/tests/Makefile.am 2015-02-11 21:57:11.000000000 +0100 ++++ libseccomp-2.2.0/tests/Makefile.am 2015-03-29 16:03:49.668946652 +0200 +@@ -16,7 +16,6 @@ + # along with this library; if not, see . + # + +-AM_LDFLAGS = -static + LDADD = util.la ../src/libseccomp.la + + check_LTLIBRARIES = util.la +diff -uNr libseccomp-2.2.0.org/tools/Makefile.am libseccomp-2.2.0/tools/Makefile.am +--- libseccomp-2.2.0.org/tools/Makefile.am 2015-02-11 21:57:11.000000000 +0100 ++++ libseccomp-2.2.0/tools/Makefile.am 2015-03-29 16:03:46.164992302 +0200 +@@ -33,8 +33,6 @@ + scmp_bpf_sim_SOURCES = scmp_bpf_sim.c bpf.h util.h + + scmp_sys_resolver_LDADD = ../src/libseccomp.la +-scmp_sys_resolver_LDFLAGS = -static + scmp_arch_detect_LDADD = ../src/libseccomp.la +-scmp_arch_detect_LDFLAGS = -static + scmp_bpf_disasm_LDADD = util.la + scmp_bpf_sim_LDADD = util.la diff --git a/buildroot/package/libseccomp/Config.in b/buildroot/package/libseccomp/Config.in new file mode 100644 index 0000000..d3b4bb8 --- /dev/null +++ b/buildroot/package/libseccomp/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + bool + default y if BR2_aarch64 + default y if BR2_arm || BR2_armeb + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_i386 || BR2_x86_64 + default y if BR2_powerpc64 || BR2_powerpc + +config BR2_PACKAGE_LIBSECCOMP + bool "libseccomp" + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + help + High level interface to the Linux Kernel's seccomp filter + + The libseccomp library provides an easy to use, platform + independent, interface to the Linux Kernel's syscall filtering + mechanism: seccomp. The libseccomp API is designed to abstract + away the underlying BPF based syscall filter language and + present a more conventional function-call based filtering + interface that should be familiar to, and easily adopted by + application developers. + + https://github.com/seccomp/libseccomp + +comment "libseccomp needs a toolchain w/ headers >= 3.12" + depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 diff --git a/buildroot/package/libseccomp/libseccomp.hash b/buildroot/package/libseccomp/libseccomp.hash new file mode 100644 index 0000000..ef390ff --- /dev/null +++ b/buildroot/package/libseccomp/libseccomp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 09864282ae579c34bd5ef75ef3487200adfecaa51f5cffc7c7ad1ed2f89f5d6c libseccomp-v2.3.1.tar.gz diff --git a/buildroot/package/libseccomp/libseccomp.mk b/buildroot/package/libseccomp/libseccomp.mk new file mode 100644 index 0000000..9a241a5 --- /dev/null +++ b/buildroot/package/libseccomp/libseccomp.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libseccomp +# +################################################################################ + +LIBSECCOMP_VERSION = v2.3.1 +LIBSECCOMP_SITE = $(call github,seccomp,libseccomp,$(LIBSECCOMP_VERSION)) +LIBSECCOMP_LICENSE = LGPL-2.1 +LIBSECCOMP_LICENSE_FILES = LICENSE +LIBSECCOMP_INSTALL_STAGING = YES +LIBSECCOMP_AUTORECONF = YES + +# Needed for autoreconf to work properly, see ./autogen.sh +define LIBSECCOMP_FIXUP_M4_DIR + mkdir $(@D)/m4 +endef +LIBSECCOMP_POST_EXTRACT_HOOKS += LIBSECCOMP_FIXUP_M4_DIR + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsecret/0001-libsecret.pc-add-Libs.private-field-for-libgcrypt.patch b/buildroot/package/libsecret/0001-libsecret.pc-add-Libs.private-field-for-libgcrypt.patch new file mode 100644 index 0000000..62bc84c --- /dev/null +++ b/buildroot/package/libsecret/0001-libsecret.pc-add-Libs.private-field-for-libgcrypt.patch @@ -0,0 +1,38 @@ +From 754897490d9478025d174c2b1c1849305f728324 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Dec 2015 12:13:07 +0100 +Subject: [PATCH] libsecret.pc: add Libs.private field for libgcrypt + +When libgcrypt is available, libsecret links with it. When dynamic +linking is used, there is no problem: libsecret.so has a NEEDED +pointing to libgcrypt, so linking an application with -lsecret works +fine. However, when doing static linking, you must specify the entire +chain of libraries, otherwise you get unresolved symbols errors, such +as: + +host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libsecret-1.a(libsecret_1_la-secret-session.o): In function `request_open_session_aes': +build/libsecret-0.18.3/libsecret/secret-session.c:99: undefined reference to `gcry_mpi_release' +build/libsecret-0.18.3/libsecret/secret-session.c:101: undefined reference to `gcry_mpi_aprint' +build/libsecret-0.18.3/libsecret/secret-session.c:107: undefined reference to `gcry_free' + +In order to solve this, we simply need to indicate in the Libs.private +field of the .pc file that we depend on libgcrypt. + +Signed-off-by: Thomas Petazzoni +--- + libsecret/libsecret.pc.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libsecret/libsecret.pc.in b/libsecret/libsecret.pc.in +index 0c342ef..d99cf44 100644 +--- a/libsecret/libsecret.pc.in ++++ b/libsecret/libsecret.pc.in +@@ -11,4 +11,5 @@ Description: GObject bindings for Secret Service API + Version: @VERSION@ + Requires: glib-2.0 gobject-2.0 gio-2.0 + Libs: -L${libdir} -lsecret-@SECRET_MAJOR@ ++Libs.private: @LIBGCRYPT_LIBS@ + Cflags: -I${includedir}/libsecret-@SECRET_MAJOR@ +-- +2.6.4 + diff --git a/buildroot/package/libsecret/Config.in b/buildroot/package/libsecret/Config.in new file mode 100644 index 0000000..0539e5d --- /dev/null +++ b/buildroot/package/libsecret/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBSECRET + bool "libsecret" + depends on BR2_USE_WCHAR # gettext dep in libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + libsecret is a library for storing and retrieving passwords + and other secrets. It communicates with the "Secret Service" + using DBus. gnome-keyring and ksecretservice are both + implementations of a Secret Service. + + https://wiki.gnome.org/Libsecret + +comment "libsecret needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libsecret/libsecret.hash b/buildroot/package/libsecret/libsecret.hash new file mode 100644 index 0000000..a637cbe --- /dev/null +++ b/buildroot/package/libsecret/libsecret.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/libsecret/0.18/libsecret-0.18.5.sha256sum +sha256 9ce7bd8dd5831f2786c935d82638ac428fa085057cc6780aba0e39375887ccb3 libsecret-0.18.5.tar.xz diff --git a/buildroot/package/libsecret/libsecret.mk b/buildroot/package/libsecret/libsecret.mk new file mode 100644 index 0000000..111b553 --- /dev/null +++ b/buildroot/package/libsecret/libsecret.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libsecret +# +################################################################################ + +LIBSECRET_VERSION_MAJOR = 0.18 +LIBSECRET_VERSION = $(LIBSECRET_VERSION_MAJOR).5 +LIBSECRET_SITE = http://ftp.gnome.org/pub/GNOME/sources/libsecret/$(LIBSECRET_VERSION_MAJOR) +LIBSECRET_SOURCE = libsecret-$(LIBSECRET_VERSION).tar.xz +LIBSECRET_INSTALL_STAGING = YES +LIBSECRET_DEPENDENCIES = libglib2 host-intltool +LIBSECRET_CONF_OPTS = \ + --disable-manpages \ + --disable-strict \ + --disable-coverage \ + --enable-introspection=no \ + --enable-vala=no +LIBSECRET_LICENSE = LGPL-2.1+ +LIBSECRET_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +LIBSECRET_DEPENDENCIES += libgcrypt +LIBSECRET_CONF_OPTS += --enable-gcrypt \ + --with-libgcrypt-prefix=$(STAGING_DIR)/usr +else +LIBSECRET_CONF_OPTS += --disable-gcrypt +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libselinux/0001-workaround-blackfin-issue.patch b/buildroot/package/libselinux/0001-workaround-blackfin-issue.patch new file mode 100644 index 0000000..5d00c69 --- /dev/null +++ b/buildroot/package/libselinux/0001-workaround-blackfin-issue.patch @@ -0,0 +1,24 @@ +Do not make symbols hidden on Blackfin + +The libselinux logic to hide internal symbols from the DSO doesn't +work properly on Blackfin due to the USER_LABEL_PREFIX not being +handled properly. A real fix is not that simple, so this patch simply +disables the internal symbol hiding mechanism. This means that those +symbols are visible in the final DSO, which is not a problem for +proper execution, it just isn't as clean. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/dso.h +=================================================================== +--- a/src/dso.h ++++ b/src/dso.h +@@ -1,7 +1,7 @@ + #ifndef _SELINUX_DSO_H + #define _SELINUX_DSO_H 1 + +-#ifdef SHARED ++#if defined(SHARED) && !defined(__bfin__) + # define hidden __attribute__ ((visibility ("hidden"))) + # define hidden_proto(fct) __hidden_proto (fct, fct##_internal) + # define __hidden_proto(fct, internal) \ diff --git a/buildroot/package/libselinux/0002-fix-musl-build.patch b/buildroot/package/libselinux/0002-fix-musl-build.patch new file mode 100644 index 0000000..7af3a3c --- /dev/null +++ b/buildroot/package/libselinux/0002-fix-musl-build.patch @@ -0,0 +1,30 @@ +fix undefined macros in musl + +musl does not define glibc-specific macros, so use a simple version of +the macro when it is not defined. + +This is very inefficient, however, but copying the code from glibc is +not really possible because it is LGPL while libselinux in Public +Domain, and we want to avoid license propagation, so this macro is +completely written from scratch, and non-optimal. + +Signed-off-by: "Yann E. MORIN" + +diff -durN libselinux-2.1.13.orig/src/booleans.c libselinux-2.1.13/src/booleans.c +--- libselinux-2.1.13.orig/src/booleans.c 2013-02-06 02:43:22.000000000 +0100 ++++ libselinux-2.1.13/src/booleans.c 2015-07-26 20:40:41.311801914 +0200 +@@ -62,6 +62,14 @@ + goto bad; + } + ++/* Simple (but inefficient) version of _D_ALLOC_NAMLEN when ++ * building with a C library that misses it (e.g. musl). ++ * Note: glibc does a strlen on (d)->d_name, so assume it is safe. ++ */ ++#ifndef _D_ALLOC_NAMLEN ++#define _D_ALLOC_NAMLEN(d) (strlen((d)->d_name)+1) ++#endif ++ + for (i = 0; i < *len; i++) { + n[i] = (char *)malloc(_D_ALLOC_NAMLEN(namelist[i])); + if (!n[i]) { diff --git a/buildroot/package/libselinux/0003-libselinux-build-follow-standard-semantics-for-DESTD.patch b/buildroot/package/libselinux/0003-libselinux-build-follow-standard-semantics-for-DESTD.patch new file mode 100644 index 0000000..089eef4 --- /dev/null +++ b/buildroot/package/libselinux/0003-libselinux-build-follow-standard-semantics-for-DESTD.patch @@ -0,0 +1,137 @@ +libselinux: build: follow standard semantics for DESTDIR and PREFIX + +This patch solves the following issues: +- The pkg-config files generates odd paths when using DESTDIR without PREFIX +- DESTDIR is needed during compile time to compute library and header paths which it should not. +- Installing with both DESTDIR and PREFIX set gives us odd paths +- Make usage of DESTDIR and PREFIX more standard + +Signed-off-by: Marcus Folkesson + +diff -durN libselinux.orig/include/Makefile libselinux/include/Makefile +--- libselinux.orig/include/Makefile 2018-01-12 12:42:30.898709792 +0100 ++++ libselinux/include/Makefile 2018-01-12 10:02:57.745478435 +0100 +@@ -1,6 +1,6 @@ + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr +-INCDIR ?= $(PREFIX)/include/selinux ++PREFIX ?= /usr ++INCDIR = $(DESTDIR)$(PREFIX)/include/selinux + + all: + +diff -durN libselinux.orig/man/Makefile libselinux/man/Makefile +--- libselinux.orig/man/Makefile 2018-01-12 12:42:30.898709792 +0100 ++++ libselinux/man/Makefile 2018-01-12 10:02:57.745478435 +0100 +@@ -1,7 +1,8 @@ + # Installation directories. +-MAN8DIR ?= $(DESTDIR)/usr/share/man/man8 +-MAN5DIR ?= $(DESTDIR)/usr/share/man/man5 +-MAN3DIR ?= $(DESTDIR)/usr/share/man/man3 ++PREFIX ?= /usr ++MAN8DIR ?= $(DESTDIR)$(PREFIX)/share/man/man8 ++MAN5DIR ?= $(DESTDIR)$(PREFIX)/share/man/man5 ++MAN3DIR ?= $(DESTDIR)$(PREFIX)/share/man/man3 + + all: + +diff -durN libselinux.orig/src/libselinux.pc.in libselinux/src/libselinux.pc.in +--- libselinux.orig/src/libselinux.pc.in 2018-01-12 12:42:30.905376458 +0100 ++++ libselinux/src/libselinux.pc.in 2018-01-12 10:02:57.745478435 +0100 +@@ -1,6 +1,6 @@ + prefix=@prefix@ + exec_prefix=${prefix} +-libdir=${exec_prefix}/@libdir@ ++libdir=@libdir@ + includedir=@includedir@ + + Name: libselinux +diff -durN libselinux.orig/src/Makefile libselinux/src/Makefile +--- libselinux.orig/src/Makefile 2018-01-12 12:42:30.902043126 +0100 ++++ libselinux/src/Makefile 2018-01-12 10:02:57.745478435 +0100 +@@ -8,10 +8,10 @@ + PKG_CONFIG ?= pkg-config + + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr ++PREFIX ?= /usr + LIBDIR ?= $(PREFIX)/lib +-SHLIBDIR ?= $(DESTDIR)/lib + INCLUDEDIR ?= $(PREFIX)/include ++LIBINSTALL = $(DESTDIR)$(LIBDIR) + PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX)) + PYLIBS ?= $(shell $(PKG_CONFIG) --libs $(PYPREFIX)) + PYSITEDIR ?= $(DESTDIR)$(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])') +@@ -19,8 +19,6 @@ + RUBYINC ?= $(shell $(RUBY) -e 'puts "-I" + RbConfig::CONFIG["rubyarchhdrdir"] + " -I" + RbConfig::CONFIG["rubyhdrdir"]') + RUBYLIBS ?= $(shell $(RUBY) -e 'puts "-L" + RbConfig::CONFIG["libdir"] + " -L" + RbConfig::CONFIG["archlibdir"] + " " + RbConfig::CONFIG["LIBRUBYARG_SHARED"]') + RUBYINSTALL ?= $(DESTDIR)$(shell $(RUBY) -e 'puts RbConfig::CONFIG["vendorarchdir"]') +-LIBBASE ?= $(shell basename $(LIBDIR)) +-LIBSEPOLA ?= $(LIBDIR)/libsepol.a + + VERSION = $(shell cat ../VERSION) + LIBVERSION = 1 +@@ -148,7 +146,7 @@ + ln -sf $@ $(TARGET) + + $(LIBPC): $(LIBPC).in ../VERSION +- sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ ++ sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBDIR):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ + + selinuxswig_python_exception.i: ../include/selinux/selinux.h + bash -e exception.sh > $@ || (rm -f $@ ; false) +@@ -156,8 +154,8 @@ + $(AUDIT2WHYLOBJ): audit2why.c + $(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC -DSHARED -c -o $@ $< + +-$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) $(LIBSEPOLA) +- $(CC) $(CFLAGS) $(LDFLAGS) -L. -shared -o $@ $^ -lselinux $(PYLIBS) ++$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) ++ $(CC) $(CFLAGS) $(LDFLAGS) -L. -shared -o $@ $^ -lselinux $(PYLIBS) -l:libsepol.a + + %.o: %.c policy.h + $(CC) $(CFLAGS) $(TLSFLAGS) -c -o $@ $< +@@ -177,13 +175,13 @@ + $(SWIG) $< + + install: all +- test -d $(LIBDIR) || install -m 755 -d $(LIBDIR) +- install -m 644 $(LIBA) $(LIBDIR) +- test -d $(SHLIBDIR) || install -m 755 -d $(SHLIBDIR) +- install -m 755 $(LIBSO) $(SHLIBDIR) +- test -d $(LIBDIR)/pkgconfig || install -m 755 -d $(LIBDIR)/pkgconfig +- install -m 644 $(LIBPC) $(LIBDIR)/pkgconfig +- ln -sf --relative $(SHLIBDIR)/$(LIBSO) $(LIBDIR)/$(TARGET) ++ test -d $(LIBINSTALL) || install -m 755 -d $(LIBINSTALL) ++ install -m 644 $(LIBA) $(LIBINSTALL) ++ test -d $(LIBINSTALL) || install -m 755 -d $(LIBINSTALL) ++ install -m 755 $(LIBSO) $(LIBINSTALL) ++ test -d $(LIBINSTALL)/pkgconfig || install -m 755 -d $(LIBINSTALL)/pkgconfig ++ install -m 644 $(LIBPC) $(LIBINSTALL)/pkgconfig ++ ln -sf --relative $(LIBINSTALL)/$(LIBSO) $(LIBINSTALL)/$(TARGET) + + install-pywrap: pywrap + test -d $(PYSITEDIR)/selinux || install -m 755 -d $(PYSITEDIR)/selinux +@@ -196,7 +194,7 @@ + install -m 755 $(SWIGRUBYSO) $(RUBYINSTALL)/selinux.so + + relabel: +- /sbin/restorecon $(SHLIBDIR)/$(LIBSO) ++ /sbin/restorecon $(LIBINSTALL)/$(LIBSO) + + clean-pywrap: + -rm -f $(SWIGLOBJ) $(SWIGSO) $(AUDIT2WHYLOBJ) $(AUDIT2WHYSO) +diff -durN libselinux.orig/utils/Makefile libselinux/utils/Makefile +--- libselinux.orig/utils/Makefile 2018-01-12 12:42:30.905376458 +0100 ++++ libselinux/utils/Makefile 2018-01-12 10:02:57.745478435 +0100 +@@ -1,8 +1,6 @@ + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr +-LIBDIR ?= $(PREFIX)/lib +-SBINDIR ?= $(PREFIX)/sbin +-INCLUDEDIR ?= $(PREFIX)/include ++PREFIX ?= /usr ++SBINDIR ?= $(DESTDIR)$(PREFIX)/sbin + + OS ?= $(shell uname) + diff --git a/buildroot/package/libselinux/0004-revert-ln-relative.patch b/buildroot/package/libselinux/0004-revert-ln-relative.patch new file mode 100644 index 0000000..f72afa1 --- /dev/null +++ b/buildroot/package/libselinux/0004-revert-ln-relative.patch @@ -0,0 +1,24 @@ +Makefile: revert libselinux: use ln --relative to create .so symlinks + +This reverts 71393a181d63c9baae5fe8dcaeb9411d1f253998 + +ln --relative is too recent to be available in all distributions, +especially enterprise-grade distros that can stick around as long as +they are maintained (up to 10 years in some cases?). + +For the sake of Buildroot, revert the upstream patch. + +Signed-off-by: "Yann E. MORIN" + +diff -durNw libselinux-2.7.orig/src/Makefile libselinux-2.7/src/Makefile +--- libselinux-2.7.orig/src/Makefile 2018-01-15 20:53:50.168525700 +0100 ++++ libselinux-2.7/src/Makefile 2018-01-15 20:55:27.061858005 +0100 +@@ -181,7 +181,7 @@ + install -m 755 $(LIBSO) $(LIBINSTALL) + test -d $(LIBINSTALL)/pkgconfig || install -m 755 -d $(LIBINSTALL)/pkgconfig + install -m 644 $(LIBPC) $(LIBINSTALL)/pkgconfig +- ln -sf --relative $(LIBINSTALL)/$(LIBSO) $(LIBINSTALL)/$(TARGET) ++ cd $(LIBINSTALL) && ln -sf $(LIBSO) $(TARGET) + + install-pywrap: pywrap + test -d $(PYSITEDIR)/selinux || install -m 755 -d $(PYSITEDIR)/selinux diff --git a/buildroot/package/libselinux/Config.in b/buildroot/package/libselinux/Config.in new file mode 100644 index 0000000..6be816d --- /dev/null +++ b/buildroot/package/libselinux/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_LIBSELINUX + bool "libselinux" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + # Uses , not available in musl or uClibc + depends on BR2_TOOLCHAIN_USES_GLIBC + # Toolchain issue: "fixup not contained within frag" + depends on !BR2_arc + select BR2_PACKAGE_LIBSEPOL + select BR2_PACKAGE_PCRE + help + libselinux is the runtime SELinux library that provides + interfaces (e.g. library functions for the SELinux kernel + APIs like getcon(), other support functions like + getseuserbyname()) to SELinux-aware applications. libselinux + may use the shared libsepol to manipulate the binary policy + if necessary (e.g. to downgrade the policy format to an + older version supported by the kernel) when loading policy. + + http://selinuxproject.org/page/Main_Page + +comment "libselinux needs a glibc toolchain w/ threads, dynamic library" + depends on !BR2_arc + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/libselinux/libselinux.hash b/buildroot/package/libselinux/libselinux.hash new file mode 100644 index 0000000..3c60d51 --- /dev/null +++ b/buildroot/package/libselinux/libselinux.hash @@ -0,0 +1,2 @@ +# From: https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 d0fec0769b3ad60aa7baf9b9a4b7a056827769dc2dadda0dc0eb59b3d1c18c57 libselinux-2.7.tar.gz diff --git a/buildroot/package/libselinux/libselinux.mk b/buildroot/package/libselinux/libselinux.mk new file mode 100644 index 0000000..b3d48f7 --- /dev/null +++ b/buildroot/package/libselinux/libselinux.mk @@ -0,0 +1,112 @@ +################################################################################ +# +# libselinux +# +################################################################################ + +LIBSELINUX_VERSION = 2.7 +LIBSELINUX_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20170804 +LIBSELINUX_LICENSE = Public Domain +LIBSELINUX_LICENSE_FILES = LICENSE + +LIBSELINUX_DEPENDENCIES = libsepol pcre + +LIBSELINUX_INSTALL_STAGING = YES + +# Filter out D_FILE_OFFSET_BITS=64. This fixes errors caused by glibc 2.22. +LIBSELINUX_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS))" \ + LDFLAGS="$(TARGET_LDFLAGS) -lpcre -lpthread" \ + ARCH=$(KERNEL_ARCH) + +LIBSELINUX_MAKE_INSTALL_TARGETS = install + +ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y) +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBSELINUX_DEPENDENCIES += python3 host-swig +LIBSELINUX_PYINC = -I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR)m +LIBSELINUX_PYLIBVER = python$(PYTHON3_VERSION_MAJOR) +else ifeq ($(BR2_PACKAGE_PYTHON),y) +LIBSELINUX_DEPENDENCIES += python host-swig +LIBSELINUX_PYINC = -I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) +LIBSELINUX_PYLIBVER = python$(PYTHON_VERSION_MAJOR) +endif + +LIBSELINUX_MAKE_OPTS += \ + PYINC="$(LIBSELINUX_PYINC)" \ + PYSITEDIR=$(TARGET_DIR)/usr/lib/$(LIBSELINUX_PYLIBVER)/site-packages \ + SWIG_LIB="$(HOST_DIR)/share/swig/$(SWIG_VERSION)/" + +LIBSELINUX_MAKE_INSTALL_TARGETS += install-pywrap + +# dependencies are broken and result in file truncation errors at link +# time if the Python bindings are built through the same make +# invocation as the rest of the library. +define LIBSELINUX_BUILD_PYTHON_BINDINGS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(LIBSELINUX_MAKE_OPTS) swigify pywrap +endef +endif # python || python3 + +define LIBSELINUX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(LIBSELINUX_MAKE_OPTS) all + $(LIBSELINUX_BUILD_PYTHON_BINDINGS) +endef + +define LIBSELINUX_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(LIBSELINUX_MAKE_OPTS) DESTDIR=$(STAGING_DIR) \ + $(LIBSELINUX_MAKE_INSTALL_TARGETS) +endef + +define LIBSELINUX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(LIBSELINUX_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install + # Create the selinuxfs mount point + if [ ! -d "$(TARGET_DIR)/selinux" ]; then mkdir $(TARGET_DIR)/selinux; fi + if ! grep -q "selinuxfs" $(TARGET_DIR)/etc/fstab; then \ + echo "none /selinux selinuxfs noauto 0 0" >> $(TARGET_DIR)/etc/fstab ; fi +endef + +HOST_LIBSELINUX_DEPENDENCIES = \ + host-libsepol host-pcre host-swig + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +HOST_LIBSELINUX_DEPENDENCIES += host-python3 +HOST_LIBSELINUX_PYINC = -I$(HOST_DIR)/include/python$(PYTHON3_VERSION_MAJOR)m/ +HOST_LIBSELINUX_PYLIBVER = python$(PYTHON3_VERSION_MAJOR) +else +HOST_LIBSELINUX_DEPENDENCIES += host-python +HOST_LIBSELINUX_PYINC = -I$(HOST_DIR)/include/python$(PYTHON_VERSION_MAJOR)/ +HOST_LIBSELINUX_PYLIBVER = python$(PYTHON_VERSION_MAJOR) +endif + +HOST_LIBSELINUX_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + PREFIX=$(HOST_DIR) \ + LDFLAGS="$(HOST_LDFLAGS) -lpcre -lpthread" \ + PYINC="$(HOST_LIBSELINUX_PYINC)" \ + PYSITEDIR="$(HOST_DIR)/lib/$(HOST_LIBSELINUX_PYLIBVER)/site-packages" \ + SWIG_LIB="$(HOST_DIR)/share/swig/$(SWIG_VERSION)/" + +define HOST_LIBSELINUX_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(HOST_LIBSELINUX_MAKE_OPTS) all + # Generate python interface wrapper + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(HOST_LIBSELINUX_MAKE_OPTS) swigify pywrap +endef + +define HOST_LIBSELINUX_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + $(HOST_LIBSELINUX_MAKE_OPTS) install + ln -sf libselinux.so.1 $(HOST_DIR)/lib/libselinux.so + # Install python interface wrapper + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + $(HOST_LIBSELINUX_MAKE_OPTS) install-pywrap +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/libsemanage/0001-workaround-blackfin-issue.patch b/buildroot/package/libsemanage/0001-workaround-blackfin-issue.patch new file mode 100644 index 0000000..7ce9606 --- /dev/null +++ b/buildroot/package/libsemanage/0001-workaround-blackfin-issue.patch @@ -0,0 +1,25 @@ +Do not make symbols hidden on Blackfin + +The libselinux logic to hide internal symbols from the DSO doesn't +work properly on Blackfin due to the USER_LABEL_PREFIX not being +handled properly. A real fix is not that simple, so this patch simply +disables the internal symbol hiding mechanism. This means that those +symbols are visible in the final DSO, which is not a problem for +proper execution, it just isn't as clean. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Adam Duskett + +Index: b/src/dso.h +=================================================================== +--- a/src/dso.h ++++ b/src/dso.h +@@ -1,7 +1,7 @@ + #ifndef _SEPOL_DSO_H + #define _SEPOL_DSO_H 1 + +-#ifdef SHARED ++#if defined(SHARED) && !defined(__bfin__) + # define hidden __attribute__ ((visibility ("hidden"))) + # define hidden_proto(fct) __hidden_proto (fct, fct##_internal) + # define __hidden_proto(fct, internal) \ diff --git a/buildroot/package/libsemanage/0002-libsemanage-build-follow-standard-semantics-for-DESTD.patch b/buildroot/package/libsemanage/0002-libsemanage-build-follow-standard-semantics-for-DESTD.patch new file mode 100644 index 0000000..47ac6bd --- /dev/null +++ b/buildroot/package/libsemanage/0002-libsemanage-build-follow-standard-semantics-for-DESTD.patch @@ -0,0 +1,118 @@ +libsemanage: build: follow standard semantics for DESTDIR and PREFIX + +This patch solves the following issues: +- DESTDIR is needed during compile time to compute library and header paths which it should not. +- Installing with both DESTDIR and PREFIX set gives us odd paths +- Make usage of DESTDIR and PREFIX more standard + +Signed-off-by: Marcus Folkesson + +diff -durN libsemanage.orig/include/Makefile libsemanage/include/Makefile +--- libsemanage.orig/include/Makefile 2018-01-12 12:42:30.915376458 +0100 ++++ libsemanage/include/Makefile 2018-01-12 10:04:18.632144240 +0100 +@@ -1,6 +1,6 @@ + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr +-INCDIR ?= $(PREFIX)/include/semanage ++PREFIX ?= /usr ++INCDIR ?= $(DESTDIR)$(PREFIX)/include/semanage + + all: + +diff -durN libsemanage.orig/man/Makefile libsemanage/man/Makefile +--- libsemanage.orig/man/Makefile 2018-01-12 12:42:30.915376458 +0100 ++++ libsemanage/man/Makefile 2018-01-12 10:04:18.632144240 +0100 +@@ -1,6 +1,7 @@ + # Installation directories. +-MAN3DIR ?= $(DESTDIR)/usr/share/man/man3 +-MAN5DIR ?= $(DESTDIR)/usr/share/man/man5 ++PREFIX ?= /usr ++MAN3DIR ?= $(DESTDIR)$(PREFIX)/share/man/man3 ++MAN5DIR ?= $(DESTDIR)$(PREFIX)/share/man/man5 + + all: + +diff -durN libsemanage.orig/src/libsemanage.pc.in libsemanage/src/libsemanage.pc.in +--- libsemanage.orig/src/libsemanage.pc.in 2018-01-12 12:42:30.918709792 +0100 ++++ libsemanage/src/libsemanage.pc.in 2018-01-12 10:04:18.632144240 +0100 +@@ -1,6 +1,6 @@ + prefix=@prefix@ + exec_prefix=${prefix} +-libdir=${exec_prefix}/@libdir@ ++libdir=@libdir@ + includedir=@includedir@ + + Name: libsemanage +diff -durN libsemanage.orig/src/Makefile libsemanage/src/Makefile +--- libsemanage.orig/src/Makefile 2018-01-12 12:42:30.918709792 +0100 ++++ libsemanage/src/Makefile 2018-01-12 10:04:18.632144240 +0100 +@@ -8,10 +8,10 @@ + PKG_CONFIG ?= pkg-config + + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr ++PREFIX ?= /usr + LIBDIR ?= $(PREFIX)/lib +-SHLIBDIR ?= $(DESTDIR)/lib + INCLUDEDIR ?= $(PREFIX)/include ++LIBINSTALL = $(DESTDIR)$(LIBDIR) + PYINC ?= $(shell $(PKG_CONFIG) --cflags $(PYPREFIX)) + PYLIBS ?= $(shell $(PKG_CONFIG) --libs $(PYPREFIX)) + PYSITEDIR ?= $(DESTDIR)$(shell $(PYTHON) -c 'import site; print(site.getsitepackages()[0])') +@@ -20,8 +20,6 @@ + RUBYLIBS ?= $(shell $(RUBY) -e 'puts "-L" + RbConfig::CONFIG["libdir"] + " -L" + RbConfig::CONFIG["archlibdir"] + " " + RbConfig::CONFIG["LIBRUBYARG_SHARED"]') + RUBYINSTALL ?= $(DESTDIR)$(shell $(RUBY) -e 'puts RbConfig::CONFIG["vendorarchdir"]') + +-LIBBASE=$(shell basename $(LIBDIR)) +- + DEFAULT_SEMANAGE_CONF_LOCATION=$(DESTDIR)/etc/selinux/semanage.conf + + ifeq ($(DEBUG),1) +@@ -95,7 +93,7 @@ + ln -sf $@ $(TARGET) + + $(LIBPC): $(LIBPC).in ../VERSION +- sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ ++ sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBDIR):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ + + semanageswig_python_exception.i: ../include/semanage/semanage.h + bash -e exception.sh > $@ || (rm -f $@ ; false) +@@ -136,13 +134,13 @@ + $(SWIG) $< + + install: all +- test -d $(LIBDIR) || install -m 755 -d $(LIBDIR) +- install -m 644 $(LIBA) $(LIBDIR) +- install -m 755 $(LIBSO) $(LIBDIR) +- test -d $(LIBDIR)/pkgconfig || install -m 755 -d $(LIBDIR)/pkgconfig +- install -m 644 $(LIBPC) $(LIBDIR)/pkgconfig ++ test -d $(LIBINSTALL) || install -m 755 -d $(LIBINSTALL) ++ install -m 644 $(LIBA) $(LIBINSTALL) ++ install -m 755 $(LIBSO) $(LIBINSTALL) ++ test -d $(LIBINSTALL)/pkgconfig || install -m 755 -d $(LIBINSTALL)/pkgconfig ++ install -m 644 $(LIBPC) $(LIBINSTALL)/pkgconfig + test -f $(DEFAULT_SEMANAGE_CONF_LOCATION) || install -m 644 -D semanage.conf $(DEFAULT_SEMANAGE_CONF_LOCATION) +- cd $(LIBDIR) && ln -sf $(LIBSO) $(TARGET) ++ cd $(LIBINSTALL) && ln -sf $(LIBSO) $(TARGET) + + install-pywrap: pywrap + test -d $(PYSITEDIR) || install -m 755 -d $(PYSITEDIR) +@@ -155,7 +153,7 @@ + install -m 755 $(SWIGRUBYSO) $(RUBYINSTALL)/semanage.so + + relabel: +- /sbin/restorecon $(LIBDIR)/$(LIBSO) ++ /sbin/restorecon $(LIBINSTALL)/$(LIBSO) + + clean: + -rm -f $(LIBPC) $(OBJS) $(LOBJS) $(LIBA) $(LIBSO) $(SWIGLOBJ) $(SWIGSO) $(SWIGRUBYSO) $(TARGET) conf-parse.c conf-parse.h conf-scan.c *.o *.lo *~ +diff -durN libsemanage.orig/tests/Makefile libsemanage/tests/Makefile +--- libsemanage.orig/tests/Makefile 2018-01-12 12:42:30.922043125 +0100 ++++ libsemanage/tests/Makefile 2018-01-12 10:04:18.632144240 +0100 +@@ -1,6 +1,3 @@ +-PREFIX ?= $(DESTDIR)/usr +-LIBDIR ?= $(PREFIX)/lib +- + # Add your test source files here: + SOURCES = $(sort $(wildcard *.c)) + diff --git a/buildroot/package/libsemanage/Config.in b/buildroot/package/libsemanage/Config.in new file mode 100644 index 0000000..7ee9c38 --- /dev/null +++ b/buildroot/package/libsemanage/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_LIBSEMANAGE + bool "libsemanage" + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + # - libselinux needs fts.h (not available in uClibc/musl) + # - libsemanage itself needs getpwent_r() not available in musl + # - audit is not available on musl + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_arc + select BR2_PACKAGE_AUDIT + select BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_USTR + select BR2_PACKAGE_BZIP2 + help + libsemanage is the policy management library. It uses + libsepol for binary policy manipulation and libselinux for + interacting with the SELinux system. It also exec's helper + programs for loading policy and for checking whether the + file_contexts configuration is valid (load_policy and + setfiles from policycoreutils) presently, although this may + change at least for the bootstrapping case (for rpm). + + http://selinuxproject.org/page/Main_Page + +comment "libsemanage needs a glibc toolchain w/ threads, dynamic library" + depends on !BR2_arc + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/libsemanage/libsemanage.hash b/buildroot/package/libsemanage/libsemanage.hash new file mode 100644 index 0000000..c386571 --- /dev/null +++ b/buildroot/package/libsemanage/libsemanage.hash @@ -0,0 +1,2 @@ +# From: https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 07e9477714ce6a4557a1fe924ea4cb06501b62d0fa0e3c0dc32a2cf47cb8d476 libsemanage-2.7.tar.gz diff --git a/buildroot/package/libsemanage/libsemanage.mk b/buildroot/package/libsemanage/libsemanage.mk new file mode 100644 index 0000000..b6e50e2 --- /dev/null +++ b/buildroot/package/libsemanage/libsemanage.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# libsemanage +# +################################################################################ + +LIBSEMANAGE_VERSION = 2.7 +LIBSEMANAGE_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20170804 +LIBSEMANAGE_LICENSE = LGPL-2.1+ +LIBSEMANAGE_LICENSE_FILES = COPYING +LIBSEMANAGE_DEPENDENCIES = host-bison host-flex audit libselinux ustr bzip2 +LIBSEMANAGE_INSTALL_STAGING = YES + +LIBSEMANAGE_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) + +define LIBSEMANAGE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEMANAGE_MAKE_OPTS) all +endef + +define LIBSEMANAGE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEMANAGE_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install +endef + +define LIBSEMANAGE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEMANAGE_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +HOST_LIBSEMANAGE_DEPENDENCIES = host-bison host-audit host-libsepol host-libselinux \ + host-ustr host-bzip2 host-swig + +HOST_LIBSEMANAGE_MAKE_OPTS += \ + $(HOST_CONFIGURE_OPTS) \ + PREFIX=$(HOST_DIR) \ + SWIG_LIB="$(HOST_DIR)/share/swig/$(SWIG_VERSION)/" + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +HOST_LIBSEMANAGE_DEPENDENCIES += host-python3 +HOST_LIBSEMANAGE_MAKE_OPTS += \ + PYINC="-I$(HOST_DIR)/include/python$(PYTHON3_VERSION_MAJOR)m/" \ + PYTHONLIBDIR="-L$(HOST_DIR)/lib/python$(PYTHON3_VERSION_MAJOR)/" \ + PYLIBVER="python$(PYTHON3_VERSION_MAJOR)" +else +HOST_LIBSEMANAGE_DEPENDENCIES += host-python +HOST_LIBSEMANAGE_MAKE_OPTS += \ + PYINC="-I$(HOST_DIR)/include/python$(PYTHON_VERSION_MAJOR)/" \ + PYTHONLIBDIR="-L$(HOST_DIR)/lib/python$(PYTHON_VERSION_MAJOR)/" \ + PYLIBVER="python$(PYTHON_VERSION_MAJOR)" +endif + +define HOST_LIBSEMANAGE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) all + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) swigify pywrap +endef + +define HOST_LIBSEMANAGE_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) install + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_LIBSEMANAGE_MAKE_OPTS) install-pywrap +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/libsepol/0001-libsepol-build-follow-standard-semantics-for-DESTD.patch b/buildroot/package/libsepol/0001-libsepol-build-follow-standard-semantics-for-DESTD.patch new file mode 100644 index 0000000..1daf720 --- /dev/null +++ b/buildroot/package/libsepol/0001-libsepol-build-follow-standard-semantics-for-DESTD.patch @@ -0,0 +1,109 @@ +libsepol: build: follow standard semantics for DESTDIR and PREFIX + +This patch solves the following issues: +- The pkg-config files generates odd paths when using DESTDIR without PREFIX +- DESTDIR is needed during compile time to compute library and header paths which it should not. +- Installing with both DESTDIR and PREFIX set gives us odd paths +- Make usage of DESTDIR and PREFIX more standard + +Signed-off-by: Marcus Folkesson + +diff -durN libsepol.orig/include/Makefile libsepol/include/Makefile +--- libsepol.orig/include/Makefile 2018-01-12 12:42:30.908709792 +0100 ++++ libsepol/include/Makefile 2018-01-12 09:58:04.322148228 +0100 +@@ -1,6 +1,6 @@ + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr +-INCDIR ?= $(PREFIX)/include/sepol ++PREFIX ?= /usr ++INCDIR = $(DESTDIR)$(PREFIX)/include/sepol + CILDIR ?= ../cil + + all: +diff -durN libsepol.orig/man/Makefile libsepol/man/Makefile +--- libsepol.orig/man/Makefile 2018-01-12 12:42:30.912043126 +0100 ++++ libsepol/man/Makefile 2018-01-12 09:58:04.322148228 +0100 +@@ -1,6 +1,7 @@ + # Installation directories. +-MAN8DIR ?= $(DESTDIR)/usr/share/man/man8 +-MAN3DIR ?= $(DESTDIR)/usr/share/man/man3 ++PREFIX ?= /usr ++MAN8DIR ?= $(DESTDIR)$(PREFIX)/share/man/man8 ++MAN3DIR ?= $(DESTDIR)$(PREFIX)/share/man/man3 + + all: + +diff -durN libsepol.orig/src/libsepol.pc.in libsepol/src/libsepol.pc.in +--- libsepol.orig/src/libsepol.pc.in 2018-01-12 12:42:30.912043126 +0100 ++++ libsepol/src/libsepol.pc.in 2018-01-12 09:58:04.322148228 +0100 +@@ -1,6 +1,6 @@ + prefix=@prefix@ + exec_prefix=${prefix} +-libdir=${exec_prefix}/@libdir@ ++libdir=@libdir@ + includedir=@includedir@ + + Name: libsepol +diff -durN libsepol.orig/src/Makefile libsepol/src/Makefile +--- libsepol.orig/src/Makefile 2018-01-12 12:42:30.912043126 +0100 ++++ libsepol/src/Makefile 2018-01-12 09:58:04.322148228 +0100 +@@ -1,11 +1,10 @@ + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr ++PREFIX ?= /usr + INCLUDEDIR ?= $(PREFIX)/include + LIBDIR ?= $(PREFIX)/lib +-SHLIBDIR ?= $(DESTDIR)/lib + RANLIB ?= ranlib +-LIBBASE ?= $(shell basename $(LIBDIR)) + CILDIR ?= ../cil ++LIBINSTALL = $(DESTDIR)$(LIBDIR) + + VERSION = $(shell cat ../VERSION) + LIBVERSION = 1 +@@ -52,7 +51,7 @@ + ln -sf $@ $(TARGET) + + $(LIBPC): $(LIBPC).in ../VERSION +- sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ ++ sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBDIR):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ + + $(LIBMAP): $(LIBMAP).in + ifneq ($(DISABLE_CIL),y) +@@ -80,16 +79,16 @@ + $(CC) $(CFLAGS) -fPIC -DSHARED -c -o $@ $< + + install: all +- test -d $(LIBDIR) || install -m 755 -d $(LIBDIR) +- install -m 644 $(LIBA) $(LIBDIR) +- test -d $(SHLIBDIR) || install -m 755 -d $(SHLIBDIR) +- install -m 755 $(LIBSO) $(SHLIBDIR) +- test -d $(LIBDIR)/pkgconfig || install -m 755 -d $(LIBDIR)/pkgconfig +- install -m 644 $(LIBPC) $(LIBDIR)/pkgconfig +- $(LN) -sf --relative $(SHLIBDIR)/$(LIBSO) $(LIBDIR)/$(TARGET) ++ test -d $(LIBINSTALL) || install -m 755 -d $(LIBINSTALL) ++ install -m 644 $(LIBA) $(LIBINSTALL) ++ test -d $(LIBINSTALL) || install -m 755 -d $(LIBINSTALL) ++ install -m 755 $(LIBSO) $(LIBINSTALL) ++ test -d $(LIBINSTALL)/pkgconfig || install -m 755 -d $(LIBINSTALL)/pkgconfig ++ install -m 644 $(LIBPC) $(LIBINSTALL)/pkgconfig ++ $(LN) -sf --relative $(LIBINSTALL)/$(LIBSO) $(LIBINSTALL)/$(TARGET) + + relabel: +- /sbin/restorecon $(SHLIBDIR)/$(LIBSO) ++ /sbin/restorecon $(LIBINSTALL)/$(LIBSO) + + clean: + -rm -f $(LIBPC) $(LIBMAP) $(OBJS) $(LOBJS) $(LIBA) $(LIBSO) $(TARGET) $(CIL_GENERATED) +diff -durN libsepol.orig/utils/Makefile libsepol/utils/Makefile +--- libsepol.orig/utils/Makefile 2018-01-12 12:42:30.915376458 +0100 ++++ libsepol/utils/Makefile 2018-01-12 09:58:04.322148228 +0100 +@@ -1,6 +1,6 @@ + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr +-BINDIR ?= $(PREFIX)/bin ++PREFIX ?= /usr ++BINDIR ?= $(DESTDIR)$(PREFIX)/bin + + CFLAGS ?= -Wall -Werror + override CFLAGS += -I../include diff --git a/buildroot/package/libsepol/0002-workaround-blackfin-issue.patch b/buildroot/package/libsepol/0002-workaround-blackfin-issue.patch new file mode 100644 index 0000000..3c3bd48 --- /dev/null +++ b/buildroot/package/libsepol/0002-workaround-blackfin-issue.patch @@ -0,0 +1,26 @@ +Do not make symbols hidden on Blackfin + +The libselinux logic to hide internal symbols from the DSO doesn't +work properly on Blackfin due to the USER_LABEL_PREFIX not being +handled properly. A real fix is not that simple, so this patch simply +disables the internal symbol hiding mechanism. This means that those +symbols are visible in the final DSO, which is not a problem for +proper execution, it just isn't as clean. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Adam Duskett + +Index: b/src/dso.h +=================================================================== +--- a/src/dso.h ++++ b/src/dso.h +@@ -5,7 +5,7 @@ + #define DISABLE_SYMVER 1 + #endif + +-#ifdef SHARED ++#if defined(SHARED) && !defined(__bfin__) + # define hidden __attribute__ ((visibility ("hidden"))) + # define hidden_proto(fct) __hidden_proto (fct, fct##_internal) + # define __hidden_proto(fct, internal) \ + diff --git a/buildroot/package/libsepol/0003-support-static-only.patch b/buildroot/package/libsepol/0003-support-static-only.patch new file mode 100644 index 0000000..8cf9a18 --- /dev/null +++ b/buildroot/package/libsepol/0003-support-static-only.patch @@ -0,0 +1,45 @@ +From 2140db697c7f1da2a0a3f7bbcb14c1a0dade84e5 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 9 Oct 2017 16:28:12 -0400 +Subject: [PATCH] Add support for static-only build + +Instead of unconditionally building shared libraries, this patch +improves the libsepol build system with a "STATIC" variable, which +when defined to some non-empty value, will disable the build of shared +libraries. It allows to support cases where the target architecture +does not have support for shared libraries. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Adam Duskett +--- + src/Makefile | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +diff -durNw libsepol-2.7.orig/src/Makefile libsepol-2.7/src/Makefile +--- libsepol-2.7.orig/src/Makefile 2018-01-15 21:07:51.285183415 +0100 ++++ libsepol-2.7/src/Makefile 2018-01-15 21:08:56.515182717 +0100 +@@ -39,7 +39,12 @@ + LN=gln + endif + +-all: $(LIBA) $(LIBSO) $(LIBPC) ++ALL_TARGETS = $(LIBA) $(LIBPC) ++ifeq ($(STATIC),) ++ALL_TARGETS += $(LIBSO) ++endif ++ ++all: $(ALL_TARGETS) + + + $(LIBA): $(OBJS) +@@ -81,8 +86,10 @@ + install: all + test -d $(LIBINSTALL) || install -m 755 -d $(LIBINSTALL) + install -m 644 $(LIBA) $(LIBINSTALL) ++ifeq ($(STATIC),) + test -d $(LIBINSTALL) || install -m 755 -d $(LIBINSTALL) + install -m 755 $(LIBSO) $(LIBINSTALL) ++endif + test -d $(LIBINSTALL)/pkgconfig || install -m 755 -d $(LIBINSTALL)/pkgconfig + install -m 644 $(LIBPC) $(LIBINSTALL)/pkgconfig + $(LN) -sf --relative $(LIBINSTALL)/$(LIBSO) $(LIBINSTALL)/$(TARGET) diff --git a/buildroot/package/libsepol/0004-revert-ln-relative.patch b/buildroot/package/libsepol/0004-revert-ln-relative.patch new file mode 100644 index 0000000..9d1553e --- /dev/null +++ b/buildroot/package/libsepol/0004-revert-ln-relative.patch @@ -0,0 +1,27 @@ +From 16b2b0e21e10727065042a1baabd1a887757c65c Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 9 Oct 2017 16:29:36 -0400 +Subject: [PATCH] Makefile: revert libsepol: use ln --relative to create .so symlinks + +This reverts 71393a181d63c9baae5fe8dcaeb9411d1f253998 + +ln --relative is too recent to be available in all distributions, +especially enterprise-grade distros that can stick around as long as +they are maintained (up to 10 years in some cases?). + +For the sake of Buildroot, revert the upstream patch. + +Signed-off-by: "Yann E. MORIN" + +diff -durNw libsepol-2.7.orig/src/Makefile libsepol-2.7/src/Makefile +--- libsepol-2.7.orig/src/Makefile 2018-01-15 21:37:12.821831315 +0100 ++++ libsepol-2.7/src/Makefile 2018-01-15 21:38:03.838497434 +0100 +@@ -92,7 +92,7 @@ + endif + test -d $(LIBINSTALL)/pkgconfig || install -m 755 -d $(LIBINSTALL)/pkgconfig + install -m 644 $(LIBPC) $(LIBINSTALL)/pkgconfig +- $(LN) -sf --relative $(LIBINSTALL)/$(LIBSO) $(LIBINSTALL)/$(TARGET) ++ cd $(LIBINSTALL) && ln -sf $(LIBSO) $(TARGET) + + relabel: + /sbin/restorecon $(LIBINSTALL)/$(LIBSO) diff --git a/buildroot/package/libsepol/Config.in b/buildroot/package/libsepol/Config.in new file mode 100644 index 0000000..cfa923e --- /dev/null +++ b/buildroot/package/libsepol/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBSEPOL + bool "libsepol" + depends on BR2_TOOLCHAIN_HAS_THREADS # pthread + help + Libsepol is the binary policy manipulation library. It doesn't + depend upon or use any of the other SELinux components. + + http://selinuxproject.org/page/Main_Page + +comment "libsepol needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libsepol/libsepol.hash b/buildroot/package/libsepol/libsepol.hash new file mode 100644 index 0000000..08e2bf9 --- /dev/null +++ b/buildroot/package/libsepol/libsepol.hash @@ -0,0 +1,2 @@ +# From: https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 d69d3bd8ec901a3bd5adf2be2fb47fb1a685ed73066ab482e7e505371a48f9e7 libsepol-2.7.tar.gz diff --git a/buildroot/package/libsepol/libsepol.mk b/buildroot/package/libsepol/libsepol.mk new file mode 100644 index 0000000..5932ca1 --- /dev/null +++ b/buildroot/package/libsepol/libsepol.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# libsepol +# +################################################################################ + +LIBSEPOL_VERSION = 2.7 +LIBSEPOL_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20170804 +LIBSEPOL_LICENSE = LGPL-2.1+ +LIBSEPOL_LICENSE_FILES = COPYING + +LIBSEPOL_INSTALL_STAGING = YES +LIBSEPOL_DEPENDENCIES = host-flex +HOST_LIBSEPOL_DEPENDENCIES = host-flex + +LIBSEPOL_MAKE_FLAGS = $(TARGET_CONFIGURE_OPTS) + +ifeq ($(BR2_STATIC_LIBS),y) +LIBSEPOL_MAKE_FLAGS += STATIC=1 +endif + +define LIBSEPOL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LIBSEPOL_MAKE_FLAGS) +endef + +define LIBSEPOL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install $(LIBSEPOL_MAKE_FLAGS) DESTDIR=$(STAGING_DIR) +endef + +define LIBSEPOL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install $(LIBSEPOL_MAKE_FLAGS) DESTDIR=$(TARGET_DIR) +endef + +HOST_LIBSEPOL_MAKE_ENV = \ + $(HOST_MAKE_ENV) \ + PREFIX=$(HOST_DIR) + +define HOST_LIBSEPOL_BUILD_CMDS + $(HOST_LIBSEPOL_MAKE_ENV) $(MAKE) -C $(@D) $(HOST_CONFIGURE_OPTS) +endef + +define HOST_LIBSEPOL_INSTALL_CMDS + $(HOST_LIBSEPOL_MAKE_ENV) $(MAKE) -C $(@D) install $(HOST_CONFIGURE_OPTS) + ln -sf libsepol.so.1 $(HOST_DIR)/lib/libsepol.so +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/libserial/0001-disable-python-bindings.patch b/buildroot/package/libserial/0001-disable-python-bindings.patch new file mode 100644 index 0000000..1f2f5ed --- /dev/null +++ b/buildroot/package/libserial/0001-disable-python-bindings.patch @@ -0,0 +1,26 @@ +Disable build of Python bindings, which requires the sipconfig module. + +Signed-off-by: Simon Dawson +Signed-off-by: Jörg Krause + +diff -purN libserial-0.6.0rc2.orig/Makefile.am libserial-0.6.0rc2/Makefile.am +--- libserial-0.6.0rc2.orig/Makefile.am 2014-06-05 18:37:25.000000000 +0200 ++++ libserial-0.6.0rc2/Makefile.am 2015-07-30 20:59:28.828429011 +0200 +@@ -1,4 +1,4 @@ +-SUBDIRS=src doc examples sip ++SUBDIRS=src doc examples + ACLOCAL_AMFLAGS=-I m4 + + EXTRA_DIST = doxygen.conf.in Makefile.dist libserial.spec libserial.pc +diff -purN libserial-0.6.0rc2.orig/Makefile.in libserial-0.6.0rc2/Makefile.in +--- libserial-0.6.0rc2.orig/Makefile.in 2014-06-05 18:40:09.000000000 +0200 ++++ libserial-0.6.0rc2/Makefile.in 2015-07-30 21:00:09.215188376 +0200 +@@ -348,7 +348,7 @@ target_alias = @target_alias@ + top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ +-SUBDIRS = src doc examples sip ++SUBDIRS = src doc examples + ACLOCAL_AMFLAGS = -I m4 + EXTRA_DIST = doxygen.conf.in Makefile.dist libserial.spec libserial.pc + pkgconfigdir = $(libdir)/pkgconfig diff --git a/buildroot/package/libserial/0002-Don-t-use-high-baudrates-when-not-available.patch b/buildroot/package/libserial/0002-Don-t-use-high-baudrates-when-not-available.patch new file mode 100644 index 0000000..f2ad61a --- /dev/null +++ b/buildroot/package/libserial/0002-Don-t-use-high-baudrates-when-not-available.patch @@ -0,0 +1,65 @@ +From 47ca0621ccd2100e4ba0d7f4e2a861d14f05f63c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 17 Nov 2015 23:50:14 +0100 +Subject: [PATCH] Don't use high baudrates when not available + +On certain architectures (namely Sparc), the maximum baud rate exposed +by the kernel headers is B2000000. Therefore, the current libserial +code doesn't build for the Sparc and Sparc64 architectures due to +this. + +In order to address this problem, this patch tests the value of +__MAX_BAUD. If it's higher than B2000000 then we assume we're on an +architecture that supports all baud rates up to B4000000. Otherwise, +we simply don't support the baud rates above B2000000. + +Fixes build failures such as: + +./SerialPort.h:88:24: error: 'B2500000' was not declared in this scope + BAUD_2500000 = B2500000, + +Signed-off-by: Thomas Petazzoni +--- + src/SerialPort.h | 2 ++ + src/SerialStreamBuf.h | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/src/SerialPort.h b/src/SerialPort.h +index 6c0baaa..0b1af4c 100644 +--- a/src/SerialPort.h ++++ b/src/SerialPort.h +@@ -85,11 +85,13 @@ public: + BAUD_1152000 = B1152000, + BAUD_1500000 = B1500000, + BAUD_2000000 = B2000000, ++#if __MAX_BAUD > B2000000 + BAUD_2500000 = B2500000, + BAUD_3000000 = B3000000, + BAUD_3500000 = B3500000, + BAUD_4000000 = B4000000, + #endif ++#endif /* __linux__ */ + BAUD_DEFAULT = BAUD_57600 + } ; + +diff --git a/src/SerialStreamBuf.h b/src/SerialStreamBuf.h +index ccbb996..174f31c 100644 +--- a/src/SerialStreamBuf.h ++++ b/src/SerialStreamBuf.h +@@ -85,11 +85,13 @@ extern "C++" + BAUD_1152000 = SerialPort::BAUD_1152000, + BAUD_1500000 = SerialPort::BAUD_1500000, + BAUD_2000000 = SerialPort::BAUD_2000000, ++#if __MAX_BAUD > B2000000 + BAUD_2500000 = SerialPort::BAUD_2500000, + BAUD_3000000 = SerialPort::BAUD_3000000, + BAUD_3500000 = SerialPort::BAUD_3500000, + BAUD_4000000 = SerialPort::BAUD_4000000, + #endif ++#endif /* __linux__ */ + BAUD_DEFAULT = SerialPort::BAUD_DEFAULT, + BAUD_INVALID = -1 + } ; +-- +2.6.3 + diff --git a/buildroot/package/libserial/Config.in b/buildroot/package/libserial/Config.in new file mode 100644 index 0000000..d492f6b --- /dev/null +++ b/buildroot/package/libserial/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBSERIAL + bool "libserial" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR # boost + select BR2_PACKAGE_BOOST + help + Simplified serial port programming in C++ under POSIX + operating systems. + + http://libserial.sourceforge.net/ + +comment "libserial needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/libserial/libserial.hash b/buildroot/package/libserial/libserial.hash new file mode 100644 index 0000000..bca647a --- /dev/null +++ b/buildroot/package/libserial/libserial.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/libserial/files/libserial/0.6.0rc2/ +sha1 e09113be3ba595135e95e853003ff96feea0da63 libserial-0.6.0rc2.tar.gz +md5 7787679b22901e4810bc53ecccdf8266 libserial-0.6.0rc2.tar.gz +# Locally calculated +sha256 35ee29eb1369d52ffb8658237577692f991eb508320d0abbb71c53e6494a1c23 libserial-0.6.0rc2.tar.gz diff --git a/buildroot/package/libserial/libserial.mk b/buildroot/package/libserial/libserial.mk new file mode 100644 index 0000000..b73d4c7 --- /dev/null +++ b/buildroot/package/libserial/libserial.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libserial +# +################################################################################ + +LIBSERIAL_VERSION = 0.6.0rc2 +LIBSERIAL_SITE = http://downloads.sourceforge.net/libserial +LIBSERIAL_INSTALL_STAGING = YES +LIBSERIAL_LICENSE = GPL-2.0+ +LIBSERIAL_LICENSE_FILES = COPYING +LIBSERIAL_DEPENDENCIES = boost + +LIBSERIAL_CONF_ENV = ac_cv_prog_DOCBOOK2PDF=no + +$(eval $(autotools-package)) diff --git a/buildroot/package/libserialport/0001-uclinux-detection.patch b/buildroot/package/libserialport/0001-uclinux-detection.patch new file mode 100644 index 0000000..7d7199c --- /dev/null +++ b/buildroot/package/libserialport/0001-uclinux-detection.patch @@ -0,0 +1,26 @@ +From faab9aa5879fab93556b7a3a6f24070eeb3cbf15 Mon Sep 17 00:00:00 2001 +From: Paul Cercueil +Date: Mon, 29 Aug 2016 11:11:01 +0200 +Subject: [PATCH] Fix Linux files not compiled in with a toolchain for ucLinux + +Signed-off-by: Paul Cercueil +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index f6b66e8..de6f5b9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -74,7 +74,7 @@ AC_DEFINE_UNQUOTED([SP_LIB_VERSION_REVISION], [$SP_LIB_VERSION_REVISION], [.]) + AC_DEFINE_UNQUOTED([SP_LIB_VERSION_AGE], [$SP_LIB_VERSION_AGE], [.]) + AC_DEFINE_UNQUOTED([SP_LIB_VERSION_STRING], ["$SP_LIB_VERSION"], [.]) + +-AM_CONDITIONAL([LINUX], [test -z "${host_os##linux*}"]) ++AM_CONDITIONAL([LINUX], [test -z "${host_os##linux*}" || test -z "${host_os##uclinux*}"]) + AM_CONDITIONAL([WIN32], [test -z "${host_os##mingw*}" || test -z "${host_os##cygwin*}"]) + AM_CONDITIONAL([MACOSX], [test -z "${host_os##darwin*}"]) + AM_CONDITIONAL([FREEBSD], [test -z "${host_os##freebsd*}"]) +-- +2.8.1 + diff --git a/buildroot/package/libserialport/Config.in b/buildroot/package/libserialport/Config.in new file mode 100644 index 0000000..d821830 --- /dev/null +++ b/buildroot/package/libserialport/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBSERIALPORT + bool "libserialport" + help + Libserialport is a minimal, cross-platform shared + library written in C that is intended to take care + of the OS-specific details when writing software + that uses serial ports. + + http://sigrok.org/wiki/Libserialport diff --git a/buildroot/package/libserialport/libserialport.hash b/buildroot/package/libserialport/libserialport.hash new file mode 100644 index 0000000..f261902 --- /dev/null +++ b/buildroot/package/libserialport/libserialport.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 4a2af9d9c3ff488e92fb75b4ba38b35bcf9b8a66df04773eba2a7bbf1fa7529d libserialport-0.1.1.tar.gz diff --git a/buildroot/package/libserialport/libserialport.mk b/buildroot/package/libserialport/libserialport.mk new file mode 100644 index 0000000..84d7a53 --- /dev/null +++ b/buildroot/package/libserialport/libserialport.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libserialport +# +################################################################################ + +LIBSERIALPORT_VERSION = 0.1.1 +LIBSERIALPORT_SITE = http://sigrok.org/download/source/libserialport +LIBSERIALPORT_LICENSE = LGPL-3.0+ +LIBSERIALPORT_LICENSE_FILES = COPYING +LIBSERIALPORT_INSTALL_STAGING = YES +LIBSERIALPORT_DEPENDENCIES = host-pkgconf +LIBSERIALPORT_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsexy/Config.in b/buildroot/package/libsexy/Config.in new file mode 100644 index 0000000..5d1e710 --- /dev/null +++ b/buildroot/package/libsexy/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBSEXY + bool "libsexy" + depends on BR2_PACKAGE_LIBGTK2 + select BR2_PACKAGE_LIBXML2 + help + libsexy is a collection of GTK+ widgets that extend the + functionality of such standard widgets as GtkEntry and + GtkLabel by subclassing them and working around the + limitations of the widgets. + + http://www.chipx86.com/wiki/Libsexy diff --git a/buildroot/package/libsexy/libsexy.hash b/buildroot/package/libsexy/libsexy.hash new file mode 100644 index 0000000..78b1a82 --- /dev/null +++ b/buildroot/package/libsexy/libsexy.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8c4101a8cda5fccbba85ba1a15f46f2cf75deaa8b3c525ce5b135b9e1a8fe49e libsexy-0.1.11.tar.gz diff --git a/buildroot/package/libsexy/libsexy.mk b/buildroot/package/libsexy/libsexy.mk new file mode 100644 index 0000000..b079264 --- /dev/null +++ b/buildroot/package/libsexy/libsexy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libsexy +# +################################################################################ + +LIBSEXY_VERSION = 0.1.11 +LIBSEXY_SITE = http://releases.chipx86.com/libsexy/libsexy +LIBSEXY_DEPENDENCIES = libgtk2 libxml2 +LIBSEXY_INSTALL_STAGING = YES +LIBSEXY_LICENSE = LGPL-2.1+ +LIBSEXY_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsha1/Config.in b/buildroot/package/libsha1/Config.in new file mode 100644 index 0000000..5467a6c --- /dev/null +++ b/buildroot/package/libsha1/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBSHA1 + bool "libsha1" + help + libsha1 is a tiny library providing SHA1 implementation, + created for facilitating X server compilation on devices + when larger libraries containing SHA1 implementations + (OpenSSL, Mozilla NSS) are not needed. + + https://github.com/dottedmag/libsha1 diff --git a/buildroot/package/libsha1/libsha1.hash b/buildroot/package/libsha1/libsha1.hash new file mode 100644 index 0000000..6d597ab --- /dev/null +++ b/buildroot/package/libsha1/libsha1.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ef4c75007ac41c3dc09e0225943c789ba2b9c632a6cd7b548e0519477ac2f768 libsha1-0.3.tar.gz diff --git a/buildroot/package/libsha1/libsha1.mk b/buildroot/package/libsha1/libsha1.mk new file mode 100644 index 0000000..4d80f3a --- /dev/null +++ b/buildroot/package/libsha1/libsha1.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libsha1 +# +################################################################################ + +LIBSHA1_VERSION = 0.3 +LIBSHA1_SITE = $(call github,dottedmag,libsha1,$(LIBSHA1_VERSION)) +LIBSHA1_LICENSE = BSD-3-Clause or GPL +LIBSHA1_LICENSE_FILES = COPYING + +LIBSHA1_INSTALL_STAGING = YES + +# We're getting the source code from GitHub, so there is no generated +# configure script in the tarball. +LIBSHA1_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libshairplay/Config.in b/buildroot/package/libshairplay/Config.in new file mode 100644 index 0000000..1cfbdfe --- /dev/null +++ b/buildroot/package/libshairplay/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBSHAIRPLAY + bool "libshairplay" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # avahi + depends on !BR2_STATIC_LIBS # avahi + select BR2_PACKAGE_AVAHI + select BR2_PACKAGE_AVAHI_DAEMON + select BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY # runtime + help + libshairplay is a client library that emulates an airplay + server. + + https://github.com/juhovh/shairplay + +comment "libshairplay needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/libshairplay/libshairplay.hash b/buildroot/package/libshairplay/libshairplay.hash new file mode 100644 index 0000000..19261f9 --- /dev/null +++ b/buildroot/package/libshairplay/libshairplay.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 49ac0e0470ec6367f720c7b79a09165138f57b60f5949a2d9c38be5823d13294 libshairplay-ce80e005908f41d0e6fde1c4a21e9cb8ee54007b.tar.gz diff --git a/buildroot/package/libshairplay/libshairplay.mk b/buildroot/package/libshairplay/libshairplay.mk new file mode 100644 index 0000000..4b2883c --- /dev/null +++ b/buildroot/package/libshairplay/libshairplay.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libshairplay +# +################################################################################ + +LIBSHAIRPLAY_VERSION = ce80e005908f41d0e6fde1c4a21e9cb8ee54007b +LIBSHAIRPLAY_SITE = $(call github,juhovh,shairplay,$(LIBSHAIRPLAY_VERSION)) +LIBSHAIRPLAY_INSTALL_STAGING = YES +LIBSHAIRPLAY_AUTORECONF = YES +LIBSHAIRPLAY_LICENSE = MIT, BSD-3-Clause, LGPL-2.1+ +LIBSHAIRPLAY_LICENSE_FILES = LICENSE +LIBSHAIRPLAY_DEPENDENCIES = host-pkgconf $(if $(BR2_PACKAGE_LIBAO),libao) + +$(eval $(autotools-package)) diff --git a/buildroot/package/libshout/0001-Fix-THEORA-SPEEX-_LDFLAGS-typo.patch b/buildroot/package/libshout/0001-Fix-THEORA-SPEEX-_LDFLAGS-typo.patch new file mode 100644 index 0000000..4d173c5 --- /dev/null +++ b/buildroot/package/libshout/0001-Fix-THEORA-SPEEX-_LDFLAGS-typo.patch @@ -0,0 +1,45 @@ +From d96a3cafeebeb80b4796bacbe0e6da0bbd3ee48e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Sun, 28 Aug 2016 00:39:55 +0200 +Subject: [PATCH 1/2] Fix {THEORA,SPEEX}_LDFLAGS typo +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Needed to properly link against libshout, otherwise the build fails with: + + error: LDFLAGS: No such file or directory + +Upstream status: pending +https://github.com/xiph/Icecast-libshout/pull/4 + +Signed-off-by: Jörg Krause +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 87a7f55..85f18ad 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -134,7 +134,7 @@ PKG_CHECK_MODULES(THEORA, theora, [ + ]) + fi + XIPH_VAR_APPEND([XIPH_CPPFLAGS],[$THEORA_CFLAGS]) +-XIPH_VAR_PREPEND([XIPH_LIBS],[$THEORA LDFLAGS $THEORA_LIBS]) ++XIPH_VAR_PREPEND([XIPH_LIBS],[$THEORA_LDFLAGS $THEORA_LIBS]) + AM_CONDITIONAL([HAVE_THEORA], [test -n "$THEORA_LIBS"]) + if test -n "$THEORA_LIBS" + then +@@ -153,7 +153,7 @@ PKG_CHECK_MODULES(SPEEX, speex, [ + ]) + fi + XIPH_VAR_APPEND([XIPH_CPPFLAGS],[$SPEEX_CFLAGS]) +-XIPH_VAR_PREPEND([XIPH_LIBS],[$SPEEX LDFLAGS $SPEEX_LIBS]) ++XIPH_VAR_PREPEND([XIPH_LIBS],[$SPEEX_LDFLAGS $SPEEX_LIBS]) + AM_CONDITIONAL([HAVE_SPEEX], [test -n "$SPEEX_LIBS"]) + if test -n "$SPEEX_LIBS" + then +-- +2.9.3 + diff --git a/buildroot/package/libshout/0002-Make-sure-SHOUT_REQUIRES-contains-OpenSSL.patch b/buildroot/package/libshout/0002-Make-sure-SHOUT_REQUIRES-contains-OpenSSL.patch new file mode 100644 index 0000000..08d7fa9 --- /dev/null +++ b/buildroot/package/libshout/0002-Make-sure-SHOUT_REQUIRES-contains-OpenSSL.patch @@ -0,0 +1,55 @@ +From 69774132422af1d017008eb5daed8e2099d2fa0a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Wed, 31 Aug 2016 21:55:51 +0200 +Subject: [PATCH 2/2] Make sure @SHOUT_REQUIRES@ contains OpenSSL +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Static linking userspace programs such as mpd against libshout +currently doesn't work out of the box, because libshout is linked +against libssl, but this isn't expressed in libshouts pkg-config +file: + +``` +/usr/lib/libshout.a(tls.o): In function `tls_check_cert': +tls.c:(.text+0x10): undefined reference to `SSL_get_peer_certificate' +tls.c:(.text+0x24): undefined reference to `SSL_get_verify_result' +tls.c:(.text+0x4c): undefined reference to `X509_get_subject_name' +tls.c:(.text+0x60): undefined reference to `X509_NAME_get_text_by_NID' +tls.c:(.text+0x118): undefined reference to `X509_NAME_get_entry' +tls.c:(.text+0x11c): undefined reference to `X509_NAME_ENTRY_get_data' +tls.c:(.text+0x120): undefined reference to `ASN1_STRING_length' +tls.c:(.text+0x148): undefined reference to `X509_free' +tls.c:(.text+0x178): undefined reference to `X509_NAME_get_index_by_NID' +``` + +Since OpenSSL installs its own .pc files, make sure that @SHOUT_REQUIRES@ +contains `ssl`. + +Upstream status: pending +https://github.com/xiph/Icecast-libshout/pull/5 + +Signed-off-by: Jörg Krause +--- + configure.ac | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 85f18ad..2b9c505 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -197,6 +197,10 @@ XIPH_PATH_OPENSSL([ + ]) + AC_SUBST([SHOUT_TLS]) + AM_CONDITIONAL([HAVE_TLS], [test -n "$OPENSSL_LIBS"]) ++if test "$SHOUT_TLS" = "1" ++then ++ SHOUT_REQUIRES="$SHOUT_REQUIRES, libssl" ++fi + + SHOUT_VERSION="$VERSION" + SHOUT_CPPFLAGS="-I$shout_includedir $VORBIS_CFLAGS $PTHREAD_CPPFLAGS" +-- +2.9.3 + diff --git a/buildroot/package/libshout/Config.in b/buildroot/package/libshout/Config.in new file mode 100644 index 0000000..f8749b9 --- /dev/null +++ b/buildroot/package/libshout/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBSHOUT + bool "libshout" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + help + Libshout is a library for communicating with and sending data + to an icecast server. It handles the socket connection, the + timing of the data, and prevents bad data from getting to the + icecast server. + + http://icecast.org/download/ diff --git a/buildroot/package/libshout/libshout.hash b/buildroot/package/libshout/libshout.hash new file mode 100644 index 0000000..5b3ae2d --- /dev/null +++ b/buildroot/package/libshout/libshout.hash @@ -0,0 +1,3 @@ +# From https://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/libshout/Manifest +# hash from http://downloads.xiph.org/releases/libshout/SHA256SUMS is wrong! +sha256 f3acb8dec26f2dbf6df778888e0e429a4ce9378a9d461b02a7ccbf2991bbf24d libshout-2.4.1.tar.gz diff --git a/buildroot/package/libshout/libshout.mk b/buildroot/package/libshout/libshout.mk new file mode 100644 index 0000000..4f20908 --- /dev/null +++ b/buildroot/package/libshout/libshout.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# libshout +# +################################################################################ + +LIBSHOUT_VERSION = 2.4.1 +LIBSHOUT_SITE = http://downloads.xiph.org/releases/libshout +LIBSHOUT_LICENSE = LGPL-2.0+ +LIBSHOUT_LICENSE_FILES = COPYING +LIBSHOUT_INSTALL_STAGING = YES +LIBSHOUT_DEPENDENCIES = host-pkgconf libogg libvorbis + +# patching configure.ac +LIBSHOUT_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LIBTHEORA),y) +LIBSHOUT_CONF_OPTS += --enable-theora +LIBSHOUT_DEPENDENCIES += libtheora +else +LIBSHOUT_CONF_OPTS += --disable-theora +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +LIBSHOUT_CONF_OPTS += --enable-speex +LIBSHOUT_DEPENDENCIES += speex +else +LIBSHOUT_CONF_OPTS += --disable-speex +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBSHOUT_CONF_OPTS += --with-openssl +LIBSHOUT_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_LIBRESSL),y) +LIBSHOUT_CONF_OPTS += --with-openssl=$(STAGING_DIR)/lib +LIBSHOUT_DEPENDENCIES += libressl +else +LIBSHOUT_CONF_OPTS += --without-openssl +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsidplay2/0001-sidplay2-libs-2.1.1.patch b/buildroot/package/libsidplay2/0001-sidplay2-libs-2.1.1.patch new file mode 100644 index 0000000..7c6813b --- /dev/null +++ b/buildroot/package/libsidplay2/0001-sidplay2-libs-2.1.1.patch @@ -0,0 +1,227 @@ +From 38493fceb39ac33e12c9c69d78f5584413b479f4 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Wed, 1 Mar 2017 10:03:40 +0100 +Subject: [PATCH] Various fixes to compile libsidplay2 with newer gcc compilers + +Downloaded from +http://tsubasa.googlecode.com/svn/trunk/tsubasa/sidplay2-libs/sidplay2-libs-2.1.1.diff + +Signed-off-by: Bernd Kuhls +[Thomas: adjusted to avoid the need to autoreconf, which doesn't work +properly on this package.] +Signed-off-by: Thomas Petazzoni +--- + builders/hardsid-builder/src/hardsid-builder.cpp | 1 + + builders/resid-builder/src/resid-builder.cpp | 1 + + builders/resid-builder/src/resid.cpp | 1 + + configure | 2 +- + libsidplay/configure | 5 +++-- + libsidplay/include/sidplay/SmartPtr.h | 28 ++++++++++++------------ + libsidplay/include/sidplay/sidendian.h | 18 +++++++++------ + libsidutils/include/sidplay/utils/SidUsage.h | 2 +- + 8 files changed, 33 insertions(+), 25 deletions(-) + +diff --git a/builders/hardsid-builder/src/hardsid-builder.cpp b/builders/hardsid-builder/src/hardsid-builder.cpp +index f54d0a9..9375e40 100644 +--- a/builders/hardsid-builder/src/hardsid-builder.cpp ++++ b/builders/hardsid-builder/src/hardsid-builder.cpp +@@ -47,6 +47,7 @@ + ***************************************************************************/ + + #include ++#include + #include "config.h" + + #ifdef HAVE_EXCEPTIONS +diff --git a/builders/resid-builder/src/resid-builder.cpp b/builders/resid-builder/src/resid-builder.cpp +index e6e4eaa..4c7650f 100644 +--- a/builders/resid-builder/src/resid-builder.cpp ++++ b/builders/resid-builder/src/resid-builder.cpp +@@ -37,6 +37,7 @@ + ***************************************************************************/ + + #include ++#include + + #include "config.h" + #ifdef HAVE_EXCEPTIONS +diff --git a/builders/resid-builder/src/resid.cpp b/builders/resid-builder/src/resid.cpp +index 8c27850..d3123c5 100644 +--- a/builders/resid-builder/src/resid.cpp ++++ b/builders/resid-builder/src/resid.cpp +@@ -16,6 +16,7 @@ + * * + ***************************************************************************/ + ++#include + #include "config.h" + + #ifdef HAVE_EXCEPTIONS +diff --git a/configure b/configure +index 1200eaf..77948b4 100755 +--- a/configure ++++ b/configure +@@ -1227,7 +1227,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + #Variables + pwd=`pwd` +-builders='${libdir}'/sidplay/builders ++builders='${libdir}'/ + ac_configure_args="$ac_configure_args --disable-library-checks" + + ac_aux_dir= +diff --git a/libsidplay/configure b/libsidplay/configure +index 05a8ea6..3d93956 100755 +--- a/libsidplay/configure ++++ b/libsidplay/configure +@@ -23466,8 +23466,9 @@ _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include +- #include ++#include ++ #include ++ using namespace std; + int + main () + { +diff --git a/libsidplay/include/sidplay/SmartPtr.h b/libsidplay/include/sidplay/SmartPtr.h +index c0cbb1a..15efd10 100644 +--- a/libsidplay/include/sidplay/SmartPtr.h ++++ b/libsidplay/include/sidplay/SmartPtr.h +@@ -17,16 +17,16 @@ class SmartPtrBase_sidtt + doFree = bufOwner; + if ( bufferLen >= 1 ) + { +- pBufCurrent = ( bufBegin = buffer ); +- bufEnd = bufBegin + bufferLen; +- bufLen = bufferLen; +- status = true; ++ this->pBufCurrent = ( this->bufBegin = buffer ); ++ this->bufEnd = this->bufBegin + bufferLen; ++ this->bufLen = bufferLen; ++ this->status = true; + } + else + { +- pBufCurrent = ( bufBegin = ( bufEnd = 0 )); +- bufLen = 0; +- status = false; ++ this->pBufCurrent = ( this->bufBegin = ( this->bufEnd = 0 )); ++ this->bufLen = 0; ++ this->status = false; + } + } + +@@ -211,16 +211,16 @@ class SmartPtr_sidtt : public SmartPtrBase_sidtt + { + if ( bufferLen >= 1 ) + { +- pBufCurrent = ( bufBegin = buffer ); +- bufEnd = bufBegin + bufferLen; +- bufLen = bufferLen; +- status = true; ++ this->pBufCurrent = ( this->bufBegin = buffer ); ++ this->bufEnd = this->bufBegin + bufferLen; ++ this->bufLen = bufferLen; ++ this->status = true; + } + else + { +- pBufCurrent = bufBegin = bufEnd = 0; +- bufLen = 0; +- status = false; ++ this->pBufCurrent = this->bufBegin = this->bufEnd = 0; ++ this->bufLen = 0; ++ this->status = false; + } + } + }; +diff --git a/libsidplay/include/sidplay/sidendian.h b/libsidplay/include/sidplay/sidendian.h +index 9fa8582..6115282 100644 +--- a/libsidplay/include/sidplay/sidendian.h ++++ b/libsidplay/include/sidplay/sidendian.h +@@ -16,6 +16,10 @@ + ***************************************************************************/ + /*************************************************************************** + * $Log: sidendian.h,v $ ++ * Revision 1.6 2005/11/20 11:02:06 s_a_white ++ * Work around for bug in gcc 4 (optimiser breaks if variable never has a ++ * direct assignment). ++ * + * Revision 1.5 2001/07/03 22:44:13 s_a_white + * Added endian_16 to convert a 16 bit value to an array of 8s. + * +@@ -141,7 +145,7 @@ inline void endian_16swap8 (uint_least16_t &word) + // Convert high-byte and low-byte to 16-bit word. + inline uint_least16_t endian_16 (uint8_t hi, uint8_t lo) + { +- uint_least16_t word; ++ uint_least16_t word = 0; + endian_16lo8 (word, lo); + endian_16hi8 (word, hi); + return word; +@@ -165,7 +169,7 @@ inline void endian_16 (uint8_t ptr[2], uint_least16_t word) + + inline void endian_16 (char ptr[2], uint_least16_t word) + { +- endian_16 ((uint8_t *) ptr, word); ++ endian_16 ((uint8_t *) ptr, word); + } + + // Convert high-byte and low-byte to 16-bit little endian word. +@@ -334,7 +338,7 @@ inline void endian_32swap16 (uint_least32_t &dword) + // Swap word endian. + inline void endian_32swap8 (uint_least32_t &dword) + { +- uint_least16_t lo, hi; ++ uint_least16_t lo = 0, hi = 0; + lo = endian_32lo16 (dword); + hi = endian_32hi16 (dword); + endian_16swap8 (lo); +@@ -346,8 +350,8 @@ inline void endian_32swap8 (uint_least32_t &dword) + // Convert high-byte and low-byte to 32-bit word. + inline uint_least32_t endian_32 (uint8_t hihi, uint8_t hilo, uint8_t hi, uint8_t lo) + { +- uint_least32_t dword; +- uint_least16_t word; ++ uint_least32_t dword = 0; ++ uint_least16_t word = 0; + endian_32lo8 (dword, lo); + endian_32hi8 (dword, hi); + endian_16lo8 (word, hilo); +@@ -374,7 +378,7 @@ inline void endian_little32 (uint8_t ptr[4], uint_least32_t dword) + defined(SID_WORDS_LITTLEENDIAN) + *((uint_least32_t *) ptr) = dword; + #else +- uint_least16_t word; ++ uint_least16_t word = 0; + ptr[0] = endian_32lo8 (dword); + ptr[1] = endian_32hi8 (dword); + word = endian_32hi16 (dword); +@@ -401,7 +405,7 @@ inline void endian_big32 (uint8_t ptr[4], uint_least32_t dword) + defined(SID_WORDS_BIGENDIAN) + *((uint_least32_t *) ptr) = dword; + #else +- uint_least16_t word; ++ uint_least16_t word = 0; + word = endian_32hi16 (dword); + ptr[1] = endian_16lo8 (word); + ptr[0] = endian_16hi8 (word); +diff --git a/libsidutils/include/sidplay/utils/SidUsage.h b/libsidutils/include/sidplay/utils/SidUsage.h +index 2afb0f3..0496eea 100755 +--- a/libsidutils/include/sidplay/utils/SidUsage.h ++++ b/libsidutils/include/sidplay/utils/SidUsage.h +@@ -33,7 +33,7 @@ struct sid2_usage_t: public sid_usage_t + uint_least16_t length; // usage scan length + + // Copy common parts of basic usage to extended usage. +- sid2_usage_t &sid2_usage_t::operator= (const sid_usage_t &usage) ++ sid2_usage_t &operator= (const sid_usage_t &usage) + { + *((sid_usage_t *) this) = usage; + return *this; +-- +2.7.4 + diff --git a/buildroot/package/libsidplay2/0002-pkg-config.patch b/buildroot/package/libsidplay2/0002-pkg-config.patch new file mode 100644 index 0000000..ce37e94 --- /dev/null +++ b/buildroot/package/libsidplay2/0002-pkg-config.patch @@ -0,0 +1,25 @@ +Include correct libdir in pkgconfig files + +Downloaded from +https://sources.debian.net/src/sidplay-libs/2.1.1-14/debian/patches/pkg-config.patch/ + +Signed-off-by: Bernd Kuhls + +--- sidplay-libs-2.1.1.orig/libsidplay/unix/libsidplay2.pc.in ++++ sidplay-libs-2.1.1/libsidplay/unix/libsidplay2.pc.in +@@ -7,5 +7,5 @@ builders=@builders@ + Name: @PACKAGE@ + Description: C64 cycle exact stereo sidplayer library. + Version: @VERSION@ +-Libs: ${libdir}/libsidplay2.la ++Libs: -L${libdir} -lsidplay2 + Cflags: -DHAVE_UNIX -I${includedir} +--- sidplay-libs-2.1.1.orig/libsidutils/unix/libsidutils.pc.in ++++ sidplay-libs-2.1.1/libsidutils/unix/libsidutils.pc.in +@@ -6,5 +6,5 @@ includedir=@includedir@ + Name: @PACKAGE@ + Description: Utils for supporting the libsidplay2 library. + Version: @VERSION@ +-Libs: ${libdir}/libsidutils.la ++Libs: -L${libdir} -lsidutils + Cflags: -DHAVE_UNIX -I${includedir} diff --git a/buildroot/package/libsidplay2/0003-gcc6.patch b/buildroot/package/libsidplay2/0003-gcc6.patch new file mode 100644 index 0000000..53601f6 --- /dev/null +++ b/buildroot/package/libsidplay2/0003-gcc6.patch @@ -0,0 +1,44 @@ +Fix build with gcc6 + +gcc6 triggers an error during build: + +xsid.cpp:101:1: error: narrowing conversion of ''\200'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] + }; + ^ +xsid.cpp:101:1: error: narrowing conversion of ''\224'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] +xsid.cpp:101:1: error: narrowing conversion of ''\251'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] +xsid.cpp:101:1: error: narrowing conversion of ''\274'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] +xsid.cpp:101:1: error: narrowing conversion of ''\316'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] +xsid.cpp:101:1: error: narrowing conversion of ''\341'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] +xsid.cpp:101:1: error: narrowing conversion of ''\362'' from 'char' to 'int8_t {aka signed char}' inside { } [-Wnarrowing] + +To fix the problem change the array type from int8_t to char as proposed +by Khem Raj: +http://lists.busybox.net/pipermail/buildroot/2016-August/169540.html + +Signed-off-by: Bernd Kuhls + +diff -uNr sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.cpp sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.cpp +--- sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.cpp 2004-06-14 22:08:02.000000000 +0200 ++++ sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.cpp 2016-08-12 18:10:20.000000000 +0200 +@@ -94,7 +94,7 @@ + '\x08', '\x19', '\x2a', '\x3b', '\x4c', '\x5d', '\x6e', '\x7f' + }; + */ +-const int8_t XSID::sampleConvertTable[16] = ++const char XSID::sampleConvertTable[16] = + { + '\x80', '\x94', '\xa9', '\xbc', '\xce', '\xe1', '\xf2', '\x03', + '\x1b', '\x2a', '\x3b', '\x49', '\x58', '\x66', '\x73', '\x7f' +diff -uNr sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.h sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.h +--- sidplay-libs-2.1.1.org/libsidplay/src/xsid/xsid.h 2004-06-14 22:08:02.000000000 +0200 ++++ sidplay-libs-2.1.1/libsidplay/src/xsid/xsid.h 2016-08-12 18:11:01.000000000 +0200 +@@ -238,7 +238,7 @@ + uint8_t sidData0x18; + bool _sidSamples; + int8_t sampleOffset; +- static const int8_t sampleConvertTable[16]; ++ static const char sampleConvertTable[16]; + bool wasRunning; + + private: diff --git a/buildroot/package/libsidplay2/Config.in b/buildroot/package/libsidplay2/Config.in new file mode 100644 index 0000000..1bbe49b --- /dev/null +++ b/buildroot/package/libsidplay2/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBSIDPLAY2 + bool "libsidplay2" + depends on BR2_INSTALL_LIBSTDCPP + help + Sidplay 2 is the second in the Sidplay series originally + developed by Michael Schwendt. This version is written by + Simon White and is cycle accurate for improved sound + reproduction. Sidplay 2 is capable of playing all C64 mono and + stereo file formats. + + http://sourceforge.net/projects/sidplay2 + +comment "libsidplay2 needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/libsidplay2/libsidplay2.hash b/buildroot/package/libsidplay2/libsidplay2.hash new file mode 100644 index 0000000..1b45cb8 --- /dev/null +++ b/buildroot/package/libsidplay2/libsidplay2.hash @@ -0,0 +1,2 @@ +# From http://sourceforge.net/projects/sidplay2/files/sidplay2/sidplay-libs-2.1.1/ +sha1 8af6350866edc30b0d331e075fa97292f6f645a5 sidplay-libs-2.1.1.tar.gz diff --git a/buildroot/package/libsidplay2/libsidplay2.mk b/buildroot/package/libsidplay2/libsidplay2.mk new file mode 100644 index 0000000..20af772 --- /dev/null +++ b/buildroot/package/libsidplay2/libsidplay2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libsidplay2 +# +################################################################################ + +LIBSIDPLAY2_VERSION = 2.1.1 +LIBSIDPLAY2_SOURCE = sidplay-libs-$(LIBSIDPLAY2_VERSION).tar.gz +LIBSIDPLAY2_SITE = http://downloads.sourceforge.net/project/sidplay2/sidplay2/sidplay-libs-$(LIBSIDPLAY2_VERSION) +LIBSIDPLAY2_LICENSE = GPL-2.0+ +LIBSIDPLAY2_LICENSE_FILES = libsidplay/COPYING +LIBSIDPLAY2_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsigc/Config.in b/buildroot/package/libsigc/Config.in new file mode 100644 index 0000000..4bd762e --- /dev/null +++ b/buildroot/package/libsigc/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBSIGC + bool "libsigc++" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + help + libsigc++ implements a typesafe callback system for standard + C++. It allows you to define signals and to connect those + signals to any callback function, either global or a member + function, regardless of whether it is static or virtual. + + http://libsigc.sourceforge.net/ + +comment "libsigc++ needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/buildroot/package/libsigc/libsigc.hash b/buildroot/package/libsigc/libsigc.hash new file mode 100644 index 0000000..a630534 --- /dev/null +++ b/buildroot/package/libsigc/libsigc.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/libsigc++/2.10/libsigc++-2.10.0.sha256sum +sha256 f843d6346260bfcb4426259e314512b99e296e8ca241d771d21ac64f28298d81 libsigc++-2.10.0.tar.xz diff --git a/buildroot/package/libsigc/libsigc.mk b/buildroot/package/libsigc/libsigc.mk new file mode 100644 index 0000000..d7cbd36 --- /dev/null +++ b/buildroot/package/libsigc/libsigc.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libsigc +# +################################################################################ + +LIBSIGC_VERSION_MAJOR = 2.10 +LIBSIGC_VERSION = $(LIBSIGC_VERSION_MAJOR).0 +LIBSIGC_SOURCE = libsigc++-$(LIBSIGC_VERSION).tar.xz +LIBSIGC_SITE = http://ftp.gnome.org/pub/GNOME/sources/libsigc++/$(LIBSIGC_VERSION_MAJOR) +LIBSIGC_DEPENDENCIES = host-m4 +LIBSIGC_INSTALL_STAGING = YES +LIBSIGC_LICENSE = LGPL-2.1+ +LIBSIGC_LICENSE_FILES = COPYING + +define LIBSIGC_INSTALL_TARGET_FIXUP + rm -rf $(TARGET_DIR)/usr/share/devhelp/books/libsigc++* +endef + +LIBSIGC_POST_INSTALL_TARGET_HOOKS += LIBSIGC_INSTALL_TARGET_FIXUP + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsigrok/Config.in b/buildroot/package/libsigrok/Config.in new file mode 100644 index 0000000..fb74bea --- /dev/null +++ b/buildroot/package/libsigrok/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_LIBSIGROK + bool "libsigrok" + # libglib2 + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS # libzip + # std=c11 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + select BR2_PACKAGE_LIBZIP + select BR2_PACKAGE_LIBGLIB2 + help + Libsigrok is a shared library written in C, which provides + the basic hardware access drivers for logic analyzers and + other supported devices, as well as input/output file format + support. + + This library is a part of the sigrok software suite. + + http://sigrok.org/wiki/Libsigrok + +if BR2_PACKAGE_LIBSIGROK + +config BR2_PACKAGE_LIBSIGROKCXX + bool "build C++ bindings" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # glibmm + select BR2_PACKAGE_GLIBMM + help + Build libsigrok C++ bindings as well. + +comment "C++ bindings need a toolchain w/ C++, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +endif + +comment "libsigrok needs a toolchain w/ wchar, threads, dynamic library, gcc >= 4.7" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || BR2_STATIC_LIBS diff --git a/buildroot/package/libsigrok/libsigrok.hash b/buildroot/package/libsigrok/libsigrok.hash new file mode 100644 index 0000000..47ad612 --- /dev/null +++ b/buildroot/package/libsigrok/libsigrok.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 4c8c86779b880a5c419f6c77a08b1147021e5a19fa83b0f3b19da27463c9f3a4 libsigrok-0.5.0.tar.gz diff --git a/buildroot/package/libsigrok/libsigrok.mk b/buildroot/package/libsigrok/libsigrok.mk new file mode 100644 index 0000000..ef7fab8 --- /dev/null +++ b/buildroot/package/libsigrok/libsigrok.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# libsigrok +# +################################################################################ + +LIBSIGROK_VERSION = 0.5.0 +LIBSIGROK_SITE = http://sigrok.org/download/source/libsigrok +LIBSIGROK_LICENSE = GPL-3.0+ +LIBSIGROK_LICENSE_FILES = COPYING +LIBSIGROK_INSTALL_STAGING = YES +LIBSIGROK_DEPENDENCIES = libglib2 libzip host-pkgconf +LIBSIGROK_CONF_OPTS = --disable-glibtest --disable-java --disable-python + +ifeq ($(BR2_PACKAGE_LIBSERIALPORT),y) +LIBSIGROK_CONF_OPTS += --enable-libserialport +LIBSIGROK_DEPENDENCIES += libserialport +else +LIBSIGROK_CONF_OPTS += --disable-libserialport +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI),y) +LIBSIGROK_CONF_OPTS += --enable-libftdi +LIBSIGROK_DEPENDENCIES += libftdi +else +LIBSIGROK_CONF_OPTS += --disable-libftdi +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +LIBSIGROK_CONF_OPTS += --enable-libusb +LIBSIGROK_DEPENDENCIES += libusb +else +LIBSIGROK_CONF_OPTS += --disable-libusb +endif + +ifeq ($(BR2_PACKAGE_GLIBMM),y) +LIBSIGROK_DEPENDENCIES += glibmm +endif + +ifeq ($(BR2_PACKAGE_LIBSIGROKCXX),y) +LIBSIGROK_CONF_OPTS += --enable-cxx +LIBSIGROK_AUTORECONF_OPTS += -I $(HOST_DIR)/share/autoconf-archive +LIBSIGROK_DEPENDENCIES += \ + host-autoconf-archive \ + glibmm \ + host-doxygen \ + $(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python) +else +LIBSIGROK_CONF_OPTS += --disable-cxx +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsigrokdecode/Config.in b/buildroot/package/libsigrokdecode/Config.in new file mode 100644 index 0000000..28cbb5c --- /dev/null +++ b/buildroot/package/libsigrokdecode/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_LIBSIGROKDECODE + bool "libsigrokdecode" + depends on !BR2_PACKAGE_PYTHON # python3 + depends on BR2_USE_WCHAR # libglib2/python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2/python3 + depends on BR2_USE_MMU # libglib2/python3 + depends on !BR2_STATIC_LIBS # python3 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PYTHON3 + help + Libsigrokdecode is a shared library written in C, which + provides (streaming) protocol decoding functionality. Say + yes here if you want to add this functionality to your + buildroot-generated sigrok suite. + + This library is a part of the sigrok software suite. + + http://sigrok.org/wiki/Libsigrokdecode + +comment "libsigrokdecode needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_PYTHON + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +comment "libsigrokdecode is not compatible with python" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_PYTHON diff --git a/buildroot/package/libsigrokdecode/libsigrokdecode.hash b/buildroot/package/libsigrokdecode/libsigrokdecode.hash new file mode 100644 index 0000000..a4914b2 --- /dev/null +++ b/buildroot/package/libsigrokdecode/libsigrokdecode.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 4aa8579ecea9b421b8ac048a9b18c27e63206839f269374398d89c14a47bd1c1 libsigrokdecode-0.5.0.tar.gz diff --git a/buildroot/package/libsigrokdecode/libsigrokdecode.mk b/buildroot/package/libsigrokdecode/libsigrokdecode.mk new file mode 100644 index 0000000..95e6e69 --- /dev/null +++ b/buildroot/package/libsigrokdecode/libsigrokdecode.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libsigrokdecode +# +################################################################################ + +LIBSIGROKDECODE_VERSION = 0.5.0 +LIBSIGROKDECODE_SITE = http://sigrok.org/download/source/libsigrokdecode +LIBSIGROKDECODE_LICENSE = GPL-3.0+ +LIBSIGROKDECODE_LICENSE_FILES = COPYING +LIBSIGROKDECODE_INSTALL_STAGING = YES +LIBSIGROKDECODE_DEPENDENCIES = host-pkgconf libglib2 python3 + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsigsegv/Config.in b/buildroot/package/libsigsegv/Config.in new file mode 100644 index 0000000..f258dc9 --- /dev/null +++ b/buildroot/package/libsigsegv/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS + bool + # with glibc/musl, ucontext is available for all supported + # architectures + default y if BR2_TOOLCHAIN_USES_GLIBC + default y if BR2_TOOLCHAIN_USES_MUSL + # with uclibc, ucontext is only available for a subset of the + # supported architectures + default y if BR2_TOOLCHAIN_USES_UCLIBC && \ + (BR2_ARM_CPU_HAS_ARM || BR2_i386 || \ + BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \ + BR2_sparc || BR2_x86_64) + +config BR2_PACKAGE_LIBSIGSEGV + bool "libsigsegv" + depends on BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS + help + Library for handling page faults in user mode. + + http://www.gnu.org/software/libsigsegv/ diff --git a/buildroot/package/libsigsegv/libsigsegv.hash b/buildroot/package/libsigsegv/libsigsegv.hash new file mode 100644 index 0000000..e937259 --- /dev/null +++ b/buildroot/package/libsigsegv/libsigsegv.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 dd7c2eb2ef6c47189406d562c1dc0f96f2fc808036834d596075d58377e37a18 libsigsegv-2.11.tar.gz diff --git a/buildroot/package/libsigsegv/libsigsegv.mk b/buildroot/package/libsigsegv/libsigsegv.mk new file mode 100644 index 0000000..d252497 --- /dev/null +++ b/buildroot/package/libsigsegv/libsigsegv.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libsigsegv +# +################################################################################ + +LIBSIGSEGV_VERSION = 2.11 +LIBSIGSEGV_SITE = $(BR2_GNU_MIRROR)/libsigsegv +LIBSIGSEGV_INSTALL_STAGING = YES +LIBSIGSEGV_CONF_ENV = sv_cv_fault_posix=yes +LIBSIGSEGV_LICENSE = GPL-2.0+ +LIBSIGSEGV_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsilk/Config.in b/buildroot/package/libsilk/Config.in new file mode 100644 index 0000000..10fe03a --- /dev/null +++ b/buildroot/package/libsilk/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBSILK + bool "libsilk" + help + SILK is an audio compression format and audio codec. + + http://tools.ietf.org/html/draft-vos-silk-01 diff --git a/buildroot/package/libsilk/libsilk.hash b/buildroot/package/libsilk/libsilk.hash new file mode 100644 index 0000000..2eab1c0 --- /dev/null +++ b/buildroot/package/libsilk/libsilk.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 01de52aa123f7bd20e500a076046f6b30d55f8e98c4029ab424bc51c46d7083d libsilk-4268a02240c35c6055b0f237c46b09b2dcf79e45.tar.gz diff --git a/buildroot/package/libsilk/libsilk.mk b/buildroot/package/libsilk/libsilk.mk new file mode 100644 index 0000000..eba7085 --- /dev/null +++ b/buildroot/package/libsilk/libsilk.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libsilk +# +################################################################################ + +LIBSILK_VERSION = 4268a02240c35c6055b0f237c46b09b2dcf79e45 +# we use the FreeSwitch fork because it contains pkgconf support +LIBSILK_SITE = https://freeswitch.org/stash/scm/sd/libsilk.git +LIBSILK_SITE_METHOD = git +LIBSILK_LICENSE = BSD-3-Clause +LIBSILK_LICENSE_FILES = COPYING +LIBSILK_AUTORECONF = YES +LIBSILK_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsndfile/Config.in b/buildroot/package/libsndfile/Config.in new file mode 100644 index 0000000..4ccf937 --- /dev/null +++ b/buildroot/package/libsndfile/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBSNDFILE + bool "libsndfile" + help + Libsndfile is a C library for reading and writing files + containing sampled sound (such as MS Windows WAV and the + Apple/SGI AIFF format) through one standard library interface. + + http://www.mega-nerd.com/libsndfile/ diff --git a/buildroot/package/libsndfile/libsndfile.hash b/buildroot/package/libsndfile/libsndfile.hash new file mode 100644 index 0000000..31500cd --- /dev/null +++ b/buildroot/package/libsndfile/libsndfile.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 1ff33929f042fa333aed1e8923aa628c3ee9e1eb85512686c55092d1e5a9dfa9 libsndfile-1.0.28.tar.gz diff --git a/buildroot/package/libsndfile/libsndfile.mk b/buildroot/package/libsndfile/libsndfile.mk new file mode 100644 index 0000000..22909ff --- /dev/null +++ b/buildroot/package/libsndfile/libsndfile.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libsndfile +# +################################################################################ + +LIBSNDFILE_VERSION = 1.0.28 +LIBSNDFILE_SITE = http://www.mega-nerd.com/libsndfile/files +LIBSNDFILE_INSTALL_STAGING = YES +LIBSNDFILE_LICENSE = LGPL-2.1+ +LIBSNDFILE_LICENSE_FILES = COPYING + +LIBSNDFILE_CONF_OPTS = \ + --disable-sqlite \ + --disable-alsa \ + --disable-external-libs \ + --disable-full-suite + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsoc/Config.in b/buildroot/package/libsoc/Config.in new file mode 100644 index 0000000..2aaeb1f --- /dev/null +++ b/buildroot/package/libsoc/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBSOC + bool "libsoc" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + libsoc is a C library for interfacing with common SoC + peripherals through generic kernel interfaces + + https://github.com/jackmitch/libsoc + +comment "libsoc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libsoc/libsoc.hash b/buildroot/package/libsoc/libsoc.hash new file mode 100644 index 0000000..77f2fad --- /dev/null +++ b/buildroot/package/libsoc/libsoc.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 8df626bde365b94a805e1c323104c63a7429ec64c9df815cd1d9b9c4b317e066 libsoc-0.8.2.tar.gz diff --git a/buildroot/package/libsoc/libsoc.mk b/buildroot/package/libsoc/libsoc.mk new file mode 100644 index 0000000..bbc3314 --- /dev/null +++ b/buildroot/package/libsoc/libsoc.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libsoc +# +################################################################################ + +LIBSOC_VERSION = 0.8.2 +LIBSOC_SITE = $(call github,jackmitch,libsoc,$(LIBSOC_VERSION)) +LIBSOC_LICENSE = LGPL-2.1 +LIBSOC_LICENSE_FILES = LICENCE +LIBSOC_AUTORECONF = YES +LIBSOC_INSTALL_STAGING = YES +LIBSOC_DEPENDENCIES = host-pkgconf + +# Install Python 2 bindings +ifeq ($(BR2_PACKAGE_PYTHON),y) +LIBSOC_DEPENDENCIES += python +LIBSOC_CONF_OPTS += --enable-python=2 +# Install Python 3 bindings +else ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIBSOC_DEPENDENCIES += python3 +LIBSOC_CONF_OPTS += --enable-python=3 +else +LIBSOC_CONF_OPTS += --disable-python +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsocketcan/Config.in b/buildroot/package/libsocketcan/Config.in new file mode 100644 index 0000000..97903db --- /dev/null +++ b/buildroot/package/libsocketcan/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBSOCKETCAN + bool "libsocketcan" + help + SocketCAN library to control CAN devices from C code. + + http://git.pengutronix.de/?p=tools/libsocketcan.git;a=summary diff --git a/buildroot/package/libsocketcan/libsocketcan.hash b/buildroot/package/libsocketcan/libsocketcan.hash new file mode 100644 index 0000000..2546c66 --- /dev/null +++ b/buildroot/package/libsocketcan/libsocketcan.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3c83e386c3fa7673141658472ae0b0e2a9f5849bf52fd9f7b22b04fd98ec7b6e libsocketcan-0.0.10.tar.bz2 diff --git a/buildroot/package/libsocketcan/libsocketcan.mk b/buildroot/package/libsocketcan/libsocketcan.mk new file mode 100644 index 0000000..31ed0d3 --- /dev/null +++ b/buildroot/package/libsocketcan/libsocketcan.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libsocketcan +# +################################################################################ + +LIBSOCKETCAN_VERSION = 0.0.10 +LIBSOCKETCAN_SITE = http://www.pengutronix.de/software/libsocketcan/download +LIBSOCKETCAN_SOURCE = libsocketcan-$(LIBSOCKETCAN_VERSION).tar.bz2 +LIBSOCKETCAN_INSTALL_STAGING = YES +LIBSOCKETCAN_LICENSE = LGPL-2.1+ + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsodium/Config.in b/buildroot/package/libsodium/Config.in new file mode 100644 index 0000000..47b9bb3 --- /dev/null +++ b/buildroot/package/libsodium/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBSODIUM + bool "libsodium" + help + A modern and easy-to-use crypto library. + + http://libsodium.org/ diff --git a/buildroot/package/libsodium/libsodium.hash b/buildroot/package/libsodium/libsodium.hash new file mode 100644 index 0000000..5cc0763 --- /dev/null +++ b/buildroot/package/libsodium/libsodium.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +# https://download.libsodium.org/libsodium/releases/libsodium-1.0.16.tar.gz.sig +sha256 eeadc7e1e1bcef09680fb4837d448fbdf57224978f865ac1c16745868fbd0533 libsodium-1.0.16.tar.gz +sha256 6faf327c97dca6da69acefc6d3969d7bffb70a24f0707874870fdcfd6b0acf58 LICENSE diff --git a/buildroot/package/libsodium/libsodium.mk b/buildroot/package/libsodium/libsodium.mk new file mode 100644 index 0000000..ffdd171 --- /dev/null +++ b/buildroot/package/libsodium/libsodium.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libsodium +# +################################################################################ + +LIBSODIUM_VERSION = 1.0.16 +LIBSODIUM_SITE = https://github.com/jedisct1/libsodium/releases/download/$(LIBSODIUM_VERSION) +LIBSODIUM_LICENSE = ISC +LIBSODIUM_LICENSE_FILES = LICENSE +LIBSODIUM_INSTALL_STAGING = YES + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +LIBSODIUM_CONF_OPTS += --disable-pie +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libsoil/0001-fix-makefile.patch b/buildroot/package/libsoil/0001-fix-makefile.patch new file mode 100644 index 0000000..310d264 --- /dev/null +++ b/buildroot/package/libsoil/0001-fix-makefile.patch @@ -0,0 +1,40 @@ +Various makefile fixes to allow cross compilation + +Partly ported from +http://anonscm.debian.org/cgit/pkg-games/libsoil.git/tree/debian/patches/linking_correctly.patch + +Signed-off-by: Bernd Kuhls + +diff -uNr soil.org/projects/makefile/alternate_Makefile.txt soil/projects/makefile/alternate_Makefile.txt +--- soil.org/projects/makefile/alternate_Makefile.txt 2008-07-07 18:13:28.000000000 +0200 ++++ soil/projects/makefile/alternate_Makefile.txt 2015-11-07 11:15:04.140106336 +0100 +@@ -1,8 +1,8 @@ + MAKE = make +-CC = gcc +-INSTALL_FILE = install -p -o root -g root -m 644 +-INSTALL_DIR = install -p -o root -g root -d +-LN = ln -s ++CC = $(GCC) ++INSTALL_FILE = $(INSTALL) -m 644 ++INSTALL_DIR = $(INSTALL) -d ++LN = ln -sf + RM = rm -fv + CFLAGS += -c -O2 -Wall + LDFLAGS += +@@ -23,13 +23,13 @@ + all: $(OFILES) lib + + %.o: %.c +- $(CC) $(CFLAGS) $< -o $@ ++ $(CC) $(CFLAGS) -c -fPIC $< -o $@ + + lib: $(OFILES) + # create static library +- ar -cvq $(LIBNAME).a $(OFILES) ++ $(AR) -cvq $(LIBNAME).a $(OFILES) + # create shared library +- gcc -shared -Wl,-soname,$(LIBNAME).so.$(MAJOR) -o $(LIBNAME).so.$(VERSION) $(OFILES) ++ $(CC) -shared -Wl,-soname,$(LIBNAME).so.$(MAJOR) -o $(LIBNAME).so.$(VERSION) $(OFILES) -lGL -lm + + install: + $(INSTALL_DIR) $(DESTDIR)/$(INCLUDEDIR) diff --git a/buildroot/package/libsoil/Config.in b/buildroot/package/libsoil/Config.in new file mode 100644 index 0000000..aea0cc3 --- /dev/null +++ b/buildroot/package/libsoil/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBSOIL + bool "libsoil" + depends on BR2_PACKAGE_HAS_LIBGL + depends on !BR2_STATIC_LIBS + help + SOIL is a tiny C library used primarily for uploading + textures into OpenGL. + + http://www.lonesock.net/soil.html + +comment "libsoil needs an OpenGL backend and a toolchain w/ dynamic library" + depends on !BR2_PACKAGE_HAS_LIBGL || BR2_STATIC_LIBS diff --git a/buildroot/package/libsoil/libsoil.hash b/buildroot/package/libsoil/libsoil.hash new file mode 100644 index 0000000..175569b --- /dev/null +++ b/buildroot/package/libsoil/libsoil.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a2305b8d64f6d636e36d669bbdb0ca5445d1345c754b3d61d3f037dad2e5f701 soil.zip diff --git a/buildroot/package/libsoil/libsoil.mk b/buildroot/package/libsoil/libsoil.mk new file mode 100644 index 0000000..efa67d9 --- /dev/null +++ b/buildroot/package/libsoil/libsoil.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# libsoil +# +################################################################################ + +LIBSOIL_VERSION = 20080707 +LIBSOIL_SOURCE = soil.zip +LIBSOIL_SITE = http://www.lonesock.net/files +LIBSOIL_INSTALL_STAGING = YES +LIBSOIL_DEPENDENCIES = libgl +LIBSOIL_LICENSE = Public Domain, MIT +LIBSOIL_LICENSE_FILES = src/stb_image_aug.c src/image_helper.c +LIBSOIL_MAKEFILE = ../projects/makefile/alternate_Makefile.txt + +define LIBSOIL_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/$(LIBSOIL_SOURCE) + mv $(@D)/Simple\ OpenGL\ Image\ Library/* $(@D) +endef + +# gnu patch < v2.5.9 doesn't correctly handle spaces in file names, +# and we want to patch the 'alternate Makefile.txt' file, so rename +# the file (and patch the renamed file) for compatibility with older +# distributions +define REMOVE_SPACE_FROM_FILENAME + cd $(@D)/projects/makefile/ && \ + mv "alternate Makefile.txt" alternate_Makefile.txt +endef +LIBSOIL_POST_EXTRACT_HOOKS += REMOVE_SPACE_FROM_FILENAME + +define LIBSOIL_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -f $(LIBSOIL_MAKEFILE) \ + -C $(@D)/src +endef + +define LIBSOIL_INSTALL_STAGING_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -f $(LIBSOIL_MAKEFILE) \ + DESTDIR=$(STAGING_DIR) install \ + INSTALL=$(INSTALL) \ + -C $(@D)/src +endef + +define LIBSOIL_INSTALL_TARGET_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -f $(LIBSOIL_MAKEFILE) \ + DESTDIR=$(TARGET_DIR) install \ + INSTALL=$(INSTALL) \ + -C $(@D)/src +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libsoundtouch/Config.in b/buildroot/package/libsoundtouch/Config.in new file mode 100644 index 0000000..fdbc075 --- /dev/null +++ b/buildroot/package/libsoundtouch/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBSOUNDTOUCH + bool "libsoundtouch" + depends on BR2_INSTALL_LIBSTDCPP + help + SoundTouch is an open-source audio processing library for + changing the Tempo, Pitch and Playback Rates of audio streams + or audio files. + + http://www.surina.net/soundtouch + +comment "libsoundtouch needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/libsoundtouch/libsoundtouch.hash b/buildroot/package/libsoundtouch/libsoundtouch.hash new file mode 100644 index 0000000..af0c362 --- /dev/null +++ b/buildroot/package/libsoundtouch/libsoundtouch.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 c805e7a72b7758a8986b71e73d2f94a8c79c66c1246fa2af1743c4282702e096 libsoundtouch-010a91a59071c7fefd316fca62c0d980ec85b4b1.tar.gz diff --git a/buildroot/package/libsoundtouch/libsoundtouch.mk b/buildroot/package/libsoundtouch/libsoundtouch.mk new file mode 100644 index 0000000..c4ac930 --- /dev/null +++ b/buildroot/package/libsoundtouch/libsoundtouch.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libsoundtouch +# +################################################################################ + +LIBSOUNDTOUCH_VERSION = 010a91a59071c7fefd316fca62c0d980ec85b4b1 +LIBSOUNDTOUCH_SITE = https://freeswitch.org/stash/scm/sd/libsoundtouch.git +LIBSOUNDTOUCH_SITE_METHOD = git +LIBSOUNDTOUCH_LICENSE = LGPL-2.1+ +LIBSOUNDTOUCH_LICENSE_FILES = COPYING.TXT +LIBSOUNDTOUCH_AUTORECONF = YES +LIBSOUNDTOUCH_INSTALL_STAGING = YES + +define LIBSOUNDTOUCH_CREATE_CONFIG_M4 + mkdir -p $(@D)/config/m4 +endef +LIBSOUNDTOUCH_POST_PATCH_HOOKS += LIBSOUNDTOUCH_CREATE_CONFIG_M4 + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsoup/Config.in b/buildroot/package/libsoup/Config.in new file mode 100644 index 0000000..599f959 --- /dev/null +++ b/buildroot/package/libsoup/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_LIBSOUP + bool "libsoup" + depends on BR2_USE_WCHAR # glib2 and gnutls + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_SQLITE + help + libsoup is an HTTP client/server library. It uses GObject + and the GLib main loop, to integrate well with GNOME + applications. + + https://wiki.gnome.org/Projects/libsoup + +if BR2_PACKAGE_LIBSOUP + +config BR2_PACKAGE_LIBSOUP_GNOME + bool "libsoup-gnome" + help + Build libsoup-gnome library. + +config BR2_PACKAGE_LIBSOUP_SSL + bool "https support" + depends on !BR2_STATIC_LIBS # gnutls + select BR2_PACKAGE_GLIB_NETWORKING + select BR2_PACKAGE_GNUTLS + help + Enable HTTPS (SSL) support. + +comment "libsoup https support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif + +comment "libsoup needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libsoup/libsoup.hash b/buildroot/package/libsoup/libsoup.hash new file mode 100644 index 0000000..6e1ff42 --- /dev/null +++ b/buildroot/package/libsoup/libsoup.hash @@ -0,0 +1,4 @@ +# From http://ftp.gnome.org/pub/gnome/sources/libsoup/2.56/libsoup-2.56.1.sha256sum +sha256 c32a46d77b4da433b51d8fd09a57a44b198e03bdc93e5219afcc687c7948eac3 libsoup-2.56.1.tar.xz +# Locally calculated +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/buildroot/package/libsoup/libsoup.mk b/buildroot/package/libsoup/libsoup.mk new file mode 100644 index 0000000..a3ce686 --- /dev/null +++ b/buildroot/package/libsoup/libsoup.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libsoup +# +################################################################################ + +LIBSOUP_VERSION_MAJOR = 2.56 +LIBSOUP_VERSION = $(LIBSOUP_VERSION_MAJOR).1 +LIBSOUP_SOURCE = libsoup-$(LIBSOUP_VERSION).tar.xz +LIBSOUP_SITE = http://ftp.gnome.org/pub/gnome/sources/libsoup/$(LIBSOUP_VERSION_MAJOR) +LIBSOUP_LICENSE = LGPL-2.0+ +LIBSOUP_LICENSE_FILES = COPYING +LIBSOUP_INSTALL_STAGING = YES +LIBSOUP_CONF_ENV = ac_cv_path_GLIB_GENMARSHAL=$(LIBGLIB2_HOST_BINARY) +LIBSOUP_CONF_OPTS = --disable-glibtest --enable-vala=no --with-gssapi=no +LIBSOUP_DEPENDENCIES = host-pkgconf host-libglib2 \ + libglib2 libxml2 sqlite host-intltool + +ifeq ($(BR2_PACKAGE_LIBSOUP_GNOME),y) +LIBSOUP_CONF_OPTS += --with-gnome +else +LIBSOUP_CONF_OPTS += --without-gnome +endif + +ifeq ($(BR2_PACKAGE_LIBSOUP_SSL),y) +LIBSOUP_DEPENDENCIES += glib-networking +else +LIBSOUP_CONF_OPTS += --disable-tls-check +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsoxr/Config.in b/buildroot/package/libsoxr/Config.in new file mode 100644 index 0000000..ae1ea10 --- /dev/null +++ b/buildroot/package/libsoxr/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBSOXR + bool "libsoxr" + help + The SoX Resampler library `libsoxr' performs one-dimensional + sample-rate conversion. It may be used, for example, to + resample PCM-encoded audio. + + It aims to give fast and high quality results for any constant + (rational or irrational) resampling ratio. Phase-response, + preserved bandwidth, aliasing, and rejection level parameters + are all configurable; alternatively, simple `preset' + configurations may be selected. An experimental, variable-rate + resampling mode of operation is also included. + + http://sourceforge.net/projects/soxr/ diff --git a/buildroot/package/libsoxr/libsoxr.hash b/buildroot/package/libsoxr/libsoxr.hash new file mode 100644 index 0000000..066b546 --- /dev/null +++ b/buildroot/package/libsoxr/libsoxr.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/soxr/files/ +sha1 3b990f91dc8dc08e70626cd5fb90deda0239c211 soxr-0.1.2-Source.tar.xz +md5 0866fc4320e26f47152798ac000de1c0 soxr-0.1.2-Source.tar.xz +# Locally calculated +sha256 54e6f434f1c491388cd92f0e3c47f1ade082cc24327bdc43762f7d1eefe0c275 soxr-0.1.2-Source.tar.xz diff --git a/buildroot/package/libsoxr/libsoxr.mk b/buildroot/package/libsoxr/libsoxr.mk new file mode 100644 index 0000000..c1dc4b0 --- /dev/null +++ b/buildroot/package/libsoxr/libsoxr.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libsoxr +# +################################################################################ + +LIBSOXR_VERSION = 0.1.2 +LIBSOXR_SOURCE = soxr-$(LIBSOXR_VERSION)-Source.tar.xz +LIBSOXR_SITE = http://downloads.sourceforge.net/project/soxr +LIBSOXR_LICENSE = LGPL-2.1+ +LIBSOXR_LICENSE_FILES = LICENCE COPYING.LGPL +LIBSOXR_INSTALL_STAGING = YES +LIBSOXR_CONF_OPTS = -DWITH_OPENMP=OFF + +ifeq ($(call qstrip,$(BR2_ENDIAN)),BIG) +LIBSOXR_CONF_OPTS += -DHAVE_WORDS_BIGENDIAN=1 +else +LIBSOXR_CONF_OPTS += -DHAVE_WORDS_BIGENDIAN=0 +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libspatialindex/0001-configure.ac-do-not-force-O2.patch b/buildroot/package/libspatialindex/0001-configure.ac-do-not-force-O2.patch new file mode 100644 index 0000000..c078e71 --- /dev/null +++ b/buildroot/package/libspatialindex/0001-configure.ac-do-not-force-O2.patch @@ -0,0 +1,30 @@ +From 7472764fe19cb3eea77f21cc2859859b8ac62085 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 14 Aug 2017 23:36:36 +0200 +Subject: [PATCH] configure.ac: do not force -O2 + +The user may want to provide its own set of optimization flags, and +therefore forcing -O2 should not be done. + +Signed-off-by: Thomas Petazzoni +Submitted-upstream: https://github.com/libspatialindex/libspatialindex/pull/101 +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index dc5e49f..2e2aa68 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -53,7 +53,7 @@ if test "x$enable_debug" = "xyes"; then + CXXFLAGS="$CXXFLAGS -g -DDEBUG" + AC_MSG_RESULT(checking wether debug information is enabled... yes) + else +- CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" ++ CXXFLAGS="$CXXFLAGS -DNDEBUG" + AC_MSG_RESULT(checking wether debug information is enabled... no) + fi + +-- +2.9.4 + diff --git a/buildroot/package/libspatialindex/Config.in b/buildroot/package/libspatialindex/Config.in new file mode 100644 index 0000000..0d066f6 --- /dev/null +++ b/buildroot/package/libspatialindex/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_LIBSPATIALINDEX + bool "libspatialindex" + depends on BR2_INSTALL_LIBSTDCPP + help + The purpose of libspatialindex is to provide: + + * An extensible framework that will support robust spatial + indexing methods. + + * Support for sophisticated spatial queries. Range, point + location, nearest neighbor and k-nearest neighbor as well + as parametric queries (defined by spatial constraints) + should be easy to deploy and run. + + * Easy to use interfaces for inserting, deleting and updating + information. + + * Wide variety of customization capabilities. Basic index and + storage characteristics like the page size, node capacity, + minimum fan-out, splitting algorithm, etc. should be easy + to customize. + + * Index persistence. Internal memory and external memory + structures should be supported. Clustered and non-clustered + indices should be easy to be persisted. + + https://libspatialindex.github.io + +comment "libspatialindex needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/libspatialindex/libspatialindex.hash b/buildroot/package/libspatialindex/libspatialindex.hash new file mode 100644 index 0000000..3aa636d --- /dev/null +++ b/buildroot/package/libspatialindex/libspatialindex.hash @@ -0,0 +1,4 @@ +# From http://download.osgeo.org/libspatialindex/spatialindex-src-1.8.5.tar.bz2.md5 +md5 3303c47fd85aa17e64ef52ebec212762 spatialindex-src-1.8.5.tar.bz2 +# Locally computed +sha256 31ec0a9305c3bd6b4ad60a5261cba5402366dd7d1969a8846099717778e9a50a spatialindex-src-1.8.5.tar.bz2 diff --git a/buildroot/package/libspatialindex/libspatialindex.mk b/buildroot/package/libspatialindex/libspatialindex.mk new file mode 100644 index 0000000..3a558df --- /dev/null +++ b/buildroot/package/libspatialindex/libspatialindex.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# libspatialindex +# +################################################################################ + +LIBSPATIALINDEX_VERSION = 1.8.5 +LIBSPATIALINDEX_SITE = http://download.osgeo.org/libspatialindex +LIBSPATIALINDEX_SOURCE = spatialindex-src-$(LIBSPATIALINDEX_VERSION).tar.bz2 +LIBSPATIALINDEX_INSTALL_STAGING = YES +LIBSPATIALINDEX_LICENSE = MIT +LIBSPATIALINDEX_LICENSE_FILES = COPYING + +# 0001-configure.ac-do-not-force-O2.patch +LIBSPATIALINDEX_AUTORECONF = YES + +LIBSPATIALINDEX_CXXFLAGS = $(TARGET_CXXFLAGS) +LIBSPATIALINDEX_CONF_ENV = CXXFLAGS="$(LIBSPATIALINDEX_CXXFLAGS)" + +# Workaround gcc ICE +# (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68485) +ifeq ($(BR2_microblaze),y) +LIBSPATIALINDEX_CXXFLAGS += -O0 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsquish/Config.in b/buildroot/package/libsquish/Config.in new file mode 100644 index 0000000..eabe6c5 --- /dev/null +++ b/buildroot/package/libsquish/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBSQUISH + bool "libsquish" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + help + The libSquish library compresses images with the DXT standard + (also known as S3TC). This standard is mainly used by OpenGL + and DirectX for the lossy compression of RGBA textures. + + http://sourceforge.net/projects/libsquish + +comment "libsquish needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/buildroot/package/libsquish/libsquish.hash b/buildroot/package/libsquish/libsquish.hash new file mode 100644 index 0000000..e68d28d --- /dev/null +++ b/buildroot/package/libsquish/libsquish.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/libsquish/files +sha1 51844b9a8bc815a27e2cc0ffbede5fee3ef75110 libsquish-1.15.tgz +md5 c02645800131e55b519ff8dbe7284f93 libsquish-1.15.tgz diff --git a/buildroot/package/libsquish/libsquish.mk b/buildroot/package/libsquish/libsquish.mk new file mode 100644 index 0000000..67892dd --- /dev/null +++ b/buildroot/package/libsquish/libsquish.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# libsquish +# +################################################################################ + +LIBSQUISH_VERSION = 1.15 +LIBSQUISH_SOURCE = libsquish-$(LIBSQUISH_VERSION).tgz +LIBSQUISH_SITE = http://downloads.sourceforge.net/project/libsquish +LIBSQUISH_INSTALL_STAGING = YES +LIBSQUISH_STRIP_COMPONENTS = 0 +LIBSQUISH_LICENSE = MIT +LIBSQUISH_LICENSE_FILES = LICENSE.txt + +define LIBSQUISH_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define LIBSQUISH_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include + mkdir -p $(STAGING_DIR)/usr/lib + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + install PREFIX=/usr INSTALL_DIR=$(STAGING_DIR)/usr + $(INSTALL) -D -m 644 $(@D)/libsquish.pc $(STAGING_DIR)/usr/lib/pkgconfig/libsquish.pc + ln -sf libsquish.so.0.0 $(STAGING_DIR)/usr/lib/libsquish.so + ln -sf libsquish.so.0.0 $(STAGING_DIR)/usr/lib/libsquish.so.0 +endef + +define LIBSQUISH_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/include + mkdir -p $(TARGET_DIR)/usr/lib + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + install PREFIX=/usr INSTALL_DIR=$(TARGET_DIR)/usr + ln -sf libsquish.so.0.0 $(TARGET_DIR)/usr/lib/libsquish.so.0 +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libsrtp/0001-Rename-SHA1-functions-to-avoid-conflicts-with-downst.patch b/buildroot/package/libsrtp/0001-Rename-SHA1-functions-to-avoid-conflicts-with-downst.patch new file mode 100644 index 0000000..60a123e --- /dev/null +++ b/buildroot/package/libsrtp/0001-Rename-SHA1-functions-to-avoid-conflicts-with-downst.patch @@ -0,0 +1,396 @@ +From f76eb65d008d0c8e06698e4a63a776e91b80155b Mon Sep 17 00:00:00 2001 +From: jfigus +Date: Tue, 4 Nov 2014 14:54:02 -0500 +Subject: [PATCH] Rename SHA1 functions to avoid conflicts with downstream + packages. + +Backported from upstream commit c270245a94ae9a007202754eb8f7ce9e48f97007 +and tweaked to apply on top of v1.5.4. + +Signed-off-by: Vicente Olivert Riera +--- + crypto/hash/hmac.c | 20 ++++++++++---------- + crypto/hash/hmac_ossl.c | 18 +++++++++--------- + crypto/hash/sha1.c | 32 ++++++++++++++++---------------- + crypto/include/hmac.h | 4 ++-- + crypto/include/sha1.h | 34 +++++++++++++++++----------------- + crypto/test/sha1_driver.c | 8 ++++---- + 6 files changed, 58 insertions(+), 58 deletions(-) + +diff --git a/crypto/hash/hmac.c b/crypto/hash/hmac.c +index ddb75ea..4bed61e 100644 +--- a/crypto/hash/hmac.c ++++ b/crypto/hash/hmac.c +@@ -141,11 +141,11 @@ hmac_init(hmac_ctx_t *state, const uint8_t *key, int key_len) { + debug_print(mod_hmac, "ipad: %s", octet_string_hex_string(ipad, 64)); + + /* initialize sha1 context */ +- sha1_init(&state->init_ctx); ++ srtp_sha1_init(&state->init_ctx); + + /* hash ipad ^ key */ +- sha1_update(&state->init_ctx, ipad, 64); +- memcpy(&state->ctx, &state->init_ctx, sizeof(sha1_ctx_t)); ++ srtp_sha1_update(&state->init_ctx, ipad, 64); ++ memcpy(&state->ctx, &state->init_ctx, sizeof(srtp_sha1_ctx_t)); + + return err_status_ok; + } +@@ -153,7 +153,7 @@ hmac_init(hmac_ctx_t *state, const uint8_t *key, int key_len) { + err_status_t + hmac_start(hmac_ctx_t *state) { + +- memcpy(&state->ctx, &state->init_ctx, sizeof(sha1_ctx_t)); ++ memcpy(&state->ctx, &state->init_ctx, sizeof(srtp_sha1_ctx_t)); + + return err_status_ok; + } +@@ -165,7 +165,7 @@ hmac_update(hmac_ctx_t *state, const uint8_t *message, int msg_octets) { + octet_string_hex_string(message, msg_octets)); + + /* hash message into sha1 context */ +- sha1_update(&state->ctx, message, msg_octets); ++ srtp_sha1_update(&state->ctx, message, msg_octets); + + return err_status_ok; + } +@@ -183,7 +183,7 @@ hmac_compute(hmac_ctx_t *state, const void *message, + + /* hash message, copy output into H */ + hmac_update(state, (const uint8_t*)message, msg_octets); +- sha1_final(&state->ctx, H); ++ srtp_sha1_final(&state->ctx, H); + + /* + * note that we don't need to debug_print() the input, since the +@@ -193,16 +193,16 @@ hmac_compute(hmac_ctx_t *state, const void *message, + octet_string_hex_string((uint8_t *)H, 20)); + + /* re-initialize hash context */ +- sha1_init(&state->ctx); ++ srtp_sha1_init(&state->ctx); + + /* hash opad ^ key */ +- sha1_update(&state->ctx, (uint8_t *)state->opad, 64); ++ srtp_sha1_update(&state->ctx, (uint8_t *)state->opad, 64); + + /* hash the result of the inner hash */ +- sha1_update(&state->ctx, (uint8_t *)H, 20); ++ srtp_sha1_update(&state->ctx, (uint8_t *)H, 20); + + /* the result is returned in the array hash_value[] */ +- sha1_final(&state->ctx, hash_value); ++ srtp_sha1_final(&state->ctx, hash_value); + + /* copy hash_value to *result */ + for (i=0; i < tag_len; i++) +diff --git a/crypto/hash/hmac_ossl.c b/crypto/hash/hmac_ossl.c +index f62ce57..2ec8350 100644 +--- a/crypto/hash/hmac_ossl.c ++++ b/crypto/hash/hmac_ossl.c +@@ -163,11 +163,11 @@ hmac_init (hmac_ctx_t *state, const uint8_t *key, int key_len) + debug_print(mod_hmac, "ipad: %s", octet_string_hex_string(ipad, sizeof(ipad))); + + /* initialize sha1 context */ +- sha1_init(&state->init_ctx); ++ srtp_sha1_init(&state->init_ctx); + state->init_ctx_initialized = 1; + + /* hash ipad ^ key */ +- sha1_update(&state->init_ctx, ipad, sizeof(ipad)); ++ srtp_sha1_update(&state->init_ctx, ipad, sizeof(ipad)); + return (hmac_start(state)); + } + +@@ -192,7 +192,7 @@ hmac_update (hmac_ctx_t *state, const uint8_t *message, int msg_octets) + octet_string_hex_string(message, msg_octets)); + + /* hash message into sha1 context */ +- sha1_update(&state->ctx, message, msg_octets); ++ srtp_sha1_update(&state->ctx, message, msg_octets); + + return err_status_ok; + } +@@ -211,8 +211,8 @@ hmac_compute (hmac_ctx_t *state, const void *message, + } + + /* hash message, copy output into H */ +- sha1_update(&state->ctx, message, msg_octets); +- sha1_final(&state->ctx, H); ++ srtp_sha1_update(&state->ctx, message, msg_octets); ++ srtp_sha1_final(&state->ctx, H); + + /* + * note that we don't need to debug_print() the input, since the +@@ -222,16 +222,16 @@ hmac_compute (hmac_ctx_t *state, const void *message, + octet_string_hex_string((uint8_t*)H, sizeof(H))); + + /* re-initialize hash context */ +- sha1_init(&state->ctx); ++ srtp_sha1_init(&state->ctx); + + /* hash opad ^ key */ +- sha1_update(&state->ctx, (uint8_t*)state->opad, sizeof(state->opad)); ++ srtp_sha1_update(&state->ctx, (uint8_t*)state->opad, sizeof(state->opad)); + + /* hash the result of the inner hash */ +- sha1_update(&state->ctx, (uint8_t*)H, sizeof(H)); ++ srtp_sha1_update(&state->ctx, (uint8_t*)H, sizeof(H)); + + /* the result is returned in the array hash_value[] */ +- sha1_final(&state->ctx, hash_value); ++ srtp_sha1_final(&state->ctx, hash_value); + + /* copy hash_value to *result */ + for (i = 0; i < tag_len; i++) { +diff --git a/crypto/hash/sha1.c b/crypto/hash/sha1.c +index c200437..29c2e62 100644 +--- a/crypto/hash/sha1.c ++++ b/crypto/hash/sha1.c +@@ -77,17 +77,17 @@ uint32_t SHA_K2 = 0x8F1BBCDC; /* Kt for 40 <= t <= 59 */ + uint32_t SHA_K3 = 0xCA62C1D6; /* Kt for 60 <= t <= 79 */ + + void +-sha1(const uint8_t *msg, int octets_in_msg, uint32_t hash_value[5]) { +- sha1_ctx_t ctx; ++srtp_sha1(const uint8_t *msg, int octets_in_msg, uint32_t hash_value[5]) { ++ srtp_sha1_ctx_t ctx; + +- sha1_init(&ctx); +- sha1_update(&ctx, msg, octets_in_msg); +- sha1_final(&ctx, hash_value); ++ srtp_sha1_init(&ctx); ++ srtp_sha1_update(&ctx, msg, octets_in_msg); ++ srtp_sha1_final(&ctx, hash_value); + + } + + /* +- * sha1_core(M, H) computes the core compression function, where M is ++ * srtp_sha1_core(M, H) computes the core compression function, where M is + * the next part of the message (in network byte order) and H is the + * intermediate state { H0, H1, ...} (in host byte order) + * +@@ -99,7 +99,7 @@ sha1(const uint8_t *msg, int octets_in_msg, uint32_t hash_value[5]) { + */ + + void +-sha1_core(const uint32_t M[16], uint32_t hash_value[5]) { ++srtp_sha1_core(const uint32_t M[16], uint32_t hash_value[5]) { + uint32_t H0; + uint32_t H1; + uint32_t H2; +@@ -186,7 +186,7 @@ sha1_core(const uint32_t M[16], uint32_t hash_value[5]) { + } + + void +-sha1_init(sha1_ctx_t *ctx) { ++srtp_sha1_init(srtp_sha1_ctx_t *ctx) { + + /* initialize state vector */ + ctx->H[0] = 0x67452301; +@@ -204,7 +204,7 @@ sha1_init(sha1_ctx_t *ctx) { + } + + void +-sha1_update(sha1_ctx_t *ctx, const uint8_t *msg, int octets_in_msg) { ++srtp_sha1_update(srtp_sha1_ctx_t *ctx, const uint8_t *msg, int octets_in_msg) { + int i; + uint8_t *buf = (uint8_t *)ctx->M; + +@@ -227,13 +227,13 @@ sha1_update(sha1_ctx_t *ctx, const uint8_t *msg, int octets_in_msg) { + + /* process a whole block */ + +- debug_print(mod_sha1, "(update) running sha1_core()", NULL); ++ debug_print(mod_sha1, "(update) running srtp_sha1_core()", NULL); + +- sha1_core(ctx->M, ctx->H); ++ srtp_sha1_core(ctx->M, ctx->H); + + } else { + +- debug_print(mod_sha1, "(update) not running sha1_core()", NULL); ++ debug_print(mod_sha1, "(update) not running srtp_sha1_core()", NULL); + + for (i=ctx->octets_in_buffer; + i < (ctx->octets_in_buffer + octets_in_msg); i++) +@@ -247,12 +247,12 @@ sha1_update(sha1_ctx_t *ctx, const uint8_t *msg, int octets_in_msg) { + } + + /* +- * sha1_final(ctx, output) computes the result for ctx and copies it ++ * srtp_sha1_final(ctx, output) computes the result for ctx and copies it + * into the twenty octets located at *output + */ + + void +-sha1_final(sha1_ctx_t *ctx, uint32_t *output) { ++srtp_sha1_final(srtp_sha1_ctx_t *ctx, uint32_t *output) { + uint32_t A, B, C, D, E, TEMP; + uint32_t W[80]; + int i, t; +@@ -339,11 +339,11 @@ sha1_final(sha1_ctx_t *ctx, uint32_t *output) { + + } + +- debug_print(mod_sha1, "(final) running sha1_core()", NULL); ++ debug_print(mod_sha1, "(final) running srtp_sha1_core()", NULL); + + if (ctx->octets_in_buffer >= 56) { + +- debug_print(mod_sha1, "(final) running sha1_core() again", NULL); ++ debug_print(mod_sha1, "(final) running srtp_sha1_core() again", NULL); + + /* we need to do one final run of the compression algo */ + +diff --git a/crypto/include/hmac.h b/crypto/include/hmac.h +index 875f45c..9fc664e 100644 +--- a/crypto/include/hmac.h ++++ b/crypto/include/hmac.h +@@ -51,8 +51,8 @@ + + typedef struct { + uint8_t opad[64]; +- sha1_ctx_t ctx; +- sha1_ctx_t init_ctx; ++ srtp_sha1_ctx_t ctx; ++ srtp_sha1_ctx_t init_ctx; + #ifdef OPENSSL + int ctx_initialized; + int init_ctx_initialized; +diff --git a/crypto/include/sha1.h b/crypto/include/sha1.h +index f1744ce..e177af6 100644 +--- a/crypto/include/sha1.h ++++ b/crypto/include/sha1.h +@@ -56,15 +56,15 @@ + #include + #include + +-typedef EVP_MD_CTX sha1_ctx_t; ++typedef EVP_MD_CTX srtp_sha1_ctx_t; + + /* +- * sha1_init(&ctx) initializes the SHA1 context ctx ++ * srtp_sha1_init(&ctx) initializes the SHA1 context ctx + * +- * sha1_update(&ctx, msg, len) hashes the len octets starting at msg ++ * srtp_sha1_update(&ctx, msg, len) hashes the len octets starting at msg + * into the SHA1 context + * +- * sha1_final(&ctx, output) performs the final processing of the SHA1 ++ * srtp_sha1_final(&ctx, output) performs the final processing of the SHA1 + * context and writes the result to the 20 octets at output + * + * Return values are ignored on the EVP functions since all three +@@ -72,18 +72,18 @@ typedef EVP_MD_CTX sha1_ctx_t; + * + */ + +-static inline void sha1_init (sha1_ctx_t *ctx) ++static inline void srtp_sha1_init (srtp_sha1_ctx_t *ctx) + { + EVP_MD_CTX_init(ctx); + EVP_DigestInit(ctx, EVP_sha1()); + } + +-static inline void sha1_update (sha1_ctx_t *ctx, const uint8_t *M, int octets_in_msg) ++static inline void srtp_sha1_update (srtp_sha1_ctx_t *ctx, const uint8_t *M, int octets_in_msg) + { + EVP_DigestUpdate(ctx, M, octets_in_msg); + } + +-static inline void sha1_final (sha1_ctx_t *ctx, uint32_t *output) ++static inline void srtp_sha1_final (srtp_sha1_ctx_t *ctx, uint32_t *output) + { + unsigned int len = 0; + +@@ -97,7 +97,7 @@ typedef struct { + uint32_t M[16]; /* message buffer */ + int octets_in_buffer; /* octets of message in buffer */ + uint32_t num_bits_in_msg; /* total number of bits in message */ +-} sha1_ctx_t; ++} srtp_sha1_ctx_t; + + /* + * sha1(&ctx, msg, len, output) hashes the len octets starting at msg +@@ -110,33 +110,33 @@ void + sha1(const uint8_t *message, int octets_in_msg, uint32_t output[5]); + + /* +- * sha1_init(&ctx) initializes the SHA1 context ctx ++ * srtp_sha1_init(&ctx) initializes the SHA1 context ctx + * +- * sha1_update(&ctx, msg, len) hashes the len octets starting at msg ++ * srtp_sha1_update(&ctx, msg, len) hashes the len octets starting at msg + * into the SHA1 context + * +- * sha1_final(&ctx, output) performs the final processing of the SHA1 ++ * srtp_sha1_final(&ctx, output) performs the final processing of the SHA1 + * context and writes the result to the 20 octets at output + * + */ + + void +-sha1_init(sha1_ctx_t *ctx); ++srtp_sha1_init(srtp_sha1_ctx_t *ctx); + + void +-sha1_update(sha1_ctx_t *ctx, const uint8_t *M, int octets_in_msg); ++srtp_sha1_update(srtp_sha1_ctx_t *ctx, const uint8_t *M, int octets_in_msg); + + void +-sha1_final(sha1_ctx_t *ctx, uint32_t output[5]); ++srtp_sha1_final(srtp_sha1_ctx_t *ctx, uint32_t output[5]); + + /* +- * The sha1_core function is INTERNAL to SHA-1, but it is declared ++ * The srtp_sha1_core function is INTERNAL to SHA-1, but it is declared + * here because it is also used by the cipher SEAL 3.0 in its key + * setup algorithm. + */ + + /* +- * sha1_core(M, H) computes the core sha1 compression function, where M is ++ * srtp_sha1_core(M, H) computes the core sha1 compression function, where M is + * the next part of the message and H is the intermediate state {H0, + * H1, ...} + * +@@ -145,7 +145,7 @@ sha1_final(sha1_ctx_t *ctx, uint32_t output[5]); + */ + + void +-sha1_core(const uint32_t M[16], uint32_t hash_value[5]); ++srtp_sha1_core(const uint32_t M[16], uint32_t hash_value[5]); + + #endif /* else OPENSSL */ + +diff --git a/crypto/test/sha1_driver.c b/crypto/test/sha1_driver.c +index 6adfad1..2e19479 100644 +--- a/crypto/test/sha1_driver.c ++++ b/crypto/test/sha1_driver.c +@@ -102,7 +102,7 @@ hash_test_case_add(hash_test_case_t **list_ptr, + + err_status_t + sha1_test_case_validate(const hash_test_case_t *test_case) { +- sha1_ctx_t ctx; ++ srtp_sha1_ctx_t ctx; + uint32_t hash_value[5]; + + if (test_case == NULL) +@@ -113,9 +113,9 @@ sha1_test_case_validate(const hash_test_case_t *test_case) { + if (test_case->data_len > MAX_HASH_DATA_LEN) + return err_status_bad_param; + +- sha1_init(&ctx); +- sha1_update(&ctx, test_case->data, test_case->data_len); +- sha1_final(&ctx, hash_value); ++ srtp_sha1_init(&ctx); ++ srtp_sha1_update(&ctx, test_case->data, test_case->data_len); ++ srtp_sha1_final(&ctx, hash_value); + if (0 == memcmp(test_case->hash, hash_value, 20)) { + #if VERBOSE + printf("PASSED: reference value: %s\n", +-- +2.7.3 + diff --git a/buildroot/package/libsrtp/Config.in b/buildroot/package/libsrtp/Config.in new file mode 100644 index 0000000..ce37712 --- /dev/null +++ b/buildroot/package/libsrtp/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBSRTP + bool "libsrtp" + help + This package provides an implementation of the Secure + Real-time Transport Protocol (SRTP), the Universal Security + Transform (UST), and a supporting cryptographic kernel. + + https://github.com/cisco/libsrtp diff --git a/buildroot/package/libsrtp/libsrtp.hash b/buildroot/package/libsrtp/libsrtp.hash new file mode 100644 index 0000000..cb060d2 --- /dev/null +++ b/buildroot/package/libsrtp/libsrtp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 56a7b521c25134f48faff26b0b1e3d4378a14986a2d3d7bc6fefb48987304ff0 libsrtp-v1.5.4.tar.gz diff --git a/buildroot/package/libsrtp/libsrtp.mk b/buildroot/package/libsrtp/libsrtp.mk new file mode 100644 index 0000000..9e72856 --- /dev/null +++ b/buildroot/package/libsrtp/libsrtp.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libsrtp +# +################################################################################ + +LIBSRTP_VERSION = v1.5.4 +LIBSRTP_SITE = $(call github,cisco,libsrtp,$(LIBSRTP_VERSION)) +LIBSRTP_INSTALL_STAGING = YES +LIBSRTP_LICENSE = BSD-3-Clause +LIBSRTP_LICENSE_FILES = LICENSE + +ifeq ($(BR2_STATIC_LIBS),y) +LIBSRTP_MAKE_OPTS = libsrtp.a +else ifeq ($(BR2_SHARED_LIBS),y) +LIBSRTP_MAKE_OPTS = shared_library +else +LIBSRTP_MAKE_OPTS = libsrtp.a shared_library +endif + +# While libsrtp is not using pkg-config itself, it checks if +# pkg-config is available to determine whether it should install +# libsrtp.pc. Since installing it seems useful, let's depend on +# host-pkgconf to make sure pkg-config is installed. +LIBSRTP_DEPENDENCIES = host-pkgconf + +# openssl handling needs libdl support +ifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx) +LIBSRTP_DEPENDENCIES += openssl +LIBSRTP_CONF_OPTS += --enable-openssl +else +LIBSRTP_CONF_OPTS += --disable-openssl +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libss7/Config.in b/buildroot/package/libss7/Config.in new file mode 100644 index 0000000..bdf5fbe --- /dev/null +++ b/buildroot/package/libss7/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBSS7 + bool "libss7" + depends on BR2_USE_MMU # dahdi-tools <- perl + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_DAHDI_LINUX + select BR2_PACKAGE_DAHDI_TOOLS + help + libss7 is an open source library that encapsulates the + protocols used to communicate using Signaling System 7 + over ISDN (T1, E1). + + http://www.asterisk.org/downloads/libss7 + +comment "libss7 needs a kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "libss7 needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libss7/libss7.hash b/buildroot/package/libss7/libss7.hash new file mode 100644 index 0000000..8e1d663 --- /dev/null +++ b/buildroot/package/libss7/libss7.hash @@ -0,0 +1,6 @@ +# Hashes from http://downloads.asterisk.org/pub/telephony/libss7/releases/ +sha1 7112a0717293fc273d5d488e1387ad28abe4e9b3 libss7-2.0.0.tar.gz +sha256 5af00853cfb2bc6bcf050947804db132ae6872db0cd2ab24b5378828f78eda52 libss7-2.0.0.tar.gz + +# License file, locally calculated +sha256 fa5fc1d1eec39532ea517518eeefd7b6e3c14341a55e5880a0e2a49eee47a5b7 LICENSE diff --git a/buildroot/package/libss7/libss7.mk b/buildroot/package/libss7/libss7.mk new file mode 100644 index 0000000..541505b --- /dev/null +++ b/buildroot/package/libss7/libss7.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# libss7 +# +################################################################################ + +LIBSS7_VERSION = 2.0.0 +LIBSS7_SITE = http://downloads.asterisk.org/pub/telephony/libss7/releases + +LIBSS7_LICENSE = GPL-2.0 +LIBSS7_LICENSE_FILES = LICENSE + +LIBSS7_DEPENDENCIES = dahdi-linux dahdi-tools +LIBSS7_INSTALL_STAGING = YES + +# The Makefile default rule will always try to generate both libraries. +# So we need to explicitly build only what we can. +ifneq ($(BR2_SHARED_LIBS),y) +LIBSS7_LIBS = libss7.a +define LIBSS7_INSTALL_A + $(INSTALL) -D -m 0644 $(@D)/libss7.a $(1)/usr/lib/libss7.a +endef +endif + +ifneq ($(BR2_STATIC_LIBS),y) +LIBSS7_LIBS += libss7.so.2.0 +define LIBSS7_INSTALL_SO + $(INSTALL) -D -m 0644 $(@D)/libss7.so.2.0 $(1)/usr/lib/libss7.so.2.0 + ln -sf libss7.so.2.0 $(1)/usr/lib/libss7.so +endef +endif + +# The Makefile erroneously looks for host headers to decide what utilities +# to build, and thus misses the test utilities. So we explicitly build them +# as they can be useful to validate that the hardware does work. +LIBSS7_UTILS = parser_debug ss7test ss7linktest + +define LIBSS7_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(LIBSS7_LIBS) $(LIBSS7_UTILS) +endef + +define LIBSS7_INSTALL_STAGING_CMDS + $(call LIBSS7_INSTALL_A,$(STAGING_DIR)) + $(call LIBSS7_INSTALL_SO,$(STAGING_DIR)) + $(INSTALL) -D -m 0644 $(@D)/libss7.h $(STAGING_DIR)/usr/include/libss7.h +endef + +define LIBSS7_INSTALL_TARGET_CMDS + $(foreach u,$(LIBSS7_UTILS),\ + $(INSTALL) -D -m 0755 $(@D)/$(u) $(TARGET_DIR)/usr/sbin/$(u)$(sep)) + $(call LIBSS7_INSTALL_SO,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libssh/Config.in b/buildroot/package/libssh/Config.in new file mode 100644 index 0000000..3dbfa7d --- /dev/null +++ b/buildroot/package/libssh/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBSSH + bool "libssh" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + # Either OpenSSL or libgcrypt are mandatory + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_LIBGCRYPT + help + libssh is a multiplatform C library implementing the SSHv2 + and SSHv1 protocol on client and server side. With libssh, + you can remotely execute programs, transfer files, use a + secure and transparent tunnel for your remote applications. + + http://www.libssh.org/ + +comment "libssh needs a toolchain w/ dynamic library, threads" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libssh/libssh.hash b/buildroot/package/libssh/libssh.hash new file mode 100644 index 0000000..009a335 --- /dev/null +++ b/buildroot/package/libssh/libssh.hash @@ -0,0 +1,5 @@ +# from https://red.libssh.org/projects/libssh/files/ +md5 d3fc864208bf607ad87cdee836894feb libssh-0.7.5.tar.xz +# Locally calculated after checking signature on uncompressed libssh-0.7.5.tar +# https://red.libssh.org/attachments/download/217/libssh-0.7.5.tar.asc +sha256 54e86dd5dc20e5367e58f3caab337ce37675f863f80df85b6b1614966a337095 libssh-0.7.5.tar.xz diff --git a/buildroot/package/libssh/libssh.mk b/buildroot/package/libssh/libssh.mk new file mode 100644 index 0000000..34716c5 --- /dev/null +++ b/buildroot/package/libssh/libssh.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# libssh +# +################################################################################ + +LIBSSH_VERSION = 0.7.5 +LIBSSH_SOURCE = libssh-$(LIBSSH_VERSION).tar.xz +LIBSSH_SITE = https://red.libssh.org/attachments/download/218 +LIBSSH_LICENSE = LGPL-2.1 +LIBSSH_LICENSE_FILES = COPYING +LIBSSH_INSTALL_STAGING = YES +LIBSSH_SUPPORTS_IN_SOURCE_BUILD = NO +LIBSSH_CONF_OPTS = \ + -DWITH_STACK_PROTECTOR=OFF \ + -DWITH_SERVER=OFF \ + -DWITH_EXAMPLES=OFF + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBSSH_CONF_OPTS += -DWITH_ZLIB=ON +LIBSSH_DEPENDENCIES += zlib +else +LIBSSH_CONF_OPTS += -DWITH_ZLIB=OFF +endif + +# Dependency is either on libgcrypt or openssl, guaranteed in Config.in. +# Favour libgcrypt. +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +LIBSSH_CONF_OPTS += -DWITH_GCRYPT=ON +LIBSSH_DEPENDENCIES += libgcrypt +else +LIBSSH_CONF_OPTS += -DWITH_GCRYPT=OFF +LIBSSH_DEPENDENCIES += openssl +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libssh2/0001-drop-custom-buildconf-script.patch b/buildroot/package/libssh2/0001-drop-custom-buildconf-script.patch new file mode 100644 index 0000000..a9a98e0 --- /dev/null +++ b/buildroot/package/libssh2/0001-drop-custom-buildconf-script.patch @@ -0,0 +1,121 @@ +From 39a2a444a32896bd2dab37c9b247ccfd11ff4693 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 30 Oct 2017 19:29:12 +0100 +Subject: [PATCH] buildsystem: drop custom buildconf script, rely on autoreconf + +The buildconf script is currently required, because we need to copy a +header around, because it is used both from the library and the examples +sources. + +However, having a custom 'buildconf'-like script is not needed if we can +ensure that the header / exists by the time it is needed. For That, we +can just append the src/ directory to the headers search path for the +examples. + +And then it means we no longer need to generate the same header twice, +so we remove the second one from configure.ac. + +Now, we can just call "autoreconf -fi" to generate the autotools files, +instead of relying on the canned sequence in "buildconf", since +autoreconf has now long known what to do at the correct moment (future +versions of autotools, automake, autopoint, autoheader etc... may +require an other ordering, or other intermediate steps, etc...). + +Eventually, get rid of buildconf now it is no longer needed. In fact, we +really keep it for legacy, but have it just call autoreconf (and print a +nice user-friendly warning). + +Update gitignore accordingly, too. + +Signed-off-by: "Yann E. MORIN" +Cc: Sam Voss +--- + .gitignore | 2 ++ + buildconf | 24 +++++------------------- + configure.ac | 2 +- + example/.gitignore | 2 -- + example/Makefile.am | 2 +- + 5 files changed, 9 insertions(+), 23 deletions(-) + +diff --git a/.gitignore b/.gitignore +index 997e51e1..b6d6b5cb 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -13,6 +13,8 @@ Makefile + Makefile.in + aclocal.m4 + autom4te.cache ++compile ++test-driver + config.guess + config.log + config.status +diff --git a/buildconf b/buildconf +index 558dcb66..728b3397 100755 +--- a/buildconf ++++ b/buildconf +@@ -1,22 +1,8 @@ + #!/bin/sh + +-LIBTOOLIZE="libtoolize" ++echo "***" >&2 ++echo "*** Do not use buildconf. Instead, just use: autoreconf -fi" >&2 ++echo "*** Doing it for you now, but buildconf may disapear in the future." >&2 ++echo "***" >&2 + +-if [ "x`which $LIBTOOLIZE`" = "x" ]; then +- LIBTOOLIZE="glibtoolize" +-fi +- +-if [ "x`which $LIBTOOLIZE`" = "x" ]; then +- echo "Neither libtoolize nor glibtoolize could be found!" +- exit 1 +-fi +- +-${LIBTOOLIZE} --copy --automake --force +-${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS +-${AUTOHEADER:-autoheader} +-# copy the private libssh2_config.h.in to the examples dir so that +-# it can be included without pointing the include path to the private +-# source dir +-cp src/libssh2_config.h.in example/libssh2_config.h.in +-${AUTOCONF:-autoconf} +-${AUTOMAKE:-automake} --add-missing --copy ++${AUTORECONF:-autoreconf} -fi "${@}" +diff --git a/configure.ac b/configure.ac +index c6ff7535..6939d0d6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2,7 +2,7 @@ + AC_INIT(libssh2, [-], libssh2-devel@cool.haxx.se) + AC_CONFIG_MACRO_DIR([m4]) + AC_CONFIG_SRCDIR([src]) +-AC_CONFIG_HEADERS([src/libssh2_config.h example/libssh2_config.h]) ++AC_CONFIG_HEADERS([src/libssh2_config.h]) + AM_MAINTAINER_MODE + m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +diff --git a/example/.gitignore b/example/.gitignore +index 13448191..cac152b8 100644 +--- a/example/.gitignore ++++ b/example/.gitignore +@@ -20,8 +20,6 @@ sftp_write_nonblock + config.h.in + ssh2_exec + ssh2_agent +-libssh2_config.h +-libssh2_config.h.in + stamp-h2 + sftp_append + sftp_write_sliding +diff --git a/example/Makefile.am b/example/Makefile.am +index 5cf5f071..41f65b12 100644 +--- a/example/Makefile.am ++++ b/example/Makefile.am +@@ -13,5 +13,5 @@ if HAVE_SYS_UN_H + noinst_PROGRAMS += x11 + endif + +-AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/example ++AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/example -I../src + LDADD = $(top_builddir)/src/libssh2.la diff --git a/buildroot/package/libssh2/0002-acinclude.m4-add-mbedtls-to-LIBS.patch b/buildroot/package/libssh2/0002-acinclude.m4-add-mbedtls-to-LIBS.patch new file mode 100644 index 0000000..76e08c5 --- /dev/null +++ b/buildroot/package/libssh2/0002-acinclude.m4-add-mbedtls-to-LIBS.patch @@ -0,0 +1,31 @@ +From f4846473f0f0ec313f8ed7ff4cd9f59c1741465d Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 20 Mar 2018 20:21:53 +0200 +Subject: [PATCH] acinclude.m4: add mbedtls to LIBS + +This is useful for static builds so that the Libs.private field in +libssh2.pc contains correct info for the benefit of pkg-config users. +Static link with libssh2 requires this information. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/libssh2/libssh2/pull/242 + + acinclude.m4 | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/acinclude.m4 b/acinclude.m4 +index c0e89a1a0c98..02c70845d27c 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -441,6 +441,7 @@ m4_case([$1], + [mbedtls], [ + LIBSSH2_LIB_HAVE_LINKFLAGS([mbedcrypto], [], [#include ], [ + AC_DEFINE(LIBSSH2_MBEDTLS, 1, [Use $1]) ++ LIBS="$LIBS $LIBMBEDCRYPTO" + found_crypto="$1" + support_clear_memory=yes + ]) +-- +2.16.2 + diff --git a/buildroot/package/libssh2/Config.in b/buildroot/package/libssh2/Config.in new file mode 100644 index 0000000..90c3881 --- /dev/null +++ b/buildroot/package/libssh2/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_LIBSSH2 + bool "libssh2" + select BR2_PACKAGE_OPENSSL if !(BR2_PACKAGE_MBEDTLS || BR2_PACKAGE_LIBGCRYPT) + help + libssh2 is a client-side C library implementing the SSH2 + protocol as defined by Internet Drafts: SECSH-TRANS(22), + SECSH-USERAUTH(25), SECSH-CONNECTION(23), SECSH-ARCH(20), + SECSH-FILEXFER(06)*, SECSH-DHGEX(04), and SECSH-NUMBERS(10) + + http://www.libssh2.org/ + +if BR2_PACKAGE_LIBSSH2 + +choice + prompt "Crypto Backend" + help + Select crypto library to be used in libssh2. + +config BR2_PACKAGE_LIBSSH2_MBEDTLS + bool "mbedtls" + depends on BR2_PACKAGE_MBEDTLS + +config BR2_PACKAGE_LIBSSH2_LIBGCRYPT + bool "gcrypt" + depends on BR2_PACKAGE_LIBGCRYPT + +config BR2_PACKAGE_LIBSSH2_OPENSSL + bool "openssl" + depends on BR2_PACKAGE_OPENSSL + +endchoice +endif diff --git a/buildroot/package/libssh2/libssh2.hash b/buildroot/package/libssh2/libssh2.hash new file mode 100644 index 0000000..d36262a --- /dev/null +++ b/buildroot/package/libssh2/libssh2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e73d55cd512863aa6423c6e137039e3e1bcbf5ba87f130e7441132c2c78a5425 libssh2-616fd4d1b3e4a55de67c48819fefca83132126b5.tar.gz diff --git a/buildroot/package/libssh2/libssh2.mk b/buildroot/package/libssh2/libssh2.mk new file mode 100644 index 0000000..c5b0bd8 --- /dev/null +++ b/buildroot/package/libssh2/libssh2.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# libssh2 +# +################################################################################ + +LIBSSH2_VERSION = 616fd4d1b3e4a55de67c48819fefca83132126b5 +LIBSSH2_SITE = $(call github,libssh2,libssh2,$(LIBSSH2_VERSION)) +LIBSSH2_LICENSE = BSD +LIBSSH2_LICENSE_FILES = COPYING +LIBSSH2_INSTALL_STAGING = YES +LIBSSH2_CONF_OPTS = --disable-examples-build + +# building from a git clone +LIBSSH2_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LIBSSH2_MBEDTLS),y) +LIBSSH2_DEPENDENCIES += mbedtls +LIBSSH2_CONF_OPTS += --with-libmbedcrypto-prefix=$(STAGING_DIR)/usr \ + --with-crypto=mbedtls +else ifeq ($(BR2_PACKAGE_LIBSSH2_LIBGCRYPT),y) +LIBSSH2_DEPENDENCIES += libgcrypt +LIBSSH2_CONF_OPTS += --with-libgcrypt-prefix=$(STAGING_DIR)/usr \ + --with-crypto=libgcrypt +# configure.ac forgets to link to dependent libraries of gcrypt breaking static +# linking +LIBSSH2_CONF_ENV += LIBS="`$(STAGING_DIR)/usr/bin/libgcrypt-config --libs`" +else ifeq ($(BR2_PACKAGE_LIBSSH2_OPENSSL),y) +LIBSSH2_DEPENDENCIES += openssl +LIBSSH2_CONF_OPTS += --with-libssl-prefix=$(STAGING_DIR)/usr \ + --with-crypto=openssl +endif + +# Add zlib support if enabled +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBSSH2_DEPENDENCIES += zlib +LIBSSH2_CONF_OPTS += --with-libz \ + --with-libz-prefix=$(STAGING_DIR)/usr +else +LIBSSH2_CONF_OPTS += --without-libz +endif + +HOST_LIBSSH2_DEPENDENCIES += host-openssl +HOST_LIBSSH2_CONF_OPTS += --with-openssl \ + --with-libssl-prefix=$(HOST_DIR)/usr \ + --without-libgcrypt + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libstrophe/0001-Namespace-SHA-functions.patch b/buildroot/package/libstrophe/0001-Namespace-SHA-functions.patch new file mode 100644 index 0000000..8c3451b --- /dev/null +++ b/buildroot/package/libstrophe/0001-Namespace-SHA-functions.patch @@ -0,0 +1,189 @@ +From b08766c8e46956daba010044b00c97f78b598780 Mon Sep 17 00:00:00 2001 +From: Michael Santos +Date: Sun, 24 May 2015 10:55:02 -0400 +Subject: [PATCH] Namespace SHA functions + +Fix statically linking against libstrophe by renaming the internal SHA +functions: + +https://github.com/strophe/libstrophe/issues/40 + +Although the same function names are used by libstrophe and OpenSSL, +the signatures and contexts of the SHA functions differ, resulting in +a segfault if the OpenSSL versions are substituted. + +[Upstream commit: https://github.com/msantos/libstrophe/commit/b08766c8e46956daba010044b00c97f78b598780] +Signed-off-by: Thomas Petazzoni +--- + src/auth.c | 8 ++++---- + src/scram.c | 22 +++++++++++----------- + src/sha1.c | 30 +++++++++++++++--------------- + src/sha1.h | 6 +++--- + 4 files changed, 33 insertions(+), 33 deletions(-) + +diff --git a/src/auth.c b/src/auth.c +index b06f18c..3506977 100644 +--- a/src/auth.c ++++ b/src/auth.c +@@ -1187,10 +1187,10 @@ int _handle_component_auth(xmpp_conn_t * const conn) + /* Feed the session id and passphrase to the algorithm. + * We need to compute SHA1(session_id + passphrase) + */ +- SHA1_Init(&mdctx); +- SHA1_Update(&mdctx, (uint8_t*)conn->stream_id, strlen(conn->stream_id)); +- SHA1_Update(&mdctx, (uint8_t*)conn->pass, strlen(conn->pass)); +- SHA1_Final(&mdctx, md_value); ++ xmpp_SHA1_Init(&mdctx); ++ xmpp_SHA1_Update(&mdctx, (uint8_t*)conn->stream_id, strlen(conn->stream_id)); ++ xmpp_SHA1_Update(&mdctx, (uint8_t*)conn->pass, strlen(conn->pass)); ++ xmpp_SHA1_Final(&mdctx, md_value); + + digest = xmpp_alloc(conn->ctx, 2*sizeof(md_value)+1); + if (digest) { +diff --git a/src/scram.c b/src/scram.c +index 5cce168..6e420e1 100644 +--- a/src/scram.c ++++ b/src/scram.c +@@ -37,9 +37,9 @@ static void SHA1(const uint8_t* data, size_t len, + uint8_t digest[SHA1_DIGEST_SIZE]) + { + SHA1_CTX ctx; +- SHA1_Init(&ctx); +- SHA1_Update(&ctx, data, len); +- SHA1_Final(&ctx, digest); ++ xmpp_SHA1_Init(&ctx); ++ xmpp_SHA1_Update(&ctx, data, len); ++ xmpp_SHA1_Final(&ctx, digest); + } + + static void HMAC_SHA1(const uint8_t *key, size_t key_len, +@@ -66,15 +66,15 @@ static void HMAC_SHA1(const uint8_t *key, size_t key_len, + key_opad[i] = key_pad[i] ^ opad; + } + +- SHA1_Init(&ctx); +- SHA1_Update(&ctx, key_ipad, BLOCK_SIZE); +- SHA1_Update(&ctx, text, len); +- SHA1_Final(&ctx, sha_digest); ++ xmpp_SHA1_Init(&ctx); ++ xmpp_SHA1_Update(&ctx, key_ipad, BLOCK_SIZE); ++ xmpp_SHA1_Update(&ctx, text, len); ++ xmpp_SHA1_Final(&ctx, sha_digest); + +- SHA1_Init(&ctx); +- SHA1_Update(&ctx, key_opad, BLOCK_SIZE); +- SHA1_Update(&ctx, sha_digest, SHA1_DIGEST_SIZE); +- SHA1_Final(&ctx, digest); ++ xmpp_SHA1_Init(&ctx); ++ xmpp_SHA1_Update(&ctx, key_opad, BLOCK_SIZE); ++ xmpp_SHA1_Update(&ctx, sha_digest, SHA1_DIGEST_SIZE); ++ xmpp_SHA1_Final(&ctx, digest); + } + + static void SCRAM_SHA1_Hi(const uint8_t *text, size_t len, +diff --git a/src/sha1.c b/src/sha1.c +index 9af4f04..b60b325 100644 +--- a/src/sha1.c ++++ b/src/sha1.c +@@ -202,7 +202,7 @@ static void SHA1_Transform(uint32_t state[5], const uint8_t buffer[64]) + + + /* SHA1Init - Initialize new context */ +-void SHA1_Init(SHA1_CTX* context) ++void xmpp_SHA1_Init(SHA1_CTX* context) + { + /* SHA1 initialization constants */ + context->state[0] = 0x67452301; +@@ -215,7 +215,7 @@ void SHA1_Init(SHA1_CTX* context) + + + /* Run your data through this. */ +-void SHA1_Update(SHA1_CTX* context, const uint8_t* data, const size_t len) ++void xmpp_SHA1_Update(SHA1_CTX* context, const uint8_t* data, const size_t len) + { + size_t i, j; + +@@ -244,7 +244,7 @@ void SHA1_Update(SHA1_CTX* context, const uint8_t* data, const size_t len) + + + /* Add padding and return the message digest. */ +-void SHA1_Final(SHA1_CTX* context, uint8_t digest[SHA1_DIGEST_SIZE]) ++void xmpp_SHA1_Final(SHA1_CTX* context, uint8_t digest[SHA1_DIGEST_SIZE]) + { + uint32_t i; + uint8_t finalcount[8]; +@@ -253,11 +253,11 @@ void SHA1_Final(SHA1_CTX* context, uint8_t digest[SHA1_DIGEST_SIZE]) + finalcount[i] = (unsigned char)((context->count[(i >= 4 ? 0 : 1)] + >> ((3-(i & 3)) * 8) ) & 255); /* Endian independent */ + } +- SHA1_Update(context, (uint8_t *)"\200", 1); ++ xmpp_SHA1_Update(context, (uint8_t *)"\200", 1); + while ((context->count[0] & 504) != 448) { +- SHA1_Update(context, (uint8_t *)"\0", 1); ++ xmpp_SHA1_Update(context, (uint8_t *)"\0", 1); + } +- SHA1_Update(context, finalcount, 8); /* Should cause a SHA1_Transform() */ ++ xmpp_SHA1_Update(context, finalcount, 8); /* Should cause a SHA1_Transform() */ + for (i = 0; i < SHA1_DIGEST_SIZE; i++) { + digest[i] = (uint8_t) + ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255); +@@ -300,12 +300,12 @@ FILE* file; + return(-1); + } + } +- SHA1_Init(&context); ++ xmpp_SHA1_Init(&context); + while (!feof(file)) { /* note: what if ferror(file) */ + i = fread(buffer, 1, 16384, file); +- SHA1_Update(&context, buffer, i); ++ xmpp_SHA1_Update(&context, buffer, i); + } +- SHA1_Final(&context, digest); ++ xmpp_SHA1_Final(&context, digest); + fclose(file); + for (i = 0; i < SHA1_DIGEST_SIZE/4; i++) { + for (j = 0; j < 4; j++) { +@@ -358,9 +358,9 @@ int main(int argc, char** argv) + fprintf(stdout, "verifying SHA-1 implementation... "); + + for (k = 0; k < 2; k++){ +- SHA1_Init(&context); +- SHA1_Update(&context, (uint8_t*)test_data[k], strlen(test_data[k])); +- SHA1_Final(&context, digest); ++ xmpp_SHA1_Init(&context); ++ xmpp_SHA1_Update(&context, (uint8_t*)test_data[k], strlen(test_data[k])); ++ xmpp_SHA1_Final(&context, digest); + digest_to_hex(digest, output); + + if (strcmp(output, test_results[k])) { +@@ -372,10 +372,10 @@ int main(int argc, char** argv) + } + } + /* million 'a' vector we feed separately */ +- SHA1_Init(&context); ++ xmpp_SHA1_Init(&context); + for (k = 0; k < 1000000; k++) +- SHA1_Update(&context, (uint8_t*)"a", 1); +- SHA1_Final(&context, digest); ++ xmpp_SHA1_Update(&context, (uint8_t*)"a", 1); ++ xmpp_SHA1_Final(&context, digest); + digest_to_hex(digest, output); + if (strcmp(output, test_results[2])) { + fprintf(stdout, "FAIL\n"); +diff --git a/src/sha1.h b/src/sha1.h +index 10266cb..7ff48d7 100644 +--- a/src/sha1.h ++++ b/src/sha1.h +@@ -23,9 +23,9 @@ typedef struct { + + #define SHA1_DIGEST_SIZE 20 + +-void SHA1_Init(SHA1_CTX* context); +-void SHA1_Update(SHA1_CTX* context, const uint8_t* data, const size_t len); +-void SHA1_Final(SHA1_CTX* context, uint8_t digest[SHA1_DIGEST_SIZE]); ++void xmpp_SHA1_Init(SHA1_CTX* context); ++void xmpp_SHA1_Update(SHA1_CTX* context, const uint8_t* data, const size_t len); ++void xmpp_SHA1_Final(SHA1_CTX* context, uint8_t digest[SHA1_DIGEST_SIZE]); + + #ifdef __cplusplus + } diff --git a/buildroot/package/libstrophe/0002-make-autoreconfable.patch b/buildroot/package/libstrophe/0002-make-autoreconfable.patch new file mode 100644 index 0000000..76ca6f2 --- /dev/null +++ b/buildroot/package/libstrophe/0002-make-autoreconfable.patch @@ -0,0 +1,20 @@ +Make the package autoreconfigurable + +Signed-off-by: Denis Bodor +[Gustavo: update for 0.8.8] + +diff -Nura libstrophe-0.8.8.orig/m4/.empty libstrophe-0.8.8/m4/.empty +--- libstrophe-0.8.8.orig/m4/.empty 1969-12-31 21:00:00.000000000 -0300 ++++ libstrophe-0.8.8/m4/.empty 2015-09-23 19:29:37.893688227 -0300 +@@ -0,0 +1,2 @@ ++ ++ +diff -Nura libstrophe-0.8.8.orig/Makefile.am libstrophe-0.8.8/Makefile.am +--- libstrophe-0.8.8.orig/Makefile.am 2015-09-23 19:26:10.960492781 -0300 ++++ libstrophe-0.8.8/Makefile.am 2015-09-23 19:29:17.265970964 -0300 +@@ -1,4 +1,4 @@ +-AUTOMAKE_OPTIONS = subdir-objects ++AUTOMAKE_OPTIONS = subdir-objects foreign + + ACLOCAL_AMFLAGS = -I m4 + AM_CFLAGS = -g -Wall diff --git a/buildroot/package/libstrophe/Config.in b/buildroot/package/libstrophe/Config.in new file mode 100644 index 0000000..5fdb918 --- /dev/null +++ b/buildroot/package/libstrophe/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBSTROPHE + bool "libstrophe" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBXML2 if !BR2_PACKAGE_EXPAT + help + libstrophe is a lightweight XMPP client library written in C. + It has minimal dependencies and is configurable for various + environments. It runs well on both Linux, Unix, and Windows + based platforms. + + https://github.com/strophe/libstrophe + +comment "libstrophe needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libstrophe/libstrophe.hash b/buildroot/package/libstrophe/libstrophe.hash new file mode 100644 index 0000000..6a2d997 --- /dev/null +++ b/buildroot/package/libstrophe/libstrophe.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 08f4a85ef419a8bdf08b6afa8f7b2a0e5e180fdc9c16cede81af672ec10e21e7 libstrophe-0.8.8.tar.gz diff --git a/buildroot/package/libstrophe/libstrophe.mk b/buildroot/package/libstrophe/libstrophe.mk new file mode 100644 index 0000000..4b5a10a --- /dev/null +++ b/buildroot/package/libstrophe/libstrophe.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# libstrophe +# +################################################################################ + +LIBSTROPHE_VERSION = 0.8.8 +LIBSTROPHE_SITE = $(call github,strophe,libstrophe,$(LIBSTROPHE_VERSION)) +LIBSTROPHE_DEPENDENCIES = openssl host-pkgconf +# Doesn't ship configure +LIBSTROPHE_AUTORECONF = YES +LIBSTROPHE_LICENSE = MIT or GPL-3.0 +LIBSTROPHE_LICENSE_FILES = MIT-LICENSE.txt GPL-LICENSE.txt +LIBSTROPHE_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_EXPAT),y) +# Passing --without-libxml2 doesn't work, due to how AC_ARG_WITH is +# used in configure.ac. As long as --with-libxml2 is *not* passed, the +# configure script assumes expat should be used. +LIBSTROPHE_DEPENDENCIES += expat +else +LIBSTROPHE_CONF_OPTS += --with-libxml2 +LIBSTROPHE_DEPENDENCIES += libxml2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsvg-cairo/Config.in b/buildroot/package/libsvg-cairo/Config.in new file mode 100644 index 0000000..9577c69 --- /dev/null +++ b/buildroot/package/libsvg-cairo/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBSVG_CAIRO + bool "libsvg-cairo" + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_SVG + select BR2_PACKAGE_LIBSVG + help + Libsvg-cairo provides the ability to render SVG content from + files or buffers. All rendering is performed using the cairo + rendering library. + + http://cairographics.org diff --git a/buildroot/package/libsvg-cairo/libsvg-cairo.hash b/buildroot/package/libsvg-cairo/libsvg-cairo.hash new file mode 100644 index 0000000..fba96de --- /dev/null +++ b/buildroot/package/libsvg-cairo/libsvg-cairo.hash @@ -0,0 +1,5 @@ +# From http://cairographics.org/snapshots/libsvg-cairo-0.1.6.tar.gz.md5 +md5 d79da7b3a60ad8c8e4b902c9b3563047 libsvg-cairo-0.1.6.tar.gz + +# Locally calculated +sha256 a380be6a78ec2938100ce904363815a94068fca372c666b8cc82aa8711a0215c libsvg-cairo-0.1.6.tar.gz diff --git a/buildroot/package/libsvg-cairo/libsvg-cairo.mk b/buildroot/package/libsvg-cairo/libsvg-cairo.mk new file mode 100644 index 0000000..f7a105e --- /dev/null +++ b/buildroot/package/libsvg-cairo/libsvg-cairo.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libsvg-cairo +# +################################################################################ + +LIBSVG_CAIRO_VERSION = 0.1.6 +LIBSVG_CAIRO_SITE = http://cairographics.org/snapshots +LIBSVG_CAIRO_DEPENDENCIES = cairo libsvg +LIBSVG_CAIRO_INSTALL_STAGING = YES +LIBSVG_CAIRO_LICENSE = LGPL-2.1+ +LIBSVG_CAIRO_LICENSE_FILES = COPYING + +LIBSVG_CAIRO_CONF_OPTS = --without-x + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsvg/0001-fix-expat-static-declaration.patch b/buildroot/package/libsvg/0001-fix-expat-static-declaration.patch new file mode 100644 index 0000000..58ef286 --- /dev/null +++ b/buildroot/package/libsvg/0001-fix-expat-static-declaration.patch @@ -0,0 +1,33 @@ +Newer expat versions use different declarations of the following functions: + +static void _svg_parser_sax_start_element (); +static void _svg_parser_sax_end_element (); +static void _svg_parser_sax_characters (); + +We need to patch the libsvg source to not follow into a build error like + "static declaration of 'foo' follows non-static declaration" +and use the functions from the expat library instead from the libsvg source. + +Patch based on +http://oe-lite.org/redmine/projects/xorg/repository/revisions/c4df7951e846e1be718f37f2455696a1d0861f3d/entry/recipes/cairo/libsvg-0.1.4/gcc4_and_expat.patch + +Signed-off-by: Carsten Schoenert + +diff -bur libsvg-0.1.4~orig/src/svg_parser_expat.c libsvg-0.1.4/src/svg_parser_expat.c +--- libsvg-0.1.4~orig/src/svg_parser_expat.c 2005-02-14 11:26:26.000000000 -0600 ++++ libsvg-0.1.4/src/svg_parser_expat.c 2006-02-10 21:58:20.000000000 -0600 +@@ -30,6 +30,7 @@ + #include "svgint.h" + #include "svg_hash.h" + ++#ifndef LIBSVG_EXPAT + static void + _svg_parser_sax_start_element (void *closure, + const XML_Char *name, +@@ -43,6 +44,7 @@ + _svg_parser_sax_characters (void *closure, + const XML_Char *ch, + int len); ++#endif + + static void diff --git a/buildroot/package/libsvg/0002-Fix-undefined-symbol-png_set_gray_1_2_4_to_8.patch b/buildroot/package/libsvg/0002-Fix-undefined-symbol-png_set_gray_1_2_4_to_8.patch new file mode 100644 index 0000000..d0bbeab --- /dev/null +++ b/buildroot/package/libsvg/0002-Fix-undefined-symbol-png_set_gray_1_2_4_to_8.patch @@ -0,0 +1,32 @@ +From 213e5749947fad08d985eda8d06839efedda78ef Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 5 Mar 2015 21:42:52 +0100 +Subject: [PATCH] Fix undefined symbol png_set_gray_1_2_4_to_8 + +Since libpng-1.4.0 the function png_set_gray_1_2_4_to_8() was +removed, the replacement function is called +png_set_expand_gray_1_2_4_to_8() (see [1]). + +[1] http://libpng.sourceforge.net/ANNOUNCE-1.4.0.txt + +Signed-off-by: Peter Seiderer +--- + src/svg_image.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/svg_image.c b/src/svg_image.c +index cd8a95a..f256943 100755 +--- a/src/svg_image.c ++++ b/src/svg_image.c +@@ -271,7 +271,7 @@ _svg_image_read_png (const char *filename, + + /* expand gray bit depth if needed */ + if (color_type == PNG_COLOR_TYPE_GRAY && depth < 8) +- png_set_gray_1_2_4_to_8 (png); ++ png_set_expand_gray_1_2_4_to_8 (png); + + /* transform transparency to alpha */ + if (png_get_valid(png, info, PNG_INFO_tRNS)) +-- +2.1.4 + diff --git a/buildroot/package/libsvg/Config.in b/buildroot/package/libsvg/Config.in new file mode 100644 index 0000000..741ef10 --- /dev/null +++ b/buildroot/package/libsvg/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBSVG + bool "libsvg" + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBXML2 if !BR2_PACKAGE_EXPAT + help + Libsvg provides a parser for SVG content in files or buffers. + Libsvg does not do any rendering, but instead provides a + function-based interface that can be used by various rendering + engines. + + http://cairographics.org/snapshots/ diff --git a/buildroot/package/libsvg/libsvg.hash b/buildroot/package/libsvg/libsvg.hash new file mode 100644 index 0000000..c500849 --- /dev/null +++ b/buildroot/package/libsvg/libsvg.hash @@ -0,0 +1,5 @@ +# From http://cairographics.org/snapshots/libsvg-0.1.4.tar.gz.md5 +md5 ce0715e3013f78506795fba16e8455d3 libsvg-0.1.4.tar.gz + +# Locally calculated +sha256 4c3bf9292e676a72b12338691be64d0f38cd7f2ea5e8b67fbbf45f1ed404bc8f libsvg-0.1.4.tar.gz diff --git a/buildroot/package/libsvg/libsvg.mk b/buildroot/package/libsvg/libsvg.mk new file mode 100644 index 0000000..45d730d --- /dev/null +++ b/buildroot/package/libsvg/libsvg.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libsvg +# +################################################################################ + +LIBSVG_VERSION = 0.1.4 +LIBSVG_SITE = http://cairographics.org/snapshots +LIBSVG_DEPENDENCIES = host-pkgconf libpng jpeg +LIBSVG_INSTALL_STAGING = YES +LIBSVG_LICENSE = LGPL-2.0+ +LIBSVG_LICENSE_FILES = COPYING + +# libsvg needs at last a XML parser +ifeq ($(BR2_PACKAGE_EXPAT),y) +LIBSVG_CONF_OPTS += --with-expat +LIBSVG_DEPENDENCIES += expat +else +LIBSVG_CONF_OPTS += --with-libxml2 +LIBSVG_DEPENDENCIES += libxml2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libsvgtiny/0001-disable-debug-printfs.patch b/buildroot/package/libsvgtiny/0001-disable-debug-printfs.patch new file mode 100644 index 0000000..72ed21c --- /dev/null +++ b/buildroot/package/libsvgtiny/0001-disable-debug-printfs.patch @@ -0,0 +1,125 @@ +svntiny: svntiny_gradient.c: only print debugging if GRADIENT_DEBUG is enabled + +Signed-off-by: Peter Korsgaard +--- + src/svgtiny_gradient.c | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +Index: libsvgtiny/src/svgtiny_gradient.c +=================================================================== +--- libsvgtiny.orig/src/svgtiny_gradient.c ++++ libsvgtiny/src/svgtiny_gradient.c +@@ -30,8 +30,9 @@ void svgtiny_find_gradient(const char *i + { + xmlNode *gradient; + ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "svgtiny_find_gradient: id \"%s\"\n", id); +- ++#endif + state->linear_gradient_stop_count = 0; + state->gradient_x1 = "0%"; + state->gradient_y1 = "0%"; +@@ -47,13 +48,17 @@ void svgtiny_find_gradient(const char *i + + gradient = svgtiny_find_element_by_id( + (xmlNode *) state->document, id); ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "gradient %p\n", (void *) gradient); ++#endif + if (!gradient) { + fprintf(stderr, "gradient \"%s\" not found\n", id); + return; + } + ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "gradient name \"%s\"\n", gradient->name); ++#endif + if (strcmp((const char *) gradient->name, "linearGradient") == 0) { + svgtiny_parse_linear_gradient(gradient, state); + } +@@ -98,8 +103,10 @@ svgtiny_code svgtiny_parse_linear_gradie + return svgtiny_OUT_OF_MEMORY; + svgtiny_parse_transform(s, &a, &b, &c, &d, &e, &f); + free(s); ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "transform %g %g %g %g %g %g\n", + a, b, c, d, e, f); ++#endif + state->gradient_transform.a = a; + state->gradient_transform.b = b; + state->gradient_transform.c = c; +@@ -143,7 +150,9 @@ svgtiny_code svgtiny_parse_linear_gradie + } + + if (offset != -1 && color != svgtiny_TRANSPARENT) { ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "stop %g %x\n", offset, color); ++#endif + state->gradient_stop[i].offset = offset; + state->gradient_stop[i].color = color; + i++; +@@ -220,9 +229,11 @@ svgtiny_code svgtiny_add_path_linear_gra + #endif + + /* compute gradient vector */ ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "x1 %s, y1 %s, x2 %s, y2 %s\n", + state->gradient_x1, state->gradient_y1, + state->gradient_x2, state->gradient_y2); ++#endif + if (!state->gradient_user_space_on_use) { + gradient_x0 = object_x0 + + svgtiny_parse_length(state->gradient_x1, +@@ -297,9 +308,11 @@ svgtiny_code svgtiny_add_path_linear_gra + + /* invert gradient transform for applying to vertices */ + svgtiny_invert_matrix(&state->gradient_transform.a, trans); ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "inverse transform %g %g %g %g %g %g\n", + trans[0], trans[1], trans[2], trans[3], + trans[4], trans[5]); ++#endif + + /* compute points on the path for triangle vertices */ + /* r, r0, r1 are distance along gradient vector */ +@@ -372,8 +385,10 @@ svgtiny_code svgtiny_add_path_linear_gra + steps = ceilf(fabsf(r1 - r0) / 0.05); + if (steps == 0) + steps = 1; ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "r0 %g, r1 %g, steps %i\n", + r0, r1, steps); ++#endif + + /* loop through intermediate points */ + for (z = 1; z != steps; z++) { +@@ -398,7 +413,9 @@ svgtiny_code svgtiny_add_path_linear_gra + r = ((x_trans - gradient_x0) * gradient_dx + + (y_trans - gradient_y0) * gradient_dy) / + gradient_norm_squared; ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "(%g %g [%g]) ", x, y, r); ++#endif + point = svgtiny_list_push(pts); + if (!point) { + svgtiny_list_free(pts); +@@ -412,14 +429,18 @@ svgtiny_code svgtiny_add_path_linear_gra + min_pt = svgtiny_list_size(pts) - 1; + } + } ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "\n"); ++#endif + + /* next segment start point is this segment end point */ + x0 = x1; + y0 = y1; + } ++#ifdef GRADIENT_DEBUG + fprintf(stderr, "pts size %i, min_pt %i, min_r %.3f\n", + svgtiny_list_size(pts), min_pt, min_r); ++#endif + + /* render triangles */ + stop_count = state->linear_gradient_stop_count; diff --git a/buildroot/package/libsvgtiny/0002-create-builddir.patch b/buildroot/package/libsvgtiny/0002-create-builddir.patch new file mode 100644 index 0000000..a404d86 --- /dev/null +++ b/buildroot/package/libsvgtiny/0002-create-builddir.patch @@ -0,0 +1,15 @@ +svgtiny: create BUILDDIR before $(BUILDDIR)/src_colors.c + +Signed-off-by: Max Filippov +--- +--- libsvgtiny-12121/src/Makefile.orig 2014-06-17 15:30:21.765311434 +0400 ++++ libsvgtiny-12121/src/Makefile 2014-06-17 15:29:56.569909931 +0400 +@@ -3,7 +3,7 @@ + + SOURCES := $(SOURCES) $(BUILDDIR)/src_colors.c + +-$(BUILDDIR)/src_colors.c: src/colors.gperf ++$(BUILDDIR)/src_colors.c: src/colors.gperf $(BUILDDIR)/stamp + $(VQ)$(ECHO) " GPERF: $<" + $(Q)gperf --output-file=$@.tmp $< + # Hack for GCC 4.2 compatibility (gperf 3.0.4 solves this properly) diff --git a/buildroot/package/libsvgtiny/0003-Remove-Werror.patch b/buildroot/package/libsvgtiny/0003-Remove-Werror.patch new file mode 100644 index 0000000..c8b0c0b --- /dev/null +++ b/buildroot/package/libsvgtiny/0003-Remove-Werror.patch @@ -0,0 +1,44 @@ +Remove -Werror from Makefile + +glibc-2.20 includes some changes to the include/features.h file +introduced by this commit: + + https://sourceware.org/git/?p=glibc.git;a=commit;h=ade40b10ff5fa59a318cf55b9d8414b758e8df78 + +Those changes make libsvgtiny fail because some warnings are thrown and +the build system is using the -Werror option. We disable this to be able +to build it, or otherwise we will see errors like this one: + +GPERF: src/colors.gperf +COMPILE: build-Linux-Linux-release-lib-static/src_colors.c +In file included from +/br/output/host/usr/mipsel-buildroot-linux-gnu/sysroot/usr/include/string.h:25:0, + from src/colors.gperf:16: +/br/output/host/usr/mipsel-buildroot-linux-gnu/sysroot/usr/include/features.h:148:3: +error: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use +_DEFAULT_SOURCE" [-Werror=cpp] + +and this one: + +In file included from src/colors.gperf:18:0: +/home/ldap/vriera/work/mips-buildroots/mips32/output/build/libsvgtiny-12121/src/svgtiny_internal.h:71:0: +error: "strndup" redefined [-Werror] + +Signed-off-by: Vicente Olivert Riera + +diff -rup a/Makefile b/Makefile +--- a/Makefile 2010-01-03 23:37:39.000000000 +0000 ++++ b/Makefile 2014-12-11 11:35:37.241903884 +0000 +@@ -13,12 +13,6 @@ TESTRUNNER := $(ECHO) + WARNFLAGS := -Wall -W -Wundef -Wpointer-arith -Wcast-align \ + -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes \ + -Wmissing-declarations -Wnested-externs -pedantic +-# BeOS/Haiku/AmigaOS4 standard library headers create warnings +-ifneq ($(TARGET),beos) +- ifneq ($(TARGET),AmigaOS) +- WARNFLAGS := $(WARNFLAGS) -Werror +- endif +-endif + CFLAGS := -D_BSD_SOURCE -I$(CURDIR)/include/ \ + -I$(CURDIR)/src $(WARNFLAGS) $(CFLAGS) + ifneq ($(GCCVER),2) diff --git a/buildroot/package/libsvgtiny/Config.in b/buildroot/package/libsvgtiny/Config.in new file mode 100644 index 0000000..836dec2 --- /dev/null +++ b/buildroot/package/libsvgtiny/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBSVGTINY + bool "libsvgtiny" + select BR2_PACKAGE_LIBXML2 + help + Libsvgtiny is an implementation of SVG Tiny, written in C. + It is currently in development for use with NetSurf and is + intended to be suitable for use in other projects too. + + http://www.netsurf-browser.org/projects/libsvgtiny/ diff --git a/buildroot/package/libsvgtiny/libsvgtiny.hash b/buildroot/package/libsvgtiny/libsvgtiny.hash new file mode 100644 index 0000000..fce3795 --- /dev/null +++ b/buildroot/package/libsvgtiny/libsvgtiny.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 082a2e8849f05e2364a942eec51a798d637c6eca44db8c73350a038ebd1fd268 libsvgtiny-ea9d99fc8b231c22d06168135e181d61f4eb2f06.tar.gz diff --git a/buildroot/package/libsvgtiny/libsvgtiny.mk b/buildroot/package/libsvgtiny/libsvgtiny.mk new file mode 100644 index 0000000..febd3fc --- /dev/null +++ b/buildroot/package/libsvgtiny/libsvgtiny.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# libsvgtiny +# +################################################################################ + +LIBSVGTINY_SITE = http://git.netsurf-browser.org/libsvgtiny.git +LIBSVGTINY_SITE_METHOD = git +LIBSVGTINY_VERSION = ea9d99fc8b231c22d06168135e181d61f4eb2f06 +LIBSVGTINY_INSTALL_STAGING = YES +LIBSVGTINY_DEPENDENCIES = \ + libxml2 host-gperf host-pkgconf host-netsurf-buildsystem +LIBSVGTINY_LICENSE = MIT +LIBSVGTINY_LICENSE_FILES = README + +# The libsvgtiny build system cannot build both the shared and static +# libraries. So when the Buildroot configuration requests to build +# both the shared and static variants, we build only the shared one. +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LIBSVGTINY_COMPONENT_TYPE = lib-shared +else +LIBSVGTINY_COMPONENT_TYPE = lib-static +endif + +define LIBSVGTINY_CONFIGURE_CMDS + ln -sf $(HOST_DIR)/share/netsurf-buildsystem $(@D)/build +endef + +define LIBSVGTINY_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) PREFIX=/usr \ + COMPONENT_TYPE=$(LIBSVGTINY_COMPONENT_TYPE) +endef + +define LIBSVGTINY_INSTALL_STAGING_CMDS + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) PREFIX=/usr DESTDIR=$(STAGING_DIR) \ + COMPONENT_TYPE=$(LIBSVGTINY_COMPONENT_TYPE) install +endef + +define LIBSVGTINY_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) PREFIX=/usr DESTDIR=$(TARGET_DIR) \ + COMPONENT_TYPE=$(LIBSVGTINY_COMPONENT_TYPE) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libsysfs/Config.in b/buildroot/package/libsysfs/Config.in new file mode 100644 index 0000000..2cbebaa --- /dev/null +++ b/buildroot/package/libsysfs/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBSYSFS + bool "libsysfs" + help + These are a set of utilities built upon sysfs, a filesystem in + Linux 2.6 kernels that exposes a system's device tree. + + http://linux-diag.sourceforge.net/Sysfsutils.html diff --git a/buildroot/package/libsysfs/libsysfs.hash b/buildroot/package/libsysfs/libsysfs.hash new file mode 100644 index 0000000..c419ed9 --- /dev/null +++ b/buildroot/package/libsysfs/libsysfs.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 e865de2c1f559fff0d3fc936e660c0efaf7afe662064f2fb97ccad1ec28d208a sysfsutils-2.1.0.tar.gz diff --git a/buildroot/package/libsysfs/libsysfs.mk b/buildroot/package/libsysfs/libsysfs.mk new file mode 100644 index 0000000..13edc9a --- /dev/null +++ b/buildroot/package/libsysfs/libsysfs.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libsysfs +# +################################################################################ + +LIBSYSFS_VERSION = 2.1.0 +LIBSYSFS_SITE = http://downloads.sourceforge.net/project/linux-diag/sysfsutils/$(LIBSYSFS_VERSION) +LIBSYSFS_SOURCE = sysfsutils-$(LIBSYSFS_VERSION).tar.gz +LIBSYSFS_INSTALL_STAGING = YES +LIBSYSFS_LICENSE = GPL-2.0 (utilities), LGPL-2.1+ (library) +LIBSYSFS_LICENSE_FILES = cmd/GPL lib/LGPL + +$(eval $(autotools-package)) diff --git a/buildroot/package/libtasn1/Config.in b/buildroot/package/libtasn1/Config.in new file mode 100644 index 0000000..181fc69 --- /dev/null +++ b/buildroot/package/libtasn1/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBTASN1 + bool "libtasn1" + help + ASN.1 library + + http://www.gnu.org/software/libtasn1 diff --git a/buildroot/package/libtasn1/libtasn1.hash b/buildroot/package/libtasn1/libtasn1.hash new file mode 100644 index 0000000..9ed7a7a --- /dev/null +++ b/buildroot/package/libtasn1/libtasn1.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.13.tar.gz.sig +sha256 7e528e8c317ddd156230c4e31d082cd13e7ddeb7a54824be82632209550c8cca libtasn1-4.13.tar.gz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/buildroot/package/libtasn1/libtasn1.mk b/buildroot/package/libtasn1/libtasn1.mk new file mode 100644 index 0000000..f14d57a --- /dev/null +++ b/buildroot/package/libtasn1/libtasn1.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libtasn1 +# +################################################################################ + +LIBTASN1_VERSION = 4.13 +LIBTASN1_SITE = $(BR2_GNU_MIRROR)/libtasn1 +LIBTASN1_DEPENDENCIES = host-bison +LIBTASN1_LICENSE = GPL-3.0+ (tests, tools), LGPL-2.1+ (library) +LIBTASN1_LICENSE_FILES = COPYING COPYING.LIB +LIBTASN1_INSTALL_STAGING = YES +# 'missing' fallback logic botched so disable it completely +LIBTASN1_CONF_ENV = MAKEINFO="true" + +$(eval $(autotools-package)) diff --git a/buildroot/package/libtheora/0001-link-libtheoradec.patch b/buildroot/package/libtheora/0001-link-libtheoradec.patch new file mode 100644 index 0000000..c38d32b --- /dev/null +++ b/buildroot/package/libtheora/0001-link-libtheoradec.patch @@ -0,0 +1,21 @@ +libtheoraenc.so needs to be linked to libtheoradec.so in order to avoid + +symbol 'th_comment_query_count': can't resolve symbol in lib '/usr/lib/libtheoraenc.so.1' + +when starting Freeswitch. + +Patch downloaded from +http://www.sisyphus.ru/en/srpm/Sisyphus/libtheora/patches/0 + +Signed-off-by: Bernd Kuhls + +--- libtheora/lib/Makefile.am ++++ libtheora/lib/Makefile.am +@@ -153,6 +153,7 @@ libtheoraenc_la_SOURCES = \ + libtheoraenc_la_LDFLAGS = \ + -version-info @THENC_LIB_CURRENT@:@THENC_LIB_REVISION@:@THENC_LIB_AGE@ \ + @THEORAENC_LDFLAGS@ $(OGG_LIBS) ++libtheoraenc_la_LIBADD = libtheoradec.la + + libtheora_la_SOURCES = \ + $(decoder_sources) \ diff --git a/buildroot/package/libtheora/0002-fix-autoreconf.patch b/buildroot/package/libtheora/0002-fix-autoreconf.patch new file mode 100644 index 0000000..dd3f473 --- /dev/null +++ b/buildroot/package/libtheora/0002-fix-autoreconf.patch @@ -0,0 +1,46 @@ +Fix broken autoreconf + +Downloaded from upstream git +https://git.xiph.org/?p=theora.git;a=commitdiff;h=28cc6dbd9b2a141df94f60993256a5fca368fa54 + +Signed-off-by: Bernd Kuhls + + +From: Tim Terriberry +Date: Fri, 20 May 2011 20:41:50 +0000 (+0000) +Subject: Make autoreconf -i -f work. +X-Git-Url: https://git.xiph.org/?p=theora.git;a=commitdiff_plain;h=28cc6dbd9b2a141df94f60993256a5fca368fa54 + +Make autoreconf -i -f work. + +Patch from David Schleef. + +svn path=/trunk/theora/; revision=17990 +--- + +diff --git a/Makefile.am b/Makefile.am +index 89fd753..1783857 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -4,6 +4,8 @@ + #AUTOMAKE_OPTIONS = foreign 1.7 dist-zip dist-bzip2 + AUTOMAKE_OPTIONS = foreign 1.11 dist-zip dist-xz + ++ACLOCAL_AMFLAGS=-I m4 ++ + if THEORA_ENABLE_EXAMPLES + EXAMPLES_DIR = examples + else +diff --git a/configure.ac b/configure.ac +index 1cbec1a..456b603 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -68,7 +68,7 @@ AC_LIBTOOL_WIN32_DLL + AM_PROG_LIBTOOL + + dnl Add parameters for aclocal +-AC_SUBST(ACLOCAL_AMFLAGS, "-I m4") ++AC_CONFIG_MACRO_DIR([m4]) + + dnl Check for doxygen + AC_ARG_ENABLE([doc], diff --git a/buildroot/package/libtheora/Config.in b/buildroot/package/libtheora/Config.in new file mode 100644 index 0000000..eee9e9b --- /dev/null +++ b/buildroot/package/libtheora/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBTHEORA + bool "libtheora" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + help + A library for the free and open video compression format + "Theora" from the Xiph.org Foundation. + + http://www.theora.org/ diff --git a/buildroot/package/libtheora/libtheora.hash b/buildroot/package/libtheora/libtheora.hash new file mode 100644 index 0000000..daf2455 --- /dev/null +++ b/buildroot/package/libtheora/libtheora.hash @@ -0,0 +1,2 @@ +# From http://downloads.xiph.org/releases/theora/SHA256SUMS +sha256 f36da409947aa2b3dcc6af0a8c2e3144bc19db2ed547d64e9171c59c66561c61 libtheora-1.1.1.tar.xz diff --git a/buildroot/package/libtheora/libtheora.mk b/buildroot/package/libtheora/libtheora.mk new file mode 100644 index 0000000..f408e6c --- /dev/null +++ b/buildroot/package/libtheora/libtheora.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libtheora +# +################################################################################ + +LIBTHEORA_VERSION = 1.1.1 +LIBTHEORA_SOURCE = libtheora-$(LIBTHEORA_VERSION).tar.xz +LIBTHEORA_SITE = http://downloads.xiph.org/releases/theora +LIBTHEORA_INSTALL_STAGING = YES +# We're patching Makefile.am +LIBTHEORA_AUTORECONF = YES +LIBTHEORA_LICENSE = BSD-3-Clause +LIBTHEORA_LICENSE_FILES = COPYING LICENSE + +LIBTHEORA_CONF_OPTS = \ + --disable-oggtest \ + --disable-vorbistest \ + --disable-sdltest \ + --disable-examples \ + --disable-spec + +LIBTHEORA_DEPENDENCIES = libogg libvorbis host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/libtirpc/0001-Disable-parts-of-TIRPC-requiring-NIS-support.patch b/buildroot/package/libtirpc/0001-Disable-parts-of-TIRPC-requiring-NIS-support.patch new file mode 100644 index 0000000..eb1bef3 --- /dev/null +++ b/buildroot/package/libtirpc/0001-Disable-parts-of-TIRPC-requiring-NIS-support.patch @@ -0,0 +1,48 @@ +From 15adb318818f5d0ac609ef2b87643dd760487cb6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Mon, 20 Jul 2015 20:30:11 +0200 +Subject: [PATCH 1/1] Disable parts of TIRPC requiring NIS support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Thomas Petazzoni +[yann.morin.1998@free.fr: update for 0.3.1] +Signed-off-by: "Yann E. MORIN" +[joerg.krause@embedded.rocks: update for 0.3.2] +Signed-off-by: Jörg Krause +[peda@axentia.se: update for 1.0.1] +Signed-off-by: Peter Rosin +[bernd.kuhls@t-online.de: update for 1.0.2] +Signed-off-by: Bernd Kuhls +--- + src/Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/Makefile.am b/src/Makefile.am +index 6cc567a..9834f9a 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -24,7 +24,7 @@ libtirpc_la_SOURCES = auth_none.c auth_unix.c authunix_prot.c bindresvport.c cln + rpcb_st_xdr.c svc.c svc_auth.c svc_dg.c svc_auth_unix.c svc_auth_none.c \ + svc_auth_des.c \ + svc_generic.c svc_raw.c svc_run.c svc_simple.c svc_vc.c getpeereid.c \ +- auth_time.c auth_des.c authdes_prot.c debug.c des_crypt.c des_impl.c ++ auth_des.c authdes_prot.c debug.c des_crypt.c des_impl.c + + ## XDR + libtirpc_la_SOURCES += xdr.c xdr_rec.c xdr_array.c xdr_float.c xdr_mem.c xdr_reference.c xdr_stdio.c xdr_sizeof.c +@@ -41,8 +41,8 @@ if GSS + libtirpc_la_CFLAGS = -DHAVE_RPCSEC_GSS $(GSSAPI_CFLAGS) + endif + +-libtirpc_la_SOURCES += key_call.c key_prot_xdr.c getpublickey.c +-libtirpc_la_SOURCES += netname.c netnamer.c rpcdname.c rtime.c ++#libtirpc_la_SOURCES += key_call.c key_prot_xdr.c getpublickey.c ++#libtirpc_la_SOURCES += netname.c netnamer.c rpcdname.c rtime.c + + CLEANFILES = cscope.* *~ + DISTCLEANFILES = Makefile.in +-- +2.4.6 + diff --git a/buildroot/package/libtirpc/0002-uClibc-without-RPC-support-and-musl-does-not-install-rpcent.h.patch b/buildroot/package/libtirpc/0002-uClibc-without-RPC-support-and-musl-does-not-install-rpcent.h.patch new file mode 100644 index 0000000..51229a0 --- /dev/null +++ b/buildroot/package/libtirpc/0002-uClibc-without-RPC-support-and-musl-does-not-install-rpcent.h.patch @@ -0,0 +1,35 @@ +From 7aa1fe6a0f9280571117c30c03c2cc521cd86ec3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 23 Jun 2012 21:58:07 +0200 +Subject: [PATCH] uClibc without RPC support and musl does not install rpcent.h + +Signed-off-by: Thomas Petazzoni +[yann.morin.1998@free.fr: update for 0.3.1] +Signed-off-by: "Yann E. MORIN" +[joerg.krause@embedded.rocks: musl fix] +Signed-off-by: Jörg Krause +[bernd.kuhls@t-online.de: update for 1.0.2] +Signed-off-by: Bernd Kuhls +--- + tirpc/rpc/rpcent.h | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/tirpc/rpc/rpcent.h b/tirpc/rpc/rpcent.h +index 147f909..4a58180 100644 +--- a/tirpc/rpc/rpcent.h ++++ b/tirpc/rpc/rpcent.h +@@ -48,8 +48,9 @@ + extern "C" { + #endif + +-/* These are defined in /usr/include/rpc/netdb.h */ +-#if !defined(__GLIBC__) || defined(__UCLIBC__) ++/* These are defined in /usr/include/rpc/netdb.h, unless we are using ++ the C library without RPC support. */ ++#if defined(__UCLIBC__) && !defined(__UCLIBC_HAS_RPC__) || !defined(__GLIBC__) + struct rpcent { + char *r_name; /* name of server for this rpc program */ + char **r_aliases; /* alias list */ +-- +1.9.1 + diff --git a/buildroot/package/libtirpc/0003-Automatically-generate-XDR-header-files-from-.x-sour.patch b/buildroot/package/libtirpc/0003-Automatically-generate-XDR-header-files-from-.x-sour.patch new file mode 100644 index 0000000..2712f53 --- /dev/null +++ b/buildroot/package/libtirpc/0003-Automatically-generate-XDR-header-files-from-.x-sour.patch @@ -0,0 +1,1001 @@ +From 001e3f26dc80b8f21bed7d9b5872fe10e8b4af04 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 10 Nov 2012 17:29:53 +0100 +Subject: [PATCH] Automatically generate XDR header files from .x sources using + rpcgen + +[Gustavo: update after dropping non-IPv6 support] +Signed-off-by: Thomas Petazzoni +[yann.morin.1998@free.fr: update for 0.3.1] +Signed-off-by: "Yann E. MORIN" +[baruch: use external rpcgen] +Signed-off-by: Baruch Siach +--- + Makefile.am | 16 +- + src/Makefile.am | 2 +- + tirpc/rpc/rpcb_prot.h | 797 ------------------------------------------ + tirpc/rpcsvc/crypt.h | 109 ------ + 4 files changed, 14 insertions(+), 910 deletions(-) + delete mode 100644 tirpc/rpc/rpcb_prot.h + delete mode 100644 tirpc/rpcsvc/crypt.h + +diff --git a/Makefile.am b/Makefile.am +index 3f6063771faf..368fb8a1aed2 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,6 +1,9 @@ + SUBDIRS = src man doc + ACLOCAL_AMFLAGS = -I m4 + ++GENFILES = tirpc/rpcsvc/crypt.h \ ++ tirpc/rpc/rpcb_prot.h ++ + noinst_HEADERS = tirpc/reentrant.h \ + tirpc/getpeereid.h \ + tirpc/libc_private.h \ +@@ -8,7 +11,6 @@ noinst_HEADERS = tirpc/reentrant.h \ + + nobase_include_HEADERS = tirpc/netconfig.h \ + tirpc/rpcsvc/crypt.x \ +- tirpc/rpcsvc/crypt.h \ + tirpc/rpc/xdr.h \ + tirpc/rpc/types.h \ + tirpc/rpc/svc_soc.h \ +@@ -21,7 +23,6 @@ nobase_include_HEADERS = tirpc/netconfig.h \ + tirpc/rpc/rpcent.h \ + tirpc/rpc/rpc_com.h \ + tirpc/rpc/rpcb_prot.x \ +- tirpc/rpc/rpcb_prot.h \ + tirpc/rpc/rpcb_clnt.h \ + tirpc/rpc/raw.h \ + tirpc/rpc/pmap_rmt.h \ +@@ -48,5 +49,14 @@ endif + pkgconfigdir=$(libdir)/pkgconfig + pkgconfig_DATA = libtirpc.pc + +-CLEANFILES = cscope.* *~ ++nobase_nodist_include_HEADERS = $(GENFILES) ++BUILT_SOURCES = $(GENFILES) ++ ++$(GENFILES): %.h: %.x ++ mkdir -p $(dir $@) ++ rpcgen -h -o $@ $< ++ ++force: ++ ++CLEANFILES = cscope.* *~ $(GENFILES) + DISTCLEANFILES = Makefile.in libtirpc*.tar.gz +diff --git a/src/Makefile.am b/src/Makefile.am +index 2af40f16d03a..0b7e23835c36 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -8,7 +8,7 @@ + noinst_HEADERS = rpc_com.h debug.h + + AM_CPPFLAGS = -I$(top_srcdir)/tirpc -include config.h -DPORTMAP -DINET6 \ +- -D_GNU_SOURCE -Wall -pipe ++ -D_GNU_SOURCE -Wall -pipe -I$(top_builddir)/tirpc + + lib_LTLIBRARIES = libtirpc.la + +diff --git a/tirpc/rpc/rpcb_prot.h b/tirpc/rpc/rpcb_prot.h +deleted file mode 100644 +index 7ae48b805370..000000000000 +--- a/tirpc/rpc/rpcb_prot.h ++++ /dev/null +@@ -1,797 +0,0 @@ +-/* +- * Please do not edit this file. +- * It was generated using rpcgen. +- */ +- +-#ifndef _RPCB_PROT_H_RPCGEN +-#define _RPCB_PROT_H_RPCGEN +- +-#include +- +-#ifndef IXDR_GET_INT32 +-#define IXDR_GET_INT32(buf) IXDR_GET_LONG((buf)) +-#endif +-#ifndef IXDR_PUT_INT32 +-#define IXDR_PUT_INT32(buf, v) IXDR_PUT_LONG((buf), (v)) +-#endif +-#ifndef IXDR_GET_U_INT32 +-#define IXDR_GET_U_INT32(buf) IXDR_GET_U_LONG((buf)) +-#endif +-#ifndef IXDR_PUT_U_INT32 +-#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_U_LONG((buf), (v)) +-#endif +-/* +- * $FreeBSD: src/include/rpc/rpcb_prot.x,v 1.3 2002/03/13 10:29:06 obrien Exp $ +- * +- * Copyright (c) 2009, Sun Microsystems, Inc. +- * All rights reserved. +- * +- * Redistribution and use in source and binary forms, with or without +- * modification, are permitted provided that the following conditions are met: +- * - Redistributions of source code must retain the above copyright notice, +- * this list of conditions and the following disclaimer. +- * - Redistributions in binary form must reproduce the above copyright notice, +- * this list of conditions and the following disclaimer in the documentation +- * and/or other materials provided with the distribution. +- * - Neither the name of Sun Microsystems, Inc. nor the names of its +- * contributors may be used to endorse or promote products derived +- * from this software without specific prior written permission. +- * +- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +- * POSSIBILITY OF SUCH DAMAGE. +- */ +-/* +- * Copyright (c) 1988 by Sun Microsystems, Inc. +- */ +-/* from rpcb_prot.x */ +- +-/* #pragma ident "@(#)rpcb_prot.x 1.5 94/04/29 SMI" */ +- +-#ifndef _KERNEL +- +- +-/* +- * The following procedures are supported by the protocol in version 3: +- * +- * RPCBPROC_NULL() returns () +- * takes nothing, returns nothing +- * +- * RPCBPROC_SET(rpcb) returns (bool_t) +- * TRUE is success, FALSE is failure. Registers the tuple +- * [prog, vers, address, owner, netid]. +- * Finds out owner and netid information on its own. +- * +- * RPCBPROC_UNSET(rpcb) returns (bool_t) +- * TRUE is success, FALSE is failure. Un-registers tuple +- * [prog, vers, netid]. addresses is ignored. +- * If netid is NULL, unregister all. +- * +- * RPCBPROC_GETADDR(rpcb) returns (string). +- * 0 is failure. Otherwise returns the universal address where the +- * triple [prog, vers, netid] is registered. Ignore address and owner. +- * +- * RPCBPROC_DUMP() RETURNS (rpcblist_ptr) +- * used to dump the entire rpcbind maps +- * +- * RPCBPROC_CALLIT(rpcb_rmtcallargs) +- * RETURNS (rpcb_rmtcallres); +- * Calls the procedure on the remote machine. If it is not registered, +- * this procedure is quiet; i.e. it does not return error information!!! +- * This routine only passes null authentication parameters. +- * It has no interface to xdr routines for RPCBPROC_CALLIT. +- * +- * RPCBPROC_GETTIME() returns (int). +- * Gets the remote machines time +- * +- * RPCBPROC_UADDR2TADDR(strint) RETURNS (struct netbuf) +- * Returns the netbuf address from universal address. +- * +- * RPCBPROC_TADDR2UADDR(struct netbuf) RETURNS (string) +- * Returns the universal address from netbuf address. +- * +- * END OF RPCBIND VERSION 3 PROCEDURES +- */ +-/* +- * Except for RPCBPROC_CALLIT, the procedures above are carried over to +- * rpcbind version 4. Those below are added or modified for version 4. +- * NOTE: RPCBPROC_BCAST HAS THE SAME FUNCTIONALITY AND PROCEDURE NUMBER +- * AS RPCBPROC_CALLIT. +- * +- * RPCBPROC_BCAST(rpcb_rmtcallargs) +- * RETURNS (rpcb_rmtcallres); +- * Calls the procedure on the remote machine. If it is not registered, +- * this procedure IS quiet; i.e. it DOES NOT return error information!!! +- * This routine should be used for broadcasting and nothing else. +- * +- * RPCBPROC_GETVERSADDR(rpcb) returns (string). +- * 0 is failure. Otherwise returns the universal address where the +- * triple [prog, vers, netid] is registered. Ignore address and owner. +- * Same as RPCBPROC_GETADDR except that if the given version number +- * is not available, the address is not returned. +- * +- * RPCBPROC_INDIRECT(rpcb_rmtcallargs) +- * RETURNS (rpcb_rmtcallres); +- * Calls the procedure on the remote machine. If it is not registered, +- * this procedure is NOT quiet; i.e. it DOES return error information!!! +- * as any normal application would expect. +- * +- * RPCBPROC_GETADDRLIST(rpcb) returns (rpcb_entry_list_ptr). +- * Same as RPCBPROC_GETADDR except that it returns a list of all the +- * addresses registered for the combination (prog, vers) (for all +- * transports). +- * +- * RPCBPROC_GETSTAT(void) returns (rpcb_stat_byvers) +- * Returns the statistics about the kind of requests received by rpcbind. +- */ +- +-/* +- * A mapping of (program, version, network ID) to address +- */ +- +-struct rpcb { +- rpcprog_t r_prog; +- rpcvers_t r_vers; +- char *r_netid; +- char *r_addr; +- char *r_owner; +-}; +-typedef struct rpcb rpcb; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcb(XDR *, rpcb*); +-#elif __STDC__ +-extern bool_t xdr_rpcb(XDR *, rpcb*); +-#else /* Old Style C */ +-bool_t xdr_rpcb(); +-#endif /* Old Style C */ +- +- +-typedef rpcb RPCB; +- +- +-/* +- * A list of mappings +- * +- * Below are two definitions for the rpcblist structure. This is done because +- * xdr_rpcblist() is specified to take a struct rpcblist **, rather than a +- * struct rpcblist * that rpcgen would produce. One version of the rpcblist +- * structure (actually called rp__list) is used with rpcgen, and the other is +- * defined only in the header file for compatibility with the specified +- * interface. +- */ +- +-struct rp__list { +- rpcb rpcb_map; +- struct rp__list *rpcb_next; +-}; +-typedef struct rp__list rp__list; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rp__list(XDR *, rp__list*); +-#elif __STDC__ +-extern bool_t xdr_rp__list(XDR *, rp__list*); +-#else /* Old Style C */ +-bool_t xdr_rp__list(); +-#endif /* Old Style C */ +- +- +-typedef rp__list *rpcblist_ptr; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcblist_ptr(XDR *, rpcblist_ptr*); +-#elif __STDC__ +-extern bool_t xdr_rpcblist_ptr(XDR *, rpcblist_ptr*); +-#else /* Old Style C */ +-bool_t xdr_rpcblist_ptr(); +-#endif /* Old Style C */ +- +- +-typedef struct rp__list rpcblist; +-typedef struct rp__list RPCBLIST; +- +-#ifndef __cplusplus +-struct rpcblist { +- RPCB rpcb_map; +- struct rpcblist *rpcb_next; +-}; +-#endif +- +-#ifdef __cplusplus +-extern "C" { +-#endif +-extern bool_t xdr_rpcblist(XDR *, rpcblist**); +-#ifdef __cplusplus +-} +-#endif +- +- +-/* +- * Arguments of remote calls +- */ +- +-struct rpcb_rmtcallargs { +- rpcprog_t prog; +- rpcvers_t vers; +- rpcproc_t proc; +- struct { +- u_int args_len; +- char *args_val; +- } args; +-}; +-typedef struct rpcb_rmtcallargs rpcb_rmtcallargs; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcb_rmtcallargs(XDR *, rpcb_rmtcallargs*); +-#elif __STDC__ +-extern bool_t xdr_rpcb_rmtcallargs(XDR *, rpcb_rmtcallargs*); +-#else /* Old Style C */ +-bool_t xdr_rpcb_rmtcallargs(); +-#endif /* Old Style C */ +- +- +-/* +- * Client-side only representation of rpcb_rmtcallargs structure. +- * +- * The routine that XDRs the rpcb_rmtcallargs structure must deal with the +- * opaque arguments in the "args" structure. xdr_rpcb_rmtcallargs() needs to +- * be passed the XDR routine that knows the args' structure. This routine +- * doesn't need to go over-the-wire (and it wouldn't make sense anyway) since +- * the application being called already knows the args structure. So we use a +- * different "XDR" structure on the client side, r_rpcb_rmtcallargs, which +- * includes the args' XDR routine. +- */ +-struct r_rpcb_rmtcallargs { +- rpcprog_t prog; +- rpcvers_t vers; +- rpcproc_t proc; +- struct { +- u_int args_len; +- char *args_val; +- } args; +- xdrproc_t xdr_args; /* encodes args */ +-}; +- +- +-/* +- * Results of the remote call +- */ +- +-struct rpcb_rmtcallres { +- char *addr; +- struct { +- u_int results_len; +- char *results_val; +- } results; +-}; +-typedef struct rpcb_rmtcallres rpcb_rmtcallres; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcb_rmtcallres(XDR *, rpcb_rmtcallres*); +-#elif __STDC__ +-extern bool_t xdr_rpcb_rmtcallres(XDR *, rpcb_rmtcallres*); +-#else /* Old Style C */ +-bool_t xdr_rpcb_rmtcallres(); +-#endif /* Old Style C */ +- +- +-/* +- * Client-side only representation of rpcb_rmtcallres structure. +- */ +-struct r_rpcb_rmtcallres { +- char *addr; +- struct { +- u_int32_t results_len; +- char *results_val; +- } results; +- xdrproc_t xdr_res; /* decodes results */ +-}; +- +-/* +- * rpcb_entry contains a merged address of a service on a particular +- * transport, plus associated netconfig information. A list of rpcb_entrys +- * is returned by RPCBPROC_GETADDRLIST. See netconfig.h for values used +- * in r_nc_* fields. +- */ +- +-struct rpcb_entry { +- char *r_maddr; +- char *r_nc_netid; +- u_int r_nc_semantics; +- char *r_nc_protofmly; +- char *r_nc_proto; +-}; +-typedef struct rpcb_entry rpcb_entry; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcb_entry(XDR *, rpcb_entry*); +-#elif __STDC__ +-extern bool_t xdr_rpcb_entry(XDR *, rpcb_entry*); +-#else /* Old Style C */ +-bool_t xdr_rpcb_entry(); +-#endif /* Old Style C */ +- +- +-/* +- * A list of addresses supported by a service. +- */ +- +-struct rpcb_entry_list { +- rpcb_entry rpcb_entry_map; +- struct rpcb_entry_list *rpcb_entry_next; +-}; +-typedef struct rpcb_entry_list rpcb_entry_list; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcb_entry_list(XDR *, rpcb_entry_list*); +-#elif __STDC__ +-extern bool_t xdr_rpcb_entry_list(XDR *, rpcb_entry_list*); +-#else /* Old Style C */ +-bool_t xdr_rpcb_entry_list(); +-#endif /* Old Style C */ +- +- +-typedef rpcb_entry_list *rpcb_entry_list_ptr; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcb_entry_list_ptr(XDR *, rpcb_entry_list_ptr*); +-#elif __STDC__ +-extern bool_t xdr_rpcb_entry_list_ptr(XDR *, rpcb_entry_list_ptr*); +-#else /* Old Style C */ +-bool_t xdr_rpcb_entry_list_ptr(); +-#endif /* Old Style C */ +- +- +-/* +- * rpcbind statistics +- */ +- +-#define rpcb_highproc_2 RPCBPROC_CALLIT +-#define rpcb_highproc_3 RPCBPROC_TADDR2UADDR +-#define rpcb_highproc_4 RPCBPROC_GETSTAT +-#define RPCBSTAT_HIGHPROC 13 +-#define RPCBVERS_STAT 3 +-#define RPCBVERS_4_STAT 2 +-#define RPCBVERS_3_STAT 1 +-#define RPCBVERS_2_STAT 0 +- +-/* Link list of all the stats about getport and getaddr */ +- +-struct rpcbs_addrlist { +- rpcprog_t prog; +- rpcvers_t vers; +- int success; +- int failure; +- char *netid; +- struct rpcbs_addrlist *next; +-}; +-typedef struct rpcbs_addrlist rpcbs_addrlist; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcbs_addrlist(XDR *, rpcbs_addrlist*); +-#elif __STDC__ +-extern bool_t xdr_rpcbs_addrlist(XDR *, rpcbs_addrlist*); +-#else /* Old Style C */ +-bool_t xdr_rpcbs_addrlist(); +-#endif /* Old Style C */ +- +- +-/* Link list of all the stats about rmtcall */ +- +-struct rpcbs_rmtcalllist { +- rpcprog_t prog; +- rpcvers_t vers; +- rpcproc_t proc; +- int success; +- int failure; +- int indirect; +- char *netid; +- struct rpcbs_rmtcalllist *next; +-}; +-typedef struct rpcbs_rmtcalllist rpcbs_rmtcalllist; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcbs_rmtcalllist(XDR *, rpcbs_rmtcalllist*); +-#elif __STDC__ +-extern bool_t xdr_rpcbs_rmtcalllist(XDR *, rpcbs_rmtcalllist*); +-#else /* Old Style C */ +-bool_t xdr_rpcbs_rmtcalllist(); +-#endif /* Old Style C */ +- +- +-typedef int rpcbs_proc[RPCBSTAT_HIGHPROC]; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcbs_proc(XDR *, rpcbs_proc); +-#elif __STDC__ +-extern bool_t xdr_rpcbs_proc(XDR *, rpcbs_proc); +-#else /* Old Style C */ +-bool_t xdr_rpcbs_proc(); +-#endif /* Old Style C */ +- +- +-typedef rpcbs_addrlist *rpcbs_addrlist_ptr; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcbs_addrlist_ptr(XDR *, rpcbs_addrlist_ptr*); +-#elif __STDC__ +-extern bool_t xdr_rpcbs_addrlist_ptr(XDR *, rpcbs_addrlist_ptr*); +-#else /* Old Style C */ +-bool_t xdr_rpcbs_addrlist_ptr(); +-#endif /* Old Style C */ +- +- +-typedef rpcbs_rmtcalllist *rpcbs_rmtcalllist_ptr; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcbs_rmtcalllist_ptr(XDR *, rpcbs_rmtcalllist_ptr*); +-#elif __STDC__ +-extern bool_t xdr_rpcbs_rmtcalllist_ptr(XDR *, rpcbs_rmtcalllist_ptr*); +-#else /* Old Style C */ +-bool_t xdr_rpcbs_rmtcalllist_ptr(); +-#endif /* Old Style C */ +- +- +-struct rpcb_stat { +- rpcbs_proc info; +- int setinfo; +- int unsetinfo; +- rpcbs_addrlist_ptr addrinfo; +- rpcbs_rmtcalllist_ptr rmtinfo; +-}; +-typedef struct rpcb_stat rpcb_stat; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcb_stat(XDR *, rpcb_stat*); +-#elif __STDC__ +-extern bool_t xdr_rpcb_stat(XDR *, rpcb_stat*); +-#else /* Old Style C */ +-bool_t xdr_rpcb_stat(); +-#endif /* Old Style C */ +- +- +-/* +- * One rpcb_stat structure is returned for each version of rpcbind +- * being monitored. +- */ +- +-typedef rpcb_stat rpcb_stat_byvers[RPCBVERS_STAT]; +-#ifdef __cplusplus +-extern "C" bool_t xdr_rpcb_stat_byvers(XDR *, rpcb_stat_byvers); +-#elif __STDC__ +-extern bool_t xdr_rpcb_stat_byvers(XDR *, rpcb_stat_byvers); +-#else /* Old Style C */ +-bool_t xdr_rpcb_stat_byvers(); +-#endif /* Old Style C */ +- +- +-/* +- * We don't define netbuf in RPCL, since it would contain structure member +- * names that would conflict with the definition of struct netbuf in +- * . Instead we merely declare the XDR routine xdr_netbuf() here, +- * and implement it ourselves in rpc/rpcb_prot.c. +- */ +-#ifdef __cplusplus +-extern "C" bool_t xdr_netbuf(XDR *, struct netbuf *); +- +-#else /* __STDC__ */ +-extern bool_t xdr_netbuf(XDR *, struct netbuf *); +- +-#endif +- +-#define RPCBVERS_3 RPCBVERS +-#define RPCBVERS_4 RPCBVERS4 +- +-#define _PATH_RPCBINDSOCK "/var/run/rpcbind.sock" +- +-#else /* ndef _KERNEL */ +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-/* +- * A mapping of (program, version, network ID) to address +- */ +-struct rpcb { +- rpcprog_t r_prog; /* program number */ +- rpcvers_t r_vers; /* version number */ +- char *r_netid; /* network id */ +- char *r_addr; /* universal address */ +- char *r_owner; /* owner of the mapping */ +-}; +-typedef struct rpcb RPCB; +- +-/* +- * A list of mappings +- */ +-struct rpcblist { +- RPCB rpcb_map; +- struct rpcblist *rpcb_next; +-}; +-typedef struct rpcblist RPCBLIST; +-typedef struct rpcblist *rpcblist_ptr; +- +-/* +- * Remote calls arguments +- */ +-struct rpcb_rmtcallargs { +- rpcprog_t prog; /* program number */ +- rpcvers_t vers; /* version number */ +- rpcproc_t proc; /* procedure number */ +- u_int32_t arglen; /* arg len */ +- caddr_t args_ptr; /* argument */ +- xdrproc_t xdr_args; /* XDR routine for argument */ +-}; +-typedef struct rpcb_rmtcallargs rpcb_rmtcallargs; +- +-/* +- * Remote calls results +- */ +-struct rpcb_rmtcallres { +- char *addr_ptr; /* remote universal address */ +- u_int32_t resultslen; /* results length */ +- caddr_t results_ptr; /* results */ +- xdrproc_t xdr_results; /* XDR routine for result */ +-}; +-typedef struct rpcb_rmtcallres rpcb_rmtcallres; +- +-struct rpcb_entry { +- char *r_maddr; +- char *r_nc_netid; +- unsigned int r_nc_semantics; +- char *r_nc_protofmly; +- char *r_nc_proto; +-}; +-typedef struct rpcb_entry rpcb_entry; +- +-/* +- * A list of addresses supported by a service. +- */ +- +-struct rpcb_entry_list { +- rpcb_entry rpcb_entry_map; +- struct rpcb_entry_list *rpcb_entry_next; +-}; +-typedef struct rpcb_entry_list rpcb_entry_list; +- +-typedef rpcb_entry_list *rpcb_entry_list_ptr; +- +-/* +- * rpcbind statistics +- */ +- +-#define rpcb_highproc_2 RPCBPROC_CALLIT +-#define rpcb_highproc_3 RPCBPROC_TADDR2UADDR +-#define rpcb_highproc_4 RPCBPROC_GETSTAT +-#define RPCBSTAT_HIGHPROC 13 +-#define RPCBVERS_STAT 3 +-#define RPCBVERS_4_STAT 2 +-#define RPCBVERS_3_STAT 1 +-#define RPCBVERS_2_STAT 0 +- +-/* Link list of all the stats about getport and getaddr */ +- +-struct rpcbs_addrlist { +- rpcprog_t prog; +- rpcvers_t vers; +- int success; +- int failure; +- char *netid; +- struct rpcbs_addrlist *next; +-}; +-typedef struct rpcbs_addrlist rpcbs_addrlist; +- +-/* Link list of all the stats about rmtcall */ +- +-struct rpcbs_rmtcalllist { +- rpcprog_t prog; +- rpcvers_t vers; +- rpcproc_t proc; +- int success; +- int failure; +- int indirect; +- char *netid; +- struct rpcbs_rmtcalllist *next; +-}; +-typedef struct rpcbs_rmtcalllist rpcbs_rmtcalllist; +- +-typedef int rpcbs_proc[RPCBSTAT_HIGHPROC]; +- +-typedef rpcbs_addrlist *rpcbs_addrlist_ptr; +- +-typedef rpcbs_rmtcalllist *rpcbs_rmtcalllist_ptr; +- +-struct rpcb_stat { +- rpcbs_proc info; +- int setinfo; +- int unsetinfo; +- rpcbs_addrlist_ptr addrinfo; +- rpcbs_rmtcalllist_ptr rmtinfo; +-}; +-typedef struct rpcb_stat rpcb_stat; +- +-/* +- * One rpcb_stat structure is returned for each version of rpcbind +- * being monitored. +- */ +- +-typedef rpcb_stat rpcb_stat_byvers[RPCBVERS_STAT]; +- +-#ifdef __cplusplus +-} +-#endif +- +-#endif /* ndef _KERNEL */ +- +-#define RPCBPROG ((u_int32_t)100000) +-#define RPCBVERS ((u_int32_t)3) +- +-#ifdef __cplusplus +-#define RPCBPROC_SET ((u_int32_t)1) +-extern "C" bool_t * rpcbproc_set_3(rpcb *, CLIENT *); +-extern "C" bool_t * rpcbproc_set_3_svc(rpcb *, struct svc_req *); +-#define RPCBPROC_UNSET ((u_int32_t)2) +-extern "C" bool_t * rpcbproc_unset_3(rpcb *, CLIENT *); +-extern "C" bool_t * rpcbproc_unset_3_svc(rpcb *, struct svc_req *); +-#define RPCBPROC_GETADDR ((u_int32_t)3) +-extern "C" char ** rpcbproc_getaddr_3(rpcb *, CLIENT *); +-extern "C" char ** rpcbproc_getaddr_3_svc(rpcb *, struct svc_req *); +-#define RPCBPROC_DUMP ((u_int32_t)4) +-extern "C" rpcblist_ptr * rpcbproc_dump_3(void *, CLIENT *); +-extern "C" rpcblist_ptr * rpcbproc_dump_3_svc(void *, struct svc_req *); +-#define RPCBPROC_CALLIT ((u_int32_t)5) +-extern "C" rpcb_rmtcallres * rpcbproc_callit_3(rpcb_rmtcallargs *, CLIENT *); +-extern "C" rpcb_rmtcallres * rpcbproc_callit_3_svc(rpcb_rmtcallargs *, struct svc_req *); +-#define RPCBPROC_GETTIME ((u_int32_t)6) +-extern "C" u_int * rpcbproc_gettime_3(void *, CLIENT *); +-extern "C" u_int * rpcbproc_gettime_3_svc(void *, struct svc_req *); +-#define RPCBPROC_UADDR2TADDR ((u_int32_t)7) +-extern "C" struct netbuf * rpcbproc_uaddr2taddr_3(char **, CLIENT *); +-extern "C" struct netbuf * rpcbproc_uaddr2taddr_3_svc(char **, struct svc_req *); +-#define RPCBPROC_TADDR2UADDR ((u_int32_t)8) +-extern "C" char ** rpcbproc_taddr2uaddr_3(struct netbuf *, CLIENT *); +-extern "C" char ** rpcbproc_taddr2uaddr_3_svc(struct netbuf *, struct svc_req *); +- +-#elif __STDC__ +-#define RPCBPROC_SET ((u_int32_t)1) +-extern bool_t * rpcbproc_set_3(rpcb *, CLIENT *); +-extern bool_t * rpcbproc_set_3_svc(rpcb *, struct svc_req *); +-#define RPCBPROC_UNSET ((u_int32_t)2) +-extern bool_t * rpcbproc_unset_3(rpcb *, CLIENT *); +-extern bool_t * rpcbproc_unset_3_svc(rpcb *, struct svc_req *); +-#define RPCBPROC_GETADDR ((u_int32_t)3) +-extern char ** rpcbproc_getaddr_3(rpcb *, CLIENT *); +-extern char ** rpcbproc_getaddr_3_svc(rpcb *, struct svc_req *); +-#define RPCBPROC_DUMP ((u_int32_t)4) +-extern rpcblist_ptr * rpcbproc_dump_3(void *, CLIENT *); +-extern rpcblist_ptr * rpcbproc_dump_3_svc(void *, struct svc_req *); +-#define RPCBPROC_CALLIT ((u_int32_t)5) +-extern rpcb_rmtcallres * rpcbproc_callit_3(rpcb_rmtcallargs *, CLIENT *); +-extern rpcb_rmtcallres * rpcbproc_callit_3_svc(rpcb_rmtcallargs *, struct svc_req *); +-#define RPCBPROC_GETTIME ((u_int32_t)6) +-extern u_int * rpcbproc_gettime_3(void *, CLIENT *); +-extern u_int * rpcbproc_gettime_3_svc(void *, struct svc_req *); +-#define RPCBPROC_UADDR2TADDR ((u_int32_t)7) +-extern struct netbuf * rpcbproc_uaddr2taddr_3(char **, CLIENT *); +-extern struct netbuf * rpcbproc_uaddr2taddr_3_svc(char **, struct svc_req *); +-#define RPCBPROC_TADDR2UADDR ((u_int32_t)8) +-extern char ** rpcbproc_taddr2uaddr_3(struct netbuf *, CLIENT *); +-extern char ** rpcbproc_taddr2uaddr_3_svc(struct netbuf *, struct svc_req *); +- +-#else /* Old Style C */ +-#define RPCBPROC_SET ((u_int32_t)1) +-extern bool_t * rpcbproc_set_3(); +-extern bool_t * rpcbproc_set_3_svc(); +-#define RPCBPROC_UNSET ((u_int32_t)2) +-extern bool_t * rpcbproc_unset_3(); +-extern bool_t * rpcbproc_unset_3_svc(); +-#define RPCBPROC_GETADDR ((u_int32_t)3) +-extern char ** rpcbproc_getaddr_3(); +-extern char ** rpcbproc_getaddr_3_svc(); +-#define RPCBPROC_DUMP ((u_int32_t)4) +-extern rpcblist_ptr * rpcbproc_dump_3(); +-extern rpcblist_ptr * rpcbproc_dump_3_svc(); +-#define RPCBPROC_CALLIT ((u_int32_t)5) +-extern rpcb_rmtcallres * rpcbproc_callit_3(); +-extern rpcb_rmtcallres * rpcbproc_callit_3_svc(); +-#define RPCBPROC_GETTIME ((u_int32_t)6) +-extern u_int * rpcbproc_gettime_3(); +-extern u_int * rpcbproc_gettime_3_svc(); +-#define RPCBPROC_UADDR2TADDR ((u_int32_t)7) +-extern struct netbuf * rpcbproc_uaddr2taddr_3(); +-extern struct netbuf * rpcbproc_uaddr2taddr_3_svc(); +-#define RPCBPROC_TADDR2UADDR ((u_int32_t)8) +-extern char ** rpcbproc_taddr2uaddr_3(); +-extern char ** rpcbproc_taddr2uaddr_3_svc(); +-#endif /* Old Style C */ +-#define RPCBVERS4 ((u_int32_t)4) +- +-#ifdef __cplusplus +-extern "C" bool_t * rpcbproc_set_4(rpcb *, CLIENT *); +-extern "C" bool_t * rpcbproc_set_4_svc(rpcb *, struct svc_req *); +-extern "C" bool_t * rpcbproc_unset_4(rpcb *, CLIENT *); +-extern "C" bool_t * rpcbproc_unset_4_svc(rpcb *, struct svc_req *); +-extern "C" char ** rpcbproc_getaddr_4(rpcb *, CLIENT *); +-extern "C" char ** rpcbproc_getaddr_4_svc(rpcb *, struct svc_req *); +-extern "C" rpcblist_ptr * rpcbproc_dump_4(void *, CLIENT *); +-extern "C" rpcblist_ptr * rpcbproc_dump_4_svc(void *, struct svc_req *); +-#define RPCBPROC_BCAST ((u_int32_t)RPCBPROC_CALLIT) +-extern "C" rpcb_rmtcallres * rpcbproc_bcast_4(rpcb_rmtcallargs *, CLIENT *); +-extern "C" rpcb_rmtcallres * rpcbproc_bcast_4_svc(rpcb_rmtcallargs *, struct svc_req *); +-extern "C" u_int * rpcbproc_gettime_4(void *, CLIENT *); +-extern "C" u_int * rpcbproc_gettime_4_svc(void *, struct svc_req *); +-extern "C" struct netbuf * rpcbproc_uaddr2taddr_4(char **, CLIENT *); +-extern "C" struct netbuf * rpcbproc_uaddr2taddr_4_svc(char **, struct svc_req *); +-extern "C" char ** rpcbproc_taddr2uaddr_4(struct netbuf *, CLIENT *); +-extern "C" char ** rpcbproc_taddr2uaddr_4_svc(struct netbuf *, struct svc_req *); +-#define RPCBPROC_GETVERSADDR ((u_int32_t)9) +-extern "C" char ** rpcbproc_getversaddr_4(rpcb *, CLIENT *); +-extern "C" char ** rpcbproc_getversaddr_4_svc(rpcb *, struct svc_req *); +-#define RPCBPROC_INDIRECT ((u_int32_t)10) +-extern "C" rpcb_rmtcallres * rpcbproc_indirect_4(rpcb_rmtcallargs *, CLIENT *); +-extern "C" rpcb_rmtcallres * rpcbproc_indirect_4_svc(rpcb_rmtcallargs *, struct svc_req *); +-#define RPCBPROC_GETADDRLIST ((u_int32_t)11) +-extern "C" rpcb_entry_list_ptr * rpcbproc_getaddrlist_4(rpcb *, CLIENT *); +-extern "C" rpcb_entry_list_ptr * rpcbproc_getaddrlist_4_svc(rpcb *, struct svc_req *); +-#define RPCBPROC_GETSTAT ((u_int32_t)12) +-extern "C" rpcb_stat * rpcbproc_getstat_4(void *, CLIENT *); +-extern "C" rpcb_stat * rpcbproc_getstat_4_svc(void *, struct svc_req *); +- +-#elif __STDC__ +-extern bool_t * rpcbproc_set_4(rpcb *, CLIENT *); +-extern bool_t * rpcbproc_set_4_svc(rpcb *, struct svc_req *); +-extern bool_t * rpcbproc_unset_4(rpcb *, CLIENT *); +-extern bool_t * rpcbproc_unset_4_svc(rpcb *, struct svc_req *); +-extern char ** rpcbproc_getaddr_4(rpcb *, CLIENT *); +-extern char ** rpcbproc_getaddr_4_svc(rpcb *, struct svc_req *); +-extern rpcblist_ptr * rpcbproc_dump_4(void *, CLIENT *); +-extern rpcblist_ptr * rpcbproc_dump_4_svc(void *, struct svc_req *); +-#define RPCBPROC_BCAST ((u_int32_t)RPCBPROC_CALLIT) +-extern rpcb_rmtcallres * rpcbproc_bcast_4(rpcb_rmtcallargs *, CLIENT *); +-extern rpcb_rmtcallres * rpcbproc_bcast_4_svc(rpcb_rmtcallargs *, struct svc_req *); +-extern u_int * rpcbproc_gettime_4(void *, CLIENT *); +-extern u_int * rpcbproc_gettime_4_svc(void *, struct svc_req *); +-extern struct netbuf * rpcbproc_uaddr2taddr_4(char **, CLIENT *); +-extern struct netbuf * rpcbproc_uaddr2taddr_4_svc(char **, struct svc_req *); +-extern char ** rpcbproc_taddr2uaddr_4(struct netbuf *, CLIENT *); +-extern char ** rpcbproc_taddr2uaddr_4_svc(struct netbuf *, struct svc_req *); +-#define RPCBPROC_GETVERSADDR ((u_int32_t)9) +-extern char ** rpcbproc_getversaddr_4(rpcb *, CLIENT *); +-extern char ** rpcbproc_getversaddr_4_svc(rpcb *, struct svc_req *); +-#define RPCBPROC_INDIRECT ((u_int32_t)10) +-extern rpcb_rmtcallres * rpcbproc_indirect_4(rpcb_rmtcallargs *, CLIENT *); +-extern rpcb_rmtcallres * rpcbproc_indirect_4_svc(rpcb_rmtcallargs *, struct svc_req *); +-#define RPCBPROC_GETADDRLIST ((u_int32_t)11) +-extern rpcb_entry_list_ptr * rpcbproc_getaddrlist_4(rpcb *, CLIENT *); +-extern rpcb_entry_list_ptr * rpcbproc_getaddrlist_4_svc(rpcb *, struct svc_req *); +-#define RPCBPROC_GETSTAT ((u_int32_t)12) +-extern rpcb_stat * rpcbproc_getstat_4(void *, CLIENT *); +-extern rpcb_stat * rpcbproc_getstat_4_svc(void *, struct svc_req *); +- +-#else /* Old Style C */ +-extern bool_t * rpcbproc_set_4(); +-extern bool_t * rpcbproc_set_4_svc(); +-extern bool_t * rpcbproc_unset_4(); +-extern bool_t * rpcbproc_unset_4_svc(); +-extern char ** rpcbproc_getaddr_4(); +-extern char ** rpcbproc_getaddr_4_svc(); +-extern rpcblist_ptr * rpcbproc_dump_4(); +-extern rpcblist_ptr * rpcbproc_dump_4_svc(); +-#define RPCBPROC_BCAST ((u_int32_t)RPCBPROC_CALLIT) +-extern rpcb_rmtcallres * rpcbproc_bcast_4(); +-extern rpcb_rmtcallres * rpcbproc_bcast_4_svc(); +-extern u_int * rpcbproc_gettime_4(); +-extern u_int * rpcbproc_gettime_4_svc(); +-extern struct netbuf * rpcbproc_uaddr2taddr_4(); +-extern struct netbuf * rpcbproc_uaddr2taddr_4_svc(); +-extern char ** rpcbproc_taddr2uaddr_4(); +-extern char ** rpcbproc_taddr2uaddr_4_svc(); +-#define RPCBPROC_GETVERSADDR ((u_int32_t)9) +-extern char ** rpcbproc_getversaddr_4(); +-extern char ** rpcbproc_getversaddr_4_svc(); +-#define RPCBPROC_INDIRECT ((u_int32_t)10) +-extern rpcb_rmtcallres * rpcbproc_indirect_4(); +-extern rpcb_rmtcallres * rpcbproc_indirect_4_svc(); +-#define RPCBPROC_GETADDRLIST ((u_int32_t)11) +-extern rpcb_entry_list_ptr * rpcbproc_getaddrlist_4(); +-extern rpcb_entry_list_ptr * rpcbproc_getaddrlist_4_svc(); +-#define RPCBPROC_GETSTAT ((u_int32_t)12) +-extern rpcb_stat * rpcbproc_getstat_4(); +-extern rpcb_stat * rpcbproc_getstat_4_svc(); +-#endif /* Old Style C */ +- +-#endif /* !_RPCB_PROT_H_RPCGEN */ +diff --git a/tirpc/rpcsvc/crypt.h b/tirpc/rpcsvc/crypt.h +deleted file mode 100644 +index da1f9ccb56ea..000000000000 +--- a/tirpc/rpcsvc/crypt.h ++++ /dev/null +@@ -1,109 +0,0 @@ +-/* +- * Please do not edit this file. +- * It was generated using rpcgen. +- */ +- +-#ifndef _CRYPT_H_RPCGEN +-#define _CRYPT_H_RPCGEN +- +-#include +- +-#ifndef IXDR_GET_INT32 +-#define IXDR_GET_INT32(buf) IXDR_GET_LONG((buf)) +-#endif +-#ifndef IXDR_PUT_INT32 +-#define IXDR_PUT_INT32(buf, v) IXDR_PUT_LONG((buf), (v)) +-#endif +-#ifndef IXDR_GET_U_INT32 +-#define IXDR_GET_U_INT32(buf) IXDR_GET_U_LONG((buf)) +-#endif +-#ifndef IXDR_PUT_U_INT32 +-#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_U_LONG((buf), (v)) +-#endif +- +-enum des_dir { +- ENCRYPT_DES = 0, +- DECRYPT_DES = 1, +-}; +-typedef enum des_dir des_dir; +-#ifdef __cplusplus +-extern "C" bool_t xdr_des_dir(XDR *, des_dir*); +-#elif __STDC__ +-extern bool_t xdr_des_dir(XDR *, des_dir*); +-#else /* Old Style C */ +-bool_t xdr_des_dir(); +-#endif /* Old Style C */ +- +- +-enum des_mode { +- CBC_DES = 0, +- ECB_DES = 1, +-}; +-typedef enum des_mode des_mode; +-#ifdef __cplusplus +-extern "C" bool_t xdr_des_mode(XDR *, des_mode*); +-#elif __STDC__ +-extern bool_t xdr_des_mode(XDR *, des_mode*); +-#else /* Old Style C */ +-bool_t xdr_des_mode(); +-#endif /* Old Style C */ +- +- +-struct desargs { +- u_char des_key[8]; +- des_dir des_dir; +- des_mode des_mode; +- u_char des_ivec[8]; +- struct { +- u_int desbuf_len; +- char *desbuf_val; +- } desbuf; +-}; +-typedef struct desargs desargs; +-#ifdef __cplusplus +-extern "C" bool_t xdr_desargs(XDR *, desargs*); +-#elif __STDC__ +-extern bool_t xdr_desargs(XDR *, desargs*); +-#else /* Old Style C */ +-bool_t xdr_desargs(); +-#endif /* Old Style C */ +- +- +-struct desresp { +- struct { +- u_int desbuf_len; +- char *desbuf_val; +- } desbuf; +- u_char des_ivec[8]; +- int stat; +-}; +-typedef struct desresp desresp; +-#ifdef __cplusplus +-extern "C" bool_t xdr_desresp(XDR *, desresp*); +-#elif __STDC__ +-extern bool_t xdr_desresp(XDR *, desresp*); +-#else /* Old Style C */ +-bool_t xdr_desresp(); +-#endif /* Old Style C */ +- +- +-#define CRYPT_PROG ((u_int32_t)600100029) +-#define CRYPT_VERS ((u_int32_t)1) +- +-#ifdef __cplusplus +-#define DES_CRYPT ((u_int32_t)1) +-extern "C" desresp * des_crypt_1(desargs *, CLIENT *); +-extern "C" desresp * des_crypt_1_svc(desargs *, struct svc_req *); +- +-#elif __STDC__ +-#define DES_CRYPT ((u_int32_t)1) +-extern desresp * des_crypt_1(desargs *, CLIENT *); +-extern desresp * des_crypt_1_svc(desargs *, struct svc_req *); +- +-#else /* Old Style C */ +-#define DES_CRYPT ((u_int32_t)1) +-extern desresp * des_crypt_1(); +-extern desresp * des_crypt_1_svc(); +-#endif /* Old Style C */ +- +-#endif /* !_CRYPT_H_RPCGEN */ +-- +2.17.0 + diff --git a/buildroot/package/libtirpc/0004-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch b/buildroot/package/libtirpc/0004-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch new file mode 100644 index 0000000..7f53ffc --- /dev/null +++ b/buildroot/package/libtirpc/0004-Add-more-XDR-files-needed-to-build-rpcbind-on-top-of.patch @@ -0,0 +1,1653 @@ +From baeca7ea594fe9faa1d40d35e76066c6002ca638 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 10 Nov 2012 17:45:03 +0100 +Subject: [PATCH] Add more XDR files needed to build rpcbind on top of libtirpc + +Signed-off-by: Thomas Petazzoni +[yann.morin.1998@free.fr: update for 0.3.1] +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 6 + + tirpc/rpcsvc/mount.x | 257 ++++++++++ + tirpc/rpcsvc/nfs_prot.x | 1266 +++++++++++++++++++++++++++++++++++++++++++++++ + tirpc/rpcsvc/rquota.x | 67 +++ + 4 files changed, 1596 insertions(+) + create mode 100644 tirpc/rpcsvc/mount.x + create mode 100644 tirpc/rpcsvc/nfs_prot.x + create mode 100644 tirpc/rpcsvc/rquota.x + +diff --git a/Makefile.am b/Makefile.am +index aa5908e..4999066 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -2,6 +2,9 @@ SUBDIRS = src man doc rpcgen + ACLOCAL_AMFLAGS = -I m4 + + GENFILES = tirpc/rpcsvc/crypt.h \ ++ tirpc/rpcsvc/mount.h \ ++ tirpc/rpcsvc/nfs_prot.h \ ++ tirpc/rpcsvc/rquota.h \ + tirpc/rpc/rpcb_prot.h + + noinst_HEADERS = tirpc/reentrant.h \ +@@ -11,6 +14,9 @@ noinst_HEADERS = tirpc/reentrant.h \ + + nobase_include_HEADERS = tirpc/netconfig.h \ + tirpc/rpcsvc/crypt.x \ ++ tirpc/rpcsvc/mount.x \ ++ tirpc/rpcsvc/nfs_prot.x \ ++ tirpc/rpcsvc/rquota.x \ + tirpc/rpc/xdr.h \ + tirpc/rpc/types.h \ + tirpc/rpc/svc_soc.h \ +diff --git a/tirpc/rpcsvc/mount.x b/tirpc/rpcsvc/mount.x +new file mode 100644 +index 0000000..f68a06f +--- /dev/null ++++ b/tirpc/rpcsvc/mount.x +@@ -0,0 +1,257 @@ ++/* ++ * Sun RPC is a product of Sun Microsystems, Inc. and is provided for ++ * unrestricted use provided that this legend is included on all tape ++ * media and as a part of the software program in whole or part. Users ++ * may copy or modify Sun RPC without charge, but are not authorized ++ * to license or distribute it to anyone else except as part of a product or ++ * program developed by the user. ++ * ++ * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE ++ * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR ++ * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. ++ * ++ * Sun RPC is provided with no support and without any obligation on the ++ * part of Sun Microsystems, Inc. to assist in its use, correction, ++ * modification or enhancement. ++ * ++ * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE ++ * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC ++ * OR ANY PART THEREOF. ++ * ++ * In no event will Sun Microsystems, Inc. be liable for any lost revenue ++ * or profits or other special, indirect and consequential damages, even if ++ * Sun has been advised of the possibility of such damages. ++ * ++ * Sun Microsystems, Inc. ++ * 2550 Garcia Avenue ++ * Mountain View, California 94043 ++ */ ++ ++/* ++ * Protocol description for the mount program ++ */ ++ ++#ifndef RPC_HDR ++%#ifndef lint ++%/*static char sccsid[] = "from: @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro";*/ ++%/*static char sccsid[] = "from: @(#)mount.x 2.1 88/08/01 4.0 RPCSRC";*/ ++%static const char rcsid[] = ++% "$FreeBSD: src/include/rpcsvc/mount.x,v 1.6 1999/08/27 23:45:08 peter Exp $"; ++%#endif /* not lint */ ++#endif ++ ++const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */ ++const MNTNAMLEN = 255; /* maximum bytes in a name argument */ ++const FHSIZE = 32; /* size in bytes of a file handle */ ++#ifdef WANT_NFS3 ++const FHSIZE3 = 64; /* size in bytes of a file handle (v3) */ ++#endif ++ ++/* ++ * The fhandle is the file handle that the server passes to the client. ++ * All file operations are done using the file handles to refer to a file ++ * or a directory. The file handle can contain whatever information the ++ * server needs to distinguish an individual file. ++ */ ++typedef opaque fhandle[FHSIZE]; ++#ifdef WANT_NFS3 ++typedef opaque fhandle3; ++#endif ++ ++/* ++ * If a status of zero is returned, the call completed successfully, and ++ * a file handle for the directory follows. A non-zero status indicates ++ * some sort of error. The status corresponds with UNIX error numbers. ++ */ ++union fhstatus switch (unsigned fhs_status) { ++case 0: ++ fhandle fhs_fhandle; ++default: ++ void; ++}; ++ ++#ifdef WANT_NFS3 ++/* ++ * Status codes returned by the version 3 mount call. ++ */ ++enum mountstat3 { ++ MNT3_OK = 0, /* no error */ ++ MNT3ERR_PERM = 1, /* Not owner */ ++ MNT3ERR_NOENT = 2, /* No such file or directory */ ++ MNT3ERR_IO = 5, /* I/O error */ ++ MNT3ERR_ACCES = 13, /* Permission denied */ ++ MNT3ERR_NOTDIR = 20, /* Not a directory */ ++ MNT3ERR_INVAL = 22, /* Invalid argument */ ++ MNT3ERR_NAMETOOLONG = 63, /* Filename too long */ ++ MNT3ERR_NOTSUPP = 10004, /* Operation not supported */ ++ MNT3ERR_SERVERFAULT = 10006 /* A failure on the server */ ++}; ++ ++struct mountres3_ok { ++ fhandle3 fhandle; ++ int auth_flavors<>; ++}; ++ ++union mountres3 switch (mountstat3 fhs_status) { ++case 0: ++ mountres3_ok mountinfo; ++default: ++ void; ++}; ++#endif ++ ++/* ++ * The type dirpath is the pathname of a directory ++ */ ++typedef string dirpath; ++ ++/* ++ * The type name is used for arbitrary names (hostnames, groupnames) ++ */ ++typedef string name; ++ ++/* ++ * A list of who has what mounted ++ */ ++typedef struct mountbody *mountlist; ++struct mountbody { ++ name ml_hostname; ++ dirpath ml_directory; ++ mountlist ml_next; ++}; ++ ++/* ++ * A list of netgroups ++ */ ++typedef struct groupnode *groups; ++struct groupnode { ++ name gr_name; ++ groups gr_next; ++}; ++ ++/* ++ * A list of what is exported and to whom ++ */ ++typedef struct exportnode *exports; ++struct exportnode { ++ dirpath ex_dir; ++ groups ex_groups; ++ exports ex_next; ++}; ++ ++program MOUNTPROG { ++ /* ++ * Version one of the mount protocol communicates with version two ++ * of the NFS protocol. Version three communicates with ++ * version three of the NFS protocol. The only connecting ++ * point is the fhandle structure, which is the same for both ++ * protocols. ++ */ ++ version MOUNTVERS { ++ /* ++ * Does no work. It is made available in all RPC services ++ * to allow server reponse testing and timing ++ */ ++ void ++ MOUNTPROC_NULL(void) = 0; ++ ++ /* ++ * If fhs_status is 0, then fhs_fhandle contains the ++ * file handle for the directory. This file handle may ++ * be used in the NFS protocol. This procedure also adds ++ * a new entry to the mount list for this client mounting ++ * the directory. ++ * Unix authentication required. ++ */ ++ fhstatus ++ MOUNTPROC_MNT(dirpath) = 1; ++ ++ /* ++ * Returns the list of remotely mounted filesystems. The ++ * mountlist contains one entry for each hostname and ++ * directory pair. ++ */ ++ mountlist ++ MOUNTPROC_DUMP(void) = 2; ++ ++ /* ++ * Removes the mount list entry for the directory ++ * Unix authentication required. ++ */ ++ void ++ MOUNTPROC_UMNT(dirpath) = 3; ++ ++ /* ++ * Removes all of the mount list entries for this client ++ * Unix authentication required. ++ */ ++ void ++ MOUNTPROC_UMNTALL(void) = 4; ++ ++ /* ++ * Returns a list of all the exported filesystems, and which ++ * machines are allowed to import it. ++ */ ++ exports ++ MOUNTPROC_EXPORT(void) = 5; ++ ++ /* ++ * Identical to MOUNTPROC_EXPORT above ++ */ ++ exports ++ MOUNTPROC_EXPORTALL(void) = 6; ++ } = 1; ++#ifdef WANT_NFS3 ++ version MOUNTVERS3 { ++ /* ++ * Does no work. It is made available in all RPC services ++ * to allow server reponse testing and timing ++ */ ++ void ++ MOUNTPROC_NULL(void) = 0; ++ ++ /* ++ * If mountres3.fhs_status is MNT3_OK, then ++ * mountres3.mountinfo contains the file handle for ++ * the directory and a list of acceptable ++ * authentication flavors. This file handle may only ++ * be used in the NFS version 3 protocol. This ++ * procedure also results in the server adding a new ++ * entry to its mount list recording that this client ++ * has mounted the directory. AUTH_UNIX authentication ++ * or better is required. ++ */ ++ mountres3 ++ MOUNTPROC_MNT(dirpath) = 1; ++ ++ /* ++ * Returns the list of remotely mounted filesystems. The ++ * mountlist contains one entry for each hostname and ++ * directory pair. ++ */ ++ mountlist ++ MOUNTPROC_DUMP(void) = 2; ++ ++ /* ++ * Removes the mount list entry for the directory ++ * Unix authentication required. ++ */ ++ void ++ MOUNTPROC_UMNT(dirpath) = 3; ++ ++ /* ++ * Removes all of the mount list entries for this client ++ * Unix authentication required. ++ */ ++ void ++ MOUNTPROC_UMNTALL(void) = 4; ++ ++ /* ++ * Returns a list of all the exported filesystems, and which ++ * machines are allowed to import it. ++ */ ++ exports ++ MOUNTPROC_EXPORT(void) = 5; ++ } = 3; ++#endif ++} = 100005; +diff --git a/tirpc/rpcsvc/nfs_prot.x b/tirpc/rpcsvc/nfs_prot.x +new file mode 100644 +index 0000000..01564f8 +--- /dev/null ++++ b/tirpc/rpcsvc/nfs_prot.x +@@ -0,0 +1,1266 @@ ++/* ++ * Sun RPC is a product of Sun Microsystems, Inc. and is provided for ++ * unrestricted use provided that this legend is included on all tape ++ * media and as a part of the software program in whole or part. Users ++ * may copy or modify Sun RPC without charge, but are not authorized ++ * to license or distribute it to anyone else except as part of a product or ++ * program developed by the user. ++ * ++ * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE ++ * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR ++ * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. ++ * ++ * Sun RPC is provided with no support and without any obligation on the ++ * part of Sun Microsystems, Inc. to assist in its use, correction, ++ * modification or enhancement. ++ * ++ * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE ++ * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC ++ * OR ANY PART THEREOF. ++ * ++ * In no event will Sun Microsystems, Inc. be liable for any lost revenue ++ * or profits or other special, indirect and consequential damages, even if ++ * Sun has been advised of the possibility of such damages. ++ * ++ * Sun Microsystems, Inc. ++ * 2550 Garcia Avenue ++ * Mountain View, California 94043 ++ */ ++ ++#ifndef RPC_HDR ++%#ifndef lint ++%/*static char sccsid[] = "from: @(#)nfs_prot.x 1.2 87/10/12 Copyr 1987 Sun Micro";*/ ++%/*static char sccsid[] = "from: @(#)nfs_prot.x 2.1 88/08/01 4.0 RPCSRC";*/ ++%static const char rcsid[] = ++% "$FreeBSD: src/include/rpcsvc/nfs_prot.x,v 1.7 1999/08/27 23:45:08 peter Exp $"; ++%#endif /* not lint */ ++#endif ++ ++const NFS_PORT = 2049; ++const NFS_MAXDATA = 8192; ++const NFS_MAXPATHLEN = 1024; ++const NFS_MAXNAMLEN = 255; ++const NFS_FHSIZE = 32; ++const NFS_COOKIESIZE = 4; ++const NFS_FIFO_DEV = -1; /* size kludge for named pipes */ ++ ++/* ++ * File types ++ */ ++const NFSMODE_FMT = 0170000; /* type of file */ ++const NFSMODE_DIR = 0040000; /* directory */ ++const NFSMODE_CHR = 0020000; /* character special */ ++const NFSMODE_BLK = 0060000; /* block special */ ++const NFSMODE_REG = 0100000; /* regular */ ++const NFSMODE_LNK = 0120000; /* symbolic link */ ++const NFSMODE_SOCK = 0140000; /* socket */ ++const NFSMODE_FIFO = 0010000; /* fifo */ ++ ++/* ++ * Error status ++ */ ++enum nfsstat { ++ NFS_OK= 0, /* no error */ ++ NFSERR_PERM=1, /* Not owner */ ++ NFSERR_NOENT=2, /* No such file or directory */ ++ NFSERR_IO=5, /* I/O error */ ++ NFSERR_NXIO=6, /* No such device or address */ ++ NFSERR_ACCES=13, /* Permission denied */ ++ NFSERR_EXIST=17, /* File exists */ ++ NFSERR_NODEV=19, /* No such device */ ++ NFSERR_NOTDIR=20, /* Not a directory*/ ++ NFSERR_ISDIR=21, /* Is a directory */ ++ NFSERR_FBIG=27, /* File too large */ ++ NFSERR_NOSPC=28, /* No space left on device */ ++ NFSERR_ROFS=30, /* Read-only file system */ ++ NFSERR_NAMETOOLONG=63, /* File name too long */ ++ NFSERR_NOTEMPTY=66, /* Directory not empty */ ++ NFSERR_DQUOT=69, /* Disc quota exceeded */ ++ NFSERR_STALE=70, /* Stale NFS file handle */ ++ NFSERR_WFLUSH=99 /* write cache flushed */ ++}; ++ ++/* ++ * File types ++ */ ++enum ftype { ++ NFNON = 0, /* non-file */ ++ NFREG = 1, /* regular file */ ++ NFDIR = 2, /* directory */ ++ NFBLK = 3, /* block special */ ++ NFCHR = 4, /* character special */ ++ NFLNK = 5, /* symbolic link */ ++ NFSOCK = 6, /* unix domain sockets */ ++ NFBAD = 7, /* unused */ ++ NFFIFO = 8 /* named pipe */ ++}; ++ ++/* ++ * File access handle ++ */ ++struct nfs_fh { ++ opaque data[NFS_FHSIZE]; ++}; ++ ++/* ++ * Timeval ++ */ ++struct nfstime { ++ unsigned seconds; ++ unsigned useconds; ++}; ++ ++ ++/* ++ * File attributes ++ */ ++struct fattr { ++ ftype type; /* file type */ ++ unsigned mode; /* protection mode bits */ ++ unsigned nlink; /* # hard links */ ++ unsigned uid; /* owner user id */ ++ unsigned gid; /* owner group id */ ++ unsigned size; /* file size in bytes */ ++ unsigned blocksize; /* prefered block size */ ++ unsigned rdev; /* special device # */ ++ unsigned blocks; /* Kb of disk used by file */ ++ unsigned fsid; /* device # */ ++ unsigned fileid; /* inode # */ ++ nfstime atime; /* time of last access */ ++ nfstime mtime; /* time of last modification */ ++ nfstime ctime; /* time of last change */ ++}; ++ ++/* ++ * File attributes which can be set ++ */ ++struct sattr { ++ unsigned mode; /* protection mode bits */ ++ unsigned uid; /* owner user id */ ++ unsigned gid; /* owner group id */ ++ unsigned size; /* file size in bytes */ ++ nfstime atime; /* time of last access */ ++ nfstime mtime; /* time of last modification */ ++}; ++ ++ ++typedef string filename; ++typedef string nfspath; ++ ++/* ++ * Reply status with file attributes ++ */ ++union attrstat switch (nfsstat status) { ++case NFS_OK: ++ fattr attributes; ++default: ++ void; ++}; ++ ++struct sattrargs { ++ nfs_fh file; ++ sattr attributes; ++}; ++ ++/* ++ * Arguments for directory operations ++ */ ++struct diropargs { ++ nfs_fh dir; /* directory file handle */ ++ filename name; /* name (up to NFS_MAXNAMLEN bytes) */ ++}; ++ ++struct diropokres { ++ nfs_fh file; ++ fattr attributes; ++}; ++ ++/* ++ * Results from directory operation ++ */ ++union diropres switch (nfsstat status) { ++case NFS_OK: ++ diropokres diropres; ++default: ++ void; ++}; ++ ++union readlinkres switch (nfsstat status) { ++case NFS_OK: ++ nfspath data; ++default: ++ void; ++}; ++ ++/* ++ * Arguments to remote read ++ */ ++struct readargs { ++ nfs_fh file; /* handle for file */ ++ unsigned offset; /* byte offset in file */ ++ unsigned count; /* immediate read count */ ++ unsigned totalcount; /* total read count (from this offset)*/ ++}; ++ ++/* ++ * Status OK portion of remote read reply ++ */ ++struct readokres { ++ fattr attributes; /* attributes, need for pagin*/ ++ opaque data; ++}; ++ ++union readres switch (nfsstat status) { ++case NFS_OK: ++ readokres reply; ++default: ++ void; ++}; ++ ++/* ++ * Arguments to remote write ++ */ ++struct writeargs { ++ nfs_fh file; /* handle for file */ ++ unsigned beginoffset; /* beginning byte offset in file */ ++ unsigned offset; /* current byte offset in file */ ++ unsigned totalcount; /* total write count (to this offset)*/ ++ opaque data; ++}; ++ ++struct createargs { ++ diropargs where; ++ sattr attributes; ++}; ++ ++struct renameargs { ++ diropargs from; ++ diropargs to; ++}; ++ ++struct linkargs { ++ nfs_fh from; ++ diropargs to; ++}; ++ ++struct symlinkargs { ++ diropargs from; ++ nfspath to; ++ sattr attributes; ++}; ++ ++ ++typedef opaque nfscookie[NFS_COOKIESIZE]; ++ ++/* ++ * Arguments to readdir ++ */ ++struct readdirargs { ++ nfs_fh dir; /* directory handle */ ++ nfscookie cookie; ++ unsigned count; /* number of directory bytes to read */ ++}; ++ ++struct entry { ++ unsigned fileid; ++ filename name; ++ nfscookie cookie; ++ entry *nextentry; ++}; ++ ++struct dirlist { ++ entry *entries; ++ bool eof; ++}; ++ ++union readdirres switch (nfsstat status) { ++case NFS_OK: ++ dirlist reply; ++default: ++ void; ++}; ++ ++struct statfsokres { ++ unsigned tsize; /* preferred transfer size in bytes */ ++ unsigned bsize; /* fundamental file system block size */ ++ unsigned blocks; /* total blocks in file system */ ++ unsigned bfree; /* free blocks in fs */ ++ unsigned bavail; /* free blocks avail to non-superuser */ ++}; ++ ++union statfsres switch (nfsstat status) { ++case NFS_OK: ++ statfsokres reply; ++default: ++ void; ++}; ++ ++#ifdef WANT_NFS3 ++ ++/* ++ * NFSv3 constants and types ++ */ ++const NFS3_FHSIZE = 64; /* maximum size in bytes of a file handle */ ++const NFS3_COOKIEVERFSIZE = 8; /* size of a cookie verifier for READDIR */ ++const NFS3_CREATEVERFSIZE = 8; /* size of the verifier used for CREATE */ ++const NFS3_WRITEVERFSIZE = 8; /* size of the verifier used for WRITE */ ++ ++typedef unsigned hyper uint64; ++typedef hyper int64; ++typedef unsigned long uint32; ++typedef long int32; ++typedef string filename3<>; ++typedef string nfspath3<>; ++typedef uint64 fileid3; ++typedef uint64 cookie3; ++typedef opaque cookieverf3[NFS3_COOKIEVERFSIZE]; ++typedef opaque createverf3[NFS3_CREATEVERFSIZE]; ++typedef opaque writeverf3[NFS3_WRITEVERFSIZE]; ++typedef uint32 uid3; ++typedef uint32 gid3; ++typedef uint64 size3; ++typedef uint64 offset3; ++typedef uint32 mode3; ++typedef uint32 count3; ++ ++/* ++ * Error status (v3) ++ */ ++enum nfsstat3 { ++ NFS3_OK = 0, ++ NFS3ERR_PERM = 1, ++ NFS3ERR_NOENT = 2, ++ NFS3ERR_IO = 5, ++ NFS3ERR_NXIO = 6, ++ NFS3ERR_ACCES = 13, ++ NFS3ERR_EXIST = 17, ++ NFS3ERR_XDEV = 18, ++ NFS3ERR_NODEV = 19, ++ NFS3ERR_NOTDIR = 20, ++ NFS3ERR_ISDIR = 21, ++ NFS3ERR_INVAL = 22, ++ NFS3ERR_FBIG = 27, ++ NFS3ERR_NOSPC = 28, ++ NFS3ERR_ROFS = 30, ++ NFS3ERR_MLINK = 31, ++ NFS3ERR_NAMETOOLONG = 63, ++ NFS3ERR_NOTEMPTY = 66, ++ NFS3ERR_DQUOT = 69, ++ NFS3ERR_STALE = 70, ++ NFS3ERR_REMOTE = 71, ++ NFS3ERR_BADHANDLE = 10001, ++ NFS3ERR_NOT_SYNC = 10002, ++ NFS3ERR_BAD_COOKIE = 10003, ++ NFS3ERR_NOTSUPP = 10004, ++ NFS3ERR_TOOSMALL = 10005, ++ NFS3ERR_SERVERFAULT = 10006, ++ NFS3ERR_BADTYPE = 10007, ++ NFS3ERR_JUKEBOX = 10008 ++}; ++ ++/* ++ * File types (v3) ++ */ ++enum ftype3 { ++ NF3REG = 1, /* regular file */ ++ NF3DIR = 2, /* directory */ ++ NF3BLK = 3, /* block special */ ++ NF3CHR = 4, /* character special */ ++ NF3LNK = 5, /* symbolic link */ ++ NF3SOCK = 6, /* unix domain sockets */ ++ NF3FIFO = 7 /* named pipe */ ++}; ++ ++struct specdata3 { ++ uint32 specdata1; ++ uint32 specdata2; ++}; ++ ++/* ++ * File access handle (v3) ++ */ ++struct nfs_fh3 { ++ opaque data; ++}; ++ ++/* ++ * Timeval (v3) ++ */ ++struct nfstime3 { ++ uint32 seconds; ++ uint32 nseconds; ++}; ++ ++ ++/* ++ * File attributes (v3) ++ */ ++struct fattr3 { ++ ftype3 type; /* file type */ ++ mode3 mode; /* protection mode bits */ ++ uint32 nlink; /* # hard links */ ++ uid3 uid; /* owner user id */ ++ gid3 gid; /* owner group id */ ++ size3 size; /* file size in bytes */ ++ size3 used; /* prefered block size */ ++ specdata3 rdev; /* special device # */ ++ uint64 fsid; /* device # */ ++ fileid3 fileid; /* inode # */ ++ nfstime3 atime; /* time of last access */ ++ nfstime3 mtime; /* time of last modification */ ++ nfstime3 ctime; /* time of last change */ ++}; ++ ++union post_op_attr switch (bool attributes_follow) { ++case TRUE: ++ fattr3 attributes; ++case FALSE: ++ void; ++}; ++ ++struct wcc_attr { ++ size3 size; ++ nfstime3 mtime; ++ nfstime3 ctime; ++}; ++ ++union pre_op_attr switch (bool attributes_follow) { ++case TRUE: ++ wcc_attr attributes; ++case FALSE: ++ void; ++}; ++ ++struct wcc_data { ++ pre_op_attr before; ++ post_op_attr after; ++}; ++ ++union post_op_fh3 switch (bool handle_follows) { ++case TRUE: ++ nfs_fh3 handle; ++case FALSE: ++ void; ++}; ++ ++/* ++ * File attributes which can be set (v3) ++ */ ++enum time_how { ++ DONT_CHANGE = 0, ++ SET_TO_SERVER_TIME = 1, ++ SET_TO_CLIENT_TIME = 2 ++}; ++ ++union set_mode3 switch (bool set_it) { ++case TRUE: ++ mode3 mode; ++default: ++ void; ++}; ++ ++union set_uid3 switch (bool set_it) { ++case TRUE: ++ uid3 uid; ++default: ++ void; ++}; ++ ++union set_gid3 switch (bool set_it) { ++case TRUE: ++ gid3 gid; ++default: ++ void; ++}; ++ ++union set_size3 switch (bool set_it) { ++case TRUE: ++ size3 size; ++default: ++ void; ++}; ++ ++union set_atime switch (time_how set_it) { ++case SET_TO_CLIENT_TIME: ++ nfstime3 atime; ++default: ++ void; ++}; ++ ++union set_mtime switch (time_how set_it) { ++case SET_TO_CLIENT_TIME: ++ nfstime3 mtime; ++default: ++ void; ++}; ++ ++struct sattr3 { ++ set_mode3 mode; ++ set_uid3 uid; ++ set_gid3 gid; ++ set_size3 size; ++ set_atime atime; ++ set_mtime mtime; ++}; ++ ++/* ++ * Arguments for directory operations (v3) ++ */ ++struct diropargs3 { ++ nfs_fh3 dir; /* directory file handle */ ++ filename3 name; /* name (up to NFS_MAXNAMLEN bytes) */ ++}; ++ ++/* ++ * Arguments to getattr (v3). ++ */ ++struct GETATTR3args { ++ nfs_fh3 object; ++}; ++ ++struct GETATTR3resok { ++ fattr3 obj_attributes; ++}; ++ ++union GETATTR3res switch (nfsstat3 status) { ++case NFS3_OK: ++ GETATTR3resok resok; ++default: ++ void; ++}; ++ ++/* ++ * Arguments to setattr (v3). ++ */ ++union sattrguard3 switch (bool check) { ++case TRUE: ++ nfstime3 obj_ctime; ++case FALSE: ++ void; ++}; ++ ++struct SETATTR3args { ++ nfs_fh3 object; ++ sattr3 new_attributes; ++ sattrguard3 guard; ++}; ++ ++struct SETATTR3resok { ++ wcc_data obj_wcc; ++}; ++ ++struct SETATTR3resfail { ++ wcc_data obj_wcc; ++}; ++ ++union SETATTR3res switch (nfsstat3 status) { ++case NFS3_OK: ++ SETATTR3resok resok; ++default: ++ SETATTR3resfail resfail; ++}; ++ ++/* ++ * Arguments to lookup (v3). ++ */ ++struct LOOKUP3args { ++ diropargs3 what; ++}; ++ ++struct LOOKUP3resok { ++ nfs_fh3 object; ++ post_op_attr obj_attributes; ++ post_op_attr dir_attributes; ++}; ++ ++struct LOOKUP3resfail { ++ post_op_attr dir_attributes; ++}; ++ ++union LOOKUP3res switch (nfsstat3 status) { ++case NFS3_OK: ++ LOOKUP3resok resok; ++default: ++ LOOKUP3resfail resfail; ++}; ++ ++/* ++ * Arguments to access (v3). ++ */ ++const ACCESS3_READ = 0x0001; ++const ACCESS3_LOOKUP = 0x0002; ++const ACCESS3_MODIFY = 0x0004; ++const ACCESS3_EXTEND = 0x0008; ++const ACCESS3_DELETE = 0x0010; ++const ACCESS3_EXECUTE = 0x0020; ++ ++struct ACCESS3args { ++ nfs_fh3 object; ++ uint32 access; ++}; ++ ++struct ACCESS3resok { ++ post_op_attr obj_attributes; ++ uint32 access; ++}; ++ ++struct ACCESS3resfail { ++ post_op_attr obj_attributes; ++}; ++ ++union ACCESS3res switch (nfsstat3 status) { ++case NFS3_OK: ++ ACCESS3resok resok; ++default: ++ ACCESS3resfail resfail; ++}; ++ ++/* ++ * Arguments to readlink (v3). ++ */ ++struct READLINK3args { ++ nfs_fh3 symlink; ++}; ++ ++struct READLINK3resok { ++ post_op_attr symlink_attributes; ++ nfspath3 data; ++}; ++ ++struct READLINK3resfail { ++ post_op_attr symlink_attributes; ++}; ++ ++union READLINK3res switch (nfsstat3 status) { ++case NFS3_OK: ++ READLINK3resok resok; ++default: ++ READLINK3resfail resfail; ++}; ++ ++/* ++ * Arguments to read (v3). ++ */ ++struct READ3args { ++ nfs_fh3 file; ++ offset3 offset; ++ count3 count; ++}; ++ ++struct READ3resok { ++ post_op_attr file_attributes; ++ count3 count; ++ bool eof; ++ opaque data<>; ++}; ++ ++struct READ3resfail { ++ post_op_attr file_attributes; ++}; ++ ++/* XXX: solaris 2.6 uses ``nfsstat'' here */ ++union READ3res switch (nfsstat3 status) { ++case NFS3_OK: ++ READ3resok resok; ++default: ++ READ3resfail resfail; ++}; ++ ++/* ++ * Arguments to write (v3). ++ */ ++enum stable_how { ++ UNSTABLE = 0, ++ DATA_SYNC = 1, ++ FILE_SYNC = 2 ++}; ++ ++struct WRITE3args { ++ nfs_fh3 file; ++ offset3 offset; ++ count3 count; ++ stable_how stable; ++ opaque data<>; ++}; ++ ++struct WRITE3resok { ++ wcc_data file_wcc; ++ count3 count; ++ stable_how committed; ++ writeverf3 verf; ++}; ++ ++struct WRITE3resfail { ++ wcc_data file_wcc; ++}; ++ ++union WRITE3res switch (nfsstat3 status) { ++case NFS3_OK: ++ WRITE3resok resok; ++default: ++ WRITE3resfail resfail; ++}; ++ ++/* ++ * Arguments to create (v3). ++ */ ++enum createmode3 { ++ UNCHECKED = 0, ++ GUARDED = 1, ++ EXCLUSIVE = 2 ++}; ++ ++union createhow3 switch (createmode3 mode) { ++case UNCHECKED: ++case GUARDED: ++ sattr3 obj_attributes; ++case EXCLUSIVE: ++ createverf3 verf; ++}; ++ ++struct CREATE3args { ++ diropargs3 where; ++ createhow3 how; ++}; ++ ++struct CREATE3resok { ++ post_op_fh3 obj; ++ post_op_attr obj_attributes; ++ wcc_data dir_wcc; ++}; ++ ++struct CREATE3resfail { ++ wcc_data dir_wcc; ++}; ++ ++union CREATE3res switch (nfsstat3 status) { ++case NFS3_OK: ++ CREATE3resok resok; ++default: ++ CREATE3resfail resfail; ++}; ++ ++/* ++ * Arguments to mkdir (v3). ++ */ ++struct MKDIR3args { ++ diropargs3 where; ++ sattr3 attributes; ++}; ++ ++struct MKDIR3resok { ++ post_op_fh3 obj; ++ post_op_attr obj_attributes; ++ wcc_data dir_wcc; ++}; ++ ++struct MKDIR3resfail { ++ wcc_data dir_wcc; ++}; ++ ++union MKDIR3res switch (nfsstat3 status) { ++case NFS3_OK: ++ MKDIR3resok resok; ++default: ++ MKDIR3resfail resfail; ++}; ++ ++/* ++ * Arguments to symlink (v3). ++ */ ++struct symlinkdata3 { ++ sattr3 symlink_attributes; ++ nfspath3 symlink_data; ++}; ++ ++struct SYMLINK3args { ++ diropargs3 where; ++ symlinkdata3 symlink; ++}; ++ ++struct SYMLINK3resok { ++ post_op_fh3 obj; ++ post_op_attr obj_attributes; ++ wcc_data dir_wcc; ++}; ++ ++struct SYMLINK3resfail { ++ wcc_data dir_wcc; ++}; ++ ++union SYMLINK3res switch (nfsstat3 status) { ++case NFS3_OK: ++ SYMLINK3resok resok; ++default: ++ SYMLINK3resfail resfail; ++}; ++ ++/* ++ * Arguments to mknod (v3). ++ */ ++struct devicedata3 { ++ sattr3 dev_attributes; ++ specdata3 spec; ++}; ++ ++union mknoddata3 switch (ftype3 type) { ++case NF3CHR: ++case NF3BLK: ++ devicedata3 device; ++case NF3SOCK: ++case NF3FIFO: ++ sattr3 pipe_attributes; ++default: ++ void; ++}; ++ ++struct MKNOD3args { ++ diropargs3 where; ++ mknoddata3 what; ++}; ++ ++struct MKNOD3resok { ++ post_op_fh3 obj; ++ post_op_attr obj_attributes; ++ wcc_data dir_wcc; ++}; ++ ++struct MKNOD3resfail { ++ wcc_data dir_wcc; ++}; ++ ++union MKNOD3res switch (nfsstat3 status) { ++case NFS3_OK: ++ MKNOD3resok resok; ++default: ++ MKNOD3resfail resfail; ++}; ++ ++/* ++ * Arguments to remove (v3). ++ */ ++struct REMOVE3args { ++ diropargs3 object; ++}; ++ ++struct REMOVE3resok { ++ wcc_data dir_wcc; ++}; ++ ++struct REMOVE3resfail { ++ wcc_data dir_wcc; ++}; ++ ++union REMOVE3res switch (nfsstat3 status) { ++case NFS3_OK: ++ REMOVE3resok resok; ++default: ++ REMOVE3resfail resfail; ++}; ++ ++/* ++ * Arguments to rmdir (v3). ++ */ ++struct RMDIR3args { ++ diropargs3 object; ++}; ++ ++struct RMDIR3resok { ++ wcc_data dir_wcc; ++}; ++ ++struct RMDIR3resfail { ++ wcc_data dir_wcc; ++}; ++ ++union RMDIR3res switch (nfsstat3 status) { ++case NFS3_OK: ++ RMDIR3resok resok; ++default: ++ RMDIR3resfail resfail; ++}; ++ ++/* ++ * Arguments to rename (v3). ++ */ ++struct RENAME3args { ++ diropargs3 from; ++ diropargs3 to; ++}; ++ ++struct RENAME3resok { ++ wcc_data fromdir_wcc; ++ wcc_data todir_wcc; ++}; ++ ++struct RENAME3resfail { ++ wcc_data fromdir_wcc; ++ wcc_data todir_wcc; ++}; ++ ++union RENAME3res switch (nfsstat3 status) { ++case NFS3_OK: ++ RENAME3resok resok; ++default: ++ RENAME3resfail resfail; ++}; ++ ++/* ++ * Arguments to link (v3). ++ */ ++struct LINK3args { ++ nfs_fh3 file; ++ diropargs3 link; ++}; ++ ++struct LINK3resok { ++ post_op_attr file_attributes; ++ wcc_data linkdir_wcc; ++}; ++ ++struct LINK3resfail { ++ post_op_attr file_attributes; ++ wcc_data linkdir_wcc; ++}; ++ ++union LINK3res switch (nfsstat3 status) { ++case NFS3_OK: ++ LINK3resok resok; ++default: ++ LINK3resfail resfail; ++}; ++ ++/* ++ * Arguments to readdir (v3). ++ */ ++struct READDIR3args { ++ nfs_fh3 dir; ++ cookie3 cookie; ++ cookieverf3 cookieverf; ++ count3 count; ++}; ++ ++struct entry3 { ++ fileid3 fileid; ++ filename3 name; ++ cookie3 cookie; ++ entry3 *nextentry; ++}; ++ ++struct dirlist3 { ++ entry3 *entries; ++ bool eof; ++}; ++ ++struct READDIR3resok { ++ post_op_attr dir_attributes; ++ cookieverf3 cookieverf; ++ dirlist3 reply; ++}; ++ ++struct READDIR3resfail { ++ post_op_attr dir_attributes; ++}; ++ ++union READDIR3res switch (nfsstat3 status) { ++case NFS3_OK: ++ READDIR3resok resok; ++default: ++ READDIR3resfail resfail; ++}; ++ ++/* ++ * Arguments to readdirplus (v3). ++ */ ++struct READDIRPLUS3args { ++ nfs_fh3 dir; ++ cookie3 cookie; ++ cookieverf3 cookieverf; ++ count3 dircount; ++ count3 maxcount; ++}; ++ ++struct entryplus3 { ++ fileid3 fileid; ++ filename3 name; ++ cookie3 cookie; ++ post_op_attr name_attributes; ++ post_op_fh3 name_handle; ++ entryplus3 *nextentry; ++}; ++ ++struct dirlistplus3 { ++ entryplus3 *entries; ++ bool eof; ++}; ++ ++struct READDIRPLUS3resok { ++ post_op_attr dir_attributes; ++ cookieverf3 cookieverf; ++ dirlistplus3 reply; ++}; ++ ++struct READDIRPLUS3resfail { ++ post_op_attr dir_attributes; ++}; ++ ++union READDIRPLUS3res switch (nfsstat3 status) { ++case NFS3_OK: ++ READDIRPLUS3resok resok; ++default: ++ READDIRPLUS3resfail resfail; ++}; ++ ++/* ++ * Arguments to fsstat (v3). ++ */ ++struct FSSTAT3args { ++ nfs_fh3 fsroot; ++}; ++ ++struct FSSTAT3resok { ++ post_op_attr obj_attributes; ++ size3 tbytes; ++ size3 fbytes; ++ size3 abytes; ++ size3 tfiles; ++ size3 ffiles; ++ size3 afiles; ++ uint32 invarsec; ++}; ++ ++struct FSSTAT3resfail { ++ post_op_attr obj_attributes; ++}; ++ ++union FSSTAT3res switch (nfsstat3 status) { ++case NFS3_OK: ++ FSSTAT3resok resok; ++default: ++ FSSTAT3resfail resfail; ++}; ++ ++/* ++ * Arguments to fsinfo (v3). ++ */ ++const FSF3_LINK = 0x0001; ++const FSF3_SYMLINK = 0x0002; ++const FSF3_HOMOGENEOUS = 0x0008; ++const FSF3_CANSETTIME = 0x0010; ++ ++struct FSINFO3args { ++ nfs_fh3 fsroot; ++}; ++ ++struct FSINFO3resok { ++ post_op_attr obj_attributes; ++ uint32 rtmax; ++ uint32 rtpref; ++ uint32 rtmult; ++ uint32 wtmax; ++ uint32 wtpref; ++ uint32 wtmult; ++ uint32 dtpref; ++ size3 maxfilesize; ++ nfstime3 time_delta; ++ uint32 properties; ++}; ++ ++struct FSINFO3resfail { ++ post_op_attr obj_attributes; ++}; ++ ++union FSINFO3res switch (nfsstat3 status) { ++case NFS3_OK: ++ FSINFO3resok resok; ++default: ++ FSINFO3resfail resfail; ++}; ++ ++/* ++ * Arguments to pathconf (v3). ++ */ ++struct PATHCONF3args { ++ nfs_fh3 object; ++}; ++ ++struct PATHCONF3resok { ++ post_op_attr obj_attributes; ++ uint32 linkmax; ++ uint32 name_max; ++ bool no_trunc; ++ bool chown_restricted; ++ bool case_insensitive; ++ bool case_preserving; ++}; ++ ++struct PATHCONF3resfail { ++ post_op_attr obj_attributes; ++}; ++ ++union PATHCONF3res switch (nfsstat3 status) { ++case NFS3_OK: ++ PATHCONF3resok resok; ++default: ++ PATHCONF3resfail resfail; ++}; ++ ++/* ++ * Arguments to commit (v3). ++ */ ++struct COMMIT3args { ++ nfs_fh3 file; ++ offset3 offset; ++ count3 count; ++}; ++ ++struct COMMIT3resok { ++ wcc_data file_wcc; ++ writeverf3 verf; ++}; ++ ++struct COMMIT3resfail { ++ wcc_data file_wcc; ++}; ++ ++union COMMIT3res switch (nfsstat3 status) { ++case NFS3_OK: ++ COMMIT3resok resok; ++default: ++ COMMIT3resfail resfail; ++}; ++ ++#endif /* WANT_NFS3 */ ++ ++/* ++ * Remote file service routines ++ */ ++program NFS_PROGRAM { ++ version NFS_VERSION { ++ void ++ NFSPROC_NULL(void) = 0; ++ ++ attrstat ++ NFSPROC_GETATTR(nfs_fh) = 1; ++ ++ attrstat ++ NFSPROC_SETATTR(sattrargs) = 2; ++ ++ void ++ NFSPROC_ROOT(void) = 3; ++ ++ diropres ++ NFSPROC_LOOKUP(diropargs) = 4; ++ ++ readlinkres ++ NFSPROC_READLINK(nfs_fh) = 5; ++ ++ readres ++ NFSPROC_READ(readargs) = 6; ++ ++ void ++ NFSPROC_WRITECACHE(void) = 7; ++ ++ attrstat ++ NFSPROC_WRITE(writeargs) = 8; ++ ++ diropres ++ NFSPROC_CREATE(createargs) = 9; ++ ++ nfsstat ++ NFSPROC_REMOVE(diropargs) = 10; ++ ++ nfsstat ++ NFSPROC_RENAME(renameargs) = 11; ++ ++ nfsstat ++ NFSPROC_LINK(linkargs) = 12; ++ ++ nfsstat ++ NFSPROC_SYMLINK(symlinkargs) = 13; ++ ++ diropres ++ NFSPROC_MKDIR(createargs) = 14; ++ ++ nfsstat ++ NFSPROC_RMDIR(diropargs) = 15; ++ ++ readdirres ++ NFSPROC_READDIR(readdirargs) = 16; ++ ++ statfsres ++ NFSPROC_STATFS(nfs_fh) = 17; ++ } = 2; ++} = 100003; ++#ifdef WANT_NFS3 ++program NFS3_PROGRAM { ++ version NFS_V3 { ++ void ++ NFSPROC3_NULL(void) = 0; ++ ++ GETATTR3res ++ NFSPROC3_GETATTR(GETATTR3args) = 1; ++ ++ SETATTR3res ++ NFSPROC3_SETATTR(SETATTR3args) = 2; ++ ++ LOOKUP3res ++ NFSPROC3_LOOKUP(LOOKUP3args) = 3; ++ ++ ACCESS3res ++ NFSPROC3_ACCESS(ACCESS3args) = 4; ++ ++ READLINK3res ++ NFSPROC3_READLINK(READLINK3args) = 5; ++ ++ READ3res ++ NFSPROC3_READ(READ3args) = 6; ++ ++ WRITE3res ++ NFSPROC3_WRITE(WRITE3args) = 7; ++ ++ CREATE3res ++ NFSPROC3_CREATE(CREATE3args) = 8; ++ ++ MKDIR3res ++ NFSPROC3_MKDIR(MKDIR3args) = 9; ++ ++ SYMLINK3res ++ NFSPROC3_SYMLINK(SYMLINK3args) = 10; ++ ++ MKNOD3res ++ NFSPROC3_MKNOD(MKNOD3args) = 11; ++ ++ REMOVE3res ++ NFSPROC3_REMOVE(REMOVE3args) = 12; ++ ++ RMDIR3res ++ NFSPROC3_RMDIR(RMDIR3args) = 13; ++ ++ RENAME3res ++ NFSPROC3_RENAME(RENAME3args) = 14; ++ ++ LINK3res ++ NFSPROC3_LINK(LINK3args) = 15; ++ ++ READDIR3res ++ NFSPROC3_READDIR(READDIR3args) = 16; ++ ++ READDIRPLUS3res ++ NFSPROC3_READDIRPLUS(READDIRPLUS3args) = 17; ++ ++ FSSTAT3res ++ NFSPROC3_FSSTAT(FSSTAT3args) = 18; ++ ++ FSINFO3res ++ NFSPROC3_FSINFO(FSINFO3args) = 19; ++ ++ PATHCONF3res ++ NFSPROC3_PATHCONF(PATHCONF3args) = 20; ++ ++ COMMIT3res ++ NFSPROC3_COMMIT(COMMIT3args) = 21; ++ } = 3; ++} = 100003; ++#endif ++ +diff --git a/tirpc/rpcsvc/rquota.x b/tirpc/rpcsvc/rquota.x +new file mode 100644 +index 0000000..72864d1 +--- /dev/null ++++ b/tirpc/rpcsvc/rquota.x +@@ -0,0 +1,67 @@ ++/* ++ * Remote quota protocol ++ * Requires unix authentication ++ */ ++ ++#ifndef RPC_HDR ++%#ifndef lint ++%/*static char sccsid[] = "from: @(#)rquota.x 1.2 87/09/20 Copyr 1987 Sun Micro";*/ ++%/*static char sccsid[] = "from: @(#)rquota.x 2.1 88/08/01 4.0 RPCSRC";*/ ++%static const char rcsid[] = ++% "$FreeBSD: src/include/rpcsvc/rquota.x,v 1.6 1999/08/27 23:45:10 peter Exp $"; ++%#endif /* not lint */ ++#endif ++ ++const RQ_PATHLEN = 1024; ++ ++struct getquota_args { ++ string gqa_pathp; /* path to filesystem of interest */ ++ int gqa_uid; /* inquire about quota for uid */ ++}; ++ ++/* ++ * remote quota structure ++ */ ++struct rquota { ++ int rq_bsize; /* block size for block counts */ ++ bool rq_active; /* indicates whether quota is active */ ++ unsigned int rq_bhardlimit; /* absolute limit on disk blks alloc */ ++ unsigned int rq_bsoftlimit; /* preferred limit on disk blks */ ++ unsigned int rq_curblocks; /* current block count */ ++ unsigned int rq_fhardlimit; /* absolute limit on allocated files */ ++ unsigned int rq_fsoftlimit; /* preferred file limit */ ++ unsigned int rq_curfiles; /* current # allocated files */ ++ unsigned int rq_btimeleft; /* time left for excessive disk use */ ++ unsigned int rq_ftimeleft; /* time left for excessive files */ ++}; ++ ++enum gqr_status { ++ Q_OK = 1, /* quota returned */ ++ Q_NOQUOTA = 2, /* noquota for uid */ ++ Q_EPERM = 3 /* no permission to access quota */ ++}; ++ ++union getquota_rslt switch (gqr_status status) { ++case Q_OK: ++ rquota gqr_rquota; /* valid if status == Q_OK */ ++case Q_NOQUOTA: ++ void; ++case Q_EPERM: ++ void; ++}; ++ ++program RQUOTAPROG { ++ version RQUOTAVERS { ++ /* ++ * Get all quotas ++ */ ++ getquota_rslt ++ RQUOTAPROC_GETQUOTA(getquota_args) = 1; ++ ++ /* ++ * Get active quotas only ++ */ ++ getquota_rslt ++ RQUOTAPROC_GETACTIVEQUOTA(getquota_args) = 2; ++ } = 1; ++} = 100011; +-- +1.9.1 + diff --git a/buildroot/package/libtirpc/0005-Disable-DES-authentification-support.patch b/buildroot/package/libtirpc/0005-Disable-DES-authentification-support.patch new file mode 100644 index 0000000..0c65472 --- /dev/null +++ b/buildroot/package/libtirpc/0005-Disable-DES-authentification-support.patch @@ -0,0 +1,142 @@ +From 79975eb4104667be85abd06874c258438826b674 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Fri, 24 Jul 2015 14:45:52 +0200 +Subject: [PATCH] Disable DES authentification support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +uClibc and musl does not provide DES authentication. + +Signed-off-by: Jörg Krause +[peda@axentia.se: update for 1.0.1] +Signed-off-by: Peter Rosin +[bernd.kuhls@t-online.de: update for 1.0.2] +Signed-off-by: Bernd Kuhls +--- + src/Makefile.am | 2 +- + src/rpc_soc.c | 32 -------------------------------- + 2 files changed, 1 insertion(+), 33 deletions(-) + +diff --git a/src/Makefile.am b/src/Makefile.am +index 960a522..3a88e31 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -22,9 +22,8 @@ libtirpc_la_SOURCES = auth_none.c auth_unix.c authunix_prot.c bindresvport.c cln + pmap_prot.c pmap_prot2.c pmap_rmt.c rpc_prot.c rpc_commondata.c \ + rpc_callmsg.c rpc_generic.c rpc_soc.c rpcb_clnt.c rpcb_prot.c \ + rpcb_st_xdr.c svc.c svc_auth.c svc_dg.c svc_auth_unix.c svc_auth_none.c \ +- svc_auth_des.c \ + svc_generic.c svc_raw.c svc_run.c svc_simple.c svc_vc.c getpeereid.c \ +- auth_des.c authdes_prot.c debug.c des_crypt.c des_impl.c ++ debug.c + + ## XDR + libtirpc_la_SOURCES += xdr.c xdr_rec.c xdr_array.c xdr_float.c xdr_mem.c xdr_reference.c xdr_stdio.c xdr_sizeof.c +diff --git a/src/svc_auth.c b/src/svc_auth.c +--- a/src/svc_auth.c ++++ b/src/svc_auth.c +@@ -114,9 +114,6 @@ _gss_authenticate(rqst, msg, no_dispatch) + case AUTH_SHORT: + dummy = _svcauth_short(rqst, msg); + return (dummy); +- case AUTH_DES: +- dummy = _svcauth_des(rqst, msg); +- return (dummy); + #ifdef HAVE_RPCSEC_GSS + case RPCSEC_GSS: + dummy = _svcauth_gss(rqst, msg, no_dispatch); +diff --git a/src/rpc_soc.c b/src/rpc_soc.c +index e146ed4..161a1ec 100644 +--- a/src/rpc_soc.c ++++ b/src/rpc_soc.c +@@ -522,86 +521,6 @@ clnt_broadcast(prog, vers, proc, xargs, argsp, xresults, resultsp, eachresult) + } + + /* +- * Create the client des authentication object. Obsoleted by +- * authdes_seccreate(). +- */ +-AUTH * +-authdes_create(servername, window, syncaddr, ckey) +- char *servername; /* network name of server */ +- u_int window; /* time to live */ +- struct sockaddr *syncaddr; /* optional hostaddr to sync with */ +- des_block *ckey; /* optional conversation key to use */ +-{ +- AUTH *nauth; +- char hostname[NI_MAXHOST]; +- +- if (syncaddr) { +- /* +- * Change addr to hostname, because that is the way +- * new interface takes it. +- */ +- switch (syncaddr->sa_family) { +- case AF_INET: +- if (getnameinfo(syncaddr, sizeof(struct sockaddr_in), hostname, +- sizeof hostname, NULL, 0, 0) != 0) +- goto fallback; +- break; +- case AF_INET6: +- if (getnameinfo(syncaddr, sizeof(struct sockaddr_in6), hostname, +- sizeof hostname, NULL, 0, 0) != 0) +- goto fallback; +- break; +- default: +- goto fallback; +- } +- nauth = authdes_seccreate(servername, window, hostname, ckey); +- return (nauth); +- } +-fallback: +- return authdes_seccreate(servername, window, NULL, ckey); +-} +- +-/* +- * Create the client des authentication object. Obsoleted by +- * authdes_pk_seccreate(). +- */ +-extern AUTH *authdes_pk_seccreate(const char *, netobj *, u_int, const char *, +- const des_block *, nis_server *); +- +-AUTH * +-authdes_pk_create(servername, pkey, window, syncaddr, ckey) +- char *servername; /* network name of server */ +- netobj *pkey; /* public key */ +- u_int window; /* time to live */ +- struct sockaddr *syncaddr; /* optional hostaddr to sync with */ +- des_block *ckey; /* optional conversation key to use */ +-{ +- AUTH *nauth; +- char hostname[NI_MAXHOST]; +- +- if (syncaddr) { +- /* +- * Change addr to hostname, because that is the way +- * new interface takes it. +- */ +- switch (syncaddr->sa_family) { +- case AF_INET: +- if (getnameinfo(syncaddr, sizeof(struct sockaddr_in), hostname, +- sizeof hostname, NULL, 0, 0) != 0) +- goto fallback; +- break; +- default: +- goto fallback; +- } +- nauth = authdes_pk_seccreate(servername, pkey, window, hostname, ckey, NULL); +- return (nauth); +- } +-fallback: +- return authdes_pk_seccreate(servername, pkey, window, NULL, ckey, NULL); +-} +- +- +-/* + * Create a client handle for a unix connection. Obsoleted by clnt_vc_create() + */ + CLIENT * +-- +2.4.6 + diff --git a/buildroot/package/libtirpc/0006-include-stdint.h-for-uintptr_t.patch b/buildroot/package/libtirpc/0006-include-stdint.h-for-uintptr_t.patch new file mode 100644 index 0000000..6203161 --- /dev/null +++ b/buildroot/package/libtirpc/0006-include-stdint.h-for-uintptr_t.patch @@ -0,0 +1,31 @@ +From 18f8a605e176f0362da22fd1203eb7cedb136aaf Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 20 Jun 2017 22:06:35 +0200 +Subject: [PATCH] include stdint.h for uintptr_t + +Fixes +| ../../libtirpc-1.0.1/src/xdr_sizeof.c:93:13: error: 'uintptr_t' undeclared (first use in this function); did you mean '__intptr_t'? +| if (len < (uintptr_t)xdrs->x_base) { +| ^~~~~~~~~ + +Signed-off-by: Khem Raj +Signed-off-by: Dmitrii Kolesnichenko +--- + src/xdr_sizeof.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/xdr_sizeof.c b/src/xdr_sizeof.c +index d23fbd1..79d6707 100644 +--- a/src/xdr_sizeof.c ++++ b/src/xdr_sizeof.c +@@ -39,6 +39,7 @@ + #include + #include + #include ++#include + #include "un-namespace.h" + + /* ARGSUSED */ +-- +2.9.4 + diff --git a/buildroot/package/libtirpc/Config.in b/buildroot/package/libtirpc/Config.in new file mode 100644 index 0000000..2e9c939 --- /dev/null +++ b/buildroot/package/libtirpc/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBTIRPC + bool "libtirpc" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Libtirpc is a port of Sun's Transport-Independent RPC + library to Linux. + + http://sourceforge.net/projects/libtirpc/ + +comment "libtirpc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libtirpc/libtirpc.hash b/buildroot/package/libtirpc/libtirpc.hash new file mode 100644 index 0000000..35ac6a2 --- /dev/null +++ b/buildroot/package/libtirpc/libtirpc.hash @@ -0,0 +1,4 @@ +# From sourceforge's info on download page: +sha1 2a8dc0e6eecc45be6597c8287b1d8e15cbee46e3 libtirpc-1.0.2.tar.bz2 +# Locally computed +sha256 723c5ce92706cbb601a8db09110df1b4b69391643158f20ff587e20e7c5f90f5 libtirpc-1.0.2.tar.bz2 diff --git a/buildroot/package/libtirpc/libtirpc.mk b/buildroot/package/libtirpc/libtirpc.mk new file mode 100644 index 0000000..319b78c --- /dev/null +++ b/buildroot/package/libtirpc/libtirpc.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libtirpc +# +################################################################################ + +LIBTIRPC_VERSION = 1.0.2 +LIBTIRPC_SOURCE = libtirpc-$(LIBTIRPC_VERSION).tar.bz2 +LIBTIRPC_SITE = http://downloads.sourceforge.net/project/libtirpc/libtirpc/$(LIBTIRPC_VERSION) +LIBTIRPC_LICENSE = BSD-3-Clause +LIBTIRPC_LICENSE_FILES = COPYING + +LIBTIRPC_DEPENDENCIES = host-nfs-utils +LIBTIRPC_INSTALL_STAGING = YES +LIBTIRPC_AUTORECONF = YES + +# getrpcby{number,name} are only provided if 'GQ' is defined +LIBTIRPC_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -DGQ" + +LIBTIRPC_CONF_OPTS = --disable-gssapi + +define HOST_LIBTIRPC_INSTALL_CMDS + $(INSTALL) -D -m 0644 $(@D)/tirpc/rpc/types.h $(HOST_DIR)/include/rpc/types.h + $(INSTALL) -D -m 0644 $(@D)/tirpc/netconfig.h $(HOST_DIR)/include/netconfig.h +endef + +$(eval $(autotools-package)) +# We are only copying headers; no need for the autotools infrastructure +$(eval $(host-generic-package)) diff --git a/buildroot/package/libtomcrypt/Config.in b/buildroot/package/libtomcrypt/Config.in new file mode 100644 index 0000000..a7c5f50 --- /dev/null +++ b/buildroot/package/libtomcrypt/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LIBTOMCRYPT + bool "libtomcrypt" + select BR2_PACKAGE_LIBTOMMATH + help + LibTomCrypt is a fairly comprehensive, modular and portable + cryptographic toolkit that provides developers with a vast + array of well known published block ciphers, one-way hash + functions, chaining modes, pseudo-random number generators, + public key cryptography and a plethora of other routines. + + http://www.libtom.net diff --git a/buildroot/package/libtomcrypt/libtomcrypt.hash b/buildroot/package/libtomcrypt/libtomcrypt.hash new file mode 100644 index 0000000..be8e9b1 --- /dev/null +++ b/buildroot/package/libtomcrypt/libtomcrypt.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 57c13a34fbfd45696189d19e47864e48f4e5c11590c29b444accb8edbf047f14 crypt-1.18.1.tar.xz diff --git a/buildroot/package/libtomcrypt/libtomcrypt.mk b/buildroot/package/libtomcrypt/libtomcrypt.mk new file mode 100644 index 0000000..ff6222c --- /dev/null +++ b/buildroot/package/libtomcrypt/libtomcrypt.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libtomcrypt +# +################################################################################ + +LIBTOMCRYPT_VERSION = 1.18.1 +LIBTOMCRYPT_SITE = https://github.com/libtom/libtomcrypt/releases/download/v$(LIBTOMCRYPT_VERSION) +LIBTOMCRYPT_SOURCE = crypt-$(LIBTOMCRYPT_VERSION).tar.xz +LIBTOMCRYPT_LICENSE = WTFPL +LIBTOMCRYPT_LICENSE_FILES = LICENSE +LIBTOMCRYPT_INSTALL_STAGING = YES +LIBTOMCRYPT_INSTALL_TARGET = NO # only static library +LIBTOMCRYPT_DEPENDENCIES = libtommath + +LIBTOMCRYPT_CFLAGS = -I./src/headers $(TARGET_CFLAGS) -DLTC_SOURCE -DLTM_DESC + +define LIBTOMCRYPT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) CFLAGS="$(LIBTOMCRYPT_CFLAGS)" +endef + +define LIBTOMCRYPT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(STAGING_DIR)" \ + PREFIX=/usr NODOCS=1 INSTALL_USER=$(shell id -u) \ + INSTALL_GROUP=$(shell id -g) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libtommath/Config.in b/buildroot/package/libtommath/Config.in new file mode 100644 index 0000000..b2ffc72 --- /dev/null +++ b/buildroot/package/libtommath/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBTOMMATH + bool "libtommath" + help + LibTomMath is a free open source portable number theoretic + multiple-precision integer library written entirely in C. + + http://www.libtom.net diff --git a/buildroot/package/libtommath/libtommath.hash b/buildroot/package/libtommath/libtommath.hash new file mode 100644 index 0000000..359dfed --- /dev/null +++ b/buildroot/package/libtommath/libtommath.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 47032fb39d698ce4cf9c9c462c198e6b08790ce8203ad1224086b9b978636c69 ltm-1.0.1.tar.xz diff --git a/buildroot/package/libtommath/libtommath.mk b/buildroot/package/libtommath/libtommath.mk new file mode 100644 index 0000000..ceb2e68 --- /dev/null +++ b/buildroot/package/libtommath/libtommath.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libtommath +# +################################################################################ + +LIBTOMMATH_VERSION = 1.0.1 +LIBTOMMATH_SITE = https://github.com/libtom/libtommath/releases/download/v$(LIBTOMMATH_VERSION) +LIBTOMMATH_SOURCE = ltm-$(LIBTOMMATH_VERSION).tar.xz +LIBTOMMATH_LICENSE = WTFPL +LIBTOMMATH_LICENSE_FILES = LICENSE +LIBTOMMATH_INSTALL_STAGING = YES +LIBTOMMATH_INSTALL_TARGET = NO # only static library + +define LIBTOMMATH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) CFLAGS="-I./ -fPIC $(TARGET_CFLAGS)" +endef + +define LIBTOMMATH_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(STAGING_DIR)" PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libtool/Config.in b/buildroot/package/libtool/Config.in new file mode 100644 index 0000000..8192c77 --- /dev/null +++ b/buildroot/package/libtool/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBTOOL + bool "libtool" + help + Library that hides the complexity of using shared/static + libraries on different platforms behind a consistent, portable + interface. + + http://www.gnu.org/software/libtool/ diff --git a/buildroot/package/libtool/libtool.hash b/buildroot/package/libtool/libtool.hash new file mode 100644 index 0000000..dd34c0d --- /dev/null +++ b/buildroot/package/libtool/libtool.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 7c87a8c2c8c0fc9cd5019e402bed4292462d00a718a7cd5f11218153bf28b26f libtool-2.4.6.tar.xz +# License files, locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/libtool/libtool.mk b/buildroot/package/libtool/libtool.mk new file mode 100644 index 0000000..bf97ee1 --- /dev/null +++ b/buildroot/package/libtool/libtool.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# libtool +# +################################################################################ + +LIBTOOL_VERSION = 2.4.6 +LIBTOOL_SOURCE = libtool-$(LIBTOOL_VERSION).tar.xz +LIBTOOL_SITE = $(BR2_GNU_MIRROR)/libtool +LIBTOOL_INSTALL_STAGING = YES +LIBTOOL_CONF_ENV = HELP2MAN=true +LIBTOOL_DEPENDENCIES = host-m4 +HOST_LIBTOOL_DEPENDENCIES = host-m4 +LIBTOOL_LICENSE = GPL-2.0+ +LIBTOOL_LICENSE_FILES = COPYING + +HOST_LIBTOOL_CONF_ENV = MAKEINFO=true +HOST_LIBTOOL_LIBTOOL_PATCH = NO + +# We have a patch that affects libtool.m4, which triggers an autoreconf +# in the build step. Normally we would set AUTORECONF = YES, but this +# doesn't work for host-libtool because that creates a circular +# dependency. Instead, touch the generated files so autoreconf is not +# triggered in the build step. Note that aclocal.m4 has to be touched +# first since the rest depends on it. Note that we don't need the changes +# in libtool.m4 in our configure script, because we're not actually +# running it on the target. +# For the target, we would normally be able to use AUTORECONF, but it +# fails on libltdl/Makefile.inc. Rather than trying to fix that failure, +# just use the same hack as on the host. +define LIBTOOL_AVOID_AUTORECONF_HOOK + find $(@D) -name aclocal.m4 -exec touch '{}' \; + find $(@D) -name config-h.in -exec touch '{}' \; + find $(@D) -name configure -exec touch '{}' \; + find $(@D) -name Makefile.in -exec touch '{}' \; +endef +LIBTOOL_PRE_CONFIGURE_HOOKS += LIBTOOL_AVOID_AUTORECONF_HOOK +HOST_LIBTOOL_PRE_CONFIGURE_HOOKS += LIBTOOL_AVOID_AUTORECONF_HOOK + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# variables used by other packages +LIBTOOL = $(HOST_DIR)/bin/libtool +LIBTOOLIZE = $(HOST_DIR)/bin/libtoolize diff --git a/buildroot/package/libtorrent/0001-cross_compile.patch b/buildroot/package/libtorrent/0001-cross_compile.patch new file mode 100644 index 0000000..abb2438 --- /dev/null +++ b/buildroot/package/libtorrent/0001-cross_compile.patch @@ -0,0 +1,65 @@ +From c4cc0ba76c81e1967c648be423f5f0312ac9d87f Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Mon, 5 Oct 2015 00:40:25 +0100 +Subject: [PATCH] Fix cross compilation, based on OpenWRT patch. + +[Vincent: tweak the patch for version 0.13.6] + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Vicente Olivert Riera +--- + configure.ac | 1 - + scripts/checks.m4 | 2 +- + scripts/common.m4 | 4 ++-- + 3 files changed, 3 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index ba994ee..7696466 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -19,7 +19,6 @@ AC_SUBST(LIBTORRENT_INTERFACE_VERSION_NO) + + AM_INIT_AUTOMAKE + AC_CONFIG_HEADERS(config.h) +-AM_PATH_CPPUNIT(1.9.6) + + AC_PROG_CXX + +diff --git a/scripts/checks.m4 b/scripts/checks.m4 +index 598f39b..0e5abe0 100644 +--- a/scripts/checks.m4 ++++ b/scripts/checks.m4 +@@ -96,7 +96,7 @@ AC_DEFUN([TORRENT_CHECK_KQUEUE], [ + AC_DEFUN([TORRENT_CHECK_KQUEUE_SOCKET_ONLY], [ + AC_MSG_CHECKING(whether kqueue supports pipes and ptys) + +- AC_RUN_IFELSE([AC_LANG_SOURCE([ ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include + #include + #include +diff --git a/scripts/common.m4 b/scripts/common.m4 +index 5127624..cc68269 100644 +--- a/scripts/common.m4 ++++ b/scripts/common.m4 +@@ -223,7 +223,7 @@ dnl Need to fix this so that it uses the stuff defined by the system. + AC_DEFUN([TORRENT_CHECK_EXECINFO], [ + AC_MSG_CHECKING(for execinfo.h) + +- AC_RUN_IFELSE([AC_LANG_SOURCE([ ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include + int main() { backtrace((void**)0, 0); backtrace_symbols((char**)0, 0); return 0;} + ])], +@@ -238,7 +238,7 @@ AC_DEFUN([TORRENT_CHECK_EXECINFO], [ + AC_DEFUN([TORRENT_CHECK_ALIGNED], [ + AC_MSG_CHECKING(the byte alignment) + +- AC_RUN_IFELSE([AC_LANG_SOURCE([ ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include + int main() { + char buf@<:@8@:>@ = { 0, 0, 0, 0, 1, 0, 0, 0 }; +-- +1.7.1 + diff --git a/buildroot/package/libtorrent/Config.in b/buildroot/package/libtorrent/Config.in new file mode 100644 index 0000000..4787f9c --- /dev/null +++ b/buildroot/package/libtorrent/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBTORRENT + bool "libtorrent" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_ZLIB + help + BitTorrent library written in C++ for *nix + + https://github.com/rakshasa/libtorrent + +comment "libtorrent needs a toolchain w/ C++, threads" + depends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libtorrent/libtorrent.hash b/buildroot/package/libtorrent/libtorrent.hash new file mode 100644 index 0000000..73753e9 --- /dev/null +++ b/buildroot/package/libtorrent/libtorrent.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2838a08c96edfd936aff8fbf99ecbb930c2bfca3337dd1482eb5fccdb80d5a04 libtorrent-0.13.6.tar.gz diff --git a/buildroot/package/libtorrent/libtorrent.mk b/buildroot/package/libtorrent/libtorrent.mk new file mode 100644 index 0000000..fbd332e --- /dev/null +++ b/buildroot/package/libtorrent/libtorrent.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libtorrent +# +################################################################################ + +LIBTORRENT_VERSION = 0.13.6 +LIBTORRENT_SITE = http://rtorrent.net/downloads +LIBTORRENT_DEPENDENCIES = host-pkgconf zlib \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) +LIBTORRENT_CONF_OPTS = --enable-aligned \ + --disable-instrumentation \ + --with-zlib=$(STAGING_DIR)/usr \ + $(if $(BR2_PACKAGE_OPENSSL),--enable-openssl,--disable-openssl) +LIBTORRENT_INSTALL_STAGING = YES +LIBTORRENT_AUTORECONF = YES +LIBTORRENT_LICENSE = GPL-2.0 +LIBTORRENT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libtpl/Config.in b/buildroot/package/libtpl/Config.in new file mode 100644 index 0000000..0286e03 --- /dev/null +++ b/buildroot/package/libtpl/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBTPL + bool "libtpl" + help + Easily store and retrieve binary data in C + + http://troydhanson.github.io/tpl/ diff --git a/buildroot/package/libtpl/libtpl.hash b/buildroot/package/libtpl/libtpl.hash new file mode 100644 index 0000000..7df62f2 --- /dev/null +++ b/buildroot/package/libtpl/libtpl.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0b3750bf62f56be4c42f83c89d8449b24f1c5f1605a104801d70f2f3c06fb2ff libtpl-v1.6.1.tar.gz diff --git a/buildroot/package/libtpl/libtpl.mk b/buildroot/package/libtpl/libtpl.mk new file mode 100644 index 0000000..ed3bfb5 --- /dev/null +++ b/buildroot/package/libtpl/libtpl.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libtpl +# +################################################################################ + +LIBTPL_VERSION = v1.6.1 +LIBTPL_SITE = $(call github,troydhanson,tpl,$(LIBTPL_VERSION)) +LIBTPL_INSTALL_STAGING = YES +LIBTPL_LICENSE = BSD-like +LIBTPL_LICENSE_FILES = LICENSE + +LIBTPL_AUTORECONF = YES + +define LIBTPL_CREATE_MISSING_FILES + touch $(@D)/NEWS $(@D)/AUTHORS $(@D)/ChangeLog $(@D)/COPYING +endef +LIBTPL_POST_EXTRACT_HOOKS += LIBTPL_CREATE_MISSING_FILES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libubox/Config.in b/buildroot/package/libubox/Config.in new file mode 100644 index 0000000..25ef4bb --- /dev/null +++ b/buildroot/package/libubox/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBUBOX + bool "libubox" + depends on !BR2_STATIC_LIBS + help + This library originates from the OpenWrt project to + handle the configuration file infrastructure, but can + also be used for the same purposes in projects other + than OpenWrt. + + http://nbd.name/gitweb.cgi?p=luci2/libubox.git;a=summary + +comment "libubox needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libubox/libubox.mk b/buildroot/package/libubox/libubox.mk new file mode 100644 index 0000000..d3e3b70 --- /dev/null +++ b/buildroot/package/libubox/libubox.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libubox +# +################################################################################ + +LIBUBOX_VERSION = 723730214732862de7e892bae2f7a7889e66bf1b +LIBUBOX_SITE = git://git.openwrt.org/project/libubox.git +LIBUBOX_LICENSE = ISC, BSD-3-Clause +LIBUBOX_INSTALL_STAGING = YES +LIBUBOX_DEPENDENCIES = $(if $(BR2_PACKAGE_JSON_C),json-c) + +ifeq ($(BR2_USE_MMU)$(BR2_PACKAGE_LUA_5_1),yy) +LIBUBOX_DEPENDENCIES += lua +LIBUBOX_CONF_OPTS += -DBUILD_LUA=ON \ + -DLUAPATH=/usr/lib/lua/5.1 \ + -DLUA_CFLAGS=-I$(STAGING_DIR)/usr/include +else +LIBUBOX_CONF_OPTS += -DBUILD_LUA=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libuci/Config.in b/buildroot/package/libuci/Config.in new file mode 100644 index 0000000..2f4ad40 --- /dev/null +++ b/buildroot/package/libuci/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBUCI + bool "libuci" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBUBOX + help + This library originates from the OpenWrt project to + handle the configuration file infrastructure, but can + also be used for the same purposes in projects other + than OpenWrt. + + This package will also install CLI tool uci. + + http://wiki.openwrt.org/doc/techref/uci + +comment "libuci needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libuci/libuci.hash b/buildroot/package/libuci/libuci.hash new file mode 100644 index 0000000..d4c839e --- /dev/null +++ b/buildroot/package/libuci/libuci.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 bb9827863c6b7b6cf986a3de42b5716edb8a280e44b3ce39541de18062c3c00e libuci-49ec6efbdac4819033d34f08927d795f83a3932d.tar.gz diff --git a/buildroot/package/libuci/libuci.mk b/buildroot/package/libuci/libuci.mk new file mode 100644 index 0000000..642238c --- /dev/null +++ b/buildroot/package/libuci/libuci.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# libuci +# +################################################################################ + +LIBUCI_VERSION = 49ec6efbdac4819033d34f08927d795f83a3932d +LIBUCI_SITE = git://git.openwrt.org/project/uci.git +LIBUCI_LICENSE = LGPL-2.1, GPL-2.0 (tools) +LIBUCI_INSTALL_STAGING = YES +LIBUCI_DEPENDENCIES = libubox + +ifeq ($(BR2_PACKAGE_LUA_5_1),y) +LIBUCI_DEPENDENCIES += lua +LIBUCI_CONF_OPTS += -DBUILD_LUA=ON \ + -DLUAPATH=/usr/lib/lua/5.1 \ + -DLUA_CFLAGS=-I$(STAGING_DIR)/usr/include +LIBUCI_LICENSE := $(LIBUCI_LICENSE), GPL-2.0 (lua bindings) +else +LIBUCI_CONF_OPTS += -DBUILD_LUA=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libucl/Config.in b/buildroot/package/libucl/Config.in new file mode 100644 index 0000000..a94701e --- /dev/null +++ b/buildroot/package/libucl/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBUCL + bool "libucl" + help + Universal configuration library parser + + Libucl is a parser and C API to parse and generate ucl + objects. Libucl consist of several groups of functions: + parser, emitting, conversion, generation, iteration, + validation, and utility. These functions can be used to work + with several formats: JSON, compact JSON, configuration + (nginx like), and YAML. Libucl has clear design that should + be very convenient for reading and writing and makes for an + ideal parser with high performance. + + https://github.com/vstakhov/libucl diff --git a/buildroot/package/libucl/libucl.hash b/buildroot/package/libucl/libucl.hash new file mode 100644 index 0000000..bd2ca13 --- /dev/null +++ b/buildroot/package/libucl/libucl.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2f69995c7f8320350f56c1183c395cc4a2a958331f22d60b7839a117c9c601e1 libucl-0.7.3.tar.gz diff --git a/buildroot/package/libucl/libucl.mk b/buildroot/package/libucl/libucl.mk new file mode 100644 index 0000000..39a7ed3 --- /dev/null +++ b/buildroot/package/libucl/libucl.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libucl +# +################################################################################ + +LIBUCL_VERSION = 0.7.3 +LIBUCL_SITE = $(call github,vstakhov,libucl,$(LIBUCL_VERSION)) +LIBUCL_INSTALL_STAGING = YES +LIBUCL_AUTORECONF = YES +LIBUCL_LICENSE = BSD-2-Clause +LIBUCL_LICENSE_FILES = COPYING +LIBUCL_DEPENDENCIES = host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/libuecc/Config.in b/buildroot/package/libuecc/Config.in new file mode 100644 index 0000000..b7cd045 --- /dev/null +++ b/buildroot/package/libuecc/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBUECC + bool "libuecc" + depends on !BR2_STATIC_LIBS + help + Very small Elliptic Curve Cryptography library + + http://git.universe-factory.net/libuecc + +comment "libuecc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libuecc/libuecc.hash b/buildroot/package/libuecc/libuecc.hash new file mode 100644 index 0000000..67eb5eb --- /dev/null +++ b/buildroot/package/libuecc/libuecc.hash @@ -0,0 +1,4 @@ +# from https://projects.universe-factory.net/projects/fastd/files +md5 5cd543cb8e7bce83a22c07a0579c95a1 libuecc-7.tar.xz +# computed locally +sha256 b94aef08eab5359d0facaa7ead2ce81b193eef0c61379d9835213ebc0a46257a libuecc-7.tar.xz diff --git a/buildroot/package/libuecc/libuecc.mk b/buildroot/package/libuecc/libuecc.mk new file mode 100644 index 0000000..aad26e5 --- /dev/null +++ b/buildroot/package/libuecc/libuecc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libuecc +# +################################################################################ + +LIBUECC_VERSION = 7 +LIBUECC_SITE = https://projects.universe-factory.net/attachments/download/85 +LIBUECC_SOURCE = libuecc-$(LIBUECC_VERSION).tar.xz +LIBUECC_LICENSE = BSD-2-Clause +LIBUECC_LICENSE_FILES = COPYRIGHT +LIBUECC_INSTALL_STAGING = YES + +$(eval $(cmake-package)) diff --git a/buildroot/package/libuio/0001-configure-remove-po-Makefile.in.patch b/buildroot/package/libuio/0001-configure-remove-po-Makefile.in.patch new file mode 100644 index 0000000..067465c --- /dev/null +++ b/buildroot/package/libuio/0001-configure-remove-po-Makefile.in.patch @@ -0,0 +1,26 @@ +From c5fa0b778e1c2a7d03ff6e661bdfa2faef878f68 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 1 Jul 2016 17:56:30 +0200 +Subject: [PATCH] configure: remove po/Makefile.in + +The file po/Makefile.in is automatically added to AC_OUTPUT while using gettexize + +Signed-off-by: Romain Naour +--- + configure.ac | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f7fb40f..a25e463 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -55,5 +55,4 @@ dnl last but not least + AC_OUTPUT([Makefile + libuio.dox + libuio-uninstalled.pc +- libuio.pc +- po/Makefile.in]) ++ libuio.pc]) +-- +2.5.5 + diff --git a/buildroot/package/libuio/0002-fix-build-with-musl.patch b/buildroot/package/libuio/0002-fix-build-with-musl.patch new file mode 100644 index 0000000..6e5b168 --- /dev/null +++ b/buildroot/package/libuio/0002-fix-build-with-musl.patch @@ -0,0 +1,57 @@ +From c378ee112857128002754c616acb6841ee32aaf6 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sat, 2 Jul 2016 10:52:28 +0200 +Subject: [PATCH] fix build with musl + +limits.h header is missing in attr.c, base.c and helper.c to provide +PATH_MAX. + +Fixes: +http://autobuild.buildroot.net/results/702/7023104e6018ea46c54073ddbe5119d0f66ae5a3 + +Signed-off-by: Romain Naour +--- + attr.c | 1 + + base.c | 1 + + helper.c | 1 + + 3 files changed, 3 insertions(+) + +diff --git a/attr.c b/attr.c +index 4245140..7512f4e 100644 +--- a/attr.c ++++ b/attr.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff --git a/base.c b/base.c +index 14ebcee..4ce7301 100644 +--- a/base.c ++++ b/base.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff --git a/helper.c b/helper.c +index 170f084..1fb0b4c 100644 +--- a/helper.c ++++ b/helper.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + #include + #include +-- +2.5.5 + diff --git a/buildroot/package/libuio/Config.in b/buildroot/package/libuio/Config.in new file mode 100644 index 0000000..97be1e3 --- /dev/null +++ b/buildroot/package/libuio/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LIBUIO + bool "libuio" + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + libuio is a light-weight C programming library to handle UIO + (Userspace I/O) device discovery and binding task. + + http://github.com/Linutronix/libuio diff --git a/buildroot/package/libuio/libuio.hash b/buildroot/package/libuio/libuio.hash new file mode 100644 index 0000000..6afe7de --- /dev/null +++ b/buildroot/package/libuio/libuio.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 57f9617f75d20f7912b270568cffdf098fe9d0c1ca690c002e949be8424aa4e6 libuio-940861de278cb794bf9d775b76a4d1d4f9108607.tar.gz diff --git a/buildroot/package/libuio/libuio.mk b/buildroot/package/libuio/libuio.mk new file mode 100644 index 0000000..8f72253 --- /dev/null +++ b/buildroot/package/libuio/libuio.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# libuio +# +################################################################################ + +# v0.2.7 +LIBUIO_VERSION = 940861de278cb794bf9d775b76a4d1d4f9108607 +LIBUIO_SITE = $(call github,Linutronix,libuio,$(LIBUIO_VERSION)) +LIBUIO_LICENSE = LGPL-2.1 (library), GPL-2.0 (programs) +LIBUIO_LICENSE_FILES = COPYING +LIBUIO_CONF_OPTS = --with-glib=no --without-werror +LIBUIO_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +LIBUIO_LIBS = $(TARGET_NLS_LIBS) +LIBUIO_INSTALL_STAGING = YES + +# Fetched from github, no pre-generated configure script provided +LIBUIO_GETTEXTIZE = YES +LIBUIO_AUTORECONF = YES + +# Avoid build issue when makeinfo is missing +LIBUIO_CONF_ENV += MAKEINFO=true + +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +LIBUIO_DEPENDENCIES += argp-standalone +LIBUIO_LIBS += -largp +endif + +LIBUIO_CONF_ENV += LIBS="$(LIBUIO_LIBS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/libump/Config.in b/buildroot/package/libump/Config.in new file mode 100644 index 0000000..696ccf3 --- /dev/null +++ b/buildroot/package/libump/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBUMP + bool "libump" + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_arm + help + The ARMs Universal Memory Provider userspace library. + This library is a requirement for ARMs binary Mali driver. + + http://github.com/linux-sunxi/libump + +comment "libump needs a glibc toolchain" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/libump/libump.hash b/buildroot/package/libump/libump.hash new file mode 100644 index 0000000..5d2ad2e --- /dev/null +++ b/buildroot/package/libump/libump.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 745bbb3e6a6b2b1d8caec75d2f2e884691ceefa5c2be0480baed31dba66cf450 libump-ec0680628744f30b8fac35e41a7bd8e23e59c39f.tar.gz diff --git a/buildroot/package/libump/libump.mk b/buildroot/package/libump/libump.mk new file mode 100644 index 0000000..65012ff --- /dev/null +++ b/buildroot/package/libump/libump.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# libump +# +################################################################################ + +LIBUMP_VERSION = ec0680628744f30b8fac35e41a7bd8e23e59c39f +LIBUMP_SITE = $(call github,linux-sunxi,libump,$(LIBUMP_VERSION)) +LIBUMP_LICENSE = Apache-2.0 +LIBUMP_AUTORECONF = YES +LIBUMP_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libunistring/Config.in b/buildroot/package/libunistring/Config.in new file mode 100644 index 0000000..88fc658 --- /dev/null +++ b/buildroot/package/libunistring/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBUNISTRING + bool "libunistring" + depends on BR2_USE_WCHAR + help + The libunistring library provides functions for manipulating + Unicode strings and for manipulating C strings according to + the Unicode standard. + + http://www.gnu.org/software/libunistring/ + +comment "libunistring needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/libunistring/libunistring.hash b/buildroot/package/libunistring/libunistring.hash new file mode 100644 index 0000000..15e35cb --- /dev/null +++ b/buildroot/package/libunistring/libunistring.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 2e3764512aaf2ce598af5a38818c0ea23dedf1ff5460070d1b6cee5c3336e797 libunistring-0.9.7.tar.xz diff --git a/buildroot/package/libunistring/libunistring.mk b/buildroot/package/libunistring/libunistring.mk new file mode 100644 index 0000000..9340e79 --- /dev/null +++ b/buildroot/package/libunistring/libunistring.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libunistring +# +################################################################################ + +LIBUNISTRING_VERSION = 0.9.7 +LIBUNISTRING_SITE = $(BR2_GNU_MIRROR)/libunistring +LIBUNISTRING_SOURCE = libunistring-$(LIBUNISTRING_VERSION).tar.xz +LIBUNISTRING_INSTALL_STAGING = YES +LIBUNISTRING_LICENSE = LGPL-3.0+ or GPL-2.0 +LIBUNISTRING_LICENSE_FILES = COPYING.LIB + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBUNISTRING_CONF_OPTS += --enable-threads=posix +else +LIBUNISTRING_CONF_OPTS += --disable-threads +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libunwind/0001-add-disable-tests-option.patch b/buildroot/package/libunwind/0001-add-disable-tests-option.patch new file mode 100644 index 0000000..72a1686 --- /dev/null +++ b/buildroot/package/libunwind/0001-add-disable-tests-option.patch @@ -0,0 +1,68 @@ +From 208a430bcbab7d63a4c04242f13c4740e0246a56 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=D0=9A=D0=BE=D1=80=D0=BE=D0=BB=D0=B5=D0=B2=20=D0=A1=D0=B5?= + =?UTF-8?q?=D1=80=D0=B3=D0=B5=D0=B9?= +Date: Wed, 11 May 2016 22:48:55 +0300 +Subject: [PATCH] add --disable-tests option + +Allows to skip tests build. + +Backported from upstream master branch: +https://github.com/libunwind/libunwind/commit/208a430bcbab7d63a4c04242f13c4740e0246a56 + +Signed-off-by: Bernd Kuhls +--- + Makefile.am | 6 +++++- + configure.ac | 13 +++++++++++-- + 2 files changed, 16 insertions(+), 3 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 6a3ed9e..0c29b3e 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -42,7 +42,11 @@ endif + + nodist_include_HEADERS = include/libunwind-common.h + +-SUBDIRS = src tests ++SUBDIRS = src ++ ++if CONFIG_TESTS ++SUBDIRS += tests ++endif + + if CONFIG_DOCS + SUBDIRS += doc +diff --git a/configure.ac b/configure.ac +index 863fb8f..6c46cf3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -129,6 +129,10 @@ AC_ARG_ENABLE(documentation, + AS_HELP_STRING([--disable-documentation],[Disable generating the man pages]),, + [enable_documentation=yes]) + ++AC_ARG_ENABLE(tests, ++ AS_HELP_STRING([--disable-tests],[Disable tests build]),, ++ [enable_tests=yes]) ++ + AC_MSG_CHECKING([if we should build libunwind-setjmp]) + AC_MSG_RESULT([$enable_setjmp]) + +@@ -396,8 +400,13 @@ if test "x$enable_documentation" = "xyes"; then + AC_CONFIG_FILES(doc/Makefile doc/common.tex) + fi + +-AC_CONFIG_FILES(Makefile src/Makefile tests/Makefile tests/check-namespace.sh +- include/libunwind-common.h ++AM_CONDITIONAL([CONFIG_TESTS], [test x$enable_tests = xyes]) ++if test "x$enable_tests" = "xyes"; then ++ AC_CONFIG_FILES(tests/Makefile tests/check-namespace.sh) ++fi ++ ++AC_CONFIG_FILES(Makefile src/Makefile ++ include/libunwind-common.h + include/libunwind.h include/tdep/libunwind_i.h) + AC_CONFIG_FILES(src/unwind/libunwind.pc src/coredump/libunwind-coredump.pc + src/ptrace/libunwind-ptrace.pc src/setjmp/libunwind-setjmp.pc +-- +2.11.0 + diff --git a/buildroot/package/libunwind/0002-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch b/buildroot/package/libunwind/0002-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch new file mode 100644 index 0000000..2a37ed7 --- /dev/null +++ b/buildroot/package/libunwind/0002-Add-AO_REQUIRE_CAS-to-fix-build-on-ARM-v6.patch @@ -0,0 +1,56 @@ +From 24484e80b3e329c9edee1995e102f8612eedb79c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 13 May 2014 23:32:27 +0200 +Subject: [PATCH] Add AO_REQUIRE_CAS to fix build on ARM < v6 + +ARM earlier than ARMv6, such as ARMv4 and ARMv5 do not provide +optimize atomic operations in libatomic_ops. Since libunwind is using +such operations, it should define AO_REQUIRE_CAS before including + so that libatomic_ops knows it should use emulated +atomic operations instead (even though they are obviously a lot more +expensive). + +Also, while real atomic operations are all inline functions and +therefore linking against libatomic_ops was not required, the emulated +atomic operations actually require linking against libatomic_ops, so +the commented AC_CHECK_LIB test in acinclude.m4 is uncommented to make +sure we link against libatomic_ops. + +Signed-off-by: Thomas Petazzoni +--- + acinclude.m4 | 8 +------- + include/libunwind_i.h | 1 + + 2 files changed, 2 insertions(+), 7 deletions(-) + +diff --git a/acinclude.m4 b/acinclude.m4 +index 497f7c2..9c15af1 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -22,11 +22,5 @@ fi]) + AC_DEFUN([CHECK_ATOMIC_OPS], + [dnl Check whether the system has the atomic_ops package installed. + AC_CHECK_HEADERS(atomic_ops.h) +-# +-# Don't link against libatomic_ops for now. We don't want libunwind +-# to depend on libatomic_ops.so. Fortunately, none of the platforms +-# we care about so far need libatomic_ops.a (everything is done via +-# inline macros). +-# +-# AC_CHECK_LIB(atomic_ops, main) ++ AC_CHECK_LIB(atomic_ops, main) + ]) +diff --git a/include/libunwind_i.h b/include/libunwind_i.h +index 23f615e..deabdfd 100644 +--- a/include/libunwind_i.h ++++ b/include/libunwind_i.h +@@ -95,6 +95,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ + (pthread_mutex_unlock != NULL ? pthread_mutex_unlock (l) : 0) + + #ifdef HAVE_ATOMIC_OPS_H ++# define AO_REQUIRE_CAS + # include + static inline int + cmpxchg_ptr (void *addr, void *old, void *new) +-- +1.9.2 + diff --git a/buildroot/package/libunwind/0003-Fix-compilation-of-tests-on-alpine-linux-musl-libc.patch b/buildroot/package/libunwind/0003-Fix-compilation-of-tests-on-alpine-linux-musl-libc.patch new file mode 100644 index 0000000..411b40d --- /dev/null +++ b/buildroot/package/libunwind/0003-Fix-compilation-of-tests-on-alpine-linux-musl-libc.patch @@ -0,0 +1,88 @@ +From 5dcb7cd3cb63bf8a3a5f7531d10f937053930a25 Mon Sep 17 00:00:00 2001 +From: Tony Kelman +Date: Sun, 31 Jan 2016 08:31:04 +0000 +Subject: [PATCH] Fix compilation of tests on alpine linux (musl libc) + +If we don't link to libexecinfo, as detected by the +AC_SEARCH_LIBS(backtrace, execinfo) configure probe, we get + +``` +test-coredump-unwind.o: In function `handle_sigsegv': +/home/libunwind/tests/test-coredump-unwind.c:246: undefined reference to +`backtrace_symbols_fd' +collect2: error: ld returned 1 exit status +Makefile:1187: recipe for target 'test-coredump-unwind' failed +``` + +and + +``` +Gtest-init.o: In function `do_backtrace()': +Gtest-init.cxx:(.text+0x2f): undefined reference to `_Ux86_64_getcontext' +Gtest-init.cxx:(.text+0x48): undefined reference to `_Ux86_64_init_local' +Gtest-init.cxx:(.text+0x63): undefined reference to `_Ux86_64_get_reg' +Gtest-init.cxx:(.text+0x96): undefined reference to `_Ux86_64_get_proc_name' +Gtest-init.cxx:(.text+0x171): undefined reference to `_Ux86_64_step' +collect2: error: ld returned 1 exit status +Makefile:1063: recipe for target 'Gtest-init' failed +``` + +There are 2 XFAIL and 6 FAIL tests, but it's a start + +Backported from upstream master branch: +https://github.com/libunwind/libunwind/commit/5dcb7cd3cb63bf8a3a5f7531d10f937053930a25 + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 5 +++++ + tests/Makefile.am | 4 ++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 6c46cf3..21bae90 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -373,6 +373,10 @@ old_LIBS="$LIBS" + LIBS="" + AC_SEARCH_LIBS(backtrace, execinfo) + LIBS="$old_LIBS" ++case "$ac_cv_search_backtrace" in ++ -l*) BACKTRACELIB=$ac_cv_search_backtrace;; ++ *) BACKTRACELIB="";; ++esac + + AC_SUBST(build_arch) + AC_SUBST(target_os) +@@ -388,6 +392,7 @@ AC_SUBST(PKG_MAINTAINER) + AC_SUBST(enable_cxx_exceptions) + AC_SUBST(enable_debug_frame) + AC_SUBST(DLLIB) ++AC_SUBST(BACKTRACELIB) + + AC_PATH_PROG([LATEX2MAN],[latex2man]) + if test "x$LATEX2MAN" = "x"; then +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 0a74881..cd3e589 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -179,7 +179,7 @@ Gtest_bt_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) + Gtest_concurrent_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) -lpthread + Gtest_dyn1_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) + Gtest_exc_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) +-Gtest_init_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) ++Gtest_init_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) @BACKTRACELIB@ + Gtest_resume_sig_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) + Gtest_resume_sig_rt_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) + Gperf_simple_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) +@@ -203,7 +203,7 @@ test_setjmp_LDADD = $(LIBUNWIND_setjmp) + ia64_test_setjmp_LDADD = $(LIBUNWIND_setjmp) + + if BUILD_COREDUMP +-test_coredump_unwind_LDADD = $(LIBUNWIND_coredump) $(LIBUNWIND) ++test_coredump_unwind_LDADD = $(LIBUNWIND_coredump) $(LIBUNWIND) @BACKTRACELIB@ + endif + + Gia64_test_nat_LDADD = $(LIBUNWIND) $(LIBUNWIND_local) +-- +2.11.0 + diff --git a/buildroot/package/libunwind/0004-libunwind-arm-fix-build-failure-due-to-asm.patch b/buildroot/package/libunwind/0004-libunwind-arm-fix-build-failure-due-to-asm.patch new file mode 100644 index 0000000..cfd0c55 --- /dev/null +++ b/buildroot/package/libunwind/0004-libunwind-arm-fix-build-failure-due-to-asm.patch @@ -0,0 +1,43 @@ +From c7ab998ec52b09d61ec3c0ea62aa07cd26077ea3 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Mon, 3 Jul 2017 14:43:02 +0200 +Subject: [PATCH] libunwind-arm: fix build failure due to asm() + +The gcc documentation [1] suggest to use __asm__ instead of asm. + +Fixes: +http://autobuild.buildroot.net/results/3ef/3efe156b6494e4392b6c31de447ee2c72acc1a53 + +[1] https://gcc.gnu.org/onlinedocs/gcc/Alternate-Keywords.html#Alternate-Keywords + +Signed-off-by: Romain Naour +Cc: Bernd Kuhls +--- + include/libunwind-arm.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/libunwind-arm.h b/include/libunwind-arm.h +index f208487..1c856fa 100644 +--- a/include/libunwind-arm.h ++++ b/include/libunwind-arm.h +@@ -265,7 +265,7 @@ unw_tdep_context_t; + #ifndef __thumb__ + #define unw_tdep_getcontext(uc) (({ \ + unw_tdep_context_t *unw_ctx = (uc); \ +- register unsigned long *unw_base asm ("r0") = unw_ctx->regs; \ ++ register unsigned long *unw_base __asm__ ("r0") = unw_ctx->regs; \ + __asm__ __volatile__ ( \ + "stmia %[base], {r0-r15}" \ + : : [base] "r" (unw_base) : "memory"); \ +@@ -273,7 +273,7 @@ unw_tdep_context_t; + #else /* __thumb__ */ + #define unw_tdep_getcontext(uc) (({ \ + unw_tdep_context_t *unw_ctx = (uc); \ +- register unsigned long *unw_base asm ("r0") = unw_ctx->regs; \ ++ register unsigned long *unw_base __asm__ ("r0") = unw_ctx->regs; \ + __asm__ __volatile__ ( \ + ".align 2\nbx pc\nnop\n.code 32\n" \ + "stmia %[base], {r0-r15}\n" \ +-- +2.9.4 + diff --git a/buildroot/package/libunwind/Config.in b/buildroot/package/libunwind/Config.in new file mode 100644 index 0000000..be576d1 --- /dev/null +++ b/buildroot/package/libunwind/Config.in @@ -0,0 +1,35 @@ +# libunwind is only available for a certain subset of the +# architectures (as visible in the list of architectures supported +# with the glibc C library below). +# +# In addition to this, on some architectures libunwind requires the +# *context() function from the C library, which are only available on +# certain architectures in uClibc, and not available at all on +# musl. But on some other architectures, libunwind works without using +# the *context() functions, which allows it to be built with musl. +config BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS + bool + default y if BR2_TOOLCHAIN_USES_GLIBC && \ + (BR2_ARM_CPU_HAS_ARM || BR2_mips || BR2_mipsel || BR2_mips64 || \ + BR2_mips64el || BR2_powerpc || BR2_sh || BR2_i386 || BR2_x86_64) + default y if BR2_TOOLCHAIN_USES_UCLIBC && \ + (BR2_ARM_CPU_HAS_ARM || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_x86_64) + default y if BR2_TOOLCHAIN_USES_MUSL && \ + (BR2_ARM_CPU_HAS_ARM || BR2_x86_64) + +config BR2_PACKAGE_LIBUNWIND + bool "libunwind" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS + # forcefully links against libgcc_s, only available in dynamic + # linking configurations + depends on !BR2_STATIC_LIBS + help + C API to determine the call-chain of a program. + + http://www.nongnu.org/libunwind/index.html + +comment "libunwind needs a toolchain w/ threads, dynamic library" + depends on BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/libunwind/libunwind.hash b/buildroot/package/libunwind/libunwind.hash new file mode 100644 index 0000000..2f6c8ec --- /dev/null +++ b/buildroot/package/libunwind/libunwind.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 3f3ecb90e28cbe53fba7a4a27ccce7aad188d3210bb1964a923a731a27a75acb libunwind-1.2.1.tar.gz diff --git a/buildroot/package/libunwind/libunwind.mk b/buildroot/package/libunwind/libunwind.mk new file mode 100644 index 0000000..7adf318 --- /dev/null +++ b/buildroot/package/libunwind/libunwind.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libunwind +# +################################################################################ + +LIBUNWIND_VERSION = 1.2.1 +LIBUNWIND_SITE = http://download.savannah.gnu.org/releases/libunwind +LIBUNWIND_INSTALL_STAGING = YES +LIBUNWIND_LICENSE_FILES = COPYING +LIBUNWIND_LICENSE = MIT +LIBUNWIND_AUTORECONF = YES + +LIBUNWIND_CONF_OPTS = --disable-tests + +ifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y) +LIBUNWIND_DEPENDENCIES = libatomic_ops +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libupnp/Config.in b/buildroot/package/libupnp/Config.in new file mode 100644 index 0000000..7c6c376 --- /dev/null +++ b/buildroot/package/libupnp/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBUPNP + bool "libupnp" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The portable SDK for UPnP(tm) Devices (libupnp) provides + developers with an API and open source code for building + control points, devices, and bridges that are compliant with + Version 1.0 of the Universal Plug and Play Device Architecture + Specification + + http://pupnp.sourceforge.net/ + +comment "libupnp needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libupnp/libupnp.hash b/buildroot/package/libupnp/libupnp.hash new file mode 100644 index 0000000..e52b7ea --- /dev/null +++ b/buildroot/package/libupnp/libupnp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 c5a300b86775435c076d58a79cc0d5a977d76027d2a7d721590729b7f369fa43 libupnp-1.6.25.tar.bz2 +sha256 0375955c8a79d6e8fa0792d45d00fc4e7710d7ac95bcbd27f9225a83f5c946fd LICENSE diff --git a/buildroot/package/libupnp/libupnp.mk b/buildroot/package/libupnp/libupnp.mk new file mode 100644 index 0000000..8831885 --- /dev/null +++ b/buildroot/package/libupnp/libupnp.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libupnp +# +################################################################################ + +LIBUPNP_VERSION = 1.6.25 +LIBUPNP_SOURCE = libupnp-$(LIBUPNP_VERSION).tar.bz2 +LIBUPNP_SITE = http://downloads.sourceforge.net/project/pupnp/pupnp/libUPnP%20$(LIBUPNP_VERSION) +LIBUPNP_CONF_ENV = ac_cv_lib_compat_ftime=no +LIBUPNP_INSTALL_STAGING = YES +LIBUPNP_LICENSE = BSD-3-Clause +LIBUPNP_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/buildroot/package/libupnp18/Config.in b/buildroot/package/libupnp18/Config.in new file mode 100644 index 0000000..58508e4 --- /dev/null +++ b/buildroot/package/libupnp18/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBUPNP18 + bool "libupnp18" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_PACKAGE_LIBUPNP + help + The portable SDK for UPnP(tm) Devices (libupnp) provides + developers with an API and open source code for building + control points, devices, and bridges that are compliant with + Version 1.0 of the Universal Plug and Play Device Architecture + Specification + + http://pupnp.sourceforge.net/ + +comment "libupnp18 needs a toolchain w/ threads" + depends on !BR2_PACKAGE_LIBUPNP + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libupnp18/libupnp18.hash b/buildroot/package/libupnp18/libupnp18.hash new file mode 100644 index 0000000..dd59034 --- /dev/null +++ b/buildroot/package/libupnp18/libupnp18.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/pupnp/files/pupnp/libUPnP%201.8.3/libupnp-1.8.3.tar.bz2.sha1 +sha1 e7c28c24905ae972ff3277a7bdaa9b839f6c66b9 libupnp-1.8.3.tar.bz2 +# Locally computed: +sha256 9afa0b09faa9ebd9e8a6425ddbfe8d1d856544c49b1f86fde221219e569a308d libupnp-1.8.3.tar.bz2 +sha256 0375955c8a79d6e8fa0792d45d00fc4e7710d7ac95bcbd27f9225a83f5c946fd LICENSE diff --git a/buildroot/package/libupnp18/libupnp18.mk b/buildroot/package/libupnp18/libupnp18.mk new file mode 100644 index 0000000..a75558e --- /dev/null +++ b/buildroot/package/libupnp18/libupnp18.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libupnp18 +# +################################################################################ + +LIBUPNP18_VERSION = 1.8.3 +LIBUPNP18_SOURCE = libupnp-$(LIBUPNP18_VERSION).tar.bz2 +LIBUPNP18_SITE = http://downloads.sourceforge.net/project/pupnp/pupnp/libUPnP%20$(LIBUPNP18_VERSION) +LIBUPNP18_CONF_ENV = ac_cv_lib_compat_ftime=no +LIBUPNP18_INSTALL_STAGING = YES +LIBUPNP18_LICENSE = BSD-3-Clause +LIBUPNP18_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/buildroot/package/libupnpp/Config.in b/buildroot/package/libupnpp/Config.in new file mode 100644 index 0000000..32877ff --- /dev/null +++ b/buildroot/package/libupnpp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBUPNPP + bool "libupnpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # libupnp + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBUPNP + help + The libupnpp C++ library wraps libupnp for easier use by + upmpdcli and upplay. + + http://www.lesbonscomptes.com/upmpdcli/ + +comment "libupnpp needs a toolchain w/ C++, threads, gcc >= 4.9" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/buildroot/package/libupnpp/libupnpp.hash b/buildroot/package/libupnpp/libupnpp.hash new file mode 100644 index 0000000..fe67987 --- /dev/null +++ b/buildroot/package/libupnpp/libupnpp.hash @@ -0,0 +1,5 @@ +# Hashes from: http://www.lesbonscomptes.com/upmpdcli/downloads/libupnpp-0.16.0.tar.gz.sha256 +sha256 b34b179e69c46993cf360da9e85db646b03c15ab2927b19eb70e27bf3c359017 libupnpp-0.16.0.tar.gz + +# Hash for license file: +sha256 00a89b0d18aacd4114decf79122db87bf35bddaf2bc50e383c9c9f4c263390b2 COPYING diff --git a/buildroot/package/libupnpp/libupnpp.mk b/buildroot/package/libupnpp/libupnpp.mk new file mode 100644 index 0000000..98cb515 --- /dev/null +++ b/buildroot/package/libupnpp/libupnpp.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libupnpp +# +################################################################################ + +LIBUPNPP_VERSION = 0.16.0 +LIBUPNPP_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads +LIBUPNPP_LICENSE = LGPL-2.1+ +LIBUPNPP_LICENSE_FILES = COPYING +LIBUPNPP_INSTALL_STAGING = YES +LIBUPNPP_DEPENDENCIES = expat libcurl libupnp + +# configure script fails to link against the dependencies of libupnp +# and libcurl causing detection to fail when statically linking +ifeq ($(BR2_STATIC_LIBS),y) +LIBUPNPP_DEPENDENCIES += host-pkgconf +LIBUPNPP_CONF_ENV += \ + LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libupnp libcurl`" +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch b/buildroot/package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch new file mode 100644 index 0000000..585abc0 --- /dev/null +++ b/buildroot/package/liburcu/0001-Only-blacklist-ARM-gcc-4.8.0-and-4.8.1.patch @@ -0,0 +1,40 @@ +From 54d8fe7ae40902d6d38e670f4024092f53c14e1f Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 8 Mar 2014 13:19:14 +0100 +Subject: [PATCH] Only blacklist ARM gcc 4.8.0 and 4.8.1 + +Since many ARM toolchain providers include the bug fix for PR58854 in +their latest releases based on gcc-4.8.2, then only blacklist gcc 4.8.0 +and 4.8.1. + +Signed-off-by: Samuel Martin +--- + urcu/compiler.h | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/urcu/compiler.h b/urcu/compiler.h +index 1e30903..56115f1 100644 +--- a/urcu/compiler.h ++++ b/urcu/compiler.h +@@ -118,10 +118,17 @@ + + __GNUC_PATCHLEVEL__) + + /* ++ * Official gcc releases from 4.8.0 to 4.8.2 have the following bug, ++ * however, many arm toolchain providers have the included the fix for ++ * their latest 4.8.2 releases. ++ * So, we only blacklist gcc 4.8.0 and 4.8.1. ++ * Unfortunately, this bug is not easy to test, so we rely on the ++ * knowledge of the user on its compiler. ++ * + * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854 + */ + # ifdef __ARMEL__ +-# if URCU_GCC_VERSION >= 40800 && URCU_GCC_VERSION <= 40802 ++# if URCU_GCC_VERSION >= 40800 && URCU_GCC_VERSION <= 40801 + # error Your gcc version produces clobbered frame accesses + # endif + # endif +-- +1.9.0 + diff --git a/buildroot/package/liburcu/Config.in b/buildroot/package/liburcu/Config.in new file mode 100644 index 0000000..2598181 --- /dev/null +++ b/buildroot/package/liburcu/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + bool + default y + depends on BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || BR2_powerpc || BR2_x86_64 + depends on BR2_USE_MMU # fork() in test + +config BR2_PACKAGE_LIBURCU + bool "liburcu" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Userspace implementation of the Read-Copy-Update (RCU) + synchronization mechanism. This library is mainly used by + the LTTng tracing infrastructure, but can be used for other + purposes as well. + + On ARM, because of bug: + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854 + liburcu cannot be built using gcc 4.8.0, 4.8.1 or 4.8.2 + without the following bug fix: + http://gcc.gnu.org/viewcvs/gcc?view=revision&revision=204665 + + http://lttng.org/urcu + +comment "liburcu needs a toolchain w/ threads" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/liburcu/liburcu.hash b/buildroot/package/liburcu/liburcu.hash new file mode 100644 index 0000000..5866d80 --- /dev/null +++ b/buildroot/package/liburcu/liburcu.hash @@ -0,0 +1,4 @@ +# http://www.lttng.org/files/urcu/userspace-rcu-0.9.2.tar.bz2.sha1 +sha1 61d1d0d1b955c7a67a7253317647304d04b400a0 userspace-rcu-0.9.2.tar.bz2 +# Locally generated +sha256 8f7fa313b1e0a3f742cea24ce63a39c0efe63e615a769e2961e55bd2663ecaa3 userspace-rcu-0.9.2.tar.bz2 diff --git a/buildroot/package/liburcu/liburcu.mk b/buildroot/package/liburcu/liburcu.mk new file mode 100644 index 0000000..d8579f6 --- /dev/null +++ b/buildroot/package/liburcu/liburcu.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# liburcu +# +################################################################################ + +LIBURCU_VERSION = 0.9.2 +LIBURCU_SITE = http://lttng.org/files/urcu +LIBURCU_SOURCE = userspace-rcu-$(LIBURCU_VERSION).tar.bz2 +LIBURCU_LICENSE = LGPL-2.1+ (library), MIT-like (few source files listed in LICENSE), GPL-2.0+ (test), GPL-3.0 (few *.m4 files) +LIBURCU_LICENSE_FILES = lgpl-2.1.txt lgpl-relicensing.txt gpl-2.0.txt LICENSE + +LIBURCU_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/liburiparser/Config.in b/buildroot/package/liburiparser/Config.in new file mode 100644 index 0000000..e85a262 --- /dev/null +++ b/buildroot/package/liburiparser/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBURIPARSER + bool "liburiparser" + help + uriparser is a strictly RFC 3986 compliant URI parsing and + handling library written in C. + + http://uriparser.sourceforge.net diff --git a/buildroot/package/liburiparser/liburiparser.hash b/buildroot/package/liburiparser/liburiparser.hash new file mode 100644 index 0000000..9e9517c --- /dev/null +++ b/buildroot/package/liburiparser/liburiparser.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/uriparser/files/Sources/0.8.4/ +md5 9aabdc3611546f553f4af372167de6d6 uriparser-0.8.4.tar.bz2 +sha1 7a1948c20bed54b04dad0e1d7d2fa8f80fc7b2b3 uriparser-0.8.4.tar.bz2 +# Locally calculated +sha256 c6ef125800c2ef13a41a22126bfc77e8b8c08993a6b96196117695988ea76249 COPYING diff --git a/buildroot/package/liburiparser/liburiparser.mk b/buildroot/package/liburiparser/liburiparser.mk new file mode 100644 index 0000000..856a6aa --- /dev/null +++ b/buildroot/package/liburiparser/liburiparser.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# liburiparser +# +################################################################################ + +LIBURIPARSER_VERSION = 0.8.4 +LIBURIPARSER_SOURCE = uriparser-$(LIBURIPARSER_VERSION).tar.bz2 +LIBURIPARSER_SITE = http://sourceforge.net/projects/uriparser/files/Sources/$(LIBURIPARSER_VERSION) +LIBURIPARSER_LICENSE = BSD-3-Clause +LIBURIPARSER_LICENSE_FILES = COPYING +LIBURIPARSER_INSTALL_STAGING = YES +LIBURIPARSER_CONF_OPTS = --disable-test + +ifeq ($(BR2_USE_WCHAR),) +LIBURIPARSER_CONF_OPTS += --disable-wchar_t +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libusb-compat/0001-Use-C99-standard-fixed-width-integer-types-in-usb.h.patch b/buildroot/package/libusb-compat/0001-Use-C99-standard-fixed-width-integer-types-in-usb.h.patch new file mode 100644 index 0000000..35872a9 --- /dev/null +++ b/buildroot/package/libusb-compat/0001-Use-C99-standard-fixed-width-integer-types-in-usb.h.patch @@ -0,0 +1,237 @@ +From 87adda6abc3467ede45a6d2a87df2b9efdf5bb33 Mon Sep 17 00:00:00 2001 +From: Nathan Hjelm +Date: Fri, 9 Oct 2015 15:03:10 -0600 +Subject: [PATCH] Use C99 standard fixed width integer types in usb.h + +This patch modifies the integer types in usb.h of the form u_int* to the +C99 standard uint* types. + +Based on patch from Gwenhael Goavec-Merou. + +Backported from upstream commit +https://github.com/libusb/libusb-compat-0.1/commit/2e9b6bbebb7cf1ef0095516ec6d5203deb3822e8. + +Signed-off-by: Gwenhael Goavec-Merou +Signed-off-by: Nathan Hjelm +Signed-off-by: Bartosz Golaszewski +--- + libusb/usb.h | 130 ++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 70 insertions(+), 60 deletions(-) + +diff --git a/libusb/usb.h b/libusb/usb.h +index 84e730f..d2c30aa 100644 +--- a/libusb/usb.h ++++ b/libusb/usb.h +@@ -2,6 +2,7 @@ + * Prototypes, structure definitions and macros. + * + * Copyright (c) 2000-2003 Johannes Erdfelt ++ * Copyright (c) 2015 Nathan Hjelm + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -22,8 +23,8 @@ + * distribution for details. + */ + +-#ifndef __USB_H__ +-#define __USB_H__ ++#ifndef USB_H ++#define USB_H + + #include + #include +@@ -31,6 +32,15 @@ + + #include + ++/* stdint.h is not available on older MSVC */ ++#if defined(_MSC_VER) && (_MSC_VER < 1600) && (!defined(_STDINT)) && (!defined(_STDINT_H)) ++typedef unsigned __int8 uint8_t; ++typedef unsigned __int16 uint16_t; ++typedef unsigned __int32 uint32_t; ++#else ++#include ++#endif ++ + /* + * USB spec information + * +@@ -78,40 +88,40 @@ + + /* All standard descriptors have these 2 fields in common */ + struct usb_descriptor_header { +- u_int8_t bLength; +- u_int8_t bDescriptorType; ++ uint8_t bLength; ++ uint8_t bDescriptorType; + }; + + /* String descriptor */ + struct usb_string_descriptor { +- u_int8_t bLength; +- u_int8_t bDescriptorType; +- u_int16_t wData[1]; ++ uint8_t bLength; ++ uint8_t bDescriptorType; ++ uint16_t wData[1]; + }; + + /* HID descriptor */ + struct usb_hid_descriptor { +- u_int8_t bLength; +- u_int8_t bDescriptorType; +- u_int16_t bcdHID; +- u_int8_t bCountryCode; +- u_int8_t bNumDescriptors; +- /* u_int8_t bReportDescriptorType; */ +- /* u_int16_t wDescriptorLength; */ ++ uint8_t bLength; ++ uint8_t bDescriptorType; ++ uint16_t bcdHID; ++ uint8_t bCountryCode; ++ uint8_t bNumDescriptors; ++ /* uint8_t bReportDescriptorType; */ ++ /* uint16_t wDescriptorLength; */ + /* ... */ + }; + + /* Endpoint descriptor */ + #define USB_MAXENDPOINTS 32 + struct usb_endpoint_descriptor { +- u_int8_t bLength; +- u_int8_t bDescriptorType; +- u_int8_t bEndpointAddress; +- u_int8_t bmAttributes; +- u_int16_t wMaxPacketSize; +- u_int8_t bInterval; +- u_int8_t bRefresh; +- u_int8_t bSynchAddress; ++ uint8_t bLength; ++ uint8_t bDescriptorType; ++ uint8_t bEndpointAddress; ++ uint8_t bmAttributes; ++ uint16_t wMaxPacketSize; ++ uint8_t bInterval; ++ uint8_t bRefresh; ++ uint8_t bSynchAddress; + + unsigned char *extra; /* Extra descriptors */ + int extralen; +@@ -129,15 +139,15 @@ struct usb_endpoint_descriptor { + /* Interface descriptor */ + #define USB_MAXINTERFACES 32 + struct usb_interface_descriptor { +- u_int8_t bLength; +- u_int8_t bDescriptorType; +- u_int8_t bInterfaceNumber; +- u_int8_t bAlternateSetting; +- u_int8_t bNumEndpoints; +- u_int8_t bInterfaceClass; +- u_int8_t bInterfaceSubClass; +- u_int8_t bInterfaceProtocol; +- u_int8_t iInterface; ++ uint8_t bLength; ++ uint8_t bDescriptorType; ++ uint8_t bInterfaceNumber; ++ uint8_t bAlternateSetting; ++ uint8_t bNumEndpoints; ++ uint8_t bInterfaceClass; ++ uint8_t bInterfaceSubClass; ++ uint8_t bInterfaceProtocol; ++ uint8_t iInterface; + + struct usb_endpoint_descriptor *endpoint; + +@@ -155,14 +165,14 @@ struct usb_interface { + /* Configuration descriptor information.. */ + #define USB_MAXCONFIG 8 + struct usb_config_descriptor { +- u_int8_t bLength; +- u_int8_t bDescriptorType; +- u_int16_t wTotalLength; +- u_int8_t bNumInterfaces; +- u_int8_t bConfigurationValue; +- u_int8_t iConfiguration; +- u_int8_t bmAttributes; +- u_int8_t MaxPower; ++ uint8_t bLength; ++ uint8_t bDescriptorType; ++ uint16_t wTotalLength; ++ uint8_t bNumInterfaces; ++ uint8_t bConfigurationValue; ++ uint8_t iConfiguration; ++ uint8_t bmAttributes; ++ uint8_t MaxPower; + + struct usb_interface *interface; + +@@ -172,28 +182,28 @@ struct usb_config_descriptor { + + /* Device descriptor */ + struct usb_device_descriptor { +- u_int8_t bLength; +- u_int8_t bDescriptorType; +- u_int16_t bcdUSB; +- u_int8_t bDeviceClass; +- u_int8_t bDeviceSubClass; +- u_int8_t bDeviceProtocol; +- u_int8_t bMaxPacketSize0; +- u_int16_t idVendor; +- u_int16_t idProduct; +- u_int16_t bcdDevice; +- u_int8_t iManufacturer; +- u_int8_t iProduct; +- u_int8_t iSerialNumber; +- u_int8_t bNumConfigurations; ++ uint8_t bLength; ++ uint8_t bDescriptorType; ++ uint16_t bcdUSB; ++ uint8_t bDeviceClass; ++ uint8_t bDeviceSubClass; ++ uint8_t bDeviceProtocol; ++ uint8_t bMaxPacketSize0; ++ uint16_t idVendor; ++ uint16_t idProduct; ++ uint16_t bcdDevice; ++ uint8_t iManufacturer; ++ uint8_t iProduct; ++ uint8_t iSerialNumber; ++ uint8_t bNumConfigurations; + }; + + struct usb_ctrl_setup { +- u_int8_t bRequestType; +- u_int8_t bRequest; +- u_int16_t wValue; +- u_int16_t wIndex; +- u_int16_t wLength; ++ uint8_t bRequestType; ++ uint8_t bRequest; ++ uint16_t wValue; ++ uint16_t wIndex; ++ uint16_t wLength; + }; + + /* +@@ -254,7 +264,7 @@ struct usb_device { + + void *dev; /* Darwin support */ + +- u_int8_t devnum; ++ uint8_t devnum; + + unsigned char num_children; + struct usb_device **children; +@@ -266,7 +276,7 @@ struct usb_bus { + char dirname[PATH_MAX + 1]; + + struct usb_device *devices; +- u_int32_t location; ++ uint32_t location; + + struct usb_device *root_dev; + }; +-- +2.9.3 + diff --git a/buildroot/package/libusb-compat/0002-fix-a-build-issue-on-linux.patch b/buildroot/package/libusb-compat/0002-fix-a-build-issue-on-linux.patch new file mode 100644 index 0000000..d2e26b3 --- /dev/null +++ b/buildroot/package/libusb-compat/0002-fix-a-build-issue-on-linux.patch @@ -0,0 +1,32 @@ +From af07587e8775c25450cda8ba9e9a8b1a58072634 Mon Sep 17 00:00:00 2001 +From: Bartosz Golaszewski +Date: Mon, 3 Jul 2017 15:55:00 +0200 +Subject: [PATCH] fix a build issue on linux + +On linux PATH_MAX is defined in linux/limits.h. If we include usb.h +without previously having indirectly included it, the build fails. + +Signed-off-by: Bartosz Golaszewski +--- + libusb/usb.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/libusb/usb.h b/libusb/usb.h +index d2c30aa..7ad9a66 100644 +--- a/libusb/usb.h ++++ b/libusb/usb.h +@@ -41,6 +41,11 @@ typedef unsigned __int32 uint32_t; + #include + #endif + ++/* On linux PATH_MAX is defined in linux/limits.h. */ ++#if defined(__linux__) ++#include ++#endif ++ + /* + * USB spec information + * +-- +2.9.3 + diff --git a/buildroot/package/libusb-compat/Config.in b/buildroot/package/libusb-compat/Config.in new file mode 100644 index 0000000..076d7b8 --- /dev/null +++ b/buildroot/package/libusb-compat/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LIBUSB_COMPAT + bool "libusb-compat" + depends on BR2_PACKAGE_LIBUSB + help + libusb-0.1 compatibility layer for libusb-1.0. + + http://libusb.info/ diff --git a/buildroot/package/libusb-compat/libusb-compat.hash b/buildroot/package/libusb-compat/libusb-compat.hash new file mode 100644 index 0000000..c01eee5 --- /dev/null +++ b/buildroot/package/libusb-compat/libusb-compat.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 404ef4b6b324be79ac1bfb3d839eac860fbc929e6acb1ef88793a6ea328bc55a libusb-compat-0.1.5.tar.bz2 diff --git a/buildroot/package/libusb-compat/libusb-compat.mk b/buildroot/package/libusb-compat/libusb-compat.mk new file mode 100644 index 0000000..61d4c20 --- /dev/null +++ b/buildroot/package/libusb-compat/libusb-compat.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libusb-compat +# +################################################################################ + +LIBUSB_COMPAT_VERSION_MAJOR = 0.1 +LIBUSB_COMPAT_VERSION = $(LIBUSB_COMPAT_VERSION_MAJOR).5 +LIBUSB_COMPAT_SOURCE = libusb-compat-$(LIBUSB_COMPAT_VERSION).tar.bz2 +LIBUSB_COMPAT_SITE = http://downloads.sourceforge.net/project/libusb/libusb-compat-$(LIBUSB_COMPAT_VERSION_MAJOR)/libusb-compat-$(LIBUSB_COMPAT_VERSION) +LIBUSB_COMPAT_DEPENDENCIES = host-pkgconf libusb +HOST_LIBUSB_COMPAT_DEPENDENCIES = host-pkgconf host-libusb +LIBUSB_COMPAT_INSTALL_STAGING = YES +LIBUSB_COMPAT_CONFIG_SCRIPTS = libusb-config +LIBUSB_COMPAT_LICENSE = LGPL-2.1+ +LIBUSB_COMPAT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libusb/Config.in b/buildroot/package/libusb/Config.in new file mode 100644 index 0000000..5238588 --- /dev/null +++ b/buildroot/package/libusb/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBUSB + bool "libusb" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Userspace library for accessing USB devices + + http://libusb.info/ + +comment "libusb needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libusb/libusb.hash b/buildroot/package/libusb/libusb.hash new file mode 100644 index 0000000..0415aab --- /dev/null +++ b/buildroot/package/libusb/libusb.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 7dce9cce9a81194b7065ee912bcd55eeffebab694ea403ffb91b67db66b1824b libusb-1.0.21.tar.bz2 diff --git a/buildroot/package/libusb/libusb.mk b/buildroot/package/libusb/libusb.mk new file mode 100644 index 0000000..f0bb9e3 --- /dev/null +++ b/buildroot/package/libusb/libusb.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libusb +# +################################################################################ + +LIBUSB_VERSION_MAJOR = 1.0 +LIBUSB_VERSION = $(LIBUSB_VERSION_MAJOR).21 +LIBUSB_SOURCE = libusb-$(LIBUSB_VERSION).tar.bz2 +LIBUSB_SITE = https://github.com/libusb/libusb/releases/download/v$(LIBUSB_VERSION) +LIBUSB_LICENSE = LGPL-2.1+ +LIBUSB_LICENSE_FILES = COPYING +LIBUSB_DEPENDENCIES = host-pkgconf +LIBUSB_INSTALL_STAGING = YES + +# Avoid the discovery of udev for the host variant +HOST_LIBUSB_CONF_OPTS = --disable-udev +HOST_LIBUSB_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBUSB_DEPENDENCIES += udev +else +LIBUSB_CONF_OPTS += --disable-udev +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libusbgx/Config.in b/buildroot/package/libusbgx/Config.in new file mode 100644 index 0000000..fcebf3c --- /dev/null +++ b/buildroot/package/libusbgx/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBUSBGX + bool "libusbgx" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBCONFIG + help + libusbgx is a C library encapsulating the kernel USB + gadget-configfs userspace API functionality. + + https://github.com/libusbgx/libusbgx + +comment "libusbgx needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libusbgx/libusbgx.hash b/buildroot/package/libusbgx/libusbgx.hash new file mode 100644 index 0000000..c185c58 --- /dev/null +++ b/buildroot/package/libusbgx/libusbgx.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 1e258205dcde99d0eeb52404ee7ff1bc9a39eb3878e8455fb72bad7cf90c7357 libusbgx-2e3d43ee098ed928d1baa61ce791ce9ff4788c5a.tar.gz diff --git a/buildroot/package/libusbgx/libusbgx.mk b/buildroot/package/libusbgx/libusbgx.mk new file mode 100644 index 0000000..1964b47 --- /dev/null +++ b/buildroot/package/libusbgx/libusbgx.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# libusbgx +# +################################################################################ + +LIBUSBGX_VERSION = 2e3d43ee098ed928d1baa61ce791ce9ff4788c5a +LIBUSBGX_SITE = $(call github,libusbgx,libusbgx,$(LIBUSBGX_VERSION)) +LIBUSBGX_LICENSE = GPL-2.0+ (examples), LGPL-2.1+ (library) +LIBUSBGX_LICENSE_FILES = COPYING COPYING.LGPL +LIBUSBGX_DEPENDENCIES = host-pkgconf libconfig +LIBUSBGX_AUTORECONF = YES +LIBUSBGX_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/libuv/Config.in b/buildroot/package/libuv/Config.in new file mode 100644 index 0000000..cdd73a6 --- /dev/null +++ b/buildroot/package/libuv/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBUV + bool "libuv" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pthread_barrier_* + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + help + libuv is a multi-platform support library with a focus + on asynchronous I/O. + + https://github.com/libuv/libuv + +comment "libuv needs a toolchain w/ NPTL, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/buildroot/package/libuv/libuv.hash b/buildroot/package/libuv/libuv.hash new file mode 100644 index 0000000..1a2833e --- /dev/null +++ b/buildroot/package/libuv/libuv.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 ccc5f3b43ed171640513786e5e809508cb6308279b4d71a016e4550ad62f1686 libuv-v1.19.2.tar.gz +sha256 6d20216ae022fbeed23916f48508fd807ece3d8464992330643b0e64e5c0c24b LICENSE diff --git a/buildroot/package/libuv/libuv.mk b/buildroot/package/libuv/libuv.mk new file mode 100644 index 0000000..2e07d3a --- /dev/null +++ b/buildroot/package/libuv/libuv.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# libuv +# +################################################################################ + +LIBUV_VERSION = v1.19.2 +LIBUV_SITE = $(call github,libuv,libuv,$(LIBUV_VERSION)) +LIBUV_DEPENDENCIES = host-pkgconf +LIBUV_INSTALL_STAGING = YES +LIBUV_AUTORECONF = YES +LIBUV_LICENSE = BSD-2-Clause, BSD-3-Clause, ISC, MIT +LIBUV_LICENSE_FILES = LICENSE + +# Upstream needs tests to be run sequentially. This is the default in +# automake 1.11 and before, but not starting in 1.12. To maintain +# sequentiality in 1.12 and later, the automake option 'serial-tests' +# must be used, Unfortunately, it is not recognised by 1.11 and +# before. So upstream only adds it conditionally. We use automake +# 1.14, so we need it. +define LIBUV_FIXUP_AUTOGEN + echo "m4_define([UV_EXTRA_AUTOMAKE_FLAGS], [serial-tests])" \ + >$(@D)/m4/libuv-extra-automake-flags.m4 +endef +LIBUV_POST_PATCH_HOOKS += LIBUV_FIXUP_AUTOGEN + +$(eval $(autotools-package)) diff --git a/buildroot/package/libv4l/0001-fixup-lfs-mismatch-in-preload-libraries.patch b/buildroot/package/libv4l/0001-fixup-lfs-mismatch-in-preload-libraries.patch new file mode 100644 index 0000000..f23eb7a --- /dev/null +++ b/buildroot/package/libv4l/0001-fixup-lfs-mismatch-in-preload-libraries.patch @@ -0,0 +1,44 @@ +From e5952b043a71fe83fbc392e498e8f77774fca0d8 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Sat, 28 Jun 2014 09:32:53 -0300 +Subject: [PATCH] fixup lfs mismatch in preload libraries + +Ensure that the lfs variants are not transparently used instead of the !lfs +ones so both can be wrapped, independently of any custom CFLAGS/CPPFLAGS. + +Signed-off-by: Peter Korsgaard +--- + lib/libv4l1/v4l1compat.c | 3 +++ + lib/libv4l2/v4l2convert.c | 3 +++ + 2 files changed, 6 insertions(+) + +diff --git a/lib/libv4l1/v4l1compat.c b/lib/libv4l1/v4l1compat.c +index e328288..70eb74f 100644 +--- a/lib/libv4l1/v4l1compat.c ++++ b/lib/libv4l1/v4l1compat.c +@@ -19,6 +19,9 @@ + # Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA + */ + ++/* ensure we see *64 variants and they aren't transparently used */ ++#undef _LARGEFILE_SOURCE ++#undef _FILE_OFFSET_BITS + #define _LARGEFILE64_SOURCE 1 + + #include +diff --git a/lib/libv4l2/v4l2convert.c b/lib/libv4l2/v4l2convert.c +index 9b46ab8..bc41056 100644 +--- a/lib/libv4l2/v4l2convert.c ++++ b/lib/libv4l2/v4l2convert.c +@@ -23,6 +23,9 @@ + /* prevent GCC 4.7 inlining error */ + #undef _FORTIFY_SOURCE + ++/* ensure we see *64 variants and they aren't transparently used */ ++#undef _LARGEFILE_SOURCE ++#undef _FILE_OFFSET_BITS + #define _LARGEFILE64_SOURCE 1 + + #include +-- +1.9.1 diff --git a/buildroot/package/libv4l/0002-keytable-fix-EVIOCSCLOCKID-related-compile-failure.patch b/buildroot/package/libv4l/0002-keytable-fix-EVIOCSCLOCKID-related-compile-failure.patch new file mode 100644 index 0000000..656008b --- /dev/null +++ b/buildroot/package/libv4l/0002-keytable-fix-EVIOCSCLOCKID-related-compile-failure.patch @@ -0,0 +1,35 @@ +From 663b7be9d27c979c914011a3ce707e227987bc59 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sat, 3 Feb 2018 22:47:18 +0100 +Subject: [PATCH] keytable: fix EVIOCSCLOCKID related compile failure + +Fixes: + + keytable.c: In function 'test_event': + keytable.c:1351:12: error: 'EVIOCSCLOCKID' undeclared (first use in this function) + ioctl(fd, EVIOCSCLOCKID, &mode); + ^~~~~~~~~~~~~ + +Signed-off-by: Peter Seiderer +--- + utils/keytable/keytable.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/utils/keytable/keytable.c b/utils/keytable/keytable.c +index 34a1522e..925eab00 100644 +--- a/utils/keytable/keytable.c ++++ b/utils/keytable/keytable.c +@@ -55,6 +55,10 @@ struct input_keymap_entry_v2 { + u_int8_t scancode[32]; + }; + ++#ifndef EVIOCSCLOCKID ++#define EVIOCSCLOCKID _IOW('E', 0xa0, int) ++#endif ++ + #ifndef EVIOCGKEYCODE_V2 + #define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct input_keymap_entry_v2) + #define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry_v2) +-- +2.16.1 + diff --git a/buildroot/package/libv4l/0003-libdvbv5-add-optional-copy-of-TEMP_FAILURE_RETRY-mac.patch b/buildroot/package/libv4l/0003-libdvbv5-add-optional-copy-of-TEMP_FAILURE_RETRY-mac.patch new file mode 100644 index 0000000..cd22be1 --- /dev/null +++ b/buildroot/package/libv4l/0003-libdvbv5-add-optional-copy-of-TEMP_FAILURE_RETRY-mac.patch @@ -0,0 +1,39 @@ +From abfe3e7b2b4af1de9b891f3a7a996b70533b0a27 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sun, 4 Mar 2018 09:07:51 +0100 +Subject: [PATCH] libdvbv5: add optional copy of TEMP_FAILURE_RETRY macro (fix + musl compile) + +Fixes: + + ../../lib/libdvbv5/.libs/libdvbv5.so: undefined reference to `TEMP_FAILURE_RETRY' + +[Upstream: https://www.mail-archive.com/linux-media@vger.kernel.org/msg127134.html] +Signed-off-by: Peter Seiderer +--- + lib/libdvbv5/dvb-dev-local.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/lib/libdvbv5/dvb-dev-local.c b/lib/libdvbv5/dvb-dev-local.c +index 8bc99d1..7a76d65 100644 +--- a/lib/libdvbv5/dvb-dev-local.c ++++ b/lib/libdvbv5/dvb-dev-local.c +@@ -44,6 +44,15 @@ + # define _(string) string + #endif + ++/* taken from glibc unistd.h */ ++#ifndef TEMP_FAILURE_RETRY ++#define TEMP_FAILURE_RETRY(expression) \ ++ ({ long int __result; \ ++ do __result = (long int) (expression); \ ++ while (__result == -1L && errno == EINTR); \ ++ __result; }) ++#endif ++ + struct dvb_dev_local_priv { + dvb_dev_change_t notify_dev_change; + +-- +2.16.2 + diff --git a/buildroot/package/libv4l/0004-Build-sdlcam-only-if-jpeg-is-enabled.patch b/buildroot/package/libv4l/0004-Build-sdlcam-only-if-jpeg-is-enabled.patch new file mode 100644 index 0000000..4c4365f --- /dev/null +++ b/buildroot/package/libv4l/0004-Build-sdlcam-only-if-jpeg-is-enabled.patch @@ -0,0 +1,31 @@ +From 5c407e130f8d0416f91f5a12bcdc2709f00dda65 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 29 Jun 2018 21:15:10 +0200 +Subject: [PATCH] Build sdlcam only if jpeg is enabled + +Fixes: + - http://autobuild.buildroot.net/results/1eded8b44cc369550566c6ce0b3c042f1aec8d44 + +Signed-off-by: Fabrice Fontaine +--- + contrib/test/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/contrib/test/Makefile.am b/contrib/test/Makefile.am +index 0188fe21..c7c38e7a 100644 +--- a/contrib/test/Makefile.am ++++ b/contrib/test/Makefile.am +@@ -17,8 +17,10 @@ noinst_PROGRAMS += v4l2gl + endif + + if HAVE_SDL ++if HAVE_JPEG + noinst_PROGRAMS += sdlcam + endif ++endif + + driver_test_SOURCES = driver-test.c + driver_test_LDADD = ../../utils/libv4l2util/libv4l2util.la +-- +2.14.1 + diff --git a/buildroot/package/libv4l/Config.in b/buildroot/package/libv4l/Config.in new file mode 100644 index 0000000..57ddde1 --- /dev/null +++ b/buildroot/package/libv4l/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_LIBV4L + bool "libv4l" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # media headers + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + libv4l is a collection of libraries which adds a thin + abstraction layer on top of video4linux2 devices. libv4l + consists of 3 different libraries: libv4lconvert, libv4l1 and + libv4l2. + + http://linuxtv.org/wiki/index.php/V4l-utils + +if BR2_PACKAGE_LIBV4L + +comment "libv4l JPEG support not enabled" + depends on !BR2_PACKAGE_JPEG + +config BR2_PACKAGE_LIBV4L_UTILS + bool "v4l-utils tools" + help + v4l-utils is a collection of various video4linux and DVB + utilities. + Enable this if you want to build the following tools: + - cx18-ctl + - dvb-fe-tool, dvbv5-zap, dvbv5-scan, dvb-format-convert + - decode_tm6000 + - ir-keytable + - media-ctl + - v4l2-compliance + - v4l2-ctl, cx18-ctl, ivtv-ctl + - v4l2-sysfs-path + - rds-ctl + - qv4l2 (if Qt is enabled) + +endif + +comment "libv4l needs a toolchain w/ threads, C++ and headers >= 3.0" + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/buildroot/package/libv4l/libv4l.hash b/buildroot/package/libv4l/libv4l.hash new file mode 100644 index 0000000..aea9cc9 --- /dev/null +++ b/buildroot/package/libv4l/libv4l.hash @@ -0,0 +1,7 @@ +# Locally calculated after checking signature +# https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.14.1.tar.bz2.asc +sha256 7974e5626447407d8a1ed531da0461c0fe00e599a696cb548a240d17d3519005 v4l-utils-1.14.1.tar.bz2 +# Locally calculated +sha256 391e4da1c54a422a78d83be7bf84b2dfb8bacdd8ad256fa4374e128655584a8a COPYING +sha256 5a7f623a50e384aaf6d2ced068339ddf93d0a50d3a0ecbe86f125b07804ecc78 COPYING.libv4l +sha256 37d0f2c8dc3f267d864cb39d54f82c5092a599beb29cb5caa96d50d27e069a44 lib/libv4l1/libv4l1-kernelcode-license.txt diff --git a/buildroot/package/libv4l/libv4l.mk b/buildroot/package/libv4l/libv4l.mk new file mode 100644 index 0000000..c95b277 --- /dev/null +++ b/buildroot/package/libv4l/libv4l.mk @@ -0,0 +1,86 @@ +################################################################################ +# +# libv4l +# +################################################################################ + +LIBV4L_VERSION = 1.14.1 +LIBV4L_SOURCE = v4l-utils-$(LIBV4L_VERSION).tar.bz2 +LIBV4L_SITE = https://linuxtv.org/downloads/v4l-utils +LIBV4L_INSTALL_STAGING = YES +LIBV4L_DEPENDENCIES = host-pkgconf +LIBV4L_CONF_OPTS = --disable-doxygen-doc +# We're patching contrib/test/Makefile.am +LIBV4L_AUTORECONF = YES +# add host-gettext for AM_ICONV macro +LIBV4L_DEPENDENCIES += host-gettext + +# fix uclibc-ng configure/compile +LIBV4L_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' + +# v4l-utils components have different licences, see v4l-utils.spec for details +LIBV4L_LICENSE = GPL-2.0+ (utilities), LGPL-2.1+ (libraries) +LIBV4L_LICENSE_FILES = COPYING COPYING.libv4l lib/libv4l1/libv4l1-kernelcode-license.txt + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +LIBV4L_DEPENDENCIES += alsa-lib +endif + +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +LIBV4L_DEPENDENCIES += argp-standalone +LIBV4L_LIBS += -largp +endif + +LIBV4L_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBV4L_DEPENDENCIES += jpeg +LIBV4L_CONF_OPTS += --with-jpeg +else +LIBV4L_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +LIBV4L_DEPENDENCIES += libgl +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIBV4L_DEPENDENCIES += udev +endif + +ifeq ($(BR2_PACKAGE_LIBGLU),y) +LIBV4L_DEPENDENCIES += libglu +endif + +ifeq ($(BR2_PACKAGE_LIBV4L_UTILS),y) +LIBV4L_CONF_OPTS += --enable-v4l-utils +LIBV4L_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) +ifeq ($(BR2_PACKAGE_QT5BASE)$(BR2_PACKAGE_QT5BASE_GUI)$(BR2_PACKAGE_QT5BASE_WIDGETS),yyy) +LIBV4L_CONF_OPTS += --enable-qv4l2 +LIBV4L_DEPENDENCIES += qt5base +# protect against host version detection of moc-qt5/rcc-qt5/uic-qt5 +LIBV4L_CONF_ENV += \ + ac_cv_prog_MOC=$(HOST_DIR)/bin/moc \ + ac_cv_prog_RCC=$(HOST_DIR)/bin/rcc \ + ac_cv_prog_UIC=$(HOST_DIR)/bin/uic +# qt5 needs c++11 (since qt-5.7) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +LIBV4L_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" +endif +else ifeq ($(BR2_PACKAGE_QT_OPENGL_GL_DESKTOP),y) +LIBV4L_CONF_OPTS += --enable-qv4l2 +LIBV4L_DEPENDENCIES += qt +else +LIBV4L_CONF_OPTS += --disable-qv4l2 +endif +else +LIBV4L_CONF_OPTS += --disable-v4l-utils +endif + +ifeq ($(BR2_PACKAGE_SDL2_IMAGE),y) +LIBV4L_DEPENDENCIES += sdl2_image +endif + +LIBV4L_CONF_ENV += LIBS="$(LIBV4L_LIBS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/libva-intel-driver/Config.in b/buildroot/package/libva-intel-driver/Config.in new file mode 100644 index 0000000..120f152 --- /dev/null +++ b/buildroot/package/libva-intel-driver/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBVA_INTEL_DRIVER + bool "libva-intel-driver" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm/libpthread-stubs + depends on !BR2_STATIC_LIBS # libva + select BR2_PACKAGE_LIBVA + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_INTEL + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7 + help + VA-API back-end driver for Intel graphics chips + + https://01.org/linuxmedia/vaapi + +comment "libva intel driver needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on BR2_i386 || BR2_x86_64 diff --git a/buildroot/package/libva-intel-driver/libva-intel-driver.hash b/buildroot/package/libva-intel-driver/libva-intel-driver.hash new file mode 100644 index 0000000..4ffc60c --- /dev/null +++ b/buildroot/package/libva-intel-driver/libva-intel-driver.hash @@ -0,0 +1,5 @@ +# From https://github.com/01org/intel-vaapi-driver/releases +sha1 19e83c084a404817263c04371c42345b617900ff intel-vaapi-driver-2.0.0.tar.bz2 +# Locally computed +sha256 10f6b0a91f34715d8d4d9a9e0fb3cc0afe5fcf85355db1272bd5fff31522f469 intel-vaapi-driver-2.0.0.tar.bz2 +sha256 c86a782ee845b52472dae9b9d79fb915d333628ac0efe49cdce63644814931de COPYING diff --git a/buildroot/package/libva-intel-driver/libva-intel-driver.mk b/buildroot/package/libva-intel-driver/libva-intel-driver.mk new file mode 100644 index 0000000..0255038 --- /dev/null +++ b/buildroot/package/libva-intel-driver/libva-intel-driver.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# libva-intel-driver +# +################################################################################ + +LIBVA_INTEL_DRIVER_VERSION = 2.0.0 +LIBVA_INTEL_DRIVER_SOURCE = intel-vaapi-driver-$(LIBVA_INTEL_DRIVER_VERSION).tar.bz2 +LIBVA_INTEL_DRIVER_SITE = \ + https://github.com/01org/intel-vaapi-driver/releases/download/$(LIBVA_INTEL_DRIVER_VERSION) +LIBVA_INTEL_DRIVER_LICENSE = MIT +LIBVA_INTEL_DRIVER_LICENSE_FILES = COPYING +LIBVA_INTEL_DRIVER_DEPENDENCIES = host-pkgconf libdrm libva + +ifeq ($(BR2_PACKAGE_XORG7),y) +LIBVA_INTEL_DRIVER_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXfixes +LIBVA_INTEL_DRIVER_CONF_OPTS += --enable-x11 +else +LIBVA_INTEL_DRIVER_CONF_OPTS += --disable-x11 +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +LIBVA_INTEL_DRIVER_DEPENDENCIES += wayland +LIBVA_INTEL_DRIVER_CONF_OPTS += --enable-wayland +else +LIBVA_INTEL_DRIVER_CONF_OPTS += --disable-wayland +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libva-utils/Config.in b/buildroot/package/libva-utils/Config.in new file mode 100644 index 0000000..ad29923 --- /dev/null +++ b/buildroot/package/libva-utils/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBVA_UTILS + bool "libva-utils" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # libva + depends on BR2_TOOLCHAIN_HAS_THREADS # libva + select BR2_PACKAGE_LIBVA + help + Libva-utils is a collection of tests for VA-API (Video + Acceleration API) + + https://01.org/linuxmedia/vaapi + +comment "libva-utils needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libva-utils/libva-utils.hash b/buildroot/package/libva-utils/libva-utils.hash new file mode 100644 index 0000000..3429fb5 --- /dev/null +++ b/buildroot/package/libva-utils/libva-utils.hash @@ -0,0 +1,5 @@ +# From https://github.com/01org/libva-utils/releases +sha1 b4dc39459f8539c1ea16e7ca957a853fb7735ec4 libva-utils-2.0.0.tar.bz2 +# Locally computed +sha256 a921df31311d8f49d2e392a5fc2a068d79f89aeb588309fbff24365310dbc5f6 libva-utils-2.0.0.tar.bz2 +sha256 c6220c9f87832c27abcb8a32eafdd2823e13ce146b3ea63d5deae2a76798ef50 COPYING diff --git a/buildroot/package/libva-utils/libva-utils.mk b/buildroot/package/libva-utils/libva-utils.mk new file mode 100644 index 0000000..275d599 --- /dev/null +++ b/buildroot/package/libva-utils/libva-utils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libva-utils +# +################################################################################ + +LIBVA_UTILS_VERSION = 2.0.0 +LIBVA_UTILS_SOURCE = libva-utils-$(LIBVA_UTILS_VERSION).tar.bz2 +LIBVA_UTILS_SITE = https://github.com/01org/libva-utils/releases/download/$(LIBVA_UTILS_VERSION) +LIBVA_UTILS_LICENSE = MIT +LIBVA_UTILS_LICENSE_FILES = COPYING +LIBVA_UTILS_DEPENDENCIES = host-pkgconf libva + +$(eval $(autotools-package)) diff --git a/buildroot/package/libva/Config.in b/buildroot/package/libva/Config.in new file mode 100644 index 0000000..08eb16b --- /dev/null +++ b/buildroot/package/libva/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LIBVA + bool "libva" + depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm/libpthread-stubs + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7 + help + The main motivation for VA-API (Video Acceleration API) is to + enable hardware accelerated video decode/encode at various + entry-points (VLD, IDCT, Motion Compensation etc.) for the + prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, + MPEG-4 AVC/H.264, and VC-1/VMW3). + + https://01.org/linuxmedia/vaapi + +comment "libva needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/libva/libva.hash b/buildroot/package/libva/libva.hash new file mode 100644 index 0000000..1736575 --- /dev/null +++ b/buildroot/package/libva/libva.hash @@ -0,0 +1,5 @@ +# From https://github.com/01org/libva/releases +sha1 762a49f8925ca1d0531c5071afbd629ffea93b90 libva-2.0.0.tar.bz2 +# Locally computed +sha256 bb0601f9a209e60d8d0b867067323661a7816ff429021441b775452b8589e533 libva-2.0.0.tar.bz2 +sha256 c86a782ee845b52472dae9b9d79fb915d333628ac0efe49cdce63644814931de COPYING diff --git a/buildroot/package/libva/libva.mk b/buildroot/package/libva/libva.mk new file mode 100644 index 0000000..8d1e27f --- /dev/null +++ b/buildroot/package/libva/libva.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# libva +# +################################################################################ + +LIBVA_VERSION = 2.0.0 +LIBVA_SOURCE = libva-$(LIBVA_VERSION).tar.bz2 +LIBVA_SITE = https://github.com/01org/libva/releases/download/$(LIBVA_VERSION) +LIBVA_LICENSE = MIT +LIBVA_LICENSE_FILES = COPYING +LIBVA_INSTALL_STAGING = YES +LIBVA_DEPENDENCIES = host-pkgconf libdrm + +# libdrm is a hard-dependency +LIBVA_CONF_OPTS = \ + --enable-drm \ + --with-drivers-path="/usr/lib/va" + +ifeq ($(BR2_PACKAGE_XORG7),y) +LIBVA_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXfixes +LIBVA_CONF_OPTS += --enable-x11 +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y) +LIBVA_DEPENDENCIES += mesa3d +LIBVA_CONF_OPTS += --enable-glx +endif +else +LIBVA_CONF_OPTS += --disable-glx --disable-x11 +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +LIBVA_DEPENDENCIES += wayland +LIBVA_CONF_OPTS += --enable-wayland +else +LIBVA_CONF_OPTS += --disable-wayland +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libvdpau/0001-missing-configh-include.patch b/buildroot/package/libvdpau/0001-missing-configh-include.patch new file mode 100644 index 0000000..f96c6fa --- /dev/null +++ b/buildroot/package/libvdpau/0001-missing-configh-include.patch @@ -0,0 +1,29 @@ +From: Rico Tzschichholz +Date: Tue, 1 Sep 2015 10:45:11 +0200 +Subject: mesa_dri2: Add missing include of config.h to define _GNU_SOURCE + +Fix build with -Wimplicit-function-declaration while secure_getenv() is +guarded by __USE_GNU. + +Reviewed-by: Aaron Plattner +Tested-by: Stefan Dirsch +(cherry picked from commit 1cda354bdfd0c9ca107293b84b52f4464fdbedcc) +Signed-off-by: Damien Lanson +--- + src/mesa_dri2.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/mesa_dri2.c b/src/mesa_dri2.c +index 51e8794..420ccee 100644 +--- a/src/mesa_dri2.c ++++ b/src/mesa_dri2.c +@@ -33,6 +33,9 @@ + * and José Hiram Soltren (jsoltren@nvidia.com) + */ + ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif + + #define NEED_REPLIES + #include diff --git a/buildroot/package/libvdpau/0002-link-with-libx11.patch b/buildroot/package/libvdpau/0002-link-with-libx11.patch new file mode 100644 index 0000000..cfb3973 --- /dev/null +++ b/buildroot/package/libvdpau/0002-link-with-libx11.patch @@ -0,0 +1,33 @@ +Subject: Link libvdpao with libX11 since it uses symbols from it +Author: Russ Allbery +Forwarded: no + +libvdpau uses the symbols: + + _XEatData + _XReply + _XFlush + _XReadPad + XFree + +which are provided by libX11, but wasn't linking with it directly, resulting +in warnings during the package build (and possibly errors later with better +linkers). + +[Patch taken from +https://anonscm.debian.org/cgit/pkg-nvidia/libvdpau.git/tree/debian/patches/link-with-libx11.patch.] + +Signed-off-by: Damien Lanson + +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -22,7 +22,8 @@ endif + libvdpau_la_LIBADD = \ + $(DLOPEN_LIBS) \ + $(PTHREAD_LIBS) \ +- $(XEXT_LIBS) ++ $(XEXT_LIBS) \ ++ $(X11_LIBS) + + libvdpau_la_LDFLAGS = -version-info 1:0:0 -no-undefined + diff --git a/buildroot/package/libvdpau/0003-vdpau-module-searchpath.patch b/buildroot/package/libvdpau/0003-vdpau-module-searchpath.patch new file mode 100644 index 0000000..bd83515 --- /dev/null +++ b/buildroot/package/libvdpau/0003-vdpau-module-searchpath.patch @@ -0,0 +1,48 @@ +From: Andreas Beckmann +Subject: search the vdpau module in multiple directories + start searching the vdpau module in ${ORIGIN}/vdpau, then the MODULEDIR and + finally fall back to /usr/lib/vdpau + +[Patch taken from +https://anonscm.debian.org/cgit/pkg-nvidia/libvdpau.git/tree/debian/patches/vdpau-module-searchpath.patch.] + +Signed-off-by: Damien Lanson + +--- a/src/vdpau_wrapper.c ++++ b/src/vdpau_wrapper.c +@@ -103,6 +103,13 @@ static char * _vdp_get_driver_name_from_ + return driver_name; + } + ++static char const * _vdpau_module_search_paths[] = { ++ "${ORIGIN}/vdpau", ++ VDPAU_MODULEDIR, ++ "/usr/lib/vdpau", ++ NULL ++}; ++ + static VdpStatus _vdp_open_driver( + Display * display, + int screen) +@@ -117,6 +127,7 @@ static VdpStatus _vdp_open_driver( + char vdpau_driver_lib[PATH_MAX]; + char const * vdpau_trace; + char const * func_name; ++ char const ** module_path; + + vdpau_driver = secure_getenv("VDPAU_DRIVER"); + if (vdpau_driver) { +@@ -138,9 +146,11 @@ static VdpStatus _vdp_open_driver( + + /* Fallback to VDPAU_MODULEDIR when VDPAU_DRIVER_PATH is not set, + * or if we fail to create the driver path/dlopen the library. */ +- if (!_vdp_driver_dll) { ++ for (module_path = _vdpau_module_search_paths; ++ !_vdp_driver_dll && *module_path; ++ ++module_path) { + if (snprintf(vdpau_driver_lib, sizeof(vdpau_driver_lib), +- DRIVER_LIB_FORMAT, VDPAU_MODULEDIR, vdpau_driver) >= ++ DRIVER_LIB_FORMAT, *module_path, vdpau_driver) >= + sizeof(vdpau_driver_lib)) { + fprintf(stderr, "Failed to construct driver path: path too long\n"); + } diff --git a/buildroot/package/libvdpau/Config.in b/buildroot/package/libvdpau/Config.in new file mode 100644 index 0000000..b5430ab --- /dev/null +++ b/buildroot/package/libvdpau/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LIBVDPAU + bool "libvdpau" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + help + VDPAU is the Video Decode and Presentation API for UNIX. + It provides an interface to video decode acceleration and + presentation hardware present in modern GPUs. + + http://freedesktop.org/wiki/Software/VDPAU + +comment "libvdpau needs a toolchain w/ threads, C++" + depends on BR2_PACKAGE_XORG7 + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/libvdpau/libvdpau.hash b/buildroot/package/libvdpau/libvdpau.hash new file mode 100644 index 0000000..55dc6a7 --- /dev/null +++ b/buildroot/package/libvdpau/libvdpau.hash @@ -0,0 +1,4 @@ +# From https://lists.freedesktop.org/archives/xorg-announce/2015-August/002630.html +md5 2fa0b05a4f4d06791eec83bc9c854d14 libvdpau-1.1.1.tar.bz2 +sha1 86516e2a962fd34f65d49115d6ddf15fd912f579 libvdpau-1.1.1.tar.bz2 +sha256 857a01932609225b9a3a5bf222b85e39b55c08787d0ad427dbd9ec033d58d736 libvdpau-1.1.1.tar.bz2 diff --git a/buildroot/package/libvdpau/libvdpau.mk b/buildroot/package/libvdpau/libvdpau.mk new file mode 100644 index 0000000..f29da1e --- /dev/null +++ b/buildroot/package/libvdpau/libvdpau.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# libvdpau +# +################################################################################ + +LIBVDPAU_VERSION = 1.1.1 +LIBVDPAU_SOURCE = libvdpau-$(LIBVDPAU_VERSION).tar.bz2 +LIBVDPAU_SITE = http://people.freedesktop.org/~aplattner/vdpau +LIBVDPAU_LICENSE = MIT +LIBVDPAU_LICENSE_FILES = COPYING +LIBVDPAU_INSTALL_STAGING = YES + +# autoreconf for patch 0002-link-with-libx11.patch +LIBVDPAU_AUTORECONF = YES + +LIBVDPAU_DEPENDENCIES = host-pkgconf xlib_libX11 xlib_libXext + +LIBVDPAU_CONF_OPTS = --with-module-dir=/usr/lib/vdpau + +ifeq ($(BR2_PACKAGE_XPROTO_DRI2PROTO),y) +LIBVDPAU_DEPENDENCIES += xproto_dri2proto +LIBVDPAU_CONF_OPTS += --enable-dri2 +else +LIBVDPAU_CONF_OPTS += --disable-dri2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libvips/0001-fix-no-gtk-doc.patch b/buildroot/package/libvips/0001-fix-no-gtk-doc.patch new file mode 100644 index 0000000..bfaf7c3 --- /dev/null +++ b/buildroot/package/libvips/0001-fix-no-gtk-doc.patch @@ -0,0 +1,35 @@ +From a3d47be3b6bed845af5e1aa87ca2da2b1e840cbb Mon Sep 17 00:00:00 2001 +From: Pieter De Gendt +Date: Thu, 29 Jan 2015 12:25:35 +0100 +Subject: [PATCH] Same patch as for systemd in commit + http://git.buildroot.net/buildroot/commit/?id=7144f2f04b70553 + +Fix deactivation of gtk-doc + +The tarball contains the Makefile for building documentation with gtk-doc, +Unfortunately the AM_CONDITIONAL variable is not the correct one, which +results in an error when running autoreconf. + +This patch fixes this issue. + +Signed-off-by: Pieter De Gendt +--- + doc/reference/gtk-doc.make | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/doc/reference/gtk-doc.make b/doc/reference/gtk-doc.make +index e791656..786803e 100644 +--- a/doc/reference/gtk-doc.make ++++ b/doc/reference/gtk-doc.make +@@ -267,7 +267,7 @@ uninstall-local: + # + # Require gtk-doc when making dist + # +-if HAVE_GTK_DOC ++if ENABLE_GTK_DOC + dist-check-gtkdoc: docs + else + dist-check-gtkdoc: +-- +2.2.2 + diff --git a/buildroot/package/libvips/Config.in b/buildroot/package/libvips/Config.in new file mode 100644 index 0000000..e16e527 --- /dev/null +++ b/buildroot/package/libvips/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LIBVIPS + bool "libvips" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # fork() + # C++ support is required to build libvips + # https://github.com/jcupitt/libvips/issues/231 + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + help + libvips is a 2D image processing library. Compared to + similar libraries, libvips runs quickly and uses little + memory. + + http://www.vips.ecs.soton.ac.uk/ + +comment "libvips needs a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/libvips/libvips.hash b/buildroot/package/libvips/libvips.hash new file mode 100644 index 0000000..18c1ae8 --- /dev/null +++ b/buildroot/package/libvips/libvips.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 45961855e21c8d5f0983d05bb79a6f3c2427dc6eed8e3ac68c0f62759b8612c6 vips-7.42.2.tar.gz diff --git a/buildroot/package/libvips/libvips.mk b/buildroot/package/libvips/libvips.mk new file mode 100644 index 0000000..8078e04 --- /dev/null +++ b/buildroot/package/libvips/libvips.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# libvips +# +################################################################################ + +LIBVIPS_VERSION_MAJOR = 7.42 +LIBVIPS_VERSION = $(LIBVIPS_VERSION_MAJOR).2 +LIBVIPS_SOURCE = vips-$(LIBVIPS_VERSION).tar.gz +LIBVIPS_SITE = http://www.vips.ecs.soton.ac.uk/supported/$(LIBVIPS_VERSION_MAJOR) +LIBVIPS_LICENSE = LGPL-2.1+ +LIBVIPS_LICENSE_FILES = COPYING +# We're patching gtk-doc.make, so need to autoreconf +LIBVIPS_AUTORECONF = YES + +# Sparc64 compile fails, for all optimization levels except -O0. To +# fix the problem, use -O0 with no optimization instead. Bug reported +# upstream at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69038. +ifeq ($(BR2_sparc64),y) +LIBVIPS_CXXFLAGS += -O0 +endif + +LIBVIPS_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBVIPS_CXXFLAGS)" + +LIBVIPS_CONF_OPTS = \ + --disable-introspection \ + --without-dmalloc \ + --without-gsf \ + --without-magick \ + --without-orc \ + --without-lcms \ + --without-OpenEXR \ + --without-openslide \ + --without-matio \ + --without-cfitsio \ + --without-libwebp \ + --without-pangoft2 \ + --without-x \ + --without-zip \ + --without-python +LIBVIPS_INSTALL_STAGING = YES +LIBVIPS_DEPENDENCIES = \ + host-pkgconf libglib2 \ + libxml2 $(TARGET_NLS_DEPENDENCIES) + +# --disable-cxx is broken upstream +# https://github.com/jcupitt/libvips/issues/231 +LIBVIPS_CONF_OPTS += --enable-cxx + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBVIPS_CONF_OPTS += --with-jpeg +LIBVIPS_DEPENDENCIES += jpeg +else +LIBVIPS_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LIBVIPS_CONF_OPTS += --with-png +LIBVIPS_DEPENDENCIES += libpng +else +LIBVIPS_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +LIBVIPS_CONF_OPTS += --with-tiff +LIBVIPS_DEPENDENCIES += tiff +else +LIBVIPS_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_FFTW),y) +LIBVIPS_CONF_OPTS += --with-fftw +LIBVIPS_DEPENDENCIES += fftw +else +LIBVIPS_CONF_OPTS += --without-fftw +endif + +ifeq ($(BR2_PACKAGE_LIBEXIF),y) +LIBVIPS_CONF_OPTS += --with-libexif +LIBVIPS_DEPENDENCIES += libexif +else +LIBVIPS_CONF_OPTS += --without-libexif +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libvncserver/0001-Limit-client-cut-text-length-to-1-MB.patch b/buildroot/package/libvncserver/0001-Limit-client-cut-text-length-to-1-MB.patch new file mode 100644 index 0000000..84a5376 --- /dev/null +++ b/buildroot/package/libvncserver/0001-Limit-client-cut-text-length-to-1-MB.patch @@ -0,0 +1,65 @@ +From 28afb6c537dc82ba04d5f245b15ca7205c6dbb9c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Mon, 26 Feb 2018 13:48:00 +0100 +Subject: [PATCH] Limit client cut text length to 1 MB + +This patch constrains a client cut text length to 1 MB. Otherwise +a client could make server allocate 2 GB of memory and that seems to +be to much to classify it as a denial of service. + +The limit also prevents from an integer overflow followed by copying +an uninitilized memory when processing msg.cct.length value larger +than SIZE_MAX or INT_MAX - sz_rfbClientCutTextMsg. + +This patch also corrects accepting length value of zero (malloc(0) is +interpreted on differnet systems differently). + +CVE-2018-7225 + + +Signed-off-by: Peter Korsgaard +--- + libvncserver/rfbserver.c | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +diff --git a/libvncserver/rfbserver.c b/libvncserver/rfbserver.c +index 116c488..4fc4d9d 100644 +--- a/libvncserver/rfbserver.c ++++ b/libvncserver/rfbserver.c +@@ -88,6 +88,8 @@ + #include + /* strftime() */ + #include ++/* PRIu32 */ ++#include + + #ifdef LIBVNCSERVER_WITH_WEBSOCKETS + #include "rfbssl.h" +@@ -2575,7 +2577,23 @@ rfbProcessClientNormalMessage(rfbClientPtr cl) + + msg.cct.length = Swap32IfLE(msg.cct.length); + +- str = (char *)malloc(msg.cct.length); ++ /* uint32_t input is passed to malloc()'s size_t argument, ++ * to rfbReadExact()'s int argument, to rfbStatRecordMessageRcvd()'s int ++ * argument increased of sz_rfbClientCutTextMsg, and to setXCutText()'s int ++ * argument. Here we impose a limit of 1 MB so that the value fits ++ * into all of the types to prevent from misinterpretation and thus ++ * from accessing uninitialized memory (CVE-2018-7225) and also to ++ * prevent from a denial-of-service by allocating to much memory in ++ * the server. */ ++ if (msg.cct.length > 1<<20) { ++ rfbLog("rfbClientCutText: too big cut text length requested: %" PRIu32 "\n", ++ msg.cct.length); ++ rfbCloseClient(cl); ++ return; ++ } ++ ++ /* Allow zero-length client cut text. */ ++ str = (char *)calloc(msg.cct.length ? msg.cct.length : 1, 1); + if (str == NULL) { + rfbLogPerror("rfbProcessClientNormalMessage: not enough memory"); + rfbCloseClient(cl); +-- +2.11.0 + diff --git a/buildroot/package/libvncserver/Config.in b/buildroot/package/libvncserver/Config.in new file mode 100644 index 0000000..460aa78 --- /dev/null +++ b/buildroot/package/libvncserver/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_LIBVNCSERVER + bool "libvncserver" + depends on BR2_USE_MMU # VNCommand.c uses fork() + # binutils issue (bad expression) + depends on !BR2_nios2 + help + libvncserver is a VNC server/client library. + + http://libvncserver.sourceforge.net/ + +if BR2_PACKAGE_LIBVNCSERVER + +config BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG + bool "TightPNG encoding support" + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + help + TightPNG encoding speeds up HTML5 based VNC clients like + noVNC. + + http://wiki.qemu.org/VNC_Tight_PNG + +endif diff --git a/buildroot/package/libvncserver/libvncserver.hash b/buildroot/package/libvncserver/libvncserver.hash new file mode 100644 index 0000000..8d994e4 --- /dev/null +++ b/buildroot/package/libvncserver/libvncserver.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 193d630372722a532136fd25c5326b2ca1a636cbb8bf9bb115ef869c804d2894 LibVNCServer-0.9.11.tar.gz diff --git a/buildroot/package/libvncserver/libvncserver.mk b/buildroot/package/libvncserver/libvncserver.mk new file mode 100644 index 0000000..8063570 --- /dev/null +++ b/buildroot/package/libvncserver/libvncserver.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# libvncserver +# +################################################################################ + +LIBVNCSERVER_VERSION = 0.9.11 +LIBVNCSERVER_SOURCE = LibVNCServer-$(LIBVNCSERVER_VERSION).tar.gz +LIBVNCSERVER_SITE = https://github.com/LibVNC/libvncserver/archive +LIBVNCSERVER_LICENSE = GPL-2.0+ +LIBVNCSERVER_LICENSE_FILES = COPYING +LIBVNCSERVER_INSTALL_STAGING = YES +LIBVNCSERVER_CONFIG_SCRIPTS = libvncserver-config +LIBVNCSERVER_DEPENDENCIES = host-pkgconf + +# Upstream decided to remove generated autotools files from the +# tarball, so we need to generate them. +LIBVNCSERVER_AUTORECONF = YES + +# libvncserver does not get along with newer libva versions +# https://github.com/LibVNC/libvncserver/issues/11 +LIBVNCSERVER_CONF_OPTS += --without-libva + +# only used for examples +LIBVNCSERVER_CONF_OPTS += --with-sdl-config=/bin/false + +ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +LIBVNCSERVER_CONF_OPTS += --without-pthread +endif + +# openssl supports needs NPTL thread support +ifeq ($(BR2_PACKAGE_OPENSSL)$(BR2_TOOLCHAIN_HAS_THREADS_NPTL),yy) +LIBVNCSERVER_DEPENDENCIES += openssl +else +LIBVNCSERVER_CONF_OPTS += --without-crypto --without-ssl +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +LIBVNCSERVER_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +LIBVNCSERVER_DEPENDENCIES += libgcrypt +else +LIBVNCSERVER_CONF_OPTS += --without-gcrypt +endif + +ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy) +LIBVNCSERVER_DEPENDENCIES += gnutls host-pkgconf +else +LIBVNCSERVER_CONF_OPTS += --without-gnutls +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +LIBVNCSERVER_DEPENDENCIES += jpeg +else +LIBVNCSERVER_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +LIBVNCSERVER_DEPENDENCIES += libpng +else +LIBVNCSERVER_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBVNCSERVER_DEPENDENCIES += zlib +else +LIBVNCSERVER_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libvorbis/0001-CVE-2017-14160-fix-bounds-check-on-very-low-sample-rates.patch b/buildroot/package/libvorbis/0001-CVE-2017-14160-fix-bounds-check-on-very-low-sample-rates.patch new file mode 100644 index 0000000..e84f3d4 --- /dev/null +++ b/buildroot/package/libvorbis/0001-CVE-2017-14160-fix-bounds-check-on-very-low-sample-rates.patch @@ -0,0 +1,28 @@ +From: Thomas Daede +Date: Wed, 9 May 2018 21:56:59 +0000 (-0700) +Subject: CVE-2017-14160: fix bounds check on very low sample rates. +X-Git-Url: https://git.xiph.org/?p=vorbis.git;a=commitdiff_plain;h=018ca26dece618457dd13585cad52941193c4a25 + +CVE-2017-14160: fix bounds check on very low sample rates. + +Downloaded from upstream commit +https://git.xiph.org/?p=vorbis.git;a=commitdiff;h=018ca26dece618457dd13585cad52941193c4a25 + +Signed-off-by: Bernd Kuhls +--- + +diff --git a/lib/psy.c b/lib/psy.c +index 422c6f1..1310123 100644 +--- a/lib/psy.c ++++ b/lib/psy.c +@@ -602,8 +602,9 @@ static void bark_noise_hybridmp(int n,const long *b, + for (i = 0, x = 0.f;; i++, x += 1.f) { + + lo = b[i] >> 16; +- if( lo>=0 ) break; + hi = b[i] & 0xffff; ++ if( lo>=0 ) break; ++ if( hi>=n ) break; + + tN = N[hi] + N[-lo]; + tX = X[hi] - X[-lo]; diff --git a/buildroot/package/libvorbis/Config.in b/buildroot/package/libvorbis/Config.in new file mode 100644 index 0000000..3d5b5d6 --- /dev/null +++ b/buildroot/package/libvorbis/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LIBVORBIS + bool "libvorbis" + select BR2_PACKAGE_LIBOGG + help + Library for the Vorbis open source audio decoder + Ogg Vorbis is a fully open, non-proprietary, + patent-and-royalty-free, general-purpose compressed audio + format for mid to high quality (8kHz-48.0kHz, 16+ bit, + polyphonic) audio and music at fixed and variable bitrates + from 16 to 128 kbps/channel. + + This places Vorbis in the same competitive class as audio + representations such as MPEG-4 (AAC), and similar to, but + higher performance than MPEG-1/2 audio layer 3, MPEG-4 audio + (TwinVQ), WMA and PAC. diff --git a/buildroot/package/libvorbis/libvorbis.hash b/buildroot/package/libvorbis/libvorbis.hash new file mode 100644 index 0000000..15bd01f --- /dev/null +++ b/buildroot/package/libvorbis/libvorbis.hash @@ -0,0 +1,4 @@ +# From http://www.xiph.org/downloads/ +sha256 af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415 libvorbis-1.3.6.tar.xz +# License files, locally calculated +sha256 29e9914e6173b7061b7d48c25e6159fc1438326738bc047cc7248abc01b271f6 COPYING diff --git a/buildroot/package/libvorbis/libvorbis.mk b/buildroot/package/libvorbis/libvorbis.mk new file mode 100644 index 0000000..ae2c1ef --- /dev/null +++ b/buildroot/package/libvorbis/libvorbis.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libvorbis +# +################################################################################ + +LIBVORBIS_VERSION = 1.3.6 +LIBVORBIS_SOURCE = libvorbis-$(LIBVORBIS_VERSION).tar.xz +LIBVORBIS_SITE = http://downloads.xiph.org/releases/vorbis +LIBVORBIS_INSTALL_STAGING = YES +LIBVORBIS_CONF_OPTS = --disable-oggtest +LIBVORBIS_DEPENDENCIES = host-pkgconf libogg +LIBVORBIS_LICENSE = BSD-3-Clause +LIBVORBIS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch b/buildroot/package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch new file mode 100644 index 0000000..e17ff71 --- /dev/null +++ b/buildroot/package/libvpx/0001-vpx_mem-vpx_mem.h-Fix-compilation-with-uClibc.patch @@ -0,0 +1,30 @@ +From 90845a3a263e0f37b9c756c0b01377b9d1a225c9 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 31 Jul 2016 10:37:05 +0200 +Subject: [PATCH] vpx_mem/vpx_mem.h: do not include + +The header does not exist in most C libraries, and including +it causes build failures. + +Signed-off-by: Bernd Kuhls +--- + vpx_mem/vpx_mem.h | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/vpx_mem/vpx_mem.h b/vpx_mem/vpx_mem.h +index c14f288..82df745 100644 +--- a/vpx_mem/vpx_mem.h ++++ b/vpx_mem/vpx_mem.h +@@ -12,9 +12,6 @@ + #define VPX_MEM_VPX_MEM_H_ + + #include "vpx_config.h" +-#if defined(__uClinux__) +-#include +-#endif + + #include + #include +-- +2.8.1 + diff --git a/buildroot/package/libvpx/Config.in b/buildroot/package/libvpx/Config.in new file mode 100644 index 0000000..67a4c57 --- /dev/null +++ b/buildroot/package/libvpx/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBVPX + bool "libvpx" + depends on !BR2_bfin + depends on BR2_TOOLCHAIN_HAS_THREADS + help + A high-quality, open video format that's freely available to + everyone. Supports the VP8 and VP9 formats. + + http://webmproject.org + +comment "libvpx needs a toolchain w/ threads" + depends on !BR2_bfin + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libvpx/libvpx.hash b/buildroot/package/libvpx/libvpx.hash new file mode 100644 index 0000000..95ff3a8 --- /dev/null +++ b/buildroot/package/libvpx/libvpx.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 1c2c0c2a97fba9474943be34ee39337dee756780fc12870ba1dc68372586a819 libvpx-1.6.1.tar.bz2 diff --git a/buildroot/package/libvpx/libvpx.mk b/buildroot/package/libvpx/libvpx.mk new file mode 100644 index 0000000..24c3903 --- /dev/null +++ b/buildroot/package/libvpx/libvpx.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# libvpx +# +################################################################################ + +LIBVPX_VERSION = 1.6.1 +LIBVPX_SOURCE = libvpx-$(LIBVPX_VERSION).tar.bz2 +LIBVPX_SITE = http://storage.googleapis.com/downloads.webmproject.org/releases/webm +LIBVPX_LICENSE = BSD-3-Clause +LIBVPX_LICENSE_FILES = LICENSE PATENTS +LIBVPX_INSTALL_STAGING = YES + +# ld is being used with cc options. therefore, pretend ld is cc. +LIBVPX_CONF_ENV = \ + LD="$(TARGET_CC)" \ + CROSS=$(GNU_TARGET_NAME) + +LIBVPX_CONF_OPTS = \ + --disable-examples \ + --disable-docs \ + --disable-unit-tests + +# This is not a true autotools package. It is based on the ffmpeg build system +define LIBVPX_CONFIGURE_CMDS + (cd $(LIBVPX_SRCDIR) && rm -rf config.cache && \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + $(LIBVPX_CONF_ENV) \ + ./configure \ + --target=generic-gnu \ + --enable-pic \ + --prefix=/usr \ + $(SHARED_STATIC_LIBS_OPTS) \ + $(LIBVPX_CONF_OPTS) \ + ) +endef + +define LIBVPX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(LIBVPX_MAKE_ENV) $(MAKE) -C $(@D) all +endef + +define LIBVPX_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(LIBVPX_MAKE_ENV) $(MAKE) DESTDIR="$(STAGING_DIR)" -C $(@D) install +endef + +define LIBVPX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(LIBVPX_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch b/buildroot/package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch new file mode 100644 index 0000000..ea3fd00 --- /dev/null +++ b/buildroot/package/libwebsock/0001-Switch-to-use-pkg-config-to-detect-libevent-and-open.patch @@ -0,0 +1,81 @@ +From a6c35dbab5a2a75c176e031122ee64152e50e5d3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 1 Jan 2015 12:23:43 +0100 +Subject: [PATCH] Switch to use pkg-config to detect libevent and openssl + +Switching to pkg-config fixes a number of problems when detecting the +libraries. For example the detection of libpthread was failing, +because libevent_threads was added to LIBS before libevent itself, +causing the libpthread test to fail due to missing symbols. pkg-config +is anyway nowadays the preferred way for detecting libraries. It also +has the benefit of working properly in static library situations. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 36 ++++++++++++------------------------ + 1 file changed, 12 insertions(+), 24 deletions(-) + +diff --git a/configure.ac b/configure.ac +index d4109ce..fc1cadc 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -27,35 +27,20 @@ AC_FUNC_MALLOC + AC_FUNC_REALLOC + AC_CHECK_FUNCS([memset socket strstr]) + +-AC_CHECK_HEADERS([event2/thread.h], [ +- LIBS="-levent_pthreads ${LIBS}" +- ], [ +- echo "libevent_pthreads required, failing" +- exit -1 +- ]) +-AC_CHECK_LIB(pthread, pthread_create, [LIBS="-lpthread ${LIBS}"], [ ++AC_CHECK_LIB(pthread, pthread_create, [PTHREAD_LIBS="-lpthread"], [ + echo "pthreads required, failing" + exit -1 + ]) +-AC_CHECK_LIB(event, event_base_dispatch, [], [ +- echo "libevent required, failing" +- exit -1 +- ]) ++ ++PKG_CHECK_MODULES([EVENT], [libevent]) ++PKG_CHECK_MODULES([EVENT_PTHREAD], [libevent_pthreads]) + + AS_IF([test "x$with_ssl" != "xno"], + [ +- AC_CHECK_LIB([ssl], [SSL_CTX_new], +- [ +- LIBS="-lssl ${LIBS}" +- AC_CHECK_LIB([event_openssl], [bufferevent_openssl_socket_new], [ +- LIBS="-levent_openssl ${LIBS}" +- have_ssl=yes +- ], [have_ssl=no]) +- ], +- [have_ssl=no]) +- ], +- [have_ssl=no]) +- ++ PKG_CHECK_MODULES([SSL], [openssl], [have_ssl=yes], [have_ssl=no]) ++ AS_IF([test "x${have_ssl}" = "xyes"], ++ [PKG_CHECK_MODULES([EVENT_OPENSSL], [libevent_openssl], [have_ssl=yes], [have_ssl=no])])]) ++ + AS_IF([test "x$have_ssl" = "xyes"], + [ + AC_DEFINE([WEBSOCK_HAVE_SSL], [1], [Define if building SSL support]) +@@ -63,8 +48,11 @@ AS_IF([test "x$have_ssl" = "xyes"], + [AS_IF([test "x$with_ssl" = "xyes"], + [AC_MSG_ERROR([SSL support requested but not found]) + ])]) +- ++ + AM_CONDITIONAL([HAVE_SSL], [test "x$have_ssl" = "xyes"]) ++ ++LIBS="${EVENT_LIBS} ${EVENT_PTHREAD_LIBS} ${PTHREAD_LIBS} ${SSL_LIBS} ${EVENT_OPENSSL_LIBS}" ++ + AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_VERSION], ["$PACKAGE_VERSION"], [libwebsock version]) + AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_STRING], ["$PACKAGE_STRING"], [libwebsock package string]) + AC_DEFINE_UNQUOTED([WEBSOCK_PACKAGE_NAME], ["$PACKAGE_NAME"], [libwebsock package name]) +-- +2.1.0 + diff --git a/buildroot/package/libwebsock/0002-fix-ssl.patch b/buildroot/package/libwebsock/0002-fix-ssl.patch new file mode 100644 index 0000000..51b9b36 --- /dev/null +++ b/buildroot/package/libwebsock/0002-fix-ssl.patch @@ -0,0 +1,26 @@ +config: fix SSL detection + +The @WEBSOCK_HAVE_SSL@ is not replaced at configure time, and even if +it was, it would be replaced by an empty string if openssl is disabled, +thus still defining WEBSOCK_HAVE_SSL when we would not want it. + +Instead, rely on config.h, which is properly generated by ./configure, +to provide the information about whether openssl is enabled or not. + +Signed-off-by: "Yann E. MORIN" + +diff -durN a/src/websock_config.h.in b/src/websock_config.h.in +--- a/src/websock_config.h.in ++++ b/src/websock_config.h.in +@@ -1,9 +1,10 @@ + #ifndef WEBSOCK_CONFIG_H + #define WEBSOCK_CONFIG_H 1 + ++#include "config.h" ++ + #define WEBSOCK_PACKAGE_STRING @WEBSOCK_PACKAGE_STRING@ + #define WEBSOCK_PACKAGE_VERSION @WEBSOCK_PACKAGE_VERSION@ + #define WEBSOCK_PACKAGE_NAME @WEBSOCK_PACKAGE_NAME@ +-#define WEBSOCK_HAVE_SSL @WEBSOCK_HAVE_SSL@ + + #endif diff --git a/buildroot/package/libwebsock/0003-fix-incorrect-inline.patch b/buildroot/package/libwebsock/0003-fix-incorrect-inline.patch new file mode 100644 index 0000000..043df45 --- /dev/null +++ b/buildroot/package/libwebsock/0003-fix-incorrect-inline.patch @@ -0,0 +1,66 @@ +utf: do not define decode() to be inline + +Currently, decode() is prototyped in utf.h, its body is in utf.c and it +is called from util.c. + +However, decode() is defined to be inline, which can not work since, +when compiling util.c, the body of decode() is out-of-scope for that +compilation unit. + +Furthermore, decode() uses a utf8d, which is a static defined in utf.c . +So utf8d is not visible when compiling util.c either. + +This means that the definition of decode() along with utf8d is basically +wrong, and is now failing with gcc-5.x, with warnings like so: + + libtool: compile: /home/ymorin/dev/buildroot/O/host/usr/bin/arm-linux-gcc -DHAVE_CONFIG_H -I. -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wmissing-prototypes -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -c utf.c -fPIC -DPIC -o .libs/libwebsock_la-utf.o + utf.c:36:12: warning: ‘utf8d’ is static but used in inline function ‘decode’ which is not static + *state = utf8d[256 + *state*16 + type]; + ^ + utf.c:30:19: warning: ‘utf8d’ is static but used in inline function ‘decode’ which is not static + uint32_t type = utf8d[byte]; + ^ + libtool: compile: /home/ymorin/dev/buildroot/O/host/usr/bin/arm-linux-gcc -DHAVE_CONFIG_H -I. -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -Wmissing-prototypes -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -c util.c -fPIC -DPIC -o .libs/libwebsock_la-util.o + In file included from websock.h:73:0, + from util.c:20: + utf.h:25:17: warning: inline function ‘decode’ declared but never defined + uint32_t inline decode(uint32_t *state, uint32_t *codep, uint32_t byte); + ^ + +This results in decode() to be omitted from libwebsock.so, and thus link +failures when another program wants to link with -lwebsock. + +The simplest solution is to not inline decode() at all. + +Signed-off-by: "Yann E. MORIN" + +--- +Note: an alternative would be to move both decode() and utf8d into +decode.h nad ditch decode.c if decode really must be inline. This is +left as an execise for an interested party. But since upstream hasn't +seen a single commit in more than a year now... :-( + +diff -durN a/src/utf.c b/src/utf.c +--- a/src/utf.c 2014-07-15 01:43:20.000000000 +0200 ++++ b/src/utf.c 2015-08-22 22:29:38.667393786 +0200 +@@ -24,7 +24,7 @@ + 1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // s7..s8 + }; + +-uint32_t inline ++uint32_t + decode(uint32_t* state, uint32_t* codep, uint32_t byte) + { + uint32_t type = utf8d[byte]; +diff -durN a/src/utf.h b/src/utf.h +--- a/src/utf.h 2014-07-15 01:43:20.000000000 +0200 ++++ b/src/utf.h 2015-08-22 22:29:10.439227396 +0200 +@@ -22,7 +22,7 @@ + + #include + +-uint32_t inline decode(uint32_t *state, uint32_t *codep, uint32_t byte); ++uint32_t decode(uint32_t *state, uint32_t *codep, uint32_t byte); + + + #endif /* UTF_H_ */ diff --git a/buildroot/package/libwebsock/Config.in b/buildroot/package/libwebsock/Config.in new file mode 100644 index 0000000..14651cf --- /dev/null +++ b/buildroot/package/libwebsock/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBWEBSOCK + bool "libwebsock" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBEVENT + help + C library for easy WebSockets servers. + + This library allows a developer to quickly develop WebSocket + servers by focusing on the actual logic of your WebSocket + implementation instead of the details of the WebSocket + protocol or even specifics of C sockets. + + https://github.com/payden/libwebsock + +comment "libwebsock needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libwebsock/libwebsock.hash b/buildroot/package/libwebsock/libwebsock.hash new file mode 100644 index 0000000..b94b738 --- /dev/null +++ b/buildroot/package/libwebsock/libwebsock.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 34cf8376446e2371c9af47394043a30dc16af7ed5437d56bc6135c5dfda9ed22 libwebsock-3c1615eeadb0b582b63851073bfe3e5132f31ebc.tar.gz diff --git a/buildroot/package/libwebsock/libwebsock.mk b/buildroot/package/libwebsock/libwebsock.mk new file mode 100644 index 0000000..df3af3b --- /dev/null +++ b/buildroot/package/libwebsock/libwebsock.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# libwebsock +# +################################################################################ + +LIBWEBSOCK_VERSION = 3c1615eeadb0b582b63851073bfe3e5132f31ebc +LIBWEBSOCK_SITE = $(call github,payden,libwebsock,$(LIBWEBSOCK_VERSION)) +LIBWEBSOCK_DEPENDENCIES = libevent host-pkgconf +LIBWEBSOCK_AUTORECONF = YES +LIBWEBSOCK_INSTALL_STAGING = YES +LIBWEBSOCK_LICENSE = LGPL-3.0 +LIBWEBSOCK_LICENSE_FILES = COPYING.lesser + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBWEBSOCK_DEPENDENCIES += openssl +LIBWEBSOCK_CONF_OPTS += --with-ssl +else +LIBWEBSOCK_CONF_OPTS += --without-ssl +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libwebsockets/Config.in b/buildroot/package/libwebsockets/Config.in new file mode 100644 index 0000000..2b350bf --- /dev/null +++ b/buildroot/package/libwebsockets/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LIBWEBSOCKETS + bool "libwebsockets" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_ZLIB + help + Libwebsockets is a lightweight pure C library built to use + minimal CPU and memory resources, and provide fast throughput + in both directions. + + http://libwebsockets.org/ diff --git a/buildroot/package/libwebsockets/libwebsockets.hash b/buildroot/package/libwebsockets/libwebsockets.hash new file mode 100644 index 0000000..4901397 --- /dev/null +++ b/buildroot/package/libwebsockets/libwebsockets.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 e7f9eaef258e003c9ada0803a9a5636757a5bc0a58927858834fb38a87d18ad2 libwebsockets-v2.2.1.tar.gz diff --git a/buildroot/package/libwebsockets/libwebsockets.mk b/buildroot/package/libwebsockets/libwebsockets.mk new file mode 100644 index 0000000..b29a2f1 --- /dev/null +++ b/buildroot/package/libwebsockets/libwebsockets.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# libwebsockets +# +################################################################################ + +LIBWEBSOCKETS_VERSION = v2.2.1 +LIBWEBSOCKETS_SITE = $(call github,warmcat,libwebsockets,$(LIBWEBSOCKETS_VERSION)) +LIBWEBSOCKETS_LICENSE = LGPL-2.1 with exceptions +LIBWEBSOCKETS_LICENSE_FILES = LICENSE +LIBWEBSOCKETS_DEPENDENCIES = zlib +LIBWEBSOCKETS_INSTALL_STAGING = YES +LIBWEBSOCKETS_CONF_OPTS = -DLWS_WITHOUT_TESTAPPS=ON -DLWS_IPV6=ON + +# If LWS_MAX_SMP=1, then there is no code related to pthreads compiled +# in the library. If unset, LWS_MAX_SMP defaults to 32 and a small +# amount of pthread mutex code is built into the library. +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +LIBWEBSOCKETS_CONF_OPTS += -DLWS_MAX_SMP=1 +else +LIBWEBSOCKETS_CONF_OPTS += -DLWS_MAX_SMP= +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBWEBSOCKETS_DEPENDENCIES += openssl host-openssl +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_SSL=ON +else +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_SSL=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBEV),y) +LIBWEBSOCKETS_DEPENDENCIES += libev +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBEV=ON +else +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBEV=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBUV),y) +LIBWEBSOCKETS_DEPENDENCIES += libuv +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBUV=ON +else +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_LIBUV=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_SHARED=OFF +endif + +ifeq ($(BR2_SHARED_LIBS),y) +LIBWEBSOCKETS_CONF_OPTS += -DLWS_WITH_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libxkbcommon/Config.in b/buildroot/package/libxkbcommon/Config.in new file mode 100644 index 0000000..4da1289 --- /dev/null +++ b/buildroot/package/libxkbcommon/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LIBXKBCOMMON + bool "libxkbcommon" + select BR2_PACKAGE_LIBXCB if BR2_PACKAGE_XORG7 + help + xkbcommon is a keymap compiler and support library which + processes a reduced subset of keymaps as defined by the XKB + specification. + + http://xkbcommon.org/ diff --git a/buildroot/package/libxkbcommon/libxkbcommon.hash b/buildroot/package/libxkbcommon/libxkbcommon.hash new file mode 100644 index 0000000..525f9ff --- /dev/null +++ b/buildroot/package/libxkbcommon/libxkbcommon.hash @@ -0,0 +1,2 @@ +# From https://lists.freedesktop.org/archives/wayland-devel/2017-January/032725.html +sha256 ba59305d2e19e47c27ea065c2e0df96ebac6a3c6e97e28ae5620073b6084e68b libxkbcommon-0.7.1.tar.xz diff --git a/buildroot/package/libxkbcommon/libxkbcommon.mk b/buildroot/package/libxkbcommon/libxkbcommon.mk new file mode 100644 index 0000000..6011814 --- /dev/null +++ b/buildroot/package/libxkbcommon/libxkbcommon.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# libxkbcommon +# +################################################################################ + +LIBXKBCOMMON_VERSION = 0.7.1 +LIBXKBCOMMON_SITE = http://xkbcommon.org/download +LIBXKBCOMMON_SOURCE = libxkbcommon-$(LIBXKBCOMMON_VERSION).tar.xz +LIBXKBCOMMON_LICENSE = MIT/X11 +LIBXKBCOMMON_LICENSE_FILES = LICENSE +LIBXKBCOMMON_INSTALL_STAGING = YES +LIBXKBCOMMON_DEPENDENCIES = host-bison host-flex +LIBXKBCOMMON_CONF_OPTS = --disable-wayland +# uses C99 features +LIBXKBCOMMON_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu99" + +ifeq ($(BR2_PACKAGE_XORG7),y) +LIBXKBCOMMON_CONF_OPTS += --enable-x11 +LIBXKBCOMMON_DEPENDENCIES += libxcb +else +LIBXKBCOMMON_CONF_OPTS += --disable-x11 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/libxml-parser-perl/libxml-parser-perl.hash b/buildroot/package/libxml-parser-perl/libxml-parser-perl.hash new file mode 100644 index 0000000..d8e0df5 --- /dev/null +++ b/buildroot/package/libxml-parser-perl/libxml-parser-perl.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 1ae9d07ee9c35326b3d9aad56eae71a6730a73a116b9fe9e8a4758b7cc033216 XML-Parser-2.44.tar.gz diff --git a/buildroot/package/libxml-parser-perl/libxml-parser-perl.mk b/buildroot/package/libxml-parser-perl/libxml-parser-perl.mk new file mode 100644 index 0000000..514c457 --- /dev/null +++ b/buildroot/package/libxml-parser-perl/libxml-parser-perl.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# libxml-parser-perl +# +################################################################################ + +LIBXML_PARSER_PERL_VERSION = 2.44 +LIBXML_PARSER_PERL_SOURCE = XML-Parser-$(LIBXML_PARSER_PERL_VERSION).tar.gz +LIBXML_PARSER_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TODDR +HOST_LIBXML_PARSER_PERL_DEPENDENCIES = host-expat +LIBXML_PARSER_PERL_LICENSE = Artistic or GPL-1.0+ +LIBXML_PARSER_PERL_LICENSE_FILES = README +LIBXML_PARSER_PERL_RUN_PERL = `which perl` + +define HOST_LIBXML_PARSER_PERL_CONFIGURE_CMDS + (cd $(@D) ; \ + $(HOST_CONFIGURE_OPTS) $(LIBXML_PARSER_PERL_RUN_PERL) Makefile.PL \ + PREFIX=$(HOST_DIR) \ + EXPATLIBPATH=$(HOST_DIR)/lib \ + EXPATINCPATH=$(HOST_DIR)/include \ + INSTALLDIRS=site \ + INSTALLSITELIB=$(HOST_DIR)/lib/perl \ + INSTALLSITEARCH=$(HOST_DIR)/lib/perl \ + ) +endef + +define HOST_LIBXML_PARSER_PERL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_LIBXML_PARSER_PERL_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/libxml2/0001-CVE-2017-8872.patch b/buildroot/package/libxml2/0001-CVE-2017-8872.patch new file mode 100644 index 0000000..b7a75c1 --- /dev/null +++ b/buildroot/package/libxml2/0001-CVE-2017-8872.patch @@ -0,0 +1,33 @@ +From 8b329effb610f4138e4e680f6a6867570f6d6179 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 9 Feb 2018 10:58:11 +0200 +Subject: [PATCH] CVE-2017-8872 + +Taken from attachment to upstream bug report comment #9. + +https://bugzilla.gnome.org/show_bug.cgi?id=775200#c9 +https://bugzilla.gnome.org/attachment.cgi?id=366193&action=diff + +Signed-off-by: Baruch Siach +--- + parser.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/parser.c b/parser.c +index 1c5e036ea265..025111067ae8 100644 +--- a/parser.c ++++ b/parser.c +@@ -12467,6 +12467,10 @@ xmlHaltParser(xmlParserCtxtPtr ctxt) { + ctxt->input->cur = BAD_CAST""; + ctxt->input->base = ctxt->input->cur; + ctxt->input->end = ctxt->input->cur; ++ if (ctxt->input->buf) ++ xmlBufEmpty (ctxt->input->buf->buffer); ++ else ++ ctxt->input->length = 0; + } + } + +-- +2.15.1 + diff --git a/buildroot/package/libxml2/Config.in b/buildroot/package/libxml2/Config.in new file mode 100644 index 0000000..ebd63fe --- /dev/null +++ b/buildroot/package/libxml2/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBXML2 + bool "libxml2" + help + XML C Parser + + http://xmlsoft.org/ diff --git a/buildroot/package/libxml2/libxml2.hash b/buildroot/package/libxml2/libxml2.hash new file mode 100644 index 0000000..f7e046b --- /dev/null +++ b/buildroot/package/libxml2/libxml2.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 f63c5e7d30362ed28b38bfa1ac6313f9a80230720b7fb6c80575eeab3ff5900c libxml2-2.9.7.tar.gz +# License files, locally calculated +sha256 c5c63674f8a83c4d2e385d96d1c670a03cb871ba2927755467017317878574bd COPYING diff --git a/buildroot/package/libxml2/libxml2.mk b/buildroot/package/libxml2/libxml2.mk new file mode 100644 index 0000000..a6285a6 --- /dev/null +++ b/buildroot/package/libxml2/libxml2.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# libxml2 +# +################################################################################ + +LIBXML2_VERSION = 2.9.7 +LIBXML2_SITE = ftp://xmlsoft.org/libxml2 +LIBXML2_INSTALL_STAGING = YES +LIBXML2_LICENSE = MIT +LIBXML2_LICENSE_FILES = COPYING +LIBXML2_CONFIG_SCRIPTS = xml2-config + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +LIBXML2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mxgot" +endif + +LIBXML2_CONF_OPTS = --with-gnu-ld --without-python --without-debug + +HOST_LIBXML2_DEPENDENCIES = host-pkgconf +LIBXML2_DEPENDENCIES = host-pkgconf + +HOST_LIBXML2_CONF_OPTS = --without-zlib --without-lzma --without-python + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LIBXML2_DEPENDENCIES += zlib +LIBXML2_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr +else +LIBXML2_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +LIBXML2_DEPENDENCIES += xz +LIBXML2_CONF_OPTS += --with-lzma +else +LIBXML2_CONF_OPTS += --without-lzma +endif + +LIBXML2_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +ifeq ($(BR2_ENABLE_LOCALE)$(BR2_PACKAGE_LIBICONV),y) +LIBXML2_CONF_OPTS += --with-iconv +else +LIBXML2_CONF_OPTS += --without-iconv +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# libxml2 for the host +LIBXML2_HOST_BINARY = $(HOST_DIR)/bin/xmllint diff --git a/buildroot/package/libxmlpp/Config.in b/buildroot/package/libxmlpp/Config.in new file mode 100644 index 0000000..7244586 --- /dev/null +++ b/buildroot/package/libxmlpp/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBXMLPP + bool "libxml++" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # glibmm -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glibmm -> libglib2 + depends on BR2_USE_MMU # glibmm -> libglib2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_GLIBMM + help + libxml++ is a C++ wrapper for the libxml XML parser library. + + http://libxmlplusplus.sourceforge.net/ + +comment "libxml++ needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + ||!BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU diff --git a/buildroot/package/libxmlpp/libxmlpp.hash b/buildroot/package/libxmlpp/libxmlpp.hash new file mode 100644 index 0000000..5fc7f5b --- /dev/null +++ b/buildroot/package/libxmlpp/libxmlpp.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/libxml++/2.40/libxml++-2.40.1.sha256sum +sha256 4ad4abdd3258874f61c2e2a41d08e9930677976d303653cd1670d3e9f35463e9 libxml++-2.40.1.tar.xz diff --git a/buildroot/package/libxmlpp/libxmlpp.mk b/buildroot/package/libxmlpp/libxmlpp.mk new file mode 100644 index 0000000..d0f6329 --- /dev/null +++ b/buildroot/package/libxmlpp/libxmlpp.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# libxmlpp +# +################################################################################ + +LIBXMLPP_VERSION_MAJOR = 2.40 +LIBXMLPP_VERSION = $(LIBXMLPP_VERSION_MAJOR).1 +LIBXMLPP_LICENSE = LGPL-2.1 (library), LGPL-2.0+ (examples) +LIBXMLPP_LICENSE_FILES = COPYING +LIBXMLPP_SOURCE = libxml++-$(LIBXMLPP_VERSION).tar.xz +LIBXMLPP_SITE = http://ftp.gnome.org/pub/GNOME/sources/libxml++/$(LIBXMLPP_VERSION_MAJOR) +LIBXMLPP_INSTALL_STAGING = YES +LIBXMLPP_DEPENDENCIES = libxml2 glibmm host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/libxmlrpc/0001-fix-gennmtab-build.patch b/buildroot/package/libxmlrpc/0001-fix-gennmtab-build.patch new file mode 100644 index 0000000..e98e5cb --- /dev/null +++ b/buildroot/package/libxmlrpc/0001-fix-gennmtab-build.patch @@ -0,0 +1,25 @@ +Fix build of host tool + +genmtab is a tool that needs to be built for the host as it is used +during the compilation process of libxmlrpc. Its Makefile needs a bit +of tuning to use the conventional CC_FOR_BUILD, CFLAGS_FOR_BUILD and +LDFLAGS_FOR_BUILD variables. + +Signed-off-by: Thomas Petazzoni + +Index: b/lib/expat/gennmtab/Makefile +=================================================================== +--- a/lib/expat/gennmtab/Makefile ++++ b/lib/expat/gennmtab/Makefile +@@ -40,9 +40,9 @@ + dep: dep-common + + gennmtab.o:%.o:%.c +- $(BUILDTOOL_CC) -c $< -o $@ $(CFLAGS_ALL) $(INCLUDES) ++ $(CC_FOR_BUILD) -c $< -o $@ $(CFLAGS_FOR_BUILD) $(INCLUDES) + + gennmtab:%:%.o +- $(BUILDTOOL_CCLD) -o $@ $(LDFLAGS_ALL) $^ ++ $(CC_FOR_BUILD) -o $@ $(LDFLAGS_FOR_BUILD) $^ + + include depend.mk diff --git a/buildroot/package/libxmlrpc/0002-config.mk.in-fix-shared-libraries-build-for-uClibc.patch b/buildroot/package/libxmlrpc/0002-config.mk.in-fix-shared-libraries-build-for-uClibc.patch new file mode 100644 index 0000000..5970df5 --- /dev/null +++ b/buildroot/package/libxmlrpc/0002-config.mk.in-fix-shared-libraries-build-for-uClibc.patch @@ -0,0 +1,27 @@ +From 5d68179a54b0a34d989722dcbe3b6eb962feb27d Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Tue, 23 Dec 2014 16:04:18 +0100 +Subject: [PATCH] config.mk.in: fix shared libraries build for uClibc + +Signed-off-by: Romain Naour +--- + config.mk.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/config.mk.in b/config.mk.in +index c5d4160..45461cf 100644 +--- a/config.mk.in ++++ b/config.mk.in +@@ -166,7 +166,8 @@ shliblefn = $(1:%=%.shlibledummy) + # HOST_OS is usually has a version number suffix, e.g. "aix5.3.0.0", so + # we compare based on prefix. + +-ifeq ($(patsubst linux-gnu%,linux-gnu,$(HOST_OS)),linux-gnu) ++# linux-uclibc is also a linux ++ifeq ($(patsubst linux-%,linux-,$(HOST_OS)),linux-) + # Assume linker is GNU Compiler (gcc) + SHARED_LIB_TYPE = unix + MUST_BUILD_SHLIB = Y +-- +1.9.3 + diff --git a/buildroot/package/libxmlrpc/0003-fix-ar-ranlib-handling.patch b/buildroot/package/libxmlrpc/0003-fix-ar-ranlib-handling.patch new file mode 100644 index 0000000..1e58d24 --- /dev/null +++ b/buildroot/package/libxmlrpc/0003-fix-ar-ranlib-handling.patch @@ -0,0 +1,28 @@ +Fix detection of AR and RANLIB + +The configure.in script assumes that ranlib and ar are necessarily +prefixed by ${ac_tool_prefix}, which is the value of --host. However, +it's not necessarily the case. + +So instead, use AC_CHECK_TOOL to check for AR, and AC_PROG_RANLIB to +check for RANLIB. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.in +=================================================================== +--- a/configure.in ++++ b/configure.in +@@ -621,10 +621,8 @@ + BUILDDIR=$(pwd) + AC_SUBST(BUILDDIR) + +-AR=${ac_tool_prefix}ar +-AC_SUBST([AR]) +-RANLIB=${ac_tool_prefix}ranlib +-AC_SUBST([RANLIB]) ++AC_CHECK_TOOL([AR], [ar]) ++AC_PROG_RANLIB + + dnl ======================================================================= + dnl Output our results. diff --git a/buildroot/package/libxmlrpc/0004-use-correct-curl-config.patch b/buildroot/package/libxmlrpc/0004-use-correct-curl-config.patch new file mode 100644 index 0000000..f2f1c55 --- /dev/null +++ b/buildroot/package/libxmlrpc/0004-use-correct-curl-config.patch @@ -0,0 +1,70 @@ +Use correct curl-config program + +Instead of calling directly curl-config in src/Makefile (which ends up +calling the wrong curl-config: the one in the PATH instead of the one +pointed at by the environment variables at configure time), let's +define a CURL_CONFIG variable that contains the path to the proper +curl-config program, and use it where appropriate. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -57,7 +57,7 @@ + TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/xmlrpc_curl_transport + TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/curltransaction + TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/curlmulti +- TRANSPORT_LIBDEP += $(shell curl-config --libs) ++ TRANSPORT_LIBDEP += $(shell $CURL_CONFIG --libs) + TRANSPORT_INCLUDES += -Isrcdir/lib/curl_transport + endif + ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes) +Index: b/config.mk.in +=================================================================== +--- a/config.mk.in ++++ b/config.mk.in +@@ -32,6 +32,7 @@ + LSOCKET = @LSOCKET@ + WININET_LDADD = @WININET_LDADD@ + WININET_LIBDIR = @WININET_LIBDIR@ ++CURL_CONFIG = @CURL_CONFIG@ + CURL_LDADD = @CURL_LDADD@ + CURL_LIBDIR = @CURL_LIBDIR@ + LIBWWW_LDADD = @LIBWWW_LDADD@ +Index: b/configure.in +=================================================================== +--- a/configure.in ++++ b/configure.in +@@ -550,6 +550,8 @@ + dnl So we don't do any check now. If we find out there's a problem with + dnl older Curls, we will revisit that. + ++ AC_SUBST(CURL_CONFIG) ++ + CURL_LDADD=$($CURL_CONFIG --libs) + AC_SUBST(CURL_LDADD) + +Index: b/lib/curl_transport/Makefile +=================================================================== +--- a/lib/curl_transport/Makefile ++++ b/lib/curl_transport/Makefile +@@ -29,7 +29,7 @@ + + $(SRCDIR)/common.mk: srcdir blddir + +-CURL_VERSION := $(shell curl-config --vernum) ++CURL_VERSION := $(shell $(CURL_CONFIG) --vernum) + + # Some time at or before Curl 7.12, became an empty file + # (no-op). Some time after Curl 7.18, ceased to exist. +@@ -43,7 +43,7 @@ + CFLAGS_LOCAL += -DNEED_CURL_TYPES_H + endif + +-CURL_INCLUDES := $(shell curl-config --cflags) ++CURL_INCLUDES := $(shell $(CURL_CONFIG) --cflags) + # We expect that curl-config --cflags just gives us -I options, because + # we need just the -I options for 'make dep'. Plus, it's scary to think + # of what any other compiler flag would do to our compile. diff --git a/buildroot/package/libxmlrpc/Config.in b/buildroot/package/libxmlrpc/Config.in new file mode 100644 index 0000000..d24a791 --- /dev/null +++ b/buildroot/package/libxmlrpc/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LIBXMLRPC + bool "libxmlrpc" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBCURL + help + XML-RPC is a quick-and-easy way to make procedure calls over + the Internet. It converts the procedure call into an XML + document, sends it to a remote server using HTTP, and gets + back the response as XML. + + http://xmlrpc-c.sourceforge.net/ + +comment "libxmlrpc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libxmlrpc/libxmlrpc.hash b/buildroot/package/libxmlrpc/libxmlrpc.hash new file mode 100644 index 0000000..3003622 --- /dev/null +++ b/buildroot/package/libxmlrpc/libxmlrpc.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d830f3264a832dfe09f629cc64036acfd08121692526d0fabe090f7ff881ce08 xmlrpc-c-1.39.12.tgz diff --git a/buildroot/package/libxmlrpc/libxmlrpc.mk b/buildroot/package/libxmlrpc/libxmlrpc.mk new file mode 100644 index 0000000..80acfb8 --- /dev/null +++ b/buildroot/package/libxmlrpc/libxmlrpc.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# libxmlrpc +# +################################################################################ + +LIBXMLRPC_VERSION = 1.39.12 +LIBXMLRPC_SOURCE = xmlrpc-c-$(LIBXMLRPC_VERSION).tgz +LIBXMLRPC_SITE = http://downloads.sourceforge.net/project/xmlrpc-c/Xmlrpc-c%20Super%20Stable/$(LIBXMLRPC_VERSION) +LIBXMLRPC_LICENSE = BSD-3-Clause (xml-rpc main code and abyss web server), BSD like (lib/expat), Python 1.5.2 license (parts of xmlrpc_base64.c) +LIBXMLRPC_LICENSE_FILES = doc/COPYING +LIBXMLRPC_INSTALL_STAGING = YES +LIBXMLRPC_DEPENDENCIES = libcurl host-autoconf +LIBXMLRPC_CONFIG_SCRIPTS = xmlrpc-c-config +LIBXMLRPC_MAKE = $(MAKE1) + +# Using autoconf, not automake, so we cannot use AUTORECONF = YES. +define LIBXMLRPC_RUN_AUTOCONF + cd $(@D); $(HOST_DIR)/bin/autoconf +endef + +LIBXMLRPC_PRE_CONFIGURE_HOOKS += LIBXMLRPC_RUN_AUTOCONF + +LIBXMLRPC_CONF_OPTS = \ + $(if $(BR2_USE_WCHAR),,ac_cv_header_wchar_h=no) \ + $(if $(BR2_INSTALL_LIBSTDCPP),,--disable-cplusplus) \ + have_curl_config=$(STAGING_DIR)/usr/bin/curl-config \ + CURL_CONFIG=$(STAGING_DIR)/usr/bin/curl-config + +# Our package uses autoconf, but not automake, so we need to pass +# those variables at compile time as well. +LIBXMLRPC_MAKE_ENV = \ + CC_FOR_BUILD="$(HOSTCC)" \ + LD_FOR_BUILD="$(HOSTLD)" \ + CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ + LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" + +ifeq ($(BR2_STATIC_LIBS),y) +LIBXMLRPC_STATIC_OPTS = SHARED_LIB_TYPE=NONE MUST_BUILD_SHLIB=N +endif + +LIBXMLRPC_MAKE_OPTS = $(LIBXMLRPC_STATIC_OPTS) +LIBXMLRPC_INSTALL_STAGING_OPTS = $(LIBXMLRPC_STATIC_OPTS) \ + DESTDIR=$(STAGING_DIR) install +LIBXMLRPC_INSTALL_TARGET_OPTS = $(LIBXMLRPC_STATIC_OPTS) \ + DESTDIR=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/buildroot/package/libxslt/Config.in b/buildroot/package/libxslt/Config.in new file mode 100644 index 0000000..dfe5b99 --- /dev/null +++ b/buildroot/package/libxslt/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LIBXSLT + bool "libxslt" + select BR2_PACKAGE_LIBXML2 + help + Install the xslt library which is used + to transform XML files to other XML files. + + XSLT is designed for use as part of XSL, + which is a stylesheet language for XML. + In addition to XSLT, XSL includes an XML vocabulary + for specifying formatting. + XSL specifies the styling of an XML document by using XSLT + to describe how the document is transformed into another + XML document that uses the formatting vocabulary. + + http://xmlsoft.org/xslt/ diff --git a/buildroot/package/libxslt/libxslt.hash b/buildroot/package/libxslt/libxslt.hash new file mode 100644 index 0000000..f28150b --- /dev/null +++ b/buildroot/package/libxslt/libxslt.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 526ecd0abaf4a7789041622c3950c0e7f2c4c8835471515fd77eec684a355460 libxslt-1.1.32.tar.gz + +# Hash for license file: +sha256 7e48e290b6bfccc2ec1b297023a1d77f2fd87417f71fbb9f50aabef40a851819 COPYING diff --git a/buildroot/package/libxslt/libxslt.mk b/buildroot/package/libxslt/libxslt.mk new file mode 100644 index 0000000..f05bc5a --- /dev/null +++ b/buildroot/package/libxslt/libxslt.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# libxslt +# +################################################################################ + +LIBXSLT_VERSION = 1.1.32 +LIBXSLT_SITE = ftp://xmlsoft.org/libxslt +LIBXSLT_INSTALL_STAGING = YES +LIBXSLT_LICENSE = MIT +LIBXSLT_LICENSE_FILES = COPYING + +LIBXSLT_CONF_OPTS = \ + --with-gnu-ld \ + --without-debug \ + --without-python +LIBXSLT_CONFIG_SCRIPTS = xslt-config +LIBXSLT_DEPENDENCIES = host-pkgconf libxml2 + +# GCC bug with Os/O2/O3, PR77311 +# error: unable to find a register to spill in class 'CCREGS' +ifeq ($(BR2_bfin),y) +LIBXSLT_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O1" +endif + +# If we have enabled libgcrypt then use it, else disable crypto support. +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +LIBXSLT_DEPENDENCIES += libgcrypt +LIBXSLT_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +else +LIBXSLT_CONF_OPTS += --without-crypto +endif + +HOST_LIBXSLT_CONF_OPTS = --without-debug --without-python --without-crypto + +HOST_LIBXSLT_DEPENDENCIES = host-pkgconf host-libxml2 + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/libyaml/Config.in b/buildroot/package/libyaml/Config.in new file mode 100644 index 0000000..00a48b2 --- /dev/null +++ b/buildroot/package/libyaml/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LIBYAML + bool "libyaml" + help + LibYAML is a YAML 1.1 parser and emitter written in C. + + http://pyyaml.org/wiki/LibYAML diff --git a/buildroot/package/libyaml/libyaml.hash b/buildroot/package/libyaml/libyaml.hash new file mode 100644 index 0000000..44b04a3 --- /dev/null +++ b/buildroot/package/libyaml/libyaml.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8088e457264a98ba451a90b8661fcb4f9d6f478f7265d48322a196cec2480729 yaml-0.1.7.tar.gz diff --git a/buildroot/package/libyaml/libyaml.mk b/buildroot/package/libyaml/libyaml.mk new file mode 100644 index 0000000..bc8d695 --- /dev/null +++ b/buildroot/package/libyaml/libyaml.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# libyaml +# +################################################################################ + +LIBYAML_VERSION = 0.1.7 +LIBYAML_SOURCE = yaml-$(LIBYAML_VERSION).tar.gz +LIBYAML_SITE = http://pyyaml.org/download/libyaml +LIBYAML_INSTALL_STAGING = YES +LIBYAML_LICENSE = MIT +LIBYAML_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/buildroot/package/libyuv/0001-i386-sse2.patch b/buildroot/package/libyuv/0001-i386-sse2.patch new file mode 100644 index 0000000..b8ecb34 --- /dev/null +++ b/buildroot/package/libyuv/0001-i386-sse2.patch @@ -0,0 +1,16 @@ +Fix compilation on non-sse2 platforms + +Signed-off-by: Bernd Kuhls + +diff -uNr libyuv-1411.org/include/libyuv/scale_row.h libyuv-1411/include/libyuv/scale_row.h +--- libyuv-1411.org/include/libyuv/scale_row.h 2015-05-22 23:39:21.000000000 +0200 ++++ libyuv-1411/include/libyuv/scale_row.h 2015-05-25 12:35:17.000000000 +0200 +@@ -33,7 +33,7 @@ + + // The following are available on all x86 platforms: + #if !defined(LIBYUV_DISABLE_X86) && \ +- (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) ++ (defined(_M_IX86) || defined(__x86_64__) || (defined(__i386__) && defined(__SSE2__))) + #define HAS_FIXEDDIV1_X86 + #define HAS_FIXEDDIV_X86 + #define HAS_SCALEADDROWS_SSE2 diff --git a/buildroot/package/libyuv/0002-aarch64.patch b/buildroot/package/libyuv/0002-aarch64.patch new file mode 100644 index 0000000..c783cff --- /dev/null +++ b/buildroot/package/libyuv/0002-aarch64.patch @@ -0,0 +1,36 @@ +Add missing source files for aarch64. + +Signed-off-by: Bernd Kuhls + +diff -uNr libyuv-1ebf86795cb213a37f06eb1ef3713cff080568ea.org/CMakeLists.txt libyuv-1ebf86795cb213a37f06eb1ef3713cff080568ea/CMakeLists.txt +--- libyuv-1ebf86795cb213a37f06eb1ef3713cff080568ea.org/CMakeLists.txt 2015-06-20 00:04:06.000000000 +0200 ++++ libyuv-1ebf86795cb213a37f06eb1ef3713cff080568ea/CMakeLists.txt 2015-09-07 19:29:42.898034988 +0200 +@@ -14,6 +14,7 @@ + ${ly_src_dir}/compare.cc + ${ly_src_dir}/compare_common.cc + ${ly_src_dir}/compare_neon.cc ++ ${ly_src_dir}/compare_neon64.cc + ${ly_src_dir}/compare_gcc.cc + ${ly_src_dir}/compare_win.cc + ${ly_src_dir}/convert.cc +@@ -31,10 +32,12 @@ + ${ly_src_dir}/rotate_argb.cc + ${ly_src_dir}/rotate_mips.cc + ${ly_src_dir}/rotate_neon.cc ++ ${ly_src_dir}/rotate_neon64.cc + ${ly_src_dir}/row_any.cc + ${ly_src_dir}/row_common.cc + ${ly_src_dir}/row_mips.cc + ${ly_src_dir}/row_neon.cc ++ ${ly_src_dir}/row_neon64.cc + ${ly_src_dir}/row_gcc.cc + ${ly_src_dir}/row_win.cc + ${ly_src_dir}/scale.cc +@@ -43,6 +46,7 @@ + ${ly_src_dir}/scale_common.cc + ${ly_src_dir}/scale_mips.cc + ${ly_src_dir}/scale_neon.cc ++ ${ly_src_dir}/scale_neon64.cc + ${ly_src_dir}/scale_gcc.cc + ${ly_src_dir}/scale_win.cc + ${ly_src_dir}/video_common.cc diff --git a/buildroot/package/libyuv/Config.in b/buildroot/package/libyuv/Config.in new file mode 100644 index 0000000..355ceb0 --- /dev/null +++ b/buildroot/package/libyuv/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIBYUV + bool "libyuv" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + help + libyuv is an open source project that includes YUV scaling + and conversion functionality. + + https://chromium.googlesource.com/libyuv/libyuv/ + +comment "libyuv needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/buildroot/package/libyuv/libyuv.hash b/buildroot/package/libyuv/libyuv.hash new file mode 100644 index 0000000..0361ce6 --- /dev/null +++ b/buildroot/package/libyuv/libyuv.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 ec31df87fc42153723e9ca65a6d71b0993504c3de5f925e79464c93b7ef66094 libyuv-1ebf86795cb213a37f06eb1ef3713cff080568ea.tar.gz diff --git a/buildroot/package/libyuv/libyuv.mk b/buildroot/package/libyuv/libyuv.mk new file mode 100644 index 0000000..1abe126 --- /dev/null +++ b/buildroot/package/libyuv/libyuv.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# libyuv +# +################################################################################ + +LIBYUV_VERSION = 1ebf86795cb213a37f06eb1ef3713cff080568ea +# we use the FreeSwitch fork because there is currently no alternative +# for https://chromium.googlesource.com/libyuv/libyuv which will be +# deactivated in 2015. +LIBYUV_SITE = https://freeswitch.org/stash/scm/sd/libyuv.git +LIBYUV_SITE_METHOD = git +LIBYUV_LICENSE = BSD-3-Clause +LIBYUV_LICENSE_FILES = LICENSE +LIBYUV_INSTALL_STAGING = YES +LIBYUV_DEPENDENCIES = $(if $(BR2_PACKAGE_JPEG),jpeg) + +$(eval $(cmake-package)) diff --git a/buildroot/package/libzip/0001-Use-cmake-E-tar-to-extract-test-data.patch b/buildroot/package/libzip/0001-Use-cmake-E-tar-to-extract-test-data.patch new file mode 100644 index 0000000..7d40111 --- /dev/null +++ b/buildroot/package/libzip/0001-Use-cmake-E-tar-to-extract-test-data.patch @@ -0,0 +1,40 @@ +From e9244b207c0fc883ff84c1fc46602feb1e2b0347 Mon Sep 17 00:00:00 2001 +From: Thomas Klausner +Date: Wed, 3 Jan 2018 11:41:57 +0100 +Subject: [PATCH] Use 'cmake -E tar' to extract test data. + +For easier cross-compilation (Github issue #21). + +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit e9244b207c0 + + regress/CMakeLists.txt | 12 +++--------- + 1 file changed, 3 insertions(+), 9 deletions(-) + +diff --git a/regress/CMakeLists.txt b/regress/CMakeLists.txt +index e2ce232c774a..3a0d4f77dcf6 100644 +--- a/regress/CMakeLists.txt ++++ b/regress/CMakeLists.txt +@@ -51,15 +51,9 @@ ADD_CUSTOM_TARGET(cleanup + ADD_CUSTOM_TARGET(testinput + ALL + VERBATIM +- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 0 > manyfiles.zip +- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 1 > manyfiles-133000.zip +- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 2 > manyfiles-65536.zip +- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 3 > manyfiles-zip64-modulo.zip +- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 4 > manyfiles-zip64.zip +- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 5 > manyfiles-fewer.zip +- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip cat 6 > manyfiles-more.zip +- COMMAND ziptool ${CMAKE_CURRENT_SOURCE_DIR}/bigzero-zip.zip cat 0 > bigzero.zip +- DEPENDS ziptool ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip ${CMAKE_CURRENT_SOURCE_DIR}/bigzero-zip.zip ++ COMMAND cmake -E tar x ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip ++ COMMAND cmake -E tar x ${CMAKE_CURRENT_SOURCE_DIR}/bigzero-zip.zip ++ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/manyfiles-zip.zip ${CMAKE_CURRENT_SOURCE_DIR}/bigzero-zip.zip + ) + + SET_PROPERTY(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES +-- +2.15.1 + diff --git a/buildroot/package/libzip/Config.in b/buildroot/package/libzip/Config.in new file mode 100644 index 0000000..f69dd0d --- /dev/null +++ b/buildroot/package/libzip/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBZIP + bool "libzip" + depends on !BR2_STATIC_LIBS # dlsym() + select BR2_PACKAGE_ZLIB + help + C library for reading, creating, and modifying zip archives. + This package also contains zipcmp, ziptorrent and zipmerge + utilities. + + http://www.nih.at/libzip/ + +comment "libzip needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/libzip/libzip.hash b/buildroot/package/libzip/libzip.hash new file mode 100644 index 0000000..0eeb313 --- /dev/null +++ b/buildroot/package/libzip/libzip.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e508aba025f5f94b267d5120fc33761bcd98440ebe49dbfe2ed3df3afeacc7b1 libzip-1.4.0.tar.xz +sha256 3c964a7eb1abeb6bd6f40035ed3a014728ff8c5437f107dcf24fbbfab16e227e LICENSE diff --git a/buildroot/package/libzip/libzip.mk b/buildroot/package/libzip/libzip.mk new file mode 100644 index 0000000..537aa1d --- /dev/null +++ b/buildroot/package/libzip/libzip.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# libzip +# +################################################################################ + +LIBZIP_VERSION = 1.4.0 +LIBZIP_SITE = http://www.nih.at/libzip +LIBZIP_SOURCE = libzip-$(LIBZIP_VERSION).tar.xz +LIBZIP_LICENSE = BSD-3-Clause +LIBZIP_LICENSE_FILES = LICENSE +LIBZIP_INSTALL_STAGING = YES +LIBZIP_DEPENDENCIES = zlib + +ifeq ($(BR2_PACKAGE_BZIP2),y) +LIBZIP_DEPENDENCIES += bzip2 +else +LIBZIP_CONF_OPTS += -DCMAKE_DISABLE_FIND_PACKAGE_BZIP2=TRUE +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/libzlib/libzlib.hash b/buildroot/package/libzlib/libzlib.hash new file mode 100644 index 0000000..e3736b1 --- /dev/null +++ b/buildroot/package/libzlib/libzlib.hash @@ -0,0 +1,4 @@ +# From http://www.zlib.net/ +sha256 4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066 zlib-1.2.11.tar.xz +# License files, locally calculated +sha256 7960b6b1cc63e619abb77acaea5427159605afee8c8b362664f4effc7d7f7d15 README diff --git a/buildroot/package/libzlib/libzlib.mk b/buildroot/package/libzlib/libzlib.mk new file mode 100644 index 0000000..eea0c12 --- /dev/null +++ b/buildroot/package/libzlib/libzlib.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# libzlib +# +################################################################################ + +LIBZLIB_VERSION = 1.2.11 +LIBZLIB_SOURCE = zlib-$(LIBZLIB_VERSION).tar.xz +LIBZLIB_SITE = http://www.zlib.net +LIBZLIB_LICENSE = Zlib +LIBZLIB_LICENSE_FILES = README +LIBZLIB_INSTALL_STAGING = YES +LIBZLIB_PROVIDES = zlib + +# It is not possible to build only a shared version of zlib, so we build both +# shared and static, unless we only want the static libs, and we eventually +# selectively remove what we do not want +ifeq ($(BR2_STATIC_LIBS),y) +LIBZLIB_PIC = +LIBZLIB_SHARED = --static +else +LIBZLIB_PIC = -fPIC +LIBZLIB_SHARED = --shared +endif + +define LIBZLIB_CONFIGURE_CMDS + (cd $(@D); rm -rf config.cache; \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) $(LIBZLIB_PIC)" \ + ./configure \ + $(LIBZLIB_SHARED) \ + --prefix=/usr \ + ) +endef + +define HOST_LIBZLIB_CONFIGURE_CMDS + (cd $(@D); rm -rf config.cache; \ + $(HOST_CONFIGURE_ARGS) \ + $(HOST_CONFIGURE_OPTS) \ + ./configure \ + --prefix="$(HOST_DIR)" \ + --sysconfdir="$(HOST_DIR)/etc" \ + ) +endef + +define LIBZLIB_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) +endef + +define HOST_LIBZLIB_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) +endef + +define LIBZLIB_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) LDCONFIG=true install +endef + +define LIBZLIB_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(TARGET_DIR) LDCONFIG=true install +endef + +# We don't care removing the .a from target, since it not used at link +# time to build other packages, and it is anyway removed later before +# assembling the filesystem images anyway. +ifeq ($(BR2_SHARED_LIBS),y) +define LIBZLIB_RM_STATIC_STAGING + rm -f $(STAGING_DIR)/usr/lib/libz.a +endef +LIBZLIB_POST_INSTALL_STAGING_HOOKS += LIBZLIB_RM_STATIC_STAGING +endif + +define HOST_LIBZLIB_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) LDCONFIG=true install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/lightning/Config.in b/buildroot/package/lightning/Config.in new file mode 100644 index 0000000..79f7f86 --- /dev/null +++ b/buildroot/package/lightning/Config.in @@ -0,0 +1,32 @@ +comment "lightning needs a toolchain w/ dynamic library" + depends on BR2_sparc || BR2_i386 || BR2_x86_64 || BR2_mips || \ + BR2_mipsel || BR2_arm || BR2_powerpc + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_LIGHTNING + bool "lightning" + depends on BR2_sparc || BR2_i386 || BR2_x86_64 || BR2_mips || \ + BR2_mipsel || BR2_arm || BR2_powerpc + depends on !BR2_STATIC_LIBS + help + GNU lightning is a library that generates + assembly language code at run-time. + + https://www.gnu.org/software/lightning/ + +if BR2_PACKAGE_LIGHTNING + +config BR2_PACKAGE_LIGHTNING_DISASSEMBLER + bool "enable disassembler" + depends on !BR2_nios2 # binutils + depends on BR2_USE_WCHAR # binutils + select BR2_PACKAGE_BINUTILS + select BR2_PACKAGE_ZLIB + help + Enable the GNU lightning disassembler. + +comment "lightning disassembler needs a toolchain w/ wchar" + depends on !BR2_nios2 + depends on !BR2_USE_WCHAR + +endif diff --git a/buildroot/package/lightning/lightning.hash b/buildroot/package/lightning/lightning.hash new file mode 100644 index 0000000..8e78ef4 --- /dev/null +++ b/buildroot/package/lightning/lightning.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 9b289ed1c977602f9282da507db2e980dcfb5207ee8bd2501536a6852a157a69 lightning-2.1.2.tar.gz +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LESSER diff --git a/buildroot/package/lightning/lightning.mk b/buildroot/package/lightning/lightning.mk new file mode 100644 index 0000000..b939461 --- /dev/null +++ b/buildroot/package/lightning/lightning.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# lightning +# +################################################################################ + +LIGHTNING_VERSION = 2.1.2 +LIGHTNING_SITE = $(BR2_GNU_MIRROR)/lightning +LIGHTNING_LICENSE = LGPL-3.0+ +LIGHTNING_LICENSE_FILES = COPYING.LESSER +LIGHTNING_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_LIGHTNING_DISASSEMBLER),y) +LIGHTNING_DEPENDENCIES += binutils zlib +LIGHTNING_CONF_OPTS += --enable-disassembler +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/lighttpd/0001-Fix-default-config-file.patch b/buildroot/package/lighttpd/0001-Fix-default-config-file.patch new file mode 100644 index 0000000..ada1589 --- /dev/null +++ b/buildroot/package/lighttpd/0001-Fix-default-config-file.patch @@ -0,0 +1,100 @@ +Modify the default lighttpd configuration file to have one a starting conf + + * Changed the log path to /var/log and logs filenames + * Disable IPv6 + * Do not setuid to a user that doesn't exist on the system + * Disable pdf ranges fix for Adobe Reader since it uses regex and we + don't always have pcre support + * Change the network backend to writev since linux-sendfile fails on buildroot + +Signed-off-by: Maxime Ripard +Signed-off-by: Simon Dawson +[Gustavo: update for 1.4.37] +Signed-off-by: Gustavo Zacarias + +diff -Nura lighttpd-1.4.37.orig/doc/config/conf.d/access_log.conf lighttpd-1.4.37/doc/config/conf.d/access_log.conf +--- lighttpd-1.4.37.orig/doc/config/conf.d/access_log.conf 2015-09-01 14:38:48.684673663 -0300 ++++ lighttpd-1.4.37/doc/config/conf.d/access_log.conf 2015-09-01 14:38:53.975855142 -0300 +@@ -9,7 +9,7 @@ + ## + ## Default access log. + ## +-accesslog.filename = log_root + "/access.log" ++accesslog.filename = log_root + "/lighttpd-access.log" + + ## + ## The default format produces CLF compatible output. +diff -Nura lighttpd-1.4.37.orig/doc/config/lighttpd.conf lighttpd-1.4.37/doc/config/lighttpd.conf +--- lighttpd-1.4.37.orig/doc/config/lighttpd.conf 2015-09-01 14:38:48.684673663 -0300 ++++ lighttpd-1.4.37/doc/config/lighttpd.conf 2015-09-01 14:39:40.256442492 -0300 +@@ -13,8 +13,8 @@ + ## if you add a variable here. Add the corresponding variable in the + ## chroot example aswell. + ## +-var.log_root = "/var/log/lighttpd" +-var.server_root = "/srv/www" ++var.log_root = "/var/log" ++var.server_root = "/var/www" + var.state_dir = "/var/run" + var.home_dir = "/var/lib/lighttpd" + var.conf_dir = "/etc/lighttpd" +@@ -90,7 +90,7 @@ + ## + ## Use IPv6? + ## +-server.use-ipv6 = "enable" ++# server.use-ipv6 = "enable" + + ## + ## bind to a specific IP +@@ -101,8 +101,8 @@ + ## Run as a different username/groupname. + ## This requires root permissions during startup. + ## +-server.username = "lighttpd" +-server.groupname = "lighttpd" ++server.username = "www-data" ++server.groupname = "www-data" + + ## + ## enable core files. +@@ -112,7 +112,7 @@ + ## + ## Document root + ## +-server.document-root = server_root + "/htdocs" ++server.document-root = server_root + + ## + ## The value for the "Server:" response field. +@@ -138,7 +138,7 @@ + ## + ## Path to the error log file + ## +-server.errorlog = log_root + "/error.log" ++server.errorlog = log_root + "/lighttpd-error.log" + + ## + ## If you want to log to syslog you have to unset the +@@ -188,7 +188,7 @@ + ## sendfile - is recommended for small files. + ## writev - is recommended for sending many large files + ## +-server.network-backend = "sendfile" ++server.network-backend = "writev" + + ## + ## As lighttpd is a single-threaded server, its main resource limit is +@@ -311,9 +311,9 @@ + ## disable range requests for pdf files + ## workaround for a bug in the Acrobat Reader plugin. + ## +-$HTTP["url"] =~ "\.pdf$" { +- server.range-requests = "disable" +-} ++# $HTTP["url"] =~ "\.pdf$" { ++# server.range-requests = "disable" ++# } + + ## + ## url handling modules (rewrite, redirect) diff --git a/buildroot/package/lighttpd/Config.in b/buildroot/package/lighttpd/Config.in new file mode 100644 index 0000000..383c10f --- /dev/null +++ b/buildroot/package/lighttpd/Config.in @@ -0,0 +1,60 @@ +comment "lighttpd needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_LIGHTTPD + bool "lighttpd" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + help + lighttpd a secure, fast, compliant and very flexible + web-server which has been optimized for high-performance + environments. It has a very low memory footprint compared to + other webservers and takes care of cpu-load. Its advanced + feature-set (FastCGI, CGI, Auth, Output-Compression, + URL-Rewriting and many more) make lighttpd the perfect + webserver-software for every server that is suffering load + problems. + + http://www.lighttpd.net/ + +if BR2_PACKAGE_LIGHTTPD + +config BR2_PACKAGE_LIGHTTPD_OPENSSL + bool "openssl support" + select BR2_PACKAGE_OPENSSL + help + Enable OpenSSL support for lighttpd. + +config BR2_PACKAGE_LIGHTTPD_ZLIB + bool "zlib support" + select BR2_PACKAGE_ZLIB + help + Enable zlib support for lighttpd mod_compress. + +config BR2_PACKAGE_LIGHTTPD_BZIP2 + bool "bzip2 support" + select BR2_PACKAGE_BZIP2 + help + Enable bzip2 support for lighttpd mod_compress. + +config BR2_PACKAGE_LIGHTTPD_PCRE + bool "pcre support" + select BR2_PACKAGE_PCRE + help + Enable PCRE support. Needed to support mod_rewrite + +config BR2_PACKAGE_LIGHTTPD_WEBDAV + bool "webdav support" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_SQLITE + help + Enable webdav support. Needed to support mod_webdav + +config BR2_PACKAGE_LIGHTTPD_LUA + bool "lua support" + depends on BR2_PACKAGE_LUA + help + Enable Lua support. Needed to support mod_magnet + +endif diff --git a/buildroot/package/lighttpd/S50lighttpd b/buildroot/package/lighttpd/S50lighttpd new file mode 100644 index 0000000..b3518cd --- /dev/null +++ b/buildroot/package/lighttpd/S50lighttpd @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Starts lighttpd. +# +NAME=lighttpd +DAEMON=/usr/sbin/$NAME +PID_FILE="/var/run/$NAME.pid" +CONF_FILE="/etc/$NAME/$NAME.conf" + +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +start() { + printf "Starting lighttpd: " + start-stop-daemon -S -q -p $PID_FILE --exec $DAEMON -- -f $CONF_FILE + echo "OK" +} +stop() { + printf "Stopping lighttpd: " + start-stop-daemon -K -q -p $PID_FILE + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/buildroot/package/lighttpd/lighttpd.hash b/buildroot/package/lighttpd/lighttpd.hash new file mode 100644 index 0000000..813d1cd --- /dev/null +++ b/buildroot/package/lighttpd/lighttpd.hash @@ -0,0 +1,4 @@ +# From http://www.lighttpd.net/ +sha256 0f8ad5aac7529d7b948b9d7e8cd0b4a9e177309d85d6bf6516e28e6e40d74f36 lighttpd-1.4.48.tar.xz +# Locally calculated +sha256 5c98cad2fbaf5c5e2562bcbab401a7c557c1bb1bac9914ecc63730925052fb13 COPYING diff --git a/buildroot/package/lighttpd/lighttpd.mk b/buildroot/package/lighttpd/lighttpd.mk new file mode 100644 index 0000000..592f547 --- /dev/null +++ b/buildroot/package/lighttpd/lighttpd.mk @@ -0,0 +1,101 @@ +################################################################################ +# +# lighttpd +# +################################################################################ + +LIGHTTPD_VERSION_MAJOR = 1.4 +LIGHTTPD_VERSION = $(LIGHTTPD_VERSION_MAJOR).48 +LIGHTTPD_SOURCE = lighttpd-$(LIGHTTPD_VERSION).tar.xz +LIGHTTPD_SITE = http://download.lighttpd.net/lighttpd/releases-$(LIGHTTPD_VERSION_MAJOR).x +LIGHTTPD_LICENSE = BSD-3-Clause +LIGHTTPD_LICENSE_FILES = COPYING +LIGHTTPD_DEPENDENCIES = host-pkgconf +LIGHTTPD_CONF_OPTS = \ + --libdir=/usr/lib/lighttpd \ + --libexecdir=/usr/lib + +ifeq ($(BR2_PACKAGE_LIGHTTPD_OPENSSL),y) +LIGHTTPD_DEPENDENCIES += openssl +LIGHTTPD_CONF_OPTS += --with-openssl +else +LIGHTTPD_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_ZLIB),y) +LIGHTTPD_DEPENDENCIES += zlib +LIGHTTPD_CONF_OPTS += --with-zlib +else +LIGHTTPD_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_BZIP2),y) +LIGHTTPD_DEPENDENCIES += bzip2 +LIGHTTPD_CONF_OPTS += --with-bzip2 +else +LIGHTTPD_CONF_OPTS += --without-bzip2 +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_PCRE),y) +LIGHTTPD_CONF_ENV = PCRECONFIG=$(STAGING_DIR)/usr/bin/pcre-config +LIGHTTPD_DEPENDENCIES += pcre +LIGHTTPD_CONF_OPTS += --with-pcre +else +LIGHTTPD_CONF_OPTS += --without-pcre +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_WEBDAV),y) +LIGHTTPD_DEPENDENCIES += libxml2 sqlite +LIGHTTPD_CONF_OPTS += --with-webdav-props +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +LIGHTTPD_CONF_OPTS += --with-webdav-locks +LIGHTTPD_DEPENDENCIES += util-linux +else +LIGHTTPD_CONF_OPTS += --without-webdav-locks +endif +else +LIGHTTPD_CONF_OPTS += --without-webdav-props --without-webdav-locks +endif + +ifeq ($(BR2_PACKAGE_LIGHTTPD_LUA),y) +LIGHTTPD_DEPENDENCIES += lua +LIGHTTPD_CONF_OPTS += --with-lua +else +LIGHTTPD_CONF_OPTS += --without-lua +endif + +define LIGHTTPD_INSTALL_CONFIG + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/lighttpd/conf.d + $(INSTALL) -d -m 0755 $(TARGET_DIR)/var/www + $(INSTALL) -D -m 0644 $(@D)/doc/config/lighttpd.conf \ + $(TARGET_DIR)/etc/lighttpd/lighttpd.conf + $(INSTALL) -D -m 0644 $(@D)/doc/config/modules.conf \ + $(TARGET_DIR)/etc/lighttpd/modules.conf + $(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/access_log.conf \ + $(TARGET_DIR)/etc/lighttpd/conf.d/access_log.conf + $(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/debug.conf \ + $(TARGET_DIR)/etc/lighttpd/conf.d/debug.conf + $(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/dirlisting.conf \ + $(TARGET_DIR)/etc/lighttpd/conf.d/dirlisting.conf + $(INSTALL) -D -m 0644 $(@D)/doc/config/conf.d/mime.conf \ + $(TARGET_DIR)/etc/lighttpd/conf.d/mime.conf +endef + +LIGHTTPD_POST_INSTALL_TARGET_HOOKS += LIGHTTPD_INSTALL_CONFIG + +define LIGHTTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/lighttpd/S50lighttpd \ + $(TARGET_DIR)/etc/init.d/S50lighttpd +endef + +define LIGHTTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/doc/systemd/lighttpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/lighttpd.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/lighttpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/lighttpd.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/linenoise/Config.in b/buildroot/package/linenoise/Config.in new file mode 100644 index 0000000..8e4ab91 --- /dev/null +++ b/buildroot/package/linenoise/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LINENOISE + bool "linenoise" + help + A small self-contained alternative to readline and libedit + + https://github.com/antirez/linenoise diff --git a/buildroot/package/linenoise/linenoise.hash b/buildroot/package/linenoise/linenoise.hash new file mode 100644 index 0000000..7837bc6 --- /dev/null +++ b/buildroot/package/linenoise/linenoise.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f5054a4fe120d43d85427cf58af93e56b9bb80389d507a9bec9b75531a340014 linenoise-1.0.tar.gz diff --git a/buildroot/package/linenoise/linenoise.mk b/buildroot/package/linenoise/linenoise.mk new file mode 100644 index 0000000..f51e287 --- /dev/null +++ b/buildroot/package/linenoise/linenoise.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# linenoise +# +################################################################################ + +LINENOISE_VERSION = 1.0 +LINENOISE_SITE = $(call github,antirez,linenoise,$(LINENOISE_VERSION)) +LINENOISE_LICENSE = BSD-2-Clause +LINENOISE_LICENSE_FILES = LICENSE +LINENOISE_INSTALL_STAGING = YES +# Static library only, nothing to install on target +LINENOISE_INSTALL_TARGET = NO + +define LINENOISE_BUILD_CMDS + cd $(@D); $(TARGET_CC) $(TARGET_CFLAGS) -c linenoise.c + cd $(@D); $(TARGET_AR) rcu liblinenoise.a linenoise.o + cd $(@D); $(TARGET_CC) $(TARGET_LDFLAGS) -o linenoise_example example.c -L. -llinenoise +endef + +define LINENOISE_INSTALL_STAGING_CMDS + $(INSTALL) -m 644 -D $(@D)/linenoise.h $(STAGING_DIR)/usr/include/linenoise.h + $(INSTALL) -m 644 -D $(@D)/liblinenoise.a $(STAGING_DIR)/usr/lib/liblinenoise.a + $(INSTALL) -m 755 -D $(@D)/linenoise_example $(STAGING_DIR)/usr/bin/linenoise_example +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/linknx/0001-src-suncalc.cpp-fix-build-with-gcc-6.x.patch b/buildroot/package/linknx/0001-src-suncalc.cpp-fix-build-with-gcc-6.x.patch new file mode 100644 index 0000000..d204a02 --- /dev/null +++ b/buildroot/package/linknx/0001-src-suncalc.cpp-fix-build-with-gcc-6.x.patch @@ -0,0 +1,42 @@ +From ff52cf04c6fa8b3352544447abf429bfa6000dc8 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 20 Aug 2016 12:13:04 +0200 +Subject: [PATCH] src/suncalc.cpp: fix build with gcc 6.x + +src/suncalc.cpp currently includes , but this causes a build +failure with gcc 6.x, and should be used instead. The build +failure is: + +/home/test/autobuild/run/instance-0/output/host/usr/arc-buildroot-linux-uclibc/include/c++/6.1.1/cmath:101:37: error: '__is_integer' was not declared in this scope + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + ^~~~~~~~~~~~ + +Signed-off-by: Thomas Petazzoni +--- + src/suncalc.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/suncalc.cpp b/src/suncalc.cpp +index ea2366a..b553f96 100644 +--- a/src/suncalc.cpp ++++ b/src/suncalc.cpp +@@ -22,6 +22,8 @@ + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + ++#include ++ + #include "suncalc.h" + #include "services.h" + +@@ -44,7 +46,6 @@ Released to the public domain by Paul Schlyter, December 1992 + + + #include +-#include + #include + #include + #include +-- +2.7.4 + diff --git a/buildroot/package/linknx/Config.in b/buildroot/package/linknx/Config.in new file mode 100644 index 0000000..97fdaff --- /dev/null +++ b/buildroot/package/linknx/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LINKNX + bool "linknx" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # libpthsem + select BR2_PACKAGE_LIBPTHSEM + select BR2_PACKAGE_ARGP_STANDALONE \ + if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + help + Linknx is an automation platform providing high level + functionalities to EIB/KNX installation. + + http://linknx.sourceforge.net/ + https://github.com/linknx/linknx + +comment "linknx needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/linknx/linknx.hash b/buildroot/package/linknx/linknx.hash new file mode 100644 index 0000000..40e2676 --- /dev/null +++ b/buildroot/package/linknx/linknx.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 635b8fbd3477fd7d85a95955b93f327cd5a389db80dc18cdae04de19a3a8a972 linknx-0.0.1.33.tar.gz diff --git a/buildroot/package/linknx/linknx.mk b/buildroot/package/linknx/linknx.mk new file mode 100644 index 0000000..dfabef5 --- /dev/null +++ b/buildroot/package/linknx/linknx.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# linknx +# +################################################################################ + +LINKNX_VERSION = 0.0.1.33 +LINKNX_SITE = $(call github,linknx,linknx,$(LINKNX_VERSION)) +LINKNX_LICENSE = GPL-2.0+ +LINKNX_INSTALL_STAGING = YES +LINKNX_CONF_OPTS = \ + --without-log4cpp \ + --without-pth-test \ + --with-pth=$(STAGING_DIR)/usr \ + --disable-smtp + +LINKNX_DEPENDENCIES = libpthsem \ + $(if $(BR2_PACKAGE_ARGP_STANDALONE),argp-standalone) + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +LINKNX_CONF_OPTS += --with-libcurl=$(STAGING_DIR)/usr +LINKNX_DEPENDENCIES += libcurl +else +LINKNX_CONF_OPTS += --without-libcurl +endif + +ifeq ($(BR2_PACKAGE_LUA),y) +LINKNX_CONF_OPTS += --with-lua +LINKNX_DEPENDENCIES += lua +else +LINKNX_CONF_OPTS += --without-lua +endif + +ifeq ($(BR2_PACKAGE_MYSQL),y) +LINKNX_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr +LINKNX_DEPENDENCIES += mysql +else +LINKNX_CONF_OPTS += --without-mysql +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/links/Config.in b/buildroot/package/links/Config.in new file mode 100644 index 0000000..713f53d --- /dev/null +++ b/buildroot/package/links/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LINKS + bool "links" + depends on BR2_USE_MMU # fork() + help + Graphics and text mode WWW browser (kind of like lynx). + + http://links.twibright.com/ + +if BR2_PACKAGE_LINKS + +config BR2_PACKAGE_LINKS_GRAPHICS + bool "use graphics" + depends on BR2_PACKAGE_DIRECTFB || BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBPNG + help + Enable graphics output for DirectFB or X11. + Otherwise links will be text-mode only. + +endif diff --git a/buildroot/package/links/links.hash b/buildroot/package/links/links.hash new file mode 100644 index 0000000..a63af4c --- /dev/null +++ b/buildroot/package/links/links.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f70d0678ef1c5550953bdc27b12e72d5de86e53b05dd59b0fc7f07c507f244b8 links-2.14.tar.bz2 diff --git a/buildroot/package/links/links.mk b/buildroot/package/links/links.mk new file mode 100644 index 0000000..dd6adb2 --- /dev/null +++ b/buildroot/package/links/links.mk @@ -0,0 +1,97 @@ +################################################################################ +# +# links +# +################################################################################ + +LINKS_VERSION = 2.14 +LINKS_SOURCE = links-$(LINKS_VERSION).tar.bz2 +LINKS_SITE = http://links.twibright.com/download +LINKS_DEPENDENCIES = host-pkgconf +LINKS_LICENSE = GPL-2.0+ +LINKS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LINKS_GRAPHICS),y) +LINKS_CONF_OPTS += --enable-graphics +LINKS_DEPENDENCIES += libpng +ifeq ($(BR2_PACKAGE_XLIB_LIBXT),y) +LINKS_CONF_OPTS += --with-x +LINKS_DEPENDENCIES += xlib_libXt +else +LINKS_CONF_OPTS += --without-x +endif +ifeq ($(BR2_PACKAGE_DIRECTFB),y) +LINKS_CONF_ENV = ac_cv_path_DIRECTFB_CONFIG=$(STAGING_DIR)/usr/bin/directfb-config +ifeq ($(BR2_STATIC_LIBS),y) +LINKS_CONF_ENV += LIBS=-lstdc++ +endif +LINKS_CONF_OPTS += --with-directfb +LINKS_DEPENDENCIES += directfb +else +LINKS_CONF_OPTS += --without-directfb +endif +ifeq ($(BR2_PACKAGE_JPEG),y) +LINKS_CONF_OPTS += --with-libjpeg +LINKS_DEPENDENCIES += jpeg +else +LINKS_CONF_OPTS += --without-libjpeg +endif +ifeq ($(BR2_PACKAGE_LIBRSVG),y) +LINKS_CONF_OPTS += --with-librsvg +LINKS_DEPENDENCIES += librsvg +else +LINKS_CONF_OPTS += --without-librsvg +endif +ifeq ($(BR2_PACKAGE_TIFF),y) +LINKS_CONF_OPTS += --with-libtiff +LINKS_DEPENDENCIES += tiff +else +LINKS_CONF_OPTS += --without-libtiff +endif +else +LINKS_CONF_OPTS += --disable-graphics +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +LINKS_CONF_OPTS += --with-bzip2 +LINKS_DEPENDENCIES += bzip2 +else +LINKS_CONF_OPTS += --without-bzip2 +endif + +ifeq ($(BR2_PACKAGE_GPM),y) +LINKS_CONF_OPTS += --with-gpm +LINKS_DEPENDENCIES += gpm +else +LINKS_CONF_OPTS += --without-gpm +endif + +ifeq ($(BR2_PACKAGE_LIBEVENT),y) +LINKS_CONF_OPTS += --with-libevent +LINKS_DEPENDENCIES += libevent +else +LINKS_CONF_OPTS += --without-libevent +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LINKS_CONF_OPTS += --with-ssl --enable-ssl-pkgconfig +LINKS_DEPENDENCIES += openssl +else +LINKS_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +LINKS_CONF_OPTS += --with-lzma +LINKS_DEPENDENCIES += xz +else +LINKS_CONF_OPTS += --without-lzma +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LINKS_CONF_OPTS += --with-zlib +LINKS_DEPENDENCIES += zlib +else +LINKS_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/linphone/Config.in b/buildroot/package/linphone/Config.in new file mode 100644 index 0000000..2504ca2 --- /dev/null +++ b/buildroot/package/linphone/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_LINPHONE + bool "linphone" + depends on BR2_INSTALL_LIBSTDCPP # mediastreamer (bundled) + depends on BR2_TOOLCHAIN_HAS_THREADS # ortp (bundled) + depends on BR2_USE_MMU # libeXosip2 + select BR2_PACKAGE_LIBEXOSIP2 + select BR2_PACKAGE_SPEEX + help + Linphone is an internet phone or Voice Over IP phone (VoIP). + + With linphone you can communicate freely with people over + the internet, with voice, video, and text instant messaging. + Linphone makes use of the SIP protocol, an open standard + for internet telephony. You can use Linphone with any SIP + VoIP operator, including our free SIP audio/video service. + linphone is free-software (or open-source), you can download + and redistribute it freely. + Linphone is available for desktop computers: Linux, Windows, + MacOSX, and for mobile phones: Android, iPhone, Blackberry. + + Linphone support in Buildroot is limited to the commandline + client, linphonec, and video support is not enabled. + + http://www.linphone.org/ + +comment "linphone needs a toolchain w/ threads, C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/linphone/linphone.hash b/buildroot/package/linphone/linphone.hash new file mode 100644 index 0000000..9ed9d37 --- /dev/null +++ b/buildroot/package/linphone/linphone.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 05ba81223e9378c3bce8d33080213b9925af49bd9623cd9004eb3dd22ca9d2a0 linphone-3.6.1.tar.gz diff --git a/buildroot/package/linphone/linphone.mk b/buildroot/package/linphone/linphone.mk new file mode 100644 index 0000000..4129c2a --- /dev/null +++ b/buildroot/package/linphone/linphone.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# linphone +# +################################################################################ + +LINPHONE_VERSION_MAJOR = 3.6 +LINPHONE_VERSION = $(LINPHONE_VERSION_MAJOR).1 +LINPHONE_SITE = http://download-mirror.savannah.gnu.org/releases/linphone/$(LINPHONE_VERSION_MAJOR).x/sources +LINPHONE_CONF_OPTS = \ + --disable-strict --disable-video +# configure is out of sync causing deplibs linking issues +LINPHONE_AUTORECONF = YES +LINPHONE_INSTALL_STAGING = YES +LINPHONE_DEPENDENCIES = host-pkgconf libeXosip2 speex +LINPHONE_LICENSE = GPL-2.0+ +LINPHONE_LICENSE_FILES = COPYING + +ifeq ($(BR2_arc),y) +# toolchain __arc__ define conflicts with libosip2 source +LINPHONE_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -U__arc__" +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2)$(BR2_PACKAGE_XORG7),yy) +LINPHONE_CONF_OPTS += --enable-gtk_ui +LINPHONE_DEPENDENCIES += libgtk2 +else +LINPHONE_CONF_OPTS += --disable-gtk_ui +endif + +# needed for bundled mediastreamer2 +LINPHONE_DEPENDENCIES += host-intltool host-gettext + +ifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER)$(BR2_PACKAGE_ALSA_LIB_PCM),yy) +LINPHONE_CONF_OPTS += --enable-alsa +LINPHONE_DEPENDENCIES += alsa-lib +else +LINPHONE_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +LINPHONE_CONF_OPTS += --enable-libv4l1 --enable-libv4l2 +LINPHONE_DEPENDENCIES += libv4l +else +LINPHONE_CONF_OPTS += --disable-libv4l1 --disable-libv4l2 +endif + +ifeq ($(BR2_PACKAGE_LIBUPNP),y) +LINPHONE_DEPENDENCIES += libupnp +LINPHONE_CONF_OPTS += --enable-upnp +else +LINPHONE_CONF_OPTS += --disable-upnp +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/linux-backports/Config.in b/buildroot/package/linux-backports/Config.in new file mode 100644 index 0000000..362e6e4 --- /dev/null +++ b/buildroot/package/linux-backports/Config.in @@ -0,0 +1,54 @@ +comment "linux-backports needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_LINUX_BACKPORTS + bool "linux-backports" + depends on BR2_LINUX_KERNEL + help + The linux-backports package includes many Linux drivers from + recent kernels, backported to older ones. + + This version of linux-backports supports kernels starting + from 3.0. + + https://backports.wiki.kernel.org + +if BR2_PACKAGE_LINUX_BACKPORTS + +choice + prompt "Linux kernel driver backports configuration" + default BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG + +config BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG + bool "Using an in-tree defconfig file" + +config BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG + bool "Using a custom (def)config file" + +endchoice + +config BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG + string "Defconfig name" + depends on BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG + help + Name of the backports defconfig file to use, without the + leading defconfig-. The defconfig is located in defconfigs/ + directory in the backports tree. + +config BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG + help + Path to the backports configuration file + + Note: this can be a defconfig file or a complete .config + file, which can later be saved back with make + linux-update-(def)config. + +config BR2_PACKAGE_LINUX_BACKPORTS_CONFIG_FRAGMENT_FILES + string "Additional configuration fragment files" + help + A space-separated list of configuration fragment files, that + will be merged to the main linux-backports configuration file. + +endif # BR2_PACKAGE_LINUX_BACKPORTS diff --git a/buildroot/package/linux-backports/linux-backports.hash b/buildroot/package/linux-backports/linux-backports.hash new file mode 100644 index 0000000..38f39b9 --- /dev/null +++ b/buildroot/package/linux-backports/linux-backports.hash @@ -0,0 +1,2 @@ +# From: https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v4.4.2/sha256sums.asc +sha256 a979e194c2ed9fdfca092a448e626d85c5af0e4de5ad993c0967afd15af01285 backports-4.4.2-1.tar.xz diff --git a/buildroot/package/linux-backports/linux-backports.mk b/buildroot/package/linux-backports/linux-backports.mk new file mode 100644 index 0000000..1d7d6e7 --- /dev/null +++ b/buildroot/package/linux-backports/linux-backports.mk @@ -0,0 +1,99 @@ +################################################################################ +# +# linux-backports +# +################################################################################ + +LINUX_BACKPORTS_VERSION_MAJOR = 4.4.2 +LINUX_BACKPORTS_VERSION = $(LINUX_BACKPORTS_VERSION_MAJOR)-1 +LINUX_BACKPORTS_SOURCE = backports-$(LINUX_BACKPORTS_VERSION).tar.xz +LINUX_BACKPORTS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/projects/backports/stable/v$(LINUX_BACKPORTS_VERSION_MAJOR) +LINUX_BACKPORTS_LICENSE = GPL-2.0 +LINUX_BACKPORTS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG),y) +LINUX_BACKPORTS_KCONFIG_FILE = $(LINUX_BACKPORTS_DIR)/defconfigs/$(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG)) +else ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG),y) +LINUX_BACKPORTS_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE)) +endif + +LINUX_BACKPORTS_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CONFIG_FRAGMENT_FILES)) +LINUX_BACKPORTS_KCONFIG_OPTS = $(LINUX_BACKPORTS_MAKE_OPTS) + +# linux-backports' build system expects the config options to be present +# in the environment, and it is so when using their custom buildsystem, +# because they are set in the main Makefile, which then calls a second +# Makefile. +# +# In our case, we do not use that first Makefile. So, we parse the +# .config file, filter-out comment lines and put the rest as command +# line variables. +# +# LINUX_BACKPORTS_MAKE_OPTS is used by the kconfig-package infra, while +# LINUX_BACKPORTS_MODULE_MAKE_OPTS is used by the kernel-module infra. +# +LINUX_BACKPORTS_MAKE_OPTS = \ + BACKPORT_DIR=$(@D) \ + KLIB_BUILD=$(LINUX_DIR) \ + KLIB=$(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED) \ + INSTALL_MOD_DIR=backports \ + `sed -r -e '/^\#/d;' $(@D)/.config` + +LINUX_BACKPORTS_MODULE_MAKE_OPTS = $(LINUX_BACKPORTS_MAKE_OPTS) + +# This file is not automatically generated by 'oldconfig' that we use in +# the kconfig-package infrastructure. In the linux buildsystem, it is +# generated by running silentoldconfig, but that's not the case for +# linux-backports: it uses a hand-crafted rule to generate that file. +define LINUX_BACKPORTS_KCONFIG_FIXUP_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_BACKPORTS_MAKE_OPTS) backport-include/backport/autoconf.h +endef + +# Checks to give errors that the user can understand +ifeq ($(BR_BUILDING),y) + +ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG),y) +ifeq ($(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG)),) +$(error No linux-backports defconfig name specified, check your BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG setting) +endif +endif + +ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG),y) +ifeq ($(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE)),) +$(error No linux-backports configuration file specified, check your BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE setting) +endif +endif + +endif # BR_BUILDING + +$(eval $(kernel-module)) +$(eval $(kconfig-package)) + +# linux-backports' own .config file needs options from the kernel's own +# .config file. The dependencies handling in the infrastructure does not +# allow to express this kind of dependencies. Besides, linux.mk might +# not have been parsed yet, so the Linux build dir LINUX_DIR is not yet +# known. Thus, we use a "secondary expansion" so the rule is re-evaluated +# after all Makefiles are parsed, and thus at that time we will have the +# LINUX_DIR variable set to the proper value. +# +# Furthermore, we want to check the kernel version, since linux-backports +# only supports kernels >= 3.0. To avoid overriding linux-backports' +# .config rule defined in the kconfig-package infra, we use an +# intermediate stamp-file. +# +# Finally, it must also come after the call to kconfig-package, so we get +# LINUX_BACKPORTS_DIR properly defined (because the target part of the +# rule is not re-evaluated). +# +$(LINUX_BACKPORTS_DIR)/.config: $(LINUX_BACKPORTS_DIR)/.stamp_check_kernel_version + +.SECONDEXPANSION: +$(LINUX_BACKPORTS_DIR)/.stamp_check_kernel_version: $$(LINUX_DIR)/.config + $(Q)LINUX_VERSION_PROBED=$(LINUX_VERSION_PROBED); \ + if [ $${LINUX_VERSION_PROBED%%.*} -lt 3 ]; then \ + printf "Linux version '%s' is too old for linux-backports (needs 3.0 or later)\n" \ + "$${LINUX_VERSION_PROBED}"; \ + exit 1; \ + fi + $(Q)touch $(@) diff --git a/buildroot/package/linux-firmware/Config.in b/buildroot/package/linux-firmware/Config.in new file mode 100644 index 0000000..f93561e --- /dev/null +++ b/buildroot/package/linux-firmware/Config.in @@ -0,0 +1,376 @@ +config BR2_PACKAGE_LINUX_FIRMWARE + bool "linux-firmware" + help + This package provides various binary firmware files (closed + binary blobs) for such devices like LAN, WLAN cards etc. + + https://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git + +if BR2_PACKAGE_LINUX_FIRMWARE + +menu "Audio firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP + bool "Intel SST DSP" + help + Firmware files for Intel Baytrail SST DSP audio. + +endmenu # Audio + +menu "Video firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_I915 + bool "Intel i915 video card firmware" + help + Firmware files for the Intel i915 video cards. + +config BR2_PACKAGE_LINUX_FIRMWARE_RADEON + bool "AMD Radeon video card firmware" + help + Firmware files for AMD Radeon video cards. + +endmenu # Video + +menu "Bluetooth firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_IBT + bool "Intel Wireless Bluetooth" + help + Firmware files for Intel 3160/7260/7265/8260/8265 Wireless + bluetooth support. + +config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT + bool "Qualcomm Atheros Rome 6174A Bluetooth" + help + Firmware files for QCA Rome 6174A bluetooth support. + +endmenu # Bluetooth + +menu "WiFi firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002 + bool "Atheros 6002" + help + Firmware files for the Atheros AR6002 chip + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003 + bool "Atheros 6003" + help + Firmware files for the Atheros AR6003 chip + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004 + bool "Atheros 6004" + help + Firmware files for the Atheros AR6004 chip + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010 + bool "Atheros 7010" + help + Firmware files for the Atheros 7010 module + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170 + bool "Atheros 9170" + help + Firmware files for the Atheros 9170 module + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271 + bool "Atheros 9271" + help + Firmware files for the Atheros 9271 module + +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA998X + bool "Atheros 10k (QCA998X)" + help + Firmware files for the Atheros QCA988X module + +config BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX + bool "Broadcom BRCM bcm43xx" + help + Firmware files for the Broadcom bcm43xx SoftMAC and FullMAC. + +config BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX + bool "Broadcom BRCM bcm43xxx" + help + Firmware files for the Broadcom bcm43xxx, SoftMAC and FullMAC. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160 + bool "Intel iwlwifi 3160" + help + Firmware files for the Intel Wifi 3160 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168 + bool "Intel iwlwifi 3168" + help + Firmware files for the Intel Wifi 3168 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000 + bool "Intel iwlwifi 5000" + help + Firmware files for the Intel Wifi 5000 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A + bool "Intel iwlwifi 6000G2A" + help + Firmware files for the Intel Wifi 6000G2A devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B + bool "Intel iwlwifi 6000G2B" + help + Firmware files for the Intel Wifi 6000G2B devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260 + bool "Intel iwlwifi 7260" + help + Firmware files for the Intel Wifi 7260 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265 + bool "Intel iwlwifi 7265" + help + Firmware files for the Intel Wifi 7265 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D + bool "Intel iwlwifi 7265D" + # needed for old kernel versions, where the non-D and D + # firmwares were the same + select BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265 + help + Firmware files for the Intel Wifi 7265D devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C + bool "Intel iwlwifi 8000C" + help + Firmware files for the Intel Wifi 8000C devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265 + bool "Intel iwlwifi 8265" + help + Firmware files for the Intel Wifi 8265 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX + bool "Intel iwlwifi 9xxx" + help + Firmware files for the Intel Wifi 9xxx devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8 + bool "Libertas SD 8686 v8" + help + Firmware files (version 8) for the Marvell SD8686 module + +config BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9 + bool "Libertas SD 8686 v9" + help + Firmware files (version 9) for the Marvell SD8686 module + +config BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688 + bool "Libertas SD 8688" + help + Firmware files for the Marvell SD8688 module + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787 + bool "Marvell Wifi-Ex 8787 SDIO" + help + Firmware files for the Marvell Wifi-Ex 8787 module on SDIO. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797 + bool "Marvell Wifi-Ex 8797 SDIO" + help + Firmware files for the Marvell Wifi-Ex 8797 module on SDIO. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797 + bool "Marvell Wifi-Ex 8797 USB" + help + Firmware files for the Marvell Wifi-Ex 8797 module on USB. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801 + bool "Marvell Wifi-Ex 8801 USB" + help + Firmware files for the Marvell Wifi-Ex 8801 module on USB. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887 + bool "Marvell Wifi-Ex 8887 SDIO" + help + Firmware files for the Marvell Wifi-Ex 8887 module on SDIO. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897 + bool "Marvell Wifi-Ex 8897 SDIO" + help + Firmware files for the Marvell Wifi-Ex 8897 module on SDIO. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897 + bool "Marvell Wifi-Ex 8897 USB" + help + Firmware files for the Marvell Wifi-Ex 8897 module on USB. + +config BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897 + bool "Marvell Wifi-Ex 8897 PCI-E" + help + Firmware files for the Marvell Wifi-Ex 8897 module on PCI-E. + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U + bool "MediaTek MT7601U" + help + MediaTek MT7601U + +config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174 + bool "Qualcomm Atheros 6174" + help + Firmware files for the Qualcomm Atheros QCA6174 chip + +config BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61 + bool "Ralink rt2501/rt61" + help + Ralink rt2501/rt61 + +config BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73 + bool "Ralink rt73" + help + Ralink rt73 + +config BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX + bool "Ralink rt27xx/rt28xx/rt30xx" + help + Ralink rt27xx/rt28xx/rt30xx + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX + bool "Realtek 81xx" + help + Realtek 8188/8192 + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX + bool "Realtek 87xx" + help + Realtek 8712/8723/8723be + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX + bool "Realtek 88xx" + help + Realtek rtl8821ae + +config BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9113 + bool "Redpine rs9113" + help + Firmware files for WLAN and Bluetooth modules rs9113 + +config BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X + bool "TI wl127x" + help + Firmware files for WLAN and Bluetooth modules wl1271 and + wl1273 + +config BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X + bool "TI wl128x" + help + Firmware files for WLAN and Bluetooth modules wl128x + +config BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX + bool "TI wl18xx" + help + Firmware files for WLAN and Bluetooth modules wl18xx + +endmenu + +menu "Ethernet firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_BNX2X + bool "Broadcom NetXtremeII" + help + Firmware files for Broadcom NetXtreme 10Gb ethernet cards + (bnx2x) + +config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4 + bool "Chelsio T4" + help + Firmware files for Chelsio T4 1Gb and 10Gb ethernet cards + (cxgb4) + +config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5 + bool "Chelsio T5" + help + Firmware files for Chelsio T5 1Gb and 10Gb ethernet cards + (cxgb4) + +config BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169 + bool "Realtek 8169" + help + Firmware files for Realtek 8169 gigabit ethernet cards + +endmenu + +menu "DVB firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_AS102 + bool "Abilis Systems as102" + help + Firmware file for Abilis Systems single DVB-T receiver as102 + +config BR2_PACKAGE_LINUX_FIRMWARE_DIB0700 + bool "DiBcom dib0700" + help + Firmware file for dib0700-based USB DVB tuner driver + +config BR2_PACKAGE_LINUX_FIRMWARE_ITETECH_IT9135 + bool "ITEtech it9135" + help + Firmware files for ITEtech it9135 (Ax and Bx) DVB-T USB tuner + +config BR2_PACKAGE_LINUX_FIRMWARE_H5_DRXK + bool "Terratec H5 DRX-K" + help + Firmware file for Terratec H5 DRX-K based DVB tuner driver + +config BR2_PACKAGE_LINUX_FIRMWARE_XCx000 + bool "Xceive/Cresta xc4000/xc5000/xc500c" + help + Firmware file for xc4000/xc5000/xc5000c based DVB tuner driver + +endmenu + +menu "SoC Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_IMX_SDMA + bool "Freescale i.MX SDMA" + help + Firmware files for i.MX SDMA. + +endmenu + +menu "Fibre Channel Adapter Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_2XXX + bool "QLogic 2xxx Fibre Channel Adapters" + help + Firmware files for ql2xxx adapters + +endmenu + +menu "Intel QuickAssist Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_QAT_DH895XCC + bool "Support for DH895xCC" + help + Firmware files for Intel DH895xCC devices + +config BR2_PACKAGE_LINUX_FIRMWARE_QAT_C3XXX + bool "Support for C3XXX" + help + Firmware files for Intel C3XXX devices + +config BR2_PACKAGE_LINUX_FIRMWARE_QAT_C62X + bool "Support for C62X" + help + Firmware files for Intel C62X devices + +endmenu + +endif diff --git a/buildroot/package/linux-firmware/linux-firmware.hash b/buildroot/package/linux-firmware/linux-firmware.hash new file mode 100644 index 0000000..1beb1f7 --- /dev/null +++ b/buildroot/package/linux-firmware/linux-firmware.hash @@ -0,0 +1,27 @@ +# Locally calculated +sha256 d253f7abb32e0407bcc840a5bddba1dc20190bb4a4bb6d40512f279fde384671 linux-firmware-65b1c68c63f974d72610db38dfae49861117cae2.tar.gz +sha256 8116433f4004fc0c24d72b3d9e497808b724aa0e5e1cd63fc1bf66b715b1e2e9 LICENCE.Abilis +sha256 38f2037aa14631b4b29826d7a99379613c41a97064d1defdee30a7a022138b20 LICENCE.Marvell +sha256 802b7014b26c606cf6248ae8b0ab1ce6d2d1b0db236d38dd269e676cd70710f2 LICENCE.atheros_firmware +sha256 b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d LICENCE.broadcom_bcm43xx +sha256 a5777f9e80aca0603b0648454de996168b1c530322550ccda94d6d78bcf6c061 LICENCE.chelsio_firmware +sha256 60fbc9cccb455e1a3306c97db942d6f24fa93664be61d54c497637e6d0e2ae83 LICENCE.fw_sst_0f28 +sha256 5181b0b51efc79d5acb2c9bb92042878fdbad97a92114d4ab5e32e2b5b52fce4 LICENCE.ibt_firmware +sha256 0e0c11073ba3c832097da38e0905da36b8a3526f219407977b13b71c6675be7d LICENCE.it913x +sha256 e295020afd7597dc1b3bbe50a84a7e432d9cb92bc053c1c5e657b50d2517627b LICENCE.iwlwifi_firmware +sha256 2051d5bf0755a0668f8c3d9a0d1c41d4b8cc411aba70f720fda71ae9e3b4d25c LICENCE.qat_firmware +sha256 4071a11d878dbc0ac6d9e71203d03b151638f9d7a8bc47a54c3cb964100d5822 LICENCE.qla2xxx +sha256 d7bec70668ddd4aae8fb4aa32870e54b49fcdb0b9b007aa9f54b53a1ac7461bd LICENCE.ralink-firmware.txt +sha256 8568352b57f3574f9d5b2753cdb7c6e5eb2b79e82fbb9c9ba6566947467ef508 LICENCE.ralink_a_mediatek_company_firmware +sha256 a61351665b4f264f6c631364f85b907d8f8f41f8b369533ef4021765f9f3b62e LICENCE.rtlwifi_firmware.txt +sha256 106bef96470001e877fcf7ba0337fa6766a317650eb47fcaeb743eeebd62c4ff LICENCE.ti-connectivity +sha256 8ea9f4aee5f53ad877041ff089e8c95d34d615ce19a3111e5e1ea70d990ed7ff LICENCE.xc4000 +sha256 30ec8a66503dc73f83937564ae70ca23aa03259e64727ff4195b5b6f695e782f LICENCE.xc5000 +sha256 f8822049f32fef2e90a197bd8cf259f476db75d549456bdca8567616a9c07ace LICENCE.xc5000c +sha256 337a55102138d7baa143ee4a4c6c91693e0113fece35d380b2a12109e8c23b3f LICENSE.QualcommAtheros_ath10k +sha256 630fd46c95d3ac6544590c2265ba7348fbc930fb386261a1c04dcd9f403645b8 LICENSE.dib0700 +sha256 8542aeabf2761935122d693561e16766ce1bcc2b0d003204f9040b7d6d929f2e LICENSE.i915 +sha256 be904cd28cb292b80cdb6cf412ab0d9159d431671e987ad433c1f62e0988a9bc LICENSE.qcom +sha256 fc6223d4bfe9f2f9e2eddc44b9fe5721d0caf49f01cb08d602906add686d8c6f LICENSE.radeon +sha256 2bdd2e716f05d9737d3f9a20f9a3a3c0caee0e866100ddb0673f1178e42f92b9 LICENSE.sdma_firmware +sha256 9703115e298649dfad003d7d3d55f4b2bd417e28f19e9cf6d5c6f9a906a2c4d9 WHENCE diff --git a/buildroot/package/linux-firmware/linux-firmware.mk b/buildroot/package/linux-firmware/linux-firmware.mk new file mode 100644 index 0000000..8268093 --- /dev/null +++ b/buildroot/package/linux-firmware/linux-firmware.mk @@ -0,0 +1,509 @@ +################################################################################ +# +# linux-firmware +# +################################################################################ + +LINUX_FIRMWARE_VERSION = 65b1c68c63f974d72610db38dfae49861117cae2 +LINUX_FIRMWARE_SITE = http://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git +LINUX_FIRMWARE_SITE_METHOD = git + +# Intel SST DSP +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP),y) +LINUX_FIRMWARE_FILES += intel/fw_sst_0f28.bin-48kHz_i2s_master +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.fw_sst_0f28 +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_I915),y) +LINUX_FIRMWARE_DIRS += i915 +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.i915 +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RADEON),y) +LINUX_FIRMWARE_DIRS += radeon +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.radeon +endif + +# Intel Wireless Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IBT),y) +LINUX_FIRMWARE_FILES += intel/ibt-* +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ibt_firmware +endif + +# Qualcomm Atheros Rome 6174A Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT),y) +LINUX_FIRMWARE_FILES += qca/rampatch_usb_00000302.bin qca/nvm_usb_00000302.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.qcom +endif + +# Freescale i.MX SDMA +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IMX_SDMA),y) +LINUX_FIRMWARE_FILES += imx/sdma/sdma-imx6q.bin imx/sdma/sdma-imx7d.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.sdma_firmware +endif + +# rt2501/rt61 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61),y) +LINUX_FIRMWARE_FILES += rt2561.bin rt2561s.bin rt2661.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink-firmware.txt +endif + +# rt73 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73),y) +LINUX_FIRMWARE_FILES += rt73.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink-firmware.txt +endif + +# rt2xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX),y) +# rt3090.bin is a symlink to rt2860.bin +# rt3070.bin is a symlink to rt2870.bin +LINUX_FIRMWARE_FILES += rt2860.bin rt2870.bin rt3070.bin rt3071.bin rt3090.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink-firmware.txt +endif + +# rtl81xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX),y) +LINUX_FIRMWARE_FILES += \ + rtlwifi/rtl8192cfw.bin rtlwifi/rtl8192cfwU.bin \ + rtlwifi/rtl8192cfwU_B.bin rtlwifi/rtl8192cufw.bin \ + rtlwifi/rtl8192defw.bin rtlwifi/rtl8192sefw.bin \ + rtlwifi/rtl8188efw.bin rtlwifi/rtl8188eufw.bin \ + rtlwifi/rtl8192cufw_A.bin \ + rtlwifi/rtl8192cufw_B.bin rtlwifi/rtl8192cufw_TMSC.bin \ + rtlwifi/rtl8192eefw.bin rtlwifi/rtl8192eu_ap_wowlan.bin \ + rtlwifi/rtl8192eu_nic.bin rtlwifi/rtl8192eu_wowlan.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +# rtl87xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX),y) +LINUX_FIRMWARE_FILES += \ + rtlwifi/rtl8712u.bin rtlwifi/rtl8723fw.bin \ + rtlwifi/rtl8723fw_B.bin rtlwifi/rtl8723befw.bin \ + rtlwifi/rtl8723aufw_A.bin rtlwifi/rtl8723aufw_B.bin \ + rtlwifi/rtl8723aufw_B_NoBT.bin rtlwifi/rtl8723befw.bin \ + rtlwifi/rtl8723bs_ap_wowlan.bin rtlwifi/rtl8723bs_bt.bin \ + rtlwifi/rtl8723bs_nic.bin rtlwifi/rtl8723bs_wowlan.bin \ + rtlwifi/rtl8723bu_ap_wowlan.bin rtlwifi/rtl8723bu_nic.bin \ + rtlwifi/rtl8723bu_wowlan.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +# rtl88xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX),y) +LINUX_FIRMWARE_FILES += \ + rtlwifi/rtl8821aefw.bin \ + rtlwifi/rtl8821aefw_wowlan.bin \ + rtlwifi/rtl8821aefw_29.bin rtlwifi/rtl8822befw.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt +endif + +# ar6002 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002),y) +LINUX_FIRMWARE_FILES += ath6k/AR6002 +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar6003 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003),y) +LINUX_FIRMWARE_FILES += ath6k/AR6003 +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar6004 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004),y) +LINUX_FIRMWARE_FILES += ath6k/AR6004 +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar7010 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010),y) +LINUX_FIRMWARE_FILES += ar7010.fw ar7010_1_1.fw htc_7010.fw ath9k_htc/htc_7010-1.4.0.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar9170 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170),y) +LINUX_FIRMWARE_FILES += ar9170-1.fw ar9170-2.fw carl9170-1.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ar9271 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271),y) +LINUX_FIRMWARE_FILES += ar9271.fw htc_9271.fw ath9k_htc/htc_9271-1.4.0.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# ath10k +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA998X),y) +LINUX_FIRMWARE_FILES += ath10k/QCA988X/hw2.0/board.bin \ + ath10k/QCA988X/hw2.0/firmware-4.bin \ + ath10k/QCA988X/hw2.0/firmware-5.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +endif + +# sd8686 v8 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8),y) +LINUX_FIRMWARE_FILES += libertas/sd8686_v8.bin libertas/sd8686_v8_helper.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8686 v9 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9),y) +LINUX_FIRMWARE_FILES += libertas/sd8686_v9.bin libertas/sd8686_v9_helper.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8688 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688),y) +LINUX_FIRMWARE_FILES += libertas/sd8688.bin libertas/sd8688_helper.bin +# The two files above are but symlinks to those two ones: +LINUX_FIRMWARE_FILES += mrvl/sd8688.bin mrvl/sd8688_helper.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8787 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787),y) +LINUX_FIRMWARE_FILES += mrvl/sd8787_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8797 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797),y) +LINUX_FIRMWARE_FILES += mrvl/sd8797_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# usb8797 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797),y) +LINUX_FIRMWARE_FILES += mrvl/usb8797_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# usb8801 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801),y) +LINUX_FIRMWARE_FILES += mrvl/usb8801_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8887 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887),y) +LINUX_FIRMWARE_FILES += mrvl/sd8887_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# sd8897 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897),y) +LINUX_FIRMWARE_FILES += mrvl/sd8897_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# usb8897 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897),y) +LINUX_FIRMWARE_FILES += mrvl/usb8897_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# pcie8897 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897),y) +LINUX_FIRMWARE_FILES += mrvl/pcie8897_uapsta.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Marvell +endif + +# MT7601 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U),y) +LINUX_FIRMWARE_FILES += mt7601u.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ralink_a_mediatek_company_firmware +endif + +# qca6174 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174),y) +LINUX_FIRMWARE_FILES += ath10k/QCA6174 +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.QualcommAtheros_ath10k +endif + +# wl127x +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X),y) +# wl1271-nvs.bin is a symlink to wl127x-nvs.bin +LINUX_FIRMWARE_FILES += \ + ti-connectivity/wl1271-fw-2.bin \ + ti-connectivity/wl1271-fw-ap.bin \ + ti-connectivity/wl1271-fw.bin \ + ti-connectivity/wl1271-nvs.bin \ + ti-connectivity/wl127x-fw-3.bin \ + ti-connectivity/wl127x-fw-plt-3.bin \ + ti-connectivity/wl127x-nvs.bin \ + ti-connectivity/wl127x-fw-4-mr.bin \ + ti-connectivity/wl127x-fw-4-plt.bin \ + ti-connectivity/wl127x-fw-4-sr.bin \ + ti-connectivity/wl127x-fw-5-mr.bin \ + ti-connectivity/wl127x-fw-5-plt.bin \ + ti-connectivity/wl127x-fw-5-sr.bin \ + ti-connectivity/TIInit_7.2.31.bts +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity +endif + +# wl128x +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X),y) +# wl1271-nvs.bin and wl12xx-nvs.bin are symlinks to wl127x-nvs.bin +LINUX_FIRMWARE_FILES += \ + ti-connectivity/wl128x-fw-3.bin \ + ti-connectivity/wl128x-fw-ap.bin \ + ti-connectivity/wl128x-fw-plt-3.bin \ + ti-connectivity/wl128x-fw.bin \ + ti-connectivity/wl1271-nvs.bin \ + ti-connectivity/wl128x-nvs.bin \ + ti-connectivity/wl12xx-nvs.bin \ + ti-connectivity/wl127x-nvs.bin \ + ti-connectivity/wl128x-fw-4-mr.bin \ + ti-connectivity/wl128x-fw-4-plt.bin \ + ti-connectivity/wl128x-fw-4-sr.bin \ + ti-connectivity/wl128x-fw-5-mr.bin \ + ti-connectivity/wl128x-fw-5-plt.bin \ + ti-connectivity/wl128x-fw-5-sr.bin \ + ti-connectivity/TIInit_7.2.31.bts +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity +endif + +# wl18xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX),y) +# wl1271-nvs.bin is a symlink to wl127x-nvs.bin +LINUX_FIRMWARE_FILES += \ + ti-connectivity/wl18xx-fw.bin \ + ti-connectivity/wl18xx-fw-2.bin \ + ti-connectivity/wl18xx-fw-3.bin \ + ti-connectivity/wl18xx-fw-4.bin \ + ti-connectivity/wl1271-nvs.bin \ + ti-connectivity/wl127x-nvs.bin \ + ti-connectivity/TIInit_7.2.31.bts +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160),y) +LINUX_FIRMWARE_FILES += iwlwifi-3160-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168),y) +LINUX_FIRMWARE_FILES += iwlwifi-3168-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +# iwlwifi 5000. Multiple files are available (iwlwifi-5000-1.ucode, +# iwlwifi-5000-2.ucode, iwlwifi-5000-5.ucode), corresponding to +# different versions of the firmware API. For now, we only install the +# most recent one. +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000),y) +LINUX_FIRMWARE_FILES += iwlwifi-5000-5.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A),y) +LINUX_FIRMWARE_FILES += iwlwifi-6000g2a-6.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B),y) +LINUX_FIRMWARE_FILES += iwlwifi-6000g2b-6.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260),y) +LINUX_FIRMWARE_FILES += iwlwifi-7260-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265),y) +LINUX_FIRMWARE_FILES += iwlwifi-7265-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D),y) +LINUX_FIRMWARE_FILES += iwlwifi-7265D-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C),y) +LINUX_FIRMWARE_FILES += iwlwifi-8000C-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265),y) +LINUX_FIRMWARE_FILES += iwlwifi-8265-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX),y) +LINUX_FIRMWARE_FILES += iwlwifi-9???-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BNX2X),y) +LINUX_FIRMWARE_FILES += bnx2x/* +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4),y) +LINUX_FIRMWARE_FILES += cxgb4/t4fw*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.chelsio_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5),y) +LINUX_FIRMWARE_FILES += cxgb4/t5fw*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.chelsio_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169),y) +LINUX_FIRMWARE_FILES += \ + rtl_nic/rtl8105e-1.fw \ + rtl_nic/rtl8106e-1.fw \ + rtl_nic/rtl8106e-2.fw \ + rtl_nic/rtl8168d-1.fw \ + rtl_nic/rtl8168d-2.fw \ + rtl_nic/rtl8168e-1.fw \ + rtl_nic/rtl8168e-2.fw \ + rtl_nic/rtl8168e-3.fw \ + rtl_nic/rtl8168f-1.fw \ + rtl_nic/rtl8168f-2.fw \ + rtl_nic/rtl8168g-2.fw \ + rtl_nic/rtl8168g-3.fw \ + rtl_nic/rtl8168h-1.fw \ + rtl_nic/rtl8168h-2.fw \ + rtl_nic/rtl8402-1.fw \ + rtl_nic/rtl8411-1.fw \ + rtl_nic/rtl8411-2.fw +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_XCx000),y) +LINUX_FIRMWARE_FILES += \ + dvb-fe-xc4000-1.4.1.fw \ + dvb-fe-xc5000-1.6.114.fw \ + dvb-fe-xc5000c-4.1.30.7.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += \ + LICENCE.xc4000 \ + LICENCE.xc5000 \ + LICENCE.xc5000c +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AS102),y) +LINUX_FIRMWARE_FILES += as102_data1_st.hex as102_data2_st.hex +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.Abilis +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_DIB0700),y) +LINUX_FIRMWARE_FILES += dvb-usb-dib0700-1.20.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.dib0700 +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ITETECH_IT9135),y) +LINUX_FIRMWARE_FILES += dvb-usb-it9135-01.fw dvb-usb-it9135-02.fw +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.it913x +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_H5_DRXK),y) +LINUX_FIRMWARE_FILES += dvb-usb-terratec-h5-drxk.fw +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +# brcm43xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX),y) +LINUX_FIRMWARE_FILES += \ + brcm/bcm43xx-0.fw brcm/bcm43xx_hdr-0.fw \ + brcm/bcm4329-fullmac-4.bin brcm/brcmfmac4329-sdio.bin \ + brcm/brcmfmac4330-sdio.bin brcm/brcmfmac4334-sdio.bin \ + brcm/brcmfmac4335-sdio.bin brcm/brcmfmac4339-sdio.bin \ + brcm/brcmfmac4350-pcie.bin brcm/brcmfmac4354-sdio.bin \ + brcm/brcmfmac4356-pcie.bin brcm/brcmfmac4371-pcie.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx +endif + +# brcm43xxx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX),y) +LINUX_FIRMWARE_FILES += \ + brcm/brcmfmac43143.bin brcm/brcmfmac43143-sdio.bin \ + brcm/brcmfmac43236b.bin brcm/brcmfmac43241b0-sdio.bin \ + brcm/brcmfmac43241b4-sdio.bin brcm/brcmfmac43241b5-sdio.bin \ + brcm/brcmfmac43242a.bin brcm/brcmfmac43340-sdio.bin \ + brcm/brcmfmac43362-sdio.bin brcm/brcmfmac43430-sdio.bin \ + brcm/brcmfmac43430a0-sdio.bin brcm/brcmfmac43455-sdio.bin \ + brcm/brcmfmac43569.bin brcm/brcmfmac43570-pcie.bin \ + brcm/brcmfmac43602-pcie.ap.bin brcm/brcmfmac43602-pcie.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.broadcom_bcm43xx +endif + +# ql2xxx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_2XXX),y) +LINUX_FIRMWARE_FILES += \ + ql2100_fw.bin ql2200_fw.bin ql2300_fw.bin ql2322_fw.bin \ + ql2400_fw.bin ql2500_fw.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qla2xxx +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9113),y) +LINUX_FIRMWARE_FILES += rsi/rs9113_wlan_qspi.rps +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_DH895XCC),y) +# qat_mmp.bin is a symlink to qat_895xcc_mmp.bin +LINUX_FIRMWARE_FILES += qat_895xcc.bin qat_895xcc_mmp.bin qat_mmp.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_C3XXX),y) +LINUX_FIRMWARE_FILES += qat_c3xxx.bin qat_c3xxx_mmp.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_C62X),y) +LINUX_FIRMWARE_FILES += qat_c62x.bin qat_c62x_mmp.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware +endif + +ifneq ($(LINUX_FIRMWARE_FILES),) +define LINUX_FIRMWARE_INSTALL_FILES + cd $(@D) && \ + $(TAR) cf install.tar $(sort $(LINUX_FIRMWARE_FILES)) && \ + $(TAR) xf install.tar -C $(TARGET_DIR)/lib/firmware +endef +endif + +ifneq ($(LINUX_FIRMWARE_DIRS),) +# We need to rm-rf the destination directory to avoid copying +# into it in itself, should we re-install the package. +define LINUX_FIRMWARE_INSTALL_DIRS + $(foreach d,$(LINUX_FIRMWARE_DIRS), \ + rm -rf $(TARGET_DIR)/lib/firmware/$(d); \ + cp -a $(@D)/$(d) $(TARGET_DIR)/lib/firmware/$(d)$(sep)) +endef +endif + +ifneq ($(LINUX_FIRMWARE_FILES)$(LINUX_FIRMWARE_DIRS),) + +# Most firmware files are under a proprietary license, so no need to +# repeat it for every selections above. Those firmwares that have more +# lax licensing terms may still add them on a per-case basis. +LINUX_FIRMWARE_LICENSE += Proprietary + +# This file contains some licensing information about all the firmware +# files found in the linux-firmware package, so we always add it, even +# for firmwares that have their own licensing terms. +LINUX_FIRMWARE_ALL_LICENSE_FILES += WHENCE + +# Some license files may be listed more than once, so we have to remove +# duplicates +LINUX_FIRMWARE_LICENSE_FILES = $(sort $(LINUX_FIRMWARE_ALL_LICENSE_FILES)) + +endif + +define LINUX_FIRMWARE_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware + $(LINUX_FIRMWARE_INSTALL_FILES) + $(LINUX_FIRMWARE_INSTALL_DIRS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/linux-fusion/0001-fix-for-linux-4-and-above.patch b/buildroot/package/linux-fusion/0001-fix-for-linux-4-and-above.patch new file mode 100644 index 0000000..689d9bf --- /dev/null +++ b/buildroot/package/linux-fusion/0001-fix-for-linux-4-and-above.patch @@ -0,0 +1,25 @@ +Fix build for linux >= 4.x + +Instead of relying on testing for '3' as the linux kernel major verison, +check that it is 2.x to include the proper Makefile, otherwise forcibly +include the .26 Makefile, that is good for 3.x and 4.x too. + +Signed-off-by: "Yann E. MORIN" + +diff -durN linux-fusion-9.0.2.orig/Makefile linux-fusion-9.0.2/Makefile +--- linux-fusion-9.0.2.orig/Makefile 2013-07-15 11:58:03.000000000 +0200 ++++ linux-fusion-9.0.2/Makefile 2015-06-06 19:03:04.059842652 +0200 +@@ -62,10 +62,10 @@ + CPPFLAGS += -DHAVE_LINUX_CONFIG_H + endif + +-ifeq ($(K_VERSION),3) +- KMAKEFILE = Makefile-2.6 +-else ++ifeq ($(K_VERSION),2) + KMAKEFILE = Makefile-2.$(K_PATCHLEVEL) ++else ++ KMAKEFILE = Makefile-2.6 + endif + + check-version = $(shell expr \( $(K_VERSION) \* 65536 + $(K_PATCHLEVEL) \* 256 + $(K_SUBLEVEL) \) \>= \( $(1) \* 65536 + $(2) \* 256 + $(3) \)) diff --git a/buildroot/package/linux-fusion/0002-Fix-mismatched-conversion-spec-and-value-in-printk.patch b/buildroot/package/linux-fusion/0002-Fix-mismatched-conversion-spec-and-value-in-printk.patch new file mode 100644 index 0000000..a3f8bb7 --- /dev/null +++ b/buildroot/package/linux-fusion/0002-Fix-mismatched-conversion-spec-and-value-in-printk.patch @@ -0,0 +1,29 @@ +From debb9cafe9b7cc2b286399ecc8e3210480061c70 Mon Sep 17 00:00:00 2001 +From: Marc Gonzalez +Date: Mon, 11 Jan 2016 15:42:16 +0100 +Subject: [PATCH] Fix mismatched conversion spec and value in printk + +linux/drivers/char/fusion/fusiondev.c:775:38: warning: +format '%ld' expects argument of type 'long int', but argument 7 has type 'int' + +Subtracting two pointers yields a ptrdiff_t value, and ptrdiff_t is not +necessarily an alias for long int. Cast the value to long int. + +Signed-off-by: Marc Gonzalez +--- + linux/drivers/char/fusion/fusiondev.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/linux/drivers/char/fusion/fusiondev.c b/linux/drivers/char/fusion/fusiondev.c +index 7003407f7e1e..dfb5f8ecb81a 100644 +--- a/linux/drivers/char/fusion/fusiondev.c ++++ b/linux/drivers/char/fusion/fusiondev.c +@@ -775,7 +775,7 @@ call_ioctl(FusionDev * dev, Fusionee * fusionee, + printk( KERN_ERR "fusion: FUSION_CALL_EXECUTE3 with errorneous call (failed on previous ioctl call), " + "call id %d, flags 0x%08x, arg %d, length %u, serial %u, %ld\n", + execute3.call_id, execute3.flags, execute3.call_arg, execute3.length, execute3.ret_length, +- (execute3_bin - (FusionCallExecute3 *) arg) ); ++ (long int)(execute3_bin - (FusionCallExecute3 *) arg) ); + return -EIO; + } + diff --git a/buildroot/package/linux-fusion/0003-Fix-fusion-Unknown-symbol-tasklist_lock-err-0.patch b/buildroot/package/linux-fusion/0003-Fix-fusion-Unknown-symbol-tasklist_lock-err-0.patch new file mode 100644 index 0000000..b14ec9d --- /dev/null +++ b/buildroot/package/linux-fusion/0003-Fix-fusion-Unknown-symbol-tasklist_lock-err-0.patch @@ -0,0 +1,38 @@ +From 9fcd5003c0363af140a06aba94e62c9e1ea0381e Mon Sep 17 00:00:00 2001 +From: Marc Gonzalez +Date: Mon, 11 Jan 2016 16:45:30 +0100 +Subject: [PATCH] Fix fusion: Unknown symbol tasklist_lock (err 0) + +Commit 28f6569ab7d0 renamed TREE_PREEMPT_RCU to PREEMPT_RCU in 3.19 +As a result, the code incorrectly falls back to using tasklist_lock +(which was made private in 2.6.18) + +Always use rcu_read_lock on modern kernels. + +Signed-off-by: Marc Gonzalez +--- + linux/drivers/char/fusion/fusionee.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/linux/drivers/char/fusion/fusionee.c b/linux/drivers/char/fusion/fusionee.c +index ef067f5bc831..70cd0a665f98 100644 +--- a/linux/drivers/char/fusion/fusionee.c ++++ b/linux/drivers/char/fusion/fusionee.c +@@ -925,7 +925,7 @@ fusionee_kill(FusionDev * dev, + if (f != fusionee && (!target || target == f->id)) { + struct task_struct *p; + +-#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) || defined(CONFIG_TINY_RCU) || defined(rcu_read_lock) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) + rcu_read_lock(); + #else + read_lock(&tasklist_lock); +@@ -946,7 +946,7 @@ fusionee_kill(FusionDev * dev, + } + } + +-#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) || defined(CONFIG_TINY_RCU) || defined(rcu_read_unlock) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) + rcu_read_unlock(); + #else + read_unlock(&tasklist_lock); diff --git a/buildroot/package/linux-fusion/0004-Port-one-one_udp.c-to-Linux-4.1.patch b/buildroot/package/linux-fusion/0004-Port-one-one_udp.c-to-Linux-4.1.patch new file mode 100644 index 0000000..3ee4dac --- /dev/null +++ b/buildroot/package/linux-fusion/0004-Port-one-one_udp.c-to-Linux-4.1.patch @@ -0,0 +1,118 @@ +From be288b60278c78eccfd347aacf4d3dd8771215a9 Mon Sep 17 00:00:00 2001 +From: Marc Gonzalez +Date: Tue, 12 Jan 2016 14:01:42 +0100 +Subject: [PATCH] Port one/one_udp.c to Linux 4.1 + +Kernel commit c0371da6047a replaced msg_iov and msg_iovlen with msg_iter +in struct msghdr since 3.19 + +one/one_udp.c: In function 'ksocket_send_iov': +one/one_udp.c:186:9: error: 'struct msghdr' has no member named 'msg_iov' +one/one_udp.c:187:9: error: 'struct msghdr' has no member named 'msg_iovlen' + +one/one_udp.c: In function 'ksocket_receive': +one/one_udp.c:221:9: error: 'struct msghdr' has no member named 'msg_iov' +one/one_udp.c:222:9: error: 'struct msghdr' has no member named 'msg_iovlen' + +The iov_iter interface +https://lwn.net/Articles/625077/ + +Kernel commit d8725c86aeba dropped the len parameter in sock_sendmsg +since 4.1 + +one/one_udp.c: In function 'ksocket_send_iov': +one/one_udp.c:192:13: error: too many arguments to function 'sock_sendmsg' + +Signed-off-by: Marc Gonzalez + +Kernel commit 2da62906b1e29 dropped the size parameter in sock_recvmsg +since 4.7 + +In function 'ksocket_receive' +one/one_udp.c:235:13: error: too many arguments to function 'sock_recvmsg' + +Signed-off-by: Matthew Shyu +--- + one/one_udp.c | 34 +++++++++++++++++++--------------- + 1 file changed, 19 insertions(+), 15 deletions(-) + +diff --git a/one/one_udp.c b/one/one_udp.c +index 26b9e6a..9b59529 100644 +--- a/one/one_udp.c ++++ b/one/one_udp.c +@@ -161,7 +161,7 @@ ksocket_send_iov( struct socket *sock, + const struct iovec *iov, + size_t iov_count ) + { +- struct msghdr msg; ++ struct msghdr msg = { addr, sizeof *addr }; + mm_segment_t oldfs; + int size = 0; + size_t len = 0; +@@ -178,18 +178,20 @@ ksocket_send_iov( struct socket *sock, + for (i=0; i +Signed-off-by: Brendan Heading + +Upstream-status: inappropriate + +diff -urN a/doc/Makefile.am b/doc/Makefile.am +--- a/doc/Makefile.am 2012-08-15 06:08:43.000000000 -0500 ++++ b/doc/Makefile.am 2013-07-17 09:54:53.000000000 -0500 +@@ -2,8 +2,6 @@ + # Copyright (c) 2005, 2006 Thorsten Kukuk + # + +-SUBDIRS = man specs sag adg mwg +- + CLEANFILES = *~ + + dist_html_DATA = index.html +@@ -11,11 +9,4 @@ + ####################################################### + + releasedocs: all +- $(mkinstalldirs) $(top_builddir)/Linux-PAM-$(VERSION)/doc/specs +- cp -av specs/draft-morgan-pam-current.txt \ +- $(top_builddir)/Linux-PAM-$(VERSION)/doc/specs/ +- cp -av $(srcdir)/specs/rfc86.0.txt \ +- $(top_builddir)/Linux-PAM-$(VERSION)/doc/specs/ +- make -C sag releasedocs +- make -C adg releasedocs +- make -C mwg releasedocs ++ /bin/true diff --git a/buildroot/package/linux-pam/0002-Conditionally-compile-per-ruserok-availability.patch b/buildroot/package/linux-pam/0002-Conditionally-compile-per-ruserok-availability.patch new file mode 100644 index 0000000..cec642d --- /dev/null +++ b/buildroot/package/linux-pam/0002-Conditionally-compile-per-ruserok-availability.patch @@ -0,0 +1,49 @@ +ruserok is not available/functional in uclibc, provide conditions +for compilation where needed. + +Patch originally by Dmitry Golubovsky - +porting to linux-pam 1.2.1. + +Signed-off-by: Brendan Heading + +Upstream-status: pending + +--- + configure.ac | 2 +- + modules/pam_rhosts/pam_rhosts.c | 6 +++++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 08e4530..fd2fd23 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -542,7 +542,7 @@ AC_CHECK_FUNCS(fseeko getdomainname gethostname gettimeofday lckpwdf mkdir selec + AC_CHECK_FUNCS(strcspn strdup strspn strstr strtol uname) + AC_CHECK_FUNCS(getutent_r getpwnam_r getpwuid_r getgrnam_r getgrgid_r getspnam_r) + AC_CHECK_FUNCS(getgrouplist getline getdelim) +-AC_CHECK_FUNCS(inet_ntop inet_pton innetgr ruserok_af) ++AC_CHECK_FUNCS(inet_ntop inet_pton innetgr ruserok_af ruserok) + + AC_CHECK_FUNCS(unshare, [UNSHARE=yes], [UNSHARE=no]) + AM_CONDITIONAL([HAVE_UNSHARE], [test "$UNSHARE" = yes]) +diff --git a/modules/pam_rhosts/pam_rhosts.c b/modules/pam_rhosts/pam_rhosts.c +index bc9e76f..909db29 100644 +--- a/modules/pam_rhosts/pam_rhosts.c ++++ b/modules/pam_rhosts/pam_rhosts.c +@@ -114,8 +114,12 @@ int pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, + #ifdef HAVE_RUSEROK_AF + retval = ruserok_af (rhost, as_root, ruser, luser, PF_UNSPEC); + #else ++ #ifdef HAVE_RUSEROK + retval = ruserok (rhost, as_root, ruser, luser); +-#endif ++ #else ++ retval = -1; ++ #endif /* HAVE_RUSEROK */ ++#endif /*HAVE_RUSEROK_AF */ + if (retval != 0) { + if (!opt_silent || opt_debug) + pam_syslog(pamh, LOG_WARNING, "denied access to %s@%s as %s", +-- +2.4.3 + diff --git a/buildroot/package/linux-pam/Config.in b/buildroot/package/linux-pam/Config.in new file mode 100644 index 0000000..1396549 --- /dev/null +++ b/buildroot/package/linux-pam/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LINUX_PAM + bool "linux-pam" + depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_FLEX + help + A Security Framework that Provides Authentication for + Applications + + http://linux-pam.org + +comment "linux-pam needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/linux-pam/linux-pam.hash b/buildroot/package/linux-pam/linux-pam.hash new file mode 100644 index 0000000..b9c91ef --- /dev/null +++ b/buildroot/package/linux-pam/linux-pam.hash @@ -0,0 +1,2 @@ +# Locally computed hashes, not provided by upstream +sha256 241aed1ef522f66ed672719ecf2205ec513fd0075ed80cda8e086a5b1a01d1bb Linux-PAM-1.3.0.tar.bz2 diff --git a/buildroot/package/linux-pam/linux-pam.mk b/buildroot/package/linux-pam/linux-pam.mk new file mode 100644 index 0000000..5c80e78 --- /dev/null +++ b/buildroot/package/linux-pam/linux-pam.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# linux-pam +# +################################################################################ + +LINUX_PAM_VERSION = 1.3.0 +LINUX_PAM_SOURCE = Linux-PAM-$(LINUX_PAM_VERSION).tar.bz2 +LINUX_PAM_SITE = http://linux-pam.org/library +LINUX_PAM_INSTALL_STAGING = YES +LINUX_PAM_CONF_OPTS = \ + --disable-prelude \ + --disable-isadir \ + --disable-nis \ + --disable-db \ + --disable-regenerate-docu \ + --enable-securedir=/lib/security \ + --libdir=/lib +LINUX_PAM_DEPENDENCIES = flex host-flex host-pkgconf \ + $(TARGET_NLS_DEPENDENCIES) +LINUX_PAM_AUTORECONF = YES +LINUX_PAM_LICENSE = BSD-3-Clause +LINUX_PAM_LICENSE_FILES = Copyright +LINUX_PAM_MAKE_OPTS += LIBS=$(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LINUX_PAM_CONF_OPTS += --enable-selinux +LINUX_PAM_DEPENDENCIES += libselinux +define LINUX_PAM_SELINUX_PAMFILE_TWEAK + $(SED) 's/^# \(.*pam_selinux.so.*\)$$/\1/' \ + $(TARGET_DIR)/etc/pam.d/login +endef +else +LINUX_PAM_CONF_OPTS += --disable-selinux +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +LINUX_PAM_CONF_OPTS += --enable-audit +LINUX_PAM_DEPENDENCIES += audit +else +LINUX_PAM_CONF_OPTS += --disable-audit +endif + +ifeq ($(BR2_PACKAGE_CRACKLIB),y) +LINUX_PAM_CONF_OPTS += --enable-cracklib +LINUX_PAM_DEPENDENCIES += cracklib +else +LINUX_PAM_CONF_OPTS += --disable-cracklib +endif + +# Install default pam config (deny everything except login) +define LINUX_PAM_INSTALL_CONFIG + $(INSTALL) -m 0644 -D package/linux-pam/login.pam \ + $(TARGET_DIR)/etc/pam.d/login + $(INSTALL) -m 0644 -D package/linux-pam/other.pam \ + $(TARGET_DIR)/etc/pam.d/other + $(LINUX_PAM_SELINUX_PAMFILE_TWEAK) +endef + +LINUX_PAM_POST_INSTALL_TARGET_HOOKS += LINUX_PAM_INSTALL_CONFIG + +$(eval $(autotools-package)) diff --git a/buildroot/package/linux-pam/login.pam b/buildroot/package/linux-pam/login.pam new file mode 100644 index 0000000..5df7db6 --- /dev/null +++ b/buildroot/package/linux-pam/login.pam @@ -0,0 +1,12 @@ +auth required pam_unix.so nullok + +account required pam_unix.so + +password required pam_unix.so nullok + +# session required pam_selinux.so close +session required pam_limits.so +session required pam_env.so +session required pam_unix.so +session optional pam_lastlog.so +# session required pam_selinux.so open diff --git a/buildroot/package/linux-pam/other.pam b/buildroot/package/linux-pam/other.pam new file mode 100644 index 0000000..a198aa2 --- /dev/null +++ b/buildroot/package/linux-pam/other.pam @@ -0,0 +1,7 @@ +auth required pam_deny.so + +account required pam_deny.so + +password required pam_deny.so + +session required pam_deny.so diff --git a/buildroot/package/linux-syscall-support/Config.in b/buildroot/package/linux-syscall-support/Config.in new file mode 100644 index 0000000..323dfbd --- /dev/null +++ b/buildroot/package/linux-syscall-support/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LINUX_SYSCALL_SUPPORT + bool "linux-syscall-support (lss)" + help + This project provides a header file that can be included into + your application whenever you need to make direct system + calls. + + https://chromium.googlesource.com/linux-syscall-support/ diff --git a/buildroot/package/linux-syscall-support/linux-syscall-support.hash b/buildroot/package/linux-syscall-support/linux-syscall-support.hash new file mode 100644 index 0000000..3092552 --- /dev/null +++ b/buildroot/package/linux-syscall-support/linux-syscall-support.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e5088b81011e30b567b6bde6bb7c22ad529c4ee8890cc5e93d58b21f2c4df56a linux-syscall-support-3f6478ac95edf86cd3da300c2c0d34a438f5dbeb.tar.gz diff --git a/buildroot/package/linux-syscall-support/linux-syscall-support.mk b/buildroot/package/linux-syscall-support/linux-syscall-support.mk new file mode 100644 index 0000000..b8145de --- /dev/null +++ b/buildroot/package/linux-syscall-support/linux-syscall-support.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# linux-syscall-support +# +################################################################################ + +# Use the same version that the one used by Google-breakpad (see DEPS file) +LINUX_SYSCALL_SUPPORT_VERSION = 3f6478ac95edf86cd3da300c2c0d34a438f5dbeb +LINUX_SYSCALL_SUPPORT_SITE = https://chromium.googlesource.com/linux-syscall-support +LINUX_SYSCALL_SUPPORT_SITE_METHOD = git +LINUX_SYSCALL_SUPPORT_LICENSE = BSD-3-Clause +LINUX_SYSCALL_SUPPORT_LICENSE_FILES = linux_syscall_support.h + +# Provide only one header file. +LINUX_SYSCALL_SUPPORT_INSTALL_TARGET = NO +LINUX_SYSCALL_SUPPORT_INSTALL_STAGING = YES + +define LINUX_SYSCALL_SUPPORT_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/linux_syscall_support.h \ + $(STAGING_DIR)/usr/include/linux_syscall_support.h +endef + +define HOST_LINUX_SYSCALL_SUPPORT_INSTALL_CMDS + $(INSTALL) -D -m 0644 $(@D)/linux_syscall_support.h \ + $(HOST_DIR)/include/linux_syscall_support.h +endef + +$(eval $(host-generic-package)) +$(eval $(generic-package)) diff --git a/buildroot/package/linux-tools/Config.in b/buildroot/package/linux-tools/Config.in new file mode 100644 index 0000000..fd496bb --- /dev/null +++ b/buildroot/package/linux-tools/Config.in @@ -0,0 +1,90 @@ +menu "Linux Kernel Tools" + +# No prompt, this is sourced by linux/Config.in as this +# is no real package and really belongs to the kernel. +config BR2_PACKAGE_LINUX_TOOLS + bool + +config BR2_PACKAGE_LINUX_TOOLS_CPUPOWER + bool "cpupower" + depends on !BR2_bfin # pciutils + select BR2_PACKAGE_LINUX_TOOLS + select BR2_PACKAGE_PCIUTILS + help + cpupower is a collection of tools to examine and tune power + saving related features of your processor. + +config BR2_PACKAGE_LINUX_TOOLS_GPIO + bool "gpio" + select BR2_PACKAGE_LINUX_TOOLS + help + gpio is a collection of tools to get information about, + control and monitor gpios present on system. + + These tools use new gpio ABI which will deprecate sysfs gpio + interface in the future. + + These tools are available only from kernel version 4.8. + +config BR2_PACKAGE_LINUX_TOOLS_IIO + bool "iio" + select BR2_PACKAGE_LINUX_TOOLS + help + iio is a collection of tools to get information about, + control and monitor iio devices present on system. + + These tools are available only from kernel version 4.7. + +config BR2_PACKAGE_LINUX_TOOLS_PERF + bool "perf" + select BR2_PACKAGE_LINUX_TOOLS + help + perf (sometimes "Perf Events" or perf tools, originally + "Performance Counters for Linux") - is a performance + analyzing tool in Linux, available from kernel version + 2.6.31. User-space controlling utility, called 'perf' has + git-like interface with subcommands. It is capable of + statistical profiling of entire system (both kernel and user + code), single CPU or severals threads. + + This will build and install the userspace 'perf' + command. + + Your kernel must have CONFIG_PERF_EVENTS enabled to use perf + profiling. Buildroot automatically enables this in the kernel + configuration. + + https://perf.wiki.kernel.org/ + +config BR2_PACKAGE_LINUX_TOOLS_SELFTESTS + bool"selftests" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + depends on BR2_USE_MMU # bash + select BR2_PACKAGE_LINUX_TOOLS + select BR2_PACKAGE_BASH # runtime + select BR2_PACKAGE_POPT + select BR2_PACKAGE_LIBCAP_NG + help + Build and install (to /usr/lib/kselftests) kernel selftests. + + Use of this option implies you know the process of using and + compiling the kernel selftests. The Makefile to build and + install these is very noisy and may appear to cause your + build to fail for strange reasons. + + This is very much a use at your risk option and may not work + for every setup or every architecture. + +comment "selftests needs BR2_PACKAGE_BUSYBOX_SHOW_OTHERS" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + +config BR2_PACKAGE_LINUX_TOOLS_TMON + bool "tmon" + select BR2_PACKAGE_LINUX_TOOLS + select BR2_PACKAGE_NCURSES + help + tmon is a terminal-based tool (using curses) that allows the + user to access thermal information about the system. + +endmenu diff --git a/buildroot/package/linux-tools/linux-tool-cpupower.mk.in b/buildroot/package/linux-tools/linux-tool-cpupower.mk.in new file mode 100644 index 0000000..2a2d3e0 --- /dev/null +++ b/buildroot/package/linux-tools/linux-tool-cpupower.mk.in @@ -0,0 +1,41 @@ +################################################################################ +# +# cpupower +# +################################################################################ + +LINUX_TOOLS += cpupower + +CPUPOWER_DEPENDENCIES = pciutils $(TARGET_NLS_DEPENDENCIES) + +CPUPOWER_MAKE_OPTS = CROSS=$(TARGET_CROSS) \ + CPUFREQ_BENCH=false \ + NLS=false \ + LDFLAGS=$(TARGET_NLS_LIBS) \ + DEBUG=false + +define CPUPOWER_BUILD_CMDS + $(Q)if test ! -f $(LINUX_DIR)/tools/power/cpupower/Makefile ; then \ + echo "Your kernel version is too old and does not have the cpupower tool." ; \ + echo "At least kernel 3.4 must be used." ; \ + exit 1 ; \ + fi + + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(CPUPOWER_MAKE_OPTS) \ + cpupower +endef + +define CPUPOWER_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(CPUPOWER_MAKE_OPTS) \ + DESTDIR=$(STAGING_DIR) \ + cpupower_install +endef + +define CPUPOWER_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(CPUPOWER_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + cpupower_install +endef diff --git a/buildroot/package/linux-tools/linux-tool-gpio.mk.in b/buildroot/package/linux-tools/linux-tool-gpio.mk.in new file mode 100644 index 0000000..d5a0dbd --- /dev/null +++ b/buildroot/package/linux-tools/linux-tool-gpio.mk.in @@ -0,0 +1,28 @@ +################################################################################ +# +# gpio +# +################################################################################ + +LINUX_TOOLS += gpio + +GPIO_MAKE_OPTS = $(LINUX_MAKE_FLAGS) + +define GPIO_BUILD_CMDS + $(Q)if ! grep install $(LINUX_DIR)/tools/gpio/Makefile >/dev/null 2>&1 ; then \ + echo "Your kernel version is too old and does not have the gpio tools." ; \ + echo "At least kernel 4.8 must be used." ; \ + exit 1 ; \ + fi + + $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools \ + $(GPIO_MAKE_OPTS) \ + gpio +endef + +define GPIO_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools \ + $(GPIO_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + gpio_install +endef diff --git a/buildroot/package/linux-tools/linux-tool-iio.mk.in b/buildroot/package/linux-tools/linux-tool-iio.mk.in new file mode 100644 index 0000000..a8cc89e --- /dev/null +++ b/buildroot/package/linux-tools/linux-tool-iio.mk.in @@ -0,0 +1,29 @@ +################################################################################ +# +# iio +# +################################################################################ + +LINUX_TOOLS += iio + +IIO_MAKE_OPTS = $(LINUX_MAKE_FLAGS) + +define IIO_BUILD_CMDS + $(Q)if ! grep install $(LINUX_DIR)/tools/iio/Makefile >/dev/null 2>&1 ; then \ + echo "Your kernel version is too old and does not have install section in the iio tools." ; \ + echo "At least kernel 4.7 must be used." ; \ + exit 1 ; \ + fi + + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/iio \ + $(IIO_MAKE_OPTS) +endef + +# DESTDIR used since kernel version 4.14 +define IIO_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools/iio \ + $(IIO_MAKE_OPTS) \ + INSTALL_ROOT=$(TARGET_DIR) \ + DESTDIR=$(TARGET_DIR) \ + install +endef diff --git a/buildroot/package/linux-tools/linux-tool-perf.mk.in b/buildroot/package/linux-tools/linux-tool-perf.mk.in new file mode 100644 index 0000000..69492ba --- /dev/null +++ b/buildroot/package/linux-tools/linux-tool-perf.mk.in @@ -0,0 +1,142 @@ +################################################################################ +# +# perf +# +################################################################################ + +LINUX_TOOLS += perf + +PERF_DEPENDENCIES = host-flex host-bison + +ifeq ($(KERNEL_ARCH),x86_64) +PERF_ARCH=x86 +else +PERF_ARCH=$(KERNEL_ARCH) +endif + +PERF_MAKE_FLAGS = \ + $(LINUX_MAKE_FLAGS) \ + JOBS=$(PARALLEL_JOBS) \ + ARCH=$(PERF_ARCH) \ + DESTDIR=$(TARGET_DIR) \ + prefix=/usr \ + WERROR=0 \ + NO_LIBAUDIT=1 \ + NO_NEWT=1 \ + NO_GTK2=1 \ + NO_LIBPERL=1 \ + NO_LIBPYTHON=1 \ + NO_LIBBIONIC=1 + +# We need to pass an argument to ld for setting the emulation when +# building for MIPS architecture, otherwise the default one will always +# be used and the compilation for most variants will fail. +ifeq ($(BR2_mips),y) +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf32btsmip" +else ifeq ($(BR2_mipsel),y) +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf32ltsmip" +else ifeq ($(BR2_mips64),y) +ifeq ($(BR2_MIPS_NABI32),y) +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf32btsmipn32" +else +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf64btsmip" +endif +else ifeq ($(BR2_mips64el),y) +ifeq ($(BR2_MIPS_NABI32),y) +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf32ltsmipn32" +else +PERF_MAKE_FLAGS += LD="$(TARGET_LD) -m elf64ltsmip" +endif +endif + +# The call to backtrace() function fails for ARC, because for some +# reason the unwinder from libgcc returns early. Thus the usage of +# backtrace() should be disabled in perf explicitly: at build time +# backtrace() appears to be available, but it fails at runtime: the +# backtrace will contain only several functions from the top of stack, +# instead of the complete backtrace. +ifeq ($(BR2_arc),y) +PERF_MAKE_FLAGS += NO_BACKTRACE=1 +endif + +ifeq ($(BR2_PACKAGE_SLANG),y) +PERF_DEPENDENCIES += slang +else +PERF_MAKE_FLAGS += NO_SLANG=1 +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +PERF_DEPENDENCIES += libunwind +else +PERF_MAKE_FLAGS += NO_LIBUNWIND=1 +endif + +ifeq ($(BR2_PACKAGE_NUMACTL),y) +PERF_DEPENDENCIES += numactl +else +PERF_MAKE_FLAGS += NO_LIBNUMA=1 +endif + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +PERF_DEPENDENCIES += elfutils +else +PERF_MAKE_FLAGS += NO_LIBELF=1 NO_DWARF=1 +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +PERF_DEPENDENCIES += zlib +else +PERF_MAKE_FLAGS += NO_ZLIB=1 +endif + +# lzma is provided by xz +ifeq ($(BR2_PACKAGE_XZ),y) +PERF_DEPENDENCIES += xz +else +PERF_MAKE_FLAGS += NO_LZMA=1 +endif + +# We really do not want to build the perf documentation, because it +# has stringent requirement on the documentation generation tools, +# like xmlto and asciidoc), which may be lagging behind on some +# distributions. +# We name it 'GNUmakefile' so that GNU make will use it instead of +# the existing 'Makefile'. +define PERF_DISABLE_DOCUMENTATION + if [ -f $(LINUX_DIR)/tools/perf/Documentation/Makefile ]; then \ + printf "%%:\n\t@:\n" >$(LINUX_DIR)/tools/perf/Documentation/GNUmakefile; \ + fi +endef +LINUX_POST_PATCH_HOOKS += PERF_DISABLE_DOCUMENTATION + +# O must be redefined here to overwrite the one used by Buildroot for +# out of tree build. We build perf in $(LINUX_DIR)/tools/perf/ and not just +# $(LINUX_DIR) so that it isn't built in the root directory of the kernel +# sources. +define PERF_BUILD_CMDS + $(Q)if test ! -f $(LINUX_DIR)/tools/perf/Makefile ; then \ + echo "Your kernel version is too old and does not have the perf tool." ; \ + echo "At least kernel 2.6.31 must be used." ; \ + exit 1 ; \ + fi + $(Q)if test "$(BR2_PACKAGE_ELFUTILS)" = "" ; then \ + if ! grep -q NO_LIBELF $(LINUX_DIR)/tools/perf/Makefile* ; then \ + if ! test -r $(LINUX_DIR)/tools/perf/config/Makefile ; then \ + echo "The perf tool in your kernel cannot be built without libelf." ; \ + echo "Either upgrade your kernel to >= 3.7, or enable the elfutils package." ; \ + exit 1 ; \ + fi \ + fi \ + fi + $(TARGET_MAKE_ENV) $(MAKE1) $(PERF_MAKE_FLAGS) \ + -C $(LINUX_DIR)/tools/perf O=$(LINUX_DIR)/tools/perf/ +endef + +# After installation, we remove the Perl and Python scripts from the +# target. +define PERF_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(PERF_MAKE_FLAGS) \ + -C $(LINUX_DIR)/tools/perf O=$(LINUX_DIR)/tools/perf/ install + $(RM) -rf $(TARGET_DIR)/usr/libexec/perf-core/scripts/ + $(RM) -rf $(TARGET_DIR)/usr/libexec/perf-core/tests/ +endef diff --git a/buildroot/package/linux-tools/linux-tool-selftests.mk.in b/buildroot/package/linux-tools/linux-tool-selftests.mk.in new file mode 100644 index 0000000..c4e5bf0 --- /dev/null +++ b/buildroot/package/linux-tools/linux-tool-selftests.mk.in @@ -0,0 +1,46 @@ +################################################################################ +# +# selftests +# +################################################################################ + +LINUX_TOOLS += selftests + +ifeq ($(KERNEL_ARCH),x86_64) +SELFTESTS_ARCH=x86 +else +ifeq ($(KERNEL_ARCH),i386) +SELFTESTS_ARCH=x86 +else +SELFTESTS_ARCH=$(KERNEL_ARCH) +endif +endif + +SELFTESTS_DEPENDENCIES = libcap-ng popt + +SELFTESTS_MAKE_FLAGS = \ + $(LINUX_MAKE_FLAGS) \ + ARCH=$(SELFTESTS_ARCH) + +# O must be redefined here to overwrite the one used by Buildroot for +# out of tree build. We build the selftests in $(LINUX_DIR)/tools/selftests and +# not just $(LINUX_DIR) so that it isn't built in the root directory of the kernel +# sources. +# +# The headers_install step here is important as some kernel selftests use a +# hardcoded CFLAGS to find kernel headers e.g: +# CFLAGS += -I../../../../usr/include/ +# The headers_install target will install the kernel headers locally inside +# the Linux build dir +define SELFTESTS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR) $(SELFTESTS_MAKE_FLAGS) \ + headers_install + $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/testing/selftests \ + $(SELFTESTS_MAKE_FLAGS) O=$(LINUX_DIR)/tools/testing/selftests +endef + +define SELFTESTS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(LINUX_DIR)/tools/testing/selftests \ + $(SELFTESTS_MAKE_FLAGS) O=$(LINUX_DIR)/tools/testing/selftests \ + INSTALL_PATH=$(TARGET_DIR)/usr/lib/kselftests install +endef diff --git a/buildroot/package/linux-tools/linux-tool-tmon.mk.in b/buildroot/package/linux-tools/linux-tool-tmon.mk.in new file mode 100644 index 0000000..15931c3 --- /dev/null +++ b/buildroot/package/linux-tools/linux-tool-tmon.mk.in @@ -0,0 +1,37 @@ +################################################################################ +# +# tmon +# +################################################################################ + +LINUX_TOOLS += tmon + +TMON_DEPENDENCIES = host-pkgconf ncurses +TMON_MAKE_OPTS = $(LINUX_MAKE_FLAGS) \ + CC=$(TARGET_CC) \ + PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),) +define TMON_DISABLE_STACK_PROTECTOR + $(SED) 's%-fstack-protector%%' $(LINUX_DIR)/tools/thermal/tmon/Makefile +endef +endif + +define TMON_BUILD_CMDS + $(Q)if ! grep install $(LINUX_DIR)/tools/thermal/tmon/Makefile >/dev/null 2>&1 ; then \ + echo "Your kernel version is too old and does not have the tmon tool." ; \ + echo "At least kernel 3.13 must be used." ; \ + exit 1 ; \ + fi + $(TMON_DISABLE_STACK_PROTECTOR) + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(TMON_MAKE_OPTS) \ + tmon +endef + +define TMON_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(LINUX_DIR)/tools \ + $(TMON_MAKE_OPTS) \ + INSTALL_ROOT=$(TARGET_DIR) \ + tmon_install +endef diff --git a/buildroot/package/linux-tools/linux-tools.mk b/buildroot/package/linux-tools/linux-tools.mk new file mode 100644 index 0000000..ac4da59 --- /dev/null +++ b/buildroot/package/linux-tools/linux-tools.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# linux-tools +# +################################################################################ + +# Vampirising sources from the kernel tree, so no source nor site specified. +# Instead, we directly build in the sources of the linux package. We can do +# that, because we're not building in the same location and the same files. +# +# So, all tools refer to $(LINUX_DIR) instead of $(@D). + +# Note: we need individual tools makefiles to be included *before* we build +# the list of build and install hooks below to guarantee that each tool has +# a chance to register itself once, and only once. Therefore, the makefiles +# are named linux-tool-*.mk.in, so they won't be picked up by the top-level +# Makefile, but can be included here, guaranteeing the single inclusion and +# the proper ordering. + +include $(sort $(wildcard package/linux-tools/*.mk.in)) + +# We only need the kernel to be extracted, not actually built +LINUX_TOOLS_PATCH_DEPENDENCIES = linux + +# Install Linux kernel tools in the staging directory since some tools +# may install shared libraries and headers (e.g. cpupower). +LINUX_TOOLS_INSTALL_STAGING = YES + +LINUX_TOOLS_DEPENDENCIES += $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $($(call UPPERCASE,$(tool))_DEPENDENCIES))) + +LINUX_TOOLS_POST_BUILD_HOOKS += $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $(call UPPERCASE,$(tool))_BUILD_CMDS)) + +LINUX_TOOLS_POST_INSTALL_STAGING_HOOKS += $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $(call UPPERCASE,$(tool))_INSTALL_STAGING_CMDS)) + +LINUX_TOOLS_POST_INSTALL_TARGET_HOOKS += $(foreach tool,$(LINUX_TOOLS),\ + $(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\ + $(call UPPERCASE,$(tool))_INSTALL_TARGET_CMDS)) + +$(eval $(generic-package)) diff --git a/buildroot/package/linux-zigbee/0001-test-serial-Remove-test-serial.patch b/buildroot/package/linux-zigbee/0001-test-serial-Remove-test-serial.patch new file mode 100644 index 0000000..8cd9d75 --- /dev/null +++ b/buildroot/package/linux-zigbee/0001-test-serial-Remove-test-serial.patch @@ -0,0 +1,54 @@ +From 98187a5238939edc889fdaad93b00628b55d1e08 Mon Sep 17 00:00:00 2001 +From: Maxime Hadjinlian +Date: Sat, 3 May 2014 19:43:20 +0200 +Subject: [PATCH] test-serial: Remove test-serial + +This folders only contains python tests scripts which would force us to +enable a dependency to host-python which seems kind of silly since +theses are only tests scripts. + +Signed-off-by: Maxime Hadjinlian +--- + Makefile.am | 2 +- + configure.ac | 6 ------ + 2 files changed, 1 insertion(+), 7 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 265f0d7..e7bb1a1 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -2,7 +2,7 @@ include $(top_srcdir)/Makefile.common + + ACLOCAL_AMFLAGS = -I m4 + +-SUBDIRS = lib addrdb src tests test-serial ++SUBDIRS = lib addrdb src tests + + include_HEADERS = include/ieee802154.h include/nl802154.h + noinst_HEADERS = include/libcommon.h include/addrdb.h include/logging.h +diff --git a/configure.ac b/configure.ac +index 17658af..506b289 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -77,11 +77,6 @@ AC_PROG_LIBTOOL + AM_PROG_LEX + AC_PROG_YACC + AC_SUBST(LIBTOOL_DEPS) +-# Currently the scripts works with python2.x only +-# Check for this at first +-AC_PATH_PROG(PYTHON, python2 python2.7 python2.6 python2.5 python) +-AM_PATH_PYTHON(,, [:]) +-py_CHECK_MAJOR_VERSION([PYTHON_VERSION], [2]) + AM_MISSING_PROG(HELP2MAN, help2man, $missing_dir) + + # Checks for libraries. +@@ -135,6 +130,5 @@ AC_CONFIG_FILES([ + addrdb/Makefile + src/Makefile + tests/Makefile +- test-serial/Makefile + ]) + AC_OUTPUT +-- +1.9.2 + diff --git a/buildroot/package/linux-zigbee/0002-addrdb-coord-config-parse.y-add-missing-time.h-inclu.patch b/buildroot/package/linux-zigbee/0002-addrdb-coord-config-parse.y-add-missing-time.h-inclu.patch new file mode 100644 index 0000000..0ce4381 --- /dev/null +++ b/buildroot/package/linux-zigbee/0002-addrdb-coord-config-parse.y-add-missing-time.h-inclu.patch @@ -0,0 +1,43 @@ +From 8cc60d618f81f2eeaa926cd60ed9b55ee6cda6ea Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 8 Aug 2016 15:42:46 +0200 +Subject: [PATCH] addrdb/coord-config-parse.y: add missing include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The %union definition uses the time_t structure. In order to use this +structure, the header has to be included. Otherwise, the build +breaks with some C libraries, such as musl: + +In file included from coord-config-lex.l:23:0: +coord-config-parse.y:107:2: error: unknown type name ‘time_t’ + time_t timestamp; + ^ + +This patch includes using the '%code requires' directive of +Yacc. + +Signed-off-by: Thomas Petazzoni +--- + addrdb/coord-config-parse.y | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/addrdb/coord-config-parse.y b/addrdb/coord-config-parse.y +index 2e10a88..85ee058 100644 +--- a/addrdb/coord-config-parse.y ++++ b/addrdb/coord-config-parse.y +@@ -102,6 +102,10 @@ + + %} + ++%code requires { ++#include ++} ++ + %union { + unsigned long number; + time_t timestamp; +-- +2.7.4 + diff --git a/buildroot/package/linux-zigbee/Config.in b/buildroot/package/linux-zigbee/Config.in new file mode 100644 index 0000000..ff2b0f7 --- /dev/null +++ b/buildroot/package/linux-zigbee/Config.in @@ -0,0 +1,55 @@ +comment "linux-zigbee needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + +config BR2_PACKAGE_LINUX_ZIGBEE + bool "linux-zigbee" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + IEEE 802.15.4 is a standard for communication in small + low-rate wireless personal area networks (WPAN). While + 802.15.4 is a MAC- and PHY- layer standard only, several + common protocols commonly sit on top of it such as ZigBee, + MiWi, and 6LoWPAN. The goal of this project is to create an + implementation of 802.15.4 and several of the protocols + which run on top of it (primarily 6LoWPAN) for Linux. + + It's worth noting that the name linux-zigbee is somewhat of + a misnomer. While this project was originally started to + create a ZigBee implementation for Linux, licensing + restrictions put in place by the ZigBee Alliance make it + impossible for an implementation of ZigBee to ever become + part of the Linux kernel. Once this licensing issue was + discovered, this project's primary focus shifted to IEEE + 802.15.4 and 6LoWPAN. Other higher-layer standards may be + added at a future time. + + The 802.15.4 stack contains kernel components, which are + part of the mainline Linux kernel, and userspace components, + available in this package. + + http://sourceforge.net/apps/trac/linux-zigbee/ + +if BR2_PACKAGE_LINUX_ZIGBEE + +config BR2_PACKAGE_LINUX_ZIGBEE_TESTS + bool "tests programs" + help + Enable this option to install the Linux-ZigBee test programs + to the target. + +config BR2_PACKAGE_LINUX_ZIGBEE_OLD_KERNEL_COMPAT + bool "compatibility with older kernels" + help + Enable this option to get compatibility of the Linux-ZigBee + userspace tools with old kernels. Recent kernels know the + 802.15.4 line discipline as N_IEEE802154 with the value 25, + but some older kernels had it with the values 22 or 19. + +config BR2_PACKAGE_LINUX_ZIGBEE_LEASEFILE + string "path for persistent lease storage" + default "/var/run/izcoordinator.leases" + +endif diff --git a/buildroot/package/linux-zigbee/linux-zigbee.mk b/buildroot/package/linux-zigbee/linux-zigbee.mk new file mode 100644 index 0000000..8d3248f --- /dev/null +++ b/buildroot/package/linux-zigbee/linux-zigbee.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# linux-zigbee +# +################################################################################ + +LINUX_ZIGBEE_VERSION = v0.3.1 +LINUX_ZIGBEE_SITE = git://linux-zigbee.git.sourceforge.net/gitroot/linux-zigbee/linux-zigbee +LINUX_ZIGBEE_LICENSE = GPL-2.0 +LINUX_ZIGBEE_LICENSE_FILES = COPYING +LINUX_ZIGBEE_DEPENDENCIES = libnl host-pkgconf host-flex host-bison + +# We patch configure.ac/Makefile.am +LINUX_ZIGBEE_AUTORECONF = YES + +LINUX_ZIGBEE_CONF_OPTS = \ + --disable-manpages \ + --disable-werror \ + --with-leasefile="$(call qstrip,$(BR2_PACKAGE_LINUX_ZIGBEE_LEASEFILE))" + +ifeq ($(BR2_PACKAGE_LINUX_ZIGBEE_TESTS),y) +LINUX_ZIGBEE_CONF_OPTS += --with-zbtestdir='/usr/sbin/' +else +LINUX_ZIGBEE_CONF_OPTS += --with-zbtestdir='' +endif + +ifeq ($(BR2_PACKAGE_LINUX_ZIGBEE_OLD_KERNEL_COMPAT),y) +LINUX_ZIGBEE_CONF_OPTS += --enable-kernel-compat +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/linuxconsoletools/0001-conditional-build.patch b/buildroot/package/linuxconsoletools/0001-conditional-build.patch new file mode 100644 index 0000000..9f462a6 --- /dev/null +++ b/buildroot/package/linuxconsoletools/0001-conditional-build.patch @@ -0,0 +1,58 @@ +Selectively build groups of tools (inputattach, +joystick tools and/or force-feedback tools). + +Signed-off-by: Koen Martens + +diff -Naur a/utils/Makefile b/utils/Makefile +--- a/utils/Makefile 2016-04-19 23:28:36.000000000 +0200 ++++ b/utils/Makefile 2017-06-19 08:54:20.152184000 +0200 +@@ -27,8 +27,26 @@ + + CFLAGS ?= -g -O2 -Wall + +-PROGRAMS = inputattach jstest jscal fftest ffmvforce ffset \ +- ffcfstress jscal-restore jscal-store evdev-joystick ++PROGRAMS = ++ ++ifdef ENABLE_INPUTATTACH ++PROGRAMS += inputattach ++endif ++ ++ifdef ENABLE_JOYSTICK ++PROGRAMS += jstest ++PROGRAMS += jscal ++PROGRAMS += jscal-restore ++PROGRAMS += jscal-store ++PROGRAMS += evdev-joystick ++endif ++ ++ifdef ENABLE_FORCEFEEDBACK ++PROGRAMS += fftest ++PROGRAMS += ffmvforce ++PROGRAMS += ffset ++PROGRAMS += ffcfstress ++endif + + PREFIX ?= /usr/local + +@@ -79,13 +97,20 @@ + 80-stelladaptor-joystick.rules: 80-stelladaptor-joystick.rules.in + sed "s^@@PREFIX@@^$(PREFIX)^g" < $^ > $@ + ++INSTALL_DEP = compile ++ifdef ENABLE_JOYSTICK ++INSTALL_DEP += 80-stelladaptor-joystick.rules ++endif ++ + install: compile 80-stelladaptor-joystick.rules + install -d $(DESTDIR)$(PREFIX)/bin + install $(PROGRAMS) $(DESTDIR)$(PREFIX)/bin ++ifdef ENABLE_JOYSTICK + install -d $(DESTDIR)$(PREFIX)/share/joystick + install extract filter ident $(DESTDIR)$(PREFIX)/share/joystick + install -d $(DESTDIR)/lib/udev/rules.d + install js-set-enum-leds $(DESTDIR)/lib/udev + install -m 644 80-stelladaptor-joystick.rules $(DESTDIR)/lib/udev/rules.d ++endif + + .PHONY: compile clean distclean install diff --git a/buildroot/package/linuxconsoletools/0002-sdl-config.patch b/buildroot/package/linuxconsoletools/0002-sdl-config.patch new file mode 100644 index 0000000..c19c274 --- /dev/null +++ b/buildroot/package/linuxconsoletools/0002-sdl-config.patch @@ -0,0 +1,20 @@ +Specify sdl-config to use instead of using host sdl-config. + +Signed-off-by: Koen Martens + +diff -Naur a/utils/Makefile b/utils/Makefile +--- a/utils/Makefile 2017-06-16 18:48:28.402824790 +0200 ++++ b/utils/Makefile 2017-06-16 18:48:53.898696647 +0200 +@@ -69,10 +69,10 @@ + $(CC) $(CFLAGS) $(CPPFLAGS) -funsigned-char $^ $(LDFLAGS) -lm -o $@ + + ffmvforce.o: ffmvforce.c +- $(CC) $(CFLAGS) $(CPPFLAGS) -c $^ -o $@ `sdl-config --cflags` ++ $(CC) $(CFLAGS) $(CPPFLAGS) -c $^ -o $@ `${SDL_CONFIG} --cflags` + + ffmvforce: ffmvforce.o +- $(CC) $^ -o $@ $(LDFLAGS) -g -lm `sdl-config --libs` ++ $(CC) $^ -o $@ $(LDFLAGS) -g -lm `${SDL_CONFIG} --libs` + + axbtnmap.o: axbtnmap.c axbtnmap.h + diff --git a/buildroot/package/linuxconsoletools/Config.in b/buildroot/package/linuxconsoletools/Config.in new file mode 100644 index 0000000..7615027 --- /dev/null +++ b/buildroot/package/linuxconsoletools/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_LINUXCONSOLETOOLS + bool "linuxconsoletools" + select BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH if \ + !BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK && \ + !BR2_PACKAGE_LINUXCONSOLETOOLS_FORCEFEEDBACK + help + Linuxconsoletools contains the inputattach utility + to attach legacy serial devices to the Linux kernel + input layer and joystick utilities to calibrate and + test joysticks and joypads. + + http://sf.net/projects/linuxconsole/ + +if BR2_PACKAGE_LINUXCONSOLETOOLS + +config BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH + bool "inputattach" + default y + help + The inputattach utility attaches legacy serial devices + to the Linux kernel input layer. + +config BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK + bool "joystick utilities" + help + Joystick utilities (jstest, jscal, jscal-store, + jscal-restore, evdev-joystick). + +config BR2_PACKAGE_LINUXCONSOLETOOLS_FORCEFEEDBACK + bool "force-feedback utilities" + select BR2_PACKAGE_SDL + help + Build force-feedback driver utilities (fftest, + ffmvforce, ffset, ffcfstress). + +endif diff --git a/buildroot/package/linuxconsoletools/linuxconsoletools.hash b/buildroot/package/linuxconsoletools/linuxconsoletools.hash new file mode 100644 index 0000000..756c9f4 --- /dev/null +++ b/buildroot/package/linuxconsoletools/linuxconsoletools.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ced2efed00b67b45f82eddc69be07385835d558f658016315ac621fe2eaa8146 linuxconsoletools-1.6.0.tar.bz2 diff --git a/buildroot/package/linuxconsoletools/linuxconsoletools.mk b/buildroot/package/linuxconsoletools/linuxconsoletools.mk new file mode 100644 index 0000000..82ff4c3 --- /dev/null +++ b/buildroot/package/linuxconsoletools/linuxconsoletools.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# linuxconsoletools +# +################################################################################ + +LINUXCONSOLETOOLS_VERSION = 1.6.0 +LINUXCONSOLETOOLS_SOURCE = linuxconsoletools-$(LINUXCONSOLETOOLS_VERSION).tar.bz2 +LINUXCONSOLETOOLS_SITE = https://downloads.sourceforge.net/project/linuxconsole +LINUXCONSOLETOOLS_LICENSE = GPL-2.0+ +LINUXCONSOLETOOLS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LINUXCONSOLETOOLS_INPUTATTACH),y) +LINUXCONSOLETOOLS_MAKE_OPTS += ENABLE_INPUTATTACH=1 +endif + +ifeq ($(BR2_PACKAGE_LINUXCONSOLETOOLS_JOYSTICK),y) +LINUXCONSOLETOOLS_MAKE_OPTS += ENABLE_JOYSTICK=1 +endif + +ifeq ($(BR2_PACKAGE_LINUXCONSOLETOOLS_FORCEFEEDBACK),y) +LINUXCONSOLETOOLS_MAKE_OPTS += \ + ENABLE_FORCEFEEDBACK=1 \ + SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config +LINUXCONSOLETOOLS_DEPENDENCIES += sdl +endif + +define LINUXCONSOLETOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LINUXCONSOLETOOLS_MAKE_OPTS) +endef + +define LINUXCONSOLETOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(LINUXCONSOLETOOLS_MAKE_OPTS) \ + DESTDIR="$(TARGET_DIR)" \ + PREFIX=/usr \ + install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/linuxptp/Config.in b/buildroot/package/linuxptp/Config.in new file mode 100644 index 0000000..3e18a0c --- /dev/null +++ b/buildroot/package/linuxptp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LINUXPTP + bool "linuxptp" + help + The Linux PTP Project is the Precision Time Protocol + implementation according to IEEE standard 1588 for Linux. + + The dual design goals are to provide a robust implementation + of the standard and to use the most relevant and modern + Application Programming Interfaces (API) offered by the + Linux kernel. Supporting legacy APIs and other platforms is + not a goal. + + http://linuxptp.sourceforge.net/ diff --git a/buildroot/package/linuxptp/S65linuxptp b/buildroot/package/linuxptp/S65linuxptp new file mode 100755 index 0000000..46b8921 --- /dev/null +++ b/buildroot/package/linuxptp/S65linuxptp @@ -0,0 +1,46 @@ +#!/bin/sh +# +# Start linuxptp +# + +start() { + printf "Starting linuxptp daemon: " + start-stop-daemon -S -b -q -p /var/run/linuxptp-ptp4l.pid \ + -x /usr/sbin/ptp4l -- -f /etc/linuxptp.cfg + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Starting linuxptp system clock synchronization: " + start-stop-daemon -S -b -q -p /var/run/linuxptp-phc2sys.pid \ + -x /usr/sbin/phc2sys -- -s eth0 -c CLOCK_REALTIME -w -S 1.0 + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping linuxptp system clock synchronization: " + start-stop-daemon -K -q -p /var/run/linuxptp-phc2sys.pid \ + -x /usr/sbin/phc2sys + echo "OK" + + printf "Stopping linuxptp daemon: " + start-stop-daemon -K -q -p /var/run/linuxptp-ptp4l.pid \ + -x /usr/sbin/ptp4l + echo "OK" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/linuxptp/linuxptp-system-clock.service b/buildroot/package/linuxptp/linuxptp-system-clock.service new file mode 100644 index 0000000..7327254 --- /dev/null +++ b/buildroot/package/linuxptp/linuxptp-system-clock.service @@ -0,0 +1,11 @@ +[Unit] +Description=Precision Time Protocol system clock synchronization +After=syslog.target network.target + +[Service] +ExecStart=/usr/sbin/phc2sys -s /dev/ptp0 -c CLOCK_REALTIME -w -S 1.0 +Restart=always + +[Install] +WantedBy=multi-user.target +WantedBy=linuxptp.service diff --git a/buildroot/package/linuxptp/linuxptp.cfg b/buildroot/package/linuxptp/linuxptp.cfg new file mode 100644 index 0000000..f9d02e8 --- /dev/null +++ b/buildroot/package/linuxptp/linuxptp.cfg @@ -0,0 +1,19 @@ +# LinuxPTP configuration file for synchronizing the system clock to +# a remote PTP master in slave-only mode. +# +# By default synchronize time in slave-only mode using UDP and hardware time +# stamps on eth0. If the difference to master is >1.0 second correct by +# stepping the clock instead of adjusting the frequency. +# +# If you change the configuration don't forget to update the phc2sys +# parameters accordingly in linuxptp-system-clock.service (systemd) +# or the linuxptp SysV init script. + +[global] +slaveOnly 1 +delay_mechanism Auto +network_transport UDPv4 +time_stamping hardware +step_threshold 1.0 + +[eth0] diff --git a/buildroot/package/linuxptp/linuxptp.hash b/buildroot/package/linuxptp/linuxptp.hash new file mode 100644 index 0000000..ef2db56 --- /dev/null +++ b/buildroot/package/linuxptp/linuxptp.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 d0ccc4591966e21819cdc248765ebbe02456bc8ca37845eb7c23c2d1ff9bcf6b linuxptp-303b08cbf55096aba55bd08a314e0701e5c33482.tar.gz diff --git a/buildroot/package/linuxptp/linuxptp.mk b/buildroot/package/linuxptp/linuxptp.mk new file mode 100644 index 0000000..f43fee6 --- /dev/null +++ b/buildroot/package/linuxptp/linuxptp.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# linuxptp +# +################################################################################ + +LINUXPTP_VERSION = 303b08cbf55096aba55bd08a314e0701e5c33482 +LINUXPTP_SITE_METHOD = git +LINUXPTP_SITE = git://git.code.sf.net/p/linuxptp/code +LINUXPTP_LICENSE = GPL-2.0+ +LINUXPTP_LICENSE_FILES = COPYING + +LINUXPTP_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + KBUILD_OUTPUT=$(STAGING_DIR) + +LINUXPTP_MAKE_OPTS = \ + prefix=/usr \ + EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ + EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" + +define LINUXPTP_BUILD_CMDS + $(LINUXPTP_MAKE_ENV) $(MAKE) $(LINUXPTP_MAKE_OPTS) -C $(@D) all +endef + +define LINUXPTP_INSTALL_TARGET_CMDS + $(LINUXPTP_MAKE_ENV) $(MAKE) $(LINUXPTP_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) -C $(@D) install + + $(INSTALL) -D -m 644 $(LINUXPTP_PKGDIR)/linuxptp.cfg \ + $(TARGET_DIR)/etc/linuxptp.cfg +endef + +define LINUXPTP_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D $(LINUXPTP_PKGDIR)/S65linuxptp \ + $(TARGET_DIR)/etc/init.d/S65linuxptp +endef + +define LINUXPTP_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(LINUXPTP_PKGDIR)/linuxptp.service \ + $(TARGET_DIR)/usr/lib/systemd/system/linuxptp.service + $(INSTALL) -D -m 644 $(LINUXPTP_PKGDIR)/linuxptp-system-clock.service \ + $(TARGET_DIR)/usr/lib/systemd/system/linuxptp-system-clock.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/linuxptp.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/linuxptp.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/linuxptp/linuxptp.service b/buildroot/package/linuxptp/linuxptp.service new file mode 100644 index 0000000..f690430 --- /dev/null +++ b/buildroot/package/linuxptp/linuxptp.service @@ -0,0 +1,11 @@ +[Unit] +Description=Precision Time Protocol daemon +After=syslog.target network.target +Wants=linuxptp-system-clock.service + +[Service] +ExecStart=/usr/sbin/ptp4l -f /etc/linuxptp.cfg +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/liquid-dsp/Config.in b/buildroot/package/liquid-dsp/Config.in new file mode 100644 index 0000000..59ee7ed --- /dev/null +++ b/buildroot/package/liquid-dsp/Config.in @@ -0,0 +1,24 @@ +comment "liquid-dsp requires a glibc or musl toolchain w/ dynamic library" + depends on !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL) || BR2_STATIC_LIBS + +config BR2_PACKAGE_LIQUID_DSP + bool "liquid-dsp" + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL + depends on !BR2_STATIC_LIBS + help + Liquid-DSP is a free and open-source signal processing + library for software-defined radios written in C. Its + purpose is to provide a set of extensible DSP modules that + do no rely on external dependencies or cumbersome + frameworks. + + http://liquidsdr.org/ + +if BR2_PACKAGE_LIQUID_DSP + +config BR2_PACKAGE_LIQUID_DSP_FAST + bool "optimize for speed over accuracy" + help + Optimize for speed over accuracy. + +endif diff --git a/buildroot/package/liquid-dsp/liquid-dsp.hash b/buildroot/package/liquid-dsp/liquid-dsp.hash new file mode 100644 index 0000000..ecee474 --- /dev/null +++ b/buildroot/package/liquid-dsp/liquid-dsp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b136343d644bc1441f7854f2d292bfa054e8d040c0b745879b205f6836dca0f0 liquid-dsp-v1.3.0.tar.gz diff --git a/buildroot/package/liquid-dsp/liquid-dsp.mk b/buildroot/package/liquid-dsp/liquid-dsp.mk new file mode 100644 index 0000000..e3114a2 --- /dev/null +++ b/buildroot/package/liquid-dsp/liquid-dsp.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# liquid-dsp +# +################################################################################ + +LIQUID_DSP_VERSION = v1.3.0 +LIQUID_DSP_SITE = $(call github,jgaeddert,liquid-dsp,$(LIQUID_DSP_VERSION)) +LIQUID_DSP_LICENSE = MIT +LIQUID_DSP_LICENSE_FILES = LICENSE +LIQUID_DSP_INSTALL_STAGING = YES +LIQUID_DSP_AUTORECONF = YES + +LIQUID_DSP_CONF_ENV = \ + ax_cv_have_mmx_ext=$(if $(BR2_X86_CPU_HAS_MMX),yes,no) \ + ax_cv_have_sse_ext=$(if $(BR2_X86_CPU_HAS_SSE),yes,no) \ + ax_cv_have_sse2_ext=$(if $(BR2_X86_CPU_HAS_SSE2),yes,no) \ + ax_cv_have_sse3_ext=$(if $(BR2_X86_CPU_HAS_SSE3),yes,no) \ + ax_cv_have_ssse3_ext=$(if $(BR2_X86_CPU_HAS_SSSE3),yes,no) \ + ax_cv_have_sse41_ext=$(if $(BR2_X86_CPU_HAS_SSE4),yes,no) \ + ax_cv_have_sse42_ext=$(if $(BR2_X86_CPU_HAS_SSE42),yes,no) \ + ax_cv_have_avx_ext=$(if $(BR2_X86_CPU_HAS_AVX),yes,no) + +LIQUID_DSP_CFLAGS = $(TARGET_CFLAGS) +LIQUID_DSP_LDFLAGS = $(TARGET_LDFLAGS) + +# Speed over accuracy trade off +ifeq ($(BR2_PACKAGE_LIQUID_DSP_FAST),y) +LIQUID_DSP_CFLAGS += -ffast-math +endif + +# use FFTW instead of built-in FFT +ifeq ($(BR2_PACKAGE_FFTW_PRECISION_SINGLE),y) +LIQUID_DSP_LDFLAGS += -lfftw3f +endif + +# disable altivec, it has build issues +ifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y) +LIQUID_DSP_CONF_OPTS += --enable-simdoverride +endif + +ifeq ($(BR2_PACKAGE_FFTW_PRECISION_DOUBLE),y) +LIQUID_DSP_LDFLAGS += -lfftw3 +endif + +ifeq ($(BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE),y) +LIQUID_DSP_LDFLAGS += -lfftw3l +endif + +LIQUID_DSP_CONF_OPTS += \ + CFLAGS="$(LIQUID_DSP_CFLAGS)" \ + LDFLAGS="$(LIQUID_DSP_LDFLAGS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/lirc-tools/0001-Fix-build-without-Python.patch b/buildroot/package/lirc-tools/0001-Fix-build-without-Python.patch new file mode 100644 index 0000000..b1940ea --- /dev/null +++ b/buildroot/package/lirc-tools/0001-Fix-build-without-Python.patch @@ -0,0 +1,63 @@ +From 71f329d997d949d3c12d62d2f1473a1c99ee49b0 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Sun, 27 Aug 2017 21:30:37 +0300 +Subject: [PATCH] Fix build without Python + +Don't define HAVE_PYTHON35 when PYTHON_LIBS is empty. + +Also, don't build Python dependent code when HAVE_PYTHON35 is not +defined. + +This fixes build failures like: + +Makefile:1616: recipe for target 'python-pkg/dist/lirc-0.10.0.tar.gz' failed +make[3]: *** [python-pkg/dist/lirc-0.10.0.tar.gz] Error 1 +python-pkg/lirc/_client.c:1:20: fatal error: Python.h: No such file or directory + #include + ^ + +Signed-off-by: Baruch Siach +--- +Upstream status: commit 74a2bcab6b + + Makefile.am | 2 ++ + configure.ac | 3 ++- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 9f3dd14340cc..d8164fcd44cf 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -104,6 +104,7 @@ dist_py_pkg_doc_DATA = python-pkg/doc/Doxyfile \ + + libpython = $(libdir)/python$(PYTHON_VERSION) + pydir = $(libpython)/site-packages/lirc ++if HAVE_PYTHON35 + py_LTLIBRARIES = python-pkg/lib/_client.la + python_pkg_lib__client_la_SOURCES = \ + python-pkg/lirc/_client.c +@@ -116,6 +117,7 @@ python_pkg_lib__client_la_LDFLAGS = \ + $(PYTHON_LIBS) + python_pkg_lib__client_la_LIBADD = \ + lib/liblirc_client.la ++endif + + pylint: .phony + $(MAKE) -C tools pylint +diff --git a/configure.ac b/configure.ac +index 4108688433f8..07d901deafdf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -50,7 +50,8 @@ test -z "$PYTHON_LIBS" && \ + test -n "$PYTHON_LIBS" || \ + AC_MSG_WARN([No python package found (missing devel package?)]) + python_version_nodots=$(echo $PYTHON_VERSION | tr -d '.') +-AM_CONDITIONAL(HAVE_PYTHON35, [test $python_version_nodots -ge 35]) ++AM_CONDITIONAL(HAVE_PYTHON35, [test -n "$PYTHON_LIBS" && \ ++ test $python_version_nodots -ge 35]) + CFLAGS="$CFLAGS $PYTHON_CFLAGS" + + +-- +2.14.1 + diff --git a/buildroot/package/lirc-tools/0002-Fix-python-client-cross-compile.patch b/buildroot/package/lirc-tools/0002-Fix-python-client-cross-compile.patch new file mode 100644 index 0000000..02deefa --- /dev/null +++ b/buildroot/package/lirc-tools/0002-Fix-python-client-cross-compile.patch @@ -0,0 +1,47 @@ +From 13c4ffcfde07f659a836fba4a604dc1c5024bb90 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 29 Aug 2017 11:37:36 +0300 +Subject: [PATCH] Fix python client cross compile + +The setup.py setuptools wrapper needs to use a version of python built +specifically for cross compiling to cross compile successfully. Allow +setting that in the environment using the SETUPTOOLS_ENV variable. + +Fixes the following build failure: + +/usr/bin/ld: skipping incompatible .../lirc-tools-0.10.0/lib/.libs/liblirc_client.so when searching for -llirc_client +/usr/bin/ld: cannot find -llirc_client +collect2: error: ld returned 1 exit status +error: command '/usr/bin/gcc' failed with exit status 1 +Makefile:1578: recipe for target 'all-local' failed + +Signed-off-by: Baruch Siach +--- +Upstream status: https://sourceforge.net/p/lirc/tickets/308/ + + Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Makefile.am b/Makefile.am +index d8164fcd44cf..a16be4278ae2 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -131,6 +131,7 @@ pep8: $(py_PYTHON) + if HAVE_PYTHON35 + all-local: + cd python-pkg; \ ++ $(SETUPTOOLS_ENV) \ + CFLAGS="-I$(abs_top_srcdir)/lib -I$(abs_builddir)/lib" \ + LDFLAGS=-L$(abs_builddir)/lib/.libs $(PYTHON) setup.py \ + $(if $(VERBOSE),,-q) build +@@ -179,6 +180,7 @@ $(abs_builddir)/python-pkg/setup.py: + $(PYTHON_TARBALL): $(abs_builddir)/python-pkg/setup.py + cp $(top_builddir)/VERSION $(abs_builddir)/python-pkg + cd $(abs_builddir)/python-pkg; CFLAGS=-I$(abs_top_srcdir)/lib \ ++ $(SETUPTOOLS_ENV) \ + LDFLAGS=-L$(abs_builddir)/lib/.libs $(PYTHON) setup.py -q sdist + + $(top_builddir)/python-pkg/VERSION: VERSION +-- +2.14.1 + diff --git a/buildroot/package/lirc-tools/0003-python-pkg-Fix-lirc-version-detection-when-cross-com.patch b/buildroot/package/lirc-tools/0003-python-pkg-Fix-lirc-version-detection-when-cross-com.patch new file mode 100644 index 0000000..04fbfe6 --- /dev/null +++ b/buildroot/package/lirc-tools/0003-python-pkg-Fix-lirc-version-detection-when-cross-com.patch @@ -0,0 +1,51 @@ +From 732fd31610a6790a927ea9ed6d660796a1641254 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 7 Sep 2017 08:12:01 +0200 +Subject: [PATCH] build: Fix lirc version detection when cross compiling. + +The setup.py script that runs on the host can't use the client library +built for target. So setup.py falls back to a wrong hard-coded VERSION +value. + +Instead of importing the target library, use exec() to read +lirc/config.py directly for its VERSION value. + +Fixes build failure: + +/usr/bin/install -c -m 644 ./python-pkg/dist/lirc-0.10.0.tar.gz \ + '.../output/host/arm-buildroot-linux-musleabihf/sysroot/usr/share/lirc' +/usr/bin/install: cannot stat './python-pkg/dist/lirc-0.10.0.tar.gz': \ + No such file or directory + +Signed-off-by: Baruch Siach +--- +Upstream status: commit 732fd31610a6 + + python-pkg/setup.py | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +diff --git a/python-pkg/setup.py b/python-pkg/setup.py +index e9b33690f828..a2d92e0432aa 100644 +--- a/python-pkg/setup.py ++++ b/python-pkg/setup.py +@@ -6,14 +6,11 @@ import subprocess + import os.path + import os + +-try: +- import lirc.config +- VERSION = lirc.config.VERSION.replace('-devel','') +-except ImportError: +- VERSION='0.0.0' +- + from setuptools import setup, Extension + ++exec(open("lirc/config.py").read()) ++VERSION = VERSION.replace('-devel','') ++ + if 'CFLAGS' in os.environ: + cflags = os.environ['CFLAGS'].split() + if 'LDFLAGS' in os.environ: +-- +2.14.1 + diff --git a/buildroot/package/lirc-tools/Config.in b/buildroot/package/lirc-tools/Config.in new file mode 100644 index 0000000..6eaf828 --- /dev/null +++ b/buildroot/package/lirc-tools/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_LIRC_TOOLS + bool "lirc-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + # dlopen() + depends on !BR2_STATIC_LIBS + help + LIRC is a package that supports receiving and sending IR + signals of the most common IR remote controls. It contains a + daemon that decodes and sends IR signals, a mouse daemon + that translates IR signals to mouse movements and a couple + of user programs that allow to control your computer with a + remote control. + + It requires the kernel LIRC interface driver, make sure to + enable the kernel drivers to support your hardware. + + http://www.lirc.org/ + +comment "lirc-tools needs a toolchain w/ threads, dynamic library, C++" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/lirc-tools/S25lircd b/buildroot/package/lirc-tools/S25lircd new file mode 100755 index 0000000..7a0ec2f --- /dev/null +++ b/buildroot/package/lirc-tools/S25lircd @@ -0,0 +1,38 @@ +#!/bin/sh +# +# Start lirc +# +# Support for remotes - Add remotes to /etc/lirc/lircd.conf.d/ +# + +start() { + printf "Starting lirc: " + mkdir -p /var/run/lirc + ln -sf /var/run/lirc/lircd /dev/lircd + start-stop-daemon -b -S -q -m -p /var/run/lirc.pid --exec /usr/sbin/lircd -- -n -O /etc/lirc/lirc_options.conf + echo "OK" +} + +stop() { + printf "Stopping lirc: " + start-stop-daemon -K -q -p /var/run/lirc.pid + echo "OK" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/lirc-tools/lirc-tools.hash b/buildroot/package/lirc-tools/lirc-tools.hash new file mode 100644 index 0000000..ed5ecfd --- /dev/null +++ b/buildroot/package/lirc-tools/lirc-tools.hash @@ -0,0 +1,5 @@ +# hash from https://sourceforge.net/projects/lirc/files/LIRC/0.10.1/ +sha1 9d6f6d18ac566a96ef4ca1d6909a4e8bc517d48a lirc-0.10.1.tar.bz2 +md5 86c3f8e4efaba10571addb8313d1e040 lirc-0.10.1.tar.bz2 +# Locally computed +sha256 8b753c60df2a7f5dcda2db72c38e448ca300c3b4f6000c1501fcb0bd5df414f2 lirc-0.10.1.tar.bz2 diff --git a/buildroot/package/lirc-tools/lirc-tools.mk b/buildroot/package/lirc-tools/lirc-tools.mk new file mode 100644 index 0000000..a5165ad --- /dev/null +++ b/buildroot/package/lirc-tools/lirc-tools.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# lirc-tools +# +################################################################################ + +LIRC_TOOLS_VERSION = 0.10.1 +LIRC_TOOLS_SOURCE = lirc-$(LIRC_TOOLS_VERSION).tar.bz2 +LIRC_TOOLS_SITE = http://downloads.sourceforge.net/project/lirc/LIRC/$(LIRC_TOOLS_VERSION) +LIRC_TOOLS_LICENSE = GPL-2.0+ +LIRC_TOOLS_LICENSE_FILES = COPYING +LIRC_TOOLS_DEPENDENCIES = host-libxslt host-pkgconf host-python3 +LIRC_TOOLS_INSTALL_STAGING = YES +# Patching configure.ac and Makefile.am +LIRC_TOOLS_AUTORECONF = YES + +LIRC_TOOLS_CONF_ENV = XSLTPROC=yes HAVE_WORKING_POLL=yes +LIRC_TOOLS_CONF_OPTS = --without-x --enable-devinput --enable-uinput + +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4),y) +LIRC_TOOLS_CONF_ENV += \ + DEVINPUT_HEADER=$(STAGING_DIR)/usr/include/linux/input-event-codes.h +else +LIRC_TOOLS_CONF_ENV += \ + DEVINPUT_HEADER=$(STAGING_DIR)/usr/include/linux/input.h +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +LIRC_TOOLS_DEPENDENCIES += udev +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +LIRC_TOOLS_DEPENDENCIES += alsa-lib +endif + +ifeq ($(BR2_PACKAGE_LIBUSB_COMPAT),y) +LIRC_TOOLS_DEPENDENCIES += libusb-compat +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +LIRC_TOOLS_DEPENDENCIES += portaudio +endif + +ifeq ($(BR2_PACKAGE_LIBFTDI1),y) +LIRC_TOOLS_DEPENDENCIES += libftdi1 +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +LIRC_TOOLS_DEPENDENCIES += python3 host-python-setuptools +LIRC_TOOLS_MAKE_ENV += SETUPTOOLS_ENV="$(PKG_PYTHON_SETUPTOOLS_ENV)" +endif + +define LIRC_TOOLS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/lirc-tools/S25lircd \ + $(TARGET_DIR)/etc/init.d/S25lircd +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/lite/0001-dfbspy-stat.patch b/buildroot/package/lite/0001-dfbspy-stat.patch new file mode 100644 index 0000000..5ca7369 --- /dev/null +++ b/buildroot/package/lite/0001-dfbspy-stat.patch @@ -0,0 +1,53 @@ +From upstream git (git://git.directfb.org/git/directfb/libs/LiTE.git) + +From ffe0ce78327a63ddb1265328ea9b5b03acdca019 Mon Sep 17 00:00:00 2001 +From: Denis Oliver Kropp +Date: Fri, 1 Apr 2011 20:20:26 +0200 +Subject: [PATCH] dfbspy: Build fix for dfbspy example. + +--- + examples/dfbspy.c | 20 ++++++++++---------- + 1 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/examples/dfbspy.c b/examples/dfbspy.c +index 5f36f0b..c7f9725 100644 +--- a/examples/dfbspy.c ++++ b/examples/dfbspy.c +@@ -89,9 +89,9 @@ read_stat( FusionStat *stat, int world ) + + /**************************************************************************************************/ + +-#define CALC(x) stat.x = (int)(((s.x - last_stat.x) * 1000 / (float) diff) + 0.5f) ++#define CALC(x) stats.x = (int)(((s.x - last_stat.x) * 1000 / (float) diff) + 0.5f) + +-static FusionStat last_stat, stat; ++static FusionStat last_stat, stats; + static long long last_millis; + + static int +@@ -145,14 +145,14 @@ static const struct { + void (*update)( LiteLabel *label, void *ctx ); + void *ctx; + } list[] = { +- { "lease/purchase", update_number, &stat.lease_purchase }, +- { "cede", update_number, &stat.cede }, +- { "attach", update_number, &stat.attach }, +- { "detach", update_number, &stat.detach }, +- { "ref up", update_number, &stat.ref_up }, +- { "ref down", update_number, &stat.ref_down }, +- { "prevail/swoop", update_number, &stat.prevail_swoop }, +- { "dismiss", update_number, &stat.dismiss } ++ { "lease/purchase", update_number, &stats.lease_purchase }, ++ { "cede", update_number, &stats.cede }, ++ { "attach", update_number, &stats.attach }, ++ { "detach", update_number, &stats.detach }, ++ { "ref up", update_number, &stats.ref_up }, ++ { "ref down", update_number, &stats.ref_down }, ++ { "prevail/swoop", update_number, &stats.prevail_swoop }, ++ { "dismiss", update_number, &stats.dismiss } + }; + + #define NUM_LIST (sizeof(list)/sizeof(list[0])) +-- +1.7.6.3 + diff --git a/buildroot/package/lite/0002-no-tests.patch b/buildroot/package/lite/0002-no-tests.patch new file mode 100644 index 0000000..3a47186 --- /dev/null +++ b/buildroot/package/lite/0002-no-tests.patch @@ -0,0 +1,11 @@ +--- a/Makefile.in.orig 2008-07-07 13:07:12.000000000 +0200 ++++ b/Makefile.in 2008-07-07 13:07:05.000000000 +0200 +@@ -202,7 +202,7 @@ + target_vendor = @target_vendor@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ +-SUBDIRS = data fonts lite leck examples tests ++SUBDIRS = data fonts lite leck examples + EXTRA_DIST = TODO lite.pc.in leck.pc.in + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = lite.pc leck.pc diff --git a/buildroot/package/lite/0003-pkg-config.patch b/buildroot/package/lite/0003-pkg-config.patch new file mode 100644 index 0000000..cdd2416 --- /dev/null +++ b/buildroot/package/lite/0003-pkg-config.patch @@ -0,0 +1,22 @@ +From 7982cccbb6ad58f3802bb266467290200d130a48 Mon Sep 17 00:00:00 2001 +From: Ville Syrjala +Date: Sat, 27 Nov 2010 01:14:25 +0200 +Subject: [PATCH] Too many '\' characters in the .pc file + +--- + lite.pc.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/lite.pc.in b/lite.pc.in +index 48eb969..3a21eaa 100644 +--- a/lite.pc.in ++++ b/lite.pc.in +@@ -9,4 +9,4 @@ Description: "LiTE" is a Toolkit Engine + Requires: directfb >= @DFB_REQUIRED_VERSION@ + Version: @VERSION@ + Libs: -L${libdir} -llite +-Cflags: -I${includedir} -DLITEFONTDIR=\\\"@LITEFONTDIR@\\\" ++Cflags: -I${includedir} -DLITEFONTDIR=\"@LITEFONTDIR@\" +-- +1.7.1 + diff --git a/buildroot/package/lite/Config.in b/buildroot/package/lite/Config.in new file mode 100644 index 0000000..62cd21e --- /dev/null +++ b/buildroot/package/lite/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LITE + bool "LiTE (toolbox engine)" + depends on BR2_PACKAGE_DIRECTFB + help + LiTE stands for LiTE is a Toolbox Engine. + Its role is to facilitate the functions of DirectFB so that a + toolbox could be written on top of DirectFB with less effort. + As such LiTE has abstractions for the underlying graphics and + event systems. + + See http://www.directfb.org/wiki/index.php/LiTE:Architecture diff --git a/buildroot/package/lite/lite.hash b/buildroot/package/lite/lite.hash new file mode 100644 index 0000000..9da6b4b --- /dev/null +++ b/buildroot/package/lite/lite.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1b784cf595c3d5313e3705db210119f77d48826dbc7fcf6328af83a1270c2264 LiTE-0.8.10.tar.gz diff --git a/buildroot/package/lite/lite.mk b/buildroot/package/lite/lite.mk new file mode 100644 index 0000000..ddb55d4 --- /dev/null +++ b/buildroot/package/lite/lite.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# lite +# +################################################################################ + +LITE_VERSION = 0.8.10 +LITE_SOURCE = LiTE-$(LITE_VERSION).tar.gz +LITE_SITE = http://www.directfb.org/downloads/Libs +LITE_INSTALL_STAGING = YES +LITE_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install +LITE_CONF_ENV = DFB_CFLAGS=-I$(STAGING_DIR)/usr/include/directfb +LITE_DEPENDENCIES = directfb +LITE_LICENSE = LGPL-2.1+ +LITE_LICENSE_FILES = COPYING + +define LITE_FINALIZE_INSTALL + $(INSTALL) -d $(TARGET_DIR)/usr/share/LiTE/examples/ + $(INSTALL) -d $(TARGET_DIR)/usr/share/fonts/truetype/ + $(INSTALL) -m0644 $(@D)/data/*.png $(TARGET_DIR)/usr/share/LiTE/ + $(INSTALL) -m0644 $(@D)/examples/*.png $(TARGET_DIR)/usr/share/LiTE/examples/ + $(INSTALL) -m0644 $(@D)/fonts/*.ttf $(TARGET_DIR)/usr/share/fonts/truetype/ +endef + +LITE_POST_INSTALL_TARGET_HOOKS += LITE_FINALIZE_INSTALL + +$(eval $(autotools-package)) diff --git a/buildroot/package/live555/Config.in b/buildroot/package/live555/Config.in new file mode 100644 index 0000000..dbd9dfd --- /dev/null +++ b/buildroot/package/live555/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LIVE555 + bool "live555" + depends on BR2_INSTALL_LIBSTDCPP + help + LIVE555 Streaming Media forms a set of C++ libraries for + multimedia streaming, using open standard protocols + (RTP/RTCP, RTSP, SIP). + + http://www.live555.com/liveMedia/ + +comment "live555 needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/live555/live555.hash b/buildroot/package/live555/live555.hash new file mode 100644 index 0000000..66a7b7d --- /dev/null +++ b/buildroot/package/live555/live555.hash @@ -0,0 +1,5 @@ +# From http://live555.com/liveMedia/public/live555-latest-md5.txt +md5 a5acd14c4fa7b50f7270304d3b4a70ae live.2017.10.28.tar.gz +# Locally generated +sha256 d8eaec9ded34321aa655d3c9007217dd447218c54cb48c97827e58ecd5edb338 live.2017.10.28.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/live555/live555.mk b/buildroot/package/live555/live555.mk new file mode 100644 index 0000000..0507ee9 --- /dev/null +++ b/buildroot/package/live555/live555.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# live555 +# +################################################################################ + +LIVE555_VERSION = 2017.10.28 +LIVE555_SOURCE = live.$(LIVE555_VERSION).tar.gz +LIVE555_SITE = http://www.live555.com/liveMedia/public +LIVE555_LICENSE = LGPL-2.1+ +LIVE555_LICENSE_FILES = COPYING +LIVE555_INSTALL_STAGING = YES + +LIVE555_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_STATIC_LIBS),y) +LIVE555_CONFIG_TARGET = linux +LIVE555_LIBRARY_LINK = $(TARGET_AR) cr +else +LIVE555_CONFIG_TARGET = linux-with-shared-libraries +LIVE555_LIBRARY_LINK = $(TARGET_CC) -o +LIVE555_CFLAGS += -fPIC +endif + +ifndef ($(BR2_ENABLE_LOCALE),y) +LIVE555_CFLAGS += -DLOCALE_NOT_USED +endif + +define LIVE555_CONFIGURE_CMDS + echo 'COMPILE_OPTS = $$(INCLUDES) -I. -DSOCKLEN_T=socklen_t $(LIVE555_CFLAGS)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + echo 'C_COMPILER = $(TARGET_CC)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + echo 'CPLUSPLUS_COMPILER = $(TARGET_CXX)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + + echo 'LINK = $(TARGET_CXX) -o' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + echo 'LINK_OPTS = -L. $(TARGET_LDFLAGS)' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + echo 'PREFIX = /usr' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + # Must have a whitespace at the end of LIBRARY_LINK, otherwise static link + # fails + echo 'LIBRARY_LINK = $(LIVE555_LIBRARY_LINK) ' >> $(@D)/config.$(LIVE555_CONFIG_TARGET) + (cd $(@D); ./genMakefiles $(LIVE555_CONFIG_TARGET)) +endef + +define LIVE555_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) all +endef + +define LIVE555_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) install +endef + +define LIVE555_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ljlinenoise/Config.in b/buildroot/package/ljlinenoise/Config.in new file mode 100644 index 0000000..61c80df --- /dev/null +++ b/buildroot/package/ljlinenoise/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LJLINENOISE + bool "ljlinenoise" + # ljsyscall is specifically for LuaJIT, not Lua. + depends on BR2_PACKAGE_LUAJIT + # run-time dependency only + select BR2_PACKAGE_LJSYSCALL + help + ljlinenoise is a pure LuaJIT port of linenoise, + a small alternative to readline and libedit. + + http://fperrad.github.io/ljlinenoise/ + +comment "ljlinenoise needs LuaJIT" + depends on !BR2_PACKAGE_LUAJIT diff --git a/buildroot/package/ljlinenoise/ljlinenoise.hash b/buildroot/package/ljlinenoise/ljlinenoise.hash new file mode 100644 index 0000000..c70b5d6 --- /dev/null +++ b/buildroot/package/ljlinenoise/ljlinenoise.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7a6c4142b0096106f498d7ee4bea5bf5086c076d1f071893441b8e5c0665fb47 ljlinenoise-0.1.3-1.src.rock diff --git a/buildroot/package/ljlinenoise/ljlinenoise.mk b/buildroot/package/ljlinenoise/ljlinenoise.mk new file mode 100644 index 0000000..f021d93 --- /dev/null +++ b/buildroot/package/ljlinenoise/ljlinenoise.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# ljlinenoise +# +################################################################################ + +LJLINENOISE_VERSION = 0.1.3-1 +LJLINENOISE_LICENSE = MIT +LJLINENOISE_LICENSE_FILES = $(LJLINENOISE_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/buildroot/package/ljsyscall/Config.in b/buildroot/package/ljsyscall/Config.in new file mode 100644 index 0000000..3af9dab --- /dev/null +++ b/buildroot/package/ljsyscall/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LJSYSCALL + bool "ljsyscall" + # ljsyscall is specifically for LuaJIT, not Lua. + depends on BR2_PACKAGE_LUAJIT + help + An FFI implementation of the Linux and NetBSD kernel ABIs for + LuaJIT. + + http://github.com/justincormack/ljsyscall + +comment "ljsyscall needs LuaJIT" + depends on !BR2_PACKAGE_LUAJIT diff --git a/buildroot/package/ljsyscall/ljsyscall.hash b/buildroot/package/ljsyscall/ljsyscall.hash new file mode 100644 index 0000000..114aa84 --- /dev/null +++ b/buildroot/package/ljsyscall/ljsyscall.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6e29503609bd966fed33dec1a1571b36bbdbc37bf1a828af6722ed0ead192ff1 ljsyscall-v0.12.tar.gz diff --git a/buildroot/package/ljsyscall/ljsyscall.mk b/buildroot/package/ljsyscall/ljsyscall.mk new file mode 100644 index 0000000..45e9e82 --- /dev/null +++ b/buildroot/package/ljsyscall/ljsyscall.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# ljsyscall +# +################################################################################ + +LJSYSCALL_VERSION = v0.12 +LJSYSCALL_SITE = $(call github,justincormack,ljsyscall,$(LJSYSCALL_VERSION)) +LJSYSCALL_LICENSE = MIT +LJSYSCALL_LICENSE_FILES = COPYRIGHT + +# dispatch all architectures of LuaJIT +ifeq ($(BR2_i386),y) +LJSYSCALL_ARCH = x86 +else ifeq ($(BR2_x86_64),y) +LJSYSCALL_ARCH = x64 +else ifeq ($(BR2_powerpc),y) +LJSYSCALL_ARCH = ppc +else ifeq ($(BR2_arm)$(BR2_armeb),y) +LJSYSCALL_ARCH = arm +else ifeq ($(BR2_mips)$(BR2_mipsel),y) +LJSYSCALL_ARCH = mips +else +LJSYSCALL_ARCH = $(BR2_ARCH) +endif + +LJSYSCALL_TARGET_DIR = $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER) + +define LJSYSCALL_INSTALL_TARGET_CMDS + $(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall + $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/ $(@D)/syscall.lua + $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall $(@D)/syscall/*.lua + + $(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall/linux/$(LJSYSCALL_ARCH) + $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/linux/ $(@D)/syscall/linux/*.lua + $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/linux/$(LJSYSCALL_ARCH) $(@D)/syscall/linux/$(LJSYSCALL_ARCH)/*.lua + + $(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall/shared + $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/shared/ $(@D)/syscall/shared/*.lua +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/lksctp-tools/Config.in b/buildroot/package/lksctp-tools/Config.in new file mode 100644 index 0000000..9c95ef5 --- /dev/null +++ b/buildroot/package/lksctp-tools/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LKSCTP_TOOLS + bool "lksctp-tools" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # dlopen() + help + The lksctp-tools project provides a Linux user space library + for SCTP (libsctp) including C language header files + (netinet/sctp.h) for accessing SCTP specific application + programming interfaces not provided by the standard sockets, + and also some helper utilities around SCTP. + + http://lksctp.sourceforge.net/ + +comment "lksctp-tools needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/lksctp-tools/lksctp-tools.hash b/buildroot/package/lksctp-tools/lksctp-tools.hash new file mode 100644 index 0000000..0ecc8ff --- /dev/null +++ b/buildroot/package/lksctp-tools/lksctp-tools.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/lksctp/files/lksctp-tools/ +md5 68e9b8fa4d4e331029b247b72d46d7a5 lksctp-tools-1.0.17.tar.gz +sha1 941b0b5c39e364a971f514bba66120435660e518 lksctp-tools-1.0.17.tar.gz diff --git a/buildroot/package/lksctp-tools/lksctp-tools.mk b/buildroot/package/lksctp-tools/lksctp-tools.mk new file mode 100644 index 0000000..5ac794e --- /dev/null +++ b/buildroot/package/lksctp-tools/lksctp-tools.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# lksctp-tools +# +################################################################################ + +LKSCTP_TOOLS_VERSION = 1.0.17 +LKSCTP_TOOLS_SITE = http://downloads.sourceforge.net/project/lksctp/lksctp-tools +LKSCTP_TOOLS_INSTALL_STAGING = YES +# configure not shipped +LKSCTP_TOOLS_AUTORECONF = YES +LKSCTP_TOOLS_LICENSE = LGPL-2.1 (library), GPL-2.0+ (programs) +LKSCTP_TOOLS_LICENSE_FILES = COPYING.lib COPYING +LKSCTP_TOOLS_CONF_OPTS = --disable-tests + +# Cleanup installed target source code +define LKSCTP_TOOLS_CLEANUP_TARGET + rm -rf $(TARGET_DIR)/usr/share/lksctp-tools +endef +LKSCTP_TOOLS_POST_INSTALL_TARGET_HOOKS += LKSCTP_TOOLS_CLEANUP_TARGET + +$(eval $(autotools-package)) diff --git a/buildroot/package/lldpd/0001-build-make-generation-of-atom-glue-compatible-with-o.patch b/buildroot/package/lldpd/0001-build-make-generation-of-atom-glue-compatible-with-o.patch new file mode 100644 index 0000000..d5675d3 --- /dev/null +++ b/buildroot/package/lldpd/0001-build-make-generation-of-atom-glue-compatible-with-o.patch @@ -0,0 +1,43 @@ +From 106aa50d4e5b336f7dd2d5cf4d882e692d205e91 Mon Sep 17 00:00:00 2001 +From: Vincent Bernat +Date: Sat, 18 Jun 2016 22:18:41 +0200 +Subject: [PATCH] build: make generation of atom-glue compatible with older gcc + versions + +With old versions, cpp doesn't accept several files as input. See #186. + +Signed-off-by: Vivien Didelot +--- + src/lib/Makefile.am | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am +index 250e32a..2a5cdb3 100644 +--- a/src/lib/Makefile.am ++++ b/src/lib/Makefile.am +@@ -20,8 +20,9 @@ nodist_liblldpctl_la_SOURCES = atom-glue.c + liblldpctl_la_LIBADD = $(top_builddir)/src/libcommon-daemon-lib.la libfixedpoint.la + + atom-glue.c: $(ATOM_FILES) Makefile +- $(AM_V_GEN)($(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(ATOM_FILES:%=$(srcdir)/%) | \ ++ $(AM_V_GEN)(for f in $(ATOM_FILES:%=$(srcdir)/%); do \ ++ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $$f; done | \ + $(SED) -n 's+^void init_atom_builder_\([^(]*\)().*, \([0-9]*\)).*+\2 \1+p' | \ + sort | \ + $(AWK) '{ atoms[$$2] = 1 } \ +@@ -30,8 +31,9 @@ atom-glue.c: $(ATOM_FILES) Makefile + print " static int init = 0; if (init) return; init++;"; \ + for (atom in atoms) { print " init_atom_builder_"atom"();" } \ + print "}"; }' && \ ++ for f in $(ATOM_FILES:%=$(srcdir)/%); do \ + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(ATOM_FILES:%=$(srcdir)/%) | \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $$f; done | \ + $(SED) -n 's+^void init_atom_map_\([^(]*\)().*, \([0-9]*\)).*+\2 \1+p' | \ + sort -n | \ + $(AWK) '{ atoms[$$2] = 1 } \ +-- +2.9.0 + diff --git a/buildroot/package/lldpd/0002-configure-do-not-check-for-libbsd.patch b/buildroot/package/lldpd/0002-configure-do-not-check-for-libbsd.patch new file mode 100644 index 0000000..4d63274 --- /dev/null +++ b/buildroot/package/lldpd/0002-configure-do-not-check-for-libbsd.patch @@ -0,0 +1,61 @@ +From 0801a066cd4a24a858ddfa7c62c7802e0f5533a8 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 14 Aug 2016 12:15:17 +0200 +Subject: [PATCH] configure: do not check for libbsd + +libbsd causes build issues because its libbsd-overlay.pc file is borked: +it contains -isystem in CFLAGS, which is not munged by pkgconf, so we +end up using the headers of the build machine, causing all sorts of +hard-to-debug trouble at build time. + +lldpd uses libbsd-overlay for a few helper functions, but has fallbacks +in case it is not available. The only feature that is lost when not using +it is that the neighbour name is no longer displayed in /proc/self/cmdline. +As the author of lldpd said on IRC: "people should survive! ;-)" + +So we just remove the detection of libbsd altogether. + +Fixes: + http://autobuild.buildroot.org/results/6b7/6b70fa379e834ec71cc260ba6af771b531ca3511/ + http://autobuild.buildroot.org/results/769/769074c4bb67336ae6679f2c1cd2a8220d2bec24/ + http://autobuild.buildroot.org/results/c8a/c8a6001f437701ecc75f6c9252935645bda8a8c8/ + [...] + +Signed-off-by: "Yann E. MORIN" +--- + configure.ac | 19 ------------------- + 1 file changed, 19 deletions(-) + +diff --git a/configure.ac b/configure.ac +index dd723b0..45498ce 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -165,25 +165,6 @@ AC_FUNC_MALLOC + AC_FUNC_REALLOC + AC_FUNC_FORK + +-# Some functions can be in libbsd +-PKG_CHECK_MODULES([libbsd], [libbsd-overlay], [ +- _save_CFLAGS="$CFLAGS" +- _save_LIBS="$LIBS" +- CFLAGS="$CFLAGS $libbsd_CFLAGS" +- LIBS="$LIBS $libbsd_LIBS" +- AC_MSG_CHECKING([if libbsd can be linked correctly]) +- AC_LINK_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])], +- [ +- AC_MSG_RESULT(yes) +- LLDP_CFLAGS="$LLDP_CFLAGS $libbsd_CFLAGS" +- LLDP_LDFLAGS="$LLDP_LDFLAGS $libbsd_LIBS" +- ],[ +- AC_MSG_RESULT(no) +- CFLAGS="$_save_CFLAGS" +- LIBS="$_save_LIBS" +- ]) +-], [:]) +- + # setproctitle may have an _init function + AC_REPLACE_FUNCS([setproctitle]) + AC_CHECK_FUNCS([setproctitle_init]) +-- +2.7.4 + diff --git a/buildroot/package/lldpd/0003-configure-remove-check-on-CXX-compiler.patch b/buildroot/package/lldpd/0003-configure-remove-check-on-CXX-compiler.patch new file mode 100644 index 0000000..880f603 --- /dev/null +++ b/buildroot/package/lldpd/0003-configure-remove-check-on-CXX-compiler.patch @@ -0,0 +1,35 @@ +From d28b3bfa1b224f7770004dddf4dfaf10ad7ad6c9 Mon Sep 17 00:00:00 2001 +From: Damien Riegel +Date: Mon, 18 Dec 2017 14:37:08 -0500 +Subject: [PATCH] configure: remove check on CXX compiler + +lldpd fails to build if the toolchain doesn't have a C++ compiler +because configure fails with the following error: + + checking how to run the C++ preprocessor... /lib/cpp + configure: error: in `/home/dkc/src/buildroot/build-zii/build/lldpd-0.9.4': + configure: error: C++ preprocessor "/lib/cpp" fails sanity check + +Since "8d92800b: build: cleaner way to not alter CFLAGS/CPPFLAGS/LDFLAGS", +it seems that the dependency on C++ is not required anymore, so there +is no reason to keep this restriction. Dropping AC_PROG_CXX allows to +build with a toolchain that doesn't have C++ just fine. +--- + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 0edceb1..5afe8f2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -48,7 +48,6 @@ AC_PROG_CC_C99 + if test x"$ac_cv_prog_cc_c99" = x"no"; then + AC_MSG_FAILURE([*** C99 support is mandatory]) + fi +-AC_PROG_CXX + AM_PROG_CC_C_O + AC_PROG_LIBTOOL + AC_PROG_LN_S +-- +2.15.1 + diff --git a/buildroot/package/lldpd/Config.in b/buildroot/package/lldpd/Config.in new file mode 100644 index 0000000..9a9517b --- /dev/null +++ b/buildroot/package/lldpd/Config.in @@ -0,0 +1,73 @@ +config BR2_PACKAGE_LLDPD + bool "lldpd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBEVENT + help + lldpd is a 802.1ab implementation (LLDP) to help you locate + neighbors of all your equipments. + + LLDP allows you to know exactly on which port is a server + (and reciprocally). + + LLDP is an industry standard protocol designed to supplant + proprietary Link-Layer protocols such as EDP or CDP. The + goal of LLDP is to provide an inter-vendor compatible + mechanism to deliver Link-Layer notifications to adjacent + network devices. + + lldpd is an ISC-licensed implementation of LLDP for various + Unixes. It also supports some proprietary protocols. + + https://vincentbernat.github.io/lldpd/ + +if BR2_PACKAGE_LLDPD + +config BR2_PACKAGE_LLDPD_CDP + bool "CDP" + default y + help + Enable Cisco Discovery Protocol + +config BR2_PACKAGE_LLDPD_FDP + bool "FDP" + default y + help + Enable Foundry Discovery Protocol + +config BR2_PACKAGE_LLDPD_EDP + bool "EDP" + default y + help + Enable Extreme Discovery Protocol + +config BR2_PACKAGE_LLDPD_SONMP + bool "SONMP" + default y + help + Enable SynOptics Network Management + +config BR2_PACKAGE_LLDPD_LLDPMED + bool "LLDP-MED" + default y + help + Enable LLDP-MED extension + +config BR2_PACKAGE_LLDPD_DOT1 + bool "DOT1" + default y + help + Enable Dot1 extension (VLAN stuff) + +config BR2_PACKAGE_LLDPD_DOT3 + bool "DOT3" + default y + help + Enable Dot3 extension (PHY stuff) + +config BR2_PACKAGE_LLDPD_CUSTOM_TLV + bool "Custom TLV" + default y + help + Enable Custom TLV support + +endif diff --git a/buildroot/package/lldpd/S60lldpd b/buildroot/package/lldpd/S60lldpd new file mode 100644 index 0000000..3dfa6c1 --- /dev/null +++ b/buildroot/package/lldpd/S60lldpd @@ -0,0 +1,25 @@ +#!/bin/sh +# +# Controls lldpd. +# + +case $1 in + start) + printf "Starting lldpd: " + start-stop-daemon -S -q -p /var/run/lldpd.pid --exec /usr/sbin/lldpd + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping lldpd: " + start-stop-daemon -K -q -p /var/run/lldpd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac diff --git a/buildroot/package/lldpd/lldpd.hash b/buildroot/package/lldpd/lldpd.hash new file mode 100644 index 0000000..fc3d21f --- /dev/null +++ b/buildroot/package/lldpd/lldpd.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 eb1f5beff2ff5c13c5e0342b5b9da815ed4a63866262445e1168a79ee65c9079 lldpd-0.9.4.tar.gz diff --git a/buildroot/package/lldpd/lldpd.mk b/buildroot/package/lldpd/lldpd.mk new file mode 100644 index 0000000..2bdda02 --- /dev/null +++ b/buildroot/package/lldpd/lldpd.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# lldpd +# +################################################################################ + +LLDPD_VERSION = 0.9.4 +LLDPD_SITE = http://media.luffy.cx/files/lldpd +LLDPD_DEPENDENCIES = host-pkgconf libevent +LLDPD_LICENSE = ISC +LLDPD_LICENSE_FILES = README.md +# 0002-configure-do-not-check-for-libbsd.patch / 0003-configure-remove-check-on-CXX-compiler.patch +LLDPD_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_CHECK),y) +LLDPD_DEPENDENCIES += check +endif + +ifeq ($(BR2_PACKAGE_VALGRIND),y) +LLDPD_DEPENDENCIES += valgrind +endif + +# Detection of c99 support in configure fails without WCHAR. To enable +# automatic detection of c99 support by configure, we need to enable +# WCHAR in toolchain. But actually we do not need WCHAR at lldpd +# runtime. So requesting WCHAR in toolchain just for automatic detection +# will be overkill. To solve this, explicitly -specify c99 here. +LLDPD_CONF_ENV = ac_cv_prog_cc_c99=-std=gnu99 + +LLDPD_CONF_OPTS = \ + --without-readline \ + --without-embedded-libevent \ + --without-snmp \ + --without-xml \ + --without-json \ + --without-seccomp \ + --disable-hardening \ + --disable-privsep \ + $(if $(BR2_PACKAGE_LLDPD_CDP),--enable-cdp,--disable-cdp) \ + $(if $(BR2_PACKAGE_LLDPD_FDP),--enable-fdp,--disable-fdp) \ + $(if $(BR2_PACKAGE_LLDPD_EDP),--enable-edp,--disable-edp) \ + $(if $(BR2_PACKAGE_LLDPD_SONMP),--enable-sonmp,--disable-sonmp) \ + $(if $(BR2_PACKAGE_LLDPD_LLDPMED),--enable-lldpmed,--disable-lldpmed) \ + $(if $(BR2_PACKAGE_LLDPD_DOT1),--enable-dot1,--disable-dot1) \ + $(if $(BR2_PACKAGE_LLDPD_DOT3),--enable-dot3,--disable-dot3) \ + $(if $(BR2_PACKAGE_LLDPD_CUSTOM_TLV),--enable-custom,--disable-custom) + +define LLDPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/lldpd/S60lldpd \ + $(TARGET_DIR)/etc/init.d/S60lldpd +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/lm-sensors/0001-static-build.patch b/buildroot/package/lm-sensors/0001-static-build.patch new file mode 100644 index 0000000..63edd44 --- /dev/null +++ b/buildroot/package/lm-sensors/0001-static-build.patch @@ -0,0 +1,81 @@ +Add support for static only build + +This patch adds support for a BUILD_SHARED_LIB variable that allows to +enable/disable the build of the shared library, in order to support +static-only builds. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -85,6 +85,9 @@ + # Build and install static library + BUILD_STATIC_LIB := 1 + ++# Build and install shared library ++BUILD_SHARED_LIB := 1 ++ + # Set these to add preprocessor or compiler flags, or use + # environment variables + # CFLAGS := +Index: b/lib/Module.mk +=================================================================== +--- a/lib/Module.mk ++++ b/lib/Module.mk +@@ -43,8 +43,14 @@ + LIBSTLIBNAME := libsensors.a + LIBSHSONAME := libsensors.so.$(LIBMAINVER) + ++ifeq ($(BUILD_SHARED_LIB),1) + LIBTARGETS := $(MODULE_DIR)/$(LIBSHLIBNAME) \ + $(MODULE_DIR)/$(LIBSHSONAME) $(MODULE_DIR)/$(LIBSHBASENAME) ++LIBDEP_FOR_PROGS := $(LIBSHBASENAME) ++else ++LIBDEP_FOR_PROGS := $(LIBSTLIBNAME) ++endif ++ + ifeq ($(BUILD_STATIC_LIB),1) + LIBTARGETS += $(MODULE_DIR)/$(LIBSTLIBNAME) + endif +@@ -131,9 +137,11 @@ + ifeq ($(BUILD_STATIC_LIB),1) + $(INSTALL) -m 644 $(LIB_DIR)/$(LIBSTLIBNAME) $(DESTDIR)$(LIBDIR) + endif ++ifeq ($(BUILD_SHARED_LIB),1) + $(INSTALL) -m 755 $(LIB_DIR)/$(LIBSHLIBNAME) $(DESTDIR)$(LIBDIR) + $(LN) $(LIBSHLIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBSHSONAME) + $(LN) $(LIBSHSONAME) $(DESTDIR)$(LIBDIR)/$(LIBSHBASENAME) ++endif + @if [ -z "$(DESTDIR)" -a "$(LIBDIR)" != "/usr/lib" -a "$(LIBDIR)" != "/lib" ] ; then \ + if [ -e "/usr/lib/$(LIBSHSONAME)" -o -e "/usr/lib/$(LIBSHBASENAME)" ] ; then \ + echo '******************************************************************************' ; \ +Index: b/prog/sensord/Module.mk +=================================================================== +--- a/prog/sensord/Module.mk ++++ b/prog/sensord/Module.mk +@@ -41,7 +41,7 @@ + REMOVESENSORDBIN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(SBINDIR)/%,$(PROGSENSORDTARGETS)) + REMOVESENSORDMAN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(PROGSENSORDMAN8DIR)/%,$(PROGSENSORDMAN8FILES)) + +-$(PROGSENSORDTARGETS): $(PROGSENSORDSOURCES:.c=.ro) lib/$(LIBSHBASENAME) ++$(PROGSENSORDTARGETS): $(PROGSENSORDSOURCES:.c=.ro) lib/$(LIBDEP_FOR_PROGS) + $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORDSOURCES:.c=.ro) -Llib -lsensors -lrrd + + all-prog-sensord: $(PROGSENSORDTARGETS) +Index: b/prog/sensors/Module.mk +=================================================================== +--- a/prog/sensors/Module.mk ++++ b/prog/sensors/Module.mk +@@ -39,8 +39,8 @@ + + LIBICONV := $(shell if /sbin/ldconfig -p | grep -q '/libiconv\.so$$' ; then echo \-liconv; else echo; fi) + +-$(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBSHBASENAME) +- $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors ++$(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBDEP_FOR_PROGS) ++ $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors -lm + + all-prog-sensors: $(PROGSENSORSTARGETS) + user :: all-prog-sensors diff --git a/buildroot/package/lm-sensors/0002-no-host-ldconfig.patch b/buildroot/package/lm-sensors/0002-no-host-ldconfig.patch new file mode 100644 index 0000000..51f7f6a --- /dev/null +++ b/buildroot/package/lm-sensors/0002-no-host-ldconfig.patch @@ -0,0 +1,29 @@ +Remove usage of host ldconfig + +To know whether the libiconv library is available, lm-sensors is using +the host ldconfig, which is obviously wrong in cross-compilation. + +Moreover, the lm-sensors program making use of the iconv_*() API +already does it when __UCLIBC__ is *not* defined. In this case, the +iconv_*() functions are already part of the C library, so there is no +need to link against a separate library. Therefore, this patch simply +removes the libiconv handling. + +Signed-off-by: Thomas Petazzoni + +Index: b/prog/sensors/Module.mk +=================================================================== +--- a/prog/sensors/Module.mk ++++ b/prog/sensors/Module.mk +@@ -37,10 +37,8 @@ + REMOVESENSORSBIN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(BINDIR)/%,$(PROGSENSORSTARGETS)) + REMOVESENSORSMAN := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(PROGSENSORSMAN1DIR)/%,$(PROGSENSORSMAN1FILES)) + +-LIBICONV := $(shell if /sbin/ldconfig -p | grep -q '/libiconv\.so$$' ; then echo \-liconv; else echo; fi) +- + $(PROGSENSORSTARGETS): $(PROGSENSORSSOURCES:.c=.ro) lib/$(LIBDEP_FOR_PROGS) +- $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) $(LIBICONV) -Llib -lsensors -lm ++ $(CC) $(EXLDFLAGS) -o $@ $(PROGSENSORSSOURCES:.c=.ro) -Llib -lsensors -lm + + all-prog-sensors: $(PROGSENSORSTARGETS) + user :: all-prog-sensors diff --git a/buildroot/package/lm-sensors/0003-musl-fix-includes.patch b/buildroot/package/lm-sensors/0003-musl-fix-includes.patch new file mode 100644 index 0000000..69325ab --- /dev/null +++ b/buildroot/package/lm-sensors/0003-musl-fix-includes.patch @@ -0,0 +1,100 @@ +From 6d85773537c9f277ed342f57500f784ccb2c4a3e Mon Sep 17 00:00:00 2001 +From: Brendan Heading +Date: Sun, 30 Aug 2015 22:26:39 +0100 +Subject: [PATCH 1/1] fix compilation under musl + +This patch removes conditional compilation elements that are designed to +support glibc versions earlier than 2.0, which were causing the build +to fail under musl. + +Based on the patch found here : + +http://git.alpinelinux.org/cgit/aports/plain/main/lm_sensors/musl-fix-includes.patch?id=fece1d19448dbd3a56fd8ac70443116187141848 + +This patch has been accepted for integration upstream and should be +present in the next release. See : + +http://www.lm-sensors.org/changeset/6314 + +Signed-off-by: Brendan Heading +Upstream-Status: pending +--- + prog/dump/isadump.c | 6 ------ + prog/dump/isaset.c | 6 ------ + prog/dump/superio.c | 5 ----- + prog/dump/util.c | 5 ----- + 4 files changed, 22 deletions(-) + +diff --git a/prog/dump/isadump.c b/prog/dump/isadump.c +index e031e47..88e4c3b 100644 +--- a/prog/dump/isadump.c ++++ b/prog/dump/isadump.c +@@ -36,13 +36,7 @@ + #include "util.h" + #include "superio.h" + +- +-/* To keep glibc2 happy */ +-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0 + #include +-#else +-#include +-#endif + + #ifdef __powerpc__ + unsigned long isa_io_base = 0; /* XXX for now */ +diff --git a/prog/dump/isaset.c b/prog/dump/isaset.c +index 1d1bdad..a084c8a 100644 +--- a/prog/dump/isaset.c ++++ b/prog/dump/isaset.c +@@ -32,13 +32,7 @@ + #include + #include "util.h" + +- +-/* To keep glibc2 happy */ +-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0 + #include +-#else +-#include +-#endif + + #ifdef __powerpc__ + unsigned long isa_io_base = 0; /* XXX for now */ +diff --git a/prog/dump/superio.c b/prog/dump/superio.c +index 1af7358..31e0d78 100644 +--- a/prog/dump/superio.c ++++ b/prog/dump/superio.c +@@ -20,12 +20,7 @@ + */ + + #include +- +-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0 + #include +-#else +-#include +-#endif + + #include "superio.h" + +diff --git a/prog/dump/util.c b/prog/dump/util.c +index 676c339..d8b0927 100644 +--- a/prog/dump/util.c ++++ b/prog/dump/util.c +@@ -11,12 +11,7 @@ + #include + #include "util.h" + +-/* To keep glibc2 happy */ +-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ >= 0 + #include +-#else +-#include +-#endif + + /* Return 1 if we should continue, 0 if we should abort */ + int user_ack(int def) +-- +2.4.3 + diff --git a/buildroot/package/lm-sensors/Config.in b/buildroot/package/lm-sensors/Config.in new file mode 100644 index 0000000..60571b7 --- /dev/null +++ b/buildroot/package/lm-sensors/Config.in @@ -0,0 +1,55 @@ +config BR2_PACKAGE_LM_SENSORS + bool "lm-sensors" + help + Lm-sensors is a hardware health monitoring package for + Linux. It allows you to access information from + temperature, voltage, and fan speed sensors. It + works with most newer systems. + + https://hwmon.wiki.kernel.org + +if BR2_PACKAGE_LM_SENSORS +comment "lm-sensors tools" + +config BR2_PACKAGE_LM_SENSORS_SENSORS + bool "sensors" + default y + help + Sensors is used to show the current readings of all sensor + chips. + +config BR2_PACKAGE_LM_SENSORS_FANCONTROL + bool "fancontrol" + help + Script for temperature driven fan control + +config BR2_PACKAGE_LM_SENSORS_ISADUMP + bool "isadump" + help + Isadump is a small helper program to examine registers + visible through the ISA bus. + +config BR2_PACKAGE_LM_SENSORS_ISASET + bool "isaset" + help + Isaset is a small helper program to set register visible + through the ISA bus. + +config BR2_PACKAGE_LM_SENSORS_PWMCONFIG + bool "pwmconfig" + help + Pwmconfig searches your sensors for pulse width modulation + (PWM) controls, and tests each one to see if it controls a fan + on your motherboard. + +config BR2_PACKAGE_LM_SENSORS_SENSORS_DETECT + bool "sensors-detect" + depends on BR2_PACKAGE_PERL + help + Sensors-detect is an interactive program for detecting + available hardware monitoring chips. + +comment "sensors-detect needs perl" + depends on !BR2_PACKAGE_PERL + +endif diff --git a/buildroot/package/lm-sensors/lm-sensors.hash b/buildroot/package/lm-sensors/lm-sensors.hash new file mode 100644 index 0000000..eeaa633 --- /dev/null +++ b/buildroot/package/lm-sensors/lm-sensors.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e0579016081a262dd23eafe1d22b41ebde78921e73a1dcef71e05e424340061f lm-sensors_3.4.0.orig.tar.bz2 diff --git a/buildroot/package/lm-sensors/lm-sensors.mk b/buildroot/package/lm-sensors/lm-sensors.mk new file mode 100644 index 0000000..6fc7ce4 --- /dev/null +++ b/buildroot/package/lm-sensors/lm-sensors.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# lm-sensors +# +################################################################################ + +LM_SENSORS_VERSION = 3.4.0 +LM_SENSORS_SOURCE = lm-sensors_$(LM_SENSORS_VERSION).orig.tar.bz2 +LM_SENSORS_SITE = http://snapshot.debian.org/archive/debian/20170208T211941Z/pool/main/l/lm-sensors +LM_SENSORS_INSTALL_STAGING = YES +LM_SENSORS_DEPENDENCIES = host-bison host-flex +LM_SENSORS_LICENSE = LGPL-2.1+ (libsensors), GPL-2.0+ (programs) +LM_SENSORS_LICENSE_FILES = COPYING.LGPL COPYING + +LM_SENSORS_BINS_ = bin/sensors-conf-convert +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_SENSORS) += bin/sensors +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_FANCONTROL) += sbin/fancontrol +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_ISADUMP) += sbin/isadump +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_ISASET) += sbin/isaset +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_PWMCONFIG) += sbin/pwmconfig +LM_SENSORS_BINS_$(BR2_PACKAGE_LM_SENSORS_SENSORS_DETECT) += sbin/sensors-detect + +LM_SENSORS_MAKE_OPTS = \ + BUILD_STATIC_LIB=1 \ + MACHINE=$(KERNEL_ARCH) \ + PREFIX=/usr + +ifeq ($(BR2_STATIC_LIBS),y) +LM_SENSORS_MAKE_OPTS += BUILD_SHARED_LIB=0 EXLDFLAGS=-static +else +LM_SENSORS_MAKE_OPTS += BUILD_SHARED_LIB=1 +endif + +ifeq ($(BR2_SHARED_LIBS),y) +LM_SENSORS_MAKE_OPTS += BUILD_STATIC_LIB=0 +else +LM_SENSORS_MAKE_OPTS += BUILD_STATIC_LIB=1 +endif + +define LM_SENSORS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) $(LM_SENSORS_MAKE_OPTS) -C $(@D) +endef + +define LM_SENSORS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LM_SENSORS_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install + rm -f $(addprefix $(STAGING_DIR)/usr/,$(LM_SENSORS_BINS_) $(LM_SENSORS_BINS_y)) +endef + +define LM_SENSORS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LM_SENSORS_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install + rm -f $(addprefix $(TARGET_DIR)/usr/,$(LM_SENSORS_BINS_)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/lmbench/Config.in b/buildroot/package/lmbench/Config.in new file mode 100644 index 0000000..33778e4 --- /dev/null +++ b/buildroot/package/lmbench/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LMBENCH + bool "lmbench" + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + LMbench is a suite of simple, portable, + ANSI/C microbenchmarks for UNIX/POSIX. + + http://sourceforge.net/projects/lmbench/ + +comment "lmbench needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) diff --git a/buildroot/package/lmbench/lmbench.hash b/buildroot/package/lmbench/lmbench.hash new file mode 100644 index 0000000..b7aaa6a --- /dev/null +++ b/buildroot/package/lmbench/lmbench.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 cbd5777d15f44eab7666dcac418054c3c09df99826961a397d9acf43d8a2a551 lmbench-3.0-a9.tgz diff --git a/buildroot/package/lmbench/lmbench.mk b/buildroot/package/lmbench/lmbench.mk new file mode 100644 index 0000000..c52d6a5 --- /dev/null +++ b/buildroot/package/lmbench/lmbench.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# lmbench +# +################################################################################ + +LMBENCH_VERSION = 3.0-a9 +LMBENCH_SOURCE = lmbench-$(LMBENCH_VERSION).tgz +LMBENCH_SITE = http://downloads.sourceforge.net/project/lmbench/development/lmbench-$(LMBENCH_VERSION) +LMBENCH_LICENSE = lmbench license (based on GPL-2.0) +LMBENCH_LICENSE_FILES = COPYING COPYING-2 + +LMBENCH_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +LMBENCH_DEPENDENCIES += host-pkgconf libtirpc +LMBENCH_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc` +LMBENCH_LDLIBS = `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc` +endif + +define LMBENCH_CONFIGURE_CMDS + $(call CONFIG_UPDATE,$(@D)) + sed -i 's/CFLAGS=/CFLAGS+=/g' $(@D)/src/Makefile + sed -i 's/LDLIBS=/LDLIBS+=/g' $(@D)/scripts/build + sed -i '/cd .*doc/d' $(@D)/src/Makefile + sed -i '/include/d' $(@D)/src/Makefile + touch $@ +endef + +# Note: there is a second stage 'make' invocation from the 'scripts/build' +# script. So the variables override below don't take direct effect in +# src/Makefile. +define LMBENCH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CFLAGS="$(LMBENCH_CFLAGS)" LDLIBS="$(LMBENCH_LDLIBS)" OS=$(ARCH) CC="$(TARGET_CC)" -C $(@D)/src +endef + +define LMBENCH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CFLAGS="$(TARGET_CFLAGS)" OS=$(ARCH) CC="$(TARGET_CC)" BASE=$(TARGET_DIR)/usr -C $(@D)/src install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/localedef/0001-Don-t-include-xlocale.h.patch b/buildroot/package/localedef/0001-Don-t-include-xlocale.h.patch new file mode 100644 index 0000000..9a6c2f8 --- /dev/null +++ b/buildroot/package/localedef/0001-Don-t-include-xlocale.h.patch @@ -0,0 +1,50 @@ +From: Bernhard Walle +Date: Mon, 2 Oct 2017 16:55:23 +0200 +Subject: [PATCH] Don't include + +This header has been removed in glibc 2.26: + +https://abi-laboratory.pro/tracker/changelog/glibc/2.26/log.html + +------------------------ >8 ------------------------ +* The nonstandard header has been removed. Most programs should + use instead. If you have a specific need for the definition of + locale_t with no other declarations, please contact + libc-alpha@sourceware.org and explain. +------------------------ 8< ------------------------ + +Signed-off-by: Bernhard Walle + +Upstream: https://git.pengutronix.de/cgit/ptxdist/tree/patches/localedef-eglibc-2.14.1-r17443-ptx1/0003-Don-t-include-xlocale.h.patch +Signed-off-by: Peter Seiderer +--- + eglibc/locale/langinfo.h | 2 +- + eglibc/locale/locale.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/eglibc/locale/langinfo.h b/eglibc/locale/langinfo.h +index 0a5336507196..76707a4584c1 100644 +--- a/eglibc/locale/langinfo.h ++++ b/eglibc/locale/langinfo.h +@@ -589,7 +589,7 @@ extern char *nl_langinfo (nl_item __item) __THROW; + more information. */ + + /* Get locale datatype definition. */ +-# include ++# include + + /* Just like nl_langinfo but get the information from the locale object L. */ + extern char *nl_langinfo_l (nl_item __item, __locale_t __l); +diff --git a/eglibc/locale/locale.h b/eglibc/locale/locale.h +index 2aa19e76acb2..18be711a2d40 100644 +--- a/eglibc/locale/locale.h ++++ b/eglibc/locale/locale.h +@@ -143,7 +143,7 @@ __END_NAMESPACE_STD + This is a proof-of-concept implementation. */ + + /* Get locale datatype definition. */ +-# include ++# include_next + + /* Return a reference to a data structure representing a set of locale + datasets. Unlike for the CATEGORY parameter for `setlocale' the diff --git a/buildroot/package/localedef/localedef.hash b/buildroot/package/localedef/localedef.hash new file mode 100644 index 0000000..ee14fb1 --- /dev/null +++ b/buildroot/package/localedef/localedef.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9a60f7cdab6fb39adf23a12102f2d950d5f07f0cd7e51e85ec327e07440a79c6 localedef-eglibc-2.14.1-r17443-ptx1.tar.bz2 diff --git a/buildroot/package/localedef/localedef.mk b/buildroot/package/localedef/localedef.mk new file mode 100644 index 0000000..11d9ba3 --- /dev/null +++ b/buildroot/package/localedef/localedef.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# localedef +# +################################################################################ + +LOCALEDEF_VERSION = 2.14.1-r17443-ptx1 +LOCALEDEF_SOURCE = localedef-eglibc-$(LOCALEDEF_VERSION).tar.bz2 +LOCALEDEF_SITE = http://www.pengutronix.de/software/ptxdist/temporary-src + +HOST_LOCALEDEF_CONF_OPTS += \ + --prefix=/usr \ + --with-glibc=./eglibc + +HOST_LOCALEDEF_CONF_ENV = CFLAGS="$(HOST_CFLAGS) -fgnu89-inline" + +# The makefile does not implement an install target +define HOST_LOCALEDEF_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/localedef $(HOST_DIR)/bin/localedef +endef + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch b/buildroot/package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch new file mode 100644 index 0000000..d5a498a --- /dev/null +++ b/buildroot/package/lockdev/0001-Makefile-install-static-library-and-headers-separate.patch @@ -0,0 +1,44 @@ +From 0dcd2368c3e23a5cc1cc4a979d9c241ed9302236 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 4 Jan 2015 16:06:07 +0100 +Subject: [PATCH] Makefile: install static library and headers separately + +Signed-off-by: Romain Naour +--- + Makefile | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index e27dcbd..ecf52d1 100644 +--- a/Makefile ++++ b/Makefile +@@ -45,12 +45,10 @@ perl-lib: static + cd LockDev && make OPTIMIZE="-O2 -g -Wall" + cd LockDev && make test + +-.PHONY: install install_dev install_dbg install_doc install_run +-install: install_dev install_dbg install_doc install_run ++.PHONY: install install_dev install_dbg install_doc install_run install_static ++install: install_dev install_dbg install_doc install_run install_static + +-install_dev: ${static} src/lockdev.h +- install -m755 -d ${libdir} +- install -m644 ${static} ${libdir} ++install_dev: src/lockdev.h + install -m755 -d ${incdir} + install -m644 src/lockdev.h ${incdir} + install -m644 src/ttylock.h ${incdir} +@@ -69,6 +67,10 @@ install_doc: docs/lockdev.3 + install -m755 -d ${mandir}/man3 + install -m644 docs/lockdev.3 ${mandir}/man3 + ++install_static: ${static} ++ install -m755 -d ${libdir} ++ install -m644 ${static} ${libdir} ++ + install_run: ${shared} + install -m755 -d ${libdir} + install -m644 ${shared} ${libdir} +-- +1.9.3 + diff --git a/buildroot/package/lockdev/Config.in b/buildroot/package/lockdev/Config.in new file mode 100644 index 0000000..4b386f4 --- /dev/null +++ b/buildroot/package/lockdev/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LOCKDEV + bool "lockdev" + help + Library for locking devices. + + No upstream site, primary site is Debian. diff --git a/buildroot/package/lockdev/lockdev.hash b/buildroot/package/lockdev/lockdev.hash new file mode 100644 index 0000000..bb055e4 --- /dev/null +++ b/buildroot/package/lockdev/lockdev.hash @@ -0,0 +1,3 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/l/lockdev/lockdev_1.0.3-1.6.dsc +sha256 ccae635d7ac3fdd50897eceb250872b3d9a191d298f213e7f0c836910d869f82 lockdev_1.0.3.orig.tar.gz +sha256 a5405c6ee5e97e45eeb1c81330a7e9f444a58bda5e6771fa30007516c115007e lockdev_1.0.3-1.6.diff.gz diff --git a/buildroot/package/lockdev/lockdev.mk b/buildroot/package/lockdev/lockdev.mk new file mode 100644 index 0000000..e491b13 --- /dev/null +++ b/buildroot/package/lockdev/lockdev.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# lockdev +# +################################################################################ + +LOCKDEV_VERSION_MAJOR = 1 +LOCKDEV_VERSION = $(LOCKDEV_VERSION_MAJOR).0.3 +LOCKDEV_SOURCE = lockdev_$(LOCKDEV_VERSION).orig.tar.gz +LOCKDEV_PATCH = lockdev_$(LOCKDEV_VERSION)-1.6.diff.gz +LOCKDEV_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/l/lockdev +LOCKDEV_LICENSE = LGPL-2.1 +LOCKDEV_LICENSE_FILES = LICENSE +LOCKDEV_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +LOCKDEV_BUILD_ARGS = static +LOCKDEV_INSTALL_ARGS = install_static +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +LOCKDEV_BUILD_ARGS = static shared +LOCKDEV_INSTALL_ARGS = install_run install_static +else # BR2_SHARED_LIBS +LOCKDEV_BUILD_ARGS = shared +LOCKDEV_INSTALL_ARGS = install_run +endif + +# Make the code believe we are using a C library compatible with +# glibc, which for the purpose of lockdev is actually true. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +LOCKDEV_BUILD_ARGS += CFLAGS="$(TARGET_CFLAGS) -D__GNU_LIBRARY__" +endif + +ifeq ($(BR2_SHARED_STATIC_LIBS)$(BR2_SHARED_LIBS),y) +define LOCKDEV_CREATE_LINKS_STAGING + ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so + ln -sf liblockdev.$(LOCKDEV_VERSION).so $(STAGING_DIR)/usr/lib/liblockdev.so.$(LOCKDEV_VERSION_MAJOR) +endef + +define LOCKDEV_CREATE_LINKS_TARGET + ln -sf liblockdev.$(LOCKDEV_VERSION).so $(TARGET_DIR)/usr/lib/liblockdev.so.$(LOCKDEV_VERSION_MAJOR) +endef +endif + +define LOCKDEV_BUILD_CMDS + $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(LOCKDEV_BUILD_ARGS) +endef + +define LOCKDEV_INSTALL_STAGING_CMDS + $(MAKE1) basedir=$(STAGING_DIR)/usr -C $(@D) $(LOCKDEV_INSTALL_ARGS) install_dev + $(LOCKDEV_CREATE_LINKS_STAGING) +endef + +define LOCKDEV_INSTALL_TARGET_CMDS + $(MAKE1) basedir=$(TARGET_DIR)/usr -C $(@D) $(LOCKDEV_INSTALL_ARGS) + $(LOCKDEV_CREATE_LINKS_TARGET) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/lockfile-progs/0001-sus3v-legacy.patch b/buildroot/package/lockfile-progs/0001-sus3v-legacy.patch new file mode 100644 index 0000000..8cf552e --- /dev/null +++ b/buildroot/package/lockfile-progs/0001-sus3v-legacy.patch @@ -0,0 +1,11 @@ +--- /lockfile-progs.orig.c 2007-10-11 10:32:09.000000000 -0300 ++++ /lockfile-progs.c 2007-10-11 10:32:28.000000000 -0300 +@@ -93,7 +93,7 @@ + { NULL, 0, NULL, 0 } + }; + +- char *cmd_name = rindex(argv[0], '/'); ++ char *cmd_name = strrchr(argv[0], '/'); + int mail_cmd_p = 0; + + if(cmd_name != NULL) { diff --git a/buildroot/package/lockfile-progs/Config.in b/buildroot/package/lockfile-progs/Config.in new file mode 100644 index 0000000..de101a9 --- /dev/null +++ b/buildroot/package/lockfile-progs/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_LOCKFILE_PROGS + bool "lockfile programs" + select BR2_PACKAGE_LIBLOCKFILE + help + Build lockfile utility programs. diff --git a/buildroot/package/lockfile-progs/lockfile-progs.hash b/buildroot/package/lockfile-progs/lockfile-progs.hash new file mode 100644 index 0000000..e628f0c --- /dev/null +++ b/buildroot/package/lockfile-progs/lockfile-progs.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/l/lockfile-progs/lockfile-progs_0.1.17.dsc +sha256 03fb05d25499532f497775b1747b61fa6beebf12d3bcc951e125349ae166c511 lockfile-progs_0.1.17.tar.gz diff --git a/buildroot/package/lockfile-progs/lockfile-progs.mk b/buildroot/package/lockfile-progs/lockfile-progs.mk new file mode 100644 index 0000000..ed192f1 --- /dev/null +++ b/buildroot/package/lockfile-progs/lockfile-progs.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# lockfile-progs +# +################################################################################ + +LOCKFILE_PROGS_VERSION = 0.1.17 +LOCKFILE_PROGS_SOURCE = lockfile-progs_$(LOCKFILE_PROGS_VERSION).tar.gz +LOCKFILE_PROGS_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/l/lockfile-progs +LOCKFILE_PROGS_DEPENDENCIES = liblockfile +LOCKFILE_PROGS_LICENSE = GPL-2.0 +LOCKFILE_PROGS_LICENSE_FILES = COPYING + +LOCKFILE_PROGS_BINS = \ + $(addprefix lockfile-,check create remove touch) \ + $(addprefix mail-,lock touchlock unlock) + +define LOCKFILE_PROGS_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define LOCKFILE_PROGS_INSTALL_TARGET_CMDS + for i in $(LOCKFILE_PROGS_BINS); do \ + $(INSTALL) -D -m 755 $(@D)/bin/$$i $(TARGET_DIR)/usr/bin/$$i || exit 1; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/log4cplus/Config.in b/buildroot/package/log4cplus/Config.in new file mode 100644 index 0000000..8a112a4 --- /dev/null +++ b/buildroot/package/log4cplus/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LOG4CPLUS + bool "log4cplus" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + help + log4cplus is a simple to use C++ logging API providing + thread-safe, flexible, and arbitrarily granular control + over log management and configuration. It is modelled + after the Java log4j API. + + http://sourceforge.net/projects/log4cplus + +comment "log4cplus needs a toolchain w/ C++, wchar, threads" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/buildroot/package/log4cplus/log4cplus.hash b/buildroot/package/log4cplus/log4cplus.hash new file mode 100644 index 0000000..395e9fe --- /dev/null +++ b/buildroot/package/log4cplus/log4cplus.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 999427580cded403b4edc8a85088621f27493c489f08b9f564fb5fe76c16a883 log4cplus-1.1.2.tar.xz diff --git a/buildroot/package/log4cplus/log4cplus.mk b/buildroot/package/log4cplus/log4cplus.mk new file mode 100644 index 0000000..b4a57c3 --- /dev/null +++ b/buildroot/package/log4cplus/log4cplus.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# log4cplus +# +################################################################################ + +LOG4CPLUS_VERSION = 1.1.2 +LOG4CPLUS_SOURCE = log4cplus-$(LOG4CPLUS_VERSION).tar.xz +LOG4CPLUS_SITE = http://downloads.sourceforge.net/project/log4cplus/log4cplus-stable/$(LOG4CPLUS_VERSION) +LOG4CPLUS_LICENSE = Apache-2.0, BSD-2-Clause +LOG4CPLUS_LICENSE_FILES = LICENSE +LOG4CPLUS_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/log4cpp/Config.in b/buildroot/package/log4cpp/Config.in new file mode 100644 index 0000000..090bf56 --- /dev/null +++ b/buildroot/package/log4cpp/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_LOG4CPP + bool "log4cpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Log4cpp is library of C++ classes for flexible logging to + files, syslog, IDSA and other destinations. It is modeled + after the Log4j Java library, staying as close to their API + as is reasonable. + + http://log4cpp.sourceforge.net/ + +comment "log4cpp needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/log4cpp/log4cpp.hash b/buildroot/package/log4cpp/log4cpp.hash new file mode 100644 index 0000000..fd73988 --- /dev/null +++ b/buildroot/package/log4cpp/log4cpp.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/log4cpp/files/log4cpp-1.1.x%20%28new%29/log4cpp-1.1/ +md5 b9e2cee932da987212f2c74b767b4d8b log4cpp-1.1.3.tar.gz +sha1 74f0fea7931dc1bc4e5cd34a6318cd2a51322041 log4cpp-1.1.3.tar.gz +# Locally computed +sha256 2cbbea55a5d6895c9f0116a9a9ce3afb86df383cd05c9d6c1a4238e5e5c8f51d log4cpp-1.1.3.tar.gz diff --git a/buildroot/package/log4cpp/log4cpp.mk b/buildroot/package/log4cpp/log4cpp.mk new file mode 100644 index 0000000..8664a54 --- /dev/null +++ b/buildroot/package/log4cpp/log4cpp.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# log4cpp +# +################################################################################ + +LOG4CPP_VERSION_MAJOR = 1.1 +LOG4CPP_VERSION = $(LOG4CPP_VERSION_MAJOR).3 +LOG4CPP_SITE = http://downloads.sourceforge.net/project/log4cpp/log4cpp-1.1.x%20%28new%29/log4cpp-$(LOG4CPP_VERSION_MAJOR) +LOG4CPP_SUBDIR = log4cpp +# The "or later" is indicated in the HTML documentation +LOG4CPP_LICENSE = LGPL-2.1+ +LOG4CPP_LICENSE_FILES = log4cpp/COPYING +LOG4CPP_INSTALL_STAGING = YES +LOG4CPP_CONF_OPTS = --enable-doxygen=no --enable-dot=no +# needed to fix broken configure script +LOG4CPP_AUTORECONF = YES +LOG4CPP_AUTORECONF_OPTS = -I m4 + +# The default _CONFIG_SCRIPTS handling does not apply +define LOG4CPP_STAGING_CONFIG_SCRIPT_FIXUP + $(SED) 's,prefix="/usr",prefix="$(STAGING_DIR)/usr",' \ + -e 's,exec_prefix="/usr",prefix="$(STAGING_DIR)/usr",' \ + $(STAGING_DIR)/usr/bin/log4cpp-config +endef + +LOG4CPP_POST_INSTALL_STAGING_HOOKS += LOG4CPP_STAGING_CONFIG_SCRIPT_FIXUP + +define LOG4CPP_TARGET_CONFIG_SCRIPT_REMOVE + $(RM) $(TARGET_DIR)/usr/bin/log4cpp-config +endef + +LOG4CPP_POST_INSTALL_TARGET_HOOKS += LOG4CPP_TARGET_CONFIG_SCRIPT_REMOVE + +$(eval $(autotools-package)) diff --git a/buildroot/package/log4cxx/0001-charset-fixes.patch b/buildroot/package/log4cxx/0001-charset-fixes.patch new file mode 100644 index 0000000..75567fd --- /dev/null +++ b/buildroot/package/log4cxx/0001-charset-fixes.patch @@ -0,0 +1,43 @@ +Fix build when iconv support is not available + +When iconv support is not available, the apr-util library does not +provide character set conversion features, and therefore APR_HAS_XLATE +is false. + +However, on Linux !defined(_WIN32) is always true, but the part of the +code that defines the APRCharsetDecoder and APRCharsetEncoder are only +enclosed in a #if APR_HAS_XLATE, without the "|| defined(_WIN32)" +which leads to build failures: the APRCharsetEncoder and +APRCharsetDecoder classes are used without being defined. + +This patch removes the || !defined(_WIN32) so that when iconv support +is not here, we fall back to raising an exception at runtime. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/main/cpp/charsetdecoder.cpp +=================================================================== +--- a/src/main/cpp/charsetdecoder.cpp ++++ b/src/main/cpp/charsetdecoder.cpp +@@ -476,7 +476,7 @@ + StringHelper::equalsIgnoreCase(charset, LOG4CXX_STR("ISO-LATIN-1"), LOG4CXX_STR("iso-latin-1"))) { + return new ISOLatinCharsetDecoder(); + } +-#if APR_HAS_XLATE || !defined(_WIN32) ++#if APR_HAS_XLATE + return new APRCharsetDecoder(charset); + #else + throw IllegalArgumentException(charset); +Index: b/src/main/cpp/charsetencoder.cpp +=================================================================== +--- a/src/main/cpp/charsetencoder.cpp ++++ b/src/main/cpp/charsetencoder.cpp +@@ -484,7 +484,7 @@ + } else if (StringHelper::equalsIgnoreCase(charset, LOG4CXX_STR("UTF-16LE"), LOG4CXX_STR("utf-16le"))) { + return new UTF16LECharsetEncoder(); + } +-#if APR_HAS_XLATE || !defined(_WIN32) ++#if APR_HAS_XLATE + return new APRCharsetEncoder(charset); + #else + throw IllegalArgumentException(charset); diff --git a/buildroot/package/log4cxx/0002-missing-includes.patch b/buildroot/package/log4cxx/0002-missing-includes.patch new file mode 100644 index 0000000..dd4da11 --- /dev/null +++ b/buildroot/package/log4cxx/0002-missing-includes.patch @@ -0,0 +1,44 @@ +commit bcaf1f8a682d641cee325142099c371464fd5946 +Author: Curtis William Arnold +Date: Tue May 20 16:05:37 2008 +0000 + + LOGCXX-286: gcc 4.3 requires #include + + git-svn-id: https://svn.apache.org/repos/asf/logging/log4cxx/trunk@658304 13f79535-47bb-0310-9956-ffa450edef68 + +diff --git a/src/examples/cpp/console.cpp b/src/examples/cpp/console.cpp +index 6a01d8a..a673a10 100755 +--- a/src/examples/cpp/console.cpp ++++ b/src/examples/cpp/console.cpp +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + using namespace log4cxx; + using namespace log4cxx::helpers; +diff --git a/src/main/cpp/inputstreamreader.cpp b/src/main/cpp/inputstreamreader.cpp +index 52b1c0a..cb45181 100644 +--- a/src/main/cpp/inputstreamreader.cpp ++++ b/src/main/cpp/inputstreamreader.cpp +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + using namespace log4cxx; + using namespace log4cxx::helpers; +diff --git a/src/main/cpp/socketoutputstream.cpp b/src/main/cpp/socketoutputstream.cpp +index 185f835..c61eb11 100644 +--- a/src/main/cpp/socketoutputstream.cpp ++++ b/src/main/cpp/socketoutputstream.cpp +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + + using namespace log4cxx; + using namespace log4cxx::helpers; diff --git a/buildroot/package/log4cxx/0003-missing-includes.patch b/buildroot/package/log4cxx/0003-missing-includes.patch new file mode 100644 index 0000000..cd21bba --- /dev/null +++ b/buildroot/package/log4cxx/0003-missing-includes.patch @@ -0,0 +1,21 @@ +commit ce62c00ea5f9bf2f0740ecde5b245c9b7edc80ff +Author: Curtis William Arnold +Date: Mon Apr 27 03:53:50 2009 +0000 + + LOGCXX-332: fails to build with gcc 4.4 + + git-svn-id: https://svn.apache.org/repos/asf/logging/log4cxx/trunk@768863 13f79535-47bb-0310-9956-ffa450edef68 + +diff --git a/src/examples/cpp/console.cpp b/src/examples/cpp/console.cpp +index a673a10..f44c944 100755 +--- a/src/examples/cpp/console.cpp ++++ b/src/examples/cpp/console.cpp +@@ -23,6 +23,8 @@ + #include + #include + #include ++#include ++#include + + using namespace log4cxx; + using namespace log4cxx::helpers; diff --git a/buildroot/package/log4cxx/0004-Applied-patch-for-LOGCXX-400-LOGCXX-404-LOGCXX-402-L.patch b/buildroot/package/log4cxx/0004-Applied-patch-for-LOGCXX-400-LOGCXX-404-LOGCXX-402-L.patch new file mode 100644 index 0000000..a0c9b3f --- /dev/null +++ b/buildroot/package/log4cxx/0004-Applied-patch-for-LOGCXX-400-LOGCXX-404-LOGCXX-402-L.patch @@ -0,0 +1,180 @@ +From 5b75dfa78b2c5e95296cee0201bc045ef7264ed0 Mon Sep 17 00:00:00 2001 +From: Christian Grobmeier +Date: Tue, 27 Nov 2012 09:39:18 +0000 +Subject: [PATCH] Applied patch for LOGCXX-400 LOGCXX-404 LOGCXX-402 LOGCXX-403 + LOGCXX-401 thanks to Andrew Lazarus + +git-svn-id: https://svn.apache.org/repos/asf/logging/log4cxx/trunk@1414037 13f79535-47bb-0310-9956-ffa450edef68 +Signed-off-by: Peter Korsgaard +--- + pom.xml | 2 ++ + src/main/cpp/locationinfo.cpp | 4 ++-- + src/main/cpp/loggingevent.cpp | 2 +- + src/main/cpp/ndc.cpp | 4 ++-- + src/main/cpp/objectoutputstream.cpp | 4 ++-- + src/main/cpp/transcoder.cpp | 2 +- + src/main/include/log4cxx/helpers/object.h | 6 +++--- + src/main/include/log4cxx/helpers/simpledateformat.h | 4 +++- + src/main/include/log4cxx/logstring.h | 2 +- + 9 files changed, 17 insertions(+), 13 deletions(-) + +diff --git a/pom.xml b/pom.xml +index 3504c8a3..255907bd 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -55,6 +55,7 @@ + + + ++ + + maven-assembly-plugin + +diff --git a/src/main/cpp/locationinfo.cpp b/src/main/cpp/locationinfo.cpp +index e76ea29c..1daa3a5f 100644 +--- a/src/main/cpp/locationinfo.cpp ++++ b/src/main/cpp/locationinfo.cpp +@@ -153,8 +153,8 @@ void LocationInfo::write(ObjectOutputStream& os, Pool& p) const { + 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2E, 0x6C, + 0x6F, 0x67, 0x34, 0x6A, 0x2E, 0x73, 0x70, 0x69, + 0x2E, 0x4C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, +- 0x6E, 0x49, 0x6E, 0x66, 0x6F, 0xED, 0x99, 0xBB, +- 0xE1, 0x4A, 0x91, 0xA5, 0x7C, 0x02, 0x00, 0x01, ++ 0x6E, 0x49, 0x6E, 0x66, 0x6F, static_cast(0xED), static_cast(0x99), static_cast(0xBB), ++ static_cast(0xE1), 0x4A, static_cast(0x91), static_cast(0xA5), 0x7C, 0x02, 0x00, 0x01, + 0x4C, 0x00, 0x08, 0x66, 0x75, 0x6C, 0x6C, 0x49, + 0x6E, 0x66, 0x6F, + 0x74, 0x00, 0x12, 0x4C, 0x6A, +diff --git a/src/main/cpp/loggingevent.cpp b/src/main/cpp/loggingevent.cpp +index 1c0d4be7..edbf40b6 100644 +--- a/src/main/cpp/loggingevent.cpp ++++ b/src/main/cpp/loggingevent.cpp +@@ -242,7 +242,7 @@ void LoggingEvent::writeProlog(ObjectOutputStream& os, Pool& p) { + 0x68, 0x65, 0x2E, 0x6C, 0x6F, 0x67, 0x34, 0x6A, + 0x2E, 0x73, 0x70, 0x69, 0x2E, 0x4C, 0x6F, 0x67, + 0x67, 0x69, 0x6E, 0x67, 0x45, 0x76, 0x65, 0x6E, +- 0x74, 0xF3, 0xF2, 0xB9, 0x23, 0x74, 0x0B, 0xB5, ++ 0x74, static_cast(0xF3), static_cast(0xF2), static_cast(0xB9), 0x23, 0x74, 0x0B, static_cast(0xB5), + 0x3F, 0x03, 0x00, 0x0A, 0x5A, 0x00, 0x15, 0x6D, + 0x64, 0x63, 0x43, 0x6F, 0x70, 0x79, 0x4C, 0x6F, + 0x6F, 0x6B, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, +diff --git a/src/main/cpp/ndc.cpp b/src/main/cpp/ndc.cpp +index 4ab612dd..89788c16 100644 +--- a/src/main/cpp/ndc.cpp ++++ b/src/main/cpp/ndc.cpp +@@ -309,7 +309,7 @@ bool NDC::pop(CFStringRef& dst) + Stack& stack = data->getStack(); + if(!stack.empty()) + { +- dst = Transcoder::encode(stack.top().message); ++ dst = Transcoder::encode(getMessage(stack.top())); + stack.pop(); + data->recycle(); + return true; +@@ -326,7 +326,7 @@ bool NDC::peek(CFStringRef& dst) + Stack& stack = data->getStack(); + if(!stack.empty()) + { +- dst = Transcoder::encode(stack.top().message); ++ dst = Transcoder::encode(getMessage(stack.top())); + return true; + } + data->recycle(); +diff --git a/src/main/cpp/objectoutputstream.cpp b/src/main/cpp/objectoutputstream.cpp +index 7cd696b8..9567a856 100644 +--- a/src/main/cpp/objectoutputstream.cpp ++++ b/src/main/cpp/objectoutputstream.cpp +@@ -36,7 +36,7 @@ ObjectOutputStream::ObjectOutputStream(OutputStreamPtr outputStream, Pool& p) + objectHandle(0x7E0000), + classDescriptions(new ClassDescriptionMap()) + { +- char start[] = { 0xAC, 0xED, 0x00, 0x05 }; ++ char start[] = { static_cast(0xAC), static_cast(0xED), 0x00, 0x05 }; + ByteBuffer buf(start, sizeof(start)); + os->write(buf, p); + } +@@ -85,7 +85,7 @@ void ObjectOutputStream::writeObject(const MDC::Map& val, Pool& p) { + 0x72, 0x00, 0x13, 0x6A, 0x61, 0x76, 0x61, + 0x2E, 0x75, 0x74, 0x69, 0x6C, 0x2E, 0x48, 0x61, + 0x73, 0x68, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x13, +- 0xBB, 0x0F, 0x25, 0x21, 0x4A, 0xE4, 0xB8, 0x03, ++ static_cast(0xBB), 0x0F, 0x25, 0x21, 0x4A, static_cast(0xE4), static_cast(0xB8), 0x03, + 0x00, 0x02, 0x46, 0x00, 0x0A, 0x6C, 0x6F, 0x61, + 0x64, 0x46, 0x61, 0x63, 0x74, 0x6F, 0x72, 0x49, + 0x00, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, +diff --git a/src/main/cpp/transcoder.cpp b/src/main/cpp/transcoder.cpp +index d572ffce..32bed844 100644 +--- a/src/main/cpp/transcoder.cpp ++++ b/src/main/cpp/transcoder.cpp +@@ -356,7 +356,7 @@ static void encodeUTF16(unsigned int sv, String& dst) { + unsigned char u = (unsigned char) (sv >> 16); + unsigned char w = (unsigned char) (u - 1); + unsigned short hs = (0xD800 + ((w & 0xF) << 6) + ((sv & 0xFFFF) >> 10)); +- unsigned short ls = (0xDC00 + (sv && 0x3FF)); ++ unsigned short ls = (0xDC00 + (sv & 0x3FF)); + dst.append(1, hs); + dst.append(1, ls); + } +diff --git a/src/main/include/log4cxx/helpers/object.h b/src/main/include/log4cxx/helpers/object.h +index 92d44c55..b9386c47 100644 +--- a/src/main/include/log4cxx/helpers/object.h ++++ b/src/main/include/log4cxx/helpers/object.h +@@ -61,8 +61,8 @@ static const helpers::Class& getStaticClass();\ + static const log4cxx::helpers::ClassRegistration& registerClass(); + + #define IMPLEMENT_LOG4CXX_OBJECT(object)\ +-const log4cxx::helpers::Class& object::getClass() const { return getStaticClass(); }\ +-const log4cxx::helpers::Class& object::getStaticClass() { \ ++const ::log4cxx::helpers::Class& object::getClass() const { return getStaticClass(); }\ ++const ::log4cxx::helpers::Class& object::getStaticClass() { \ + static Clazz##object theClass; \ + return theClass; \ + } \ +@@ -71,7 +71,7 @@ const log4cxx::helpers::ClassRegistration& object::registerClass() { \ + return classReg; \ + }\ + namespace log4cxx { namespace classes { \ +-const log4cxx::helpers::ClassRegistration& object##Registration = object::registerClass(); \ ++const ::log4cxx::helpers::ClassRegistration& object##Registration = object::registerClass(); \ + } } + + +diff --git a/src/main/include/log4cxx/helpers/simpledateformat.h b/src/main/include/log4cxx/helpers/simpledateformat.h +index 9c27f685..76fb784c 100644 +--- a/src/main/include/log4cxx/helpers/simpledateformat.h ++++ b/src/main/include/log4cxx/helpers/simpledateformat.h +@@ -29,7 +29,9 @@ + #include + #include + +-namespace std { class locale; } ++#include ++ ++using std::locale; + + namespace log4cxx + { +diff --git a/src/main/include/log4cxx/logstring.h b/src/main/include/log4cxx/logstring.h +index 3bbcdf2d..19e8aec7 100644 +--- a/src/main/include/log4cxx/logstring.h ++++ b/src/main/include/log4cxx/logstring.h +@@ -27,7 +27,7 @@ + #include + #include + +-#if LOG4CXX_LOGCHAR_IS_WCHAR && LOG4CXX_LOGCHAR_IS_UTF8 && LOG4CXX_LOGCHAR_IS_UNICHAR ++#if (LOG4CXX_LOGCHAR_IS_WCHAR + LOG4CXX_LOGCHAR_IS_UTF8 + LOG4CXX_LOGCHAR_IS_UNICHAR)>1 + #error only one of LOG4CXX_LOGCHAR_IS_WCHAR, LOG4CXX_LOGCHAR_IS_UTF8 or LOG4CXX_LOGCHAR_IS_UNICHAR may be true + #endif + +-- +2.11.0 + diff --git a/buildroot/package/log4cxx/0005-domtestcase.cpp-fix-narrowing-conversion-compile-err.patch b/buildroot/package/log4cxx/0005-domtestcase.cpp-fix-narrowing-conversion-compile-err.patch new file mode 100644 index 0000000..b3f43bf --- /dev/null +++ b/buildroot/package/log4cxx/0005-domtestcase.cpp-fix-narrowing-conversion-compile-err.patch @@ -0,0 +1,36 @@ +From afc191aec355619d6ebabb2cad660a5a8ad4569b Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Mon, 30 Jan 2017 23:13:43 +0100 +Subject: [PATCH] domtestcase.cpp: fix narrowing conversion compile error with + gcc 6+ / signed char + +Signed-off-by: Peter Korsgaard +--- + src/test/cpp/xml/domtestcase.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/test/cpp/xml/domtestcase.cpp b/src/test/cpp/xml/domtestcase.cpp +index ad276d1a..2a1e6e2e 100644 +--- a/src/test/cpp/xml/domtestcase.cpp ++++ b/src/test/cpp/xml/domtestcase.cpp +@@ -190,7 +190,7 @@ public: + DOMConfigurator::configure(LOG4CXX_TEST_STR("input/xml/DOMTestCase3.xml")); + LOG4CXX_INFO(logger, "File name is expected to end with a superscript 3") + #if LOG4CXX_LOGCHAR_IS_UTF8 +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xC2, 0xB3, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast(0xC2), static_cast(0xB3), 0 }; + #else + const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xB3, 0 }; + #endif +@@ -209,7 +209,7 @@ public: + DOMConfigurator::configure(LOG4CXX_TEST_STR("input/xml/DOMTestCase4.xml")); + LOG4CXX_INFO(logger, "File name is expected to end with an ideographic 4") + #if LOG4CXX_LOGCHAR_IS_UTF8 +- const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0xE3, 0x86, 0x95, 0 }; ++ const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, static_cast(0xE3), static_cast(0x86), static_cast(0x95), 0 }; + #else + const logchar fname[] = { 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2F, 0x64, 0x6F, 0x6D, 0x3195, 0 }; + #endif +-- +2.11.0 + diff --git a/buildroot/package/log4cxx/Config.in b/buildroot/package/log4cxx/Config.in new file mode 100644 index 0000000..bf739a4 --- /dev/null +++ b/buildroot/package/log4cxx/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_LOG4CXX + bool "log4cxx" + # apr really needs shared library support + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # apr + select BR2_PACKAGE_APR + select BR2_PACKAGE_APR_UTIL + help + Apache log4cxx is a logging framework for C++ patterned + after Apache log4j. + + https://logging.apache.org/log4cxx/ + +comment "log4cxx needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/buildroot/package/log4cxx/log4cxx.hash b/buildroot/package/log4cxx/log4cxx.hash new file mode 100644 index 0000000..469d99a --- /dev/null +++ b/buildroot/package/log4cxx/log4cxx.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 0de0396220a9566a580166e66b39674cb40efd2176f52ad2c65486c99c920c8c apache-log4cxx-0.10.0.tar.gz diff --git a/buildroot/package/log4cxx/log4cxx.mk b/buildroot/package/log4cxx/log4cxx.mk new file mode 100644 index 0000000..7d7e2e9 --- /dev/null +++ b/buildroot/package/log4cxx/log4cxx.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# log4cxx +# +################################################################################ + +LOG4CXX_VERSION = 0.10.0 +LOG4CXX_SITE = http://archive.apache.org/dist/logging/log4cxx/$(LOG4CXX_VERSION) +LOG4CXX_SOURCE = apache-log4cxx-$(LOG4CXX_VERSION).tar.gz +LOG4CXX_INSTALL_STAGING = YES +LOG4CXX_LICENSE = Apache-2.0 +LOG4CXX_LICENSE_FILES = LICENSE + +LOG4CXX_CONF_OPTS = \ + --with-apr=$(STAGING_DIR)/usr/bin/apr-1-config \ + --with-apr-util=$(STAGING_DIR)/usr/bin/apu-1-config \ + --disable-dot \ + --disable-doxygen \ + --disable-html-docs + +LOG4CXX_DEPENDENCIES = apr apr-util + +$(eval $(autotools-package)) diff --git a/buildroot/package/logrotate/Config.in b/buildroot/package/logrotate/Config.in new file mode 100644 index 0000000..eea9ec2 --- /dev/null +++ b/buildroot/package/logrotate/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LOGROTATE + bool "logrotate" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_POPT + help + A simple program to rotate logs. + + https://github.com/logrotate/logrotate + +comment "logrotate needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/logrotate/logrotate.conf b/buildroot/package/logrotate/logrotate.conf new file mode 100644 index 0000000..6d829dc --- /dev/null +++ b/buildroot/package/logrotate/logrotate.conf @@ -0,0 +1,14 @@ +compress + +include /etc/logrotate.d + +/var/log/messages /var/log/auth.log /var/log/user.log { + rotate 7 + daily + delaycompress + missingok + sharedscripts + postrotate + /usr/bin/killall -HUP syslogd + endscript +} diff --git a/buildroot/package/logrotate/logrotate.hash b/buildroot/package/logrotate/logrotate.hash new file mode 100644 index 0000000..70b068c --- /dev/null +++ b/buildroot/package/logrotate/logrotate.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 fb1ff8502e7ae4aedaa3d0da8d3740a6a0f44b72e34666af724e9094b166c942 logrotate-3.13.0.tar.gz diff --git a/buildroot/package/logrotate/logrotate.mk b/buildroot/package/logrotate/logrotate.mk new file mode 100644 index 0000000..c2c4885 --- /dev/null +++ b/buildroot/package/logrotate/logrotate.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# logrotate +# +################################################################################ + +LOGROTATE_VERSION = 3.13.0 +LOGROTATE_SITE = $(call github,logrotate,logrotate,$(LOGROTATE_VERSION)) +LOGROTATE_LICENSE = GPL-2.0+ +LOGROTATE_LICENSE_FILES = COPYING +LOGROTATE_DEPENDENCIES = popt host-pkgconf +# tarball does not have a generated configure script +LOGROTATE_AUTORECONF = YES +LOGROTATE_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs popt`" + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LOGROTATE_CONF_OPTS += --with-selinux +LOGROTATE_DEPENDENCIES += libselinux +else +LOGROTATE_CONF_OPTS += --without-selinux +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +LOGROTATE_DEPENDENCIES += acl +LOGROTATE_CONF_OPTS += --with-acl +else +LOGROTATE_CONF_OPTS += --without-acl +endif + +define LOGROTATE_INSTALL_TARGET_CONF + $(INSTALL) -m 0644 package/logrotate/logrotate.conf $(TARGET_DIR)/etc/logrotate.conf + $(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/logrotate.d +endef +LOGROTATE_POST_INSTALL_TARGET_HOOKS += LOGROTATE_INSTALL_TARGET_CONF + +$(eval $(autotools-package)) diff --git a/buildroot/package/logsurfer/Config.in b/buildroot/package/logsurfer/Config.in new file mode 100644 index 0000000..43e2f51 --- /dev/null +++ b/buildroot/package/logsurfer/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LOGSURFER + bool "logsurfer" + depends on BR2_USE_MMU # fork() + help + Logsurfer is a program for monitoring system logs in + real-time, and reporting on the occurrence of events. + + http://www.crypt.gen.nz/logsurfer/ diff --git a/buildroot/package/logsurfer/logsurfer.hash b/buildroot/package/logsurfer/logsurfer.hash new file mode 100644 index 0000000..539a41a --- /dev/null +++ b/buildroot/package/logsurfer/logsurfer.hash @@ -0,0 +1,3 @@ +# From https://www.crypt.gen.nz/logsurfer/ +md5 4c26a74d813ccf766117c95c644aa601 logsurfer-1.8.tar.gz +sha256 74a36e8530a884031b4ae2344a46b9aaa07a1ee36d143802f6b64f817c5bd1af logsurfer-1.8.tar.gz diff --git a/buildroot/package/logsurfer/logsurfer.mk b/buildroot/package/logsurfer/logsurfer.mk new file mode 100644 index 0000000..8eb9dc8 --- /dev/null +++ b/buildroot/package/logsurfer/logsurfer.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# logsurfer +# +################################################################################ + +LOGSURFER_VERSION = 1.8 +LOGSURFER_SITE = http://downloads.sourceforge.net/project/logsurfer/logsurfer/logsurfer-$(LOGSURFER_VERSION) + +define LOGSURFER_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/logsurfer \ + $(TARGET_DIR)/usr/bin/logsurfer +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/lpc3250loader/Config.in.host b/buildroot/package/lpc3250loader/Config.in.host new file mode 100644 index 0000000..946820a --- /dev/null +++ b/buildroot/package/lpc3250loader/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_LPC3250LOADER + bool "host lpc3250loader" + help + lpc3250loader is a tool to load/burn programs (in particular + kickstart and S1L) on an LPC3250 platform. + + https://github.com/alexandrebelloni/lpc3250loader diff --git a/buildroot/package/lpc3250loader/lpc3250loader.hash b/buildroot/package/lpc3250loader/lpc3250loader.hash new file mode 100644 index 0000000..4f9dbc4 --- /dev/null +++ b/buildroot/package/lpc3250loader/lpc3250loader.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 267de7541c92e5b007b93c660a41188976d531a3757f4ffd9b7142d3994da7d1 lpc3250loader-1.0.tar.gz diff --git a/buildroot/package/lpc3250loader/lpc3250loader.mk b/buildroot/package/lpc3250loader/lpc3250loader.mk new file mode 100644 index 0000000..ee153fe --- /dev/null +++ b/buildroot/package/lpc3250loader/lpc3250loader.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# lpc3250loader +# +################################################################################ + +HOST_LPC3250LOADER_VERSION = 1.0 +HOST_LPC3250LOADER_SITE = $(call github,alexandrebelloni,lpc3250loader,$(HOST_LPC3250LOADER_VERSION)) +LPC3250LOADER_LICENSE = GPL-2.0+ +LPC3250LOADER_LICENSE_FILES = LPC3250loader.py + +define HOST_LPC3250LOADER_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/LPC3250loader.py \ + $(HOST_DIR)/bin/LPC3250loader.py +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/lpeg/Config.in b/buildroot/package/lpeg/Config.in new file mode 100644 index 0000000..957991d --- /dev/null +++ b/buildroot/package/lpeg/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LPEG + bool "lpeg" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + LPeg is a new pattern-matching library for Lua, + based on Parsing Expression Grammars (PEGs). + + http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html diff --git a/buildroot/package/lpeg/lpeg.hash b/buildroot/package/lpeg/lpeg.hash new file mode 100644 index 0000000..9261674 --- /dev/null +++ b/buildroot/package/lpeg/lpeg.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 149be31e0155c4694f77ea7264d9b398dd134eca0d00ff03358d91a6cfb2ea9d lpeg-1.0.1-1.src.rock diff --git a/buildroot/package/lpeg/lpeg.mk b/buildroot/package/lpeg/lpeg.mk new file mode 100644 index 0000000..1541f33 --- /dev/null +++ b/buildroot/package/lpeg/lpeg.mk @@ -0,0 +1,10 @@ +################################################################################ +# +# lpeg +# +################################################################################ + +LPEG_VERSION = 1.0.1-1 +LPEG_LICENSE = MIT + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lpty/Config.in b/buildroot/package/lpty/Config.in new file mode 100644 index 0000000..50cbd25 --- /dev/null +++ b/buildroot/package/lpty/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LPTY + bool "lpty" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + A simple facility for lua to control other programs via + PTYs. + + http://www.tset.de/lpty/ diff --git a/buildroot/package/lpty/lpty.hash b/buildroot/package/lpty/lpty.hash new file mode 100644 index 0000000..a451fd8 --- /dev/null +++ b/buildroot/package/lpty/lpty.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cf263ece9b50a78a7fb2277e3546fbbf0bf6858f41821932d92f2e3d8a065091 lpty-1.0.1-1.src.rock diff --git a/buildroot/package/lpty/lpty.mk b/buildroot/package/lpty/lpty.mk new file mode 100644 index 0000000..5a69125 --- /dev/null +++ b/buildroot/package/lpty/lpty.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lpty +# +################################################################################ + +LPTY_VERSION = 1.0.1-1 +LPTY_SUBDIR = lpty-$(LPTY_VERSION) +LPTY_LICENSE = MIT +LPTY_LICENSE_FILES = $(LPTY_SUBDIR)/doc/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lrandom/Config.in b/buildroot/package/lrandom/Config.in new file mode 100644 index 0000000..64bcf0c --- /dev/null +++ b/buildroot/package/lrandom/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LRANDOM + bool "lrandom" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + A library for generating random numbers + based on the Mersenne Twister + + http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/#lrandom diff --git a/buildroot/package/lrandom/lrandom.hash b/buildroot/package/lrandom/lrandom.hash new file mode 100644 index 0000000..3f60133 --- /dev/null +++ b/buildroot/package/lrandom/lrandom.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 96fbc56beb0efca20253301915e14ba25150e2b09541ea7a3570e0def624b196 lrandom-20120430.51-1.src.rock +sha256 480a6cf11caaba99290ff30cd6e854ac9dce61e38b9d9caf5498165f7fb93454 lrandom-20120430.52-1.src.rock diff --git a/buildroot/package/lrandom/lrandom.mk b/buildroot/package/lrandom/lrandom.mk new file mode 100644 index 0000000..09b62c9 --- /dev/null +++ b/buildroot/package/lrandom/lrandom.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# lrandom +# +################################################################################ + +ifeq ($(BR2_PACKAGE_LUA_5_2)$(BR2_PACKAGE_LUA_5_3),y) +LRANDOM_VERSION = 20120430.52-1 +else +LRANDOM_VERSION = 20120430.51-1 +endif +LRANDOM_SUBDIR = random +LRANDOM_LICENSE = Public domain + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lrzsz/Config.in b/buildroot/package/lrzsz/Config.in new file mode 100644 index 0000000..1b5da14 --- /dev/null +++ b/buildroot/package/lrzsz/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LRZSZ + bool "lrzsz" + # It could technically build in a static-only environment, but + # it unconditionally redefines the error() and error_at_line() + # functions, which clashes with the definition from + # uClibc. Since the autotools packaging dates back from 1998, + # lots of work is needed to fix it, and do some proper tests + # on the availability of such functions. + depends on !BR2_STATIC_LIBS + help + Portable and fast implementation of the X/Y/Zmodem protocols. + + http://www.ohse.de/uwe/software/lrzsz.html + +comment "lrzsz needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/lrzsz/lrzsz.hash b/buildroot/package/lrzsz/lrzsz.hash new file mode 100644 index 0000000..932832d --- /dev/null +++ b/buildroot/package/lrzsz/lrzsz.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c28b36b14bddb014d9e9c97c52459852f97bd405f89113f30bee45ed92728ff1 lrzsz-0.12.20.tar.gz diff --git a/buildroot/package/lrzsz/lrzsz.mk b/buildroot/package/lrzsz/lrzsz.mk new file mode 100644 index 0000000..25ecf3d --- /dev/null +++ b/buildroot/package/lrzsz/lrzsz.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# lrzsz +# +################################################################################ + +LRZSZ_VERSION = 0.12.20 +LRZSZ_SITE = http://www.ohse.de/uwe/releases +LRZSZ_CONF_OPTS = --disable-timesync +LRZSZ_LICENSE = GPL-2.0+ +LRZSZ_LICENSE_FILES = COPYING + +define LRZSZ_POST_CONFIGURE_HOOKS + $(SED) "s/-lnsl//;" $(@D)/src/Makefile + $(SED) "s~\(#define ENABLE_SYSLOG.*\)~/* \1 */~;" $(@D)/config.h +endef + +define LRZSZ_BUILD_HOOKS + $(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" prefix="$(TARGET_DIR)" -C $(@D) +endef + +define LRZSZ_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/src/lrz $(TARGET_DIR)/usr/bin/rz + $(INSTALL) -m 0755 -D $(@D)/src/lsz $(TARGET_DIR)/usr/bin/sz + ln -sf rz $(TARGET_DIR)/usr/bin/lrz + ln -sf sz $(TARGET_DIR)/usr/bin/lsz + ln -sf rz $(TARGET_DIR)/usr/bin/rb + ln -sf sz $(TARGET_DIR)/usr/bin/sb + ln -sf rz $(TARGET_DIR)/usr/bin/rx + ln -sf sz $(TARGET_DIR)/usr/bin/sx +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/lshw/0001-Makefile-allow-to-pass-additional-LIBS.patch b/buildroot/package/lshw/0001-Makefile-allow-to-pass-additional-LIBS.patch new file mode 100644 index 0000000..7720124 --- /dev/null +++ b/buildroot/package/lshw/0001-Makefile-allow-to-pass-additional-LIBS.patch @@ -0,0 +1,44 @@ +From 5af98ca8135ac411364b16720d795224a9b4a178 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sat, 30 Jul 2016 15:15:14 +0200 +Subject: [PATCH] Makefile: allow to pass additional LIBS + +We need to be able to pass extra LIBS when our toolchain lacks NLS +support, this way we can build libintl and link to it. A good example +is uClibc with locale support disabled. + +Signed-off-by: Gustavo Zacarias +--- + src/Makefile | 2 +- + src/gui/Makefile | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index b50586b..acbdbfa 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -30,7 +30,7 @@ ifneq ($(shell $(LD) --help 2| grep -- --as-needed), ) + LDFLAGS+= -Wl,--as-needed + endif + LDSTATIC=-static +-LIBS=-llshw -lresolv ++LIBS+=-llshw -lresolv + ifeq ($(SQLITE), 1) + LIBS+= $(shell pkg-config --libs sqlite3) + endif +diff --git a/src/gui/Makefile b/src/gui/Makefile +index 332ce57..7f72e3f 100644 +--- a/src/gui/Makefile ++++ b/src/gui/Makefile +@@ -11,7 +11,7 @@ INCLUDES=-I../core $(GTKINCLUDES) + CXXFLAGS=-g -Wall $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS) + CFLAGS=$(CXXFLAGS) $(DEFINES) + GTKLIBS=$(shell pkg-config gtk+-2.0 gmodule-2.0 --libs) +-LIBS=-L../core -llshw -lresolv $(GTKLIBS) ++LIBS+=-L../core -llshw -lresolv $(GTKLIBS) + LDFLAGS= + ifneq ($(shell $(LD) --help 2| grep -- --as-needed), ) + LDFLAGS+= -Wl,--as-needed +-- +2.7.4 + diff --git a/buildroot/package/lshw/0002-Fix-musl-build-basename-is-in-libgen.h.patch b/buildroot/package/lshw/0002-Fix-musl-build-basename-is-in-libgen.h.patch new file mode 100644 index 0000000..d80c62a --- /dev/null +++ b/buildroot/package/lshw/0002-Fix-musl-build-basename-is-in-libgen.h.patch @@ -0,0 +1,78 @@ +From 016bdb133a44bdf42c268ff72ee7aa04af19cfd3 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Sat, 27 Aug 2016 01:11:56 +0200 +Subject: [PATCH] Fix musl build: basename() is in libgen.h. + +Also, its argument is not const, so add const_cast. This is risky +because in fact basename() will modify the argument if it ends with / +but that's not the case here. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + src/core/dasd.cc | 1 + + src/core/sysfs.cc | 9 +++++---- + 2 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/src/core/dasd.cc b/src/core/dasd.cc +index 626b8a8..6276101 100644 +--- a/src/core/dasd.cc ++++ b/src/core/dasd.cc +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + + using namespace std; + +diff --git a/src/core/sysfs.cc b/src/core/sysfs.cc +index acc9d00..bdd69e3 100644 +--- a/src/core/sysfs.cc ++++ b/src/core/sysfs.cc +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + + __ID("@(#) $Id$"); + +@@ -99,7 +100,7 @@ static string sysfs_getbustype(const string & path) + { + devname = + string(fs.path + "/bus/") + string(namelist[i]->d_name) + +- "/devices/" + basename(path.c_str()); ++ "/devices/" + basename(const_cast(path.c_str())); + + if (samefile(devname, path)) + return string(namelist[i]->d_name); +@@ -139,7 +140,7 @@ static string sysfstobusinfo(const string & path) + + if (bustype == "virtio") + { +- string name = basename(path.c_str()); ++ string name = basename(const_cast(path.c_str())); + if (name.compare(0, 6, "virtio") == 0) + return "virtio@" + name.substr(6); + else +@@ -207,7 +208,7 @@ string entry::driver() const + string driverlink = This->devpath + "/driver"; + if (!exists(driverlink)) + return ""; +- return basename(readlink(driverlink).c_str()); ++ return basename(const_cast(readlink(driverlink).c_str())); + } + + +@@ -288,7 +289,7 @@ string entry::name_in_class(const string & classname) const + + string entry::name() const + { +- return basename(This->devpath.c_str()); ++ return basename(const_cast(This->devpath.c_str())); + } + + +-- +2.9.3 + diff --git a/buildroot/package/lshw/0003-Fix-use-of-LONG_BIT.patch b/buildroot/package/lshw/0003-Fix-use-of-LONG_BIT.patch new file mode 100644 index 0000000..7d8d739 --- /dev/null +++ b/buildroot/package/lshw/0003-Fix-use-of-LONG_BIT.patch @@ -0,0 +1,36 @@ +From 50284ac4400ac3d7562f4765726492caee8ff547 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Sat, 27 Aug 2016 01:15:13 +0200 +Subject: [PATCH] Fix use of LONG_BIT + +LONG_BIT is not a sysconf value, it is either 32 or 64. Using it as +a sysconf value will give weird results. + +Originally it was sysconf(_SC_LONG_BIT) (before it was "fixed" by the +gentoo guys). But this is useless: it will always return a value +equal to LONG_BIT: it's either compiled 32-bit or 64-bit so a runtime +lookup doesn't make sense. For this reason, musl has removed the +definition of _SC_LONG_BIT. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + src/core/abi.cc | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/core/abi.cc b/src/core/abi.cc +index 76e5082..a13daaa 100644 +--- a/src/core/abi.cc ++++ b/src/core/abi.cc +@@ -19,8 +19,7 @@ __ID("@(#) $Id: mem.cc 1352 2006-05-27 23:54:13Z ezix $"); + + bool scan_abi(hwNode & system) + { +- // are we compiled as 32- or 64-bit process ? +- system.setWidth(sysconf(LONG_BIT)); ++ system.setWidth(LONG_BIT); + + pushd(PROC_SYS); + +-- +2.9.3 + diff --git a/buildroot/package/lshw/Config.in b/buildroot/package/lshw/Config.in new file mode 100644 index 0000000..3caac66 --- /dev/null +++ b/buildroot/package/lshw/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LSHW + bool "lshw" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + help + lshw (Hardware Lister) is a small tool to provide + detailed information on the hardware configuration of the + machine. + + http://ezix.org/project/wiki/HardwareLiSter + +comment "lshw needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/buildroot/package/lshw/lshw.hash b/buildroot/package/lshw/lshw.hash new file mode 100644 index 0000000..0694229 --- /dev/null +++ b/buildroot/package/lshw/lshw.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ae22ef11c934364be4fd2a0a1a7aadf4495a0251ec6979da280d342a89ca3c2f lshw-B.02.18.tar.gz diff --git a/buildroot/package/lshw/lshw.mk b/buildroot/package/lshw/lshw.mk new file mode 100644 index 0000000..9b52b09 --- /dev/null +++ b/buildroot/package/lshw/lshw.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# lshw +# +################################################################################ + +LSHW_VERSION = B.02.18 +LSHW_SITE = http://ezix.org/software/files +LSHW_LICENSE = GPL-2.0 +LSHW_LICENSE_FILES = COPYING + +LSHW_MAKE_OPTS = CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" AR="$(TARGET_AR)" \ + RPM_OPT_FLAGS="$(TARGET_CFLAGS)" all +LSHW_MAKE_ENV = \ + $(TARGET_MAKE_ENV) \ + LIBS=$(TARGET_NLS_LIBS) +LSHW_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +define LSHW_BUILD_CMDS + $(LSHW_MAKE_ENV) $(MAKE) -C $(@D)/src $(LSHW_MAKE_OPTS) +endef + +define LSHW_INSTALL_TARGET_CMDS + $(LSHW_MAKE_ENV) $(MAKE) -C $(@D)/src DESTDIR=$(TARGET_DIR) \ + $(LSHW_MAKE_OPTS) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/lsof/0001-makefile.patch b/buildroot/package/lsof/0001-makefile.patch new file mode 100644 index 0000000..65b1b2e --- /dev/null +++ b/buildroot/package/lsof/0001-makefile.patch @@ -0,0 +1,14 @@ +diff -ru lsof_4.81.orig/lsof_4.81_src/lib/Makefile.skel lsof_4.81/lsof_4.81_src/lib/Makefile.skel +--- a/lib/Makefile.skel 2001-02-13 03:12:22.000000000 +0100 ++++ b/lib/Makefile.skel 2006-11-29 13:51:44.000000000 +0100 +@@ -21,8 +21,8 @@ + all: ${LIB} + + ${LIB}: ${OBJ} +- ${AR} +- ${RANLIB} ++ ${AR} cr ${LIB} ${OBJ} ++ ${RANLIB} ${LIB} + + clean: FRC + rm -f ${LIB} ${OBJ} errs Makefile.bak a.out core diff --git a/buildroot/package/lsof/0002-noportmap.patch b/buildroot/package/lsof/0002-noportmap.patch new file mode 100644 index 0000000..984e0d8 --- /dev/null +++ b/buildroot/package/lsof/0002-noportmap.patch @@ -0,0 +1,18 @@ +--- a/print.c 2006-08-23 13:37:43.000000000 -0600 ++++ b/print.c 2006-08-23 13:38:29.000000000 -0600 +@@ -148,6 +148,7 @@ + static void + fill_portmap() + { ++#if !defined __UCLIBC__ || (defined __UCLIBC__ && defined __UCLIBC_HAS_RPC__) + char buf[128], *cp, *nm; + CLIENT *c; + int h, port, pr; +@@ -266,6 +267,7 @@ + Pth[pr][h] = pt; + } + clnt_destroy(c); ++#endif + } + + diff --git a/buildroot/package/lsof/0003-override-cflags.patch b/buildroot/package/lsof/0003-override-cflags.patch new file mode 100644 index 0000000..135e599 --- /dev/null +++ b/buildroot/package/lsof/0003-override-cflags.patch @@ -0,0 +1,13 @@ +--- lsof_4.84/Configure 2008-10-21 18:21:45.000000000 +0200 ++++ lsof_4.84/Configure 2010-11-03 14:00:00.000000000 +0100 +@@ -5206,6 +5206,10 @@ + cp $LSOF_MKFC ${LSOF_LIB}/$LSOF_LIBMKF + fi # } + cat ./dialects/$LSOF_DIALECT_DIR/$LSOF_REST >> $LSOF_MKFC ++if test "X$LSOF_CFLAGS_OVERRIDE" != "X" # { ++then ++ sed -i -e 's/^CFLAGS=/override CFLAGS=/' $LSOF_MKFC ++fi # } + if test "X$LSOF_LIB_NO" = "X" # { + then + diff --git a/buildroot/package/lsof/0004-remove-susvlegacy-funcs.patch b/buildroot/package/lsof/0004-remove-susvlegacy-funcs.patch new file mode 100644 index 0000000..fca66ae --- /dev/null +++ b/buildroot/package/lsof/0004-remove-susvlegacy-funcs.patch @@ -0,0 +1,12 @@ +diff -rdup lsof_4.81.orig/lsof_4.81_src/dialects/linux/machine.h lsof_4.81/lsof_4.81_src/dialects/linux/machine.h +--- a/dialects/linux/machine.h 2007-04-24 18:20:58.000000000 +0200 ++++ b/dialects/linux/machine.h 2007-05-15 12:17:03.000000000 +0200 +@@ -616,6 +616,6 @@ + * zeromem is a macro that uses bzero or memset. + */ + +-#define zeromem(a, l) bzero(a, l) ++#define zeromem(a, l) memset(a, 0, l) + + #endif /* !defined(LSOF_MACHINE_H) */ + diff --git a/buildroot/package/lsof/Config.in b/buildroot/package/lsof/Config.in new file mode 100644 index 0000000..c27cc81 --- /dev/null +++ b/buildroot/package/lsof/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LSOF + bool "lsof" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + lsof (LiSt Open Files) + The lsof tool lists information about files opened by + processes. + + http://people.freebsd.org/~abe/ diff --git a/buildroot/package/lsof/lsof.hash b/buildroot/package/lsof/lsof.hash new file mode 100644 index 0000000..4a1249f --- /dev/null +++ b/buildroot/package/lsof/lsof.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 81ac2fc5fdc944793baf41a14002b6deb5a29096b387744e28f8c30a360a3718 lsof_4.89.tar.bz2 diff --git a/buildroot/package/lsof/lsof.mk b/buildroot/package/lsof/lsof.mk new file mode 100644 index 0000000..e5cd4bc --- /dev/null +++ b/buildroot/package/lsof/lsof.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# lsof +# +################################################################################ + +LSOF_VERSION = 4.89 +LSOF_SOURCE = lsof_$(LSOF_VERSION).tar.bz2 +# Use http mirror since master ftp site access is very draconian +LSOF_SITE = http://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof +LSOF_LICENSE = lsof license +# License is repeated in each file, this is a relatively small one. +# It is also defined in 00README, but that contains a lot of other cruft. +LSOF_LICENSE_FILES = dialects/linux/dproto.h + +# Make certain full-blown lsof gets built after the busybox version (1.20+) +LSOF_DEPENDENCIES += $(if $(BR2_PACKAGE_BUSYBOX),busybox) + +ifeq ($(BR2_USE_WCHAR),) +define LSOF_CONFIGURE_WCHAR_FIXUPS + $(SED) 's,^#define[[:space:]]*HASWIDECHAR.*,#undef HASWIDECHAR,' \ + $(@D)/machine.h +endef +endif + +ifeq ($(BR2_ENABLE_LOCALE),) +define LSOF_CONFIGURE_LOCALE_FIXUPS + $(SED) 's,^#define[[:space:]]*HASSETLOCALE.*,#undef HASSETLOCALE,' \ + $(@D)/machine.h +endef +endif + +# The .tar.bz2 contains another .tar, which contains the source code. +define LSOF_EXTRACT_CMDS + $(call suitable-extractor,$(LSOF_SOURCE)) $(DL_DIR)/$(LSOF_SOURCE) | \ + $(TAR) -O $(TAR_OPTIONS) - lsof_$(LSOF_VERSION)/lsof_$(LSOF_VERSION)_src.tar | \ + $(TAR) --strip-components=1 -C $(LSOF_DIR) $(TAR_OPTIONS) - +endef + +define LSOF_CONFIGURE_CMDS + (cd $(@D) ; \ + echo n | $(TARGET_CONFIGURE_OPTS) DEBUG="$(TARGET_CFLAGS)" \ + LSOF_INCLUDE="$(STAGING_DIR)/usr/include" LSOF_CFLAGS_OVERRIDE=1 \ + LINUX_CLIB=-DGLIBCV=2 ./Configure linux) + $(LSOF_CONFIGURE_WCHAR_FIXUPS) + $(LSOF_CONFIGURE_LOCALE_FIXUPS) +endef + +define LSOF_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) DEBUG="$(TARGET_CFLAGS)" -C $(@D) +endef + +define LSOF_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/lsof $(TARGET_DIR)/usr/bin/lsof +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/lsqlite3/Config.in b/buildroot/package/lsqlite3/Config.in new file mode 100644 index 0000000..223fb59 --- /dev/null +++ b/buildroot/package/lsqlite3/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LSQLITE3 + bool "lsqlite3" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + select BR2_PACKAGE_SQLITE + help + a thin Lua wrapper for the SQLite3 library. + + http://lua.sqlite.org/ diff --git a/buildroot/package/lsqlite3/lsqlite3.hash b/buildroot/package/lsqlite3/lsqlite3.hash new file mode 100644 index 0000000..7cf0358 --- /dev/null +++ b/buildroot/package/lsqlite3/lsqlite3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e6eb64a7ca3727c3093f3c37341d8ecadf9eac913e468eae413828476b19c225 lsqlite3-0.9.4-2.src.rock diff --git a/buildroot/package/lsqlite3/lsqlite3.mk b/buildroot/package/lsqlite3/lsqlite3.mk new file mode 100644 index 0000000..6f6445d --- /dev/null +++ b/buildroot/package/lsqlite3/lsqlite3.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lsqlite3 +# +################################################################################ + +LSQLITE3_VERSION = 0.9.4-2 +LSQLITE3_SUBDIR = lsqlite3_fsl09x +LSQLITE3_DEPENDENCIES = sqlite +LSQLITE3_LICENSE = MIT + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lsscsi/Config.in b/buildroot/package/lsscsi/Config.in new file mode 100644 index 0000000..1c85686 --- /dev/null +++ b/buildroot/package/lsscsi/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LSSCSI + bool "lsscsi" + help + lsscsi - list SCSI devices (or hosts) and their attributes + + http://sg.danny.cz/scsi/lsscsi.html diff --git a/buildroot/package/lsscsi/lsscsi.hash b/buildroot/package/lsscsi/lsscsi.hash new file mode 100644 index 0000000..d39da9b --- /dev/null +++ b/buildroot/package/lsscsi/lsscsi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 025d009a1af42bc5b2fca664c44c9ecdfd754356e4a44f5c6aced2420afadd50 lsscsi-0.28.tgz diff --git a/buildroot/package/lsscsi/lsscsi.mk b/buildroot/package/lsscsi/lsscsi.mk new file mode 100644 index 0000000..649aad9 --- /dev/null +++ b/buildroot/package/lsscsi/lsscsi.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lsscsi +# +################################################################################ + +LSSCSI_VERSION = 0.28 +LSSCSI_SOURCE = lsscsi-$(LSSCSI_VERSION).tgz +LSSCSI_SITE = http://sg.danny.cz/scsi +LSSCSI_LICENSE = GPL-2.0+ +LSSCSI_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/lsuio/Config.in b/buildroot/package/lsuio/Config.in new file mode 100644 index 0000000..675a318 --- /dev/null +++ b/buildroot/package/lsuio/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LSUIO + bool "lsuio" + help + list available userspace I/O (UIO) devices + + http://www.osadl.org/UIO.uio.0.html diff --git a/buildroot/package/lsuio/lsuio.hash b/buildroot/package/lsuio/lsuio.hash new file mode 100644 index 0000000..d6077af --- /dev/null +++ b/buildroot/package/lsuio/lsuio.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c88b3850248b2d3419e025abd7b9b0991c8bd33a2d4983f9608408a29900bfb5 lsuio-0.2.0.tar.gz diff --git a/buildroot/package/lsuio/lsuio.mk b/buildroot/package/lsuio/lsuio.mk new file mode 100644 index 0000000..193de15 --- /dev/null +++ b/buildroot/package/lsuio/lsuio.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lsuio +# +################################################################################ + +LSUIO_VERSION = 0.2.0 +LSUIO_SITE = http://www.osadl.org/projects/downloads/UIO/user +LSUIO_LICENSE = GPL-2.0 +LSUIO_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/ltp-testsuite/0001-rpc-tirpc-disable-tirpc_auth_authdes_-create-tests.patch b/buildroot/package/ltp-testsuite/0001-rpc-tirpc-disable-tirpc_auth_authdes_-create-tests.patch new file mode 100644 index 0000000..344ba4a --- /dev/null +++ b/buildroot/package/ltp-testsuite/0001-rpc-tirpc-disable-tirpc_auth_authdes_-create-tests.patch @@ -0,0 +1,36 @@ +From 9bbadb7ece1b068465279e7248b3439d443054a6 Mon Sep 17 00:00:00 2001 +From: Erico Nunes +Date: Fri, 30 Sep 2016 17:43:08 +0200 +Subject: [PATCH] rpc-tirpc: disable tirpc_auth_authdes_*create tests + +Due to Buildroot patch 0007-Disable-DES-authentification-support.patch on +libtirpc, this library is built without method authdes_create. Any code +that uses this library, like the rpc-tirpc testsuite, thus fails to link. + +In the context of Buildroot, instead of disabling ltp-testsuite entirely, +just disable the problematic tests. + +Upstream-status: not applicable +Signed-off-by: Thomas De Schampheleire +[Erico: Rebase for ltp 20160920] +Signed-off-by: Erico Nunes +--- + testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/Makefile | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/Makefile b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/Makefile +index 45bc8a6..c04a088 100644 +--- a/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/Makefile ++++ b/testcases/network/rpc/rpc-tirpc/tests_pack/rpc_suite/tirpc/Makefile +@@ -19,4 +19,8 @@ + top_srcdir ?= ../../../../../../.. + + include $(top_srcdir)/include/mk/env_pre.mk ++ ++FILTER_OUT_DIRS += tirpc_auth_authdes_seccreate \ ++ tirpc_auth_authdes_create ++ + include $(top_srcdir)/include/mk/generic_trunk_target.mk +-- +2.7.4 + diff --git a/buildroot/package/ltp-testsuite/0002-numa-Fix-numa-v2-detection-for-cross-compilation.patch b/buildroot/package/ltp-testsuite/0002-numa-Fix-numa-v2-detection-for-cross-compilation.patch new file mode 100644 index 0000000..6ad1db0 --- /dev/null +++ b/buildroot/package/ltp-testsuite/0002-numa-Fix-numa-v2-detection-for-cross-compilation.patch @@ -0,0 +1,37 @@ +From 01c134f30be755a43af12a4ae2c31177d04be790 Mon Sep 17 00:00:00 2001 +From: Petr Vorel +Date: Mon, 29 Jan 2018 10:31:40 +0100 +Subject: [PATCH] numa: Fix numa v2 detection for cross compilation + +Changed to AC_COMPILE_IFELSE as AC_RUN_IFELSE cannot be run while +cross compiling. + +Bug found by Buildroot project. + +Signed-off-by: Petr Vorel +Reported-by: Baruch Siach +--- + m4/ltp-numa.m4 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/m4/ltp-numa.m4 b/m4/ltp-numa.m4 +index fc3383e97..633f54c18 100644 +--- a/m4/ltp-numa.m4 ++++ b/m4/ltp-numa.m4 +@@ -28,11 +28,11 @@ AC_DEFUN([LTP_CHECK_SYSCALL_NUMA], [ + AC_CHECK_HEADERS([numa.h numaif.h], [], [have_numa_headers=no]) + + if test "x$have_numa_headers" != "xno"; then +- AC_RUN_IFELSE([AC_LANG_PROGRAM([ ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ + #include + ], [ + #if LIBNUMA_API_VERSION < 2 +-exit(1); ++# error Required numa headers >= 2 + #endif + ])], [have_numa_headers_v2=yes]) + fi +-- +2.16.0 + diff --git a/buildroot/package/ltp-testsuite/Config.in b/buildroot/package/ltp-testsuite/Config.in new file mode 100644 index 0000000..711c859 --- /dev/null +++ b/buildroot/package/ltp-testsuite/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS + bool + # Needs __sync*() built-ins for 4-byte data, except on a few + # architectures for which a specific implementation is + # provided in ltp-testsuite + default y if BR2_TOOLCHAIN_HAS_SYNC_4 + default y if BR2_arc + # does not build on nios2, cachectl.h issue + depends on !BR2_nios2 + +config BR2_PACKAGE_LTP_TESTSUITE + bool "ltp-testsuite" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_TOOLCHAIN_USES_MUSL + depends on BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + The Linux Test Project provides a huge testsuite for Linux. + + http://linux-test-project.github.io + +comment "ltp-testsuite needs a glibc or uClibc toolchain w/ NPTL" + depends on BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/ltp-testsuite/ltp-testsuite.hash b/buildroot/package/ltp-testsuite/ltp-testsuite.hash new file mode 100644 index 0000000..d75d204 --- /dev/null +++ b/buildroot/package/ltp-testsuite/ltp-testsuite.hash @@ -0,0 +1,2 @@ +# From: https://github.com/linux-test-project/ltp/releases/download/20180118/ltp-full-20180118.tar.xz.sha1 +sha1 2e643f1e29cd89efc8059729f60237a427fd409e ltp-full-20180118.tar.xz diff --git a/buildroot/package/ltp-testsuite/ltp-testsuite.mk b/buildroot/package/ltp-testsuite/ltp-testsuite.mk new file mode 100644 index 0000000..c47f587 --- /dev/null +++ b/buildroot/package/ltp-testsuite/ltp-testsuite.mk @@ -0,0 +1,89 @@ +################################################################################ +# +# ltp-testsuite +# +################################################################################ + +LTP_TESTSUITE_VERSION = 20180118 +LTP_TESTSUITE_SOURCE = ltp-full-$(LTP_TESTSUITE_VERSION).tar.xz +LTP_TESTSUITE_SITE = https://github.com/linux-test-project/ltp/releases/download/$(LTP_TESTSUITE_VERSION) +LTP_TESTSUITE_LICENSE = GPL-2.0, GPL-2.0+ +LTP_TESTSUITE_LICENSE_FILES = COPYING + +# Do not enable Open POSIX testsuite as it doesn't cross-compile +# properly: t0 program is built for the host machine. Notice that due +# to a bug, --without-open-posix-testsuite actually enables the test +# suite. +# See https://github.com/linux-test-project/ltp/issues/143 (invalid +# autoconf test) and +# https://github.com/linux-test-project/ltp/issues/144 (Open POSIX +# testsuite not cross-compiling). +LTP_TESTSUITE_CONF_OPTS += \ + --with-realtime-testsuite + +ifeq ($(BR2_LINUX_KERNEL),y) +LTP_TESTSUITE_DEPENDENCIES += linux +LTP_TESTSUITE_MAKE_ENV += $(LINUX_MAKE_FLAGS) +LTP_TESTSUITE_CONF_OPTS += --with-linux-dir=$(LINUX_DIR) +else +LTP_TESTSUITE_CONF_OPTS += --without-modules +endif + +# We change the prefix to a custom one, otherwise we get scripts and +# directories directly in /usr, such as /usr/runalltests.sh +LTP_TESTSUITE_CONF_OPTS += --prefix=/usr/lib/ltp-testsuite + +# Needs libcap with file attrs which needs attr, so both required +ifeq ($(BR2_PACKAGE_LIBCAP)$(BR2_PACKAGE_ATTR),yy) +LTP_TESTSUITE_DEPENDENCIES += libcap +else +LTP_TESTSUITE_CONF_ENV += ac_cv_lib_cap_cap_compare=no +endif + +# No explicit enable/disable options +ifeq ($(BR2_PACKAGE_NUMACTL),y) +LTP_TESTSUITE_DEPENDENCIES += numactl +else +LTP_TESTSUITE_CONF_ENV += have_numa_headers=no +endif + +# ltp-testsuite uses , which isn't compatible with largefile +# support. +LTP_TESTSUITE_CFLAGS = $(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS)) +LTP_TESTSUITE_CPPFLAGS = $(filter-out -D_FILE_OFFSET_BITS=64,$(TARGET_CPPFLAGS)) +LTP_TESTSUITE_LIBS = + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +LTP_TESTSUITE_DEPENDENCIES += libtirpc host-pkgconf +LTP_TESTSUITE_CFLAGS += "`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" +LTP_TESTSUITE_LIBS += "`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" +endif + +LTP_TESTSUITE_CONF_ENV += \ + CFLAGS="$(LTP_TESTSUITE_CFLAGS)" \ + CPPFLAGS="$(LTP_TESTSUITE_CPPFLAGS)" \ + LIBS="$(LTP_TESTSUITE_LIBS)" \ + SYSROOT="$(STAGING_DIR)" + +# Required by patch 0002-numa-Fix-numa-v2-detection-for-cross-compilation.patch +LTP_TESTSUITE_AUTORECONF = YES + +# Requires uClibc fts and bessel support, normally not enabled +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +define LTP_TESTSUITE_REMOVE_UNSUPPORTED + rm -rf $(@D)/testcases/kernel/controllers/cpuset/ + rm -rf $(@D)/testcases/misc/math/float/bessel/ + rm -f $(@D)/testcases/misc/math/float/float_bessel.c +endef +LTP_TESTSUITE_POST_PATCH_HOOKS += LTP_TESTSUITE_REMOVE_UNSUPPORTED +endif + +# ldd command build system tries to build a shared library unconditionally. +ifeq ($(BR2_STATIC_LIBS),y) +define LTP_TESTSUITE_REMOVE_LDD + rm -rf $(@D)/testcases/commands/ldd +endef +LTP_TESTSUITE_POST_PATCH_HOOKS += LTP_TESTSUITE_REMOVE_LDD +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ltrace/0001-arm-plt.patch b/buildroot/package/ltrace/0001-arm-plt.patch new file mode 100644 index 0000000..f130ce8 --- /dev/null +++ b/buildroot/package/ltrace/0001-arm-plt.patch @@ -0,0 +1,30 @@ +From 04377d28135e351c8d096c4392a493e937416815 Mon Sep 17 00:00:00 2001 +From: Alexandre Belloni +Date: Thu, 24 Jul 2014 23:15:20 +0200 +Subject: [PATCH] Allow building with uclibc toolchains + +Unfortunately, uclicbc doesn't define SHT_ARM_ATTRIBUTES in elf.h + +Signed-off-by: Alexandre Belloni +--- + sysdeps/linux-gnu/arm/plt.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/sysdeps/linux-gnu/arm/plt.c b/sysdeps/linux-gnu/arm/plt.c +index 9e9e37f0c5b0..a0a5795eb9cb 100644 +--- a/sysdeps/linux-gnu/arm/plt.c ++++ b/sysdeps/linux-gnu/arm/plt.c +@@ -28,6 +28,10 @@ + #include "library.h" + #include "ltrace-elf.h" + ++#ifndef SHT_ARM_ATTRIBUTES ++#define SHT_ARM_ATTRIBUTES 0x70000003 ++#endif ++ + static int + get_hardfp(uint64_t abi_vfp_args) + { +-- +1.9.1 + diff --git a/buildroot/package/ltrace/0002-sparc-add-missing-library.h-include.patch b/buildroot/package/ltrace/0002-sparc-add-missing-library.h-include.patch new file mode 100644 index 0000000..01f1f2e --- /dev/null +++ b/buildroot/package/ltrace/0002-sparc-add-missing-library.h-include.patch @@ -0,0 +1,36 @@ +From 4e58f53b7886420d002e5919f279acd6d7c4afd1 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 22 Dec 2015 21:47:45 +0100 +Subject: [PATCH] sparc: add missing library.h include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes the following build failure on sparc: + +plt.c: In function ‘sym2addr’: +plt.c:33:12: error: dereferencing pointer to incomplete type + return sym->enter_addr; + ^ +plt.c:34:1: warning: control reaches end of non-void function [-Wreturn-type] + +Signed-off-by: Thomas Petazzoni +--- + sysdeps/linux-gnu/sparc/plt.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/sysdeps/linux-gnu/sparc/plt.c b/sysdeps/linux-gnu/sparc/plt.c +index 3d2e589..959eed1 100644 +--- a/sysdeps/linux-gnu/sparc/plt.c ++++ b/sysdeps/linux-gnu/sparc/plt.c +@@ -21,6 +21,7 @@ + #include + #include "proc.h" + #include "common.h" ++#include "library.h" + + GElf_Addr + arch_plt_sym_val(struct ltelf *lte, size_t ndx, GElf_Rela * rela) { +-- +2.6.4 + diff --git a/buildroot/package/ltrace/Config.in b/buildroot/package/ltrace/Config.in new file mode 100644 index 0000000..2defbe2 --- /dev/null +++ b/buildroot/package/ltrace/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_LTRACE_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_i386 + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_powerpc + default y if BR2_sparc + default y if BR2_x86_64 + default y if BR2_xtensa + +config BR2_PACKAGE_LTRACE + bool "ltrace" + depends on BR2_USE_WCHAR # elfutils + depends on !BR2_STATIC_LIBS # elfutils + depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils + depends on BR2_PACKAGE_LTRACE_ARCH_SUPPORTS + select BR2_PACKAGE_ELFUTILS + help + Debugging program which runs a specified command until it + exits. While the command is executing, ltrace intercepts and + records the dynamic library calls which are called by the + executed process and the signals received by that process. + + http://ltrace.org + +comment "ltrace needs a uClibc or glibc toolchain w/ wchar, dynamic library" + depends on BR2_PACKAGE_LTRACE_ARCH_SUPPORTS + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) diff --git a/buildroot/package/ltrace/ltrace.hash b/buildroot/package/ltrace/ltrace.hash new file mode 100644 index 0000000..58a9c6d --- /dev/null +++ b/buildroot/package/ltrace/ltrace.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 894333bb7d347066c4e398d9f4a202af5f2faf80754905dd0e6a2259695baba0 ltrace-c22d359433b333937ee3d803450dc41998115685.tar.gz diff --git a/buildroot/package/ltrace/ltrace.mk b/buildroot/package/ltrace/ltrace.mk new file mode 100644 index 0000000..6dfbb58 --- /dev/null +++ b/buildroot/package/ltrace/ltrace.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# ltrace +# +################################################################################ + +LTRACE_VERSION = c22d359433b333937ee3d803450dc41998115685 +LTRACE_SITE = git://anonscm.debian.org/collab-maint/ltrace.git +LTRACE_DEPENDENCIES = elfutils +LTRACE_CONF_OPTS = --disable-werror +LTRACE_LICENSE = GPL-2.0 +LTRACE_LICENSE_FILES = COPYING +LTRACE_AUTORECONF = YES + +define LTRACE_CREATE_CONFIG_M4 + mkdir -p $(@D)/config/m4 +endef +LTRACE_POST_PATCH_HOOKS += LTRACE_CREATE_CONFIG_M4 + +# ltrace can use libunwind only if libc has backtrace() support +# We don't normally do so for uClibc and we can't know if it's external +# Also ltrace with libunwind support is broken for MIPS so we disable it +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC)$(BR2_mips)$(BR2_mipsel),) +# --with-elfutils only selects unwinding support backend. elfutils is a +# mandatory dependency regardless. +LTRACE_CONF_OPTS += --with-libunwind=yes --with-elfutils=no +LTRACE_DEPENDENCIES += libunwind +else +LTRACE_CONF_OPTS += --with-libunwind=no +endif +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ltris/0001-fix-gcc5-build.patch b/buildroot/package/ltris/0001-fix-gcc5-build.patch new file mode 100644 index 0000000..66d0fa3 --- /dev/null +++ b/buildroot/package/ltris/0001-fix-gcc5-build.patch @@ -0,0 +1,308 @@ +Upstream patch to fix build with GCC 5 + +Obtained from the LGames Subversion repository with the following command: +svn diff -c164 svn://svn.code.sf.net/p/lgames/code/trunk/ltris + +Signed-off-by: Rodrigo Rebello + +Revision log message: +------------------------------------------------------------------------ +r164 | kulkanie | 2015-05-16 05:48:02 -0300 (Sat, 16 May 2015) | 1 line + +removed all inline keywords +------------------------------------------------------------------------ + +Line added to LTris ChangeLog concerning the change: +- removed all inline keywords to work with GCC 5 (2015/05/16 MS) + +Author: Michael Speck + +Index: src/sdl.c +=================================================================== +--- a/src/sdl.c (revision 163) ++++ b/src/sdl.c (revision 164) +@@ -244,7 +244,7 @@ + #endif + + /* return full path of bitmap */ +-inline void get_full_bmp_path( char *full_path, char *file_name ) ++void get_full_bmp_path( char *full_path, char *file_name ) + { + sprintf(full_path, "%s/gfx/%s", SRC_DIR, file_name ); + } +@@ -330,7 +330,7 @@ + /* + lock surface + */ +-inline void lock_surf(SDL_Surface *sur) ++void lock_surf(SDL_Surface *sur) + { + if (SDL_MUSTLOCK(sur)) + SDL_LockSurface(sur); +@@ -339,7 +339,7 @@ + /* + unlock surface + */ +-inline void unlock_surf(SDL_Surface *sur) ++void unlock_surf(SDL_Surface *sur) + { + if (SDL_MUSTLOCK(sur)) + SDL_UnlockSurface(sur); +@@ -666,7 +666,7 @@ + /* + lock font surface + */ +-inline void lock_font(Font *fnt) ++void lock_font(Font *fnt) + { + if (SDL_MUSTLOCK(fnt->pic)) + SDL_LockSurface(fnt->pic); +@@ -675,7 +675,7 @@ + /* + unlock font surface + */ +-inline void unlock_font(Font *fnt) ++void unlock_font(Font *fnt) + { + if (SDL_MUSTLOCK(fnt->pic)) + SDL_UnlockSurface(fnt->pic); +@@ -905,7 +905,7 @@ + /* + update rectangle (0,0,0,0)->fullscreen + */ +-inline void refresh_screen(int x, int y, int w, int h) ++void refresh_screen(int x, int y, int w, int h) + { + SDL_UpdateRect(sdl.screen, x, y, w, h); + } +@@ -1055,7 +1055,7 @@ + /* + lock surface + */ +-inline void lock_screen() ++void lock_screen() + { + if (SDL_MUSTLOCK(sdl.screen)) + SDL_LockSurface(sdl.screen); +@@ -1064,7 +1064,7 @@ + /* + unlock surface + */ +-inline void unlock_screen() ++void unlock_screen() + { + if (SDL_MUSTLOCK(sdl.screen)) + SDL_UnlockSurface(sdl.screen); +@@ -1073,7 +1073,7 @@ + /* + flip hardware screens (double buffer) + */ +-inline void flip_screen() ++void flip_screen() + { + SDL_Flip(sdl.screen); + } +@@ -1132,7 +1132,7 @@ + /* + get milliseconds since last call + */ +-inline int get_time() ++int get_time() + { + int ms; + cur_time = SDL_GetTicks(); +@@ -1148,7 +1148,7 @@ + /* + reset timer + */ +-inline void reset_timer() ++void reset_timer() + { + last_time = SDL_GetTicks(); + } +Index: src/sdl.h +=================================================================== +--- a/src/sdl.h (revision 163) ++++ b/src/sdl.h (revision 164) +@@ -41,8 +41,8 @@ + SDL_Surface* load_surf(char *fname, int f); + SDL_Surface* create_surf(int w, int h, int f); + void free_surf( SDL_Surface **surf ); +-inline void lock_surf(SDL_Surface *sur); +-inline void unlock_surf(SDL_Surface *sur); ++void lock_surf(SDL_Surface *sur); ++void unlock_surf(SDL_Surface *sur); + void blit_surf(void); + void alpha_blit_surf(int alpha); + void fill_surf(int c); +@@ -86,8 +86,8 @@ + Font* load_fixed_font(char *fname, int off, int len, int w); + void free_font(Font **sfnt); + int write_text(Font *sfnt, SDL_Surface *dest, int x, int y, char *str, int alpha); +-inline void lock_font(Font *sfnt); +-inline void unlock_font(Font *sfnt); ++void lock_font(Font *sfnt); ++void unlock_font(Font *sfnt); + SDL_Rect last_write_rect(Font *fnt); + int text_width(Font *fnt, char *str); + +@@ -132,14 +132,14 @@ + char** get_mode_names( int *count ); + int set_video_mode( Video_Mode mode ); + void hardware_cap(); +-inline void refresh_screen( int x, int y, int w, int h ); ++void refresh_screen( int x, int y, int w, int h ); + void refresh_rects(); + void add_refresh_rect(int x, int y, int w, int h); + int wait_for_key(); + void wait_for_click(); +-inline void lock_screen(); +-inline void unlock_screen(); +-inline void flip_screen(); ++void lock_screen(); ++void unlock_screen(); ++void flip_screen(); + void fade_screen( int type, int ms ); + void take_screenshot( int i ); + +@@ -148,8 +148,8 @@ + SDL_Cursor* create_cursor( int width, int height, int hot_x, int hot_y, char *source ); + + /* timer */ +-inline int get_time(); +-inline void reset_timer(); ++int get_time(); ++void reset_timer(); + + #ifdef __cplusplus + }; +Index: src/tools.c +=================================================================== +--- a/src/tools.c (revision 163) ++++ b/src/tools.c (revision 164) +@@ -23,7 +23,7 @@ + #include "ltris.h" + + /* compares to strings and returns true if their first strlen(str1) chars are equal */ +-inline int strequal( char *str1, char *str2 ) ++int strequal( char *str1, char *str2 ) + { + if ( strlen( str1 ) != strlen( str2 ) ) return 0; + return ( !strncmp( str1, str2, strlen( str1 ) ) ); +@@ -30,7 +30,7 @@ + } + + /* set delay to ms milliseconds */ +-inline void delay_set( Delay *delay, int ms ) ++void delay_set( Delay *delay, int ms ) + { + delay->limit = ms; + delay->cur = 0; +@@ -37,13 +37,13 @@ + } + + /* reset delay ( cur = 0 )*/ +-inline void delay_reset( Delay *delay ) ++void delay_reset( Delay *delay ) + { + delay->cur = 0; + } + + /* check if times out and reset */ +-inline int delay_timed_out( Delay *delay, int ms ) ++int delay_timed_out( Delay *delay, int ms ) + { + delay->cur += ms; + if ( delay->cur >= delay->limit ) { +@@ -56,12 +56,12 @@ + } + + /* set timer so that we have a time out next call of delay_timed_out() */ +-inline void delay_force_time_out( Delay *delay ) ++void delay_force_time_out( Delay *delay ) + { + delay->cur = delay->limit; + } + +-inline void goto_tile( int *x, int *y, int d ) ++void goto_tile( int *x, int *y, int d ) + { + /* 0 -up, clockwise, 5 - left up */ + switch ( d ) { +@@ -326,24 +326,24 @@ + the target value until reached when counter_update() is called. + ==================================================================== + */ +-inline void counter_set( Counter *counter, double value ) ++void counter_set( Counter *counter, double value ) + { + counter->value = value; + counter->approach = value; + } +-inline void counter_add( Counter *counter, double add ) ++void counter_add( Counter *counter, double add ) + { + counter->value += add; + } +-inline double counter_get_approach( Counter counter ) ++double counter_get_approach( Counter counter ) + { + return counter.approach; + } +-inline double counter_get( Counter counter ) ++double counter_get( Counter counter ) + { + return counter.value; + } +-inline void counter_update( Counter *counter, int ms ) ++void counter_update( Counter *counter, int ms ) + { + double change; + if ( counter->approach == counter->value ) return; +Index: src/bowl.c +=================================================================== +--- a/src/bowl.c (revision 163) ++++ b/src/bowl.c (revision 164) +@@ -333,7 +333,7 @@ + Set a tile contents and pixel contents. + ==================================================================== + */ +-inline void bowl_set_tile( Bowl *bowl, int x, int y, int tile_id ) ++void bowl_set_tile( Bowl *bowl, int x, int y, int tile_id ) + { + int i, j = y * bowl->block_size; + bowl->contents[x][y] = tile_id; +Index: src/tools.h +=================================================================== +--- a/src/tools.h (revision 163) ++++ b/src/tools.h (revision 164) +@@ -33,7 +33,7 @@ + #define VEC_DIST( vec1, vec2 ) ( sqrt( ( vec1.x - vec2.x ) * ( vec1.x - vec2.x ) + ( vec1.y - vec2.y ) * ( vec1.y - vec2.y ) ) ) + + /* compares to strings and returns true if their first strlen(str1) chars are equal */ +-inline int strequal( char *str1, char *str2 ); ++int strequal( char *str1, char *str2 ); + + /* delete lines */ + void delete_lines( char **lines, int line_number ); +@@ -45,16 +45,16 @@ + } Delay; + + /* set delay to ms milliseconds */ +-inline void delay_set( Delay *delay, int ms ); ++void delay_set( Delay *delay, int ms ); + + /* reset delay ( cur = 0 )*/ +-inline void delay_reset( Delay *delay ); ++void delay_reset( Delay *delay ); + + /* check if time's out ( add ms milliseconds )and reset */ +-inline int delay_timed_out( Delay *delay, int ms ); ++int delay_timed_out( Delay *delay, int ms ); + + /* set timer so that we have a time out next call of delay_timed_out() */ +-inline void delay_force_time_out( Delay *delay ); ++void delay_force_time_out( Delay *delay ); + + /* return distance betwteen to map positions */ + int get_dist( int x1, int y1, int x2, int y2 ); diff --git a/buildroot/package/ltris/Config.in b/buildroot/package/ltris/Config.in new file mode 100644 index 0000000..7d9dc04 --- /dev/null +++ b/buildroot/package/ltris/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LTRIS + bool "LTris" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_SDL + help + LTris is a tetris clone, using SDL. It optionally requires + SDL_mixer for audio support. A display with minimum 640x480 + resolution and a keyboard are recommended. + + http://lgames.sourceforge.net/index.php?project=LTris + +if BR2_PACKAGE_LTRIS + +config BR2_PACKAGE_LTRIS_AUDIO + bool "audio support" + default y + select BR2_PACKAGE_SDL_MIXER + help + Activates audio support in LTris. Will add SDL_mixer. + +endif diff --git a/buildroot/package/ltris/ltris.hash b/buildroot/package/ltris/ltris.hash new file mode 100644 index 0000000..5c0fcde --- /dev/null +++ b/buildroot/package/ltris/ltris.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 8f6a9e7719d22004aee153db29ffd9ca41c7a6cd87fc791591994eecc2e625a1 ltris-1.0.19.tar.gz diff --git a/buildroot/package/ltris/ltris.mk b/buildroot/package/ltris/ltris.mk new file mode 100644 index 0000000..fb0d4c3 --- /dev/null +++ b/buildroot/package/ltris/ltris.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# ltris +# +################################################################################ + +LTRIS_SITE = http://downloads.sourceforge.net/lgames/ltris +LTRIS_VERSION = 1.0.19 +LTRIS_LICENSE = GPL-2.0+ +LTRIS_LICENSE_FILES = COPYING + +LTRIS_DEPENDENCIES = sdl $(TARGET_NLS_DEPENDENCIES) +LTRIS_LIBS = $(TARGET_NLS_LIBS) + +LTRIS_CONF_ENV = \ + SDL_CONFIG="$(STAGING_DIR)/usr/bin/sdl-config" \ + LIBS="$(LTRIS_LIBS)" + +ifeq ($(BR2_PACKAGE_LTRIS_AUDIO),y) +LTRIS_DEPENDENCIES += sdl_mixer host-pkgconf +LTRIS_CONF_OPTS += --enable-sound +# configure script does NOT use pkg-config to figure out how to link +# with sdl_mixer, breaking static linking as sdl_mixer can use libmad +LTRIS_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs SDL_mixer` +else +LTRIS_CONF_OPTS += --disable-sound +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch b/buildroot/package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch new file mode 100644 index 0000000..b903d87 --- /dev/null +++ b/buildroot/package/lttng-babeltrace/0001-tests-lib-Makefile.am-remove-unneeded-static-flag.patch @@ -0,0 +1,36 @@ +From 27e37d2621317d25e08ba0683bf8540b05b9347d Mon Sep 17 00:00:00 2001 +From: Philippe Proulx +Date: Fri, 28 Oct 2016 02:09:20 -0400 +Subject: [PATCH] tests/lib/Makefile.am: remove unneeded -static flag + +Having those -static flags breaks the build in shared-only builds. + +Signed-off-by: Philippe Proulx +[Philippe: grabbed from this pull request: + https://github.com/efficios/babeltrace/pull/49 +] +--- + tests/lib/Makefile.am | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/tests/lib/Makefile.am b/tests/lib/Makefile.am +index 33ada16..c685e77 100644 +--- a/tests/lib/Makefile.am ++++ b/tests/lib/Makefile.am +@@ -31,13 +31,11 @@ check_SCRIPTS = test_seek_big_trace \ + test_ctf_writer_complete + + if ENABLE_DEBUG_INFO +-test_dwarf_LDFLAGS = -static + test_dwarf_LDADD = $(LIBTAP) \ + $(top_builddir)/lib/libbabeltrace.la \ + $(top_builddir)/lib/libdebug-info.la + test_dwarf_SOURCES = test_dwarf.c + +-test_bin_info_LDFLAGS = -static + test_bin_info_LDADD = $(LIBTAP) \ + $(top_builddir)/lib/libbabeltrace.la \ + $(top_builddir)/lib/libdebug-info.la +-- +2.9.3 + diff --git a/buildroot/package/lttng-babeltrace/0002-m4-ax_lib_elfutils.m4-add-cache-variable.patch b/buildroot/package/lttng-babeltrace/0002-m4-ax_lib_elfutils.m4-add-cache-variable.patch new file mode 100644 index 0000000..b167814 --- /dev/null +++ b/buildroot/package/lttng-babeltrace/0002-m4-ax_lib_elfutils.m4-add-cache-variable.patch @@ -0,0 +1,77 @@ +From 697ab0905c59561562dc52cd3b925781e07814f3 Mon Sep 17 00:00:00 2001 +From: Philippe Proulx +Date: Wed, 2 Nov 2016 01:40:12 -0400 +Subject: [PATCH] m4/ax_lib_elfutils.m4: add cache variable + +This patch adds an autoconf cache variable to override the +AC_RUN_IFELSE() test result when cross-compiling. + +Signed-off-by: Philippe Proulx +[Philippe: grabbed from this pull request: + https://github.com/efficios/babeltrace/pull/52 +] +--- + m4/ax_lib_elfutils.m4 | 32 +++++++++++++++++--------------- + 1 file changed, 17 insertions(+), 15 deletions(-) + +diff --git a/m4/ax_lib_elfutils.m4 b/m4/ax_lib_elfutils.m4 +index fcfe06b..f4fcb0d 100644 +--- a/m4/ax_lib_elfutils.m4 ++++ b/m4/ax_lib_elfutils.m4 +@@ -21,7 +21,9 @@ + # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + # + # Check the currently installed version of elfutils by using the +-# _ELFUTILS_PREREQ macro defined in elfutils/version.h. ++# `_ELFUTILS_PREREQ` macro defined in . ++# ++# The cache variable for this test is `bt_cv_lib_elfutils`. + # + # AX_LIB_ELFUTILS(MAJOR_VERSION, MINOR_VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) + # --------------------------------------------------------------------------- +@@ -29,7 +31,6 @@ AC_DEFUN([AX_LIB_ELFUTILS], [ + m4_pushdef([major_version], [$1]) + m4_pushdef([minor_version], [$2]) + +- AC_MSG_CHECKING([for elfutils version >= major_version.minor_version]) + m4_if([$#], 3, [ + m4_pushdef([true_action], [$3]) + ], [ +@@ -43,20 +44,21 @@ AC_DEFUN([AX_LIB_ELFUTILS], [ + AC_MSG_ERROR(elfutils >= major_version.minor_version is required)]) + ]) + +- AC_RUN_IFELSE([ +- AC_LANG_SOURCE([ +- #include +- #include ++ AC_CACHE_CHECK( ++ [for elfutils version >= major_version.minor_version], ++ [bt_cv_lib_elfutils], [ ++ AC_RUN_IFELSE([AC_LANG_SOURCE([ ++ #include ++ #include ++ ++ int main(void) { ++ return _ELFUTILS_PREREQ(major_version, minor_version) ? EXIT_SUCCESS : EXIT_FAILURE; ++ } ++ ])], [bt_cv_lib_elfutils=yes], [bt_cv_lib_elfutils=no]) ++ ] ++ ) + +- int main(void) { +- return _ELFUTILS_PREREQ(major_version, minor_version) ? EXIT_SUCCESS : EXIT_FAILURE; +- } +- ]) +- ], +- echo yes +- true_action, +- echo no +- false_action) ++ AS_IF([test "x$bt_cv_lib_elfutils" = "xyes"], [true_action], [false_action]) + + m4_popdef([false_action]) + m4_popdef([true_action]) +-- +2.9.3 + diff --git a/buildroot/package/lttng-babeltrace/Config.in b/buildroot/package/lttng-babeltrace/Config.in new file mode 100644 index 0000000..ba6b554 --- /dev/null +++ b/buildroot/package/lttng-babeltrace/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_LTTNG_BABELTRACE + bool "lttng-babeltrace" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_POPT + help + The Babeltrace project provides trace read and write + libraries, as well as a trace converter application. Plugins + can be created for any trace format to allow its conversion + to/from another trace format. + + Babeltrace is the reference implementation of the Common + Trace Format (see ). Babeltrace + can decode and display LTTng traces, since the latter are + written using the CTF format. + + To get support for debugging information, enable the + elfutils package. + + Having this tool on the target is not mandatory. You can + transfer the binary trace output from the target to your + development workstation, and use babeltrace here. + + See the lttng-babeltrace host utility to install Babeltrace + on the host. + + http://diamon.org/babeltrace + +comment "lttng-babeltrace needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/lttng-babeltrace/Config.in.host b/buildroot/package/lttng-babeltrace/Config.in.host new file mode 100644 index 0000000..71b9c7d --- /dev/null +++ b/buildroot/package/lttng-babeltrace/Config.in.host @@ -0,0 +1,14 @@ +config BR2_PACKAGE_HOST_LTTNG_BABELTRACE + bool "host lttng-babeltrace" + help + The Babeltrace project provides trace read and write + libraries, as well as a trace converter application. Plugins + can be created for any trace format to allow its conversion + to/from another trace format. + + Babeltrace is the reference implementation of the Common + Trace Format (see ). Babeltrace + can decode and display LTTng traces, since the latter are + written using the CTF format. + + http://diamon.org/babeltrace diff --git a/buildroot/package/lttng-babeltrace/lttng-babeltrace.hash b/buildroot/package/lttng-babeltrace/lttng-babeltrace.hash new file mode 100644 index 0000000..fafcd5e --- /dev/null +++ b/buildroot/package/lttng-babeltrace/lttng-babeltrace.hash @@ -0,0 +1,3 @@ +# From http://www.efficios.com/files/babeltrace/babeltrace-1.5.2.tar.bz2.{md5,sha1} +md5 1176e7f69e128112d5f29fefec39c6ce babeltrace-1.5.2.tar.bz2 +sha1 3316e8311ebbc9e8642ed399208c1846a6f0e0c3 babeltrace-1.5.2.tar.bz2 diff --git a/buildroot/package/lttng-babeltrace/lttng-babeltrace.mk b/buildroot/package/lttng-babeltrace/lttng-babeltrace.mk new file mode 100644 index 0000000..cfd67de --- /dev/null +++ b/buildroot/package/lttng-babeltrace/lttng-babeltrace.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# lttng-babeltrace +# +################################################################################ + +LTTNG_BABELTRACE_SITE = http://www.efficios.com/files/babeltrace +LTTNG_BABELTRACE_VERSION = 1.5.2 +LTTNG_BABELTRACE_SOURCE = babeltrace-$(LTTNG_BABELTRACE_VERSION).tar.bz2 +LTTNG_BABELTRACE_LICENSE = MIT, LGPL-2.1 (include/babeltrace/list.h), GPL-2.0 (test code) +LTTNG_BABELTRACE_LICENSE_FILES = mit-license.txt gpl-2.0.txt LICENSE +LTTNG_BABELTRACE_DEPENDENCIES = popt util-linux libglib2 host-pkgconf +# The host-elfutils dependency is optional, but since we don't have +# options for host packages, just build support for it +# unconditionally. +HOST_LTTNG_BABELTRACE_DEPENDENCIES = \ + host-popt host-util-linux host-libglib2 host-pkgconf host-elfutils +HOST_LTTNG_BABELTRACE_CONF_OPTS += --enable-debug-info + +# For: 0002-m4-ax_lib_elfutils.m4-add-cache-variable.patch +LTTNG_BABELTRACE_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +LTTNG_BABELTRACE_DEPENDENCIES += elfutils +LTTNG_BABELTRACE_CONF_OPTS += --enable-debug-info +LTTNG_BABELTRACE_CONF_ENV += bt_cv_lib_elfutils=yes +else +LTTNG_BABELTRACE_CONF_OPTS += --disable-debug-info +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/lttng-libust/0001-configure.ac-add-disable-examples-option-to-not-buil.patch b/buildroot/package/lttng-libust/0001-configure.ac-add-disable-examples-option-to-not-buil.patch new file mode 100644 index 0000000..ef817e4 --- /dev/null +++ b/buildroot/package/lttng-libust/0001-configure.ac-add-disable-examples-option-to-not-buil.patch @@ -0,0 +1,68 @@ +From 08aa9a26779d4ede3de7857fafd03bd6331ba948 Mon Sep 17 00:00:00 2001 +From: Philippe Proulx +Date: Mon, 6 Nov 2017 15:46:03 -0500 +Subject: [PATCH] configure.ac: add --disable-examples option to not + build/install examples + +Some environments and distributions do not need the LTTng-UST examples +to be built because they remove them anyway. Continue to build them by +default, but add --disable-examples to explicitly disable them. + +Signed-off-by: Philippe Proulx +[Philippe: backport from upstream commit 08aa9a26] +Signed-off-by: Mathieu Desnoyers +--- + configure.ac | 16 ++++++++++++++++ + doc/Makefile.am | 6 +++++- + 2 files changed, 21 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 10087f3f..68f41315 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -423,6 +423,19 @@ AC_DEFINE_UNQUOTED([LTTNG_SYSTEM_RUNDIR], ["$lttng_system_rundir"], + AC_CHECK_PROG([BUILD_GEN_TP_EXAMPLES], [python], ["yes"]) + AM_CONDITIONAL([BUILD_GEN_TP_EXAMPLES], [test "x$BUILD_GEN_TP_EXAMPLES" = "xyes"]) + ++# Enable building examples ++AC_ARG_ENABLE( ++ examples, ++ AS_HELP_STRING( ++ [--disable-examples], ++ [Do not build and install examples] ++ ), ++ [enable_examples=$enableval], ++ [enable_examples=yes] ++) ++ ++AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" != "xno"]) ++ + # Set $IN_GIT_REPO if we're in the Git repository; the `bootstrap` file + # is not distributed in tarballs. + AS_IF([test -f "$srcdir/bootstrap"], [in_git_repo=yes], [in_git_repo=no]) +@@ -596,6 +609,9 @@ PPRINT_PROP_BOOL([NUMA], $value) + AS_ECHO + PPRINT_SET_INDENT(0) + ++test "x$enable_examples" = xyes && value=1 || value=0 ++PPRINT_PROP_BOOL([Build and install examples], $value, $PPRINT_COLOR_SUBTITLE) ++ + # man pages build enabled/disabled + m4_pushdef([build_man_pages_msg], [Build and install man pages]) + +diff --git a/doc/Makefile.am b/doc/Makefile.am +index e110ed85..a67c8c22 100644 +--- a/doc/Makefile.am ++++ b/doc/Makefile.am +@@ -1,3 +1,7 @@ +-SUBDIRS = . man examples ++SUBDIRS = . man ++ ++if ENABLE_EXAMPLES ++SUBDIRS += examples ++endif + + dist_doc_DATA = java-agent.txt +-- +2.15.0 + diff --git a/buildroot/package/lttng-libust/Config.in b/buildroot/package/lttng-libust/Config.in new file mode 100644 index 0000000..8472cab --- /dev/null +++ b/buildroot/package/lttng-libust/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_LTTNG_LIBUST + bool "lttng-libust" + depends on BR2_USE_WCHAR # uses wchar_t + # liburcu only works on some architectures and requires threads support" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBURCU + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Userspace tracing library for the LTTng 2.x tracing + infrastructure. It allows userspace programs to create + custom trace events that are integrated with all other + events gathered by LTTng. + + http://lttng.org + +comment "lttng-libust needs a toolchain w/ dynamic library, wchar, threads" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/lttng-libust/lttng-libust.hash b/buildroot/package/lttng-libust/lttng-libust.hash new file mode 100644 index 0000000..6e5fdf2 --- /dev/null +++ b/buildroot/package/lttng-libust/lttng-libust.hash @@ -0,0 +1,3 @@ +# From http://lttng.org/files/lttng-ust/lttng-ust-2.10.1.tar.bz2.{md5,sha1} +md5 4863cc2f9f0a070b42438bb646bbba06 lttng-ust-2.10.1.tar.bz2 +sha1 3779c9ed75e3fa532797431f2c47979ce73614a7 lttng-ust-2.10.1.tar.bz2 diff --git a/buildroot/package/lttng-libust/lttng-libust.mk b/buildroot/package/lttng-libust/lttng-libust.mk new file mode 100644 index 0000000..d645220 --- /dev/null +++ b/buildroot/package/lttng-libust/lttng-libust.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# lttng-libust +# +################################################################################ + +LTTNG_LIBUST_SITE = http://lttng.org/files/lttng-ust +LTTNG_LIBUST_VERSION = 2.10.1 +LTTNG_LIBUST_SOURCE = lttng-ust-$(LTTNG_LIBUST_VERSION).tar.bz2 +LTTNG_LIBUST_LICENSE = LGPL-2.1, MIT (system headers), GPL-2.0 (liblttng-ust-ctl/ustctl.c used by lttng-sessiond) +LTTNG_LIBUST_LICENSE_FILES = COPYING +LTTNG_LIBUST_INSTALL_STAGING = YES +LTTNG_LIBUST_DEPENDENCIES = liburcu util-linux +LTTNG_LIBUST_CONF_OPTS += --disable-man-pages --disable-examples +# 0001-configure.ac-add-disable-examples-option-to-not-buil.patch +LTTNG_LIBUST_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_PYTHON),y) +LTTNG_LIBUST_DEPENDENCIES += python +LTTNG_LIBUST_CONF_OPTS += --enable-python-agent +else ifeq ($(BR2_PACKAGE_PYTHON3),y) +LTTNG_LIBUST_DEPENDENCIES += python3 +LTTNG_LIBUST_CONF_OPTS += --enable-python-agent +else +LTTNG_LIBUST_CONF_ENV = am_cv_pathless_PYTHON="none" +LTTNG_LIBUST_CONF_OPTS += --disable-python-agent +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/lttng-modules/Config.in b/buildroot/package/lttng-modules/Config.in new file mode 100644 index 0000000..e8ba9ba --- /dev/null +++ b/buildroot/package/lttng-modules/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_LTTNG_MODULES + bool "lttng-modules" + depends on BR2_LINUX_KERNEL + help + Linux kernel modules for the LTTng 2.x kernel tracing + infrastructure. + + Make sure your target kernel has the following config + options enabled: + + * CONFIG_MODULES: loadable module support + * CONFIG_KALLSYMS: this is necessary until the few + required missing symbols are exported to GPL + modules from mainline + * CONFIG_HIGH_RES_TIMERS: needed for LTTng 2.x + clock source + * CONFIG_TRACEPOINTS: kernel tracepoint instrumentation + (enabled as a side-effect of any of the + perf/ftrace/blktrace instrumentation features) + + The following kernel configuration options will + affect the features available from LTTng: + + * CONFIG_HAVE_SYSCALL_TRACEPOINTS: system call tracing + * CONFIG_PERF_EVENTS: performance counters + * CONFIG_EVENT_TRACING: needed to allow block layer tracing + * CONFIG_KPROBES: dynamic probes + * CONFIG_KRETPROBES: dynamic function entry/return probes + * CONFIG_KALLSYMS_ALL: state dump of mapping between block + device number and name + + The packaged version is compatible with Linux 2.6.38 to 3.16. + + http://lttng.org + +comment "lttng-modules needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/lttng-modules/lttng-modules.hash b/buildroot/package/lttng-modules/lttng-modules.hash new file mode 100644 index 0000000..7fa742d --- /dev/null +++ b/buildroot/package/lttng-modules/lttng-modules.hash @@ -0,0 +1,3 @@ +# From http://lttng.org/files/lttng-modules/lttng-modules-2.10.4.tar.bz2.{md5,sha1} +md5 832452b321a4df6836549e72d05b2ce9 lttng-modules-2.10.4.tar.bz2 +sha1 1712f5d5c0ef9b028949693c5cf24c5a00b7f4ef lttng-modules-2.10.4.tar.bz2 diff --git a/buildroot/package/lttng-modules/lttng-modules.mk b/buildroot/package/lttng-modules/lttng-modules.mk new file mode 100644 index 0000000..4a4974d --- /dev/null +++ b/buildroot/package/lttng-modules/lttng-modules.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# lttng-modules +# +################################################################################ + +LTTNG_MODULES_VERSION = 2.10.4 +LTTNG_MODULES_SITE = http://lttng.org/files/lttng-modules +LTTNG_MODULES_SOURCE = lttng-modules-$(LTTNG_MODULES_VERSION).tar.bz2 +LTTNG_MODULES_LICENSE = LGPL-2.1/GPL-2.0 (kernel modules), MIT (lib/bitfield.h, lib/prio_heap/*) +LTTNG_MODULES_LICENSE_FILES = lgpl-2.1.txt gpl-2.0.txt mit-license.txt LICENSE +LTTNG_MODULES_MODULE_MAKE_OPTS = CONFIG_LTTNG=m CONFIG_LTTNG_CLOCK_PLUGIN_TEST=m + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/lttng-tools/0001-Fix-detect-dlmopen-and-disable-corresponding-tests-i.patch b/buildroot/package/lttng-tools/0001-Fix-detect-dlmopen-and-disable-corresponding-tests-i.patch new file mode 100644 index 0000000..8e14a14 --- /dev/null +++ b/buildroot/package/lttng-tools/0001-Fix-detect-dlmopen-and-disable-corresponding-tests-i.patch @@ -0,0 +1,249 @@ +From bc1d8ca01415710d40224de312c7ecf6f4223301 Mon Sep 17 00:00:00 2001 +From: Philippe Proulx +Date: Mon, 6 Nov 2017 18:46:41 -0500 +Subject: [PATCH] Fix: detect dlmopen() and disable corresponding tests if not + available +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +musl and uClibc-ng are known not to support dlmopen(). LTTng-UST has +this dlmopen() detection. + +Signed-off-by: Philippe Proulx +[Philippe: backport from upstream commit bc1d8ca0 + edited to remove .gitignore part] +Signed-off-by: Jérémie Galarneau +--- + .gitignore | 1 + + configure.ac | 25 ++++++++++++++++++++++ + tests/regression/ust/ust-dl/prog.c | 17 +++++++++++++-- + tests/regression/ust/ust-dl/test_ust-dl | 32 ---------------------------- + tests/regression/ust/ust-dl/test_ust-dl.in | 34 ++++++++++++++++++++++++++++++ + tests/regression/ust/ust-dl/test_ust-dl.py | 9 +++++++- + tests/utils/test_utils.py | 3 +++ + 7 files changed, 86 insertions(+), 35 deletions(-) + delete mode 100755 tests/regression/ust/ust-dl/test_ust-dl + create mode 100644 tests/regression/ust/ust-dl/test_ust-dl.in + +diff --git a/configure.ac b/configure.ac +index 016c56ec..b6ea39c5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -196,6 +196,30 @@ AC_CHECK_FUNCS([ \ + # add -lrt to LIBS + AC_CHECK_LIB([rt], [clock_gettime, timer_create, timer_settime, timer_delete]) + ++# Checks for dl. ++AC_CHECK_LIB([dl], [dlopen], [ ++ have_libdl=yes ++ libdl_name=dl ++], [ ++ # libdl not found, check for dlopen in libc. ++ AC_CHECK_LIB([c], [dlopen], [ ++ have_libc_dl=yes ++ libdl_name=c ++ ], [ ++ AC_MSG_ERROR([Cannot find dlopen in libdl nor libc. Use [LDFLAGS]=-Ldir to specify their location.]) ++ ]) ++]) ++ ++# Check if libdl has dlmopen support. ++AH_TEMPLATE([HAVE_DLMOPEN], ["Define to 1 if dlmopen is available."]) ++AC_CHECK_LIB([$libdl_name], [dlmopen], [ ++ AC_DEFINE([HAVE_DLMOPEN], [1]) ++ HAVE_DLMOPEN=1 ++], [ ++ HAVE_DLMOPEN=0 ++]) ++AC_SUBST(HAVE_DLMOPEN) ++ + # Babeltrace viewer check + AC_ARG_WITH([babeltrace-bin], + AS_HELP_STRING([--with-babeltrace-bin], +@@ -1100,6 +1124,7 @@ AC_CONFIG_FILES([ + AC_CONFIG_FILES([tests/regression/ust/python-logging/test_python_logging],[chmod +x tests/regression/ust/python-logging/test_python_logging]) + # Inject LTTNG_TOOLS_BUILD_WITH_LIBPFM variable in test script. + AC_CONFIG_FILES([tests/perf/test_perf_raw],[chmod +x tests/perf/test_perf_raw]) ++AC_CONFIG_FILES([tests/regression/ust/ust-dl/test_ust-dl],[chmod +x tests/regression/ust/ust-dl/test_ust-dl]) + + AC_OUTPUT + +diff --git a/tests/regression/ust/ust-dl/prog.c b/tests/regression/ust/ust-dl/prog.c +index e8e4b264..669792d9 100644 +--- a/tests/regression/ust/ust-dl/prog.c ++++ b/tests/regression/ust/ust-dl/prog.c +@@ -13,7 +13,12 @@ + */ + int main(int argc, char **argv) + { +- void *h0, *h1, *h2, *h3, *h4; ++ void *h0, *h2, *h3, *h4; ++ ++#ifdef HAVE_DLMOPEN ++ void *h1; ++#endif ++ + char *error; + int (*foo)(void); + +@@ -21,10 +26,14 @@ int main(int argc, char **argv) + if (!h0) { + goto get_error; + } ++ ++#ifdef HAVE_DLMOPEN + h1 = dlmopen(LM_ID_BASE, "libfoo.so", RTLD_LAZY); + if (!h1) { + goto get_error; + } ++#endif ++ + h2 = dlopen("libzzz.so", RTLD_LAZY); + if (!h2) { + goto get_error; +@@ -38,7 +47,7 @@ int main(int argc, char **argv) + goto get_error; + } + +- foo = dlsym(h1, "foo"); ++ foo = dlsym(h3, "foo"); + error = dlerror(); + if (error != NULL) { + goto error; +@@ -49,9 +58,13 @@ int main(int argc, char **argv) + if (dlclose(h0)) { + goto get_error; + } ++ ++#ifdef HAVE_DLMOPEN + if (dlclose(h1)) { + goto get_error; + } ++#endif ++ + if (dlclose(h2)) { + goto get_error; + } +diff --git a/tests/regression/ust/ust-dl/test_ust-dl b/tests/regression/ust/ust-dl/test_ust-dl +deleted file mode 100755 +index 1f2934db..00000000 +--- a/tests/regression/ust/ust-dl/test_ust-dl ++++ /dev/null +@@ -1,32 +0,0 @@ +-#!/bin/bash +-# +-# Copyright (C) - 2013 Jérémie Galarneau +-# +-# This program is free software; you can redistribute it and/or modify it +-# under the terms of the GNU General Public License, version 2 only, as +-# published by the Free Software Foundation. +-# +-# This program is distributed in the hope that it will be useful, but WITHOUT +-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 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. +- +-CURDIR=$(dirname $0) +-TESTDIR=${CURDIR}/../../.. +- +-source $TESTDIR/utils/utils.sh +- +-if [ ! -x "$CURDIR/.libs/libfoo.so" ]; then +- diag "No shared object generated. Skipping all tests." +- exit 0 +-fi +- +-start_lttng_sessiond_notap +- +-python3 ${CURDIR}/test_ust-dl.py +- +-stop_lttng_sessiond_notap +diff --git a/tests/regression/ust/ust-dl/test_ust-dl.in b/tests/regression/ust/ust-dl/test_ust-dl.in +new file mode 100644 +index 00000000..61d00d21 +--- /dev/null ++++ b/tests/regression/ust/ust-dl/test_ust-dl.in +@@ -0,0 +1,34 @@ ++#!/bin/bash ++# ++# Copyright (C) - 2013 Jérémie Galarneau ++# ++# This program is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License, version 2 only, as ++# published by the Free Software Foundation. ++# ++# This program is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 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. ++ ++CURDIR=$(dirname $0) ++TESTDIR=${CURDIR}/../../.. ++ ++source $TESTDIR/utils/utils.sh ++ ++if [ ! -x "$CURDIR/.libs/libfoo.so" ]; then ++ diag "No shared object generated. Skipping all tests." ++ exit 0 ++fi ++ ++export LTTNG_TOOLS_HAVE_DLMOPEN=@HAVE_DLMOPEN@ ++ ++start_lttng_sessiond_notap ++ ++python3 ${CURDIR}/test_ust-dl.py ++ ++stop_lttng_sessiond_notap +diff --git a/tests/regression/ust/ust-dl/test_ust-dl.py b/tests/regression/ust/ust-dl/test_ust-dl.py +index 81972a7d..72459840 100644 +--- a/tests/regression/ust/ust-dl/test_ust-dl.py ++++ b/tests/regression/ust/ust-dl/test_ust-dl.py +@@ -31,6 +31,9 @@ sys.path.append(test_utils_path) + from test_utils import * + + ++have_dlmopen = (os.environ.get('LTTNG_TOOLS_HAVE_DLMOPEN') == '1') ++ ++ + NR_TESTS = 14 + current_test = 1 + print("1..{0}".format(NR_TESTS)) +@@ -113,7 +116,11 @@ current_test += 1 + print_test_result(dlopen_event_found > 0, current_test, "lttng_ust_dl:dlopen event found in resulting trace") + current_test += 1 + +-print_test_result(dlmopen_event_found > 0, current_test, "lttng_ust_dl:dlmopen event found in resulting trace") ++if have_dlmopen: ++ print_test_result(dlmopen_event_found > 0, current_test, "lttng_ust_dl:dlmopen event found in resulting trace") ++else: ++ skip_test(current_test, 'dlmopen() is not available') ++ + current_test += 1 + + print_test_result(build_id_event_found > 0, current_test, "lttng_ust_dl:build_id event found in resulting trace") +diff --git a/tests/utils/test_utils.py b/tests/utils/test_utils.py +index 4b38630c..02e632a2 100644 +--- a/tests/utils/test_utils.py ++++ b/tests/utils/test_utils.py +@@ -62,6 +62,9 @@ def print_test_result(result, number, description): + result_string += " {0} - {1}".format(number, description) + print(result_string) + ++def skip_test(number, description): ++ print('ok {} # skip {}'.format(number, description)) ++ + def enable_ust_tracepoint_event(session_info, event_name): + event = Event() + event.name = event_name +-- +2.15.0 + diff --git a/buildroot/package/lttng-tools/0002-Fix-src-common-pipe.h-include-sys-types.h-for-ssize_.patch b/buildroot/package/lttng-tools/0002-Fix-src-common-pipe.h-include-sys-types.h-for-ssize_.patch new file mode 100644 index 0000000..9149476 --- /dev/null +++ b/buildroot/package/lttng-tools/0002-Fix-src-common-pipe.h-include-sys-types.h-for-ssize_.patch @@ -0,0 +1,31 @@ +From 40dde31f7eeb71af169b97b82d8fd1739895dfc3 Mon Sep 17 00:00:00 2001 +From: Philippe Proulx +Date: Wed, 8 Nov 2017 15:19:24 -0500 +Subject: [PATCH] Fix: src/common/pipe.h: include for ssize_t and + mode_t +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Philippe Proulx +[Philippe: backport from upstream commit 40dde31f] +Signed-off-by: Jérémie Galarneau +--- + src/common/pipe.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/common/pipe.h b/src/common/pipe.h +index 2d4fc967..30f7c3f3 100644 +--- a/src/common/pipe.h ++++ b/src/common/pipe.h +@@ -20,6 +20,7 @@ + + #include + #include ++#include + + enum lttng_pipe_state { + LTTNG_PIPE_STATE_OPENED = 1, +-- +2.15.0 + diff --git a/buildroot/package/lttng-tools/0003-Fix-warning-src-bin-lttng-utils.c-cast-incompatible-.patch b/buildroot/package/lttng-tools/0003-Fix-warning-src-bin-lttng-utils.c-cast-incompatible-.patch new file mode 100644 index 0000000..b353b8f --- /dev/null +++ b/buildroot/package/lttng-tools/0003-Fix-warning-src-bin-lttng-utils.c-cast-incompatible-.patch @@ -0,0 +1,32 @@ +From 56efeab366da412ee4196107c08174f32ed83c9a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Galarneau?= + +Date: Mon, 13 Nov 2017 10:31:29 -0500 +Subject: [PATCH] Fix warning: src/bin/lttng/utils.c: cast incompatible pointer +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Reported-by: Philippe Proulx +[Philippe: backport from upstream commit 56efeab3] +Signed-off-by: Jérémie Galarneau +--- + src/bin/lttng/utils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/bin/lttng/utils.c b/src/bin/lttng/utils.c +index 885f498b..52a2440e 100644 +--- a/src/bin/lttng/utils.c ++++ b/src/bin/lttng/utils.c +@@ -387,7 +387,7 @@ int check_relayd(void) + * A successful connect means the relayd exists thus returning 0 else a + * negative value means it does NOT exists. + */ +- ret = connect(fd, &sin, sizeof(sin)); ++ ret = connect(fd, (struct sockaddr *) &sin, sizeof(sin)); + if (ret < 0) { + /* Not found. */ + ret = 0; +-- +2.15.0 + diff --git a/buildroot/package/lttng-tools/Config.in b/buildroot/package/lttng-tools/Config.in new file mode 100644 index 0000000..9c86cc2 --- /dev/null +++ b/buildroot/package/lttng-tools/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_LTTNG_TOOLS + bool "lttng-tools" + # liburcu only works on some architectures and requires thread support + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # uses dlfcn + select BR2_PACKAGE_LIBURCU + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_POPT + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Userspace utilities for the LTTng 2.x tracing + infrastructure. + + Those utilities are required on the target system to start + and stop tracing sessions. Analysis of the trace can be done + on the host machine using the babeltrace utility. This + utility is automatically built by Buildroot in + $(O)/host/bin/babeltrace, as a dependency of + lttng-tools. However, there is also a lttng-babeltrace + package for the target, if babeltrace on the target is + interesting. + + If userspace tracing is desired, you need to enable + lttng-libust. + + http://lttng.org + +comment "lttng-tools needs a toolchain w/ threads, dynamic library" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/lttng-tools/lttng-tools.hash b/buildroot/package/lttng-tools/lttng-tools.hash new file mode 100644 index 0000000..5174252 --- /dev/null +++ b/buildroot/package/lttng-tools/lttng-tools.hash @@ -0,0 +1,3 @@ +# From http://lttng.org/files/lttng-tools/lttng-tools-2.10.1.tar.bz2.{md5,sha1} +md5 fd80fa64dffd8017fb30836eb30532cc lttng-tools-2.10.1.tar.bz2 +sha1 b29554903160dc1c89b41c85493fd968de0e624f lttng-tools-2.10.1.tar.bz2 diff --git a/buildroot/package/lttng-tools/lttng-tools.mk b/buildroot/package/lttng-tools/lttng-tools.mk new file mode 100644 index 0000000..59f64cc --- /dev/null +++ b/buildroot/package/lttng-tools/lttng-tools.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# lttng-tools +# +################################################################################ + +LTTNG_TOOLS_VERSION = 2.10.1 +LTTNG_TOOLS_SITE = http://lttng.org/files/lttng-tools +LTTNG_TOOLS_SOURCE = lttng-tools-$(LTTNG_TOOLS_VERSION).tar.bz2 +LTTNG_TOOLS_LICENSE = GPL-2.0+, LGPL-2.1+ (include/lttng/*, src/lib/lttng-ctl/*) +LTTNG_TOOLS_LICENSE_FILES = gpl-2.0.txt lgpl-2.1.txt LICENSE +LTTNG_TOOLS_CONF_OPTS += --disable-man-pages +# 0001-Fix-detect-dlmopen-and-disable-corresponding-tests-i.patch +LTTNG_TOOLS_AUTORECONF = YES +LTTNG_TOOLS_DEPENDENCIES = liburcu libxml2 popt util-linux + +ifeq ($(BR2_PACKAGE_LTTNG_LIBUST),y) +LTTNG_TOOLS_CONF_OPTS += --with-lttng-ust +LTTNG_TOOLS_DEPENDENCIES += lttng-libust +else +LTTNG_TOOLS_CONF_OPTS += --without-lttng-ust +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/lua-basexx/Config.in b/buildroot/package/lua-basexx/Config.in new file mode 100644 index 0000000..2f3bb1d --- /dev/null +++ b/buildroot/package/lua-basexx/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUA_BASEXX + bool "lua-basexx" + help + A Lua library which provides base2(bitfield), base16(hex), + base32(crockford/rfc), base64(rfc/url), base85(z85) decoding + and encoding. + + https://github.com/aiq/basexx diff --git a/buildroot/package/lua-basexx/lua-basexx.hash b/buildroot/package/lua-basexx/lua-basexx.hash new file mode 100644 index 0000000..91c428c --- /dev/null +++ b/buildroot/package/lua-basexx/lua-basexx.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ff5379b1f5b396103b8bb589ab3dd94d0a727c8e7a48dcfe1c73e2f07af6a8df basexx-0.4.0-1.src.rock diff --git a/buildroot/package/lua-basexx/lua-basexx.mk b/buildroot/package/lua-basexx/lua-basexx.mk new file mode 100644 index 0000000..bfdc1e2 --- /dev/null +++ b/buildroot/package/lua-basexx/lua-basexx.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-basexx +# +################################################################################ + +LUA_BASEXX_VERSION_UPSTREAM =0.4.0 +LUA_BASEXX_VERSION = $(LUA_BASEXX_VERSION_UPSTREAM)-1 +LUA_BASEXX_NAME_UPSTREAM = basexx +LUA_BASEXX_SUBDIR = basexx-$(LUA_BASEXX_VERSION_UPSTREAM) +LUA_BASEXX_LICENSE = MIT +LUA_BASEXX_LICENSE_FILES = $(LUA_BASEXX_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-bit32/Config.in b/buildroot/package/lua-bit32/Config.in new file mode 100644 index 0000000..f896940 --- /dev/null +++ b/buildroot/package/lua-bit32/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUA_BIT32 + bool "lua-bit32" + help + bit32 is the native Lua 5.2 bit manipulation library, in the + version from Lua 5.3; it is compatible with Lua 5.1, 5.2 and + 5.3. + + http://www.lua.org/manual/5.2/manual.html#6.7 diff --git a/buildroot/package/lua-bit32/lua-bit32.hash b/buildroot/package/lua-bit32/lua-bit32.hash new file mode 100644 index 0000000..21dbd05 --- /dev/null +++ b/buildroot/package/lua-bit32/lua-bit32.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 fe7bc70d1e48183d95ccfb6741e70a676283075173122cb161303d77059b27a6 bit32-5.3.0-1.src.rock diff --git a/buildroot/package/lua-bit32/lua-bit32.mk b/buildroot/package/lua-bit32/lua-bit32.mk new file mode 100644 index 0000000..14851a5 --- /dev/null +++ b/buildroot/package/lua-bit32/lua-bit32.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-bit32 +# +################################################################################ + +LUA_BIT32_VERSION = 5.3.0-1 +LUA_BIT32_NAME_UPSTREAM = bit32 +LUA_BIT32_SUBDIR = lua-compat-5.2 +LUA_BIT32_LICENSE = MIT +LUA_BIT32_LICENSE_FILES = $(LUA_BIT32_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-cjson/Config.in b/buildroot/package/lua-cjson/Config.in new file mode 100644 index 0000000..262452a --- /dev/null +++ b/buildroot/package/lua-cjson/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LUA_CJSON + bool "lua-cjson" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + The Lua CJSON module provides JSON support for Lua. + It features: + - Fast, standards compliant encoding/parsing routines + - Full support for JSON with UTF-8, including decoding + surrogate pairs + - Optional run-time support for common exceptions to the JSON + specification (infinity, NaN, ...) + - No dependencies on other libraries + + (C-module) + + http://www.kyne.com.au/~mark/software/lua-cjson.php diff --git a/buildroot/package/lua-cjson/lua-cjson.hash b/buildroot/package/lua-cjson/lua-cjson.hash new file mode 100644 index 0000000..852dc67 --- /dev/null +++ b/buildroot/package/lua-cjson/lua-cjson.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 db7af849c555d1a474f729fe4a56b5530e9be7b24749eb7a7c474a7c7207b972 lua-cjson-2.1.0-1.src.rock diff --git a/buildroot/package/lua-cjson/lua-cjson.mk b/buildroot/package/lua-cjson/lua-cjson.mk new file mode 100644 index 0000000..1823aa5 --- /dev/null +++ b/buildroot/package/lua-cjson/lua-cjson.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# lua-cjson +# +################################################################################ + +LUA_CJSON_VERSION = 2.1.0-1 +LUA_CJSON_LICENSE = MIT +LUA_CJSON_LICENSE_FILES = $(LUA_CJSON_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-coat/Config.in b/buildroot/package/lua-coat/Config.in new file mode 100644 index 0000000..f6ba6cf --- /dev/null +++ b/buildroot/package/lua-coat/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_COAT + bool "lua-coat" + help + Yet Another Lua Object-Oriented Model + + http://fperrad.github.io/lua-Coat/ diff --git a/buildroot/package/lua-coat/lua-coat.hash b/buildroot/package/lua-coat/lua-coat.hash new file mode 100644 index 0000000..1f21355 --- /dev/null +++ b/buildroot/package/lua-coat/lua-coat.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 24d0e894d743f46c09a282e4dd272d2a6004557608b618c1c9d9f464dd65af02 lua-coat-0.9.2-1.src.rock diff --git a/buildroot/package/lua-coat/lua-coat.mk b/buildroot/package/lua-coat/lua-coat.mk new file mode 100644 index 0000000..6555e66 --- /dev/null +++ b/buildroot/package/lua-coat/lua-coat.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-coat +# +################################################################################ + +LUA_COAT_VERSION = 0.9.2-1 +LUA_COAT_NAME_UPSTREAM = lua-Coat +LUA_COAT_LICENSE = MIT +LUA_COAT_LICENSE_FILES = $(LUA_COAT_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-coatpersistent/Config.in b/buildroot/package/lua-coatpersistent/Config.in new file mode 100644 index 0000000..d8b3570 --- /dev/null +++ b/buildroot/package/lua-coatpersistent/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LUA_COATPERSISTENT + bool "lua-coatpersistent" + depends on BR2_PACKAGE_LSQLITE3 || BR2_PACKAGE_LUASQL_SQLITE3 + # run-time dependencies + select BR2_PACKAGE_DADO + select BR2_PACKAGE_LUA_COAT + help + An ORM for lua-Coat. + + http://fperrad.github.io/lua-CoatPersistent/ + +comment "lua-coatpersistent needs lsqlite3 or luasql-sqlite3" + depends on !BR2_PACKAGE_LSQLITE3 && !BR2_PACKAGE_LUASQL_SQLITE3 diff --git a/buildroot/package/lua-coatpersistent/lua-coatpersistent.hash b/buildroot/package/lua-coatpersistent/lua-coatpersistent.hash new file mode 100644 index 0000000..eeb13bb --- /dev/null +++ b/buildroot/package/lua-coatpersistent/lua-coatpersistent.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 e718ee36a17312108f266e8412f840db150afd89e8587d36e685673fff65f142 lua-coatpersistent-lsqlite3-0.2.2-1.src.rock +sha256 5d36d6a8b413a2d56a466a45314291a0265c514a179e741b3fc95f4dd901abe6 lua-coatpersistent-luasql-0.2.2-1.src.rock diff --git a/buildroot/package/lua-coatpersistent/lua-coatpersistent.mk b/buildroot/package/lua-coatpersistent/lua-coatpersistent.mk new file mode 100644 index 0000000..68c6083 --- /dev/null +++ b/buildroot/package/lua-coatpersistent/lua-coatpersistent.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# lua-coatpersistent +# +################################################################################ + +LUA_COATPERSISTENT_VERSION_UPSTREAM = 0.2.2 +ifeq ($(BR2_PACKAGE_LSQLITE3),y) +LUA_COATPERSISTENT_VERSION = lsqlite3-$(LUA_COATPERSISTENT_VERSION_UPSTREAM)-1 +else +LUA_COATPERSISTENT_VERSION = luasql-$(LUA_COATPERSISTENT_VERSION_UPSTREAM)-1 +endif +LUA_COATPERSISTENT_SUBDIR = lua-CoatPersistent-$(LUA_COATPERSISTENT_VERSION_UPSTREAM) +LUA_COATPERSISTENT_LICENSE = MIT +LUA_COATPERSISTENT_LICENSE_FILES = $(LUA_COATPERSISTENT_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-compat53/Config.in b/buildroot/package/lua-compat53/Config.in new file mode 100644 index 0000000..7ab3d74 --- /dev/null +++ b/buildroot/package/lua-compat53/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUA_COMPAT53 + bool "lua-compat53" + depends on !BR2_PACKAGE_LUA_5_3 + help + Compatibility module providing Lua-5.3-style APIs for Lua 5.2 + and 5.1 + + https://github.com/keplerproject/lua-compat-5.3 diff --git a/buildroot/package/lua-compat53/lua-compat53.hash b/buildroot/package/lua-compat53/lua-compat53.hash new file mode 100644 index 0000000..7f1e1bb --- /dev/null +++ b/buildroot/package/lua-compat53/lua-compat53.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 fd0117156f59d1cb3824d5cca63be84c72cb5519b714377545433be3bb31afdf compat53-0.5-1.src.rock diff --git a/buildroot/package/lua-compat53/lua-compat53.mk b/buildroot/package/lua-compat53/lua-compat53.mk new file mode 100644 index 0000000..969f816 --- /dev/null +++ b/buildroot/package/lua-compat53/lua-compat53.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-compat53 +# +################################################################################ + +LUA_COMPAT53_VERSION_UPSTREAM = 0.5 +LUA_COMPAT53_VERSION = $(LUA_COMPAT53_VERSION_UPSTREAM)-1 +LUA_COMPAT53_NAME_UPSTREAM = compat53 +LUA_COMPAT53_SUBDIR = lua-compat-5.3-$(LUA_COMPAT53_VERSION_UPSTREAM) +LUA_COMPAT53_LICENSE = MIT +LUA_COMPAT53_LICENSE_FILES = $(LUA_COMPAT53_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-cqueues/Config.in b/buildroot/package/lua-cqueues/Config.in new file mode 100644 index 0000000..60f0228 --- /dev/null +++ b/buildroot/package/lua-cqueues/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LUA_CQUEUES + bool "lua-cqueues" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_OPENSSL + help + Continuation Queues: Embeddable asynchronous networking, + threading, and notification framework for Lua on Unix. + + http://25thandclement.com/~william/projects/cqueues.html + +comment "lua-cqueues needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/lua-cqueues/lua-cqueues.hash b/buildroot/package/lua-cqueues/lua-cqueues.hash new file mode 100644 index 0000000..9fd664d --- /dev/null +++ b/buildroot/package/lua-cqueues/lua-cqueues.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ae51b713bdf966215b87244e03ac60b5a12beb82d15dfb02755a000cfb2df905 lua-cqueues-rel-20161215.tar.gz diff --git a/buildroot/package/lua-cqueues/lua-cqueues.mk b/buildroot/package/lua-cqueues/lua-cqueues.mk new file mode 100644 index 0000000..4f4be1e --- /dev/null +++ b/buildroot/package/lua-cqueues/lua-cqueues.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# lua-cqueues +# +################################################################################ + +LUA_CQUEUES_VERSION = rel-20161215 +LUA_CQUEUES_SITE = $(call github,wahern,cqueues,$(LUA_CQUEUES_VERSION)) +LUA_CQUEUES_LICENSE = MIT +LUA_CQUEUES_LICENSE_FILES = LICENSE +LUA_CQUEUES_DEPENDENCIES = luainterpreter openssl + +define LUA_CQUEUES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + prefix="$(STAGING_DIR)/usr" all$(LUAINTERPRETER_ABIVER) +endef + +define LUA_CQUEUES_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + DESTDIR="$(TARGET_DIR)" prefix=/usr install$(LUAINTERPRETER_ABIVER) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/lua-csnappy/Config.in b/buildroot/package/lua-csnappy/Config.in new file mode 100644 index 0000000..54d68a2 --- /dev/null +++ b/buildroot/package/lua-csnappy/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_CSNAPPY + bool "lua-csnappy" + help + lua-csnappy is a binding of the csnappy library + which implements the Google's Snappy (de)compressor. + + http://fperrad.github.io/lua-csnappy/ diff --git a/buildroot/package/lua-csnappy/lua-csnappy.hash b/buildroot/package/lua-csnappy/lua-csnappy.hash new file mode 100644 index 0000000..f887426 --- /dev/null +++ b/buildroot/package/lua-csnappy/lua-csnappy.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4fc373ba714cb8b428e9971f1725d82de6a43dfea361a0b7894e4762238dc95c lua-csnappy-0.1.5-1.src.rock diff --git a/buildroot/package/lua-csnappy/lua-csnappy.mk b/buildroot/package/lua-csnappy/lua-csnappy.mk new file mode 100644 index 0000000..cba0a06 --- /dev/null +++ b/buildroot/package/lua-csnappy/lua-csnappy.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# lua-csnappy +# +################################################################################ + +LUA_CSNAPPY_VERSION = 0.1.5-1 +LUA_CSNAPPY_LICENSE = BSD-3-Clause +LUA_CSNAPPY_LICENSE_FILES = $(LUA_CSNAPPY_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-curl/Config.in b/buildroot/package/lua-curl/Config.in new file mode 100644 index 0000000..88cdaf1 --- /dev/null +++ b/buildroot/package/lua-curl/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_CURL + bool "lua-curl" + select BR2_PACKAGE_LIBCURL + help + Lua binding to libcurl. + + https://lua-curl.github.io/ diff --git a/buildroot/package/lua-curl/lua-curl.hash b/buildroot/package/lua-curl/lua-curl.hash new file mode 100644 index 0000000..e73810c --- /dev/null +++ b/buildroot/package/lua-curl/lua-curl.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4cc6389bf5d4a868cc1e6017733b9b6306f2fc8b5083aa928d66399195697f34 lua-curl-0.3.7-1.src.rock diff --git a/buildroot/package/lua-curl/lua-curl.mk b/buildroot/package/lua-curl/lua-curl.mk new file mode 100644 index 0000000..9e4f262 --- /dev/null +++ b/buildroot/package/lua-curl/lua-curl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-curl +# +################################################################################ + +LUA_CURL_VERSION_UPSTREAM = 0.3.7 +LUA_CURL_VERSION = $(LUA_CURL_VERSION_UPSTREAM)-1 +LUA_CURL_SUBDIR = Lua-cURLv3-$(LUA_CURL_VERSION_UPSTREAM) +LUA_CURL_LICENSE = MIT +LUA_CURL_LICENSE_FILES = $(LUA_CURL_SUBDIR)/LICENSE +LUA_CURL_DEPENDENCIES = libcurl + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-datafile/Config.in b/buildroot/package/lua-datafile/Config.in new file mode 100644 index 0000000..e65406e --- /dev/null +++ b/buildroot/package/lua-datafile/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_DATAFILE + bool "lua-datafile" + help + datafile is a library for avoiding hardcoded paths + when loading resource files in Lua modules. + + https://github.com/hishamhm/datafile diff --git a/buildroot/package/lua-datafile/lua-datafile.hash b/buildroot/package/lua-datafile/lua-datafile.hash new file mode 100644 index 0000000..83c346e --- /dev/null +++ b/buildroot/package/lua-datafile/lua-datafile.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 37a33079c3476477f19de14bebd664635a39a57dd05a2709c3a402cbc1e79a6b datafile-0.4-1.src.rock diff --git a/buildroot/package/lua-datafile/lua-datafile.mk b/buildroot/package/lua-datafile/lua-datafile.mk new file mode 100644 index 0000000..75aef52 --- /dev/null +++ b/buildroot/package/lua-datafile/lua-datafile.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-datafile +# +################################################################################ + +LUA_DATAFILE_VERSION = 0.4-1 +LUA_DATAFILE_NAME_UPSTREAM = datafile +LUA_DATAFILE_SUBDIR = datafile +LUA_DATAFILE_LICENSE = MIT +LUA_DATAFILE_LICENSE_FILES = $(LUA_DATAFILE_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-ev/Config.in b/buildroot/package/lua-ev/Config.in new file mode 100644 index 0000000..0cb4c22 --- /dev/null +++ b/buildroot/package/lua-ev/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUA_EV + bool "lua-ev" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + depends on !BR2_bfin # libev + select BR2_PACKAGE_LIBEV + help + Get access to the libev library from Lua. + + https://github.com/brimworks/lua-ev diff --git a/buildroot/package/lua-ev/lua-ev.hash b/buildroot/package/lua-ev/lua-ev.hash new file mode 100644 index 0000000..3f8d981 --- /dev/null +++ b/buildroot/package/lua-ev/lua-ev.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4e26e05830955fdd882a1b48b535be94356582eea310327f839f830cd9250d3a lua-ev-339426fbe528f11cb3cd1af69a88f06bba367981.tar.gz diff --git a/buildroot/package/lua-ev/lua-ev.mk b/buildroot/package/lua-ev/lua-ev.mk new file mode 100644 index 0000000..3939487 --- /dev/null +++ b/buildroot/package/lua-ev/lua-ev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-ev +# +################################################################################ + +LUA_EV_VERSION = 339426fbe528f11cb3cd1af69a88f06bba367981 +LUA_EV_SITE = $(call github,brimworks,lua-ev,$(LUA_EV_VERSION)) +LUA_EV_DEPENDENCIES = luainterpreter libev +LUA_EV_LICENSE = MIT +LUA_EV_LICENSE_FILES = README +LUA_EV_CONF_OPTS = -DINSTALL_CMOD="/usr/lib/lua/$(LUAINTERPRETER_ABIVER)" + +$(eval $(cmake-package)) diff --git a/buildroot/package/lua-fifo/Config.in b/buildroot/package/lua-fifo/Config.in new file mode 100644 index 0000000..5715b6b --- /dev/null +++ b/buildroot/package/lua-fifo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_FIFO + bool "lua-fifo" + help + A lua library/'class' that implements a FIFO. + + https://github.com/daurnimator/fifo.lua diff --git a/buildroot/package/lua-fifo/lua-fifo.hash b/buildroot/package/lua-fifo/lua-fifo.hash new file mode 100644 index 0000000..bab3728 --- /dev/null +++ b/buildroot/package/lua-fifo/lua-fifo.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 53dea24ad658614a0254dcb10296a1a0fc5357315ada5724d6362f54c32b4c20 fifo-0.2-0.src.rock diff --git a/buildroot/package/lua-fifo/lua-fifo.mk b/buildroot/package/lua-fifo/lua-fifo.mk new file mode 100644 index 0000000..875b895 --- /dev/null +++ b/buildroot/package/lua-fifo/lua-fifo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-fifo +# +################################################################################ + +LUA_FIFO_VERSION_UPSTREAM =0.2 +LUA_FIFO_VERSION =$(LUA_FIFO_VERSION_UPSTREAM)-0 +LUA_FIFO_NAME_UPSTREAM = fifo +LUA_FIFO_SUBDIR = fifo.lua-$(LUA_FIFO_VERSION_UPSTREAM) +LUA_FIFO_LICENSE = MIT +LUA_FIFO_LICENSE_FILES = $(LUA_FIFO_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-flu/Config.in b/buildroot/package/lua-flu/Config.in new file mode 100644 index 0000000..526dc90 --- /dev/null +++ b/buildroot/package/lua-flu/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LUA_FLU + bool "lua-flu" + depends on !BR2_STATIC_LIBS # libfuse + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + depends on BR2_USE_MMU # libfuse + select BR2_PACKAGE_ATTR + select BR2_PACKAGE_LIBFUSE + help + Flu is a Lua binding for FUSE, which is a library allowing + creation of filesystem drivers run in userspace. Flu is a high + level binding, using basic Lua types rather than userdata + whenever possible. + + http://piratery.net/flu/ + +comment "lua-flu needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/lua-flu/lua-flu.hash b/buildroot/package/lua-flu/lua-flu.hash new file mode 100644 index 0000000..92a0a13 --- /dev/null +++ b/buildroot/package/lua-flu/lua-flu.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1389c22daec77161ec93ff90c39ee70e0f8a656ff92f22f9cf5d7121999d5c53 flu-20150331-1.src.rock diff --git a/buildroot/package/lua-flu/lua-flu.mk b/buildroot/package/lua-flu/lua-flu.mk new file mode 100644 index 0000000..7cfea8e --- /dev/null +++ b/buildroot/package/lua-flu/lua-flu.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-flu +# +################################################################################ + +LUA_FLU_VERSION = 20150331-1 +LUA_FLU_NAME_UPSTREAM = flu +LUA_FLU_SUBDIR = doub-flu-a7daae986339 +LUA_FLU_LICENSE = MIT +LUA_FLU_LICENSE_FILES = $(LUA_FLU_SUBDIR)/doc/LICENSE.txt +LUA_FLU_DEPENDENCIES = attr libfuse + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-http/Config.in b/buildroot/package/lua-http/Config.in new file mode 100644 index 0000000..247cc40 --- /dev/null +++ b/buildroot/package/lua-http/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LUA_HTTP + bool "lua-http" + depends on BR2_TOOLCHAIN_HAS_THREADS # luaossl & lua-cqueues + # These are runtime dependencies + select BR2_PACKAGE_LUA_BASEXX + select BR2_PACKAGE_LUA_COMPAT53 if !BR2_PACKAGE_LUA_5_3 + select BR2_PACKAGE_LUA_CQUEUES + select BR2_PACKAGE_LUA_FIFO + select BR2_PACKAGE_LUA_LPEG_PATTERNS + select BR2_PACKAGE_LUABITOP if BR2_PACKAGE_LUA_5_1 + select BR2_PACKAGE_LUAOSSL + help + HTTP library for Lua + + https://daurnimator.github.io/lua-http/ + +comment "lua-http needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/lua-http/lua-http.hash b/buildroot/package/lua-http/lua-http.hash new file mode 100644 index 0000000..2346ab9 --- /dev/null +++ b/buildroot/package/lua-http/lua-http.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d68591eeeeb60c4187469eae89f5bad02d753a8c0adaa460d453b0734222645a http-0.2-0.src.rock diff --git a/buildroot/package/lua-http/lua-http.mk b/buildroot/package/lua-http/lua-http.mk new file mode 100644 index 0000000..9bc416b --- /dev/null +++ b/buildroot/package/lua-http/lua-http.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-http +# +################################################################################ + +LUA_HTTP_VERSION_UPSTREAM = 0.2 +LUA_HTTP_VERSION = $(LUA_HTTP_VERSION_UPSTREAM)-0 +LUA_HTTP_NAME_UPSTREAM = http +LUA_HTTP_SUBDIR = lua-http-$(LUA_HTTP_VERSION_UPSTREAM) +LUA_HTTP_LICENSE = MIT +LUA_HTTP_LICENSE_FILES = $(LUA_HTTP_SUBDIR)/LICENSE.md + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-iconv/Config.in b/buildroot/package/lua-iconv/Config.in new file mode 100644 index 0000000..e76019d --- /dev/null +++ b/buildroot/package/lua-iconv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_ICONV + bool "lua-iconv" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Lua binding to the POSIX 'iconv' library + + http://ittner.github.io/lua-iconv/ diff --git a/buildroot/package/lua-iconv/lua-iconv.hash b/buildroot/package/lua-iconv/lua-iconv.hash new file mode 100644 index 0000000..4629102 --- /dev/null +++ b/buildroot/package/lua-iconv/lua-iconv.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 fb66e785e15376c2d2817f1f1b27d10272b877eacc998c727a10f081a7d768fa lua-iconv-7-1.src.rock diff --git a/buildroot/package/lua-iconv/lua-iconv.mk b/buildroot/package/lua-iconv/lua-iconv.mk new file mode 100644 index 0000000..dd7533a --- /dev/null +++ b/buildroot/package/lua-iconv/lua-iconv.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-iconv +# +################################################################################ + +LUA_ICONV_VERSION = 7-1 +LUA_ICONV_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) +LUA_ICONV_LICENSE = MIT +LUA_ICONV_LICENSE_FILES = $(LUA_ICONV_SUBDIR)/COPYING + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-lpeg-patterns/Config.in b/buildroot/package/lua-lpeg-patterns/Config.in new file mode 100644 index 0000000..9c701d3 --- /dev/null +++ b/buildroot/package/lua-lpeg-patterns/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUA_LPEG_PATTERNS + bool "lua-lpeg-patterns" + # These are runtime dependencies + select BR2_PACKAGE_LPEG + help + a collection of LPEG patterns. + + https://github.com/daurnimator/lpeg_patterns diff --git a/buildroot/package/lua-lpeg-patterns/lua-lpeg-patterns.hash b/buildroot/package/lua-lpeg-patterns/lua-lpeg-patterns.hash new file mode 100644 index 0000000..f779466 --- /dev/null +++ b/buildroot/package/lua-lpeg-patterns/lua-lpeg-patterns.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 82c8eddee52069e5ae821b68cb9e295ab5767a47d07545a4ca36ac1e81066086 lpeg_patterns-0.4-0.src.rock diff --git a/buildroot/package/lua-lpeg-patterns/lua-lpeg-patterns.mk b/buildroot/package/lua-lpeg-patterns/lua-lpeg-patterns.mk new file mode 100644 index 0000000..8f40c99 --- /dev/null +++ b/buildroot/package/lua-lpeg-patterns/lua-lpeg-patterns.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-lpeg-patterns +# +################################################################################ + +LUA_LPEG_PATTERNS_VERSION = 0.4-0 +LUA_LPEG_PATTERNS_NAME_UPSTREAM = lpeg_patterns +LUA_LPEG_PATTERNS_ROCKSPEC = $(LUA_LPEG_PATTERNS_NAME_UPSTREAM)-$(LUA_LPEG_PATTERNS_VERSION).rockspec +LUA_LPEG_PATTERNS_SOURCE = $(LUA_LPEG_PATTERNS_NAME_UPSTREAM)-$(LUA_LPEG_PATTERNS_VERSION).src.rock +LUA_LPEG_PATTERNS_LICENSE = MIT +LUA_LPEG_PATTERNS_LICENSE_FILES = $(LUA_LPEG_PATTERNS_SUBDIR)/LICENSE.md + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-markdown/Config.in b/buildroot/package/lua-markdown/Config.in new file mode 100644 index 0000000..c53dc46 --- /dev/null +++ b/buildroot/package/lua-markdown/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_MARKDOWN + bool "lua-markdown" + help + A pure-lua implementation of the Markdown text-to-html + markup system. + + https://github.com/mpeterv/markdown diff --git a/buildroot/package/lua-markdown/lua-markdown.hash b/buildroot/package/lua-markdown/lua-markdown.hash new file mode 100644 index 0000000..9bfbf60 --- /dev/null +++ b/buildroot/package/lua-markdown/lua-markdown.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 bed84231bb48322f8e614b4392181c52c36bc71340f9273e0c3bd72dc922bc07 markdown-0.33-1.src.rock diff --git a/buildroot/package/lua-markdown/lua-markdown.mk b/buildroot/package/lua-markdown/lua-markdown.mk new file mode 100644 index 0000000..a98f312 --- /dev/null +++ b/buildroot/package/lua-markdown/lua-markdown.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-markdown +# +################################################################################ + +LUA_MARKDOWN_VERSION = 0.33-1 +LUA_MARKDOWN_NAME_UPSTREAM = markdown +LUA_MARKDOWN_SUBDIR = markdown +LUA_MARKDOWN_LICENSE = MIT +LUA_MARKDOWN_LICENSE_FILES = $(LUA_MARKDOWN_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-messagepack/Config.in b/buildroot/package/lua-messagepack/Config.in new file mode 100644 index 0000000..2dab316 --- /dev/null +++ b/buildroot/package/lua-messagepack/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_MESSAGEPACK + bool "lua-messagepack" + help + A pure Lua implementation of the MessagePack serialization + format. + + http://fperrad.github.io/lua-MessagePack/ diff --git a/buildroot/package/lua-messagepack/lua-messagepack.hash b/buildroot/package/lua-messagepack/lua-messagepack.hash new file mode 100644 index 0000000..86ea5d0 --- /dev/null +++ b/buildroot/package/lua-messagepack/lua-messagepack.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a27d985b8bdb79ebe78dfe255c795e839a04eb2fed1c610a81c7876e3f72fd97 lua-messagepack-0.5.1-1.src.rock +sha256 b7f69ada6aed7e0cdfd690291607d8f41246e67f191107ecdc0a1e592c449abe lua-messagepack-lua53-0.5.1-1.src.rock diff --git a/buildroot/package/lua-messagepack/lua-messagepack.mk b/buildroot/package/lua-messagepack/lua-messagepack.mk new file mode 100644 index 0000000..7c9bb0d --- /dev/null +++ b/buildroot/package/lua-messagepack/lua-messagepack.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# lua-messagepack +# +################################################################################ + +LUA_MESSAGEPACK_VERSION_UPSTREAM = 0.5.1 +LUA_MESSAGEPACK_VERSION = $(LUA_MESSAGEPACK_VERSION_UPSTREAM)-1 +ifeq ($(BR2_PACKAGE_LUA_5_3),y) +LUA_MESSAGEPACK_NAME_UPSTREAM = lua-MessagePack-lua53 +else +LUA_MESSAGEPACK_NAME_UPSTREAM = lua-MessagePack +endif +LUA_MESSAGEPACK_SUBDIR = lua-MessagePack-$(LUA_MESSAGEPACK_VERSION_UPSTREAM) +LUA_MESSAGEPACK_LICENSE = MIT +LUA_MESSAGEPACK_LICENSE_FILES = $(LUA_MESSAGEPACK_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-msgpack-native/Config.in b/buildroot/package/lua-msgpack-native/Config.in new file mode 100644 index 0000000..3837228 --- /dev/null +++ b/buildroot/package/lua-msgpack-native/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LUA_MSGPACK_NATIVE + bool "lua-msgpack-native" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + depends on BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT + help + This is a native, C language implementation of msgpack + (http://msgpack.org) library/protocol for Lua language + + https://github.com/kengonakajima/lua-msgpack-native + +comment "lua-msgpack-native needs a Lua 5.1 interpreter" + depends on !BR2_PACKAGE_LUA_5_1 + depends on !BR2_PACKAGE_LUAJIT diff --git a/buildroot/package/lua-msgpack-native/lua-msgpack-native.hash b/buildroot/package/lua-msgpack-native/lua-msgpack-native.hash new file mode 100644 index 0000000..cfc5983 --- /dev/null +++ b/buildroot/package/lua-msgpack-native/lua-msgpack-native.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 025cf91d509fa3985869d18ef9b8eaeb875ff3c9fcf6467beeed6eab3bb35c93 lua-msgpack-native-41a91b994c70389dc9daa1a15678741d8ec41749.tar.gz diff --git a/buildroot/package/lua-msgpack-native/lua-msgpack-native.mk b/buildroot/package/lua-msgpack-native/lua-msgpack-native.mk new file mode 100644 index 0000000..acd3a0e --- /dev/null +++ b/buildroot/package/lua-msgpack-native/lua-msgpack-native.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# lua-msgpack-native +# +################################################################################ + +LUA_MSGPACK_NATIVE_VERSION = 41a91b994c70389dc9daa1a15678741d8ec41749 +LUA_MSGPACK_NATIVE_SITE = $(call github,kengonakajima,lua-msgpack-native,$(LUA_MSGPACK_NATIVE_VERSION)) +LUA_MSGPACK_NATIVE_DEPENDENCIES = luainterpreter +LUA_MSGPACK_NATIVE_LICENSE = Apache-2.0 +LUA_MSGPACK_NATIVE_LICENSE_FILES = LICENSE.txt + +define LUA_MSGPACK_NATIVE_BUILD_CMDS + $(TARGET_CC) $(TARGET_CFLAGS) -fPIC -shared -o $(@D)/msgpack.so $(@D)/mp.c +endef + +define LUA_MSGPACK_NATIVE_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/msgpack.so \ + $(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)/msgpack.so +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/lua-periphery/0001-Add-missing-header-for-musl-compatibility.patch b/buildroot/package/lua-periphery/0001-Add-missing-header-for-musl-compatibility.patch new file mode 100644 index 0000000..22c748c --- /dev/null +++ b/buildroot/package/lua-periphery/0001-Add-missing-header-for-musl-compatibility.patch @@ -0,0 +1,34 @@ +From 1d8cb0ad54099c3d7261aaa19a2c0786f16736d0 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 8 Aug 2015 22:42:39 +0200 +Subject: [PATCH] Add missing header for musl compatibility + + is needed to get the definition of _IOC_SIZEBITS and +solve the following build failure: + +src/spi.c: In function 'spi_transfer': +src/spi.c:100:24: error: '_IOC_SIZEBITS' undeclared (first use in this function) + if (ioctl(spi->fd, SPI_IOC_MESSAGE(1), &spi_xfer) < 1) + +Signed-off-by: Thomas Petazzoni +[Port from c-periphery] +Signed-off-by: Jörg Krause +--- + src/spi.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/lua-periphery/c-periphery/src/spi.c b/lua-periphery/c-periphery/src/spi.c +index 52a8d3d..1a6b17c 100644 +--- a/lua-periphery/c-periphery/src/spi.c ++++ b/lua-periphery/c-periphery/src/spi.c +@@ -16,6 +16,7 @@ + #include + + #include ++#include + #include + + #include "spi.h" +-- +2.5.0 + diff --git a/buildroot/package/lua-periphery/0002-Fix-build-on-SPARC.patch b/buildroot/package/lua-periphery/0002-Fix-build-on-SPARC.patch new file mode 100644 index 0000000..ce461dd --- /dev/null +++ b/buildroot/package/lua-periphery/0002-Fix-build-on-SPARC.patch @@ -0,0 +1,60 @@ +[PATCH] Fix build on SPARC + +On SPARC, the definitions of B2500000, B3000000, B3500000 and B4000000 +are not necessarily available, so use those values only if defined in +the kernel headers. + +It fixes SPARC build failures such as: + +src/serial.c: In function '_serial_baudrate_to_bits': +src/serial.c:73:30: error: 'B2500000' undeclared (first use in this function) + case 2500000: return B2500000; + ^ +src/serial.c:73:30: note: each undeclared identifier is reported only once for each function it appears in +src/serial.c:74:30: error: 'B3000000' undeclared (first use in this function) + case 3000000: return B3000000; + ^ +Signed-off-by: Thomas Petazzoni + +Index: b/lua-periphery/c-periphery/src/serial.c +=================================================================== +--- a/lua-periphery/c-periphery/src/serial.c ++++ b/lua-periphery/c-periphery/src/serial.c +@@ -70,10 +70,18 @@ + case 1152000: return B1152000; + case 1500000: return B1500000; + case 2000000: return B2000000; ++#ifdef B2500000 + case 2500000: return B2500000; ++#endif ++#ifdef B3000000 + case 3000000: return B3000000; ++#endif ++#ifdef B3500000 + case 3500000: return B3500000; ++#endif ++#ifdef B4000000 + case 4000000: return B4000000; ++#endif + default: return -1; + } + } +@@ -107,10 +115,18 @@ + case B1152000: return 1152000; + case B1500000: return 1500000; + case B2000000: return 2000000; ++#ifdef B2500000 + case B2500000: return 2500000; ++#endif ++#ifdef B3000000 + case B3000000: return 3000000; ++#endif ++#ifdef B3500000 + case B3500000: return 3500000; ++#endif ++#ifdef B4000000 + case B4000000: return 4000000; ++#endif + default: return -1; + } + } diff --git a/buildroot/package/lua-periphery/Config.in b/buildroot/package/lua-periphery/Config.in new file mode 100644 index 0000000..de5a716 --- /dev/null +++ b/buildroot/package/lua-periphery/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUA_PERIPHERY + bool "lua-periphery" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + A library for GPIO, SPI, I2C, MMIO, and Serial peripheral I/O + interface access in userspace Linux with Lua. + + https://github.com/vsergeev/lua-periphery diff --git a/buildroot/package/lua-periphery/lua-periphery.hash b/buildroot/package/lua-periphery/lua-periphery.hash new file mode 100644 index 0000000..7f6e63f --- /dev/null +++ b/buildroot/package/lua-periphery/lua-periphery.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 53762ed9b8a2edfcc5b4c535ef73e6a425f2577e036bb15994ca16a39b16ebab lua-periphery-1.0.6-1.src.rock diff --git a/buildroot/package/lua-periphery/lua-periphery.mk b/buildroot/package/lua-periphery/lua-periphery.mk new file mode 100644 index 0000000..2c04eed --- /dev/null +++ b/buildroot/package/lua-periphery/lua-periphery.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-periphery +# +################################################################################ + +LUA_PERIPHERY_VERSION = 1.0.6-1 +LUA_PERIPHERY_SUBDIR = lua-periphery +LUA_PERIPHERY_LICENSE = MIT +LUA_PERIPHERY_LICENSE_FILES = $(LUA_PERIPHERY_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-resty-http/Config.in b/buildroot/package/lua-resty-http/Config.in new file mode 100644 index 0000000..4697c90 --- /dev/null +++ b/buildroot/package/lua-resty-http/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_RESTY_HTTP + bool "lua-resty-http" + help + Lua HTTP client cosocket driver for OpenResty / ngx_lua. + + http://github.com/pintsized/lua-resty-http diff --git a/buildroot/package/lua-resty-http/lua-resty-http.hash b/buildroot/package/lua-resty-http/lua-resty-http.hash new file mode 100644 index 0000000..e45df0e --- /dev/null +++ b/buildroot/package/lua-resty-http/lua-resty-http.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4628413a5a2828645e3ddb38a2a0c764e81443cbd1a011357eeed7e983750329 lua-resty-http-0.12-0.src.rock diff --git a/buildroot/package/lua-resty-http/lua-resty-http.mk b/buildroot/package/lua-resty-http/lua-resty-http.mk new file mode 100644 index 0000000..2aee63d --- /dev/null +++ b/buildroot/package/lua-resty-http/lua-resty-http.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-resty-http +# +################################################################################ + +LUA_RESTY_HTTP_VERSION = 0.12-0 +LUA_RESTY_HTTP_SUBDIR = lua-resty-http +LUA_RESTY_HTTP_LICENSE = BSD-2-Clause +LUA_RESTY_HTTP_LICENSE_FILES = $(LUA_RESTY_HTTP_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-sailor/Config.in b/buildroot/package/lua-sailor/Config.in new file mode 100644 index 0000000..2600d46 --- /dev/null +++ b/buildroot/package/lua-sailor/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LUA_SAILOR + bool "lua-sailor" + # These are runtime dependencies + select BR2_PACKAGE_CGILUA + select BR2_PACKAGE_LBASE64 + select BR2_PACKAGE_LUAFILESYSTEM + select BR2_PACKAGE_LUA_DATAFILE + select BR2_PACKAGE_LUA_VALUA + select BR2_PACKAGE_XAVANTE + select BR2_PACKAGE_WSAPI_XAVANTE + help + Sailor is a web framework written in Lua that follows the MVC + design pattern. + + http://sailorproject.org/ diff --git a/buildroot/package/lua-sailor/lua-sailor.hash b/buildroot/package/lua-sailor/lua-sailor.hash new file mode 100644 index 0000000..f4c42cc --- /dev/null +++ b/buildroot/package/lua-sailor/lua-sailor.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4f7f43a7cf6c62712a521ebaf5f53aaf230039c7fb06480ae168c3aa036120bf sailor-0.5-4.src.rock diff --git a/buildroot/package/lua-sailor/lua-sailor.mk b/buildroot/package/lua-sailor/lua-sailor.mk new file mode 100644 index 0000000..17fbd7c --- /dev/null +++ b/buildroot/package/lua-sailor/lua-sailor.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-sailor +# +################################################################################ + +LUA_SAILOR_VERSION = 0.5-4 +LUA_SAILOR_NAME_UPSTREAM = sailor +LUA_SAILOR_SUBDIR = sailor +LUA_SAILOR_LICENSE = MIT +LUA_SAILOR_LICENSE_FILES = $(LUA_SAILOR_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-sdl2/0001-Do-not-reference-host-directory-for-headers.patch b/buildroot/package/lua-sdl2/0001-Do-not-reference-host-directory-for-headers.patch new file mode 100644 index 0000000..f4b06e0 --- /dev/null +++ b/buildroot/package/lua-sdl2/0001-Do-not-reference-host-directory-for-headers.patch @@ -0,0 +1,29 @@ +From 07309a49ad6c3e18c8c84fe54f1fdb9e103c4cc5 Mon Sep 17 00:00:00 2001 +From: Francois Perrad +Date: Sun, 22 Oct 2017 13:00:01 +0200 +Subject: [PATCH] Do not reference host directory for headers + +Signed-off-by: Francois Perrad +--- + cmake/FindSDL2.cmake | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/cmake/FindSDL2.cmake b/cmake/FindSDL2.cmake +index 5cf4115..5e17919 100644 +--- a/cmake/FindSDL2.cmake ++++ b/cmake/FindSDL2.cmake +@@ -73,11 +73,6 @@ find_path(SDL2_INCLUDE_DIR SDL.h + PATH_SUFFIXES include/SDL2 include + ) + +-# On FreeBSD SDL depends on libiconv and SDL_stdinc.h includes iconv.h, which is +-# located in ${LOCALBASE}/include. Append {LOCALBASE}/include to +-# the SDL_INCLUDE_DIR, thus allow to build SDL apps out of box. +-list(APPEND SDL2_INCLUDE_DIR /usr/local/include) +- + find_library(SDL_LIBRARY_TEMP + NAMES SDL2 SDL2-2.0 + HINTS +-- +2.13.6 + diff --git a/buildroot/package/lua-sdl2/0002-CMakeLists-do-not-require-C.patch b/buildroot/package/lua-sdl2/0002-CMakeLists-do-not-require-C.patch new file mode 100644 index 0000000..eb03ca5 --- /dev/null +++ b/buildroot/package/lua-sdl2/0002-CMakeLists-do-not-require-C.patch @@ -0,0 +1,58 @@ +From 5732174debfe027f7620af55c283060201f0ad03 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 2 Nov 2017 22:54:51 +0100 +Subject: [PATCH] CMakeLists: do not require C++ + +The project doesn't use C++, so don't let CMake check for a C++ +compiler by explicitly specifying that this is a C-only project. + +Submitted-upstream: https://github.com/Tangent128/luasdl2/pull/69 +Signed-off-by: Thomas Petazzoni +--- + common/CMakeLists.txt | 2 +- + examples/CMakeLists.txt | 2 +- + tutorials/CMakeLists.txt | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt +index 9e19709..8cfb748 100644 +--- a/common/CMakeLists.txt ++++ b/common/CMakeLists.txt +@@ -15,7 +15,7 @@ + # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +-project(common) ++project(common C) + + set( + SOURCES +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index 572b3b7..4e3af4d 100644 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -16,7 +16,7 @@ + # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # + +-project(examples) ++project(examples C) + + # Option to enable / disable examples installation + option(WITH_DOCS "Installation of documentation and examples" On) +diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt +index adefbc9..6ec069e 100644 +--- a/tutorials/CMakeLists.txt ++++ b/tutorials/CMakeLists.txt +@@ -16,7 +16,7 @@ + # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + # + +-project(tutorials) ++project(tutorials C) + + # Option to enable / disable examples installation + option(WITH_DOCS "Installation of tutorials" On) +-- +2.13.6 + diff --git a/buildroot/package/lua-sdl2/Config.in b/buildroot/package/lua-sdl2/Config.in new file mode 100644 index 0000000..65f9e7f --- /dev/null +++ b/buildroot/package/lua-sdl2/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LUA_SDL2 + bool "lua-sdl2" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_SDL2 + help + Lua-SDL2 is a pure C binding of SDL2 to Lua 5.1, Lua 5.2, + Lua 5.3, and LuaJIT. + + https://github.com/Tangent128/luasdl2 + +comment "lua-sdl2 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/lua-sdl2/lua-sdl2.hash b/buildroot/package/lua-sdl2/lua-sdl2.hash new file mode 100644 index 0000000..80aa1cc --- /dev/null +++ b/buildroot/package/lua-sdl2/lua-sdl2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cee7875106062fbc00cf8acb3b2738e336e2327df73ede011968cb060c094bfb lua-sdl2-v2.0.5-6.0.tar.gz diff --git a/buildroot/package/lua-sdl2/lua-sdl2.mk b/buildroot/package/lua-sdl2/lua-sdl2.mk new file mode 100644 index 0000000..3137599 --- /dev/null +++ b/buildroot/package/lua-sdl2/lua-sdl2.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# lua-sdl2 +# +################################################################################ + +LUA_SDL2_VERSION = v2.0.5-6.0 +LUA_SDL2_SITE = $(call github,Tangent128,luasdl2,$(LUA_SDL2_VERSION)) +LUA_SDL2_LICENSE = ISC +LUA_SDL2_LICENSE_FILES = LICENSE +LUA_SDL2_DEPENDENCIES = luainterpreter sdl2 + +LUA_SDL2_CONF_OPTS += -DWITH_LUAVER=user -DLUA_INCLUDE_DIR=$(STAGING_DIR)/usr/include + +ifeq ($(BR2_PACKAGE_SDL2_IMAGE),y) +LUA_SDL2_DEPENDENCIES += sdl2_image +else +LUA_SDL2_CONF_OPTS += -DWITH_IMAGE=Off +endif + +ifeq ($(BR2_PACKAGE_SDL2_MIXER),y) +LUA_SDL2_DEPENDENCIES += sdl2_mixer +else +LUA_SDL2_CONF_OPTS += -DWITH_MIXER=Off +endif + +ifeq ($(BR2_PACKAGE_SDL2_NET),y) +LUA_SDL2_DEPENDENCIES += sdl2_net +else +LUA_SDL2_CONF_OPTS += -DWITH_NET=Off +endif + +ifeq ($(BR2_PACKAGE_SDL2_TTF),y) +LUA_SDL2_DEPENDENCIES += sdl2_ttf +else +LUA_SDL2_CONF_OPTS += -DWITH_TTF=Off +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/lua-stdlib/Config.in b/buildroot/package/lua-stdlib/Config.in new file mode 100644 index 0000000..1843826 --- /dev/null +++ b/buildroot/package/lua-stdlib/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUA_STDLIB + bool "lua-stdlib" + help + lua-stdlib is a library of modules for common programming + tasks, including list, table and functional operations, + objects, pickling, pretty-printing and command-line option + parsing. + + https://github.com/lua-stdlib/lua-stdlib/ diff --git a/buildroot/package/lua-stdlib/lua-stdlib.hash b/buildroot/package/lua-stdlib/lua-stdlib.hash new file mode 100644 index 0000000..4882bf1 --- /dev/null +++ b/buildroot/package/lua-stdlib/lua-stdlib.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b7302ecc8ea3992d3bad96c0c4d56272e38d786d16cc1ad5964fefa73fd7c10b stdlib-41.2.1-1.src.rock diff --git a/buildroot/package/lua-stdlib/lua-stdlib.mk b/buildroot/package/lua-stdlib/lua-stdlib.mk new file mode 100644 index 0000000..a7930be --- /dev/null +++ b/buildroot/package/lua-stdlib/lua-stdlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lua-stdlib +# +################################################################################ + +LUA_STDLIB_VERSION_UPSTREAM = 41.2.1 +LUA_STDLIB_VERSION = $(LUA_STDLIB_VERSION_UPSTREAM)-1 +LUA_STDLIB_NAME_UPSTREAM = stdlib +LUA_STDLIB_SUBDIR = lua-stdlib-release-v$(LUA_STDLIB_VERSION_UPSTREAM) +LUA_STDLIB_LICENSE = MIT +LUA_STDLIB_LICENSE_FILES = $(LUA_STDLIB_SUBDIR)/COPYING + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-testmore/Config.in b/buildroot/package/lua-testmore/Config.in new file mode 100644 index 0000000..61dea3a --- /dev/null +++ b/buildroot/package/lua-testmore/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LUA_TESTMORE + bool "lua-testmore" + help + an Unit Testing Framework. + + http://fperrad.github.io/lua-TestMore/ diff --git a/buildroot/package/lua-testmore/lua-testmore.hash b/buildroot/package/lua-testmore/lua-testmore.hash new file mode 100644 index 0000000..8db664f --- /dev/null +++ b/buildroot/package/lua-testmore/lua-testmore.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 163055ef92df9e01d9ae57cd45d6f6aace1ff4dd3abf7e29b9e30ecb1ab76ae2 lua-testmore-0.3.3-1.src.rock diff --git a/buildroot/package/lua-testmore/lua-testmore.mk b/buildroot/package/lua-testmore/lua-testmore.mk new file mode 100644 index 0000000..7904776 --- /dev/null +++ b/buildroot/package/lua-testmore/lua-testmore.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-testmore +# +################################################################################ + +LUA_TESTMORE_VERSION = 0.3.3-1 +LUA_TESTMORE_NAME_UPSTREAM = lua-TestMore +LUA_TESTMORE_LICENSE = MIT +LUA_TESTMORE_LICENSE_FILES = $(LUA_TESTMORE_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-utf8/Config.in b/buildroot/package/lua-utf8/Config.in new file mode 100644 index 0000000..313fa4e --- /dev/null +++ b/buildroot/package/lua-utf8/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_LUA_UTF8 + bool "lua-utf8" + help + This module adds UTF-8 support to Lua. + It's compatible with Lua "string" module. + + http://github.com/starwing/luautf8 diff --git a/buildroot/package/lua-utf8/lua-utf8.hash b/buildroot/package/lua-utf8/lua-utf8.hash new file mode 100644 index 0000000..51fa243 --- /dev/null +++ b/buildroot/package/lua-utf8/lua-utf8.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c9ceb3a9f327b3215cdf959eebf616970b5b0427ca3fde05b19f8236defa4b91 utf8-1.2-0.src.rock diff --git a/buildroot/package/lua-utf8/lua-utf8.mk b/buildroot/package/lua-utf8/lua-utf8.mk new file mode 100644 index 0000000..7ed4f3f --- /dev/null +++ b/buildroot/package/lua-utf8/lua-utf8.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lua-utf8 +# +################################################################################ + +LUA_UTF8_VERSION = 1.2-0 +LUA_UTF8_NAME_UPSTREAM = utf8 +LUA_UTF8_SUBDIR = luautf8 +LUA_UTF8_LICENSE = MIT + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua-valua/Config.in b/buildroot/package/lua-valua/Config.in new file mode 100644 index 0000000..96b3796 --- /dev/null +++ b/buildroot/package/lua-valua/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUA_VALUA + bool "lua-valua" + help + This module provides tools for validating values, very useful + in forms, but also usable elsewhere. It works in appended + chains. Create a new validation object and start chaining + your test functions. + + https://github.com/sailorproject/valua diff --git a/buildroot/package/lua-valua/lua-valua.hash b/buildroot/package/lua-valua/lua-valua.hash new file mode 100644 index 0000000..92ea613 --- /dev/null +++ b/buildroot/package/lua-valua/lua-valua.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 bff39692fd2ac3590fd814aa1b1ca33e5d5971092955309aa8424b02b88ce1a3 valua-0.3-1.src.rock diff --git a/buildroot/package/lua-valua/lua-valua.mk b/buildroot/package/lua-valua/lua-valua.mk new file mode 100644 index 0000000..8cb0bf5 --- /dev/null +++ b/buildroot/package/lua-valua/lua-valua.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lua-valua +# +################################################################################ + +LUA_VALUA_VERSION = 0.3-1 +LUA_VALUA_NAME_UPSTREAM = valua +LUA_VALUA_SUBDIR = valua +LUA_VALUA_LICENSE = MIT +LUA_VALUA_LICENSE_FILES = $(LUA_VALUA_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lua/5.1.5/0001-root-path.patch b/buildroot/package/lua/5.1.5/0001-root-path.patch new file mode 100644 index 0000000..fd0da6e --- /dev/null +++ b/buildroot/package/lua/5.1.5/0001-root-path.patch @@ -0,0 +1,30 @@ +Adjust installation location to /usr. + +Signed-off-by: Francois Perrad + +Index: b/etc/lua.pc +=================================================================== +--- a/etc/lua.pc ++++ b/etc/lua.pc +@@ -8,7 +8,7 @@ + R= 5.1.5 + + # grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/' +-prefix= /usr/local ++prefix= /usr + INSTALL_BIN= ${prefix}/bin + INSTALL_INC= ${prefix}/include + INSTALL_LIB= ${prefix}/lib +Index: b/src/luaconf.h +=================================================================== +--- a/src/luaconf.h ++++ b/src/luaconf.h +@@ -94,7 +94,7 @@ + ".\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll" + + #else +-#define LUA_ROOT "/usr/local/" ++#define LUA_ROOT "/usr/" + #define LUA_LDIR LUA_ROOT "share/lua/5.1/" + #define LUA_CDIR LUA_ROOT "lib/lua/5.1/" + #define LUA_PATH_DEFAULT \ diff --git a/buildroot/package/lua/5.1.5/0002-shared-libs-for-lua.patch b/buildroot/package/lua/5.1.5/0002-shared-libs-for-lua.patch new file mode 100644 index 0000000..3f863a5 --- /dev/null +++ b/buildroot/package/lua/5.1.5/0002-shared-libs-for-lua.patch @@ -0,0 +1,78 @@ +Add the compilation of a shared library. +Compile the lua binary with the shared library. +And install the shared library. +The variable BUILDMODE allows to switch between static and dynamic mode. + +Signed-off-by: Francois Perrad + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -44,6 +44,7 @@ + TO_BIN= lua luac + TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp + TO_LIB= liblua.a ++TO_SOLIB = liblua.so.$(R) + TO_MAN= lua.1 luac.1 + + # Lua version and release. +@@ -61,6 +62,8 @@ + install: dummy + cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD) + cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN) ++ test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || : ++ test -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || : + cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC) + cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) + cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -23,6 +23,7 @@ + PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris + + LUA_A= liblua.a ++LUA_SO= liblua.so + CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \ + lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \ + lundump.o lvm.o lzio.o +@@ -36,8 +37,13 @@ + LUAC_O= luac.o print.o + + ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O) ++ifneq (dynamic,$(BUILDMODE)) + ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) ++else ++ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T) ++endif + ALL_A= $(LUA_A) ++ALL_SO= $(LUA_SO) + + default: $(PLAT) + +@@ -47,12 +53,23 @@ + + a: $(ALL_A) + ++so: $(ALL_SO) ++ + $(LUA_A): $(CORE_O) $(LIB_O) + $(AR) $@ $(CORE_O) $(LIB_O) # DLL needs all object files + $(RANLIB) $@ + ++$(LUA_SO): $(CORE_O) $(LIB_O) ++ $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $? ++ ln -fs $@.$(PKG_VERSION) $@ ++ ++ifneq (dynamic,$(BUILDMODE)) + $(LUA_T): $(LUA_O) $(LUA_A) + $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) ++else ++$(LUA_T): $(LUA_O) $(LUA_SO) ++ $(CC) -o $@ -L. $(MYLDFLAGS) $(LUA_O) -llua $(LIBS) ++endif + + $(LUAC_T): $(LUAC_O) $(LUA_A) + $(CC) -o $@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) diff --git a/buildroot/package/lua/5.1.5/0011-linenoise.patch b/buildroot/package/lua/5.1.5/0011-linenoise.patch new file mode 100644 index 0000000..488c080 --- /dev/null +++ b/buildroot/package/lua/5.1.5/0011-linenoise.patch @@ -0,0 +1,24 @@ +Add support of linenoise (replace readline) + +see discussion, http://lua-users.org/lists/lua-l/2010-03/msg00879.html + +Signed-off-by: Francois Perrad + +Index: b/src/luaconf.h +=================================================================== +--- a/src/luaconf.h ++++ b/src/luaconf.h +@@ -279,6 +279,13 @@ + if (lua_strlen(L,idx) > 0) /* non-empty line? */ \ + add_history(lua_tostring(L, idx)); /* add it to history */ + #define lua_freeline(L,b) ((void)L, free(b)) ++#elif defined(LUA_USE_LINENOISE) ++#include ++#define lua_readline(L,b,p) ((void)L, ((b)=linenoise(p)) != NULL) ++#define lua_saveline(L,idx) \ ++ if (lua_strlen(L,idx) > 0) /* non-empty line? */ \ ++ linenoiseHistoryAdd(lua_tostring(L, idx)); /* add it to history */ ++#define lua_freeline(L,b) ((void)L, free(b)) + #else + #define lua_readline(L,b,p) \ + ((void)L, fputs(p, stdout), fflush(stdout), /* show prompt */ \ diff --git a/buildroot/package/lua/5.1.5/0012-fix-reader-at-eoz.patch b/buildroot/package/lua/5.1.5/0012-fix-reader-at-eoz.patch new file mode 100644 index 0000000..17a28ba --- /dev/null +++ b/buildroot/package/lua/5.1.5/0012-fix-reader-at-eoz.patch @@ -0,0 +1,46 @@ +When loading a file, Lua may call the reader function again after it returned end of input. + +Fetch from: http://www.lua.org/bugs.html#5.1.5-2 + +Signed-off-by: Francois Perrad + +Index: b/src/lzio.c +=================================================================== +--- a/src/lzio.c ++++ b/src/lzio.c +@@ -22,10 +22,14 @@ + size_t size; + lua_State *L = z->L; + const char *buff; ++ if (z->eoz) return EOZ; + lua_unlock(L); + buff = z->reader(L, z->data, &size); + lua_lock(L); +- if (buff == NULL || size == 0) return EOZ; ++ if (buff == NULL || size == 0) { ++ z->eoz = 1; /* avoid calling reader function next time */ ++ return EOZ; ++ } + z->n = size - 1; + z->p = buff; + return char2int(*(z->p++)); +@@ -51,6 +55,7 @@ + z->data = data; + z->n = 0; + z->p = NULL; ++ z->eoz = 0; + } + + +Index: b/src/lzio.h +=================================================================== +--- a/src/lzio.h ++++ b/src/lzio.h +@@ -59,6 +59,7 @@ + lua_Reader reader; + void* data; /* additional data */ + lua_State *L; /* Lua state (for reader) */ ++ int eoz; /* true if reader has no more data */ + }; + + diff --git a/buildroot/package/lua/5.2.4/0001-root-path.patch b/buildroot/package/lua/5.2.4/0001-root-path.patch new file mode 100644 index 0000000..c6f242c --- /dev/null +++ b/buildroot/package/lua/5.2.4/0001-root-path.patch @@ -0,0 +1,17 @@ +Adjust installation location to /usr. + +Signed-off-by: Francois Perrad + +Index: b/src/luaconf.h +=================================================================== +--- a/src/luaconf.h ++++ b/src/luaconf.h +@@ -100,7 +100,7 @@ + #else /* }{ */ + + #define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR "/" +-#define LUA_ROOT "/usr/local/" ++#define LUA_ROOT "/usr/" + #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR + #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR + #define LUA_PATH_DEFAULT \ diff --git a/buildroot/package/lua/5.2.4/0002-shared-libs-for-lua.patch b/buildroot/package/lua/5.2.4/0002-shared-libs-for-lua.patch new file mode 100644 index 0000000..3cf3b24 --- /dev/null +++ b/buildroot/package/lua/5.2.4/0002-shared-libs-for-lua.patch @@ -0,0 +1,78 @@ +Add the compilation of a shared library. +Compile the lua binary with the shared library. +And install the shared library. +The variable BUILDMODE allows to switch between static and dynamic mode. + +Signed-off-by: Francois Perrad + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -42,6 +42,7 @@ + TO_BIN= lua luac + TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp + TO_LIB= liblua.a ++TO_SOLIB = liblua.so.$(R) + TO_MAN= lua.1 luac.1 + + # Lua version and release. +@@ -60,6 +61,8 @@ + install: dummy + cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD) + cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN) ++ test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || : ++ test -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || : + cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC) + cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) + cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -29,6 +29,7 @@ + PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris + + LUA_A= liblua.a ++LUA_SO= liblua.so + CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \ + lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \ + ltm.o lundump.o lvm.o lzio.o +@@ -43,8 +44,13 @@ + LUAC_O= luac.o + + ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O) ++ifneq (dynamic,$(BUILDMODE)) + ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) ++else ++ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T) ++endif + ALL_A= $(LUA_A) ++ALL_SO= $(LUA_SO) + + # Targets start here. + default: $(PLAT) +@@ -55,12 +61,23 @@ + + a: $(ALL_A) + ++so: $(ALL_SO) ++ + $(LUA_A): $(BASE_O) + $(AR) $@ $(BASE_O) + $(RANLIB) $@ + ++$(LUA_SO): $(CORE_O) $(LIB_O) ++ $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $? ++ ln -fs $@.$(PKG_VERSION) $@ ++ ++ifneq (dynamic,$(BUILDMODE)) + $(LUA_T): $(LUA_O) $(LUA_A) + $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) ++else ++$(LUA_T): $(LUA_O) $(LUA_SO) ++ $(CC) -o $@ -L. $(LDFLAGS) $(LUA_O) -llua $(LIBS) ++endif + + $(LUAC_T): $(LUAC_O) $(LUA_A) + $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) diff --git a/buildroot/package/lua/5.2.4/0011-linenoise.patch b/buildroot/package/lua/5.2.4/0011-linenoise.patch new file mode 100644 index 0000000..b1f228c --- /dev/null +++ b/buildroot/package/lua/5.2.4/0011-linenoise.patch @@ -0,0 +1,26 @@ +Add support of linenoise (replace readline) + +see discussion, http://lua-users.org/lists/lua-l/2010-03/msg00879.html + +Signed-off-by: Francois Perrad + +Index: b/src/lua.c +=================================================================== +--- a/src/lua.c ++++ b/src/lua.c +@@ -72,6 +72,15 @@ + add_history(lua_tostring(L, idx)); /* add it to history */ + #define lua_freeline(L,b) ((void)L, free(b)) + ++#elif defined(LUA_USE_LINENOISE) ++ ++#include ++#define lua_readline(L,b,p) ((void)L, ((b)=linenoise(p)) != NULL) ++#define lua_saveline(L,idx) \ ++ if (lua_rawlen(L,idx) > 0) /* non-empty line? */ \ ++ linenoiseHistoryAdd(lua_tostring(L, idx)); /* add it to history */ ++#define lua_freeline(L,b) ((void)L, free(b)) ++ + #elif !defined(lua_readline) + + #define lua_readline(L,b,p) \ diff --git a/buildroot/package/lua/5.3.4/0001-root-path.patch b/buildroot/package/lua/5.3.4/0001-root-path.patch new file mode 100644 index 0000000..a44c55c --- /dev/null +++ b/buildroot/package/lua/5.3.4/0001-root-path.patch @@ -0,0 +1,17 @@ +Adjust installation location to /usr. + +Signed-off-by: Francois Perrad + +Index: b/src/luaconf.h +=================================================================== +--- a/src/luaconf.h ++++ b/src/luaconf.h +@@ -200,7 +200,7 @@ + + #else /* }{ */ + +-#define LUA_ROOT "/usr/local/" ++#define LUA_ROOT "/usr/" + #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/" + #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/" + #define LUA_PATH_DEFAULT \ diff --git a/buildroot/package/lua/5.3.4/0002-shared-libs-for-lua.patch b/buildroot/package/lua/5.3.4/0002-shared-libs-for-lua.patch new file mode 100644 index 0000000..493828c --- /dev/null +++ b/buildroot/package/lua/5.3.4/0002-shared-libs-for-lua.patch @@ -0,0 +1,78 @@ +Add the compilation of a shared library. +Compile the lua binary with the shared library. +And install the shared library. +The variable BUILDMODE allows to switch between static and dynamic mode. + +Signed-off-by: Francois Perrad + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -42,6 +42,7 @@ + TO_BIN= lua luac + TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp + TO_LIB= liblua.a ++TO_SOLIB = liblua.so.$(R) + TO_MAN= lua.1 luac.1 + + # Lua version and release. +@@ -60,6 +61,8 @@ + install: dummy + cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD) + cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN) ++ test -f src/$(TO_SOLIB) && cd src && $(INSTALL_EXEC) $(TO_SOLIB) $(INSTALL_LIB) || : ++ test -f src/$(TO_SOLIB) && ln -sf $(TO_SOLIB) $(INSTALL_LIB)/liblua.so || : + cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC) + cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB) + cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN) +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -29,6 +29,7 @@ + PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris + + LUA_A= liblua.a ++LUA_SO= liblua.so + CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \ + lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \ + ltm.o lundump.o lvm.o lzio.o +@@ -43,8 +44,13 @@ + LUAC_O= luac.o + + ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O) ++ifneq (dynamic,$(BUILDMODE)) + ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) ++else ++ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T) ++endif + ALL_A= $(LUA_A) ++ALL_SO= $(LUA_SO) + + # Targets start here. + default: $(PLAT) +@@ -55,12 +61,23 @@ + + a: $(ALL_A) + ++so: $(ALL_SO) ++ + $(LUA_A): $(BASE_O) + $(AR) $@ $(BASE_O) + $(RANLIB) $@ + ++$(LUA_SO): $(CORE_O) $(LIB_O) ++ $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $? ++ ln -fs $@.$(PKG_VERSION) $@ ++ ++ifneq (dynamic,$(BUILDMODE)) + $(LUA_T): $(LUA_O) $(LUA_A) + $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) ++else ++$(LUA_T): $(LUA_O) $(LUA_SO) ++ $(CC) -o $@ -L. $(LDFLAGS) $(LUA_O) -llua $(LIBS) ++endif + + $(LUAC_T): $(LUAC_O) $(LUA_A) + $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) diff --git a/buildroot/package/lua/5.3.4/0011-linenoise.patch b/buildroot/package/lua/5.3.4/0011-linenoise.patch new file mode 100644 index 0000000..574e6c8 --- /dev/null +++ b/buildroot/package/lua/5.3.4/0011-linenoise.patch @@ -0,0 +1,24 @@ +Add support of linenoise (replace readline) + +see discussion, http://lua-users.org/lists/lua-l/2010-03/msg00879.html + +Signed-off-by: Francois Perrad + +Index: b/src/lua.c +=================================================================== +--- a/src/lua.c ++++ b/src/lua.c +@@ -85,6 +85,13 @@ + #define lua_saveline(L,line) ((void)L, add_history(line)) + #define lua_freeline(L,b) ((void)L, free(b)) + ++#elif defined(LUA_USE_LINENOISE) ++ ++#include ++#define lua_readline(L,b,p) ((void)L, ((b)=linenoise(p)) != NULL) ++#define lua_saveline(L,line) ((void)L, linenoiseHistoryAdd(line)) ++#define lua_freeline(L,b) ((void)L, free(b)) ++ + #else /* }{ */ + + #define lua_readline(L,b,p) \ diff --git a/buildroot/package/lua/Config.in b/buildroot/package/lua/Config.in new file mode 100644 index 0000000..4d2f0e9 --- /dev/null +++ b/buildroot/package/lua/Config.in @@ -0,0 +1,72 @@ +config BR2_PACKAGE_LUA + bool "lua" + select BR2_PACKAGE_HAS_LUAINTERPRETER + help + Lua is a powerful, fast, light-weight, embeddable scripting + language. + + http://www.lua.org/ + +if BR2_PACKAGE_LUA + +config BR2_PACKAGE_PROVIDES_LUAINTERPRETER + default "lua" + +choice + prompt "Lua Version" + default BR2_PACKAGE_LUA_5_3 + help + Select the version of Lua API/ABI you wish to use. + +config BR2_PACKAGE_LUA_5_1 + bool "Lua 5.1.x" + +config BR2_PACKAGE_LUA_5_2 + bool "Lua 5.2.x" + +config BR2_PACKAGE_LUA_5_3 + bool "Lua 5.3.x" + +endchoice + +config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION + default "5.1" if BR2_PACKAGE_LUA_5_1 + default "5.2" if BR2_PACKAGE_LUA_5_2 + default "5.3" if BR2_PACKAGE_LUA_5_3 + +if BR2_PACKAGE_LUA_5_3 +config BR2_PACKAGE_LUA_32BITS + bool "Use 32 bit numbers" + default y if !BR2_ARCH_IS_64 + help + Use a 32 bit data type for numbers / integers instead of the + default 64 bit type. This option is particularly attractive + for small machines and embedded systems. + +endif + +choice + prompt "Lua command-line editing" + default BR2_PACKAGE_LUA_EDITING_NONE + +config BR2_PACKAGE_LUA_EDITING_NONE + bool "none" + help + None. + +config BR2_PACKAGE_LUA_READLINE + bool "readline support" + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_NCURSES + help + Enables command-line editing in the Lua interpreter. + +config BR2_PACKAGE_LUA_LINENOISE + bool "linenoise support" + select BR2_PACKAGE_LINENOISE + help + Enables command-line editing in the Lua interpreter. + +endchoice + +endif diff --git a/buildroot/package/lua/lua.hash b/buildroot/package/lua/lua.hash new file mode 100644 index 0000000..32e7472 --- /dev/null +++ b/buildroot/package/lua/lua.hash @@ -0,0 +1,9 @@ +# Hashes from: http://www.lua.org/ftp/ +md5 53a9c68bcc0eda58bdc2095ad5cdfc63 lua-5.3.4.tar.gz +sha1 79790cfd40e09ba796b01a571d4d63b52b1cd950 lua-5.3.4.tar.gz + +md5 913fdb32207046b273fdb17aad70be13 lua-5.2.4.tar.gz +sha1 ef15259421197e3d85b7d6e4871b8c26fd82c1cf lua-5.2.4.tar.gz + +md5 2e115fe26e435e33b0d5c022e4490567 lua-5.1.5.tar.gz +sha1 b3882111ad02ecc6b972f8c1241647905cb2e3fc lua-5.1.5.tar.gz diff --git a/buildroot/package/lua/lua.mk b/buildroot/package/lua/lua.mk new file mode 100644 index 0000000..0ac2e0e --- /dev/null +++ b/buildroot/package/lua/lua.mk @@ -0,0 +1,108 @@ +################################################################################ +# +# lua +# +################################################################################ + +ifeq ($(BR2_PACKAGE_LUA_5_3),y) +LUA_VERSION = 5.3.4 +else +ifeq ($(BR2_PACKAGE_LUA_5_2),y) +LUA_VERSION = 5.2.4 +else +LUA_VERSION = 5.1.5 +endif +endif +LUA_SITE = http://www.lua.org/ftp +LUA_INSTALL_STAGING = YES +LUA_LICENSE = MIT +ifeq ($(BR2_PACKAGE_LUA_5_1),y) +LUA_LICENSE_FILES = COPYRIGHT +else +LUA_LICENSE_FILES = doc/readme.html +endif + +LUA_PROVIDES = luainterpreter + +LUA_CFLAGS = -Wall -fPIC -DLUA_USE_POSIX + +ifeq ($(BR2_PACKAGE_LUA_5_2),y) +LUA_CFLAGS += -DLUA_COMPAT_ALL +endif + +ifeq ($(BR2_PACKAGE_LUA_5_3),y) +LUA_CFLAGS += -DLUA_COMPAT_5_2 +endif + +ifeq ($(BR2_STATIC_LIBS),y) +LUA_BUILDMODE = static +else +LUA_BUILDMODE = dynamic +LUA_CFLAGS += -DLUA_USE_DLOPEN +LUA_MYLIBS += -ldl +endif + +ifeq ($(BR2_PACKAGE_LUA_READLINE),y) +LUA_DEPENDENCIES = readline ncurses +LUA_MYLIBS += -lreadline -lhistory -lncurses +LUA_CFLAGS += -DLUA_USE_READLINE +else +ifeq ($(BR2_PACKAGE_LUA_LINENOISE),y) +LUA_DEPENDENCIES = linenoise +LUA_MYLIBS += -llinenoise +LUA_CFLAGS += -DLUA_USE_LINENOISE +endif +endif + +ifeq ($(BR2_PACKAGE_LUA_32BITS),y) +define LUA_32BITS_LUACONF + $(SED) 's/\/\* #define LUA_32BITS \*\//#define LUA_32BITS/' $(@D)/src/luaconf.h +endef + +LUA_POST_PATCH_HOOKS += LUA_32BITS_LUACONF +endif + +HOST_LUA_CFLAGS = -Wall -fPIC -DLUA_USE_DLOPEN -DLUA_USE_POSIX +HOST_LUA_MYLIBS = -ldl + +define LUA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" \ + CFLAGS="$(TARGET_CFLAGS) $(LUA_CFLAGS)" \ + MYLIBS="$(LUA_MYLIBS)" AR="$(TARGET_CROSS)ar rcu" \ + MYLDFLAGS="$(TARGET_LDFLAGS)" \ + BUILDMODE=$(LUA_BUILDMODE) \ + PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all + sed -e "s/@VERSION@/$(LUA_VERSION)/;s/@ABI@/$(LUAINTERPRETER_ABIVER)/;s/@MYLIBS@/$(LUA_MYLIBS)/" \ + package/lua/lua.pc.in > $(@D)/lua.pc +endef + +define HOST_LUA_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) \ + CFLAGS="$(HOST_LUA_CFLAGS)" \ + MYLDFLAGS="$(HOST_LDFLAGS)" \ + MYLIBS="$(HOST_LUA_MYLIBS)" \ + BUILDMODE=static \ + PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all + sed -e "s/@VERSION@/$(LUA_VERSION)/;s/@ABI@/$(LUAINTERPRETER_ABIVER)/;s/@MYLIBS@/$(HOST_LUA_MYLIBS)/" \ + package/lua/lua.pc.in > $(@D)/lua.pc +endef + +define LUA_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP="$(STAGING_DIR)/usr" -C $(@D) install + $(INSTALL) -m 0644 -D $(@D)/lua.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/lua.pc +endef + +define LUA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) INSTALL_TOP="$(TARGET_DIR)/usr" -C $(@D) install +endef + +define HOST_LUA_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) INSTALL_TOP="$(HOST_DIR)" -C $(@D) install + $(INSTALL) -m 0644 -D $(@D)/lua.pc \ + $(HOST_DIR)/lib/pkgconfig/lua.pc +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/lua/lua.pc.in b/buildroot/package/lua/lua.pc.in new file mode 100644 index 0000000..0a61d5e --- /dev/null +++ b/buildroot/package/lua/lua.pc.in @@ -0,0 +1,26 @@ +# lua.pc -- pkg-config data for Lua + +V= @ABI@ +R= @VERSION@ + +prefix= /usr +INSTALL_BIN= ${prefix}/bin +INSTALL_INC= ${prefix}/include +INSTALL_LIB= ${prefix}/lib +INSTALL_MAN= ${prefix}/man/man1 +INSTALL_LMOD= ${prefix}/share/lua/${V} +INSTALL_CMOD= ${prefix}/lib/lua/${V} + +# canonical vars +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: Lua +Description: An Extensible Extension Language +Version: ${R} +Requires: +Libs: -L${libdir} -llua -lm @MYLIBS@ +Cflags: -I${includedir} + +# (end of lua.pc) diff --git a/buildroot/package/luabitop/Config.in b/buildroot/package/luabitop/Config.in new file mode 100644 index 0000000..a819fe8 --- /dev/null +++ b/buildroot/package/luabitop/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LUABITOP + bool "luabitop" + depends on !BR2_PACKAGE_LUA_5_3 + help + Lua BitOp is a C extension module for Lua 5.1/5.2 which adds + bitwise operations on numbers. + + http://bitop.luajit.org + +comment "luabitop needs a Lua 5.1/5.2 interpreter" + depends on BR2_PACKAGE_LUA_5_3 diff --git a/buildroot/package/luabitop/luabitop.hash b/buildroot/package/luabitop/luabitop.hash new file mode 100644 index 0000000..7811020 --- /dev/null +++ b/buildroot/package/luabitop/luabitop.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 fc7a8065a57462ee13bed7f95b0ab13f94ecd1bf846108c61ccf2c75548af26e luabitop-1.0.2-1.src.rock diff --git a/buildroot/package/luabitop/luabitop.mk b/buildroot/package/luabitop/luabitop.mk new file mode 100644 index 0000000..a36a2fe --- /dev/null +++ b/buildroot/package/luabitop/luabitop.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luabitop +# +################################################################################ + +LUABITOP_VERSION = 1.0.2-1 +LUABITOP_NAME_UPSTREAM = LuaBitOp +LUABITOP_LICENSE = MIT +LUABITOP_LICENSE_FILES = $(LUABITOP_SUBDIR)/README + +$(eval $(luarocks-package)) diff --git a/buildroot/package/luacrypto/Config.in b/buildroot/package/luacrypto/Config.in new file mode 100644 index 0000000..e9d43cd --- /dev/null +++ b/buildroot/package/luacrypto/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LUACRYPTO + bool "luacrypto" + select BR2_PACKAGE_OPENSSL + help + LuaCrypto provides a Lua frontend to the OpenSSL cryptographic + library. + The OpenSSL features that are currently exposed are digests + (MD5, SHA-1, HMAC, and more) and crypto-grade random number + generators communication. + + http://luacrypto.luaforge.net diff --git a/buildroot/package/luacrypto/luacrypto.hash b/buildroot/package/luacrypto/luacrypto.hash new file mode 100644 index 0000000..5c57767 --- /dev/null +++ b/buildroot/package/luacrypto/luacrypto.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 dc935c923b8851208d5d504b343448a9d5bd3e537bb8657875f12d72155600b8 luacrypto-0.3.2-1.src.rock diff --git a/buildroot/package/luacrypto/luacrypto.mk b/buildroot/package/luacrypto/luacrypto.mk new file mode 100644 index 0000000..b6dbb99 --- /dev/null +++ b/buildroot/package/luacrypto/luacrypto.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luacrypto +# +################################################################################ + +LUACRYPTO_VERSION = 0.3.2-1 +LUACRYPTO_LICENSE = MIT +LUACRYPTO_LICENSE_FILES = $(LUACRYPTO_SUBDIR)/COPYING +LUACRYPTO_DEPENDENCIES = openssl + +$(eval $(luarocks-package)) diff --git a/buildroot/package/luadbi-sqlite3/Config.in b/buildroot/package/luadbi-sqlite3/Config.in new file mode 100644 index 0000000..6ed32a2 --- /dev/null +++ b/buildroot/package/luadbi-sqlite3/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUADBI_SQLITE3 + bool "luadbi-sqlite3" + select BR2_PACKAGE_LUADBI # runtime dependency + select BR2_PACKAGE_SQLITE + help + LuaDBI is a database interface library for Lua. + And this is the SQLite3 backend. + + https://github.com/mwild1/luadbi diff --git a/buildroot/package/luadbi-sqlite3/luadbi-sqlite3.hash b/buildroot/package/luadbi-sqlite3/luadbi-sqlite3.hash new file mode 100644 index 0000000..bd8b927 --- /dev/null +++ b/buildroot/package/luadbi-sqlite3/luadbi-sqlite3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2868dad4d189368fcf5cddd191965c8cb2efaa3a3ba83d50e6a88c30353f74ce luadbi-sqlite3-0.6-2.src.rock diff --git a/buildroot/package/luadbi-sqlite3/luadbi-sqlite3.mk b/buildroot/package/luadbi-sqlite3/luadbi-sqlite3.mk new file mode 100644 index 0000000..422fa1e --- /dev/null +++ b/buildroot/package/luadbi-sqlite3/luadbi-sqlite3.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# luadbi-sqlite3 +# +################################################################################ + +LUADBI_SQLITE3_VERSION = 0.6-2 +LUADBI_SQLITE3_LICENSE = MIT +LUADBI_SQLITE3_SUBDIR = luadbi +LUADBI_SQLITE3_LICENSE_FILES = $(LUADBI_SQLITE3_SUBDIR)/COPYING +LUADBI_SQLITE3_DEPENDENCIES = sqlite + +$(eval $(luarocks-package)) diff --git a/buildroot/package/luadbi/Config.in b/buildroot/package/luadbi/Config.in new file mode 100644 index 0000000..2e29058 --- /dev/null +++ b/buildroot/package/luadbi/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LUADBI + bool "luadbi" + help + LuaDBI is a database interface library for Lua. + It is designed to provide a RDBMS agnostic API for handling + database operations. LuaDBI also provides support for + prepared statement handles, placeholders and bind parameters + for all database operations. + + https://github.com/mwild1/luadbi diff --git a/buildroot/package/luadbi/luadbi.hash b/buildroot/package/luadbi/luadbi.hash new file mode 100644 index 0000000..e5c022b --- /dev/null +++ b/buildroot/package/luadbi/luadbi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 723f63b744b7367ddfd6bbf7a7e6f6867aa1eaabbbc2bab5dc8a90e80b0c34c2 luadbi-0.6-2.src.rock diff --git a/buildroot/package/luadbi/luadbi.mk b/buildroot/package/luadbi/luadbi.mk new file mode 100644 index 0000000..268e0e6 --- /dev/null +++ b/buildroot/package/luadbi/luadbi.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luadbi +# +################################################################################ + +LUADBI_VERSION = 0.6-2 +LUADBI_LICENSE = MIT +LUADBI_SUBDIR = luadbi +LUADBI_LICENSE_FILES = $(LUADBI_SUBDIR)/COPYING + +$(eval $(luarocks-package)) diff --git a/buildroot/package/luaexpat/Config.in b/buildroot/package/luaexpat/Config.in new file mode 100644 index 0000000..7139e8c --- /dev/null +++ b/buildroot/package/luaexpat/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUAEXPAT + bool "luaexpat" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + select BR2_PACKAGE_EXPAT + help + LuaExpat is a SAX XML parser based on the Expat library. + + http://matthewwild.co.uk/projects/luaexpat/ diff --git a/buildroot/package/luaexpat/luaexpat.hash b/buildroot/package/luaexpat/luaexpat.hash new file mode 100644 index 0000000..27f6ed0 --- /dev/null +++ b/buildroot/package/luaexpat/luaexpat.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 aa7883a0d44f500e32ef306c04632546f97f33159fffa7bcdc3f451170f95896 luaexpat-1.3.0-1.src.rock diff --git a/buildroot/package/luaexpat/luaexpat.mk b/buildroot/package/luaexpat/luaexpat.mk new file mode 100644 index 0000000..c7377f6 --- /dev/null +++ b/buildroot/package/luaexpat/luaexpat.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luaexpat +# +################################################################################ + +LUAEXPAT_VERSION = 1.3.0-1 +LUAEXPAT_DEPENDENCIES = expat +LUAEXPAT_LICENSE = MIT +LUAEXPAT_LICENSE_FILES = $(LUAEXPAT_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/buildroot/package/luaexpatutils/Config.in b/buildroot/package/luaexpatutils/Config.in new file mode 100644 index 0000000..28a7b09 --- /dev/null +++ b/buildroot/package/luaexpatutils/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUAEXPATUTILS + bool "luaexpatutils" + select BR2_PACKAGE_LUAEXPAT + help + lxp.doc is a module that provides useful features for working + with XML formats in LOM format as used by the LuaExpat project + from Kepler. + + https://github.com/stevedonovan/LuaExpatUtils diff --git a/buildroot/package/luaexpatutils/luaexpatutils.hash b/buildroot/package/luaexpatutils/luaexpatutils.hash new file mode 100644 index 0000000..fe32eea --- /dev/null +++ b/buildroot/package/luaexpatutils/luaexpatutils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9b50bef94a6ddb6e6d4fffd5392f5c53d15e1a048966b559c4f8eda5e84d4517 luaexpatutils-88c228365b084224c911d34aff06002634b38b50.tar.gz diff --git a/buildroot/package/luaexpatutils/luaexpatutils.mk b/buildroot/package/luaexpatutils/luaexpatutils.mk new file mode 100644 index 0000000..9bfc654 --- /dev/null +++ b/buildroot/package/luaexpatutils/luaexpatutils.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# luaexpatutils +# +################################################################################ + +LUAEXPATUTILS_VERSION = 88c228365b084224c911d34aff06002634b38b50 +LUAEXPATUTILS_SITE = $(call github,stevedonovan,LuaExpatUtils,$(LUAEXPATUTILS_VERSION)) +LUAEXPATUTILS_LICENSE = Public Domain +LUAEXPATUTILS_DEPENDENCIES = luaexpat + +define LUAEXPATUTILS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/lua/doc.lua \ + $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)/lxp/doc.lua +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/luafilesystem/Config.in b/buildroot/package/luafilesystem/Config.in new file mode 100644 index 0000000..50e7975 --- /dev/null +++ b/buildroot/package/luafilesystem/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUAFILESYSTEM + bool "luafilesystem" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + LuaFileSystem offers a portable way to access + the underlying directory structure and file attributes. + + http://keplerproject.github.com/luafilesystem/ diff --git a/buildroot/package/luafilesystem/luafilesystem.hash b/buildroot/package/luafilesystem/luafilesystem.hash new file mode 100644 index 0000000..bd4a446 --- /dev/null +++ b/buildroot/package/luafilesystem/luafilesystem.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 65e6d437e577a1d6cd509b6cd224d2cb9501d58d32a72cafbd4fd3f911681576 luafilesystem-1.7.0-2.src.rock diff --git a/buildroot/package/luafilesystem/luafilesystem.mk b/buildroot/package/luafilesystem/luafilesystem.mk new file mode 100644 index 0000000..bde0426 --- /dev/null +++ b/buildroot/package/luafilesystem/luafilesystem.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luafilesystem +# +################################################################################ + +LUAFILESYSTEM_VERSION = 1.7.0-2 +LUAFILESYSTEM_LICENSE = MIT +LUAFILESYSTEM_LICENSE_FILES = luafilesystem/LICENSE +LUAFILESYSTEM_SUBDIR = luafilesystem + +$(eval $(luarocks-package)) diff --git a/buildroot/package/luainterpreter/Config.in b/buildroot/package/luainterpreter/Config.in new file mode 100644 index 0000000..e89a9b8 --- /dev/null +++ b/buildroot/package/luainterpreter/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HAS_LUAINTERPRETER + bool + +config BR2_PACKAGE_PROVIDES_LUAINTERPRETER + string + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + +config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION + string diff --git a/buildroot/package/luainterpreter/luainterpreter.mk b/buildroot/package/luainterpreter/luainterpreter.mk new file mode 100644 index 0000000..cb1d5dd --- /dev/null +++ b/buildroot/package/luainterpreter/luainterpreter.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# luainterpreter +# +################################################################################ + +LUAINTERPRETER_ABIVER = $(call qstrip,$(BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION)) + +# Lua packages often install documentation, clean that up globally +# Since luainterpreter is a virtual package, we can't use +# LUAINTERPRETER_TARGET_FINALIZE_HOOKS +ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y) +define LUAINTERPRETER_REMOVE_DOC + rm -rf $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)/doc +endef + +TARGET_FINALIZE_HOOKS += LUAINTERPRETER_REMOVE_DOC +endif + +$(eval $(virtual-package)) +$(eval $(host-virtual-package)) + +LUA_RUN = $(HOST_DIR)/bin/$(call qstrip,$(BR2_PACKAGE_PROVIDES_LUAINTERPRETER)) diff --git a/buildroot/package/luajit/0001-no-bin-symlink.patch b/buildroot/package/luajit/0001-no-bin-symlink.patch new file mode 100644 index 0000000..dd1dfd8 --- /dev/null +++ b/buildroot/package/luajit/0001-no-bin-symlink.patch @@ -0,0 +1,26 @@ +Do not use a symlink for the binary, simply name it luajit + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -43,8 +43,7 @@ + INSTALL_MAN= $(INSTALL_SHARE)/man/man1 + INSTALL_PKGCONFIG= $(INSTALL_LIB)/pkgconfig + +-INSTALL_TNAME= luajit-$(VERSION) +-INSTALL_TSYMNAME= luajit ++INSTALL_TNAME= luajit + INSTALL_ANAME= libluajit-$(ABIVER).a + INSTALL_SOSHORT1= libluajit-$(ABIVER).so + INSTALL_SOSHORT2= libluajit-$(ABIVER).so.$(MAJVER) +@@ -59,7 +58,6 @@ + INSTALL_SHORT1= $(INSTALL_LIB)/$(INSTALL_SOSHORT1) + INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT2) + INSTALL_T= $(INSTALL_BIN)/$(INSTALL_TNAME) +-INSTALL_TSYM= $(INSTALL_BIN)/$(INSTALL_TSYMNAME) + INSTALL_PC= $(INSTALL_PKGCONFIG)/$(INSTALL_PCNAME) + + INSTALL_DIRS= $(INSTALL_BIN) $(INSTALL_LIB) $(INSTALL_INC) $(INSTALL_MAN) \ diff --git a/buildroot/package/luajit/0002-install-inc.patch b/buildroot/package/luajit/0002-install-inc.patch new file mode 100644 index 0000000..86b766d --- /dev/null +++ b/buildroot/package/luajit/0002-install-inc.patch @@ -0,0 +1,17 @@ +Install includes like lua's ones + +Signed-off-by: Francois Perrad + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -32,7 +32,7 @@ + INSTALL_BIN= $(DPREFIX)/bin + INSTALL_LIB= $(DPREFIX)/$(MULTILIB) + INSTALL_SHARE= $(DPREFIX)/share +-INSTALL_INC= $(DPREFIX)/include/luajit-$(MAJVER).$(MINVER) ++INSTALL_INC= $(DPREFIX)/include + + INSTALL_LJLIBD= $(INSTALL_SHARE)/luajit-$(VERSION) + INSTALL_JITLIB= $(INSTALL_LJLIBD)/jit diff --git a/buildroot/package/luajit/Config.in b/buildroot/package/luajit/Config.in new file mode 100644 index 0000000..7e792c5 --- /dev/null +++ b/buildroot/package/luajit/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + bool + default y if BR2_i386 || \ + (BR2_x86_64 && BR2_HOSTARCH='x86_64') || \ + BR2_powerpc || BR2_arm || BR2_armeb || \ + ((BR2_mips || BR2_mipsel) && !BR2_MIPS_SOFT_FLOAT && \ + !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6) + # -m32 flag is used for 32bit builds and host-luajit has + # limited architecture support + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + +config BR2_PACKAGE_LUAJIT + bool "luajit" + depends on !BR2_STATIC_LIBS # dlopen + # Luajit is only available for some target architectures, and + # has some complexity wrt 32/64. See luajit.mk for details. + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + # luajit.mk uses the "-m32" compiler option to build 32bit + # binaries, so check if that option is supported. See + # luajit.mk for details. + select BR2_PACKAGE_HAS_LUAINTERPRETER + select BR2_HOSTARCH_NEEDS_IA32_COMPILER if !BR2_ARCH_IS_64 + help + LuaJIT implements the full set of language features defined + by Lua 5.1. The virtual machine (VM) is API- and + ABI-compatible to the standard Lua interpreter and can be + deployed as a drop-in replacement. + + http://luajit.org/ + +if BR2_PACKAGE_LUAJIT + +config BR2_PACKAGE_PROVIDES_LUAINTERPRETER + default "luajit" + +config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION + default "5.1" + +endif + +comment "luajit needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/luajit/luajit.hash b/buildroot/package/luajit/luajit.hash new file mode 100644 index 0000000..2081d12 --- /dev/null +++ b/buildroot/package/luajit/luajit.hash @@ -0,0 +1,2 @@ +# Hashes from: http://luajit.org/download.html +md5 48353202cbcacab84ee41a5a70ea0a2c LuaJIT-2.0.5.tar.gz diff --git a/buildroot/package/luajit/luajit.mk b/buildroot/package/luajit/luajit.mk new file mode 100644 index 0000000..939fa66 --- /dev/null +++ b/buildroot/package/luajit/luajit.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# luajit +# +################################################################################ + +LUAJIT_VERSION = 2.0.5 +LUAJIT_SOURCE = LuaJIT-$(LUAJIT_VERSION).tar.gz +LUAJIT_SITE = http://luajit.org/download +LUAJIT_LICENSE = MIT +LUAJIT_LICENSE_FILES = COPYRIGHT + +LUAJIT_INSTALL_STAGING = YES + +LUAJIT_PROVIDES = luainterpreter + +ifeq ($(BR2_STATIC_LIBS),y) +LUAJIT_BUILDMODE = static +else +LUAJIT_BUILDMODE = dynamic +endif + +# The luajit build procedure requires the host compiler to have the +# same bitness as the target compiler. Therefore, on a x86 build +# machine, we can't build luajit for x86_64, which is checked in +# Config.in. When the target is a 32 bits target, we pass -m32 to +# ensure that even on 64 bits build machines, a compiler of the same +# bitness is used. Of course, this assumes that the 32 bits multilib +# libraries are installed. +ifeq ($(BR2_ARCH_IS_64),y) +LUAJIT_HOST_CC = $(HOSTCC) +else +LUAJIT_HOST_CC = $(HOSTCC) -m32 +endif + +# We unfortunately can't use TARGET_CONFIGURE_OPTS, because the luajit +# build system uses non conventional variable names. +define LUAJIT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" \ + STATIC_CC="$(TARGET_CC)" \ + DYNAMIC_CC="$(TARGET_CC) -fPIC" \ + TARGET_LD="$(TARGET_CC)" \ + TARGET_AR="$(TARGET_AR) rcus" \ + TARGET_STRIP=true \ + TARGET_CFLAGS="$(TARGET_CFLAGS)" \ + TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \ + HOST_CC="$(LUAJIT_HOST_CC)" \ + HOST_CFLAGS="$(HOST_CFLAGS)" \ + HOST_LDFLAGS="$(HOST_LDFLAGS)" \ + BUILDMODE=$(LUAJIT_BUILDMODE) \ + -C $(@D) amalg +endef + +define LUAJIT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" DESTDIR="$(STAGING_DIR)" LDCONFIG=true -C $(@D) install +endef + +define LUAJIT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="/usr" DESTDIR="$(TARGET_DIR)" LDCONFIG=true -C $(@D) install +endef + +define LUAJIT_INSTALL_SYMLINK + ln -fs luajit $(TARGET_DIR)/usr/bin/lua +endef +LUAJIT_POST_INSTALL_TARGET_HOOKS += LUAJIT_INSTALL_SYMLINK + +# host-efl package needs host-luajit to be linked dynamically. +define HOST_LUAJIT_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) PREFIX="$(HOST_DIR)" BUILDMODE=dynamic \ + TARGET_LDFLAGS="$(HOST_LDFLAGS)" \ + -C $(@D) amalg +endef + +define HOST_LUAJIT_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) PREFIX="$(HOST_DIR)" LDCONFIG=true -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/luajson/Config.in b/buildroot/package/luajson/Config.in new file mode 100644 index 0000000..c04aa7f --- /dev/null +++ b/buildroot/package/luajson/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUAJSON + bool "luajson" + # run-time dependency + select BR2_PACKAGE_LPEG + help + LuaJSON is a customizable JSON decoder/encoder + using LPEG for parsing. + + http://github.com/harningt/luajson diff --git a/buildroot/package/luajson/luajson.hash b/buildroot/package/luajson/luajson.hash new file mode 100644 index 0000000..36534fe --- /dev/null +++ b/buildroot/package/luajson/luajson.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 28a5928cf2e4fd79fa9a9aceaef5ebf1dccb1146489b7de4c2726f561700f01c luajson-1.3.4-1.src.rock diff --git a/buildroot/package/luajson/luajson.mk b/buildroot/package/luajson/luajson.mk new file mode 100644 index 0000000..81a9f81 --- /dev/null +++ b/buildroot/package/luajson/luajson.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luajson +# +################################################################################ + +LUAJSON_VERSION = 1.3.4-1 +LUAJSON_SUBDIR = luajson +LUAJSON_LICENSE = MIT +LUAJSON_LICENSE_FILES = $(LUAJSON_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lualogging/Config.in b/buildroot/package/lualogging/Config.in new file mode 100644 index 0000000..bb87f57 --- /dev/null +++ b/buildroot/package/lualogging/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LUALOGGING + bool "lualogging" + help + LuaLogging provides a simple API to use logging features in + Lua. Its design was based on log4j. LuaLogging currently + supports, through the use of appenders, console, file, rolling + file, email, socket and SQL outputs. + + http://www.keplerproject.org/lualogging/ diff --git a/buildroot/package/lualogging/lualogging.hash b/buildroot/package/lualogging/lualogging.hash new file mode 100644 index 0000000..8a6211e --- /dev/null +++ b/buildroot/package/lualogging/lualogging.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6ca3827c4903814626b96011e17ad99b42ecfa983b605aa75bf58f17e90ed58d lualogging-1.3.0-1.src.rock diff --git a/buildroot/package/lualogging/lualogging.mk b/buildroot/package/lualogging/lualogging.mk new file mode 100644 index 0000000..3444a29 --- /dev/null +++ b/buildroot/package/lualogging/lualogging.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# lualogging +# +################################################################################ + +LUALOGGING_VERSION = 1.3.0-1 +LUALOGGING_SUBDIR = lualogging +LUALOGGING_LICENSE = MIT +LUALOGGING_LICENSE_FILES = $(LUALOGGING_SUBDIR)/COPYRIGHT + +$(eval $(luarocks-package)) diff --git a/buildroot/package/luaossl/Config.in b/buildroot/package/luaossl/Config.in new file mode 100644 index 0000000..d8763e7 --- /dev/null +++ b/buildroot/package/luaossl/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LUAOSSL + bool "luaossl" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_OPENSSL + help + luaossl is a comprehensive binding to OpenSSL for Lua 5.1, + 5.2, and later. + + It includes support for certificate and key management, + key generation, signature verification, and deep bindings + to the distinguished name, alternative name, and X.509v3 + extension interfaces. It also binds OpenSSL's bignum, message + digest, HMAC, cipher, and CSPRNG interfaces. + + http://25thandclement.com/~william/projects/luaossl.html + +comment "luaossl needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/luaossl/luaossl.hash b/buildroot/package/luaossl/luaossl.hash new file mode 100644 index 0000000..8c91a1f --- /dev/null +++ b/buildroot/package/luaossl/luaossl.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f9c94c97579efddf8abad1e373e0fe0ecc93d00cd9d1bd49f48c5716c281a08b luaossl-20171028-0.src.rock diff --git a/buildroot/package/luaossl/luaossl.mk b/buildroot/package/luaossl/luaossl.mk new file mode 100644 index 0000000..26021a7 --- /dev/null +++ b/buildroot/package/luaossl/luaossl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# luaossl +# +################################################################################ + +LUAOSSL_VERSION_UPSTREAM = 20171028 +LUAOSSL_VERSION = $(LUAOSSL_VERSION_UPSTREAM)-0 +LUAOSSL_SUBDIR = luaossl-rel-$(LUAOSSL_VERSION_UPSTREAM) +LUAOSSL_LICENSE = MIT +LUAOSSL_LICENSE_FILES = $(LUAOSSL_SUBDIR)/LICENSE +LUAOSSL_DEPENDENCIES = openssl + +$(eval $(luarocks-package)) diff --git a/buildroot/package/luaposix/Config.in b/buildroot/package/luaposix/Config.in new file mode 100644 index 0000000..91abcb9 --- /dev/null +++ b/buildroot/package/luaposix/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_LUAPOSIX + bool "luaposix" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + # "bit32" is included in Lua 5.2+. luajit has an equivalent + # "bit" module, but since it has a different name, luaposix + # doesn't find it. + select BR2_PACKAGE_LUA_BIT32 if BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT + help + This is a POSIX binding for LuaJIT, Lua 5.1, 5.2 and 5.3; + like most libraries it simply binds to C APIs on the + underlying system, so it won't work on non-POSIX systems. + However, it does try to detect the level of POSIX conformance + of the underlying system and bind only available APIs. + + https://github.com/luaposix/luaposix diff --git a/buildroot/package/luaposix/luaposix.hash b/buildroot/package/luaposix/luaposix.hash new file mode 100644 index 0000000..b3984c1 --- /dev/null +++ b/buildroot/package/luaposix/luaposix.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ba0bc343783fc33958cd02a68cdbfd65430152d9f297f7ed92678b1a305bd5d7 luaposix-34.0.1.tar.gz diff --git a/buildroot/package/luaposix/luaposix.mk b/buildroot/package/luaposix/luaposix.mk new file mode 100644 index 0000000..779e707 --- /dev/null +++ b/buildroot/package/luaposix/luaposix.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# luaposix +# +################################################################################ + +LUAPOSIX_VERSION = 34.0.1 +LUAPOSIX_SITE = $(call github,luaposix,luaposix,release-v$(LUAPOSIX_VERSION)) +LUAPOSIX_LICENSE = MIT +LUAPOSIX_LICENSE_FILES = LICENSE +LUAPOSIX_DEPENDENCIES = luainterpreter host-lua + +define LUAPOSIX_BUILD_CMDS + (cd $(@D); \ + $(LUA_RUN) build-aux/luke \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LUA_INCDIR=$(STAGING_DIR)/usr/include \ + ) +endef + +define LUAPOSIX_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(LUA_RUN) build-aux/luke install \ + INST_LIBDIR="$(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER)" \ + INST_LUADIR="$(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)" \ + ) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/luarocks/luarocks.hash b/buildroot/package/luarocks/luarocks.hash new file mode 100644 index 0000000..27845a4 --- /dev/null +++ b/buildroot/package/luarocks/luarocks.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4d414d32fed5bb121c72d3ff1280b7f2dc9027a9bc012e41dfbffd5b519b362e luarocks-2.4.3.tar.gz diff --git a/buildroot/package/luarocks/luarocks.mk b/buildroot/package/luarocks/luarocks.mk new file mode 100644 index 0000000..e050cb5 --- /dev/null +++ b/buildroot/package/luarocks/luarocks.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# luarocks +# +################################################################################ + +LUAROCKS_VERSION = 2.4.3 +LUAROCKS_SITE = http://luarocks.org/releases +LUAROCKS_LICENSE = MIT +LUAROCKS_LICENSE_FILES = COPYING + +HOST_LUAROCKS_DEPENDENCIES = host-luainterpreter + +LUAROCKS_CONFIG_DIR = $(HOST_DIR)/etc/luarocks +LUAROCKS_CONFIG_FILE = $(LUAROCKS_CONFIG_DIR)/config-$(LUAINTERPRETER_ABIVER).lua +LUAROCKS_CFLAGS = $(TARGET_CFLAGS) -fPIC +ifeq ($(BR2_PACKAGE_LUA_5_3),y) +LUAROCKS_CFLAGS += -DLUA_COMPAT_5_2 +endif + +HOST_LUAROCKS_CONF_OPTS = \ + --prefix=$(HOST_DIR) \ + --sysconfdir=$(LUAROCKS_CONFIG_DIR) \ + --with-lua=$(HOST_DIR) + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +HOST_LUAROCKS_CONF_OPTS += --lua-suffix=jit +endif + +define HOST_LUAROCKS_CONFIGURE_CMDS + cd $(@D) && ./configure $(HOST_LUAROCKS_CONF_OPTS) +endef + +define HOST_LUAROCKS_INSTALL_CMDS + rm -f $(LUAROCKS_CONFIG_FILE) + $(MAKE1) -C $(@D) install \ + PREFIX=$(HOST_DIR) + echo "-- BR cross-compilation" >> $(LUAROCKS_CONFIG_FILE) + echo "variables = {" >> $(LUAROCKS_CONFIG_FILE) + echo " LUA_INCDIR = [[$(STAGING_DIR)/usr/include]]," >> $(LUAROCKS_CONFIG_FILE) + echo " LUA_LIBDIR = [[$(STAGING_DIR)/usr/lib]]," >> $(LUAROCKS_CONFIG_FILE) + echo " CC = [[$(TARGET_CC)]]," >> $(LUAROCKS_CONFIG_FILE) + echo " LD = [[$(TARGET_CC)]]," >> $(LUAROCKS_CONFIG_FILE) + echo " CFLAGS = [[$(LUAROCKS_CFLAGS)]]," >> $(LUAROCKS_CONFIG_FILE) + echo " LIBFLAG = [[-shared $(TARGET_LDFLAGS)]]," >> $(LUAROCKS_CONFIG_FILE) + echo "}" >> $(LUAROCKS_CONFIG_FILE) + echo "external_deps_dirs = { [[$(STAGING_DIR)/usr]] }" >> $(LUAROCKS_CONFIG_FILE) + echo "gcc_rpath = false" >> $(LUAROCKS_CONFIG_FILE) + echo "rocks_trees = { [[$(TARGET_DIR)/usr]] }" >> $(LUAROCKS_CONFIG_FILE) + echo "wrap_bin_scripts = false" >> $(LUAROCKS_CONFIG_FILE) + echo "deps_mode = [[none]]" >> $(LUAROCKS_CONFIG_FILE) +endef + +$(eval $(host-generic-package)) + +LUAROCKS_RUN_ENV = LUA_PATH="$(HOST_DIR)/share/lua/$(LUAINTERPRETER_ABIVER)/?.lua" +LUAROCKS_RUN_CMD = $(LUA_RUN) $(HOST_DIR)/bin/luarocks + +define LUAROCKS_FINALIZE_TARGET + rm -rf $(TARGET_DIR)/usr/lib/luarocks +endef + +# Apply to global variable directly, as pkg-generic does not +ifneq ($(BR2_PACKAGE_LUAJIT)$(BR2_PACKAGE_LUA),) +TARGET_FINALIZE_HOOKS += LUAROCKS_FINALIZE_TARGET +endif diff --git a/buildroot/package/luasec/Config.in b/buildroot/package/luasec/Config.in new file mode 100644 index 0000000..9391cd9 --- /dev/null +++ b/buildroot/package/luasec/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LUASEC + bool "luasec" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LUASOCKET + help + LuaSec is a binding for OpenSSL library to provide TLS/SSL + communication. + + http://www.inf.puc-rio.br/~brunoos/luasec/ diff --git a/buildroot/package/luasec/luasec.hash b/buildroot/package/luasec/luasec.hash new file mode 100644 index 0000000..9d721ed --- /dev/null +++ b/buildroot/package/luasec/luasec.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1d04e2f70bc055348dda3cc3566d27d8408094bc944aa5c6a4ae18bffe5c0007 luasec-0.6-1.src.rock diff --git a/buildroot/package/luasec/luasec.mk b/buildroot/package/luasec/luasec.mk new file mode 100644 index 0000000..28c4b2c --- /dev/null +++ b/buildroot/package/luasec/luasec.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# luasec +# +################################################################################ + +LUASEC_VERSION = 0.6-1 +LUASEC_SUBDIR = luasec +LUASEC_LICENSE = MIT +LUASEC_LICENSE_FILES = $(LUASEC_SUBDIR)/LICENSE +LUASEC_DEPENDENCIES = openssl + +$(eval $(luarocks-package)) diff --git a/buildroot/package/luasocket/Config.in b/buildroot/package/luasocket/Config.in new file mode 100644 index 0000000..45f959e --- /dev/null +++ b/buildroot/package/luasocket/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LUASOCKET + bool "luasocket" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + LuaSocket is the most comprehensive networking support library + for the Lua language. + It provides easy access to TCP, UDP, DNS, SMTP, + FTP, HTTP, MIME and much more. + + http://luaforge.net/projects/luasocket/ diff --git a/buildroot/package/luasocket/luasocket.hash b/buildroot/package/luasocket/luasocket.hash new file mode 100644 index 0000000..ad91f44 --- /dev/null +++ b/buildroot/package/luasocket/luasocket.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 453fc1d0e9b6a44bbada4290d565f840a5e96ba2d1b47562ba38bd9c7e82195a luasocket-3.0rc1-1.src.rock diff --git a/buildroot/package/luasocket/luasocket.mk b/buildroot/package/luasocket/luasocket.mk new file mode 100644 index 0000000..20927fc --- /dev/null +++ b/buildroot/package/luasocket/luasocket.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# luasocket +# +################################################################################ + +LUASOCKET_VERSION = 3.0rc1-1 +LUASOCKET_SUBDIR = luasocket-3.0-rc1 +LUASOCKET_LICENSE = MIT +LUASOCKET_LICENSE_FILES = $(LUASOCKET_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/luasql-sqlite3/Config.in b/buildroot/package/luasql-sqlite3/Config.in new file mode 100644 index 0000000..483d6a0 --- /dev/null +++ b/buildroot/package/luasql-sqlite3/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_LUASQL_SQLITE3 + bool "luasql-sqlite3" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + select BR2_PACKAGE_SQLITE + help + LuaSQL is a simple interface from Lua to a DBMS. + + http://www.keplerproject.org/luasql diff --git a/buildroot/package/luasql-sqlite3/luasql-sqlite3.hash b/buildroot/package/luasql-sqlite3/luasql-sqlite3.hash new file mode 100644 index 0000000..5728c8d --- /dev/null +++ b/buildroot/package/luasql-sqlite3/luasql-sqlite3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e98d4e997682097f5bc2859596b9615f4cb87438db23ceb4af5e36b4424524ab luasql-sqlite3-2.3.0-1.src.rock diff --git a/buildroot/package/luasql-sqlite3/luasql-sqlite3.mk b/buildroot/package/luasql-sqlite3/luasql-sqlite3.mk new file mode 100644 index 0000000..51178db --- /dev/null +++ b/buildroot/package/luasql-sqlite3/luasql-sqlite3.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# luasql-sqlite3 +# +################################################################################ + +LUASQL_SQLITE3_VERSION = 2.3.0-1 +LUASQL_SQLITE3_SUBDIR = luasql +LUASQL_SQLITE3_LICENSE = MIT +LUASQL_SQLITE3_LICENSE_FILES = $(LUASQL_SQLITE3_SUBDIR)/doc/us/license.html +LUASQL_SQLITE3_DEPENDENCIES = sqlite + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lugaru/0001-ImageIO-fix-invalid-conversion.patch b/buildroot/package/lugaru/0001-ImageIO-fix-invalid-conversion.patch new file mode 100644 index 0000000..6096477 --- /dev/null +++ b/buildroot/package/lugaru/0001-ImageIO-fix-invalid-conversion.patch @@ -0,0 +1,35 @@ +From 73e56ba8e91b6bae59220e6f25c1b7c15817edb5 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 12 Feb 2017 21:17:44 +0100 +Subject: [PATCH] ImageIO: fix invalid conversion + +Fixes: +Source/Utils/ImageIO.cpp:125:27: error: invalid conversion from 'int' to 'boolean' [-fpermissive] + cinfo.quantize_colors = 0; + ^ + +quantize_colors type is bool, so it must be initialized to TRUE or FALSE. + +Patch status: upsteam + +Signed-off-by: Romain Naour +--- + Source/Utils/ImageIO.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Source/Utils/ImageIO.cpp b/Source/Utils/ImageIO.cpp +index 706c201..c19a63e 100644 +--- a/Source/Utils/ImageIO.cpp ++++ b/Source/Utils/ImageIO.cpp +@@ -122,7 +122,7 @@ static bool load_jpg(const char* file_name, ImageRec& tex) + (void)jpeg_read_header(&cinfo, TRUE); + + cinfo.out_color_space = JCS_RGB; +- cinfo.quantize_colors = 0; ++ cinfo.quantize_colors = FALSE; + (void)jpeg_calc_output_dimensions(&cinfo); + (void)jpeg_start_decompress(&cinfo); + +-- +2.9.3 + diff --git a/buildroot/package/lugaru/0002-Fix-mismatched-usage-length-build-fail-on-g.patch b/buildroot/package/lugaru/0002-Fix-mismatched-usage-length-build-fail-on-g.patch new file mode 100644 index 0000000..9c362a9 --- /dev/null +++ b/buildroot/package/lugaru/0002-Fix-mismatched-usage-length-build-fail-on-g.patch @@ -0,0 +1,58 @@ +From 5a0c9f6358169b447840acdb721250ce932cb180 Mon Sep 17 00:00:00 2001 +From: Martin Erik Werner +Date: Wed, 8 Mar 2017 22:51:16 +0100 +Subject: [PATCH] Fix mismatched usage length, build fail on g++ +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The length of const option::Descriptor usage[] is intended to be +inferred based on the initialisation in Source/main.cpp, however, the +extern declaration in Source/Game.hpp hard-codes it to 13. + +Remove the hard-coded 13 in the extern declaration, in favour of the +inferred length. + +This also fixes the follwoing build failure with g++ (Debian 4.9.2-10) +4.9.2: +(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::index’ + }; + ^ +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::index’ [-Wmissing-field-initializers] +(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::type’ +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::type’ [-Wmissing-field-initializers] +(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::shortopt’ +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::shortopt’ [-Wmissing-field-initializers] +(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::longopt’ +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::longopt’ [-Wmissing-field-initializers] +(...)/Source/main.cpp:602:5: error: uninitialized const member ‘option::Descriptor::check_arg’ +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::check_arg’ [-Wmissing-field-initializers] +(...)/Source/main.cpp:602:5: warning: missing initializer for member ‘option::Descriptor::help’ [-Wmissing-field-initializers] +CMakeFiles/lugaru.dir/build.make:54: recipe for target 'CMakeFiles/lugaru.dir/Source/main.cpp.o' failed + +Signed-off-by: Martin Erik Werner + +[Romain: backport to v1.2] +Signed-off-by: Romain Naour + +(cherry picked from commit dd685fe9080c2853422d8272792691358ea07dfc) +--- + Source/Game.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Source/Game.hpp b/Source/Game.hpp +index 51232cc..9bb6adb 100644 +--- a/Source/Game.hpp ++++ b/Source/Game.hpp +@@ -234,7 +234,7 @@ enum optionIndex + /* Number of options + 1 */ + const int commandLineOptionsNumber = 10; + +-extern const option::Descriptor usage[13]; ++extern const option::Descriptor usage[]; + + extern option::Option commandLineOptions[commandLineOptionsNumber]; + extern option::Option* commandLineOptionsBuffer; +-- +2.9.4 + diff --git a/buildroot/package/lugaru/Config.in b/buildroot/package/lugaru/Config.in new file mode 100644 index 0000000..521c89a --- /dev/null +++ b/buildroot/package/lugaru/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_LUGARU + bool "lugaru" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LIBGL # libglu + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 # SDL2 OpenGL (GLX) + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + depends on BR2_USE_MMU # SDL2 OpenGL (GLX) + depends on !BR2_STATIC_LIBS # SDL2 + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBGLU # GL/glu.h + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_OPENAL + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_OPENGL + select BR2_PACKAGE_ZLIB + help + Lugaru (pronounced Loo-GAH-roo) is a cross-platform + third-person action game. The main character, Turner, is an + anthropomorphic rebel bunny rabbit with impressive combat + skills. In his quest to find those responsible for + slaughtering his village, he uncovers a far-reaching + conspiracy involving the corrupt leaders of the rabbit + republic and the starving wolves from a nearby den. Turner + takes it upon himself to fight against their plot and save + his fellow rabbits from slavery. + + https://osslugaru.gitlab.io/ + +comment "lugaru needs X11 and a toolchain w/ C++, OpenGL backend, gcc >= 4.7, NPTL, dynamic library" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_HAS_LIBGL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/lugaru/lugaru.hash b/buildroot/package/lugaru/lugaru.hash new file mode 100644 index 0000000..6ba2bca --- /dev/null +++ b/buildroot/package/lugaru/lugaru.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f3ea477caf78911c69939fbdc163f9f6517c7ef2267e716a0e050be1a166ef97 lugaru-1.2.tar.xz diff --git a/buildroot/package/lugaru/lugaru.mk b/buildroot/package/lugaru/lugaru.mk new file mode 100644 index 0000000..53797f4 --- /dev/null +++ b/buildroot/package/lugaru/lugaru.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# lugaru +# +################################################################################ + +LUGARU_VERSION = 1.2 +LUGARU_SITE = https://bitbucket.org/osslugaru/lugaru/downloads +LUGARU_SOURCE = lugaru-$(LUGARU_VERSION).tar.xz + +LUGARU_LICENSE = GPL-2.0+, CC-BY-SA-3.0 (Wolfire and Slib assets), \ + CC-BY-SA-4.0 (OSS Lugaru, Jendraz and Philtron R. assets) +LUGARU_LICENSE_FILES = COPYING.txt CONTENT-LICENSE.txt + +LUGARU_DEPENDENCIES = host-pkgconf jpeg libgl libglu libpng libvorbis \ + openal sdl2 zlib + +# Avoid incompatible posix_memalign declaration on x86 and x86_64 with +# musl. +# https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01425.html +ifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_i386)$(BR2_x86_64),y:y) +define LUGARU_REMOVE_PEDANTIC + $(SED) 's% -pedantic%%' $(@D)/CMakeLists.txt +endef +LUGARU_POST_PATCH_HOOKS += LUGARU_REMOVE_PEDANTIC +endif + +LUGARU_CONF_OPTS = -DSYSTEM_INSTALL=ON + +$(eval $(cmake-package)) diff --git a/buildroot/package/luksmeta/Config.in b/buildroot/package/luksmeta/Config.in new file mode 100644 index 0000000..ddc9b6f --- /dev/null +++ b/buildroot/package/luksmeta/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_LUKSMETA + bool "luksmeta" + depends on BR2_TOOLCHAIN_HAS_THREADS # cryptsetup -> lvm2 + depends on BR2_USE_MMU # cryptsetup -> lvm2 + depends on !BR2_STATIC_LIBS # cryptsetup -> lvm2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # cryptsetup -> json-c + select BR2_PACKAGE_CRYPTSETUP + help + LUKSMeta is a simple library and utility for storing + metadata in the LUKSv1 header. + + https://github.com/latchset/luksmeta + +comment "luksmeta needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/luksmeta/luksmeta.hash b/buildroot/package/luksmeta/luksmeta.hash new file mode 100644 index 0000000..f5d7564 --- /dev/null +++ b/buildroot/package/luksmeta/luksmeta.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 0154af98e7302a172060d83d24b6d87557a822c39ba3e911461bb1a6d3a22d51 luksmeta-8.tar.bz2 +sha256 4b72eb6b5a336cd3ec837cc2d6347c23bf7574168db6b4802267700b93021abf COPYING diff --git a/buildroot/package/luksmeta/luksmeta.mk b/buildroot/package/luksmeta/luksmeta.mk new file mode 100644 index 0000000..33671e4 --- /dev/null +++ b/buildroot/package/luksmeta/luksmeta.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# luksmeta +# +################################################################################ + +LUKSMETA_VERSION = 8 +LUKSMETA_SOURCE = luksmeta-$(LUKSMETA_VERSION).tar.bz2 +LUKSMETA_SITE = https://github.com/latchset/luksmeta/releases/download/v$(LUKSMETA_VERSION) +LUKSMETA_LICENSE = LGPL-2.1+ +LUKSMETA_LICENSE_FILES = COPYING +LUKSMETA_DEPENDENCIES = host-pkgconf cryptsetup +LUKSMETA_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/lunit/Config.in b/buildroot/package/lunit/Config.in new file mode 100644 index 0000000..d6c2c6b --- /dev/null +++ b/buildroot/package/lunit/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_LUNIT + bool "lunit" + depends on BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT + help + A unit testing framework for Lua. + + http://www.mroth.net/lunit/ + +comment "lunit needs a Lua 5.1 interpreter" + depends on !BR2_PACKAGE_LUA_5_1 + depends on !BR2_PACKAGE_LUAJIT diff --git a/buildroot/package/lunit/lunit.hash b/buildroot/package/lunit/lunit.hash new file mode 100644 index 0000000..9c8d53c --- /dev/null +++ b/buildroot/package/lunit/lunit.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b19854c685337ddcec2fe9c22113d2cd14715d52ccd2676abe2fa49b61a2ec4d lunit-0.5-2.src.rock diff --git a/buildroot/package/lunit/lunit.mk b/buildroot/package/lunit/lunit.mk new file mode 100644 index 0000000..34e22db --- /dev/null +++ b/buildroot/package/lunit/lunit.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# lunit +# +################################################################################ + +LUNIT_VERSION = 0.5-2 +LUNIT_LICENSE = MIT +LUNIT_LICENSE_FILES = $(LUNIT_SUBDIR)/LICENSE + +$(eval $(luarocks-package)) diff --git a/buildroot/package/lutok/Config.in b/buildroot/package/lutok/Config.in new file mode 100644 index 0000000..ab9c32b --- /dev/null +++ b/buildroot/package/lutok/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_LUTOK + bool "lutok" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_PACKAGE_LUAJIT + help + Lutok is a lightweight C++ API library for Lua. + + https://github.com/jmmv/lutok + +comment "lutok needs a toolchain w/ C++ and full Lua" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_PACKAGE_LUAJIT + depends on BR2_PACKAGE_HAS_LUAINTERPRETER diff --git a/buildroot/package/lutok/lutok.hash b/buildroot/package/lutok/lutok.hash new file mode 100644 index 0000000..0ec8988 --- /dev/null +++ b/buildroot/package/lutok/lutok.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2cec51efa0c8d65ace8b21eaa08384b77abc5087b46e785f78de1c21fb754cd5 lutok-0.4.tar.gz diff --git a/buildroot/package/lutok/lutok.mk b/buildroot/package/lutok/lutok.mk new file mode 100644 index 0000000..41abddb --- /dev/null +++ b/buildroot/package/lutok/lutok.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# lutok +# +################################################################################ + +LUTOK_VERSION = 0.4 +LUTOK_SITE = https://github.com/jmmv/lutok/releases/download/lutok-$(LUTOK_VERSION) +LUTOK_INSTALL_STAGING = YES +LUTOK_DEPENDENCIES = host-pkgconf lua +# --without-atf disables the atf-based lutok tests +LUTOK_CONF_OPTS = --without-doxygen --without-atf +LUTOK_LICENSE = BSD-3-Clause +LUTOK_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/luv/Config.in b/buildroot/package/luv/Config.in new file mode 100644 index 0000000..434cb3b --- /dev/null +++ b/buildroot/package/luv/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_LUV + bool "luv" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on BR2_USE_MMU # libuv + depends on !BR2_STATIC_LIBS # libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + select BR2_PACKAGE_LIBUV + help + libuv bindings for LuaJIT and Lua. + + https://github.com/luvit/luv + +comment "luv needs a toolchain w/ NPTL, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/buildroot/package/luv/luv.hash b/buildroot/package/luv/luv.hash new file mode 100644 index 0000000..44f4048 --- /dev/null +++ b/buildroot/package/luv/luv.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1051cfbdc361d5ea6d978fd71273b94c8a5007d76af498b456b297b18de9622c luv-1.9.1-1.tar.gz diff --git a/buildroot/package/luv/luv.mk b/buildroot/package/luv/luv.mk new file mode 100644 index 0000000..633bfe6 --- /dev/null +++ b/buildroot/package/luv/luv.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# luv +# +################################################################################ + +LUV_VERSION = 1.9.1-1 +LUV_SITE = https://github.com/luvit/luv/releases/download/$(LUV_VERSION) +LUV_LICENSE = Apache-2.0 +LUV_LICENSE_FILES = LICENSE.txt +LUV_DEPENDENCIES = libuv +LUV_INSTALL_STAGING = YES + +LUV_CONF_OPTS += \ + -DBUILD_MODULE=OFF \ + -DWITH_SHARED_LIBUV=ON \ + -DLUA_BUILD_TYPE=System + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +LUV_DEPENDENCIES += luajit +LUV_CONF_OPTS += \ + -DWITH_LUA_ENGINE=LuaJIT +else +LUV_DEPENDENCIES += lua +LUV_CONF_OPTS += \ + -DWITH_LUA_ENGINE=Lua +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/luvi/Config.in b/buildroot/package/luvi/Config.in new file mode 100644 index 0000000..c9fd417 --- /dev/null +++ b/buildroot/package/luvi/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_LUVI + bool "luvi" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on BR2_USE_MMU # libuv + depends on !BR2_STATIC_LIBS # libuv + depends on BR2_PACKAGE_LUAJIT + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_LUV + help + A project in-between luv and luvit. The goal of this is to + make building luvit and derivatives much easier. + + luvi extends LuaJIT with asynchronous I/O and several optional + modules to run Lua applications and build self-contained + binaries on systems that don't have a compiler. + + The luvi core can be extended with several Lua modules by + adding its bundled Lua binding libraries. + To get the Lua module... + * 'rex' select PCRE (BR2_PACKAGE_PCRE) + * 'ssl' select OpenSSL (BR2_PACKAGE_OPENSSL) + * 'zlib' select zlib (BR2_PACKAGE_ZLIB) + + https://github.com/luvit/luvi + +comment "luvi needs a toolchain w/ NPTL, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +comment "luvi needs LuaJIT" + depends on !BR2_PACKAGE_LUAJIT diff --git a/buildroot/package/luvi/luvi.hash b/buildroot/package/luvi/luvi.hash new file mode 100644 index 0000000..e2239b6 --- /dev/null +++ b/buildroot/package/luvi/luvi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ce9a1fb762e61267618ddea9ea129170fd543bb918c382b71cb35985d0024c42 luvi-src-v2.7.6.tar.gz diff --git a/buildroot/package/luvi/luvi.mk b/buildroot/package/luvi/luvi.mk new file mode 100644 index 0000000..a2bc218 --- /dev/null +++ b/buildroot/package/luvi/luvi.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# luvi +# +################################################################################ + +LUVI_VERSION = v2.7.6 +LUVI_SOURCE = luvi-src-$(LUVI_VERSION).tar.gz +LUVI_SITE = https://github.com/luvit/luvi/releases/download/$(LUVI_VERSION) +LUVI_LICENSE = Apache-2.0 +LUVI_LICENSE_FILES = LICENSE.txt +LUVI_DEPENDENCIES = libuv luajit luv host-luajit + +# Dispatch all architectures of LuaJIT +ifeq ($(BR2_i386),y) +LUVI_TARGET_ARCH = x86 +else ifeq ($(BR2_x86_64),y) +LUVI_TARGET_ARCH = x64 +else ifeq ($(BR2_powerpc),y) +LUVI_TARGET_ARCH = ppc +else ifeq ($(BR2_arm)$(BR2_armeb),y) +LUVI_TARGET_ARCH = arm +else ifeq ($(BR2_mips),y) +LUVI_TARGET_ARCH = mips +else ifeq ($(BR2_mipsel),y) +LUVI_TARGET_ARCH = mipsel +else +LUVI_TARGET_ARCH = $(BR2_ARCH) +endif + +# Bundled lua bindings have to be linked statically into the luvi executable +LUVI_CONF_OPTS = \ + -DBUILD_SHARED_LIBS=OFF \ + -DWithSharedLibluv=ON \ + -DTARGET_ARCH=$(LUVI_TARGET_ARCH) \ + -DLUA_PATH=$(HOST_DIR)/share/luajit-$(LUAJIT_VERSION)/?.lua + +# Add "rex" module (PCRE via bundled lrexlib) +ifeq ($(BR2_PACKAGE_PCRE),y) +LUVI_DEPENDENCIES += pcre +LUVI_CONF_OPTS += -DWithPCRE=ON -DWithSharedPCRE=ON +else +LUVI_CONF_OPTS += -DWithPCRE=OFF -DWithSharedPCRE=OFF +endif + +# Add "ssl" module (via bundled lua-openssl) +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LUVI_DEPENDENCIES += openssl +LUVI_CONF_OPTS += -DWithOpenSSL=ON -DWithOpenSSLASM=ON -DWithSharedOpenSSL=ON +else +LUVI_CONF_OPTS += -DWithOpenSSL=OFF -DWithOpenSSLASM=OFF -DWithSharedOpenSSL=OFF +endif + +# Add "zlib" module (via bundled lua-zlib) +ifeq ($(BR2_PACKAGE_ZLIB),y) +LUVI_DEPENDENCIES += zlib +LUVI_CONF_OPTS += -DWithZLIB=ON -DWithSharedZLIB=ON +else +LUVI_CONF_OPTS += -DWithZLIB=OFF -DWithSharedZLIB=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/lvm2/Config.in b/buildroot/package/lvm2/Config.in new file mode 100644 index 0000000..0dd6d53 --- /dev/null +++ b/buildroot/package/lvm2/Config.in @@ -0,0 +1,53 @@ +config BR2_PACKAGE_LVM2 + bool "lvm2 & device mapper" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # needs fork() + depends on !BR2_STATIC_LIBS # It fails to build statically + help + This is LVM2, the rewrite of The Linux Logical Volume Manager. + LVM supports enterprise level volume management of disk and + disk subsystems by grouping arbitrary disks into volume + groups. The total capacity of volume groups can be allocated + to logical volumes, which are accessed as regular block + devices. + + The Linux Kernel Device Mapper is the LVM + (Linux Logical Volume Management) Team's implementation of a + minimalistic kernel-space driver that handles volume + management, while keeping knowledge of the underlying device + layout in user-space. This makes it useful for not only LVM, + but EVMS, software raid, and other drivers that create + "virtual" block devices. + + http://www.sourceware.org/lvm2/ + +if BR2_PACKAGE_LVM2 + +config BR2_PACKAGE_LVM2_STANDARD_INSTALL + bool "standard install instead of only dmsetup" + default y if !BR2_PACKAGE_LVM2_DMSETUP_ONLY # legacy 2013.11 + # http://lists.busybox.net/pipermail/buildroot/2016-August/170592.html + depends on !BR2_TOOLCHAIN_USES_MUSL + help + Install the standard suite of lvm2 programs. When this option + is not set, only dmsetup is installed. + +comment "lvm2 standard install needs a glibc or uClibc toolchain" + depends on BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_LVM2_APP_LIBRARY + bool "install application library" + # http://lists.busybox.net/pipermail/buildroot/2016-August/170592.html + depends on !BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_LVM2_STANDARD_INSTALL + help + Install application library (liblvm2app). + +comment "lvm2 application library needs a glibc or uClibc toolchain" + depends on BR2_TOOLCHAIN_USES_MUSL + +endif + +comment "lvm2 needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/lvm2/lvm2.hash b/buildroot/package/lvm2/lvm2.hash new file mode 100644 index 0000000..9f7a6c6 --- /dev/null +++ b/buildroot/package/lvm2/lvm2.hash @@ -0,0 +1,2 @@ +# From ftp://sources.redhat.com/pub/lvm2/releases/sha512.sum +sha512 c2ea8beafe006abf9282f51ec98600fd0ebff816d53c10ecbb19bbf336ada4825135cf9c92ccd364afb18f8b1d7e163eff5bdec8dfdd70dfb9ba45db2f6bdd5e LVM2.2.02.173.tgz diff --git a/buildroot/package/lvm2/lvm2.mk b/buildroot/package/lvm2/lvm2.mk new file mode 100644 index 0000000..20e0dd0 --- /dev/null +++ b/buildroot/package/lvm2/lvm2.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# lvm2 +# +################################################################################ + +LVM2_VERSION = 2.02.173 +LVM2_SOURCE = LVM2.$(LVM2_VERSION).tgz +LVM2_SITE = ftp://sources.redhat.com/pub/lvm2/releases +LVM2_INSTALL_STAGING = YES +LVM2_LICENSE = GPL-2.0, LGPL-2.1 +LVM2_LICENSE_FILES = COPYING COPYING.LIB + +# Make sure that binaries and libraries are installed with write +# permissions for the owner. We disable NLS because it's broken, and +# the package anyway doesn't provide any translation files. +LVM2_CONF_OPTS += \ + --enable-write_install \ + --enable-pkgconfig \ + --enable-cmdlib \ + --enable-dmeventd \ + --disable-nls + +LVM2_DEPENDENCIES += host-pkgconf + +# LVM2 uses autoconf, but not automake, and the build system does not +# take into account the toolchain passed at configure time. +LVM2_MAKE_ENV = $(TARGET_CONFIGURE_OPTS) + +ifeq ($(BR2_PACKAGE_READLINE),y) +LVM2_DEPENDENCIES += readline +else +# v2.02.44: disable readline usage, or binaries are linked against provider +# of "tgetent" (=> ncurses) even if it's not used.. +LVM2_CONF_OPTS += --disable-readline +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LVM2_CONF_OPTS += --enable-selinux +LVM2_DEPENDENCIES += libselinux +else +LVM2_CONF_OPTS += --disable-selinux +endif + +ifeq ($(BR2_PACKAGE_LVM2_STANDARD_INSTALL),) +LVM2_MAKE_OPTS = device-mapper +LVM2_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install_device-mapper +LVM2_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install_device-mapper +endif + +ifeq ($(BR2_PACKAGE_LVM2_APP_LIBRARY),y) +LVM2_CONF_OPTS += --enable-applib +else +LVM2_CONF_OPTS += --disable-applib +endif + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +LVM2_CONF_ENV += ac_cv_flag_HAVE_PIE=no +endif + +HOST_LVM2_DEPENDENCIES = host-pkgconf +HOST_LVM2_CONF_OPTS = \ + --enable-write_install \ + --enable-pkgconfig \ + --disable-cmdlib \ + --disable-dmeventd \ + --disable-applib \ + --disable-fsadm \ + --disable-readline \ + --disable-selinux +HOST_LVM2_MAKE_OPTS = device-mapper +HOST_LVM2_INSTALL_OPTS = install_device-mapper + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/lxc/0001-Fix-compilation-on-toolchain-without-prlimit.patch b/buildroot/package/lxc/0001-Fix-compilation-on-toolchain-without-prlimit.patch new file mode 100644 index 0000000..031f775 --- /dev/null +++ b/buildroot/package/lxc/0001-Fix-compilation-on-toolchain-without-prlimit.patch @@ -0,0 +1,98 @@ +From f48b5fd8ab03c200eaf5e3a9b03bcd01b2659cf3 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 2 Nov 2017 16:00:33 +0100 +Subject: [PATCH] Fix compilation on toolchain without prlimit + +Some toolchains which are not bionic like uclibc does not support +prlimit or prlimit64. In this case, return an error. +Moreover, if prlimit64 is available, use lxc implementation of prlimit. + +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 4 ++++ + src/lxc/Makefile.am | 6 ++++++ + src/lxc/conf.c | 12 +++++++++--- + 3 files changed, 19 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 642b78e7..63df7466 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -671,6 +671,10 @@ AC_CHECK_FUNCS([prlimit], + AM_CONDITIONAL(HAVE_PRLIMIT, true) + AC_DEFINE(HAVE_PRLIMIT,1,[Have prlimit]), + AM_CONDITIONAL(HAVE_PRLIMIT, false)) ++AC_CHECK_FUNCS([prlimit64], ++ AM_CONDITIONAL(HAVE_PRLIMIT64, true) ++ AC_DEFINE(HAVE_PRLIMIT64,1,[Have prlimit64]), ++ AM_CONDITIONAL(HAVE_PRLIMIT64, false)) + + # Check for some libraries + AC_SEARCH_LIBS(sem_open, [rt pthread]) +diff --git a/src/lxc/Makefile.am b/src/lxc/Makefile.am +index fff32ae4..8f0c11ec 100644 +--- a/src/lxc/Makefile.am ++++ b/src/lxc/Makefile.am +@@ -45,7 +45,10 @@ noinst_HEADERS += \ + ../include/ifaddrs.h \ + ../include/openpty.h \ + ../include/lxcmntent.h ++endif ++ + if !HAVE_PRLIMIT ++if HAVE_PRLIMIT64 + noinst_HEADERS += ../include/prlimit.h + endif + endif +@@ -143,7 +146,10 @@ liblxc_la_SOURCES += \ + ../include/ifaddrs.c ../include/ifaddrs.h \ + ../include/openpty.c ../include/openpty.h \ + ../include/lxcmntent.c ../include/lxcmntent.h ++endif ++ + if !HAVE_PRLIMIT ++if HAVE_PRLIMIT64 + liblxc_la_SOURCES += ../include/prlimit.c ../include/prlimit.h + endif + endif +diff --git a/src/lxc/conf.c b/src/lxc/conf.c +index 44d97843..8a66f2d0 100644 +--- a/src/lxc/conf.c ++++ b/src/lxc/conf.c +@@ -97,13 +97,14 @@ + + #if IS_BIONIC + #include <../include/lxcmntent.h> +-#ifndef HAVE_PRLIMIT +-#include <../include/prlimit.h> +-#endif + #else + #include + #endif + ++#if !defined(HAVE_PRLIMIT) && defined(HAVE_PRLIMIT64) ++#include <../include/prlimit.h> ++#endif ++ + lxc_log_define(lxc_conf, lxc); + + #if HAVE_LIBCAP +@@ -2399,10 +2400,15 @@ int setup_resource_limits(struct lxc_list *limits, pid_t pid) { + return -1; + } + ++#if HAVE_PRLIMIT || HAVE_PRLIMIT64 + if (prlimit(pid, resid, &lim->limit, NULL) != 0) { + ERROR("failed to set limit %s: %s", lim->resource, strerror(errno)); + return -1; + } ++#else ++ ERROR("Cannot set limit %s as prlimit is missing", lim->resource); ++ return -1; ++#endif + } + return 0; + } +-- +2.14.1 + diff --git a/buildroot/package/lxc/0002-lxc-start.c-Fix-legacy-PR_-G-S-ET_NO_NEW_PRIVS-handl.patch b/buildroot/package/lxc/0002-lxc-start.c-Fix-legacy-PR_-G-S-ET_NO_NEW_PRIVS-handl.patch new file mode 100644 index 0000000..a11f785 --- /dev/null +++ b/buildroot/package/lxc/0002-lxc-start.c-Fix-legacy-PR_-G-S-ET_NO_NEW_PRIVS-handl.patch @@ -0,0 +1,49 @@ +From 995accccbb07d59381aa60939cd44b41dc092dda Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Mon, 6 Nov 2017 09:35:48 +0100 +Subject: [PATCH] lxc/start.c: Fix legacy PR_{G,S}ET_NO_NEW_PRIVS handling +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The configure checks for these use AC_CHECK_DECLS, which define the symbol +to 0 if not available - So adjust the code to match. From the autoconf +manual: + +https://www.gnu.org/software/autoconf/manual/autoconf-2.65/html_node/Generic-Declarations.html) + +For each of the symbols (comma-separated list), define HAVE_DECL_symbol (in +all capitals) to ‘1’ if symbol is declared, otherwise to ‘0’. + +[Submitted upstream: https://github.com/lxc/lxc/pull/1901] +Signed-off-by: Peter Korsgaard +--- + src/lxc/start.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/lxc/start.c b/src/lxc/start.c +index 2632a9b1..fe76b235 100644 +--- a/src/lxc/start.c ++++ b/src/lxc/start.c +@@ -52,15 +52,15 @@ + #include + #endif + +-#ifndef HAVE_DECL_PR_CAPBSET_DROP ++#if !HAVE_DECL_PR_CAPBSET_DROP + #define PR_CAPBSET_DROP 24 + #endif + +-#ifndef HAVE_DECL_PR_SET_NO_NEW_PRIVS ++#if !HAVE_DECL_PR_SET_NO_NEW_PRIVS + #define PR_SET_NO_NEW_PRIVS 38 + #endif + +-#ifndef HAVE_DECL_PR_GET_NO_NEW_PRIVS ++#if !HAVE_DECL_PR_GET_NO_NEW_PRIVS + #define PR_GET_NO_NEW_PRIVS 39 + #endif + +-- +2.11.0 + diff --git a/buildroot/package/lxc/Config.in b/buildroot/package/lxc/Config.in new file mode 100644 index 0000000..d90e788 --- /dev/null +++ b/buildroot/package/lxc/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_LXC + bool "lxc" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + # build system forcefully builds a shared library + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # setns() system call + help + Linux Containers (LXC), provides the ability to group and + isolate of a set of processes in a jail by virtualizing and + accounting the kernel resources. It is similar to + Linux-Vserver or Openvz. + + https://linuxcontainers.org/ + +comment "lxc needs a toolchain w/ threads, headers >= 3.0, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 \ + || BR2_STATIC_LIBS diff --git a/buildroot/package/lxc/lxc.hash b/buildroot/package/lxc/lxc.hash new file mode 100644 index 0000000..d8526e9 --- /dev/null +++ b/buildroot/package/lxc/lxc.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 68663a67450a8d6734e137eac54cc7077209fb15c456eec401a2c26e6386eff6 lxc-2.1.1.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/lxc/lxc.mk b/buildroot/package/lxc/lxc.mk new file mode 100644 index 0000000..a65c166 --- /dev/null +++ b/buildroot/package/lxc/lxc.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# lxc +# +################################################################################ + +LXC_VERSION = 2.1.1 +LXC_SITE = https://linuxcontainers.org/downloads/lxc +LXC_LICENSE = LGPL-2.1+ +LXC_LICENSE_FILES = COPYING +LXC_DEPENDENCIES = host-pkgconf +LXC_INSTALL_STAGING = YES +# We're patching configure.ac +LXC_AUTORECONF = YES + +LXC_CONF_OPTS = --disable-apparmor --with-distro=buildroot \ + --disable-python --disable-werror \ + $(if $(BR2_PACKAGE_BASH),,--disable-bash) + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +LXC_CONF_OPTS += --enable-gnutls +LXC_DEPENDENCIES += gnutls +else +LXC_CONF_OPTS += --disable-gnutls +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +LXC_CONF_OPTS += --enable-capabilities +LXC_DEPENDENCIES += libcap +else +LXC_CONF_OPTS += --disable-capabilities +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +LXC_CONF_OPTS += --enable-seccomp +LXC_DEPENDENCIES += libseccomp +else +LXC_CONF_OPTS += --disable-seccomp +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +LXC_CONF_OPTS += --enable-selinux +LXC_DEPENDENCIES += libselinux +else +LXC_CONF_OPTS += --disable-selinux +endif + +ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y) +LXC_CONF_OPTS += --enable-lua +LXC_DEPENDENCIES += luainterpreter +ifeq ($(BR2_PACKAGE_LUAJIT),y) +# By default, lxc will only search for lua.pc +LXC_CONF_OPTS += --with-lua-pc=luajit +endif +else +LXC_CONF_OPTS += --disable-lua +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/lynx/0001-src-chrtrans-don-t-build-host-tools-with-target-LDFL.patch b/buildroot/package/lynx/0001-src-chrtrans-don-t-build-host-tools-with-target-LDFL.patch new file mode 100644 index 0000000..cc057ce --- /dev/null +++ b/buildroot/package/lynx/0001-src-chrtrans-don-t-build-host-tools-with-target-LDFL.patch @@ -0,0 +1,41 @@ +From bb47abe9e7996147f6b7b325f5c9b2143abf8f13 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 7 May 2018 22:00:52 +0200 +Subject: [PATCH] src/chrtrans: don't build host tools with target LDFLAGS + +In a cross-compilation context, the LDFLAGS variable contains linker +flags used when building things for the target. However, the makeuctb +tool is built for the host machine, and therefore should not use the +same LDFLAGS as the target, which is why BUILD_LDFLAGS exist. + +Using LDFLAGS when building a tool for the host can cause problems +when some flags in LDFLAGS are not supported by the host machine. For +example, if you're linking statically lynx for the target, but the +build machine does not support static linking: + +gcc -I../.. -I../../src -I../../src/chrtrans -I../../WWW/Library/Implementation -I../../ -static -o makeuctb makeuctb.o +/usr/bin/ld: cannot find -lc +collect2: error: ld returned 1 exit status + +Signed-off-by: Thomas Petazzoni +Upstream-status: submitted on the mailing list +--- + src/chrtrans/makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/chrtrans/makefile.in b/src/chrtrans/makefile.in +index aab358f..6e0ef03 100644 +--- a/src/chrtrans/makefile.in ++++ b/src/chrtrans/makefile.in +@@ -123,7 +123,7 @@ OBJS = makeuctb$o + C_SRC = $(OBJS:$o=.c) + + $(MAKEUCTB) : $(OBJS) +- $(BUILD_CC) $(CC_OPTS) $(LDFLAGS) $(BUILD_LDFLAGS) -o $@ $(OBJS) $(INTLLIB) $(BUILD_LIBS) ++ $(BUILD_CC) $(CC_OPTS) $(BUILD_LDFLAGS) -o $@ $(OBJS) $(INTLLIB) $(BUILD_LIBS) + + makeuctb$o : $(srcdir)/UCkd.h $(srcdir)/makeuctb.c + +-- +2.14.3 + diff --git a/buildroot/package/lynx/Config.in b/buildroot/package/lynx/Config.in new file mode 100644 index 0000000..a338f83 --- /dev/null +++ b/buildroot/package/lynx/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LYNX + bool "lynx" + depends on BR2_USE_MMU + select BR2_PACKAGE_SLANG if !BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_GNUTLS + help + The Text Web-Browser. + + http://lynx.invisible-island.net/ diff --git a/buildroot/package/lynx/lynx.hash b/buildroot/package/lynx/lynx.hash new file mode 100644 index 0000000..c39475a --- /dev/null +++ b/buildroot/package/lynx/lynx.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 04318a100b052d079d0018fa371aa28cfb41ab68db3a959f3b75c2170eea1bc8 lynx2.8.9dev.16.tar.bz2 +sha256 8406a30ff3134ec23cf752d1ceda92ddaabbe41b4f2dc07ea3cfa139de12d6d6 COPYING diff --git a/buildroot/package/lynx/lynx.mk b/buildroot/package/lynx/lynx.mk new file mode 100644 index 0000000..a95326a --- /dev/null +++ b/buildroot/package/lynx/lynx.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# lynx +# +################################################################################ + +LYNX_VERSION = 2.8.9dev.16 +LYNX_SOURCE = lynx$(LYNX_VERSION).tar.bz2 +LYNX_SITE = ftp://ftp.invisible-island.net/lynx/tarballs +LYNX_LICENSE = GPL-2.0 +LYNX_LICENSE_FILES = COPYING + +LYNX_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_PACKAGE_NCURSES),y) +LYNX_DEPENDENCIES += ncurses +LYNX_CONF_OPTS += --with-screen=ncurses$(if $(BR2_PACKAGE_NCURSES_WCHAR),w) +else ifeq ($(BR2_PACKAGE_SLANG),y) +LYNX_DEPENDENCIES += slang +LYNX_CONF_OPTS += --with-screen=slang +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LYNX_DEPENDENCIES += openssl +LYNX_CONF_OPTS += --with-ssl +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +LYNX_DEPENDENCIES += gnutls +LYNX_CONF_OPTS += --with-gnutls +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +LYNX_DEPENDENCIES += zlib +LYNX_CONF_OPTS += --with-zlib +else +LYNX_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/lz4/Config.in b/buildroot/package/lz4/Config.in new file mode 100644 index 0000000..9f12299 --- /dev/null +++ b/buildroot/package/lz4/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LZ4 + bool "lz4" + help + LZ4 is a very fast lossless compression algorithm, providing + compression speed at 400 MB/s per core, scalable with + multi-cores CPU. It also features an extremely fast decoder, + with speed in multiple GB/s per core, typically reaching RAM + speed limits on multi-core systems. + + http://www.lz4.org/ diff --git a/buildroot/package/lz4/lz4.hash b/buildroot/package/lz4/lz4.hash new file mode 100644 index 0000000..5048503 --- /dev/null +++ b/buildroot/package/lz4/lz4.hash @@ -0,0 +1,2 @@ +# sha256 locally computed +sha256 0190cacd63022ccb86f44fa5041dc6c3804407ad61550ca21c382827319e7e7e lz4-v1.7.5.tar.gz diff --git a/buildroot/package/lz4/lz4.mk b/buildroot/package/lz4/lz4.mk new file mode 100644 index 0000000..de8c311 --- /dev/null +++ b/buildroot/package/lz4/lz4.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# lz4 +# +################################################################################ + +LZ4_VERSION = v1.7.5 +LZ4_SITE = $(call github,lz4,lz4,$(LZ4_VERSION)) +LZ4_INSTALL_STAGING = YES +LZ4_LICENSE = BSD-2-Clause (library), GPL-2.0+ (programs) +LZ4_LICENSE_FILES = lib/LICENSE programs/COPYING + +ifeq ($(BR2_STATIC_LIBS),y) +define LZ4_DISABLE_SHARED + $(SED) '/SHARED/d' $(@D)/lib/Makefile +endef +LZ4_POST_PATCH_HOOKS += LZ4_DISABLE_SHARED +endif + +define HOST_LZ4_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) all +endef + +define HOST_LZ4_INSTALL_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) PREFIX=$(HOST_DIR) \ + install -C $(@D) +endef + +define LZ4_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) all +endef + +define LZ4_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(STAGING_DIR) \ + PREFIX=/usr install -C $(@D) +endef + +define LZ4_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) \ + PREFIX=/usr install -C $(@D) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/lzip/Config.in b/buildroot/package/lzip/Config.in new file mode 100644 index 0000000..d406e77 --- /dev/null +++ b/buildroot/package/lzip/Config.in @@ -0,0 +1,15 @@ +comment "lzip needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_LZIP + bool "lzip" + depends on BR2_INSTALL_LIBSTDCPP + help + Lzip is a lossless data compressor with a user interface + similar to the one of gzip or bzip2. + Lzip is about as fast as gzip, compresses most files more than + bzip2, and is better than both from a data recovery + perspective. Lzip is a clean implementation of the LZMA + algorithm. + + http://www.nongnu.org/lzip/lzip.html diff --git a/buildroot/package/lzip/lzip.hash b/buildroot/package/lzip/lzip.hash new file mode 100644 index 0000000..e074c76 --- /dev/null +++ b/buildroot/package/lzip/lzip.hash @@ -0,0 +1,2 @@ +# From http://lists.nongnu.org/archive/html/lzip-bug/2017-05/msg00000.html +sha256 ffadc4f56be1bc0d3ae155ec4527bd003133bdc703a753b2cc683f610e646ba9 lzip-1.19.tar.gz diff --git a/buildroot/package/lzip/lzip.mk b/buildroot/package/lzip/lzip.mk new file mode 100644 index 0000000..b7ba5dd --- /dev/null +++ b/buildroot/package/lzip/lzip.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# lzip +# +################################################################################ + +LZIP_VERSION = 1.19 +LZIP_SITE = http://download.savannah.gnu.org/releases/lzip +LZIP_LICENSE = GPL-2.0+ +LZIP_LICENSE_FILES = COPYING + +define LZIP_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) ./configure --prefix=/usr \ + $(TARGET_CONFIGURE_OPTS) ) +endef + +define HOST_LZIP_CONFIGURE_CMDS + (cd $(@D); $(HOST_MAKE_ENV) ./configure --prefix=$(HOST_DIR) \ + $(HOST_CONFIGURE_OPTS) ) +endef + +define LZIP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_LZIP_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define LZIP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define HOST_LZIP_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +# It's not autotools-based +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/lzlib/Config.in b/buildroot/package/lzlib/Config.in new file mode 100644 index 0000000..59a2e6d --- /dev/null +++ b/buildroot/package/lzlib/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_LZLIB + bool "lzlib" + depends on BR2_PACKAGE_LUA + select BR2_PACKAGE_ZLIB + help + This package provides a library to access zlib library + functions and also to read/write gzip files using an + interface similar to the base io package. + + https://github.com/LuaDist/lzlib diff --git a/buildroot/package/lzlib/lzlib.hash b/buildroot/package/lzlib/lzlib.hash new file mode 100644 index 0000000..f983862 --- /dev/null +++ b/buildroot/package/lzlib/lzlib.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cbb0cac5825e940b4ea2f31a336d2aaf6db39847d456920afd8e443804420dbb lzlib-0.4.3.tar.gz diff --git a/buildroot/package/lzlib/lzlib.mk b/buildroot/package/lzlib/lzlib.mk new file mode 100644 index 0000000..f468a1c --- /dev/null +++ b/buildroot/package/lzlib/lzlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# lzlib +# +################################################################################ + +LZLIB_VERSION = 0.4.3 +LZLIB_SITE = $(call github,LuaDist,lzlib,$(LZLIB_VERSION)) +LZLIB_DEPENDENCIES = lua zlib +LZLIB_LICENSE = MIT +LZLIB_CONF_OPTS = -DINSTALL_CMOD="/usr/lib/lua/$(LUAINTERPRETER_ABIVER)" \ + -DINSTALL_LMOD="/usr/share/lua/$(LUAINTERPRETER_ABIVER)" + +$(eval $(cmake-package)) diff --git a/buildroot/package/lzma/0001-Remove-static-from-LDFLAGS.patch b/buildroot/package/lzma/0001-Remove-static-from-LDFLAGS.patch new file mode 100644 index 0000000..9a33e44 --- /dev/null +++ b/buildroot/package/lzma/0001-Remove-static-from-LDFLAGS.patch @@ -0,0 +1,68 @@ +From 1b33f6d13e5c25a2500ee312068c08a3d3811a5f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Vincent=20Stehl=C3=A9?= +Date: Wed, 3 Dec 2014 21:32:02 +0100 +Subject: [PATCH] Remove -static from LDFLAGS +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Buildroot does not enable static libraries by default for host builds. Having +-static hardcoded in the LDFLAGS breaks the build, so remove it. + +Signed-off-by: Vincent Stehlé +--- + src/lzmadec/Makefile.am | 1 - + src/lzmadec/Makefile.in | 1 - + src/lzmainfo/Makefile.am | 1 - + src/lzmainfo/Makefile.in | 1 - + 4 files changed, 4 deletions(-) + +diff --git a/src/lzmadec/Makefile.am b/src/lzmadec/Makefile.am +index 7322b2a..13edec8 100644 +--- a/src/lzmadec/Makefile.am ++++ b/src/lzmadec/Makefile.am +@@ -2,6 +2,5 @@ bin_PROGRAMS = lzmadec + lzmadec_SOURCES = lzmadec.c + lzmadec_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la + AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec +-AM_LDFLAGS = -static + + dist_man_MANS = lzmadec.1 +diff --git a/src/lzmadec/Makefile.in b/src/lzmadec/Makefile.in +index 5af9240..4ed1de1 100644 +--- a/src/lzmadec/Makefile.in ++++ b/src/lzmadec/Makefile.in +@@ -185,7 +185,6 @@ top_srcdir = @top_srcdir@ + lzmadec_SOURCES = lzmadec.c + lzmadec_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la + AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec +-AM_LDFLAGS = -static + dist_man_MANS = lzmadec.1 + all: all-am + +diff --git a/src/lzmainfo/Makefile.am b/src/lzmainfo/Makefile.am +index b5b01ec..e280bff 100644 +--- a/src/lzmainfo/Makefile.am ++++ b/src/lzmainfo/Makefile.am +@@ -2,6 +2,5 @@ bin_PROGRAMS = lzmainfo + lzmainfo_SOURCES = lzmainfo.c + lzmainfo_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la + AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec +-AM_LDFLAGS = -static + + dist_man_MANS = lzmainfo.1 +diff --git a/src/lzmainfo/Makefile.in b/src/lzmainfo/Makefile.in +index 6a2127a..f1f3441 100644 +--- a/src/lzmainfo/Makefile.in ++++ b/src/lzmainfo/Makefile.in +@@ -185,7 +185,6 @@ top_srcdir = @top_srcdir@ + lzmainfo_SOURCES = lzmainfo.c + lzmainfo_LDADD = @top_builddir@/src/liblzmadec/liblzmadec.la + AM_CPPFLAGS = -I@top_srcdir@/src/liblzmadec +-AM_LDFLAGS = -static + dist_man_MANS = lzmainfo.1 + all: all-am + +-- +2.1.3 + diff --git a/buildroot/package/lzma/lzma.hash b/buildroot/package/lzma/lzma.hash new file mode 100644 index 0000000..e73517c --- /dev/null +++ b/buildroot/package/lzma/lzma.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 02aa57f995d15b7acb7c2496d88a39fb0124ea00bf027cc61dd24eddb5942dff lzma-4.32.7.tar.xz diff --git a/buildroot/package/lzma/lzma.mk b/buildroot/package/lzma/lzma.mk new file mode 100644 index 0000000..1b4d7fe --- /dev/null +++ b/buildroot/package/lzma/lzma.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# lzma +# +################################################################################ + +LZMA_VERSION = 4.32.7 +LZMA_SOURCE = lzma-$(LZMA_VERSION).tar.xz +LZMA_SITE = http://tukaani.org/lzma + +$(eval $(host-autotools-package)) + +LZMA = $(HOST_DIR)/bin/lzma diff --git a/buildroot/package/lzo/Config.in b/buildroot/package/lzo/Config.in new file mode 100644 index 0000000..1b6f80b --- /dev/null +++ b/buildroot/package/lzo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_LZO + bool "lzo" + help + Portable lossless data compression library written in ANSI C. + + http://www.oberhumer.com/opensource/lzo/ diff --git a/buildroot/package/lzo/lzo.hash b/buildroot/package/lzo/lzo.hash new file mode 100644 index 0000000..cf2734f --- /dev/null +++ b/buildroot/package/lzo/lzo.hash @@ -0,0 +1,4 @@ +# From http://www.oberhumer.com/opensource/lzo/ +sha1 4924676a9bae5db58ef129dc1cebce3baa3c4b5d lzo-2.10.tar.gz +# Locally computed +sha256 c0f892943208266f9b6543b3ae308fab6284c5c90e627931446fb49b4221a072 lzo-2.10.tar.gz diff --git a/buildroot/package/lzo/lzo.mk b/buildroot/package/lzo/lzo.mk new file mode 100644 index 0000000..27ca459 --- /dev/null +++ b/buildroot/package/lzo/lzo.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# lzo +# +################################################################################ + +LZO_VERSION = 2.10 +LZO_SITE = http://www.oberhumer.com/opensource/lzo/download +LZO_LICENSE = GPL-2.0+ +LZO_LICENSE_FILES = COPYING +LZO_INSTALL_STAGING = YES +LZO_SUPPORTS_IN_SOURCE_BUILD = NO + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LZO_CONF_OPTS += -DENABLE_SHARED=ON +else +LZO_CONF_OPTS += -DENABLE_SHARED=OFF +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +LZO_CONF_OPTS += -DENABLE_STATIC=ON +else +LZO_CONF_OPTS += -DENABLE_STATIC=OFF +endif + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/buildroot/package/lzop/0001-build-with-gcc6.patch b/buildroot/package/lzop/0001-build-with-gcc6.patch new file mode 100644 index 0000000..774ee54 --- /dev/null +++ b/buildroot/package/lzop/0001-build-with-gcc6.patch @@ -0,0 +1,37 @@ +From: Jaap Crezee +Date: Sat, 25 june 2016 13:13:00 +0200 +Subject: [PATCH 1/1] fix compilation host-lzop with gcc-6 + +This patch allows host-lzop to be compiled with host systems containing gcc-6 + +Upstream patch found here: +https://build.opensuse.org/package/view_file/Archiving/lzop/lzop-1.03-gcc6.patch?expand=1 + +Signed-off-by: Jaap Crezee + +--- a/src/miniacc.h.orig 2016-02-10 16:09:23.247315866 +0100 ++++ b/src/miniacc.h 2016-02-10 16:12:14.973297054 +0100 +@@ -4469,12 +4469,12 @@ + #if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150) + #elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC) + #else +- ACCCHK_ASSERT((1 << (8*SIZEOF_INT-1)) < 0) ++ ACCCHK_ASSERT((int)(1u << (8*SIZEOF_INT-1)) < 0) + #endif + ACCCHK_ASSERT((1u << (8*SIZEOF_INT-1)) > 0) + #if 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC) + #else +- ACCCHK_ASSERT((1l << (8*SIZEOF_LONG-1)) < 0) ++ ACCCHK_ASSERT((long)(1ul << (8*SIZEOF_LONG-1)) < 0) + #endif + ACCCHK_ASSERT((1ul << (8*SIZEOF_LONG-1)) > 0) + #if defined(acc_int16e_t) +@@ -4703,7 +4703,7 @@ + #elif 1 && (ACC_CC_LCC || ACC_CC_LCCWIN32) && !defined(ACCCHK_CFG_PEDANTIC) + #elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC) + #elif !(ACC_BROKEN_INTEGRAL_PROMOTION) && (SIZEOF_INT > 1) +- ACCCHK_ASSERT( (((unsigned char)128) << (int)(8*sizeof(int)-8)) < 0) ++ ACCCHK_ASSERT( (int)((unsigned int)((unsigned char)128) << (int)(8*sizeof(int)-8)) < 0) + #endif + #if (ACC_CC_BORLANDC && (__BORLANDC__ >= 0x0530) && (__BORLANDC__ < 0x0560)) + # pragma option pop diff --git a/buildroot/package/lzop/0002-use-static-inlines-as-the-external-inline-definition.patch b/buildroot/package/lzop/0002-use-static-inlines-as-the-external-inline-definition.patch new file mode 100644 index 0000000..f6d076a --- /dev/null +++ b/buildroot/package/lzop/0002-use-static-inlines-as-the-external-inline-definition.patch @@ -0,0 +1,102 @@ +From ecccbcf66da53779d88e38e2af7f82eff8dde7f8 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sun, 16 Aug 2015 10:35:47 -0700 +Subject: [PATCH] use static inlines as the external inline definition has + changed with gcc5 + +[Patch from https://raw.githubusercontent.com/openembedded/openembedded-core/master/meta/recipes-support/lzop/lzop/0001-use-static-inlines-as-the-external-inline-definition.patch] +Signed-off-by: Khem Raj +Signed-off-by: Peter Korsgaard +--- +Upstream-Status: Pending + + src/miniacc.h | 24 ++++++++---------------- + 1 file changed, 8 insertions(+), 16 deletions(-) + +diff --git a/src/miniacc.h b/src/miniacc.h +index 09e6f0c..cae98d1 100644 +--- a/src/miniacc.h ++++ b/src/miniacc.h +@@ -2880,8 +2880,7 @@ typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t); + #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline) + #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC) + #if !defined(ACC_UA_GET_LE16) +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp); +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) { ++static __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) { + __acc_ua_volatile const acc_uint16e_t* p = (__acc_ua_volatile const acc_uint16e_t*) pp; + unsigned long v; + __asm__ __volatile__("lhbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p)); +@@ -2890,8 +2889,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const + #define ACC_UA_GET_LE16(p) __ACC_UA_GET_LE16(p) + #endif + #if !defined(ACC_UA_SET_LE16) +-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v); +-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) { ++static __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) { + __acc_ua_volatile acc_uint16e_t* p = (__acc_ua_volatile acc_uint16e_t*) pp; + __asm__ __volatile__("sthbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v)); + } +@@ -2916,8 +2914,7 @@ extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsi + #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline) + #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC) + #if !defined(ACC_UA_GET_LE32) +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp); +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) { ++static __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) { + __acc_ua_volatile const acc_uint32e_t* p = (__acc_ua_volatile const acc_uint32e_t*) pp; + unsigned long v; + __asm__ __volatile__("lwbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p)); +@@ -2926,8 +2923,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const + #define ACC_UA_GET_LE32(p) __ACC_UA_GET_LE32(p) + #endif + #if !defined(ACC_UA_SET_LE32) +-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v); +-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) { ++static __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) { + __acc_ua_volatile acc_uint32e_t* p = (__acc_ua_volatile acc_uint32e_t*) pp; + __asm__ __volatile__("stwbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v)); + } +@@ -3307,8 +3303,7 @@ typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(acc_signo_t); + #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline) + #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC) + #if !defined(ACC_UA_GET_LE16) +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp); +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) { ++static __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const void* pp) { + __acc_ua_volatile const acc_uint16e_t* p = (__acc_ua_volatile const acc_uint16e_t*) pp; + unsigned long v; + __asm__ __volatile__("lhbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p)); +@@ -3317,8 +3312,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE16(__acc_ua_volatile const + #define ACC_UA_GET_LE16(p) __ACC_UA_GET_LE16(p) + #endif + #if !defined(ACC_UA_SET_LE16) +-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v); +-extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) { ++static __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsigned long v) { + __acc_ua_volatile acc_uint16e_t* p = (__acc_ua_volatile acc_uint16e_t*) pp; + __asm__ __volatile__("sthbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v)); + } +@@ -3343,8 +3337,7 @@ extern __acc_forceinline void __ACC_UA_SET_LE16(__acc_ua_volatile void* pp, unsi + #if !(ACC_CFG_NO_INLINE_ASM) && (__acc_HAVE_forceinline) + #if (ACC_ARCH_POWERPC && ACC_ABI_BIG_ENDIAN) && (ACC_CC_GNUC) + #if !defined(ACC_UA_GET_LE32) +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp); +-extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) { ++static __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const void* pp) { + __acc_ua_volatile const acc_uint32e_t* p = (__acc_ua_volatile const acc_uint32e_t*) pp; + unsigned long v; + __asm__ __volatile__("lwbrx %0,0,%1" : "=r" (v) : "r" (p), "m" (*p)); +@@ -3353,8 +3346,7 @@ extern __acc_forceinline unsigned long __ACC_UA_GET_LE32(__acc_ua_volatile const + #define ACC_UA_GET_LE32(p) __ACC_UA_GET_LE32(p) + #endif + #if !defined(ACC_UA_SET_LE32) +-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v); +-extern __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) { ++static __acc_forceinline void __ACC_UA_SET_LE32(__acc_ua_volatile void* pp, unsigned long v) { + __acc_ua_volatile acc_uint32e_t* p = (__acc_ua_volatile acc_uint32e_t*) pp; + __asm__ __volatile__("stwbrx %2,0,%1" : "=m" (*p) : "r" (p), "r" (v)); + } +-- +2.5.0 + diff --git a/buildroot/package/lzop/Config.in b/buildroot/package/lzop/Config.in new file mode 100644 index 0000000..236f21d --- /dev/null +++ b/buildroot/package/lzop/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_LZOP + bool "lzop" + select BR2_PACKAGE_LZO + help + lzop is a file compressor which is very similar to gzip. + lzop uses the LZO data compression library for compression + services. + + http://www.lzop.org/ diff --git a/buildroot/package/lzop/lzop.hash b/buildroot/package/lzop/lzop.hash new file mode 100644 index 0000000..a484e7f --- /dev/null +++ b/buildroot/package/lzop/lzop.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c1425b8c77d49f5a679d5a126c90ea6ad99585a55e335a613cae59e909dbb2c9 lzop-1.03.tar.gz diff --git a/buildroot/package/lzop/lzop.mk b/buildroot/package/lzop/lzop.mk new file mode 100644 index 0000000..55157c4 --- /dev/null +++ b/buildroot/package/lzop/lzop.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# lzop +# +################################################################################ + +LZOP_VERSION = 1.03 +LZOP_SITE = http://www.lzop.org/download +LZOP_LICENSE = GPL-2.0+ +LZOP_LICENSE_FILES = COPYING +LZOP_DEPENDENCIES = lzo +HOST_LZOP_DEPENDENCIES = host-lzo + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +LZOP = $(HOST_DIR)/bin/lzop diff --git a/buildroot/package/m4/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch b/buildroot/package/m4/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch new file mode 100644 index 0000000..5c5c11b --- /dev/null +++ b/buildroot/package/m4/0001-fflush-adjust-to-glibc-2.28-libio.h-removal.patch @@ -0,0 +1,166 @@ +From 4af4a4a71827c0bc5e0ec67af23edef4f15cee8e Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Mon, 5 Mar 2018 10:56:29 -0800 +Subject: [PATCH] fflush: adjust to glibc 2.28 libio.h removal +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Problem reported by Daniel P. Berrangé in: +https://lists.gnu.org/r/bug-gnulib/2018-03/msg00000.html +* lib/fbufmode.c (fbufmode): +* lib/fflush.c (clear_ungetc_buffer_preserving_position) +(disable_seek_optimization, rpl_fflush): +* lib/fpending.c (__fpending): +* lib/fpurge.c (fpurge): +* lib/freadable.c (freadable): +* lib/freadahead.c (freadahead): +* lib/freading.c (freading): +* lib/freadptr.c (freadptr): +* lib/freadseek.c (freadptrinc): +* lib/fseeko.c (fseeko): +* lib/fseterr.c (fseterr): +* lib/fwritable.c (fwritable): +* lib/fwriting.c (fwriting): +Check _IO_EOF_SEEN instead of _IO_ftrylockfile. +* lib/stdio-impl.h (_IO_IN_BACKUP) [_IO_EOF_SEEN]: +Define if not already defined. + +[yann.morin.1998@free.fr: partially backport from upstream gnulib] +Signed-off-by: "Yann E. MORIN" + +--- + lib/fflush.c | 6 +++--- + lib/fpending.c | 2 +- + lib/fpurge.c | 2 +- + lib/freadahead.c | 2 +- + lib/freading.c | 2 +- + lib/fseeko.c | 4 ++-- + lib/stdio-impl.h | 6 ++++++ + 7 files changed, 15 insertions(+), 9 deletions(-) + +diff --git a/lib/fflush.c b/build-aux/gnulib/lib/fflush.c +index 983ade0ff..a6edfa105 100644 +--- a/lib/fflush.c ++++ b/lib/fflush.c +@@ -33,7 +33,7 @@ + #undef fflush + + +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + + /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */ + static void +@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp) + + #endif + +-#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) ++#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) + + # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ +@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream) + if (stream == NULL || ! freading (stream)) + return fflush (stream); + +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + + clear_ungetc_buffer_preserving_position (stream); + +diff --git a/lib/fpending.c b/build-aux/gnulib/lib/fpending.c +index c84e3a5b4..789f50e4e 100644 +--- a/lib/fpending.c ++++ b/lib/fpending.c +@@ -32,7 +32,7 @@ __fpending (FILE *fp) + /* Most systems provide FILE as a struct and the necessary bitmask in + , because they need it for implementing getc() and putc() as + fast macros. */ +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + return fp->_IO_write_ptr - fp->_IO_write_base; + #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ +diff --git a/lib/fpurge.c b/build-aux/gnulib/lib/fpurge.c +index b1d417c7a..3aedcc373 100644 +--- a/lib/fpurge.c ++++ b/lib/fpurge.c +@@ -62,7 +62,7 @@ fpurge (FILE *fp) + /* Most systems provide FILE as a struct and the necessary bitmask in + , because they need it for implementing getc() and putc() as + fast macros. */ +-# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + fp->_IO_read_end = fp->_IO_read_ptr; + fp->_IO_write_ptr = fp->_IO_write_base; + /* Avoid memory leak when there is an active ungetc buffer. */ +diff --git a/lib/freadahead.c b/build-aux/gnulib/lib/freadahead.c +index c2ecb5b28..23ec76ee5 100644 +--- a/lib/freadahead.c ++++ b/lib/freadahead.c +@@ -30,7 +30,7 @@ extern size_t __sreadahead (FILE *); + size_t + freadahead (FILE *fp) + { +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + if (fp->_IO_write_ptr > fp->_IO_write_base) + return 0; + return (fp->_IO_read_end - fp->_IO_read_ptr) +diff --git a/lib/freading.c b/build-aux/gnulib/lib/freading.c +index 73c28acdd..c24d0c88a 100644 +--- a/lib/freading.c ++++ b/lib/freading.c +@@ -31,7 +31,7 @@ freading (FILE *fp) + /* Most systems provide FILE as a struct and the necessary bitmask in + , because they need it for implementing getc() and putc() as + fast macros. */ +-# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + return ((fp->_flags & _IO_NO_WRITES) != 0 + || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 + && fp->_IO_read_base != NULL)); +diff --git a/lib/fseeko.c b/build-aux/gnulib/lib/fseeko.c +index 0101ab55f..193f4e8ce 100644 +--- a/lib/fseeko.c ++++ b/lib/fseeko.c +@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence) + #endif + + /* These tests are based on fpurge.c. */ +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + if (fp->_IO_read_end == fp->_IO_read_ptr + && fp->_IO_write_ptr == fp->_IO_write_base + && fp->_IO_save_base == NULL) +@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence) + return -1; + } + +-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ + fp->_flags &= ~_IO_EOF_SEEN; + fp->_offset = pos; + #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ +diff --git a/lib/stdio-impl.h b/build-aux/gnulib/lib/stdio-impl.h +index 78d896e9f..05c5752a2 100644 +--- a/lib/stdio-impl.h ++++ b/lib/stdio-impl.h +@@ -18,6 +18,12 @@ + the same implementation of stdio extension API, except that some fields + have different naming conventions, or their access requires some casts. */ + ++/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this ++ problem by defining it ourselves. FIXME: Do not rely on glibc ++ internals. */ ++#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN ++# define _IO_IN_BACKUP 0x100 ++#endif + + /* BSD stdio derived implementations. */ + +-- +2.14.1 + diff --git a/buildroot/package/m4/0002-fflush-be-more-paranoid-about-libio.h-change.patch b/buildroot/package/m4/0002-fflush-be-more-paranoid-about-libio.h-change.patch new file mode 100644 index 0000000..a820ca8 --- /dev/null +++ b/buildroot/package/m4/0002-fflush-be-more-paranoid-about-libio.h-change.patch @@ -0,0 +1,151 @@ +From 74d9d6a293d7462dea8f83e7fc5ac792e956a0ad Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Thu, 8 Mar 2018 16:42:45 -0800 +Subject: [PATCH 2/2] fflush: be more paranoid about libio.h change + +Suggested by Eli Zaretskii in: +https://lists.gnu.org/r/emacs-devel/2018-03/msg00270.html +* lib/fbufmode.c (fbufmode): +* lib/fflush.c (clear_ungetc_buffer_preserving_position) +(disable_seek_optimization, rpl_fflush): +* lib/fpending.c (__fpending): +* lib/fpurge.c (fpurge): +* lib/freadable.c (freadable): +* lib/freadahead.c (freadahead): +* lib/freading.c (freading): +* lib/freadptr.c (freadptr): +* lib/freadseek.c (freadptrinc): +* lib/fseeko.c (fseeko): +* lib/fseterr.c (fseterr): +* lib/fwritable.c (fwritable): +* lib/fwriting.c (fwriting): +Look at _IO_ftrylockfile as well as at _IO_EOF_SEEN. +--- + lib/fflush.c | 9 ++++++--- + lib/fpending.c | 3 ++- + lib/fpurge.c | 3 ++- + lib/freadahead.c | 3 ++- + lib/freading.c | 3 ++- + lib/fseeko.c | 6 ++++-- + 6 files changed, 18 insertions(+), 9 deletions(-) + +[yann.morin.1998@free.fr: partially backport from upstream gnulib] +Signed-off-by: "Yann E. MORIN" + +diff --git a/lib/fflush.c b/build-aux/gnulib/lib/fflush.c +index a6edfa105..a140b7ad9 100644 +--- a/lib/fflush.c ++++ b/lib/fflush.c +@@ -33,7 +33,8 @@ + #undef fflush + + +-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 ++/* GNU libc, BeOS, Haiku, Linux libc5 */ + + /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */ + static void +@@ -72,7 +73,8 @@ clear_ungetc_buffer (FILE *fp) + + #endif + +-#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) ++#if ! (defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1) ++/* GNU libc, BeOS, Haiku, Linux libc5 */ + + # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ +@@ -148,7 +150,8 @@ rpl_fflush (FILE *stream) + if (stream == NULL || ! freading (stream)) + return fflush (stream); + +-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 ++ /* GNU libc, BeOS, Haiku, Linux libc5 */ + + clear_ungetc_buffer_preserving_position (stream); + +diff --git a/lib/fpending.c b/build-aux/gnulib/lib/fpending.c +index 789f50e4e..7bc235ded 100644 +--- a/lib/fpending.c ++++ b/lib/fpending.c +@@ -32,7 +32,8 @@ __fpending (FILE *fp) + /* Most systems provide FILE as a struct and the necessary bitmask in + , because they need it for implementing getc() and putc() as + fast macros. */ +-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 ++ /* GNU libc, BeOS, Haiku, Linux libc5 */ + return fp->_IO_write_ptr - fp->_IO_write_base; + #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ + /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ +diff --git a/lib/fpurge.c b/build-aux/gnulib/lib/fpurge.c +index 3aedcc373..554790b56 100644 +--- a/lib/fpurge.c ++++ b/lib/fpurge.c +@@ -62,7 +62,8 @@ fpurge (FILE *fp) + /* Most systems provide FILE as a struct and the necessary bitmask in + , because they need it for implementing getc() and putc() as + fast macros. */ +-# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++# if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 ++ /* GNU libc, BeOS, Haiku, Linux libc5 */ + fp->_IO_read_end = fp->_IO_read_ptr; + fp->_IO_write_ptr = fp->_IO_write_base; + /* Avoid memory leak when there is an active ungetc buffer. */ +diff --git a/lib/freadahead.c b/build-aux/gnulib/lib/freadahead.c +index 23ec76ee5..ed3dd0ebd 100644 +--- a/lib/freadahead.c ++++ b/lib/freadahead.c +@@ -30,7 +30,8 @@ extern size_t __sreadahead (FILE *); + size_t + freadahead (FILE *fp) + { +-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 ++ /* GNU libc, BeOS, Haiku, Linux libc5 */ + if (fp->_IO_write_ptr > fp->_IO_write_base) + return 0; + return (fp->_IO_read_end - fp->_IO_read_ptr) +diff --git a/lib/freading.c b/build-aux/gnulib/lib/freading.c +index c24d0c88a..790f92ca3 100644 +--- a/lib/freading.c ++++ b/lib/freading.c +@@ -31,7 +31,8 @@ freading (FILE *fp) + /* Most systems provide FILE as a struct and the necessary bitmask in + , because they need it for implementing getc() and putc() as + fast macros. */ +-# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++# if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 ++ /* GNU libc, BeOS, Haiku, Linux libc5 */ + return ((fp->_flags & _IO_NO_WRITES) != 0 + || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 + && fp->_IO_read_base != NULL)); +diff --git a/lib/fseeko.c b/build-aux/gnulib/lib/fseeko.c +index 193f4e8ce..e5c5172e7 100644 +--- a/lib/fseeko.c ++++ b/lib/fseeko.c +@@ -47,7 +47,8 @@ fseeko (FILE *fp, off_t offset, int whence) + #endif + + /* These tests are based on fpurge.c. */ +-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 ++ /* GNU libc, BeOS, Haiku, Linux libc5 */ + if (fp->_IO_read_end == fp->_IO_read_ptr + && fp->_IO_write_ptr == fp->_IO_write_base + && fp->_IO_save_base == NULL) +@@ -123,7 +124,8 @@ fseeko (FILE *fp, off_t offset, int whence) + return -1; + } + +-#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ ++#if defined _IO_EOF_SEEN || defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 ++ /* GNU libc, BeOS, Haiku, Linux libc5 */ + fp->_flags &= ~_IO_EOF_SEEN; + fp->_offset = pos; + #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ +-- +2.14.1 + diff --git a/buildroot/package/m4/m4.hash b/buildroot/package/m4/m4.hash new file mode 100644 index 0000000..e665fc1 --- /dev/null +++ b/buildroot/package/m4/m4.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 f2c1e86ca0a404ff281631bdc8377638992744b175afb806e25871a24a934e07 m4-1.4.18.tar.xz +# License files, locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/m4/m4.mk b/buildroot/package/m4/m4.mk new file mode 100644 index 0000000..849e7f4 --- /dev/null +++ b/buildroot/package/m4/m4.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# m4 +# +################################################################################ + +M4_VERSION = 1.4.18 +M4_SOURCE = m4-$(M4_VERSION).tar.xz +M4_SITE = $(BR2_GNU_MIRROR)/m4 +M4_LICENSE = GPL-3.0+ +M4_LICENSE_FILES = COPYING +HOST_M4_CONF_OPTS = --disable-static + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/macchanger/0001-Fix-missing-include-for-caddr_t.patch b/buildroot/package/macchanger/0001-Fix-missing-include-for-caddr_t.patch new file mode 100644 index 0000000..cf5ade8 --- /dev/null +++ b/buildroot/package/macchanger/0001-Fix-missing-include-for-caddr_t.patch @@ -0,0 +1,35 @@ +From 4eeb901b7aadb167e44f476fd665f7fedf491e51 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Fri, 6 May 2016 09:28:36 +0200 +Subject: [PATCH] Fix missing include for caddr_t +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +caddr_t is defined in . This header file must be included to fix +build with the musl C library: + +netinfo.c: In function 'mc_net_info_get_permanent_mac': +netinfo.c:116:28: error: 'caddr_t' undeclared (first use in this function) + req.ifr_data = (caddr_t)epa; + +Signed-off-by: Jörg Krause +--- + src/netinfo.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/netinfo.c b/src/netinfo.c +index 3525123..1aa3293 100644 +--- a/src/netinfo.c ++++ b/src/netinfo.c +@@ -28,6 +28,7 @@ + #include + #include + #include ++#include + + #include + #include +-- +2.8.2 + diff --git a/buildroot/package/macchanger/Config.in b/buildroot/package/macchanger/Config.in new file mode 100644 index 0000000..e1a03e1 --- /dev/null +++ b/buildroot/package/macchanger/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MACCHANGER + bool "macchanger" + help + A GNU/Linux utility for viewing/manipulating the MAC address + of network interfaces + + http://www.gnu.org/software/macchanger diff --git a/buildroot/package/macchanger/macchanger.hash b/buildroot/package/macchanger/macchanger.hash new file mode 100644 index 0000000..ce3a7f5 --- /dev/null +++ b/buildroot/package/macchanger/macchanger.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 dae2717c270fd5f62d790dbf80c19793c651b1b26b62c101b82d5fdf25a845bf macchanger-1.7.0.tar.gz diff --git a/buildroot/package/macchanger/macchanger.mk b/buildroot/package/macchanger/macchanger.mk new file mode 100644 index 0000000..f2cbce4 --- /dev/null +++ b/buildroot/package/macchanger/macchanger.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# macchanger +# +################################################################################ + +MACCHANGER_VERSION = 1.7.0 +MACCHANGER_SITE = https://github.com/alobbs/macchanger/releases/download/$(MACCHANGER_VERSION) +MACCHANGER_LICENSE = GPL-2.0+ +MACCHANGER_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/madplay/0001-switch-to-new-alsa-api.patch b/buildroot/package/madplay/0001-switch-to-new-alsa-api.patch new file mode 100644 index 0000000..60d7bd3 --- /dev/null +++ b/buildroot/package/madplay/0001-switch-to-new-alsa-api.patch @@ -0,0 +1,173 @@ +Switch madplay to the new API. This is done thanks to a patch written +by Micha Nelissen and available at +http://article.gmane.org/gmane.comp.audio.mad.devel/729. + +--- madplay-0.15.2b/audio_alsa.c 2008-10-18 15:10:16.000000000 +0200 ++++ madplay-0.15.2b/audio_alsa.c.new 2008-10-18 15:03:27.000000000 +0200 +@@ -28,31 +28,30 @@ + + #include + +-#define ALSA_PCM_OLD_HW_PARAMS_API +-#define ALSA_PCM_OLD_SW_PARAMS_API + #include + + #include + + #include "audio.h" + +-char *buf = NULL; +-int paused = 0; ++#define BUFFER_TIME_MAX 500000 + +-int rate = -1; +-int channels = -1; +-int bitdepth = -1; +-int sample_size = -1; +- +-int buffer_time = 500000; +-int period_time = 100000; +-char *defaultdev = "plughw:0,0"; ++unsigned char *buf = NULL; ++int paused = 0; ++ ++unsigned int rate = 0; ++unsigned int channels = -1; ++unsigned int bitdepth = -1; ++unsigned int sample_size = -1; ++ ++unsigned int buffer_time; ++unsigned int period_time; ++char *defaultdev = "plughw:0,0"; + + snd_pcm_hw_params_t *alsa_hwparams; + snd_pcm_sw_params_t *alsa_swparams; + +-snd_pcm_sframes_t buffer_size; +-snd_pcm_sframes_t period_size; ++snd_pcm_uframes_t buffer_size; + + snd_pcm_format_t alsa_format = -1; + snd_pcm_access_t alsa_access = SND_PCM_ACCESS_MMAP_INTERLEAVED; +@@ -66,14 +65,20 @@ + snd_pcm_hw_params_t *params, + snd_pcm_access_t access) + { +- int err, dir; +- ++ int err; ++ + /* choose all parameters */ + err = snd_pcm_hw_params_any(handle,params); + if (err < 0) { + printf("Access type not available for playback: %s\n", snd_strerror(err)); + return err; + } ++ /* set the access type */ ++ err = snd_pcm_hw_params_set_access(handle, params, alsa_access); ++ if (err < 0) { ++ printf("Sample format not available for playback: %s\n", snd_strerror(err)); ++ return err; ++ } + /* set the sample format */ + err = snd_pcm_hw_params_set_format(handle, params, alsa_format); + if (err < 0) { +@@ -87,29 +92,38 @@ + return err; + } + /* set the stream rate */ +- err = snd_pcm_hw_params_set_rate_near(handle, params, rate, 0); ++ err = snd_pcm_hw_params_set_rate(handle, params, rate, 0); + if (err < 0) { + printf("Rate %iHz not available for playback: %s\n", rate, snd_strerror(err)); + return err; + } +- if (err != rate) { +- printf("Rate doesn't match (requested %iHz, get %iHz)\n", rate, err); +- return -EINVAL; +- } ++ err = snd_pcm_hw_params_get_buffer_time_max(params, &buffer_time, NULL); ++ if (err < 0) { ++ printf("Unable to retrieve buffer time: %s\n", snd_strerror(err)); ++ return err; ++ } ++ if (buffer_time > BUFFER_TIME_MAX) ++ buffer_time = BUFFER_TIME_MAX; + /* set buffer time */ +- err = snd_pcm_hw_params_set_buffer_time_near(handle, params, buffer_time, &dir); ++ err = snd_pcm_hw_params_set_buffer_time_near(handle, params, &buffer_time, 0); + if (err < 0) { + printf("Unable to set buffer time %i for playback: %s\n", buffer_time, snd_strerror(err)); + return err; + } +- buffer_size = snd_pcm_hw_params_get_buffer_size(params); ++ if (period_time * 4 > buffer_time) ++ period_time = buffer_time / 4; + /* set period time */ +- err = snd_pcm_hw_params_set_period_time_near(handle, params, period_time, &dir); ++ err = snd_pcm_hw_params_set_period_time_near(handle, params, &period_time, NULL); + if (err < 0) { + printf("Unable to set period time %i for playback: %s\n", period_time, snd_strerror(err)); + return err; + } +- period_size = snd_pcm_hw_params_get_period_size(params, &dir); ++ /* retrieve buffer size */ ++ err = snd_pcm_hw_params_get_buffer_size(params, &buffer_size); ++ if (err < 0) { ++ printf("Unable to retrieve buffer size: %s\n", snd_strerror(err)); ++ return err; ++ } + /* write the parameters to device */ + err = snd_pcm_hw_params(handle, params); + if (err < 0) { +@@ -123,6 +137,7 @@ + int set_swparams(snd_pcm_t *handle, + snd_pcm_sw_params_t *params) + { ++ unsigned int start_threshold; + int err; + + /* get current swparams */ +@@ -136,13 +151,7 @@ + if (err < 0) { + printf("Unable to set start threshold mode for playback: %s\n", snd_strerror(err)); + return err; +- } +- /* allow transfer when at least period_size samples can be processed */ +- err = snd_pcm_sw_params_set_avail_min(handle, params, period_size); +- if (err < 0) { +- printf("Unable to set avail min for playback: %s\n", snd_strerror(err)); +- return err; +- } ++ } + /* align all transfers to 1 samples */ + err = snd_pcm_sw_params_set_xfer_align(handle, params, 1); + if (err < 0) { +@@ -190,7 +199,7 @@ + rate = config->speed; + + if ( bitdepth == 0 ) +- config->precision = bitdepth = 32; ++ config->precision = bitdepth = 16; + + switch (bitdepth) + { +@@ -241,7 +250,7 @@ + return -1; + } + +- buf = malloc(buffer_size); ++ buf = malloc(buffer_size * sample_size); + if (buf == NULL) { + audio_error="unable to allocate output buffer table"; + return -1; +@@ -279,7 +288,7 @@ + int play(struct audio_play *play) + { + int err, len; +- char *ptr; ++ unsigned char *ptr; + + ptr = buf; + len = play->nsamples; + diff --git a/buildroot/package/madplay/0002-buildroot-libtool-v1.5.patch.patch b/buildroot/package/madplay/0002-buildroot-libtool-v1.5.patch.patch new file mode 100644 index 0000000..2be3363 --- /dev/null +++ b/buildroot/package/madplay/0002-buildroot-libtool-v1.5.patch.patch @@ -0,0 +1,109 @@ +From ce661985c098635965573aac8fc983a72f60d396 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Tue, 30 May 2017 16:42:34 +0200 +Subject: [PATCH] buildroot-libtool-v1.5.patch + +Apply buildroot-libtool-v1.5.patch rebased on libtool 1.5.2 used +in madplay and fixing all conflicts. + +Signed-off-by: Romain Naour +--- + ltmain.sh | 40 ++++++++++++++++++++++++++++++---------- + 1 file changed, 30 insertions(+), 10 deletions(-) + +diff --git a/ltmain.sh b/ltmain.sh +index 4b9f940..0b71220 100644 +--- a/ltmain.sh ++++ b/ltmain.sh +@@ -164,6 +164,11 @@ do + arg="$1" + shift + ++ # Make -static behave as -all-static ++ case $arg in ++ -static) arg="-all-static" ;; ++ esac ++ + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; +@@ -549,8 +554,9 @@ if test -z "$show_help"; then + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" +- $echo "$modename: specify a tag with \`--tag'" 1>&2 +- exit 1 ++ $echo "$modename: defaulting to \`CC'" ++ $echo "$modename: if this is not correct, specify a tag with \`--tag'" ++# exit 1 + # else + # $echo "$modename: using $tagname tagged configuration" + fi +@@ -1228,7 +1234,8 @@ EOF + prevarg="$arg" + + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" +@@ -2135,8 +2142,14 @@ EOF + absdir="$abs_ladir" + libdir="$abs_ladir" + else +- dir="$libdir" +- absdir="$libdir" ++ # Adding 'libdir' from the .la file to our library search paths ++ # breaks crosscompilation horribly. We cheat here and don't add ++ # it, instead adding the path where we found the .la. -CL ++ dir="$abs_ladir" ++ absdir="$abs_ladir" ++ libdir="$abs_ladir" ++ #dir="$libdir" ++ #absdir="$libdir" + fi + else + dir="$ladir/$objdir" +@@ -2261,7 +2274,7 @@ EOF + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" +- need_relink=yes ++ need_relink=no + fi + # This is a shared library + +@@ -5146,6 +5159,10 @@ fi\ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` +@@ -5464,10 +5481,13 @@ relink_command=\"$relink_command\"" + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- if test "$inst_prefix_dir" = "$destdir"; then +- $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 +- exit 1 +- fi ++ # ++ # This breaks install into our staging area. -PB ++ # ++ # if test "$inst_prefix_dir" = "$destdir"; then ++ # $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 ++ # exit 1 ++ # fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. +-- +2.9.4 + diff --git a/buildroot/package/madplay/Config.in b/buildroot/package/madplay/Config.in new file mode 100644 index 0000000..922460e --- /dev/null +++ b/buildroot/package/madplay/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_MADPLAY + bool "madplay" + select BR2_PACKAGE_LIBMAD + select BR2_PACKAGE_LIBID3TAG + help + Command-line front-end to libmad, a high-quality MPEG audio + decoder. It currently supports MPEG-1 and the MPEG-2 + extension to lower sampling frequencies, as well as the de + facto MPEG 2.5 format. All three audio layers — Layer I, + Layer II, and Layer III (i.e. MP3) — are fully implemented. + + http://www.underbit.com/products/mad/ + +if BR2_PACKAGE_MADPLAY + +config BR2_PACKAGE_MADPLAY_ALSA + bool + default y + depends on BR2_PACKAGE_ALSA_LIB + +endif diff --git a/buildroot/package/madplay/madplay.hash b/buildroot/package/madplay/madplay.hash new file mode 100644 index 0000000..99487b5 --- /dev/null +++ b/buildroot/package/madplay/madplay.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 5a79c7516ff7560dffc6a14399a389432bc619c905b13d3b73da22fa65acede0 madplay-0.15.2b.tar.gz diff --git a/buildroot/package/madplay/madplay.mk b/buildroot/package/madplay/madplay.mk new file mode 100644 index 0000000..e72e2f8 --- /dev/null +++ b/buildroot/package/madplay/madplay.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# madplay +# +################################################################################ + +MADPLAY_VERSION = 0.15.2b +MADPLAY_SITE = http://downloads.sourceforge.net/project/mad/madplay/$(MADPLAY_VERSION) +MADPLAY_LICENSE = GPL-2.0+ +MADPLAY_LICENSE_FILES = COPYING COPYRIGHT +MADPLAY_LIBTOOL_PATCH = NO +MADPLAY_DEPENDENCIES = libmad libid3tag $(TARGET_NLS_DEPENDENCIES) + +# Check if ALSA is built, then we should configure after alsa-lib so +# ./configure can find alsa-lib. +ifeq ($(BR2_PACKAGE_MADPLAY_ALSA),y) +MADPLAY_CONF_OPTS += --with-alsa +MADPLAY_DEPENDENCIES += host-pkgconf alsa-lib +MADPLAY_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs alsa`" +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/make/Config.in b/buildroot/package/make/Config.in new file mode 100644 index 0000000..e8aa912 --- /dev/null +++ b/buildroot/package/make/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MAKE + bool "make" + depends on BR2_USE_MMU # fork() + help + A tool which controls the generation of executables and other + non-source files of a program from the program's source files. + + While Buildroot no longer supports building a toolchain for + the target, we keep a make package that is for example + useful to run the uClibc test suite on the target. + + http://www.gnu.org/software/make/ diff --git a/buildroot/package/make/make.hash b/buildroot/package/make/make.hash new file mode 100644 index 0000000..ea2e860 --- /dev/null +++ b/buildroot/package/make/make.hash @@ -0,0 +1,4 @@ +# From http://lists.gnu.org/archive/html/info-gnu/2016-06/msg00005.html +md5 15b012617e7c44c0ed482721629577ac make-4.2.1.tar.bz2 +# Locally calculated after checking signature +sha256 d6e262bf3601b42d2b1e4ef8310029e1dcf20083c5446b4b7aa67081fdffc589 make-4.2.1.tar.bz2 diff --git a/buildroot/package/make/make.mk b/buildroot/package/make/make.mk new file mode 100644 index 0000000..5717628 --- /dev/null +++ b/buildroot/package/make/make.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# make +# +################################################################################ + +MAKE_VERSION = 4.2.1 +MAKE_SOURCE = make-$(MAKE_VERSION).tar.bz2 +MAKE_SITE = $(BR2_GNU_MIRROR)/make +MAKE_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +MAKE_LICENSE = GPL-3.0+ +MAKE_LICENSE_FILES = COPYING + +MAKE_CONF_OPTS = --without-guile + +# Disable the 'load' operation for static builds since it needs dlopen +ifeq ($(BR2_STATIC_LIBS),y) +MAKE_CONF_OPTS += --disable-load +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/makedevs/README b/buildroot/package/makedevs/README new file mode 100644 index 0000000..70844bf --- /dev/null +++ b/buildroot/package/makedevs/README @@ -0,0 +1,35 @@ +When building a target filesystem, it is desirable to not have to +become root and then run 'mknod' a thousand times. Using a device +table you can create device nodes and directories "on the fly". + +You can do all sorts of interesting things with a device table file. +For example, if you want to adjust the permissions on a particular +file you can just add an entry like: + + /sbin/foobar f 2755 0 0 - - - - - + +and (assuming the file /sbin/foobar exists) it will be made setuid +root (regardless of what its permissions are on the host filesystem. + +Furthermore, you can use a single table entry to create a many device +minors. For example, if I wanted to create /dev/hda and +/dev/hda[0-15] I could just use the following two table entries: + + /dev/hda b 640 0 0 3 0 0 0 - + /dev/hda b 640 0 0 3 1 1 1 15 + +Device table entries take the form of: + + + +where name is the file name, type can be one of: + + f: A regular file + d: Directory + c: Character special device file + b: Block special device file + p: Fifo (named pipe) + +uid is the user id for the target file, gid is the group id for the +target file. The rest of the entries (major, minor, etc) apply only +to device special files. diff --git a/buildroot/package/makedevs/makedevs.c b/buildroot/package/makedevs/makedevs.c new file mode 100644 index 0000000..1ba5936 --- /dev/null +++ b/buildroot/package/makedevs/makedevs.c @@ -0,0 +1,647 @@ +/* vi: set sw=4 ts=4: */ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef __APPLE__ +#include /* major() and minor() */ +#endif +#include +#ifdef EXTENDED_ATTRIBUTES +#include +#endif /* EXTENDED_ATTRIBUTES */ + +const char *bb_applet_name; +uid_t recursive_uid; +gid_t recursive_gid; +unsigned int recursive_mode; +#define PASSWD_PATH "etc/passwd" /* MUST be relative */ +#define GROUP_PATH "etc/group" /* MUST be relative */ + +void bb_verror_msg(const char *s, va_list p) +{ + fflush(stdout); + fprintf(stderr, "%s: ", bb_applet_name); + vfprintf(stderr, s, p); +} + +void bb_error_msg(const char *s, ...) +{ + va_list p; + + va_start(p, s); + bb_verror_msg(s, p); + va_end(p); + putc('\n', stderr); +} + +void bb_error_msg_and_die(const char *s, ...) +{ + va_list p; + + va_start(p, s); + bb_verror_msg(s, p); + va_end(p); + putc('\n', stderr); + exit(1); +} + +void bb_vperror_msg(const char *s, va_list p) +{ + int err=errno; + if(s == 0) s = ""; + bb_verror_msg(s, p); + if (*s) s = ": "; + fprintf(stderr, "%s%s\n", s, strerror(err)); +} + +void bb_perror_msg(const char *s, ...) +{ + va_list p; + + va_start(p, s); + bb_vperror_msg(s, p); + va_end(p); +} + +void bb_perror_msg_and_die(const char *s, ...) +{ + va_list p; + + va_start(p, s); + bb_vperror_msg(s, p); + va_end(p); + exit(1); +} + +FILE *bb_xfopen(const char *path, const char *mode) +{ + FILE *fp; + if ((fp = fopen(path, mode)) == NULL) + bb_perror_msg_and_die("%s", path); + return fp; +} + +enum { + FILEUTILS_PRESERVE_STATUS = 1, + FILEUTILS_DEREFERENCE = 2, + FILEUTILS_RECUR = 4, + FILEUTILS_FORCE = 8, + FILEUTILS_INTERACTIVE = 16 +}; +int bb_make_directory (char *path, long mode, int flags) +{ + mode_t mask; + const char *fail_msg; + char *s = path; + char c; + struct stat st; + + mask = umask(0); + if (mode == -1) { + umask(mask); + mode = (S_IXUSR | S_IXGRP | S_IXOTH | + S_IWUSR | S_IWGRP | S_IWOTH | + S_IRUSR | S_IRGRP | S_IROTH) & ~mask; + } else { + umask(mask & ~0300); + } + + do { + c = 0; + + if (flags & FILEUTILS_RECUR) { /* Get the parent. */ + /* Bypass leading non-'/'s and then subsequent '/'s. */ + while (*s) { + if (*s == '/') { + do { + ++s; + } while (*s == '/'); + c = *s; /* Save the current char */ + *s = 0; /* and replace it with nul. */ + break; + } + ++s; + } + } + + if (mkdir(path, 0777) < 0) { + /* If we failed for any other reason than the directory + * already exists, output a diagnostic and return -1.*/ + if ((errno != EEXIST && errno != EISDIR) + || !(flags & FILEUTILS_RECUR) + || (stat(path, &st) < 0 || !S_ISDIR(st.st_mode))) { + fail_msg = "create"; + umask(mask); + break; + } + /* Since the directory exists, don't attempt to change + * permissions if it was the full target. Note that + * this is not an error conditon. */ + if (!c) { + umask(mask); + return 0; + } + } + + if (!c) { + /* Done. If necessary, updated perms on the newly + * created directory. Failure to update here _is_ + * an error.*/ + umask(mask); + if ((mode != -1) && (chmod(path, mode) < 0)){ + fail_msg = "set permissions of"; + break; + } + return 0; + } + + /* Remove any inserted nul from the path (recursive mode). */ + *s = c; + + } while (1); + + bb_perror_msg ("Cannot %s directory `%s'", fail_msg, path); + return -1; +} + +const char * const bb_msg_memory_exhausted = "memory exhausted"; + +void *xmalloc(size_t size) +{ + void *ptr = malloc(size); + if (ptr == NULL && size != 0) + bb_error_msg_and_die(bb_msg_memory_exhausted); + return ptr; +} + +void *xcalloc(size_t nmemb, size_t size) +{ + void *ptr = calloc(nmemb, size); + if (ptr == NULL && nmemb != 0 && size != 0) + bb_error_msg_and_die(bb_msg_memory_exhausted); + return ptr; +} + +void *xrealloc(void *ptr, size_t size) +{ + ptr = realloc(ptr, size); + if (ptr == NULL && size != 0) + bb_error_msg_and_die(bb_msg_memory_exhausted); + return ptr; +} + +char *private_get_line_from_file(FILE *file, int c) +{ +#define GROWBY (80) /* how large we will grow strings by */ + + int ch; + int idx = 0; + char *linebuf = NULL; + int linebufsz = 0; + + while ((ch = getc(file)) != EOF) { + /* grow the line buffer as necessary */ + if (idx > linebufsz - 2) { + linebuf = xrealloc(linebuf, linebufsz += GROWBY); + } + linebuf[idx++] = (char)ch; + if (!ch) return linebuf; + if (c<2 && ch == '\n') { + if (c) { + --idx; + } + break; + } + } + if (linebuf) { + if (ferror(file)) { + free(linebuf); + return NULL; + } + linebuf[idx] = 0; + } + return linebuf; +} + +char *bb_get_chomped_line_from_file(FILE *file) +{ + return private_get_line_from_file(file, 1); +} + +long my_getpwnam(const char *name) +{ + struct passwd *myuser; + FILE *stream; + + stream = bb_xfopen(PASSWD_PATH, "r"); + while(1) { + errno = 0; + myuser = fgetpwent(stream); + if (myuser == NULL) + bb_error_msg_and_die("unknown user name: %s", name); + if (errno) + bb_perror_msg_and_die("fgetpwent"); + if (!strcmp(name, myuser->pw_name)) + break; + } + fclose(stream); + + return myuser->pw_uid; +} + +long my_getgrnam(const char *name) +{ + struct group *mygroup; + FILE *stream; + + stream = bb_xfopen(GROUP_PATH, "r"); + while(1) { + errno = 0; + mygroup = fgetgrent(stream); + if (mygroup == NULL) + bb_error_msg_and_die("unknown group name: %s", name); + if (errno) + bb_perror_msg_and_die("fgetgrent"); + if (!strcmp(name, mygroup->gr_name)) + break; + } + fclose(stream); + + return mygroup->gr_gid; +} + +unsigned long get_ug_id(const char *s, long (*my_getxxnam)(const char *)) +{ + unsigned long r; + char *p; + + r = strtoul(s, &p, 10); + if (*p || (s == p)) { + r = my_getxxnam(s); + } + + return r; +} + +char * last_char_is(const char *s, int c) +{ + char *sret = (char *)s; + if (sret) { + sret = strrchr(sret, c); + if(sret != NULL && *(sret+1) != 0) + sret = NULL; + } + return sret; +} + +void bb_xasprintf(char **string_ptr, const char *format, ...) +{ + va_list p; + int r; + + va_start(p, format); + r = vasprintf(string_ptr, format, p); + va_end(p); + + if (r < 0) { + bb_perror_msg_and_die("bb_xasprintf"); + } +} + +char *concat_path_file(const char *path, const char *filename) +{ + char *outbuf; + char *lc; + + if (!path) + path = ""; + lc = last_char_is(path, '/'); + while (*filename == '/') + filename++; + bb_xasprintf(&outbuf, "%s%s%s", path, (lc==NULL ? "/" : ""), filename); + + return outbuf; +} + +#ifdef EXTENDED_ATTRIBUTES +int bb_set_xattr(const char *fpath, const char *xattr) +{ + cap_t cap, cap_file, cap_new; + char *cap_file_text, *cap_new_text; + ssize_t length; + + cap = cap_from_text(xattr); + if (cap == NULL) + bb_perror_msg_and_die("cap_from_text failed for %s", xattr); + + cap_file = cap_get_file(fpath); + if (cap_file == NULL) { + /* if no capability was set before, we initialize cap_file */ + if (errno != ENODATA) + bb_perror_msg_and_die("cap_get_file failed on %s", fpath); + + cap_file = cap_init(); + if (!cap_file) + bb_perror_msg_and_die("cap_init failed"); + } + + if ((cap_file_text = cap_to_text(cap_file, &length)) == NULL) + bb_perror_msg_and_die("cap_to_name failed on %s", fpath); + + bb_xasprintf(&cap_new_text, "%s %s", cap_file_text, xattr); + + if ((cap_new = cap_from_text(cap_new_text)) == NULL) + bb_perror_msg_and_die("cap_from_text failed on %s", cap_new_text); + + if (cap_set_file(fpath, cap_new) == -1) + bb_perror_msg_and_die("cap_set_file failed for %s (xattr = %s)", fpath, xattr); + + cap_free(cap); + cap_free(cap_file); + cap_free(cap_file_text); + cap_free(cap_new); + cap_free(cap_new_text); + + return 0; +} +#endif /* EXTENDED_ATTRIBUTES */ + +void bb_show_usage(void) +{ + fprintf(stderr, "%s: [-d device_table] rootdir\n\n", bb_applet_name); + fprintf(stderr, "Creates a batch of special files as specified in a device table.\n"); + fprintf(stderr, "Device table entries take the form of:\n"); + fprintf(stderr, "name type mode user group major minor start increment count\n\n"); + fprintf(stderr, "Where name is the file name, type can be one of:\n"); + fprintf(stderr, " f A regular file\n"); + fprintf(stderr, " d Directory\n"); + fprintf(stderr, " r Directory recursively\n"); + fprintf(stderr, " c Character special device file\n"); + fprintf(stderr, " b Block special device file\n"); + fprintf(stderr, " p Fifo (named pipe)\n"); + fprintf(stderr, "uid is the user id for the target file, gid is the group id for the\n"); + fprintf(stderr, "target file. The rest of the entries (major, minor, etc) apply to\n"); + fprintf(stderr, "to device special files. A '-' may be used for blank entries.\n\n"); + fprintf(stderr, "For example:\n"); + fprintf(stderr, " \n"); + fprintf(stderr, "/dev d 755 0 0 - - - - -\n"); + fprintf(stderr, "/dev/console c 666 0 0 5 1 - - -\n"); + fprintf(stderr, "/dev/null c 666 0 0 1 3 0 0 -\n"); + fprintf(stderr, "/dev/zero c 666 0 0 1 5 0 0 -\n"); + fprintf(stderr, "/dev/hda b 640 0 0 3 0 0 0 -\n"); + fprintf(stderr, "/dev/hda b 640 0 0 3 1 1 1 15\n"); + fprintf(stderr, "/dev/rtp b 640 0 0 250 0 0 1 5\n"); + fprintf(stderr, "/dev/gps b 640 0 0 251 0 1 1 5\n"); + fprintf(stderr, "/dev/uio b 640 0 0 252 0 1 2 5\n"); + fprintf(stderr, "/dev/uio b 640 0 0 252 1 6 2 5\n\n"); + fprintf(stderr, "Will Produce:\n"); + fprintf(stderr, "/dev\n"); + fprintf(stderr, "/dev/console\n"); + fprintf(stderr, "/dev/null\n"); + fprintf(stderr, "/dev/zero\n"); + fprintf(stderr, "/dev/hda\n"); + fprintf(stderr, "/dev/hda[1-15] with minor numbers [1-15]\n"); + fprintf(stderr, "/dev/rtp[0-4] with minor numbers [0-4]\n"); + fprintf(stderr, "/dev/gps[1-5] with minor numbers [0-4]\n"); + fprintf(stderr, "/dev/uio[1-5] with minor numbers 0,2,4,6,8\n"); + fprintf(stderr, "/dev/uio[6-10] with minor numbers 1,3,5,7,9\n"); + exit(1); +} + +int bb_recursive(const char *fpath, const struct stat *sb, + int tflag, struct FTW *ftwbuf){ + + if (chown(fpath, recursive_uid, recursive_gid) == -1) { + bb_perror_msg("chown failed for %s", fpath); + return -1; + } + if (recursive_mode != -1) { + if (chmod(fpath, recursive_mode) < 0) { + bb_perror_msg("chmod failed for %s", fpath); + return -1; + } + } + + return 0; +} + +int main(int argc, char **argv) +{ + int opt; + FILE *table = stdin; + char *rootdir = NULL; + char *full_name = NULL; + char *line = NULL; + int linenum = 0; + int ret = EXIT_SUCCESS; + + bb_applet_name = basename(argv[0]); + + while ((opt = getopt(argc, argv, "d:")) != -1) { + switch(opt) { + case 'd': + table = bb_xfopen((line=optarg), "r"); + break; + default: + bb_show_usage(); + } + } + + if (optind >= argc || (rootdir=argv[optind])==NULL) { + bb_error_msg_and_die("root directory not speficied"); + } + + if (chdir(rootdir) != 0) { + bb_perror_msg_and_die("Couldnt chdir to %s", rootdir); + } + + umask(0); + + printf("rootdir=%s\n", rootdir); + if (line) { + printf("table='%s'\n", line); + } else { + printf("table=\n"); + } + + while ((line = bb_get_chomped_line_from_file(table))) { + char type; + unsigned int mode = 0755; + unsigned int major = 0; + unsigned int minor = 0; + unsigned int count = 0; + unsigned int increment = 0; + unsigned int start = 0; + char xattr[255]; + char name[4096]; + char user[41]; + char group[41]; + uid_t uid; + gid_t gid; + + linenum++; + + if (1 == sscanf(line, "|xattr %254s", xattr)) { +#ifdef EXTENDED_ATTRIBUTES + if (!full_name) + bb_error_msg_and_die("line %d should be after a file\n", linenum); + + if (bb_set_xattr(full_name, xattr) < 0) + bb_error_msg_and_die("can't set cap %s on file %s\n", xattr, full_name); +#else + bb_error_msg_and_die("line %d not supported: '%s'\nDid you forget to enable " + "BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES?\n", + linenum, line); +#endif /* EXTENDED_ATTRIBUTES */ + continue; + } + + if ((2 > sscanf(line, "%4095s %c %o %40s %40s %u %u %u %u %u", name, + &type, &mode, user, group, &major, + &minor, &start, &increment, &count)) || + ((major | minor | start | count | increment) > 0xfffff)) + { + if (*line=='\0' || *line=='#' || isspace(*line)) + continue; + bb_error_msg("line %d invalid: '%s'\n", linenum, line); + ret = EXIT_FAILURE; + continue; + } + if (name[0] == '#') { + continue; + } + if (*group) { + gid = get_ug_id(group, my_getgrnam); + } else { + gid = getgid(); + } + if (*user) { + uid = get_ug_id(user, my_getpwnam); + } else { + uid = getuid(); + } + + /* + * free previous full name + * we don't de-allocate full_name at the end of the parsing, + * because we may need it if the next line is an xattr. + */ + free(full_name); + full_name = concat_path_file(rootdir, name); + + if (type == 'd') { + bb_make_directory(full_name, mode | S_IFDIR, FILEUTILS_RECUR); + if (chown(full_name, uid, gid) == -1) { + bb_perror_msg("line %d: chown failed for %s", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + if ((mode != -1) && (chmod(full_name, mode) < 0)){ + bb_perror_msg("line %d: chmod failed for %s", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + } else if (type == 'f' || type == 'F') { + struct stat st; + if ((stat(full_name, &st) < 0 || !S_ISREG(st.st_mode))) { + if (type == 'F') { + continue; /*Ignore optional files*/ + } + bb_perror_msg("line %d: regular file '%s' does not exist", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + if (chown(full_name, uid, gid) == -1) { + bb_perror_msg("line %d: chown failed for %s", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + if ((mode != -1) && (chmod(full_name, mode) < 0)){ + bb_perror_msg("line %d: chmod failed for %s", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + } else if (type == 'r') { + recursive_uid = uid; + recursive_gid = gid; + recursive_mode = mode; + if (nftw(full_name, bb_recursive, 20, FTW_MOUNT | FTW_PHYS) < 0) { + bb_perror_msg("line %d: recursive failed for %s", linenum, full_name); + ret = EXIT_FAILURE; + goto loop; + } + } else + { + dev_t rdev; + unsigned i; + char *full_name_inc; + + if (type == 'p') { + mode |= S_IFIFO; + } + else if (type == 'c') { + mode |= S_IFCHR; + } + else if (type == 'b') { + mode |= S_IFBLK; + } else { + bb_error_msg("line %d: Unsupported file type %c", linenum, type); + ret = EXIT_FAILURE; + goto loop; + } + + full_name_inc = xmalloc(strlen(full_name) + sizeof(int)*3 + 2); + if (count) + count--; + for (i = start; i <= start + count; i++) { + sprintf(full_name_inc, count ? "%s%u" : "%s", full_name, i); + rdev = makedev(major, minor + (i - start) * increment); + if (mknod(full_name_inc, mode, rdev) < 0) { + bb_perror_msg("line %d: can't create node %s", linenum, full_name_inc); + ret = EXIT_FAILURE; + } else if (chown(full_name_inc, uid, gid) < 0) { + bb_perror_msg("line %d: can't chown %s", linenum, full_name_inc); + ret = EXIT_FAILURE; + } else if (chmod(full_name_inc, mode) < 0) { + bb_perror_msg("line %d: can't chmod %s", linenum, full_name_inc); + ret = EXIT_FAILURE; + } + } + free(full_name_inc); + } +loop: + free(line); + } + fclose(table); + + return ret; +} diff --git a/buildroot/package/makedevs/makedevs.mk b/buildroot/package/makedevs/makedevs.mk new file mode 100644 index 0000000..36837a1 --- /dev/null +++ b/buildroot/package/makedevs/makedevs.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# makedevs +# +################################################################################ + +MAKEDEVS_LICENSE = GPL-2.0 + +HOST_MAKEDEVS_CFLAGS = $(HOST_CFLAGS) +HOST_MAKEDEVS_LDFLAGS = $(HOST_LDFLAGS) + +ifeq ($(BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES),y) +HOST_MAKEDEVS_DEPENDENCIES += host-libcap +HOST_MAKEDEVS_CFLAGS += -DEXTENDED_ATTRIBUTES +HOST_MAKEDEVS_LDFLAGS += -lcap +endif + +define HOST_MAKEDEVS_BUILD_CMDS + $(HOSTCC) $(HOST_MAKEDEVS_CFLAGS) package/makedevs/makedevs.c \ + -o $(@D)/makedevs $(HOST_MAKEDEVS_LDFLAGS) +endef + +define HOST_MAKEDEVS_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/makedevs $(HOST_DIR)/bin/makedevs +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/mali-t76x/Config.in b/buildroot/package/mali-t76x/Config.in new file mode 100644 index 0000000..a85fa5b --- /dev/null +++ b/buildroot/package/mali-t76x/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_MALI_T76X + bool "mali-t76x" + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_ARM_EABIHF + depends on BR2_arm + select BR2_PACKAGE_MESA3D_HEADERS + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + help + Install the binary user-space components for the ARM Mali + Midgard T76X GPU. This package requires a kernel with the + ARM Mali Midgard GPU Kernel Drivers enabled. + + Source: http://malideveloper.arm.com/resources/drivers/ + +if BR2_PACKAGE_MALI_T76X + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "mali-t76x" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "mali-t76x" + +endif + +comment "mali-t76x needs a glibc toolchain with armhf enabled" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF diff --git a/buildroot/package/mali-t76x/egl.pc b/buildroot/package/mali-t76x/egl.pc new file mode 100644 index 0000000..614b700 --- /dev/null +++ b/buildroot/package/mali-t76x/egl.pc @@ -0,0 +1,11 @@ +prefix=/usr/ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: egl +Description: ARM Mali implementation of EGL +Version: 1.5 +Requires: +Libs: -L${libdir} -lEGL -lGLESv2 +Cflags: -I${includedir} -DMESA_EGL_NO_X11_HEADERS diff --git a/buildroot/package/mali-t76x/glesv2.pc b/buildroot/package/mali-t76x/glesv2.pc new file mode 100644 index 0000000..5997eac --- /dev/null +++ b/buildroot/package/mali-t76x/glesv2.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: glesv2 +Description: ARM Mali implementation of OpenGL ESv2 +Version: 2.0 +Requires: +Libs: -L${libdir} -lGLESv2 -lGLESv1_CM +Cflags: -I${includedir} -DMESA_EGL_NO_X11_HEADERS diff --git a/buildroot/package/mali-t76x/mali-t76x.hash b/buildroot/package/mali-t76x/mali-t76x.hash new file mode 100644 index 0000000..a754b98 --- /dev/null +++ b/buildroot/package/mali-t76x/mali-t76x.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 5a0b00438edc8066b374481d3332a43c07ec2bd3bc73265983a968970f754902 mali-t76x_r5p0-06rel0_linux_1+fbdev.tar.gz diff --git a/buildroot/package/mali-t76x/mali-t76x.mk b/buildroot/package/mali-t76x/mali-t76x.mk new file mode 100644 index 0000000..387685c --- /dev/null +++ b/buildroot/package/mali-t76x/mali-t76x.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# mali-t76x +# +################################################################################ + +MALI_T76X_VERSION = r5p0-06rel0 +MALI_T76X_SOURCE = mali-t76x_$(MALI_T76X_VERSION)_linux_1+fbdev.tar.gz +MALI_T76X_SITE = http://malideveloper.arm.com/downloads/drivers/binary/$(MALI_T76X_VERSION) +MALI_T76X_DEPENDENCIES = mesa3d-headers +MALI_T76X_INSTALL_STAGING = YES +MALI_T76X_PROVIDES = libegl libgles + +define MALI_T76X_INSTALL_STAGING_CMDS + $(INSTALL) -m 755 $(@D)/*.so $(STAGING_DIR)/usr/lib/ + + $(INSTALL) -D -m 0644 package/mali-t76x/egl.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/egl.pc + $(INSTALL) -D -m 0644 package/mali-t76x/glesv2.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/glesv2.pc +endef + +define MALI_T76X_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 $(@D)/*.so $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mariadb/0001-add-extra-check-for-librt.patch b/buildroot/package/mariadb/0001-add-extra-check-for-librt.patch new file mode 100644 index 0000000..26bff75 --- /dev/null +++ b/buildroot/package/mariadb/0001-add-extra-check-for-librt.patch @@ -0,0 +1,27 @@ +From e6244400dfd3547531a3a3289fadbbe19873f096 Mon Sep 17 00:00:00 2001 +From: Ryan Coe +Date: Thu, 27 Oct 2016 20:33:21 -0700 +Subject: [PATCH] add extra check for librt + +Signed-off-by: Ryan Coe +--- + configure.cmake | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/configure.cmake b/configure.cmake +index 896226de954f4642a238ca6a72e0930590dc1681..77ca485fb05e6b63bb69f9561b4eabfaa208a419 100644 +--- a/configure.cmake ++++ b/configure.cmake +@@ -126,6 +126,9 @@ IF(UNIX) + IF(NOT LIBRT) + MY_SEARCH_LIBS(clock_gettime rt LIBRT) + ENDIF() ++ IF(NOT LIBRT) ++ MY_SEARCH_LIBS(posix_spawn_file_actions_addclose rt LIBRT) ++ ENDIF() + FIND_PACKAGE(Threads) + + SET(CMAKE_REQUIRED_LIBRARIES +-- +2.9.3 + diff --git a/buildroot/package/mariadb/S97mysqld b/buildroot/package/mariadb/S97mysqld new file mode 100644 index 0000000..62357fa --- /dev/null +++ b/buildroot/package/mariadb/S97mysqld @@ -0,0 +1,77 @@ +#!/bin/sh +# +# mysql +# + +MYSQL_LIB="/var/lib/mysql" +MYSQL_RUN="/run/mysql" +MYSQL_PID="$MYSQL_RUN/mysqld.pid" +MYSQL_BIN="/usr/bin" + +wait_for_ready() { + WAIT_DELAY=5 + while [ $WAIT_DELAY -gt 0 ]; do + if $MYSQL_BIN/mysqladmin ping > /dev/null 2>&1; then + return 0 + fi + sleep 1 + : $((WAIT_DELAY -= 1)) + done + return 1 +} + +start() { + if [ `ls -1 $MYSQL_LIB | wc -l` = 0 ] ; then + printf "Creating mysql system tables ... " + $MYSQL_BIN/mysql_install_db --basedir=/usr --user=mysql \ + --datadir=$MYSQL_LIB > /dev/null 2>&1 + if [ $? != 0 ]; then + echo "FAIL" + exit 1 + fi + echo "OK" + fi + + # mysqld runs as user mysql, but /run is only writable by root + # so create a subdirectory for mysql. + install -d -o mysql -g root -m 0755 $MYSQL_RUN + + # We don't use start-stop-daemon because mysqld has its own + # wrapper script. + printf "Starting mysql ... " + $MYSQL_BIN/mysqld_safe --pid-file=$MYSQL_PID --user=mysql \ + > /dev/null 2>&1 & + wait_for_ready + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping mysql ... " + if [ -f $MYSQL_PID ]; then + kill `cat $MYSQL_PID` > /dev/null 2>&1 + [ $? = 0 ] && echo "OK" || echo "FAIL" + else + echo "FAIL" + fi +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + ;; +esac diff --git a/buildroot/package/mariadb/mariadb.hash b/buildroot/package/mariadb/mariadb.hash new file mode 100644 index 0000000..7eea62a --- /dev/null +++ b/buildroot/package/mariadb/mariadb.hash @@ -0,0 +1,6 @@ +# From https://downloads.mariadb.org/mariadb/10.1.33/ +sha256 94312c519f2c0c25e1964c64e22aff0036fb22dfb2685638f43a6b2211395d2d mariadb-10.1.33.tar.gz + +# Hash for license files +sha256 69ce89a0cadbe35a858398c258be93c388715e84fc0ca04e5a1fd1aa9770dd3a README +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/mariadb/mariadb.mk b/buildroot/package/mariadb/mariadb.mk new file mode 100644 index 0000000..ce846d9 --- /dev/null +++ b/buildroot/package/mariadb/mariadb.mk @@ -0,0 +1,120 @@ +################################################################################ +# +# mariadb +# +################################################################################ + +MARIADB_VERSION = 10.1.33 +MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERSION)/source +MARIADB_LICENSE = GPL-2.0 (server), GPL-2.0 with FLOSS exception (GPL client library), LGPL-2.0 (LGPL client library) +# Tarball no longer contains LGPL license text +# https://jira.mariadb.org/browse/MDEV-12297 +MARIADB_LICENSE_FILES = README COPYING +MARIADB_INSTALL_STAGING = YES +MARIADB_PROVIDES = mysql + +MARIADB_DEPENDENCIES = \ + host-mariadb \ + ncurses \ + openssl \ + zlib \ + libaio \ + libxml2 \ + readline + +# We won't need unit tests +MARIADB_CONF_OPTS += -DWITH_UNIT_TESTS=0 + +# Mroonga needs libstemmer. Some work still needs to be done before it can be +# included in buildroot. Disable it for now. +MARIADB_CONF_OPTS += -DWITHOUT_MROONGA=1 + +# This value is determined automatically during straight compile by compiling +# and running a test code. You cannot do that during cross-compile. However the +# stack grows downward in most if not all modern systems. The only exception I +# am aware of is PA-RISC which is not supported by buildroot. Therefore it makes +# sense to hardcode the value. If an arch is added the stack of which grows up +# one should expect unpredictable behavior at run time. +MARIADB_CONF_OPTS += -DSTACK_DIRECTION=-1 + +# Jemalloc was added for TokuDB. Since its configure script seems somewhat broken +# when it comes to cross-compilation we shall disable it and also disable TokuDB. +MARIADB_CONF_OPTS += -DWITH_JEMALLOC=no -DWITHOUT_TOKUDB=1 + +# Make it explicit that we are cross-compiling +MARIADB_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1 + +# Explicitly disable dtrace to avoid detection of a host version +MARIADB_CONF_OPTS += -DENABLE_DTRACE=0 + +ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y) +MARIADB_CONF_OPTS += -DWITH_EMBEDDED_SERVER=ON +else +MARIADB_CONF_OPTS += -DWITHOUT_SERVER=ON +endif + +MARIADB_CONF_OPTS += \ + -DINSTALL_DOCDIR=share/doc/mariadb-$(MARIADB_VERSION) \ + -DINSTALL_DOCREADMEDIR=share/doc/mariadb-$(MARIADB_VERSION) \ + -DINSTALL_MANDIR=share/man \ + -DINSTALL_MYSQLSHAREDIR=share/mysql \ + -DINSTALL_MYSQLTESTDIR=share/mysql/test \ + -DINSTALL_PLUGINDIR=lib/mysql/plugin \ + -DINSTALL_SBINDIR=sbin \ + -DINSTALL_SCRIPTDIR=bin \ + -DINSTALL_SQLBENCHDIR=share/mysql/bench \ + -DINSTALL_SUPPORTFILESDIR=share/mysql \ + -DMYSQL_DATADIR=/var/lib/mysql \ + -DMYSQL_UNIX_ADDR=$(MYSQL_SOCKET) + +HOST_MARIADB_CONF_OPTS += -DWITH_SSL=bundled + +# Some helpers must be compiled for host in order to crosscompile mariadb for +# the target. They are then included by import_executables.cmake which is +# generated during the build of the host helpers. It is not necessary to build +# the whole host package, only the "import_executables" target. +# -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake +# must then be passed to cmake during target build. +# see also https://mariadb.com/kb/en/mariadb/cross-compiling-mariadb/ +HOST_MARIADB_MAKE_OPTS = import_executables + +MARIADB_CONF_OPTS += \ + -DIMPORT_EXECUTABLES=$(HOST_MARIADB_BUILDDIR)/import_executables.cmake + +# Don't install host-mariadb. We just need to build import_executable +# Therefore only run 'true' and do nothing, not even the default action. +HOST_MARIADB_INSTALL_CMDS = true + +ifeq ($(BR2_PACKAGE_MARIADB_SERVER),y) +define MARIADB_USERS + mysql -1 mysql -1 * /var/lib/mysql - - MySQL Server +endef + +define MARIADB_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/mariadb/S97mysqld \ + $(TARGET_DIR)/etc/init.d/S97mysqld +endef + +define MARIADB_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/mariadb/mysqld.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mysqld.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/mysqld.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mysqld.service +endef +endif + +define MARIADB_POST_INSTALL + mkdir -p $(TARGET_DIR)/var/lib/mysql + $(INSTALL) -D -m 644 $(TARGET_DIR)/usr/share/mysql/my-small.cnf \ + $(TARGET_DIR)/etc/mysql/my.cnf + # We don't need this on the target as it's only useful in staging + $(RM) $(TARGET_DIR)/usr/bin/mysql_config + # Remove test suite + $(RM) -r $(TARGET_DIR)/usr/share/mysql/test +endef + +MARIADB_POST_INSTALL_TARGET_HOOKS += MARIADB_POST_INSTALL + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/buildroot/package/mariadb/mysqld.service b/buildroot/package/mariadb/mysqld.service new file mode 100644 index 0000000..cd30831 --- /dev/null +++ b/buildroot/package/mariadb/mysqld.service @@ -0,0 +1,13 @@ +[Unit] +Description=MySQL database server + +[Service] +ExecStartPre=/bin/sh -c 'test "`ls -1 /var/lib/mysql | wc -l`" != "0" || mysql_install_db --basedir=/usr --datadir=/var/lib/mysql' +ExecStart=/usr/bin/mysqld_safe +Restart=always +User=mysql +RuntimeDirectory=mysql +RuntimeDirectoryMode=0755 + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/matchbox-common/Config.in b/buildroot/package/matchbox-common/Config.in new file mode 100644 index 0000000..587a069 --- /dev/null +++ b/buildroot/package/matchbox-common/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_MATCHBOX_COMMON + bool "matchbox-common" + depends on BR2_PACKAGE_MATCHBOX_PANEL || BR2_PACKAGE_MATCHBOX_DESKTOP + select BR2_PACKAGE_MATCHBOX_LIB + help + Common desktop folders and matchbox-session script. + +config BR2_PACKAGE_MATCHBOX_COMMON_PDA + bool "PDA style app folder" + depends on BR2_PACKAGE_MATCHBOX_COMMON diff --git a/buildroot/package/matchbox-common/matchbox-common.hash b/buildroot/package/matchbox-common/matchbox-common.hash new file mode 100644 index 0000000..619d847 --- /dev/null +++ b/buildroot/package/matchbox-common/matchbox-common.hash @@ -0,0 +1,2 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-common/0.9/matchbox-common-0.9.1.tar.bz2.md5 +md5 8e8ba0ee170a9ac78fdc583b00ccf76b matchbox-common-0.9.1.tar.bz2 diff --git a/buildroot/package/matchbox-common/matchbox-common.mk b/buildroot/package/matchbox-common/matchbox-common.mk new file mode 100644 index 0000000..fd54c27 --- /dev/null +++ b/buildroot/package/matchbox-common/matchbox-common.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# matchbox-common +# +################################################################################ + +MATCHBOX_COMMON_VERSION_MAJOR = 0.9 +MATCHBOX_COMMON_VERSION = $(MATCHBOX_COMMON_VERSION_MAJOR).1 +MATCHBOX_COMMON_SOURCE = matchbox-common-$(MATCHBOX_COMMON_VERSION).tar.bz2 +MATCHBOX_COMMON_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-common/$(MATCHBOX_COMMON_VERSION_MAJOR) +MATCHBOX_COMMON_LICENSE = GPL-2.0+ +MATCHBOX_COMMON_LICENSE_FILES = COPYING +MATCHBOX_COMMON_DEPENDENCIES = matchbox-lib + +ifeq ($(strip $(BR2_PACKAGE_MATCHBOX_COMMON_PDA)),y) +MATCHBOX_COMMON_CONF_OPTS += --enable-pda-folders +else +MATCHBOX_COMMON_CONF_OPTS += --disable-pda-folders +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/matchbox-desktop/Config.in b/buildroot/package/matchbox-desktop/Config.in new file mode 100644 index 0000000..22c568b --- /dev/null +++ b/buildroot/package/matchbox-desktop/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MATCHBOX_DESKTOP + bool "matchbox-desktop" + select BR2_PACKAGE_MATCHBOX_LIB + select BR2_PACKAGE_ZLIB + help + A PDA style application launcher or 'item browser'. diff --git a/buildroot/package/matchbox-desktop/matchbox-desktop.hash b/buildroot/package/matchbox-desktop/matchbox-desktop.hash new file mode 100644 index 0000000..e48a4a9 --- /dev/null +++ b/buildroot/package/matchbox-desktop/matchbox-desktop.hash @@ -0,0 +1,2 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-desktop/0.9/matchbox-desktop-0.9.1.tar.bz2.md5 +md5 3335a30b1a1aacfb39f23b505254765c matchbox-desktop-0.9.1.tar.bz2 diff --git a/buildroot/package/matchbox-desktop/matchbox-desktop.mk b/buildroot/package/matchbox-desktop/matchbox-desktop.mk new file mode 100644 index 0000000..81b13c0 --- /dev/null +++ b/buildroot/package/matchbox-desktop/matchbox-desktop.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# matchbox-desktop +# +################################################################################ + +MATCHBOX_DESKTOP_VERSION_MAJOR = 0.9 +MATCHBOX_DESKTOP_VERSION = $(MATCHBOX_DESKTOP_VERSION_MAJOR).1 +MATCHBOX_DESKTOP_SOURCE = matchbox-desktop-$(MATCHBOX_DESKTOP_VERSION).tar.bz2 +MATCHBOX_DESKTOP_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-desktop/$(MATCHBOX_DESKTOP_VERSION_MAJOR) +MATCHBOX_DESKTOP_LICENSE = GPL-2.0+ +MATCHBOX_DESKTOP_LICENSE_FILES = COPYING +MATCHBOX_DESKTOP_DEPENDENCIES = matchbox-lib zlib +MATCHBOX_DESKTOP_CONF_OPTS = --enable-expat + +# The bundled configure script does not properly replace LIBADD_DL, so +# we force an autoreconf even if we don't have any patches touching +# configure.ac/Makefile.am. +MATCHBOX_DESKTOP_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_STARTUP_NOTIFICATION),y) +MATCHBOX_DESKTOP_CONF_OPTS += --enable-startup-notification +MATCHBOX_DESKTOP_DEPENDENCIES += startup-notification +else +MATCHBOX_DESKTOP_CONF_OPTS += --disable-startup-notification +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/matchbox-fakekey/Config.in b/buildroot/package/matchbox-fakekey/Config.in new file mode 100644 index 0000000..1a1f134 --- /dev/null +++ b/buildroot/package/matchbox-fakekey/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MATCHBOX_FAKEKEY + bool "matchbox-fakekey" + select BR2_PACKAGE_MATCHBOX_LIB + select BR2_PACKAGE_XLIB_LIBXTST + help + Library for simulating key press events under X11. diff --git a/buildroot/package/matchbox-fakekey/matchbox-fakekey.hash b/buildroot/package/matchbox-fakekey/matchbox-fakekey.hash new file mode 100644 index 0000000..3e8778a --- /dev/null +++ b/buildroot/package/matchbox-fakekey/matchbox-fakekey.hash @@ -0,0 +1,2 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/libfakekey/0.1/libfakekey-0.1.tar.bz2.md5 +md5 83dbde4d77e8baf0176fe4291d8a2303 libfakekey-0.1.tar.bz2 diff --git a/buildroot/package/matchbox-fakekey/matchbox-fakekey.mk b/buildroot/package/matchbox-fakekey/matchbox-fakekey.mk new file mode 100644 index 0000000..e607c48 --- /dev/null +++ b/buildroot/package/matchbox-fakekey/matchbox-fakekey.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# matchbox-fakekey +# +################################################################################ + +MATCHBOX_FAKEKEY_VERSION = 0.1 +MATCHBOX_FAKEKEY_SOURCE = libfakekey-$(MATCHBOX_FAKEKEY_VERSION).tar.bz2 +MATCHBOX_FAKEKEY_SITE = http://downloads.yoctoproject.org/releases/matchbox/libfakekey/$(MATCHBOX_FAKEKEY_VERSION) +MATCHBOX_FAKEKEY_LICENSE = GPL-2.0+ +MATCHBOX_FAKEKEY_LICENSE_FILES = COPYING +MATCHBOX_FAKEKEY_INSTALL_STAGING = YES +MATCHBOX_FAKEKEY_DEPENDENCIES = matchbox-lib xlib_libXtst +MATCHBOX_FAKEKEY_CONF_OPTS = --enable-expat + +define MATCHBOX_FAKEKEY_POST_CONFIGURE_FIXES + $(SED) 's:^SUBDIRS = fakekey src tests.*:SUBDIRS = fakekey src:g' \ + $(@D)/Makefile +endef + +MATCHBOX_FAKEKEY_POST_CONFIGURE_HOOKS += MATCHBOX_FAKEKEY_POST_CONFIGURE_FIXES + +$(eval $(autotools-package)) diff --git a/buildroot/package/matchbox-keyboard/Config.in b/buildroot/package/matchbox-keyboard/Config.in new file mode 100644 index 0000000..8bd2a79 --- /dev/null +++ b/buildroot/package/matchbox-keyboard/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MATCHBOX_KEYBOARD + bool "matchbox-keyboard" + select BR2_PACKAGE_XLIB_LIBXTST + select BR2_PACKAGE_XLIB_LIBXFT if !BR2_PACKAGE_CAIRO + select BR2_PACKAGE_MATCHBOX_FAKEKEY + select BR2_PACKAGE_MATCHBOX_LIB + help + Virtual Keyboard diff --git a/buildroot/package/matchbox-keyboard/matchbox-keyboard.hash b/buildroot/package/matchbox-keyboard/matchbox-keyboard.hash new file mode 100644 index 0000000..76997b0 --- /dev/null +++ b/buildroot/package/matchbox-keyboard/matchbox-keyboard.hash @@ -0,0 +1,2 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-keyboard/0.1/matchbox-keyboard-0.1.tar.bz2.md5 +md5 50940321d59fee23b38a4941100abf25 matchbox-keyboard-0.1.tar.bz2 diff --git a/buildroot/package/matchbox-keyboard/matchbox-keyboard.mk b/buildroot/package/matchbox-keyboard/matchbox-keyboard.mk new file mode 100644 index 0000000..23ab5ad --- /dev/null +++ b/buildroot/package/matchbox-keyboard/matchbox-keyboard.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# matchbox-keyboard +# +################################################################################ + +MATCHBOX_KEYBOARD_VERSION = 0.1 +MATCHBOX_KEYBOARD_SOURCE = matchbox-keyboard-$(MATCHBOX_KEYBOARD_VERSION).tar.bz2 +MATCHBOX_KEYBOARD_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-keyboard/$(MATCHBOX_KEYBOARD_VERSION) +MATCHBOX_KEYBOARD_LICENSE = GPL-2.0+ +MATCHBOX_KEYBOARD_LICENSE_FILES = COPYING +MATCHBOX_KEYBOARD_DEPENDENCIES = host-pkgconf matchbox-lib matchbox-fakekey expat + +# Workaround bug in configure script +MATCHBOX_KEYBOARD_CONF_ENV = expat=yes + +define MATCHBOX_KEYBOARD_POST_INSTALL_FIXES + $(INSTALL) -D -m 0755 package/matchbox-keyboard/mb-applet-kbd-wrapper.sh \ + $(TARGET_DIR)/usr/bin/mb-applet-kbd-wrapper.sh +endef + +MATCHBOX_KEYBOARD_POST_INSTALL_TARGET_HOOKS += MATCHBOX_KEYBOARD_POST_INSTALL_FIXES + +ifeq ($(BR2_PACKAGE_CAIRO),y) +MATCHBOX_KEYBOARD_CONF_OPTS += --enable-cairo +MATCHBOX_KEYBOARD_DEPENDENCIES += cairo +else +MATCHBOX_KEYBOARD_CONF_OPTS += --disable-cairo +MATCHBOX_KEYBOARD_DEPENDENCIES += xlib_libXft +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/matchbox-keyboard/mb-applet-kbd-wrapper.sh b/buildroot/package/matchbox-keyboard/mb-applet-kbd-wrapper.sh new file mode 100644 index 0000000..be202b5 --- /dev/null +++ b/buildroot/package/matchbox-keyboard/mb-applet-kbd-wrapper.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# + +killall matchbox-keyboard +if [ ! $? -eq 0 ] +then + matchbox-keyboard & +fi diff --git a/buildroot/package/matchbox-lib/0001-index-is-legacy.patch b/buildroot/package/matchbox-lib/0001-index-is-legacy.patch new file mode 100644 index 0000000..b486fb1 --- /dev/null +++ b/buildroot/package/matchbox-lib/0001-index-is-legacy.patch @@ -0,0 +1,35 @@ +index() is a legacy function, not implemented in some uClibc +configurations. + +Signed-off-by: Thomas Petazzoni +--- + libmb/mbexp.c | 2 +- + libmb/mbmenu.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: libmatchbox-1.9/libmb/mbexp.c +=================================================================== +--- libmatchbox-1.9.orig/libmb/mbexp.c ++++ libmatchbox-1.9/libmb/mbexp.c +@@ -492,7 +492,7 @@ + + /* get the family */ + +- if (index(spec, ',') != NULL || index(spec, '-') != NULL) ++ if (strchr(spec, ',') != NULL || strchr(spec, '-') != NULL) + has_comma_delim = True; + + while (!got_family) { +Index: libmatchbox-1.9/libmb/mbmenu.c +=================================================================== +--- libmatchbox-1.9.orig/libmb/mbmenu.c ++++ libmatchbox-1.9/libmb/mbmenu.c +@@ -433,7 +433,7 @@ + { + s = p; + found = NULL; +- while(index("/\0", *p) == NULL) p++; ++ while(strchr("/\0", *p) == NULL) p++; + if (*p != '\0') { *p = '\0'; p++; }; + + item = current->items; diff --git a/buildroot/package/matchbox-lib/0002-libpng15.patch b/buildroot/package/matchbox-lib/0002-libpng15.patch new file mode 100644 index 0000000..3d68573 --- /dev/null +++ b/buildroot/package/matchbox-lib/0002-libpng15.patch @@ -0,0 +1,26 @@ +Support for libpng 1.5+ shamelessly taken from Gentoo. + +Signed-off-by: Gustavo Zacarias + +--- a/libmb/mbpixbuf.c ++++ b/libmb/mbpixbuf.c +@@ -247,7 +247,7 @@ + return NULL; + } + +- if ( setjmp( png_ptr->jmpbuf ) ) { ++ if ( setjmp( png_jmpbuf(png_ptr) ) ) { + png_destroy_read_struct( &png_ptr, &info_ptr, NULL); + fclose(fd); + return NULL; +@@ -269,8 +269,8 @@ + ( color_type == PNG_COLOR_TYPE_GRAY_ALPHA )) + png_set_gray_to_rgb(png_ptr); + +- if ( info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA +- || info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA ++ if ( color_type == PNG_COLOR_TYPE_RGB_ALPHA ++ || color_type == PNG_COLOR_TYPE_GRAY_ALPHA + ) + *has_alpha = 1; + else diff --git a/buildroot/package/matchbox-lib/0003-include-setjmp-h.patch b/buildroot/package/matchbox-lib/0003-include-setjmp-h.patch new file mode 100644 index 0000000..72e1e45 --- /dev/null +++ b/buildroot/package/matchbox-lib/0003-include-setjmp-h.patch @@ -0,0 +1,17 @@ +matchbox-lib: include setjmp.h + +Based on this upstream patch: + + http://git.yoctoproject.org/cgit/cgit.cgi/libmatchbox/commit/?id=9315bcce1f01e7d6c00161442d61d3c676794d9d + +Signed-off-by: Vicente Olivert Riera +--- libmatchbox-1.9/libmb/mbpixbuf.c.orig 2014-02-21 12:45:46.867035956 +0000 ++++ libmatchbox-1.9/libmb/mbpixbuf.c 2014-02-21 12:46:43.482949583 +0000 +@@ -22,6 +22,7 @@ + + #include + #include "mbpixbuf.h" ++#include + + #define BYTE_ORD_24_RGB 0 + #define BYTE_ORD_24_RBG 1 diff --git a/buildroot/package/matchbox-lib/Config.in b/buildroot/package/matchbox-lib/Config.in new file mode 100644 index 0000000..d758ab3 --- /dev/null +++ b/buildroot/package/matchbox-lib/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_MATCHBOX_LIB + bool "matchbox-lib" + select BR2_PACKAGE_XLIB_LIBXEXT + help + Matchbox common functionality library. diff --git a/buildroot/package/matchbox-lib/matchbox-lib.hash b/buildroot/package/matchbox-lib/matchbox-lib.hash new file mode 100644 index 0000000..6f3a653 --- /dev/null +++ b/buildroot/package/matchbox-lib/matchbox-lib.hash @@ -0,0 +1,2 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/libmatchbox/1.9/libmatchbox-1.9.tar.bz2.md5 +md5 9f73e7515cc4679171a5db180dc1343b libmatchbox-1.9.tar.bz2 diff --git a/buildroot/package/matchbox-lib/matchbox-lib.mk b/buildroot/package/matchbox-lib/matchbox-lib.mk new file mode 100644 index 0000000..5541867 --- /dev/null +++ b/buildroot/package/matchbox-lib/matchbox-lib.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# matchbox-lib +# +################################################################################ + +MATCHBOX_LIB_VERSION = 1.9 +MATCHBOX_LIB_SOURCE = libmatchbox-$(MATCHBOX_LIB_VERSION).tar.bz2 +MATCHBOX_LIB_SITE = http://downloads.yoctoproject.org/releases/matchbox/libmatchbox/$(MATCHBOX_LIB_VERSION) +MATCHBOX_LIB_LICENSE = LGPL-2.1+ +MATCHBOX_LIB_LICENSE_FILES = COPYING +MATCHBOX_LIB_INSTALL_STAGING = YES +MATCHBOX_LIB_DEPENDENCIES = host-pkgconf xlib_libXext +MATCHBOX_LIB_CONF_OPTS = --disable-doxygen-docs +MATCHBOX_LIB_CONF_ENV = LIBS="-lX11" + +define MATCHBOX_LIB_POST_INSTALL_FIXES + $(SED) 's:-I$(STAGING_DIR)/:-I/:g' \ + -e 's:-I/usr/include\( \|$$\)::g' \ + $(STAGING_DIR)/usr/lib/pkgconfig/libmb.pc +endef + +MATCHBOX_LIB_POST_INSTALL_STAGING_HOOKS += MATCHBOX_LIB_POST_INSTALL_FIXES + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +ifeq ($(BR2_PACKAGE_XLIB_LIBXPM),y) +MATCHBOX_LIB_DEPENDENCIES += xlib_libXpm +endif +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +MATCHBOX_LIB_CONF_OPTS += --enable-jpeg +MATCHBOX_LIB_DEPENDENCIES += jpeg +else +MATCHBOX_LIB_CONF_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +MATCHBOX_LIB_CONF_OPTS += --enable-png +MATCHBOX_LIB_DEPENDENCIES += libpng +else +MATCHBOX_LIB_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_PANGO)$(BR2_PACKAGE_XLIB_LIBXFT)$(BR2_PACKAGE_XLIB_LIBXRENDER),yyy) +MATCHBOX_LIB_CONF_OPTS += --enable-pango +MATCHBOX_LIB_DEPENDENCIES += pango +else +MATCHBOX_LIB_CONF_OPTS += --disable-pango +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y) +MATCHBOX_LIB_CONF_OPTS += --enable-xft +MATCHBOX_LIB_DEPENDENCIES += xlib_libXft +else +MATCHBOX_LIB_CONF_OPTS += --disable-xft +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/matchbox-panel/0001-index-is-legacy.patch b/buildroot/package/matchbox-panel/0001-index-is-legacy.patch new file mode 100644 index 0000000..925c326 --- /dev/null +++ b/buildroot/package/matchbox-panel/0001-index-is-legacy.patch @@ -0,0 +1,20 @@ +Replace the legacy index() with strchr() + +Signed-off-by: Thomas Petazzoni +--- + applets/mb-applet-menu-launcher.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: matchbox-panel-0.9.3/applets/mb-applet-menu-launcher.c +=================================================================== +--- matchbox-panel-0.9.3.orig/applets/mb-applet-menu-launcher.c ++++ matchbox-panel-0.9.3/applets/mb-applet-menu-launcher.c +@@ -280,7 +280,7 @@ + DBG("\tkey %s ", key); + if (*(++p) == '"') { p++; tc = sc; } /* skip "'s */ + val = p; +- while(index(tc,*p) == NULL) ++ while(strchr(tc,*p) == NULL) + { + if (*p == '\\' && *(p+1) == '"') p++; /* skip \" */ + p++; diff --git a/buildroot/package/matchbox-panel/0002-mb-applet-wireless.patch b/buildroot/package/matchbox-panel/0002-mb-applet-wireless.patch new file mode 100644 index 0000000..93633b3 --- /dev/null +++ b/buildroot/package/matchbox-panel/0002-mb-applet-wireless.patch @@ -0,0 +1,34 @@ +mb-applet-wireless: fix undefined reference to `log' and `lrint' + +mb-applet-wireless.o: In function `update_wireless': +.. matchbox-panel-0.9.3/applets/mb-applet-wireless.c:143: undefined reference to `log' +.. matchbox-panel-0.9.3/applets/mb-applet-wireless.c:143: undefined reference to `lrint' + +Signed-off-by: Jean-Paul Etienne +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +[arnout: add description and Signed-off-by] +--- +diff -rup matchbox-panel-0.9.3.orig/applets/Makefile.in matchbox-panel-0.9.3/applets/Makefile.in +--- matchbox-panel-0.9.3.orig/applets/Makefile.in 2015-01-23 00:16:47.594850985 +0100 ++++ matchbox-panel-0.9.3/applets/Makefile.in 2015-01-23 00:15:18.458694947 +0100 +@@ -198,7 +198,7 @@ WANT_SMALL_ICONS_FALSE = @WANT_SMALL_ICO + WANT_SMALL_ICONS_TRUE = @WANT_SMALL_ICONS_TRUE@ + WANT_WIFI_FALSE = @WANT_WIFI_FALSE@ + WANT_WIFI_TRUE = @WANT_WIFI_TRUE@ +-WIRELESS_LIBS = @WIRELESS_LIBS@ ++WIRELESS_LIBS = @WIRELESS_LIBS@ -lm + XGETTEXT = @XGETTEXT@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_STRIP = @ac_ct_STRIP@ +diff -rup matchbox-panel-0.9.3.orig/applets/mb-applet-wireless.c matchbox-panel-0.9.3/applets/mb-applet-wireless.c +--- matchbox-panel-0.9.3.orig/applets/mb-applet-wireless.c 2015-01-23 00:16:31.531822865 +0100 ++++ matchbox-panel-0.9.3/applets/mb-applet-wireless.c 2015-01-23 00:03:43.067563827 +0100 +@@ -50,6 +50,8 @@ + + #endif + ++#include ++ + #ifdef MB_HAVE_PNG + #define IMG_EXT "png" + #else diff --git a/buildroot/package/matchbox-panel/0003-mb-applet-battery.patch b/buildroot/package/matchbox-panel/0003-mb-applet-battery.patch new file mode 100644 index 0000000..585eb39 --- /dev/null +++ b/buildroot/package/matchbox-panel/0003-mb-applet-battery.patch @@ -0,0 +1,21 @@ +mb-applet-battery: don't declare line_parse as static + +Fix this build failure: + mb-applet-battery.c: In function 'read_apm': + mb-applet-battery.c:181:2: error: invalid storage class for function 'line_parse' + +Reported-by: Arnout Vandecappelle +Signed-off-by: "Yann E. MORIN" + +diff -durN matchbox-panel-0.9.3.orig/applets/mb-applet-battery.c matchbox-panel-0.9.3/applets/mb-applet-battery.c +--- matchbox-panel-0.9.3.orig/applets/mb-applet-battery.c 2006-02-07 23:27:24.000000000 +0100 ++++ matchbox-panel-0.9.3/applets/mb-applet-battery.c 2015-05-02 17:13:00.843578796 +0200 +@@ -177,7 +177,7 @@ + unsigned long present_rate; + }; + +- static int ++ int + line_parse(char *line, struct entry *e) + { + char *ptr; diff --git a/buildroot/package/matchbox-panel/Config.in b/buildroot/package/matchbox-panel/Config.in new file mode 100644 index 0000000..47bd10a --- /dev/null +++ b/buildroot/package/matchbox-panel/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MATCHBOX_PANEL + bool "matchbox-panel" + select BR2_PACKAGE_MATCHBOX_LIB + help + A flexible always present 'window bar' for holding + application launchers. diff --git a/buildroot/package/matchbox-panel/matchbox-panel.hash b/buildroot/package/matchbox-panel/matchbox-panel.hash new file mode 100644 index 0000000..82802a9 --- /dev/null +++ b/buildroot/package/matchbox-panel/matchbox-panel.hash @@ -0,0 +1,2 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-panel/0.9/matchbox-panel-0.9.3.tar.bz2.md5 +md5 56d1807636f3919e22e51896ab7ccd2e matchbox-panel-0.9.3.tar.bz2 diff --git a/buildroot/package/matchbox-panel/matchbox-panel.mk b/buildroot/package/matchbox-panel/matchbox-panel.mk new file mode 100644 index 0000000..344d8fd --- /dev/null +++ b/buildroot/package/matchbox-panel/matchbox-panel.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# matchbox-panel +# +################################################################################ + +MATCHBOX_PANEL_VERSION_MAJOR = 0.9 +MATCHBOX_PANEL_VERSION = $(MATCHBOX_PANEL_VERSION_MAJOR).3 +MATCHBOX_PANEL_SOURCE = matchbox-panel-$(MATCHBOX_PANEL_VERSION).tar.bz2 +MATCHBOX_PANEL_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-panel/$(MATCHBOX_PANEL_VERSION_MAJOR) +MATCHBOX_PANEL_LICENSE = GPL-2.0+ +MATCHBOX_PANEL_LICENSE_FILES = COPYING +MATCHBOX_PANEL_DEPENDENCIES = matchbox-lib +MATCHBOX_PANEL_CONF_OPTS = --enable-expat --enable-dnotify + +ifeq ($(BR2_PACKAGE_MATCHBOX_STARTUP_MONITOR),y) +MATCHBOX_PANEL_CONF_OPTS += --enable-startup-notification +MATCHBOX_PANEL_DEPENDENCIES += matchbox-startup-monitor +else +MATCHBOX_PANEL_CONF_OPTS += --disable-startup-notification +endif + +# Using ACPI is only possible on x86 (32- or 64-bit) or AArch64 +ifeq ($(BR2_aarch64)$(BR2_i386)$(BR2_x86_64),y) +MATCHBOX_PANEL_CONF_OPTS += --enable-acpi-linux +else +MATCHBOX_PANEL_CONF_OPTS += --disable-acpi-linux +endif + +ifeq ($(BR2_PACKAGE_WIRELESS_TOOLS_LIB),y) +MATCHBOX_PANEL_DEPENDENCIES += wireless_tools +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/matchbox-startup-monitor/0001-true-false.patch b/buildroot/package/matchbox-startup-monitor/0001-true-false.patch new file mode 100644 index 0000000..c92a077 --- /dev/null +++ b/buildroot/package/matchbox-startup-monitor/0001-true-false.patch @@ -0,0 +1,21 @@ +mbmonitor uses TRUE / FALSE without defining them + +Signed-off-by: Peter Korsgaard +--- + mbmonitor.c | 3 +++ + 1 file changed, 3 insertions(+) + +Index: mb-applet-startup-monitor-0.1/mbmonitor.c +=================================================================== +--- mb-applet-startup-monitor-0.1.orig/mbmonitor.c ++++ mb-applet-startup-monitor-0.1/mbmonitor.c +@@ -43,6 +43,9 @@ + #define POLLTIME 10 + #define HOURGLASS_N_FRAMES 8 + ++#define FALSE 0 ++#define TRUE 1 ++ + typedef struct LaunchList LaunchList; + + struct LaunchList diff --git a/buildroot/package/matchbox-startup-monitor/Config.in b/buildroot/package/matchbox-startup-monitor/Config.in new file mode 100644 index 0000000..9dce60e --- /dev/null +++ b/buildroot/package/matchbox-startup-monitor/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MATCHBOX_STARTUP_MONITOR + bool "matchbox-startup-monitor" + select BR2_PACKAGE_MATCHBOX_LIB + select BR2_PACKAGE_STARTUP_NOTIFICATION + help + Matchbox Panel Startup Monitor Applet. diff --git a/buildroot/package/matchbox-startup-monitor/matchbox-startup-monitor.hash b/buildroot/package/matchbox-startup-monitor/matchbox-startup-monitor.hash new file mode 100644 index 0000000..b08e228 --- /dev/null +++ b/buildroot/package/matchbox-startup-monitor/matchbox-startup-monitor.hash @@ -0,0 +1,2 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/mb-applet-startup-monitor/0.1/mb-applet-startup-monitor-0.1.tar.bz2.md5 +md5 ea4b3c1ebee3f731b77a2d4bf8e9aa3c mb-applet-startup-monitor-0.1.tar.bz2 diff --git a/buildroot/package/matchbox-startup-monitor/matchbox-startup-monitor.mk b/buildroot/package/matchbox-startup-monitor/matchbox-startup-monitor.mk new file mode 100644 index 0000000..c80e753 --- /dev/null +++ b/buildroot/package/matchbox-startup-monitor/matchbox-startup-monitor.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# matchbox-startup-monitor +# +################################################################################ + +MATCHBOX_STARTUP_MONITOR_VERSION = 0.1 +MATCHBOX_STARTUP_MONITOR_SOURCE = mb-applet-startup-monitor-$(MATCHBOX_STARTUP_MONITOR_VERSION).tar.bz2 +MATCHBOX_STARTUP_MONITOR_SITE = http://downloads.yoctoproject.org/releases/matchbox/mb-applet-startup-monitor/$(MATCHBOX_STARTUP_MONITOR_VERSION) +MATCHBOX_STARTUP_MONITOR_LICENSE = GPL-2.0+ +MATCHBOX_STARTUP_MONITOR_LICENSE_FILES = COPYING +MATCHBOX_STARTUP_MONITOR_DEPENDENCIES = matchbox-lib startup-notification + +$(eval $(autotools-package)) diff --git a/buildroot/package/matchbox/0001-defaulttheme.patch b/buildroot/package/matchbox/0001-defaulttheme.patch new file mode 100644 index 0000000..b4da664 --- /dev/null +++ b/buildroot/package/matchbox/0001-defaulttheme.patch @@ -0,0 +1,47 @@ +[PATCH] fix mbtheme build issue when png support is disabled + +DEFAULTTHEME{,NAME} is not defined when png support is disabled, leading +to compile errors in mbtheme.c: + +mbtheme.c: In function 'show_parse_error': +mbtheme.c:2422:28: error: 'DEFAULTTHEME' undeclared (first use in this function) +mbtheme.c:2422:28: note: each undeclared identifier is reported only once for each function it appears in +mbtheme.c: In function 'mbtheme_init': +mbtheme.c:2448:30: error: 'DEFAULTTHEME' undeclared (first use in this function) +mbtheme.c:2470:25: error: 'DEFAULTTHEMENAME' undeclared (first use in this function) + +Fix it by unconditionally defining them as the values used are the same +in png / !png cases anyway. + +Signed-off-by: Peter Korsgaard +--- + src/structs.h | 9 --------- + 1 file changed, 9 deletions(-) + +Index: matchbox-window-manager-1.2/src/structs.h +=================================================================== +--- matchbox-window-manager-1.2.orig/src/structs.h ++++ matchbox-window-manager-1.2/src/structs.h +@@ -81,8 +81,6 @@ + + #define GENERIC_ICON PKGDATADIR "/mbnoapp.xpm" + +-#ifdef MB_HAVE_PNG +- + #define DEFAULT_THEME DATADIR "/themes/Default/matchbox/theme.xml" + + #define DEFAULTTHEME DATADIR "/themes/Default/matchbox/theme.xml" +@@ -91,13 +89,6 @@ + + #define DEFAULTTHEMENAME "Default" + +-#else +- +-#define DEFAULT_THEME DATADIR "/themes/Default/matchbox/theme.xml" +-#define DEFAULT_THEME_NAME "Default" +- +-#endif +- + #define CONFDEFAULTS PKGDATADIR "/defaults" + + /* Simple Macros */ diff --git a/buildroot/package/matchbox/Config.in b/buildroot/package/matchbox/Config.in new file mode 100644 index 0000000..9d21290 --- /dev/null +++ b/buildroot/package/matchbox/Config.in @@ -0,0 +1,35 @@ +menuconfig BR2_PACKAGE_MATCHBOX + bool "matchbox" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_MATCHBOX_LIB + help + Matchbox is an Open Source base environment for the X Window + System running on non-desktop embedded platforms such as + handhelds, set-top boxes, kiosks and anything else for which + screen space, input mechanisms or system resources are + limited. + + https://www.yoctoproject.org/tools-resources/projects/matchbox + +if BR2_PACKAGE_MATCHBOX + +config BR2_PACKAGE_MATCHBOX_SM + bool "session manager" + select BR2_PACKAGE_XLIB_LIBSM + help + Enable support for the Session Manager. + +comment "matchbox utilities" + +source "package/matchbox-common/Config.in" +source "package/matchbox-desktop/Config.in" +source "package/matchbox-fakekey/Config.in" +source "package/matchbox-keyboard/Config.in" +source "package/matchbox-lib/Config.in" +source "package/matchbox-panel/Config.in" +source "package/matchbox-startup-monitor/Config.in" + +endif diff --git a/buildroot/package/matchbox/matchbox.hash b/buildroot/package/matchbox/matchbox.hash new file mode 100644 index 0000000..f00ed4e --- /dev/null +++ b/buildroot/package/matchbox/matchbox.hash @@ -0,0 +1,2 @@ +# From http://downloads.yoctoproject.org/releases/matchbox/matchbox-window-manager/1.2/matchbox-window-manager-1.2.tar.bz2.md5 +md5 3e158dcf57823b55c926d95b245500fb matchbox-window-manager-1.2.tar.bz2 diff --git a/buildroot/package/matchbox/matchbox.mk b/buildroot/package/matchbox/matchbox.mk new file mode 100644 index 0000000..c0a2778 --- /dev/null +++ b/buildroot/package/matchbox/matchbox.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# matchbox +# +################################################################################ + +MATCHBOX_VERSION = 1.2 +MATCHBOX_SOURCE = matchbox-window-manager-$(MATCHBOX_VERSION).tar.bz2 +MATCHBOX_SITE = http://downloads.yoctoproject.org/releases/matchbox/matchbox-window-manager/$(MATCHBOX_VERSION) +MATCHBOX_LICENSE = GPL-2.0+ +MATCHBOX_LICENSE_FILES = COPYING + +MATCHBOX_DEPENDENCIES = matchbox-lib +MATCHBOX_CONF_OPTS = \ + --enable-expat \ + --disable-gconf \ + --disable-composite \ + --disable-standalone \ + --disable-standalone-xft + +# Workaround bug in configure script +MATCHBOX_CONF_ENV = expat=yes + +ifeq ($(BR2_PACKAGE_STARTUP_NOTIFICATION),y) +MATCHBOX_CONF_OPTS += --enable-startup-notification +MATCHBOX_DEPENDENCIES += startup-notification +else +MATCHBOX_CONF_OPTS += --disable-startup-notification +endif + +ifeq ($(BR2_PACKAGE_MATCHBOX_SM),y) +MATCHBOX_CONF_OPTS += --enable-session +MATCHBOX_DEPENDENCIES += xlib_libSM +else +MATCHBOX_CONF_OPTS += --disable-session +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +MATCHBOX_DEPENDENCIES += xlib_libXcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +MATCHBOX_DEPENDENCIES += xlib_libXfixes +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/mbedtls/Config.in b/buildroot/package/mbedtls/Config.in new file mode 100644 index 0000000..a39ba65 --- /dev/null +++ b/buildroot/package/mbedtls/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_MBEDTLS + bool "mbedtls" + help + mbed TLS (formerly known as PolarSSL) makes it trivially easy + for developers to include cryptographic and SSL/TLS + capabilities in their (embedded) products, facilitating this + functionality with a minimal coding footprint. + + https://tls.mbed.org/ + +if BR2_PACKAGE_MBEDTLS + +config BR2_PACKAGE_MBEDTLS_PROGRAMS + bool "mbedtls programs" + depends on BR2_USE_MMU # fork() + help + This option enables the installation and the build of + mbed TLS companion programs. + +config BR2_PACKAGE_MBEDTLS_COMPRESSION + bool "enable compression support" + select BR2_PACKAGE_ZLIB + help + Enable support for compression of the content data before it + enters the secure channel as described in RFC 3749. + + Warning: TLS compression may make you vulnerable to the + CRIME attack. You should not enable it unless you know for + sure CRIME and similar attacks are not applicable to your + particular situation. + +endif diff --git a/buildroot/package/mbedtls/mbedtls.hash b/buildroot/package/mbedtls/mbedtls.hash new file mode 100644 index 0000000..16f03fb --- /dev/null +++ b/buildroot/package/mbedtls/mbedtls.hash @@ -0,0 +1,5 @@ +# From https://tls.mbed.org/tech-updates/releases/mbedtls-2.9.0-2.7.3-and-2.1.12-released +sha1 8352f6713a9ee695f6f19e893c0e85941af71967 mbedtls-2.7.3-apache.tgz +sha256 05282af7d95fedb2430c248ffe3081646800b8dae9071f8da11a07100963d765 mbedtls-2.7.3-apache.tgz +# Locally calculated +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache-2.0.txt diff --git a/buildroot/package/mbedtls/mbedtls.mk b/buildroot/package/mbedtls/mbedtls.mk new file mode 100644 index 0000000..e6012dc --- /dev/null +++ b/buildroot/package/mbedtls/mbedtls.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# mbedtls +# +################################################################################ + +MBEDTLS_SITE = https://tls.mbed.org/code/releases +MBEDTLS_VERSION = 2.7.3 +MBEDTLS_SOURCE = mbedtls-$(MBEDTLS_VERSION)-apache.tgz +MBEDTLS_CONF_OPTS = \ + -DENABLE_PROGRAMS=$(if $(BR2_PACKAGE_MBEDTLS_PROGRAMS),ON,OFF) \ + -DENABLE_TESTING=OFF +MBEDTLS_INSTALL_STAGING = YES +MBEDTLS_LICENSE = Apache-2.0 +MBEDTLS_LICENSE_FILES = apache-2.0.txt + +# This is mandatory for hiawatha +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +define MBEDTLS_ENABLE_THREADING + $(SED) "s://#define MBEDTLS_THREADING_C:#define MBEDTLS_THREADING_C:" \ + $(@D)/include/mbedtls/config.h + $(SED) "s://#define MBEDTLS_THREADING_PTHREAD:#define MBEDTLS_THREADING_PTHREAD:" \ + $(@D)/include/mbedtls/config.h +endef +MBEDTLS_POST_PATCH_HOOKS += MBEDTLS_ENABLE_THREADING +ifeq ($(BR2_STATIC_LIBS),y) +MBEDTLS_CONF_OPTS += -DLINK_WITH_PTHREAD=ON +endif +endif + +ifeq ($(BR2_STATIC_LIBS),y) +MBEDTLS_CONF_OPTS += \ + -DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +MBEDTLS_CONF_OPTS += \ + -DUSE_SHARED_MBEDTLS_LIBRARY=ON -DUSE_STATIC_MBEDTLS_LIBRARY=ON +else ifeq ($(BR2_SHARED_LIBS),y) +MBEDTLS_CONF_OPTS += \ + -DUSE_SHARED_MBEDTLS_LIBRARY=ON -DUSE_STATIC_MBEDTLS_LIBRARY=OFF +endif + +ifeq ($(BR2_PACKAGE_MBEDTLS_COMPRESSION),y) +MBEDTLS_CONF_OPTS += -DENABLE_ZLIB_SUPPORT=ON +MBEDTLS_DEPENDENCIES += zlib +define MBEDTLS_ENABLE_ZLIB + $(SED) "s://#define MBEDTLS_ZLIB_SUPPORT:#define MBEDTLS_ZLIB_SUPPORT:" \ + $(@D)/include/mbedtls/config.h +endef +MBEDTLS_POST_PATCH_HOOKS += MBEDTLS_ENABLE_ZLIB +else +MBEDTLS_CONF_OPTS += -DENABLE_ZLIB_SUPPORT=OFF +endif + +define MBEDTLS_DISABLE_ASM + $(SED) '/^#define MBEDTLS_AESNI_C/d' \ + $(@D)/include/mbedtls/config.h + $(SED) '/^#define MBEDTLS_HAVE_ASM/d' \ + $(@D)/include/mbedtls/config.h + $(SED) '/^#define MBEDTLS_PADLOCK_C/d' \ + $(@D)/include/mbedtls/config.h +endef + +# ARM in thumb mode breaks debugging with asm optimizations +# Microblaze asm optimizations are broken in general +# MIPS R6 asm is not yet supported +ifeq ($(BR2_ENABLE_DEBUG)$(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_ARM_INSTRUCTIONS_THUMB2),yy) +MBEDTLS_POST_CONFIGURE_HOOKS += MBEDTLS_DISABLE_ASM +else ifeq ($(BR2_microblaze)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) +MBEDTLS_POST_CONFIGURE_HOOKS += MBEDTLS_DISABLE_ASM +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/mc/Config.in b/buildroot/package/mc/Config.in new file mode 100644 index 0000000..61f351c --- /dev/null +++ b/buildroot/package/mc/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_MC + bool "mc" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2, slang + select BR2_PACKAGE_LIBGLIB2 + # mc prefers slang, but can use ncurses too + select BR2_PACKAGE_SLANG if !BR2_PACKAGE_NCURSES + help + GNU Midnight Commander is a visual file manager, licensed + under GNU General Public License. It can use either SLang + (preferred) or ncurses for screen handling; if neither is + enabled SLang will be automatically chosen. + + https://www.midnight-commander.org + +comment "mc needs a toolchain w/ threads, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_USE_MMU diff --git a/buildroot/package/mc/mc.hash b/buildroot/package/mc/mc.hash new file mode 100644 index 0000000..d980b8a --- /dev/null +++ b/buildroot/package/mc/mc.hash @@ -0,0 +1,4 @@ +# Hash from http://ftp.midnight-commander.org/mc-4.8.20.sha256: +sha256 017ee7f4f8ae420a04f4d6fcebaabe5b494661075c75442c76e9c8b1923d501c mc-4.8.20.tar.xz +# sha256 locally computed: +sha256 5576bbec76296e1c8e081f7037ebd01bdada388635f58d844a2f20d37bbe4284 COPYING diff --git a/buildroot/package/mc/mc.mk b/buildroot/package/mc/mc.mk new file mode 100644 index 0000000..a83c5f0 --- /dev/null +++ b/buildroot/package/mc/mc.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# mc +# +################################################################################ + +MC_VERSION = 4.8.20 +MC_SOURCE = mc-$(MC_VERSION).tar.xz +MC_SITE = http://ftp.midnight-commander.org +MC_LICENSE = GPL-3.0+ +MC_LICENSE_FILES = COPYING +MC_DEPENDENCIES = libglib2 host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +MC_CONF_OPTS += --enable-vfs-sftp +MC_DEPENDENCIES += libssh2 +else +MC_CONF_OPTS += --disable-vfs-sftp +endif + +# mc prefers slang, so use that if enabled, otherwise +# fallback to using ncurses. +# Either or both will be enabled, but we prefer slang. +ifeq ($(BR2_PACKAGE_SLANG),y) +MC_DEPENDENCIES += slang +MC_CONF_OPTS += --with-screen=slang +else +MC_DEPENDENCIES += ncurses +MC_CONF_OPTS += --with-screen=ncurses +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +MC_CONF_OPTS += --with-x +MC_DEPENDENCIES += xlib_libX11 +else +MC_CONF_OPTS += --without-x +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/mcelog/Config.in b/buildroot/package/mcelog/Config.in new file mode 100644 index 0000000..55ebb7c --- /dev/null +++ b/buildroot/package/mcelog/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MCELOG + bool "mcelog" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_USE_MMU # fork() + help + mcelog processes machine checks (in particular memory and + CPU hardware errors) on modern x86 Linux systems. + + http://www.mcelog.org/ diff --git a/buildroot/package/mcelog/mcelog.hash b/buildroot/package/mcelog/mcelog.hash new file mode 100644 index 0000000..1a9dd60 --- /dev/null +++ b/buildroot/package/mcelog/mcelog.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d8f3dde21b2e0d76740f374385817c11b3fd69b095a186a6dd12c7b0ba0cca8f mcelog-v153.tar.gz diff --git a/buildroot/package/mcelog/mcelog.mk b/buildroot/package/mcelog/mcelog.mk new file mode 100644 index 0000000..dca6a18 --- /dev/null +++ b/buildroot/package/mcelog/mcelog.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# mcelog +# +################################################################################ + +MCELOG_VERSION = v153 +MCELOG_SITE = $(BR2_KERNEL_MIRROR)/scm/utils/cpu/mce/mcelog.git +MCELOG_SITE_METHOD = git +MCELOG_LICENSE = GPL-2.0 +MCELOG_LICENSE_FILES = README.md + +define MCELOG_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define MCELOG_INSTALL_TARGET_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mcrypt/0001-CVE-2012-4409.patch b/buildroot/package/mcrypt/0001-CVE-2012-4409.patch new file mode 100644 index 0000000..97c658b --- /dev/null +++ b/buildroot/package/mcrypt/0001-CVE-2012-4409.patch @@ -0,0 +1,25 @@ +From 3efb40e17ce4f76717ae17a1ce1e1f747ddf59fd Mon Sep 17 00:00:00 2001 +From: Alon Bar-Lev +Date: Sat, 22 Dec 2012 22:37:06 +0200 +Subject: [PATCH] cleanup: buffer overflow + +--- + src/extra.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/src/extra.c b/src/extra.c +index 3082f82..c7a1ac0 100644 +--- a/src/extra.c ++++ b/src/extra.c +@@ -241,6 +241,8 @@ int check_file_head(FILE * fstream, char *algorithm, char *mode, + if (m_getbit(6, flags) == 1) { /* if the salt bit is set */ + if (m_getbit(0, sflag) != 0) { /* if the first bit is set */ + *salt_size = m_setbit(0, sflag, 0); ++ if (*salt_size > sizeof(tmp_buf)) ++ err_quit(_("Salt is too long\n")); + if (*salt_size > 0) { + fread(tmp_buf, 1, *salt_size, + fstream); +-- +1.7.8.6 + diff --git a/buildroot/package/mcrypt/0002-CVE-2012-4426.patch b/buildroot/package/mcrypt/0002-CVE-2012-4426.patch new file mode 100644 index 0000000..708d4a5 --- /dev/null +++ b/buildroot/package/mcrypt/0002-CVE-2012-4426.patch @@ -0,0 +1,35 @@ +Patch taken from gentoo. + +Signed-off-by: Gustavo Zacarias + +--- a/src/errors.c ++++ b/src/errors.c +@@ -25,24 +25,24 @@ + + void err_quit(char *errmsg) + { +- fprintf(stderr, errmsg); ++ fprintf(stderr, "%s", errmsg); + exit(-1); + } + + void err_warn(char *errmsg) + { + if (quiet <= 1) +- fprintf(stderr, errmsg); ++ fprintf(stderr, "%s", errmsg); + } + + void err_info(char *errmsg) + { + if (quiet == 0) +- fprintf(stderr, errmsg); ++ fprintf(stderr, "%s", errmsg); + } + + void err_crit(char *errmsg) + { + if (quiet <= 2) +- fprintf(stderr, errmsg); ++ fprintf(stderr, "%s", errmsg); + } diff --git a/buildroot/package/mcrypt/0003-CVE-2012-4527.patch b/buildroot/package/mcrypt/0003-CVE-2012-4527.patch new file mode 100644 index 0000000..a8cf6f4 --- /dev/null +++ b/buildroot/package/mcrypt/0003-CVE-2012-4527.patch @@ -0,0 +1,99 @@ +Fix for CVE-2012-4527. +Authored by Attila Bogar and Jean-Michel Vourgère + +Signed-off-by: Gustavo Zacarias + +diff -Nura mcrypt-2.6.8.orig/src/mcrypt.c mcrypt-2.6.8/src/mcrypt.c +--- mcrypt-2.6.8.orig/src/mcrypt.c 2013-01-14 19:15:49.465925072 -0300 ++++ mcrypt-2.6.8/src/mcrypt.c 2013-01-14 19:28:13.711478000 -0300 +@@ -44,7 +44,9 @@ + static char rcsid[] = + "$Id: mcrypt.c,v 1.2 2007/11/07 17:10:21 nmav Exp $"; + +-char tmperr[128]; ++/* Temporary error message can contain one file name and 1k of text */ ++#define ERRWIDTH ((PATH_MAX)+1024) ++char tmperr[ERRWIDTH]; + unsigned int stream_flag = FALSE; + char *keymode = NULL; + char *mode = NULL; +@@ -482,7 +484,7 @@ + #ifdef HAVE_STAT + if (stream_flag == FALSE) { + if (is_normal_file(file[i]) == FALSE) { +- sprintf(tmperr, ++ snprintf(tmperr, ERRWIDTH, + _ + ("%s: %s is not a regular file. Skipping...\n"), + program_name, file[i]); +@@ -501,7 +503,7 @@ + dinfile = file[i]; + if ((isatty(fileno((FILE *) (stdin))) == 1) + && (stream_flag == TRUE) && (force == 0)) { /* not a tty */ +- sprintf(tmperr, ++ snprintf(tmperr, ERRWIDTH, + _ + ("%s: Encrypted data will not be read from a terminal.\n"), + program_name); +@@ -520,7 +522,7 @@ + einfile = file[i]; + if ((isatty(fileno((FILE *) (stdout))) == 1) + && (stream_flag == TRUE) && (force == 0)) { /* not a tty */ +- sprintf(tmperr, ++ snprintf(tmperr, ERRWIDTH, + _ + ("%s: Encrypted data will not be written to a terminal.\n"), + program_name); +@@ -544,7 +546,7 @@ + strcpy(outfile, einfile); + /* if file has already the .nc ignore it */ + if (strstr(outfile, ".nc") != NULL) { +- sprintf(tmperr, ++ snprintf(tmperr, ERRWIDTH, + _ + ("%s: file %s has the .nc suffix... skipping...\n"), + program_name, outfile); +@@ -590,10 +592,10 @@ + + if (x == 0) { + if (stream_flag == FALSE) { +- sprintf(tmperr, _("File %s was decrypted.\n"), dinfile); ++ snprintf(tmperr, ERRWIDTH, _("File %s was decrypted.\n"), dinfile); + err_warn(tmperr); + } else { +- sprintf(tmperr, _("Stdin was decrypted.\n")); ++ snprintf(tmperr, ERRWIDTH, _("Stdin was decrypted.\n")); + err_warn(tmperr); + } + #ifdef HAVE_STAT +@@ -610,7 +612,7 @@ + + } else { + if (stream_flag == FALSE) { +- sprintf(tmperr, ++ snprintf(tmperr, ERRWIDTH, + _ + ("File %s was NOT decrypted successfully.\n"), + dinfile); +@@ -636,10 +638,10 @@ + + if (x == 0) { + if (stream_flag == FALSE) { +- sprintf(tmperr, _("File %s was encrypted.\n"), einfile); ++ snprintf(tmperr, ERRWIDTH, _("File %s was encrypted.\n"), einfile); + err_warn(tmperr); + } else { +- sprintf(tmperr, _("Stdin was encrypted.\n")); ++ snprintf(tmperr, ERRWIDTH, _("Stdin was encrypted.\n")); + err_warn(tmperr); + } + #ifdef HAVE_STAT +@@ -655,7 +657,7 @@ + + } else { + if (stream_flag == FALSE) { +- sprintf(tmperr, ++ snprintf(tmperr, ERRWIDTH, + _ + ("File %s was NOT encrypted successfully.\n"), + einfile); diff --git a/buildroot/package/mcrypt/0004-no-rpath.patch b/buildroot/package/mcrypt/0004-no-rpath.patch new file mode 100644 index 0000000..a0813bc --- /dev/null +++ b/buildroot/package/mcrypt/0004-no-rpath.patch @@ -0,0 +1,17 @@ +Patch out rpath hardcoding since it completely ignores --disable-rpath +and other configure ways. + +Signed-off-by: Gustavo Zacarias + +diff -Nura mcrypt-2.6.8.orig/config.rpath mcrypt-2.6.8/config.rpath +--- mcrypt-2.6.8.orig/config.rpath 2013-01-07 13:05:22.626883480 -0300 ++++ mcrypt-2.6.8/config.rpath 2013-01-07 13:12:47.196090608 -0300 +@@ -153,7 +153,7 @@ + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_flag_spec= + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken diff --git a/buildroot/package/mcrypt/Config.in b/buildroot/package/mcrypt/Config.in new file mode 100644 index 0000000..e3b9541 --- /dev/null +++ b/buildroot/package/mcrypt/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MCRYPT + bool "mcrypt" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBMCRYPT + select BR2_PACKAGE_LIBMHASH + help + MCrypt is a replacement for the old crypt() package and + crypt(1) command, with extensions. + It allows developers to use a wide range of encryption + functions, without making drastic changes to their code. + + http://mcrypt.sourceforge.net/ diff --git a/buildroot/package/mcrypt/mcrypt.hash b/buildroot/package/mcrypt/mcrypt.hash new file mode 100644 index 0000000..cf29eaa --- /dev/null +++ b/buildroot/package/mcrypt/mcrypt.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 5145aa844e54cca89ddab6fb7dd9e5952811d8d787c4f4bf27eb261e6c182098 mcrypt-2.6.8.tar.gz diff --git a/buildroot/package/mcrypt/mcrypt.mk b/buildroot/package/mcrypt/mcrypt.mk new file mode 100644 index 0000000..f98895f --- /dev/null +++ b/buildroot/package/mcrypt/mcrypt.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# mcrypt +# +################################################################################ + +MCRYPT_VERSION = 2.6.8 +MCRYPT_SITE = http://downloads.sourceforge.net/project/mcrypt/MCrypt/$(MCRYPT_VERSION) +MCRYPT_DEPENDENCIES = libmcrypt libmhash \ + $(if $(BR2_PACKAGE_ZLIB),zlib) \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(TARGET_NLS_DEPENDENCIES) +MCRYPT_CONF_OPTS = --with-libmcrypt-prefix=$(STAGING_DIR)/usr +MCRYPT_LICENSE = GPL-3.0 +MCRYPT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/mdadm/0010-add-install-targets-for-mdadm-and-mdmon.patch b/buildroot/package/mdadm/0010-add-install-targets-for-mdadm-and-mdmon.patch new file mode 100644 index 0000000..15df755 --- /dev/null +++ b/buildroot/package/mdadm/0010-add-install-targets-for-mdadm-and-mdmon.patch @@ -0,0 +1,32 @@ +From a1a9243671b1e23123f57e879890325154b8e00d Mon Sep 17 00:00:00 2001 +From: Christophe Vu-Brugier +Date: Wed, 6 Mar 2013 16:03:14 +0100 +Subject: [PATCH] Add install targets for mdadm and mdmon + + +Signed-off-by: Christophe Vu-Brugier +--- + Makefile | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 315455b..27d8eeb 100644 +--- a/Makefile ++++ b/Makefile +@@ -231,8 +231,12 @@ $(MON_OBJS) : $(INCL) mdmon.h + sha1.o : sha1.c sha1.h md5.h + $(CC) $(CFLAGS) -DHAVE_STDINT_H -o sha1.o -c sha1.c + +-install : mdadm mdmon install-man install-udev ++install : install-mdadm install-mdmon install-man install-udev ++ ++install-mdadm : + $(INSTALL) -D $(STRIP) -m 755 mdadm $(DESTDIR)$(BINDIR)/mdadm ++ ++install-mdmon : + $(INSTALL) -D $(STRIP) -m 755 mdmon $(DESTDIR)$(BINDIR)/mdmon + + install-static : mdadm.static install-man +-- +1.7.10.4 + diff --git a/buildroot/package/mdadm/Config.in b/buildroot/package/mdadm/Config.in new file mode 100644 index 0000000..61d631c --- /dev/null +++ b/buildroot/package/mdadm/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MDADM + bool "mdadm" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_USE_MMU # fork() + help + Utility for managing Linux Software RAID arrays. + + http://neil.brown.name/blog/mdadm + +comment "mdadm needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/buildroot/package/mdadm/mdadm.hash b/buildroot/package/mdadm/mdadm.hash new file mode 100644 index 0000000..6132a6d --- /dev/null +++ b/buildroot/package/mdadm/mdadm.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/utils/raid/mdadm/sha256sums.asc +sha256 1d6ae7f24ced3a0fa7b5613b32f4a589bb4881e3946a5a2c3724056254ada3a9 mdadm-4.0.tar.xz diff --git a/buildroot/package/mdadm/mdadm.mk b/buildroot/package/mdadm/mdadm.mk new file mode 100644 index 0000000..207b0be --- /dev/null +++ b/buildroot/package/mdadm/mdadm.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# mdadm +# +################################################################################ + +MDADM_VERSION = 4.0 +MDADM_SOURCE = mdadm-$(MDADM_VERSION).tar.xz +MDADM_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/raid/mdadm +MDADM_LICENSE = GPL-2.0+ +MDADM_LICENSE_FILES = COPYING + +MDADM_MAKE_OPTS = \ + CFLAGS="$(TARGET_CFLAGS) -DNO_COROSYNC -DNO_DLM" CC="$(TARGET_CC)" CHECK_RUN_DIR=0 -C $(MDADM_DIR) mdadm + +MDADM_INSTALL_TARGET_OPTS = \ + DESTDIR=$(TARGET_DIR)/usr -C $(MDADM_DIR) install-mdadm + +define MDADM_CONFIGURE_CMDS + # Do nothing +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/mediastreamer/0001-fix-compilation-issue-with-latest-bctoobox.patch b/buildroot/package/mediastreamer/0001-fix-compilation-issue-with-latest-bctoobox.patch new file mode 100644 index 0000000..7bc9733 --- /dev/null +++ b/buildroot/package/mediastreamer/0001-fix-compilation-issue-with-latest-bctoobox.patch @@ -0,0 +1,38 @@ +From 26f884bf977977041fe6f98a0af186be1580bf22 Mon Sep 17 00:00:00 2001 +From: Simon Morlat +Date: Thu, 29 Sep 2016 15:26:18 +0200 +Subject: [PATCH] fix compilation issue with latest bctoobox + +[Upstream commit https://github.com/BelledonneCommunications/mediastreamer2/commit/26f884bf977977041fe6f98a0af186be1580bf22] +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 2 +- + src/crypto/dtls_srtp.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 7ab20a08f..244d87275 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1116,7 +1116,7 @@ fi + + + dnl check bctoolbox library +-PKG_CHECK_MODULES(BCTOOLBOX, bctoolbox >= 0.0.0, found_bctoolbox=true, found_bctoolbox=false) ++PKG_CHECK_MODULES(BCTOOLBOX, bctoolbox >= 0.4.0, found_bctoolbox=true, found_bctoolbox=false) + if test "$found_bctoolbox" = "true" ; then + LIBS="$LIBS $BCTOOLBOX_LIBS" + CFLAGS="$CFLAGS $BCTOOLBOX_CFLAGS" +diff --git a/src/crypto/dtls_srtp.c b/src/crypto/dtls_srtp.c +index e2c8e1c44..fd37eb5cb 100644 +--- a/src/crypto/dtls_srtp.c ++++ b/src/crypto/dtls_srtp.c +@@ -705,7 +705,7 @@ static int ms_dtls_srtp_initialise_bctbx_dtls_context(DtlsBcToolBoxContext *dtls + bctbx_ssl_config_set_authmode(dtlsContext->ssl_config, BCTBX_SSL_VERIFY_OPTIONAL); + bctbx_ssl_config_set_own_cert( dtlsContext->ssl_config, dtlsContext->crt, dtlsContext->pkey ); + /* This is useless as peer would certainly be a self signed certificate and we won't verify it but avoid runtime warnings */ +- bctbx_ssl_config_set_ca_chain(dtlsContext->ssl_config, dtlsContext->crt, NULL); ++ bctbx_ssl_config_set_ca_chain(dtlsContext->ssl_config, dtlsContext->crt); + + /* we are not ready yet to actually start the ssl context, this will be done by calling bctbx_ssl_setup when stream starts */ + return 0; diff --git a/buildroot/package/mediastreamer/Config.in b/buildroot/package/mediastreamer/Config.in new file mode 100644 index 0000000..afaed4a --- /dev/null +++ b/buildroot/package/mediastreamer/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_MEDIASTREAMER + bool "mediastreamer" + depends on BR2_INSTALL_LIBSTDCPP # ortp + depends on BR2_TOOLCHAIN_HAS_THREADS # ortp + select BR2_PACKAGE_ORTP + help + Mediastreamer is a powerful and lightweighted streaming + engine specialized for voice/video telephony applications. + + It is the library that is responsible for all the receiving + and sending of multimedia streams in linphone, including + voice/video capture, encoding and decoding, and rendering. + + http://www.linphone.org/eng/documentation/dev/mediastreamer2.html + +comment "mediastreamer needs a toolchain w/ threads, C++" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/mediastreamer/mediastreamer.hash b/buildroot/package/mediastreamer/mediastreamer.hash new file mode 100644 index 0000000..5f26b54 --- /dev/null +++ b/buildroot/package/mediastreamer/mediastreamer.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1144849c0c96abafb1153adf56109f0f195a9e4a53cf28cb611bbca7a9012c1a mediastreamer-2.14.0.tar.gz diff --git a/buildroot/package/mediastreamer/mediastreamer.mk b/buildroot/package/mediastreamer/mediastreamer.mk new file mode 100644 index 0000000..1276cfa --- /dev/null +++ b/buildroot/package/mediastreamer/mediastreamer.mk @@ -0,0 +1,113 @@ +################################################################################ +# +# mediastreamer +# +################################################################################ + +MEDIASTREAMER_VERSION = 2.14.0 +MEDIASTREAMER_SITE = http://download.savannah.nongnu.org/releases/linphone/mediastreamer +MEDIASTREAMER_INSTALL_STAGING = YES +# host-vim needed for the xxd utility +MEDIASTREAMER_DEPENDENCIES = host-intltool host-pkgconf ortp host-gettext host-vim +# tests fail linking on some architectures, so disable them +MEDIASTREAMER_CONF_OPTS = --disable-tests --disable-glx --disable-strict +MEDIASTREAMER_LICENSE = GPL-2.0+ +MEDIASTREAMER_LICENSE_FILES = COPYING + +# patching configure.ac +MEDIASTREAMER_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER)$(BR2_PACKAGE_ALSA_LIB_PCM),yy) +MEDIASTREAMER_CONF_OPTS += --enable-alsa +MEDIASTREAMER_DEPENDENCIES += alsa-lib +else +MEDIASTREAMER_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_LIBUPNP),y) +MEDIASTREAMER_CONF_OPTS += --enable-upnp +MEDIASTREAMER_DEPENDENCIES += libupnp +else +MEDIASTREAMER_CONF_OPTS += --disable-upnp +endif + +ifeq ($(BR2_PACKAGE_LIBVPX),y) +MEDIASTREAMER_CONF_OPTS += --enable-vp8 +MEDIASTREAMER_DEPENDENCIES += libvpx +else +MEDIASTREAMER_CONF_OPTS += --disable-vp8 +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +MEDIASTREAMER_CONF_OPTS += --enable-opus +MEDIASTREAMER_DEPENDENCIES += opus +else +MEDIASTREAMER_CONF_OPTS += --disable-opus +endif + +# portaudio backend needs speex as well +ifeq ($(BR2_PACKAGE_PORTAUDIO)$(BR2_PACKAGE_SPEEX),yy) +MEDIASTREAMER_CONF_OPTS += --enable-portaudio +MEDIASTREAMER_DEPENDENCIES += portaudio speex +else +MEDIASTREAMER_CONF_OPTS += --disable-portaudio +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +MEDIASTREAMER_CONF_OPTS += --enable-pulseaudio +MEDIASTREAMER_DEPENDENCIES += pulseaudio +else +MEDIASTREAMER_CONF_OPTS += --disable-pulseaudio +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +MEDIASTREAMER_CONF_OPTS += --enable-speex +MEDIASTREAMER_DEPENDENCIES += speex +else +MEDIASTREAMER_CONF_OPTS += --disable-speex +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y) +MEDIASTREAMER_CONF_OPTS += --enable-ffmpeg +MEDIASTREAMER_DEPENDENCIES += ffmpeg +else +MEDIASTREAMER_CONF_OPTS += --disable-ffmpeg +endif + +ifeq ($(BR2_PACKAGE_SDL),y) +MEDIASTREAMER_CONF_OPTS += --enable-sdl +MEDIASTREAMER_DEPENDENCIES += sdl +else +MEDIASTREAMER_CONF_OPTS += --disable-sdl +endif + +# mediastreamer assumes SDL has X11 support if --enable-x11 (and X11 support +# is only used for SDL output) +ifeq ($(BR2_PACKAGE_SDL_X11),y) +MEDIASTREAMER_CONF_OPTS += --enable-x11 +else +MEDIASTREAMER_CONF_OPTS += --disable-x11 +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXV),y) +MEDIASTREAMER_CONF_OPTS += --enable-xv +MEDIASTREAMER_DEPENDENCIES += xlib_libXv +else +MEDIASTREAMER_CONF_OPTS += --disable-xv +endif + +ifeq ($(BR2_PACKAGE_LIBTHEORA),y) +MEDIASTREAMER_CONF_OPTS += --enable-theora +MEDIASTREAMER_DEPENDENCIES += libtheora +else +MEDIASTREAMER_CONF_OPTS += --disable-theora +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +MEDIASTREAMER_CONF_OPTS += --enable-libv4l1 --enable-libv4l2 +MEDIASTREAMER_DEPENDENCIES += libv4l +else +MEDIASTREAMER_CONF_OPTS += --disable-libv4l1 --disable-libv4l2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/memcached/Config.in b/buildroot/package/memcached/Config.in new file mode 100644 index 0000000..93bf02d --- /dev/null +++ b/buildroot/package/memcached/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_MEMCACHED + bool "memcached" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBEVENT + help + Memcached is an in-memory key-value store for small chunks + of arbitrary data (strings, objects) from results of + database calls, API calls, or page rendering. + + http://www.memcached.org/ + +comment "memcached needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/memcached/memcached.hash b/buildroot/package/memcached/memcached.hash new file mode 100644 index 0000000..8278933 --- /dev/null +++ b/buildroot/package/memcached/memcached.hash @@ -0,0 +1,3 @@ +# From http://www.memcached.org/files/memcached-1.5.6.tar.gz.sha1 +sha1 ca35929e74b132c2495a6957cfdc80556337fb90 memcached-1.5.6.tar.gz +sha256 9675ee859d7d81f7a950f190a6812720b26f08228d356044ec517d4d5af25f03 memcached-1.5.6.tar.gz diff --git a/buildroot/package/memcached/memcached.mk b/buildroot/package/memcached/memcached.mk new file mode 100644 index 0000000..c15abc7 --- /dev/null +++ b/buildroot/package/memcached/memcached.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# memcached +# +################################################################################ + +MEMCACHED_VERSION = 1.5.6 +MEMCACHED_SITE = http://www.memcached.org/files +MEMCACHED_DEPENDENCIES = libevent +MEMCACHED_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +MEMCACHED_CONF_OPTS = --disable-coverage +MEMCACHED_LICENSE = BSD-3-Clause +MEMCACHED_LICENSE_FILES = COPYING + +ifeq ($(BR2_ENDIAN),"BIG") +MEMCACHED_CONF_ENV += ac_cv_c_endian=big +else +MEMCACHED_CONF_ENV += ac_cv_c_endian=little +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/memstat/0001-PATH_MAX.patch b/buildroot/package/memstat/0001-PATH_MAX.patch new file mode 100644 index 0000000..0c3617a --- /dev/null +++ b/buildroot/package/memstat/0001-PATH_MAX.patch @@ -0,0 +1,14 @@ +Add missing #include for PATH_MAX + +Signed-off-by: Maarten ter Huurne + +--- memstat-0.8.org/memstat.c 2009-06-08 14:38:05.000000000 +0200 ++++ memstat-0.8/memstat.c 2014-09-12 03:55:43.096035374 +0200 +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + + /* blacklist devices that just map physical memory */ + char *blacklist[] = { "/dev/mem", diff --git a/buildroot/package/memstat/Config.in b/buildroot/package/memstat/Config.in new file mode 100644 index 0000000..b790612 --- /dev/null +++ b/buildroot/package/memstat/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MEMSTAT + bool "memstat" + help + Memstat lists all the processes, executables, and shared + libraries that are using up virtual memory. It's helpful to + see how the shared memory is used and which 'old' libs are + loaded. + + http://sourceforge.net/projects/memstattool diff --git a/buildroot/package/memstat/memstat.hash b/buildroot/package/memstat/memstat.hash new file mode 100644 index 0000000..f27e7d2 --- /dev/null +++ b/buildroot/package/memstat/memstat.hash @@ -0,0 +1,2 @@ +# From http://sourceforge.net/projects/memstattool/files/ +sha1 26071dbc30a2796c0503c7d8060a548ca36f8df9 memstat_1.0.tar.gz diff --git a/buildroot/package/memstat/memstat.mk b/buildroot/package/memstat/memstat.mk new file mode 100644 index 0000000..e11b4ae --- /dev/null +++ b/buildroot/package/memstat/memstat.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# memstat +# +################################################################################ + +MEMSTAT_VERSION = 1.0 +MEMSTAT_SITE = http://downloads.sourceforge.net/project/memstattool +MEMSTAT_SOURCE = memstat_$(MEMSTAT_VERSION).tar.gz +MEMSTAT_LICENSE = GPL +MEMSTAT_LICENSE_FILES = debian/copyright + +define MEMSTAT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" CFLAGS="$(TARGET_CFLAGS)" \ + -C $(@D) memstat +endef + +define MEMSTAT_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/memstat.conf -m 0644 \ + $(TARGET_DIR)/etc/memstat.conf + $(INSTALL) -D $(@D)/memstat $(TARGET_DIR)/usr/bin/memstat +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/memtest86/Config.in b/buildroot/package/memtest86/Config.in new file mode 100644 index 0000000..79c0161 --- /dev/null +++ b/buildroot/package/memtest86/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_MEMTEST86 + bool "memtest86" + depends on BR2_i386 || BR2_x86_64 + help + Memtest86+ is a bootable standalone memory test program. + + Buildroot does not support packages with a '+' sign in their + name, which explains why it is named memtest86 and not + memtest86+. + + Memtest86+ is a utility designed to test whether your memory + is in working order. It repeatedly writes an enormous amount + of different patterns to all memory locations and reads them + back again and verifies whether the result of the read is the + same as what was written to memory. + + Memtest86+ will only work on 32-bit or 64-bit x86 targets. + It boots as an i486 program and autodetects hardware. It can + be added to the grub2 boot menu by adding the following + lines to the bottom of /boot/grub/grub.cfg - note the use of + linux16. + + menuentry "Memtest86+" { + linux16 /boot/memtest86+.bin + } + + Other boot loaders will have similar requirements. + + http://www.memtest.org diff --git a/buildroot/package/memtest86/memtest86.hash b/buildroot/package/memtest86/memtest86.hash new file mode 100644 index 0000000..81ad98e --- /dev/null +++ b/buildroot/package/memtest86/memtest86.hash @@ -0,0 +1,2 @@ +# locally computed using sha256sum +sha256 142127b7953fbd829b1057fb64a78d3340c2b771484230a7347e94530a0d9039 memtest86+-5.01.tar.gz diff --git a/buildroot/package/memtest86/memtest86.mk b/buildroot/package/memtest86/memtest86.mk new file mode 100644 index 0000000..eb071cc --- /dev/null +++ b/buildroot/package/memtest86/memtest86.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# memtest86 +# +################################################################################ + +MEMTEST86_VERSION = 5.01 +MEMTEST86_SOURCE = memtest86+-$(MEMTEST86_VERSION).tar.gz +MEMTEST86_SITE = http://www.memtest.org/download/$(MEMTEST86_VERSION) +MEMTEST86_LICENSE = GPL-2.0 +MEMTEST86_LICENSE_FILES = README + +# memtest86+ is sensitive to toolchain changes, use the shipped binary version +define MEMTEST86_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/precomp.bin $(TARGET_DIR)/boot/memtest86+.bin +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/memtester/0001-makefile-fix.patch b/buildroot/package/memtester/0001-makefile-fix.patch new file mode 100644 index 0000000..6f1481b --- /dev/null +++ b/buildroot/package/memtester/0001-makefile-fix.patch @@ -0,0 +1,23 @@ +The a/{b,c} construct doesn't work within make, so let's split the +creation of the installation directories in two commands. + +Signed-off-by: Thomas Petazzoni +--- + Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Index: memtester-4.2.1/Makefile +=================================================================== +--- memtester-4.2.1.orig/Makefile ++++ memtester-4.2.1/Makefile +@@ -25,8 +25,9 @@ + all: memtester + + install: all +- mkdir -m 755 -p $(INSTALLPATH)/{bin,man/man8} ++ mkdir -m 755 -p $(INSTALLPATH)/bin + install -m 755 memtester $(INSTALLPATH)/bin/ ++ mkdir -m 755 -p $(INSTALLPATH)/man/man8 + gzip -c memtester.8 >memtester.8.gz ; install -m 644 memtester.8.gz $(INSTALLPATH)/man/man8/ + + auto-ccld.sh: \ diff --git a/buildroot/package/memtester/Config.in b/buildroot/package/memtester/Config.in new file mode 100644 index 0000000..b988772 --- /dev/null +++ b/buildroot/package/memtester/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MEMTESTER + bool "memtester" + help + A userspace utility for testing the memory subsystem for + faults. + + http://pyropus.ca/software/memtester/ diff --git a/buildroot/package/memtester/memtester.hash b/buildroot/package/memtester/memtester.hash new file mode 100644 index 0000000..2d9ef39 --- /dev/null +++ b/buildroot/package/memtester/memtester.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f9dfe2fd737c38fad6535bbab327da9a21f7ce4ea6f18c7b3339adef6bf5fd88 memtester-4.3.0.tar.gz diff --git a/buildroot/package/memtester/memtester.mk b/buildroot/package/memtester/memtester.mk new file mode 100644 index 0000000..0e64d8c --- /dev/null +++ b/buildroot/package/memtester/memtester.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# memtester +# +################################################################################ + +MEMTESTER_VERSION = 4.3.0 +MEMTESTER_SITE = http://pyropus.ca/software/memtester/old-versions +MEMTESTER_LICENSE = GPL-2.0 +MEMTESTER_LICENSE_FILES = COPYING + +MEMTESTER_TARGET_INSTALL_OPTS = INSTALLPATH=$(TARGET_DIR)/usr + +define MEMTESTER_BUILD_CMDS + $(SED) "s,^cc,$(TARGET_CC)," $(@D)/conf-* + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define MEMTESTER_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(MEMTESTER_TARGET_INSTALL_OPTS) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/memtool/Config.in b/buildroot/package/memtool/Config.in new file mode 100644 index 0000000..63099d0 --- /dev/null +++ b/buildroot/package/memtool/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_MEMTOOL + bool "memtool" + help + Development tool to modify memory mapped registers. + + memtool allows one to read and write memory mapped registers + via /dev/mem. The commands are inspired by the respective + commands of the barebox bootloader. This is handy during + driver development to inspect and modify register + settings. It can also be used to modify regular files and + character devices (e.g. to paint to /dev/fb0). + + http://www.pengutronix.de/software/memtool/index_en.html diff --git a/buildroot/package/memtool/memtool.hash b/buildroot/package/memtool/memtool.hash new file mode 100644 index 0000000..95df1aa --- /dev/null +++ b/buildroot/package/memtool/memtool.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 58309d356cb9b45a241cb602ca3850891a70ddaa93ced51d1cced78e14767680 memtool-2016.10.0.tar.xz diff --git a/buildroot/package/memtool/memtool.mk b/buildroot/package/memtool/memtool.mk new file mode 100644 index 0000000..c236cab --- /dev/null +++ b/buildroot/package/memtool/memtool.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# memtool +# +################################################################################ + +MEMTOOL_VERSION = 2016.10.0 +MEMTOOL_SITE = http://public.pengutronix.de/software/memtool +MEMTOOL_SOURCE = memtool-$(MEMTOOL_VERSION).tar.xz +MEMTOOL_LICENSE = GPL-2.0 +MEMTOOL_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/menu-cache/Config.in b/buildroot/package/menu-cache/Config.in new file mode 100644 index 0000000..e61ca44 --- /dev/null +++ b/buildroot/package/menu-cache/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_MENU_CACHE + bool "menu-cache" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBFM_EXTRA + help + Small library from LXDE project used for application menu + integration + + http://wiki.lxde.org/ + +comment "menu-cache needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/menu-cache/menu-cache.hash b/buildroot/package/menu-cache/menu-cache.hash new file mode 100644 index 0000000..1b30fcc --- /dev/null +++ b/buildroot/package/menu-cache/menu-cache.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/lxde/files/menu-cache/1.0/ +md5 a856ba860b16fdc8c69ee784bc4ade36 menu-cache-1.0.1.tar.xz +sha1 58862c665f2ae56870a9937cdcd643674b2ac8ba menu-cache-1.0.1.tar.xz diff --git a/buildroot/package/menu-cache/menu-cache.mk b/buildroot/package/menu-cache/menu-cache.mk new file mode 100644 index 0000000..b5fde99 --- /dev/null +++ b/buildroot/package/menu-cache/menu-cache.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# menu-cache +# +################################################################################ + +MENU_CACHE_VERSION_MAJOR = 1.0 +MENU_CACHE_VERSION = $(MENU_CACHE_VERSION_MAJOR).1 +MENU_CACHE_SOURCE = menu-cache-$(MENU_CACHE_VERSION).tar.xz +MENU_CACHE_SITE = http://sourceforge.net/projects/lxde/files/menu-cache/$(MENU_CACHE_VERSION_MAJOR) +MENU_CACHE_DEPENDENCIES = libfm-extra libglib2 +MENU_CACHE_LICENSE = LGPL-2.1 +MENU_CACHE_LICENSE_FILES = COPYING +MENU_CACHE_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/mesa3d-demos/0001-demos-optional-gl.patch b/buildroot/package/mesa3d-demos/0001-demos-optional-gl.patch new file mode 100644 index 0000000..6470e9d --- /dev/null +++ b/buildroot/package/mesa3d-demos/0001-demos-optional-gl.patch @@ -0,0 +1,74 @@ +This patches makes opengl an optional component. + +Signed-off-by: Spenser Gilliland +--- +Index: mesa3d-demos-8.1.0/configure.ac +=================================================================== +--- mesa3d-demos-8.1.0.orig/configure.ac ++++ mesa3d-demos-8.1.0/configure.ac +@@ -51,6 +51,14 @@ + ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])]) + PKG_PROG_PKG_CONFIG() + ++AC_ARG_ENABLE([gl], ++ [AS_HELP_STRING([--enable-gl], ++ [enable GL library @<:@default=no@:>@])], ++ [gl_enabled="$enableval"], ++ [gl_enabled=auto]) ++ ++if test "x$gl_enabled" != "xno"; then ++ + dnl Get the pkg-config definitions for libGL. We include a fallback + dnl path for GL implementation that don't provide a .pc file + PKG_CHECK_MODULES(GL, [gl], [], [ +@@ -113,6 +121,8 @@ + DEMO_CFLAGS="$DEMO_CFLAGS $GLU_CFLAGS" + DEMO_LIBS="$DEMO_LIBS $GLU_LIBS" + ++fi ++ + AC_ARG_ENABLE([egl], + [AS_HELP_STRING([--enable-egl], + [enable EGL library @<:@default=auto@:>@])], +@@ -303,7 +313,7 @@ + AC_SUBST([WAYLAND_CFLAGS]) + AC_SUBST([WAYLAND_LIBS]) + +- ++AM_CONDITIONAL(HAVE_GL, test "x$gl_enabled" = "xyes") + AM_CONDITIONAL(HAVE_EGL, test "x$egl_enabled" = "xyes") + AM_CONDITIONAL(HAVE_GLESV1, test "x$glesv1_enabled" = "xyes") + AM_CONDITIONAL(HAVE_GLESV2, test "x$glesv2_enabled" = "xyes") +Index: mesa3d-demos-8.1.0/src/egl/opengl/Makefile.am +=================================================================== +--- mesa3d-demos-8.1.0.orig/src/egl/opengl/Makefile.am ++++ mesa3d-demos-8.1.0/src/egl/opengl/Makefile.am +@@ -50,12 +50,14 @@ + endif + + if HAVE_EGL ++if HAVE_GL + noinst_PROGRAMS = \ + eglinfo \ + peglgears \ + $(EGL_DRM_DEMOS) \ + $(EGL_X11_DEMOS) + endif ++endif + + egltri_x11_SOURCES = egltri.c + eglgears_x11_SOURCES = eglgears.c +Index: mesa3d-demos-8.1.0/src/util/Makefile.am +=================================================================== +--- mesa3d-demos-8.1.0.orig/src/util/Makefile.am ++++ mesa3d-demos-8.1.0/src/util/Makefile.am +@@ -27,7 +27,9 @@ AM_CFLAGS = \ + AM_LDFLAGS = \ + $(DEMO_LIBS) + ++if HAVE_GL + noinst_LTLIBRARIES = libutil.la ++endif + + if HAVE_GLUT + AM_CFLAGS += \ diff --git a/buildroot/package/mesa3d-demos/Config.in b/buildroot/package/mesa3d-demos/Config.in new file mode 100644 index 0000000..b716cf5 --- /dev/null +++ b/buildroot/package/mesa3d-demos/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MESA3D_DEMOS + bool "mesa3d-demos" + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES \ + || BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBOPENVG + select BR2_PACKAGE_LIBGLEW if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_LIBGLU if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 && BR2_PACKAGE_HAS_LIBGL + help + OpenGL demos from the Mesa 3D project. + + http://mesa3d.org diff --git a/buildroot/package/mesa3d-demos/mesa3d-demos.hash b/buildroot/package/mesa3d-demos/mesa3d-demos.hash new file mode 100644 index 0000000..a50a3a1 --- /dev/null +++ b/buildroot/package/mesa3d-demos/mesa3d-demos.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/archives/mesa-announce/2015-December/000191.html +sha256 c173154bbd0d5fb53d732471984def42fb1b14ac85fcb834138fb9518b3e0bef mesa-demos-8.3.0.tar.bz2 diff --git a/buildroot/package/mesa3d-demos/mesa3d-demos.mk b/buildroot/package/mesa3d-demos/mesa3d-demos.mk new file mode 100644 index 0000000..9182803 --- /dev/null +++ b/buildroot/package/mesa3d-demos/mesa3d-demos.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# mesa3d-demos +# +################################################################################ + +MESA3D_DEMOS_VERSION = 8.3.0 +MESA3D_DEMOS_SOURCE = mesa-demos-$(MESA3D_DEMOS_VERSION).tar.bz2 +MESA3D_DEMOS_SITE = ftp://ftp.freedesktop.org/pub/mesa/demos/$(MESA3D_DEMOS_VERSION) +MESA3D_DEMOS_AUTORECONF = YES +MESA3D_DEMOS_DEPENDENCIES = host-pkgconf +MESA3D_DEMOS_LICENSE = MIT + +MESA3D_DEMOS_CONF_OPTS += \ + --disable-gles1 + +ifeq ($(BR2_PACKAGE_XORG7)$(BR2_PACKAGE_HAS_LIBGL),yy) +MESA3D_DEMOS_DEPENDENCIES += libgl libglew libglu xlib_libX11 xlib_libXext +MESA3D_DEMOS_CONF_OPTS += --enable-gl --enable-x11 +else +MESA3D_DEMOS_CONF_OPTS += --disable-gl --disable-x11 +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) +MESA3D_DEMOS_DEPENDENCIES += libegl +MESA3D_DEMOS_CONF_OPTS += --enable-egl +else +MESA3D_DEMOS_CONF_OPTS += --disable-egl +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +MESA3D_DEMOS_DEPENDENCIES += libgles +MESA3D_DEMOS_CONF_OPTS += --enable-gles2 +else +MESA3D_DEMOS_CONF_OPTS += --disable-gles2 +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBOPENVG),y) +MESA3D_DEMOS_DEPENDENCIES += libopenvg +MESA3D_DEMOS_CONF_OPTS += --enable-vg +else +MESA3D_DEMOS_CONF_OPTS += --disable-vg +endif + +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) +MESA3D_DEMOS_DEPENDENCIES += mesa3d +MESA3D_DEMOS_CONF_OPTS += --enable-gbm +else +MESA3D_DEMOS_CONF_OPTS += --disable-gbm +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +MESA3D_DEMOS_DEPENDENCIES += freetype +MESA3D_DEMOS_CONF_OPTS += --enable-freetype2 +else +MESA3D_DEMOS_CONF_OPTS += --disable-freetype2 +endif + +ifeq ($(BR2_PACKAGE_LIBFREEGLUT),y) +MESA3D_DEMOS_DEPENDENCIES += libfreeglut +MESA3D_DEMOS_CONF_OPTS += --with-glut=$(STAGING_DIR)/usr +# osmesa support depends on glut +ifeq ($(BR2_PACKAGE_MESA3D_OSMESA),y) +MESA3D_DEMOS_CONF_OPTS += --enable-osmesa +else +MESA3D_DEMOS_CONF_OPTS += --disable-osmesa +endif +else +MESA3D_DEMOS_CONF_OPTS += --without-glut --disable-osmesa +endif + +ifeq ($(BR2_PACKAGE_WAYLAND),y) +MESA3D_DEMOS_DEPENDENCIES += wayland +MESA3D_DEMOS_CONF_OPTS += --enable-wayland +else +MESA3D_DEMOS_CONF_OPTS += --disable-wayland +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/mesa3d-headers/Config.in b/buildroot/package/mesa3d-headers/Config.in new file mode 100644 index 0000000..c4efab6 --- /dev/null +++ b/buildroot/package/mesa3d-headers/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MESA3D_HEADERS + bool + help + Mesa 3D, an open-source implementation of the OpenGL + specification. + + This package only installs headers needed by other packages. + + http://mesa3d.org diff --git a/buildroot/package/mesa3d-headers/mesa3d-headers.hash b/buildroot/package/mesa3d-headers/mesa3d-headers.hash new file mode 120000 index 0000000..137d0be --- /dev/null +++ b/buildroot/package/mesa3d-headers/mesa3d-headers.hash @@ -0,0 +1 @@ +../mesa3d/mesa3d.hash \ No newline at end of file diff --git a/buildroot/package/mesa3d-headers/mesa3d-headers.mk b/buildroot/package/mesa3d-headers/mesa3d-headers.mk new file mode 100644 index 0000000..4eb57b3 --- /dev/null +++ b/buildroot/package/mesa3d-headers/mesa3d-headers.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# mesa3d-headers +# +################################################################################ + +# mesa3d-headers is inherently incompatible with mesa3d, so error out +# if both are enabled. +ifeq ($(BR2_PACKAGE_MESA3D)$(BR2_PACKAGE_MESA3D_HEADERS),yy) +$(error mesa3d-headers enabled, but mesa3d enabled too) +endif + +# Not possible to directly refer to mesa3d variables, because of +# first/second expansion trickery... +MESA3D_HEADERS_VERSION = 17.3.6 +MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz +MESA3D_HEADERS_SITE = https://mesa.freedesktop.org/archive +MESA3D_HEADERS_LICENSE = MIT, SGI, Khronos +MESA3D_HEADERS_LICENSE_FILES = docs/license.html + +# Only installs header files +MESA3D_HEADERS_INSTALL_STAGING = YES +MESA3D_HEADERS_INSTALL_TARGET = NO + +MESA3D_HEADERS_DIRS = KHR + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) + +MESA3D_HEADERS_DIRS += GL + +ifeq ($(BR2_PACKAGE_XORG7),y) + +# Not using $(SED) because we do not want to work in-place, and $(SED) +# contains -i. +define MESA3D_HEADERS_BUILD_DRI_PC + sed -e 's:@\(exec_\)\?prefix@:/usr:' \ + -e 's:@libdir@:${exec_prefix}/lib:' \ + -e 's:@includedir@:${prefix}/include:' \ + -e 's:@DRI_DRIVER_INSTALL_DIR@:${libdir}/dri:' \ + -e 's:@VERSION@:$(MESA3D_HEADERS_VERSION):' \ + -e 's:@DRI_PC_REQ_PRIV@::' \ + $(@D)/src/mesa/drivers/dri/dri.pc.in \ + >$(@D)/src/mesa/drivers/dri/dri.pc +endef + +define MESA3D_HEADERS_INSTALL_DRI_PC + $(INSTALL) -D -m 0644 $(@D)/include/GL/internal/dri_interface.h \ + $(STAGING_DIR)/usr/include/GL/internal/dri_interface.h + $(INSTALL) -D -m 0644 $(@D)/src/mesa/drivers/dri/dri.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/dri.pc +endef + +endif # Xorg + +endif # OpenGL + +ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y) +MESA3D_HEADERS_DIRS += EGL +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +MESA3D_HEADERS_DIRS += GLES GLES2 +endif + +define MESA3D_HEADERS_BUILD_CMDS + $(MESA3D_HEADERS_BUILD_DRI_PC) +endef + +define MESA3D_HEADERS_INSTALL_STAGING_CMDS + $(foreach d,$(MESA3D_HEADERS_DIRS),\ + cp -dpfr $(@D)/include/$(d) $(STAGING_DIR)/usr/include/ || exit 1$(sep)) + $(MESA3D_HEADERS_INSTALL_DRI_PC) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mesa3d/0001-musl.patch b/buildroot/package/mesa3d/0001-musl.patch new file mode 100644 index 0000000..8f7ba77 --- /dev/null +++ b/buildroot/package/mesa3d/0001-musl.patch @@ -0,0 +1,18 @@ +Fix musl build + +Downloaded from +http://git.alpinelinux.org/cgit/aports/plain/main/mesa/musl-fixes.patch + +Signed-off-by: Bernd Kuhls + +--- ./src/gallium/winsys/svga/drm/vmw_screen.h.orig ++++ ./src/gallium/winsys/svga/drm/vmw_screen.h +@@ -34,7 +34,7 @@ + #ifndef VMW_SCREEN_H_ + #define VMW_SCREEN_H_ + +- ++#include + #include "pipe/p_compiler.h" + #include "pipe/p_state.h" + diff --git a/buildroot/package/mesa3d/0002-Fix-endianess-detection-with-musl-based-toolchains.patch b/buildroot/package/mesa3d/0002-Fix-endianess-detection-with-musl-based-toolchains.patch new file mode 100644 index 0000000..4846b34 --- /dev/null +++ b/buildroot/package/mesa3d/0002-Fix-endianess-detection-with-musl-based-toolchains.patch @@ -0,0 +1,67 @@ +From 4135bd2e13880866deb0440855d1a869397e5024 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Fri, 4 Nov 2016 19:44:37 +0100 +Subject: [PATCH] Fix endianess detection with musl-based toolchains + +Musl does not define __GLIBC__ and will not provide a __MUSL__ macro: +http://wiki.musl-libc.org/wiki/FAQ#Q:_why_is_there_no_MUSL_macro_.3F + +This patch checks for the presence of endian.h and promotes the result +to src/amd/Makefile.addrlib.am which executes the broken build command. +Fixes compile errors detected by the autobuilder infrastructure of the +buildroot project: + +http://autobuild.buildroot.net/results/e27/e27a9a95f72dba3076549beb2a2ccfdbea2fcfee/ +http://autobuild.buildroot.net/results/e27/e27a9a95f72dba3076549beb2a2ccfdbea2fcfee/ + +Patch sent upstream: https://patchwork.freedesktop.org/patch/119961/ + +Signed-off-by: Bernd Kuhls +[Romain: rebase on mesa 17.3.1] +Signed-off-by: Romain Naour +--- + configure.ac | 1 + + src/amd/Makefile.addrlib.am | 1 + + src/util/u_endian.h | 2 +- + 3 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index a02173f244..ee03d6f582 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -791,6 +791,7 @@ fi + AC_HEADER_MAJOR + AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"]) + AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"]) ++AC_CHECK_HEADER([endian.h], [DEFINES="$DEFINES -DHAVE_ENDIAN_H"]) + AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"]) + AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"]) + AC_CHECK_FUNC([memfd_create], [DEFINES="$DEFINES -DHAVE_MEMFD_CREATE"]) +diff --git a/src/amd/Makefile.addrlib.am b/src/amd/Makefile.addrlib.am +index 46689637f9..508edfd0d5 100644 +--- a/src/amd/Makefile.addrlib.am ++++ b/src/amd/Makefile.addrlib.am +@@ -30,6 +30,7 @@ addrlib_libamdgpu_addrlib_la_CPPFLAGS = \ + -I$(srcdir)/addrlib/inc/chip/r800 \ + -I$(srcdir)/addrlib/gfx9/chip \ + -I$(srcdir)/addrlib/r800/chip \ ++ $(DEFINES) \ + -DBRAHMA_BUILD=1 + + addrlib_libamdgpu_addrlib_la_CXXFLAGS = \ +diff --git a/src/util/u_endian.h b/src/util/u_endian.h +index 9e09f80181..038a28fac9 100644 +--- a/src/util/u_endian.h ++++ b/src/util/u_endian.h +@@ -27,7 +27,7 @@ + #ifndef U_ENDIAN_H + #define U_ENDIAN_H + +-#if defined(__GLIBC__) || defined(ANDROID) || defined(__CYGWIN__) ++#if defined(__GLIBC__) || defined(ANDROID) || defined(__CYGWIN__) || defined(HAVE_ENDIAN_H) + #include + + #if __BYTE_ORDER == __LITTLE_ENDIAN +-- +2.14.3 + diff --git a/buildroot/package/mesa3d/0003-configure.ac-invert-order-for-wayland-scanner-check.patch b/buildroot/package/mesa3d/0003-configure.ac-invert-order-for-wayland-scanner-check.patch new file mode 100644 index 0000000..bfb6376 --- /dev/null +++ b/buildroot/package/mesa3d/0003-configure.ac-invert-order-for-wayland-scanner-check.patch @@ -0,0 +1,44 @@ +From 11a759c33160db6e887e7640071ba84482e6164f Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Thu, 17 Nov 2016 15:36:54 -0300 +Subject: [PATCH] configure.ac: invert order for wayland-scanner check + +When cross-compiling the .pc file might point to the wrong +wayland-scanner binary (target rather than host) resulting in a +non-executable and wrong scanner. +Try searching the PATH first, and if that fails fall back into +pkg-config. + +[Vincent: tweak patch for 17.1.1 version] + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Vicente Olivert Riera +[Romain: rebase on 17.3.1] +Signed-off-by: Romain Naour +--- + configure.ac | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index ee03d6f582..786b7214b9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1695,11 +1695,11 @@ if test "x$with_platforms" = xauto; then + with_platforms=$with_egl_platforms + fi + +-PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], +- WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, +- WAYLAND_SCANNER='') ++AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner]) + if test "x$WAYLAND_SCANNER" = x; then +- AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) ++ PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], ++ WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, ++ WAYLAND_SCANNER='') + fi + + PKG_CHECK_EXISTS([wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED], [have_wayland_protocols=yes], [have_wayland_protocols=no]) +-- +2.14.3 + diff --git a/buildroot/package/mesa3d/Config.in b/buildroot/package/mesa3d/Config.in new file mode 100644 index 0000000..f141587 --- /dev/null +++ b/buildroot/package/mesa3d/Config.in @@ -0,0 +1,242 @@ +menuconfig BR2_PACKAGE_MESA3D + bool "mesa3d" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_1 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_HAS_LIBGL if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_WAYLAND_PROTOCOLS if BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_XPROTO_DRI2PROTO if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XPROTO_GLPROTO if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XPROTO_XF86DRIPROTO if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXFIXES if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBXCB if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_ZLIB + help + Mesa 3D, an open-source implementation of the OpenGL + specification. + + http://mesa3d.org + +if BR2_PACKAGE_MESA3D + +# inform the .mk file of gallium, dri or vulkan driver selection +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + bool + select BR2_PACKAGE_MESA3D_DRIVER + +config BR2_PACKAGE_MESA3D_DRI_DRIVER + bool + select BR2_PACKAGE_MESA3D_DRIVER + # xlib-libxshmfence needs sync_4, so we cannot select it if + # BR2_TOOLCHAIN_HAS_SYNC_4 is false. xproto-presentproto + # doesn't need sync_4, but it is only needed in conjunction + # with xlib-libxshmfence and dri3proto to provide dri3 + # support, so we also only select it if sync_4 is available. + select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \ + (BR2_PACKAGE_XPROTO_DRI3PROTO && BR2_TOOLCHAIN_HAS_SYNC_4) + select BR2_PACKAGE_XPROTO_PRESENTPROTO if \ + (BR2_PACKAGE_XPROTO_DRI3PROTO && BR2_TOOLCHAIN_HAS_SYNC_4) + +config BR2_PACKAGE_MESA3D_VULKAN_DRIVER + bool + select BR2_PACKAGE_MESA3D_DRIVER + +config BR2_PACKAGE_MESA3D_DRIVER + bool + +config BR2_PACKAGE_MESA3D_NEEDS_XA + bool + +comment "Gallium drivers" + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV + bool "Gallium Etnaviv driver" + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_ETNAVIV + select BR2_PACKAGE_MESA3D_OPENGL_EGL + help + Mesa driver for Vivante GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU + bool "Gallium nouveau driver" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_NOUVEAU + select BR2_PACKAGE_MESA3D_NEEDS_XA + help + Supports all Nvidia GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 + bool "Gallium Radeon R600 driver" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_RADEON + select BR2_PACKAGE_MESA3D_NEEDS_XA + help + Driver for ATI/AMD Radeon R600/R700/HD5000/HD6000 GPUs. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA + bool "Gallium vmware svga driver" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_VMWGFX + select BR2_PACKAGE_MESA3D_NEEDS_XA + help + This is a virtual GPU driver for VMWare virtual machines. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST + bool "Gallium swrast driver" + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + help + This is a software opengl implementation using the Gallium3D + infrastructure. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4 + bool "Gallium vc4 driver" + depends on BR2_ARM_CPU_HAS_NEON || BR2_aarch64 + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_LIBDRM_VC4 + select BR2_PACKAGE_MESA3D_NEEDS_XA + select BR2_PACKAGE_MESA3D_OPENGL_EGL + help + Driver for Broadcom VC4 (rpi2/3) GPUs. + It requires a vanilla 4.5+ kernel with drm vc4 (open) support. + +config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL + bool "Gallium virgl driver" + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER + select BR2_PACKAGE_MESA3D_OPENGL_EGL + help + virgl is the 3D acceleration backend for the virtio-gpu + shipping with qemu. + +comment "DRI drivers" + +config BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST + bool "DRI swrast driver" + select BR2_PACKAGE_MESA3D_DRI_DRIVER + help + This is a software opengl implementation using the DRI + infrastructure. + +config BR2_PACKAGE_MESA3D_DRI_DRIVER_I915 + bool "DRI i915 driver" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_DRI_DRIVER + select BR2_PACKAGE_LIBDRM_INTEL + help + Support for i915-based Intel GPUs. + +config BR2_PACKAGE_MESA3D_DRI_DRIVER_I965 + bool "DRI i965 driver" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_DRI_DRIVER + select BR2_PACKAGE_LIBDRM_INTEL + help + Support for i965-based Intel GPUs. + +config BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU + bool "DRI nouveau driver" + select BR2_PACKAGE_MESA3D_DRI_DRIVER + select BR2_PACKAGE_LIBDRM_NOUVEAU + help + Support for Nvidia-based GPUs. + +config BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON + bool "DRI radeon driver" + select BR2_PACKAGE_MESA3D_DRI_DRIVER + select BR2_PACKAGE_LIBDRM_RADEON + help + Legacy Radeon driver for R100 series GPUs. + +comment "Vulkan drivers" + +config BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL + bool "Vulkan Intel driver" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 # memfd.h + depends on BR2_TOOLCHAIN_USES_GLIBC # ifunc, static_assert + depends on BR2_PACKAGE_XORG7 # xproto_dri3proto + select BR2_PACKAGE_MESA3D_VULKAN_DRIVER + select BR2_PACKAGE_XPROTO_DRI3PROTO + help + Vulkan driver for Intel hardware from Ivy Bridge onward. + +comment "intel vulkan depends on X.org and needs a glibc toolchain w/ headers >= 3.18" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 || \ + !BR2_TOOLCHAIN_USES_GLIBC || !BR2_PACKAGE_XORG7 + +comment "Off-screen Rendering" + +config BR2_PACKAGE_MESA3D_OSMESA + bool "OSMesa library" + help + The OSMesa API provides functions for making off-screen + renderings. + +if BR2_PACKAGE_MESA3D_DRIVER + +comment "Additional API Support" + +config BR2_PACKAGE_MESA3D_OPENGL_EGL + bool "OpenGL EGL" + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBEGL_WAYLAND + help + Use the Khronos EGL APIs. EGL is a window manager for OpenGL + applications similar to GLX, for X, and WGL, for Windows. + +config BR2_PACKAGE_MESA3D_OPENGL_ES + bool "OpenGL ES" + select BR2_PACKAGE_HAS_LIBGLES + help + Use the Khronos OpenGL ES APIs. This is commonly used on + embedded systems and represents a subset of the OpenGL API. + +config BR2_PACKAGE_MESA3D_OPENGL_TEXTURE_FLOAT + bool "OpenGL texture float (patented format)" + help + GL_ARB_texture_float is required to enable GLX core profile + (OpenGL3.x) otherwise the compat profile is used + (OpenGL2.1). + + The source code to implement ARB_texture_float extension is + included and can be toggled on at compile time, for those + who purchased a license from SGI, or are in a country where + the patent does not apply, etc. + + Please consult docs/patents.txt with your lawyer before + building Mesa. + + Also, note that this option doesn't affect all drivers. Some + drivers have support for texture float enabled + unconditionally. + + If unsure, say N. + + http://www.google.com/patents/about?id=mIIOAAAAEBAJ&dq=6650327 + +endif # BR2_PACKAGE_MESA3D_DRIVER + +config BR2_PACKAGE_PROVIDES_LIBGL + default "mesa3d" if BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_EGL + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "mesa3d" if BR2_PACKAGE_MESA3D_OPENGL_ES + +endif # BR2_PACKAGE_MESA3D + +comment "mesa3d needs a toolchain w/ C++, NPTL, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_1 diff --git a/buildroot/package/mesa3d/mesa3d.hash b/buildroot/package/mesa3d/mesa3d.hash new file mode 100644 index 0000000..a61fe02 --- /dev/null +++ b/buildroot/package/mesa3d/mesa3d.hash @@ -0,0 +1,8 @@ +# From https://lists.freedesktop.org/archives/mesa-announce/2018-February/000403.html +md5 ba66ae0f09b9b84482268608557cd175 mesa-17.3.6.tar.xz +sha1 eff29cb8c284a813977d4201dd646d949b1d8fc4 mesa-17.3.6.tar.xz +sha256 e5915680d44ac9d05defdec529db7459ac9edd441c9845266eff2e2d3e57fbf8 mesa-17.3.6.tar.xz +sha512 5164ed5a1d3d25031b712a9f443f0e467a29b2bca0a1aa11324ed5c10279411979c9c7482825053926a813e76c58b78a3439c7c81fcd51a7808f53977080828f mesa-17.3.6.tar.xz +# License +sha256 630e75b4fdeb75ee2bf9e55db54dd1e3ff7353d52d9314ca8512bfd460f8e24c docs/license.html +sha256 a75ee0cec909515ff80a3ec07155b7fb0aafe8051abe1f0e45d5c4c5e2539366 docs/patents.txt diff --git a/buildroot/package/mesa3d/mesa3d.mk b/buildroot/package/mesa3d/mesa3d.mk new file mode 100644 index 0000000..5f4832c --- /dev/null +++ b/buildroot/package/mesa3d/mesa3d.mk @@ -0,0 +1,225 @@ +################################################################################ +# +# mesa3d +# +################################################################################ + +# When updating the version, please also update mesa3d-headers +MESA3D_VERSION = 17.3.6 +MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz +MESA3D_SITE = https://mesa.freedesktop.org/archive +MESA3D_LICENSE = MIT, SGI, Khronos +MESA3D_LICENSE_FILES = docs/license.html +MESA3D_AUTORECONF = YES + +MESA3D_INSTALL_STAGING = YES + +MESA3D_PROVIDES = + +MESA3D_DEPENDENCIES = \ + host-bison \ + host-flex \ + expat \ + libdrm \ + zlib + +# Disable assembly usage. +MESA3D_CONF_OPTS = --disable-asm + +# Disable static, otherwise configure will fail with: "Cannot enable both static +# and shared." +ifeq ($(BR2_SHARED_STATIC_LIBS),y) +MESA3D_CONF_OPTS += --disable-static +endif + +# The Sourcery MIPS toolchain has a special (non-upstream) feature to +# have "compact exception handling", which unfortunately breaks with +# mesa3d, so we disable it here by passing -mno-compact-eh. +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS),y) +MESA3D_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mno-compact-eh" +MESA3D_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -mno-compact-eh" +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +MESA3D_DEPENDENCIES += \ + xproto_xf86driproto \ + xproto_dri2proto \ + xproto_glproto \ + xlib_libX11 \ + xlib_libXext \ + xlib_libXdamage \ + xlib_libXfixes \ + libxcb +MESA3D_CONF_OPTS += --enable-glx --disable-mangling +# quote from mesa3d configure "Building xa requires at least one non swrast gallium driver." +ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_XA),y) +MESA3D_CONF_OPTS += --enable-xa +else +MESA3D_CONF_OPTS += --disable-xa +endif +else +MESA3D_CONF_OPTS += \ + --disable-glx \ + --disable-xa +endif + +# Drivers + +#Gallium Drivers +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV) += etnaviv imx +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU) += nouveau +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600) += r600 +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA) += svga +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST) += swrast +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4) += vc4 +MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL) += virgl +# DRI Drivers +MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST) += swrast +MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I915) += i915 +MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_I965) += i965 +MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU) += nouveau +MESA3D_DRI_DRIVERS-$(BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON) += radeon +# Vulkan Drivers +MESA3D_VULKAN_DRIVERS-$(BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL) += intel + +ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER),) +MESA3D_CONF_OPTS += \ + --without-gallium-drivers \ + --disable-gallium-extra-hud +else +MESA3D_CONF_OPTS += \ + --enable-shared-glapi \ + --with-gallium-drivers=$(subst $(space),$(comma),$(MESA3D_GALLIUM_DRIVERS-y)) \ + --enable-gallium-extra-hud +endif + +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),) +MESA3D_CONF_OPTS += \ + --without-dri-drivers --disable-dri3 +else +ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE)$(BR2_PACKAGE_XPROTO_DRI3PROTO),yy) +MESA3D_DEPENDENCIES += xlib_libxshmfence xproto_dri3proto xproto_presentproto +MESA3D_CONF_OPTS += --enable-dri3 +else +MESA3D_CONF_OPTS += --disable-dri3 +endif +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y) +MESA3D_DEPENDENCIES += xlib_libXxf86vm +endif +MESA3D_CONF_OPTS += \ + --enable-shared-glapi \ + --enable-driglx-direct \ + --with-dri-drivers=$(subst $(space),$(comma),$(MESA3D_DRI_DRIVERS-y)) +endif + +ifeq ($(BR2_PACKAGE_MESA3D_VULKAN_DRIVER),) +MESA3D_CONF_OPTS += \ + --without-vulkan-drivers +else +MESA3D_CONF_OPTS += \ + --with-vulkan-drivers=$(subst $(space),$(comma),$(MESA3D_VULKAN_DRIVERS-y)) +endif + +# APIs + +ifeq ($(BR2_PACKAGE_MESA3D_OSMESA),y) +MESA3D_CONF_OPTS += --enable-osmesa +else +MESA3D_CONF_OPTS += --disable-osmesa +endif + +# Always enable OpenGL: +# - it is needed for GLES (mesa3d's ./configure is a bit weird) +MESA3D_CONF_OPTS += --enable-opengl --enable-dri + +# libva and mesa3d have a circular dependency +# we do not need libva support in mesa3d, therefore disable this option +MESA3D_CONF_OPTS += --disable-va + +# libGL is only provided for a full xorg stack +ifeq ($(BR2_PACKAGE_XORG7),y) +MESA3D_PROVIDES += libgl +else +define MESA3D_REMOVE_OPENGL_HEADERS + rm -rf $(STAGING_DIR)/usr/include/GL/ +endef + +MESA3D_POST_INSTALL_STAGING_HOOKS += MESA3D_REMOVE_OPENGL_HEADERS +endif + +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y) +MESA3D_PLATFORMS = drm +else ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4),y) +MESA3D_PLATFORMS = drm +else ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV),y) +MESA3D_PLATFORMS = drm +else ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL),y) +MESA3D_PLATFORMS = drm +endif +ifeq ($(BR2_PACKAGE_WAYLAND),y) +MESA3D_DEPENDENCIES += wayland wayland-protocols +MESA3D_PLATFORMS += wayland +endif +ifeq ($(BR2_PACKAGE_XORG7),y) +MESA3D_PLATFORMS += x11 +endif + +MESA3D_CONF_OPTS += \ + --with-platforms=$(subst $(space),$(comma),$(MESA3D_PLATFORMS)) + +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) +MESA3D_PROVIDES += libegl +MESA3D_CONF_OPTS += \ + --enable-gbm \ + --enable-egl +else +MESA3D_CONF_OPTS += \ + --disable-egl +endif + +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_ES),y) +MESA3D_PROVIDES += libgles +MESA3D_CONF_OPTS += --enable-gles1 --enable-gles2 +else +MESA3D_CONF_OPTS += --disable-gles1 --disable-gles2 +endif + +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_TEXTURE_FLOAT),y) +MESA3D_CONF_OPTS += --enable-texture-float +MESA3D_LICENSE_FILES += docs/patents.txt +else +MESA3D_CONF_OPTS += --disable-texture-float +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXVMC),y) +MESA3D_DEPENDENCIES += xlib_libXvMC +MESA3D_CONF_OPTS += --enable-xvmc +else +MESA3D_CONF_OPTS += --disable-xvmc +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +MESA3D_CONF_OPTS += --enable-libunwind +MESA3D_DEPENDENCIES += libunwind +else +MESA3D_CONF_OPTS += --disable-libunwind +endif + +ifeq ($(BR2_PACKAGE_LIBVDPAU),y) +MESA3D_DEPENDENCIES += libvdpau +MESA3D_CONF_OPTS += --enable-vdpau +else +MESA3D_CONF_OPTS += --disable-vdpau +endif + +ifeq ($(BR2_PACKAGE_LM_SENSORS),y) +MESA3D_CONF_OPTS += --enable-lmsensors +MESA3D_DEPENDENCIES += lm-sensors +else +MESA3D_CONF_OPTS += --disable-lmsensors +endif + +# Avoid automatic search of llvm-config +MESA3D_CONF_OPTS += --with-llvm-prefix=$(STAGING_DIR)/usr/bin + +$(eval $(autotools-package)) diff --git a/buildroot/package/meson/cross-compilation.conf.in b/buildroot/package/meson/cross-compilation.conf.in new file mode 100644 index 0000000..0eec740 --- /dev/null +++ b/buildroot/package/meson/cross-compilation.conf.in @@ -0,0 +1,23 @@ +# Note: Buildroot's and Meson's terminologies differ about the meaning +# of 'build', 'host' and 'target': +# - Buildroot's 'host' is Meson's 'build' +# - Buildroot's 'target' is Meson's 'host' + +[binaries] +c = '@TARGET_CROSS@gcc' +cpp = '@TARGET_CROSS@g++' +ar = '@TARGET_CROSS@ar' +strip = '@TARGET_CROSS@strip' +pkgconfig = '@HOST_DIR@/usr/bin/pkg-config' + +[properties] +c_args = [@TARGET_CFLAGS@] +c_link_args = [@TARGET_LDFLAGS@] +cpp_args = [@TARGET_CXXFLAGS@] +cpp_link_args = [@TARGET_LDFLAGS@] + +[host_machine] +system = 'linux' +cpu_family ='@TARGET_ARCH@' +cpu = '@TARGET_CPU@' +endian = '@TARGET_ENDIAN@' diff --git a/buildroot/package/meson/meson.hash b/buildroot/package/meson/meson.hash new file mode 100644 index 0000000..279dd93 --- /dev/null +++ b/buildroot/package/meson/meson.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +# https://github.com/mesonbuild/meson/releases/download/0.44.0/meson-0.44.0.tar.gz.asc +sha256 50f9b12b77272ef6ab064d26b7e06667f07fa9f931e6a20942bba2216ba4281b meson-0.44.0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING diff --git a/buildroot/package/meson/meson.mk b/buildroot/package/meson/meson.mk new file mode 100644 index 0000000..764c187 --- /dev/null +++ b/buildroot/package/meson/meson.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# meson +# +################################################################################ + +MESON_VERSION = 0.44.0 +MESON_SITE = https://github.com/mesonbuild/meson/releases/download/$(MESON_VERSION) +MESON_LICENSE = Apache-2.0 +MESON_LICENSE_FILES = COPYING +MESON_SETUP_TYPE = setuptools + +HOST_MESON_DEPENDENCIES = host-ninja +HOST_MESON_NEEDS_HOST_PYTHON = python3 + +HOST_MESON_TARGET_ENDIAN = $(call LOWERCASE,$(BR2_ENDIAN)) +HOST_MESON_TARGET_CPU = $(call qstrip,$(BR2_GCC_TARGET_CPU)) + +HOST_MESON_SED_CFLAGS = $(if $(TARGET_CFLAGS),`printf '"%s"$(comma) ' $(TARGET_CFLAGS)`) +HOST_MESON_SED_LDFLAGS = $(if $(TARGET_LDFLAGS),`printf '"%s"$(comma) ' $(TARGET_LDFLAGS)`) +HOST_MESON_SED_CXXFLAGS = $(if $(TARGET_CXXFLAGS),`printf '"%s"$(comma) ' $(TARGET_CXXFLAGS)`) + +define HOST_MESON_INSTALL_CROSS_CONF + mkdir -p $(HOST_DIR)/etc/meson + sed -e "s%@TARGET_CROSS@%$(TARGET_CROSS)%g" \ + -e "s%@TARGET_ARCH@%$(ARCH)%g" \ + -e "s%@TARGET_CPU@%$(HOST_MESON_TARGET_CPU)%g" \ + -e "s%@TARGET_ENDIAN@%$(HOST_MESON_TARGET_ENDIAN)%g" \ + -e "s%@TARGET_CFLAGS@%$(HOST_MESON_SED_CFLAGS)%g" \ + -e "s%@TARGET_LDFLAGS@%$(HOST_MESON_SED_LDFLAGS)%g" \ + -e "s%@TARGET_CXXFLAGS@%$(HOST_MESON_SED_CXXFLAGS)%g" \ + -e "s%@HOST_DIR@%$(HOST_DIR)%g" \ + $(HOST_MESON_PKGDIR)/cross-compilation.conf.in \ + > $(HOST_DIR)/etc/meson/cross-compilation.conf +endef + +HOST_MESON_POST_INSTALL_HOOKS += HOST_MESON_INSTALL_CROSS_CONF + +$(eval $(host-python-package)) diff --git a/buildroot/package/metacity/0001-add-libm-reference.patch b/buildroot/package/metacity/0001-add-libm-reference.patch new file mode 100644 index 0000000..6285017 --- /dev/null +++ b/buildroot/package/metacity/0001-add-libm-reference.patch @@ -0,0 +1,51 @@ +Upstream fix to link metacity itself against libm + +The upstream fix is modified to also include the changes on the +configure script directly, so that autoreconfiguring is not +needed. Autoreconfiguring cannot be done easily on metacity, due to +missing AM_GCONF_SOURCE_2 and AM_NLS macros. + +http://git.gnome.org/browse/metacity/commit/configure.in?id=9cb0b6ff520ea69bdff6c328a21787202aee1bcc + +Signed-off-by: Thomas Petazzoni + +From 9cb0b6ff520ea69bdff6c328a21787202aee1bcc Mon Sep 17 00:00:00 2001 +From: Götz Waschk +Date: Wed, 22 Oct 2008 12:08:48 +0000 +Subject: add libm reference. Closes #557357. + +2008-10-22 Götz Waschk + + * configure.in: add libm reference. Closes #557357. + + +svn path=/trunk/; revision=3984 +--- +(limited to 'configure.in') + +Index: b/configure.in +=================================================================== +--- a/configure.in ++++ b/configure.in +@@ -413,7 +413,7 @@ + AC_DEFINE(HAVE_XSYNC, , [Have the Xsync extension library]) + fi + +-METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" ++METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm" + METACITY_MESSAGE_LIBS="$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" + METACITY_WINDOW_DEMO_LIBS="$METACITY_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" + METACITY_PROPS_LIBS="$METACITY_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" +Index: b/configure +=================================================================== +--- a/configure ++++ b/configure +@@ -29509,7 +29509,7 @@ + + fi + +-METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" ++METACITY_LIBS="$METACITY_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm" + METACITY_MESSAGE_LIBS="$METACITY_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" + METACITY_WINDOW_DEMO_LIBS="$METACITY_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" + METACITY_PROPS_LIBS="$METACITY_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" diff --git a/buildroot/package/metacity/0002-gconf.patch b/buildroot/package/metacity/0002-gconf.patch new file mode 100644 index 0000000..939ef7e --- /dev/null +++ b/buildroot/package/metacity/0002-gconf.patch @@ -0,0 +1,30 @@ +[PATCH] fix build with --disable-gconf + +src/core/prefs.c still contain a call to gconf_client_set_bool() when +built with --disable-gconf, breaking the build. + +Signed-off-by: Peter Korsgaard +--- + src/core/prefs.c | 2 ++ + 1 file changed, 2 insertions(+) + +Index: metacity-2.25.1/src/core/prefs.c +=================================================================== +--- metacity-2.25.1.orig/src/core/prefs.c ++++ metacity-2.25.1/src/core/prefs.c +@@ -2949,6 +2949,7 @@ + void + meta_prefs_set_compositing_manager (gboolean whether) + { ++#if HAVE_GCONF + GError *err = NULL; + + gconf_client_set_bool (default_client, +@@ -2962,6 +2963,7 @@ + err->message); + g_error_free (err); + } ++#endif + } + + #ifndef HAVE_GCONF diff --git a/buildroot/package/metacity/0003-mag-add-libm-reference.patch b/buildroot/package/metacity/0003-mag-add-libm-reference.patch new file mode 100644 index 0000000..d47d807 --- /dev/null +++ b/buildroot/package/metacity/0003-mag-add-libm-reference.patch @@ -0,0 +1,45 @@ +Upstream patch to fix link against libm + +The upstream patch is modified to also include the necessary +Makefile.in, which avoids the need for autoreconfiguring the +package. Autoreconfiguring the package unfortunately doesn't work, due +to AM_GCONF_SOURCE_2 and AM_NLS macros being missing. + +http://git.gnome.org/browse/metacity/commit/src/tools/Makefile.am?id=13d0d52eb885598885b6ff4b73c795c8f29c2a6b + +Signed-off-by: Thomas Petazzoni + +From 13d0d52eb885598885b6ff4b73c795c8f29c2a6b Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Sun, 02 May 2010 14:50:42 +0000 +Subject: fails to link with pedantic linkers + +--- +(limited to 'src/tools/Makefile.am') + +Index: b/src/tools/Makefile.am +=================================================================== +--- a/src/tools/Makefile.am ++++ b/src/tools/Makefile.am +@@ -26,7 +26,7 @@ + + metacity_message_LDADD= @METACITY_MESSAGE_LIBS@ + metacity_window_demo_LDADD= @METACITY_WINDOW_DEMO_LIBS@ +-metacity_mag_LDADD= @METACITY_WINDOW_DEMO_LIBS@ ++metacity_mag_LDADD= @METACITY_WINDOW_DEMO_LIBS@ -lm + metacity_grayscale_LDADD = @METACITY_WINDOW_DEMO_LIBS@ + + EXTRA_DIST=$(icon_DATA) +Index: b/src/tools/Makefile.in +=================================================================== +--- a/src/tools/Makefile.in ++++ b/src/tools/Makefile.in +@@ -281,7 +281,7 @@ + + metacity_message_LDADD = @METACITY_MESSAGE_LIBS@ + metacity_window_demo_LDADD = @METACITY_WINDOW_DEMO_LIBS@ +-metacity_mag_LDADD = @METACITY_WINDOW_DEMO_LIBS@ ++metacity_mag_LDADD = @METACITY_WINDOW_DEMO_LIBS@ -lm + metacity_grayscale_LDADD = @METACITY_WINDOW_DEMO_LIBS@ + EXTRA_DIST = $(icon_DATA) + all: all-am diff --git a/buildroot/package/metacity/Config.in b/buildroot/package/metacity/Config.in new file mode 100644 index 0000000..833a091 --- /dev/null +++ b/buildroot/package/metacity/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_METACITY + bool "metacity" + depends on BR2_PACKAGE_LIBGTK2 + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + # Metacity configure.ac pretends it can be built without + # Composite, but in reality, it doesn't build. + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXDAMAGE + # We do not directly depend on Xft, but they are needed to get + # Xft support in Pango, which we require. + select BR2_PACKAGE_XLIB_LIBXFT + help + Metacity is a window manager for the X Window System. diff --git a/buildroot/package/metacity/Xsession b/buildroot/package/metacity/Xsession new file mode 100755 index 0000000..7225921 --- /dev/null +++ b/buildroot/package/metacity/Xsession @@ -0,0 +1,6 @@ +#!/bin/sh +export GDK_USE_XFT=1 +export LANG="en_US.UTF-8" +export LC_ALL="en_US.UTF-8" +/usr/bin/X11/rxvt -bg black -fg gray90 & +exec /bin/metacity diff --git a/buildroot/package/metacity/metacity.hash b/buildroot/package/metacity/metacity.hash new file mode 100644 index 0000000..4945016 --- /dev/null +++ b/buildroot/package/metacity/metacity.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/metacity/2.25/metacity-2.25.1.sha256sum +sha256 fb2ede4ac02d7da08d3c3323fb76afaf945c8cccc07cb2d3a4b7f44fb49f1c47 metacity-2.25.1.tar.bz2 diff --git a/buildroot/package/metacity/metacity.mk b/buildroot/package/metacity/metacity.mk new file mode 100644 index 0000000..b93200c --- /dev/null +++ b/buildroot/package/metacity/metacity.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# metacity +# +################################################################################ + +# newer versions need libcanberra-gtk and gnome-doc-utils +METACITY_VERSION_MAJOR = 2.25 +METACITY_VERSION = $(METACITY_VERSION_MAJOR).1 +METACITY_SOURCE = metacity-$(METACITY_VERSION).tar.bz2 +METACITY_SITE = http://ftp.gnome.org/pub/gnome/sources/metacity/$(METACITY_VERSION_MAJOR) +METACITY_LICENSE = GPL-2.0+ +METACITY_LICENSE_FILES = COPYING + +METACITY_CONF_OPTS = \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib \ + --disable-glibtest \ + --disable-gconf \ + --disable-sm \ + --disable-startup-notification + +METACITY_DEPENDENCIES = libgtk2 \ + xlib_libX11 \ + host-libxml-parser-perl \ + xlib_libXcomposite \ + xlib_libXfixes \ + xlib_libXrender \ + xlib_libXdamage + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +METACITY_DEPENDENCIES += xlib_libXcursor +endif + +define METACITY_INSTALL_XSESSION + $(INSTALL) -D package/metacity/Xsession $(TARGET_DIR)/etc/X11/Xsession +endef + +METACITY_POST_INSTALL_TARGET_HOOKS += METACITY_INSTALL_XSESSION + +$(eval $(autotools-package)) diff --git a/buildroot/package/mfgtools/Config.in.host b/buildroot/package/mfgtools/Config.in.host new file mode 100644 index 0000000..4bbdde3 --- /dev/null +++ b/buildroot/package/mfgtools/Config.in.host @@ -0,0 +1,14 @@ +comment "mfgtools needs host gcc >= 4.8" + depends on !BR2_HOST_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_HOST_MFGTOOLS + bool "host mfgtools" + depends on BR2_arm + depends on BR2_HOST_GCC_AT_LEAST_4_8 # needs C++11 + help + This package contains the Freescale manufacturing tool. + It is designed to program firmware to i.MX boards during + production. The communication is done over USB using the + Freescale UTP protocol. + + https://github.com/codeauroraforum/mfgtools diff --git a/buildroot/package/mfgtools/mfgtools.hash b/buildroot/package/mfgtools/mfgtools.hash new file mode 100644 index 0000000..4932a80 --- /dev/null +++ b/buildroot/package/mfgtools/mfgtools.hash @@ -0,0 +1,4 @@ +# locally computed +sha256 055d71227d18883d6e8bc9e854c076015f9a7749820a94272e19071bf0b25c89 mfgtools-v0.02.tar.gz +sha256 2655559a6bb1179eae514f5c7166f4ede4f2453efa9cf4dc3c045cab5d57dede LICENSE +sha256 0963b6e5086bf454265b0f57821a02b681d1211e40ad74c310231cb4d94815c9 README.txt diff --git a/buildroot/package/mfgtools/mfgtools.mk b/buildroot/package/mfgtools/mfgtools.mk new file mode 100644 index 0000000..e4663a8 --- /dev/null +++ b/buildroot/package/mfgtools/mfgtools.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# mfgtools +# +################################################################################ + +MFGTOOLS_VERSION = v0.02 +MFGTOOLS_SITE = $(call github,codeauroraforum,mfgtools,$(MFGTOOLS_VERSION)) +MFGTOOLS_SUBDIR = MfgToolLib +MFGTOOLS_LICENSE = BSD-3-Clause or CPOL +MFGTOOLS_LICENSE_FILES = LICENSE README.txt +HOST_MFGTOOLS_DEPENDENCIES = host-libusb + +HOST_MFGTOOLS_CFLAGS = \ + $(HOST_CFLAGS) $(HOST_LDFLAGS) -std=c++11 -lpthread \ + -L$(@D)/MfgToolLib -lMfgToolLib -I$(@D)/MfgToolLib \ + -lusb-1.0 -I$(HOST_DIR)/include/libusb-1.0 \ + -fpermissive -Wno-write-strings + +define HOST_MFGTOOLS_CLI_BUILD + $(HOST_CONFIGURE_OPTS) $(MAKE) CC="$(HOSTCXX)" \ + CFLAGS="$(HOST_MFGTOOLS_CFLAGS)" -C $(@D)/TestPrgm +endef + +HOST_MFGTOOLS_POST_BUILD_HOOKS += HOST_MFGTOOLS_CLI_BUILD + +define HOST_MFGTOOLS_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/MfgToolLib/libMfgToolLib.so \ + $(HOST_DIR)/lib/libMfgToolLib.so + $(INSTALL) -D -m 755 $(@D)/TestPrgm/mfgtoolcli \ + $(HOST_DIR)/bin/mfgtoolcli +endef + +$(eval $(host-cmake-package)) diff --git a/buildroot/package/mfgtools/readme.txt b/buildroot/package/mfgtools/readme.txt new file mode 100644 index 0000000..320e6ec --- /dev/null +++ b/buildroot/package/mfgtools/readme.txt @@ -0,0 +1,69 @@ +MfgTools Howto +============== + +1. Build your mfgtool image + +Make sure to enable the following Buildroot options: + +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_IMX_UUC=y +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y + +Also modify your kernel configuration to have: + +CONFIG_USB_GADGET=y +CONFIG_USB_MASS_STORAGE=y +CONFIG_FSL_UTP=y +CONFIG_MMC_BLOCK_MINORS=16 + +2. Go into the output and create the necessary folders + +$ cd output +$ mkdir -p "Profiles/Linux/OS Firmware/firmware" + +3. Create your XML update script named ucl2.xml + +You can find a sample XML at: + +$ wget https://storage.googleapis.com/boundarydevices.com/ucl2.xml \ + -O Profiles/Linux/OS\ Firmware/ucl2.xml + +4. Copy the U-Boot, Kernel and initramfs images to the appropriate +folder + +$ cp images/u-boot.imx images/zImage images/imx6q-sabrelite.dtb \ + images/rootfs.cpio.uboot Profiles/Linux/OS\ Firmware/firmware/ + +5. Copy the prebuilt binaries to be flashed + +Depending on your ucl2.xml file, the sample doesn't flash anything. + +6. Run the MfgTools client: + +$ ./host/bin/mfgtoolcli -l mmc -s uboot_defconfig=imx \ + -s dtbname=imx6q-sabrelite.dtb -s initramfs=rootfs.cpio.uboot \ + -s mmc=1 -p 1 + +For more information about the tools options, please read the +"Manufacturing Tool V2 Quick Start Guide.docx" documentation contained +in every mfgtools package from NXP website[1]. + +Note: All the above commands require your Linux host user to have +permissions to access the USB devices. Please make sure to have udev +rules that allow the user to communicate with the BootROM IDs +(Freescale USB recovery) as well as the one used for the UTP Linux +image (0x066F:0x37FF). Using 'sudo' in front of the mfgtoolcli +command would also grant you the necessary permission but it is *not* +recommended. + +Also, if your U-Boot environment doesn't include mfgtools bootargs, +make sure to set the following: + +setenv bootargs "console=${console},${baudrate} g_mass_storage.stall=0 \ + g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F \ + g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber=\"\" \ + g_mass_storage.file=/fat" + +[1] http://www.nxp.com/products/software-and-tools/software-development-tools/i.mx-software-and-tools/i.mx-6-series-software-and-development-tool-resources:IMX6_SW diff --git a/buildroot/package/micropython-lib/Config.in b/buildroot/package/micropython-lib/Config.in new file mode 100644 index 0000000..76557b2 --- /dev/null +++ b/buildroot/package/micropython-lib/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MICROPYTHON_LIB + bool "micropython-lib" + depends on BR2_PACKAGE_MICROPYTHON + select BR2_PACKAGE_PCRE # runtime + help + Core Python libraries ported to MicroPython. + + http://micropython.org diff --git a/buildroot/package/micropython-lib/micropython-lib.hash b/buildroot/package/micropython-lib/micropython-lib.hash new file mode 100644 index 0000000..bc0c22e --- /dev/null +++ b/buildroot/package/micropython-lib/micropython-lib.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 eb696009ff8c33004211e484649b34edb14f3efb2ff618942bc8888716757a55 micropython-lib-v1.8.6.tar.gz diff --git a/buildroot/package/micropython-lib/micropython-lib.mk b/buildroot/package/micropython-lib/micropython-lib.mk new file mode 100644 index 0000000..c9423fe --- /dev/null +++ b/buildroot/package/micropython-lib/micropython-lib.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# micropython-lib +# +################################################################################ + +MICROPYTHON_LIB_VERSION = v1.8.6 +MICROPYTHON_LIB_SITE = $(call github,micropython,micropython-lib,$(MICROPYTHON_LIB_VERSION)) +MICROPYTHON_LIB_LICENSE = Python-2.0 (some modules), MIT (everything else) +MICROPYTHON_LIB_LICENSE_FILES = LICENSE + +define MICROPYTHON_LIB_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + PREFIX=$(TARGET_DIR)/usr/lib/micropython \ + install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/micropython/0001-fix-version.patch b/buildroot/package/micropython/0001-fix-version.patch new file mode 100644 index 0000000..1bf2992 --- /dev/null +++ b/buildroot/package/micropython/0001-fix-version.patch @@ -0,0 +1,22 @@ +Always use the fallback behaviour for determining the version number + +When built from within buildroot the micropython build process detects +that it is inside a git repository and ends up using the buildroot +version number instead of the correct micropython version number. + +Signed-off-by: Chris Packham +--- +diff -Naur micropython-v1.4.5-old/py/makeversionhdr.py micropython-v1.4.5/py/makeversionhdr.py +--- micropython-v1.4.5-old/py/makeversionhdr.py 2015-08-12 00:42:30.000000000 +1200 ++++ micropython-v1.4.5/py/makeversionhdr.py 2015-09-16 10:21:06.698962836 +1200 +@@ -70,9 +70,7 @@ + + def make_version_header(filename): + # Get version info using git, with fallback to docs/conf.py +- info = get_version_info_from_git() +- if info is None: +- info = get_version_info_from_docs_conf() ++ info = get_version_info_from_docs_conf() + + git_tag, git_hash, ver = info + diff --git a/buildroot/package/micropython/Config.in b/buildroot/package/micropython/Config.in new file mode 100644 index 0000000..00649d4 --- /dev/null +++ b/buildroot/package/micropython/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_MICROPYTHON + bool "micropython" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + # libffi doesn't provide the closure implementation on Blackfin + depends on !BR2_bfin + select BR2_PACKAGE_LIBFFI + help + Micro Python is a lean and fast implementation of the Python + 3 programming language that is optimised to run on a + microcontroller. + + http://micropython.org + +comment "micropython needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on !BR2_bfin diff --git a/buildroot/package/micropython/micropython.hash b/buildroot/package/micropython/micropython.hash new file mode 100644 index 0000000..6ab7b10 --- /dev/null +++ b/buildroot/package/micropython/micropython.hash @@ -0,0 +1,2 @@ +#locally computed +sha256 55dd751c4c812809841fd06f4729b8341171c4b6c1dc28a9412455282554f8a5 micropython-v1.8.7.tar.gz diff --git a/buildroot/package/micropython/micropython.mk b/buildroot/package/micropython/micropython.mk new file mode 100644 index 0000000..8336fb4 --- /dev/null +++ b/buildroot/package/micropython/micropython.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# micropython +# +################################################################################ + +MICROPYTHON_VERSION = v1.8.7 +MICROPYTHON_SITE = $(call github,micropython,micropython,$(MICROPYTHON_VERSION)) +MICROPYTHON_LICENSE = MIT +MICROPYTHON_LICENSE_FILES = LICENSE +MICROPYTHON_DEPENDENCIES = host-pkgconf libffi + +# Use fallback implementation for exception handling on architectures that don't +# have explicit support. +ifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_arm)$(BR2_armeb),) +MICROPYTHON_CFLAGS = -DMICROPY_GCREGS_SETJMP=1 +endif + +# When building from a tarball we don't have some of the dependencies that are in +# the git repository as submodules +MICROPYTHON_MAKE_OPTS = MICROPY_PY_BTREE=0 +MICROPYTHON_MAKE_OPTS += MICROPY_PY_USSL=0 + +define MICROPYTHON_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/unix \ + $(MICROPYTHON_MAKE_OPTS) \ + CROSS_COMPILE=$(TARGET_CROSS) \ + CFLAGS_EXTRA=$(MICROPYTHON_CFLAGS) +endef + +define MICROPYTHON_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/unix \ + $(MICROPYTHON_MAKE_OPTS) \ + CROSS_COMPILE=$(TARGET_CROSS) \ + CFLAGS_EXTRA=$(MICROPYTHON_CFLAGS) \ + DESTDIR=$(TARGET_DIR) \ + PREFIX=$(TARGET_DIR)/usr \ + install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/midori/0001-fix-bug-1492932.patch b/buildroot/package/midori/0001-fix-bug-1492932.patch new file mode 100644 index 0000000..27ad283 --- /dev/null +++ b/buildroot/package/midori/0001-fix-bug-1492932.patch @@ -0,0 +1,44 @@ +Fix for https://bugs.launchpad.net/midori/+bug/1492932 +Patch status: upstream + +Signed-off-by: Gustavo Zacarias + +--- a/midori/midori-browser.c 2015-07-11 16:03:43 +0000 ++++ b/midori/midori-browser.c 2015-09-25 21:30:31 +0000 +@@ -5953,11 +5953,6 @@ + G_CALLBACK (midori_browser_destroy_cb), NULL); + gtk_window_set_role (GTK_WINDOW (browser), "browser"); + gtk_window_set_icon_name (GTK_WINDOW (browser), MIDORI_STOCK_WEB_BROWSER); +- #if GTK_CHECK_VERSION (3, 4, 0) +- #ifndef HAVE_GRANITE +- gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (browser), TRUE); +- #endif +- #endif + vbox = gtk_vbox_new (FALSE, 0); + /* gtk_container_add (GTK_CONTAINER (browser), vbox); + gtk_widget_show (vbox); */ + +--- a/midori/midori-view.c 2015-07-06 21:26:46 +0000 ++++ b/midori/midori-view.c 2015-09-25 21:30:31 +0000 +@@ -3495,9 +3495,6 @@ + } + else + gtk_window_set_icon_name (GTK_WINDOW (window), icon_name); +- #if GTK_CHECK_VERSION (3, 4, 0) +- gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (window), TRUE); +- #endif + gtk_widget_set_size_request (GTK_WIDGET (inspector_view), 700, 100); + #if GTK_CHECK_VERSION (3, 0, 0) + scrolled = gtk_scrolled_window_new (NULL, NULL); + +--- a/midori/midori-window.vala 2015-08-16 00:14:26 +0000 ++++ b/midori/midori-window.vala 2015-09-25 21:30:31 +0000 +@@ -28,7 +28,6 @@ + toolbar.show_arrow = true; + #if HAVE_GTK3 + toolbar.get_style_context ().add_class ("primary-toolbar"); +- hide_titlebar_when_maximized = true; + #endif + toolbar.popup_context_menu.connect ((x, y, button) => { + return button == 3 && context_menu (toolbar); }); + diff --git a/buildroot/package/midori/0002-gcr-for-x11-only.patch b/buildroot/package/midori/0002-gcr-for-x11-only.patch new file mode 100644 index 0000000..85e7697 --- /dev/null +++ b/buildroot/package/midori/0002-gcr-for-x11-only.patch @@ -0,0 +1,32 @@ +GCR support only works/is useful with X11 support. + +Reported upstream: https://bugs.launchpad.net/midori/+bug/1515985 + +Signed-off-by: Gustavo Zacarias + +diff -Nura midori-0.5.11.orig/CMakeLists.txt midori-0.5.11/CMakeLists.txt +--- midori-0.5.11.orig/CMakeLists.txt 2015-11-12 13:41:02.045898814 -0300 ++++ midori-0.5.11/CMakeLists.txt 2015-11-12 14:00:09.765545018 -0300 +@@ -175,18 +175,14 @@ + set(PKGS ${PKGS} zeitgeist-2.0) + endif() + +-if (WIN32) +- add_definitions("-DGCR_VERSION=\"No\"") +-else () +- if (USE_GTK3) +- pkg_check_modules(GCR REQUIRED gcr-3>=2.32) +- else () +- pkg_check_modules(GCR REQUIRED gcr-base-3>=2.32) +- endif () ++if (USE_GTK3 AND X11) ++ pkg_check_modules(GCR REQUIRED gcr-3>=2.32) + add_definitions("-DGCR_VERSION=\"${GCR_VERSION}\"") + add_definitions("-DHAVE_GCR") + set(OPTS_INCLUDE_DIRS ${OPTS_INCLUDE_DIRS} ${GCR_INCLUDE_DIRS}) + set(OPTS_LIBRARIES ${OPTS_LIBRARIES} ${GCR_LIBRARIES}) ++else () ++ add_definitions("-DGCR_VERSION=\"No\"") + endif () + + if (HALF_BRO_INCOM_WEBKIT2) diff --git a/buildroot/package/midori/Config.in b/buildroot/package/midori/Config.in new file mode 100644 index 0000000..bc37c6a --- /dev/null +++ b/buildroot/package/midori/Config.in @@ -0,0 +1,28 @@ +comment "midori needs libgtk3 and a glibc toolchain w/ C++, gcc >= 5, host gcc >= 4.8" + depends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_LIBGTK3 || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \ + !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_MIDORI + bool "midori" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt, gcr, gnupg2 + depends on BR2_PACKAGE_LIBGTK3 + depends on BR2_INSTALL_LIBSTDCPP # webkitgtk + depends on BR2_HOST_GCC_AT_LEAST_4_8 # webkitgtk -> icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # webkitgtk + depends on BR2_TOOLCHAIN_USES_GLIBC # webkitgtk + depends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS + # GCR can only be used with the X11 backend + select BR2_PACKAGE_GCR if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_GRANITE + select BR2_PACKAGE_LIBSOUP + select BR2_PACKAGE_LIBSOUP_GNOME + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_WEBKITGTK + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Midori is a lightweight web browser based on WebKit + + http://www.midori-browser.org/ diff --git a/buildroot/package/midori/midori.hash b/buildroot/package/midori/midori.hash new file mode 100644 index 0000000..f548c42 --- /dev/null +++ b/buildroot/package/midori/midori.hash @@ -0,0 +1,2 @@ +# From download link @ http://midori-browser.org/download/source/ +sha1 64c86935028feb5f89d799c2acacaad67764da6f midori_0.5.11_all_.tar.bz2 diff --git a/buildroot/package/midori/midori.mk b/buildroot/package/midori/midori.mk new file mode 100644 index 0000000..1755f12 --- /dev/null +++ b/buildroot/package/midori/midori.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# midori +# +################################################################################ + +MIDORI_VERSION = 0.5.11 +MIDORI_SOURCE = midori_$(MIDORI_VERSION)_all_.tar.bz2 +MIDORI_SITE = http://midori-browser.org/downloads +MIDORI_LICENSE = LGPL-2.1+ +MIDORI_LICENSE_FILES = COPYING +MIDORI_DEPENDENCIES = \ + host-intltool \ + host-librsvg \ + host-pkgconf \ + host-vala \ + host-python \ + $(if $(BR2_PACKAGE_LIBGTK3_X11),gcr) \ + granite \ + libgtk3 \ + libsoup \ + libxml2 \ + sqlite \ + webkitgtk \ + $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +MIDORI_CONF_OPTS = \ + -DHALF_BRO_INCOM_WEBKIT2=ON \ + -DUSE_GRANITE=ON \ + -DUSE_GTK3=ON \ + -DUSE_ZEITGEIST=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/mii-diag/0001-strchr.patch b/buildroot/package/mii-diag/0001-strchr.patch new file mode 100644 index 0000000..fcfeb3c --- /dev/null +++ b/buildroot/package/mii-diag/0001-strchr.patch @@ -0,0 +1,23 @@ +Use the strrchr() function instead of the deprecated rindex() +function. + +--- mii-diag-2.11.orig/mii-diag.c.orig 2008-06-25 11:08:52.000000000 +1000 ++++ mii-diag-2.11.orig/mii-diag.c 2005-03-27 03:56:33.000000000 +1000 +@@ -174,7 +174,7 @@ + { + int c, errflag = 0; + char **spp, *ifname; +- char *progname = rindex(argv[0], '/') ? rindex(argv[0], '/')+1 : argv[0]; ++ char *progname = strrchr(argv[0], '/') ? strrchr(argv[0], '/')+1 : argv[0]; + + while ((c = getopt_long(argc, argv, shortopts, longopts, 0)) != EOF) + switch (c) { +@@ -310,7 +310,7 @@ + str = endstr+1; + else { + fprintf(stderr, "Invalid driver parameter '%s'.\n", str); +- str = index(str, ','); ++ str = strchr(str, ','); + } + } else if (endstr[0] == ',') { + data32[i] = newval; diff --git a/buildroot/package/mii-diag/Config.in b/buildroot/package/mii-diag/Config.in new file mode 100644 index 0000000..ca48ba2 --- /dev/null +++ b/buildroot/package/mii-diag/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_MII_DIAG + bool "mii-diag" + help + mii-diag allows you to manipulate the MII registers of + network cards. diff --git a/buildroot/package/mii-diag/mii-diag.hash b/buildroot/package/mii-diag/mii-diag.hash new file mode 100644 index 0000000..22c69e3 --- /dev/null +++ b/buildroot/package/mii-diag/mii-diag.hash @@ -0,0 +1,3 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/m/mii-diag/mii-diag_2.11-3.dsc +sha256 c690e87e6010607593c1cc2ccd5c481eb3be179387220ad445d8ab83d73ad41c mii-diag_2.11.orig.tar.gz +sha256 b49fd3e7c0c446a949c3ca246cc441824d7ef5a61530f884756a82b0b2997190 mii-diag_2.11-3.diff.gz diff --git a/buildroot/package/mii-diag/mii-diag.mk b/buildroot/package/mii-diag/mii-diag.mk new file mode 100644 index 0000000..6efd5be --- /dev/null +++ b/buildroot/package/mii-diag/mii-diag.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# mii-diag +# +################################################################################ + +MII_DIAG_VERSION = 2.11 +MII_DIAG_SOURCE = mii-diag_$(MII_DIAG_VERSION).orig.tar.gz +MII_DIAG_PATCH = mii-diag_$(MII_DIAG_VERSION)-3.diff.gz +MII_DIAG_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/m/mii-diag +MII_DIAG_LICENSE = GPL # No version specified +MII_DIAG_LICENSE_FILES = mii-diag.c + +MII_DIAG_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) + +define MII_DIAG_DEBIAN_PATCHES + if [ -d $(@D)/debian/patches ]; then \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches \*.patch; \ + fi +endef + +MII_DIAG_POST_PATCH_HOOKS = MII_DIAG_DEBIAN_PATCHES + +define MII_DIAG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(MII_DIAG_MAKE_OPTS) -C $(@D) mii-diag +endef + +define MII_DIAG_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install-mii-diag +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mimic/Config.in b/buildroot/package/mimic/Config.in new file mode 100644 index 0000000..79641d3 --- /dev/null +++ b/buildroot/package/mimic/Config.in @@ -0,0 +1,41 @@ +comment "mimic needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_MIMIC + bool "mimic" + depends on BR2_USE_WCHAR + help + Mimic is a fast, lightweight Text-to-speech engine developed + by Mycroft A.I. and VocaliD, based on Carnegie Mellon + University's Flite (Festival-Lite) software. Mimic takes in + text and reads it out loud to create a high quality voice. + + https://github.com/MycroftAI/mimic + +if BR2_PACKAGE_MIMIC + +choice + prompt "audio backend" + default BR2_PACKAGE_MIMIC_AUDIO_BACKEND_NONE + +config BR2_PACKAGE_MIMIC_AUDIO_BACKEND_NONE + bool "none" + help + With no backend, mimic will only be able to produce .wav + files. + +config BR2_PACKAGE_MIMIC_AUDIO_BACKEND_ALSA + bool "alsa" + depends on BR2_PACKAGE_ALSA_LIB + +config BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PORTAUDIO + bool "alsa via portaudio" + depends on BR2_PACKAGE_PORTAUDIO + +config BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PULSEAUDIO + bool "pulseaudio" + depends on BR2_PACKAGE_PULSEAUDIO + +endchoice + +endif # BR2_PACKAGE_MIMIC diff --git a/buildroot/package/mimic/mimic.hash b/buildroot/package/mimic/mimic.hash new file mode 100644 index 0000000..39d0165 --- /dev/null +++ b/buildroot/package/mimic/mimic.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 725003c9972d5b67c49d5ea6a89cb26b63414ff2c7adbbaf9200cf9eb55f80eb mimic-1.1.0.tar.gz diff --git a/buildroot/package/mimic/mimic.mk b/buildroot/package/mimic/mimic.mk new file mode 100644 index 0000000..2d24656 --- /dev/null +++ b/buildroot/package/mimic/mimic.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# mimic +# +################################################################################ + +MIMIC_VERSION = 1.1.0 +MIMIC_SITE = $(call github,MycroftAI,mimic,$(MIMIC_VERSION)) +MIMIC_LICENSE = MIT +MIMIC_LICENSE_FILES = COPYING + +MIMIC_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_ALSA),y) +MIMIC_AUDIO_BACKEND = alsa +MIMIC_DEPENDENCIES += alsa-lib +else ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PORTAUDIO),y) +MIMIC_AUDIO_BACKEND = portaudio +MIMIC_DEPENDENCIES += portaudio +else ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_PULSEAUDIO),y) +MIMIC_AUDIO_BACKEND = pulseaudio +MIMIC_DEPENDENCIES += pulseaudio +else ifeq ($(BR2_PACKAGE_MIMIC_AUDIO_BACKEND_NONE),y) +MIMIC_AUDIO_BACKEND = none +endif + +MIMIC_CONF_OPTS += --with-audio=$(MIMIC_AUDIO_BACKEND) + +$(eval $(autotools-package)) diff --git a/buildroot/package/minetest-game/0001-Default-Revert-Default-Shorter-and-better-ABMs.patch b/buildroot/package/minetest-game/0001-Default-Revert-Default-Shorter-and-better-ABMs.patch new file mode 100644 index 0000000..e484e50 --- /dev/null +++ b/buildroot/package/minetest-game/0001-Default-Revert-Default-Shorter-and-better-ABMs.patch @@ -0,0 +1,54 @@ +From 626cd8e9c7c2a5d5c907a12abbaa6066b6d5f2ff Mon Sep 17 00:00:00 2001 +From: "vorunbekannt75@web.de" +Date: Tue, 6 Jun 2017 19:20:58 +0200 +Subject: [PATCH] Default: Revert "Default: Shorter and better ABMs" + +This reverts commit e523c3a2965afe76b9102b67992e15fafba1594a to re-enable +the overriding and redefinition of these global functions. + +[Romain backport from upstream] +Signed-off-by: Romain Naour +--- + mods/default/functions.lua | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/mods/default/functions.lua b/mods/default/functions.lua +index 5dc22ca..327e0c8 100644 +--- a/mods/default/functions.lua ++++ b/mods/default/functions.lua +@@ -139,7 +139,9 @@ if minetest.settings:get_bool("enable_lavacooling") ~= false then + interval = 1, + chance = 2, + catch_up = false, +- action = default.cool_lava, ++ action = function(...) ++ default.cool_lava(...) ++ end, + }) + end + +@@ -222,7 +224,9 @@ minetest.register_abm({ + neighbors = {"group:sand"}, + interval = 12, + chance = 83, +- action = default.grow_cactus ++ action = function(...) ++ default.grow_cactus(...) ++ end + }) + + minetest.register_abm({ +@@ -231,7 +235,9 @@ minetest.register_abm({ + neighbors = {"default:dirt", "default:dirt_with_grass"}, + interval = 14, + chance = 71, +- action = default.grow_papyrus ++ action = function(...) ++ default.grow_papyrus(...) ++ end + }) + + +-- +2.9.4 + diff --git a/buildroot/package/minetest-game/Config.in b/buildroot/package/minetest-game/Config.in new file mode 100644 index 0000000..cf92ea5 --- /dev/null +++ b/buildroot/package/minetest-game/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MINETEST_GAME + bool "minetest-game" + depends on BR2_PACKAGE_MINETEST + help + The main subgame for the Minetest engine. + + https://github.com/minetest/minetest_game diff --git a/buildroot/package/minetest-game/minetest-game.hash b/buildroot/package/minetest-game/minetest-game.hash new file mode 100644 index 0000000..1a2fe78 --- /dev/null +++ b/buildroot/package/minetest-game/minetest-game.hash @@ -0,0 +1,25 @@ +# Locally calculated +sha256 ea914555949b4faccda5e13143cb021d2f9a5fa19abd1f5e4b7b65004cbd2b5a minetest-game-0.4.16.tar.gz + +sha256 f8a254e8d5f6b3ca3873f990986e86c864f943aa5dc9bf56808c5f4bfa509db0 LICENSE.txt +sha256 3382f3bf99566089543621ee3256f7f98bf9364d3b852c5ed08202d435215d7d mods/beds/license.txt +sha256 9e9dbe5236ba70d0337f9879b988c19c6a7b0c902eed202f775200b8bee6980d mods/boats/license.txt +sha256 e642798b595fb41901ae695326da9a167b0bd6b4055edec2396672f5f01bb16c mods/bones/license.txt +sha256 baf438bc48b7da1b8fc03d37d134473e1c1f33ffe2e926fa650e6d0c64872785 mods/bucket/license.txt +sha256 6196d390ee0b6331766219aa82f31613fffb62476c03cf960190ab8c232b8822 mods/carts/license.txt +sha256 c0eca35bf446b1b9c8a0d1eefa0613bf2996187cd1f9382e7424b3d0b0dd7851 mods/creative/license.txt +sha256 0542a1ff8212197bf350b6135fb4d29f8a2341d9ddc1407ec812d7fb609a5c0f mods/default/license.txt +sha256 c0c652890fc80af8eefedbcfe1cd0d16b13b14cd1c7105c9c2bc9abe8cf1620c mods/doors/license.txt +sha256 011ebc82e96df3b825777e7531cb5d34cfce1f6ca27b7d3c80793c033d7c4f4e mods/dye/license.txt +sha256 163ad77a427a21a900a8fe2333dfc82d115e8e799b7e13ca71f6bd47dcf0ec13 mods/farming/license.txt +sha256 61f826be9adee70ef0e37f3bf4891fecc4b027a21637b32981b98220723d6f37 mods/fire/license.txt +sha256 a8647ac7609fdaea96bd0ec58ac5837fd17d049fd450008fd7922162979a292e mods/flowers/license.txt +sha256 857f64cd62c13e27f25363584342fe049885b16c6b2392f1ebd7c3a7fb6ca436 mods/give_initial_stuff/license.txt +sha256 0066e63d682d54a014ad3359794365a1abb87562d2b1e5e32093976d88c295b4 mods/screwdriver/license.txt +sha256 b903866d052774e4127952690ce62ca26aa5bc4c2ddd48fceae501fa0d24ed74 mods/sethome/license.txt +sha256 a82dfda1c9feb704997ea42116eb6a15a1f3f99ee8c49215fbbd32d519e8ad74 mods/stairs/license.txt +sha256 1d42ffae6bad0da2e76966532f5f759bbeb5adb395ee4bf7bacca1fdfef745a6 mods/tnt/license.txt +sha256 a0814bccd28157a160049efeac03864ff4c4dd6a34bc9cfcd3cc62de66fb156a mods/vessels/license.txt +sha256 e9ebf1b4b170e64a0ea6e246edd03689aeb859d6560b8372a8081c004b30cb65 mods/walls/license.txt +sha256 551b19e2c8b18c143301e090a1ceb5dc5d4ca243cad846de179d693439910816 mods/wool/license.txt +sha256 54fd170807a31712e3d6489287a27cdf5aa42eaff10e321aea040fb5b3e5a60a mods/xpanes/license.txt diff --git a/buildroot/package/minetest-game/minetest-game.mk b/buildroot/package/minetest-game/minetest-game.mk new file mode 100644 index 0000000..2386944 --- /dev/null +++ b/buildroot/package/minetest-game/minetest-game.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# minetest_game +# +################################################################################ + +MINETEST_GAME_VERSION = 0.4.16 +MINETEST_GAME_SITE = $(call github,minetest,minetest_game,$(MINETEST_GAME_VERSION)) +MINETEST_GAME_LICENSE = LGPL-2.1+ (code), CC-BY-SA-2.0, CC-BY-SA-3.0, \ + CC-BY-SA-4.0, MIT, CC0 1.0, CC-BY-2.0 (mods) +MINETEST_GAME_LICENSE_FILES = LICENSE.txt \ + mods/beds/license.txt \ + mods/boats/license.txt \ + mods/bones/license.txt \ + mods/bucket/license.txt \ + mods/carts/license.txt \ + mods/creative/license.txt \ + mods/default/license.txt \ + mods/doors/license.txt \ + mods/dye/license.txt \ + mods/farming/license.txt \ + mods/fire/license.txt \ + mods/flowers/license.txt \ + mods/give_initial_stuff/license.txt \ + mods/screwdriver/license.txt \ + mods/sethome/license.txt \ + mods/stairs/license.txt \ + mods/tnt/license.txt \ + mods/vessels/license.txt \ + mods/walls/license.txt \ + mods/wool/license.txt \ + mods/xpanes/license.txt + +define MINETEST_GAME_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/minetest/games/minetest_game + cp -dpfr $(@D)/* $(TARGET_DIR)/usr/share/minetest/games/minetest_game +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/minetest/Config.in b/buildroot/package/minetest/Config.in new file mode 100644 index 0000000..4e8b1d0 --- /dev/null +++ b/buildroot/package/minetest/Config.in @@ -0,0 +1,66 @@ +config BR2_PACKAGE_MINETEST + bool "minetest" + depends on BR2_INSTALL_LIBSTDCPP # irrlicht + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # jsoncpp + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_XORG7 # irrlicht + depends on BR2_PACKAGE_HAS_LIBGL # irrlicht + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + select BR2_PACKAGE_IRRLICHT + select BR2_PACKAGE_GMP + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_ZLIB + # At least one option must be enabled + select BR2_PACKAGE_MINETEST_CLIENT if !BR2_PACKAGE_MINETEST_SERVER + help + Minetest is a near-infinite-world block sandbox game and a + game engine, inspired by InfiniMiner, Minecraft, and the + like. + + http://www.minetest.net + +if BR2_PACKAGE_MINETEST + +config BR2_PACKAGE_MINETEST_CLIENT + bool "minetest client" + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_XLIB_LIBXXF86VM + help + Build Minetest client. + +config BR2_PACKAGE_MINETEST_SERVER + bool "minetest server" + help + Build Minetest server. + +config BR2_PACKAGE_MINETEST_SOUND + bool "enable sound" + depends on BR2_PACKAGE_MINETEST_CLIENT + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_OPENAL + +comment "sound support needs a toolchain w/ threads NPTL" + depends on BR2_PACKAGE_MINETEST_CLIENT + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + +endif + +comment "minetest needs a toolchain w/ C++, gcc >= 4.7, threads" + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 \ + || !BR2_TOOLCHAIN_HAS_THREADS + +comment "minetest needs X11 and an OpenGL provider" + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + depends on (BR2_INSTALL_LIBSTDCPP \ + && BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 \ + && BR2_TOOLCHAIN_HAS_THREADS) + depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7 diff --git a/buildroot/package/minetest/minetest.hash b/buildroot/package/minetest/minetest.hash new file mode 100644 index 0000000..5e6aeff --- /dev/null +++ b/buildroot/package/minetest/minetest.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 0ef3793de9f569746ea78af7a66fe96ef65400019e5e64a04a5c3fa26a707655 minetest-0.4.16.tar.gz + +sha256 e48121374512b8f2fada00ac1c8e100a767e2a2edd2853557ccf1995e35a4be0 README.txt diff --git a/buildroot/package/minetest/minetest.mk b/buildroot/package/minetest/minetest.mk new file mode 100644 index 0000000..a813a0d --- /dev/null +++ b/buildroot/package/minetest/minetest.mk @@ -0,0 +1,92 @@ +################################################################################ +# +# minetest +# +################################################################################ + +MINETEST_VERSION = 0.4.16 +MINETEST_SITE = $(call github,minetest,minetest,$(MINETEST_VERSION)) +MINETEST_LICENSE = LGPL-2.1+ (code), CC-BY-SA-3.0 (textures and sounds) +MINETEST_LICENSE_FILES = README.txt + +MINETEST_DEPENDENCIES = gmp irrlicht jsoncpp luajit sqlite zlib + +MINETEST_CONF_OPTS = \ + -DDEFAULT_RUN_IN_PLACE=OFF \ + -DENABLE_GLES=OFF \ + -DENABLE_LUAJIT=ON \ + -DENABLE_CURSES=OFF \ + -DAPPLY_LOCALE_BLACKLIST=OFF \ + -DENABLE_SYSTEM_GMP=ON \ + -DENABLE_SYSTEM_JSONCPP=ON + +ifeq ($(BR2_PACKAGE_MINETEST_CLIENT),y) +MINETEST_DEPENDENCIES += bzip2 jpeg libgl libpng xlib_libXxf86vm +MINETEST_CONF_OPTS += -DBUILD_CLIENT=ON +else +MINETEST_CONF_OPTS += -DBUILD_CLIENT=OFF +endif + +ifeq ($(BR2_PACKAGE_MINETEST_SERVER),y) +MINETEST_CONF_OPTS += -DBUILD_SERVER=ON +else +MINETEST_CONF_OPTS += -DBUILD_SERVER=OFF +endif + +ifeq ($(BR2_PACKAGE_MINETEST_SOUND),y) +MINETEST_DEPENDENCIES += libvorbis openal +MINETEST_CONF_OPTS += -DENABLE_SOUND=ON +else +MINETEST_CONF_OPTS += -DENABLE_SOUND=OFF +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +MINETEST_DEPENDENCIES += freetype +MINETEST_CONF_OPTS += -DENABLE_FREETYPE=ON +else +MINETEST_CONF_OPTS += -DENABLE_FREETYPE=OFF +endif + +ifeq ($(BR2_PACKAGE_HIREDIS),y) +MINETEST_DEPENDENCIES += hiredis +MINETEST_CONF_OPTS += -DENABLE_REDIS=ON +else +MINETEST_CONF_OPTS += -DENABLE_REDIS=OFF +endif + +ifeq ($(BR2_PACKAGE_LEVELDB),y) +MINETEST_DEPENDENCIES += leveldb +MINETEST_CONF_OPTS += -DENABLE_LEVELDB=ON +else +MINETEST_CONF_OPTS += -DENABLE_LEVELDB=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +MINETEST_DEPENDENCIES += libcurl +MINETEST_CONF_OPTS += -DENABLE_CURL=ON +else +MINETEST_CONF_OPTS += -DENABLE_CURL=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBSPATIALINDEX),y) +MINETEST_DEPENDENCIES += libspatialindex +MINETEST_CONF_OPTS += -DENABLE_SPATIAL=ON +else +MINETEST_CONF_OPTS += -DENABLE_SPATIAL=OFF +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +MINETEST_DEPENDENCIES += postgresql +MINETEST_CONF_OPTS += -DENABLE_POSTGRESQL=ON +else +MINETEST_CONF_OPTS += -DENABLE_POSTGRESQL=OFF +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +MINETEST_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) +MINETEST_CONF_OPTS += -DENABLE_GETTEXT=ON +else +MINETEST_CONF_OPTS += -DENABLE_GETTEXT=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/minicom/0001-musl-libc-compile-fix.patch b/buildroot/package/minicom/0001-musl-libc-compile-fix.patch new file mode 100644 index 0000000..94c0da0 --- /dev/null +++ b/buildroot/package/minicom/0001-musl-libc-compile-fix.patch @@ -0,0 +1,28 @@ +# HG changeset patch +# User Adam Lackorzynski +# Date 1432407431 -7200 +# Sat May 23 20:57:11 2015 +0200 +# Node ID 8bf81e6a8e60e37c2dec9577a1be6357b8d56165 +# Parent 8c784c80c17aa7a346d982db23bca5df67302cda +musl-libc compile fix + +By Felix Janda : +VC_MUSIC is enabled by default on linux and in dial.c the +necessary header are only included for glibc. (The wrong conditional +include has likely been introduced by the 2003-03-30 GNU/Hurd patch.) + +Signed-off-by: Bernd Kuhls +[Taken from upstream Mercurial commit 8bf81e6a8e60] + +diff -r 8c784c80c17a -r 8bf81e6a8e60 src/dial.c +--- a/src/dial.c Sat May 23 20:56:29 2015 +0200 ++++ b/src/dial.c Sat May 23 20:57:11 2015 +0200 +@@ -39,7 +39,7 @@ + #include "intl.h" + + #ifdef VC_MUSIC +-# if defined(__GLIBC__) ++# if defined(__linux__) || defined(__GLIBC__) + # include + # include + # include diff --git a/buildroot/package/minicom/0002-change-maxnamlen-to-posixs-name-max.patch b/buildroot/package/minicom/0002-change-maxnamlen-to-posixs-name-max.patch new file mode 100644 index 0000000..83e1530 --- /dev/null +++ b/buildroot/package/minicom/0002-change-maxnamlen-to-posixs-name-max.patch @@ -0,0 +1,51 @@ +# HG changeset patch +# User Adam Lackorzynski +# Date 1432407475 -7200 +# Sat May 23 20:57:55 2015 +0200 +# Node ID 93e5dd955c8bd944fd64bb04fd117c963c3758bc +# Parent 8bf81e6a8e60e37c2dec9577a1be6357b8d56165 +Change MAXNAMLEN to POSIX's NAME_MAX + +By Felix Janda : +MAXNAMLEN is usually defined in but it is +better to use the equivalent POSIX NAME_MAX. + +Signed-off-by: Bernd Kuhls +[Taken from upstream Mercurial commit 93e5dd955c8b] + +diff -r 8bf81e6a8e60 -r 93e5dd955c8b src/getsdir.c +--- a/src/getsdir.c Sat May 23 20:57:11 2015 +0200 ++++ b/src/getsdir.c Sat May 23 20:57:55 2015 +0200 +@@ -145,7 +145,7 @@ + * + * The data will be in the form: + * typedef struct dirEntry { +- * char fname[MAXNAMLEN + 1]; ++ * char fname[NAME_MAX + 1]; + * time_t time; + * mode_t mode; + * } GETSDIR_ENTRY; +@@ -232,7 +232,7 @@ + } + + /* copy the filename */ +- strncpy((*datptr)[cnt].fname, dp->d_name, MAXNAMLEN); ++ strncpy((*datptr)[cnt].fname, dp->d_name, NAME_MAX); + + /* get information about the directory entry */ + snprintf(fpath, sizeof(fpath), "%s/%s", dirpath, dp->d_name); +diff -r 8bf81e6a8e60 -r 93e5dd955c8b src/getsdir.h +--- a/src/getsdir.h Sat May 23 20:57:11 2015 +0200 ++++ b/src/getsdir.h Sat May 23 20:57:55 2015 +0200 +@@ -23,9 +23,10 @@ + */ + + #include ++#include + + typedef struct dirEntry { /* structure of data item */ +- char fname[MAXNAMLEN + 1]; /* filename + terminating null */ ++ char fname[NAME_MAX + 1]; /* filename + terminating null */ + time_t time; /* last modification date */ + mode_t mode; /* file mode (dir? etc.) */ + ushort cflags; /* caller field for convenience */ diff --git a/buildroot/package/minicom/Config.in b/buildroot/package/minicom/Config.in new file mode 100644 index 0000000..c41c188 --- /dev/null +++ b/buildroot/package/minicom/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_MINICOM + bool "minicom" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_NCURSES + help + Minicom is a menu driven communications program. It emulates + ANSI and VT102 terminals. It has a dialing directory and auto + zmodem download. + + http://alioth.debian.org/projects/minicom/ + +comment "minicom needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/minicom/minicom.hash b/buildroot/package/minicom/minicom.hash new file mode 100644 index 0000000..ca30871 --- /dev/null +++ b/buildroot/package/minicom/minicom.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 532f836b7a677eb0cb1dca8d70302b73729c3d30df26d58368d712e5cca041f1 minicom-2.7.1.tar.gz diff --git a/buildroot/package/minicom/minicom.mk b/buildroot/package/minicom/minicom.mk new file mode 100644 index 0000000..cb06482 --- /dev/null +++ b/buildroot/package/minicom/minicom.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# minicom +# +################################################################################ + +MINICOM_VERSION = 2.7.1 +MINICOM_SITE = https://alioth.debian.org/frs/download.php/file/4215 +MINICOM_LICENSE = GPL-2.0+ +MINICOM_LICENSE_FILES = COPYING + +# pkg-config is only used to check for liblockdev, which we don't have +# in BR, so instead of adding host-pkgconf as a dependency, simply make +# sure the host version isn't used so we don't end up with problems if +# people have liblockdev1-dev installed +MINICOM_CONF_ENV = PKG_CONFIG=/bin/false + +MINICOM_DEPENDENCIES = ncurses $(if $(BR2_ENABLE_LOCALE),,libiconv) + +$(eval $(autotools-package)) diff --git a/buildroot/package/minidlna/Config.in b/buildroot/package/minidlna/Config.in new file mode 100644 index 0000000..0083c9d --- /dev/null +++ b/buildroot/package/minidlna/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_MINIDLNA + bool "minidlna" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # flac + depends on BR2_USE_MMU # fork + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FLAC + select BR2_PACKAGE_LIBVORBIS # selects libogg + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBID3TAG # selects zlib + select BR2_PACKAGE_LIBEXIF + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_SQLITE + help + MiniDLNA (aka ReadyDLNA) is server software with the aim of + being fully compliant with DLNA/UPnP-AV clients. + + http://minidlna.sourceforge.net/ + +comment "minidlna needs a toolchain w/ dynamic library, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/minidlna/S60minidlnad b/buildroot/package/minidlna/S60minidlnad new file mode 100644 index 0000000..9b158af --- /dev/null +++ b/buildroot/package/minidlna/S60minidlnad @@ -0,0 +1,43 @@ +#!/bin/sh +# +# minidlnad Starts minidlnad. +# + +start() { + printf "Starting minidlna: " + umask 077 + start-stop-daemon -S -q -p /var/run/minidlna/minidlna.pid \ + --exec /usr/sbin/minidlnad -- "$@" + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping minidlna: " + start-stop-daemon -K -q -p /var/run/minidlna/minidlna.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + # Sleep needed for minidlna to restart properly + sleep 1 + start "$@" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + force-reload) + restart -R + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/minidlna/minidlna.hash b/buildroot/package/minidlna/minidlna.hash new file mode 100644 index 0000000..5398506 --- /dev/null +++ b/buildroot/package/minidlna/minidlna.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/minidlna/files/minidlna/1.2.1/ +md5 a968d3d84971322471cabda3669cc0f8 minidlna-1.2.1.tar.gz +sha1 79d0032c7055aefd4c8e5178bc86fbf258d449d2 minidlna-1.2.1.tar.gz +# Locally computed +sha256 67388ba23ab0c7033557a32084804f796aa2a796db7bb2b770fb76ac2a742eec minidlna-1.2.1.tar.gz diff --git a/buildroot/package/minidlna/minidlna.mk b/buildroot/package/minidlna/minidlna.mk new file mode 100644 index 0000000..262480c --- /dev/null +++ b/buildroot/package/minidlna/minidlna.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# minidlna +# +################################################################################ + +MINIDLNA_VERSION = 1.2.1 +MINIDLNA_SITE = https://downloads.sourceforge.net/project/minidlna/minidlna/$(MINIDLNA_VERSION) +MINIDLNA_LICENSE = GPL-2.0, BSD-3-Clause +MINIDLNA_LICENSE_FILES = COPYING LICENCE.miniupnpd + +MINIDLNA_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + ffmpeg flac libvorbis libogg libid3tag libexif jpeg sqlite \ + host-xutil_makedepend + +MINIDLNA_CONF_OPTS = \ + --disable-static + +define MINIDLNA_INSTALL_CONF + $(INSTALL) -D -m 644 $(@D)/minidlna.conf $(TARGET_DIR)/etc/minidlna.conf +endef + +MINIDLNA_POST_INSTALL_TARGET_HOOKS += MINIDLNA_INSTALL_CONF + +define MINIDLNA_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/minidlna/S60minidlnad \ + $(TARGET_DIR)/etc/init.d/S60minidlnad +endef + +define MINIDLNA_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/minidlna/minidlnad.service \ + $(TARGET_DIR)/usr/lib/systemd/system/minidlnad.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/minidlnad.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/minidlnad.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/minidlna/minidlnad.service b/buildroot/package/minidlna/minidlnad.service new file mode 100644 index 0000000..f69476b --- /dev/null +++ b/buildroot/package/minidlna/minidlnad.service @@ -0,0 +1,11 @@ +[Unit] +Description=minidlna server +After=network.target + +[Service] +Type=forking +ExecStart=/usr/sbin/minidlnad +PIDFile=/var/run/minidlna/minidlna.pid + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/minissdpd/Config.in b/buildroot/package/minissdpd/Config.in new file mode 100644 index 0000000..226cff0 --- /dev/null +++ b/buildroot/package/minissdpd/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MINISSDPD + bool "minissdpd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBNFNETLINK + help + SSDP managing daemon. Designed to work with miniupnpc, + miniupnpd, minidlna, etc. + + http://miniupnp.free.fr/ diff --git a/buildroot/package/minissdpd/S50minissdpd b/buildroot/package/minissdpd/S50minissdpd new file mode 100644 index 0000000..6235e06 --- /dev/null +++ b/buildroot/package/minissdpd/S50minissdpd @@ -0,0 +1,47 @@ +#!/bin/sh + +NAME=minissdpd +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/sbin/$NAME +CFGFILE=/etc/default/$NAME + +IFACE=eth0 + +# Read configuration variable file if it is present +if [ -f $CFGFILE ]; then + . $CFGFILE +fi + +DAEMON_ARGS="-i $IFACE" + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON -- $DAEMON_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/minissdpd/minissdpd.hash b/buildroot/package/minissdpd/minissdpd.hash new file mode 100644 index 0000000..dd16677 --- /dev/null +++ b/buildroot/package/minissdpd/minissdpd.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 dfd637b185731e1acb412a86faa9718eb93c04ca08280541a6d22d14d1fb890f minissdpd-1.5.tar.gz +sha256 c432d6ee83deb6a0c105a2c3ebd11e3855ab91498b0847a8657e68ce8e4491a5 LICENSE diff --git a/buildroot/package/minissdpd/minissdpd.mk b/buildroot/package/minissdpd/minissdpd.mk new file mode 100644 index 0000000..f3f383b --- /dev/null +++ b/buildroot/package/minissdpd/minissdpd.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# minissdpd +# +################################################################################ + +MINISSDPD_VERSION = 1.5 +MINISSDPD_SITE = http://miniupnp.free.fr/files +MINISSDPD_LICENSE = BSD-3-Clause +MINISSDPD_LICENSE_FILES = LICENSE +MINISSDPD_DEPENDENCIES = libnfnetlink + +define MINISSDPD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \ + -C $(@D) +endef + +define MINISSDPD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + PREFIX=$(TARGET_DIR) install +endef + +# Use dedicated init scripts for systemV and systemd instead of using +# minissdpd.init.d.script as it is not compatible with buildroot init system +define MINISSDPD_INSTALL_INIT_SYSV + $(RM) $(TARGET_DIR)/etc/init.d/minissdpd + $(INSTALL) -D -m 0755 package/minissdpd/S50minissdpd \ + $(TARGET_DIR)/etc/init.d/S50minissdpd +endef + +define MINISSDPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/minissdpd/minissdpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/minissdpd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/minissdpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/minissdpd.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/minissdpd/minissdpd.service b/buildroot/package/minissdpd/minissdpd.service new file mode 100644 index 0000000..59ed9c8 --- /dev/null +++ b/buildroot/package/minissdpd/minissdpd.service @@ -0,0 +1,12 @@ +[Unit] +Description=SSDP managing daemon +After=network.target + +[Service] +Environment="IFACE=eth0" +EnvironmentFile=/etc/default/minissdpd +ExecStart=/usr/sbin/minissdpd -i $IFACE +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/minizip/Config.in b/buildroot/package/minizip/Config.in new file mode 100644 index 0000000..7205e00 --- /dev/null +++ b/buildroot/package/minizip/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_MINIZIP + bool "minizip" + select BR2_PACKAGE_ZLIB + help + Enables to extract files from a .zip archive file. + It is compatible with PKZip 2.04g, WinZip, InfoZip, + MimarSinan Codex Suite 2002 tools, and compatible sofware. + + https://github.com/nmoinvaz/minizip + +config BR2_PACKAGE_MINIZIP_DEMOS + bool "miniunzip/minizip" + depends on BR2_PACKAGE_MINIZIP + help + Enable miniunzip/minizip binary tools. diff --git a/buildroot/package/minizip/minizip.hash b/buildroot/package/minizip/minizip.hash new file mode 100644 index 0000000..718026c --- /dev/null +++ b/buildroot/package/minizip/minizip.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 5666b5ee3e85dfd2dd119970613c12e6267d31813f07d3ffa5d359fe272cb6d1 minizip-1.1.tar.gz diff --git a/buildroot/package/minizip/minizip.mk b/buildroot/package/minizip/minizip.mk new file mode 100644 index 0000000..bcd6cc9 --- /dev/null +++ b/buildroot/package/minizip/minizip.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# minizip +# +################################################################################ + +MINIZIP_VERSION = 1.1 +MINIZIP_SITE = $(call github,nmoinvaz,minizip,$(MINIZIP_VERSION)) +MINIZIP_DEPENDENCIES = zlib +MINIZIP_AUTORECONF = YES +MINIZIP_INSTALL_STAGING = YES +MINIZIP_CONF_OPTS = $(if $(BR2_PACKAGE_MINIZIP_DEMOS),--enable-demos) +MINIZIP_LICENSE = Zlib +MINIZIP_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/buildroot/package/miraclecast/Config.in b/buildroot/package/miraclecast/Config.in new file mode 100644 index 0000000..57bd57a --- /dev/null +++ b/buildroot/package/miraclecast/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_MIRACLECAST + bool "miraclecast" + depends on BR2_PACKAGE_SYSTEMD + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_READLINE + help + The MiracleCast project provides software to connect external + monitors to your system via Wifi. It is compatible to the + Wifi-Display specification also known as Miracast. MiracleCast + implements the Display-Source as well as Display-Sink side. + + https://github.com/albfan/miraclecast + +comment "miraclecast needs systemd and a glibc toolchain w/ threads and wchar" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_SYSTEMD diff --git a/buildroot/package/miraclecast/miraclecast.hash b/buildroot/package/miraclecast/miraclecast.hash new file mode 100644 index 0000000..97c68d0 --- /dev/null +++ b/buildroot/package/miraclecast/miraclecast.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e11440f782519663db367285dd54b53eb5feb78682dac42bd90230222de9f0fd miraclecast-c94be167c85c6ec8badd7ac79e3dea2e0b73225c.tar.gz diff --git a/buildroot/package/miraclecast/miraclecast.mk b/buildroot/package/miraclecast/miraclecast.mk new file mode 100644 index 0000000..f75191b --- /dev/null +++ b/buildroot/package/miraclecast/miraclecast.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# miraclecast +# +################################################################################ + +MIRACLECAST_VERSION = c94be167c85c6ec8badd7ac79e3dea2e0b73225c +MIRACLECAST_SITE = $(call github,albfan,miraclecast,$(MIRACLECAST_VERSION)) +MIRACLECAST_LICENSE = LGPL-2.1+, GPL-2.0 (gdhcp) +MIRACLECAST_LICENSE_FILES = COPYING LICENSE_gdhcp LICENSE_htable LICENSE_lgpl +MIRACLECAST_DEPENDENCIES = host-pkgconf systemd gstreamer1 \ + readline libglib2 +# Straight out the repository, no ./configure +MIRACLECAST_AUTORECONF = YES + +define MIRACLECAST_INSTALL_DBUS_POLICY + $(INSTALL) -m 0644 -D \ + $(@D)/res/org.freedesktop.miracle.conf \ + $(TARGET_DIR)/etc/dbus-1/system.d/org.freedesktop.miracle.conf +endef +MIRACLECAST_POST_INSTALL_TARGET_HOOKS += MIRACLECAST_INSTALL_DBUS_POLICY + +$(eval $(autotools-package)) diff --git a/buildroot/package/mjpegtools/Config.in b/buildroot/package/mjpegtools/Config.in new file mode 100644 index 0000000..c486361 --- /dev/null +++ b/buildroot/package/mjpegtools/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_MJPEGTOOLS + bool "mjpegtools" + depends on BR2_USE_MMU # fork + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_JPEG + help + The mjpegtools programs are a set of tools + that can do recording of videos and playback, + simple cut-and-paste editing and the MPEG + compression of audio and video under Linux. + + http://mjpeg.sourceforge.net + +comment "mjpegtools needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/mjpegtools/mjpegtools.hash b/buildroot/package/mjpegtools/mjpegtools.hash new file mode 100644 index 0000000..db184f7 --- /dev/null +++ b/buildroot/package/mjpegtools/mjpegtools.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/mjpeg/files/mjpegtools/2.1.0/ +md5 57bf5dd78976ca9bac972a6511b236f3 mjpegtools-2.1.0.tar.gz +sha1 b9effa86280e23d67369e842e5cb645948583097 mjpegtools-2.1.0.tar.gz diff --git a/buildroot/package/mjpegtools/mjpegtools.mk b/buildroot/package/mjpegtools/mjpegtools.mk new file mode 100644 index 0000000..c7392fa --- /dev/null +++ b/buildroot/package/mjpegtools/mjpegtools.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# mjpegtools +# +################################################################################ + +MJPEGTOOLS_VERSION = 2.1.0 +MJPEGTOOLS_SITE = http://sourceforge.net/projects/mjpeg/files/mjpegtools/$(MJPEGTOOLS_VERSION) +MJPEGTOOLS_DEPENDENCIES = host-pkgconf jpeg +MJPEGTOOLS_LICENSE = GPL-2.0+ +MJPEGTOOLS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +MJPEGTOOLS_CONF_OPTS += --with-libpng +MJPEGTOOLS_DEPENDENCIES += libpng +else +MJPEGTOOLS_CONF_OPTS += --without-libpng +endif + +# expects X11 backend in sdl +ifeq ($(BR2_PACKAGE_SDL_X11),y) +MJPEGTOOLS_CONF_OPTS += --with-libsdl +MJPEGTOOLS_DEPENDENCIES += sdl +else +MJPEGTOOLS_CONF_OPTS += --without-libsdl +endif + +ifeq ($(BR2_PACKAGE_SDL_GFX),y) +MJPEGTOOLS_CONF_OPTS += --with-sdlgfx +MJPEGTOOLS_DEPENDENCIES += sdl_gfx +else +MJPEGTOOLS_CONF_OPTS += --without-sdlgfx +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +MJPEGTOOLS_CONF_OPTS += --with-x +MJPEGTOOLS_DEPENDENCIES += xlib_libX11 +else +MJPEGTOOLS_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86DGA),y) +MJPEGTOOLS_CONF_OPTS += --with-dga +MJPEGTOOLS_DEPENDENCIES += xlib_libXxf86dga +else +MJPEGTOOLS_CONF_OPTS += --without-dga +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +MJPEGTOOLS_CONF_OPTS += --with-gtk +MJPEGTOOLS_DEPENDENCIES += libgtk2 +else +MJPEGTOOLS_CONF_OPTS += --without-gtk +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/mjpg-streamer/0001-musl-pthread.patch b/buildroot/package/mjpg-streamer/0001-musl-pthread.patch new file mode 100644 index 0000000..9e76e76 --- /dev/null +++ b/buildroot/package/mjpg-streamer/0001-musl-pthread.patch @@ -0,0 +1,18 @@ +Fix musl build + +Patch written by Thomas Petazzoni: +http://patchwork.ozlabs.org/patch/572309/ + +Signed-off-by: Bernd Kuhls + +diff -uNr mjpg-streamer-bbf32fddfd02a9e072e89e83a5b33e6ca0a7bd4b.org/plugins/input.h mjpg-streamer-bbf32fddfd02a9e072e89e83a5b33e6ca0a7bd4b/plugins/input.h +--- mjpg-streamer-bbf32fddfd02a9e072e89e83a5b33e6ca0a7bd4b.org/plugins/input.h 2015-11-09 15:56:47.000000000 +0100 ++++ mjpg-streamer-bbf32fddfd02a9e072e89e83a5b33e6ca0a7bd4b/plugins/input.h 2016-01-26 20:19:05.884349502 +0100 +@@ -20,6 +20,7 @@ + # # + *******************************************************************************/ + ++#include + #include + #include "../mjpg_streamer.h" + #define INPUT_PLUGIN_PREFIX " i: " diff --git a/buildroot/package/mjpg-streamer/Config.in b/buildroot/package/mjpg-streamer/Config.in new file mode 100644 index 0000000..f42c2a5 --- /dev/null +++ b/buildroot/package/mjpg-streamer/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_MJPG_STREAMER + bool "mjpg-streamer" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # linux/uvcvideo.h + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # plugins need dlopen() + select BR2_PACKAGE_JPEG + help + MJPG-streamer takes JPGs from Linux-UVC compatible webcams, + filesystem or other input plugins and streams them as + M-JPEG via HTTP to webbrowsers, VLC and other software. + + http://mjpg-streamer.sourceforge.net + +comment "mjpg-streamer needs a toolchain w/ threads, headers >= 3.0, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 || BR2_STATIC_LIBS diff --git a/buildroot/package/mjpg-streamer/mjpg-streamer.hash b/buildroot/package/mjpg-streamer/mjpg-streamer.hash new file mode 100644 index 0000000..8bbac29 --- /dev/null +++ b/buildroot/package/mjpg-streamer/mjpg-streamer.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 756a60cbc3404ac21109bb66091774ac8e1d64ebf60e2bf2c0d08a06d1abb9be mjpg-streamer-bbf32fddfd02a9e072e89e83a5b33e6ca0a7bd4b.tar.gz diff --git a/buildroot/package/mjpg-streamer/mjpg-streamer.mk b/buildroot/package/mjpg-streamer/mjpg-streamer.mk new file mode 100644 index 0000000..4fecf69 --- /dev/null +++ b/buildroot/package/mjpg-streamer/mjpg-streamer.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# mjpg-streamer +# +################################################################################ + +# Original source is located at +# http://sourceforge.net/p/mjpg-streamer/code/commit_browser +# oliv3r forked the repo to add support for 3.16 and 3.17 kernels: +# http://sourceforge.net/p/mjpg-streamer/patches/14/ +MJPG_STREAMER_VERSION = bbf32fddfd02a9e072e89e83a5b33e6ca0a7bd4b +MJPG_STREAMER_SITE = $(call github,oliv3r,mjpg-streamer,$(MJPG_STREAMER_VERSION)) +MJPG_STREAMER_LICENSE = GPL-2.0+ +MJPG_STREAMER_LICENSE_FILES = LICENSE +MJPG_STREAMER_DEPENDENCIES = jpeg + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +MJPG_STREAMER_DEPENDENCIES += libv4l +MJPG_STREAMER_USE_LIBV4L += USE_LIBV4L2=true +endif + +define MJPG_STREAMER_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" -C $(@D) $(MJPG_STREAMER_USE_LIBV4L) +endef + +define MJPG_STREAMER_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mkpasswd/Config.in.host b/buildroot/package/mkpasswd/Config.in.host new file mode 100644 index 0000000..93774bd --- /dev/null +++ b/buildroot/package/mkpasswd/Config.in.host @@ -0,0 +1,2 @@ +config BR2_PACKAGE_HOST_MKPASSWD + bool "host mkpasswd" diff --git a/buildroot/package/mkpasswd/config.h b/buildroot/package/mkpasswd/config.h new file mode 100644 index 0000000..f345074 --- /dev/null +++ b/buildroot/package/mkpasswd/config.h @@ -0,0 +1,95 @@ +/* Program version */ +#define VERSION "5.0.26" + +/* Configurable features */ + +/* Always hide legal disclaimers */ +#undef ALWAYS_HIDE_DISCL + +/* Default server */ +#define DEFAULTSERVER "whois.arin.net" + +/* Configuration file */ +/* +#define CONFIG_FILE "/etc/whois.conf" +*/ + + +/* autoconf in cpp macros */ +#ifdef linux +# define ENABLE_NLS +#endif + +#ifdef __FreeBSD__ +/* which versions? */ +# define HAVE_GETOPT_LONG +# define HAVE_GETADDRINFO +# define ENABLE_NLS +# ifndef LOCALEDIR +# define LOCALEDIR "/usr/local/share/locale" +# endif +#endif + +/* needs unistd.h */ +#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 200112L +# define HAVE_GETADDRINFO +# define HAVE_REGEXEC +#endif + +#if defined __APPLE__ && defined __MACH__ +# define HAVE_GETOPT_LONG +# define HAVE_GETADDRINFO +#endif + +#if defined __GLIBC__ +# define HAVE_GETOPT_LONG +# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 +# define HAVE_GETADDRINFO +# endif +# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 7 +# define HAVE_SHA_CRYPT +# endif +#endif + +/* Unknown versions of Solaris */ +#if defined __SVR4 && defined __sun +# define HAVE_SHA_CRYPT +# define HAVE_SOLARIS_CRYPT_GENSALT +#endif + +/* FIXME: which systems lack this? */ +#define HAVE_GETTIMEOFDAY +/* FIXME: disabled because it does not parse addresses with a netmask length. + * The code using it needs to be either fixed or removed. +#define HAVE_INET_PTON +*/ + +/* + * Please send patches to correctly ignore old releases which lack a RNG + * and add more systems which have one. + */ +#ifdef RANDOM_DEVICE +#elif defined __GLIBC__ \ + || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ \ + /* AIX >= 5.2? */ \ + || defined _AIX52 \ + /* HP-UX >= B.11.11.09? */ \ + || defined __hpux \ + /* OS X: */ \ + || (defined __APPLE__ && defined __MACH__) \ + /* Solaris >= 9 (this is >= 7): */ \ + || (defined __SVR4 && defined __sun && defined SUSv2) \ + /* Tru64 UNIX >= 5.1B? */ \ + || defined __osf +# define RANDOM_DEVICE "/dev/urandom" +#endif + +#ifdef ENABLE_NLS +# ifndef NLS_CAT_NAME +# define NLS_CAT_NAME "whois" +# endif +# ifndef LOCALEDIR +# define LOCALEDIR "/usr/share/locale" +# endif +#endif + diff --git a/buildroot/package/mkpasswd/mkpasswd.c b/buildroot/package/mkpasswd/mkpasswd.c new file mode 100644 index 0000000..fd16230 --- /dev/null +++ b/buildroot/package/mkpasswd/mkpasswd.c @@ -0,0 +1,461 @@ +/* + * Copyright (C) 2001-2008 Marco d'Itri + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* for crypt, snprintf and strcasecmp */ +#define _XOPEN_SOURCE +#define _BSD_SOURCE + +/* System library */ +#include +#include +#include +#include "config.h" +#ifdef HAVE_GETOPT_LONG +#include +#endif +#include +#include +#include +#include +#ifdef HAVE_XCRYPT +#include +#include +#endif +#ifdef HAVE_LINUX_CRYPT_GENSALT +#define _OW_SOURCE +#include +#endif +#ifdef HAVE_GETTIMEOFDAY +#include +#endif + +/* glibc without crypt() */ +#ifndef _XOPEN_CRYPT +#include +#endif + +/* Application-specific */ +#include "utils.h" + +/* Global variables */ +#ifdef HAVE_GETOPT_LONG +static const struct option longopts[] = { + {"method", optional_argument, NULL, 'm'}, + /* for backward compatibility with versions < 4.7.25 (< 20080321): */ + {"hash", optional_argument, NULL, 'H'}, + {"help", no_argument, NULL, 'h'}, + {"password-fd", required_argument, NULL, 'P'}, + {"stdin", no_argument, NULL, 's'}, + {"salt", required_argument, NULL, 'S'}, + {"rounds", required_argument, NULL, 'R'}, + {"version", no_argument, NULL, 'V'}, + {NULL, 0, NULL, 0 } +}; +#else +extern char *optarg; +extern int optind; +#endif + +static const char valid_salts[] = "abcdefghijklmnopqrstuvwxyz" +"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./"; + +struct crypt_method { + const char *method; /* short name used by the command line option */ + const char *prefix; /* salt prefix */ + const unsigned int minlen; /* minimum salt length */ + const unsigned int maxlen; /* maximum salt length */ + const unsigned int rounds; /* supports a variable number of rounds */ + const char *desc; /* long description for the methods list */ +}; + +static const struct crypt_method methods[] = { + /* method prefix minlen, maxlen rounds description */ + { "des", "", 2, 2, 0, + N_("standard 56 bit DES-based crypt(3)") }, + { "md5", "$1$", 8, 8, 0, "MD5" }, +#if defined OpenBSD || defined FreeBSD || (defined __SVR4 && defined __sun) + { "bf", "$2a$", 22, 22, 1, "Blowfish" }, +#endif +#if defined HAVE_LINUX_CRYPT_GENSALT + { "bf", "$2a$", 22, 22, 1, "Blowfish, system-specific on 8-bit chars" }, + /* algorithm 2y fixes CVE-2011-2483 */ + { "bfy", "$2y$", 22, 22, 1, "Blowfish, correct handling of 8-bit chars" }, +#endif +#if defined FreeBSD + { "nt", "$3$", 0, 0, 0, "NT-Hash" }, +#endif +#if defined HAVE_SHA_CRYPT + /* http://people.redhat.com/drepper/SHA-crypt.txt */ + { "sha-256", "$5$", 8, 16, 1, "SHA-256" }, + { "sha-512", "$6$", 8, 16, 1, "SHA-512" }, +#endif + /* http://www.crypticide.com/dropsafe/article/1389 */ + /* + * Actually the maximum salt length is arbitrary, but Solaris by default + * always uses 8 characters: + * http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/ \ + * usr/src/lib/crypt_modules/sunmd5/sunmd5.c#crypt_gensalt_impl + */ +#if defined __SVR4 && defined __sun + { "sunmd5", "$md5$", 8, 8, 1, "SunMD5" }, +#endif + { NULL, NULL, 0, 0, 0, NULL } +}; + +void generate_salt(char *const buf, const unsigned int len); +void *get_random_bytes(const int len); +void display_help(int error); +void display_version(void); +void display_methods(void); + +int main(int argc, char *argv[]) +{ + int ch, i; + int password_fd = -1; + unsigned int salt_minlen = 0; + unsigned int salt_maxlen = 0; + unsigned int rounds_support = 0; + const char *salt_prefix = NULL; + const char *salt_arg = NULL; + unsigned int rounds = 0; + char *salt = NULL; + char rounds_str[30]; + char *password = NULL; + +#ifdef ENABLE_NLS + setlocale(LC_ALL, ""); + bindtextdomain(NLS_CAT_NAME, LOCALEDIR); + textdomain(NLS_CAT_NAME); +#endif + + /* prepend options from environment */ + argv = merge_args(getenv("MKPASSWD_OPTIONS"), argv, &argc); + + while ((ch = GETOPT_LONGISH(argc, argv, "hH:m:5P:R:sS:V", longopts, 0)) + > 0) { + switch (ch) { + case '5': + optarg = (char *) "md5"; + /* fall through */ + case 'm': + case 'H': + if (!optarg || strcaseeq("help", optarg)) { + display_methods(); + exit(0); + } + for (i = 0; methods[i].method != NULL; i++) + if (strcaseeq(methods[i].method, optarg)) { + salt_prefix = methods[i].prefix; + salt_minlen = methods[i].minlen; + salt_maxlen = methods[i].maxlen; + rounds_support = methods[i].rounds; + break; + } + if (!salt_prefix) { + fprintf(stderr, _("Invalid method '%s'.\n"), optarg); + exit(1); + } + break; + case 'P': + { + char *p; + password_fd = strtol(optarg, &p, 10); + if (p == NULL || *p != '\0' || password_fd < 0) { + fprintf(stderr, _("Invalid number '%s'.\n"), optarg); + exit(1); + } + } + break; + case 'R': + { + char *p; + rounds = strtol(optarg, &p, 10); + if (p == NULL || *p != '\0' || rounds < 0) { + fprintf(stderr, _("Invalid number '%s'.\n"), optarg); + exit(1); + } + } + break; + case 's': + password_fd = 0; + break; + case 'S': + salt_arg = optarg; + break; + case 'V': + display_version(); + exit(0); + case 'h': + display_help(EXIT_SUCCESS); + default: + fprintf(stderr, _("Try '%s --help' for more information.\n"), + argv[0]); + exit(1); + } + } + argc -= optind; + argv += optind; + + if (argc == 2 && !salt_arg) { + password = argv[0]; + salt_arg = argv[1]; + } else if (argc == 1) { + password = argv[0]; + } else if (argc == 0) { + } else { + display_help(EXIT_FAILURE); + } + + /* default: DES password */ + if (!salt_prefix) { + salt_minlen = methods[0].minlen; + salt_maxlen = methods[0].maxlen; + salt_prefix = methods[0].prefix; + } + + if (streq(salt_prefix, "$2a$") || streq(salt_prefix, "$2y$")) { + /* OpenBSD Blowfish and derivatives */ + if (rounds <= 5) + rounds = 5; + /* actually for 2a/2y it is the logarithm of the number of rounds */ + snprintf(rounds_str, sizeof(rounds_str), "%02u$", rounds); + } else if (rounds_support && rounds) + snprintf(rounds_str, sizeof(rounds_str), "rounds=%u$", rounds); + else + rounds_str[0] = '\0'; + + if (salt_arg) { + unsigned int c = strlen(salt_arg); + if (c < salt_minlen || c > salt_maxlen) { + if (salt_minlen == salt_maxlen) + fprintf(stderr, ngettext( + "Wrong salt length: %d byte when %d expected.\n", + "Wrong salt length: %d bytes when %d expected.\n", c), + c, salt_maxlen); + else + fprintf(stderr, ngettext( + "Wrong salt length: %d byte when %d <= n <= %d" + " expected.\n", + "Wrong salt length: %d bytes when %d <= n <= %d" + " expected.\n", c), + c, salt_minlen, salt_maxlen); + exit(1); + } + while (c-- > 0) { + if (strchr(valid_salts, salt_arg[c]) == NULL) { + fprintf(stderr, _("Illegal salt character '%c'.\n"), + salt_arg[c]); + exit(1); + } + } + + salt = NOFAIL(malloc(strlen(salt_prefix) + strlen(rounds_str) + + strlen(salt_arg) + 1)); + *salt = '\0'; + strcat(salt, salt_prefix); + strcat(salt, rounds_str); + strcat(salt, salt_arg); + } else { +#ifdef HAVE_SOLARIS_CRYPT_GENSALT +#error "This code path is untested on Solaris. Please send a patch." + salt = crypt_gensalt(salt_prefix, NULL); + if (!salt) + perror(stderr, "crypt_gensalt"); +#elif defined HAVE_LINUX_CRYPT_GENSALT + void *entropy = get_random_bytes(64); + + salt = crypt_gensalt(salt_prefix, rounds, entropy, 64); + if (!salt) { + fprintf(stderr, "crypt_gensalt failed.\n"); + exit(2); + } + free(entropy); +#else + unsigned int salt_len = salt_maxlen; + + if (salt_minlen != salt_maxlen) { /* salt length can vary */ + srand(time(NULL) + getpid()); + salt_len = rand() % (salt_maxlen - salt_minlen + 1) + salt_minlen; + } + + salt = NOFAIL(malloc(strlen(salt_prefix) + strlen(rounds_str) + + salt_len + 1)); + *salt = '\0'; + strcat(salt, salt_prefix); + strcat(salt, rounds_str); + generate_salt(salt + strlen(salt), salt_len); +#endif + } + + if (password) { + } else if (password_fd != -1) { + FILE *fp; + char *p; + + if (isatty(password_fd)) + fprintf(stderr, _("Password: ")); + password = NOFAIL(malloc(128)); + fp = fdopen(password_fd, "r"); + if (!fp) { + perror("fdopen"); + exit(2); + } + if (!fgets(password, 128, fp)) { + perror("fgets"); + exit(2); + } + + p = strpbrk(password, "\n\r"); + if (p) + *p = '\0'; + } else { + password = getpass(_("Password: ")); + if (!password) { + perror("getpass"); + exit(2); + } + } + + { + const char *result; + result = crypt(password, salt); + /* xcrypt returns "*0" on errors */ + if (!result || result[0] == '*') { + fprintf(stderr, "crypt failed.\n"); + exit(2); + } + /* yes, using strlen(salt_prefix) on salt. It's not + * documented whether crypt_gensalt may change the prefix */ + if (!strneq(result, salt, strlen(salt_prefix))) { + fprintf(stderr, _("Method not supported by crypt(3).\n")); + exit(2); + } + printf("%s\n", result); + } + + exit(0); +} + +#ifdef RANDOM_DEVICE +void* get_random_bytes(const int count) +{ + char *buf; + int fd; + + buf = NOFAIL(malloc(count)); + fd = open(RANDOM_DEVICE, O_RDONLY); + if (fd < 0) { + perror("open(" RANDOM_DEVICE ")"); + exit(2); + } + if (read(fd, buf, count) != count) { + if (count < 0) + perror("read(" RANDOM_DEVICE ")"); + else + fprintf(stderr, "Short read of %s.\n", RANDOM_DEVICE); + exit(2); + } + close(fd); + + return buf; +} +#endif + +#ifdef RANDOM_DEVICE + +void generate_salt(char *const buf, const unsigned int len) +{ + unsigned int i; + + unsigned char *entropy = get_random_bytes(len * sizeof(unsigned char)); + for (i = 0; i < len; i++) + buf[i] = valid_salts[entropy[i] % (sizeof valid_salts - 1)]; + buf[i] = '\0'; +} + +#else /* RANDOM_DEVICE */ + +void generate_salt(char *const buf, const unsigned int len) +{ + unsigned int i; + +# ifdef HAVE_GETTIMEOFDAY + struct timeval tv; + + gettimeofday(&tv, NULL); + srand(tv.tv_sec ^ tv.tv_usec); + +# else /* HAVE_GETTIMEOFDAY */ +# warning "This system lacks a strong enough random numbers generator!" + + /* + * The possible values of time over one year are 31536000, which is + * two orders of magnitude less than the allowed entropy range (2^32). + */ + srand(time(NULL) + getpid()); + +# endif /* HAVE_GETTIMEOFDAY */ + + for (i = 0; i < len; i++) + buf[i] = valid_salts[rand() % (sizeof valid_salts - 1)]; + buf[i] = '\0'; +} + +#endif /* RANDOM_DEVICE */ + +void display_help(int error) +{ + fprintf((EXIT_SUCCESS == error) ? stdout : stderr, + _("Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n" + "Crypts the PASSWORD using crypt(3).\n\n")); + fprintf(stderr, _( +" -m, --method=TYPE select method TYPE\n" +" -5 like --method=md5\n" +" -S, --salt=SALT use the specified SALT\n" +" -R, --rounds=NUMBER use the specified NUMBER of rounds\n" +" -P, --password-fd=NUM read the password from file descriptor NUM\n" +" instead of /dev/tty\n" +" -s, --stdin like --password-fd=0\n" +" -h, --help display this help and exit\n" +" -V, --version output version information and exit\n" +"\n" +"If PASSWORD is missing then it is asked interactively.\n" +"If no SALT is specified, a random one is generated.\n" +"If TYPE is 'help', available methods are printed.\n" +"\n" +"Report bugs to %s.\n"), ""); + exit(error); +} + +void display_version(void) +{ + printf("mkpasswd %s\n\n", VERSION); + puts("Copyright (C) 2001-2008 Marco d'Itri\n" +"This is free software; see the source for copying conditions. There is NO\n" +"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."); +} + +void display_methods(void) +{ + unsigned int i; + + printf(_("Available methods:\n")); + for (i = 0; methods[i].method != NULL; i++) + printf("%s\t%s\n", methods[i].method, methods[i].desc); +} + diff --git a/buildroot/package/mkpasswd/mkpasswd.mk b/buildroot/package/mkpasswd/mkpasswd.mk new file mode 100644 index 0000000..b013390 --- /dev/null +++ b/buildroot/package/mkpasswd/mkpasswd.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# mkpasswd +# +################################################################################ + +# source included in buildroot, taken from +# https://github.com/rfc1036/whois/blob/master/ +# at revision 5a0f08500fa51608b6d3b73ee338be38c692eadb +HOST_MKPASSWD_LICENSE = GPL-2.0+ + +define HOST_MKPASSWD_BUILD_CMDS + $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ + package/mkpasswd/mkpasswd.c package/mkpasswd/utils.c \ + -o $(@D)/mkpasswd -lcrypt +endef + +define HOST_MKPASSWD_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/mkpasswd $(HOST_DIR)/bin/mkpasswd +endef + +$(eval $(host-generic-package)) + +MKPASSWD = $(HOST_DIR)/bin/mkpasswd diff --git a/buildroot/package/mkpasswd/utils.c b/buildroot/package/mkpasswd/utils.c new file mode 100644 index 0000000..254bf2a --- /dev/null +++ b/buildroot/package/mkpasswd/utils.c @@ -0,0 +1,96 @@ +/* + * Copyright 1999-2008 by Marco d'Itri . + * + * do_nofail and merge_args come from the module-init-tools package. + * Copyright 2001 by Rusty Russell. + * Copyright 2002, 2003 by Rusty Russell, IBM Corporation. + * + * 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. + */ + +/* for strdup */ +#define _XOPEN_SOURCE 500 + +/* System library */ +#include +#include +#include +#include +#include + +/* Application-specific */ +#include "utils.h" + +void *do_nofail(void *ptr, const char *file, const int line) +{ + if (ptr) + return ptr; + + err_quit("Memory allocation failure at %s:%d.", file, line); +} + +/* Prepend options from a string. */ +char **merge_args(char *args, char *argv[], int *argc) +{ + char *arg, *argstring; + char **newargs = NULL; + unsigned int i, num_env = 0; + + if (!args) + return argv; + + argstring = NOFAIL(strdup(args)); + for (arg = strtok(argstring, " "); arg; arg = strtok(NULL, " ")) { + num_env++; + newargs = NOFAIL(realloc(newargs, + sizeof(newargs[0]) * (num_env + *argc + 1))); + newargs[num_env] = arg; + } + + if (!newargs) + return argv; + + /* Append commandline args */ + newargs[0] = argv[0]; + for (i = 1; i <= *argc; i++) + newargs[num_env + i] = argv[i]; + + *argc += num_env; + return newargs; +} + +/* Error routines */ +void err_sys(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, ": %s\n", strerror(errno)); + va_end(ap); + exit(2); +} + +void err_quit(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fputs("\n", stderr); + va_end(ap); + exit(2); +} + diff --git a/buildroot/package/mkpasswd/utils.h b/buildroot/package/mkpasswd/utils.h new file mode 100644 index 0000000..0f226ae --- /dev/null +++ b/buildroot/package/mkpasswd/utils.h @@ -0,0 +1,56 @@ +#ifndef WHOIS_UTILS_H +#define WHOIS_UTILS_H + +/* Convenience macros */ +#define streq(a, b) (strcmp(a, b) == 0) +#define strcaseeq(a, b) (strcasecmp(a, b) == 0) +#define strneq(a, b, n) (strncmp(a, b, n) == 0) +#define strncaseeq(a, b, n) (strncasecmp(a, b, n) == 0) + +#define NOFAIL(ptr) do_nofail((ptr), __FILE__, __LINE__) + +/* Portability macros */ +#ifdef __GNUC__ +# define NORETURN __attribute__((noreturn)) +#else +# define NORETURN +#endif + +#ifndef AI_IDN +# define AI_IDN 0 +#endif + +#ifndef AI_ADDRCONFIG +# define AI_ADDRCONFIG 0 +#endif + +#ifdef HAVE_GETOPT_LONG +# define GETOPT_LONGISH(c, v, o, l, i) getopt_long(c, v, o, l, i) +#else +# define GETOPT_LONGISH(c, v, o, l, i) getopt(c, v, o) +#endif + +#ifdef ENABLE_NLS +# include +# include +# define _(a) (gettext(a)) +# ifdef gettext_noop +# define N_(a) gettext_noop(a) +# else +# define N_(a) (a) +# endif +#else +# define _(a) (a) +# define N_(a) (a) +# define ngettext(a, b, c) ((c==1) ? (a) : (b)) +#endif + + +/* Prototypes */ +void *do_nofail(void *ptr, const char *file, const int line); +char **merge_args(char *args, char *argv[], int *argc); + +void err_quit(const char *fmt, ...) NORETURN; +void err_sys(const char *fmt, ...) NORETURN; + +#endif diff --git a/buildroot/package/mkpimage/mkpimage.c b/buildroot/package/mkpimage/mkpimage.c new file mode 100644 index 0000000..d7fe1b1 --- /dev/null +++ b/buildroot/package/mkpimage/mkpimage.c @@ -0,0 +1,376 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define VALIDATION_WORD 0x31305341 + +#define BRANCH_INST 0xea /* ARM opcode for "b" (unconditional branch) */ + +#define MAX_V0IMAGE_SIZE (60 * 1024 - 4) +/* Max size without authentication is 224 KB, due to memory used by + * the ROM boot code as a workspace out of the 256 KB of OCRAM */ +#define MAX_V1IMAGE_SIZE (224 * 1024 - 4) + +static int add_barebox_header; + +struct socfpga_header { + uint8_t validation_word[4]; + uint8_t version; + uint8_t flags; + union { + struct { + uint8_t program_length[2]; + uint8_t spare[2]; + uint8_t checksum[2]; + uint8_t start_vector[4]; + } v0; + struct { + uint8_t header_length[2]; + uint8_t program_length[4]; + uint8_t entry_offset[4]; + uint8_t spare[2]; + uint8_t checksum[2]; + } v1; + }; +}; + +static uint32_t bb_header[] = { + 0xea00007e, /* b 0x200 */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0xeafffffe, /* 1: b 1b */ + 0x65726162, /* 'bare' */ + 0x00786f62, /* 'box\0' */ + 0x00000000, /* padding */ + 0x00000000, /* padding */ + 0x00000000, /* padding */ + 0x00000000, /* padding */ + 0x00000000, /* padding */ + 0x00000000, /* padding */ + 0x00000000, /* socfpga header */ + 0x00000000, /* socfpga header */ + 0x00000000, /* socfpga header */ + 0xea00006b, /* entry. b 0x200 (offset may be adjusted) */ +}; + +static int read_full(int fd, void *buf, size_t size) +{ + size_t insize = size; + int now; + int total = 0; + + while (size) { + now = read(fd, buf, size); + if (now == 0) + return total; + if (now < 0) + return now; + total += now; + size -= now; + buf += now; + } + + return insize; +} + +static int write_full(int fd, void *buf, size_t size) +{ + size_t insize = size; + int now; + + while (size) { + now = write(fd, buf, size); + if (now <= 0) + return now; + size -= now; + buf += now; + } + + return insize; +} + +static const uint32_t crc_table[256] = { + 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, + 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, + 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, + 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, + 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, + 0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, + 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef, + 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, + 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, + 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, + 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, + 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, + 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, + 0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, + 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, + 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, + 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, + 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, + 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050, + 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, + 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, + 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, + 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1, + 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, + 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, + 0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, + 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9, + 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, + 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, + 0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, + 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, + 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, + 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, + 0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, + 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, + 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, + 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, + 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, + 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676, + 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, + 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, + 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, + 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 +}; + +uint32_t crc32(uint32_t crc, void *_buf, int length) +{ + uint8_t *buf = _buf; + + while (length--) + crc = crc << 8 ^ crc_table[(crc >> 24 ^ *(buf++)) & 0xff]; + + return crc; +} + +/* Create an ARM relative branch instuction + * branch is where the instruction will be placed and dest points to where + * it should branch too. */ +static void branch(uint8_t *branch, uint8_t *dest) +{ + int offset = dest - branch - 8; /* PC is offset +8 bytes on ARM */ + + branch[0] = (offset >> 2) & 0xff; /* instruction uses offset/4 */ + branch[1] = (offset >> 10) & 0xff; + branch[2] = (offset >> 18) & 0xff; + branch[3] = BRANCH_INST; +} + +/* start_addr is where the socfpga header's start instruction should branch to. + * It should be relative to the start of buf */ +static int add_socfpga_header(void *buf, size_t size, unsigned start_addr, unsigned version) +{ + struct socfpga_header *header = buf + 0x40; + void *entry; + uint8_t *bufp, *sumendp; + uint32_t *crc; + unsigned checksum; + + if (size & 0x3) { + fprintf(stderr, "%s: size must be multiple of 4\n", __func__); + return -EINVAL; + } + + /* Absolute address of entry point in buf */ + entry = buf + start_addr; + if (version == 0) { + sumendp = &header->v0.checksum[0]; + } else { + sumendp = &header->v1.checksum[0]; + + /* The ROM loader can't handle a negative offset */ + if (entry < (void*)header) { + /* add a trampoline branch inst after end of the header */ + uint8_t *trampoline = (void*)(header + 1); + branch(trampoline, entry); + + /* and then make the trampoline the entry point */ + entry = trampoline; + } + /* Calculate start address as offset relative to start of header */ + start_addr = entry - (void*)header; + } + + header->validation_word[0] = VALIDATION_WORD & 0xff; + header->validation_word[1] = (VALIDATION_WORD >> 8) & 0xff; + header->validation_word[2] = (VALIDATION_WORD >> 16) & 0xff; + header->validation_word[3] = (VALIDATION_WORD >> 24) & 0xff; + header->version = version; + header->flags = 0; + + if (version == 0) { + header->v0.program_length[0] = (size >> 2) & 0xff; /* length in words */ + header->v0.program_length[1] = (size >> 10) & 0xff; + header->v0.spare[0] = 0; + header->v0.spare[1] = 0; + branch(header->v0.start_vector, entry); + } else { + header->v1.header_length[0] = (sizeof(*header) >> 0) & 0xff; + header->v1.header_length[1] = (sizeof(*header) >> 8) & 0xff; + header->v1.program_length[0] = (size >> 0) & 0xff; + header->v1.program_length[1] = (size >> 8) & 0xff; + header->v1.program_length[2] = (size >> 16) & 0xff; + header->v1.program_length[3] = (size >> 24) & 0xff; + header->v1.entry_offset[0] = (start_addr >> 0) & 0xff; + header->v1.entry_offset[1] = (start_addr >> 8) & 0xff; + header->v1.entry_offset[2] = (start_addr >> 16) & 0xff; + header->v1.entry_offset[3] = (start_addr >> 24) & 0xff; + header->v1.spare[0] = 0; + header->v1.spare[1] = 0; + } + + /* Sum from beginning of header to start of checksum field */ + checksum = 0; + for (bufp = (uint8_t*)header; bufp < sumendp; bufp++) + checksum += *bufp; + + if (version == 0) { + header->v0.checksum[0] = checksum & 0xff;; + header->v0.checksum[1] = (checksum >> 8) & 0xff;; + } else { + header->v1.checksum[0] = checksum & 0xff;; + header->v1.checksum[1] = (checksum >> 8) & 0xff;; + } + + crc = buf + size - sizeof(uint32_t); + + *crc = crc32(0xffffffff, buf, size - sizeof(uint32_t)); + *crc ^= 0xffffffff; + + return 0; +} + +static void usage(const char *prgname) +{ + fprintf(stderr, "usage: %s [-hb] [-v version] -o \n", prgname); +} + +int main(int argc, char *argv[]) +{ + int opt, ret; + const char *outfile = NULL, *infile; + struct stat s; + void *buf; + int fd; + int max_image_size, min_image_size = 80; + int addsize = 0, pad; + unsigned int version = 0; + + while ((opt = getopt(argc, argv, "o:hbv:")) != -1) { + switch (opt) { + case 'v': + version = atoi(optarg); + if (version > 1) { + printf("Versions supported: 0 or 1\n"); + usage(argv[0]); + exit(1); + } + break; + case 'b': + add_barebox_header = 1; + min_image_size = 0; + addsize = 512; + break; + case 'h': + usage(argv[0]); + exit(0); + case 'o': + outfile = optarg; + break; + default: + usage(argv[0]); + exit(1); + } + } + if (version == 0) { + max_image_size = MAX_V0IMAGE_SIZE; + } else { + max_image_size = MAX_V1IMAGE_SIZE; + } + max_image_size -= addsize; + + if (optind == argc || !outfile) { + usage(argv[0]); + exit(1); + } + infile = argv[optind]; + + ret = stat(infile, &s); + if (ret) { + perror("stat"); + exit(1); + } + + if (s.st_size < min_image_size) { + fprintf(stderr, "input image too small. Minimum is %d bytes\n", + min_image_size); + exit(1); + } + + if (s.st_size > max_image_size) { + fprintf(stderr, "input image too big. Maximum is %d bytes, got %ld bytes\n", + max_image_size, s.st_size); + exit(1); + } + + fd = open(infile, O_RDONLY); + if (fd == -1) { + perror("open infile"); + exit(1); + } + + pad = s.st_size & 0x3; + if (pad) + pad = 4 - pad; + + buf = calloc(s.st_size + 4 + addsize + pad, 1); + if (!buf) { + perror("malloc"); + exit(1); + } + + ret = read_full(fd, buf + addsize, s.st_size); + if (ret < 0) { + perror("read infile"); + exit(1); + } + + close(fd); + + if (add_barebox_header) { + memcpy(buf, bb_header, sizeof(bb_header)); + } + + ret = add_socfpga_header(buf, s.st_size + 4 + addsize + pad, addsize, + version); + if (ret) + exit(1); + + fd = open(outfile, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd < 0) { + perror("open outfile"); + exit(1); + } + + ret = write_full(fd, buf, s.st_size + 4 + addsize + pad); + if (ret < 0) { + perror("write outfile"); + exit(1); + } + + exit(0); +} diff --git a/buildroot/package/mkpimage/mkpimage.mk b/buildroot/package/mkpimage/mkpimage.mk new file mode 100644 index 0000000..8e08013 --- /dev/null +++ b/buildroot/package/mkpimage/mkpimage.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# mkpimage +# +################################################################################ + +HOST_MKPIMAGE_LICENSE = GPL-2.0 + +# source included in the package +# came from barebox's repository: +# https://git.pengutronix.de/cgit/barebox/tree/scripts/socfpga_mkimage.c?id=55d29525146dcd280987dfd565bfd34f08858fb3 +define HOST_MKPIMAGE_BUILD_CMDS + $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ + package/mkpimage/mkpimage.c -o $(@D)/mkpimage +endef + +define HOST_MKPIMAGE_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/mkpimage $(HOST_DIR)/bin/mkpimage +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/mksh/Config.in b/buildroot/package/mksh/Config.in new file mode 100644 index 0000000..55d1cc1 --- /dev/null +++ b/buildroot/package/mksh/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_MKSH + bool "mksh" + depends on BR2_USE_MMU # fork() + help + The MirBSD Korn Shell, + + mksh is a successor of pdksh but not affiliated with the + pdksh developers or contributors. mksh is not affiliated + with the AT&T Korn Shell, its past or present owners, + other than that both attempt to implement the Korn Shell + programming language. + + mksh targets users who desire a compact, fast, reliable, + secure shell not cut off modern extensions; a shell with + Unicode support; an actively developed, current, and + portable product; one with developers that listen to + their users’ requests and implement them if they + actually make sense. + + mksh aims to replace pdksh in all but very rare use cases + (such as support for checking the Unix mbox) and in all + operating environments + (thus including patches from pdksh on e.g. Debian). + + http://mirbsd.de/mksh diff --git a/buildroot/package/mksh/mksh.hash b/buildroot/package/mksh/mksh.hash new file mode 100644 index 0000000..411baa8 --- /dev/null +++ b/buildroot/package/mksh/mksh.hash @@ -0,0 +1,4 @@ +# From http://www.mirbsd.org/mksh.htm#build +md5 718c44251b52c48e7312903273e263f4 mksh-R55.tgz +# Calculated based on the hash above +sha256 ced42cb4a181d97d52d98009eed753bd553f7c34e6991d404f9a8dcb45c35a57 mksh-R55.tgz diff --git a/buildroot/package/mksh/mksh.mk b/buildroot/package/mksh/mksh.mk new file mode 100644 index 0000000..b5706db --- /dev/null +++ b/buildroot/package/mksh/mksh.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# mksh +# +################################################################################ + +MKSH_VERSION = R55 +MKSH_SOURCE = mksh-$(MKSH_VERSION).tgz +MKSH_SITE = https://www.mirbsd.org/MirOS/dist/mir/mksh +# For MirOS License see https://www.mirbsd.org/TaC-mksh.txt +MKSH_LICENSE = MirOS, ISC +MKSH_LICENSE_FILES = mksh.1 + +define MKSH_BUILD_CMDS + cd $(@D) && $(TARGET_MAKE_ENV) \ + TARGET_OS=Linux $(TARGET_CONFIGURE_OPTS) \ + sh ./Build.sh +endef + +define MKSH_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/mksh $(TARGET_DIR)/bin/mksh +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mmc-utils/0001-fix-mmc-h-includes.patch b/buildroot/package/mmc-utils/0001-fix-mmc-h-includes.patch new file mode 100644 index 0000000..8d0b2eb --- /dev/null +++ b/buildroot/package/mmc-utils/0001-fix-mmc-h-includes.patch @@ -0,0 +1,41 @@ +mmc-utils: fix mmc.h includes + +Some toolchains include asm-generic/int-l64.h from their asm/types.h +file for certain 64-bit architectures. This causes a conflict between +types like this one: + +asm-generic/int-l64.h:28:25: error: conflicting types for '__s64' + typedef __signed__ long __s64; + ^ +In file included from mmc.h:17:0, + from mmc_cmds.c:30: +asm-generic/int-ll64.h:29:44: note: previous declaration of '__s64' was +here + __extension__ typedef __signed__ long long __s64; + +[Ryan: added include of linux/types.h because mmc/ioctl.h does not + include it in kernel version before 3.4] + +Signed-off-by: Vicente Olivert Riera +Signed-off-by: Ryan Barnett +--- + mmc.h | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) +diff --git a/mmc.h b/mmc.h +index 9871d62..2d54ec5 100644 +--- a/mmc.h ++++ b/mmc.h +@@ -14,9 +14,12 @@ + * Boston, MA 021110-1307, USA. + */ + +-#include ++#include + #include + #include ++#ifndef _ASM_GENERIC_INT_L64_H ++#include ++#endif + + #define CHECK(expr, msg, err_stmt) { if (expr) { fprintf(stderr, msg); err_stmt; } } + diff --git a/buildroot/package/mmc-utils/Config.in b/buildroot/package/mmc-utils/Config.in new file mode 100644 index 0000000..850aeac --- /dev/null +++ b/buildroot/package/mmc-utils/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_MMC_UTILS + bool "mmc-utils" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + help + MMC utils + + https://git.kernel.org/cgit/linux/kernel/git/cjb/mmc-utils.git + +comment "mmc-utils needs a toolchain w/ headers >= 3.0" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/buildroot/package/mmc-utils/mmc-utils.hash b/buildroot/package/mmc-utils/mmc-utils.hash new file mode 100644 index 0000000..35cd580 --- /dev/null +++ b/buildroot/package/mmc-utils/mmc-utils.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 92ba148648688fca6e0e0e30248ebc6b432bea55584760f20a013583f20a109d mmc-utils-37c86e60c0442fef570b75cd81aeb1db4d0cbafd.tar.gz diff --git a/buildroot/package/mmc-utils/mmc-utils.mk b/buildroot/package/mmc-utils/mmc-utils.mk new file mode 100644 index 0000000..9aeaf5c --- /dev/null +++ b/buildroot/package/mmc-utils/mmc-utils.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# mmc-utils +# +################################################################################ + +MMC_UTILS_VERSION = 37c86e60c0442fef570b75cd81aeb1db4d0cbafd +MMC_UTILS_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git +MMC_UTILS_LICENSE = GPL-2.0 + +define MMC_UTILS_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define MMC_UTILS_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D) prefix=/usr DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/moarvm/Config.in b/buildroot/package/moarvm/Config.in new file mode 100644 index 0000000..3ff4f82 --- /dev/null +++ b/buildroot/package/moarvm/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_MOARVM + bool "moarvm" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on !BR2_STATIC_LIBS # libuv + depends on BR2_USE_MMU # libuv + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS # libatomic_ops + # needs AO_fetch_compare_and_swap, not implemented for sparcv8/sparcv9 + depends on !BR2_sparc64 && !BR2_sparc + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libuv + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_LIBTOMMATH + select BR2_PACKAGE_LIBATOMIC_OPS + # dyncall does not work on MIPS; libffi needs to be used. + # See: https://github.com/MoarVM/MoarVM/issues/222 + select BR2_PACKAGE_LIBFFI if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + help + Short for "Metamodel On A Runtime", MoarVM is a virtual + machine built especially for Rakudo Perl 6 and the NQP + Compiler Toolchain. + + http://moarvm.com + +comment "moarvm needs a toolchain w/ NPTL, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS + depends on BR2_USE_MMU + depends on BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS + depends on !BR2_sparc64 && !BR2_sparc + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/buildroot/package/moarvm/moarvm.hash b/buildroot/package/moarvm/moarvm.hash new file mode 100644 index 0000000..409486a --- /dev/null +++ b/buildroot/package/moarvm/moarvm.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 7cb9b7a871b14ac9b6cddc57e646d277177c4b3b21220e6fbc204084a15a4e41 MoarVM-2017.05.tar.gz diff --git a/buildroot/package/moarvm/moarvm.mk b/buildroot/package/moarvm/moarvm.mk new file mode 100644 index 0000000..705c939 --- /dev/null +++ b/buildroot/package/moarvm/moarvm.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# moarvm +# +################################################################################ + +MOARVM_VERSION = 2017.05 +MOARVM_SITE = http://moarvm.com/releases +MOARVM_SOURCE = MoarVM-$(MOARVM_VERSION).tar.gz +MOARVM_LICENSE = Artistic-2.0 +MOARVM_LICENSE_FILES = Artistic2.txt +MOARVM_INSTALL_STAGING = YES +MOARVM_DEPENDENCIES = host-lua host-pkgconf libuv libtommath libatomic_ops + +MOARVM_CONF_OPTS = \ + --build=$(GNU_HOST_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --ar="$(TARGET_AR)" \ + --cc="$(TARGET_CC)" \ + --ld="$(TARGET_CC)" \ + --prefix="/usr" \ + --pkgconfig=$(PKG_CONFIG_HOST_BINARY) \ + --lua=$(HOST_DIR)/bin/lua \ + --has-libuv \ + --has-libtommath \ + --has-libatomic + +ifeq ($(BR2_PACKAGE_LIBFFI),y) +MOARVM_CONF_OPTS += --has-libffi +MOARVM_DEPENDENCIES += libffi +endif + +ifeq ($(BR2_ENDIAN),"BIG") +MOARVM_CONF_OPTS += --big-endian +endif + +define MOARVM_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) perl Configure.pl $(MOARVM_CONF_OPTS)) +endef + +define MOARVM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define MOARVM_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define MOARVM_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mobile-broadband-provider-info/Config.in b/buildroot/package/mobile-broadband-provider-info/Config.in new file mode 100644 index 0000000..dda7105 --- /dev/null +++ b/buildroot/package/mobile-broadband-provider-info/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO + bool "mobile-broadband-provider-info" + help + Mobile broadband provider database. + + http://live.gnome.org/NetworkManager/MobileBroadband/ServiceProviders diff --git a/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash b/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash new file mode 100644 index 0000000..5ab2e31 --- /dev/null +++ b/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/mobile-broadband-provider-info/20151214/mobile-broadband-provider-info-20151214.sha256sum +sha256 8ae45d6f10fed9750e259935804c4f40a4372bb119f0504187e4221896b205a4 mobile-broadband-provider-info-20151214.tar.xz diff --git a/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk b/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk new file mode 100644 index 0000000..1a68708 --- /dev/null +++ b/buildroot/package/mobile-broadband-provider-info/mobile-broadband-provider-info.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# mobile-broadband-provider-info +# +################################################################################ + +MOBILE_BROADBAND_PROVIDER_INFO_VERSION = 20151214 +MOBILE_BROADBAND_PROVIDER_INFO_SITE = http://ftp.gnome.org/pub/GNOME/sources/mobile-broadband-provider-info/$(MOBILE_BROADBAND_PROVIDER_INFO_VERSION) +MOBILE_BROADBAND_PROVIDER_INFO_SOURCE = mobile-broadband-provider-info-$(MOBILE_BROADBAND_PROVIDER_INFO_VERSION).tar.xz +MOBILE_BROADBAND_PROVIDER_INFO_LICENSE = Public domain +MOBILE_BROADBAND_PROVIDER_INFO_LICENSE_FILES = COPYING +MOBILE_BROADBAND_PROVIDER_INFO_INSTALL_STAGING = YES +MOBILE_BROADBAND_PROVIDER_INFO_DEPENDENCIES = host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/modem-manager/Config.in b/buildroot/package/modem-manager/Config.in new file mode 100644 index 0000000..8e995b4 --- /dev/null +++ b/buildroot/package/modem-manager/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_MODEM_MANAGER + bool "modemmanager" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_USE_WCHAR # libglib2 and gnutls + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus + select BR2_PACKAGE_DBUS # runtime dependency + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGUDEV + help + ModemManager is a DBus-activated daemon which controls mobile + broadband (2G/3G/4G) devices and connections. + + http://www.freedesktop.org/wiki/Software/ModemManager/ + +if BR2_PACKAGE_MODEM_MANAGER + +config BR2_PACKAGE_MODEM_MANAGER_LIBMBIM + bool "MBIM support" + select BR2_PACKAGE_LIBMBIM + help + This option enables support for MBIM protocol + +config BR2_PACKAGE_MODEM_MANAGER_LIBQMI + bool "QMI support" + select BR2_PACKAGE_LIBQMI + help + This option enables support for QMI protocol +endif + +comment "modemmanager needs udev /dev management and a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_PACKAGE_HAS_UDEV + depends on BR2_USE_MMU diff --git a/buildroot/package/modem-manager/S44modem-manager b/buildroot/package/modem-manager/S44modem-manager new file mode 100755 index 0000000..cf6d896 --- /dev/null +++ b/buildroot/package/modem-manager/S44modem-manager @@ -0,0 +1,42 @@ +#!/bin/sh +# +# Starts ModemManager +# + +PIDFILE=/var/run/ModemManager.pid + +[ -x $MODEMMANAGER_BIN ] || exit 0 + +start() { + printf "Starting ModemManager: " + umask 077 + start-stop-daemon -S -q -b -m -p $PIDFILE \ + --exec /usr/sbin/ModemManager + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping ModemManager: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && { echo "OK"; rm -f $PIDFILE; } || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $ret diff --git a/buildroot/package/modem-manager/modem-manager.hash b/buildroot/package/modem-manager/modem-manager.hash new file mode 100644 index 0000000..bc08044 --- /dev/null +++ b/buildroot/package/modem-manager/modem-manager.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 bc74326fa69ae8012f806e235f3d296144922669b952d4d4987dd0af645d5f68 ModemManager-1.6.10.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/buildroot/package/modem-manager/modem-manager.mk b/buildroot/package/modem-manager/modem-manager.mk new file mode 100644 index 0000000..b741acf --- /dev/null +++ b/buildroot/package/modem-manager/modem-manager.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# modem-manager +# +################################################################################ + +MODEM_MANAGER_VERSION = 1.6.10 +MODEM_MANAGER_SOURCE = ModemManager-$(MODEM_MANAGER_VERSION).tar.xz +MODEM_MANAGER_SITE = http://www.freedesktop.org/software/ModemManager +MODEM_MANAGER_LICENSE = GPL-2.0+ (programs, plugins), LGPL-2.0+ (libmm-glib) +MODEM_MANAGER_LICENSE_FILES = COPYING COPYING.LIB +MODEM_MANAGER_DEPENDENCIES = host-pkgconf host-intltool libglib2 libgudev +MODEM_MANAGER_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_MODEM_MANAGER_LIBQMI),y) +MODEM_MANAGER_DEPENDENCIES += libqmi +MODEM_MANAGER_CONF_OPTS += --with-qmi +else +MODEM_MANAGER_CONF_OPTS += --without-qmi +endif + +ifeq ($(BR2_PACKAGE_MODEM_MANAGER_LIBMBIM),y) +MODEM_MANAGER_DEPENDENCIES += libmbim +MODEM_MANAGER_CONF_OPTS += --with-mbim +else +MODEM_MANAGER_CONF_OPTS += --without-mbim +endif + +define MODEM_MANAGER_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/modem-manager/S44modem-manager \ + $(TARGET_DIR)/etc/init.d/S44modem-manager +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/modplugtools/Config.in b/buildroot/package/modplugtools/Config.in new file mode 100644 index 0000000..33acad6 --- /dev/null +++ b/buildroot/package/modplugtools/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_MODPLUGTOOLS + bool "modplugtools" + depends on BR2_INSTALL_LIBSTDCPP # libmodplug + select BR2_PACKAGE_LIBAO + select BR2_PACKAGE_LIBMODPLUG + help + This installs the 'modplug123' command line tool to play + music files in the tracker formats supported by libmodplug: + MOD, S3M, XM etc. Audio output is handled by libao. + + http://modplug-xmms.sourceforge.net/ + +comment "modplugtools needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/modplugtools/modplugtools.hash b/buildroot/package/modplugtools/modplugtools.hash new file mode 100644 index 0000000..e29eda9 --- /dev/null +++ b/buildroot/package/modplugtools/modplugtools.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 0122d44ea0513b928cf9d463acc886d08a2664579aa96ddeeb270d5c81193a4e modplugtools-0.5.3.tar.gz diff --git a/buildroot/package/modplugtools/modplugtools.mk b/buildroot/package/modplugtools/modplugtools.mk new file mode 100644 index 0000000..59a2a52 --- /dev/null +++ b/buildroot/package/modplugtools/modplugtools.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# modplugtools +# +################################################################################ + +MODPLUGTOOLS_VERSION = 0.5.3 +MODPLUGTOOLS_SITE = http://downloads.sourceforge.net/project/modplug-xmms/modplug-tools +MODPLUGTOOLS_LICENSE = GPL-3.0 +MODPLUGTOOLS_LICENSE_FILES = COPYING + +MODPLUGTOOLS_DEPENDENCIES = libao libmodplug + +# Only build the 'mp123' subdir, which contains 'modplug123' that plays through +# various backends via libao. This excludes the 'mpplay' subdir, which contains +# 'modplugplay' that can play only through the deprecated OSS interface. +MODPLUGTOOLS_MAKE_OPTS = SUBDIRS=mp123 +MODPLUGTOOLS_INSTALL_TARGET_OPTS = SUBDIRS=mp123 DESTDIR=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/buildroot/package/mongodb/Config.in b/buildroot/package/mongodb/Config.in new file mode 100644 index 0000000..ed3ad56 --- /dev/null +++ b/buildroot/package/mongodb/Config.in @@ -0,0 +1,30 @@ +# from src/mongo/platform/bits.h +config BR2_PACKAGE_MONGODB_ARCH_SUPPORTS + bool + # ARM needs LDREX/STREX, so ARMv6+ + default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 + default y if BR2_aarch64 || BR2_i386 || BR2_powerpc64 || BR2_x86_64 + +config BR2_PACKAGE_MONGODB + bool "mongodb" + depends on BR2_PACKAGE_MONGODB_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC # needs glibc malloc_usable_size + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + help + MongoDB is a cross-platform document-oriented database + (NoSQL). + + It uses JSON-like documents with dynamic schemas (BSON), + making the integration of data in certain types of + applications easier and faster. + + https://www.mongodb.org/ + +comment "mongodb needs a glibc toolchain w/ wchar, threads, C++, gcc >= 4.8" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_PACKAGE_MONGODB_ARCH_SUPPORTS diff --git a/buildroot/package/mongodb/mongodb.hash b/buildroot/package/mongodb/mongodb.hash new file mode 100644 index 0000000..b01ad53 --- /dev/null +++ b/buildroot/package/mongodb/mongodb.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 4764945631bca4ac5c2b239e04e91db00e39716915204349170c37cb7897c564 mongodb-r3.3.4.tar.gz diff --git a/buildroot/package/mongodb/mongodb.mk b/buildroot/package/mongodb/mongodb.mk new file mode 100644 index 0000000..54c904e --- /dev/null +++ b/buildroot/package/mongodb/mongodb.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# mongodb +# +################################################################################ + +MONGODB_VERSION_BASE = 3.3.4 +MONGODB_VERSION = r$(MONGODB_VERSION_BASE) +MONGODB_SITE = $(call github,mongodb,mongo,$(MONGODB_VERSION)) + +MONGODB_LICENSE = AGPL-3.0, Apache-2.0 +MONGODB_LICENSE_FILES = GNU-AGPL-3.0.txt APACHE-2.0.txt + +MONGODB_DEPENDENCIES = host-scons + +MONGODB_SCONS_TARGETS = mongod mongos + +MONGODB_SCONS_ENV = CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" \ + -j"$(PARALLEL_JOBS)" + +MONGODB_SCONS_OPTS = --disable-warnings-as-errors + +# need to pass mongo version when not building from git repo +MONGODB_SCONS_OPTS += MONGO_VERSION=$(MONGODB_VERSION_BASE)- + +# WiredTiger database storage engine only supported on 64 bits +ifeq ($(BR2_ARCH_IS_64),y) +MONGODB_SCONS_OPTS += --wiredtiger=on +else +MONGODB_SCONS_OPTS += --wiredtiger=off +endif + +# JavaScript scripting engine and tcmalloc supported only on +# x86/x86-64 systems. Mongo target is a shell interface that +# depends on the javascript engine, so it will also only be +# built on x86/x86-64 systems. +ifeq ($(BR2_i386)$(BR2_x86_64),y) +MONGODB_SCONS_OPTS += --js-engine=mozjs --allocator=tcmalloc +MONGODB_SCONS_TARGETS += mongo +else +MONGODB_SCONS_OPTS += --js-engine=none --allocator=system +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MONGODB_DEPENDENCIES += openssl +MONGODB_SCONS_OPTS += --ssl=SSL +endif + +define MONGODB_BUILD_CMDS + (cd $(@D); \ + $(SCONS) \ + $(MONGODB_SCONS_ENV) \ + $(MONGODB_SCONS_OPTS) \ + $(MONGODB_SCONS_TARGETS)) +endef + +define MONGODB_INSTALL_TARGET_CMDS + (cd $(@D); \ + $(SCONS) \ + $(MONGODB_SCONS_ENV) \ + $(MONGODB_SCONS_OPTS) \ + --prefix=$(TARGET_DIR)/usr \ + install) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mongoose/Config.in b/buildroot/package/mongoose/Config.in new file mode 100644 index 0000000..22b385d --- /dev/null +++ b/buildroot/package/mongoose/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_MONGOOSE + bool "mongoose" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + Mongoose is an embedded networking library, which can turn + anything into a web server + + https://github.com/cesanta/mongoose + +comment "mongoose needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/mongoose/mongoose.hash b/buildroot/package/mongoose/mongoose.hash new file mode 100644 index 0000000..d5252eb --- /dev/null +++ b/buildroot/package/mongoose/mongoose.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 ccc971298db70963d3f13766c3246a3c36ae7e388acfab7ba2180149d9c8c64f mongoose-6.7.tar.gz diff --git a/buildroot/package/mongoose/mongoose.mk b/buildroot/package/mongoose/mongoose.mk new file mode 100644 index 0000000..e2149e0 --- /dev/null +++ b/buildroot/package/mongoose/mongoose.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# mongoose +# +################################################################################ + +MONGOOSE_VERSION = 6.7 +MONGOOSE_SITE = $(call github,cesanta,mongoose,$(MONGOOSE_VERSION)) +MONGOOSE_LICENSE = GPL-2.0 +MONGOOSE_LICENSE_FILES = LICENSE +MONGOOSE_INSTALL_STAGING = YES +# static library +MONGOOSE_INSTALL_TARGET = NO + +MONGOOSE_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MONGOOSE_DEPENDENCIES += openssl +MONGOOSE_CFLAGS += -DMG_ENABLE_SSL +endif + +define MONGOOSE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CC) -c $(@D)/mongoose.c $(MONGOOSE_CFLAGS) -o $(@D)/mongoose.o + $(TARGET_MAKE_ENV) $(TARGET_AR) rcs $(@D)/libmongoose.a $(@D)/mongoose.o +endef + +define MONGOOSE_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 644 $(@D)/libmongoose.a \ + $(STAGING_DIR)/usr/lib/libmongoose.a + $(INSTALL) -D -m 644 $(@D)/mongoose.h \ + $(STAGING_DIR)/usr/include/mongoose.h +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mongrel2/0002-Do-not-run-tests.patch b/buildroot/package/mongrel2/0002-Do-not-run-tests.patch new file mode 100644 index 0000000..557c27e --- /dev/null +++ b/buildroot/package/mongrel2/0002-Do-not-run-tests.patch @@ -0,0 +1,43 @@ +From 3cbef2195533f357c8a80c2840108662461273b7 Mon Sep 17 00:00:00 2001 +From: Lionel Orry +Date: Wed, 27 Mar 2013 14:48:19 +0100 +Subject: [PATCH 4/4] Do not run tests. + +This patch is specific to cross-compiled environments and avoids running +the tests on the host. It is not meant to be applied upstream. + +Signed-off-by: Lionel Orry +--- + Makefile | 2 +- + tools/m2sh/Makefile | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 7dc4089..ca72630 100644 +--- a/Makefile ++++ b/Makefile +@@ -16,7 +16,7 @@ TEST_SRC=$(wildcard tests/*_tests.c) + TESTS=$(patsubst %.c,%,${TEST_SRC}) + MAKEOPTS=OPTFLAGS="${NOEXTCFLAGS} ${OPTFLAGS}" OPTLIBS="${OPTLIBS}" LIBS="${LIBS}" DESTDIR="${DESTDIR}" PREFIX="${PREFIX}" + +-all: bin/mongrel2 tests m2sh procer ++all: bin/mongrel2 m2sh procer filters config_modules + + dev: CFLAGS=-g -Wall -Isrc -Wall -Wextra $(OPTFLAGS) -D_FILE_OFFSET_BITS=64 + dev: all +diff --git a/tools/m2sh/Makefile b/tools/m2sh/Makefile +index b50d8a0..334e4da 100644 +--- a/tools/m2sh/Makefile ++++ b/tools/m2sh/Makefile +@@ -9,7 +9,7 @@ TESTS=$(patsubst %.c,%,${TEST_SRC}) + LIB_SRC=$(filter-out src/m2sh.c,${SOURCES}) + LIB_OBJ=$(filter-out src/m2sh.o,${OBJECTS}) + +-all: ../lemon/lemon tests build/m2sh ++all: ../lemon/lemon build/m2sh + + dev: CFLAGS=-g -Wall -Wextra -Isrc -I../../src $(OPTFLAGS) + dev: all +-- +1.8.1.4 + diff --git a/buildroot/package/mongrel2/0003-Fix-Makefiles-for-cross-compilation.patch b/buildroot/package/mongrel2/0003-Fix-Makefiles-for-cross-compilation.patch new file mode 100644 index 0000000..730d8eb --- /dev/null +++ b/buildroot/package/mongrel2/0003-Fix-Makefiles-for-cross-compilation.patch @@ -0,0 +1,75 @@ +From 298356c44a7df2b34c4e307c531d2010e2cb4b79 Mon Sep 17 00:00:00 2001 +From: Lionel Orry +Date: Wed, 27 Mar 2013 15:56:56 +0100 +Subject: [PATCH 1/1] Fix Makefiles for cross-compilation + +The CFLAGS handling in mongrel2 is really messy and it is hard to make +it behave correctly with cross-compiling environments. This patch +restricts the Makefiles syntax to GNU Make, but help cross-compiling. + +This is not meant to be applied upstream. + +Signed-off-by: Lionel Orry +--- + Makefile | 2 +- + tools/config_modules/Makefile | 2 +- + tools/filters/Makefile | 2 +- + tools/m2sh/Makefile | 2 +- + tools/procer/Makefile | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index 6dce4a6..d48e05e 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,4 +1,4 @@ +-CFLAGS=-g -O2 -Wall -Wextra -Isrc -Isrc/polarssl/include -pthread -rdynamic -DNDEBUG $(OPTFLAGS) -D_FILE_OFFSET_BITS=64 ++override CFLAGS += -g -O2 -Wall -Wextra -Isrc -Isrc/polarssl/include -pthread -rdynamic -DNDEBUG $(OPTFLAGS) -D_FILE_OFFSET_BITS=64 + LIBS=-lzmq -ldl -lsqlite3 $(OPTLIBS) + PREFIX?=/usr/local + +diff --git a/tools/config_modules/Makefile b/tools/config_modules/Makefile +index 398490c..53f2255 100644 +--- a/tools/config_modules/Makefile ++++ b/tools/config_modules/Makefile +@@ -1,5 +1,5 @@ + PREFIX?=/usr/local +-CFLAGS=-I../../src -I../../src/polarssl/include $(OPTFLAGS) -fPIC -shared -nostartfiles -L../../build ++override CFLAGS += -I../../src -I../../src/polarssl/include $(OPTFLAGS) -fPIC -shared -nostartfiles -L../../build + LDFLAGS=$(OPTLIBS) + + MONGO_SRC = mongo-c-driver/src/bson.c \ +diff --git a/tools/filters/Makefile b/tools/filters/Makefile +index f9f4556..6077b79 100644 +--- a/tools/filters/Makefile ++++ b/tools/filters/Makefile +@@ -1,5 +1,5 @@ + PREFIX?=/usr/local +-CFLAGS=-I../../src -I../../src/polarssl/include $(OPTFLAGS) -g -fPIC -shared -nostartfiles -L../../build ++ override CFLAGS += -I../../src -I../../src/polarssl/include $(OPTFLAGS) -g -fPIC -shared -nostartfiles -L../../build + LDFLAGS=$(OPTLIBS) + + all: null.so +diff --git a/tools/m2sh/Makefile b/tools/m2sh/Makefile +index b50d8a0..ba378c5 100644 +--- a/tools/m2sh/Makefile ++++ b/tools/m2sh/Makefile +@@ -1,4 +1,4 @@ +-CFLAGS=-DNDEBUG -DNO_LINENOS -pthread -g -I../../src -Isrc -Wall $(OPTFLAGS) ++override CFLAGS += -DNDEBUG -DNO_LINENOS -pthread -g -I../../src -Isrc -Wall $(OPTFLAGS) + LIBS=-lzmq -lsqlite3 ../../build/libm2.a $(OPTLIBS) + + PREFIX?=/usr/local +diff --git a/tools/procer/Makefile b/tools/procer/Makefile +index d0d7de0..629b2e9 100644 +--- a/tools/procer/Makefile ++++ b/tools/procer/Makefile +@@ -1,4 +1,4 @@ +-CFLAGS=-DNDEBUG -pthread -g -I../../src -Wall $(OPTFLAGS) ++override CFLAGS += -DNDEBUG -pthread -g -I../../src -Wall $(OPTFLAGS) + PREFIX?=/usr/local + LIBS?=-lzmq + SOURCES=$(wildcard *.c) +-- +1.8.1.4 + diff --git a/buildroot/package/mongrel2/0004-Rename-symbol-to-prevent-conflict.patch b/buildroot/package/mongrel2/0004-Rename-symbol-to-prevent-conflict.patch new file mode 100644 index 0000000..8369816 --- /dev/null +++ b/buildroot/package/mongrel2/0004-Rename-symbol-to-prevent-conflict.patch @@ -0,0 +1,45 @@ +From 8d0bc79f38913b1a55e7d151b32bbc9462c24b47 Mon Sep 17 00:00:00 2001 +From: Jason Miller +Date: Fri, 14 Aug 2015 19:03:09 -0700 +Subject: [PATCH] Rename symbol to prevent conflict + +One of the standard headers defines max_align_t on some versions of linux. + +[Backported from upstream commit +https://github.com/mongrel2/mongrel2/commit/563bac8c59b9b32205164d237cf1ec0cb48d189f.] + +Signed-off-by: Rodrigo Rebello +--- + src/mem/align.h | 2 +- + src/mem/halloc.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/mem/align.h b/src/mem/align.h +index 4c6e183..03a4999 100644 +--- a/src/mem/align.h ++++ b/src/mem/align.h +@@ -30,7 +30,7 @@ union max_align + void (*q)(void); + }; + +-typedef union max_align max_align_t; ++typedef union max_align h_max_align_t; + + #endif + +diff --git a/src/mem/halloc.c b/src/mem/halloc.c +index b097d1f..40d0c09 100644 +--- a/src/mem/halloc.c ++++ b/src/mem/halloc.c +@@ -34,7 +34,7 @@ typedef struct hblock + #endif + hlist_item_t siblings; /* 2 pointers */ + hlist_head_t children; /* 1 pointer */ +- max_align_t data[1]; /* not allocated, see below */ ++ h_max_align_t data[1]; /* not allocated, see below */ + + } hblock_t; + +-- +2.1.4 + diff --git a/buildroot/package/mongrel2/Config.in b/buildroot/package/mongrel2/Config.in new file mode 100644 index 0000000..a9b09b7 --- /dev/null +++ b/buildroot/package/mongrel2/Config.in @@ -0,0 +1,32 @@ +# mongrel2 uses {get,make,swap}context() functions, which are +# available in glibc for all architectures and in uClibc only for a +# subset of the architectures +config BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS + bool + default y if BR2_TOOLCHAIN_USES_GLIBC + default y if BR2_TOOLCHAIN_USES_UCLIBC && \ + (BR2_arm || BR2_armeb || BR2_i386 || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || BR2_sparc || BR2_x86_64) + +comment "mongrel2 needs a uClibc or glibc toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS + +config BR2_PACKAGE_MONGREL2 + bool "mongrel2" + depends on BR2_INSTALL_LIBSTDCPP # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on !BR2_STATIC_LIBS # uses dlopen() + depends on BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_ZEROMQ + help + Mongrel2 is an application, language, and network architecture + agnostic web server that focuses on web applications using + modern browser technologies. + + Mongrel2 supports 17 languages and platforms, HTTP, Flash + sockets, WebSockets, Long Polling, and many ways to deploy + and hack on it. + + http://www.mongrel2.org diff --git a/buildroot/package/mongrel2/mongrel2.hash b/buildroot/package/mongrel2/mongrel2.hash new file mode 100644 index 0000000..b8f8de3 --- /dev/null +++ b/buildroot/package/mongrel2/mongrel2.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 543553c3082f2b992649a975f6cb7324ae2aea93af05288ea4f2c1262a7f63b2 mongrel2-v1.9.2.tar.bz2 diff --git a/buildroot/package/mongrel2/mongrel2.mk b/buildroot/package/mongrel2/mongrel2.mk new file mode 100644 index 0000000..a35a872 --- /dev/null +++ b/buildroot/package/mongrel2/mongrel2.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# mongrel2 +# +################################################################################ + +MONGREL2_VERSION = 1.9.2 +MONGREL2_SOURCE = mongrel2-v$(MONGREL2_VERSION).tar.bz2 +# Do not use the github helper here, the generated tarball is *NOT* the same +# as the one uploaded by upstream for the release. +MONGREL2_SITE = https://github.com/mongrel2/mongrel2/releases/download/$(MONGREL2_VERSION) +MONGREL2_LICENSE = BSD-3-Clause +MONGREL2_LICENSE_FILES = LICENSE +MONGREL2_DEPENDENCIES = sqlite zeromq + +define MONGREL2_POLARSSL_DISABLE_ASM + $(SED) '/^#define POLARSSL_HAVE_ASM/d' $(@D)/src/polarssl/include/polarssl/config.h +endef + +# ARM in thumb mode breaks debugging with asm optimizations +# Microblaze asm optimizations are broken in general +# MIPS R6 asm is not yet supported +ifeq ($(BR2_ENABLE_DEBUG)$(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_ARM_INSTRUCTIONS_THUMB2),yy) +MONGREL2_POST_CONFIGURE_HOOKS += MONGREL2_POLARSSL_DISABLE_ASM +else ifeq ($(BR2_microblaze),y) +MONGREL2_POST_CONFIGURE_HOOKS += MONGREL2_POLARSSL_DISABLE_ASM +else ifeq ($(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) +MONGREL2_POST_CONFIGURE_HOOKS += MONGREL2_POLARSSL_DISABLE_ASM +endif + +define MONGREL2_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + PREFIX=/usr all +endef + +define MONGREL2_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + PREFIX=/usr DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/monit/0001-no-force-static.patch b/buildroot/package/monit/0001-no-force-static.patch new file mode 100644 index 0000000..edb619b --- /dev/null +++ b/buildroot/package/monit/0001-no-force-static.patch @@ -0,0 +1,20 @@ +Do not force building a statically-linked binary + +Statically-linked binary do not work well with glibc, because it +still dlopen()s the NSS libraries. + +Reported-by: Peter Kümmel +Signed-off-by: "Yann E. MORIN" + +diff -durN monit-5.7.orig/Makefile.am monit-5.7/Makefile.am +--- monit-5.7.orig/Makefile.am 2014-02-20 09:00:42.000000000 +0100 ++++ monit-5.7/Makefile.am 2014-09-05 12:49:43.711104001 +0200 +@@ -85,7 +85,7 @@ + src/process/sysdep_@ARCH@.c + + monit_LDADD = libmonit/libmonit.la +-monit_LDFLAGS = -static $(EXTLDFLAGS) ++monit_LDFLAGS = $(EXTLDFLAGS) + + man_MANS = monit.1 + diff --git a/buildroot/package/monit/Config.in b/buildroot/package/monit/Config.in new file mode 100644 index 0000000..9f80858 --- /dev/null +++ b/buildroot/package/monit/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_MONIT + bool "monit" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + Monit is a free open source utility for managing and + monitoring, processes, programs, files, directories and + filesystems on a UNIX system. Monit conducts automatic + maintenance and repair and can execute meaningful causal + actions in error situations. + + http://mmonit.com/monit/ + +comment "monit needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/monit/monit.hash b/buildroot/package/monit/monit.hash new file mode 100644 index 0000000..611d3e1 --- /dev/null +++ b/buildroot/package/monit/monit.hash @@ -0,0 +1,2 @@ +# From https://mmonit.com/monit/dist/monit-5.24.0.tar.gz.sha256: +sha256 754d1f0e165e5a26d4639a6a83f44ccf839e381f2622e0946d5302fa1f2d2414 monit-5.24.0.tar.gz diff --git a/buildroot/package/monit/monit.mk b/buildroot/package/monit/monit.mk new file mode 100644 index 0000000..260bb5b --- /dev/null +++ b/buildroot/package/monit/monit.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# monit +# +################################################################################ + +MONIT_VERSION = 5.24.0 +MONIT_SITE = http://mmonit.com/monit/dist +MONIT_LICENSE = AGPL-3.0 with OpenSSL exception +MONIT_LICENSE_FILES = COPYING +# +# Touching Makefile.am: +MONIT_AUTORECONF = YES + +MONIT_CONF_ENV = \ + libmonit_cv_setjmp_available=yes \ + libmonit_cv_vsnprintf_c99_conformant=yes + +MONIT_CONF_OPTS += \ + --without-pam \ + --with-largefiles + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MONIT_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr +MONIT_DEPENDENCIES += openssl +else +MONIT_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +MONIT_CONF_OPTS += --with-zlib +MONIT_DEPENDENCIES += zlib +else +MONIT_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/monkey/Config.in b/buildroot/package/monkey/Config.in new file mode 100644 index 0000000..9054aa0 --- /dev/null +++ b/buildroot/package/monkey/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_MONKEY + bool "monkey" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_USE_MMU # fork() + help + Monkey Server is a fast and lightweight web server for Linux + platforms. + + http://monkey-project.com/ + +if BR2_PACKAGE_MONKEY + +config BR2_PACKAGE_MONKEY_SHARED + bool "install shared library" + help + Build Monkey as a shared library in addition to stand-alone + server + +endif + +comment "monkey needs an toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/monkey/monkey.hash b/buildroot/package/monkey/monkey.hash new file mode 100644 index 0000000..6c7eada --- /dev/null +++ b/buildroot/package/monkey/monkey.hash @@ -0,0 +1,3 @@ +# md5 from http://monkey-project.com/releases/1.5/monkey-1.5.6.tar.gz.md5, sha256 locally computed: +md5 9699e4c9ea6ce6b989907c252ae80254 monkey-1.5.6.tar.gz +sha256 7c3d845306aa74ee6effd7ab6169d16ac4e6450e564954d0d0baa2d1e9be1a22 monkey-1.5.6.tar.gz diff --git a/buildroot/package/monkey/monkey.mk b/buildroot/package/monkey/monkey.mk new file mode 100644 index 0000000..02c26c9 --- /dev/null +++ b/buildroot/package/monkey/monkey.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# monkey +# +################################################################################ + +MONKEY_VERSION_MAJOR = 1.5 +MONKEY_VERSION = $(MONKEY_VERSION_MAJOR).6 +MONKEY_SITE = http://monkey-project.com/releases/$(MONKEY_VERSION_MAJOR) +MONKEY_LICENSE = Apache-2.0 +MONKEY_LICENSE_FILES = LICENSE + +# This package has a configure script, but it's not using +# autoconf/automake, so we're using the generic-package +# infrastructure. + +MONKEY_CONF_OPTS = \ + --prefix=/usr \ + --sysconfdir=/etc/monkey \ + --datadir=/var/www \ + --mandir=/usr/share/man \ + --logdir=/var/log \ + --pidfile=/var/run \ + --plugdir=/usr/lib/monkey \ + --malloc-libc + +# --uclib-mode is not a typo +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +MONKEY_CONF_OPTS += --uclib-mode --no-backtrace +endif + +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +MONKEY_CONF_OPTS += --musl-mode --no-backtrace +endif + +ifeq ($(BR2_PACKAGE_MONKEY_SHARED),y) +MONKEY_CONF_OPTS += --enable-shared +MONKEY_INSTALL_STAGING = YES +else +# Even without --enable-shared, the monkey build system leaves a +# broken libmonkey.so symbolic link. +define MONKEY_REMOVE_DANGLING_SYMLINK + $(RM) -f $(TARGET_DIR)/usr/lib/libmonkey.so +endef +MONKEY_POST_INSTALL_TARGET_HOOKS += MONKEY_REMOVE_DANGLING_SYMLINK +endif + +ifeq ($(BR2_ENABLE_DEBUG),y) +MONKEY_CONF_OPTS += --debug +endif + +define MONKEY_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(MONKEY_CONF_OPTS)) +endef + +define MONKEY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define MONKEY_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define MONKEY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mono-gtksharp3/Config.in b/buildroot/package/mono-gtksharp3/Config.in new file mode 100644 index 0000000..570b62c --- /dev/null +++ b/buildroot/package/mono-gtksharp3/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MONO_GTKSHARP3 + bool "gtk# 3" + depends on BR2_PACKAGE_LIBGTK3 + help + Gtk# is a .NET language binding for the GTK+ toolkit. + This package provides version 3 of the bindings. + + http://www.mono-project.com/docs/gui/gtksharp/ diff --git a/buildroot/package/mono-gtksharp3/mono-gtksharp3.hash b/buildroot/package/mono-gtksharp3/mono-gtksharp3.hash new file mode 100644 index 0000000..4005051 --- /dev/null +++ b/buildroot/package/mono-gtksharp3/mono-gtksharp3.hash @@ -0,0 +1,2 @@ +# sha256 from https://download.gnome.org/sources/gtk-sharp/2.99/gtk-sharp-2.99.3.sha256sum +sha256 6440f571416267ae0cb5698071d087b31e3084693fa2c829b1db37ca7ea2c3a2 gtk-sharp-2.99.3.tar.xz diff --git a/buildroot/package/mono-gtksharp3/mono-gtksharp3.mk b/buildroot/package/mono-gtksharp3/mono-gtksharp3.mk new file mode 100644 index 0000000..126aabe --- /dev/null +++ b/buildroot/package/mono-gtksharp3/mono-gtksharp3.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# gtksharp3 +# +################################################################################ + +MONO_GTKSHARP3_VERSION_MAJOR = 2.99 +MONO_GTKSHARP3_VERSION = $(MONO_GTKSHARP3_VERSION_MAJOR).3 +MONO_GTKSHARP3_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk-sharp/$(MONO_GTKSHARP3_VERSION_MAJOR) +MONO_GTKSHARP3_SOURCE = gtk-sharp-$(MONO_GTKSHARP3_VERSION).tar.xz +MONO_GTKSHARP3_LICENSE = LGPL-2.0, MIT (cairo) +MONO_GTKSHARP3_LICENSE_FILES = COPYING +MONO_GTKSHARP3_INSTALL_STAGING = YES +MONO_GTKSHARP3_DEPENDENCIES = mono libgtk3 +MONO_GTKSHARP3_CONF_OPTS += CSC=$(HOST_DIR)/bin/mcs + +$(eval $(autotools-package)) diff --git a/buildroot/package/mono/0001-Disable-backtrace-on-not-supported-uclibc.patch b/buildroot/package/mono/0001-Disable-backtrace-on-not-supported-uclibc.patch new file mode 100644 index 0000000..7bc7384 --- /dev/null +++ b/buildroot/package/mono/0001-Disable-backtrace-on-not-supported-uclibc.patch @@ -0,0 +1,27 @@ +From 5232ec11c74eb49fb220a7e2df80e46ac621e941 Mon Sep 17 00:00:00 2001 +From: Angelo Compagnucci +Date: Sat, 7 Feb 2015 09:49:37 +0100 +Subject: [PATCH] Disable backtrace on not supported uclibc + +Signed-off-by: Angelo Compagnucci +Signed-off-by: Thomas Petazzoni +--- + libgc/include/gc.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libgc/include/gc.h b/libgc/include/gc.h +index 2265fdb..6485fc0 100644 +--- a/libgc/include/gc.h ++++ b/libgc/include/gc.h +@@ -500,7 +500,7 @@ GC_API GC_PTR GC_malloc_atomic_ignore_off_page GC_PROTO((size_t lb)); + #if defined(__linux__) || defined(__GLIBC__) + # include + # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ +- && !defined(__ia64__) ++ && !defined(__ia64__) && !defined(__UCLIBC__) + # ifndef GC_HAVE_BUILTIN_BACKTRACE + # define GC_HAVE_BUILTIN_BACKTRACE + # endif +-- +2.1.0 + diff --git a/buildroot/package/mono/0002-Adjust-libc.so-path-depending-on-C-library-being-use.patch b/buildroot/package/mono/0002-Adjust-libc.so-path-depending-on-C-library-being-use.patch new file mode 100644 index 0000000..4c1d522 --- /dev/null +++ b/buildroot/package/mono/0002-Adjust-libc.so-path-depending-on-C-library-being-use.patch @@ -0,0 +1,34 @@ +From 6f8346438e0257259867b5dca6bb6db54eb96705 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 7 Feb 2015 09:50:24 +0100 +Subject: [PATCH] Adjust libc.so path depending on C library being used + +By default, on Linux systems, Mono assumes that the C library is +libc.so.6. While this is true for glibc, it is not true for uClibc and +Musl based systems. This patch adds support for such systems. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 5d9961a..f6a7909 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2978,6 +2978,12 @@ case "$host" in + SQLITE="libsqlite.so" + SQLITE3="libsqlite3.so" + ;; ++ *-*-*uclibc*) ++ LIBC="libc.so.0" ++ ;; ++ *-*-*musl*) ++ LIBC="libc.so" ++ ;; + *-*-*linux*) + AC_PATH_X + dlsearch_path=`(libtool --config ; echo eval echo \\$sys_lib_dlsearch_path_spec) | sh` +-- +2.1.0 + diff --git a/buildroot/package/mono/0004-fixing-initialization-of-have-vasprintf.patch b/buildroot/package/mono/0004-fixing-initialization-of-have-vasprintf.patch new file mode 100644 index 0000000..5564859 --- /dev/null +++ b/buildroot/package/mono/0004-fixing-initialization-of-have-vasprintf.patch @@ -0,0 +1,29 @@ +From 1c3d615d93b20d10c2729478d5104977dd9af23f Mon Sep 17 00:00:00 2001 +From: Angelo Compagnucci +Date: Wed, 5 Aug 2015 12:59:45 +0200 +Subject: [PATCH] Fixing initialization of have_vasprintf + +This patch initialize properly have_vasprintf in case vasprint function is found. +Solves multiple definition of `vasprintf' error in case vasprint is not properly detected. + +Patch is upstream: + + https://github.com/mono/mono/commit/40c171799b671718969ee28a02f92884d7fd181e + +Signed-off-by: Angelo Compagnucci +--- + eglib/configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/eglib/configure.ac b/eglib/configure.ac +index 5281419..4bf91e5 100644 +--- a/eglib/configure.ac ++++ b/eglib/configure.ac +@@ -135,6 +135,7 @@ AC_CHECK_SIZEOF(void *) + AC_CHECK_SIZEOF(long) + AC_CHECK_SIZEOF(long long) + AC_CHECK_FUNCS(strlcpy stpcpy strtok_r rewinddir vasprintf) ++AC_CHECK_FUNC(vasprintf, have_vasprintf=yes) + AC_CHECK_FUNCS(getrlimit) + + # diff --git a/buildroot/package/mono/0006-Remove-unit-tests-from-mono-compilation.patch b/buildroot/package/mono/0006-Remove-unit-tests-from-mono-compilation.patch new file mode 100644 index 0000000..a3e88e7 --- /dev/null +++ b/buildroot/package/mono/0006-Remove-unit-tests-from-mono-compilation.patch @@ -0,0 +1,29 @@ +From 26e31fc54af591bdd88d6a4a79b7fa91c57f4b0c Mon Sep 17 00:00:00 2001 +From: Angelo Compagnucci +Date: Thu, 10 Aug 2017 23:30:05 +0200 +Subject: [PATCH] Remove unit-tests from mono compilation + +This patch fixes compiling errors with unit-tests under linux. + +Signed-off-by: Angelo Compagnucci +--- + mono/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mono/Makefile.am b/mono/Makefile.am +index 8c9c2cb..7af36ec 100644 +--- a/mono/Makefile.am ++++ b/mono/Makefile.am +@@ -34,7 +34,7 @@ monotouch-do-clean: + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \ + done; + else +-SUBDIRS = $(btls_dirs) arch utils cil metadata $(sgen_dirs) mini dis tests unit-tests benchmark profiler ++SUBDIRS = $(btls_dirs) arch utils cil metadata $(sgen_dirs) mini dis tests benchmark profiler + endif + endif +-DIST_SUBDIRS = btls arch utils cil metadata $(sgen_dirs) mini dis tests unit-tests benchmark profiler ++DIST_SUBDIRS = btls arch utils cil metadata $(sgen_dirs) mini dis tests benchmark profiler +-- +2.7.4 + diff --git a/buildroot/package/mono/Config.in b/buildroot/package/mono/Config.in new file mode 100644 index 0000000..d162237 --- /dev/null +++ b/buildroot/package/mono/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS + bool + default y if BR2_HOSTARCH = "x86_64" + default y if BR2_HOSTARCH = "x86" + +config BR2_PACKAGE_MONO_ARCH_SUPPORTS + bool + depends on BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS + default y if (BR2_arm || BR2_armeb || BR2_i386 || BR2_mips || \ + BR2_mipsel || BR2_powerpc || BR2_x86_64) + +config BR2_PACKAGE_MONO + bool "mono" + depends on BR2_PACKAGE_MONO_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + An open source, cross-platform, implementation of C# + and the CLR that is binary compatible with Microsoft.NET. + + http://download.mono-project.com/sources/mono/ + +comment "mono needs a toolchain w/ threads, dynamic library" + depends on BR2_PACKAGE_MONO_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/mono/mono.hash b/buildroot/package/mono/mono.hash new file mode 100644 index 0000000..8503950 --- /dev/null +++ b/buildroot/package/mono/mono.hash @@ -0,0 +1,2 @@ +# sha256 locally computed +sha256 2a2f5c2a214a9980c086ac7561a5dd106f13d823a630de218eabafe1d995c5b4 mono-5.4.0.201.tar.bz2 diff --git a/buildroot/package/mono/mono.mk b/buildroot/package/mono/mono.mk new file mode 100644 index 0000000..802c1d4 --- /dev/null +++ b/buildroot/package/mono/mono.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# mono +# +################################################################################ + +MONO_VERSION = 5.4.0.201 +MONO_SITE = http://download.mono-project.com/sources/mono +MONO_SOURCE = mono-$(MONO_VERSION).tar.bz2 +MONO_LICENSE = GPL-2.0 or MIT (compiler, tools), MIT (libs) or commercial +MONO_LICENSE_FILES = LICENSE mcs/COPYING eglib/COPYING \ + external/Newtonsoft.Json/Tools/7-zip/copying.txt +MONO_INSTALL_STAGING = YES + +## Mono native + +# patching configure.ac +MONO_AUTORECONF = YES + +# Disable managed code (mcs folder) from building +MONO_CONF_OPTS = --with-mcs-docs=no \ + --with-ikvm-native=no \ + --enable-minimal=profiler,debug,aot \ + --disable-mcs-build \ + --enable-static \ + --disable-btls + +# The libraries have been built by the host-mono build. Since they are +# architecture-independent, we simply copy them to the target. +define MONO_INSTALL_LIBS + rsync -av --exclude=*.so --exclude=*.mdb \ + $(HOST_DIR)/lib/mono $(TARGET_DIR)/usr/lib/ +endef + +MONO_POST_INSTALL_TARGET_HOOKS += MONO_INSTALL_LIBS + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +MONO_DEPENDENCIES += libiconv +endif + +MONO_DEPENDENCIES += host-mono + +## Mono managed + +HOST_MONO_CONF_OPTS = --with-mcs-docs=no \ + --disable-libraries \ + --with-ikvm-native=no \ + --enable-minimal=profiler,debug,aot \ + --enable-static \ + --disable-btls + +# ensure monolite is used +HOST_MONO_MAKE_OPTS += EXTERNAL_MCS=false + +HOST_MONO_DEPENDENCIES = host-monolite host-gettext + +define HOST_MONO_SETUP_MONOLITE + rm -rf $(@D)/mcs/class/lib/monolite + (cd $(@D)/mcs/class/lib; ln -s $(HOST_DIR)/lib/monolite monolite) +endef + +HOST_MONO_POST_CONFIGURE_HOOKS += HOST_MONO_SETUP_MONOLITE + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/monolite/monolite.hash b/buildroot/package/monolite/monolite.hash new file mode 100644 index 0000000..76f5467 --- /dev/null +++ b/buildroot/package/monolite/monolite.hash @@ -0,0 +1,2 @@ +# sha256 locally computed +sha256 8c893c3eb3efb5006e19fb45a878860265c3f47fbaf2470be47612e84725d9fd monolite-linux-1050400003-latest.tar.gz diff --git a/buildroot/package/monolite/monolite.mk b/buildroot/package/monolite/monolite.mk new file mode 100644 index 0000000..80b2af9 --- /dev/null +++ b/buildroot/package/monolite/monolite.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# monolite +# +################################################################################ + +MONOLITE_VERSION = 1050400003 +MONOLITE_SITE = http://download.mono-project.com/monolite +MONOLITE_SOURCE = monolite-linux-$(MONOLITE_VERSION)-latest.tar.gz +MONOLITE_LICENSE = LGPL-2.0 or commercial + +define HOST_MONOLITE_INSTALL_CMDS + mkdir -p $(HOST_DIR)/lib/monolite/$(MONOLITE_VERSION) + cp -r $(@D)/* $(HOST_DIR)/lib/monolite/$(MONOLITE_VERSION) +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/mosh/Config.in b/buildroot/package/mosh/Config.in new file mode 100644 index 0000000..da8a305 --- /dev/null +++ b/buildroot/package/mosh/Config.in @@ -0,0 +1,35 @@ +comment "mosh needs a toolchain w/ C++, threads, dynamic library, wchar, host and target gcc >= 4.5" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || !BR2_HOST_GCC_AT_LEAST_4_5 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + +config BR2_PACKAGE_MOSH + bool "mosh" + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP # protobuf + depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf + depends on BR2_HOST_GCC_AT_LEAST_4_5 # protobuf + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 # protobuf + depends on !BR2_STATIC_LIBS # protobuf + depends on BR2_USE_WCHAR + select BR2_PACKAGE_PROTOBUF + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_NETTLE if !BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + # runtime dependency + select BR2_PACKAGE_OPENSSH if !BR2_PACKAGE_DROPBEAR_CLIENT + help + Remote terminal application that supports intermittent + connectivity, allows roaming, and provides speculative local + echo and line editing of user keystrokes. + + Mosh requires that the remote machine has a locale setting + matching the one on the client. + + When using mosh with dropbear on a remote machine, the + client needs mosh with a version above 1.3.0 and the + --no-ssh-pty option needs to be passed when starting the + connection. + + https://mosh.org diff --git a/buildroot/package/mosh/mosh.hash b/buildroot/package/mosh/mosh.hash new file mode 100644 index 0000000..baffe1f --- /dev/null +++ b/buildroot/package/mosh/mosh.hash @@ -0,0 +1,5 @@ +# From https://mailman.mit.edu/pipermail/mosh-users/2017-July/000357.html +sha256 da600573dfa827d88ce114e0fed30210689381bbdcff543c931e4d6a2e851216 mosh-1.3.2.tar.gz +# Locally calculcated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 8042495ddc8d99b883335d53552554eccf825fc1f0ba487d0f8e6656baaa8199 COPYING.iOS diff --git a/buildroot/package/mosh/mosh.mk b/buildroot/package/mosh/mosh.mk new file mode 100644 index 0000000..fa6ab17 --- /dev/null +++ b/buildroot/package/mosh/mosh.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# mosh +# +################################################################################ + +MOSH_VERSION = 1.3.2 +MOSH_SITE = https://mosh.org +MOSH_DEPENDENCIES = zlib ncurses protobuf host-pkgconf +MOSH_LICENSE = GPL-3.0+ with exception +MOSH_LICENSE_FILES = COPYING COPYING.iOS + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MOSH_CONF_OPTS += --with-crypto-library=openssl +MOSH_DEPENDENCIES += openssl +else +MOSH_CONF_OPTS += --with-crypto-library=nettle +MOSH_DEPENDENCIES += nettle +endif + +# help the detection of the SSP support: mosh configure.ac doesn't do +# a link test, so it doesn't detect when the toolchain doesn't have +# libssp. +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),) +MOSH_CONF_ENV += \ + ax_cv_check_cflags__Werror___fstack_protector_all=no \ + ax_cv_check_cxxflags__Werror___fstack_protector_all=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/mosquitto/0001-websockets.c-unbreak-build-without-TLS.patch b/buildroot/package/mosquitto/0001-websockets.c-unbreak-build-without-TLS.patch new file mode 100644 index 0000000..e977fae --- /dev/null +++ b/buildroot/package/mosquitto/0001-websockets.c-unbreak-build-without-TLS.patch @@ -0,0 +1,49 @@ +From 4822aa97da80a86033ec6e4a8b2f4ad0911235cf Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Sat, 3 Mar 2018 11:04:47 +0100 +Subject: [PATCH] websockets.c: unbreak build without TLS + +Commit 7943072b1f3b (Fix use_identity_as_username not working on websockets +clients) added code which unconditionally accesses mosq-ssl, breaking the +build when TLS support is disabled. + +Fix it by guarding this logic inside #ifdef WITH_TLS. + +[Upstream: https://dev.eclipse.org/mhonarc/lists/mosquitto-dev/msg01813.html] +Signed-off-by: Peter Korsgaard +--- + src/websockets.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/websockets.c b/src/websockets.c +index d4d7961..a796f0a 100644 +--- a/src/websockets.c ++++ b/src/websockets.c +@@ -201,12 +201,14 @@ static int callback_mqtt(struct libwebsocket_context *context, + mosq->ws_context = context; + #endif + mosq->wsi = wsi; ++#ifdef WITH_TLS + if(in){ + mosq->ssl = (SSL *)in; + if(!mosq->listener->ssl_ctx){ + mosq->listener->ssl_ctx = SSL_get_SSL_CTX(mosq->ssl); + } + } ++#endif + u->mosq = mosq; + }else{ + return -1; +@@ -240,7 +242,9 @@ static int callback_mqtt(struct libwebsocket_context *context, + mosq->pollfd_index = -1; + } + mosq->wsi = NULL; ++#ifdef WITH_TLS + mosq->ssl = NULL; ++#endif + do_disconnect(db, mosq); + } + break; +-- +2.11.0 + diff --git a/buildroot/package/mosquitto/Config.in b/buildroot/package/mosquitto/Config.in new file mode 100644 index 0000000..1e6418a --- /dev/null +++ b/buildroot/package/mosquitto/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_MOSQUITTO + bool "mosquitto" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_STATIC_LIBS # builds .so + help + Mosquitto is an open source message broker that implements + the MQ Telemetry Transport protocol versions 3.1 and + 3.1.1. MQTT provides a lightweight method of carrying out + messaging using a publish/subscribe model. This makes it + suitable for "machine to machine" messaging such as with low + power sensors or mobile devices such as phones, embedded + computers or microcontrollers like the Arduino. + + http://mosquitto.org/ + +comment "mosquitto needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/mosquitto/S50mosquitto b/buildroot/package/mosquitto/S50mosquitto new file mode 100644 index 0000000..5241a07 --- /dev/null +++ b/buildroot/package/mosquitto/S50mosquitto @@ -0,0 +1,35 @@ +#!/bin/sh + +start() { + printf "Starting mosquitto: " + start-stop-daemon -S -q -m -b -p /var/run/mosquitto.pid \ + --exec /usr/sbin/mosquitto \ + -- -c /etc/mosquitto/mosquitto.conf + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping mosquitto: " + start-stop-daemon -K -q -p /var/run/mosquitto.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/mosquitto/mosquitto.hash b/buildroot/package/mosquitto/mosquitto.hash new file mode 100644 index 0000000..91c855c --- /dev/null +++ b/buildroot/package/mosquitto/mosquitto.hash @@ -0,0 +1,7 @@ +# Locally calculated after checking gpg signature +sha256 7d3b3e245a3b4ec94b05678c8199c806359737949f4cfe0bf936184f6ca89a83 mosquitto-1.4.15.tar.gz + +# License files +sha256 cc77e25bafd40637b7084f04086d606f0a200051b61806f97c93405926670bc1 LICENSE.txt +sha256 3b9be6b894d0769de796e653571ff6cef494913c0ce78c35a97db939e7d9087c epl-v10 +sha256 e8cf7d54ea46c19aba793983889b7f7425e1ebfcaaccec764a7db091646e203c edl-v10 diff --git a/buildroot/package/mosquitto/mosquitto.mk b/buildroot/package/mosquitto/mosquitto.mk new file mode 100644 index 0000000..ec5fc02 --- /dev/null +++ b/buildroot/package/mosquitto/mosquitto.mk @@ -0,0 +1,105 @@ +################################################################################ +# +# mosquitto +# +################################################################################ + +MOSQUITTO_VERSION = 1.4.15 +MOSQUITTO_SITE = https://mosquitto.org/files/source +MOSQUITTO_LICENSE = EPL-1.0 or EDLv1.0 +MOSQUITTO_LICENSE_FILES = LICENSE.txt epl-v10 edl-v10 +MOSQUITTO_INSTALL_STAGING = YES + +MOSQUITTO_MAKE_OPTS = \ + UNAME=Linux \ + STRIP=true \ + prefix=/usr \ + WITH_WRAP=no \ + WITH_DOCS=no + +# adns uses getaddrinfo_a +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +MOSQUITTO_MAKE_OPTS += WITH_ADNS=yes +else +MOSQUITTO_MAKE_OPTS += WITH_ADNS=no +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +MOSQUITTO_MAKE_OPTS += WITH_THREADING=yes +else +MOSQUITTO_MAKE_OPTS += WITH_THREADING=no +endif + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +MOSQUITTO_DEPENDENCIES += libopenssl +MOSQUITTO_MAKE_OPTS += WITH_TLS=yes +else +MOSQUITTO_MAKE_OPTS += WITH_TLS=no +endif + +ifeq ($(BR2_PACKAGE_C_ARES),y) +MOSQUITTO_DEPENDENCIES += c-ares +MOSQUITTO_MAKE_OPTS += WITH_SRV=yes +else +MOSQUITTO_MAKE_OPTS += WITH_SRV=no +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +MOSQUITTO_DEPENDENCIES += util-linux +MOSQUITTO_MAKE_OPTS += WITH_UUID=yes +else +MOSQUITTO_MAKE_OPTS += WITH_UUID=no +endif + +ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y) +MOSQUITTO_DEPENDENCIES += libwebsockets +MOSQUITTO_MAKE_OPTS += WITH_WEBSOCKETS=yes +else +MOSQUITTO_MAKE_OPTS += WITH_WEBSOCKETS=no +endif + +# C++ support is only used to create a wrapper library +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +define MOSQUITTO_DISABLE_CPP + $(SED) '/-C cpp/d' $(@D)/lib/Makefile +endef + +MOSQUITTO_POST_PATCH_HOOKS += MOSQUITTO_DISABLE_CPP +endif + +define MOSQUITTO_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + $(MOSQUITTO_MAKE_OPTS) +endef + +define MOSQUITTO_INSTALL_STAGING_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + $(MOSQUITTO_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install +endef + +define MOSQUITTO_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + $(MOSQUITTO_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install + rm -f $(TARGET_DIR)/etc/mosquitto/*.example + $(INSTALL) -D -m 0644 $(@D)/mosquitto.conf \ + $(TARGET_DIR)/etc/mosquitto/mosquitto.conf +endef + +define MOSQUITTO_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/mosquitto/S50mosquitto \ + $(TARGET_DIR)/etc/init.d/S50mosquitto +endef + +define MOSQUITTO_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/mosquitto/mosquitto.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mosquitto.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/mosquitto.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mosquitto.service +endef + +define MOSQUITTO_USERS + mosquitto -1 nogroup -1 * - - - Mosquitto user +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mosquitto/mosquitto.service b/buildroot/package/mosquitto/mosquitto.service new file mode 100644 index 0000000..2d1939d --- /dev/null +++ b/buildroot/package/mosquitto/mosquitto.service @@ -0,0 +1,10 @@ +[Unit] +Description=Mosquitto MQTT broker + +[Service] +ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf +ExecReload=/bin/kill -HUP $MAINPID +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/motion/Config.in b/buildroot/package/motion/Config.in new file mode 100644 index 0000000..a27e7f9 --- /dev/null +++ b/buildroot/package/motion/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_MOTION + bool "motion" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_JPEG + help + Motion is a program that monitors the video signal from + cameras. It is able to detect if a significant part of + the picture has changed; in other words, it can detect motion. + + libv4l has to be selected to be able to use a local camera. + + https://motion-project.github.io + +comment "motion needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/motion/S99motion b/buildroot/package/motion/S99motion new file mode 100644 index 0000000..36bfc23 --- /dev/null +++ b/buildroot/package/motion/S99motion @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME=motion +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/bin/$NAME + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/motion/motion.hash b/buildroot/package/motion/motion.hash new file mode 100644 index 0000000..5b67755 --- /dev/null +++ b/buildroot/package/motion/motion.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 2074b935bdfe28f84c2c3233274b06908336778f303bb13530d4299c3f8aa4e2 motion-release-4.1.1.tar.gz +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/buildroot/package/motion/motion.mk b/buildroot/package/motion/motion.mk new file mode 100644 index 0000000..0f48986 --- /dev/null +++ b/buildroot/package/motion/motion.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# motion +# +################################################################################ + +MOTION_VERSION = release-4.1.1 +MOTION_SITE = $(call github,Motion-Project,motion,$(MOTION_VERSION)) +MOTION_LICENSE = GPL-2.0 +MOTION_LICENSE_FILES = COPYING +MOTION_DEPENDENCIES = host-pkgconf jpeg +# From git +MOTION_AUTORECONF = YES + +MOTION_CONF_OPTS += --without-optimizecpu + +ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y) +MOTION_DEPENDENCIES += ffmpeg +MOTION_CONF_OPTS += --with-ffmpeg +else +MOTION_CONF_OPTS += --without-ffmpeg +endif + +ifeq ($(BR2_PACKAGE_MYSQL),y) +MOTION_DEPENDENCIES += mysql +MOTION_CONF_OPTS += \ + --with-mysql \ + --with-mysql-include=$(STAGING_DIR)/usr/include/mysql \ + --with-mysql-lib=$(STAGING_DIR)/usr/lib +else +MOTION_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +MOTION_DEPENDENCIES += postgresql +MOTION_CONF_OPTS += \ + --with-pgsql \ + --with-pgsql-include=$(STAGING_DIR)/usr/include \ + --with-pgsql-lib=$(STAGING_DIR)/usr/lib +else +MOTION_CONF_OPTS += --without-pgsql +endif + +ifeq ($(BR2_PACKAGE_SQLITE),y) +MOTION_DEPENDENCIES += sqlite +MOTION_CONF_OPTS += --with-sqlite3 +else +MOTION_CONF_OPTS += --without-sqlite3 +endif + +ifeq ($(BR2_PACKAGE_WEBP_MUX),y) +MOTION_DEPENDENCIES += webp +MOTION_CONF_OPTS += --with-webp +else +MOTION_CONF_OPTS += --without-webp +endif + +# Do not use default install target as it installs many unneeded files and +# directories: docs, examples and init scripts +define MOTION_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/motion-dist.conf \ + $(TARGET_DIR)/etc/motion/motion.conf + $(INSTALL) -D -m 0755 $(@D)/motion $(TARGET_DIR)/usr/bin/motion +endef + +define MOTION_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/motion/S99motion \ + $(TARGET_DIR)/etc/init.d/S99motion +endef + +define MOTION_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/motion/motion.service \ + $(TARGET_DIR)/usr/lib/systemd/system/motion.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/motion.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/motion.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/motion/motion.service b/buildroot/package/motion/motion.service new file mode 100644 index 0000000..c788cd6 --- /dev/null +++ b/buildroot/package/motion/motion.service @@ -0,0 +1,10 @@ +[Unit] +Description=Motion camera monitoring system +After=network.target + +[Service] +ExecStart=/usr/bin/motion +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/mp4v2/0001-Fix-GCC7-build.patch b/buildroot/package/mp4v2/0001-Fix-GCC7-build.patch new file mode 100644 index 0000000..90222c1 --- /dev/null +++ b/buildroot/package/mp4v2/0001-Fix-GCC7-build.patch @@ -0,0 +1,32 @@ +From 855e9674232808ff3be7191b697dfb56917db21f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?S=C3=A9rgio=20M=2E=20Basto?= +Date: Wed, 8 Feb 2017 00:56:32 +0000 +Subject: [PATCH] Fix GCC7 build + +if (*pSlash != '\0') { + +As it stands the body of that if will always execute and when there are +no encoding parameters ppEncodingParams will be returned as a pointer to +an empty string rather than as a null pointer + +Signed-off-by: Peter Korsgaard +--- + src/rtphint.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/rtphint.cpp b/src/rtphint.cpp +index e07309d..1eb01f5 100644 +--- a/src/rtphint.cpp ++++ b/src/rtphint.cpp +@@ -339,7 +339,7 @@ void MP4RtpHintTrack::GetPayload( + pSlash = strchr(pSlash, '/'); + if (pSlash != NULL) { + pSlash++; +- if (pSlash != '\0') { ++ if (*pSlash != '\0') { + length = (uint32_t)strlen(pRtpMap) - (pSlash - pRtpMap); + *ppEncodingParams = (char *)MP4Calloc(length + 1); + strncpy(*ppEncodingParams, pSlash, length); +-- +2.11.0 + diff --git a/buildroot/package/mp4v2/Config.in b/buildroot/package/mp4v2/Config.in new file mode 100644 index 0000000..42315a2 --- /dev/null +++ b/buildroot/package/mp4v2/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_MP4V2 + bool "mp4v2" + depends on BR2_INSTALL_LIBSTDCPP + help + The MP4v2 library provides functions to read, create, and + modify mp4 files. + + https://code.google.com/p/mp4v2/ + +if BR2_PACKAGE_MP4V2 + +config BR2_PACKAGE_MP4V2_UTIL + bool "Install mp4 command line tools" + help + Enable to install the mp4 command line tools mp4art, + mp4chaps, mp4extract, mp4info, mp4subtitle, mp4tags, and + mp4trackdump. + +endif + +comment "mp4v2 needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/mp4v2/mp4v2.hash b/buildroot/package/mp4v2/mp4v2.hash new file mode 100644 index 0000000..d5a49c4 --- /dev/null +++ b/buildroot/package/mp4v2/mp4v2.hash @@ -0,0 +1,2 @@ +# From https://code.google.com/p/mp4v2/downloads/detail?name=mp4v2-2.0.0.tar.bz2 +sha1 193260cfb7201e6ec250137bcca1468d4d20e2f0 mp4v2-2.0.0.tar.bz2 diff --git a/buildroot/package/mp4v2/mp4v2.mk b/buildroot/package/mp4v2/mp4v2.mk new file mode 100644 index 0000000..b6b7d9a --- /dev/null +++ b/buildroot/package/mp4v2/mp4v2.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# mp4v2 +# +################################################################################ + +MP4V2_VERSION = 2.0.0 +MP4V2_SOURCE = mp4v2-$(MP4V2_VERSION).tar.bz2 +MP4V2_SITE = https://mp4v2.googlecode.com/files +MP4V2_INSTALL_STAGING = YES +MP4V2_LICENSE = MPL-1.1 +MP4V2_LICENSE_FILES = COPYING + +# help2man expects to be able to run utilities on the build machine to +# grab --help output which doesn't work when cross compiling, so +# disable it +MP4V2_CONF_ENV = ac_cv_prog_FOUND_HELP2MAN=no + +ifeq ($(BR2_PACKAGE_MP4V2_UTIL),y) +MP4V2_CONF_OPTS += --enable-util +else +MP4V2_CONF_OPTS += --disable-util +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/mpc/Config.in b/buildroot/package/mpc/Config.in new file mode 100644 index 0000000..8377013 --- /dev/null +++ b/buildroot/package/mpc/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_MPC + bool "mpc" + select BR2_PACKAGE_MPFR + select BR2_PACKAGE_GMP + help + Mpc is a C library for the arithmetic of complex numbers with + arbitrarily high precision and correct rounding of the result. + It is built upon and follows the same principles as Mpfr. + + http://www.multiprecision.org/ diff --git a/buildroot/package/mpc/mpc.hash b/buildroot/package/mpc/mpc.hash new file mode 100644 index 0000000..98f1447 --- /dev/null +++ b/buildroot/package/mpc/mpc.hash @@ -0,0 +1,2 @@ +# From http://www.multiprecision.org/index.php?prog=mpc&page=download +sha1 b8be66396c726fdc36ebb0f692ed8a8cca3bcc66 mpc-1.0.3.tar.gz diff --git a/buildroot/package/mpc/mpc.mk b/buildroot/package/mpc/mpc.mk new file mode 100644 index 0000000..89bbfd9 --- /dev/null +++ b/buildroot/package/mpc/mpc.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# mpc +# +################################################################################ + +MPC_VERSION = 1.0.3 +MPC_SITE = $(BR2_GNU_MIRROR)/mpc +MPC_LICENSE = LGPL-3.0+ +MPC_LICENSE_FILES = COPYING.LESSER +MPC_INSTALL_STAGING = YES +MPC_DEPENDENCIES = gmp mpfr +HOST_MPC_DEPENDENCIES = host-gmp host-mpfr + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/mpd-mpc/Config.in b/buildroot/package/mpd-mpc/Config.in new file mode 100644 index 0000000..1debc83 --- /dev/null +++ b/buildroot/package/mpd-mpc/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MPD_MPC + bool "mpd-mpc" + select BR2_PACKAGE_LIBMPDCLIENT + help + A minimalist command line interface to MPD. + + http://www.musicpd.org/clients/mpc/ diff --git a/buildroot/package/mpd-mpc/mpd-mpc.hash b/buildroot/package/mpd-mpc/mpd-mpc.hash new file mode 100644 index 0000000..8336893 --- /dev/null +++ b/buildroot/package/mpd-mpc/mpd-mpc.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 a4337d06c85dc81a638821d30fce8a137a58d13d510be34a11c1cce95cabc547 mpc-0.28.tar.xz diff --git a/buildroot/package/mpd-mpc/mpd-mpc.mk b/buildroot/package/mpd-mpc/mpd-mpc.mk new file mode 100644 index 0000000..6c15c0d --- /dev/null +++ b/buildroot/package/mpd-mpc/mpd-mpc.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# mpd-mpc +# +################################################################################ + +MPD_MPC_VERSION_MAJOR = 0 +MPD_MPC_VERSION = $(MPD_MPC_VERSION_MAJOR).28 +MPD_MPC_SITE = http://www.musicpd.org/download/mpc/$(MPD_MPC_VERSION_MAJOR) +MPD_MPC_SOURCE = mpc-$(MPD_MPC_VERSION).tar.xz +MPD_MPC_LICENSE = GPL-2.0+ +MPD_MPC_LICENSE_FILES = COPYING +MPD_MPC_DEPENDENCIES = host-pkgconf libmpdclient +MPD_MPC_CONF_ENV = ac_cv_prog_cc_c99='-std=c99' + +$(eval $(autotools-package)) diff --git a/buildroot/package/mpd/0001-configure.ac-check-if-libatomic-is-needed.patch b/buildroot/package/mpd/0001-configure.ac-check-if-libatomic-is-needed.patch new file mode 100644 index 0000000..a9873a7 --- /dev/null +++ b/buildroot/package/mpd/0001-configure.ac-check-if-libatomic-is-needed.patch @@ -0,0 +1,40 @@ +From 8eaf14a17244aaf000b4d19e4fde4a637576939f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 7 Feb 2016 21:40:47 +0100 +Subject: [PATCH] configure.ac: check if libatomic is needed + +The mpd source code uses the C++11 functionality, which +internally is implemented using the __atomic_*() gcc built-ins. On +certain architectures, the __atomic_*() built-ins are implemented in +the libatomic library that comes with the rest of the gcc runtime. Due +to this, code using might need to link against libatomic, +otherwise one hits build issues such as: + +GlobalEvents.cxx:(.text._ZN12GlobalEvents4EmitENS_5EventE+0x14): undefined reference to `__atomic_fetch_or_4' + +on an architecture like SPARC. + +To solve this, a configure.ac check is added to know if we need to +link against libatomic or not. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 107b45a..8e6fab7 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -233,6 +233,8 @@ if test x$have_pthread_setname_np = xyes; then + AC_DEFINE(HAVE_PTHREAD_SETNAME_NP, 1, [Is pthread_setname_np() available?]) + fi + ++AC_SEARCH_LIBS([__atomic_load_4], [atomic]) ++ + dnl --------------------------------------------------------------------------- + dnl Event loop selection + dnl --------------------------------------------------------------------------- +-- +2.6.4 + diff --git a/buildroot/package/mpd/Config.in b/buildroot/package/mpd/Config.in new file mode 100644 index 0000000..5991b6f --- /dev/null +++ b/buildroot/package/mpd/Config.in @@ -0,0 +1,326 @@ +menuconfig BR2_PACKAGE_MPD + bool "mpd" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # flac + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + # ARC toolchain issue + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_MPD_TREMOR if !(BR2_PACKAGE_MPD_MAD || BR2_PACKAGE_MPD_MPG123 || BR2_PACKAGE_MPD_VORBIS || BR2_PACKAGE_MPD_WAVPACK || BR2_PACKAGE_MPD_FLAC || BR2_PACKAGE_MPD_MUSEPACK || BR2_PACKAGE_MPD_FFMPEG) + help + MPD is a flexible, powerful, server-side application + for playing music. Through plugins and libraries + it can play a variety of sound files while being + controlled by its network protocol. + + http://www.musicpd.org + +if BR2_PACKAGE_MPD + +comment "Archive plugins" + +config BR2_PACKAGE_MPD_BZIP2 + bool "bzip2" + select BR2_PACKAGE_BZIP2 + help + Enable bzip2 archive support. + +config BR2_PACKAGE_MPD_SQLITE + bool "sqlite" + select BR2_PACKAGE_SQLITE + help + Enable sqlite database support. + If you don't use sqlite it will use an ASCII database. + +comment "Converter plugins" + +config BR2_PACKAGE_MPD_LIBSAMPLERATE + bool "libsamplerate" + select BR2_PACKAGE_LIBSAMPLERATE + help + Enable libsamplerate input support. + Select this for software sample rate conversion. + +config BR2_PACKAGE_MPD_LIBSOXR + bool "libsoxr" + select BR2_PACKAGE_LIBSOXR + help + Enable libsoxr resampler support. + The SoX Resampler library performs software sample-rate + conversion. + +comment "Decoder plugins" + +config BR2_PACKAGE_MPD_AUDIOFILE + bool "audiofile" + select BR2_PACKAGE_AUDIOFILE + help + Enable audiofile input/streaming support. + Select this if you want to play back WAV files. + +config BR2_PACKAGE_MPD_DSD + bool "dsd" + help + Enable Digital Speech Decoder (DSD) support to play audio + files encoded in a digital speech format. + +config BR2_PACKAGE_MPD_FAAD2 + bool "faad2" + select BR2_PACKAGE_FAAD2 + help + Enable faad2 input support. + Select this if you want to play back MP4/AAC files. + +config BR2_PACKAGE_MPD_FFMPEG + bool "ffmpeg" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_FFMPEG + help + Enable ffmpeg input support. + Select this if you want to play back files supported by + ffmpeg. + +config BR2_PACKAGE_MPD_FLAC + bool "flac" + select BR2_PACKAGE_FLAC + help + Enable flac input/streaming support. + Select this if you want to play back FLAC files. + +config BR2_PACKAGE_MPD_LIBSNDFILE + bool "libsndfile" + select BR2_PACKAGE_LIBSNDFILE + help + Enable libsndfile input/streaming support. + Select this if you want to play back WAV files. + +config BR2_PACKAGE_MPD_MAD + bool "mad" + default y + select BR2_PACKAGE_LIBID3TAG + select BR2_PACKAGE_LIBMAD + help + Enable mad input support. + Select this if you want to play back MP3 files. + +config BR2_PACKAGE_MPD_MPG123 + bool "mpg123" + select BR2_PACKAGE_LIBID3TAG + select BR2_PACKAGE_MPG123 + help + Enable mpg123 input support. + Select this if you want to play back MP3 files. + +config BR2_PACKAGE_MPD_MUSEPACK + bool "musepack" + select BR2_PACKAGE_LIBCUEFILE + select BR2_PACKAGE_LIBREPLAYGAIN + select BR2_PACKAGE_MUSEPACK + help + Enable musepack input support. + Select this if you want to play back MPC files. + +config BR2_PACKAGE_MPD_OPUS + bool "opus" + select BR2_PACKAGE_OPUS + select BR2_PACKAGE_LIBOGG + help + Enable opus input support. + Select this if you want to play back OPUS encoded files. + +config BR2_PACKAGE_MPD_TREMOR + bool "tremor" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_TREMOR + help + Enable vorbis input support. + Select this if you want to play back OGG files on softfloat + targets. + +config BR2_PACKAGE_MPD_VORBIS + bool "vorbis" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + help + Enable vorbis input/streaming support. + Select this if you want to play back OGG files on hardfloat + targets. + +config BR2_PACKAGE_MPD_WAVPACK + bool "wavpack" + select BR2_PACKAGE_WAVPACK + help + Enable wavpack input support. + Select this if you want to play back WV files. + +comment "Encoder plugins" + +config BR2_PACKAGE_MPD_LAME + bool "lame" + select BR2_PACKAGE_LAME + help + Enable lame (mp3) encoding support. + +config BR2_PACKAGE_MPD_TWOLAME + bool "twolame" + select BR2_PACKAGE_TWOLAME + help + Enable TwoLAME mp2 encoding. + +comment "Input plugins" + +config BR2_PACKAGE_MPD_CURL + bool "curl" + select BR2_PACKAGE_LIBCURL + help + Enable curl streaming (http) support. + +config BR2_PACKAGE_MPD_LIBNFS + bool "nfs" + # libnfs -> libtirpc + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBNFS + help + Enable Network File System (NFS) support. + +comment "nfs support needs a toolchain w/ threads support" + depends on !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) + +comment "samba support needs a glibc toolchain w/ dynamic library, RPC" + depends on !BR2_nios2 + depends on !BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_NATIVE_RPC + +config BR2_PACKAGE_MPD_LIBSMBCLIENT + bool "samba" + depends on !BR2_nios2 # samba + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_SAMBA4 + help + Enable Samba support. + +config BR2_PACKAGE_MPD_SOUNDCLOUD + bool "soundcloud" + select BR2_PACKAGE_YAJL + help + Enable soundcloud.com playlist support. + +comment "Output plugins" + +config BR2_PACKAGE_MPD_ALSA + bool "alsa" + default y + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_PCM + select BR2_PACKAGE_ALSA_LIB_MIXER + help + Enable alsa output support. + +config BR2_PACKAGE_MPD_AO + bool "ao" + select BR2_PACKAGE_LIBAO + help + Enable libao output support. + +config BR2_PACKAGE_MPD_HTTPD_OUTPUT + bool "httpd output" + help + Enable httpd output support. + +config BR2_PACKAGE_MPD_JACK2 + bool "jack2" + depends on !BR2_STATIC_LIBS # jack2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_JACK2 + help + Enable jack output support. + +comment "jack support needs a toolchain w/ dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_MPD_OSS + bool "oss" + help + Enable OSS (Open Sound System) output support. + +config BR2_PACKAGE_MPD_PULSEAUDIO + bool "pulseaudio" + depends on !BR2_STATIC_LIBS # pulseaudio + select BR2_PACKAGE_PULSEAUDIO + help + Enable pulseaudio output support. + +comment "pulseaudio support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_MPD_SHOUTCAST + bool "shoutcast" + select BR2_PACKAGE_LIBSHOUT + help + Enable shoutcast streaming output support. + +comment "Miscellaneous plugins" + +config BR2_PACKAGE_MPD_AVAHI_SUPPORT + bool "avahi (zeroconf) support" + depends on !BR2_STATIC_LIBS # avahi + select BR2_PACKAGE_AVAHI + select BR2_PACKAGE_AVAHI_DAEMON + select BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY + help + Enable Avahi (zeroconf) support. + Select this for multicast DNS/DNS-SD service discovery + support. This allows MPD to publish service information on a + local network. + +comment "avahi support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_MPD_NEIGHBOR_DISCOVERY_SUPPORT + bool "neighbor discovery support" + depends on BR2_PACKAGE_MPD_LIBSMBCLIENT || BR2_PACKAGE_MPD_UPNP + help + Enable support for neighbor discovery. + This option can be used in conjunction with the smbclient + plugin to provide a list of SMB/CIFS servers or with the + UPnP plugin to provide a list of UPnP servers on the local + network. The neighbor plugin needs configuration in + mpd.conf. For further information take a look at the MPD + documentation. + +config BR2_PACKAGE_MPD_TCP + bool "tcp sockets" + default y + help + Enable MPD to listen on tcp sockets. + + You want this on if MPD and the client(s) work + on different machines (the usual scenario). + +config BR2_PACKAGE_MPD_UPNP + bool "UPnP" + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBUPNP + help + Enable MPD UPnP client support. + +endif + +comment "mpd needs a toolchain w/ C++, threads, wchar, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC + +comment "mpd needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/buildroot/package/mpd/S95mpd b/buildroot/package/mpd/S95mpd new file mode 100644 index 0000000..9f68b45 --- /dev/null +++ b/buildroot/package/mpd/S95mpd @@ -0,0 +1,34 @@ +#!/bin/sh + +# Sanity checks +test -f /usr/bin/mpd || exit 0 +test -f /etc/mpd.conf || exit 0 + +start() { + printf "Starting mpd: " + start-stop-daemon --start --quiet --background --exec /usr/bin/mpd \ + && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping mpd: " + start-stop-daemon --stop --quiet --pidfile /var/run/mpd.pid \ + && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + sleep 1 + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/mpd/mpd.conf b/buildroot/package/mpd/mpd.conf new file mode 100644 index 0000000..5956b75 --- /dev/null +++ b/buildroot/package/mpd/mpd.conf @@ -0,0 +1,32 @@ +# +# Sample configuration file for mpd +# This is a minimal configuration, see the manpage for more options +# + +# Directory where the music is stored +music_directory "/var/lib/mpd/music" + +# Directory where user-made playlists are stored (RW) +playlist_directory "/var/lib/mpd/playlists" + +# Database file (RW) +db_file "/var/lib/mpd/database" + +# Log file (RW) +log_file "/var/log/mpd.log" + +# Process ID file (RW) +pid_file "/var/run/mpd.pid" + +# State file (RW) +state_file "/var/lib/mpd/state" + +# User id to run the daemon as +#user "nobody" + +# TCP socket binding +bind_to_address "any" +#bind_to_address "localhost" + +# Unix socket to listen on +bind_to_address "/var/lib/mpd/socket" diff --git a/buildroot/package/mpd/mpd.hash b/buildroot/package/mpd/mpd.hash new file mode 100644 index 0000000..735ea70 --- /dev/null +++ b/buildroot/package/mpd/mpd.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 c69c4f67e665380ea3bbde6cff8958edc85f7cd40e7918ae5ce0a2184ca9eb40 mpd-0.20.15.tar.xz diff --git a/buildroot/package/mpd/mpd.mk b/buildroot/package/mpd/mpd.mk new file mode 100644 index 0000000..4828595 --- /dev/null +++ b/buildroot/package/mpd/mpd.mk @@ -0,0 +1,270 @@ +################################################################################ +# +# mpd +# +################################################################################ + +MPD_VERSION_MAJOR = 0.20 +MPD_VERSION = $(MPD_VERSION_MAJOR).15 +MPD_SOURCE = mpd-$(MPD_VERSION).tar.xz +MPD_SITE = http://www.musicpd.org/download/mpd/$(MPD_VERSION_MAJOR) +MPD_DEPENDENCIES = host-pkgconf boost +MPD_LICENSE = GPL-2.0+ +MPD_LICENSE_FILES = COPYING +MPD_AUTORECONF = YES + +# Some options need an explicit --disable or --enable + +# Zeroconf support depends on libdns_sd from avahi. +ifeq ($(BR2_PACKAGE_MPD_AVAHI_SUPPORT),y) +MPD_DEPENDENCIES += avahi +MPD_CONF_OPTS += --with-zeroconf=avahi +else +MPD_CONF_OPTS += --with-zeroconf=no +endif + +# MPD prefers libicu for utf8 collation instead of libglib2. +ifeq ($(BR2_PACKAGE_ICU),y) +MPD_DEPENDENCIES += icu +MPD_CONF_OPTS += --enable-icu +else +MPD_CONF_OPTS += --disable-icu +endif + +ifeq ($(BR2_PACKAGE_MPD_ALSA),y) +MPD_DEPENDENCIES += alsa-lib +MPD_CONF_OPTS += --enable-alsa +else +MPD_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_MPD_AO),y) +MPD_DEPENDENCIES += libao +MPD_CONF_OPTS += --enable-ao +else +MPD_CONF_OPTS += --disable-ao +endif + +ifeq ($(BR2_PACKAGE_MPD_AUDIOFILE),y) +MPD_DEPENDENCIES += audiofile +MPD_CONF_OPTS += --enable-audiofile +else +MPD_CONF_OPTS += --disable-audiofile +endif + +ifeq ($(BR2_PACKAGE_MPD_BZIP2),y) +MPD_DEPENDENCIES += bzip2 +MPD_CONF_OPTS += --enable-bzip2 +else +MPD_CONF_OPTS += --disable-bzip2 +endif + +ifeq ($(BR2_PACKAGE_MPD_CURL),y) +MPD_DEPENDENCIES += libcurl +MPD_CONF_OPTS += --enable-curl +else +MPD_CONF_OPTS += --disable-curl +endif + +ifeq ($(BR2_PACKAGE_MPD_DSD),y) +MPD_CONF_OPTS += --enable-dsd +else +MPD_CONF_OPTS += --disable-dsd +endif + +ifeq ($(BR2_PACKAGE_MPD_FAAD2),y) +MPD_DEPENDENCIES += faad2 +MPD_CONF_OPTS += --enable-aac +else +MPD_CONF_OPTS += --disable-aac +endif + +ifeq ($(BR2_PACKAGE_MPD_FFMPEG),y) +MPD_DEPENDENCIES += ffmpeg +MPD_CONF_OPTS += --enable-ffmpeg +else +MPD_CONF_OPTS += --disable-ffmpeg +endif + +ifeq ($(BR2_PACKAGE_MPD_FLAC),y) +MPD_DEPENDENCIES += flac +MPD_CONF_OPTS += --enable-flac +else +MPD_CONF_OPTS += --disable-flac +endif + +ifeq ($(BR2_PACKAGE_MPD_HTTPD_OUTPUT),y) +MPD_CONF_OPTS += --enable-httpd-output +else +MPD_CONF_OPTS += --disable-httpd-output +endif + +ifeq ($(BR2_PACKAGE_MPD_JACK2),y) +MPD_DEPENDENCIES += jack2 +MPD_CONF_OPTS += --enable-jack +else +MPD_CONF_OPTS += --disable-jack +endif + +ifeq ($(BR2_PACKAGE_MPD_LAME),y) +MPD_DEPENDENCIES += lame +MPD_CONF_OPTS += --enable-lame-encoder +else +MPD_CONF_OPTS += --disable-lame-encoder +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBNFS),y) +MPD_DEPENDENCIES += libnfs +MPD_CONF_OPTS += --enable-nfs +else +MPD_CONF_OPTS += --disable-nfs +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBSMBCLIENT),y) +MPD_DEPENDENCIES += samba4 +MPD_CONF_OPTS += --enable-smbclient +else +MPD_CONF_OPTS += --disable-smbclient +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBSAMPLERATE),y) +MPD_DEPENDENCIES += libsamplerate +MPD_CONF_OPTS += --enable-lsr +else +MPD_CONF_OPTS += --disable-lsr +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBSNDFILE),y) +MPD_DEPENDENCIES += libsndfile +MPD_CONF_OPTS += --enable-sndfile +else +MPD_CONF_OPTS += --disable-sndfile +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBSOXR),y) +MPD_DEPENDENCIES += libsoxr +MPD_CONF_OPTS += --enable-soxr +else +MPD_CONF_OPTS += --disable-soxr +endif + +ifeq ($(BR2_PACKAGE_MPD_MAD),y) +MPD_DEPENDENCIES += libid3tag libmad +MPD_CONF_OPTS += --enable-mad +else +MPD_CONF_OPTS += --disable-mad +endif + +ifeq ($(BR2_PACKAGE_MPD_MPG123),y) +MPD_DEPENDENCIES += libid3tag mpg123 +MPD_CONF_OPTS += --enable-mpg123 +else +MPD_CONF_OPTS += --disable-mpg123 +endif + +ifeq ($(BR2_PACKAGE_MPD_MUSEPACK),y) +MPD_DEPENDENCIES += musepack +MPD_CONF_OPTS += --enable-mpc +else +MPD_CONF_OPTS += --disable-mpc +endif + +ifeq ($(BR2_PACKAGE_MPD_NEIGHBOR_DISCOVERY_SUPPORT),y) +MPD_CONF_OPTS += --enable-neighbor-plugins +else +MPD_CONF_OPTS += --disable-neighbor-plugins +endif + +ifeq ($(BR2_PACKAGE_MPD_OPUS),y) +MPD_DEPENDENCIES += opus libogg +MPD_CONF_OPTS += --enable-opus +else +MPD_CONF_OPTS += --disable-opus +endif + +ifeq ($(BR2_PACKAGE_MPD_OSS),y) +MPD_CONF_OPTS += --enable-oss +else +MPD_CONF_OPTS += --disable-oss +endif + +ifeq ($(BR2_PACKAGE_MPD_PULSEAUDIO),y) +MPD_DEPENDENCIES += pulseaudio +MPD_CONF_OPTS += --enable-pulse +else +MPD_CONF_OPTS += --disable-pulse +endif + +ifeq ($(BR2_PACKAGE_MPD_SHOUTCAST),y) +MPD_DEPENDENCIES += libshout +MPD_CONF_OPTS += --enable-shout +else +MPD_CONF_OPTS += --disable-shout +endif + +ifeq ($(BR2_PACKAGE_MPD_SOUNDCLOUD),y) +MPD_DEPENDENCIES += yajl +MPD_CONF_OPTS += --enable-soundcloud +else +MPD_CONF_OPTS += --disable-soundcloud +endif + +ifeq ($(BR2_PACKAGE_MPD_SQLITE),y) +MPD_DEPENDENCIES += sqlite +MPD_CONF_OPTS += --enable-sqlite +else +MPD_CONF_OPTS += --disable-sqlite +endif + +ifneq ($(BR2_PACKAGE_MPD_TCP),y) +MPD_CONF_OPTS += --disable-tcp +endif + +ifeq ($(BR2_PACKAGE_MPD_TREMOR),y) +MPD_DEPENDENCIES += tremor +# Help mpd to find tremor in static linking scenarios +MPD_CONF_ENV += \ + TREMOR_LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs vorbisidec`" +MPD_CONF_OPTS += --with-tremor=$(STAGING_DIR)/usr +endif + +ifeq ($(BR2_PACKAGE_MPD_TWOLAME),y) +MPD_DEPENDENCIES += twolame +MPD_CONF_OPTS += --enable-twolame-encoder +else +MPD_CONF_OPTS += --disable-twolame-encoder +endif + +ifeq ($(BR2_PACKAGE_MPD_UPNP),y) +MPD_DEPENDENCIES += expat libupnp +MPD_CONF_OPTS += --enable-upnp +else +MPD_CONF_OPTS += --disable-upnp +endif + +ifeq ($(BR2_PACKAGE_MPD_VORBIS),y) +MPD_DEPENDENCIES += libvorbis +MPD_CONF_OPTS += --enable-vorbis --enable-vorbis-encoder +else +MPD_CONF_OPTS += --disable-vorbis --disable-vorbis-encoder +endif + +ifeq ($(BR2_PACKAGE_MPD_WAVPACK),y) +MPD_DEPENDENCIES += wavpack +MPD_CONF_OPTS += --enable-wavpack +else +MPD_CONF_OPTS += --disable-wavpack +endif + +define MPD_INSTALL_EXTRA_FILES + $(INSTALL) -m 0644 -D package/mpd/mpd.conf $(TARGET_DIR)/etc/mpd.conf +endef + +MPD_POST_INSTALL_TARGET_HOOKS += MPD_INSTALL_EXTRA_FILES + +define MPD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/mpd/S95mpd \ + $(TARGET_DIR)/etc/init.d/S95mpd +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/mpdecimal/0001-Add-minimal-support-for-enable-disable-shared-static.patch b/buildroot/package/mpdecimal/0001-Add-minimal-support-for-enable-disable-shared-static.patch new file mode 100644 index 0000000..630bbd6 --- /dev/null +++ b/buildroot/package/mpdecimal/0001-Add-minimal-support-for-enable-disable-shared-static.patch @@ -0,0 +1,101 @@ +From c349964887901848fb4cd5db53a5bcb6dae27aaa Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 23 Nov 2014 10:16:33 +0100 +Subject: [PATCH] Add minimal support for --{enable,disable}-{shared,static} + +mpdecimal uses autoconf, but not automake or libtool, so this commit +adds some basic handling of --{enable,disable}-{shared,static}, so +that building the shared library can be disabled in pure static +library contexts. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.in | 6 ++++++ + configure.ac | 13 +++++++++++++ + libmpdec/Makefile.in | 11 ++++++++++- + 3 files changed, 29 insertions(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 2c91891..0c44f36 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -9,6 +9,8 @@ LIBSTATIC = @LIBSTATIC@ + LIBSONAME = @LIBSONAME@ + LIBSHARED = @LIBSHARED@ + INSTALL = @INSTALL@ ++BUILD_SHARED = @BUILD_SHARED@ ++BUILD_STATIC = @BUILD_STATIC@ + + prefix = @prefix@ + exec_prefix = @exec_prefix@ +@@ -32,9 +34,13 @@ install: FORCE + $(INSTALL) -d -m 755 $(DESTDIR)$(includedir) + $(INSTALL) -m 644 libmpdec/mpdecimal.h $(DESTDIR)$(includedir) + $(INSTALL) -d -m 755 $(DESTDIR)$(libdir) ++ifeq ($(BUILD_STATIC),yes) + $(INSTALL) -m 644 libmpdec/$(LIBSTATIC) $(DESTDIR)$(libdir) ++endif ++ifeq ($(BUILD_SHARED),yes) + $(INSTALL) -m 755 libmpdec/$(LIBSHARED) $(DESTDIR)$(libdir) + cd $(DESTDIR)$(libdir) && ln -sf $(LIBSHARED) $(LIBSONAME) && ln -sf $(LIBSHARED) libmpdec.so ++endif + $(INSTALL) -d -m 755 $(DESTDIR)$(docdir) + cp -R doc/* $(DESTDIR)$(docdir) + +diff --git a/configure.ac b/configure.ac +index 7ee8f86..2b3e505 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -88,6 +88,19 @@ CFLAGS="$saved_cflags" + AC_PROG_INSTALL + AC_SUBST(INSTALL) + ++AC_ARG_ENABLE([shared], ++ [AS_HELP_STRING([--enable-shared], [build shared library])], ++ [BUILD_SHARED=$enableval], ++ [BUILD_SHARED=yes]) ++ ++AC_ARG_ENABLE([static], ++ [AS_HELP_STRING([--enable-static], [build static library])], ++ [BUILD_STATIC=$enableval], ++ [BUILD_STATIC=yes]) ++ ++AC_SUBST(BUILD_SHARED) ++AC_SUBST(BUILD_STATIC) ++ + # _FORTIFY_SOURCE wrappers for memmove and bcopy are incorrect: + # http://sourceware.org/ml/libc-alpha/2010-12/msg00009.html + AC_MSG_CHECKING(for glibc _FORTIFY_SOURCE/memmove bug) +diff --git a/libmpdec/Makefile.in b/libmpdec/Makefile.in +index d9619a3..985c73c 100644 +--- a/libmpdec/Makefile.in ++++ b/libmpdec/Makefile.in +@@ -7,6 +7,8 @@ + LIBSTATIC = @LIBSTATIC@ + LIBSONAME = @LIBSONAME@ + LIBSHARED = @LIBSHARED@ ++BUILD_SHARED = @BUILD_SHARED@ ++BUILD_STATIC = @BUILD_STATIC@ + + CC = @CC@ + LD = @LD@ +@@ -32,8 +34,15 @@ ifeq ($(MAKECMDGOALS), profile_use) + MPD_LDFLAGS += $(MPD_PUSE) + endif + ++ifeq ($(BUILD_SHARED),yes) ++TARGETS += $(LIBSHARED) ++endif ++ ++ifeq ($(BUILD_STATIC),yes) ++TARGETS += $(LIBSTATIC) ++endif + +-default: $(LIBSTATIC) $(LIBSHARED) ++default: $(TARGETS) + + + OBJS := basearith.o context.o constants.o convolute.o crt.o mpdecimal.o \ +-- +2.1.0 + diff --git a/buildroot/package/mpdecimal/Config.in b/buildroot/package/mpdecimal/Config.in new file mode 100644 index 0000000..929d415 --- /dev/null +++ b/buildroot/package/mpdecimal/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_MPDECIMAL + bool "mpdecimal" + help + mpdecimal is a package for correctly-rounded arbitrary + precision decimal floating point arithmetic. Starting from + version 2.4, mpdecimal includes only the libmpdec + library. Further mpdecimal development will focus + exclusively on libmpdec. + + http://www.bytereef.org/mpdecimal/ diff --git a/buildroot/package/mpdecimal/mpdecimal.hash b/buildroot/package/mpdecimal/mpdecimal.hash new file mode 100644 index 0000000..bc443d1 --- /dev/null +++ b/buildroot/package/mpdecimal/mpdecimal.hash @@ -0,0 +1,2 @@ +# From http://www.bytereef.org/mpdecimal/download.html +sha256 da74d3cfab559971a4fbd4fb506e1b4498636eb77d0fd09e44f8e546d18ac068 mpdecimal-2.4.1.tar.gz diff --git a/buildroot/package/mpdecimal/mpdecimal.mk b/buildroot/package/mpdecimal/mpdecimal.mk new file mode 100644 index 0000000..5e0929e --- /dev/null +++ b/buildroot/package/mpdecimal/mpdecimal.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# mpdecimal +# +################################################################################ + +MPDECIMAL_SITE = http://www.bytereef.org/software/mpdecimal/releases +MPDECIMAL_VERSION = 2.4.1 +MPDECIMAL_INSTALL_STAGING = YES +MPDECIMAL_LICENSE = BSD-2-Clause +MPDECIMAL_LICENSE_FILES = LICENSE.txt +MPDECIMAL_CONF_OPTS = LD="$(TARGET_CC)" +MPDECIMAL_AUTORECONF = YES + +# On i386, by default, mpdecimal tries to uses which is not +# available in musl/uclibc. So in this case, we tell mpdecimal to use +# the generic 32 bits code, which is anyway the one used on ARM, +# PowerPC, etc. +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),) +ifeq ($(BR2_i386),y) +MPDECIMAL_CONF_ENV += MACHINE=ansi32 +endif +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/mpfr/0001-Fix-obsolete-ARC-asm-constraints.patch b/buildroot/package/mpfr/0001-Fix-obsolete-ARC-asm-constraints.patch new file mode 100644 index 0000000..12590cf --- /dev/null +++ b/buildroot/package/mpfr/0001-Fix-obsolete-ARC-asm-constraints.patch @@ -0,0 +1,37 @@ +mpfr-longlong.h: Fix obsolete ARC asm constraints + +This patch replaces obsolete ARC "J" asm constraint with +up-to-date "Cal" constraint. +The patch should be applied to upstream "mpfr" library and +after that it should be removed from buildroot as soon as +mpfr version with current fix will come up. + +Signed-off-by: Vlad Zakharov +Signed-off-by: Claudiu Zissulescu +--- +Index: /src/mpfr-longlong.h +=================================================================== +--- /src/mpfr-longlong.h (revision 10963) ++++ /src/mpfr-longlong.h (working copy) +@@ -416,17 +416,17 @@ + : "=r" (sh), \ + "=&r" (sl) \ + : "r" ((USItype) (ah)), \ +- "rIJ" ((USItype) (bh)), \ ++ "rICal" ((USItype) (bh)), \ + "%r" ((USItype) (al)), \ +- "rIJ" ((USItype) (bl))) ++ "rICal" ((USItype) (bl))) + #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ + __asm__ ("sub.f\t%1, %4, %5\n\tsbc\t%0, %2, %3" \ + : "=r" (sh), \ + "=&r" (sl) \ + : "r" ((USItype) (ah)), \ +- "rIJ" ((USItype) (bh)), \ ++ "rICal" ((USItype) (bh)), \ + "r" ((USItype) (al)), \ +- "rIJ" ((USItype) (bl))) ++ "rICal" ((USItype) (bl))) + #endif + + #if defined (__arm__) && (defined (__thumb2__) || !defined (__thumb__)) \ diff --git a/buildroot/package/mpfr/Config.in b/buildroot/package/mpfr/Config.in new file mode 100644 index 0000000..e02511f --- /dev/null +++ b/buildroot/package/mpfr/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MPFR + bool "mpfr" + select BR2_PACKAGE_GMP + help + C library for multiple-precision floating-point computations + with exact rounding. + + http://www.mpfr.org/ diff --git a/buildroot/package/mpfr/mpfr.hash b/buildroot/package/mpfr/mpfr.hash new file mode 100644 index 0000000..1c825e1 --- /dev/null +++ b/buildroot/package/mpfr/mpfr.hash @@ -0,0 +1,2 @@ +# From http://lists.gnu.org/archive/html/info-gnu/2017-09/msg00004.html +sha256 7a62ac1a04408614fccdc506e4844b10cf0ad2c2b1677097f8f35d3a1344a950 mpfr-3.1.6.tar.xz diff --git a/buildroot/package/mpfr/mpfr.mk b/buildroot/package/mpfr/mpfr.mk new file mode 100644 index 0000000..1b67cf2 --- /dev/null +++ b/buildroot/package/mpfr/mpfr.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# mpfr +# +################################################################################ + +MPFR_VERSION = 3.1.6 +MPFR_SITE = http://www.mpfr.org/mpfr-$(MPFR_VERSION) +MPFR_SOURCE = mpfr-$(MPFR_VERSION).tar.xz +MPFR_LICENSE = LGPL-3.0+ +MPFR_LICENSE_FILES = COPYING.LESSER +MPFR_INSTALL_STAGING = YES +MPFR_DEPENDENCIES = gmp +HOST_MPFR_DEPENDENCIES = host-gmp +MPFR_MAKE_OPTS = RANLIB=$(TARGET_RANLIB) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/mpg123/Config.in b/buildroot/package/mpg123/Config.in new file mode 100644 index 0000000..73ca1c7 --- /dev/null +++ b/buildroot/package/mpg123/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MPG123 + bool "mpg123" + depends on BR2_USE_MMU # fork - in the application + help + Fast, free and portable MPEG audio player for Unix. It + supports MPEG 1.0/2.0 layers 1, 2 and 3. + + http://www.mpg123.de/ diff --git a/buildroot/package/mpg123/mpg123.hash b/buildroot/package/mpg123/mpg123.hash new file mode 100644 index 0000000..22db5bc --- /dev/null +++ b/buildroot/package/mpg123/mpg123.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/mpg123/files/mpg123/1.25.10/ +sha1 604784ddbcfe282bffdc595d1d45c677c7cf381f mpg123-1.25.10.tar.bz2 +md5 ea32caa61d41d8be797f0b04a1b43ad9 mpg123-1.25.10.tar.bz2 +# Locally calculated +sha256 6c1337aee2e4bf993299851c70b7db11faec785303cfca3a5c3eb5f329ba7023 mpg123-1.25.10.tar.bz2 +# License file +sha256 f40e0dd86b27b52e429b693a87b3ca63ae0a98a4d142e77207aa6bdf1db7a295 COPYING diff --git a/buildroot/package/mpg123/mpg123.mk b/buildroot/package/mpg123/mpg123.mk new file mode 100644 index 0000000..dd2d39d --- /dev/null +++ b/buildroot/package/mpg123/mpg123.mk @@ -0,0 +1,84 @@ +################################################################################ +# +# mpg123 +# +################################################################################ + +MPG123_VERSION = 1.25.10 +MPG123_SOURCE = mpg123-$(MPG123_VERSION).tar.bz2 +MPG123_SITE = http://downloads.sourceforge.net/project/mpg123/mpg123/$(MPG123_VERSION) +MPG123_CONF_OPTS = --disable-lfs-alias +MPG123_INSTALL_STAGING = YES +MPG123_LICENSE = LGPL-2.1 +MPG123_LICENSE_FILES = COPYING +MPG123_DEPENDENCIES = host-pkgconf + +MPG123_CPU = $(if $(BR2_SOFT_FLOAT),generic_nofpu,generic_fpu) + +ifeq ($(BR2_aarch64),y) +MPG123_CPU = aarch64 +endif + +ifeq ($(BR2_arm),y) +ifeq ($(or $(BR2_ARM_CPU_HAS_NEON),$(BR2_ARM_CPU_HAS_VFPV2)),y) +MPG123_CPU = arm_fpu +else +MPG123_CPU = arm_nofpu +endif +endif + +ifeq ($(BR2_i386),y) +MPG123_CPU = x86 +endif + +ifeq ($(BR2_powerpc),y) +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +MPG123_CPU = altivec +endif +ifeq ($(BR2_SOFT_FLOAT),y) +MPG123_CPU = ppc_nofpu +endif +endif # powerpc + +ifeq ($(BR2_x86_64),y) +MPG123_CPU = x86-64 +endif + +MPG123_CONF_OPTS += --with-cpu=$(MPG123_CPU) + +MPG123_AUDIO = dummy oss + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +MPG123_AUDIO += portaudio +MPG123_CONF_OPTS += --with-default-audio=portaudio +MPG123_DEPENDENCIES += portaudio +# configure script does NOT use pkg-config to figure out how to link +# with portaudio, breaking static linking as portaudio uses pthreads +MPG123_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs portaudio-2.0`" +endif + +ifeq ($(BR2_PACKAGE_SDL),y) +MPG123_AUDIO += sdl +MPG123_CONF_OPTS += --with-default-audio=sdl +MPG123_DEPENDENCIES += sdl +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +MPG123_AUDIO += alsa +MPG123_CONF_OPTS += --with-default-audio=alsa +MPG123_DEPENDENCIES += alsa-lib +# configure script does NOT use pkg-config to figure out how to link +# with alsa, breaking static linking as alsa uses pthreads +MPG123_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs alsa`" +endif + +MPG123_CONF_OPTS += --with-audio=$(subst $(space),$(comma),$(MPG123_AUDIO)) + +# output modules are loaded with dlopen() +ifeq ($(BR2_STATIC_LIBS),y) +MPG123_CONF_OPTS += --disable-modules +else +MPG123_CONF_OPTS += --enable-modules +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch b/buildroot/package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch new file mode 100644 index 0000000..6a6f467 --- /dev/null +++ b/buildroot/package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch @@ -0,0 +1,40 @@ +From d858ce52d1971cb4e8500b0ebc0472fdae4686ec Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 7 May 2017 23:12:04 +0200 +Subject: [PATCH] mpn/arm/udiv.asm: workaround binutils bug #14887 + +Old binutils versions are affected by bug #14887, +https://sourceware.org/bugzilla/show_bug.cgi?id=14887, which causes a +build failure when a register specification is surrounded by +whitespaces. Removing those whitespaces works around the issue. + +Signed-off-by: Thomas Petazzoni +--- + mpn/arm/udiv.asm | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mpn/arm/udiv.asm b/mpn/arm/udiv.asm +index 25197a6..ed11eb3 100644 +--- a/mpn/arm/udiv.asm ++++ b/mpn/arm/udiv.asm +@@ -50,7 +50,7 @@ L(oop): divstep(n1,n0,d) + teq r12, #0 + bne L(oop) + +- str n1, [ rem_ptr ] C store remainder ++ str n1, [rem_ptr] C store remainder + adc r0, n0, n0 C quotient: add last carry from divstep + mov pc, lr + +@@ -89,7 +89,7 @@ L(oop2): + addcs n0, n0, #1 C adjust quotient + + L(_even_divisor): +- str n1, [ rem_ptr ] C store remainder ++ str n1, [rem_ptr] C store remainder + mov r0, n0 C quotient + ldmfd sp!, { r8, pc } + EPILOGUE(mpn_udiv_qrnnd) +-- +2.7.4 + diff --git a/buildroot/package/mpir/Config.in b/buildroot/package/mpir/Config.in new file mode 100644 index 0000000..da4cc9f --- /dev/null +++ b/buildroot/package/mpir/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MPIR + bool "mpir" + select BR2_PACKAGE_GMP + help + MPIR is a highly optimised library for bignum arithmetic + forked from the GMP bignum library. + + http://www.mpir.org/ diff --git a/buildroot/package/mpir/mpir.hash b/buildroot/package/mpir/mpir.hash new file mode 100644 index 0000000..8320337 --- /dev/null +++ b/buildroot/package/mpir/mpir.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 52f63459cf3f9478859de29e00357f004050ead70b45913f2c2269d9708675bb mpir-3.0.0.tar.bz2 diff --git a/buildroot/package/mpir/mpir.mk b/buildroot/package/mpir/mpir.mk new file mode 100644 index 0000000..91f704d --- /dev/null +++ b/buildroot/package/mpir/mpir.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# mpir +# +################################################################################ + +MPIR_VERSION = 3.0.0 +MPIR_SITE = http://www.mpir.org +MPIR_SOURCE = mpir-$(MPIR_VERSION).tar.bz2 +MPIR_LICENSE = LGPL-3.0+ +MPIR_LICENSE_FILES = COPYING.LIB +MPIR_INSTALL_STAGING = YES +MPIR_DEPENDENCIES = gmp host-yasm + +ifeq ($(BR2_MIPS_NABI32),y) +MPIR_CONF_OPTS += ABI=n32 +endif + +ifeq ($(BR2_MIPS_NABI64),y) +MPIR_CONF_OPTS += ABI=64 +endif + +# The optimized ARM assembly code uses ARM-only (i.e not Thumb1/2 +# compatible) instructions. +ifeq ($(BR2_arm)$(BR2_armeb):$(BR2_ARM_CPU_HAS_ARM),y:) +MPIR_CONF_ENV += MPN_PATH="generic" +endif + +# Optimized mips32/mips64 code not suitable for mips32r6/mips64r6 +ifeq ($(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y) +MPIR_CONF_ENV += MPN_PATH="generic" +endif + +# Optimized powerpc64 code is not suitable for powerpc64le +ifeq ($(BR2_powerpc64le),y) +MPIR_CONF_ENV += MPN_PATH="generic" +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/mplayer/0001-disable-install-strip.patch b/buildroot/package/mplayer/0001-disable-install-strip.patch new file mode 100644 index 0000000..1bd1dc0 --- /dev/null +++ b/buildroot/package/mplayer/0001-disable-install-strip.patch @@ -0,0 +1,23 @@ +Disable stripping on installation + +Using the -s option of install does not work, as it uses the host +strip instead of the cross strip. So, get rid of it, and let Buildroot +handle the stripping. + +[Vincent: tweak patch for version 1.2] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Vicente Olivert Riera + +diff -Nrua a/configure b/configure +--- a/configure 2015-10-02 21:29:04.000000000 +0100 ++++ b/configure 2015-10-06 13:28:37.245349592 +0100 +@@ -2780,7 +2780,7 @@ + + + # Checking for CFLAGS +-_install_strip="-s" ++_install_strip= + if test -z "$CFLAGS" || test "$_profile" != "" || test "$_debug" != ""; then + if test "$cc_vendor" = "intel" ; then + CFLAGS="-O2 $_march $_mcpu $_pipe -fomit-frame-pointer" diff --git a/buildroot/package/mplayer/0002-mpdemux-live555-async-interface.patch b/buildroot/package/mplayer/0002-mpdemux-live555-async-interface.patch new file mode 100644 index 0000000..5a62a18 --- /dev/null +++ b/buildroot/package/mplayer/0002-mpdemux-live555-async-interface.patch @@ -0,0 +1,126 @@ +From d3195ea13f4a9aae546ff996e53681349a1a3cdb Mon Sep 17 00:00:00 2001 +From: sherpya +Date: Fri, 14 Jun 2013 05:25:38 +0200 +Subject: [PATCH 25/27] mpdemux: live555 async interface + +From: https://raw.github.com/sherpya/mplayer-be/master/patches/mp/0025-mpdemux-live555-async-interface.patch + +Adjust live555 interface code for modern versions of live555. + +Signed-off-by: Peter Korsgaard +--- + libmpdemux/demux_rtp.cpp | 51 ++++++++++++++++++++++++++++++++---------------- + 2 files changed, 35 insertions(+), 22 deletions(-) + +diff --git a/libmpdemux/demux_rtp.cpp b/libmpdemux/demux_rtp.cpp +index ad7a7f1..05d06e0 100644 +--- a/libmpdemux/demux_rtp.cpp ++++ b/libmpdemux/demux_rtp.cpp +@@ -19,8 +19,6 @@ + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +-#define RTSPCLIENT_SYNCHRONOUS_INTERFACE 1 +- + extern "C" { + // on MinGW, we must include windows.h before the things it conflicts + #ifdef __MINGW32__ // with. they are each protected from +@@ -94,15 +92,6 @@ struct RTPState { + + extern "C" char* network_username; + extern "C" char* network_password; +-static char* openURL_rtsp(RTSPClient* client, char const* url) { +- // If we were given a user name (and optional password), then use them: +- if (network_username != NULL) { +- char const* password = network_password == NULL ? "" : network_password; +- return client->describeWithPassword(url, network_username, password); +- } else { +- return client->describeURL(url); +- } +-} + + static char* openURL_sip(SIPClient* client, char const* url) { + // If we were given a user name (and optional password), then use them: +@@ -118,6 +107,19 @@ static char* openURL_sip(SIPClient* client, char const* url) { + extern AVCodecContext *avcctx; + #endif + ++static char fWatchVariableForSyncInterface; ++static char* fResultString; ++static int fResultCode; ++ ++static void responseHandlerForSyncInterface(RTSPClient* rtspClient, int responseCode, char* responseString) { ++ // Set result values: ++ fResultCode = responseCode; ++ fResultString = responseString; ++ ++ // Signal a break from the event loop (thereby returning from the blocking command): ++ fWatchVariableForSyncInterface = ~0; ++} ++ + extern "C" int audio_id, video_id, dvdsub_id; + extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { + Boolean success = False; +@@ -146,13 +148,19 @@ extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { + rtsp_transport_http = demuxer->stream->streaming_ctrl->url->port; + rtsp_transport_tcp = 1; + } +- rtspClient = RTSPClient::createNew(*env, verbose, "MPlayer", rtsp_transport_http); ++ rtspClient = RTSPClient::createNew(*env, url, verbose, "MPlayer", rtsp_transport_http); + if (rtspClient == NULL) { + fprintf(stderr, "Failed to create RTSP client: %s\n", + env->getResultMsg()); + break; + } +- sdpDescription = openURL_rtsp(rtspClient, url); ++ fWatchVariableForSyncInterface = 0; ++ rtspClient->sendDescribeCommand(responseHandlerForSyncInterface); ++ env->taskScheduler().doEventLoop(&fWatchVariableForSyncInterface); ++ if (fResultCode == 0) ++ sdpDescription = fResultString; ++ else ++ delete[] fResultString; + } else { // SIP + unsigned char desiredAudioType = 0; // PCMU (use 3 for GSM) + sipClient = SIPClient::createNew(*env, desiredAudioType, NULL, +@@ -236,8 +244,12 @@ extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { + + if (rtspClient != NULL) { + // Issue a RTSP "SETUP" command on the chosen subsession: +- if (!rtspClient->setupMediaSubsession(*subsession, False, +- rtsp_transport_tcp)) break; ++ fWatchVariableForSyncInterface = 0; ++ rtspClient->sendSetupCommand(*subsession, responseHandlerForSyncInterface, False, rtsp_transport_tcp); ++ env->taskScheduler().doEventLoop(&fWatchVariableForSyncInterface); ++ delete[] fResultString; ++ if (fResultCode != 0) break; ++ + if (!strcmp(subsession->mediumName(), "audio")) + audiofound = 1; + if (!strcmp(subsession->mediumName(), "video")) +@@ -248,7 +260,11 @@ extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { + + if (rtspClient != NULL) { + // Issue a RTSP aggregate "PLAY" command on the whole session: +- if (!rtspClient->playMediaSession(*mediaSession)) break; ++ fWatchVariableForSyncInterface = 0; ++ rtspClient->sendPlayCommand(*mediaSession, responseHandlerForSyncInterface); ++ env->taskScheduler().doEventLoop(&fWatchVariableForSyncInterface); ++ delete[] fResultString; ++ if (fResultCode != 0) break; + } else if (sipClient != NULL) { + sipClient->sendACK(); // to start the stream flowing + } +@@ -637,7 +653,8 @@ static void teardownRTSPorSIPSession(RTPState* rtpState) { + MediaSession* mediaSession = rtpState->mediaSession; + if (mediaSession == NULL) return; + if (rtpState->rtspClient != NULL) { +- rtpState->rtspClient->teardownMediaSession(*mediaSession); ++ fWatchVariableForSyncInterface = 0; ++ rtpState->rtspClient->sendTeardownCommand(*mediaSession, NULL); + } else if (rtpState->sipClient != NULL) { + rtpState->sipClient->sendBYE(); + } +-- +1.8.5.2 + diff --git a/buildroot/package/mplayer/0003-configure-armv8.patch b/buildroot/package/mplayer/0003-configure-armv8.patch new file mode 100644 index 0000000..9868643 --- /dev/null +++ b/buildroot/package/mplayer/0003-configure-armv8.patch @@ -0,0 +1,43 @@ +Fix aarch64 compile by adding HAVE_ARMV8 define + +Fixes build errors seen on the buildroot autobuilders: +http://autobuild.buildroot.net/results/5f8/5f85c32eb89aac48ae8da892d9800bd13274cd3e/build-end.log + +libavutil/aarch64/cpu.c: In function 'ff_get_cpu_flags_aarch64': +libavutil/aarch64/cpu.c:25:32: error: 'HAVE_ARMV8' undeclared (first use in this function) + return AV_CPU_FLAG_ARMV8 * HAVE_ARMV8 | + +Signed-off-by: Bernd Kuhls +(patch sent upstream: + http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2016-May/073496.html) + +Index: configure +=================================================================== +--- a/configure (revision 37871) ++++ b/configure (working copy) +@@ -1445,6 +1445,8 @@ + --disable-armv6) _armv6=no ;; + --enable-armv6t2) _armv6t2=yes ;; + --disable-armv6t2) _armv6t2=no ;; ++ --enable-armv8) _armv8=yes ;; ++ --disable-armv8) _armv8=no ;; + --enable-armvfp) _armvfp=yes ;; + --disable-armvfp) _armvfp=no ;; + --enable-vfpv3) vfpv3=yes ;; +@@ -3261,7 +3263,7 @@ + echores "$_iwmmxt" + fi + +-cpuexts_all='ALTIVEC XOP AVX AVX2 FMA3 FMA4 MMX MMX2 MMXEXT AMD3DNOW AMD3DNOWEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE42 FAST_CMOV I686 FAST_CLZ ARMV5TE ARMV6 ARMV6T2 VFP VFPV3 SETEND NEON IWMMXT MMI VIS MVI' ++cpuexts_all='ALTIVEC XOP AVX AVX2 FMA3 FMA4 MMX MMX2 MMXEXT AMD3DNOW AMD3DNOWEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE42 FAST_CMOV I686 FAST_CLZ ARMV5TE ARMV6 ARMV6T2 ARMV8 VFP VFPV3 SETEND NEON IWMMXT MMI VIS MVI' + test "$_altivec" = yes && cpuexts="ALTIVEC $cpuexts" + test "$_mmx" = yes && cpuexts="MMX $cpuexts" + test "$_mmxext" = yes && cpuexts="MMX2 $cpuexts" +@@ -3285,6 +3287,7 @@ + test "$_armv5te" = yes && cpuexts="ARMV5TE $cpuexts" + test "$_armv6" = yes && cpuexts="ARMV6 $cpuexts" + test "$_armv6t2" = yes && cpuexts="ARMV6T2 $cpuexts" ++test "$_armv8" = yes && cpuexts="ARMV8 $cpuexts" + test "$_armvfp" = yes && cpuexts="VFP $cpuexts" + test "$vfpv3" = yes && cpuexts="VFPV3 $cpuexts" + test "$setend" = yes && cpuexts="SETEND $cpuexts" diff --git a/buildroot/package/mplayer/0004-configure-zlib.patch b/buildroot/package/mplayer/0004-configure-zlib.patch new file mode 100644 index 0000000..7c1b2c8 --- /dev/null +++ b/buildroot/package/mplayer/0004-configure-zlib.patch @@ -0,0 +1,30 @@ +configure: Fix compilation when zlib is missing. + +Downloaded from upstream commit: + +$ LC_ALL=C svn log -r 37816 +------------------------------------------------------------------------ +r37816 | reimar | 2016-02-28 14:39:42 +0100 (Sun, 28 Feb 2016) | 3 lines + +configure: Fix compilation when zlib is missing. + +APNG and a few other decoders also cannot be enabled without it. +------------------------------------------------------------------------ + +Signed-off-by: Bernd Kuhls + +Index: configure +=================================================================== +--- a/configure (revision 37795) ++++ b/configure (revision 37816) +@@ -6464,8 +6464,8 @@ + mplayer_encoders="$mplayer_encoders PNG_ENCODER" + else + def_zlib='#define CONFIG_ZLIB 0' +- libavdecoders=$(filter_out_component decoder 'FLASHSV FLASHSV2 PNG ZMBV ZLIB DXA EXR G2M TSCC ZEROCODEC') +- libavencoders=$(filter_out_component encoder 'FLASHSV FLASHSV2 PNG ZMBV ZLIB') ++ libavdecoders=$(filter_out_component decoder 'APNG FLASHSV FLASHSV2 PNG ZMBV ZLIB DXA EXR G2M RSCC SCREENPRESSO TDSC TSCC ZEROCODEC') ++ libavencoders=$(filter_out_component encoder 'APNG FLASHSV FLASHSV2 PNG ZMBV ZLIB') + fi + echores "$_zlib" + diff --git a/buildroot/package/mplayer/0005-tremor-ogg.patch b/buildroot/package/mplayer/0005-tremor-ogg.patch new file mode 100644 index 0000000..b4d6505 --- /dev/null +++ b/buildroot/package/mplayer/0005-tremor-ogg.patch @@ -0,0 +1,29 @@ +Fix static linking with tremor & libogg + +The order of the libraries needs to be changed to fix a bug during +static linking caught by buildroot autobuilders: + +http://autobuild.buildroot.net/results/bc9/bc98fa585399b53ea181dbaf392b93424145911d/ + +/home/test/autobuild/instance-3/output/host/usr/powerpc-buildroot-linux-uclibc/sysroot/usr/lib/libvorbisidec.a(synthesis.o): In function `_vorbis_synthesis1': +synthesis.c:(.text+0x90): undefined reference to `oggpack_readinit' +synthesis.c:(.text+0x9c): undefined reference to `oggpack_read' +[...] + +Signed-off-by: Bernd Kuhls +(patch sent upstream: + http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2016-July/073501.html) + +Index: configure +=================================================================== +--- a/configure (revision 37873) ++++ b/configure (working copy) +@@ -6629,7 +6629,7 @@ + def_tremor='#define CONFIG_TREMOR 1' + codecmodules="tremor $codecmodules" + res_comment="integer libvorbis" +- extra_ldflags="$extra_ldflags -logg -lvorbisidec" ++ extra_ldflags="$extra_ldflags -lvorbisidec -logg" + elif test "$_libvorbis" = yes ; then + _vorbis=yes + def_vorbis='#define CONFIG_OGGVORBIS 1' diff --git a/buildroot/package/mplayer/0006-musl-ldt.patch b/buildroot/package/mplayer/0006-musl-ldt.patch new file mode 100644 index 0000000..8165f6f --- /dev/null +++ b/buildroot/package/mplayer/0006-musl-ldt.patch @@ -0,0 +1,22 @@ +Fixes musl build error + +loader/ldt_keeper.o: In function `Setup_LDT_Keeper': +ldt_keeper.c:(.text+0xab): undefined reference to `modify_ldt' + +Downloaded from +https://github.com/dimkr/rlsd2/blob/master/rules/mplayer/musl.patch + +Signed-off-by: Bernd Kuhls + +diff -rup MPlayer-1.1.1-orig/loader/ldt_keeper.c MPlayer-1.1.1/loader/ldt_keeper.c +--- MPlayer-1.1.1-orig/loader/ldt_keeper.c 2015-04-23 15:07:09.580805888 +0300 ++++ MPlayer-1.1.1/loader/ldt_keeper.c 2015-04-23 15:08:07.736807270 +0300 +@@ -47,7 +47,7 @@ + #if defined(__GLIBC__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 0)) + _syscall3( int, modify_ldt, int, func, void *, ptr, unsigned long, bytecount ); + #else +-int modify_ldt(int func, void *ptr, unsigned long bytecount); ++#define modify_ldt(func, ptr, bytecount) syscall(__NR_modify_ldt, func, ptr, bytecount) + #endif + #else + #if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) diff --git a/buildroot/package/mplayer/0007-fixmmx.patch b/buildroot/package/mplayer/0007-fixmmx.patch new file mode 100644 index 0000000..9634a3b --- /dev/null +++ b/buildroot/package/mplayer/0007-fixmmx.patch @@ -0,0 +1,77 @@ +fix compilation failure with MMX + +Fixes +libmpcodecs/vf_fspp.c: In function 'column_fidct_c': +libmpcodecs/vf_fspp.c:750:5: error: unknown type name 'int_simd16_t' +libmpcodecs/vf_fspp.c:751:5: error: unknown type name 'int_simd16_t' +libmpcodecs/vf_fspp.c:752:5: error: unknown type name 'int_simd16_t' +libmpcodecs/vf_fspp.c:753:5: error: unknown type name 'int_simd16_t' +libmpcodecs/vf_fspp.c:789:18: error: 'FIX_0_707106781' undeclared (first use in this function) +libmpcodecs/vf_fspp.c:789:18: note: each undeclared identifier is reported only once for each function it appears in +libmpcodecs/vf_fspp.c:804:21: error: 'FIX_1_414213562_A' undeclared (first use in this function) +libmpcodecs/vf_fspp.c:817:18: error: 'FIX_0_382683433' undeclared (first use in this function) +libmpcodecs/vf_fspp.c:818:18: error: 'FIX_0_541196100' undeclared (first use in this function) +libmpcodecs/vf_fspp.c:819:18: error: 'FIX_1_306562965' undeclared (first use in this function) +libmpcodecs/vf_fspp.c:844:21: error: 'FIX_1_414213562' undeclared (first use in this function) +libmpcodecs/vf_fspp.c:845:21: error: 'FIX_1_847759065' undeclared (first use in this function) +libmpcodecs/vf_fspp.c:846:21: error: 'FIX_1_082392200' undeclared (first use in this function) +libmpcodecs/vf_fspp.c:847:21: error: 'FIX_2_613125930' undeclared (first use in this function) + +found using this defconfig after fixing the original bug: +http://autobuild.buildroot.net/results/642/6422adeef19ec547c7bc3f8ad3b0d51702015240/ + +Downloaded from upstream mailinglist: +http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2016-May/073488.html + +Signed-off-by: Bernd Kuhls + +diff -uNr MPlayer-1.3.0.org/libmpcodecs/vf_fspp.c MPlayer-1.3.0/libmpcodecs/vf_fspp.c +--- MPlayer-1.3.0.org/libmpcodecs/vf_fspp.c 2015-10-17 21:44:31.000000000 +0200 ++++ MPlayer-1.3.0/libmpcodecs/vf_fspp.c 2017-04-10 21:26:57.771819064 +0200 +@@ -173,7 +173,6 @@ + #define store_slice_s store_slice_c + #define store_slice2_s store_slice2_c + #define mul_thrmat_s mul_thrmat_c +-#define column_fidct_s column_fidct_c + #define row_idct_s row_idct_c + #define row_fdct_s row_fdct_c + +@@ -393,7 +392,6 @@ + ); + } + +-static void column_fidct_mmx(int16_t* thr_adr, int16_t *data, int16_t *output, int cnt); + static void row_idct_mmx(int16_t* workspace, + int16_t* output_adr, int output_stride, int cnt); + static void row_fdct_mmx(int16_t *data, const uint8_t *pixels, int line_size, int cnt); +@@ -401,11 +399,18 @@ + #define store_slice_s store_slice_mmx + #define store_slice2_s store_slice2_mmx + #define mul_thrmat_s mul_thrmat_mmx +-#define column_fidct_s column_fidct_mmx + #define row_idct_s row_idct_mmx + #define row_fdct_s row_fdct_mmx + #endif // HAVE_MMX_INLINE + ++#if !HAVE_MMXEXT_INLINE ++static void column_fidct_c(int16_t* thr_adr, int16_t *data, int16_t *output, int cnt); ++#define column_fidct_s column_fidct_c ++#else ++static void column_fidct_mmx(int16_t* thr_adr, int16_t *data, int16_t *output, int cnt); ++#define column_fidct_s column_fidct_mmx ++#endif ++ + static void filter(struct vf_priv_s *p, uint8_t *dst, uint8_t *src, + int dst_stride, int src_stride, + int width, int height, +@@ -728,7 +733,9 @@ + DECLARE_ASM_CONST(8, uint64_t, MM_DESCALE_RND)=C64(4); + DECLARE_ASM_CONST(8, uint64_t, MM_2)=C64(2); + +-#else /* !HAVE_MMXEXT_INLINE */ ++#endif /* !HAVE_MMX_INLINE */ ++ ++#if !HAVE_MMX_INLINE || !HAVE_MMXEXT_INLINE + + typedef int32_t int_simd16_t; + static const int16_t FIX_0_382683433=FIX(0.382683433, 14); diff --git a/buildroot/package/mplayer/Config.in b/buildroot/package/mplayer/Config.in new file mode 100644 index 0000000..15c903a --- /dev/null +++ b/buildroot/package/mplayer/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS + bool + default y + # Those architectures are not supported by MPlayer + depends on !(BR2_bfin || BR2_sh2a || BR2_sh4a || BR2_sh4aeb \ + || BR2_m68k || BR2_microblaze || BR2_nios2 || BR2_or1k) + # Broken support for +Date: Wed, 20 Apr 2016 09:39:30 -0300 +Subject: [PATCH] wscript: don't check for fork() on POSIX checks + +It's not being used, and in fact prevents mpv from being built in nommu +architectures (cortex M, blackfin, ...) + +Signed-off-by: Gustavo Zacarias +--- +Status: pull request https://github.com/mpv-player/mpv/pull/3068 + + wscript | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/wscript b/wscript +index a4ffce6..40328e4 100644 +--- a/wscript ++++ b/wscript +@@ -127,7 +127,7 @@ main_dependencies = [ + 'desc': 'POSIX environment', + # This should be good enough. + 'func': check_statement(['poll.h', 'unistd.h', 'sys/mman.h'], +- 'struct pollfd pfd; poll(&pfd, 1, 0); fork(); int f[2]; pipe(f); munmap(f,0)'), ++ 'struct pollfd pfd; poll(&pfd, 1, 0); int f[2]; pipe(f); munmap(f,0)'), + }, { + 'name': 'posix-or-mingw', + 'desc': 'development environment', +-- +2.7.3 + diff --git a/buildroot/package/mpv/0002-fix-powerpc64-altivec.patch b/buildroot/package/mpv/0002-fix-powerpc64-altivec.patch new file mode 100644 index 0000000..45983fe --- /dev/null +++ b/buildroot/package/mpv/0002-fix-powerpc64-altivec.patch @@ -0,0 +1,32 @@ +Subject: [PATCH] Work around bool type redefinition by altivec + +On powerpc64le, the SDL header may include altivec.h and this +(combined with -std=c99) will cause a compile failure due to bool +being redefined as a vector type. + +Adjust the compiler flags to add -std=gnu99 (which is compatible with +altivec) when using gcc. The generic flag '-std=c99' is left in place for other +compilers (in the gcc case it is overridden by the (later) gnu flag). + +Signed-off-by: Sam Bobroff +--- + waftools/detections/compiler.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/waftools/detections/compiler.py b/waftools/detections/compiler.py +index 5bbba87..50836a2 100644 +--- a/waftools/detections/compiler.py ++++ b/waftools/detections/compiler.py +@@ -43,7 +43,8 @@ def __add_gcc_flags__(ctx): + "-Wno-switch", "-Wparentheses", "-Wpointer-arith", + "-Wno-pointer-sign", + # GCC bug 66425 +- "-Wno-unused-result"] ++ "-Wno-unused-result", ++ "-std=gnu99"] + + def __add_clang_flags__(ctx): + ctx.env.CFLAGS += ["-Wno-logical-op-parentheses", "-fcolor-diagnostics", +-- +2.10.0.297.gf6727b0 + diff --git a/buildroot/package/mpv/0003-rpi-fix-linking-errors.patch b/buildroot/package/mpv/0003-rpi-fix-linking-errors.patch new file mode 100644 index 0000000..0e65a5a --- /dev/null +++ b/buildroot/package/mpv/0003-rpi-fix-linking-errors.patch @@ -0,0 +1,90 @@ +From fe482a600d507dc7ce77f6d154a9e8b395f74fdd Mon Sep 17 00:00:00 2001 +From: Mahyar Koshkouei +Date: Tue, 24 Oct 2017 09:47:38 +0100 +Subject: [PATCH] rpi: fix linking errors + +Fixes linking issues when compiling with Raspberry Pi support. + +Signed-off-by: Mahyar Koshkouei +--- +Status: pull request https://github.com/mpv-player/mpv/pull/4883 +--- + waftools/checks/custom.py | 26 +++++++++++++++++++++++++- + wscript | 18 +----------------- + 2 files changed, 26 insertions(+), 18 deletions(-) + +diff --git a/waftools/checks/custom.py b/waftools/checks/custom.py +index d8065a3..9086795 100644 +--- a/waftools/checks/custom.py ++++ b/waftools/checks/custom.py +@@ -4,7 +4,7 @@ from waflib import Utils + import os + + __all__ = ["check_pthreads", "check_iconv", "check_lua", +- "check_cocoa", "check_openal"] ++ "check_cocoa", "check_openal", "check_rpi"] + + pthreads_program = load_fragment('pthreads.c') + +@@ -103,3 +103,27 @@ def check_openal(ctx, dependency_identifier): + if fn(ctx, dependency_identifier): + return True + return False ++ ++def check_rpi(ctx, dependency_identifier): ++ # We need MMAL/bcm_host/dispmanx APIs. ++ # Upstream keeps pkgconfig files in '/opt/vc/lib/pkgconfig'. ++ # See https://github.com/raspberrypi/userland/issues/245 ++ # PKG_CONFIG_SYSROOT_DIR helps with cross compilation. ++ prev_pkg_path = os.getenv('PKG_CONFIG_PATH', '') ++ os.environ['PKG_CONFIG_PATH'] = os.pathsep.join( ++ filter(None, [os.path.join(os.getenv('PKG_CONFIG_SYSROOT_DIR', '/'), ++ 'opt/vc/lib/pkgconfig'), ++ prev_pkg_path])) ++ ++ checks = [ ++ # We still need all OpenGL symbols, because the vo_opengl code is ++ # generic and supports anything from GLES2/OpenGL 2.1 to OpenGL 4 core. ++ check_pkg_config('bcm_host', uselib_store='bcm_host'), ++ check_pkg_config('egl'), ++ check_pkg_config('glesv2'), ++ check_cc(lib=['mmal_core', 'mmal_util', 'mmal_vc_client'], use=['bcm_host']), ++ ] ++ ++ ret = all((fn(ctx, dependency_identifier) for fn in checks)) ++ os.environ['PKG_CONFIG_PATH'] = prev_pkg_path ++ return ret +diff --git a/wscript b/wscript +index 9d88588..84e5f2e 100644 +--- a/wscript ++++ b/wscript +@@ -732,25 +732,9 @@ video_output_features = [ + 'desc': 'Android support', + 'func': check_statement('android/api-level.h', '(void)__ANDROID__'), # arbitrary android-specific header + }, { +- # We need MMAL/bcm_host/dispmanx APIs. Also, most RPI distros require +- # every project to hardcode the paths to the include directories. Also, +- # these headers are so broken that they spam tons of warnings by merely +- # including them (compensate with -isystem and -fgnu89-inline). + 'name': '--rpi', + 'desc': 'Raspberry Pi support', +- 'func': compose_checks( +- check_cc(cflags="-isystem/opt/vc/include/ "+ +- "-isystem/opt/vc/include/interface/vcos/pthreads " + +- "-isystem/opt/vc/include/interface/vmcs_host/linux " + +- "-fgnu89-inline", +- linkflags="-L/opt/vc/lib", +- header_name="bcm_host.h", +- lib=['mmal_core', 'mmal_util', 'mmal_vc_client', 'bcm_host']), +- # We still need all OpenGL symbols, because the vo_opengl code is +- # generic and supports anything from GLES2/OpenGL 2.1 to OpenGL 4 core. +- check_cc(lib="EGL"), +- check_cc(lib="GLESv2"), +- ), ++ 'func': check_rpi, + } , { + 'name': '--ios-gl', + 'desc': 'iOS OpenGL ES hardware decoding interop support', +-- +2.14.2 + diff --git a/buildroot/package/mpv/0004-libva20.patch b/buildroot/package/mpv/0004-libva20.patch new file mode 100644 index 0000000..349dd3c --- /dev/null +++ b/buildroot/package/mpv/0004-libva20.patch @@ -0,0 +1,93 @@ +From 2ecf240b1cd20875991a5b18efafbe799864ff7f Mon Sep 17 00:00:00 2001 +From: Mark Thompson +Date: Mon, 9 Oct 2017 20:10:26 +0100 +Subject: [PATCH] vaapi: Use libva2 message callbacks + +They are no longer global, so they work vaguely sensibly. + +Downloaded from upstream commit: +https://github.com/mpv-player/mpv/commit/2ecf240b1cd20875991a5b18efafbe799864ff7f + +Signed-off-by: Bernd Kuhls +--- + video/vaapi.c | 32 +++++++++++++++++++++++++++++--- + 1 file changed, 29 insertions(+), 3 deletions(-) + +diff --git a/video/vaapi.c b/video/vaapi.c +index 6bedbbaa18..3b1cb9cc41 100644 +--- a/video/vaapi.c ++++ b/video/vaapi.c +@@ -40,9 +40,27 @@ int va_get_colorspace_flag(enum mp_csp csp) + return 0; + } + +-// VA message callbacks are global and do not have a context parameter, so it's +-// impossible to know from which VADisplay they originate. Try to route them +-// to existing mpv/libmpv instances within this process. ++#if VA_CHECK_VERSION(1, 0, 0) ++static void va_message_callback(void *context, const char *msg, int mp_level) ++{ ++ struct mp_vaapi_ctx *res = context; ++ mp_msg(res->log, mp_level, "libva: %s", msg); ++} ++ ++static void va_error_callback(void *context, const char *msg) ++{ ++ va_message_callback(context, msg, MSGL_ERR); ++} ++ ++static void va_info_callback(void *context, const char *msg) ++{ ++ va_message_callback(context, msg, MSGL_V); ++} ++#else ++// Pre-libva2 VA message callbacks are global and do not have a context ++// parameter, so it's impossible to know from which VADisplay they ++// originate. Try to route them to existing mpv/libmpv instances within ++// this process. + static pthread_mutex_t va_log_mutex = PTHREAD_MUTEX_INITIALIZER; + static struct mp_vaapi_ctx **va_mpv_clients; + static int num_va_mpv_clients; +@@ -77,6 +95,7 @@ static void va_info_callback(const char *msg) + { + va_message_callback(msg, MSGL_V); + } ++#endif + + static void open_lavu_vaapi_device(struct mp_vaapi_ctx *ctx) + { +@@ -108,6 +127,10 @@ struct mp_vaapi_ctx *va_initialize(VADisplay *display, struct mp_log *plog, + }, + }; + ++#if VA_CHECK_VERSION(1, 0, 0) ++ vaSetErrorCallback(display, va_error_callback, res); ++ vaSetInfoCallback(display, va_info_callback, res); ++#else + pthread_mutex_lock(&va_log_mutex); + MP_TARRAY_APPEND(NULL, va_mpv_clients, num_va_mpv_clients, res); + pthread_mutex_unlock(&va_log_mutex); +@@ -118,6 +141,7 @@ struct mp_vaapi_ctx *va_initialize(VADisplay *display, struct mp_log *plog, + vaSetErrorCallback(va_error_callback); + vaSetInfoCallback(va_info_callback); + #endif ++#endif + + int major, minor; + int status = vaInitialize(display, &major, &minor); +@@ -154,6 +178,7 @@ void va_destroy(struct mp_vaapi_ctx *ctx) + if (ctx->destroy_native_ctx) + ctx->destroy_native_ctx(ctx->native_ctx); + ++#if !VA_CHECK_VERSION(1, 0, 0) + pthread_mutex_lock(&va_log_mutex); + for (int n = 0; n < num_va_mpv_clients; n++) { + if (va_mpv_clients[n] == ctx) { +@@ -164,6 +189,7 @@ void va_destroy(struct mp_vaapi_ctx *ctx) + if (num_va_mpv_clients == 0) + TA_FREEP(&va_mpv_clients); // avoid triggering leak detectors + pthread_mutex_unlock(&va_log_mutex); ++#endif + + talloc_free(ctx); + } diff --git a/buildroot/package/mpv/Config.in b/buildroot/package/mpv/Config.in new file mode 100644 index 0000000..ce6f367 --- /dev/null +++ b/buildroot/package/mpv/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_MPV + bool "mpv" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8 + # ARC toolchain issue + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_SWSCALE + select BR2_PACKAGE_ZLIB + # Select xkbcommon for wayland to avoid being mysterious + select BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_WAYLAND + # Select all necessary X11 dependencies if X.org is enabled + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXINERAMA if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_XORG7 + help + mpv is a fork of mplayer2 and MPlayer. It shares some features + with the former projects while introducing many more. + + https://mpv.io/ + +comment "mpv needs a toolchain w/ threads, gcc >= 4.5" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8 + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC diff --git a/buildroot/package/mpv/mpv.hash b/buildroot/package/mpv/mpv.hash new file mode 100644 index 0000000..1dac3a4 --- /dev/null +++ b/buildroot/package/mpv/mpv.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2ad104d83fd3b2b9457716615acad57e479fd1537b8fc5e37bfe9065359b50be v0.27.2.tar.gz diff --git a/buildroot/package/mpv/mpv.mk b/buildroot/package/mpv/mpv.mk new file mode 100644 index 0000000..f38a6b9 --- /dev/null +++ b/buildroot/package/mpv/mpv.mk @@ -0,0 +1,219 @@ +################################################################################ +# +# mpv +# +################################################################################ + +MPV_VERSION = 0.27.2 +MPV_SITE = https://github.com/mpv-player/mpv/archive +MPV_SOURCE = v$(MPV_VERSION).tar.gz +MPV_DEPENDENCIES = \ + host-pkgconf ffmpeg zlib \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) +MPV_LICENSE = GPL-2.0+ +MPV_LICENSE_FILES = LICENSE + +MPV_NEEDS_EXTERNAL_WAF = YES + +# Some of these options need testing and/or tweaks +MPV_CONF_OPTS = \ + --prefix=/usr \ + --disable-android \ + --disable-caca \ + --disable-cdda \ + --disable-cocoa \ + --disable-coreaudio \ + --disable-cuda-hwaccel \ + --disable-libv4l2 \ + --disable-opensles \ + --disable-rsound \ + --disable-rubberband \ + --disable-uchardet \ + --disable-vapoursynth \ + --disable-vapoursynth-lazy \ + --disable-vdpau \ + --disable-mali-fbdev + +# ALSA support requires pcm+mixer +ifeq ($(BR2_PACKAGE_ALSA_LIB_MIXER)$(BR2_PACKAGE_ALSA_LIB_PCM),yy) +MPV_CONF_OPTS += --enable-alsa +MPV_DEPENDENCIES += alsa-lib +else +MPV_CONF_OPTS += --disable-alsa +endif + +# GBM support is provided by mesa3d when EGL=y +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) +MPV_CONF_OPTS += --enable-gbm +MPV_DEPENDENCIES += mesa3d +else +MPV_CONF_OPTS += --disable-gbm +endif + +# jack support +# It also requires 64-bit sync intrinsics +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8)$(BR2_PACKAGE_JACK2),yy) +MPV_CONF_OPTS += --enable-jack +MPV_DEPENDENCIES += jack2 +else +MPV_CONF_OPTS += --disable-jack +endif + +# jpeg support +ifeq ($(BR2_PACKAGE_JPEG),y) +MPV_CONF_OPTS += --enable-jpeg +MPV_DEPENDENCIES += jpeg +else +MPV_CONF_OPTS += --disable-jpeg +endif + +# lcms2 support +ifeq ($(BR2_PACKAGE_LCMS2),y) +MPV_CONF_OPTS += --enable-lcms2 +MPV_DEPENDENCIES += lcms2 +else +MPV_CONF_OPTS += --disable-lcms2 +endif + +# libarchive support +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +MPV_CONF_OPTS += --enable-libarchive +MPV_DEPENDENCIES += libarchive +else +MPV_CONF_OPTS += --disable-libarchive +endif + +# libass subtitle support +ifeq ($(BR2_PACKAGE_LIBASS),y) +MPV_CONF_OPTS += --enable-libass +MPV_DEPENDENCIES += libass +else +MPV_CONF_OPTS += --disable-libass +endif + +# bluray support +ifeq ($(BR2_PACKAGE_LIBBLURAY),y) +MPV_CONF_OPTS += --enable-libbluray +MPV_DEPENDENCIES += libbluray +else +MPV_CONF_OPTS += --disable-libbluray +endif + +# libdvdnav +ifeq ($(BR2_PACKAGE_LIBDVDNAV),y) +MPV_CONF_OPTS += --enable-dvdnav +MPV_DEPENDENCIES += libdvdnav +else +MPV_CONF_OPTS += --disable-dvdnav +endif + +# libdvdread +ifeq ($(BR2_PACKAGE_LIBDVDREAD),y) +MPV_CONF_OPTS += --enable-dvdread +MPV_DEPENDENCIES += libdvdread +else +MPV_CONF_OPTS += --disable-dvdread +endif + +# libdrm +ifeq ($(BR2_PACKAGE_LIBDRM),y) +MPV_CONF_OPTS += --enable-drm +MPV_DEPENDENCIES += libdrm +else +MPV_CONF_OPTS += --disable-drm +endif + +# LUA support, only for lua51/lua52/luajit +# This enables the controller (OSD) together with libass +ifeq ($(BR2_PACKAGE_LUA_5_1)$(BR2_PACKAGE_LUA_5_2)$(BR2_PACKAGE_LUAJIT),y) +MPV_CONF_OPTS += --enable-lua +MPV_DEPENDENCIES += luainterpreter +else +MPV_CONF_OPTS += --disable-lua +endif + +# OpenGL support +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +MPV_CONF_OPTS += --enable-gl +MPV_DEPENDENCIES += libgl +else +MPV_CONF_OPTS += --disable-gl +endif + +# pulseaudio support +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +MPV_CONF_OPTS += --enable-pulse +MPV_DEPENDENCIES += pulseaudio +else +MPV_CONF_OPTS += --disable-pulse +endif + +# samba support +ifeq ($(BR2_PACKAGE_SAMBA4),y) +MPV_CONF_OPTS += --enable-libsmbclient +MPV_DEPENDENCIES += samba4 +else +MPV_CONF_OPTS += --disable-libsmbclient +endif + +# SDL support +# Both can't be used at the same time, prefer newer API +# It also requires 64-bit sync intrinsics +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8)$(BR2_PACKAGE_SDL2),yy) +MPV_CONF_OPTS += --enable-sdl2 --disable-sdl1 +MPV_DEPENDENCIES += sdl2 +else ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_8)$(BR2_PACKAGE_SDL),yy) +MPV_CONF_OPTS += --enable-sdl1 --disable-sdl2 +MPV_DEPENDENCIES += sdl +else +MPV_CONF_OPTS += --disable-sdl1 --disable-sdl2 +endif + +# Raspberry Pi support +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +MPV_CONF_OPTS += --enable-rpi --enable-gl +MPV_DEPENDENCIES += rpi-userland +else +MPV_CONF_OPTS += --disable-rpi +endif + +# va-api support +# This requires one or more of the egl-drm, wayland, x11 backends +# For now we support wayland and x11 +ifeq ($(BR2_PACKAGE_LIBVA),y) +ifneq ($(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_XORG7),) +MPV_CONF_OPTS += --enable-vaapi +MPV_DEPENDENCIES += libva +else +MPV_CONF_OPTS += --disable-vaapi +endif +else +MPV_CONF_OPTS += --disable-vaapi +endif + +# wayland support +ifeq ($(BR2_PACKAGE_WAYLAND),y) +MPV_CONF_OPTS += --enable-wayland +MPV_DEPENDENCIES += libxkbcommon wayland +else +MPV_CONF_OPTS += --disable-wayland +endif + +# Base X11 support. Config.in ensures that if BR2_PACKAGE_XORG7 is +# enabled, xlib_libX11, xlib_libXext, xlib_libXinerama, +# xlib_libXrandr, xlib_libXScrnSaver. +ifeq ($(BR2_PACKAGE_XORG7),y) +MPV_CONF_OPTS += --enable-x11 +MPV_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXinerama xlib_libXrandr xlib_libXScrnSaver +# XVideo +ifeq ($(BR2_PACKAGE_XLIB_LIBXV),y) +MPV_CONF_OPTS += --enable-xv +MPV_DEPENDENCIES += xlib_libXv +else +MPV_CONF_OPTS += --disable-xv +endif +else +MPV_CONF_OPTS += --disable-x11 +endif + +$(eval $(waf-package)) diff --git a/buildroot/package/mraa/Config.in b/buildroot/package/mraa/Config.in new file mode 100644 index 0000000..cdd7b9e --- /dev/null +++ b/buildroot/package/mraa/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_MRAA + bool "mraa" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_arm || BR2_i386 || BR2_x86_64 + help + mraa is a C/C++ library with bindings to javascript & python + to interface with the IO on Galileo, Edison & other + platforms, with a structured and sane API where port + names/numbering matches the board that you are on. + + http://iotdk.intel.com/docs/master/mraa + +comment "mraa needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/mraa/mraa.hash b/buildroot/package/mraa/mraa.hash new file mode 100644 index 0000000..cbd70a4 --- /dev/null +++ b/buildroot/package/mraa/mraa.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e4501e6936afb426c75b7d406c1a7a27b514297f640e887de4d88a2d9687f37b mraa-v0.9.1.tar.gz diff --git a/buildroot/package/mraa/mraa.mk b/buildroot/package/mraa/mraa.mk new file mode 100644 index 0000000..42cc2e3 --- /dev/null +++ b/buildroot/package/mraa/mraa.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# mraa +# +################################################################################ + +MRAA_VERSION = v0.9.1 +MRAA_SITE = $(call github,intel-iot-devkit,mraa,$(MRAA_VERSION)) +MRAA_LICENSE = MIT +MRAA_LICENSE_FILES = COPYING +MRAA_INSTALL_STAGING = YES + +# USBPLAT only makes sense with FTDI4222, which requires the ftd2xx library, +# which doesn't exist in buildroot + +MRAA_CONF_OPTS += \ + -DBUILDSWIG=OFF \ + -DUSBPLAT=OFF \ + -DFTDI4222=OFF \ + -DIPK=OFF \ + -DRPM=OFF \ + -DENABLEEXAMPLES=OFF \ + -DBUILDTESTS=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/mrouted/0001-DVMRP-report-missing-subnet.patch b/buildroot/package/mrouted/0001-DVMRP-report-missing-subnet.patch new file mode 100644 index 0000000..023c8cf --- /dev/null +++ b/buildroot/package/mrouted/0001-DVMRP-report-missing-subnet.patch @@ -0,0 +1,35 @@ +From 687f41680d51585e9a5a135e39efee330588bea7 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Fri, 11 Sep 2015 12:49:30 -0500 +Subject: [PATCH 1/1] DVMRP report missing subnet + +Accepted upstream and will be included in 3.9.8. +https://github.com/troglobit/mrouted/commit/512af5ffe0f48ffa2ba3b45898c66c2a561a5c2d + +A subnet is missing in the DVMRP report sent to it's neighbor after +the initial probe occurs. The issue was with the traversal of a double +linked list from end to start. Once the traversing pointer reaches +the start of routing table for loop (condition) it would break and +always drop the first subnet. + +Signed-off-by: Matt Weber +--- + route.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/route.c b/route.c +index f74e601..9fe779d 100644 +--- a/route.c ++++ b/route.c +@@ -1193,7 +1193,7 @@ static int report_chunk(int which_routes, struct rtentry *start_rt, vifi_t vifi, + + p = send_buf + MIN_IP_HEADER_LEN + IGMP_MINLEN; + +- for (r = start_rt; r != routing_table; r = r->rt_prev) { ++ for (r = start_rt; r != NULL; r = r->rt_prev) { + if (which_routes == CHANGED_ROUTES && !(r->rt_flags & RTF_CHANGED)) { + nrt++; + continue; +-- +1.9.1 + diff --git a/buildroot/package/mrouted/Config.in b/buildroot/package/mrouted/Config.in new file mode 100644 index 0000000..e5d9348 --- /dev/null +++ b/buildroot/package/mrouted/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MROUTED + bool "mrouted" + depends on BR2_USE_MMU # fork() + help + An implementation of the DVMRP multicast routing protocol. + + http://github.com/troglobit/mrouted diff --git a/buildroot/package/mrouted/mrouted.hash b/buildroot/package/mrouted/mrouted.hash new file mode 100644 index 0000000..d5069e5 --- /dev/null +++ b/buildroot/package/mrouted/mrouted.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 181908f7025c5a2dee2e50d86888780469eaa9e1bd42d3eca9dfed8274aecd3d mrouted-3.9.7.tar.gz diff --git a/buildroot/package/mrouted/mrouted.mk b/buildroot/package/mrouted/mrouted.mk new file mode 100644 index 0000000..731e79e --- /dev/null +++ b/buildroot/package/mrouted/mrouted.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# mrouted +# +################################################################################ + +MROUTED_VERSION = 3.9.7 +MROUTED_SITE = $(call github,troglobit,mrouted,$(MROUTED_VERSION)) +MROUTED_DEPENDENCIES = host-bison +MROUTED_LICENSE = BSD-3-Clause +MROUTED_LICENSE_FILES = LICENSE + +define MROUTED_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_MAKE_ENV) $(@D)/configure --enable-rsrr \ + ) +endef + +define MROUTED_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define MROUTED_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) prefix=/usr DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/msgpack/Config.in b/buildroot/package/msgpack/Config.in new file mode 100644 index 0000000..b7ae35a --- /dev/null +++ b/buildroot/package/msgpack/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_MSGPACK + bool "msgpack" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + help + MessagePack is an efficient binary serialization format. + + It lets you exchange data among multiple languages like JSON + but it's faster and smaller. + + http://msgpack.org/ + +comment "msgpack needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/buildroot/package/msgpack/msgpack.hash b/buildroot/package/msgpack/msgpack.hash new file mode 100644 index 0000000..f1033ad --- /dev/null +++ b/buildroot/package/msgpack/msgpack.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 9c87f80fc651b900772deaef0ab154b63160c74d292529b5be6d06d6485d4640 msgpack-2.1.5.tar.gz diff --git a/buildroot/package/msgpack/msgpack.mk b/buildroot/package/msgpack/msgpack.mk new file mode 100644 index 0000000..38df8f5 --- /dev/null +++ b/buildroot/package/msgpack/msgpack.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# msgpack +# +################################################################################ + +MSGPACK_VERSION = 2.1.5 +MSGPACK_SITE = $(call github,msgpack,msgpack-c,cpp-$(MSGPACK_VERSION)) +MSGPACK_LICENSE = BSL-1.0 +MSGPACK_LICENSE_FILES = COPYING LICENSE_1_0.txt +MSGPACK_INSTALL_STAGING = YES +MSGPACK_CONF_OPTS = -DMSGPACK_BUILD_EXAMPLES=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +MSGPACK_CONF_OPTS += -DMSGPACK_ENABLE_SHARED=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/msmtp/Config.in b/buildroot/package/msmtp/Config.in new file mode 100644 index 0000000..46bb198 --- /dev/null +++ b/buildroot/package/msmtp/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MSMTP + bool "msmtp" + help + msmtp is an SMTP client. In the default mode, it transmits a + mail to an SMTP server (for example at a free mail provider) + which takes care of further delivery. + + http://msmtp.sourceforge.net/ diff --git a/buildroot/package/msmtp/msmtp.hash b/buildroot/package/msmtp/msmtp.hash new file mode 100644 index 0000000..10d6cea --- /dev/null +++ b/buildroot/package/msmtp/msmtp.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/msmtp/files/msmtp/1.6.6/ +md5 82b0520b57db4b2cf05333d11fb5974d msmtp-1.6.6.tar.xz +sha1 f997f40dfb3f882df837cfd9a63bd4d271dcdc41 msmtp-1.6.6.tar.xz +# Locally calculated after checking signature +# http://downloads.sourceforge.net/project/msmtp/msmtp/1.6.6/msmtp-1.6.6.tar.xz.sig +sha256 da15db1f62bd0201fce5310adb89c86188be91cd745b7cb3b62b81a501e7fb5e msmtp-1.6.6.tar.xz diff --git a/buildroot/package/msmtp/msmtp.mk b/buildroot/package/msmtp/msmtp.mk new file mode 100644 index 0000000..a1bd9e1 --- /dev/null +++ b/buildroot/package/msmtp/msmtp.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# msmtp +# +################################################################################ + +MSMTP_VERSION = 1.6.6 +MSMTP_SITE = http://downloads.sourceforge.net/project/msmtp/msmtp/$(MSMTP_VERSION) +MSMTP_SOURCE = msmtp-$(MSMTP_VERSION).tar.xz +MSMTP_DEPENDENCIES = host-pkgconf +MSMTP_CONF_OPTS = \ + --without-libidn \ + --disable-gai-idn \ + --without-libgsasl +MSMTP_LICENSE = GPL-3.0+ +MSMTP_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBSECRET),y) +MSMTP_CONF_OPTS += --with-libsecret +MSMTP_DEPENDENCIES += libsecret +else +MSMTP_CONF_OPTS += --without-libsecret +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MSMTP_CONF_OPTS += --with-ssl=openssl +MSMTP_DEPENDENCIES += openssl +ifeq ($(BR2_STATIC_LIBS),y) +# openssl uses zlib, so we need to explicitly link with it when static +MSMTP_CONF_ENV += LIBS=-lz +endif +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +MSMTP_CONF_OPTS += --with-ssl=gnutls +MSMTP_DEPENDENCIES += gnutls +else +MSMTP_CONF_OPTS += --with-ssl=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/msr-tools/Config.in b/buildroot/package/msr-tools/Config.in new file mode 100644 index 0000000..dde19f7 --- /dev/null +++ b/buildroot/package/msr-tools/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_MSR_TOOLS + bool "msr-tools" + depends on BR2_i386 || BR2_x86_64 + help + The MSR Tools project provides utilities to access x86 + processor MSRs and CPU ID directly. + + Those tools access the hardware through the + /dev/cpu//msr and /dev/cpu//cpuid devices. This + necessitates msr and cpuid support in the kernel, which + means you need a kernel compiled with configuration options + CONFIG_X86_CPUID and CONFIG_X86_MSR enabled. + + https://01.org/msr-tools diff --git a/buildroot/package/msr-tools/msr-tools.hash b/buildroot/package/msr-tools/msr-tools.hash new file mode 100644 index 0000000..18146df --- /dev/null +++ b/buildroot/package/msr-tools/msr-tools.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 9b87245ee091a798184e447066e9e0d7709b7c81f5e6ad55f2b958c1aa50c4a3 msr-tools-1.3.tar.gz diff --git a/buildroot/package/msr-tools/msr-tools.mk b/buildroot/package/msr-tools/msr-tools.mk new file mode 100644 index 0000000..bfe1a07 --- /dev/null +++ b/buildroot/package/msr-tools/msr-tools.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# msr-tools +# +################################################################################ + +MSR_TOOLS_VERSION = 1.3 +MSR_TOOLS_SITE = $(call github,01org,msr-tools,msr-tools-$(MSR_TOOLS_VERSION)) +MSR_TOOLS_LICENSE = GPL-2.0 +MSR_TOOLS_LICENSE_FILES = cpuid.c + +define MSR_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define MSR_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) install \ + sbindir="$(TARGET_DIR)/usr/sbin" +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mtd/Config.in b/buildroot/package/mtd/Config.in new file mode 100644 index 0000000..590ca7f --- /dev/null +++ b/buildroot/package/mtd/Config.in @@ -0,0 +1,211 @@ +config BR2_PACKAGE_MTD + bool "mtd, jffs2 and ubi/ubifs tools" + help + Build mtd, jffs2 and ubi/ubifs tools + + http://www.linux-mtd.infradead.org/ + +if BR2_PACKAGE_MTD + +# The two hidden options below match mtd configure script options +# --enable-jffs and --enable-ubifs + +config BR2_PACKAGE_MTD_JFFS_UTILS + bool + select BR2_PACKAGE_LZO + select BR2_PACKAGE_ZLIB + +config BR2_PACKAGE_MTD_UBIFS_UTILS + bool + select BR2_PACKAGE_LZO + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_ZLIB + +comment "MTD tools selection" + +config BR2_PACKAGE_MTD_DOCFDISK + bool "docfdisk" + +config BR2_PACKAGE_MTD_DOC_LOADBIOS + bool "doc_loadbios" + +config BR2_PACKAGE_MTD_FLASHCP + bool "flashcp" + default y + +config BR2_PACKAGE_MTD_FLASH_ERASE + bool "flash_erase" + default y + +config BR2_PACKAGE_MTD_FLASH_LOCK + bool "flash_lock" + default y + +config BR2_PACKAGE_MTD_FLASH_OTP_DUMP + bool "flash_otp_dump" + +config BR2_PACKAGE_MTD_FLASH_OTP_INFO + bool "flash_otp_info" + +config BR2_PACKAGE_MTD_FLASH_OTP_LOCK + bool "flash_otp_lock" + +config BR2_PACKAGE_MTD_FLASH_OTP_WRITE + bool "flash_otp_write" + +config BR2_PACKAGE_MTD_FLASH_UNLOCK + bool "flash_unlock" + default y + +config BR2_PACKAGE_MTD_FTL_CHECK + bool "ftl_check" + +config BR2_PACKAGE_MTD_FTL_FORMAT + bool "ftl_format" + +config BR2_PACKAGE_MTD_JFFS2DUMP + bool "jffs2dump" + select BR2_PACKAGE_MTD_JFFS_UTILS + +config BR2_PACKAGE_MTD_MKFSJFFS2 + bool "mkfs.jffs2" + select BR2_PACKAGE_MTD_JFFS_UTILS + +config BR2_PACKAGE_MTD_MKFSUBIFS + bool "mkfs.ubifs" + select BR2_PACKAGE_MTD_UBIFS_UTILS + +config BR2_PACKAGE_MTD_MTD_DEBUG + bool "mtd_debug" + default y + +config BR2_PACKAGE_MTD_MTDPART + bool "mtdpart" + +config BR2_PACKAGE_MTD_NANDDUMP + bool "nanddump" + default y + +config BR2_PACKAGE_MTD_NANDTEST + bool "nandtest" + default y + +config BR2_PACKAGE_MTD_NANDWRITE + bool "nandwrite" + default y + +config BR2_PACKAGE_MTD_NFTLDUMP + bool "nftldump" + +config BR2_PACKAGE_MTD_NFTL_FORMAT + bool "nftl_format" + +config BR2_PACKAGE_MTD_RECV_IMAGE + bool "recv_image" + +config BR2_PACKAGE_MTD_RFDDUMP + bool "rfddump" + +config BR2_PACKAGE_MTD_RFDFORMAT + bool "rfdformat" + +config BR2_PACKAGE_MTD_SERVE_IMAGE + bool "serve_image" + +config BR2_PACKAGE_MTD_SUMTOOL + bool "sumtool" + select BR2_PACKAGE_MTD_JFFS_UTILS + +config BR2_PACKAGE_MTD_MTDINFO + bool "mtdinfo" + default y + +config BR2_PACKAGE_MTD_UBIATTACH + bool "ubiattach" + default y + +config BR2_PACKAGE_MTD_UBICRC32 + bool "ubicrc32" + default y + +config BR2_PACKAGE_MTD_UBIDETACH + bool "ubidetach" + default y + +config BR2_PACKAGE_MTD_UBIFORMAT + bool "ubiformat" + default y + +config BR2_PACKAGE_MTD_UBIMKVOL + bool "ubimkvol" + default y + +config BR2_PACKAGE_MTD_UBINFO + bool "ubinfo" + default y + +config BR2_PACKAGE_MTD_UBINIZE + bool "ubinize" + default y + +config BR2_PACKAGE_MTD_UBIRENAME + bool "ubirename" + default y + +config BR2_PACKAGE_MTD_UBIRMVOL + bool "ubirmvol" + default y + +config BR2_PACKAGE_MTD_UBIRSVOL + bool "ubirsvol" + default y + +config BR2_PACKAGE_MTD_UBIUPDATEVOL + bool "ubiupdatevol" + default y + +config BR2_PACKAGE_MTD_UBIBLOCK + bool "ubiblock" + default y + +config BR2_PACKAGE_MTD_TESTS + bool "MTD test tools" + depends on BR2_USE_MMU # fork() in fstests + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Build and install tools for testing MTD devices and drivers. + +if BR2_PACKAGE_MTD_TESTS + +config BR2_PACKAGE_MTD_FLASH_READTEST + bool "flash_readtest" + +config BR2_PACKAGE_MTD_FLASH_SPEED + bool "flash_speed" + +config BR2_PACKAGE_MTD_FLASH_STRESS + bool "flash_stress" + +config BR2_PACKAGE_MTD_FLASH_TORTURE + bool "flash_torture" + +config BR2_PACKAGE_MTD_INTEGCK + bool "integck" + +config BR2_PACKAGE_MTD_NANDBITERRS + bool "nandbiterrs" + +config BR2_PACKAGE_MTD_NANDPAGETEST + bool "nandpagetest" + +config BR2_PACKAGE_MTD_NANDSUBPAGETEST + bool "nandsubpagetest" + +endif + +comment "MTD test tools need a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS + +endif diff --git a/buildroot/package/mtd/Config.in.host b/buildroot/package/mtd/Config.in.host new file mode 100644 index 0000000..3752266 --- /dev/null +++ b/buildroot/package/mtd/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_MTD + bool "host mtd, jffs2 and ubi/ubifs tools" + help + Build mtd, jffs2 and ubi/ubifs tools + + http://www.linux-mtd.infradead.org/ diff --git a/buildroot/package/mtd/mtd.hash b/buildroot/package/mtd/mtd.hash new file mode 100644 index 0000000..c452654 --- /dev/null +++ b/buildroot/package/mtd/mtd.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +# ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-2.0.1.tar.bz2.asc +sha256 312baa0446e4e728ceb413c53533e41e547d1c13ffa0752b2f879fd289fc2f63 mtd-utils-2.0.1.tar.bz2 diff --git a/buildroot/package/mtd/mtd.mk b/buildroot/package/mtd/mtd.mk new file mode 100644 index 0000000..7094aad --- /dev/null +++ b/buildroot/package/mtd/mtd.mk @@ -0,0 +1,124 @@ +################################################################################ +# +# mtd +# +################################################################################ + +MTD_VERSION = 2.0.1 +MTD_SOURCE = mtd-utils-$(MTD_VERSION).tar.bz2 +MTD_SITE = ftp://ftp.infradead.org/pub/mtd-utils +MTD_LICENSE = GPL-2.0 +MTD_LICENSE_FILES = COPYING +MTD_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_MTD_JFFS_UTILS),y) +MTD_DEPENDENCIES += zlib lzo host-pkgconf +MTD_CONF_OPTS += --with-jffs +else +MTD_CONF_OPTS += --without-jffs +endif + +ifeq ($(BR2_PACKAGE_MTD_UBIFS_UTILS),y) +MTD_DEPENDENCIES += util-linux zlib lzo host-pkgconf +MTD_CONF_OPTS += --with-ubifs +else +MTD_CONF_OPTS += --without-ubifs +endif + +ifeq ($(BR2_PACKAGE_MTD_TESTS),y) +MTD_CONF_OPTS += --enable-tests --enable-install-tests +else +MTD_CONF_OPTS += --disable-tests --disable-install-tests +endif + +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +MTD_DEPENDENCIES += busybox +endif + +# If extended attributes are required, the acl package must +# also be enabled which will also include the attr package. +ifeq ($(BR2_PACKAGE_ACL),y) +MTD_DEPENDENCIES += acl +MTD_CONF_OPTS += --with-xattr +else +MTD_CONF_OPTS += --without-xattr +endif + +HOST_MTD_DEPENDENCIES = host-zlib host-lzo host-util-linux +HOST_MTD_CONF_OPTS = \ + --with-jffs \ + --with-ubifs \ + --disable-tests + +MKFS_JFFS2 = $(HOST_DIR)/sbin/mkfs.jffs2 +SUMTOOL = $(HOST_DIR)/sbin/sumtool + +MTD_TARGETS_$(BR2_PACKAGE_MTD_DOCFDISK) += docfdisk +MTD_TARGETS_$(BR2_PACKAGE_MTD_DOC_LOADBIOS) += doc_loadbios +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASHCP) += flashcp +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_ERASE) += flash_erase +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_LOCK) += flash_lock +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_DUMP) += flash_otp_dump +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_INFO) += flash_otp_info +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_LOCK) += flash_otp_lock +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_OTP_WRITE) += flash_otp_write +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_UNLOCK) += flash_unlock +MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_CHECK) += ftl_check +MTD_TARGETS_$(BR2_PACKAGE_MTD_FTL_FORMAT) += ftl_format +MTD_TARGETS_$(BR2_PACKAGE_MTD_JFFS2DUMP) += jffs2dump +MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSJFFS2) += mkfs.jffs2 +MTD_TARGETS_$(BR2_PACKAGE_MTD_MTD_DEBUG) += mtd_debug +MTD_TARGETS_$(BR2_PACKAGE_MTD_MTDPART) += mtdpart +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDDUMP) += nanddump +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDTEST) += nandtest +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDWRITE) += nandwrite +MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTLDUMP) += nftldump +MTD_TARGETS_$(BR2_PACKAGE_MTD_NFTL_FORMAT) += nftl_format +MTD_TARGETS_$(BR2_PACKAGE_MTD_RECV_IMAGE) += recv_image +MTD_TARGETS_$(BR2_PACKAGE_MTD_RFDDUMP) += rfddump +MTD_TARGETS_$(BR2_PACKAGE_MTD_RFDFORMAT) += rfdformat +MTD_TARGETS_$(BR2_PACKAGE_MTD_SERVE_IMAGE) += serve_image +MTD_TARGETS_$(BR2_PACKAGE_MTD_SUMTOOL) += sumtool +MTD_TARGETS_$(BR2_PACKAGE_MTD_MTDINFO) += mtdinfo +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIATTACH) += ubiattach +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBICRC32) += ubicrc32 +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIDETACH) += ubidetach +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIFORMAT) += ubiformat +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIMKVOL) += ubimkvol +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBINFO) += ubinfo +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBINIZE) += ubinize +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIRENAME) += ubirename +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIRMVOL) += ubirmvol +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIRSVOL) += ubirsvol +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIUPDATEVOL) += ubiupdatevol +MTD_TARGETS_$(BR2_PACKAGE_MTD_UBIBLOCK) += ubiblock +MTD_TARGETS_$(BR2_PACKAGE_MTD_MKFSUBIFS) += mkfs.ubifs +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_READTEST) += flash_readtest +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_SPEED) += flash_speed +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_STRESS) += flash_stress +MTD_TARGETS_$(BR2_PACKAGE_MTD_FLASH_TORTURE) += flash_torture +MTD_TARGETS_$(BR2_PACKAGE_MTD_INTEGCK) += integck +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDBITERRS) += nandbiterrs +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDPAGETEST) += nandpagetest +MTD_TARGETS_$(BR2_PACKAGE_MTD_NANDSUBPAGETEST) += nandsubpagetest + +define MTD_INSTALL_TARGET_CMDS + $(foreach f,$(MTD_TARGETS_y), \ + $(INSTALL) -D -m 0755 $(@D)/$(f) $(TARGET_DIR)/usr/sbin/$(notdir $(f)) + ) +endef + +# Those libraries are not installed by "make install", but are needed +# by other packages, such as swupdate. +define MTD_INSTALL_LIBS + $(INSTALL) -D -m 0755 $(@D)/include/libmtd.h $(STAGING_DIR)/usr/include/mtd/libmtd.h + $(INSTALL) -D -m 0755 $(@D)/include/libubi.h $(STAGING_DIR)/usr/include/mtd/libubi.h + $(INSTALL) -D -m 0755 $(@D)/include/mtd/ubi-media.h $(STAGING_DIR)/usr/include/mtd/ubi-media.h + $(INSTALL) -D -m 0755 $(@D)/libmtd.a $(STAGING_DIR)/usr/lib/libmtd.a + $(INSTALL) -D -m 0755 $(@D)/libubi.a $(STAGING_DIR)/usr/lib/libubi.a +endef + +MTD_POST_INSTALL_STAGING_HOOKS += MTD_INSTALL_LIBS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/mtdev/Config.in b/buildroot/package/mtdev/Config.in new file mode 100644 index 0000000..afdd7dc --- /dev/null +++ b/buildroot/package/mtdev/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MTDEV + bool "mtdev" + help + The mtdev is a stand-alone library which transforms all + variants of kernel MT events to the slotted type B protocol. + + http://bitmath.org/code/mtdev/ diff --git a/buildroot/package/mtdev/mtdev.hash b/buildroot/package/mtdev/mtdev.hash new file mode 100644 index 0000000..7ba5ffd --- /dev/null +++ b/buildroot/package/mtdev/mtdev.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6b59b055ff22f2b91d4284187c2515826c338b81f6f33bd90f6bedc7c1fb9a38 mtdev-1.1.4.tar.bz2 diff --git a/buildroot/package/mtdev/mtdev.mk b/buildroot/package/mtdev/mtdev.mk new file mode 100644 index 0000000..fc6ee4c --- /dev/null +++ b/buildroot/package/mtdev/mtdev.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# mtdev +# +################################################################################ + +MTDEV_VERSION = 1.1.4 +MTDEV_SOURCE = mtdev-$(MTDEV_VERSION).tar.bz2 +MTDEV_SITE = http://bitmath.org/code/mtdev + +MTDEV_LICENSE = MIT +MTDEV_LICENSE_FILES = COPYING +MTDEV_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/mtdev2tuio/0001-Fix-build-with-musl-libc.patch b/buildroot/package/mtdev2tuio/0001-Fix-build-with-musl-libc.patch new file mode 100644 index 0000000..810b66c --- /dev/null +++ b/buildroot/package/mtdev2tuio/0001-Fix-build-with-musl-libc.patch @@ -0,0 +1,30 @@ +From f974bb1f92603973711bea36a7869dfa8358aae0 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 31 Jan 2016 09:04:46 +0100 +Subject: [PATCH 1/1] Fix build with musl libc + +Include missing header to prevent build error detected by buildroot: +http://autobuild.buildroot.net/results/aee/aee411047265bf205f8990a3d0d2310decb5fd19/build-end.log + +Signed-off-by: Bernd Kuhls +--- +Patch sent upstream: https://github.com/olivopaolo/mtdev2tuio/pull/2 + + mtdev2tuio.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/mtdev2tuio.c b/mtdev2tuio.c +index 3a9174f..f2c98d5 100644 +--- a/mtdev2tuio.c ++++ b/mtdev2tuio.c +@@ -41,6 +41,7 @@ + #include + #include + #include ++#include + + #define NSEC_PER_USEC 1000L + #define NSEC_PER_SEC 1000000000L +-- +2.7.0.rc3 + diff --git a/buildroot/package/mtdev2tuio/Config.in b/buildroot/package/mtdev2tuio/Config.in new file mode 100644 index 0000000..3e88d21 --- /dev/null +++ b/buildroot/package/mtdev2tuio/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_MTDEV2TUIO + bool "mtdev2tuio" + depends on BR2_TOOLCHAIN_HAS_THREADS # liblo + select BR2_PACKAGE_LIBLO + select BR2_PACKAGE_MTDEV + help + mtdev2tuio is a simple application for converting touch + events captured from libmtdev to TUIO 1.1 + + https://github.com/olivopaolo/mtdev2tuio + +comment "mtdev2tuio needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/mtdev2tuio/mtdev2tuio.hash b/buildroot/package/mtdev2tuio/mtdev2tuio.hash new file mode 100644 index 0000000..b0d159c --- /dev/null +++ b/buildroot/package/mtdev2tuio/mtdev2tuio.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4a6aa319c44478dceaf01a24603690767e56c029a1f0380da0f31eac5a02e10f mtdev2tuio-e1e7378d86abe751158e743586133022f32fa4d1.tar.gz diff --git a/buildroot/package/mtdev2tuio/mtdev2tuio.mk b/buildroot/package/mtdev2tuio/mtdev2tuio.mk new file mode 100644 index 0000000..e9085b0 --- /dev/null +++ b/buildroot/package/mtdev2tuio/mtdev2tuio.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# mtdev2tuio +# +################################################################################ + +MTDEV2TUIO_VERSION = e1e7378d86abe751158e743586133022f32fa4d1 +MTDEV2TUIO_SITE = $(call github,olivopaolo,mtdev2tuio,$(MTDEV2TUIO_VERSION)) +MTDEV2TUIO_DEPENDENCIES = mtdev liblo +MTDEV2TUIO_LICENSE = GPL-3.0+ +MTDEV2TUIO_LICENSE_FILES = COPYING + +# mtdev2tuio Makefile misuses $(LD) as gcc, so we need to override LD +# here. Liblo uses log(3), so we need to link with -lm +define MTDEV2TUIO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + $(TARGET_CONFIGURE_OPTS) \ + LD="$(TARGET_CC)" \ + LIBS="-lmtdev -llo -lm" \ + -C $(@D) +endef + +define MTDEV2TUIO_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/mtdev2tuio $(TARGET_DIR)/usr/bin/mtdev2tuio +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mtools/Config.in b/buildroot/package/mtools/Config.in new file mode 100644 index 0000000..99a073c --- /dev/null +++ b/buildroot/package/mtools/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_MTOOLS + bool "mtools" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + help + Mtools is a collection of utilities to access MS-DOS disks + from Unix without mounting them. It supports Win'95 style + long file names, OS/2 Xdf disks and 2m disks (store up to + 1992k on a high density 3 1/2 disk). + + http://www.gnu.org/software/mtools/ + +comment "mtools needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_USE_MMU diff --git a/buildroot/package/mtools/Config.in.host b/buildroot/package/mtools/Config.in.host new file mode 100644 index 0000000..42cb6f8 --- /dev/null +++ b/buildroot/package/mtools/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_MTOOLS + bool "host mtools" + help + Mtools is a collection of utilities to access MS-DOS disks + from Unix without mounting them. It supports Win'95 style long + file names, OS/2 Xdf disks and 2m disks (store up to 1992k on + a high density 3 1/2 disk). + + http://www.gnu.org/software/mtools/ diff --git a/buildroot/package/mtools/mtools.hash b/buildroot/package/mtools/mtools.hash new file mode 100644 index 0000000..5d86498 --- /dev/null +++ b/buildroot/package/mtools/mtools.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 59e9cf80885399c4f229e5d87e49c0c2bfeec044e1386d59fcd0b0aead6b2f85 mtools-4.0.18.tar.bz2 diff --git a/buildroot/package/mtools/mtools.mk b/buildroot/package/mtools/mtools.mk new file mode 100644 index 0000000..1a62188 --- /dev/null +++ b/buildroot/package/mtools/mtools.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# mtools +# +################################################################################ + +MTOOLS_VERSION = 4.0.18 +MTOOLS_SOURCE = mtools-$(MTOOLS_VERSION).tar.bz2 +MTOOLS_SITE = $(BR2_GNU_MIRROR)/mtools +MTOOLS_LICENSE = GPL-3.0+ +MTOOLS_LICENSE_FILES = COPYING +MTOOLS_CONF_OPTS = --without-x +# info documentation not needed +MTOOLS_CONF_ENV = \ + ac_cv_func_setpgrp_void=yes \ + ac_cv_lib_bsd_gethostbyname=no \ + ac_cv_lib_bsd_main=no \ + ac_cv_path_INSTALL_INFO= + +HOST_MTOOLS_CONF_ENV = \ + ac_cv_lib_bsd_gethostbyname=no \ + ac_cv_lib_bsd_main=no \ + ac_cv_path_INSTALL_INFO= + +# link with iconv if enabled +ifeq ($(BR2_PACKAGE_LIBICONV),y) +MTOOLS_DEPENDENCIES += libiconv +MTOOLS_CONF_ENV += LIBS=-liconv +endif + +# Package does not build in parallel due to improper make rules +MTOOLS_MAKE = $(MAKE1) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/mtr/Config.in b/buildroot/package/mtr/Config.in new file mode 100644 index 0000000..ec83e25 --- /dev/null +++ b/buildroot/package/mtr/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_MTR + bool "mtr" + depends on BR2_USE_MMU # fork() + help + mtr combines the functionality of the 'traceroute' and 'ping' + programs in a single network diagnostic tool. + + http://www.bitwizard.nl/mtr/ diff --git a/buildroot/package/mtr/mtr.hash b/buildroot/package/mtr/mtr.hash new file mode 100644 index 0000000..f3df81f --- /dev/null +++ b/buildroot/package/mtr/mtr.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 12a6a94c0ec04d508de27eda5f5ba91f50d4b5fe74a98aca0973e2c16a42555a mtr-66de3ecbab28b054b868a73fbb57f30549d770ac.tar.gz diff --git a/buildroot/package/mtr/mtr.mk b/buildroot/package/mtr/mtr.mk new file mode 100644 index 0000000..82688ed --- /dev/null +++ b/buildroot/package/mtr/mtr.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# mtr +# +################################################################################ + +MTR_VERSION = 66de3ecbab28b054b868a73fbb57f30549d770ac +MTR_SITE = $(call github,traviscross,mtr,$(MTR_VERSION)) +MTR_AUTORECONF = YES +MTR_CONF_OPTS = --without-gtk +MTR_DEPENDENCIES = host-pkgconf $(if $(BR2_PACKAGE_NCURSES),ncurses) +MTR_LICENSE = GPL-2.0 +MTR_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/multicat/0001-Fix-missing-pthread.patch b/buildroot/package/multicat/0001-Fix-missing-pthread.patch new file mode 100644 index 0000000..1ad2c98 --- /dev/null +++ b/buildroot/package/multicat/0001-Fix-missing-pthread.patch @@ -0,0 +1,20 @@ +Makefile: link with pthread + +Otherwise building multicat in a static context fails: + aggregartp.c:381: undefined reference to `pthread_self' + +Signed-off-by: Jörg Krause +Sent upstream: https://mailman.videolan.org/pipermail/multicat-devel/2016-March/000125.html + +diff -purN multicat-2.1.orig/Makefile multicat-2.1/Makefile +--- multicat-2.1.orig/Makefile 2015-10-05 18:36:29.000000000 +0200 ++++ multicat-2.1/Makefile 2016-03-19 21:47:59.467745127 +0100 +@@ -4,7 +4,7 @@ VERSION = 2.1 + CFLAGS += -Wall -Wformat-security -O3 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_ISOC99_SOURCE -D_BSD_SOURCE + CFLAGS += -g + # Comment out the following line for Mac OS X build +-LDLIBS += -lrt ++LDLIBS += -lrt -pthread + + OBJ_MULTICAT = multicat.o util.o + OBJ_INGESTS = ingests.o util.o diff --git a/buildroot/package/multicat/0002-Fix-musl-build.patch b/buildroot/package/multicat/0002-Fix-musl-build.patch new file mode 100644 index 0000000..07e15a3 --- /dev/null +++ b/buildroot/package/multicat/0002-Fix-musl-build.patch @@ -0,0 +1,47 @@ +Fix musl build + +Defining _GNU_SOURCE is required to get proper member names in `struct udphdr` +when building against musl. Build error: + + util.c: In function 'RawFillHeaders': + util.c:481:9: error: 'struct udphdr' has no member named 'source' + udph->source = htons(portsrc); + ^ + util.c:482:9: error: 'struct udphdr' has no member named 'dest' + udph->dest = htons(portdst); + ^ + util.c:483:9: error: 'struct udphdr' has no member named 'len' + udph->len = htons(sizeof(struct udphdr) + len); + ^ + util.c:484:9: error: 'struct udphdr' has no member named 'check' + udph->check = 0; + +Including in needed for mode_t, otherwise musl build fails: + util.h:91:1: error: unknown type name 'mode_t' + +Signed-off-by: Jörg Krause +Sent upstream: https://mailman.videolan.org/pipermail/multicat-devel/2016-March/000126.html + +diff -purN multicat-2.1.orig/util.c multicat-2.1/util.c +--- multicat-2.1.orig/util.c 2015-07-17 18:03:17.000000000 +0200 ++++ multicat-2.1/util.c 2016-03-19 22:21:01.110178772 +0100 +@@ -21,6 +21,8 @@ + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + ++#define _GNU_SOURCE ++ + #include + #include + #include +diff -purN multicat-2.1.orig/util.h multicat-2.1/util.h +--- multicat-2.1.orig/util.h 2015-07-15 22:47:39.000000000 +0200 ++++ multicat-2.1/util.h 2016-03-19 22:21:58.649834990 +0100 +@@ -21,6 +21,7 @@ + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + ++#include + #include + #include + diff --git a/buildroot/package/multicat/0003-Fix-have-clock-nanosleep-with-uclibc.patch b/buildroot/package/multicat/0003-Fix-have-clock-nanosleep-with-uclibc.patch new file mode 100644 index 0000000..108fb0b --- /dev/null +++ b/buildroot/package/multicat/0003-Fix-have-clock-nanosleep-with-uclibc.patch @@ -0,0 +1,24 @@ +uClibc may be configured without support for clock_nanosleep(). The function is +only available with uClibc if the C library is build with NPTL support (sets +__UCLIBC_HAS_THREADS_NATIVE__) and __UCLIBC_HAS_ADVANCED_REALTIME__ set. + +Upstream status: Pending +https://mailman.videolan.org/pipermail/multicat-devel/2016-March/000129.html + +Signed-off-by: Jörg Krause + +diff -purN multicat-2.1.orig/util.h multicat-2.1/util.h +--- multicat-2.1.orig/util.h 2015-07-15 22:47:39.000000000 +0200 ++++ multicat-2.1/util.h 2016-03-20 18:13:51.899780405 +0100 +@@ -26,7 +26,10 @@ + + #ifdef __APPLE__ + #define POLLRDHUP 0 +-#else ++/* uClibc may not have clock_nanosleep() available */ ++#elif !defined (__UCLIBC__) || \ ++ defined (__UCLIBC__) && defined (__UCLIBC_HAS_THREADS_NATIVE__) \ ++ && defined (__UCLIBC_HAS_ADVANCED_REALTIME__) + #define HAVE_CLOCK_NANOSLEEP + #endif + diff --git a/buildroot/package/multicat/Config.in b/buildroot/package/multicat/Config.in new file mode 100644 index 0000000..85f306d --- /dev/null +++ b/buildroot/package/multicat/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MULTICAT + bool "multicat" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_BITSTREAM + help + Simple and efficient multicast and transport stream + manipulation. + + http://www.videolan.org/projects/multicat.html + +comment "multicat needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/multicat/multicat.hash b/buildroot/package/multicat/multicat.hash new file mode 100644 index 0000000..38cf9d7 --- /dev/null +++ b/buildroot/package/multicat/multicat.hash @@ -0,0 +1,4 @@ +# from https://get.videolan.org/multicat/2.1/multicat-2.1.tar.bz2.md5 +md5 2e3ecd8dee64f5bd32a61733d4cc2226 multicat-2.1.tar.bz2 +# locally calculated +sha256 5eabe8d9a3dde452b2d348683cc7da213680551a9d4059c356f7319c6aa9b3d1 multicat-2.1.tar.bz2 diff --git a/buildroot/package/multicat/multicat.mk b/buildroot/package/multicat/multicat.mk new file mode 100644 index 0000000..6f88266 --- /dev/null +++ b/buildroot/package/multicat/multicat.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# multicat +# +################################################################################ + +MULTICAT_VERSION = 2.1 +MULTICAT_SOURCE = multicat-$(MULTICAT_VERSION).tar.bz2 +MULTICAT_SITE = https://get.videolan.org/multicat/$(MULTICAT_VERSION) +MULTICAT_LICENSE = GPL-2.0+ +MULTICAT_LICENSE_FILES = COPYING + +MULTICAT_DEPENDENCIES = bitstream + +MULTICAT_MAKE_ENV = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) + +define MULTICAT_BUILD_CMDS + $(MULTICAT_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define MULTICAT_INSTALL_TARGET_CMDS + $(MULTICAT_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) PREFIX=/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/musepack/0001-shared.patch b/buildroot/package/musepack/0001-shared.patch new file mode 100644 index 0000000..d8c788d --- /dev/null +++ b/buildroot/package/musepack/0001-shared.patch @@ -0,0 +1,24 @@ +Fixup installation of shared mpcdec library. +Based on gentoo patch. + +Signed-off-by: Gustavo Zacarias +--- + +diff -Nura musepack_src_r475.orig/libmpcdec/CMakeLists.txt musepack_src_r475/libmpcdec/CMakeLists.txt +--- musepack_src_r475.orig/libmpcdec/CMakeLists.txt 2010-08-21 12:55:01.000000000 -0300 ++++ musepack_src_r475/libmpcdec/CMakeLists.txt 2011-08-17 15:53:06.126873408 -0300 +@@ -1,7 +1,12 @@ + include_directories(${libmpc_SOURCE_DIR}/include) + if(SHARED) +- add_library(mpcdec SHARED huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32) ++ add_library(mpcdec_shared SHARED huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32) ++ set_target_properties(mpcdec_shared PROPERTIES OUTPUT_NAME mpcdec CLEAN_DIRECT_OUTPUT 1 VERSION 7.0.1 SOVERSION 7) ++ target_link_libraries(mpcdec_shared m) ++ install(TARGETS mpcdec_shared LIBRARY DESTINATION "lib${LIB_SUFFIX}" ARCHIVE DESTINATION "lib${LIB_SUFFIX}") + else(SHARED) + add_library(mpcdec_static STATIC huffman mpc_decoder mpc_reader streaminfo mpc_bits_reader mpc_demux requant synth_filter ${libmpc_SOURCE_DIR}/common/crc32) ++ set_target_properties(mpcdec_static PROPERTIES OUTPUT_NAME mpcdec CLEAN_DIRECT_OUTPUT 1) ++ target_link_libraries(mpcdec_static m) ++ install(TARGETS mpcdec_static LIBRARY DESTINATION "lib${LIB_SUFFIX}" ARCHIVE DESTINATION "lib${LIB_SUFFIX}") + endif(SHARED) +- diff --git a/buildroot/package/musepack/0002-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch b/buildroot/package/musepack/0002-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch new file mode 100644 index 0000000..4bfeca0 --- /dev/null +++ b/buildroot/package/musepack/0002-cmake-use-the-standard-CMake-flag-to-drive-the-share.patch @@ -0,0 +1,43 @@ +From d2f01ba6fa2a065156fad686d1849309c661e527 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 31 Aug 2014 12:07:31 +0200 +Subject: [PATCH 2/2] cmake: use the standard CMake flag to drive the shared + object build + +If BUILD_SHARED_LIBS is set and SHARED undefined, then drive SHARED with +the BUILD_SHARED_LIBS value. + +Signed-off-by: Samuel Martin +--- + CMakeLists.txt | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b13f78c..db75510 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -7,11 +7,16 @@ project(libmpc C) + set(CMAKE_VERBOSE_MAKEFILE false) + TEST_BIG_ENDIAN(MPC_ENDIANNESS) + +-if(WIN32) +- option(SHARED "Use shared libmpcdec" OFF) +-else(WIN32) +- option(SHARED "Use shared libmpcdec" ON) +-endif(WIN32) ++# Use the standard CMake flag to drive the shared object build. ++if(DEFINED BUILD_SHARED_LIBS AND NOT DEFINED SHARED) ++ set(SHARED ${BUILD_SHARED_LIBS}) ++else() ++ if(WIN32) ++ option(SHARED "Use shared libmpcdec" OFF) ++ else(WIN32) ++ option(SHARED "Use shared libmpcdec" ON) ++ endif(WIN32) ++endif() + + add_definitions(-DFAST_MATH -DCVD_FASTLOG) + +-- +2.1.0 + diff --git a/buildroot/package/musepack/0003-include-fpu-control-with-glibc-only.patch b/buildroot/package/musepack/0003-include-fpu-control-with-glibc-only.patch new file mode 100644 index 0000000..6f50155 --- /dev/null +++ b/buildroot/package/musepack/0003-include-fpu-control-with-glibc-only.patch @@ -0,0 +1,26 @@ +Include only on glibc systems + +The header provides _FPU_*() macros, which the +Init_FPU() function uses only on i386, and only when they are +defined. Since is not available, this causes a build +failure with C libraries such as musl. By simply including + explicitly on glibc systems, we avoid the build +failure, since mpcenc.c already conditionally uses the +macros only if they are defined. + +Signed-off-by: Bernd Kuhls +[Thomas: better commit log.] +Signed-off-by: Thomas Petazzoni + +diff -uNr musepack_src_r475.org/mpcenc/mpcenc.h musepack_src_r475/mpcenc/mpcenc.h +--- musepack_src_r475.org/mpcenc/mpcenc.h 2009-02-23 19:15:46.000000000 +0100 ++++ musepack_src_r475/mpcenc/mpcenc.h 2016-01-30 09:29:08.000000000 +0100 +@@ -50,7 +51,7 @@ + # include + #endif + +-#if defined __linux__ ++#if defined __GLIBC__ + # include + #elif defined __FreeBSD__ + # include diff --git a/buildroot/package/musepack/0004-missing-sys-select.patch b/buildroot/package/musepack/0004-missing-sys-select.patch new file mode 100644 index 0000000..1e3a4b1 --- /dev/null +++ b/buildroot/package/musepack/0004-missing-sys-select.patch @@ -0,0 +1,21 @@ +Add missing include + +This header is needed when types like fd_set are used. This fixes a +build issue occuring on the musl C library. + +Signed-off-by: Bernd Kuhls +[Thomas: better commit log.] +Signed-off-by: Thomas Petazzoni + +Index: b/mpcenc/mpcenc.h +=================================================================== +--- a/mpcenc/mpcenc.h ++++ b/mpcenc/mpcenc.h +@@ -34,6 +34,7 @@ + //// portable system includes ////////////////////////////////////// + #include + #include ++#include + + //// system dependent system includes ////////////////////////////// + // low level I/O, where are prototypes and constants? diff --git a/buildroot/package/musepack/Config.in b/buildroot/package/musepack/Config.in new file mode 100644 index 0000000..f368764 --- /dev/null +++ b/buildroot/package/musepack/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_MUSEPACK + bool "musepack" + select BR2_PACKAGE_LIBCUEFILE + select BR2_PACKAGE_LIBREPLAYGAIN + help + Musepack is an audio compression format with a strong + emphasis on high quality. It's not lossless, but it is + designed for transparency, so that you won't be able to hear + differences between the original wave file and the much + smaller MPC file. + + http://www.musepack.net/ diff --git a/buildroot/package/musepack/musepack.hash b/buildroot/package/musepack/musepack.hash new file mode 100644 index 0000000..b1bd73c --- /dev/null +++ b/buildroot/package/musepack/musepack.hash @@ -0,0 +1,4 @@ +# From https://www.musepack.net/index.php?pg=src +md5 754d67be67f713e54baf70fcfdb2817e musepack_src_r475.tar.gz +# Calculated based on the hash above +sha256 a4b1742f997f83e1056142d556a8c20845ba764b70365ff9ccf2e3f81c427b2b musepack_src_r475.tar.gz diff --git a/buildroot/package/musepack/musepack.mk b/buildroot/package/musepack/musepack.mk new file mode 100644 index 0000000..fc66c68 --- /dev/null +++ b/buildroot/package/musepack/musepack.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# musepack +# +################################################################################ + +MUSEPACK_VERSION = r475 +MUSEPACK_SITE = http://files.musepack.net/source +MUSEPACK_SOURCE = musepack_src_$(MUSEPACK_VERSION).tar.gz +MUSEPACK_DEPENDENCIES = libcuefile libreplaygain +MUSEPACK_INSTALL_STAGING = YES +MUSEPACK_MAKE = $(MAKE1) +MUSEPACK_LICENSE = BSD-3-Clause (*mpcdec), LGPL-2.1+ (*mpcenc) +MUSEPACK_LICENSE_FILES = libmpcdec/COPYING libmpcenc/quant.c + +$(eval $(cmake-package)) diff --git a/buildroot/package/musl-compat-headers/Config.in b/buildroot/package/musl-compat-headers/Config.in new file mode 100644 index 0000000..c672f9c --- /dev/null +++ b/buildroot/package/musl-compat-headers/Config.in @@ -0,0 +1,2 @@ +config BR2_PACKAGE_MUSL_COMPAT_HEADERS + bool diff --git a/buildroot/package/musl-compat-headers/cdefs.h b/buildroot/package/musl-compat-headers/cdefs.h new file mode 100644 index 0000000..6fe7aa4 --- /dev/null +++ b/buildroot/package/musl-compat-headers/cdefs.h @@ -0,0 +1,51 @@ +/* Copyright (C) 2016 Yann E. MORIN + * + * This file is in the Public Domain. + * + * For jurisdictions in which the Public Domain does not exist + * or it is not otherwise applicable, this file is licensed CC0 + * (Creative Commons Zero). + */ + +/* This file contains definitions for non-standard macros defined by + * glibc, but quite commonly used in packages. + * + * Because they are non-standard, musl does not define those macros. + * It does not provide cdefs.h either. + * + * This file is a compatibility header written from scratch, to be + * installed when the C library is musl. + * + * Not all macros from the glibc's cdefs.h are available, only the + * most commonly used ones. + * + * Please refer to the glibc documentation and source code for + * explanations about those macros. + */ + +#ifndef BUILDROOT_SYS_CDEFS_H +#define BUILDROOT_SYS_CDEFS_H + +/* Function prototypes. */ +#undef __P +#define __P(arg) arg + +/* C declarations in C++ mode. */ +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS +# define __END_DECLS +#endif + +/* Don't throw exceptions in C functions. */ +#ifndef __cplusplus +# define __THROW __attribute__ ((__nothrow__)) +# define __NTH(f) __attribute__ ((__nothrow__)) f +#else +# define __THROW +# define __NTH(f) f +#endif + +#endif /* ifndef BUILDROOT_SYS_CDEFS_H */ diff --git a/buildroot/package/musl-compat-headers/musl-compat-headers.hash b/buildroot/package/musl-compat-headers/musl-compat-headers.hash new file mode 100644 index 0000000..f8e2a6c --- /dev/null +++ b/buildroot/package/musl-compat-headers/musl-compat-headers.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c13407edd0e33be73cae72514cb234f8612e1c0e54401c9448daffd3a240158b queue.h?rev=1.70 diff --git a/buildroot/package/musl-compat-headers/musl-compat-headers.mk b/buildroot/package/musl-compat-headers/musl-compat-headers.mk new file mode 100644 index 0000000..91f5074 --- /dev/null +++ b/buildroot/package/musl-compat-headers/musl-compat-headers.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# musl-compat-headers +# +################################################################################ + +# No main site, just using extra downloads +MUSL_COMPAT_HEADERS_QUEUE_H = http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/sys/queue.h?rev=1.70 + +MUSL_COMPAT_HEADERS_EXTRA_DOWNLOADS = $(MUSL_COMPAT_HEADERS_QUEUE_H) + +MUSL_COMPAT_HEADERS_LICENSE = BSD-3-Clause, Public Domain or CC0 +MUSL_COMPAT_HEADERS_LICENSE_FILES = queue.h cdefs.h + +MUSL_COMPAT_HEADERS_ADD_TOOLCHAIN_DEPENDENCY = NO + +# Only installs headers +MUSL_COMPAT_HEADERS_INSTALL_TARGET = NO +MUSL_COMPAT_HEADERS_INSTALL_STAGING = YES + +# Copying both headers so legal-info finds them (they are _LICENSE_FILES) +define MUSL_COMPAT_HEADERS_EXTRACT_CMDS + $(INSTALL) -m 0644 -D $(DL_DIR)/$(notdir $(MUSL_COMPAT_HEADERS_QUEUE_H)) $(@D)/queue.h + $(INSTALL) -m 0644 -D $(MUSL_COMPAT_HEADERS_PKGDIR)/cdefs.h $(@D)/cdefs.h +endef + +define MUSL_COMPAT_HEADERS_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/queue.h \ + $(STAGING_DIR)/usr/include/sys/queue.h + $(INSTALL) -D -m 0644 $(@D)/cdefs.h \ + $(STAGING_DIR)/usr/include/sys/cdefs.h +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/musl/0001-avoid-kernel-if_ether.h.patch b/buildroot/package/musl/0001-avoid-kernel-if_ether.h.patch new file mode 100644 index 0000000..8efbcc8 --- /dev/null +++ b/buildroot/package/musl/0001-avoid-kernel-if_ether.h.patch @@ -0,0 +1,30 @@ +From 3984adc4976de7553f51e0cf4de1e18c373b332b Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 15 Dec 2016 15:10:19 +0200 +Subject: [PATCH] Avoid redefinition of struct ethhdr + +This is a workaround to the if_ether.h conflict between musl and the kernel. +Both define struct ethhdr. + +Signed-off-by: Baruch Siach +--- + include/netinet/if_ether.h | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/include/netinet/if_ether.h b/include/netinet/if_ether.h +index 11ee65823f93..cfe1949d3371 100644 +--- a/include/netinet/if_ether.h ++++ b/include/netinet/if_ether.h +@@ -1,6 +1,9 @@ + #ifndef _NETINET_IF_ETHER_H + #define _NETINET_IF_ETHER_H + ++/* Suppress kernel if_ether.h header inclusion */ ++#define _LINUX_IF_ETHER_H ++ + #include + #include + +-- +2.10.2 + diff --git a/buildroot/package/musl/0002-add-additional-uapi-guards-for-Linux-kernel-header-f.patch b/buildroot/package/musl/0002-add-additional-uapi-guards-for-Linux-kernel-header-f.patch new file mode 100644 index 0000000..cbfc9b6 --- /dev/null +++ b/buildroot/package/musl/0002-add-additional-uapi-guards-for-Linux-kernel-header-f.patch @@ -0,0 +1,69 @@ +From b583c5d3b4cc2c54c68eef5eb7855ecfacee8bfc Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sat, 6 Jan 2018 23:32:52 +0100 +Subject: [PATCH] add additional uapi guards for Linux kernel header files + +With Linux kernel 4.16 it will be possible to guard more parts of the +Linux header files from a libc. Make use of this in musl to guard all +the structures and other definitions from the Linux header files which +are also defined by the header files provided by musl. This will make +it possible to compile source files which include both the libc +headers and the kernel userspace headers. + +This extends the definitions done in commit 04983f227238 ("make +netinet/in.h suppress clashing definitions from kernel headers") + +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit b583c5d3b4cc + + include/net/if.h | 7 +++++++ + include/netinet/if_ether.h | 1 + + include/sys/xattr.h | 2 ++ + 3 files changed, 10 insertions(+) + +diff --git a/include/net/if.h b/include/net/if.h +index 2f2fcc10e484..774cbff0b506 100644 +--- a/include/net/if.h ++++ b/include/net/if.h +@@ -125,6 +125,13 @@ struct ifconf { + #define ifc_req ifc_ifcu.ifcu_req + #define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0) + ++#define __UAPI_DEF_IF_IFCONF 0 ++#define __UAPI_DEF_IF_IFMAP 0 ++#define __UAPI_DEF_IF_IFNAMSIZ 0 ++#define __UAPI_DEF_IF_IFREQ 0 ++#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0 ++#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0 ++ + #endif + + #ifdef __cplusplus +diff --git a/include/netinet/if_ether.h b/include/netinet/if_ether.h +index d9a131aa2d1d..97134d75b480 100644 +--- a/include/netinet/if_ether.h ++++ b/include/netinet/if_ether.h +@@ -133,5 +133,6 @@ do { \ + (enaddr)[5] = ((uint8_t *)ipaddr)[3]; \ + } while(0) + ++#define __UAPI_DEF_ETHHDR 0 + + #endif +diff --git a/include/sys/xattr.h b/include/sys/xattr.h +index 6479fcc62e5f..eeeaafc44f09 100644 +--- a/include/sys/xattr.h ++++ b/include/sys/xattr.h +@@ -24,6 +24,8 @@ int removexattr(const char *, const char *); + int lremovexattr(const char *, const char *); + int fremovexattr(int, const char *); + ++#define __UAPI_DEF_XATTR 0 ++ + #ifdef __cplusplus + } + #endif +-- +2.15.1 + diff --git a/buildroot/package/musl/Config.in b/buildroot/package/musl/Config.in new file mode 100644 index 0000000..bedc50c --- /dev/null +++ b/buildroot/package/musl/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_MUSL + bool + default y + depends on BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_LINUX_HEADERS + # SSP broken on i386/ppc: http://www.openwall.com/lists/musl/2016/12/04/2 + select BR2_TOOLCHAIN_HAS_SSP if !(BR2_i386 || BR2_powerpc) + # Compatibility headers: cdefs.h, queue.h + select BR2_PACKAGE_MUSL_COMPAT_HEADERS diff --git a/buildroot/package/musl/musl.hash b/buildroot/package/musl/musl.hash new file mode 100644 index 0000000..68e6aab --- /dev/null +++ b/buildroot/package/musl/musl.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature from +# http://www.musl-libc.org/releases/musl-1.1.18.tar.gz.asc +sha256 d017ee5d01aec0c522a1330fdff06b1e428cb409e1db819cc4935d5da4a5a118 musl-1.1.18.tar.gz diff --git a/buildroot/package/musl/musl.mk b/buildroot/package/musl/musl.mk new file mode 100644 index 0000000..b1aace0 --- /dev/null +++ b/buildroot/package/musl/musl.mk @@ -0,0 +1,64 @@ +################################################################################ +# +# musl +# +################################################################################ + +MUSL_VERSION = 1.1.18 +MUSL_SITE = http://www.musl-libc.org/releases +MUSL_LICENSE = MIT +MUSL_LICENSE_FILES = COPYRIGHT + +# Before musl is configured, we must have the first stage +# cross-compiler and the kernel headers +MUSL_DEPENDENCIES = host-gcc-initial linux-headers + +# musl does not provide an implementation for sys/queue.h or sys/cdefs.h. +# So, add the musl-compat-headers package that will install those files, +# into the staging directory: +# sys/queue.h: header from NetBSD +# sys/cdefs.h: minimalist header bundled in Buildroot +MUSL_DEPENDENCIES += musl-compat-headers + +# musl is part of the toolchain so disable the toolchain dependency +MUSL_ADD_TOOLCHAIN_DEPENDENCY = NO + +MUSL_INSTALL_STAGING = YES + +# Thumb build is broken, build in ARM mode, since all architectures +# that support Thumb1 also support ARM. +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +MUSL_EXTRA_CFLAGS += -marm +endif + +define MUSL_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS)) $(MUSL_EXTRA_CFLAGS)" \ + CPPFLAGS="$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64,$(TARGET_CPPFLAGS))" \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --prefix=/usr \ + --libdir=/lib \ + --disable-gcc-wrapper \ + --enable-static \ + $(if $(BR2_STATIC_LIBS),--disable-shared,--enable-shared)) +endef + +define MUSL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define MUSL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(STAGING_DIR) install-libs install-tools install-headers +endef + +define MUSL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install-libs + $(RM) $(addprefix $(TARGET_DIR)/lib/,crt1.o crtn.o crti.o Scrt1.o) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mutt/Config.in b/buildroot/package/mutt/Config.in new file mode 100644 index 0000000..d85c1a7 --- /dev/null +++ b/buildroot/package/mutt/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_MUTT + bool "mutt" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + Mutt is a sophisticated text-based Mail User Agent (MUA) + + http://www.mutt.org/ + +if BR2_PACKAGE_MUTT + +config BR2_PACKAGE_MUTT_IMAP + bool "imap" + help + IMAP support + +config BR2_PACKAGE_MUTT_POP3 + bool "pop3" + help + POP3 support + +endif # BR2_PACKAGE_MUTT + +comment "mutt needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/mutt/mutt.hash b/buildroot/package/mutt/mutt.hash new file mode 100644 index 0000000..f6dc472 --- /dev/null +++ b/buildroot/package/mutt/mutt.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9b81746d67ffeca5ea44f60893b70dc93c86d4bc10187d4dd360185e4d42ed42 mutt-1.8.3.tar.gz diff --git a/buildroot/package/mutt/mutt.mk b/buildroot/package/mutt/mutt.mk new file mode 100644 index 0000000..b0bf5a7 --- /dev/null +++ b/buildroot/package/mutt/mutt.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# mutt +# +################################################################################ + +MUTT_VERSION = 1.8.3 +MUTT_SITE = https://bitbucket.org/mutt/mutt/downloads +MUTT_LICENSE = GPL-2.0+ +MUTT_LICENSE_FILES = GPL +MUTT_DEPENDENCIES = ncurses +MUTT_CONF_OPTS = --disable-doc --disable-smtp + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +MUTT_DEPENDENCIES += libiconv +MUTT_CONF_OPTS += --enable-iconv +endif + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +MUTT_DEPENDENCIES += libidn +MUTT_CONF_OPTS += --with-idn +else +MUTT_CONF_OPTS += --without-idn +endif + +ifeq ($(BR2_PACKAGE_MUTT_IMAP),y) +MUTT_CONF_OPTS += --enable-imap +else +MUTT_CONF_OPTS += --disable-imap +endif + +ifeq ($(BR2_PACKAGE_MUTT_POP3),y) +MUTT_CONF_OPTS += --enable-pop +else +MUTT_CONF_OPTS += --disable-pop +endif + +# SSL support is only used by imap or pop3 module +ifneq ($(BR2_PACKAGET_MUTT_IMAP)$(BR2_PACKAGE_MUTT_POP3),) +ifeq ($(BR2_PACKAGE_OPENSSL),y) +MUTT_DEPENDENCIES += openssl +MUTT_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr +else +MUTT_CONF_OPTS += --without-ssl +endif +else +MUTT_CONF_OPTS += --without-ssl +endif + +# Avoid running tests to check for: +# - target system is *BSD +# - C99 conformance (snprintf, vsnprintf) +# - behaviour of the regex library +# - if mail spool directory is world/group writable +# - we have a working libiconv +MUTT_CONF_ENV += \ + mutt_cv_bsdish=no \ + mutt_cv_c99_snprintf=yes \ + mutt_cv_c99_vsnprintf=yes \ + mutt_cv_regex_broken=no \ + mutt_cv_worldwrite=yes \ + mutt_cv_groupwrite=yes \ + mutt_cv_iconv_good=yes \ + mutt_cv_iconv_nontrans=no + +MUTT_CONF_OPTS += --with-mailpath=/var/mail + +define MUTT_VAR_MAIL + mkdir -p $(TARGET_DIR)/var + ln -sf /tmp $(TARGET_DIR)/var/mail +endef +MUTT_POST_INSTALL_TARGET_HOOKS += MUTT_VAR_MAIL + +$(eval $(autotools-package)) diff --git a/buildroot/package/mxml/0001-fix-cross-target-installation.patch b/buildroot/package/mxml/0001-fix-cross-target-installation.patch new file mode 100644 index 0000000..3a9fa0c --- /dev/null +++ b/buildroot/package/mxml/0001-fix-cross-target-installation.patch @@ -0,0 +1,55 @@ +From: Baruch Siach +Subject: [PATCH] mxml: workaround for cross build + +The added patch is a workaround for cross build as follows: + + * disable run of a test binary at build time + * disable generation of documentation using the mxmldoc binary + * remove now non-existent entries from the install target + * disable strip when running install + +Signed-off-by: Baruch Siach +--- +diff -Nuar mxml-2.7-orig/Makefile.in mxml-2.7/Makefile.in +--- mxml-2.7-orig/Makefile.in 2011-04-13 18:43:32.000000000 +0300 ++++ mxml-2.7/Makefile.in 2012-05-16 07:21:42.677220980 +0300 +@@ -57,7 +57,7 @@ + # Install commands... + # + +-INSTALL_BIN = $(LIBTOOL) $(INSTALL) -m 755 -s ++INSTALL_BIN = $(LIBTOOL) $(INSTALL) -m 755 + INSTALL_DATA = $(INSTALL) -m 644 + INSTALL_DIR = $(INSTALL) -d + INSTALL_LIB = $(LIBTOOL) $(INSTALL) -m 755 +@@ -88,7 +88,7 @@ + mxml-index.o mxml-node.o mxml-search.o mxml-set.o + LIBOBJS = $(PUBLIBOBJS) mxml-private.o mxml-string.o + OBJS = mxmldoc.o testmxml.o $(LIBOBJS) +-TARGETS = $(LIBMXML) mxmldoc testmxml mxml.xml doc/mxml.man ++TARGETS = $(LIBMXML) libmxml.a + + + # +@@ -140,9 +140,6 @@ + # + + install: $(TARGETS) install-$(LIBMXML) install-libmxml.a +- echo Installing mxmldoc in $(BUILDROOT)$(bindir)... +- $(INSTALL_DIR) $(BUILDROOT)$(bindir) +- $(INSTALL_BIN) mxmldoc $(BUILDROOT)$(bindir) + echo Installing documentation in $(BUILDROOT)$(docdir)... + $(INSTALL_DIR) $(BUILDROOT)$(docdir) + for file in $(DOCFILES); do \ +@@ -154,11 +151,6 @@ + echo Installing pkgconfig files in $(BUILDROOT)$(libdir)/pkgconfig... + $(INSTALL_DIR) $(BUILDROOT)$(libdir)/pkgconfig + $(INSTALL_DATA) mxml.pc $(BUILDROOT)$(libdir)/pkgconfig +- echo Installing man pages in $(BUILDROOT)$(mandir)... +- $(INSTALL_DIR) $(BUILDROOT)$(mandir)/man1 +- $(INSTALL_MAN) doc/mxmldoc.man $(BUILDROOT)$(mandir)/man1/mxmldoc.1 +- $(INSTALL_DIR) $(BUILDROOT)$(mandir)/man3 +- $(INSTALL_MAN) doc/mxml.man $(BUILDROOT)$(mandir)/man3/mxml.3 + + install-libmxml.a: + echo Installing libmxml.a to $(BUILDROOT)$(libdir)... diff --git a/buildroot/package/mxml/Config.in b/buildroot/package/mxml/Config.in new file mode 100644 index 0000000..d3202b4 --- /dev/null +++ b/buildroot/package/mxml/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MXML + bool "Mini-XML" + help + Lightweight XML Library + + http://www.minixml.org diff --git a/buildroot/package/mxml/mxml.hash b/buildroot/package/mxml/mxml.hash new file mode 100644 index 0000000..9039275 --- /dev/null +++ b/buildroot/package/mxml/mxml.hash @@ -0,0 +1,4 @@ +# From http://www.msweet.org/downloads.php?L+Z3 +md5 8804c961a24500a95690ef287d150abe mxml-2.10.tar.gz +# Locally computed +sha256 267ff58b64ddc767170d71dab0c729c06f45e1df9a9b6f75180b564f09767891 mxml-2.10.tar.gz diff --git a/buildroot/package/mxml/mxml.mk b/buildroot/package/mxml/mxml.mk new file mode 100644 index 0000000..ac270bd --- /dev/null +++ b/buildroot/package/mxml/mxml.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# mxml +# +################################################################################ + +MXML_VERSION = 2.10 +MXML_SITE = https://github.com/michaelrsweet/mxml/releases/download/release-$(MXML_VERSION) +MXML_LICENSE = LGPL-2.0+ with exceptions +MXML_LICENSE_FILES = COPYING +MXML_INSTALL_STAGING = YES + +MXML_INSTALL_STAGING_OPTS = DSTROOT=$(STAGING_DIR) install +MXML_INSTALL_TARGET_OPTS = DSTROOT=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/buildroot/package/mxsldr/Config.in.host b/buildroot/package/mxsldr/Config.in.host new file mode 100644 index 0000000..a427e71 --- /dev/null +++ b/buildroot/package/mxsldr/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_MXSLDR + bool "host mxsldr" + depends on BR2_arm || BR2_armeb + help + This package contains tools to download and execute code on + Freescale i.MX23 and i.MX28 SoC's through the Serial + Download Protocol. + + git://git.denx.de/mxsldr.git diff --git a/buildroot/package/mxsldr/mxsldr.mk b/buildroot/package/mxsldr/mxsldr.mk new file mode 100644 index 0000000..239b40a --- /dev/null +++ b/buildroot/package/mxsldr/mxsldr.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# mxsldr +# +################################################################################ + +MXSLDR_VERSION = 2793a657ab7a22487d21c1b020957806f8ae8383 +MXSLDR_SITE = git://git.denx.de/mxsldr.git +MXSLDR_LICENSE = GPL-2.0+ +MXSLDR_LICENSE_FILES = COPYING +HOST_MXSLDR_DEPENDENCIES = host-libusb host-pkgconf + +define HOST_MXSLDR_BUILD_CMDS + $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_MXSLDR_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/mxsldr $(HOST_DIR)/bin/mxsldr +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/mysql/Config.in b/buildroot/package/mysql/Config.in new file mode 100644 index 0000000..278dc73 --- /dev/null +++ b/buildroot/package/mysql/Config.in @@ -0,0 +1,75 @@ +config BR2_PACKAGE_MYSQL + bool "mysql support" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Select the desired mysql provider. + +if BR2_PACKAGE_MYSQL + +choice + prompt "mysql variant" + default BR2_PACKAGE_ORACLE_MYSQL + help + Select either the oracle mysql server or the mariadb server + +config BR2_PACKAGE_MARIADB + bool "mariadb" + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + select BR2_PACKAGE_LIBAIO + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_HAS_MYSQL + help + MariaDB is one of the most popular database servers in the + world. It's made by the original developers of MySQL and + guaranteed to stay open source. + + http://www.mariadb.org/ + +config BR2_PACKAGE_ORACLE_MYSQL + bool "oracle mysql" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_HAS_MYSQL + help + The MySQL Open Source Database System + + http://www.mysql.com/ + +endchoice + +if BR2_PACKAGE_MARIADB + +config BR2_PACKAGE_MARIADB_SERVER + bool "mariadb server" + help + Install the mariadb server on the target. + +endif + +if BR2_PACKAGE_ORACLE_MYSQL + +config BR2_PACKAGE_ORACLE_MYSQL_SERVER + bool "oracle mysql server" + help + Install the MySQL server on the target. + +endif + +config BR2_PACKAGE_HAS_MYSQL + bool + +config BR2_PACKAGE_PROVIDES_MYSQL + string + default "mariadb" if BR2_PACKAGE_MARIADB + default "oracle-mysql" if BR2_PACKAGE_ORACLE_MYSQL + +endif + +comment "mysql needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/mysql/mysql.mk b/buildroot/package/mysql/mysql.mk new file mode 100644 index 0000000..d655625 --- /dev/null +++ b/buildroot/package/mysql/mysql.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# mysql +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/buildroot/package/nano/Config.in b/buildroot/package/nano/Config.in new file mode 100644 index 0000000..4b340ff --- /dev/null +++ b/buildroot/package/nano/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_NANO + bool "nano" + depends on BR2_USE_WCHAR + # full version uses fork() + select BR2_PACKAGE_NANO_TINY if !BR2_USE_MMU + select BR2_PACKAGE_NCURSES + help + A nice ncurses-based editor. Started out as a clone of pico. + Great editor for new users. + + http://www.nano-editor.org/ + +if BR2_PACKAGE_NANO + +config BR2_PACKAGE_NANO_TINY + bool "optimize for size" + default y + help + Disable all features for the sake of size. + +endif + +comment "nano needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/nano/nano.hash b/buildroot/package/nano/nano.hash new file mode 100644 index 0000000..c09f031 --- /dev/null +++ b/buildroot/package/nano/nano.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 d2d30c39caef53aba1ec1b4baff4186d4496f35d2411b0848242a5f2e27e129e nano-2.9.0.tar.xz +sha256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING diff --git a/buildroot/package/nano/nano.mk b/buildroot/package/nano/nano.mk new file mode 100644 index 0000000..458174a --- /dev/null +++ b/buildroot/package/nano/nano.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# nano +# +################################################################################ + +NANO_VERSION_MAJOR = 2.9 +NANO_VERSION = $(NANO_VERSION_MAJOR).0 +NANO_SITE = https://www.nano-editor.org/dist/v$(NANO_VERSION_MAJOR) +NANO_SOURCE = nano-$(NANO_VERSION).tar.xz +NANO_LICENSE = GPL-3.0+ +NANO_LICENSE_FILES = COPYING +NANO_CONF_OPTS = \ + --without-slang \ + --with-wordbounds +NANO_DEPENDENCIES = ncurses + +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +NANO_CONF_ENV += ac_cv_prog_NCURSESW_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) +else +NANO_CONF_ENV += ac_cv_prog_NCURSESW_CONFIG=false +NANO_MAKE_ENV += CURSES_LIB="-lncurses" +endif + +ifeq ($(BR2_PACKAGE_FILE),y) +NANO_DEPENDENCIES += file +else +NANO_CONF_ENV += ac_cv_lib_magic_magic_open=no +endif + +ifeq ($(BR2_PACKAGE_NANO_TINY),y) +NANO_CONF_OPTS += --enable-tiny +define NANO_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/src/nano $(TARGET_DIR)/usr/bin/nano +endef +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/nanocom/Config.in b/buildroot/package/nanocom/Config.in new file mode 100644 index 0000000..bc0a058 --- /dev/null +++ b/buildroot/package/nanocom/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_NANOCOM + bool "nanocom" + help + Nanocom is based upon microcom (http://microcom.port5.com/) + but removes the scripting and logging features while + introducing support for setting local/remote echo, parity + and stop bits. It also follows a more standard command line + style using the getopt function. Internally much of the + code has been rewritten and reformatted, the menu system in + particular is almost entirely different. + + http://nanocom.sourceforge.net/ diff --git a/buildroot/package/nanocom/nanocom.hash b/buildroot/package/nanocom/nanocom.hash new file mode 100644 index 0000000..7e7016c --- /dev/null +++ b/buildroot/package/nanocom/nanocom.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 5cb26e3e232cfc4a7cb16da432db532b775c5ebdb887ac9d39df5632f2c9a5e5 nanocom.tar.gz diff --git a/buildroot/package/nanocom/nanocom.mk b/buildroot/package/nanocom/nanocom.mk new file mode 100644 index 0000000..7893cc6 --- /dev/null +++ b/buildroot/package/nanocom/nanocom.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# nanocom +# +################################################################################ + +NANOCOM_VERSION = 1.0 +NANOCOM_SOURCE = nanocom.tar.gz +NANOCOM_SITE = http://downloads.sourceforge.net/project/nanocom/nanocom/v$(NANOCOM_VERSION) +NANOCOM_STRIP_COMPONENTS = 0 +NANOCOM_LICENSE = GPL-2.0+ +NANOCOM_LICENSE_FILES = COPYING + +define NANOCOM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" -C $(@D) +endef + +define NANOCOM_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/nanocom $(TARGET_DIR)/usr/bin/nanocom +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/nanomsg/Config.in b/buildroot/package/nanomsg/Config.in new file mode 100644 index 0000000..0cab8b4 --- /dev/null +++ b/buildroot/package/nanomsg/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_NANOMSG + bool "nanomsg" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + nanomsg is a socket library that provides several common + communication patterns. It aims to make the networking layer + fast, scalable, and easy to use. Implemented in C, it works + on a wide range of operating systems with no further + dependencies. + + http://nanomsg.org/ + +if BR2_PACKAGE_NANOMSG + +config BR2_PACKAGE_NANOMSG_TOOLS + bool "Build nanomsg tools" + help + Build nanomsg tools + +endif + +comment "nanomsg needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/nanomsg/nanomsg.hash b/buildroot/package/nanomsg/nanomsg.hash new file mode 100644 index 0000000..5164a75 --- /dev/null +++ b/buildroot/package/nanomsg/nanomsg.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 24afdeb71b2e362e8a003a7ecc906e1b84fd9f56ce15ec567481d1bb33132cc7 nanomsg-1.0.0.tar.gz + +# Hash for license file: +sha256 4e51f6a04312ea7c5f4f0e92d91b6415c1eeb09bdaf86a6fd11d93499457c07a COPYING diff --git a/buildroot/package/nanomsg/nanomsg.mk b/buildroot/package/nanomsg/nanomsg.mk new file mode 100644 index 0000000..3b1c2ca --- /dev/null +++ b/buildroot/package/nanomsg/nanomsg.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# nanomsg +# +################################################################################ + +NANOMSG_VERSION = 1.0.0 +NANOMSG_SITE = $(call github,nanomsg,nanomsg,$(NANOMSG_VERSION)) +NANOMSG_INSTALL_STAGING = YES +NANOMSG_LICENSE = MIT +NANOMSG_LICENSE_FILES = COPYING +NANOMSG_CONF_OPTS = -DNN_ENABLE_DOC=OFF -DNN_TESTS=OFF + +ifeq ($(BR2_STATIC_LIBS),y) +NANOMSG_CONF_OPTS += -DNN_STATIC_LIB=ON +endif + +ifeq ($(BR2_PACKAGE_NANOMSG_TOOLS),y) +NANOMSG_CONF_OPTS += -DNN_TOOLS=ON +else +NANOMSG_CONF_OPTS += -DNN_TOOLS=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/nasm/0001-nasmlib-Drop-unused-seg_init.patch b/buildroot/package/nasm/0001-nasmlib-Drop-unused-seg_init.patch new file mode 100644 index 0000000..a18d121 --- /dev/null +++ b/buildroot/package/nasm/0001-nasmlib-Drop-unused-seg_init.patch @@ -0,0 +1,32 @@ +From 5eb1838b4d3752fd863d19442943983a2a5ee87c Mon Sep 17 00:00:00 2001 +From: Cyrill Gorcunov +Date: Sat, 10 Feb 2018 00:33:41 +0300 +Subject: [PATCH] nasmlib: Drop unused seg_init + +The helper has been eliminated in 2c4a4d5810d0a59b033a07876a2648ef5d4c2859 + +https://bugzilla.nasm.us/show_bug.cgi?id=3392461 + +Signed-off-by: Cyrill Gorcunov +--- + include/nasmlib.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/include/nasmlib.h b/include/nasmlib.h +index 79e866b5..fee1b5ea 100644 +--- a/include/nasmlib.h ++++ b/include/nasmlib.h +@@ -188,10 +188,8 @@ int64_t readnum(char *str, bool *error); + int64_t readstrnum(char *str, int length, bool *warn); + + /* +- * seg_init: Initialise the segment-number allocator. + * seg_alloc: allocate a hitherto unused segment number. + */ +-void pure_func seg_init(void); + int32_t pure_func seg_alloc(void); + + /* +-- +2.17.0 + diff --git a/buildroot/package/nasm/nasm.hash b/buildroot/package/nasm/nasm.hash new file mode 100644 index 0000000..db5b857 --- /dev/null +++ b/buildroot/package/nasm/nasm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 812ecfb0dcbc5bd409aaa8f61c7de94c5b8752a7b00c632883d15b2ed6452573 nasm-2.13.03.tar.xz +sha256 1563996c52e220e15ef2418e67d39488255aa8c28c89e617074d3afe3ee329e0 LICENSE diff --git a/buildroot/package/nasm/nasm.mk b/buildroot/package/nasm/nasm.mk new file mode 100644 index 0000000..76bcca3 --- /dev/null +++ b/buildroot/package/nasm/nasm.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# nasm +# +################################################################################ + +NASM_VERSION = 2.13.03 +NASM_SOURCE = nasm-$(NASM_VERSION).tar.xz +NASM_SITE = http://www.nasm.us/pub/nasm/releasebuilds/$(NASM_VERSION) +NASM_LICENSE = BSD-2-Clause +NASM_LICENSE_FILES = LICENSE + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/nbd/0001-avoid-name-clashing.patch b/buildroot/package/nbd/0001-avoid-name-clashing.patch new file mode 100644 index 0000000..b3ea9c9 --- /dev/null +++ b/buildroot/package/nbd/0001-avoid-name-clashing.patch @@ -0,0 +1,28 @@ +rename err() function to avoid clashing with err() form C library + +err() is a function available in the C library, so when static linking, +there is a clash at link timebecause the function is provided both by +nbd and the C library: + http://autobuild.buildroot.org/results/aa8/aa8a1ac35a93e1c8b9fddbc2b5d66ecaa921f31e/build-end.log + +Fix that by renaming err() to nbd_err() and providing a small maco +wrapper to avoid touching the many call sites. + +Signed-off-by: "Yann E. MORIN" + +--- +Upstream status: hack, not submitted. + +diff -durN nbd-3.11.orig/cliserv.h nbd-3.11/cliserv.h +--- nbd-3.11.orig/cliserv.h 2015-05-25 12:27:56.000000000 +0200 ++++ nbd-3.11/cliserv.h 2015-08-13 19:28:21.609467505 +0200 +@@ -75,7 +75,8 @@ + void setmysockopt(int sock); + void err_nonfatal(const char *s); + +-void err(const char *s) G_GNUC_NORETURN; ++void nbd_err(const char *s) G_GNUC_NORETURN; ++#define err(S) nbd_err(S) + + void logging(const char* name); + diff --git a/buildroot/package/nbd/Config.in b/buildroot/package/nbd/Config.in new file mode 100644 index 0000000..ad9fb5c --- /dev/null +++ b/buildroot/package/nbd/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_NBD + bool "nbd" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBGLIB2 + help + NBD is a set of utilities to configure network block devices, + allowing access to remote block devices over TCP/IP network. + + http://nbd.sf.net/ + +if BR2_PACKAGE_NBD + +config BR2_PACKAGE_NBD_CLIENT + bool "nbd client" + default y + help + The client part of NBD. + +config BR2_PACKAGE_NBD_SERVER + bool "nbd server" + help + The server part of NBD. + +config BR2_PACKAGE_NBD_TRDUMP + bool "nbd trdump" + help + Utility to dump server logs in human-readable form. + +endif + +comment "nbd needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/nbd/nbd.hash b/buildroot/package/nbd/nbd.hash new file mode 100644 index 0000000..03234fd --- /dev/null +++ b/buildroot/package/nbd/nbd.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/nbd/files/nbd/3.13/ +md5 f52a4ef8979d81e6c15a745236582fdf nbd-3.15.2.tar.xz +sha1 c8248dd76641a31189735407cd4d55fe63969c08 nbd-3.15.2.tar.xz diff --git a/buildroot/package/nbd/nbd.mk b/buildroot/package/nbd/nbd.mk new file mode 100644 index 0000000..82de1c4 --- /dev/null +++ b/buildroot/package/nbd/nbd.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# nbd +# +################################################################################ + +NBD_VERSION = 3.15.2 +NBD_SOURCE = nbd-$(NBD_VERSION).tar.xz +NBD_SITE = http://downloads.sourceforge.net/project/nbd/nbd/$(NBD_VERSION) +NBD_CONF_OPTS = --enable-lfs +NBD_DEPENDENCIES = libglib2 +NBD_LICENSE = GPL-2.0 +NBD_LICENSE_FILES = COPYING + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# We have linux/falloc.h +# but uClibc lacks fallocate(2) which is a glibc-ism +NBD_CONF_ENV = ac_cv_header_linux_falloc_h=no +endif + +ifneq ($(BR2_PACKAGE_NBD_CLIENT),y) +NBD_TOREMOVE += /usr/sbin/nbd-client +endif +ifneq ($(BR2_PACKAGE_NBD_SERVER),y) +NBD_TOREMOVE += /usr/bin/nbd-server +endif +ifneq ($(BR2_PACKAGE_NBD_TRDUMP),y) +NBD_TOREMOVE += /usr/bin/nbd-trdump +endif + +define NBD_CLEANUP_AFTER_INSTALL + rm -f $(addprefix $(TARGET_DIR), $(NBD_TOREMOVE)) +endef + +NBD_POST_INSTALL_TARGET_HOOKS += NBD_CLEANUP_AFTER_INSTALL + +$(eval $(autotools-package)) diff --git a/buildroot/package/ncdu/Config.in b/buildroot/package/ncdu/Config.in new file mode 100644 index 0000000..0e44034 --- /dev/null +++ b/buildroot/package/ncdu/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NCDU + bool "ncdu" + depends on BR2_USE_MMU # system() + select BR2_PACKAGE_NCURSES + help + ncdu is a disk usage analyzer with an ncurses interface + + http://dev.yorhel.nl/ncdu diff --git a/buildroot/package/ncdu/ncdu.hash b/buildroot/package/ncdu/ncdu.hash new file mode 100644 index 0000000..8a0c1d1 --- /dev/null +++ b/buildroot/package/ncdu/ncdu.hash @@ -0,0 +1,3 @@ +# From http://dev.yorhel.nl/download/ncdu-1.12.tar.gz.{md5,sha1} +md5 7365ac46c420bc511621216b1747984f ncdu-1.12.tar.gz +sha1 b79b1c44784f334dca74d89a49f49274f14cfeef ncdu-1.12.tar.gz diff --git a/buildroot/package/ncdu/ncdu.mk b/buildroot/package/ncdu/ncdu.mk new file mode 100644 index 0000000..d45e62d --- /dev/null +++ b/buildroot/package/ncdu/ncdu.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# ncdu +# +################################################################################ + +NCDU_VERSION = 1.12 +NCDU_SITE = http://dev.yorhel.nl/download + +NCDU_DEPENDENCIES = ncurses + +NCDU_LICENSE = MIT +NCDU_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/ncftp/Config.in b/buildroot/package/ncftp/Config.in new file mode 100644 index 0000000..6a939aa --- /dev/null +++ b/buildroot/package/ncftp/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_NCFTP + bool "ncftp" + # fork() + depends on BR2_USE_MMU + help + NcFTP Client (also known as just NcFTP) is a set of FREE + application programs implementing the File Transfer Protocol + (FTP). + + http://www.ncftp.com/ncftp/ + +if BR2_PACKAGE_NCFTP + +config BR2_PACKAGE_NCFTP_GET + bool "ncftpget" + default y + +config BR2_PACKAGE_NCFTP_PUT + bool "ncftpput" + default y + +config BR2_PACKAGE_NCFTP_LS + bool "ncftpls" + default y + +config BR2_PACKAGE_NCFTP_BATCH + bool "ncftpbatch/ncftpspooler" + default y + +config BR2_PACKAGE_NCFTP_BOOKMARKS + bool "ncftpbookmarks" + select BR2_PACKAGE_NCURSES + +endif diff --git a/buildroot/package/ncftp/ncftp.hash b/buildroot/package/ncftp/ncftp.hash new file mode 100644 index 0000000..f6f7310 --- /dev/null +++ b/buildroot/package/ncftp/ncftp.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 129e5954850290da98af012559e6743de193de0012e972ff939df9b604f81c23 ncftp-3.2.6-src.tar.gz diff --git a/buildroot/package/ncftp/ncftp.mk b/buildroot/package/ncftp/ncftp.mk new file mode 100644 index 0000000..c8c8942 --- /dev/null +++ b/buildroot/package/ncftp/ncftp.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# ncftp +# +################################################################################ + +NCFTP_VERSION = 3.2.6 +# use .gz as upstream .xz tarball has changed after the hash was added for +# 2017.02. Can be changed back to .xz when version is bumped +NCFTP_SOURCE = ncftp-$(NCFTP_VERSION)-src.tar.gz +NCFTP_SITE = ftp://ftp.ncftp.com/ncftp +NCFTP_TARGET_BINS = ncftp +NCFTP_LICENSE = Clarified Artistic License +NCFTP_LICENSE_FILES = doc/LICENSE.txt + +NCFTP_DEPENDENCIES = host-autoconf +NCFTP_CONF_OPTS = --disable-ccdv + +# The bundled configure script is generated by autoconf 2.13 and doesn't +# detect cross-compilation correctly. Therefore, we have to regenerate it. +# We need to pass -I because of the non-standard m4 directory name, and +# none of the other autotools are used, so the below is the easiest. +define NCFTP_RUN_AUTOCONF + (cd $(@D); $(HOST_DIR)/bin/autoconf -I$(@D)/autoconf_local/) +endef +NCFTP_PRE_CONFIGURE_HOOKS += NCFTP_RUN_AUTOCONF + +ifeq ($(BR2_PACKAGE_NCFTP_GET),y) +NCFTP_TARGET_BINS += ncftpget +endif + +ifeq ($(BR2_PACKAGE_NCFTP_PUT),y) +NCFTP_TARGET_BINS += ncftpput +endif + +ifeq ($(BR2_PACKAGE_NCFTP_LS),y) +NCFTP_TARGET_BINS += ncftpls +endif + +ifeq ($(BR2_PACKAGE_NCFTP_BATCH),y) +NCFTP_TARGET_BINS += ncftpbatch +NCFTP_INSTALL_NCFTP_BATCH = \ + ln -sf /usr/bin/ncftpbatch $(TARGET_DIR)/usr/bin/ncftpspooler +endif + +ifeq ($(BR2_PACKAGE_NCFTP_BOOKMARKS),y) +NCFTP_TARGET_BINS += ncftpbookmarks +NCFTP_DEPENDENCIES += ncurses +endif + +define NCFTP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(addprefix $(NCFTP_DIR)/bin/, $(NCFTP_TARGET_BINS)) $(TARGET_DIR)/usr/bin + $(NCFTP_INSTALL_NCFTP_BATCH) +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/ncmpc/Config.in b/buildroot/package/ncmpc/Config.in new file mode 100644 index 0000000..324d8f7 --- /dev/null +++ b/buildroot/package/ncmpc/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_NCMPC + bool "ncmpc" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # libglib2 -> gettext + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBMPDCLIENT + select BR2_PACKAGE_NCURSES + help + ncmpc is a fully featured MPD client, which runs in a terminal + (using ncurses). Its goal is to provide a keyboard oriented + and consistent interface to MPD, without wasting resources. + + http://www.musicpd.org/clients/ncmpc/ + +comment "ncmpc needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/ncmpc/ncmpc.hash b/buildroot/package/ncmpc/ncmpc.hash new file mode 100644 index 0000000..82fae1d --- /dev/null +++ b/buildroot/package/ncmpc/ncmpc.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 f9a26a3fc869cfdf0a16b0ea3e6512c2fe28a031bbc71b1d24a2bf0bbd3e15d9 ncmpc-0.27.tar.xz diff --git a/buildroot/package/ncmpc/ncmpc.mk b/buildroot/package/ncmpc/ncmpc.mk new file mode 100644 index 0000000..31b4f08 --- /dev/null +++ b/buildroot/package/ncmpc/ncmpc.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# ncmpc +# +################################################################################ + +NCMPC_VERSION_MAJOR = 0 +NCMPC_VERSION = $(NCMPC_VERSION_MAJOR).27 +NCMPC_SOURCE = ncmpc-$(NCMPC_VERSION).tar.xz +NCMPC_SITE = http://www.musicpd.org/download/ncmpc/$(NCMPC_VERSION_MAJOR) +NCMPC_DEPENDENCIES = host-pkgconf libglib2 libmpdclient ncurses +NCMPC_LICENSE = GPL-2.0+ +NCMPC_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/ncurses/0001-gcc-5.x-MKlib_gen.patch b/buildroot/package/ncurses/0001-gcc-5.x-MKlib_gen.patch new file mode 100644 index 0000000..df7c15f --- /dev/null +++ b/buildroot/package/ncurses/0001-gcc-5.x-MKlib_gen.patch @@ -0,0 +1,43 @@ +Fix gcc 5.x build failure + +Extracted from upstream commit +http://ncurses.scripts.mit.edu/?p=ncurses.git;a=commit;h=97bb4678dc03e753290b39bbff30ba2825df9517. + ++ modify MKlib_gen.sh to work around change in development version of + gcc introduced here: + https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html + https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00236.html + (reports by Marcus Shawcroft, Maohui Lei). + +Original author: Thomas E. Dickey +Signed-off-by: Mikhail Peselnik + +--- a/ncurses/base/MKlib_gen.sh 2015-08-06 20:48:24.000000000 -0400 ++++ b/ncurses/base/MKlib_gen.sh 2017-02-07 10:09:01.293962392 -0500 +@@ -491,11 +491,22 @@ + -e 's/gen_$//' \ + -e 's/ / /g' >>$TMP + ++cat >$ED1 < $ED2 ++cat $ED2 >$TMP ++ + $preprocessor $TMP 2>/dev/null \ +-| sed \ +- -e 's/ / /g' \ +- -e 's/^ //' \ +- -e 's/_Bool/NCURSES_BOOL/g' \ ++| sed -f $ED1 \ + | $AWK -f $AW2 \ + | sed -f $ED3 \ + | sed \ diff --git a/buildroot/package/ncurses/0002-recognise-uclinux.patch b/buildroot/package/ncurses/0002-recognise-uclinux.patch new file mode 100644 index 0000000..57dd4cf --- /dev/null +++ b/buildroot/package/ncurses/0002-recognise-uclinux.patch @@ -0,0 +1,29 @@ +aclocal: fix detection for uclinux hosts +uclinux is just a linux like the others... + +Signed-off-by: "Yann E. MORIN" +Signed-off-by: "Adam Duskett" + +--- a/aclocal.m4 2015-08-05 20:46:34.000000000 -0400 ++++ b/aclocal.m4 2017-02-07 09:58:17.770056849 -0500 +@@ -7656,7 +7656,7 @@ + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +-(linux*|gnu*|mint*|k*bsd*-gnu) ++(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu) + CF_GNU_SOURCE + ;; + (minix*) +diff -durN a/configure b/configure +--- a/configure 2015-08-05 05:20:32.000000000 -0400 ++++ b/configure 2017-02-07 09:58:52.883886426 -0500 +@@ -7869,7 +7869,7 @@ + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +-(linux*|gnu*|mint*|k*bsd*-gnu) ++(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu) + + echo "$as_me:7874: checking if we must define _GNU_SOURCE" >&5 + echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6 diff --git a/buildroot/package/ncurses/Config.in b/buildroot/package/ncurses/Config.in new file mode 100644 index 0000000..bb45bd8 --- /dev/null +++ b/buildroot/package/ncurses/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_NCURSES + bool "ncurses" + help + The Ncurses (new curses) library is a free software + emulation of curses in System V Release 4.0, and more. + + This package installs only a few vital termcap entries + + http://www.gnu.org/software/ncurses/ + +if BR2_PACKAGE_NCURSES + +config BR2_PACKAGE_NCURSES_WCHAR + bool "enable wide char support" + depends on BR2_USE_WCHAR + # Build broken @ curses.priv.h with bad declarations + depends on !(BR2_bfin && BR2_BINFMT_FLAT) + help + Enable wide char & UTF-8 support in ncurses libraries + +config BR2_PACKAGE_NCURSES_TARGET_PROGS + bool "ncurses programs" + help + Include ncurses programs in target (clear, reset, tput, ...) + +endif diff --git a/buildroot/package/ncurses/ncurses.hash b/buildroot/package/ncurses/ncurses.hash new file mode 100644 index 0000000..6bca143 --- /dev/null +++ b/buildroot/package/ncurses/ncurses.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 f551c24b30ce8bfb6e96d9f59b42fbea30fa3a6123384172f9e7284bcf647260 ncurses-6.0.tar.gz diff --git a/buildroot/package/ncurses/ncurses.mk b/buildroot/package/ncurses/ncurses.mk new file mode 100644 index 0000000..8d0eb1e --- /dev/null +++ b/buildroot/package/ncurses/ncurses.mk @@ -0,0 +1,158 @@ +################################################################################ +# +# ncurses +# +################################################################################ + +NCURSES_VERSION = 6.0 +NCURSES_SITE = $(BR2_GNU_MIRROR)/ncurses +NCURSES_INSTALL_STAGING = YES +NCURSES_DEPENDENCIES = host-ncurses +NCURSES_LICENSE = MIT with advertising clause +NCURSES_LICENSE_FILES = README +NCURSES_CONFIG_SCRIPTS = ncurses$(NCURSES_LIB_SUFFIX)6-config + +NCURSES_CONF_OPTS = \ + --without-cxx \ + --without-cxx-binding \ + --without-ada \ + --without-tests \ + --disable-big-core \ + --without-profile \ + --disable-rpath \ + --disable-rpath-hack \ + --enable-echo \ + --enable-const \ + --enable-overwrite \ + --enable-pc-files \ + --with-pkg-config-libdir="/usr/lib/pkgconfig" \ + $(if $(BR2_PACKAGE_NCURSES_TARGET_PROGS),,--without-progs) \ + --without-manpages + +ifeq ($(BR2_STATIC_LIBS),y) +NCURSES_CONF_OPTS += --without-shared --with-normal +else ifeq ($(BR2_SHARED_LIBS),y) +NCURSES_CONF_OPTS += --with-shared --without-normal +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +NCURSES_CONF_OPTS += --with-shared --with-normal +endif + +# configure can't find the soname for libgpm when cross compiling +ifeq ($(BR2_PACKAGE_GPM),y) +NCURSES_CONF_OPTS += --with-gpm=libgpm.so.2 +NCURSES_DEPENDENCIES += gpm +else +NCURSES_CONF_OPTS += --without-gpm +endif + +NCURSES_TERMINFO_FILES = \ + a/ansi \ + d/dumb \ + l/linux \ + p/putty \ + p/putty-256color \ + p/putty-vt100 \ + s/screen \ + s/screen-256color \ + v/vt100 \ + v/vt100-putty \ + v/vt102 \ + v/vt200 \ + v/vt220 \ + x/xterm \ + x/xterm+256color \ + x/xterm-256color \ + x/xterm-color \ + x/xterm-xfree86 + +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +NCURSES_CONF_OPTS += --enable-widec +NCURSES_LIB_SUFFIX = w +NCURSES_LIBS = ncurses menu panel form + +define NCURSES_LINK_LIBS_STATIC + $(foreach lib,$(NCURSES_LIBS:%=lib%), \ + ln -sf $(lib)$(NCURSES_LIB_SUFFIX).a $(STAGING_DIR)/usr/lib/$(lib).a + ) + ln -sf libncurses$(NCURSES_LIB_SUFFIX).a \ + $(STAGING_DIR)/usr/lib/libcurses.a +endef + +define NCURSES_LINK_LIBS_SHARED + $(foreach lib,$(NCURSES_LIBS:%=lib%), \ + ln -sf $(lib)$(NCURSES_LIB_SUFFIX).so $(STAGING_DIR)/usr/lib/$(lib).so + ) + ln -sf libncurses$(NCURSES_LIB_SUFFIX).so \ + $(STAGING_DIR)/usr/lib/libcurses.so +endef + +define NCURSES_LINK_PC + $(foreach pc,$(NCURSES_LIBS), \ + ln -sf $(pc)$(NCURSES_LIB_SUFFIX).pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/$(pc).pc + ) +endef + +NCURSES_LINK_STAGING_LIBS = \ + $(if $(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_STATIC);) \ + $(if $(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),$(call NCURSES_LINK_LIBS_SHARED)) + +NCURSES_LINK_STAGING_PC = $(call NCURSES_LINK_PC) + +NCURSES_CONF_OPTS += --enable-ext-colors + +NCURSES_POST_INSTALL_STAGING_HOOKS += NCURSES_LINK_STAGING_LIBS +NCURSES_POST_INSTALL_STAGING_HOOKS += NCURSES_LINK_STAGING_PC + +endif # BR2_PACKAGE_NCURSES_WCHAR + +ifneq ($(BR2_ENABLE_DEBUG),y) +NCURSES_CONF_OPTS += --without-debug +endif + +# ncurses breaks with parallel build, but takes quite a while to +# build single threaded. Work around it similar to how Gentoo does +define NCURSES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) sources + rm -rf $(@D)/misc/pc-files + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) +endef + +ifeq ($(BR2_PACKAGE_NCURSES_TARGET_PROGS),y) +define NCURSES_TARGET_SYMLINK_RESET + ln -sf tset $(TARGET_DIR)/usr/bin/reset +endef +NCURSES_POST_INSTALL_TARGET_HOOKS += NCURSES_TARGET_SYMLINK_RESET +endif + +define NCURSES_TARGET_CLEANUP_TERMINFO + $(RM) -rf $(TARGET_DIR)/usr/share/terminfo $(TARGET_DIR)/usr/share/tabset + $(foreach t,$(NCURSES_TERMINFO_FILES), \ + $(INSTALL) -D -m 0644 $(STAGING_DIR)/usr/share/terminfo/$(t) \ + $(TARGET_DIR)/usr/share/terminfo/$(t) + ) +endef +NCURSES_POST_INSTALL_TARGET_HOOKS += NCURSES_TARGET_CLEANUP_TERMINFO + +# +# On systems with an older version of tic, the installation of ncurses hangs +# forever. To resolve the problem, build a static version of tic on host +# ourselves, and use that during installation. +# +define HOST_NCURSES_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE1) -C $(@D) sources + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/progs tic +endef + +HOST_NCURSES_CONF_OPTS = \ + --with-shared \ + --without-gpm \ + --without-manpages \ + --without-cxx \ + --without-cxx-binding \ + --without-ada \ + --with-default-terminfo-dir=/usr/share/terminfo \ + --without-normal + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/ndisc6/Config.in b/buildroot/package/ndisc6/Config.in new file mode 100644 index 0000000..5531123 --- /dev/null +++ b/buildroot/package/ndisc6/Config.in @@ -0,0 +1,47 @@ +config BR2_PACKAGE_NDISC6 + bool "ndisc6 tools" + depends on BR2_USE_MMU # fork() + help + NDisc6 is a small collection of useful tools for IPv6 + networking + + http://www.remlab.net/ndisc6/ + +if BR2_PACKAGE_NDISC6 + +config BR2_PACKAGE_NDISC6_NAME2ADDR + bool "name2addr" + help + name2addr perform DNS lookups from scripts. + +config BR2_PACKAGE_NDISC6_NDISC6 + bool "ndisc6" + help + ndisc6 performs ICMPv6 Neighbor Discovery in userland. + +config BR2_PACKAGE_NDISC6_RDISC6 + bool "rdisc6" + help + rdisc6 performs ICMPv6 Router Discovery in userland. + +config BR2_PACKAGE_NDISC6_RDNSSD + bool "rdnssd" + help + IPv6 Recursive DNS Server discovery Daemon. + +config BR2_PACKAGE_NDISC6_RLTRACEROUTE6 + bool "rltraceroute6" + help + rltraceroute6 is an IPv6 traceroute implementation. + +config BR2_PACKAGE_NDISC6_TCPTRACEROUTE6 + bool "tcptraceroute6" + help + tcptraceroute6 is an TCP/IPv6 traceroute implementation. + +config BR2_PACKAGE_NDISC6_TCPSPRAY + bool "tcpspray" + help + TCP/IP bandwidth measurement tool (Discard and Echo client). + +endif diff --git a/buildroot/package/ndisc6/ndisc6.hash b/buildroot/package/ndisc6/ndisc6.hash new file mode 100644 index 0000000..e37e33e --- /dev/null +++ b/buildroot/package/ndisc6/ndisc6.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 0f41d6caf5f2edc1a12924956ae8b1d372e3b426bd7b11eed7d38bc974eec821 ndisc6-1.0.3.tar.bz2 diff --git a/buildroot/package/ndisc6/ndisc6.mk b/buildroot/package/ndisc6/ndisc6.mk new file mode 100644 index 0000000..eb4fbbb --- /dev/null +++ b/buildroot/package/ndisc6/ndisc6.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# ndisc6 +# +################################################################################ + +NDISC6_VERSION = 1.0.3 +NDISC6_SOURCE = ndisc6-$(NDISC6_VERSION).tar.bz2 +NDISC6_SITE = http://www.remlab.net/files/ndisc6 +NDISC6_CONF_ENV = CC="$(TARGET_CC) -std=gnu99" LIBS=$(TARGET_NLS_LIBS) +NDISC6_CONF_OPTS = --disable-rpath --disable-suid-install +NDISC6_LICENSE = GPL-2.0 or GPL-3.0 +NDISC6_LICENSE_FILES = COPYING +NDISC6_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +NDISC6_BIN_ += dnssort # perl script +NDISC6_BIN_$(BR2_PACKAGE_NDISC6_NAME2ADDR) += name2addr addr2name +NDISC6_BIN_$(BR2_PACKAGE_NDISC6_TCPSPRAY) += tcpspray tcpspray6 + +NDISC6_SBIN_$(BR2_PACKAGE_NDISC6_NDISC6) += ndisc6 +NDISC6_SBIN_$(BR2_PACKAGE_NDISC6_RDISC6) += rdisc6 +NDISC6_SBIN_$(BR2_PACKAGE_NDISC6_RDNSSD) += rdnssd +NDISC6_SBIN_$(BR2_PACKAGE_NDISC6_RLTRACEROUTE6) += rltraceroute6 tracert6 +NDISC6_SBIN_$(BR2_PACKAGE_NDISC6_TCPTRACEROUTE6) += tcptraceroute6 + +define NDISC6_REMOVE_UNNEEDED + rm -rf $(addprefix $(TARGET_DIR)/usr/bin/,$(NDISC6_BIN_)) \ + $(addprefix $(TARGET_DIR)/usr/sbin/,$(NDISC6_SBIN_)) + $(if $(BR2_PACKAGE_NDISC6_RDNSSD),,\ + rm -rf $(TARGET_DIR)/etc/rdnssd $(TARGET_DIR)/var/run/rdnssd) +endef + +NDISC6_POST_INSTALL_TARGET_HOOKS += NDISC6_REMOVE_UNNEEDED + +$(eval $(autotools-package)) diff --git a/buildroot/package/ne10/0001-CMakeLists-don-t-hard-code-thumb-code-generation.patch b/buildroot/package/ne10/0001-CMakeLists-don-t-hard-code-thumb-code-generation.patch new file mode 100644 index 0000000..f140a60 --- /dev/null +++ b/buildroot/package/ne10/0001-CMakeLists-don-t-hard-code-thumb-code-generation.patch @@ -0,0 +1,29 @@ +From 9ff39800cec5f1dabba246b253794582d611bc6d Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 20 Feb 2015 10:44:15 -0600 +Subject: [PATCH] CMakeLists: don't hard code thumb code generation + +Migrating to version 1.2.0 + +Signed-off-by: Baruch Siach +Signed-off-by: Clayton Shotwell +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fdf01ec..34ae26e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -84,7 +84,7 @@ if(ANDROID_PLATFORM) + ${ANDROID_TOOLCHAIN_PATH}/arm-linux-androideabi-ar + ${ANDROID_TOOLCHAIN_PATH}/arm-linux-androideabi-ranlib") + elseif(GNULINUX_PLATFORM) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mthumb-interwork -mthumb -march=armv7-a -mfpu=vfp3") ++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mthumb-interwork -march=armv7-a -mfpu=vfp3") + set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -mthumb-interwork -mthumb -march=armv7-a -mfpu=neon") + elseif(IOS_PLATFORM) + #set minimal target ios version.If not provided this option, Xcode +-- +1.9.1 + diff --git a/buildroot/package/ne10/Config.in b/buildroot/package/ne10/Config.in new file mode 100644 index 0000000..8d37579 --- /dev/null +++ b/buildroot/package/ne10/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_NE10 + bool "ne10" + depends on BR2_arm + depends on BR2_ARM_FPU_NEON || BR2_ARM_FPU_NEON_VFPV4 + help + The Ne10 project has been set up to provide a set of common, + useful functions which have been heavily optimized for the + ARM Architecture and provide consistent well tested behavior + that can be easily incorporated into applications. C + interfaces to the functions are provided for both assembler + and NEON implementations. + + http://projectne10.github.io/Ne10/ + +comment "ne10 needs a toolchain w/ neon" + depends on BR2_arm + depends on !(BR2_ARM_FPU_NEON || BR2_ARM_FPU_NEON_VFPV4) diff --git a/buildroot/package/ne10/ne10.hash b/buildroot/package/ne10/ne10.hash new file mode 100644 index 0000000..db5b6f1 --- /dev/null +++ b/buildroot/package/ne10/ne10.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 450dac5bb3a2351019ae23792e97c3bf965d16a21c0598b73cea9fbc3b3a56af ne10-v1.2.0.tar.gz diff --git a/buildroot/package/ne10/ne10.mk b/buildroot/package/ne10/ne10.mk new file mode 100644 index 0000000..cb303bd --- /dev/null +++ b/buildroot/package/ne10/ne10.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# ne10 +# +################################################################################ + +NE10_VERSION = v1.2.0 +NE10_SITE = $(call github,projectNe10,Ne10,$(NE10_VERSION)) +NE10_LICENSE = BSD-3-Clause or Apache-2.0 +NE10_LICENSE_FILES = doc/LICENSE +NE10_INSTALL_STAGING = YES + +NE10_CONF_OPTS = -DGNULINUX_PLATFORM=ON + +ifeq ($(BR2_STATIC_LIBS),) +NE10_CONF_OPTS += \ + -DNE10_BUILD_SHARED=ON +endif + +# The package does not have any install target, so have to provide +# INSTALL_STAGING_CMDS and INSTALL_TARGET_CMDS. + +ifeq ($(BR2_STATIC_LIBS),) +define NE10_INSTALL_STAGING_SHARED_LIB + cp -dpf $(@D)/modules/libNE10*.so* $(STAGING_DIR)/usr/lib/ +endef +endif + +define NE10_INSTALL_STAGING_CMDS + cp -dpf $(@D)/inc/NE10*h $(STAGING_DIR)/usr/include/ + cp -dpf $(@D)/modules/libNE10.a $(STAGING_DIR)/usr/lib/ + $(NE10_INSTALL_STAGING_SHARED_LIB) +endef + +define NE10_INSTALL_TARGET_CMDS + cp -dpf $(@D)/modules/libNE10*.so* $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(cmake-package)) diff --git a/buildroot/package/neard/Config.in b/buildroot/package/neard/Config.in new file mode 100644 index 0000000..277e467 --- /dev/null +++ b/buildroot/package/neard/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_NEARD + bool "neard" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl, dbus, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + depends on !BR2_STATIC_LIBS # dlopen + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBNL + help + Near Field Communication (NFC) manager. This userspace + daemon is a part of the NFC stack provided by the Linux NFC + project. + + http://git.kernel.org/?p=network/nfc/neard.git;a=summary + + https://01.org/linux-nfc/ + +if BR2_PACKAGE_NEARD + +config BR2_PACKAGE_NEARD_TOOLS + bool "neard tools" + help + Build and install neard tools. + +endif + +comment "neard needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/neard/S53neard b/buildroot/package/neard/S53neard new file mode 100755 index 0000000..f515668 --- /dev/null +++ b/buildroot/package/neard/S53neard @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Starts neard +# + +NAME=neard +DAEMON=/usr/libexec/nfc/$NAME + +# Exit gracefully if the package has been removed +[ -x $DAEMON ] || exit 0 + +case "$1" in + start) + printf "Starting $NAME: " + start-stop-daemon -S -q -p /var/run/${NAME}.pid -x $DAEMON -- -d '*' + echo "OK" + ;; + stop) + printf "Stopping $NAME: " + start-stop-daemon -K -q -p /var/run/${NAME}.pid + echo "OK" + ;; + restart|reload) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/neard/neard.hash b/buildroot/package/neard/neard.hash new file mode 100644 index 0000000..d1e74b3 --- /dev/null +++ b/buildroot/package/neard/neard.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/network/nfc/sha256sums.asc +sha256 eae3b11c541a988ec11ca94b7deab01080cd5b58cfef3ced6ceac9b6e6e65b36 neard-0.16.tar.xz diff --git a/buildroot/package/neard/neard.mk b/buildroot/package/neard/neard.mk new file mode 100644 index 0000000..a351469 --- /dev/null +++ b/buildroot/package/neard/neard.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# neard +# +################################################################################ + +NEARD_VERSION = 0.16 +NEARD_SOURCE = neard-$(NEARD_VERSION).tar.xz +NEARD_SITE = $(BR2_KERNEL_MIRROR)/linux/network/nfc +NEARD_LICENSE = GPL-2.0 +NEARD_LICENSE_FILES = COPYING + +NEARD_DEPENDENCIES = host-pkgconf dbus libglib2 libnl +NEARD_CONF_OPTS = --disable-traces + +ifeq ($(BR2_PACKAGE_NEARD_TOOLS),y) +NEARD_CONF_OPTS += --enable-tools +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +NEARD_CONF_OPTS += --enable-systemd +NEARD_DEPENDENCIES += systemd +else +NEARD_CONF_OPTS += --disable-systemd +endif + +define NEARD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/neard/S53neard \ + $(TARGET_DIR)/etc/init.d/S53neard +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/neardal/Config.in b/buildroot/package/neardal/Config.in new file mode 100644 index 0000000..c729283 --- /dev/null +++ b/buildroot/package/neardal/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_NEARDAL + bool "neardal" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, glib2 + depends on BR2_USE_MMU # dbus + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_READLINE if !BR2_PACKAGE_LIBEDIT + help + Provides a simple C API to exchange data with the neard NFC + manager daemon. + + https://github.com/connectivity/neardal + +if BR2_PACKAGE_NEARDAL + +config BR2_PACKAGE_NEARDAL_NCL + bool "ncl tool" + help + Build and install neardal ncl command line interpreter tool. + +endif + +comment "neardal needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/neardal/neardal.hash b/buildroot/package/neardal/neardal.hash new file mode 100644 index 0000000..c767a74 --- /dev/null +++ b/buildroot/package/neardal/neardal.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9955753759a2604fa47562a4bbccd3b787d625e70311bb6662936d89d26715b7 neardal-33b54a55032b047fd885a5eb3592c169c0056c49.tar.gz diff --git a/buildroot/package/neardal/neardal.mk b/buildroot/package/neardal/neardal.mk new file mode 100644 index 0000000..f3e55fd --- /dev/null +++ b/buildroot/package/neardal/neardal.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# neardal +# +################################################################################ + +NEARDAL_VERSION = 33b54a55032b047fd885a5eb3592c169c0056c49 +NEARDAL_SITE = $(call github,connectivity,neardal,$(NEARDAL_VERSION)) +NEARDAL_INSTALL_STAGING = YES +NEARDAL_LICENSE = GPL-2.0 +NEARDAL_LICENSE_FILES = COPYING + +NEARDAL_DEPENDENCIES = host-pkgconf dbus dbus-glib +NEARDAL_AUTORECONF = YES + +# Either readline or libedit are needed, and the Config.in file +# guarantees at least one of them is enabled +ifeq ($(BR2_PACKAGE_READLINE),y) +NEARDAL_DEPENDENCIES += readline +else ifeq ($(BR2_PACKAGE_LIBEDIT),y) +NEARDAL_DEPENDENCIES += libedit +endif + +# Both readline and libedit link with ncurses but the configure script +# forgets to take that into account, causing the detection to fail +# when linking statically +ifeq ($(BR2_STATIC_LIBS),y) +NEARDAL_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs ncurses`" +endif + +define NEARDAL_INSTALL_NCL + $(INSTALL) -m 0755 -D $(@D)/ncl/ncl $(TARGET_DIR)/usr/bin/ncl +endef + +ifeq ($(BR2_PACKAGE_NEARDAL_NCL),y) +NEARDAL_POST_INSTALL_TARGET_HOOKS += NEARDAL_INSTALL_NCL +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/neon/Config.in b/buildroot/package/neon/Config.in new file mode 100644 index 0000000..9831343 --- /dev/null +++ b/buildroot/package/neon/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_NEON + bool "libneon" + help + HTTP and WebDAV client library, with a C interface. + + http://www.webdav.org/neon/ + +if BR2_PACKAGE_NEON + +config BR2_PACKAGE_NEON_ZLIB + bool "ZLIB support" + select BR2_PACKAGE_ZLIB + help + build with ZLIB support + +config BR2_PACKAGE_NEON_SSL + bool "SSL support" + select BR2_PACKAGE_OPENSSL + help + build with SSL support + +# This is an hidden symbol other packages can select to ensure that +# Neon has XML support, either provided by Expat or libxml2. +config BR2_PACKAGE_NEON_XML + bool + select BR2_PACKAGE_NEON_EXPAT if !BR2_PACKAGE_NEON_LIBXML2 + +config BR2_PACKAGE_NEON_EXPAT + bool "XML support with expat" + depends on !BR2_PACKAGE_NEON_LIBXML2 + select BR2_PACKAGE_EXPAT + help + Enable XML support in neon, using the Expat XML library. + +config BR2_PACKAGE_NEON_LIBXML2 + bool "XML support with libxml2" + select BR2_PACKAGE_LIBXML2 + help + Enable XML support in neon, using the libxml2 XML library. + +endif diff --git a/buildroot/package/neon/neon.hash b/buildroot/package/neon/neon.hash new file mode 100644 index 0000000..d66b6fd --- /dev/null +++ b/buildroot/package/neon/neon.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca neon-0.30.2.tar.gz diff --git a/buildroot/package/neon/neon.mk b/buildroot/package/neon/neon.mk new file mode 100644 index 0000000..1b8eb36 --- /dev/null +++ b/buildroot/package/neon/neon.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# neon +# +################################################################################ + +NEON_VERSION = 0.30.2 +NEON_SITE = http://www.webdav.org/neon +NEON_LICENSE = LGPL-2.0+ (library), GPL-2.0+ (manual and tests) +NEON_LICENSE_FILES = src/COPYING.LIB test/COPYING README +NEON_INSTALL_STAGING = YES +NEON_CONF_OPTS = --without-gssapi --disable-rpath +NEON_CONFIG_SCRIPTS = neon-config +NEON_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_NEON_ZLIB),y) +NEON_CONF_OPTS += --with-zlib=$(STAGING_DIR) +NEON_DEPENDENCIES += zlib +else +NEON_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_NEON_SSL),y) +NEON_CONF_OPTS += --with-ssl +NEON_DEPENDENCIES += openssl +else +NEON_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_NEON_EXPAT),y) +NEON_CONF_OPTS += --with-expat=yes +NEON_DEPENDENCIES += expat +else +NEON_CONF_OPTS += --with-expat=no +endif + +ifeq ($(BR2_PACKAGE_NEON_LIBXML2),y) +NEON_CONF_OPTS += --with-libxml2=yes +NEON_CONF_ENV += ac_cv_prog_XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config +NEON_DEPENDENCIES += libxml2 +else +NEON_CONF_OPTS += --with-libxml2=no +endif + +ifeq ($(BR2_PACKAGE_NEON_EXPAT)$(BR2_PACKAGE_NEON_LIBXML2),) +# webdav needs xml support +NEON_CONF_OPTS += --disable-webdav +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/net-tools/Config.in b/buildroot/package/net-tools/Config.in new file mode 100644 index 0000000..5e24bd1 --- /dev/null +++ b/buildroot/package/net-tools/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_NET_TOOLS + bool "net-tools" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + A collection of programs that form the base set of the NET-3 + networking distribution for the Linux operating system. + Includes: arp, hostname, ifconfig, netstat, rarp, route, + plipconfig, slattach, mii-tool, iptunnel and ipmaddr. + + http://sourceforge.net/projects/net-tools/ diff --git a/buildroot/package/net-tools/net-tools.hash b/buildroot/package/net-tools/net-tools.hash new file mode 100644 index 0000000..766b6fa --- /dev/null +++ b/buildroot/package/net-tools/net-tools.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f7cfe9e73825bac9ab1a6f99d1fc7f54bfd9d33a6f62ba58d28a566905c4e86c net-tools-479bb4a7e11a4084e2935c0a576388f92469225b.tar.gz diff --git a/buildroot/package/net-tools/net-tools.mk b/buildroot/package/net-tools/net-tools.mk new file mode 100644 index 0000000..adab475 --- /dev/null +++ b/buildroot/package/net-tools/net-tools.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# net-tools +# +################################################################################ + +NET_TOOLS_VERSION = 479bb4a7e11a4084e2935c0a576388f92469225b +NET_TOOLS_SITE = git://git.code.sf.net/p/net-tools/code +NET_TOOLS_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +NET_TOOLS_LICENSE = GPL-2.0+ +NET_TOOLS_LICENSE_FILES = COPYING + +# Install after busybox for the full-blown versions +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +NET_TOOLS_DEPENDENCIES += busybox +endif + +define NET_TOOLS_CONFIGURE_CMDS + (cd $(@D); yes "" | ./configure.sh config.in ) +endef + +# Enable I18N when appropiate +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +define NET_TOOLS_ENABLE_I18N + $(SED) 's:I18N 0:I18N 1:' $(@D)/config.h +endef +endif + +# Enable IPv6 +define NET_TOOLS_ENABLE_IPV6 + $(SED) 's:_AFINET6 0:_AFINET6 1:' $(@D)/config.h +endef + +NET_TOOLS_POST_CONFIGURE_HOOKS += NET_TOOLS_ENABLE_I18N NET_TOOLS_ENABLE_IPV6 + +define NET_TOOLS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) \ + LDFLAGS="$(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)" \ + $(MAKE) -C $(@D) +endef + +# install renames conflicting binaries, update does not +# ifconfig & route reside in /sbin for busybox +define NET_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) update + mv -f $(TARGET_DIR)/bin/ifconfig $(TARGET_DIR)/sbin/ifconfig + mv -f $(TARGET_DIR)/bin/route $(TARGET_DIR)/sbin/route +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/netatalk/0001-Fix-setting-of-LD_LIBRARY_FLAGS-shlibpath_var.patch b/buildroot/package/netatalk/0001-Fix-setting-of-LD_LIBRARY_FLAGS-shlibpath_var.patch new file mode 100644 index 0000000..01d5776 --- /dev/null +++ b/buildroot/package/netatalk/0001-Fix-setting-of-LD_LIBRARY_FLAGS-shlibpath_var.patch @@ -0,0 +1,48 @@ +From 60d100713b5289948e9cdf5b0646ff3cdd2c206b Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Mon, 17 Dec 2012 22:32:44 +0100 +Subject: [PATCH] Fix setting of LD_LIBRARY_FLAGS ($shlibpath_var). + +LD_LIBRARY_PATH should not be set when cross-compiling, because it +adds the cross-libraries to the build's LD-path. + +Also the restoring of LD_LIBRARY_PATH was done incorrectly: it would +set LD_LIBRARY_PATH=LD_LIBRARY_PATH. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + macros/db3-check.m4 | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/macros/db3-check.m4 b/macros/db3-check.m4 +index 902220b..d5a5446 100644 +--- a/macros/db3-check.m4 ++++ b/macros/db3-check.m4 +@@ -94,7 +94,7 @@ if test "x$bdb_required" = "xyes"; then + savedldflags="$LDFLAGS" + savedcppflags="$CPPFLAGS" + savedlibs="$LIBS" +- saved_shlibpath_var=$shlibpath_var ++ eval saved_shlibpath_var=\$$shlibpath_var + + dnl required BDB version: 4.6, because of cursor API change + DB_MAJOR_REQ=4 +@@ -148,7 +148,7 @@ if test "x$bdb_required" = "xyes"; then + dnl -- LD_LIBRARY_PATH on many platforms. This will be fairly + dnl -- portable hopefully. Reference: + dnl -- http://lists.gnu.org/archive/html/autoconf/2009-03/msg00040.html +- eval export $shlibpath_var=$bdblibdir ++ test "$cross_compiling" = yes || eval export $shlibpath_var=$bdblibdir + NETATALK_BDB_TRY_LINK + eval export $shlibpath_var=$saved_shlibpath_var + +@@ -171,7 +171,7 @@ if test "x$bdb_required" = "xyes"; then + CPPFLAGS="-I${bdbdir}/include${subdir} $CPPFLAGS" + LDFLAGS="-L$bdblibdir $LDFLAGS" + +- eval export $shlibpath_var=$bdblibdir ++ test "$cross_compiling" = yes || eval export $shlibpath_var=$bdblibdir + NETATALK_BDB_TRY_LINK + eval export $shlibpath_var=$saved_shlibpath_var + +-- diff --git a/buildroot/package/netatalk/Config.in b/buildroot/package/netatalk/Config.in new file mode 100644 index 0000000..1560a18 --- /dev/null +++ b/buildroot/package/netatalk/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_NETATALK + bool "netatalk" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_BERKELEYDB + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBGPG_ERROR + help + Netatalk can be used to turn a *NIX machine into an + extremely high-performance and reliable file server for + Macintosh computers. + + http://netatalk.sourceforge.net/ + +comment "netatalk needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/netatalk/S50netatalk b/buildroot/package/netatalk/S50netatalk new file mode 100755 index 0000000..287b20d --- /dev/null +++ b/buildroot/package/netatalk/S50netatalk @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Start netatalk +# + +start() { + echo "Starting Netatalk" + start-stop-daemon -S -q -p /var/run/netatalk.pid --exec /usr/sbin/netatalk +} + +stop(){ + echo "Stopping Netatalk" + start-stop-daemon -K -q -p /var/run/netatalk.pid +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + start + stop + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/buildroot/package/netatalk/netatalk.hash b/buildroot/package/netatalk/netatalk.hash new file mode 100644 index 0000000..ce78373 --- /dev/null +++ b/buildroot/package/netatalk/netatalk.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/netatalk/files/netatalk/3.1.11/ +md5 8f79ce2a275b128ebb07188766f088fc netatalk-3.1.11.tar.bz2 +sha1 5aa7900e6f7de3c7ee812aa1130c1245d1974586 netatalk-3.1.11.tar.bz2 diff --git a/buildroot/package/netatalk/netatalk.mk b/buildroot/package/netatalk/netatalk.mk new file mode 100644 index 0000000..28a8750 --- /dev/null +++ b/buildroot/package/netatalk/netatalk.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# netatalk +# +################################################################################ + +NETATALK_VERSION = 3.1.11 +NETATALK_SITE = http://downloads.sourceforge.net/project/netatalk/netatalk/$(NETATALK_VERSION) +NETATALK_SOURCE = netatalk-$(NETATALK_VERSION).tar.bz2 +# For 0001-Fix-setting-of-LD_LIBRARY_FLAGS-shlibpath_var.patch +NETATALK_AUTORECONF = YES +NETATALK_CONFIG_SCRIPTS = netatalk-config +NETATALK_DEPENDENCIES = host-pkgconf openssl berkeleydb libgcrypt libgpg-error \ + libevent +NETATALK_LICENSE = GPL-2.0+, LGPL-3.0+, MIT-like +NETATALK_LICENSE_FILES = COPYING COPYRIGHT + +# Don't run ldconfig! +NETATALK_CONF_ENV += CC="$(TARGET_CC) -std=gnu99" \ + ac_cv_path_NETA_LDCONFIG="" +NETATALK_CONF_OPTS += \ + --with-cnid-cdb-backend \ + --with-bdb=$(STAGING_DIR)/usr \ + --with-ssl-dir=$(STAGING_DIR)/usr \ + --with-libgcrypt-dir=$(STAGING_DIR)/usr \ + --with-shadow \ + --disable-shell-check \ + --without-kerberos \ + --without-pam \ + --with-libevent=no \ + --with-dtrace=no \ + --with-mysql-config=no + +ifeq ($(BR2_PACKAGE_ACL),y) +NETATALK_DEPENDENCIES += acl +else +NETATALK_CONF_OPTS += --with-acls=no +endif + +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy) +NETATALK_DEPENDENCIES += avahi +NETATALK_CONF_OPTS += --enable-zeroconf=$(STAGING_DIR)/usr +else +NETATALK_CONF_OPTS += --disable-zeroconf +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +NETATALK_DEPENDENCIES += cups +NETATALK_CONF_ENV += ac_cv_path_CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config +NETATALK_CONF_OPTS += --enable-cups +else +NETATALK_CONF_OPTS += --disable-cups +endif + +define NETATALK_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/netatalk/S50netatalk \ + $(TARGET_DIR)/etc/init.d/S50netatalk +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/netcat-openbsd/Config.in b/buildroot/package/netcat-openbsd/Config.in new file mode 100644 index 0000000..4734ff9 --- /dev/null +++ b/buildroot/package/netcat-openbsd/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_NETCAT_OPENBSD + bool "netcat-openbsd" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_PACKAGE_LIBBSD + help + A simple Unix utility which reads and writes data across + network connections using TCP or UDP protocol. It is + designed to be a reliable "back-end" tool that can be used + directly or easily driven by other programs and scripts. At + the same time it is a feature-rich network debugging and + exploration tool, since it can create almost any kind of + connection you would need and has several interesting + built-in capabilities. + + This package contains the OpenBSD rewrite of netcat, + including support for IPv6, proxies, and Unix sockets. + + https://packages.debian.org/sid/netcat-openbsd + +comment "netcat-openbsd needs a glibc toolchain w/ threads, headers >= 3.12" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/netcat-openbsd/netcat-openbsd.hash b/buildroot/package/netcat-openbsd/netcat-openbsd.hash new file mode 100644 index 0000000..1bf62bb --- /dev/null +++ b/buildroot/package/netcat-openbsd/netcat-openbsd.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 63d72b4e5ea629af148d6d655125dcbe48f4996a8a2a8c5e234c62eba2856b5f netcat-openbsd-debian_1.187-1.tar.gz +sha256 e2e86d58c38f044a49f51e45515747585db58a2305419c73323eaad88fcaef5c debian/copyright diff --git a/buildroot/package/netcat-openbsd/netcat-openbsd.mk b/buildroot/package/netcat-openbsd/netcat-openbsd.mk new file mode 100644 index 0000000..6d3be50 --- /dev/null +++ b/buildroot/package/netcat-openbsd/netcat-openbsd.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# netcat-openbsd +# +################################################################################ + +NETCAT_OPENBSD_VERSION = debian/1.187-1 +NETCAT_OPENBSD_SITE = git://anonscm.debian.org/collab-maint/netcat-openbsd +NETCAT_OPENBSD_LICENSE = BSD-3-Clause +NETCAT_OPENBSD_LICENSE_FILES = debian/copyright +NETCAT_OPENBSD_DEPENDENCIES = host-pkgconf libbsd + +# Ensure Busybox gets built/installed before, so that this package +# overrides Busybox nc. +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +NETCAT_OPENBSD_DEPENDENCIES += busybox +endif + +define NETCAT_OPENBSD_APPLY_DEBIAN_PATCHES + if [ -d $(@D)/debian/patches ]; then \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches *.dpatch; \ + fi +endef + +NETCAT_OPENBSD_POST_PATCH_HOOKS += NETCAT_OPENBSD_APPLY_DEBIAN_PATCHES + +define NETCAT_OPENBSD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define NETCAT_OPENBSD_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/nc $(TARGET_DIR)/usr/bin/nc +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/netcat/0001-signed-bit-counting.patch b/buildroot/package/netcat/0001-signed-bit-counting.patch new file mode 100644 index 0000000..e29da31 --- /dev/null +++ b/buildroot/package/netcat/0001-signed-bit-counting.patch @@ -0,0 +1,30 @@ +# Fix the endian-specific bit-counting code so that it works. +# SF:1068324 "netcat_flag_count() fix" +# http://sourceforge.net/tracker/?func=detail&aid=1205729&group_id=52204&atid=466046 +# SF:1205729 "doen't work on arm linux platform": +# http://sourceforge.net/tracker/?func=detail&aid=1068324&group_id=52204&atid=466046 + +Index: netcat-0.7.1/src/flagset.c +=================================================================== +--- netcat-0.7.1.orig/src/flagset.c 2010-07-19 13:51:46.000000000 +0100 ++++ netcat-0.7.1/src/flagset.c 2010-07-19 13:52:27.000000000 +0100 +@@ -134,7 +134,7 @@ + + int netcat_flag_count(void) + { +- register char c; ++ register unsigned char c; + register int i; + int ret = 0; + +@@ -154,8 +154,8 @@ + Assumed that the bit number 1 is the sign, and that we will shift the + bit 1 (or the bit that takes its place later) until the the most right, + WHY it has to keep the wrong sign? */ +- ret -= (c >> 7); +- c <<= 1; ++ ret += c&1; ++ c>>=1; + } + } + diff --git a/buildroot/package/netcat/Config.in b/buildroot/package/netcat/Config.in new file mode 100644 index 0000000..26bc7fa --- /dev/null +++ b/buildroot/package/netcat/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_NETCAT + bool "netcat" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Netcat is a featured networking utility which reads and + writes data across network connections, using the TCP/IP + protocol. + It is designed to be a reliable "back-end" tool that can be + used directly or easily driven by other programs and + scripts. At the same time, it is a feature-rich network + debugging and exploration tool, since it can create almost + any kind of connection you would need and has several + interesting built-in capabilities. + + http://netcat.sourceforge.net/download.php diff --git a/buildroot/package/netcat/netcat.hash b/buildroot/package/netcat/netcat.hash new file mode 100644 index 0000000..e20c4c2 --- /dev/null +++ b/buildroot/package/netcat/netcat.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 30719c9a4ffbcf15676b8f528233ccc54ee6cba96cb4590975f5fd60c68a066f netcat-0.7.1.tar.gz diff --git a/buildroot/package/netcat/netcat.mk b/buildroot/package/netcat/netcat.mk new file mode 100644 index 0000000..eb7ddca --- /dev/null +++ b/buildroot/package/netcat/netcat.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# netcat +# +################################################################################ + +NETCAT_VERSION = 0.7.1 +NETCAT_SITE = http://downloads.sourceforge.net/project/netcat/netcat/$(NETCAT_VERSION) +NETCAT_LICENSE = GPL-2.0+ +NETCAT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/netperf/Config.in b/buildroot/package/netperf/Config.in new file mode 100644 index 0000000..2f36b1b --- /dev/null +++ b/buildroot/package/netperf/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_NETPERF + bool "netperf" + help + Network performance benchmark tool + + http://www.netperf.org/ diff --git a/buildroot/package/netperf/netperf.hash b/buildroot/package/netperf/netperf.hash new file mode 100644 index 0000000..f972740 --- /dev/null +++ b/buildroot/package/netperf/netperf.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 842af17655835c8be7203808c3393e6cb327a8067f3ed1f1053eb78b4e40375a netperf-2.7.0.tar.bz2 diff --git a/buildroot/package/netperf/netperf.mk b/buildroot/package/netperf/netperf.mk new file mode 100644 index 0000000..8b22808 --- /dev/null +++ b/buildroot/package/netperf/netperf.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# netperf +# +################################################################################ + +NETPERF_VERSION = 2.7.0 +NETPERF_SITE = ftp://ftp.netperf.org/netperf +NETPERF_SOURCE = netperf-$(NETPERF_VERSION).tar.bz2 +# gcc 5+ defaults to gnu99 which breaks netperf +NETPERF_CONF_ENV = \ + ac_cv_func_setpgrp_void=set \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu89" +NETPERF_CONF_OPTS = --enable-demo=yes +NETPERF_LICENSE = netperf license +NETPERF_LICENSE_FILES = COPYING + +define NETPERF_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/src/netperf \ + $(TARGET_DIR)/usr/bin/netperf + $(INSTALL) -m 0755 $(@D)/src/netserver \ + $(TARGET_DIR)/usr/bin/netserver +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/netplug/0001-makefile-flags.patch b/buildroot/package/netplug/0001-makefile-flags.patch new file mode 100644 index 0000000..b2468f8 --- /dev/null +++ b/buildroot/package/netplug/0001-makefile-flags.patch @@ -0,0 +1,21 @@ +Preserve the cflags settings, because buildroot clobbers them. + +--- a/Makefile 2010-10-05 00:06:38.000000000 -0700 ++++ b/Makefile 2010-10-05 00:15:27.000000000 -0700 +@@ -11,11 +11,14 @@ mandir ?= $(prefix)/usr/share/man + + install_opts := + +-CFLAGS += -Wall -std=gnu99 -DNP_ETC_DIR='"$(etcdir)"' \ ++NETPLUG_CFLAGS += -Wall -std=gnu99 -DNP_ETC_DIR='"$(etcdir)"' \ + -DNP_SCRIPT_DIR='"$(scriptdir)"' -ggdb3 -O3 -DNP_VERSION='"$(version)"' + ++%.o: %.c ++ $(CC) $(NETPLUG_CFLAGS) $(CFLAGS) -c -o $@ $< ++ + netplugd: config.o netlink.o lib.o if_info.o main.o +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC) $(LDFLAGS) -o $@ $(NETPLUG_CFLAGS) $^ + + install: + install -d $(install_opts) -m 755 \ diff --git a/buildroot/package/netplug/0002-add-missing-time-include.patch b/buildroot/package/netplug/0002-add-missing-time-include.patch new file mode 100644 index 0000000..f204c92 --- /dev/null +++ b/buildroot/package/netplug/0002-add-missing-time-include.patch @@ -0,0 +1,20 @@ +Add missing include + +netplug.h uses time_t, so it must include . This fixes a build +issue with the musl C library. + +Signed-off-by: Thomas Petazzoni + +Index: b/netplug.h +=================================================================== +--- a/netplug.h ++++ b/netplug.h +@@ -20,7 +20,7 @@ + #ifndef __netplug_h + #define __netplug_h + +- ++#include + #include + #include + #include diff --git a/buildroot/package/netplug/0003-remove-assert-fail.patch b/buildroot/package/netplug/0003-remove-assert-fail.patch new file mode 100644 index 0000000..635c462 --- /dev/null +++ b/buildroot/package/netplug/0003-remove-assert-fail.patch @@ -0,0 +1,51 @@ +Remove __assert_fail() + +The netplug code uses the assert() macro in various places. In glibc +internally, assert() uses a function called __assert_fail() to print a +message and abort. Relying on internal glibc details, netplug +re-defines __assert_fail() in the hope that it will get called instead +of glibc internal version. + +This attempt: + + * Doesn't work with uClibc, which doesn't use any __assert_fail() + function at all. It doesn't fail to build, but it is entirely + useless. + + * Fails to build with musl, which also defines __assert_fail(), but + with a different prototype. + +We simply remove the __assert_fail() implementation, so that the C +library implementation of assert() just does its normal work. The only +functionality lost is that the message is displayed on the standard +output rather than in netplug's logs (and this was only working with +glibc anyway). + +Signed-off-by: Thomas Petazzoni + +Index: b/lib.c +=================================================================== +--- a/lib.c ++++ b/lib.c +@@ -199,21 +199,6 @@ + return x; + } + +- +-void +-__assert_fail(const char *assertion, const char *file, +- unsigned int line, const char *function) +-{ +- do_log(LOG_CRIT, "%s:%u: %s%sAssertion `%s' failed", +- file, line, +- function ? function : "", +- function ? ": " : "", +- assertion); +- +- abort(); +-} +- +- + /* + * Local variables: + * c-file-style: "stroustrup" diff --git a/buildroot/package/netplug/Config.in b/buildroot/package/netplug/Config.in new file mode 100644 index 0000000..593c08a --- /dev/null +++ b/buildroot/package/netplug/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NETPLUG + bool "netplug" + depends on BR2_USE_MMU # fork() + help + A Linux daemon that manages network interfaces in + response to network cables being plugged in and out. + + http://www.red-bean.com/~bos/ diff --git a/buildroot/package/netplug/S29netplug b/buildroot/package/netplug/S29netplug new file mode 100755 index 0000000..6645906 --- /dev/null +++ b/buildroot/package/netplug/S29netplug @@ -0,0 +1,70 @@ +#!/bin/sh +# +# netplugd This shell script takes care of starting and stopping +# the network plug management daemon. +# +# chkconfig: - 11 89 +# description: netplugd is a daemon for managing non-static network \ +# interfaces. +# processname: netplugd +# pidfile: /var/run/netplugd.pid + +# Copyright 2003 Key Research, Inc. + +# Create needed directories +mkdir -p /var/lock/subsys + +# Source function library. +if [ -f /etc/init.d/functions ]; then + . /etc/init.d/functions +elif [ -f /etc/rc.d/init.d/functions ]; then + . /etc/rc.d/init.d/functions +fi + +# Source networking configuration. +if [ -f /etc/default/network ]; then + . /etc/default/network + + # Check that networking is up. + [ ${NETWORKING} = "no" ] && exit 0 +elif [ ! -f /etc/network/interfaces ]; then + # No network support + exit 0 +fi + +if [ -f /etc/default/netplugd ]; then + . /etc/default/netplugd +fi + +# See how we were called. +case "$1" in + start) + # Start daemon. + printf "Starting network plug daemon: " + start-stop-daemon -S -q -x /sbin/netplugd -- -p /var/run/netplugd.pid ${NETPLUGDARGS} + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/netplugd + ;; + stop) + # Stop daemon. + printf "Shutting down network plug daemon: " + start-stop-daemon -K -q -p /var/run/netplugd.pid + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/netplugd + ;; + restart|reload) + $0 stop + $0 start + ;; + condrestart) + [ -f /var/lock/subsys/netplugd ] && $0 restart || : + ;; + *) + echo "Usage: $0 {start|stop|restart}" + RETVAL=1 + ;; +esac + +exit $RETVAL diff --git a/buildroot/package/netplug/netplug-script b/buildroot/package/netplug/netplug-script new file mode 100755 index 0000000..1af714d --- /dev/null +++ b/buildroot/package/netplug/netplug-script @@ -0,0 +1,57 @@ +#!/bin/sh +# +# netplug - policy agent for netplugd +# +# Copyright 2003 Key Research, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2, as +# published by the Free Software Foundation. You are forbidden from +# redistributing or modifying it under the terms of any other license, +# including other versions of the GNU General Public License. +# +# 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. + + +PATH=/usr/bin:/bin:/usr/sbin:/sbin +export PATH + +dev="$1" +action="$2" + +case "$action" in +in) + if [ -x /sbin/ifup ]; then + exec /sbin/ifup $dev + else + echo "Please teach me how to plug in an interface!" 1>&2 + exit 1 + fi + ;; +out) + if [ -x /sbin/ifdown ]; then + # At least on Fedora Core 1, the call to ip addr flush infloops + # /sbin/ifdown $dev && exec /sbin/ip addr flush $dev + exec /sbin/ifdown $dev + else + echo "Please teach me how to unplug an interface!" 1>&2 + exit 1 + fi + ;; +probe) + # exec /sbin/ip link set $dev up >/dev/null 2>&1 + if [ -x /sbin/ifconfig ]; then + exec /sbin/ifconfig $dev up >/dev/null 2>&1 + else + echo "Failed to probe an interface!" 1>&2 + exit 1 + fi + ;; +*) + echo "I have been called with a funny action of '%s'!" 1>&2 + exit 1 + ;; +esac diff --git a/buildroot/package/netplug/netplug.hash b/buildroot/package/netplug/netplug.hash new file mode 100644 index 0000000..16a98b7 --- /dev/null +++ b/buildroot/package/netplug/netplug.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5180dfd9a7d3d0633a027b0a04f01b45a6a64623813cd48bd54423b90814864e netplug-1.2.9.2.tar.bz2 diff --git a/buildroot/package/netplug/netplug.mk b/buildroot/package/netplug/netplug.mk new file mode 100644 index 0000000..9363a71 --- /dev/null +++ b/buildroot/package/netplug/netplug.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# netplug +# +################################################################################ + +NETPLUG_VERSION = 1.2.9.2 +NETPLUG_SOURCE = netplug-$(NETPLUG_VERSION).tar.bz2 +NETPLUG_SITE = http://www.red-bean.com/~bos/netplug +NETPLUG_LICENSE = GPL-2.0 +NETPLUG_LICENSE_FILES = COPYING + +define NETPLUG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define NETPLUG_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +define NETPLUG_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/netplug/S29netplug \ + $(TARGET_DIR)/etc/init.d/S29netplug +endef + +define NETPLUG_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/netplug/netplug.service \ + $(TARGET_DIR)/usr/lib/systemd/system/netplug.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/netplug.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/netplug.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/netplug/netplug.service b/buildroot/package/netplug/netplug.service new file mode 100644 index 0000000..017a21f --- /dev/null +++ b/buildroot/package/netplug/netplug.service @@ -0,0 +1,10 @@ +[Unit] +Description=Network cable hotplug management daemon +After=syslog.target network.target + +[Service] +ExecStart=/sbin/netplugd -F +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/netsniff-ng/Config.in b/buildroot/package/netsniff-ng/Config.in new file mode 100644 index 0000000..c4803b2 --- /dev/null +++ b/buildroot/package/netsniff-ng/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_NETSNIFF_NG + bool "netsniff-ng" + # Build with uClibc fails due to missing ceill() + depends on !BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBCLI + select BR2_PACKAGE_LIBNETFILTER_CONNTRACK + select BR2_PACKAGE_LIBURCU + select BR2_PACKAGE_LIBNET + help + netsniff-ng is a free, performant Linux network analyzer and + networking toolkit. If you will, the Swiss army knife for + network packets. + + http://netsniff-ng.org + +comment "netsniff-ng needs a glibc or musl toolchain w/ threads, headers >= 3.0" + depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC \ + || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/buildroot/package/netsniff-ng/netsniff-ng.hash b/buildroot/package/netsniff-ng/netsniff-ng.hash new file mode 100644 index 0000000..576e000 --- /dev/null +++ b/buildroot/package/netsniff-ng/netsniff-ng.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking signature +sha256 fd67150e0954b7079b6d0c72fb0ef1f34091357ad559b45c68e8752376bdc307 netsniff-ng-0.6.4.tar.xz diff --git a/buildroot/package/netsniff-ng/netsniff-ng.mk b/buildroot/package/netsniff-ng/netsniff-ng.mk new file mode 100644 index 0000000..fb1c2c7 --- /dev/null +++ b/buildroot/package/netsniff-ng/netsniff-ng.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# netsniff-ng +# +################################################################################ + +NETSNIFF_NG_VERSION = 0.6.4 +NETSNIFF_NG_SITE = http://pub.netsniff-ng.org/netsniff-ng +NETSNIFF_NG_SOURCE = netsniff-ng-$(NETSNIFF_NG_VERSION).tar.xz +NETSNIFF_NG_LICENSE = GPL-2.0 +NETSNIFF_NG_LICENSE_FILES = README COPYING +# Prevent netsniff-ng configure script from finding a host installed nacl +NETSNIFF_NG_CONF_ENV = \ + NACL_INC_DIR=/dev/null \ + NACL_LIB_DIR=/dev/null +NETSNIFF_NG_DEPENDENCIES = \ + libnl libpcap libcli libnetfilter_conntrack \ + liburcu libnet + +ifeq ($(BR2_PACKAGE_GEOIP),y) +NETSNIFF_NG_DEPENDENCIES += geoip +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +NETSNIFF_NG_DEPENDENCIES += ncurses +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +NETSNIFF_NG_DEPENDENCIES += zlib +endif + +# hand-written configure script and makefile +define NETSNIFF_NG_CONFIGURE_CMDS + (cd $(@D); \ + $(NETSNIFF_NG_CONF_ENV) \ + $(TARGET_CONFIGURE_ARGS) \ + $(TARGET_CONFIGURE_OPTS) \ + ./configure \ + --prefix=$(TARGET_DIR)/usr \ + ) +endef + +define NETSNIFF_NG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define NETSNIFF_NG_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + PREFIX=$(TARGET_DIR)/usr ETCDIR=$(TARGET_DIR)/etc install -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/netsnmp/0001-configure-Eliminate-the-hard-coded-libnl-3-include-p.patch b/buildroot/package/netsnmp/0001-configure-Eliminate-the-hard-coded-libnl-3-include-p.patch new file mode 100644 index 0000000..cf05922 --- /dev/null +++ b/buildroot/package/netsnmp/0001-configure-Eliminate-the-hard-coded-libnl-3-include-p.patch @@ -0,0 +1,300 @@ +From 57d6c3d36045aab8957ffeb7324728bf17faf8bd Mon Sep 17 00:00:00 2001 +From: Bart Van Assche +Date: Mon, 2 Feb 2015 20:31:29 +0100 +Subject: [PATCH] configure: Eliminate the hard-coded libnl-3 include path + +See also commit 3dde41998625fe0e24119a2e1f4509ba3ba2fd9a. + +(cherry picked from commit 852dcd644cfe4cfc7177649eaec163d6221f2be1) + +Original commit included modifications to configure script. +Do not keep these modifications, since they caused lots of conflicts, and +configure script is meant to be automatically generated. + +Signed-off-by: Julien Floret + +Conflicts: + configure +--- + aclocal.m4 | 1 + + configure.d/config_os_libs2 | 30 ++++++- + m4/pkg.m4 | 214 ++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 243 insertions(+), 2 deletions(-) + create mode 100644 m4/pkg.m4 + +diff --git a/aclocal.m4 b/aclocal.m4 +index cd80c7486f2f..45e3608ed480 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -22,3 +22,4 @@ m4_include([m4/ltversion.m4]) + m4_include([m4/lt~obsolete.m4]) + m4_include([m4/netsnmp_arg.m4]) + m4_include([m4/netsnmp_search_libs.m4]) ++m4_include([m4/pkg.m4]) +diff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2 +index 47491e24ce0a..10bd414b879e 100644 +--- a/configure.d/config_os_libs2 ++++ b/configure.d/config_os_libs2 +@@ -225,11 +225,37 @@ fi + if test "x$with_nl" != "xno"; then + case $target_os in + linux*) # Check for libnl (linux) ++ # The test below verifies whether the libnl-3 package been installed. ++ # This test works as follows: ++ # - If pkg-config was not installed at the time autogen.sh was run, ++ # the definition of the PKG_CHECK_EXISTS() macro will not be found by ++ # autogen.sh. Augogen.sh will generate a configure script that prints ++ # a warning about pkg-config and proceeds as if libnl-3 has not been ++ # installed. ++ # - If pkg-config was installed at the time autogen.sh was run, ++ # the generated configure script will try to detect the presence of ++ # the libnl-3 library by looking up compile and linker flags in the ++ # file called libnl-3.pc. ++ # - pkg-config settings can be overridden via the configure variables ++ # LIBNL3_CFLAGS and LIBNL3_LIBS (added by the pkg-config m4 macro's to ++ # the configure script -- see also ./configure --help). ++ # - The LIBNL3_CFLAGS and LIBNL3_LIBS configure variables can be used ++ # even if the pkg-config executable is not present on the system on ++ # which the configure script is run. ++ ifdef( ++ [PKG_CHECK_EXISTS], ++ [PKG_CHECK_EXISTS([libnl-3.0], ++ [PKG_CHECK_MODULES([LIBNL3], [libnl-3.0])]) ++ ], ++ AC_MSG_WARN([pkg-config has not been installed or is too old.]) ++ AC_MSG_WARN([Detection of libnl-3.0 will be skipped.]) ++ ) ++ + netsnmp_save_CPPFLAGS="$CPPFLAGS" +- CPPFLAGS="-I/usr/include/libnl3 $CPPFLAGS" ++ CPPFLAGS="${LIBNL3_CFLAGS} $CPPFLAGS" + NETSNMP_SEARCH_LIBS(nl_connect, nl-3, + [AC_CHECK_HEADERS(netlink/netlink.h) +- EXTERNAL_MIBGROUP_INCLUDES="$EXTERNAL_MIBGROUP_INCLUDES -I/usr/include/libnl3"], ++ EXTERNAL_MIBGROUP_INCLUDES="$EXTERNAL_MIBGROUP_INCLUDES ${LIBNL3_CFLAGS}"], + [CPPFLAGS="$netsnmp_save_CPPFLAGS"], [], [], [LMIBLIBS]) + if test "x$ac_cv_header_netlink_netlink_h" != xyes; then + NETSNMP_SEARCH_LIBS(nl_connect, nl, [ +diff --git a/m4/pkg.m4 b/m4/pkg.m4 +new file mode 100644 +index 000000000000..c5b26b52e6cd +--- /dev/null ++++ b/m4/pkg.m4 +@@ -0,0 +1,214 @@ ++# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- ++# serial 1 (pkg-config-0.24) ++# ++# Copyright © 2004 Scott James Remnant . ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# PKG_PROG_PKG_CONFIG([MIN-VERSION]) ++# ---------------------------------- ++AC_DEFUN([PKG_PROG_PKG_CONFIG], ++[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) ++m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) ++m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) ++AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) ++AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) ++AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) ++ ++if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then ++ AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) ++fi ++if test -n "$PKG_CONFIG"; then ++ _pkg_min_version=m4_default([$1], [0.9.0]) ++ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) ++ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then ++ AC_MSG_RESULT([yes]) ++ else ++ AC_MSG_RESULT([no]) ++ PKG_CONFIG="" ++ fi ++fi[]dnl ++])# PKG_PROG_PKG_CONFIG ++ ++# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) ++# ++# Check to see whether a particular set of modules exists. Similar ++# to PKG_CHECK_MODULES(), but does not set variables or print errors. ++# ++# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) ++# only at the first occurence in configure.ac, so if the first place ++# it's called might be skipped (such as if it is within an "if", you ++# have to call PKG_CHECK_EXISTS manually ++# -------------------------------------------------------------- ++AC_DEFUN([PKG_CHECK_EXISTS], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++if test -n "$PKG_CONFIG" && \ ++ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then ++ m4_default([$2], [:]) ++m4_ifvaln([$3], [else ++ $3])dnl ++fi]) ++ ++# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) ++# --------------------------------------------- ++m4_define([_PKG_CONFIG], ++[if test -n "$$1"; then ++ pkg_cv_[]$1="$$1" ++ elif test -n "$PKG_CONFIG"; then ++ PKG_CHECK_EXISTS([$3], ++ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` ++ test "x$?" != "x0" && pkg_failed=yes ], ++ [pkg_failed=yes]) ++ else ++ pkg_failed=untried ++fi[]dnl ++])# _PKG_CONFIG ++ ++# _PKG_SHORT_ERRORS_SUPPORTED ++# ----------------------------- ++AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) ++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then ++ _pkg_short_errors_supported=yes ++else ++ _pkg_short_errors_supported=no ++fi[]dnl ++])# _PKG_SHORT_ERRORS_SUPPORTED ++ ++ ++# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], ++# [ACTION-IF-NOT-FOUND]) ++# ++# ++# Note that if there is a possibility the first call to ++# PKG_CHECK_MODULES might not happen, you should be sure to include an ++# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac ++# ++# ++# -------------------------------------------------------------- ++AC_DEFUN([PKG_CHECK_MODULES], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl ++AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl ++ ++pkg_failed=no ++AC_MSG_CHECKING([for $1]) ++ ++_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) ++_PKG_CONFIG([$1][_LIBS], [libs], [$2]) ++ ++m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS ++and $1[]_LIBS to avoid the need to call pkg-config. ++See the pkg-config man page for more details.]) ++ ++if test $pkg_failed = yes; then ++ AC_MSG_RESULT([no]) ++ _PKG_SHORT_ERRORS_SUPPORTED ++ if test $_pkg_short_errors_supported = yes; then ++ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` ++ else ++ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` ++ fi ++ # Put the nasty error message in config.log where it belongs ++ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ++ ++ m4_default([$4], [AC_MSG_ERROR( ++[Package requirements ($2) were not met: ++ ++$$1_PKG_ERRORS ++ ++Consider adjusting the PKG_CONFIG_PATH environment variable if you ++installed software in a non-standard prefix. ++ ++_PKG_TEXT])[]dnl ++ ]) ++elif test $pkg_failed = untried; then ++ AC_MSG_RESULT([no]) ++ m4_default([$4], [AC_MSG_FAILURE( ++[The pkg-config script could not be found or is too old. Make sure it ++is in your PATH or set the PKG_CONFIG environment variable to the full ++path to pkg-config. ++ ++_PKG_TEXT ++ ++To get pkg-config, see .])[]dnl ++ ]) ++else ++ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS ++ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS ++ AC_MSG_RESULT([yes]) ++ $3 ++fi[]dnl ++])# PKG_CHECK_MODULES ++ ++ ++# PKG_INSTALLDIR(DIRECTORY) ++# ------------------------- ++# Substitutes the variable pkgconfigdir as the location where a module ++# should install pkg-config .pc files. By default the directory is ++# $libdir/pkgconfig, but the default can be changed by passing ++# DIRECTORY. The user can override through the --with-pkgconfigdir ++# parameter. ++AC_DEFUN([PKG_INSTALLDIR], ++[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) ++m4_pushdef([pkg_description], ++ [pkg-config installation directory @<:@]pkg_default[@:>@]) ++AC_ARG_WITH([pkgconfigdir], ++ [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, ++ [with_pkgconfigdir=]pkg_default) ++AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) ++m4_popdef([pkg_default]) ++m4_popdef([pkg_description]) ++]) dnl PKG_INSTALLDIR ++ ++ ++# PKG_NOARCH_INSTALLDIR(DIRECTORY) ++# ------------------------- ++# Substitutes the variable noarch_pkgconfigdir as the location where a ++# module should install arch-independent pkg-config .pc files. By ++# default the directory is $datadir/pkgconfig, but the default can be ++# changed by passing DIRECTORY. The user can override through the ++# --with-noarch-pkgconfigdir parameter. ++AC_DEFUN([PKG_NOARCH_INSTALLDIR], ++[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) ++m4_pushdef([pkg_description], ++ [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) ++AC_ARG_WITH([noarch-pkgconfigdir], ++ [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, ++ [with_noarch_pkgconfigdir=]pkg_default) ++AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) ++m4_popdef([pkg_default]) ++m4_popdef([pkg_description]) ++]) dnl PKG_NOARCH_INSTALLDIR ++ ++ ++# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, ++# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) ++# ------------------------------------------- ++# Retrieves the value of the pkg-config variable for the given module. ++AC_DEFUN([PKG_CHECK_VAR], ++[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl ++AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl ++ ++_PKG_CONFIG([$1], [variable="][$3]["], [$2]) ++AS_VAR_COPY([$1], [pkg_cv_][$1]) ++ ++AS_VAR_IF([$1], [""], [$5], [$4])dnl ++])# PKG_CHECK_VAR +-- +2.1.0 + diff --git a/buildroot/package/netsnmp/Config.in b/buildroot/package/netsnmp/Config.in new file mode 100644 index 0000000..f22e38b --- /dev/null +++ b/buildroot/package/netsnmp/Config.in @@ -0,0 +1,60 @@ +config BR2_PACKAGE_NETSNMP + bool "netsnmp" + depends on BR2_USE_MMU # fork() + help + Suite of applications used to implement SNMP v1, SNMP v2c, and + SNMP v3 using both IPv4 and IPv6. + + http://net-snmp.sourceforge.net/ + +if BR2_PACKAGE_NETSNMP + +config BR2_PACKAGE_NETSNMP_SERVER + bool "server" + default y + help + The snmpd server. + +config BR2_PACKAGE_NETSNMP_CLIENTS + bool "clients" + default y + help + The net-snmp clients (snmpget, snmpwalk, etc). + +config BR2_PACKAGE_NETSNMP_ENABLE_MIBS + bool "Install MIB files on target and enable MIB loading code" + default y + help + The net-snmp package contains a selection of MIB files. + Say yes if you want those MIB files installed on the target + and enable the code that parses the MIB files. + +config BR2_PACKAGE_NETSNMP_WITH_MIB_MODULES + string "Build with these MIB modules" + default "host ucd-snmp/dlmod agentx" if !BR2_STATIC_LIBS + default "host agentx" if BR2_STATIC_LIBS + help + Specify which MIB modules to include. + +config BR2_PACKAGE_NETSNMP_WITHOUT_MIB_MODULES + string "Build without these MIB modules" + default "disman/event disman/schedule utilities" + help + Specify which MIB modules to exclude. + +config BR2_PACKAGE_NETSNMP_ENABLE_DEBUGGING + bool "Enable debugging code" + help + By default net-snmp is compiled without debugging support + (--disable-debugging). Enable this options if you need + debugging support, including the ability to log with + DEBUGMSG(), DEBUGMSGTL() and companion macros. + +config BR2_PACKAGE_NETSNMP_OPENSSL_INTERNAL + bool "Enable minimal internal OpenSSL code" + depends on !BR2_PACKAGE_OPENSSL + help + Enable a minimal internal copy of OpenSSL usable for USM + security. It will not enable the usage of SNMP over (D)TLS. + +endif diff --git a/buildroot/package/netsnmp/S59snmpd b/buildroot/package/netsnmp/S59snmpd new file mode 100755 index 0000000..4ff844e --- /dev/null +++ b/buildroot/package/netsnmp/S59snmpd @@ -0,0 +1,107 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: snmpd snmptrapd +# Required-Start: $network $local_fs +# Required-Stop: $network $local_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 6 +# Short-Description: SNMP agents +# Description: NET SNMP (Simple Network Management Protocol) Agents +### END INIT INFO +# +# Author: Jochen Friedrich +# + +export PATH=/sbin:/usr/sbin:/bin:/usr/bin + +test -x /usr/sbin/snmpd || exit 0 +test -x /usr/sbin/snmptrapd || exit 0 + +# Defaults +export MIBDIRS=/usr/share/snmp/mibs +SNMPDRUN=yes +SNMPDOPTS='-Lsd -Lf /dev/null -p /var/run/snmpd.pid 127.0.0.1' +TRAPDRUN=no +TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid' + +# Reads config file (will override defaults above) +[ -r /etc/default/snmpd ] && . /etc/default/snmpd + +ssd_oknodo="-o" + +# Cd to / before starting any daemons. +cd / + +# Create compatibility link to old AgentX socket location +if [ "$SNMPDCOMPAT" = "yes" ]; then + ln -sf /var/agentx/master /var/run/agentx +fi + +start() { + if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then + printf "Starting SNMP daemon: " + start-stop-daemon -q -S -x /usr/sbin/snmpd -- $SNMPDOPTS + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi + + if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then + printf "Starting SNMP trap daemon: " + start-stop-daemon -q -S -x /usr/sbin/snmptrapd -- $TRAPDOPTS + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi +} + +stop() { + if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then + printf "Stopping SNMP daemon: " + start-stop-daemon -q -K $ssd_oknodo -x /usr/sbin/snmpd + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi + + if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then + printf "Stopping SNMP trap daemon: " + start-stop-daemon -q -K $ssd_oknodo -x /usr/sbin/snmptrapd + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi +} + +reload() { + if [ "$SNMPDRUN" = "yes" -a -f /etc/snmp/snmpd.conf ]; then + printf "Reloading SNMP daemon: " + start-stop-daemon -q -K -s 1 -p /var/run/snmpd.pid -x /usr/sbin/snmpd + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi + + if [ "$TRAPDRUN" = "yes" -a -f /etc/snmp/snmptrapd.conf ]; then + printf "Reloading SNMP trap daemon: " + start-stop-daemon -q -K -s 1 -p /var/run/snmptrapd.pid -x /usr/sbin/snmptrapd + [ $? = 0 ] && echo "OK" || echo "FAIL" + fi +} + +case "$1" in + start) + start + ;; + + stop) + stop + ;; + + restart) + stop + # Allow the daemons time to exit completely. + sleep 2 + start + ;; + + reload|force-reload) + reload + ;; + + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 +esac + +exit 0 diff --git a/buildroot/package/netsnmp/netsnmp.hash b/buildroot/package/netsnmp/netsnmp.hash new file mode 100644 index 0000000..fc77926 --- /dev/null +++ b/buildroot/package/netsnmp/netsnmp.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.3/ +md5 d4a3459e1577d0efa8d96ca70a885e53 net-snmp-5.7.3.tar.gz +sha1 97dc25077257680815de44e34128d365c76bd839 net-snmp-5.7.3.tar.gz diff --git a/buildroot/package/netsnmp/netsnmp.mk b/buildroot/package/netsnmp/netsnmp.mk new file mode 100644 index 0000000..742fa6e --- /dev/null +++ b/buildroot/package/netsnmp/netsnmp.mk @@ -0,0 +1,117 @@ +################################################################################ +# +# netsnmp +# +################################################################################ + +NETSNMP_VERSION = 5.7.3 +NETSNMP_SITE = http://downloads.sourceforge.net/project/net-snmp/net-snmp/$(NETSNMP_VERSION) +NETSNMP_SOURCE = net-snmp-$(NETSNMP_VERSION).tar.gz +NETSNMP_LICENSE = Various BSD-like +NETSNMP_LICENSE_FILES = COPYING +NETSNMP_INSTALL_STAGING = YES +NETSNMP_CONF_ENV = ac_cv_NETSNMP_CAN_USE_SYSCTL=no +NETSNMP_CONF_OPTS = \ + --with-persistent-directory=/var/lib/snmp \ + --with-defaults \ + --enable-mini-agent \ + --without-rpm \ + --with-logfile=none \ + --without-kmem-usage \ + --enable-as-needed \ + --without-perl-modules \ + --disable-embedded-perl \ + --disable-perl-cc-checks \ + --disable-scripts \ + --with-default-snmp-version="1" \ + --enable-silent-libtool \ + --enable-mfd-rewrites \ + --with-sys-contact="root@localhost" \ + --with-sys-location="Unknown" \ + --with-mib-modules="$(call qstrip,$(BR2_PACKAGE_NETSNMP_WITH_MIB_MODULES))" \ + --with-out-mib-modules="$(call qstrip,$(BR2_PACKAGE_NETSNMP_WITHOUT_MIB_MODULES))" \ + --with-out-transports="Unix" \ + --disable-manuals +NETSNMP_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LIB_LDCONFIG_CMD=true install +NETSNMP_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) LIB_LDCONFIG_CMD=true install +NETSNMP_MAKE = $(MAKE1) +NETSNMP_CONFIG_SCRIPTS = net-snmp-config +NETSNMP_AUTORECONF = YES + +ifeq ($(BR2_ENDIAN),"BIG") +NETSNMP_CONF_OPTS += --with-endianness=big +else +NETSNMP_CONF_OPTS += --with-endianness=little +endif + +ifeq ($(BR2_PACKAGE_LIBNL),y) +NETSNMP_DEPENDENCIES += host-pkgconf libnl +NETSNMP_CONF_OPTS += --with-nl +else +NETSNMP_CONF_OPTS += --without-nl +endif + +# OpenSSL +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NETSNMP_DEPENDENCIES += openssl +NETSNMP_CONF_OPTS += \ + --with-openssl=$(STAGING_DIR)/usr/include/openssl \ + --with-security-modules="tsm,usm" \ + --with-transports="DTLSUDP,TLSTCP" +ifeq ($(BR2_STATIC_LIBS),y) +# openssl uses zlib, so we need to explicitly link with it when static +NETSNMP_CONF_ENV += LIBS=-lz +endif +else ifeq ($(BR2_PACKAGE_NETSNMP_OPENSSL_INTERNAL),y) +NETSNMP_CONF_OPTS += --with-openssl=internal +else +NETSNMP_CONF_OPTS += --without-openssl +endif + +# There's no option to forcibly enable or disable it +ifeq ($(BR2_PACKAGE_PCIUTILS),y) +NETSNMP_DEPENDENCIES += pciutils +endif + +# For ucd-snmp/lmsensorsMib +ifeq ($(BR2_PACKAGE_LM_SENSORS),y) +NETSNMP_DEPENDENCIES += lm-sensors +endif + +ifneq ($(BR2_PACKAGE_NETSNMP_ENABLE_MIBS),y) +NETSNMP_CONF_OPTS += --disable-mib-loading +NETSNMP_CONF_OPTS += --disable-mibs +endif + +ifneq ($(BR2_PACKAGE_NETSNMP_ENABLE_DEBUGGING),y) +NETSNMP_CONF_OPTS += --disable-debugging +endif + +ifeq ($(BR2_PACKAGE_NETSNMP_SERVER),y) +NETSNMP_CONF_OPTS += --enable-agent +else +NETSNMP_CONF_OPTS += --disable-agent +endif + +ifeq ($(BR2_PACKAGE_NETSNMP_CLIENTS),y) +NETSNMP_CONF_OPTS += --enable-applications +else +NETSNMP_CONF_OPTS += --disable-applications +endif + +ifeq ($(BR2_PACKAGE_NETSNMP_SERVER),y) +define NETSNMP_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/netsnmp/S59snmpd \ + $(TARGET_DIR)/etc/init.d/S59snmpd +endef +endif + +define NETSNMP_STAGING_NETSNMP_CONFIG_FIXUP + $(SED) "s,^includedir=.*,includedir=\'$(STAGING_DIR)/usr/include\',g" \ + -e "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" \ + $(STAGING_DIR)/usr/bin/net-snmp-config +endef + +NETSNMP_POST_INSTALL_STAGING_HOOKS += NETSNMP_STAGING_NETSNMP_CONFIG_FIXUP + +$(eval $(autotools-package)) diff --git a/buildroot/package/netstat-nat/Config.in b/buildroot/package/netstat-nat/Config.in new file mode 100644 index 0000000..6afcf89 --- /dev/null +++ b/buildroot/package/netstat-nat/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_NETSTAT_NAT + bool "netstat-nat" + help + Displays NAT connections + + http://tweegy.nl/projects/netstat-nat/ diff --git a/buildroot/package/netstat-nat/netstat-nat.hash b/buildroot/package/netstat-nat/netstat-nat.hash new file mode 100644 index 0000000..924da12 --- /dev/null +++ b/buildroot/package/netstat-nat/netstat-nat.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e945faa283a49f33af15de915a949c9273a230fc17154925364c547adab676ca netstat-nat-1.4.10.tar.gz diff --git a/buildroot/package/netstat-nat/netstat-nat.mk b/buildroot/package/netstat-nat/netstat-nat.mk new file mode 100644 index 0000000..0d16579 --- /dev/null +++ b/buildroot/package/netstat-nat/netstat-nat.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# netstat-nat +# +################################################################################ + +NETSTAT_NAT_VERSION = 1.4.10 +NETSTAT_NAT_SITE = http://tweegy.nl/download +NETSTAT_NAT_LICENSE = GPL-2.0+ +NETSTAT_NAT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/netsurf-buildsystem/netsurf-buildsystem.hash b/buildroot/package/netsurf-buildsystem/netsurf-buildsystem.hash new file mode 100644 index 0000000..c326c28 --- /dev/null +++ b/buildroot/package/netsurf-buildsystem/netsurf-buildsystem.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2e2d93e25623761c5de39c8c94750c982335acc1c2da4439b1a2088ecd4455c9 netsurf-buildsystem-7574b41345968b5f7e9ca5875faccb1478ce0555.tar.gz diff --git a/buildroot/package/netsurf-buildsystem/netsurf-buildsystem.mk b/buildroot/package/netsurf-buildsystem/netsurf-buildsystem.mk new file mode 100644 index 0000000..d4efec0 --- /dev/null +++ b/buildroot/package/netsurf-buildsystem/netsurf-buildsystem.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# netsurf-buildsystem +# +################################################################################ + +NETSURF_BUILDSYSTEM_VERSION = 7574b41345968b5f7e9ca5875faccb1478ce0555 +NETSURF_BUILDSYSTEM_SITE = http://git.netsurf-browser.org/buildsystem.git +NETSURF_BUILDSYSTEM_SITE_METHOD = git +NETSURF_BUILDSYSTEM_LICENSE = MIT, BSD-3-Clause (for llvm/* files) +NETSURF_BUILDSYSTEM_LICENSE_FILES = llvm/LICENSE.TXT + +NETSURF_BUILDSYSTEM_INSTALL_DIR = $(HOST_DIR)/share/netsurf-buildsystem + +define HOST_NETSURF_BUILDSYSTEM_INSTALL_CMDS + mkdir -p $(NETSURF_BUILDSYSTEM_INSTALL_DIR) + cp -dpfr $(@D)/* $(NETSURF_BUILDSYSTEM_INSTALL_DIR) +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/nettle/0001-disable-testsuite-examples.patch b/buildroot/package/nettle/0001-disable-testsuite-examples.patch new file mode 100644 index 0000000..82d97d5 --- /dev/null +++ b/buildroot/package/nettle/0001-disable-testsuite-examples.patch @@ -0,0 +1,20 @@ +Makefile: disable testsuite and example + +We do not need them in the context of Buildroot. + +Also, they break for a shared-only build (but it's fixed in patch 0001). + +Signed-off-by: "Yann E. MORIN" + +diff -durN nettle-2.7.1.orig/Makefile.in nettle-2.7.1/Makefile.in +--- nettle-2.7.1.orig/Makefile.in 2013-05-28 16:21:54.000000000 +0200 ++++ nettle-2.7.1/Makefile.in 2014-12-12 19:57:12.499805574 +0100 +@@ -16,7 +16,7 @@ + + OPT_ASM_SOURCES = @OPT_ASM_SOURCES@ + +-SUBDIRS = tools testsuite examples ++SUBDIRS = tools + + include config.make + diff --git a/buildroot/package/nettle/Config.in b/buildroot/package/nettle/Config.in new file mode 100644 index 0000000..4890970 --- /dev/null +++ b/buildroot/package/nettle/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_NETTLE + bool "nettle" + select BR2_PACKAGE_GMP + help + Nettle is a cryptographic library that is designed to fit + easily in more or less any context: In crypto toolkits for + object-oriented languages, in applications like LSH or + GNUPG, or even in kernel space + + http://www.lysator.liu.se/~nisse/nettle/ diff --git a/buildroot/package/nettle/nettle.hash b/buildroot/package/nettle/nettle.hash new file mode 100644 index 0000000..473be1c --- /dev/null +++ b/buildroot/package/nettle/nettle.hash @@ -0,0 +1,6 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/nettle/nettle-3.4.tar.gz.sig +sha256 ae7a42df026550b85daca8389b6a60ba6313b0567f374392e54918588a411e94 nettle-3.4.tar.gz +# Locally calculated +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LESSERv3 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYINGv2 diff --git a/buildroot/package/nettle/nettle.mk b/buildroot/package/nettle/nettle.mk new file mode 100644 index 0000000..9582815 --- /dev/null +++ b/buildroot/package/nettle/nettle.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# nettle +# +################################################################################ + +NETTLE_VERSION = 3.4 +NETTLE_SITE = http://www.lysator.liu.se/~nisse/archive +NETTLE_DEPENDENCIES = gmp +NETTLE_INSTALL_STAGING = YES +NETTLE_LICENSE = Dual GPL-2.0+/LGPL-3.0+ +NETTLE_LICENSE_FILES = COPYING.LESSERv3 COPYINGv2 +# don't include openssl support for (unused) examples as it has problems +# with static linking +NETTLE_CONF_OPTS = --disable-openssl + +# ARM assembly requires v6+ ISA +ifeq ($(BR2_ARM_CPU_ARMV4)$(BR2_ARM_CPU_ARMV5)$(BR2_ARM_CPU_ARMV7M),y) +NETTLE_CONF_OPTS += --disable-assembler +endif + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +NETTLE_CONF_OPTS += --enable-arm-neon +else +NETTLE_CONF_OPTS += --disable-arm-neon +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/network-manager/Config.in b/buildroot/package/network-manager/Config.in new file mode 100644 index 0000000..ca50818 --- /dev/null +++ b/buildroot/package/network-manager/Config.in @@ -0,0 +1,71 @@ +config BR2_PACKAGE_NETWORK_MANAGER + bool "network-manager" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_MMU # dbus + depends on BR2_PACKAGE_HAS_UDEV + # Tested with 3.2, but may even work with earlier versions + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + depends on BR2_TOOLCHAIN_USES_GLIBC # CLOCK_BOOTTIME, IPTOS_CLASS_* + select BR2_PACKAGE_DHCPCD if !BR2_PACKAGE_DHCP_CLIENT + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_LIBGUDEV + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_WIRELESS_TOOLS + select BR2_PACKAGE_WIRELESS_TOOLS_LIB + select BR2_PACKAGE_READLINE + select BR2_PACKAGE_LIBNDP + help + NetworkManager is a set of co-operative tools that make + networking simple and straightforward. Whether WiFi, wired, + 3G, or Bluetooth, NetworkManager allows you to quickly move + from one network to another: once a network has been + configured and joined once, it can be detected and re-joined + automatically the next time it's available. + + http://projects.gnome.org/NetworkManager/ + +if BR2_PACKAGE_NETWORK_MANAGER + +config BR2_PACKAGE_NETWORK_MANAGER_TUI + bool "nmtui support" + select BR2_PACKAGE_NEWT + help + This option enables terminal based UI + +config BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER + bool "modem-manager support" + select BR2_PACKAGE_MODEM_MANAGER + select BR2_PACKAGE_MODEM_MANAGER_LIBMBIM + select BR2_PACKAGE_MODEM_MANAGER_LIBQMI + help + This option enables support for ModemManager + +config BR2_PACKAGE_NETWORK_MANAGER_PPPD + bool "pppd support" + depends on !BR2_TOOLCHAIN_USES_MUSL # pppd + select BR2_PACKAGE_PPPD + help + This option enables support for PPPD daemon + +comment "pppd support needs a glibc or uClibc toolchain" + depends on BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_NETWORK_MANAGER_OVS + bool "OpenVSwitch support" + select BR2_PACKAGE_JANSSON + help + This option enables support for OpenVSwitch + +endif + +comment "NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.2, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 || \ + !BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS diff --git a/buildroot/package/network-manager/S45network-manager b/buildroot/package/network-manager/S45network-manager new file mode 100755 index 0000000..f39e20d --- /dev/null +++ b/buildroot/package/network-manager/S45network-manager @@ -0,0 +1,46 @@ +#!/bin/sh + +prefix=/usr +exec_prefix=/usr +sbindir=${exec_prefix}/sbin + +NETWORKMANAGER_BIN=${sbindir}/NetworkManager + +[ -x $NETWORKMANAGER_BIN ] || exit 0 + +PID=`pidof NetworkManager` +case "$1" in + start) + printf "Starting NetworkManager ... " + [ ! -d /var/run/NetworkManager ] && install -d /var/run/NetworkManager + if [ -z "$PID" ]; then + $NETWORKMANAGER_BIN + fi + if [ ! -z "$PID" -o $? -gt 0 ]; then + echo "failed!" + else + echo "done." + fi + ;; + stop) + printf "Stopping NetworkManager ... " + [ ! -z "$PID" ] && kill $PID > /dev/null 2>&1 + if [ $? -gt 0 ]; then + echo "failed!" + else + echo "done." + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart|sleep|wake}" + ;; +esac +exit 0 + + + diff --git a/buildroot/package/network-manager/network-manager.hash b/buildroot/package/network-manager/network-manager.hash new file mode 100644 index 0000000..8fedc64 --- /dev/null +++ b/buildroot/package/network-manager/network-manager.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/1.10/NetworkManager-1.10.2.sha256sum +sha256 169c34f50770e3c96b431f7d2cff654455246f2e6ccd46eccfb4454d4595625b NetworkManager-1.10.2.tar.xz diff --git a/buildroot/package/network-manager/network-manager.mk b/buildroot/package/network-manager/network-manager.mk new file mode 100644 index 0000000..a520aad --- /dev/null +++ b/buildroot/package/network-manager/network-manager.mk @@ -0,0 +1,107 @@ +################################################################################ +# +# network-manager +# +################################################################################ + +NETWORK_MANAGER_VERSION_MAJOR = 1.10 +NETWORK_MANAGER_VERSION = $(NETWORK_MANAGER_VERSION_MAJOR).2 +NETWORK_MANAGER_SOURCE = NetworkManager-$(NETWORK_MANAGER_VERSION).tar.xz +NETWORK_MANAGER_SITE = http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/$(NETWORK_MANAGER_VERSION_MAJOR) +NETWORK_MANAGER_INSTALL_STAGING = YES +NETWORK_MANAGER_DEPENDENCIES = host-pkgconf udev dbus-glib libnl gnutls \ + libgcrypt wireless_tools util-linux host-intltool readline libndp libgudev +NETWORK_MANAGER_LICENSE = GPL-2.0+ (app), LGPL-2.0+ (libnm-util) +NETWORK_MANAGER_LICENSE_FILES = COPYING libnm-util/COPYING + +NETWORK_MANAGER_CONF_ENV = \ + ac_cv_path_LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config \ + ac_cv_file__etc_fedora_release=no \ + ac_cv_file__etc_mandriva_release=no \ + ac_cv_file__etc_debian_version=no \ + ac_cv_file__etc_redhat_release=no \ + ac_cv_file__etc_SuSE_release=no + +NETWORK_MANAGER_CONF_OPTS = \ + --disable-tests \ + --disable-qt \ + --disable-more-warnings \ + --without-docs \ + --with-crypto=gnutls \ + --with-iptables=/usr/sbin/iptables \ + --disable-ifupdown \ + --disable-ifnet + +ifeq ($(BR2_PACKAGE_OFONO),y) +NETWORK_MANAGER_DEPENDENCIES += ofono +NETWORK_MANAGER_CONF_OPTS += --with-ofono +else +NETWORK_MANAGER_CONF_OPTS += --without-ofono +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +NETWORK_MANAGER_DEPENDENCIES += libcurl +NETWORK_MANAGER_CONF_OPTS += --enable-concheck +else +NETWORK_MANAGER_CONF_OPTS += --disable-concheck +endif + +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER_TUI),y) +NETWORK_MANAGER_DEPENDENCIES += newt +NETWORK_MANAGER_CONF_OPTS += --with-nmtui=yes +else +NETWORK_MANAGER_CONF_OPTS += --with-nmtui=no +endif + +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER_PPPD),y) +NETWORK_MANAGER_DEPENDENCIES += pppd +NETWORK_MANAGER_CONF_OPTS += --enable-ppp +else +NETWORK_MANAGER_CONF_OPTS += --disable-ppp +endif + +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER),y) +NETWORK_MANAGER_DEPENDENCIES += modem-manager +NETWORK_MANAGER_CONF_OPTS += --with-modem-manager-1 +else +NETWORK_MANAGER_CONF_OPTS += --without-modem-manager-1 +endif + +ifeq ($(BR2_PACKAGE_DHCP_CLIENT),y) +NETWORK_MANAGER_CONF_OPTS += --with-dhclient=/sbin/dhclient +endif + +ifeq ($(BR2_PACKAGE_DHCPCD),y) +NETWORK_MANAGER_CONF_OPTS += --with-dhcpcd=/sbin/dhcpcd +endif + +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER_OVS),y) +NETWORK_MANAGER_CONF_OPTS += --enable-ovs +NETWORK_MANAGER_DEPENDENCIES += jansson +else +NETWORK_MANAGER_CONF_OPTS += --disable-ovs +endif + +# uClibc by default doesn't have backtrace support, so don't use it +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +NETWORK_MANAGER_CONF_OPTS += --disable-crashtrace +endif + +define NETWORK_MANAGER_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/network-manager/S45network-manager $(TARGET_DIR)/etc/init.d/S45network-manager +endef + +define NETWORK_MANAGER_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -sf /usr/lib/systemd/system/NetworkManager.service \ + $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service + + ln -sf /usr/lib/systemd/system/NetworkManager.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/NetworkManager.service + + ln -sf /usr/lib/systemd/system/NetworkManager-dispatcher.service \ + $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/newt/Config.in b/buildroot/package/newt/Config.in new file mode 100644 index 0000000..42a9eca --- /dev/null +++ b/buildroot/package/newt/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_NEWT + bool "newt" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # slang + depends on !BR2_STATIC_LIBS # unconditionally creates .so + select BR2_PACKAGE_SLANG + select BR2_PACKAGE_POPT + help + Programming library for color text mode, widget based user + interfaces. + + http://www.redhat.com/ + +comment "newt needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/buildroot/package/newt/newt.hash b/buildroot/package/newt/newt.hash new file mode 100644 index 0000000..b6fd317 --- /dev/null +++ b/buildroot/package/newt/newt.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8d66ba6beffc3f786d4ccfee9d2b43d93484680ef8db9397a4fb70b5adbb6dbc newt-0.52.20.tar.gz diff --git a/buildroot/package/newt/newt.mk b/buildroot/package/newt/newt.mk new file mode 100644 index 0000000..b6d973a --- /dev/null +++ b/buildroot/package/newt/newt.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# newt +# +################################################################################ + +NEWT_VERSION = 0.52.20 +NEWT_SITE = https://pagure.io/releases/newt +NEWT_INSTALL_STAGING = YES +NEWT_DEPENDENCIES = popt slang $(TARGET_NLS_DEPENDENCIES) +# Force to use libintl, otherwise it finds gettext functions in the C +# library, and does not link against libintl. +NEWT_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +NEWT_CONF_OPTS = --without-python --without-tcl +NEWT_MAKE = $(MAKE1) +NEWT_LICENSE = GPL-2.0 +NEWT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/nfacct/Config.in b/buildroot/package/nfacct/Config.in new file mode 100644 index 0000000..e30d2d9 --- /dev/null +++ b/buildroot/package/nfacct/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NFACCT + bool "nfacct" + select BR2_PACKAGE_LIBNETFILTER_ACCT + help + nfacct is the command line tool to create/retrieve/delete + netfilter accounting objects. + + http://www.netfilter.org/projects/nfacct/ diff --git a/buildroot/package/nfacct/nfacct.hash b/buildroot/package/nfacct/nfacct.hash new file mode 100644 index 0000000..737354e --- /dev/null +++ b/buildroot/package/nfacct/nfacct.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/nfacct/nfacct-1.0.2.tar.bz2.{md5sum,sha1sum} +md5 94faafdaaed85ca9220c5692be8a408e nfacct-1.0.2.tar.bz2 +sha1 17d6576778227ea93c62600d9b18ff4932963c6a nfacct-1.0.2.tar.bz2 diff --git a/buildroot/package/nfacct/nfacct.mk b/buildroot/package/nfacct/nfacct.mk new file mode 100644 index 0000000..d4c7c4c --- /dev/null +++ b/buildroot/package/nfacct/nfacct.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# nfacct +# +################################################################################ + +NFACCT_VERSION = 1.0.2 +NFACCT_SOURCE = nfacct-$(NFACCT_VERSION).tar.bz2 +NFACCT_SITE = http://www.netfilter.org/projects/nfacct/files +NFACCT_DEPENDENCIES = host-pkgconf \ + libnetfilter_acct +NFACCT_LICENSE = GPL-2.0 +NFACCT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/nfs-utils/0001-Patch-taken-from-Gentoo.patch b/buildroot/package/nfs-utils/0001-Patch-taken-from-Gentoo.patch new file mode 100644 index 0000000..47bf9db --- /dev/null +++ b/buildroot/package/nfs-utils/0001-Patch-taken-from-Gentoo.patch @@ -0,0 +1,60 @@ +From 5796ca01e33596d4102dd714349c908fecc331c0 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sat, 10 Nov 2012 18:56:12 +0100 +Subject: [PATCH] Patch taken from Gentoo + +Signed-off-by: Gustavo Zacarias +--- + tools/locktest/Makefile.am | 7 +++---- + tools/rpcgen/Makefile.am | 8 +++----- + 2 files changed, 6 insertions(+), 9 deletions(-) + +diff --git a/tools/locktest/Makefile.am b/tools/locktest/Makefile.am +index 3156815..efe6fcd 100644 +--- a/tools/locktest/Makefile.am ++++ b/tools/locktest/Makefile.am +@@ -1,12 +1,11 @@ + ## Process this file with automake to produce Makefile.in + + CC=$(CC_FOR_BUILD) +-LIBTOOL = @LIBTOOL@ --tag=CC ++CFLAGS=$(CFLAGS_FOR_BUILD) ++CPPFLAGS=$(CPPFLAGS_FOR_BUILD) ++LDFLAGS=$(LDFLAGS_FOR_BUILD) + + noinst_PROGRAMS = testlk + testlk_SOURCES = testlk.c +-testlk_CFLAGS=$(CFLAGS_FOR_BUILD) +-testlk_CPPFLAGS=$(CPPFLAGS_FOR_BUILD) +-testlk_LDFLAGS=$(LDFLAGS_FOR_BUILD) + + MAINTAINERCLEANFILES = Makefile.in +diff --git a/tools/rpcgen/Makefile.am b/tools/rpcgen/Makefile.am +index 8a9ec89..5a5b4d3 100644 +--- a/tools/rpcgen/Makefile.am ++++ b/tools/rpcgen/Makefile.am +@@ -1,7 +1,9 @@ + ## Process this file with automake to produce Makefile.in + + CC=$(CC_FOR_BUILD) +-LIBTOOL = @LIBTOOL@ --tag=CC ++CFLAGS=$(CFLAGS_FOR_BUILD) ++CPPFLAGS=$(CPPFLAGS_FOR_BUILD) ++LDFLAGS=$(LDFLAGS_FOR_BUILD) + + noinst_PROGRAMS = rpcgen + rpcgen_SOURCES = rpc_clntout.c rpc_cout.c rpc_hout.c rpc_main.c \ +@@ -9,10 +11,6 @@ rpcgen_SOURCES = rpc_clntout.c rpc_cout.c rpc_hout.c rpc_main.c \ + rpc_util.c rpc_sample.c rpc_output.h rpc_parse.h \ + rpc_scan.h rpc_util.h + +-rpcgen_CFLAGS=$(CFLAGS_FOR_BUILD) +-rpcgen_CPPLAGS=$(CPPFLAGS_FOR_BUILD) +-rpcgen_LDFLAGS=$(LDFLAGS_FOR_BUILD) +-rpcgen_LDADD=$(LIBTIRPC) + + MAINTAINERCLEANFILES = Makefile.in + +-- +2.1.0 + diff --git a/buildroot/package/nfs-utils/0002-Switch-legacy-index-in-favour-of-strchr.patch b/buildroot/package/nfs-utils/0002-Switch-legacy-index-in-favour-of-strchr.patch new file mode 100644 index 0000000..655d534 --- /dev/null +++ b/buildroot/package/nfs-utils/0002-Switch-legacy-index-in-favour-of-strchr.patch @@ -0,0 +1,72 @@ +From a1d45736286939b822fcc7b9c74843f6f90a747e Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sat, 10 Nov 2012 18:58:15 +0100 +Subject: [PATCH] Switch legacy index() in favour of strchr() Updated for 1.2.6 + from the previous patch by Frederik Pasch. + +Signed-off-by: Gustavo Zacarias +--- + support/nfs/nfs_mntent.c | 6 +++--- + utils/mount/error.c | 2 +- + utils/mountd/fsloc.c | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/support/nfs/nfs_mntent.c b/support/nfs/nfs_mntent.c +index a2118a2..7496ed6 100644 +--- a/support/nfs/nfs_mntent.c ++++ b/support/nfs/nfs_mntent.c +@@ -9,7 +9,7 @@ + */ + + #include +-#include /* for index */ ++#include /* for strchr */ + #include /* for isdigit */ + #include /* for umask */ + #include /* for ftruncate */ +@@ -172,7 +172,7 @@ nfs_getmntent (mntFILE *mfp) { + return NULL; + + mfp->mntent_lineno++; +- s = index (buf, '\n'); ++ s = strchr (buf, '\n'); + if (s == NULL) { + /* Missing final newline? Otherwise extremely */ + /* long line - assume file was corrupted */ +@@ -180,7 +180,7 @@ nfs_getmntent (mntFILE *mfp) { + fprintf(stderr, _("[mntent]: warning: no final " + "newline at the end of %s\n"), + mfp->mntent_file); +- s = index (buf, 0); ++ s = strchr (buf, 0); + } else { + mfp->mntent_errs = 1; + goto err; +diff --git a/utils/mount/error.c b/utils/mount/error.c +index e06f598..7bd1d27 100644 +--- a/utils/mount/error.c ++++ b/utils/mount/error.c +@@ -62,7 +62,7 @@ static int rpc_strerror(int spos) + char *tmp; + + if (estr) { +- if ((ptr = index(estr, ':'))) ++ if ((ptr = strchr(estr, ':'))) + estr = ++ptr; + + tmp = &errbuf[spos]; +diff --git a/utils/mountd/fsloc.c b/utils/mountd/fsloc.c +index bc737d1..ddbe92f 100644 +--- a/utils/mountd/fsloc.c ++++ b/utils/mountd/fsloc.c +@@ -127,7 +127,7 @@ static struct servers *method_list(char *data) + bool v6esc = false; + + xlog(L_NOTICE, "method_list(%s)", data); +- for (ptr--, listsize=1; ptr; ptr=index(ptr, ':'), listsize++) ++ for (ptr--, listsize=1; ptr; ptr=strchr(ptr, ':'), listsize++) + ptr++; + list = malloc(listsize * sizeof(char *)); + copy = strdup(data); +-- +2.1.0 diff --git a/buildroot/package/nfs-utils/0003-Let-the-configure-script-find-getrpcbynumber-in-libt.patch b/buildroot/package/nfs-utils/0003-Let-the-configure-script-find-getrpcbynumber-in-libt.patch new file mode 100644 index 0000000..dca44f6 --- /dev/null +++ b/buildroot/package/nfs-utils/0003-Let-the-configure-script-find-getrpcbynumber-in-libt.patch @@ -0,0 +1,46 @@ +From 87f88b28ac01b6449463f00b660fe7416d7f9a55 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 10 Nov 2012 18:53:03 +0100 +Subject: [PATCH] Let the configure script find getrpcbynumber in libtirpc + +The getrpcbynumber() function may not be available in the C library, +but only in the libtirpc library. Take this into account when checking +for the existence of getrpcbynumber() and getrpcbynumber_r(). + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 8e427e3..6e42c96 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -433,11 +433,23 @@ AC_FUNC_STAT + AC_FUNC_VPRINTF + AC_CHECK_FUNCS([alarm atexit dup2 fdatasync ftruncate getcwd \ + gethostbyaddr gethostbyname gethostname getmntent \ +- getnameinfo getrpcbyname getrpcbynumber getrpcbynumber_r getifaddrs \ ++ getnameinfo getrpcbyname getifaddrs \ + gettimeofday hasmntopt inet_ntoa innetgr memset mkdir pathconf \ + ppoll realpath rmdir select socket strcasecmp strchr strdup \ + strerror strrchr strtol strtoul sigprocmask name_to_handle_at]) + ++save_CFLAGS=$CFLAGS ++save_LIBS=$LIBS ++CFLAGS="$CFLAGS $AM_CPPFLAGS" ++LIBS="$LIBS $LIBTIRPC" ++AC_CHECK_FUNCS([getrpcbynumber getrpcbynumber_r]) ++CFLAGS=$save_CFLAGS ++LIBS=$save_LIBS ++ ++if test "$ac_cv_func_getrpcbynumber_r" != "yes" -a "$ac_cv_func_getrpcbynumber" != "yes"; then ++ AC_MSG_ERROR([Neither getrpcbynumber_r nor getrpcbynumber are available]) ++fi ++ + dnl ************************************************************* + dnl Check for data sizes + dnl ************************************************************* +-- +2.1.0 + diff --git a/buildroot/package/nfs-utils/0004-mountd-Add-check-for-struct-file_handle.patch b/buildroot/package/nfs-utils/0004-mountd-Add-check-for-struct-file_handle.patch new file mode 100644 index 0000000..7aca266 --- /dev/null +++ b/buildroot/package/nfs-utils/0004-mountd-Add-check-for-struct-file_handle.patch @@ -0,0 +1,46 @@ +From 3c23b3ea7f5069e8fd4d5758704cd968504f1079 Mon Sep 17 00:00:00 2001 +From: Maxime Hadjinlian +Date: Tue, 2 Feb 2016 10:07:22 +0100 +Subject: [PATCH] mountd: Add check for 'struct file_handle' + +The code to check if name_to_handle_at() is implemented generates only a +warning but with some toolchain it doesn't fail to link (the function must be +implemented somewhere). +However the "struct file_handle" type is not available. + +So, this patch adds a check for this struct. + +Signed-off-by: Maxime Hadjinlian +--- + configure.ac | 1 + + utils/mountd/cache.c | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 25d2ba4..913a86f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -425,6 +425,7 @@ AC_TYPE_PID_T + AC_TYPE_SIZE_T + AC_HEADER_TIME + AC_STRUCT_TM ++AC_CHECK_TYPES([struct file_handle]) + + dnl ************************************************************* + dnl Check for functions +diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c +index 7847446..dc64f6d 100644 +--- a/utils/mountd/cache.c ++++ b/utils/mountd/cache.c +@@ -424,7 +424,7 @@ static int same_path(char *child, char *parent, int len) + if (count_slashes(p) != count_slashes(parent)) + return 0; + +-#if HAVE_NAME_TO_HANDLE_AT ++#if defined(HAVE_NAME_TO_HANDLE_AT) && defined(HAVE_STRUCT_FILE_HANDLE) + struct { + struct file_handle fh; + unsigned char handle[128]; +-- +2.7.0 + diff --git a/buildroot/package/nfs-utils/0005-nfs-utils-add-missing-include-of-stdint.h.patch b/buildroot/package/nfs-utils/0005-nfs-utils-add-missing-include-of-stdint.h.patch new file mode 100644 index 0000000..a621435 --- /dev/null +++ b/buildroot/package/nfs-utils/0005-nfs-utils-add-missing-include-of-stdint.h.patch @@ -0,0 +1,33 @@ +From b3ff26fa182b34b6faa1317f18a9dac4c7963334 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Mon, 2 Oct 2017 09:57:15 -0500 +Subject: [PATCH] nfs-utils: add missing include of stdint.h + +Glibc bump to 2.26 exposed this missing header when building +with the following combination using an i386 internal toolchain. +gcc5.4.0 +bin2.28.1 +linux4.1.43 + +Upstream: https://bugzilla.linux-nfs.org/show_bug.cgi?id=312 + +Signed-off-by: Matthew Weber +--- + support/nsm/rpc.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/support/nsm/rpc.c b/support/nsm/rpc.c +index 4e5f40e..d91c6ea 100644 +--- a/support/nsm/rpc.c ++++ b/support/nsm/rpc.c +@@ -40,6 +40,7 @@ + + #include + #include ++#include + #include + #include + #include +-- +1.9.1 + diff --git a/buildroot/package/nfs-utils/Config.in b/buildroot/package/nfs-utils/Config.in new file mode 100644 index 0000000..055b711 --- /dev/null +++ b/buildroot/package/nfs-utils/Config.in @@ -0,0 +1,33 @@ +comment "nfs-utils needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_NFS_UTILS + bool "nfs-utils" + depends on BR2_TOOLCHAIN_HAS_THREADS # libtirpc, rpcbind + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_PACKAGE_RPCBIND # runtime + help + The NFS Linux kernel server. + + http://linux-nfs.org/ + +if BR2_PACKAGE_NFS_UTILS + +config BR2_PACKAGE_NFS_UTILS_RPCDEBUG + bool "rpcdebug" + help + The RPC debugging utility + +config BR2_PACKAGE_NFS_UTILS_RPC_LOCKD + bool "rpc.lockd" + help + NFS lock manager for Linux kernels older than 2.4 + +config BR2_PACKAGE_NFS_UTILS_RPC_RQUOTAD + bool "rpc.rquotad" + help + NFS remote quota server + +endif diff --git a/buildroot/package/nfs-utils/S60nfs b/buildroot/package/nfs-utils/S60nfs new file mode 100755 index 0000000..893b1e4 --- /dev/null +++ b/buildroot/package/nfs-utils/S60nfs @@ -0,0 +1,88 @@ +#!/bin/sh +# +# nfs This shell script takes care of starting and stopping +# the NFS services. Stolen from RedHat FC5. + +[ -x /usr/sbin/rpc.statd ] || exit 0 +[ -x /usr/sbin/rpc.nfsd ] || exit 0 +[ -x /usr/sbin/rpc.mountd ] || exit 0 +[ -x /usr/sbin/exportfs ] || exit 0 + +mkdir -p /var/lock/subsys +mkdir -p /run/nfs/sm +mkdir -p /run/nfs/sm.bak +touch /run/nfs/rmtab + +CFG_FILE=/etc/default/nfsd + +NR_THREADS=2 +if [ -f "${CFG_FILE}" ]; then + . "${CFG_FILE}" +fi + + +start() { + # Start daemons. + printf "Starting NFS statd: " + rpc.statd + [ $? = 0 ] && echo "OK" || echo "FAIL" + touch /var/lock/subsys/nfslock + + printf "Starting NFS services: " + /usr/sbin/exportfs -r + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Starting NFS daemon: " + rpc.nfsd ${NR_THREADS} + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Starting NFS mountd: " + rpc.mountd + [ $? = 0 ] && echo "OK" || echo "FAIL" + touch /var/lock/subsys/nfs +} + +stop() { + # Stop daemons. + printf "Shutting down NFS mountd: " + killall -q rpc.mountd 2>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Shutting down NFS daemon: " + killall -q nfsd 2>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Shutting down NFS services: " + /usr/sbin/exportfs -au + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Stopping NFS statd: " + killall -q rpc.statd 2>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" + rm -f /var/lock/subsys/nfs + rm -f /var/run/rpc.statd.pid + rm -f /var/lock/subsys/nfslock +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + reload) + /usr/sbin/exportfs -r + touch /var/lock/subsys/nfs + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit 0 diff --git a/buildroot/package/nfs-utils/nfs-utils.hash b/buildroot/package/nfs-utils/nfs-utils.hash new file mode 100644 index 0000000..2bd5121 --- /dev/null +++ b/buildroot/package/nfs-utils/nfs-utils.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/utils/nfs-utils/1.3.3/sha256sums.asc +sha256 700d689c5622c87953c34102e5befafc4d3c811e676852238f0dd79c9c0c084d nfs-utils-1.3.3.tar.xz diff --git a/buildroot/package/nfs-utils/nfs-utils.mk b/buildroot/package/nfs-utils/nfs-utils.mk new file mode 100644 index 0000000..9fa7ae2 --- /dev/null +++ b/buildroot/package/nfs-utils/nfs-utils.mk @@ -0,0 +1,115 @@ +################################################################################ +# +# nfs-utils +# +################################################################################ + +NFS_UTILS_VERSION = 1.3.3 +NFS_UTILS_SOURCE = nfs-utils-$(NFS_UTILS_VERSION).tar.xz +NFS_UTILS_SITE = https://www.kernel.org/pub/linux/utils/nfs-utils/$(NFS_UTILS_VERSION) +NFS_UTILS_LICENSE = GPL-2.0+ +NFS_UTILS_LICENSE_FILES = COPYING +NFS_UTILS_AUTORECONF = YES +NFS_UTILS_DEPENDENCIES = host-pkgconf + +NFS_UTILS_CONF_ENV = knfsd_cv_bsd_signals=no + +NFS_UTILS_CONF_OPTS = \ + --disable-nfsv4 \ + --disable-nfsv41 \ + --disable-gss \ + --disable-uuid \ + --disable-ipv6 \ + --without-tcp-wrappers \ + --with-statedir=/run/nfs \ + --with-rpcgen=internal + +HOST_NFS_UTILS_CONF_OPTS = \ + --disable-nfsv4 \ + --disable-nfsv41 \ + --disable-gss \ + --disable-uuid \ + --disable-ipv6 \ + --without-tcp-wrappers \ + --with-statedir=/run/nfs \ + --disable-caps \ + --disable-tirpc \ + --without-systemd \ + --with-rpcgen=internal +HOST_NFS_UTILS_DEPENDENCIES = host-pkgconf host-libtirpc + +NFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPCDEBUG) += usr/sbin/rpcdebug +NFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPC_LOCKD) += usr/sbin/rpc.lockd +NFS_UTILS_TARGETS_$(BR2_PACKAGE_NFS_UTILS_RPC_RQUOTAD) += usr/sbin/rpc.rquotad + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +NFS_UTILS_CONF_OPTS += --enable-caps +NFS_UTILS_DEPENDENCIES += libcap +else +NFS_UTILS_CONF_OPTS += --disable-caps +endif + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +NFS_UTILS_CONF_OPTS += --enable-tirpc +NFS_UTILS_DEPENDENCIES += libtirpc +else +NFS_UTILS_CONF_OPTS += --disable-tirpc +endif + +define NFS_UTILS_INSTALL_FIXUP + rm -f $(NFS_UTILS_TARGETS_) + touch $(TARGET_DIR)/etc/exports + $(INSTALL) -D -m 644 \ + $(@D)/utils/mount/nfsmount.conf $(TARGET_DIR)/etc/nfsmount.conf +endef +NFS_UTILS_POST_INSTALL_TARGET_HOOKS += NFS_UTILS_INSTALL_FIXUP + +ifeq ($(BR2_INIT_SYSTEMD),y) +NFS_UTILS_CONF_OPTS += --with-systemd=/usr/lib/systemd/system +NFS_UTILS_DEPENDENCIES += systemd +else +NFS_UTILS_CONF_OPTS += --without-systemd +endif + +define NFS_UTILS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/nfs-utils/S60nfs \ + $(TARGET_DIR)/etc/init.d/S60nfs +endef + +define NFS_UTILS_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/nfs-server.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/nfs-server.service + ln -fs ../../../../usr/lib/systemd/system/nfs-client.target \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/nfs-client.target + + mkdir -p $(TARGET_DIR)/etc/systemd/system/remote-fs.target.wants + + ln -fs ../../../../usr/lib/systemd/system/nfs-client.target \ + $(TARGET_DIR)/etc/systemd/system/remote-fs.target.wants/nfs-client.target + + $(INSTALL) -D -m 0755 package/nfs-utils/nfs-utils_env.sh \ + $(TARGET_DIR)/usr/lib/systemd/scripts/nfs-utils_env.sh + + $(INSTALL) -D -m 0644 package/nfs-utils/nfs-utils_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/nfs-utils.conf +endef + +define NFS_UTILS_REMOVE_NFSIOSTAT + rm -f $(TARGET_DIR)/usr/sbin/nfsiostat +endef + +# nfsiostat is interpreted python, so remove it unless it's in the target +NFS_UTILS_POST_INSTALL_TARGET_HOOKS += $(if $(BR2_PACKAGE_PYTHON),,NFS_UTILS_REMOVE_NFSIOSTAT) + +define HOST_NFS_UTILS_BUILD_CMDS + $(MAKE) -C $(@D)/tools/rpcgen +endef + +define HOST_NFS_UTILS_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/tools/rpcgen/rpcgen $(HOST_DIR)/bin/rpcgen +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/nfs-utils/nfs-utils_env.sh b/buildroot/package/nfs-utils/nfs-utils_env.sh new file mode 100755 index 0000000..82284ce --- /dev/null +++ b/buildroot/package/nfs-utils/nfs-utils_env.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# This script is empty, it simply needs to exist to make the +# nfs-config.service happy. diff --git a/buildroot/package/nfs-utils/nfs-utils_tmpfiles.conf b/buildroot/package/nfs-utils/nfs-utils_tmpfiles.conf new file mode 100644 index 0000000..f87939f --- /dev/null +++ b/buildroot/package/nfs-utils/nfs-utils_tmpfiles.conf @@ -0,0 +1,4 @@ +d /run/nfs/sm 0700 root root - +d /run/nfs/sm.bak 0700 root root - +f /run/nfs/rmtab 0644 root root - +f /run/nfs/etab 0644 root root - diff --git a/buildroot/package/nftables/0001-src-fix-build-with-older-glibc.patch b/buildroot/package/nftables/0001-src-fix-build-with-older-glibc.patch new file mode 100644 index 0000000..d1ba295 --- /dev/null +++ b/buildroot/package/nftables/0001-src-fix-build-with-older-glibc.patch @@ -0,0 +1,38 @@ +From 381eaa40735385a1a60e5ab0a7daf4bb847fc2ab Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 9 Feb 2018 14:42:31 +0200 +Subject: [PATCH] src: fix build with older glibc + +glibc before 2.19 missed the definition of IPPROTO_MH. This leads to +build failure: + +parser_bison.y: In function 'nft_parse': +parser_bison.y:3793:21: error: 'IPPROTO_MH' undeclared (first use in this function) + | MH { $$ = IPPROTO_MH; } + ^ + +Since we have a local definition of IPPROTO_MH in headers.h use that to +fix the build. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://marc.info/?l=netfilter-devel&m=151818061103886&w=2 + + src/parser_bison.y | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/parser_bison.y b/src/parser_bison.y +index 2e79109f4da3..578bfdc10429 100644 +--- a/src/parser_bison.y ++++ b/src/parser_bison.y +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + #include +-- +2.15.1 + diff --git a/buildroot/package/nftables/Config.in b/buildroot/package/nftables/Config.in new file mode 100644 index 0000000..6452ab4 --- /dev/null +++ b/buildroot/package/nftables/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_NFTABLES + bool "nftables" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + select BR2_PACKAGE_GMP + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNFTNL + help + nftables is the project that aims to replace the existing + {ip,ip6,arp,eb}tables framework. + Basically, this project provides a new packet filtering + framework, a new userspace utility and also a compatibility + layer for {ip,ip6}tables. + + http://www.netfilter.org/projects/nftables/index.html + +comment "nftables needs a toolchain w/ wchar, headers >= 3.12" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 diff --git a/buildroot/package/nftables/nftables.hash b/buildroot/package/nftables/nftables.hash new file mode 100644 index 0000000..d6ccf7b --- /dev/null +++ b/buildroot/package/nftables/nftables.hash @@ -0,0 +1,6 @@ +# From http://www.netfilter.org/projects/nftables/downloads.html +sha1 51fd436845718f1221ee198128656ef9055c2588 nftables-0.8.1.tar.bz2 +# Locally calculated after checking pgp signature +# http://www.netfilter.org/projects/nftables/files/nftables-0.8.1.tar.bz2.sig +sha256 8aead66cce70d68c70e4be917813abcbcf62811ee6de4c7761d0e34391772fc4 nftables-0.8.1.tar.bz2 +sha256 c17bc4fa5b2434c6f283ffcb2312e5bf3c7cdf5787b79505f094d8de734ac53e COPYING diff --git a/buildroot/package/nftables/nftables.mk b/buildroot/package/nftables/nftables.mk new file mode 100644 index 0000000..329b987 --- /dev/null +++ b/buildroot/package/nftables/nftables.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# nftables +# +################################################################################ + +NFTABLES_VERSION = 0.8.1 +NFTABLES_SOURCE = nftables-$(NFTABLES_VERSION).tar.bz2 +NFTABLES_SITE = http://www.netfilter.org/projects/nftables/files +NFTABLES_DEPENDENCIES = gmp libmnl libnftnl host-bison host-flex \ + host-pkgconf $(TARGET_NLS_DEPENDENCIES) +NFTABLES_LICENSE = GPL-2.0 +NFTABLES_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_READLINE),y) +NFTABLES_DEPENDENCIES += readline +NFTABLES_LIBS += -lncurses +else +NFTABLES_CONF_OPTS += --without-cli +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_LIBNFTNL_JSON),yy) +NFTABLES_LIBS += -ljansson -lm +endif + +NFTABLES_CONF_ENV = \ + ac_cv_prog_CONFIG_PDF=no \ + LIBS="$(NFTABLES_LIBS)" \ + DBLATEX=no \ + DOCBOOK2X_MAN=no \ + DOCBOOK2MAN=no \ + DB2X_DOCBOOK2MAN=no + +$(eval $(autotools-package)) diff --git a/buildroot/package/nginx-dav-ext/Config.in b/buildroot/package/nginx-dav-ext/Config.in new file mode 100644 index 0000000..1e60321 --- /dev/null +++ b/buildroot/package/nginx-dav-ext/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NGINX_DAV_EXT + bool "nginx-dav-ext" + depends on BR2_PACKAGE_NGINX_HTTP_DAV_MODULE + select BR2_PACKAGE_EXPAT + help + NGINX WebDAV missing commands support (PROPFIND & OPTIONS). + + https://github.com/arut/nginx-dav-ext-module diff --git a/buildroot/package/nginx-dav-ext/nginx-dav-ext.hash b/buildroot/package/nginx-dav-ext/nginx-dav-ext.hash new file mode 100644 index 0000000..a711f8c --- /dev/null +++ b/buildroot/package/nginx-dav-ext/nginx-dav-ext.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 6b004eed8ea16ad8de4d304027bf0413cc323a95914e58625a7dc066481aae3a nginx-dav-ext-v0.1.0.tar.gz +sha256 40581cf424621965adaf1461e97129520ff4fcfb62ed9965ec6fd50b7f4ddfca LICENSE diff --git a/buildroot/package/nginx-dav-ext/nginx-dav-ext.mk b/buildroot/package/nginx-dav-ext/nginx-dav-ext.mk new file mode 100644 index 0000000..436bc29 --- /dev/null +++ b/buildroot/package/nginx-dav-ext/nginx-dav-ext.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# nginx-dav-ext +# +################################################################################ + +NGINX_DAV_EXT_VERSION = v0.1.0 +NGINX_DAV_EXT_SITE = $(call github,arut,nginx-dav-ext-module,$(NGINX_DAV_EXT_VERSION)) +NGINX_DAV_EXT_LICENSE = BSD-2-Clause +NGINX_DAV_EXT_LICENSE_FILES = LICENSE +NGINX_DAV_EXT_DEPENDENCIES = expat + +$(eval $(generic-package)) diff --git a/buildroot/package/nginx-naxsi/Config.in b/buildroot/package/nginx-naxsi/Config.in new file mode 100644 index 0000000..fc2ba9b --- /dev/null +++ b/buildroot/package/nginx-naxsi/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_NGINX_NAXSI + bool "nginx-naxsi" + depends on BR2_PACKAGE_NGINX_HTTP + # uses pcre, so nginx needs to be built with pcre support + select BR2_PACKAGE_PCRE + help + NAXSI means Nginx Anti XSS & SQL Injection. + + Technically, it is a third party nginx module, available as + a package for many UNIX-like platforms. This module, by + default, reads a small subset of simple (and readable) rules + containing 99% of known patterns involved in website + vulnerabilities. For example, <, | or drop are not supposed + to be part of a URI. + + Being very simple, those patterns may match legitimate + queries, it is the Naxsi's administrator duty to add + specific rules that will whitelist legitimate + behaviours. The administrator can either add whitelists + manually by analyzing nginx's error log, or (recommended) + start the project with an intensive auto-learning phase that + will automatically generate whitelisting rules regarding a + website's behaviour. + + In short, Naxsi behaves like a DROP-by-default firewall, the + only task is to add required ACCEPT rules for the target + website to work properly. + + https://github.com/nbs-system/naxsi diff --git a/buildroot/package/nginx-naxsi/nginx-naxsi.hash b/buildroot/package/nginx-naxsi/nginx-naxsi.hash new file mode 100644 index 0000000..55fc4f1 --- /dev/null +++ b/buildroot/package/nginx-naxsi/nginx-naxsi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0b3c95d250772dc89ad8b49e47c1e024c5ae2c76c0cffa445e9fe05c4dd13495 nginx-naxsi-0.55.3.tar.gz diff --git a/buildroot/package/nginx-naxsi/nginx-naxsi.mk b/buildroot/package/nginx-naxsi/nginx-naxsi.mk new file mode 100644 index 0000000..491d518 --- /dev/null +++ b/buildroot/package/nginx-naxsi/nginx-naxsi.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# nginx-naxsi +# +################################################################################ + +NGINX_NAXSI_VERSION = 0.55.3 +NGINX_NAXSI_SITE = $(call github,nbs-system,naxsi,$(NGINX_NAXSI_VERSION)) +NGINX_NAXSI_LICENSE = GPL-2.0+ with OpenSSL exception +NGINX_NAXSI_LICENSE_FILES = naxsi_src/naxsi_json.c + +$(eval $(generic-package)) diff --git a/buildroot/package/nginx-upload/0001-nginx-upload-module-add-openssl-lib-dependency.patch b/buildroot/package/nginx-upload/0001-nginx-upload-module-add-openssl-lib-dependency.patch new file mode 100644 index 0000000..1161751 --- /dev/null +++ b/buildroot/package/nginx-upload/0001-nginx-upload-module-add-openssl-lib-dependency.patch @@ -0,0 +1,56 @@ +From 600d0a36c2af785c8284acadeb062d73247281af Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Sun, 23 Jul 2017 09:21:23 -0500 +Subject: [PATCH] nginx-upload-module: add openssl lib dependency + +When building against nginx 1.11.2+, requires additional +-lcrypto dependency. (Nginx changed crypto approach +and dependencies for openssl are no longer default) + +More details found here: +https://github.com/vkholodkov/nginx-upload-module/issues/79 + +Upstream pull request: +https://github.com/vkholodkov/nginx-upload-module/pull/93 + +Resolves build failure: +objs/addon/nginx-upload-70bee48f1811eecd255ed094ce9f0fb560c390c3/ngx_http_upload_module.o \ +objs/ngx_modules.o \ +-ldl -lpthread -lpthread -lpcre -lz -latomic_ops \ +-Wl,-E +ngx_http_upload_module.o: In function `ngx_http_upload_flush_output_buffer': +ngx_http_upload_module.c:1625: undefined reference to `MD5_Update' +ngx_http_upload_module.c:1628: undefined reference to `SHA1_Update' +ngx_http_upload_module.c:1631: undefined reference to `SHA256_Update' +ngx_http_upload_module.c:1634: undefined reference to `SHA512_Update' + +Fixes: +http://autobuild.buildroot.net/results/e25f8ba8d8743e47a77707cf582e58477e1860e6 +http://autobuild.buildroot.net/results/c4aa6e22033be934bd311cd9761f646d44618dc0 +http://autobuild.buildroot.net/results/75e935d248b46df11c32c95526423a2287ac8c62 + +Signed-off-by: Matthew Weber +--- + config | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/config b/config +index cabd4f1..293529f 100644 +--- a/config ++++ b/config +@@ -1,11 +1,10 @@ +-USE_MD5=YES +-USE_SHA1=YES + ngx_addon_name=ngx_http_upload_module + + if test -n "$ngx_module_link"; then + ngx_module_type=HTTP + ngx_module_name=$ngx_addon_name + ngx_module_srcs="$ngx_addon_dir/ngx_http_upload_module.c" ++ ngx_module_libs="$(${PKG_CONFIG:=pkg-config} --libs openssl)" + + . auto/module + else +-- +1.9.1 + diff --git a/buildroot/package/nginx-upload/Config.in b/buildroot/package/nginx-upload/Config.in new file mode 100644 index 0000000..6bc1c3d --- /dev/null +++ b/buildroot/package/nginx-upload/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_NGINX_UPLOAD + bool "nginx-upload" + depends on BR2_PACKAGE_NGINX_HTTP + select BR2_PACKAGE_OPENSSL + help + A module for nginx web server for handling file uploads + using multipart/form-data encoding (RFC 1867). + + https://github.com/vkholodkov/nginx-upload-module diff --git a/buildroot/package/nginx-upload/nginx-upload.hash b/buildroot/package/nginx-upload/nginx-upload.hash new file mode 100644 index 0000000..3a8dfed --- /dev/null +++ b/buildroot/package/nginx-upload/nginx-upload.hash @@ -0,0 +1,2 @@ +#Locally Computed: +sha256 5f1c3c2b9858b9cacd877a0f2df9b9263734e9cef8d837b73f0e659c0f7fde2d nginx-upload-70bee48f1811eecd255ed094ce9f0fb560c390c3.tar.gz diff --git a/buildroot/package/nginx-upload/nginx-upload.mk b/buildroot/package/nginx-upload/nginx-upload.mk new file mode 100644 index 0000000..7385425 --- /dev/null +++ b/buildroot/package/nginx-upload/nginx-upload.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# nginx-upload +# +################################################################################ + +NGINX_UPLOAD_VERSION = 70bee48f1811eecd255ed094ce9f0fb560c390c3 +NGINX_UPLOAD_SITE = $(call github,vkholodkov,nginx-upload-module,$(NGINX_UPLOAD_VERSION)) +NGINX_UPLOAD_LICENSE = BSD-3-Clause +NGINX_UPLOAD_LICENSE_FILES = LICENCE +NGINX_UPLOAD_DEPENDENCIES = openssl + +$(eval $(generic-package)) diff --git a/buildroot/package/nginx/0001-auto-type-sizeof-rework-autotest-to-be-cross-compila.patch b/buildroot/package/nginx/0001-auto-type-sizeof-rework-autotest-to-be-cross-compila.patch new file mode 100644 index 0000000..5b1a50b --- /dev/null +++ b/buildroot/package/nginx/0001-auto-type-sizeof-rework-autotest-to-be-cross-compila.patch @@ -0,0 +1,89 @@ +From fb158af083e72c9aa0a8dfd4c6965f950192a230 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Tue, 4 Jul 2017 11:09:20 -0400 +Subject: [PATCH] auto/type/sizeof: rework autotest to be cross-compilation + friendly + +Rework the sizeof test to do the checks at compile time instead of at +runtime. This way, it does not break when cross-compiling for a +different CPU architecture. + +Signed-off-by: Samuel Martin + +Refresh for 1.8.0. + +Signed-off-by: Danomi Manchego +[martin@barkynet.com: Updated for 1.10.0] +Signed-off-by: Martin Bark +Signed-off-by: Adam Duskett +Refresh for 1.12.0 +--- + auto/types/sizeof | 37 ++++++++++++++++++++++++++++--------- + 1 file changed, 28 insertions(+), 9 deletions(-) + +diff --git a/auto/types/sizeof b/auto/types/sizeof +index 480d8cf..61dcd2d 100644 +--- a/auto/types/sizeof ++++ b/auto/types/sizeof +@@ -14,7 +14,7 @@ END + + ngx_size= + +-cat << END > $NGX_AUTOTEST.c ++cat << _EOF > $NGX_AUTOTEST.c + + #include + #include +@@ -25,22 +25,41 @@ $NGX_INCLUDE_UNISTD_H + $NGX_INCLUDE_INTTYPES_H + $NGX_INCLUDE_AUTO_CONFIG_H + +-int main(void) { +- printf("%d", (int) sizeof($ngx_type)); ++#if !defined( PASTE) ++#define PASTE2( x, y) x##y ++#define PASTE( x, y) PASTE2( x, y) ++#endif /* PASTE */ ++ ++#define SAY_IF_SIZEOF( typename, type, size) \\ ++ static char PASTE( PASTE( PASTE( sizeof_, typename), _is_), size) \\ ++ [(sizeof(type) == (size)) ? 1 : -1] ++ ++SAY_IF_SIZEOF(TEST_TYPENAME, TEST_TYPE, TEST_SIZE); ++ ++int main(void) ++{ + return 0; + } + +-END ++_EOF + + +-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ +- -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs" ++_ngx_typename=`echo "$ngx_type" | sed 's/ /_/g;s/\*/p/'` ++ngx_size="-1" ++ngx_size=`for i in 1 2 4 8 16 ; do \ ++ $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ ++ -DTEST_TYPENAME="$_ngx_typename" -DTEST_TYPE="$ngx_type" -DTEST_SIZE="$i" \ ++ $NGX_AUTOTEST.c -o $NGX_AUTOTEST \ ++ $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 || continue ;\ ++ echo $i ; break ; done` + +-eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1" ++rm -rf $NGX_AUTOTEST* + ++if test -z $ngx_size ; then ++ ngx_size=-1 ++fi + +-if [ -x $NGX_AUTOTEST ]; then +- ngx_size=`$NGX_AUTOTEST` ++if [ $ngx_size -gt 0 ]; then + echo " $ngx_size bytes" + fi + +-- +2.9.4 + diff --git a/buildroot/package/nginx/0002-auto-feature-add-mechanism-allowing-to-force-feature.patch b/buildroot/package/nginx/0002-auto-feature-add-mechanism-allowing-to-force-feature.patch new file mode 100644 index 0000000..13bef5f --- /dev/null +++ b/buildroot/package/nginx/0002-auto-feature-add-mechanism-allowing-to-force-feature.patch @@ -0,0 +1,135 @@ +From ef72be22ad6d58e230f75553d80b470b80c3303a Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 4 May 2014 00:40:49 +0200 +Subject: [PATCH] auto/feature: add mechanism allowing to force feature run + test result + +Whenever a feature needs to run a test, the ngx_feature_run_force_result +variable can be set to the desired test result, and thus skip the test. + +Therefore, the generated config.h file will honor these presets. + +This mechanism aims to make easier cross-compilation support. + +Signed-off-by: Samuel Martin +--- + auto/feature | 80 ++++++++++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 59 insertions(+), 21 deletions(-) + +diff --git a/auto/feature b/auto/feature +index 1145f28..a194b85 100644 +--- a/auto/feature ++++ b/auto/feature +@@ -52,50 +52,88 @@ if [ -x $NGX_AUTOTEST ]; then + case "$ngx_feature_run" in + + yes) +- # /bin/sh is used to intercept "Killed" or "Abort trap" messages +- if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then +- echo " found" ++ if test -n "$ngx_feature_run_force_result" ; then ++ echo " not tested (maybe cross-compiling)" ++ if test -n "$ngx_feature_name" ; then ++ if test "$ngx_feature_run_force_result" = "yes" ; then ++ have=$ngx_have_feature . auto/have ++ fi ++ fi + ngx_found=yes ++ else + +- if test -n "$ngx_feature_name"; then +- have=$ngx_have_feature . auto/have ++ # /bin/sh is used to intercept "Killed" or "Abort trap" messages ++ if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then ++ echo " found" ++ ngx_found=yes ++ ++ if test -n "$ngx_feature_name"; then ++ have=$ngx_have_feature . auto/have ++ fi ++ ++ else ++ echo " found but is not working" + fi + +- else +- echo " found but is not working" + fi + ;; + + value) +- # /bin/sh is used to intercept "Killed" or "Abort trap" messages +- if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then +- echo " found" ++ if test -n "$ngx_feature_run_force_result" ; then ++ echo " not tested (maybe cross-compiling)" ++ cat << END >> $NGX_AUTO_CONFIG_H ++ ++#ifndef $ngx_feature_name ++#define $ngx_feature_name $ngx_feature_run_force_result ++#endif ++ ++END + ngx_found=yes ++ else + +- cat << END >> $NGX_AUTO_CONFIG_H ++ # /bin/sh is used to intercept "Killed" or "Abort trap" messages ++ if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then ++ echo " found" ++ ngx_found=yes ++ ++ cat << END >> $NGX_AUTO_CONFIG_H + + #ifndef $ngx_feature_name + #define $ngx_feature_name `$NGX_AUTOTEST` + #endif + + END +- else +- echo " found but is not working" ++ else ++ echo " found but is not working" ++ fi ++ + fi + ;; + + bug) +- # /bin/sh is used to intercept "Killed" or "Abort trap" messages +- if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then +- echo " not found" +- +- else +- echo " found" ++ if test -n "$ngx_feature_run_force_result" ; then ++ echo " not tested (maybe cross-compiling)" ++ if test -n "$ngx_feature_name"; then ++ if test "$ngx_feature_run_force_result" = "yes" ; then ++ have=$ngx_have_feature . auto/have ++ fi ++ fi + ngx_found=yes ++ else + +- if test -n "$ngx_feature_name"; then +- have=$ngx_have_feature . auto/have ++ # /bin/sh is used to intercept "Killed" or "Abort trap" messages ++ if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then ++ echo " not found" ++ ++ else ++ echo " found" ++ ngx_found=yes ++ ++ if test -n "$ngx_feature_name"; then ++ have=$ngx_have_feature . auto/have ++ fi + fi ++ + fi + ;; + +-- +1.9.2 + diff --git a/buildroot/package/nginx/0003-auto-set-ngx_feature_run_force_result-for-each-featu.patch b/buildroot/package/nginx/0003-auto-set-ngx_feature_run_force_result-for-each-featu.patch new file mode 100644 index 0000000..be1df7f --- /dev/null +++ b/buildroot/package/nginx/0003-auto-set-ngx_feature_run_force_result-for-each-featu.patch @@ -0,0 +1,213 @@ +From 71939b727a8fa9f722934700948a5b68960f6183 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Thu, 29 May 2014 18:52:10 +0200 +Subject: [PATCH] auto/*: set ngx_feature_run_force_result for each feature + requiring run test + +Each feature requiring a run test has a matching preset variable (called +ngx_force_*) used to set ngx_feature_run_force_result. + +These ngx_force_* variables are passed through the environment at configure +time. + +Signed-off-by: Samuel Martin + +Refresh for 1.8.0. + +Signed-off-by: Danomi Manchego +--- + auto/cc/conf | 3 +++ + auto/cc/name | 1 + + auto/lib/libatomic/conf | 1 + + auto/os/darwin | 3 +++ + auto/os/linux | 4 ++++ + auto/unix | 8 ++++++++ + 6 files changed, 20 insertions(+) + +diff --git a/auto/cc/conf b/auto/cc/conf +index edc6d74..a61ade4 100644 +--- a/auto/cc/conf ++++ b/auto/cc/conf +@@ -181,6 +181,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then + ngx_feature="gcc builtin atomic operations" + ngx_feature_name=NGX_HAVE_GCC_ATOMIC + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_gcc_have_atomic" + ngx_feature_incs= + ngx_feature_path= + ngx_feature_libs= +@@ -201,6 +203,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then + ngx_feature="C99 variadic macros" + ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS" + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_c99_have_variadic_macros" + ngx_feature_incs="#include + #define var(dummy, ...) sprintf(__VA_ARGS__)" + ngx_feature_path= +@@ -215,6 +220,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then + ngx_feature="gcc variadic macros" + ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_gcc_have_variadic_macros" + ngx_feature_incs="#include + #define var(dummy, args...) sprintf(args)" + ngx_feature_path= +diff --git a/auto/cc/name b/auto/cc/name +index 51a7ed9..d237d47 100644 +--- a/auto/cc/name ++++ b/auto/cc/name +@@ -8,6 +8,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then + ngx_feature="C compiler" + ngx_feature_name= + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_c_compiler" + ngx_feature_incs= + ngx_feature_path= + ngx_feature_libs= +diff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf +index d1e484a..3724916 100644 +--- a/auto/lib/libatomic/conf ++++ b/auto/lib/libatomic/conf +@@ -15,6 +15,7 @@ else + ngx_feature="atomic_ops library" + ngx_feature_name=NGX_HAVE_LIBATOMIC + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_have_libatomic" + ngx_feature_incs="#define AO_REQUIRE_CAS + #include " + ngx_feature_path= +diff --git a/auto/os/darwin b/auto/os/darwin +index 1d3e3d3..11b7276 100644 +--- a/auto/os/darwin ++++ b/auto/os/darwin +@@ -30,6 +30,7 @@ NGX_KQUEUE_CHECKED=YES + ngx_feature="kqueue's EVFILT_TIMER" + ngx_feature_name="NGX_HAVE_TIMER_EVENT" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_timer_event" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -60,6 +61,7 @@ ngx_feature_test="int kq; + ngx_feature="Darwin 64-bit kqueue millisecond timeout bug" + ngx_feature_name=NGX_DARWIN_KEVENT_BUG + ngx_feature_run=bug ++ngx_feature_run_force_result="$ngx_force_kevent_bug" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -90,6 +92,7 @@ CC_AUX_FLAGS="$CC_AUX_FLAGS" + ngx_feature="sendfile()" + ngx_feature_name="NGX_HAVE_SENDFILE" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_sendfile" + ngx_feature_incs="#include + #include + #include +diff --git a/auto/os/linux b/auto/os/linux +index 19bf832..16848b2 100644 +--- a/auto/os/linux ++++ b/auto/os/linux +@@ -37,6 +37,7 @@ fi + ngx_feature="epoll" + ngx_feature_name="NGX_HAVE_EPOLL" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_epoll" + ngx_feature_incs="#include " + ngx_feature_path= + ngx_feature_libs= +@@ -111,6 +112,7 @@ CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE" + ngx_feature="sendfile()" + ngx_feature_name="NGX_HAVE_SENDFILE" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_sendfile" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -132,6 +134,7 @@ CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" + ngx_feature="sendfile64()" + ngx_feature_name="NGX_HAVE_SENDFILE64" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_sendfile64" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -150,6 +153,7 @@ ngx_include="sys/prctl.h"; . auto/include + ngx_feature="prctl(PR_SET_DUMPABLE)" + ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_pr_set_dumpable" + ngx_feature_incs="#include " + ngx_feature_path= + ngx_feature_libs= +diff --git a/auto/unix b/auto/unix +index 6e54531..7dbf9d1 100755 +--- a/auto/unix ++++ b/auto/unix +@@ -100,6 +100,7 @@ if test -z "$NGX_KQUEUE_CHECKED"; then + ngx_feature="kqueue's EVFILT_TIMER" + ngx_feature_name="NGX_HAVE_TIMER_EVENT" + ngx_feature_run=yes ++ ngx_feature_run_force_result="$ngx_force_have_timer_event" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -702,6 +703,7 @@ ngx_feature_test="char buf[1]; ssize_t n; n = pwrite(1, buf, 1, 0); + ngx_feature="sys_nerr" + ngx_feature_name="NGX_SYS_NERR" + ngx_feature_run=value ++ngx_feature_run_force_result="$ngx_force_sys_nerr" + ngx_feature_incs='#include + #include ' + ngx_feature_path= +@@ -716,6 +718,7 @@ if [ $ngx_found = no ]; then + ngx_feature="_sys_nerr" + ngx_feature_name="NGX_SYS_NERR" + ngx_feature_run=value ++ ngx_feature_run_force_result="$ngx_force_sys_nerr" + ngx_feature_incs='#include + #include ' + ngx_feature_path= +@@ -731,6 +734,7 @@ if [ $ngx_found = no ]; then + ngx_feature='maximum errno' + ngx_feature_name=NGX_SYS_NERR + ngx_feature_run=value ++ ngx_feature_run_force_result="$ngx_force_sys_nerr" + ngx_feature_incs='#include + #include + #include ' +@@ -789,6 +793,7 @@ ngx_feature_test="void *p; p = memalign(4096, 4096); + ngx_feature="mmap(MAP_ANON|MAP_SHARED)" + ngx_feature_name="NGX_HAVE_MAP_ANON" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_map_anon" + ngx_feature_incs="#include " + ngx_feature_path= + ngx_feature_libs= +@@ -802,6 +807,7 @@ ngx_feature_test="void *p; + ngx_feature='mmap("/dev/zero", MAP_SHARED)' + ngx_feature_name="NGX_HAVE_MAP_DEVZERO" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_map_devzero" + ngx_feature_incs="#include + #include + #include " +@@ -817,6 +823,7 @@ ngx_feature_test='void *p; int fd; + ngx_feature="System V shared memory" + ngx_feature_name="NGX_HAVE_SYSVSHM" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_sysvshm" + ngx_feature_incs="#include + #include " + ngx_feature_path= +@@ -831,6 +838,7 @@ ngx_feature_test="int id; + ngx_feature="POSIX semaphores" + ngx_feature_name="NGX_HAVE_POSIX_SEM" + ngx_feature_run=yes ++ngx_feature_run_force_result="$ngx_force_have_posix_sem" + ngx_feature_incs="#include " + ngx_feature_path= + ngx_feature_libs= +-- +1.9.1 + diff --git a/buildroot/package/nginx/0004-auto-lib-libxslt-conf-use-pkg-config.patch b/buildroot/package/nginx/0004-auto-lib-libxslt-conf-use-pkg-config.patch new file mode 100644 index 0000000..103f90b --- /dev/null +++ b/buildroot/package/nginx/0004-auto-lib-libxslt-conf-use-pkg-config.patch @@ -0,0 +1,32 @@ +From 211b9f19a3a62826fadef55d2f89d6f66fbf4aa6 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Thu, 29 May 2014 19:22:27 +0200 +Subject: [PATCH] auto/lib/libxslt/conf: use pkg-config + +Change to using pkg-config to find the path to libxslt and its +dependencies. + +Signed-off-by: Martin Bark +--- + auto/lib/libxslt/conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/auto/lib/libxslt/conf b/auto/lib/libxslt/conf +index 3a0f37b..3c2a60e 100644 +--- a/auto/lib/libxslt/conf ++++ b/auto/lib/libxslt/conf +@@ -12,8 +12,9 @@ + #include + #include + #include " +- ngx_feature_path="/usr/include/libxml2" +- ngx_feature_libs="-lxml2 -lxslt" ++ ngx_feature_path="$(${PKG_CONFIG:=pkg-config} --cflags-only-I libxslt| ++ sed -re 's/(^|\s)-I\s*(\S+)/\1\2/g')" ++ ngx_feature_libs="$(${PKG_CONFIG:=pkg-config} --libs libxslt)" + ngx_feature_test="xmlParserCtxtPtr ctxt = NULL; + xsltStylesheetPtr sheet = NULL; + xmlDocPtr doc; +-- +2.8.2 + diff --git a/buildroot/package/nginx/0005-auto-unix-make-sys_nerr-guessing-cross-friendly.patch b/buildroot/package/nginx/0005-auto-unix-make-sys_nerr-guessing-cross-friendly.patch new file mode 100644 index 0000000..b4d8215 --- /dev/null +++ b/buildroot/package/nginx/0005-auto-unix-make-sys_nerr-guessing-cross-friendly.patch @@ -0,0 +1,138 @@ +From 08617a8d29ee22831175697555558fec8f52772c Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 1 Jun 2014 16:05:04 +0200 +Subject: [PATCH] auto/unix: make sys_nerr guessing cross-friendly + +This patch replaces the default sys_nerr runtest with a test done at +buildtime. + +The idea behind this buildtime test is finding the value of the ERR_MAX +macro if defined, or the EHWPOISON (which is currently the last errno) +otherwise. + +Signed-off-by: Samuel Martin + +Refresh for 1.8.0. + +Signed-off-by: Danomi Manchego +--- + auto/os/sys_nerr | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + auto/unix | 10 ++++++++ + 2 files changed, 88 insertions(+) + create mode 100644 auto/os/sys_nerr + +diff --git a/auto/os/sys_nerr b/auto/os/sys_nerr +new file mode 100644 +index 0000000..8970f5f +--- /dev/null ++++ b/auto/os/sys_nerr +@@ -0,0 +1,78 @@ ++ ++# Copyright (C) Samuel Martin ++ ++ ++echo $ngx_n "checking for sys_nerr value...$ngx_c" ++ ++# sys_nerr guessing is done using a (very) poor (but working) ++# heuristics, by checking for the value of ERR_MAX if defined, or ++# EHWPOISON otherwise. ++ ++cat << END >> $NGX_AUTOCONF_ERR ++ ++---------------------------------------- ++checking for sys_nerr value ++ ++END ++ ++ngx_sys_nerr= ++ ++cat << _EOF > $NGX_AUTOTEST.c ++ ++#include ++#include ++ ++static char sys_nerr_test[ERR_MAX]; ++int main(void) ++{ ++ return 0; ++} ++ ++_EOF ++ ++if $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ ++ $NGX_AUTOTEST.c -o $NGX_AUTOTEST \ ++ $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 ; then ++ _ngx_max_err_macro=ERR_MAX ++else ++ # the +2 has been empirically found! ++ _ngx_max_err_macro="EHWPOISON + 2" ++fi ++ ++cat << _EOF > $NGX_AUTOTEST.c ++ ++#include ++#include ++ ++static char sys_nerr_test[(TEST_ERR_MAX == $_ngx_max_err_macro) ? 1 : -1]; ++int main(void) ++{ ++ return 0; ++} ++ ++_EOF ++ ++ ++ngx_sys_nerr=`for i in $(seq 0 2000) ; do \ ++ $CC $CC_TEST_FLAGS $CC_AUX_FLAGS \ ++ -DTEST_ERR_MAX="$i" \ ++ $NGX_AUTOTEST.c -o $NGX_AUTOTEST \ ++ $NGX_LD_OPT $ngx_feature_libs >/dev/null 2>&1 || continue ;\ ++ echo $i ; break ; done` ++ ++rm -rf $NGX_AUTOTEST* ++ ++if test -z $ngx_sys_nerr ; then ++ ngx_size=0 ++ ngx_sys_nerr=0 ++fi ++ ++cat << END >> $NGX_AUTO_CONFIG_H ++ ++#ifndef $ngx_feature_name ++#define $ngx_feature_name $ngx_sys_nerr ++#endif ++ ++END ++ ++echo " $ngx_sys_nerr" +diff --git a/auto/unix b/auto/unix +index 7dbf9d1..00a7370 100755 +--- a/auto/unix ++++ b/auto/unix +@@ -708,6 +708,10 @@ ngx_feature_incs='#include + #include ' + ngx_feature_path= + ngx_feature_libs= ++ ++if false ; then ++# Disabled because only valid for native build. ++ + ngx_feature_test='printf("%d", sys_nerr);' + . auto/feature + +@@ -756,6 +760,12 @@ if [ $ngx_found = no ]; then + . auto/feature + fi + ++else ++ # Cross-compilation support ++ . auto/os/sys_nerr ++ ++fi ++ + + ngx_feature="localtime_r()" + ngx_feature_name="NGX_HAVE_LOCALTIME_R" +-- +1.9.1 + diff --git a/buildroot/package/nginx/0006-auto-lib-openssl-conf-use-pkg-config.patch b/buildroot/package/nginx/0006-auto-lib-openssl-conf-use-pkg-config.patch new file mode 100644 index 0000000..0bd4d33 --- /dev/null +++ b/buildroot/package/nginx/0006-auto-lib-openssl-conf-use-pkg-config.patch @@ -0,0 +1,32 @@ +From 756556d127da291cad8a2c007a89124a692aef7f Mon Sep 17 00:00:00 2001 +From: Martin Bark +Date: Fri, 6 May 2016 14:48:31 +0100 +Subject: [PATCH] auto/lib/openssl/conf: use pkg-config + +Change to using pkg-config to find the path to openssl and its +dependencies. + +Signed-off-by: Martin Bark +--- + auto/lib/openssl/conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/auto/lib/openssl/conf b/auto/lib/openssl/conf +index 39d9602..995c6f3 100644 +--- a/auto/lib/openssl/conf ++++ b/auto/lib/openssl/conf +@@ -58,8 +58,9 @@ else + ngx_feature_name="NGX_OPENSSL" + ngx_feature_run=no + ngx_feature_incs="#include " +- ngx_feature_path= +- ngx_feature_libs="-lssl -lcrypto $NGX_LIBDL" ++ ngx_feature_path="$(${PKG_CONFIG:=pkg-config} --cflags-only-I openssl| ++ sed -re 's/(^|\s)-I\s*(\S+)/\1\2/g')" ++ ngx_feature_libs="$(${PKG_CONFIG:=pkg-config} --libs openssl)" + ngx_feature_test="SSL_CTX_set_options(NULL, 0)" + . auto/feature + +-- +2.8.2 + diff --git a/buildroot/package/nginx/0007-auto-lib-libgd-conf-use-pkg-config.patch b/buildroot/package/nginx/0007-auto-lib-libgd-conf-use-pkg-config.patch new file mode 100644 index 0000000..34e7981 --- /dev/null +++ b/buildroot/package/nginx/0007-auto-lib-libgd-conf-use-pkg-config.patch @@ -0,0 +1,31 @@ +From fd9885fe5fef5826034547ca6be7299863f99769 Mon Sep 17 00:00:00 2001 +From: Martin Bark +Date: Fri, 6 May 2016 14:48:49 +0100 +Subject: [PATCH] auto/lib/libgd/conf: use pkg-config + +Change to using pkg-config to find the path to libgd and its +dependencies. + +Signed-off-by: Martin Bark +--- + auto/lib/libgd/conf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/auto/lib/libgd/conf b/auto/lib/libgd/conf +index 6e4e91c..1c536a2 100644 +--- a/auto/lib/libgd/conf ++++ b/auto/lib/libgd/conf +@@ -7,8 +7,8 @@ + ngx_feature_name= + ngx_feature_run=no + ngx_feature_incs="#include " +- ngx_feature_path= +- ngx_feature_libs="-lgd" ++ ngx_feature_path="$(${GDLIB_CONFIG:=gdlib-config} --includedir)" ++ ngx_feature_libs="$(${GDLIB_CONFIG:=gdlib-config} --libs)" + ngx_feature_test="gdImagePtr img = gdImageCreateFromGifPtr(1, NULL);" + . auto/feature + +-- +2.8.2 + diff --git a/buildroot/package/nginx/0008-src-os-unix-ngx_linux_config.h-only-include-dlfcn.h-.patch b/buildroot/package/nginx/0008-src-os-unix-ngx_linux_config.h-only-include-dlfcn.h-.patch new file mode 100644 index 0000000..c10fcd1 --- /dev/null +++ b/buildroot/package/nginx/0008-src-os-unix-ngx_linux_config.h-only-include-dlfcn.h-.patch @@ -0,0 +1,33 @@ +From 8dc9dffc1f99ac951865f3135dfb5061a08d1f85 Mon Sep 17 00:00:00 2001 +From: Martin Bark +Date: Fri, 6 May 2016 16:29:17 +0100 +Subject: [PATCH] src/os/unix/ngx_linux_config.h: only include dlfcn.h if + available + +Signed-off-by: Martin Bark +--- + src/os/unix/ngx_linux_config.h | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h +index 2f6129d..4244086 100644 +--- a/src/os/unix/ngx_linux_config.h ++++ b/src/os/unix/ngx_linux_config.h +@@ -55,10 +55,12 @@ + #include + #include /* uname() */ + +-#include ++#include + + +-#include ++#if (NGX_HAVE_DLOPEN) ++#include ++#endif + + + #if (NGX_HAVE_POSIX_SEM) +-- +2.8.2 + diff --git a/buildroot/package/nginx/0009-auto-lib-conf-fix-PCRE-condition-WRT-the-http-and-ht.patch b/buildroot/package/nginx/0009-auto-lib-conf-fix-PCRE-condition-WRT-the-http-and-ht.patch new file mode 100644 index 0000000..0845651 --- /dev/null +++ b/buildroot/package/nginx/0009-auto-lib-conf-fix-PCRE-condition-WRT-the-http-and-ht.patch @@ -0,0 +1,33 @@ +From 9668f0d5ecd2382fd36b7ff6a3a29abd04f6533f Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Fri, 14 Jul 2017 11:50:08 +0200 +Subject: [PATCH] auto/lib/conf: fix PCRE condition WRT the http and + http_rewrite options + +http_rewrite module cannot be selected when http server is disabled, so +fix the PCRE check condition to avoid irrelevant check failure. + +Fixes: + http://autobuild.buildroot.net/results/bc7/bc7458b97a88785653845afd30fe9d5f3a69905b/build-end.log + +Signed-off-by: Samuel Martin +--- + auto/lib/conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/auto/lib/conf b/auto/lib/conf +index 0b8545a3..2c7af104 100644 +--- a/auto/lib/conf ++++ b/auto/lib/conf +@@ -7,7 +7,7 @@ if [ $USE_PCRE = YES -o $PCRE != NONE ]; then + . auto/lib/pcre/conf + + else +- if [ $USE_PCRE = DISABLED -a $HTTP_REWRITE = YES ]; then ++ if [ $USE_PCRE = DISABLED -a $HTTP = YES -a $HTTP_REWRITE = YES ]; then + + cat << END + +-- +2.13.2 + diff --git a/buildroot/package/nginx/Config.in b/buildroot/package/nginx/Config.in new file mode 100644 index 0000000..5c34f11 --- /dev/null +++ b/buildroot/package/nginx/Config.in @@ -0,0 +1,383 @@ +menuconfig BR2_PACKAGE_NGINX + bool "nginx" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBATOMIC_OPS if BR2_sparc_v8 || BR2_sparc_leon3 + help + nginx is an HTTP and reverse proxy server, as well as a mail + proxy server. + + http://nginx.org/ + +if BR2_PACKAGE_NGINX + +config BR2_PACKAGE_NGINX_FILE_AIO + bool "file AIO support" + # Does not build, because nginx hardcodes using SYS_eventfd, + # but it's available on neither AArch64 nor ARC where only + # eventfd() is available. See + # https://bugs.launchpad.net/linaro-aarch64/+bug/1160013 + depends on !BR2_aarch64 + depends on !BR2_arc + +config BR2_PACKAGE_NGINX_THREADS + bool "thread pool support" + depends on BR2_TOOLCHAIN_HAS_THREADS + +comment "thread pool support needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_NGINX_HTTP + bool "http server" + default y + +if BR2_PACKAGE_NGINX_HTTP + +config BR2_PACKAGE_NGINX_HTTP_CACHE + bool "http cache support" + select BR2_PACKAGE_OPENSSL + +comment "http modules" + +config BR2_PACKAGE_NGINX_HTTP_SSL_MODULE + bool "ngx_http_ssl_module" + select BR2_PACKAGE_OPENSSL + help + Enable ngx_http_ssl_module + +config BR2_PACKAGE_NGINX_HTTP_V2_MODULE + bool "ngx_http_v2_module" + select BR2_PACKAGE_ZLIB + help + Enable ngx_http_spdy_module + +config BR2_PACKAGE_NGINX_HTTP_REALIP_MODULE + bool "ngx_http_realip_module" + help + Enable ngx_http_realip_module + +config BR2_PACKAGE_NGINX_HTTP_ADDITION_MODULE + bool "ngx_http_addition_module" + help + Enable ngx_http_addition_module + +config BR2_PACKAGE_NGINX_HTTP_XSLT_MODULE + bool "ngx_http_xslt_module" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + help + Enable ngx_http_xslt_module + +config BR2_PACKAGE_NGINX_HTTP_IMAGE_FILTER_MODULE + bool "ngx_http_image_filter_module" + select BR2_PACKAGE_GD + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + help + Enable ngx_http_image_filter_module + +config BR2_PACKAGE_NGINX_HTTP_SUB_MODULE + bool "ngx_http_sub_module" + help + Enable ngx_http_sub_module + +config BR2_PACKAGE_NGINX_HTTP_DAV_MODULE + bool "ngx_http_dav_module" + help + Enable ngx_http_dav_module + +config BR2_PACKAGE_NGINX_HTTP_FLV_MODULE + bool "ngx_http_flv_module" + help + Enable ngx_http_flv_module + +config BR2_PACKAGE_NGINX_HTTP_MP4_MODULE + bool "ngx_http_mp4_module" + help + Enable ngx_http_mp4_module + +config BR2_PACKAGE_NGINX_HTTP_GUNZIP_MODULE + bool "ngx_http_gunzip_module" + select BR2_PACKAGE_ZLIB + help + Enable ngx_http_gunzip_module + +config BR2_PACKAGE_NGINX_HTTP_GZIP_STATIC_MODULE + bool "ngx_http_gzip_static_module" + select BR2_PACKAGE_ZLIB + help + Enable ngx_http_gzip_static_module + +config BR2_PACKAGE_NGINX_HTTP_AUTH_REQUEST_MODULE + bool "ngx_http_auth_request_module" + help + Enable ngx_http_auth_request_module + +config BR2_PACKAGE_NGINX_HTTP_RANDOM_INDEX_MODULE + bool "ngx_http_random_index_module" + help + Enable ngx_http_random_index_module + +config BR2_PACKAGE_NGINX_HTTP_SECURE_LINK_MODULE + bool "ngx_http_secure_link_module" + select BR2_PACKAGE_OPENSSL + help + Enable ngx_http_secure_link_module + +config BR2_PACKAGE_NGINX_HTTP_DEGRADATION_MODULE + bool "ngx_http_degradation_module" + help + Enable ngx_http_degradation_module + +config BR2_PACKAGE_NGINX_HTTP_STUB_STATUS_MODULE + bool "ngx_http_stub_status_module" + help + Enable ngx_http_stub_status_module + +config BR2_PACKAGE_NGINX_HTTP_CHARSET_MODULE + bool "ngx_http_charset_module" + default y + help + Enable ngx_http_charset_module + +config BR2_PACKAGE_NGINX_HTTP_GZIP_MODULE + bool "ngx_http_gzip_module" + default y + select BR2_PACKAGE_ZLIB + help + Enable ngx_http_gzip_module + +config BR2_PACKAGE_NGINX_HTTP_SSI_MODULE + bool "ngx_http_ssi_module" + default y + help + Enable ngx_http_ssi_module + +config BR2_PACKAGE_NGINX_HTTP_USERID_MODULE + bool "ngx_http_userid_module" + default y + help + Enable ngx_http_userid_module + +config BR2_PACKAGE_NGINX_HTTP_ACCESS_MODULE + bool "ngx_http_access_module" + default y + help + Enable ngx_http_access_module + +config BR2_PACKAGE_NGINX_HTTP_AUTH_BASIC_MODULE + bool "ngx_http_auth_basic_module" + default y + help + Enable ngx_http_auth_basic_module + +config BR2_PACKAGE_NGINX_HTTP_AUTOINDEX_MODULE + bool "ngx_http_autoindex_module" + default y + help + Enable ngx_http_autoindex_module + +config BR2_PACKAGE_NGINX_HTTP_GEO_MODULE + bool "ngx_http_geo_module" + default y + help + Enable ngx_http_geo_module + +config BR2_PACKAGE_NGINX_HTTP_MAP_MODULE + bool "ngx_http_map_module" + default y + help + Enable ngx_http_map_module + +config BR2_PACKAGE_NGINX_HTTP_SPLIT_CLIENTS_MODULE + bool "ngx_http_split_clients_module" + default y + help + Enable ngx_http_split_clients_module + +config BR2_PACKAGE_NGINX_HTTP_REFERER_MODULE + bool "ngx_http_referer_module" + default y + help + Enable ngx_http_referer_module + +config BR2_PACKAGE_NGINX_HTTP_REWRITE_MODULE + bool "ngx_http_rewrite_module" + default y + select BR2_PACKAGE_PCRE + help + Enable ngx_http_rewrite_module + +config BR2_PACKAGE_NGINX_HTTP_PROXY_MODULE + bool "ngx_http_proxy_module" + default y + help + Enable ngx_http_proxy_module + +config BR2_PACKAGE_NGINX_HTTP_FASTCGI_MODULE + bool "ngx_http_fastcgi_module" + default y + help + Enable ngx_http_fastcgi_module + +config BR2_PACKAGE_NGINX_HTTP_UWSGI_MODULE + bool "ngx_http_uwsgi_module" + default y + help + Enable ngx_http_uwsgi_module + +config BR2_PACKAGE_NGINX_HTTP_SCGI_MODULE + bool "ngx_http_scgi_module" + default y + help + Enable ngx_http_scgi_module + +config BR2_PACKAGE_NGINX_HTTP_MEMCACHED_MODULE + bool "ngx_http_memcached_module" + default y + help + Enable ngx_http_memcached_module + +config BR2_PACKAGE_NGINX_HTTP_LIMIT_CONN_MODULE + bool "ngx_http_limit_conn_module" + default y + help + Enable ngx_http_limit_conn_module + +config BR2_PACKAGE_NGINX_HTTP_LIMIT_REQ_MODULE + bool "ngx_http_limit_req_module" + default y + help + Enable ngx_http_limit_req_module + +config BR2_PACKAGE_NGINX_HTTP_EMPTY_GIF_MODULE + bool "ngx_http_empty_gif_module" + default y + help + Enable ngx_http_empty_gif_module + +config BR2_PACKAGE_NGINX_HTTP_BROWSER_MODULE + bool "ngx_http_browser_module" + default y + help + Enable ngx_http_browser_module + +config BR2_PACKAGE_NGINX_HTTP_UPSTREAM_IP_HASH_MODULE + bool "ngx_http_upstream_ip_hash_module" + default y + help + Enable ngx_http_upstream_ip_hash_module + +config BR2_PACKAGE_NGINX_HTTP_UPSTREAM_LEAST_CONN_MODULE + bool "ngx_http_upstream_least_conn_module" + default y + help + Enable ngx_http_upstream_least_conn_module + +config BR2_PACKAGE_NGINX_HTTP_UPSTREAM_KEEPALIVE_MODULE + bool "ngx_http_upstream_keepalive_module" + default y + help + Enable ngx_http_upstream_keepalive_module + +endif #BR2_PACKAGE_NGINX_HTTP + +config BR2_PACKAGE_NGINX_MAIL + bool "mail proxy modules" + +if BR2_PACKAGE_NGINX_MAIL + +config BR2_PACKAGE_NGINX_MAIL_SSL_MODULE + bool "ngx_mail_ssl_module" + select BR2_PACKAGE_OPENSSL + help + Enable ngx_mail_ssl_module + +config BR2_PACKAGE_NGINX_MAIL_POP3_MODULE + bool "ngx_mail_pop3_module" + default y + help + Enable ngx_mail_pop3_module + +config BR2_PACKAGE_NGINX_MAIL_IMAP_MODULE + bool "ngx_mail_imap_module" + default y + help + Enable ngx_mail_imap_module + +config BR2_PACKAGE_NGINX_MAIL_SMTP_MODULE + bool "ngx_mail_smtp_module" + default y + help + Enable ngx_mail_smtp_module + +endif #BR2_PACKAGE_NGINX_MAIL + +config BR2_PACKAGE_NGINX_STREAM + bool "stream proxy modules" + +if BR2_PACKAGE_NGINX_STREAM + +config BR2_PACKAGE_NGINX_STREAM_SSL_MODULE + bool "ngx_stream_ssl_module" + select BR2_PACKAGE_OPENSSL + help + Enable ngx_stream_ssl_module + +config BR2_PACKAGE_NGINX_STREAM_LIMIT_CONN_MODULE + bool "ngx_stream_limit_conn_module" + default y + help + Enable ngx_stream_limit_conn_module + +config BR2_PACKAGE_NGINX_STREAM_ACCESS_MODULE + bool "ngx_stream_access_module" + default y + help + Enable ngx_stream_access_module + +config BR2_PACKAGE_NGINX_STREAM_UPSTREAM_HASH_MODULE + bool "ngx_stream_upstream_hash_module" + default y + help + Enable ngx_stream_upstream_hash_module + +config BR2_PACKAGE_NGINX_STREAM_UPSTREAM_LEAST_CONN_MODULE + bool "ngx_stream_upstream_least_conn_module" + default y + help + Enable ngx_stream_upstream_least_conn_module + +config BR2_PACKAGE_NGINX_STREAM_UPSTREAM_ZONE_MODULE + bool "ngx_stream_upstream_zone_module" + default y + help + Enable ngx_stream_upstream_zone_module + +endif #BR2_PACKAGE_NGINX_STREAM + +config BR2_PACKAGE_NGINX_DEBUG + bool "debug logging" + help + Enable debug logging. The debug level should be set with + the error_log directive. For example + + error_log /var/log/nginx/error.log debug; + +comment "misc. modules" + +config BR2_PACKAGE_NGINX_SELECT_MODULE + bool "ngx_select_module" + help + Enable ngx_select_module + +config BR2_PACKAGE_NGINX_POLL_MODULE + bool "ngx_poll_module" + help + Enable ngx_poll_module + +config BR2_PACKAGE_NGINX_ADD_MODULES + string "additional modules" + help + Space separated list of urls of the additional modules + +endif diff --git a/buildroot/package/nginx/S50nginx b/buildroot/package/nginx/S50nginx new file mode 100755 index 0000000..964652b --- /dev/null +++ b/buildroot/package/nginx/S50nginx @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Start/stop nginx +# + +NGINX=/usr/sbin/nginx +PIDFILE=/var/run/nginx.pid + +case "$1" in + start) + echo "Starting nginx..." + mkdir -p /var/log/nginx /var/tmp/nginx + start-stop-daemon -S -x "$NGINX" -p "$PIDFILE" + ;; + stop) + echo "Stopping nginx..." + start-stop-daemon -K -x "$NGINX" -p "$PIDFILE" -o + ;; + reload|force-reload) + echo "Reloading nginx configuration..." + "$NGINX" -s reload + ;; + restart) + "$0" stop + sleep 1 # Prevent race condition: ensure nginx stops before start. + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload|force-reload}" + exit 1 +esac diff --git a/buildroot/package/nginx/nginx.hash b/buildroot/package/nginx/nginx.hash new file mode 100644 index 0000000..9936ca1 --- /dev/null +++ b/buildroot/package/nginx/nginx.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 305f379da1d5fb5aefa79e45c829852ca6983c7cd2a79328f8e084a324cf0416 nginx-1.12.2.tar.gz +# License files, locally calculated +sha256 75820469c890db641e54078df018e497fde0542211aa704e15320316a2175780 LICENSE diff --git a/buildroot/package/nginx/nginx.logrotate b/buildroot/package/nginx/nginx.logrotate new file mode 100644 index 0000000..e0fa9ec --- /dev/null +++ b/buildroot/package/nginx/nginx.logrotate @@ -0,0 +1,9 @@ +/var/log/nginx/*log { + missingok + create 640 http log + sharedscripts + compress + postrotate + test ! -r /var/run/nginx.pid || kill -USR1 `cat /var/run/nginx.pid` + endscript +} diff --git a/buildroot/package/nginx/nginx.mk b/buildroot/package/nginx/nginx.mk new file mode 100644 index 0000000..e5652af --- /dev/null +++ b/buildroot/package/nginx/nginx.mk @@ -0,0 +1,296 @@ +################################################################################ +# +# nginx +# +################################################################################ + +NGINX_VERSION = 1.12.2 +NGINX_SITE = http://nginx.org/download +NGINX_LICENSE = BSD-2-Clause +NGINX_LICENSE_FILES = LICENSE +NGINX_DEPENDENCIES = host-pkgconf + +NGINX_CONF_OPTS = \ + --crossbuild=Linux::$(BR2_ARCH) \ + --with-cc="$(TARGET_CC)" \ + --with-cpp="$(TARGET_CC)" \ + --with-ld-opt="$(TARGET_LDFLAGS)" \ + --with-ipv6 + +# www-data user and group are used for nginx. Because these user and group +# are already set by buildroot, it is not necessary to redefine them. +# See system/skeleton/etc/passwd +# username: www-data uid: 33 +# groupname: www-data gid: 33 +# +# So, we just need to create the directories used by nginx with the right +# ownership. +define NGINX_PERMISSIONS + /var/lib/nginx d 755 33 33 - - - - - +endef + +# disable external libatomic_ops because its detection fails. +NGINX_CONF_ENV += \ + ngx_force_c_compiler=yes \ + ngx_force_c99_have_variadic_macros=yes \ + ngx_force_gcc_have_variadic_macros=yes \ + ngx_force_gcc_have_atomic=yes \ + ngx_force_have_epoll=yes \ + ngx_force_have_sendfile=yes \ + ngx_force_have_sendfile64=yes \ + ngx_force_have_pr_set_dumpable=yes \ + ngx_force_have_timer_event=yes \ + ngx_force_have_map_anon=yes \ + ngx_force_have_map_devzero=yes \ + ngx_force_have_sysvshm=yes \ + ngx_force_have_posix_sem=yes + +# prefix: nginx root configuration location +NGINX_CONF_OPTS += \ + --prefix=/usr \ + --conf-path=/etc/nginx/nginx.conf \ + --sbin-path=/usr/sbin/nginx \ + --pid-path=/var/run/nginx.pid \ + --lock-path=/var/run/lock/nginx.lock \ + --user=www-data \ + --group=www-data \ + --error-log-path=/var/log/nginx/error.log \ + --http-log-path=/var/log/nginx/access.log \ + --http-client-body-temp-path=/var/tmp/nginx/client-body \ + --http-proxy-temp-path=/var/tmp/nginx/proxy \ + --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \ + --http-scgi-temp-path=/var/tmp/nginx/scgi \ + --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi + +NGINX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_NGINX_FILE_AIO),--with-file-aio) \ + $(if $(BR2_PACKAGE_NGINX_THREADS),--with-threads) + +ifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y) +NGINX_DEPENDENCIES += libatomic_ops +NGINX_CONF_OPTS += --with-libatomic +NGINX_CONF_ENV += ngx_force_have_libatomic=yes +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +NGINX_CFLAGS += "-DAO_NO_SPARC_V9" +endif +else +NGINX_CONF_ENV += ngx_force_have_libatomic=no +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +NGINX_DEPENDENCIES += pcre +NGINX_CONF_OPTS += --with-pcre +else +NGINX_CONF_OPTS += --without-pcre +endif + +# modules disabled or not activated because of missing dependencies: +# - google_perftools (googleperftools) +# - http_geoip_module (geoip) +# - http_perl_module (host-perl) +# - pcre-jit (want to rebuild pcre) + +# Notes: +# * Feature/module option are *not* symetric. +# If a feature is on by default, only its --without-xxx option exists; +# if a feature is off by default, only its --with-xxx option exists. +# * The configure script fails if unknown options are passed on the command +# line. + +# misc. modules +NGINX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_NGINX_SELECT_MODULE),--with-select_module,--without-select_module) \ + $(if $(BR2_PACKAGE_NGINX_POLL_MODULE),--with-poll_module,--without-poll_module) + +ifneq ($(BR2_PACKAGE_NGINX_ADD_MODULES),) +NGINX_CONF_OPTS += \ + $(addprefix --add-module=,$(call qstrip,$(BR2_PACKAGE_NGINX_ADD_MODULES))) +endif + +# http server modules +ifeq ($(BR2_PACKAGE_NGINX_HTTP),y) +ifeq ($(BR2_PACKAGE_NGINX_HTTP_CACHE),y) +NGINX_DEPENDENCIES += openssl +else +NGINX_CONF_OPTS += --without-http-cache +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_V2_MODULE),y) +NGINX_DEPENDENCIES += zlib +NGINX_CONF_OPTS += --with-http_v2_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_SSL_MODULE),y) +NGINX_DEPENDENCIES += openssl +NGINX_CONF_OPTS += --with-http_ssl_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_XSLT_MODULE),y) +NGINX_DEPENDENCIES += libxml2 libxslt +NGINX_CONF_OPTS += --with-http_xslt_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_IMAGE_FILTER_MODULE),y) +NGINX_DEPENDENCIES += gd jpeg libpng +NGINX_CONF_OPTS += --with-http_image_filter_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_GUNZIP_MODULE),y) +NGINX_DEPENDENCIES += zlib +NGINX_CONF_OPTS += --with-http_gunzip_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_GZIP_STATIC_MODULE),y) +NGINX_DEPENDENCIES += zlib +NGINX_CONF_OPTS += --with-http_gzip_static_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_SECURE_LINK_MODULE),y) +NGINX_DEPENDENCIES += openssl +NGINX_CONF_OPTS += --with-http_secure_link_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_GZIP_MODULE),y) +NGINX_DEPENDENCIES += zlib +else +NGINX_CONF_OPTS += --without-http_gzip_module +endif + +ifeq ($(BR2_PACKAGE_NGINX_HTTP_REWRITE_MODULE),y) +NGINX_DEPENDENCIES += pcre +else +NGINX_CONF_OPTS += --without-http_rewrite_module +endif + +NGINX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_NGINX_HTTP_REALIP_MODULE),--with-http_realip_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_ADDITION_MODULE),--with-http_addition_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_SUB_MODULE),--with-http_sub_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_DAV_MODULE),--with-http_dav_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_FLV_MODULE),--with-http_flv_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_MP4_MODULE),--with-http_mp4_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_AUTH_REQUEST_MODULE),--with-http_auth_request_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_RANDOM_INDEX_MODULE),--with-http_random_index_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_DEGRADATION_MODULE),--with-http_degradation_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_STUB_STATUS_MODULE),--with-http_stub_status_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_CHARSET_MODULE),,--without-http_charset_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_SSI_MODULE),,--without-http_ssi_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_USERID_MODULE),,--without-http_userid_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_ACCESS_MODULE),,--without-http_access_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_AUTH_BASIC_MODULE),,--without-http_auth_basic_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_AUTOINDEX_MODULE),,--without-http_autoindex_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_GEO_MODULE),,--without-http_geo_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_MAP_MODULE),,--without-http_map_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_SPLIT_CLIENTS_MODULE),,--without-http_split_clients_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_REFERER_MODULE),,--without-http_referer_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_PROXY_MODULE),,--without-http_proxy_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_FASTCGI_MODULE),,--without-http_fastcgi_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_UWSGI_MODULE),,--without-http_uwsgi_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_SCGI_MODULE),,--without-http_scgi_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_MEMCACHED_MODULE),,--without-http_memcached_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_LIMIT_CONN_MODULE),,--without-http_limit_conn_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_LIMIT_REQ_MODULE),,--without-http_limit_req_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_EMPTY_GIF_MODULE),,--without-http_empty_gif_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_BROWSER_MODULE),,--without-http_browser_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_IP_HASH_MODULE),,--without-http_upstream_ip_hash_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_LEAST_CONN_MODULE),,--without-http_upstream_least_conn_module) \ + $(if $(BR2_PACKAGE_NGINX_HTTP_UPSTREAM_KEEPALIVE_MODULE),,--without-http_upstream_keepalive_module) + +else # !BR2_PACKAGE_NGINX_HTTP +NGINX_CONF_OPTS += --without-http +endif # BR2_PACKAGE_NGINX_HTTP + +# mail modules +ifeq ($(BR2_PACKAGE_NGINX_MAIL),y) +NGINX_CONF_OPTS += --with-mail + +ifeq ($(BR2_PACKAGE_NGINX_MAIL_SSL_MODULE),y) +NGINX_DEPENDENCIES += openssl +NGINX_CONF_OPTS += --with-mail_ssl_module +endif + +NGINX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_NGINX_MAIL_POP3_MODULE),,--without-mail_pop3_module) \ + $(if $(BR2_PACKAGE_NGINX_MAIL_IMAP_MODULE),,--without-mail_imap_module) \ + $(if $(BR2_PACKAGE_NGINX_MAIL_SMTP_MODULE),,--without-mail_smtp_module) + +endif # BR2_PACKAGE_NGINX_MAIL + +# stream modules +ifeq ($(BR2_PACKAGE_NGINX_STREAM),y) +NGINX_CONF_OPTS += --with-stream + +ifeq ($(BR2_PACKAGE_NGINX_STREAM_SSL_MODULE),y) +NGINX_DEPENDENCIES += openssl +NGINX_CONF_OPTS += --with-stream_ssl_module +endif + +NGINX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_NGINX_STREAM_LIMIT_CONN_MODULE),,--without-stream_limit_conn_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_ACCESS_MODULE),,--without-stream_access_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_HASH_MODULE),,--without-stream_upstream_hash_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_LEAST_CONN_MODULE),,--without-stream_upstream_least_conn_module) \ + $(if $(BR2_PACKAGE_NGINX_STREAM_UPSTREAM_ZONE_MODULE),,--without-stream_upstream_zone_module) + +endif # BR2_PACKAGE_NGINX_STREAM + +# external modules +ifeq ($(BR2_PACKAGE_NGINX_UPLOAD),y) +NGINX_CONF_OPTS += $(addprefix --add-module=,$(NGINX_UPLOAD_DIR)) +NGINX_DEPENDENCIES += nginx-upload +endif + +ifeq ($(BR2_PACKAGE_NGINX_DAV_EXT),y) +NGINX_CONF_OPTS += --add-module=$(NGINX_DAV_EXT_DIR) +NGINX_DEPENDENCIES += nginx-dav-ext +endif + +ifeq ($(BR2_PACKAGE_NGINX_NAXSI),y) +NGINX_DEPENDENCIES += nginx-naxsi +NGINX_CONF_OPTS += --add-module=$(NGINX_NAXSI_DIR)/naxsi_src +endif + +# Debug logging +NGINX_CONF_OPTS += $(if $(BR2_PACKAGE_NGINX_DEBUG),--with-debug) + +define NGINX_DISABLE_WERROR + $(SED) 's/-Werror//g' -i $(@D)/auto/cc/* +endef + +NGINX_PRE_CONFIGURE_HOOKS += NGINX_DISABLE_WERROR + +define NGINX_CONFIGURE_CMDS + cd $(@D) ; $(NGINX_CONF_ENV) \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + GDLIB_CONFIG=$(STAGING_DIR)/usr/bin/gdlib-config \ + ./configure $(NGINX_CONF_OPTS) \ + --with-cc-opt="$(TARGET_CFLAGS) $(NGINX_CFLAGS)" +endef + +define NGINX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define NGINX_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(RM) $(TARGET_DIR)/usr/sbin/nginx.old + $(INSTALL) -D -m 0664 package/nginx/nginx.logrotate \ + $(TARGET_DIR)/etc/logrotate.d/nginx +endef + +define NGINX_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/nginx/nginx.service \ + $(TARGET_DIR)/usr/lib/systemd/system/nginx.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/nginx.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/nginx.service +endef + +define NGINX_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/nginx/S50nginx \ + $(TARGET_DIR)/etc/init.d/S50nginx +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/nginx/nginx.service b/buildroot/package/nginx/nginx.service new file mode 100644 index 0000000..320df9a --- /dev/null +++ b/buildroot/package/nginx/nginx.service @@ -0,0 +1,16 @@ +[Unit] +Description=A high performance web server and a reverse proxy server +After=syslog.target network.target + +[Service] +Type=forking +PIDFile=/var/run/nginx.pid +ExecStartPre=/usr/bin/mkdir -p /var/log/nginx /var/tmp/nginx +ExecStartPre=/usr/sbin/nginx -t -q -g 'pid /var/run/nginx.pid; daemon on; master_process on;' +ExecStart=/usr/sbin/nginx -g 'pid /var/run/nginx.pid; daemon on; master_process on;' +ExecReload=/usr/sbin/nginx -g 'pid /var/run/nginx.pid; daemon on; master_process on;' -s reload +ExecStop=/usr/sbin/nginx -g 'pid /var/run/nginx.pid;' -s quit +PrivateDevices=yes + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/ngircd/0001-Fix-Get_error-usage.patch b/buildroot/package/ngircd/0001-Fix-Get_error-usage.patch new file mode 100644 index 0000000..3724e46 --- /dev/null +++ b/buildroot/package/ngircd/0001-Fix-Get_error-usage.patch @@ -0,0 +1,44 @@ +From 543f44bff8d56785dc13a74a14d4eaa96465bf05 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Wed, 13 Sep 2017 14:07:11 +0200 +Subject: [PATCH] Fix Get_error usage + +The usage of Get_Error is guarded by "ifdef h_errno" in this file, the +definition of this function should follow the same rules. + +Fixes a build error when cross-compiling: +https://github.com/ngircd/ngircd/issues/223 + +Patch sent upstream: https://github.com/ngircd/ngircd/pull/240 + +Signed-off-by: Bernd Kuhls +--- + src/ngircd/resolve.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/src/ngircd/resolve.c b/src/ngircd/resolve.c +index 32791901..e1903254 100644 +--- a/src/ngircd/resolve.c ++++ b/src/ngircd/resolve.c +@@ -108,9 +108,7 @@ Resolve_Name( PROC_STAT *s, const char *Host, void (*cbfunc)(int, short)) + return false; + } /* Resolve_Name */ + +- +-#if !defined(HAVE_GETADDRINFO) || !defined(HAVE_GETNAMEINFO) +-#if !defined(WANT_IPV6) && defined(h_errno) ++#ifdef h_errno + static char * + Get_Error( int H_Error ) + { +@@ -128,7 +126,6 @@ Get_Error( int H_Error ) + return "unknown error"; + } + #endif +-#endif + + + /* Do "IDENT" (aka "AUTH") lookup and append result to resolved_addr array */ +-- +2.11.0 + diff --git a/buildroot/package/ngircd/Config.in b/buildroot/package/ngircd/Config.in new file mode 100644 index 0000000..9b3d430 --- /dev/null +++ b/buildroot/package/ngircd/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_NGIRCD + bool "ngircd" + depends on BR2_USE_MMU # fork() + help + Next Generation IRC server deamon. + + http://ngircd.barton.de diff --git a/buildroot/package/ngircd/ngircd.hash b/buildroot/package/ngircd/ngircd.hash new file mode 100644 index 0000000..128867b --- /dev/null +++ b/buildroot/package/ngircd/ngircd.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 173fa0ea10788a8ba08ef2f7e64ea8951d7c88862e744128c8b87bae424b1008 ngircd-24.tar.xz diff --git a/buildroot/package/ngircd/ngircd.mk b/buildroot/package/ngircd/ngircd.mk new file mode 100644 index 0000000..9b330fa --- /dev/null +++ b/buildroot/package/ngircd/ngircd.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# ngircd +# +################################################################################ + +NGIRCD_VERSION = 24 +NGIRCD_SOURCE = ngircd-$(NGIRCD_VERSION).tar.xz +NGIRCD_SITE = https://arthur.barton.de/pub/ngircd +NGIRCD_LICENSE = GPL-2.0+ +NGIRCD_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +NGIRCD_CONF_OPTS += --with-pam=$(STAGING_DIR)/usr +NGIRCD_DEPENDENCIES += linux-pam +else +NGIRCD_CONF_OPTS += --without-pam +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NGIRCD_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr +NGIRCD_DEPENDENCIES += openssl +else +NGIRCD_CONF_OPTS += --without-openssl +ifeq ($(BR2_PACKAGE_GNUTLS),y) +NGIRCD_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr +NGIRCD_DEPENDENCIES += gnutls +else +NGIRCD_CONF_OPTS += --without-gnutls +endif +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +NGIRCD_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr +NGIRCD_DEPENDENCIES += zlib +else +NGIRCD_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ngrep/0001-make-objs.patch b/buildroot/package/ngrep/0001-make-objs.patch new file mode 100644 index 0000000..8b55e3f --- /dev/null +++ b/buildroot/package/ngrep/0001-make-objs.patch @@ -0,0 +1,23 @@ +ngrep: don't include regex objects since we're using pcre + +Signed-off-by: Wade Berrier + +--- ngrep-1.45/Makefile.in.orig 2006-11-28 06:35:37.000000000 -0700 ++++ ngrep-1.45/Makefile.in 2011-06-29 14:05:27.000000000 -0600 +@@ -32,13 +32,13 @@ + + INSTALL = ./install-sh + +-REGEX_DIR=@REGEX_DIR@ +-REGEX_OBJS=@REGEX_OBJS@ ++REGEX_DIR= ++REGEX_OBJS= + + + all: $(TARGET) + +-$(TARGET): $(REGEX_OBJS) $(OBJS) ++$(TARGET): $(OBJS) + $(CC) $(CFLAGS) $(LDFLAGS) $(STRIPFLAG) -o $(TARGET) $(OBJS) $(REGEX_OBJS) $(LIBS) + + debug: $(REGEX_OBJS) $(OBJS) diff --git a/buildroot/package/ngrep/0002-pcre-header.patch b/buildroot/package/ngrep/0002-pcre-header.patch new file mode 100644 index 0000000..40b9234 --- /dev/null +++ b/buildroot/package/ngrep/0002-pcre-header.patch @@ -0,0 +1,16 @@ +ngrep: don't use versioned header + +Signed-off-by: Wade Berrier + +diff -ur ngrep-1.45/ngrep.c ngrep-1.45.mod/ngrep.c +--- ngrep-1.45/ngrep.c Tue Nov 28 15:38:43 2006 ++++ ngrep-1.45.mod/ngrep.c Sat May 19 10:21:27 2007 +@@ -92,7 +92,7 @@ + #endif + + #if USE_PCRE +-#include "pcre-5.0/pcre.h" ++#include "pcre.h" + #else + #include "regex-0.12/regex.h" + #endif diff --git a/buildroot/package/ngrep/0003-fix-static-link.patch b/buildroot/package/ngrep/0003-fix-static-link.patch new file mode 100644 index 0000000..98c2626 --- /dev/null +++ b/buildroot/package/ngrep/0003-fix-static-link.patch @@ -0,0 +1,25 @@ +ngrep: fix static link with pcre + +Libraries must be placed after object files. + +Signed-off-by: Romain Naour +--- + Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 2ae4506..761d7d9 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -11,7 +11,7 @@ CFLAGS=@CFLAGS@ -D@OS@ @DEFS@ @EXTRA_DEFINES@ + INCLUDES=-I@srcdir@ @PCAP_INCLUDE@ @EXTRA_INCLUDES@ + + LDFLAGS=@LDFLAGS@ @PCAP_LINK@ +-LIBS=-lpcap @EXTRA_LIBS@ ++LIBS=@LIBS@ @EXTRA_LIBS@ + + STRIPFLAG=@STRIPFLAG@ + +-- +1.8.1.4 + diff --git a/buildroot/package/ngrep/Config.in b/buildroot/package/ngrep/Config.in new file mode 100644 index 0000000..cd91225 --- /dev/null +++ b/buildroot/package/ngrep/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_NGREP + bool "ngrep" + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_PCRE + help + Network grep. + + http://ngrep.sourceforge.net/ diff --git a/buildroot/package/ngrep/ngrep.hash b/buildroot/package/ngrep/ngrep.hash new file mode 100644 index 0000000..e0a6a25 --- /dev/null +++ b/buildroot/package/ngrep/ngrep.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 aea6dd337da8781847c75b3b5b876e4de9c58520e0d77310679a979fc6402fa7 ngrep-1.45.tar.bz2 diff --git a/buildroot/package/ngrep/ngrep.mk b/buildroot/package/ngrep/ngrep.mk new file mode 100644 index 0000000..3f56937 --- /dev/null +++ b/buildroot/package/ngrep/ngrep.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# ngrep +# +################################################################################ + +NGREP_VERSION = 1.45 +NGREP_SOURCE = ngrep-$(NGREP_VERSION).tar.bz2 +NGREP_SITE = http://downloads.sourceforge.net/project/ngrep/ngrep/$(NGREP_VERSION) +NGREP_LICENSE = BSD-4-Clause-like +NGREP_LICENSE_FILES = LICENSE.txt +NGREP_INSTALL_STAGING = YES + +NGREP_LIBS = -lpcap -lpcre +ifeq ($(BR2_STATIC_LIBS),y) +NGREP_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` +endif +NGREP_CONF_ENV += LIBS+="$(NGREP_LIBS)" + +NGREP_CONF_OPTS = \ + --with-pcap-includes=$(STAGING_DIR)/usr/include/pcap \ + --enable-pcre \ + --with-pcre=$(STAGING_DIR)/usr \ + --disable-dropprivs \ + --disable-pcap-restart + +NGREP_DEPENDENCIES = libpcap pcre + +$(eval $(autotools-package)) diff --git a/buildroot/package/nilfs-utils/0001-nilfs-utils-use-_POSIX_MAX_INPUT.patch b/buildroot/package/nilfs-utils/0001-nilfs-utils-use-_POSIX_MAX_INPUT.patch new file mode 100644 index 0000000..f14079a --- /dev/null +++ b/buildroot/package/nilfs-utils/0001-nilfs-utils-use-_POSIX_MAX_INPUT.patch @@ -0,0 +1,32 @@ +From c6e5a79b130ac33093c36f972be49454f506be7e Mon Sep 17 00:00:00 2001 +From: Kurt Van Dijck +Date: Thu, 28 Dec 2017 20:06:38 +0100 +Subject: [PATCH] nilfs-utils: use _POSIX_MAX_INPUT + +musl does provide _POSIX_MAX_INPUT, but no MAX_INPUT out of the box. +This commit assigns _POSIX_MAX_INPUT to MAX_INPUT. + +Signed-off-by: Kurt Van Dijck +--- + bin/rmcp.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/bin/rmcp.c b/bin/rmcp.c +index 0140f56..6773912 100644 +--- a/bin/rmcp.c ++++ b/bin/rmcp.c +@@ -47,6 +47,11 @@ + #include + #endif /* HAVE_LIMITS_H */ + ++/* define MAX_INPUT for musl */ ++#ifndef MAX_INPUT ++#define MAX_INPUT _POSIX_MAX_INPUT ++#endif ++ + #include + #include "nilfs.h" + #include "parser.h" +-- +1.8.5.rc3 + diff --git a/buildroot/package/nilfs-utils/0002-nilfs_cleanerd-link-dynamically.patch b/buildroot/package/nilfs-utils/0002-nilfs_cleanerd-link-dynamically.patch new file mode 100644 index 0000000..ab057b2 --- /dev/null +++ b/buildroot/package/nilfs-utils/0002-nilfs_cleanerd-link-dynamically.patch @@ -0,0 +1,32 @@ +From 7888f8f24ec08cdfd51929cde4e177396d7504e7 Mon Sep 17 00:00:00 2001 +From: Kurt Van Dijck +Date: Thu, 28 Dec 2017 20:22:00 +0100 +Subject: [PATCH] nilfs_cleanerd: link dynamically + +When nilfs_cleanerd does not run due to shared object problems, +nilfs2 filesystems may run out of space soon. +This logic that justified linking nilfs_cleanerd statically +does IMO not apply to embedded systems built by buildroot. +This commit therefore drops the static linking. + +Signed-off-by: Kurt Van Dijck +--- + sbin/cleanerd/Makefile.am | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/sbin/cleanerd/Makefile.am b/sbin/cleanerd/Makefile.am +index 3a5335d..06f0847 100644 +--- a/sbin/cleanerd/Makefile.am ++++ b/sbin/cleanerd/Makefile.am +@@ -9,8 +9,6 @@ nilfs_cleanerd_SOURCES = cleanerd.c cldconfig.c \ + nilfs_cleanerd_CFLAGS = -Wall + nilfs_cleanerd_CPPFLAGS = -I$(top_srcdir)/include \ + -DSYSCONFDIR=\"$(sysconfdir)\" +-# Use -static option to make nilfs_cleanerd self-contained. +-nilfs_cleanerd_LDFLAGS = -static + + dist_sysconf_DATA = nilfs_cleanerd.conf + +-- +1.8.5.rc3 + diff --git a/buildroot/package/nilfs-utils/0003-mount.nilfs-drop-include-rpc-types.h.patch b/buildroot/package/nilfs-utils/0003-mount.nilfs-drop-include-rpc-types.h.patch new file mode 100644 index 0000000..9d54c40 --- /dev/null +++ b/buildroot/package/nilfs-utils/0003-mount.nilfs-drop-include-rpc-types.h.patch @@ -0,0 +1,32 @@ +From a924a05ea6fd8c5284983a09d1ea8993124b6b77 Mon Sep 17 00:00:00 2001 +From: Kurt Van Dijck +Date: Thu, 28 Dec 2017 20:26:09 +0100 +Subject: [PATCH] mount.nilfs: drop include rpc/types.h + +rpc/types.h does not exist on low-footprint musl toolchains, +and is only required for the boolean types, which musl provides +elsewhere. +This commit drops the include completely. + +Signed-off-by: Kurt Van Dijck +--- + sbin/mount/sundries.h | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/sbin/mount/sundries.h b/sbin/mount/sundries.h +index b3064a7..94d8ce4 100644 +--- a/sbin/mount/sundries.h ++++ b/sbin/mount/sundries.h +@@ -15,9 +15,6 @@ + #include + #include + #include +-#if !defined(bool_t) && !defined(__GLIBC__) +-#include +-#endif + + extern int mount_quiet; + +-- +1.8.5.rc3 + diff --git a/buildroot/package/nilfs-utils/0004-autoconf-use-PKG_CHECK_MODULES-for-libmount-and-libb.patch b/buildroot/package/nilfs-utils/0004-autoconf-use-PKG_CHECK_MODULES-for-libmount-and-libb.patch new file mode 100644 index 0000000..49cdd26 --- /dev/null +++ b/buildroot/package/nilfs-utils/0004-autoconf-use-PKG_CHECK_MODULES-for-libmount-and-libb.patch @@ -0,0 +1,141 @@ +From 65ce9b4817544734770e410c5c2779065152f991 Mon Sep 17 00:00:00 2001 +From: Kurt Van Dijck +Date: Thu, 4 Jan 2018 09:47:45 +0100 +Subject: [PATCH] autoconf: use PKG_CHECK_MODULES for libmount and libblkid + +The dependencies of libmount to libblkid and libblkid to libuuid +were not handled correctly, and only work for the shared object scenario. +This commit switches the autoconfiguration to use PKG_CHECK_MODULES +which handles the static vs. dynamic case. +This commit has been compile-tested using buildroot on different compilers, +including static & dynamic ones + +Signed-off-by: Kurt Van Dijck +--- + configure.ac | 13 +++---------- + sbin/mkfs/Makefile.am | 4 ++-- + sbin/mkfs/mkfs.c | 6 +++--- + sbin/mount/Makefile.am | 4 ++-- + sbin/mount/mount_libmount.c | 4 +--- + sbin/mount/umount_libmount.c | 4 +--- + 6 files changed, 12 insertions(+), 23 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 6fa8c41..3e31e55 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -104,13 +104,10 @@ AC_CHECK_HEADERS([ctype.h err.h fcntl.h grp.h libintl.h limits.h \ + + # Check for conditional libraries and headers. + if test "${with_libmount}" = "yes"; then +- AC_CHECK_LIB(mount, mnt_context_do_mount, [LIB_MOUNT="-lmount"], +- AC_MSG_ERROR([Mount library is enabled but libmount not found])) +- AC_CHECK_HEADERS([libmount/libmount.h]) ++ PKG_CHECK_MODULES([MOUNT], [mount]) + with_selinux=no + fi + AM_CONDITIONAL(CONFIG_LIBMOUNT, [test "$with_libmount" = "yes"]) +-AC_SUBST(LIB_MOUNT) + + if test "${with_selinux}" = "yes"; then + AC_CHECK_LIB(selinux, getprevcon, +@@ -125,15 +122,11 @@ fi + AC_SUBST([LIB_SELINUX]) + + if test "${with_blkid}" = "yes"; then +- AC_CHECK_LIB(blkid, blkid_new_probe_from_filename, ++ PKG_CHECK_MODULES([BLKID], [blkid], + [AC_DEFINE(HAVE_LIBBLKID, 1, + [Define to 1 if you have the 'blkid' library (-lblkid).]) +- LIB_BLKID="-lblkid" +- ], +- AC_MSG_ERROR([BLKID library not found])) +- AC_CHECK_HEADERS([blkid/blkid.h]) ++ ]) + fi +-AC_SUBST(LIB_BLKID) + + # Checks for typedefs, structures, and compiler characteristics. + AC_C_CONST +diff --git a/sbin/mkfs/Makefile.am b/sbin/mkfs/Makefile.am +index 28f5128..408c976 100644 +--- a/sbin/mkfs/Makefile.am ++++ b/sbin/mkfs/Makefile.am +@@ -1,8 +1,8 @@ + ## Makefile.am + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall $(BLKID_CFLAGS) + AM_CPPFLAGS = -I$(top_srcdir)/include +-LDADD = -luuid $(LIB_BLKID) $(top_builddir)/lib/libnilfsfeature.la \ ++LDADD = -luuid $(BLKID_LIBS) $(top_builddir)/lib/libnilfsfeature.la \ + $(top_builddir)/lib/libmountchk.la \ + $(top_builddir)/lib/libcrc32.la + +diff --git a/sbin/mkfs/mkfs.c b/sbin/mkfs/mkfs.c +index d7f161e..0c45d6a 100644 +--- a/sbin/mkfs/mkfs.c ++++ b/sbin/mkfs/mkfs.c +@@ -66,9 +66,9 @@ + + #include + +-#if HAVE_BLKID_BLKID_H +-#include +-#endif /* HAVE_BLKID_BLKID_H */ ++#if HAVE_LIBBLKID ++#include ++#endif /* HAVE_LIBBLKID */ + + #include "nilfs.h" + #include "util.h" +diff --git a/sbin/mount/Makefile.am b/sbin/mount/Makefile.am +index f5d3c27..9554aa5 100644 +--- a/sbin/mount/Makefile.am ++++ b/sbin/mount/Makefile.am +@@ -6,10 +6,10 @@ COMMONHEADERS = mount.nilfs2.h sundries.h xmalloc.h + LEGACYSOURCES = fstab.c mount_mntent.c mount_opts.c + LEGACYHEADERS = fstab.h mount_constants.h mount_mntent.h mount_opts.h + +-AM_CFLAGS = -Wall ++AM_CFLAGS = -Wall $(MOUNT_CFLAGS) + AM_CPPFLAGS = -I$(top_srcdir)/include + LDADD = $(top_builddir)/lib/librealpath.la \ +- $(top_builddir)/lib/libcleanerexec.la $(LIB_MOUNT) $(LIB_SELINUX) \ ++ $(top_builddir)/lib/libcleanerexec.la $(MOUNT_LIBS) $(LIB_SELINUX) \ + $(LIB_POSIX_TIMER) + + root_sbin_PROGRAMS = mount.nilfs2 umount.nilfs2 +diff --git a/sbin/mount/mount_libmount.c b/sbin/mount/mount_libmount.c +index ef40e68..a7fec00 100644 +--- a/sbin/mount/mount_libmount.c ++++ b/sbin/mount/mount_libmount.c +@@ -67,9 +67,7 @@ + #include + #endif /* HAVE_SYSLOG_H */ + +-#if HAVE_LIBMOUNT_LIBMOUNT_H +-#include +-#endif /* HAVE_LIBMOUNT_H */ ++#include + + #include + #include +diff --git a/sbin/mount/umount_libmount.c b/sbin/mount/umount_libmount.c +index ae5a337..b678f54 100644 +--- a/sbin/mount/umount_libmount.c ++++ b/sbin/mount/umount_libmount.c +@@ -59,9 +59,7 @@ + #include + #endif /* HAVE_SYSLOG_H */ + +-#if HAVE_LIBMOUNT_LIBMOUNT_H +-#include +-#endif /* HAVE_LIBMOUNT_H */ ++#include + + #include + #include +-- +1.8.5.rc3 + diff --git a/buildroot/package/nilfs-utils/Config.in b/buildroot/package/nilfs-utils/Config.in new file mode 100644 index 0000000..e49cab3 --- /dev/null +++ b/buildroot/package/nilfs-utils/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_NILFS_UTILS + bool "nilfs-utils" + depends on BR2_TOOLCHAIN_HAS_THREADS # sem_open() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # clock_nanosleep() + depends on BR2_USE_MMU # util-linux libmount, libblkid + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX + help + Tools for creating and managing NILFS2 filesystems. + + https://github.com/nilfs-dev/nilfs-utils + +comment "nilfs-utils needs a toolchain w/ threads, NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/nilfs-utils/nilfs-utils.hash b/buildroot/package/nilfs-utils/nilfs-utils.hash new file mode 100644 index 0000000..bf80367 --- /dev/null +++ b/buildroot/package/nilfs-utils/nilfs-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha512 8a73b807bbdb2dc56b100ab8fbffe8129c9db31a6cbceecf267bdeb726fc13dd6844ce8ef96690bd7786709cb884881a3cd6d3cf24290248c5abc457976e9487 nilfs-utils-v2.2.7.tar.gz +sha512 4fc92d3998910acb108f81b1aee70a55a572b661a2766d0e57a55e48e2b737eea41415356cbd62593f26aec5797ab9fbb40211d7782b5834b4855ff1ce6ad5f7 COPYING diff --git a/buildroot/package/nilfs-utils/nilfs-utils.mk b/buildroot/package/nilfs-utils/nilfs-utils.mk new file mode 100644 index 0000000..3fde94f --- /dev/null +++ b/buildroot/package/nilfs-utils/nilfs-utils.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# nilfs-utils +# +################################################################################ + +NILFS_UTILS_VERSION = v2.2.7 +NILFS_UTILS_SITE = $(call github,nilfs-dev,nilfs-utils,$(NILFS_UTILS_VERSION)) +NILFS_UTILS_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +NILFS_UTILS_LICENSE_FILES = COPYING + +# need libuuid, libblkid, libmount +NILFS_UTILS_DEPENDENCIES = host-pkgconf util-linux + +# we're fetching from github +NILFS_UTILS_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +NILFS_UTILS_CONF_OPTS += --with-selinux +NILFS_UTILS_DEPENDENCIES += libselinux +else +NILFS_UTILS_CONF_OPTS += --without-selinux +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ninja/ninja.hash b/buildroot/package/ninja/ninja.hash new file mode 100644 index 0000000..6334c04 --- /dev/null +++ b/buildroot/package/ninja/ninja.hash @@ -0,0 +1,2 @@ +# Locally generated +sha256 86b8700c3d0880c2b44c2ff67ce42774aaf8c28cbf57725cb881569288c1c6f4 ninja-v1.8.2.tar.gz diff --git a/buildroot/package/ninja/ninja.mk b/buildroot/package/ninja/ninja.mk new file mode 100644 index 0000000..259a87d --- /dev/null +++ b/buildroot/package/ninja/ninja.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# ninja +# +################################################################################ + +NINJA_VERSION = v1.8.2 +NINJA_SITE = $(call github,ninja-build,ninja,$(NINJA_VERSION)) +NINJA_LICENSE = Apache-2.0 +NINJA_LICENSE_FILES = COPYING + +HOST_NINJA_DEPENDENCIES = $(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python) + +define HOST_NINJA_BUILD_CMDS + (cd $(@D); ./configure.py --bootstrap) +endef + +define HOST_NINJA_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/ninja $(HOST_DIR)/bin/ninja +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/nload/Config.in b/buildroot/package/nload/Config.in new file mode 100644 index 0000000..c938d8e --- /dev/null +++ b/buildroot/package/nload/Config.in @@ -0,0 +1,15 @@ +comment "nload needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_NLOAD + bool "nload" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_NCURSES + help + nload is a console application which monitors network traffic + and bandwidth usage in real time. It visualizes the in- and + outgoing traffic using two graphs and provides additional info + like total amount of transfered data and min/max network + usage. + + http://www.roland-riegel.de/nload/ diff --git a/buildroot/package/nload/nload.hash b/buildroot/package/nload/nload.hash new file mode 100644 index 0000000..4a8a09d --- /dev/null +++ b/buildroot/package/nload/nload.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/nload/files/nload/0.7.4/ +md5 3c733c528f244ca5a4f76bf185729c39 nload-0.7.4.tar.gz +sha1 bb0a168c93c588ad4fd5e3a653b3620b79ada1e8 nload-0.7.4.tar.gz diff --git a/buildroot/package/nload/nload.mk b/buildroot/package/nload/nload.mk new file mode 100644 index 0000000..80d42a1 --- /dev/null +++ b/buildroot/package/nload/nload.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# nload +# +################################################################################ + +NLOAD_VERSION = 0.7.4 +NLOAD_SITE = http://www.roland-riegel.de/nload +NLOAD_DEPENDENCIES = ncurses +NLOAD_LICENSE = GPL-2.0+ +NLOAD_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/nmap/0001-libdnet-wrapper-configure.patch b/buildroot/package/nmap/0001-libdnet-wrapper-configure.patch new file mode 100644 index 0000000..a85242a --- /dev/null +++ b/buildroot/package/nmap/0001-libdnet-wrapper-configure.patch @@ -0,0 +1,11 @@ +libdnet: always build a static library + +Signed-off-by: "Yann E. MORIN" + +diff --git a/libdnet-stripped/configure.gnu b/libdnet-stripped/configure.gnu +--- /dev/null ++++ b/libdnet-stripped/configure.gnu +@@ -0,0 +1,3 @@ ++#!/bin/sh ++ ++exec "${0%.gnu}" "${@}" --enable-static --disable-shared diff --git a/buildroot/package/nmap/0002-configure.ac-fix-AC_CHECK_HEADER-call-to-test-for-li.patch b/buildroot/package/nmap/0002-configure.ac-fix-AC_CHECK_HEADER-call-to-test-for-li.patch new file mode 100644 index 0000000..ed5cae2 --- /dev/null +++ b/buildroot/package/nmap/0002-configure.ac-fix-AC_CHECK_HEADER-call-to-test-for-li.patch @@ -0,0 +1,30 @@ +From ff629766dbd3b5e179330ba4f07fd7e3d8384ec0 Mon Sep 17 00:00:00 2001 +From: Max Filippov +Date: Wed, 1 Nov 2017 15:30:40 +0100 +Subject: [PATCH] configure.ac: fix AC_CHECK_HEADER call to test for libssh2 + +The -lm argument is passed as an argument to AC_CHECK_HEADER(), which +doesn't make sense. The intention was to pass it as the fifth +argument of AC_CHECK_LIB(). + +Signed-off-by: Max Filippov +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 3d00e164e..67db42e08 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -674,7 +674,7 @@ AC_HELP_STRING([--without-libssh2], [Compile without libssh2]), + AC_CHECK_LIB(ssh2, libssh2_version, + [have_libssh2=yes + LIBSSH2_INC=$with_libssh2/include +- LIBSSH2_LIB=$with_libssh2/lib])],,[-lm]) ++ LIBSSH2_LIB=$with_libssh2/lib],,[-lm])]) + + LDFLAGS=$_ldflags + CPPFLAGS=$_cppflags +-- +2.13.6 + diff --git a/buildroot/package/nmap/Config.in b/buildroot/package/nmap/Config.in new file mode 100644 index 0000000..79f587a --- /dev/null +++ b/buildroot/package/nmap/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_NMAP + bool "nmap" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_PCRE + help + Nmap ("Network Mapper") is a free and open source (license) + utility for network discovery and security auditing. + + http://nmap.org + +comment "nmap needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/buildroot/package/nmap/nmap.hash b/buildroot/package/nmap/nmap.hash new file mode 100644 index 0000000..740ec7a --- /dev/null +++ b/buildroot/package/nmap/nmap.hash @@ -0,0 +1,2 @@ +# From https://nmap.org/dist/sigs/nmap-7.60.tar.bz2.digest.txt +sha256 a8796ecc4fa6c38aad6139d9515dc8113023a82e9d787e5a5fb5fa1b05516f21 nmap-7.60.tar.bz2 diff --git a/buildroot/package/nmap/nmap.mk b/buildroot/package/nmap/nmap.mk new file mode 100644 index 0000000..ceb08ec --- /dev/null +++ b/buildroot/package/nmap/nmap.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# nmap +# +################################################################################ + +NMAP_VERSION = 7.60 +NMAP_SITE = https://nmap.org/dist +NMAP_SOURCE = nmap-$(NMAP_VERSION).tar.bz2 +NMAP_DEPENDENCIES = libpcap pcre host-autoconf +NMAP_CONF_OPTS = --without-liblua --without-zenmap \ + --with-libdnet=included --with-liblinear=included \ + --with-libpcre="$(STAGING_DIR)/usr" --without-ncat +NMAP_LICENSE = GPL-2.0 +NMAP_LICENSE_FILES = COPYING + +# nmap doesn't autoreconf properly, so we just re-generate the +# top-level configure script, since we are patching configure.ac. +define NMAP_DO_AUTOCONF + (cd $(@D); $(HOST_DIR)/bin/autoconf) +endef + +NMAP_PRE_CONFIGURE_HOOKS += NMAP_DO_AUTOCONF + +# needed by libpcap +NMAP_LIBS_FOR_STATIC_LINK += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` + +ifeq ($(BR2_STATIC_LIBS),y) +NMAP_CONF_ENV += LIBS="$(NMAP_LIBS_FOR_STATIC_LINK)" +endif + +# for 0001-libdnet-wrapper-configure.patch +define NMAP_WRAPPER_EXEC + chmod +x $(@D)/libdnet-stripped/configure.gnu +endef +NMAP_POST_PATCH_HOOKS += NMAP_WRAPPER_EXEC + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +NMAP_CONF_OPTS += --with-libssh2="$(STAGING_DIR)/usr" +NMAP_DEPENDENCIES += libssh2 +NMAP_LIBS_FOR_STATIC_LINK += `$(PKG_CONFIG_HOST_BINARY) --libs libssh2` +else +NMAP_CONF_OPTS += --without-libssh2 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NMAP_CONF_OPTS += --with-openssl="$(STAGING_DIR)/usr" +NMAP_DEPENDENCIES += host-pkgconf openssl +NMAP_LIBS_FOR_STATIC_LINK += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +else +NMAP_CONF_OPTS += --without-openssl +endif + +# ndiff only works with python2.x +ifeq ($(BR2_PACKAGE_PYTHON),y) +NMAP_DEPENDENCIES += python +else +NMAP_CONF_OPTS += --without-ndiff +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/nmon/Config.in b/buildroot/package/nmon/Config.in new file mode 100644 index 0000000..574ced3 --- /dev/null +++ b/buildroot/package/nmon/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_NMON + bool "nmon" + depends on BR2_TOOLCHAIN_USES_GLIBC # fstab.h + select BR2_PACKAGE_NCURSES + help + Nmon is short for Nigel's performance Monitor for Linux + + http://nmon.sourceforge.net/pmwiki.php + +comment "nmon needs a glibc toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/nmon/nmon.hash b/buildroot/package/nmon/nmon.hash new file mode 100644 index 0000000..432f71d --- /dev/null +++ b/buildroot/package/nmon/nmon.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/nmon/files/ +md5 246ccfc74d5af55d992601fc4d3d4a72 lmon16g.c +sha1 926217a98f78dd398d4d5690d7b10b8b2b620168 lmon16g.c +# Locally computed +sha256 da82dd693b503b062854dfe7dbb5d36b347872ab44a4aa05b97e9d577747f688 lmon16g.c diff --git a/buildroot/package/nmon/nmon.mk b/buildroot/package/nmon/nmon.mk new file mode 100644 index 0000000..f561d6d --- /dev/null +++ b/buildroot/package/nmon/nmon.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# nmon +# +################################################################################ + +NMON_VERSION = 16g +NMON_SITE = https://sourceforge.net/projects/nmon/files +NMON_SOURCE = lmon$(NMON_VERSION).c +NMON_LICENSE = GPL-3.0+ +NMON_LICENSE_FILES = $(NMON_SOURCE) +NMON_DEPENDENCIES = ncurses +NMON_CFLAGS = $(TARGET_CFLAGS) -D JFS -D GETUSER -D LARGEMEM -D DEBIAN + +define NMON_EXTRACT_CMDS + cp $(DL_DIR)/$(NMON_SOURCE) $(@D) +endef + +define NMON_BUILD_CMDS + $(TARGET_CC) $(NMON_CFLAGS) $(TARGET_LDFLAGS) -o $(@D)/nmon \ + $(@D)/$(NMON_SOURCE) -lncurses -lm +endef + +define NMON_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/nmon $(TARGET_DIR)/usr/bin/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/nodejs/0001-check-if-uclibc-has-backtrace-support.patch b/buildroot/package/nodejs/0001-check-if-uclibc-has-backtrace-support.patch new file mode 100644 index 0000000..079bbb4 --- /dev/null +++ b/buildroot/package/nodejs/0001-check-if-uclibc-has-backtrace-support.patch @@ -0,0 +1,26 @@ +From 7c69553d7275bbcaa88fada8ccd0d2d9f787e1ad Mon Sep 17 00:00:00 2001 +From: Martin Bark +Date: Sat, 4 Mar 2017 20:41:40 +0000 +Subject: [PATCH] check if uclibc has backtrace support + +Signed-off-by: Martin Bark +--- + deps/v8/src/base/debug/stack_trace_posix.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/deps/v8/src/base/debug/stack_trace_posix.cc b/deps/v8/src/base/debug/stack_trace_posix.cc +index 87c0a73..d2c182a 100644 +--- a/deps/v8/src/base/debug/stack_trace_posix.cc ++++ b/deps/v8/src/base/debug/stack_trace_posix.cc +@@ -25,7 +25,7 @@ + #include + #include + +-#if V8_LIBC_GLIBC || V8_LIBC_BSD || V8_LIBC_UCLIBC || V8_OS_SOLARIS ++#if V8_LIBC_GLIBC || V8_LIBC_BSD || ( V8_LIBC_UCLIBC && __UCLIBC_HAS_BACKTRACE__ ) || V8_OS_SOLARIS + #define HAVE_EXECINFO_H 1 + #endif + +-- +2.7.4 + diff --git a/buildroot/package/nodejs/Config.in b/buildroot/package/nodejs/Config.in new file mode 100644 index 0000000..d2846f8 --- /dev/null +++ b/buildroot/package/nodejs/Config.in @@ -0,0 +1,81 @@ +config BR2_PACKAGE_NODEJS_ARCH_SUPPORTS + bool + # On ARM, at least ARMv6+ with VFPv2+ is needed + default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 && BR2_ARM_CPU_HAS_VFPV2 + default y if BR2_mipsel && !BR2_MIPS_SOFT_FLOAT + default y if BR2_aarch64 || BR2_i386 || BR2_x86_64 + # libuv + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +comment "nodejs needs a toolchain w/ C++, dynamic library, NPTL, gcc >= 4.8, wchar" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_NODEJS_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_USE_WCHAR + +config BR2_PACKAGE_NODEJS + bool "nodejs" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # libuv + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_NODEJS_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_USE_WCHAR + # uses fork() + depends on BR2_USE_MMU + # uses dlopen(). On ARMv5, we could technically support static + # linking, but that's too much of a corner case to support it. + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_C_ARES + select BR2_PACKAGE_LIBHTTPPARSER + select BR2_PACKAGE_LIBUV + select BR2_PACKAGE_ZLIB + help + Event-driven I/O server-side JavaScript environment based on + V8. + + http://nodejs.org/ + +if BR2_PACKAGE_NODEJS + +config BR2_PACKAGE_NODEJS_NPM + bool "NPM for the target" + select BR2_PACKAGE_OPENSSL + help + NPM is the package manager for the Node JavaScript platform. + Note that enabling NPM on the target also selects OpenSSL + for the target. + + http://www.npmjs.org + + Note that NPM is always built for the buildroot host. + +config BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL + string "Additional modules" + help + List of space-separated nodejs modules to install via npm. + See https://npmjs.org/ to find modules and 'npm help install' + for available installation methods. For repeatable builds, + download and save tgz files or clone git repos for the + components you care about. + + Example: + serialport uglify-js@1.3.4 /my/module/mymodule.tgz \ + git://github.com/someuser/somemodule.git#v1.2 + + This would install the serialport module (at the newest + version), the uglify-js module at 1.3.4, a module from a + filesystem path, and a module from a git repository. + +config BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL_DEPS + string "Additional module dependencies" + help + List of space-separated buildroot recipes which must be + built before your npms can be installed. For example, if in + 'Additional modules' you specified 'node-curl' (see: + https://github.com/jiangmiao/node-curl), you could then + specify 'libcurl' here, to ensure that buildroot builds the + libcurl package, and does so before building your node + modules. + +endif diff --git a/buildroot/package/nodejs/nodejs.hash b/buildroot/package/nodejs/nodejs.hash new file mode 100644 index 0000000..be4c3de --- /dev/null +++ b/buildroot/package/nodejs/nodejs.hash @@ -0,0 +1,5 @@ +# From http://nodejs.org/dist/v8.11.3/SHASUMS256.txt +sha256 577c751fdca91c46c60ffd8352e5b465881373bfdde212c17c3a3c1bd2616ee0 node-v8.11.3.tar.xz + +# Hash for license file +sha256 b87be6c1479ed977481115869c2dd8b6d59e5ea55aa09939d6c898242121b2f5 LICENSE diff --git a/buildroot/package/nodejs/nodejs.mk b/buildroot/package/nodejs/nodejs.mk new file mode 100644 index 0000000..61cd03b --- /dev/null +++ b/buildroot/package/nodejs/nodejs.mk @@ -0,0 +1,184 @@ +################################################################################ +# +# nodejs +# +################################################################################ + +NODEJS_VERSION = 8.11.3 +NODEJS_SOURCE = node-v$(NODEJS_VERSION).tar.xz +NODEJS_SITE = http://nodejs.org/dist/v$(NODEJS_VERSION) +NODEJS_DEPENDENCIES = host-python host-nodejs c-ares \ + libhttpparser libuv zlib \ + $(call qstrip,$(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL_DEPS)) +HOST_NODEJS_DEPENDENCIES = host-python host-zlib +NODEJS_LICENSE = MIT (core code); MIT, Apache and BSD family licenses (Bundled components) +NODEJS_LICENSE_FILES = LICENSE + +NODEJS_CONF_OPTS = \ + --without-snapshot \ + --shared-zlib \ + --shared-cares \ + --shared-http-parser \ + --shared-libuv \ + --without-dtrace \ + --without-etw \ + --dest-os=linux + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NODEJS_DEPENDENCIES += openssl +NODEJS_CONF_OPTS += --shared-openssl +else +NODEJS_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +NODEJS_DEPENDENCIES += icu +NODEJS_CONF_OPTS += --with-intl=system-icu +else +NODEJS_CONF_OPTS += --with-intl=none +endif + +ifneq ($(BR2_PACKAGE_NODEJS_NPM),y) +NODEJS_CONF_OPTS += --without-npm +endif + +# nodejs build system is based on python, but only support python-2.6 or +# python-2.7. So, we have to enforce PYTHON interpreter to be python2. +define HOST_NODEJS_CONFIGURE_CMDS + # The build system directly calls python. Work around this by forcing python2 + # into PATH. See https://github.com/nodejs/node/issues/2735 + mkdir -p $(@D)/bin + ln -sf $(HOST_DIR)/bin/python2 $(@D)/bin/python + + # Build with the static, built-in OpenSSL which is supplied as part of + # the nodejs source distribution. This is needed on the host because + # NPM is non-functional without it, and host-openssl isn't part of + # buildroot. + (cd $(@D); \ + $(HOST_CONFIGURE_OPTS) \ + PATH=$(@D)/bin:$(BR_PATH) \ + PYTHON=$(HOST_DIR)/bin/python2 \ + $(HOST_DIR)/bin/python2 ./configure \ + --prefix=$(HOST_DIR) \ + --without-snapshot \ + --without-dtrace \ + --without-etw \ + --shared-zlib \ + --with-intl=none \ + ) +endef + +define HOST_NODEJS_BUILD_CMDS + $(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python2 \ + $(MAKE) -C $(@D) \ + $(HOST_CONFIGURE_OPTS) \ + NO_LOAD=cctest.target.mk \ + PATH=$(@D)/bin:$(BR_PATH) +endef + +define HOST_NODEJS_INSTALL_CMDS + $(HOST_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python2 \ + $(MAKE) -C $(@D) install \ + $(HOST_CONFIGURE_OPTS) \ + NO_LOAD=cctest.target.mk \ + PATH=$(@D)/bin:$(BR_PATH) +endef + +ifeq ($(BR2_i386),y) +NODEJS_CPU = ia32 +else ifeq ($(BR2_x86_64),y) +NODEJS_CPU = x64 +else ifeq ($(BR2_mips),y) +NODEJS_CPU = mips +else ifeq ($(BR2_mipsel),y) +NODEJS_CPU = mipsel +else ifeq ($(BR2_arm),y) +NODEJS_CPU = arm +else ifeq ($(BR2_aarch64),y) +NODEJS_CPU = arm64 +# V8 needs to know what floating point ABI the target is using. +NODEJS_ARM_FP = $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) +endif + +# MIPS architecture specific options +ifeq ($(BR2_mips)$(BR2_mipsel),y) +ifeq ($(BR2_MIPS_CPU_MIPS32R6),y) +NODEJS_MIPS_ARCH_VARIANT = r6 +NODEJS_MIPS_FPU_MODE = fp64 +else ifeq ($(BR2_MIPS_CPU_MIPS32R2),y) +NODEJS_MIPS_ARCH_VARIANT = r2 +else ifeq ($(BR2_MIPS_CPU_MIPS32),y) +NODEJS_MIPS_ARCH_VARIANT = r1 +endif +endif + +define NODEJS_CONFIGURE_CMDS + mkdir -p $(@D)/bin + ln -sf $(HOST_DIR)/bin/python2 $(@D)/bin/python + + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + PATH=$(@D)/bin:$(BR_PATH) \ + LD="$(TARGET_CXX)" \ + PYTHON=$(HOST_DIR)/bin/python2 \ + $(HOST_DIR)/bin/python2 ./configure \ + --prefix=/usr \ + --dest-cpu=$(NODEJS_CPU) \ + $(if $(NODEJS_ARM_FP),--with-arm-float-abi=$(NODEJS_ARM_FP)) \ + $(if $(NODEJS_MIPS_ARCH_VARIANT),--with-mips-arch-variant=$(NODEJS_MIPS_ARCH_VARIANT)) \ + $(if $(NODEJS_MIPS_FPU_MODE),--with-mips-fpu-mode=$(NODEJS_MIPS_FPU_MODE)) \ + $(NODEJS_CONF_OPTS) \ + ) +endef + +define NODEJS_BUILD_CMDS + $(TARGET_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python2 \ + $(MAKE) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + NO_LOAD=cctest.target.mk \ + PATH=$(@D)/bin:$(BR_PATH) \ + LD="$(TARGET_CXX)" +endef + +# +# Build the list of modules to install. +# +NODEJS_MODULES_LIST= $(call qstrip,\ + $(BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL)) + +# Define NPM for other packages to use +NPM = $(TARGET_CONFIGURE_OPTS) \ + LD="$(TARGET_CXX)" \ + npm_config_arch=$(NODEJS_CPU) \ + npm_config_target_arch=$(NODEJS_CPU) \ + npm_config_build_from_source=true \ + npm_config_nodedir=$(BUILD_DIR)/nodejs-$(NODEJS_VERSION) \ + npm_config_prefix=$(TARGET_DIR)/usr \ + $(HOST_DIR)/bin/npm + +# +# We can only call NPM if there's something to install. +# +ifneq ($(NODEJS_MODULES_LIST),) +define NODEJS_INSTALL_MODULES + # If you're having trouble with module installation, adding -d to the + # npm install call below and setting npm_config_rollback=false can both + # help in diagnosing the problem. + $(NPM) install -g $(NODEJS_MODULES_LIST) +endef +endif + +define NODEJS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) PYTHON=$(HOST_DIR)/bin/python2 \ + $(MAKE) -C $(@D) install \ + DESTDIR=$(TARGET_DIR) \ + $(TARGET_CONFIGURE_OPTS) \ + NO_LOAD=cctest.target.mk \ + PATH=$(@D)/bin:$(BR_PATH) \ + LD="$(TARGET_CXX)" + $(NODEJS_INSTALL_MODULES) +endef + +# node.js configure is a Python script and does not use autotools +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/nodm/Config.in b/buildroot/package/nodm/Config.in new file mode 100644 index 0000000..38171e8 --- /dev/null +++ b/buildroot/package/nodm/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_NODM + bool "nodm" + depends on BR2_PACKAGE_XORG7 + depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam + depends on !BR2_STATIC_LIBS # linux-pam + depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam + depends on BR2_USE_MMU # linux-pam + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_LINUX_PAM + help + nodm is a minimal display manager that simply logs in + as a given user and starts an X session, without asking + for username or password. + + For those cases where automatic login is needed (and + does not imply a security issue), nodm is simple to setup, + lightweight, and it should do exactly the right thing. + + https://github.com/spanezz/nodm/ + +comment "nodm needs a glibc or uClibc toolchain w/ wchar, locale, dynamic library" + depends on BR2_PACKAGE_XORG7 + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/nodm/S90nodm b/buildroot/package/nodm/S90nodm new file mode 100755 index 0000000..a966e83 --- /dev/null +++ b/buildroot/package/nodm/S90nodm @@ -0,0 +1,49 @@ +#!/bin/sh +# +# Starts nodm +# + +NODM_FIRST_VT=7 +NODM_XSESSION=/etc/X11/Xsession +NODM_OPTIONS= +NODM_X_OPTIONS="-nolisten tcp" +NODM_USER=root +NODM_MIN_SESSION_TIME=60 +NODM_X_TIMEOUT=300 + +[ -r /etc/default/nodm ] && . /etc/default/nodm + +export NODM_XSESSION NODM_X_OPTIONS NODM_USER NODM_MIN_SESSION_TIME NODM_FIRST_VT NODM_X_TIMEOUT + +start() { + printf "Starting nodm: " + start-stop-daemon -S -q -p /var/run/nodm.pid --exec /usr/sbin/nodm -b -m -S -- ${NODM_OPTIONS} + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping nodm: " + start-stop-daemon -K -q -p /var/run/nodm.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + sleep 1 + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/nodm/nodm.hash b/buildroot/package/nodm/nodm.hash new file mode 100644 index 0000000..2a70c68 --- /dev/null +++ b/buildroot/package/nodm/nodm.hash @@ -0,0 +1,2 @@ +# locally calculated +sha256 ef11667ae82846801a9633df36c20f632cc03319bb1da35f062ac0f950771273 nodm-0.13.tar.gz diff --git a/buildroot/package/nodm/nodm.mk b/buildroot/package/nodm/nodm.mk new file mode 100644 index 0000000..a5afd53 --- /dev/null +++ b/buildroot/package/nodm/nodm.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# nodm +# +################################################################################ + +NODM_VERSION = 0.13 +NODM_SITE = $(call github,spanezz,nodm,$(NODM_VERSION)) +NODM_LICENSE = GPL-2.0+ +NODM_LICENSE_FILES = COPYING +NODM_AUTORECONF = YES + +NODM_DEPENDENCIES = xlib_libX11 linux-pam + +# help2man doesn't work when cross compiling +define NODM_DISABLE_HELP2MAN + $(SED) 's/help2man/true/' $(@D)/Makefile.am +endef + +NODM_POST_PATCH_HOOKS += NODM_DISABLE_HELP2MAN + +define NODM_INSTALL_PAM + $(INSTALL) -D -m 0644 package/nodm/nodm.pam \ + $(TARGET_DIR)/etc/pam.d/nodm +endef + +NODM_POST_INSTALL_TARGET_HOOKS += NODM_INSTALL_PAM + +define NODM_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/nodm/S90nodm \ + $(TARGET_DIR)/etc/init.d/S90nodm +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/nodm/nodm.pam b/buildroot/package/nodm/nodm.pam new file mode 100644 index 0000000..f2cf432 --- /dev/null +++ b/buildroot/package/nodm/nodm.pam @@ -0,0 +1,14 @@ +# Log service and allow promiscuously +# +auth required pam_warn.so +auth required pam_unix.so + +account required pam_warn.so +account required pam_permit.so + +password required pam_warn.so +password required pam_permit.so + +session required pam_warn.so +session required pam_permit.so +session required pam_env.so diff --git a/buildroot/package/noip/Config.in b/buildroot/package/noip/Config.in new file mode 100644 index 0000000..aea5deb --- /dev/null +++ b/buildroot/package/noip/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_NOIP + bool "noip" + depends on BR2_USE_MMU # fork() + help + Dynamic DNS update client for no-ip.com + + http://www.no-ip.com/downloads.php diff --git a/buildroot/package/noip/noip.hash b/buildroot/package/noip/noip.hash new file mode 100644 index 0000000..166438d --- /dev/null +++ b/buildroot/package/noip/noip.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 82b9bafab96a0c53b21aaef688bf70b3572e26217b5e2072bdb09da3c4a6f593 noip-duc-linux.tar.gz diff --git a/buildroot/package/noip/noip.mk b/buildroot/package/noip/noip.mk new file mode 100644 index 0000000..b7fcc84 --- /dev/null +++ b/buildroot/package/noip/noip.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# noip +# +################################################################################ + +NOIP_VERSION = 2.1.9 +NOIP_SITE = http://www.no-ip.com/client/linux +NOIP_SOURCE = noip-duc-linux.tar.gz +NOIP_LICENSE = GPL-2.0+ +NOIP_LICENSE_FILES = COPYING + +define NOIP_BUILD_CMDS + $(SED) "/^#define CONFIG_FILENAME/ s/PREFIX//" $(@D)/noip2.c + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" PREFIX=/usr CONFDIR=/etc +endef + +define NOIP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/noip2 $(TARGET_DIR)/usr/sbin/noip2 +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/norm/0001-fix-bigendian-build.patch b/buildroot/package/norm/0001-fix-bigendian-build.patch new file mode 100644 index 0000000..cf999c2 --- /dev/null +++ b/buildroot/package/norm/0001-fix-bigendian-build.patch @@ -0,0 +1,17 @@ +Fix big-endian build breakage in protolib. +Patch status: submitted to author via email. + +Signed-off-by: Gustavo Zacarias + +diff -Nura norm-1.5r6.orig/protolib/include/protoSpace.h norm-1.5r6/protolib/include/protoSpace.h +--- norm-1.5r6.orig/protolib/include/protoSpace.h 2016-03-08 19:48:21.326357963 -0300 ++++ norm-1.5r6/protolib/include/protoSpace.h 2016-03-08 19:48:46.647234075 -0300 +@@ -89,7 +89,7 @@ + } + #else + ProtoTree::Endian GetEndian() const +- return ProtoTree::ENDIAN_BIG; ++ {return ProtoTree::ENDIAN_BIG;} + void SetNode(Node* theNode) + {memcpy(key+sizeof(double), &theNode, sizeof(Node*));} + Node* GetNode() const diff --git a/buildroot/package/norm/0002-protolib-drop-linux-version-check.patch b/buildroot/package/norm/0002-protolib-drop-linux-version-check.patch new file mode 100644 index 0000000..7852a30 --- /dev/null +++ b/buildroot/package/norm/0002-protolib-drop-linux-version-check.patch @@ -0,0 +1,38 @@ +The char * to unsigned char * change happened for the libnetfilter_queue +1.0.0 release, not the linux headers. +So drop the linux headers version check since it causes more harm than +good by trying the old API when the toolchain uses old linux headers +with a new-enough libnetfilter_queue. + +Signed-off-by: Gustavo Zacarias + +diff -Nura norm-1.5r6.orig/protolib/src/linux/linuxDetour.cpp norm-1.5r6/protolib/src/linux/linuxDetour.cpp +--- norm-1.5r6.orig/protolib/src/linux/linuxDetour.cpp 2016-03-31 10:17:20.674745597 -0300 ++++ norm-1.5r6/protolib/src/linux/linuxDetour.cpp 2016-03-31 10:36:58.923084395 -0300 +@@ -16,8 +16,6 @@ + #include // for ETH_P_IP + #include // for ARPHRD_ETHER + +-#include // for LINUX_VERSION_CODE +- + /** NOTES: + * + * 1) This newer implementation of LinuxDetour uses netfilter_queue +@@ -591,17 +589,7 @@ + + // Finally record packet length and cache pointer to IP packet data + +- // A change to the nfq_get_payload() prototype seemed to kick in around Linux header files +- // version 3.6? (This will probably need to be fine tuned for the right version threshold.) +- +-#define LINUX_VERSION_MAJOR (LINUX_VERSION_CODE/65536) +-#define LINUX_VERSION_MINOR ((LINUX_VERSION_CODE - (LINUX_VERSION_MAJOR*65536)) / 256) +- +-#if ((LINUX_VERSION_MAJOR > 3) || ((LINUX_VERSION_MAJOR == 3) && (LINUX_VERSION_MINOR > 5))) + linuxDetour->nfq_pkt_len = nfq_get_payload(nfqData, (unsigned char**)(&linuxDetour->nfq_pkt_data)); +-#else +- linuxDetour->nfq_pkt_len = nfq_get_payload(nfqData, &linuxDetour->nfq_pkt_data); +-#endif // + return 0; + } // end LinuxDetour::NfqCallback() + diff --git a/buildroot/package/norm/0003-fix-const-qualifier-gcc7.patch b/buildroot/package/norm/0003-fix-const-qualifier-gcc7.patch new file mode 100644 index 0000000..57e01f9 --- /dev/null +++ b/buildroot/package/norm/0003-fix-const-qualifier-gcc7.patch @@ -0,0 +1,46 @@ +protolib: remove const qualifiers in ProtoSortedTreeTemplate + +The methods PeekPrevItem() and PeekNextItem() in +ProtoSortedTreeTemplate were using a const qualifier, but not the +corresponding methods in ProtoSortedTree, causing a build failure with +gcc 7.x: + +norm-1.5r6/protolib/include/protoTree.h: In member function 'ITEM_TYPE* ProtoSortedTreeTemplate::Iterator::PeekPrevItem() const': +norm-1.5r6/protolib/include/protoTree.h:652:93: error: no matching function for call to 'ProtoSortedTreeTemplate::Iterator::PeekPrevItem() const' + {return static_cast(ProtoSortedTree::Iterator::PeekPrevItem());} + ^ +norm-1.5r6/protolib/include/protoTree.h:565:23: note: candidate: ProtoSortedTree::Item* ProtoSortedTree::Iterator::PeekPrevItem() + Item* PeekPrevItem() + ^~~~~~~~~~~~ + +Since the same methods in ProtoTreeTemplate don't have the const +qualifier, we take the simple solution of dropping such qualifiers +from ProtoSortedTreeTemplate as well, which fixes the build of norm +with gcc 7.x. + +Many thanks to Romain Naour for pointing out +the solution. + +Signed-off-by: Thomas Petazzoni +[Patch has been submitted upstream and accepted, but mailing list +archive not updated.] + +Index: b/protolib/include/protoTree.h +=================================================================== +--- a/protolib/include/protoTree.h ++++ b/protolib/include/protoTree.h +@@ -648,12 +648,12 @@ + + ITEM_TYPE* GetPrevItem() + {return static_cast(ProtoSortedTree::Iterator::GetPrevItem());} +- ITEM_TYPE* PeekPrevItem() const ++ ITEM_TYPE* PeekPrevItem() + {return static_cast(ProtoSortedTree::Iterator::PeekPrevItem());} + + ITEM_TYPE* GetNextItem() + {return static_cast(ProtoSortedTree::Iterator::GetNextItem());} +- ITEM_TYPE* PeekNextItem() const ++ ITEM_TYPE* PeekNextItem() + {return static_cast(ProtoSortedTree::Iterator::PeekNextItem());} + + }; // end class ProtoSortedTreeTemplate::Iterator diff --git a/buildroot/package/norm/Config.in b/buildroot/package/norm/Config.in new file mode 100644 index 0000000..4944633 --- /dev/null +++ b/buildroot/package/norm/Config.in @@ -0,0 +1,15 @@ +comment "norm needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_NORM + bool "norm" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + The NORM protocol is designed to provide end-to-end reliable + transport of bulk data objects or streams over generic IP + multicast routing and forwarding services. + + http://www.nrl.navy.mil/itd/ncs/products/norm diff --git a/buildroot/package/norm/norm.hash b/buildroot/package/norm/norm.hash new file mode 100644 index 0000000..4693eed --- /dev/null +++ b/buildroot/package/norm/norm.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 20ea2e8dd5d5e1ff1ff91dc7dab6db53a77d7b7183d8cf2425c215fd294f22a7 src-norm-1.5r6.tgz diff --git a/buildroot/package/norm/norm.mk b/buildroot/package/norm/norm.mk new file mode 100644 index 0000000..8af76f8 --- /dev/null +++ b/buildroot/package/norm/norm.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# norm +# +################################################################################ + +NORM_VERSION = 1.5r6 +NORM_SITE = http://downloads.pf.itd.nrl.navy.mil/norm/archive +NORM_SOURCE = src-norm-$(NORM_VERSION).tgz +NORM_INSTALL_STAGING = YES +NORM_LICENSE = NRL License +NORM_LICENSE_FILES = LICENSE.TXT + +ifeq ($(BR2_PACKAGE_LIBNETFILTER_QUEUE),y) +NORM_DEPENDENCIES += libnetfilter_queue +endif + +# install target doesn't install headers unfortunately... +define NORM_INSTALL_HEADERS + cp -f $(@D)/include/norm* $(STAGING_DIR)/usr/include +endef +NORM_POST_INSTALL_STAGING_HOOKS += NORM_INSTALL_HEADERS + +$(eval $(waf-package)) diff --git a/buildroot/package/nss-mdns/Config.in b/buildroot/package/nss-mdns/Config.in new file mode 100644 index 0000000..ad69e2a --- /dev/null +++ b/buildroot/package/nss-mdns/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_NSS_MDNS + bool "nss-mdns" + # libdaemon->avahi uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_AVAHI_DAEMON + help + nss-mdns is a plugin for the GNU Name Service Switch (NSS) + functionality of the GNU C Library (glibc) providing host + name resolution via Multicast DNS (aka Zeroconf, aka Apple + Rendezvous, aka Apple Bonjour), effectively allowing name + resolution by common Unix/Linux programs in the ad-hoc + mDNS domain .local. + + http://0pointer.de/lennart/projects/nss-mdns/ + +comment "nss-mdns needs a glibc toolchain" + depends on BR2_USE_MMU && BR2_PACKAGE_AVAHI_DAEMON + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/nss-mdns/nss-mdns.hash b/buildroot/package/nss-mdns/nss-mdns.hash new file mode 100644 index 0000000..169c497 --- /dev/null +++ b/buildroot/package/nss-mdns/nss-mdns.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1e683c2e7c3921814706d62fbbd3e9cbf493a75fa00255e0e715508d8134fa6d nss-mdns-0.10.tar.gz diff --git a/buildroot/package/nss-mdns/nss-mdns.mk b/buildroot/package/nss-mdns/nss-mdns.mk new file mode 100644 index 0000000..407b942 --- /dev/null +++ b/buildroot/package/nss-mdns/nss-mdns.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# nss-mdns +# +################################################################################ + +NSS_MDNS_VERSION = 0.10 +NSS_MDNS_SITE = http://0pointer.de/lennart/projects/nss-mdns +NSS_MDNS_LICENSE = LGPL-2.1+ +NSS_MDNS_LICENSE_FILES = LICENSE + +define NSS_MDNS_INSTALL_CONFIG + if [ ! -f "$(TARGET_DIR)/etc/nsswitch.conf" ]; then \ + $(INSTALL) -D -m 0644 package/glibc/nsswitch.conf $(TARGET_DIR)/etc/nsswitch.conf ; \ + fi + sed -r -i -e 's/^(hosts:[[:space:]]+).*/\1files mdns4_minimal [NOTFOUND=return] dns mdns4/' \ + $(TARGET_DIR)/etc/nsswitch.conf +endef + +NSS_MDNS_POST_INSTALL_TARGET_HOOKS += NSS_MDNS_INSTALL_CONFIG + +$(eval $(autotools-package)) diff --git a/buildroot/package/nss-pam-ldapd/Config.in b/buildroot/package/nss-pam-ldapd/Config.in new file mode 100644 index 0000000..233f213 --- /dev/null +++ b/buildroot/package/nss-pam-ldapd/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_NSS_PAM_LDAPD + bool "nss-pam-ldapd" + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_OPENLDAP + help + Name Service Switch (NSS) module that allows your LDAP + server to provide user account, group, host name, alias, + netgroup, and basically any other information that you would + normally get from /etc flat files or NIS. It also provides a + Pluggable Authentication Module (PAM) to do authentication + to an LDAP server. + + http://arthurdejong.org/nss-pam-ldapd/ + +if BR2_PACKAGE_NSS_PAM_LDAPD + +config BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES + bool "nss-pam-ldapd utilities" + help + Build/Install command-line utilities. + +endif + +comment "nss-pam-ldapd needs a glibc toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/nss-pam-ldapd/S45nslcd b/buildroot/package/nss-pam-ldapd/S45nslcd new file mode 100644 index 0000000..cd3e4d0 --- /dev/null +++ b/buildroot/package/nss-pam-ldapd/S45nslcd @@ -0,0 +1,25 @@ +#!/bin/sh + +NAME="nslcd" +DAEMON="/usr/sbin/${NAME}" + +case "$1" in +start) + echo -n "Starting ${NAME}: " + start-stop-daemon -S -x ${DAEMON} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +stop) + echo -n "Stopping ${NAME}: " + start-stop-daemon -K -x ${DAEMON} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +restart|reload) + $0 stop + $0 start + ;; +*) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + diff --git a/buildroot/package/nss-pam-ldapd/nslcd.service b/buildroot/package/nss-pam-ldapd/nslcd.service new file mode 100644 index 0000000..6c0d71b --- /dev/null +++ b/buildroot/package/nss-pam-ldapd/nslcd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Naming services LDAP client daemon. +After=syslog.target network.target + +[Service] +Type=forking +PIDFile=/var/run/nslcd/nslcd.pid +ExecStart=/usr/sbin/nslcd + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/nss-pam-ldapd/nss-pam-ldapd.hash b/buildroot/package/nss-pam-ldapd/nss-pam-ldapd.hash new file mode 100644 index 0000000..66cb794 --- /dev/null +++ b/buildroot/package/nss-pam-ldapd/nss-pam-ldapd.hash @@ -0,0 +1,4 @@ +# From https://arthurdejong.org/nss-pam-ldapd/nss-pam-ldapd-0.9.8.tar.gz.md5 +md5 8c99fdc54f4bf9aca8c5f53fdb1403ff nss-pam-ldapd-0.9.8.tar.gz +# Locally computed: +sha256 ef7362e7f2003da8c7beb7bcc03c30494acf712625aaac8badc6e7eb16f3453f nss-pam-ldapd-0.9.8.tar.gz diff --git a/buildroot/package/nss-pam-ldapd/nss-pam-ldapd.mk b/buildroot/package/nss-pam-ldapd/nss-pam-ldapd.mk new file mode 100644 index 0000000..c094db9 --- /dev/null +++ b/buildroot/package/nss-pam-ldapd/nss-pam-ldapd.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# nss-pam-ldapd +# +################################################################################ + +NSS_PAM_LDAPD_VERSION = 0.9.8 +NSS_PAM_LDAPD_SITE = http://arthurdejong.org/nss-pam-ldapd +NSS_PAM_LDAPD_LICENSE = LGPL-2.1+ +NSS_PAM_LDAPD_LICENSE_FILES = COPYING +NSS_PAM_LDAPD_INSTALL_STAGING = YES + +NSS_PAM_LDAPD_CONF_OPTS = --disable-sasl +NSS_PAM_LDAPD_DEPENDENCIES = openldap + +ifeq ($(BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES),y) +NSS_PAM_LDAPD_CONF_OPTS += --enable-utils +else +NSS_PAM_LDAPD_CONF_OPTS += --disable-utils +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +NSS_PAM_LDAPD_CONF_OPTS += --enable-pam +NSS_PAM_LDAPD_DEPENDENCIES += linux-pam +else +NSS_PAM_LDAPD_CONF_OPTS += --disable-pam +endif + +define NSS_PAM_LDAPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 644 -D package/nss-pam-ldapd/nslcd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/nslcd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/nslcd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/nslcd.service +endef + +define NSS_PAM_LDAPD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/nss-pam-ldapd/S45nslcd \ + $(TARGET_DIR)/etc/init.d/S45nslcd +endef + +define NSS_PAM_LDAPD_USERS + nslcd -1 nslcd -1 * - - - nslcd user +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/ntfs-3g/Config.in b/buildroot/package/ntfs-3g/Config.in new file mode 100644 index 0000000..b9f7eaf --- /dev/null +++ b/buildroot/package/ntfs-3g/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_NTFS_3G + bool "ntfs-3g" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + help + The NTFS-3G driver is an open source, freely available + read/write NTFS driver for Linux, FreeBSD, Mac OS X, NetBSD, + and Haiku. It provides safe and fast handling of the Windows + XP, Windows Server 2003, Windows 2000 and Windows Vista file + systems. Most POSIX file system operations are supported, with + the exception of full file ownership and access right support. + + http://www.ntfs-3g.org/ + +if BR2_PACKAGE_NTFS_3G + +config BR2_PACKAGE_NTFS_3G_ENCRYPTED + bool "encrypted volumes" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + select BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_LIBGCRYPT + help + Enable support for NTFS encrypted volumes. + +config BR2_PACKAGE_NTFS_3G_NTFSPROGS + bool "ntfsprogs" + help + Install NTFS utilities. + +endif + +comment "ntfs-3g needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/ntfs-3g/ntfs-3g.hash b/buildroot/package/ntfs-3g/ntfs-3g.hash new file mode 100644 index 0000000..2e0b06f --- /dev/null +++ b/buildroot/package/ntfs-3g/ntfs-3g.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3e5a021d7b761261836dcb305370af299793eedbded731df3d6943802e1262d5 ntfs-3g_ntfsprogs-2017.3.23.tgz diff --git a/buildroot/package/ntfs-3g/ntfs-3g.mk b/buildroot/package/ntfs-3g/ntfs-3g.mk new file mode 100644 index 0000000..5f23eae --- /dev/null +++ b/buildroot/package/ntfs-3g/ntfs-3g.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# ntfs-3g +# +################################################################################ + +NTFS_3G_VERSION = 2017.3.23 +NTFS_3G_SOURCE = ntfs-3g_ntfsprogs-$(NTFS_3G_VERSION).tgz +NTFS_3G_SITE = http://tuxera.com/opensource +NTFS_3G_CONF_OPTS = --disable-ldconfig +NTFS_3G_INSTALL_STAGING = YES +NTFS_3G_DEPENDENCIES = host-pkgconf +NTFS_3G_LICENSE = GPL-2.0+, LGPL-2.0+ +NTFS_3G_LICENSE_FILES = COPYING COPYING.LIB + +ifeq ($(BR2_PACKAGE_LIBFUSE),y) +NTFS_3G_CONF_OPTS += --with-fuse=external +NTFS_3G_DEPENDENCIES += libfuse +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +NTFS_3G_DEPENDENCIES += util-linux +endif + +ifeq ($(BR2_PACKAGE_NTFS_3G_ENCRYPTED),y) +NTFS_3G_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +NTFS_3G_CONF_OPTS += --enable-crypto +NTFS_3G_DEPENDENCIES += gnutls libgcrypt +endif + +ifneq ($(BR2_PACKAGE_NTFS_3G_NTFSPROGS),y) +NTFS_3G_CONF_OPTS += --disable-ntfsprogs +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ntp/0001-nano.patch b/buildroot/package/ntp/0001-nano.patch new file mode 100644 index 0000000..bce3478 --- /dev/null +++ b/buildroot/package/ntp/0001-nano.patch @@ -0,0 +1,28 @@ +Fixes issues with glibc header files, see +http://bugs.gentoo.org/show_bug.cgi?id=270483 + +Signed-off-by: Gustavo Zacarias + +Rebase to apply cleanly. + +Signed-off-by: Danomi Manchego + + +diff -purN a/include/ntp_syscall.h b/include/ntp_syscall.h +--- a/include/ntp_syscall.h 2015-02-11 08:42:37.794576469 -0500 ++++ b/include/ntp_syscall.h 2015-02-11 08:43:03.216957279 -0500 +@@ -10,6 +10,14 @@ + # include + #endif + ++#if defined(ADJ_NANO) && !defined(MOD_NANO) ++#define MOD_NANO ADJ_NANO ++#endif ++ ++#if defined(ADJ_TAI) && !defined(MOD_TAI) ++#define MOD_TAI ADJ_TAI ++#endif ++ + #ifndef NTP_SYSCALLS_LIBC + # ifdef NTP_SYSCALLS_STD + # define ntp_adjtime(t) syscall(SYS_ntp_adjtime, (t)) diff --git a/buildroot/package/ntp/0002-ntp-syscalls-fallback.patch b/buildroot/package/ntp/0002-ntp-syscalls-fallback.patch new file mode 100644 index 0000000..535fc93 --- /dev/null +++ b/buildroot/package/ntp/0002-ntp-syscalls-fallback.patch @@ -0,0 +1,27 @@ +inline ntp syscalls fallback + +Reference: + https://bugs.ntp.org/show_bug.cgi?id=769 + +Signed-off-by: James Knight +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +--- a/configure.ac ++++ b/configure.ac +@@ -1523,11 +1523,11 @@ AC_CACHE_CHECK( + [ntp_cv_var_ntp_syscalls], + [ + ntp_cv_var_ntp_syscalls=no +- case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex" in ++ case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex$ac_cv_func_adjtimex" in + yesyes*) + ntp_cv_var_ntp_syscalls=libc + ;; +- *yes) ++ *yesyes | *yesno | *noyes) + ntp_cv_var_ntp_syscalls=inline + ;; + *) diff --git a/buildroot/package/ntp/Config.in b/buildroot/package/ntp/Config.in new file mode 100644 index 0000000..efd47e1 --- /dev/null +++ b/buildroot/package/ntp/Config.in @@ -0,0 +1,96 @@ +config BR2_PACKAGE_NTP + bool "ntp" + select BR2_PACKAGE_LIBEVENT + help + Network Time Protocol suite/programs. + Provides things like ntpd, ntpdate, ntpq, etc... + + http://www.ntp.org/ + +if BR2_PACKAGE_NTP + +config BR2_PACKAGE_NTP_SNTP + bool "sntp" + help + Simple network time protocol program + +config BR2_PACKAGE_NTP_NTP_KEYGEN + bool "ntp-keygen" + help + Create a NTP host key + +config BR2_PACKAGE_NTP_NTP_SHM_CLK + bool "SHM clock support" + help + Compile ntp with support for a SHM clock attached through + shared memory. + +config BR2_PACKAGE_NTP_NTP_WAIT + bool "ntp-wait" + depends on BR2_PACKAGE_PERL + help + ntp-wait waits until the locally running ntpd is in state 4 + (synchronized). This could be useful at boot time, to delay + the boot sequence until after "ntpd -g" has set the time. + +config BR2_PACKAGE_NTP_NTPD + bool "ntpd" + default y + help + ntpd is the time synchronization daemon keeping your local + system date and time in sync and optionally serving time and + date information on the network via the NTP protocol. + +config BR2_PACKAGE_NTP_NTPD_ATOM_PPS + bool "PPS support" + depends on BR2_PACKAGE_NTP_NTPD + select BR2_PACKAGE_PPS_TOOLS + help + Compile ntpd with the ability to use an ATOM PPS source. + +config BR2_PACKAGE_NTP_NTPDATE + bool "ntpdate" + help + The ntpdate utility program is used to set the local date + and time from an NTP server given as an argument. + +config BR2_PACKAGE_NTP_NTPDC + bool "ntpdc" + help + The ntpdc utility program is used to query an NTP daemon about + its current state and to request changes in that state. + +config BR2_PACKAGE_NTP_NTPQ + bool "ntpq" + help + The ntpq utility program is used to query NTP servers + requesting information about current state and/or changes in + that state. + +config BR2_PACKAGE_NTP_NTPSNMPD + bool "ntpsnmpd" + depends on BR2_USE_MMU # netsnmp fork() + select BR2_PACKAGE_NETSNMP + help + Install ntpsnmpd NTP SNMP MIB agent. + +config BR2_PACKAGE_NTP_NTPTIME + bool "ntptime" + help + The ntptime utility program is used to read and set kernel + time variables. + +config BR2_PACKAGE_NTP_NTPTRACE + bool "ntptrace" + depends on BR2_PACKAGE_PERL + help + ntptrace is a perl script that uses the ntpq utility program + to follow the chain of NTP servers from a given host back to + the primary time source + +config BR2_PACKAGE_NTP_TICKADJ + bool "tickadj" + help + set time-related kernel variables + +endif diff --git a/buildroot/package/ntp/S49ntp b/buildroot/package/ntp/S49ntp new file mode 100755 index 0000000..b4047fc --- /dev/null +++ b/buildroot/package/ntp/S49ntp @@ -0,0 +1,38 @@ +#! /bin/sh + +NAME=ntpd +DAEMON=/usr/sbin/$NAME + +# Gracefully exit if the package has been removed. +test -x $DAEMON || exit 0 + +# Read config file if it is present. +if [ -r /etc/default/$NAME ] +then + . /etc/default/$NAME +fi + +case "$1" in + start) + printf "Starting $NAME: " + start-stop-daemon -S -q -x $DAEMON -- -g + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping $NAME: " + start-stop-daemon -K -q -n $NAME + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + echo "Restarting $NAME: " + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/buildroot/package/ntp/ntp.hash b/buildroot/package/ntp/ntp.hash new file mode 100644 index 0000000..ea86c15 --- /dev/null +++ b/buildroot/package/ntp/ntp.hash @@ -0,0 +1,5 @@ +# From https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p11.tar.gz.md5 +md5 00950ca2855579541896513e78295361 ntp-4.2.8p11.tar.gz +# Calculated based on the hash above +sha256 f14a39f753688252d683ff907035ffff106ba8d3db21309b742e09b5c3cd278e ntp-4.2.8p11.tar.gz +sha256 62c87b269365b38b55359b16dfde7ec28c683c722ef489db90afd0f2e478e4a1 COPYRIGHT diff --git a/buildroot/package/ntp/ntp.mk b/buildroot/package/ntp/ntp.mk new file mode 100644 index 0000000..b5e2c1e --- /dev/null +++ b/buildroot/package/ntp/ntp.mk @@ -0,0 +1,109 @@ +################################################################################ +# +# ntp +# +################################################################################ + +NTP_VERSION_MAJOR = 4.2 +NTP_VERSION = $(NTP_VERSION_MAJOR).8p11 +NTP_SITE = https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-$(NTP_VERSION_MAJOR) +NTP_DEPENDENCIES = host-pkgconf libevent $(if $(BR2_PACKAGE_BUSYBOX),busybox) +NTP_LICENSE = NTP +NTP_LICENSE_FILES = COPYRIGHT +NTP_CONF_ENV = ac_cv_lib_md5_MD5Init=no +NTP_CONF_OPTS = \ + --with-shared \ + --program-transform-name=s,,, \ + --disable-tickadj \ + --disable-debugging \ + --with-yielding-select=yes \ + --disable-local-libevent + +# 0002-ntp-syscalls-fallback.patch +NTP_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +NTP_CONF_OPTS += --with-crypto --enable-openssl-random +NTP_DEPENDENCIES += openssl +else +NTP_CONF_OPTS += --without-crypto --disable-openssl-random +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y) +NTP_CONF_OPTS += --with-hardenfile=linux +else +NTP_CONF_OPTS += --with-hardenfile=default +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +NTP_CONF_OPTS += --enable-linuxcaps +NTP_DEPENDENCIES += libcap +else +NTP_CONF_OPTS += --disable-linuxcaps +endif + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +NTP_CONF_OPTS += --with-lineeditlibs=edit +NTP_DEPENDENCIES += libedit +else +NTP_CONF_OPTS += --without-lineeditlibs +endif + +ifeq ($(BR2_PACKAGE_NTP_NTPSNMPD),y) +NTP_CONF_OPTS += \ + --with-net-snmp-config=$(STAGING_DIR)/usr/bin/net-snmp-config +NTP_DEPENDENCIES += netsnmp +else +NTP_CONF_OPTS += --without-ntpsnmpd +endif + +ifeq ($(BR2_PACKAGE_NTP_NTPD_ATOM_PPS),y) +NTP_CONF_OPTS += --enable-ATOM +NTP_DEPENDENCIES += pps-tools +else +NTP_CONF_OPTS += --disable-ATOM +endif + +ifeq ($(BR2_PACKAGE_NTP_NTP_SHM_CLK),y) +NTP_CONF_OPTS += --enable-SHM +else +NTP_CONF_OPTS += --disable-SHM +endif + +ifeq ($(BR2_PACKAGE_NTP_SNTP),y) +NTP_CONF_OPTS += --with-sntp +else +NTP_CONF_OPTS += --without-sntp +endif + +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTP_KEYGEN) += util/ntp-keygen +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTP_WAIT) += scripts/ntp-wait/ntp-wait +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPDATE) += ntpdate/ntpdate +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPDC) += ntpdc/ntpdc +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPQ) += ntpq/ntpq +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPSNMPD) += ntpsnmpd/ntpsnmpd +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPTIME) += util/ntptime +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_NTPTRACE) += scripts/ntptrace/ntptrace +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_SNTP) += sntp/sntp +NTP_INSTALL_FILES_$(BR2_PACKAGE_NTP_TICKADJ) += util/tickadj + +define NTP_INSTALL_TARGET_CMDS + $(if $(BR2_PACKAGE_NTP_NTPD), install -m 755 $(@D)/ntpd/ntpd $(TARGET_DIR)/usr/sbin/ntpd) + test -z "$(NTP_INSTALL_FILES_y)" || install -m 755 $(addprefix $(@D)/,$(NTP_INSTALL_FILES_y)) $(TARGET_DIR)/usr/bin/ + $(INSTALL) -m 644 package/ntp/ntpd.etc.conf $(TARGET_DIR)/etc/ntp.conf +endef + +ifeq ($(BR2_PACKAGE_NTP_NTPD),y) +define NTP_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/ntp/S49ntp $(TARGET_DIR)/etc/init.d/S49ntp +endef + +define NTP_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/ntp/ntpd.service $(TARGET_DIR)/usr/lib/systemd/system/ntpd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/ntpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/ntpd.service +endef +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ntp/ntpd.etc.conf b/buildroot/package/ntp/ntpd.etc.conf new file mode 100644 index 0000000..c451aa9 --- /dev/null +++ b/buildroot/package/ntp/ntpd.etc.conf @@ -0,0 +1,10 @@ +server 0.pool.ntp.org iburst +server 1.pool.ntp.org iburst +server 2.pool.ntp.org iburst +server 3.pool.ntp.org iburst + +# Allow only time queries, at a limited rate, sending KoD when in excess. +# Allow all local queries (IPv4, IPv6) +restrict default nomodify nopeer noquery limited kod +restrict 127.0.0.1 +restrict [::1] diff --git a/buildroot/package/ntp/ntpd.service b/buildroot/package/ntp/ntpd.service new file mode 100644 index 0000000..7964c53 --- /dev/null +++ b/buildroot/package/ntp/ntpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Network Time Service +After=network.target + +[Service] +Type=forking +PIDFile=/run/ntpd.pid +ExecStart=/usr/sbin/ntpd -g -p /run/ntpd.pid + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/numactl/0001-Fix-usage-of-GLIBC_PREREQ-for-non-glibc-toolchains.patch b/buildroot/package/numactl/0001-Fix-usage-of-GLIBC_PREREQ-for-non-glibc-toolchains.patch new file mode 100644 index 0000000..ebb934f --- /dev/null +++ b/buildroot/package/numactl/0001-Fix-usage-of-GLIBC_PREREQ-for-non-glibc-toolchains.patch @@ -0,0 +1,35 @@ +From 3770bdc4fa7b9059db5cd2aa8bb09b50fa15e456 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Fri, 12 Feb 2016 19:25:02 +0100 +Subject: [PATCH] Fix usage of __GLIBC_PREREQ for non-glibc toolchains + +The way __GLIBC_PREREQ() is currently used means that it's evaluated +even if __GLIBC__ is not defined. But obviously, __GLIBC_PREREQ will +not exist if __GLIBC__ is not defined, causing build failures on C +libraries not defining __GLIBC__ such as the musl C library. + +Patch originally taken from: +https://github.com/voidlinux/void-packages/blob/master/srcpkgs/numactl/patches/musl.patch + +Signed-off-by: Bernd Kuhls +[Bernd: Reworked to fix uClibc] +Signed-off-by: Thomas Petazzoni +[Thomas: improve patch description.] +[Upstream commit: https://github.com/numactl/numactl/commit/3770bdc4fa7b9059db5cd2aa8bb09b50fa15e456.] +--- + syscall.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/syscall.c b/syscall.c +index 4589b85..37782d9 100644 +--- a/syscall.c ++++ b/syscall.c +@@ -115,7 +115,7 @@ + + #endif + +-#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 11) ++#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 11) + + /* glibc 2.11 seems to have working 6 argument sycall. Use the + glibc supplied syscall in this case. diff --git a/buildroot/package/numactl/0002-Fix-usage-of-GLIBC_PREREQ-for-non-glibc-toolchains.patch b/buildroot/package/numactl/0002-Fix-usage-of-GLIBC_PREREQ-for-non-glibc-toolchains.patch new file mode 100644 index 0000000..a98fd72 --- /dev/null +++ b/buildroot/package/numactl/0002-Fix-usage-of-GLIBC_PREREQ-for-non-glibc-toolchains.patch @@ -0,0 +1,39 @@ +From 31dc2951c758698bff060aeae8ffd8854616183b Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Fri, 12 Feb 2016 19:25:02 +0100 +Subject: [PATCH] Fix usage of __GLIBC_PREREQ for non-glibc toolchains + +The way __GLIBC_PREREQ() is currently used means that it's evaluated +even if __GLIBC__ is not defined. But obviously, __GLIBC_PREREQ will +not exist if __GLIBC__ is not defined, causing build failures on C +libraries not defining __GLIBC__ such as the musl C library. + +Patch originally taken from: +https://github.com/voidlinux/void-packages/blob/master/srcpkgs/numactl/patches/musl.patch + +Signed-off-by: Bernd Kuhls +[Bernd: Reworked to fix uClibc] +Signed-off-by: Thomas Petazzoni +[Thomas: improve patch description.] +[Upstream commit: https://github.com/numactl/numactl/commit/31dc2951c758698bff060aeae8ffd8854616183b] +--- + syscall.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/syscall.c b/syscall.c +index 37782d9..255853d 100644 +--- a/syscall.c ++++ b/syscall.c +@@ -115,7 +115,11 @@ + + #endif + +-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 11) ++#ifndef __GLIBC_PREREQ ++# define __GLIBC_PREREQ(x,y) 0 ++#endif ++ ++#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 11) + + /* glibc 2.11 seems to have working 6 argument sycall. Use the + glibc supplied syscall in this case. diff --git a/buildroot/package/numactl/Config.in b/buildroot/package/numactl/Config.in new file mode 100644 index 0000000..95057d3 --- /dev/null +++ b/buildroot/package/numactl/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_NUMACTL + bool "numactl" + # numactl uses some system calls that are not available on all + # architectures. + depends on BR2_aarch64 || BR2_i386 || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_powerpc || BR2_x86_64 + help + numactl allows you to run your application on specific cpus + and memory nodes. It does this by supplying a NUMA memory + policy to the operating system before running your program. + + http://oss.sgi.com/projects/libnuma/ diff --git a/buildroot/package/numactl/numactl.hash b/buildroot/package/numactl/numactl.hash new file mode 100644 index 0000000..c36e24d --- /dev/null +++ b/buildroot/package/numactl/numactl.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 450c091235f891ee874a8651b179c30f57a1391ca5c4673354740ba65e527861 numactl-2.0.11.tar.gz diff --git a/buildroot/package/numactl/numactl.mk b/buildroot/package/numactl/numactl.mk new file mode 100644 index 0000000..d37ee9e --- /dev/null +++ b/buildroot/package/numactl/numactl.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# numactl +# +################################################################################ + +NUMACTL_VERSION = 2.0.11 +NUMACTL_SITE = ftp://oss.sgi.com/www/projects/libnuma/download +NUMACTL_LICENSE = LGPL-2.1 (libnuma), GPL-2.0 (programs) +NUMACTL_LICENSE_FILES = README +NUMACTL_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/nut/0001-Allow-to-customize-path-to-gdlib-config-and-net-snmp.patch b/buildroot/package/nut/0001-Allow-to-customize-path-to-gdlib-config-and-net-snmp.patch new file mode 100644 index 0000000..308dbb1 --- /dev/null +++ b/buildroot/package/nut/0001-Allow-to-customize-path-to-gdlib-config-and-net-snmp.patch @@ -0,0 +1,153 @@ +From 086b5fa8fe4ba74404e92b5f838263dfcf9f173d Mon Sep 17 00:00:00 2001 +From: Jim Klimov +Date: Thu, 7 Apr 2016 03:56:51 +0200 +Subject: [PATCH] Allow to customize path to gdlib-config and net-snmp-config + programs + +[yann.morin.1998@free.fr: backport] +Signed-off-by: "Yann E. MORIN" + +--- +Backported from upstream commit 086b5fa8fe4ba74404e92b5f838263dfcf9f173d +--- + docs/configure.txt | 14 ++++++++++++++ + m4/nut_check_libgd.m4 | 29 +++++++++++++++++++++++------ + m4/nut_check_libnetsnmp.m4 | 25 +++++++++++++++++++++---- + 3 files changed, 58 insertions(+), 10 deletions(-) + +diff --git a/docs/configure.txt b/docs/configure.txt +index aff82c1..b3b542a 100644 +--- a/docs/configure.txt ++++ b/docs/configure.txt +@@ -23,6 +23,13 @@ Note that you need to install the libusb development package or files. + Build and install the SNMP drivers (default: auto-detect) + Note that you need to install libsnmp development package or files. + ++ --with-net-snmp-config ++ ++In addition to the `--with-snmp` option above, this one allows to provide ++a custom program name (in `PATH`) or complete pathname to `net-snmp-config`. ++This may be needed on build systems which support multiple architectures, ++or in cases where your distribution names this program differently. ++ + --with-neon + + Build and install the XML drivers (default: auto-detect) +@@ -335,6 +342,13 @@ NOTE: the --with-gd switches are not necessary if you have gd 2.0.8 + or higher installed properly. The gdlib-config script will be + detected and used by default in that situation. + ++ --with-gdlib-config ++ ++This option allows to provide a custom program name (in `PATH`) or ++a complete pathname to `gdlib-config`. This may be needed on build ++systems which support multiple architectures, or in cases where your ++distribution names this program differently. ++ + --with-ssl-includes, --with-usb-includes, --with-snmp-includes, + --with-neon-includes, --with-libltdl-includes, + --with-powerman-includes="-I/foo/bar" +diff --git a/m4/nut_check_libgd.m4 b/m4/nut_check_libgd.m4 +index 01cc882..73f4da7 100644 +--- a/m4/nut_check_libgd.m4 ++++ b/m4/nut_check_libgd.m4 +@@ -19,8 +19,25 @@ if test -z "${nut_have_libgd_seen}"; then + LDFLAGS="-L/usr/X11R6/lib" + LIBS="-lgd -lpng -lz -ljpeg -lfreetype -lm -lXpm -lX11" + +- AC_MSG_CHECKING(for gd version via gdlib-config) +- GD_VERSION=`gdlib-config --version 2>/dev/null` ++ dnl By default seek in PATH ++ GDLIB_CONFIG=gdlib-config ++ AC_ARG_WITH(gdlib-config, ++ AS_HELP_STRING([@<:@--with-gdlib-config=/path/to/gdlib-config@:>@], ++ [path to program that reports GDLIB configuration]), ++ [ ++ case "${withval}" in ++ "") ;; ++ yes|no) ++ AC_MSG_ERROR(invalid option --with(out)-gdlib-config - see docs/configure.txt) ++ ;; ++ *) ++ GDLIB_CONFIG="${withval}" ++ ;; ++ esac ++ ]) ++ ++ AC_MSG_CHECKING(for gd version via ${GDLIB_CONFIG}) ++ GD_VERSION=`${GDLIB_CONFIG} --version 2>/dev/null` + if test "$?" != "0" -o -z "${GD_VERSION}"; then + GD_VERSION="none" + fi +@@ -30,13 +47,13 @@ if test -z "${nut_have_libgd_seen}"; then + none) + ;; + 2.0.5 | 2.0.6 | 2.0.7) +- AC_MSG_WARN([[gd ${GD_VERSION} detected, unable to use gdlib-config script]]) ++ AC_MSG_WARN([[gd ${GD_VERSION} detected, unable to use ${GDLIB_CONFIG} script]]) + AC_MSG_WARN([[If gd detection fails, upgrade gd or use --with-gd-includes and --with-gd-libs]]) + ;; + *) +- CFLAGS="`gdlib-config --includes 2>/dev/null`" +- LDFLAGS="`gdlib-config --ldflags 2>/dev/null`" +- LIBS="`gdlib-config --libs 2>/dev/null`" ++ CFLAGS="`${GDLIB_CONFIG} --includes 2>/dev/null`" ++ LDFLAGS="`${GDLIB_CONFIG} --ldflags 2>/dev/null`" ++ LIBS="`${GDLIB_CONFIG} --libs 2>/dev/null`" + ;; + esac + +diff --git a/m4/nut_check_libnetsnmp.m4 b/m4/nut_check_libnetsnmp.m4 +index e1c1426..83b2633 100644 +--- a/m4/nut_check_libnetsnmp.m4 ++++ b/m4/nut_check_libnetsnmp.m4 +@@ -13,9 +13,26 @@ if test -z "${nut_have_libnetsnmp_seen}"; then + CFLAGS_ORIG="${CFLAGS}" + LIBS_ORIG="${LIBS}" + ++ dnl By default seek in PATH ++ NET_SNMP_CONFIG=net-snmp-config ++ AC_ARG_WITH(net-snmp-config, ++ AS_HELP_STRING([@<:@--with-net-snmp-config=/path/to/net-snmp-config@:>@], ++ [path to program that reports Net-SNMP configuration]), ++ [ ++ case "${withval}" in ++ "") ;; ++ yes|no) ++ AC_MSG_ERROR(invalid option --with(out)-net-snmp-config - see docs/configure.txt) ++ ;; ++ *) ++ NET_SNMP_CONFIG="${withval}" ++ ;; ++ esac ++ ]) ++ + dnl See which version of the Net-SNMP library (if any) is installed +- AC_MSG_CHECKING(for Net-SNMP version via net-snmp-config) +- SNMP_VERSION=`net-snmp-config --version 2>/dev/null` ++ AC_MSG_CHECKING(for Net-SNMP version via ${NET_SNMP_CONFIG}) ++ SNMP_VERSION=`${NET_SNMP_CONFIG} --version 2>/dev/null` + if test "$?" != "0" -o -z "${SNMP_VERSION}"; then + SNMP_VERSION="none" + fi +@@ -33,7 +50,7 @@ if test -z "${nut_have_libnetsnmp_seen}"; then + CFLAGS="${withval}" + ;; + esac +- ], [CFLAGS="`net-snmp-config --base-cflags 2>/dev/null`"]) ++ ], [CFLAGS="`${NET_SNMP_CONFIG} --base-cflags 2>/dev/null`"]) + AC_MSG_RESULT([${CFLAGS}]) + + AC_MSG_CHECKING(for Net-SNMP libs) +@@ -48,7 +65,7 @@ if test -z "${nut_have_libnetsnmp_seen}"; then + LIBS="${withval}" + ;; + esac +- ], [LIBS="`net-snmp-config --libs 2>/dev/null`"]) ++ ], [LIBS="`${NET_SNMP_CONFIG} --libs 2>/dev/null`"]) + AC_MSG_RESULT([${LIBS}]) + + dnl Check if the Net-SNMP library is usable +-- +2.7.4 + diff --git a/buildroot/package/nut/0002-client-ups-add-missing-include.patch b/buildroot/package/nut/0002-client-ups-add-missing-include.patch new file mode 100644 index 0000000..63fdcdc --- /dev/null +++ b/buildroot/package/nut/0002-client-ups-add-missing-include.patch @@ -0,0 +1,29 @@ +From da0969b26ad4bb839bcb88362c8f41aaf0eb8363 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 11 Oct 2016 12:05:36 +0200 +Subject: [PATCH] client/ups: add missing include + +struct timeval is declared in sys/time.h, so we need to #include it. + +Signed-off-by: "Yann E. MORIN" +--- +Backported from upstream commit da0969b26ad4bb839bcb88362c8f41aaf0eb8363 +--- + clients/upsclient.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/clients/upsclient.c b/clients/upsclient.c +index 43c0e79..dfadd0d 100644 +--- a/clients/upsclient.c ++++ b/clients/upsclient.c +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include + + #include "upsclient.h" + #include "common.h" +-- +2.7.4 + diff --git a/buildroot/package/nut/Config.in b/buildroot/package/nut/Config.in new file mode 100644 index 0000000..df647b9 --- /dev/null +++ b/buildroot/package/nut/Config.in @@ -0,0 +1,27 @@ +comment "nut needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_NUT + bool "nut" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + help + Network UPS tools + + The primary goal of the Network UPS Tools (NUT) project is + to provide support for Power Devices, such as + Uninterruptible Power Supplies, Power Distribution Units and + Solar Controllers. + + http://www.networkupstools.org/ + +if BR2_PACKAGE_NUT + +config BR2_PACKAGE_NUT_DRIVERS + string "drivers" + help + Select the individual drivers to enable, in a + comma-separated list. Leave empty for all. + +endif # BR2_PACKAGE_NUT diff --git a/buildroot/package/nut/nut.hash b/buildroot/package/nut/nut.hash new file mode 100644 index 0000000..870c67c --- /dev/null +++ b/buildroot/package/nut/nut.hash @@ -0,0 +1,2 @@ +# From http://www.networkupstools.org/source/2.7/nut-2.7.2.tar.gz.sha256 +sha256 980e82918c52d364605c0703a5dcf01f74ad2ef06e3d365949e43b7d406d25a7 nut-2.7.4.tar.gz diff --git a/buildroot/package/nut/nut.mk b/buildroot/package/nut/nut.mk new file mode 100644 index 0000000..4ea9947 --- /dev/null +++ b/buildroot/package/nut/nut.mk @@ -0,0 +1,95 @@ +################################################################################ +# +# nut +# +################################################################################ + +NUT_VERSION_MAJOR = 2.7 +NUT_VERSION = $(NUT_VERSION_MAJOR).4 +NUT_SITE = http://www.networkupstools.org/source/$(NUT_VERSION_MAJOR) +NUT_LICENSE = GPL-2.0+, GPL-3.0+ (python scripts), GPL/Artistic (perl client) +NUT_LICENSE_FILES = COPYING LICENSE-GPL2 LICENSE-GPL3 +NUT_DEPENDENCIES = host-pkgconf + +# Our patch changes m4 macros, so we need to autoreconf +NUT_AUTORECONF = YES + +# Race condition in tools generation +NUT_MAKE = $(MAKE1) + +# Put the PID files in a read-write place (/var/run is a tmpfs) +# since the default location (/var/state/ups) maybe readonly. +NUT_CONF_OPTS = \ + --with-altpidpath=/var/run/upsd \ + --without-hal + +# For uClibc-based toolchains, nut forgets to link with -lm +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +NUT_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -lm" +endif + +ifeq ($(call qstrip,$(BR2_PACKAGE_NUT_DRIVERS)),) +NUT_CONF_OPTS += --with-drivers=all +else +NUT_CONF_OPTS += --with-drivers=$(BR2_PACKAGE_NUT_DRIVERS) +endif + +ifeq ($(BR2_PACKAGE_AVAHI)$(BR2_PACKAGE_DBUS),yy) +NUT_DEPENDENCIES += avahi dbus +NUT_CONF_OPTS += --with-avahi +else +NUT_CONF_OPTS += --without-avahi +endif + +# gd with support for png is required for the CGI +ifeq ($(BR2_PACKAGE_GD)$(BR2_PACKAGE_LIBPNG),yy) +NUT_DEPENDENCIES += gd libpng +NUT_CONF_OPTS += \ + --with-cgi \ + --with-gdlib-config=$(STAGING_DIR)/usr/bin/gdlib-config +else +NUT_CONF_OPTS += --without-cgi +endif + +# nut-scanner needs libltdl, which is a wrapper arounf dlopen/dlsym, +# so is not available for static-only builds. +# There is no flag to directly enable/disable nut-scanner, it's done +# via the --enable/disable-libltdl flag. +ifeq ($(BR2_STATIC_LIBS):$(BR2_PACKAGE_LIBTOOL),:y) +NUT_DEPENDENCIES += libtool +NUT_CONF_OPTS += --with-libltdl +else +NUT_CONF_OPTS += --without-libltdl +endif + +ifeq ($(BR2_PACKAGE_LIBUSB_COMPAT),y) +NUT_DEPENDENCIES += libusb-compat +NUT_CONF_OPTS += --with-usb +else +NUT_CONF_OPTS += --without-usb +endif + +ifeq ($(BR2_PACKAGE_NEON_EXPAT)$(BR2_PACKAGE_NEON_LIBXML2),y) +NUT_DEPENDENCIES += neon +NUT_CONF_OPTS += --with-neon +else +NUT_CONF_OPTS += --without-neon +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +NUT_DEPENDENCIES += netsnmp +NUT_CONF_OPTS += \ + --with-snmp \ + --with-net-snmp-config=$(STAGING_DIR)/usr/bin/net-snmp-config +else +NUT_CONF_OPTS += --without-snmp +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +NUT_DEPENDENCIES += openssl +NUT_CONF_OPTS += --with-ssl +else +NUT_CONF_OPTS += --without-ssl +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/nuttcp/0001-susv3-legacy.patch b/buildroot/package/nuttcp/0001-susv3-legacy.patch new file mode 100644 index 0000000..9a215f8 --- /dev/null +++ b/buildroot/package/nuttcp/0001-susv3-legacy.patch @@ -0,0 +1,264 @@ +[PATCH] Replace susv3 legacy function with modern equivalents + +Signed-off-by: Peter Korsgaard +--- + nuttcp-6.1.2.c | 90 ++++++++++++++++++++++++++++----------------------------- + 1 file changed, 45 insertions(+), 45 deletions(-) + +Index: nuttcp-6.1.2/nuttcp-6.1.2.c +=================================================================== +--- nuttcp-6.1.2.orig/nuttcp-6.1.2.c ++++ nuttcp-6.1.2/nuttcp-6.1.2.c +@@ -1925,11 +1925,11 @@ + if (udp && !haverateopt) + rate = DEFAULT_UDP_RATE; + +- bzero((char *)&frominet, sizeof(frominet)); +- bzero((char *)&clientaddr, sizeof(clientaddr)); ++ memset((char *)&frominet, 0, sizeof(frominet)); ++ memset((char *)&clientaddr, 0, sizeof(clientaddr)); + + #ifdef AF_INET6 +- bzero((char *)&clientaddr6, sizeof(clientaddr6)); ++ memset((char *)&clientaddr6, 0, sizeof(clientaddr6)); + clientscope6 = 0; + #endif + +@@ -1985,7 +1985,7 @@ + } + + while (stream_idx <= nstream) { +- bzero(&hints, sizeof(hints)); ++ memset(&hints, 0, sizeof(hints)); + res[stream_idx] = NULL; + if (explicitaf) hints.ai_family = af; + if ((cp2 = strchr(cp1, '/'))) { +@@ -3013,12 +3013,12 @@ + if ((stream_idx > 0) && skip_data) + break; + +- bzero((char *)&sinme[stream_idx], sizeof(sinme[stream_idx])); +- bzero((char *)&sinhim[stream_idx], sizeof(sinhim[stream_idx])); ++ memset((char *)&sinme[stream_idx], 0, sizeof(sinme[stream_idx])); ++ memset((char *)&sinhim[stream_idx], 0, sizeof(sinhim[stream_idx])); + + #ifdef AF_INET6 +- bzero((char *)&sinme6[stream_idx], sizeof(sinme6[stream_idx])); +- bzero((char *)&sinhim6[stream_idx], sizeof(sinhim6[stream_idx])); ++ memset((char *)&sinme6[stream_idx], 0, sizeof(sinme6[stream_idx])); ++ memset((char *)&sinhim6[stream_idx], 0, sizeof(sinhim6[stream_idx])); + #endif + + if (((trans && !reverse) && (stream_idx > 0)) || +@@ -3028,15 +3028,15 @@ + if (client) { + if (af == AF_INET) { + sinhim[stream_idx].sin_family = af; +- bcopy((char *)&(((struct sockaddr_in *)res[stream_idx]->ai_addr)->sin_addr), +- (char *)&sinhim[stream_idx].sin_addr.s_addr, ++ memcpy((char *)&sinhim[stream_idx].sin_addr.s_addr, ++ (char *)&(((struct sockaddr_in *)res[stream_idx]->ai_addr)->sin_addr), + sizeof(sinhim[stream_idx].sin_addr.s_addr)); + } + #ifdef AF_INET6 + else if (af == AF_INET6) { + sinhim6[stream_idx].sin6_family = af; +- bcopy((char *)&(((struct sockaddr_in6 *)res[stream_idx]->ai_addr)->sin6_addr), +- (char *)&sinhim6[stream_idx].sin6_addr.s6_addr, ++ memcpy((char *)&sinhim6[stream_idx].sin6_addr.s6_addr, ++ (char *)&(((struct sockaddr_in6 *)res[stream_idx]->ai_addr)->sin6_addr), + sizeof(sinhim6[stream_idx].sin6_addr.s6_addr)); + sinhim6[stream_idx].sin6_scope_id = ((struct sockaddr_in6 *)res[stream_idx]->ai_addr)->sin6_scope_id; + } +@@ -3113,8 +3113,8 @@ + * to the multicast group + */ + if (af == AF_INET) { +- bcopy((char *)&sinhim[1].sin_addr.s_addr, +- (char *)&save_sinhim.sin_addr.s_addr, ++ memcpy((char *)&save_sinhim.sin_addr.s_addr, ++ (char *)&sinhim[1].sin_addr.s_addr, + sizeof(struct in_addr)); + if (!client && (irvers >= 50505)) { + struct sockaddr_in peer; +@@ -3124,8 +3124,8 @@ + &peerlen) < 0) { + err("getpeername"); + } +- bcopy((char *)&peer.sin_addr.s_addr, +- (char *)&sinhim[1].sin_addr.s_addr, ++ memcpy((char *)&sinhim[1].sin_addr.s_addr, ++ (char *)&peer.sin_addr.s_addr, + sizeof(struct in_addr)); + } + else { +@@ -3136,8 +3136,8 @@ + &melen) < 0) { + err("getsockname"); + } +- bcopy((char *)&me.sin_addr.s_addr, +- (char *)&sinhim[1].sin_addr.s_addr, ++ memcpy((char *)&sinhim[1].sin_addr.s_addr, ++ (char *)&me.sin_addr.s_addr, + sizeof(struct in_addr)); + } + sinhim[1].sin_addr.s_addr &= +@@ -4197,13 +4197,13 @@ + &melen) < 0) { + err("getsockname"); + } +- bcopy((char *)&me.sin_addr.s_addr, +- (char *)&mc_group.imr_multiaddr.s_addr, ++ memcpy((char *)&mc_group.imr_multiaddr.s_addr, ++ (char *)&me.sin_addr.s_addr, + sizeof(struct in_addr)); + } + else { +- bcopy((char *)&peer.sin_addr.s_addr, +- (char *)&mc_group.imr_multiaddr.s_addr, ++ memcpy((char *)&mc_group.imr_multiaddr.s_addr, ++ (char *)&peer.sin_addr.s_addr, + sizeof(struct in_addr)); + } + mc_group.imr_multiaddr.s_addr &= htonl(0xFFFFFF); +@@ -4330,12 +4330,12 @@ + if(udp) { + strcpy(buf, "BOD0"); + if (multicast) { +- bcopy((char *)&sinhim[1].sin_addr.s_addr, +- (char *)&save_mc.sin_addr.s_addr, +- sizeof(struct in_addr)); +- bcopy((char *)&save_sinhim.sin_addr.s_addr, ++ memcpy((char *)&save_mc.sin_addr.s_addr, + (char *)&sinhim[1].sin_addr.s_addr, + sizeof(struct in_addr)); ++ memcpy((char *)&sinhim[1].sin_addr.s_addr, ++ (char *)&save_sinhim.sin_addr.s_addr, ++ sizeof(struct in_addr)); + } + (void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr start */ + if (two_bod) { +@@ -4344,8 +4344,8 @@ + (void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr start */ + } + if (multicast) { +- bcopy((char *)&save_mc.sin_addr.s_addr, +- (char *)&sinhim[1].sin_addr.s_addr, ++ memcpy((char *)&sinhim[1].sin_addr.s_addr, ++ (char *)&save_mc.sin_addr.s_addr, + sizeof(struct in_addr)); + } + if (timeout) +@@ -4361,7 +4361,7 @@ + fflush(stdout); + } + if (udplossinfo) +- bcopy(&nbytes, buf + 24, 8); ++ memcpy(buf + 24, &nbytes, 8); + if (!udp && interval && !(format & NORETRANS) && + ((retransinfo == 1) || + ((retransinfo >= 2) && +@@ -4372,13 +4372,13 @@ + tmp = 0x5254524Eu; /* "RTRN" */ + else + tmp = 0x48525452u; /* "HRTR" */ +- bcopy(&nretrans, buf + 24, 4); +- bcopy(&tmp, buf + 28, 4); ++ memcpy(buf + 24, &nretrans, 4); ++ memcpy(buf + 28, &tmp, 4); + } + else { + send_retrans = 0; + if (!udp) +- bzero(buf + 24, 8); ++ memset(buf + 24, 0, 8); + } + if (nbuf == INT_MAX) + nbuf = ULLONG_MAX; +@@ -4423,12 +4423,12 @@ + nbytes += buflen; + cnt = 0; + if (udplossinfo) +- bcopy(&nbytes, buf + 24, 8); ++ memcpy(buf + 24, &nbytes, 8); + if (send_retrans) { + nretrans = get_retrans( + fd[stream_idx + 1]); + nretrans -= iretrans; +- bcopy(&nretrans, buf + 24, 4); ++ memcpy(buf + 24, &nretrans, 4); + } + stream_idx++; + stream_idx = stream_idx % nstream; +@@ -4523,8 +4523,8 @@ + nbytes += cnt; + if(udp) { + if (multicast) +- bcopy((char *)&save_sinhim.sin_addr.s_addr, +- (char *)&sinhim[1].sin_addr.s_addr, ++ memcpy((char *)&sinhim[1].sin_addr.s_addr, ++ (char *)&save_sinhim.sin_addr.s_addr, + sizeof(struct in_addr)); + strcpy(buf, "EOD0"); + (void)Nwrite( fd[stream_idx + 1], buf, 4 ); /* rcvr end */ +@@ -4532,7 +4532,7 @@ + } else { + first_read = 1; + need_swap = 0; +- bzero(buf + 24, 8); ++ memset(buf + 24, 0, 8); + if (udp) { + ntbytesc = 0; + got_eod0 = 0; +@@ -4584,7 +4584,7 @@ + * goes off right here */ + if (udplossinfo) { + if (first_read) { +- bcopy(buf + 24, &ntbytesc, ++ memcpy(&ntbytesc, buf + 24, + 8); + first_read = 0; + if (ntbytesc > 0x100000000ull) +@@ -4598,7 +4598,7 @@ + } + } + if (!need_swap) +- bcopy(buf + 24, &ntbytesc, ++ memcpy(&ntbytesc, buf + 24, + 8); + else { + cp1 = (char *)&ntbytesc; +@@ -4627,8 +4627,8 @@ + uint32_t tmp; + + first_read = 0; +- bcopy(buf + 24, &nretrans, 4); +- bcopy(buf + 28, &tmp, 4); ++ memcpy(&nretrans, buf + 24, 4); ++ memcpy(&tmp, buf + 28, 4); + if (tmp == 0x5254524Eu) { + /* "RTRN" */ + retransinfo = 1; +@@ -4661,7 +4661,7 @@ + } + if (read_retrans) { + if (!need_swap) +- bcopy(buf + 24, &nretrans, ++ memcpy(&nretrans, buf + 24, + 4); + else { + cp1 = (char *)&nretrans; +@@ -5327,10 +5327,10 @@ + itimer.it_interval.tv_usec = 0; + setitimer(ITIMER_REAL, &itimer, 0); + signal(SIGALRM, SIG_DFL); +- bzero((char *)&frominet, sizeof(frominet)); +- bzero((char *)&clientaddr, sizeof(clientaddr)); ++ memset((char *)&frominet, 0, sizeof(frominet)); ++ memset((char *)&clientaddr, 0, sizeof(clientaddr)); + #ifdef AF_INET6 +- bzero((char *)&clientaddr6, sizeof(clientaddr)); ++ memset((char *)&clientaddr6, 0, sizeof(clientaddr)); + clientscope6 = 0; + #endif + cput = 0.000001; diff --git a/buildroot/package/nuttcp/Config.in b/buildroot/package/nuttcp/Config.in new file mode 100644 index 0000000..0b5f081 --- /dev/null +++ b/buildroot/package/nuttcp/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_NUTTCP + bool "nuttcp" + depends on BR2_USE_MMU # fork() + help + nuttcp is a TCP/UDP network testing tool, much like iperf + + http://nuttcp.net diff --git a/buildroot/package/nuttcp/nuttcp.hash b/buildroot/package/nuttcp/nuttcp.hash new file mode 100644 index 0000000..88310a3 --- /dev/null +++ b/buildroot/package/nuttcp/nuttcp.hash @@ -0,0 +1,2 @@ +# From http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2009-August/170685.html +sha256 054e96d9d68fe917df6f25fab15c7755bdd480f6420d7d48d9194a1a52378169 nuttcp-6.1.2.tar.bz2 diff --git a/buildroot/package/nuttcp/nuttcp.mk b/buildroot/package/nuttcp/nuttcp.mk new file mode 100644 index 0000000..2636f95 --- /dev/null +++ b/buildroot/package/nuttcp/nuttcp.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# nuttcp +# +################################################################################ + +NUTTCP_VERSION = 6.1.2 +NUTTCP_SITE = http://nuttcp.net/nuttcp +NUTTCP_SOURCE = nuttcp-$(NUTTCP_VERSION).tar.bz2 +NUTTCP_LICENSE = GPL-2.0 +NUTTCP_LICENSE_FILES = LICENSE + +define NUTTCP_BUILD_CMDS + $(MAKE1) CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ + -C $(@D) all +endef + +define NUTTCP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/nuttcp-$(NUTTCP_VERSION) \ + $(TARGET_DIR)/usr/bin/nuttcp +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/nvidia-driver/0001-use-LDFLAGS.patch b/buildroot/package/nvidia-driver/0001-use-LDFLAGS.patch new file mode 100644 index 0000000..7b7df80 --- /dev/null +++ b/buildroot/package/nvidia-driver/0001-use-LDFLAGS.patch @@ -0,0 +1,48 @@ +kernel: use LDFLAGS when linking modules + +Currently, linking module objects is simply using $(LD), assuming that +the default emulation is correct for the current architecture. + +However, that might not be the case when the toolchain default is not +the same as the current arch. For example, if the toolchain defaults to +i386 and is capable of x86_64, and we're targetting x86_64 (or the +opposite), the link would fail because the ld emulation is incorrect: + + .../i686-pc-linux-gnu-ld: Relocatable linking with relocations from + format elf64-x86-64 (.../nvidia-driver-370.23/kernel/nvidia/nv-frontend.o) + to format elf32-i386 (.../nvidia-driver-370.23/kernel/nvidia/nv-interface.o) + is not supported + +Add use of $(LDFLAGS) when doing the link, as the kernel provides the +proper emulation in those. + +Signed-off-by: "Yann E. MORIN" + +--- +Issue reported upstream: + https://devtalk.nvidia.com/default/topic/958653/ + +diff -durN nvidia-driver-370.23.orig/kernel/nvidia/nvidia.Kbuild nvidia-driver-370.23/kernel/nvidia/nvidia.Kbuild +--- nvidia-driver-370.23.orig/kernel/nvidia/nvidia.Kbuild 2016-08-09 01:57:50.000000000 +0200 ++++ nvidia-driver-370.23/kernel/nvidia/nvidia.Kbuild 2016-08-20 12:25:02.780233423 +0200 +@@ -87,7 +87,7 @@ + always += $(NVIDIA_INTERFACE) + + $(obj)/$(NVIDIA_INTERFACE): $(addprefix $(obj)/,$(NVIDIA_OBJECTS)) +- $(LD) -r -o $@ $^ ++ $(LD) $(LDFLAGS) -r -o $@ $^ + + + # +diff -durN nvidia-driver-370.23.orig/kernel/nvidia-modeset/nvidia-modeset.Kbuild nvidia-driver-370.23/kernel/nvidia-modeset/nvidia-modeset.Kbuild +--- nvidia-driver-370.23.orig/kernel/nvidia-modeset/nvidia-modeset.Kbuild 2016-08-09 01:43:19.000000000 +0200 ++++ nvidia-driver-370.23/kernel/nvidia-modeset/nvidia-modeset.Kbuild 2016-08-20 12:25:39.596772662 +0200 +@@ -70,7 +70,7 @@ + always += $(NVIDIA_MODESET_INTERFACE) + + $(obj)/$(NVIDIA_MODESET_INTERFACE): $(addprefix $(obj)/,$(NVIDIA_MODESET_OBJECTS)) +- $(LD) -r -o $@ $^ ++ $(LD) $(LDFLAGS) -r -o $@ $^ + + # + # Register the conftests needed by nvidia-modeset.ko diff --git a/buildroot/package/nvidia-driver/Config.in b/buildroot/package/nvidia-driver/Config.in new file mode 100644 index 0000000..732d925 --- /dev/null +++ b/buildroot/package/nvidia-driver/Config.in @@ -0,0 +1,88 @@ +comment "nvidia-driver needs a glibc toolchain" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_TOOLCHAIN_USES_GLIBC + +config BR2_PACKAGE_NVIDIA_DRIVER + bool "nvidia-driver" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_TOOLCHAIN_USES_GLIBC + help + The binary-only driver blob for NVidia cards. + This is the userland part only. + + http://www.nvidia.com/ + +if BR2_PACKAGE_NVIDIA_DRIVER + +comment "nvidia-driver X.org drivers needs a modular Xorg server" + depends on !BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR + +config BR2_PACKAGE_NVIDIA_DRIVER_XORG + bool "X.org drivers" + default y + depends on BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR + select BR2_PACKAGE_MESA3D_HEADERS + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBEGL_WAYLAND + select BR2_PACKAGE_HAS_LIBGLES + +if BR2_PACKAGE_NVIDIA_DRIVER_XORG + +config BR2_PACKAGE_PROVIDES_LIBGL + default "nvidia-driver" + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "nvidia-driver" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "nvidia-driver" + +config BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS + bool "Install private libraries" + help + Two libraries require special agreement with NVidia to + develop code linking to those libraries: libnvidia-ifr.so + and libnvidia-fbc.so (to grab and encode an OpenGL buffer or + an X framebuffer.) + + Say 'y' here if you plan on running a program that uses + those private libraries. + +endif # BR2_PACKAGE_NVIDIA_DRIVER_XORG + +config BR2_PACKAGE_NVIDIA_DRIVER_CUDA + bool "CUDA support" + +if BR2_PACKAGE_NVIDIA_DRIVER_CUDA + +config BR2_PACKAGE_NVIDIA_DRIVER_OPENCL + bool "OpenCL support" + +config BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS + bool "CUDA MPS server and control" + help + Say 'y' here if you need to run more than one program + doing CUDA at the same time. The MPS server will be + launched automatically when needed. + +endif # BR2_PACKAGE_NVIDIA_DRIVER_CUDA + +comment "nvidia kernel module needs a kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_NVIDIA_DRIVER_MODULE + bool "nvidia kernel module" + depends on BR2_LINUX_KERNEL + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + Build the nvidia.ko kernel module. + + If CUDA support (above) is set, and the target is x86_64, then + this will also build the nvidia-uvm.ko kernel module, which + provides Unified Memory access to the GPU and CPU memories for + CUDA programs. + +endif # BR2_PACKAGE_NVIDIA_DRIVER diff --git a/buildroot/package/nvidia-driver/egl.pc b/buildroot/package/nvidia-driver/egl.pc new file mode 100644 index 0000000..a5aeace --- /dev/null +++ b/buildroot/package/nvidia-driver/egl.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: egl +Description: Nvidia OpenGL library +Version: 1 +Cflags: -I${includedir} +Libs: -L${libdir} -lEGL diff --git a/buildroot/package/nvidia-driver/gl.pc b/buildroot/package/nvidia-driver/gl.pc new file mode 100644 index 0000000..d822763 --- /dev/null +++ b/buildroot/package/nvidia-driver/gl.pc @@ -0,0 +1,11 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: gl +Description: Nvidia OpenGL library +Version: 10.4.2 +Libs: -L${libdir} -lGL -lm -lXext -lX11 -ldl +Cflags: -I${includedir} -DMESA_EGL_NO_X11_HEADERS +glx_tls: no diff --git a/buildroot/package/nvidia-driver/nvidia-driver.hash b/buildroot/package/nvidia-driver/nvidia-driver.hash new file mode 100644 index 0000000..e05b8f0 --- /dev/null +++ b/buildroot/package/nvidia-driver/nvidia-driver.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 3b70587582220ab1102bcb8386f206f89e6b146856af41f16eaa5910e54ef8fd NVIDIA-Linux-x86-384.69.run +sha256 a7b7984fc532be17c262bc4353e279824ae63625d8ae9f1016cb66d199b97650 NVIDIA-Linux-x86_64-384.69.run diff --git a/buildroot/package/nvidia-driver/nvidia-driver.mk b/buildroot/package/nvidia-driver/nvidia-driver.mk new file mode 100644 index 0000000..e566610 --- /dev/null +++ b/buildroot/package/nvidia-driver/nvidia-driver.mk @@ -0,0 +1,196 @@ +################################################################################ +# +# nvidia-driver +# +################################################################################ + +NVIDIA_DRIVER_VERSION = 384.69 +NVIDIA_DRIVER_SUFFIX = $(if $(BR2_x86_64),_64) +NVIDIA_DRIVER_SITE = http://download.nvidia.com/XFree86/Linux-x86$(NVIDIA_DRIVER_SUFFIX)/$(NVIDIA_DRIVER_VERSION) +NVIDIA_DRIVER_SOURCE = NVIDIA-Linux-x86$(NVIDIA_DRIVER_SUFFIX)-$(NVIDIA_DRIVER_VERSION).run +NVIDIA_DRIVER_LICENSE = NVIDIA Software License +NVIDIA_DRIVER_LICENSE_FILES = LICENSE +NVIDIA_DRIVER_REDISTRIBUTE = NO +NVIDIA_DRIVER_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_XORG),y) + +# Since nvidia-driver are binary blobs, the below dependencies are not +# strictly speaking build dependencies of nvidia-driver. However, they +# are build dependencies of packages that depend on nvidia-driver, so +# they should be built prior to those packages, and the only simple +# way to do so is to make nvidia-driver depend on them. +NVIDIA_DRIVER_DEPENDENCIES = mesa3d-headers xlib_libX11 xlib_libXext +NVIDIA_DRIVER_PROVIDES = libgl libegl libgles + +# libGL.so.$(NVIDIA_DRIVER_VERSION) is the legacy libGL.so library; it +# has been replaced with libGL.so.1.0.0. Installing both is technically +# possible, but great care must be taken to ensure they do not conflict, +# so that EGL still works. The legacy library exposes an NVidia-specific +# API, so it should not be needed, except for legacy, binary-only +# applications (in other words: we don't care). +# +# libGL.so.1.0.0 is the new vendor-neutral library, aimed at replacing +# the old libGL.so.$(NVIDIA_DRIVER_VERSION) library. The latter contains +# NVidia extensions (which is deemed bad now), while the former follows +# the newly-introduced vendor-neutral "dispatching" API/ABI: +# https://github.com/aritger/linux-opengl-abi-proposal/blob/master/linux-opengl-abi-proposal.txt +# However, this is not very usefull to us, as we don't support multiple +# GL providers at the same time on the system, which this proposal is +# aimed at supporting. +# +# So we only install the legacy library for now. +NVIDIA_DRIVER_LIBS_GL = \ + libGLX.so.0 \ + libGL.so.$(NVIDIA_DRIVER_VERSION) \ + libGLX_nvidia.so.$(NVIDIA_DRIVER_VERSION) + +NVIDIA_DRIVER_LIBS_EGL = \ + libEGL.so.1 \ + libGLdispatch.so.0 \ + libEGL_nvidia.so.$(NVIDIA_DRIVER_VERSION) + +NVIDIA_DRIVER_LIBS_GLES = \ + libGLESv1_CM.so.1 \ + libGLESv2.so.2 \ + libGLESv1_CM_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ + libGLESv2_nvidia.so.$(NVIDIA_DRIVER_VERSION) + +NVIDIA_DRIVER_LIBS_MISC = \ + libnvidia-eglcore.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-egl-wayland.so.1.0.1 \ + libnvidia-glcore.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-glsi.so.$(NVIDIA_DRIVER_VERSION) \ + tls/libnvidia-tls.so.$(NVIDIA_DRIVER_VERSION) \ + libvdpau_nvidia.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-ml.so.$(NVIDIA_DRIVER_VERSION) + +NVIDIA_DRIVER_LIBS = \ + $(NVIDIA_DRIVER_LIBS_GL) \ + $(NVIDIA_DRIVER_LIBS_EGL) \ + $(NVIDIA_DRIVER_LIBS_GLES) \ + $(NVIDIA_DRIVER_LIBS_MISC) + +# Install the gl.pc file +define NVIDIA_DRIVER_INSTALL_GL_DEV + $(INSTALL) -D -m 0644 $(@D)/libGL.la $(STAGING_DIR)/usr/lib/libGL.la + $(SED) 's:__GENERATED_BY__:Buildroot:' $(STAGING_DIR)/usr/lib/libGL.la + $(SED) 's:__LIBGL_PATH__:/usr/lib:' $(STAGING_DIR)/usr/lib/libGL.la + $(SED) 's:-L[^[:space:]]\+::' $(STAGING_DIR)/usr/lib/libGL.la + $(INSTALL) -D -m 0644 package/nvidia-driver/gl.pc $(STAGING_DIR)/usr/lib/pkgconfig/gl.pc + $(INSTALL) -D -m 0644 package/nvidia-driver/egl.pc $(STAGING_DIR)/usr/lib/pkgconfig/egl.pc +endef + +# Those libraries are 'private' libraries requiring an agreement with +# NVidia to develop code for those libs. There seems to be no restriction +# on using those libraries (e.g. if the user has such an agreement, or +# wants to run a third-party program developped under such an agreement). +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_PRIVATE_LIBS),y) +NVIDIA_DRIVER_LIBS += \ + libnvidia-ifr.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-fbc.so.$(NVIDIA_DRIVER_VERSION) +endif + +# We refer to the destination path; the origin file has no directory component +NVIDIA_DRIVER_X_MODS = \ + drivers/nvidia_drv.so \ + extensions/libglx.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-wfb.so.$(NVIDIA_DRIVER_VERSION) + +endif # X drivers + +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA),y) +NVIDIA_DRIVER_LIBS += \ + libcuda.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-compiler.so.$(NVIDIA_DRIVER_VERSION) \ + libnvcuvid.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-fatbinaryloader.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-ptxjitcompiler.so.$(NVIDIA_DRIVER_VERSION) \ + libnvidia-encode.so.$(NVIDIA_DRIVER_VERSION) +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_CUDA_PROGS),y) +NVIDIA_DRIVER_PROGS = nvidia-cuda-mps-control nvidia-cuda-mps-server +endif +endif + +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_OPENCL),y) +NVIDIA_DRIVER_LIBS += \ + libOpenCL.so.1.0.0 \ + libnvidia-opencl.so.$(NVIDIA_DRIVER_VERSION) +endif + +# Build and install the kernel modules if needed +ifeq ($(BR2_PACKAGE_NVIDIA_DRIVER_MODULE),y) + +NVIDIA_DRIVER_MODULES = nvidia nvidia-modeset nvidia-drm +ifeq ($(BR2_x86_64),y) +NVIDIA_DRIVER_MODULES += nvidia-uvm +endif + +# They can't do everything like everyone. They need those variables, +# because they don't recognise the usual variables set by the kernel +# build system. We also need to tell them what modules to build. +NVIDIA_DRIVER_MODULE_MAKE_OPTS = \ + NV_KERNEL_SOURCES="$(LINUX_DIR)" \ + NV_KERNEL_OUTPUT="$(LINUX_DIR)" \ + NV_KERNEL_MODULES="$(NVIDIA_DRIVER_MODULES)" + +NVIDIA_DRIVER_MODULE_SUBDIRS = kernel + +$(eval $(kernel-module)) + +endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == y + +# The downloaded archive is in fact an auto-extract script. So, it can run +# virtually everywhere, and it is fine enough to provide useful options. +# Except it can't extract into an existing (even empty) directory. +define NVIDIA_DRIVER_EXTRACT_CMDS + $(SHELL) $(DL_DIR)/$(NVIDIA_DRIVER_SOURCE) --extract-only --target \ + $(@D)/tmp-extract + chmod u+w -R $(@D) + mv $(@D)/tmp-extract/* $(@D)/tmp-extract/.manifest $(@D) + rm -rf $(@D)/tmp-extract +endef + +# Helper to install libraries +# $1: destination directory (target or staging) +# +# For all libraries, we install them and create a symlink using +# their SONAME, so we can link to them at runtime; we also create +# the no-version symlink, so we can link to them at build time. +define NVIDIA_DRIVER_INSTALL_LIBS + $(foreach lib,$(NVIDIA_DRIVER_LIBS),\ + $(INSTALL) -D -m 0644 $(@D)/$(lib) $(1)/usr/lib/$(notdir $(lib)) + libsoname="$$( $(TARGET_READELF) -d "$(@D)/$(lib)" \ + |sed -r -e '/.*\(SONAME\).*\[(.*)\]$$/!d; s//\1/;' )"; \ + if [ -n "$${libsoname}" -a "$${libsoname}" != "$(notdir $(lib))" ]; then \ + ln -sf $(notdir $(lib)) \ + $(1)/usr/lib/$${libsoname}; \ + fi + baseso=$(firstword $(subst .,$(space),$(notdir $(lib)))).so; \ + if [ -n "$${baseso}" -a "$${baseso}" != "$(notdir $(lib))" ]; then \ + ln -sf $(notdir $(lib)) $(1)/usr/lib/$${baseso}; \ + fi + ) +endef + +# For staging, install libraries and development files +define NVIDIA_DRIVER_INSTALL_STAGING_CMDS + $(call NVIDIA_DRIVER_INSTALL_LIBS,$(STAGING_DIR)) + $(NVIDIA_DRIVER_INSTALL_GL_DEV) +endef + +# For target, install libraries and X.org modules +define NVIDIA_DRIVER_INSTALL_TARGET_CMDS + $(call NVIDIA_DRIVER_INSTALL_LIBS,$(TARGET_DIR)) + $(foreach m,$(NVIDIA_DRIVER_X_MODS), \ + $(INSTALL) -D -m 0644 $(@D)/$(notdir $(m)) \ + $(TARGET_DIR)/usr/lib/xorg/modules/$(m) + ) + $(foreach p,$(NVIDIA_DRIVER_PROGS), \ + $(INSTALL) -D -m 0755 $(@D)/$(p) \ + $(TARGET_DIR)/usr/bin/$(p) + ) + $(NVIDIA_DRIVER_INSTALL_KERNEL_MODULE) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/nvidia-tegra23/Config.in b/buildroot/package/nvidia-tegra23/Config.in new file mode 100644 index 0000000..9c9fd19 --- /dev/null +++ b/buildroot/package/nvidia-tegra23/Config.in @@ -0,0 +1,38 @@ +menuconfig BR2_PACKAGE_NVIDIA_TEGRA23 + bool "nvidia-tegra23" + depends on BR2_cortex_a9 + depends on BR2_ARM_EABIHF && BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_14 + help + Install NVidia proprietary blobs to drive Tegra2 or Tegra3 + GPUs found in some mobile-targeted ARM SoCs. + +if BR2_PACKAGE_NVIDIA_TEGRA23 + +choice + prompt "Tegra platform" + help + Select the SOC platform. + +config BR2_PACKAGE_NVIDIA_TEGRA23_TEGRA2 + bool "Tegra 2" + help + NVIDIA Tegra 2 is a dual-core Cortex-A9 without NEON. + +config BR2_PACKAGE_NVIDIA_TEGRA23_TEGRA3 + bool "Tegra 3" + depends on BR2_ARM_CPU_HAS_NEON + help + NVIDIA Tegra 3 is a quad-core Cortex-A9 with NEON. + +endchoice + +source "package/nvidia-tegra23/nvidia-tegra23-binaries/Config.in" +source "package/nvidia-tegra23/nvidia-tegra23-codecs/Config.in" +endif + +comment "nvidia-tegra23 needs Xorg <= 1.14 and a glibc toolchain w/ EABIhf" + depends on BR2_cortex_a9 + depends on !BR2_ARM_EABIHF || !BR2_TOOLCHAIN_USES_GLIBC \ + || !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_14 diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/Config.in b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/Config.in new file mode 100644 index 0000000..3494c5b --- /dev/null +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES + bool "nvidia-tegra23 binaries" + select BR2_PACKAGE_MESA3D_HEADERS + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_LIBOPENMAX + help + Those packages provide libraries, drivers and firmware that + comes from NVIDIA Linux For Tegra. + + https://developer.nvidia.com/linux-tegra + +if BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "nvidia-tegra23-binaries" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "nvidia-tegra23-binaries" + +config BR2_PACKAGE_PROVIDES_LIBOPENMAX + default "nvidia-tegra23-binaries" + +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS + bool "GStreamer 0.10.x plugins" + depends on BR2_PACKAGE_GSTREAMER # Run-time only + select BR2_PACKAGE_XLIB_LIBXV + help + GStreamer 0.10.x plugins + +config BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_NV_SAMPLE_APPS + bool "NVIDIA multimedia sample apps" + depends on BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS + help + nvgstplayer and nvgstcapture multimedia test applications. + +comment "GStreamer 0.10.x plugins need GStreamer 0.10" + depends on !BR2_PACKAGE_GSTREAMER + +endif diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/egl.pc b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/egl.pc new file mode 100644 index 0000000..3af7eec --- /dev/null +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/egl.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=/usr/lib +includedir=/usr/include + +Name: egl +Description: EGL implementation +Version: 1 +Cflags: -I${includedir}/EGL +Libs: -L${libdir} -lEGL diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/gles.pc b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/gles.pc new file mode 100644 index 0000000..91387c9 --- /dev/null +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/gles.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=/usr/lib +includedir=/usr/include + +Name: glesv2 +Description: OpenGL ES 1.1 implementation +Version: 1.1 +Cflags: -I${includedir}/GLES +Libs: -L${libdir} -lGLESv1_CM diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/glesv2.pc b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/glesv2.pc new file mode 100644 index 0000000..356a1cb --- /dev/null +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/glesv2.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=/usr/lib +includedir=/usr/include + +Name: glesv2 +Description: OpenGL ES 2 implementation +Version: 2 +Cflags: -I${includedir}/GLESv2 +Libs: -L${libdir} -lGLESv2 diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.hash b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.hash new file mode 100644 index 0000000..50c3cda --- /dev/null +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.hash @@ -0,0 +1,3 @@ +# From https://developer.nvidia.com/linux-tegra-rel-16 +sha1 295dcd63b2f122c2d99f07fcc083db9adb8ac178 Tegra20_Linux_R16.5_armhf.tbz2 +sha1 6be645c20d81d518856bc8520ef4c2472d57eaef Tegra30_Linux_R16.5_armhf.tbz2 diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.mk b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.mk new file mode 100644 index 0000000..9b153b0 --- /dev/null +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23-binaries/nvidia-tegra23-binaries.mk @@ -0,0 +1,95 @@ +################################################################################ +# +# nvidia-tegra23-binaries +# +################################################################################ + +NVIDIA_TEGRA23_BINARIES_VERSION = $(NVIDIA_TEGRA23_VERSION) +NVIDIA_TEGRA23_BINARIES_SITE = $(NVIDIA_TEGRA23_SITE) +NVIDIA_TEGRA23_BINARIES_SOURCE = $(NVIDIA_TEGRA23_BASE)_R$(NVIDIA_TEGRA23_BINARIES_VERSION)_armhf.tbz2 + +NVIDIA_TEGRA23_BINARIES_LICENSE = License For Customer Use of NVIDIA Software +NVIDIA_TEGRA23_BINARIES_LICENSE_FILES = nv_tegra/LICENSE +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS),y) +NVIDIA_TEGRA23_BINARIES_LICENSE += LGPL-2.1 +NVIDIA_TEGRA23_BINARIES_LICENSE_FILES += nv_tegra/nv_sample_apps/LICENSE.gst-openmax +endif + +NVIDIA_TEGRA23_BINARIES_INSTALL_STAGING = YES + +# Those are not really needed to build nvidia-tegra23-binaries, but +# will be needed by packages who link against libraries provided by +# nvidia-tegra23-binaries. + +NVIDIA_TEGRA23_BINARIES_DEPENDENCIES = mesa3d-headers \ + xlib_libX11 xlib_libXext + +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS),y) +NVIDIA_TEGRA23_BINARIES_DEPENDENCIES += xlib_libXv +endif + +NVIDIA_TEGRA23_BINARIES_PROVIDES = libegl libgles libopenmax + +NVIDIA_TEGRA23_BINARIES_DRV = \ + nv_tegra/nvidia_drivers/usr/lib/xorg/modules/drivers/tegra_drv.abi$(BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI).so + +define NVIDIA_TEGRA23_BINARIES_EXTRACT_FURTHER + $(INSTALL) -d $(@D)/nv_tegra/nvidia_drivers + $(call suitable-extractor,$(@D)/nv_tegra/nvidia_drivers.tbz2) \ + $(@D)/nv_tegra/nvidia_drivers.tbz2 | \ + $(TAR) --strip-components=0 -C $(@D)/nv_tegra/nvidia_drivers/ $(TAR_OPTIONS) - + $(INSTALL) -d $(@D)/nv_tegra/nv_sample_apps/nvgstapps + $(call suitable-extractor,$(@D)/nv_tegra/nv_sample_apps/nvgstapps.tbz2) \ + $(@D)/nv_tegra/nv_sample_apps/nvgstapps.tbz2 | \ + $(TAR) --strip-components=0 -C $(@D)/nv_tegra/nv_sample_apps/nvgstapps/ $(TAR_OPTIONS) - +endef +NVIDIA_TEGRA23_BINARIES_POST_EXTRACT_HOOKS += NVIDIA_TEGRA23_BINARIES_EXTRACT_FURTHER + +define NVIDIA_TEGRA23_BINARIES_INSTALL_LIBS + mkdir -p $(1)/usr/lib + cp -dpfr $(@D)/nv_tegra/nvidia_drivers/usr/lib/*.so $(1)/usr/lib/ + (cd $(1)/usr/lib; \ + ln -sf libGLESv2.so.2 libGLESv2.so; \ + ln -sf libGLESv1_CM.so.1 libGLESv1_CM.so; \ + ln -sf libEGL.so.1 libEGL.so \ + ) +endef + +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS),y) +define NVIDIA_TEGRA23_BINARIES_INSTALL_GST_PLUGINS + mkdir -p $(1)/usr/lib/gstreamer-0.10/ + cp -dpfr $(@D)/nv_tegra/nv_sample_apps/nvgstapps/usr/lib/gstreamer-0.10/*.so \ + $(1)/usr/lib/gstreamer-0.10/ +endef +endif + +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_NV_SAMPLE_APPS),y) +define NVIDIA_TEGRA23_BINARIES_INSTALL_APPS + mkdir -p $(TARGET_DIR)/usr/bin/ + cp -dpfr $(@D)/nv_tegra/nv_sample_apps/nvgstapps/usr/bin/* \ + $(TARGET_DIR)/usr/bin/ +endef +endif + +define NVIDIA_TEGRA23_BINARIES_INSTALL_STAGING_CMDS + $(call NVIDIA_TEGRA23_BINARIES_INSTALL_LIBS,$(STAGING_DIR)) + mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig/ + cp -dpfr package/nvidia-tegra23/nvidia-tegra23-binaries/*.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/ + $(call NVIDIA_TEGRA23_BINARIES_INSTALL_GST_PLUGINS,$(STAGING_DIR)) +endef + +define NVIDIA_TEGRA23_BINARIES_INSTALL_TARGET_CMDS + $(call NVIDIA_TEGRA23_BINARIES_INSTALL_LIBS,$(TARGET_DIR)) + mkdir -p $(TARGET_DIR)/lib/firmware/ + cp -dpfr $(@D)/nv_tegra/nvidia_drivers/lib/firmware/*.bin \ + $(TARGET_DIR)/lib/firmware/ + $(INSTALL) -D -m 0644 $(@D)/nv_tegra/nvidia_drivers/etc/nv_tegra_release \ + $(TARGET_DIR)/etc/nv_tegra_release + $(INSTALL) -D -m 0644 $(@D)/$(NVIDIA_TEGRA23_BINARIES_DRV) \ + $(TARGET_DIR)/usr/lib/xorg/modules/drivers/tegra_drv.so + $(call NVIDIA_TEGRA23_BINARIES_INSTALL_GST_PLUGINS,$(TARGET_DIR)) + $(NVIDIA_TEGRA23_BINARIES_INSTALL_APPS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/Config.in b/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/Config.in new file mode 100644 index 0000000..df9de69 --- /dev/null +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_NVIDIA_TEGRA23_CODECS + bool "nvidia-tegra23 codecs" + depends on BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES + help + NVIDIA Tegra restricted codecs from Linux For Tegra 16.5. + + https://developer.nvidia.com/linux-tegra-rel-16 diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.hash b/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.hash new file mode 100644 index 0000000..9b5c614 --- /dev/null +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.hash @@ -0,0 +1,3 @@ +# From https://developer.nvidia.com/linux-tegra-rel-16 +sha1 540e89d5462537cd59c8a86efdb786b3b4310868 Tegra20_Linux-codecs_R16.5_armhf.tbz2 +sha1 3637efe808f25594e3cdc2756aef6e0274ab70f4 Tegra30_Linux-codecs_R16.5_armhf.tbz2 diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk b/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk new file mode 100644 index 0000000..5514643 --- /dev/null +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# nvidia-tegra23-codecs +# +################################################################################ + +NVIDIA_TEGRA23_CODECS_VERSION = $(NVIDIA_TEGRA23_VERSION) +NVIDIA_TEGRA23_CODECS_SOURCE = $(NVIDIA_TEGRA23_BASE)-codecs_R$(NVIDIA_TEGRA23_CODECS_VERSION)_armhf.tbz2 +NVIDIA_TEGRA23_CODECS_SITE = $(NVIDIA_TEGRA23_SITE) +NVIDIA_TEGRA23_CODECS_LICENSE = NVIDIA(r) Tegra(r) Software License Agreement +NVIDIA_TEGRA23_CODECS_LICENSE_FILES = Tegra_Software_License_Agreement-Tegra-Linux-codecs.txt +NVIDIA_TEGRA23_CODECS_REDISTRIBUTE = NO + +# The archive contains an archive with the firmware codecs +define NVIDIA_TEGRA23_CODECS_EXTRACT_CMDS + $(INSTALL) -d $(@D) + $(call suitable-extractor,$(NVIDIA_TEGRA23_CODECS_SOURCE)) \ + $(DL_DIR)/$(NVIDIA_TEGRA23_CODECS_SOURCE) | \ + $(TAR) --strip-components=0 -C $(@D) $(TAR_OPTIONS) - + $(INSTALL) -d $(@D)/restricted_codecs + $(call suitable-extractor,$(@D)/restricted_codecs.tbz2) \ + $(@D)/restricted_codecs.tbz2 | \ + $(TAR) --strip-components=0 -C $(@D)/restricted_codecs/ $(TAR_OPTIONS) - +endef + +define NVIDIA_TEGRA23_CODECS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware/ + cp -dpfr $(@D)/restricted_codecs/lib/firmware/*.axf \ + $(TARGET_DIR)/lib/firmware/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23.mk b/buildroot/package/nvidia-tegra23/nvidia-tegra23.mk new file mode 100644 index 0000000..b97d0cc --- /dev/null +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# nvidia-tegra23 +# +################################################################################ + +NVIDIA_TEGRA23_VERSION = 16.5 + +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_TEGRA2),y) +NVIDIA_TEGRA23_SITE = http://developer.download.nvidia.com/mobile/tegra/l4t/r16.5.0/ventana_release_armhf +NVIDIA_TEGRA23_BASE = Tegra20_Linux +endif +ifeq ($(BR2_PACKAGE_NVIDIA_TEGRA23_TEGRA3),y) +NVIDIA_TEGRA23_SITE = http://developer.download.nvidia.com/mobile/tegra/l4t/r16.5.0/cardhu_release_armhf +NVIDIA_TEGRA23_BASE = Tegra30_Linux +endif + +include $(sort $(wildcard package/nvidia-tegra23/*/*.mk)) diff --git a/buildroot/package/nvme/0001-Makefile-allow-linker-override-for-cross-uuid-test.patch b/buildroot/package/nvme/0001-Makefile-allow-linker-override-for-cross-uuid-test.patch new file mode 100644 index 0000000..dc1c01a --- /dev/null +++ b/buildroot/package/nvme/0001-Makefile-allow-linker-override-for-cross-uuid-test.patch @@ -0,0 +1,34 @@ +From f926559acd1beb74dc5dc9b0e414b087110a251f Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Wed, 9 Aug 2017 09:43:12 +0300 +Subject: [PATCH] Makefile: allow linker override for cross uuid test + +The test to determine whether libuuid is installed uses the host 'ld' utility. +This breaks when cross compiling, since target libraries are often different +than host libraries. + +Use $(LD) instead. This allows to easily use the cross compiler linker. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/linux-nvme/nvme-cli/pull/216 + + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 3f1d9aaa890d..cc74bdd6c3e6 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,7 +1,7 @@ + CFLAGS ?= -O2 -g -Wall -Werror + CFLAGS += -std=gnu99 + CPPFLAGS += -D_GNU_SOURCE -D__CHECK_ENDIAN__ +-LIBUUID = $(shell ld -o /dev/null -luuid >/dev/null 2>&1; echo $$?) ++LIBUUID = $(shell $(LD) -o /dev/null -luuid >/dev/null 2>&1; echo $$?) + NVME = nvme + INSTALL ?= install + DESTDIR = +-- +2.13.2 + diff --git a/buildroot/package/nvme/Config.in b/buildroot/package/nvme/Config.in new file mode 100644 index 0000000..dd8655f --- /dev/null +++ b/buildroot/package/nvme/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_NVME + bool "nvme" + help + NVME utility, a utility for interacting with standard NVM + Express (optimized PCI Express SSD interface) devices. + + https://github.com/linux-nvme/nvme-cli diff --git a/buildroot/package/nvme/nvme.hash b/buildroot/package/nvme/nvme.hash new file mode 100644 index 0000000..92e2bc0 --- /dev/null +++ b/buildroot/package/nvme/nvme.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 52eb45c9ef5a529580a3f6f9e02c067695675ac01b8ab8b8e0398c62e8a8646d nvme-v1.3.tar.gz diff --git a/buildroot/package/nvme/nvme.mk b/buildroot/package/nvme/nvme.mk new file mode 100644 index 0000000..8eab1da --- /dev/null +++ b/buildroot/package/nvme/nvme.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# nvme +# +################################################################################ + +NVME_VERSION = v1.3 +NVME_SITE = $(call github,linux-nvme,nvme-cli,$(NVME_VERSION)) +NVME_LICENSE = GPL-2.0+ +NVME_LICENSE_FILES = LICENSE + +define NVME_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define NVME_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \ + PREFIX=/usr install-bin +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/obsidian-cursors/Config.in b/buildroot/package/obsidian-cursors/Config.in new file mode 100644 index 0000000..49ec310 --- /dev/null +++ b/buildroot/package/obsidian-cursors/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_OBSIDIAN_CURSORS + bool "obsidian-cursors" + help + Obsidian Cursors is a shiny and clean cursor set. + + http://kde-look.org/content/show.php/Obsidian+Cursors?content=73135 diff --git a/buildroot/package/obsidian-cursors/obsidian-cursors.hash b/buildroot/package/obsidian-cursors/obsidian-cursors.hash new file mode 100644 index 0000000..8f1775e --- /dev/null +++ b/buildroot/package/obsidian-cursors/obsidian-cursors.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3d38fe875f6feae8b7772e02cfda530fcf669479807915cd2c12c149da17cfb9 73135-Obsidian.tar.bz2 diff --git a/buildroot/package/obsidian-cursors/obsidian-cursors.mk b/buildroot/package/obsidian-cursors/obsidian-cursors.mk new file mode 100644 index 0000000..87a8d62 --- /dev/null +++ b/buildroot/package/obsidian-cursors/obsidian-cursors.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# obsidian-cursors +# +################################################################################ + +OBSIDIAN_CURSORS_VERSION = 1.0 +OBSIDIAN_CURSORS_SITE = http://kde-look.org/CONTENT/content-files +OBSIDIAN_CURSORS_SOURCE = 73135-Obsidian.tar.bz2 +OBSIDIAN_CURSORS_LICENSE = GPL + +define OBSIDIAN_CURSORS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/cursors/xorg-x11/Obsidian + cp -a $(@D)/cursors \ + $(TARGET_DIR)/usr/share/cursors/xorg-x11/Obsidian +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ocf-linux/ocf-linux.hash b/buildroot/package/ocf-linux/ocf-linux.hash new file mode 100644 index 0000000..0bd0ea1 --- /dev/null +++ b/buildroot/package/ocf-linux/ocf-linux.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 5113609d2c2c43fde962bec1238fe5a81211a751ebb0337b54a9804d40cfef53 ocf-linux-20120127.tar.gz diff --git a/buildroot/package/ocf-linux/ocf-linux.mk b/buildroot/package/ocf-linux/ocf-linux.mk new file mode 100644 index 0000000..01854fa --- /dev/null +++ b/buildroot/package/ocf-linux/ocf-linux.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# ocf-linux +# +################################################################################ + +OCF_LINUX_VERSION = 20120127 +OCF_LINUX_SITE = http://downloads.sourceforge.net/project/ocf-linux/ocf-linux/$(OCF_LINUX_VERSION) +OCF_LINUX_INSTALL_STAGING = YES + +OCF_LINUX_PROVIDES = cryptodev + +OCF_LINUX_MODULE_SUBDIRS = ocf +OCF_LINUX_MODULE_MAKE_OPTS = \ + CONFIG_OCF_OCF=m \ + CONFIG_OCF_CRYPTOSOFT=m \ + CONFIG_OCF_BENCH=m \ + CONFIG_OCF_OCFNULL=m + +define OCF_LINUX_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 644 $(@D)/ocf/cryptodev.h \ + $(STAGING_DIR)/usr/include/crypto/cryptodev.h +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/ocrad/Config.in b/buildroot/package/ocrad/Config.in new file mode 100644 index 0000000..38d37c6 --- /dev/null +++ b/buildroot/package/ocrad/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_OCRAD + bool "ocrad" + depends on BR2_INSTALL_LIBSTDCPP + help + GNU Ocrad is an OCR (Optical Character Recognition) program + based on a feature extraction method. + It reads images in pbm (bitmap), pgm (greyscale) or + ppm (color) formats and produces text in byte (8-bit) or + UTF-8 formats. + + http://www.gnu.org/software/ocrad/ + +comment "ocrad needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/ocrad/ocrad.hash b/buildroot/package/ocrad/ocrad.hash new file mode 100644 index 0000000..5f093d2 --- /dev/null +++ b/buildroot/package/ocrad/ocrad.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 c383d37869baa0990d38d38836d4d567e9e2862aa0cd704868b62dafeac18e3c ocrad-0.26.tar.lz diff --git a/buildroot/package/ocrad/ocrad.mk b/buildroot/package/ocrad/ocrad.mk new file mode 100644 index 0000000..94020d2 --- /dev/null +++ b/buildroot/package/ocrad/ocrad.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# ocrad +# +################################################################################ + +OCRAD_VERSION = 0.26 +OCRAD_SOURCE = ocrad-$(OCRAD_VERSION).tar.lz +OCRAD_SITE = $(BR2_GNU_MIRROR)/ocrad +OCRAD_LICENSE = GPL-3.0+ +OCRAD_LICENSE_FILES = COPYING +OCRAD_INSTALL_STAGING = YES + +# This is not a true autotools package. +define OCRAD_CONFIGURE_CMDS + cd $(@D) && \ + $(TARGET_MAKE_ENV) ./configure --prefix=/usr --sysconfdir=/etc $(TARGET_CONFIGURE_OPTS) +endef + +define OCRAD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define OCRAD_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define OCRAD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/odhcp6c/Config.in b/buildroot/package/odhcp6c/Config.in new file mode 100644 index 0000000..97ea4b4 --- /dev/null +++ b/buildroot/package/odhcp6c/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ODHCP6C + bool "odhcp6c" + depends on BR2_USE_MMU # fork() + help + odhcp6c is a minimal DHCPv6 and RA-client for use in + embedded Linux systems, especially routers. + + https://github.com/sbyx/odhcp6c diff --git a/buildroot/package/odhcp6c/odhcp6c.hash b/buildroot/package/odhcp6c/odhcp6c.hash new file mode 100644 index 0000000..688d77d --- /dev/null +++ b/buildroot/package/odhcp6c/odhcp6c.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d84a713010865215301b4186c7b5368c9f006e6d3b9b52b99bd25e2d9e7a1dfc odhcp6c-7533a6243dc3ac5a747cf6ccbc4d0539dafd3e07.tar.gz diff --git a/buildroot/package/odhcp6c/odhcp6c.mk b/buildroot/package/odhcp6c/odhcp6c.mk new file mode 100644 index 0000000..31867d7 --- /dev/null +++ b/buildroot/package/odhcp6c/odhcp6c.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# odhcp6c +# +################################################################################ + +ODHCP6C_VERSION = 7533a6243dc3ac5a747cf6ccbc4d0539dafd3e07 +ODHCP6C_SITE = $(call github,sbyx,odhcp6c,$(ODHCP6C_VERSION)) +ODHCP6C_LICENSE = GPL-2.0 +ODHCP6C_LICENSE_FILES = COPYING + +define ODHCP6C_INSTALL_SCRIPT + $(INSTALL) -m 0755 -D $(@D)/odhcp6c-example-script.sh \ + $(TARGET_DIR)/usr/sbin/odhcp6c-update +endef + +ODHCP6C_POST_INSTALL_TARGET_HOOKS += ODHCP6C_INSTALL_SCRIPT + +$(eval $(cmake-package)) diff --git a/buildroot/package/odhcploc/Config.in b/buildroot/package/odhcploc/Config.in new file mode 100644 index 0000000..74bf363 --- /dev/null +++ b/buildroot/package/odhcploc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_ODHCPLOC + bool "odhcploc" + help + Open DHCP Locate (ODHCPLoc) is program to locate and + display active DHCP servers on a subnet. + Can be used to scan for rogue DHCP servers. + + http://odhcploc.sourceforge.net/ diff --git a/buildroot/package/odhcploc/odhcploc.hash b/buildroot/package/odhcploc/odhcploc.hash new file mode 100644 index 0000000..201339f --- /dev/null +++ b/buildroot/package/odhcploc/odhcploc.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 b0360a3aece8a29d131531da7bfc36d57c30c6eed30ff1ea360f7cccea1d62d7 odhcploc-20111021.tar.gz diff --git a/buildroot/package/odhcploc/odhcploc.mk b/buildroot/package/odhcploc/odhcploc.mk new file mode 100644 index 0000000..bf4227a --- /dev/null +++ b/buildroot/package/odhcploc/odhcploc.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# odhcploc +# +################################################################################ + +ODHCPLOC_VERSION = 20111021 +ODHCPLOC_SITE = http://downloads.sourceforge.net/project/odhcploc/$(ODHCPLOC_VERSION) +ODHCPLOC_LICENSE = ISC +ODHCPLOC_LICENSE_FILES = COPYING + +define ODHCPLOC_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define ODHCPLOC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=/usr DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/odroid-mali/Config.in b/buildroot/package/odroid-mali/Config.in new file mode 100644 index 0000000..1c31c2d --- /dev/null +++ b/buildroot/package/odroid-mali/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_ODROID_MALI + bool "odroid-mali" + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_aarch64 || BR2_ARM_EABIHF + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_ODROID_SCRIPTS # runtime + help + Install the ARM Mali drivers for odroidc2 based systems. + + https://github.com/mdrjr/c2_mali + +if BR2_PACKAGE_ODROID_MALI + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "odroid-mali" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "odroid-mali" + +endif + +config BR2_PACKAGE_ODROID_MALI_X11 + bool + depends on BR2_aarch64 # No 32 bit version available + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + +comment "odroid-mali needs a glibc toolchain" + depends on BR2_aarch64 || BR2_ARM_EABIHF + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/odroid-mali/odroid-mali.hash b/buildroot/package/odroid-mali/odroid-mali.hash new file mode 100644 index 0000000..b71ebab --- /dev/null +++ b/buildroot/package/odroid-mali/odroid-mali.hash @@ -0,0 +1,2 @@ +# Locally computed hash +sha256 6c85e96f3372c24c6497f2a1cbea867a8dbf3a7b3edd736802c762176006aec6 odroid-mali-4f8a541693fee5fdcaa162a7fd8922861a4ba0a9.tar.gz diff --git a/buildroot/package/odroid-mali/odroid-mali.mk b/buildroot/package/odroid-mali/odroid-mali.mk new file mode 100644 index 0000000..86215a1 --- /dev/null +++ b/buildroot/package/odroid-mali/odroid-mali.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# odroid-mali +# +################################################################################ + +ODROID_MALI_VERSION = 4f8a541693fee5fdcaa162a7fd8922861a4ba0a9 +ODROID_MALI_SITE = $(call github,mdrjr,c2_mali,$(ODROID_MALI_VERSION)) +ODROID_MALI_LICENSE = Hardkernel EULA +ODROID_MALI_LICENSE_FILES = README.md + +ODROID_MALI_INSTALL_STAGING = YES +ODROID_MALI_PROVIDES = libegl libgles + +ifeq ($(BR2_PACKAGE_ODROID_MALI_X11),y) +ODROID_MALI_HEADERS_SUBDIR = x11/mali_headers/ +ODROID_MALI_LIBS_SUBDIR = x11/mali_libs/ +# The X11 blobs are linked against those libraries, and the headers +# include headers from those libraries +ODROID_MALI_DEPENDENCIES += \ + libdrm xlib_libX11 xlib_libXdamage \ + xlib_libXext xlib_libXfixes +else +define ODROID_MALI_FIX_EGL_PC + $(SED) "s/Cflags: /Cflags: -DMESA_EGL_NO_X11_HEADERS /" \ + $(STAGING_DIR)/usr/lib/pkgconfig/egl.pc +endef +ODROID_MALI_HEADERS_SUBDIR = fbdev/mali_headers/ +ifeq ($(BR2_aarch64),y) +ODROID_MALI_LIBS_SUBDIR = fbdev/mali_libs/ +else +ODROID_MALI_LIBS_SUBDIR = fbdev/32bit_libs/ +endif +endif + +define ODROID_MALI_INSTALL_LIBS + cp -dpfr $(@D)/$(ODROID_MALI_LIBS_SUBDIR)/lib* $(1)/usr/lib/ +endef + +define ODROID_MALI_INSTALL_STAGING_CMDS + $(call ODROID_MALI_INSTALL_LIBS,$(STAGING_DIR)) + mkdir -p $(STAGING_DIR)/usr/lib/pkgconfig + cp -dpfr $(@D)/pkgconfig/*.pc $(STAGING_DIR)/usr/lib/pkgconfig/ + cp -dpfr $(@D)/$(ODROID_MALI_HEADERS_SUBDIR)/* $(STAGING_DIR)/usr/include + $(ODROID_MALI_FIX_EGL_PC) +endef + +define ODROID_MALI_INSTALL_TARGET_CMDS + $(call ODROID_MALI_INSTALL_LIBS,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/odroid-scripts/Config.in b/buildroot/package/odroid-scripts/Config.in new file mode 100644 index 0000000..c07c3a4 --- /dev/null +++ b/buildroot/package/odroid-scripts/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_ODROID_SCRIPTS + bool "odroid-scripts" + depends on BR2_aarch64 || BR2_arm || BR2_armeb + select BR2_PACKAGE_FBSET # runtime + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # needed for fbset + help + Install the scripts for the odroidc2 based systems. + + https://github.com/mdrjr/c2_bootini diff --git a/buildroot/package/odroid-scripts/S02odroidc2_fb b/buildroot/package/odroid-scripts/S02odroidc2_fb new file mode 100644 index 0000000..2aae59d --- /dev/null +++ b/buildroot/package/odroid-scripts/S02odroidc2_fb @@ -0,0 +1,20 @@ +#!/bin/sh +# +# Set up frame buffer +# + +case "$1" in + start) + echo "Setting up display..." + /usr/sbin/odroidc2_init_fb.sh + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/odroid-scripts/odroid-scripts.hash b/buildroot/package/odroid-scripts/odroid-scripts.hash new file mode 100644 index 0000000..e5a262d --- /dev/null +++ b/buildroot/package/odroid-scripts/odroid-scripts.hash @@ -0,0 +1,2 @@ +# Locally computed hash +sha256 9d61472ee6aed2d1a7b5afdcb91b823003c8524a242572f24f89d4e57323daf3 odroid-scripts-cfd289b1d69136b8bfd725d90cd648da4654f2bd.tar.gz diff --git a/buildroot/package/odroid-scripts/odroid-scripts.mk b/buildroot/package/odroid-scripts/odroid-scripts.mk new file mode 100644 index 0000000..fc1940d --- /dev/null +++ b/buildroot/package/odroid-scripts/odroid-scripts.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# odroid-scripts +# +################################################################################ + +ODROID_SCRIPTS_VERSION = cfd289b1d69136b8bfd725d90cd648da4654f2bd +ODROID_SCRIPTS_SITE = $(call github,mdrjr,c2_bootini,$(ODROID_SCRIPTS_VERSION)) +ODROID_SCRIPTS_LICENSE = unclear + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define ODROID_SCRIPTS_INSTALL_UDEV_RULES + $(INSTALL) -D -m 0644 $(@D)/10-odroid.rules \ + $(TARGET_DIR)/etc/udev/rules.d/10-odroid.rules +endef +endif + +define ODROID_SCRIPTS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/c2_init.sh $(TARGET_DIR)/usr/sbin/odroidc2_init_fb.sh + $(ODROID_SCRIPTS_INSTALL_UDEV_RULES) +endef + +define ODROID_SCRIPTS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/amlogic.service \ + $(TARGET_DIR)/usr/lib/systemd/system/odroidc2_fb.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/odroidc2_fb.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/odroidc2_fb.service +endef + +define ODROID_SCRIPTS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/odroid-scripts/S02odroidc2_fb \ + $(TARGET_DIR)/etc/init.d/S02odroidc2_fb +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ofono/0001-uclibc-backtrace.patch b/buildroot/package/ofono/0001-uclibc-backtrace.patch new file mode 100644 index 0000000..3ce7bf8 --- /dev/null +++ b/buildroot/package/ofono/0001-uclibc-backtrace.patch @@ -0,0 +1,49 @@ +[PATCH] fix build on uClibc without UCLIBC_HAS_BACKTRACE + +Backtrace support is only used for logging on signal errors, which +isn't really critical, so simply remove backtrace info if not +available in uClibc. + +NOTE: based on patch from Peter Korsgaard + +Signed-off-by: Petr Vorel +--- +--- ofono-1.7.orig/src/log.c ++++ ofono-1.7/src/log.c +@@ -30,7 +30,8 @@ + #include + #include + #include +-#ifdef __GLIBC__ ++#if defined(__GLIBC__) && !(defined(__UCLIBC__) && !defined (__UCLIBC_HAS_BACKTRACE__)) ++#define HAVE_BACKTRACE + #include + #endif + #include +@@ -115,7 +116,7 @@ + va_end(ap); + } + +-#ifdef __GLIBC__ ++#ifdef HAVE_BACKTRACE + static void print_backtrace(unsigned int offset) + { + void *frames[99]; +@@ -309,7 +310,7 @@ + if (detach == FALSE) + option |= LOG_PERROR; + +-#ifdef __GLIBC__ ++#ifdef HAVE_BACKTRACE + signal_setup(signal_handler); + #endif + +@@ -326,7 +327,7 @@ + + closelog(); + +-#ifdef __GLIBC__ ++#ifdef HAVE_BACKTRACE + signal_setup(SIG_DFL); + #endif + diff --git a/buildroot/package/ofono/Config.in b/buildroot/package/ofono/Config.in new file mode 100644 index 0000000..70daef7 --- /dev/null +++ b/buildroot/package/ofono/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_OFONO + bool "ofono" + depends on BR2_USE_WCHAR # gettext, libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_LIBCAP_NG + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO + help + oFono is a free, open source project for mobile telephony + (GSM/UMTS) applications. It uses high-level D-Bus API for + use by telephony applications. It uses 3GPP standard. + + http://ofono.org/ + +comment "ofono needs a toolchain w/ dynamic library, wchar, threads" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/ofono/S46ofono b/buildroot/package/ofono/S46ofono new file mode 100755 index 0000000..7eb2fca --- /dev/null +++ b/buildroot/package/ofono/S46ofono @@ -0,0 +1,22 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting ofono ... " + start-stop-daemon -S -q -m -b -p /var/run/ofonod.pid --exec /usr/sbin/ofonod -- -n + echo "done." + ;; + stop) + printf "Stopping ofono ..." + start-stop-daemon -K -q -p /var/run/ofonod.pid + echo "done." + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" + ;; +esac diff --git a/buildroot/package/ofono/ofono.hash b/buildroot/package/ofono/ofono.hash new file mode 100644 index 0000000..37933f1 --- /dev/null +++ b/buildroot/package/ofono/ofono.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/network/ofono/sha256sums.asc +sha256 a6b021cda0b444b772897cd637d5f455857fb5819b62c279a8302b44f9c7f2c3 ofono-1.21.tar.xz diff --git a/buildroot/package/ofono/ofono.mk b/buildroot/package/ofono/ofono.mk new file mode 100644 index 0000000..b4b7915 --- /dev/null +++ b/buildroot/package/ofono/ofono.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# ofono +# +################################################################################ + +OFONO_VERSION = 1.21 +OFONO_SOURCE = ofono-$(OFONO_VERSION).tar.xz +OFONO_SITE = $(BR2_KERNEL_MIRROR)/linux/network/ofono +OFONO_LICENSE = GPL-2.0 +OFONO_LICENSE_FILES = COPYING +OFONO_DEPENDENCIES = \ + host-pkgconf \ + dbus \ + libglib2 \ + libcap-ng \ + mobile-broadband-provider-info + +OFONO_CONF_OPTS = \ + --disable-test \ + --with-dbusconfdir=/etc \ + $(if $(BR2_INIT_SYSTEMD),--with-systemdunitdir=/usr/lib/systemd/system) + +# N.B. Qualcomm QMI modem support requires O_CLOEXEC; so +# make sure that it is defined. +OFONO_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +define OFONO_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/ofono/S46ofono $(TARGET_DIR)/etc/init.d/S46ofono +endef + +define OFONO_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/systemd/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/ofono.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants +endef + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +OFONO_CONF_OPTS += --enable-udev +OFONO_DEPENDENCIES += udev +else +OFONO_CONF_OPTS += --disable-udev +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +OFONO_CONF_OPTS += --enable-bluetooth +OFONO_DEPENDENCIES += bluez_utils +else +OFONO_CONF_OPTS += --disable-bluetooth +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/olsr/0001-configurable-ldconfig.patch b/buildroot/package/olsr/0001-configurable-ldconfig.patch new file mode 100644 index 0000000..73fff7e --- /dev/null +++ b/buildroot/package/olsr/0001-configurable-ldconfig.patch @@ -0,0 +1,33 @@ +Make ldconfig configurable + +In a cross-compilation set up, running /sbin/ldconfig is useless, so +we make the path to ldconfig configurable through the environment/make +command line. This allows to pass LDCONFIG=/bin/true when doing +cross-compilation. + +[Gustavo: update patch for olsr 0.6.4] +Signed-off-by: Thomas Petazzoni + +diff -Nura olsrd-0.6.4.orig/make/Makefile.linux olsrd-0.6.4/make/Makefile.linux +--- olsrd-0.6.4.orig/make/Makefile.linux 2013-01-29 09:00:18.041356389 -0300 ++++ olsrd-0.6.4/make/Makefile.linux 2013-01-29 09:01:51.598226624 -0300 +@@ -3,6 +3,7 @@ + # + + ARCH := $(shell uname -m) ++LDCONFIG ?= /sbin/ldconfig + + DESTDIR ?= + prefix ?= /usr/local +@@ -26,9 +27,9 @@ + PLUGIN_SONAME ?= lib$(PLUGIN_NAME).so + PLUGIN_FULLNAME ?= $(PLUGIN_NAME).so.$(PLUGIN_VER) + INSTALL_LIB = install -D -m 755 $(PLUGIN_FULLNAME) $(LIBDIR)/$(PLUGIN_FULLNAME); \ +- /sbin/ldconfig -n $(LIBDIR) ++ $(LDCONFIG) -n $(LIBDIR) + UNINSTALL_LIB = rm -f $(LIBDIR)/$(PLUGIN_FULLNAME); \ +- /sbin/ldconfig -n $(LIBDIR) ++ $(LDCONFIG) -n $(LIBDIR) + + ifdef OLSRD_PLUGIN + GENERATE_PIC = true diff --git a/buildroot/package/olsr/Config.in b/buildroot/package/olsr/Config.in new file mode 100644 index 0000000..85c5b4d --- /dev/null +++ b/buildroot/package/olsr/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_OLSR + bool "olsr" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + # doesn't build with musl, + # https://github.com/OLSR/olsrd/issues/6 + depends on !BR2_TOOLCHAIN_USES_MUSL + help + The Optimized Link State Routing protocol (OLSR) is a + routing protocol that is optimised for mobile ad-hoc + networks, sometimes called wireless mesh networks. It is a + proactive link-state routing protocol that floods a full + topology table to all nodes in the network which then + compute optimal forwarding paths locally. + + http://www.olsr.org/ + +comment "olsr needs a uClibc or glibc toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/olsr/S50olsr b/buildroot/package/olsr/S50olsr new file mode 100755 index 0000000..fa1324f --- /dev/null +++ b/buildroot/package/olsr/S50olsr @@ -0,0 +1,23 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting oslrd daemon: " + start-stop-daemon -S -q -x /usr/sbin/olsrd -- -d 0 -pidfile /run/olsrd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping olsrd daemon: " + start-stop-daemon -K -q -p /run/olsrd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/olsr/olsr.hash b/buildroot/package/olsr/olsr.hash new file mode 100644 index 0000000..6de0290 --- /dev/null +++ b/buildroot/package/olsr/olsr.hash @@ -0,0 +1,2 @@ +# From http://www.olsr.org/releases/0.9/SHA256SUM-0.9.6.1 +sha256 9cac290e9bff5fc7422110b9ccd972853f10962c962d2f31a63de9c6d1520612 olsrd-0.9.6.1.tar.bz2 diff --git a/buildroot/package/olsr/olsr.mk b/buildroot/package/olsr/olsr.mk new file mode 100644 index 0000000..faff253 --- /dev/null +++ b/buildroot/package/olsr/olsr.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# olsr +# +################################################################################ + +OLSR_VERSION_MAJOR = 0.9 +OLSR_VERSION = $(OLSR_VERSION_MAJOR).6.1 +OLSR_SOURCE = olsrd-$(OLSR_VERSION).tar.bz2 +OLSR_SITE = http://www.olsr.org/releases/$(OLSR_VERSION_MAJOR) +OLSR_PLUGINS = arprefresh bmf dot_draw dyn_gw dyn_gw_plain httpinfo jsoninfo \ + mdns nameservice p2pd pgraph secure txtinfo watchdog +# Doesn't really need quagga but not very useful without it +OLSR_PLUGINS += $(if $(BR2_PACKAGE_QUAGGA),quagga) +OLSR_LICENSE = BSD-3-Clause, LGPL-2.1+ +OLSR_LICENSE_FILES = license.txt lib/pud/nmealib/LICENSE +OLSR_DEPENDENCIES = host-flex host-bison + +define OLSR_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) ARCH=$(KERNEL_ARCH) -C $(@D) olsrd + for p in $(OLSR_PLUGINS) ; do \ + $(TARGET_CONFIGURE_OPTS) $(MAKE) ARCH=$(KERNEL_ARCH) -C $(@D)/lib/$$p ; \ + done +endef + +define OLSR_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \ + prefix="/usr" install_bin + for p in $(OLSR_PLUGINS) ; do \ + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/lib/$$p \ + LDCONFIG=/bin/true DESTDIR=$(TARGET_DIR) \ + prefix="/usr" install ; \ + done + $(INSTALL) -D -m 0644 $(@D)/files/olsrd.conf.default.lq \ + $(TARGET_DIR)/etc/olsrd/olsrd.conf +endef + +define OLSR_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/olsr/S50olsr \ + $(TARGET_DIR)/etc/init.d/S50olsr +endef + +define OLSR_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/olsr/olsr.service \ + $(TARGET_DIR)/usr/lib/systemd/system/olsr.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/olsr.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/olsr.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/olsr/olsr.service b/buildroot/package/olsr/olsr.service new file mode 100644 index 0000000..9ec8930 --- /dev/null +++ b/buildroot/package/olsr/olsr.service @@ -0,0 +1,10 @@ +[Unit] +Description=Ad-hoc wireless mesh routing daemon +After=network.target + +[Service] +ExecStart=/usr/sbin/olsrd -nofork +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/omap-u-boot-utils/Config.in.host b/buildroot/package/omap-u-boot-utils/Config.in.host new file mode 100644 index 0000000..1549674 --- /dev/null +++ b/buildroot/package/omap-u-boot-utils/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS + bool "host omap-u-boot-utils" + depends on BR2_arm || BR2_armeb + help + U-Boot Utilities for Texas Instrument's OMAP platforms. + This is a set of tools to control U-Boot from scripts, + generate OMAP-specific signed image files and more. + + https://github.com/nmenon/omap-u-boot-utils diff --git a/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.hash b/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.hash new file mode 100644 index 0000000..020c440 --- /dev/null +++ b/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 f9c2553efeff1289b2b964a266a0b4a03a377f84a14d0599a779f6e3d7b75d5f omap-u-boot-utils-3f07426cddc0be9e24702e7aacc7574ddd7fba28.tar.gz diff --git a/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.mk b/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.mk new file mode 100644 index 0000000..d68b130 --- /dev/null +++ b/buildroot/package/omap-u-boot-utils/omap-u-boot-utils.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# omap-u-boot-utils +# +################################################################################ + +OMAP_U_BOOT_UTILS_VERSION = 3f07426cddc0be9e24702e7aacc7574ddd7fba28 +OMAP_U_BOOT_UTILS_SITE = $(call github,nmenon,omap-u-boot-utils,$(OMAP_U_BOOT_UTILS_VERSION)) +OMAP_U_BOOT_UTILS_LICENSE = GPL-2.0, GPL-2.0+ +OMAP_U_BOOT_UTILS_LICENSE_FILES = COPYING + +define HOST_OMAP_U_BOOT_UTILS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_OMAP_U_BOOT_UTILS_INSTALL_CMDS + for f in gpsign pserial tagger ucmd ukermit ; do \ + $(INSTALL) -D -m 755 $(@D)/$$f $(HOST_DIR)/bin/$$f ; \ + done +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/omniorb/Config.in b/buildroot/package/omniorb/Config.in new file mode 100644 index 0000000..4af91a4 --- /dev/null +++ b/buildroot/package/omniorb/Config.in @@ -0,0 +1,28 @@ + +comment "omniORB needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_OMNIORB + bool "omniorb" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + omniORB is a robust high performance CORBA ORB for C++ and + Python. + omniORB is largely CORBA 2.6 compliant. omniORB is one of + only three ORBs to have been awarded the Open Group's Open + Brand for CORBA. This means that omniORB has been tested and + certified CORBA compliant, to version 2.1 of the CORBA + specification. + + http://omniorb.sourceforge.net/ + +if BR2_PACKAGE_OMNIORB + +config BR2_PACKAGE_OMNIORB_WITH_APPS + bool "Enable Apps and Services" + help + omniORB applications and services disabled by default + embedded system build configuration. + +endif diff --git a/buildroot/package/omniorb/omniorb.hash b/buildroot/package/omniorb/omniorb.hash new file mode 100644 index 0000000..3f4af2e --- /dev/null +++ b/buildroot/package/omniorb/omniorb.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/omniorb/files/omniORB/omniORB-4.2.2/ +sha1 0c682542290cabb22878b3ef492de3e85c4b4281 omniORB-4.2.2.tar.bz2 +md5 cc6b2a65a2b1c1b3d44b3ccbaf92e104 omniORB-4.2.2.tar.bz2 diff --git a/buildroot/package/omniorb/omniorb.mk b/buildroot/package/omniorb/omniorb.mk new file mode 100644 index 0000000..2f094b5 --- /dev/null +++ b/buildroot/package/omniorb/omniorb.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# omniorb +# +################################################################################ + +OMNIORB_VERSION = 4.2.2 +OMNIORB_SITE = http://downloads.sourceforge.net/project/omniorb/omniORB/omniORB-$(OMNIORB_VERSION) +OMNIORB_SOURCE = omniORB-$(OMNIORB_VERSION).tar.bz2 +OMNIORB_INSTALL_STAGING = YES +OMNIORB_LICENSE = GPL2+, LGPL-2.1+ +OMNIORB_LICENSE_FILES = COPYING COPYING.LIB +OMNIORB_DEPENDENCIES = host-omniorb +HOST_OMNIORB_DEPENDENCIES = host-python + +# omniorb is not python3 friendly, so force the python interpreter +OMNIORB_CONF_OPTS = ac_cv_path_PYTHON=$(HOST_DIR)/bin/python2 +HOST_OMNIORB_CONF_OPTS = ac_cv_path_PYTHON=$(HOST_DIR)/bin/python2 + +# Defaulting long double support to a safe option for the +# mix of embedded targets, this could later be automated +# based on checking the capability of the cross toolchain +# for "__LONG_DOUBLE_128__". Currently the host and target +# need to match because of the code generation done by the +# host tools during the target compile (ie headers generated +# on host are used in target build). +OMNIORB_CONF_OPTS += --disable-longdouble +HOST_OMNIORB_CONF_OPTS += --disable-longdouble + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OMNIORB_CONF_OPTS += --with-openssl +OMNIORB_DEPENDENCIES += openssl +else +OMNIORB_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +OMNIORB_DEPENDENCIES += zlib +endif + +# The EmbeddedSystem define (set below in OMNIORB_ADJUST_TOOLDIR) +# enables building of just the lib and disables building of +# tools/apps/services. In some cases the apps/services are still +# required. The tools however are host related and should never +# be required on target. +define OMNIORB_ENABLE_EXTRA_APPS + $(SED) 's:SUBDIRS += lib:SUBDIRS += lib appl services:g' $(@D)/src/dir.mk +endef + +ifeq ($(BR2_PACKAGE_OMNIORB_WITH_APPS),y) +OMNIORB_POST_PATCH_HOOKS += OMNIORB_ENABLE_EXTRA_APPS +endif + +ifeq ($(BR2_STATIC_LIBS),y) +define OMNIORB_DISABLE_SHARED + echo "BuildSharedLibrary =" >> $(@D)/mk/beforeauto.mk +endef +OMNIORB_POST_CONFIGURE_HOOKS += OMNIORB_DISABLE_SHARED +endif + +# omniORB is not completely cross-compile friendly and has some +# assumptions where a couple host tools must be built and then +# used by the target build. The host tools generate code from +# the IDL description language, which is then built into the +# cross compiled target OMNIORB application. +define OMNIORB_ADJUST_TOOLDIR + # Point to the host folder to get HOST_OMNIORB tools + $(SED) 's:TOOLBINDIR = $$(TOP)/$$(BINDIR):TOOLBINDIR = $(HOST_DIR)/bin:g' $(@D)/mk/beforeauto.mk + # Disables OMNIORB app/service/tool building + echo "EmbeddedSystem=1" >> $(@D)/mk/beforeauto.mk +endef +OMNIORB_POST_CONFIGURE_HOOKS += OMNIORB_ADJUST_TOOLDIR + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/omxplayer/0001-Update-Makefile-to-be-compatible-with-buildroot.patch b/buildroot/package/omxplayer/0001-Update-Makefile-to-be-compatible-with-buildroot.patch new file mode 100644 index 0000000..8f8bfad --- /dev/null +++ b/buildroot/package/omxplayer/0001-Update-Makefile-to-be-compatible-with-buildroot.patch @@ -0,0 +1,39 @@ +From 40bf9c0960becaf0e592cac901466af93f24e52b Mon Sep 17 00:00:00 2001 +From: Julius Kriukas +Date: Fri, 1 Dec 2017 18:29:24 +0200 +Subject: [PATCH] Update Makefile to be compatible with buildroot + +- Append to existing CFLAGS instead of overwriting. +- Remove cross-compilation specific options from CFLAGS, they will be + set by buildroot. +- Remove local ffmpeg_compiled include, buildroot will build ffmpeg + separately. +- Remove hard-coded dbus, freetype, rpi-firmware include paths, they + will be added by buildroot. + +Signed-off-by: Julius Kriukas +--- + Makefile | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index 5f4e414..53fa1bc 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,10 +1,10 @@ +-CFLAGS=-pipe -mfloat-abi=hard -mcpu=arm1176jzf-s -fomit-frame-pointer -mabi=aapcs-linux -mtune=arm1176jzf-s -mfpu=vfp -Wno-psabi -mno-apcs-stack-check -g -mstructure-size-boundary=32 -mno-sched-prolog ++CFLAGS+=-fomit-frame-pointer -Wno-psabi -mno-apcs-stack-check -g -mstructure-size-boundary=32 -mno-sched-prolog + CFLAGS+=-std=c++0x -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -DTARGET_POSIX -DTARGET_LINUX -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CMAKE_CONFIG -D__VIDEOCORE4__ -U_FORTIFY_SOURCE -Wall -DHAVE_OMXLIB -DUSE_EXTERNAL_FFMPEG -DHAVE_LIBAVCODEC_AVCODEC_H -DHAVE_LIBAVUTIL_OPT_H -DHAVE_LIBAVUTIL_MEM_H -DHAVE_LIBAVUTIL_AVUTIL_H -DHAVE_LIBAVFORMAT_AVFORMAT_H -DHAVE_LIBAVFILTER_AVFILTER_H -DHAVE_LIBSWRESAMPLE_SWRESAMPLE_H -DOMX -DOMX_SKIP64BIT -ftree-vectorize -DUSE_EXTERNAL_OMX -DTARGET_RASPBERRY_PI -DUSE_EXTERNAL_LIBBCM_HOST + + LDFLAGS=-L$(SDKSTAGE)/opt/vc/lib/ +-LDFLAGS+=-L./ -Lffmpeg_compiled/usr/local/lib/ -lc -lbrcmGLESv2 -lbrcmEGL -lbcm_host -lopenmaxil -lfreetype -lz -lasound ++LDFLAGS+=-L./ -lc -lbrcmGLESv2 -lbrcmEGL -lbcm_host -lopenmaxil -lfreetype -lz -lasound + +-INCLUDES+=-I./ -Ilinux -Iffmpeg_compiled/usr/local/include/ -I /usr/include/dbus-1.0 -I /usr/lib/arm-linux-gnueabihf/dbus-1.0/include -I/usr/include/freetype2 -isystem$(SDKSTAGE)/opt/vc/include -isystem$(SDKSTAGE)/opt/vc/include/interface/vcos/pthreads ++INCLUDES+=-I./ -Ilinux + + DIST ?= omxplayer-dist + STRIP ?= strip +-- +2.11.0 + diff --git a/buildroot/package/omxplayer/Config.in b/buildroot/package/omxplayer/Config.in new file mode 100644 index 0000000..80e48d0 --- /dev/null +++ b/buildroot/package/omxplayer/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_OMXPLAYER + bool "omxplayer" + depends on BR2_arm + depends on BR2_USE_MMU # dbus + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS # ffmpeg + depends on BR2_INSTALL_LIBSTDCPP # boost + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib, boost, libusb + depends on BR2_USE_WCHAR # boost + depends on BR2_PACKAGE_RPI_USERLAND + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_AVRESAMPLE + select BR2_PACKAGE_FFMPEG_SWSCALE + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LIBIDN + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_ZLIB + help + OMXPlayer is a commandline OMX player for the Raspberry + Pi. It was developed as a testbed for the XBMC Raspberry PI + implementation and is quite handy to use standalone. + + https://github.com/popcornmix/omxplayer + +comment "omxplayer needs rpi-userland and a toolchain w/ C++, threads, wchar, dynamic library" + depends on BR2_arm + depends on BR2_USE_MMU + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on !BR2_PACKAGE_RPI_USERLAND + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/buildroot/package/omxplayer/omxplayer.hash b/buildroot/package/omxplayer/omxplayer.hash new file mode 100644 index 0000000..ad084e2 --- /dev/null +++ b/buildroot/package/omxplayer/omxplayer.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha1 258316ff94a1f1e5e47a5bb1a28d324ab08871a9 omxplayer-2ee17b22a6149a043a2e402580504f282c615373.tar.gz +sha256 c16498258ee78c59f9705b621e4b5b7b0673e1687d94681f9dc52451b1ceba48 omxplayer-2ee17b22a6149a043a2e402580504f282c615373.tar.gz + +# Hash for license file: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/omxplayer/omxplayer.mk b/buildroot/package/omxplayer/omxplayer.mk new file mode 100644 index 0000000..6999269 --- /dev/null +++ b/buildroot/package/omxplayer/omxplayer.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# omxplayer +# +################################################################################ + +OMXPLAYER_VERSION = 2ee17b22a6149a043a2e402580504f282c615373 +OMXPLAYER_SITE = $(call github,popcornmix,omxplayer,$(OMXPLAYER_VERSION)) +OMXPLAYER_LICENSE = GPL-2.0+ +OMXPLAYER_LICENSE_FILES = COPYING + +OMXPLAYER_DEPENDENCIES = \ + host-pkgconf alsa-lib boost dbus ffmpeg freetype libidn libusb pcre \ + rpi-userland zlib + +OMXPLAYER_EXTRA_CFLAGS = \ + -DTARGET_LINUX -DTARGET_POSIX \ + `$(PKG_CONFIG_HOST_BINARY) --cflags bcm_host` \ + `$(PKG_CONFIG_HOST_BINARY) --cflags freetype2` \ + `$(PKG_CONFIG_HOST_BINARY) --cflags dbus-1` + +# OMXplayer has support for building in Buildroot, but that +# procedure is, well, tainted. Fix this by forcing the real, +# correct values. +OMXPLAYER_MAKE_ENV = \ + SDKSTAGE=$(STAGING_DIR) \ + $(TARGET_CONFIGURE_OPTS) \ + STRIP=true \ + CFLAGS="$(TARGET_CFLAGS) $(OMXPLAYER_EXTRA_CFLAGS)" + +define OMXPLAYER_BUILD_CMDS + $(OMXPLAYER_MAKE_ENV) $(MAKE) -C $(@D) omxplayer.bin +endef + +define OMXPLAYER_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/omxplayer.bin $(TARGET_DIR)/usr/bin/omxplayer +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/on2-8170-libs/Config.in b/buildroot/package/on2-8170-libs/Config.in new file mode 100644 index 0000000..2a60c58 --- /dev/null +++ b/buildroot/package/on2-8170-libs/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_ON2_8170_LIBS + bool "on2-8170-libs" + #This is a binary only package which has been compiled for glibc + depends on BR2_arm926t + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_LINUX_KERNEL # on2-8170-modules + select BR2_PACKAGE_ON2_8170_MODULES # runtime + help + Libraries for Hantro X170 video decoder + + http://www.at91.com/linux4sam/bin/view/Linux4SAM/SAM9M10Gstreamer + +comment "on2-8170-libs needs a glibc toolchain and a Linux kernel to be built" + depends on BR2_arm926t + depends on !BR2_LINUX_KERNEL || !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/on2-8170-libs/on2-8170-libs.hash b/buildroot/package/on2-8170-libs/on2-8170-libs.hash new file mode 100644 index 0000000..c8b76e5 --- /dev/null +++ b/buildroot/package/on2-8170-libs/on2-8170-libs.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 db7390a13e7c0426894a6f966ecde1f89e6566416088c50729750e800306a2de on2-8170-libs-1.0.tar.gz diff --git a/buildroot/package/on2-8170-libs/on2-8170-libs.mk b/buildroot/package/on2-8170-libs/on2-8170-libs.mk new file mode 100644 index 0000000..ad321d8 --- /dev/null +++ b/buildroot/package/on2-8170-libs/on2-8170-libs.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# on2-8170-libs +# +################################################################################ + +ON2_8170_LIBS_VERSION = 1.0 +ON2_8170_LIBS_SITE = ftp://ftp.linux4sam.org/pub/demo/linux4sam_1.9/codec + +ON2_8170_LIBS_LICENSE = PROPRIETARY +# No license file is included in the archive + +ON2_8170_LIBS_INSTALL_STAGING = YES + +define ON2_8170_LIBS_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/lib $(STAGING_DIR)/usr/include + cp -dpf $(@D)/*.a $(@D)/*.so $(STAGING_DIR)/usr/lib + cp -dpf $(@D)/*.h $(STAGING_DIR)/usr/include +endef + +define ON2_8170_LIBS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/lib + cp -dpf $(@D)/*.so $(TARGET_DIR)/usr/lib +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/on2-8170-modules/Config.in b/buildroot/package/on2-8170-modules/Config.in new file mode 100644 index 0000000..8c51e0c --- /dev/null +++ b/buildroot/package/on2-8170-modules/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ON2_8170_MODULES + bool "on2-8170-modules" + depends on BR2_LINUX_KERNEL + depends on BR2_arm926t + help + Kernel modules for Hantro x170 hardware video decompression + support. + + http://www.at91.com/linux4sam/bin/view/Linux4SAM/SAM9M10Gstreamer + +comment "on2-8170-modules needs a Linux kernel to be built" + depends on BR2_arm926t + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/on2-8170-modules/on2-8170-modules.hash b/buildroot/package/on2-8170-modules/on2-8170-modules.hash new file mode 100644 index 0000000..cfb1272 --- /dev/null +++ b/buildroot/package/on2-8170-modules/on2-8170-modules.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 d04d3acb8755281f6721d2a2efe04014060f83f38972208f356a486d52ca8bfc on2-8170-modules-73b08061d30789178e692bc332b73d1d9922bf39.tar.gz diff --git a/buildroot/package/on2-8170-modules/on2-8170-modules.mk b/buildroot/package/on2-8170-modules/on2-8170-modules.mk new file mode 100644 index 0000000..9864313 --- /dev/null +++ b/buildroot/package/on2-8170-modules/on2-8170-modules.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# on2-8170-modules +# +################################################################################ + +ON2_8170_MODULES_VERSION = 73b08061d30789178e692bc332b73d1d9922bf39 +ON2_8170_MODULES_SITE = $(call github,alexandrebelloni,on2-8170-modules,$(ON2_8170_MODULES_VERSION)) + +ON2_8170_MODULES_LICENSE = GPL-2.0+ +#There is no license file + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/open-lldp/0001-vdptool-fixed-compile-error-for-getline.patch b/buildroot/package/open-lldp/0001-vdptool-fixed-compile-error-for-getline.patch new file mode 100644 index 0000000..c202677 --- /dev/null +++ b/buildroot/package/open-lldp/0001-vdptool-fixed-compile-error-for-getline.patch @@ -0,0 +1,27 @@ +From 3c7887bb8a61a3b49a2989329c756a038023c544 Mon Sep 17 00:00:00 2001 +From: Laurent Charpentier +Date: Fri, 12 Jan 2018 12:25:41 +0100 +Subject: [PATCH] vdptool: fixed compile error for getline() + +vdptool.c was generating an error: implicit declaration for the getline() function. + +Signed-off-by: Laurent Charpentier +--- + vdptool.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/vdptool.c b/vdptool.c +index b805372..4930f6a 100644 +--- a/vdptool.c ++++ b/vdptool.c +@@ -36,6 +36,7 @@ + * set and query VSI profile settings. + */ + ++#define _GNU_SOURCE + #include + #include + #include +-- +2.14.3 + diff --git a/buildroot/package/open-lldp/0002-get-inline-functions-work-with-both-gnu11-and-gnu89.patch b/buildroot/package/open-lldp/0002-get-inline-functions-work-with-both-gnu11-and-gnu89.patch new file mode 100644 index 0000000..57a23b2 --- /dev/null +++ b/buildroot/package/open-lldp/0002-get-inline-functions-work-with-both-gnu11-and-gnu89.patch @@ -0,0 +1,73 @@ +From e186ca9ebda181f62504a1922559ef3ddae5e3b6 Mon Sep 17 00:00:00 2001 +From: Laurent Charpentier +Date: Mon, 15 Jan 2018 11:24:45 +0100 +Subject: [PATCH] get inline functions work with both gnu11 and gnu89 + +After gcc upgraded to gcc5, and if the codes are compiled without optimization(-O0), and the below error will happen: + +./include/lldp_8021qaz.h:237:12: error: inline function 'ieee8021qaz_clif_cmd' declared but never defined [-Werror] + inline int ieee8021qaz_clif_cmd(void *data, struct sockaddr_un *from, + ^ +./include/lldp_8021qaz.h:222:13: error: inline function 'set_prio_map' declared but never defined [-Werror] + inline void set_prio_map(u32 *prio_map, u8 prio, int tc); + ^ +./include/lldp_8021qaz.h:221:12: error: inline function 'get_prio_map' declared but never defined [-Werror] + inline int get_prio_map(u32 prio_map, int tc); + +gcc5 defaults to -std=gnu11 instead of -std=gnu89, and it requires that exactly one C source file has the callable copy of the inline function. + +Signed-off-by: Laurent Charpentier +--- + include/lldp_8021qaz.h | 6 ------ + lldp_8021qaz.c | 4 ++-- + 2 files changed, 2 insertions(+), 8 deletions(-) + +diff --git a/include/lldp_8021qaz.h b/include/lldp_8021qaz.h +index 55353b8..09dee20 100644 +--- a/include/lldp_8021qaz.h ++++ b/include/lldp_8021qaz.h +@@ -218,9 +218,6 @@ int ieee8021qaz_mod_app(struct app_tlv_head *head, int peer, + u8 prio, u8 sel, u16 proto, u32 ops); + int ieee8021qaz_app_sethw(char *ifname, struct app_tlv_head *head); + +-inline int get_prio_map(u32 prio_map, int tc); +-inline void set_prio_map(u32 *prio_map, u8 prio, int tc); +- + struct ieee8021qaz_tlvs *ieee8021qaz_data(const char *); + + int ieee8021qaz_tlvs_rxed(const char *ifname); +@@ -234,9 +231,6 @@ int ieee8021qaz_rchange(struct port *port, struct lldp_agent *, + void ieee8021qaz_ifup(char *ifname, struct lldp_agent *); + void ieee8021qaz_ifdown(char *ifname, struct lldp_agent *); + u8 ieee8021qaz_mibDeleteObject(struct port *port, struct lldp_agent *); +-inline int ieee8021qaz_clif_cmd(void *data, struct sockaddr_un *from, +- socklen_t fromlen, char *ibuf, int ilen, +- char *rbuf); + int ieee8021qaz_check_operstate(void); + int get_dcbx_hw(const char *ifname, __u8 *dcbx); + +diff --git a/lldp_8021qaz.c b/lldp_8021qaz.c +index 094676d..f154317 100644 +--- a/lldp_8021qaz.c ++++ b/lldp_8021qaz.c +@@ -396,7 +396,7 @@ static int read_cfg_file(char *ifname, struct lldp_agent *agent, + return 0; + } + +-inline int get_prio_map(u32 prio_map, int prio) ++static inline int get_prio_map(u32 prio_map, int prio) + { + if (prio > 7) + return 0; +@@ -404,7 +404,7 @@ inline int get_prio_map(u32 prio_map, int prio) + return (prio_map >> (4 * (7-prio))) & 0xF; + } + +-inline void set_prio_map(u32 *prio_map, u8 prio, int tc) ++static inline void set_prio_map(u32 *prio_map, u8 prio, int tc) + { + u32 mask = ~(0xffffffff & (0xF << (4 * (7-prio)))); + *prio_map &= mask; +-- +2.14.3 + diff --git a/buildroot/package/open-lldp/0003-Makefile.am-disable-Werror.patch b/buildroot/package/open-lldp/0003-Makefile.am-disable-Werror.patch new file mode 100644 index 0000000..d6393bd --- /dev/null +++ b/buildroot/package/open-lldp/0003-Makefile.am-disable-Werror.patch @@ -0,0 +1,38 @@ +From c350f263136801fd54d42322a07a3b5ad2181dd9 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 18 Jan 2018 09:29:32 +0100 +Subject: [PATCH] Makefile.am: disable -Werror + +Due to additional warnings in recent gcc versions and the use of +-Werror the build fails for reasons that are not that important. For +example: + +clif.c:54:2: error: implicit declaration of function 'memset' [-Werror=implicit-function-declaration] + memset(clif, 0, sizeof(*clif)); + +or: + +log.c:46:30: error: format '%ld' expects argument of type 'long int', but argument 5 has type '__suseconds_t {aka int}' [-Werror=format=] + printf("%02d:%02d:%02d.%06ld ", + +Signed-off-by: Thomas Petazzoni +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 551d4c7..62a52a5 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -16,7 +16,7 @@ ACLOCAL_AMFLAGS = -I m4 + parse_cli.o: CFLAGS+=-U_FORTIFY_SOURCE -Wno-error + + ## system requires a shared libconfig +-AM_CFLAGS = -Wall -Werror -Wextra -Wformat=2 $(LIBCONFIG_CFLAGS) $(LIBNL_CFLAGS) ++AM_CFLAGS = -Wall -Wextra -Wformat=2 $(LIBCONFIG_CFLAGS) $(LIBNL_CFLAGS) + AM_LDFLAGS = $(LIBCONFIG_LIBS) $(LIBNL_LIBS) -lrt + + ## header files to be installed, for programs using the client interface to lldpad +-- +2.14.3 + diff --git a/buildroot/package/open-lldp/0004-fixed-unknown-type-pid_t.patch b/buildroot/package/open-lldp/0004-fixed-unknown-type-pid_t.patch new file mode 100644 index 0000000..2d3b914 --- /dev/null +++ b/buildroot/package/open-lldp/0004-fixed-unknown-type-pid_t.patch @@ -0,0 +1,41 @@ +From 41e9e6b5aa13d65480cc960a7f15f97d74d64090 Mon Sep 17 00:00:00 2001 +From: Laurent Charpentier +Date: Mon, 22 Jan 2018 10:49:45 +0100 +Subject: [PATCH] fixed unknown type pid_t + +Fixed 'unknown type pid_t' gcc compile error in dcbtool_cmds.c and +lldptool_cmds.c + +Signed-off-by: Laurent Charpentier +--- + dcbtool_cmds.c | 1 + + lldptool_cmds.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/dcbtool_cmds.c b/dcbtool_cmds.c +index a5cd0fe..ee5c144 100644 +--- a/dcbtool_cmds.c ++++ b/dcbtool_cmds.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include "clif.h" + #include "dcbtool.h" + #include "lldp_dcbx_cmds.h" +diff --git a/lldptool_cmds.c b/lldptool_cmds.c +index daef8c8..c793e34 100644 +--- a/lldptool_cmds.c ++++ b/lldptool_cmds.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include "clif.h" + #include "dcb_types.h" + #include "lldptool.h" +-- +2.14.3 + diff --git a/buildroot/package/open-lldp/Config.in b/buildroot/package/open-lldp/Config.in new file mode 100644 index 0000000..b40bff8 --- /dev/null +++ b/buildroot/package/open-lldp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_OPEN_LLDP + bool "open-lldp" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBCONFIG + select BR2_PACKAGE_LIBNL + select BR2_PACKAGE_READLINE + help + This package contains the Linux user space daemon and + configuration tool for Intel LLDP Agent with Enhanced Ethernet + support for the Data Center. + + http://open-lldp.org/ + +comment "open-lldp needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/open-lldp/open-lldp.hash b/buildroot/package/open-lldp/open-lldp.hash new file mode 100644 index 0000000..fdd85fe --- /dev/null +++ b/buildroot/package/open-lldp/open-lldp.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f2c8a3307970374b01ad832ea18cf6d9abce6f00b3d8aed9305aa1428ad8252d open-lldp-036e314bd93602f7388262cc37faf8b626980af1.tar.gz +sha256 67af5abeb092213cd9c53781503320f635ba28b641e0c3f24d367e8e93a9839b COPYING diff --git a/buildroot/package/open-lldp/open-lldp.mk b/buildroot/package/open-lldp/open-lldp.mk new file mode 100644 index 0000000..b650aea --- /dev/null +++ b/buildroot/package/open-lldp/open-lldp.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# open-lldp +# +################################################################################ + +OPEN_LLDP_VERSION = 036e314bd93602f7388262cc37faf8b626980af1 +OPEN_LLDP_SITE = git://open-lldp.org/open-lldp.git +OPEN_LLDP_DEPENDENCIES = readline libnl libconfig host-pkgconf +OPEN_LLDP_LICENSE = GPL-2.0 +OPEN_LLDP_LICENSE_FILES = COPYING + +# Fetching from git, need to generate configure/Makefile.in +OPEN_LLDP_AUTORECONF = YES + +# Create the m4 directory (missing from the archive). +# This is required for autoconf. +define OPEN_LLDP_CREATE_M4 + mkdir -p $(@D)/m4 +endef + +OPEN_LLDP_PRE_CONFIGURE_HOOKS += OPEN_LLDP_CREATE_M4 + +$(eval $(autotools-package)) diff --git a/buildroot/package/open-plc-utils/0001-Remove-OWNER-and-GROUPS-parameters-to-install.patch b/buildroot/package/open-plc-utils/0001-Remove-OWNER-and-GROUPS-parameters-to-install.patch new file mode 100644 index 0000000..9fc30a9 --- /dev/null +++ b/buildroot/package/open-plc-utils/0001-Remove-OWNER-and-GROUPS-parameters-to-install.patch @@ -0,0 +1,298 @@ +From fdfeac7e77382ddd0e3fb4f2abeae84f0a31584f Mon Sep 17 00:00:00 2001 +From: Maxime Hadjinlian +Date: Tue, 30 Sep 2014 13:46:59 +0200 +Subject: [PATCH] Remove OWNER and GROUPS parameters to install + +The Install tries to change the owner and groups of the binary. In +Buildroot we don't want that, since fakeroot will do its job when we +finalize the rootfs. + +Signed-off-by: Maxime Hadjinlian +--- + docbook/Makefile | 4 ++-- + ether/Makefile | 8 ++++---- + iso15118/Makefile | 8 ++++---- + key/Makefile | 8 ++++---- + mdio/Makefile | 8 ++++---- + mme/Makefile | 8 ++++---- + nvm/Makefile | 8 ++++---- + pib/Makefile | 8 ++++---- + plc/Makefile | 8 ++++---- + ram/Makefile | 8 ++++---- + scripts/Makefile | 4 ++-- + serial/Makefile | 8 ++++---- + slac/Makefile | 8 ++++---- + tools/Makefile | 2 +- + 14 files changed, 49 insertions(+), 49 deletions(-) + +diff --git a/docbook/Makefile b/docbook/Makefile +index d630822..23a9b5a 100755 +--- a/docbook/Makefile ++++ b/docbook/Makefile +@@ -32,9 +32,9 @@ manuals: + ${SHELL} ../docbook/manuals + scripts: + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${LIBRARY} ++ install -m ${DIR_PERM} -d ${LIBRARY} + install: library +- if [ -d ${LIBRARY} ]; then install -m ${WWW_PERM} -o ${OWNER} -g ${GROUP} *.html *.css *.png ${LIBRARY}; fi ++ if [ -d ${LIBRARY} ]; then install -m ${WWW_PERM} *.html *.css *.png ${LIBRARY}; fi + uninstall: + rm -f ${LIBRARY}/*.c.html ${LIBRARY}/*.h.html ${LIBRARY}/*.1.html + setup: +diff --git a/ether/Makefile b/ether/Makefile +index 807cbcb..574050a 100755 +--- a/ether/Makefile ++++ b/ether/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${SUID_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${SUID_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + check: +diff --git a/iso15118/Makefile b/iso15118/Makefile +index 72afdc4..da11a1c 100755 +--- a/iso15118/Makefile ++++ b/iso15118/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- if [ ! -d ${MAN} ]; then install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}; fi +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ if [ ! -d ${MAN} ]; then install -m ${DIR_PERM} -d ${MAN}; fi ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: compile library +- install -m ${SUID_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${SUID_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f plc ${TOOLS} + cd ${MAN}; rm -f plc ${PAGES} +diff --git a/key/Makefile b/key/Makefile +index 7de75ff..ee8968c 100755 +--- a/key/Makefile ++++ b/key/Makefile +@@ -28,13 +28,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + cd ${MAN}; rm -f ${PAGES} +diff --git a/mdio/Makefile b/mdio/Makefile +index 60a75a9..062d858 100755 +--- a/mdio/Makefile ++++ b/mdio/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f int6k ${TOOLS} + cd ${MAN}; rm -f int6k ${PAGES} +diff --git a/mme/Makefile b/mme/Makefile +index d6a9132..23f4775 100755 +--- a/mme/Makefile ++++ b/mme/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + check: +diff --git a/nvm/Makefile b/nvm/Makefile +index 5ae47d2..d7f4037 100755 +--- a/nvm/Makefile ++++ b/nvm/Makefile +@@ -28,12 +28,12 @@ compact: compile + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + check: +diff --git a/pib/Makefile b/pib/Makefile +index 3af94c8..908b03a 100644 +--- a/pib/Makefile ++++ b/pib/Makefile +@@ -30,12 +30,12 @@ compact: compile + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + check: +diff --git a/plc/Makefile b/plc/Makefile +index bd8b806..5b41c0b 100644 +--- a/plc/Makefile ++++ b/plc/Makefile +@@ -32,13 +32,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${SUID_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${SUID_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f int6k ${TOOLS} + cd ${MAN}; rm -f int6k ${PAGES} +diff --git a/ram/Makefile b/ram/Makefile +index 60b9bb3..c951218 100755 +--- a/ram/Makefile ++++ b/ram/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f ${TOOLS} + cd ${MAN}; rm -f ${PAGES} +diff --git a/serial/Makefile b/serial/Makefile +index c25f1a6..6420d4a 100755 +--- a/serial/Makefile ++++ b/serial/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- test -d ${MAN} || install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN} +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ test -d ${MAN} || install -m ${DIR_PERM} -d ${MAN} ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: $(TOOLS) library +- install -m ${BIN_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${BIN_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f int6k ${TOOLS} + cd ${MAN}; rm -f int6k ${PAGES} +diff --git a/slac/Makefile b/slac/Makefile +index d69da17..449f20a 100755 +--- a/slac/Makefile ++++ b/slac/Makefile +@@ -27,13 +27,13 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: +- if [ ! -d ${MAN} ]; then install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${MAN}; fi +- install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} ++ if [ ! -d ${MAN} ]; then install -m ${DIR_PERM} -d ${MAN}; fi ++ install -m ${MAN_PERM} ${PAGES} ${MAN} + install: compile library +- install -m ${SUID_PERM} -o ${OWNER} -g ${GROUP} ${TOOLS} ${BIN} ++ install -m ${SUID_PERM} ${TOOLS} ${BIN} + uninstall: + cd ${BIN}; rm -f plc ${TOOLS} + cd ${MAN}; rm -f plc ${PAGES} +diff --git a/tools/Makefile b/tools/Makefile +index 1d992cf..f17db3d 100755 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -27,7 +27,7 @@ compact: compile + if [ ! -z ${STRIP} ]; then ${STRIP} ${TOOLS}; fi + if [ -x /usr/local/bin/upx ]; then upx --best ${TOOLS}; fi + library: +- install -m ${DIR_PERM} -o ${OWNER} -g ${GROUP} -d ${BIN} ++ install -m ${DIR_PERM} -d ${BIN} + scripts: + manuals: + # install -m ${MAN_PERM} -o ${OWNER} -g ${GROUP} ${PAGES} ${MAN} +-- +2.1.0 diff --git a/buildroot/package/open-plc-utils/Config.in b/buildroot/package/open-plc-utils/Config.in new file mode 100644 index 0000000..8ae3504 --- /dev/null +++ b/buildroot/package/open-plc-utils/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_OPEN_PLC_UTILS + bool "open-plc-utils" + depends on BR2_USE_MMU # fork() + help + Open version of the Qualcomm Atheros Powerline Toolkit + + https://github.com/qca/open-plc-utils diff --git a/buildroot/package/open-plc-utils/open-plc-utils.hash b/buildroot/package/open-plc-utils/open-plc-utils.hash new file mode 100644 index 0000000..a76630d --- /dev/null +++ b/buildroot/package/open-plc-utils/open-plc-utils.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 00cd7f71e03849b1d6a96ec040351b819481e2f420cfb246f0b0f02cde73e098 open-plc-utils-1be781d1ea81827e5f6c1a35961c65dd4d15472c.tar.gz diff --git a/buildroot/package/open-plc-utils/open-plc-utils.mk b/buildroot/package/open-plc-utils/open-plc-utils.mk new file mode 100644 index 0000000..d45bb9d --- /dev/null +++ b/buildroot/package/open-plc-utils/open-plc-utils.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# open-plc-utils +# +################################################################################ + +OPEN_PLC_UTILS_VERSION = 1be781d1ea81827e5f6c1a35961c65dd4d15472c +OPEN_PLC_UTILS_SITE = $(call github,qca,open-plc-utils,$(OPEN_PLC_UTILS_VERSION)) +OPEN_PLC_UTILS_LICENSE = BSD-3-Clause +OPEN_PLC_UTILS_LICENSE_FILES = LICENSE + +# We unfortunately can't use TARGET_CONFIGURE_OPTS, as it would +# override the package CFLAGS, LDFLAGS and CXXFLAGS definitions. +# +# Yes, we're passing __UCLIBC__ in EXTRA_CFLAGS, as it fixes a build +# issue for non-uClibc toolchains. It is the very crappy solution +# suggested at https://github.com/qca/open-plc-utils/issues/36. +define OPEN_PLC_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CROSS=$(TARGET_CROSS) EXTRA_CFLAGS="-D__UCLIBC__" -C $(@D) +endef + +define OPEN_PLC_UTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) ROOTFS=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/open2300/0001-fix-makefile.patch b/buildroot/package/open2300/0001-fix-makefile.patch new file mode 100644 index 0000000..c3bb252 --- /dev/null +++ b/buildroot/package/open2300/0001-fix-makefile.patch @@ -0,0 +1,52 @@ +From b0a1f12349bee43040a889c7e74873cfb253b9d8 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Thu, 6 Feb 2014 21:42:50 +0100 +Subject: [PATCH] fix makefile + +- allow to extend CFLAGS and CC_LDFLAGS +- remove hard-coded include dirs. and lib. dirs. (which pointed to some + location in the host system) + +Signed-off-by: Samuel Martin +--- + Makefile | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index 92a2cc0..1b54175 100755 +--- a/Makefile ++++ b/Makefile +@@ -37,9 +37,9 @@ MYSQLHISTLOGOBJ = mysqlhistlog2300.o rw2300.o linux2300.o win2300.o + + VERSION = 1.11 + +-CFLAGS = -Wall -O3 -DVERSION=\"$(VERSION)\" +-CC_LDFLAGS = -lm +-CC_WINFLAG = ++override CFLAGS += -Wall -O3 -DVERSION=\"$(VERSION)\" ++override CC_LDFLAGS += -lm ++CC_WINFLAG = + # For Windows - comment the two line above and un-comment the two lines below. + #CC_LDFLAGS = -lm -lwsock32 + #CC_WINFLAG = -mwindows +@@ -80,7 +80,7 @@ xml2300 : $(XMLOBJ) + $(CC) $(CFLAGS) -o $@ $(XMLOBJ) $(CC_LDFLAGS) $(CC_WINFLAG) + + mysql2300: +- $(CC) $(CFLAGS) -o mysql2300 mysql2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient ++ $(CC) $(CFLAGS) -o mysql2300 mysql2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) + + pgsql2300: $(PGSQLOBJ) + $(CC) $(CFLAGS) -o $@ $(PGSQLOBJ) $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/pgsql -L/usr/lib/pgsql -lpq +@@ -95,7 +95,7 @@ minmax2300: $(MINMAXOBJ) + $(CC) $(CFLAGS) -o $@ $(MINMAXOBJ) $(CC_LDFLAGS) $(CC_WINFLAG) + + mysqlhistlog2300 : +- $(CC) $(CFLAGS) -o mysqlhistlog2300 mysqlhistlog2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient ++ $(CC) $(CFLAGS) -o mysqlhistlog2300 mysqlhistlog2300.c rw2300.c linux2300.c $(CC_LDFLAGS) $(CC_WINFLAG) + + + install: +-- +1.8.5.3 + diff --git a/buildroot/package/open2300/Config.in b/buildroot/package/open2300/Config.in new file mode 100644 index 0000000..df0a969 --- /dev/null +++ b/buildroot/package/open2300/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_OPEN2300 + bool "open2300" + help + open2300 reads (and writes) data from a Lacrosse + WS2300/WS2305/WS2310/WS2315 Weather Station + + http://www.lavrsen.dk/foswiki/bin/view/Open2300/WebHome diff --git a/buildroot/package/open2300/open2300.mk b/buildroot/package/open2300/open2300.mk new file mode 100644 index 0000000..589d344 --- /dev/null +++ b/buildroot/package/open2300/open2300.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# open2300 +# +################################################################################ + +OPEN2300_SITE = http://www.lavrsen.dk/svn/open2300/trunk +OPEN2300_SITE_METHOD = svn +OPEN2300_VERSION = 12 +OPEN2300_LICENSE = GPL-2.0 +OPEN2300_LICENSE_FILES = COPYING + +OPEN2300_BINS = \ + open2300 dump2300 log2300 fetch2300 wu2300 cw2300 history2300 \ + histlog2300 bin2300 xml2300 light2300 interval2300 minmax2300 +OPEN2300_CFLAGS = $(TARGET_CFLAGS) +OPEN2300_LDFLAGS = $(TARGET_LDFLAGS) + +ifeq ($(BR2_PACKAGE_MYSQL),y) +OPEN2300_DEPENDENCIES += mysql +OPEN2300_BINS += mysql2300 mysqlhistlog2300 +OPEN2300_CFLAGS += -I$(STAGING_DIR)/usr/include/mysql +OPEN2300_LDFLAGS += -L$(STAGING_DIR)/usr/lib/mysql -lmysqlclient +ifeq ($(BR2_STATIC_LIBS),y) +# mysql needs -lz, so we need to specify it for static builds +OPEN2300_LDFLAGS += -lz +endif +endif + +define OPEN2300_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" \ + CFLAGS="$(OPEN2300_CFLAGS)" CC_LDFLAGS="$(OPEN2300_LDFLAGS)" \ + -C $(@D) $(OPEN2300_BINS) +endef + +define OPEN2300_INSTALL_TARGET_CMDS + for prog in $(OPEN2300_BINS); do \ + $(INSTALL) -D -m 0755 $(@D)/$$prog $(TARGET_DIR)/usr/bin/$$prog ; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/openal/Config.in b/buildroot/package/openal/Config.in new file mode 100644 index 0000000..a564156 --- /dev/null +++ b/buildroot/package/openal/Config.in @@ -0,0 +1,32 @@ +# openal can: +# - use __atomic_*() intrinsics when available +# - otherwise use __sync_*() intrinsics when available. It needs the +# 4-byte ones on 32 bits architectures, and the 4-byte and 8-byte +# one on 64 bits architecture +# - it also provides its one implementation of atomic operations on +# x86 and x86_64, but we dont take those into account since in most +# situations __atomic_*() or __sync_*() will be available, and not +# all x86 CPUs provide the necessary assembly instructions. +config BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + bool + default y if BR2_TOOLCHAIN_HAS_ATOMIC + default y if BR2_TOOLCHAIN_HAS_SYNC_4 && !BR2_ARCH_IS_64 + default y if BR2_TOOLCHAIN_HAS_SYNC_4 && BR2_TOOLCHAIN_HAS_SYNC_8 && BR2_ARCH_IS_64 + +config BR2_PACKAGE_OPENAL + bool "openal" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + help + OpenAL provides capabilities for playing audio in a virtual + 3D environment. Distance attenuation, doppler shift, and + directional sound emitters are among the features handled by + the API. + + http://kcat.strangesoft.net/openal.html + +comment "openal needs a toolchain w/ NPTL, C++" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/openal/openal.hash b/buildroot/package/openal/openal.hash new file mode 100644 index 0000000..aead6e1 --- /dev/null +++ b/buildroot/package/openal/openal.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2d51a6529526ef22484f51567e31a5c346a599767991a3dc9d4dcd9d9cec71dd openal-soft-1.18.1.tar.bz2 diff --git a/buildroot/package/openal/openal.mk b/buildroot/package/openal/openal.mk new file mode 100644 index 0000000..439f5f1 --- /dev/null +++ b/buildroot/package/openal/openal.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# openal +# +################################################################################ + +OPENAL_VERSION = 1.18.1 +OPENAL_SOURCE = openal-soft-$(OPENAL_VERSION).tar.bz2 +OPENAL_SITE = http://kcat.strangesoft.net/openal-releases +OPENAL_LICENSE = LGPL-2.0+ +OPENAL_LICENSE_FILES = COPYING +OPENAL_INSTALL_STAGING = YES + +# We don't need examples, tests and utilities, Distros don't ship them either +OPENAL_CONF_OPTS += -DALSOFT_UTILS=OFF -DALSOFT_EXAMPLES=OFF -DALSOFT_TESTS=OFF + +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_8),y) +OPENAL_CONF_OPTS += -DEXTRA_LIBS=atomic +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +OPENAL_DEPENDENCIES += alsa-lib +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_ALSA=ON +else +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_ALSA=OFF +endif + +ifeq ($(BR2_PACKAGE_JACK2),y) +OPENAL_DEPENDENCIES += jack2 +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_JACK=ON +else +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_JACK=OFF +endif + +ifeq ($(BR2_PACKAGE_PORTAUDIO),y) +OPENAL_DEPENDENCIES += portaudio +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PORTAUDIO=ON +else +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PORTAUDIO=OFF +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +OPENAL_DEPENDENCIES += pulseaudio +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PULSEAUDIO=ON +else +OPENAL_CONF_OPTS += -DALSOFT_REQUIRE_PULSEAUDIO=OFF +endif + +ifeq ($(BR2_STATIC_LIBS),y) +OPENAL_CONF_OPTS += -DLIBTYPE=STATIC +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/openblas/0001-Complete-support-for-MIPS-n32-ABI.patch b/buildroot/package/openblas/0001-Complete-support-for-MIPS-n32-ABI.patch new file mode 100644 index 0000000..6e6c5a6 --- /dev/null +++ b/buildroot/package/openblas/0001-Complete-support-for-MIPS-n32-ABI.patch @@ -0,0 +1,116 @@ +From 7f28cd1f88145a701e5dbbf50558bb65fce79f61 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Thu, 14 Jul 2016 17:20:51 +0100 +Subject: [PATCH] Complete support for MIPS n32 ABI + +Pull request: https://github.com/xianyi/OpenBLAS/pull/926 + +Signed-off-by: Vicente Olivert Riera +--- + Makefile.system | 27 +++++++++------------------ + c_check | 9 +++++++-- + f_check | 7 ++++++- + 3 files changed, 22 insertions(+), 21 deletions(-) + +diff --git a/Makefile.system b/Makefile.system +index 24a7a64..bbcdb82 100644 +--- a/Makefile.system ++++ b/Makefile.system +@@ -502,13 +502,16 @@ endif + + ifdef NO_BINARY_MODE + +-ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) ++ifeq ($(ARCH), $(filter $(ARCH),mips64)) + ifdef BINARY64 + CCOMMON_OPT += -mabi=64 + else +-CCOMMON_OPT += -mabi=32 ++CCOMMON_OPT += -mabi=n32 + endif + BINARY_DEFINED = 1 ++else ifeq ($(ARCH), $(filter $(ARCH),mips)) ++CCOMMON_OPT += -mabi=32 ++BINARY_DEFINED = 1 + endif + + ifeq ($(CORE), LOONGSON3A) +@@ -599,12 +602,14 @@ ifneq ($(NO_LAPACK), 1) + EXTRALIB += -lgfortran + endif + ifdef NO_BINARY_MODE +-ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) ++ifeq ($(ARCH), $(filter $(ARCH),mips64)) + ifdef BINARY64 + FCOMMON_OPT += -mabi=64 + else +-FCOMMON_OPT += -mabi=32 ++FCOMMON_OPT += -mabi=n32 + endif ++else ifeq ($(ARCH), $(filter $(ARCH),mips)) ++FCOMMON_OPT += -mabi=32 + endif + else + ifdef BINARY64 +@@ -688,20 +693,6 @@ endif + endif + endif + +-ifeq ($(filter $(ARCH),mips64 mips)) +-ifndef BINARY64 +-FCOMMON_OPT += -m32 +-else +-FCOMMON_OPT += -m64 +-endif +-else +-ifdef BINARY64 +-FCOMMON_OPT += -mabi=64 +-else +-FCOMMON_OPT += -mabi=32 +-endif +-endif +- + ifeq ($(USE_OPENMP), 1) + FCOMMON_OPT += -mp + endif +diff --git a/c_check b/c_check +index 50ff360..9f457df 100644 +--- a/c_check ++++ b/c_check +@@ -79,8 +79,13 @@ if ($os eq "AIX") { + $defined = 1; + } + +-if (($architecture eq "mips") || ($architecture eq "mips64")) { +- $compiler_name .= " -mabi=32" if ($binary eq "32"); ++if ($architecture eq "mips") { ++ $compiler_name .= " -mabi=32"; ++ $defined = 1; ++} ++ ++if ($architecture eq "mips64") { ++ $compiler_name .= " -mabi=n32" if ($binary eq "32"); + $compiler_name .= " -mabi=64" if ($binary eq "64"); + $defined = 1; + } +diff --git a/f_check b/f_check +index 4c03ac7..3520e8b 100644 +--- a/f_check ++++ b/f_check +@@ -223,7 +223,12 @@ if (!$?) { + } + #For gfortran MIPS + if ($?) { +- $link = `$compiler $openmp -mabi=32 -v ftest2.f 2>&1 && rm -f a.out a.exe`; ++ $mips_data = `$compiler_bin -E -dM - < /dev/null`; ++ if ($mips_data =~ /_MIPS_ISA_MIPS64/) { ++ $link = `$compiler $openmp -mabi=n32 -v ftest2.f 2>&1 && rm -f a.out a.exe`; ++ } else { ++ $link = `$compiler $openmp -mabi=32 -v ftest2.f 2>&1 && rm -f a.out a.exe`; ++ } + } + $binary = "" if ($?); + } +-- +2.7.3 + diff --git a/buildroot/package/openblas/0002-Makefile.arm-remove-march-flags.patch b/buildroot/package/openblas/0002-Makefile.arm-remove-march-flags.patch new file mode 100644 index 0000000..39058f7 --- /dev/null +++ b/buildroot/package/openblas/0002-Makefile.arm-remove-march-flags.patch @@ -0,0 +1,73 @@ +From 71b9e9b7f080c464777d07bd1a917a1c449d2ef8 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 7 Aug 2016 23:20:00 +0200 +Subject: [PATCH] Makefile.arm: remove -march flags + +The provided -march flags, especially for ARMv5 and ARMv6 may not +necessarily match the needed ones: for ARMv5, it might be armv5, +armv5te, armv5t, etc. If the wrong one is used, the incorrect toolchain +sysroot can be used in a multilib toolchain. + +Therefore, let the user building OpenBLAS pass the appropriate -march +flag. + +The other flags, such as -mfpu=vfp or -mfloat-abi=hard are kept, as they +are actually required for the build to proceed (OpenBLAS uses VFP +instructions, and assume an EABIhf ABI). + +Signed-off-by: Thomas Petazzoni +--- + Makefile.arm | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +diff --git a/Makefile.arm b/Makefile.arm +index 62bf275..c0d6ab8 100644 +--- a/Makefile.arm ++++ b/Makefile.arm +@@ -1,31 +1,31 @@ + # ifeq logical or + ifeq ($(CORE), $(filter $(CORE),CORTEXA9 CORTEXA15)) + ifeq ($(OSNAME), Android) +-CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a +-FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a ++CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard ++FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard + else +-CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a +-FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a ++CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard ++FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard + endif + endif + + ifeq ($(CORE), ARMV7) + ifeq ($(OSNAME), Android) +-CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch +-FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch ++CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -Wl,--no-warn-mismatch ++FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -Wl,--no-warn-mismatch + else +-CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a +-FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a ++CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard ++FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard + endif + endif + + ifeq ($(CORE), ARMV6) +-CCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard -march=armv6 +-FCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard -march=armv6 ++CCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard ++FCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard + endif + + + ifeq ($(CORE), ARMV5) +-CCOMMON_OPT += -marm -march=armv5 +-FCOMMON_OPT += -marm -march=armv5 ++CCOMMON_OPT += -marm ++FCOMMON_OPT += -marm + endif +-- +2.7.4 + diff --git a/buildroot/package/openblas/Config.in b/buildroot/package/openblas/Config.in new file mode 100644 index 0000000..8e71a43 --- /dev/null +++ b/buildroot/package/openblas/Config.in @@ -0,0 +1,76 @@ +config BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET + string + default "P2" if BR2_x86_pentium2 + default "KATMAI" if BR2_x86_pentium3 + default "NORTHWOOD" if BR2_x86_pentium4 + default "PRESCOTT" if BR2_x86_prescott || BR2_x86_nocona + default "BANIAS" if BR2_x86_pentium_m + default "CORE2" if BR2_x86_core2 + default "NEHALEM" if BR2_x86_corei7 || BR2_x86_silvermont + default "SANDYBRIDGE" if BR2_x86_corei7_avx + default "HASWELL" if BR2_x86_core_avx2 + default "ATOM" if BR2_x86_atom + default "ATHLON" if BR2_x86_athlon || BR2_x86_athlon_4 + default "OPTERON" if BR2_x86_opteron + default "OPTERON_SSE3" if BR2_x86_opteron_sse3 + default "BARCELONA" if BR2_x86_barcelona + default "JAGUAR" if BR2_x86_jaguar + default "STEAMROLLER" if BR2_x86_steamroller + default "VIAC3" if BR2_x86_c3 || BR2_x86_c32 + default "POWER4" if BR2_powerpc_power4 + default "POWER5" if BR2_powerpc_power5 + default "POWER6" if BR2_powerpc_power6 + default "POWER7" if BR2_powerpc_power7 + default "POWER8" if BR2_powerpc_power8 + default "PPCG4" if BR2_powerpc_7400 || BR2_powerpc_7450 + default "PPC970" if BR2_powerpc_970 + default "PPC440" if BR2_powerpc_440 + default "PPC440FP2" if BR2_powerpc_440fp + # P5600 is built with MSA support which is only available in Codescape toolchains + default "P5600" if BR2_mips_p5600 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS + default "SICORTEX" if BR2_MIPS_CPU_MIPS64 + # I6400 is built with MSA support which is only available in Codescape toolchains + default "I6400" if BR2_mips_i6400 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS + # OpenBLAS assumes SPARC=Sparc v9 + default "SPARC" if BR2_sparc_v9 + # Cortex-A15 always have a VFPv4 + default "CORTEXA15" if (BR2_cortex_a15 && BR2_ARM_EABIHF) + # Cortex-A9 have an optional VFPv3, so we need to make sure it + # is available + default "CORTEXA9" if (BR2_cortex_a9 && BR2_ARM_EABIHF && \ + BR2_ARM_CPU_HAS_VFPV3) + default "ARMV5" if BR2_ARM_CPU_ARMV5 + # On ARMv6, OpenBLAS assumes that a VFP is available, and + # EABIhf is used + default "ARMV6" if (BR2_ARM_CPU_ARMV6 && BR2_ARM_EABIHF && \ + BR2_ARM_CPU_HAS_VFPV2) + # On ARMv7, OpenBLAS assumes that a full VFPv3+ is available + # (and not the more limited D16 variant), and that EABIhf is + # used. + default "ARMV7" if (BR2_ARM_CPU_ARMV7A && BR2_ARM_EABIHF && \ + BR2_ARM_CPU_HAS_VFPV3) + default "ARMV8" if BR2_aarch64 || BR2_aarch64_be + help + OpenBLAS target CPU. See TargetList.txt in the source tree for + the possible target strings. A possible value is set + automatically based on your Target Architecture Variant. + +config BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET != "" + +config BR2_PACKAGE_OPENBLAS + bool "openblas" + depends on BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS + help + An optimized BLAS library based on GotoBLAS2 1.13 BSD version. + + https://www.openblas.net/ + +if BR2_PACKAGE_OPENBLAS + +config BR2_PACKAGE_OPENBLAS_TARGET + string "OpenBLAS target CPU" + default BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET + +endif diff --git a/buildroot/package/openblas/openblas.hash b/buildroot/package/openblas/openblas.hash new file mode 100644 index 0000000..b402cac --- /dev/null +++ b/buildroot/package/openblas/openblas.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2ad0270a39dbaf891b439baacf198ea4ab149cd6ed39a5f50c494723f1936be5 openblas-f04af36ad0e85b64f12a7c38095383192cc52345.tar.gz diff --git a/buildroot/package/openblas/openblas.mk b/buildroot/package/openblas/openblas.mk new file mode 100644 index 0000000..b206f3b --- /dev/null +++ b/buildroot/package/openblas/openblas.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# openblas +# +################################################################################ + +OPENBLAS_VERSION = f04af36ad0e85b64f12a7c38095383192cc52345 +OPENBLAS_SITE = $(call github,xianyi,OpenBLAS,$(OPENBLAS_VERSION)) +OPENBLAS_LICENSE = BSD-3-Clause +OPENBLAS_LICENSE_FILES = LICENSE +OPENBLAS_INSTALL_STAGING = YES + +# Initialise OpenBLAS make options to $(TARGET_CONFIGURE_OPTS) +OPENBLAS_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) + +# Enable cross-compiling +OPENBLAS_MAKE_OPTS += CROSS=1 + +# Set OpenBLAS target +OPENBLAS_MAKE_OPTS += TARGET=$(BR2_PACKAGE_OPENBLAS_TARGET) + +# When Fortran is not available, only build the C version of BLAS +ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),) +OPENBLAS_MAKE_OPTS += ONLY_CBLAS=1 +endif + +# Enable/Disable multi-threading (not for static-only since it uses dlfcn.h) +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS):$(BR2_STATIC_LIBS),y:) +OPENBLAS_MAKE_OPTS += USE_THREAD=1 +else +OPENBLAS_MAKE_OPTS += USE_THREAD=0 +endif + +# We don't know if OpenMP is available or not, so disable +OPENBLAS_MAKE_OPTS += USE_OPENMP=1 + +# Static-only/Shared-only toggle +ifeq ($(BR2_STATIC_LIBS),y) +OPENBLAS_MAKE_OPTS += NO_SHARED=1 +else ifeq ($(BR2_SHARED_LIBS),y) +OPENBLAS_MAKE_OPTS += NO_STATIC=1 +endif + +# binutils version <= 2.23.2 has a bug +# (https://sourceware.org/bugzilla/show_bug.cgi?id=14887) where +# whitespaces in ARM register specifications such as [ r1, #12 ] or [ +# r2 ] cause the assembler to reject the code. Since there are +# numerous instances of such cases in the code, we use sed rather than +# a patch. We simply replace [ foobar ] by [foobar] to work around the +# problem. +define OPENBLAS_FIXUP_ARM_ASSEMBLY + $(SED) 's%\[\s*%\[%;s%\s*\]%\]%' $(@D)/kernel/arm/*.S +endef + +OPENBLAS_POST_PATCH_HOOKS += OPENBLAS_FIXUP_ARM_ASSEMBLY + +define OPENBLAS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \ + -C $(@D) +endef + +define OPENBLAS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \ + -C $(@D) install PREFIX=$(STAGING_DIR)/usr +endef + +define OPENBLAS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENBLAS_MAKE_OPTS) \ + -C $(@D) install PREFIX=$(TARGET_DIR)/usr +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/openbox/Config.in b/buildroot/package/openbox/Config.in new file mode 100644 index 0000000..3ddd376 --- /dev/null +++ b/buildroot/package/openbox/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_OPENBOX + bool "openbox" + depends on BR2_PACKAGE_XORG7 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_INSTALL_LIBSTDCPP # pango -> freetype + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_XLIB_LIBX11 + # libxft and libxrender are needed to get xft support in pango + select BR2_PACKAGE_XLIB_LIBXFT + select BR2_PACKAGE_XLIB_LIBXRENDER + help + Openbox is a highly configurable, next generation window + manager with extensive standards support. + + http://openbox.org + +comment "openbox needs a toolchain w/ C++, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + !BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_XORG7 diff --git a/buildroot/package/openbox/openbox.hash b/buildroot/package/openbox/openbox.hash new file mode 100644 index 0000000..a8696b3 --- /dev/null +++ b/buildroot/package/openbox/openbox.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 abe75855cc5616554ffd47134ad15291fe37ebbebf1a80b69cbde9d670f0e26d openbox-3.6.1.tar.xz diff --git a/buildroot/package/openbox/openbox.mk b/buildroot/package/openbox/openbox.mk new file mode 100644 index 0000000..91d1c86 --- /dev/null +++ b/buildroot/package/openbox/openbox.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# openbox +# +################################################################################ + +OPENBOX_VERSION = 3.6.1 +OPENBOX_SOURCE = openbox-$(OPENBOX_VERSION).tar.xz +OPENBOX_SITE = http://openbox.org/dist/openbox +OPENBOX_LICENSE = GPL-2.0+ +OPENBOX_LICENSE_FILES = COPYING + +OPENBOX_CONF_OPTS = \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib + +OPENBOX_DEPENDENCIES = xlib_libX11 libxml2 libglib2 pango host-pkgconf + +ifeq ($(BR2_PACKAGE_IMLIB2_X),y) +OPENBOX_CONF_OPTS += --enable-imlib2 +OPENBOX_DEPENDENCIES += imlib2 +else +OPENBOX_CONF_OPTS += --disable-imlib2 +endif + +ifeq ($(BR2_PACKAGE_STARTUP_NOTIFICATION),y) +OPENBOX_CONF_OPTS += --enable-startup-notification +OPENBOX_DEPENDENCIES += startup-notification +else +OPENBOX_CONF_OPTS += --disable-startup-notification +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBSM),y) +OPENBOX_CONF_OPTS += --enable-session-management +OPENBOX_DEPENDENCIES += xlib_libSM +else +OPENBOX_CONF_OPTS += --disable-session-management +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +OPENBOX_CONF_OPTS += --enable-xinerama +OPENBOX_DEPENDENCIES += xlib_libXinerama +else +OPENBOX_CONF_OPTS += --disable-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +OPENBOX_CONF_OPTS += --enable-xrandr +OPENBOX_DEPENDENCIES += xlib_libXrandr +else +OPENBOX_CONF_OPTS += --disable-xrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +OPENBOX_DEPENDENCIES += xlib_libXcursor +OPENBOX_CONF_OPTS += --enable-xcursor +else +OPENBOX_CONF_OPTS += --disable-xcursor +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/opencore-amr/Config.in b/buildroot/package/opencore-amr/Config.in new file mode 100644 index 0000000..e35c8dd --- /dev/null +++ b/buildroot/package/opencore-amr/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_OPENCORE_AMR + bool "opencore-amr" + depends on BR2_INSTALL_LIBSTDCPP + help + Library of OpenCORE Framework implementation of Adaptive + Multi Rate Narrowband and Wideband (AMR-NB and AMR-WB) + speech codec. + + http://opencore-amr.sourceforge.net/ + +comment "opencore-amr needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/opencore-amr/opencore-amr.hash b/buildroot/package/opencore-amr/opencore-amr.hash new file mode 100644 index 0000000..b333822 --- /dev/null +++ b/buildroot/package/opencore-amr/opencore-amr.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/opencore-amr/files/opencore-amr/ +md5 e0798587b91411cc092aa73091a97dfc opencore-amr-0.1.5.tar.gz +sha1 bef4d1e3a8a155b47569b6691a223843b33e279e opencore-amr-0.1.5.tar.gz +# Locally computed: +sha256 2c006cb9d5f651bfb5e60156dbff6af3c9d35c7bbcc9015308c0aff1e14cd341 opencore-amr-0.1.5.tar.gz +sha256 8b3f1762349248d444ab9acbafe73941254e36e1064954da56bb9ddbd5873ddb LICENSE diff --git a/buildroot/package/opencore-amr/opencore-amr.mk b/buildroot/package/opencore-amr/opencore-amr.mk new file mode 100644 index 0000000..ac366e2 --- /dev/null +++ b/buildroot/package/opencore-amr/opencore-amr.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# opencore-amr +# +################################################################################ + +OPENCORE_AMR_VERSION = 0.1.5 +OPENCORE_AMR_SITE = http://downloads.sourceforge.net/project/opencore-amr/opencore-amr +OPENCORE_AMR_INSTALL_STAGING = YES +OPENCORE_AMR_LICENSE = Apache-2.0 +OPENCORE_AMR_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/buildroot/package/opencv/0001-atomic.patch b/buildroot/package/opencv/0001-atomic.patch new file mode 100644 index 0000000..8c9724d --- /dev/null +++ b/buildroot/package/opencv/0001-atomic.patch @@ -0,0 +1,259 @@ +From f71c288c6d853e623461f97cd72e6a9e6541f61a Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Tue, 1 Nov 2016 09:25:30 +0100 +Subject: [PATCH 1/4] Bug#714923: opencv FTBFS on sparc64 + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=714923 + +opencv uses functions from , but it wrongly assumes +this functions apply to an int type. While it is true for some +architectures, some architectures are using a long type there. The +correct type to use is _Atomic_word. + +Signed-off-by: Waldemar Brodkorb +[Samuel Martin: convert to git diff] +Signed-off-by: Samuel Martin +--- + modules/core/include/opencv2/core/core.hpp | 10 +++++----- + modules/core/include/opencv2/core/gpumat.hpp | 2 +- + modules/core/include/opencv2/core/operations.hpp | 4 ++-- + modules/core/src/gpumat.cpp | 2 +- + modules/core/src/matrix.cpp | 4 ++-- + modules/core/src/system.cpp | 8 ++++---- + modules/gpu/include/opencv2/gpu/gpu.hpp | 2 +- + modules/ocl/include/opencv2/ocl/ocl.hpp | 2 +- + modules/ocl/src/matrix_operations.cpp | 2 +- + modules/python/src2/cv2.cpp | 8 ++++---- + 10 files changed, 22 insertions(+), 22 deletions(-) + +diff --git a/modules/core/include/opencv2/core/core.hpp b/modules/core/include/opencv2/core/core.hpp +index 591d50a..5b4261e 100644 +--- a/modules/core/include/opencv2/core/core.hpp ++++ b/modules/core/include/opencv2/core/core.hpp +@@ -1290,7 +1290,7 @@ public: + operator const _Tp*() const; + + _Tp* obj; //< the object pointer. +- int* refcount; //< the associated reference counter ++ _Atomic_word* refcount; //< the associated reference counter + }; + + template +@@ -1490,9 +1490,9 @@ class CV_EXPORTS MatAllocator + public: + MatAllocator() {} + virtual ~MatAllocator() {} +- virtual void allocate(int dims, const int* sizes, int type, int*& refcount, ++ virtual void allocate(int dims, const int* sizes, int type, _Atomic_word*& refcount, + uchar*& datastart, uchar*& data, size_t* step) = 0; +- virtual void deallocate(int* refcount, uchar* datastart, uchar* data) = 0; ++ virtual void deallocate(_Atomic_word* refcount, uchar* datastart, uchar* data) = 0; + }; + + /*! +@@ -1985,7 +1985,7 @@ public: + + //! pointer to the reference counter; + // when matrix points to user-allocated data, the pointer is NULL +- int* refcount; ++ _Atomic_word* refcount; + + //! helper fields used in locateROI and adjustROI + uchar* datastart; +@@ -3449,7 +3449,7 @@ public: + { + Hdr(int _dims, const int* _sizes, int _type); + void clear(); +- int refcount; ++ _Atomic_word refcount; + int dims; + int valueOffset; + size_t nodeSize; +diff --git a/modules/core/include/opencv2/core/gpumat.hpp b/modules/core/include/opencv2/core/gpumat.hpp +index 68647d9..d488c27 100644 +--- a/modules/core/include/opencv2/core/gpumat.hpp ++++ b/modules/core/include/opencv2/core/gpumat.hpp +@@ -301,7 +301,7 @@ namespace cv { namespace gpu + + //! pointer to the reference counter; + // when GpuMatrix points to user-allocated data, the pointer is NULL +- int* refcount; ++ _Atomic_word* refcount; + + //! helper fields used in locateROI and adjustROI + uchar* datastart; +diff --git a/modules/core/include/opencv2/core/operations.hpp b/modules/core/include/opencv2/core/operations.hpp +index 0ae51c6..a455502 100644 +--- a/modules/core/include/opencv2/core/operations.hpp ++++ b/modules/core/include/opencv2/core/operations.hpp +@@ -2589,7 +2589,7 @@ template inline Ptr<_Tp>::Ptr(_Tp* _obj) : obj(_obj) + { + if(obj) + { +- refcount = (int*)fastMalloc(sizeof(*refcount)); ++ refcount = (_Atomic_word*)fastMalloc(sizeof(*refcount)); + *refcount = 1; + } + else +@@ -2628,7 +2628,7 @@ template inline Ptr<_Tp>& Ptr<_Tp>::operator = (const Ptr<_Tp>& _p + { + if (this != &_ptr) + { +- int* _refcount = _ptr.refcount; ++ _Atomic_word* _refcount = _ptr.refcount; + if( _refcount ) + CV_XADD(_refcount, 1); + release(); +diff --git a/modules/core/src/gpumat.cpp b/modules/core/src/gpumat.cpp +index 9669191..0bd2568 100644 +--- a/modules/core/src/gpumat.cpp ++++ b/modules/core/src/gpumat.cpp +@@ -716,7 +716,7 @@ void cv::gpu::GpuMat::create(int _rows, int _cols, int _type) + datastart = data = static_cast(devPtr); + dataend = data + nettosize; + +- refcount = static_cast(fastMalloc(sizeof(*refcount))); ++ refcount = static_cast<_Atomic_word*>(fastMalloc(sizeof(*refcount))); + *refcount = 1; + } + } +diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp +index 57abffc..7b840a0 100644 +--- a/modules/core/src/matrix.cpp ++++ b/modules/core/src/matrix.cpp +@@ -213,7 +213,7 @@ void Mat::create(int d, const int* _sizes, int _type) + { + size_t totalsize = alignSize(step.p[0]*size.p[0], (int)sizeof(*refcount)); + data = datastart = (uchar*)fastMalloc(totalsize + (int)sizeof(*refcount)); +- refcount = (int*)(data + totalsize); ++ refcount = (_Atomic_word*)(data + totalsize); + *refcount = 1; + } + else +@@ -228,7 +228,7 @@ void Mat::create(int d, const int* _sizes, int _type) + allocator = 0; + size_t totalSize = alignSize(step.p[0]*size.p[0], (int)sizeof(*refcount)); + data = datastart = (uchar*)fastMalloc(totalSize + (int)sizeof(*refcount)); +- refcount = (int*)(data + totalSize); ++ refcount = (_Atomic_word*)(data + totalSize); + *refcount = 1; + } + #else +diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp +index f5a1af2..9a7b262 100644 +--- a/modules/core/src/system.cpp ++++ b/modules/core/src/system.cpp +@@ -892,7 +892,7 @@ struct Mutex::Impl + void unlock() { LeaveCriticalSection(&cs); } + + CRITICAL_SECTION cs; +- int refcount; ++ _Atomic_word refcount; + }; + + #ifndef __GNUC__ +@@ -920,7 +920,7 @@ struct Mutex::Impl + void unlock() { OSSpinLockUnlock(&sl); } + + OSSpinLock sl; +- int refcount; ++ _Atomic_word refcount; + }; + + #elif defined __linux__ && !defined ANDROID && !defined __LINUXTHREADS_OLD__ +@@ -935,7 +935,7 @@ struct Mutex::Impl + void unlock() { pthread_spin_unlock(&sl); } + + pthread_spinlock_t sl; +- int refcount; ++ _Atomic_word refcount; + }; + + #else +@@ -950,7 +950,7 @@ struct Mutex::Impl + void unlock() { pthread_mutex_unlock(&sl); } + + pthread_mutex_t sl; +- int refcount; ++ _Atomic_word refcount; + }; + + #endif +diff --git a/modules/gpu/include/opencv2/gpu/gpu.hpp b/modules/gpu/include/opencv2/gpu/gpu.hpp +index de16982..266fa2f 100644 +--- a/modules/gpu/include/opencv2/gpu/gpu.hpp ++++ b/modules/gpu/include/opencv2/gpu/gpu.hpp +@@ -125,7 +125,7 @@ public: + size_t step; + + uchar* data; +- int* refcount; ++ _Atomic_word* refcount; + + uchar* datastart; + uchar* dataend; +diff --git a/modules/ocl/include/opencv2/ocl/ocl.hpp b/modules/ocl/include/opencv2/ocl/ocl.hpp +index e8eb3e8..5ea05fc 100644 +--- a/modules/ocl/include/opencv2/ocl/ocl.hpp ++++ b/modules/ocl/include/opencv2/ocl/ocl.hpp +@@ -404,7 +404,7 @@ namespace cv + + //! pointer to the reference counter; + // when oclMatrix points to user-allocated data, the pointer is NULL +- int *refcount; ++ _Atomic_word *refcount; + + //! helper fields used in locateROI and adjustROI + //datastart and dataend are not used in current version +diff --git a/modules/ocl/src/matrix_operations.cpp b/modules/ocl/src/matrix_operations.cpp +index 331e432..c61dca4 100644 +--- a/modules/ocl/src/matrix_operations.cpp ++++ b/modules/ocl/src/matrix_operations.cpp +@@ -591,7 +591,7 @@ void cv::ocl::oclMat::createEx(int _rows, int _cols, int _type, DevMemRW rw_type + datastart = data = (uchar *)dev_ptr; + dataend = data + nettosize; + +- refcount = (int *)fastMalloc(sizeof(*refcount)); ++ refcount = (_Atomic_word *)fastMalloc(sizeof(*refcount)); + *refcount = 1; + } + } +diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp +index 04cea39..40e5d43 100644 +--- a/modules/python/src2/cv2.cpp ++++ b/modules/python/src2/cv2.cpp +@@ -157,12 +157,12 @@ static PyObject* failmsgp(const char *fmt, ...) + static size_t REFCOUNT_OFFSET = (size_t)&(((PyObject*)0)->ob_refcnt) + + (0x12345678 != *(const size_t*)"\x78\x56\x34\x12\0\0\0\0\0")*sizeof(int); + +-static inline PyObject* pyObjectFromRefcount(const int* refcount) ++static inline PyObject* pyObjectFromRefcount(const _Atomic_word* refcount) + { + return (PyObject*)((size_t)refcount - REFCOUNT_OFFSET); + } + +-static inline int* refcountFromPyObject(const PyObject* obj) ++static inline _Atomic_word* refcountFromPyObject(const PyObject* obj) + { + return (int*)((size_t)obj + REFCOUNT_OFFSET); + } +@@ -173,7 +173,7 @@ public: + NumpyAllocator() {} + ~NumpyAllocator() {} + +- void allocate(int dims, const int* sizes, int type, int*& refcount, ++ void allocate(int dims, const int* sizes, int type, _Atomic_word*& refcount, + uchar*& datastart, uchar*& data, size_t* step) + { + PyEnsureGIL gil; +@@ -206,7 +206,7 @@ public: + datastart = data = (uchar*)PyArray_DATA((PyArrayObject*) o); + } + +- void deallocate(int* refcount, uchar*, uchar*) ++ void deallocate(_Atomic_word* refcount, uchar*, uchar*) + { + PyEnsureGIL gil; + if( !refcount ) +-- +2.10.2 + diff --git a/buildroot/package/opencv/0002-CMakeLists.txt-Do-not-add-libdl-to-LINKER_LIBS-for-s.patch b/buildroot/package/opencv/0002-CMakeLists.txt-Do-not-add-libdl-to-LINKER_LIBS-for-s.patch new file mode 100644 index 0000000..6d63411 --- /dev/null +++ b/buildroot/package/opencv/0002-CMakeLists.txt-Do-not-add-libdl-to-LINKER_LIBS-for-s.patch @@ -0,0 +1,39 @@ +From 22e03ef8a9e3adcbc6b2f16c3cc98e4e14443eed Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 24 Sep 2016 17:51:22 +0200 +Subject: [PATCH 1/1] CMakeLists.txt: Do not add libdl to LINKER_LIBS for + static builds + +Without this patch -ldl is present in opencv.pc which breaks OpenCV +detection by ffmpeg, detected by buildroot autobuilders: + +http://autobuild.buildroot.net/results/765/7657e01481995a4f0d725467e935a83928a59a04//ffmpeg-3.1.3/config.log + +/home/peko/autobuild/instance-1/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/4.9.4/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: cannot find -ldl + +Patch sent upstream: https://github.com/opencv/opencv/pull/7337 + +Signed-off-by: Bernd Kuhls +--- + CMakeLists.txt | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 007b80d..99b047d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -457,7 +457,10 @@ if(UNIX) + elseif(${CMAKE_SYSTEM_NAME} MATCHES "QNX") + set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} m) + else() +- set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m pthread rt) ++ if(BUILD_SHARED_LIBS) ++ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl) ++ endif() ++ set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} m pthread rt) + endif() + else() + set(HAVE_LIBPTHREAD YES) +-- +2.9.3 + diff --git a/buildroot/package/opencv/0003-Update-OpenCVCompilerOptions.cmake.patch b/buildroot/package/opencv/0003-Update-OpenCVCompilerOptions.cmake.patch new file mode 100644 index 0000000..9a81d93 --- /dev/null +++ b/buildroot/package/opencv/0003-Update-OpenCVCompilerOptions.cmake.patch @@ -0,0 +1,32 @@ +From 126de0cd95418811e302996161e03195bf7e631a Mon Sep 17 00:00:00 2001 +From: neok-m4700 +Date: Tue, 25 Jul 2017 10:25:20 +0200 +Subject: [PATCH] Update OpenCVCompilerOptions.cmake + +misplaced else + +[Upstream commit: https://github.com/opencv/opencv/commit/126de0cd95418811e302996161e03195bf7e631a] +Signed-off-by: Samuel Martin +--- + cmake/OpenCVCompilerOptions.cmake | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/cmake/OpenCVCompilerOptions.cmake b/cmake/OpenCVCompilerOptions.cmake +index 9b2a4e42e..7b079c5f9 100644 +--- a/cmake/OpenCVCompilerOptions.cmake ++++ b/cmake/OpenCVCompilerOptions.cmake +@@ -18,9 +18,9 @@ if(ENABLE_CCACHE AND NOT CMAKE_COMPILER_IS_CCACHE) + message(STATUS "Unable to compile program with enabled ccache, reverting...") + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${__OLD_RULE_LAUNCH_COMPILE}") + endif() +- else() +- message(STATUS "Looking for ccache - not found") + endif() ++ else() ++ message(STATUS "Looking for ccache - not found") + endif() + endif() + +-- +2.15.0 + diff --git a/buildroot/package/opencv/Config.in b/buildroot/package/opencv/Config.in new file mode 100644 index 0000000..b7c8c41 --- /dev/null +++ b/buildroot/package/opencv/Config.in @@ -0,0 +1,309 @@ +menuconfig BR2_PACKAGE_OPENCV + bool "opencv-2.4" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + select BR2_PACKAGE_ZLIB + help + OpenCV (Open Source Computer Vision) is a library of + programming functions for real time computer vision. + + http://opencv.org/ + +if BR2_PACKAGE_OPENCV + +comment "OpenCV modules" + +config BR2_PACKAGE_OPENCV_LIB_CALIB3D + bool "calib3d" + default y + select BR2_PACKAGE_OPENCV_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + help + Include opencv_calib3d module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_CONTRIB + bool "contrib" + default y + select BR2_PACKAGE_OPENCV_LIB_CALIB3D + select BR2_PACKAGE_OPENCV_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + select BR2_PACKAGE_OPENCV_LIB_ML + select BR2_PACKAGE_OPENCV_LIB_OBJDETECT + select BR2_PACKAGE_OPENCV_LIB_VIDEO + help + Include opencv_contrib module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_FEATURES2D + bool "features2d" + default y + select BR2_PACKAGE_OPENCV_LIB_FLANN + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + help + Include opencv_features2d module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_FLANN + bool "flann" + default y + # opencv_core dependency is already enabled + help + Include opencv_flann module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_GPU + bool "gpu" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENCV_LIB_CALIB3D + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + select BR2_PACKAGE_OPENCV_LIB_LEGACY + select BR2_PACKAGE_OPENCV_LIB_OBJDETECT + select BR2_PACKAGE_OPENCV_LIB_PHOTO + select BR2_PACKAGE_OPENCV_LIB_VIDEO + help + Include opencv_gpu module into the OpenCV build. + +comment "gpu module needs a toolchain w/ dynamic libraries" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_OPENCV_LIB_HIGHGUI + bool "highgui" + default y + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + help + Include opencv_highgui module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_IMGPROC + bool "imgproc" + default y + # opencv_core dependency is already enabled + help + Include opencv_imgproc module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_LEGACY + bool "legacy" + default y + select BR2_PACKAGE_OPENCV_LIB_CALIB3D + select BR2_PACKAGE_OPENCV_LIB_ML + select BR2_PACKAGE_OPENCV_LIB_VIDEO + help + Include opencv_legacy module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_ML + bool "ml (machine learning)" + default y + # opencv_core dependency is already enabled + help + Include opencv_ml module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_NONFREE + bool "nonfree" + select BR2_PACKAGE_OPENCV_LIB_CALIB3D + select BR2_PACKAGE_OPENCV_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + help + Include opencv_nonfree module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_OBJDETECT + bool "objdetect" + default y + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + help + Include opencv_objdetect module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_PHOTO + bool "photo" + default y + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + help + Include opencv_photo module into the OpenCV build. + +comment "opencv_python module requires numpy which is not yet available." + +config BR2_PACKAGE_OPENCV_LIB_STITCHING + bool "stitching" + default y + select BR2_PACKAGE_OPENCV_LIB_CALIB3D + select BR2_PACKAGE_OPENCV_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + select BR2_PACKAGE_OPENCV_LIB_OBJDETECT + help + Include opencv_stitching module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_SUPERRES + bool "superres" + default y + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + select BR2_PACKAGE_OPENCV_LIB_VIDEO + help + Include opencv_superres "super resolution" - module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_TS + bool "ts (touchscreen)" + default y + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV_LIB_CALIB3D + select BR2_PACKAGE_OPENCV_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV_LIB_HIGHGUI + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + select BR2_PACKAGE_OPENCV_LIB_VIDEO + help + Include opencv_ts module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_VIDEO + bool "video" + default y + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + help + Include opencv_video module into the OpenCV build. + +config BR2_PACKAGE_OPENCV_LIB_VIDEOSTAB + bool "videostab" + default y + select BR2_PACKAGE_OPENCV_LIB_CALIB3D + select BR2_PACKAGE_OPENCV_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV_LIB_HIGHGUI + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + select BR2_PACKAGE_OPENCV_LIB_PHOTO + select BR2_PACKAGE_OPENCV_LIB_VIDEO + help + Include opencv_videostab module into the OpenCV build. + +if !BR2_STATIC_LIBS + +comment "Test sets" + +config BR2_PACKAGE_OPENCV_BUILD_TESTS + bool "build tests" + +config BR2_PACKAGE_OPENCV_BUILD_PERF_TESTS + bool "build performance tests" + +endif + +comment "Tests sets need a toolchain w/ dynamic libraries" + depends on BR2_STATIC_LIBS + +comment "3rd party support" + +config BR2_PACKAGE_OPENCV_WITH_FFMPEG + bool "ffmpeg support" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_SWSCALE + help + Use ffmpeg from the target system. + +choice + prompt "gstreamer support" + help + OpenCV prefers gstreamer-1 over gstreamer-0.10. + +config BR2_PACKAGE_OPENCV_WITHOUT_GSTREAMER + bool "none" + +config BR2_PACKAGE_OPENCV_WITH_GSTREAMER + bool "gstreamer-0.10" + depends on BR2_USE_MMU # gstreamer -> libglib2 + depends on BR2_USE_WCHAR # gstreamer -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer -> libglib2 + depends on !BR2_STATIC_LIBS # gstreamer + select BR2_PACKAGE_GSTREAMER + select BR2_PACKAGE_GST_PLUGINS_BASE + select BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP + +comment "gstreamer-0.10 support needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +config BR2_PACKAGE_OPENCV_WITH_GSTREAMER1 + bool "gstreamer-1.x" + depends on BR2_USE_MMU # gstreamer1 -> libglib2 + depends on BR2_USE_WCHAR # gstreamer1 -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer1 -> libglib2 + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + +comment "gstreamer-1.x support needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +endchoice + +config BR2_PACKAGE_OPENCV_WITH_GTK + bool "gtk support" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # libgtk2 -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libgtk2 -> libglib2 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # libgtk2 -> glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz + depends on BR2_PACKAGE_OPENCV_LIB_HIGHGUI + select BR2_PACKAGE_LIBGTK2 + +config BR2_PACKAGE_OPENCV_WITH_JASPER + bool "jpeg2000 support" + select BR2_PACKAGE_JASPER + help + Enable jpeg2000 support. + + Note: this does not use the libjasper bundled with opencv, + but uses the libjasper package installed system-wide by + Buildroot. + +config BR2_PACKAGE_OPENCV_WITH_JPEG + bool "jpeg support" + select BR2_PACKAGE_JPEG + help + Use shared libjpeg from the target system. + +config BR2_PACKAGE_OPENCV_WITH_PNG + bool "png support" + select BR2_PACKAGE_LIBPNG + help + Use shared libpng from the target system. + +config BR2_PACKAGE_OPENCV_WITH_QT + bool "qt backend support" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # qt + depends on BR2_PACKAGE_OPENCV_LIB_HIGHGUI + select BR2_PACKAGE_QT + select BR2_PACKAGE_QT_STL + select BR2_PACKAGE_QT_GUI_MODULE + select BR2_PACKAGE_QT_TEST + help + Use Qt with QtTest module and STL support + +config BR2_PACKAGE_OPENCV_WITH_TIFF + bool "tiff support" + select BR2_PACKAGE_TIFF + help + Use shared libtiff from the target system. + +config BR2_PACKAGE_OPENCV_WITH_V4L + bool "v4l support" + help + Enable Video 4 Linux support. + + If the package libv4l is enabled, its support is + automatically enabled. + +comment "Install options" + +config BR2_PACKAGE_OPENCV_INSTALL_DATA + bool "install extra data" + help + Install various data that is used by cv libraries and/or demo + applications, specifically for haarcascades and lbpcascades + features. + + For further information: see OpenCV documentation. + +endif # BR2_PACKAGE_OPENCV + +comment "opencv needs a toolchain w/ C++, NPTL, wchar" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS_NPTL) diff --git a/buildroot/package/opencv/opencv.hash b/buildroot/package/opencv/opencv.hash new file mode 100644 index 0000000..5b4b80d --- /dev/null +++ b/buildroot/package/opencv/opencv.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 fb4769d0119c35426c3754b7fb079b407911e863958db53bdec83c7794582e41 opencv-2.4.13.3.tar.gz +sha256 46e42877dfc3ac65769292cb4dc1a04b204ad9e40859a390f4c035d6179fbcc4 LICENSE diff --git a/buildroot/package/opencv/opencv.mk b/buildroot/package/opencv/opencv.mk new file mode 100644 index 0000000..d170aec --- /dev/null +++ b/buildroot/package/opencv/opencv.mk @@ -0,0 +1,260 @@ +################################################################################ +# +# opencv +# +################################################################################ + +OPENCV_VERSION = 2.4.13.3 +OPENCV_SITE = $(call github,itseez,opencv,$(OPENCV_VERSION)) +OPENCV_INSTALL_STAGING = YES +OPENCV_LICENSE = BSD-3-Clause +OPENCV_LICENSE_FILES = LICENSE +OPENCV_SUPPORTS_IN_SOURCE_BUILD = NO + +# OpenCV component options +OPENCV_CONF_OPTS += \ + -DBUILD_PERF_TESTS=$(if $(BR2_PACKAGE_OPENCV_BUILD_PERF_TESTS),ON,OFF) \ + -DBUILD_TESTS=$(if $(BR2_PACKAGE_OPENCV_BUILD_TESTS),ON,OFF) \ + -DBUILD_WITH_DEBUG_INFO=OFF + +# OpenCV build options +OPENCV_CONF_OPTS += \ + -DBUILD_WITH_STATIC_CRT=OFF \ + -DENABLE_FAST_MATH=ON \ + -DENABLE_NOISY_WARNINGS=OFF \ + -DENABLE_OMIT_FRAME_POINTER=ON \ + -DENABLE_PRECOMPILED_HEADERS=OFF \ + -DENABLE_PROFILING=OFF \ + -DOPENCV_CAN_BREAK_BINARY_COMPATIBILITY=ON + +# OpenCV link options +OPENCV_CONF_OPTS += \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ + -DCMAKE_SKIP_RPATH=OFF \ + -DCMAKE_USE_RELATIVE_PATHS=OFF + +# OpenCV packaging options: +OPENCV_CONF_OPTS += \ + -DBUILD_PACKAGE=OFF \ + -DENABLE_SOLUTION_FOLDERS=OFF \ + -DINSTALL_CREATE_DISTRIB=OFF + +# OpenCV module selection +OPENCV_CONF_OPTS += \ + -DBUILD_opencv_androidcamera=OFF \ + -DBUILD_opencv_apps=OFF \ + -DBUILD_opencv_calib3d=$(if $(BR2_PACKAGE_OPENCV_LIB_CALIB3D),ON,OFF) \ + -DBUILD_opencv_contrib=$(if $(BR2_PACKAGE_OPENCV_LIB_CONTRIB),ON,OFF) \ + -DBUILD_opencv_core=ON \ + -DBUILD_opencv_dynamicuda=OFF \ + -DBUILD_opencv_features2d=$(if $(BR2_PACKAGE_OPENCV_LIB_FEATURES2D),ON,OFF) \ + -DBUILD_opencv_flann=$(if $(BR2_PACKAGE_OPENCV_LIB_FLANN),ON,OFF) \ + -DBUILD_opencv_gpu=$(if $(BR2_PACKAGE_OPENCV_LIB_GPU),ON,OFF) \ + -DBUILD_opencv_highgui=$(if $(BR2_PACKAGE_OPENCV_LIB_HIGHGUI),ON,OFF) \ + -DBUILD_opencv_imgproc=$(if $(BR2_PACKAGE_OPENCV_LIB_IMGPROC),ON,OFF) \ + -DBUILD_opencv_java=OFF \ + -DBUILD_opencv_legacy=$(if $(BR2_PACKAGE_OPENCV_LIB_LEGACY),ON,OFF) \ + -DBUILD_opencv_ml=$(if $(BR2_PACKAGE_OPENCV_LIB_ML),ON,OFF) \ + -DBUILD_opencv_nonfree=$(if $(BR2_PACKAGE_OPENCV_LIB_NONFREE),ON,OFF) \ + -DBUILD_opencv_objdetect=$(if $(BR2_PACKAGE_OPENCV_LIB_OBJDETECT),ON,OFF) \ + -DBUILD_opencv_ocl=OFF \ + -DBUILD_opencv_photo=$(if $(BR2_PACKAGE_OPENCV_LIB_PHOTO),ON,OFF) \ + -DBUILD_opencv_python=OFF \ + -DBUILD_opencv_stitching=$(if $(BR2_PACKAGE_OPENCV_LIB_STITCHING),ON,OFF) \ + -DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV_LIB_SUPERRES),ON,OFF) \ + -DBUILD_opencv_ts=$(if $(BR2_PACKAGE_OPENCV_LIB_TS),ON,OFF) \ + -DBUILD_opencv_video=$(if $(BR2_PACKAGE_OPENCV_LIB_VIDEO),ON,OFF) \ + -DBUILD_opencv_videostab=$(if $(BR2_PACKAGE_OPENCV_LIB_VIDEOSTAB),ON,OFF) \ + -DBUILD_opencv_world=OFF + +# Hardware support options. +# +# * PowerPC support is turned off since its only effect is altering CFLAGS, +# adding '-mcpu=G3 -mtune=G5' to them, which is already handled by Buildroot. +OPENCV_CONF_OPTS += \ + -DENABLE_AVX=$(if $(BR2_X86_CPU_HAS_AVX),ON,OFF) \ + -DENABLE_AVX2=$(if $(BR2_X86_CPU_HAS_AVX2),ON,OFF) \ + -DENABLE_POWERPC=OFF \ + -DENABLE_SSE=$(if $(BR2_X86_CPU_HAS_SSE),ON,OFF) \ + -DENABLE_SSE2=$(if $(BR2_X86_CPU_HAS_SSE2),ON,OFF) \ + -DENABLE_SSE3=$(if $(BR2_X86_CPU_HAS_SSE3),ON,OFF) \ + -DENABLE_SSE41=$(if $(BR2_X86_CPU_HAS_SSE4),ON,OFF) \ + -DENABLE_SSE42=$(if $(BR2_X86_CPU_HAS_SSE42),ON,OFF) \ + -DENABLE_SSSE3=$(if $(BR2_X86_CPU_HAS_SSSE3),ON,OFF) \ + -DENABLE_NEON=$(if $(BR2_ARM_CPU_HAS_NEON),ON,OFF) + +# Cuda stuff +OPENCV_CONF_OPTS += \ + -DWITH_CUBLAS=OFF \ + -DWITH_CUDA=OFF \ + -DWITH_CUFFT=OFF + +# NVidia stuff +OPENCV_CONF_OPTS += -DWITH_NVCUVID=OFF + +# AMD stuff +OPENCV_CONF_OPTS += \ + -DWITH_OPENCLAMDBLAS=OFF \ + -DWITH_OPENCLAMDFFT=OFF + +# Intel stuff +OPENCV_CONF_OPTS += \ + -DWITH_INTELPERC=OFF \ + -DWITH_IPP=OFF \ + -DWITH_TBB=OFF + +# Smartek stuff +OPENCV_CONF_OPTS += -DWITH_GIGEAPI=OFF + +# Prosilica stuff +OPENCV_CONF_OPTS += -DWITH_PVAPI=OFF + +# Ximea stuff +OPENCV_CONF_OPTS += -DWITH_XIMEA=OFF + +# Non-Linux support (Android options) must remain OFF: +OPENCV_CONF_OPTS += \ + -DBUILD_ANDROID_CAMERA_WRAPPER=OFF \ + -DBUILD_ANDROID_EXAMPLES=OFF \ + -DBUILD_FAT_JAVA_LIB=OFF \ + -DBUILD_JAVA_SUPPORT=OFF \ + -DINSTALL_ANDROID_EXAMPLES=OFF \ + -DWITH_ANDROID_CAMERA=OFF + +# Non-Linux support (Mac OSX options) must remain OFF: +OPENCV_CONF_OPTS += \ + -DWITH_AVFOUNDATION=OFF \ + -DWITH_CARBON=OFF \ + -DWITH_QUICKTIME=OFF + +# Non-Linux support (Windows options) must remain OFF: +OPENCV_CONF_OPTS += \ + -DWITH_CSTRIPES=OFF \ + -DWITH_DSHOW=OFF \ + -DWITH_MSMF=OFF \ + -DWITH_VFW=OFF \ + -DWITH_VIDEOINPUT=OFF \ + -DWITH_WIN32UI=OFF + +# Software/3rd-party support options. +OPENCV_CONF_OPTS += \ + -DBUILD_JASPER=OFF \ + -DBUILD_JPEG=OFF \ + -DBUILD_NEW_PYTHON_SUPPORT=OFF \ + -DBUILD_OPENEXR=OFF \ + -DBUILD_PNG=OFF \ + -DBUILD_TIFF=OFF \ + -DBUILD_ZLIB=OFF \ + -DINSTALL_C_EXAMPLES=OFF \ + -DINSTALL_PYTHON_EXAMPLES=OFF \ + -DINSTALL_TO_MANGLED_PATHS=OFF + +# Disabled features (mostly because they are not available in Buildroot), but +# - eigen: OpenCV does not use it, not take any benefit from it. +OPENCV_CONF_OPTS += \ + -DWITH_1394=OFF \ + -DWITH_EIGEN=OFF \ + -DWITH_IMAGEIO=OFF \ + -DWITH_OPENCL=OFF \ + -DWITH_OPENEXR=OFF \ + -DWITH_OPENGL=OFF \ + -DWITH_OPENMP=OFF \ + -DWITH_OPENNI=OFF \ + -DWITH_UNICAP=OFF \ + -DWITH_XINE=OFF + +OPENCV_DEPENDENCIES += zlib + +ifeq ($(BR2_PACKAGE_OPENCV_WITH_FFMPEG),y) +OPENCV_CONF_OPTS += -DWITH_FFMPEG=ON +OPENCV_DEPENDENCIES += ffmpeg bzip2 +else +OPENCV_CONF_OPTS += -DWITH_FFMPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV_WITH_GSTREAMER),y) +OPENCV_CONF_OPTS += -DWITH_GSTREAMER_0_10=ON +OPENCV_DEPENDENCIES += gstreamer gst-plugins-base +else +OPENCV_CONF_OPTS += -DWITH_GSTREAMER_0_10=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV_WITH_GSTREAMER1),y) +OPENCV_CONF_OPTS += -DWITH_GSTREAMER=ON +OPENCV_DEPENDENCIES += gstreamer1 gst1-plugins-base +else +OPENCV_CONF_OPTS += -DWITH_GSTREAMER=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV_WITH_GTK),y) +OPENCV_CONF_OPTS += -DWITH_GTK=ON +OPENCV_DEPENDENCIES += libgtk2 +else +OPENCV_CONF_OPTS += -DWITH_GTK=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV_WITH_JASPER),y) +OPENCV_CONF_OPTS += -DWITH_JASPER=ON \ + -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -D__STDC_LIMIT_MACROS" +OPENCV_DEPENDENCIES += jasper +else +OPENCV_CONF_OPTS += -DWITH_JASPER=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV_WITH_JPEG),y) +OPENCV_CONF_OPTS += -DWITH_JPEG=ON +OPENCV_DEPENDENCIES += jpeg +else +OPENCV_CONF_OPTS += -DWITH_JPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV_WITH_PNG),y) +OPENCV_CONF_OPTS += -DWITH_PNG=ON +OPENCV_DEPENDENCIES += libpng +else +OPENCV_CONF_OPTS += -DWITH_PNG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV_WITH_QT),y) +OPENCV_CONF_OPTS += -DWITH_QT=4 +OPENCV_DEPENDENCIES += qt +else +OPENCV_CONF_OPTS += -DWITH_QT=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV_WITH_TIFF),y) +OPENCV_CONF_OPTS += -DWITH_TIFF=ON +OPENCV_DEPENDENCIES += tiff +else +OPENCV_CONF_OPTS += -DWITH_TIFF=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV_WITH_V4L),y) +OPENCV_CONF_OPTS += \ + -DWITH_LIBV4L=$(if $(BR2_PACKAGE_LIBV4L),ON,OFF) \ + -DWITH_V4L=ON +OPENCV_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBV4L),libv4l) +else +OPENCV_CONF_OPTS += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF +endif + +# Installation hooks: +define OPENCV_CLEAN_INSTALL_DOC + $(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/doc +endef +OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DOC + +define OPENCV_CLEAN_INSTALL_CMAKE + $(RM) -f $(TARGET_DIR)/usr/share/OpenCV/OpenCVConfig*.cmake +endef +OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_CMAKE + +ifneq ($(BR2_PACKAGE_OPENCV_INSTALL_DATA),y) +define OPENCV_CLEAN_INSTALL_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/haarcascades \ + $(TARGET_DIR)/usr/share/OpenCV/lbpcascades +endef +OPENCV_POST_INSTALL_TARGET_HOOKS += OPENCV_CLEAN_INSTALL_DATA +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/opencv3/Config.in b/buildroot/package/opencv3/Config.in new file mode 100644 index 0000000..80a297a --- /dev/null +++ b/buildroot/package/opencv3/Config.in @@ -0,0 +1,351 @@ +menuconfig BR2_PACKAGE_OPENCV3 + bool "opencv3" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS # include dlfcn.h + depends on !BR2_PACKAGE_OPENCV + select BR2_PACKAGE_ZLIB + help + OpenCV (Open Source Computer Vision) is a library of + programming functions for real time computer vision. + + Note that the opencv_core module and the opencv_hal library + are always built and installed, not matter which other + modules are enabled below. + + http://opencv.org/ + +if BR2_PACKAGE_OPENCV3 + +comment "OpenCV modules" + +config BR2_PACKAGE_OPENCV3_LIB_CALIB3D + bool "calib3d" + select BR2_PACKAGE_OPENCV3_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + help + Include opencv_calib3d (camera calibration and 3d + reconstruction) module into the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_FEATURES2D + bool "features2d" + select BR2_PACKAGE_OPENCV3_LIB_FLANN + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_ML + help + Include opencv_features2d (2d features framework) module + into the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_FLANN + bool "flann" + # opencv_core dependency is already enabled + help + Include opencv_flann (clustering and search in + multi-dimensional spaces) module into the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_HIGHGUI + bool "highgui" + select BR2_PACKAGE_OPENCV3_LIB_IMGCODECS + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_VIDEOIO + help + Include opencv_highgui (high-level gui and media i/o) module + into the OpenCV build. + +if BR2_PACKAGE_OPENCV3_LIB_HIGHGUI + +choice + prompt "gui toolkit" + help + GUI toolkit to be used by the opencv_highgui module. + +config BR2_PACKAGE_OPENCV3_GUI_NONE + bool "none" + +config BR2_PACKAGE_OPENCV3_WITH_GTK + bool "gtk2" + depends on BR2_PACKAGE_LIBGTK2 + +comment "gtk2 support needs libgtk2" + depends on BR2_USE_MMU # libgtk2 -> glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_LIBGTK2 + +config BR2_PACKAGE_OPENCV3_WITH_GTK3 + bool "gtk3" + depends on BR2_PACKAGE_LIBGTK3 + +comment "gtk3 support needs libgtk3" + depends on BR2_USE_MMU # libgtk3 -> glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_LIBGTK3 + +config BR2_PACKAGE_OPENCV3_WITH_QT + bool "qt4" + depends on BR2_PACKAGE_QT + select BR2_PACKAGE_QT_STL + select BR2_PACKAGE_QT_GUI_MODULE + select BR2_PACKAGE_QT_TEST + help + Use Qt4 with QtTest and QtGui modules and STL support, as + GUI toolkit. + +comment "qt4 support needs qt" + depends on BR2_USE_MMU # qt + depends on !BR2_PACKAGE_QT && !BR2_PACKAGE_QT5 + +config BR2_PACKAGE_OPENCV3_WITH_QT5 + bool "qt5" + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_CONCURRENT + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + help + Use Qt5 with base, concurrent, test, gui and widgets + components, as GUI toolkit. + +comment "qt5 support needs qt5" + depends on !BR2_PACKAGE_QT && !BR2_PACKAGE_QT5 + +endchoice + +config BR2_PACKAGE_OPENCV3_WITH_OPENGL + bool "opengl support" + # OpenGL support done using Qt5OpenGL, so depends on WITH_QT5 + depends on BR2_PACKAGE_OPENCV3_WITH_QT5 + # OpenGL support requires Qt5OpenGL with GL support, not GLES + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_QT5BASE_OPENGL + help + Enable OpenGL for UI. + +comment "opengl support needs an OpenGL provider" + depends on BR2_PACKAGE_OPENCV3_WITH_QT5 + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE || \ + !BR2_PACKAGE_HAS_LIBGL + +endif # BR2_PACKAGE_OPENCV3_LIB_HIGHGUI + +config BR2_PACKAGE_OPENCV3_LIB_IMGCODECS + bool "imgcodecs" + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + help + Include opencv_imgcodecs (image codecs) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_IMGPROC + bool "imgproc" + # opencv_core dependency is already enabled + help + Include opencv_imgproc (image processing) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_ML + bool "ml" + # opencv_core dependency is already enabled + help + Include opencv_ml (machine learning) module into the OpenCV + build. + +config BR2_PACKAGE_OPENCV3_LIB_OBJDETECT + bool "objdetect" + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_ML + help + Include opencv_objdetect (object detection) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_PHOTO + bool "photo" + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + help + Include opencv_photo (computational photography) module into + the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_PYTHON + bool "python" + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + select BR2_PACKAGE_PYTHON_NUMPY + help + Include opencv_python module into the OpenCV build. No + python example is installed. + +config BR2_PACKAGE_OPENCV3_LIB_SHAPE + bool "shape" + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_VIDEO + help + Include opencv_shape (shape descriptors and matchers) module + into the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_STITCHING + bool "stitching" + select BR2_PACKAGE_OPENCV3_LIB_CALIB3D + select BR2_PACKAGE_OPENCV3_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_OBJDETECT + help + Include opencv_stitching (images stitching) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_SUPERRES + bool "superres" + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_VIDEO + help + Include opencv_superres (super resolution) module into the + OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_TS + bool "ts" + # opencv_core dependency is already enabled + select BR2_PACKAGE_OPENCV3_LIB_HIGHGUI + select BR2_PACKAGE_OPENCV3_LIB_IMGCODECS + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_VIDEOIO + help + Include opencv_ts (test) module into the OpenCV build. + +config BR2_PACKAGE_OPENCV3_LIB_VIDEOIO + bool "videoio" + select BR2_PACKAGE_OPENCV3_LIB_IMGCODECS + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + help + Include opencv_videoio (media i/o) module into the OpenCV + build. + +config BR2_PACKAGE_OPENCV3_LIB_VIDEO + bool "video" + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + help + Include opencv_video (video analysis) module into the OpenCV + build. + +config BR2_PACKAGE_OPENCV3_LIB_VIDEOSTAB + bool "videostab" + select BR2_PACKAGE_OPENCV3_LIB_CALIB3D + select BR2_PACKAGE_OPENCV3_LIB_FEATURES2D + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_PHOTO + select BR2_PACKAGE_OPENCV3_LIB_VIDEO + help + Include opencv_videostab (video stabilization) module into + the OpenCV build. + +comment "Test sets" +config BR2_PACKAGE_OPENCV3_BUILD_TESTS + bool "build tests" + +config BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS + bool "build performance tests" + +comment "3rd party support" + +config BR2_PACKAGE_OPENCV3_WITH_FFMPEG + bool "ffmpeg support" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_AVRESAMPLE + select BR2_PACKAGE_FFMPEG_SWSCALE + help + Use ffmpeg from the target system. + +choice + prompt "gstreamer support" + help + OpenCV prefers gstreamer-1 over gstreamer-0.10. + +config BR2_PACKAGE_OPENCV3_WITHOUT_GSTREAMER + bool "none" + +config BR2_PACKAGE_OPENCV3_WITH_GSTREAMER + bool "gstreamer-0.10" + depends on BR2_USE_MMU # gstreamer -> libglib2 + depends on BR2_USE_WCHAR # gstreamer -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer -> libglib2 + select BR2_PACKAGE_GSTREAMER + select BR2_PACKAGE_GST_PLUGINS_BASE + select BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP + +comment "gstreamer-0.10 support needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_OPENCV3_WITH_GSTREAMER1 + bool "gstreamer-1.x" + depends on BR2_USE_MMU # gstreamer1 -> libglib2 + depends on BR2_USE_WCHAR # gstreamer1 -> libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # gstreamer1 -> libglib2 + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + +comment "gstreamer-1.x support needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +endchoice + +config BR2_PACKAGE_OPENCV3_WITH_JASPER + bool "jpeg2000 support" + select BR2_PACKAGE_JASPER + help + Enable jpeg2000 support. + + Note: this does not use the libjasper bundled with opencv, + but uses the libjasper package installed system-wide by + Buildroot. + +config BR2_PACKAGE_OPENCV3_WITH_JPEG + bool "jpeg support" + select BR2_PACKAGE_JPEG + help + Use shared libjpeg from the target system. + +config BR2_PACKAGE_OPENCV3_WITH_PNG + bool "png support" + select BR2_PACKAGE_LIBPNG + help + Use shared libpng from the target system. + +config BR2_PACKAGE_OPENCV3_WITH_TIFF + bool "tiff support" + select BR2_PACKAGE_TIFF + help + Use shared libtiff from the target system. + +config BR2_PACKAGE_OPENCV3_WITH_V4L + bool "v4l support" + help + Enable Video 4 Linux support. + + If the package libv4l is enabled, its support is + automatically enabled. + +comment "Install options" + +config BR2_PACKAGE_OPENCV3_INSTALL_DATA + bool "install extra data" + help + Install various data that is used by cv libraries and/or + demo applications, specifically for haarcascades and + lbpcascades features. + + For further information: see OpenCV documentation. + +endif # BR2_PACKAGE_OPENCV3 + +comment "opencv3 needs a toolchain w/ C++, NPTL, wchar, dynamic library" + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/opencv3/opencv3.hash b/buildroot/package/opencv3/opencv3.hash new file mode 100644 index 0000000..de15bc8 --- /dev/null +++ b/buildroot/package/opencv3/opencv3.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 8bb312b9d9fd17336dc1f8b3ac82f021ca50e2034afc866098866176d985adc6 opencv3-3.3.0.tar.gz +# License files, locally calculated +sha256 e974db937899a2505f0eb43ece9d2f2eb36e8580ad88785e3ffac0d697ebaf5d LICENSE diff --git a/buildroot/package/opencv3/opencv3.mk b/buildroot/package/opencv3/opencv3.mk new file mode 100644 index 0000000..15e4ead --- /dev/null +++ b/buildroot/package/opencv3/opencv3.mk @@ -0,0 +1,357 @@ +################################################################################ +# +# opencv3 +# +################################################################################ + +OPENCV3_VERSION = 3.3.0 +OPENCV3_SITE = $(call github,opencv,opencv,$(OPENCV3_VERSION)) +OPENCV3_INSTALL_STAGING = YES +OPENCV3_LICENSE = BSD-3-Clause +OPENCV3_LICENSE_FILES = LICENSE +OPENCV3_SUPPORTS_IN_SOURCE_BUILD = NO + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +OPENCV3_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -latomic" +endif + +# OpenCV component options +OPENCV3_CONF_OPTS += \ + -DBUILD_DOCS=OFF \ + -DBUILD_PERF_TESTS=$(if $(BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS),ON,OFF) \ + -DBUILD_TESTS=$(if $(BR2_PACKAGE_OPENCV3_BUILD_TESTS),ON,OFF) \ + -DBUILD_WITH_DEBUG_INFO=OFF \ + -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF + +ifeq ($(BR2_PACKAGE_OPENCV3_BUILD_TESTS)$(BR2_PACKAGE_OPENCV3_BUILD_PERF_TESTS),) +OPENCV3_CONF_OPTS += -DINSTALL_TEST=OFF +else +OPENCV3_CONF_OPTS += -DINSTALL_TEST=ON +endif + +# OpenCV build options +OPENCV3_CONF_OPTS += \ + -DBUILD_WITH_STATIC_CRT=OFF \ + -DENABLE_COVERAGE=OFF \ + -DENABLE_FAST_MATH=ON \ + -DENABLE_IMPL_COLLECTION=OFF \ + -DENABLE_NOISY_WARNINGS=OFF \ + -DENABLE_OMIT_FRAME_POINTER=ON \ + -DENABLE_PRECOMPILED_HEADERS=OFF \ + -DENABLE_PROFILING=OFF \ + -DOPENCV3_WARNINGS_ARE_ERRORS=OFF + +# OpenCV link options +OPENCV3_CONF_OPTS += \ + -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF \ + -DCMAKE_SKIP_RPATH=OFF \ + -DCMAKE_USE_RELATIVE_PATHS=OFF + +# OpenCV packaging options: +OPENCV3_CONF_OPTS += \ + -DBUILD_PACKAGE=OFF \ + -DENABLE_SOLUTION_FOLDERS=OFF \ + -DINSTALL_CREATE_DISTRIB=OFF + +# OpenCV module selection +# * Modules on: +# - core: if not set, opencv does not build anything +# - hal: core's dependency +# * Modules off: +# - android*: android stuff +# - apps: programs for training classifiers +# - java: java bindings +# - viz: missing VTK dependency +# - world: all-in-one module +# +# * Contrib modules from [1] are disabled: +# - opencv_contrib package is not available in Buildroot; +# - OPENCV3_EXTRA_MODULES_PATH is not set. +# +# [1] https://github.com/Itseez/opencv_contrib +OPENCV3_CONF_OPTS += \ + -DBUILD_opencv_androidcamera=OFF \ + -DBUILD_opencv_apps=OFF \ + -DBUILD_opencv_calib3d=$(if $(BR2_PACKAGE_OPENCV3_LIB_CALIB3D),ON,OFF) \ + -DBUILD_opencv_core=ON \ + -DBUILD_opencv_features2d=$(if $(BR2_PACKAGE_OPENCV3_LIB_FEATURES2D),ON,OFF) \ + -DBUILD_opencv_flann=$(if $(BR2_PACKAGE_OPENCV3_LIB_FLANN),ON,OFF) \ + -DBUILD_opencv_highgui=$(if $(BR2_PACKAGE_OPENCV3_LIB_HIGHGUI),ON,OFF) \ + -DBUILD_opencv_imgcodecs=$(if $(BR2_PACKAGE_OPENCV3_LIB_IMGCODECS),ON,OFF) \ + -DBUILD_opencv_imgproc=$(if $(BR2_PACKAGE_OPENCV3_LIB_IMGPROC),ON,OFF) \ + -DBUILD_opencv_java=OFF \ + -DBUILD_opencv_ml=$(if $(BR2_PACKAGE_OPENCV3_LIB_ML),ON,OFF) \ + -DBUILD_opencv_objdetect=$(if $(BR2_PACKAGE_OPENCV3_LIB_OBJDETECT),ON,OFF) \ + -DBUILD_opencv_photo=$(if $(BR2_PACKAGE_OPENCV3_LIB_PHOTO),ON,OFF) \ + -DBUILD_opencv_shape=$(if $(BR2_PACKAGE_OPENCV3_LIB_SHAPE),ON,OFF) \ + -DBUILD_opencv_stitching=$(if $(BR2_PACKAGE_OPENCV3_LIB_STITCHING),ON,OFF) \ + -DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV3_LIB_SUPERRES),ON,OFF) \ + -DBUILD_opencv_ts=$(if $(BR2_PACKAGE_OPENCV3_LIB_TS),ON,OFF) \ + -DBUILD_opencv_video=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEO),ON,OFF) \ + -DBUILD_opencv_videoio=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEOIO),ON,OFF) \ + -DBUILD_opencv_videostab=$(if $(BR2_PACKAGE_OPENCV3_LIB_VIDEOSTAB),ON,OFF) \ + -DBUILD_opencv_viz=OFF \ + -DBUILD_opencv_world=OFF + +# Hardware support options. +# +# * PowerPC support is turned off since its only effect is altering CFLAGS, +# adding '-mcpu=G3 -mtune=G5' to them, which is already handled by Buildroot. +OPENCV3_CONF_OPTS += \ + -DENABLE_POWERPC=OFF + +# Cuda stuff +OPENCV3_CONF_OPTS += \ + -DBUILD_CUDA_STUBS=OFF \ + -DBUILD_opencv_cudaarithm=OFF \ + -DBUILD_opencv_cudabgsegm=OFF \ + -DBUILD_opencv_cudacodec=OFF \ + -DBUILD_opencv_cudafeatures2d=OFF \ + -DBUILD_opencv_cudafilters=OFF \ + -DBUILD_opencv_cudaimgproc=OFF \ + -DBUILD_opencv_cudalegacy=OFF \ + -DBUILD_opencv_cudaobjdetect=OFF \ + -DBUILD_opencv_cudaoptflow=OFF \ + -DBUILD_opencv_cudastereo=OFF \ + -DBUILD_opencv_cudawarping=OFF \ + -DBUILD_opencv_cudev=OFF \ + -DWITH_CUBLAS=OFF \ + -DWITH_CUDA=OFF \ + -DWITH_CUFFT=OFF + +# NVidia stuff +OPENCV3_CONF_OPTS += -DWITH_NVCUVID=OFF + +# AMD stuff +OPENCV3_CONF_OPTS += \ + -DWITH_OPENCLAMDBLAS=OFF \ + -DWITH_OPENCLAMDFFT=OFF + +# Intel stuff +OPENCV3_CONF_OPTS += \ + -DBUILD_WITH_DYNAMIC_IPP=OFF \ + -DWITH_INTELPERC=OFF \ + -DWITH_IPP=OFF \ + -DWITH_IPP_A=OFF \ + -DWITH_TBB=OFF + +# Smartek stuff +OPENCV3_CONF_OPTS += -DWITH_GIGEAPI=OFF + +# Prosilica stuff +OPENCV3_CONF_OPTS += -DWITH_PVAPI=OFF + +# Ximea stuff +OPENCV3_CONF_OPTS += -DWITH_XIMEA=OFF + +# Non-Linux support (Android options) must remain OFF: +OPENCV3_CONF_OPTS += \ + -DANDROID=OFF \ + -DBUILD_ANDROID_CAMERA_WRAPPER=OFF \ + -DBUILD_ANDROID_EXAMPLES=OFF \ + -DBUILD_ANDROID_SERVICE=OFF \ + -DBUILD_FAT_JAVA_LIB=OFF \ + -DINSTALL_ANDROID_EXAMPLES=OFF \ + -DWITH_ANDROID_CAMERA=OFF + +# Non-Linux support (Mac OSX options) must remain OFF: +OPENCV3_CONF_OPTS += \ + -DWITH_AVFOUNDATION=OFF \ + -DWITH_CARBON=OFF \ + -DWITH_QUICKTIME=OFF + +# Non-Linux support (Windows options) must remain OFF: +OPENCV3_CONF_OPTS += \ + -DWITH_CSTRIPES=OFF \ + -DWITH_DSHOW=OFF \ + -DWITH_MSMF=OFF \ + -DWITH_VFW=OFF \ + -DWITH_VIDEOINPUT=OFF \ + -DWITH_WIN32UI=OFF + +# Software/3rd-party support options: +# - disable all examples +OPENCV3_CONF_OPTS += \ + -DBUILD_EXAMPLES=OFF \ + -DBUILD_JASPER=OFF \ + -DBUILD_JPEG=OFF \ + -DBUILD_OPENEXR=OFF \ + -DBUILD_PNG=OFF \ + -DBUILD_TIFF=OFF \ + -DBUILD_ZLIB=OFF \ + -DINSTALL_C_EXAMPLES=OFF \ + -DINSTALL_PYTHON_EXAMPLES=OFF \ + -DINSTALL_TO_MANGLED_PATHS=OFF + +# Disabled features (mostly because they are not available in Buildroot), but +# - eigen: OpenCV does not use it, not take any benefit from it. +OPENCV3_CONF_OPTS += \ + -DWITH_1394=OFF \ + -DWITH_CLP=OFF \ + -DWITH_EIGEN=OFF \ + -DWITH_GDAL=OFF \ + -DWITH_GPHOTO2=OFF \ + -DWITH_LAPACK=OFF \ + -DWITH_MATLAB=OFF \ + -DWITH_OPENCL=OFF \ + -DWITH_OPENCL_SVM=OFF \ + -DWITH_OPENEXR=OFF \ + -DWITH_OPENNI2=OFF \ + -DWITH_OPENNI=OFF \ + -DWITH_UNICAP=OFF \ + -DWITH_VA=OFF \ + -DWITH_VA_INTEL=OFF \ + -DWITH_VTK=OFF \ + -DWITH_WEBP=OFF \ + -DWITH_XINE=OFF + +OPENCV3_DEPENDENCIES += zlib + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_FFMPEG),y) +OPENCV3_CONF_OPTS += -DWITH_FFMPEG=ON +OPENCV3_DEPENDENCIES += ffmpeg bzip2 +else +OPENCV3_CONF_OPTS += -DWITH_FFMPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GSTREAMER),y) +OPENCV3_CONF_OPTS += -DWITH_GSTREAMER_0_10=ON +OPENCV3_DEPENDENCIES += gstreamer gst-plugins-base +else +OPENCV3_CONF_OPTS += -DWITH_GSTREAMER_0_10=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GSTREAMER1),y) +OPENCV3_CONF_OPTS += -DWITH_GSTREAMER=ON +OPENCV3_DEPENDENCIES += gstreamer1 gst1-plugins-base +else +OPENCV3_CONF_OPTS += -DWITH_GSTREAMER=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK)$(BR2_PACKAGE_OPENCV3_WITH_GTK3),) +OPENCV3_CONF_OPTS += -DWITH_GTK=OFF -DWITH_GTK_2_X=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK),y) +OPENCV3_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=ON +OPENCV3_DEPENDENCIES += libgtk2 +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_GTK3),y) +OPENCV3_CONF_OPTS += -DWITH_GTK=ON -DWITH_GTK_2_X=OFF +OPENCV3_DEPENDENCIES += libgtk3 +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_JASPER),y) +OPENCV3_CONF_OPTS += -DWITH_JASPER=ON +OPENCV3_DEPENDENCIES += jasper +else +OPENCV3_CONF_OPTS += -DWITH_JASPER=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_JPEG),y) +OPENCV3_CONF_OPTS += -DWITH_JPEG=ON +OPENCV3_DEPENDENCIES += jpeg +else +OPENCV3_CONF_OPTS += -DWITH_JPEG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_OPENGL),y) +OPENCV3_CONF_OPTS += -DWITH_OPENGL=ON +OPENCV3_DEPENDENCIES += libgl +else +OPENCV3_CONF_OPTS += -DWITH_OPENGL=OFF +endif + +OPENCV3_CONF_OPTS += -DWITH_OPENMP=$(if $(BR2_GCC_ENABLE_OPENMP),ON,OFF) + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_PNG),y) +OPENCV3_CONF_OPTS += -DWITH_PNG=ON +OPENCV3_DEPENDENCIES += libpng +else +OPENCV3_CONF_OPTS += -DWITH_PNG=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_QT)$(BR2_PACKAGE_OPENCV3_WITH_QT5),) +OPENCV3_CONF_OPTS += -DWITH_QT=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_QT),y) +OPENCV3_CONF_OPTS += -DWITH_QT=4 +OPENCV3_DEPENDENCIES += qt +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_QT5),y) +OPENCV3_CONF_OPTS += -DWITH_QT=5 +OPENCV3_DEPENDENCIES += qt5base +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_TIFF),y) +OPENCV3_CONF_OPTS += -DWITH_TIFF=ON +OPENCV3_DEPENDENCIES += tiff +else +OPENCV3_CONF_OPTS += -DWITH_TIFF=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_WITH_V4L),y) +OPENCV3_CONF_OPTS += \ + -DWITH_LIBV4L=$(if $(BR2_PACKAGE_LIBV4L),ON,OFF) \ + -DWITH_V4L=ON +OPENCV3_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBV4L),libv4l) +else +OPENCV3_CONF_OPTS += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENCV3_LIB_PYTHON),y) +ifeq ($(BR2_PACKAGE_PYTHON),y) +OPENCV3_CONF_OPTS += \ + -DBUILD_opencv_python2=ON \ + -DBUILD_opencv_python3=OFF \ + -DPYTHON2_EXECUTABLE=$(HOST_DIR)/bin/python2 \ + -DPYTHON2_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) \ + -DPYTHON2_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON_VERSION_MAJOR).so \ + -DPYTHON2_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/numpy/core/include \ + -DPYTHON2_PACKAGES_PATH=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \ + -DPYTHON2_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION) +OPENCV3_DEPENDENCIES += python +else +OPENCV3_CONF_OPTS += \ + -DBUILD_opencv_python2=OFF \ + -DBUILD_opencv_python3=ON \ + -DPYTHON3_EXECUTABLE=$(HOST_DIR)/bin/python3 \ + -DPYTHON3_INCLUDE_PATH=$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION_MAJOR)m \ + -DPYTHON3_LIBRARIES=$(STAGING_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR)m.so \ + -DPYTHON3_NUMPY_INCLUDE_DIRS=$(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages/numpy/core/include \ + -DPYTHON3_PACKAGES_PATH=/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages \ + -DPYTHON3_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION) +OPENCV3_DEPENDENCIES += python3 +endif +OPENCV3_CONF_ENV += $(PKG_PYTHON_DISTUTILS_ENV) +OPENCV3_DEPENDENCIES += python-numpy +else +OPENCV3_CONF_OPTS += \ + -DBUILD_opencv_python2=OFF \ + -DBUILD_opencv_python3=OFF +endif + +# Installation hooks: +define OPENCV3_CLEAN_INSTALL_DOC + $(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/doc +endef +OPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_DOC + +define OPENCV3_CLEAN_INSTALL_CMAKE + $(RM) -f $(TARGET_DIR)/usr/share/OpenCV/OpenCVConfig*.cmake +endef +OPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_CMAKE + +ifneq ($(BR2_PACKAGE_OPENCV3_INSTALL_DATA),y) +define OPENCV3_CLEAN_INSTALL_DATA + $(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/haarcascades \ + $(TARGET_DIR)/usr/share/OpenCV/lbpcascades +endef +OPENCV3_POST_INSTALL_TARGET_HOOKS += OPENCV3_CLEAN_INSTALL_DATA +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/opengl/Config.in b/buildroot/package/opengl/Config.in new file mode 100644 index 0000000..20ee28b --- /dev/null +++ b/buildroot/package/opengl/Config.in @@ -0,0 +1,5 @@ +source "package/opengl/libgl/Config.in" +source "package/opengl/libegl/Config.in" +source "package/opengl/libgles/Config.in" +source "package/opengl/libopenvg/Config.in" +source "package/opengl/libopenmax/Config.in" diff --git a/buildroot/package/opengl/libegl/Config.in b/buildroot/package/opengl/libegl/Config.in new file mode 100644 index 0000000..a236998 --- /dev/null +++ b/buildroot/package/opengl/libegl/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HAS_LIBEGL + bool + +config BR2_PACKAGE_HAS_LIBEGL_WAYLAND + bool + depends on BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_PROVIDES_LIBEGL + string + depends on BR2_PACKAGE_HAS_LIBEGL diff --git a/buildroot/package/opengl/libegl/libegl.mk b/buildroot/package/opengl/libegl/libegl.mk new file mode 100644 index 0000000..1f5460e --- /dev/null +++ b/buildroot/package/opengl/libegl/libegl.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libegl +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/buildroot/package/opengl/libgl/Config.in b/buildroot/package/opengl/libgl/Config.in new file mode 100644 index 0000000..b9a1602 --- /dev/null +++ b/buildroot/package/opengl/libgl/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_LIBGL + bool + +config BR2_PACKAGE_PROVIDES_LIBGL + string + depends on BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/opengl/libgl/libgl.mk b/buildroot/package/opengl/libgl/libgl.mk new file mode 100644 index 0000000..7abc13d --- /dev/null +++ b/buildroot/package/opengl/libgl/libgl.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libgl +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/buildroot/package/opengl/libgles/Config.in b/buildroot/package/opengl/libgles/Config.in new file mode 100644 index 0000000..090ef16 --- /dev/null +++ b/buildroot/package/opengl/libgles/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_LIBGLES + bool + +config BR2_PACKAGE_PROVIDES_LIBGLES + string + depends on BR2_PACKAGE_HAS_LIBGLES diff --git a/buildroot/package/opengl/libgles/libgles.mk b/buildroot/package/opengl/libgles/libgles.mk new file mode 100644 index 0000000..407f8f9 --- /dev/null +++ b/buildroot/package/opengl/libgles/libgles.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libgles +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/buildroot/package/opengl/libopenmax/Config.in b/buildroot/package/opengl/libopenmax/Config.in new file mode 100644 index 0000000..901426a --- /dev/null +++ b/buildroot/package/opengl/libopenmax/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_LIBOPENMAX + bool + +config BR2_PACKAGE_PROVIDES_LIBOPENMAX + string + depends on BR2_PACKAGE_HAS_LIBOPENMAX diff --git a/buildroot/package/opengl/libopenmax/libopenmax.mk b/buildroot/package/opengl/libopenmax/libopenmax.mk new file mode 100644 index 0000000..bc2e7f8 --- /dev/null +++ b/buildroot/package/opengl/libopenmax/libopenmax.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libopenmax +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/buildroot/package/opengl/libopenvg/Config.in b/buildroot/package/opengl/libopenvg/Config.in new file mode 100644 index 0000000..37d9410 --- /dev/null +++ b/buildroot/package/opengl/libopenvg/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_LIBOPENVG + bool + +config BR2_PACKAGE_PROVIDES_LIBOPENVG + string + depends on BR2_PACKAGE_HAS_LIBOPENVG diff --git a/buildroot/package/opengl/libopenvg/libopenvg.mk b/buildroot/package/opengl/libopenvg/libopenvg.mk new file mode 100644 index 0000000..3ce85a1 --- /dev/null +++ b/buildroot/package/opengl/libopenvg/libopenvg.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# libopenvg +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/buildroot/package/opengl/opengl.mk b/buildroot/package/opengl/opengl.mk new file mode 100644 index 0000000..abf96d5 --- /dev/null +++ b/buildroot/package/opengl/opengl.mk @@ -0,0 +1 @@ +include $(sort $(wildcard package/opengl/*/*.mk)) diff --git a/buildroot/package/openipmi/0001-Avoid-searching-host-library-path.patch b/buildroot/package/openipmi/0001-Avoid-searching-host-library-path.patch new file mode 100644 index 0000000..44a57dc --- /dev/null +++ b/buildroot/package/openipmi/0001-Avoid-searching-host-library-path.patch @@ -0,0 +1,52 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Wed, 22 Jul 2015 07:04:33 +0300 +Subject: [PATCH] Avoid searching host library path + +The $(libdir) variable points to the location of the directory on the target +system, /usr/lib by default. When cross compiling this directory contains the +host libraries which may be different than target libraries. Don't use +$(libdir) in the library search path. + +Signed-off-by: Baruch Siach +Signed-off-by: Joel Stanley +--- + cmdlang/Makefile.am | 3 +-- + unix/Makefile.am | 6 ++---- + 2 files changed, 3 insertions(+), 6 deletions(-) + +diff --git a/cmdlang/Makefile.am b/cmdlang/Makefile.am +index 264ee12be79f..0b3843784656 100644 +--- a/cmdlang/Makefile.am ++++ b/cmdlang/Makefile.am +@@ -15,8 +15,7 @@ libOpenIPMIcmdlang_la_SOURCES = cmdlang.c cmd_domain.c cmd_entity.c cmd_mc.c \ + libOpenIPMIcmdlang_la_LIBADD = -lm \ + $(top_builddir)/utils/libOpenIPMIutils.la \ + $(top_builddir)/lib/libOpenIPMI.la +-libOpenIPMIcmdlang_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) \ +- -L$(libdir) ++libOpenIPMIcmdlang_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) + + bin_PROGRAMS = openipmish + +diff --git a/unix/Makefile.am b/unix/Makefile.am +index 5128839dad13..bd0f897ba8d6 100644 +--- a/unix/Makefile.am ++++ b/unix/Makefile.am +@@ -10,14 +10,12 @@ lib_LTLIBRARIES = libOpenIPMIposix.la libOpenIPMIpthread.la + libOpenIPMIpthread_la_SOURCES = posix_thread_os_hnd.c selector.c + libOpenIPMIpthread_la_LIBADD = -lpthread $(GDBM_LIB) \ + $(top_builddir)/utils/libOpenIPMIutils.la $(RT_LIB) +-libOpenIPMIpthread_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) \ +- -L$(libdir) ++libOpenIPMIpthread_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) + + libOpenIPMIposix_la_SOURCES = posix_os_hnd.c selector.c + libOpenIPMIposix_la_LIBADD = $(top_builddir)/utils/libOpenIPMIutils.la \ + $(GDBM_LIB) $(RT_LIB) +-libOpenIPMIposix_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) \ +- -L$(libdir) ++libOpenIPMIposix_la_LDFLAGS = -rdynamic -version-info $(LD_VERSION) + + noinst_HEADERS = heap.h + diff --git a/buildroot/package/openipmi/Config.in b/buildroot/package/openipmi/Config.in new file mode 100644 index 0000000..d8c94b3 --- /dev/null +++ b/buildroot/package/openipmi/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_OPENIPMI + bool "openipmi" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_POPT + select BR2_PACKAGE_NCURSES + help + IPMI allows remote monitoring and remote management of + devices. OpenIPMI provides a library and command line tools + to interact with IPMI enabled devices. OpenIPMI also provides + an IPMI BMC simulator. + + http://openipmi.sourceforge.net + +comment "openipmi needs a toolchain w/ dynamic library, NPTL" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/openipmi/openipmi.hash b/buildroot/package/openipmi/openipmi.hash new file mode 100644 index 0000000..37048ca --- /dev/null +++ b/buildroot/package/openipmi/openipmi.hash @@ -0,0 +1,4 @@ +# From http://sourceforge.net/projects/openipmi/files/OpenIPMI%202.0%20Library/ +sha1 f37656813a826a3147ed557c32408f8daa399c28 OpenIPMI-2.0.24.tar.gz +# Locally computed +sha256 bca39a27071278a8b74610181ede8df51e155e5e9031bc8eaa3699d1720292b4 OpenIPMI-2.0.24.tar.gz diff --git a/buildroot/package/openipmi/openipmi.mk b/buildroot/package/openipmi/openipmi.mk new file mode 100644 index 0000000..8e91e4e --- /dev/null +++ b/buildroot/package/openipmi/openipmi.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# openipmi +# +################################################################################ + +OPENIPMI_VERSION = 2.0.24 +OPENIPMI_SITE = http://sourceforge.net/projects/openipmi/files/OpenIPMI%202.0%20Library +OPENIPMI_SOURCE = OpenIPMI-$(OPENIPMI_VERSION).tar.gz +OPENIPMI_LICENSE = LGPL-2.0+, GPL-2.0+, BSD-3-Clause +OPENIPMI_LICENSE_FILES = COPYING.LIB COPYING COPYING.BSD +OPENIPMI_DEPENDENCIES = popt ncurses host-pkgconf +# Patching Makefile.am +OPENIPMI_AUTORECONF = YES +OPENIPMI_CONF_ENV = ac_cv_path_pkgprog="$(PKG_CONFIG_HOST_BINARY)" +OPENIPMI_CONF_OPTS = \ + --with-glib=no \ + --with-tcl=no \ + --with-perl=no \ + --with-python=no \ + --with-swig=no + +ifeq ($(BR2_PACKAGE_GDBM),y) +OPENIPMI_DEPENDENCIES += gdbm +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENIPMI_DEPENDENCIES += openssl +OPENIPMI_CONF_OPTS += --with-openssl=yes +else +OPENIPMI_CONF_OPTS += --with-openssl=no +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +OPENIPMI_DEPENDENCIES += netsnmp +OPENIPMI_CONF_OPTS += --with-ucdsnmp=yes +else +OPENIPMI_CONF_OPTS += --with-ucdsnmp=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/openjpeg/0001-thirdparty-tiff-append-flags-found-by-pkg-config-if-.patch b/buildroot/package/openjpeg/0001-thirdparty-tiff-append-flags-found-by-pkg-config-if-.patch new file mode 100644 index 0000000..bce790a --- /dev/null +++ b/buildroot/package/openjpeg/0001-thirdparty-tiff-append-flags-found-by-pkg-config-if-.patch @@ -0,0 +1,72 @@ +From 38f50c7d9ad3ba06b64583045665203afb53cbd9 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 6 Nov 2016 16:29:08 +0100 +Subject: [PATCH] thirdparty: tiff: append flags found by pkg-config if + available + +This change allows to get all required CFLAGS/LDFLAGS in case of static only +build. + +This build issue [1] was triggered by the Buildroot farms. + +[1] http://autobuild.buildroot.net/results/d0d/d0d22727311d6300e0e400728126170407bfd699/build-end.log + +Signed-off-by: Samuel Martin +--- + thirdparty/CMakeLists.txt | 23 +++++++++++++++++++++-- + 1 file changed, 21 insertions(+), 2 deletions(-) + +diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt +index cb24b43b58e2..cd6a5e1391b0 100644 +--- a/thirdparty/CMakeLists.txt ++++ b/thirdparty/CMakeLists.txt +@@ -1,5 +1,9 @@ + # 3rd party libs + ++if(NOT BUILD_THIRDPARTY) ++ include(FindPkgConfig) ++endif(NOT BUILD_THIRDPARTY) ++ + #------------ + # Try to find lib Z + if(BUILD_THIRDPARTY) +@@ -36,6 +40,9 @@ if(BUILD_THIRDPARTY) + else(BUILD_THIRDPARTY) + if(ZLIB_FOUND) + find_package(PNG) ++ # Static only build: ++ # it is not necessary to invoke pkg_check_module on libpng, because libpng ++ # only depends on zlib, which is already checked. + if(PNG_FOUND) + message(STATUS "Your system seems to have a PNG lib available, we will use it") + set(OPJ_HAVE_PNG_H 1 PARENT_SCOPE) +@@ -66,12 +73,24 @@ if(BUILD_THIRDPARTY) + set(OPJ_HAVE_LIBTIFF 1 PARENT_SCOPE) + else(BUILD_THIRDPARTY) + find_package(TIFF) ++ # Static only build: ++ # it is necessary to invoke pkg_check_module on libtiff since it may have ++ # several other dependencies not declared by its cmake module, but they are ++ # in the its pkgconfig module. ++ if(PKG_CONFIG_FOUND) ++ foreach(pc_tiff_module tiff tiff3 tiff4 tiff-3 tiff-4 libtiff libtiff3 libtiff4 libtiff-3 libtiff-4) ++ pkg_check_modules(PC_TIFF QUIET ${pc_tiff_module}) ++ if(PC_TIFF_FOUND) ++ break() ++ endif(PC_TIFF_FOUND) ++ endforeach() ++ endif(PKG_CONFIG_FOUND) + if(TIFF_FOUND) + message(STATUS "Your system seems to have a TIFF lib available, we will use it") + set(OPJ_HAVE_TIFF_H 1 PARENT_SCOPE) + set(OPJ_HAVE_LIBTIFF 1 PARENT_SCOPE) +- set(TIFF_LIBNAME ${TIFF_LIBRARIES} PARENT_SCOPE) +- set(TIFF_INCLUDE_DIRNAME ${TIFF_INCLUDE_DIR} PARENT_SCOPE) ++ set(TIFF_LIBNAME ${TIFF_LIBRARIES} ${PC_TIFF_STATIC_LIBRARIES} PARENT_SCOPE) ++ set(TIFF_INCLUDE_DIRNAME ${TIFF_INCLUDE_DIR} ${PC_TIFF_STATIC_INCLUDE_DIRS} PARENT_SCOPE) + else(TIFF_FOUND) # not found + set(OPJ_HAVE_TIFF_H 0 PARENT_SCOPE) + set(OPJ_HAVE_LIBTIFF 0 PARENT_SCOPE) +-- +2.10.2 + diff --git a/buildroot/package/openjpeg/0002-thirdparty-lcms2-append-flags-found-by-pkg-config-if.patch b/buildroot/package/openjpeg/0002-thirdparty-lcms2-append-flags-found-by-pkg-config-if.patch new file mode 100644 index 0000000..5697b82 --- /dev/null +++ b/buildroot/package/openjpeg/0002-thirdparty-lcms2-append-flags-found-by-pkg-config-if.patch @@ -0,0 +1,49 @@ +From 226daa77ea5a35da306f9af2548f3e2c9e79f577 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Fri, 11 Nov 2016 23:35:13 +0100 +Subject: [PATCH] thirdparty: lcms2: append flags found by pkg-config if + available + +This change allows to get all required CFLAGS/LDFLAGS in case of static only +build. + +Fixes a buildroot build failure (see [1], [2] and [3]). + +[1] http://autobuild.buildroot.net/results/5ce/5cee20afd8bef5268832cddcb3a5270746be7a57 +[2] http://lists.busybox.net/pipermail/buildroot/2016-November/177187.html +[3] http://lists.busybox.net/pipermail/buildroot/2016-November/177188.html + +Signed-off-by: Peter Seiderer +--- + thirdparty/CMakeLists.txt | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt +index cd6a5e1391b0..a3a8494d89b1 100644 +--- a/thirdparty/CMakeLists.txt ++++ b/thirdparty/CMakeLists.txt +@@ -113,12 +113,19 @@ if( BUILD_THIRDPARTY) + set(OPJ_HAVE_LIBLCMS2 1 PARENT_SCOPE) + else(BUILD_THIRDPARTY) + find_package(LCMS2) ++ # Static only build: ++ # it is necessary to invoke pkg_check_module on lcms2 since it may have ++ # several other dependencies not declared by its cmake module, but they are ++ # in the its pkgconfig module. ++ if(PKG_CONFIG_FOUND) ++ pkg_check_modules(PC_LCMS2 QUIET lcms2) ++ endif(PKG_CONFIG_FOUND) + if(LCMS2_FOUND) + message(STATUS "Your system seems to have a LCMS2 lib available, we will use it") + set(OPJ_HAVE_LCMS2_H 1 PARENT_SCOPE) + set(OPJ_HAVE_LIBLCMS2 1 PARENT_SCOPE) +- set(LCMS_LIBNAME ${LCMS2_LIBRARIES} PARENT_SCOPE) +- set(LCMS_INCLUDE_DIRNAME ${LCMS2_INCLUDE_DIRS} PARENT_SCOPE) ++ set(LCMS_LIBNAME ${LCMS2_LIBRARIES} ${PC_LCMS2_STATIC_LIBRARIES} PARENT_SCOPE) ++ set(LCMS_INCLUDE_DIRNAME ${LCMS2_INCLUDE_DIRS} ${PC_LCMS2_STATIC_INCLUDE_DIRS} PARENT_SCOPE) + else(LCMS2_FOUND) # not found lcms2 + # try to find LCMS + find_package(LCMS) +-- +2.10.2 + diff --git a/buildroot/package/openjpeg/0003-CMakeLists.txt-Don-t-require-a-C-compiler.patch b/buildroot/package/openjpeg/0003-CMakeLists.txt-Don-t-require-a-C-compiler.patch new file mode 100644 index 0000000..13cceef --- /dev/null +++ b/buildroot/package/openjpeg/0003-CMakeLists.txt-Don-t-require-a-C-compiler.patch @@ -0,0 +1,34 @@ +From 786ddcd1475adc6193c59d53e0d8ed2c502f2b00 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Sat, 23 Sep 2017 18:49:31 +0200 +Subject: [PATCH] CMakeLists.txt: Don't require a C++ compiler + +By default, CMake assumes that the project is using both C and C++. By +explicitly passing 'C' as argument of the project() macro, we tell CMake +that only C is used, which prevents CMake from erroring out if a C++ +compiler doesn't exist. + +Submitted upstream: +https://github.com/uclouvain/openjpeg/pull/1027 + +Signed-off-by: Peter Korsgaard +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index ec42bc99..d80eb48b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -24,7 +24,7 @@ endif() + #string(TOLOWER ${OPENJPEG_NAMESPACE} OPENJPEG_LIBRARY_NAME) + set(OPENJPEG_LIBRARY_NAME openjp2) + +-project(${OPENJPEG_NAMESPACE}) ++project(${OPENJPEG_NAMESPACE} C) + + # Do full dependency headers. + include_regular_expression("^.*$") +-- +2.11.0 + diff --git a/buildroot/package/openjpeg/0004-install-static-lib.patch b/buildroot/package/openjpeg/0004-install-static-lib.patch new file mode 100644 index 0000000..4a3bbfa --- /dev/null +++ b/buildroot/package/openjpeg/0004-install-static-lib.patch @@ -0,0 +1,27 @@ +From 66297f07a43d2770a97c8456d20202f3d051d980 Mon Sep 17 00:00:00 2001 +From: Even Rouault +Date: Mon, 9 Oct 2017 11:40:43 +0200 +Subject: [PATCH] Unix build: fix regression of 2.3.0 where a shared-only or + static-only build lacks the installation target for the library (#1019, fixes + regression introduced by 3dfc6ca2bcf06fd1adb6b6b4cecc6c092f08ba0b) + +Downloaded from upstream commit +https://github.com/uclouvain/openjpeg/commit/66297f07a43d2770a97c8456d20202f3d051d980 + +Signed-off-by: Bernd Kuhls +--- + src/lib/openjp2/CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/lib/openjp2/CMakeLists.txt b/src/lib/openjp2/CMakeLists.txt +index 0b4520384..f8990ccf0 100644 +--- a/src/lib/openjp2/CMakeLists.txt ++++ b/src/lib/openjp2/CMakeLists.txt +@@ -99,6 +99,7 @@ else() + set(INSTALL_LIBS ${OPENJPEG_LIBRARY_NAME} openjp2_static) + else() + add_library(${OPENJPEG_LIBRARY_NAME} ${OPENJPEG_SRCS}) ++ set(INSTALL_LIBS ${OPENJPEG_LIBRARY_NAME}) + endif() + endif() + diff --git a/buildroot/package/openjpeg/Config.in b/buildroot/package/openjpeg/Config.in new file mode 100644 index 0000000..738999f --- /dev/null +++ b/buildroot/package/openjpeg/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_OPENJPEG + bool "openjpeg" + help + The OpenJPEG library is an open-source JPEG 2000 codec + written in C. + + http://www.openjpeg.org diff --git a/buildroot/package/openjpeg/openjpeg.hash b/buildroot/package/openjpeg/openjpeg.hash new file mode 100644 index 0000000..dd3cf26 --- /dev/null +++ b/buildroot/package/openjpeg/openjpeg.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 3dc787c1bb6023ba846c2a0d9b1f6e179f1cd255172bde9eb75b01f1e6c7d71a openjpeg-2.3.0.tar.gz diff --git a/buildroot/package/openjpeg/openjpeg.mk b/buildroot/package/openjpeg/openjpeg.mk new file mode 100644 index 0000000..9a8fdab --- /dev/null +++ b/buildroot/package/openjpeg/openjpeg.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# openjpeg +# +################################################################################ + +OPENJPEG_VERSION = 2.3.0 +OPENJPEG_SITE = $(call github,uclouvain,openjpeg,v$(OPENJPEG_VERSION)) +OPENJPEG_LICENSE = BSD-2-Clause +OPENJPEG_LICENSE_FILES = LICENSE +OPENJPEG_INSTALL_STAGING = YES + +OPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib) +OPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBPNG),libpng) +OPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_TIFF),tiff) +OPENJPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_LCMS2),lcms2) + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +OPENJPEG_CONF_OPTS += -DOPJ_USE_THREAD=ON +else +OPENJPEG_CONF_OPTS += -DOPJ_USE_THREAD=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/openldap/0001-fix_cross_strip.patch b/buildroot/package/openldap/0001-fix_cross_strip.patch new file mode 100644 index 0000000..ed4964e --- /dev/null +++ b/buildroot/package/openldap/0001-fix_cross_strip.patch @@ -0,0 +1,74 @@ +Fix stripping when cross-compiling + +Probably-Signed-off-by: Dave Bender +[yann.morin.1998@free.fr: patch was made by Dave, but he + forgot his SoB line, so I added it] +Signed-off-by: "Yann E. MORIN" + +diff -rupN openldap-2.4.40/build/shtool openldap-2.4.40-br/build/shtool +--- openldap-2.4.40/build/shtool 2014-09-18 21:48:49.000000000 -0400 ++++ openldap-2.4.40-br/build/shtool 2015-01-21 13:21:35.689829372 -0500 +@@ -981,7 +981,7 @@ install ) + if [ ".$opt_t" = .yes ]; then + echo "strip $dsttmp" 1>&2 + fi +- strip $dsttmp || shtool_exit $? ++ $STRIP $dsttmp || shtool_exit $? + fi + if [ ".$opt_o" != . ]; then + if [ ".$opt_t" = .yes ]; then +diff -rupN openldap-2.4.40/build/top.mk openldap-2.4.40-br/build/top.mk +--- openldap-2.4.40/build/top.mk 2014-09-18 21:48:49.000000000 -0400 ++++ openldap-2.4.40-br/build/top.mk 2015-01-21 13:23:41.027810097 -0500 +@@ -59,7 +59,7 @@ INSTALL_PROGRAM = $(INSTALL) + INSTALL_DATA = $(INSTALL) -m 644 + INSTALL_SCRIPT = $(INSTALL) + +-STRIP = -s ++STRIP_OPTS = -s + + LINT = lint + 5LINT = 5lint +diff -rupN openldap-2.4.40/clients/tools/Makefile.in openldap-2.4.40-br/clients/tools/Makefile.in +--- openldap-2.4.40/clients/tools/Makefile.in 2014-09-18 21:48:49.000000000 -0400 ++++ openldap-2.4.40-br/clients/tools/Makefile.in 2015-01-21 13:23:35.827727946 -0500 +@@ -120,7 +120,7 @@ install-local: FORCE + -$(MKDIR) $(DESTDIR)$(bindir) + @( \ + for prg in $(PROGRAMS); do \ +- $(LTINSTALL) $(INSTALLFLAGS) $(STRIP) -m 755 $$prg$(EXEEXT) \ ++ $(LTINSTALL) $(INSTALLFLAGS) $(STRIP_OPTS) -m 755 $$prg$(EXEEXT) \ + $(DESTDIR)$(bindir); \ + done \ + ) +diff -rupN openldap-2.4.40/configure.in openldap-2.4.40-br/configure.in +--- openldap-2.4.40/configure.in 2014-09-18 21:48:49.000000000 -0400 ++++ openldap-2.4.40-br/configure.in 2015-01-16 15:50:48.874816786 -0500 +@@ -669,6 +669,15 @@ if test -z "${AR}"; then + fi + fi + ++if test -z "${STRIP}"; then ++ AC_CHECK_PROGS(STRIP,strip,missing) ++ ++ if test "${STRIP}" = "missing" ; then ++ AC_MSG_ERROR([Unable to locate strip(1) or suitable replacement. Check PATH or set STRIP.]) ++ fi ++fi ++ ++ + AC_LIBTOOL_WIN32_DLL + AC_LIBTOOL_DLOPEN + AC_PROG_LIBTOOL +diff -rupN openldap-2.4.40/servers/slapd/Makefile.in openldap-2.4.40-br/servers/slapd/Makefile.in +--- openldap-2.4.40/servers/slapd/Makefile.in 2015-01-16 15:04:52.507473256 -0500 ++++ openldap-2.4.40-br/servers/slapd/Makefile.in 2015-01-16 15:05:02.299627229 -0500 +@@ -378,7 +378,7 @@ install-local-srv: install-slapd install + install-slapd: FORCE + -$(MKDIR) $(DESTDIR)$(libexecdir) + -$(MKDIR) $(DESTDIR)$(localstatedir)/run +- $(LTINSTALL) $(INSTALLFLAGS) $(STRIP) -m 755 \ ++ $(LTINSTALL) $(INSTALLFLAGS) $(STRIP_OPTS) -m 755 \ + slapd$(EXEEXT) $(DESTDIR)$(libexecdir) + @for i in $(SUBDIRS); do \ + if test -d $$i && test -f $$i/Makefile ; then \ diff --git a/buildroot/package/openldap/0002-fix-bignum.patch b/buildroot/package/openldap/0002-fix-bignum.patch new file mode 100644 index 0000000..d3dc88f --- /dev/null +++ b/buildroot/package/openldap/0002-fix-bignum.patch @@ -0,0 +1,38 @@ +configure: correctly detect bignum + +Building with bignum is currently not possible, since we're checking +ol_with_tls against a value it is never assigned in any case. + +Since bignum is from openssl, and openssl is the preferred TLS +implementation, if the bignum headers are found, it means we do have +TLS and it is opensl. + +So, keep the check for the bignum header, but check against ol_link_tls +which means that openssl is enabled when we find the bignum headers. + +Signed-off-by: "Yann E. MORIN" + +diff -durN openldap-2.4.40.orig/configure openldap-2.4.40/configure +--- openldap-2.4.40.orig/configure 2014-09-19 03:48:49.000000000 +0200 ++++ openldap-2.4.40/configure 2015-01-25 18:44:54.216879362 +0100 +@@ -23478,7 +23478,7 @@ + + if test "$ac_cv_header_openssl_bn_h" = "yes" && + test "$ac_cv_header_openssl_crypto_h" = "yes" && +- test "$ol_with_tls" = "found" ; then ++ test "$ol_link_tls" = "yes" ; then + ol_with_mp=bignum + + $as_echo "#define USE_MP_BIGNUM 1" >>confdefs.h +diff -durN openldap-2.4.40.orig/configure.in openldap-2.4.40/configure.in +--- openldap-2.4.40.orig/configure.in 2014-09-19 03:48:49.000000000 +0200 ++++ openldap-2.4.40/configure.in 2015-01-25 18:44:37.628676446 +0100 +@@ -2367,7 +2367,7 @@ + AC_CHECK_HEADERS(openssl/crypto.h) + if test "$ac_cv_header_openssl_bn_h" = "yes" && + test "$ac_cv_header_openssl_crypto_h" = "yes" && +- test "$ol_with_tls" = "found" ; then ++ test "$ol_link_tls" = "yes" ; then + ol_with_mp=bignum + AC_DEFINE(USE_MP_BIGNUM,1,[define to use OpenSSL BIGNUM for MP]) + elif test $ol_with_mp = bignum ; then diff --git a/buildroot/package/openldap/0003-disable-docs.patch b/buildroot/package/openldap/0003-disable-docs.patch new file mode 100644 index 0000000..7ce61e6 --- /dev/null +++ b/buildroot/package/openldap/0003-disable-docs.patch @@ -0,0 +1,23 @@ +doc: do not build + +Building the documentation fails on some autobuilders, +so disable it as we're not interested in it. + +Fixes: + http://autobuild.buildroot.org/results/1dc/1dc17a54e57130bffd19d360c9a7faae440b8916/ + http://autobuild.buildroot.org/results/407/40797597024cbb9054fdda8bdf4d011bba966b06/ + +Signed-off-by: "Yann E. MORIN" + +diff -durN openldap-2.4.40.orig/Makefile.in openldap-2.4.40/Makefile.in +--- openldap-2.4.40.orig/Makefile.in 2014-09-19 03:48:49.000000000 +0200 ++++ openldap-2.4.40/Makefile.in 2015-01-31 23:12:54.347678913 +0100 +@@ -13,7 +13,7 @@ + ## top-level directory of the distribution or, alternatively, at + ## . + +-SUBDIRS= include libraries clients servers tests doc ++SUBDIRS= include libraries clients servers tests + CLEANDIRS= + INSTALLDIRS= + diff --git a/buildroot/package/openldap/Config.in b/buildroot/package/openldap/Config.in new file mode 100644 index 0000000..bd39d0d --- /dev/null +++ b/buildroot/package/openldap/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_OPENLDAP + bool "openldap" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # needs fork() + help + OpenLDAP Software is an open source implementation of the + Lightweight Directory Access Protocol. + + This only installs client-side support. + + http://www.openldap.org/ + +if BR2_PACKAGE_OPENLDAP + +config BR2_PACKAGE_OPENLDAP_CLIENTS + bool "openldap client binaries" + default y + help + Install the OpenLDAP client tools (ldapadd, ldapcompare, + ldapdelete, ldapexop, ldapmodify, ldapmodrdn, ldappasswd, + ldapsearch, ldapurl, ldapwhoami) + +endif + +comment "openldap needs a toolchain w/ wchar" + depends on BR2_USE_MMU # needs fork() + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/openldap/openldap.hash b/buildroot/package/openldap/openldap.hash new file mode 100644 index 0000000..aec4aae --- /dev/null +++ b/buildroot/package/openldap/openldap.hash @@ -0,0 +1,4 @@ +# From http://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.45.md5 +md5 00ff8301277cdfd0af728a6927042a13 openldap-2.4.45.tgz +# From http://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.45.sha1 +sha1 c98437385d3eaee80c9e2c09f3f0d4b7c140233d openldap-2.4.45.tgz diff --git a/buildroot/package/openldap/openldap.mk b/buildroot/package/openldap/openldap.mk new file mode 100644 index 0000000..2bf6fc3 --- /dev/null +++ b/buildroot/package/openldap/openldap.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# openldap +# +################################################################################ + +OPENLDAP_VERSION = 2.4.45 +OPENLDAP_SOURCE = openldap-$(OPENLDAP_VERSION).tgz +OPENLDAP_SITE = http://www.openldap.org/software/download/OpenLDAP/openldap-release +OPENLDAP_LICENSE = OpenLDAP Public License +OPENLDAP_LICENSE_FILES = LICENSE +OPENLDAP_INSTALL_STAGING = YES +OPENLDAP_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +OPENLDAP_TLS = openssl +OPENLDAP_DEPENDENCIES += libopenssl +else ifeq ($(BR2_PACKAGE_GNUTLS),y) +OPENLDAP_TLS = gnutls +OPENLDAP_DEPENDENCIES += gnutls +else ifeq ($(BR2_PACKAGE_LIBNSS),y) +OPENLDAP_TLS = moznss +OPENLDAP_DEPENDENCIES += libnss +OPENLDAP_CPPFLAGS = \ + -I$(STAGING_DIR)/usr/include/nss \ + -I$(STAGING_DIR)/usr/include/nspr +else +OPENLDAP_TLS = no +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENLDAP_MP = bignum +OPENLDAP_DEPENDENCIES += openssl +OPENLDAP_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`" +else ifeq ($(BR2_PACKAGE_GMP),y) +OPENLDAP_MP = gmp +OPENLDAP_DEPENDENCIES += gmp +else +OPENLDAP_MP = longlong +endif + +OPENLDAP_CONF_ENV += ac_cv_func_memcmp_working=yes + +OPENLDAP_CONF_OPTS += \ + --enable-syslog \ + --disable-proctitle \ + --disable-slapd \ + --with-yielding-select \ + --sysconfdir=/etc \ + --enable-dynamic=$(if $(BR2_STATIC_LIBS),no,yes) \ + --with-tls=$(OPENLDAP_TLS) \ + --with-mp=$(OPENLDAP_MP) \ + CPPFLAGS="$(TARGET_CPPFLAGS) $(OPENLDAP_CPPFLAGS)" + +# Somehow, ${STRIP} does not percolates through to the shtool script +# used to install the executables; thus, that script tries to run the +# executable it is supposed to install, resulting in an error. +OPENLDAP_MAKE_ENV = STRIP="$(TARGET_STRIP)" + +ifeq ($(BR2_PACKAGE_OPENLDAP_CLIENTS),) +OPENLDAP_CLIENTS = \ + ldapurl ldapexop ldapcompare ldapwhoami \ + ldappasswd ldapmodrdn ldapdelete ldapmodify \ + ldapsearch +define OPENLDAP_REMOVE_CLIENTS + $(RM) -f $(foreach p,$(OPENLDAP_CLIENTS),$(TARGET_DIR)/usr/bin/$(p)) + $(RM) -rf $(TARGET_DIR)/etc/openldap +endef +OPENLDAP_POST_INSTALL_TARGET_HOOKS += OPENLDAP_REMOVE_CLIENTS +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/openmpi/Config.in b/buildroot/package/openmpi/Config.in new file mode 100644 index 0000000..4413c55 --- /dev/null +++ b/buildroot/package/openmpi/Config.in @@ -0,0 +1,20 @@ +comment "openmpi needs a toolchain w/ dynamic library, NPTL, wchar, C++" + depends on BR2_USE_MMU + depends on !BR2_sparc + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_OPENMPI + bool "openmpi" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # dlfcn.h + # from the configure script: "Sparc v8 target is not supported + # in this release of Open MPI" + depends on !BR2_sparc + help + A High Performance Message Passing Library. + + https://www.open-mpi.org/ diff --git a/buildroot/package/openmpi/openmpi-mips32-fortran.cache b/buildroot/package/openmpi/openmpi-mips32-fortran.cache new file mode 100644 index 0000000..473f73a --- /dev/null +++ b/buildroot/package/openmpi/openmpi-mips32-fortran.cache @@ -0,0 +1,51 @@ +ompi_cv_fortran_sizeof_CHARACTER=1 +ompi_cv_fortran_sizeof_LOGICAL=4 +ompi_cv_fortran_sizeof_LOGICALp1=1 +ompi_cv_fortran_sizeof_LOGICALp2=2 +ompi_cv_fortran_sizeof_LOGICALp4=4 +ompi_cv_fortran_sizeof_LOGICALp8=8 +ompi_cv_fortran_sizeof_INTEGER=4 +ompi_cv_fortran_sizeof_INTEGERp1=1 +ompi_cv_fortran_sizeof_INTEGERp2=2 +ompi_cv_fortran_sizeof_INTEGERp4=4 +ompi_cv_fortran_sizeof_INTEGERp8=8 +ompi_cv_fortran_sizeof_REAL=4 +ompi_cv_fortran_sizeof_REALp4=4 +ompi_cv_fortran_sizeof_REALp8=8 +ompi_cv_fortran_sizeof_DOUBLE_PRECISION=8 +ompi_cv_fortran_sizeof_COMPLEX=8 +ompi_cv_fortran_sizeof_COMPLEXp8=8 +ompi_cv_fortran_sizeof_COMPLEXp16=16 +ompi_cv_fortran_sizeof_DOUBLE_COMPLEX=16 +ompi_cv_fortran_alignment_CHARACTER=1 +ompi_cv_fortran_alignment_LOGICAL=4 +ompi_cv_fortran_alignment_LOGICALp1=1 +ompi_cv_fortran_alignment_LOGICALp2=2 +ompi_cv_fortran_alignment_LOGICALp4=4 +ompi_cv_fortran_alignment_LOGICALp8=8 +ompi_cv_fortran_alignment_INTEGER=4 +ompi_cv_fortran_alignment_INTEGERp1=1 +ompi_cv_fortran_alignment_INTEGERp2=2 +ompi_cv_fortran_alignment_INTEGERp4=4 +ompi_cv_fortran_alignment_INTEGERp8=8 +ompi_cv_fortran_alignment_REAL=4 +ompi_cv_fortran_alignment_REALp4=4 +ompi_cv_fortran_alignment_REALp8=8 +ompi_cv_fortran_alignment_DOUBLE_PRECISION=8 +ompi_cv_fortran_alignment_COMPLEX=4 +ompi_cv_fortran_alignment_COMPLEXp8=4 +ompi_cv_fortran_alignment_COMPLEXp16=8 +ompi_cv_fortran_alignment_DOUBLE_COMPLEX=8 +ompi_cv_fortran_kind_value_C_SIGNED_CHAR=1 +ompi_cv_fortran_kind_value_C_SHORT=2 +ompi_cv_fortran_kind_value_C_INT=4 +ompi_cv_fortran_kind_value_C_INT16_T=2 +ompi_cv_fortran_kind_value_C_INT32_T=4 +ompi_cv_fortran_kind_value_C_INT64_T=8 +ompi_cv_fortran_kind_value_C_LONG_LONG=8 +ompi_cv_fortran_kind_value_C_FLOAT=4 +ompi_cv_fortran_kind_value_C_FLOAT_COMPLEX=4 +ompi_cv_fortran_kind_value_C_DOUBLE=8 +ompi_cv_fortran_kind_value_C_DOUBLE_COMPLEX=8 +ompi_cv_fortran_true_value=1 +ompi_cv_fortran_sizeof_type_test_mpi_handle_=4 diff --git a/buildroot/package/openmpi/openmpi-mips64-fortran.cache b/buildroot/package/openmpi/openmpi-mips64-fortran.cache new file mode 100644 index 0000000..7f02099 --- /dev/null +++ b/buildroot/package/openmpi/openmpi-mips64-fortran.cache @@ -0,0 +1,60 @@ +ompi_cv_fortran_sizeof_CHARACTER=1 +ompi_cv_fortran_sizeof_LOGICAL=4 +ompi_cv_fortran_sizeof_LOGICALp1=1 +ompi_cv_fortran_sizeof_LOGICALp2=2 +ompi_cv_fortran_sizeof_LOGICALp4=4 +ompi_cv_fortran_sizeof_LOGICALp8=8 +ompi_cv_fortran_sizeof_INTEGER=4 +ompi_cv_fortran_sizeof_INTEGERp1=1 +ompi_cv_fortran_sizeof_INTEGERp2=2 +ompi_cv_fortran_sizeof_INTEGERp4=4 +ompi_cv_fortran_sizeof_INTEGERp8=8 +ompi_cv_fortran_sizeof_INTEGERp16=16 +ompi_cv_fortran_sizeof_REAL=4 +ompi_cv_fortran_sizeof_REALp4=4 +ompi_cv_fortran_sizeof_REALp8=8 +ompi_cv_fortran_sizeof_REALp16=16 +ompi_cv_fortran_sizeof_DOUBLE_PRECISION=8 +ompi_cv_fortran_sizeof_COMPLEX=8 +ompi_cv_fortran_sizeof_COMPLEXp8=8 +ompi_cv_fortran_sizeof_COMPLEXp16=16 +ompi_cv_fortran_sizeof_COMPLEXp32=32 +ompi_cv_fortran_sizeof_DOUBLE_COMPLEX=16 +ompi_cv_fortran_alignment_CHARACTER=1 +ompi_cv_fortran_alignment_LOGICAL=4 +ompi_cv_fortran_alignment_LOGICALp1=1 +ompi_cv_fortran_alignment_LOGICALp2=2 +ompi_cv_fortran_alignment_LOGICALp4=4 +ompi_cv_fortran_alignment_LOGICALp8=8 +ompi_cv_fortran_alignment_INTEGER=4 +ompi_cv_fortran_alignment_INTEGERp1=1 +ompi_cv_fortran_alignment_INTEGERp2=2 +ompi_cv_fortran_alignment_INTEGERp4=4 +ompi_cv_fortran_alignment_INTEGERp8=8 +ompi_cv_fortran_alignment_REAL=4 +ompi_cv_fortran_alignment_REALp4=4 +ompi_cv_fortran_alignment_REALp8=8 +ompi_cv_fortran_alignment_REALp16=16 +ompi_cv_fortran_alignment_DOUBLE_PRECISION=8 +ompi_cv_fortran_alignment_COMPLEX=4 +ompi_cv_fortran_alignment_COMPLEXp8=4 +ompi_cv_fortran_alignment_COMPLEXp16=8 +ompi_cv_fortran_alignment_COMPLEXp32=16 +ompi_cv_fortran_alignment_DOUBLE_COMPLEX=8 +ompi_cv_fortran_kind_value_C_SIGNED_CHAR=1 +ompi_cv_fortran_kind_value_C_SHORT=2 +ompi_cv_fortran_kind_value_C_INT=4 +ompi_cv_fortran_kind_value_C_INT16_T=2 +ompi_cv_fortran_kind_value_C_INT32_T=4 +ompi_cv_fortran_kind_value_C_INT64_T=8 +ompi_cv_fortran_kind_value_C_LONG_LONG=8 +ompi_cv_fortran_kind_value_C_LONG_DOUBLE=16 +ompi_cv_fortran_kind_value_C_LONG_DOUBLE_COMPLEX=16 +ompi_cv_fortran_kind_value_C_FLOAT=4 +ompi_cv_fortran_kind_value_C_FLOAT_COMPLEX=4 +ompi_cv_fortran_kind_value_C_DOUBLE=8 +ompi_cv_fortran_kind_value_C_DOUBLE_COMPLEX=8 +ompi_cv_fortran_kind_value_0=0 +ompi_cv_real16_c_equiv=yes +ompi_cv_fortran_true_value=1 +ompi_cv_fortran_sizeof_type_test_mpi_handle_=4 diff --git a/buildroot/package/openmpi/openmpi.hash b/buildroot/package/openmpi/openmpi.hash new file mode 100644 index 0000000..4e967e6 --- /dev/null +++ b/buildroot/package/openmpi/openmpi.hash @@ -0,0 +1,5 @@ +# From: https://www.open-mpi.org/software/ompi/v1.10/ +md5 c87c613f9acb1a4eee21fa1ac8042579 openmpi-1.10.7.tar.bz2 +sha1 fe359d8caa4888625308cf03343d913dd5ac6198 openmpi-1.10.7.tar.bz2 +# Locally computed +sha256 a089ece151fec974905caa35b0a59039b227bdea4e7933069e94bee4ed0e5a90 openmpi-1.10.7.tar.bz2 diff --git a/buildroot/package/openmpi/openmpi.mk b/buildroot/package/openmpi/openmpi.mk new file mode 100644 index 0000000..df3270f --- /dev/null +++ b/buildroot/package/openmpi/openmpi.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# openmpi +# +################################################################################ + +OPENMPI_VERSION_MAJOR = 1.10 +OPENMPI_VERSION = $(OPENMPI_VERSION_MAJOR).7 +OPENMPI_SITE = https://www.open-mpi.org/software/ompi/v$(OPENMPI_VERSION_MAJOR)/downloads +OPENMPI_SOURCE = openmpi-$(OPENMPI_VERSION).tar.bz2 +OPENMPI_LICENSE = BSD-3-Clause +OPENMPI_LICENSE_FILES = LICENSE +OPENMPI_INSTALL_STAGING = YES +OPENMPI_CONF_OPTS = --disable-vt + +# Enabling Fortran support requires pre-seeding the configure script +# with various values that cannot be guessed, so we provide cache +# files for various architectures. + +ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y) +ifeq ($(BR2_mips)$(BR2_mipsel),y) +OPENMPI_FORTRAN_CONF_CACHE = package/openmpi/openmpi-mips32-fortran.cache +else ifeq ($(BR2_mips64)$(BR2_mips64el),y) +OPENMPI_FORTRAN_CONF_CACHE = package/openmpi/openmpi-mips64-fortran.cache +endif +endif + +ifneq ($(OPENMPI_FORTRAN_CONF_CACHE),) +define OPENMPI_COPY_FORTRAN_CACHE + cp $(OPENMPI_FORTRAN_CONF_CACHE) $(@D)/openmpi-config.cache +endef + +OPENMPI_POST_PATCH_HOOKS += OPENMPI_COPY_FORTRAN_CACHE +OPENMPI_CONF_OPTS += \ + --enable-mpi-fortran=yes \ + --cache-file=$(@D)/openmpi-config.cache +else +OPENMPI_CONF_OPTS += --enable-mpi-fortran=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/openntpd/0001-fix-musl.patch b/buildroot/package/openntpd/0001-fix-musl.patch new file mode 100644 index 0000000..e369d5a --- /dev/null +++ b/buildroot/package/openntpd/0001-fix-musl.patch @@ -0,0 +1,38 @@ +From: Baruch Siach +Date: Fri, 29 Sep 2017 10:06:52 +0300 +Subject: [PATCH] Fix build with musl and older Linux kernel + +The musl libc carries its own copy of Linux system calls. When building +with Linux headers older than v3.17, musl provides SYS_getrandom +definition, but not GRND_NONBLOCK. This causes build failure for +libressl and openntpd: + +getentropy_linux.c: In function 'getentropy_getrandom': +getentropy_linux.c:205:42: error: 'GRND_NONBLOCK' undeclared (first use in this function) + ret = syscall(SYS_getrandom, buf, len, GRND_NONBLOCK); + ^~~~~~~~~~~~~ + +Define GRND_NONBLOCK locally when its definition is missing to fix the +build. There should be no run-time effect. Older kernels return ENOSYS +for unsupported syscall(). + +[ from upstream pull request with file location changed ] +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/libressl-portable/openbsd/pull/82 + +diff -Nuar openntpd-6.2p2-orig/compat/getentropy_linux.c openntpd-6.2p2/compat/getentropy_linux.c +--- openntpd-6.2p2-orig/compat/getentropy_linux.c 2017-09-07 22:12:02.000000000 +0300 ++++ openntpd-6.2p2/compat/getentropy_linux.c 2017-09-29 11:54:54.856245770 +0300 +@@ -194,6 +194,11 @@ + } + + #ifdef SYS_getrandom ++ ++#ifndef GRND_NONBLOCK ++#define GRND_NONBLOCK 0x0001 ++#endif ++ + static int + getentropy_getrandom(void *buf, size_t len) + { diff --git a/buildroot/package/openntpd/Config.in b/buildroot/package/openntpd/Config.in new file mode 100644 index 0000000..c84d0ba --- /dev/null +++ b/buildroot/package/openntpd/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_OPENNTPD + bool "openntpd" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # fork () + depends on !BR2_PACKAGE_NTP # conflicting binaries + help + OpenNTPD is an easy to use implementation of the Network Time + Protocol. It provides the ability to sync the local clock + to remote NTP servers and can act as NTP server itself, + redistributing the local clock. It just works. + + Crypto support is available if the LibreSSL library is + enabled. + + http://www.openntpd.org/ + +comment "openntpd needs a toolchain w/ NPTL" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_NTP + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/openntpd/S49ntp b/buildroot/package/openntpd/S49ntp new file mode 100755 index 0000000..c211ac8 --- /dev/null +++ b/buildroot/package/openntpd/S49ntp @@ -0,0 +1,25 @@ +#!/bin/sh + +[ -x /usr/sbin/ntpd ] || exit 0 +[ -f /etc/ntpd.conf ] || exit 0 + +case "$1" in + start) + printf "Starting openntpd: " + start-stop-daemon -S -x /usr/sbin/ntpd -- -s -p /run/ntpd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping openntpd: " + start-stop-daemon -K -q -p /run/ntpd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + "$0" stop + sleep 1 + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + ;; +esac diff --git a/buildroot/package/openntpd/ntpd.service b/buildroot/package/openntpd/ntpd.service new file mode 100644 index 0000000..a4ffa73 --- /dev/null +++ b/buildroot/package/openntpd/ntpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=OpenNTP Daemon +After=network.target +Conflicts=systemd-timesyncd.service + +[Service] +Type=simple +ExecStart=/usr/sbin/ntpd -s -d + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/openntpd/openntpd.hash b/buildroot/package/openntpd/openntpd.hash new file mode 100644 index 0000000..4d00b7b --- /dev/null +++ b/buildroot/package/openntpd/openntpd.hash @@ -0,0 +1,5 @@ +# from http://ftp.openbsd.org/pub/OpenBSD/OpenNTPD/SHA256 +sha256 7b02691524197e01ba6b1b4b7595b33956e657ba6d5c4cf2fc20ea3f4914c13a openntpd-6.2p3.tar.gz + +# Locally computed +sha256 6c1822ee950652c12bb3773849db18794f62c63452a70d018edf23e8cba71839 COPYING diff --git a/buildroot/package/openntpd/openntpd.mk b/buildroot/package/openntpd/openntpd.mk new file mode 100644 index 0000000..f5a5690 --- /dev/null +++ b/buildroot/package/openntpd/openntpd.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# openntpd +# +################################################################################ + +OPENNTPD_VERSION = 6.2p3 +OPENNTPD_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenNTPD +OPENNTPD_LICENSE = MIT-like, BSD-2-Clause, BSD-3-Clause +OPENNTPD_LICENSE_FILES = COPYING +# Need to autoreconf for our libtool patch to apply properly +OPENNTPD_AUTORECONF = YES + +# Openntpd searches for tls_config_set_ca_mem which is only available +# in LibreSSL +ifeq ($(BR2_PACKAGE_LIBRESSL),y) +OPENNTPD_DEPENDENCIES += openssl +endif + +# openntpd uses pthread functions for arc4random emulation but forgets +# to use -pthread +OPENNTPD_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -pthread" + +define OPENNTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/openntpd/ntpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/ntpd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/ntpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/ntpd.service +endef + +define OPENNTPD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/openntpd/S49ntp \ + $(TARGET_DIR)/etc/init.d/S49ntp +endef + +define OPENNTPD_USERS + _ntp -1 _ntp -1 * - - - Network Time Protocol daemon +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/openobex/Config.in b/buildroot/package/openobex/Config.in new file mode 100644 index 0000000..e611b8d --- /dev/null +++ b/buildroot/package/openobex/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_OPENOBEX + bool "openobex" + help + Free open source implementation of the Object Exchange (OBEX) + protocol. + + http://sourceforge.net/projects/openobex diff --git a/buildroot/package/openobex/openobex.hash b/buildroot/package/openobex/openobex.hash new file mode 100644 index 0000000..1cdb09d --- /dev/null +++ b/buildroot/package/openobex/openobex.hash @@ -0,0 +1,6 @@ +# From http://sourceforge.net/projects/openobex/files/openobex/1.7.2/ +sha1 4a5098a62889134cbd2b54997e7ff3e959e601e6 openobex-1.7.2-Source.tar.gz +md5 f6e0b6cb7dcfd731460a7e9a91429a3a openobex-1.7.2-Source.tar.gz +# License files, locally calculated +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING.LIB diff --git a/buildroot/package/openobex/openobex.mk b/buildroot/package/openobex/openobex.mk new file mode 100644 index 0000000..ea41f65 --- /dev/null +++ b/buildroot/package/openobex/openobex.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# openobex +# +################################################################################ + +OPENOBEX_VERSION = 1.7.2 +OPENOBEX_SITE = http://downloads.sourceforge.net/project/openobex/openobex/$(OPENOBEX_VERSION) +OPENOBEX_SOURCE = openobex-$(OPENOBEX_VERSION)-Source.tar.gz +# Libraries seems to be released under LGPL-2.1+, +# while other material is under GPL-2.0+. +OPENOBEX_LICENSE = GPL-2.0+/LGPL-2.1+ +OPENOBEX_LICENSE_FILES = COPYING COPYING.LIB +OPENOBEX_DEPENDENCIES = host-pkgconf +OPENOBEX_INSTALL_STAGING = YES +OPENOBEX_CONF_OPTS = -DBUILD_DOCUMENTATION=OFF + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y) +OPENOBEX_DEPENDENCIES += bluez_utils +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +OPENOBEX_DEPENDENCIES += bluez5_utils +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +OPENOBEX_DEPENDENCIES += libusb +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +OPENOBEX_DEPENDENCIES += udev +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/openocd/0001-Fix-jimtcl-auto-configuration-to-force-static-librar.patch b/buildroot/package/openocd/0001-Fix-jimtcl-auto-configuration-to-force-static-librar.patch new file mode 100644 index 0000000..fd3cfa4 --- /dev/null +++ b/buildroot/package/openocd/0001-Fix-jimtcl-auto-configuration-to-force-static-librar.patch @@ -0,0 +1,27 @@ +From 3bef159779c8fd39a070ec5c8191e18ba2efa79d Mon Sep 17 00:00:00 2001 +From: Claudio Laurita +Date: Sun, 30 Nov 2014 18:21:58 +0100 +Subject: [PATCH 2/2] Fix jimtcl auto configuration to force static library + only. jimtcl ignores a --disable-shared option if a previous --enable-shared + option was given. This breaks openocd compilation if shared was the preferred + option in buildroot project. + +Signed-off-by: Claudio Laurita + +--- a/jimtcl/auto.def ++++ b/jimtcl/auto.def +@@ -194,12 +194,8 @@ + msg-result "Enabling references" + define JIM_REFERENCES + } +-if {[opt-bool shared with-jim-shared]} { +- msg-result "Building shared library" +-} else { +- msg-result "Building static library" +- define JIM_STATICLIB +-} ++msg-result "Building static library" ++define JIM_STATICLIB + define LIBSOEXT [format [get-define SH_SOEXTVER] [format %.2f [expr {[get-define JIM_VERSION] / 100.0}]]] + define JIM_INSTALL [opt-bool install-jim] + define JIM_DOCS [opt-bool docs] diff --git a/buildroot/package/openocd/0002-configure-enable-build-on-uclinux.patch b/buildroot/package/openocd/0002-configure-enable-build-on-uclinux.patch new file mode 100644 index 0000000..2f2d320 --- /dev/null +++ b/buildroot/package/openocd/0002-configure-enable-build-on-uclinux.patch @@ -0,0 +1,26 @@ +From 11ea78c4d253bb90296e2dd8c3f7fbf59ba397b6 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Thu, 17 Aug 2017 06:30:31 +0200 +Subject: [PATCH] configure: enable build on uclinux + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index c680bda7..1a7980a0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -327,7 +327,7 @@ AC_ARG_ENABLE([sysfsgpio], + [build_sysfsgpio=$enableval], [build_sysfsgpio=no]) + + AS_CASE([$host_os], +- [linux*], [], ++ [linux*|uclinux*], [], + [ + AS_IF([test "x$build_sysfsgpio" = "xyes"], [ + AC_MSG_ERROR([sysfsgpio is only available on linux]) +-- +2.11.0 + diff --git a/buildroot/package/openocd/0003-CVE-2018-5704-Prevent-some-forms-of-Cross-Protocol-S.patch b/buildroot/package/openocd/0003-CVE-2018-5704-Prevent-some-forms-of-Cross-Protocol-S.patch new file mode 100644 index 0000000..ba19bf5 --- /dev/null +++ b/buildroot/package/openocd/0003-CVE-2018-5704-Prevent-some-forms-of-Cross-Protocol-S.patch @@ -0,0 +1,50 @@ +From 3a223ca3ebc7ac24d7726a0cd58e5695bc813657 Mon Sep 17 00:00:00 2001 +From: Andreas Fritiofson +Date: Sat, 13 Jan 2018 21:00:47 +0100 +Subject: [PATCH] CVE-2018-5704: Prevent some forms of Cross Protocol Scripting + attacks + +OpenOCD can be targeted by a Cross Protocol Scripting attack from +a web browser running malicious code, such as the following PoC: + +var x = new XMLHttpRequest(); +x.open("POST", "http://127.0.0.1:4444", true); +x.send("exec xcalc\r\n"); + +This mitigation should provide some protection from browser-based +attacks and is based on the corresponding fix in Redis: + +https://github.com/antirez/redis/blob/8075572207b5aebb1385c4f233f5302544439325/src/networking.c#L1758 + + +Upstream-status: Under review: http://openocd.zylin.com/#/c/4335/ +Change-Id: Ia96ebe19b74b5805dc228bf7364c7971a90a4581 +Signed-off-by: Andreas Fritiofson +Reported-by: Josef Gajdusek +Signed-off-by: Peter Korsgaard +--- + src/server/startup.tcl | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/src/server/startup.tcl b/src/server/startup.tcl +index 64ace407..dd1b31e4 100644 +--- a/src/server/startup.tcl ++++ b/src/server/startup.tcl +@@ -8,3 +8,14 @@ proc ocd_gdb_restart {target_id} { + # one target + reset halt + } ++ ++proc prevent_cps {} { ++ echo "Possible SECURITY ATTACK detected." ++ echo "It looks like somebody is sending POST or Host: commands to OpenOCD." ++ echo "This is likely due to an attacker attempting to use Cross Protocol Scripting" ++ echo "to compromise your OpenOCD instance. Connection aborted." ++ exit ++} ++ ++proc POST {args} { prevent_cps } ++proc Host: {args} { prevent_cps } +-- +2.11.0 + diff --git a/buildroot/package/openocd/Config.in b/buildroot/package/openocd/Config.in new file mode 100644 index 0000000..6cba7a0 --- /dev/null +++ b/buildroot/package/openocd/Config.in @@ -0,0 +1,206 @@ +config BR2_PACKAGE_OPENOCD + bool "openocd" + help + OpenOCD - Open On-Chip Debugger + + http://openocd.sourceforge.net/ + +if BR2_PACKAGE_OPENOCD + +comment "Adapters" + +config BR2_PACKAGE_OPENOCD_FTDI + bool "MPSSE mode of FTDI based devices" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the MPSSE mode of FTDI + (FT2xxx/FT4xxx) based devices (default is auto) + +config BR2_PACKAGE_OPENOCD_STLINK + bool "ST-Link JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the ST-Link JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_TI_ICDI + bool "TI ICDI JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the TI ICDI JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_ULINK + bool "Keil ULINK JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the Keil ULINK JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_UBLASTER2 + bool "Altera USB-Blaster II Compatible" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the Altera USB-Blaster + II Compatible (default is auto) + +config BR2_PACKAGE_OPENOCD_JLINK + bool "Segger J-Link JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Segger J-Link JTAG Programmer and clone such as Atmel + SAM-ICE + +config BR2_PACKAGE_OPENOCD_OSDBM + bool "OSDBM JTAG (only) Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the OSBDM (JTAG only) + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_OPENDOUS + bool "eStick/opendous JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the eStick/opendous JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_AICE + bool "Andes JTAG Programmer" + depends on BR2_USE_MMU # use fork() + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Enable building support for the Andes JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_VSLLINK + bool "Versaloon-Link JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Enable building support for the Versaloon-Link JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_USBPROG + bool "USBProg JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Enable building support for the USBProg JTAG + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_RLINK + bool "Raisonance RLink JTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Enable building support for the Raisonance RLink + JTAG Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_ARMEW + bool "Olimex ARM-JTAG-EW Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Enable building support for the Olimex ARM-JTAG-EW + Programmer (default is auto) + +config BR2_PACKAGE_OPENOCD_PARPORT + bool "pc parallel port driver" + help + Enable building the pc parallel port driver + +config BR2_PACKAGE_OPENOCD_VPI + bool "JTAG VPI" + help + Enable building support for JTAG VPI + +config BR2_PACKAGE_OPENOCD_UBLASTER + bool "Altera USB-Blaster" + depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb + select BR2_PACKAGE_LIBFTDI1 + help + Enable building support for the Altera USB-Blaster + using the libftdi driver, opensource alternate of + FTD2XX + +config BR2_PACKAGE_OPENOCD_AMTJT + bool "Amontec JTAG-Accelerator" + help + Enable building the Amontec JTAG-Accelerator driver + +if BR2_arm + +config BR2_PACKAGE_OPENOCD_EP93XX + bool "EP93xx based SBCs" + help + Enable building support for EP93xx based SBCs + +config BR2_PACKAGE_OPENOCD_AT91RM + bool "AT91RM9200 based SBCs" + help + Enable building support for AT91RM9200 based SBCs + +config BR2_PACKAGE_OPENOCD_BCM2835 + bool "bitbanging on BCM2835" + help + Enable building support for bitbanging on BCM2835 + (as found in Raspberry Pi) + +endif # BR2_arm + +config BR2_PACKAGE_OPENOCD_GW16012 + bool "Gateworks GW16012 JTAG Programmer" + help + Enable building support for the Gateworks GW16012 + JTAG Programmer + +config BR2_PACKAGE_OPENOCD_PRESTO + bool "ASIX Presto Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb + select BR2_PACKAGE_LIBFTDI1 + help + Enable building support for ASIX Presto Programmer + using the libftdi driver + +config BR2_PACKAGE_OPENOCD_OPENJTAG + bool "OpenJTAG Programmer" + depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb + select BR2_PACKAGE_LIBFTDI1 + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT # needs usb.h + help + Enable building support for the OpenJTAG Programmer + with ftdi driver + +config BR2_PACKAGE_OPENOCD_BUSPIRATE + bool "Buspirate" + help + Enable building support for the Buspirate + +config BR2_PACKAGE_OPENOCD_SYSFS + bool "programming via sysfs gpios" + help + Enable building support for programming driven via + sysfs gpios. + +# Many adapters need libusb or libusb-compat, which require threads, +# but we don't want to duplicate this comment for all adapters that +# select libusb or libusb-compat. +comment "many openocd adapters needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +endif # BR2_PACKAGE_OPENOCD diff --git a/buildroot/package/openocd/Config.in.host b/buildroot/package/openocd/Config.in.host new file mode 100644 index 0000000..e1d0e63 --- /dev/null +++ b/buildroot/package/openocd/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_OPENOCD + bool "host openocd" + help + OpenOCD - Open On-Chip Debugger + + http://openocd.org/ diff --git a/buildroot/package/openocd/openocd.hash b/buildroot/package/openocd/openocd.hash new file mode 100644 index 0000000..3fb817b --- /dev/null +++ b/buildroot/package/openocd/openocd.hash @@ -0,0 +1,4 @@ +# From http://sourceforge.net/projects/openocd/files/openocd/0.10.0/ +sha1 3245d43d60a1a93f8b0f6b1ce20b53e38cab7a4a openocd-0.10.0.tar.bz2 +md5 b412bdef0481a3859c6585eb69f6f6ba openocd-0.10.0.tar.bz2 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/openocd/openocd.mk b/buildroot/package/openocd/openocd.mk new file mode 100644 index 0000000..548d8b8 --- /dev/null +++ b/buildroot/package/openocd/openocd.mk @@ -0,0 +1,124 @@ +################################################################################ +# +# openocd +# +################################################################################ + +OPENOCD_VERSION = 0.10.0 +OPENOCD_SOURCE = openocd-$(OPENOCD_VERSION).tar.bz2 +OPENOCD_SITE = http://sourceforge.net/projects/openocd/files/openocd/$(OPENOCD_VERSION) +OPENOCD_LICENSE = GPL-2.0+ +OPENOCD_LICENSE_FILES = COPYING +# 0002-configure-enable-build-on-uclinux.patch patches configure.ac +OPENOCD_AUTORECONF = YES + +# The bundled jimtcl really wants to find a existing $CXX, so feed it +# false when we do not have one. +OPENOCD_CONF_ENV = \ + $(if $(BR2_INSTALL_LIBSTDCPP),,CXX=false) \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu99" + +OPENOCD_CONF_OPTS = \ + --oldincludedir=$(STAGING_DIR)/usr/include \ + --includedir=$(STAGING_DIR)/usr/include \ + --disable-doxygen-html \ + --with-jim-shared=no \ + --disable-shared \ + --enable-dummy \ + --disable-werror + +# Rely on the Config.in options of each individual adapter selecting +# the dependencies they need. + +OPENOCD_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_LIBFTDI1),libftdi1) \ + $(if $(BR2_PACKAGE_LIBUSB),libusb) \ + $(if $(BR2_PACKAGE_LIBUSB_COMPAT),libusb-compat) \ + $(if $(BR2_PACKAGE_LIBHID),libhid) + +# Adapters +OPENOCD_CONF_OPTS += \ + $(if $(BR2_PACKAGE_OPENOCD_FTDI),--enable-ftdi,--disable-ftdi) \ + $(if $(BR2_PACKAGE_OPENOCD_STLINK),--enable-stlink,--disable-stlink) \ + $(if $(BR2_PACKAGE_OPENOCD_TI_ICDI),--enable-ti-icdi,--disable-ti-icdi) \ + $(if $(BR2_PACKAGE_OPENOCD_ULINK),--enable-ulink,--disable-ulink) \ + $(if $(BR2_PACKAGE_OPENOCD_UBLASTER2),--enable-usb-blaster-2,--disable-usb-blaster-2) \ + $(if $(BR2_PACKAGE_OPENOCD_JLINK),--enable-jlink,--disable-jlink) \ + $(if $(BR2_PACKAGE_OPENOCD_OSDBM),--enable-osbdm,--disable-osbdm) \ + $(if $(BR2_PACKAGE_OPENOCD_OPENDOUS),--enable-opendous,--disable-opendous) \ + $(if $(BR2_PACKAGE_OPENOCD_AICE),--enable-aice,--disable-aice) \ + $(if $(BR2_PACKAGE_OPENOCD_VSLLINK),--enable-vsllink,--disable-vsllink) \ + $(if $(BR2_PACKAGE_OPENOCD_USBPROG),--enable-usbprog,--disable-usbprog) \ + $(if $(BR2_PACKAGE_OPENOCD_RLINK),--enable-rlink,--disable-rlink) \ + $(if $(BR2_PACKAGE_OPENOCD_ARMEW),--enable-armjtagew,--disable-armjtagew) \ + $(if $(BR2_PACKAGE_OPENOCD_CMSIS_DAP),--enable-cmsis-dap,--disable-cmsis-dap) \ + $(if $(BR2_PACKAGE_OPENOCD_PARPORT),--enable-parport,--disable-parport) \ + $(if $(BR2_PACKAGE_OPENOCD_VPI),--enable-jtag_vpi,--disable-jtag_vpi) \ + $(if $(BR2_PACKAGE_OPENOCD_UBLASTER),--enable-usb-blaster,--disable-usb-blaster) \ + $(if $(BR2_PACKAGE_OPENOCD_AMTJT),--enable-amtjtagaccel,--disable-amjtagaccel) \ + $(if $(BR2_PACKAGE_OPENOCD_ZY1000_MASTER),--enable-zy1000-master,--disable-zy1000-master) \ + $(if $(BR2_PACKAGE_OPENOCD_ZY1000),--enable-zy1000,--disable-zy1000) \ + $(if $(BR2_PACKAGE_OPENOCD_EP93XX),--enable-ep93xx,--disable-ep93xx) \ + $(if $(BR2_PACKAGE_OPENOCD_AT91RM),--enable-at91rm9200,--disable-at91rm9200) \ + $(if $(BR2_PACKAGE_OPENOCD_BCM2835),--enable-bcm2835gpio,--disable-bcm2835gpio) \ + $(if $(BR2_PACKAGE_OPENOCD_GW16012),--enable-gw16012,--disable-gw16012) \ + $(if $(BR2_PACKAGE_OPENOCD_PRESTO),--enable-presto,--disable-presto) \ + $(if $(BR2_PACKAGE_OPENOCD_OPENJTAG),--enable-openjtag,--disable-openjtag) \ + $(if $(BR2_PACKAGE_OPENOCD_BUSPIRATE),--enable-buspirate,--disable-buspirate) \ + $(if $(BR2_PACKAGE_OPENOCD_SYSFS),--enable-sysfsgpio,--disable-sysfsgpio) + +# Enable all configuration options for host build. +# +# Note that deprecated options have been removed. CMSIS_DAP needs +# hidapi (currently not included in buildroot) and zy1000 stuff fails +# to build, so they've been removed too. +# +HOST_OPENOCD_CONF_OPTS = \ + --enable-ftdi \ + --enable-stlink \ + --enable-ti-icdi \ + --enable-ulink \ + --enable-usb-blaster-2 \ + --enable-jlink \ + --enable-osbdm \ + --enable-opendous \ + --enable-aice \ + --enable-vsllink \ + --enable-usbprog \ + --enable-rlink \ + --enable-armjtagew \ + --enable-parport \ + --enable-jtag_vpi \ + --enable-usb-blaster \ + --enable-amtjtagaccel \ + --enable-gw16012 \ + --enable-presto \ + --enable-openjtag \ + --enable-buspirate \ + --enable-sysfsgpio \ + --oldincludedir=$(HOST_DIR)/include \ + --includedir=$(HOST_DIR)/include \ + --disable-doxygen-html \ + --with-jim-shared=no \ + --disable-shared \ + --enable-dummy \ + --disable-werror + +HOST_OPENOCD_DEPENDENCIES = host-libftdi host-libusb host-libusb-compat + +# Avoid documentation rebuild. On PowerPC64(le), we patch the +# configure script. Due to this, the version.texi files gets +# regenerated, and then since it has a newer date than openocd.info, +# openocd build system rebuilds the documentation. Unfortunately, this +# documentation rebuild fails on old machines. We work around this by +# faking the date of the generated version.texi file, to make the +# build system believe the documentation doesn't need to be +# regenerated. +define OPENOCD_FIX_VERSION_TEXI + touch -r $(@D)/doc/openocd.info $(@D)/doc/version.texi +endef +OPENOCD_POST_BUILD_HOOKS += OPENOCD_FIX_VERSION_TEXI +HOST_OPENOCD_POST_BUILD_HOOKS += OPENOCD_FIX_VERSION_TEXI + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/openpgm/0001-version_generator.py-make-it-python3-compliant.patch b/buildroot/package/openpgm/0001-version_generator.py-make-it-python3-compliant.patch new file mode 100644 index 0000000..97cff29 --- /dev/null +++ b/buildroot/package/openpgm/0001-version_generator.py-make-it-python3-compliant.patch @@ -0,0 +1,42 @@ +From e04f5c20fc1536f8e6d4faf32f2f4657d441f7c8 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Mon, 14 Apr 2014 17:54:37 +0200 +Subject: [PATCH] version_generator.py: make it python3 compliant + +Signed-off-by: Samuel Martin +--- + openpgm/pgm/version_generator.py | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/openpgm/pgm/version_generator.py b/openpgm/pgm/version_generator.py +index 2265480..c31376f 100755 +--- a/openpgm/pgm/version_generator.py ++++ b/openpgm/pgm/version_generator.py +@@ -1,5 +1,7 @@ + #!/usr/bin/python + ++from __future__ import print_function ++ + import os + import platform + import time +@@ -8,7 +10,7 @@ build_date = time.strftime ("%Y-%m-%d") + build_time = time.strftime ("%H:%M:%S") + build_rev = filter (str.isdigit, "$Revision: 1369 $") + +-print """ ++print(""" + /* vim:ts=8:sts=8:sw=4:noai:noexpandtab + * + * OpenPGM version. +@@ -47,6 +49,6 @@ const char* pgm_build_revision = "%s"; + + + /* eof */ +-"""%(build_date, build_time, platform.system(), platform.machine(), build_rev) ++"""%(build_date, build_time, platform.system(), platform.machine(), build_rev)) + + # end of file +-- +1.9.2 + diff --git a/buildroot/package/openpgm/0002-cross-compile.patch b/buildroot/package/openpgm/0002-cross-compile.patch new file mode 100644 index 0000000..07a2449 --- /dev/null +++ b/buildroot/package/openpgm/0002-cross-compile.patch @@ -0,0 +1,38 @@ +configure.ac: cross-compilation fix + +This patch enables to configure the package when cross-compiling in a way +recommended by Autoconf manual (see manual for version 2.69, Section 6.6 +Checking Runtime Behavior). + +Signed-off-by: Alexander Lukichev + +--- a/openpgm/pgm/configure.ac 2011-09-27 20:59:08.000000000 +0300 ++++ b/openpgm/pgm/configure.ac 2013-02-12 10:33:53.000000000 +0200 +@@ -272,14 +272,19 @@ uint32_t add32_with_carry (uint32_t a, u + ;; + esac + # ticket spinlock friendly: unaligned pointers & atomic ops (excl. Sun Pro) +-AC_MSG_CHECKING([for unaligned pointers]) +-AC_RUN_IFELSE( +- [AC_LANG_PROGRAM([[char* nezumi = "mouse";]], +- [[short x = *(short*)(nezumi + 2)]])], +- [AC_MSG_RESULT([yes]) +- pgm_unaligned_pointers=yes], +- [AC_MSG_RESULT([no]) +- pgm_unaligned_pointers=no]) ++AC_CACHE_CHECK([if unaligned access fails], [ac_cv_lbl_unaligned_fail], ++ [AC_RUN_IFELSE( ++ [AC_LANG_PROGRAM([[char* nezumi = "mouse";]], ++ [[short x = *(short*)(nezumi + 2)]])], ++ [ac_cv_lbl_unaligned_fail=no], ++ [ac_cv_lbl_unaligned_fail=yes], ++ [ac_cv_lbl_unaligned_fail=yes]) ++ ]) ++if test "$ac_cv_lbl_unaligned_fail" = yes; then ++ pgm_unaligned_pointers=no ++else ++ pgm_unaligned_pointers=yes ++fi + AC_MSG_CHECKING([for intrinsic atomic ops]) + # AC_PREPROC_IFELSE not always portable + AC_COMPILE_IFELSE( diff --git a/buildroot/package/openpgm/0003-Rework-headers-includes-to-fix-build-with-musl-libc.patch b/buildroot/package/openpgm/0003-Rework-headers-includes-to-fix-build-with-musl-libc.patch new file mode 100644 index 0000000..4d700fb --- /dev/null +++ b/buildroot/package/openpgm/0003-Rework-headers-includes-to-fix-build-with-musl-libc.patch @@ -0,0 +1,55 @@ +From 01128a2d8ad3288e8b96a908888049f186d156ee Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 21 May 2016 19:44:48 +0200 +Subject: [PATCH 1/1] Rework headers includes to fix build with musl libc + +Downloaded patch from +http://git.alpinelinux.org/cgit/aports/plain/main/openpgm/openpgm-fix-includes.patch +and adjusted paths by prefixing with "openpgm/pgm/" + +A build log with the compile error can be found here: +http://autobuild.buildroot.net/results/854/854554827ead82f29b293ddceced6eb7fbfeec27/build-end.log + +Signed-off-by: Bernd Kuhls +(Patch sent upstream: https://github.com/steve-o/openpgm/pull/44) +--- + openpgm/pgm/include/impl/security.h | 3 ++- + openpgm/pgm/include/pgm/types.h | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/openpgm/pgm/include/impl/security.h b/openpgm/pgm/include/impl/security.h +index c2b3e3d..896316f 100644 +--- a/openpgm/pgm/include/impl/security.h ++++ b/openpgm/pgm/include/impl/security.h +@@ -33,7 +33,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -41,6 +40,8 @@ + PGM_BEGIN_DECLS + + #ifdef HAVE_FTIME ++#include ++ + static inline + errno_t + # if !defined( _WIN32 ) +diff --git a/openpgm/pgm/include/pgm/types.h b/openpgm/pgm/include/pgm/types.h +index 4e41261..58731a3 100644 +--- a/openpgm/pgm/include/pgm/types.h ++++ b/openpgm/pgm/include/pgm/types.h +@@ -27,6 +27,7 @@ + + #ifndef _MSC_VER + # include ++# include + #endif + #include + +-- +2.8.1 + diff --git a/buildroot/package/openpgm/Config.in b/buildroot/package/openpgm/Config.in new file mode 100644 index 0000000..e37edfe --- /dev/null +++ b/buildroot/package/openpgm/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_OPENPGM + bool "openpgm" + depends on BR2_TOOLCHAIN_HAS_SYNC_2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + OpenPGM is an open source implementation of the Pragmatic + General Multicast (PGM) specification in RFC 3208 available at + www.ietf.org. PGM is a reliable and scalable multicast + protocol that enables receivers to detect loss, request + retransmission of lost data, or notify an application of + unrecoverable loss. + + https://github.com/steve-o/openpgm/ + +comment "openpgm needs a toolchain w/ wchar, threads" + depends on BR2_TOOLCHAIN_HAS_SYNC_2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !(BR2_TOOLCHAIN_HAS_THREADS && BR2_USE_WCHAR) diff --git a/buildroot/package/openpgm/openpgm.hash b/buildroot/package/openpgm/openpgm.hash new file mode 100644 index 0000000..f20e02a --- /dev/null +++ b/buildroot/package/openpgm/openpgm.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ecd48fd0bcfd8351ce6dcf31b063dd8fe83d3dab41bca62a6ebd6880a88c4a69 openpgm-release-5-2-122.tar.gz diff --git a/buildroot/package/openpgm/openpgm.mk b/buildroot/package/openpgm/openpgm.mk new file mode 100644 index 0000000..8c85344 --- /dev/null +++ b/buildroot/package/openpgm/openpgm.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# openpgm +# +################################################################################ + +OPENPGM_VERSION = release-5-2-122 +OPENPGM_SITE = $(call github,steve-o,openpgm,$(OPENPGM_VERSION)) +OPENPGM_LICENSE = LGPL-2.1+ +OPENPGM_LICENSE_FILES = openpgm/pgm/LICENSE +OPENPGM_INSTALL_STAGING = YES +OPENPGM_SUBDIR = openpgm/pgm +OPENPGM_AUTORECONF = YES + +# We need to create the m4 directory to make sure that autoreconf will +# start calling libtoolize. Otherwise it will start with aclocal and it +# will fail because the m4 directory doesn't exist. +define OPENPGM_CREATE_M4_DIR + mkdir -p $(@D)/$(OPENPGM_SUBDIR)/m4 +endef +OPENPGM_POST_PATCH_HOOKS += OPENPGM_CREATE_M4_DIR + +OPENPGM_CONF_ENV = \ + ac_cv_file__proc_cpuinfo=yes \ + ac_cv_file__dev_rtc=no \ + ac_cv_file__dev_hpet=no + +$(eval $(autotools-package)) diff --git a/buildroot/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch b/buildroot/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch new file mode 100644 index 0000000..0e1c21e --- /dev/null +++ b/buildroot/package/openpowerlink/0001-install-the-stack-libraries-to-lib-subdirectory.patch @@ -0,0 +1,167 @@ +From 16230b7f51bff2bdf061fa80e9a49c807596bb92 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 25 May 2016 15:57:10 +0200 +Subject: [PATCH] install the stack libraries to "lib" subdirectory + +Using '.' to install the stack libraries is not correct since +it will install them to /usr/. + +ls /usr/liboplkmnapp-kernelintf.so + +Fix this by using 'lib' instead of '.' + +The problem with the openpowerlink build system is that it expect +the stack directory to be a "local staging" directory which +contains headers and libraries. So the libraries build by the +stack project are installed in stack/lib by default. + +This is wrong to do that because it becomes difficult to package +openpowerlink for normal Linux systems. + +Buildroot like others build system expect from a packaged software +to install libraries and headers build/provided in a staging +directory. + +It seems that CMAKE_INSTALL_PREFIX is misused by the default value +"${CMAKE_CURRENT_SOURCE_DIR}/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR}" +since it already contains the lib directory and therefore the +entire build system is messed up. + +It seems that the openpowerlink's build system doesn't allow/support +CMAKE_INSTALL_PREFIX to be set externally +(which is the standard approach). + +The issue has been reported [1] upstream and a build system +refactoring is needed to fix this properly. + +[1] http://sourceforge.net/p/openpowerlink/discussion/newbie/thread/3f13af65/#8f80/a50a/4649/f07c + +[rebase on v2.5.0] +Signed-off-by: Romain Naour +--- + stack/proj/linux/liboplkcn-sim/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkcn/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkmn-sim/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkmn/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt | 2 +- + stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt | 2 +- + 11 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/stack/proj/linux/liboplkcn-sim/CMakeLists.txt b/stack/proj/linux/liboplkcn-sim/CMakeLists.txt +index 2b3da16..ddb3e92 100644 +--- a/stack/proj/linux/liboplkcn-sim/CMakeLists.txt ++++ b/stack/proj/linux/liboplkcn-sim/CMakeLists.txt +@@ -96,4 +96,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkcn/CMakeLists.txt b/stack/proj/linux/liboplkcn/CMakeLists.txt +index 3be6c52..cf1b1dd 100644 +--- a/stack/proj/linux/liboplkcn/CMakeLists.txt ++++ b/stack/proj/linux/liboplkcn/CMakeLists.txt +@@ -90,4 +90,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt b/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt +index 904de6c..d8713a8 100644 +--- a/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt ++++ b/stack/proj/linux/liboplkcnapp-kernelintf/CMakeLists.txt +@@ -83,4 +83,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt b/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt +index e2514cf..a4e2b75 100644 +--- a/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt ++++ b/stack/proj/linux/liboplkcnapp-userintf/CMakeLists.txt +@@ -83,4 +83,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt b/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt +index 98f068c..bb20006 100644 +--- a/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt ++++ b/stack/proj/linux/liboplkcndrv-pcap/CMakeLists.txt +@@ -76,4 +76,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkmn-sim/CMakeLists.txt b/stack/proj/linux/liboplkmn-sim/CMakeLists.txt +index eb6396a..5beaa07 100644 +--- a/stack/proj/linux/liboplkmn-sim/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmn-sim/CMakeLists.txt +@@ -91,4 +91,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkmn/CMakeLists.txt b/stack/proj/linux/liboplkmn/CMakeLists.txt +index cf7927f..6b19557 100644 +--- a/stack/proj/linux/liboplkmn/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmn/CMakeLists.txt +@@ -89,4 +89,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt b/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt +index 9daa2df..bfccb25 100644 +--- a/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmnapp-kernelintf/CMakeLists.txt +@@ -82,4 +82,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt b/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt +index 0135f46..83128eb 100644 +--- a/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmnapp-kernelpcp/CMakeLists.txt +@@ -91,4 +91,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt b/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt +index cd97882..aaaa526 100644 +--- a/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmnapp-userintf/CMakeLists.txt +@@ -82,4 +82,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +diff --git a/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt b/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt +index 0c29087..1783134 100644 +--- a/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt ++++ b/stack/proj/linux/liboplkmndrv-pcap/CMakeLists.txt +@@ -79,4 +79,4 @@ ADD_LIBRARY(${LIB_NAME} ${LIB_TYPE} ${LIB_SOURCES}) + TARGET_LINK_LIBRARIES(${LIB_NAME} ${ARCH_LIBRARIES}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL}) + SET_PROPERTY(TARGET ${LIB_NAME} PROPERTY DEBUG_POSTFIX "_d") +-INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION . LIBRARY DESTINATION .) ++INSTALL(TARGETS ${LIB_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) +-- +2.9.4 + diff --git a/buildroot/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch b/buildroot/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch new file mode 100644 index 0000000..8e815c0 --- /dev/null +++ b/buildroot/package/openpowerlink/0002-cmake-install-oplk-headers-files.patch @@ -0,0 +1,32 @@ +From f7679a4083de3a9dba80cd719ad4904fbade349b Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 25 May 2016 15:57:29 +0200 +Subject: [PATCH] cmake: install oplk headers files + +In order to be able to link a third party application +with openpowerlink libraries, we need to install the +oplk headers files related to openpowerlink stack. + +Install all headers file from STACK_INCLUDE_DIR/oplk. + +Signed-off-by: Romain Naour +--- + stack/CMakeLists.txt | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/stack/CMakeLists.txt b/stack/CMakeLists.txt +index 69454f2..45f131d 100644 +--- a/stack/CMakeLists.txt ++++ b/stack/CMakeLists.txt +@@ -110,3 +110,8 @@ ELSEIF((CMAKE_SYSTEM_NAME STREQUAL "Generic") AND (CMAKE_SYSTEM_PROCESSOR STREQU + ELSE() + MESSAGE(FATAL_ERROR "Unknown Platform and processor combination ${CMAKE_SYSTEM_NAME} and ${CMAKE_SYSTEM_PROCESSOR}!!") + ENDIF() ++ ++################################################################################ ++# Install oplk headers files ++################################################################################ ++INSTALL(DIRECTORY ${STACK_INCLUDE_DIR}/oplk DESTINATION "include") +-- +2.9.4 + diff --git a/buildroot/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch b/buildroot/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch new file mode 100644 index 0000000..cd8f927 --- /dev/null +++ b/buildroot/package/openpowerlink/0003-Add-top-level-CMakeLists.txt.patch @@ -0,0 +1,201 @@ +From cd0945a323cecb638ce56f2e3d7fb4e8c004b98b Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 25 May 2016 15:59:20 +0200 +Subject: [PATCH] Add top level CMakeLists.txt + +This CMakeLists.txt can be used to build openpowerlink +using a automated build system. + +Don't use FIND_LIBRARY when the stack is built from a top +level build (ie CFG_OPLK_LIB is ON). +For a top level build, CMake will automatically add a build +dependency on oplk libraries for building demos applications. + +Also replace OPLKLIB_DEBUG by OPLKLIB in OPLK_LINK_LIBRARIES macro +if CMAKE_BUILD_TYPE is "Debug", otherwise TARGET_LINK_LIBRARIES can't +find the openpowerlink library. +This issue may be related to: +https://github.com/OpenAutomationTechnologies/openPOWERLINK_V2/issues/109 + +Fixes: +http://autobuild.buildroot.net/results/da4/da445b65cb136d71577f04e3a17fdb2ef6302a9b + +This patch has not been accepted by upstream: +https://github.com/openPOWERLINK/openPOWERLINK_V2/pull/57 + +Add PCIe support (v2.3.2) + +Signed-off-by: Romain Naour +--- + CMakeLists.txt | 42 +++++++++++++++++ + apps/common/cmake/findoplklib.cmake | 68 +++++++++++++++------------- + apps/common/cmake/linkoplklib.cmake | 2 +- + drivers/linux/drv_daemon_pcap/CMakeLists.txt | 12 +++-- + 4 files changed, 89 insertions(+), 35 deletions(-) + create mode 100644 CMakeLists.txt + +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 0000000..28d4e7a +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,42 @@ ++ ++CMAKE_MINIMUM_REQUIRED (VERSION 2.8.7) ++ ++#### LIB #### ++ ++IF (CFG_OPLK_LIB) ++ ADD_SUBDIRECTORY("stack") ++ENDIF (CFG_OPLK_LIB) ++ ++#### Linux kernel Ethernet module #### ++ ++IF (CFG_KERNEL_DRIVERS) ++ ADD_SUBDIRECTORY("drivers/linux/drv_kernelmod_edrv") ++ENDIF (CFG_KERNEL_DRIVERS) ++ ++#### Linux kernel PCIe module #### ++ ++IF (CFG_KERNEL_PCIE_DRIVERS) ++ ADD_SUBDIRECTORY("drivers/linux/drv_kernelmod_pcie") ++ENDIF (CFG_KERNEL_PCIE_DRIVERS) ++ ++#### Pcap userspace driver #### ++ ++IF (CFG_PCAP_DAEMON) ++ ADD_SUBDIRECTORY("drivers/linux/drv_daemon_pcap") ++ENDIF (CFG_PCAP_DAEMON) ++ ++#### OpenPowerLink Demos #### ++ ++# Add subdirectory of CN console demo application ++IF (CFG_DEMO_CN_CONSOLE) ++ ADD_SUBDIRECTORY("apps/demo_cn_console") ++ENDIF (CFG_DEMO_CN_CONSOLE) ++ ++# Add subdirectory of MN console demo application ++IF (CFG_DEMO_MN_CONSOLE) ++ ADD_SUBDIRECTORY("apps/demo_mn_console") ++ENDIF (CFG_DEMO_MN_CONSOLE) ++ ++IF (CFG_DEMO_MN_QT) ++ ADD_SUBDIRECTORY("apps/demo_mn_qt") ++ENDIF (CFG_DEMO_MN_QT) +diff --git a/apps/common/cmake/findoplklib.cmake b/apps/common/cmake/findoplklib.cmake +index f7e710f..b8b04c5 100644 +--- a/apps/common/cmake/findoplklib.cmake ++++ b/apps/common/cmake/findoplklib.cmake +@@ -85,36 +85,42 @@ MACRO(FIND_OPLK_LIBRARY OPLK_NODE_TYPE) + # Set oplk library directory + SET(OPLKLIB_DIR ${OPLK_BASE_DIR}/stack/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR}) + +- IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Release")) +- # Search for release library +- UNSET(OPLKLIB CACHE) +- MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_NAME} in ${OPLKLIB_DIR}") +- FIND_LIBRARY(OPLKLIB NAME ${OPLKLIB_NAME} +- HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) +- +- IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") +- +- UNSET(OPLKDLL CACHE) +- FIND_PROGRAM(OPLKDLL NAME ${OPLKLIB_NAME}.dll +- HINTS ${OPLKLIB_DIR}) +- +- ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") +- ENDIF() +- +- IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Debug")) +- # Search for debug library +- UNSET(OPLKLIB_DEBUG CACHE) +- MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_DEBUG_NAME} in ${OPLKLIB_DIR}") +- FIND_LIBRARY(OPLKLIB_DEBUG NAME ${OPLKLIB_DEBUG_NAME} +- HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) +- +- IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") +- +- UNSET(OPLKDLL_DEBUG CACHE) +- FIND_PROGRAM(OPLKDLL_DEBUG NAME ${OPLKLIB_DEBUG_NAME}.dll +- HINTS ${OPLKLIB_DIR}) +- +- ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") +- ENDIF() ++ # Don't look for oplk libraries for a top level build ++ IF(CFG_OPLK_LIB) ++ SET(OPLKLIB ${OPLKLIB_NAME}) ++ SET(OPLKLIB_DEBUG ${OPLKLIB_DEBUG_NAME}) ++ ELSE(CFG_OPLK_LIB) ++ IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Release")) ++ # Search for release library ++ UNSET(OPLKLIB CACHE) ++ MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_NAME} in ${OPLKLIB_DIR}") ++ FIND_LIBRARY(OPLKLIB NAME ${OPLKLIB_NAME} ++ HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) ++ ++ IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") ++ ++ UNSET(OPLKDLL CACHE) ++ FIND_PROGRAM(OPLKDLL NAME ${OPLKLIB_NAME}.dll ++ HINTS ${OPLKLIB_DIR}) ++ ++ ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") ++ ENDIF() ++ ++ IF((CMAKE_GENERATOR MATCHES "Visual Studio") OR (CMAKE_BUILD_TYPE STREQUAL "Debug")) ++ # Search for debug library ++ UNSET(OPLKLIB_DEBUG CACHE) ++ MESSAGE(STATUS "Searching for LIBRARY ${OPLKLIB_DEBUG_NAME} in ${OPLKLIB_DIR}") ++ FIND_LIBRARY(OPLKLIB_DEBUG NAME ${OPLKLIB_DEBUG_NAME} ++ HINTS ${OPLKLIB_DIR} ${OPLKLIB_DIR}/${CFG_DEMO_BOARD_NAME}/${CFG_DEMO_NAME}) ++ ++ IF(CMAKE_SYSTEM_NAME STREQUAL "Windows") ++ ++ UNSET(OPLKDLL_DEBUG CACHE) ++ FIND_PROGRAM(OPLKDLL_DEBUG NAME ${OPLKLIB_DEBUG_NAME}.dll ++ HINTS ${OPLKLIB_DIR}) ++ ++ ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows") ++ ENDIF() ++ ENDIF(CFG_OPLK_LIB) + + ENDMACRO(FIND_OPLK_LIBRARY) +diff --git a/apps/common/cmake/linkoplklib.cmake b/apps/common/cmake/linkoplklib.cmake +index 49aab66..d9fd418 100644 +--- a/apps/common/cmake/linkoplklib.cmake ++++ b/apps/common/cmake/linkoplklib.cmake +@@ -33,7 +33,7 @@ MACRO(OPLK_LINK_LIBRARIES EXECUTABLE_NAME) + TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} optimized ${OPLKLIB} debug ${OPLKLIB_DEBUG}) + ELSE() + IF(${CMAKE_BUILD_TYPE} STREQUAL "Debug") +- TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} debug ${OPLKLIB_DEBUG}) ++ TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} debug ${OPLKLIB}) + ELSE () + TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} optimized ${OPLKLIB}) + ENDIF() +diff --git a/drivers/linux/drv_daemon_pcap/CMakeLists.txt b/drivers/linux/drv_daemon_pcap/CMakeLists.txt +index 2b4a2c1..ecceb4c 100644 +--- a/drivers/linux/drv_daemon_pcap/CMakeLists.txt ++++ b/drivers/linux/drv_daemon_pcap/CMakeLists.txt +@@ -109,9 +109,15 @@ ENDIF() + SET(OPLKLIB_DIR ${OPLK_BASE_DIR}/stack/lib/${SYSTEM_NAME_DIR}/${SYSTEM_PROCESSOR_DIR}) + SET(OPLKLIB_INCDIR ${OPLK_BASE_DIR}/stack/proj/${SYSTEM_NAME_DIR}/lib${LIB_NAME}) + +-UNSET(OPLKLIB CACHE) +-FIND_LIBRARY(OPLKLIB NAME ${LIB_NAME}${BUILD_TYPE_EXT} +- HINTS ${OPLKLIB_DIR}) ++# Don't look for oplk libraries for a top level build ++IF(CFG_OPLK_LIB) ++ SET(OPLKLIB ${LIB_NAME}${BUILD_TYPE_EXT}) ++ELSE(CFG_OPLK_LIB) ++ UNSET(OPLKLIB CACHE) ++ FIND_LIBRARY(OPLKLIB NAME ${LIB_NAME}${BUILD_TYPE_EXT} ++ HINTS ${OPLKLIB_DIR}) ++ENDIF(CFG_OPLK_LIB) ++ + INCLUDE_DIRECTORIES(${OPLKLIB_INCDIR}) + + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -std=c99 -pthread -fno-strict-aliasing") +-- +2.9.4 + diff --git a/buildroot/package/openpowerlink/Config.in b/buildroot/package/openpowerlink/Config.in new file mode 100644 index 0000000..68ea751 --- /dev/null +++ b/buildroot/package/openpowerlink/Config.in @@ -0,0 +1,128 @@ +comment "openpowerlink needs a toolchain w/ C++, threads" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_OPENPOWERLINK + bool "openpowerlink" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_i386 || BR2_x86_64 + help + openPOWERLINK is an Open Source Industrial Ethernet stack + implementing the POWERLINK protocol for Managing Node (MN, + POWERLINK Master) and Controlled Node (CN, POWERLINK Slave). + + It is provided by + SYSTEC electronic (http://www.systec-electronic.com), + B&R (http://www.br-automation.com) and + Kalycito (http://www.kalycito.com). + + http://openpowerlink.sourceforge.net/web/ + +if BR2_PACKAGE_OPENPOWERLINK + +choice + prompt "MN/CN mode" + +config BR2_PACKAGE_OPENPOWERLINK_MN + bool "Managing Node" + help + Enable Managing Node (master) mode + +config BR2_PACKAGE_OPENPOWERLINK_CN + bool "Controlled Node" + help + Enable Controlled Node (slave) mode + +endchoice + +choice + prompt "stack type" + +config BR2_PACKAGE_OPENPOWERLINK_STACK_MONOLITHIC_USER_STACK_LIB + bool "linked into application" + select BR2_PACKAGE_LIBPCAP + help + Compile a monolithic openPOWERLINK library. The library + contains an Ethernet driver which is using the PCAP library + for accessing the network. No kernel-side driver is needed. + +config BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB + bool "user-space pcap daemon" + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_OPENPOWERLINK_PCAP_DAEMON + help + Compile openPOWERLINK application library which contains the + interface to a Linux user space driver, and the Linux user + space driver. It is used for implementing a multi-process + solution where the openPOWERLINK layer is running as a + separate Linux user space daemon (i.e. a PCAP based user + space daemon). No kernel-side stack is needed. + +config BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB + bool "kernel-space driver" + depends on BR2_LINUX_KERNEL + help + Compile openPOWERLINK application library which contains the + interface to a Linux kernel space driver. This will also + build and install a Linux kernel module openPOWERLINK + driver. + +config BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB + bool "kernel-space PCIe driver" + depends on BR2_LINUX_KERNEL + depends on BR2_PACKAGE_OPENPOWERLINK_MN # MN support only + help + Compile openPOWERLINK application library which contains the + interface to a Linux kernel PCIe interface driver. The kernel + part of the openPOWERLINK stack is located on an external PCIe + device. The status/control and data exchange between the + application and kernel stack is handled by the PCIe interface + driver. + +comment "openpowerlink kernel stack needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +endchoice + +if BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB + +menu "Ethernet drivers" + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_82573 + bool "Intel 82573" + default y + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_8255x + bool "Intel 8255x" + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_I210 + bool "Intel I210" + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8111 + bool "Realtek RTL-8111/8168" + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8139 + bool "Realtek RTL-8139" + +endmenu + +endif # BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB + +config BR2_PACKAGE_OPENPOWERLINK_KERNEL_PCIE_DRIVER + bool "PCIe Powerlink Driver" + depends on BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB + +menu "demos" + +config BR2_PACKAGE_OPENPOWERLINK_DEMO_MN_CONSOLE + bool "console MN demo" + depends on BR2_PACKAGE_OPENPOWERLINK_MN + +config BR2_PACKAGE_OPENPOWERLINK_DEMO_CN_CONSOLE + bool "console CN demo" + depends on BR2_PACKAGE_OPENPOWERLINK_CN + +endmenu + +endif # BR2_PACKAGE_OPENPOWERLINK diff --git a/buildroot/package/openpowerlink/openpowerlink.hash b/buildroot/package/openpowerlink/openpowerlink.hash new file mode 100644 index 0000000..f69950d --- /dev/null +++ b/buildroot/package/openpowerlink/openpowerlink.hash @@ -0,0 +1,5 @@ +# From http://sourceforge.net/projects/openpowerlink/files/openPOWERLINK/V2.6.2/ +md5 bbb268e33e55424de563cb677703d8f7 openPOWERLINK_V2.6.2.tar.gz +sha1 bf6a8b202c1192b531ce6d6c4c6254e5689c65fe openPOWERLINK_V2.6.2.tar.gz +# sha256 locally computed +sha256 38d7a93c05cc0167be5c498e625d1efddeac2616ceb1bc8c3c6679552ae6da15 openPOWERLINK_V2.6.2.tar.gz diff --git a/buildroot/package/openpowerlink/openpowerlink.mk b/buildroot/package/openpowerlink/openpowerlink.mk new file mode 100644 index 0000000..e2958b3 --- /dev/null +++ b/buildroot/package/openpowerlink/openpowerlink.mk @@ -0,0 +1,153 @@ +################################################################################ +# +# openpowerlink +# +################################################################################ + +OPENPOWERLINK_VERSION = V2.6.2 +OPENPOWERLINK_SITE = http://downloads.sourceforge.net/project/openpowerlink/openPOWERLINK/$(OPENPOWERLINK_VERSION) +OPENPOWERLINK_SOURCE = openPOWERLINK_$(OPENPOWERLINK_VERSION).tar.gz +OPENPOWERLINK_LICENSE = BSD-2-Clause, GPL-2.0 +OPENPOWERLINK_LICENSE_FILES = license.md + +OPENPOWERLINK_INSTALL_STAGING = YES + +# The archive has no leading component. +OPENPOWERLINK_STRIP_COMPONENTS = 0 + +OPENPOWERLINK_MN_ONOFF = $(if $(BR2_PACKAGE_OPENPOWERLINK_MN),ON,OFF) +OPENPOWERLINK_CN_ONOFF = $(if $(BR2_PACKAGE_OPENPOWERLINK_CN),ON,OFF) + +#### OPLK LIBRARY #### + +# Always build a oplk stack +# Disable library with simulation interface +# Disable zynq/FPGA (PCIe) interface +OPENPOWERLINK_CONF_OPTS += -DCFG_OPLK_LIB=ON \ + -DCFG_COMPILE_LIB_MN_SIM=OFF \ + -DCFG_COMPILE_LIB_CN_SIM=OFF \ + -DCFG_COMPILE_LIB_MNAPP_ZYNQINTF=OFF + +# All option are ON by default +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_MONOLITHIC_USER_STACK_LIB),y) +OPENPOWERLINK_DEPENDENCIES += libpcap +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_COMPILE_LIB_MN=$(OPENPOWERLINK_MN_ONOFF) \ + -DCFG_COMPILE_LIB_MNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_PCIEINTF=OFF \ + -DCFG_COMPILE_LIB_MNDRV_PCAP=OFF \ + -DCFG_COMPILE_LIB_CN=$(OPENPOWERLINK_CN_ONOFF) \ + -DCFG_COMPILE_LIB_CNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_CNDRV_PCAP=OFF \ + -DPCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config" +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB),y) +OPENPOWERLINK_DEPENDENCIES += libpcap +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_COMPILE_LIB_MN=OFF \ + -DCFG_COMPILE_LIB_MNAPP_USERINTF=$(OPENPOWERLINK_MN_ONOFF) \ + -DCFG_COMPILE_LIB_MNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_PCIEINTF=OFF \ + -DCFG_COMPILE_LIB_MNDRV_PCAP=$(OPENPOWERLINK_MN_ONOFF) \ + -DCFG_COMPILE_LIB_CN=OFF \ + -DCFG_COMPILE_LIB_CNAPP_USERINTF=$(OPENPOWERLINK_CN_ONOFF) \ + -DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_CNDRV_PCAP=$(OPENPOWERLINK_CN_ONOFF) \ + -DPCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config" +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_COMPILE_LIB_MN=OFF \ + -DCFG_COMPILE_LIB_MNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_KERNELINTF=$(OPENPOWERLINK_MN_ONOFF) \ + -DCFG_COMPILE_LIB_MNAPP_PCIEINTF=OFF \ + -DCFG_COMPILE_LIB_MNDRV_PCAP=OFF \ + -DCFG_COMPILE_LIB_CN=OFF \ + -DCFG_COMPILE_LIB_CNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_CNAPP_KERNELINTF=$(OPENPOWERLINK_CN_ONOFF) \ + -DCFG_COMPILE_LIB_CNDRV_PCAP=OFF +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_COMPILE_LIB_MN=OFF \ + -DCFG_COMPILE_LIB_MNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_MNAPP_PCIEINTF=$(OPENPOWERLINK_MN_ONOFF) \ + -DCFG_COMPILE_LIB_MNDRV_PCAP=OFF \ + -DCFG_COMPILE_LIB_CN=OFF \ + -DCFG_COMPILE_LIB_CNAPP_USERINTF=OFF \ + -DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \ + -DCFG_COMPILE_LIB_CNDRV_PCAP=OFF +endif + +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_COMPILE_SHARED_LIBRARY=$(if $(BR2_STATIC_LIBS),OFF,ON) + +#### OPLK KERNEL DRIVERS #### + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB)$(BR2_PACKAGE_OPENPOWERLINK_KERNEL_PCIE_DRIVER),y) +OPENPOWERLINK_DEPENDENCIES += linux + +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_KERNEL_DIR="$(LINUX_DIR)" \ + -DCMAKE_SYSTEM_VERSION="$(LINUX_VERSION)" \ + -DCFG_OPLK_MN="$(OPENPOWERLINK_MN_ONOFF)" \ + -DMAKE_KERNEL_ARCH="$(KERNEL_ARCH)" \ + -DMAKE_KERNEL_CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" +endif + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_DRIVERS=ON \ + -DCFG_POWERLINK_EDRV_82573=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_82573),ON,OFF) \ + -DCFG_POWERLINK_EDRV_8255X=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_8255x),ON,OFF) \ + -DCFG_POWERLINK_EDRV_I210=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_I210),ON,OFF) \ + -DCFG_POWERLINK_EDRV_8111=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8111),ON,OFF) \ + -DCFG_POWERLINK_EDRV_8139=$(if $(BR2_PACKAGE_OPENPOWERLINK_KERNEL_DRIVER_RTL8139),ON,OFF) +else +OPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_DRIVERS=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_KERNEL_PCIE_DRIVER),y) +OPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_PCIE_DRIVERS=ON +else +OPENPOWERLINK_CONF_OPTS += -DCFG_KERNEL_PCIE_DRIVERS=OFF +endif + +#### OPLK PCAP DAEMON #### + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_PCAP_DAEMON=ON \ + -DCFG_OPLK_MN=$(OPENPOWERLINK_MN_ONOFF) +endif + +#### OPLK DEMO APPS #### + +# See apps/common/cmake/configure-linux.cmake for available options list. +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_MONOLITHIC_USER_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_BUILD_KERNEL_STACK="Link to Application" +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_BUILD_KERNEL_STACK="Linux Userspace Daemon" +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_BUILD_KERNEL_STACK="Linux Kernel Module" +else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_PCIE_STACK_LIB),y) +OPENPOWERLINK_CONF_OPTS += \ + -DCFG_BUILD_KERNEL_STACK="Kernel stack on PCIe card" +endif + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_DEMO_MN_CONSOLE),y) +OPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_MN_CONSOLE=ON \ + -DCFG_DEMO_MN_CONSOLE_USE_SYNCTHREAD=ON +else +OPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_MN_CONSOLE=OFF +endif + +ifeq ($(BR2_PACKAGE_OPENPOWERLINK_DEMO_CN_CONSOLE),y) +OPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_CN_CONSOLE=ON +else +OPENPOWERLINK_CONF_OPTS += -DCFG_DEMO_CN_CONSOLE=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/openssh/0001-configure-ac-detect-mips-abi.patch b/buildroot/package/openssh/0001-configure-ac-detect-mips-abi.patch new file mode 100644 index 0000000..0d43e6b --- /dev/null +++ b/buildroot/package/openssh/0001-configure-ac-detect-mips-abi.patch @@ -0,0 +1,44 @@ +From f4fcd8c788a4854d4ebae400cf55e3957f906835 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Tue, 20 Jun 2017 16:42:11 +0100 +Subject: [PATCH] configure.ac: detect MIPS ABI + +Signed-off-by: Vicente Olivert Riera +[Upstream commit: ttps://github.com/openssh/openssh-portable/commit/f4fcd8c788a4854d4ebae400cf55e3957f906835] +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 18079acba..f990cfe08 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -746,6 +746,27 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) + fi + AC_CHECK_HEADERS([linux/seccomp.h linux/filter.h linux/audit.h], [], + [], [#include ]) ++ # Obtain MIPS ABI ++ case "$host" in ++ mips*) ++ AC_COMPILE_IFELSE([ ++#if _MIPS_SIM != _ABIO32 ++#error ++#endif ++ ],[mips_abi="o32"],[AC_COMPILE_IFELSE([ ++#if _MIPS_SIM != _ABIN32 ++#error ++#endif ++ ],[mips_abi="n32"],[AC_COMPILE_IFELSE([ ++#if _MIPS_SIM != _ABI64 ++#error ++#endif ++ ],[mips_abi="n64"],[AC_MSG_ERROR([unknown MIPS ABI]) ++ ]) ++ ]) ++ ]) ++ ;; ++ esac + AC_MSG_CHECKING([for seccomp architecture]) + seccomp_audit_arch= + case "$host" in diff --git a/buildroot/package/openssh/0002-configure-ac-properly-set-seccomp-audit-arch-for-mips64.patch b/buildroot/package/openssh/0002-configure-ac-properly-set-seccomp-audit-arch-for-mips64.patch new file mode 100644 index 0000000..879af5e --- /dev/null +++ b/buildroot/package/openssh/0002-configure-ac-properly-set-seccomp-audit-arch-for-mips64.patch @@ -0,0 +1,63 @@ +From afc3e31b637db9dae106d4fad78f7b481c8c24e3 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Tue, 20 Jun 2017 16:42:28 +0100 +Subject: [PATCH] configure.ac: properly set seccomp_audit_arch for MIPS64 + +Currently seccomp_audit_arch is set to AUDIT_ARCH_MIPS64 or +AUDIT_ARCH_MIPSEL64 (depending on the endinness) when openssh is built +for MIPS64. However, that's only valid for n64 ABI. The right macros for +n32 ABI defined in seccomp.h are AUDIT_ARCH_MIPS64N32 and +AUDIT_ARCH_MIPSEL64N32, for big and little endian respectively. + +Because of that an sshd built for MIPS64 n32 rejects connection attempts +and the output of strace reveals that the problem is related to seccomp +audit: + +[pid 194] prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, {len=57, +filter=0x555d5da0}) = 0 +[pid 194] write(7, "\0\0\0]\0\0\0\5\0\0\0Ulist_hostkey_types: "..., 97) = ? +[pid 193] <... poll resumed> ) = 2 ([{fd=5, revents=POLLIN|POLLHUP}, +{fd=6, revents=POLLHUP}]) +[pid 194] +++ killed by SIGSYS +++ + +This patch fixes that problem by setting the right value to +seccomp_audit_arch taking into account the MIPS64 ABI. + +Signed-off-by: Vicente Olivert Riera +[Upstream commit: https://github.com/openssh/openssh-portable/commit/afc3e31b637db9dae106d4fad78f7b481c8c24e3] +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f990cfe08..5d640f679 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -801,10 +801,24 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) + seccomp_audit_arch=AUDIT_ARCH_MIPSEL + ;; + mips64-*) +- seccomp_audit_arch=AUDIT_ARCH_MIPS64 ++ case "$mips_abi" in ++ "n32") ++ seccomp_audit_arch=AUDIT_ARCH_MIPS64N32 ++ ;; ++ "n64") ++ seccomp_audit_arch=AUDIT_ARCH_MIPS64 ++ ;; ++ esac + ;; + mips64el-*) +- seccomp_audit_arch=AUDIT_ARCH_MIPSEL64 ++ case "$mips_abi" in ++ "n32") ++ seccomp_audit_arch=AUDIT_ARCH_MIPSEL64N32 ++ ;; ++ "n64") ++ seccomp_audit_arch=AUDIT_ARCH_MIPSEL64 ++ ;; ++ esac + ;; + esac + if test "x$seccomp_audit_arch" != "x" ; then diff --git a/buildroot/package/openssh/0003-fix-pam-uclibc-pthreads-clash.patch b/buildroot/package/openssh/0003-fix-pam-uclibc-pthreads-clash.patch new file mode 100644 index 0000000..d9bc6e5 --- /dev/null +++ b/buildroot/package/openssh/0003-fix-pam-uclibc-pthreads-clash.patch @@ -0,0 +1,44 @@ +When PAM is enabled, openssh makes its own static versions of pthreads +functions. But when built with a uclibc toolchain, pthreads.h gets +indirectly included. The clashing exported and static definitions of +the pthreads functions then cause a compile error. This patch fixes +the problem by changing the static pthread function names with macros +when the static functions are defined. + +Signed-off-by: Danomi Manchego + +diff -urN openssh-6.1p1.orig/auth-pam.c openssh-6.1p1/auth-pam.c +--- openssh-6.1p1.orig/auth-pam.c 2009-07-12 08:07:21.000000000 -0400 ++++ openssh-6.1p1/auth-pam.c 2012-09-15 19:49:47.677288199 -0400 +@@ -166,6 +166,7 @@ + sigdie("PAM: authentication thread exited uncleanly"); + } + ++#define pthread_exit pthread_exit_AVOID_UCLIBC_PTHREAD_CLASH + /* ARGSUSED */ + static void + pthread_exit(void *value) +@@ -173,6 +174,7 @@ + _exit(0); + } + ++#define pthread_create pthread_create_AVOID_UCLIBC_PTHREAD_CLASH + /* ARGSUSED */ + static int + pthread_create(sp_pthread_t *thread, const void *attr, +@@ -200,6 +202,7 @@ + } + } + ++#define pthread_cancel pthread_cancel_AVOID_UCLIBC_PTHREAD_CLASH + static int + pthread_cancel(sp_pthread_t thread) + { +@@ -207,6 +210,7 @@ + return (kill(thread, SIGTERM)); + } + ++#define pthread_join pthread_join_AVOID_UCLIBC_PTHREAD_CLASH + /* ARGSUSED */ + static int + pthread_join(sp_pthread_t thread, void **value) diff --git a/buildroot/package/openssh/0004-fix-howmany-include.patch b/buildroot/package/openssh/0004-fix-howmany-include.patch new file mode 100644 index 0000000..7a2a8e3 --- /dev/null +++ b/buildroot/package/openssh/0004-fix-howmany-include.patch @@ -0,0 +1,49 @@ +Update patch from 2fea21799223d41605556858a95b55e69e9960ca to openssh +version 6.8p1 + +Signed-off-by: Gustavo Zacarias + +diff -Nura openssh-6.8p1.orig/openbsd-compat/bsd-poll.c openssh-6.8p1/openbsd-compat/bsd-poll.c +--- openssh-6.8p1.orig/openbsd-compat/bsd-poll.c 2015-03-18 07:11:46.184620677 -0300 ++++ openssh-6.8p1/openbsd-compat/bsd-poll.c 2015-03-18 07:12:29.120094555 -0300 +@@ -19,6 +19,7 @@ + #include "includes.h" + #if !defined(HAVE_POLL) + ++#include + #include + #include + #ifdef HAVE_SYS_SELECT_H +diff -Nura openssh-6.8p1.orig/sshd.c openssh-6.8p1/sshd.c +--- openssh-6.8p1.orig/sshd.c 2015-03-18 07:11:46.187620780 -0300 ++++ openssh-6.8p1/sshd.c 2015-03-18 07:13:11.889562735 -0300 +@@ -44,6 +44,7 @@ + + #include "includes.h" + ++#include + #include + #include + #include +diff -Nura openssh-6.8p1.orig/ssh-keyscan.c openssh-6.8p1/ssh-keyscan.c +--- openssh-6.8p1.orig/ssh-keyscan.c 2015-03-18 07:11:46.180620539 -0300 ++++ openssh-6.8p1/ssh-keyscan.c 2015-03-18 07:13:32.092256248 -0300 +@@ -9,6 +9,7 @@ + + #include "includes.h" + ++#include + #include + #include "openbsd-compat/sys-queue.h" + #include +diff -Nura openssh-6.8p1.orig/ssh-pkcs11-helper.c openssh-6.8p1/ssh-pkcs11-helper.c +--- openssh-6.8p1.orig/ssh-pkcs11-helper.c 2015-03-18 07:11:46.182620608 -0300 ++++ openssh-6.8p1/ssh-pkcs11-helper.c 2015-03-18 07:13:43.620651993 -0300 +@@ -17,6 +17,7 @@ + + #include "includes.h" + ++#include + #include + #ifdef HAVE_SYS_TIME_H + # include diff --git a/buildroot/package/openssh/0005-openbsd-compat-bsd-getpagesize.c-include-includes.h-.patch b/buildroot/package/openssh/0005-openbsd-compat-bsd-getpagesize.c-include-includes.h-.patch new file mode 100644 index 0000000..ce60072 --- /dev/null +++ b/buildroot/package/openssh/0005-openbsd-compat-bsd-getpagesize.c-include-includes.h-.patch @@ -0,0 +1,35 @@ +From 9a43657a3dcb868b4f36ade3aba5dcf0871fb412 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Mon, 30 Oct 2017 23:36:56 +0100 +Subject: [PATCH] openbsd-compat/bsd-getpagesize.c: include includes.h for + config.h defines + +The configure script checks for getpagesize() and sets HAVE_GETPAGESIZE in +config.h, but bsd-getpagesize.c forgot to include includes.h (which +indirectly includes config.h) so the checks always fails, causing linker +issues when linking statically on systems with getpagesize(): + +http://autobuild.buildroot.net/results/8cc/8cc30818a400c7a392a3de787cabc9cd8425495f/build-end.log + +Fix it by including includes.h + +Signed-off-by: Peter Korsgaard +--- + openbsd-compat/bsd-getpagesize.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/openbsd-compat/bsd-getpagesize.c b/openbsd-compat/bsd-getpagesize.c +index 9daddfbd..416a8d4c 100644 +--- a/openbsd-compat/bsd-getpagesize.c ++++ b/openbsd-compat/bsd-getpagesize.c +@@ -1,5 +1,7 @@ + /* Placed in the public domain */ + ++#include "includes.h" ++ + #ifndef HAVE_GETPAGESIZE + + #include +-- +2.11.0 + diff --git a/buildroot/package/openssh/Config.in b/buildroot/package/openssh/Config.in new file mode 100644 index 0000000..683a9c0 --- /dev/null +++ b/buildroot/package/openssh/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_OPENSSH + bool "openssh" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + A free version of the SSH protocol suite of network + connectivity tools. The standard 'ssh', 'sshd', 'scp', and + friends. + + http://www.openssh.com/ diff --git a/buildroot/package/openssh/S50sshd b/buildroot/package/openssh/S50sshd new file mode 100644 index 0000000..22da41d --- /dev/null +++ b/buildroot/package/openssh/S50sshd @@ -0,0 +1,47 @@ +#!/bin/sh +# +# sshd Starts sshd. +# + +# Make sure the ssh-keygen progam exists +[ -f /usr/bin/ssh-keygen ] || exit 0 + +umask 077 + +start() { + # Create any missing keys + /usr/bin/ssh-keygen -A + + printf "Starting sshd: " + /usr/sbin/sshd + touch /var/lock/sshd + echo "OK" +} +stop() { + printf "Stopping sshd: " + killall sshd + rm -f /var/lock/sshd + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/buildroot/package/openssh/openssh.hash b/buildroot/package/openssh/openssh.hash new file mode 100644 index 0000000..d8a4da3 --- /dev/null +++ b/buildroot/package/openssh/openssh.hash @@ -0,0 +1,4 @@ +# From http://www.openssh.com/txt/release-7.6 (base64 encoded) +sha256 a323caeeddfe145baaa0db16e98d784b1fbc7dd436a6bf1f479dfd5cd1d21723 openssh-7.6p1.tar.gz +# Locally calculated +sha256 05a4c25ef464e19656c5259bd4f4da8428efab01044f3541b79fbb3ff209350f LICENCE diff --git a/buildroot/package/openssh/openssh.mk b/buildroot/package/openssh/openssh.mk new file mode 100644 index 0000000..6b7ac22 --- /dev/null +++ b/buildroot/package/openssh/openssh.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# openssh +# +################################################################################ + +OPENSSH_VERSION = 7.6p1 +OPENSSH_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable +OPENSSH_LICENSE = BSD-3-Clause, BSD-2-Clause, Public Domain +OPENSSH_LICENSE_FILES = LICENCE +# Autoreconf needed due to the following patches modifying configure.ac: +# 0001-configure-ac-detect-mips-abi.patch +# 0002-configure-ac-properly-set-seccomp-audit-arch-for-mips64.patch +OPENSSH_AUTORECONF = YES +OPENSSH_CONF_ENV = LD="$(TARGET_CC)" LDFLAGS="$(TARGET_CFLAGS)" +OPENSSH_CONF_OPTS = \ + --sysconfdir=/etc/ssh \ + --disable-lastlog \ + --disable-utmp \ + --disable-utmpx \ + --disable-wtmp \ + --disable-wtmpx \ + --disable-strip + +define OPENSSH_USERS + sshd -1 sshd -1 * - - - SSH drop priv user +endef + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +OPENSSH_CONF_OPTS += --without-pie +endif + +OPENSSH_DEPENDENCIES = zlib openssl + +ifeq ($(BR2_PACKAGE_CRYPTODEV_LINUX),y) +OPENSSH_DEPENDENCIES += cryptodev-linux +OPENSSH_CONF_OPTS += --with-ssl-engine +else +OPENSSH_CONF_OPTS += --without-ssl-engine +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +define OPENSSH_INSTALL_PAM_CONF + $(INSTALL) -D -m 644 $(@D)/contrib/sshd.pam.generic $(TARGET_DIR)/etc/pam.d/sshd + $(SED) '\%password required /lib/security/pam_cracklib.so%d' $(TARGET_DIR)/etc/pam.d/sshd + $(SED) 's/\#UsePAM no/UsePAM yes/' $(TARGET_DIR)/etc/ssh/sshd_config +endef + +OPENSSH_DEPENDENCIES += linux-pam +OPENSSH_CONF_OPTS += --with-pam +OPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_INSTALL_PAM_CONF +else +OPENSSH_CONF_OPTS += --without-pam +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +OPENSSH_DEPENDENCIES += libselinux +OPENSSH_CONF_OPTS += --with-selinux +else +OPENSSH_CONF_OPTS += --without-selinux +endif + +define OPENSSH_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/openssh/sshd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/sshd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/sshd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/sshd.service +endef + +define OPENSSH_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/openssh/S50sshd \ + $(TARGET_DIR)/etc/init.d/S50sshd +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/openssh/sshd.service b/buildroot/package/openssh/sshd.service new file mode 100644 index 0000000..b5e96b3 --- /dev/null +++ b/buildroot/package/openssh/sshd.service @@ -0,0 +1,11 @@ +[Unit] +Description=OpenSSH server daemon +After=syslog.target network.target auditd.service + +[Service] +ExecStartPre=/usr/bin/ssh-keygen -A +ExecStart=/usr/sbin/sshd -D -e +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/openssl/Config.in b/buildroot/package/openssl/Config.in new file mode 100644 index 0000000..d840331 --- /dev/null +++ b/buildroot/package/openssl/Config.in @@ -0,0 +1,86 @@ +config BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + bool + +config BR2_PACKAGE_OPENSSL + bool "openssl support" + select BR2_PACKAGE_HAS_OPENSSL + help + Select the desired ssl library provider. + +if BR2_PACKAGE_OPENSSL + +choice + prompt "ssl library" + default BR2_PACKAGE_LIBOPENSSL + help + Select OpenSSL or LibreSSL. + +config BR2_PACKAGE_LIBOPENSSL + bool "openssl" + select BR2_PACKAGE_ZLIB + help + A collaborative effort to develop a robust, commercial-grade, + fully featured, and Open Source toolkit implementing the + Secure Sockets Layer (SSL v2/v3) and Transport Security + (TLS v1) as well as a full-strength general-purpose + cryptography library. + + http://www.openssl.org/ + + Note: Some helper scripts need perl. + +if BR2_PACKAGE_LIBOPENSSL + +config BR2_PACKAGE_LIBOPENSSL_BIN + bool "openssl binary" + help + Install the openssl binary and the associated helper scripts + to the target file system. This is a command line tool for + doing various cryptographic stuff. + +config BR2_PACKAGE_LIBOPENSSL_ENGINES + bool "openssl additional engines" + help + Install additional encryption engine libraries. + +endif + +config BR2_PACKAGE_LIBRESSL + bool "libressl" + depends on !BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + # uClibc on noMMU doesn't provide __register_atfork() + depends on !(BR2_TOOLCHAIN_USES_UCLIBC && !BR2_USE_MMU) + help + LibreSSL is a version of the TLS/crypto stack forked from + OpenSSL in 2014, with goals of modernizing the codebase, + improving security, and applying best practice development + processes. + + http://www.libressl.org/ + +if BR2_PACKAGE_LIBRESSL + +config BR2_PACKAGE_LIBRESSL_BIN + bool "openssl binary" + help + Install the openssl binary to the target file system. This is + a command line tool for doing various cryptographic stuff. + +endif + +endchoice + +config BR2_PACKAGE_HAS_OPENSSL + bool + +config BR2_PACKAGE_PROVIDES_OPENSSL + string + default "libopenssl" if BR2_PACKAGE_LIBOPENSSL + default "libressl" if BR2_PACKAGE_LIBRESSL + +endif + +# ensure libopenssl is used for the host variant +config BR2_PACKAGE_PROVIDES_HOST_OPENSSL + string + default "host-libopenssl" diff --git a/buildroot/package/openssl/openssl.mk b/buildroot/package/openssl/openssl.mk new file mode 100644 index 0000000..d20e184 --- /dev/null +++ b/buildroot/package/openssl/openssl.mk @@ -0,0 +1,8 @@ +################################################################################ +# +# openssl +# +################################################################################ + +$(eval $(virtual-package)) +$(eval $(host-virtual-package)) diff --git a/buildroot/package/openswan/Config.in b/buildroot/package/openswan/Config.in new file mode 100644 index 0000000..340686c --- /dev/null +++ b/buildroot/package/openswan/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_OPENSWAN + bool "openswan" + depends on BR2_USE_MMU # iproute2 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # iproute2 + depends on !BR2_TOOLCHAIN_USES_MUSL # GLOB_BRACE + select BR2_PACKAGE_GMP + select BR2_PACKAGE_IPROUTE2 + help + Openswan is an implementation of IPsec for Linux + + http://www.openswan.org + +comment "openswan needs a uClibc or glibc toolchain w/ headers >= 3.4" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || \ + BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/openswan/openswan.hash b/buildroot/package/openswan/openswan.hash new file mode 100644 index 0000000..805ab94 --- /dev/null +++ b/buildroot/package/openswan/openswan.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9a3eb041084c3ab125dd645c40e8f5563efe73e18a3881cf2ce3582001daafc5 openswan-2.6.50.tar.gz diff --git a/buildroot/package/openswan/openswan.mk b/buildroot/package/openswan/openswan.mk new file mode 100644 index 0000000..928eb9b --- /dev/null +++ b/buildroot/package/openswan/openswan.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# openswan +# +################################################################################ + +OPENSWAN_VERSION = 2.6.50 +OPENSWAN_SITE = https://download.openswan.org/openswan +OPENSWAN_LICENSE = GPL-2.0+, BSD-3-Clause +OPENSWAN_LICENSE_FILES = COPYING LICENSE + +OPENSWAN_DEPENDENCIES = host-bison host-flex gmp iproute2 +OPENSWAN_MAKE_OPTS = ARCH=$(BR2_ARCH) CC="$(TARGET_CC)" \ + USERCOMPILE="$(TARGET_CFLAGS) $(if $(BR2_TOOLCHAIN_SUPPORTS_PIE),-fPIE)" \ + USERLINK="$(TARGET_LDFLAGS) $(if $(BR2_TOOLCHAIN_SUPPORTS_PIE),-fPIE)" \ + INC_USRLOCAL=/usr USE_KLIPS=false USE_MAST=false USE_NM=false + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +OPENSWAN_DEPENDENCIES += libcurl +OPENSWAN_MAKE_OPTS += USE_LIBCURL=true +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENSWAN_DEPENDENCIES += openssl +OPENSWAN_MAKE_OPTS += HAVE_OPENSSL=true +ifeq ($(BR2_PACKAGE_OCF_LINUX),y) +OPENSWAN_MAKE_OPTS += HAVE_OCF=true +endif +endif + +define OPENSWAN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(OPENSWAN_MAKE_OPTS) programs +endef + +define OPENSWAN_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) \ + $(OPENSWAN_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/opentracing-cpp/0001-CMake-make-shared-static-target-a-configurable-optio.patch b/buildroot/package/opentracing-cpp/0001-CMake-make-shared-static-target-a-configurable-optio.patch new file mode 100644 index 0000000..90a945b --- /dev/null +++ b/buildroot/package/opentracing-cpp/0001-CMake-make-shared-static-target-a-configurable-optio.patch @@ -0,0 +1,74 @@ +From 9462847f23a25524fdc2112cbc8de3f2c02a1669 Mon Sep 17 00:00:00 2001 +From: Jan Heylen +Date: Fri, 22 Dec 2017 22:04:29 +0100 +Subject: [PATCH] CMake: make shared/static target a configurable option + +Signed-off-by: Jan Heylen +--- + CMakeLists.txt | 40 ++++++++++++++++++++++++++++------------ + 1 file changed, 28 insertions(+), 12 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index aadf2f9..d03bd00 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -70,18 +70,36 @@ endif() + include_directories(include) + include_directories(SYSTEM 3rd_party/include) + ++option(BUILD_SHARED_LIBS "Build as a shared library" ON) ++option(BUILD_STATIC_LIBS "Build as a static library" ON) ++ ++if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) ++ message(FATAL_ERROR "One or both of BUILD_SHARED_LIBS or BUILD_STATIC_LIBS must be set to ON to build") ++endif() ++ + set(SRCS src/propagation.cpp src/noop.cpp src/tracer.cpp) +-add_library(opentracing SHARED ${SRCS}) +-target_include_directories(opentracing INTERFACE "$") +-set_target_properties(opentracing PROPERTIES VERSION ${OPENTRACING_VERSION_STRING} ++ ++if (BUILD_SHARED_LIBS) ++ add_library(opentracing SHARED ${SRCS}) ++ target_include_directories(opentracing INTERFACE "$") ++ set_target_properties(opentracing PROPERTIES VERSION ${OPENTRACING_VERSION_STRING} + SOVERSION ${OPENTRACING_VERSION_MAJOR}) +-add_library(opentracing-static STATIC ${SRCS}) +-set_target_properties(opentracing-static PROPERTIES OUTPUT_NAME opentracing) +-target_include_directories(opentracing-static INTERFACE "$") +-if (CLANG_TIDY_EXE) +- set_target_properties(opentracing PROPERTIES ++ install(TARGETS opentracing EXPORT OpenTracingTargets ++ LIBRARY DESTINATION lib ++ ARCHIVE DESTINATION lib) ++ if (CLANG_TIDY_EXE) ++ set_target_properties(opentracing PROPERTIES + CXX_CLANG_TIDY "${DO_CLANG_TIDY}") +-endif() ++ endif() ++endif(BUILD_SHARED_LIBS) ++ ++if (BUILD_STATIC_LIBS) ++ add_library(opentracing-static STATIC ${SRCS}) ++ set_target_properties(opentracing-static PROPERTIES OUTPUT_NAME opentracing) ++ target_include_directories(opentracing-static INTERFACE "$") ++ install(TARGETS opentracing-static EXPORT OpenTracingTargets ++ ARCHIVE DESTINATION lib) ++endif(BUILD_STATIC_LIBS) + + + install(DIRECTORY 3rd_party/include/opentracing DESTINATION include +@@ -89,9 +107,7 @@ install(DIRECTORY 3rd_party/include/opentracing DESTINATION include + PATTERN "*.h") + install(DIRECTORY include/opentracing DESTINATION include + FILES_MATCHING PATTERN "*.h") +-install(TARGETS opentracing opentracing-static EXPORT OpenTracingTargets +- LIBRARY DESTINATION lib +- ARCHIVE DESTINATION lib) ++ + + # ============================================================================== + # Package configuration setup +-- +2.7.4 + diff --git a/buildroot/package/opentracing-cpp/Config.in b/buildroot/package/opentracing-cpp/Config.in new file mode 100644 index 0000000..4ee7b29 --- /dev/null +++ b/buildroot/package/opentracing-cpp/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_OPENTRACING_CPP + bool "opentracing-cpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # exception_ptr + help + OpenTracing API for C++ + + http://opentracing.io + +comment "opentracing-cpp needs a toolchain w/ C++, gcc >= 4.8" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +comment "opentracing-cpp needs exception_ptr" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/buildroot/package/opentracing-cpp/opentracing-cpp.hash b/buildroot/package/opentracing-cpp/opentracing-cpp.hash new file mode 100644 index 0000000..d25dbaf --- /dev/null +++ b/buildroot/package/opentracing-cpp/opentracing-cpp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c77041cb2f147ac81b2b0702abfced5565a9cebc318d045c060a4c3e074009ee opentracing-cpp-v1.2.0.tar.gz +sha256 b80bffcfee825a69645f7ca97ddba48714031ea5c845198d184714d5490798b6 COPYING diff --git a/buildroot/package/opentracing-cpp/opentracing-cpp.mk b/buildroot/package/opentracing-cpp/opentracing-cpp.mk new file mode 100644 index 0000000..4e296fc --- /dev/null +++ b/buildroot/package/opentracing-cpp/opentracing-cpp.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# opentracing-cpp +# +################################################################################ + +OPENTRACING_CPP_VERSION = v1.2.0 +OPENTRACING_CPP_SITE = $(call github,opentracing,opentracing-cpp,$(OPENTRACING_CPP_VERSION)) +OPENTRACING_CPP_LICENSE = MIT +OPENTRACING_CPP_LICENSE_FILES = COPYING + +OPENTRACING_CPP_INSTALL_STAGING = YES + +# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable +# although BUILD_STATIC_LIBS=ON is default, make it explicit, +# cmake and static/shared libs is confusing enough already. +ifeq ($(BR2_STATIC_LIBS),y) +OPENTRACING_CPP_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +OPENTRACING_CPP_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +else ifeq ($(BR2_SHARED_LIBS),y) +OPENTRACING_CPP_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/opentyrian-data/Config.in b/buildroot/package/opentyrian-data/Config.in new file mode 100644 index 0000000..dd3b0c1 --- /dev/null +++ b/buildroot/package/opentyrian-data/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_OPENTYRIAN_DATA + bool "OpenTyrian data" + depends on BR2_PACKAGE_OPENTYRIAN + help + Data files to use with OpenTyrian game. Currently only the + original Tyrian 2.1 data files, that have been released as + Freeware in 2004, are compatible. + + http://code.google.com/p/opentyrian/wiki/FAQ diff --git a/buildroot/package/opentyrian-data/opentyrian-data.hash b/buildroot/package/opentyrian-data/opentyrian-data.hash new file mode 100644 index 0000000..9a7079c --- /dev/null +++ b/buildroot/package/opentyrian-data/opentyrian-data.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7790d09a2a3addcd33c66ef063d5900eb81cc9c342f4807eb8356364dd1d9277 tyrian21.zip diff --git a/buildroot/package/opentyrian-data/opentyrian-data.mk b/buildroot/package/opentyrian-data/opentyrian-data.mk new file mode 100644 index 0000000..4b879df --- /dev/null +++ b/buildroot/package/opentyrian-data/opentyrian-data.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# opentyrian-data +# +################################################################################ + +OPENTYRIAN_DATA_VERSION = 2.1 +OPENTYRIAN_DATA_SITE = http://www.camanis.net/opentyrian +OPENTYRIAN_DATA_SOURCE = tyrian21.zip +OPENTYRIAN_DATA_LICENSE = Freeware + +define OPENTYRIAN_DATA_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/$(OPENTYRIAN_DATA_SOURCE) +endef + +define OPENTYRIAN_DATA_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/opentyrian/data/ + cp $(@D)/tyrian21/* $(TARGET_DIR)/usr/share/opentyrian/data/ + rm -f $(TARGET_DIR)/usr/share/opentyrian/data/*.doc + rm -f $(TARGET_DIR)/usr/share/opentyrian/data/*.exe +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/opentyrian/Config.in b/buildroot/package/opentyrian/Config.in new file mode 100644 index 0000000..cbc73e5 --- /dev/null +++ b/buildroot/package/opentyrian/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_OPENTYRIAN + bool "OpenTyrian" + select BR2_PACKAGE_SDL + select BR2_PACKAGE_OPENTYRIAN_DATA + help + OpenTyrian is a port of the DOS shoot-em-up Tyrian. It uses + SDL, making it easily cross-platform. + It requires the original data files to run. + A display with minimum 640x480 resolution and a keyboard are + needed to play the game. + If you want some sound, activate ALSA with OSS emulation. + + https://bitbucket.org/opentyrian/opentyrian/wiki/Home + +if BR2_PACKAGE_OPENTYRIAN + +config BR2_PACKAGE_OPENTYRIAN_NET + bool "network support" + default y + select BR2_PACKAGE_SDL_NET + help + Activates network support in OpenTyrian. Will add SDL_net. + +endif diff --git a/buildroot/package/opentyrian/opentyrian.mk b/buildroot/package/opentyrian/opentyrian.mk new file mode 100644 index 0000000..12e41ad --- /dev/null +++ b/buildroot/package/opentyrian/opentyrian.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# opentyrian +# +################################################################################ + +OPENTYRIAN_VERSION = 9c9f0ec3532b +OPENTYRIAN_SITE = https://bitbucket.org/opentyrian/opentyrian +OPENTYRIAN_SITE_METHOD = hg +OPENTYRIAN_LICENSE = GPL-2.0+ +OPENTYRIAN_LICENSE_FILES = COPYING + +OPENTYRIAN_DEPENDENCIES = sdl + +ifeq ($(BR2_PACKAGE_OPENTYRIAN_NET),y) +OPENTYRIAN_DEPENDENCIES += sdl_net +OPENTYRIAN_NETWORK = true +else +OPENTYRIAN_NETWORK = false +endif + +define OPENTYRIAN_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PLATFORM=UNIX \ + CC="$(TARGET_CC)" \ + STRIP="/bin/true" \ + SDL_CONFIG="$(STAGING_DIR)/usr/bin/sdl-config" \ + LDFLAGS="$(TARGET_LDFLAGS) -lm" \ + WITH_NETWORK="$(OPENTYRIAN_NETWORK)" \ + -C $(@D) release +endef + +define OPENTYRIAN_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/opentyrian $(TARGET_DIR)/usr/bin/opentyrian +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/openvmtools/0001-has_bsd_printf.patch b/buildroot/package/openvmtools/0001-has_bsd_printf.patch new file mode 100644 index 0000000..df23f00 --- /dev/null +++ b/buildroot/package/openvmtools/0001-has_bsd_printf.patch @@ -0,0 +1,26 @@ +lib/misc/msgList.c: missing #ifdef + +This macro checks for BSD style printf(), which is not present +when compiling for uClibc. The linked functions are unnecessary in +this case, and they break compilation. + +Signed-off-by: Karoly Kasza + +--- openvmtools-stable-9.10.0.orig/open-vm-tools/lib/misc/msgList.c 2015-06-17 10:01:00.000000000 +0200 ++++ openvmtools-stable-9.10.0/open-vm-tools/lib/misc/msgList.c 2015-06-17 10:01:00.000000000 +0200 +@@ -487,6 +487,7 @@ + return messages->id; + } + ++#ifdef HAS_BSD_PRINTF + + /* + *---------------------------------------------------------------------- +@@ -566,6 +567,7 @@ + } + } + ++#endif + + /* + *---------------------------------------------------------------------- diff --git a/buildroot/package/openvmtools/0002-no_cflags_werror.patch b/buildroot/package/openvmtools/0002-no_cflags_werror.patch new file mode 100644 index 0000000..1621574 --- /dev/null +++ b/buildroot/package/openvmtools/0002-no_cflags_werror.patch @@ -0,0 +1,18 @@ +configure.ac: disable -Werror + +Disable the mandatory flag -Werror in configure.ac. + +Signed-off-by: Karoly Kasza + +--- openvmtools-stable-9.10.0.orig/open-vm-tools/configure.ac 2015-06-17 10:02:00.000000000 +0200 ++++ openvmtools-stable-9.10.0/open-vm-tools/configure.ac 2015-06-17 10:02:00.000000000 +0200 +@@ -935,7 +935,7 @@ + + ### General flags / actions + CFLAGS="$CFLAGS -Wall" +-CFLAGS="$CFLAGS -Werror" ++# CFLAGS="$CFLAGS -Werror" + + # -Wno-unknown-pragmas is due to gcc not understanding '#pragma ident' + # in Xlib.h on OpenSolaris. + diff --git a/buildroot/package/openvmtools/0003-dont-force-cppflags.patch b/buildroot/package/openvmtools/0003-dont-force-cppflags.patch new file mode 100644 index 0000000..c8fa6b1 --- /dev/null +++ b/buildroot/package/openvmtools/0003-dont-force-cppflags.patch @@ -0,0 +1,21 @@ +m4: do not force -I/usr/include in CPPFLAGS + +This is so horribly broken for cross-compilation. :-( + +Signed-off-by: "Yann E. MORIN" + +--- openvmtools-stable-9.10.0.orig/open-vm-tools/m4/vmtools.m4 2015-06-17 10:03:00.000000000 +0200 ++++ openvmtools-stable-9.10.0/open-vm-tools/m4/vmtools.m4 2015-06-17 10:03:00.000000000 +0200 +@@ -281,10 +281,10 @@ + if test "$os" = freebsd; then + CUSTOM_$1_CPPFLAGS="-I/usr/local/include" + else +- CUSTOM_$1_CPPFLAGS="-I/usr/include" ++ CUSTOM_$1_CPPFLAGS=" " + fi + if test -n "$2"; then +- CUSTOM_$1_CPPFLAGS="${CUSTOM_$1_CPPFLAGS}/$2" ++ : CUSTOM_$1_CPPFLAGS="${CUSTOM_$1_CPPFLAGS}/$2" + fi + fi + ]) diff --git a/buildroot/package/openvmtools/0004-uclibc_secure_getenv.patch b/buildroot/package/openvmtools/0004-uclibc_secure_getenv.patch new file mode 100644 index 0000000..6fb9ebd --- /dev/null +++ b/buildroot/package/openvmtools/0004-uclibc_secure_getenv.patch @@ -0,0 +1,18 @@ +lib/misc/idLinux.c: add uClibc support + +uClibc does not have a secure_getenv function, so we use the +Android method. + +Signed-off-by: Karoly Kasza + +--- openvmtools-stable-9.10.0.orig/open-vm-tools/lib/misc/idLinux.c 2015-06-17 10:04:00.000000000 +0200 ++++ openvmtools-stable-9.10.0/open-vm-tools/lib/misc/idLinux.c 2015-06-17 10:04:00.000000000 +0200 +@@ -997,7 +997,7 @@ + static Bool + IdIsSetUGid(void) + { +-#if defined(__ANDROID__) ++#if defined(__ANDROID__) || defined(__UCLIBC__) + /* Android does not have a secure_getenv, so be conservative. */ + return TRUE; + #else diff --git a/buildroot/package/openvmtools/Config.in b/buildroot/package/openvmtools/Config.in new file mode 100644 index 0000000..66d4f1b --- /dev/null +++ b/buildroot/package/openvmtools/Config.in @@ -0,0 +1,55 @@ +config BR2_PACKAGE_OPENVMTOOLS + bool "openvmtools" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC + depends on BR2_ENABLE_LOCALE + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBDNET + help + Open Virtual Machine Tools for VMware guest OS + + http://open-vm-tools.sourceforge.net/ + + ICU locales, Xerces, and X11 tools are currently not + supported. + + NOTE: Support for vmblock-fuse will be enabled in + openvmtools if the libfuse package is selected. + +if BR2_PACKAGE_OPENVMTOOLS + +config BR2_PACKAGE_OPENVMTOOLS_PROCPS + bool "procps support" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_PROCPS_NG + help + Enable support for procps / meminfo + +comment "procps support needs BR2_PACKAGE_BUSYBOX_SHOW_OTHERS" + depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + +config BR2_PACKAGE_OPENVMTOOLS_PAM + bool "PAM support" + # linux-pam needs locale and wchar, but we already have this + # dependency on the main symbol, above. + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Support for PAM in openvmtools + +comment "PAM support needs a glibc toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL + +endif + +comment "openvmtools needs a glibc toolchain w/ wchar, threads, RPC, locale" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HAS_NATIVE_RPC || !BR2_ENABLE_LOCALE || \ + !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/openvmtools/S10vmtoolsd b/buildroot/package/openvmtools/S10vmtoolsd new file mode 100644 index 0000000..6afb9ca --- /dev/null +++ b/buildroot/package/openvmtools/S10vmtoolsd @@ -0,0 +1,33 @@ +#!/bin/sh +# +# Starts vmtoolsd for openvmtools +# + +EXEC="/usr/bin/vmtoolsd" +ARGS="-b" +PID="/var/run/vmtoolsd.pid" + +case "$1" in + start) + printf "Starting vmtoolsd: " + start-stop-daemon -S -q -x $EXEC -- $ARGS $PID + if [ $? != 0 ]; then + echo "FAILED" + exit 1 + else + echo "OK" + fi + ;; + stop) + printf "Stopping vmtoolsd: " + start-stop-daemon -K -q -p $PID + echo "OK" + ;; + restart|reload) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/openvmtools/openvmtools.hash b/buildroot/package/openvmtools/openvmtools.hash new file mode 100644 index 0000000..bf344e5 --- /dev/null +++ b/buildroot/package/openvmtools/openvmtools.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 ff384ab0c11e19db0fd6ddab60e8ae48a4591b141fb3a8e8f1d4e1a489dd293f openvmtools-5a9033ddfa95786d867e4d02bbb9a29bac8fb64f.tar.gz diff --git a/buildroot/package/openvmtools/openvmtools.mk b/buildroot/package/openvmtools/openvmtools.mk new file mode 100644 index 0000000..9501ef3 --- /dev/null +++ b/buildroot/package/openvmtools/openvmtools.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# openvmtools +# +################################################################################ + +OPENVMTOOLS_VERSION = 5a9033ddfa95786d867e4d02bbb9a29bac8fb64f +OPENVMTOOLS_SITE = $(call github,vmware,open-vm-tools,$(OPENVMTOOLS_VERSION)) +OPENVMTOOLS_SUBDIR = open-vm-tools +OPENVMTOOLS_LICENSE = LGPL-2.1 +OPENVMTOOLS_LICENSE_FILES = $(OPENVMTOOLS_SUBDIR)/COPYING + +# Autoreconf needed or config/missing will run configure again at buildtime +OPENVMTOOLS_AUTORECONF = YES +OPENVMTOOLS_CONF_OPTS = --with-dnet \ + --without-icu --without-x --without-gtk2 \ + --without-gtkmm --without-kernel-modules \ + --disable-deploypkg --without-xerces +OPENVMTOOLS_CONF_ENV += CUSTOM_DNET_CPPFLAGS=" " +OPENVMTOOLS_DEPENDENCIES = host-nfs-utils libglib2 libdnet + +# When libfuse is available, openvmtools can build vmblock-fuse, so +# make sure that libfuse gets built first +ifeq ($(BR2_PACKAGE_LIBFUSE),y) +OPENVMTOOLS_DEPENDENCIES += libfuse +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPENVMTOOLS_CONF_OPTS += --with-ssl +OPENVMTOOLS_DEPENDENCIES += openssl +else +OPENVMTOOLS_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_OPENVMTOOLS_PROCPS),y) +OPENVMTOOLS_CONF_OPTS += --with-procps +OPENVMTOOLS_DEPENDENCIES += procps-ng +else +OPENVMTOOLS_CONF_OPTS += --without-procps +endif + +ifeq ($(BR2_PACKAGE_OPENVMTOOLS_PAM),y) +OPENVMTOOLS_CONF_OPTS += --with-pam +OPENVMTOOLS_DEPENDENCIES += linux-pam +else +OPENVMTOOLS_CONF_OPTS += --without-pam +endif + +# symlink needed by lib/system/systemLinux.c (or will cry in /var/log/messages) +# defined in lib/misc/hostinfoPosix.c +# /sbin/shutdown needed for Guest OS restart/shutdown from hypervisor +define OPENVMTOOLS_POST_INSTALL_TARGET_THINGIES + ln -fs os-release $(TARGET_DIR)/etc/lfs-release + if [ ! -e $(TARGET_DIR)/sbin/shutdown ]; then \ + $(INSTALL) -D -m 755 package/openvmtools/shutdown \ + $(TARGET_DIR)/sbin/shutdown; \ + fi +endef + +OPENVMTOOLS_POST_INSTALL_TARGET_HOOKS += OPENVMTOOLS_POST_INSTALL_TARGET_THINGIES + +define OPENVMTOOLS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/openvmtools/S10vmtoolsd \ + $(TARGET_DIR)/etc/init.d/S10vmtoolsd +endef + +define OPENVMTOOLS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/openvmtools/vmtoolsd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/vmtoolsd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/vmtoolsd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/vmtoolsd.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/openvmtools/shutdown b/buildroot/package/openvmtools/shutdown new file mode 100644 index 0000000..bca9765 --- /dev/null +++ b/buildroot/package/openvmtools/shutdown @@ -0,0 +1,7 @@ +#!/bin/sh +#compatibility script for openvmtools +if [ "$1" == "-r" ]; then +/sbin/reboot +else +/sbin/poweroff +fi diff --git a/buildroot/package/openvmtools/vmtoolsd.service b/buildroot/package/openvmtools/vmtoolsd.service new file mode 100644 index 0000000..17a4df4 --- /dev/null +++ b/buildroot/package/openvmtools/vmtoolsd.service @@ -0,0 +1,14 @@ +[Unit] +Description=vmtoolsd for openvmtools +After=syslog.target network.target + +[Service] +Type=forking +PIDFile=/var/run/vmtoolsd.pid +ExecStart=/usr/bin/vmtoolsd -b /var/run/vmtoolsd.pid +Restart=on-failure +KillMode=process +KillSignal=SIGKILL + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/openvpn/Config.in b/buildroot/package/openvpn/Config.in new file mode 100644 index 0000000..0a16755 --- /dev/null +++ b/buildroot/package/openvpn/Config.in @@ -0,0 +1,38 @@ +config BR2_PACKAGE_OPENVPN + bool "openvpn" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL + help + OpenVPN is a full-featured SSL VPN solution which can + accomodate a wide range of configurations, including road + warrior access, home/office/campus telecommuting, WiFi + security, secure branch office linking, and enterprise-scale + remote access solutions with load balancing, failover, and + fine-grained access-controls. + + http://openvpn.net/ + +if BR2_PACKAGE_OPENVPN + +config BR2_PACKAGE_OPENVPN_LZ4 + bool "LZ4 compression" + default y + select BR2_PACKAGE_LZ4 + help + Enable LZ4 compression. + +config BR2_PACKAGE_OPENVPN_LZO + bool "LZO compression" + default y + select BR2_PACKAGE_LZO + help + Enable LZO compression. + +config BR2_PACKAGE_OPENVPN_SMALL + bool "Optimize for small size" + help + Make OpenVPN as small as possible. + You loose eurephia, debugging info, help messages and more. + It saves around 100 KiB in binary file size. + +endif diff --git a/buildroot/package/openvpn/S60openvpn b/buildroot/package/openvpn/S60openvpn new file mode 100755 index 0000000..de82a50 --- /dev/null +++ b/buildroot/package/openvpn/S60openvpn @@ -0,0 +1,103 @@ +#!/bin/sh -e +# +# Original version by Robert Leslie +# , edited by iwj and cs +# Modified for openvpn by Alberto Gonzalez Iniesta +# Modified for restarting / starting / stopping single tunnels by Richard Mueller + +test $DEBIAN_SCRIPT_DEBUG && set -v -x + +DAEMON=/usr/sbin/openvpn +CONFIG_DIR=/etc/openvpn +test -x $DAEMON || exit 0 +test -d $CONFIG_DIR || exit 0 + +start_vpn () { + $DAEMON --daemon --writepid /var/run/openvpn.$NAME.pid \ + --config $CONFIG_DIR/$NAME.conf --cd $CONFIG_DIR || printf " FAILED->" + printf " $NAME" +} +stop_vpn () { + kill `cat $PIDFILE` || true + rm $PIDFILE +} + +case "$1" in +start) + printf "Starting openvpn:" + + if test -z $2 ; then + for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do + NAME=${CONFIG%%.conf} + start_vpn + done + else + if test -e $CONFIG_DIR/$2.conf ; then + NAME=$2 + start_vpn + else + printf " No such VPN: $2" + fi + fi + echo "." + + ;; +stop) + printf "Stopping openvpn:" + + if test -z $2 ; then + for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do + NAME=`echo $PIDFILE | cut -c18-` + NAME=${NAME%%.pid} + stop_vpn + printf " $NAME" + done + else + if test -e /var/run/openvpn.$2.pid ; then + PIDFILE=`ls /var/run/openvpn.$2.pid 2> /dev/null` + NAME=`echo $PIDFILE | cut -c18-` + NAME=${NAME%%.pid} + stop_vpn + printf " $NAME" + else + printf " No such VPN: $2" + fi + fi + echo "." + ;; +# We only 'reload' for running VPNs. New ones will only start with 'start' or 'restart'. +reload|force-reload) + printf "Reloading openvpn:" + for PIDFILE in `ls /var/run/openvpn.*.pid 2> /dev/null`; do + NAME=`echo $PIDFILE | cut -c18-` + NAME=${NAME%%.pid} +# If openvpn if running under a different user than root we'll need to restart + if egrep '^( |\t)*user' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then + stop_vpn + sleep 1 + start_vpn + printf "(restarted)" + else + kill -HUP `cat $PIDFILE` || true +# start-stop-daemon --stop --signal HUP --quiet --oknodo \ +# --exec $DAEMON --pidfile $PIDFILE + printf " $NAME" + fi + done + echo "." + ;; + +restart) + $0 stop $2 + sleep 1 + $0 start $2 + ;; +*) + echo "Usage: $0 {start|stop|reload|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 + +# vim:set ai et sts=2 sw=2 tw=0: diff --git a/buildroot/package/openvpn/openvpn.hash b/buildroot/package/openvpn/openvpn.hash new file mode 100644 index 0000000..318f9ed --- /dev/null +++ b/buildroot/package/openvpn/openvpn.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking signature +sha256 96cd1b8fe1e8cb2920f07c3fd3985faea756e16fdeebd11d3e146d5bd2b04a80 openvpn-2.4.4.tar.xz diff --git a/buildroot/package/openvpn/openvpn.mk b/buildroot/package/openvpn/openvpn.mk new file mode 100644 index 0000000..086f99b --- /dev/null +++ b/buildroot/package/openvpn/openvpn.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# openvpn +# +################################################################################ + +OPENVPN_VERSION = 2.4.4 +OPENVPN_SOURCE = openvpn-$(OPENVPN_VERSION).tar.xz +OPENVPN_SITE = http://swupdate.openvpn.net/community/releases +OPENVPN_DEPENDENCIES = host-pkgconf openssl +OPENVPN_LICENSE = GPL-2.0 +OPENVPN_LICENSE_FILES = COPYRIGHT.GPL +OPENVPN_CONF_OPTS = \ + --disable-plugin-auth-pam \ + --enable-iproute2 \ + --with-crypto-library=openssl \ + $(if $(BR2_STATIC_LIBS),--disable-plugins) +OPENVPN_CONF_ENV = IFCONFIG=/sbin/ifconfig \ + NETSTAT=/bin/netstat \ + ROUTE=/sbin/route + +ifeq ($(BR2_PACKAGE_OPENVPN_SMALL),y) +OPENVPN_CONF_OPTS += \ + --enable-small \ + --disable-plugins +endif + +# BusyBox 1.21+ places the ip applet in the "correct" place +# but previous versions didn't. +ifeq ($(BR2_PACKAGE_IPROUTE2),y) +OPENVPN_CONF_ENV += IPROUTE=/sbin/ip +else ifeq ($(BR2_BUSYBOX_VERSION_1_19_X)$(BR2_BUSYBOX_VERSION_1_20_X),y) +OPENVPN_CONF_ENV += IPROUTE=/bin/ip +else +OPENVPN_CONF_ENV += IPROUTE=/sbin/ip +endif + +ifeq ($(BR2_PACKAGE_OPENVPN_LZ4),y) +OPENVPN_DEPENDENCIES += lz4 +else +OPENVPN_CONF_OPTS += --disable-lz4 +endif + +ifeq ($(BR2_PACKAGE_OPENVPN_LZO),y) +OPENVPN_DEPENDENCIES += lzo +else +OPENVPN_CONF_OPTS += --disable-lzo +endif + +define OPENVPN_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 $(@D)/src/openvpn/openvpn \ + $(TARGET_DIR)/usr/sbin/openvpn +endef + +define OPENVPN_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/openvpn/S60openvpn \ + $(TARGET_DIR)/etc/init.d/S60openvpn +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/openzwave/0001-Fix-compilation-of-MinOZW.patch b/buildroot/package/openzwave/0001-Fix-compilation-of-MinOZW.patch new file mode 100644 index 0000000..773672e --- /dev/null +++ b/buildroot/package/openzwave/0001-Fix-compilation-of-MinOZW.patch @@ -0,0 +1,37 @@ +From 599e2a11c6f48dde744012ec45686c08e15f3059 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 3 Oct 2016 10:35:52 +0200 +Subject: [PATCH] Fix compilation of MinOZW (#991) + +LIBDIR was used in cpp/examples/MinOZW/Makefile to add dynamic +libraries. However, as it was unset by default, the cross-compilation +could fail if the host had a library such as libnss3.so in /. +To fix this issue, this patch sets LIBDIR to top_buildir if it is unset + +Fixes: + http://autobuild.buildroot.net/results/68719fdf1320a69310bada6d3c47654dacdb5898 + +Signed-off-by: Fabrice Fontaine +[Upstream commit: https://github.com/OpenZWave/open-zwave/commit/599e2a11c6f48dde744012ec45686c08e15f3059] +Signed-off-by: Thomas Petazzoni +--- + cpp/examples/MinOZW/Makefile | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/cpp/examples/MinOZW/Makefile b/cpp/examples/MinOZW/Makefile +index e575632a3..95d684b77 100644 +--- a/cpp/examples/MinOZW/Makefile ++++ b/cpp/examples/MinOZW/Makefile +@@ -17,9 +17,11 @@ DEBUG_LDFLAGS := -g + + top_srcdir := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))../../../) + ++#where is put the temporary library ++LIBDIR ?= $(top_builddir) + + INCLUDES := -I $(top_srcdir)/cpp/src -I $(top_srcdir)/cpp/tinyxml/ -I $(top_srcdir)/cpp/hidapi/hidapi/ +-LIBS = $(wildcard $(LIBDIR)/*.so $(LIBDIR)/*.dylib $(top_builddir)/*.so $(top_builddir)/*.dylib $(top_builddir)/cpp/build/*.so $(top_builddir)/cpp/build/*.dylib ) ++LIBS = $(wildcard $(LIBDIR)/*.so $(LIBDIR)/*.dylib $(top_builddir)/cpp/build/*.so $(top_builddir)/cpp/build/*.dylib ) + LIBSDIR = $(abspath $(dir $(firstword $(LIBS)))) + minozwsrc := $(notdir $(wildcard $(top_srcdir)/cpp/examples/MinOZW/*.cpp)) + VPATH := $(top_srcdir)/cpp/examples/MinOZW diff --git a/buildroot/package/openzwave/0002-Fix-warning-on-wcsdup-implicit-declaration.patch b/buildroot/package/openzwave/0002-Fix-warning-on-wcsdup-implicit-declaration.patch new file mode 100644 index 0000000..1fe30e4 --- /dev/null +++ b/buildroot/package/openzwave/0002-Fix-warning-on-wcsdup-implicit-declaration.patch @@ -0,0 +1,29 @@ +From 0878d933223158343af3fe13e03bcd128e8b4cbc Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 22 Apr 2016 17:06:27 +0200 +Subject: [PATCH 1/1] Fix warning on wcsdup implicit declaration + +Define __GNU_SOURCE in cpp/hidapi/linux/hid.c (like already done in +cpp/hidapi/libusb/hid.c) to fix implicit declaration of wcsdup function + +Signed-off-by: Fabrice Fontaine +--- + cpp/hidapi/linux/hid.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/cpp/hidapi/linux/hid.c b/cpp/hidapi/linux/hid.c +index dbf9b9b..c3eb22b 100644 +--- a/cpp/hidapi/linux/hid.c ++++ b/cpp/hidapi/linux/hid.c +@@ -21,6 +21,8 @@ + http://github.com/signal11/hidapi . + ********************************************************/ + ++#define _GNU_SOURCE /* needed for wcsdup() before glibc 2.10 */ ++ + /* C */ + #include + #include +-- +1.9.1 + diff --git a/buildroot/package/openzwave/0003-Ensure-correct-git-repository-path.patch b/buildroot/package/openzwave/0003-Ensure-correct-git-repository-path.patch new file mode 100644 index 0000000..6c40ec9 --- /dev/null +++ b/buildroot/package/openzwave/0003-Ensure-correct-git-repository-path.patch @@ -0,0 +1,29 @@ +From 89cdc83307f61422db21cc7965ea294862c128bf Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 30 May 2016 10:37:42 +0200 +Subject: [PATCH 2/2] Ensure correct git repository path + +Add "--git-dir ./.git" to ensure the correct git repository path is used (this +fix a bug when trying to add openzwave to buildroot build system) + +Signed-off-by: Fabrice Fontaine +--- + cpp/build/support.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cpp/build/support.mk b/cpp/build/support.mk +index 3f74c7e..f529b25 100644 +--- a/cpp/build/support.mk ++++ b/cpp/build/support.mk +@@ -29,7 +29,7 @@ GIT := $(shell which git) + ifeq ($(GIT),) + VERSION_REV ?= 0 + else +-GITVERSION := $(shell $(GIT) describe --long --tags --dirty 2>/dev/null | sed s/^v//) ++GITVERSION := $(shell $(GIT) --git-dir ./.git describe --long --tags --dirty 2>/dev/null | sed s/^v//) + ifeq ($(GITVERSION),) + GITVERSION := $(VERSION_MAJ).$(VERSION_MIN).-1 + VERSION_REV := 0 +-- +2.7.4 + diff --git a/buildroot/package/openzwave/Config.in b/buildroot/package/openzwave/Config.in new file mode 100644 index 0000000..86f45dc --- /dev/null +++ b/buildroot/package/openzwave/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_OPENZWAVE + bool "openzwave" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_USE_WCHAR + help + Free software library that interfaces with selected Z-Wave + PC controllers, allowing anyone to create applications that + manipulate and respond to devices on a Z-Wave network, + without requiring in-depth knowledge of the Z-Wave protocol + + http://www.openzwave.net + +comment "openzwave needs udev and a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_PACKAGE_HAS_UDEV || !BR2_USE_WCHAR diff --git a/buildroot/package/openzwave/openzwave.hash b/buildroot/package/openzwave/openzwave.hash new file mode 100644 index 0000000..f3a677b --- /dev/null +++ b/buildroot/package/openzwave/openzwave.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 abfb4c7e7728e86ba374c2e0ef7de912594eb24a8c44935457352df844530238 openzwave-V1.5.tar.gz +sha256 c8db08727d03bea1213cdb29459b4b489b0d68a0866765df40ff205c6cd7224b license/license.txt +sha256 4da452226e9064b597020ad404e1c78d8175bc31ad7c1908485a92c0a4d70284 license/lgpl.txt +sha256 33ffdead480674d5f33e2934822a3b93c93e3f8c894667a3bf30bd1195b38f83 license/gpl.txt +sha256 6f50ebf9af9b6658c7936ffcc6fedd99254df984c0fec2e6ffb9f3aa1c4ef3e1 license/Apache-License-2.0.txt diff --git a/buildroot/package/openzwave/openzwave.mk b/buildroot/package/openzwave/openzwave.mk new file mode 100644 index 0000000..38515e3 --- /dev/null +++ b/buildroot/package/openzwave/openzwave.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# openzwave +# +################################################################################ + +OPENZWAVE_VERSION = V1.5 +OPENZWAVE_SITE = $(call github,OpenZWave,open-zwave,$(OPENZWAVE_VERSION)) +OPENZWAVE_LICENSE = LGPL-3.0+, GPL-3.0 (examples), Apache-2.0 (sh2ju.sh) +OPENZWAVE_LICENSE_FILES = license/license.txt license/lgpl.txt \ + license/gpl.txt license/Apache-License-2.0.txt + +OPENZWAVE_DEPENDENCIES = host-pkgconf udev +OPENZWAVE_INSTALL_STAGING = YES + +# Set instlibdir to install libopenzwave.so* in the correct directory +# otherwise openzwave will check that /lib64 exists (on the host) to +# know if the library should be installed in $(PREFIX)/lib or $(PREFIX)/lib64. +# Set pkgconfigdir to /lib/pkgconfig to install libopenzwave.pc in the +# correct directory otherwise openzwave will call +# "pkg-config --variable pc_path pkg-config" which returns an incorrect value. +# Set sysconfdir to /etc/openzwave to install openzwave configuration files in +# the correct directory otherwise openzwave will install configuration files in +# $(PREFIX)/etc/openzwave. +# Disable doxygen documentation. +OPENZWAVE_MAKE_OPTS = \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + PREFIX=/usr \ + instlibdir=/usr/lib \ + pkgconfigdir=/usr/lib/pkgconfig \ + sysconfdir=/etc/openzwave \ + DOXYGEN= + +define OPENZWAVE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENZWAVE_MAKE_OPTS) -C $(@D) +endef + +define OPENZWAVE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENZWAVE_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(STAGING_DIR) install +endef + +# Delete unneeded ozw_config binary from target directory as this is an utility +# application used to get the openzwave build configuration. +define OPENZWAVE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(OPENZWAVE_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install + rm -f $(TARGET_DIR)/usr/bin/ozw_config +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/opkg-utils/Config.in.host b/buildroot/package/opkg-utils/Config.in.host new file mode 100644 index 0000000..1c9c474 --- /dev/null +++ b/buildroot/package/opkg-utils/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_OPKG_UTILS + bool "host opkg-utils" + help + Helper scripts for use with the opkg package manager. + + https://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/ diff --git a/buildroot/package/opkg-utils/opkg-utils.hash b/buildroot/package/opkg-utils/opkg-utils.hash new file mode 100644 index 0000000..332823f --- /dev/null +++ b/buildroot/package/opkg-utils/opkg-utils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c14284d999cdd18fee4c6b22720f38beee962b2c8e099166d8d55d76a2111beb opkg-utils-0.3.4.tar.gz diff --git a/buildroot/package/opkg-utils/opkg-utils.mk b/buildroot/package/opkg-utils/opkg-utils.mk new file mode 100644 index 0000000..df20222 --- /dev/null +++ b/buildroot/package/opkg-utils/opkg-utils.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# opkg-utils +# +################################################################################ + +OPKG_UTILS_VERSION = 0.3.4 +OPKG_UTILS_SITE = http://git.yoctoproject.org/git/opkg-utils +OPKG_UTILS_SITE_METHOD = git +OPKG_UTILS_LICENSE = GPL-2.0+ +OPKG_UTILS_LICENSE_FILES = COPYING + +define HOST_OPKG_UTILS_BUILD_CMDS + $(MAKE) -C $(@D) $(HOST_CONFIGURE_OPTS) +endef + +define HOST_OPKG_UTILS_INSTALL_CMDS + $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/opkg/Config.in b/buildroot/package/opkg/Config.in new file mode 100644 index 0000000..20f6fa2 --- /dev/null +++ b/buildroot/package/opkg/Config.in @@ -0,0 +1,33 @@ +comment "opkg needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_OPKG + bool "opkg" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # libarchive + select BR2_PACKAGE_LIBARCHIVE + help + Opkg is a lightweight package management system, based on + ipkg. It is written in C and resembles apt/dpkg in + operation. It is intended for use on embedded Linux devices. + Opkg is maintained, stable, robust and conservative in its + memory usage, despite its buggy ipkg ancestry. As best it + can, opkg maintains backwards compatibility with ipkg and + conforms to a subset of debian's policy manual regarding + control files. + + http://code.google.com/p/opkg/ + +if BR2_PACKAGE_OPKG + +config BR2_PACKAGE_OPKG_GPG_SIGN + bool "gnupg support" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + select BR2_PACKAGE_LIBGPGME + select BR2_PACKAGE_LIBGPG_ERROR + help + Enable opkg package signature checking support using + gnupg/libgpgme. + +endif diff --git a/buildroot/package/opkg/opkg.hash b/buildroot/package/opkg/opkg.hash new file mode 100644 index 0000000..80f3f0d --- /dev/null +++ b/buildroot/package/opkg/opkg.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2ec7157ccf866e49ca139e3632ba1ca9d61dc24382606b55062e423161a530b0 opkg-v0.3.1.tar.gz diff --git a/buildroot/package/opkg/opkg.mk b/buildroot/package/opkg/opkg.mk new file mode 100644 index 0000000..0c7e15e --- /dev/null +++ b/buildroot/package/opkg/opkg.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# opkg +# +################################################################################ + +OPKG_VERSION = v0.3.1 +OPKG_SITE = http://git.yoctoproject.org/git/opkg +OPKG_SITE_METHOD = git +# Uses PKG_CHECK_MODULES() in configure.ac +OPKG_DEPENDENCIES = host-pkgconf libarchive +OPKG_LICENSE = GPL-2.0+ +OPKG_LICENSE_FILES = COPYING +OPKG_INSTALL_STAGING = YES +OPKG_CONF_OPTS = --disable-curl +OPKG_AUTORECONF = YES + +# Ensure directory for lockfile exists +define OPKG_CREATE_LOCKDIR + mkdir -p $(TARGET_DIR)/usr/lib/opkg +endef + +ifeq ($(BR2_PACKAGE_OPKG_GPG_SIGN),y) +OPKG_CONF_OPTS += --enable-gpg +OPKG_CONF_ENV += \ + ac_cv_path_GPGME_CONFIG=$(STAGING_DIR)/usr/bin/gpgme-config \ + ac_cv_path_GPGERR_CONFIG=$(STAGING_DIR)/usr/bin/gpg-error-config +OPKG_DEPENDENCIES += libgpgme libgpg-error +else +OPKG_CONF_OPTS += --disable-gpg +endif + +OPKG_POST_INSTALL_TARGET_HOOKS += OPKG_CREATE_LOCKDIR + +$(eval $(autotools-package)) diff --git a/buildroot/package/oprofile/0001-musl.patch b/buildroot/package/oprofile/0001-musl.patch new file mode 100644 index 0000000..094cd16 --- /dev/null +++ b/buildroot/package/oprofile/0001-musl.patch @@ -0,0 +1,48 @@ +Remove non-Posix use of FTW_ACTIONRETVAL + +The musl implementation of nftw doesn't support the glibc extension +FTW_ACTIONRETVAL. Since none of the features of FTW_ACTIONRETVAL are +used here, just use the normal nftw return value. + +Downloaded from: +https://github.com/openwrt-mirror/openwrt/blob/f22d5e25660106a48727c7aa5d1a73e4171a7987/package/devel/oprofile/patches/100-musl.patch +after I found a hint for the patch here: +http://patchwork.openembedded.org/patch/112675/ + +Removed unneeded patch for libop/op_events.c. + +Because openwrt removed the oprofile package from their repo last week +https://github.com/openwrt-mirror/openwrt/commit/aaf46a8524e138e1673a398e8d2dd9357405b313#diff-fe14456f94abf436d997e2c01c10f3bd +I decided to put this patch into the buildroot repo instead of adding +_PATCH to oprofile.mk + +Signed-off-by: Bernd Kuhls + +--- a/pe_profiling/operf.cpp ++++ b/pe_profiling/operf.cpp +@@ -857,11 +857,14 @@ static int __delete_old_previous_sample_ + int tflag __attribute__((unused)), + struct FTW *ftwbuf __attribute__((unused))) + { ++ int err; ++ + if (remove(fpath)) { ++ err = errno; + perror("sample data removal error"); +- return FTW_STOP; ++ return err; + } else { +- return FTW_CONTINUE; ++ return 0; + } + } + +@@ -896,7 +899,7 @@ static void convert_sample_data(void) + return; + + if (!operf_options::append) { +- int flags = FTW_DEPTH | FTW_ACTIONRETVAL; ++ int flags = FTW_DEPTH; + errno = 0; + if (nftw(previous_sampledir.c_str(), __delete_old_previous_sample_data, 32, flags) !=0 && + errno != ENOENT) { diff --git a/buildroot/package/oprofile/0002-Fix-FTBFS-problem-with-GCC-6.patch b/buildroot/package/oprofile/0002-Fix-FTBFS-problem-with-GCC-6.patch new file mode 100644 index 0000000..34bf365 --- /dev/null +++ b/buildroot/package/oprofile/0002-Fix-FTBFS-problem-with-GCC-6.patch @@ -0,0 +1,51 @@ +From 39d4d46a0bd504ac708ffe72df87bf74cd12ad30 Mon Sep 17 00:00:00 2001 +From: William Cohen +Date: Fri, 5 Feb 2016 17:30:19 -0500 +Subject: [PATCH] Fix FTBFS problem with GCC-6 + +GCC-6 is pickier about some of the type conversions causing the Fedora +24 mass rebuild the build of oprofile failed with: + +make[3]: Entering directory '/builddir/build/BUILD/oprofile-1.1.0/libutil++' +g++ -DHAVE_CONFIG_H -I. -I.. -I ../libutil -I ../libop -I ../libpp -W -Wall -fno-common -ftemplate-depth-50 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -c -o op_bfd.o op_bfd.cpp +op_bfd.cpp: In member function 'void op_bfd::get_symbol_range(symbol_index_t, long long unsigned int&, long long unsigned int&) const': +op_bfd.cpp:538:47: error: cannot convert 'std::ostream {aka std::basic_ostream}' to 'const bool' in initialization + bool const verbose = cverb << (vbfd & vlevel1); + ^ +op_bfd.cpp:546:7: error: in argument to unary ! + if (!verbose) + ^~~~~~~ + +Avoid the intermediate bool type to make GCC-6 happy. + +Signed-off-by: William Cohen +[Backported from upstream] +Signed-off-by: Romain Naour +--- + libutil++/op_bfd.cpp | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/libutil++/op_bfd.cpp b/libutil++/op_bfd.cpp +index 389c920..f2eb42b 100644 +--- a/libutil++/op_bfd.cpp ++++ b/libutil++/op_bfd.cpp +@@ -535,15 +535,13 @@ void op_bfd::get_symbol_range(symbol_index_t sym_idx, + { + op_bfd_symbol const & sym = syms[sym_idx]; + +- bool const verbose = cverb << (vbfd & vlevel1); +- + if (anon_obj) + start = sym.vma(); + else + start = sym.filepos(); + end = start + sym.size(); + +- if (!verbose) ++ if (!(cverb << (vbfd & vlevel1))) + return; + + io_state state(cverb << (vbfd & vlevel1)); +-- +2.5.5 + diff --git a/buildroot/package/oprofile/Config.in b/buildroot/package/oprofile/Config.in new file mode 100644 index 0000000..d99a7e6 --- /dev/null +++ b/buildroot/package/oprofile/Config.in @@ -0,0 +1,49 @@ +# memory barrier function implemented only for some architectures +config BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS + bool + default y + depends on BR2_arceb || BR2_arcle || BR2_arm || BR2_armeb || \ + BR2_aarch64 || BR2_aarch64_be || BR2_i386 || BR2_mips || \ + BR2_mipsel || BR2_mips64 || BR2_mips64el || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sh || \ + BR2_sparc || BR2_sparc64 || BR2_x86_64 + +config BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4 + bool + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + +config BR2_PACKAGE_OPROFILE + bool "oprofile" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # binutils + depends on BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS + # libpfm4 is needed on PowerPC, and requires thread support + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4 + select BR2_PACKAGE_POPT + select BR2_PACKAGE_BINUTILS + select BR2_PACKAGE_LIBPFM4 if BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4 + help + OProfile is a system-wide profiler for Linux systems, + capable of profiling all running code at low overhead. + OProfile is released under the GNU GPL. + + It consists of a kernel driver and a daemon for collecting + sample data, and several post-profiling tools for turning + data into information. + + OProfile leverages the hardware performance counters of the + CPU to enable profiling of a wide variety of interesting + statistics, which can also be used for basic time-spent + profiling. All code is profiled: hardware and software + interrupt handlers, kernel modules, the kernel, shared + libraries, and applications. + +comment "oprofile needs a toolchain w/ C++, wchar" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR + +comment "oprofile needs a toolchain w/ NPTL on PowerPC(64)" + depends on BR2_USE_MMU && BR2_PACKAGE_OPROFILE_NEEDS_LIBPFM4 + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/oprofile/oprofile.hash b/buildroot/package/oprofile/oprofile.hash new file mode 100644 index 0000000..cc15ed1 --- /dev/null +++ b/buildroot/package/oprofile/oprofile.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/oprofile/files/oprofile/oprofile-1.1.0/ +sha1 38c0d8812fe605f6ddd1cd183a482aa7605c0e81 oprofile-1.1.0.tar.gz +md5 248c4c069f9476f427fa7195563f9867 oprofile-1.1.0.tar.gz diff --git a/buildroot/package/oprofile/oprofile.mk b/buildroot/package/oprofile/oprofile.mk new file mode 100644 index 0000000..4e0278e --- /dev/null +++ b/buildroot/package/oprofile/oprofile.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# oprofile +# +################################################################################ + +OPROFILE_VERSION = 1.1.0 +OPROFILE_SITE = http://downloads.sourceforge.net/project/oprofile/oprofile/oprofile-$(OPROFILE_VERSION) +OPROFILE_LICENSE = GPL-2.0+ +OPROFILE_LICENSE_FILES = COPYING +OPROFILE_CONF_OPTS = \ + --disable-account-check \ + --enable-gui=no \ + --with-kernel=$(STAGING_DIR)/usr + +OPROFILE_BINARIES = \ + utils/ophelp pp/opannotate pp/oparchive pp/opgprof \ + pp/opreport opjitconv/opjitconv \ + utils/op-check-perfevents libabi/opimport \ + pe_counting/ocount pe_profiling/operf + +ifeq ($(BR2_i386),y) +OPROFILE_ARCH = i386 +endif +ifeq ($(BR2_mipsel),y) +OPROFILE_ARCH = mips +endif +ifeq ($(BR2_powerpc),y) +OPROFILE_ARCH = ppc +endif +ifeq ($(BR2_x86_64),y) +OPROFILE_ARCH = x86-64 +endif +ifeq ($(OPROFILE_ARCH),) +OPROFILE_ARCH = $(BR2_ARCH) +endif + +OPROFILE_DEPENDENCIES = popt binutils host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBPFM4),y) +OPROFILE_DEPENDENCIES += libpfm4 +endif + +ifeq ($(BR2_STATIC_LIBS),) +define OPROFILE_INSTALL_SHARED_LIBRARY + $(INSTALL) -m 755 $(@D)/libopagent/.libs/*.so* $(TARGET_DIR)/usr/lib/oprofile +endef +endif + +define OPROFILE_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 755 $(TARGET_DIR)/usr/bin + $(INSTALL) -d -m 755 $(TARGET_DIR)/usr/share/oprofile + $(INSTALL) -d -m 755 $(TARGET_DIR)/usr/lib/oprofile + if [ -d $(@D)/events/$(OPROFILE_ARCH) ]; then \ + cp -dpfr $(@D)/events/$(OPROFILE_ARCH) \ + $(TARGET_DIR)/usr/share/oprofile; \ + fi + $(INSTALL) -m 644 $(@D)/libregex/stl.pat $(TARGET_DIR)/usr/share/oprofile + $(INSTALL) -m 755 $(addprefix $(@D)/, $(OPROFILE_BINARIES)) $(TARGET_DIR)/usr/bin + $(OPROFILE_INSTALL_SHARED_LIBRARY) +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/opus-tools/Config.in b/buildroot/package/opus-tools/Config.in new file mode 100644 index 0000000..2552d19 --- /dev/null +++ b/buildroot/package/opus-tools/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_OPUS_TOOLS + bool "opus-tools" + select BR2_PACKAGE_OPUS + select BR2_PACKAGE_LIBOGG + help + Opus codec command line tools. This package provides the + reference implementations of encoder and decoder utilities + for libopus. + + http://opus-codec.org diff --git a/buildroot/package/opus-tools/opus-tools.hash b/buildroot/package/opus-tools/opus-tools.hash new file mode 100644 index 0000000..185c94c --- /dev/null +++ b/buildroot/package/opus-tools/opus-tools.hash @@ -0,0 +1,2 @@ +# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt +sha256 a2357532d19471b70666e0e0ec17d514246d8b3cb2eb168f68bb0f6fd372b28c opus-tools-0.1.10.tar.gz diff --git a/buildroot/package/opus-tools/opus-tools.mk b/buildroot/package/opus-tools/opus-tools.mk new file mode 100644 index 0000000..ab00ced --- /dev/null +++ b/buildroot/package/opus-tools/opus-tools.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# opus-tools +# +################################################################################ + +OPUS_TOOLS_VERSION = 0.1.10 +OPUS_TOOLS_SITE = https://downloads.xiph.org/releases/opus +OPUS_TOOLS_LICENSE = BSD-2-Clause, GPL-2.0 (opusinfo) +OPUS_TOOLS_LICENSE_FILES = COPYING +OPUS_TOOLS_CONF_OPTS = --disable-oggtest --disable-opustest +OPUS_TOOLS_DEPENDENCIES = opus libogg host-pkgconf + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +OPUS_TOOLS_DEPENDENCIES += libpcap +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +OPUS_TOOLS_CONF_OPTS += --enable-sse +else +OPUS_TOOLS_CONF_OPTS += --disable-sse +endif + +ifeq ($(BR2_PACKAGE_FLAC),y) +OPUS_TOOLS_DEPENDENCIES += flac +else +OPUS_TOOLS_CONF_OPTS += --without-flac +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/opus/Config.in b/buildroot/package/opus/Config.in new file mode 100644 index 0000000..22e7a55 --- /dev/null +++ b/buildroot/package/opus/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_OPUS + bool "opus" + help + The Opus codec is designed for interactive speech and audio + transmission over the Internet. It is designed by the IETF + Codec Working Group and incorporates technology from Skype's + SILK codec and Xiph.Org's CELT codec. + + It is intended to suit a wide range of interactive audio + applications, including Voice over IP, videoconferencing, + in-game chat, and even remote live music performances. It + can scale from low bit-rate narrowband speech to very high + quality stereo music. + + http://opus-codec.org + +if BR2_PACKAGE_OPUS + +config BR2_PACKAGE_OPUS_FIXED_POINT + bool "use fixed-point" if !BR2_SOFT_FLOAT + default y if BR2_SOFT_FLOAT + help + Compile without floating point operations (for machines + without a fast enough FPU). + +endif diff --git a/buildroot/package/opus/opus.hash b/buildroot/package/opus/opus.hash new file mode 100644 index 0000000..32fe2e2 --- /dev/null +++ b/buildroot/package/opus/opus.hash @@ -0,0 +1,2 @@ +# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt +sha256 cfafd339ccd9c5ef8d6ab15d7e1a412c054bf4cb4ecbbbcc78c12ef2def70732 opus-1.2.1.tar.gz diff --git a/buildroot/package/opus/opus.mk b/buildroot/package/opus/opus.mk new file mode 100644 index 0000000..44de5db --- /dev/null +++ b/buildroot/package/opus/opus.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# opus +# +################################################################################ + +OPUS_VERSION = 1.2.1 +OPUS_SITE = https://downloads.xiph.org/releases/opus +OPUS_LICENSE = BSD-3-Clause +OPUS_LICENSE_FILES = COPYING +OPUS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_OPUS_FIXED_POINT),y) +OPUS_CONF_OPTS += --enable-fixed-point +endif + +# When we're on ARM, but we don't have ARM instructions (only +# Thumb-2), disable the usage of assembly as it is not Thumb-ready. +ifeq ($(BR2_arm)$(BR2_armeb):$(BR2_ARM_CPU_HAS_ARM),y:) +OPUS_CONF_OPTS += --disable-asm +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/opusfile/Config.in b/buildroot/package/opusfile/Config.in new file mode 100644 index 0000000..63e0786 --- /dev/null +++ b/buildroot/package/opusfile/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_OPUSFILE + bool "opusfile" + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_OPUS + help + A convenient high-level API for decoding and basic + manipulation of all Ogg Opus audio streams. + + http://opus-codec.org diff --git a/buildroot/package/opusfile/opusfile.hash b/buildroot/package/opusfile/opusfile.hash new file mode 100644 index 0000000..528ded2 --- /dev/null +++ b/buildroot/package/opusfile/opusfile.hash @@ -0,0 +1,2 @@ +# From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt +sha256 f75fb500e40b122775ac1a71ad80c4477698842a8fe9da4a1b4a1a9f16e4e979 opusfile-0.9.tar.gz diff --git a/buildroot/package/opusfile/opusfile.mk b/buildroot/package/opusfile/opusfile.mk new file mode 100644 index 0000000..28d4368 --- /dev/null +++ b/buildroot/package/opusfile/opusfile.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# opusfile +# +################################################################################ + +OPUSFILE_VERSION = 0.9 +OPUSFILE_SITE = https://downloads.xiph.org/releases/opus +OPUSFILE_DEPENDENCIES = host-pkgconf libogg opus +OPUSFILE_LICENSE = BSD-3-Clause +OPUSFILE_LICENSE_FILES = COPYING +OPUSFILE_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +OPUSFILE_DEPENDENCIES += libopenssl +else +OPUSFILE_CONF_OPTS += --disable-http +endif + +# Use the same as opus package since it's a dep and we can't mix +ifeq ($(BR2_PACKAGE_OPUS_FIXED_POINT),y) +OPUSFILE_CONF_OPTS += --enable-fixed-point +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/oracle-mysql/0000-ac_cache_check.patch b/buildroot/package/oracle-mysql/0000-ac_cache_check.patch new file mode 100644 index 0000000..c3b55ba --- /dev/null +++ b/buildroot/package/oracle-mysql/0000-ac_cache_check.patch @@ -0,0 +1,156 @@ +Patch borrowed from +http://code.google.com/p/minimyth/source/browse/trunk/gar-minimyth/script/db/mysql/files/mysql-5.1.47-ac_cache_check.patch?r=6493. + +It allows to override through ac_cv_* variables various checks that +cannot be performed when cross-compiling. + +Signed-off-by: Thomas Petazzoni + +--- + storage/innodb_plugin/plug.in | 59 ++++++++++++++++++++++++++++-------------- + 1 file changed, 40 insertions(+), 19 deletions(-) + +Index: mysql-5.1.53/storage/innodb_plugin/plug.in +=================================================================== +--- mysql-5.1.53.orig/storage/innodb_plugin/plug.in ++++ mysql-5.1.53/storage/innodb_plugin/plug.in +@@ -53,9 +53,10 @@ + esac + AC_SUBST(INNODB_DYNAMIC_CFLAGS) + +- AC_MSG_CHECKING(whether GCC atomic builtins are available) ++ AC_CACHE_CHECK([whether GCC atomic builtins are available], ++ [ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS], + # either define HAVE_IB_GCC_ATOMIC_BUILTINS or not +- AC_TRY_RUN( ++ [AC_TRY_RUN( + [ + int main() + { +@@ -95,18 +96,23 @@ + } + ], + [ +- AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1], +- [GCC atomic builtins are available]) + AC_MSG_RESULT(yes) ++ ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes + ], + [ + AC_MSG_RESULT(no) ++ ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=no + ] +- ) ++ )]) ++ if test "x$ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS"= "xyes" ; then ++ AC_DEFINE([HAVE_IB_GCC_ATOMIC_BUILTINS], [1], ++ [GCC atomic builtins are available]) ++ fi + +- AC_MSG_CHECKING(whether pthread_t can be used by GCC atomic builtins) ++ AC_CACHE_CHECK([whether pthread_t can be used by GCC atomic builtins], ++ [ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC], + # either define HAVE_IB_ATOMIC_PTHREAD_T_GCC or not +- AC_TRY_RUN( ++ [AC_TRY_RUN( + [ + #include + #include +@@ -126,14 +132,18 @@ + } + ], + [ +- AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1], +- [pthread_t can be used by GCC atomic builtins]) + AC_MSG_RESULT(yes) ++ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes + ], + [ + AC_MSG_RESULT(no) ++ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=no + ] +- ) ++ )]) ++ if test "x$ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC"= "xyes" ; then ++ AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_GCC], [1], ++ [pthread_t can be used by GCC atomic builtins]) ++ fi + + AC_MSG_CHECKING(whether Solaris libc atomic functions are available) + # either define HAVE_IB_SOLARIS_ATOMICS or not +@@ -148,9 +158,10 @@ + are available]) + ) + +- AC_MSG_CHECKING(whether pthread_t can be used by Solaris libc atomic functions) ++ AC_CACHE_CHECK([whether pthread_t can be used by Solaris libc atomic functions], ++ [ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], + # either define HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS or not +- AC_TRY_RUN( ++ [AC_TRY_RUN( + [ + #include + #include +@@ -181,28 +192,33 @@ + } + ], + [ +- AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1], +- [pthread_t can be used by solaris atomics]) + AC_MSG_RESULT(yes) ++ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=yes + ], + [ + AC_MSG_RESULT(no) ++ ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no + ] +- ) ++ )]) ++ if test "x$ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS"= "xyes" ; then ++ AC_DEFINE([HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS], [1], ++ [pthread_t can be used by solaris atomics]) ++ fi + + # this is needed to know which one of atomic_cas_32() or atomic_cas_64() + # to use in the source + AC_CHECK_SIZEOF([pthread_t], [], [#include ]) + + # Check for x86 PAUSE instruction +- AC_MSG_CHECKING(for x86 PAUSE instruction) ++ AC_CACHE_CHECK([for x86 PAUSE instruction], ++ [ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION], + # We have to actually try running the test program, because of a bug + # in Solaris on x86_64, where it wrongly reports that PAUSE is not + # supported when trying to run an application. See + # http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=6478684 + # We use ib_ prefix to avoid collisoins if this code is added to + # mysql's configure.in. +- AC_TRY_RUN( ++ [AC_TRY_RUN( + [ + int main() { + __asm__ __volatile__ ("pause"); +@@ -210,16 +226,21 @@ + } + ], + [ +- AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist]) + AC_MSG_RESULT(yes) ++ ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=yes + ], + [ + AC_MSG_RESULT(no) ++ ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=no + ], + [ + AC_MSG_RESULT(no) ++ ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION=no + ] +- ) ++ )]) ++ if test "x$ac_cv_have_decl_HAVE_IB_PAUSE_INSTRUCTION"= "xyes" ; then ++ AC_DEFINE([HAVE_IB_PAUSE_INSTRUCTION], [1], [Does x86 PAUSE instruction exist]) ++ fi + ]) + + # vim: set ft=config: diff --git a/buildroot/package/oracle-mysql/0001-configure-ps-cache-check.patch b/buildroot/package/oracle-mysql/0001-configure-ps-cache-check.patch new file mode 100644 index 0000000..336e80e --- /dev/null +++ b/buildroot/package/oracle-mysql/0001-configure-ps-cache-check.patch @@ -0,0 +1,39 @@ +Patch borrowed from +http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/mysql/files/configure-ps-cache-check.patch + +It allows to specify through ac_cv_FIND_PROC how ps should be used on +the target to find the PID of a program. + +Signed-off-by: Thomas Petazzoni + +--- + configure.in | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +Index: mysql-5.1.53/configure.in +=================================================================== +--- mysql-5.1.53.orig/configure.in ++++ mysql-5.1.53/configure.in +@@ -462,8 +462,8 @@ + # then Make, then shell. The autoconf substitution uses single quotes, so + # no unprotected single quotes should appear in the expression. + AC_PATH_PROG(PS, ps, ps) +-AC_MSG_CHECKING("how to check if pid exists") +-PS=$ac_cv_path_PS ++AC_CACHE_CHECK([how to check if pid exists], [ac_cv_FIND_PROC], ++[ + # Linux style + if $PS wwwp $$ 2> /dev/null | grep -- "$0" > /dev/null + then +@@ -502,8 +502,9 @@ + AC_MSG_ERROR([Could not find the right ps and/or grep switches. Which OS is this? See the Installation chapter in the Reference Manual.]) + esac + fi +-AC_SUBST(FIND_PROC) +-AC_MSG_RESULT("$FIND_PROC") ++ac_cv_FIND_PROC="$FIND_PROC" ++]) ++AC_SUBST([FIND_PROC], [$ac_cv_FIND_PROC]) + + # Check if a pid is valid + AC_PATH_PROG(KILL, kill, kill) diff --git a/buildroot/package/oracle-mysql/0002-use-new-readline-iface.patch b/buildroot/package/oracle-mysql/0002-use-new-readline-iface.patch new file mode 100644 index 0000000..c590656 --- /dev/null +++ b/buildroot/package/oracle-mysql/0002-use-new-readline-iface.patch @@ -0,0 +1,21 @@ +Tell MySQL to use the new readline interface even when an external +readline is being used. + +Signed-off-by: Thomas Petazzoni + +--- + configure.in | 1 + + 1 file changed, 1 insertion(+) + +Index: mysql-5.1.53/configure.in +=================================================================== +--- mysql-5.1.53.orig/configure.in ++++ mysql-5.1.53/configure.in +@@ -2689,6 +2689,7 @@ + # this way we avoid linking commercial source with GPL readline + readline_link="-lreadline" + want_to_use_readline="yes" ++ AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1) + elif [test "$mysql_cv_libedit_interface" = "yes"] + then + # Use libedit diff --git a/buildroot/package/oracle-mysql/0003-ac_stack_direction-is-unset.patch b/buildroot/package/oracle-mysql/0003-ac_stack_direction-is-unset.patch new file mode 100644 index 0000000..6fef0a9 --- /dev/null +++ b/buildroot/package/oracle-mysql/0003-ac_stack_direction-is-unset.patch @@ -0,0 +1,15 @@ +misc.m4: ac_cv_c_stack_direction is unset. + +Signed-off-by: Marcelo Gutierrez (UTN/FRH) + +--- mysql-5.1.70.orig/config/ac-macros/misc.m4 ++++ mysql-5.1.70/config/ac-macros/misc.m4 +@@ -477,7 +477,7 @@ + exit(ptr_f(&a) < 0); + } + ], ac_cv_c_stack_direction=1, ac_cv_c_stack_direction=-1, +- ac_cv_c_stack_direction=)]) ++ ac_cv_c_stack_direction=0)]) + AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) + ])dnl + diff --git a/buildroot/package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch b/buildroot/package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch new file mode 100644 index 0000000..b91ed4f --- /dev/null +++ b/buildroot/package/oracle-mysql/0004-Fix-gen_lex_hash-execution.patch @@ -0,0 +1,32 @@ +Makefile: fix cross-compiling the server + +MySQL Makefile believes it can run code it just compiled, to +generate a header. This does not work for cross-compilation. + +Instead, use a pre-installed host-version of the required tool. + +Signed-off-by: Marcelo Gutierrez (UTN/FRH) + +--- mysql-5.1.70/sql/Makefile.am ++++ mysql-5.1.70.patch/sql/Makefile.am +@@ -177,7 +177,7 @@ + # this avoid the rebuild of the built files in a source dist + lex_hash.h: gen_lex_hash.cc lex.h + $(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT) +- ./gen_lex_hash$(EXEEXT) > $@-t ++ gen_lex_hash$(EXEEXT) > $@-t + $(MV) $@-t $@ + + # For testing of udf_example.so + +--- mysql-5.1.70/sql/Makefile.in ++++ mysql-5.1.70.patch/sql/Makefile.in +@@ -1310,7 +1310,7 @@ + # this avoid the rebuild of the built files in a source dist + lex_hash.h: gen_lex_hash.cc lex.h + $(MAKE) $(AM_MAKEFLAGS) gen_lex_hash$(EXEEXT) +- ./gen_lex_hash$(EXEEXT) > $@-t ++ gen_lex_hash$(EXEEXT) > $@-t + $(MV) $@-t $@ + + # We might have some stuff not built in this build, but that we want to install diff --git a/buildroot/package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch b/buildroot/package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch new file mode 100644 index 0000000..918fe24 --- /dev/null +++ b/buildroot/package/oracle-mysql/0005-bison_3_breaks_mysql_server_build.patch @@ -0,0 +1,3310 @@ +fix the yacc code in mysql + +Signed-off-by: Marcelo Gutierrez (UTN/FRH) +--- +diff -uNr mysql-5.1.73.orig/sql/sql_lex.cc mysql-5.1.73/sql/sql_lex.cc +--- mysql-5.1.73.orig/sql/sql_lex.cc 2013-11-04 18:52:27.000000000 +0000 ++++ mysql-5.1.73/sql/sql_lex.cc 2014-02-12 14:12:04.244111625 +0000 +@@ -775,14 +775,13 @@ + (which can't be followed by a signed number) + */ + +-int MYSQLlex(void *arg, void *yythd) ++int MYSQLlex(void *arg, THD *thd) + { + reg1 uchar c= 0; + bool comment_closed; + int tokval, result_state; + uint length; + enum my_lex_states state; +- THD *thd= (THD *)yythd; + Lex_input_stream *lip= & thd->m_parser_state->m_lip; + LEX *lex= thd->lex; + YYSTYPE *yylval=(YYSTYPE*) arg; +diff -uNr mysql-5.1.73.orig/sql/sql_lex.h mysql-5.1.73/sql/sql_lex.h +--- mysql-5.1.73.orig/sql/sql_lex.h 2013-11-04 18:52:27.000000000 +0000 ++++ mysql-5.1.73/sql/sql_lex.h 2014-02-12 14:17:19.424106423 +0000 +@@ -2072,7 +2072,7 @@ + extern void lex_free(void); + extern void lex_start(THD *thd); + extern void lex_end(LEX *lex); +-extern int MYSQLlex(void *arg, void *yythd); ++extern int MYSQLlex(void *arg, THD *thd); + + extern void trim_whitespace(CHARSET_INFO *cs, LEX_STRING *str); + +diff -uNr mysql-5.1.73.orig/sql/sql_parse.cc mysql-5.1.73/sql/sql_parse.cc +--- mysql-5.1.73.orig/sql/sql_parse.cc 2013-11-04 18:52:27.000000000 +0000 ++++ mysql-5.1.73/sql/sql_parse.cc 2014-02-12 14:19:20.424104427 +0000 +@@ -8012,7 +8012,7 @@ + } + + +-extern int MYSQLparse(void *thd); // from sql_yacc.cc ++extern int MYSQLparse(THD *thd); // from sql_yacc.cc + + + /** +diff -uNr mysql-5.1.73.orig/sql/sql_yacc.yy mysql-5.1.73/sql/sql_yacc.yy +--- mysql-5.1.73.orig/sql/sql_yacc.yy 2013-11-04 18:52:27.000000000 +0000 ++++ mysql-5.1.73/sql/sql_yacc.yy 2014-02-12 20:17:06.707750140 +0000 +@@ -23,19 +23,13 @@ + */ + + %{ +-/* thd is passed as an argument to yyparse(), and subsequently to yylex(). +-** The type will be void*, so it must be cast to (THD*) when used. +-** Use the YYTHD macro for this. +-*/ +-#define YYPARSE_PARAM yythd +-#define YYLEX_PARAM yythd +-#define YYTHD ((THD *)yythd) +-#define YYLIP (& YYTHD->m_parser_state->m_lip) ++ ++#define YYLIP (& thd->m_parser_state->m_lip) + + #define MYSQL_YACC + #define YYINITDEPTH 100 + #define YYMAXDEPTH 3200 /* Because of 64K stack */ +-#define Lex (YYTHD->lex) ++#define Lex (thd->lex) + #define Select Lex->current_select + #include "mysql_priv.h" + #include "slave.h" +@@ -55,7 +49,7 @@ + #pragma warning (disable : 4065) + #endif + +-int yylex(void *yylval, void *yythd); ++int yylex(void *yylval, THD *thd); + + const LEX_STRING null_lex_str= {0,0}; + +@@ -64,7 +58,7 @@ + ulong val= *(F); \ + if (my_yyoverflow((B), (D), &val)) \ + { \ +- yyerror((char*) (A)); \ ++ yyerror(current_thd, (char*) (A)); \ + return 2; \ + } \ + else \ +@@ -76,7 +70,7 @@ + #define MYSQL_YYABORT \ + do \ + { \ +- LEX::cleanup_lex_after_parse_error(YYTHD);\ ++ LEX::cleanup_lex_after_parse_error(thd);\ + YYABORT; \ + } while (0) + +@@ -159,9 +153,8 @@ + to abort from the parser. + */ + +-void MYSQLerror(const char *s) ++void MYSQLerror(THD *thd, const char *s) + { +- THD *thd= current_thd; + + /* + Restore the original LEX if it was replaced when parsing +@@ -675,7 +668,10 @@ + bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); + %} + +-%pure_parser /* We have threads */ ++/* We have threads */ ++%define api.pure ++%parse-param { THD *thd } ++%lex-param { THD *thd } + /* + Currently there are 169 shift/reduce conflicts. + We should not introduce new conflicts any more. +@@ -1516,7 +1512,6 @@ + query: + END_OF_INPUT + { +- THD *thd= YYTHD; + if (!thd->bootstrap && + (!(thd->lex->select_lex.options & OPTION_FOUND_COMMENT))) + { +@@ -1530,7 +1525,7 @@ + { + Lex_input_stream *lip = YYLIP; + +- if ((YYTHD->client_capabilities & CLIENT_MULTI_QUERIES) && ++ if ((thd->client_capabilities & CLIENT_MULTI_QUERIES) && + ! lip->stmt_prepare_mode && + ! lip->eof()) + { +@@ -1626,7 +1621,6 @@ + deallocate: + deallocate_or_drop PREPARE_SYM ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + lex->sql_command= SQLCOM_DEALLOCATE_PREPARE; + lex->prepared_stmt_name= $3; +@@ -1641,7 +1635,6 @@ + prepare: + PREPARE_SYM ident FROM prepare_src + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + lex->sql_command= SQLCOM_PREPARE; + lex->prepared_stmt_name= $2; +@@ -1651,14 +1644,12 @@ + prepare_src: + TEXT_STRING_sys + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + lex->prepared_stmt_code= $1; + lex->prepared_stmt_code_is_varref= FALSE; + } + | '@' ident_or_text + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + lex->prepared_stmt_code= $2; + lex->prepared_stmt_code_is_varref= TRUE; +@@ -1668,7 +1659,6 @@ + execute: + EXECUTE_SYM ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + lex->sql_command= SQLCOM_EXECUTE; + lex->prepared_stmt_name= $2; +@@ -1826,7 +1816,6 @@ + create: + CREATE opt_table_options TABLE_SYM opt_if_not_exists table_ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + lex->sql_command= SQLCOM_CREATE_TABLE; + if (!lex->select_lex.add_table_to_list(thd, $5, NULL, +@@ -1844,13 +1833,13 @@ + } + create2 + { +- LEX *lex= YYTHD->lex; ++ LEX *lex= thd->lex; + lex->current_select= &lex->select_lex; + if ((lex->create_info.used_fields & HA_CREATE_USED_ENGINE) && + !lex->create_info.db_type) + { +- lex->create_info.db_type= ha_default_handlerton(YYTHD); +- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN, ++ lex->create_info.db_type= ha_default_handlerton(thd); ++ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_WARN_USING_OTHER_HANDLER, + ER(ER_WARN_USING_OTHER_HANDLER), + ha_resolve_storage_engine_name(lex->create_info.db_type), +@@ -1979,7 +1968,7 @@ + event_tail: + remember_name EVENT_SYM opt_if_not_exists sp_name + { +- THD *thd= YYTHD; ++ THD *thd= thd; + LEX *lex=Lex; + + lex->stmt_definition_begin= $1; +@@ -2046,7 +2035,7 @@ + ev_starts: + /* empty */ + { +- Item *item= new (YYTHD->mem_root) Item_func_now_local(); ++ Item *item= new (thd->mem_root) Item_func_now_local(); + if (item == NULL) + MYSQL_YYABORT; + Lex->event_parse_data->item_starts= item; +@@ -2096,7 +2085,6 @@ + + ev_sql_stmt: + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Lex_input_stream *lip= YYLIP; + +@@ -2139,7 +2127,6 @@ + } + ev_sql_stmt_inner + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + + /* return back to the original memory root ASAP */ +@@ -2198,11 +2185,10 @@ + $$= new sp_name($1, $3, true); + if ($$ == NULL) + MYSQL_YYABORT; +- $$->init_qname(YYTHD); ++ $$->init_qname(thd); + } + | ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + LEX_STRING db; + if (check_routine_name(&$1)) +@@ -2272,7 +2258,7 @@ + lex->sql_command= SQLCOM_CALL; + lex->spname= $2; + lex->value_list.empty(); +- sp_add_used_routine(lex, YYTHD, $2, TYPE_ENUM_PROCEDURE); ++ sp_add_used_routine(lex, thd, $2, TYPE_ENUM_PROCEDURE); + } + opt_sp_cparam_list {} + ; +@@ -2345,7 +2331,7 @@ + (enum enum_field_types)$3, + sp_param_in); + +- if (lex->sphead->fill_field_definition(YYTHD, lex, ++ if (lex->sphead->fill_field_definition(thd, lex, + (enum enum_field_types) $3, + &spvar->field_def)) + { +@@ -2382,7 +2368,7 @@ + (enum enum_field_types)$4, + (sp_param_mode_t)$1); + +- if (lex->sphead->fill_field_definition(YYTHD, lex, ++ if (lex->sphead->fill_field_definition(thd, lex, + (enum enum_field_types) $4, + &spvar->field_def)) + { +@@ -2445,13 +2431,12 @@ + { + LEX *lex= Lex; + +- lex->sphead->reset_lex(YYTHD); ++ lex->sphead->reset_lex(thd); + lex->spcont->declare_var_boundary($2); + } + type + sp_opt_default + { +- THD *thd= YYTHD; + LEX *lex= Lex; + sp_pcontext *pctx= lex->spcont; + uint num_vars= pctx->context_var_count(); +@@ -2477,7 +2462,7 @@ + spvar->type= var_type; + spvar->dflt= dflt_value_item; + +- if (lex->sphead->fill_field_definition(YYTHD, lex, var_type, ++ if (lex->sphead->fill_field_definition(thd, lex, var_type, + &spvar->field_def)) + { + MYSQL_YYABORT; +@@ -2501,7 +2486,7 @@ + } + + pctx->declare_var_boundary(0); +- if (lex->sphead->restore_lex(YYTHD)) ++ if (lex->sphead->restore_lex(thd)) + MYSQL_YYABORT; + $$.vars= $2; + $$.conds= $$.hndlrs= $$.curs= 0; +@@ -2516,7 +2501,7 @@ + my_error(ER_SP_DUP_COND, MYF(0), $2.str); + MYSQL_YYABORT; + } +- if(YYTHD->lex->spcont->push_cond(&$2, $5)) ++ if(thd->lex->spcont->push_cond(&$2, $5)) + MYSQL_YYABORT; + $$.vars= $$.hndlrs= $$.curs= 0; + $$.conds= 1; +@@ -2602,7 +2587,7 @@ + + sp_cursor_stmt: + { +- Lex->sphead->reset_lex(YYTHD); ++ Lex->sphead->reset_lex(thd); + } + select + { +@@ -2618,7 +2603,7 @@ + } + lex->sp_lex_in_use= TRUE; + $$= lex; +- if (lex->sphead->restore_lex(YYTHD)) ++ if (lex->sphead->restore_lex(thd)) + MYSQL_YYABORT; + } + ; +@@ -2662,7 +2647,7 @@ + sp_cond: + ulong_num + { /* mysql errno */ +- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); ++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + MYSQL_YYABORT; + $$->type= sp_cond_type_t::number; +@@ -2675,7 +2660,7 @@ + my_error(ER_SP_BAD_SQLSTATE, MYF(0), $3.str); + MYSQL_YYABORT; + } +- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); ++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + MYSQL_YYABORT; + $$->type= sp_cond_type_t::state; +@@ -2705,21 +2690,21 @@ + } + | SQLWARNING_SYM /* SQLSTATEs 01??? */ + { +- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); ++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + MYSQL_YYABORT; + $$->type= sp_cond_type_t::warning; + } + | not FOUND_SYM /* SQLSTATEs 02??? */ + { +- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); ++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + MYSQL_YYABORT; + $$->type= sp_cond_type_t::notfound; + } + | SQLEXCEPTION_SYM /* All other SQLSTATEs */ + { +- $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); ++ $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + MYSQL_YYABORT; + $$->type= sp_cond_type_t::exception; +@@ -2789,7 +2774,6 @@ + + sp_proc_stmt_statement: + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Lex_input_stream *lip= YYLIP; + +@@ -2798,7 +2782,6 @@ + } + statement + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Lex_input_stream *lip= YYLIP; + sp_head *sp= lex->sphead; +@@ -2845,7 +2828,7 @@ + + sp_proc_stmt_return: + RETURN_SYM +- { Lex->sphead->reset_lex(YYTHD); } ++ { Lex->sphead->reset_lex(thd); } + expr + { + LEX *lex= Lex; +@@ -2867,7 +2850,7 @@ + MYSQL_YYABORT; + sp->m_flags|= sp_head::HAS_RETURN; + } +- if (sp->restore_lex(YYTHD)) ++ if (sp->restore_lex(thd)) + MYSQL_YYABORT; + } + ; +@@ -3094,7 +3077,7 @@ + ; + + sp_if: +- { Lex->sphead->reset_lex(YYTHD); } ++ { Lex->sphead->reset_lex(thd); } + expr THEN_SYM + { + LEX *lex= Lex; +@@ -3108,7 +3091,7 @@ + sp->add_cont_backpatch(i) || + sp->add_instr(i)) + MYSQL_YYABORT; +- if (sp->restore_lex(YYTHD)) ++ if (sp->restore_lex(thd)) + MYSQL_YYABORT; + } + sp_proc_stmts1 +@@ -3147,7 +3130,7 @@ + { + LEX *lex= Lex; + case_stmt_action_case(lex); +- lex->sphead->reset_lex(YYTHD); /* For expr $3 */ ++ lex->sphead->reset_lex(thd); /* For expr $3 */ + } + expr + { +@@ -3156,7 +3139,7 @@ + MYSQL_YYABORT; + + /* For expr $3 */ +- if (lex->sphead->restore_lex(YYTHD)) ++ if (lex->sphead->restore_lex(thd)) + MYSQL_YYABORT; + } + simple_when_clause_list +@@ -3198,7 +3181,7 @@ + simple_when_clause: + WHEN_SYM + { +- Lex->sphead->reset_lex(YYTHD); /* For expr $3 */ ++ Lex->sphead->reset_lex(thd); /* For expr $3 */ + } + expr + { +@@ -3208,7 +3191,7 @@ + if (case_stmt_action_when(lex, $3, true)) + MYSQL_YYABORT; + /* For expr $3 */ +- if (lex->sphead->restore_lex(YYTHD)) ++ if (lex->sphead->restore_lex(thd)) + MYSQL_YYABORT; + } + THEN_SYM +@@ -3223,7 +3206,7 @@ + searched_when_clause: + WHEN_SYM + { +- Lex->sphead->reset_lex(YYTHD); /* For expr $3 */ ++ Lex->sphead->reset_lex(thd); /* For expr $3 */ + } + expr + { +@@ -3231,7 +3214,7 @@ + if (case_stmt_action_when(lex, $3, false)) + MYSQL_YYABORT; + /* For expr $3 */ +- if (lex->sphead->restore_lex(YYTHD)) ++ if (lex->sphead->restore_lex(thd)) + MYSQL_YYABORT; + } + THEN_SYM +@@ -3395,7 +3378,7 @@ + MYSQL_YYABORT; + } + | WHILE_SYM +- { Lex->sphead->reset_lex(YYTHD); } ++ { Lex->sphead->reset_lex(thd); } + expr DO_SYM + { + LEX *lex= Lex; +@@ -3409,7 +3392,7 @@ + sp->new_cont_backpatch(i) || + sp->add_instr(i)) + MYSQL_YYABORT; +- if (sp->restore_lex(YYTHD)) ++ if (sp->restore_lex(thd)) + MYSQL_YYABORT; + } + sp_proc_stmts1 END WHILE_SYM +@@ -3424,7 +3407,7 @@ + lex->sphead->do_cont_backpatch(); + } + | REPEAT_SYM sp_proc_stmts1 UNTIL_SYM +- { Lex->sphead->reset_lex(YYTHD); } ++ { Lex->sphead->reset_lex(thd); } + expr END REPEAT_SYM + { + LEX *lex= Lex; +@@ -3436,7 +3419,7 @@ + if (i == NULL || + lex->sphead->add_instr(i)) + MYSQL_YYABORT; +- if (lex->sphead->restore_lex(YYTHD)) ++ if (lex->sphead->restore_lex(thd)) + MYSQL_YYABORT; + /* We can shortcut the cont_backpatch here */ + i->m_cont_dest= ip+1; +@@ -3859,7 +3842,6 @@ + create3 {} + | LIKE table_ident + { +- THD *thd= YYTHD; + TABLE_LIST *src_table; + LEX *lex= thd->lex; + +@@ -3873,7 +3855,6 @@ + } + | '(' LIKE table_ident ')' + { +- THD *thd= YYTHD; + TABLE_LIST *src_table; + LEX *lex= thd->lex; + +@@ -4342,7 +4323,6 @@ + bit_expr + { + Item *part_expr= $1; +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Name_resolution_context *context= &lex->current_select->context; + TABLE_LIST *save_list= context->table_list; +@@ -4364,7 +4344,7 @@ + my_error(ER_PARTITION_FUNCTION_IS_NOT_ALLOWED, MYF(0)); + MYSQL_YYABORT; + } +- if (part_expr->fix_fields(YYTHD, (Item**)0) || ++ if (part_expr->fix_fields(thd, (Item**)0) || + ((context->table_list= save_list), FALSE) || + (!part_expr->const_item()) || + (!lex->safe_to_cache_query)) +@@ -4629,7 +4609,7 @@ + | TYPE_SYM opt_equal storage_engines + { + Lex->create_info.db_type= $3; +- WARN_DEPRECATED(yythd, "6.0", "TYPE=storage_engine", ++ WARN_DEPRECATED(thd, "6.0", "TYPE=storage_engine", + "'ENGINE=storage_engine'"); + Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE; + } +@@ -4791,19 +4771,19 @@ + storage_engines: + ident_or_text + { +- plugin_ref plugin= ha_resolve_by_name(YYTHD, &$1); ++ plugin_ref plugin= ha_resolve_by_name(thd, &$1); + + if (plugin) + $$= plugin_data(plugin, handlerton*); + else + { +- if (YYTHD->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION) ++ if (thd->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION) + { + my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), $1.str); + MYSQL_YYABORT; + } + $$= 0; +- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN, ++ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_UNKNOWN_STORAGE_ENGINE, + ER(ER_UNKNOWN_STORAGE_ENGINE), + $1.str); +@@ -4815,7 +4795,7 @@ + ident_or_text + { + plugin_ref plugin; +- if ((plugin= ha_resolve_by_name(YYTHD, &$1))) ++ if ((plugin= ha_resolve_by_name(thd, &$1))) + $$= plugin_data(plugin, handlerton*); + else + { +@@ -5043,7 +5023,7 @@ + { + char buff[sizeof("YEAR()") + MY_INT64_NUM_DECIMAL_DIGITS + 1]; + my_snprintf(buff, sizeof(buff), "YEAR(%lu)", length); +- push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_NOTE, ++ push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, + ER_WARN_DEPRECATED_SYNTAX, + ER(ER_WARN_DEPRECATED_SYNTAX), + buff, "YEAR(4)"); +@@ -5057,7 +5037,7 @@ + { $$=MYSQL_TYPE_TIME; } + | TIMESTAMP opt_field_length + { +- if (YYTHD->variables.sql_mode & MODE_MAXDB) ++ if (thd->variables.sql_mode & MODE_MAXDB) + $$=MYSQL_TYPE_DATETIME; + else + { +@@ -5189,7 +5169,7 @@ + real_type: + REAL + { +- $$= YYTHD->variables.sql_mode & MODE_REAL_AS_FLOAT ? ++ $$= thd->variables.sql_mode & MODE_REAL_AS_FLOAT ? + MYSQL_TYPE_FLOAT : MYSQL_TYPE_DOUBLE; + } + | DOUBLE_SYM +@@ -5263,7 +5243,7 @@ + | DEFAULT now_or_signed_literal { Lex->default_value=$2; } + | ON UPDATE_SYM NOW_SYM optional_braces + { +- Item *item= new (YYTHD->mem_root) Item_func_now_local(); ++ Item *item= new (thd->mem_root) Item_func_now_local(); + if (item == NULL) + MYSQL_YYABORT; + Lex->on_update_value= item; +@@ -5312,7 +5292,7 @@ + now_or_signed_literal: + NOW_SYM optional_braces + { +- $$= new (YYTHD->mem_root) Item_func_now_local(); ++ $$= new (thd->mem_root) Item_func_now_local(); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -5673,7 +5653,6 @@ + alter: + ALTER opt_ignore TABLE_SYM table_ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + lex->name.str= 0; + lex->name.length= 0; +@@ -5799,7 +5778,7 @@ + Event_parse_data. + */ + +- if (!(Lex->event_parse_data= Event_parse_data::new_instance(YYTHD))) ++ if (!(Lex->event_parse_data= Event_parse_data::new_instance(thd))) + MYSQL_YYABORT; + Lex->event_parse_data->identifier= $4; + +@@ -6192,7 +6171,6 @@ + { + if (!$4) + { +- THD *thd= YYTHD; + $4= thd->variables.collation_database; + } + $5= $5 ? $5 : $4; +@@ -6556,7 +6534,7 @@ + assign_to_keycache: + table_ident cache_keys_spec + { +- if (!Select->add_table_to_list(YYTHD, $1, NULL, 0, TL_READ, ++ if (!Select->add_table_to_list(thd, $1, NULL, 0, TL_READ, + Select->pop_index_hints())) + MYSQL_YYABORT; + } +@@ -6585,7 +6563,7 @@ + preload_keys: + table_ident cache_keys_spec opt_ignore_leaves + { +- if (!Select->add_table_to_list(YYTHD, $1, NULL, $3, TL_READ, ++ if (!Select->add_table_to_list(thd, $1, NULL, $3, TL_READ, + Select->pop_index_hints())) + MYSQL_YYABORT; + } +@@ -6593,7 +6571,7 @@ + + cache_keys_spec: + { +- Lex->select_lex.alloc_index_hints(YYTHD); ++ Lex->select_lex.alloc_index_hints(thd); + Select->set_index_hint_type(INDEX_HINT_USE, + global_system_variables.old_mode ? + INDEX_HINT_MASK_JOIN : +@@ -6813,7 +6791,6 @@ + | select_item + | '*' + { +- THD *thd= YYTHD; + Item *item= new (thd->mem_root) + Item_field(&thd->lex->current_select->context, + NULL, NULL, "*"); +@@ -6828,7 +6805,6 @@ + select_item: + remember_name select_item2 remember_end select_alias + { +- THD *thd= YYTHD; + DBUG_ASSERT($1 < $3); + + if (add_item_to_list(thd, $2)) +@@ -6929,7 +6905,7 @@ + else + { + /* X OR Y */ +- $$ = new (YYTHD->mem_root) Item_cond_or($1, $3); ++ $$ = new (thd->mem_root) Item_cond_or($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -6937,7 +6913,7 @@ + | expr XOR expr %prec XOR + { + /* XOR is a proprietary extension */ +- $$ = new (YYTHD->mem_root) Item_cond_xor($1, $3); ++ $$ = new (thd->mem_root) Item_cond_xor($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -6979,50 +6955,50 @@ + else + { + /* X AND Y */ +- $$ = new (YYTHD->mem_root) Item_cond_and($1, $3); ++ $$ = new (thd->mem_root) Item_cond_and($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; + } + } + | NOT_SYM expr %prec NOT_SYM + { +- $$= negate_expression(YYTHD, $2); ++ $$= negate_expression(thd, $2); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bool_pri IS TRUE_SYM %prec IS + { +- $$= new (YYTHD->mem_root) Item_func_istrue($1); ++ $$= new (thd->mem_root) Item_func_istrue($1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bool_pri IS not TRUE_SYM %prec IS + { +- $$= new (YYTHD->mem_root) Item_func_isnottrue($1); ++ $$= new (thd->mem_root) Item_func_isnottrue($1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bool_pri IS FALSE_SYM %prec IS + { +- $$= new (YYTHD->mem_root) Item_func_isfalse($1); ++ $$= new (thd->mem_root) Item_func_isfalse($1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bool_pri IS not FALSE_SYM %prec IS + { +- $$= new (YYTHD->mem_root) Item_func_isnotfalse($1); ++ $$= new (thd->mem_root) Item_func_isnotfalse($1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bool_pri IS UNKNOWN_SYM %prec IS + { +- $$= new (YYTHD->mem_root) Item_func_isnull($1); ++ $$= new (thd->mem_root) Item_func_isnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bool_pri IS not UNKNOWN_SYM %prec IS + { +- $$= new (YYTHD->mem_root) Item_func_isnotnull($1); ++ $$= new (thd->mem_root) Item_func_isnotnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7032,19 +7008,19 @@ + bool_pri: + bool_pri IS NULL_SYM %prec IS + { +- $$= new (YYTHD->mem_root) Item_func_isnull($1); ++ $$= new (thd->mem_root) Item_func_isnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bool_pri IS not NULL_SYM %prec IS + { +- $$= new (YYTHD->mem_root) Item_func_isnotnull($1); ++ $$= new (thd->mem_root) Item_func_isnotnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bool_pri EQUAL_SYM predicate %prec EQUAL_SYM + { +- $$= new (YYTHD->mem_root) Item_func_equal($1,$3); ++ $$= new (thd->mem_root) Item_func_equal($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7066,13 +7042,12 @@ + predicate: + bit_expr IN_SYM '(' subselect ')' + { +- $$= new (YYTHD->mem_root) Item_in_subselect($1, $4); ++ $$= new (thd->mem_root) Item_in_subselect($1, $4); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr not IN_SYM '(' subselect ')' + { +- THD *thd= YYTHD; + Item *item= new (thd->mem_root) Item_in_subselect($1, $5); + if (item == NULL) + MYSQL_YYABORT; +@@ -7082,7 +7057,7 @@ + } + | bit_expr IN_SYM '(' expr ')' + { +- $$= handle_sql2003_note184_exception(YYTHD, $1, true, $4); ++ $$= handle_sql2003_note184_exception(thd, $1, true, $4); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7090,13 +7065,13 @@ + { + $6->push_front($4); + $6->push_front($1); +- $$= new (YYTHD->mem_root) Item_func_in(*$6); ++ $$= new (thd->mem_root) Item_func_in(*$6); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr not IN_SYM '(' expr ')' + { +- $$= handle_sql2003_note184_exception(YYTHD, $1, false, $5); ++ $$= handle_sql2003_note184_exception(thd, $1, false, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7104,7 +7079,7 @@ + { + $7->push_front($5); + $7->push_front($1); +- Item_func_in *item = new (YYTHD->mem_root) Item_func_in(*$7); ++ Item_func_in *item = new (thd->mem_root) Item_func_in(*$7); + if (item == NULL) + MYSQL_YYABORT; + item->negate(); +@@ -7112,14 +7087,14 @@ + } + | bit_expr BETWEEN_SYM bit_expr AND_SYM predicate + { +- $$= new (YYTHD->mem_root) Item_func_between($1,$3,$5); ++ $$= new (thd->mem_root) Item_func_between($1,$3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr not BETWEEN_SYM bit_expr AND_SYM predicate + { + Item_func_between *item; +- item= new (YYTHD->mem_root) Item_func_between($1,$4,$6); ++ item= new (thd->mem_root) Item_func_between($1,$4,$6); + if (item == NULL) + MYSQL_YYABORT; + item->negate(); +@@ -7127,42 +7102,42 @@ + } + | bit_expr SOUNDS_SYM LIKE bit_expr + { +- Item *item1= new (YYTHD->mem_root) Item_func_soundex($1); +- Item *item4= new (YYTHD->mem_root) Item_func_soundex($4); ++ Item *item1= new (thd->mem_root) Item_func_soundex($1); ++ Item *item4= new (thd->mem_root) Item_func_soundex($4); + if ((item1 == NULL) || (item4 == NULL)) + MYSQL_YYABORT; +- $$= new (YYTHD->mem_root) Item_func_eq(item1, item4); ++ $$= new (thd->mem_root) Item_func_eq(item1, item4); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr LIKE simple_expr opt_escape + { +- $$= new (YYTHD->mem_root) Item_func_like($1,$3,$4,Lex->escape_used); ++ $$= new (thd->mem_root) Item_func_like($1,$3,$4,Lex->escape_used); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr not LIKE simple_expr opt_escape + { +- Item *item= new (YYTHD->mem_root) Item_func_like($1,$4,$5, ++ Item *item= new (thd->mem_root) Item_func_like($1,$4,$5, + Lex->escape_used); + if (item == NULL) + MYSQL_YYABORT; +- $$= new (YYTHD->mem_root) Item_func_not(item); ++ $$= new (thd->mem_root) Item_func_not(item); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr REGEXP bit_expr + { +- $$= new (YYTHD->mem_root) Item_func_regex($1,$3); ++ $$= new (thd->mem_root) Item_func_regex($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr not REGEXP bit_expr + { +- Item *item= new (YYTHD->mem_root) Item_func_regex($1,$4); ++ Item *item= new (thd->mem_root) Item_func_regex($1,$4); + if (item == NULL) + MYSQL_YYABORT; +- $$= negate_expression(YYTHD, item); ++ $$= negate_expression(thd, item); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7172,85 +7147,85 @@ + bit_expr: + bit_expr '|' bit_expr %prec '|' + { +- $$= new (YYTHD->mem_root) Item_func_bit_or($1,$3); ++ $$= new (thd->mem_root) Item_func_bit_or($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr '&' bit_expr %prec '&' + { +- $$= new (YYTHD->mem_root) Item_func_bit_and($1,$3); ++ $$= new (thd->mem_root) Item_func_bit_and($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr SHIFT_LEFT bit_expr %prec SHIFT_LEFT + { +- $$= new (YYTHD->mem_root) Item_func_shift_left($1,$3); ++ $$= new (thd->mem_root) Item_func_shift_left($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr SHIFT_RIGHT bit_expr %prec SHIFT_RIGHT + { +- $$= new (YYTHD->mem_root) Item_func_shift_right($1,$3); ++ $$= new (thd->mem_root) Item_func_shift_right($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr '+' bit_expr %prec '+' + { +- $$= new (YYTHD->mem_root) Item_func_plus($1,$3); ++ $$= new (thd->mem_root) Item_func_plus($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr '-' bit_expr %prec '-' + { +- $$= new (YYTHD->mem_root) Item_func_minus($1,$3); ++ $$= new (thd->mem_root) Item_func_minus($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr '+' INTERVAL_SYM expr interval %prec '+' + { +- $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,0); ++ $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr '-' INTERVAL_SYM expr interval %prec '-' + { +- $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,1); ++ $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr '*' bit_expr %prec '*' + { +- $$= new (YYTHD->mem_root) Item_func_mul($1,$3); ++ $$= new (thd->mem_root) Item_func_mul($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr '/' bit_expr %prec '/' + { +- $$= new (YYTHD->mem_root) Item_func_div($1,$3); ++ $$= new (thd->mem_root) Item_func_div($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr '%' bit_expr %prec '%' + { +- $$= new (YYTHD->mem_root) Item_func_mod($1,$3); ++ $$= new (thd->mem_root) Item_func_mod($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr DIV_SYM bit_expr %prec DIV_SYM + { +- $$= new (YYTHD->mem_root) Item_func_int_div($1,$3); ++ $$= new (thd->mem_root) Item_func_int_div($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr MOD_SYM bit_expr %prec MOD_SYM + { +- $$= new (YYTHD->mem_root) Item_func_mod($1,$3); ++ $$= new (thd->mem_root) Item_func_mod($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr '^' bit_expr + { +- $$= new (YYTHD->mem_root) Item_func_bit_xor($1,$3); ++ $$= new (thd->mem_root) Item_func_bit_xor($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7299,7 +7274,6 @@ + | function_call_conflict + | simple_expr COLLATE_SYM ident_or_text %prec NEG + { +- THD *thd= YYTHD; + Item *i1= new (thd->mem_root) Item_string($3.str, + $3.length, + thd->charset()); +@@ -7315,7 +7289,7 @@ + | sum_expr + | simple_expr OR_OR_SYM simple_expr + { +- $$= new (YYTHD->mem_root) Item_func_concat($1, $3); ++ $$= new (thd->mem_root) Item_func_concat($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7325,25 +7299,25 @@ + } + | '-' simple_expr %prec NEG + { +- $$= new (YYTHD->mem_root) Item_func_neg($2); ++ $$= new (thd->mem_root) Item_func_neg($2); + if ($$ == NULL) + MYSQL_YYABORT; + } + | '~' simple_expr %prec NEG + { +- $$= new (YYTHD->mem_root) Item_func_bit_neg($2); ++ $$= new (thd->mem_root) Item_func_bit_neg($2); + if ($$ == NULL) + MYSQL_YYABORT; + } + | not2 simple_expr %prec NEG + { +- $$= negate_expression(YYTHD, $2); ++ $$= negate_expression(thd, $2); + if ($$ == NULL) + MYSQL_YYABORT; + } + | '(' subselect ')' + { +- $$= new (YYTHD->mem_root) Item_singlerow_subselect($2); ++ $$= new (thd->mem_root) Item_singlerow_subselect($2); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7352,20 +7326,20 @@ + | '(' expr ',' expr_list ')' + { + $4->push_front($2); +- $$= new (YYTHD->mem_root) Item_row(*$4); ++ $$= new (thd->mem_root) Item_row(*$4); + if ($$ == NULL) + MYSQL_YYABORT; + } + | ROW_SYM '(' expr ',' expr_list ')' + { + $5->push_front($3); +- $$= new (YYTHD->mem_root) Item_row(*$5); ++ $$= new (thd->mem_root) Item_row(*$5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | EXISTS '(' subselect ')' + { +- $$= new (YYTHD->mem_root) Item_exists_subselect($3); ++ $$= new (thd->mem_root) Item_exists_subselect($3); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7374,7 +7348,7 @@ + | MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')' + { + $2->push_front($5); +- Item_func_match *i1= new (YYTHD->mem_root) Item_func_match(*$2, $6); ++ Item_func_match *i1= new (thd->mem_root) Item_func_match(*$2, $6); + if (i1 == NULL) + MYSQL_YYABORT; + Select->add_ftfunc_to_list(i1); +@@ -7382,7 +7356,7 @@ + } + | BINARY simple_expr %prec NEG + { +- $$= create_func_cast(YYTHD, $2, ITEM_CAST_CHAR, NULL, NULL, ++ $$= create_func_cast(thd, $2, ITEM_CAST_CHAR, NULL, NULL, + &my_charset_bin); + if ($$ == NULL) + MYSQL_YYABORT; +@@ -7390,27 +7364,27 @@ + | CAST_SYM '(' expr AS cast_type ')' + { + LEX *lex= Lex; +- $$= create_func_cast(YYTHD, $3, $5, lex->length, lex->dec, ++ $$= create_func_cast(thd, $3, $5, lex->length, lex->dec, + lex->charset); + if ($$ == NULL) + MYSQL_YYABORT; + } + | CASE_SYM opt_expr when_list opt_else END + { +- $$= new (YYTHD->mem_root) Item_func_case(* $3, $2, $4 ); ++ $$= new (thd->mem_root) Item_func_case(* $3, $2, $4 ); + if ($$ == NULL) + MYSQL_YYABORT; + } + | CONVERT_SYM '(' expr ',' cast_type ')' + { +- $$= create_func_cast(YYTHD, $3, $5, Lex->length, Lex->dec, ++ $$= create_func_cast(thd, $3, $5, Lex->length, Lex->dec, + Lex->charset); + if ($$ == NULL) + MYSQL_YYABORT; + } + | CONVERT_SYM '(' expr USING charset_name ')' + { +- $$= new (YYTHD->mem_root) Item_func_conv_charset($3,$5); ++ $$= new (thd->mem_root) Item_func_conv_charset($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7423,14 +7397,14 @@ + my_error(ER_WRONG_COLUMN_NAME, MYF(0), il->my_name()->str); + MYSQL_YYABORT; + } +- $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context(), ++ $$= new (thd->mem_root) Item_default_value(Lex->current_context(), + $3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | VALUES '(' simple_ident_nospvar ')' + { +- $$= new (YYTHD->mem_root) Item_insert_value(Lex->current_context(), ++ $$= new (thd->mem_root) Item_insert_value(Lex->current_context(), + $3); + if ($$ == NULL) + MYSQL_YYABORT; +@@ -7438,7 +7412,7 @@ + | INTERVAL_SYM expr interval '+' expr %prec INTERVAL_SYM + /* we cannot put interval before - */ + { +- $$= new (YYTHD->mem_root) Item_date_add_interval($5,$2,$3,0); ++ $$= new (thd->mem_root) Item_date_add_interval($5,$2,$3,0); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7453,19 +7427,19 @@ + function_call_keyword: + CHAR_SYM '(' expr_list ')' + { +- $$= new (YYTHD->mem_root) Item_func_char(*$3); ++ $$= new (thd->mem_root) Item_func_char(*$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | CHAR_SYM '(' expr_list USING charset_name ')' + { +- $$= new (YYTHD->mem_root) Item_func_char(*$3, $5); ++ $$= new (thd->mem_root) Item_func_char(*$3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | CURRENT_USER optional_braces + { +- $$= new (YYTHD->mem_root) Item_func_current_user(Lex->current_context()); ++ $$= new (thd->mem_root) Item_func_current_user(Lex->current_context()); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->set_stmt_unsafe(); +@@ -7473,31 +7447,30 @@ + } + | DATE_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_date_typecast($3); ++ $$= new (thd->mem_root) Item_date_typecast($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | DAY_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_dayofmonth($3); ++ $$= new (thd->mem_root) Item_func_dayofmonth($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | HOUR_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_hour($3); ++ $$= new (thd->mem_root) Item_func_hour($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | INSERT '(' expr ',' expr ',' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_insert($3,$5,$7,$9); ++ $$= new (thd->mem_root) Item_func_insert($3,$5,$7,$9); + if ($$ == NULL) + MYSQL_YYABORT; + } + | INTERVAL_SYM '(' expr ',' expr ')' %prec INTERVAL_SYM + { +- THD *thd= YYTHD; + List *list= new (thd->mem_root) List; + if (list == NULL) + MYSQL_YYABORT; +@@ -7512,7 +7485,6 @@ + } + | INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' %prec INTERVAL_SYM + { +- THD *thd= YYTHD; + $7->push_front($5); + $7->push_front($3); + Item_row *item= new (thd->mem_root) Item_row(*$7); +@@ -7524,103 +7496,103 @@ + } + | LEFT '(' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_left($3,$5); ++ $$= new (thd->mem_root) Item_func_left($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | MINUTE_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_minute($3); ++ $$= new (thd->mem_root) Item_func_minute($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | MONTH_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_month($3); ++ $$= new (thd->mem_root) Item_func_month($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | RIGHT '(' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_right($3,$5); ++ $$= new (thd->mem_root) Item_func_right($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | SECOND_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_second($3); ++ $$= new (thd->mem_root) Item_func_second($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TIME_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_time_typecast($3); ++ $$= new (thd->mem_root) Item_time_typecast($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TIMESTAMP '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_datetime_typecast($3); ++ $$= new (thd->mem_root) Item_datetime_typecast($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TIMESTAMP '(' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_add_time($3, $5, 1, 0); ++ $$= new (thd->mem_root) Item_func_add_time($3, $5, 1, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRIM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_trim($3); ++ $$= new (thd->mem_root) Item_func_trim($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRIM '(' LEADING expr FROM expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_ltrim($6,$4); ++ $$= new (thd->mem_root) Item_func_ltrim($6,$4); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRIM '(' TRAILING expr FROM expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_rtrim($6,$4); ++ $$= new (thd->mem_root) Item_func_rtrim($6,$4); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRIM '(' BOTH expr FROM expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_trim($6,$4); ++ $$= new (thd->mem_root) Item_func_trim($6,$4); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRIM '(' LEADING FROM expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_ltrim($5); ++ $$= new (thd->mem_root) Item_func_ltrim($5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRIM '(' TRAILING FROM expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_rtrim($5); ++ $$= new (thd->mem_root) Item_func_rtrim($5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRIM '(' BOTH FROM expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_trim($5); ++ $$= new (thd->mem_root) Item_func_trim($5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRIM '(' expr FROM expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_trim($5,$3); ++ $$= new (thd->mem_root) Item_func_trim($5,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | USER '(' ')' + { +- $$= new (YYTHD->mem_root) Item_func_user(); ++ $$= new (thd->mem_root) Item_func_user(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->set_stmt_unsafe(); +@@ -7628,7 +7600,7 @@ + } + | YEAR_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_year($3); ++ $$= new (thd->mem_root) Item_func_year($3); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7649,34 +7621,34 @@ + function_call_nonkeyword: + ADDDATE_SYM '(' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5, ++ $$= new (thd->mem_root) Item_date_add_interval($3, $5, + INTERVAL_DAY, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' + { +- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 0); ++ $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | CURDATE optional_braces + { +- $$= new (YYTHD->mem_root) Item_func_curdate_local(); ++ $$= new (thd->mem_root) Item_func_curdate_local(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } + | CURTIME optional_braces + { +- $$= new (YYTHD->mem_root) Item_func_curtime_local(); ++ $$= new (thd->mem_root) Item_func_curtime_local(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } + | CURTIME '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_curtime_local($3); ++ $$= new (thd->mem_root) Item_func_curtime_local($3); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; +@@ -7684,83 +7656,83 @@ + | DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' + %prec INTERVAL_SYM + { +- $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,0); ++ $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' + %prec INTERVAL_SYM + { +- $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,1); ++ $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | EXTRACT_SYM '(' interval FROM expr ')' + { +- $$=new (YYTHD->mem_root) Item_extract( $3, $5); ++ $$=new (thd->mem_root) Item_extract( $3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | GET_FORMAT '(' date_time_type ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_get_format($3, $5); ++ $$= new (thd->mem_root) Item_func_get_format($3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | NOW_SYM optional_braces + { +- $$= new (YYTHD->mem_root) Item_func_now_local(); ++ $$= new (thd->mem_root) Item_func_now_local(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } + | NOW_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_now_local($3); ++ $$= new (thd->mem_root) Item_func_now_local($3); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } + | POSITION_SYM '(' bit_expr IN_SYM expr ')' + { +- $$ = new (YYTHD->mem_root) Item_func_locate($5,$3); ++ $$ = new (thd->mem_root) Item_func_locate($5,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | SUBDATE_SYM '(' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5, ++ $$= new (thd->mem_root) Item_date_add_interval($3, $5, + INTERVAL_DAY, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' + { +- $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 1); ++ $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | SUBSTRING '(' expr ',' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7); ++ $$= new (thd->mem_root) Item_func_substr($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } + | SUBSTRING '(' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_substr($3,$5); ++ $$= new (thd->mem_root) Item_func_substr($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | SUBSTRING '(' expr FROM expr FOR_SYM expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7); ++ $$= new (thd->mem_root) Item_func_substr($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } + | SUBSTRING '(' expr FROM expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_substr($3,$5); ++ $$= new (thd->mem_root) Item_func_substr($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7775,9 +7747,9 @@ + */ + Lex->set_stmt_unsafe(); + if (global_system_variables.sysdate_is_now == 0) +- $$= new (YYTHD->mem_root) Item_func_sysdate_local(); ++ $$= new (thd->mem_root) Item_func_sysdate_local(); + else +- $$= new (YYTHD->mem_root) Item_func_now_local(); ++ $$= new (thd->mem_root) Item_func_now_local(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; +@@ -7785,42 +7757,42 @@ + | SYSDATE '(' expr ')' + { + if (global_system_variables.sysdate_is_now == 0) +- $$= new (YYTHD->mem_root) Item_func_sysdate_local($3); ++ $$= new (thd->mem_root) Item_func_sysdate_local($3); + else +- $$= new (YYTHD->mem_root) Item_func_now_local($3); ++ $$= new (thd->mem_root) Item_func_now_local($3); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } + | TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_date_add_interval($7,$5,$3,0); ++ $$= new (thd->mem_root) Item_date_add_interval($7,$5,$3,0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_timestamp_diff($5,$7,$3); ++ $$= new (thd->mem_root) Item_func_timestamp_diff($5,$7,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | UTC_DATE_SYM optional_braces + { +- $$= new (YYTHD->mem_root) Item_func_curdate_utc(); ++ $$= new (thd->mem_root) Item_func_curdate_utc(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } + | UTC_TIME_SYM optional_braces + { +- $$= new (YYTHD->mem_root) Item_func_curtime_utc(); ++ $$= new (thd->mem_root) Item_func_curtime_utc(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } + | UTC_TIMESTAMP_SYM optional_braces + { +- $$= new (YYTHD->mem_root) Item_func_now_utc(); ++ $$= new (thd->mem_root) Item_func_now_utc(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; +@@ -7835,62 +7807,61 @@ + function_call_conflict: + ASCII_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_ascii($3); ++ $$= new (thd->mem_root) Item_func_ascii($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | CHARSET '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_charset($3); ++ $$= new (thd->mem_root) Item_func_charset($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | COALESCE '(' expr_list ')' + { +- $$= new (YYTHD->mem_root) Item_func_coalesce(* $3); ++ $$= new (thd->mem_root) Item_func_coalesce(* $3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | COLLATION_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_collation($3); ++ $$= new (thd->mem_root) Item_func_collation($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | DATABASE '(' ')' + { +- $$= new (YYTHD->mem_root) Item_func_database(); ++ $$= new (thd->mem_root) Item_func_database(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } + | IF '(' expr ',' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_if($3,$5,$7); ++ $$= new (thd->mem_root) Item_func_if($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } + | MICROSECOND_SYM '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_microsecond($3); ++ $$= new (thd->mem_root) Item_func_microsecond($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | MOD_SYM '(' expr ',' expr ')' + { +- $$ = new (YYTHD->mem_root) Item_func_mod($3, $5); ++ $$ = new (thd->mem_root) Item_func_mod($3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | OLD_PASSWORD '(' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_old_password($3); ++ $$= new (thd->mem_root) Item_func_old_password($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | PASSWORD '(' expr ')' + { +- THD *thd= YYTHD; + Item* i1; + if (thd->variables.old_passwords) + i1= new (thd->mem_root) Item_func_old_password($3); +@@ -7902,31 +7873,30 @@ + } + | QUARTER_SYM '(' expr ')' + { +- $$ = new (YYTHD->mem_root) Item_func_quarter($3); ++ $$ = new (thd->mem_root) Item_func_quarter($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | REPEAT_SYM '(' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_repeat($3,$5); ++ $$= new (thd->mem_root) Item_func_repeat($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | REPLACE '(' expr ',' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_replace($3,$5,$7); ++ $$= new (thd->mem_root) Item_func_replace($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRUNCATE_SYM '(' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_round($3,$5,1); ++ $$= new (thd->mem_root) Item_func_round($3,$5,1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | WEEK_SYM '(' expr ')' + { +- THD *thd= YYTHD; + Item *i1= new (thd->mem_root) Item_int((char*) "0", + thd->variables.default_week_format, + 1); +@@ -7938,7 +7908,7 @@ + } + | WEEK_SYM '(' expr ',' expr ')' + { +- $$= new (YYTHD->mem_root) Item_func_week($3,$5); ++ $$= new (thd->mem_root) Item_func_week($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -7960,52 +7930,52 @@ + geometry_function: + CONTAINS_SYM '(' expr ',' expr ')' + { +- $$= GEOM_NEW(YYTHD, ++ $$= GEOM_NEW(thd, + Item_func_spatial_rel($3, $5, + Item_func::SP_CONTAINS_FUNC)); + } + | GEOMETRYCOLLECTION '(' expr_list ')' + { +- $$= GEOM_NEW(YYTHD, ++ $$= GEOM_NEW(thd, + Item_func_spatial_collection(* $3, + Geometry::wkb_geometrycollection, + Geometry::wkb_point)); + } + | LINESTRING '(' expr_list ')' + { +- $$= GEOM_NEW(YYTHD, ++ $$= GEOM_NEW(thd, + Item_func_spatial_collection(* $3, + Geometry::wkb_linestring, + Geometry::wkb_point)); + } + | MULTILINESTRING '(' expr_list ')' + { +- $$= GEOM_NEW(YYTHD, ++ $$= GEOM_NEW(thd, + Item_func_spatial_collection(* $3, + Geometry::wkb_multilinestring, + Geometry::wkb_linestring)); + } + | MULTIPOINT '(' expr_list ')' + { +- $$= GEOM_NEW(YYTHD, ++ $$= GEOM_NEW(thd, + Item_func_spatial_collection(* $3, + Geometry::wkb_multipoint, + Geometry::wkb_point)); + } + | MULTIPOLYGON '(' expr_list ')' + { +- $$= GEOM_NEW(YYTHD, ++ $$= GEOM_NEW(thd, + Item_func_spatial_collection(* $3, + Geometry::wkb_multipolygon, + Geometry::wkb_polygon)); + } + | POINT_SYM '(' expr ',' expr ')' + { +- $$= GEOM_NEW(YYTHD, Item_func_point($3,$5)); ++ $$= GEOM_NEW(thd, Item_func_point($3,$5)); + } + | POLYGON '(' expr_list ')' + { +- $$= GEOM_NEW(YYTHD, ++ $$= GEOM_NEW(thd, + Item_func_spatial_collection(* $3, + Geometry::wkb_polygon, + Geometry::wkb_linestring)); +@@ -8043,7 +8013,6 @@ + } + opt_udf_expr_list ')' + { +- THD *thd= YYTHD; + Create_func *builder; + Item *item= NULL; + +@@ -8097,7 +8066,6 @@ + } + | ident '.' ident '(' opt_expr_list ')' + { +- THD *thd= YYTHD; + Create_qfunc *builder; + Item *item= NULL; + +@@ -8161,7 +8129,7 @@ + udf_expr_list: + udf_expr + { +- $$= new (YYTHD->mem_root) List; ++ $$= new (thd->mem_root) List; + if ($$ == NULL) + MYSQL_YYABORT; + $$->push_back($1); +@@ -8194,7 +8162,7 @@ + remember_name we may get quoted or escaped names. + */ + else if ($2->type() != Item::FIELD_ITEM) +- $2->set_name($1, (uint) ($3 - $1), YYTHD->charset()); ++ $2->set_name($1, (uint) ($3 - $1), thd->charset()); + $$= $2; + } + ; +@@ -8202,46 +8170,46 @@ + sum_expr: + AVG_SYM '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_avg($3); ++ $$= new (thd->mem_root) Item_sum_avg($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | AVG_SYM '(' DISTINCT in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_avg_distinct($4); ++ $$= new (thd->mem_root) Item_sum_avg_distinct($4); + if ($$ == NULL) + MYSQL_YYABORT; + } + | BIT_AND '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_and($3); ++ $$= new (thd->mem_root) Item_sum_and($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | BIT_OR '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_or($3); ++ $$= new (thd->mem_root) Item_sum_or($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | BIT_XOR '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_xor($3); ++ $$= new (thd->mem_root) Item_sum_xor($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | COUNT_SYM '(' opt_all '*' ')' + { +- Item *item= new (YYTHD->mem_root) Item_int((int32) 0L,1); ++ Item *item= new (thd->mem_root) Item_int((int32) 0L,1); + if (item == NULL) + MYSQL_YYABORT; +- $$= new (YYTHD->mem_root) Item_sum_count(item); ++ $$= new (thd->mem_root) Item_sum_count(item); + if ($$ == NULL) + MYSQL_YYABORT; + } + | COUNT_SYM '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_count($3); ++ $$= new (thd->mem_root) Item_sum_count($3); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -8251,13 +8219,13 @@ + { Select->in_sum_expr--; } + ')' + { +- $$= new (YYTHD->mem_root) Item_sum_count_distinct(* $5); ++ $$= new (thd->mem_root) Item_sum_count_distinct(* $5); + if ($$ == NULL) + MYSQL_YYABORT; + } + | MIN_SYM '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_min($3); ++ $$= new (thd->mem_root) Item_sum_min($3); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -8268,55 +8236,55 @@ + */ + | MIN_SYM '(' DISTINCT in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_min($4); ++ $$= new (thd->mem_root) Item_sum_min($4); + if ($$ == NULL) + MYSQL_YYABORT; + } + | MAX_SYM '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_max($3); ++ $$= new (thd->mem_root) Item_sum_max($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | MAX_SYM '(' DISTINCT in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_max($4); ++ $$= new (thd->mem_root) Item_sum_max($4); + if ($$ == NULL) + MYSQL_YYABORT; + } + | STD_SYM '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_std($3, 0); ++ $$= new (thd->mem_root) Item_sum_std($3, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | VARIANCE_SYM '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_variance($3, 0); ++ $$= new (thd->mem_root) Item_sum_variance($3, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | STDDEV_SAMP_SYM '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_std($3, 1); ++ $$= new (thd->mem_root) Item_sum_std($3, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | VAR_SAMP_SYM '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_variance($3, 1); ++ $$= new (thd->mem_root) Item_sum_variance($3, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | SUM_SYM '(' in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_sum($3); ++ $$= new (thd->mem_root) Item_sum_sum($3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | SUM_SYM '(' DISTINCT in_sum_expr ')' + { +- $$= new (YYTHD->mem_root) Item_sum_sum_distinct($4); ++ $$= new (thd->mem_root) Item_sum_sum_distinct($4); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -8328,7 +8296,7 @@ + { + SELECT_LEX *sel= Select; + sel->in_sum_expr--; +- $$= new (YYTHD->mem_root) ++ $$= new (thd->mem_root) + Item_func_group_concat(Lex->current_context(), $3, $5, + sel->gorder_list, $7); + if ($$ == NULL) +@@ -8357,7 +8325,7 @@ + ident_or_text SET_VAR expr + { + Item_func_set_user_var *item; +- $$= item= new (YYTHD->mem_root) Item_func_set_user_var($1, $3); ++ $$= item= new (thd->mem_root) Item_func_set_user_var($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; + LEX *lex= Lex; +@@ -8366,7 +8334,7 @@ + } + | ident_or_text + { +- $$= new (YYTHD->mem_root) Item_func_get_user_var($1); ++ $$= new (thd->mem_root) Item_func_get_user_var($1); + if ($$ == NULL) + MYSQL_YYABORT; + LEX *lex= Lex; +@@ -8380,7 +8348,7 @@ + my_parse_error(ER(ER_SYNTAX_ERROR)); + MYSQL_YYABORT; + } +- if (!($$= get_system_var(YYTHD, $2, $3, $4))) ++ if (!($$= get_system_var(thd, $2, $3, $4))) + MYSQL_YYABORT; + if (!((Item_func_get_system_var*) $$)->is_written_to_binlog()) + Lex->set_stmt_unsafe(); +@@ -8395,7 +8363,7 @@ + opt_gconcat_separator: + /* empty */ + { +- $$= new (YYTHD->mem_root) String(",", 1, &my_charset_latin1); ++ $$= new (thd->mem_root) String(",", 1, &my_charset_latin1); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -8422,9 +8390,9 @@ + + gorder_list: + gorder_list ',' order_ident order_dir +- { if (add_gorder_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; } ++ { if (add_gorder_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; } + | order_ident order_dir +- { if (add_gorder_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; } ++ { if (add_gorder_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; } + ; + + in_sum_expr: +@@ -8477,7 +8445,7 @@ + expr_list: + expr + { +- $$= new (YYTHD->mem_root) List; ++ $$= new (thd->mem_root) List; + if ($$ == NULL) + MYSQL_YYABORT; + $$->push_back($1); +@@ -8497,7 +8465,7 @@ + ident_list: + simple_ident + { +- $$= new (YYTHD->mem_root) List; ++ $$= new (thd->mem_root) List; + if ($$ == NULL) + MYSQL_YYABORT; + $$->push_back($1); +@@ -8595,7 +8563,7 @@ + { + MYSQL_YYABORT_UNLESS($1 && $3); + /* Change the current name resolution context to a local context. */ +- if (push_new_name_resolution_context(YYTHD, $1, $3)) ++ if (push_new_name_resolution_context(thd, $1, $3)) + MYSQL_YYABORT; + Select->parsing_place= IN_ON; + } +@@ -8610,7 +8578,7 @@ + { + MYSQL_YYABORT_UNLESS($1 && $3); + /* Change the current name resolution context to a local context. */ +- if (push_new_name_resolution_context(YYTHD, $1, $3)) ++ if (push_new_name_resolution_context(thd, $1, $3)) + MYSQL_YYABORT; + Select->parsing_place= IN_ON; + } +@@ -8640,7 +8608,7 @@ + { + MYSQL_YYABORT_UNLESS($1 && $5); + /* Change the current name resolution context to a local context. */ +- if (push_new_name_resolution_context(YYTHD, $1, $5)) ++ if (push_new_name_resolution_context(thd, $1, $5)) + MYSQL_YYABORT; + Select->parsing_place= IN_ON; + } +@@ -8676,7 +8644,7 @@ + { + MYSQL_YYABORT_UNLESS($1 && $5); + /* Change the current name resolution context to a local context. */ +- if (push_new_name_resolution_context(YYTHD, $1, $5)) ++ if (push_new_name_resolution_context(thd, $1, $5)) + MYSQL_YYABORT; + Select->parsing_place= IN_ON; + } +@@ -8724,7 +8692,7 @@ + } + table_ident opt_table_alias opt_key_definition + { +- if (!($$= Select->add_table_to_list(YYTHD, $2, $3, ++ if (!($$= Select->add_table_to_list(thd, $2, $3, + Select->get_table_join_options(), + Lex->lock_option, + Select->pop_index_hints()))) +@@ -8922,7 +8890,7 @@ + + opt_index_hints_list: + /* empty */ +- | { Select->alloc_index_hints(YYTHD); } index_hints_list ++ | { Select->alloc_index_hints(thd); } index_hints_list + ; + + opt_key_definition: +@@ -8931,15 +8899,15 @@ + ; + + opt_key_usage_list: +- /* empty */ { Select->add_index_hint(YYTHD, NULL, 0); } ++ /* empty */ { Select->add_index_hint(thd, NULL, 0); } + | key_usage_list {} + ; + + key_usage_element: + ident +- { Select->add_index_hint(YYTHD, $1.str, $1.length); } ++ { Select->add_index_hint(thd, $1.str, $1.length); } + | PRIMARY_SYM +- { Select->add_index_hint(YYTHD, (char *)"PRIMARY", 7); } ++ { Select->add_index_hint(thd, (char *)"PRIMARY", 7); } + ; + + key_usage_list: +@@ -8952,7 +8920,7 @@ + { + if (!($$= new List)) + MYSQL_YYABORT; +- String *s= new (YYTHD->mem_root) String((const char *) $1.str, ++ String *s= new (thd->mem_root) String((const char *) $1.str, + $1.length, + system_charset_info); + if (s == NULL) +@@ -8961,7 +8929,7 @@ + } + | using_list ',' ident + { +- String *s= new (YYTHD->mem_root) String((const char *) $3.str, ++ String *s= new (thd->mem_root) String((const char *) $3.str, + $3.length, + system_charset_info); + if (s == NULL) +@@ -9002,7 +8970,7 @@ + implementation without changing its + resolution. + */ +- WARN_DEPRECATED(yythd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND"); ++ WARN_DEPRECATED(thd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND"); + } + ; + +@@ -9086,7 +9054,6 @@ + } + | /* empty */ + { +- THD *thd= YYTHD; + Lex->escape_used= FALSE; + $$= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ? + new (thd->mem_root) Item_string("", 0, &my_charset_latin1) : +@@ -9107,9 +9074,9 @@ + + group_list: + group_list ',' order_ident order_dir +- { if (add_group_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; } ++ { if (add_group_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; } + | order_ident order_dir +- { if (add_group_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; } ++ { if (add_group_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; } + ; + + olap_opt: +@@ -9156,7 +9123,6 @@ + alter_order_item: + simple_ident_nospvar order_dir + { +- THD *thd= YYTHD; + bool ascending= ($2 == 1) ? true : false; + if (add_order_to_list(thd, $1, ascending)) + MYSQL_YYABORT; +@@ -9209,9 +9175,9 @@ + + order_list: + order_list ',' order_ident order_dir +- { if (add_order_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; } ++ { if (add_order_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; } + | order_ident order_dir +- { if (add_order_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; } ++ { if (add_order_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; } + ; + + order_dir: +@@ -9271,19 +9237,19 @@ + } + | ULONGLONG_NUM + { +- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); ++ $$= new (thd->mem_root) Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | LONG_NUM + { +- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); ++ $$= new (thd->mem_root) Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | NUM + { +- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); ++ $$= new (thd->mem_root) Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -9365,7 +9331,7 @@ + lex->proc_list.elements=0; + lex->proc_list.first=0; + lex->proc_list.next= &lex->proc_list.first; +- Item_field *item= new (YYTHD->mem_root) ++ Item_field *item= new (thd->mem_root) + Item_field(&lex->current_select->context, + NULL, NULL, $2.str); + if (item == NULL) +@@ -9390,8 +9356,7 @@ + procedure_item: + remember_name expr remember_end + { +- THD *thd= YYTHD; +- ++ + if (add_proc_to_list(thd, $2)) + MYSQL_YYABORT; + if (!$2->name) +@@ -9560,7 +9525,6 @@ + } + | DROP FUNCTION_SYM if_exists ident '.' ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + sp_name *spname; + if ($4.str && check_db_name(&$4)) +@@ -9583,7 +9547,6 @@ + } + | DROP FUNCTION_SYM if_exists ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + LEX_STRING db= {0, 0}; + sp_name *spname; +@@ -9664,7 +9627,7 @@ + table_name: + table_ident + { +- if (!Select->add_table_to_list(YYTHD, $1, NULL, TL_OPTION_UPDATING)) ++ if (!Select->add_table_to_list(thd, $1, NULL, TL_OPTION_UPDATING)) + MYSQL_YYABORT; + } + ; +@@ -9677,7 +9640,7 @@ + table_alias_ref: + table_ident_opt_wild + { +- if (!Select->add_table_to_list(YYTHD, $1, NULL, ++ if (!Select->add_table_to_list(thd, $1, NULL, + TL_OPTION_UPDATING | TL_OPTION_ALIAS, + Lex->lock_option )) + MYSQL_YYABORT; +@@ -9868,7 +9831,7 @@ + expr { $$= $1;} + | DEFAULT + { +- $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context()); ++ $$= new (thd->mem_root) Item_default_value(Lex->current_context()); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -9922,7 +9885,7 @@ + update_elem: + simple_ident_nospvar equal expr_or_default + { +- if (add_item_to_list(YYTHD, $1) || add_value_to_list(YYTHD, $3)) ++ if (add_item_to_list(thd, $1) || add_value_to_list(thd, $3)) + MYSQL_YYABORT; + } + ; +@@ -9965,7 +9928,7 @@ + single_multi: + FROM table_ident + { +- if (!Select->add_table_to_list(YYTHD, $2, NULL, TL_OPTION_UPDATING, ++ if (!Select->add_table_to_list(thd, $2, NULL, TL_OPTION_UPDATING, + Lex->lock_option)) + MYSQL_YYABORT; + } +@@ -9998,7 +9961,7 @@ + Table_ident *ti= new Table_ident($1); + if (ti == NULL) + MYSQL_YYABORT; +- if (!Select->add_table_to_list(YYTHD, ++ if (!Select->add_table_to_list(thd, + ti, + $3, + TL_OPTION_UPDATING | TL_OPTION_ALIAS, +@@ -10007,10 +9970,10 @@ + } + | ident '.' ident opt_wild opt_table_alias + { +- Table_ident *ti= new Table_ident(YYTHD, $1, $3, 0); ++ Table_ident *ti= new Table_ident(thd, $1, $3, 0); + if (ti == NULL) + MYSQL_YYABORT; +- if (!Select->add_table_to_list(YYTHD, ++ if (!Select->add_table_to_list(thd, + ti, + $5, + TL_OPTION_UPDATING | TL_OPTION_ALIAS, +@@ -10130,7 +10093,7 @@ + { + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_DATABASES; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_SCHEMATA)) ++ if (prepare_schema_table(thd, lex, 0, SCH_SCHEMATA)) + MYSQL_YYABORT; + } + | opt_full TABLES opt_db wild_and_where +@@ -10138,7 +10101,7 @@ + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_TABLES; + lex->select_lex.db= $3; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES)) ++ if (prepare_schema_table(thd, lex, 0, SCH_TABLE_NAMES)) + MYSQL_YYABORT; + } + | opt_full TRIGGERS_SYM opt_db wild_and_where +@@ -10146,7 +10109,7 @@ + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_TRIGGERS; + lex->select_lex.db= $3; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_TRIGGERS)) ++ if (prepare_schema_table(thd, lex, 0, SCH_TRIGGERS)) + MYSQL_YYABORT; + } + | EVENTS_SYM opt_db wild_and_where +@@ -10154,7 +10117,7 @@ + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_EVENTS; + lex->select_lex.db= $2; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_EVENTS)) ++ if (prepare_schema_table(thd, lex, 0, SCH_EVENTS)) + MYSQL_YYABORT; + } + | TABLE_SYM STATUS_SYM opt_db wild_and_where +@@ -10162,7 +10125,7 @@ + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_TABLE_STATUS; + lex->select_lex.db= $3; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLES)) ++ if (prepare_schema_table(thd, lex, 0, SCH_TABLES)) + MYSQL_YYABORT; + } + | OPEN_SYM TABLES opt_db wild_and_where +@@ -10170,22 +10133,22 @@ + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_OPEN_TABLES; + lex->select_lex.db= $3; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_OPEN_TABLES)) ++ if (prepare_schema_table(thd, lex, 0, SCH_OPEN_TABLES)) + MYSQL_YYABORT; + } + | opt_full PLUGIN_SYM + { + LEX *lex= Lex; +- WARN_DEPRECATED(yythd, "6.0", "SHOW PLUGIN", "'SHOW PLUGINS'"); ++ WARN_DEPRECATED(thd, "6.0", "SHOW PLUGIN", "'SHOW PLUGINS'"); + lex->sql_command= SQLCOM_SHOW_PLUGINS; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS)) ++ if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS)) + MYSQL_YYABORT; + } + | PLUGINS_SYM + { + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_PLUGINS; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS)) ++ if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS)) + MYSQL_YYABORT; + } + | ENGINE_SYM known_storage_engines show_engine_param +@@ -10198,7 +10161,7 @@ + lex->sql_command= SQLCOM_SHOW_FIELDS; + if ($5) + $4->change_db($5); +- if (prepare_schema_table(YYTHD, lex, $4, SCH_COLUMNS)) ++ if (prepare_schema_table(thd, lex, $4, SCH_COLUMNS)) + MYSQL_YYABORT; + } + | NEW_SYM MASTER_SYM FOR_SYM SLAVE +@@ -10233,7 +10196,7 @@ + lex->sql_command= SQLCOM_SHOW_KEYS; + if ($4) + $3->change_db($4); +- if (prepare_schema_table(YYTHD, lex, $3, SCH_STATISTICS)) ++ if (prepare_schema_table(thd, lex, $3, SCH_STATISTICS)) + MYSQL_YYABORT; + } + | COLUMN_SYM TYPES_SYM +@@ -10245,15 +10208,15 @@ + { + LEX *lex=Lex; + lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; +- WARN_DEPRECATED(yythd, "6.0", "SHOW TABLE TYPES", "'SHOW [STORAGE] ENGINES'"); +- if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES)) ++ WARN_DEPRECATED(thd, "6.0", "SHOW TABLE TYPES", "'SHOW [STORAGE] ENGINES'"); ++ if (prepare_schema_table(thd, lex, 0, SCH_ENGINES)) + MYSQL_YYABORT; + } + | opt_storage ENGINES_SYM + { + LEX *lex=Lex; + lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES)) ++ if (prepare_schema_table(thd, lex, 0, SCH_ENGINES)) + MYSQL_YYABORT; + } + | AUTHORS_SYM +@@ -10285,7 +10248,7 @@ + { + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_PROFILE; +- if (prepare_schema_table(YYTHD, lex, NULL, SCH_PROFILES) != 0) ++ if (prepare_schema_table(thd, lex, NULL, SCH_PROFILES) != 0) + YYABORT; + } + | opt_var_type STATUS_SYM wild_and_where +@@ -10293,7 +10256,7 @@ + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_STATUS; + lex->option_type= $1; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_STATUS)) ++ if (prepare_schema_table(thd, lex, 0, SCH_STATUS)) + MYSQL_YYABORT; + } + | INNOBASE_SYM STATUS_SYM +@@ -10301,24 +10264,24 @@ + LEX *lex= Lex; + lex->sql_command = SQLCOM_SHOW_ENGINE_STATUS; + if (!(lex->create_info.db_type= +- ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB))) ++ ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB))) + { + my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), "InnoDB"); + MYSQL_YYABORT; + } +- WARN_DEPRECATED(yythd, "6.0", "SHOW INNODB STATUS", "'SHOW ENGINE INNODB STATUS'"); ++ WARN_DEPRECATED(thd, "6.0", "SHOW INNODB STATUS", "'SHOW ENGINE INNODB STATUS'"); + } + | MUTEX_SYM STATUS_SYM + { + LEX *lex= Lex; + lex->sql_command = SQLCOM_SHOW_ENGINE_MUTEX; + if (!(lex->create_info.db_type= +- ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB))) ++ ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB))) + { + my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), "InnoDB"); + MYSQL_YYABORT; + } +- WARN_DEPRECATED(yythd, "6.0", "SHOW MUTEX STATUS", "'SHOW ENGINE INNODB MUTEX'"); ++ WARN_DEPRECATED(thd, "6.0", "SHOW MUTEX STATUS", "'SHOW ENGINE INNODB MUTEX'"); + } + | opt_full PROCESSLIST_SYM + { Lex->sql_command= SQLCOM_SHOW_PROCESSLIST;} +@@ -10327,21 +10290,21 @@ + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_VARIABLES; + lex->option_type= $1; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_VARIABLES)) ++ if (prepare_schema_table(thd, lex, 0, SCH_VARIABLES)) + MYSQL_YYABORT; + } + | charset wild_and_where + { + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_CHARSETS; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_CHARSETS)) ++ if (prepare_schema_table(thd, lex, 0, SCH_CHARSETS)) + MYSQL_YYABORT; + } + | COLLATION_SYM wild_and_where + { + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_COLLATIONS; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_COLLATIONS)) ++ if (prepare_schema_table(thd, lex, 0, SCH_COLLATIONS)) + MYSQL_YYABORT; + } + | GRANTS +@@ -10371,7 +10334,7 @@ + { + LEX *lex= Lex; + lex->sql_command = SQLCOM_SHOW_CREATE; +- if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL,0)) ++ if (!lex->select_lex.add_table_to_list(thd, $3, NULL,0)) + MYSQL_YYABORT; + lex->only_view= 0; + lex->create_info.storage_media= HA_SM_DEFAULT; +@@ -10380,7 +10343,7 @@ + { + LEX *lex= Lex; + lex->sql_command = SQLCOM_SHOW_CREATE; +- if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL, 0)) ++ if (!lex->select_lex.add_table_to_list(thd, $3, NULL, 0)) + MYSQL_YYABORT; + lex->only_view= 1; + } +@@ -10416,14 +10379,14 @@ + { + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_STATUS_PROC; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES)) ++ if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)) + MYSQL_YYABORT; + } + | FUNCTION_SYM STATUS_SYM wild_and_where + { + LEX *lex= Lex; + lex->sql_command= SQLCOM_SHOW_STATUS_FUNC; +- if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES)) ++ if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)) + MYSQL_YYABORT; + } + | PROCEDURE CODE_SYM sp_name +@@ -10501,7 +10464,7 @@ + /* empty */ + | LIKE TEXT_STRING_sys + { +- Lex->wild= new (YYTHD->mem_root) String($2.str, $2.length, ++ Lex->wild= new (thd->mem_root) String($2.str, $2.length, + system_charset_info); + if (Lex->wild == NULL) + MYSQL_YYABORT; +@@ -10525,7 +10488,7 @@ + lex->sql_command= SQLCOM_SHOW_FIELDS; + lex->select_lex.db= 0; + lex->verbose= 0; +- if (prepare_schema_table(YYTHD, lex, $2, SCH_COLUMNS)) ++ if (prepare_schema_table(thd, lex, $2, SCH_COLUMNS)) + MYSQL_YYABORT; + } + opt_describe_column {} +@@ -10554,7 +10517,7 @@ + | text_string { Lex->wild= $1; } + | ident + { +- Lex->wild= new (YYTHD->mem_root) String((const char*) $1.str, ++ Lex->wild= new (thd->mem_root) String((const char*) $1.str, + $1.length, + system_charset_info); + if (Lex->wild == NULL) +@@ -10697,7 +10660,6 @@ + load: + LOAD DATA_SYM + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + + if (lex->sphead) +@@ -10711,7 +10673,7 @@ + | LOAD TABLE_SYM table_ident FROM MASTER_SYM + { + LEX *lex=Lex; +- WARN_DEPRECATED(yythd, "6.0", "LOAD TABLE FROM MASTER", ++ WARN_DEPRECATED(thd, "6.0", "LOAD TABLE FROM MASTER", + "MySQL Administrator (mysqldump, mysql)"); + if (lex->sphead) + { +@@ -10719,7 +10681,7 @@ + MYSQL_YYABORT; + } + lex->sql_command = SQLCOM_LOAD_MASTER_TABLE; +- if (!Select->add_table_to_list(YYTHD, $3, NULL, TL_OPTION_UPDATING)) ++ if (!Select->add_table_to_list(thd, $3, NULL, TL_OPTION_UPDATING)) + MYSQL_YYABORT; + } + ; +@@ -10739,7 +10701,7 @@ + opt_duplicate INTO TABLE_SYM table_ident + { + LEX *lex=Lex; +- if (!Select->add_table_to_list(YYTHD, $9, NULL, TL_OPTION_UPDATING, ++ if (!Select->add_table_to_list(thd, $9, NULL, TL_OPTION_UPDATING, + lex->lock_option)) + MYSQL_YYABORT; + lex->field_list.empty(); +@@ -10754,7 +10716,7 @@ + | FROM MASTER_SYM + { + Lex->sql_command = SQLCOM_LOAD_MASTER_DATA; +- WARN_DEPRECATED(yythd, "6.0", "LOAD DATA FROM MASTER", ++ WARN_DEPRECATED(thd, "6.0", "LOAD DATA FROM MASTER", + "mysqldump or future " + "BACKUP/RESTORE DATABASE facility"); + } +@@ -10872,7 +10834,7 @@ + simple_ident_nospvar {$$= $1;} + | '@' ident_or_text + { +- $$= new (YYTHD->mem_root) Item_user_var_as_out_param($2); ++ $$= new (thd->mem_root) Item_user_var_as_out_param($2); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -10889,7 +10851,6 @@ + TEXT_STRING + { + LEX_STRING tmp; +- THD *thd= YYTHD; + CHARSET_INFO *cs_con= thd->variables.collation_connection; + CHARSET_INFO *cs_cli= thd->variables.character_set_client; + uint repertoire= thd->lex->text_string_is_7bit && +@@ -10915,7 +10876,7 @@ + uint repertoire= Lex->text_string_is_7bit ? + MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30; + DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info)); +- $$= new (YYTHD->mem_root) Item_string($1.str, $1.length, ++ $$= new (thd->mem_root) Item_string($1.str, $1.length, + national_charset_info, + DERIVATION_COERCIBLE, + repertoire); +@@ -10924,7 +10885,7 @@ + } + | UNDERSCORE_CHARSET TEXT_STRING + { +- Item_string *str= new (YYTHD->mem_root) Item_string($2.str, ++ Item_string *str= new (thd->mem_root) Item_string($2.str, + $2.length, $1); + if (str == NULL) + MYSQL_YYABORT; +@@ -10943,7 +10904,7 @@ + If the string has been pure ASCII so far, + check the new part. + */ +- CHARSET_INFO *cs= YYTHD->variables.collation_connection; ++ CHARSET_INFO *cs= thd->variables.collation_connection; + item->collation.repertoire|= my_string_repertoire(cs, + $2.str, + $2.length); +@@ -10954,15 +10915,15 @@ + text_string: + TEXT_STRING_literal + { +- $$= new (YYTHD->mem_root) String($1.str, ++ $$= new (thd->mem_root) String($1.str, + $1.length, +- YYTHD->variables.collation_connection); ++ thd->variables.collation_connection); + if ($$ == NULL) + MYSQL_YYABORT; + } + | HEX_NUM + { +- Item *tmp= new (YYTHD->mem_root) Item_hex_string($1.str, $1.length); ++ Item *tmp= new (thd->mem_root) Item_hex_string($1.str, $1.length); + if (tmp == NULL) + MYSQL_YYABORT; + /* +@@ -10974,7 +10935,7 @@ + } + | BIN_NUM + { +- Item *tmp= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length); ++ Item *tmp= new (thd->mem_root) Item_bin_string($1.str, $1.length); + if (tmp == NULL) + MYSQL_YYABORT; + /* +@@ -10989,7 +10950,6 @@ + param_marker: + PARAM_MARKER + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Lex_input_stream *lip= YYLIP; + Item_param *item; +@@ -11022,38 +10982,38 @@ + | NUM_literal { $$ = $1; } + | NULL_SYM + { +- $$ = new (YYTHD->mem_root) Item_null(); ++ $$ = new (thd->mem_root) Item_null(); + if ($$ == NULL) + MYSQL_YYABORT; + YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT; + } + | FALSE_SYM + { +- $$= new (YYTHD->mem_root) Item_int((char*) "FALSE",0,1); ++ $$= new (thd->mem_root) Item_int((char*) "FALSE",0,1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRUE_SYM + { +- $$= new (YYTHD->mem_root) Item_int((char*) "TRUE",1,1); ++ $$= new (thd->mem_root) Item_int((char*) "TRUE",1,1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | HEX_NUM + { +- $$ = new (YYTHD->mem_root) Item_hex_string($1.str, $1.length); ++ $$ = new (thd->mem_root) Item_hex_string($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | BIN_NUM + { +- $$= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length); ++ $$= new (thd->mem_root) Item_bin_string($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | UNDERSCORE_CHARSET HEX_NUM + { +- Item *tmp= new (YYTHD->mem_root) Item_hex_string($2.str, $2.length); ++ Item *tmp= new (thd->mem_root) Item_hex_string($2.str, $2.length); + if (tmp == NULL) + MYSQL_YYABORT; + /* +@@ -11064,7 +11024,7 @@ + String *str= tmp->val_str((String*) 0); + + Item_string *item_str; +- item_str= new (YYTHD->mem_root) ++ item_str= new (thd->mem_root) + Item_string(NULL, /* name will be set in select_item */ + str ? str->ptr() : "", + str ? str->length() : 0, +@@ -11082,7 +11042,7 @@ + } + | UNDERSCORE_CHARSET BIN_NUM + { +- Item *tmp= new (YYTHD->mem_root) Item_bin_string($2.str, $2.length); ++ Item *tmp= new (thd->mem_root) Item_bin_string($2.str, $2.length); + if (tmp == NULL) + MYSQL_YYABORT; + /* +@@ -11093,7 +11053,7 @@ + String *str= tmp->val_str((String*) 0); + + Item_string *item_str; +- item_str= new (YYTHD->mem_root) ++ item_str= new (thd->mem_root) + Item_string(NULL, /* name will be set in select_item */ + str ? str->ptr() : "", + str ? str->length() : 0, +@@ -11117,7 +11077,7 @@ + NUM + { + int error; +- $$= new (YYTHD->mem_root) ++ $$= new (thd->mem_root) + Item_int($1.str, + (longlong) my_strtoll10($1.str, NULL, &error), + $1.length); +@@ -11127,7 +11087,7 @@ + | LONG_NUM + { + int error; +- $$= new (YYTHD->mem_root) ++ $$= new (thd->mem_root) + Item_int($1.str, + (longlong) my_strtoll10($1.str, NULL, &error), + $1.length); +@@ -11136,23 +11096,23 @@ + } + | ULONGLONG_NUM + { +- $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); ++ $$= new (thd->mem_root) Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | DECIMAL_NUM + { +- $$= new (YYTHD->mem_root) Item_decimal($1.str, $1.length, +- YYTHD->charset()); +- if (($$ == NULL) || (YYTHD->is_error())) ++ $$= new (thd->mem_root) Item_decimal($1.str, $1.length, ++ thd->charset()); ++ if (($$ == NULL) || (thd->is_error())) + { + MYSQL_YYABORT; + } + } + | FLOAT_NUM + { +- $$= new (YYTHD->mem_root) Item_float($1.str, $1.length); +- if (($$ == NULL) || (YYTHD->is_error())) ++ $$= new (thd->mem_root) Item_float($1.str, $1.length); ++ if (($$ == NULL) || (thd->is_error())) + { + MYSQL_YYABORT; + } +@@ -11172,7 +11132,7 @@ + ident '.' '*' + { + SELECT_LEX *sel= Select; +- $$= new (YYTHD->mem_root) Item_field(Lex->current_context(), ++ $$= new (thd->mem_root) Item_field(Lex->current_context(), + NullS, $1.str, "*"); + if ($$ == NULL) + MYSQL_YYABORT; +@@ -11180,7 +11140,6 @@ + } + | ident '.' ident '.' '*' + { +- THD *thd= YYTHD; + SELECT_LEX *sel= Select; + const char* schema= thd->client_capabilities & CLIENT_NO_SCHEMA ? + NullS : $1.str; +@@ -11200,7 +11159,6 @@ + simple_ident: + ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Lex_input_stream *lip= YYLIP; + sp_variable_t *spv; +@@ -11251,7 +11209,6 @@ + simple_ident_nospvar: + ident + { +- THD *thd= YYTHD; + SELECT_LEX *sel=Select; + if ((sel->parsing_place != IN_HAVING) || + (sel->get_in_sum_expr() > 0)) +@@ -11273,7 +11230,6 @@ + simple_ident_q: + ident '.' ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + + /* +@@ -11352,7 +11308,6 @@ + } + | '.' ident '.' ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + SELECT_LEX *sel= lex->current_select; + if (sel->no_table_names_allowed) +@@ -11377,7 +11332,6 @@ + } + | ident '.' ident '.' ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + SELECT_LEX *sel= lex->current_select; + const char* schema= (thd->client_capabilities & CLIENT_NO_SCHEMA ? +@@ -11445,7 +11399,7 @@ + } + | ident '.' ident + { +- $$= new Table_ident(YYTHD, $1,$3,0); ++ $$= new Table_ident(thd, $1,$3,0); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -11467,7 +11421,7 @@ + } + | ident '.' ident opt_wild + { +- $$= new Table_ident(YYTHD, $1,$3,0); ++ $$= new Table_ident(thd, $1,$3,0); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -11477,7 +11431,7 @@ + ident + { + LEX_STRING db={(char*) any_db,3}; +- $$= new Table_ident(YYTHD, db,$1,0); ++ $$= new Table_ident(thd, db,$1,0); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -11487,8 +11441,7 @@ + IDENT { $$= $1; } + | IDENT_QUOTED + { +- THD *thd= YYTHD; +- ++ + if (thd->charset_is_system_charset) + { + CHARSET_INFO *cs= system_charset_info; +@@ -11516,8 +11469,6 @@ + TEXT_STRING_sys: + TEXT_STRING + { +- THD *thd= YYTHD; +- + if (thd->charset_is_system_charset) + $$= $1; + else +@@ -11532,8 +11483,6 @@ + TEXT_STRING_literal: + TEXT_STRING + { +- THD *thd= YYTHD; +- + if (thd->charset_is_collation_connection) + $$= $1; + else +@@ -11548,8 +11497,6 @@ + TEXT_STRING_filesystem: + TEXT_STRING + { +- THD *thd= YYTHD; +- + if (thd->charset_is_character_set_filesystem) + $$= $1; + else +@@ -11566,7 +11513,6 @@ + IDENT_sys { $$=$1; } + | keyword + { +- THD *thd= YYTHD; + $$.str= thd->strmake($1.str, $1.length); + if ($$.str == NULL) + MYSQL_YYABORT; +@@ -11578,7 +11524,6 @@ + IDENT_sys { $$=$1; } + | keyword_sp + { +- THD *thd= YYTHD; + $$.str= thd->strmake($1.str, $1.length); + if ($$.str == NULL) + MYSQL_YYABORT; +@@ -11595,7 +11540,6 @@ + user: + ident_or_text + { +- THD *thd= YYTHD; + if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user)))) + MYSQL_YYABORT; + $$->user = $1; +@@ -11609,7 +11553,6 @@ + } + | ident_or_text '@' ident_or_text + { +- THD *thd= YYTHD; + if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user)))) + MYSQL_YYABORT; + $$->user = $1; $$->host=$3; +@@ -11628,7 +11571,7 @@ + } + | CURRENT_USER optional_braces + { +- if (!($$=(LEX_USER*) YYTHD->alloc(sizeof(st_lex_user)))) ++ if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user)))) + MYSQL_YYABORT; + /* + empty LEX_USER means current_user and +@@ -11991,7 +11934,6 @@ + + option_type_value: + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Lex_input_stream *lip= YYLIP; + +@@ -12022,7 +11964,6 @@ + } + ext_option_value + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Lex_input_stream *lip= YYLIP; + +@@ -12105,7 +12046,6 @@ + sys_option_value: + option_type internal_variable_name equal set_expr_or_default + { +- THD *thd= YYTHD; + LEX *lex= Lex; + LEX_STRING *name= &$2.base_name; + +@@ -12117,7 +12057,7 @@ + my_parse_error(ER(ER_SYNTAX_ERROR)); + MYSQL_YYABORT; + } +- if (set_trigger_new_row(YYTHD, name, $4)) ++ if (set_trigger_new_row(thd, name, $4)) + MYSQL_YYABORT; + } + else if ($2.var) +@@ -12147,7 +12087,6 @@ + } + | option_type TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types + { +- THD *thd= YYTHD; + LEX *lex=Lex; + lex->option_type= $1; + Item *item= new (thd->mem_root) Item_int((int32) $5); +@@ -12167,7 +12106,7 @@ + '@' ident_or_text equal expr + { + Item_func_set_user_var *item; +- item= new (YYTHD->mem_root) Item_func_set_user_var($2, $4); ++ item= new (thd->mem_root) Item_func_set_user_var($2, $4); + if (item == NULL) + MYSQL_YYABORT; + set_var_user *var= new set_var_user(item); +@@ -12177,7 +12116,6 @@ + } + | '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default + { +- THD *thd= YYTHD; + struct sys_var_with_base tmp= $4; + /* Lookup if necessary: must be a system variable. */ + if (tmp.var == NULL) +@@ -12190,7 +12128,6 @@ + } + | charset old_or_new_charset_name_or_default + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + CHARSET_INFO *cs2; + cs2= $2 ? $2: global_system_variables.character_set_client; +@@ -12238,7 +12175,6 @@ + } + | PASSWORD equal text_or_password + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + LEX_USER *user; + sp_pcontext *spc= lex->spcont; +@@ -12278,7 +12214,6 @@ + internal_variable_name: + ident + { +- THD *thd= YYTHD; + sp_pcontext *spc= thd->lex->spcont; + sp_variable_t *spv; + +@@ -12337,7 +12272,7 @@ + } + else + { +- sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length); ++ sys_var *tmp=find_sys_var(thd, $3.str, $3.length); + if (!tmp) + MYSQL_YYABORT; + if (!tmp->is_struct()) +@@ -12348,7 +12283,7 @@ + } + | DEFAULT '.' ident + { +- sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length); ++ sys_var *tmp=find_sys_var(thd, $3.str, $3.length); + if (!tmp) + MYSQL_YYABORT; + if (!tmp->is_struct()) +@@ -12370,16 +12305,16 @@ + TEXT_STRING { $$=$1.str;} + | PASSWORD '(' TEXT_STRING ')' + { +- $$= $3.length ? YYTHD->variables.old_passwords ? +- Item_func_old_password::alloc(YYTHD, $3.str, $3.length) : +- Item_func_password::alloc(YYTHD, $3.str, $3.length) : ++ $$= $3.length ? thd->variables.old_passwords ? ++ Item_func_old_password::alloc(thd, $3.str, $3.length) : ++ Item_func_password::alloc(thd, $3.str, $3.length) : + $3.str; + if ($$ == NULL) + MYSQL_YYABORT; + } + | OLD_PASSWORD '(' TEXT_STRING ')' + { +- $$= $3.length ? Item_func_old_password::alloc(YYTHD, $3.str, ++ $$= $3.length ? Item_func_old_password::alloc(thd, $3.str, + $3.length) : + $3.str; + if ($$ == NULL) +@@ -12393,19 +12328,19 @@ + | DEFAULT { $$=0; } + | ON + { +- $$=new (YYTHD->mem_root) Item_string("ON", 2, system_charset_info); ++ $$=new (thd->mem_root) Item_string("ON", 2, system_charset_info); + if ($$ == NULL) + MYSQL_YYABORT; + } + | ALL + { +- $$=new (YYTHD->mem_root) Item_string("ALL", 3, system_charset_info); ++ $$=new (thd->mem_root) Item_string("ALL", 3, system_charset_info); + if ($$ == NULL) + MYSQL_YYABORT; + } + | BINARY + { +- $$=new (YYTHD->mem_root) Item_string("binary", 6, system_charset_info); ++ $$=new (thd->mem_root) Item_string("binary", 6, system_charset_info); + if ($$ == NULL) + MYSQL_YYABORT; + } +@@ -12443,7 +12378,7 @@ + table_ident opt_table_alias lock_option + { + thr_lock_type lock_type= (thr_lock_type) $3; +- if (!Select->add_table_to_list(YYTHD, $1, $2, 0, lock_type)) ++ if (!Select->add_table_to_list(thd, $1, $2, 0, lock_type)) + MYSQL_YYABORT; + /* If table is to be write locked, protect from a impending GRL. */ + if (lock_type >= TL_WRITE_ALLOW_WRITE) +@@ -12514,7 +12449,7 @@ + lex->expr_allows_subselect= FALSE; + lex->sql_command = SQLCOM_HA_READ; + lex->ha_rkey_mode= HA_READ_KEY_EXACT; /* Avoid purify warnings */ +- Item *one= new (YYTHD->mem_root) Item_int((int32) 1); ++ Item *one= new (thd->mem_root) Item_int((int32) 1); + if (one == NULL) + MYSQL_YYABORT; + lex->current_select->select_limit= one; +@@ -12836,10 +12771,10 @@ + $$=$1; $1->password=$4; + if ($4.length) + { +- if (YYTHD->variables.old_passwords) ++ if (thd->variables.old_passwords) + { + char *buff= +- (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1); ++ (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1); + if (buff == NULL) + MYSQL_YYABORT; + my_make_scrambled_password_323(buff, $4.str, $4.length); +@@ -12849,7 +12784,7 @@ + else + { + char *buff= +- (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1); ++ (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1); + if (buff == NULL) + MYSQL_YYABORT; + my_make_scrambled_password(buff, $4.str, $4.length); +@@ -12881,7 +12816,7 @@ + column_list_id: + ident + { +- String *new_str = new (YYTHD->mem_root) String((const char*) $1.str,$1.length,system_charset_info); ++ String *new_str = new (thd->mem_root) String((const char*) $1.str,$1.length,system_charset_info); + if (new_str == NULL) + MYSQL_YYABORT; + List_iterator iter(Lex->columns); +@@ -12981,14 +12916,14 @@ + + opt_chain: + /* empty */ +- { $$= (YYTHD->variables.completion_type == 1); } ++ { $$= (thd->variables.completion_type == 1); } + | AND_SYM NO_SYM CHAIN_SYM { $$=0; } + | AND_SYM CHAIN_SYM { $$=1; } + ; + + opt_release: + /* empty */ +- { $$= (YYTHD->variables.completion_type == 2); } ++ { $$= (thd->variables.completion_type == 2); } + | RELEASE_SYM { $$=1; } + | NO_SYM RELEASE_SYM { $$=0; } + ; +@@ -13102,7 +13037,6 @@ + + union_order_or_limit: + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + DBUG_ASSERT(lex->current_select->linkage != GLOBAL_OPTIONS_TYPE); + SELECT_LEX *sel= lex->current_select; +@@ -13118,7 +13052,6 @@ + } + order_or_limit + { +- THD *thd= YYTHD; + thd->lex->current_select->no_table_names_allowed= 0; + thd->where= ""; + } +@@ -13255,14 +13188,14 @@ + from older master servers (i.e. to create non-suid trigger in this + case). + */ +- YYTHD->lex->definer= 0; ++ thd->lex->definer= 0; + } + ; + + definer: + DEFINER_SYM EQ user + { +- YYTHD->lex->definer= get_current_user(YYTHD, $3); ++ thd->lex->definer= get_current_user(thd, $3); + } + ; + +@@ -13307,7 +13240,6 @@ + view_tail: + view_suid VIEW_SYM table_ident + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + lex->sql_command= SQLCOM_CREATE_VIEW; + /* first table in list is target VIEW name */ +@@ -13347,7 +13279,6 @@ + } + view_select_aux view_check_option + { +- THD *thd= YYTHD; + LEX *lex= Lex; + uint len= YYLIP->get_cpp_ptr() - lex->create_view_select.str; + void *create_view_select= thd->memdup(lex->create_view_select.str, len); +@@ -13403,7 +13334,6 @@ + EACH_SYM + ROW_SYM + { /* $15 */ +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Lex_input_stream *lip= YYLIP; + sp_head *sp; +@@ -13437,8 +13367,8 @@ + sp_head *sp= lex->sphead; + + lex->sql_command= SQLCOM_CREATE_TRIGGER; +- sp->set_stmt_end(YYTHD); +- sp->restore_thd_mem_root(YYTHD); ++ sp->set_stmt_end(thd); ++ sp->restore_thd_mem_root(thd); + + if (sp->is_not_allowed_in_function("trigger")) + MYSQL_YYABORT; +@@ -13448,7 +13378,7 @@ + sp_proc_stmt alternatives are not saving/restoring LEX, so + lex->query_tables can be wiped out. + */ +- if (!lex->select_lex.add_table_to_list(YYTHD, $9, ++ if (!lex->select_lex.add_table_to_list(thd, $9, + (LEX_STRING*) 0, + TL_OPTION_UPDATING, + TL_IGNORE)) +@@ -13466,7 +13396,6 @@ + AGGREGATE_SYM remember_name FUNCTION_SYM ident + RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + if (is_native_function(thd, & $4)) + { +@@ -13484,7 +13413,6 @@ + | remember_name FUNCTION_SYM ident + RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + if (is_native_function(thd, & $3)) + { +@@ -13507,7 +13435,6 @@ + sp_name /* $3 */ + '(' /* $4 */ + { /* $5 */ +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Lex_input_stream *lip= YYLIP; + sp_head *sp; +@@ -13565,7 +13492,7 @@ + MYSQL_YYABORT; + } + +- if (sp->fill_field_definition(YYTHD, lex, ++ if (sp->fill_field_definition(thd, lex, + (enum enum_field_types) $11, + &sp->m_return_field_def)) + MYSQL_YYABORT; +@@ -13574,7 +13501,6 @@ + } + sp_c_chistics /* $13 */ + { /* $14 */ +- THD *thd= YYTHD; + LEX *lex= thd->lex; + Lex_input_stream *lip= YYLIP; + +@@ -13583,7 +13509,6 @@ + } + sp_proc_stmt /* $15 */ + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + sp_head *sp= lex->sphead; + +@@ -13654,10 +13579,10 @@ + sp= new sp_head(); + if (sp == NULL) + MYSQL_YYABORT; +- sp->reset_thd_mem_root(YYTHD); ++ sp->reset_thd_mem_root(thd); + sp->init(lex); + sp->m_type= TYPE_ENUM_PROCEDURE; +- sp->init_sp_name(YYTHD, $3); ++ sp->init_sp_name(thd, $3); + + lex->sphead= sp; + } +@@ -13672,7 +13597,6 @@ + sp_pdparam_list + ')' + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + + lex->sphead->m_param_end= YYLIP->get_cpp_tok_start(); +@@ -13680,7 +13604,6 @@ + } + sp_c_chistics + { +- THD *thd= YYTHD; + LEX *lex= thd->lex; + + lex->sphead->m_chistics= &lex->sp_chistics; +@@ -13691,9 +13614,9 @@ + LEX *lex= Lex; + sp_head *sp= lex->sphead; + +- sp->set_stmt_end(YYTHD); ++ sp->set_stmt_end(thd); + lex->sql_command= SQLCOM_CREATE_PROCEDURE; +- sp->restore_thd_mem_root(YYTHD); ++ sp->restore_thd_mem_root(thd); + } + ; + +@@ -13730,21 +13653,21 @@ + text_string + { + MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE); +- if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID)))) ++ if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))) + MYSQL_YYABORT; + Lex->xid->set(1L, $1->ptr(), $1->length(), 0, 0); + } + | text_string ',' text_string + { + MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE); +- if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID)))) ++ if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))) + MYSQL_YYABORT; + Lex->xid->set(1L, $1->ptr(), $1->length(), $3->ptr(), $3->length()); + } + | text_string ',' text_string ',' ulong_num + { + MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE); +- if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID)))) ++ if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))) + MYSQL_YYABORT; + Lex->xid->set($5, $1->ptr(), $1->length(), $3->ptr(), $3->length()); + } diff --git a/buildroot/package/oracle-mysql/0006-no-force-static-build.patch b/buildroot/package/oracle-mysql/0006-no-force-static-build.patch new file mode 100644 index 0000000..8172a98 --- /dev/null +++ b/buildroot/package/oracle-mysql/0006-no-force-static-build.patch @@ -0,0 +1,18 @@ +configure: do not force a static link for non-installed programs + +Otherwise, it tries to link against a static libz, which may not exist +in a shared-only system. + +Signed-off-by: "Yann E. MORIN" + +diff -durN mysql-5.1.73.orig/configure.in mysql-5.1.73/configure.in +--- mysql-5.1.73.orig/configure.in 2014-12-22 00:04:46.550508208 +0100 ++++ mysql-5.1.73/configure.in 2014-12-22 00:05:56.415307480 +0100 +@@ -562,7 +562,6 @@ + AC_MSG_ERROR([MySQL requires an ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.]) + fi + +-NOINST_LDFLAGS="-static" + + static_nss="" + STATIC_NSS_FLAGS="" diff --git a/buildroot/package/oracle-mysql/0007-dont-install-in-mysql-directory.patch b/buildroot/package/oracle-mysql/0007-dont-install-in-mysql-directory.patch new file mode 100644 index 0000000..971b9ce --- /dev/null +++ b/buildroot/package/oracle-mysql/0007-dont-install-in-mysql-directory.patch @@ -0,0 +1,182 @@ +Don't install in mysql directory + +Installing libraries in a subdirectory of /usr/lib leads to no end of +trouble. It requires either setting a RUN_PATH in the ELF files linked +with it or adding the path to ld.so.conf and calling ldconfig on the +target. + +So to simplify things, put everything in /usr/lib instead of +/usr/lib/mysql + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) + +diff -Nrup mysql-5.1.73.orig/dbug/Makefile.am mysql-5.1.73/dbug/Makefile.am +--- mysql-5.1.73.orig/dbug/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/dbug/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -17,7 +17,7 @@ + + INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include + LDADD = libdbug.a ../mysys/libmysys.a ../strings/libmystrings.a +-pkglib_LIBRARIES = libdbug.a ++lib_LIBRARIES = libdbug.a + noinst_HEADERS = dbug_long.h + libdbug_a_SOURCES = dbug.c sanity.c + EXTRA_DIST = CMakeLists.txt example1.c example2.c example3.c \ +diff -Nrup mysql-5.1.73.orig/libmysql/Makefile.shared mysql-5.1.73/libmysql/Makefile.shared +--- mysql-5.1.73.orig/libmysql/Makefile.shared 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/libmysql/Makefile.shared 2015-12-14 00:34:58.567937603 +0100 +@@ -25,7 +25,7 @@ MYSQLBASEdir= $(prefix) + ## We'll use CLIENT_EXTRA_LDFLAGS for threaded and non-threaded + ## until someone complains that they need separate options. + LDADD = @CLIENT_EXTRA_LDFLAGS@ $(target) +-pkglib_LTLIBRARIES = $(target) ++lib_LTLIBRARIES = $(target) + + noinst_PROGRAMS = conf_to_src + +diff -Nrup mysql-5.1.73.orig/libmysqld/Makefile.am mysql-5.1.73/libmysqld/Makefile.am +--- mysql-5.1.73.orig/libmysqld/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/libmysqld/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -38,7 +38,7 @@ INCLUDES= -I$(top_builddir)/include -I$ + @condition_dependent_plugin_includes@ + + noinst_LIBRARIES = libmysqld_int.a +-pkglib_LIBRARIES = libmysqld.a ++lib_LIBRARIES = libmysqld.a + SUBDIRS = . examples + libmysqld_sources= libmysqld.c lib_sql.cc emb_qcache.cc + libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \ +diff -Nrup mysql-5.1.73.orig/mysys/Makefile.am mysql-5.1.73/mysys/Makefile.am +--- mysql-5.1.73.orig/mysys/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/mysys/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -18,7 +18,7 @@ MYSQLSHAREdir = $(pkgdatadir) + MYSQLBASEdir= $(prefix) + INCLUDES = @ZLIB_INCLUDES@ -I$(top_builddir)/include \ + -I$(top_srcdir)/include -I$(srcdir) +-pkglib_LIBRARIES = libmysys.a ++lib_LIBRARIES = libmysys.a + LDADD = libmysys.a $(top_builddir)/strings/libmystrings.a $(top_builddir)/dbug/libdbug.a + noinst_HEADERS = mysys_priv.h my_static.h my_handler_errors.h + libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c my_mmap.c \ +diff -Nrup mysql-5.1.73.orig/storage/csv/Makefile.am mysql-5.1.73/storage/csv/Makefile.am +--- mysql-5.1.73.orig/storage/csv/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/storage/csv/Makefile.am 2015-12-14 00:34:58.563937596 +0100 +@@ -30,7 +30,7 @@ DEFS = @DEFS@ + noinst_HEADERS = ha_tina.h transparent_file.h + + EXTRA_LTLIBRARIES = ha_csv.la +-pkglib_LTLIBRARIES = @plugin_csv_shared_target@ ++lib_LTLIBRARIES = @plugin_csv_shared_target@ + ha_csv_la_LDFLAGS = -module -rpath $(MYSQLLIBdir) + ha_csv_la_CXXFLAGS = $(AM_CXXFLAGS) -DMYSQL_PLUGIN + ha_csv_la_SOURCES = transparent_file.cc ha_tina.cc +diff -Nrup mysql-5.1.73.orig/storage/heap/Makefile.am mysql-5.1.73/storage/heap/Makefile.am +--- mysql-5.1.73.orig/storage/heap/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/storage/heap/Makefile.am 2015-12-14 00:34:58.563937596 +0100 +@@ -26,7 +26,7 @@ WRAPLIBS= + LDADD = + + DEFS = @DEFS@ +-pkglib_LIBRARIES = libheap.a ++lib_LIBRARIES = libheap.a + noinst_PROGRAMS = hp_test1 hp_test2 + noinst_LIBRARIES = libheap.a + hp_test1_LDFLAGS = @NOINST_LDFLAGS@ +diff -Nrup mysql-5.1.73.orig/storage/myisam/Makefile.am mysql-5.1.73/storage/myisam/Makefile.am +--- mysql-5.1.73.orig/storage/myisam/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/storage/myisam/Makefile.am 2015-12-14 00:34:58.563937596 +0100 +@@ -30,7 +30,7 @@ DEFS = @DEFS@ + EXTRA_DIST = mi_test_all.sh mi_test_all.res ft_stem.c CMakeLists.txt plug.in + pkgdata_DATA = mi_test_all mi_test_all.res + +-pkglib_LIBRARIES = libmyisam.a ++lib_LIBRARIES = libmyisam.a + bin_PROGRAMS = myisamchk myisamlog myisampack myisam_ftdump + myisamchk_DEPENDENCIES= $(LIBRARIES) + myisamchk_LDADD= @CLIENT_EXTRA_LDFLAGS@ libmyisam.a \ +diff -Nrup mysql-5.1.73.orig/storage/myisammrg/Makefile.am mysql-5.1.73/storage/myisammrg/Makefile.am +--- mysql-5.1.73.orig/storage/myisammrg/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/storage/myisammrg/Makefile.am 2015-12-14 00:34:58.563937596 +0100 +@@ -26,7 +26,7 @@ WRAPLIBS= + LDADD = + + DEFS = @DEFS@ +-pkglib_LIBRARIES = libmyisammrg.a ++lib_LIBRARIES = libmyisammrg.a + noinst_HEADERS = myrg_def.h ha_myisammrg.h + noinst_LIBRARIES = libmyisammrg.a + libmyisammrg_a_SOURCES = myrg_open.c myrg_extra.c myrg_info.c myrg_locking.c \ +diff -Nrup mysql-5.1.73.orig/strings/Makefile.am mysql-5.1.73/strings/Makefile.am +--- mysql-5.1.73.orig/strings/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/strings/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -16,7 +16,7 @@ + # This file is public domain and comes with NO WARRANTY of any kind + + INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include +-pkglib_LIBRARIES = libmystrings.a ++lib_LIBRARIES = libmystrings.a + + # Exact one of ASSEMBLER_X + if ASSEMBLER_x86 +@@ -69,15 +69,15 @@ conf_to_src_LDFLAGS= @NOINST_LDFLAGS@ + + FLAGS=$(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) @NOINST_LDFLAGS@ + +-str_test: str_test.c $(pkglib_LIBRARIES) +- $(LINK) $(FLAGS) -DMAIN $(INCLUDES) $(srcdir)/str_test.c $(LDADD) $(pkglib_LIBRARIES) ++str_test: str_test.c $(lib_LIBRARIES) ++ $(LINK) $(FLAGS) -DMAIN $(INCLUDES) $(srcdir)/str_test.c $(LDADD) $(lib_LIBRARIES) + + uctypedump: uctypedump.c + $(LINK) $(INCLUDES) $(srcdir)/uctypedump.c + +-test_decimal$(EXEEXT): decimal.c $(pkglib_LIBRARIES) ++test_decimal$(EXEEXT): decimal.c $(lib_LIBRARIES) + $(CP) $(srcdir)/decimal.c ./test_decimal.c +- $(LINK) $(FLAGS) -DMAIN ./test_decimal.c $(LDADD) $(pkglib_LIBRARIES) ++ $(LINK) $(FLAGS) -DMAIN ./test_decimal.c $(LDADD) $(lib_LIBRARIES) + $(RM) -f ./test_decimal.c + + # Don't update the files from bitkeeper +diff -Nrup mysql-5.1.73.orig/tests/Makefile.am mysql-5.1.73/tests/Makefile.am +--- mysql-5.1.73.orig/tests/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/tests/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -51,11 +51,11 @@ mysql_client_test.o: mysql_client_fw.c + + insert_test_SOURCES= insert_test.c + select_test_SOURCES= select_test.c +-insert_test_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) +-select_test_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) ++insert_test_DEPENDENCIES= $(LIBRARIES) $(lib_LTLIBRARIES) ++select_test_DEPENDENCIES= $(LIBRARIES) $(lib_LTLIBRARIES) + + bug25714_SOURCES= bug25714.c +-bug25714_DEPENDENCIES= $(LIBRARIES) $(pkglib_LTLIBRARIES) ++bug25714_DEPENDENCIES= $(LIBRARIES) $(lib_LTLIBRARIES) + + # Fix for mit-threads + DEFS = -DMYSQL_CLIENT_NO_THREADS +diff -Nrup mysql-5.1.73.orig/vio/Makefile.am mysql-5.1.73/vio/Makefile.am +--- mysql-5.1.73.orig/vio/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/vio/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -16,7 +16,7 @@ + INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ + $(openssl_includes) + LDADD = @CLIENT_EXTRA_LDFLAGS@ $(openssl_libs) $(yassl_libs) +-pkglib_LIBRARIES = libvio.a ++lib_LIBRARIES = libvio.a + + noinst_HEADERS = vio_priv.h + +diff -Nrup mysql-5.1.73.orig/zlib/Makefile.am mysql-5.1.73/zlib/Makefile.am +--- mysql-5.1.73.orig/zlib/Makefile.am 2013-11-04 19:52:27.000000000 +0100 ++++ mysql-5.1.73/zlib/Makefile.am 2015-12-14 00:34:58.567937603 +0100 +@@ -19,7 +19,7 @@ INCLUDES= -I$(top_builddir)/include -I$ + + LIBS= $(NON_THREADED_LIBS) + +-pkglib_LTLIBRARIES = libz.la ++lib_LTLIBRARIES = libz.la + noinst_LTLIBRARIES = libzlt.la + + libz_la_LDFLAGS = -static diff --git a/buildroot/package/oracle-mysql/0008-fix-type-conversion.patch b/buildroot/package/oracle-mysql/0008-fix-type-conversion.patch new file mode 100644 index 0000000..65babf4 --- /dev/null +++ b/buildroot/package/oracle-mysql/0008-fix-type-conversion.patch @@ -0,0 +1,22 @@ +Fix type conversion + +Fixes the following build error with gcc 6.x: + +protocol.cc:27:40: error: narrowing conversion of ''\37777777776'' from 'char' to 'uchar {aka unsigned char}' inside { } [-Wnarrowing] + static uchar eof_buff[1]= { (char) 254 }; /* Marker for end of fields */ + +Signed-off-by: Thomas Petazzoni + +Index: b/server-tools/instance-manager/protocol.cc +=================================================================== +--- a/server-tools/instance-manager/protocol.cc ++++ b/server-tools/instance-manager/protocol.cc +@@ -24,7 +24,7 @@ + #include + + +-static uchar eof_buff[1]= { (char) 254 }; /* Marker for end of fields */ ++static uchar eof_buff[1]= { (uchar) 254 }; /* Marker for end of fields */ + static const char ERROR_PACKET_CODE= (char) 255; + + diff --git a/buildroot/package/oracle-mysql/0008-gcc7.patch b/buildroot/package/oracle-mysql/0008-gcc7.patch new file mode 100644 index 0000000..321112d --- /dev/null +++ b/buildroot/package/oracle-mysql/0008-gcc7.patch @@ -0,0 +1,45 @@ +Fix gcc7 compile + +mysql.cc: In function 'void build_completion_hash(bool, bool)': +mysql.cc:2687:37: error: invalid conversion from 'char' to 'char*' [-fpermissive] + field_names[i][num_fields*2]= '\0'; + ^~~~ +Patch was partly backported from upstream commit: +https://github.com/mysql/mysql-server/commit/ae21683d980d5fe9e39bd0193827ea3604256eb9 + +Signed-off-by: Bernd Kuhls +[Thomas: add more gcc 7.x fixes in instance_map.cc.] +Signed-off-by: Thomas Petazzoni + +Index: b/client/mysql.cc +=================================================================== +--- a/client/mysql.cc ++++ b/client/mysql.cc +@@ -2684,7 +2684,7 @@ + mysql_free_result(fields); + break; + } +- field_names[i][num_fields*2]= '\0'; ++ field_names[i][num_fields*2]= NULL; + j=0; + while ((sql_field=mysql_fetch_field(fields))) + { +Index: b/server-tools/instance-manager/instance_map.cc +=================================================================== +--- a/server-tools/instance-manager/instance_map.cc ++++ b/server-tools/instance-manager/instance_map.cc +@@ -526,12 +526,12 @@ + Options::Main::config_file); + + argv_options[1]= defaults_file_arg; +- argv_options[2]= '\0'; ++ argv_options[2]= NULL; + + argc= 2; + } + else +- argv_options[1]= '\0'; ++ argv_options[1]= NULL; + + /* + If the routine failed, we'll simply fallback to defaults in diff --git a/buildroot/package/oracle-mysql/S97mysqld b/buildroot/package/oracle-mysql/S97mysqld new file mode 100644 index 0000000..110ca2c --- /dev/null +++ b/buildroot/package/oracle-mysql/S97mysqld @@ -0,0 +1,39 @@ +#!/bin/sh + +MYSQL_DIR="/var/mysql" +MYSQL_USER="mysql" + +[ -r /etc/default/mysql ] && . /etc/default/mysql + +case "$1" in + start) + if [ ! -d $MYSQL_DIR/mysql ] ; then + echo "Creating MySQL system tables..." + mysql_install_db --user=$MYSQL_USER --ldata=$MYSQL_DIR + fi + + # mysqld runs as user mysql, but /run is only writable by root + # so create a subdirectory for mysql. + install -d -o mysql -g root -m 0755 /run/mysql + + # We don't use start-stop-daemon because mysqld has + # its own wrapper script. + printf "Starting mysql..." + /usr/bin/mysqld_safe --pid-file=/run/mysql/mysqld.pid & + echo "done." + ;; + stop) + printf "Stopping mysql..." + if test -f /run/mysql/mysqld.pid ; then + kill `cat /run/mysql/mysqld.pid` + fi + echo "done." + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: /etc/init.d/mysqld {start|stop|restart}" + ;; +esac diff --git a/buildroot/package/oracle-mysql/mysqld.service b/buildroot/package/oracle-mysql/mysqld.service new file mode 100644 index 0000000..c9e5e42 --- /dev/null +++ b/buildroot/package/oracle-mysql/mysqld.service @@ -0,0 +1,13 @@ +[Unit] +Description=MySQL database server + +[Service] +ExecStartPre=/bin/sh -c 'test -d /var/mysql/mysql || mysql_install_db --user=mysql --ldata=/var/mysql' +ExecStart=/usr/bin/mysqld_safe +Restart=always +User=mysql +RuntimeDirectory=mysql +RuntimeDirectoryMode=0755 + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/oracle-mysql/oracle-mysql.hash b/buildroot/package/oracle-mysql/oracle-mysql.hash new file mode 100644 index 0000000..bc309ec --- /dev/null +++ b/buildroot/package/oracle-mysql/oracle-mysql.hash @@ -0,0 +1,4 @@ +# From https://downloads.mariadb.com/archives/mysql-5.1/mysql-5.1.73.tar.gz.md5 +md5 887f869bcc757957067b9198f707f32f mysql-5.1.73.tar.gz +# Locally computed +sha256 05ebe21305408b24407d14b77607a3e5ffa3c300e03f1359d3066f301989dcb5 mysql-5.1.73.tar.gz diff --git a/buildroot/package/oracle-mysql/oracle-mysql.mk b/buildroot/package/oracle-mysql/oracle-mysql.mk new file mode 100644 index 0000000..7da5c54 --- /dev/null +++ b/buildroot/package/oracle-mysql/oracle-mysql.mk @@ -0,0 +1,135 @@ +################################################################################ +# +# oracle-mysql +# +################################################################################ + +ORACLE_MYSQL_VERSION_MAJOR = 5.1 +ORACLE_MYSQL_VERSION = $(ORACLE_MYSQL_VERSION_MAJOR).73 +ORACLE_MYSQL_SOURCE = mysql-$(ORACLE_MYSQL_VERSION).tar.gz +ORACLE_MYSQL_SITE = http://dev.mysql.com/get/Downloads/MySQL-$(ORACLE_MYSQL_VERSION_MAJOR) +ORACLE_MYSQL_INSTALL_STAGING = YES +ORACLE_MYSQL_DEPENDENCIES = readline ncurses +ORACLE_MYSQL_AUTORECONF = YES +ORACLE_MYSQL_LICENSE = GPL-2.0 +ORACLE_MYSQL_LICENSE_FILES = README COPYING +ORACLE_MYSQL_PROVIDES = mysql + +# Unix socket. This variable can also be consulted by other buildroot packages +MYSQL_SOCKET = /run/mysql/mysql.sock + +ORACLE_MYSQL_CONF_ENV = \ + ac_cv_sys_restartable_syscalls=yes \ + ac_cv_path_PS=/bin/ps \ + ac_cv_FIND_PROC="/bin/ps p \$\$PID | grep -v grep | grep mysqld > /dev/null" \ + ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes \ + ac_cv_have_decl_HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS=no \ + ac_cv_have_decl_HAVE_IB_GCC_ATOMIC_BUILTINS=yes \ + mysql_cv_new_rl_interface=yes + +ORACLE_MYSQL_CONF_OPTS = \ + --without-ndb-binlog \ + --without-docs \ + --without-man \ + --without-libedit \ + --without-readline \ + --with-low-memory \ + --enable-thread-safe-client \ + --with-unix-socket-path=$(MYSQL_SOCKET) \ + --disable-mysql-maintainer-mode + +# host-oracle-mysql only installs what is needed to build mysql, i.e. the +# gen_lex_hash tool, and it only builds the parts that are needed to +# create this tool +HOST_ORACLE_MYSQL_DEPENDENCIES = host-zlib host-ncurses + +HOST_ORACLE_MYSQL_CONF_OPTS = \ + --with-embedded-server \ + --disable-mysql-maintainer-mode + +define HOST_ORACLE_MYSQL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/include my_config.h + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/mysys libmysys.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/strings libmystrings.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/vio libvio.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/dbug libdbug.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/regex libregex.a + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/sql gen_lex_hash +endef + +define HOST_ORACLE_MYSQL_INSTALL_CMDS + $(INSTALL) -m 0755 $(@D)/sql/gen_lex_hash $(HOST_DIR)/bin/ +endef + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ORACLE_MYSQL_DEPENDENCIES += openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ORACLE_MYSQL_DEPENDENCIES += zlib +endif + +ifeq ($(BR2_PACKAGE_ORACLE_MYSQL_SERVER),y) +ORACLE_MYSQL_DEPENDENCIES += host-oracle-mysql host-bison + +ORACLE_MYSQL_CONF_OPTS += \ + --localstatedir=/var/mysql \ + --with-atomic-ops=up \ + --with-embedded-server \ + --without-query-cache \ + --without-plugin-partition \ + --without-plugin-daemon_example \ + --without-plugin-ftexample \ + --without-plugin-archive \ + --without-plugin-blackhole \ + --without-plugin-example \ + --without-plugin-federated \ + --without-plugin-ibmdb2i \ + --without-plugin-innobase \ + --without-plugin-innodb_plugin \ + --without-plugin-ndbcluster + +# Debugging is only available for the server, so no need for +# this if-block outside of the server if-block +ifeq ($(BR2_ENABLE_DEBUG),y) +ORACLE_MYSQL_CONF_OPTS += --with-debug=full +else +ORACLE_MYSQL_CONF_OPTS += --without-debug +endif + +define ORACLE_MYSQL_USERS + mysql -1 nogroup -1 * /var/mysql - - MySQL daemon +endef + +define ORACLE_MYSQL_ADD_FOLDER + $(INSTALL) -d $(TARGET_DIR)/var/mysql +endef + +ORACLE_MYSQL_POST_INSTALL_TARGET_HOOKS += ORACLE_MYSQL_ADD_FOLDER + +define ORACLE_MYSQL_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(ORACLE_MYSQL_PKGDIR)/S97mysqld \ + $(TARGET_DIR)/etc/init.d/S97mysqld +endef + +define ORACLE_MYSQL_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(ORACLE_MYSQL_PKGDIR)/mysqld.service \ + $(TARGET_DIR)/usr/lib/systemd/system/mysqld.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/mysqld.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/mysqld.service +endef + +else +ORACLE_MYSQL_CONF_OPTS += \ + --without-server +endif + +define ORACLE_MYSQL_REMOVE_TEST_PROGS + rm -rf $(TARGET_DIR)/usr/mysql-test $(TARGET_DIR)/usr/sql-bench +endef + +ORACLE_MYSQL_POST_INSTALL_TARGET_HOOKS += ORACLE_MYSQL_REMOVE_TEST_PROGS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/orbit/Config.in b/buildroot/package/orbit/Config.in new file mode 100644 index 0000000..8df42a8 --- /dev/null +++ b/buildroot/package/orbit/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_ORBIT + bool "orbit" + depends on BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT + # These are runtime dependencies + select BR2_PACKAGE_LPEG + select BR2_PACKAGE_LUAFILESYSTEM + select BR2_PACKAGE_WSAPI_XAVANTE + help + An MVC web framework for Lua. The design is inspired by + lightweight Ruby frameworks such as Camping + + http://keplerproject.github.com/orbit + +comment "orbit needs a Lua 5.1 interpreter" + depends on !BR2_PACKAGE_LUA_5_1 + depends on !BR2_PACKAGE_LUAJIT diff --git a/buildroot/package/orbit/orbit.hash b/buildroot/package/orbit/orbit.hash new file mode 100644 index 0000000..9662a65 --- /dev/null +++ b/buildroot/package/orbit/orbit.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 91e3c514d5b86918db83666c8889635bb2d50c71d1ab3aeb69c6469c9424089b orbit-2.2.4-1.src.rock diff --git a/buildroot/package/orbit/orbit.mk b/buildroot/package/orbit/orbit.mk new file mode 100644 index 0000000..3329439 --- /dev/null +++ b/buildroot/package/orbit/orbit.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# orbit +# +################################################################################ + +ORBIT_VERSION_UPSTREAM = 2.2.4 +ORBIT_VERSION = $(ORBIT_VERSION_UPSTREAM)-1 +ORBIT_SUBDIR = orbit +ORBIT_LICENSE = MIT +ORBIT_LICENSE_FILES = $(ORBIT_SUBDIR)/doc/us/license.md + +$(eval $(luarocks-package)) diff --git a/buildroot/package/orc/Config.in b/buildroot/package/orc/Config.in new file mode 100644 index 0000000..7943ecf --- /dev/null +++ b/buildroot/package/orc/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_ORC + bool "orc" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_BINFMT_FLAT # configure doesn't know uclinux + help + Orc is a library and set of tools for compiling and executing + very simple programs that operate on arrays of data. + + https://gstreamer.freedesktop.org/projects/orc.html + +comment "orc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_BINFMT_FLAT diff --git a/buildroot/package/orc/orc.hash b/buildroot/package/orc/orc.hash new file mode 100644 index 0000000..f47a9cf --- /dev/null +++ b/buildroot/package/orc/orc.hash @@ -0,0 +1,2 @@ +# From https://gstreamer.freedesktop.org/src/orc/orc-0.4.27.tar.xz.sha256sum +sha256 51e53e58fc8158e5986a1f1a49a6d970c5b16493841cf7b9de2c2bde7ce36b93 orc-0.4.27.tar.xz diff --git a/buildroot/package/orc/orc.mk b/buildroot/package/orc/orc.mk new file mode 100644 index 0000000..ab71829 --- /dev/null +++ b/buildroot/package/orc/orc.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# orc +# +################################################################################ + +ORC_VERSION = 0.4.27 +ORC_SOURCE = orc-$(ORC_VERSION).tar.xz +ORC_SITE = http://gstreamer.freedesktop.org/data/src/orc +ORC_LICENSE = BSD-2-Clause, BSD-3-Clause +ORC_LICENSE_FILES = COPYING +ORC_INSTALL_STAGING = YES +ORC_DEPENDENCIES = host-orc + +define ORC_REMOVE_BUGREPORT + rm -f $(TARGET_DIR)/usr/bin/orc-bugreport +endef + +define ORC_REMOVE_DEVFILES + rm -f $(TARGET_DIR)/usr/bin/orcc +endef + +ORC_POST_INSTALL_TARGET_HOOKS += ORC_REMOVE_BUGREPORT +ORC_POST_INSTALL_TARGET_HOOKS += ORC_REMOVE_DEVFILES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/ortp/Config.in b/buildroot/package/ortp/Config.in new file mode 100644 index 0000000..788eaf4 --- /dev/null +++ b/buildroot/package/ortp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ORTP + bool "oRTP" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_BCTOOLBOX + help + oRTP, a Real-time Transport Protocol (RTP,RFC3550) library + + http://www.linphone.org/eng/documentation/dev/ortp.html + +comment "ortp needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/ortp/ortp.hash b/buildroot/package/ortp/ortp.hash new file mode 100644 index 0000000..c990d96 --- /dev/null +++ b/buildroot/package/ortp/ortp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 eb61a833ab3ad80978d7007411240f46e9b2d1034373b9d9dfaac88c1b6ec0af ortp-0.27.0.tar.gz diff --git a/buildroot/package/ortp/ortp.mk b/buildroot/package/ortp/ortp.mk new file mode 100644 index 0000000..0bd61e8 --- /dev/null +++ b/buildroot/package/ortp/ortp.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# ortp +# +################################################################################ + +ORTP_VERSION = 0.27.0 +ORTP_SITE = http://download.savannah.nongnu.org/releases/linphone/ortp/sources + +ORTP_CONF_OPTS = --disable-strict +ORTP_INSTALL_STAGING = YES +ORTP_LICENSE = LGPL-2.1+ +ORTP_LICENSE_FILES = COPYING +ORTP_DEPENDENCIES = bctoolbox + +$(eval $(autotools-package)) diff --git a/buildroot/package/owfs/0001-configure.ac-check-for-localtime_r.patch b/buildroot/package/owfs/0001-configure.ac-check-for-localtime_r.patch new file mode 100644 index 0000000..b25aa59 --- /dev/null +++ b/buildroot/package/owfs/0001-configure.ac-check-for-localtime_r.patch @@ -0,0 +1,35 @@ +From 75e92438bcdb78a90912366b07bf503646806686 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Sun, 21 Feb 2016 17:02:06 +0100 +Subject: [PATCH] configure.ac: check for localtime_r + +HAVE_LOCALTIME_R is used in owftp.c, so it should be checked for. + +Without this, static build fails because localtime_r is defined twice. + +Upstream-Status: Submitted +https://sourceforge.net/p/owfs/mailman/message/34873667/ + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +[Bernd: rebased against version 3.2p1] +Signed-off-by: Bernd Kuhls +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index c22dde9..12fdd18 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1646,7 +1646,7 @@ + AC_FUNC_STRFTIME + AC_FUNC_STRTOD + AC_TYPE_SIGNAL +-AC_CHECK_FUNCS([accept daemon getaddrinfo freeaddrinfo gethostbyname2_r gethostbyaddr_r gethostbyname_r getservbyname_r getopt getopt_long gmtime_r gettimeofday localtime_r inet_ntop inet_pton memchr memset select socket strcasecmp strchr strdup strncasecmp strtol strtoul twalk tsearch tfind tdelete tdestroy vasprintf strsep vsprintf vsnprintf writev getline]) ++AC_CHECK_FUNCS([accept daemon getaddrinfo freeaddrinfo gethostbyname2_r gethostbyaddr_r gethostbyname_r getservbyname_r getopt getopt_long gmtime_r gettimeofday localtime_r inet_ntop inet_pton memchr memset select socket strcasecmp strchr strdup strncasecmp strtol strtoul twalk tsearch tfind tdelete tdestroy vasprintf strsep vsprintf vsnprintf writev getline localtime_r]) + + save_LIBS="$LIBS" + LIBS="" +-- +2.7.0 + diff --git a/buildroot/package/owfs/Config.in b/buildroot/package/owfs/Config.in new file mode 100644 index 0000000..802d1e4 --- /dev/null +++ b/buildroot/package/owfs/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_OWFS + bool "owfs" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + OWFS is an easy way to use the powerful 1-wire system of + Dallas/Maxim. + + OWFS is a simple and flexible program to monitor and control + the physical environment. You can write scripts to read + temperature, flash lights, write to an LCD, log and graph, + etc. + + http://owfs.org/ + +comment "owfs needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/owfs/S25owserver b/buildroot/package/owfs/S25owserver new file mode 100755 index 0000000..b8da768 --- /dev/null +++ b/buildroot/package/owfs/S25owserver @@ -0,0 +1,31 @@ +NAME="owserver" +DAEMON="/usr/bin/${NAME}" +PID_F="/run/${NAME}.pid" + +OWSERVER_ARGS= +[ -r /etc/default/${NAME} ] && . /etc/default/${NAME} + +case "$1" in +start) + printf "Starting ${NAME}: " + if [ -z "${OWSERVER_ARGS}" ]; then + echo "OWSERVER_ARGS must be set in defaults file" 1>&2 + exit 1 + fi + start-stop-daemon -S -x ${DAEMON} -- \ + --pid_file ${PID_F} ${OWSERVER_ARGS} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +stop) + printf "Stopping ${NAME}: " + start-stop-daemon -K -p ${PID_F} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +restart|reload) + $0 stop + $0 start + ;; +*) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/buildroot/package/owfs/S30owfs b/buildroot/package/owfs/S30owfs new file mode 100755 index 0000000..feed676 --- /dev/null +++ b/buildroot/package/owfs/S30owfs @@ -0,0 +1,33 @@ +NAME="owfs" +DAEMON="/usr/bin/${NAME}" +PID_F="/run/${NAME}.pid" +OWFS_MOUNTPOINT="/dev/1wire" +OWFS_DEVICES="-s localhost:4304" +OWFS_ARGS="" + +[ -r /etc/default/${NAME} ] && . /etc/default/${NAME} + +case "$1" in +start) + printf "Starting ${NAME}: " + # Fuse may be in a module, so try to load it + modprobe -q fuse && printf "[fuse] " + mkdir -p ${OWFS_MOUNTPOINT} + start-stop-daemon -S -x ${DAEMON} -- \ + --pid_file ${PID_F} -m ${OWFS_MOUNTPOINT} ${OWFS_DEVICES} \ + ${OWFS_ARGS} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +stop) + printf "Stopping ${NAME}: " + start-stop-daemon -K -p ${PID_F} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +restart|reload) + $0 stop + $0 start + ;; +*) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/buildroot/package/owfs/owfs.hash b/buildroot/package/owfs/owfs.hash new file mode 100644 index 0000000..1e57e29 --- /dev/null +++ b/buildroot/package/owfs/owfs.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/owfs/files/owfs/3.2p1/ +md5 fb42ce3b8a49f0b62711d8e3f5f04880 owfs-3.2p1.tar.gz +sha1 4ee76e686bec769acde5bfbda148a8693df244c6 owfs-3.2p1.tar.gz +# Locally calculated +sha256 33220b25db36969a717cd27e750d73dee376795e13a5f3677f05111b745832ea owfs-3.2p1.tar.gz diff --git a/buildroot/package/owfs/owfs.mk b/buildroot/package/owfs/owfs.mk new file mode 100644 index 0000000..47626ce --- /dev/null +++ b/buildroot/package/owfs/owfs.mk @@ -0,0 +1,93 @@ +################################################################################ +# +# owfs +# +################################################################################ + +OWFS_VERSION = 3.2p1 +OWFS_SITE = http://downloads.sourceforge.net/project/owfs/owfs/$(OWFS_VERSION) +OWFS_DEPENDENCIES = host-pkgconf +OWFS_CONF_OPTS = --disable-owperl --without-perl5 --disable-owtcl --without-tcl + +# 0001-configure.ac-check-for-localtime_r.patch touches configure.ac +OWFS_AUTORECONF = YES + +# owtcl license is declared in module/ownet/c/src/include/ow_functions.h +OWFS_LICENSE = GPL-2.0+, LGPL-2.0 (owtcl) +OWFS_LICENSE_FILES = COPYING COPYING.LIB +OWFS_INSTALL_STAGING = YES + +# owfs PHP support is not PHP 7 compliant +# https://sourceforge.net/p/owfs/support-requests/32/ +OWFS_CONF_OPTS += --disable-owphp --without-php + +ifeq ($(BR2_PACKAGE_LIBFUSE),y) +OWFS_DEPENDENCIES += libfuse +OWFS_CONF_OPTS += \ + --enable-owfs \ + --with-fuseinclude=$(STAGING_DIR)/usr/include \ + --with-fuselib=$(STAGING_DIR)/usr/lib +define OWFS_INSTALL_FUSE_INIT_SYSV + $(INSTALL) -D -m 0755 $(OWFS_PKGDIR)S30owfs \ + $(TARGET_DIR)/etc/init.d/S30owfs +endef +define OWFS_CREATE_MOUNTPOINT + mkdir -p $(TARGET_DIR)/dev/1wire +endef +OWFS_POST_INSTALL_TARGET_HOOKS += OWFS_CREATE_MOUNTPOINT +else +OWFS_CONF_OPTS += --disable-owfs +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +OWFS_CONF_OPTS += --enable-usb +OWFS_DEPENDENCIES += libusb +else +OWFS_CONF_OPTS += --disable-usb +endif + +ifeq ($(BR2_PACKAGE_AVAHI),y) +OWFS_CONF_OPTS += --enable-avahi +OWFS_DEPENDENCIES += avahi +else +OWFS_CONF_OPTS += --disable-avahi +endif + +# setup.py isn't python3 compliant +ifeq ($(BR2_PACKAGE_PYTHON),y) +OWFS_CONF_OPTS += \ + --enable-owpython \ + --with-python \ + --with-pythonconfig=$(STAGING_DIR)/usr/bin/python-config +OWFS_MAKE_ENV += \ + CC="$(TARGET_CC)" \ + PYTHONPATH="$(PYTHON_PATH)" \ + _python_sysroot=$(STAGING_DIR) \ + _python_prefix=/usr \ + _python_exec_prefix=/usr +OWFS_DEPENDENCIES += python host-swig +# The configure scripts finds PYSITEDIR as the python_lib directory of +# host-python, and then prepends DESTDIR in front of it. So we end up +# installing things in $(TARGET_DIR)/$(HOST_DIR)/lib/python which is +# clearly wrong. +# Patching owfs to do the right thing is not trivial, it's much easier to +# override the PYSITEDIR variable in make. +OWFS_EXTRA_MAKE_OPTS += PYSITEDIR=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages +else +OWFS_CONF_OPTS += --disable-owpython --without-python +endif + +ifeq ($(BR2_STATIC_LIBS),y) +# zeroconf support uses dlopen() +OWFS_CONF_OPTS += --disable-zero +endif + +OWFS_MAKE = $(MAKE) $(OWFS_EXTRA_MAKE_OPTS) + +define OWFS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(OWFS_PKGDIR)S25owserver \ + $(TARGET_DIR)/etc/init.d/S25owserver + $(OWFS_INSTALL_FUSE_INIT_SYSV) +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/owl-linux/0001-fix-for-linux-3.3.x.patch b/buildroot/package/owl-linux/0001-fix-for-linux-3.3.x.patch new file mode 100644 index 0000000..831ac7f --- /dev/null +++ b/buildroot/package/owl-linux/0001-fix-for-linux-3.3.x.patch @@ -0,0 +1,21 @@ +Kernel commit b81693d9149c598302e8eb9c20cb20330d922c8e changed the +net_device_ops structure, removing the ndo_set_multicast_list callback. The +ndo_set_rx_mode has also been added to this structure. + +The upshot of these changes is that owl-linux fails to compile with 3.3.x +and later kernels. + +Signed-off-by: Simon Dawson +diff -Nurp a/owl_net.c b/owl_net.c +--- a/owl_net.c 2012-06-14 10:51:45.000000000 +0100 ++++ b/owl_net.c 2012-07-20 13:16:28.772351464 +0100 +@@ -384,7 +384,9 @@ static const struct net_device_ops netde + #endif /* OWL_CONFIG_IFUPDOWN */ + .ndo_start_xmit = owl_net_tx, + .ndo_get_stats = owl_net_get_stats, ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) + .ndo_set_multicast_list = NULL, ++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) */ + .ndo_tx_timeout = owl_net_tx_timeout, + .ndo_set_mac_address = NULL, + }; diff --git a/buildroot/package/owl-linux/Config.in b/buildroot/package/owl-linux/Config.in new file mode 100644 index 0000000..bf412d3 --- /dev/null +++ b/buildroot/package/owl-linux/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_OWL_LINUX + bool "owl-linux" + depends on BR2_LINUX_KERNEL + depends on (BR2_arm920t || BR2_arm922t || BR2_arm926t) + help + Linux kernel driver for the H&D Wireless SPB104 SD-card WiFi + SIP. + + owl-linux requires the hidden kernel option WIRELESS_EXT + enabled. + + http://linux.hd-wireless.se/bin/view/Linux/GettingStarted + +comment "owl-linux needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + depends on BR2_arm || BR2_armeb + +comment "owl-linux is only supported on ARM9 architecture" + depends on !(BR2_arm920t || BR2_arm922t || BR2_arm926t) + depends on BR2_arm || BR2_armeb diff --git a/buildroot/package/owl-linux/owl-linux.hash b/buildroot/package/owl-linux/owl-linux.hash new file mode 100644 index 0000000..4a5133d --- /dev/null +++ b/buildroot/package/owl-linux/owl-linux.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 a6b1bc6b3900954438a0f1a316bac5f74171125a88c80c35e137f4ca512dedc6 owl-linux-1.0.7.tar.gz diff --git a/buildroot/package/owl-linux/owl-linux.mk b/buildroot/package/owl-linux/owl-linux.mk new file mode 100644 index 0000000..1262425 --- /dev/null +++ b/buildroot/package/owl-linux/owl-linux.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# owl-linux +# +################################################################################ + +OWL_LINUX_VERSION = 1.0.7 +OWL_LINUX_SITE = http://linux.hd-wireless.se/pub/Linux/DownloadDrivers +OWL_LINUX_LICENSE = PROPRIETARY +OWL_LINUX_LICENSE_FILES = LICENSE +OWL_LINUX_REDISTRIBUTE = NO + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/p11-kit/0001-Fix-build-against-older-pthreads-implementations.patch b/buildroot/package/p11-kit/0001-Fix-build-against-older-pthreads-implementations.patch new file mode 100644 index 0000000..3562f3c --- /dev/null +++ b/buildroot/package/p11-kit/0001-Fix-build-against-older-pthreads-implementations.patch @@ -0,0 +1,64 @@ +From 05b6a7550756ffdced25a6c51cf2222bad9e59e7 Mon Sep 17 00:00:00 2001 +Message-Id: <05b6a7550756ffdced25a6c51cf2222bad9e59e7.1399285491.git.baruch@tkos.co.il> +From: Baruch Siach +Date: Mon, 5 May 2014 09:32:23 +0300 +Subject: [PATCH] Fix build against older pthreads implementations + +Older pthreads implementations like glibc NPTL prior to version 2.12, and +uClibc linuxthreads (both), need _XOPEN_SOURCE to expose +pthread_mutexattr_settype() and THREAD_MUTEX_DEFAULT. The value 600 (SuSv3, +POSIX.1-2001) is equivalent to _POSIX_C_SOURCE 200112L. + +Fixes the following build error: + + CC compat.lo +compat.c: In function 'p11_mutex_init': +compat.c:164:2: warning: implicit declaration of function 'pthread_mutexattr_settype' [-Wimplicit-function-declaration] +compat.c:164:2: warning: nested extern declaration of 'pthread_mutexattr_settype' [-Wnested-externs] +compat.c:164:36: error: 'PTHREAD_MUTEX_DEFAULT' undeclared (first use in this function) + +Patch status: sent upstream + +Signed-off-by: Baruch Siach +--- + common/compat.h | 6 ++++++ + common/message.c | 6 ------ + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/common/compat.h b/common/compat.h +index d7fe414a46bf..fbc1dc1d4f0f 100644 +--- a/common/compat.h ++++ b/common/compat.h +@@ -37,6 +37,12 @@ + + #include "config.h" + ++/* ++ * Oh god. glibc is nasty. Changes behavior and definitions of POSIX ++ * functions to completely different signatures depending on defines ++ */ ++#define _XOPEN_SOURCE 600 ++ + #include + #include + +diff --git a/common/message.c b/common/message.c +index 35f2764487a9..e68dfac561c8 100644 +--- a/common/message.c ++++ b/common/message.c +@@ -37,12 +37,6 @@ + + #include "config.h" + +-/* +- * Oh god. glibc is nasty. Changes behavior and definitions of POSIX +- * functions to completely different signatures depending on defines +- */ +-#define _POSIX_C_SOURCE 200112L +- + #include "compat.h" + #define P11_DEBUG_FLAG P11_DEBUG_LIB + #include "debug.h" +-- +2.0.0.rc0 + diff --git a/buildroot/package/p11-kit/Config.in b/buildroot/package/p11-kit/Config.in new file mode 100644 index 0000000..a6b7261 --- /dev/null +++ b/buildroot/package/p11-kit/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_P11_KIT + bool "p11-kit" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_LIBTASN1 + help + Provides a way to load and enumerate PKCS#11 modules. + Provides a standard configuration setup for installing PKCS#11 + modules in such a way that they're discoverable. + + http://p11-glue.freedesktop.org/p11-kit.html + +comment "p11-kit needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/p11-kit/p11-kit.hash b/buildroot/package/p11-kit/p11-kit.hash new file mode 100644 index 0000000..c0182eb --- /dev/null +++ b/buildroot/package/p11-kit/p11-kit.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 ba726ea8303c97467a33fca50ee79b7b35212964be808ecf9b145e9042fdfaf0 p11-kit-0.23.2.tar.gz diff --git a/buildroot/package/p11-kit/p11-kit.mk b/buildroot/package/p11-kit/p11-kit.mk new file mode 100644 index 0000000..d4cf9bc --- /dev/null +++ b/buildroot/package/p11-kit/p11-kit.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# p11-kit +# +################################################################################ + +P11_KIT_VERSION = 0.23.2 +P11_KIT_SITE = http://p11-glue.freedesktop.org/releases +P11_KIT_DEPENDENCIES = host-pkgconf libffi libtasn1 +P11_KIT_INSTALL_STAGING = YES +P11_KIT_CONF_OPTS = --disable-static +P11_KIT_CONF_ENV = ac_cv_have_decl_program_invocation_short_name=yes \ + ac_cv_have_decl___progname=no +P11_KIT_LICENSE = BSD-3-Clause +P11_KIT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/p7zip/0001-bfin.patch b/buildroot/package/p7zip/0001-bfin.patch new file mode 100644 index 0000000..76addb6 --- /dev/null +++ b/buildroot/package/p7zip/0001-bfin.patch @@ -0,0 +1,19 @@ +Add support for blackfin arch. + +Fixes compilation error: +../../../../CPP/myWindows/mySplitCommandLine.cpp:99:8: error: #error ENDIANNESS + +Signed-off-by: Bernd Kuhls +(Patch sent upstream: https://sourceforge.net/p/p7zip/patches/33/ + +diff -uNr p7zip_15.14.1.org/C/CpuArch.h p7zip_15.14.1/C/CpuArch.h +--- p7zip_15.14.1.org/C/CpuArch.h 2016-02-17 07:27:16.000000000 +0100 ++++ p7zip_15.14.1/C/CpuArch.h 2016-06-08 19:47:49.000000000 +0200 +@@ -66,6 +66,7 @@ + || defined(__MIPSEL__) \ + || defined(__MIPSEL) \ + || defined(_MIPSEL) \ ++ || defined(__BFIN__) \ + || (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) + #define MY_CPU_LE + #endif diff --git a/buildroot/package/p7zip/Config.in b/buildroot/package/p7zip/Config.in new file mode 100644 index 0000000..a3adab5 --- /dev/null +++ b/buildroot/package/p7zip/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_P7ZIP + bool "p7zip" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + p7zip is a quick port of the command line version of 7-zip + for Unix (see http://www.7-zip.org) + + 7-Zip is a file archiver with highest compression ratio. + + http://sourceforge.net/projects/p7zip + +comment "p7zip needs a toolchain w/ threads, wchar, C++" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/p7zip/p7zip.hash b/buildroot/package/p7zip/p7zip.hash new file mode 100644 index 0000000..b134550 --- /dev/null +++ b/buildroot/package/p7zip/p7zip.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/p7zip/files/p7zip/16.02/ +md5 a0128d661cfe7cc8c121e73519c54fbf p7zip_16.02_src_all.tar.bz2 +sha1 e8819907132811aa1afe5ef296181d3a15cc8f22 p7zip_16.02_src_all.tar.bz2 +# Locally computed +sha256 5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f p7zip_16.02_src_all.tar.bz2 diff --git a/buildroot/package/p7zip/p7zip.mk b/buildroot/package/p7zip/p7zip.mk new file mode 100644 index 0000000..ff0dd01 --- /dev/null +++ b/buildroot/package/p7zip/p7zip.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# p7zip +# +################################################################################ + +P7ZIP_VERSION = 16.02 +P7ZIP_SOURCE = p7zip_$(P7ZIP_VERSION)_src_all.tar.bz2 +P7ZIP_SITE = http://downloads.sourceforge.net/project/p7zip/p7zip/$(P7ZIP_VERSION) +P7ZIP_LICENSE = LGPL-2.1+ with unRAR restriction +P7ZIP_LICENSE_FILES = DOC/License.txt + +# p7zip buildsystem is a mess: it plays dirty tricks with CFLAGS and +# CXXFLAGS, so we can't pass them. Instead, it accepts ALLFLAGS_C +# and ALLFLAGS_CPP as variables to pass the CFLAGS and CXXFLAGS. +define P7ZIP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" ALLFLAGS_C="$(TARGET_CFLAGS)" \ + CXX="$(TARGET_CXX)" ALLFLAGS_CPP="$(TARGET_CXXFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + -C $(@D) 7zr +endef + +define P7ZIP_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/7zr $(TARGET_DIR)/usr/bin/7zr +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/p910nd/Config.in b/buildroot/package/p910nd/Config.in new file mode 100644 index 0000000..33f6cf8 --- /dev/null +++ b/buildroot/package/p910nd/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_P910ND + bool "p910nd" + depends on BR2_USE_MMU # fork() + help + p910nd is a small printer daemon intended for diskless + workstations. Using ports 9100-9102, it accepts + print jobs and passes them directly to a USB printer. + + http://p910nd.sourceforge.net/ diff --git a/buildroot/package/p910nd/p910nd.hash b/buildroot/package/p910nd/p910nd.hash new file mode 100644 index 0000000..1b952c8 --- /dev/null +++ b/buildroot/package/p910nd/p910nd.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 4ac980a3ae24babae6f70f0a692625ece03a4a92c357fbb10d2e368386c3c26f p910nd-0.97.tar.bz2 diff --git a/buildroot/package/p910nd/p910nd.mk b/buildroot/package/p910nd/p910nd.mk new file mode 100644 index 0000000..163ab1b --- /dev/null +++ b/buildroot/package/p910nd/p910nd.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# p910nd +# +################################################################################ + +P910ND_VERSION = 0.97 +P910ND_SITE = http://downloads.sourceforge.net/project/p910nd/p910nd/$(P910ND_VERSION) +P910ND_SOURCE = p910nd-$(P910ND_VERSION).tar.bz2 +P910ND_LICENSE = GPL-2.0 +P910ND_LICENSE_FILES = COPYING + +define P910ND_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define P910ND_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/p910nd $(TARGET_DIR)/usr/sbin/p910nd +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/paho-mqtt-c/0001-Declare-mqtt-tests-as-a-C-only-project.patch b/buildroot/package/paho-mqtt-c/0001-Declare-mqtt-tests-as-a-C-only-project.patch new file mode 100644 index 0000000..9edb2c4 --- /dev/null +++ b/buildroot/package/paho-mqtt-c/0001-Declare-mqtt-tests-as-a-C-only-project.patch @@ -0,0 +1,27 @@ +From 6556e62a07972eafccaefdcdf32bd0d386c64ca2 Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Wed, 13 Sep 2017 07:59:50 +0200 +Subject: [PATCH] Declare mqtt-tests as a C-only project + +This way CMake doesn't break the build on the systems without +C++ compiler. + +Signed-off-by: Yegor Yefremov +Reported-by: Marcus Hoffmann +--- + test/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt +index 5c88c44..3aca80f 100644 +--- a/test/CMakeLists.txt ++++ b/test/CMakeLists.txt +@@ -1,4 +1,4 @@ +-PROJECT(mqtt-tests) ++PROJECT(mqtt-tests C) + + IF (WIN32) + SET(MQTT_TEST_BROKER "tcp://mqtt.iotree.co.uk:1883" CACHE STRING "Hostname of a test MQTT broker to use") +-- +2.1.4 + diff --git a/buildroot/package/paho-mqtt-c/Config.in b/buildroot/package/paho-mqtt-c/Config.in new file mode 100644 index 0000000..3560d8c --- /dev/null +++ b/buildroot/package/paho-mqtt-c/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PAHO_MQTT_C + bool "paho-mqtt-c" + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + MQTT client C library + + https://eclipse.org/paho/clients/c/ + +comment "paho-mqtt-c needs a toolchain w/ threads and dynamic library support" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/paho-mqtt-c/paho-mqtt-c.hash b/buildroot/package/paho-mqtt-c/paho-mqtt-c.hash new file mode 100644 index 0000000..3bee891 --- /dev/null +++ b/buildroot/package/paho-mqtt-c/paho-mqtt-c.hash @@ -0,0 +1,4 @@ +# Locally computed: +sha256 0cb0396554ebe0e8ac6b0de1cbc16601ef169b6a63baf6f0f3ddeb405f5471a5 paho-mqtt-c-v1.2.0.tar.gz +sha256 83bbba033dc985487e321b6dfde111772affb73460be48726299fed3da684b1c edl-v10 +sha256 44277b2bec6093e4ac313afec251a4de599d24c4e768f8574d95b13a9d2d97b5 epl-v10 diff --git a/buildroot/package/paho-mqtt-c/paho-mqtt-c.mk b/buildroot/package/paho-mqtt-c/paho-mqtt-c.mk new file mode 100644 index 0000000..5df7a55 --- /dev/null +++ b/buildroot/package/paho-mqtt-c/paho-mqtt-c.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# paho-mqtt-c +# +################################################################################ + +PAHO_MQTT_C_VERSION = v1.2.0 +PAHO_MQTT_C_SITE = $(call github,eclipse,paho.mqtt.c,$(PAHO_MQTT_C_VERSION)) +PAHO_MQTT_C_LICENSE = EPL-1.0 or BSD-3-Clause +PAHO_MQTT_C_LICENSE_FILES = epl-v10 edl-v10 +PAHO_MQTT_C_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PAHO_MQTT_C_DEPENDENCIES += openssl +PAHO_MQTT_C_CONF_OPTS += -DPAHO_WITH_SSL=TRUE +else +PAHO_MQTT_C_CONF_OPTS += -DPAHO_WITH_SSL=FALSE +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/pango/0001-build-disable-tests-from-building.patch b/buildroot/package/pango/0001-build-disable-tests-from-building.patch new file mode 100644 index 0000000..1156c24 --- /dev/null +++ b/buildroot/package/pango/0001-build-disable-tests-from-building.patch @@ -0,0 +1,41 @@ +From 1c503a8b2f127c12e58a6e8ba01743c04061df50 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 5 Sep 2017 07:25:17 -0400 +Subject: [PATCH] build: disable tests from building + +Signed-off-by: Gustavo Zacarias +[Adam: refresh for pango 1.40.12] +Signed-off-by: Adam Duskett +--- + Makefile.am | 2 +- + Makefile.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 70bf8b0..c69daf0 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,6 +1,6 @@ + ## Process this file with automake to create Makefile.in. + +-SUBDIRS= pango pango-view examples docs tools tests win32 ++SUBDIRS= pango pango-view examples docs tools win32 + + meson_dist_files = \ + pango/pango-features.h.meson \ +diff --git a/Makefile.in b/Makefile.in +index 8489ca1..51f6ada 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -412,7 +412,7 @@ target_alias = @target_alias@ + top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ +-SUBDIRS = pango pango-view examples docs tools tests win32 ++SUBDIRS = pango pango-view examples docs tools win32 + meson_dist_files = \ + pango/pango-features.h.meson \ + pango-view/meson.build \ +-- +2.13.5 + diff --git a/buildroot/package/pango/0002-no-gtk-doc.patch b/buildroot/package/pango/0002-no-gtk-doc.patch new file mode 100644 index 0000000..926a263 --- /dev/null +++ b/buildroot/package/pango/0002-no-gtk-doc.patch @@ -0,0 +1,25 @@ +Same patch as for systemd in commit +7144f2f04b705538a893e538a6b851f536f433b6: + +Fix deactivation of gtk-doc + +The tarball contains the Makefile for building documentation with gtk-doc, +Unfortunately the AM_CONDITIONAL variable is not the correct one, which +results in an error when running autoreconf. + +This patch fixes this issue. + +Signed-off-by: Eric Le Bihan +Signed-off-by: Hadrien Boutteville + +--- a/gtk-doc.make ++++ b/gtk-doc.make +@@ -267,7 +267,7 @@ + # + # Require gtk-doc when making dist + # +-if HAVE_GTK_DOC ++if ENABLE_GTK_DOC + dist-check-gtkdoc: docs + else + dist-check-gtkdoc: diff --git a/buildroot/package/pango/Config.in b/buildroot/package/pango/Config.in new file mode 100644 index 0000000..e8a5318 --- /dev/null +++ b/buildroot/package/pango/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_PANGO + bool "pango" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_INSTALL_LIBSTDCPP # freetype support + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # harfbuzz + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + help + Pango is a library for laying out and rendering of text, + with an emphasis on internationalization. Pango can be used + anywhere that text layout is needed, though most of the work + on Pango so far has been done in the context of the GTK+ + widget toolkit. Pango forms the core of text and font + handling for GTK+-2.x. + + http://www.pango.org/ + +comment "pango needs a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/pango/pango.hash b/buildroot/package/pango/pango.hash new file mode 100644 index 0000000..6df08e9 --- /dev/null +++ b/buildroot/package/pango/pango.hash @@ -0,0 +1,3 @@ +# From http://ftp.gnome.org/pub/GNOME/sources/pango/1.40/pango-1.40.14.sha256sum +sha256 90af1beaa7bf9e4c52db29ec251ec4fd0a8f2cc185d521ad1f88d01b3a6a17e3 pango-1.40.14.tar.xz +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/buildroot/package/pango/pango.mk b/buildroot/package/pango/pango.mk new file mode 100644 index 0000000..805d35e --- /dev/null +++ b/buildroot/package/pango/pango.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# pango +# +################################################################################ + +PANGO_VERSION_MAJOR = 1.40 +PANGO_VERSION = $(PANGO_VERSION_MAJOR).14 +PANGO_SOURCE = pango-$(PANGO_VERSION).tar.xz +PANGO_SITE = http://ftp.gnome.org/pub/GNOME/sources/pango/$(PANGO_VERSION_MAJOR) +PANGO_AUTORECONF = YES +PANGO_INSTALL_STAGING = YES +PANGO_LICENSE = LGPL-2.0+ +PANGO_LICENSE_FILES = COPYING + +PANGO_CONF_OPTS = --enable-explicit-deps=no +HOST_PANGO_CONF_OPTS = --enable-explicit-deps=no + +PANGO_DEPENDENCIES = \ + $(TARGET_NLS_DEPENDENCIES) \ + host-pkgconf \ + libglib2 \ + cairo \ + harfbuzz \ + fontconfig \ + freetype +HOST_PANGO_DEPENDENCIES = \ + host-pkgconf \ + host-libglib2 \ + host-cairo \ + host-harfbuzz \ + host-fontconfig \ + host-freetype + +ifeq ($(BR2_PACKAGE_XORG7),y) +PANGO_CONF_OPTS += \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib +PANGO_DEPENDENCIES += xlib_libX11 +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT)$(BR2_PACKAGE_XLIB_LIBXRENDER),yy) +PANGO_DEPENDENCIES += xlib_libXft xlib_libXrender +PANGO_CONF_OPTS += --with-xft +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/pangomm/Config.in b/buildroot/package/pangomm/Config.in new file mode 100644 index 0000000..0702b8c --- /dev/null +++ b/buildroot/package/pangomm/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_PANGOMM + bool "pangomm" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_INSTALL_LIBSTDCPP # glibmm/pango + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS # *mm/pango -> libglib2 + depends on BR2_USE_MMU # *mm/pango -> libglib2 + depends on BR2_USE_WCHAR # *mm/pango -> libglib2 + select BR2_PACKAGE_CAIROMM + select BR2_PACKAGE_GLIBMM + select BR2_PACKAGE_PANGO + select BR2_PACKAGE_LIBSIGC + help + The pangomm package is a set of C++ bindings for Pango. + + http://www.gtkmm.org/ + +comment "pangomm needs a toolchain w/ C++, wchar, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/pangomm/pangomm.hash b/buildroot/package/pangomm/pangomm.hash new file mode 100644 index 0000000..b5d527f --- /dev/null +++ b/buildroot/package/pangomm/pangomm.hash @@ -0,0 +1,2 @@ +# From http://ftp.gnome.org/pub/gnome/sources/pangomm/2.40/pangomm-2.40.1.sha256sum +sha256 9762ee2a2d5781be6797448d4dd2383ce14907159b30bc12bf6b08e7227be3af pangomm-2.40.1.tar.xz diff --git a/buildroot/package/pangomm/pangomm.mk b/buildroot/package/pangomm/pangomm.mk new file mode 100644 index 0000000..9edcb16 --- /dev/null +++ b/buildroot/package/pangomm/pangomm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# pangomm +# +################################################################################ + +PANGOMM_VERSION_MAJOR = 2.40 +PANGOMM_VERSION = $(PANGOMM_VERSION_MAJOR).1 +PANGOMM_SOURCE = pangomm-$(PANGOMM_VERSION).tar.xz +PANGOMM_SITE = http://ftp.gnome.org/pub/gnome/sources/pangomm/$(PANGOMM_VERSION_MAJOR) +PANGOMM_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (tools) +PANGOMM_LICENSE_FILES = COPYING COPYING.tools +PANGOMM_INSTALL_STAGING = YES +PANGOMM_DEPENDENCIES = glibmm cairomm libsigc pango host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/parted/0001-libparted-arch-linux.c-Compile-without-ENABLE_DEVICE.patch b/buildroot/package/parted/0001-libparted-arch-linux.c-Compile-without-ENABLE_DEVICE.patch new file mode 100644 index 0000000..1cf699b --- /dev/null +++ b/buildroot/package/parted/0001-libparted-arch-linux.c-Compile-without-ENABLE_DEVICE.patch @@ -0,0 +1,79 @@ +From 141c4309d7164dcd4e09d137fc075c1726fd8dbb Mon Sep 17 00:00:00 2001 +From: Felix Janda +Date: Sun, 3 May 2015 10:33:15 +0200 +Subject: [PATCH] libparted/arch/linux.c: Compile without ENABLE_DEVICE_MAPPER + +Signed-off-by: Brian C. Lane +Signed-off-by: Yegor Yefremov +--- + libparted/arch/linux.c | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c +index 0f18904..cf38c6f 100644 +--- a/libparted/arch/linux.c ++++ b/libparted/arch/linux.c +@@ -2304,6 +2304,7 @@ zasprintf (const char *format, ...) + return r < 0 ? NULL : resultp; + } + ++#ifdef ENABLE_DEVICE_MAPPER + static char * + dm_canonical_path (PedDevice const *dev) + { +@@ -2326,14 +2327,21 @@ dm_canonical_path (PedDevice const *dev) + err: + return NULL; + } ++#endif + + static char* + _device_get_part_path (PedDevice const *dev, int num) + { +- char *devpath = (dev->type == PED_DEVICE_DM +- ? dm_canonical_path (dev) : dev->path); +- size_t path_len = strlen (devpath); ++ char *devpath; ++ size_t path_len; + char *result; ++#ifdef ENABLE_DEVICE_MAPPER ++ devpath = (dev->type == PED_DEVICE_DM ++ ? dm_canonical_path (dev) : dev->path); ++#else ++ devpath = dev->path; ++#endif ++ path_len = strlen (devpath); + /* Check for devfs-style /disc => /partN transformation + unconditionally; the system might be using udev with devfs rules, + and if not the test is harmless. */ +@@ -2349,8 +2357,10 @@ _device_get_part_path (PedDevice const *dev, int num) + ? "p" : ""); + result = zasprintf ("%s%s%d", devpath, p, num); + } ++#ifdef ENABLE_DEVICE_MAPPER + if (dev->type == PED_DEVICE_DM) + free (devpath); ++#endif + return result; + } + +@@ -2945,12 +2955,15 @@ _disk_sync_part_table (PedDisk* disk) + unsigned long long *length); + + ++#ifdef ENABLE_DEVICE_MAPPER + if (disk->dev->type == PED_DEVICE_DM) { + add_partition = _dm_add_partition; + remove_partition = _dm_remove_partition; + resize_partition = _dm_resize_partition; + get_partition_start_and_length = _dm_get_partition_start_and_length; +- } else { ++ } else ++#endif ++ { + add_partition = _blkpg_add_partition; + remove_partition = _blkpg_remove_partition; + #ifdef BLKPG_RESIZE_PARTITION +-- +2.14.2 + diff --git a/buildroot/package/parted/0002-configure.ac-uclinux-is-also-linux.patch b/buildroot/package/parted/0002-configure.ac-uclinux-is-also-linux.patch new file mode 100644 index 0000000..5a264ce --- /dev/null +++ b/buildroot/package/parted/0002-configure.ac-uclinux-is-also-linux.patch @@ -0,0 +1,33 @@ +From 7697d9c54e489b32b82c01f17db04f8b51857e51 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Mon, 30 Jun 2014 10:09:04 -0300 +Subject: [PATCH] configure.ac: uclinux is also linux + +uclinux is used in the tuple for some noMMU linux builds like Blackfin +FLAT output, so accept it as linux too. + +Signed-off-by: Gustavo Zacarias +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 436d0e2..50ad478 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -58,10 +58,10 @@ AM_SILENT_RULES([yes]) # make --enable-silent-rules the default. + + AC_CANONICAL_HOST + case "$host_os" in +- linux*) OS=linux ;; ++ linux*|uclinux*) OS=linux ;; + gnu*) OS=gnu ;; + beos*) OS=beos ;; +- *) AC_MSG_ERROR([Unknown or unsupported OS "$host_os". Only "linux", "gnu" and "beos" are supported in this version of GNU Parted.]) ;; ++ *) AC_MSG_ERROR([Unknown or unsupported OS "$host_os". Only "linux", "uclinux", "gnu" and "beos" are supported in this version of GNU Parted.]) ;; + esac + AC_SUBST([OS]) + +-- +2.14.2 + diff --git a/buildroot/package/parted/0003-Include-fcntl.h-to-get-loff_t-definition.patch b/buildroot/package/parted/0003-Include-fcntl.h-to-get-loff_t-definition.patch new file mode 100644 index 0000000..752938a --- /dev/null +++ b/buildroot/package/parted/0003-Include-fcntl.h-to-get-loff_t-definition.patch @@ -0,0 +1,29 @@ +From 2078c07d38ee7841b89ac8d81afc5e8bfcd4f703 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 8 Oct 2017 00:58:58 +0200 +Subject: [PATCH] Include to get loff_t definition + +Patch borrowed from Alpine Linux at +http://git.alpinelinux.org/cgit/aports/plain/main/parted/fix-includes.patch. Solves +build with musl. + +Signed-off-by: Thomas Petazzoni +--- + libparted/fs/xfs/platform_defs.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libparted/fs/xfs/platform_defs.h b/libparted/fs/xfs/platform_defs.h +index 2b55752..17023dc 100644 +--- a/libparted/fs/xfs/platform_defs.h ++++ b/libparted/fs/xfs/platform_defs.h +@@ -35,6 +35,7 @@ + #define __XFS_PLATFORM_DEFS_H__ + + #include ++#include + #include + #include + #include +-- +2.14.2 + diff --git a/buildroot/package/parted/0004-libparted-labels-link-with-libiconv-if-needed.patch b/buildroot/package/parted/0004-libparted-labels-link-with-libiconv-if-needed.patch new file mode 100644 index 0000000..a4a1b00 --- /dev/null +++ b/buildroot/package/parted/0004-libparted-labels-link-with-libiconv-if-needed.patch @@ -0,0 +1,54 @@ +From dd17f55b2ac189ccd3b8025e4f6509537d00f9d3 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Sun, 8 Oct 2017 00:53:31 +0200 +Subject: [PATCH] libparted/labels: link with libiconv if needed + +gpt.c uses iconv so it should link with it. Otherwise, on platforms +where libiconv is a separate library, we get a link failure of parted: + + CCLD parted + ../libparted/.libs/libparted.so: undefined reference to `libiconv' + ../libparted/.libs/libparted.so: undefined reference to `libiconv_open' + ../libparted/.libs/libparted.so: undefined reference to `libiconv_close' + +Since iconv functionality is needed unconditionally (not only when +gettext is enabled), AM_ICONV needs to be added to configure.ac. + +Upstream status: sent to mailing list +http://lists.alioth.debian.org/pipermail/parted-devel/2017-November/005131.html + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + configure.ac | 2 ++ + libparted/labels/Makefile.am | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 50ad478..62f1b4d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -288,6 +288,8 @@ fi + AC_PROG_LIBTOOL + LT_INIT + ++AM_ICONV ++ + AM_GNU_GETTEXT_VERSION([0.18]) + AM_GNU_GETTEXT([external]) + if test "$USE_INCLUDED_LIBINTL" = "yes"; then +diff --git a/libparted/labels/Makefile.am b/libparted/labels/Makefile.am +index c996f81..b204379 100644 +--- a/libparted/labels/Makefile.am ++++ b/libparted/labels/Makefile.am +@@ -35,7 +35,7 @@ liblabels_la_SOURCES = \ + rdb.c \ + sun.c + +-liblabels_la_LIBADD = $(OS_LIBS) $(INTLLIBS) ++liblabels_la_LIBADD = $(OS_LIBS) $(INTLLIBS) $(LIBICONV) + + AM_CPPFLAGS = $(partedincludedir) $(INTLINCS) + +-- +2.14.2 + diff --git a/buildroot/package/parted/Config.in b/buildroot/package/parted/Config.in new file mode 100644 index 0000000..9d78f0f --- /dev/null +++ b/buildroot/package/parted/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PARTED + bool "parted" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + parted, the GNU partition resizing program + + http://www.gnu.org/software/parted/ + +comment "parted needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/parted/Config.in.host b/buildroot/package/parted/Config.in.host new file mode 100644 index 0000000..f5d7acc --- /dev/null +++ b/buildroot/package/parted/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_PARTED + bool "host parted" + help + parted, the GNU partition resizing program + + http://www.gnu.org/software/parted/ diff --git a/buildroot/package/parted/parted.hash b/buildroot/package/parted/parted.hash new file mode 100644 index 0000000..e31ae3c --- /dev/null +++ b/buildroot/package/parted/parted.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 858b589c22297cacdf437f3baff6f04b333087521ab274f7ab677cb8c6bb78e4 parted-3.2.tar.xz diff --git a/buildroot/package/parted/parted.mk b/buildroot/package/parted/parted.mk new file mode 100644 index 0000000..1f0428a --- /dev/null +++ b/buildroot/package/parted/parted.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# parted +# +################################################################################ + +PARTED_VERSION = 3.2 +PARTED_SOURCE = parted-$(PARTED_VERSION).tar.xz +PARTED_SITE = $(BR2_GNU_MIRROR)/parted +PARTED_DEPENDENCIES = host-pkgconf util-linux +PARTED_INSTALL_STAGING = YES +# 0002-configure.ac-uclinux-is-also-linux.patch +# 0004-libparted-labels-link-with-libiconv-if-needed.patch +PARTED_AUTORECONF = YES +PARTED_GETTEXTIZE = YES +PARTED_LICENSE = GPL-3.0+ +PARTED_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_READLINE),y) +PARTED_DEPENDENCIES += readline +PARTED_CONF_OPTS += --with-readline +else +PARTED_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_LVM2),y) +PARTED_DEPENDENCIES += lvm2 +PARTED_CONF_OPTS += --enable-device-mapper +else +PARTED_CONF_OPTS += --disable-device-mapper +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +PARTED_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_STATIC_LIBS),y) +PARTED_CONF_OPTS += --disable-dynamic-loading +endif + +HOST_PARTED_DEPENDENCIES = host-pkgconf host-util-linux +HOST_PARTED_CONF_OPTS += \ + --without-readline \ + --disable-device-mapper + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/patch/0001-Fix-segfault-with-mangled-rename-patch.patch b/buildroot/package/patch/0001-Fix-segfault-with-mangled-rename-patch.patch new file mode 100644 index 0000000..19a6757 --- /dev/null +++ b/buildroot/package/patch/0001-Fix-segfault-with-mangled-rename-patch.patch @@ -0,0 +1,33 @@ +From f290f48a621867084884bfff87f8093c15195e6a Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Mon, 12 Feb 2018 16:48:24 +0100 +Subject: [PATCH] Fix segfault with mangled rename patch + +http://savannah.gnu.org/bugs/?53132 +* src/pch.c (intuit_diff_type): Ensure that two filenames are specified +for renames and copies (fix the existing check). + +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit f290f48a6218 + + src/pch.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/pch.c b/src/pch.c +index ff9ed2cebb8a..bc6278c4032c 100644 +--- a/src/pch.c ++++ b/src/pch.c +@@ -974,7 +974,8 @@ intuit_diff_type (bool need_header, mode_t *p_file_type) + if ((pch_rename () || pch_copy ()) + && ! inname + && ! ((i == OLD || i == NEW) && +- p_name[! reverse] && ++ p_name[reverse] && p_name[! reverse] && ++ name_is_valid (p_name[reverse]) && + name_is_valid (p_name[! reverse]))) + { + say ("Cannot %s file without two valid file names\n", pch_rename () ? "rename" : "copy"); +-- +2.16.1 + diff --git a/buildroot/package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch b/buildroot/package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch new file mode 100644 index 0000000..7d5757d --- /dev/null +++ b/buildroot/package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch @@ -0,0 +1,37 @@ +From b5a91a01e5d0897facdd0f49d64b76b0f02b43e1 Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Fri, 6 Apr 2018 11:34:51 +0200 +Subject: [PATCH] Allow input files to be missing for ed-style patches + +* src/pch.c (do_ed_script): Allow input files to be missing so that new +files will be created as with non-ed-style patches. + +Signed-off-by: Baruch Siach +--- +Upstream status: commit b5a91a01e5d0 + + src/pch.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/pch.c b/src/pch.c +index bc6278c4032c..0c5cc2623079 100644 +--- a/src/pch.c ++++ b/src/pch.c +@@ -2394,9 +2394,11 @@ do_ed_script (char const *inname, char const *outname, + + if (! dry_run && ! skip_rest_of_patch) { + int exclusive = *outname_needs_removal ? 0 : O_EXCL; +- assert (! inerrno); +- *outname_needs_removal = true; +- copy_file (inname, outname, 0, exclusive, instat.st_mode, true); ++ if (inerrno != ENOENT) ++ { ++ *outname_needs_removal = true; ++ copy_file (inname, outname, 0, exclusive, instat.st_mode, true); ++ } + sprintf (buf, "%s %s%s", editor_program, + verbosity == VERBOSE ? "" : "- ", + outname); +-- +2.16.3 + diff --git a/buildroot/package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch b/buildroot/package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch new file mode 100644 index 0000000..b44bdd0 --- /dev/null +++ b/buildroot/package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch @@ -0,0 +1,157 @@ +From 123eaff0d5d1aebe128295959435b9ca5909c26d Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Fri, 6 Apr 2018 12:14:49 +0200 +Subject: [PATCH] Fix arbitrary command execution in ed-style patches + (CVE-2018-1000156) + +* src/pch.c (do_ed_script): Write ed script to a temporary file instead +of piping it to ed: this will cause ed to abort on invalid commands +instead of rejecting them and carrying on. +* tests/ed-style: New test case. +* tests/Makefile.am (TESTS): Add test case. + +[baruch: drop test hunks to avoid autoreconf] +Signed-off-by: Baruch Siach +--- +Upstream status: commit 123eaff0d5d1 + + src/pch.c | 91 ++++++++++++++++++++++++++++++++++++++++--------------- + tests/Makefile.am | 1 + + tests/ed-style | 41 +++++++++++++++++++++++++ + 3 files changed, 108 insertions(+), 25 deletions(-) + create mode 100644 tests/ed-style + +diff --git a/src/pch.c b/src/pch.c +index 0c5cc2623079..4fd5a05a6f5c 100644 +--- a/src/pch.c ++++ b/src/pch.c +@@ -33,6 +33,7 @@ + # include + #endif + #include ++#include + + #define INITHUNKMAX 125 /* initial dynamic allocation size */ + +@@ -2389,24 +2390,28 @@ do_ed_script (char const *inname, char const *outname, + static char const editor_program[] = EDITOR_PROGRAM; + + file_offset beginning_of_this_line; +- FILE *pipefp = 0; + size_t chars_read; ++ FILE *tmpfp = 0; ++ char const *tmpname; ++ int tmpfd; ++ pid_t pid; ++ ++ if (! dry_run && ! skip_rest_of_patch) ++ { ++ /* Write ed script to a temporary file. This causes ed to abort on ++ invalid commands such as when line numbers or ranges exceed the ++ number of available lines. When ed reads from a pipe, it rejects ++ invalid commands and treats the next line as a new command, which ++ can lead to arbitrary command execution. */ ++ ++ tmpfd = make_tempfile (&tmpname, 'e', NULL, O_RDWR | O_BINARY, 0); ++ if (tmpfd == -1) ++ pfatal ("Can't create temporary file %s", quotearg (tmpname)); ++ tmpfp = fdopen (tmpfd, "w+b"); ++ if (! tmpfp) ++ pfatal ("Can't open stream for file %s", quotearg (tmpname)); ++ } + +- if (! dry_run && ! skip_rest_of_patch) { +- int exclusive = *outname_needs_removal ? 0 : O_EXCL; +- if (inerrno != ENOENT) +- { +- *outname_needs_removal = true; +- copy_file (inname, outname, 0, exclusive, instat.st_mode, true); +- } +- sprintf (buf, "%s %s%s", editor_program, +- verbosity == VERBOSE ? "" : "- ", +- outname); +- fflush (stdout); +- pipefp = popen(buf, binary_transput ? "wb" : "w"); +- if (!pipefp) +- pfatal ("Can't open pipe to %s", quotearg (buf)); +- } + for (;;) { + char ed_command_letter; + beginning_of_this_line = file_tell (pfp); +@@ -2417,14 +2422,14 @@ do_ed_script (char const *inname, char const *outname, + } + ed_command_letter = get_ed_command_letter (buf); + if (ed_command_letter) { +- if (pipefp) +- if (! fwrite (buf, sizeof *buf, chars_read, pipefp)) ++ if (tmpfp) ++ if (! fwrite (buf, sizeof *buf, chars_read, tmpfp)) + write_fatal (); + if (ed_command_letter != 'd' && ed_command_letter != 's') { + p_pass_comments_through = true; + while ((chars_read = get_line ()) != 0) { +- if (pipefp) +- if (! fwrite (buf, sizeof *buf, chars_read, pipefp)) ++ if (tmpfp) ++ if (! fwrite (buf, sizeof *buf, chars_read, tmpfp)) + write_fatal (); + if (chars_read == 2 && strEQ (buf, ".\n")) + break; +@@ -2437,13 +2442,49 @@ do_ed_script (char const *inname, char const *outname, + break; + } + } +- if (!pipefp) ++ if (!tmpfp) + return; +- if (fwrite ("w\nq\n", sizeof (char), (size_t) 4, pipefp) == 0 +- || fflush (pipefp) != 0) ++ if (fwrite ("w\nq\n", sizeof (char), (size_t) 4, tmpfp) == 0 ++ || fflush (tmpfp) != 0) + write_fatal (); +- if (pclose (pipefp) != 0) +- fatal ("%s FAILED", editor_program); ++ ++ if (lseek (tmpfd, 0, SEEK_SET) == -1) ++ pfatal ("Can't rewind to the beginning of file %s", quotearg (tmpname)); ++ ++ if (! dry_run && ! skip_rest_of_patch) { ++ int exclusive = *outname_needs_removal ? 0 : O_EXCL; ++ *outname_needs_removal = true; ++ if (inerrno != ENOENT) ++ { ++ *outname_needs_removal = true; ++ copy_file (inname, outname, 0, exclusive, instat.st_mode, true); ++ } ++ sprintf (buf, "%s %s%s", editor_program, ++ verbosity == VERBOSE ? "" : "- ", ++ outname); ++ fflush (stdout); ++ ++ pid = fork(); ++ if (pid == -1) ++ pfatal ("Can't fork"); ++ else if (pid == 0) ++ { ++ dup2 (tmpfd, 0); ++ execl ("/bin/sh", "sh", "-c", buf, (char *) 0); ++ _exit (2); ++ } ++ else ++ { ++ int wstatus; ++ if (waitpid (pid, &wstatus, 0) == -1 ++ || ! WIFEXITED (wstatus) ++ || WEXITSTATUS (wstatus) != 0) ++ fatal ("%s FAILED", editor_program); ++ } ++ } ++ ++ fclose (tmpfp); ++ safe_unlink (tmpname); + + if (ofp) + { +-- +2.16.3 + diff --git a/buildroot/package/patch/Config.in b/buildroot/package/patch/Config.in new file mode 100644 index 0000000..13fa7bf --- /dev/null +++ b/buildroot/package/patch/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PATCH + bool "patch" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Take patch files (containing difference listings) and apply + them to original files, producing patched versions. + + http://www.gnu.org/software/patch/ + +comment "patch needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/patch/patch.hash b/buildroot/package/patch/patch.hash new file mode 100644 index 0000000..917d951 --- /dev/null +++ b/buildroot/package/patch/patch.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 ac610bda97abe0d9f6b7c963255a11dcb196c25e337c61f94e4778d632f1d8fd patch-2.7.6.tar.xz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/patch/patch.mk b/buildroot/package/patch/patch.mk new file mode 100644 index 0000000..d581682 --- /dev/null +++ b/buildroot/package/patch/patch.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# patch +# +################################################################################ + +PATCH_VERSION = 2.7.6 +PATCH_SOURCE = patch-$(PATCH_VERSION).tar.xz +PATCH_SITE = $(BR2_GNU_MIRROR)/patch +PATCH_LICENSE = GPL-3.0+ +PATCH_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_ATTR),y) +PATCH_CONF_OPTS += --enable-xattr +PATCH_DEPENDENCIES += attr +else +PATCH_CONF_OPTS += --disable-xattr +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/patchelf/0001-Remove-apparently-incorrect-usage-of-static.patch b/buildroot/package/patchelf/0001-Remove-apparently-incorrect-usage-of-static.patch new file mode 100644 index 0000000..dc462ef --- /dev/null +++ b/buildroot/package/patchelf/0001-Remove-apparently-incorrect-usage-of-static.patch @@ -0,0 +1,56 @@ +From 2480efa8411523cf046094492192a5ee451aae5d Mon Sep 17 00:00:00 2001 +From: Eelco Dolstra +Date: Mon, 19 Sep 2016 17:31:37 +0200 +Subject: [PATCH] Remove apparently incorrect usage of "static" + +[Upstream-commit: https://github.com/NixOS/patchelf/commit/a365bcb7d7025da51b33165ef7ebc7180199a05e +This patch also removes the DT_INIT symbols from needed_libs (DT_INIT +points to library initialisation function, not to needed libraries...)] +Signed-off-by: Wolfgang Grandegger +--- + src/patchelf.cc | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/src/patchelf.cc b/src/patchelf.cc +index 136098f..c870638 100644 +--- a/src/patchelf.cc ++++ b/src/patchelf.cc +@@ -941,7 +941,6 @@ void ElfFile::modifySoname(sonameMode op, const string & newS + assert(strTabAddr == rdi(shdrDynStr.sh_addr)); + + /* Walk through the dynamic section, look for the DT_SONAME entry. */ +- static vector neededLibs; + dyn = (Elf_Dyn *) (contents + rdi(shdrDynamic.sh_offset)); + Elf_Dyn * dynSoname = 0; + char * soname = 0; +@@ -949,8 +948,7 @@ void ElfFile::modifySoname(sonameMode op, const string & newS + if (rdi(dyn->d_tag) == DT_SONAME) { + dynSoname = dyn; + soname = strTab + rdi(dyn->d_un.d_val); +- } else if (rdi(dyn->d_tag) == DT_INIT) +- neededLibs.push_back(string(strTab + rdi(dyn->d_un.d_val))); ++ } + } + + if (op == printSoname) { +@@ -1058,7 +1056,7 @@ void ElfFile::modifyRPath(RPathOp op, string newRPath) + unless you use its `--enable-new-dtag' option, in which case it + generates a DT_RPATH and DT_RUNPATH pointing at the same + string. */ +- static vector neededLibs; ++ vector neededLibs; + dyn = (Elf_Dyn *) (contents + rdi(shdrDynamic.sh_offset)); + Elf_Dyn * dynRPath = 0, * dynRunPath = 0; + char * rpath = 0; +@@ -1091,7 +1089,7 @@ void ElfFile::modifyRPath(RPathOp op, string newRPath) + /* For each directory in the RPATH, check if it contains any + needed library. */ + if (op == rpShrink) { +- static vector neededLibFound(neededLibs.size(), false); ++ vector neededLibFound(neededLibs.size(), false); + + newRPath = ""; + +-- +1.9.1 + diff --git a/buildroot/package/patchelf/0002-Extract-a-function-for-splitting-a-colon-separated-s.patch b/buildroot/package/patchelf/0002-Extract-a-function-for-splitting-a-colon-separated-s.patch new file mode 100644 index 0000000..330bea2 --- /dev/null +++ b/buildroot/package/patchelf/0002-Extract-a-function-for-splitting-a-colon-separated-s.patch @@ -0,0 +1,63 @@ +From a8452dc7e80eb17572c7458e33a4f4d609e6a3da Mon Sep 17 00:00:00 2001 +From: Tuomas Tynkkynen +Date: Fri, 3 Jun 2016 23:03:51 +0300 +Subject: [PATCH] Extract a function for splitting a colon-separated string + +We're going to need this logic in another place, so make a function of +this. + +[Upstream-commit: https://github.com/NixOS/patchelf/commit/2e3fdc2030c75c19df6fc2924083cfad53856562] +Signed-off-by: Wolfgang Grandegger +--- + src/patchelf.cc | 28 +++++++++++++++++++--------- + 1 file changed, 19 insertions(+), 9 deletions(-) + +diff --git a/src/patchelf.cc b/src/patchelf.cc +index c870638..1d9a772 100644 +--- a/src/patchelf.cc ++++ b/src/patchelf.cc +@@ -57,6 +57,22 @@ unsigned char * contents = 0; + #define ElfFileParamNames Elf_Ehdr, Elf_Phdr, Elf_Shdr, Elf_Addr, Elf_Off, Elf_Dyn, Elf_Sym + + ++static vector splitColonDelimitedString(const char * s){ ++ vector parts; ++ const char * pos = s; ++ while (*pos) { ++ const char * end = strchr(pos, ':'); ++ if (!end) end = strchr(pos, 0); ++ ++ parts.push_back(string(pos, end - pos)); ++ if (*end == ':') ++end; ++ pos = end; ++ } ++ ++ return parts; ++} ++ ++ + static unsigned int getPageSize(){ + return pageSize; + } +@@ -1093,15 +1109,9 @@ void ElfFile::modifyRPath(RPathOp op, string newRPath) + + newRPath = ""; + +- char * pos = rpath; +- while (*pos) { +- char * end = strchr(pos, ':'); +- if (!end) end = strchr(pos, 0); +- +- /* Get the name of the directory. */ +- string dirName(pos, end - pos); +- if (*end == ':') ++end; +- pos = end; ++ vector rpathDirs = splitColonDelimitedString(rpath); ++ for (vector::iterator it = rpathDirs.begin(); it != rpathDirs.end(); ++it) { ++ const string & dirName = *it; + + /* Non-absolute entries are allowed (e.g., the special + "$ORIGIN" hack). */ +-- +1.9.1 + diff --git a/buildroot/package/patchelf/0003-Add-option-to-make-the-rpath-relative-under-a-specif.patch b/buildroot/package/patchelf/0003-Add-option-to-make-the-rpath-relative-under-a-specif.patch new file mode 100644 index 0000000..feec627 --- /dev/null +++ b/buildroot/package/patchelf/0003-Add-option-to-make-the-rpath-relative-under-a-specif.patch @@ -0,0 +1,332 @@ +From 618220bfb55c875d6a4d197cb24fe632ac93ec85 Mon Sep 17 00:00:00 2001 +From: Wolfgang Grandegger +Date: Mon, 20 Feb 2017 16:29:24 +0100 +Subject: [PATCH] Add option to make the rpath relative under a specified root + directory + +Running "patchelf" with the option "--make-rpath-relative ROOTDIR" will +modify or delete the RPATHDIRs according the following rules +similar to Martin's patches [1] making the Buildroot toolchaing/SDK +relocatable. + +RPATHDIR starts with "$ORIGIN": + The original build-system already took care of setting a relative + RPATH, resolve it and test if it's valid (does exist) + +RPATHDIR starts with ROOTDIR: + The original build-system added some absolute RPATH (absolute on + the build machine). Test if it's valid (does exist). + +ROOTDIR/RPATHDIR exists: + The original build-system already took care of setting an absolute + RPATH (absolute in the final rootfs), resolve it and test if it's + valid (does exist). + +RPATHDIR points somewhere else: + (can be anywhere: build trees, staging tree, host location, + non-existing location, etc.). Just discard such a path. + +The option "--no-standard-libs" will discard RPATHDIRs ROOTDIR/lib and +ROOTDIR/usr/lib. Like "--shrink-rpath", RPATHDIRs are also discarded +if the directories do not contain a library referenced by the +DT_NEEDED fields. +If the option "--relative-to-file" is given, the rpath will start +with "$ORIGIN" making it relative to the ELF file, otherwise an +absolute path relative to ROOTDIR will be used. + +A pull request for a similar patch [2] for mainline inclusion is +pending. + +[1] http://lists.busybox.net/pipermail/buildroot/2016-April/159422.html +[2] https://github.com/NixOS/patchelf/pull/118 + +Signed-off-by: Wolfgang Grandegger +--- + src/patchelf.cc | 196 ++++++++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 175 insertions(+), 21 deletions(-) + +diff --git a/src/patchelf.cc b/src/patchelf.cc +index 1d9a772..35b4a33 100644 +--- a/src/patchelf.cc ++++ b/src/patchelf.cc +@@ -46,6 +46,10 @@ static bool debugMode = false; + + static bool forceRPath = false; + ++static bool noStandardLibDirs = false; ++ ++static bool relativeToFile = false; ++ + static string fileName; + static int pageSize = PAGESIZE; + +@@ -77,6 +81,49 @@ static unsigned int getPageSize(){ + return pageSize; + } + ++static bool absolutePathExists(const string & path, string & canonicalPath) ++{ ++ char *cpath = realpath(path.c_str(), NULL); ++ if (cpath) { ++ canonicalPath = cpath; ++ free(cpath); ++ return true; ++ } else { ++ return false; ++ } ++} ++ ++static string makePathRelative(const string & path, ++ const string & refPath) ++{ ++ string relPath = "$ORIGIN"; ++ string p = path, refP = refPath; ++ size_t pos; ++ ++ /* Strip the common part of path and refPath */ ++ while (true) { ++ pos = p.find_first_of('/', 1); ++ if (refP.find_first_of('/', 1) != pos) ++ break; ++ if (p.substr(0, pos) != refP.substr(0, pos)) ++ break; ++ if (pos == string::npos) ++ break; ++ p = p.substr(pos); ++ refP = refP.substr(pos); ++ } ++ /* Check if both pathes are equal */ ++ if (p != refP) { ++ pos = 0; ++ while (pos != string::npos) { ++ pos =refP.find_first_of('/', pos + 1); ++ relPath.append("/.."); ++ } ++ relPath.append(p); ++ } ++ ++ return relPath; ++} + + template + class ElfFile +@@ -183,9 +230,13 @@ public: + + void setInterpreter(const string & newInterpreter); + +- typedef enum { rpPrint, rpShrink, rpSet, rpRemove } RPathOp; ++ typedef enum { rpPrint, rpShrink, rpMakeRelative, rpSet, rpRemove} RPathOp; ++ ++ bool libFoundInRPath(const string & dirName, ++ const vector neededLibs, ++ vector & neededLibFound); + +- void modifyRPath(RPathOp op, string newRPath); ++ void modifyRPath(RPathOp op, string rootDir, string newRPath); + + void addNeeded(set libs); + +@@ -1041,7 +1092,27 @@ static void concatToRPath(string & rpath, const string & path) + + + template +-void ElfFile::modifyRPath(RPathOp op, string newRPath) ++bool ElfFile::libFoundInRPath(const string & dirName, ++ const vector neededLibs, vector & neededLibFound) ++{ ++ /* For each library that we haven't found yet, see if it ++ exists in this directory. */ ++ bool libFound = false; ++ for (unsigned int j = 0; j < neededLibs.size(); ++j) ++ if (!neededLibFound[j]) { ++ string libName = dirName + "/" + neededLibs[j]; ++ struct stat st; ++ if (stat(libName.c_str(), &st) == 0) { ++ neededLibFound[j] = true; ++ libFound = true; ++ } ++ } ++ return libFound; ++} ++ ++ ++template ++void ElfFile::modifyRPath(RPathOp op, string rootDir, string newRPath) + { + Elf_Shdr & shdrDynamic = findSection(".dynamic"); + +@@ -1096,6 +1167,11 @@ void ElfFile::modifyRPath(RPathOp op, string newRPath) + return; + } + ++ if (op == rpMakeRelative && !rpath) { ++ debug("no RPATH to make relative\n"); ++ return; ++ } ++ + if (op == rpShrink && !rpath) { + debug("no RPATH to shrink\n"); + return; +@@ -1120,26 +1196,86 @@ void ElfFile::modifyRPath(RPathOp op, string newRPath) + continue; + } + +- /* For each library that we haven't found yet, see if it +- exists in this directory. */ +- bool libFound = false; +- for (unsigned int j = 0; j < neededLibs.size(); ++j) +- if (!neededLibFound[j]) { +- string libName = dirName + "/" + neededLibs[j]; +- struct stat st; +- if (stat(libName.c_str(), &st) == 0) { +- neededLibFound[j] = true; +- libFound = true; +- } +- } +- +- if (!libFound) ++ if (!libFoundInRPath(dirName, neededLibs, neededLibFound)) + debug("removing directory `%s' from RPATH\n", dirName.c_str()); + else + concatToRPath(newRPath, dirName); + } + } + ++ /* Make the the RPATH relative to the specified path */ ++ if (op == rpMakeRelative) { ++ vector neededLibFound(neededLibs.size(), false); ++ string fileDir = fileName.substr(0, fileName.find_last_of("/")); ++ ++ newRPath = ""; ++ ++ vector rpathDirs = splitColonDelimitedString(rpath); ++ for (vector::iterator it = rpathDirs.begin(); it != rpathDirs.end(); ++it) { ++ const string & dirName = *it; ++ ++ string canonicalPath; ++ ++ /* Figure out if we should keep or discard the path. There are several ++ cases to be handled: ++ "dirName" starts with "$ORIGIN": ++ The original build-system already took care of setting a relative ++ RPATH. Resolve it and test if it's valid (does exist). ++ "dirName" start with "rootDir": ++ The original build-system added some absolute RPATH (absolute on ++ the build machine). Test if it's valid (does exist). ++ "rootDir"/"dirName" exists: ++ The original build-system already took care of setting an absolute ++ RPATH (absolute in the final rootfs). Resolve it and test if it's ++ valid (does exist). ++ "dirName" points somewhere else: ++ (can be anywhere: build trees, staging tree, host location, ++ non-existing location, etc.). Just discard such a path. */ ++ if (!dirName.compare(0, 7, "$ORIGIN")) { ++ string path = fileDir + dirName.substr(7); ++ if (!absolutePathExists(path, canonicalPath)) { ++ debug("removing directory '%s' from RPATH because '%s' doesn't exist\n", ++ dirName.c_str(), path.c_str()); ++ continue; ++ } ++ } else if (!dirName.compare(0, rootDir.length(), rootDir)) { ++ if (!absolutePathExists(dirName, canonicalPath)) { ++ debug("removing directory '%s' from RPATH because it doesn't exist\n", dirName.c_str()); ++ continue; ++ } ++ } else { ++ string path = rootDir + dirName; ++ if (!absolutePathExists(path, canonicalPath)) { ++ debug("removing directory '%s' from RPATH because it's not in rootdir\n", ++ dirName.c_str()); ++ continue; ++ } ++ } ++ ++ if (noStandardLibDirs) { ++ if (!canonicalPath.compare(rootDir + "/lib") || ++ !canonicalPath.compare(rootDir + "/usr/lib")) { ++ debug("removing directory '%s' from RPATH because it's a standard library directory\n", ++ dirName.c_str()); ++ continue; ++ } ++ } ++ ++ if (!libFoundInRPath(canonicalPath, neededLibs, neededLibFound)) { ++ debug("removing directory '%s' from RPATH because it does not contain needed libs\n", ++ dirName.c_str()); ++ continue; ++ } ++ ++ /* Finally make "canonicalPath" relative to "filedir" in "rootDir" */ ++ if (relativeToFile) ++ concatToRPath(newRPath, makePathRelative(canonicalPath, fileDir)); ++ else ++ concatToRPath(newRPath, canonicalPath.substr(rootDir.length())); ++ debug("keeping relative path of %s\n", canonicalPath.c_str()); ++ } ++ } ++ + if (op == rpRemove) { + if (!rpath) { + debug("no RPATH to delete\n"); +@@ -1413,7 +1549,9 @@ static bool shrinkRPath = false; + static bool removeRPath = false; + static bool setRPath = false; + static bool printRPath = false; ++static bool makeRPathRelative = false; + static string newRPath; ++static string rootDir; + static set neededLibsToRemove; + static map neededLibsToReplace; + static set neededLibsToAdd; +@@ -1438,14 +1576,16 @@ static void patchElf2(ElfFile & elfFile) + elfFile.setInterpreter(newInterpreter); + + if (printRPath) +- elfFile.modifyRPath(elfFile.rpPrint, ""); ++ elfFile.modifyRPath(elfFile.rpPrint, "", ""); + + if (shrinkRPath) +- elfFile.modifyRPath(elfFile.rpShrink, ""); ++ elfFile.modifyRPath(elfFile.rpShrink, "", ""); + else if (removeRPath) +- elfFile.modifyRPath(elfFile.rpRemove, ""); ++ elfFile.modifyRPath(elfFile.rpRemove, "", ""); + else if (setRPath) +- elfFile.modifyRPath(elfFile.rpSet, newRPath); ++ elfFile.modifyRPath(elfFile.rpSet, "", newRPath); ++ else if (makeRPathRelative) ++ elfFile.modifyRPath(elfFile.rpMakeRelative, rootDir, ""); + + if (printNeeded) elfFile.printNeededLibs(); + +@@ -1508,6 +1648,9 @@ void showHelp(const string & progName) + [--set-rpath RPATH]\n\ + [--remove-rpath]\n\ + [--shrink-rpath]\n\ ++ [--make-rpath-relative ROOTDIR]\n\ ++ [--no-standard-lib-dirs]\n\ ++ [--relative-to-file]\n\ + [--print-rpath]\n\ + [--force-rpath]\n\ + [--add-needed LIBRARY]\n\ +@@ -1564,6 +1707,17 @@ int main(int argc, char * * argv) + setRPath = true; + newRPath = argv[i]; + } ++ else if (arg == "--make-rpath-relative") { ++ if (++i == argc) error("missing argument to --make-rpath-relative"); ++ makeRPathRelative = true; ++ rootDir = argv[i]; ++ } ++ else if (arg == "--no-standard-lib-dirs") { ++ noStandardLibDirs = true; ++ } ++ else if (arg == "--relative-to-file") { ++ relativeToFile = true; ++ } + else if (arg == "--print-rpath") { + printRPath = true; + } +-- +1.9.1 + diff --git a/buildroot/package/patchelf/0004-patchelf-Check-ELF-endianness-before-writing-new-run.patch b/buildroot/package/patchelf/0004-patchelf-Check-ELF-endianness-before-writing-new-run.patch new file mode 100644 index 0000000..8a89d3a --- /dev/null +++ b/buildroot/package/patchelf/0004-patchelf-Check-ELF-endianness-before-writing-new-run.patch @@ -0,0 +1,40 @@ +From 8c75599b674c73fbfe9c15afeccad54ae88243f5 Mon Sep 17 00:00:00 2001 +From: Bryce Ferguson +Date: Mon, 25 Jun 2018 13:05:07 -0500 +Subject: [PATCH] patchelf: Check ELF endianness before writing new runpath + +This commit modifies the way fields are written in the dynamic +section in order to account the architecture of the target ELF +file. Instead of copying the raw data, use the helper functions +to convert endianness. + +Link to upstream PR: https://github.com/NixOS/patchelf/pull/151 + +Signed-off-by: Bryce Ferguson +--- + src/patchelf.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/patchelf.cc b/src/patchelf.cc +index 35b4a33..a33f644 100644 +--- a/src/patchelf.cc ++++ b/src/patchelf.cc +@@ -1315,13 +1315,13 @@ void ElfFile::modifyRPath(RPathOp op, string rootDir, string + debug("new rpath is `%s'\n", newRPath.c_str()); + + if (!forceRPath && dynRPath && !dynRunPath) { /* convert DT_RPATH to DT_RUNPATH */ +- dynRPath->d_tag = DT_RUNPATH; ++ wri(dynRPath->d_tag, DT_RUNPATH); + dynRunPath = dynRPath; + dynRPath = 0; + } + + if (forceRPath && dynRPath && dynRunPath) { /* convert DT_RUNPATH to DT_RPATH */ +- dynRunPath->d_tag = DT_IGNORE; ++ wri(dynRunPath->d_tag, DT_IGNORE); + } + + if (newRPath.size() <= rpathSize) { +-- +2.17.0 + diff --git a/buildroot/package/patchelf/Config.in.host b/buildroot/package/patchelf/Config.in.host new file mode 100644 index 0000000..6abe78e --- /dev/null +++ b/buildroot/package/patchelf/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_PATCHELF + bool + default y + help + PatchELF is a small utility to modify the dynamic linker + and RPATH of ELF executables. + + http://nixos.org/patchelf.html diff --git a/buildroot/package/patchelf/patchelf.hash b/buildroot/package/patchelf/patchelf.hash new file mode 100644 index 0000000..0f54560 --- /dev/null +++ b/buildroot/package/patchelf/patchelf.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 a0f65c1ba148890e9f2f7823f4bedf7ecad5417772f64f994004f59a39014f83 patchelf-0.9.tar.bz2 +# License files, locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/patchelf/patchelf.mk b/buildroot/package/patchelf/patchelf.mk new file mode 100644 index 0000000..74e6ccc --- /dev/null +++ b/buildroot/package/patchelf/patchelf.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# patchelf +# +################################################################################ + +PATCHELF_VERSION = 0.9 +PATCHELF_SITE = http://releases.nixos.org/patchelf/patchelf-$(PATCHELF_VERSION) +PATCHELF_SOURCE = patchelf-$(PATCHELF_VERSION).tar.bz2 +PATCHELF_LICENSE = GPL-3.0+ +PATCHELF_LICENSE_FILES = COPYING + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/pax-utils/Config.in b/buildroot/package/pax-utils/Config.in new file mode 100644 index 0000000..58100e4 --- /dev/null +++ b/buildroot/package/pax-utils/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PAX_UTILS + bool "pax-utils" + help + ELF related utils for ELF 32/64 binaries that can check files + for security relevant properties. + + http://www.gentoo.org/proj/en/hardened/pax-utils.xml diff --git a/buildroot/package/pax-utils/pax-utils.hash b/buildroot/package/pax-utils/pax-utils.hash new file mode 100644 index 0000000..c755896 --- /dev/null +++ b/buildroot/package/pax-utils/pax-utils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7f4a7f8db6b4743adde7582fa48992ad01776796fcde030683732f56221337d9 pax-utils-1.2.2.tar.xz diff --git a/buildroot/package/pax-utils/pax-utils.mk b/buildroot/package/pax-utils/pax-utils.mk new file mode 100644 index 0000000..b31468e --- /dev/null +++ b/buildroot/package/pax-utils/pax-utils.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# pax-utils +# +################################################################################ + +PAX_UTILS_VERSION = 1.2.2 +PAX_UTILS_SITE = http://distfiles.gentoo.org/distfiles +PAX_UTILS_SOURCE = pax-utils-$(PAX_UTILS_VERSION).tar.xz +PAX_UTILS_LICENSE = GPL-2.0 +PAX_UTILS_LICENSE_FILES = COPYING + +PAX_UTILS_DEPENDENCIES = host-pkgconf +PAX_UTILS_CONF_OPTS = --without-python + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +PAX_UTILS_DEPENDENCIES += libcap +PAX_UTILS_CONF_OPTS += --with-caps +else +PAX_UTILS_CONF_OPTS += --without-caps +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +PAX_UTILS_DEPENDENCIES += libseccomp +PAX_UTILS_CONF_OPTS += --with-seccomp +else +PAX_UTILS_CONF_OPTS += --without-seccomp +endif + +# lddtree and symtree need bash +ifeq ($(BR2_PACKAGE_BASH),) +define PAX_UTILS_REMOVE_BASH_TOOLS + rm -f $(TARGET_DIR)/usr/bin/{lddtree,symtree} +endef +endif +PAX_UTILS_POST_INSTALL_TARGET_HOOKS += PAX_UTILS_REMOVE_BASH_TOOLS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/paxtest/0001-genpaxtest-move-log-location.patch b/buildroot/package/paxtest/0001-genpaxtest-move-log-location.patch new file mode 100644 index 0000000..6447d53 --- /dev/null +++ b/buildroot/package/paxtest/0001-genpaxtest-move-log-location.patch @@ -0,0 +1,30 @@ +From 623d99e4f557ef9cd771006e4f916c12d22a07a8 Mon Sep 17 00:00:00 2001 +From: David Graziano +Date: Mon, 12 Jun 2017 10:41:45 -0500 +Subject: [PATCH] genpaxtest: move log location + +Move log location to /var/log instead of local directory. +(For read-only filesystems) + +Signed-off-by: David Graziano +--- + genpaxtest | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/genpaxtest b/genpaxtest +index 5a22e15..d62b15e 100644 +--- a/genpaxtest ++++ b/genpaxtest +@@ -35,7 +35,7 @@ + exit 1 + fi + +-LOG=\$HOME/paxtest.log ++LOG=/var/log/paxtest.log + [ -n "\$1" ] && LOG=\$1 + touch "\$LOG" + if [ ! -e "\$LOG" ]; then + +-- +1.9.1 + diff --git a/buildroot/package/paxtest/0002-paxtest-page-alignment-ARM-and-NIOS2-arch.patch b/buildroot/package/paxtest/0002-paxtest-page-alignment-ARM-and-NIOS2-arch.patch new file mode 100644 index 0000000..54e5e69 --- /dev/null +++ b/buildroot/package/paxtest/0002-paxtest-page-alignment-ARM-and-NIOS2-arch.patch @@ -0,0 +1,49 @@ +From 70406ad5668a15fedce2ae1ed3bc4fad04d9f040 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Wed, 5 Jul 2017 20:47:42 -0500 +Subject: [PATCH] paxtest: page alignment ARM and NIOS2 arch + +- Extended ARM range from ARMv6-v7 to also include anything below v7 +- Added NIOS2 arch to conditionally have smaller alignment + +Submitted Upstream to pageexec@freemail.hu. Also posted a +bug to both (Hardened) Suse and Gentoo's bugtrackers. +https://bugzilla.opensuse.org/show_bug.cgi?id=1047422 +https://bugs.gentoo.org/show_bug.cgi?id=623946 + +Signed-off-by: Matthew Weber +--- + paxtest.h | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/paxtest.h b/paxtest.h +index 8623bfb..a230c1a 100644 +--- a/paxtest.h ++++ b/paxtest.h +@@ -5,13 +5,21 @@ + #include + + /* +- * ARMv6 and ARMv7 do not like 64k alignment, 32k is ok ++ * Earlier ARMv# through ARMv7 do not like 64k alignment, 32k is ok + */ +-#if defined(__arm__) && __ARM_ARCH >= 6 && __ARM_ARCH <= 7 ++#if defined(__arm__) && __ARM_ARCH <= 7 + #define PAGE_SIZE_MAX (32768) + #else + #define PAGE_SIZE_MAX 0x10000 /* 64k should cover most arches */ + #endif ++ ++/* ++ * NIOS2's assemblier doesn't like 64k alignment ++ */ ++#if defined(__nios2_arch__) ++#define PAGE_SIZE_MAX (32768) ++#endif ++ + #ifndef __aligned + #define __aligned(x) __attribute__((aligned(x))) + #endif +-- +1.9.1 + diff --git a/buildroot/package/paxtest/Config.in b/buildroot/package/paxtest/Config.in new file mode 100644 index 0000000..1e09820 --- /dev/null +++ b/buildroot/package/paxtest/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PAXTEST + bool "paxtest" + # No UCLIBC or MUSL because __NO_A_OUT_SUPPORT + depends on BR2_TOOLCHAIN_USES_GLIBC + help + PaX regression test suite + + http://pax.grsecurity.net/docs + +comment "paxtest needs a glibc toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/paxtest/paxtest.hash b/buildroot/package/paxtest/paxtest.hash new file mode 100644 index 0000000..c10566c --- /dev/null +++ b/buildroot/package/paxtest/paxtest.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 d553848431fd8c2ab6c8361b62e5cedfed1cc1d60088241f4a33d2af15dd667f paxtest-0.9.15.tar.gz diff --git a/buildroot/package/paxtest/paxtest.mk b/buildroot/package/paxtest/paxtest.mk new file mode 100644 index 0000000..e632e22 --- /dev/null +++ b/buildroot/package/paxtest/paxtest.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# paxtest +# +################################################################################ + +PAXTEST_VERSION = 0.9.15 +PAXTEST_SITE = https://www.grsecurity.net/~spender +PAXTEST_LICENSE = GPL-2.0+ +PAXTEST_LICENSE_FILES = README + +define PAXTEST_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + RUNDIR="/usr/lib/paxtest" CC="$(TARGET_CC)" LD="$(TARGET_CC)" linux +endef + +# The files installed to RUNDIR include test apps and shared libs. +# Assuming /usr/bin/paxtest script solely uses these libs and apps, the +# genpaxtest script updates LD_LIBRARY_PATH in the paxtest script +# as part of the paxtest's creation to include the RUNDIR path for shared +# library use. +define PAXTEST_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" LD="$(TARGET_CC)" \ + DESTDIR=$(TARGET_DIR) \ + BINDIR="usr/bin" \ + RUNDIR="/usr/lib/paxtest" -f Makefile.psm install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/pciutils/Config.in b/buildroot/package/pciutils/Config.in new file mode 100644 index 0000000..d46df6c --- /dev/null +++ b/buildroot/package/pciutils/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PCIUTILS + bool "pciutils" + # PCI not supported on Blackfin + depends on !BR2_bfin + help + Various utilities dealing with the PCI bus. + Provides things like setpci and lspci. + + http://atrey.karlin.mff.cuni.cz/~mj/pciutils.html diff --git a/buildroot/package/pciutils/pciutils.hash b/buildroot/package/pciutils/pciutils.hash new file mode 100644 index 0000000..80d7041 --- /dev/null +++ b/buildroot/package/pciutils/pciutils.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/software/utils/pciutils/sha256sums.asc +sha256 1d62f8fa192f90e61c35a6fc15ff3cb9a7a792f782407acc42ef67817c5939f5 pciutils-3.5.5.tar.xz diff --git a/buildroot/package/pciutils/pciutils.mk b/buildroot/package/pciutils/pciutils.mk new file mode 100644 index 0000000..2dd5771 --- /dev/null +++ b/buildroot/package/pciutils/pciutils.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# pciutils +# +################################################################################ + +PCIUTILS_VERSION = 3.5.5 +PCIUTILS_SITE = $(BR2_KERNEL_MIRROR)/software/utils/pciutils +PCIUTILS_SOURCE = pciutils-$(PCIUTILS_VERSION).tar.xz +PCIUTILS_INSTALL_STAGING = YES +PCIUTILS_LICENSE = GPL-2.0+ +PCIUTILS_LICENSE_FILES = COPYING +PCIUTILS_MAKE_OPTS = \ + CC="$(TARGET_CC)" \ + HOST="$(KERNEL_ARCH)-linux" \ + OPT="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + RANLIB=$(TARGET_RANLIB) \ + AR=$(TARGET_AR) \ + DNS=no + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +PCIUTILS_DEPENDENCIES += udev +PCIUTILS_MAKE_OPTS += HWDB=yes +else +PCIUTILS_MAKE_OPTS += HWDB=no +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +PCIUTILS_MAKE_OPTS += ZLIB=yes +PCIUTILS_DEPENDENCIES += zlib +else +PCIUTILS_MAKE_OPTS += ZLIB=no +endif + +ifeq ($(BR2_PACKAGE_KMOD),y) +PCIUTILS_DEPENDENCIES += kmod +PCIUTILS_MAKE_OPTS += LIBKMOD=yes +else +PCIUTILS_MAKE_OPTS += LIBKMOD=no +endif + +ifeq ($(BR2_STATIC_LIBS),y) +PCIUTILS_MAKE_OPTS += SHARED=no +else +PCIUTILS_MAKE_OPTS += SHARED=yes +endif + +# Build after busybox since it's got a lightweight lspci +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +PCIUTILS_DEPENDENCIES += busybox +endif + +define PCIUTILS_CONFIGURE_CMDS + $(SED) 's/wget --no-timestamping/wget/' $(PCIUTILS_DIR)/update-pciids.sh + $(SED) 's/uname -s/echo Linux/' \ + -e 's/uname -r/echo $(LINUX_HEADERS_VERSION)/' \ + $(PCIUTILS_DIR)/lib/configure + $(SED) 's/^STRIP/#STRIP/' $(PCIUTILS_DIR)/Makefile +endef + +define PCIUTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(PCIUTILS_MAKE_OPTS) \ + PREFIX=/usr +endef + +define PCIUTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(PCIUTILS_MAKE_OPTS) \ + PREFIX=$(TARGET_DIR)/usr SBINDIR=$(TARGET_DIR)/usr/bin \ + install install-lib install-pcilib +endef + +define PCIUTILS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(PCIUTILS_MAKE_OPTS) \ + PREFIX=$(STAGING_DIR)/usr SBINDIR=$(STAGING_DIR)/usr/bin \ + install install-lib install-pcilib +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/pcmanfm/Config.in b/buildroot/package/pcmanfm/Config.in new file mode 100644 index 0000000..69ddf00 --- /dev/null +++ b/buildroot/package/pcmanfm/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_PCMANFM + bool "pcmanfm" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + depends on BR2_INSTALL_LIBSTDCPP # libgtk2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz + select BR2_PACKAGE_LIBFM + select BR2_PACKAGE_MENU_CACHE + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBGTK2 if !BR2_PACKAGE_LIBGTK3_X11 + help + PCMan File Manager (PCManFM) is a file manager application + developed by Hong Jen Yee from Taiwan which is meant to be a + replacement for Nautilus, Konqueror and Thunar. + + http://wiki.lxde.org/en/PCManFM + +comment "pcmanfm needs a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/pcmanfm/pcmanfm.hash b/buildroot/package/pcmanfm/pcmanfm.hash new file mode 100644 index 0000000..155e9be --- /dev/null +++ b/buildroot/package/pcmanfm/pcmanfm.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/PCManFM/ +md5 b4d1f8ce08d87e4f27805a246fc51ac2 pcmanfm-1.2.5.tar.xz +sha1 9a8a2b4abebdf859e5ba2486eff84d505ad17b89 pcmanfm-1.2.5.tar.xz diff --git a/buildroot/package/pcmanfm/pcmanfm.mk b/buildroot/package/pcmanfm/pcmanfm.mk new file mode 100644 index 0000000..31acae6 --- /dev/null +++ b/buildroot/package/pcmanfm/pcmanfm.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# pcmanfm +# +################################################################################ + +PCMANFM_VERSION = 1.2.5 +PCMANFM_SOURCE = pcmanfm-$(PCMANFM_VERSION).tar.xz +PCMANFM_SITE = http://sourceforge.net/projects/pcmanfm/files +PCMANFM_DEPENDENCIES = libglib2 menu-cache libfm +PCMANFM_LICENSE = GPL-2.0+ +PCMANFM_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +PCMANFM_CONF_OPTS += --with-gtk=3 +PCMANFM_DEPENDENCIES += libgtk3 +else +PCMANFM_CONF_OPTS += --with-gtk=2 +PCMANFM_DEPENDENCIES += libgtk2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/pcre/0001-Kill-compatibility-bits.patch b/buildroot/package/pcre/0001-Kill-compatibility-bits.patch new file mode 100644 index 0000000..3563e4b --- /dev/null +++ b/buildroot/package/pcre/0001-Kill-compatibility-bits.patch @@ -0,0 +1,43 @@ +From e180a4085d8d2f82a05f037e465708cfc16bd2bf Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 14 Jun 2016 20:31:12 -0300 +Subject: [PATCH] Kill compatibility bits + +Kill ABI compatibility bits, we don't need them. +Fixes build failures on non-ELF targets. + +Signed-off-by: Gustavo Zacarias +--- + pcrecpp.cc | 16 ---------------- + 1 file changed, 16 deletions(-) + +diff --git a/pcrecpp.cc b/pcrecpp.cc +index d09c9ab..6910db0 100644 +--- a/pcrecpp.cc ++++ b/pcrecpp.cc +@@ -58,22 +58,6 @@ static const int kVecSize = (1 + kMaxArgs) * 3; // results + PCRE workspace + // Special object that stands-in for no argument + Arg RE::no_arg((void*)NULL); + +-// This is for ABI compatibility with old versions of pcre (pre-7.6), +-// which defined a global no_arg variable instead of putting it in the +-// RE class. This works on GCC >= 3, at least. It definitely works +-// for ELF, but may not for other object formats (Mach-O, for +-// instance, does not support aliases.) We could probably have a more +-// inclusive test if we ever needed it. (Note that not only the +-// __attribute__ syntax, but also __USER_LABEL_PREFIX__, are +-// gnu-specific.) +-#if defined(__GNUC__) && __GNUC__ >= 3 && defined(__ELF__) && !defined(__INTEL_COMPILER) +-# define ULP_AS_STRING(x) ULP_AS_STRING_INTERNAL(x) +-# define ULP_AS_STRING_INTERNAL(x) #x +-# define USER_LABEL_PREFIX_STR ULP_AS_STRING(__USER_LABEL_PREFIX__) +-extern Arg no_arg +- __attribute__((alias(USER_LABEL_PREFIX_STR "_ZN7pcrecpp2RE6no_argE"))); +-#endif +- + // If a regular expression has no error, its error_ field points here + static const string empty_string; + +-- +2.7.3 + diff --git a/buildroot/package/pcre/0002-Disable-C-unit-tests.patch b/buildroot/package/pcre/0002-Disable-C-unit-tests.patch new file mode 100644 index 0000000..c5c1a49 --- /dev/null +++ b/buildroot/package/pcre/0002-Disable-C-unit-tests.patch @@ -0,0 +1,42 @@ +From e3c636b8c7f9912d8d3a9fabdaa0a96ba69f7b29 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 14 Jun 2016 20:32:44 -0300 +Subject: [PATCH] Disable C++ unit tests + +They fail to build on static targets and they're not installed anyway. + +Signed-off-by: Gustavo Zacarias +--- + Makefile.in | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 6d03912..2c42b3e 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -133,12 +133,6 @@ noinst_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) + @WITH_PCRE8_TRUE@am__append_20 = libpcreposix.la + @WITH_GCOV_TRUE@@WITH_PCRE8_TRUE@am__append_21 = $(GCOV_CFLAGS) + @WITH_PCRE_CPP_TRUE@am__append_22 = libpcrecpp.la +-@WITH_PCRE_CPP_TRUE@am__append_23 = pcrecpp_unittest \ +-@WITH_PCRE_CPP_TRUE@ pcre_scanner_unittest \ +-@WITH_PCRE_CPP_TRUE@ pcre_stringpiece_unittest +-@WITH_PCRE_CPP_TRUE@am__append_24 = pcrecpp_unittest \ +-@WITH_PCRE_CPP_TRUE@ pcre_scanner_unittest \ +-@WITH_PCRE_CPP_TRUE@ pcre_stringpiece_unittest + @WITH_GCOV_TRUE@@WITH_PCRE_CPP_TRUE@am__append_25 = $(GCOV_CXXFLAGS) + @WITH_GCOV_TRUE@@WITH_PCRE_CPP_TRUE@am__append_26 = $(GCOV_LIBS) + @WITH_GCOV_TRUE@@WITH_PCRE_CPP_TRUE@am__append_27 = $(GCOV_LIBS) +@@ -362,9 +356,6 @@ libpcreposix_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + @WITH_PCRE8_TRUE@am__EXEEXT_1 = pcregrep$(EXEEXT) + @WITH_REBUILD_CHARTABLES_TRUE@am__EXEEXT_2 = dftables$(EXEEXT) + @WITH_JIT_TRUE@am__EXEEXT_3 = pcre_jit_test$(EXEEXT) +-@WITH_PCRE_CPP_TRUE@am__EXEEXT_4 = pcrecpp_unittest$(EXEEXT) \ +-@WITH_PCRE_CPP_TRUE@ pcre_scanner_unittest$(EXEEXT) \ +-@WITH_PCRE_CPP_TRUE@ pcre_stringpiece_unittest$(EXEEXT) + PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) + am__dftables_SOURCES_DIST = dftables.c + @WITH_REBUILD_CHARTABLES_TRUE@am_dftables_OBJECTS = \ +-- +2.7.3 + diff --git a/buildroot/package/pcre/Config.in b/buildroot/package/pcre/Config.in new file mode 100644 index 0000000..9d3a143 --- /dev/null +++ b/buildroot/package/pcre/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_PCRE + bool "pcre" + help + Perl Compatible Regular Expressions. By default, only the + 8-bits libpcre is built. To get the 16-bits and/or 32-bits + variants libpcre16/libpcre32, use the package sub-options. + + http://www.pcre.org/ + +if BR2_PACKAGE_PCRE + +config BR2_PACKAGE_PCRE_16 + bool "16-bit pcre" + help + This option builds the 16-bits pcre library, i.e 'libpcre16' + +config BR2_PACKAGE_PCRE_32 + bool "32-bit pcre" + help + This option builds the 32-bits pcre library, i.e 'libpcre32' + +config BR2_PACKAGE_PCRE_UTF + bool "UTF-8/16/32 support in pcre" + help + This option builds the pcre library with UTF-8/16/32 support + +config BR2_PACKAGE_PCRE_UCP + bool "Unicode properties support in pcre" + select BR2_PACKAGE_PCRE_UTF + help + This option builds the pcre library with Unicode properties + support (implies UTF-8/16/32 support)' + +endif diff --git a/buildroot/package/pcre/pcre.hash b/buildroot/package/pcre/pcre.hash new file mode 100644 index 0000000..fc0bb98 --- /dev/null +++ b/buildroot/package/pcre/pcre.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 e62c7eac5ae7c0e7286db61ff82912e1c0b7a0c13706616e94a7dd729321b530 pcre-8.41.tar.bz2 +# License files, locally calculated +sha256 9ac4dfc82b2645ff77b56b759f95f28aa15ab15a03670fa6d4313a6b351e60f0 LICENCE diff --git a/buildroot/package/pcre/pcre.mk b/buildroot/package/pcre/pcre.mk new file mode 100644 index 0000000..b12b00d --- /dev/null +++ b/buildroot/package/pcre/pcre.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# pcre +# +################################################################################ + +PCRE_VERSION = 8.41 +PCRE_SITE = https://ftp.pcre.org/pub/pcre +PCRE_SOURCE = pcre-$(PCRE_VERSION).tar.bz2 +PCRE_LICENSE = BSD-3-Clause +PCRE_LICENSE_FILES = LICENCE +PCRE_INSTALL_STAGING = YES +PCRE_CONFIG_SCRIPTS = pcre-config + +# They're required for host-libglib2 +HOST_PCRE_CONF_OPTS = --enable-unicode-properties + +ifneq ($(BR2_INSTALL_LIBSTDCPP),y) +# pcre will use the host g++ if a cross version isn't available +PCRE_CONF_OPTS = --disable-cpp +endif + +PCRE_CONF_OPTS += --enable-pcre8 +PCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_16),--enable-pcre16,--disable-pcre16) +PCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_32),--enable-pcre32,--disable-pcre32) +PCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_UTF),--enable-utf,--disable-utf) +PCRE_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE_UCP),--enable-unicode-properties,--disable-unicode-properties) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/pcre2/0001-fix-heapframe-alignment.patch b/buildroot/package/pcre2/0001-fix-heapframe-alignment.patch new file mode 100644 index 0000000..a10e9e7 --- /dev/null +++ b/buildroot/package/pcre2/0001-fix-heapframe-alignment.patch @@ -0,0 +1,49 @@ +src/pcre2_intmodedep.h: fix alignment of fields in struct heapframe + +pcre2_intmodedep.h has a check to verify that the size of the struct +heapframe is a multiple of 4 bytes. On most architectures this works +fine, but not on m68k. Indeed, when building the 16-bit variant of +pcre2, the heapframe structure contains: + + PCRE2_UCHAR occu[2]; + PCRE2_SPTR eptr; + +Where PCRE2_UCHAR is a 16-bit data type, and PCRE2_SPTR is a +pointer. The occu[] array starts at byte 0x32, so not aligned on a +32-bit boundary. With 2 x 16-bit, the occur[] array ends at byte 0x36. + +Now, on most architectures, the alignment required for a pointer will +make the eptr field start at 0x38 (on 32 bit architectures). However, +on m68k, it is fine to have a pointer aligned only on a 16-bit +boundary, and the eptr pointer will be at offset 0x36. + +This doesn't cause a problem per-se, but breaks the check that +heapframe should be a multiple of 4 bytes. + +To fix this, we make sure eptr is aligned by introducing an unused +field of 16 bits after the occu[] array (in the 16-bit variant) or +after the occu[] array (in the 32-bit variant). These choices have +been made to keep the structure layout unchanged. + +Fixes the following build failure on m68k: + +src/pcre2_intmodedep.h:818:14: error: size of array 'check_heapframe_size' is negative + typedef char check_heapframe_size[ + ^~~~~~~~~~~~~~~~~~~~ + +Signed-off-by: Thomas Petazzoni +Upstream: https://bugs.exim.org/show_bug.cgi?id=2247 + +Index: src/pcre2_intmodedep.h +=================================================================== +--- a/src/pcre2_intmodedep.h (revision 923) ++++ b/src/pcre2_intmodedep.h (working copy) +@@ -797,7 +797,9 @@ + PCRE2_UCHAR occu[6]; /* Used for other case code units */ + #elif PCRE2_CODE_UNIT_WIDTH == 16 + PCRE2_UCHAR occu[2]; /* Used for other case code units */ ++ uint8_t unused[2]; /* Ensure 32 bit alignment */ + #else ++ uint8_t unused[2]; /* Ensure 32 bit alignment */ + PCRE2_UCHAR occu[1]; /* Used for other case code units */ + #endif diff --git a/buildroot/package/pcre2/Config.in b/buildroot/package/pcre2/Config.in new file mode 100644 index 0000000..bb576c7 --- /dev/null +++ b/buildroot/package/pcre2/Config.in @@ -0,0 +1,26 @@ + +config BR2_PACKAGE_PCRE2 + bool "pcre2" + help + Perl Compatible Regular Expressions. By default, only the + 8-bits libpcre2 is built. To get the 16-bits and/or 32-bits + variants libpcre2-16/libpcre2-32, use the package + sub-options. + + http://www.pcre.org/ + +if BR2_PACKAGE_PCRE2 + +config BR2_PACKAGE_PCRE2_16 + bool "16-bit pcre2" + help + This option builds the 16-bits pcre2 library, i.e + 'libpcre2-16' + +config BR2_PACKAGE_PCRE2_32 + bool "32-bit pcre2" + help + This option builds the 32-bits pcre2 library, i.e + 'libpcre2-32' + +endif diff --git a/buildroot/package/pcre2/pcre2.hash b/buildroot/package/pcre2/pcre2.hash new file mode 100644 index 0000000..7b125dd --- /dev/null +++ b/buildroot/package/pcre2/pcre2.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature at https://ftp.pcre.org/pub/pcre/pcre2-10.30.tar.bz2.sig +sha256 90bd41c605d30e3745771eb81928d779f158081a51b2f314bbcc1f73de5773db pcre2-10.30.tar.bz2 diff --git a/buildroot/package/pcre2/pcre2.mk b/buildroot/package/pcre2/pcre2.mk new file mode 100644 index 0000000..3844622 --- /dev/null +++ b/buildroot/package/pcre2/pcre2.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# pcre2 +# +################################################################################ + +PCRE2_VERSION = 10.30 +PCRE2_SITE = https://ftp.pcre.org/pub/pcre +PCRE2_SOURCE = pcre2-$(PCRE2_VERSION).tar.bz2 +PCRE2_LICENSE = BSD-3-Clause +PCRE2_LICENSE_FILES = LICENCE +PCRE2_INSTALL_STAGING = YES +PCRE2_CONFIG_SCRIPTS = pcre2-config + +PCRE2_CONF_OPTS += --enable-pcre2-8 +PCRE2_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE2_16),--enable-pcre2-16,--disable-pcre2-16) +PCRE2_CONF_OPTS += $(if $(BR2_PACKAGE_PCRE2_32),--enable-pcre2-32,--disable-pcre2-32) + +# disable fork usage if not available +ifeq ($(BR2_USE_MMU),) +PCRE2_CONF_OPTS += --disable-pcre2grep-callout +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/pcsc-lite/0001-pthread-needed-for-libusb.patch b/buildroot/package/pcsc-lite/0001-pthread-needed-for-libusb.patch new file mode 100644 index 0000000..acb777a --- /dev/null +++ b/buildroot/package/pcsc-lite/0001-pthread-needed-for-libusb.patch @@ -0,0 +1,29 @@ +configure.ac: explicitly add pthread cflags/libs in the libusb test + +If libusb-config does not exist, LIBUSB_CFLAGS and PTHREAD_CFLAGS will be +empty, and the test for libusb will be performed without additional flags. +However, when libusb needs threads, some extra flags are needed (depending +on the platform), like -pthreads, -lpthread, etc. Without these flags, the +test for libusb_init() will fail to link correctly, and pcsc-lite will fail +detecting libusb. + +Signed-off-by: Thomas De Schampheleire + +Upstream-status: will be submitted + +--- + +diff --git a/configure.ac b/configure.ac +--- a/configure.ac ++++ b/configure.ac +@@ -254,8 +254,8 @@ if test "x$use_libusb" != xno ; then + saved_CPPFLAGS="$CPPFLAGS" + saved_LIBS="$LIBS" + +- CPPFLAGS="$CPPFLAGS $LIBUSB_CFLAGS" +- LIBS="$LDFLAGS $LIBUSB_LIBS" ++ CPPFLAGS="$CPPFLAGS $LIBUSB_CFLAGS $PTHREAD_CFLAGS" ++ LIBS="$LDFLAGS $LIBUSB_LIBS $PTHREAD_LIBS" + + AC_CHECK_HEADERS(libusb.h, [], + [ AC_MSG_ERROR([libusb.h not found, use ./configure LIBUSB_CFLAGS=...]) ]) diff --git a/buildroot/package/pcsc-lite/Config.in b/buildroot/package/pcsc-lite/Config.in new file mode 100644 index 0000000..658ebe3 --- /dev/null +++ b/buildroot/package/pcsc-lite/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_PCSC_LITE + bool "pcsc-lite" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + help + Middleware to access smart card using SCard API (PC/SC). + + http://pcsclite.alioth.debian.org/ + +if BR2_PACKAGE_PCSC_LITE + +config BR2_PACKAGE_PCSC_LITE_FORCE_LIBUSB + bool "use libusb" + depends on !BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_LIBUSB + help + Select Y if you want to support usb smart card readers. + +config BR2_PACKAGE_PCSC_LITE_DEBUGATR + bool "enable ATR debug messages" + help + Enable ATR debug messages from pcscd. + +config BR2_PACKAGE_PCSC_LITE_EMBEDDED + bool "enable embedded mode" + help + Limit RAM and CPU resources by disabling logs. + +endif + +comment "pcsc-lite needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/pcsc-lite/pcsc-lite.hash b/buildroot/package/pcsc-lite/pcsc-lite.hash new file mode 100644 index 0000000..efd9749 --- /dev/null +++ b/buildroot/package/pcsc-lite/pcsc-lite.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ec7d0114016c788c1c09859c84860f6cec6c4595436d23245105154b9c046bb2 pcsc-lite-1.8.22.tar.bz2 diff --git a/buildroot/package/pcsc-lite/pcsc-lite.mk b/buildroot/package/pcsc-lite/pcsc-lite.mk new file mode 100644 index 0000000..15c37f9 --- /dev/null +++ b/buildroot/package/pcsc-lite/pcsc-lite.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# pcsc-lite +# +################################################################################ + +PCSC_LITE_VERSION = 1.8.22 +PCSC_LITE_SOURCE = pcsc-lite-$(PCSC_LITE_VERSION).tar.bz2 +PCSC_LITE_SITE = http://alioth.debian.org/frs/download.php/file/4203 +PCSC_LITE_INSTALL_STAGING = YES +PCSC_LITE_DEPENDENCIES = host-pkgconf +PCSC_LITE_LICENSE = BSD-3-Clause +PCSC_LITE_LICENSE_FILES = COPYING +PCSC_LITE_AUTORECONF = YES + +# - libudev and libusb are optional +# - libudev and libusb can't be used together +# - libudev has a priority over libusb + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +PCSC_LITE_CONF_OPTS += --enable-libudev --disable-libusb +PCSC_LITE_DEPENDENCIES += udev +else +ifeq ($(BR2_PACKAGE_LIBUSB),y) +PCSC_LITE_CONF_OPTS += --enable-libusb --disable-libudev +PCSC_LITE_DEPENDENCIES += libusb +else +PCSC_LITE_CONF_OPTS += --disable-libusb --disable-libudev +endif +endif + +ifeq ($(PACKAGE_PCSC_LITE_DEBUGATR),y) +PCSC_LITE_CONF_OPTS += --enable-debugatr +endif + +ifeq ($(PACKAGE_PCSC_LITE_EMBEDDED),y) +PCSC_LITE_CONF_OPTS += --enable-embedded +endif + +define PCSC_LITE_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/sockets.target.wants + ln -sf ../../../../usr/lib/systemd/system/pcscd.socket \ + $(TARGET_DIR)/etc/systemd/system/sockets.target.wants/pcscd.socket +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/pdbg/Config.in b/buildroot/package/pdbg/Config.in new file mode 100644 index 0000000..a0b3d86 --- /dev/null +++ b/buildroot/package/pdbg/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PDBG + bool "pdbg" + help + PowerPC FSI Debugger, for low level debugging of a IBM + Power8 and Power9 CPU over FSI. + + pdbg runs on a BMC, which is generally an ARM-powered system + monitoring/controlling a host CPU. It can also run on the + host. + + https://github.com/open-power/pdbg diff --git a/buildroot/package/pdbg/pdbg.hash b/buildroot/package/pdbg/pdbg.hash new file mode 100644 index 0000000..39aa33e --- /dev/null +++ b/buildroot/package/pdbg/pdbg.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2d6174d30b12cb46d24c260ecc0714a757c2cb899be3f5106c148d4c359bd319 pdbg-139ba071c222a5b0c20075f7c2265029ddd59449.tar.gz diff --git a/buildroot/package/pdbg/pdbg.mk b/buildroot/package/pdbg/pdbg.mk new file mode 100644 index 0000000..ba9aa15 --- /dev/null +++ b/buildroot/package/pdbg/pdbg.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# pdbg +# +################################################################################ + +PDBG_VERSION = 139ba071c222a5b0c20075f7c2265029ddd59449 +PDBG_SITE = $(call github,open-power,pdbg,$(PDBG_VERSION)) +PDBG_LICENSE = Apache-2.0 +PDBG_LICENSE_FILES = COPYING +PDBG_AUTORECONF = YES +PDBG_DEPENDENCIES = host-dtc + +PDBG_MAKE_OPTS = "GIT_SHA1=\"$(PDBG_VERSION)\"" + +define PDBG_PATCH_M4 + mkdir -p $(@D)/m4 +endef +PDBG_POST_PATCH_HOOKS += PDBG_PATCH_M4 + +$(eval $(autotools-package)) diff --git a/buildroot/package/pdmenu/0001-autoconf-makeinfo.in-link-with-INTLLIBS-if-needed.patch b/buildroot/package/pdmenu/0001-autoconf-makeinfo.in-link-with-INTLLIBS-if-needed.patch new file mode 100644 index 0000000..78f3e57 --- /dev/null +++ b/buildroot/package/pdmenu/0001-autoconf-makeinfo.in-link-with-INTLLIBS-if-needed.patch @@ -0,0 +1,27 @@ +From 319cc3859044214961164ed1f219f2f21ca965af Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 30 Aug 2017 23:04:37 +0200 +Subject: [PATCH] autoconf/makeinfo.in: link with INTLLIBS if needed + +gettext may be provided by external libraries, as specified in +INTLLIBS, so we must include @INTLLIBS@ in the LIBS variable. + +Signed-off-by: Thomas Petazzoni +--- + autoconf/makeinfo.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/autoconf/makeinfo.in b/autoconf/makeinfo.in +index ee3054a..6d58d77 100644 +--- a/autoconf/makeinfo.in ++++ b/autoconf/makeinfo.in +@@ -13,5 +13,5 @@ DEFINES = -DETCDIR=\"${SYSCONFDIR}/\" -DVER=\"${VER}\" @DEFS@ \ + $(PROFILE) -D__USE_FIXED_PROTOTYPES__ -D_GNU_SOURCE \ + -DLOCALEDIR=\"@datadir@/locale\" + CFLAGS = $(DEFINES) @gcc_cflags@ @CFLAGS@ +-LIBS = @LIBS@ $(EFENCE) ++LIBS = @LIBS@ @INTLLIBS@ $(EFENCE) + INSTALL_PROGRAM = ${INSTALL} +-- +2.13.5 + diff --git a/buildroot/package/pdmenu/0002-Makefile-autoconf-makeinfo.in-support-build-install-.patch b/buildroot/package/pdmenu/0002-Makefile-autoconf-makeinfo.in-support-build-install-.patch new file mode 100644 index 0000000..1a22aa6 --- /dev/null +++ b/buildroot/package/pdmenu/0002-Makefile-autoconf-makeinfo.in-support-build-install-.patch @@ -0,0 +1,76 @@ +From 5368bd0cfd0640f5c0ca766d4fda1b3f71c1b013 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 30 Aug 2017 23:07:26 +0200 +Subject: [PATCH] Makefile, autoconf/makeinfo.in: support build/install without + gettext + +The gettext tool msgfmt may not be available to build the .mo files +from the .po files, so we handle this case by disabling the +build/installation of .po files in such a case. + +Signed-off-by: Thomas Petazzoni +--- + Makefile | 17 ++++++++++++++--- + autoconf/makeinfo.in | 1 + + 2 files changed, 15 insertions(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index a708046..3e83ca3 100644 +--- a/Makefile ++++ b/Makefile +@@ -7,11 +7,18 @@ OBJFILES := $(SRCFILES:%.c=%.o) + LANGS = fr ru es + MOS := $(addprefix po/, $(addsuffix .mo, $(LANGS))) + LOCALEDIR = $(INSTALL_PREFIX)/usr/share/locale +- +-all: pdmenu $(POTFILE) $(MOS) ++TARGETS = pdmenu ++INSTALL_TARGETS = install-pdmenu + + include makeinfo + ++ifneq ($(MSGFMT),) ++TARGETS += $(POTFILE) $(MOS) ++INSTALL_TARGETS += install-pos ++endif ++ ++all: $(TARGETS) ++ + pdmenu: .dep $(OBJFILES) + ${CC} -o pdmenu $(OBJFILES) $(CFLAGS) $(LIBS) + +@@ -40,7 +47,9 @@ clean: + $(MAKE) $(POTFILE) # make sure translators' input is ready + rm -f $(OBJFILES) pdmenu $(MOS) + +-install: all ++install: $(INSTALL_TARGETS) ++ ++install-pdmenu: + $(INSTALL) -d $(INSTALL_PREFIX)/$(BINDIR) \ + $(INSTALL_PREFIX)/$(MANDIR)/man1 \ + $(INSTALL_PREFIX)/$(MANDIR)/man5 \ +@@ -56,6 +65,8 @@ install: all + $(INSTALL) examples/pdmenurc $(INSTALL_PREFIX)/$(SYSCONFDIR)/pdmenurc -m 0644 + $(INSTALL) examples/showdir.pl $(INSTALL_PREFIX)/$(DATADIR)/pdmenu + cd $(INSTALL_PREFIX)/$(DATADIR)/pdmenu && $(LN_S) -f showdir.pl editdir.pl ++ ++install-pos: + for lang in $(LANGS); do \ + [ ! -d $(LOCALEDIR)/$$lang/LC_MESSAGES/ ] && mkdir -p $(LOCALEDIR)/$$lang/LC_MESSAGES/; \ + install -m 644 po/$$lang.mo $(LOCALEDIR)/$$lang/LC_MESSAGES/pdmenu.mo; \ +diff --git a/autoconf/makeinfo.in b/autoconf/makeinfo.in +index 6d58d77..069daf8 100644 +--- a/autoconf/makeinfo.in ++++ b/autoconf/makeinfo.in +@@ -8,6 +8,7 @@ DATADIR = @datadir@ + CC = @CC@ + INSTALL = @INSTALL@ + LN_S = @LN_S@ ++MSGFMT = @MSGFMT@ + VER = @VER@ + DEFINES = -DETCDIR=\"${SYSCONFDIR}/\" -DVER=\"${VER}\" @DEFS@ \ + $(PROFILE) -D__USE_FIXED_PROTOTYPES__ -D_GNU_SOURCE \ +-- +2.13.5 + diff --git a/buildroot/package/pdmenu/Config.in b/buildroot/package/pdmenu/Config.in new file mode 100644 index 0000000..8f35f61 --- /dev/null +++ b/buildroot/package/pdmenu/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PDMENU + bool "pdmenu" + depends on BR2_USE_MMU # slang + select BR2_PACKAGE_SLANG + help + Pdmenu is a full screen menuing system for Unix. It is + designed to be easy to use, and is suitable as a login shell + for inexperienced users, or it can just be ran at the + command line as a handy menu. + + Pdmenu features color support and GPM mouse support at the + Linux console. It was developed on Linux, and has now been + compiled on many other unixes without problems. + + https://joeyh.name/code/pdmenu/ diff --git a/buildroot/package/pdmenu/pdmenu.hash b/buildroot/package/pdmenu/pdmenu.hash new file mode 100644 index 0000000..ab3a666 --- /dev/null +++ b/buildroot/package/pdmenu/pdmenu.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 302aa81b8868133ff5a0f3e3e897f71d425bc628c0d7439addb623f12c277bea pdmenu_1.3.4.tar.gz + +# License file hash, locally calculated +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 doc/COPYING diff --git a/buildroot/package/pdmenu/pdmenu.mk b/buildroot/package/pdmenu/pdmenu.mk new file mode 100644 index 0000000..7835095 --- /dev/null +++ b/buildroot/package/pdmenu/pdmenu.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# pdmenu +# +################################################################################ + +PDMENU_VERSION = 1.3.4 +PDMENU_SOURCE = pdmenu_$(PDMENU_VERSION).tar.gz +PDMENU_SITE = http://snapshot.debian.org/archive/debian/20170828T160058Z/pool/main/p/pdmenu +PDMENU_LICENSE = GPL-2.0 +PDMENU_LICENSE_FILES = doc/COPYING +PDMENU_DEPENDENCIES = slang $(TARGET_NLS_DEPENDENCIES) +PDMENU_INSTALL_TARGET_OPTS = INSTALL_PREFIX=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/buildroot/package/perl-crypt-openssl-random/Config.in b/buildroot/package/perl-crypt-openssl-random/Config.in new file mode 100644 index 0000000..2ceb78d --- /dev/null +++ b/buildroot/package/perl-crypt-openssl-random/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_CRYPT_OPENSSL_RANDOM + bool "perl-crypt-openssl-random" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + help + OpenSSL/LibreSSL pseudo-random number generator access + + http://sourceforge.net/projects/perl-openssl/ + +comment "perl-crypt-openssl-random needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-crypt-openssl-random/perl-crypt-openssl-random.hash b/buildroot/package/perl-crypt-openssl-random/perl-crypt-openssl-random.hash new file mode 100644 index 0000000..caacdc9 --- /dev/null +++ b/buildroot/package/perl-crypt-openssl-random/perl-crypt-openssl-random.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 5d71337503e0356ce1ce1481504e5885 Crypt-OpenSSL-Random-0.11.tar.gz +sha256 bb8c81c6a39b9b13a22d818ee9a746242f136f0fadceb6b9776ae615e7524c7a Crypt-OpenSSL-Random-0.11.tar.gz diff --git a/buildroot/package/perl-crypt-openssl-random/perl-crypt-openssl-random.mk b/buildroot/package/perl-crypt-openssl-random/perl-crypt-openssl-random.mk new file mode 100644 index 0000000..de029e9 --- /dev/null +++ b/buildroot/package/perl-crypt-openssl-random/perl-crypt-openssl-random.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-crypt-openssl-random +# +################################################################################ + +PERL_CRYPT_OPENSSL_RANDOM_VERSION = 0.11 +PERL_CRYPT_OPENSSL_RANDOM_SOURCE = Crypt-OpenSSL-Random-$(PERL_CRYPT_OPENSSL_RANDOM_VERSION).tar.gz +PERL_CRYPT_OPENSSL_RANDOM_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RU/RURBAN +PERL_CRYPT_OPENSSL_RANDOM_DEPENDENCIES = openssl +PERL_CRYPT_OPENSSL_RANDOM_LICENSE = Artistic or GPL-1.0+ +PERL_CRYPT_OPENSSL_RANDOM_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-crypt-openssl-rsa/Config.in b/buildroot/package/perl-crypt-openssl-rsa/Config.in new file mode 100644 index 0000000..1fa1fd9 --- /dev/null +++ b/buildroot/package/perl-crypt-openssl-rsa/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_CRYPT_OPENSSL_RSA + bool "perl-crypt-openssl-rsa" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_CRYPT_OPENSSL_RANDOM + help + RSA encoding and decoding, using the openSSL libraries + + https://metacpan.org/release/Crypt-OpenSSL-RSA + +comment "perl-crypt-openssl-rsa needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.hash b/buildroot/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.hash new file mode 100644 index 0000000..6e060ce --- /dev/null +++ b/buildroot/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 86217a5036fc63779c30420b5fd84129 Crypt-OpenSSL-RSA-0.28.tar.gz +sha256 5357f977464bb3a8184cf2d3341851a10d5515b4b2b0dfb88bf78995c0ded7be Crypt-OpenSSL-RSA-0.28.tar.gz diff --git a/buildroot/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.mk b/buildroot/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.mk new file mode 100644 index 0000000..b853d99 --- /dev/null +++ b/buildroot/package/perl-crypt-openssl-rsa/perl-crypt-openssl-rsa.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-crypt-openssl-rsa +# +################################################################################ + +PERL_CRYPT_OPENSSL_RSA_VERSION = 0.28 +PERL_CRYPT_OPENSSL_RSA_SOURCE = Crypt-OpenSSL-RSA-$(PERL_CRYPT_OPENSSL_RSA_VERSION).tar.gz +PERL_CRYPT_OPENSSL_RSA_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PE/PERLER +PERL_CRYPT_OPENSSL_RSA_DEPENDENCIES = perl-crypt-openssl-random +PERL_CRYPT_OPENSSL_RSA_LICENSE = Artistic or GPL-1.0+ +PERL_CRYPT_OPENSSL_RSA_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-datetime-tiny/Config.in b/buildroot/package/perl-datetime-tiny/Config.in new file mode 100644 index 0000000..7721c07 --- /dev/null +++ b/buildroot/package/perl-datetime-tiny/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_DATETIME_TINY + bool "perl-datetime-tiny" + help + A date object, with as little code as possible + + https://github.com/dagolden/DateTime-Tiny diff --git a/buildroot/package/perl-datetime-tiny/perl-datetime-tiny.hash b/buildroot/package/perl-datetime-tiny/perl-datetime-tiny.hash new file mode 100644 index 0000000..68f2c02 --- /dev/null +++ b/buildroot/package/perl-datetime-tiny/perl-datetime-tiny.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 736be4b3e8171f4a029fb6ac3712a9b4 DateTime-Tiny-1.06.tar.gz +sha256 bd725df481d7223ee787e154c116098b08a129f55e0763194b07ebea3dda33ec DateTime-Tiny-1.06.tar.gz diff --git a/buildroot/package/perl-datetime-tiny/perl-datetime-tiny.mk b/buildroot/package/perl-datetime-tiny/perl-datetime-tiny.mk new file mode 100644 index 0000000..6b54967 --- /dev/null +++ b/buildroot/package/perl-datetime-tiny/perl-datetime-tiny.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-datetime-tiny +# +################################################################################ + +PERL_DATETIME_TINY_VERSION = 1.06 +PERL_DATETIME_TINY_SOURCE = DateTime-Tiny-$(PERL_DATETIME_TINY_VERSION).tar.gz +PERL_DATETIME_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DAGOLDEN +PERL_DATETIME_TINY_LICENSE = Artistic or GPL-1.0+ +PERL_DATETIME_TINY_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-digest-hmac/Config.in b/buildroot/package/perl-digest-hmac/Config.in new file mode 100644 index 0000000..733a53d --- /dev/null +++ b/buildroot/package/perl-digest-hmac/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_DIGEST_HMAC + bool "perl-digest-hmac" + help + Digest::HMAC - Keyed-Hashing for Message Authentication + + https://github.com/gisle/digest-hmac diff --git a/buildroot/package/perl-digest-hmac/perl-digest-hmac.hash b/buildroot/package/perl-digest-hmac/perl-digest-hmac.hash new file mode 100644 index 0000000..018e4eb --- /dev/null +++ b/buildroot/package/perl-digest-hmac/perl-digest-hmac.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 e6a5d6f552da16eacb5157ea4369ff9d Digest-HMAC-1.03.tar.gz +sha256 3bc72c6d3ff144d73aefb90e9a78d33612d58cf1cd1631ecfb8985ba96da4a59 Digest-HMAC-1.03.tar.gz diff --git a/buildroot/package/perl-digest-hmac/perl-digest-hmac.mk b/buildroot/package/perl-digest-hmac/perl-digest-hmac.mk new file mode 100644 index 0000000..a926a1e --- /dev/null +++ b/buildroot/package/perl-digest-hmac/perl-digest-hmac.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-digest-hmac +# +################################################################################ + +PERL_DIGEST_HMAC_VERSION = 1.03 +PERL_DIGEST_HMAC_SOURCE = Digest-HMAC-$(PERL_DIGEST_HMAC_VERSION).tar.gz +PERL_DIGEST_HMAC_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_DIGEST_HMAC_LICENSE = Artistic or GPL-1.0+ +PERL_DIGEST_HMAC_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-digest-sha1/Config.in b/buildroot/package/perl-digest-sha1/Config.in new file mode 100644 index 0000000..b72a4ae --- /dev/null +++ b/buildroot/package/perl-digest-sha1/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_DIGEST_SHA1 + bool "perl-digest-sha1" + depends on !BR2_STATIC_LIBS + help + Perl interface to the SHA-1 algorithm + + https://metacpan.org/release/Digest-SHA1 + +comment "perl-digest-sha1 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-digest-sha1/perl-digest-sha1.hash b/buildroot/package/perl-digest-sha1/perl-digest-sha1.hash new file mode 100644 index 0000000..d24d5ab --- /dev/null +++ b/buildroot/package/perl-digest-sha1/perl-digest-sha1.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 bd22388f268434f2b24f64e28bf1aa35 Digest-SHA1-2.13.tar.gz +sha256 68c1dac2187421f0eb7abf71452a06f190181b8fc4b28ededf5b90296fb943cc Digest-SHA1-2.13.tar.gz diff --git a/buildroot/package/perl-digest-sha1/perl-digest-sha1.mk b/buildroot/package/perl-digest-sha1/perl-digest-sha1.mk new file mode 100644 index 0000000..d93159b --- /dev/null +++ b/buildroot/package/perl-digest-sha1/perl-digest-sha1.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-digest-sha1 +# +################################################################################ + +PERL_DIGEST_SHA1_VERSION = 2.13 +PERL_DIGEST_SHA1_SOURCE = Digest-SHA1-$(PERL_DIGEST_SHA1_VERSION).tar.gz +PERL_DIGEST_SHA1_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_DIGEST_SHA1_LICENSE = Artistic or GPL-1.0+ +PERL_DIGEST_SHA1_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-encode-detect/Config.in b/buildroot/package/perl-encode-detect/Config.in new file mode 100644 index 0000000..63ea432 --- /dev/null +++ b/buildroot/package/perl-encode-detect/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PERL_ENCODE_DETECT + bool "perl-encode-detect" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + help + An Encode::Encoding subclass that detects the encoding of + data. + + https://metacpan.org/release/Encode-Detect + +comment "perl-encode-detect needs a toolchain w/ C++, dynamic library" + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/perl-encode-detect/perl-encode-detect.hash b/buildroot/package/perl-encode-detect/perl-encode-detect.hash new file mode 100644 index 0000000..c727a44 --- /dev/null +++ b/buildroot/package/perl-encode-detect/perl-encode-detect.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 ee9faf55d7105c97b02b8ebe590819c7 Encode-Detect-1.01.tar.gz +sha256 834d893aa7db6ce3f158afbd0e432d6ed15a276e0940db0a74be13fd9c4bbbf1 Encode-Detect-1.01.tar.gz diff --git a/buildroot/package/perl-encode-detect/perl-encode-detect.mk b/buildroot/package/perl-encode-detect/perl-encode-detect.mk new file mode 100644 index 0000000..732fba8 --- /dev/null +++ b/buildroot/package/perl-encode-detect/perl-encode-detect.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-encode-detect +# +################################################################################ + +PERL_ENCODE_DETECT_VERSION = 1.01 +PERL_ENCODE_DETECT_SOURCE = Encode-Detect-$(PERL_ENCODE_DETECT_VERSION).tar.gz +PERL_ENCODE_DETECT_SITE = $(BR2_CPAN_MIRROR)/authors/id/J/JG/JGMYERS +PERL_ENCODE_DETECT_DEPENDENCIES = host-perl-module-build +PERL_ENCODE_DETECT_LICENSE = MPL-1.1 +PERL_ENCODE_DETECT_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-encode-locale/Config.in b/buildroot/package/perl-encode-locale/Config.in new file mode 100644 index 0000000..d15aecb --- /dev/null +++ b/buildroot/package/perl-encode-locale/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_ENCODE_LOCALE + bool "perl-encode-locale" + help + Determine the locale encoding + + https://github.com/gisle/encode-locale diff --git a/buildroot/package/perl-encode-locale/perl-encode-locale.hash b/buildroot/package/perl-encode-locale/perl-encode-locale.hash new file mode 100644 index 0000000..1b6a6bc --- /dev/null +++ b/buildroot/package/perl-encode-locale/perl-encode-locale.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 fcfdb8e4ee34bcf62aed429b4a23db27 Encode-Locale-1.05.tar.gz +sha256 176fa02771f542a4efb1dbc2a4c928e8f4391bf4078473bd6040d8f11adb0ec1 Encode-Locale-1.05.tar.gz diff --git a/buildroot/package/perl-encode-locale/perl-encode-locale.mk b/buildroot/package/perl-encode-locale/perl-encode-locale.mk new file mode 100644 index 0000000..80d9c3b --- /dev/null +++ b/buildroot/package/perl-encode-locale/perl-encode-locale.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-encode-locale +# +################################################################################ + +PERL_ENCODE_LOCALE_VERSION = 1.05 +PERL_ENCODE_LOCALE_SOURCE = Encode-Locale-$(PERL_ENCODE_LOCALE_VERSION).tar.gz +PERL_ENCODE_LOCALE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_ENCODE_LOCALE_LICENSE = Artistic or GPL-1.0+ +PERL_ENCODE_LOCALE_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-file-listing/Config.in b/buildroot/package/perl-file-listing/Config.in new file mode 100644 index 0000000..85f8e2e --- /dev/null +++ b/buildroot/package/perl-file-listing/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_FILE_LISTING + bool "perl-file-listing" + select BR2_PACKAGE_PERL_HTTP_DATE + help + Module to parse directoy listings + + https://github.com/gisle/file-listing diff --git a/buildroot/package/perl-file-listing/perl-file-listing.hash b/buildroot/package/perl-file-listing/perl-file-listing.hash new file mode 100644 index 0000000..1549c5a --- /dev/null +++ b/buildroot/package/perl-file-listing/perl-file-listing.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 83f636b477741f3a014585bb9cc079a6 File-Listing-6.04.tar.gz +sha256 1e0050fcd6789a2179ec0db282bf1e90fb92be35d1171588bd9c47d52d959cf5 File-Listing-6.04.tar.gz diff --git a/buildroot/package/perl-file-listing/perl-file-listing.mk b/buildroot/package/perl-file-listing/perl-file-listing.mk new file mode 100644 index 0000000..e150de7 --- /dev/null +++ b/buildroot/package/perl-file-listing/perl-file-listing.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-file-listing +# +################################################################################ + +PERL_FILE_LISTING_VERSION = 6.04 +PERL_FILE_LISTING_SOURCE = File-Listing-$(PERL_FILE_LISTING_VERSION).tar.gz +PERL_FILE_LISTING_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_FILE_LISTING_DEPENDENCIES = perl-http-date +PERL_FILE_LISTING_LICENSE = Artistic or GPL-1.0+ +PERL_FILE_LISTING_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-file-util/Config.in b/buildroot/package/perl-file-util/Config.in new file mode 100644 index 0000000..871be98 --- /dev/null +++ b/buildroot/package/perl-file-util/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_FILE_UTIL + bool "perl-file-util" + help + Easy, versatile, portable file handling + + https://github.com/tommybutler/file-util/wiki diff --git a/buildroot/package/perl-file-util/perl-file-util.hash b/buildroot/package/perl-file-util/perl-file-util.hash new file mode 100644 index 0000000..dc3e59e --- /dev/null +++ b/buildroot/package/perl-file-util/perl-file-util.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 5706487ecf0daae885f709914915e832 File-Util-4.161950.tar.gz +sha256 88507b19da580d595b5c25fe6ba75bbd6096b4359e389ead067a216f766c20ee File-Util-4.161950.tar.gz diff --git a/buildroot/package/perl-file-util/perl-file-util.mk b/buildroot/package/perl-file-util/perl-file-util.mk new file mode 100644 index 0000000..f8f2712 --- /dev/null +++ b/buildroot/package/perl-file-util/perl-file-util.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# perl-file-util +# +################################################################################ + +PERL_FILE_UTIL_VERSION = 4.161950 +PERL_FILE_UTIL_SOURCE = File-Util-$(PERL_FILE_UTIL_VERSION).tar.gz +PERL_FILE_UTIL_SITE = $(BR2_CPAN_MIRROR)/authors/id/T/TO/TOMMY +PERL_FILE_UTIL_DEPENDENCIES = host-perl-module-build +PERL_FILE_UTIL_LICENSE = Artistic or GPL-1.0+ +PERL_FILE_UTIL_LICENSE_FILES = COPYING LICENSE +HOST_PERL_FILE_UTIL_DEPENDENCIES = host-perl-module-build + +$(eval $(perl-package)) +$(eval $(host-perl-package)) diff --git a/buildroot/package/perl-gd/Config.in b/buildroot/package/perl-gd/Config.in new file mode 100644 index 0000000..2b7a265 --- /dev/null +++ b/buildroot/package/perl-gd/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PERL_GD + bool "perl-gd" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_GD + help + Perl interface to the gd2 graphics library + + https://metacpan.org/release/GD + +comment "perl-gd needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-gd/perl-gd.hash b/buildroot/package/perl-gd/perl-gd.hash new file mode 100644 index 0000000..ad30e0a --- /dev/null +++ b/buildroot/package/perl-gd/perl-gd.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 b9cfc5a677b5e9fa607be1379f789855 GD-2.67.tar.gz +sha256 93a47c2259979cf20c6a39c9e03e0da87a9a855d8b650fb68a08d16a96684246 GD-2.67.tar.gz diff --git a/buildroot/package/perl-gd/perl-gd.mk b/buildroot/package/perl-gd/perl-gd.mk new file mode 100644 index 0000000..81070a9 --- /dev/null +++ b/buildroot/package/perl-gd/perl-gd.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# perl-gd +# +################################################################################ + +PERL_GD_VERSION = 2.67 +PERL_GD_SOURCE = GD-$(PERL_GD_VERSION).tar.gz +PERL_GD_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RU/RURBAN +PERL_GD_DEPENDENCIES = zlib libpng freetype gd +PERL_GD_LICENSE = Artistic or GPL-1.0+ +PERL_GD_LICENSE_FILES = LICENSE + +PERL_GD_CONF_OPTS = \ + -lib_gd_path=$(STAGING_DIR)/usr \ + -lib_ft_path=$(STAGING_DIR)/usr \ + -lib_png_path=$(STAGING_DIR)/usr \ + -lib_zlib_path=$(STAGING_DIR)/usr \ + -gdlib_config_path=$(STAGING_DIR)/usr/bin + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-gdgraph/Config.in b/buildroot/package/perl-gdgraph/Config.in new file mode 100644 index 0000000..10b3cd0 --- /dev/null +++ b/buildroot/package/perl-gdgraph/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PERL_GDGRAPH + bool "perl-gdgraph" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_GD + select BR2_PACKAGE_PERL_GDTEXTUTIL + help + Produces charts with GD + + https://metacpan.org/release/GDGraph + +comment "perl-gdgraph needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-gdgraph/perl-gdgraph.hash b/buildroot/package/perl-gdgraph/perl-gdgraph.hash new file mode 100644 index 0000000..2e85452 --- /dev/null +++ b/buildroot/package/perl-gdgraph/perl-gdgraph.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 38c6a188519e6272e9b2b722b315c3d8 GDGraph-1.54.tar.gz +sha256 b96f5c10b656c17d16ab65a1777c908297b028d3b6815f6d54b2337f006bfa4f GDGraph-1.54.tar.gz diff --git a/buildroot/package/perl-gdgraph/perl-gdgraph.mk b/buildroot/package/perl-gdgraph/perl-gdgraph.mk new file mode 100644 index 0000000..c431707 --- /dev/null +++ b/buildroot/package/perl-gdgraph/perl-gdgraph.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-gdgraph +# +################################################################################ + +PERL_GDGRAPH_VERSION = 1.54 +PERL_GDGRAPH_SOURCE = GDGraph-$(PERL_GDGRAPH_VERSION).tar.gz +PERL_GDGRAPH_SITE = $(BR2_CPAN_MIRROR)/authors/id/R/RU/RUZ +PERL_GDGRAPH_DEPENDENCIES = perl-gd perl-gdtextutil +PERL_GDGRAPH_LICENSE = Artistic or GPL-1.0+ +PERL_GDGRAPH_LICENSE_FILES = Dustismo.LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-gdtextutil/Config.in b/buildroot/package/perl-gdtextutil/Config.in new file mode 100644 index 0000000..9baf0a0 --- /dev/null +++ b/buildroot/package/perl-gdtextutil/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_GDTEXTUTIL + bool "perl-gdtextutil" + help + Text utilities for use with GD + + https://metacpan.org/release/GDTextUtil diff --git a/buildroot/package/perl-gdtextutil/perl-gdtextutil.hash b/buildroot/package/perl-gdtextutil/perl-gdtextutil.hash new file mode 100644 index 0000000..7996ed9 --- /dev/null +++ b/buildroot/package/perl-gdtextutil/perl-gdtextutil.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 941ad06eadc86b47f3a32da405665c41 GDTextUtil-0.86.tar.gz +sha256 886ecbf85cfe94f4135ee5689c4847a9ae783ecb99e6759e12c734f2dd6116bc GDTextUtil-0.86.tar.gz diff --git a/buildroot/package/perl-gdtextutil/perl-gdtextutil.mk b/buildroot/package/perl-gdtextutil/perl-gdtextutil.mk new file mode 100644 index 0000000..087102a --- /dev/null +++ b/buildroot/package/perl-gdtextutil/perl-gdtextutil.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# perl-gdtextutil +# +################################################################################ + +PERL_GDTEXTUTIL_VERSION = 0.86 +PERL_GDTEXTUTIL_SOURCE = GDTextUtil-$(PERL_GDTEXTUTIL_VERSION).tar.gz +PERL_GDTEXTUTIL_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MV/MVERB +PERL_GDTEXTUTIL_LICENSE_FILES = Dustismo.LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-html-parser/Config.in b/buildroot/package/perl-html-parser/Config.in new file mode 100644 index 0000000..22a16d6 --- /dev/null +++ b/buildroot/package/perl-html-parser/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_HTML_PARSER + bool "perl-html-parser" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_HTML_TAGSET + help + HTML parser class + + https://metacpan.org/release/HTML-Parser + +comment "perl-html-parser needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-html-parser/perl-html-parser.hash b/buildroot/package/perl-html-parser/perl-html-parser.hash new file mode 100644 index 0000000..0c0bb1f --- /dev/null +++ b/buildroot/package/perl-html-parser/perl-html-parser.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 eb7505e5f626913350df9dd4a03d54a8 HTML-Parser-3.72.tar.gz +sha256 ec28c7e1d9e67c45eca197077f7cdc41ead1bb4c538c7f02a3296a4bb92f608b HTML-Parser-3.72.tar.gz diff --git a/buildroot/package/perl-html-parser/perl-html-parser.mk b/buildroot/package/perl-html-parser/perl-html-parser.mk new file mode 100644 index 0000000..66016eb --- /dev/null +++ b/buildroot/package/perl-html-parser/perl-html-parser.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-html-parser +# +################################################################################ + +PERL_HTML_PARSER_VERSION = 3.72 +PERL_HTML_PARSER_SOURCE = HTML-Parser-$(PERL_HTML_PARSER_VERSION).tar.gz +PERL_HTML_PARSER_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_HTML_PARSER_DEPENDENCIES = perl-html-tagset +PERL_HTML_PARSER_LICENSE = Artistic or GPL-1.0+ +PERL_HTML_PARSER_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-html-tagset/Config.in b/buildroot/package/perl-html-tagset/Config.in new file mode 100644 index 0000000..a39bc65 --- /dev/null +++ b/buildroot/package/perl-html-tagset/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_HTML_TAGSET + bool "perl-html-tagset" + help + HTML::Tagset - data tables useful in parsing HTML + + http://www.cpan.org/modules/by-authors/id/P/PE/PETDANCE/ diff --git a/buildroot/package/perl-html-tagset/perl-html-tagset.hash b/buildroot/package/perl-html-tagset/perl-html-tagset.hash new file mode 100644 index 0000000..a4cf090 --- /dev/null +++ b/buildroot/package/perl-html-tagset/perl-html-tagset.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 d2bfa18fe1904df7f683e96611e87437 HTML-Tagset-3.20.tar.gz +sha256 adb17dac9e36cd011f5243881c9739417fd102fce760f8de4e9be4c7131108e2 HTML-Tagset-3.20.tar.gz diff --git a/buildroot/package/perl-html-tagset/perl-html-tagset.mk b/buildroot/package/perl-html-tagset/perl-html-tagset.mk new file mode 100644 index 0000000..ff371fa --- /dev/null +++ b/buildroot/package/perl-html-tagset/perl-html-tagset.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-html-tagset +# +################################################################################ + +PERL_HTML_TAGSET_VERSION = 3.20 +PERL_HTML_TAGSET_SOURCE = HTML-Tagset-$(PERL_HTML_TAGSET_VERSION).tar.gz +PERL_HTML_TAGSET_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PE/PETDANCE +PERL_HTML_TAGSET_LICENSE = Artistic or GPL-1.0+ +PERL_HTML_TAGSET_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-http-cookies/Config.in b/buildroot/package/perl-http-cookies/Config.in new file mode 100644 index 0000000..4095fee --- /dev/null +++ b/buildroot/package/perl-http-cookies/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PERL_HTTP_COOKIES + bool "perl-http-cookies" + select BR2_PACKAGE_PERL_HTTP_DATE + select BR2_PACKAGE_PERL_HTTP_MESSAGE + help + HTTP cookie jars + + https://github.com/libwww-perl/http-cookies diff --git a/buildroot/package/perl-http-cookies/perl-http-cookies.hash b/buildroot/package/perl-http-cookies/perl-http-cookies.hash new file mode 100644 index 0000000..361d4db --- /dev/null +++ b/buildroot/package/perl-http-cookies/perl-http-cookies.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 7bf1e277bd5c886bc18d21eb8423b65f HTTP-Cookies-6.04.tar.gz +sha256 0cc7f079079dcad8293fea36875ef58dd1bfd75ce1a6c244cd73ed9523eb13d4 HTTP-Cookies-6.04.tar.gz diff --git a/buildroot/package/perl-http-cookies/perl-http-cookies.mk b/buildroot/package/perl-http-cookies/perl-http-cookies.mk new file mode 100644 index 0000000..0777c08 --- /dev/null +++ b/buildroot/package/perl-http-cookies/perl-http-cookies.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-http-cookies +# +################################################################################ + +PERL_HTTP_COOKIES_VERSION = 6.04 +PERL_HTTP_COOKIES_SOURCE = HTTP-Cookies-$(PERL_HTTP_COOKIES_VERSION).tar.gz +PERL_HTTP_COOKIES_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_HTTP_COOKIES_DEPENDENCIES = perl-http-date perl-http-message +PERL_HTTP_COOKIES_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_COOKIES_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-http-daemon/Config.in b/buildroot/package/perl-http-daemon/Config.in new file mode 100644 index 0000000..7544ece --- /dev/null +++ b/buildroot/package/perl-http-daemon/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_HTTP_DAEMON + bool "perl-http-daemon" + select BR2_PACKAGE_PERL_HTTP_DATE + select BR2_PACKAGE_PERL_HTTP_MESSAGE + select BR2_PACKAGE_PERL_LWP_MEDIATYPES + help + Instances of the `HTTP::Daemon' class are HTTP/1.1 servers + that listen on a socket for incoming requests. + + http://github.com/gisle/http-daemon diff --git a/buildroot/package/perl-http-daemon/perl-http-daemon.hash b/buildroot/package/perl-http-daemon/perl-http-daemon.hash new file mode 100644 index 0000000..f4f6023 --- /dev/null +++ b/buildroot/package/perl-http-daemon/perl-http-daemon.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 ed0ae02d25d7f1e89456d4d69732adc2 HTTP-Daemon-6.01.tar.gz +sha256 43fd867742701a3f9fcc7bd59838ab72c6490c0ebaf66901068ec6997514adc2 HTTP-Daemon-6.01.tar.gz diff --git a/buildroot/package/perl-http-daemon/perl-http-daemon.mk b/buildroot/package/perl-http-daemon/perl-http-daemon.mk new file mode 100644 index 0000000..65cdaf8 --- /dev/null +++ b/buildroot/package/perl-http-daemon/perl-http-daemon.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-http-daemon +# +################################################################################ + +PERL_HTTP_DAEMON_VERSION = 6.01 +PERL_HTTP_DAEMON_SOURCE = HTTP-Daemon-$(PERL_HTTP_DAEMON_VERSION).tar.gz +PERL_HTTP_DAEMON_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_HTTP_DAEMON_DEPENDENCIES = perl-http-date perl-http-message perl-lwp-mediatypes +PERL_HTTP_DAEMON_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_DAEMON_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-http-date/Config.in b/buildroot/package/perl-http-date/Config.in new file mode 100644 index 0000000..5ce4781 --- /dev/null +++ b/buildroot/package/perl-http-date/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_HTTP_DATE + bool "perl-http-date" + help + This module provides functions that deal the date formats + used by the HTTP protocol (and then some more) + + https://github.com/gisle/http-date diff --git a/buildroot/package/perl-http-date/perl-http-date.hash b/buildroot/package/perl-http-date/perl-http-date.hash new file mode 100644 index 0000000..db85cd0 --- /dev/null +++ b/buildroot/package/perl-http-date/perl-http-date.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 52b7a0d5982d61be1edb217751d7daba HTTP-Date-6.02.tar.gz +sha256 e8b9941da0f9f0c9c01068401a5e81341f0e3707d1c754f8e11f42a7e629e333 HTTP-Date-6.02.tar.gz diff --git a/buildroot/package/perl-http-date/perl-http-date.mk b/buildroot/package/perl-http-date/perl-http-date.mk new file mode 100644 index 0000000..feccf25 --- /dev/null +++ b/buildroot/package/perl-http-date/perl-http-date.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-http-date +# +################################################################################ + +PERL_HTTP_DATE_VERSION = 6.02 +PERL_HTTP_DATE_SOURCE = HTTP-Date-$(PERL_HTTP_DATE_VERSION).tar.gz +PERL_HTTP_DATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_HTTP_DATE_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_DATE_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-http-message/Config.in b/buildroot/package/perl-http-message/Config.in new file mode 100644 index 0000000..682a4b0 --- /dev/null +++ b/buildroot/package/perl-http-message/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_HTTP_MESSAGE + bool "perl-http-message" + select BR2_PACKAGE_PERL_ENCODE_LOCALE + select BR2_PACKAGE_PERL_HTTP_DATE + select BR2_PACKAGE_PERL_IO_HTML + select BR2_PACKAGE_PERL_LWP_MEDIATYPES + select BR2_PACKAGE_PERL_URI + help + HTTP style message (base class) + + https://github.com/libwww-perl/HTTP-Message diff --git a/buildroot/package/perl-http-message/perl-http-message.hash b/buildroot/package/perl-http-message/perl-http-message.hash new file mode 100644 index 0000000..a34d045 --- /dev/null +++ b/buildroot/package/perl-http-message/perl-http-message.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 e4c6e183860c42cbdff65dcd76c333b0 HTTP-Message-6.14.tar.gz +sha256 71aab9f10eb4b8ec6e8e3a85fc5acb46ba04db1c93eb99613b184078c5cf2ac9 HTTP-Message-6.14.tar.gz diff --git a/buildroot/package/perl-http-message/perl-http-message.mk b/buildroot/package/perl-http-message/perl-http-message.mk new file mode 100644 index 0000000..722d6be --- /dev/null +++ b/buildroot/package/perl-http-message/perl-http-message.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-http-message +# +################################################################################ + +PERL_HTTP_MESSAGE_VERSION = 6.14 +PERL_HTTP_MESSAGE_SOURCE = HTTP-Message-$(PERL_HTTP_MESSAGE_VERSION).tar.gz +PERL_HTTP_MESSAGE_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_HTTP_MESSAGE_DEPENDENCIES = perl-encode-locale perl-http-date perl-io-html perl-lwp-mediatypes perl-uri +PERL_HTTP_MESSAGE_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_MESSAGE_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-http-negotiate/Config.in b/buildroot/package/perl-http-negotiate/Config.in new file mode 100644 index 0000000..dcb1bbb --- /dev/null +++ b/buildroot/package/perl-http-negotiate/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PERL_HTTP_NEGOTIATE + bool "perl-http-negotiate" + select BR2_PACKAGE_PERL_HTTP_MESSAGE + help + This module provides a complete implementation of the HTTP + content negotiation algorithm specified in + draft-ietf-http-v11-spec-00.ps chapter 12. + + http://github.com/gisle/http-negotiate diff --git a/buildroot/package/perl-http-negotiate/perl-http-negotiate.hash b/buildroot/package/perl-http-negotiate/perl-http-negotiate.hash new file mode 100644 index 0000000..f1db2ff --- /dev/null +++ b/buildroot/package/perl-http-negotiate/perl-http-negotiate.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 1236195250e264d7436e7bb02031671b HTTP-Negotiate-6.01.tar.gz +sha256 1c729c1ea63100e878405cda7d66f9adfd3ed4f1d6cacaca0ee9152df728e016 HTTP-Negotiate-6.01.tar.gz diff --git a/buildroot/package/perl-http-negotiate/perl-http-negotiate.mk b/buildroot/package/perl-http-negotiate/perl-http-negotiate.mk new file mode 100644 index 0000000..86ca554 --- /dev/null +++ b/buildroot/package/perl-http-negotiate/perl-http-negotiate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-http-negotiate +# +################################################################################ + +PERL_HTTP_NEGOTIATE_VERSION = 6.01 +PERL_HTTP_NEGOTIATE_SOURCE = HTTP-Negotiate-$(PERL_HTTP_NEGOTIATE_VERSION).tar.gz +PERL_HTTP_NEGOTIATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_HTTP_NEGOTIATE_DEPENDENCIES = perl-http-message +PERL_HTTP_NEGOTIATE_LICENSE = Artistic or GPL-1.0+ +PERL_HTTP_NEGOTIATE_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-io-html/Config.in b/buildroot/package/perl-io-html/Config.in new file mode 100644 index 0000000..86038af --- /dev/null +++ b/buildroot/package/perl-io-html/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_IO_HTML + bool "perl-io-html" + help + Perl module that opens a file and performs automatic charset + detection + + https://github.com/madsen/io-html diff --git a/buildroot/package/perl-io-html/perl-io-html.hash b/buildroot/package/perl-io-html/perl-io-html.hash new file mode 100644 index 0000000..8d8c48d --- /dev/null +++ b/buildroot/package/perl-io-html/perl-io-html.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 3f8958718844dc96b9f6946f21d70d22 IO-HTML-1.001.tar.gz +sha256 ea78d2d743794adc028bc9589538eb867174b4e165d7d8b5f63486e6b828e7e0 IO-HTML-1.001.tar.gz diff --git a/buildroot/package/perl-io-html/perl-io-html.mk b/buildroot/package/perl-io-html/perl-io-html.mk new file mode 100644 index 0000000..bb79f45 --- /dev/null +++ b/buildroot/package/perl-io-html/perl-io-html.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-io-html +# +################################################################################ + +PERL_IO_HTML_VERSION = 1.001 +PERL_IO_HTML_SOURCE = IO-HTML-$(PERL_IO_HTML_VERSION).tar.gz +PERL_IO_HTML_SITE = $(BR2_CPAN_MIRROR)/authors/id/C/CJ/CJM +PERL_IO_HTML_LICENSE = Artistic or GPL-1.0+ +PERL_IO_HTML_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-io-socket-ssl/Config.in b/buildroot/package/perl-io-socket-ssl/Config.in new file mode 100644 index 0000000..d24e568 --- /dev/null +++ b/buildroot/package/perl-io-socket-ssl/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_IO_SOCKET_SSL + bool "perl-io-socket-ssl" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_NET_SSLEAY + help + Nearly transparent SSL encapsulation for IO::Socket::INET. + + https://github.com/noxxi/p5-io-socket-ssl + +comment "perl-io-socket-ssl needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-io-socket-ssl/perl-io-socket-ssl.hash b/buildroot/package/perl-io-socket-ssl/perl-io-socket-ssl.hash new file mode 100644 index 0000000..3bf0421 --- /dev/null +++ b/buildroot/package/perl-io-socket-ssl/perl-io-socket-ssl.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 26c9bcdfb4ba8763ef89264f21326a48 IO-Socket-SSL-2.052.tar.gz +sha256 e4897a9b17cb18a3c44aa683980d52cef534cdfcb8063d6877c879bfa2f26673 IO-Socket-SSL-2.052.tar.gz diff --git a/buildroot/package/perl-io-socket-ssl/perl-io-socket-ssl.mk b/buildroot/package/perl-io-socket-ssl/perl-io-socket-ssl.mk new file mode 100644 index 0000000..62fc229 --- /dev/null +++ b/buildroot/package/perl-io-socket-ssl/perl-io-socket-ssl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-io-socket-ssl +# +################################################################################ + +PERL_IO_SOCKET_SSL_VERSION = 2.052 +PERL_IO_SOCKET_SSL_SOURCE = IO-Socket-SSL-$(PERL_IO_SOCKET_SSL_VERSION).tar.gz +PERL_IO_SOCKET_SSL_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SU/SULLR +PERL_IO_SOCKET_SSL_DEPENDENCIES = perl-net-ssleay +PERL_IO_SOCKET_SSL_LICENSE = Artistic or GPL-1.0+ +PERL_IO_SOCKET_SSL_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-json-tiny/Config.in b/buildroot/package/perl-json-tiny/Config.in new file mode 100644 index 0000000..ce943ca --- /dev/null +++ b/buildroot/package/perl-json-tiny/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_JSON_TINY + bool "perl-json-tiny" + help + Minimalistic JSON. No dependencies. + + https://metacpan.org/release/JSON-Tiny diff --git a/buildroot/package/perl-json-tiny/perl-json-tiny.hash b/buildroot/package/perl-json-tiny/perl-json-tiny.hash new file mode 100644 index 0000000..86478da --- /dev/null +++ b/buildroot/package/perl-json-tiny/perl-json-tiny.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 aa006882222e17a94295b3a655aab91b JSON-Tiny-0.58.tar.gz +sha256 ad42e9137f5148df7fdb22aa52186b306032977bcd70d49f44a288070e4f0f23 JSON-Tiny-0.58.tar.gz diff --git a/buildroot/package/perl-json-tiny/perl-json-tiny.mk b/buildroot/package/perl-json-tiny/perl-json-tiny.mk new file mode 100644 index 0000000..6b45613 --- /dev/null +++ b/buildroot/package/perl-json-tiny/perl-json-tiny.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-json-tiny +# +################################################################################ + +PERL_JSON_TINY_VERSION = 0.58 +PERL_JSON_TINY_SOURCE = JSON-Tiny-$(PERL_JSON_TINY_VERSION).tar.gz +PERL_JSON_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DAVIDO +PERL_JSON_TINY_LICENSE = Artistic-2.0 +PERL_JSON_TINY_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-libwww-perl/Config.in b/buildroot/package/perl-libwww-perl/Config.in new file mode 100644 index 0000000..09fc005 --- /dev/null +++ b/buildroot/package/perl-libwww-perl/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_PERL_LIBWWW_PERL + bool "perl-libwww-perl" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_ENCODE_LOCALE + select BR2_PACKAGE_PERL_FILE_LISTING + select BR2_PACKAGE_PERL_HTML_PARSER + select BR2_PACKAGE_PERL_HTTP_COOKIES + select BR2_PACKAGE_PERL_HTTP_DAEMON + select BR2_PACKAGE_PERL_HTTP_DATE + select BR2_PACKAGE_PERL_HTTP_MESSAGE + select BR2_PACKAGE_PERL_HTTP_NEGOTIATE + select BR2_PACKAGE_PERL_LWP_MEDIATYPES + select BR2_PACKAGE_PERL_NET_HTTP + select BR2_PACKAGE_PERL_TRY_TINY + select BR2_PACKAGE_PERL_URI + select BR2_PACKAGE_PERL_WWW_ROBOTRULES + help + The World-Wide Web library for Perl + + https://github.com/libwww-perl/libwww-perl + +comment "perl-libwww-perl needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-libwww-perl/perl-libwww-perl.hash b/buildroot/package/perl-libwww-perl/perl-libwww-perl.hash new file mode 100644 index 0000000..7ce0853 --- /dev/null +++ b/buildroot/package/perl-libwww-perl/perl-libwww-perl.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 688284bc6282562948c6916f9e8563b0 libwww-perl-6.31.tar.gz +sha256 525d5386d39d1c1d7da8a0e9dd0cbab95cba2a4bfcfd9b83b257f49be4eecae3 libwww-perl-6.31.tar.gz diff --git a/buildroot/package/perl-libwww-perl/perl-libwww-perl.mk b/buildroot/package/perl-libwww-perl/perl-libwww-perl.mk new file mode 100644 index 0000000..cdff6b4 --- /dev/null +++ b/buildroot/package/perl-libwww-perl/perl-libwww-perl.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# perl-libwww-perl +# +################################################################################ + +PERL_LIBWWW_PERL_VERSION = 6.31 +PERL_LIBWWW_PERL_SOURCE = libwww-perl-$(PERL_LIBWWW_PERL_VERSION).tar.gz +PERL_LIBWWW_PERL_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER +PERL_LIBWWW_PERL_DEPENDENCIES = \ + perl-encode-locale \ + perl-file-listing \ + perl-html-parser \ + perl-http-cookies \ + perl-http-daemon \ + perl-http-date \ + perl-http-message \ + perl-http-negotiate \ + perl-lwp-mediatypes \ + perl-net-http \ + perl-try-tiny \ + perl-uri \ + perl-www-robotrules +PERL_LIBWWW_PERL_LICENSE = Artistic or GPL-1.0+ +PERL_LIBWWW_PERL_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-lwp-mediatypes/Config.in b/buildroot/package/perl-lwp-mediatypes/Config.in new file mode 100644 index 0000000..ae2056a --- /dev/null +++ b/buildroot/package/perl-lwp-mediatypes/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_LWP_MEDIATYPES + bool "perl-lwp-mediatypes" + help + This module provides functions for handling media (also + known as MIME) types and encodings. + + https://github.com/gisle/lwp-mediatypes diff --git a/buildroot/package/perl-lwp-mediatypes/perl-lwp-mediatypes.hash b/buildroot/package/perl-lwp-mediatypes/perl-lwp-mediatypes.hash new file mode 100644 index 0000000..0f6fee9 --- /dev/null +++ b/buildroot/package/perl-lwp-mediatypes/perl-lwp-mediatypes.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 8c5f25fb64b974d22aff424476ba13c9 LWP-MediaTypes-6.02.tar.gz +sha256 18790b0cc5f0a51468495c3847b16738f785a2d460403595001e0b932e5db676 LWP-MediaTypes-6.02.tar.gz diff --git a/buildroot/package/perl-lwp-mediatypes/perl-lwp-mediatypes.mk b/buildroot/package/perl-lwp-mediatypes/perl-lwp-mediatypes.mk new file mode 100644 index 0000000..bcf4e5f --- /dev/null +++ b/buildroot/package/perl-lwp-mediatypes/perl-lwp-mediatypes.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-lwp-mediatypes +# +################################################################################ + +PERL_LWP_MEDIATYPES_VERSION = 6.02 +PERL_LWP_MEDIATYPES_SOURCE = LWP-MediaTypes-$(PERL_LWP_MEDIATYPES_VERSION).tar.gz +PERL_LWP_MEDIATYPES_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_LWP_MEDIATYPES_LICENSE = Artistic or GPL-1.0+ +PERL_LWP_MEDIATYPES_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-mail-dkim/Config.in b/buildroot/package/perl-mail-dkim/Config.in new file mode 100644 index 0000000..3db54f3 --- /dev/null +++ b/buildroot/package/perl-mail-dkim/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PERL_MAIL_DKIM + bool "perl-mail-dkim" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PERL_CRYPT_OPENSSL_RSA + select BR2_PACKAGE_PERL_MAILTOOLS + select BR2_PACKAGE_PERL_NET_DNS + help + Signs/verifies Internet mail with DKIM/DomainKey signatures + + https://metacpan.org/release/Mail-DKIM + +comment "perl-mail-dkim needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-mail-dkim/perl-mail-dkim.hash b/buildroot/package/perl-mail-dkim/perl-mail-dkim.hash new file mode 100644 index 0000000..c40e66e --- /dev/null +++ b/buildroot/package/perl-mail-dkim/perl-mail-dkim.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 60ebe54760f6633f07b25228272b9473 Mail-DKIM-0.42.tar.gz +sha256 f4e3a6344517aeee9a7516c0f58197f41dce81461f74ce9ba8401a143aa2577c Mail-DKIM-0.42.tar.gz diff --git a/buildroot/package/perl-mail-dkim/perl-mail-dkim.mk b/buildroot/package/perl-mail-dkim/perl-mail-dkim.mk new file mode 100644 index 0000000..e088ecf --- /dev/null +++ b/buildroot/package/perl-mail-dkim/perl-mail-dkim.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# perl-mail-dkim +# +################################################################################ + +PERL_MAIL_DKIM_VERSION = 0.42 +PERL_MAIL_DKIM_SOURCE = Mail-DKIM-$(PERL_MAIL_DKIM_VERSION).tar.gz +PERL_MAIL_DKIM_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MB/MBRADSHAW +PERL_MAIL_DKIM_DEPENDENCIES = perl-crypt-openssl-rsa perl-mailtools perl-net-dns + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-mailtools/Config.in b/buildroot/package/perl-mailtools/Config.in new file mode 100644 index 0000000..2123c61 --- /dev/null +++ b/buildroot/package/perl-mailtools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_MAILTOOLS + bool "perl-mailtools" + select BR2_PACKAGE_PERL_TIMEDATE + help + Various ancient e-mail related modules + + https://metacpan.org/release/MailTools diff --git a/buildroot/package/perl-mailtools/perl-mailtools.hash b/buildroot/package/perl-mailtools/perl-mailtools.hash new file mode 100644 index 0000000..cb33453 --- /dev/null +++ b/buildroot/package/perl-mailtools/perl-mailtools.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 a00b9d3c3dec64bd15de8c50f1b73d05 MailTools-2.19.tar.gz +sha256 c17ed702efea8eab56fe92961c07cd4980cee26ca6f13aff2688dc8af69c5e1a MailTools-2.19.tar.gz diff --git a/buildroot/package/perl-mailtools/perl-mailtools.mk b/buildroot/package/perl-mailtools/perl-mailtools.mk new file mode 100644 index 0000000..75079f9 --- /dev/null +++ b/buildroot/package/perl-mailtools/perl-mailtools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-mailtools +# +################################################################################ + +PERL_MAILTOOLS_VERSION = 2.19 +PERL_MAILTOOLS_SOURCE = MailTools-$(PERL_MAILTOOLS_VERSION).tar.gz +PERL_MAILTOOLS_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MA/MARKOV +PERL_MAILTOOLS_DEPENDENCIES = perl-timedate +PERL_MAILTOOLS_LICENSE = Artistic or GPL-1.0+ +PERL_MAILTOOLS_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-mime-base64/Config.in b/buildroot/package/perl-mime-base64/Config.in new file mode 100644 index 0000000..7022598 --- /dev/null +++ b/buildroot/package/perl-mime-base64/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_MIME_BASE64 + bool "perl-mime-base64" + depends on !BR2_STATIC_LIBS + help + This package contains a base64 encoder/decoder and a + quoted-printable encoder/decoder. + + http://github.com/gisle/mime-base64 + +comment "perl-mime-base64 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-mime-base64/perl-mime-base64.hash b/buildroot/package/perl-mime-base64/perl-mime-base64.hash new file mode 100644 index 0000000..0cfe598 --- /dev/null +++ b/buildroot/package/perl-mime-base64/perl-mime-base64.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 ef958dc2bf96be5f759391c6ac1debd4 MIME-Base64-3.15.tar.gz +sha256 7f863566a6a9cb93eda93beadb77d9aa04b9304d769cea3bb921b9a91b3a1eb9 MIME-Base64-3.15.tar.gz diff --git a/buildroot/package/perl-mime-base64/perl-mime-base64.mk b/buildroot/package/perl-mime-base64/perl-mime-base64.mk new file mode 100644 index 0000000..e7febe1 --- /dev/null +++ b/buildroot/package/perl-mime-base64/perl-mime-base64.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-mime-base64 +# +################################################################################ + +PERL_MIME_BASE64_VERSION = 3.15 +PERL_MIME_BASE64_SOURCE = MIME-Base64-$(PERL_MIME_BASE64_VERSION).tar.gz +PERL_MIME_BASE64_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_MIME_BASE64_LICENSE = Artistic or GPL-1.0+ +PERL_MIME_BASE64_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-module-build/perl-module-build.hash b/buildroot/package/perl-module-build/perl-module-build.hash new file mode 100644 index 0000000..17e8b4e --- /dev/null +++ b/buildroot/package/perl-module-build/perl-module-build.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 b74c2f6e84b60aad3a3defd30b6f0f4d Module-Build-0.4224.tar.gz +sha256 a6ca15d78244a7b50fdbf27f85c85f4035aa799ce7dd018a0d98b358ef7bc782 Module-Build-0.4224.tar.gz diff --git a/buildroot/package/perl-module-build/perl-module-build.mk b/buildroot/package/perl-module-build/perl-module-build.mk new file mode 100644 index 0000000..42c9c11 --- /dev/null +++ b/buildroot/package/perl-module-build/perl-module-build.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-module-build +# +################################################################################ + +PERL_MODULE_BUILD_VERSION = 0.4224 +PERL_MODULE_BUILD_SOURCE = Module-Build-$(PERL_MODULE_BUILD_VERSION).tar.gz +PERL_MODULE_BUILD_SITE = $(BR2_CPAN_MIRROR)/authors/id/L/LE/LEONT +PERL_MODULE_BUILD_LICENSE = Artistic or GPL-1.0+ +PERL_MODULE_BUILD_LICENSE_FILES = LICENSE + +$(eval $(host-perl-package)) diff --git a/buildroot/package/perl-mojolicious/Config.in b/buildroot/package/perl-mojolicious/Config.in new file mode 100644 index 0000000..ebf0932 --- /dev/null +++ b/buildroot/package/perl-mojolicious/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_MOJOLICIOUS + bool "perl-mojolicious" + help + Real-time web framework + + http://mojolicious.org diff --git a/buildroot/package/perl-mojolicious/perl-mojolicious.hash b/buildroot/package/perl-mojolicious/perl-mojolicious.hash new file mode 100644 index 0000000..0593a3c --- /dev/null +++ b/buildroot/package/perl-mojolicious/perl-mojolicious.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 47d198ea987b4913818c24107cd9673d Mojolicious-7.61.tar.gz +sha256 386ade41021bf0470879a0abceeccc305f773b41b76245cc3cdce92d7dc8897d Mojolicious-7.61.tar.gz diff --git a/buildroot/package/perl-mojolicious/perl-mojolicious.mk b/buildroot/package/perl-mojolicious/perl-mojolicious.mk new file mode 100644 index 0000000..4e94c47 --- /dev/null +++ b/buildroot/package/perl-mojolicious/perl-mojolicious.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-mojolicious +# +################################################################################ + +PERL_MOJOLICIOUS_VERSION = 7.61 +PERL_MOJOLICIOUS_SOURCE = Mojolicious-$(PERL_MOJOLICIOUS_VERSION).tar.gz +PERL_MOJOLICIOUS_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SR/SRI +PERL_MOJOLICIOUS_LICENSE = Artistic-2.0 +PERL_MOJOLICIOUS_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-net-dns/Config.in b/buildroot/package/perl-net-dns/Config.in new file mode 100644 index 0000000..c156505 --- /dev/null +++ b/buildroot/package/perl-net-dns/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_NET_DNS + bool "perl-net-dns" + select BR2_PACKAGE_PERL_DIGEST_HMAC + help + Perl Interface to the Domain Name System + + https://metacpan.org/release/Net-DNS diff --git a/buildroot/package/perl-net-dns/perl-net-dns.hash b/buildroot/package/perl-net-dns/perl-net-dns.hash new file mode 100644 index 0000000..1572a9f --- /dev/null +++ b/buildroot/package/perl-net-dns/perl-net-dns.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 0da1099c0a3548d36ea9e31d5bb9e122 Net-DNS-1.14.tar.gz +sha256 83c38a594eeb2c85d66e60047a0f5b403f34bd92a5d13606f02e828d450299fc Net-DNS-1.14.tar.gz diff --git a/buildroot/package/perl-net-dns/perl-net-dns.mk b/buildroot/package/perl-net-dns/perl-net-dns.mk new file mode 100644 index 0000000..0066a31 --- /dev/null +++ b/buildroot/package/perl-net-dns/perl-net-dns.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-net-dns +# +################################################################################ + +PERL_NET_DNS_VERSION = 1.14 +PERL_NET_DNS_SOURCE = Net-DNS-$(PERL_NET_DNS_VERSION).tar.gz +PERL_NET_DNS_SITE = $(BR2_CPAN_MIRROR)/authors/id/N/NL/NLNETLABS +PERL_NET_DNS_DEPENDENCIES = perl-digest-hmac +PERL_NET_DNS_LICENSE = MIT +PERL_NET_DNS_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-net-http/Config.in b/buildroot/package/perl-net-http/Config.in new file mode 100644 index 0000000..6321577 --- /dev/null +++ b/buildroot/package/perl-net-http/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PERL_NET_HTTP + bool "perl-net-http" + select BR2_PACKAGE_PERL_URI + help + Low-level HTTP connection (client) + + https://github.com/libwww-perl/Net-HTTP diff --git a/buildroot/package/perl-net-http/perl-net-http.hash b/buildroot/package/perl-net-http/perl-net-http.hash new file mode 100644 index 0000000..ff59a0d --- /dev/null +++ b/buildroot/package/perl-net-http/perl-net-http.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 068fa02fd3c8a5b63316025b5a24844c Net-HTTP-6.17.tar.gz +sha256 1e8624b1618dc6f7f605f5545643ebb9b833930f4d7485d4124aa2f2f26d1611 Net-HTTP-6.17.tar.gz diff --git a/buildroot/package/perl-net-http/perl-net-http.mk b/buildroot/package/perl-net-http/perl-net-http.mk new file mode 100644 index 0000000..f13614e --- /dev/null +++ b/buildroot/package/perl-net-http/perl-net-http.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-net-http +# +################################################################################ + +PERL_NET_HTTP_VERSION = 6.17 +PERL_NET_HTTP_SOURCE = Net-HTTP-$(PERL_NET_HTTP_VERSION).tar.gz +PERL_NET_HTTP_SITE = $(BR2_CPAN_MIRROR)/authors/id/O/OA/OALDERS +PERL_NET_HTTP_DEPENDENCIES = perl-uri +PERL_NET_HTTP_LICENSE = Artistic or GPL-1.0+ +PERL_NET_HTTP_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-net-ssleay/0001-fix-build-system.patch b/buildroot/package/perl-net-ssleay/0001-fix-build-system.patch new file mode 100644 index 0000000..a6cd0f9 --- /dev/null +++ b/buildroot/package/perl-net-ssleay/0001-fix-build-system.patch @@ -0,0 +1,36 @@ +buildsystem: fix for cross-compilation + +Avoid running the openssl binary, since it would break for +cross-compilation. Buildroot has a supported version, anyway. + +Also, avoid adding hard-coded includes and libraries search +paths, since they are missing the destdir; Buildroot compilers +and linkers already know where to search, anyway. + +Signed-off-by: "Yann E. MORIN" + +diff -durN perl-net-ssleay-1.64.orig/inc/Module/Install/PRIVATE/Net/SSLeay.pm perl-net-ssleay-1.64/inc/Module/Install/PRIVATE/Net/SSLeay.pm +--- perl-net-ssleay-1.64.orig/inc/Module/Install/PRIVATE/Net/SSLeay.pm 2014-04-01 08:08:37.000000000 +0200 ++++ perl-net-ssleay-1.64/inc/Module/Install/PRIVATE/Net/SSLeay.pm 2014-07-13 00:38:46.281380282 +0200 +@@ -37,14 +37,18 @@ + exit 0; # according http://wiki.cpantesters.org/wiki/CPANAuthorNotes this is best-practice when "missing library" + } + +- $self->check_openssl_version($prefix, $exec); ++# Does not work for cross-compilation. ++# In Buildroot, we do have a supported version. ++# $self->check_openssl_version($prefix, $exec); + my $opts = $self->ssleay_get_build_opts($prefix, $exec); + + $self->makemaker_args( + CCCDLFLAGS => $opts->{cccdlflags}, + OPTIMIZE => $opts->{optimize}, +- INC => join(' ', map {"-I$_"} @{$opts->{inc_paths}}), +- LIBS => join(' ', (map {"-L$_"} @{$opts->{lib_paths}}), (map {"-l$_"} @{$opts->{lib_links}})), ++# Buildroot already has the correct include and library search paths. ++# INC => join(' ', map {"-I$_"} @{$opts->{inc_paths}}), ++# LIBS => join(' ', (map {"-L$_"} @{$opts->{lib_paths}}), (map {"-l$_"} @{$opts->{lib_links}})), ++ LIBS => join(' ', (map {"-l$_"} @{$opts->{lib_links}})), + ); + + if ( $self->prompt( diff --git a/buildroot/package/perl-net-ssleay/Config.in b/buildroot/package/perl-net-ssleay/Config.in new file mode 100644 index 0000000..80178e0 --- /dev/null +++ b/buildroot/package/perl-net-ssleay/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PERL_NET_SSLEAY + bool "perl-net-ssleay" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_OPENSSL + help + Perl extension for using OpenSSL + + https://metacpan.org/release/Net-SSLeay + +comment "perl-net-ssleay needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-net-ssleay/perl-net-ssleay.hash b/buildroot/package/perl-net-ssleay/perl-net-ssleay.hash new file mode 100644 index 0000000..daa2c18 --- /dev/null +++ b/buildroot/package/perl-net-ssleay/perl-net-ssleay.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 cfbe968487149626978f427cc9fb8c77 Net-SSLeay-1.84.tar.gz +sha256 823ec3cbb428309d6a9e56f362a9300693ce3215b7fede109adb7be361fff177 Net-SSLeay-1.84.tar.gz diff --git a/buildroot/package/perl-net-ssleay/perl-net-ssleay.mk b/buildroot/package/perl-net-ssleay/perl-net-ssleay.mk new file mode 100644 index 0000000..3814038 --- /dev/null +++ b/buildroot/package/perl-net-ssleay/perl-net-ssleay.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# perl-net-ssleay +# +################################################################################ + +PERL_NET_SSLEAY_VERSION = 1.84 +PERL_NET_SSLEAY_SOURCE = Net-SSLeay-$(PERL_NET_SSLEAY_VERSION).tar.gz +PERL_NET_SSLEAY_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIKEM +PERL_NET_SSLEAY_DEPENDENCIES = openssl +PERL_NET_SSLEAY_LICENSE = OpenSSL +PERL_NET_SSLEAY_LICENSE_FILES = LICENSE + +# Try as hard as possible to remedy to the brain-damage their build-system +# suffers from: don't search for openssl, they pick the host-system one. +PERL_NET_SSLEAY_CONF_ENV = OPENSSL_PREFIX=$(STAGING_DIR)/usr + +# Remove problematic single quotes in LDDLFLAGS, CCFLAGS & OPTIMIZE definition +define PERL_NET_SSLEAY_FIX_MAKEFILE + $(SED) "s/^LDDLFLAGS = '\(.*\)'/LDDLFLAGS = \1/" $(@D)/Makefile + $(SED) "s/^CCFLAGS = '\(.*\)'/CCFLAGS = \1/" $(@D)/Makefile + $(SED) "s/^OPTIMIZE = '\(.*\)'/OPTIMIZE = \1/" $(@D)/Makefile +endef +PERL_NET_SSLEAY_POST_CONFIGURE_HOOKS += PERL_NET_SSLEAY_FIX_MAKEFILE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-netaddr-ip/Config.in b/buildroot/package/perl-netaddr-ip/Config.in new file mode 100644 index 0000000..d4061e1 --- /dev/null +++ b/buildroot/package/perl-netaddr-ip/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_NETADDR_IP + bool "perl-netaddr-ip" + help + Manages IPv4 and IPv6 addresses and subnets + + https://metacpan.org/release/NetAddr-IP diff --git a/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.hash b/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.hash new file mode 100644 index 0000000..fde62b1 --- /dev/null +++ b/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 990dfcbffae356835c536e8ab56a2880 NetAddr-IP-4.079.tar.gz +sha256 ec5a82dfb7028bcd28bb3d569f95d87dd4166cc19867f2184ed3a59f6d6ca0e7 NetAddr-IP-4.079.tar.gz diff --git a/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.mk b/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.mk new file mode 100644 index 0000000..a1f02c6 --- /dev/null +++ b/buildroot/package/perl-netaddr-ip/perl-netaddr-ip.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# perl-netaddr-ip +# +################################################################################ + +PERL_NETADDR_IP_VERSION = 4.079 +PERL_NETADDR_IP_SOURCE = NetAddr-IP-$(PERL_NETADDR_IP_VERSION).tar.gz +PERL_NETADDR_IP_SITE = $(BR2_CPAN_MIRROR)/authors/id/M/MI/MIKER +PERL_NETADDR_IP_LICENSE = Artistic or GPL-1.0+ +PERL_NETADDR_IP_LICENSE_FILES = Artistic Copying + +# we always build the Pure Perl version. +# the build of the native part of NetAddr::IP::Util is buggy. +PERL_NETADDR_IP_CONF_OPTS = -noxs + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-path-tiny/Config.in b/buildroot/package/perl-path-tiny/Config.in new file mode 100644 index 0000000..f85e792 --- /dev/null +++ b/buildroot/package/perl-path-tiny/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_PATH_TINY + bool "perl-path-tiny" + help + File path utility + + https://github.com/dagolden/Path-Tiny diff --git a/buildroot/package/perl-path-tiny/perl-path-tiny.hash b/buildroot/package/perl-path-tiny/perl-path-tiny.hash new file mode 100644 index 0000000..49b6661 --- /dev/null +++ b/buildroot/package/perl-path-tiny/perl-path-tiny.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 17354181d9794df01be555b25114dd24 Path-Tiny-0.104.tar.gz +sha256 c69f1dcfeb4aa004086deb9bc14c7d79f45798b947f1efbd634a3442e267aaef Path-Tiny-0.104.tar.gz diff --git a/buildroot/package/perl-path-tiny/perl-path-tiny.mk b/buildroot/package/perl-path-tiny/perl-path-tiny.mk new file mode 100644 index 0000000..53e787d --- /dev/null +++ b/buildroot/package/perl-path-tiny/perl-path-tiny.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-path-tiny +# +################################################################################ + +PERL_PATH_TINY_VERSION = 0.104 +PERL_PATH_TINY_SOURCE = Path-Tiny-$(PERL_PATH_TINY_VERSION).tar.gz +PERL_PATH_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/D/DA/DAGOLDEN +PERL_PATH_TINY_LICENSE = Apache-2.0 +PERL_PATH_TINY_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-time-hires/Config.in b/buildroot/package/perl-time-hires/Config.in new file mode 100644 index 0000000..fe933a4 --- /dev/null +++ b/buildroot/package/perl-time-hires/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PERL_TIME_HIRES + bool "perl-time-hires" + depends on !BR2_STATIC_LIBS + help + High resolution alarm, sleep, gettimeofday, interval timers + + https://metacpan.org/release/Time-HiRes + +comment "perl-time-hires needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-time-hires/perl-time-hires.hash b/buildroot/package/perl-time-hires/perl-time-hires.hash new file mode 100644 index 0000000..f3ab700 --- /dev/null +++ b/buildroot/package/perl-time-hires/perl-time-hires.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 b98099e0cb7702210606776e9746e103 Time-HiRes-1.9753.tar.gz +sha256 0fbfd5f99cdd26011d5c0bc3a8e369dacc4a9e1d1658f4663ac6018f2cec4915 Time-HiRes-1.9753.tar.gz diff --git a/buildroot/package/perl-time-hires/perl-time-hires.mk b/buildroot/package/perl-time-hires/perl-time-hires.mk new file mode 100644 index 0000000..c8dde49 --- /dev/null +++ b/buildroot/package/perl-time-hires/perl-time-hires.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-time-hires +# +################################################################################ + +PERL_TIME_HIRES_VERSION = 1.9753 +PERL_TIME_HIRES_SOURCE = Time-HiRes-$(PERL_TIME_HIRES_VERSION).tar.gz +PERL_TIME_HIRES_SITE = $(BR2_CPAN_MIRROR)/authors/id/J/JH/JHI +PERL_TIME_HIRES_LICENSE = Artistic or GPL-1.0+ +PERL_TIME_HIRES_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-timedate/Config.in b/buildroot/package/perl-timedate/Config.in new file mode 100644 index 0000000..7ce9de1 --- /dev/null +++ b/buildroot/package/perl-timedate/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_TIMEDATE + bool "perl-timedate" + help + Date formating subroutines + + https://metacpan.org/release/TimeDate diff --git a/buildroot/package/perl-timedate/perl-timedate.hash b/buildroot/package/perl-timedate/perl-timedate.hash new file mode 100644 index 0000000..28a9f07 --- /dev/null +++ b/buildroot/package/perl-timedate/perl-timedate.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 b1d91153ac971347aee84292ed886c1c TimeDate-2.30.tar.gz +sha256 75bd254871cb5853a6aa0403ac0be270cdd75c9d1b6639f18ecba63c15298e86 TimeDate-2.30.tar.gz diff --git a/buildroot/package/perl-timedate/perl-timedate.mk b/buildroot/package/perl-timedate/perl-timedate.mk new file mode 100644 index 0000000..cdc2c07 --- /dev/null +++ b/buildroot/package/perl-timedate/perl-timedate.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-timedate +# +################################################################################ + +PERL_TIMEDATE_VERSION = 2.30 +PERL_TIMEDATE_SOURCE = TimeDate-$(PERL_TIMEDATE_VERSION).tar.gz +PERL_TIMEDATE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GB/GBARR +PERL_TIMEDATE_LICENSE = Artistic or GPL-1.0+ +PERL_TIMEDATE_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-try-tiny/Config.in b/buildroot/package/perl-try-tiny/Config.in new file mode 100644 index 0000000..5c115b6 --- /dev/null +++ b/buildroot/package/perl-try-tiny/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_TRY_TINY + bool "perl-try-tiny" + help + Minimal try/catch with proper preservation of $@ + + https://github.com/p5sagit/Try-Tiny diff --git a/buildroot/package/perl-try-tiny/perl-try-tiny.hash b/buildroot/package/perl-try-tiny/perl-try-tiny.hash new file mode 100644 index 0000000..85f6040 --- /dev/null +++ b/buildroot/package/perl-try-tiny/perl-try-tiny.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 eb362c3cb32c42f9f28de9ddb7f2ead6 Try-Tiny-0.30.tar.gz +sha256 da5bd0d5c903519bbf10bb9ba0cb7bcac0563882bcfe4503aee3fb143eddef6b Try-Tiny-0.30.tar.gz diff --git a/buildroot/package/perl-try-tiny/perl-try-tiny.mk b/buildroot/package/perl-try-tiny/perl-try-tiny.mk new file mode 100644 index 0000000..f9113e7 --- /dev/null +++ b/buildroot/package/perl-try-tiny/perl-try-tiny.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-try-tiny +# +################################################################################ + +PERL_TRY_TINY_VERSION = 0.30 +PERL_TRY_TINY_SOURCE = Try-Tiny-$(PERL_TRY_TINY_VERSION).tar.gz +PERL_TRY_TINY_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER +PERL_TRY_TINY_LICENSE = MIT +PERL_TRY_TINY_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-uri/Config.in b/buildroot/package/perl-uri/Config.in new file mode 100644 index 0000000..23e5c50 --- /dev/null +++ b/buildroot/package/perl-uri/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_URI + bool "perl-uri" + help + Uniform Resource Identifiers (absolute and relative) + + https://github.com/libwww-perl/URI diff --git a/buildroot/package/perl-uri/perl-uri.hash b/buildroot/package/perl-uri/perl-uri.hash new file mode 100644 index 0000000..5f27230 --- /dev/null +++ b/buildroot/package/perl-uri/perl-uri.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 37d44a08e599aa945b32a9434ffe00a5 URI-1.73.tar.gz +sha256 cca7ab4a6f63f3ccaacae0f2e1337e8edf84137e73f18548ec7d659f23efe413 URI-1.73.tar.gz diff --git a/buildroot/package/perl-uri/perl-uri.mk b/buildroot/package/perl-uri/perl-uri.mk new file mode 100644 index 0000000..690a0eb --- /dev/null +++ b/buildroot/package/perl-uri/perl-uri.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-uri +# +################################################################################ + +PERL_URI_VERSION = 1.73 +PERL_URI_SOURCE = URI-$(PERL_URI_VERSION).tar.gz +PERL_URI_SITE = $(BR2_CPAN_MIRROR)/authors/id/E/ET/ETHER +PERL_URI_LICENSE = Artistic or GPL-1.0+ +PERL_URI_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-www-robotrules/Config.in b/buildroot/package/perl-www-robotrules/Config.in new file mode 100644 index 0000000..3e7175e --- /dev/null +++ b/buildroot/package/perl-www-robotrules/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PERL_WWW_ROBOTRULES + bool "perl-www-robotrules" + select BR2_PACKAGE_PERL_URI + help + This module provides functions that deal the date formats + used by the HTTP protocol (and then some more) + + http://github.com/gisle/www-robotrules diff --git a/buildroot/package/perl-www-robotrules/perl-www-robotrules.hash b/buildroot/package/perl-www-robotrules/perl-www-robotrules.hash new file mode 100644 index 0000000..9091a29 --- /dev/null +++ b/buildroot/package/perl-www-robotrules/perl-www-robotrules.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 b7186e8b8b3701e70c22abf430742403 WWW-RobotRules-6.02.tar.gz +sha256 46b502e7a288d559429891eeb5d979461dd3ecc6a5c491ead85d165b6e03a51e WWW-RobotRules-6.02.tar.gz diff --git a/buildroot/package/perl-www-robotrules/perl-www-robotrules.mk b/buildroot/package/perl-www-robotrules/perl-www-robotrules.mk new file mode 100644 index 0000000..5e8bab9 --- /dev/null +++ b/buildroot/package/perl-www-robotrules/perl-www-robotrules.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-www-robotrules +# +################################################################################ + +PERL_WWW_ROBOTRULES_VERSION = 6.02 +PERL_WWW_ROBOTRULES_SOURCE = WWW-RobotRules-$(PERL_WWW_ROBOTRULES_VERSION).tar.gz +PERL_WWW_ROBOTRULES_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GA/GAAS +PERL_WWW_ROBOTRULES_DEPENDENCIES = perl-uri +PERL_WWW_ROBOTRULES_LICENSE = Artistic or GPL-1.0+ +PERL_WWW_ROBOTRULES_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-xml-libxml/0001-Makefile-PL.patch b/buildroot/package/perl-xml-libxml/0001-Makefile-PL.patch new file mode 100644 index 0000000..e043c6d --- /dev/null +++ b/buildroot/package/perl-xml-libxml/0001-Makefile-PL.patch @@ -0,0 +1,18 @@ +fake check_lib for cross-compilation + +Signed-off-by: Francois Perrad + +Index: b/Makefile.PL +=================================================================== +--- a/Makefile.PL ++++ b/Makefile.PL +@@ -88,8 +88,7 @@ + # -------------------------------------------------------------------------- # + # -------------------------------------------------------------------------- # + +-use lib qw(inc); +-use Devel::CheckLib; ++sub check_lib { return 1; } + + # Prompt the user here for any paths and other configuration + diff --git a/buildroot/package/perl-xml-libxml/Config.in b/buildroot/package/perl-xml-libxml/Config.in new file mode 100644 index 0000000..fb15e10 --- /dev/null +++ b/buildroot/package/perl-xml-libxml/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PERL_XML_LIBXML + bool "perl-xml-libxml" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_PERL_XML_NAMESPACESUPPORT + select BR2_PACKAGE_PERL_XML_SAX + select BR2_PACKAGE_PERL_XML_SAX_BASE + help + Interface to Gnome libxml2 xml parsing and DOM library + + https://github.com/shlomif/perl-XML-LibXML + +comment "perl-xml-libxml needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/perl-xml-libxml/perl-xml-libxml.hash b/buildroot/package/perl-xml-libxml/perl-xml-libxml.hash new file mode 100644 index 0000000..bbe841a --- /dev/null +++ b/buildroot/package/perl-xml-libxml/perl-xml-libxml.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 43546fd9a3974f19323f9fb04861ece9 XML-LibXML-2.0132.tar.gz +sha256 721452e3103ca188f5968ab06d5ba29fe8e00e49f4767790882095050312d476 XML-LibXML-2.0132.tar.gz diff --git a/buildroot/package/perl-xml-libxml/perl-xml-libxml.mk b/buildroot/package/perl-xml-libxml/perl-xml-libxml.mk new file mode 100644 index 0000000..ff831bb --- /dev/null +++ b/buildroot/package/perl-xml-libxml/perl-xml-libxml.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# perl-xml-libxml +# +################################################################################ + +PERL_XML_LIBXML_VERSION = 2.0132 +PERL_XML_LIBXML_SOURCE = XML-LibXML-$(PERL_XML_LIBXML_VERSION).tar.gz +PERL_XML_LIBXML_SITE = $(BR2_CPAN_MIRROR)/authors/id/S/SH/SHLOMIF +PERL_XML_LIBXML_DEPENDENCIES = zlib libxml2 perl-xml-namespacesupport perl-xml-sax perl-xml-sax-base +PERL_XML_LIBXML_LICENSE = Artistic or GPL-1.0+ +PERL_XML_LIBXML_LICENSE_FILES = LICENSE + +PERL_XML_LIBXML_CONF_OPTS = \ + LIBS="-L $(STAGING_DIR)/usr/lib" \ + INC="-I $(STAGING_DIR)/usr/include/libxml2" \ + NO_THREADS + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-xml-namespacesupport/Config.in b/buildroot/package/perl-xml-namespacesupport/Config.in new file mode 100644 index 0000000..93a697c --- /dev/null +++ b/buildroot/package/perl-xml-namespacesupport/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_XML_NAMESPACESUPPORT + bool "perl-xml-namespacesupport" + help + A simple generic namespace processor + + https://github.com/perigrin/xml-namespacesupport diff --git a/buildroot/package/perl-xml-namespacesupport/perl-xml-namespacesupport.hash b/buildroot/package/perl-xml-namespacesupport/perl-xml-namespacesupport.hash new file mode 100644 index 0000000..d55551c --- /dev/null +++ b/buildroot/package/perl-xml-namespacesupport/perl-xml-namespacesupport.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 a8916c6d095bcf073e1108af02e78c97 XML-NamespaceSupport-1.12.tar.gz +sha256 47e995859f8dd0413aa3f22d350c4a62da652e854267aa0586ae544ae2bae5ef XML-NamespaceSupport-1.12.tar.gz diff --git a/buildroot/package/perl-xml-namespacesupport/perl-xml-namespacesupport.mk b/buildroot/package/perl-xml-namespacesupport/perl-xml-namespacesupport.mk new file mode 100644 index 0000000..325440b --- /dev/null +++ b/buildroot/package/perl-xml-namespacesupport/perl-xml-namespacesupport.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-xml-namespacesupport +# +################################################################################ + +PERL_XML_NAMESPACESUPPORT_VERSION = 1.12 +PERL_XML_NAMESPACESUPPORT_SOURCE = XML-NamespaceSupport-$(PERL_XML_NAMESPACESUPPORT_VERSION).tar.gz +PERL_XML_NAMESPACESUPPORT_SITE = $(BR2_CPAN_MIRROR)/authors/id/P/PE/PERIGRIN +PERL_XML_NAMESPACESUPPORT_LICENSE = Artistic or GPL-1.0+ +PERL_XML_NAMESPACESUPPORT_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-xml-sax-base/Config.in b/buildroot/package/perl-xml-sax-base/Config.in new file mode 100644 index 0000000..2ad25ac --- /dev/null +++ b/buildroot/package/perl-xml-sax-base/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PERL_XML_SAX_BASE + bool "perl-xml-sax-base" + help + Base class for SAX Drivers and Filters + + https://metacpan.org/release/XML-SAX-Base diff --git a/buildroot/package/perl-xml-sax-base/perl-xml-sax-base.hash b/buildroot/package/perl-xml-sax-base/perl-xml-sax-base.hash new file mode 100644 index 0000000..a51e1d1 --- /dev/null +++ b/buildroot/package/perl-xml-sax-base/perl-xml-sax-base.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 ec347a14065dd7aec7d9fb181b2d7946 XML-SAX-Base-1.09.tar.gz +sha256 66cb355ba4ef47c10ca738bd35999723644386ac853abbeb5132841f5e8a2ad0 XML-SAX-Base-1.09.tar.gz diff --git a/buildroot/package/perl-xml-sax-base/perl-xml-sax-base.mk b/buildroot/package/perl-xml-sax-base/perl-xml-sax-base.mk new file mode 100644 index 0000000..ec6e052 --- /dev/null +++ b/buildroot/package/perl-xml-sax-base/perl-xml-sax-base.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# perl-xml-sax-base +# +################################################################################ + +PERL_XML_SAX_BASE_VERSION = 1.09 +PERL_XML_SAX_BASE_SOURCE = XML-SAX-Base-$(PERL_XML_SAX_BASE_VERSION).tar.gz +PERL_XML_SAX_BASE_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GR/GRANTM +PERL_XML_SAX_BASE_LICENSE = Artistic or GPL-1.0+ +PERL_XML_SAX_BASE_LICENSE_FILES = README + +$(eval $(perl-package)) diff --git a/buildroot/package/perl-xml-sax/Config.in b/buildroot/package/perl-xml-sax/Config.in new file mode 100644 index 0000000..4f5567e --- /dev/null +++ b/buildroot/package/perl-xml-sax/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PERL_XML_SAX + bool "perl-xml-sax" + select BR2_PACKAGE_PERL_XML_NAMESPACESUPPORT + select BR2_PACKAGE_PERL_XML_SAX_BASE + help + Simple API for XML + + https://metacpan.org/release/XML-SAX diff --git a/buildroot/package/perl-xml-sax/perl-xml-sax.hash b/buildroot/package/perl-xml-sax/perl-xml-sax.hash new file mode 100644 index 0000000..6aa543c --- /dev/null +++ b/buildroot/package/perl-xml-sax/perl-xml-sax.hash @@ -0,0 +1,3 @@ +# retrieved by scancpan from http://cpan.metacpan.org/ +md5 290f5375ae87fdebfdb5bc3854019f24 XML-SAX-0.99.tar.gz +sha256 32b04b8e36b6cc4cfc486de2d859d87af5386dd930f2383c49347050d6f5ad84 XML-SAX-0.99.tar.gz diff --git a/buildroot/package/perl-xml-sax/perl-xml-sax.mk b/buildroot/package/perl-xml-sax/perl-xml-sax.mk new file mode 100644 index 0000000..90b2cd6 --- /dev/null +++ b/buildroot/package/perl-xml-sax/perl-xml-sax.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# perl-xml-sax +# +################################################################################ + +PERL_XML_SAX_VERSION = 0.99 +PERL_XML_SAX_SOURCE = XML-SAX-$(PERL_XML_SAX_VERSION).tar.gz +PERL_XML_SAX_SITE = $(BR2_CPAN_MIRROR)/authors/id/G/GR/GRANTM +PERL_XML_SAX_DEPENDENCIES = perl-xml-namespacesupport perl-xml-sax-base +PERL_XML_SAX_LICENSE = Artistic or GPL-1.0+ +PERL_XML_SAX_LICENSE_FILES = LICENSE + +$(eval $(perl-package)) diff --git a/buildroot/package/perl/0001-PATCH-Remove-existing-files-before-overwriting-them.patch b/buildroot/package/perl/0001-PATCH-Remove-existing-files-before-overwriting-them.patch new file mode 100644 index 0000000..5223b78 --- /dev/null +++ b/buildroot/package/perl/0001-PATCH-Remove-existing-files-before-overwriting-them.patch @@ -0,0 +1,46 @@ +From ae65651eab053fc6dc4590dbb863a268215c1fc5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= +Date: Fri, 8 Jun 2018 11:45:40 +0100 +Subject: [PATCH] [PATCH] Remove existing files before overwriting them + +Archive should extract only the latest same-named entry. +Extracted regular file should not be writtent into existing block +device (or any other one). + +https://rt.cpan.org/Ticket/Display.html?id=125523 + +[Peter: rewrite path to match perl tarball with sed 's|\(lib/Archive\)|cpan/Archive-Tar/\1|g'] +Signed-off-by: Chris 'BinGOs' Williams +Signed-off-by: Peter Korsgaard +--- + cpan/Archive-Tar/lib/Archive/Tar.pm | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/cpan/Archive-Tar/lib/Archive/Tar.pm b/cpan/Archive-Tar/lib/Archive/Tar.pm +index 6244369..a83975f 100644 +--- a/cpan/Archive-Tar/lib/Archive/Tar.pm ++++ b/cpan/Archive-Tar/lib/Archive/Tar.pm +@@ -845,6 +845,20 @@ sub _extract_file { + return; + } + ++ ### If a file system already contains a block device with the same name as ++ ### the being extracted regular file, we would write the file's content ++ ### to the block device. So remove the existing file (block device) now. ++ ### If an archive contains multiple same-named entries, the last one ++ ### should replace the previous ones. So remove the old file now. ++ ### If the old entry is a symlink to a file outside of the CWD, the new ++ ### entry would create a file there. This is CVE-2018-12015 ++ ### . ++ if (-l $full || -e _) { ++ if (!unlink $full) { ++ $self->_error( qq[Could not remove old file '$full': $!] ); ++ return; ++ } ++ } + if( length $entry->type && $entry->is_file ) { + my $fh = IO::File->new; + $fh->open( $full, '>' ) or ( +-- +2.11.0 + diff --git a/buildroot/package/perl/Config.in b/buildroot/package/perl/Config.in new file mode 100644 index 0000000..32a3fd2 --- /dev/null +++ b/buildroot/package/perl/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_PERL + bool "perl" + depends on BR2_USE_MMU # fork() + help + Larry Wall's Practical Extraction and Report Language + An interpreted scripting language, known among some as + "Unix's Swiss Army Chainsaw". + + http://www.perl.org/ + +if BR2_PACKAGE_PERL + +config BR2_PACKAGE_PERL_MODULES + string "custom module selection" + help + List of space-separated perl modules (without .pm) to copy + to the rootfs. + + Examples: constant Getopt/Std Time/Local + + Module dependencies on external libraries are not automatic so + check your needs. + + Leave empty for all modules (as far as the external libraries + are available). + +endif diff --git a/buildroot/package/perl/perl.hash b/buildroot/package/perl/perl.hash new file mode 100644 index 0000000..210f6d5 --- /dev/null +++ b/buildroot/package/perl/perl.hash @@ -0,0 +1,7 @@ +# Hashes from: http://www.cpan.org/src/5.0/perl-5.26.2.tar.xz.{md5,sha1,sha256}.txt +md5 1fa1b53eeff76aa37b17bfc9b2771671 perl-5.26.2.tar.xz +sha1 bfa5c7921ed7bf5e035dbf2f7ff81367b81e372c perl-5.26.2.tar.xz +sha256 0f8c0fb1b0db4681adb75c3ba0dd77a0472b1b359b9e80efd79fc27b4352132c perl-5.26.2.tar.xz + +# Hashes from: http://github.com/arsv/perl-cross/releases/download/1.1.9/perl-cross-1.1.9.hash +sha256 0bbb450e48d07e7fdf867d578b1780ac8f0e8dc284d52301dac4d763b42f6041 perl-cross-1.1.9.tar.gz diff --git a/buildroot/package/perl/perl.mk b/buildroot/package/perl/perl.mk new file mode 100644 index 0000000..7b4a271 --- /dev/null +++ b/buildroot/package/perl/perl.mk @@ -0,0 +1,120 @@ +################################################################################ +# +# perl +# +################################################################################ + +# When updating the version here, also update utils/scancpan +PERL_VERSION_MAJOR = 26 +PERL_VERSION = 5.$(PERL_VERSION_MAJOR).2 +PERL_SITE = http://www.cpan.org/src/5.0 +PERL_SOURCE = perl-$(PERL_VERSION).tar.xz +PERL_LICENSE = Artistic or GPL-1.0+ +PERL_LICENSE_FILES = Artistic Copying README +PERL_INSTALL_STAGING = YES + +PERL_CROSS_VERSION = 1.1.9 +# DO NOT refactor with the github helper (the result is not the same) +PERL_CROSS_SITE = https://github.com/arsv/perl-cross/releases/download/$(PERL_CROSS_VERSION) +PERL_CROSS_SOURCE = perl-cross-$(PERL_CROSS_VERSION).tar.gz +PERL_EXTRA_DOWNLOADS = $(PERL_CROSS_SITE)/$(PERL_CROSS_SOURCE) + +# We use the perlcross hack to cross-compile perl. It should +# be extracted over the perl sources, so we don't define that +# as a separate package. Instead, it is downloaded and extracted +# together with perl +define PERL_CROSS_EXTRACT + $(call suitable-extractor,$(PERL_CROSS_SOURCE)) $(DL_DIR)/$(PERL_CROSS_SOURCE) | \ + $(TAR) --strip-components=1 -C $(@D) $(TAR_OPTIONS) - +endef +PERL_POST_EXTRACT_HOOKS += PERL_CROSS_EXTRACT + +# Even though perl is not an autotools-package, it uses config.sub and +# config.guess. Up-to-date versions of these files may be needed to build perl +# on newer host architectures, so we borrow the hook which updates them from the +# autotools infrastructure. +PERL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK + +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +PERL_DEPENDENCIES += berkeleydb +endif +ifeq ($(BR2_PACKAGE_GDBM),y) +PERL_DEPENDENCIES += gdbm +endif + +# We have to override LD, because an external multilib toolchain ld is not +# wrapped to provide the required sysroot options. +PERL_CONF_OPTS = \ + --target=$(GNU_TARGET_NAME) \ + --target-tools-prefix=$(TARGET_CROSS) \ + --prefix=/usr \ + -Dld="$(TARGET_CC)" \ + -Dccflags="$(TARGET_CFLAGS)" \ + -Dldflags="$(TARGET_LDFLAGS) -lm" \ + -Dmydomain="" \ + -Dmyhostname="noname" \ + -Dmyuname="Buildroot $(BR2_VERSION_FULL)" \ + -Dosname=linux \ + -Dosvers=$(LINUX_VERSION) \ + -Dperladmin=root + +ifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1) +PERL_CONF_OPTS += -Dusedevel +endif + +ifeq ($(BR2_STATIC_LIBS),y) +PERL_CONF_OPTS += --all-static --no-dynaloader +endif + +PERL_MODULES = $(call qstrip,$(BR2_PACKAGE_PERL_MODULES)) +ifneq ($(PERL_MODULES),) +PERL_CONF_OPTS += --only-mod=$(subst $(space),$(comma),$(PERL_MODULES)) +endif + +define PERL_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) HOSTCC='$(HOSTCC_NOCCACHE)' \ + ./configure $(PERL_CONF_OPTS)) + $(SED) 's/UNKNOWN-/Buildroot $(BR2_VERSION_FULL) /' $(@D)/patchlevel.h +endef + +define PERL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) all +endef + +define PERL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR="$(STAGING_DIR)" install.perl install.sym +endef + +define PERL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR="$(TARGET_DIR)" install.perl install.sym +endef + +HOST_PERL_CONF_OPTS = \ + -des \ + -Dprefix="$(HOST_DIR)" \ + -Dcc="$(HOSTCC)" + +define HOST_PERL_CONFIGURE_CMDS + (cd $(@D); $(HOST_MAKE_ENV) HOSTCC='$(HOSTCC_NOCCACHE)' \ + ./Configure $(HOST_PERL_CONF_OPTS)) +endef + +define HOST_PERL_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_PERL_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) INSTALL_DEPENDENCE='' install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) + +define PERL_FINALIZE_TARGET + rm -rf $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)/pod + rm -rf $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)/$(PERL_ARCHNAME)/CORE + find $(TARGET_DIR)/usr/lib/perl5/ -name 'extralibs.ld' -print0 | xargs -0 rm -f + find $(TARGET_DIR)/usr/lib/perl5/ -name '*.bs' -print0 | xargs -0 rm -f + find $(TARGET_DIR)/usr/lib/perl5/ -name '.packlist' -print0 | xargs -0 rm -f +endef +PERL_TARGET_FINALIZE_HOOKS += PERL_FINALIZE_TARGET diff --git a/buildroot/package/phidgetwebservice/Config.in b/buildroot/package/phidgetwebservice/Config.in new file mode 100644 index 0000000..50018e0 --- /dev/null +++ b/buildroot/package/phidgetwebservice/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_PHIDGETWEBSERVICE + bool "phidgetwebservice" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb, libphidget + depends on !BR2_STATIC_LIBS # libphidget + select BR2_PACKAGE_LIBPHIDGET + help + phidgetwebservice (the Phidget WebService) provides an HTTP + front-end to the libphidget device control API. This + provides an alternative to the libphidget C linkage + interface for controlling locally attached Phidgets USB + devices and it also allows you to control Phidget USB + devices remotely when the host running the phidgetwebservice + has an exposed network interface. + + The phidgetwebservice client program uses the libphidget + HTTP functions to send commands to the phidgetwebservice. + + http://phidgets.com/ + +comment "phidgetwebservice needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/phidgetwebservice/phidgetwebservice.hash b/buildroot/package/phidgetwebservice/phidgetwebservice.hash new file mode 100644 index 0000000..7cd85da --- /dev/null +++ b/buildroot/package/phidgetwebservice/phidgetwebservice.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 e8add82fd41d9cb274b88ee369a1f7366e35f85abcfcabb9e2a383574bb779c5 phidgetwebservice_2.1.8.20140319.tar.gz diff --git a/buildroot/package/phidgetwebservice/phidgetwebservice.mk b/buildroot/package/phidgetwebservice/phidgetwebservice.mk new file mode 100644 index 0000000..36c0185 --- /dev/null +++ b/buildroot/package/phidgetwebservice/phidgetwebservice.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# phidgetwebservice +# +################################################################################ + +PHIDGETWEBSERVICE_VERSION = 2.1.8.20140319 +PHIDGETWEBSERVICE_SOURCE = phidgetwebservice_$(PHIDGETWEBSERVICE_VERSION).tar.gz +PHIDGETWEBSERVICE_SITE = http://www.phidgets.com/downloads/libraries +PHIDGETWEBSERVICE_DEPENDENCIES = libphidget +PHIDGETWEBSERVICE_LICENSE = LGPL-3.0 +PHIDGETWEBSERVICE_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/php-amqp/Config.in b/buildroot/package/php-amqp/Config.in new file mode 100644 index 0000000..dc779f0 --- /dev/null +++ b/buildroot/package/php-amqp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PHP_AMQP + bool "php-amqp" + depends on BR2_PACKAGE_PHP + depends on BR2_TOOLCHAIN_HAS_THREADS # rabbitmq-c + select BR2_PACKAGE_OPENSSL # rabbitmq-c: amqp_ssl_socket.h + select BR2_PACKAGE_RABBITMQ_C + help + Communicate with any AMQP compliant server. + + http://pecl.php.net/package/amqp + +comment "php-amqp needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/php-amqp/php-amqp.hash b/buildroot/package/php-amqp/php-amqp.hash new file mode 100644 index 0000000..4b3b197 --- /dev/null +++ b/buildroot/package/php-amqp/php-amqp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f45831d498b8fa47a151c31f6abdc0530aa6eabda6e2e10514aca3bdc76a5098 amqp-1.9.0.tgz diff --git a/buildroot/package/php-amqp/php-amqp.mk b/buildroot/package/php-amqp/php-amqp.mk new file mode 100644 index 0000000..6a8c52c --- /dev/null +++ b/buildroot/package/php-amqp/php-amqp.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-amqp +# +################################################################################ + +PHP_AMQP_VERSION = 1.9.0 +PHP_AMQP_SOURCE = amqp-$(PHP_AMQP_VERSION).tgz +PHP_AMQP_SITE = https://pecl.php.net/get +PHP_AMQP_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-amqp=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_AMQP_DEPENDENCIES = rabbitmq-c php host-autoconf +PHP_AMQP_LICENSE = PHP-3.01 +PHP_AMQP_LICENSE_FILES = LICENSE + +define PHP_AMQP_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_AMQP_PRE_CONFIGURE_HOOKS += PHP_AMQP_PHPIZE + +$(eval $(autotools-package)) diff --git a/buildroot/package/php-geoip/Config.in b/buildroot/package/php-geoip/Config.in new file mode 100644 index 0000000..adb2046 --- /dev/null +++ b/buildroot/package/php-geoip/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PHP_GEOIP + bool "php-geoip" + depends on BR2_PACKAGE_PHP + select BR2_PACKAGE_GEOIP + help + PHP GeoIP-based IP address mapper to geographical places. + + http://pecl.php.net/package/geoip diff --git a/buildroot/package/php-geoip/php-geoip.hash b/buildroot/package/php-geoip/php-geoip.hash new file mode 100644 index 0000000..21e26c8 --- /dev/null +++ b/buildroot/package/php-geoip/php-geoip.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b2d05c03019d46135c249b5a7fa0dbd43ca5ee98aea8ed807bc7aa90ac8c0f06 geoip-1.1.1.tgz diff --git a/buildroot/package/php-geoip/php-geoip.mk b/buildroot/package/php-geoip/php-geoip.mk new file mode 100644 index 0000000..82ecba5 --- /dev/null +++ b/buildroot/package/php-geoip/php-geoip.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-geoip +# +################################################################################ + +PHP_GEOIP_VERSION = 1.1.1 +PHP_GEOIP_SOURCE = geoip-$(PHP_GEOIP_VERSION).tgz +PHP_GEOIP_SITE = https://pecl.php.net/get +PHP_GEOIP_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-geoip=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_GEOIP_DEPENDENCIES = geoip php host-autoconf +PHP_GEOIP_LICENSE = PHP-3.01 +PHP_GEOIP_LICENSE_FILES = geoip.c + +define PHP_GEOIP_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_GEOIP_PRE_CONFIGURE_HOOKS += PHP_GEOIP_PHPIZE + +$(eval $(autotools-package)) diff --git a/buildroot/package/php-gnupg/Config.in b/buildroot/package/php-gnupg/Config.in new file mode 100644 index 0000000..113017d --- /dev/null +++ b/buildroot/package/php-gnupg/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PHP_GNUPG + bool "php-gnupg" + depends on BR2_PACKAGE_PHP + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # ligpgme + depends on BR2_USE_MMU # libassuan + select BR2_PACKAGE_LIBGPGME + help + PHP wrapper around the gpgme library. + + http://pecl.php.net/package/gnupg diff --git a/buildroot/package/php-gnupg/php-gnupg.hash b/buildroot/package/php-gnupg/php-gnupg.hash new file mode 100644 index 0000000..4185665 --- /dev/null +++ b/buildroot/package/php-gnupg/php-gnupg.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 35e16bee11345a7d6bf57bea3cadf45e371ad1ed4e0218b0c06f6f637e4e1772 gnupg-1.4.0.tgz diff --git a/buildroot/package/php-gnupg/php-gnupg.mk b/buildroot/package/php-gnupg/php-gnupg.mk new file mode 100644 index 0000000..ae0a781 --- /dev/null +++ b/buildroot/package/php-gnupg/php-gnupg.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-gnupg +# +################################################################################ + +PHP_GNUPG_VERSION = 1.4.0 +PHP_GNUPG_SOURCE = gnupg-$(PHP_GNUPG_VERSION).tgz +PHP_GNUPG_SITE = https://pecl.php.net/get +# phpize does the autoconf magic +PHP_GNUPG_DEPENDENCIES = php libgpgme host-autoconf host-pkgconf +PHP_GNUPG_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-gnupg=$(STAGING_DIR)/usr/include --with-gpg=/usr/bin/gpg +PHP_GNUPG_LICENSE = BSD-2-Clause +PHP_GNUPG_LICENSE_FILES = LICENSE + +define PHP_GNUPG_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_GNUPG_PRE_CONFIGURE_HOOKS += PHP_GNUPG_PHPIZE + +$(eval $(autotools-package)) diff --git a/buildroot/package/php-imagick/Config.in b/buildroot/package/php-imagick/Config.in new file mode 100644 index 0000000..f759eea --- /dev/null +++ b/buildroot/package/php-imagick/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PHP_IMAGICK + bool "php-imagick" + depends on BR2_PACKAGE_PHP + depends on BR2_USE_MMU # imagemagick + depends on BR2_TOOLCHAIN_HAS_THREADS # imagemagick + select BR2_PACKAGE_IMAGEMAGICK + help + PHP wrapper to the ImageMagick library. + + http://pecl.php.net/package/imagick + +comment "php-imagemagick needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_PHP + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/php-imagick/php-imagick.hash b/buildroot/package/php-imagick/php-imagick.hash new file mode 100644 index 0000000..abb29d4 --- /dev/null +++ b/buildroot/package/php-imagick/php-imagick.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1f3c5b5eeaa02800ad22f506cd100e8889a66b2ec937e192eaaa30d74562567c imagick-3.4.3.tgz diff --git a/buildroot/package/php-imagick/php-imagick.mk b/buildroot/package/php-imagick/php-imagick.mk new file mode 100644 index 0000000..ca0cbc7 --- /dev/null +++ b/buildroot/package/php-imagick/php-imagick.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-imagick +# +################################################################################ + +PHP_IMAGICK_VERSION = 3.4.3 +PHP_IMAGICK_SOURCE = imagick-$(PHP_IMAGICK_VERSION).tgz +PHP_IMAGICK_SITE = http://pecl.php.net/get +PHP_IMAGICK_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-imagick=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_IMAGICK_DEPENDENCIES = imagemagick php host-autoconf +PHP_IMAGICK_LICENSE = PHP-3.01 +PHP_IMAGICK_LICENSE_FILES = LICENSE + +define PHP_IMAGICK_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_IMAGICK_PRE_CONFIGURE_HOOKS += PHP_IMAGICK_PHPIZE + +$(eval $(autotools-package)) diff --git a/buildroot/package/php-memcached/Config.in b/buildroot/package/php-memcached/Config.in new file mode 100644 index 0000000..cd97c15 --- /dev/null +++ b/buildroot/package/php-memcached/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PHP_MEMCACHED + bool "php-memcached" + depends on BR2_INSTALL_LIBSTDCPP # libmemcached + depends on BR2_TOOLCHAIN_HAS_THREADS # libmemcached + select BR2_PACKAGE_PHP_EXT_SESSION + select BR2_PACKAGE_LIBMEMCACHED + select BR2_PACKAGE_ZLIB + help + PHP extension for interfacing with memcached via + libmemcached library. + + http://pecl.php.net/package/memcached + +comment "php-memcached needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/php-memcached/php-memcached.hash b/buildroot/package/php-memcached/php-memcached.hash new file mode 100644 index 0000000..7a8ec28 --- /dev/null +++ b/buildroot/package/php-memcached/php-memcached.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5d1c29a1d5e391d6bb7b736a07e063d2f0834800673dd246d64ce1b73e47645d memcached-3.0.3.tgz diff --git a/buildroot/package/php-memcached/php-memcached.mk b/buildroot/package/php-memcached/php-memcached.mk new file mode 100644 index 0000000..224a344 --- /dev/null +++ b/buildroot/package/php-memcached/php-memcached.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# php-memcached +# +################################################################################ + +PHP_MEMCACHED_VERSION = 3.0.3 +PHP_MEMCACHED_SOURCE = memcached-$(PHP_MEMCACHED_VERSION).tgz +PHP_MEMCACHED_SITE = https://pecl.php.net/get +PHP_MEMCACHED_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --disable-memcached-sasl \ + --with-libmemcached-dir=$(STAGING_DIR)/usr \ + --with-zlib-dir=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_MEMCACHED_DEPENDENCIES = libmemcached php zlib host-autoconf host-pkgconf +PHP_MEMCACHED_LICENSE = PHP-3.01, MIT (fastlz), ISC-like (g_fmt.c, g_fmt.h) +PHP_MEMCACHED_LICENSE_FILES = LICENSE fastlz/LICENSE g_fmt.h + +define PHP_MEMCACHED_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_MEMCACHED_PRE_CONFIGURE_HOOKS += PHP_MEMCACHED_PHPIZE + +$(eval $(autotools-package)) diff --git a/buildroot/package/php-ssh2/Config.in b/buildroot/package/php-ssh2/Config.in new file mode 100644 index 0000000..b457900 --- /dev/null +++ b/buildroot/package/php-ssh2/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PHP_SSH2 + bool "php-ssh2" + depends on BR2_PACKAGE_PHP + select BR2_PACKAGE_LIBSSH2 + help + PHP bindings for the libssh2 library. + + http://pecl.php.net/package/ssh2 diff --git a/buildroot/package/php-ssh2/php-ssh2.hash b/buildroot/package/php-ssh2/php-ssh2.hash new file mode 100644 index 0000000..f110e77 --- /dev/null +++ b/buildroot/package/php-ssh2/php-ssh2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 87618d6a0981afe8c24b36d6b38c21a0aa0237b62e60347d0170bd86b51f79fb ssh2-1.1.2.tgz diff --git a/buildroot/package/php-ssh2/php-ssh2.mk b/buildroot/package/php-ssh2/php-ssh2.mk new file mode 100644 index 0000000..c9c1301 --- /dev/null +++ b/buildroot/package/php-ssh2/php-ssh2.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-ssh2 +# +################################################################################ + +PHP_SSH2_VERSION = 1.1.2 +PHP_SSH2_SOURCE = ssh2-$(PHP_SSH2_VERSION).tgz +PHP_SSH2_SITE = https://pecl.php.net/get +PHP_SSH2_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-ssh2=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_SSH2_DEPENDENCIES = libssh2 php host-autoconf +PHP_SSH2_LICENSE = PHP-3.01 +PHP_SSH2_LICENSE_FILES = LICENSE + +define PHP_SSH2_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_SSH2_PRE_CONFIGURE_HOOKS += PHP_SSH2_PHPIZE + +$(eval $(autotools-package)) diff --git a/buildroot/package/php-yaml/Config.in b/buildroot/package/php-yaml/Config.in new file mode 100644 index 0000000..8d09ce2 --- /dev/null +++ b/buildroot/package/php-yaml/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PHP_YAML + bool "php-yaml" + depends on BR2_PACKAGE_PHP + select BR2_PACKAGE_LIBYAML + help + PHP YAML-1.1 parser and emitter. + + http://pecl.php.net/package/yaml diff --git a/buildroot/package/php-yaml/php-yaml.hash b/buildroot/package/php-yaml/php-yaml.hash new file mode 100644 index 0000000..21b507e --- /dev/null +++ b/buildroot/package/php-yaml/php-yaml.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c3afb0dad47b6c3a5b7b449f57a4938df27bf974efbe188d85c4fb998eff0039 yaml-2.0.2.tgz diff --git a/buildroot/package/php-yaml/php-yaml.mk b/buildroot/package/php-yaml/php-yaml.mk new file mode 100644 index 0000000..086d575 --- /dev/null +++ b/buildroot/package/php-yaml/php-yaml.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# php-yaml +# +################################################################################ + +PHP_YAML_VERSION = 2.0.2 +PHP_YAML_SOURCE = yaml-$(PHP_YAML_VERSION).tgz +PHP_YAML_SITE = https://pecl.php.net/get +PHP_YAML_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config \ + --with-yaml=$(STAGING_DIR)/usr +# phpize does the autoconf magic +PHP_YAML_DEPENDENCIES = libyaml php host-autoconf +PHP_YAML_LICENSE = MIT +PHP_YAML_LICENSE_FILES = LICENSE + +define PHP_YAML_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_YAML_PRE_CONFIGURE_HOOKS += PHP_YAML_PHPIZE + +$(eval $(autotools-package)) diff --git a/buildroot/package/php-zmq/Config.in b/buildroot/package/php-zmq/Config.in new file mode 100644 index 0000000..058f93d --- /dev/null +++ b/buildroot/package/php-zmq/Config.in @@ -0,0 +1,13 @@ +comment "php-zmq needs a toolchain w/ C++, threads" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) + +config BR2_PACKAGE_PHP_ZMQ + bool "php-zmq" + depends on BR2_PACKAGE_PHP + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_ZEROMQ + help + ZeroMQ messaging bindings for PHP + + http://pecl.php.net/package/zmq diff --git a/buildroot/package/php-zmq/php-zmq.hash b/buildroot/package/php-zmq/php-zmq.hash new file mode 100644 index 0000000..c99e351 --- /dev/null +++ b/buildroot/package/php-zmq/php-zmq.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c492375818bd51b355352798fb94f04d6828c6aeda41ba813849624af74144ce zmq-1.1.3.tgz diff --git a/buildroot/package/php-zmq/php-zmq.mk b/buildroot/package/php-zmq/php-zmq.mk new file mode 100644 index 0000000..fed7195 --- /dev/null +++ b/buildroot/package/php-zmq/php-zmq.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# php-zmq +# +################################################################################ + +PHP_ZMQ_VERSION = 1.1.3 +PHP_ZMQ_SOURCE = zmq-$(PHP_ZMQ_VERSION).tgz +PHP_ZMQ_SITE = https://pecl.php.net/get +# phpize does the autoconf magic +PHP_ZMQ_DEPENDENCIES = php zeromq host-autoconf host-pkgconf +PHP_ZMQ_CONF_OPTS = --with-php-config=$(STAGING_DIR)/usr/bin/php-config +PHP_ZMQ_LICENSE = BSD-3-Clause +PHP_ZMQ_LICENSE_FILES = LICENSE + +define PHP_ZMQ_PHPIZE + (cd $(@D); \ + PHP_AUTOCONF=$(HOST_DIR)/bin/autoconf \ + PHP_AUTOHEADER=$(HOST_DIR)/bin/autoheader \ + $(STAGING_DIR)/usr/bin/phpize) +endef + +PHP_ZMQ_PRE_CONFIGURE_HOOKS += PHP_ZMQ_PHPIZE + +$(eval $(autotools-package)) diff --git a/buildroot/package/php/0001-acinclude.m4-don-t-unset-variables.patch b/buildroot/package/php/0001-acinclude.m4-don-t-unset-variables.patch new file mode 100644 index 0000000..b239113 --- /dev/null +++ b/buildroot/package/php/0001-acinclude.m4-don-t-unset-variables.patch @@ -0,0 +1,40 @@ +From 7a4168062fbab2e33ef9a42bca9f87a5921afac2 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 9 Aug 2016 11:49:56 +0200 +Subject: [PATCH] acinclude.m4: don't unset variables + +Unsetting ac_cv_{func,lib}_* is bad, you can't feed the configure cache. +Terminate them with extreme prejudice. + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Adam Duskett +[aduskett@gmail.com: Update for 7.2.2] +--- + acinclude.m4 | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/acinclude.m4 b/acinclude.m4 +index 28506b6..af4aa06 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -1890,8 +1890,6 @@ define([phpshift],[ifelse(index([$@],[,]),-1,,[substr([$@],incr(index([$@],[,])) + dnl + AC_DEFUN([PHP_CHECK_FUNC_LIB],[ + ifelse($2,,:,[ +- unset ac_cv_lib_$2[]_$1 +- unset ac_cv_lib_$2[]___$1 + unset found + AC_CHECK_LIB($2, $1, [found=yes], [ + AC_CHECK_LIB($2, __$1, [found=yes], [found=no]) +@@ -1923,8 +1921,6 @@ dnl in the default libraries and as a fall back in the specified library. + dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS. + dnl + AC_DEFUN([PHP_CHECK_FUNC],[ +- unset ac_cv_func_$1 +- unset ac_cv_func___$1 + unset found + + AC_CHECK_FUNC($1, [found=yes],[ AC_CHECK_FUNC(__$1,[found=yes],[found=no]) ]) +-- +2.7.4 + diff --git a/buildroot/package/php/0002-iconv-tweak-iconv-detection.patch b/buildroot/package/php/0002-iconv-tweak-iconv-detection.patch new file mode 100644 index 0000000..e921030 --- /dev/null +++ b/buildroot/package/php/0002-iconv-tweak-iconv-detection.patch @@ -0,0 +1,71 @@ +From 1357df0196806d5697b1f84497ef72aab5faa8a3 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 9 Aug 2016 11:50:49 +0200 +Subject: [PATCH] iconv: tweak iconv detection + +Tweak PHP_SETUP_ICONV from aclocal/acinclude.m4 to not +PHP_ADD_INCLUDE $ICONV_DIR/include since the tests use +test instead of AC_TRY_LINK to find headers which is bad, +specially when adding /usr and /usr/local to the mix. +Do basically the same with ext/iconv/config.m4 by tweaking +PHP_ICONV_H_PATH which, again, uses test and absolute paths. + +Signed-off-by: Gustavo Zacarias +[Gustavo: convert to nice m4 instead of patching configure] +[Gustavo: update for 5.6.10] +Signed-off-by: Adam Duskett +[aduskett@gmail.com: Update for 7.2.2] +--- + acinclude.m4 | 2 +- + ext/iconv/config.m4 | 22 ---------------------- + 2 files changed, 1 insertion(+), 23 deletions(-) + +diff --git a/acinclude.m4 b/acinclude.m4 +index af4aa06..1bd2652 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -2463,7 +2463,7 @@ AC_DEFUN([PHP_SETUP_ICONV], [ + dnl + if test "$found_iconv" = "no"; then + +- for i in $PHP_ICONV /usr/local /usr; do ++ for i in $PHP_ICONV; do + if test -r $i/include/giconv.h; then + AC_DEFINE(HAVE_GICONV_H, 1, [ ]) + ICONV_DIR=$i +diff --git a/ext/iconv/config.m4 b/ext/iconv/config.m4 +index 6a05697..694fcb8 100644 +--- a/ext/iconv/config.m4 ++++ b/ext/iconv/config.m4 +@@ -14,28 +14,6 @@ if test "$PHP_ICONV" != "no"; then + ]) + + if test "$iconv_avail" != "no"; then +- if test -z "$ICONV_DIR"; then +- for i in /usr/local /usr; do +- if test -f "$i/include/iconv.h" || test -f "$i/include/giconv.h"; then +- PHP_ICONV_PREFIX="$i" +- break +- fi +- done +- if test -z "$PHP_ICONV_PREFIX"; then +- PHP_ICONV_PREFIX="/usr" +- fi +- else +- PHP_ICONV_PREFIX="$ICONV_DIR" +- fi +- +- CFLAGS="-I$PHP_ICONV_PREFIX/include $CFLAGS" +- LDFLAGS="-L$PHP_ICONV_PREFIX/$PHP_LIBDIR $LDFLAGS" +- +- if test -r "$PHP_ICONV_PREFIX/include/giconv.h"; then +- PHP_ICONV_H_PATH="$PHP_ICONV_PREFIX/include/giconv.h" +- else +- PHP_ICONV_H_PATH="$PHP_ICONV_PREFIX/include/iconv.h" +- fi + + AC_MSG_CHECKING([if iconv is glibc's]) + AC_TRY_LINK([#include ],[gnu_get_libc_version();], +-- +2.7.4 + diff --git a/buildroot/package/php/0003-configure-disable-the-phar-tool.patch b/buildroot/package/php/0003-configure-disable-the-phar-tool.patch new file mode 100644 index 0000000..e41584e --- /dev/null +++ b/buildroot/package/php/0003-configure-disable-the-phar-tool.patch @@ -0,0 +1,41 @@ +From 5ba6355e489f647c88ca48afbc75965468193181 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 9 Aug 2016 11:51:53 +0200 +Subject: [PATCH] configure: disable the 'phar' tool + +Disable the 'phar' command-line tool build/installation since it requires +php to run and pack up phar itself in phar format. This would require +a host-php instance and really probably nobody needs the phar tool +on the target. + +Signed-off-by: Gustavo Zacarias +[Gustavo: update for autoreconf/configure.in] +Signed-off-by: Adam Duskett +[Aduskett: update for 7.2.2] +--- + configure.ac | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/configure.ac b/configure.ac +index d20af76..7f02f1a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1420,13 +1420,8 @@ CFLAGS="\$(CFLAGS_CLEAN) $standard_libtool_flag" + INLINE_CFLAGS="$INLINE_CFLAGS $standard_libtool_flag" + CXXFLAGS="$CXXFLAGS $standard_libtool_flag \$(PROF_FLAGS)" + +-if test "$PHP_PHAR" != "no" && test "$PHP_CLI" != "no"; then +- pharcmd=pharcmd +- pharcmd_install=install-pharcmd +-else +- pharcmd= +- pharcmd_install= +-fi; ++pharcmd= ++pharcmd_install= + + all_targets="$lcov_target \$(OVERALL_TARGET) \$(PHP_MODULES) \$(PHP_ZEND_EX) \$(PHP_BINARIES) $pharcmd" + install_targets="$install_sapi $install_modules $install_binaries install-build install-headers install-programs $install_pear $pharcmd_install" +-- +2.14.3 + diff --git a/buildroot/package/php/0004-OPcache-flock-mechanism-is-obviously-linux-so-force-.patch b/buildroot/package/php/0004-OPcache-flock-mechanism-is-obviously-linux-so-force-.patch new file mode 100644 index 0000000..9b53036 --- /dev/null +++ b/buildroot/package/php/0004-OPcache-flock-mechanism-is-obviously-linux-so-force-.patch @@ -0,0 +1,58 @@ +From bedbd41ef0a5ce80b83a6f6eaebd7c90f0bc5615 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 9 Aug 2016 11:52:19 +0200 +Subject: [PATCH] OPcache: flock mechanism is obviously linux so force it. + +Signed-off-by: Gustavo Zacarias +--- + ext/opcache/config.m4 | 34 ++-------------------------------- + 1 file changed, 2 insertions(+), 32 deletions(-) + +diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4 +index fbb9b21..ffddc8e 100644 +--- a/ext/opcache/config.m4 ++++ b/ext/opcache/config.m4 +@@ -343,38 +343,8 @@ int main() { + msg=yes,msg=no,msg=no) + AC_MSG_RESULT([$msg]) + +-flock_type=unknown +-AC_MSG_CHECKING("whether flock struct is linux ordered") +-AC_TRY_RUN([ +- #include +- struct flock lock = { 1, 2, 3, 4, 5 }; +- int main() { +- if(lock.l_type == 1 && lock.l_whence == 2 && lock.l_start == 3 && lock.l_len == 4) { +- return 0; +- } +- return 1; +- } +-], [ +- flock_type=linux +- AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type]) +- AC_MSG_RESULT("yes") +-], AC_MSG_RESULT("no") ) +- +-AC_MSG_CHECKING("whether flock struct is BSD ordered") +-AC_TRY_RUN([ +- #include +- struct flock lock = { 1, 2, 3, 4, 5 }; +- int main() { +- if(lock.l_start == 1 && lock.l_len == 2 && lock.l_type == 4 && lock.l_whence == 5) { +- return 0; +- } +- return 1; +- } +-], [ +- flock_type=bsd +- AC_DEFINE([HAVE_FLOCK_BSD], [], [Struct flock is BSD-type]) +- AC_MSG_RESULT("yes") +-], AC_MSG_RESULT("no") ) ++flock_type=linux ++AC_DEFINE([HAVE_FLOCK_LINUX], [], [Struct flock is Linux-type]) + + if test "$flock_type" = "unknown"; then + AC_MSG_ERROR([Don't know how to define struct flock on this system[,] set --enable-opcache=no]) +-- +2.7.4 + diff --git a/buildroot/package/php/0005-ext-fileinfo-config.m4-allow-cache-answer-for-strcas.patch b/buildroot/package/php/0005-ext-fileinfo-config.m4-allow-cache-answer-for-strcas.patch new file mode 100644 index 0000000..257ac70 --- /dev/null +++ b/buildroot/package/php/0005-ext-fileinfo-config.m4-allow-cache-answer-for-strcas.patch @@ -0,0 +1,37 @@ +From a874ba472151c6811018de322a5787d0ca6148c9 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 9 Aug 2016 11:52:51 +0200 +Subject: [PATCH] ext/fileinfo/config.m4: allow cache answer for strcasestr + discovery + +Signed-off-by: Gustavo Zacarias +[aduskett@gmail.com: Update for 7.2.2] +Signed-off-by: Adam Duskett +--- + ext/fileinfo/config.m4 | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/ext/fileinfo/config.m4 b/ext/fileinfo/config.m4 +index 7e98d62..8561962 100644 +--- a/ext/fileinfo/config.m4 ++++ b/ext/fileinfo/config.m4 +@@ -15,6 +15,7 @@ libmagic/readcdf.c libmagic/softmagic.c libmagic/der.c" + + AC_MSG_CHECKING([for strcasestr]) ++ AC_CACHE_VAL(ac_cv_func_strcasestr, + AC_TRY_RUN([ + #include + #include + #include +@@ -46,7 +47,7 @@ int main(void) + AC_MSG_RESULT(no) + AC_MSG_NOTICE(using libmagic strcasestr implementation) + libmagic_sources="$libmagic_sources libmagic/strcasestr.c" +- ]) ++ ])) + + PHP_NEW_EXTENSION(fileinfo, fileinfo.c $libmagic_sources, $ext_shared,,-I@ext_srcdir@/libmagic) + PHP_ADD_BUILD_DIR($ext_builddir/libmagic) +-- +2.7.4 + diff --git a/buildroot/package/php/0006-avoid-bfin-gcc-segfault.patch b/buildroot/package/php/0006-avoid-bfin-gcc-segfault.patch new file mode 100644 index 0000000..7f8cb24 --- /dev/null +++ b/buildroot/package/php/0006-avoid-bfin-gcc-segfault.patch @@ -0,0 +1,17 @@ +Avoid gcc segmentation fault + +Signed-off-by: Waldemar Brodkorb +Signed-off-by: Adam Duskett +[aduskett@gmail.com: Update for 7.2.2] +diff -Nur php-7.0.12.orig/Zend/zend_portability.h php-7.0.12/Zend/zend_portability.h +--- php-7.0.12.orig/Zend/zend_portability.h 2016-10-13 16:04:17.000000000 +0200 ++++ php-7.0.12/Zend/zend_portability.h 2016-11-08 02:49:39.118388999 +0100 +@@ -95,7 +95,7 @@ + + #if defined(ZEND_WIN32) && !defined(__clang__) + # define ZEND_ASSUME(c) __assume(c) +-#elif ((defined(__GNUC__) && ZEND_GCC_VERSION >= 4005) || __has_builtin(__builtin_unreachable)) && PHP_HAVE_BUILTIN_EXPECT ++#elif ((defined(__GNUC__) && ZEND_GCC_VERSION >= 4005) || __has_builtin(__builtin_unreachable)) && PHP_HAVE_BUILTIN_EXPECT && !defined(__bfin__) + # define ZEND_ASSUME(c) do { \ + if (__builtin_expect(!(c), 0)) __builtin_unreachable(); \ + } while (0) diff --git a/buildroot/package/php/0007-Call-apxs-with-correct-prefix.patch b/buildroot/package/php/0007-Call-apxs-with-correct-prefix.patch new file mode 100644 index 0000000..c81711d --- /dev/null +++ b/buildroot/package/php/0007-Call-apxs-with-correct-prefix.patch @@ -0,0 +1,51 @@ +From 4342bdea7a1a21430ce0d051fa4387441166c473 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 11 Dec 2016 23:12:46 +0100 +Subject: [PATCH] Call apxs with correct prefix + +php uses apache's apxs script from staging directory to install libphp +dynamic library and update /etc/apache2/httpd.conf in the staging and target +directories. Here is the full command line: +"apxs -S LIBEXECDIR='$(INSTALL_ROOT)/usr/modules' + -S SYSCONFDIR='$(INSTALL_ROOT)/etc/apache2' -i -a -n php7" +This does not work for target directory as apxs sets the full path of the +library and not the relative one. Indeed, apxs is smart enough to substitute +away the prefix specified in $(STAGING_DIR)/usr/build/config_vars.mk so +httpd.conf will only be correct in the staging directory. +To fix this, add -S PREFIX='$(INSTALL_ROOT)/usr' to apxs call in configure + +Signed-off-by: Fabrice Fontaine +Signed-off-by: Adam Duskett +[aduskett@gmail.com: Update for 7.2.2] +--- + sapi/apache2handler/config.m4 | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/sapi/apache2handler/config.m4 b/sapi/apache2handler/config.m4 +index 2e64b21..f5bf002 100644 +--- a/sapi/apache2handler/config.m4 ++++ b/sapi/apache2handler/config.m4 +@@ -66,10 +66,12 @@ if test "$PHP_APXS2" != "no"; then + AC_MSG_ERROR([Please note that Apache version >= 2.0.44 is required]) + fi + ++ APXS_PREFIX='$(INSTALL_ROOT)'/usr + APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR` + if test -z `$APXS -q SYSCONFDIR`; then + INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \ + $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \ ++ -S PREFIX='$APXS_PREFIX' \ + -i -n php7" + else + APXS_SYSCONFDIR='$(INSTALL_ROOT)'`$APXS -q SYSCONFDIR` +@@ -77,6 +79,7 @@ if test "$PHP_APXS2" != "no"; then + \$(mkinstalldirs) '$APXS_SYSCONFDIR' && \ + $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \ + -S SYSCONFDIR='$APXS_SYSCONFDIR' \ ++ -S PREFIX='$APXS_PREFIX' \ + -i -a -n php7" + fi + +-- +2.5.0 + diff --git a/buildroot/package/php/0008-ext-xml-expat_compat.h-add-missing-php.h-include.patch b/buildroot/package/php/0008-ext-xml-expat_compat.h-add-missing-php.h-include.patch new file mode 100644 index 0000000..daf004d --- /dev/null +++ b/buildroot/package/php/0008-ext-xml-expat_compat.h-add-missing-php.h-include.patch @@ -0,0 +1,71 @@ +From fb1f0e17eed729204a6d5caf590715d6257dceb3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 5 Apr 2018 22:50:00 +0200 +Subject: [PATCH] ext/xml/expat_compat.h: add missing php.h include + +When expat support is disabled and libxml support is enabled, the +following part of the code in expat_compat.h gets used: + +and therefore "php".h" is included. However, when libexpat support is +enabled, HAVE_LIBEXPAT is defined, and therefore the following part of +the code is used: + +In this case, "php.h" is not included. Due to this, zend_alloc.h is +never included when building the ext/xmlrpc/libxmlrpc/xml_element.c +file, and therefore the estrdup -> _estrdup macros are never defined, +causing the following link time failure: + +ext/xmlrpc/libxmlrpc/xml_element.o: In function `xml_element_serialize': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:462: undefined reference to `efree' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `xml_elem_entity_escape': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:347: undefined reference to `emalloc' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `_xmlrpc_charHandler': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:646: undefined reference to `efree' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `xml_elem_free_non_recurse': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:198: undefined reference to `efree' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:199: undefined reference to `efree' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:200: undefined reference to `efree' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:207: undefined reference to `efree' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `xml_elem_new': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:263: undefined reference to `ecalloc' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `_xmlrpc_startElement': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:602: undefined reference to `estrdup' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:607: undefined reference to `emalloc' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:609: undefined reference to `estrdup' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:610: undefined reference to `estrdup' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `xml_elem_free_non_recurse': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:211: undefined reference to `efree' +collect2: error: ld returned 1 exit status +make: *** [Makefile:248: sapi/cgi/php-cgi] Error 1 + +This link time failure can be produced with: + +./configure --prefix=/usr --with-libdir=/usr/lib64 --disable-all \ + --without-pear --with-config-file-path=/etc --disable-phpdbg \ + --disable-cli --enable-cgi --disable-fpm --enable-xmlreader \ + --enable-xmlwriter --enable-libxml --enable-wddx --with-xmlrpc \ + --with-libexpat-dir=/ + +We fix it by including "php.h" in the HAVE_LIBEXPAT case. + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://github.com/php/php-src/pull/3212 +--- + ext/xml/expat_compat.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/ext/xml/expat_compat.h b/ext/xml/expat_compat.h +index ed621ab53d..29fe48a7dd 100644 +--- a/ext/xml/expat_compat.h ++++ b/ext/xml/expat_compat.h +@@ -154,6 +154,7 @@ PHP_XML_API const XML_Char *XML_ExpatVersion(void); + PHP_XML_API void XML_ParserFree(XML_Parser); + + #elif defined(HAVE_LIBEXPAT) ++#include "php.h" + #include + #endif /* HAVE_LIBEXPAT */ + +-- +2.14.3 + diff --git a/buildroot/package/php/Config.ext b/buildroot/package/php/Config.ext new file mode 100644 index 0000000..6b3d869 --- /dev/null +++ b/buildroot/package/php/Config.ext @@ -0,0 +1,384 @@ +menu "Extensions" + +config BR2_PACKAGE_PHP_EXT_CALENDAR + bool "Calendar" + help + Calendar and event support + +config BR2_PACKAGE_PHP_EXT_FILEINFO + bool "Fileinfo" + help + File Information support + +config BR2_PACKAGE_PHP_EXT_OPCACHE + bool "OPcache" + help + Enable the Zend OPcache accelerator. + +comment "Readline needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_PHP_EXT_READLINE + bool "Readline" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + Readline support + +config BR2_PACKAGE_PHP_EXT_SESSION + bool "Session" + default y + help + Session support + +comment "Compression extensions" + +config BR2_PACKAGE_PHP_EXT_BZIP2 + bool "bzip2" + select BR2_PACKAGE_BZIP2 + help + bzip2 read/write support + +config BR2_PACKAGE_PHP_EXT_PHAR + bool "phar" + help + PHP Archive support + +config BR2_PACKAGE_PHP_EXT_ZIP + bool "zip" + select BR2_PACKAGE_ZLIB + help + Zip read/write support + +config BR2_PACKAGE_PHP_EXT_ZLIB + bool "zlib" + default y + select BR2_PACKAGE_ZLIB + help + zlib support + +comment "Cryptography extensions" + +config BR2_PACKAGE_PHP_EXT_HASH + bool "hash" + help + HASH message digest framework + +config BR2_PACKAGE_PHP_EXT_MCRYPT + bool "mcrypt" + select BR2_PACKAGE_LIBMCRYPT + help + mcrypt support + +config BR2_PACKAGE_PHP_EXT_OPENSSL + bool "openssl" + select BR2_PACKAGE_OPENSSL + help + openssl support + +comment "Database extensions" + +config BR2_PACKAGE_PHP_EXT_DBA + bool "DBA" + help + Database Abstraction Layer + +if BR2_PACKAGE_PHP_EXT_DBA + +config BR2_PACKAGE_PHP_EXT_DBA_CDB + bool "cdb" + help + CDB handler + +config BR2_PACKAGE_PHP_EXT_DBA_DB4 + bool "db4/5" + select BR2_PACKAGE_BERKELEYDB + help + BerkeleyDB version 4/5 handler + +config BR2_PACKAGE_PHP_EXT_DBA_FLAT + bool "flat" + default y + help + Flat file handler + +config BR2_PACKAGE_PHP_EXT_DBA_INI + bool "ini" + default y + help + INI file handler + +endif + +config BR2_PACKAGE_PHP_EXT_MYSQLI + bool "Mysqli" + help + MySQL Improved extension support + +config BR2_PACKAGE_PHP_EXT_SQLITE + bool "SQLite3" + select BR2_PACKAGE_SQLITE + help + SQLite3 support + +config BR2_PACKAGE_PHP_EXT_PDO + bool "PDO" + help + PHP Data Objects support + +if BR2_PACKAGE_PHP_EXT_PDO + +config BR2_PACKAGE_PHP_EXT_PDO_MYSQL + bool "MySQL" + help + PDO driver for MySQL + +config BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL + bool "PostgreSQL" + depends on BR2_USE_MMU # postgresql + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_POSTGRESQL + help + PDO driver for PostgreSQL + +comment "PostgreSQL drivers need a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_PHP_EXT_PDO_SQLITE + bool "SQLite3" + select BR2_PACKAGE_SQLITE + help + SQLite3 driver for PDO + +config BR2_PACKAGE_PHP_EXT_PDO_UNIXODBC + bool "unixODBC" + select BR2_PACKAGE_UNIXODBC + help + unixODBC driver for PDO + +endif + +comment "Human language and character encoding support" + +config BR2_PACKAGE_PHP_EXT_GETTEXT + bool "Gettext" + depends on BR2_SYSTEM_ENABLE_NLS + help + Gettext support + +comment "Gettext support needs NLS enabled" + depends on !BR2_SYSTEM_ENABLE_NLS + +config BR2_PACKAGE_PHP_EXT_ICONV + bool "iconv" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + iconv character set conversion support + +config BR2_PACKAGE_PHP_EXT_INTL + bool "intl" + depends on BR2_HOST_GCC_AT_LEAST_4_8 # icu + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # icu + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_TOOLCHAIN_HAS_THREADS # icu + select BR2_PACKAGE_ICU + help + Internationalization support + +comment "intl support needs a toolchain w/ C++, wchar, threads, gcc >= 4.8, host gcc >= 4.8" + depends on !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_HOST_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_PHP_EXT_MBSTRING + bool "mbstring" + help + multibyte string support + +comment "Image processing" + +config BR2_PACKAGE_PHP_EXT_EXIF + bool "EXIF" + help + EXIF support + +config BR2_PACKAGE_PHP_EXT_GD + bool "GD" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBPNG + help + GD support + +comment "Mathematical extensions" + +config BR2_PACKAGE_PHP_EXT_BCMATH + bool "BC math" + help + BCMath arbitrary precision mathematics support + +config BR2_PACKAGE_PHP_EXT_GMP + bool "GMP" + select BR2_PACKAGE_GMP + help + GNU Multiple Precision support + +comment "Other basic extensions" + +config BR2_PACKAGE_PHP_EXT_JSON + bool "JSON" + help + JavaScript Object Serialization support + +config BR2_PACKAGE_PHP_EXT_TOKENIZER + bool "Tokenizer" + help + Tokenizer functions support + +comment "Other services" + +config BR2_PACKAGE_PHP_EXT_CURL + bool "cURL" + select BR2_PACKAGE_LIBCURL + help + cURL for URL streams + +config BR2_PACKAGE_PHP_EXT_FTP + bool "FTP" + help + FTP support + +config BR2_PACKAGE_PHP_EXT_SNMP + bool "SNMP" + depends on BR2_USE_MMU # netsnmp fork() + select BR2_PACKAGE_NETSNMP + select BR2_PACKAGE_NETSNMP_ENABLE_MIBS + help + SNMP support + +config BR2_PACKAGE_PHP_EXT_SOCKETS + bool "sockets" + help + Sockets support + +comment "Process Control" + +config BR2_PACKAGE_PHP_EXT_PCNTL + bool "PCNTL" + depends on BR2_USE_MMU # fork() + help + Process control support + +config BR2_PACKAGE_PHP_EXT_POSIX + bool "Posix" + default y + help + POSIX.1 (IEEE 1003.1) function support + +config BR2_PACKAGE_PHP_EXT_SHMOP + bool "shmop" + help + Shared memory support + +config BR2_PACKAGE_PHP_EXT_SYSVMSG + bool "sysvmsg" + help + System V message queue support + +config BR2_PACKAGE_PHP_EXT_SYSVSEM + bool "sysvsem" + help + System V semaphore support + +config BR2_PACKAGE_PHP_EXT_SYSVSHM + bool "sysvshm" + help + System V shared memory support + +comment "Variable and Type related" + +config BR2_PACKAGE_PHP_EXT_CTYPE + bool "Ctype" + help + Character type checking support + +config BR2_PACKAGE_PHP_EXT_FILTER + bool "Filter" + help + Input filter support + +comment "Web services" + +config BR2_PACKAGE_PHP_EXT_SOAP + bool "SOAP" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + SOAP support + +config BR2_PACKAGE_PHP_EXT_XMLRPC + bool "XML-RPC" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + XML-RPC support + +comment "XML manipulation" + +config BR2_PACKAGE_PHP_EXT_DOM + bool "DOM" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + Document Object Model support + +config BR2_PACKAGE_PHP_EXT_LIBXML2 + bool "libxml" + select BR2_PACKAGE_LIBXML2 + help + libxml2 support + +config BR2_PACKAGE_PHP_EXT_SIMPLEXML + bool "SimpleXML" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + SimpleXML support + +config BR2_PACKAGE_PHP_EXT_WDDX + bool "WDDX" + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + WDDX support + +config BR2_PACKAGE_PHP_EXT_XML + bool "XML Parser" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + XML Parser support + +config BR2_PACKAGE_PHP_EXT_XMLREADER + bool "XMLReader" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + XMLReader support + +config BR2_PACKAGE_PHP_EXT_XMLWRITER + bool "XMLWriter" + select BR2_PACKAGE_PHP_EXT_LIBXML2 + help + XMLWriter support + +config BR2_PACKAGE_PHP_EXT_XSL + bool "XSL" + select BR2_PACKAGE_PHP_EXT_DOM + select BR2_PACKAGE_PHP_EXT_LIBXML2 + select BR2_PACKAGE_LIBXSLT + help + XSL transformation support + +endmenu diff --git a/buildroot/package/php/Config.in b/buildroot/package/php/Config.in new file mode 100644 index 0000000..11514e0 --- /dev/null +++ b/buildroot/package/php/Config.in @@ -0,0 +1,50 @@ +config BR2_PACKAGE_PHP + bool "php" + select BR2_PACKAGE_PHP_SAPI_CGI if \ + !BR2_PACKAGE_PHP_SAPI_APACHE && \ + !BR2_PACKAGE_PHP_SAPI_CLI && \ + !BR2_PACKAGE_PHP_SAPI_FPM && \ + BR2_USE_MMU + select BR2_PACKAGE_PHP_SAPI_CLI if !BR2_USE_MMU + # PHP uses -export-dynamic, which breaks with elf2flt with a + # message like "ld.real: section .junk LMA [...,...] overlaps + # section .text LMA [...,...]" + depends on !BR2_BINFMT_FLAT + help + PHP is a widely-used general-purpose scripting + language that is especially suited for Web development + and can be embedded into HTML. + + http://www.php.net + +if BR2_PACKAGE_PHP + +config BR2_PACKAGE_PHP_SAPI_APACHE + bool "Apache interface" + depends on BR2_PACKAGE_APACHE + help + Apache module + +config BR2_PACKAGE_PHP_SAPI_CGI + bool "CGI interface" + # CGI uses fork() + depends on BR2_USE_MMU + help + Common Gateway Interface + +config BR2_PACKAGE_PHP_SAPI_CLI + bool "CLI interface" + help + Command Line Interface + +config BR2_PACKAGE_PHP_SAPI_FPM + bool "FPM interface" + depends on BR2_USE_MMU + # "Sparc v8 and predecessors are not and will not be supported" + depends on !BR2_sparc + help + PHP-FPM (FastCGI Process Manager) + +source "package/php/Config.ext" + +endif diff --git a/buildroot/package/php/php-fpm.conf b/buildroot/package/php/php-fpm.conf new file mode 100644 index 0000000..88014b8 --- /dev/null +++ b/buildroot/package/php/php-fpm.conf @@ -0,0 +1,11 @@ +[www] +pm = ondemand +pm.process_idle_timeout = 120s +pm.max_children = 5 + +listen = /var/run/php-fpm.sock +listen.owner = www-data +listen.group = www-data +user = www-data +group = www-data + diff --git a/buildroot/package/php/php.hash b/buildroot/package/php/php.hash new file mode 100644 index 0000000..4ddef44 --- /dev/null +++ b/buildroot/package/php/php.hash @@ -0,0 +1,5 @@ +# From http://php.net/downloads.php +sha256 af70a33b3f7a51510467199b39af151333fbbe4cc21923bad9c7cf64268cddb2 php-7.2.5.tar.xz + +# License file +sha256 00e567a8d50359d93ee1f9afdd9511277660c1e70a0cbf3229f84403aa9aebb1 LICENSE diff --git a/buildroot/package/php/php.mk b/buildroot/package/php/php.mk new file mode 100644 index 0000000..4c3a871 --- /dev/null +++ b/buildroot/package/php/php.mk @@ -0,0 +1,353 @@ +################################################################################ +# +# php +# +################################################################################ + +PHP_VERSION = 7.2.5 +PHP_SITE = http://www.php.net/distributions +PHP_SOURCE = php-$(PHP_VERSION).tar.xz +PHP_INSTALL_STAGING = YES +PHP_INSTALL_STAGING_OPTS = INSTALL_ROOT=$(STAGING_DIR) install +PHP_INSTALL_TARGET_OPTS = INSTALL_ROOT=$(TARGET_DIR) install +PHP_DEPENDENCIES = host-pkgconf +PHP_LICENSE = PHP-3.01 +PHP_LICENSE_FILES = LICENSE +PHP_CONF_OPTS = \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --disable-all \ + --without-pear \ + --with-config-file-path=/etc \ + --disable-phpdbg \ + --disable-rpath +PHP_CONF_ENV = \ + ac_cv_func_strcasestr=yes \ + EXTRA_LIBS="$(PHP_EXTRA_LIBS)" + +ifeq ($(BR2_STATIC_LIBS),y) +PHP_CONF_ENV += LIBS="$(PHP_STATIC_LIBS)" +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +PHP_STATIC_LIBS += -lpthread +endif + +ifeq ($(call qstrip,$(BR2_TARGET_LOCALTIME)),) +PHP_LOCALTIME = UTC +else +# Not q-stripping this value, as we need quotes in the php.ini file +PHP_LOCALTIME = $(BR2_TARGET_LOCALTIME) +endif + +# PHP can't be AUTORECONFed the standard way unfortunately +PHP_DEPENDENCIES += host-autoconf host-automake host-libtool +define PHP_BUILDCONF + cd $(@D) ; $(TARGET_MAKE_ENV) ./buildconf --force +endef +PHP_PRE_CONFIGURE_HOOKS += PHP_BUILDCONF + +ifeq ($(BR2_ENDIAN),"BIG") +PHP_CONF_ENV += ac_cv_c_bigendian_php=yes +else +PHP_CONF_ENV += ac_cv_c_bigendian_php=no +endif +PHP_CONFIG_SCRIPTS = php-config + +PHP_CFLAGS = $(TARGET_CFLAGS) +PHP_CXXFLAGS = $(TARGET_CXXFLAGS) + +# The OPcache extension isn't cross-compile friendly +# Throw some defines here to avoid patching heavily +ifeq ($(BR2_PACKAGE_PHP_EXT_OPCACHE),y) +PHP_CONF_OPTS += --enable-opcache +PHP_CONF_ENV += ac_cv_func_mprotect=yes +PHP_CFLAGS += \ + -DHAVE_SHM_IPC \ + -DHAVE_SHM_MMAP_ANON \ + -DHAVE_SHM_MMAP_ZERO \ + -DHAVE_SHM_MMAP_POSIX \ + -DHAVE_SHM_MMAP_FILE +endif + +# We need to force dl "detection" +ifeq ($(BR2_STATIC_LIBS),) +PHP_CONF_ENV += ac_cv_func_dlopen=yes ac_cv_lib_dl_dlopen=yes +PHP_EXTRA_LIBS += -ldl +else +PHP_CONF_ENV += ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=no +endif + +PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_SAPI_CLI),--enable-cli,--disable-cli) +PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_SAPI_CGI),--enable-cgi,--disable-cgi) +PHP_CONF_OPTS += $(if $(BR2_PACKAGE_PHP_SAPI_FPM),--enable-fpm,--disable-fpm) + +ifeq ($(BR2_PACKAGE_PHP_SAPI_APACHE),y) +PHP_DEPENDENCIES += apache +PHP_CONF_OPTS += --with-apxs2=$(STAGING_DIR)/usr/bin/apxs + +# Enable thread safety option if Apache MPM is event or worker +ifeq ($(BR2_PACKAGE_APACHE_MPM_EVENT)$(BR2_PACKAGE_APACHE_MPM_WORKER),y) +PHP_CONF_OPTS += --enable-maintainer-zts +endif +endif + +### Extensions +PHP_CONF_OPTS += \ + $(if $(BR2_PACKAGE_PHP_EXT_SOCKETS),--enable-sockets) \ + $(if $(BR2_PACKAGE_PHP_EXT_POSIX),--enable-posix) \ + $(if $(BR2_PACKAGE_PHP_EXT_SESSION),--enable-session) \ + $(if $(BR2_PACKAGE_PHP_EXT_HASH),--enable-hash) \ + $(if $(BR2_PACKAGE_PHP_EXT_DOM),--enable-dom) \ + $(if $(BR2_PACKAGE_PHP_EXT_SIMPLEXML),--enable-simplexml) \ + $(if $(BR2_PACKAGE_PHP_EXT_SOAP),--enable-soap) \ + $(if $(BR2_PACKAGE_PHP_EXT_XML),--enable-xml) \ + $(if $(BR2_PACKAGE_PHP_EXT_XMLREADER),--enable-xmlreader) \ + $(if $(BR2_PACKAGE_PHP_EXT_XMLWRITER),--enable-xmlwriter) \ + $(if $(BR2_PACKAGE_PHP_EXT_EXIF),--enable-exif) \ + $(if $(BR2_PACKAGE_PHP_EXT_FTP),--enable-ftp) \ + $(if $(BR2_PACKAGE_PHP_EXT_JSON),--enable-json) \ + $(if $(BR2_PACKAGE_PHP_EXT_TOKENIZER),--enable-tokenizer) \ + $(if $(BR2_PACKAGE_PHP_EXT_PCNTL),--enable-pcntl) \ + $(if $(BR2_PACKAGE_PHP_EXT_SHMOP),--enable-shmop) \ + $(if $(BR2_PACKAGE_PHP_EXT_SYSVMSG),--enable-sysvmsg) \ + $(if $(BR2_PACKAGE_PHP_EXT_SYSVSEM),--enable-sysvsem) \ + $(if $(BR2_PACKAGE_PHP_EXT_SYSVSHM),--enable-sysvshm) \ + $(if $(BR2_PACKAGE_PHP_EXT_ZIP),--enable-zip) \ + $(if $(BR2_PACKAGE_PHP_EXT_CTYPE),--enable-ctype) \ + $(if $(BR2_PACKAGE_PHP_EXT_FILTER),--enable-filter) \ + $(if $(BR2_PACKAGE_PHP_EXT_CALENDAR),--enable-calendar) \ + $(if $(BR2_PACKAGE_PHP_EXT_FILEINFO),--enable-fileinfo) \ + $(if $(BR2_PACKAGE_PHP_EXT_BCMATH),--enable-bcmath) \ + $(if $(BR2_PACKAGE_PHP_EXT_MBSTRING),--enable-mbstring) \ + $(if $(BR2_PACKAGE_PHP_EXT_PHAR),--enable-phar) + +ifeq ($(BR2_PACKAGE_PHP_EXT_MCRYPT),y) +PHP_CONF_OPTS += --with-mcrypt=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += libmcrypt +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_OPENSSL),y) +PHP_CONF_OPTS += --with-openssl=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += openssl +# openssl needs zlib, but the configure script forgets to link against +# it causing detection failures with static linking +PHP_STATIC_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl` +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_LIBXML2),y) +PHP_CONF_ENV += php_cv_libxml_build_works=yes +PHP_CONF_OPTS += --enable-libxml --with-libxml-dir=${STAGING_DIR}/usr +PHP_DEPENDENCIES += libxml2 +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_WDDX),y) +PHP_CONF_OPTS += --enable-wddx --with-libexpat-dir=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += expat +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_XMLRPC),y) +PHP_CONF_OPTS += \ + --with-xmlrpc \ + $(if $(BR2_PACKAGE_LIBICONV),--with-iconv-dir=$(STAGING_DIR)/usr) +PHP_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv) +endif + +ifneq ($(BR2_PACKAGE_PHP_EXT_ZLIB)$(BR2_PACKAGE_PHP_EXT_ZIP),) +PHP_CONF_OPTS += --with-zlib=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += zlib +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_GETTEXT),y) +PHP_CONF_OPTS += --with-gettext=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += $(TARGET_NLS_DEPENDENCIES) +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_ICONV),y) +ifeq ($(BR2_PACKAGE_LIBICONV),y) +PHP_CONF_OPTS += --with-iconv=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += libiconv +else +PHP_CONF_OPTS += --with-iconv +endif +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_INTL),y) +PHP_CONF_OPTS += --enable-intl --with-icu-dir=$(STAGING_DIR)/usr +PHP_CXXFLAGS += "`$(STAGING_DIR)/usr/bin/icu-config --cxxflags`" +PHP_DEPENDENCIES += icu +# The intl module is implemented in C++, but PHP fails to use +# g++ as the compiler for the final link. As a workaround, +# tell it to link libstdc++. +PHP_EXTRA_LIBS += -lstdc++ +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_GMP),y) +PHP_CONF_OPTS += --with-gmp=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += gmp +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_READLINE),y) +PHP_CONF_OPTS += --with-readline=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += readline +endif + +### Native SQL extensions +ifeq ($(BR2_PACKAGE_PHP_EXT_MYSQLI),y) +PHP_CONF_OPTS += --with-mysqli +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_SQLITE),y) +PHP_CONF_OPTS += --with-sqlite3=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += sqlite +PHP_STATIC_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs sqlite3` +endif + +### PDO +ifeq ($(BR2_PACKAGE_PHP_EXT_PDO),y) +PHP_CONF_OPTS += --enable-pdo +ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_SQLITE),y) +PHP_CONF_OPTS += --with-pdo-sqlite=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += sqlite +PHP_CFLAGS += -DSQLITE_OMIT_LOAD_EXTENSION +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),y) +PHP_CONF_OPTS += --with-pdo-mysql +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_POSTGRESQL),y) +PHP_CONF_OPTS += --with-pdo-pgsql=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += postgresql +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_PDO_UNIXODBC),y) +PHP_CONF_OPTS += --with-pdo-odbc=unixODBC,$(STAGING_DIR)/usr +PHP_DEPENDENCIES += unixodbc +endif +endif + +ifneq ($(BR2_PACKAGE_PHP_EXT_MYSQLI)$(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),) +# Set default MySQL unix socket to what the MySQL server is using by default +PHP_CONF_OPTS += --with-mysql-sock=$(MYSQL_SOCKET) +endif + +define PHP_DISABLE_VALGRIND + $(SED) '/^#define HAVE_VALGRIND/d' $(@D)/main/php_config.h +endef +PHP_POST_CONFIGURE_HOOKS += PHP_DISABLE_VALGRIND + +### Use external PCRE if it's available +ifeq ($(BR2_PACKAGE_PCRE),y) +PHP_CONF_OPTS += --with-pcre-regex=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += pcre +else +# The bundled pcre library is not configurable through ./configure options, +# and by default is configured to be thread-safe, so it wants pthreads. So +# we must explicitly tell it when we don't have threads. +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +PHP_CFLAGS += -DSLJIT_SINGLE_THREADED=1 +endif +# check ext/pcre/pcrelib/sljit/sljitConfigInternal.h for supported archs +ifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_arm)$(BR2_armeb)$(BR2_aarch64)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_powerpc)$(BR2_sparc),y) +PHP_CONF_OPTS += --with-pcre-jit +else +PHP_CONF_OPTS += --without-pcre-jit +endif +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_CURL),y) +PHP_CONF_OPTS += --with-curl=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += libcurl +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_XSL),y) +PHP_CONF_OPTS += --with-xsl=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += libxslt +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_BZIP2),y) +PHP_CONF_OPTS += --with-bz2=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += bzip2 +endif + +### DBA +ifeq ($(BR2_PACKAGE_PHP_EXT_DBA),y) +PHP_CONF_OPTS += --enable-dba +ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_CDB),y) +PHP_CONF_OPTS += --without-cdb +endif +ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_FLAT),y) +PHP_CONF_OPTS += --without-flatfile +endif +ifneq ($(BR2_PACKAGE_PHP_EXT_DBA_INI),y) +PHP_CONF_OPTS += --without-inifile +endif +ifeq ($(BR2_PACKAGE_PHP_EXT_DBA_DB4),y) +PHP_CONF_OPTS += --with-db4=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += berkeleydb +endif +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_SNMP),y) +PHP_CONF_OPTS += --with-snmp=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += netsnmp +endif + +ifeq ($(BR2_PACKAGE_PHP_EXT_GD),y) +PHP_CONF_OPTS += \ + --with-gd \ + --with-jpeg-dir=$(STAGING_DIR)/usr \ + --with-png-dir=$(STAGING_DIR)/usr \ + --with-zlib-dir=$(STAGING_DIR)/usr \ + --with-freetype-dir=$(STAGING_DIR)/usr +PHP_DEPENDENCIES += jpeg libpng freetype +endif + +ifeq ($(BR2_PACKAGE_PHP_SAPI_FPM),y) +define PHP_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(@D)/sapi/fpm/init.d.php-fpm \ + $(TARGET_DIR)/etc/init.d/S49php-fpm +endef + +define PHP_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/sapi/fpm/php-fpm.service \ + $(TARGET_DIR)/usr/lib/systemd/system/php-fpm.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/php-fpm.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/php-fpm.service +endef + +define PHP_INSTALL_FPM_CONF + $(INSTALL) -D -m 0644 package/php/php-fpm.conf \ + $(TARGET_DIR)/etc/php-fpm.conf + rm -f $(TARGET_DIR)/etc/php-fpm.conf.default + # remove unused sample status page /usr/php/php/fpm/status.html + rm -rf $(TARGET_DIR)/usr/php +endef + +PHP_POST_INSTALL_TARGET_HOOKS += PHP_INSTALL_FPM_CONF +endif + +define PHP_EXTENSIONS_FIXUP + $(SED) "/prefix/ s:/usr:$(STAGING_DIR)/usr:" \ + $(STAGING_DIR)/usr/bin/phpize + $(SED) "/extension_dir/ s:/usr:$(TARGET_DIR)/usr:" \ + $(STAGING_DIR)/usr/bin/php-config +endef + +PHP_POST_INSTALL_TARGET_HOOKS += PHP_EXTENSIONS_FIXUP + +define PHP_INSTALL_FIXUP + rm -rf $(TARGET_DIR)/usr/lib/php/build + rm -f $(TARGET_DIR)/usr/bin/phpize + $(INSTALL) -D -m 0755 $(PHP_DIR)/php.ini-production \ + $(TARGET_DIR)/etc/php.ini + $(SED) 's%;date.timezone =.*%date.timezone = $(PHP_LOCALTIME)%' \ + $(TARGET_DIR)/etc/php.ini + $(if $(BR2_PACKAGE_PHP_EXT_OPCACHE), + $(SED) '/;extension=php_xsl.dll/azend_extension=opcache.so' \ + $(TARGET_DIR)/etc/php.ini) +endef + +PHP_POST_INSTALL_TARGET_HOOKS += PHP_INSTALL_FIXUP + +PHP_CONF_ENV += CFLAGS="$(PHP_CFLAGS)" CXXFLAGS="$(PHP_CXXFLAGS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/physfs/Config.in b/buildroot/package/physfs/Config.in new file mode 100644 index 0000000..c272d88 --- /dev/null +++ b/buildroot/package/physfs/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PHYSFS + bool "physfs" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + PhysicsFS; a portable, flexible file i/o abstraction. + + http://icculus.org/physfs + +comment "physfs needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/physfs/physfs.hash b/buildroot/package/physfs/physfs.hash new file mode 100644 index 0000000..3d97fe0 --- /dev/null +++ b/buildroot/package/physfs/physfs.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 b77b9f853168d9636a44f75fca372b363106f52d789d18a2f776397bf117f2f1 physfs-3.0.1.tar.bz2 +sha256 7ce475991f6cc09958ef0d57312522eba78e36d984307c95f9a3965adf7e4e2b LICENSE.txt diff --git a/buildroot/package/physfs/physfs.mk b/buildroot/package/physfs/physfs.mk new file mode 100644 index 0000000..78176be --- /dev/null +++ b/buildroot/package/physfs/physfs.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# physfs +# +################################################################################ + +PHYSFS_VERSION = 3.0.1 +PHYSFS_SOURCE = physfs-$(PHYSFS_VERSION).tar.bz2 +PHYSFS_SITE = https://icculus.org/physfs/downloads + +PHYSFS_LICENSE = Zlib +PHYSFS_LICENSE_FILES = LICENSE.txt + +PHYSFS_INSTALL_STAGING = YES + +PHYSFS_CONF_OPTS = -DPHYSFS_BUILD_TEST=OFF + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_SHARED=ON +else +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_SHARED=OFF +endif + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_STATIC=ON +else +PHYSFS_CONF_OPTS += -DPHYSFS_BUILD_STATIC=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/phytool/Config.in b/buildroot/package/phytool/Config.in new file mode 100644 index 0000000..985468f --- /dev/null +++ b/buildroot/package/phytool/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PHYTOOL + bool "phytool" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 # linux/mdio.h + help + Linux MDIO register access utility. + + https://github.com/wkz/phytool + +comment "phytool needs a toolchain w/ headers >= 3.7" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 diff --git a/buildroot/package/phytool/phytool.hash b/buildroot/package/phytool/phytool.hash new file mode 100644 index 0000000..ce04936 --- /dev/null +++ b/buildroot/package/phytool/phytool.hash @@ -0,0 +1,4 @@ +# md5 from https://github.com/wkz/phytool/releases/download/v2/phytool-2.tar.xz.md5 +# sha256 locally computed: +md5 972982f8e5f7237cbccfc6d275da7348 phytool-2.tar.xz +sha256 9901a14e8c6af02b7333c60b21ff81f50620e8326d54827185e5617ff9b11d21 phytool-2.tar.xz diff --git a/buildroot/package/phytool/phytool.mk b/buildroot/package/phytool/phytool.mk new file mode 100644 index 0000000..3de6666 --- /dev/null +++ b/buildroot/package/phytool/phytool.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# phytool +# +################################################################################ + +PHYTOOL_VERSION = 2 +PHYTOOL_SOURCE = phytool-$(PHYTOOL_VERSION).tar.xz +PHYTOOL_SITE = https://github.com/wkz/phytool/releases/download/v$(PHYTOOL_VERSION) +PHYTOOL_LICENSE = GPL-2.0+ +PHYTOOL_LICENSE_FILES = LICENSE + +define PHYTOOL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + LDLIBS="$(TARGET_LDFLAGS)" +endef + +define PHYTOOL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + DESTDIR="$(TARGET_DIR)" \ + PREFIX="usr" install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/picocom/Config.in b/buildroot/package/picocom/Config.in new file mode 100644 index 0000000..9f8efc4 --- /dev/null +++ b/buildroot/package/picocom/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PICOCOM + bool "picocom" + depends on BR2_USE_MMU # fork() + help + picocom is a minimal dumb-terminal emulation program. It is, + in principle, very much like minicom, only it's pico instead + of mini! + + https://github.com/npat-efault/picocom/ diff --git a/buildroot/package/picocom/picocom.hash b/buildroot/package/picocom/picocom.hash new file mode 100644 index 0000000..f155830 --- /dev/null +++ b/buildroot/package/picocom/picocom.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a539db95bde3a5ebd52ae58a21f40d00cc2c97bf14b1f50caffc07257989112e picocom-3.0.tar.gz +sha256 9273c6b2c55be95f0f0df292d87e8900e5bfdf5b510a6ea09e80306cf45c10f6 LICENSE.txt diff --git a/buildroot/package/picocom/picocom.mk b/buildroot/package/picocom/picocom.mk new file mode 100644 index 0000000..0fa60f9 --- /dev/null +++ b/buildroot/package/picocom/picocom.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# picocom +# +################################################################################ + +PICOCOM_VERSION = 3.0 +PICOCOM_SITE = $(call github,npat-efault,picocom,$(PICOCOM_VERSION)) +PICOCOM_LICENSE = GPL-2.0+ +PICOCOM_LICENSE_FILES = LICENSE.txt + +define PICOCOM_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define PICOCOM_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/picocom $(TARGET_DIR)/usr/bin/picocom +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/pifmrds/0001-Makefile-cross-compile-friendly.patch b/buildroot/package/pifmrds/0001-Makefile-cross-compile-friendly.patch new file mode 100644 index 0000000..414d97c --- /dev/null +++ b/buildroot/package/pifmrds/0001-Makefile-cross-compile-friendly.patch @@ -0,0 +1,37 @@ +Makefile: make it cross-compile (and Buildroot) friendly. + +The current Makefile makes heavy assumptions that it is doing native +compilation on the RPi, as it checks that `uname -m` is an ARM machine. + +This is wrong in the cross-compilation case. + +Remove the conditional altogether, and do not override the CFLAGS +as passed in the environment (Buildroot passes proper CFLAGS). + +[intial patch by: Eric Limpens ] +Signed-off-by: "Yann E. MORIN" + +diff -durN pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile +--- pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile 2014-05-04 18:21:40.000000000 +0200 ++++ pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile 2014-06-21 16:38:31.971804343 +0200 +@@ -1,20 +1,8 @@ + CC = gcc +-STD_CFLAGS = -Wall -std=gnu99 -c -g -O3 + +-# Enable ARM-specific options only on ARM, and compilation of the app only on ARM +-UNAME := $(shell uname -m) +- +-ifeq ($(UNAME), armv6l) +- CFLAGS = $(STD_CFLAGS) -march=armv6 -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp -ffast-math +- + app: rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o + $(CC) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile + +-else +- CFLAGS = $(STD_CFLAGS) +-endif +- +- + rds_wav: rds.o waveforms.o rds_wav.o fm_mpx.o + $(CC) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile + diff --git a/buildroot/package/pifmrds/0002-Makefile-use-LDFLAGS.patch b/buildroot/package/pifmrds/0002-Makefile-use-LDFLAGS.patch new file mode 100644 index 0000000..54c1427 --- /dev/null +++ b/buildroot/package/pifmrds/0002-Makefile-use-LDFLAGS.patch @@ -0,0 +1,20 @@ +Makefile: use LDFLAGS when linking + +Signed-off-by: "Yann E. MORIN" + +diff -durN pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile +--- pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1.orig/src/Makefile 2014-06-21 16:46:49.101118754 +0200 ++++ pifmrds-c67306ea9b8d827f45e0d90279d367e97119bcb1/src/Makefile 2014-06-21 16:47:47.801745683 +0200 +@@ -1,10 +1,10 @@ + CC = gcc + + app: rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o +- $(CC) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile ++ $(CC) $(LDFLAGS) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile + + rds_wav: rds.o waveforms.o rds_wav.o fm_mpx.o +- $(CC) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile ++ $(CC) $(LDFLAGS) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile + + rds.o: rds.c waveforms.h + $(CC) $(CFLAGS) rds.c diff --git a/buildroot/package/pifmrds/0003-Makefile-fix-static-link.patch b/buildroot/package/pifmrds/0003-Makefile-fix-static-link.patch new file mode 100644 index 0000000..ecd7c4f --- /dev/null +++ b/buildroot/package/pifmrds/0003-Makefile-fix-static-link.patch @@ -0,0 +1,23 @@ +Makefile: Fix static linking + +Since libsndfile uses funtions from libm, the -lm should be specified +after libsndfile for static linking. + +Signed-off-by: "Eric Limpens" + +diff -purN pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2.orig/src/Makefile pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2/src/Makefile +--- pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2.orig/src/Makefile 2016-02-26 08:06:43.102962592 +0100 ++++ pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2/src/Makefile 2016-02-26 08:27:11.069148203 +0100 +@@ -1,10 +1,10 @@ + CC = gcc + + app: rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o +- $(CC) $(LDFLAGS) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lm -lsndfile ++ $(CC) $(LDFLAGS) -o pi_fm_rds rds.o waveforms.o pi_fm_rds.o fm_mpx.o control_pipe.o -lsndfile -lm + + rds_wav: rds.o waveforms.o rds_wav.o fm_mpx.o +- $(CC) $(LDFLAGS) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lm -lsndfile ++ $(CC) $(LDFLAGS) -o rds_wav rds_wav.o rds.o waveforms.o fm_mpx.o -lsndfile -lm + + rds.o: rds.c waveforms.h + $(CC) $(CFLAGS) rds.c diff --git a/buildroot/package/pifmrds/Config.in b/buildroot/package/pifmrds/Config.in new file mode 100644 index 0000000..6d49268 --- /dev/null +++ b/buildroot/package/pifmrds/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PIFMRDS + bool "pifmrds" + depends on BR2_arm + select BR2_PACKAGE_LIBSNDFILE + help + pifmrds, FM-RDS transmitter using the Raspberry Pi's PWM + + https://github.com/ChristopheJacquet/PiFmRds diff --git a/buildroot/package/pifmrds/pifmrds.hash b/buildroot/package/pifmrds/pifmrds.hash new file mode 100644 index 0000000..0c91d3d --- /dev/null +++ b/buildroot/package/pifmrds/pifmrds.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2afc9f3c9fc206ba32865d7dd77f3a97d7d86dcfc9b44eeb5665e8fddaafcf44 pifmrds-0bf57f9ce0d954365a38d8af8e7be6f28521c3f2.tar.gz diff --git a/buildroot/package/pifmrds/pifmrds.mk b/buildroot/package/pifmrds/pifmrds.mk new file mode 100644 index 0000000..509ec80 --- /dev/null +++ b/buildroot/package/pifmrds/pifmrds.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# pifmrds +# +################################################################################ + +PIFMRDS_VERSION = 0bf57f9ce0d954365a38d8af8e7be6f28521c3f2 +PIFMRDS_SITE = $(call github,ChristopheJacquet,PiFmRds,$(PIFMRDS_VERSION)) +PIFMRDS_DEPENDENCIES = libsndfile +PIFMRDS_LICENSE = GPL-3.0+ +PIFMRDS_LICENSE_FILES = LICENSE + +define PIFMRDS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src CC="$(TARGET_CC)" LDFLAGS="$(TARGET_LDFLAGS)" \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu99 -ffast-math -c" \ + app rds_wav +endef + +define PIFMRDS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/pi_fm_rds $(TARGET_DIR)/usr/bin/pi_fm_rds + $(INSTALL) -D -m 0755 $(@D)/src/rds_wav $(TARGET_DIR)/usr/bin/rds_wav +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/pimd/Config.in b/buildroot/package/pimd/Config.in new file mode 100644 index 0000000..d6a579b --- /dev/null +++ b/buildroot/package/pimd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PIMD + bool "pimd" + depends on BR2_USE_MMU # fork() + help + pimd is a lightweight stand-alone PIM-SM v2 multicast routing + daemon. + + http://troglobit.com/project/pimd/ diff --git a/buildroot/package/pimd/pimd.hash b/buildroot/package/pimd/pimd.hash new file mode 100644 index 0000000..98c717d --- /dev/null +++ b/buildroot/package/pimd/pimd.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 c77a9812751f114490a28a6839b16aac8b020c8d9fd6aa22bf3880c054e19f1d pimd-2.3.2.tar.gz + +# Hash for license files: +sha256 3379436c16caccdef9b40a49fbdfdbb45aad8ecb05870834490b8fb080126009 LICENSE +sha256 4328a21f0822caa9976356623118bcdcc9970c7a0f9a3deeba23c779b7cfb5d1 LICENSE.mrouted diff --git a/buildroot/package/pimd/pimd.mk b/buildroot/package/pimd/pimd.mk new file mode 100644 index 0000000..7a12f8f --- /dev/null +++ b/buildroot/package/pimd/pimd.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# pimd +# +################################################################################ + +PIMD_VERSION = 2.3.2 +PIMD_SITE = https://github.com/troglobit/pimd/releases/download/$(PIMD_VERSION) + +PIMD_LICENSE = BSD-3-Clause +PIMD_LICENSE_FILES = LICENSE LICENSE.mrouted + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC)$(BR2_TOOLCHAIN_USES_MUSL),y) +PIMD_CONF_OPTS += --embedded-libc +endif + +# The configure script is not autoconf based, so we use the +# generic-package infrastructure +define PIMD_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure $(PIMD_CONF_OPTS) \ + ) +endef + +define PIMD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CROSS=$(TARGET_CROSS) \ + CC=$(TARGET_CC) -C $(@D) +endef + +define PIMD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) \ + prefix=/usr -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/pinentry/Config.in b/buildroot/package/pinentry/Config.in new file mode 100644 index 0000000..5f2cb58 --- /dev/null +++ b/buildroot/package/pinentry/Config.in @@ -0,0 +1,78 @@ +menuconfig BR2_PACKAGE_PINENTRY + bool "pinentry" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error + depends on BR2_USE_MMU # libassuan + select BR2_PACKAGE_LIBASSUAN + select BR2_PACKAGE_LIBGPG_ERROR + # At least one backend is needed to avoid build breakage + select BR2_PACKAGE_PINENTRY_NCURSES if \ + !BR2_PACKAGE_PINENTRY_GTK2 && \ + !BR2_PACKAGE_PINENTRY_QT4 && \ + !BR2_PACKAGE_PINENTRY_QT5 + help + A collection of simple PIN or pass-phrase entry dialogs + + https://www.gnupg.org/related_software/pinentry/ + +if BR2_PACKAGE_PINENTRY + +config BR2_PACKAGE_PINENTRY_NCURSES + bool "pinentry-ncurses" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + The pinentry-ncurses tool + +config BR2_PACKAGE_PINENTRY_GTK2 + bool "pinentry-gtk2" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz + select BR2_PACKAGE_LIBGTK2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + The pinentry-gtk2 tool + +comment "pinentry-gtk2 needs X and a toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_XORG7 || !BR2_USE_WCHAR || \ + !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_PINENTRY_QT4 + bool "pinentry-qt4" + depends on BR2_USE_MMU # fork + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_QT + select BR2_PACKAGE_QT_GUI_MODULE + help + The pinentry-qt4 tool + +comment "pinentry-qt4 needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_PINENTRY_QT5 + bool "pinentry-qt5" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_STATIC_LIBS + depends on !BR2_PACKAGE_PINENTRY_QT4 + depends on !BR2_PACKAGE_QT + select BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + help + The pinentry-qt5 tool + +comment "pinentry-qt5 needs a toolchain w/ wchar, NPTL, C++, dynamic library" + depends on !BR2_PACKAGE_PINENTRY_QT4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS + +endif diff --git a/buildroot/package/pinentry/pinentry.hash b/buildroot/package/pinentry/pinentry.hash new file mode 100644 index 0000000..ef450b3 --- /dev/null +++ b/buildroot/package/pinentry/pinentry.hash @@ -0,0 +1,4 @@ +# From https://www.gnupg.org/download/integrity_check.html +sha1 85d9ac81ebad3fb082514c505c90c39a0456f1f6 pinentry-1.0.0.tar.bz2 +# Locally computed +sha256 1672c2edc1feb036075b187c0773787b2afd0544f55025c645a71b4c2f79275a pinentry-1.0.0.tar.bz2 diff --git a/buildroot/package/pinentry/pinentry.mk b/buildroot/package/pinentry/pinentry.mk new file mode 100644 index 0000000..d017972 --- /dev/null +++ b/buildroot/package/pinentry/pinentry.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# pinentry +# +################################################################################ + +PINENTRY_VERSION = 1.0.0 +PINENTRY_SOURCE = pinentry-$(PINENTRY_VERSION).tar.bz2 +PINENTRY_SITE = https://www.gnupg.org/ftp/gcrypt/pinentry +PINENTRY_LICENSE = GPL-2.0+ +PINENTRY_LICENSE_FILES = COPYING +PINENTRY_DEPENDENCIES = \ + libassuan libgpg-error \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + host-pkgconf +PINENTRY_CONF_OPTS += \ + --with-libassuan-prefix=$(STAGING_DIR)/usr \ + --with-libgpg-error-prefix=$(STAGING_DIR)/usr \ + --without-libcap # requires PAM + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +PINENTRY_CONF_ENV += LIBS=-latomic +endif + +# build with X if available +ifeq ($(BR2_PACKAGE_XORG7),y) +PINENTRY_CONF_OPTS += --with-x +else +PINENTRY_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_PACKAGE_LIBSECRET),y) +PINENTRY_CONF_OPTS += --enable-libsecret +PINENTRY_DEPENDENCIES += libsecret +else +PINENTRY_CONF_OPTS += --disable-libsecret +endif + +# pinentry-ncurses backend +ifeq ($(BR2_PACKAGE_PINENTRY_NCURSES),y) +PINENTRY_CONF_OPTS += --enable-ncurses --with-ncurses-include-dir=none +PINENTRY_DEPENDENCIES += ncurses +else +PINENTRY_CONF_OPTS += --disable-ncurses +endif + +# pinentry-gtk2 backend +ifeq ($(BR2_PACKAGE_PINENTRY_GTK2),y) +PINENTRY_CONF_OPTS += --enable-pinentry-gtk2 +PINENTRY_DEPENDENCIES += libgtk2 +else +PINENTRY_CONF_OPTS += --disable-pinentry-gtk2 +endif + +# pinentry-qt4/5 backend +ifeq ($(BR2_PACKAGE_PINENTRY_QT4)$(BR2_PACKAGE_PINENTRY_QT5),y) +ifeq ($(BR2_PACKAGE_PINENTRY_QT4),y) +# -pthread needs to be passed for certain toolchains +# http://autobuild.buildroot.net/results/6be/6be109ccedec603a67cebdb31b55865dcce0e128/ +PINENTRY_CONF_OPTS += LIBS=-pthread MOC=$(HOST_DIR)/bin/moc +endif +PINENTRY_CONF_OPTS += --enable-pinentry-qt +PINENTRY_DEPENDENCIES += $(if $(BR2_PACKAGE_PINENTRY_QT4),qt,qt5base) +else +PINENTRY_CONF_OPTS += --disable-pinentry-qt +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/pixman/0001-Disable-tests.patch b/buildroot/package/pixman/0001-Disable-tests.patch new file mode 100644 index 0000000..dfadd69 --- /dev/null +++ b/buildroot/package/pixman/0001-Disable-tests.patch @@ -0,0 +1,29 @@ +From 9b8132738c364fc3c886e81e7d383aaff80dc867 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 5 Dec 2015 12:00:53 +0100 +Subject: [PATCH] Disable tests + +Tests are causing build failures on some architectures that are missing +a proper fenv.h, so just disable them. + +Signed-off-by: "Yann E. MORIN" + +--- +Status: Buildroot specific, not suitable for upstream in this state. +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 5137c9e..eae79fd 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,4 +1,4 @@ +-SUBDIRS = pixman demos test ++SUBDIRS = pixman demos + + pkgconfigdir=$(libdir)/pkgconfig + pkgconfig_DATA=pixman-1.pc +-- +1.9.1 + diff --git a/buildroot/package/pixman/0002-pixman-private-include-float.h-only-in-C-code.patch b/buildroot/package/pixman/0002-pixman-private-include-float.h-only-in-C-code.patch new file mode 100644 index 0000000..455cebb --- /dev/null +++ b/buildroot/package/pixman/0002-pixman-private-include-float.h-only-in-C-code.patch @@ -0,0 +1,46 @@ +From 2a5b33fe5cb921993573392afac19185e224b49a Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 17 Jan 2016 14:14:28 +0100 +Subject: [PATCH] pixman-private: include only in C code + + is included unconditionally by pixman-private.h, which in +turn gets included by assembler files. Unfortunately, with certain C +libraries (like the musl C library), cannot be included in +assembler files: + + CCLD libpixman-arm-simd.la +/home/test/buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/float.h: Assembler messages: +/home/test/buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/float.h:8: Error: bad instruction `int __flt_rounds(void)' +/home/test/buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/float.h: Assembler messages: +/home/test/buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/float.h:8: Error: bad instruction `int __flt_rounds(void)' + +It turns out however that is not needed by assembly files, +so we move its inclusion within the #ifndef __ASSEMBLER__ condition, +which solves the problem. + +Signed-off-by: Thomas Petazzoni +--- + pixman/pixman-private.h | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h +index 73108a0..73a5414 100644 +--- a/pixman/pixman-private.h ++++ b/pixman/pixman-private.h +@@ -1,5 +1,3 @@ +-#include +- + #ifndef PIXMAN_PRIVATE_H + #define PIXMAN_PRIVATE_H + +@@ -30,6 +28,7 @@ + #include + #include + #include ++#include + + #include "pixman-compiler.h" + +-- +2.6.4 + diff --git a/buildroot/package/pixman/Config.in b/buildroot/package/pixman/Config.in new file mode 100644 index 0000000..aa2a68f --- /dev/null +++ b/buildroot/package/pixman/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PIXMAN + bool "pixman" + help + Cairo pixel manager + + http://cairographics.org/releases/ diff --git a/buildroot/package/pixman/pixman.hash b/buildroot/package/pixman/pixman.hash new file mode 100644 index 0000000..d5b8934 --- /dev/null +++ b/buildroot/package/pixman/pixman.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2016-January/002672.html +sha1 367698744e74d6d4f363041482965b9ea7fbe4a5 pixman-0.34.0.tar.bz2 diff --git a/buildroot/package/pixman/pixman.mk b/buildroot/package/pixman/pixman.mk new file mode 100644 index 0000000..c797b3e --- /dev/null +++ b/buildroot/package/pixman/pixman.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# pixman +# +################################################################################ + +PIXMAN_VERSION = 0.34.0 +PIXMAN_SOURCE = pixman-$(PIXMAN_VERSION).tar.bz2 +PIXMAN_SITE = http://xorg.freedesktop.org/releases/individual/lib +PIXMAN_LICENSE = MIT +PIXMAN_LICENSE_FILES = COPYING + +PIXMAN_INSTALL_STAGING = YES +PIXMAN_DEPENDENCIES = host-pkgconf +HOST_PIXMAN_DEPENDENCIES = host-pkgconf + +# For 0001-Disable-tests.patch +PIXMAN_AUTORECONF = YES + +# don't build gtk based demos +PIXMAN_CONF_OPTS = --disable-gtk + +# The ARM SIMD code from pixman requires a recent enough ARM core, but +# there is a runtime CPU check that makes sure it doesn't get used if +# the HW doesn't support it. The only case where the ARM SIMD code +# cannot be *built* at all is when the platform doesn't support ARM +# instructions at all, so we have to disable that explicitly. +ifeq ($(BR2_ARM_CPU_HAS_ARM),y) +PIXMAN_CONF_OPTS += --enable-arm-simd +else +PIXMAN_CONF_OPTS += --disable-arm-simd +endif + +ifeq ($(BR2_ARM_CPU_HAS_ARM)$(BR2_ARM_CPU_HAS_NEON),yy) +PIXMAN_CONF_OPTS += --enable-arm-neon +else +PIXMAN_CONF_OPTS += --disable-arm-neon +endif + +# disable iwmmxt support for CPU's that don't have +# this feature +ifneq ($(BR2_iwmmxt),y) +PIXMAN_CONF_OPTS += --disable-arm-iwmmxt +endif + +# toolchain gets confused about TLS access through GOT (PIC), so disable TLS +# movhi r4, %got_hiadj(%tls_ldo(fast_path_cache)) +# {standard input}:172: Error: bad expression +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII),y) +PIXMAN_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -DPIXMAN_NO_TLS" +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/pixz/Config.in b/buildroot/package/pixz/Config.in new file mode 100644 index 0000000..f7ca015 --- /dev/null +++ b/buildroot/package/pixz/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PIXZ + bool "pixz" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # libarchive + select BR2_PACKAGE_LIBARCHIVE + select BR2_PACKAGE_XZ + help + Pixz (pronounced pixie) is a parallel, indexing version of xz. + + https://github.com/vasi/pixz + +comment "pixz needs a toolchain w/ threads, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/pixz/pixz.hash b/buildroot/package/pixz/pixz.hash new file mode 100644 index 0000000..3089bcd --- /dev/null +++ b/buildroot/package/pixz/pixz.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 02c50746b134fa1b1aae41fcc314d7c6f1919b3d48bcdea01bf11769f83f72e8 pixz-1.0.6.tar.xz diff --git a/buildroot/package/pixz/pixz.mk b/buildroot/package/pixz/pixz.mk new file mode 100644 index 0000000..8d80f78 --- /dev/null +++ b/buildroot/package/pixz/pixz.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# pixz +# +################################################################################ + +PIXZ_VERSION = 1.0.6 +PIXZ_SITE = https://github.com/vasi/pixz/releases/download/v$(PIXZ_VERSION) +PIXZ_SOURCE = pixz-$(PIXZ_VERSION).tar.xz +PIXZ_DEPENDENCIES = host-pkgconf libarchive xz +PIXZ_LICENSE = BSD-2-Clause +PIXZ_LICENSE_FILES = LICENSE + +# pixz.1 is actually present, but AC_CHECK_FILE doesn't detect it when +# cross-compiling, which causes configure to try to regenerate it. So give it a +# hint to say that it actually is present. +PIXZ_CONF_ENV = ac_cv_file_src_pixz_1=yes + +$(eval $(autotools-package)) diff --git a/buildroot/package/pkg-autotools.mk b/buildroot/package/pkg-autotools.mk new file mode 100644 index 0000000..45de993 --- /dev/null +++ b/buildroot/package/pkg-autotools.mk @@ -0,0 +1,331 @@ +################################################################################ +# Autotools package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for autotools packages. It should be used for all +# packages that use the autotools as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this autotools infrastructure requires +# the .mk file to only specify metadata information about the +# package: name, version, download URL, etc. +# +# We still allow the package .mk file to override what the different +# steps are doing, if needed. For example, if _BUILD_CMDS is +# already defined, it is used as the list of commands to perform to +# build the package, instead of the default autotools behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + + +# +# Utility function to upgrade config.sub and config.guess files +# +# argument 1 : directory into which config.guess and config.sub need +# to be updated. Note that config.sub and config.guess are searched +# recursively in this directory. +# +define CONFIG_UPDATE + for file in config.guess config.sub; do \ + for i in $$(find $(1) -name $$file); do \ + cp support/gnuconfig/$$file $$i; \ + done; \ + done +endef + +# This function generates the ac_cv_file_ value for a given +# filename. This is needed to convince configure script doing +# AC_CHECK_FILE() tests that the file actually exists, since such +# tests cannot be done in a cross-compilation context. This function +# takes as argument the path of the file. An example usage is: +# +# FOOBAR_CONF_ENV = \ +# $(call AUTOCONF_AC_CHECK_FILE_VAL,/dev/random)=yes +AUTOCONF_AC_CHECK_FILE_VAL = ac_cv_file_$(subst -,_,$(subst /,_,$(subst .,_,$(1)))) + +# +# Hook to update config.sub and config.guess if needed +# +define UPDATE_CONFIG_HOOK + @$(call MESSAGE,"Updating config.sub and config.guess") + $(call CONFIG_UPDATE,$(@D)) +endef + +# +# Hook to patch libtool to make it work properly for cross-compilation +# +define LIBTOOL_PATCH_HOOK + @$(call MESSAGE,"Patching libtool") + $(Q)for i in `find $($(PKG)_DIR) -name ltmain.sh`; do \ + ltmain_version=`sed -n '/^[ \t]*VERSION=/{s/^[ \t]*VERSION=//;p;q;}' $$i | \ + sed -e 's/\([0-9]*\.[0-9]*\).*/\1/' -e 's/\"//'`; \ + ltmain_patchlevel=`sed -n '/^[ \t]*VERSION=/{s/^[ \t]*VERSION=//;p;q;}' $$i | \ + sed -e 's/\([0-9]*\.[0-9]*\.*\)\([0-9]*\).*/\2/' -e 's/\"//'`; \ + if test $${ltmain_version} = '1.5'; then \ + patch -i support/libtool/buildroot-libtool-v1.5.patch $${i}; \ + elif test $${ltmain_version} = "2.2"; then\ + patch -i support/libtool/buildroot-libtool-v2.2.patch $${i}; \ + elif test $${ltmain_version} = "2.4"; then\ + if test $${ltmain_patchlevel:-0} -gt 2; then\ + patch -i support/libtool/buildroot-libtool-v2.4.4.patch $${i}; \ + else \ + patch -i support/libtool/buildroot-libtool-v2.4.patch $${i}; \ + fi \ + fi \ + done +endef + +# +# Hook to patch common issue with configure on powerpc64{,le} failing +# to detect shared library support: +# +define CONFIGURE_FIX_POWERPC64_HOOK + @$(call MESSAGE,"Checking configure (powerpc64/powerpc64le)") + support/scripts/fix-configure-powerpc64.sh $($(PKG)_DIR) +endef + +# +# Hook to gettextize the package if needed +# +define GETTEXTIZE_HOOK + @$(call MESSAGE,"Gettextizing") + $(Q)cd $($(PKG)_SRCDIR) && $(GETTEXTIZE) $($(PKG)_GETTEXTIZE_OPTS) +endef + +# +# Hook to autoreconf the package if needed +# +define AUTORECONF_HOOK + @$(call MESSAGE,"Autoreconfiguring") + $(Q)cd $($(PKG)_SRCDIR) && $($(PKG)_AUTORECONF_ENV) $(AUTORECONF) $($(PKG)_AUTORECONF_OPTS) +endef + +################################################################################ +# inner-autotools-package -- defines how the configuration, compilation and +# installation of an autotools package should be done, implements a +# few hooks to tune the build process for autotools specifities and +# calls the generic package infrastructure to generate the necessary +# make targets +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ + +define inner-autotools-package + +ifndef $(2)_LIBTOOL_PATCH + ifdef $(3)_LIBTOOL_PATCH + $(2)_LIBTOOL_PATCH = $$($(3)_LIBTOOL_PATCH) + else + $(2)_LIBTOOL_PATCH ?= YES + endif +endif + +ifndef $(2)_MAKE + ifdef $(3)_MAKE + $(2)_MAKE = $$($(3)_MAKE) + else + $(2)_MAKE ?= $$(MAKE) + endif +endif + +ifndef $(2)_AUTORECONF + ifdef $(3)_AUTORECONF + $(2)_AUTORECONF = $$($(3)_AUTORECONF) + else + $(2)_AUTORECONF ?= NO + endif +endif + +ifndef $(2)_GETTEXTIZE + ifdef $(3)_GETTEXTIZE + $(2)_GETTEXTIZE = $$($(3)_GETTEXTIZE) + else + $(2)_GETTEXTIZE ?= NO + endif +endif + +ifeq ($(4),host) + $(2)_GETTEXTIZE_OPTS ?= $$($(3)_GETTEXTIZE_OPTS) +endif + +ifeq ($(4),host) + $(2)_AUTORECONF_OPTS ?= $$($(3)_AUTORECONF_OPTS) +endif + +$(2)_CONF_ENV ?= +$(2)_CONF_OPTS ?= +$(2)_MAKE_ENV ?= +$(2)_MAKE_OPTS ?= +$(2)_INSTALL_OPTS ?= install +$(2)_INSTALL_STAGING_OPTS ?= DESTDIR=$$(STAGING_DIR) install +$(2)_INSTALL_TARGET_OPTS ?= DESTDIR=$$(TARGET_DIR) install + +# +# Configure step. Only define it if not already defined by the package +# .mk file. And take care of the differences between host and target +# packages. +# +ifndef $(2)_CONFIGURE_CMDS +ifeq ($(4),target) + +# Configure package for target +define $(2)_CONFIGURE_CMDS + (cd $$($$(PKG)_SRCDIR) && rm -rf config.cache && \ + $$(TARGET_CONFIGURE_OPTS) \ + $$(TARGET_CONFIGURE_ARGS) \ + $$($$(PKG)_CONF_ENV) \ + CONFIG_SITE=/dev/null \ + ./configure \ + --target=$$(GNU_TARGET_NAME) \ + --host=$$(GNU_TARGET_NAME) \ + --build=$$(GNU_HOST_NAME) \ + --prefix=/usr \ + --exec-prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --program-prefix="" \ + --disable-gtk-doc \ + --disable-gtk-doc-html \ + --disable-doc \ + --disable-docs \ + --disable-documentation \ + --with-xmlto=no \ + --with-fop=no \ + $$(if $$($$(PKG)_OVERRIDE_SRCDIR),,--disable-dependency-tracking) \ + --enable-ipv6 \ + $$(NLS_OPTS) \ + $$(SHARED_STATIC_LIBS_OPTS) \ + $$(QUIET) $$($$(PKG)_CONF_OPTS) \ + ) +endef +else + +# Configure package for host +# disable all kind of documentation generation in the process, +# because it often relies on host tools which may or may not be +# installed. +define $(2)_CONFIGURE_CMDS + (cd $$($$(PKG)_SRCDIR) && rm -rf config.cache; \ + $$(HOST_CONFIGURE_OPTS) \ + CFLAGS="$$(HOST_CFLAGS)" \ + LDFLAGS="$$(HOST_LDFLAGS)" \ + $$($$(PKG)_CONF_ENV) \ + CONFIG_SITE=/dev/null \ + ./configure \ + --prefix="$$(HOST_DIR)" \ + --sysconfdir="$$(HOST_DIR)/etc" \ + --localstatedir="$$(HOST_DIR)/var" \ + --enable-shared --disable-static \ + --disable-gtk-doc \ + --disable-gtk-doc-html \ + --disable-doc \ + --disable-docs \ + --disable-documentation \ + --disable-debug \ + --with-xmlto=no \ + --with-fop=no \ + $$(if $$($$(PKG)_OVERRIDE_SRCDIR),,--disable-dependency-tracking) \ + $$(QUIET) $$($$(PKG)_CONF_OPTS) \ + ) +endef +endif +endif + +$(2)_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK + +ifeq ($$($(2)_AUTORECONF),YES) + +# This has to come before autoreconf +ifeq ($$($(2)_GETTEXTIZE),YES) +$(2)_PRE_CONFIGURE_HOOKS += GETTEXTIZE_HOOK +$(2)_DEPENDENCIES += host-gettext +endif +$(2)_PRE_CONFIGURE_HOOKS += AUTORECONF_HOOK +# default values are not evaluated yet, so don't rely on this defaulting to YES +ifneq ($$($(2)_LIBTOOL_PATCH),NO) +$(2)_PRE_CONFIGURE_HOOKS += LIBTOOL_PATCH_HOOK +endif +$(2)_DEPENDENCIES += host-automake host-autoconf host-libtool + +else # ! AUTORECONF = YES + +# default values are not evaluated yet, so don't rely on this defaulting to YES +ifneq ($$($(2)_LIBTOOL_PATCH),NO) +$(2)_POST_PATCH_HOOKS += LIBTOOL_PATCH_HOOK +endif + +endif + +# Append a configure hook if building for a powerpc64 (or powerpc64le) arch. +# Must be added after other pre-configure hooks that might regenerate the +# configure script and overwrite the changes made here. +ifneq ($$(filter powerpc64%,$$(if $$(filter target,$(4)),$$(ARCH),$$(HOSTARCH))),) +$(2)_PRE_CONFIGURE_HOOKS += CONFIGURE_FIX_POWERPC64_HOOK +endif + +# +# Build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +ifeq ($(4),target) +define $(2)_BUILD_CMDS + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) -C $$($$(PKG)_SRCDIR) +endef +else +define $(2)_BUILD_CMDS + $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) -C $$($$(PKG)_SRCDIR) +endef +endif +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_OPTS) -C $$($$(PKG)_SRCDIR) +endef +endif + +# +# Staging installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_STAGING_CMDS +define $(2)_INSTALL_STAGING_CMDS + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPTS) -C $$($$(PKG)_SRCDIR) +endef +endif + +# +# Target installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_TARGET_OPTS) -C $$($$(PKG)_SRCDIR) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# autotools-package -- the target generator macro for autotools packages +################################################################################ + +autotools-package = $(call inner-autotools-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-autotools-package = $(call inner-autotools-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/buildroot/package/pkg-cmake.mk b/buildroot/package/pkg-cmake.mk new file mode 100644 index 0000000..9b07798 --- /dev/null +++ b/buildroot/package/pkg-cmake.mk @@ -0,0 +1,274 @@ +################################################################################ +# CMake package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for CMake packages. It should be used for all +# packages that use CMake as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this CMake infrastructure requires +# the .mk file to only specify metadata information about the +# package: name, version, download URL, etc. +# +# We still allow the package .mk file to override what the different +# steps are doing, if needed. For example, if _BUILD_CMDS is +# already defined, it is used as the list of commands to perform to +# build the package, instead of the default CMake behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +# Set compiler variables. +ifeq ($(BR2_CCACHE),y) +CMAKE_HOST_C_COMPILER = $(HOST_DIR)/bin/ccache +CMAKE_HOST_CXX_COMPILER = $(HOST_DIR)/bin/ccache +CMAKE_HOST_C_COMPILER_ARG1 = $(HOSTCC_NOCCACHE) +CMAKE_HOST_CXX_COMPILER_ARG1 = $(HOSTCXX_NOCCACHE) +else +CMAKE_HOST_C_COMPILER = $(HOSTCC) +CMAKE_HOST_CXX_COMPILER = $(HOSTCXX) +endif + +ifneq ($(QUIET),) +CMAKE_QUIET = -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_INSTALL_MESSAGE=NEVER +endif + +################################################################################ +# inner-cmake-package -- defines how the configuration, compilation and +# installation of a CMake package should be done, implements a few hooks to +# tune the build process and calls the generic package infrastructure to +# generate the necessary make targets +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ + +define inner-cmake-package + +$(2)_CONF_ENV ?= +$(2)_CONF_OPTS ?= +$(2)_MAKE ?= $$(MAKE) +$(2)_MAKE_ENV ?= +$(2)_MAKE_OPTS ?= +$(2)_INSTALL_OPTS ?= install +$(2)_INSTALL_STAGING_OPTS ?= DESTDIR=$$(STAGING_DIR) install/fast +$(2)_INSTALL_TARGET_OPTS ?= DESTDIR=$$(TARGET_DIR) install/fast + +$(2)_SRCDIR = $$($(2)_DIR)/$$($(2)_SUBDIR) + +$(3)_SUPPORTS_IN_SOURCE_BUILD ?= YES + + +ifeq ($$($(3)_SUPPORTS_IN_SOURCE_BUILD),YES) +$(2)_BUILDDIR = $$($(2)_SRCDIR) +else +$(2)_BUILDDIR = $$($(2)_SRCDIR)/buildroot-build +endif + +# +# Configure step. Only define it if not already defined by the package +# .mk file. And take care of the differences between host and target +# packages. +# +ifndef $(2)_CONFIGURE_CMDS +ifeq ($(4),target) + +# Configure package for target +# +# - We are passing BUILD_SHARED_LIBS because it is documented as a +# standard CMake variable to control the build of shared libraries +# (see https://cmake.org/cmake/help/v3.8/manual/cmake-variables.7.html#variables-that-change-behavior) +# - We are not passing BUILD_STATIC_LIBS because it is *not* +# documented as a standard CMake variable. If a package supports it, +# it must handle it explicitly. +# +define $(2)_CONFIGURE_CMDS + (mkdir -p $$($$(PKG)_BUILDDIR) && \ + cd $$($$(PKG)_BUILDDIR) && \ + rm -f CMakeCache.txt && \ + PATH=$$(BR_PATH) \ + $$($$(PKG)_CONF_ENV) $$(BR2_CMAKE) $$($$(PKG)_SRCDIR) \ + -DCMAKE_TOOLCHAIN_FILE="$$(HOST_DIR)/share/buildroot/toolchainfile.cmake" \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + -DCMAKE_COLOR_MAKEFILE=OFF \ + -DBUILD_DOC=OFF \ + -DBUILD_DOCS=OFF \ + -DBUILD_EXAMPLE=OFF \ + -DBUILD_EXAMPLES=OFF \ + -DBUILD_TEST=OFF \ + -DBUILD_TESTS=OFF \ + -DBUILD_TESTING=OFF \ + -DBUILD_SHARED_LIBS=$$(if $$(BR2_STATIC_LIBS),OFF,ON) \ + $$(CMAKE_QUIET) \ + $$($$(PKG)_CONF_OPTS) \ + ) +endef +else + +# Configure package for host +define $(2)_CONFIGURE_CMDS + (mkdir -p $$($$(PKG)_BUILDDIR) && \ + cd $$($$(PKG)_BUILDDIR) && \ + rm -f CMakeCache.txt && \ + PATH=$$(BR_PATH) \ + PKG_CONFIG="$$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_SYSROOT_DIR="/" \ + PKG_CONFIG_LIBDIR="$$(HOST_DIR)/lib/pkgconfig:$$(HOST_DIR)/share/pkgconfig" \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ + PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ + $$($$(PKG)_CONF_ENV) $$(BR2_CMAKE) $$($$(PKG)_SRCDIR) \ + -DCMAKE_INSTALL_SO_NO_EXE=0 \ + -DCMAKE_FIND_ROOT_PATH="$$(HOST_DIR)" \ + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="BOTH" \ + -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY="BOTH" \ + -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE="BOTH" \ + -DCMAKE_INSTALL_PREFIX="$$(HOST_DIR)" \ + -DCMAKE_C_FLAGS="$$(HOST_CFLAGS)" \ + -DCMAKE_CXX_FLAGS="$$(HOST_CXXFLAGS)" \ + -DCMAKE_EXE_LINKER_FLAGS="$$(HOST_LDFLAGS)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$$(HOST_LDFLAGS)" \ + -DCMAKE_ASM_COMPILER="$$(HOSTAS)" \ + -DCMAKE_C_COMPILER="$$(CMAKE_HOST_C_COMPILER)" \ + -DCMAKE_CXX_COMPILER="$$(CMAKE_HOST_CXX_COMPILER)" \ + $(if $$(CMAKE_HOST_C_COMPILER_ARG1),\ + -DCMAKE_C_COMPILER_ARG1="$$(CMAKE_HOST_C_COMPILER_ARG1)" \ + -DCMAKE_CXX_COMPILER_ARG1="$$(CMAKE_HOST_CXX_COMPILER_ARG1)" \ + ) \ + -DCMAKE_COLOR_MAKEFILE=OFF \ + -DBUILD_DOC=OFF \ + -DBUILD_DOCS=OFF \ + -DBUILD_EXAMPLE=OFF \ + -DBUILD_EXAMPLES=OFF \ + -DBUILD_TEST=OFF \ + -DBUILD_TESTS=OFF \ + -DBUILD_TESTING=OFF \ + $$(CMAKE_QUIET) \ + $$($$(PKG)_CONF_OPTS) \ + ) +endef +endif +endif + +# Since some CMake modules (even upstream ones) use pgk_check_modules +# primitives to find {C,LD}FLAGS, add it to the dependency list. +$(2)_DEPENDENCIES += host-pkgconf + +$(2)_DEPENDENCIES += $(BR2_CMAKE_HOST_DEPENDENCY) + +# +# Build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +ifeq ($(4),target) +define $(2)_BUILD_CMDS + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) -C $$($$(PKG)_BUILDDIR) +endef +else +define $(2)_BUILD_CMDS + $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) -C $$($$(PKG)_BUILDDIR) +endef +endif +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + $$(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) $$($$(PKG)_INSTALL_OPTS) -C $$($$(PKG)_BUILDDIR) +endef +endif + +# +# Staging installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_STAGING_CMDS +define $(2)_INSTALL_STAGING_CMDS + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) $$($$(PKG)_INSTALL_STAGING_OPTS) -C $$($$(PKG)_BUILDDIR) +endef +endif + +# +# Target installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + $$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPTS) $$($$(PKG)_INSTALL_TARGET_OPTS) -C $$($$(PKG)_BUILDDIR) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# cmake-package -- the target generator macro for CMake packages +################################################################################ + +cmake-package = $(call inner-cmake-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-cmake-package = $(call inner-cmake-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) + +################################################################################ +# Generation of the CMake toolchain file +################################################################################ + +# CMAKE_SYSTEM_PROCESSOR should match uname -m +ifeq ($(BR2_ARM_CPU_ARMV4),y) +CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv4 +else ifeq ($(BR2_ARM_CPU_ARMV5),y) +CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv5 +else ifeq ($(BR2_ARM_CPU_ARMV6),y) +CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv6 +else ifeq ($(BR2_ARM_CPU_ARMV7A),y) +CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv7 +else ifeq ($(BR2_ARM_CPU_ARMV8A),y) +CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT = armv8 +endif + +ifeq ($(BR2_arm),y) +CMAKE_SYSTEM_PROCESSOR = $(CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT)l +else ifeq ($(BR2_armeb),y) +CMAKE_SYSTEM_PROCESSOR = $(CMAKE_SYSTEM_PROCESSOR_ARM_VARIANT)b +else ifeq ($(call qstrip,$(BR2_ARCH)),powerpc64) +CMAKE_SYSTEM_PROCESSOR = ppc64 +else ifeq ($(call qstrip,$(BR2_ARCH)),powerpc64le) +CMAKE_SYSTEM_PROCESSOR = ppc64le +else +CMAKE_SYSTEM_PROCESSOR = $(BR2_ARCH) +endif + +# In order to allow the toolchain to be relocated, we calculate the HOST_DIR +# based on the toolchainfile.cmake file's location: $(HOST_DIR)/share/buildroot +# In all the other variables, HOST_DIR will be replaced by RELOCATED_HOST_DIR, +# so we have to strip "$(HOST_DIR)/" from the paths that contain it. +$(HOST_DIR)/share/buildroot/toolchainfile.cmake: + @mkdir -p $(@D) + sed \ + -e 's#@@STAGING_SUBDIR@@#$(call qstrip,$(STAGING_SUBDIR))#' \ + -e 's#@@TARGET_CFLAGS@@#$(call qstrip,$(TARGET_CFLAGS))#' \ + -e 's#@@TARGET_CXXFLAGS@@#$(call qstrip,$(TARGET_CXXFLAGS))#' \ + -e 's#@@TARGET_FCFLAGS@@#$(call qstrip,$(TARGET_FCFLAGS))#' \ + -e 's#@@TARGET_LDFLAGS@@#$(call qstrip,$(TARGET_LDFLAGS))#' \ + -e 's#@@TARGET_CC@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CC)))#' \ + -e 's#@@TARGET_CXX@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_CXX)))#' \ + -e 's#@@TARGET_FC@@#$(subst $(HOST_DIR)/,,$(call qstrip,$(TARGET_FC)))#' \ + -e 's#@@CMAKE_SYSTEM_PROCESSOR@@#$(call qstrip,$(CMAKE_SYSTEM_PROCESSOR))#' \ + -e 's#@@TOOLCHAIN_HAS_FORTRAN@@#$(if $(BR2_TOOLCHAIN_HAS_FORTRAN),1,0)#' \ + -e 's#@@CMAKE_BUILD_TYPE@@#$(if $(BR2_ENABLE_DEBUG),Debug,Release)#' \ + $(TOPDIR)/support/misc/toolchainfile.cmake.in \ + > $@ + +$(HOST_DIR)/share/buildroot/Platform/Buildroot.cmake: + $(Q)$(INSTALL) -D -m 0644 support/misc/Buildroot.cmake $(@) diff --git a/buildroot/package/pkg-download.mk b/buildroot/package/pkg-download.mk new file mode 100644 index 0000000..6f15deb --- /dev/null +++ b/buildroot/package/pkg-download.mk @@ -0,0 +1,212 @@ +################################################################################ +# +# This file contains the download helpers for the various package +# infrastructures. It is used to handle downloads from HTTP servers, +# FTP servers, Git repositories, Subversion repositories, Mercurial +# repositories, Bazaar repositories, and SCP servers. +# +################################################################################ + +# Download method commands +export WGET := $(call qstrip,$(BR2_WGET)) +export SVN := $(call qstrip,$(BR2_SVN)) +export CVS := $(call qstrip,$(BR2_CVS)) +export BZR := $(call qstrip,$(BR2_BZR)) +export GIT := $(call qstrip,$(BR2_GIT)) +export HG := $(call qstrip,$(BR2_HG)) +export SCP := $(call qstrip,$(BR2_SCP)) +SSH := $(call qstrip,$(BR2_SSH)) +export LOCALFILES := $(call qstrip,$(BR2_LOCALFILES)) + +DL_WRAPPER = support/download/dl-wrapper + +# DL_DIR may have been set already from the environment +ifeq ($(origin DL_DIR),undefined) +DL_DIR ?= $(call qstrip,$(BR2_DL_DIR)) +ifeq ($(DL_DIR),) +DL_DIR := $(TOPDIR)/dl +endif +else +# Restore the BR2_DL_DIR that was overridden by the .config file +BR2_DL_DIR = $(DL_DIR) +endif + +# ensure it exists and a absolute path +DL_DIR := $(shell mkdir -p $(DL_DIR) && cd $(DL_DIR) >/dev/null && pwd) + +# +# URI scheme helper functions +# Example URIs: +# * http://www.example.com/dir/file +# * scp://www.example.com:dir/file (with domainseparator :) +# +# geturischeme: http +geturischeme = $(firstword $(subst ://, ,$(call qstrip,$(1)))) +# stripurischeme: www.example.com/dir/file +stripurischeme = $(lastword $(subst ://, ,$(call qstrip,$(1)))) +# domain: www.example.com +domain = $(firstword $(subst $(call domainseparator,$(2)), ,$(call stripurischeme,$(1)))) +# notdomain: dir/file +notdomain = $(patsubst $(call domain,$(1),$(2))$(call domainseparator,$(2))%,%,$(call stripurischeme,$(1))) +# +# default domainseparator is /, specify alternative value as first argument +domainseparator = $(if $(1),$(1),/) + +# github(user,package,version): returns site of GitHub repository +github = https://github.com/$(1)/$(2)/archive/$(3) + +# Expressly do not check hashes for those files +# Exported variables default to immediately expanded in some versions of +# make, but we need it to be recursively-epxanded, so explicitly assign it. +export BR_NO_CHECK_HASH_FOR = + +################################################################################ +# The DOWNLOAD_* helpers are in charge of getting a working copy +# of the source repository for their corresponding SCM, +# checking out the requested version / commit / tag, and create an +# archive out of it. DOWNLOAD_SCP uses scp to obtain a remote file with +# ssh authentication. DOWNLOAD_WGET is the normal wget-based download +# mechanism. +# +################################################################################ + +define DOWNLOAD_GIT + $(EXTRA_ENV) $(DL_WRAPPER) -b git \ + -o $(DL_DIR)/$($(PKG)_SOURCE) \ + $(if $($(PKG)_GIT_SUBMODULES),-r) \ + -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ + $(QUIET) \ + -- \ + $($(PKG)_SITE) \ + $($(PKG)_DL_VERSION) \ + $($(PKG)_BASENAME_RAW) \ + $($(PKG)_DL_OPTS) +endef + +define DOWNLOAD_BZR + $(EXTRA_ENV) $(DL_WRAPPER) -b bzr \ + -o $(DL_DIR)/$($(PKG)_SOURCE) \ + $(QUIET) \ + -- \ + $($(PKG)_SITE) \ + $($(PKG)_DL_VERSION) \ + $($(PKG)_BASENAME_RAW) \ + $($(PKG)_DL_OPTS) +endef + +define DOWNLOAD_CVS + $(EXTRA_ENV) $(DL_WRAPPER) -b cvs \ + -o $(DL_DIR)/$($(PKG)_SOURCE) \ + $(QUIET) \ + -- \ + $(call stripurischeme,$(call qstrip,$($(PKG)_SITE))) \ + $($(PKG)_DL_VERSION) \ + $($(PKG)_RAWNAME) \ + $($(PKG)_BASENAME_RAW) \ + $($(PKG)_DL_OPTS) +endef + +define DOWNLOAD_SVN + $(EXTRA_ENV) $(DL_WRAPPER) -b svn \ + -o $(DL_DIR)/$($(PKG)_SOURCE) \ + $(QUIET) \ + -- \ + $($(PKG)_SITE) \ + $($(PKG)_DL_VERSION) \ + $($(PKG)_BASENAME_RAW) \ + $($(PKG)_DL_OPTS) +endef + +# SCP URIs should be of the form scp://[user@]host:filepath +# Note that filepath is relative to the user's home directory, so you may want +# to prepend the path with a slash: scp://[user@]host:/absolutepath +define DOWNLOAD_SCP + $(EXTRA_ENV) $(DL_WRAPPER) -b scp \ + -o $(DL_DIR)/$(2) \ + -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ + $(QUIET) \ + -- \ + '$(call stripurischeme,$(call qstrip,$(1)))' \ + $($(PKG)_DL_OPTS) +endef + +define DOWNLOAD_HG + $(EXTRA_ENV) $(DL_WRAPPER) -b hg \ + -o $(DL_DIR)/$($(PKG)_SOURCE) \ + $(QUIET) \ + -- \ + $($(PKG)_SITE) \ + $($(PKG)_DL_VERSION) \ + $($(PKG)_BASENAME_RAW) \ + $($(PKG)_DL_OPTS) +endef + +define DOWNLOAD_WGET + $(EXTRA_ENV) $(DL_WRAPPER) -b wget \ + -o $(DL_DIR)/$(2) \ + -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ + $(QUIET) \ + -- \ + '$(call qstrip,$(1))' \ + $($(PKG)_DL_OPTS) +endef + +define DOWNLOAD_LOCALFILES + $(EXTRA_ENV) $(DL_WRAPPER) -b cp \ + -o $(DL_DIR)/$(2) \ + -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ + $(QUIET) \ + -- \ + $(call stripurischeme,$(call qstrip,$(1))) \ + $($(PKG)_DL_OPTS) +endef + +################################################################################ +# DOWNLOAD -- Download helper. Will try to download source from: +# 1) BR2_PRIMARY_SITE if enabled +# 2) Download site, unless BR2_PRIMARY_SITE_ONLY is set +# 3) BR2_BACKUP_SITE if enabled, unless BR2_PRIMARY_SITE_ONLY is set +# +# Argument 1 is the source location +# +# E.G. use like this: +# $(call DOWNLOAD,$(FOO_SITE)) +# +# For PRIMARY and BACKUP site, any ? in the URL is replaced by %3F. A ? in +# the URL is used to separate query arguments, but the PRIMARY and BACKUP +# sites serve just plain files. +################################################################################ + +define DOWNLOAD + $(call DOWNLOAD_INNER,$(1),$(notdir $(1)),DOWNLOAD) +endef + +define DOWNLOAD_INNER + $(Q)$(if $(filter bzr cvs hg svn,$($(PKG)_SITE_METHOD)),export BR_NO_CHECK_HASH_FOR=$(2);) \ + if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \ + case "$(call geturischeme,$(BR2_PRIMARY_SITE))" in \ + file) $(call $(3)_LOCALFILES,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \ + scp) $(call $(3)_SCP,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \ + *) $(call $(3)_WGET,$(BR2_PRIMARY_SITE)/$(subst ?,%3F,$(2)),$(2)) && exit ;; \ + esac ; \ + fi ; \ + if test "$(BR2_PRIMARY_SITE_ONLY)" = "y" ; then \ + exit 1 ; \ + fi ; \ + if test -n "$(1)" ; then \ + case "$($(PKG)_SITE_METHOD)" in \ + git) $($(3)_GIT) && exit ;; \ + svn) $($(3)_SVN) && exit ;; \ + cvs) $($(3)_CVS) && exit ;; \ + bzr) $($(3)_BZR) && exit ;; \ + file) $($(3)_LOCALFILES) && exit ;; \ + scp) $($(3)_SCP) && exit ;; \ + hg) $($(3)_HG) && exit ;; \ + *) $(call $(3)_WGET,$(1),$(2)) && exit ;; \ + esac ; \ + fi ; \ + if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \ + $(call $(3)_WGET,$(BR2_BACKUP_SITE)/$(subst ?,%3F,$(2)),$(2)) && exit ; \ + fi ; \ + exit 1 +endef diff --git a/buildroot/package/pkg-generic.mk b/buildroot/package/pkg-generic.mk new file mode 100644 index 0000000..a689dde --- /dev/null +++ b/buildroot/package/pkg-generic.mk @@ -0,0 +1,1001 @@ +################################################################################ +# Generic package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files. It should be used for packages that do not rely +# on a well-known build system for which Buildroot has a dedicated +# infrastructure (so far, Buildroot has special support for +# autotools-based and CMake-based packages). +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this generic infrastructure requires the +# .mk file to specify: +# +# 1. Metadata information about the package: name, version, +# download URL, etc. +# +# 2. Description of the commands to be executed to configure, build +# and install the package +################################################################################ + +################################################################################ +# Helper functions to catch start/end of each step +################################################################################ + +# Those two functions are called by each step below. +# They are responsible for calling all hooks defined in +# $(GLOBAL_INSTRUMENTATION_HOOKS) and pass each of them +# three arguments: +# $1: either 'start' or 'end' +# $2: the name of the step +# $3: the name of the package + +# Start step +# $1: step name +define step_start + $(foreach hook,$(GLOBAL_INSTRUMENTATION_HOOKS),$(call $(hook),start,$(1),$($(PKG)_NAME))$(sep)) +endef + +# End step +# $1: step name +define step_end + $(foreach hook,$(GLOBAL_INSTRUMENTATION_HOOKS),$(call $(hook),end,$(1),$($(PKG)_NAME))$(sep)) +endef + +####################################### +# Actual steps hooks + +# Time steps +define step_time + printf "%s:%-5.5s:%-20.20s: %s\n" \ + "$$(date +%s)" "$(1)" "$(2)" "$(3)" \ + >>"$(BUILD_DIR)/build-time.log" +endef +GLOBAL_INSTRUMENTATION_HOOKS += step_time + +# Hooks to collect statistics about installed files + +# The suffix is typically empty for the target variant, for legacy backward +# compatibility. +# $(1): package name +# $(2): base directory to search in +# $(3): suffix of file (optional) +define step_pkg_size_inner + @touch $(BUILD_DIR)/packages-file-list$(3).txt + $(SED) '/^$(1),/d' $(BUILD_DIR)/packages-file-list$(3).txt + cd $(2); \ + find . \( -type f -o -type l \) \ + -newer $($(PKG)_DIR)/.stamp_built \ + -exec printf '$(1),%s\n' {} + \ + >> $(BUILD_DIR)/packages-file-list$(3).txt +endef + +define step_pkg_size + $(if $(filter install-target,$(2)),\ + $(if $(filter end,$(1)),$(call step_pkg_size_inner,$(3),$(TARGET_DIR)))) + $(if $(filter install-staging,$(2)),\ + $(if $(filter end,$(1)),$(call step_pkg_size_inner,$(3),$(STAGING_DIR),-staging))) + $(if $(filter install-host,$(2)),\ + $(if $(filter end,$(1)),$(call step_pkg_size_inner,$(3),$(HOST_DIR),-host))) +endef +GLOBAL_INSTRUMENTATION_HOOKS += step_pkg_size + +# Relies on step_pkg_size, so must be after +define check_bin_arch + $(if $(filter end-install-target,$(1)-$(2)),\ + support/scripts/check-bin-arch -p $(3) \ + -l $(BUILD_DIR)/packages-file-list.txt \ + $(foreach i,$($(PKG)_BIN_ARCH_EXCLUDE),-i "$(i)") \ + -r $(TARGET_READELF) \ + -a $(BR2_READELF_ARCH_NAME)) +endef + +GLOBAL_INSTRUMENTATION_HOOKS += check_bin_arch + +# This hook checks that host packages that need libraries that we build +# have a proper DT_RPATH or DT_RUNPATH tag +define check_host_rpath + $(if $(filter install-host,$(2)),\ + $(if $(filter end,$(1)),support/scripts/check-host-rpath $(3) $(HOST_DIR))) +endef +GLOBAL_INSTRUMENTATION_HOOKS += check_host_rpath + +define step_check_build_dir_one + if [ -d $(2) ]; then \ + printf "%s: installs files in %s\n" $(1) $(2) >&2; \ + exit 1; \ + fi +endef + +define step_check_build_dir + $(if $(filter install-staging,$(2)),\ + $(if $(filter end,$(1)),$(call step_check_build_dir_one,$(3),$(STAGING_DIR)/$(O)))) + $(if $(filter install-target,$(2)),\ + $(if $(filter end,$(1)),$(call step_check_build_dir_one,$(3),$(TARGET_DIR)/$(O)))) +endef +GLOBAL_INSTRUMENTATION_HOOKS += step_check_build_dir + +# User-supplied script +ifneq ($(BR2_INSTRUMENTATION_SCRIPTS),) +define step_user + @$(foreach user_hook, $(BR2_INSTRUMENTATION_SCRIPTS), \ + $(EXTRA_ENV) $(user_hook) "$(1)" "$(2)" "$(3)"$(sep)) +endef +GLOBAL_INSTRUMENTATION_HOOKS += step_user +endif + +################################################################################ +# Implicit targets -- produce a stamp file for each step of a package build +################################################################################ + +# Retrieve the archive +$(BUILD_DIR)/%/.stamp_downloaded: + $(foreach hook,$($(PKG)_PRE_DOWNLOAD_HOOKS),$(call $(hook))$(sep)) +# Only show the download message if it isn't already downloaded + $(Q)for p in $($(PKG)_ALL_DOWNLOADS); do \ + if test ! -e $(DL_DIR)/`basename $$p` ; then \ + $(call MESSAGE,"Downloading") ; \ + break ; \ + fi ; \ + done + $(foreach p,$($(PKG)_ALL_DOWNLOADS),$(call DOWNLOAD,$(p))$(sep)) + $(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep)) + $(Q)mkdir -p $(@D) + $(Q)touch $@ + +# Retrieve actual source archive, e.g. for prebuilt external toolchains +$(BUILD_DIR)/%/.stamp_actual_downloaded: + $(call DOWNLOAD,$($(PKG)_ACTUAL_SOURCE_SITE)/$($(PKG)_ACTUAL_SOURCE_TARBALL)); \ + $(Q)mkdir -p $(@D) + $(Q)touch $@ + +# Unpack the archive +$(BUILD_DIR)/%/.stamp_extracted: + @$(call step_start,extract) + @$(call MESSAGE,"Extracting") + $(foreach hook,$($(PKG)_PRE_EXTRACT_HOOKS),$(call $(hook))$(sep)) + $(Q)mkdir -p $(@D) + $($(PKG)_EXTRACT_CMDS) +# some packages have messed up permissions inside + $(Q)chmod -R +rw $(@D) + $(foreach hook,$($(PKG)_POST_EXTRACT_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,extract) + $(Q)touch $@ + +# Rsync the source directory if the _OVERRIDE_SRCDIR feature is +# used. +$(BUILD_DIR)/%/.stamp_rsynced: + @$(call MESSAGE,"Syncing from source dir $(SRCDIR)") + $(foreach hook,$($(PKG)_PRE_RSYNC_HOOKS),$(call $(hook))$(sep)) + @test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1) + rsync -au --chmod=u=rwX,go=rX $(RSYNC_VCS_EXCLUSIONS) $(call qstrip,$(SRCDIR))/ $(@D) + $(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep)) + $(Q)touch $@ + +# Patch +# +# The RAWNAME variable is the lowercased package name, which allows to +# find the package directory (typically package/) and the +# prefix of the patches +# +# For BR2_GLOBAL_PATCH_DIR, only generate if it is defined +$(BUILD_DIR)/%/.stamp_patched: PATCH_BASE_DIRS = $(PKGDIR) +$(BUILD_DIR)/%/.stamp_patched: PATCH_BASE_DIRS += $(addsuffix /$(RAWNAME),$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) +$(BUILD_DIR)/%/.stamp_patched: + @$(call step_start,patch) + @$(call MESSAGE,"Patching") + $(foreach hook,$($(PKG)_PRE_PATCH_HOOKS),$(call $(hook))$(sep)) + $(foreach p,$($(PKG)_PATCH),$(APPLY_PATCHES) $(@D) $(DL_DIR) $(notdir $(p))$(sep)) + $(Q)( \ + for D in $(PATCH_BASE_DIRS); do \ + if test -d $${D}; then \ + if test -d $${D}/$($(PKG)_VERSION); then \ + $(APPLY_PATCHES) $(@D) $${D}/$($(PKG)_VERSION) \*.patch \*.patch.$(ARCH) || exit 1; \ + else \ + $(APPLY_PATCHES) $(@D) $${D} \*.patch \*.patch.$(ARCH) || exit 1; \ + fi; \ + fi; \ + done; \ + ) + $(foreach hook,$($(PKG)_POST_PATCH_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,patch) + $(Q)touch $@ + +# Check that all directories specified in BR2_GLOBAL_PATCH_DIR exist. +$(foreach dir,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR)),\ + $(if $(wildcard $(dir)),,\ + $(error BR2_GLOBAL_PATCH_DIR contains nonexistent directory $(dir)))) + +# Configure +$(BUILD_DIR)/%/.stamp_configured: + @$(call step_start,configure) + @$(call MESSAGE,"Configuring") + $(foreach hook,$($(PKG)_PRE_CONFIGURE_HOOKS),$(call $(hook))$(sep)) + $($(PKG)_CONFIGURE_CMDS) + $(foreach hook,$($(PKG)_POST_CONFIGURE_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,configure) + $(Q)touch $@ + +# Build +$(BUILD_DIR)/%/.stamp_built:: + @$(call step_start,build) + @$(call MESSAGE,"Building") + $(foreach hook,$($(PKG)_PRE_BUILD_HOOKS),$(call $(hook))$(sep)) + +$($(PKG)_BUILD_CMDS) + $(foreach hook,$($(PKG)_POST_BUILD_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,build) + $(Q)touch $@ + +# Install to host dir +$(BUILD_DIR)/%/.stamp_host_installed: + @$(call step_start,install-host) + @$(call MESSAGE,"Installing to host directory") + $(foreach hook,$($(PKG)_PRE_INSTALL_HOOKS),$(call $(hook))$(sep)) + +$($(PKG)_INSTALL_CMDS) + $(foreach hook,$($(PKG)_POST_INSTALL_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,install-host) + $(Q)touch $@ + +# Install to staging dir +# +# Some packages install libtool .la files alongside any installed +# libraries. These .la files sometimes refer to paths relative to the +# sysroot, which libtool will interpret as absolute paths to host +# libraries instead of the target libraries. Since this is not what we +# want, these paths are fixed by prefixing them with $(STAGING_DIR). +# As we configure with --prefix=/usr, this fix needs to be applied to +# any path that starts with /usr. +# +# To protect against the case that the output or staging directories or +# the pre-installed external toolchain themselves are under /usr, we first +# substitute away any occurrences of these directories with @BASE_DIR@, +# @STAGING_DIR@ and @TOOLCHAIN_EXTERNAL_INSTALL_DIR@ respectively. +# +# Note that STAGING_DIR can be outside BASE_DIR when the user sets +# BR2_HOST_DIR to a custom value. Note that TOOLCHAIN_EXTERNAL_INSTALL_DIR +# can be under @BASE_DIR@ when it's a downloaded toolchain, and can be +# empty when we use an internal toolchain. +# +$(BUILD_DIR)/%/.stamp_staging_installed: + @$(call step_start,install-staging) + @$(call MESSAGE,"Installing to staging directory") + $(foreach hook,$($(PKG)_PRE_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep)) + +$($(PKG)_INSTALL_STAGING_CMDS) + $(foreach hook,$($(PKG)_POST_INSTALL_STAGING_HOOKS),$(call $(hook))$(sep)) + $(Q)if test -n "$($(PKG)_CONFIG_SCRIPTS)" ; then \ + $(call MESSAGE,"Fixing package configuration files") ;\ + $(SED) "s,$(BASE_DIR),@BASE_DIR@,g" \ + -e "s,$(STAGING_DIR),@STAGING_DIR@,g" \ + -e "s,^\(exec_\)\?prefix=.*,\1prefix=@STAGING_DIR@/usr,g" \ + -e "s,-I/usr/,-I@STAGING_DIR@/usr/,g" \ + -e "s,-L/usr/,-L@STAGING_DIR@/usr/,g" \ + -e "s,@STAGING_DIR@,$(STAGING_DIR),g" \ + -e "s,@BASE_DIR@,$(BASE_DIR),g" \ + $(addprefix $(STAGING_DIR)/usr/bin/,$($(PKG)_CONFIG_SCRIPTS)) ;\ + fi + @$(call MESSAGE,"Fixing libtool files") + $(Q)find $(STAGING_DIR)/usr/lib* -name "*.la" | xargs --no-run-if-empty \ + $(SED) "s:$(BASE_DIR):@BASE_DIR@:g" \ + -e "s:$(STAGING_DIR):@STAGING_DIR@:g" \ + $(if $(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ + -e "s:$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:g") \ + -e "s:\(['= ]\)/usr:\\1@STAGING_DIR@/usr:g" \ + $(if $(TOOLCHAIN_EXTERNAL_INSTALL_DIR),\ + -e "s:@TOOLCHAIN_EXTERNAL_INSTALL_DIR@:$(TOOLCHAIN_EXTERNAL_INSTALL_DIR):g") \ + -e "s:@STAGING_DIR@:$(STAGING_DIR):g" \ + -e "s:@BASE_DIR@:$(BASE_DIR):g" + @$(call step_end,install-staging) + $(Q)touch $@ + +# Install to images dir +$(BUILD_DIR)/%/.stamp_images_installed: + @$(call step_start,install-image) + $(foreach hook,$($(PKG)_PRE_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep)) + @$(call MESSAGE,"Installing to images directory") + +$($(PKG)_INSTALL_IMAGES_CMDS) + $(foreach hook,$($(PKG)_POST_INSTALL_IMAGES_HOOKS),$(call $(hook))$(sep)) + @$(call step_end,install-image) + $(Q)touch $@ + +# Install to target dir +$(BUILD_DIR)/%/.stamp_target_installed: + @$(call step_start,install-target) + @$(call MESSAGE,"Installing to target") + $(foreach hook,$($(PKG)_PRE_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep)) + +$($(PKG)_INSTALL_TARGET_CMDS) + $(if $(BR2_INIT_SYSTEMD),\ + $($(PKG)_INSTALL_INIT_SYSTEMD)) + $(if $(BR2_INIT_SYSV)$(BR2_INIT_BUSYBOX),\ + $($(PKG)_INSTALL_INIT_SYSV)) + $(foreach hook,$($(PKG)_POST_INSTALL_TARGET_HOOKS),$(call $(hook))$(sep)) + $(Q)if test -n "$($(PKG)_CONFIG_SCRIPTS)" ; then \ + $(RM) -f $(addprefix $(TARGET_DIR)/usr/bin/,$($(PKG)_CONFIG_SCRIPTS)) ; \ + fi + @$(call step_end,install-target) + $(Q)touch $@ + +# Remove package sources +$(BUILD_DIR)/%/.stamp_dircleaned: + rm -Rf $(@D) + +################################################################################ +# virt-provides-single -- check that provider-pkg is the declared provider for +# the virtual package virt-pkg +# +# argument 1 is the lower-case name of the virtual package +# argument 2 is the upper-case name of the virtual package +# argument 3 is the lower-case name of the provider +# +# example: +# $(call virt-provides-single,libegl,LIBEGL,rpi-userland) +################################################################################ +define virt-provides-single +ifneq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),$(3)) +$$(error Configuration error: both "$(3)" and $$(BR2_PACKAGE_PROVIDES_$(2))\ +are selected as providers for virtual package "$(1)". Only one provider can\ +be selected at a time. Please fix your configuration) +endif +endef + +define pkg-graph-depends + @$$(INSTALL) -d $$(GRAPHS_DIR) + @cd "$$(CONFIG_DIR)"; \ + $$(TOPDIR)/support/scripts/graph-depends $$(BR2_GRAPH_DEPS_OPTS) \ + -p $(1) $(2) -o $$(GRAPHS_DIR)/$$(@).dot + dot $$(BR2_GRAPH_DOT_OPTS) -T$$(BR_GRAPH_OUT) \ + -o $$(GRAPHS_DIR)/$$(@).$$(BR_GRAPH_OUT) \ + $$(GRAPHS_DIR)/$$(@).dot +endef + +################################################################################ +# inner-generic-package -- generates the make targets needed to build a +# generic package +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +# +# Note about variable and function references: inside all blocks that are +# evaluated with $(eval), which includes all 'inner-xxx-package' blocks, +# specific rules apply with respect to variable and function references. +# - Numbered variables (parameters to the block) can be referenced with a single +# dollar sign: $(1), $(2), $(3), etc. +# - pkgdir and pkgname should be referenced with a single dollar sign too. These +# functions rely on 'the most recently parsed makefile' which is supposed to +# be the package .mk file. If we defer the evaluation of these functions using +# double dollar signs, then they may be evaluated too late, when other +# makefiles have already been parsed. One specific case is when $$(pkgdir) is +# assigned to a variable using deferred evaluation with '=' and this variable +# is used in a target rule outside the eval'ed inner block. In this case, the +# pkgdir will be that of the last makefile parsed by buildroot, which is not +# the expected value. This mechanism is for example used for the TARGET_PATCH +# rule. +# - All other variables should be referenced with a double dollar sign: +# $$(TARGET_DIR), $$($(2)_VERSION), etc. Also all make functions should be +# referenced with a double dollar sign: $$(subst), $$(call), $$(filter-out), +# etc. This rule ensures that these variables and functions are only expanded +# during the $(eval) step, and not earlier. Otherwise, unintuitive and +# undesired behavior occurs with respect to these variables and functions. +# +################################################################################ + +define inner-generic-package + +# Ensure the package is only declared once, i.e. do not accept that a +# package be re-defined by a br2-external tree +ifneq ($(call strip,$(filter $(1),$(PACKAGES_ALL))),) +$$(error Package '$(1)' defined a second time in '$(pkgdir)'; \ + previous definition was in '$$($(2)_PKGDIR)') +endif +PACKAGES_ALL += $(1) + +# Define default values for various package-related variables, if not +# already defined. For some variables (version, source, site and +# subdir), if they are undefined, we try to see if a variable without +# the HOST_ prefix is defined. If so, we use such a variable, so that +# this information has only to be specified once, for both the +# target and host packages of a given .mk file. + +$(2)_TYPE = $(4) +$(2)_NAME = $(1) +$(2)_RAWNAME = $$(patsubst host-%,%,$(1)) +$(2)_PKGDIR = $(pkgdir) + +# Keep the package version that may contain forward slashes in the _DL_VERSION +# variable, then replace all forward slashes ('/') by underscores ('_') to +# sanitize the package version that is used in paths, directory and file names. +# Forward slashes may appear in the package's version when pointing to a +# version control system branch or tag, for example remotes/origin/1_10_stable. +# Similar for spaces and colons (:) that may appear in date-based revisions for +# CVS. +ifndef $(2)_VERSION + ifdef $(3)_DL_VERSION + $(2)_DL_VERSION := $$($(3)_DL_VERSION) + else ifdef $(3)_VERSION + $(2)_DL_VERSION := $$($(3)_VERSION) + endif +else + $(2)_DL_VERSION := $$(strip $$($(2)_VERSION)) +endif +$(2)_VERSION := $$(call sanitize,$$($(2)_DL_VERSION)) + +ifdef $(3)_OVERRIDE_SRCDIR + $(2)_OVERRIDE_SRCDIR ?= $$($(3)_OVERRIDE_SRCDIR) +endif + +$(2)_BASENAME = $$(if $$($(2)_VERSION),$(1)-$$($(2)_VERSION),$(1)) +$(2)_BASENAME_RAW = $$(if $$($(2)_VERSION),$$($(2)_RAWNAME)-$$($(2)_VERSION),$$($(2)_RAWNAME)) +$(2)_DL_DIR = $$(DL_DIR) +$(2)_DIR = $$(BUILD_DIR)/$$($(2)_BASENAME) + +ifndef $(2)_SUBDIR + ifdef $(3)_SUBDIR + $(2)_SUBDIR = $$($(3)_SUBDIR) + else + $(2)_SUBDIR ?= + endif +endif + +ifndef $(2)_STRIP_COMPONENTS + ifdef $(3)_STRIP_COMPONENTS + $(2)_STRIP_COMPONENTS = $$($(3)_STRIP_COMPONENTS) + else + $(2)_STRIP_COMPONENTS ?= 1 + endif +endif + +$(2)_SRCDIR = $$($(2)_DIR)/$$($(2)_SUBDIR) +$(2)_BUILDDIR ?= $$($(2)_SRCDIR) + +ifneq ($$($(2)_OVERRIDE_SRCDIR),) +$(2)_VERSION = custom +endif + +ifndef $(2)_SOURCE + ifdef $(3)_SOURCE + $(2)_SOURCE = $$($(3)_SOURCE) + else ifdef $(2)_VERSION + $(2)_SOURCE ?= $$($(2)_BASENAME_RAW).tar.gz + endif +endif + +# If FOO_ACTUAL_SOURCE_TARBALL is explicitly defined, it means FOO_SOURCE is +# indeed a binary (e.g. external toolchain) and FOO_ACTUAL_SOURCE_TARBALL/_SITE +# point to the actual sources tarball. Use the actual sources for legal-info. +# For most packages the FOO_SITE/FOO_SOURCE pair points to real source code, +# so these are the defaults for FOO_ACTUAL_*. +$(2)_ACTUAL_SOURCE_TARBALL ?= $$($(2)_SOURCE) +$(2)_ACTUAL_SOURCE_SITE ?= $$(call qstrip,$$($(2)_SITE)) + +ifndef $(2)_PATCH + ifdef $(3)_PATCH + $(2)_PATCH = $$($(3)_PATCH) + endif +endif + +$(2)_ALL_DOWNLOADS = \ + $$(foreach p,$$($(2)_SOURCE) $$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS),\ + $$(if $$(findstring ://,$$(p)),$$(p),\ + $$($(2)_SITE)/$$(p))) + +ifndef $(2)_SITE + ifdef $(3)_SITE + $(2)_SITE = $$($(3)_SITE) + endif +endif + +ifndef $(2)_SITE_METHOD + ifdef $(3)_SITE_METHOD + $(2)_SITE_METHOD = $$($(3)_SITE_METHOD) + else + # Try automatic detection using the scheme part of the URI + $(2)_SITE_METHOD = $$(call geturischeme,$$($(2)_SITE)) + endif +endif + +# Do not accept to download git submodule if not using the git method +ifneq ($$($(2)_GIT_SUBMODULES),) + ifneq ($$($(2)_SITE_METHOD),git) + $$(error $(2) declares having git sub-modules, but does not use the \ + 'git' method (uses '$$($(2)_SITE_METHOD)' instead)) + endif +endif + +ifeq ($$($(2)_SITE_METHOD),local) +ifeq ($$($(2)_OVERRIDE_SRCDIR),) +$(2)_OVERRIDE_SRCDIR = $$($(2)_SITE) +endif +ifeq ($$($(2)_OVERRIDE_SRCDIR),) +$$(error $(1) has local site method, but `$(2)_SITE` is not defined) +endif +endif + +ifndef $(2)_LICENSE + ifdef $(3)_LICENSE + $(2)_LICENSE = $$($(3)_LICENSE) + endif +endif + +$(2)_LICENSE ?= unknown + +ifndef $(2)_LICENSE_FILES + ifdef $(3)_LICENSE_FILES + $(2)_LICENSE_FILES = $$($(3)_LICENSE_FILES) + endif +endif + +ifndef $(2)_REDISTRIBUTE + ifdef $(3)_REDISTRIBUTE + $(2)_REDISTRIBUTE = $$($(3)_REDISTRIBUTE) + endif +endif + +$(2)_REDISTRIBUTE ?= YES + +$(2)_REDIST_SOURCES_DIR = $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4)))/$$($(2)_BASENAME_RAW) + +# When a target package is a toolchain dependency set this variable to +# 'NO' so the 'toolchain' dependency is not added to prevent a circular +# dependency. +# Similarly for the skeleton. +$(2)_ADD_TOOLCHAIN_DEPENDENCY ?= YES +$(2)_ADD_SKELETON_DEPENDENCY ?= YES + + +ifeq ($(4),target) +ifeq ($$($(2)_ADD_SKELETON_DEPENDENCY),YES) +$(2)_DEPENDENCIES += skeleton +endif +ifeq ($$($(2)_ADD_TOOLCHAIN_DEPENDENCY),YES) +$(2)_DEPENDENCIES += toolchain +endif +endif + +# Eliminate duplicates in dependencies +$(2)_FINAL_DEPENDENCIES = $$(sort $$($(2)_DEPENDENCIES)) +$(2)_FINAL_PATCH_DEPENDENCIES = $$(sort $$($(2)_PATCH_DEPENDENCIES)) +$(2)_FINAL_ALL_DEPENDENCIES = $$(sort $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES)) + +$(2)_INSTALL_STAGING ?= NO +$(2)_INSTALL_IMAGES ?= NO +$(2)_INSTALL_TARGET ?= YES + +# define sub-target stamps +$(2)_TARGET_INSTALL_TARGET = $$($(2)_DIR)/.stamp_target_installed +$(2)_TARGET_INSTALL_STAGING = $$($(2)_DIR)/.stamp_staging_installed +$(2)_TARGET_INSTALL_IMAGES = $$($(2)_DIR)/.stamp_images_installed +$(2)_TARGET_INSTALL_HOST = $$($(2)_DIR)/.stamp_host_installed +$(2)_TARGET_BUILD = $$($(2)_DIR)/.stamp_built +$(2)_TARGET_CONFIGURE = $$($(2)_DIR)/.stamp_configured +$(2)_TARGET_RSYNC = $$($(2)_DIR)/.stamp_rsynced +$(2)_TARGET_PATCH = $$($(2)_DIR)/.stamp_patched +$(2)_TARGET_EXTRACT = $$($(2)_DIR)/.stamp_extracted +$(2)_TARGET_SOURCE = $$($(2)_DIR)/.stamp_downloaded +$(2)_TARGET_ACTUAL_SOURCE = $$($(2)_DIR)/.stamp_actual_downloaded +$(2)_TARGET_DIRCLEAN = $$($(2)_DIR)/.stamp_dircleaned + +# default extract command +$(2)_EXTRACT_CMDS ?= \ + $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $$(DL_DIR)/$$($(2)_SOURCE) | \ + $$(TAR) --strip-components=$$($(2)_STRIP_COMPONENTS) \ + -C $$($(2)_DIR) \ + $$(foreach x,$$($(2)_EXCLUDES),--exclude='$$(x)' ) \ + $$(TAR_OPTIONS) -) + +# pre/post-steps hooks +$(2)_PRE_DOWNLOAD_HOOKS ?= +$(2)_POST_DOWNLOAD_HOOKS ?= +$(2)_PRE_EXTRACT_HOOKS ?= +$(2)_POST_EXTRACT_HOOKS ?= +$(2)_PRE_RSYNC_HOOKS ?= +$(2)_POST_RSYNC_HOOKS ?= +$(2)_PRE_PATCH_HOOKS ?= +$(2)_POST_PATCH_HOOKS ?= +$(2)_PRE_CONFIGURE_HOOKS ?= +$(2)_POST_CONFIGURE_HOOKS ?= +$(2)_PRE_BUILD_HOOKS ?= +$(2)_POST_BUILD_HOOKS ?= +$(2)_PRE_INSTALL_HOOKS ?= +$(2)_POST_INSTALL_HOOKS ?= +$(2)_PRE_INSTALL_STAGING_HOOKS ?= +$(2)_POST_INSTALL_STAGING_HOOKS ?= +$(2)_PRE_INSTALL_TARGET_HOOKS ?= +$(2)_POST_INSTALL_TARGET_HOOKS ?= +$(2)_PRE_INSTALL_IMAGES_HOOKS ?= +$(2)_POST_INSTALL_IMAGES_HOOKS ?= +$(2)_PRE_LEGAL_INFO_HOOKS ?= +$(2)_POST_LEGAL_INFO_HOOKS ?= +$(2)_TARGET_FINALIZE_HOOKS ?= +$(2)_ROOTFS_PRE_CMD_HOOKS ?= +$(2)_ROOTFS_POST_CMD_HOOKS ?= + +# human-friendly targets and target sequencing +$(1): $(1)-install + +ifeq ($$($(2)_TYPE),host) +$(1)-install: $(1)-install-host +else +$(1)-install: $(1)-install-staging $(1)-install-target $(1)-install-images +endif + +ifeq ($$($(2)_INSTALL_TARGET),YES) +$(1)-install-target: $$($(2)_TARGET_INSTALL_TARGET) +$$($(2)_TARGET_INSTALL_TARGET): $$($(2)_TARGET_BUILD) +else +$(1)-install-target: +endif + +ifeq ($$($(2)_INSTALL_STAGING),YES) +$(1)-install-staging: $$($(2)_TARGET_INSTALL_STAGING) +$$($(2)_TARGET_INSTALL_STAGING): $$($(2)_TARGET_BUILD) +# Some packages use install-staging stuff for install-target +$$($(2)_TARGET_INSTALL_TARGET): $$($(2)_TARGET_INSTALL_STAGING) +else +$(1)-install-staging: +endif + +ifeq ($$($(2)_INSTALL_IMAGES),YES) +$(1)-install-images: $$($(2)_TARGET_INSTALL_IMAGES) +$$($(2)_TARGET_INSTALL_IMAGES): $$($(2)_TARGET_BUILD) +else +$(1)-install-images: +endif + +$(1)-install-host: $$($(2)_TARGET_INSTALL_HOST) +$$($(2)_TARGET_INSTALL_HOST): $$($(2)_TARGET_BUILD) + +$(1)-build: $$($(2)_TARGET_BUILD) +$$($(2)_TARGET_BUILD): $$($(2)_TARGET_CONFIGURE) + +# Since $(2)_FINAL_DEPENDENCIES are phony targets, they are always "newer" +# than $(2)_TARGET_CONFIGURE. This would force the configure step (and +# therefore the other steps as well) to be re-executed with every +# invocation of make. Therefore, make $(2)_FINAL_DEPENDENCIES an order-only +# dependency by using |. + +$(1)-configure: $$($(2)_TARGET_CONFIGURE) +$$($(2)_TARGET_CONFIGURE): | $$($(2)_FINAL_DEPENDENCIES) + +$$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | dirs prepare +ifeq ($$(filter $(1),$$(DEPENDENCIES_HOST_PREREQ)),) +$$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | dependencies +endif + +ifeq ($$($(2)_OVERRIDE_SRCDIR),) +# In the normal case (no package override), the sequence of steps is +# source, by downloading +# depends +# extract +# patch +# configure +$$($(2)_TARGET_CONFIGURE): $$($(2)_TARGET_PATCH) + +$(1)-patch: $$($(2)_TARGET_PATCH) +$$($(2)_TARGET_PATCH): $$($(2)_TARGET_EXTRACT) +# Order-only dependency +$$($(2)_TARGET_PATCH): | $$(patsubst %,%-patch,$$($(2)_FINAL_PATCH_DEPENDENCIES)) + +$(1)-extract: $$($(2)_TARGET_EXTRACT) +$$($(2)_TARGET_EXTRACT): $$($(2)_TARGET_SOURCE) + +$(1)-depends: $$($(2)_FINAL_DEPENDENCIES) + +$(1)-source: $$($(2)_TARGET_SOURCE) + +$(1)-all-source: $(1)-legal-source +$(1)-legal-info: $(1)-legal-source +$(1)-legal-source: $(1)-source + +# Only download the actual source if it differs from the 'main' archive +ifneq ($$($(2)_ACTUAL_SOURCE_TARBALL),) +ifneq ($$($(2)_ACTUAL_SOURCE_TARBALL),$$($(2)_SOURCE)) +$(1)-legal-source: $$($(2)_TARGET_ACTUAL_SOURCE) +endif # actual sources != sources +endif # actual sources != "" + +$(1)-external-deps: + @for p in $$($(2)_SOURCE) $$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS) ; do \ + echo `basename $$$$p` ; \ + done +else +# In the package override case, the sequence of steps +# source, by rsyncing +# depends +# configure + +# Use an order-only dependency so the "-clean-for-rebuild" rule +# can remove the stamp file without triggering the configure step. +$$($(2)_TARGET_CONFIGURE): | $$($(2)_TARGET_RSYNC) + +$(1)-depends: $$($(2)_FINAL_DEPENDENCIES) + +$(1)-patch: $(1)-rsync +$(1)-extract: $(1)-rsync + +$(1)-rsync: $$($(2)_TARGET_RSYNC) + +$(1)-source: +$(1)-legal-source: + +$(1)-external-deps: + @echo "file://$$($(2)_OVERRIDE_SRCDIR)" +endif + +$(1)-show-version: + @echo $$($(2)_VERSION) + +$(1)-show-depends: + @echo $$($(2)_FINAL_ALL_DEPENDENCIES) + +$(1)-show-rdepends: + @echo $$($(2)_RDEPENDENCIES) + +$(1)-show-build-order: $$(patsubst %,%-show-build-order,$$($(2)_FINAL_ALL_DEPENDENCIES)) + $$(info $(1)) + +$(1)-graph-depends: graph-depends-requirements + $(call pkg-graph-depends,$(1),--direct) + +$(1)-graph-rdepends: graph-depends-requirements + $(call pkg-graph-depends,$(1),--reverse) + +$(1)-all-source: $(1)-source +$(1)-all-source: $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-source) + +$(1)-all-external-deps: $(1)-external-deps +$(1)-all-external-deps: $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-external-deps) + +$(1)-all-legal-info: $(1)-legal-info +$(1)-all-legal-info: $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-legal-info) + +$(1)-dirclean: $$($(2)_TARGET_DIRCLEAN) + +$(1)-clean-for-reinstall: +ifneq ($$($(2)_OVERRIDE_SRCDIR),) + rm -f $$($(2)_TARGET_RSYNC) +endif + rm -f $$($(2)_TARGET_INSTALL_STAGING) + rm -f $$($(2)_TARGET_INSTALL_TARGET) + rm -f $$($(2)_TARGET_INSTALL_IMAGES) + rm -f $$($(2)_TARGET_INSTALL_HOST) + +$(1)-reinstall: $(1)-clean-for-reinstall $(1) + +$(1)-clean-for-rebuild: $(1)-clean-for-reinstall + rm -f $$($(2)_TARGET_BUILD) + +$(1)-rebuild: $(1)-clean-for-rebuild $(1) + +$(1)-clean-for-reconfigure: $(1)-clean-for-rebuild + rm -f $$($(2)_TARGET_CONFIGURE) + +$(1)-reconfigure: $(1)-clean-for-reconfigure $(1) + +# define the PKG variable for all targets, containing the +# uppercase package variable prefix +$$($(2)_TARGET_INSTALL_TARGET): PKG=$(2) +$$($(2)_TARGET_INSTALL_STAGING): PKG=$(2) +$$($(2)_TARGET_INSTALL_IMAGES): PKG=$(2) +$$($(2)_TARGET_INSTALL_HOST): PKG=$(2) +$$($(2)_TARGET_BUILD): PKG=$(2) +$$($(2)_TARGET_CONFIGURE): PKG=$(2) +$$($(2)_TARGET_RSYNC): SRCDIR=$$($(2)_OVERRIDE_SRCDIR) +$$($(2)_TARGET_RSYNC): PKG=$(2) +$$($(2)_TARGET_PATCH): PKG=$(2) +$$($(2)_TARGET_PATCH): RAWNAME=$$(patsubst host-%,%,$(1)) +$$($(2)_TARGET_PATCH): PKGDIR=$(pkgdir) +$$($(2)_TARGET_EXTRACT): PKG=$(2) +$$($(2)_TARGET_SOURCE): PKG=$(2) +$$($(2)_TARGET_SOURCE): PKGDIR=$(pkgdir) +$$($(2)_TARGET_ACTUAL_SOURCE): PKG=$(2) +$$($(2)_TARGET_ACTUAL_SOURCE): PKGDIR=$(pkgdir) +$$($(2)_TARGET_DIRCLEAN): PKG=$(2) + +# Compute the name of the Kconfig option that correspond to the +# package being enabled. We handle three cases: the special Linux +# kernel case, the bootloaders case, and the normal packages case. +ifeq ($(1),linux) +$(2)_KCONFIG_VAR = BR2_LINUX_KERNEL +else ifneq ($$(filter boot/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/boot/%),$(pkgdir)),) +$(2)_KCONFIG_VAR = BR2_TARGET_$(2) +else ifneq ($$(filter toolchain/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/toolchain/%),$(pkgdir)),) +$(2)_KCONFIG_VAR = BR2_$(2) +else +$(2)_KCONFIG_VAR = BR2_PACKAGE_$(2) +endif + +# legal-info: declare dependencies and set values used later for the manifest +ifneq ($$($(2)_LICENSE_FILES),) +$(2)_MANIFEST_LICENSE_FILES = $$($(2)_LICENSE_FILES) +endif + +# We need to extract and patch a package to be able to retrieve its +# license files (if any) and the list of patches applied to it (if +# any). +$(1)-legal-info: $(1)-patch + +# We only save the sources of packages we want to redistribute, that are +# non-overriden (local or true override). +ifeq ($$($(2)_REDISTRIBUTE),YES) +ifeq ($$($(2)_OVERRIDE_SRCDIR),) +# Packages that have a tarball need it downloaded beforehand +$(1)-legal-info: $(1)-source $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4))) +endif +endif + +# legal-info: produce legally relevant info. +$(1)-legal-info: PKG=$(2) +$(1)-legal-info: + @$$(call MESSAGE,"Collecting legal info") +# Packages without a source are assumed to be part of Buildroot, skip them. + $$(foreach hook,$$($(2)_PRE_LEGAL_INFO_HOOKS),$$(call $$(hook))$$(sep)) +ifneq ($$(call qstrip,$$($(2)_SOURCE)),) + +# Save license files if defined +# We save the license files for any kind of package: normal, local, +# overridden, or non-redistributable alike. +# The reason to save license files even for no-redistribute packages +# is that the license still applies to the files distributed as part +# of the rootfs, even if the sources are not themselves redistributed. +ifeq ($$(call qstrip,$$($(2)_LICENSE_FILES)),) + $(Q)$$(call legal-warning-pkg,$$($(2)_BASENAME_RAW),cannot save license ($(2)_LICENSE_FILES not defined)) +else + $(Q)$$(foreach F,$$($(2)_LICENSE_FILES),$$(call legal-license-file,$$($(2)_RAWNAME),$$($(2)_BASENAME_RAW),$$($(2)_PKGDIR),$$(F),$$($(2)_DIR)/$$(F),$$(call UPPERCASE,$(4)))$$(sep)) +endif # license files + +ifeq ($$($(2)_SITE_METHOD),local) +# Packages without a tarball: don't save and warn + @$$(call legal-warning-nosource,$$($(2)_RAWNAME),local) + +else ifneq ($$($(2)_OVERRIDE_SRCDIR),) + @$$(call legal-warning-nosource,$$($(2)_RAWNAME),override) + +else +# Other packages + +ifeq ($$($(2)_REDISTRIBUTE),YES) +# Save the source tarball and any extra downloads, but not +# patches, as they are handled specially afterwards. + $$(foreach e,$$($(2)_ACTUAL_SOURCE_TARBALL) $$(notdir $$($(2)_EXTRA_DOWNLOADS)),\ + $$(Q)support/scripts/hardlink-or-copy \ + $$(DL_DIR)/$$(e) \ + $$($(2)_REDIST_SOURCES_DIR)$$(sep)) +# Save patches and generate the series file + $$(Q)while read f; do \ + support/scripts/hardlink-or-copy \ + $$$${f} \ + $$($(2)_REDIST_SOURCES_DIR) || exit 1; \ + printf "%s\n" "$$$${f##*/}" >>$$($(2)_REDIST_SOURCES_DIR)/series || exit 1; \ + done <$$($(2)_DIR)/.applied_patches_list +endif # redistribute + +endif # other packages + @$$(call legal-manifest,$$($(2)_RAWNAME),$$($(2)_VERSION),$$($(2)_LICENSE),$$($(2)_MANIFEST_LICENSE_FILES),$$($(2)_ACTUAL_SOURCE_TARBALL),$$($(2)_ACTUAL_SOURCE_SITE),$$(call UPPERCASE,$(4))) +endif # ifneq ($$(call qstrip,$$($(2)_SOURCE)),) + $$(foreach hook,$$($(2)_POST_LEGAL_INFO_HOOKS),$$(call $$(hook))$$(sep)) + +# add package to the general list of targets if requested by the buildroot +# configuration +ifeq ($$($$($(2)_KCONFIG_VAR)),y) + +# Ensure the calling package is the declared provider for all the virtual +# packages it claims to be an implementation of. +ifneq ($$($(2)_PROVIDES),) +$$(foreach pkg,$$($(2)_PROVIDES),\ + $$(eval $$(call virt-provides-single,$$(pkg),$$(call UPPERCASE,$$(pkg)),$(1))$$(sep))) +endif + +# Register package as a reverse-dependencies of all its dependencies +$$(eval $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),\ + $$(call UPPERCASE,$$(p))_RDEPENDENCIES += $(1)$$(sep))) + +# Ensure unified variable name conventions between all packages Some +# of the variables are used by more than one infrastructure; so, +# rather than duplicating the checks in each infrastructure, we check +# all variables here in pkg-generic, even though pkg-generic should +# have no knowledge of infra-specific variables. +$(eval $(call check-deprecated-variable,$(2)_MAKE_OPT,$(2)_MAKE_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_INSTALL_OPT,$(2)_INSTALL_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_INSTALL_TARGET_OPT,$(2)_INSTALL_TARGET_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_INSTALL_STAGING_OPT,$(2)_INSTALL_STAGING_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_INSTALL_HOST_OPT,$(2)_INSTALL_HOST_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_AUTORECONF_OPT,$(2)_AUTORECONF_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_CONF_OPT,$(2)_CONF_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_BUILD_OPT,$(2)_BUILD_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_GETTEXTIZE_OPT,$(2)_GETTEXTIZE_OPTS)) +$(eval $(call check-deprecated-variable,$(2)_KCONFIG_OPT,$(2)_KCONFIG_OPTS)) + +PACKAGES += $(1) + +ifneq ($$($(2)_PERMISSIONS),) +PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep) +endif +ifneq ($$($(2)_DEVICES),) +PACKAGES_DEVICES_TABLE += $$($(2)_DEVICES)$$(sep) +endif +ifneq ($$($(2)_USERS),) +PACKAGES_USERS += $$($(2)_USERS)$$(sep) +endif +TARGET_FINALIZE_HOOKS += $$($(2)_TARGET_FINALIZE_HOOKS) +ROOTFS_PRE_CMD_HOOKS += $$($(2)_ROOTFS_PRE_CMD_HOOKS) +ROOTFS_POST_CMD_HOOKS += $$($(2)_ROOTFS_POST_CMD_HOOKS) + +ifeq ($$($(2)_SITE_METHOD),svn) +DL_TOOLS_DEPENDENCIES += svn +else ifeq ($$($(2)_SITE_METHOD),git) +DL_TOOLS_DEPENDENCIES += git +else ifeq ($$($(2)_SITE_METHOD),bzr) +DL_TOOLS_DEPENDENCIES += bzr +else ifeq ($$($(2)_SITE_METHOD),scp) +DL_TOOLS_DEPENDENCIES += scp ssh +else ifeq ($$($(2)_SITE_METHOD),hg) +DL_TOOLS_DEPENDENCIES += hg +else ifeq ($$($(2)_SITE_METHOD),cvs) +DL_TOOLS_DEPENDENCIES += cvs +endif # SITE_METHOD + +DL_TOOLS_DEPENDENCIES += $$(call extractor-dependency,$$($(2)_SOURCE)) + +# Ensure all virtual targets are PHONY. Listed alphabetically. +.PHONY: $(1) \ + $(1)-all-external-deps \ + $(1)-all-legal-info \ + $(1)-all-source \ + $(1)-build \ + $(1)-clean-for-rebuild \ + $(1)-clean-for-reconfigure \ + $(1)-clean-for-reinstall \ + $(1)-configure \ + $(1)-depends \ + $(1)-dirclean \ + $(1)-external-deps \ + $(1)-extract \ + $(1)-graph-depends \ + $(1)-install \ + $(1)-install-host \ + $(1)-install-images \ + $(1)-install-staging \ + $(1)-install-target \ + $(1)-legal-info \ + $(1)-legal-source \ + $(1)-patch \ + $(1)-rebuild \ + $(1)-reconfigure \ + $(1)-reinstall \ + $(1)-rsync \ + $(1)-show-depends \ + $(1)-show-version \ + $(1)-source + +ifneq ($$($(2)_SOURCE),) +ifeq ($$($(2)_SITE),) +$$(error $(2)_SITE cannot be empty when $(2)_SOURCE is not) +endif +endif + +ifeq ($$(patsubst %/,ERROR,$$($(2)_SITE)),ERROR) +$$(error $(2)_SITE ($$($(2)_SITE)) cannot have a trailing slash) +endif + +ifneq ($$($(2)_HELP_CMDS),) +HELP_PACKAGES += $(2) +endif + +endif # $(2)_KCONFIG_VAR +endef # inner-generic-package + +################################################################################ +# generic-package -- the target generator macro for generic packages +################################################################################ + +# In the case of target packages, keep the package name "pkg" +generic-package = $(call inner-generic-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +# In the case of host packages, turn the package name "pkg" into "host-pkg" +host-generic-package = $(call inner-generic-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) + +# :mode=makefile: diff --git a/buildroot/package/pkg-kconfig.mk b/buildroot/package/pkg-kconfig.mk new file mode 100644 index 0000000..0402f81 --- /dev/null +++ b/buildroot/package/pkg-kconfig.mk @@ -0,0 +1,243 @@ +################################################################################ +# Kconfig package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for packages that use kconfig for configuration files. +# It is based on the generic-package infrastructure, and inherits all of its +# features. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure. +# +################################################################################ + +################################################################################ +# inner-kconfig-package -- generates the make targets needed to support a +# kconfig package +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ + +define inner-kconfig-package + +# Call the generic package infrastructure to generate the necessary +# make targets. +# Note: this must be done _before_ attempting to use $$($(2)_DIR) in a +# dependency expression +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +# Default values +$(2)_KCONFIG_EDITORS ?= menuconfig +$(2)_KCONFIG_OPTS ?= +$(2)_KCONFIG_FIXUP_CMDS ?= +$(2)_KCONFIG_FRAGMENT_FILES ?= +$(2)_KCONFIG_DOTCONFIG ?= .config + +# The config file as well as the fragments could be in-tree, so before +# depending on them the package should be extracted (and patched) first. +# +# Since those files only have a order-only dependency, make would treat +# any missing one as a "force" target: +# https://www.gnu.org/software/make/manual/make.html#Force-Targets +# and would forcibly any rule that depend on those files, causing a +# rebuild of the kernel each time make is called. +# +# So, we provide a recipe that checks all of those files exist, to +# overcome that standard make behaviour. +# +$$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES): | $(1)-patch + for f in $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES); do \ + if [ ! -f "$$$${f}" ]; then \ + printf "Kconfig fragment '%s' for '%s' does not exist\n" "$$$${f}" "$(1)"; \ + exit 1; \ + fi; \ + done + +$(2)_KCONFIG_MAKE = \ + $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) $$($(2)_KCONFIG_OPTS) + +# $(2)_KCONFIG_MAKE may already rely on shell expansion. As the $() syntax +# of the shell conflicts with Make's own syntax, this means that backticks +# are used with those shell constructs. Unfortunately, the backtick syntax +# does not nest, and we need to use Make instead of the shell to handle +# conditions. + +# A recursively expanded variable is necessary, to be sure that the shell +# command is called when the rule is processed during the build and not +# when the rule is created when parsing all packages. +$(2)_KCONFIG_RULES = \ + $$(shell $$($(2)_KCONFIG_MAKE) -pn config 2>/dev/null | \ + sed 's/^\([_0-9a-zA-Z]*config\):.*/\1/ p; d') + +# The correct way to regenerate a .config file is to use 'make olddefconfig'. +# For historical reasons, the target name is 'oldnoconfig' between Linux kernel +# versions 2.6.36 and 3.6, and remains as an alias in later versions. +# In older versions, and in some other projects that use kconfig, the target is +# not supported at all, and we use 'yes "" | make oldconfig' as a fallback +# only, as this can fail in complex cases. +define $(2)_REGEN_DOT_CONFIG + $$(if $$(filter olddefconfig,$$($(2)_KCONFIG_RULES)), + $$(Q)$$($(2)_KCONFIG_MAKE) olddefconfig, + $$(if $$(filter oldnoconfig,$$($(2)_KCONFIG_RULES)), + $$(Q)$$($(2)_KCONFIG_MAKE) oldnoconfig, + $$(Q)(yes "" | $$($(2)_KCONFIG_MAKE) oldconfig))) +endef + +# The specified source configuration file and any additional configuration file +# fragments are merged together to .config, after the package has been patched. +# Since the file could be a defconfig file it needs to be expanded to a +# full .config first. +$$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG): $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES) + $$(Q)$$(if $$($(2)_KCONFIG_DEFCONFIG), \ + $$($(2)_KCONFIG_MAKE) $$($(2)_KCONFIG_DEFCONFIG), \ + $$(INSTALL) -m 0644 -D $$($(2)_KCONFIG_FILE) $$(@)) + $$(Q)support/kconfig/merge_config.sh -m -O $$(@D) \ + $$(@) $$($(2)_KCONFIG_FRAGMENT_FILES) + $$($(2)_REGEN_DOT_CONFIG) + +# If _KCONFIG_FILE or _KCONFIG_FRAGMENT_FILES exists, this dependency is +# already implied, but if we only have a _KCONFIG_DEFCONFIG we have to add +# it explicitly. It doesn't hurt to always have it though. +$$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG): | $(1)-patch + +# In order to get a usable, consistent configuration, some fixup may be needed. +# The exact rules are specified by the package .mk file. +define $(2)_FIXUP_DOT_CONFIG + $$($(2)_KCONFIG_FIXUP_CMDS) + $$($(2)_REGEN_DOT_CONFIG) + $$(Q)touch $$($(2)_DIR)/.stamp_kconfig_fixup_done +endef + +$$($(2)_DIR)/.stamp_kconfig_fixup_done: $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) + $$($(2)_FIXUP_DOT_CONFIG) + +# Before running configure, the configuration file should be present and fixed +$$($(2)_TARGET_CONFIGURE): $$($(2)_DIR)/.stamp_kconfig_fixup_done + +# Force olddefconfig again on -reconfigure +$(1)-clean-for-reconfigure: $(1)-clean-kconfig-for-reconfigure + +$(1)-clean-kconfig-for-reconfigure: + rm -f $$($(2)_DIR)/.stamp_kconfig_fixup_done + +# Only enable the foo-*config targets when the package is actually enabled. +# Note: the variable $(2)_KCONFIG_VAR is not related to the kconfig +# infrastructure, but defined by pkg-generic.mk. The generic infrastructure is +# already called above, so we can effectively use this variable. +ifeq ($$($$($(2)_KCONFIG_VAR)),y) + +ifeq ($$(BR_BUILDING),y) +# Either FOO_KCONFIG_FILE or FOO_KCONFIG_DEFCONFIG is required... +ifeq ($$(or $$($(2)_KCONFIG_FILE),$$($(2)_KCONFIG_DEFCONFIG)),) +$$(error Internal error: no value specified for $(2)_KCONFIG_FILE or $(2)_KCONFIG_DEFCONFIG) +endif +# ... but not both: +ifneq ($$(and $$($(2)_KCONFIG_FILE),$$($(2)_KCONFIG_DEFCONFIG)),) +$$(error Internal error: $(2)_KCONFIG_FILE and $(2)_KCONFIG_DEFCONFIG are mutually exclusive but both are defined) +endif +endif + +# For the configurators, we do want to use the system-provided host +# tools, not the ones we build. This is particularly true for +# pkg-config; if we use our pkg-config (from host-pkgconf), then it +# would not look for the .pc from the host, but we do need them, +# especially to find ncurses, GTK+, Qt (resp. for menuconfig and +# nconfig, gconfig, xconfig). +# So we simply remove our PATH and PKG_CONFIG_* variables. +$(2)_CONFIGURATOR_MAKE_ENV = \ + $$(filter-out PATH=% PKG_CONFIG=% PKG_CONFIG_SYSROOT_DIR=% PKG_CONFIG_LIBDIR=%,$$($(2)_MAKE_ENV)) \ + PKG_CONFIG_PATH="$(HOST_PKG_CONFIG_PATH)" + +# Configuration editors (menuconfig, ...) +# +# We need to apply the configuration fixups right after a configuration +# editor exits, so that it is possible to save the configuration right +# after exiting an editor, and so the user always sees a .config file +# that is clean wrt. our requirements. +# +# Because commands in $(1)_FIXUP_KCONFIG are probably using $(@D), we +# need to have a valid @D set. But, because the configurators rules are +# not real files and do not contain the path to the package build dir, +# @D would be just '.' in this case. So, we use an intermediate rule +# with a stamp-like file which path is in the package build dir, so we +# end up having a valid @D. +# +$$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS)): $(1)-%: $$($(2)_DIR)/.kconfig_editor_% +$$($(2)_DIR)/.kconfig_editor_%: $$($(2)_DIR)/.stamp_kconfig_fixup_done + $$($(2)_CONFIGURATOR_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) \ + $$($(2)_KCONFIG_OPTS) $$(*) + rm -f $$($(2)_DIR)/.stamp_{kconfig_fixup_done,configured,built} + rm -f $$($(2)_DIR)/.stamp_{target,staging,images}_installed + $$($(2)_FIXUP_DOT_CONFIG) + +# Saving back the configuration +# +# Ideally, that should directly depend on $$($(2)_DIR)/.stamp_kconfig_fixup_done, +# but that breaks the use-case in PR-8156 (from a clean tree): +# make menuconfig <- enable kernel, use an in-tree defconfig, save and exit +# make linux-menuconfig <- enable/disable whatever option, save and exit +# make menuconfig <- change to use a custom defconfig file, set a path, save and exit +# make linux-update-config <- should save to the new custom defconfig file +# +# Because of that use-case, saving the configuration can *not* directly +# depend on the stamp file, because it itself depends on the .config, +# which in turn depends on the (newly-set an non-existent) custom +# defconfig file. +# +# Instead, we use a PHONY rule that will catch that situation. +# +$(1)-check-configuration-done: + @if [ ! -f $$($(2)_DIR)/.stamp_kconfig_fixup_done ]; then \ + echo "$(1) is not yet configured"; \ + exit 1; \ + fi + +$(1)-savedefconfig: $(1)-check-configuration-done + $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) \ + $$($(2)_KCONFIG_OPTS) savedefconfig + +# Target to copy back the configuration to the source configuration file +# Even though we could use 'cp --preserve-timestamps' here, the separate +# cp and 'touch --reference' is used for symmetry with $(1)-update-defconfig. +$(1)-update-config: $(1)-check-configuration-done + @$$(if $$($(2)_KCONFIG_FRAGMENT_FILES), \ + echo "Unable to perform $(1)-update-config when fragment files are set"; exit 1) + @$$(if $$($(2)_KCONFIG_DEFCONFIG), \ + echo "Unable to perform $(1)-update-config when using a defconfig rule"; exit 1) + cp -f $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_KCONFIG_FILE) + touch --reference $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_KCONFIG_FILE) + +# Note: make sure the timestamp of the stored configuration is not newer than +# the .config to avoid a useless rebuild. Note that, contrary to +# $(1)-update-config, the reference for 'touch' is _not_ the file from which +# we copy. +$(1)-update-defconfig: $(1)-savedefconfig + @$$(if $$($(2)_KCONFIG_FRAGMENT_FILES), \ + echo "Unable to perform $(1)-update-defconfig when fragment files are set"; exit 1) + @$$(if $$($(2)_KCONFIG_DEFCONFIG), \ + echo "Unable to perform $(1)-update-defconfig when using a defconfig rule"; exit 1) + cp -f $$($(2)_DIR)/defconfig $$($(2)_KCONFIG_FILE) + touch --reference $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_KCONFIG_FILE) + +endif # package enabled + +.PHONY: \ + $(1)-update-config \ + $(1)-update-defconfig \ + $(1)-savedefconfig \ + $(1)-check-configuration-done \ + $$($(2)_DIR)/.kconfig_editor_% \ + $$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS)) + +endef # inner-kconfig-package + +################################################################################ +# kconfig-package -- the target generator macro for kconfig packages +################################################################################ + +kconfig-package = $(call inner-kconfig-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) diff --git a/buildroot/package/pkg-kernel-module.mk b/buildroot/package/pkg-kernel-module.mk new file mode 100644 index 0000000..fcd6b8b --- /dev/null +++ b/buildroot/package/pkg-kernel-module.mk @@ -0,0 +1,101 @@ +################################################################################ +# kernel module infrastructure for building Linux kernel modules +# +# This file implements an infrastructure that eases development of package +# .mk files for out-of-tree Linux kernel modules. It should be used for all +# packages that build a Linux kernel module using the kernel's out-of-tree +# buildsystem, unless they use a complex custom buildsystem. +# +# The kernel-module infrastructure requires the packages that use it to also +# use another package infrastructure. kernel-module only defines post-build +# and post-install hooks. This allows the package to build both kernel +# modules and/or user-space components (with any of the other *-package +# infra). +# +# As such, it is to be used in conjunction with another *-package infra, +# like so: +# +# $(eval $(kernel-module)) +# $(eval $(generic-package)) +# +# Note: if the caller needs access to the kernel modules (either after they +# are built or after they are installed), it will have to define its own +# post-build/install hooks *after* calling kernel-module, but *before* +# calling the other *-package infra, like so: +# +# $(eval $(kernel-module)) +# define FOO_MOD_TWEAK +# # do something +# endef +# FOO_POST_BUILD_HOOKS += FOO_MOD_TWEAK +# $(eval $(generic-package)) +# +# Note: this infra does not check that the kernel is enabled; it is expected +# to be enforced at the Kconfig level with proper 'depends on'. +################################################################################ + +################################################################################ +# inner-kernel-module -- generates the make targets needed to support building +# a kernel module +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name +################################################################################ + +define inner-kernel-module + +# If the package is enabled, ensure the kernel will support modules +ifeq ($$(BR2_PACKAGE_$(2)),y) +LINUX_NEEDS_MODULES = y +endif + +# The kernel must be built first. +$(2)_DEPENDENCIES += linux + +# This is only defined in some infrastructures (e.g. autotools, cmake), +# but not in others (e.g. generic). So define it here as well. +$(2)_MAKE ?= $$(MAKE) + +# If not specified, consider the source of the kernel module to be at +# the root of the package. +$(2)_MODULE_SUBDIRS ?= . + +# Build the kernel module(s) +# Force PWD for those packages that want to use it to find their +# includes and other support files (Booo!) +define $(2)_KERNEL_MODULES_BUILD + @$$(call MESSAGE,"Building kernel module(s)") + $$(foreach d,$$($(2)_MODULE_SUBDIRS), \ + $$(LINUX_MAKE_ENV) $$($$(PKG)_MAKE) \ + -C $$(LINUX_DIR) \ + $$(LINUX_MAKE_FLAGS) \ + $$($(2)_MODULE_MAKE_OPTS) \ + PWD=$$(@D)/$$(d) \ + M=$$(@D)/$$(d) \ + modules$$(sep)) +endef +$(2)_POST_BUILD_HOOKS += $(2)_KERNEL_MODULES_BUILD + +# Install the kernel module(s) +# Force PWD for those packages that want to use it to find their +# includes and other support files (Booo!) +define $(2)_KERNEL_MODULES_INSTALL + @$$(call MESSAGE,"Installing kernel module(s)") + $$(foreach d,$$($(2)_MODULE_SUBDIRS), \ + $$(LINUX_MAKE_ENV) $$($$(PKG)_MAKE) \ + -C $$(LINUX_DIR) \ + $$(LINUX_MAKE_FLAGS) \ + $$($(2)_MODULE_MAKE_OPTS) \ + PWD=$$(@D)/$$(d) \ + M=$$(@D)/$$(d) \ + modules_install$$(sep)) +endef +$(2)_POST_INSTALL_TARGET_HOOKS += $(2)_KERNEL_MODULES_INSTALL + +endef + +################################################################################ +# kernel-module -- the target generator macro for kernel module packages +################################################################################ + +kernel-module = $(call inner-kernel-module,$(pkgname),$(call UPPERCASE,$(pkgname))) diff --git a/buildroot/package/pkg-luarocks.mk b/buildroot/package/pkg-luarocks.mk new file mode 100644 index 0000000..d762867 --- /dev/null +++ b/buildroot/package/pkg-luarocks.mk @@ -0,0 +1,85 @@ +################################################################################ +# LuaRocks package infrastructure +# see http://luarocks.org/ +# +# This file implements an infrastructure that eases development of +# package .mk files for LuaRocks packages. +# LuaRocks supports various build.type : builtin, make, cmake. +# This luarocks infrastructure supports only the builtin mode, +# the make & cmake modes could be directly handled by generic & cmake infrastructure. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this LuaRocks infrastructure requires +# the .mk file to only specify metadata information about the +# package: name, version, etc. +# +################################################################################ + +################################################################################ +# inner-luarocks-package -- defines how the configuration, compilation and +# installation of a LuaRocks package should be done, implements a few hooks to +# tune the build process and calls the generic package infrastructure to +# generate the necessary make targets +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ + +define inner-luarocks-package + +$(2)_BUILD_OPTS ?= +$(2)_NAME_UPSTREAM ?= $(1) +$(2)_SUBDIR ?= $$($(2)_NAME_UPSTREAM)-$$(shell echo "$$($(2)_VERSION)" | sed -e "s/-[0-9]$$$$//") +$(2)_ROCKSPEC ?= $$(call LOWERCASE,$$($(2)_NAME_UPSTREAM))-$$($(2)_VERSION).rockspec +$(2)_SOURCE ?= $$(call LOWERCASE,$$($(2)_NAME_UPSTREAM))-$$($(2)_VERSION).src.rock +$(2)_SITE ?= $$(call qstrip,$$(BR2_LUAROCKS_MIRROR)) + +# Since we do not support host-luarocks-package, we know this is +# a target package, and can just add the required dependencies +$(2)_DEPENDENCIES += host-luarocks luainterpreter + +# +# Extract step. Extract into a temporary dir and move the relevant part to the +# source dir. +# +ifndef $(2)_EXTRACT_CMDS +define $(2)_EXTRACT_CMDS + mkdir -p $$($(2)_DIR)/luarocks-extract + cd $$($(2)_DIR)/luarocks-extract && \ + $$(LUAROCKS_RUN_ENV) $$(LUAROCKS_RUN_CMD) unpack --force $$(DL_DIR)/$$($(2)_SOURCE) + mv $$($(2)_DIR)/luarocks-extract/*/* $$($(2)_DIR) +endef +endif + +# +# Build/install step. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + cd $$($(2)_SRCDIR) && $$(LUAROCKS_RUN_ENV) flock $$(TARGET_DIR) \ + $$(LUAROCKS_RUN_CMD) make --keep $$($(2)_ROCKSPEC) $$($(2)_BUILD_OPTS) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +# $(2)_DEPENDENCIES are handled for configure step (too late) +# but host-luarocks is required to do the extract +$$($(2)_TARGET_EXTRACT): | host-luarocks + +endef + +################################################################################ +# luarocks-package -- the target generator macro for LuaRocks packages +################################################################################ + +luarocks-package = $(call inner-luarocks-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +# host-luarocks-package not supported diff --git a/buildroot/package/pkg-perl.mk b/buildroot/package/pkg-perl.mk new file mode 100644 index 0000000..b0d5789 --- /dev/null +++ b/buildroot/package/pkg-perl.mk @@ -0,0 +1,207 @@ +################################################################################ +# Perl package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for Perl packages. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this perl infrastructure requires +# the .mk file to only specify metadata information about the +# package: name, version, download URL, etc. +# +# We still allow the package .mk file to override what the different +# steps are doing, if needed. For example, if _BUILD_CMDS is +# already defined, it is used as the list of commands to perform to +# build the package, instead of the default perl behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +PERL_ARCHNAME = $(ARCH)-linux +PERL_RUN = PERL5LIB= PERL_USE_UNSAFE_INC=1 $(HOST_DIR)/bin/perl + +################################################################################ +# inner-perl-package -- defines how the configuration, compilation and +# installation of a perl package should be done, implements a +# few hooks to tune the build process for perl specifities and +# calls the generic package infrastructure to generate the necessary +# make targets +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ + +define inner-perl-package + +# Target packages need both the perl interpreter on the target (for +# runtime) and the perl interpreter on the host (for +# compilation). However, host packages only need the perl +# interpreter on the host. +ifeq ($(4),target) +$(2)_DEPENDENCIES += host-perl perl +else +$(2)_DEPENDENCIES += host-perl +endif + +# From http://perldoc.perl.org/CPAN.html#Config-Variables - prefer_installer +# legal values are MB and EUMM: if a module comes +# with both a Makefile.PL and a Build.PL, use the +# former (EUMM) or the latter (MB); if the module +# comes with only one of the two, that one will be +# used no matter the setting +$(2)_PREFER_INSTALLER ?= MB + +# +# Configure step. Only define it if not already defined by the package +# .mk file. And take care of the differences between host and target +# packages. +# +ifndef $(2)_CONFIGURE_CMDS +ifeq ($(4),target) + +# Configure package for target +define $(2)_CONFIGURE_CMDS + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ + $$($(2)_CONF_ENV) \ + PERL_MM_USE_DEFAULT=1 \ + $$(PERL_RUN) Build.PL \ + --config ar="$$(TARGET_AR)" \ + --config full_ar="$$(TARGET_AR)" \ + --config cc="$$(TARGET_CC)" \ + --config ccflags="$$(TARGET_CFLAGS)" \ + --config optimize=" " \ + --config ld="$$(TARGET_CC)" \ + --config lddlflags="-shared $$(TARGET_LDFLAGS)" \ + --config ldflags="$$(TARGET_LDFLAGS)" \ + --include_dirs $$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$$(PERL_ARCHNAME)/CORE \ + --destdir $$(TARGET_DIR) \ + --installdirs vendor \ + --install_path lib=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \ + --install_path arch=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$$(PERL_ARCHNAME) \ + --install_path bin=/usr/bin \ + --install_path script=/usr/bin \ + --install_path bindoc=/usr/share/man/man1 \ + --install_path libdoc=/usr/share/man/man3 \ + $$($(2)_CONF_OPTS); \ + else \ + $$($(2)_CONF_ENV) \ + PERL_MM_USE_DEFAULT=1 \ + PERL_AUTOINSTALL=--skipdeps \ + $$(PERL_RUN) Makefile.PL \ + AR="$$(TARGET_AR)" \ + FULL_AR="$$(TARGET_AR)" \ + CC="$$(TARGET_CC)" \ + CCFLAGS="$$(TARGET_CFLAGS)" \ + OPTIMIZE=" " \ + LD="$$(TARGET_CC)" \ + LDDLFLAGS="-shared $$(TARGET_LDFLAGS)" \ + LDFLAGS="$$(TARGET_LDFLAGS)" \ + DESTDIR=$$(TARGET_DIR) \ + INSTALLDIRS=vendor \ + INSTALLVENDORLIB=/usr/lib/perl5/site_perl/$$(PERL_VERSION) \ + INSTALLVENDORARCH=/usr/lib/perl5/site_perl/$$(PERL_VERSION)/$$(PERL_ARCHNAME) \ + INSTALLVENDORBIN=/usr/bin \ + INSTALLVENDORSCRIPT=/usr/bin \ + INSTALLVENDORMAN1DIR=/usr/share/man/man1 \ + INSTALLVENDORMAN3DIR=/usr/share/man/man3 \ + $$($(2)_CONF_OPTS); \ + fi +endef +else + +# Configure package for host +define $(2)_CONFIGURE_CMDS + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ + $$($(2)_CONF_ENV) \ + PERL_MM_USE_DEFAULT=1 \ + $$(PERL_RUN) Build.PL \ + $$($(2)_CONF_OPTS); \ + else \ + $$($(2)_CONF_ENV) \ + PERL_MM_USE_DEFAULT=1 \ + PERL_AUTOINSTALL=--skipdeps \ + $$(PERL_RUN) Makefile.PL \ + $$($(2)_CONF_OPTS); \ + fi +endef +endif +endif + +# +# Build step. Only define it if not already defined by the package .mk +# file. And take care of the differences between host and target +# packages. +# +ifndef $(2)_BUILD_CMDS +ifeq ($(4),target) + +# Build package for target +define $(2)_BUILD_CMDS + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ + $$(PERL_RUN) Build $$($(2)_BUILD_OPTS) build; \ + else \ + $$(MAKE1) \ + PERL_INC=$$(STAGING_DIR)/usr/lib/perl5/$$(PERL_VERSION)/$$(PERL_ARCHNAME)/CORE \ + FIXIN=: \ + $$($(2)_BUILD_OPTS) pure_all; \ + fi +endef +else + +# Build package for host +define $(2)_BUILD_CMDS + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ + $$(PERL_RUN) Build $$($(2)_BUILD_OPTS) build; \ + else \ + $$(MAKE1) $$($(2)_BUILD_OPTS) pure_all; \ + fi +endef +endif +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ + $$(PERL_RUN) Build $$($(2)_INSTALL_TARGET_OPTS) install; \ + else \ + $$(MAKE1) $$($(2)_INSTALL_TARGET_OPTS) pure_install; \ + fi +endef +endif + +# +# Target installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + cd $$($$(PKG)_SRCDIR) && if [ -f Build.PL ] && [ $$($(2)_PREFER_INSTALLER) != "EUMM" ] ; then \ + $$(PERL_RUN) Build $$($(2)_INSTALL_TARGET_OPTS) install; \ + else \ + $$(MAKE1) $$($(2)_INSTALL_TARGET_OPTS) pure_install; \ + fi +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# perl-package -- the target generator macro for Perl packages +################################################################################ + +perl-package = $(call inner-perl-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-perl-package = $(call inner-perl-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/buildroot/package/pkg-python.mk b/buildroot/package/pkg-python.mk new file mode 100644 index 0000000..f57e486 --- /dev/null +++ b/buildroot/package/pkg-python.mk @@ -0,0 +1,282 @@ +################################################################################ +# Python package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for Python packages. It should be used for all +# packages that use Python setup.py/setuptools as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this Python infrastructure requires the +# .mk file to only specify metadata information about the package: +# name, version, download URL, etc. +# +# We still allow the package .mk file to override what the different +# steps are doing, if needed. For example, if _BUILD_CMDS is +# already defined, it is used as the list of commands to perform to +# build the package, instead of the default Python behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +define PKG_PYTHON_SYSCONFIGDATA_NAME +$(basename $(notdir $(wildcard $(STAGING_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/_sysconfigdata_m_linux_*.py))) +endef + +# Target distutils-based packages +PKG_PYTHON_DISTUTILS_ENV = \ + PATH=$(BR_PATH) \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + LDSHARED="$(TARGET_CROSS)gcc -shared" \ + PYTHONPATH="$(if $(BR2_PACKAGE_PYTHON3),$(PYTHON3_PATH),$(PYTHON_PATH))" \ + PYTHONNOUSERSITE=1 \ + _PYTHON_SYSCONFIGDATA_NAME="$(PKG_PYTHON_SYSCONFIGDATA_NAME)" \ + _python_sysroot=$(STAGING_DIR) \ + _python_prefix=/usr \ + _python_exec_prefix=/usr + +PKG_PYTHON_DISTUTILS_BUILD_OPTS = \ + --executable=/usr/bin/python + +PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS = \ + --prefix=$(TARGET_DIR)/usr + +PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS = \ + --prefix=$(STAGING_DIR)/usr + +# Host distutils-based packages +HOST_PKG_PYTHON_DISTUTILS_ENV = \ + PATH=$(BR_PATH) \ + PYTHONNOUSERSITE=1 + +HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS = \ + --prefix=$(HOST_DIR) + +# Target setuptools-based packages +PKG_PYTHON_SETUPTOOLS_ENV = \ + _PYTHON_SYSCONFIGDATA_NAME="$(PKG_PYTHON_SYSCONFIGDATA_NAME)" \ + PATH=$(BR_PATH) \ + PYTHONPATH="$(if $(BR2_PACKAGE_PYTHON3),$(PYTHON3_PATH),$(PYTHON_PATH))" \ + PYTHONNOUSERSITE=1 \ + _python_sysroot=$(STAGING_DIR) \ + _python_prefix=/usr \ + _python_exec_prefix=/usr + +PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS = \ + --prefix=$(TARGET_DIR)/usr \ + --executable=/usr/bin/python \ + --single-version-externally-managed \ + --root=/ + +PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_OPTS = \ + --prefix=$(STAGING_DIR)/usr \ + --executable=/usr/bin/python \ + --single-version-externally-managed \ + --root=/ + +# Host setuptools-based packages +HOST_PKG_PYTHON_SETUPTOOLS_ENV = \ + PATH=$(BR_PATH) \ + PYTHONNOUSERSITE=1 + +HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS = \ + --prefix=$(HOST_DIR) + +################################################################################ +# inner-python-package -- defines how the configuration, compilation +# and installation of a Python package should be done, implements a +# few hooks to tune the build process and calls the generic package +# infrastructure to generate the necessary make targets +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ + +define inner-python-package + +$(2)_SRCDIR = $$($(2)_DIR)/$$($(2)_SUBDIR) +$(2)_BUILDDIR = $$($(2)_SRCDIR) + +$(2)_ENV ?= +$(2)_BUILD_OPTS ?= +$(2)_INSTALL_OPTS ?= + +ifndef $(2)_SETUP_TYPE + ifdef $(3)_SETUP_TYPE + $(2)_SETUP_TYPE = $$($(3)_SETUP_TYPE) + else + $$(error "$(2)_SETUP_TYPE must be set") + endif +endif + +# Distutils +ifeq ($$($(2)_SETUP_TYPE),distutils) +ifeq ($(4),target) +$(2)_BASE_ENV = $$(PKG_PYTHON_DISTUTILS_ENV) +$(2)_BASE_BUILD_TGT = build +$(2)_BASE_BUILD_OPTS = $$(PKG_PYTHON_DISTUTILS_BUILD_OPTS) +$(2)_BASE_INSTALL_TARGET_OPTS = $$(PKG_PYTHON_DISTUTILS_INSTALL_TARGET_OPTS) +$(2)_BASE_INSTALL_STAGING_OPTS = $$(PKG_PYTHON_DISTUTILS_INSTALL_STAGING_OPTS) +else +$(2)_BASE_ENV = $$(HOST_PKG_PYTHON_DISTUTILS_ENV) +$(2)_BASE_BUILD_TGT = build +$(2)_BASE_BUILD_OPTS = +$(2)_BASE_INSTALL_OPTS = $$(HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS) +endif +# Setuptools +else ifeq ($$($(2)_SETUP_TYPE),setuptools) +ifeq ($(4),target) +$(2)_BASE_ENV = $$(PKG_PYTHON_SETUPTOOLS_ENV) +$(2)_BASE_BUILD_TGT = build +$(2)_BASE_BUILD_OPTS = +$(2)_BASE_INSTALL_TARGET_OPTS = $$(PKG_PYTHON_SETUPTOOLS_INSTALL_TARGET_OPTS) +$(2)_BASE_INSTALL_STAGING_OPTS = $$(PKG_PYTHON_SETUPTOOLS_INSTALL_STAGING_OPTS) +else +$(2)_BASE_ENV = $$(HOST_PKG_PYTHON_SETUPTOOLS_ENV) +$(2)_BASE_BUILD_TGT = build +$(2)_BASE_BUILD_OPTS = +$(2)_BASE_INSTALL_OPTS = $$(HOST_PKG_PYTHON_SETUPTOOLS_INSTALL_OPTS) +endif +else +$$(error "Invalid $(2)_SETUP_TYPE. Valid options are 'distutils' or 'setuptools'") +endif + +# Target packages need both the python interpreter on the target (for +# runtime) and the python interpreter on the host (for +# compilation). However, host packages only need the python +# interpreter on the host, whose version may be enforced by setting +# the *_NEEDS_HOST_PYTHON variable. +# +# So: +# - for target packages, we always depend on the default python interpreter +# (the one selected by the config); +# - for host packages: +# - if *_NEEDS_HOST_PYTHON is not set, then we depend on use the default +# interperter; +# - otherwise, we depend on the one requested by *_NEEDS_HOST_PYTHON. +# +ifeq ($(4),target) +$(2)_DEPENDENCIES += $$(if $$(BR2_PACKAGE_PYTHON3),host-python3 python3,host-python python) +else +ifeq ($$($(2)_NEEDS_HOST_PYTHON),) +$(2)_DEPENDENCIES += $$(if $$(BR2_PACKAGE_PYTHON3),host-python3,host-python) +else +ifeq ($$($(2)_NEEDS_HOST_PYTHON),python2) +$(2)_DEPENDENCIES += host-python +else ifeq ($$($(2)_NEEDS_HOST_PYTHON),python3) +$(2)_DEPENDENCIES += host-python3 +else +$$(error Incorrect value '$$($(2)_NEEDS_HOST_PYTHON)' for $(2)_NEEDS_HOST_PYTHON) +endif +endif # ($$($(2)_NEEDS_HOST_PYTHON),) +endif # ($(4),target) + +# Setuptools based packages will need host-python-setuptools (both +# host and target). We need to have a special exclusion for the +# host-setuptools package itself: it is setuptools-based, but +# shouldn't depend on host-setuptools (because it would otherwise +# depend on itself!). +ifeq ($$($(2)_SETUP_TYPE),setuptools) +ifneq ($(2),HOST_PYTHON_SETUPTOOLS) +$(2)_DEPENDENCIES += host-python-setuptools +endif +endif + +# Python interpreter to use for building the package. +# +# We may want to specify the python interpreter to be used for building a +# package, especially for host-packages (target packages must be built using +# the same version of the interpreter as the one installed on the target). +# +# So: +# - for target packages, we always use the default python interpreter (which +# is the same version as the one built and installed on the target); +# - for host packages: +# - if *_NEEDS_HOST_PYTHON is not set, then we use use the default +# interperter; +# - otherwise, we use the one requested by *_NEEDS_HOST_PYTHON. +# +ifeq ($(4),target) +$(2)_PYTHON_INTERPRETER = $$(HOST_DIR)/bin/python +else +ifeq ($$($(2)_NEEDS_HOST_PYTHON),) +$(2)_PYTHON_INTERPRETER = $$(HOST_DIR)/bin/python +else +$(2)_PYTHON_INTERPRETER = $$(HOST_DIR)/bin/$$($(2)_NEEDS_HOST_PYTHON) +endif +endif + +# +# Build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + (cd $$($$(PKG)_BUILDDIR)/; \ + $$($$(PKG)_BASE_ENV) $$($$(PKG)_ENV) \ + $$($(2)_PYTHON_INTERPRETER) setup.py \ + $$($$(PKG)_BASE_BUILD_TGT) \ + $$($$(PKG)_BASE_BUILD_OPTS) $$($$(PKG)_BUILD_OPTS)) +endef +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + (cd $$($$(PKG)_BUILDDIR)/; \ + $$($$(PKG)_BASE_ENV) $$($$(PKG)_ENV) \ + $$($(2)_PYTHON_INTERPRETER) setup.py install \ + $$($$(PKG)_BASE_INSTALL_OPTS) $$($$(PKG)_INSTALL_OPTS)) +endef +endif + +# +# Target installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + (cd $$($$(PKG)_BUILDDIR)/; \ + $$($$(PKG)_BASE_ENV) $$($$(PKG)_ENV) \ + $$($(2)_PYTHON_INTERPRETER) setup.py install --no-compile \ + $$($$(PKG)_BASE_INSTALL_TARGET_OPTS) \ + $$($$(PKG)_INSTALL_TARGET_OPTS)) +endef +endif + +# +# Staging installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_STAGING_CMDS +define $(2)_INSTALL_STAGING_CMDS + (cd $$($$(PKG)_BUILDDIR)/; \ + $$($$(PKG)_BASE_ENV) $$($$(PKG)_ENV) \ + $$($(2)_PYTHON_INTERPRETER) setup.py install \ + $$($$(PKG)_BASE_INSTALL_STAGING_OPTS) \ + $$($$(PKG)_INSTALL_STAGING_OPTS)) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# python-package -- the target generator macro for Python packages +################################################################################ + +python-package = $(call inner-python-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-python-package = $(call inner-python-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/buildroot/package/pkg-rebar.mk b/buildroot/package/pkg-rebar.mk new file mode 100644 index 0000000..e2b4a58 --- /dev/null +++ b/buildroot/package/pkg-rebar.mk @@ -0,0 +1,241 @@ +################################################################################ +# rebar package infrastructure for Erlang packages +# +# This file implements an infrastructure that eases development of +# package .mk files for rebar packages. It should be used for all +# packages that use rebar as their build system. +# +# In terms of implementation, this rebar infrastructure requires the +# .mk file to only specify metadata information about the package: +# name, version, download URL, etc. +# +# We still allow the package .mk file to override what the different +# steps are doing, if needed. For example, if _BUILD_CMDS is +# already defined, it is used as the list of commands to perform to +# build the package, instead of the default rebar behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +# Directories to store rebar dependencies in. +# +# These directories actually only contain symbolic links to Erlang +# applications in either $(HOST_DIR) or $(STAGING_DIR). One needs +# them to avoid rebar complaining about missing dependencies, as this +# infrastructure tells rebar to NOT download dependencies during +# the build stage. +# +REBAR_HOST_DEPS_DIR = $(HOST_DIR)/share/rebar/deps +REBAR_TARGET_DEPS_DIR = $(STAGING_DIR)/usr/share/rebar/deps + +# Tell rebar where to find the dependencies +# +REBAR_HOST_DEPS_ENV = \ + ERL_COMPILER_OPTIONS='{i, "$(REBAR_HOST_DEPS_DIR)"}' \ + ERL_EI_LIBDIR=$(HOST_DIR)/lib/erlang/lib/erl_interface-$(ERLANG_EI_VSN)/lib +REBAR_TARGET_DEPS_ENV = \ + ERL_COMPILER_OPTIONS='{i, "$(REBAR_TARGET_DEPS_DIR)"}' \ + ERL_EI_LIBDIR=$(STAGING_DIR)/usr/lib/erlang/lib/erl_interface-$(ERLANG_EI_VSN)/lib + +################################################################################ +# Helper functions +################################################################################ + +# Install an Erlang application from $(@D). +# +# i.e., define a recipe that installs the "bin ebin priv $(2)" directories +# from $(@D) to $(1)/$($(PKG)_ERLANG_LIBDIR). +# +# argument 1 should typically be $(HOST_DIR), $(TARGET_DIR), +# or $(STAGING_DIR). +# argument 2 is typically empty when installing in $(TARGET_DIR) and +# "include" when installing in $(HOST_DIR) or +# $(STAGING_DIR). +# +# Note: calling this function must be done with $$(call ...) because it +# expands package-related variables. +# +define install-erlang-directories + $(INSTALL) -d $(1)/$($(PKG)_ERLANG_LIBDIR) + for dir in bin ebin priv $(2); do \ + if test -d $(@D)/$$dir; then \ + cp -r $(@D)/$$dir $(1)/$($(PKG)_ERLANG_LIBDIR); \ + fi; \ + done +endef + +# Setup a symbolic link in rebar's deps_dir to the actual location +# where an Erlang application is installed. +# +# i.e., define a recipe that creates a symbolic link +# from $($(PKG)_REBAR_DEPS_DIR)/$($(PKG)_ERLANG_APP) +# to $(1)$($(PKG)_ERLANG_LIBDIR). +# +# For target packages for example, one uses this to setup symbolic +# links from $(STAGING_DIR)/usr/share/rebar/deps/ to +# $(STAGING_DIR)/usr/lib/erlang/lib/-. This +# infrastructure points rebar at the former in order to tell rebar to +# NOT download dependencies during the build stage, and instead use +# the already available dependencies. +# +# Therefore, +# argument 1 is $(HOST_DIR) (for host packages) or +# $(STAGING_DIR) (for target packages). +# +# argument 2 is HOST (for host packages) or +# TARGET (for target packages). +# +# Note: calling this function must be done with $$(call ...) because it +# expands package-related variables. +# +define install-rebar-deps + $(INSTALL) -d $(REBAR_$(2)_DEPS_DIR) + ln -f -s $(1)/$($(PKG)_ERLANG_LIBDIR) \ + $(REBAR_$(2)_DEPS_DIR)/$($(PKG)_ERLANG_APP) +endef + +################################################################################ +# inner-rebar-package -- defines how the configuration, compilation +# and installation of a rebar package should be done, implements a few +# hooks to tune the build process according to rebar specifities, and +# calls the generic package infrastructure to generate the necessary +# make targets. +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +# +################################################################################ + +define inner-rebar-package + +# Extract just the raw package name, lowercase without the leading +# erlang- or host- prefix, as this is used by rebar to find the +# dependencies a package specifies. +# +$(2)_ERLANG_APP = $(subst -,_,$(patsubst erlang-%,%,$(patsubst host-%,%,$(1)))) + +# Path where to store the package's libs, relative to either $(HOST_DIR) +# for host packages, or $(STAGING_DIR)/usr for target packages. +# +$(2)_ERLANG_LIBDIR = \ + lib/erlang/lib/$$($$(PKG)_ERLANG_APP)-$$($$(PKG)_VERSION) + +# If a host package, inherit _USE_BUNDLED_REBAR from the target +# package, if not explicitly defined. Otherwise, default to NO. +ifndef $(2)_USE_BUNDLED_REBAR + ifdef $(3)_USE_BUNDLED_REBAR + $(2)_USE_BUNDLED_REBAR = $$($(3)_USE_BUNDLED_REBAR) + else + $(2)_USE_BUNDLED_REBAR ?= NO + endif +endif + +# If a host package, inherit _USE_AUTOCONF from the target +# package, if not explicitly defined. Otherwise, default to NO. +ifndef $(2)_USE_AUTOCONF + ifdef $(3)_USE_AUTOCONF + $(2)_USE_AUTOCONF = $$($(3)_USE_AUTOCONF) + else + $(2)_USE_AUTOCONF ?= NO + endif +endif + +# Define the build and install commands +# +ifeq ($(4),target) + +# Target packages need the erlang interpreter on the target +$(2)_DEPENDENCIES += erlang + +# Used only if the package uses autotools underneath; otherwise, ignored +$(2)_CONF_ENV += $$(REBAR_TARGET_DEPS_ENV) + +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + (cd $$(@D); \ + CC="$$(TARGET_CC)" \ + CXX="$$(TARGET_CXX)" \ + CFLAGS="$$(TARGET_CFLAGS)" \ + CXXFLAGS="$$(TARGET_CXXFLAGS)" \ + LDFLAGS="$$(TARGET_LDFLAGS)" \ + $$(REBAR_TARGET_DEPS_ENV) \ + $$(TARGET_MAKE_ENV) \ + $$($$(PKG)_REBAR_ENV) $$($$(PKG)_REBAR) deps_dir=$$(REBAR_TARGET_DEPS_DIR) compile \ + ) +endef +endif + +# We need to double-$ the 'call' because it wants to expand +# package-related variables +ifndef $(2)_INSTALL_STAGING_CMDS +define $(2)_INSTALL_STAGING_CMDS + $$(call install-erlang-directories,$$(STAGING_DIR)/usr,include) + $$(call install-rebar-deps,$$(STAGING_DIR)/usr,TARGET) +endef +endif + +# We need to double-$ the 'call' because it wants to expand +# package-related variables +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + $$(call install-erlang-directories,$$(TARGET_DIR)/usr) +endef +endif + +else # !target + +# Host packages need the erlang interpreter on the host +$(2)_DEPENDENCIES += host-erlang + +# Used only if the package uses autotools underneath; otherwise, ignored +$(2)_CONF_ENV += $$(REBAR_HOST_DEPS_ENV) + +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + (cd $$(@D); \ + CC="$$(HOSTCC)" \ + CFLAGS="$$(HOST_CFLAGS)" \ + LDFLAGS="$$(HOST_LDFLAGS)" \ + $$(REBAR_HOST_DEPS_ENV) \ + $$(HOST_MAKE_ENV) \ + $$($$(PKG)_REBAR_ENV) $$($$(PKG)_REBAR) deps_dir=$$(REBAR_HOST_DEPS_DIR) compile \ + ) +endef +endif + +# We need to double-$ the 'call' because it wants to expand +# package-related variables +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + $$(call install-erlang-directories,$$(HOST_DIR),include) + $$(call install-rebar-deps,$$(HOST_DIR),HOST) +endef +endif + +endif # !target + +# Whether to use the generic rebar or the package's bundled rebar +# +ifeq ($$($(2)_USE_BUNDLED_REBAR),YES) +$(2)_REBAR = ./rebar +else +$(2)_REBAR = rebar +$(2)_DEPENDENCIES += host-erlang-rebar +endif + +# The package sub-infra to use +# +ifeq ($$($(2)_USE_AUTOCONF),YES) +$(call inner-autotools-package,$(1),$(2),$(3),$(4)) +else +$(call inner-generic-package,$(1),$(2),$(3),$(4)) +endif + +endef # inner-rebar-package + +rebar-package = $(call inner-rebar-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-rebar-package = $(call inner-rebar-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/buildroot/package/pkg-utils.mk b/buildroot/package/pkg-utils.mk new file mode 100644 index 0000000..c3acc22 --- /dev/null +++ b/buildroot/package/pkg-utils.mk @@ -0,0 +1,97 @@ +################################################################################ +# +# This file contains various utility functions used by the package +# infrastructure, or by the packages themselves. +# +################################################################################ + +# +# Manipulation of .config files based on the Kconfig +# infrastructure. Used by the BusyBox package, the Linux kernel +# package, and more. +# + +define KCONFIG_ENABLE_OPT # (option, file) + $(SED) "/\\<$(1)\\>/d" $(2) + echo '$(1)=y' >> $(2) +endef + +define KCONFIG_SET_OPT # (option, value, file) + $(SED) "/\\<$(1)\\>/d" $(3) + echo '$(1)=$(2)' >> $(3) +endef + +define KCONFIG_DISABLE_OPT # (option, file) + $(SED) "/\\<$(1)\\>/d" $(2) + echo '# $(1) is not set' >> $(2) +endef + +# Helper functions to determine the name of a package and its +# directory from its makefile directory, using the $(MAKEFILE_LIST) +# variable provided by make. This is used by the *-package macros to +# automagically find where the package is located. +pkgdir = $(dir $(lastword $(MAKEFILE_LIST))) +pkgname = $(lastword $(subst /, ,$(pkgdir))) + +# Define extractors for different archive suffixes +INFLATE.bz2 = $(BZCAT) +INFLATE.gz = $(ZCAT) +INFLATE.lz = $(LZCAT) +INFLATE.lzma = $(XZCAT) +INFLATE.tbz = $(BZCAT) +INFLATE.tbz2 = $(BZCAT) +INFLATE.tgz = $(ZCAT) +INFLATE.xz = $(XZCAT) +INFLATE.tar = cat +# suitable-extractor(filename): returns extractor based on suffix +suitable-extractor = $(INFLATE$(suffix $(1))) + +# extractor-dependency(filename): returns extractor for 'filename' if the +# extractor is a dependency. If we build the extractor return nothing. +# $(firstword) is used here because the extractor can have arguments, like +# ZCAT="gzip -d -c", and to check for the dependency we only want 'gzip'. +extractor-dependency = $(firstword $(INFLATE$(filter-out \ + $(EXTRACTOR_DEPENDENCY_PRECHECKED_EXTENSIONS),$(suffix $(1))))) + +# check-deprecated-variable -- throw an error on deprecated variables +# example: +# $(eval $(call check-deprecated-variable,FOO_MAKE_OPT,FOO_MAKE_OPTS)) +define check-deprecated-variable # (deprecated var, new var) +ifneq ($$(origin $(1)),undefined) +$$(error Package error: use $(2) instead of $(1). Please fix your .mk file) +endif +endef + +# +# legal-info helper functions +# +LEGAL_INFO_SEPARATOR = "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" + +define legal-warning # text + echo "WARNING: $(1)" >>$(LEGAL_WARNINGS) +endef + +define legal-warning-pkg # pkg, text + echo "WARNING: $(1): $(2)" >>$(LEGAL_WARNINGS) +endef + +define legal-warning-nosource # pkg, {local|override} + $(call legal-warning-pkg,$(1),sources not saved ($(2) packages not handled)) +endef + +define legal-manifest # pkg, version, license, license-files, source, url, {HOST|TARGET} + echo '"$(1)","$(2)","$(3)","$(4)","$(5)","$(6)"' >>$(LEGAL_MANIFEST_CSV_$(7)) +endef + +define legal-license-file # pkgname, pkgname-pkgver, pkgdir, filename, file-fullpath, {HOST|TARGET} + mkdir -p $(LICENSE_FILES_DIR_$(6))/$(2)/$(dir $(4)) && \ + { \ + if [ -f $(3)/$($(PKG)_VERSION)/$(1).hash ]; then \ + support/download/check-hash $(3)/$($(PKG)_VERSION)/$(1).hash $(5) $(4); \ + else \ + support/download/check-hash $(3)/$(1).hash $(5) $(4); \ + fi; \ + case $${?} in (0|3) ;; (*) exit 1;; esac; \ + } && \ + cp $(5) $(LICENSE_FILES_DIR_$(6))/$(2)/$(4) +endef diff --git a/buildroot/package/pkg-virtual.mk b/buildroot/package/pkg-virtual.mk new file mode 100644 index 0000000..05bd63e --- /dev/null +++ b/buildroot/package/pkg-virtual.mk @@ -0,0 +1,77 @@ +################################################################################ +# Virtual package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for virtual packages. It should be used for all +# virtual packages. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this virtual infrastructure requires +# the .mk file to only call the 'virtual-package' macro. +# +################################################################################ + + +################################################################################ +# inner-virtual-package -- defines the dependency rules of the virtual +# package against its provider. +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ + +# Note: putting this comment here rather than in the define block, otherwise +# make would try to expand the $(error ...) in the comment, which is not +# really what we want. +# We need to use second-expansion for the $(error ...) call, below, +# so it is not evaluated now, but as part of the generated make code. + +define inner-virtual-package + +# Ensure the virtual package has an implementation defined. +ifeq ($$(BR2_PACKAGE_HAS_$(2)),y) +ifeq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),) +$$(error No implementation selected for virtual package $(1). Configuration error) +endif +endif + +# explicitly set these so we do not get confused by environment +# variables with the same names. +$(2)_VERSION = +$(2)_SOURCE = + +$(2)_IS_VIRTUAL = YES + +# Add dependency against the provider +# For a host package, there is no corresponding BR2_PACKAGE_PROVIDES_HOST_FOO, +# so we need to compute it from the target variant. +ifeq ($(4),target) +$(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))) +else +ifeq ($$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))),) +# Inherit from target package BR2_PACKAGE_PROVIDES_FOO +$(2)_DEPENDENCIES += host-$$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(3))) +else +# BR2_PACKAGE_PROVIDES_HOST_ is explicitly defined +$(2)_DEPENDENCIES += $$(call qstrip,$$(BR2_PACKAGE_PROVIDES_$(2))) +endif +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# virtual-package -- the target generator macro for virtual packages +################################################################################ + +virtual-package = $(call inner-virtual-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) +host-virtual-package = $(call inner-virtual-package,host-$(pkgname),$(call UPPERCASE,host-$(pkgname)),$(call UPPERCASE,$(pkgname)),host) diff --git a/buildroot/package/pkg-waf.mk b/buildroot/package/pkg-waf.mk new file mode 100644 index 0000000..e5b606f --- /dev/null +++ b/buildroot/package/pkg-waf.mk @@ -0,0 +1,125 @@ +################################################################################ +# WAF package infrastructure +# +# This file implements an infrastructure that eases development of package +# .mk files for WAF packages. It should be used for all packages that use +# WAF as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this WAF infrastructure requires the .mk file +# to only specify metadata information about the package: name, version, +# download URL, etc. +# +# We still allow the package .mk file to override what the different steps +# are doing, if needed. For example, if _BUILD_CMDS is already defined, +# it is used as the list of commands to perform to build the package, +# instead of the default WAF behaviour. The package can also define some +# post operation hooks. +# +################################################################################ + +################################################################################ +# inner-waf-package -- defines how the configuration, compilation and +# installation of a waf package should be done, implements a few hooks +# to tune the build process for waf specifities and calls the generic +# package infrastructure to generate the necessary make targets +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ + +define inner-waf-package + +# We need host-python to run waf +$(2)_DEPENDENCIES += host-python + +$(2)_NEEDS_EXTERNAL_WAF ?= NO + +# If the package does not have its own waf, use our own. +ifeq ($$($(2)_NEEDS_EXTERNAL_WAF),YES) +$(2)_DEPENDENCIES += host-waf +$(2)_WAF = $(HOST_DIR)/bin/waf +else +$(2)_WAF = ./waf +endif + +$(2)_BUILD_OPTS ?= +$(2)_INSTALL_STAGING_OPTS ?= +$(2)_INSTALL_TARGET_OPTS ?= +$(2)_WAF_OPTS ?= + +# +# Configure step. Only define it if not already defined by the package +# .mk file. +# +ifndef $(2)_CONFIGURE_CMDS +define $(2)_CONFIGURE_CMDS + cd $$(@D) && \ + $$(TARGET_CONFIGURE_OPTS) \ + $$($(2)_CONF_ENV) \ + $$(HOST_DIR)/bin/python2 $$($(2)_WAF) configure \ + --prefix=/usr \ + --libdir=/usr/lib \ + $$($(2)_CONF_OPTS) \ + $$($(2)_WAF_OPTS) +endef +endif + +# +# Build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + cd $$(@D) && \ + $$(TARGET_MAKE_ENV) $$(HOST_DIR)/bin/python2 $$($(2)_WAF) \ + build -j $$(PARALLEL_JOBS) $$($(2)_BUILD_OPTS) \ + $$($(2)_WAF_OPTS) +endef +endif + +# +# Staging installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_STAGING_CMDS +define $(2)_INSTALL_STAGING_CMDS + cd $$(@D) && \ + $$(TARGET_MAKE_ENV) $$(HOST_DIR)/bin/python2 $$($(2)_WAF) \ + install --destdir=$$(STAGING_DIR) \ + $$($(2)_INSTALL_STAGING_OPTS) \ + $$($(2)_WAF_OPTS) +endef +endif + +# +# Target installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + cd $$(@D) && \ + $$(TARGET_MAKE_ENV) $$(HOST_DIR)/bin/python2 $$($(2)_WAF) \ + install --destdir=$$(TARGET_DIR) \ + $$($(2)_INSTALL_TARGET_OPTS) \ + $$($(2)_WAF_OPTS) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +################################################################################ +# waf-package -- the target generator macro for WAF packages +################################################################################ + +waf-package = $(call inner-waf-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) diff --git a/buildroot/package/pkgconf/0001-Fix-all-variables-sysroot-prefix-problem.patch b/buildroot/package/pkgconf/0001-Fix-all-variables-sysroot-prefix-problem.patch new file mode 100644 index 0000000..bc2b527 --- /dev/null +++ b/buildroot/package/pkgconf/0001-Fix-all-variables-sysroot-prefix-problem.patch @@ -0,0 +1,64 @@ +From aa6bbc09e68426592faf722630fe92b6ede75bc8 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Mon, 2 Nov 2015 18:38:00 -0300 +Subject: [PATCH] Fix all-variables sysroot prefix problem + +According to the pkg-config specifications (or rather documentation) +only the -L/-I directory entries should be sysroot-prefixed. + +We also need to prefix the mapdir/sdkdir variables since they're used by +xorg and expected that way. + +Also allow prefixing for includedir and libdir since in some silly cases +the directories may be requested barebones via pkg-config +--variable=includedir libfool for example. + +Signed-off-by: Gustavo Zacarias + +Added pkgdatadir to the list of to-be-prefixed variables. + +Signed-off-by: Bernd Kuhls +--- + main.c | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +diff --git a/main.c b/main.c +index 6947126..ce5e18f 100644 +--- a/main.c ++++ b/main.c +@@ -313,9 +313,13 @@ print_variable(pkg_t *pkg, void *data, unsigned int flags) + memset(req->buf, 0, sizeof(req->buf)); + + if (*var == '/' && (flags & PKGF_MUNGE_SYSROOT_PREFIX) && +- (sysroot_dir != NULL && strncmp(var, sysroot_dir, strlen(sysroot_dir)))) +- strlcat(req->buf, sysroot_dir, sizeof(req->buf)); +- ++ (sysroot_dir != NULL && strncmp(var, sysroot_dir, strlen(sysroot_dir))) && ++ (!strcmp(req->variable, "includedir") || \ ++ !strcmp(req->variable, "libdir") || \ ++ !strcmp(req->variable, "mapdir") || \ ++ !strcmp(req->variable, "pkgdatadir") || \ ++ !strcmp(req->variable, "sdkdir"))) ++ strlcat(req->buf, sysroot_dir, sizeof(req->buf)); + strlcat(req->buf, var, sizeof(req->buf)); + return; + } +@@ -323,8 +327,13 @@ print_variable(pkg_t *pkg, void *data, unsigned int flags) + strlcat(req->buf, " ", sizeof(req->buf)); + + if (*var == '/' && (flags & PKGF_MUNGE_SYSROOT_PREFIX) && +- (sysroot_dir != NULL && strncmp(var, sysroot_dir, strlen(sysroot_dir)))) +- strlcat(req->buf, sysroot_dir, sizeof(req->buf)); ++ (sysroot_dir != NULL && strncmp(var, sysroot_dir, strlen(sysroot_dir))) && ++ (!strcmp(req->variable, "includedir") || \ ++ !strcmp(req->variable, "libdir") || \ ++ !strcmp(req->variable, "mapdir") || \ ++ !strcmp(req->variable, "pkgdatadir") || \ ++ !strcmp(req->variable, "sdkdir"))) ++ strlcat(req->buf, sysroot_dir, sizeof(req->buf)); + + strlcat(req->buf, var, sizeof(req->buf)); + } +-- +2.4.10 + diff --git a/buildroot/package/pkgconf/Config.in b/buildroot/package/pkgconf/Config.in new file mode 100644 index 0000000..76fa394 --- /dev/null +++ b/buildroot/package/pkgconf/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PKGCONF + bool "pkgconf" + help + pkgconf is a program which helps to configure compiler and + linker flags for development frameworks. It is similar to + pkg-config, but was written from scratch in the summer of + 2011 to replace pkg-config, which now needs itself to build + itself + + https://github.com/pkgconf/pkgconf diff --git a/buildroot/package/pkgconf/Config.in.host b/buildroot/package/pkgconf/Config.in.host new file mode 100644 index 0000000..56836a5 --- /dev/null +++ b/buildroot/package/pkgconf/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_PKGCONF + bool "host pkgconf" + help + pkgconf is a program which helps to configure compiler and + linker flags for development frameworks. It is similar to + pkg-config, but was written from scratch in the summer of + 2011 to replace pkg-config, which now needs itself to build + itself + + https://github.com/pkgconf/pkgconf diff --git a/buildroot/package/pkgconf/pkg-config.in b/buildroot/package/pkgconf/pkg-config.in new file mode 100644 index 0000000..99c0add --- /dev/null +++ b/buildroot/package/pkgconf/pkg-config.in @@ -0,0 +1,5 @@ +#!/bin/sh +PKGCONFDIR=$(dirname $0) +DEFAULT_PKG_CONFIG_LIBDIR=${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/lib/pkgconfig:${PKGCONFDIR}/../@STAGING_SUBDIR@/usr/share/pkgconfig +DEFAULT_PKG_CONFIG_SYSROOT_DIR=${PKGCONFDIR}/../@STAGING_SUBDIR@ +PKG_CONFIG_LIBDIR=${PKG_CONFIG_LIBDIR:-${DEFAULT_PKG_CONFIG_LIBDIR}} PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR:-${DEFAULT_PKG_CONFIG_SYSROOT_DIR}} exec ${PKGCONFDIR}/pkgconf @STATIC@ "$@" diff --git a/buildroot/package/pkgconf/pkgconf.hash b/buildroot/package/pkgconf/pkgconf.hash new file mode 100644 index 0000000..79191bc --- /dev/null +++ b/buildroot/package/pkgconf/pkgconf.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7ec8b516e655e247f4ba976837cee808134785819ab8f538f652fe919cc6c09f pkgconf-0.9.12.tar.bz2 diff --git a/buildroot/package/pkgconf/pkgconf.mk b/buildroot/package/pkgconf/pkgconf.mk new file mode 100644 index 0000000..00b2d01 --- /dev/null +++ b/buildroot/package/pkgconf/pkgconf.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# pkgconf +# +################################################################################ + +PKGCONF_VERSION = 0.9.12 +PKGCONF_SITE = https://github.com/pkgconf/pkgconf/releases/download/pkgconf-$(PKGCONF_VERSION) +PKGCONF_SOURCE = pkgconf-$(PKGCONF_VERSION).tar.bz2 +PKGCONF_LICENSE = pkgconf license +PKGCONF_LICENSE_FILES = COPYING + +PKG_CONFIG_HOST_BINARY = $(HOST_DIR)/bin/pkg-config + +define PKGCONF_LINK_PKGCONFIG + ln -sf pkgconf $(TARGET_DIR)/usr/bin/pkg-config +endef + +define HOST_PKGCONF_INSTALL_WRAPPER + $(INSTALL) -m 0755 -D package/pkgconf/pkg-config.in \ + $(HOST_DIR)/bin/pkg-config + $(SED) 's,@STAGING_SUBDIR@,$(STAGING_SUBDIR),g' \ + $(HOST_DIR)/bin/pkg-config +endef + +define HOST_PKGCONF_STATIC + $(SED) 's,@STATIC@,--static,' $(HOST_DIR)/bin/pkg-config +endef + +define HOST_PKGCONF_SHARED + $(SED) 's,@STATIC@,,' $(HOST_DIR)/bin/pkg-config +endef + +PKGCONF_POST_INSTALL_TARGET_HOOKS += PKGCONF_LINK_PKGCONFIG +HOST_PKGCONF_POST_INSTALL_HOOKS += HOST_PKGCONF_INSTALL_WRAPPER + +ifeq ($(BR2_STATIC_LIBS),y) +HOST_PKGCONF_POST_INSTALL_HOOKS += HOST_PKGCONF_STATIC +else +HOST_PKGCONF_POST_INSTALL_HOOKS += HOST_PKGCONF_SHARED +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/pngquant/Config.in b/buildroot/package/pngquant/Config.in new file mode 100644 index 0000000..c63f0f9 --- /dev/null +++ b/buildroot/package/pngquant/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PNGQUANT + bool "pngquant" + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + help + Lossy PNG compressor — pngquant command and libimagequant + library + + https://pngquant.org diff --git a/buildroot/package/pngquant/pngquant.hash b/buildroot/package/pngquant/pngquant.hash new file mode 100644 index 0000000..a3f1005 --- /dev/null +++ b/buildroot/package/pngquant/pngquant.hash @@ -0,0 +1,4 @@ +# From https://pngquant.org/releases.html +sha1 30f54b0731b8913a8c8b3bd1fdf53e1c68b12262 pngquant-2.10.1-src.tar.gz +# Locally computed +sha256 e07a21fe37b6ae9fa5524f1e20a8e73b698566d42d2cc3edd469531745faa850 pngquant-2.10.1-src.tar.gz diff --git a/buildroot/package/pngquant/pngquant.mk b/buildroot/package/pngquant/pngquant.mk new file mode 100644 index 0000000..1ce8359 --- /dev/null +++ b/buildroot/package/pngquant/pngquant.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# pngquant +# +################################################################################ + +PNGQUANT_VERSION = 2.10.1 +PNGQUANT_SOURCE = pngquant-$(PNGQUANT_VERSION)-src.tar.gz +PNGQUANT_SITE = https://pngquant.org +PNGQUANT_LICENSE = GPL-3.0+ +PNGQUANT_LICENSE_FILES = COPYRIGHT +HOST_PNGQUANT_DEPENDENCIES = host-libpng +PNGQUANT_DEPENDENCIES = libpng + +ifeq ($(BR2_PACKAGE_LCMS2),y) +PNGQUANT_DEPENDENCIES += lcms2 +endif + +define PNGQUANT_CONFIGURE_CMDS + (cd $(@D) && \ + $(TARGET_CONFIGURE_OPTS) \ + ./configure --prefix=/usr \ + $(if $(BR2_PACKAGE_LCMS2),--with-lcms2,--without-lcms2) \ + $(if $(BR2_X86_CPU_HAS_SSE),--enable-sse,--disable-sse) \ + $(TARGET_CONFIGURE_OPTS) \ + ) +endef + +define PNGQUANT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define PNGQUANT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +define HOST_PNGQUANT_CONFIGURE_CMDS + (cd $(@D) && \ + $(HOST_CONFIGURE_OPTS) \ + CC=$(HOSTCC_NOCCACHE) \ + ./configure --prefix=$(HOST_DIR) \ + --without-lcms2 \ + ) +endef + +define HOST_PNGQUANT_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_PNGQUANT_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +$(eval $(host-generic-package)) +$(eval $(generic-package)) diff --git a/buildroot/package/poco/0001-poco-add-the-staging-path-to-search-path.patch b/buildroot/package/poco/0001-poco-add-the-staging-path-to-search-path.patch new file mode 100644 index 0000000..5695b62 --- /dev/null +++ b/buildroot/package/poco/0001-poco-add-the-staging-path-to-search-path.patch @@ -0,0 +1,38 @@ +From b8417607ec8840e6a1e27cf03b6958c794a33e49 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 4 Aug 2015 10:14:00 +0200 +Subject: [PATCH 1/2] poco: add the staging path to search path +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add the mysql headers and client libraries to the search path of the +preprocessor and the linker. The $MYSQL_LIBDIR / $MYSQL_INCIDR variables +must be set from the make command line. + +[Peter: Remove host dirs, add MYSQL_INCDIR] +Signed-off-by: Baruch Siach +[Jörg: Update to version 1.6.1 from github] +Signed-off-by: Jörg Krause +--- + Data/MySQL/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Data/MySQL/Makefile b/Data/MySQL/Makefile +index 0b18ca5..094e807 100644 +--- a/Data/MySQL/Makefile ++++ b/Data/MySQL/Makefile +@@ -8,8 +8,8 @@ + + include $(POCO_BASE)/build/rules/global + +-SYSLIBS += -L/usr/local/lib$(LIB64SUFFIX)/mysql -L/usr/lib$(LIB64SUFFIX)/mysql -L/usr/mysql/lib$(LIB64SUFFIX) -L/usr/mysql/lib$(LIB64SUFFIX)/mysql -L/usr/local/mysql/lib$(LIB64SUFFIX) -lmysqlclient +-INCLUDE += -I/usr/local/include/mysql/ -I/usr/include/mysql/ -I/usr/mysql/include/mysql -I/usr/local/mysql/include ++SYSLIBS += -L$(MYSQL_LIBDIR) -lmysqlclient ++INCLUDE += -I$(MYSQL_INCDIR) + SYSFLAGS += -DTHREADSAFE -DNO_TCL + + objects = Binder Extractor SessionImpl Connector \ +-- +2.5.0 + diff --git a/buildroot/package/poco/0002-fix-m68k-double-conv-detect.patch b/buildroot/package/poco/0002-fix-m68k-double-conv-detect.patch new file mode 100644 index 0000000..3ca03fc --- /dev/null +++ b/buildroot/package/poco/0002-fix-m68k-double-conv-detect.patch @@ -0,0 +1,19 @@ +Fixes compile for m68k. + +From upstream double-conversion commit da111796231: +https://github.com/google/double-conversion/blob/master/double-conversion/utils.h + +Signed-off-by: Waldemar Brodkorb + +diff -Nur poco-poco-1.7.2-release.orig/Foundation/src/utils.h poco-poco-1.7.2-release/Foundation/src/utils.h +--- poco-poco-1.7.2-release.orig/Foundation/src/utils.h 2016-03-19 08:19:35.000000000 +0100 ++++ poco-poco-1.7.2-release/Foundation/src/utils.h 2016-08-11 02:55:02.827238119 +0200 +@@ -63,6 +63,8 @@ + defined(__AARCH64EL__) || \ + defined(nios2) || defined(__nios2) || defined(__nios2__) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 ++#elif defined(__mc68000__) ++#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS + #elif defined(_M_IX86) || defined(__i386__) || defined(__i386) + #if defined(_WIN32) + // Windows uses a 64bit wide floating point stack. diff --git a/buildroot/package/poco/Config.in b/buildroot/package/poco/Config.in new file mode 100644 index 0000000..9199b54 --- /dev/null +++ b/buildroot/package/poco/Config.in @@ -0,0 +1,69 @@ +config BR2_PACKAGE_POCO + bool "poco" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + # pthread_condattr_setclock + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_STATIC_LIBS # dlopen() + depends on !(BR2_arc || BR2_bfin || BR2_microblaze || BR2_mipsel \ + || BR2_or1k || BR2_xtensa) + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_PCRE + help + The C++ Portable Components Libraries + + http://pocoproject.org + +if BR2_PACKAGE_POCO + +comment "poco components" + +config BR2_PACKAGE_POCO_XML + bool "xml" + select BR2_PACKAGE_EXPAT + +config BR2_PACKAGE_POCO_UTIL + bool "util" + select BR2_PACKAGE_POCO_XML + +config BR2_PACKAGE_POCO_NET + bool "net" + +config BR2_PACKAGE_POCO_CRYPTO + bool "crypto" + select BR2_PACKAGE_OPENSSL + +config BR2_PACKAGE_POCO_NETSSL_OPENSSL + bool "netssl_openssl" + select BR2_PACKAGE_POCO_NET + select BR2_PACKAGE_POCO_CRYPTO + select BR2_PACKAGE_POCO_UTIL + select BR2_PACKAGE_OPENSSL + +config BR2_PACKAGE_POCO_ZIP + bool "zip" + select BR2_PACKAGE_POCO_XML + select BR2_PACKAGE_POCO_NET + select BR2_PACKAGE_POCO_UTIL + +config BR2_PACKAGE_POCO_DATA + bool + +config BR2_PACKAGE_POCO_DATA_SQLITE + bool "sqlite" + select BR2_PACKAGE_POCO_DATA + select BR2_PACKAGE_SQLITE + +config BR2_PACKAGE_POCO_DATA_MYSQL + bool "mysql" + depends on BR2_USE_MMU # mysql + select BR2_PACKAGE_POCO_DATA + select BR2_PACKAGE_MYSQL + +endif # BR2_PACKAGE_POCO + +comment "poco needs a toolchain w/ wchar, NPTL, C++, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS + depends on !(BR2_arc || BR2_bfin || BR2_microblaze || BR2_mipsel \ + || BR2_or1k || BR2_xtensa) diff --git a/buildroot/package/poco/poco.hash b/buildroot/package/poco/poco.hash new file mode 100644 index 0000000..0c0266f --- /dev/null +++ b/buildroot/package/poco/poco.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 43cc469c01d1f799efc51e2bfde6ffdf467b98a8a0901e6b33db86958619b3af poco-poco-1.8.1-release.tar.gz +sha256 c4b1e1e5f36d8331737231fefcc30f5714326aec7c387ad59a8115eb0ba7d6b5 LICENSE diff --git a/buildroot/package/poco/poco.mk b/buildroot/package/poco/poco.mk new file mode 100644 index 0000000..3dddb43 --- /dev/null +++ b/buildroot/package/poco/poco.mk @@ -0,0 +1,77 @@ +################################################################################ +# +# poco +# +################################################################################ + +POCO_VERSION = poco-1.8.1-release +POCO_SITE = $(call github,pocoproject,poco,$(POCO_VERSION)) +POCO_LICENSE = BSL-1.0 +POCO_LICENSE_FILES = LICENSE +POCO_INSTALL_STAGING = YES + +POCO_DEPENDENCIES = zlib pcre \ + $(if $(BR2_PACKAGE_POCO_XML),expat) \ + $(if $(BR2_PACKAGE_POCO_CRYPTO),openssl) \ + $(if $(BR2_PACKAGE_POCO_NETSSL_OPENSSL),openssl) \ + $(if $(BR2_PACKAGE_POCO_DATA_SQLITE),sqlite) \ + $(if $(BR2_PACKAGE_POCO_DATA_MYSQL),mysql) + +POCO_OMIT = Data/ODBC PageCompiler \ + $(if $(BR2_PACKAGE_POCO_XML),,XML) \ + $(if $(BR2_PACKAGE_POCO_UTIL),,Util) \ + $(if $(BR2_PACKAGE_POCO_NET),,Net) \ + $(if $(BR2_PACKAGE_POCO_NETSSL_OPENSSL),,NetSSL_OpenSSL) \ + $(if $(BR2_PACKAGE_POCO_CRYPTO),,Crypto) \ + $(if $(BR2_PACKAGE_POCO_ZIP),,Zip) \ + $(if $(BR2_PACKAGE_POCO_DATA),,Data) \ + $(if $(BR2_PACKAGE_POCO_DATA_MYSQL),,Data/MySQL) \ + $(if $(BR2_PACKAGE_POCO_DATA_SQLITE),,Data/SQLite) + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +POCO_CONF_OPTS += --no-fpenvironment --no-wstring +endif + +# architectures missing some FE_* in their fenv.h +ifeq ($(BR2_sh4a)$(BR2_nios2),y) +POCO_CONF_OPTS += --no-fpenvironment +endif + +ifeq ($(BR2_STATIC_LIBS),y) +POCO_MAKE_TARGET = static_release +else ifeq ($(BR2_SHARED_LIBS),y) +POCO_MAKE_TARGET = shared_release +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +POCO_MAKE_TARGET = all_release +endif + +define POCO_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) ./configure \ + --config=Linux \ + --prefix=/usr \ + --omit="$(POCO_OMIT)" \ + $(POCO_CONF_OPTS) \ + --unbundled \ + --no-tests \ + --no-samples) +endef + +# Use $(MAKE1) to avoid failures on heavilly parallel machines (e.g. -j25) +define POCO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) POCO_TARGET_OSARCH=$(ARCH) CROSS_COMPILE=$(TARGET_CROSS) \ + MYSQL_LIBDIR=$(STAGING_DIR)/usr/lib/mysql \ + MYSQL_INCDIR=$(STAGING_DIR)/usr/include/mysql \ + DEFAULT_TARGET=$(POCO_MAKE_TARGET) -C $(@D) +endef + +define POCO_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(STAGING_DIR) POCO_TARGET_OSARCH=$(ARCH) \ + DEFAULT_TARGET=$(POCO_MAKE_TARGET) install -C $(@D) +endef + +define POCO_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) POCO_TARGET_OSARCH=$(ARCH) \ + DEFAULT_TARGET=$(POCO_MAKE_TARGET) install -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch b/buildroot/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch new file mode 100644 index 0000000..3c0ddcc --- /dev/null +++ b/buildroot/package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch @@ -0,0 +1,35 @@ +From 85763549c53b2907dab094163f1404b2233f8029 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 9 Oct 2017 16:51:20 -0400 +Subject: [PATCH] Add DESTDIR to setfiles + +The addition of this patch makes the use of DESTDIR +mandatory as there are conditional checks which would fail if it's not +defined. + +This patch was updated from the patch provided by Niranjan Reddy to +accomodate version 2.5 + +Signed-off-by: Clayton Shotwell +Signed-off-by: Niranjan Reddy +Signed-off-by: Adam Duskett +--- + setfiles/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setfiles/Makefile b/setfiles/Makefile +index c08e2dd..36c0638 100644 +--- a/setfiles/Makefile ++++ b/setfiles/Makefile +@@ -3,7 +3,7 @@ PREFIX ?= $(DESTDIR)/usr + SBINDIR ?= $(DESTDIR)/sbin + MANDIR = $(PREFIX)/share/man + LIBDIR ?= $(PREFIX)/lib +-AUDITH ?= $(shell test -f /usr/include/libaudit.h && echo y) ++AUDITH ?= $(shell test -f $(DESTDIR)/include/libaudit.h && echo y) + + ABORT_ON_ERRORS=$(shell grep "^\#define ABORT_ON_ERRORS" setfiles.c | awk -S '{ print $$3 }') + +-- +2.13.6 + diff --git a/buildroot/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch b/buildroot/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch new file mode 100644 index 0000000..32d2ae9 --- /dev/null +++ b/buildroot/package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch @@ -0,0 +1,69 @@ +From a221304344b3f9db7e86d928cf97d77542bcf456 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Mon, 9 Oct 2017 16:47:19 -0400 +Subject: [PATCH] Add PREFIX to host paths + +Updates the remaining hardcoded host paths used in the build to be +prefixed with a PREFIX path to allow cross compilation. + +Updated to work with version 2.5 + +Signed-off-by: Clayton Shotwell +Signed-off-by: Niranjan Reddy +Signed-off-by: Adam Duskett +--- + load_policy/Makefile | 2 +- + newrole/Makefile | 6 +++--- + run_init/Makefile | 6 +++--- + 3 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/load_policy/Makefile b/load_policy/Makefile +index b85833c..6a45f31 100644 +--- a/load_policy/Makefile ++++ b/load_policy/Makefile +@@ -2,7 +2,7 @@ + PREFIX ?= $(DESTDIR)/usr + SBINDIR ?= $(DESTDIR)/sbin + MANDIR ?= $(PREFIX)/share/man +-LOCALEDIR ?= /usr/share/locale ++LOCALEDIR ?= $(PREFIX)/share/locale + + CFLAGS ?= -Werror -Wall -W + override CFLAGS += $(LDFLAGS) -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" +diff --git a/newrole/Makefile b/newrole/Makefile +index 196af92..896708f 100644 +--- a/newrole/Makefile ++++ b/newrole/Makefile +@@ -3,9 +3,9 @@ PREFIX ?= $(DESTDIR)/usr + BINDIR ?= $(PREFIX)/bin + MANDIR ?= $(PREFIX)/share/man + ETCDIR ?= $(DESTDIR)/etc +-LOCALEDIR = /usr/share/locale +-PAMH ?= $(shell test -f /usr/include/security/pam_appl.h && echo y) +-AUDITH ?= $(shell test -f /usr/include/libaudit.h && echo y) ++LOCALEDIR = $(PREFIX)/share/locale ++PAMH ?= $(shell test -f $(PREFIX)/include/security/pam_appl.h && echo y) ++AUDITH ?= $(shell test -f $(PREFIX)/include/libaudit.h && echo y) + # Enable capabilities to permit newrole to generate audit records. + # This will make newrole a setuid root program. + # The capabilities used are: CAP_AUDIT_WRITE. +diff --git a/run_init/Makefile b/run_init/Makefile +index 921f0b0..e1566fc 100644 +--- a/run_init/Makefile ++++ b/run_init/Makefile +@@ -4,9 +4,9 @@ PREFIX ?= $(DESTDIR)/usr + SBINDIR ?= $(PREFIX)/sbin + MANDIR ?= $(PREFIX)/share/man + ETCDIR ?= $(DESTDIR)/etc +-LOCALEDIR ?= /usr/share/locale +-PAMH ?= $(shell test -f /usr/include/security/pam_appl.h && echo y) +-AUDITH ?= $(shell test -f /usr/include/libaudit.h && echo y) ++LOCALEDIR ?= $(PREFIX)/share/locale ++PAMH ?= $(shell test -f $(PREFIX)/include/security/pam_appl.h && echo y) ++AUDITH ?= $(shell test -f $(PREFIX)/include/libaudit.h && echo y) + + CFLAGS ?= -Werror -Wall -W + override CFLAGS += -DUSE_NLS -DLOCALEDIR="\"$(LOCALEDIR)\"" -DPACKAGE="\"policycoreutils\"" +-- +2.13.6 + diff --git a/buildroot/package/policycoreutils/Config.in b/buildroot/package/policycoreutils/Config.in new file mode 100644 index 0000000..0d69fb5 --- /dev/null +++ b/buildroot/package/policycoreutils/Config.in @@ -0,0 +1,38 @@ +comment "policycoreutils needs a glibc toolchain w/ threads, dynamic library" + depends on !BR2_arc + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_POLICYCOREUTILS + bool "policycoreutils" + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS # libsemanage + depends on BR2_TOOLCHAIN_HAS_THREADS # libsemanage + depends on !BR2_STATIC_LIBS #libsemanage + depends on !BR2_arc # libsemanage + depends on BR2_TOOLCHAIN_USES_GLIBC # libsemanage + select BR2_PACKAGE_LIBSEMANAGE + select BR2_PACKAGE_LIBCAP_NG + help + Policycoreutils is a collection of policy utilities + (originally the "core" set of utilities needed to use + SELinux, although it has grown a bit over time), which have + different dependencies. sestatus, secon, run_init, and + newrole only use libselinux. load_policy and setfiles only + use libselinux and libsepol. semodule and semanage use + libsemanage (and thus bring in dependencies on libsepol and + libselinux as well). setsebool uses libselinux to make + non-persistent boolean changes (via the kernel interface) + and uses libsemanage to make persistent boolean changes. + + The base package will install the following utilities: + load_policy + newrole + run_init + secon + semodule + sestatus + setfiles + setsebool + + http://selinuxproject.org/page/Main_Page diff --git a/buildroot/package/policycoreutils/policycoreutils.hash b/buildroot/package/policycoreutils/policycoreutils.hash new file mode 100644 index 0000000..241905c --- /dev/null +++ b/buildroot/package/policycoreutils/policycoreutils.hash @@ -0,0 +1,3 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 0a1b8a4a323b854981c6755ff025fe98a0f1cff307f109abb260f0490f13e4f4 policycoreutils-2.7.tar.gz +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/buildroot/package/policycoreutils/policycoreutils.mk b/buildroot/package/policycoreutils/policycoreutils.mk new file mode 100644 index 0000000..21c5470 --- /dev/null +++ b/buildroot/package/policycoreutils/policycoreutils.mk @@ -0,0 +1,111 @@ +################################################################################ +# +# policycoreutils +# +################################################################################ + +POLICYCOREUTILS_VERSION = 2.7 +POLICYCOREUTILS_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20170804 +POLICYCOREUTILS_LICENSE = GPL-2.0 +POLICYCOREUTILS_LICENSE_FILES = COPYING + +POLICYCOREUTILS_DEPENDENCIES = libsemanage libcap-ng + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +POLICYCOREUTILS_DEPENDENCIES += linux-pam +POLICYCOREUTILS_MAKE_OPTS += NAMESPACE_PRIV=y +define POLICYCOREUTILS_INSTALL_TARGET_LINUX_PAM_CONFS + $(INSTALL) -D -m 0644 $(@D)/newrole/newrole-lspp.pamd $(TARGET_DIR)/etc/pam.d/newrole + $(INSTALL) -D -m 0644 $(@D)/run_init/run_init.pamd $(TARGET_DIR)/etc/pam.d/run_init +endef +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +POLICYCOREUTILS_DEPENDENCIES += audit +POLICYCOREUTILS_MAKE_OPTS += AUDIT_LOG_PRIV=y +endif + +# Enable LSPP_PRIV if both audit and linux pam are enabled +ifeq ($(BR2_PACKAGE_LINUX_PAM)$(BR2_PACKAGE_AUDIT),yy) +POLICYCOREUTILS_MAKE_OPTS += LSPP_PRIV=y +endif + +# Undefining _FILE_OFFSET_BITS here because of a "bug" with glibc fts.h +# large file support. +# See https://bugzilla.redhat.com/show_bug.cgi?id=574992 for more information +POLICYCOREUTILS_MAKE_OPTS += \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -U_FILE_OFFSET_BITS" \ + CPPFLAGS="$(TARGET_CPPFLAGS) -U_FILE_OFFSET_BITS" \ + ARCH="$(BR2_ARCH)" + +POLICYCOREUTILS_MAKE_DIRS = \ + load_policy newrole run_init \ + secon semodule sestatus setfiles \ + setsebool + +# We need to pass DESTDIR at build time because it's used by +# policycoreutils build system to find headers and libraries. +define POLICYCOREUTILS_BUILD_CMDS + $(foreach d,$(POLICYCOREUTILS_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(POLICYCOREUTILS_MAKE_OPTS) \ + DESTDIR=$(STAGING_DIR) all + ) +endef + +define POLICYCOREUTILS_INSTALL_TARGET_CMDS + $(foreach d,$(POLICYCOREUTILS_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(POLICYCOREUTILS_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) install + ) +endef + +HOST_POLICYCOREUTILS_DEPENDENCIES = \ + host-libsemanage host-dbus-glib host-setools + +# Undefining _FILE_OFFSET_BITS here because of a "bug" with glibc fts.h +# large file support. +# See https://bugzilla.redhat.com/show_bug.cgi?id=574992 for more information +# We need to pass DESTDIR at build time because it's used by +# policycoreutils build system to find headers and libraries. +# We also need to pass PREFIX because it defaults to $(DESTDIR)/usr +HOST_POLICYCOREUTILS_MAKE_OPTS = \ + $(HOST_CONFIGURE_OPTS) \ + CFLAGS="$(HOST_CFLAGS) -U_FILE_OFFSET_BITS" \ + CPPFLAGS="$(HOST_CPPFLAGS) -U_FILE_OFFSET_BITS" \ + PYTHON="$(HOST_DIR)/bin/python" \ + PYTHON_INSTALL_ARGS="$(HOST_PKG_PYTHON_DISTUTILS_INSTALL_OPTS)" \ + ARCH="$(HOSTARCH)" \ + DESTDIR=$(HOST_DIR) \ + PREFIX=$(HOST_DIR) + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +HOST_POLICYCOREUTILS_DEPENDENCIES += host-python3 +HOST_POLICYCOREUTILS_MAKE_OPTS += \ + PYLIBVER="python$(PYTHON3_VERSION_MAJOR)" +else +HOST_POLICYCOREUTILS_DEPENDENCIES += host-python +HOST_POLICYCOREUTILS_MAKE_OPTS += \ + PYLIBVER="python$(PYTHON_VERSION_MAJOR)" +endif + +# Note: We are only building the programs required by the refpolicy build +HOST_POLICYCOREUTILS_MAKE_DIRS = \ + load_policy newrole run_init \ + secon semodule sestatus setfiles \ + setsebool + +define HOST_POLICYCOREUTILS_BUILD_CMDS + $(foreach d,$(HOST_POLICYCOREUTILS_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(HOST_POLICYCOREUTILS_MAKE_OPTS) all + ) +endef + +define HOST_POLICYCOREUTILS_INSTALL_CMDS + $(foreach d,$(HOST_POLICYCOREUTILS_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(HOST_POLICYCOREUTILS_MAKE_OPTS) install + ) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/polkit/Config.in b/buildroot/package/polkit/Config.in new file mode 100644 index 0000000..debd1d9 --- /dev/null +++ b/buildroot/package/polkit/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_POLKIT + bool "polkit" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_EXPAT + help + PolicyKit is a toolkit for defining and handling + authorizations. It is used for allowing unprivileged + processes to speak to privileged processes. + + http://www.freedesktop.org/wiki/Software/polkit + +comment "polkit needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/polkit/polkit.hash b/buildroot/package/polkit/polkit.hash new file mode 100644 index 0000000..5e133b4 --- /dev/null +++ b/buildroot/package/polkit/polkit.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 36607c8ce576980ee55bd12bab1944f13217eb8e9d04ab56022545861ece3bc5 polkit-0.103.tar.gz diff --git a/buildroot/package/polkit/polkit.mk b/buildroot/package/polkit/polkit.mk new file mode 100644 index 0000000..e283181 --- /dev/null +++ b/buildroot/package/polkit/polkit.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# polkit +# +################################################################################ + +POLKIT_VERSION = 0.103 +POLKIT_SITE = http://www.freedesktop.org/software/polkit/releases +POLKIT_LICENSE = GPL-2.0 +POLKIT_LICENSE_FILES = COPYING + +POLKIT_INSTALL_STAGING = YES + +POLKIT_DEPENDENCIES = libglib2 host-intltool expat + +# We could also support --with-authfw=pam +POLKIT_CONF_OPTS = \ + --with-authfw=shadow \ + --with-os-type=unknown \ + --disable-man-pages \ + --disable-examples + +$(eval $(autotools-package)) diff --git a/buildroot/package/poppler/0001-Form.cc-include-ctype.h-to-fix-build-error.patch b/buildroot/package/poppler/0001-Form.cc-include-ctype.h-to-fix-build-error.patch new file mode 100644 index 0000000..8d210da --- /dev/null +++ b/buildroot/package/poppler/0001-Form.cc-include-ctype.h-to-fix-build-error.patch @@ -0,0 +1,37 @@ +From f40143f7acca81b7d39d774ed4c349aec8d9310b Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 23 Sep 2017 11:37:23 +0200 +Subject: [PATCH] Form.cc: include ctype.h to fix build error + +Fixes +Form.cc:546:28: error: 'isdigit' was not declared in this scope +Form.cc:548:34: error: 'isxdigit' was not declared in this scope +Form.cc:575:40: error: 'isxdigit' was not declared in this scope + +detected by buildroot autobuilders: +http://autobuild.buildroot.net/results/a6a/a6a336f8b6a0136b204a34091e33dc4598178125/ +when cross-compiling with +gcc version 4.7.3 (crosstool-NG hg+-c65fcf8a34b7) + +Patch sent upstream: https://bugs.freedesktop.org/show_bug.cgi?id=102951 + +Signed-off-by: Bernd Kuhls +--- + poppler/Form.cc | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/poppler/Form.cc b/poppler/Form.cc +index 83bceb20..e7efae95 100644 +--- a/poppler/Form.cc ++++ b/poppler/Form.cc +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + #include "goo/gmem.h" + #include "goo/GooString.h" + #include "Error.h" +-- +2.11.0 + diff --git a/buildroot/package/poppler/Config.in b/buildroot/package/poppler/Config.in new file mode 100644 index 0000000..9b03df8 --- /dev/null +++ b/buildroot/package/poppler/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_POPPLER + bool "poppler" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7 + help + Poppler is a PDF rendering library based on the xpdf-3.0 + code base. + + http://poppler.freedesktop.org/ + +if BR2_PACKAGE_POPPLER + +config BR2_PACKAGE_POPPLER_QT + bool "Qt support" + depends on BR2_PACKAGE_QT + select BR2_PACKAGE_QT_GUI_MODULE + select BR2_PACKAGE_QT_XML + help + Build Qt support into the Poppler library + +config BR2_PACKAGE_POPPLER_QT5 + bool "Qt5 support" + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5BASE_XML + help + Build Qt support into the Poppler library + +endif + +comment "poppler needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/poppler/poppler.hash b/buildroot/package/poppler/poppler.hash new file mode 100644 index 0000000..7aa14c6 --- /dev/null +++ b/buildroot/package/poppler/poppler.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a3d626b24cd14efa9864e12584b22c9c32f51c46417d7c10ca17651f297c9641 poppler-0.59.0.tar.xz diff --git a/buildroot/package/poppler/poppler.mk b/buildroot/package/poppler/poppler.mk new file mode 100644 index 0000000..bad61a6 --- /dev/null +++ b/buildroot/package/poppler/poppler.mk @@ -0,0 +1,112 @@ +################################################################################ +# +# poppler +# +################################################################################ + +POPPLER_VERSION = 0.59.0 +POPPLER_SOURCE = poppler-$(POPPLER_VERSION).tar.xz +POPPLER_SITE = http://poppler.freedesktop.org +POPPLER_DEPENDENCIES = fontconfig host-pkgconf +POPPLER_LICENSE = GPL-2.0+ +POPPLER_LICENSE_FILES = COPYING +POPPLER_INSTALL_STAGING = YES +POPPLER_CONF_OPTS = --with-font-configuration=fontconfig \ + --enable-xpdf-headers + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +POPPLER_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -latomic" +endif + +ifeq ($(BR2_PACKAGE_CAIRO),y) +POPPLER_CONF_OPTS += --enable-cairo-output +POPPLER_DEPENDENCIES += cairo +else +POPPLER_CONF_OPTS += --disable-cairo-output +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +POPPLER_CONF_OPTS += --enable-cms=lcms2 +POPPLER_DEPENDENCIES += lcms2 +else +POPPLER_CONF_OPTS += --enable-cms=none +endif + +ifeq ($(BR2_PACKAGE_CAIRO)$(BR2_PACKAGE_LIBGLIB2),yy) +POPPLER_CONF_OPTS += --enable-poppler-glib +POPPLER_DEPENDENCIES += libglib2 +else +POPPLER_CONF_OPTS += --disable-poppler-glib +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +POPPLER_CONF_OPTS += --enable-libtiff +# Help poppler to find libtiff in static linking scenarios +POPPLER_CONF_ENV += \ + LIBTIFF_LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libtiff-4`" +POPPLER_DEPENDENCIES += tiff +else +POPPLER_CONF_OPTS += --disable-libtiff +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +POPPLER_CONF_OPTS += --enable-dctdecoder=libjpeg +POPPLER_DEPENDENCIES += jpeg +else +POPPLER_CONF_OPTS += --enable-dctdecoder=none +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +POPPLER_CONF_OPTS += --enable-libpng +POPPLER_DEPENDENCIES += libpng +else +POPPLER_CONF_OPTS += --disable-libpng +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +POPPLER_CONF_OPTS += --enable-zlib +POPPLER_DEPENDENCIES += zlib +else +POPPLER_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +POPPLER_CONF_OPTS += --enable-libcurl +POPPLER_DEPENDENCIES += libcurl +else +POPPLER_CONF_OPTS += --disable-libcurl +endif + +ifeq ($(BR2_PACKAGE_XORG7),y) +POPPLER_CONF_OPTS += --with-x +POPPLER_DEPENDENCIES += xlib_libX11 xlib_libXext +else +POPPLER_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_PACKAGE_POPPLER_QT),y) +POPPLER_DEPENDENCIES += qt +POPPLER_CONF_OPTS += --enable-poppler-qt4 +else +POPPLER_CONF_OPTS += --disable-poppler-qt4 +endif + +ifeq ($(BR2_PACKAGE_POPPLER_QT5),y) +POPPLER_DEPENDENCIES += qt5base +POPPLER_CONF_OPTS += --enable-poppler-qt5 +# since Qt5.7.x c++11 is needed (LTS Qt5.6.x is the last one without this requirement) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +POPPLER_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" +endif +else +POPPLER_CONF_OPTS += --disable-poppler-qt5 +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +POPPLER_DEPENDENCIES += openjpeg +POPPLER_CONF_OPTS += --enable-libopenjpeg=openjpeg2 +else +POPPLER_CONF_OPTS += --enable-libopenjpeg=none +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/popt/0001-no-wchar.patch b/buildroot/package/popt/0001-no-wchar.patch new file mode 100644 index 0000000..161165e --- /dev/null +++ b/buildroot/package/popt/0001-no-wchar.patch @@ -0,0 +1,12 @@ +diff -ru popt-1.14_vanilla/popthelp.c popt-1.14_no-wchar/popthelp.c +--- popt-1.14_vanilla/popthelp.c 2008-03-27 17:33:08.000000000 +0000 ++++ popt-1.14_no-wchar/popthelp.c 2008-04-10 05:44:43.000000000 +0000 +@@ -15,7 +15,7 @@ + #include + #endif + +-#define POPT_WCHAR_HACK ++/* #define POPT_WCHAR_HACK */ + #ifdef POPT_WCHAR_HACK + #include /* for mbsrtowcs */ + /*@access mbstate_t @*/ diff --git a/buildroot/package/popt/0002-fix-autoreconf.patch b/buildroot/package/popt/0002-fix-autoreconf.patch new file mode 100644 index 0000000..f1fcc57 --- /dev/null +++ b/buildroot/package/popt/0002-fix-autoreconf.patch @@ -0,0 +1,38 @@ +Make sure we can autoreconfigure popt + +This commit makes a few changes in the popt build system to allow it +to be autoreconfigured with modern autotools: + + - the TESTS variable shouldn't be using $(top_srcdir), and since we + don't care about tests in Buildroot, we just disable it. + + - the AM_C_PROTOTYPES macro is deprecated and should no longer be + used, causes an error with autoconf/automake. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile.am +=================================================================== +--- a/Makefile.am ++++ b/Makefile.am +@@ -37,8 +37,6 @@ + TESTS_ENVIRONMENT = \ + test1="$(top_builddir)/test1" + +-TESTS = $(top_srcdir)/testit.sh +- + include_HEADERS = popt.h + + usrlibdir = $(libdir) +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -46,7 +46,6 @@ + AC_SYS_LARGEFILE + + AC_ISC_POSIX +-AM_C_PROTOTYPES + + AC_CHECK_HEADERS(float.h fnmatch.h glob.h langinfo.h libintl.h mcheck.h unistd.h) + diff --git a/buildroot/package/popt/0003-glob-detection.patch b/buildroot/package/popt/0003-glob-detection.patch new file mode 100644 index 0000000..7bdce7d --- /dev/null +++ b/buildroot/package/popt/0003-glob-detection.patch @@ -0,0 +1,41 @@ +Detect glob_pattern_p() + +The current popt build system tests the existence of , and +then assumes that if __GLIBC__ is defined, then glob_pattern_p() must +be available. Unfortunately, that's not true with uClibc: may +be installed, but not necessarily the GNU glob extensions... and +uClibc defines __GLIBC__. This is causing build issues with certain +uClibc toolchains that do not have GNU glob extensions enabled. + +To fix this, this patch adds an AC_CHECK_FUNCS() test for +glob_pattern_p, and uses that to find out whether glob_pattern_p() is +available or not. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -81,7 +81,7 @@ + AC_CHECK_FUNC(setreuid, [], [ + AC_CHECK_LIB(ucb, setreuid, [if echo $LIBS | grep -- -lucb >/dev/null ;then :; else LIBS="$LIBS -lc -lucb" USEUCB=y;fi]) + ]) +-AC_CHECK_FUNCS(getuid geteuid iconv mtrace __secure_getenv setregid stpcpy strerror vasprintf srandom) ++AC_CHECK_FUNCS(getuid geteuid iconv mtrace __secure_getenv setregid stpcpy strerror vasprintf srandom glob_pattern_p) + + AM_GNU_GETTEXT([external]) + AM_ICONV_LINK +Index: b/poptconfig.c +=================================================================== +--- a/poptconfig.c ++++ b/poptconfig.c +@@ -42,7 +42,7 @@ + /*@=declundef =exportheader =incondefs =protoparammatch =redecl =type @*/ + #endif /* __LCLINT__ */ + +-#if !defined(__GLIBC__) ++#if !defined(HAVE_GLOB_PATTERN_P) + /* Return nonzero if PATTERN contains any metacharacters. + Metacharacters can be quoted with backslashes if QUOTE is nonzero. */ + static int diff --git a/buildroot/package/popt/Config.in b/buildroot/package/popt/Config.in new file mode 100644 index 0000000..cbcdc15 --- /dev/null +++ b/buildroot/package/popt/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_POPT + bool "popt" + help + Popt is a C library for parsing command line parameters. + + http://rpm5.org diff --git a/buildroot/package/popt/popt.hash b/buildroot/package/popt/popt.hash new file mode 100644 index 0000000..875bbae --- /dev/null +++ b/buildroot/package/popt/popt.hash @@ -0,0 +1,2 @@ +# Locally calculated: +sha256 e728ed296fe9f069a0e005003c3d6b2dde3d9cad453422a10d6558616d304cc8 popt-1.16.tar.gz diff --git a/buildroot/package/popt/popt.mk b/buildroot/package/popt/popt.mk new file mode 100644 index 0000000..99c5138 --- /dev/null +++ b/buildroot/package/popt/popt.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# popt +# +################################################################################ + +POPT_VERSION = 1.16 +POPT_SITE = http://rpm5.org/files/popt +POPT_INSTALL_STAGING = YES +POPT_LICENSE = MIT +POPT_LICENSE_FILES = COPYING +POPT_AUTORECONF = YES +POPT_GETTEXTIZE = YES +POPT_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +POPT_CONF_ENV = ac_cv_va_copy=yes + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +POPT_CONF_ENV += am_cv_lib_iconv=yes +POPT_CONF_OPTS += --with-libiconv-prefix=$(STAGING_DIR)/usr +POPT_DEPENDENCIES += libiconv +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/portaudio/Config.in b/buildroot/package/portaudio/Config.in new file mode 100644 index 0000000..18e87fd --- /dev/null +++ b/buildroot/package/portaudio/Config.in @@ -0,0 +1,33 @@ +comment "portaudio needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_PORTAUDIO + bool "portaudio" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + PortAudio is a free, cross-platform, open-source, + audio I/O library. + + http://www.portaudio.com/ + +if BR2_PACKAGE_PORTAUDIO + +config BR2_PACKAGE_PORTAUDIO_ALSA + bool "alsa support" + default y + select BR2_PACKAGE_ALSA_LIB + help + Compile with ALSA support. + +config BR2_PACKAGE_PORTAUDIO_OSS + bool "oss support" + help + Compile with OSS support. + +config BR2_PACKAGE_PORTAUDIO_CXX + bool "C++ bindings" + depends on BR2_INSTALL_LIBSTDCPP + help + Enables C++ bindings. + +endif # BR2_PACKAGE_PORTAUDIO diff --git a/buildroot/package/portaudio/portaudio.hash b/buildroot/package/portaudio/portaudio.hash new file mode 100644 index 0000000..ca7baf7 --- /dev/null +++ b/buildroot/package/portaudio/portaudio.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f5a21d7dcd6ee84397446fa1fa1a0675bb2e8a4a6dceb4305a8404698d8d1513 pa_stable_v190600_20161030.tgz diff --git a/buildroot/package/portaudio/portaudio.mk b/buildroot/package/portaudio/portaudio.mk new file mode 100644 index 0000000..0cf754c --- /dev/null +++ b/buildroot/package/portaudio/portaudio.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# portaudio +# +################################################################################ + +PORTAUDIO_VERSION = v190600_20161030 +PORTAUDIO_SITE = http://www.portaudio.com/archives +PORTAUDIO_SOURCE = pa_stable_$(PORTAUDIO_VERSION).tgz +PORTAUDIO_INSTALL_STAGING = YES +PORTAUDIO_MAKE = $(MAKE1) +PORTAUDIO_LICENSE = portaudio license (MIT-like plus special clause) +PORTAUDIO_LICENSE_FILES = LICENSE.txt + +PORTAUDIO_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_PORTAUDIO_ALSA),alsa-lib) + +PORTAUDIO_CONF_OPTS = \ + $(if $(BR2_PACKAGE_PORTAUDIO_ALSA),--with-alsa,--without-alsa) \ + $(if $(BR2_PACKAGE_PORTAUDIO_OSS),--with-oss,--without-oss) \ + $(if $(BR2_PACKAGE_PORTAUDIO_CXX),--enable-cxx,--disable-cxx) + +$(eval $(autotools-package)) diff --git a/buildroot/package/postgresql/Config.in b/buildroot/package/postgresql/Config.in new file mode 100644 index 0000000..9dda54b --- /dev/null +++ b/buildroot/package/postgresql/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_POSTGRESQL + bool "postgresql" + depends on BR2_USE_MMU # fork() + # fails to build in a pure static linking scenario, and + # postgresql is unlikely to be used in a pure statically + # linked environment. + depends on !BR2_STATIC_LIBS + help + PostgreSQL is a powerful, open source object-relational + database system. + + Enable the readline package to gain readline support in + pgsql (the command line interpreter), which offers + command history and edit functions. + + Enable the zlib package to gain builtin compression for + archives with pg_dump and pg_restore. + + http://www.postgresql.org + +comment "postgresql needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/postgresql/S50postgresql b/buildroot/package/postgresql/S50postgresql new file mode 100644 index 0000000..1ece4fc --- /dev/null +++ b/buildroot/package/postgresql/S50postgresql @@ -0,0 +1,44 @@ +#!/bin/sh +# +# start postgresql +# + +umask 077 + +if [ ! -f /var/lib/pgsql/PG_VERSION ]; then + echo "Initializing postgresql data base..." + su - postgres -c '/usr/bin/pg_ctl initdb -D /var/lib/pgsql' + echo "done" +fi + +start() { + printf "Starting postgresql: " + su - postgres -c '/usr/bin/pg_ctl start -w -D /var/lib/pgsql -l logfile' + echo "OK" +} +stop() { + printf "Stopping postgresql: " + su - postgres -c '/usr/bin/pg_ctl stop -D /var/lib/pgsql -m fast' + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/postgresql/pg_config b/buildroot/package/postgresql/pg_config new file mode 100644 index 0000000..85c0e63 --- /dev/null +++ b/buildroot/package/postgresql/pg_config @@ -0,0 +1,19 @@ +#!/bin/sh + +# +# Minimal pg_config implementation as replacement for the native pg_config application +# Only implements --includedir and --libdir +# + +prefix=/usr + +case "$1" in + --includedir) + echo "$prefix/include" + ;; + --libdir) + echo "$prefix/lib" + ;; + *) + echo "Usage: $0 {--includedir|--libdir}" +esac diff --git a/buildroot/package/postgresql/postgresql.hash b/buildroot/package/postgresql/postgresql.hash new file mode 100644 index 0000000..533c398 --- /dev/null +++ b/buildroot/package/postgresql/postgresql.hash @@ -0,0 +1,5 @@ +# From https://ftp.postgresql.org/pub/source/v10.3/postgresql-10.3.tar.bz2.sha256 +sha256 6ea268780ee35e88c65cdb0af7955ad90b7d0ef34573867f223f14e43467931a postgresql-10.3.tar.bz2 + +# License file, Locally calculated +sha256 24cfc70cf16b3a23242c49ffce39510683bdd48cbedb8a46fe03976ee5f5c21e COPYRIGHT diff --git a/buildroot/package/postgresql/postgresql.mk b/buildroot/package/postgresql/postgresql.mk new file mode 100644 index 0000000..c6b689a --- /dev/null +++ b/buildroot/package/postgresql/postgresql.mk @@ -0,0 +1,104 @@ +################################################################################ +# +# postgresql +# +################################################################################ + +POSTGRESQL_VERSION = 10.3 +POSTGRESQL_SOURCE = postgresql-$(POSTGRESQL_VERSION).tar.bz2 +POSTGRESQL_SITE = http://ftp.postgresql.org/pub/source/v$(POSTGRESQL_VERSION) +POSTGRESQL_LICENSE = PostgreSQL +POSTGRESQL_LICENSE_FILES = COPYRIGHT +POSTGRESQL_INSTALL_STAGING = YES +POSTGRESQL_CONFIG_SCRIPTS = pg_config +POSTGRESQL_CONF_ENV = \ + ac_cv_type_struct_sockaddr_in6=yes \ + pgac_cv_snprintf_long_long_int_modifier="ll" \ + pgac_cv_snprintf_size_t_support=yes +POSTGRESQL_CONF_OPTS = --disable-rpath + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# PostgreSQL does not build against uClibc with locales +# enabled, due to an uClibc bug, see +# http://lists.uclibc.org/pipermail/uclibc/2014-April/048326.html +# so overwrite automatic detection and disable locale support +POSTGRESQL_CONF_ENV += pgac_cv_type_locale_t=no +endif + +ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +POSTGRESQL_CONF_OPTS += --disable-thread-safety +endif + +ifeq ($(BR2_arcle)$(BR2_arceb)$(BR2_microblazeel)$(BR2_microblazebe)$(BR2_or1k)$(BR2_nios2)$(BR2_xtensa),y) +POSTGRESQL_CONF_OPTS += --disable-spinlocks +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +POSTGRESQL_DEPENDENCIES += readline +else +POSTGRESQL_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +POSTGRESQL_DEPENDENCIES += zlib +else +POSTGRESQL_CONF_OPTS += --without-zlib +endif + +ifeq ($(BR2_PACKAGE_TZDATA),y) +POSTGRESQL_DEPENDENCIES += tzdata +POSTGRESQL_CONF_OPTS += --with-system-tzdata=/usr/share/zoneinfo +else +POSTGRESQL_DEPENDENCIES += host-zic +POSTGRESQL_CONF_ENV += ZIC="$(ZIC)" +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +POSTGRESQL_DEPENDENCIES += openssl +POSTGRESQL_CONF_OPTS += --with-openssl +else +# PostgreSQL checks for /dev/urandom and fails if it's being cross-compiled and +# an SSL library isn't found. Since /dev/urandom is guaranteed to be provided +# on Linux systems, explicitly tell the configure script it's available. +POSTGRESQL_CONF_ENV += ac_cv_file__dev_urandom=yes +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +POSTGRESQL_DEPENDENCIES += openldap +POSTGRESQL_CONF_OPTS += --with-ldap +else +POSTGRESQL_CONF_OPTS += --without-ldap +endif + +define POSTGRESQL_USERS + postgres -1 postgres -1 * /var/lib/pgsql /bin/sh - PostgreSQL Server +endef + +define POSTGRESQL_INSTALL_TARGET_FIXUP + $(INSTALL) -dm 0700 $(TARGET_DIR)/var/lib/pgsql + $(RM) -rf $(TARGET_DIR)/usr/lib/postgresql/pgxs +endef + +POSTGRESQL_POST_INSTALL_TARGET_HOOKS += POSTGRESQL_INSTALL_TARGET_FIXUP + +define POSTGRESQL_INSTALL_CUSTOM_PG_CONFIG + $(INSTALL) -m 0755 -D package/postgresql/pg_config \ + $(STAGING_DIR)/usr/bin/pg_config +endef + +POSTGRESQL_POST_INSTALL_STAGING_HOOKS += POSTGRESQL_INSTALL_CUSTOM_PG_CONFIG + +define POSTGRESQL_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/postgresql/S50postgresql \ + $(TARGET_DIR)/etc/init.d/S50postgresql +endef + +define POSTGRESQL_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/postgresql/postgresql.service \ + $(TARGET_DIR)/usr/lib/systemd/system/postgresql.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/postgresql.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/postgresql.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/postgresql/postgresql.service b/buildroot/package/postgresql/postgresql.service new file mode 100644 index 0000000..4a96258 --- /dev/null +++ b/buildroot/package/postgresql/postgresql.service @@ -0,0 +1,24 @@ +[Unit] +Description=PostgreSQL database server +After=network.target + +[Service] +Type=forking + +# start timeout disabled because initdb may run a little +# longer (eg. 5 minutes on RaspberryPi) +TimeoutStartSec=0 + +User=postgres +Group=postgres + +SyslogIdentifier=postgres +PIDFile=/var/lib/pgsql/postmaster.pid + +ExecStartPre=/bin/sh -c "if [ ! -f /var/lib/pgsql/PG_VERSION ]; then /usr/bin/pg_ctl initdb -D /var/lib/pgsql; fi" +ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql -w -l /var/lib/pgsql/logfile +ExecReload=/usr/bin/pg_ctl reload -D /var/lib/pgsql +ExecStop=/usr/bin/pg_ctl stop -D /var/lib/pgsql -m fast + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/pound/0001-fix-openssl-1.0.2.patch b/buildroot/package/pound/0001-fix-openssl-1.0.2.patch new file mode 100644 index 0000000..b20fdb3 --- /dev/null +++ b/buildroot/package/pound/0001-fix-openssl-1.0.2.patch @@ -0,0 +1,127 @@ +From eb471de8f26e0367dd08d299d2252fa8b2b958a9 Mon Sep 17 00:00:00 2001 +From: Emilio +Date: Mon, 17 Jul 2017 09:41:32 +0200 +Subject: [PATCH] [Improvement] Added support to compile pound with openssl + 1.0.2 + +Signed-off-by: Emilio + + new file: dh2048.h + modified: svc.c + +Patch was downloaded from 3rd-party repo: +https://github.com/zevenet/pound/commit/eb471de8f26e0367dd08d299d2252fa8b2b958a9 + +This repo was announced on upstream mailinglist: +http://www.apsis.ch/pound/pound_list/archive/2017/2017-07/1500287626000#1500287626000 + +Signed-off-by: Bernd Kuhls +--- + dh2048.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + svc.c | 33 +++++++++++++++++++++++++++++++++ + 2 files changed, 86 insertions(+) + create mode 100644 dh2048.h + +diff --git a/dh2048.h b/dh2048.h +new file mode 100644 +index 0000000..79c693c +--- /dev/null ++++ b/dh2048.h +@@ -0,0 +1,53 @@ ++#ifndef HEADER_DH_H ++# include ++#endif ++ ++DH *get_dh2048() ++{ ++ static unsigned char dhp_2048[] = { ++ 0xBF, 0x6C, 0xC6, 0xBD, 0xEA, 0x10, 0x84, 0x59, 0x40, 0xC2, ++ 0xC6, 0xA2, 0x9B, 0x19, 0xD3, 0x2E, 0x2F, 0xAB, 0xE6, 0xE4, ++ 0x1E, 0x91, 0x0D, 0x59, 0xDC, 0x96, 0x3F, 0x6E, 0x65, 0x38, ++ 0xB9, 0xBE, 0xBB, 0x8F, 0xDF, 0x73, 0xAC, 0xAC, 0xB3, 0x2F, ++ 0xA7, 0x02, 0x0B, 0x87, 0xB7, 0x3F, 0x3A, 0x42, 0x8A, 0x94, ++ 0xDD, 0xEC, 0x33, 0xA4, 0x25, 0xB1, 0xBF, 0x84, 0x91, 0x87, ++ 0xD8, 0x1C, 0x42, 0xB9, 0x8E, 0x00, 0x1F, 0x49, 0xED, 0x57, ++ 0xA4, 0x48, 0xB0, 0xCC, 0xD8, 0xB8, 0x83, 0xCA, 0x3E, 0xDF, ++ 0xA2, 0xF2, 0x07, 0x71, 0x71, 0x18, 0x1F, 0x50, 0x45, 0x3A, ++ 0x66, 0x04, 0x7F, 0x15, 0xB2, 0xA8, 0x02, 0x77, 0xCE, 0xC6, ++ 0xF9, 0x7C, 0x63, 0xE4, 0x52, 0x41, 0xFA, 0x62, 0xB9, 0x0D, ++ 0xDC, 0x08, 0x62, 0xEC, 0x00, 0xAB, 0xB0, 0xF7, 0x79, 0x48, ++ 0x75, 0x22, 0x85, 0xCC, 0x67, 0x3C, 0xEA, 0x09, 0x32, 0xAC, ++ 0x30, 0xED, 0x1E, 0x67, 0xDC, 0x74, 0xF8, 0xD9, 0xC3, 0xD0, ++ 0xA0, 0x60, 0x4D, 0xCE, 0x52, 0xBC, 0xA3, 0xE5, 0x18, 0x7B, ++ 0x0B, 0xC8, 0xCE, 0x70, 0xA2, 0xC8, 0x21, 0xCA, 0xCE, 0xA5, ++ 0xD4, 0xCB, 0x85, 0xFC, 0xC7, 0x07, 0x5C, 0x05, 0x87, 0xFC, ++ 0x2F, 0x67, 0x4D, 0x2D, 0x4F, 0xA4, 0xEE, 0x63, 0x98, 0x49, ++ 0xE4, 0x2E, 0xD7, 0x3F, 0x7D, 0x69, 0x68, 0x0A, 0xA2, 0x3E, ++ 0x5A, 0x04, 0xD4, 0xDD, 0xBB, 0xC7, 0xB4, 0x34, 0xB7, 0x21, ++ 0xD3, 0xAC, 0x99, 0xD7, 0x87, 0x45, 0x5E, 0x18, 0x68, 0x16, ++ 0x3A, 0xAF, 0xE2, 0x04, 0x57, 0xB8, 0x6A, 0xB8, 0x2F, 0x75, ++ 0xD5, 0x79, 0x96, 0x60, 0x8D, 0xD1, 0xCC, 0xD1, 0x33, 0x85, ++ 0x53, 0x88, 0x87, 0x34, 0xA6, 0x4B, 0x49, 0x24, 0x53, 0xD6, ++ 0xF1, 0x1E, 0x4E, 0x98, 0x4D, 0x6B, 0x44, 0x31, 0x94, 0xFF, ++ 0x46, 0xC2, 0x38, 0x2E, 0xEA, 0xBB ++ }; ++ static unsigned char dhg_2048[] = { ++ 0x05 ++ }; ++ DH *dh = DH_new(); ++ BIGNUM *dhp_bn, *dhg_bn; ++ ++ if (dh == NULL) ++ return NULL; ++ dhp_bn = BN_bin2bn(dhp_2048, sizeof (dhp_2048), NULL); ++ dhg_bn = BN_bin2bn(dhg_2048, sizeof (dhg_2048), NULL); ++ if (dhp_bn == NULL || dhg_bn == NULL ++ || !DH_set0_pqg(dh, dhp_bn, NULL, dhg_bn)) { ++ DH_free(dh); ++ BN_free(dhp_bn); ++ BN_free(dhg_bn); ++ return NULL; ++ } ++ return dh; ++} +diff --git a/svc.c b/svc.c +index 1341397..758dfbd 100644 +--- a/svc.c ++++ b/svc.c +@@ -1512,6 +1512,39 @@ do_RSAgen(void) + return; + } + ++ ++#if OPENSSL_VERSION_NUMBER < 0x10100000 ++static inline int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g) ++{ ++ /* If the fields p and g in d are NULL, the corresponding input ++ * parameters MUST be non-NULL. q may remain NULL. ++ */ ++ if ((dh->p == NULL && p == NULL) ++ || (dh->g == NULL && g == NULL)) ++ return 0; ++ ++ if (p != NULL) { ++ BN_free(dh->p); ++ dh->p = p; ++ } ++ if (q != NULL) { ++ BN_free(dh->q); ++ dh->q = q; ++ } ++ if (g != NULL) { ++ BN_free(dh->g); ++ dh->g = g; ++ } ++ ++ if (q != NULL) { ++ dh->length = BN_num_bits(q); ++ } ++ ++ return 1; ++} ++#endif ++ ++ + #include "dh512.h" + + #if DH_LEN == 1024 diff --git a/buildroot/package/pound/Config.in b/buildroot/package/pound/Config.in new file mode 100644 index 0000000..91c29ea --- /dev/null +++ b/buildroot/package/pound/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_POUND + bool "pound" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL + help + The Pound program is a reverse proxy, load balancer and HTTPS + front-end for Web server(s). Pound was developed to enable + distributing the load among several Web-servers and to allow + for a convenient SSL wrapper for those Web servers that do not + offer it natively. + + http://www.apsis.ch/pound + +comment "pound needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/pound/pound.hash b/buildroot/package/pound/pound.hash new file mode 100644 index 0000000..6908b90 --- /dev/null +++ b/buildroot/package/pound/pound.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 cdfbf5a7e8dc8fbbe0d6c1e83cd3bd3f2472160aac65684bb01ef661c626a8e4 Pound-2.7.tgz diff --git a/buildroot/package/pound/pound.mk b/buildroot/package/pound/pound.mk new file mode 100644 index 0000000..6f7cc84 --- /dev/null +++ b/buildroot/package/pound/pound.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# pound +# +################################################################################ + +POUND_VERSION = 2.7 +POUND_SITE = http://www.apsis.ch/pound +POUND_SOURCE = Pound-$(POUND_VERSION).tgz +POUND_LICENSE = GPL-3.0+ +POUND_LICENSE_FILES = GPL.txt +POUND_DEPENDENCIES = openssl + +# Force owner/group to us, otherwise it will try proxy:proxy by +# default. +POUND_CONF_OPTS = \ + --with-owner=$(shell id -un) \ + --with-group=$(shell id -gn) + +ifeq ($(BR2_PACKAGE_PCRE),y) +POUND_DEPENDENCIES += pcre +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/powerpc-utils/Config.in b/buildroot/package/powerpc-utils/Config.in new file mode 100644 index 0000000..d04d81c --- /dev/null +++ b/buildroot/package/powerpc-utils/Config.in @@ -0,0 +1,34 @@ +comment "powerpc-utils tools needs a toolchain w/ dynamic library" + depends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_POWERPC_UTILS + bool "powerpc-utils" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + select BR2_PACKAGE_ZLIB + help + System utilities for PowerPC machines. + + https://github.com/ibm-power-utilities/powerpc-utils.git + +if BR2_PACKAGE_POWERPC_UTILS + +config BR2_PACKAGE_POWERPC_UTILS_RTAS + bool "RTAS support" + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_LIBRTAS + help + Enable support for functions that require RTAS. + + This adds a dependency on librtas and provides the following + additional features at the cost of increasing the installed + package size from about 0.5MB to about 2MB: + ppc64_cpu --run-mode, uesensor, set_poweron_time, drmgr, + lsslot, activate_firmware, rtas_ibm_get_vpd, serv_config, + rtas_event_decode, sys_ident. + +comment "RTAS support needs a glibc toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC + +endif diff --git a/buildroot/package/powerpc-utils/powerpc-utils.hash b/buildroot/package/powerpc-utils/powerpc-utils.hash new file mode 100644 index 0000000..437a586 --- /dev/null +++ b/buildroot/package/powerpc-utils/powerpc-utils.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d36372efebc1f6f9409501f7ab68a812843925334dee6438e7b52a53c21574c5 powerpc-utils-v1.3.4.tar.gz diff --git a/buildroot/package/powerpc-utils/powerpc-utils.mk b/buildroot/package/powerpc-utils/powerpc-utils.mk new file mode 100644 index 0000000..da7a3c9 --- /dev/null +++ b/buildroot/package/powerpc-utils/powerpc-utils.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# powerpc-utils +# +################################################################################ + +POWERPC_UTILS_VERSION = v1.3.4 +POWERPC_UTILS_SITE = $(call github,ibm-power-utilities,powerpc-utils,$(POWERPC_UTILS_VERSION)) +POWERPC_UTILS_DEPENDENCIES = zlib +POWERPC_UTILS_AUTORECONF = YES +POWERPC_UTILS_LICENSE = GPL-2.0+ +POWERPC_UTILS_LICENSE_FILES = COPYING + +POWERPC_UTILS_CONF_ENV = \ + ax_cv_check_cflags___fstack_protector_all=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) + +ifeq ($(BR2_PACKAGE_POWERPC_UTILS_RTAS),y) +POWERPC_UTILS_DEPENDENCIES += librtas +POWERPC_UTILS_CONF_OPTS = --with-librtas +else +POWERPC_UTILS_CONF_OPTS = --without-librtas +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/powertop/0001-dont-force-stack-smashing-protection.patch b/buildroot/package/powertop/0001-dont-force-stack-smashing-protection.patch new file mode 100644 index 0000000..75ed2d1 --- /dev/null +++ b/buildroot/package/powertop/0001-dont-force-stack-smashing-protection.patch @@ -0,0 +1,18 @@ +Do not pass -fstack-protector unconditionally + +Using -fstack-protector only works when the toolchain has SSP support. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/Makefile.am +=================================================================== +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -127,7 +127,6 @@ + -Wformat \ + -Wshadow \ + -fno-omit-frame-pointer \ +- -fstack-protector \ + $(GLIB2_CFLAGS) \ + $(LIBNL_CFLAGS) \ + $(NCURSES_CFLAGS) \ diff --git a/buildroot/package/powertop/Config.in b/buildroot/package/powertop/Config.in new file mode 100644 index 0000000..714b162 --- /dev/null +++ b/buildroot/package/powertop/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_POWERTOP + bool "powertop" + depends on !BR2_bfin # pciutils + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + depends on BR2_USE_WCHAR + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_PCIUTILS + select BR2_PACKAGE_LIBNL + help + A tool to diagnose issues with power consumption and power + management + + https://01.org/powertop/ + +comment "powertop needs a toolchain w/ C++, threads, wchar" + depends on !BR2_bfin + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR diff --git a/buildroot/package/powertop/powertop.hash b/buildroot/package/powertop/powertop.hash new file mode 100644 index 0000000..0f9acdc --- /dev/null +++ b/buildroot/package/powertop/powertop.hash @@ -0,0 +1,2 @@ +# Locally-generated hash +sha256 aa7fb7d8e9a00f05e7d8a7a2866d85929741e0d03a5bf40cab22d2021c959250 powertop-v2.9.tar.gz diff --git a/buildroot/package/powertop/powertop.mk b/buildroot/package/powertop/powertop.mk new file mode 100644 index 0000000..cf5e8d4 --- /dev/null +++ b/buildroot/package/powertop/powertop.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# powertop +# +################################################################################ + +POWERTOP_VERSION = 2.9 +POWERTOP_SITE = https://01.org/sites/default/files/downloads/powertop +POWERTOP_SOURCE = powertop-v$(POWERTOP_VERSION).tar.gz +POWERTOP_DEPENDENCIES = pciutils ncurses libnl host-pkgconf \ + $(TARGET_NLS_DEPENDENCIES) +POWERTOP_LICENSE = GPL-2.0 +POWERTOP_LICENSE_FILES = COPYING +POWERTOP_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +# 0001-dont-force-stack-smashing-protection.patch +POWERTOP_AUTORECONF = YES + +# Help powertop at finding the right ncurses library depending on +# which one is available. +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +POWERTOP_CONF_ENV += ac_cv_search_delwin="-lncursesw" +else +POWERTOP_CONF_ENV += ac_cv_search_delwin="-lncurses" +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/powervr/Config.in b/buildroot/package/powervr/Config.in new file mode 100644 index 0000000..7be2b23 --- /dev/null +++ b/buildroot/package/powervr/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_POWERVR + bool + +config BR2_PACKAGE_PROVIDES_POWERVR + string + depends on BR2_PACKAGE_HAS_POWERVR diff --git a/buildroot/package/powervr/powervr.mk b/buildroot/package/powervr/powervr.mk new file mode 100644 index 0000000..5a55860 --- /dev/null +++ b/buildroot/package/powervr/powervr.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# powervr +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/buildroot/package/pppd/0001-Move-netinet-in.h-above-linux-header-includes.patch b/buildroot/package/pppd/0001-Move-netinet-in.h-above-linux-header-includes.patch new file mode 100644 index 0000000..2f6933f --- /dev/null +++ b/buildroot/package/pppd/0001-Move-netinet-in.h-above-linux-header-includes.patch @@ -0,0 +1,22 @@ +diff --git a/pppd/plugins/rp-pppoe/pppoe.h b/pppd/plugins/rp-pppoe/pppoe.h +index 9ab2eee..b827620 100644 +--- a/pppd/plugins/rp-pppoe/pppoe.h ++++ b/pppd/plugins/rp-pppoe/pppoe.h +@@ -47,6 +47,8 @@ + #include + #endif + ++#include ++ + /* Ugly header files on some Linux boxes... */ + #if defined(HAVE_LINUX_IF_H) + #include +@@ -84,8 +86,6 @@ typedef unsigned long UINT32_t; + #include + #endif + +-#include +- + #ifdef HAVE_NETINET_IF_ETHER_H + #include + diff --git a/buildroot/package/pppd/Config.in b/buildroot/package/pppd/Config.in new file mode 100644 index 0000000..ee89a57 --- /dev/null +++ b/buildroot/package/pppd/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_PPPD + bool "pppd" + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL # Use __P() macro all over the tree + depends on BR2_USE_MMU + help + An implementation of the Point-to-point protocol. + + http://www.samba.org/ppp/ + +if BR2_PACKAGE_PPPD + +config BR2_PACKAGE_PPPD_FILTER + bool "filtering" + select BR2_PACKAGE_LIBPCAP + help + Packet filtering abilities for pppd. If enabled, + the pppd active-filter and pass-filter options + are available. + +config BR2_PACKAGE_PPPD_RADIUS + bool "radius" + help + Install RADIUS support for pppd + +config BR2_PACKAGE_PPPD_OVERWRITE_RESOLV_CONF + bool "overwrite /etc/resolv.conf" + default y + help + Overwrite /etc/resolv.conf instead of maintaining the + separate list of nameservers in /etc/ppp/resolv.conf + + Note that the pppd default of writing to /etc/ppp/resolv.conf + does not work on a read-only rootfs unless you make it + writable in your rootfs customizations (e.g. by linking it to + a file in tmpfs or by mounting a writable filesystem on it). + +endif + +comment "pppd needs a uClibc or glibc toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL + depends on BR2_USE_MMU diff --git a/buildroot/package/pppd/pppd.hash b/buildroot/package/pppd/pppd.hash new file mode 100644 index 0000000..2bc248d --- /dev/null +++ b/buildroot/package/pppd/pppd.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 02e0a3dd3e4799e33103f70ec7df75348c8540966ee7c948e4ed8a42bbccfb30 ppp-2.4.7.tar.gz diff --git a/buildroot/package/pppd/pppd.mk b/buildroot/package/pppd/pppd.mk new file mode 100644 index 0000000..6b86a4d --- /dev/null +++ b/buildroot/package/pppd/pppd.mk @@ -0,0 +1,112 @@ +################################################################################ +# +# pppd +# +################################################################################ + +PPPD_VERSION = 2.4.7 +PPPD_SOURCE = ppp-$(PPPD_VERSION).tar.gz +PPPD_SITE = https://download.samba.org/pub/ppp +PPPD_LICENSE = LGPL-2.0+, LGPL, BSD-4-Clause, BSD-3-Clause, GPL-2.0+ +PPPD_LICENSE_FILES = \ + pppd/tdb.c pppd/plugins/pppoatm/COPYING \ + pppdump/bsd-comp.c pppd/ccp.c pppd/plugins/passprompt.c + +PPPD_MAKE_OPTS = HAVE_INET6=y +PPPD_INSTALL_STAGING = YES +PPPD_TARGET_BINS = chat pppd pppdump pppstats +PPPD_RADIUS_CONF = \ + dictionary dictionary.ascend dictionary.compat \ + dictionary.merit dictionary.microsoft \ + issue port-id-map realms servers radiusclient.conf + +ifeq ($(BR2_PACKAGE_PPPD_FILTER),y) +PPPD_DEPENDENCIES += libpcap +PPPD_MAKE_OPTS += FILTER=y +endif + +# pppd bundles some but not all of the needed kernel headers. The embedded +# if_pppol2tp.h is unfortunately not compatible with kernel headers > 2.6.34, +# and has been part of the kernel headers since 2.6.23, so drop it +define PPPD_DROP_INTERNAL_IF_PPOL2TP_H + $(RM) $(@D)/include/linux/if_pppol2tp.h +endef + +PPPD_POST_EXTRACT_HOOKS += PPPD_DROP_INTERNAL_IF_PPOL2TP_H + +# pppd defaults to /etc/ppp/resolv.conf, which not be writable and is +# definitely not useful since the C library only uses +# /etc/resolv.conf. Therefore, we change pppd to use /etc/resolv.conf +# instead. +define PPPD_SET_RESOLV_CONF + $(SED) 's,ppp/resolv.conf,resolv.conf,' $(@D)/pppd/pathnames.h +endef +ifeq ($(BR2_PACKAGE_PPPD_OVERWRITE_RESOLV_CONF),y) +PPPD_POST_EXTRACT_HOOKS += PPPD_SET_RESOLV_CONF +endif + +define PPPD_CONFIGURE_CMDS + $(SED) 's/FILTER=y/#FILTER=y/' $(PPPD_DIR)/pppd/Makefile.linux + $(SED) 's/ifneq ($$(wildcard \/usr\/include\/pcap-bpf.h),)/ifdef FILTER/' $(PPPD_DIR)/*/Makefile.linux + ( cd $(@D); $(TARGET_MAKE_ENV) ./configure --prefix=/usr ) +endef + +define PPPD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" COPTS="$(TARGET_CFLAGS)" \ + -C $(@D) $(PPPD_MAKE_OPTS) +endef + +ifeq ($(BR2_PACKAGE_PPPD_RADIUS),y) +define PPPD_INSTALL_RADIUS + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/radius/radattr.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/radattr.so + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/radius/radius.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/radius.so + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/radius/radrealms.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/radrealms.so + for m in $(PPPD_RADIUS_CONF); do \ + $(INSTALL) -m 644 -D $(PPPD_DIR)/pppd/plugins/radius/etc/$$m \ + $(TARGET_DIR)/etc/ppp/radius/$$m; \ + done + $(SED) 's:/usr/local/etc:/etc:' \ + $(TARGET_DIR)/etc/ppp/radius/radiusclient.conf + $(SED) 's:/usr/local/sbin:/usr/sbin:' \ + $(TARGET_DIR)/etc/ppp/radius/radiusclient.conf + $(SED) 's:/etc/radiusclient:/etc/ppp/radius:g' \ + $(TARGET_DIR)/etc/ppp/radius/* +endef +endif + +define PPPD_INSTALL_TARGET_CMDS + for sbin in $(PPPD_TARGET_BINS); do \ + $(INSTALL) -D $(PPPD_DIR)/$$sbin/$$sbin \ + $(TARGET_DIR)/usr/sbin/$$sbin; \ + done + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/minconn.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/minconn.so + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/passprompt.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/passprompt.so + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/passwordfd.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/passwordfd.so + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/pppoatm/pppoatm.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/pppoatm.so + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/rp-pppoe/rp-pppoe.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/rp-pppoe.so + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/rp-pppoe/pppoe-discovery \ + $(TARGET_DIR)/usr/sbin/pppoe-discovery + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/winbind.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/winbind.so + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/pppol2tp/openl2tp.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/openl2tp.so + $(INSTALL) -D $(PPPD_DIR)/pppd/plugins/pppol2tp/pppol2tp.so \ + $(TARGET_DIR)/usr/lib/pppd/$(PPPD_VERSION)/pppol2tp.so + $(INSTALL) -D -m 0755 $(PPPD_DIR)/scripts/pon $(TARGET_DIR)/usr/bin/pon + $(INSTALL) -D -m 0755 $(PPPD_DIR)/scripts/poff $(TARGET_DIR)/usr/bin/poff + $(PPPD_INSTALL_RADIUS) +endef + +define PPPD_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) INSTROOT=$(STAGING_DIR)/ -C $(@D) $(PPPD_MAKE_OPTS) install-devel +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/pps-tools/Config.in b/buildroot/package/pps-tools/Config.in new file mode 100644 index 0000000..0c4bb11 --- /dev/null +++ b/buildroot/package/pps-tools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PPS_TOOLS + bool "pps-tools" + help + Pulse per second tools. Provides timepps.h and other PPS + utilities. + + https://github.com/ago/pps-tools/ diff --git a/buildroot/package/pps-tools/pps-tools.hash b/buildroot/package/pps-tools/pps-tools.hash new file mode 100644 index 0000000..da7bce4 --- /dev/null +++ b/buildroot/package/pps-tools/pps-tools.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 eee0a76118cf11d94f575ee43804a6991379f2c734b400ba01ac4811d0498e97 pps-tools-47333f24af878f67ce48022e8af16419713aa1ac.tar.gz diff --git a/buildroot/package/pps-tools/pps-tools.mk b/buildroot/package/pps-tools/pps-tools.mk new file mode 100644 index 0000000..37bb7e1 --- /dev/null +++ b/buildroot/package/pps-tools/pps-tools.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# pps-tools +# +################################################################################ + +PPS_TOOLS_VERSION = 47333f24af878f67ce48022e8af16419713aa1ac +PPS_TOOLS_SITE = $(call github,ago,pps-tools,$(PPS_TOOLS_VERSION)) +PPS_TOOLS_INSTALL_STAGING = YES +PPS_TOOLS_LICENSE = GPL-2.0+ +PPS_TOOLS_LICENSE_FILES = COPYING + +define PPS_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) all +endef + +define PPS_TOOLS_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/include/sys $(STAGING_DIR)/usr/bin + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(STAGING_DIR) -C $(@D) install +endef + +define PPS_TOOLS_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/include/sys $(TARGET_DIR)/usr/bin + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/pptp-linux/0001-susv3-legacy.patch b/buildroot/package/pptp-linux/0001-susv3-legacy.patch new file mode 100644 index 0000000..5cc9f57 --- /dev/null +++ b/buildroot/package/pptp-linux/0001-susv3-legacy.patch @@ -0,0 +1,29 @@ +bzero is deprecated in POSIX.1-2001 and removed for POSIX.1-2008 so +switch to memset instead. + +Signed-off-by: Gustavo Zacarias + +diff -Nura pptp-1.8.0.orig/pptp_callmgr.c pptp-1.8.0/pptp_callmgr.c +--- pptp-1.8.0.orig/pptp_callmgr.c 2013-10-23 05:10:46.000000000 -0300 ++++ pptp-1.8.0/pptp_callmgr.c 2014-03-31 16:47:42.617643298 -0300 +@@ -340,7 +340,7 @@ + } + #endif + if (localbind.s_addr != INADDR_NONE) { +- bzero(&src, sizeof(src)); ++ memset(&src, 0, sizeof(src)); + src.i.sin_family = AF_INET; + src.i.sin_addr = localbind; + if (bind(s, &src.a, sizeof(src.i)) != 0) { +diff -Nura pptp-1.8.0.orig/pptp_gre.c pptp-1.8.0/pptp_gre.c +--- pptp-1.8.0.orig/pptp_gre.c 2013-10-23 05:10:46.000000000 -0300 ++++ pptp-1.8.0/pptp_gre.c 2014-03-31 16:47:30.745249066 -0300 +@@ -103,7 +103,7 @@ + } + #endif + if (localbind.s_addr != INADDR_NONE) { +- bzero(&loc_addr, sizeof(loc_addr)); ++ memset(&loc_addr, 0, sizeof(loc_addr)); + loc_addr.i.sin_family = AF_INET; + loc_addr.i.sin_addr = localbind; + if (bind(s, &loc_addr.a, sizeof(loc_addr.i)) != 0) { diff --git a/buildroot/package/pptp-linux/0002-fix-parallel-build.patch b/buildroot/package/pptp-linux/0002-fix-parallel-build.patch new file mode 100644 index 0000000..04a7977 --- /dev/null +++ b/buildroot/package/pptp-linux/0002-fix-parallel-build.patch @@ -0,0 +1,23 @@ +Fix parallel build issue + +The config.h header file must be created before being used to build +source files that include it, especially version.c. In order for this +to happen even in highly-parallel builds, we add a dependency of all +object files on config.h, in order to ensure it gets generated before +make attempts to build the object files. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -37,6 +37,8 @@ + + all: config.h $(PPTP_BIN) pptpsetup.8 + ++$(PPTP_OBJS): config.h ++ + $(PPTP_BIN): $(PPTP_OBJS) $(PPTP_DEPS) + $(CC) -o $(PPTP_BIN) $(PPTP_OBJS) $(LDFLAGS) $(LIBS) + diff --git a/buildroot/package/pptp-linux/0003-pqueue.h-include-sys-types.h.patch b/buildroot/package/pptp-linux/0003-pqueue.h-include-sys-types.h.patch new file mode 100644 index 0000000..1036b3c --- /dev/null +++ b/buildroot/package/pptp-linux/0003-pqueue.h-include-sys-types.h.patch @@ -0,0 +1,30 @@ +From 060ad28b9ca5e99d7c6e8010132da58a3a8a0585 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Fri, 22 Jan 2016 10:19:18 -0300 +Subject: [PATCH] pqueue.h: include sys/types.h + +We're using u_int32_t here, this breaks on musl libc builds otherwise. + +Signed-off-by: Gustavo Zacarias +--- +Patch status: applied upstream: +https://sourceforge.net/p/pptpclient/git/ci/ee8ef349d9543cb48045a27d1cdd801fc6e910e8/ + + pqueue.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/pqueue.h b/pqueue.h +index a56590f..8c60c62 100644 +--- a/pqueue.h ++++ b/pqueue.h +@@ -3,6 +3,7 @@ + + #include + #include ++#include + + /* wait this many seconds for missing packets before forgetting about them */ + #define DEFAULT_PACKET_TIMEOUT 0.3 +-- +2.4.10 + diff --git a/buildroot/package/pptp-linux/Config.in b/buildroot/package/pptp-linux/Config.in new file mode 100644 index 0000000..e03a906 --- /dev/null +++ b/buildroot/package/pptp-linux/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PPTP_LINUX + bool "pptp-linux" + depends on BR2_USE_MMU # fork() + help + An implementation of the Point-to-point protocol client. + + http://pptpclient.sourceforge.net/ diff --git a/buildroot/package/pptp-linux/pptp-linux.hash b/buildroot/package/pptp-linux/pptp-linux.hash new file mode 100644 index 0000000..6200ef1 --- /dev/null +++ b/buildroot/package/pptp-linux/pptp-linux.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/pptpclient/files/pptp/pptp-1.9.0/ +md5 b2117b377f65294a9786f80f0235d308 pptp-1.9.0.tar.gz +sha1 047bb9812be477b44c94ffb1dc95c34658eedc24 pptp-1.9.0.tar.gz diff --git a/buildroot/package/pptp-linux/pptp-linux.mk b/buildroot/package/pptp-linux/pptp-linux.mk new file mode 100644 index 0000000..25f3037 --- /dev/null +++ b/buildroot/package/pptp-linux/pptp-linux.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# pptp-linux +# +################################################################################ + +PPTP_LINUX_VERSION = 1.9.0 +PPTP_LINUX_SITE = http://downloads.sourceforge.net/project/pptpclient/pptp/pptp-$(PPTP_LINUX_VERSION) +PPTP_LINUX_SOURCE = pptp-$(PPTP_LINUX_VERSION).tar.gz +PPTP_LINUX_MAKE = $(MAKE1) +PPTP_LINUX_LICENSE = GPL-2.0+ +PPTP_LINUX_LICENSE_FILES = COPYING + +define PPTP_LINUX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) OPTIMIZE= DEBUG= \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + IP=/sbin/ip +endef + +define PPTP_LINUX_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/pptp $(TARGET_DIR)/usr/sbin/pptp +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/prboom/0001-libpng-1.4.patch b/buildroot/package/prboom/0001-libpng-1.4.patch new file mode 100644 index 0000000..0d2a3a5 --- /dev/null +++ b/buildroot/package/prboom/0001-libpng-1.4.patch @@ -0,0 +1,32 @@ +[PATCH] fix build with libpng 1.4.x + +In 1.4.x the png_*_NULL defines are gone. Replace them with a normal +NULL instead. + +Signed-off-by: Peter Korsgaard +--- + src/SDL/i_sshot.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: prboom-2.5.0/src/SDL/i_sshot.c +=================================================================== +--- prboom-2.5.0.orig/src/SDL/i_sshot.c ++++ prboom-2.5.0/src/SDL/i_sshot.c +@@ -231,7 +231,7 @@ int I_ScreenShot (const char *fname) + if (fp) + { + png_struct *png_ptr = png_create_write_struct( +- PNG_LIBPNG_VER_STRING, png_error_ptr_NULL, error_fn, warning_fn); ++ PNG_LIBPNG_VER_STRING, NULL, error_fn, warning_fn); + + if (png_ptr) + { +@@ -279,7 +279,7 @@ int I_ScreenShot (const char *fname) + break; + } + } +- png_destroy_write_struct(&png_ptr, png_infopp_NULL); ++ png_destroy_write_struct(&png_ptr, NULL); + } + fclose(fp); + } diff --git a/buildroot/package/prboom/Config.in b/buildroot/package/prboom/Config.in new file mode 100644 index 0000000..7dc635d --- /dev/null +++ b/buildroot/package/prboom/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PRBOOM + bool "prboom" + select BR2_PACKAGE_SDL + select BR2_PACKAGE_SDL_MIXER + select BR2_PACKAGE_SDL_NET + help + PrBoom is a Doom client which allows you to play the good + old game on newer hardware. It even supports higher + resolution and better rendering, while still keeping the old + style alive. + + http://prboom.sourceforge.net/ diff --git a/buildroot/package/prboom/prboom.hash b/buildroot/package/prboom/prboom.hash new file mode 100644 index 0000000..0d80349 --- /dev/null +++ b/buildroot/package/prboom/prboom.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 226c1c470f8cc983327536404f405a1d026cf0a5188c694a1243cc8630014bae prboom-2.5.0.tar.gz diff --git a/buildroot/package/prboom/prboom.mk b/buildroot/package/prboom/prboom.mk new file mode 100644 index 0000000..d370ae3 --- /dev/null +++ b/buildroot/package/prboom/prboom.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# prboom +# +################################################################################ + +PRBOOM_VERSION = 2.5.0 +PRBOOM_SITE = http://downloads.sourceforge.net/project/prboom/prboom%20stable/$(PRBOOM_VERSION) +PRBOOM_CONF_ENV = ac_cv_type_uid_t=yes +PRBOOM_DEPENDENCIES = sdl sdl_net sdl_mixer +PRBOOM_LICENSE = GPL-2.0+ +PRBOOM_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +PRBOOM_DEPENDENCIES += libpng +endif + +ifeq ($(BR2_STATIC_LIBS),y) +# SDL_mixer uses symbols from SDL, but ends up after it on the link +# cmdline. Fix it by forcing the SDL libs at the very end +PRBOOM_CONF_ENV += LIBS="`$(STAGING_DIR)/usr/bin/sdl-config --static-libs`" +endif + +PRBOOM_CONF_OPTS = \ + --oldincludedir=$(STAGING_DIR)/usr/include \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr \ + --disable-cpu-opt \ + --disable-sdltest \ + --disable-gl + +# endianness detection isn't used when cross compiling +define PRBOOM_BIG_ENDIAN_FIXUP + $(SED) 's,.*#undef WORDS_BIGENDIAN.*,#define WORDS_BIGENDIAN 1,g' \ + $(PRBOOM_DIR)/config.h +endef + +ifeq ($(BR2_ENDIAN),"BIG") +PRBOOM_POST_CONFIGURE_HOOKS += PRBOOM_BIG_ENDIAN_FIXUP +endif + +define PRBOOM_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/src/prboom $(TARGET_DIR)/usr/games/prboom + $(INSTALL) -D $(@D)/src/prboom-game-server $(TARGET_DIR)/usr/games/prboom-game-server + $(INSTALL) -D $(@D)/data/prboom.wad $(TARGET_DIR)/usr/share/games/doom/prboom.wad +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/privoxy/Config.in b/buildroot/package/privoxy/Config.in new file mode 100644 index 0000000..accb48d --- /dev/null +++ b/buildroot/package/privoxy/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PRIVOXY + bool "privoxy" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_ZLIB + help + A non-caching web proxy with advanced filtering capabilities + for enhancing privacy, modifying web page data and HTTP + headers, controlling access, and removing ads and other + obnoxious Internet junk. + + http://www.privoxy.org/ + +comment "privoxy needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/privoxy/privoxy.hash b/buildroot/package/privoxy/privoxy.hash new file mode 100644 index 0000000..72226b1 --- /dev/null +++ b/buildroot/package/privoxy/privoxy.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/ijbswa/files/Sources/3.0.26%20%28stable%29/ +md5 8a1c842112ccea68c19b7ceb4a0e999f privoxy-3.0.26-stable-src.tar.gz +sha1 b646624006225979f83453ba542e448667f45998 privoxy-3.0.26-stable-src.tar.gz diff --git a/buildroot/package/privoxy/privoxy.mk b/buildroot/package/privoxy/privoxy.mk new file mode 100644 index 0000000..df0e737 --- /dev/null +++ b/buildroot/package/privoxy/privoxy.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# privoxy +# +################################################################################ + +PRIVOXY_VERSION = 3.0.26 +PRIVOXY_SITE = http://downloads.sourceforge.net/project/ijbswa/Sources/$(PRIVOXY_VERSION)%20%28stable%29 +PRIVOXY_SOURCE = privoxy-$(PRIVOXY_VERSION)-stable-src.tar.gz +# configure not shipped +PRIVOXY_AUTORECONF = YES +PRIVOXY_DEPENDENCIES = pcre zlib +PRIVOXY_LICENSE = GPL-2.0+ +PRIVOXY_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/buildroot/package/procps-ng/Config.in b/buildroot/package/procps-ng/Config.in new file mode 100644 index 0000000..d9e884f --- /dev/null +++ b/buildroot/package/procps-ng/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PROCPS_NG + bool "procps-ng" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + depends on !BR2_TOOLCHAIN_USES_MUSL # fopencookie() + select BR2_PACKAGE_NCURSES + help + Standard informational utilities and process-handling tools. + Provides things like kill, ps, uptime, free, top, etc... + + http://sourceforge.net/projects/procps-ng/ + +comment "procps-ng needs a glibc or uclibc toolchain" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/procps-ng/procps-ng.hash b/buildroot/package/procps-ng/procps-ng.hash new file mode 100644 index 0000000..123db99 --- /dev/null +++ b/buildroot/package/procps-ng/procps-ng.hash @@ -0,0 +1,8 @@ +# From http://sourceforge.net/projects/procps-ng/files/Production/ +md5 2b0717a7cb474b3d6dfdeedfbad2eccc procps-ng-3.3.15.tar.xz +sha1 2929bc64f0cf7b2db997eef79b7187658e47230d procps-ng-3.3.15.tar.xz +# Locally calculated after checking signature +# http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-3.3.15.tar.xz.asc +sha256 10bd744ffcb3de2d591d2f6acf1a54a7ba070fdcc432a855931a5057149f0465 procps-ng-3.3.15.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 681e386e44a19d7d0674b4320272c90e66b6610b741e7e6305f8219c42e85366 COPYING.LIB diff --git a/buildroot/package/procps-ng/procps-ng.mk b/buildroot/package/procps-ng/procps-ng.mk new file mode 100644 index 0000000..e1fddea --- /dev/null +++ b/buildroot/package/procps-ng/procps-ng.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# procps-ng +# +################################################################################ + +PROCPS_NG_VERSION = 3.3.15 +PROCPS_NG_SOURCE = procps-ng-$(PROCPS_NG_VERSION).tar.xz +PROCPS_NG_SITE = http://downloads.sourceforge.net/project/procps-ng/Production +PROCPS_NG_LICENSE = GPL-2.0+, LGPL-2.0+ (libproc and libps) +PROCPS_NG_LICENSE_FILES = COPYING COPYING.LIB +PROCPS_NG_INSTALL_STAGING = YES +PROCPS_NG_DEPENDENCIES = ncurses host-pkgconf $(TARGET_NLS_DEPENDENCIES) +PROCPS_NG_CONF_OPTS = LIBS=$(TARGET_NLS_LIBS) + +# If both procps-ng and busybox are selected, make certain procps-ng +# wins the fight over who gets to have their utils actually installed. +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +PROCPS_NG_DEPENDENCIES += busybox +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +PROCPS_NG_DEPENDENCIES += systemd +PROCPS_NG_CONF_OPTS += --with-systemd +else +PROCPS_NG_CONF_OPTS += --without-systemd +endif + +# Make sure binaries get installed in /bin, so that they overwrite +# their busybox counterparts. +# Make sure libprocps.pc is installed in STAGING_DIR/usr/lib/pkgconfig/ +# otherwise it's installed in STAGING_DIR/lib/pkgconfig/ breaking +# pkg-config --libs libprocps. +PROCPS_NG_CONF_OPTS += --exec-prefix=/ \ + --libdir=/usr/lib + +# Allows unicode characters to show in 'watch' +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +PROCPS_NG_CONF_OPTS += \ + --enable-watch8bit +endif + +ifeq ($(BR2_USE_WCHAR),) +PROCPS_NG_CONF_OPTS += CPPFLAGS=-DOFF_XTRAWIDE +endif + +# numa support requires libdl, so explicitly disable it when +# BR2_STATIC_LIBS=y +ifeq ($(BR2_STATIC_LIBS),y) +PROCPS_NG_CONF_OPTS += --disable-numa +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/procrank_linux/Config.in b/buildroot/package/procrank_linux/Config.in new file mode 100644 index 0000000..59d462b --- /dev/null +++ b/buildroot/package/procrank_linux/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PROCRANK_LINUX + bool "procrank_linux" + help + procrank is a tool commonly used by Android platform + developers to find out how much memory is really being used. + + https://github.com/csimmonds/procrank_linux diff --git a/buildroot/package/procrank_linux/procrank_linux.hash b/buildroot/package/procrank_linux/procrank_linux.hash new file mode 100644 index 0000000..b28a8e3 --- /dev/null +++ b/buildroot/package/procrank_linux/procrank_linux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1c3592b549b6793b29ab561568f493d0edbfe288ea2aed59afa689eaa26b5d9e procrank_linux-21c30ab4514a5b15ac6e813e21bee0d3d714cb08.tar.gz diff --git a/buildroot/package/procrank_linux/procrank_linux.mk b/buildroot/package/procrank_linux/procrank_linux.mk new file mode 100644 index 0000000..7e74319 --- /dev/null +++ b/buildroot/package/procrank_linux/procrank_linux.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# procrank_linux +# +################################################################################ + +PROCRANK_LINUX_VERSION = 21c30ab4514a5b15ac6e813e21bee0d3d714cb08 +PROCRANK_LINUX_SITE = $(call github,csimmonds,procrank_linux,$(PROCRANK_LINUX_VERSION)) +PROCRANK_LINUX_LICENSE = Apache-2.0 +PROCRANK_LINUX_LICENSE_FILES = NOTICE + +define PROCRANK_LINUX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CROSS_COMPILE="$(TARGET_CROSS)" +endef + +define PROCRANK_LINUX_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/procrank \ + $(TARGET_DIR)/usr/bin/procrank +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/proftpd/0001-fix-kernel-header-capability-version.patch b/buildroot/package/proftpd/0001-fix-kernel-header-capability-version.patch new file mode 100644 index 0000000..4401c9a --- /dev/null +++ b/buildroot/package/proftpd/0001-fix-kernel-header-capability-version.patch @@ -0,0 +1,12 @@ +--- a/lib/libcap/libcap.h 2008-08-22 19:49:48.000000000 -0700 ++++ b/lib/libcap/libcap.h 2010-10-06 15:31:11.000000000 -0700 +@@ -65,7 +65,8 @@ struct _cap_struct { + */ + + #if !defined(_LINUX_CAPABILITY_VERSION_1) || \ +- (_LINUX_CAPABILITY_VERSION_1 != 0x19980330) ++ ((_LINUX_CAPABILITY_VERSION_1 != 0x19980330) && \ ++ (_LINUX_CAPABILITY_VERSION_1 != 0x20071026)) + + # error "Kernel does not match library" + # error "file "libcap.h" --> fix and recompile libcap" diff --git a/buildroot/package/proftpd/Config.in b/buildroot/package/proftpd/Config.in new file mode 100644 index 0000000..e979d40 --- /dev/null +++ b/buildroot/package/proftpd/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_PROFTPD + bool "proftpd" + depends on BR2_USE_MMU # fork() + help + ProFTPD, a highly configurable FTP server. + + http://www.proftpd.org/ + +if BR2_PACKAGE_PROFTPD + +config BR2_PACKAGE_PROFTPD_MOD_REWRITE + bool "mod_rewrite support" + help + Compile ProFTPD with mod_rewrite support + +config BR2_PACKAGE_PROFTPD_MOD_REDIS + bool "mod_redis support" + select BR2_PACKAGE_HIREDIS + help + The mod_redis module enables ProFTPD support for caching + data in Redis servers, using the hiredis client library. + +endif diff --git a/buildroot/package/proftpd/S50proftpd b/buildroot/package/proftpd/S50proftpd new file mode 100755 index 0000000..336680a --- /dev/null +++ b/buildroot/package/proftpd/S50proftpd @@ -0,0 +1,47 @@ +#!/bin/sh + +DAEMON=/usr/sbin/proftpd +trap "" HUP +trap "" TERM +test -f $DAEMON || exit 0 +[ ! -d /var/run/proftpd ] && mkdir /var/run/proftpd +[ ! -f /var/log/wtmp ] && touch /var/log/wtmp + +start() { + printf "Starting ProFTPD: " + $DAEMON + if [ $? != 0 ]; then + echo "FAILED" + exit 1 + else + echo "done" + fi +} + +stop() { + printf "Stopping ProFTPD: " + killall proftpd + echo "done" +} + +case "$1" in + start) + start + ;; + + stop) + stop + ;; + + restart) + stop + start + ;; + + *) + echo "Usage: /etc/init.d/S50proftpd {start|stop|restart}" + exit 1 + ;; +esac + +exit 0 diff --git a/buildroot/package/proftpd/proftpd.hash b/buildroot/package/proftpd/proftpd.hash new file mode 100644 index 0000000..537222f --- /dev/null +++ b/buildroot/package/proftpd/proftpd.hash @@ -0,0 +1,4 @@ +# From ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.6.tar.gz.md5 +md5 13270911c42aac842435f18205546a1b proftpd-1.3.6.tar.gz +# Locally calculated +sha256 91ef74b143495d5ff97c4d4770c6804072a8c8eb1ad1ecc8cc541b40e152ecaf proftpd-1.3.6.tar.gz diff --git a/buildroot/package/proftpd/proftpd.mk b/buildroot/package/proftpd/proftpd.mk new file mode 100644 index 0000000..3e165c6 --- /dev/null +++ b/buildroot/package/proftpd/proftpd.mk @@ -0,0 +1,76 @@ +################################################################################ +# +# proftpd +# +################################################################################ + +PROFTPD_VERSION = 1.3.6 +PROFTPD_SITE = ftp://ftp.proftpd.org/distrib/source +PROFTPD_LICENSE = GPL-2.0+ +PROFTPD_LICENSE_FILES = COPYING + +PROFTPD_CONF_ENV = \ + ac_cv_func_setpgrp_void=yes \ + ac_cv_func_setgrent_void=yes + +PROFTPD_CONF_OPTS = \ + --localstatedir=/var/run \ + --disable-static \ + --disable-curses \ + --disable-ncurses \ + --disable-facl \ + --disable-dso \ + --enable-shadow \ + --with-gnu-ld + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_REWRITE),y) +PROFTPD_CONF_OPTS += --with-modules=mod_rewrite +endif + +ifeq ($(BR2_PACKAGE_PROFTPD_MOD_REDIS),y) +PROFTPD_CONF_OPTS += --enable-redis +PROFTPD_DEPENDENCIES += hiredis +else +PROFTPD_CONF_OPTS += --disable-redis +endif + +# configure script doesn't handle detection of %llu format string +# support for printing the file size when cross compiling, breaking +# access for large files. +# We unfortunately cannot AUTORECONF the package, so instead force it +# on if we know we support it +define PROFTPD_USE_LLU + $(SED) 's/HAVE_LU/HAVE_LLU/' $(@D)/configure +endef +PROFTPD_PRE_CONFIGURE_HOOKS += PROFTPD_USE_LLU + +define PROFTPD_MAKENAMES + $(MAKE1) CC="$(HOSTCC)" CFLAGS="" LDFLAGS="" -C $(@D)/lib/libcap _makenames +endef + +PROFTPD_POST_CONFIGURE_HOOKS = PROFTPD_MAKENAMES + +PROFTPD_MAKE = $(MAKE1) + +define PROFTPD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/proftpd $(TARGET_DIR)/usr/sbin/proftpd + $(INSTALL) -m 0644 -D $(@D)/sample-configurations/basic.conf $(TARGET_DIR)/etc/proftpd.conf +endef + +define PROFTPD_USERS + ftp -1 ftp -1 * /home/ftp - - Anonymous FTP User +endef + +define PROFTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/proftpd/S50proftpd $(TARGET_DIR)/etc/init.d/S50proftpd +endef + +define PROFTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/proftpd/proftpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/proftpd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/proftpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/proftpd.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/proftpd/proftpd.service b/buildroot/package/proftpd/proftpd.service new file mode 100644 index 0000000..1c730e5 --- /dev/null +++ b/buildroot/package/proftpd/proftpd.service @@ -0,0 +1,10 @@ +[Unit] +Description=FTP server +After=syslog.target network.target + +[Service] +ExecStart=/usr/sbin/proftpd -n -q +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/proj/Config.in b/buildroot/package/proj/Config.in new file mode 100644 index 0000000..788aee8 --- /dev/null +++ b/buildroot/package/proj/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PROJ + bool "proj" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + proj.4 is a standard UNIX filter function which converts + geographic longitude and latitude coordinates into cartesian + coordinates (and vice versa), and it is a C API for software + developers to include coordinate transformation in their own + software. + + http://proj4.org/ + +comment "proj needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/proj/proj.hash b/buildroot/package/proj/proj.hash new file mode 100644 index 0000000..6a791ba --- /dev/null +++ b/buildroot/package/proj/proj.hash @@ -0,0 +1,5 @@ +# Fetched from http://download.osgeo.org/proj/proj-4.9.3.tar.gz.md5 +md5 d598336ca834742735137c5674b214a1 proj-4.9.3.tar.gz +# Locally calculated +sha256 6984542fea333488de5c82eea58d699e4aff4b359200a9971537cd7e047185f7 proj-4.9.3.tar.gz +sha256 2dcac4af6990093ef48b896bfb81452d46a31b08d46cce34b27e83f93b2e37f6 COPYING diff --git a/buildroot/package/proj/proj.mk b/buildroot/package/proj/proj.mk new file mode 100644 index 0000000..6d029bb --- /dev/null +++ b/buildroot/package/proj/proj.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# proj +# +################################################################################ + +PROJ_VERSION = 4.9.3 +PROJ_SITE = http://download.osgeo.org/proj +PROJ_LICENSE = MIT +PROJ_LICENSE_FILES = COPYING +PROJ_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/prosody/Config.in b/buildroot/package/prosody/Config.in new file mode 100644 index 0000000..77eeb85 --- /dev/null +++ b/buildroot/package/prosody/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_PROSODY + bool "prosody" + depends on BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_LUAEXPAT # runtime + select BR2_PACKAGE_LUASEC # runtime + select BR2_PACKAGE_LUASOCKET # runtime + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBIDN + select BR2_PACKAGE_LUAFILESYSTEM # runtime + help + Prosody is a modern XMPP communication server. It aims to be + easy to set up and configure, and efficient with system + resources. + + https://prosody.im + +comment "prosody needs the lua interpreter" + depends on !BR2_PACKAGE_LUA_5_1 && !BR2_PACKAGE_LUAJIT diff --git a/buildroot/package/prosody/S50prosody b/buildroot/package/prosody/S50prosody new file mode 100644 index 0000000..84913a5 --- /dev/null +++ b/buildroot/package/prosody/S50prosody @@ -0,0 +1,44 @@ +#! /bin/sh + +NAME=prosody +DAEMON=/usr/bin/$NAME + +# This must match the pidfile field in +# /etc/prosody/prosody.cfg.lua + +PIDDIR=/var/run/$NAME +PIDFILE=$PIDDIR/$NAME.pid + +# Gracefully exit if the package has been removed. +test -x $DAEMON || exit 0 + +case "$1" in + start) + printf "Starting $NAME: " + mkdir -p $PIDDIR + chown $NAME:$NAME $PIDDIR + start-stop-daemon -S -q -o -x $DAEMON -c $NAME + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping $NAME: " + # The standard method of identifying the name doesn't + # work as the process name is lua. So use the pidfile + # which is created by the service itself as a match + # criteria when stopping the service + start-stop-daemon -K -q -o -p "$PIDFILE" + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + echo "Restarting $NAME: " + $0 stop + sleep 1 + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/buildroot/package/prosody/prosody.cfg.lua b/buildroot/package/prosody/prosody.cfg.lua new file mode 100644 index 0000000..8329c0a --- /dev/null +++ b/buildroot/package/prosody/prosody.cfg.lua @@ -0,0 +1,184 @@ +-- Prosody Example Configuration File +-- +-- Information on configuring Prosody can be found on our +-- website at http://prosody.im/doc/configure +-- +-- Tip: You can check that the syntax of this file is correct +-- when you have finished by running: luac -p prosody.cfg.lua +-- If there are any errors, it will let you know what and where +-- they are, otherwise it will keep quiet. +-- +-- The only thing left to do is rename this file to remove the .dist ending, and fill in the +-- blanks. Good luck, and happy Jabbering! + + +---------- Server-wide settings ---------- +-- Settings in this section apply to the whole server and are the default settings +-- for any virtual hosts + +-- This is a (by default, empty) list of accounts that are admins +-- for the server. Note that you must create the accounts separately +-- (see http://prosody.im/doc/creating_accounts for info) +-- Example: admins = { "user1@example.com", "user2@example.net" } +admins = { } + +-- Enable use of libevent for better performance under high load +-- For more information see: http://prosody.im/doc/libevent +--use_libevent = true; + +-- This is the list of modules Prosody will load on startup. +-- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too. +-- Documentation on modules can be found at: http://prosody.im/doc/modules +modules_enabled = { + + -- Generally required + "roster"; -- Allow users to have a roster. Recommended ;) + "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in. + "tls"; -- Add support for secure TLS on c2s/s2s connections + "dialback"; -- s2s dialback support + "disco"; -- Service discovery + + -- Not essential, but recommended + "private"; -- Private XML storage (for room bookmarks, etc.) + "vcard"; -- Allow users to set vCards + + -- These are commented by default as they have a performance impact + --"privacy"; -- Support privacy lists + --"compression"; -- Stream compression + + -- Nice to have + "version"; -- Replies to server version requests + "uptime"; -- Report how long server has been running + "time"; -- Let others know the time here on this server + "ping"; -- Replies to XMPP pings with pongs + "pep"; -- Enables users to publish their mood, activity, playing music and more + "register"; -- Allow users to register on this server using a client and change passwords + + -- Admin interfaces + "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands + --"admin_telnet"; -- Opens telnet console interface on localhost port 5582 + + -- HTTP modules + --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP" + --"http_files"; -- Serve static files from a directory over HTTP + + -- Other specific functionality + "posix"; -- POSIX functionality, sends server to background, enables syslog, etc. + --"groups"; -- Shared roster support + --"announce"; -- Send announcement to all online users + --"welcome"; -- Welcome users who register accounts + --"watchregistrations"; -- Alert admins of registrations + --"motd"; -- Send a message to users when they log in + --"legacyauth"; -- Legacy authentication. Only used by some old clients and bots. +}; + +-- These modules are auto-loaded, but should you want +-- to disable them then uncomment them here: +modules_disabled = { + -- "offline"; -- Store offline messages + -- "c2s"; -- Handle client connections + -- "s2s"; -- Handle server-to-server connections +}; + +-- Disable account creation by default, for security +-- For more information see http://prosody.im/doc/creating_accounts +allow_registration = false; + +-- These are the SSL/TLS-related settings. If you don't want +-- to use SSL/TLS, you may comment or remove this +ssl = { + key = "certs/localhost.key"; + certificate = "certs/localhost.crt"; +} + +-- Force clients to use encrypted connections? This option will +-- prevent clients from authenticating unless they are using encryption. + +c2s_require_encryption = false + +-- Force certificate authentication for server-to-server connections? +-- This provides ideal security, but requires servers you communicate +-- with to support encryption AND present valid, trusted certificates. +-- NOTE: Your version of LuaSec must support certificate verification! +-- For more information see http://prosody.im/doc/s2s#security + +s2s_secure_auth = false + +-- Many servers don't support encryption or have invalid or self-signed +-- certificates. You can list domains here that will not be required to +-- authenticate using certificates. They will be authenticated using DNS. + +--s2s_insecure_domains = { "gmail.com" } + +-- Even if you leave s2s_secure_auth disabled, you can still require valid +-- certificates for some domains by specifying a list here. + +--s2s_secure_domains = { "jabber.org" } + +-- Select the authentication backend to use. The 'internal' providers +-- use Prosody's configured data storage to store the authentication data. +-- To allow Prosody to offer secure authentication mechanisms to clients, the +-- default provider stores passwords in plaintext. If you do not trust your +-- server please see http://prosody.im/doc/modules/mod_auth_internal_hashed +-- for information about using the hashed backend. + +authentication = "internal_plain" + +-- Select the storage backend to use. By default Prosody uses flat files +-- in its configured data directory, but it also supports more backends +-- through modules. An "sql" backend is included by default, but requires +-- additional dependencies. See http://prosody.im/doc/storage for more info. + +--storage = "sql" -- Default is "internal" + +-- For the "sql" backend, you can uncomment *one* of the below to configure: +--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename. +--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" } +--sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" } + +-- Logging configuration +-- For advanced logging see http://prosody.im/doc/logging +log = { + -- info = "prosody.log"; -- Change 'info' to 'debug' for verbose logging + -- error = "prosody.err"; + "*syslog"; -- Logging to syslog + -- "*console"; -- Log to the console, useful for debugging with daemonize=false +} + +pidfile = "/var/run/prosody/prosody.pid" + +----------- Virtual hosts ----------- +-- You need to add a VirtualHost entry for each domain you wish Prosody to serve. +-- Settings under each VirtualHost entry apply *only* to that host. + +VirtualHost "localhost" + +VirtualHost "example.com" + -- Assign this host a certificate for TLS, otherwise it would use the one + -- set in the global section (if any). + -- Note that old-style SSL on port 5223 only supports one certificate, and will always + -- use the global one. + ssl = { + key = "certs/example.com.key"; + certificate = "certs/example.com.crt"; + } + +------ Components ------ +-- You can specify components to add hosts that provide special services, +-- like multi-user conferences, and transports. +-- For more information on components, see http://prosody.im/doc/components + +---Set up a MUC (multi-user chat) room server on conference.example.com: +--Component "conference.example.com" "muc" + +-- Set up a SOCKS5 bytestream proxy for server-proxied file transfers: +--Component "proxy.example.com" "proxy65" + +---Set up an external component (default component port is 5347) +-- +-- External components allow adding various services, such as gateways/ +-- transports to other networks like ICQ, MSN and Yahoo. For more info +-- see: http://prosody.im/doc/components#adding_an_external_component +-- +--Component "gateway.example.com" +-- component_secret = "password" diff --git a/buildroot/package/prosody/prosody.hash b/buildroot/package/prosody/prosody.hash new file mode 100644 index 0000000..38942ea --- /dev/null +++ b/buildroot/package/prosody/prosody.hash @@ -0,0 +1,5 @@ +# Hashes from: https://prosody.im/downloads/source/{MD5,SHA1,SHA256,SHA512}SUMS +md5 d743adea6cfbaacc3a24cc0c3928bb1b prosody-0.9.12.tar.gz +sha1 1ee224263a5b3d67960e12edbbe6b2f16b95d147 prosody-0.9.12.tar.gz +sha256 1a59a322b71928a21985522aa00d0eab3552208d7bf9ecb318542a1b2fee3e8d prosody-0.9.12.tar.gz +sha512 e87b5f3b3e327722cec9d8d0470684e2ec2788a1c5ae623c4f505a00572ef21f65afe84cd5b7de47d6a65fe8872506fe34e5e8886e20979ff84710669857ca76 prosody-0.9.12.tar.gz diff --git a/buildroot/package/prosody/prosody.mk b/buildroot/package/prosody/prosody.mk new file mode 100644 index 0000000..d196535 --- /dev/null +++ b/buildroot/package/prosody/prosody.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# prosody +# +################################################################################ + +PROSODY_VERSION = 0.9.12 +PROSODY_SITE = https://prosody.im/downloads/source +PROSODY_LICENSE = MIT +PROSODY_LICENSE_FILES = COPYING +PROSODY_DEPENDENCIES = openssl libidn + +ifeq ($(BR2_PACKAGE_LUA_5_1),y) +PROSODY_DEPENDENCIES += lua +endif + +ifeq ($(BR2_PACKAGE_LUAJIT),y) +PROSODY_DEPENDENCIES += luajit +endif + +PROSODY_CONF_OPTS = \ + --with-lua=$(STAGING_DIR)/usr \ + --c-compiler=$(TARGET_CC) \ + --cflags="$(TARGET_CFLAGS) -fPIC" \ + --linker=$(TARGET_CC) \ + --ldflags="$(TARGET_LDFLAGS) -shared" \ + --sysconfdir=/etc/prosody \ + --prefix=/usr + +define PROSODY_CONFIGURE_CMDS + cd $(@D) && \ + $(TARGET_CONFIGURE_OPTS) \ + ./configure $(PROSODY_CONF_OPTS) +endef + +define PROSODY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define PROSODY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +define PROSODY_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/prosody/S50prosody \ + $(TARGET_DIR)/etc/init.d/S50prosody +endef + +define PROSODY_USERS + prosody -1 prosody -1 * - - - Prosody user +endef + +# make install installs a Makefile and meta data to generate certs +define PROSODY_REMOVE_CERT_GENERATOR + rm -f $(TARGET_DIR)/etc/prosody/certs/Makefile + rm -f $(TARGET_DIR)/etc/prosody/certs/*.cnf +endef + +PROSODY_POST_INSTALL_TARGET_HOOKS += PROSODY_REMOVE_CERT_GENERATOR + +# 1. Enable posix functionality +# 2. Log to syslog +# 3. Specify pid file write location +# 4. Enable virtual host example.com +define PROSODY_TWEAK_DEFAULT_CONF + $(INSTALL) -D package/prosody/prosody.cfg.lua \ + $(TARGET_DIR)/etc/prosody/prosody.cfg.lua +endef + +PROSODY_POST_INSTALL_TARGET_HOOKS += PROSODY_TWEAK_DEFAULT_CONF + +$(eval $(generic-package)) diff --git a/buildroot/package/protobuf-c/Config.in b/buildroot/package/protobuf-c/Config.in new file mode 100644 index 0000000..6f916c5 --- /dev/null +++ b/buildroot/package/protobuf-c/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PROTOBUF_C + bool "protobuf-c" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + # host-protobuf only builds on certain architectures + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_HOST_GCC_AT_LEAST_4_5 # host-protobuf + help + Code generator and runtime libraries to use Protocol Buffers + from pure C (not C++). + + https://github.com/protobuf-c/protobuf-c + +comment "protobuf-c needs a toolchain w/ C++, threads, host gcc >= 4.5" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_HOST_GCC_AT_LEAST_4_5 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" diff --git a/buildroot/package/protobuf-c/protobuf-c.hash b/buildroot/package/protobuf-c/protobuf-c.hash new file mode 100644 index 0000000..e22a9f1 --- /dev/null +++ b/buildroot/package/protobuf-c/protobuf-c.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 fd8f6f5d6927330cf2b8b4ec8332de8b1ee2b8f2480b52ee3f221aad6de2082c protobuf-c-v1.3.0.tar.gz diff --git a/buildroot/package/protobuf-c/protobuf-c.mk b/buildroot/package/protobuf-c/protobuf-c.mk new file mode 100644 index 0000000..4306610 --- /dev/null +++ b/buildroot/package/protobuf-c/protobuf-c.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# protobuf-c +# +################################################################################ + +PROTOBUF_C_VERSION = v1.3.0 +PROTOBUF_C_SITE = $(call github,protobuf-c,protobuf-c,$(PROTOBUF_C_VERSION)) +PROTOBUF_C_DEPENDENCIES = host-protobuf-c +HOST_PROTOBUF_C_DEPENDENCIES = host-protobuf host-pkgconf +PROTOBUF_C_MAKE = $(MAKE1) +PROTOBUF_C_CONF_OPTS = --disable-protoc +PROTOBUF_C_INSTALL_STAGING = YES +PROTOBUF_C_LICENSE = BSD-2-Clause +PROTOBUF_C_LICENSE_FILES = LICENSE +PROTOBUF_C_AUTORECONF = YES +HOST_PROTOBUF_C_AUTORECONF = YES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/protobuf/Config.in b/buildroot/package/protobuf/Config.in new file mode 100644 index 0000000..c91e401 --- /dev/null +++ b/buildroot/package/protobuf/Config.in @@ -0,0 +1,47 @@ +# See src/google/protobuf/stubs/platform_macros.h for supported archs. +# +# On PowerPC, the __atomic_*() built-ins for 1-byte, 2-byte and 4-byte +# types are available built-in. However, the __atomic_*() built-ins for +# 8-byte types is implemented via libatomic, so only available since gcc +# 4.8. +# +# In Buildroot, to simplify things, we've decided to simply require gcc +# 4.8 as soon as the architectures has at least one __atomic_*() built-in +# variant that requires libatomic. +# +# Since protobuf most likely only uses the 1, 2 and 4-byte variants, it +# *could* technically build with gcc 4.7. This is probably not a big deal, +# and we can live with requiring gcc 4.8 on PowerPC to build protobuf. +# +# host-protobuf only builds on certain architectures +config BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_i386 + default y if BR2_mipsel + default y if BR2_x86_64 + default y if BR2_sparc64 + default y if BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_USE_MMU # fork() + +config BR2_PACKAGE_PROTOBUF + bool "protobuf" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_4_5 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + depends on !BR2_STATIC_LIBS + help + Protocol buffers are Google's language-neutral, + platform-neutral, extensible mechanism for serializing + structured data. + + https://developers.google.com/protocol-buffers + +comment "protobuf needs a toolchain w/ C++, threads, dynamic library, host and target gcc >= 4.5" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || BR2_STATIC_LIBS || !BR2_HOST_GCC_AT_LEAST_4_5 \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS diff --git a/buildroot/package/protobuf/protobuf.hash b/buildroot/package/protobuf/protobuf.hash new file mode 100644 index 0000000..fa02440 --- /dev/null +++ b/buildroot/package/protobuf/protobuf.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2bb34b4a8211a30d12ef29fd8660995023d119c99fbab2e5fe46f17528c9cc78 protobuf-cpp-3.4.1.tar.gz diff --git a/buildroot/package/protobuf/protobuf.mk b/buildroot/package/protobuf/protobuf.mk new file mode 100644 index 0000000..d2782dd --- /dev/null +++ b/buildroot/package/protobuf/protobuf.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# protobuf +# +################################################################################ + +# When bumping this package, make sure to also verify if the +# python-protobuf package still works, as they share the same +# version/site variables. +PROTOBUF_VERSION = 3.4.1 +PROTOBUF_SOURCE = protobuf-cpp-$(PROTOBUF_VERSION).tar.gz +PROTOBUF_SITE = https://github.com/google/protobuf/releases/download/v$(PROTOBUF_VERSION) +PROTOBUF_LICENSE = BSD-3-Clause +PROTOBUF_LICENSE_FILES = LICENSE + +# N.B. Need to use host protoc during cross compilation. +PROTOBUF_DEPENDENCIES = host-protobuf +PROTOBUF_CONF_OPTS = --with-protoc=$(HOST_DIR)/bin/protoc + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +PROTOBUF_CONF_ENV += LIBS=-latomic +endif + +PROTOBUF_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_ZLIB),y) +PROTOBUF_DEPENDENCIES += zlib +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/proxychains-ng/Config.in b/buildroot/package/proxychains-ng/Config.in new file mode 100644 index 0000000..e27283a --- /dev/null +++ b/buildroot/package/proxychains-ng/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PROXYCHAINS_NG + bool "proxychains-ng" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + Force any tcp connections to flow through a proxy (or proxy + chain) + + https://github.com/rofl0r/proxychains + +comment "proxychains-ng needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/proxychains-ng/proxychains-ng.hash b/buildroot/package/proxychains-ng/proxychains-ng.hash new file mode 100644 index 0000000..7ca4d5e --- /dev/null +++ b/buildroot/package/proxychains-ng/proxychains-ng.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/proxychains-ng/files/ +md5 34d840eb184e96bff418201c28a935c5 proxychains-ng-4.11.tar.bz2 +sha1 00bc3dc18f2b638c79112c99f082a7a2878beaad proxychains-ng-4.11.tar.bz2 +# Locally computed: +sha256 dcc4149808cd1fb5d9663cc09791f478805816b1f017381f424414c47f6376b6 proxychains-ng-4.11.tar.bz2 diff --git a/buildroot/package/proxychains-ng/proxychains-ng.mk b/buildroot/package/proxychains-ng/proxychains-ng.mk new file mode 100644 index 0000000..a9f3fc9 --- /dev/null +++ b/buildroot/package/proxychains-ng/proxychains-ng.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# proxychains-ng +# +################################################################################ + +PROXYCHAINS_NG_VERSION = 4.11 +PROXYCHAINS_NG_SOURCE = proxychains-ng-$(PROXYCHAINS_NG_VERSION).tar.bz2 +PROXYCHAINS_NG_SITE = http://downloads.sourceforge.net/project/proxychains-ng +PROXYCHAINS_NG_LICENSE = GPL-2.0+ +PROXYCHAINS_NG_LICENSE_FILES = COPYING + +define PROXYCHAINS_NG_CONFIGURE_CMDS + cd $(@D) && \ + $(TARGET_CONFIGURE_OPTS) ./configure --prefix=/usr --sysconfdir=/etc +endef + +define PROXYCHAINS_NG_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define PROXYCHAINS_NG_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install install-config +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/pru-software-support/Config.in b/buildroot/package/pru-software-support/Config.in new file mode 100644 index 0000000..4e34806 --- /dev/null +++ b/buildroot/package/pru-software-support/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PRU_SOFTWARE_SUPPORT + bool "pru-software-support" + depends on BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_PRU_SOFTWARE_SUPPORT + help + PRU firmware examples extracted from TI's PRU software + support package. See readme.txt for installation details. + + https://git.ti.com/pru-software-support-package/pru-software-support-package diff --git a/buildroot/package/pru-software-support/Config.in.host b/buildroot/package/pru-software-support/Config.in.host new file mode 100644 index 0000000..d362ac5 --- /dev/null +++ b/buildroot/package/pru-software-support/Config.in.host @@ -0,0 +1,11 @@ +config BR2_PACKAGE_HOST_PRU_SOFTWARE_SUPPORT + bool "host pru-software-support" + depends on BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS + select BR2_PACKAGE_HOST_TI_CGT_PRU + help + This package provides useful headers and libraries for the + PRU unit found on some TI processors e.g. AM3358. Note that + the included labs and examples aren't built, they can be + built using the corresponding target package. + + https://git.ti.com/pru-software-support-package/pru-software-support-package diff --git a/buildroot/package/pru-software-support/pru-software-support.hash b/buildroot/package/pru-software-support/pru-software-support.hash new file mode 100644 index 0000000..f4ce8e4 --- /dev/null +++ b/buildroot/package/pru-software-support/pru-software-support.hash @@ -0,0 +1,2 @@ +# Locally-calculated hash +sha256 1e880d74f9a1d04324e6255cb7a0e3d40f92e08809dc81dc6c714447bac5c335 pru-software-support-v5.1.0.tar.gz diff --git a/buildroot/package/pru-software-support/pru-software-support.mk b/buildroot/package/pru-software-support/pru-software-support.mk new file mode 100644 index 0000000..f30ff6b --- /dev/null +++ b/buildroot/package/pru-software-support/pru-software-support.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# pru-software-support +# +################################################################################ + +PRU_SOFTWARE_SUPPORT_VERSION = v5.1.0 +PRU_SOFTWARE_SUPPORT_SITE = https://git.ti.com/pru-software-support-package/pru-software-support-package/archive-tarball/$(PRU_SOFTWARE_SUPPORT_VERSION)? +PRU_SOFTWARE_SUPPORT_LICENSE = BSD-3-Clause, GPL-2.0, Public Domain +PRU_SOFTWARE_SUPPORT_LICENSE_FILES = PRU-Package-v5.0-Manifest.html +PRU_SOFTWARE_SUPPORT_DEPENDENCIES = host-ti-cgt-pru host-pru-software-support +HOST_PRU_SOFTWARE_SUPPORT_DEPENDENCIES = host-ti-cgt-pru + +define HOST_PRU_SOFTWARE_SUPPORT_BUILD_CMDS + $(MAKE) PRU_CGT=$(TI_CGT_PRU_INSTALLDIR) -C $(@D)/lib/src +endef + +# install this library support alongside PRU toolchain i.e. +# everything in TI_CGT_PRU_INSTALLDIR as PRU_CGT +define HOST_PRU_SOFTWARE_SUPPORT_INSTALL_CMDS + mkdir -p $(TI_CGT_PRU_INSTALLDIR)/usr/include + cp -dpfr $(@D)/include/* $(TI_CGT_PRU_INSTALLDIR)/usr/include + mkdir -p $(TI_CGT_PRU_INSTALLDIR)/usr/lib + cp -dpfr $(@D)/lib/src/*/gen/*.lib $(TI_CGT_PRU_INSTALLDIR)/usr/lib/ +endef + +define PRU_SOFTWARE_SUPPORT_BUILD_CMDS + $(MAKE) PRU_CGT=$(TI_CGT_PRU_INSTALLDIR) -C $(@D)/examples +endef + +define PRU_SOFTWARE_SUPPORT_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/share/pru-software-support + cp -dpfr $(@D)/examples/* $(TARGET_DIR)/usr/share/pru-software-support/ +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/pru-software-support/readme.txt b/buildroot/package/pru-software-support/readme.txt new file mode 100644 index 0000000..85d7af8 --- /dev/null +++ b/buildroot/package/pru-software-support/readme.txt @@ -0,0 +1,21 @@ +PRU Software Support +==================== + +Two different packages are provided from the TI PRU software support +code base. + +1. The include files and rpmsg static library for the PRU are + installed alongside the host package for the PRU code generation + tools package i.e. $(TI_CGT_PRU_INSTALLDIR). + +2. A target package for all the examples installed to + /usr/share/pru-software-support/. Users wanting to test a specific + example should copy or link it to a directory where the kernel + looks for firmware, e.g: + + # cp /usr/share/pru-software-support/am335x/PRU_gpioToggle/gen/PRU_gpioToggle.out \ + /lib/firmware/am335x-pru0-fw + +To get started with the PRU, have a look at the labs [1]. + +[1] http://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs diff --git a/buildroot/package/pseudo/0001-Fix-mixed-tab-space-indentation.patch b/buildroot/package/pseudo/0001-Fix-mixed-tab-space-indentation.patch new file mode 100644 index 0000000..6b62c1a --- /dev/null +++ b/buildroot/package/pseudo/0001-Fix-mixed-tab-space-indentation.patch @@ -0,0 +1,105 @@ +From bf4e5310547603bf36e67dc4cba027963f16508e Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Fri, 4 Nov 2016 11:53:48 -0400 +Subject: [PATCH 1/3] Fix mixed tab/space indentation +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +CC="cc -pipe -std=gnu99 -Wall -W -Wextra -fPIC -D_LARGEFILE64_SOURCE -D_ATFILE_SOURCE -DPSEUDO_PREFIX='"/usr/local"' -DPSEUDO_SUFFIX='""' -DPSEUDO_BINDIR='"bin"' -DPSEUDO_LIBDIR='"lib64"' -DPSEUDO_LOCALSTATEDIR='"var/pseudo"' -DPSEUDO_VERSION='"1.8.1"' -DUSE_MEMORY_DB -DPSEUDO_PASSWD_FALLBACK='""' -DPSEUDO_XATTR_SUPPORT -O2 -g " ./makewrappers "xattr=true" + File "./makewrappers", line 327 + return """/* This function is not called if pseudo is configured --enable-force-async */ + ^ +TabError: inconsistent use of tabs and spaces in indentation + +Signed-off-by: Gaël PORTAY +--- + makewrappers | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +diff --git a/makewrappers b/makewrappers +index e9191ed..303e2cc 100755 +--- a/makewrappers ++++ b/makewrappers +@@ -324,7 +324,7 @@ class Function: + + def maybe_async_skip(self): + if self.async_skip: +- return """/* This function is not called if pseudo is configured --enable-force-async */ ++ return """/* This function is not called if pseudo is configured --enable-force-async */ + #ifdef PSEUDO_FORCE_ASYNC + if (!pseudo_allow_fsync) { + PROFILE_DONE; +@@ -333,7 +333,7 @@ class Function: + #endif + """ % self.async_skip + else: +- return "" ++ return "" + + def comment(self): + """declare self (in a comment)""" +@@ -393,11 +393,11 @@ class Function: + + def rc_format(self): + """the format string to use for the return value""" +- return typedata.get(self.type, { 'format': '[%s]', 'value': '"' + self.type + '"' })['format'] ++ return typedata.get(self.type, { 'format': '[%s]', 'value': '"' + self.type + '"' })['format'] + + def rc_value(self): + """the value to pass for the format string for the return value""" +- return typedata.get(self.type, { 'format': '[%s]', 'value': '"' + self.type + '"' })['value'] ++ return typedata.get(self.type, { 'format': '[%s]', 'value': '"' + self.type + '"' })['value'] + + def rc_decl(self): + """declare rc (if needed)""" +@@ -456,7 +456,7 @@ additional ports to include. + self.name = port + self.subports = [] + self.preports = [] +- print port ++ print port + + if os.path.exists(self.portfile("pseudo_wrappers.c")): + self.wrappers = self.portfile("pseudo_wrappers.c") +@@ -522,11 +522,11 @@ additional ports to include. + return '#define PSEUDO_PORT_%s 1' % string.upper(self.name).replace('/', '_') + + def portdeps(self): +- deps = [] +- if self.wrappers: +- deps.append(self.wrappers) +- if self.portdef_file: +- deps.append(self.portdef_file) ++ deps = [] ++ if self.wrappers: ++ deps.append(self.wrappers) ++ if self.portdef_file: ++ deps.append(self.portdef_file) + if deps: + return 'pseudo_wrappers.o: %s' % ' '.join(deps) + else: +@@ -590,7 +590,7 @@ def main(argv): + + for arg in argv: + name, value = arg.split('=') +- os.environ["port_" + name] = value ++ os.environ["port_" + name] = value + + # error checking helpfully provided by the exception handler + copyright_file = open('guts/COPYRIGHT') +@@ -599,9 +599,9 @@ def main(argv): + + for path in glob.glob('templates/*'): + try: +- print "Considering template: " + path ++ print "Considering template: " + path + source = TemplateFile(path) +- if source.name.endswith('.c') or source.name.endswith('.h'): ++ if source.name.endswith('.c') or source.name.endswith('.h'): + source.emit('copyright') + source.emit('header') + sources.append(source) +-- +2.10.1 + diff --git a/buildroot/package/pseudo/0002-Fix-missing-parentheses-at-print.patch b/buildroot/package/pseudo/0002-Fix-missing-parentheses-at-print.patch new file mode 100644 index 0000000..b023fcf --- /dev/null +++ b/buildroot/package/pseudo/0002-Fix-missing-parentheses-at-print.patch @@ -0,0 +1,190 @@ +From 6488a68ca715d8e18f899e536effceb548ed136e Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Fri, 4 Nov 2016 12:23:25 -0400 +Subject: [PATCH 2/3] Fix missing parentheses at print +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +CC="cc -pipe -std=gnu99 -Wall -W -Wextra -fPIC -D_LARGEFILE64_SOURCE -D_ATFILE_SOURCE -DPSEUDO_PREFIX='"/usr/local"' -DPSEUDO_SUFFIX='""' -DPSEUDO_BINDIR='"bin"' -DPSEUDO_LIBDIR='"lib64"' -DPSEUDO_LOCALSTATEDIR='"var/pseudo"' -DPSEUDO_VERSION='"1.8.1"' -DUSE_MEMORY_DB -DPSEUDO_PASSWD_FALLBACK='""' -DPSEUDO_XATTR_SUPPORT -O2 -g " ./makewrappers "xattr=true" + File "./makewrappers", line 459 + print port + ^ +SyntaxError: Missing parentheses in call to 'print' + +Signed-off-by: Gaël PORTAY +--- + maketables | 12 ++++++------ + makewrappers | 32 ++++++++++++++++---------------- + templatefile.py | 8 ++++---- + 3 files changed, 26 insertions(+), 26 deletions(-) + +diff --git a/maketables b/maketables +index b32312e..0726485 100755 +--- a/maketables ++++ b/maketables +@@ -73,7 +73,7 @@ class DataType: + for col in columns: + indexed = False + if col.startswith("FLAGS"): +- print "Flags: set for %s" % self.name ++ print("Flags: set for %s" % self.name) + self.flags = True + continue + if col.startswith("INDEXED "): +@@ -248,7 +248,7 @@ def main(): + template_file.emit('header') + templates.append(template_file) + except IOError: +- print "Invalid or malformed template %s. Aborting." % path ++ print("Invalid or malformed template %s. Aborting." % path) + exit(1) + + for filename in sys.argv[1:]: +@@ -256,15 +256,15 @@ def main(): + sys.stdout.write("%s: " % filename) + datatype = DataType(filename) + datatypes.append(datatype) +- print datatype.__repr__() +- print "" ++ print(datatype.__repr__()) ++ print("") + +- print "Writing datatypes...", ++ print("Writing datatypes...") + for datatype in datatypes: + # populate various tables and files with each datatype + for template_file in templates: + template_file.emit('body', datatype) +- print "done. Cleaning up." ++ print("done. Cleaning up.") + + for template_file in templates: + # clean up files +diff --git a/makewrappers b/makewrappers +index 303e2cc..bac856b 100755 +--- a/makewrappers ++++ b/makewrappers +@@ -456,7 +456,7 @@ additional ports to include. + self.name = port + self.subports = [] + self.preports = [] +- print port ++ print(port) + + if os.path.exists(self.portfile("pseudo_wrappers.c")): + self.wrappers = self.portfile("pseudo_wrappers.c") +@@ -504,17 +504,17 @@ additional ports to include. + prefuncs = pre.functions() + for name in prefuncs.keys(): + if name in mergedfuncs: +- print "Warning: %s from %s overriding %s" % (name, pre.name, mergedfuncs[name].port) ++ print("Warning: %s from %s overriding %s" % (name, pre.name, mergedfuncs[name].port)) + mergedfuncs[name] = prefuncs[name] + for name in self.funcs.keys(): + if name in mergedfuncs: +- print "Warning: %s from %s overriding %s" % (name, self.name, mergedfuncs[name].port) ++ print("Warning: %s from %s overriding %s" % (name, self.name, mergedfuncs[name].port)) + mergedfuncs[name] = self.funcs[name] + for sub in self.subports: + subfuncs = sub.functions() + for name in subfuncs.keys(): + if name in mergedfuncs: +- print "Warning: %s from %s overriding %s" % (name, sub.name, mergedfuncs[name].port) ++ print("Warning: %s from %s overriding %s" % (name, sub.name, mergedfuncs[name].port)) + mergedfuncs[name] = subfuncs[name] + return mergedfuncs + +@@ -576,11 +576,11 @@ def process_wrapfuncs(port): + func.directory = directory + funcs[func.name] = func + sys.stdout.write(".") +- except Exception, e: +- print "Parsing failed:", e ++ except Exception(e): ++ print("Parsing failed:", e) + exit(1) + funclist.close() +- print "" ++ print("") + return funcs + + def main(argv): +@@ -599,35 +599,35 @@ def main(argv): + + for path in glob.glob('templates/*'): + try: +- print "Considering template: " + path ++ print("Considering template: " + path) + source = TemplateFile(path) + if source.name.endswith('.c') or source.name.endswith('.h'): + source.emit('copyright') + source.emit('header') + sources.append(source) + except IOError: +- print "Invalid or malformed template %s. Aborting." % path ++ print("Invalid or malformed template %s. Aborting." % path) + exit(1) + + try: + port = Port('common', sources) + + except KeyError: +- print "Unknown uname -s result: '%s'." % uname_s +- print "Known system types are:" +- print "%-20s %-10s %s" % ("uname -s", "port name", "description") ++ print("Unknown uname -s result: '%s'." % uname_s) ++ print("Known system types are:") ++ print("%-20s %-10s %s" % ("uname -s", "port name", "description")) + for key in host_ports: +- print "%-20s %-10s %s" % (key, host_ports[key], +- host_descrs[host_ports[key]]) ++ print("%-20s %-10s %s" % (key, host_ports[key], ++ host_descrs[host_ports[key]])) + + # the per-function stuff +- print "Writing functions...", ++ print("Writing functions...") + all_funcs = port.functions() + for name in sorted(all_funcs.keys()): + # populate various tables and files with each function + for source in sources: + source.emit('body', all_funcs[name]) +- print "done. Cleaning up." ++ print("done. Cleaning up.") + + for source in sources: + # clean up files +diff --git a/templatefile.py b/templatefile.py +index 2789b22..abf9a2c 100644 +--- a/templatefile.py ++++ b/templatefile.py +@@ -79,13 +79,13 @@ class TemplateFile: + return + path = Template(self.path).safe_substitute(item) + if os.path.exists(path): +- # print "We don't overwrite existing files." ++ # print("We don't overwrite existing files.") + return + self.file = open(path, 'w') + if not self.file: +- print "Couldn't open '%s' (expanded from %s), " \ ++ print("Couldn't open '%s' (expanded from %s), " \ + "not emitting '%s'." % \ +- (path, self.path, template) ++ (path, self.path, template)) + return + + def emit(self, template, item=None): +@@ -103,7 +103,7 @@ class TemplateFile: + self.file.write(templ.safe_substitute(item)) + self.file.write("\n") + else: +- print "Warning: Unknown template '%s'." % template ++ print("Warning: Unknown template '%s'." % template) + + if self.file_per_item: + if self.file: +-- +2.10.1 + diff --git a/buildroot/package/pseudo/0003-Make-it-compatible-with-python3.patch b/buildroot/package/pseudo/0003-Make-it-compatible-with-python3.patch new file mode 100644 index 0000000..3bb74de --- /dev/null +++ b/buildroot/package/pseudo/0003-Make-it-compatible-with-python3.patch @@ -0,0 +1,215 @@ +From fcc10b1f4a9968af5cda1adb9e449df92939d5f2 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Fri, 4 Nov 2016 15:58:46 -0400 +Subject: [PATCH 3/3] Make it compatible with python3 +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +Python scripts are now compatible with both version of python, 2 and 3. + +Helped-by: Damien Riegel +Helped-by: Alexandre Leblanc +Signed-off-by: Gaël PORTAY +--- + maketables | 135 ++++++++++++++++++++++++++++++----------------------------- + makewrappers | 8 ++-- + 2 files changed, 73 insertions(+), 70 deletions(-) + +diff --git a/maketables b/maketables +index 0726485..f74f2b1 100755 +--- a/maketables ++++ b/maketables +@@ -51,6 +51,7 @@ value. (This is for consistency with C array bounds.) + import glob + import sys + import string ++import os + from templatefile import TemplateFile + + class DataType: +@@ -58,74 +59,74 @@ class DataType: + + def __init__(self, path): + """read the first line of path, then make tuples of the rest""" +- source = file(path) +- definition = source.readline().rstrip() +- self.name, qualifiers = string.split(definition, ': ', 2) +- if '; ' in qualifiers: +- self.prefix, columns = string.split(qualifiers, '; ') +- else: +- self.prefix = qualifiers +- columns = [] +- self.flags = False +- if len(columns): +- self.columns = [] +- columns = string.split(columns, ', ') +- for col in columns: +- indexed = False +- if col.startswith("FLAGS"): +- print("Flags: set for %s" % self.name) +- self.flags = True ++ with open(path,'r') as source: ++ definition = source.readline().rstrip() ++ self.name, qualifiers = definition.split(': ', 2) ++ if '; ' in qualifiers: ++ self.prefix, columns = qualifiers.split('; ') ++ else: ++ self.prefix = qualifiers ++ columns = [] ++ self.flags = False ++ if len(columns): ++ self.columns = [] ++ columns = columns.split(', ') ++ for col in columns: ++ indexed = False ++ if col.startswith("FLAGS"): ++ print("Flags: set for %s" % self.name) ++ self.flags = True ++ continue ++ if col.startswith("INDEXED "): ++ col = col[8:] ++ indexed = True ++ if "=" in col: ++ name, default = col.split(' = ') ++ else: ++ name, default = col, "" ++ if " " in name: ++ words = name.split(' ') ++ name = words[-1] ++ del words[-1] ++ type = ' '.join(words) ++ else: ++ type = "char *" ++ self.columns.append({"indexed":indexed, "type":type, "name":name, "value":default}) ++ else: ++ self.columns = [] ++ self.data = [] ++ self.comments = [] ++ index = 1 ++ for line in source.readlines(): ++ item = {} ++ if line.startswith('#'): ++ self.comments.append(line.rstrip().replace('#', '')) + continue +- if col.startswith("INDEXED "): +- col = col[8:] +- indexed = True +- if "=" in col: +- name, default = string.split(col, ' = ') +- else: +- name, default = col, "" +- if " " in name: +- words = string.split(name, ' ') +- name = words[-1] +- del words[-1] +- type = ' '.join(words) +- else: +- type = "char *" +- self.columns.append({"indexed":indexed, "type":type, "name":name, "value":default}) +- else: +- self.columns = [] +- self.data = [] +- self.comments = [] +- index = 1 +- for line in source.readlines(): +- item = {} +- if line.startswith('#'): +- self.comments.append(line.rstrip().replace('#', '')) +- continue +- # first entry on the line is the "real" name/id, following hunks +- # are additional columns +- cols = string.split(line.rstrip(), ', ') +- item["name"] = cols.pop(0) +- item["upper"] = item["name"].replace('-', '_').upper() +- column_list = [] +- for col in self.columns: +- if len(cols) > 0: +- value = cols.pop(0) +- if col["indexed"]: +- if not "max" in col: +- col["max"] = value +- if value > col["max"]: +- col["max"] = value +- if not "min" in col: +- col["min"] = value +- if value < col["min"]: +- col["min"] = value +- column_list.append({"name":col["name"], "value":value}) +- else: +- column_list.append({"name":col["name"], "value":col["value"]}) +- item["cols"] = column_list +- item["index"] = index +- index = index + 1 +- self.data.append(item) ++ # first entry on the line is the "real" name/id, following hunks ++ # are additional columns ++ cols = line.rstrip().split(', ') ++ item["name"] = cols.pop(0) ++ item["upper"] = item["name"].replace('-', '_').upper() ++ column_list = [] ++ for col in self.columns: ++ if len(cols) > 0: ++ value = cols.pop(0) ++ if col["indexed"]: ++ if not "max" in col: ++ col["max"] = value ++ if value > col["max"]: ++ col["max"] = value ++ if not "min" in col: ++ col["min"] = value ++ if value < col["min"]: ++ col["min"] = value ++ column_list.append({"name":col["name"], "value":value}) ++ else: ++ column_list.append({"name":col["name"], "value":col["value"]}) ++ item["cols"] = column_list ++ item["index"] = index ++ index = index + 1 ++ self.data.append(item) + + def __getitem__(self, key): + """Make this object look like a dict for Templates to use""" +diff --git a/makewrappers b/makewrappers +index bac856b..ff08ba0 100755 +--- a/makewrappers ++++ b/makewrappers +@@ -453,6 +453,8 @@ additional ports to include. + """ + + def __init__(self, port, sources): ++ if type(port) is not str: ++ port = str(port, encoding="ascii") + self.name = port + self.subports = [] + self.preports = [] +@@ -483,7 +485,7 @@ additional ports to include. + if retcode: + raise Exception("preports script failed for port %s" % self.name) + +- for preport in string.split(portlist): ++ for preport in portlist.split(): + next = Port(preport, sources) + self.preports.append(next) + +@@ -494,7 +496,7 @@ additional ports to include. + if retcode: + raise Exception("subports script failed for port %s" % self.name) + +- for subport in string.split(portlist): ++ for subport in portlist.split(): + next = Port(subport, sources) + self.subports.append(next) + +@@ -519,7 +521,7 @@ additional ports to include. + return mergedfuncs + + def define(self): +- return '#define PSEUDO_PORT_%s 1' % string.upper(self.name).replace('/', '_') ++ return '#define PSEUDO_PORT_%s 1' % self.name.upper().replace('/', '_') + + def portdeps(self): + deps = [] +-- +2.10.1 + diff --git a/buildroot/package/pseudo/pseudo.hash b/buildroot/package/pseudo/pseudo.hash new file mode 100644 index 0000000..1553a29 --- /dev/null +++ b/buildroot/package/pseudo/pseudo.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 7d4b767302f118fa1c3f89b551cf3f3f2aa92721dab86ff62f0600a394b8a81a pseudo-45eca34c754d416a38bee90fb2d3c110a0b6cc5f.tar.gz diff --git a/buildroot/package/pseudo/pseudo.mk b/buildroot/package/pseudo/pseudo.mk new file mode 100644 index 0000000..4464271 --- /dev/null +++ b/buildroot/package/pseudo/pseudo.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# pseudo +# +################################################################################ + +PSEUDO_VERSION = 45eca34c754d416a38bee90fb2d3c110a0b6cc5f +PSEUDO_SITE = https://git.yoctoproject.org/git/pseudo +PSEUDO_SITE_METHOD = git + +# No "or later" clause. +PSEUDO_LICENSE = LGPL-2.1 +PSEUDO_LICENSE_FILES = COPYING + +HOST_PSEUDO_DEPENDENCIES = host-attr host-sqlite + +# configure script is not generated by autoconf, so passing --libdir +# is necessary, even if the infrastructure passes --prefix already. +# It also does not use CFLAGS from the environment, they need to be +# specified with a custom --cflags option. Also force rpath to avoid +# a warning at configure time. +HOST_PSEUDO_CONF_OPTS = \ + --cflags="$(HOSTCFLAGS)" \ + --with-rpath=$(HOST_DIR)/lib \ + --bits=$(if $(filter %64,$(HOSTARCH)),64,32) \ + --libdir=$(HOST_DIR)/lib \ + --with-sqlite=$(HOST_DIR) + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/psmisc/0001-link-against-libintl.patch b/buildroot/package/psmisc/0001-link-against-libintl.patch new file mode 100644 index 0000000..bf6b971 --- /dev/null +++ b/buildroot/package/psmisc/0001-link-against-libintl.patch @@ -0,0 +1,37 @@ +From f2b6f342325824399da3525df182031475b5c4dd Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 22 Jun 2017 13:56:03 +0300 +Subject: [PATCH] Link against libintl if needed + +When built against a C library that has locale support, but for which +intl support is provided by an external libintl library, psmisc +forgets to link against this library, even though the configure script +properly checks that. + +This patch therefore ensure that we link against libintl when needed, +thanks to the @INTLLIBS@ variable provided by the configure script. + +Forward-ported Thomas's patch to psmisc 22.16 +from commit f066ed70cd6939838d4057f66798cbc1d972cc73 +Signed-off-by: Gustavo Zacarias +[baruch: move from Makefile.in to Makefile.am for 23.1] +Signed-off-by: Baruch Siach +--- + Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Makefile.am b/Makefile.am +index 9f61ab4f2f70..8ce284e65124 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -65,6 +65,7 @@ src_fuser_LDADD = @LIBINTL@ + src_killall_SOURCES = src/killall.c src/comm.h src/signals.c src/signals.h src/i18n.h + src_killall_LDADD = @LIBINTL@ @SELINUX_LIB@ + src_peekfd_SOURCES = src/peekfd.c ++src_peekfd_LDADD = @LIBINTL@ + src_pslog_SOURCES = src/pslog.c + src_pstree_SOURCES = src/pstree.c src/comm.h src/i18n.h + src_pstree_LDADD = @LIBINTL@ @TERMCAP_LIB@ @SELINUX_LIB@ +-- +2.11.0 + diff --git a/buildroot/package/psmisc/0002-add-git-version-get.patch b/buildroot/package/psmisc/0002-add-git-version-get.patch new file mode 100644 index 0000000..e75fb1d --- /dev/null +++ b/buildroot/package/psmisc/0002-add-git-version-get.patch @@ -0,0 +1,198 @@ +Makefile: ship also git-version-gen + +Without git-version-gen, the tarball autogen.sh fails. + +This patch is equivalent to upstream pending merge request: + + https://gitlab.com/psmisc/psmisc/merge_requests/13 + +Signed-off-by: Baruch Siach +--- + +diff --git psmisc-23.1/misc/git-version-gen psmisc-23.1/misc/git-version-gen +new file mode 100755 +index 000000000000..171767f0d7a3 +--- /dev/null ++++ psmisc-23.1/misc/git-version-gen +@@ -0,0 +1,181 @@ ++#!/bin/sh ++# Print a version string. ++scriptversion=2011-02-19.19; # UTC ++ ++# Copyright (C) 2007-2011 Free Software Foundation, Inc. ++# ++# 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 3 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, see . ++ ++# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/. ++# It may be run two ways: ++# - from a git repository in which the "git describe" command below ++# produces useful output (thus requiring at least one signed tag) ++# - from a non-git-repo directory containing a .tarball-version file, which ++# presumes this script is invoked like "./git-version-gen .tarball-version". ++ ++# In order to use intra-version strings in your project, you will need two ++# separate generated version string files: ++# ++# .tarball-version - present only in a distribution tarball, and not in ++# a checked-out repository. Created with contents that were learned at ++# the last time autoconf was run, and used by git-version-gen. Must not ++# be present in either $(srcdir) or $(builddir) for git-version-gen to ++# give accurate answers during normal development with a checked out tree, ++# but must be present in a tarball when there is no version control system. ++# Therefore, it cannot be used in any dependencies. GNUmakefile has ++# hooks to force a reconfigure at distribution time to get the value ++# correct, without penalizing normal development with extra reconfigures. ++# ++# .version - present in a checked-out repository and in a distribution ++# tarball. Usable in dependencies, particularly for files that don't ++# want to depend on config.h but do want to track version changes. ++# Delete this file prior to any autoconf run where you want to rebuild ++# files to pick up a version string change; and leave it stale to ++# minimize rebuild time after unrelated changes to configure sources. ++# ++# It is probably wise to add these two files to .gitignore, so that you ++# don't accidentally commit either generated file. ++# ++# Use the following line in your configure.ac, so that $(VERSION) will ++# automatically be up-to-date each time configure is run (and note that ++# since configure.ac no longer includes a version string, Makefile rules ++# should not depend on configure.ac for version updates). ++# ++# AC_INIT([GNU project], ++# m4_esyscmd([build-aux/git-version-gen .tarball-version]), ++# [bug-project@example]) ++# ++# Then use the following lines in your Makefile.am, so that .version ++# will be present for dependencies, and so that .tarball-version will ++# exist in distribution tarballs. ++# ++# BUILT_SOURCES = $(top_srcdir)/.version ++# $(top_srcdir)/.version: ++# echo $(VERSION) > $@-t && mv $@-t $@ ++# dist-hook: ++# echo $(VERSION) > $(distdir)/.tarball-version ++ ++case $# in ++ 1|2) ;; ++ *) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version" \ ++ '[TAG-NORMALIZATION-SED-SCRIPT]' ++ exit 1;; ++esac ++ ++tarball_version_file=$1 ++tag_sed_script="${2:-s/x/x/}" ++nl=' ++' ++ ++# Avoid meddling by environment variable of the same name. ++v= ++v_from_git= ++ ++# First see if there is a tarball-only version file. ++# then try "git describe", then default. ++if test -f $tarball_version_file ++then ++ v=`cat $tarball_version_file` || v= ++ case $v in ++ *$nl*) v= ;; # reject multi-line output ++ [0-9]*) ;; ++ *) v= ;; ++ esac ++ test -z "$v" \ ++ && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2 ++fi ++ ++if test -n "$v" ++then ++ : # use $v ++# Otherwise, if there is at least one git commit involving the working ++# directory, and "git describe" output looks sensible, use that to ++# derive a version string. ++elif test "`git log -1 --pretty=format:x . 2>&1`" = x \ ++ && v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \ ++ || git describe --abbrev=4 HEAD 2>/dev/null` \ ++ && v=`printf '%s\n' "$v" | sed "$tag_sed_script"` \ ++ && case $v in ++ v[0-9]*) ;; ++ *) (exit 1) ;; ++ esac ++then ++ # Is this a new git that lists number of commits since the last ++ # tag or the previous older version that did not? ++ # Newer: v6.10-77-g0f8faeb ++ # Older: v6.10-g0f8faeb ++ case $v in ++ *-rc[0-9]) ;; # release candidate ++ *-*-*) : git describe is okay three part flavor ;; ++ *-*) ++ : git describe is older two part flavor ++ # Recreate the number of commits and rewrite such that the ++ # result is the same as if we were using the newer version ++ # of git describe. ++ vtag=`echo "$v" | sed 's/-.*//'` ++ commit_list=`git rev-list "$vtag"..HEAD 2>/dev/null` \ ++ || { commit_list=failed; ++ echo "$0: WARNING: git rev-list failed" 1>&2; } ++ numcommits=`echo "$commit_list" | wc -l` ++ v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`; ++ test "$commit_list" = failed && v=UNKNOWN ++ ;; ++ esac ++ ++ case $v in ++ *-rc[0-9]) ++ # Remove the "g" in git describe's output string, to save a byte. ++ v=`echo "$v" | sed 's/\(.*\)-g/\1-/'`; ++ ;; ++ *) ++ # Change the first '-' to a '.', so version-comparing tools work properly. ++ # Remove the "g" in git describe's output string, to save a byte. ++ v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`; ++ ;; ++ esac ++ v_from_git=1 ++else ++ v=UNKNOWN ++fi ++ ++v=`echo "$v" |sed 's/^v//'` ++ ++# Test whether to append the "-dirty" suffix only if the version ++# string we're using came from git. I.e., skip the test if it's "UNKNOWN" ++# or if it came from .tarball-version. ++if test -n "$v_from_git"; then ++ # Don't declare a version "dirty" merely because a time stamp has changed. ++ git update-index --refresh > /dev/null 2>&1 ++ ++ dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty= ++ case "$dirty" in ++ '') ;; ++ *) # Append the suffix only if there isn't one already. ++ case $v in ++ *-dirty) ;; ++ *) v="$v-dirty" ;; ++ esac ;; ++ esac ++fi ++ ++# Omit the trailing newline, so that m4_esyscmd can use the result directly. ++echo "$v" | tr -d "$nl" ++ ++# Local variables: ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-time-zone: "UTC" ++# time-stamp-end: "; # UTC" ++# End: diff --git a/buildroot/package/psmisc/Config.in b/buildroot/package/psmisc/Config.in new file mode 100644 index 0000000..84e3096 --- /dev/null +++ b/buildroot/package/psmisc/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PSMISC + bool "psmisc" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + help + Helpful /proc related utilities such as pstree, fuser, and + killall + + https://gitlab.com/psmisc/psmisc diff --git a/buildroot/package/psmisc/psmisc.hash b/buildroot/package/psmisc/psmisc.hash new file mode 100644 index 0000000..8ce8e00 --- /dev/null +++ b/buildroot/package/psmisc/psmisc.hash @@ -0,0 +1,5 @@ +# From https://sourceforge.net/projects/psmisc/files/psmisc/ +md5 bbba1f701c02fb50d59540d1ff90d8d1 psmisc-23.1.tar.xz +sha1 d19031a5ba18a530aa0bb768cb74593f9af74b08 psmisc-23.1.tar.xz +# Locally computed: +sha256 2e84d474cf75dfbe3ecdacfb797bbfab71a35c7c2639d1b9f6d5f18b2149ba30 psmisc-23.1.tar.xz diff --git a/buildroot/package/psmisc/psmisc.mk b/buildroot/package/psmisc/psmisc.mk new file mode 100644 index 0000000..3d9a804 --- /dev/null +++ b/buildroot/package/psmisc/psmisc.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# psmisc +# +################################################################################ + +PSMISC_VERSION = 23.1 +PSMISC_SITE = http://downloads.sourceforge.net/project/psmisc/psmisc +PSMISC_SOURCE = psmisc-$(PSMISC_VERSION).tar.xz +PSMISC_LICENSE = GPL-2.0 +PSMISC_LICENSE_FILES = COPYING +PSMISC_DEPENDENCIES = ncurses $(TARGET_NLS_DEPENDENCIES) +# Patching Makefile.am +PSMISC_AUTORECONF = YES + +define PSMISC_GIT_VERSION_EXEC + chmod +x $(@D)/misc/git-version-gen +endef +PSMISC_POST_PATCH_HOOKS += PSMISC_GIT_VERSION_EXEC + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),) +# Don't force -fstack-protector when SSP is not available in toolchain +PSMISC_CONF_OPTS = --disable-harden-flags +endif + +# build after busybox, we prefer fat versions while we're at it +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +PSMISC_DEPENDENCIES += busybox +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/psplash/Config.in b/buildroot/package/psplash/Config.in new file mode 100644 index 0000000..5053eba --- /dev/null +++ b/buildroot/package/psplash/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_PSPLASH + bool "psplash" + depends on BR2_USE_WCHAR + help + PSplash is a userspace graphical boot splash screen for + mainly embedded Linux devices supporting a 16bpp or 32bpp + framebuffer. It has few dependencies (just libc), supports + basic images and text and handles rotation. Its visual look + is configurable by basic source changes. + + Also included is a 'client' command utility for sending + information to psplash such as boot progress information. + + Start the drawing process with 'psplash -n&' as early as + possible. Note: psplash creates a FIFO in /tmp for + communication with psplash-write. + + Usage: + * Set progress bar to 50 percent: + psplash-write "PROGRESS 50" + + * Display message "foobar" above progress bar: + psplash-write "MSG foobar" + + * Terminate psplash: + psplash-write "QUIT" + + http://git.yoctoproject.org/cgit/cgit.cgi/psplash/ + +comment "psplash needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/psplash/psplash-quit.service b/buildroot/package/psplash/psplash-quit.service new file mode 100644 index 0000000..14bd499 --- /dev/null +++ b/buildroot/package/psplash/psplash-quit.service @@ -0,0 +1,11 @@ +[Unit] +Description=Terminate Psplash Boot Screen +After=psplash-start.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/psplash-write QUIT +TimeoutSec=20 + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/psplash/psplash-start.service b/buildroot/package/psplash/psplash-start.service new file mode 100644 index 0000000..2de3cfc --- /dev/null +++ b/buildroot/package/psplash/psplash-start.service @@ -0,0 +1,11 @@ +[Unit] +Description=Starts Psplash Boot screen +Wants=systemd-vconsole-setup.service +After=systemd-vconsole-setup.service systemd-udev-trigger.service systemd-udevd.service +DefaultDependencies=no + +[Service] +ExecStart=/usr/bin/psplash -n + +[Install] +WantedBy=sysinit.target diff --git a/buildroot/package/psplash/psplash.hash b/buildroot/package/psplash/psplash.hash new file mode 100644 index 0000000..68c6ffa --- /dev/null +++ b/buildroot/package/psplash/psplash.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 aaddb20ef892dfb03d4e046cc634159bbcdfe555f7291652dde2b7d4cf491289 psplash-5b3c1cc28f5abdc2c33830150b48b278cc4f7bca.tar.gz diff --git a/buildroot/package/psplash/psplash.mk b/buildroot/package/psplash/psplash.mk new file mode 100644 index 0000000..fe00978 --- /dev/null +++ b/buildroot/package/psplash/psplash.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# psplash +# +################################################################################ + +PSPLASH_VERSION = 5b3c1cc28f5abdc2c33830150b48b278cc4f7bca +PSPLASH_SITE = git://git.yoctoproject.org/psplash +PSPLASH_LICENSE = GPL-2.0+ +PSPLASH_AUTORECONF = YES + +define PSPLASH_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/psplash/psplash-start.service \ + $(TARGET_DIR)/usr/lib/systemd/system/psplash-start.service + $(INSTALL) -d $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants + ln -sf ../../../../usr/lib/systemd/system/psplash-start.service \ + $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants/ + + $(INSTALL) -D -m 644 package/psplash/psplash-quit.service \ + $(TARGET_DIR)/usr/lib/systemd/system/psplash-quit.service + $(INSTALL) -d $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/psplash-quit.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/ +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/ptpd/Config.in b/buildroot/package/ptpd/Config.in new file mode 100644 index 0000000..2d87ca3 --- /dev/null +++ b/buildroot/package/ptpd/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PTPD + bool "ptpd" + help + The PTP daemon (PTPd) implements the Precision Time protocol + (PTP) as defined by the IEEE-1588-2002. + + http://ptpd.sourceforge.net/ diff --git a/buildroot/package/ptpd/S65ptpd b/buildroot/package/ptpd/S65ptpd new file mode 100755 index 0000000..89914e9 --- /dev/null +++ b/buildroot/package/ptpd/S65ptpd @@ -0,0 +1,29 @@ +#!/bin/sh +# +# Start ptpd +# + +case "$1" in + start) + printf "Starting ptpd: " + start-stop-daemon -S -q -x /usr/sbin/ptpd -- -S + if [ $? != 0 ]; then + echo "FAILED" + exit 1 + else + echo "OK" + fi + ;; + stop) + printf "Stopping ptpd: " + start-stop-daemon -K -q -x /usr/sbin/ptpd + echo "OK" + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/ptpd/ptpd.hash b/buildroot/package/ptpd/ptpd.hash new file mode 100644 index 0000000..ccd1d84 --- /dev/null +++ b/buildroot/package/ptpd/ptpd.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 a7c6ea83bd53da75ae04a7b7a25fe7c597b4e9ff1f93d46f4502e3fa8a2cb950 ptpd-1.1.0.tar.gz diff --git a/buildroot/package/ptpd/ptpd.mk b/buildroot/package/ptpd/ptpd.mk new file mode 100644 index 0000000..dad8ccf --- /dev/null +++ b/buildroot/package/ptpd/ptpd.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# ptpd +# +################################################################################ + +PTPD_VERSION = 1.1.0 +PTPD_SITE = http://downloads.sourceforge.net/project/ptpd/ptpd/$(PTPD_VERSION) +PTPD_LICENSE = BSD +PTPD_LICENSE_FILES = COPYRIGHT + +define PTPD_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/src +endef + +define PTPD_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/src/ptpd $(TARGET_DIR)/usr/sbin/ptpd +endef + +define PTPD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/ptpd/S65ptpd \ + $(TARGET_DIR)/etc/init.d/S65ptpd +endef + +define PTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/ptpd/ptpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/ptpd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/ptpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/ptpd.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ptpd/ptpd.service b/buildroot/package/ptpd/ptpd.service new file mode 100644 index 0000000..c9da3f4 --- /dev/null +++ b/buildroot/package/ptpd/ptpd.service @@ -0,0 +1,10 @@ +[Unit] +Description=Precision Time Protocol daemon +After=syslog.target network.target + +[Service] +ExecStart=/usr/sbin/ptpd -c +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/ptpd2/0001-musl.patch b/buildroot/package/ptpd2/0001-musl.patch new file mode 100644 index 0000000..2e214b2 --- /dev/null +++ b/buildroot/package/ptpd2/0001-musl.patch @@ -0,0 +1,15 @@ +Fix musl build + +Signed-off-by: Bernd Kuhls + +diff -uNr ptpd-ptpd-2.3.1.org/src/dep/net.c ptpd-ptpd-2.3.1/src/dep/net.c +--- ptpd-ptpd-2.3.1.org/src/dep/net.c 2015-06-29 17:13:29.000000000 +0200 ++++ ptpd-ptpd-2.3.1/src/dep/net.c 2016-01-24 00:35:44.509860065 +0100 +@@ -82,7 +82,6 @@ + #ifdef SO_TIMESTAMPING + #include + #include +-#include + #endif /* SO_TIMESTAMPING */ + + /** diff --git a/buildroot/package/ptpd2/Config.in b/buildroot/package/ptpd2/Config.in new file mode 100644 index 0000000..406276a --- /dev/null +++ b/buildroot/package/ptpd2/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PTPD2 + bool "ptpd2" + select BR2_PACKAGE_LIBPCAP + help + The PTP daemon (PTPd) implements the Precision Time protocol + (PTP) as defined by the IEEE-1588-2008. + + https://github.com/ptpd/ptpd diff --git a/buildroot/package/ptpd2/S65ptpd2 b/buildroot/package/ptpd2/S65ptpd2 new file mode 100755 index 0000000..f815cb5 --- /dev/null +++ b/buildroot/package/ptpd2/S65ptpd2 @@ -0,0 +1,29 @@ +#!/bin/sh +# +# Start ptpd2 +# + +case "$1" in + start) + printf "Starting ptpd2: " + start-stop-daemon -S -q -x /usr/sbin/ptpd2 -- -g + if [ $? != 0 ]; then + echo "FAILED" + exit 1 + else + echo "OK" + fi + ;; + stop) + printf "Stopping ptpd2: " + start-stop-daemon -K -q -x /usr/sbin/ptpd2 + echo "OK" + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/ptpd2/ptpd2.hash b/buildroot/package/ptpd2/ptpd2.hash new file mode 100644 index 0000000..af1f78a --- /dev/null +++ b/buildroot/package/ptpd2/ptpd2.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 267ad61d09d97069acec5d4878dceda20d0ddbebd27557d80230847848cee6c2 ptpd2-ptpd-2.3.1.tar.gz diff --git a/buildroot/package/ptpd2/ptpd2.mk b/buildroot/package/ptpd2/ptpd2.mk new file mode 100644 index 0000000..d95d415 --- /dev/null +++ b/buildroot/package/ptpd2/ptpd2.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# ptpd2 +# +################################################################################ + +PTPD2_VERSION = ptpd-2.3.1 +PTPD2_SITE = $(call github,ptpd,ptpd,$(PTPD2_VERSION)) +PTPD2_DEPENDENCIES = libpcap +PTPD2_CONF_OPTS = --with-pcap-config=$(STAGING_DIR)/usr/bin/pcap-config +# configure not shipped +PTPD2_AUTORECONF = YES +PTPD2_LICENSE = BSD-2-Clause +PTPD2_LICENSE_FILES = COPYRIGHT + +ifeq ($(BR2_STATIC_LIBS),y) +PTPD2_CONF_OPTS += LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +PTPD2_CONF_ENV += ac_cv_path_PATH_NET_SNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config +PTPD2_DEPENDENCIES += netsnmp +else +PTPD2_CONF_OPTS += --disable-snmp +endif + +# GCC bug with Os/O1/O2/O3 +# internal compiler error: in gen_add2_insn, at optabs.c:4454 +ifeq ($(BR2_bfin),y) +PTPD2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O0" +endif + +define PTPD2_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/ptpd2/S65ptpd2 \ + $(TARGET_DIR)/etc/init.d/S65ptpd2 +endef + +define PTPD2_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/ptpd2/ptpd2.service \ + $(TARGET_DIR)/usr/lib/systemd/system/ptpd2.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/ptpd2.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/ptpd2.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/ptpd2/ptpd2.service b/buildroot/package/ptpd2/ptpd2.service new file mode 100644 index 0000000..66e71ce --- /dev/null +++ b/buildroot/package/ptpd2/ptpd2.service @@ -0,0 +1,10 @@ +[Unit] +Description=Precision Time Protocol daemon +After=syslog.target network.target + +[Service] +ExecStart=/usr/sbin/ptpd2 -C -g +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/pugixml/0001-check-cxx_long_long_type-existence.patch b/buildroot/package/pugixml/0001-check-cxx_long_long_type-existence.patch new file mode 100644 index 0000000..a53c84a --- /dev/null +++ b/buildroot/package/pugixml/0001-check-cxx_long_long_type-existence.patch @@ -0,0 +1,33 @@ +From 6cfd9c14ced26c8220f7f7ea99610cbdbfb9eba7 Mon Sep 17 00:00:00 2001 +From: Theo Debrouwere +Date: Mon, 12 Sep 2016 09:38:56 +0200 +Subject: [PATCH] Bugfix: check if cxx_long_long_type is present before + applying it. + +Check if cxx_long_long_type is present in the list of compiler features +before adding it as a target_compile_feature. + +Patch was backported from +https://github.com/zeux/pugixml/commit/4dbb5646196a4a3cc94097f1473ef11d1d44df11 + +Signed-off-by: Theo Debrouwere +--- + scripts/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt +index 40a7ab0..6403753 100644 +--- a/scripts/CMakeLists.txt ++++ b/scripts/CMakeLists.txt +@@ -26,7 +26,7 @@ else() + endif() + + # Enable C++11 long long for compilers that are capable of it +-if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STRLESS 3.1) ++if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STRLESS 3.1 AND ";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_long_long_type;") + target_compile_features(pugixml PUBLIC cxx_long_long_type) + endif() + +-- +2.9.3 + diff --git a/buildroot/package/pugixml/Config.in b/buildroot/package/pugixml/Config.in new file mode 100644 index 0000000..c37b1df --- /dev/null +++ b/buildroot/package/pugixml/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_PUGIXML + bool "pugixml" + depends on BR2_INSTALL_LIBSTDCPP + help + Light-weight, simple and fast XML parser for C++ with XPath + support + + Features: + * DOM-like interface with rich traversal/modification + capabilities + * Extremely fast non-validating XML parser which constructs + the DOM tree from an XML file/buffer + * XPath 1.0 implementation for complex data-driven tree + queries + * Full Unicode support with Unicode interface variants and + automatic encoding conversions + + http://pugixml.org/ + https://github.com/zeux/pugixml + +comment "pugixml needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/pugixml/pugixml.hash b/buildroot/package/pugixml/pugixml.hash new file mode 100644 index 0000000..9007f7c --- /dev/null +++ b/buildroot/package/pugixml/pugixml.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 fbe10d46f61d769f7d92a296102e4e2bd3ee16130f11c5b10a1aae590ea1f5ca pugixml-1.7.tar.gz diff --git a/buildroot/package/pugixml/pugixml.mk b/buildroot/package/pugixml/pugixml.mk new file mode 100644 index 0000000..2e4f0ce --- /dev/null +++ b/buildroot/package/pugixml/pugixml.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# pugixml +# +################################################################################ + +PUGIXML_VERSION = 1.7 +PUGIXML_SITE = http://github.com/zeux/pugixml/releases/download/v$(PUGIXML_VERSION) +PUGIXML_LICENSE = MIT +PUGIXML_LICENSE_FILES = readme.txt +PUGIXML_INSTALL_STAGING = YES + +PUGIXML_SUBDIR = scripts + +$(eval $(cmake-package)) diff --git a/buildroot/package/pulseaudio/0001-padsp-Make-it-compile-on-musl.patch b/buildroot/package/pulseaudio/0001-padsp-Make-it-compile-on-musl.patch new file mode 100644 index 0000000..19842fa --- /dev/null +++ b/buildroot/package/pulseaudio/0001-padsp-Make-it-compile-on-musl.patch @@ -0,0 +1,75 @@ +From f6ab3c3aa7a1841c8add04828029356d2a8c88e7 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 6 Apr 2015 21:56:31 -0700 +Subject: [PATCH] padsp: Make it compile on musl + +break assumptions on glibc and there is no stat64 on non +glibc C libraries + +See pulseaudio bug + +https://bugs.freedesktop.org/show_bug.cgi?id=85319 + +Upstream-Status: Pending +Signed-off-by: Khem Raj +[Bernd: taken from +http://git.alpinelinux.org/cgit/aports/tree/testing/pulseaudio/0001-padsp-Make-it-compile-on-musl.patch, +adjusted paths.] +Signed-off-by: Bernd Kuhls + +--- + src/utils/padsp.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +diff --git a/src/utils/padsp.c b/src/utils/padsp.c +index e61373c..684721a 100644 +--- a/src/utils/padsp.c ++++ b/src/utils/padsp.c +@@ -2368,7 +2368,7 @@ fail: + return ret; + } + +-#ifdef sun ++#ifndef __GLIBC__ + int ioctl(int fd, int request, ...) { + #else + int ioctl(int fd, unsigned long request, ...) { +@@ -2508,10 +2508,13 @@ int stat(const char *pathname, struct stat *buf) { + + return 0; + } +- + #ifdef HAVE_OPEN64 +- ++#undef stat64 ++#ifdef __GLIBC__ + int stat64(const char *pathname, struct stat64 *buf) { ++#else ++int stat64(const char *pathname, struct stat *buf) { ++#endif + struct stat oldbuf; + int ret; + +@@ -2544,7 +2547,7 @@ int stat64(const char *pathname, struct stat64 *buf) { + + return 0; + } +- ++#undef open64 + int open64(const char *filename, int flags, ...) { + va_list args; + mode_t mode = 0; +@@ -2670,8 +2673,8 @@ FILE* fopen(const char *filename, const char *mode) { + } + + #ifdef HAVE_OPEN64 +- +-FILE *fopen64(const char *filename, const char *mode) { ++#undef fopen64 ++FILE *fopen64(const char *__restrict filename, const char *__restrict mode) { + + debug(DEBUG_LEVEL_VERBOSE, __FILE__": fopen64(%s)\n", filename?filename:"NULL"); + +-- +2.1.4 + diff --git a/buildroot/package/pulseaudio/Config.in b/buildroot/package/pulseaudio/Config.in new file mode 100644 index 0000000..6600006 --- /dev/null +++ b/buildroot/package/pulseaudio/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + bool + default y if BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS || \ + BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_PULSEAUDIO_ENABLE_ATOMIC + bool + select BR2_PACKAGE_LIBATOMIC_OPS if !BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_PULSEAUDIO + bool "pulseaudio" + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBTOOL + select BR2_PACKAGE_LIBSNDFILE + select BR2_PACKAGE_PULSEAUDIO_ENABLE_ATOMIC + select BR2_PACKAGE_SPEEX + help + PulseAudio is a sound system for POSIX OSes, meaning that it + is a proxy for your sound applications. It allows you to do + advanced operations on your sound data as it passes between + your application and your hardware. Things like transferring + the audio to a different machine, changing the sample format + or channel count and mixing several sounds into one are + easily achieved using a sound server. + + http://pulseaudio.org + +if BR2_PACKAGE_PULSEAUDIO + +config BR2_PACKAGE_PULSEAUDIO_DAEMON + bool "start as a system daemon" + help + PulseAudio can be started as a system daemon. This is not the + recommended way of using PulseAudio unless you are building a + headless system. + +endif + +comment "pulseaudio needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/pulseaudio/S50pulseaudio b/buildroot/package/pulseaudio/S50pulseaudio new file mode 100755 index 0000000..c1d8862 --- /dev/null +++ b/buildroot/package/pulseaudio/S50pulseaudio @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Starts pulseaudio. +# + + +start() { + printf "Starting pulseaudio: " + umask 077 + /usr/bin/pulseaudio --system --daemonize + echo "OK" +} +stop() { + printf "Stopping pulseaudio: " + pulseaudio --kill + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/buildroot/package/pulseaudio/pulseaudio.hash b/buildroot/package/pulseaudio/pulseaudio.hash new file mode 100644 index 0000000..7e59afd --- /dev/null +++ b/buildroot/package/pulseaudio/pulseaudio.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/pulseaudio-discuss/2017-September/028733.html +md5 390de38231d5cdd6b43ada8939eb74f1 pulseaudio-11.1.tar.xz +sha1 53bde72b6bfe715c19b1519db8845f7a58346b67 pulseaudio-11.1.tar.xz +# Locally computed +sha256 f2521c525a77166189e3cb9169f75c2ee2b82fa3fcf9476024fbc2c3a6c9cd9e pulseaudio-11.1.tar.xz diff --git a/buildroot/package/pulseaudio/pulseaudio.mk b/buildroot/package/pulseaudio/pulseaudio.mk new file mode 100644 index 0000000..13fcec5 --- /dev/null +++ b/buildroot/package/pulseaudio/pulseaudio.mk @@ -0,0 +1,183 @@ +################################################################################ +# +# pulseaudio +# +################################################################################ + +PULSEAUDIO_VERSION = 11.1 +PULSEAUDIO_SOURCE = pulseaudio-$(PULSEAUDIO_VERSION).tar.xz +PULSEAUDIO_SITE = http://freedesktop.org/software/pulseaudio/releases +PULSEAUDIO_INSTALL_STAGING = YES +PULSEAUDIO_LICENSE = LGPL-2.1+ (specific license for modules, see LICENSE file) +PULSEAUDIO_LICENSE_FILES = LICENSE GPL LGPL +PULSEAUDIO_CONF_OPTS = \ + --disable-default-build-tests \ + --disable-legacy-database-entry-format \ + --disable-manpages + +PULSEAUDIO_DEPENDENCIES = \ + host-pkgconf libtool libsndfile speex host-intltool \ + $(if $(BR2_PACKAGE_LIBGLIB2),libglib2) \ + $(if $(BR2_PACKAGE_AVAHI_DAEMON),avahi) \ + $(if $(BR2_PACKAGE_DBUS),dbus) \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) \ + $(if $(BR2_PACKAGE_FFTW),fftw) \ + $(if $(BR2_PACKAGE_SYSTEMD),systemd) + +ifeq ($(BR2_PACKAGE_LIBSAMPLERATE),y) +PULSEAUDIO_CONF_OPTS += --enable-samplerate +PULSEAUDIO_DEPENDENCIES += libsamplerate +else +PULSEAUDIO_CONF_OPTS += --disable-samplerate +endif + +ifeq ($(BR2_PACKAGE_GDBM),y) +PULSEAUDIO_CONF_OPTS += --with-database=gdbm +PULSEAUDIO_DEPENDENCIES += gdbm +else +PULSEAUDIO_CONF_OPTS += --with-database=simple +endif + +ifeq ($(BR2_PACKAGE_JACK2),y) +PULSEAUDIO_CONF_OPTS += --enable-jack +PULSEAUDIO_DEPENDENCIES += jack2 +else +PULSEAUDIO_CONF_OPTS += --disable-jack +endif + +ifeq ($(BR2_PACKAGE_LIBATOMIC_OPS),y) +PULSEAUDIO_DEPENDENCIES += libatomic_ops +ifeq ($(BR2_sparc_v8)$(BR2_sparc_leon3),y) +PULSEAUDIO_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -DAO_NO_SPARC_V9" +endif +endif + +ifeq ($(BR2_PACKAGE_ORC),y) +PULSEAUDIO_DEPENDENCIES += orc +PULSEAUDIO_CONF_ENV += ORCC=$(HOST_DIR)/bin/orcc +PULSEAUDIO_CONF_OPTS += --enable-orc +else +PULSEAUDIO_CONF_OPTS += --disable-orc +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +PULSEAUDIO_DEPENDENCIES += libcap +PULSEAUDIO_CONF_OPTS += --with-caps +else +PULSEAUDIO_CONF_OPTS += --without-caps +endif + +# gtk3 support needs X11 backend +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +PULSEAUDIO_DEPENDENCIES += libgtk3 +PULSEAUDIO_CONF_OPTS += --enable-gtk3 +else +PULSEAUDIO_CONF_OPTS += --disable-gtk3 +endif + +ifeq ($(BR2_PACKAGE_LIBSOXR),y) +PULSEAUDIO_CONF_OPTS += --with-soxr +PULSEAUDIO_DEPENDENCIES += libsoxr +else +PULSEAUDIO_CONF_OPTS += --without-soxr +endif + +ifeq ($(BR2_PACKAGE_BLUEZ_UTILS)$(BR2_PACKAGE_SBC),yy) +PULSEAUDIO_CONF_OPTS += --enable-bluez4 +PULSEAUDIO_DEPENDENCIES += bluez_utils sbc +else +PULSEAUDIO_CONF_OPTS += --disable-bluez4 +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS)$(BR2_PACKAGE_SBC),yy) +PULSEAUDIO_CONF_OPTS += --enable-bluez5 +PULSEAUDIO_DEPENDENCIES += bluez5_utils sbc +else +PULSEAUDIO_CONF_OPTS += --disable-bluez5 +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +PULSEAUDIO_CONF_OPTS += --enable-udev +PULSEAUDIO_DEPENDENCIES += udev +else +PULSEAUDIO_CONF_OPTS += --disable-udev +endif + +ifeq ($(BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING),y) +PULSEAUDIO_CONF_OPTS += --enable-webrtc-aec +PULSEAUDIO_DEPENDENCIES += webrtc-audio-processing +else +PULSEAUDIO_CONF_OPTS += --disable-webrtc-aec +endif + +# neon intrinsics not available with float-abi=soft +ifeq ($(BR2_ARM_SOFT_FLOAT),) +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +PULSEAUDIO_USE_NEON = y +endif +endif + +ifeq ($(PULSEAUDIO_USE_NEON),y) +PULSEAUDIO_CONF_OPTS += --enable-neon-opt=yes +else +PULSEAUDIO_CONF_OPTS += --enable-neon-opt=no +endif + +# pulseaudio alsa backend needs pcm/mixer apis +ifeq ($(BR2_PACKAGE_ALSA_LIB_PCM)$(BR2_PACKAGE_ALSA_LIB_MIXER),yy) +PULSEAUDIO_DEPENDENCIES += alsa-lib +PULSEAUDIO_CONF_OPTS += --enable-alsa +else +PULSEAUDIO_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_LIBXCB)$(BR2_PACKAGE_XLIB_LIBSM)$(BR2_PACKAGE_XLIB_LIBXTST),yyy) +PULSEAUDIO_DEPENDENCIES += libxcb xlib_libSM xlib_libXtst + +# .desktop file generation needs nls support, so fake it for !locale builds +# https://bugs.freedesktop.org/show_bug.cgi?id=54658 +ifeq ($(BR2_SYSTEM_ENABLE_NLS),) +define PULSEAUDIO_FIXUP_DESKTOP_FILES + cp $(@D)/src/daemon/pulseaudio.desktop.in \ + $(@D)/src/daemon/pulseaudio.desktop +endef +PULSEAUDIO_POST_PATCH_HOOKS += PULSEAUDIO_FIXUP_DESKTOP_FILES +endif + +else +PULSEAUDIO_CONF_OPTS += --disable-x11 +endif + +# ConsoleKit module init failure breaks user daemon startup +define PULSEAUDIO_REMOVE_CONSOLE_KIT + rm -f $(TARGET_DIR)/usr/lib/pulse-$(PULSEAUDIO_VERSION)/modules/module-console-kit.so +endef + +define PULSEAUDIO_REMOVE_VALA + rm -rf $(TARGET_DIR)/usr/share/vala +endef + +PULSEAUDIO_POST_INSTALL_TARGET_HOOKS += PULSEAUDIO_REMOVE_VALA \ + PULSEAUDIO_REMOVE_CONSOLE_KIT + +ifeq ($(BR2_PACKAGE_PULSEAUDIO_DAEMON),y) +define PULSEAUDIO_USERS + pulse -1 pulse -1 * /var/run/pulse - audio,pulse-access +endef + +define PULSEAUDIO_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/pulseaudio/S50pulseaudio \ + $(TARGET_DIR)/etc/init.d/S50pulseaudio +endef + +define PULSEAUDIO_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/pulseaudio/pulseaudio.service \ + $(TARGET_DIR)/usr/lib/systemd/system/pulseaudio.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/pulseaudio.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/pulseaudio.service +endef + +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/pulseaudio/pulseaudio.service b/buildroot/package/pulseaudio/pulseaudio.service new file mode 100644 index 0000000..fc82f03 --- /dev/null +++ b/buildroot/package/pulseaudio/pulseaudio.service @@ -0,0 +1,11 @@ +[Unit] +Description=PulseAudio Sound System +After=syslog.target + +[Service] +UMask=077 +ExecStart=/usr/bin/pulseaudio --system --daemonize=no +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/pulseview/Config.in b/buildroot/package/pulseview/Config.in new file mode 100644 index 0000000..301acf7 --- /dev/null +++ b/buildroot/package/pulseview/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_PULSEVIEW + bool "pulseview" + depends on BR2_PACKAGE_QT5 + # libsigrok->libglib2: + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + depends on BR2_INSTALL_LIBSTDCPP + # libsigrok->libzip + depends on !BR2_STATIC_LIBS + # libsigrok + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_PACKAGE_LIBSIGROK + select BR2_PACKAGE_LIBSIGROKCXX + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5BASE_PNG + select BR2_PACKAGE_QT5SVG + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_BOOST_THREAD + select BR2_PACKAGE_BOOST_SERIALIZATION + help + PulseView is a Qt based logic analyzer, oscilloscope + and MSO GUI for sigrok. + + http://sigrok.org/wiki/PulseView + +comment "pulseview needs a toolchain w/ wchar, threads, dynamic library, C++, gcc >= 4.9" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_QT5 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/buildroot/package/pulseview/pulseview.hash b/buildroot/package/pulseview/pulseview.hash new file mode 100644 index 0000000..7883eab --- /dev/null +++ b/buildroot/package/pulseview/pulseview.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 78f8291045c6f65b4827b12e83c8e68cea2d5e7268b15a51aaca9726c8100eb9 pulseview-0.4.0.tar.gz diff --git a/buildroot/package/pulseview/pulseview.mk b/buildroot/package/pulseview/pulseview.mk new file mode 100644 index 0000000..e9bbf4f --- /dev/null +++ b/buildroot/package/pulseview/pulseview.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# pulseview +# +################################################################################ + +PULSEVIEW_VERSION = 0.4.0 +PULSEVIEW_SITE = http://sigrok.org/download/source/pulseview +PULSEVIEW_LICENSE = GPL-3.0+ +PULSEVIEW_LICENSE_FILES = COPYING +PULSEVIEW_DEPENDENCIES = libsigrok qt5base qt5svg boost +PULSEVIEW_CONF_OPTS = -DDISABLE_WERROR=TRUE + +ifeq ($(BR2_PACKAGE_BOOST_TEST),y) +PULSEVIEW_CONF_OPTS += -DENABLE_TESTS=TRUE +else +PULSEVIEW_CONF_OPTS += -DENABLE_TESTS=FALSE +endif + +ifeq ($(BR2_PACKAGE_LIBSIGROKDECODE),y) +PULSEVIEW_CONF_OPTS += -DENABLE_DECODE=TRUE +PULSEVIEW_DEPENDENCIES += libsigrokdecode +else +PULSEVIEW_CONF_OPTS += -DENABLE_DECODE=FALSE +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/pure-ftpd/0001-cross.patch b/buildroot/package/pure-ftpd/0001-cross.patch new file mode 100644 index 0000000..f8b1d81 --- /dev/null +++ b/buildroot/package/pure-ftpd/0001-cross.patch @@ -0,0 +1,25 @@ +Do not include host paths when cross-compiling. + +Signed-off-by: Bernd Kuhls + +diff -uNr pure-ftpd-1.0.36.org/configure pure-ftpd-1.0.36/configure +--- pure-ftpd-1.0.36.org/configure 2012-03-16 06:29:23.000000000 +0100 ++++ pure-ftpd-1.0.36/configure 2014-09-28 19:55:56.650529713 +0200 +@@ -6319,17 +6319,6 @@ + + + +-if test -d /usr/local/include; then +- CPPFLAGS="$CPPFLAGS -I/usr/local/include" +-fi +- +-if test -d /usr/kerberos/include; then +- CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include" +-fi +- +-if test -d /usr/local/lib; then +- LDFLAGS="$LDFLAGS -L/usr/local/lib" +-fi + + if uname | fgrep SunOS > /dev/null 2> /dev/null ; then + CPPFLAGS="$CPPFLAGS -D_XPG4_2=1" diff --git a/buildroot/package/pure-ftpd/Config.in b/buildroot/package/pure-ftpd/Config.in new file mode 100644 index 0000000..c060102 --- /dev/null +++ b/buildroot/package/pure-ftpd/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_PURE_FTPD + bool "pure-ftpd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Pure-FTPd is a free (BSD), secure, production-quality and + standard- conformant FTP server. It doesn't provide useless + bells and whistles, but focuses on efficiency and ease of + use. It provides simple answers to common needs, plus unique + useful features for personal users as well as hosting + providers. + + http://www.pureftpd.org + +if BR2_PACKAGE_PURE_FTPD + +config BR2_PACKAGE_PURE_FTPD_FTPWHO + bool "ftpwho" + help + Enable the pure-ftpd command. Pure-ftpwho shows current + Pure-ftpd client sessions. Only the system administrator + may run this. Output can be text (default), HTML, XML data + and parser-optimized. + +config BR2_PACKAGE_PURE_FTPD_QUOTAS + bool "quotas" + help + Enable virtual quotas. With virtual quotas, restrictions can + be placed on the maximum number of files a user can store in + his account. In addition, restrictions can also be placed on + the total size. + +config BR2_PACKAGE_PURE_FTPD_UPLOADSCRIPT + bool "uploadscript" + help + Enable pure-upload script. Automatically run an external + program after a successful upload. + +endif diff --git a/buildroot/package/pure-ftpd/pure-ftpd.hash b/buildroot/package/pure-ftpd/pure-ftpd.hash new file mode 100644 index 0000000..f01da51 --- /dev/null +++ b/buildroot/package/pure-ftpd/pure-ftpd.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature +sha256 cb1b695e779a06e42d62d7a1a428d2f605d621dfd5afe4e192b5f9fc4e343692 pure-ftpd-1.0.47.tar.bz2 +sha256 e724ba991d8efa4c963e84ec31314c532dab00ac455ef77020fe60e78177bf23 COPYING diff --git a/buildroot/package/pure-ftpd/pure-ftpd.mk b/buildroot/package/pure-ftpd/pure-ftpd.mk new file mode 100644 index 0000000..457e67e --- /dev/null +++ b/buildroot/package/pure-ftpd/pure-ftpd.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# pure-ftpd +# +################################################################################ + +PURE_FTPD_VERSION = 1.0.47 +PURE_FTPD_SITE = https://download.pureftpd.org/pub/pure-ftpd/releases +PURE_FTPD_SOURCE = pure-ftpd-$(PURE_FTPD_VERSION).tar.bz2 +PURE_FTPD_LICENSE = ISC +PURE_FTPD_LICENSE_FILES = COPYING +PURE_FTPD_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +PURE_FTPD_CONF_OPTS = \ + --with-altlog \ + --with-puredb \ + --with-rfc2640 + +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +PURE_FTPD_DEPENDENCIES += elfutils +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +PURE_FTPD_CONF_OPTS += --with-capabilities +PURE_FTPD_DEPENDENCIES += libcap +else +PURE_FTPD_CONF_OPTS += --without-capabilities +endif + +ifeq ($(BR2_PACKAGE_LIBSODIUM),y) +PURE_FTPD_DEPENDENCIES += libsodium +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +PURE_FTPD_CONF_OPTS += --with-tls +PURE_FTPD_DEPENDENCIES += openssl +ifeq ($(BR2_STATIC_LIBS),y) +PURE_FTPD_CONF_ENV += LIBS='-lssl -lcrypto -lz' +endif +else +PURE_FTPD_CONF_OPTS += --without-tls +endif + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +PURE_FTPD_CONF_ENV += ax_cv_check_cflags___fPIE=no ax_cv_check_ldflags___fPIE=no +endif + +ifeq ($(BR2_PACKAGE_PURE_FTPD_FTPWHO),y) +PURE_FTPD_CONF_OPTS += --with-ftpwho +endif + +ifeq ($(BR2_PACKAGE_PURE_FTPD_QUOTAS),y) +PURE_FTPD_CONF_OPTS += --with-quotas +endif + +ifeq ($(BR2_PACKAGE_PURE_FTPD_UPLOADSCRIPT),y) +PURE_FTPD_CONF_OPTS += --with-uploadscript +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/putty/Config.in b/buildroot/package/putty/Config.in new file mode 100644 index 0000000..cd8b3bb --- /dev/null +++ b/buildroot/package/putty/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PUTTY + bool "putty" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + help + PuTTY is a free SSH and Telnet client. Without GTK2 + activated, only the commandline tools plink, pscp, psftp, + and puttygen are built; enable GTK2 for the graphical + client. + + http://www.chiark.greenend.org.uk/~sgtatham/putty/ + +comment "putty needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/putty/putty.hash b/buildroot/package/putty/putty.hash new file mode 100644 index 0000000..e052710 --- /dev/null +++ b/buildroot/package/putty/putty.hash @@ -0,0 +1,3 @@ +# Hashes from: http://the.earth.li/~sgtatham/putty/0.70/{sha256,sha512}sums +sha256 bb8aa49d6e96c5a8e18a057f3150a1695ed99a24eef699e783651d1f24e7b0be putty-0.70.tar.gz +sha512 2aaf4fa2b4ad2d82eb5cdc4419ade79e0c5d8bd3c093db92b3c048e6107f85a5f1647f9d8203cda0906ce2b926725a75319f981cb32e6f1ebf50b1f738564fed putty-0.70.tar.gz diff --git a/buildroot/package/putty/putty.mk b/buildroot/package/putty/putty.mk new file mode 100644 index 0000000..52f2d4c --- /dev/null +++ b/buildroot/package/putty/putty.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# putty +# +################################################################################ + +PUTTY_VERSION = 0.70 +PUTTY_SITE = http://the.earth.li/~sgtatham/putty/$(PUTTY_VERSION) +PUTTY_SUBDIR = unix +PUTTY_LICENSE = MIT +PUTTY_LICENSE_FILES = LICENCE +PUTTY_CONF_OPTS = --disable-gtktest +PUTTY_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -Wno-error" + +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +PUTTY_CONF_OPTS += --with-gtk=2 +PUTTY_DEPENDENCIES += libgtk2 +else +PUTTY_CONF_OPTS += --without-gtk +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/pv/Config.in b/buildroot/package/pv/Config.in new file mode 100644 index 0000000..671f78e --- /dev/null +++ b/buildroot/package/pv/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PV + bool "pv" + help + Pipe Viewer - is a terminal-based tool for + monitoring the progress of data through a + pipeline. + + http://www.ivarch.com/programs/pv.shtml diff --git a/buildroot/package/pv/pv.hash b/buildroot/package/pv/pv.hash new file mode 100644 index 0000000..291d6dd --- /dev/null +++ b/buildroot/package/pv/pv.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 0ece824e0da27b384d11d1de371f20cafac465e038041adab57fcf4b5036ef8d pv-1.6.0.tar.bz2 diff --git a/buildroot/package/pv/pv.mk b/buildroot/package/pv/pv.mk new file mode 100644 index 0000000..0ef5a6f --- /dev/null +++ b/buildroot/package/pv/pv.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# pv +# +################################################################################ + +PV_VERSION = 1.6.0 +PV_SOURCE = pv-$(PV_VERSION).tar.bz2 +PV_SITE = http://www.ivarch.com/programs/sources +PV_LICENSE = Artistic-2.0 +PV_LICENSE_FILES = doc/COPYING +PV_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +# --relax linker option is enabled by default on sparc/sparc64 +# architectures, and it can't be used together with -r option, so +# disable it. +ifeq ($(BR2_sparc)$(BR2_sparc64),y) +PV_LDFLAGS = "-Wl,--no-relax" +endif + +# While 'pv' uses autoconf, it does not use automake for its +# makefiles. It uses $(LD) $(LDFLAGS) to achieve partial linking, but +# using 'ld' directly doesn't work well with some toolchain +# configuration, as the ld default emulation may not necessarily be +# the correct one. By passing the below values for LD and LDFLAGS, we +# ensure that 'gcc' is used to do these partial linking steps. +PV_MAKE_OPTS = \ + LD="$(TARGET_CC)" \ + LDFLAGS="-Wl,-r -nostdlib $(PV_LDFLAGS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/pwgen/Config.in b/buildroot/package/pwgen/Config.in new file mode 100644 index 0000000..441605c --- /dev/null +++ b/buildroot/package/pwgen/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PWGEN + bool "pwgen" + help + Pwgen is a small, GPL'ed password generator which creates + passwords which can be easily memorized by a human. + + http://sourceforge.net/projects/pwgen/ diff --git a/buildroot/package/pwgen/Config.in.host b/buildroot/package/pwgen/Config.in.host new file mode 100644 index 0000000..20b55f3 --- /dev/null +++ b/buildroot/package/pwgen/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_PWGEN + bool "host pwgen" + help + Pwgen is a small, GPL'ed password generator which creates + passwords which can be easily memorized by a human. + + http://sourceforge.net/projects/pwgen/ diff --git a/buildroot/package/pwgen/pwgen.hash b/buildroot/package/pwgen/pwgen.hash new file mode 100644 index 0000000..2997ed3 --- /dev/null +++ b/buildroot/package/pwgen/pwgen.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/pwgen/files/pwgen/2.07/ +md5 910b1008cdd86445e9e01305d21ee4c5 pwgen-2.07.tar.gz +sha1 51180f9cd5530d79eea18b2443780dec4ec5ea43 pwgen-2.07.tar.gz diff --git a/buildroot/package/pwgen/pwgen.mk b/buildroot/package/pwgen/pwgen.mk new file mode 100644 index 0000000..653adb8 --- /dev/null +++ b/buildroot/package/pwgen/pwgen.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# pwgen +# +################################################################################ + +PWGEN_VERSION = 2.07 +PWGEN_SITE = http://downloads.sourceforge.net/project/pwgen/pwgen/$(PWGEN_VERSION) +PWGEN_LICENSE = GPL-2.0 +PWGEN_LICENSE_FILES = debian/copyright + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/python-aiocoap/Config.in b/buildroot/package/python-aiocoap/Config.in new file mode 100644 index 0000000..cf5ca4e --- /dev/null +++ b/buildroot/package/python-aiocoap/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_AIOCOAP + bool "python-aiocoap" + depends on BR2_PACKAGE_PYTHON3 + help + Python CoAP library. + + https://github.com/chrysn/aiocoap diff --git a/buildroot/package/python-aiocoap/python-aiocoap.hash b/buildroot/package/python-aiocoap/python-aiocoap.hash new file mode 100644 index 0000000..6df482a --- /dev/null +++ b/buildroot/package/python-aiocoap/python-aiocoap.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/aiocoap/json, sha256 locally computed +md5 f5fed00767b4197f2fbaa0ff95cbbf78 aiocoap-0.3.tar.gz +sha256 402d4151db6d8d0b1d66af5b6e10e0de1521decbf12140637e5b8d2aa9c5aef6 aiocoap-0.3.tar.gz +sha256 2bb211d412a6bfa4b2a9cf01123c7fe90e5e6185938896e23ab07b84f8494180 LICENSE diff --git a/buildroot/package/python-aiocoap/python-aiocoap.mk b/buildroot/package/python-aiocoap/python-aiocoap.mk new file mode 100644 index 0000000..a2db70b --- /dev/null +++ b/buildroot/package/python-aiocoap/python-aiocoap.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-aiocoap +# +################################################################################ + +PYTHON_AIOCOAP_VERSION = 0.3 +PYTHON_AIOCOAP_SOURCE = aiocoap-$(PYTHON_AIOCOAP_VERSION).tar.gz +PYTHON_AIOCOAP_SITE = https://pypi.python.org/packages/9c/f6/d839e4b14258d76e74a39810829c13f8dd31de2bfe0915579b2a609d1bbe +PYTHON_AIOCOAP_SETUP_TYPE = setuptools +PYTHON_AIOCOAP_LICENSE = MIT +PYTHON_AIOCOAP_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-alsaaudio/Config.in b/buildroot/package/python-alsaaudio/Config.in new file mode 100644 index 0000000..60523bf --- /dev/null +++ b/buildroot/package/python-alsaaudio/Config.in @@ -0,0 +1,14 @@ +comment "python-alsaaudio needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_PYTHON_ALSAAUDIO + bool "python-alsaaudio" + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_PCM + select BR2_PACKAGE_ALSA_LIB_MIXER + help + The PyAlsaAudio package contains bindings for the ALSA sound + API. + + http://larsimmisch.github.io/pyalsaaudio/ diff --git a/buildroot/package/python-alsaaudio/python-alsaaudio.hash b/buildroot/package/python-alsaaudio/python-alsaaudio.hash new file mode 100644 index 0000000..92277ec --- /dev/null +++ b/buildroot/package/python-alsaaudio/python-alsaaudio.hash @@ -0,0 +1,4 @@ +# From https://pypi.python.org/pypi?:action=show_md5&digest=1f22415a3d8da4b303182ad81c2d062e +md5 1f22415a3d8da4b303182ad81c2d062e pyalsaaudio-0.8.2.tar.gz +# Locally calculated +sha256 b6df486f1c4035041a5f3800496b86c64e48e4a7d47f94dcbca11b0187aa3a15 pyalsaaudio-0.8.2.tar.gz diff --git a/buildroot/package/python-alsaaudio/python-alsaaudio.mk b/buildroot/package/python-alsaaudio/python-alsaaudio.mk new file mode 100644 index 0000000..73a7e74 --- /dev/null +++ b/buildroot/package/python-alsaaudio/python-alsaaudio.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-alsaaudio +# +################################################################################ + +PYTHON_ALSAAUDIO_VERSION = 0.8.2 +PYTHON_ALSAAUDIO_SOURCE = pyalsaaudio-$(PYTHON_ALSAAUDIO_VERSION).tar.gz +PYTHON_ALSAAUDIO_SITE = https://pypi.python.org/packages/source/p/pyalsaaudio +PYTHON_ALSAAUDIO_SETUP_TYPE = distutils +PYTHON_ALSAAUDIO_LICENSE = Python-2.0 +PYTHON_ALSAAUDIO_LICENSE_FILES = LICENSE +PYTHON_ALSAAUDIO_DEPENDENCIES = alsa-lib + +$(eval $(python-package)) diff --git a/buildroot/package/python-argh/Config.in b/buildroot/package/python-argh/Config.in new file mode 100644 index 0000000..5da6625 --- /dev/null +++ b/buildroot/package/python-argh/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ARGH + bool "python-argh" + help + An unobtrusive argparse wrapper with natural syntax. + + http://github.com/neithere/argh/ diff --git a/buildroot/package/python-argh/python-argh.hash b/buildroot/package/python-argh/python-argh.hash new file mode 100644 index 0000000..6f19de1 --- /dev/null +++ b/buildroot/package/python-argh/python-argh.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/argh/json, sha256 locally computed +md5 edda25f3f0164a963dd89c0e3c619973 argh-0.26.2.tar.gz +sha256 e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65 argh-0.26.2.tar.gz diff --git a/buildroot/package/python-argh/python-argh.mk b/buildroot/package/python-argh/python-argh.mk new file mode 100644 index 0000000..ac51417 --- /dev/null +++ b/buildroot/package/python-argh/python-argh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-argh +# +################################################################################ + +PYTHON_ARGH_VERSION = 0.26.2 +PYTHON_ARGH_SOURCE = argh-$(PYTHON_ARGH_VERSION).tar.gz +PYTHON_ARGH_SITE = https://pypi.python.org/packages/e3/75/1183b5d1663a66aebb2c184e0398724b624cecd4f4b679cb6e25de97ed15 +PYTHON_ARGH_SETUP_TYPE = setuptools +PYTHON_ARGH_LICENSE = LGPL-3.0+ +PYTHON_ARGH_LICENSE_FILES = README.rst + +$(eval $(python-package)) diff --git a/buildroot/package/python-arrow/Config.in b/buildroot/package/python-arrow/Config.in new file mode 100644 index 0000000..2449568 --- /dev/null +++ b/buildroot/package/python-arrow/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_ARROW + bool "python-arrow" + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + help + Better dates and times for Python. + + https://github.com/crsmithdev/arrow/ diff --git a/buildroot/package/python-arrow/python-arrow.hash b/buildroot/package/python-arrow/python-arrow.hash new file mode 100644 index 0000000..0b5076a --- /dev/null +++ b/buildroot/package/python-arrow/python-arrow.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/arrow/json, sha256 locally computed +md5 5d00592200050ad58284d45a4ee147c6 arrow-0.10.0.tar.gz +sha256 805906f09445afc1f0fc80187db8fe07670e3b25cdafa09b8d8ac264a8c0c722 arrow-0.10.0.tar.gz diff --git a/buildroot/package/python-arrow/python-arrow.mk b/buildroot/package/python-arrow/python-arrow.mk new file mode 100644 index 0000000..6e2e331 --- /dev/null +++ b/buildroot/package/python-arrow/python-arrow.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-arrow +# +################################################################################ + +PYTHON_ARROW_VERSION = 0.10.0 +PYTHON_ARROW_SOURCE = arrow-$(PYTHON_ARROW_VERSION).tar.gz +PYTHON_ARROW_SITE = https://pypi.python.org/packages/54/db/76459c4dd3561bbe682619a5c576ff30c42e37c2e01900ed30a501957150 +PYTHON_ARROW_SETUP_TYPE = setuptools +PYTHON_ARROW_LICENSE = Apache-2.0 +PYTHON_ARROW_LICENSE_FILES = LICENSE docs/_themes/COPYING.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-asn1crypto/Config.in b/buildroot/package/python-asn1crypto/Config.in new file mode 100644 index 0000000..fe3b5eb --- /dev/null +++ b/buildroot/package/python-asn1crypto/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_ASN1CRYPTO + bool "python-asn1crypto" + help + Fast ASN.1 parser and serializer with definitions for + private keys, public keys, certificates, CRL, OCSP, CMS, + PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP. + + https://github.com/wbond/asn1crypto diff --git a/buildroot/package/python-asn1crypto/python-asn1crypto.hash b/buildroot/package/python-asn1crypto/python-asn1crypto.hash new file mode 100644 index 0000000..ec5d7cf --- /dev/null +++ b/buildroot/package/python-asn1crypto/python-asn1crypto.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/asn1crypto/json, sha256 locally computed +md5 74a8b9402625b38ef19cf3fa69ef8470 asn1crypto-0.22.0.tar.gz +sha256 cbbadd640d3165ab24b06ef25d1dca09a3441611ac15f6a6b452474fdf0aed1a asn1crypto-0.22.0.tar.gz diff --git a/buildroot/package/python-asn1crypto/python-asn1crypto.mk b/buildroot/package/python-asn1crypto/python-asn1crypto.mk new file mode 100644 index 0000000..681dfd5 --- /dev/null +++ b/buildroot/package/python-asn1crypto/python-asn1crypto.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-asn1crypto +# +################################################################################ + +PYTHON_ASN1CRYPTO_VERSION = 0.22.0 +PYTHON_ASN1CRYPTO_SOURCE = asn1crypto-$(PYTHON_ASN1CRYPTO_VERSION).tar.gz +PYTHON_ASN1CRYPTO_SITE = https://pypi.python.org/packages/67/14/5d66588868c4304f804ebaff9397255f6ec5559e46724c2496e0f26e68d6 +PYTHON_ASN1CRYPTO_SETUP_TYPE = setuptools +PYTHON_ASN1CRYPTO_LICENSE = MIT + +$(eval $(python-package)) diff --git a/buildroot/package/python-attrs/Config.in b/buildroot/package/python-attrs/Config.in new file mode 100644 index 0000000..fb0ab24 --- /dev/null +++ b/buildroot/package/python-attrs/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_ATTRS + bool "python-attrs" + help + attrs is the Python package that will bring back the joy of + writing classes by relieving you from the drudgery of + implementing object protocols (aka dunder methods). + + https://attrs.readthedocs.io/ diff --git a/buildroot/package/python-attrs/python-attrs.hash b/buildroot/package/python-attrs/python-attrs.hash new file mode 100644 index 0000000..4434fa1 --- /dev/null +++ b/buildroot/package/python-attrs/python-attrs.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/attrs/json, sha256 locally computed +md5 3b7136a570f3ff8a4ff42e7360073f9f attrs-17.2.0.tar.gz +sha256 5d4d1b99f94d69338f485984127e4473b3ab9e20f43821b0e546cc3b2302fd11 attrs-17.2.0.tar.gz diff --git a/buildroot/package/python-attrs/python-attrs.mk b/buildroot/package/python-attrs/python-attrs.mk new file mode 100644 index 0000000..c963371 --- /dev/null +++ b/buildroot/package/python-attrs/python-attrs.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-attrs +# +################################################################################ + +PYTHON_ATTRS_VERSION = 17.2.0 +PYTHON_ATTRS_SOURCE = attrs-$(PYTHON_ATTRS_VERSION).tar.gz +PYTHON_ATTRS_SITE = https://pypi.python.org/packages/be/41/e909cb6d901e9689da947419505cc7fb7d242a08a62ee221fce6a009a523 +PYTHON_ATTRS_SETUP_TYPE = setuptools +PYTHON_ATTRS_LICENSE = MIT +PYTHON_ATTRS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-autobahn/Config.in b/buildroot/package/python-autobahn/Config.in new file mode 100644 index 0000000..7e1429c --- /dev/null +++ b/buildroot/package/python-autobahn/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_AUTOBAHN + bool "python-autobahn" + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_TXAIO # runtime + help + WebSocket client Hhh server library, WAMP real-time + framework. + + https://pypi.python.org/pypi/autobahn diff --git a/buildroot/package/python-autobahn/python-autobahn.hash b/buildroot/package/python-autobahn/python-autobahn.hash new file mode 100644 index 0000000..32c9916 --- /dev/null +++ b/buildroot/package/python-autobahn/python-autobahn.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/autobahn/json, sha256 locally computed +md5 f8c8d74bf73644719b751e6fb11dc4a3 autobahn-17.10.1.tar.gz +sha256 8cf74132a18da149c5ea3dcbb5e055f6f4fe5a0238b33258d29e89bd276a8078 autobahn-17.10.1.tar.gz +sha256 0387eefce570453daaa60633f28676003731eeca28b2d0a0071c628e3a0004ef LICENSE diff --git a/buildroot/package/python-autobahn/python-autobahn.mk b/buildroot/package/python-autobahn/python-autobahn.mk new file mode 100644 index 0000000..3ba91c5 --- /dev/null +++ b/buildroot/package/python-autobahn/python-autobahn.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-autobahn +# +################################################################################ + +PYTHON_AUTOBAHN_VERSION = 17.10.1 +PYTHON_AUTOBAHN_SOURCE = autobahn-$(PYTHON_AUTOBAHN_VERSION).tar.gz +PYTHON_AUTOBAHN_SITE = https://pypi.python.org/packages/e4/2e/01a64212b1eb580d601fa20f146c962235e3493795f46e3b254597ec635d +PYTHON_AUTOBAHN_LICENSE = MIT +PYTHON_AUTOBAHN_LICENSE_FILES = LICENSE +PYTHON_AUTOBAHN_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-automat/Config.in b/buildroot/package/python-automat/Config.in new file mode 100644 index 0000000..ee02d22 --- /dev/null +++ b/buildroot/package/python-automat/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_AUTOMAT + bool "python-automat" + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Self-service finite-state machines for the programmer on the + go. + + https://github.com/glyph/Automat diff --git a/buildroot/package/python-automat/python-automat.hash b/buildroot/package/python-automat/python-automat.hash new file mode 100644 index 0000000..c0e3505 --- /dev/null +++ b/buildroot/package/python-automat/python-automat.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/automat/json, sha256 locally computed +md5 ad7bba58d262d8956d732330cb5ef53d Automat-0.6.0.tar.gz +sha256 3c1fd04ecf08ac87b4dd3feae409542e9bf7827257097b2b6ed5692f69d6f6a8 Automat-0.6.0.tar.gz diff --git a/buildroot/package/python-automat/python-automat.mk b/buildroot/package/python-automat/python-automat.mk new file mode 100644 index 0000000..96a4f51 --- /dev/null +++ b/buildroot/package/python-automat/python-automat.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-automat +# +################################################################################ + +PYTHON_AUTOMAT_VERSION = 0.6.0 +PYTHON_AUTOMAT_SOURCE = Automat-$(PYTHON_AUTOMAT_VERSION).tar.gz +PYTHON_AUTOMAT_SITE = https://pypi.python.org/packages/de/05/b8e453085cf8a7f27bb1226596f4ccf5cc9e758377d60284f990bbdc592c +PYTHON_AUTOMAT_SETUP_TYPE = setuptools +PYTHON_AUTOMAT_LICENSE = MIT +PYTHON_AUTOMAT_LICENSE_FILES = LICENSE +PYTHON_AUTOMAT_DEPENDENCIES = host-python-m2r host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/buildroot/package/python-babel/Config.in b/buildroot/package/python-babel/Config.in new file mode 100644 index 0000000..1a22b83 --- /dev/null +++ b/buildroot/package/python-babel/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_BABEL + bool "python-babel" + select BR2_PACKAGE_PYTHON_PYTZ # runtime + help + A collection of tools for internationalizing Python + applications. + + http://babel.pocoo.org/en/latest/ diff --git a/buildroot/package/python-babel/python-babel.hash b/buildroot/package/python-babel/python-babel.hash new file mode 100644 index 0000000..4d75367 --- /dev/null +++ b/buildroot/package/python-babel/python-babel.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/Babel/json, sha256 locally computed +md5 afa20bc55b0e991833030129ad498f35 Babel-2.3.4.tar.gz +sha256 c535c4403802f6eb38173cd4863e419e2274921a01a8aad8a5b497c131c62875 Babel-2.3.4.tar.gz diff --git a/buildroot/package/python-babel/python-babel.mk b/buildroot/package/python-babel/python-babel.mk new file mode 100644 index 0000000..d9bd0f0 --- /dev/null +++ b/buildroot/package/python-babel/python-babel.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-babel +# +################################################################################ + +PYTHON_BABEL_VERSION = 2.3.4 +PYTHON_BABEL_SOURCE = Babel-$(PYTHON_BABEL_VERSION).tar.gz +PYTHON_BABEL_SITE = https://pypi.python.org/packages/6e/96/ba2a2462ed25ca0e651fb7b66e7080f5315f91425a07ea5b34d7c870c114 +PYTHON_BABEL_SETUP_TYPE = setuptools +PYTHON_BABEL_LICENSE = BSD-3-Clause +PYTHON_BABEL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-backports-abc/Config.in b/buildroot/package/python-backports-abc/Config.in new file mode 100644 index 0000000..4356627 --- /dev/null +++ b/buildroot/package/python-backports-abc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_BACKPORTS_ABC + bool "python-backports-abc" + depends on BR2_PACKAGE_PYTHON + help + A backport of recent additions to the 'collections.abc' + module. + + https://pypi.python.org/pypi/backports_abc diff --git a/buildroot/package/python-backports-abc/python-backports-abc.hash b/buildroot/package/python-backports-abc/python-backports-abc.hash new file mode 100644 index 0000000..f638527 --- /dev/null +++ b/buildroot/package/python-backports-abc/python-backports-abc.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/backports_abc/json, sha256 locally computed +md5 7d1936ec183a3586290adf60f6f96764 backports_abc-0.5.tar.gz +sha256 033be54514a03e255df75c5aee8f9e672f663f93abb723444caec8fe43437bde backports_abc-0.5.tar.gz diff --git a/buildroot/package/python-backports-abc/python-backports-abc.mk b/buildroot/package/python-backports-abc/python-backports-abc.mk new file mode 100644 index 0000000..66cea17 --- /dev/null +++ b/buildroot/package/python-backports-abc/python-backports-abc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-backports-abc +# +################################################################################ + +PYTHON_BACKPORTS_ABC_VERSION = 0.5 +PYTHON_BACKPORTS_ABC_SOURCE = backports_abc-$(PYTHON_BACKPORTS_ABC_VERSION).tar.gz +PYTHON_BACKPORTS_ABC_SITE = https://pypi.python.org/packages/68/3c/1317a9113c377d1e33711ca8de1e80afbaf4a3c950dd0edfaf61f9bfe6d8 +PYTHON_BACKPORTS_ABC_LICENSE = Python-2.0 +PYTHON_BACKPORTS_ABC_LICENSE_FILES = LICENSE +PYTHON_BACKPORTS_ABC_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-backports-shutil-get-terminal-size/Config.in b/buildroot/package/python-backports-shutil-get-terminal-size/Config.in new file mode 100644 index 0000000..392e05a --- /dev/null +++ b/buildroot/package/python-backports-shutil-get-terminal-size/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE + bool "python-backports-shutil-get-terminal-size" + depends on BR2_PACKAGE_PYTHON + help + A backport of the get_terminal_size function from Python + 3.3's shutil. + + https://pypi.python.org/pypi/backports.shutil_get_terminal_size diff --git a/buildroot/package/python-backports-shutil-get-terminal-size/python-backports-shutil-get-terminal-size.hash b/buildroot/package/python-backports-shutil-get-terminal-size/python-backports-shutil-get-terminal-size.hash new file mode 100644 index 0000000..c1b65e5 --- /dev/null +++ b/buildroot/package/python-backports-shutil-get-terminal-size/python-backports-shutil-get-terminal-size.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/backports.shutil_get_terminal_size/json, sha256 locally computed +md5 03267762480bd86b50580dc19dff3c66 backports.shutil_get_terminal_size-1.0.0.tar.gz +sha256 713e7a8228ae80341c70586d1cc0a8caa5207346927e23d09dcbcaf18eadec80 backports.shutil_get_terminal_size-1.0.0.tar.gz diff --git a/buildroot/package/python-backports-shutil-get-terminal-size/python-backports-shutil-get-terminal-size.mk b/buildroot/package/python-backports-shutil-get-terminal-size/python-backports-shutil-get-terminal-size.mk new file mode 100644 index 0000000..7c24b19 --- /dev/null +++ b/buildroot/package/python-backports-shutil-get-terminal-size/python-backports-shutil-get-terminal-size.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-backports-shutil-get-terminal-size +# +################################################################################ + +PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_VERSION = 1.0.0 +PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_SOURCE = backports.shutil_get_terminal_size-$(PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_VERSION).tar.gz +PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_SITE = https://pypi.python.org/packages/ec/9c/368086faa9c016efce5da3e0e13ba392c9db79e3ab740b763fe28620b18b +PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_SETUP_TYPE = setuptools +PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_LICENSE = MIT +PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-bcrypt/Config.in b/buildroot/package/python-bcrypt/Config.in new file mode 100644 index 0000000..4fa6c31 --- /dev/null +++ b/buildroot/package/python-bcrypt/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_BCRYPT + bool "python-bcrypt" + select BR2_PACKAGE_PYTHON_CFFI # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Modern password hashing for your software and your servers. + + https://github.com/pyca/bcrypt/ diff --git a/buildroot/package/python-bcrypt/python-bcrypt.hash b/buildroot/package/python-bcrypt/python-bcrypt.hash new file mode 100644 index 0000000..574cbe1 --- /dev/null +++ b/buildroot/package/python-bcrypt/python-bcrypt.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/bcrypt/json, sha256 locally computed +md5 20da8b40790caad99c4086dba533154b bcrypt-3.1.3.tar.gz +sha256 6645c8d0ad845308de3eb9be98b6fd22a46ec5412bfc664a423e411cdd8f5488 bcrypt-3.1.3.tar.gz diff --git a/buildroot/package/python-bcrypt/python-bcrypt.mk b/buildroot/package/python-bcrypt/python-bcrypt.mk new file mode 100644 index 0000000..aa6f981 --- /dev/null +++ b/buildroot/package/python-bcrypt/python-bcrypt.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-bcrypt +# +################################################################################ + +PYTHON_BCRYPT_VERSION = 3.1.3 +PYTHON_BCRYPT_SOURCE = bcrypt-$(PYTHON_BCRYPT_VERSION).tar.gz +PYTHON_BCRYPT_SITE = https://pypi.python.org/packages/58/e9/6d7f1d883d8c5876470b5d187d72c04f2a9954d61e71e7eb5d2ea2a50442 +PYTHON_BCRYPT_SETUP_TYPE = setuptools +PYTHON_BCRYPT_LICENSE = Apache-2.0 +PYTHON_BCRYPT_LICENSE_FILES = LICENSE +PYTHON_BCRYPT_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) diff --git a/buildroot/package/python-beautifulsoup4/Config.in b/buildroot/package/python-beautifulsoup4/Config.in new file mode 100644 index 0000000..76f6d94 --- /dev/null +++ b/buildroot/package/python-beautifulsoup4/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4 + bool "python-beautifulsoup4" + help + Beautiful Soup is a Python library for pulling data out of + HTML and XML files. It works with your favorite parser to + provide idiomatic ways of navigating, searching, and + modifying the parse tree. It commonly saves programmers + hours or days of work. + + http://www.crummy.com/software/BeautifulSoup/bs4/ diff --git a/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.hash b/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.hash new file mode 100644 index 0000000..dd0c3e4 --- /dev/null +++ b/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/beautifulsoup4/json, sha256 locally computed +md5 937e0df0d699a1237646f38fd567f0c6 beautifulsoup4-4.5.3.tar.gz +sha256 b21ca09366fa596043578fd4188b052b46634d22059e68dd0077d9ee77e08a3e beautifulsoup4-4.5.3.tar.gz diff --git a/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.mk b/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.mk new file mode 100644 index 0000000..ccec30f --- /dev/null +++ b/buildroot/package/python-beautifulsoup4/python-beautifulsoup4.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-beautifulsoup4 +# +################################################################################ + +PYTHON_BEAUTIFULSOUP4_VERSION = 4.5.3 +PYTHON_BEAUTIFULSOUP4_SOURCE = beautifulsoup4-$(PYTHON_BEAUTIFULSOUP4_VERSION).tar.gz +PYTHON_BEAUTIFULSOUP4_SITE = https://pypi.python.org/packages/9b/a5/c6fa2d08e6c671103f9508816588e0fb9cec40444e8e72993f3d4c325936 +PYTHON_BEAUTIFULSOUP4_SETUP_TYPE = setuptools +PYTHON_BEAUTIFULSOUP4_LICENSE = MIT +PYTHON_BEAUTIFULSOUP4_LICENSE_FILES = COPYING.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-bitstring/Config.in b/buildroot/package/python-bitstring/Config.in new file mode 100644 index 0000000..93d7682 --- /dev/null +++ b/buildroot/package/python-bitstring/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_BITSTRING + bool "python-bitstring" + help + Simple construction, analysis and modification of binary data. + + https://github.com/scott-griffiths/bitstring diff --git a/buildroot/package/python-bitstring/python-bitstring.hash b/buildroot/package/python-bitstring/python-bitstring.hash new file mode 100644 index 0000000..52630e0 --- /dev/null +++ b/buildroot/package/python-bitstring/python-bitstring.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 b769620c1b52d6c1548c6c4f055613f4eee3120ed8a5cff4ba4ffbbc8a582286 bitstring-3.1.5.tar.gz diff --git a/buildroot/package/python-bitstring/python-bitstring.mk b/buildroot/package/python-bitstring/python-bitstring.mk new file mode 100644 index 0000000..2c8fb99 --- /dev/null +++ b/buildroot/package/python-bitstring/python-bitstring.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-bitstring +# +################################################################################ + +PYTHON_BITSTRING_VERSION = 3.1.5 +PYTHON_BITSTRING_SOURCE = bitstring-$(PYTHON_BITSTRING_VERSION).tar.gz +PYTHON_BITSTRING_SITE = https://github.com/scott-griffiths/bitstring/archive +PYTHON_BITSTRING_SETUP_TYPE = distutils +PYTHON_BITSTRING_LICENSE = MIT +PYTHON_BITSTRING_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-bottle/Config.in b/buildroot/package/python-bottle/Config.in new file mode 100644 index 0000000..5e37f6e --- /dev/null +++ b/buildroot/package/python-bottle/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_BOTTLE + bool "python-bottle" + help + Bottle is a fast, simple and lightweight WSGI micro + web-framework for Python. It is distributed as a single file + module and has no dependencies other than the Python + Standard Library. + + http://bottlepy.org diff --git a/buildroot/package/python-bottle/python-bottle.hash b/buildroot/package/python-bottle/python-bottle.hash new file mode 100644 index 0000000..3006c16 --- /dev/null +++ b/buildroot/package/python-bottle/python-bottle.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/bottle/json, sha256 locally computed +md5 d2fe1b48c1d49217e78bf326b1cad437 bottle-0.12.13.tar.gz +sha256 39b751aee0b167be8dffb63ca81b735bbf1dd0905b3bc42761efedee8f123355 bottle-0.12.13.tar.gz diff --git a/buildroot/package/python-bottle/python-bottle.mk b/buildroot/package/python-bottle/python-bottle.mk new file mode 100644 index 0000000..6f071f6 --- /dev/null +++ b/buildroot/package/python-bottle/python-bottle.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-bottle +# +################################################################################ + +PYTHON_BOTTLE_VERSION = 0.12.13 +PYTHON_BOTTLE_SOURCE = bottle-$(PYTHON_BOTTLE_VERSION).tar.gz +PYTHON_BOTTLE_SITE = https://pypi.python.org/packages/bd/99/04dc59ced52a8261ee0f965a8968717a255ea84a36013e527944dbf3468c +PYTHON_BOTTLE_LICENSE = MIT +# README.rst refers to the file "LICENSE" but it's not included +PYTHON_BOTTLE_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-can/Config.in b/buildroot/package/python-can/Config.in new file mode 100644 index 0000000..94b16ab --- /dev/null +++ b/buildroot/package/python-can/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_CAN + bool "python-can" + select BR2_PACKAGE_PYTHON_SQLITE if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SQLITE if BR2_PACKAGE_PYTHON3 # runtime + help + This module provides controller area network support for + Python. + + https://bitbucket.org/hardbyte/python-can diff --git a/buildroot/package/python-can/python-can.hash b/buildroot/package/python-can/python-can.hash new file mode 100644 index 0000000..bd19d19 --- /dev/null +++ b/buildroot/package/python-can/python-can.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/python-can/json, sha256 locally computed +md5 f653aecf8b9034bbba32cc04ca6a7b6d python-can-1.5.2.tar.gz +sha256 edabb426e6cd11c2dc7a98980340135aa0eb02143b0d51bf14e3e6178c131cc3 python-can-1.5.2.tar.gz diff --git a/buildroot/package/python-can/python-can.mk b/buildroot/package/python-can/python-can.mk new file mode 100644 index 0000000..a271bae --- /dev/null +++ b/buildroot/package/python-can/python-can.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-can +# +################################################################################ + +PYTHON_CAN_VERSION = 1.5.2 +PYTHON_CAN_SITE = https://pypi.python.org/packages/a1/b1/80f023e2b728c7ebccbf989aec777f3add3dd4cee650573ce5d38132a07c +PYTHON_CAN_LICENSE = LGPL-3.0 +PYTHON_CAN_LICENSE_FILES = LICENSE.txt +PYTHON_CAN_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-cbor/Config.in b/buildroot/package/python-cbor/Config.in new file mode 100644 index 0000000..403fab3 --- /dev/null +++ b/buildroot/package/python-cbor/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CBOR + bool "python-cbor" + help + RFC 7049 - Concise Binary Object Representation. + + https://pypi.python.org/pypi/cbor diff --git a/buildroot/package/python-cbor/python-cbor.hash b/buildroot/package/python-cbor/python-cbor.hash new file mode 100644 index 0000000..a47607d --- /dev/null +++ b/buildroot/package/python-cbor/python-cbor.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/cbor/json, sha256 locally computed +md5 22b03b59784fd78cb6c27aa498af0db6 cbor-1.0.0.tar.gz +sha256 13225a262ddf5615cbd9fd55a76a0d53069d18b07d2e9f19c39e6acb8609bbb6 cbor-1.0.0.tar.gz diff --git a/buildroot/package/python-cbor/python-cbor.mk b/buildroot/package/python-cbor/python-cbor.mk new file mode 100644 index 0000000..32ca459 --- /dev/null +++ b/buildroot/package/python-cbor/python-cbor.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-cbor +# +################################################################################ + +PYTHON_CBOR_VERSION = 1.0.0 +PYTHON_CBOR_SOURCE = cbor-$(PYTHON_CBOR_VERSION).tar.gz +PYTHON_CBOR_SITE = https://pypi.python.org/packages/9b/99/01c6a987c920500189eb74a291bd3a388e6c7cf85736bb6b066d9833315e +PYTHON_CBOR_LICENSE = Apache +PYTHON_CBOR_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-certifi/Config.in b/buildroot/package/python-certifi/Config.in new file mode 100644 index 0000000..9390b4f --- /dev/null +++ b/buildroot/package/python-certifi/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CERTIFI + bool "python-certifi" + help + Python package for providing Mozilla's CA Bundle. + + https://pypi.python.org/pypi/certifi diff --git a/buildroot/package/python-certifi/python-certifi.hash b/buildroot/package/python-certifi/python-certifi.hash new file mode 100644 index 0000000..e3e2f07 --- /dev/null +++ b/buildroot/package/python-certifi/python-certifi.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/certifi/json, sha256 locally computed +md5 068fd5c3c690ae47504b3e0bf4e56c4c certifi-2018.1.18.tar.gz +sha256 edbc3f203427eef571f79a7692bb160a2b0f7ccaa31953e99bd17e307cf63f7d certifi-2018.1.18.tar.gz +sha256 6a70a4bf6b010016d59a64b8ae4ad8dc7f5ef16f1fb453cc2ecd771c5a341131 LICENSE diff --git a/buildroot/package/python-certifi/python-certifi.mk b/buildroot/package/python-certifi/python-certifi.mk new file mode 100644 index 0000000..084893f --- /dev/null +++ b/buildroot/package/python-certifi/python-certifi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-certifi +# +################################################################################ + +PYTHON_CERTIFI_VERSION = 2018.1.18 +PYTHON_CERTIFI_SOURCE = certifi-$(PYTHON_CERTIFI_VERSION).tar.gz +PYTHON_CERTIFI_SITE = https://pypi.python.org/packages/15/d4/2f888fc463d516ff7bf2379a4e9a552fef7f22a94147655d9b1097108248 +PYTHON_CERTIFI_SETUP_TYPE = setuptools +PYTHON_CERTIFI_LICENSE = ISC (Python code), MPL-2.0 (cacert.pem) +PYTHON_CERTIFI_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-cffi/Config.in b/buildroot/package/python-cffi/Config.in new file mode 100644 index 0000000..bc9f6a2 --- /dev/null +++ b/buildroot/package/python-cffi/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_CFFI + bool "python-cffi" + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_PYTHON_PYCPARSER # runtime + help + This is the Foreign Function Interface for Python calling C + code. The aim of this project is to provide a convenient + and reliable way of calling C code from Python. + + https://pypi.python.org/pypi/cffi diff --git a/buildroot/package/python-cffi/python-cffi.hash b/buildroot/package/python-cffi/python-cffi.hash new file mode 100644 index 0000000..3d4387f --- /dev/null +++ b/buildroot/package/python-cffi/python-cffi.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/cffi/json, sha256 locally computed +md5 a731487324b501c8295221b629d3f5f3 cffi-1.11.2.tar.gz +sha256 ab87dd91c0c4073758d07334c1e5f712ce8fe48f007b86f8238773963ee700a6 cffi-1.11.2.tar.gz +sha256 04b80f5b077bbed68808cfebadeb5e3523f2a8c9a96495c587bd96df1eac2a33 LICENSE diff --git a/buildroot/package/python-cffi/python-cffi.mk b/buildroot/package/python-cffi/python-cffi.mk new file mode 100644 index 0000000..1ef8391 --- /dev/null +++ b/buildroot/package/python-cffi/python-cffi.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# python-cffi +# +################################################################################ + +PYTHON_CFFI_VERSION = 1.11.2 +PYTHON_CFFI_SOURCE = cffi-$(PYTHON_CFFI_VERSION).tar.gz +PYTHON_CFFI_SITE = https://pypi.python.org/packages/c9/70/89b68b6600d479034276fed316e14b9107d50a62f5627da37fafe083fde3 +PYTHON_CFFI_SETUP_TYPE = setuptools +PYTHON_CFFI_DEPENDENCIES = host-pkgconf libffi +PYTHON_CFFI_LICENSE = MIT +PYTHON_CFFI_LICENSE_FILES = LICENSE + +# This host package uses pkg-config to find libffi, so we have to +# provide the proper hints for pkg-config to behave properly for host +# packages. +HOST_PYTHON_CFFI_ENV = \ + PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 \ + PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_SYSROOT_DIR="/" \ + PKG_CONFIG_LIBDIR="$(HOST_DIR)/lib/pkgconfig:$(HOST_DIR)/share/pkgconfig" +HOST_PYTHON_CFFI_DEPENDENCIES = host-pkgconf host-python-pycparser host-libffi + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-characteristic/Config.in b/buildroot/package/python-characteristic/Config.in new file mode 100644 index 0000000..1226fa8 --- /dev/null +++ b/buildroot/package/python-characteristic/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_CHARACTERISTIC + bool "python-characteristic" + help + Python attributes without boilerplate. + + https://pypi.python.org/pypi/characteristic diff --git a/buildroot/package/python-characteristic/python-characteristic.hash b/buildroot/package/python-characteristic/python-characteristic.hash new file mode 100644 index 0000000..41dc18c --- /dev/null +++ b/buildroot/package/python-characteristic/python-characteristic.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=b249368dd021fde1c06b4802867c0913, sha256 locally computed. +md5 b249368dd021fde1c06b4802867c0913 characteristic-14.3.0.tar.gz +sha256 ded68d4e424115ed44e5c83c2a901a0b6157a959079d7591d92106ffd3ada380 characteristic-14.3.0.tar.gz diff --git a/buildroot/package/python-characteristic/python-characteristic.mk b/buildroot/package/python-characteristic/python-characteristic.mk new file mode 100644 index 0000000..7ea8d95 --- /dev/null +++ b/buildroot/package/python-characteristic/python-characteristic.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-characteristic +# +################################################################################ + +PYTHON_CHARACTERISTIC_VERSION = 14.3.0 +PYTHON_CHARACTERISTIC_SOURCE = characteristic-$(PYTHON_CHARACTERISTIC_VERSION).tar.gz +PYTHON_CHARACTERISTIC_SITE = https://pypi.python.org/packages/source/c/characteristic +PYTHON_CHARACTERISTIC_LICENSE = MIT +PYTHON_CHARACTERISTIC_LICENSE_FILES = LICENSE +PYTHON_CHARACTERISTIC_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-chardet/Config.in b/buildroot/package/python-chardet/Config.in new file mode 100644 index 0000000..869888c --- /dev/null +++ b/buildroot/package/python-chardet/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CHARDET + bool "python-chardet" + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + Universal encoding detector for Python 2 and 3. + + https://github.com/chardet/chardet diff --git a/buildroot/package/python-chardet/python-chardet.hash b/buildroot/package/python-chardet/python-chardet.hash new file mode 100644 index 0000000..799713c --- /dev/null +++ b/buildroot/package/python-chardet/python-chardet.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/chardet/json, sha256 locally computed +md5 7dd1ba7f9c77e32351b0a0cfacf4055c chardet-3.0.4.tar.gz +sha256 84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae chardet-3.0.4.tar.gz diff --git a/buildroot/package/python-chardet/python-chardet.mk b/buildroot/package/python-chardet/python-chardet.mk new file mode 100644 index 0000000..5161098 --- /dev/null +++ b/buildroot/package/python-chardet/python-chardet.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-chardet +# +################################################################################ + +PYTHON_CHARDET_VERSION = 3.0.4 +PYTHON_CHARDET_SOURCE = chardet-$(PYTHON_CHARDET_VERSION).tar.gz +PYTHON_CHARDET_SITE = https://pypi.python.org/packages/fc/bb/a5768c230f9ddb03acc9ef3f0d4a3cf93462473795d18e9535498c8f929d +PYTHON_CHARDET_SETUP_TYPE = setuptools +PYTHON_CHARDET_LICENSE = LGPL-2.1+ +PYTHON_CHARDET_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-cheetah/Config.in b/buildroot/package/python-cheetah/Config.in new file mode 100644 index 0000000..12749a1 --- /dev/null +++ b/buildroot/package/python-cheetah/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_CHEETAH + bool "python-cheetah" + depends on BR2_PACKAGE_PYTHON + help + Cheetah is an open source template engine and code + generation tool. + + It can be used standalone or combined with other tools and + frameworks. Web development is its principle use, but + Cheetah is very flexible and is also being used to generate + C++ game code, Java, sql, form emails and even Python code. + + https://pypi.python.org/pypi/Cheetah/ diff --git a/buildroot/package/python-cheetah/python-cheetah.hash b/buildroot/package/python-cheetah/python-cheetah.hash new file mode 100644 index 0000000..477ee54 --- /dev/null +++ b/buildroot/package/python-cheetah/python-cheetah.hash @@ -0,0 +1,4 @@ +# From https://pypi.python.org/pypi/Cheetah/2.4.4 +md5 853917116e731afbc8c8a43c37e6ddba Cheetah-2.4.4.tar.gz +# Calculated based on the hash above +sha256 be308229f0c1e5e5af4f27d7ee06d90bb19e6af3059794e5fd536a6f29a9b550 Cheetah-2.4.4.tar.gz diff --git a/buildroot/package/python-cheetah/python-cheetah.mk b/buildroot/package/python-cheetah/python-cheetah.mk new file mode 100644 index 0000000..eee87fc --- /dev/null +++ b/buildroot/package/python-cheetah/python-cheetah.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# python-cheetah +# +################################################################################ + +PYTHON_CHEETAH_VERSION = 2.4.4 +PYTHON_CHEETAH_SOURCE = Cheetah-$(PYTHON_CHEETAH_VERSION).tar.gz +PYTHON_CHEETAH_SITE = https://pypi.python.org/packages/source/C/Cheetah +PYTHON_CHEETAH_LICENSE = MIT +PYTHON_CHEETAH_SETUP_TYPE = setuptools + +HOST_PYTHON_CHEETAH_NEEDS_HOST_PYTHON = python2 + +# The dependency on host-python-markdown is needed to prevent +# setuptools from downloading markdown if it is not installed yet. +HOST_PYTHON_CHEETAH_DEPENDENCIES = host-python-markdown + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-cheroot/Config.in b/buildroot/package/python-cheroot/Config.in new file mode 100644 index 0000000..bb85f7b --- /dev/null +++ b/buildroot/package/python-cheroot/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_CHEROOT + bool "python-cheroot" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Cheroot is the high-performance, pure-Python + HTTP server used by CherryPy. + + https://github.com/cherrypy/cheroot diff --git a/buildroot/package/python-cheroot/python-cheroot.hash b/buildroot/package/python-cheroot/python-cheroot.hash new file mode 100644 index 0000000..664ad10 --- /dev/null +++ b/buildroot/package/python-cheroot/python-cheroot.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/Cheroot/json, sha256 locally computed +md5 d256a0ccd28c3426a7764868e98a9020 cheroot-5.10.0.tar.gz +sha256 a408f1b80a3f93a3b49fc330f68eea40d8d30b9b07084f374607d1a5cc2e824f cheroot-5.10.0.tar.gz +sha256 02f4efe6e7dcd218c33cfa065c0552de983b5ad563b053e97697c5abd2ef14f9 LICENSE diff --git a/buildroot/package/python-cheroot/python-cheroot.mk b/buildroot/package/python-cheroot/python-cheroot.mk new file mode 100644 index 0000000..07775e5 --- /dev/null +++ b/buildroot/package/python-cheroot/python-cheroot.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-cheroot +# +################################################################################ + +PYTHON_CHEROOT_VERSION = 5.10.0 +PYTHON_CHEROOT_SOURCE = cheroot-$(PYTHON_CHEROOT_VERSION).tar.gz +PYTHON_CHEROOT_SITE = https://pypi.python.org/packages/14/dc/afc41e7f7e797973808d8520e6aef21c4efd00550aa32f5b726327d36be0 +PYTHON_CHEROOT_LICENSE = BSD-3-Clause +PYTHON_CHEROOT_LICENSE_FILES = LICENSE +PYTHON_CHEROOT_SETUP_TYPE = setuptools +PYTHON_CHEROOT_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/buildroot/package/python-cherrypy/Config.in b/buildroot/package/python-cherrypy/Config.in new file mode 100644 index 0000000..622dd1f --- /dev/null +++ b/buildroot/package/python-cherrypy/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_CHERRYPY + bool "python-cherrypy" + select BR2_PACKAGE_PYTHON_CHEROOT # runtime + select BR2_PACKAGE_PYTHON_JARACO_CLASSES # runtime + select BR2_PACKAGE_PYTHON_PORTEND # runtime + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + help + A minimalist web framework + + http://www.cherrypy.org diff --git a/buildroot/package/python-cherrypy/python-cherrypy.hash b/buildroot/package/python-cherrypy/python-cherrypy.hash new file mode 100644 index 0000000..d8f97af --- /dev/null +++ b/buildroot/package/python-cherrypy/python-cherrypy.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/CherryPy/json, sha256 locally computed +md5 e21fd0c5706504a8f26c46d808a14255 CherryPy-12.0.1.tar.gz +sha256 6a3a90a43b1e05bd4634c60acfdcf34efe74f9f8746aca14dbe95a9b69db30ea CherryPy-12.0.1.tar.gz +sha256 02f4efe6e7dcd218c33cfa065c0552de983b5ad563b053e97697c5abd2ef14f9 LICENSE.md diff --git a/buildroot/package/python-cherrypy/python-cherrypy.mk b/buildroot/package/python-cherrypy/python-cherrypy.mk new file mode 100644 index 0000000..72b17bc --- /dev/null +++ b/buildroot/package/python-cherrypy/python-cherrypy.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-cherrypy +# +################################################################################ + +PYTHON_CHERRYPY_VERSION = 12.0.1 +PYTHON_CHERRYPY_SOURCE = CherryPy-$(PYTHON_CHERRYPY_VERSION).tar.gz +PYTHON_CHERRYPY_SITE = https://pypi.python.org/packages/be/d8/a8ef56bfe1c39d466b8d55b496b64459cc43dec71361d88edf904901637f +PYTHON_CHERRYPY_LICENSE = BSD-3-Clause +PYTHON_CHERRYPY_LICENSE_FILES = LICENSE.md +PYTHON_CHERRYPY_SETUP_TYPE = setuptools +PYTHON_CHERRYPY_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/buildroot/package/python-click/Config.in b/buildroot/package/python-click/Config.in new file mode 100644 index 0000000..c026998 --- /dev/null +++ b/buildroot/package/python-click/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CLICK + bool "python-click" + help + A simple wrapper around optparse for powerful command line + utilities. + + https://pypi.python.org/pypi/click diff --git a/buildroot/package/python-click/python-click.hash b/buildroot/package/python-click/python-click.hash new file mode 100644 index 0000000..cae03c7 --- /dev/null +++ b/buildroot/package/python-click/python-click.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/click/json, sha256 locally computed +md5 fc4cc00c4863833230d3af92af48abd4 click-6.7.tar.gz +sha256 f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b click-6.7.tar.gz diff --git a/buildroot/package/python-click/python-click.mk b/buildroot/package/python-click/python-click.mk new file mode 100644 index 0000000..e6df636 --- /dev/null +++ b/buildroot/package/python-click/python-click.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-click +# +################################################################################ + +PYTHON_CLICK_VERSION = 6.7 +PYTHON_CLICK_SOURCE = click-$(PYTHON_CLICK_VERSION).tar.gz +PYTHON_CLICK_SITE = https://pypi.python.org/packages/95/d9/c3336b6b5711c3ab9d1d3a80f1a3e2afeb9d8c02a7166462f6cc96570897 +PYTHON_CLICK_LICENSE = BSD-3-Clause +PYTHON_CLICK_LICENSE_FILES = LICENSE +PYTHON_CLICK_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-coherence/0001-Fix-twisted-detection.patch b/buildroot/package/python-coherence/0001-Fix-twisted-detection.patch new file mode 100644 index 0000000..c0e51b9 --- /dev/null +++ b/buildroot/package/python-coherence/0001-Fix-twisted-detection.patch @@ -0,0 +1,29 @@ +From 3cf8d89cbb44b5c7a0693d0b5d665e68acc3927c Mon Sep 17 00:00:00 2001 +From: Thomas Klausner +Date: Tue, 10 May 2016 00:14:33 +0200 +Subject: [PATCH] Fix twisted detection. + +Addresses https://github.com/coherence-project/Coherence/issues/25 + +Signed-off-by: Thomas Klausner +Signed-off-by: Yegor Yefremov +--- + coherence/__init__.py | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/coherence/__init__.py b/coherence/__init__.py +index 2e4e8f1..4c4d73d 100644 +--- a/coherence/__init__.py ++++ b/coherence/__init__.py +@@ -24,8 +24,6 @@ try: + if twisted_version < Version("twisted", 2, 5, 0): + raise ImportError("Twisted >= 2.5 is required. Please install it.") + +- if twisted_web_version < Version("twisted.web", 2, 5, 0): +- raise ImportError("Twisted.Web >= 2.5 is required. Please install it") + except ImportError, exc: + # log error to stderr, might be useful for debugging purpose + for arg in exc.args: +-- +2.8.1 + diff --git a/buildroot/package/python-coherence/Config.in b/buildroot/package/python-coherence/Config.in new file mode 100644 index 0000000..71f79f4 --- /dev/null +++ b/buildroot/package/python-coherence/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_COHERENCE + bool "python-coherence" + depends on BR2_PACKAGE_PYTHON + depends on BR2_INSTALL_LIBSTDCPP # python-pyasn + select BR2_PACKAGE_PYTHON_TWISTED + select BR2_PACKAGE_PYTHON_ZOPE_INTERFACE + select BR2_PACKAGE_PYTHON_PYASN + help + A DLNA/UPnP Media Server and Framework for the Digital Living. + + http://coherence-project.org/ + +comment "python-coherence needs a toolchain w/ C++" + depends on BR2_PACKAGE_PYTHON + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-coherence/python-coherence.hash b/buildroot/package/python-coherence/python-coherence.hash new file mode 100644 index 0000000..533d0c6 --- /dev/null +++ b/buildroot/package/python-coherence/python-coherence.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 97c8b700b3fe73d48eacb259008f410d6567e5d7d1b8e96386f8cc2422135ca5 python-coherence-b7856985fd496689ca1f9024925ae737297c00d1.tar.gz diff --git a/buildroot/package/python-coherence/python-coherence.mk b/buildroot/package/python-coherence/python-coherence.mk new file mode 100644 index 0000000..24da7f7 --- /dev/null +++ b/buildroot/package/python-coherence/python-coherence.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-coherence +# +################################################################################ + +PYTHON_COHERENCE_VERSION = b7856985fd496689ca1f9024925ae737297c00d1 +PYTHON_COHERENCE_SITE = $(call github,coherence-project,Coherence,$(PYTHON_COHERENCE_VERSION)) +PYTHON_COHERENCE_SETUP_TYPE = setuptools +PYTHON_COHERENCE_LICENSE = MIT +PYTHON_COHERENCE_LICENSE_FILES = LICENCE + +$(eval $(python-package)) diff --git a/buildroot/package/python-configobj/Config.in b/buildroot/package/python-configobj/Config.in new file mode 100644 index 0000000..fc57e26 --- /dev/null +++ b/buildroot/package/python-configobj/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_CONFIGOBJ + bool "python-configobj" + depends on BR2_PACKAGE_PYTHON + help + ConfigObj is a simple but powerful config file reader and + writer: an ini file round tripper. Its main feature is that + it is very easy to use, with a straightforward programmer's + interface and a simple syntax for config files. + + http://www.voidspace.org.uk/python/configobj.html diff --git a/buildroot/package/python-configobj/python-configobj.hash b/buildroot/package/python-configobj/python-configobj.hash new file mode 100644 index 0000000..d43c453 --- /dev/null +++ b/buildroot/package/python-configobj/python-configobj.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/configobj/json, sha256 locally computed +md5 e472a3a1c2a67bb0ec9b5d54c13a47d6 configobj-5.0.6.tar.gz +sha256 a2f5650770e1c87fb335af19a9b7eb73fc05ccf22144eb68db7d00cd2bcb0902 configobj-5.0.6.tar.gz diff --git a/buildroot/package/python-configobj/python-configobj.mk b/buildroot/package/python-configobj/python-configobj.mk new file mode 100644 index 0000000..9e281d2 --- /dev/null +++ b/buildroot/package/python-configobj/python-configobj.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-configobj +# +################################################################################ + +PYTHON_CONFIGOBJ_VERSION = 5.0.6 +PYTHON_CONFIGOBJ_SOURCE = configobj-$(PYTHON_CONFIGOBJ_VERSION).tar.gz +PYTHON_CONFIGOBJ_SITE = https://pypi.python.org/packages/64/61/079eb60459c44929e684fa7d9e2fdca403f67d64dd9dbac27296be2e0fab +PYTHON_CONFIGOBJ_LICENSE = BSD-3-Clause +# License only mentioned in the source +PYTHON_CONFIGOBJ_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-configshell-fb/Config.in b/buildroot/package/python-configshell-fb/Config.in new file mode 100644 index 0000000..90a295f --- /dev/null +++ b/buildroot/package/python-configshell-fb/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_CONFIGSHELL_FB + bool "python-configshell-fb" + select BR2_PACKAGE_PYTHON_PYPARSING + select BR2_PACKAGE_PYTHON3_READLINE if BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_READLINE if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_SIX + select BR2_PACKAGE_PYTHON_URWID + help + configshell-fb is a Python library that provides a framework + for building simple but nice CLI-based applications. + + https://github.com/open-iscsi/configshell-fb diff --git a/buildroot/package/python-configshell-fb/python-configshell-fb.hash b/buildroot/package/python-configshell-fb/python-configshell-fb.hash new file mode 100644 index 0000000..7bf4d34 --- /dev/null +++ b/buildroot/package/python-configshell-fb/python-configshell-fb.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 3685446d6ee02881930bb2fdc5fdd254938da66ce9843a5b3676c4246b058e4b python-configshell-fb-v1.1.fb18.tar.gz diff --git a/buildroot/package/python-configshell-fb/python-configshell-fb.mk b/buildroot/package/python-configshell-fb/python-configshell-fb.mk new file mode 100644 index 0000000..a2e9cae --- /dev/null +++ b/buildroot/package/python-configshell-fb/python-configshell-fb.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-configshell-fb +# +################################################################################ + +# When upgrading the version, be sure to also upgrade python-rtslib-fb +# and targetcli-fb at the same time. +PYTHON_CONFIGSHELL_FB_VERSION = v1.1.fb18 +PYTHON_CONFIGSHELL_FB_SITE = $(call github,open-iscsi,configshell-fb,$(PYTHON_CONFIGSHELL_FB_VERSION)) +PYTHON_CONFIGSHELL_FB_LICENSE = Apache-2.0 +PYTHON_CONFIGSHELL_FB_LICENSE_FILES = COPYING +PYTHON_CONFIGSHELL_FB_SETUP_TYPE = setuptools +PYTHON_CONFIGSHELL_FB_DEPENDENCIES = python-pyparsing python-six python-urwid + +$(eval $(python-package)) diff --git a/buildroot/package/python-constantly/Config.in b/buildroot/package/python-constantly/Config.in new file mode 100644 index 0000000..13bb2e8 --- /dev/null +++ b/buildroot/package/python-constantly/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_CONSTANTLY + bool "python-constantly" + help + A library that provides symbolic constant support. It + includes collections and constants with text, numeric, + and bit flag values. + + https://github.com/twisted/constantly diff --git a/buildroot/package/python-constantly/python-constantly.hash b/buildroot/package/python-constantly/python-constantly.hash new file mode 100644 index 0000000..fb77877 --- /dev/null +++ b/buildroot/package/python-constantly/python-constantly.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/constantly/json, sha256 locally computed +md5 f0762f083d83039758e53f8cf0086eef constantly-15.1.0.tar.gz +sha256 586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35 constantly-15.1.0.tar.gz diff --git a/buildroot/package/python-constantly/python-constantly.mk b/buildroot/package/python-constantly/python-constantly.mk new file mode 100644 index 0000000..783d198 --- /dev/null +++ b/buildroot/package/python-constantly/python-constantly.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-constantly +# +################################################################################ + +PYTHON_CONSTANTLY_VERSION = 15.1.0 +PYTHON_CONSTANTLY_SOURCE = constantly-$(PYTHON_CONSTANTLY_VERSION).tar.gz +PYTHON_CONSTANTLY_SITE = https://pypi.python.org/packages/95/f1/207a0a478c4bb34b1b49d5915e2db574cadc415c9ac3a7ef17e29b2e8951 +PYTHON_CONSTANTLY_SETUP_TYPE = setuptools +PYTHON_CONSTANTLY_LICENSE = MIT +PYTHON_CONSTANTLY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-couchdb/Config.in b/buildroot/package/python-couchdb/Config.in new file mode 100644 index 0000000..9156883 --- /dev/null +++ b/buildroot/package/python-couchdb/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_COUCHDB + bool "python-couchdb" + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime + help + Python client library for working with CouchDB. + + https://github.com/djc/couchdb-python/ diff --git a/buildroot/package/python-couchdb/python-couchdb.hash b/buildroot/package/python-couchdb/python-couchdb.hash new file mode 100644 index 0000000..f9422a8 --- /dev/null +++ b/buildroot/package/python-couchdb/python-couchdb.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/couchdb/json, sha256 locally computed +md5 2ed5ad2a477fd3cb472ed6dc5a381ff3 CouchDB-1.1.tar.gz +sha256 9503ea413956c33b5e2af248235afb5e0f011f33f816a32e872f8ff9b0a0e710 CouchDB-1.1.tar.gz diff --git a/buildroot/package/python-couchdb/python-couchdb.mk b/buildroot/package/python-couchdb/python-couchdb.mk new file mode 100644 index 0000000..afdbdf5 --- /dev/null +++ b/buildroot/package/python-couchdb/python-couchdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-couchdb +# +################################################################################ + +PYTHON_COUCHDB_VERSION = 1.1 +PYTHON_COUCHDB_SOURCE = CouchDB-$(PYTHON_COUCHDB_VERSION).tar.gz +PYTHON_COUCHDB_SITE = https://pypi.python.org/packages/9a/e8/c3c8da6d00145aaca07f2b784794917613dad26532068da4e8392dc48d7f +PYTHON_COUCHDB_SETUP_TYPE = setuptools +PYTHON_COUCHDB_LICENSE = BSD-3-Clause +PYTHON_COUCHDB_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/buildroot/package/python-crc16/Config.in b/buildroot/package/python-crc16/Config.in new file mode 100644 index 0000000..3fd8da7 --- /dev/null +++ b/buildroot/package/python-crc16/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_CRC16 + bool "python-crc16" + depends on BR2_PACKAGE_PYTHON + help + This library calculates only CRC16 (16-bit codes) and the + only supported variant at the moment is CRC-CCITT (XModem). + CRC is a way of detecting accidental changes in data storage + or transmission. There are many variants of CRC and CRC16, + in particular. + + http://pycrc16.googlecode.com/ diff --git a/buildroot/package/python-crc16/python-crc16.hash b/buildroot/package/python-crc16/python-crc16.hash new file mode 100644 index 0000000..81b39a0 --- /dev/null +++ b/buildroot/package/python-crc16/python-crc16.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 10aeda70fbe8b284874b3b1b8f74b9c1f6d5e8dee20ac8f9d5bc49f45f12a42a python-crc16-0.1.1.tar.gz diff --git a/buildroot/package/python-crc16/python-crc16.mk b/buildroot/package/python-crc16/python-crc16.mk new file mode 100644 index 0000000..9809f1e --- /dev/null +++ b/buildroot/package/python-crc16/python-crc16.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-crc16 +# +################################################################################ + +PYTHON_CRC16_VERSION = 0.1.1 +PYTHON_CRC16_SITE = $(call github,gennady,pycrc16,v$(PYTHON_CRC16_VERSION)) +PYTHON_CRC16_LICENSE = LGPL-3.0+ +PYTHON_CRC16_LICENSE_FILES = COPYING.txt +PYTHON_CRC16_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-crcmod/Config.in b/buildroot/package/python-crcmod/Config.in new file mode 100644 index 0000000..289a3ae --- /dev/null +++ b/buildroot/package/python-crcmod/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_CRCMOD + bool "python-crcmod" + help + The software in this package is a Python module for + generating objects that compute the Cyclic Redundancy + Check (CRC). + + http://crcmod.sourceforge.net/ diff --git a/buildroot/package/python-crcmod/python-crcmod.hash b/buildroot/package/python-crcmod/python-crcmod.hash new file mode 100644 index 0000000..7ce549c --- /dev/null +++ b/buildroot/package/python-crcmod/python-crcmod.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/crcmod/json, sha256 locally computed +md5 2d5b92117d958dcead94f9e17f54cd32 crcmod-1.7.tar.gz +sha256 dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e crcmod-1.7.tar.gz diff --git a/buildroot/package/python-crcmod/python-crcmod.mk b/buildroot/package/python-crcmod/python-crcmod.mk new file mode 100644 index 0000000..1aab7f5 --- /dev/null +++ b/buildroot/package/python-crcmod/python-crcmod.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-crcmod +# +################################################################################ + +PYTHON_CRCMOD_VERSION = 1.7 +PYTHON_CRCMOD_SOURCE = crcmod-$(PYTHON_CRCMOD_VERSION).tar.gz +PYTHON_CRCMOD_SITE = https://pypi.python.org/packages/6b/b0/e595ce2a2527e169c3bcd6c33d2473c1918e0b7f6826a043ca1245dd4e5b +PYTHON_CRCMOD_SETUP_TYPE = distutils +PYTHON_CRCMOD_LICENSE = MIT +PYTHON_CRCMOD_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-crossbar/0001-Avoid-intentional-syntax-error.patch b/buildroot/package/python-crossbar/0001-Avoid-intentional-syntax-error.patch new file mode 100644 index 0000000..fb8e4a2 --- /dev/null +++ b/buildroot/package/python-crossbar/0001-Avoid-intentional-syntax-error.patch @@ -0,0 +1,29 @@ +From 9ab2b96c2ee679c6dcb387174be211db5d70fa97 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 1 May 2016 15:35:32 +0200 +Subject: [PATCH] Avoid intentional syntax error + +This file has an intentional syntax error, meant to validate QA, but +it breaks byte compilation of this package. + +Issue reported upstream: +https://github.com/crossbario/crossbar/issues/750. + +Signed-off-by: Thomas Petazzoni +--- + crossbar/worker/test/examples/syntaxerror.py | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/crossbar/worker/test/examples/syntaxerror.py b/crossbar/worker/test/examples/syntaxerror.py +index a5947cc..585c995 100644 +--- a/crossbar/worker/test/examples/syntaxerror.py ++++ b/crossbar/worker/test/examples/syntaxerror.py +@@ -29,5 +29,3 @@ + ##################################################################################### + + from __future__ import absolute_import, division +- +-class # noqa +-- +2.7.4 + diff --git a/buildroot/package/python-crossbar/0002-Rework-runtime-dependencies.patch b/buildroot/package/python-crossbar/0002-Rework-runtime-dependencies.patch new file mode 100644 index 0000000..784949c --- /dev/null +++ b/buildroot/package/python-crossbar/0002-Rework-runtime-dependencies.patch @@ -0,0 +1,37 @@ +From 35b2ec4949c9d1620551efde6e3a3d46323899de Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Thu, 11 Jan 2018 10:13:18 +0100 +Subject: [PATCH 2/2] Rework runtime dependencies + +Add python version requirement to Python2 only packages like +ipaddress and enum34 and bump h2 package version. + +Signed-off-by: Yegor Yefremov +--- + requirements-min.txt | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/requirements-min.txt b/requirements-min.txt +index 83820cd1..5cbf35c4 100644 +--- a/requirements-min.txt ++++ b/requirements-min.txt +@@ -2,7 +2,7 @@ click>=6.6 + setuptools>=28.3.0 + zope.interface>=4.3.2 + Twisted>=17.1.0 +-h2<3.0.0 ++h2>=3.0.1 + priority>=1.3.0 + txaio>=2.8.0 + autobahn>=17.6.2 +@@ -33,5 +33,5 @@ bitstring>=3.1.5 + attrs>=16.2.0 + incremental>=16.10.1 + constantly>=15.1.0 +-enum34>=1.1.6 +-ipaddress>=1.0.18 ++enum34>=1.1.6; python_version < '3.4' ++ipaddress>=1.0.18; python_version < '3.3' +-- +2.11.0 + diff --git a/buildroot/package/python-crossbar/Config.in b/buildroot/package/python-crossbar/Config.in new file mode 100644 index 0000000..96a25c2 --- /dev/null +++ b/buildroot/package/python-crossbar/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_PYTHON_CROSSBAR + bool "python-crossbar" + depends on BR2_INSTALL_LIBSTDCPP # python-pyasn + # All the following dependencies are runtime dependencies + select BR2_PACKAGE_PYTHON_ATTRS + select BR2_PACKAGE_PYTHON_AUTOBAHN + select BR2_PACKAGE_PYTHON_BITSTRING + select BR2_PACKAGE_PYTHON_CONSTANTLY + select BR2_PACKAGE_PYTHON_CBOR + select BR2_PACKAGE_PYTHON_CLICK + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY + select BR2_PACKAGE_PYTHON_ENUM34 if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_IDNA + select BR2_PACKAGE_PYTHON_INCREMENTAL + select BR2_PACKAGE_PYTHON_IPADDRESS if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_JINJA2 + select BR2_PACKAGE_PYTHON_H2 + select BR2_PACKAGE_PYTHON_LMDB + select BR2_PACKAGE_PYTHON_MISTUNE + select BR2_PACKAGE_PYTHON_NETADDR + select BR2_PACKAGE_PYTHON_PRIORITY + select BR2_PACKAGE_PYTHON_PSUTIL + select BR2_PACKAGE_PYTHON_PYASN + select BR2_PACKAGE_PYTHON_PYASN_MODULES + select BR2_PACKAGE_PYTHON_PYGMENTS + select BR2_PACKAGE_PYTHON_PYINOTIFY + select BR2_PACKAGE_PYTHON_PYNACL + select BR2_PACKAGE_PYTHON_PYOPENSSL + select BR2_PACKAGE_PYTHON_PYQRCODE + select BR2_PACKAGE_PYTHON_PYTRIE + select BR2_PACKAGE_PYTHON_PYYAML + select BR2_PACKAGE_PYTHON_SDNOTIFY + select BR2_PACKAGE_PYTHON_SETUPTOOLS + select BR2_PACKAGE_PYTHON_SERVICE_IDENTITY + select BR2_PACKAGE_PYTHON_SETPROCTITLE + select BR2_PACKAGE_PYTHON_SETUPTOOLS + select BR2_PACKAGE_PYTHON_SHUTILWHICH + select BR2_PACKAGE_PYTHON_TREQ + select BR2_PACKAGE_PYTHON_TWISTED + select BR2_PACKAGE_PYTHON_U_MSGPACK + select BR2_PACKAGE_PYTHON_UBJSON + select BR2_PACKAGE_PYTHON_WATCHDOG + help + Crossbar.io is an open-source WAMP application router that + allows to build advanced applications from loosely-coupled + components that can talk in real-time with each other. + + https://pypi.python.org/pypi/crossbar + +comment "python-crossbar needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-crossbar/python-crossbar.hash b/buildroot/package/python-crossbar/python-crossbar.hash new file mode 100644 index 0000000..b9bfea8 --- /dev/null +++ b/buildroot/package/python-crossbar/python-crossbar.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/crossbar/json, sha256 locally computed +md5 d557615f34e7736f749e59b4d3ddbea0 crossbar-17.6.1.post3.tar.gz +sha256 8d023af0a772404f4e57add5888583fc0068d62a7a2249bea4539a6d7b70fbd9 crossbar-17.6.1.post3.tar.gz +sha256 57c8ff33c9c0cfc3ef00e650a1cc910d7ee479a8bc509f6c9209a7c2a11399d6 LICENSE diff --git a/buildroot/package/python-crossbar/python-crossbar.mk b/buildroot/package/python-crossbar/python-crossbar.mk new file mode 100644 index 0000000..5ebeddc --- /dev/null +++ b/buildroot/package/python-crossbar/python-crossbar.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-crossbar +# +################################################################################ + +PYTHON_CROSSBAR_VERSION = 17.6.1.post3 +PYTHON_CROSSBAR_SOURCE = crossbar-$(PYTHON_CROSSBAR_VERSION).tar.gz +PYTHON_CROSSBAR_SITE = https://pypi.python.org/packages/6a/25/9bc78947a4552c5fe27671ca2abe3be0559b8c76bc93d52157a6333ea971 +PYTHON_CROSSBAR_LICENSE = AGPL-3.0 +PYTHON_CROSSBAR_LICENSE_FILES = LICENSE +PYTHON_CROSSBAR_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-cryptography/Config.in b/buildroot/package/python-cryptography/Config.in new file mode 100644 index 0000000..14f950d --- /dev/null +++ b/buildroot/package/python-cryptography/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_PYTHON_CRYPTOGRAPHY + bool "python-cryptography" + depends on BR2_INSTALL_LIBSTDCPP # python-pyasn + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PYTHON_CFFI # runtime + select BR2_PACKAGE_PYTHON_ENUM34 if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_HASHLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_IDNA # runtime + select BR2_PACKAGE_PYTHON_IPADDRESS if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_PYASN # runtime + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime + help + cryptography is a package designed to expose cryptographic + primitives and recipes to Python developers. + + https://cryptography.io + +comment "python-cryptography needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-cryptography/python-cryptography.hash b/buildroot/package/python-cryptography/python-cryptography.hash new file mode 100644 index 0000000..a1162cf --- /dev/null +++ b/buildroot/package/python-cryptography/python-cryptography.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/cryptography/json, sha256 locally computed +md5 fade66de437392ed1ba6980768626204 cryptography-1.7.2.tar.gz +sha256 878cb68b3da3d493ffd68f36db11c29deee623671d3287c3f8d685117ffda9a9 cryptography-1.7.2.tar.gz diff --git a/buildroot/package/python-cryptography/python-cryptography.mk b/buildroot/package/python-cryptography/python-cryptography.mk new file mode 100644 index 0000000..5373da8 --- /dev/null +++ b/buildroot/package/python-cryptography/python-cryptography.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-cryptography +# +################################################################################ + +PYTHON_CRYPTOGRAPHY_VERSION = 1.7.2 +PYTHON_CRYPTOGRAPHY_SOURCE = cryptography-$(PYTHON_CRYPTOGRAPHY_VERSION).tar.gz +PYTHON_CRYPTOGRAPHY_SITE = https://pypi.python.org/packages/99/df/71c7260003f5c469cec3db4c547115df39e9ce6c719a99e067ba0e78fd8a +PYTHON_CRYPTOGRAPHY_SETUP_TYPE = setuptools +PYTHON_CRYPTOGRAPHY_LICENSE = Apache-2.0 or BSD-3-Clause +PYTHON_CRYPTOGRAPHY_LICENSE_FILES = LICENSE LICENSE.APACHE LICENSE.BSD +PYTHON_CRYPTOGRAPHY_DEPENDENCIES = host-python-cffi openssl + +$(eval $(python-package)) diff --git a/buildroot/package/python-cssselect/Config.in b/buildroot/package/python-cssselect/Config.in new file mode 100644 index 0000000..18d6372 --- /dev/null +++ b/buildroot/package/python-cssselect/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_CSSSELECT + bool "python-cssselect" + help + cssselect parses CSS3 Selectors and translates them to XPath + 1.0 + + http://packages.python.org/cssselect/ diff --git a/buildroot/package/python-cssselect/python-cssselect.hash b/buildroot/package/python-cssselect/python-cssselect.hash new file mode 100644 index 0000000..dd05beb --- /dev/null +++ b/buildroot/package/python-cssselect/python-cssselect.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/cssselect/json, sha256 locally computed +md5 50422c9ec04b74cd60c571f74ddc1a80 cssselect-1.0.3.tar.gz +sha256 066d8bc5229af09617e24b3ca4d52f1f9092d9e061931f4184cd572885c23204 cssselect-1.0.3.tar.gz +sha256 5c8da9f744e0afba81a48c9b5dbe73048f798b3287d6f1af8a05ee08ebb10892 LICENSE diff --git a/buildroot/package/python-cssselect/python-cssselect.mk b/buildroot/package/python-cssselect/python-cssselect.mk new file mode 100644 index 0000000..4ecc07a --- /dev/null +++ b/buildroot/package/python-cssselect/python-cssselect.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-cssselect +# +################################################################################ + +PYTHON_CSSSELECT_VERSION = 1.0.3 +PYTHON_CSSSELECT_SOURCE = cssselect-$(PYTHON_CSSSELECT_VERSION).tar.gz +PYTHON_CSSSELECT_SITE = https://pypi.python.org/packages/52/ea/f31e1d2e9eb130fda2a631e22eac369dc644e8807345fbed5113f2d6f92b +PYTHON_CSSSELECT_SETUP_TYPE = setuptools +PYTHON_CSSSELECT_LICENSE = BSD-3-Clause +PYTHON_CSSSELECT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-cssutils/Config.in b/buildroot/package/python-cssutils/Config.in new file mode 100644 index 0000000..74de742 --- /dev/null +++ b/buildroot/package/python-cssutils/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_CSSUTILS + bool "python-cssutils" + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + help + A CSS Cascading Style Sheets library for Python. + + http://cthedot.de/cssutils/ diff --git a/buildroot/package/python-cssutils/python-cssutils.hash b/buildroot/package/python-cssutils/python-cssutils.hash new file mode 100644 index 0000000..7b188bc --- /dev/null +++ b/buildroot/package/python-cssutils/python-cssutils.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/cssutils/json, sha256 locally computed +md5 7fcdf2c3e9f053136af1990146eb361d cssutils-1.0.1.tar.gz +sha256 d8a18b2848ea1011750231f1dd64fe9053dbec1be0b37563c582561e7a529063 cssutils-1.0.1.tar.gz diff --git a/buildroot/package/python-cssutils/python-cssutils.mk b/buildroot/package/python-cssutils/python-cssutils.mk new file mode 100644 index 0000000..3aa96f4 --- /dev/null +++ b/buildroot/package/python-cssutils/python-cssutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-cssutils +# +################################################################################ + +PYTHON_CSSUTILS_VERSION = 1.0.1 +PYTHON_CSSUTILS_SOURCE = cssutils-$(PYTHON_CSSUTILS_VERSION).tar.gz +PYTHON_CSSUTILS_SITE = https://pypi.python.org/packages/22/de/6b03e0088baf0299ab7d2e95a9e26c2092e9cb3855876b958b6a62175ca2 +PYTHON_CSSUTILS_LICENSE = LGPL-3.0+ +PYTHON_CSSUTILS_LICENSE_FILES = COPYING.LESSER +PYTHON_CSSUTILS_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-daemon/Config.in b/buildroot/package/python-daemon/Config.in new file mode 100644 index 0000000..21f4407 --- /dev/null +++ b/buildroot/package/python-daemon/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_DAEMON + bool "python-daemon" + select BR2_PACKAGE_PYTHON_DOCUTILS # runtime + help + Library to implement a well-behaved Unix daemon process. + + https://pypi.python.org/pypi/python-daemon/ diff --git a/buildroot/package/python-daemon/python-daemon.hash b/buildroot/package/python-daemon/python-daemon.hash new file mode 100644 index 0000000..12977b5 --- /dev/null +++ b/buildroot/package/python-daemon/python-daemon.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=72e2acf2c3d69c7fa75a6625d06adfd0, sha256 locally computed +md5 72e2acf2c3d69c7fa75a6625d06adfd0 python-daemon-2.1.1.tar.gz +sha256 58a8c187ee37c3a28913bef00f83240c9ecd4a59dce09a24d92f5c941606689f python-daemon-2.1.1.tar.gz diff --git a/buildroot/package/python-daemon/python-daemon.mk b/buildroot/package/python-daemon/python-daemon.mk new file mode 100644 index 0000000..76820b7 --- /dev/null +++ b/buildroot/package/python-daemon/python-daemon.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-daemon +# +################################################################################ + +PYTHON_DAEMON_VERSION = 2.1.1 +PYTHON_DAEMON_SITE = https://pypi.python.org/packages/source/p/python-daemon +PYTHON_DAEMON_LICENSE = Apache-2.0 (library), GPL-3.0+ (test, build) +PYTHON_DAEMON_LICENSE_FILES = LICENSE.ASF-2 LICENSE.GPL-3 +PYTHON_DAEMON_SETUP_TYPE = setuptools +PYTHON_DAEMON_DEPENDENCIES = host-python-docutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-dataproperty/Config.in b/buildroot/package/python-dataproperty/Config.in new file mode 100644 index 0000000..1868709 --- /dev/null +++ b/buildroot/package/python-dataproperty/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_DATAPROPERTY + bool "python-dataproperty" + select BR2_PACKAGE_PYTHON_LOGBOOK # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # runtime + help + Python library for extract property from data. + + https://github.com/thombashi/DataProperty diff --git a/buildroot/package/python-dataproperty/python-dataproperty.hash b/buildroot/package/python-dataproperty/python-dataproperty.hash new file mode 100644 index 0000000..0e74aca --- /dev/null +++ b/buildroot/package/python-dataproperty/python-dataproperty.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/DataProperty/json, sha256 locally computed +md5 66ecca45ae5e00b2a88799a2795a0cf8 DataProperty-0.29.1.tar.gz +sha256 3e547003b1af16126ff48b1c284241bc8a46d1e38e334ecd3a5ba87955446806 DataProperty-0.29.1.tar.gz +sha256 a93d75bcb0774e2990106380cadad6dcb2de193c55d435ffc56ba345a08b1dc2 LICENSE diff --git a/buildroot/package/python-dataproperty/python-dataproperty.mk b/buildroot/package/python-dataproperty/python-dataproperty.mk new file mode 100644 index 0000000..900cd04 --- /dev/null +++ b/buildroot/package/python-dataproperty/python-dataproperty.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dataproperty +# +################################################################################ + +PYTHON_DATAPROPERTY_VERSION = 0.29.1 +PYTHON_DATAPROPERTY_SOURCE = DataProperty-$(PYTHON_DATAPROPERTY_VERSION).tar.gz +PYTHON_DATAPROPERTY_SITE = https://pypi.python.org/packages/38/6f/bf65cf1398ca34c709bf14ca9bc33821588498abe50c4652b0d345b9c08c +PYTHON_DATAPROPERTY_SETUP_TYPE = setuptools +PYTHON_DATAPROPERTY_LICENSE = MIT +PYTHON_DATAPROPERTY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-dateutil/Config.in b/buildroot/package/python-dateutil/Config.in new file mode 100644 index 0000000..56a1d83 --- /dev/null +++ b/buildroot/package/python-dateutil/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_DATEUTIL + bool "python-dateutil" + select BR2_PACKAGE_PYTHON_SIX + help + Extensions to the standard Python datetime module. + + https://dateutil.readthedocs.org diff --git a/buildroot/package/python-dateutil/python-dateutil.hash b/buildroot/package/python-dateutil/python-dateutil.hash new file mode 100644 index 0000000..adc24bd --- /dev/null +++ b/buildroot/package/python-dateutil/python-dateutil.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/python-dateutil/json, sha256 locally computed +md5 6e38f91e8c94c15a79ce22768dfeca87 python-dateutil-2.6.0.tar.gz +sha256 62a2f8df3d66f878373fd0072eacf4ee52194ba302e00082828e0d263b0418d2 python-dateutil-2.6.0.tar.gz diff --git a/buildroot/package/python-dateutil/python-dateutil.mk b/buildroot/package/python-dateutil/python-dateutil.mk new file mode 100644 index 0000000..41dee2d --- /dev/null +++ b/buildroot/package/python-dateutil/python-dateutil.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-dateutil +# +################################################################################ + +PYTHON_DATEUTIL_VERSION = 2.6.0 +PYTHON_DATEUTIL_SITE = https://pypi.python.org/packages/51/fc/39a3fbde6864942e8bb24c93663734b74e281b984d1b8c4f95d64b0c21f6 +PYTHON_DATEUTIL_SETUP_TYPE = setuptools +PYTHON_DATEUTIL_LICENSE = BSD-3-Clause +PYTHON_DATEUTIL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-decorator/Config.in b/buildroot/package/python-decorator/Config.in new file mode 100644 index 0000000..e7ec00c --- /dev/null +++ b/buildroot/package/python-decorator/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_DECORATOR + bool "python-decorator" + help + Better living through Python with decorators + + https://github.com/micheles/decorator diff --git a/buildroot/package/python-decorator/python-decorator.hash b/buildroot/package/python-decorator/python-decorator.hash new file mode 100644 index 0000000..293f1ca --- /dev/null +++ b/buildroot/package/python-decorator/python-decorator.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/decorator/json, sha256 locally calculated +md5 73644c8f0bd4983d1b6a34b49adec0ae decorator-4.0.11.tar.gz +sha256 953d6bf082b100f43229cf547f4f97f97e970f5ad645ee7601d55ff87afdfe76 decorator-4.0.11.tar.gz diff --git a/buildroot/package/python-decorator/python-decorator.mk b/buildroot/package/python-decorator/python-decorator.mk new file mode 100644 index 0000000..c0c43f6 --- /dev/null +++ b/buildroot/package/python-decorator/python-decorator.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-decorator +# +################################################################################ + +PYTHON_DECORATOR_VERSION = 4.0.11 +PYTHON_DECORATOR_SITE = https://pypi.python.org/packages/cc/ac/5a16f1fc0506ff72fcc8fd4e858e3a1c231f224ab79bb7c4c9b2094cc570 +PYTHON_DECORATOR_SOURCE = decorator-$(PYTHON_DECORATOR_VERSION).tar.gz +PYTHON_DECORATOR_LICENSE = BSD-2-Clause +PYTHON_DECORATOR_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-dialog/Config.in b/buildroot/package/python-dialog/Config.in new file mode 100644 index 0000000..c1fdb23 --- /dev/null +++ b/buildroot/package/python-dialog/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_DIALOG + bool "python-dialog" + depends on BR2_PACKAGE_PYTHON + depends on BR2_USE_MMU # dialog + select BR2_PACKAGE_DIALOG + help + A Python interface to the UNIX dialog utility and + mostly-compatible programs. + + http://pythondialog.sourceforge.net/ diff --git a/buildroot/package/python-dialog/python-dialog.hash b/buildroot/package/python-dialog/python-dialog.hash new file mode 100644 index 0000000..3cf0eaa --- /dev/null +++ b/buildroot/package/python-dialog/python-dialog.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 58466c2f897ef761716b811ff74e035979b5ecefb529ba004b12db117a0f4581 python2-pythondialog-3.0.1.tar.bz2 diff --git a/buildroot/package/python-dialog/python-dialog.mk b/buildroot/package/python-dialog/python-dialog.mk new file mode 100644 index 0000000..01bcb76 --- /dev/null +++ b/buildroot/package/python-dialog/python-dialog.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-dialog +# +################################################################################ + +PYTHON_DIALOG_VERSION = 3.0.1 +PYTHON_DIALOG_SOURCE = python2-pythondialog-$(PYTHON_DIALOG_VERSION).tar.bz2 +PYTHON_DIALOG_SITE = http://downloads.sourceforge.net/project/pythondialog/pythondialog/$(PYTHON_DIALOG_VERSION) +PYTHON_DIALOG_LICENSE = LGPL-2.1+ +PYTHON_DIALOG_LICENSE_FILES = COPYING +PYTHON_DIALOG_SETUP_TYPE = distutils +PYTHON_DIALOG_DEPENDENCIES = dialog + +$(eval $(python-package)) diff --git a/buildroot/package/python-dialog3/Config.in b/buildroot/package/python-dialog3/Config.in new file mode 100644 index 0000000..cd07608 --- /dev/null +++ b/buildroot/package/python-dialog3/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_DIALOG3 + bool "python-dialog3" + depends on BR2_PACKAGE_PYTHON3 + depends on BR2_USE_MMU # dialog + select BR2_PACKAGE_DIALOG + help + A Python 3 only interface to the UNIX dialog utility and + mostly-compatible programs. + + http://pythondialog.sourceforge.net/ diff --git a/buildroot/package/python-dialog3/python-dialog3.hash b/buildroot/package/python-dialog3/python-dialog3.hash new file mode 100644 index 0000000..dae863b --- /dev/null +++ b/buildroot/package/python-dialog3/python-dialog3.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pythondialog/json, sha256 locally computed +md5 3d5ebc33e85f6313964f5eef720dab19 pythondialog-3.4.0.tar.bz2 +sha256 019cdbffe3f61d32d6fb158ce48a767478af2aac2f31fb40460b39aefae604fe pythondialog-3.4.0.tar.bz2 diff --git a/buildroot/package/python-dialog3/python-dialog3.mk b/buildroot/package/python-dialog3/python-dialog3.mk new file mode 100644 index 0000000..4048447 --- /dev/null +++ b/buildroot/package/python-dialog3/python-dialog3.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-dialog3 +# +################################################################################ + +PYTHON_DIALOG3_VERSION = 3.4.0 +PYTHON_DIALOG3_SOURCE = pythondialog-$(PYTHON_DIALOG3_VERSION).tar.bz2 +PYTHON_DIALOG3_SITE = https://pypi.python.org/packages/fa/f4/686742f01ebb5863d4c5e1acab620acfed0fe97280a26b4ed25917f4f333 +PYTHON_DIALOG3_LICENSE = LGPL-2.1+ +PYTHON_DIALOG3_LICENSE_FILES = COPYING +PYTHON_DIALOG3_SETUP_TYPE = distutils +PYTHON_DIALOG3_DEPENDENCIES = dialog + +$(eval $(python-package)) diff --git a/buildroot/package/python-dicttoxml/Config.in b/buildroot/package/python-dicttoxml/Config.in new file mode 100644 index 0000000..e38a5f7 --- /dev/null +++ b/buildroot/package/python-dicttoxml/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_DICTTOXML + bool "python-dicttoxml" + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 + help + Converts a Python dictionary or other native data type into + a valid XML string. + + https://github.com/quandyfactory/dicttoxml diff --git a/buildroot/package/python-dicttoxml/python-dicttoxml.hash b/buildroot/package/python-dicttoxml/python-dicttoxml.hash new file mode 100644 index 0000000..32ba6b0 --- /dev/null +++ b/buildroot/package/python-dicttoxml/python-dicttoxml.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/dicttoxml/json, sha256 locally computed +md5 ec5643a048cf32dad3c28db236b923e4 dicttoxml-1.7.4.tar.gz +sha256 ea44cc4ec6c0f85098c57a431a1ee891b3549347b07b7414c8a24611ecf37e45 dicttoxml-1.7.4.tar.gz diff --git a/buildroot/package/python-dicttoxml/python-dicttoxml.mk b/buildroot/package/python-dicttoxml/python-dicttoxml.mk new file mode 100644 index 0000000..537afff --- /dev/null +++ b/buildroot/package/python-dicttoxml/python-dicttoxml.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dicttoxml +# +################################################################################ + +PYTHON_DICTTOXML_VERSION = 1.7.4 +PYTHON_DICTTOXML_SOURCE = dicttoxml-$(PYTHON_DICTTOXML_VERSION).tar.gz +PYTHON_DICTTOXML_SITE = https://pypi.python.org/packages/74/36/534db111db9e7610a41641a1f6669a964aacaf51858f466de264cc8dcdd9 +PYTHON_DICTTOXML_SETUP_TYPE = distutils +PYTHON_DICTTOXML_LICENSE = GPL-2.0 +PYTHON_DICTTOXML_LICENSE_FILES = LICENCE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-django/Config.in b/buildroot/package/python-django/Config.in new file mode 100644 index 0000000..75322d1 --- /dev/null +++ b/buildroot/package/python-django/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_DJANGO + bool "python-django" + select BR2_PACKAGE_PYTHON_UNICODEDATA if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_UNICODEDATA if BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 + help + Django is a high-level Python Web framework that encourages + rapid development and clean, pragmatic design. It takes your + Web applications from concept to launch in a matter of + hours. Django takes care of user authentication, content + administration, site maps, RSS feeds, user comments and many + more tasks. Django takes security seriously and helps + developers avoid many common security mistakes + + https://www.djangoproject.com/ diff --git a/buildroot/package/python-django/python-django.hash b/buildroot/package/python-django/python-django.hash new file mode 100644 index 0000000..09be184 --- /dev/null +++ b/buildroot/package/python-django/python-django.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/django/json, sha256 locally computed +md5 693dfeabad62c561cb205900d32c2a98 Django-1.10.7.tar.gz +sha256 593d779dbc2350a245c4f76d26bdcad58a39895e87304fe6d725bbdf84b5b0b8 Django-1.10.7.tar.gz diff --git a/buildroot/package/python-django/python-django.mk b/buildroot/package/python-django/python-django.mk new file mode 100644 index 0000000..9056f00 --- /dev/null +++ b/buildroot/package/python-django/python-django.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-django +# +################################################################################ + +PYTHON_DJANGO_VERSION = 1.10.7 +PYTHON_DJANGO_SOURCE = Django-$(PYTHON_DJANGO_VERSION).tar.gz +# The official Django site has an unpractical URL +PYTHON_DJANGO_SITE = https://pypi.python.org/packages/15/b4/d4bb7313e02386bd23a60e1eb5670321313fb67289c6f36ec43bce747aff +PYTHON_DJANGO_LICENSE = BSD-3-Clause +PYTHON_DJANGO_LICENSE_FILES = LICENSE +PYTHON_DJANGO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-docopt/Config.in b/buildroot/package/python-docopt/Config.in new file mode 100644 index 0000000..9942d67 --- /dev/null +++ b/buildroot/package/python-docopt/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_DOCOPT + bool "python-docopt" + help + docopt helps you create most beautiful command-line + interfaces easily. The option parser is generated based on + the beautiful help message that you write yourself. This way + you don't need to write this stupid repeatable parser-code, + and instead can write only the help message-- the way you + want it. + + https://github.com/docopt/docopt diff --git a/buildroot/package/python-docopt/python-docopt.hash b/buildroot/package/python-docopt/python-docopt.hash new file mode 100644 index 0000000..c38e1ab --- /dev/null +++ b/buildroot/package/python-docopt/python-docopt.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 2113eed1e7fbbcd43fb7ee6a977fb02d0b482753586c9dc1a8e3b7d541426e99 python-docopt-0.6.2.tar.gz diff --git a/buildroot/package/python-docopt/python-docopt.mk b/buildroot/package/python-docopt/python-docopt.mk new file mode 100644 index 0000000..f87d2f8 --- /dev/null +++ b/buildroot/package/python-docopt/python-docopt.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-docopt +# +################################################################################ + +PYTHON_DOCOPT_VERSION = 0.6.2 +PYTHON_DOCOPT_SITE = $(call github,docopt,docopt,$(PYTHON_DOCOPT_VERSION)) +PYTHON_DOCOPT_LICENSE = MIT +PYTHON_DOCOPT_LICENSE_FILES = LICENSE-MIT +PYTHON_DOCOPT_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-docutils/Config.in b/buildroot/package/python-docutils/Config.in new file mode 100644 index 0000000..e7bf7e6 --- /dev/null +++ b/buildroot/package/python-docutils/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_DOCUTILS + bool "python-docutils" + help + Docutils is a modular system for processing documentation + into useful formats, such as HTML, XML, and LaTeX. For input + Docutils supports reStructuredText, an easy-to-read, + what-you-see-is-what-you-get plaintext markup syntax. + + http://docutils.sourceforge.net/ diff --git a/buildroot/package/python-docutils/python-docutils.hash b/buildroot/package/python-docutils/python-docutils.hash new file mode 100644 index 0000000..dbf0fde --- /dev/null +++ b/buildroot/package/python-docutils/python-docutils.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/docutils/json, sha256 locally computed +md5 c53768d63db3873b7d452833553469de docutils-0.14.tar.gz +sha256 51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274 docutils-0.14.tar.gz +sha256 58c2807e9e6e3297ad4da08acc8884d09d8c5ffc9d824dd100922d0bb1ee4717 COPYING.txt diff --git a/buildroot/package/python-docutils/python-docutils.mk b/buildroot/package/python-docutils/python-docutils.mk new file mode 100644 index 0000000..53da1a5 --- /dev/null +++ b/buildroot/package/python-docutils/python-docutils.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-docutils +# +################################################################################ + +PYTHON_DOCUTILS_VERSION = 0.14 +PYTHON_DOCUTILS_SOURCE = docutils-$(PYTHON_DOCUTILS_VERSION).tar.gz +PYTHON_DOCUTILS_SITE = https://pypi.python.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c +PYTHON_DOCUTILS_LICENSE = Public Domain, BSD-2-Clause, GPL-3.0 (emacs mode), other +PYTHON_DOCUTILS_LICENSE_FILES = COPYING.txt +PYTHON_DOCUTILS_SETUP_TYPE = distutils + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-dominate/Config.in b/buildroot/package/python-dominate/Config.in new file mode 100644 index 0000000..35e9a0c --- /dev/null +++ b/buildroot/package/python-dominate/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_DOMINATE + bool "python-dominate" + help + Dominate is a Python library for creating and manipulating + HTML documents using an elegant DOM API. + + http://github.com/Knio/dominate/ diff --git a/buildroot/package/python-dominate/python-dominate.hash b/buildroot/package/python-dominate/python-dominate.hash new file mode 100644 index 0000000..2480b00 --- /dev/null +++ b/buildroot/package/python-dominate/python-dominate.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/dominate/json, sha256 locally computed +md5 45bd97e6f7888aac24ae86013c57638e dominate-2.3.1.tar.gz +sha256 4b8ce6f33633c9dd9175b228d21c00c801b6bd0327747cd5e17fc2da934c3a69 dominate-2.3.1.tar.gz diff --git a/buildroot/package/python-dominate/python-dominate.mk b/buildroot/package/python-dominate/python-dominate.mk new file mode 100644 index 0000000..70ddb06 --- /dev/null +++ b/buildroot/package/python-dominate/python-dominate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-dominate +# +################################################################################ + +PYTHON_DOMINATE_VERSION = 2.3.1 +PYTHON_DOMINATE_SOURCE = dominate-$(PYTHON_DOMINATE_VERSION).tar.gz +PYTHON_DOMINATE_SITE = https://pypi.python.org/packages/43/b2/3b7d67dd59dab93ae08569384b254323516e8868b453eea5614a53835baf +PYTHON_DOMINATE_SETUP_TYPE = setuptools +PYTHON_DOMINATE_LICENSE = LGPL-3.0+ +PYTHON_DOMINATE_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-dpkt/Config.in b/buildroot/package/python-dpkt/Config.in new file mode 100644 index 0000000..f1e4ddf --- /dev/null +++ b/buildroot/package/python-dpkt/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_DPKT + bool "python-dpkt" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_ZLIB + help + Fast, simple packet creation / parsing, with definitions + for the basic TCP/IP protocols. + + http://code.google.com/p/dpkt/ diff --git a/buildroot/package/python-dpkt/python-dpkt.hash b/buildroot/package/python-dpkt/python-dpkt.hash new file mode 100644 index 0000000..db46016 --- /dev/null +++ b/buildroot/package/python-dpkt/python-dpkt.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 33a98fd44eb0b6dfa6790c0fcef4d7e73a5cc12a664ea3c30f4d3c2b95f5efc4 python-dpkt-1.8.r98.tar.gz diff --git a/buildroot/package/python-dpkt/python-dpkt.mk b/buildroot/package/python-dpkt/python-dpkt.mk new file mode 100644 index 0000000..9694b9e --- /dev/null +++ b/buildroot/package/python-dpkt/python-dpkt.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-dpkt +# +################################################################################ + +PYTHON_DPKT_VERSION = 1.8.r98 +PYTHON_DPKT_SITE = $(call github,kbandla,dpkt,$(PYTHON_DPKT_VERSION)) +PYTHON_DPKT_SETUP_TYPE = distutils +PYTHON_DPKT_LICENSE = BSD-3-Clause +PYTHON_DPKT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-ecdsa/Config.in b/buildroot/package/python-ecdsa/Config.in new file mode 100644 index 0000000..ce11910 --- /dev/null +++ b/buildroot/package/python-ecdsa/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ECDSA + bool "python-ecdsa" + help + ECDSA cryptographic signature library (pure python). + + http://github.com/warner/python-ecdsa diff --git a/buildroot/package/python-ecdsa/python-ecdsa.hash b/buildroot/package/python-ecdsa/python-ecdsa.hash new file mode 100644 index 0000000..b4bd706 --- /dev/null +++ b/buildroot/package/python-ecdsa/python-ecdsa.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/ecdsa/json +md5 1f60eda9cb5c46722856db41a3ae6670 ecdsa-0.13.tar.gz +# sha256 calculated by scanpypi +sha256 64cf1ee26d1cde3c73c6d7d107f835fed7c6a2904aef9eac223d57ad800c43fa ecdsa-0.13.tar.gz diff --git a/buildroot/package/python-ecdsa/python-ecdsa.mk b/buildroot/package/python-ecdsa/python-ecdsa.mk new file mode 100644 index 0000000..75b0634 --- /dev/null +++ b/buildroot/package/python-ecdsa/python-ecdsa.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ecdsa +# +################################################################################ + +PYTHON_ECDSA_VERSION = 0.13 +PYTHON_ECDSA_SOURCE = ecdsa-$(PYTHON_ECDSA_VERSION).tar.gz +PYTHON_ECDSA_SITE = https://pypi.python.org/packages/source/e/ecdsa +PYTHON_ECDSA_SETUP_TYPE = setuptools +PYTHON_ECDSA_LICENSE = MIT +PYTHON_ECDSA_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-engineio/Config.in b/buildroot/package/python-engineio/Config.in new file mode 100644 index 0000000..b12db92 --- /dev/null +++ b/buildroot/package/python-engineio/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_ENGINEIO + bool "python-engineio" + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 + help + Engine.IO server. + + http://github.com/miguelgrinberg/python-engineio/ diff --git a/buildroot/package/python-engineio/python-engineio.hash b/buildroot/package/python-engineio/python-engineio.hash new file mode 100644 index 0000000..b2c0669 --- /dev/null +++ b/buildroot/package/python-engineio/python-engineio.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/python-engineio/json +md5 9b0075dbbb25d7a302eba99dd9ba4af8 python-engineio-0.9.2.tar.gz +# sha256 calculated by scanpypi +sha256 c53282415ed9bc3cb4e7beafb2a1ce5c369af95dcf8f968061e5bc7572b60867 python-engineio-0.9.2.tar.gz diff --git a/buildroot/package/python-engineio/python-engineio.mk b/buildroot/package/python-engineio/python-engineio.mk new file mode 100644 index 0000000..61d5da9 --- /dev/null +++ b/buildroot/package/python-engineio/python-engineio.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-engineio +# +################################################################################ + +PYTHON_ENGINEIO_VERSION = 0.9.2 +PYTHON_ENGINEIO_SITE = https://pypi.python.org/packages/c3/8f/0e066fc7a7029893b96b1d68a0cd5e75f6410f154fa4079b2be4991f5ae0 +PYTHON_ENGINEIO_SETUP_TYPE = setuptools +PYTHON_ENGINEIO_LICENSE = MIT +PYTHON_ENGINEIO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-enum/Config.in b/buildroot/package/python-enum/Config.in new file mode 100644 index 0000000..e26ae8b --- /dev/null +++ b/buildroot/package/python-enum/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_ENUM + bool "python-enum" + depends on BR2_PACKAGE_PYTHON + help + Robust enumerated type support in Python + + An enumeration object is an immutable sequence object built + from a sequence of strings. Each value is also available as + an attribute. Such values are constant. Comparisons and + enumeration are supported. + + https://pypi.python.org/pypi/enum diff --git a/buildroot/package/python-enum/python-enum.hash b/buildroot/package/python-enum/python-enum.hash new file mode 100644 index 0000000..6f1daa0 --- /dev/null +++ b/buildroot/package/python-enum/python-enum.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/enum/json, sha256 locally computed +md5 173d468112cfa13a149b2c8af3e8fd52 enum-0.4.6.tar.gz +sha256 54e78526b166982b36884613f35a76d9a6711c49810d3ec1a05b10c9b31f938e enum-0.4.6.tar.gz diff --git a/buildroot/package/python-enum/python-enum.mk b/buildroot/package/python-enum/python-enum.mk new file mode 100644 index 0000000..ea602e4 --- /dev/null +++ b/buildroot/package/python-enum/python-enum.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-enum +# +################################################################################ + +PYTHON_ENUM_VERSION = 0.4.6 +PYTHON_ENUM_SOURCE = enum-$(PYTHON_ENUM_VERSION).tar.gz +PYTHON_ENUM_SITE = https://pypi.python.org/packages/0c/4e/1ea357e7783c756bb579333c1e4a026fb331371ee771f616ffedc781e531 +PYTHON_ENUM_SETUP_TYPE = setuptools +PYTHON_ENUM_LICENSE = GPL-3.0+ +PYTHON_ENUM_LICENSE_FILES = LICENSE.GPL-3 + +$(eval $(python-package)) diff --git a/buildroot/package/python-enum34/Config.in b/buildroot/package/python-enum34/Config.in new file mode 100644 index 0000000..2511a35 --- /dev/null +++ b/buildroot/package/python-enum34/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_ENUM34 + bool "python-enum34" + depends on BR2_PACKAGE_PYTHON + help + Python 3.4 Enum backported to 2.x. + + An enumeration is a set of symbolic names (members) bound to + unique, constant values. Within an enumeration, the members + can be compared by identity, and the enumeration itself can + be iterated over. + + https://pypi.python.org/pypi/enum34 diff --git a/buildroot/package/python-enum34/python-enum34.hash b/buildroot/package/python-enum34/python-enum34.hash new file mode 100644 index 0000000..a5f0c65 --- /dev/null +++ b/buildroot/package/python-enum34/python-enum34.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/enum34/json, sha256 locally computed +md5 5f13a0841a61f7fc295c514490d120d0 enum34-1.1.6.tar.gz +sha256 8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1 enum34-1.1.6.tar.gz diff --git a/buildroot/package/python-enum34/python-enum34.mk b/buildroot/package/python-enum34/python-enum34.mk new file mode 100644 index 0000000..c612cb6 --- /dev/null +++ b/buildroot/package/python-enum34/python-enum34.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-enum34 +# +################################################################################ + +PYTHON_ENUM34_VERSION = 1.1.6 +PYTHON_ENUM34_SOURCE = enum34-$(PYTHON_ENUM34_VERSION).tar.gz +PYTHON_ENUM34_SITE = https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876 +PYTHON_ENUM34_SETUP_TYPE = setuptools +PYTHON_ENUM34_LICENSE = BSD-3-Clause +PYTHON_ENUM34_LICENSE_FILES = enum/LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-flask-babel/Config.in b/buildroot/package/python-flask-babel/Config.in new file mode 100644 index 0000000..61fd2c0 --- /dev/null +++ b/buildroot/package/python-flask-babel/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_FLASK_BABEL + bool "python-flask-babel" + select BR2_PACKAGE_PYTHON_FLASK # runtime + select BR2_PACKAGE_PYTHON_BABEL # runtime + help + Flask-Babel is an extension to Flask that adds i18n and l10n + support to any Flask application with the help of babel, + pytz and speaklater. It has builtin support for date + formatting with timezone support as well as a very simple + and friendly interface to gettext translations. + + https://pythonhosted.org/Flask-Babel/ diff --git a/buildroot/package/python-flask-babel/python-flask-babel.hash b/buildroot/package/python-flask-babel/python-flask-babel.hash new file mode 100644 index 0000000..c4420e4 --- /dev/null +++ b/buildroot/package/python-flask-babel/python-flask-babel.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/Flask-Babel/json, sha256 locally computed +md5 658e84a20ddc545a7612144fe2c758d3 Flask-Babel-0.11.1.tar.gz +sha256 d29b36c399e42e98bc9401c8c1c159f2befcb8c12a2a2a87ec49ad7623036899 Flask-Babel-0.11.1.tar.gz diff --git a/buildroot/package/python-flask-babel/python-flask-babel.mk b/buildroot/package/python-flask-babel/python-flask-babel.mk new file mode 100644 index 0000000..0b74149 --- /dev/null +++ b/buildroot/package/python-flask-babel/python-flask-babel.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-babel +# +################################################################################ + +PYTHON_FLASK_BABEL_VERSION = 0.11.1 +PYTHON_FLASK_BABEL_SOURCE = Flask-Babel-$(PYTHON_FLASK_BABEL_VERSION).tar.gz +PYTHON_FLASK_BABEL_SITE = https://pypi.python.org/packages/47/96/6013d4091fb4238e27e918aec4929f082942fa8c9489ae3aad2f18de4b5b +PYTHON_FLASK_BABEL_LICENSE = BSD-3-Clause +PYTHON_FLASK_BABEL_SETUP_TYPE = setuptools +PYTHON_FLASK_BABEL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-flask-cors/Config.in b/buildroot/package/python-flask-cors/Config.in new file mode 100644 index 0000000..e2e8479 --- /dev/null +++ b/buildroot/package/python-flask-cors/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_FLASK_CORS + bool "python-flask-cors" + select BR2_PACKAGE_PYTHON_FLASK # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + A Flask extension adding a decorator for CORS support. + + https://github.com/corydolphin/flask-cors diff --git a/buildroot/package/python-flask-cors/python-flask-cors.hash b/buildroot/package/python-flask-cors/python-flask-cors.hash new file mode 100644 index 0000000..5a8256e --- /dev/null +++ b/buildroot/package/python-flask-cors/python-flask-cors.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/flask-cors/json, sha256 locally computed +md5 ddc12bdf8fa19a4ce1504ab9d0b0a8bc Flask-Cors-3.0.3.tar.gz +sha256 62ebc5ad80dc21ca0ea9f57466c2c74e24a62274af890b391790c260eb7b754b Flask-Cors-3.0.3.tar.gz +sha256 6e1a1bdc54834c1e0740cbce5d5f6f2cae1c846fd2a7f482b11649594fafbd5d LICENSE diff --git a/buildroot/package/python-flask-cors/python-flask-cors.mk b/buildroot/package/python-flask-cors/python-flask-cors.mk new file mode 100644 index 0000000..6d5900b --- /dev/null +++ b/buildroot/package/python-flask-cors/python-flask-cors.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-cors +# +################################################################################ + +PYTHON_FLASK_CORS_VERSION = 3.0.3 +PYTHON_FLASK_CORS_SOURCE = Flask-Cors-$(PYTHON_FLASK_CORS_VERSION).tar.gz +PYTHON_FLASK_CORS_SITE = https://pypi.python.org/packages/64/e8/e6bcf79dcad7b7c10f8c8c35d78b5710f2ddcd8ed38e607dd6a4853ab8a8 +PYTHON_FLASK_CORS_SETUP_TYPE = setuptools +PYTHON_FLASK_CORS_LICENSE = MIT +PYTHON_FLASK_CORS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-flask-jsonrpc/Config.in b/buildroot/package/python-flask-jsonrpc/Config.in new file mode 100644 index 0000000..c8ecd85 --- /dev/null +++ b/buildroot/package/python-flask-jsonrpc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_FLASK_JSONRPC + bool "python-flask-jsonrpc" + # runtime dependency + select BR2_PACKAGE_PYTHON_FLASK + help + A basic JSON-RPC implementation for your Flask-powered sites. + + https://github.com/cenobites/flask-jsonrpc diff --git a/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.hash b/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.hash new file mode 100644 index 0000000..a25fbb7 --- /dev/null +++ b/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/flask-jsonrpc/json, sha256 locally computed +md5 5c0592f53b2f18e34d5be435acee8842 Flask-JSONRPC-0.3.1.tar.gz +sha256 4d0cc9c20874093306af91f5a48009fb8659a041428dcdb11703598ffbbc97d0 Flask-JSONRPC-0.3.1.tar.gz diff --git a/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.mk b/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.mk new file mode 100644 index 0000000..dbb37c3 --- /dev/null +++ b/buildroot/package/python-flask-jsonrpc/python-flask-jsonrpc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-jsonrpc +# +################################################################################ + +PYTHON_FLASK_JSONRPC_VERSION = 0.3.1 +PYTHON_FLASK_JSONRPC_SOURCE = Flask-JSONRPC-$(PYTHON_FLASK_JSONRPC_VERSION).tar.gz +PYTHON_FLASK_JSONRPC_SITE = https://pypi.python.org/packages/cb/1f/e6d66e8498609ba04bac76155b2ea884df95531e93501bf4ef009d40a83c +PYTHON_FLASK_JSONRPC_LICENSE = BSD-3-Clause +PYTHON_FLASK_JSONRPC_LICENSE_FILES = setup.py +PYTHON_FLASK_JSONRPC_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-flask-login/Config.in b/buildroot/package/python-flask-login/Config.in new file mode 100644 index 0000000..88c413e --- /dev/null +++ b/buildroot/package/python-flask-login/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_FLASK_LOGIN + bool "python-flask-login" + # runtime dependency + select BR2_PACKAGE_PYTHON_FLASK + help + Flask-Login provides user session management for Flask. + + https://github.com/maxcountryman/flask-login diff --git a/buildroot/package/python-flask-login/python-flask-login.hash b/buildroot/package/python-flask-login/python-flask-login.hash new file mode 100644 index 0000000..cd73b3f --- /dev/null +++ b/buildroot/package/python-flask-login/python-flask-login.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/flask_login/json, sha256 locally computed +md5 e050efaa2c4dbc2d97f480a70f4d44aa Flask-Login-0.4.0.tar.gz +sha256 d25e356b14a59f52da0ab30c31c2ad285fa23a840f0f6971df7ed247c77082a7 Flask-Login-0.4.0.tar.gz diff --git a/buildroot/package/python-flask-login/python-flask-login.mk b/buildroot/package/python-flask-login/python-flask-login.mk new file mode 100644 index 0000000..5037413 --- /dev/null +++ b/buildroot/package/python-flask-login/python-flask-login.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-login +# +################################################################################ + +PYTHON_FLASK_LOGIN_VERSION = 0.4.0 +PYTHON_FLASK_LOGIN_SOURCE = Flask-Login-$(PYTHON_FLASK_LOGIN_VERSION).tar.gz +PYTHON_FLASK_LOGIN_SITE = https://pypi.python.org/packages/70/96/20cae731ef27084dcb183f3a6e3073d0232f10c1fd7be76729bd7bd4b994 +PYTHON_FLASK_LOGIN_LICENSE = MIT +PYTHON_FLASK_LOGIN_LICENSE_FILES = LICENSE +PYTHON_FLASK_LOGIN_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-flask/Config.in b/buildroot/package/python-flask/Config.in new file mode 100644 index 0000000..6f77913 --- /dev/null +++ b/buildroot/package/python-flask/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_FLASK + bool "python-flask" + select BR2_PACKAGE_PYTHON_CLICK # runtime + select BR2_PACKAGE_PYTHON_JINJA2 # runtime + select BR2_PACKAGE_PYTHON_WERKZEUG # runtime + select BR2_PACKAGE_PYTHON_ITSDANGEROUS # runtime + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 + help + Flask is a microframework for Python based on Werkzeug, + Jinja 2 and good intentions. + + http://flask.pocoo.org/ diff --git a/buildroot/package/python-flask/python-flask.hash b/buildroot/package/python-flask/python-flask.hash new file mode 100644 index 0000000..ca11721 --- /dev/null +++ b/buildroot/package/python-flask/python-flask.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/Flask/json, sha256 locally computed +md5 97278dfdafda98ba7902e890b0289177 Flask-0.12.2.tar.gz +sha256 49f44461237b69ecd901cc7ce66feea0319b9158743dd27a2899962ab214dac1 Flask-0.12.2.tar.gz diff --git a/buildroot/package/python-flask/python-flask.mk b/buildroot/package/python-flask/python-flask.mk new file mode 100644 index 0000000..06b1b4d --- /dev/null +++ b/buildroot/package/python-flask/python-flask.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask +# +################################################################################ + +PYTHON_FLASK_VERSION = 0.12.2 +PYTHON_FLASK_SOURCE = Flask-$(PYTHON_FLASK_VERSION).tar.gz +PYTHON_FLASK_SITE = https://pypi.python.org/packages/eb/12/1c7bd06fcbd08ba544f25bf2c6612e305a70ea51ca0eda8007344ec3f123 +PYTHON_FLASK_SETUP_TYPE = setuptools +PYTHON_FLASK_LICENSE = BSD-3-Clause +PYTHON_FLASK_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-flup/Config.in b/buildroot/package/python-flup/Config.in new file mode 100644 index 0000000..2c21323 --- /dev/null +++ b/buildroot/package/python-flup/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_FLUP + bool "python-flup" + depends on BR2_PACKAGE_PYTHON + help + flup provides of a collection of WSGI modules for Python. + It allows a webserver to use scgi-mod and fastcgi-mod + with python. + + https://pypi.python.org/pypi/flup diff --git a/buildroot/package/python-flup/python-flup.hash b/buildroot/package/python-flup/python-flup.hash new file mode 100644 index 0000000..86f8d1b --- /dev/null +++ b/buildroot/package/python-flup/python-flup.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/flup/json, sha256 locally computed +md5 bc104a7444bfac36fc2146a356de4c11 flup-1.0.3.dev20161029.tar.gz +sha256 3dc5620b77a6a4cd0afb556626eb0ce85708e513f9c50dc5e982190e3d5f9e26 flup-1.0.3.dev20161029.tar.gz diff --git a/buildroot/package/python-flup/python-flup.mk b/buildroot/package/python-flup/python-flup.mk new file mode 100644 index 0000000..26d5938 --- /dev/null +++ b/buildroot/package/python-flup/python-flup.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-flup +# +################################################################################ + +PYTHON_FLUP_VERSION = 1.0.3.dev20161029 +PYTHON_FLUP_SOURCE = flup-$(PYTHON_FLUP_VERSION).tar.gz +PYTHON_FLUP_SITE = https://pypi.python.org/packages/17/33/36768930a5ffe4f294ed3987c631bfd3fddb4f9e5e46bc8dc30fd731dbcd + +PYTHON_FLUP_LICENSE = BSD-2-Clause, MIT + +PYTHON_FLUP_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-functools32/Config.in b/buildroot/package/python-functools32/Config.in new file mode 100644 index 0000000..cc12557 --- /dev/null +++ b/buildroot/package/python-functools32/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_FUNCTOOLS32 + bool "python-functools32" + depends on BR2_PACKAGE_PYTHON + help + Backport of the functools module from Python 3.2.3 for use on 2.7 + and PyPy. + + https://github.com/MiCHiLU/python-functools32 diff --git a/buildroot/package/python-functools32/python-functools32.hash b/buildroot/package/python-functools32/python-functools32.hash new file mode 100644 index 0000000..606de81 --- /dev/null +++ b/buildroot/package/python-functools32/python-functools32.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/functools32/json, sha256 locally computed +md5 09f24ffd9af9f6cd0f63cb9f4e23d4b2 functools32-3.2.3-2.tar.gz +sha256 f6253dfbe0538ad2e387bd8fdfd9293c925d63553f5813c4e587745416501e6d functools32-3.2.3-2.tar.gz +sha256 3f9ea6b89abe1556b72aff67b987d64c8272564815cd6a2832e6c4f6abdfe3b1 LICENSE diff --git a/buildroot/package/python-functools32/python-functools32.mk b/buildroot/package/python-functools32/python-functools32.mk new file mode 100644 index 0000000..8a88bb2 --- /dev/null +++ b/buildroot/package/python-functools32/python-functools32.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-functools32 +# +################################################################################ + +PYTHON_FUNCTOOLS32_VERSION = 3.2.3-2 +PYTHON_FUNCTOOLS32_SOURCE = functools32-$(PYTHON_FUNCTOOLS32_VERSION).tar.gz +PYTHON_FUNCTOOLS32_SITE = https://pypi.python.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db +PYTHON_FUNCTOOLS32_SETUP_TYPE = distutils +PYTHON_FUNCTOOLS32_LICENSE = Python-2.0 +PYTHON_FUNCTOOLS32_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-futures/Config.in b/buildroot/package/python-futures/Config.in new file mode 100644 index 0000000..2eb40e9 --- /dev/null +++ b/buildroot/package/python-futures/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_FUTURES + bool "python-futures" + depends on BR2_PACKAGE_PYTHON # not needed for python3 + help + Backport of the concurrent.futures package from Python 3.2. + + https://github.com/agronholm/pythonfutures diff --git a/buildroot/package/python-futures/python-futures.hash b/buildroot/package/python-futures/python-futures.hash new file mode 100644 index 0000000..f0948ae --- /dev/null +++ b/buildroot/package/python-futures/python-futures.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/futures/json, sha256 locally computed +md5 ced2c365e518242512d7a398b515ff95 futures-3.0.5.tar.gz +sha256 0542525145d5afc984c88f914a0c85c77527f65946617edb5274f72406f981df futures-3.0.5.tar.gz diff --git a/buildroot/package/python-futures/python-futures.mk b/buildroot/package/python-futures/python-futures.mk new file mode 100644 index 0000000..fabfa6a --- /dev/null +++ b/buildroot/package/python-futures/python-futures.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-futures +# +################################################################################ + +PYTHON_FUTURES_VERSION = 3.0.5 +PYTHON_FUTURES_SOURCE = futures-$(PYTHON_FUTURES_VERSION).tar.gz +PYTHON_FUTURES_SITE = https://pypi.python.org/packages/55/db/97c1ca37edab586a1ae03d6892b6633d8eaa23b23ac40c7e5bbc55423c78 +PYTHON_FUTURES_SETUP_TYPE = setuptools +PYTHON_FUTURES_LICENSE = BSD-2-Clause +PYTHON_FUTURES_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-gobject/0001-add-PYTHON_INCLUDES-override.patch b/buildroot/package/python-gobject/0001-add-PYTHON_INCLUDES-override.patch new file mode 100644 index 0000000..d883f60 --- /dev/null +++ b/buildroot/package/python-gobject/0001-add-PYTHON_INCLUDES-override.patch @@ -0,0 +1,32 @@ +[PATCH] m4/python.m4: add PYTHON_INCLUDES override for cross compilation + +As the configure script mixes up host/target python. Equivalent to the +similar code in dbus-python. + +Signed-off-by: Peter Korsgaard +--- + m4/python.m4 | 4 ++++ + 1 file changed, 4 insertions(+) + +Index: python-gobject-2.28.6/m4/python.m4 +=================================================================== +--- python-gobject-2.28.6.orig/m4/python.m4 ++++ python-gobject-2.28.6/m4/python.m4 +@@ -43,6 +43,9 @@ + [AC_REQUIRE([AM_PATH_PYTHON]) + AC_MSG_CHECKING(for headers required to compile python extensions) + dnl deduce PYTHON_INCLUDES ++if test "${PYTHON_INCLUDES+set}" = set; then ++ AC_MSG_NOTICE([PYTHON_INCLUDES overridden to: $PYTHON_INCLUDES]) ++else + py_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"` + py_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"` + PYTHON_CONFIG=`which $PYTHON`-config +@@ -54,6 +57,7 @@ + PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" + fi + fi ++fi + AC_SUBST(PYTHON_INCLUDES) + dnl check if the headers exist: + save_CPPFLAGS="$CPPFLAGS" diff --git a/buildroot/package/python-gobject/Config.in b/buildroot/package/python-gobject/Config.in new file mode 100644 index 0000000..475ff25 --- /dev/null +++ b/buildroot/package/python-gobject/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_GOBJECT + bool "python-gobject" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + Python bindings for the GLib/GObject library + + https://wiki.gnome.org/action/show/Projects/PyGObject + +comment "python-gobject needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/python-gobject/python-gobject.hash b/buildroot/package/python-gobject/python-gobject.hash new file mode 100644 index 0000000..024419e --- /dev/null +++ b/buildroot/package/python-gobject/python-gobject.hash @@ -0,0 +1,2 @@ +# from http://ftp.gnome.org/pub/GNOME/sources/pygobject/2.28/pygobject-2.28.6.sha256sum +sha256 fb8a1d4f665130a125011659bd347c7339c944232163dbb9a34fd0686577adb8 pygobject-2.28.6.tar.xz diff --git a/buildroot/package/python-gobject/python-gobject.mk b/buildroot/package/python-gobject/python-gobject.mk new file mode 100644 index 0000000..cf5c874 --- /dev/null +++ b/buildroot/package/python-gobject/python-gobject.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# python-gobject +# +################################################################################ + +PYTHON_GOBJECT_VERSION_MAJOR = 2.28 +PYTHON_GOBJECT_VERSION = $(PYTHON_GOBJECT_VERSION_MAJOR).6 +PYTHON_GOBJECT_SOURCE = pygobject-$(PYTHON_GOBJECT_VERSION).tar.xz +PYTHON_GOBJECT_SITE = http://ftp.gnome.org/pub/gnome/sources/pygobject/$(PYTHON_GOBJECT_VERSION_MAJOR) +PYTHON_GOBJECT_LICENSE = LGPL-2.1+ +PYTHON_GOBJECT_LICENSE_FILES = COPYING +PYTHON_GOBJECT_DEPENDENCIES = host-pkgconf libglib2 +PYTHON_GOBJECT_CONF_OPTS = --disable-introspection +# for 0001-add-PYTHON_INCLUDES-override.patch +PYTHON_GOBJECT_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_PYTHON),y) +PYTHON_GOBJECT_DEPENDENCIES += python host-python + +PYTHON_GOBJECT_CONF_ENV = \ + PYTHON=$(HOST_DIR)/bin/python2 \ + PYTHON_INCLUDES="`$(STAGING_DIR)/usr/bin/python2-config --includes`" +else +PYTHON_GOBJECT_DEPENDENCIES += python3 host-python3 + +PYTHON_GOBJECT_CONF_ENV = \ + PYTHON=$(HOST_DIR)/bin/python3 \ + PYTHON_INCLUDES="`$(STAGING_DIR)/usr/bin/python3-config --includes`" +endif + +ifeq ($(BR2_PACKAGE_LIBFFI),y) +PYTHON_GOBJECT_CONF_OPTS += --with-ffi +PYTHON_GOBJECT_DEPENDENCIES += libffi +else +PYTHON_GOBJECT_CONF_OPTS += --without-ffi +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/python-gunicorn/Config.in b/buildroot/package/python-gunicorn/Config.in new file mode 100644 index 0000000..79cda3e --- /dev/null +++ b/buildroot/package/python-gunicorn/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_GUNICORN + bool "python-gunicorn" + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime + help + Gunicorn ‘Green Unicorn’ is a Python WSGI HTTP Server for + UNIX. It’s a pre-fork worker model ported from Ruby’s + Unicorn project. The Gunicorn server is broadly compatible + with various web frameworks, simply implemented, light on + server resource usage, and fairly speedy. + + http://gunicorn.org/ diff --git a/buildroot/package/python-gunicorn/python-gunicorn.hash b/buildroot/package/python-gunicorn/python-gunicorn.hash new file mode 100644 index 0000000..a282bc9 --- /dev/null +++ b/buildroot/package/python-gunicorn/python-gunicorn.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/gunicorn/json, sha256 locally computed +md5 338e5e8a83ea0f0625f768dba4597530 gunicorn-19.6.0.tar.gz +sha256 813f6916d18a4c8e90efde72f419308b357692f81333cb1125f80013d22fb618 gunicorn-19.6.0.tar.gz diff --git a/buildroot/package/python-gunicorn/python-gunicorn.mk b/buildroot/package/python-gunicorn/python-gunicorn.mk new file mode 100644 index 0000000..cfb7da1 --- /dev/null +++ b/buildroot/package/python-gunicorn/python-gunicorn.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# python-gunicorn +# +################################################################################ + +PYTHON_GUNICORN_VERSION = 19.6.0 +PYTHON_GUNICORN_SOURCE = gunicorn-$(PYTHON_GUNICORN_VERSION).tar.gz +PYTHON_GUNICORN_SITE = https://pypi.python.org/packages/84/ce/7ea5396efad1cef682bbc4068e72a0276341d9d9d0f501da609fab9fcb80 +PYTHON_GUNICORN_SETUP_TYPE = setuptools +PYTHON_GUNICORN_LICENSE = MIT +PYTHON_GUNICORN_LICENSE_FILES = LICENSE + +# At the end of the build, we try to compile all py files using the host python +# that has been built. +# The GAIO HTTP Worker is only compatible with Python3.4.2 and up. So don't try +# to compile it with python 2.x +ifeq ($(BR2_PACKAGE_PYTHON),y) +define PYTHON_GUNICORN_REMOVE_GAIO_WORKER + find $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/ \ + -name "_gaiohttp.py" -exec rm -f {} \; +endef +PYTHON_GUNICORN_POST_INSTALL_TARGET_HOOKS += PYTHON_GUNICORN_REMOVE_GAIO_WORKER +endif + +$(eval $(python-package)) diff --git a/buildroot/package/python-h2/Config.in b/buildroot/package/python-h2/Config.in new file mode 100644 index 0000000..dccee9b --- /dev/null +++ b/buildroot/package/python-h2/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_H2 + bool "python-h2" + select BR2_PACKAGE_PYTHON_HYPERFRAME # runtime + select BR2_PACKAGE_PYTHON_HPACK # runtime + help + HTTP/2 State-Machine based protocol implementation. + + http://hyper.rtfd.org diff --git a/buildroot/package/python-h2/python-h2.hash b/buildroot/package/python-h2/python-h2.hash new file mode 100644 index 0000000..e34f7be --- /dev/null +++ b/buildroot/package/python-h2/python-h2.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/h2/json, sha256 locally computed +md5 586686662928c2851eb0f1fe99bf279d h2-3.0.1.tar.gz +sha256 b2962f883fa392a23cbfcc4ad03c335bcc661be0cf9627657b589f0df2206e64 h2-3.0.1.tar.gz diff --git a/buildroot/package/python-h2/python-h2.mk b/buildroot/package/python-h2/python-h2.mk new file mode 100644 index 0000000..37f0156 --- /dev/null +++ b/buildroot/package/python-h2/python-h2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-h2 +# +################################################################################ + +PYTHON_H2_VERSION = 3.0.1 +PYTHON_H2_SOURCE = h2-$(PYTHON_H2_VERSION).tar.gz +PYTHON_H2_SITE = https://pypi.python.org/packages/3c/86/aebb88df3c87255cfd0ffd338608fbfb34d1c850750a486e7f05b013e5a3 +PYTHON_H2_SETUP_TYPE = setuptools +PYTHON_H2_LICENSE = MIT +PYTHON_H2_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-hpack/0001-Convert-HISTORY.rst-from-UTF-8-format-to-ASCII.patch b/buildroot/package/python-hpack/0001-Convert-HISTORY.rst-from-UTF-8-format-to-ASCII.patch new file mode 100644 index 0000000..015b8a2 --- /dev/null +++ b/buildroot/package/python-hpack/0001-Convert-HISTORY.rst-from-UTF-8-format-to-ASCII.patch @@ -0,0 +1,40 @@ +From 3d195f4f599f37c89419f1db1302f94acb38c264 Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Tue, 1 Aug 2017 10:15:33 +0200 +Subject: [PATCH] Convert HISTORY.rst from UTF-8 format to ASCII +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +UTF-8 formatted file breaks installations on some systems: + +Traceback (most recent call last): + File "setup.py", line 34, in + long_description=open('README.rst').read() + '\n\n' + open('HISTORY.rst').read(), + File "/home/peko/autobuild/instance-1/output/target/usr/lib/python3.6/encodings/ascii.py", line 26, in decode + return codecs.ascii_decode(input, self.errors)[0] +UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1125: ordinal not in range(128) + +To fix this error just replace '§' with 'S' meaning 'Section'. + +Signed-off-by: Yegor Yefremov +--- + HISTORY.rst | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/HISTORY.rst b/HISTORY.rst +index 37b2d9c..b9310f5 100644 +--- a/HISTORY.rst ++++ b/HISTORY.rst +@@ -27,7 +27,7 @@ Release History + - HPACK now tolerates receiving multiple header table size changes in sequence, + rather than only one. + - HPACK now forbids header table size changes anywhere but first in a header +- block, as required by RFC 7541 § 4.2. ++ block, as required by RFC 7541 S 4.2. + - Other miscellaneous performance improvements. + + 2.3.0 (2016-08-04) +-- +2.11.0 + diff --git a/buildroot/package/python-hpack/Config.in b/buildroot/package/python-hpack/Config.in new file mode 100644 index 0000000..b0ea03b --- /dev/null +++ b/buildroot/package/python-hpack/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_HPACK + bool "python-hpack" + help + Pure-Python HPACK header compression. + + http://hyper.rtfd.org diff --git a/buildroot/package/python-hpack/python-hpack.hash b/buildroot/package/python-hpack/python-hpack.hash new file mode 100644 index 0000000..445d4d5 --- /dev/null +++ b/buildroot/package/python-hpack/python-hpack.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/hpack/json, sha256 locally computed +md5 556b0ae66180f54c2ce8029a0952088b hpack-3.0.0.tar.gz +sha256 8eec9c1f4bfae3408a3f30500261f7e6a65912dc138526ea054f9ad98892e9d2 hpack-3.0.0.tar.gz diff --git a/buildroot/package/python-hpack/python-hpack.mk b/buildroot/package/python-hpack/python-hpack.mk new file mode 100644 index 0000000..d6b9664 --- /dev/null +++ b/buildroot/package/python-hpack/python-hpack.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-hpack +# +################################################################################ + +PYTHON_HPACK_VERSION = 3.0.0 +PYTHON_HPACK_SOURCE = hpack-$(PYTHON_HPACK_VERSION).tar.gz +PYTHON_HPACK_SITE = https://pypi.python.org/packages/44/f1/b4440e46e265a29c0cb7b09b6daec6edf93c79eae713cfed93fbbf8716c5 +PYTHON_HPACK_SETUP_TYPE = setuptools +PYTHON_HPACK_LICENSE = MIT +PYTHON_HPACK_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-html5lib/Config.in b/buildroot/package/python-html5lib/Config.in new file mode 100644 index 0000000..c3e9f2a --- /dev/null +++ b/buildroot/package/python-html5lib/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_HTML5LIB + bool "python-html5lib" + help + HTML parser based on the WHATWG HTML specification. + + https://github.com/html5lib/html5lib-python diff --git a/buildroot/package/python-html5lib/python-html5lib.hash b/buildroot/package/python-html5lib/python-html5lib.hash new file mode 100644 index 0000000..7ea082f --- /dev/null +++ b/buildroot/package/python-html5lib/python-html5lib.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/html5lib/json, sha256 locally computed +md5 5ada1243b7a863624b2f35245b2186e9 html5lib-1.0b10.tar.gz +sha256 0d5fd54d5b2b79b876007a70c033a4023577768d18022c15681c00561432a0f9 html5lib-1.0b10.tar.gz diff --git a/buildroot/package/python-html5lib/python-html5lib.mk b/buildroot/package/python-html5lib/python-html5lib.mk new file mode 100644 index 0000000..38affcb --- /dev/null +++ b/buildroot/package/python-html5lib/python-html5lib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-html5lib +# +################################################################################ + +PYTHON_HTML5LIB_VERSION = 1.0b10 +PYTHON_HTML5LIB_SOURCE = html5lib-$(PYTHON_HTML5LIB_VERSION).tar.gz +PYTHON_HTML5LIB_SITE = https://pypi.python.org/packages/97/16/982214624095c1420c75f3bd295d9e658794aafb95fc075823de107e0ae4 +PYTHON_HTML5LIB_LICENSE = MIT +PYTHON_HTML5LIB_LICENSE_FILES = LICENSE +PYTHON_HTML5LIB_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-httplib2/Config.in b/buildroot/package/python-httplib2/Config.in new file mode 100644 index 0000000..e42f513 --- /dev/null +++ b/buildroot/package/python-httplib2/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_HTTPLIB2 + bool "python-httplib2" + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 + help + httplib2 is a comprehensive HTTP client library, httplib2.py + supports many features left out of other HTTP libraries. + + https://pypi.python.org/pypi/httplib2 diff --git a/buildroot/package/python-httplib2/python-httplib2.hash b/buildroot/package/python-httplib2/python-httplib2.hash new file mode 100644 index 0000000..9a075b6 --- /dev/null +++ b/buildroot/package/python-httplib2/python-httplib2.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/httplib2/json, sha256 locally computed +md5 709c305e1b00e9c0af49ee816429569c httplib2-0.10.3.tar.gz +sha256 e404d3b7bd86c1bc931906098e7c1305d6a3a6dcef141b8bb1059903abb3ceeb httplib2-0.10.3.tar.gz diff --git a/buildroot/package/python-httplib2/python-httplib2.mk b/buildroot/package/python-httplib2/python-httplib2.mk new file mode 100644 index 0000000..7c14e24 --- /dev/null +++ b/buildroot/package/python-httplib2/python-httplib2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-httplib2 +# +################################################################################ + +PYTHON_HTTPLIB2_VERSION = 0.10.3 +PYTHON_HTTPLIB2_SOURCE = httplib2-$(PYTHON_HTTPLIB2_VERSION).tar.gz +PYTHON_HTTPLIB2_SITE = https://pypi.python.org/packages/e4/2e/a7e27d2c36076efeb8c0e519758968b20389adf57a9ce3af139891af2696 +PYTHON_HTTPLIB2_SETUP_TYPE = setuptools +PYTHON_HTTPLIB2_LICENSE = MIT +PYTHON_HTTPLIB2_LICENSE_FILES = PKG-INFO + +$(eval $(python-package)) diff --git a/buildroot/package/python-humanize/Config.in b/buildroot/package/python-humanize/Config.in new file mode 100644 index 0000000..f4f4e67 --- /dev/null +++ b/buildroot/package/python-humanize/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_HUMANIZE + bool "python-humanize" + help + Python humanize package contains various common humanization + utilities, like turning a number into a fuzzy human readable + duration ('3 minutes ago') or into a human readable size or + throughput. + + http://github.com/jmoiron/humanize diff --git a/buildroot/package/python-humanize/python-humanize.hash b/buildroot/package/python-humanize/python-humanize.hash new file mode 100644 index 0000000..bb66e44 --- /dev/null +++ b/buildroot/package/python-humanize/python-humanize.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/humanize/json, sha256 locally computed +md5 e8473d9dc1b220911cac2edd53b1d973 humanize-0.5.1.tar.gz +sha256 a43f57115831ac7c70de098e6ac46ac13be00d69abbf60bdcac251344785bb19 humanize-0.5.1.tar.gz diff --git a/buildroot/package/python-humanize/python-humanize.mk b/buildroot/package/python-humanize/python-humanize.mk new file mode 100644 index 0000000..60ec82b --- /dev/null +++ b/buildroot/package/python-humanize/python-humanize.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-humanize +# +################################################################################ + +PYTHON_HUMANIZE_VERSION = 0.5.1 +PYTHON_HUMANIZE_SOURCE = humanize-$(PYTHON_HUMANIZE_VERSION).tar.gz +PYTHON_HUMANIZE_SITE = https://pypi.python.org/packages/8c/e0/e512e4ac6d091fc990bbe13f9e0378f34cf6eecd1c6c268c9e598dcf5bb9 +PYTHON_HUMANIZE_SETUP_TYPE = setuptools +PYTHON_HUMANIZE_LICENSE = MIT +PYTHON_HUMANIZE_LICENSE_FILES = LICENCE + +$(eval $(python-package)) diff --git a/buildroot/package/python-hyperframe/Config.in b/buildroot/package/python-hyperframe/Config.in new file mode 100644 index 0000000..f3318a2 --- /dev/null +++ b/buildroot/package/python-hyperframe/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_HYPERFRAME + bool "python-hyperframe" + help + HTTP/2 framing layer for Python. + + http://hyper.rtfd.org diff --git a/buildroot/package/python-hyperframe/python-hyperframe.hash b/buildroot/package/python-hyperframe/python-hyperframe.hash new file mode 100644 index 0000000..e613937 --- /dev/null +++ b/buildroot/package/python-hyperframe/python-hyperframe.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/hyperframe/json, sha256 locally computed +md5 c2aa71dd091836e72d2c6784d1dd1591 hyperframe-5.1.0.tar.gz +sha256 a25944539db36d6a2e47689e7915dcee562b3f8d10c6cdfa0d53c91ed692fb04 hyperframe-5.1.0.tar.gz diff --git a/buildroot/package/python-hyperframe/python-hyperframe.mk b/buildroot/package/python-hyperframe/python-hyperframe.mk new file mode 100644 index 0000000..8d0688f --- /dev/null +++ b/buildroot/package/python-hyperframe/python-hyperframe.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-hyperframe +# +################################################################################ + +PYTHON_HYPERFRAME_VERSION = 5.1.0 +PYTHON_HYPERFRAME_SOURCE = hyperframe-$(PYTHON_HYPERFRAME_VERSION).tar.gz +PYTHON_HYPERFRAME_SITE = https://pypi.python.org/packages/a4/59/dddaddc73b4d53e9649850998e23b6daca80817c5442465a12423235d20b +PYTHON_HYPERFRAME_SETUP_TYPE = setuptools +PYTHON_HYPERFRAME_LICENSE = MIT +PYTHON_HYPERFRAME_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-hyperlink/Config.in b/buildroot/package/python-hyperlink/Config.in new file mode 100644 index 0000000..11ac814 --- /dev/null +++ b/buildroot/package/python-hyperlink/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_HYPERLINK + bool "python-hyperlink" + help + A featureful, correct URL for Python. + + https://github.com/python-hyper/hyperlink diff --git a/buildroot/package/python-hyperlink/python-hyperlink.hash b/buildroot/package/python-hyperlink/python-hyperlink.hash new file mode 100644 index 0000000..565a34d --- /dev/null +++ b/buildroot/package/python-hyperlink/python-hyperlink.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/hyperlink/json, sha256 locally computed +md5 7a86b09d80b8f0c89f6b61efa0ebaab9 hyperlink-17.3.0.tar.gz +sha256 ddadbbdda2b94182da14be1b5d26ec3188dfdf9687b9b8c8d810f52f79b7af1a hyperlink-17.3.0.tar.gz diff --git a/buildroot/package/python-hyperlink/python-hyperlink.mk b/buildroot/package/python-hyperlink/python-hyperlink.mk new file mode 100644 index 0000000..7b48e36 --- /dev/null +++ b/buildroot/package/python-hyperlink/python-hyperlink.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-hyperlink +# +################################################################################ + +PYTHON_HYPERLINK_VERSION = 17.3.0 +PYTHON_HYPERLINK_SOURCE = hyperlink-$(PYTHON_HYPERLINK_VERSION).tar.gz +PYTHON_HYPERLINK_SITE = https://pypi.python.org/packages/61/9c/69aa5d6942271961ad1fff910db77706623423d054ecb647da963efdf49a +PYTHON_HYPERLINK_SETUP_TYPE = setuptools +PYTHON_HYPERLINK_LICENSE = MIT +PYTHON_HYPERLINK_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-ibmiotf/Config.in b/buildroot/package/python-ibmiotf/Config.in new file mode 100644 index 0000000..66d5868 --- /dev/null +++ b/buildroot/package/python-ibmiotf/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_IBMIOTF + bool "python-ibmiotf" + select BR2_PACKAGE_PYTHON_DICTTOXML # runtime + select BR2_PACKAGE_PYTHON_ISO8601 # runtime + select BR2_PACKAGE_PYTHON_PAHO_MQTT # runtime + select BR2_PACKAGE_PYTHON_PYTZ # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_REQUESTS_TOOLBELT # runtime + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_XMLTODICT # runtime + help + Python Client for IBM Watson IoT Platform. + + https://github.com/ibm-watson-iot/iot-python diff --git a/buildroot/package/python-ibmiotf/python-ibmiotf.hash b/buildroot/package/python-ibmiotf/python-ibmiotf.hash new file mode 100644 index 0000000..9649876 --- /dev/null +++ b/buildroot/package/python-ibmiotf/python-ibmiotf.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ab230bc4c90af4237abe790ebc6b171706a35971b886f1724d879c2f328a616b python-ibmiotf-0.2.8.tar.gz +sha256 d8288e11fc42988629f7c0b649fa007332dd0187b010d025feaf7b1925376e8d LICENSE diff --git a/buildroot/package/python-ibmiotf/python-ibmiotf.mk b/buildroot/package/python-ibmiotf/python-ibmiotf.mk new file mode 100644 index 0000000..9853389 --- /dev/null +++ b/buildroot/package/python-ibmiotf/python-ibmiotf.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-ibmiotf +# +################################################################################ + +PYTHON_IBMIOTF_VERSION = 0.2.8 +PYTHON_IBMIOTF_SITE = $(call github,ibm-watson-iot,iot-python,$(PYTHON_IBMIOTF_VERSION)) +PYTHON_IBMIOTF_SETUP_TYPE = setuptools +PYTHON_IBMIOTF_LICENSE = EPL-1.0 +PYTHON_IBMIOTF_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-id3/Config.in b/buildroot/package/python-id3/Config.in new file mode 100644 index 0000000..6ddfd54 --- /dev/null +++ b/buildroot/package/python-id3/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_ID3 + bool "python-id3" + depends on BR2_PACKAGE_PYTHON + help + This module allows one to read and manipulate so-called ID3 + informational tags on MP3 files through an object-oriented + Python interface. + + http://id3-py.sourceforge.net/ diff --git a/buildroot/package/python-id3/python-id3.hash b/buildroot/package/python-id3/python-id3.hash new file mode 100644 index 0000000..28b58e8 --- /dev/null +++ b/buildroot/package/python-id3/python-id3.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 ba612342b59a49cbf9a7eb23a646667757ffda96dc23b67245fc6cd8d90c2022 id3-py_1.2.tar.gz diff --git a/buildroot/package/python-id3/python-id3.mk b/buildroot/package/python-id3/python-id3.mk new file mode 100644 index 0000000..d4cdded --- /dev/null +++ b/buildroot/package/python-id3/python-id3.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-id3 +# +################################################################################ + +PYTHON_ID3_VERSION = 1.2 +PYTHON_ID3_SOURCE = id3-py_$(PYTHON_ID3_VERSION).tar.gz +PYTHON_ID3_SITE = http://downloads.sourceforge.net/project/id3-py/id3-py/$(PYTHON_ID3_VERSION) +PYTHON_ID3_SETUP_TYPE = distutils +PYTHON_ID3_LICENSE = GPL-2.0+ +PYTHON_ID3_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/buildroot/package/python-idna/Config.in b/buildroot/package/python-idna/Config.in new file mode 100644 index 0000000..4ff4581 --- /dev/null +++ b/buildroot/package/python-idna/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_IDNA + bool "python-idna" + help + A library to support the Internationalised Domain Names in + Applications (IDNA) protocol as specified in RFC 5891. This + version of the protocol is often referred to as “IDNA2008” + and can produce different results from the earlier standard + from 2003. + + https://github.com/kjd/idna diff --git a/buildroot/package/python-idna/python-idna.hash b/buildroot/package/python-idna/python-idna.hash new file mode 100644 index 0000000..839154a --- /dev/null +++ b/buildroot/package/python-idna/python-idna.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/idna/json, sha256 locally computed +md5 fc1d992bef73e8824db411bb5d21f012 idna-2.5.tar.gz +sha256 3cb5ce08046c4e3a560fc02f138d0ac63e00f8ce5901a56b32ec8b7994082aab idna-2.5.tar.gz diff --git a/buildroot/package/python-idna/python-idna.mk b/buildroot/package/python-idna/python-idna.mk new file mode 100644 index 0000000..c8d1793 --- /dev/null +++ b/buildroot/package/python-idna/python-idna.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-idna +# +################################################################################ + +PYTHON_IDNA_VERSION = 2.5 +PYTHON_IDNA_SOURCE = idna-$(PYTHON_IDNA_VERSION).tar.gz +PYTHON_IDNA_SITE = https://pypi.python.org/packages/d8/82/28a51052215014efc07feac7330ed758702fc0581347098a81699b5281cb +PYTHON_IDNA_LICENSE = BSD-3-Clause +PYTHON_IDNA_LICENSE_FILES = LICENSE.rst +PYTHON_IDNA_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-incremental/Config.in b/buildroot/package/python-incremental/Config.in new file mode 100644 index 0000000..64f8623 --- /dev/null +++ b/buildroot/package/python-incremental/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_INCREMENTAL + bool "python-incremental" + help + A library for versioning your Python projects. + + https://github.com/hawkowl/incremental diff --git a/buildroot/package/python-incremental/python-incremental.hash b/buildroot/package/python-incremental/python-incremental.hash new file mode 100644 index 0000000..580e76c --- /dev/null +++ b/buildroot/package/python-incremental/python-incremental.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/incremental/json, sha256 locally computed +md5 3fe6b3b1da1d26a48187fb27e969f072 incremental-16.10.1.tar.gz +sha256 14ad6b720ec47aad6c9caa83e47db1843e2b9b98742da5dda08e16a99f400342 incremental-16.10.1.tar.gz diff --git a/buildroot/package/python-incremental/python-incremental.mk b/buildroot/package/python-incremental/python-incremental.mk new file mode 100644 index 0000000..fc1975f --- /dev/null +++ b/buildroot/package/python-incremental/python-incremental.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-incremental +# +################################################################################ + +PYTHON_INCREMENTAL_VERSION = 16.10.1 +PYTHON_INCREMENTAL_SOURCE = incremental-$(PYTHON_INCREMENTAL_VERSION).tar.gz +PYTHON_INCREMENTAL_SITE = https://pypi.python.org/packages/da/b0/32233c9e84b0d44b39015fba8fec03e88053723c1b455925081dc6ccd9e7 +PYTHON_INCREMENTAL_SETUP_TYPE = setuptools +PYTHON_INCREMENTAL_LICENSE = MIT +PYTHON_INCREMENTAL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-iniparse/Config.in b/buildroot/package/python-iniparse/Config.in new file mode 100644 index 0000000..65c1064 --- /dev/null +++ b/buildroot/package/python-iniparse/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_INIPARSE + bool "python-iniparse" + depends on BR2_PACKAGE_PYTHON + help + iniparse is an INI parser for Python which is API compatible + with the standard library's ConfigParser, preserves + structure of INI files (order of sections & options, + indentation, comments, and blank lines are preserved when + data is updated), and is more convenient to use. + + https://pypi.python.org/pypi/iniparse diff --git a/buildroot/package/python-iniparse/python-iniparse.hash b/buildroot/package/python-iniparse/python-iniparse.hash new file mode 100644 index 0000000..f1f8038 --- /dev/null +++ b/buildroot/package/python-iniparse/python-iniparse.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=5e573e9e9733d97623881ce9bbe5eca6, sha256 locally computed +md5 5e573e9e9733d97623881ce9bbe5eca6 iniparse-0.4.tar.gz +sha256 abc1ee12d2cfb2506109072d6c21e40b6c75a3fe90a9c924327d80bc0d99c054 iniparse-0.4.tar.gz diff --git a/buildroot/package/python-iniparse/python-iniparse.mk b/buildroot/package/python-iniparse/python-iniparse.mk new file mode 100644 index 0000000..5c4e03c --- /dev/null +++ b/buildroot/package/python-iniparse/python-iniparse.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-iniparse +# +################################################################################ + +PYTHON_INIPARSE_VERSION = 0.4 +PYTHON_INIPARSE_SOURCE = iniparse-$(PYTHON_INIPARSE_VERSION).tar.gz +PYTHON_INIPARSE_SITE = https://pypi.python.org/packages/source/i/iniparse +PYTHON_INIPARSE_LICENSE = Python-2.0, MIT +PYTHON_INIPARSE_LICENSE_FILES = LICENSE-PSF LICENSE +PYTHON_INIPARSE_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-iowait/Config.in b/buildroot/package/python-iowait/Config.in new file mode 100644 index 0000000..ebe96db --- /dev/null +++ b/buildroot/package/python-iowait/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_IOWAIT + bool "python-iowait" + help + Platform-independent module for I/O completion events. + + https://launchpad.net/python-iowait diff --git a/buildroot/package/python-iowait/python-iowait.hash b/buildroot/package/python-iowait/python-iowait.hash new file mode 100644 index 0000000..fcaf8cc --- /dev/null +++ b/buildroot/package/python-iowait/python-iowait.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/iowait/json, sha256 locally computed +md5 f49ca7766fe4a67e03a731e575614f87 iowait-0.2.tar.gz +sha256 ab1bc2eb84c22ccf61f17a0024f9fb6df781b39f1852764a66a7769d5adfb299 iowait-0.2.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LESSER diff --git a/buildroot/package/python-iowait/python-iowait.mk b/buildroot/package/python-iowait/python-iowait.mk new file mode 100644 index 0000000..e327053 --- /dev/null +++ b/buildroot/package/python-iowait/python-iowait.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-iowait +# +################################################################################ + +PYTHON_IOWAIT_VERSION = 0.2 +PYTHON_IOWAIT_SOURCE = iowait-$(PYTHON_IOWAIT_VERSION).tar.gz +PYTHON_IOWAIT_SITE = https://pypi.python.org/packages/65/30/e953673fe9619938e9c74408401cf865f37716da89f61f6e5d9328c0f71e +PYTHON_IOWAIT_SETUP_TYPE = distutils +PYTHON_IOWAIT_LICENSE = LGPL-3.0+ +PYTHON_IOWAIT_LICENSE_FILES = COPYING.LESSER + +$(eval $(python-package)) diff --git a/buildroot/package/python-ipaddr/Config.in b/buildroot/package/python-ipaddr/Config.in new file mode 100644 index 0000000..5727927 --- /dev/null +++ b/buildroot/package/python-ipaddr/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_IPADDR + bool "python-ipaddr" + depends on BR2_PACKAGE_PYTHON # included since python3.3 + help + An IPv4/IPv6 manipulation library in Python. This library is + used to create/poke/manipulate IPv4 and IPv6 addresses and + prefixes. + + https://github.com/google/ipaddr-py diff --git a/buildroot/package/python-ipaddr/python-ipaddr.hash b/buildroot/package/python-ipaddr/python-ipaddr.hash new file mode 100644 index 0000000..99e1ca9 --- /dev/null +++ b/buildroot/package/python-ipaddr/python-ipaddr.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=f2c7852f95862715f92e7d089dc3f2cf, sha256 locally computed +md5 f2c7852f95862715f92e7d089dc3f2cf ipaddr-2.1.11.tar.gz +sha256 1b555b8a8800134fdafe32b7d0cb52f5bdbfdd093707c3dd484c5ea59f1d98b7 ipaddr-2.1.11.tar.gz diff --git a/buildroot/package/python-ipaddr/python-ipaddr.mk b/buildroot/package/python-ipaddr/python-ipaddr.mk new file mode 100644 index 0000000..84c486d --- /dev/null +++ b/buildroot/package/python-ipaddr/python-ipaddr.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ipaddr +# +################################################################################ + +PYTHON_IPADDR_VERSION = 2.1.11 +PYTHON_IPADDR_SOURCE = ipaddr-$(PYTHON_IPADDR_VERSION).tar.gz +PYTHON_IPADDR_SITE = https://pypi.python.org/packages/source/i/ipaddr +PYTHON_IPADDR_SETUP_TYPE = distutils +PYTHON_IPADDR_LICENSE = Apache-2.0 +PYTHON_IPADDR_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/buildroot/package/python-ipaddress/Config.in b/buildroot/package/python-ipaddress/Config.in new file mode 100644 index 0000000..b2b9f0b --- /dev/null +++ b/buildroot/package/python-ipaddress/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_IPADDRESS + bool "python-ipaddress" + depends on BR2_PACKAGE_PYTHON + help + Python 3.3's ipaddress for older Python versions. + + https://github.com/phihag/ipaddress diff --git a/buildroot/package/python-ipaddress/python-ipaddress.hash b/buildroot/package/python-ipaddress/python-ipaddress.hash new file mode 100644 index 0000000..c4fdf6d --- /dev/null +++ b/buildroot/package/python-ipaddress/python-ipaddress.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/ipaddress/json, sha256 locally computed +md5 310c2dfd64eb6f0df44aa8c59f2334a7 ipaddress-1.0.18.tar.gz +sha256 5d8534c8e185f2d8a1fda1ef73f2c8f4b23264e8e30063feeb9511d492a413e1 ipaddress-1.0.18.tar.gz diff --git a/buildroot/package/python-ipaddress/python-ipaddress.mk b/buildroot/package/python-ipaddress/python-ipaddress.mk new file mode 100644 index 0000000..646db5d --- /dev/null +++ b/buildroot/package/python-ipaddress/python-ipaddress.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ipaddress +# +################################################################################ + +PYTHON_IPADDRESS_VERSION = 1.0.18 +PYTHON_IPADDRESS_SOURCE = ipaddress-$(PYTHON_IPADDRESS_VERSION).tar.gz +PYTHON_IPADDRESS_SITE = https://pypi.python.org/packages/4e/13/774faf38b445d0b3a844b65747175b2e0500164b7c28d78e34987a5bfe06 +PYTHON_IPADDRESS_LICENSE = Python-2.0 +PYTHON_IPADDRESS_LICENSE_FILES = LICENSE +PYTHON_IPADDRESS_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-ipy/Config.in b/buildroot/package/python-ipy/Config.in new file mode 100644 index 0000000..bead932 --- /dev/null +++ b/buildroot/package/python-ipy/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_IPY + bool "python-ipy" + depends on BR2_PACKAGE_PYTHON + help + IPy - class and tools for handling of IPv4 and + IPv6 addresses and networks. + + https://github.com/haypo/python-ipy/ diff --git a/buildroot/package/python-ipy/python-ipy.hash b/buildroot/package/python-ipy/python-ipy.hash new file mode 100644 index 0000000..ed93448 --- /dev/null +++ b/buildroot/package/python-ipy/python-ipy.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/ipy/json, sha256 locally computed +md5 7b8c6eb4111b15aea31b67108e769712 IPy-0.83.tar.gz +sha256 61da5a532b159b387176f6eabf11946e7458b6df8fb8b91ff1d345ca7a6edab8 IPy-0.83.tar.gz diff --git a/buildroot/package/python-ipy/python-ipy.mk b/buildroot/package/python-ipy/python-ipy.mk new file mode 100644 index 0000000..2b2bdf2 --- /dev/null +++ b/buildroot/package/python-ipy/python-ipy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ipy +# +################################################################################ + +PYTHON_IPY_VERSION = 0.83 +PYTHON_IPY_SOURCE = IPy-$(PYTHON_IPY_VERSION).tar.gz +PYTHON_IPY_SITE = https://pypi.python.org/packages/88/28/79162bfc351a3f1ab44d663ab3f03fb495806fdb592170990a1568ffbf63 +PYTHON_IPY_LICENSE = BSD-3-Clause +PYTHON_IPY_LICENSE_FILES = COPYING +PYTHON_IPY_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-ipython-genutils/Config.in b/buildroot/package/python-ipython-genutils/Config.in new file mode 100644 index 0000000..d49442e --- /dev/null +++ b/buildroot/package/python-ipython-genutils/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_IPYTHON_GENUTILS + bool "python-ipython-genutils" + help + IPython vestigial utilities + + https://pypi.python.org/pypi/ipython_genutils diff --git a/buildroot/package/python-ipython-genutils/python-ipython-genutils.hash b/buildroot/package/python-ipython-genutils/python-ipython-genutils.hash new file mode 100644 index 0000000..6fa2bc5 --- /dev/null +++ b/buildroot/package/python-ipython-genutils/python-ipython-genutils.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/ipython_genutils/json, sha256 locally computed +md5 5a4f9781f78466da0ea1a648f3e1f79f ipython_genutils-0.2.0.tar.gz +sha256 eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8 ipython_genutils-0.2.0.tar.gz diff --git a/buildroot/package/python-ipython-genutils/python-ipython-genutils.mk b/buildroot/package/python-ipython-genutils/python-ipython-genutils.mk new file mode 100644 index 0000000..4e8cc28 --- /dev/null +++ b/buildroot/package/python-ipython-genutils/python-ipython-genutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ipython-genutils +# +################################################################################ + +PYTHON_IPYTHON_GENUTILS_VERSION = 0.2.0 +PYTHON_IPYTHON_GENUTILS_SOURCE = ipython_genutils-$(PYTHON_IPYTHON_GENUTILS_VERSION).tar.gz +PYTHON_IPYTHON_GENUTILS_SITE = https://pypi.python.org/packages/e8/69/fbeffffc05236398ebfcfb512b6d2511c622871dca1746361006da310399 +PYTHON_IPYTHON_GENUTILS_LICENSE = BSD-3-Clause +PYTHON_IPYTHON_GENUTILS_LICENSE_FILES = COPYING.md +PYTHON_IPYTHON_GENUTILS_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-ipython/0001-set-correct-python-executable-path.patch b/buildroot/package/python-ipython/0001-set-correct-python-executable-path.patch new file mode 100644 index 0000000..0fbd5a1 --- /dev/null +++ b/buildroot/package/python-ipython/0001-set-correct-python-executable-path.patch @@ -0,0 +1,15 @@ +Set correct Python executable path + +Signed-off-by: Philippe Proulx + +--- python-ipython-2.1.0/setupbase.py 2014-05-21 15:19:12.000000000 -0400 ++++ python-ipython-2.1.0-new/setupbase.py 2014-07-23 23:34:32.892030423 -0400 +@@ -394,7 +394,7 @@ class build_scripts_entrypt(build_script + + mod, func = entrypt.split(':') + with open(outfile, 'w') as f: +- f.write(script_src.format(executable=sys.executable, ++ f.write(script_src.format(executable='/usr/bin/env python', + mod=mod, func=func)) + + return outfiles, outfiles diff --git a/buildroot/package/python-ipython/Config.in b/buildroot/package/python-ipython/Config.in new file mode 100644 index 0000000..d8164af --- /dev/null +++ b/buildroot/package/python-ipython/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PYTHON_IPYTHON + bool "python-ipython" + select BR2_PACKAGE_PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_DECORATOR # runtime + select BR2_PACKAGE_PYTHON_PATHLIB2 if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_PICKLESHARE # runtime + select BR2_PACKAGE_PYTHON_PROMPT_TOOLKIT # runtime + select BR2_PACKAGE_PYTHON_PYGMENTS # runtime + select BR2_PACKAGE_PYTHON_PEXPECT # runtime + select BR2_PACKAGE_PYTHON_SIMPLEGENERIC # runtime + select BR2_PACKAGE_PYTHON_TRAITLETS # runtime + help + IPython is a command shell for interactive computing in + multiple programming languages, originally developed for the + Python programming language, that offers enhanced + introspection, rich media, additional shell syntax, tab + completion, and rich history. + + http://ipython.org/ diff --git a/buildroot/package/python-ipython/python-ipython.hash b/buildroot/package/python-ipython/python-ipython.hash new file mode 100644 index 0000000..af1ed94 --- /dev/null +++ b/buildroot/package/python-ipython/python-ipython.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/ipython/json, sha256 locally computed +md5 d8cc938f46801060239184a35ec9c5a6 ipython-5.4.0.tar.gz +sha256 6907826c427c917bf0cdab71ee728288b1f1975c4b94b3ed608b67db3183c974 ipython-5.4.0.tar.gz diff --git a/buildroot/package/python-ipython/python-ipython.mk b/buildroot/package/python-ipython/python-ipython.mk new file mode 100644 index 0000000..5d92546 --- /dev/null +++ b/buildroot/package/python-ipython/python-ipython.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ipython +# +################################################################################ + +PYTHON_IPYTHON_VERSION = 5.4.0 +PYTHON_IPYTHON_SOURCE = ipython-$(PYTHON_IPYTHON_VERSION).tar.gz +PYTHON_IPYTHON_SITE = https://pypi.python.org/packages/36/cd/765f53135bbbbcd691858aba3af124453a230fe0c752f009f69012fce5d5 +PYTHON_IPYTHON_LICENSE = BSD-3-Clause +PYTHON_IPYTHON_LICENSE_FILES = COPYING.rst +PYTHON_IPYTHON_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-iso8601/Config.in b/buildroot/package/python-iso8601/Config.in new file mode 100644 index 0000000..9e4610c --- /dev/null +++ b/buildroot/package/python-iso8601/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_ISO8601 + bool "python-iso8601" + help + Simple module to parse ISO 8601 dates. + + https://bitbucket.org/micktwomey/pyiso8601 diff --git a/buildroot/package/python-iso8601/python-iso8601.hash b/buildroot/package/python-iso8601/python-iso8601.hash new file mode 100644 index 0000000..57604cc --- /dev/null +++ b/buildroot/package/python-iso8601/python-iso8601.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/iso8601/json, sha256 locally computed +md5 4de940f691c5ea759fb254384c8ddcf6 iso8601-0.1.12.tar.gz +sha256 49c4b20e1f38aa5cf109ddcd39647ac419f928512c869dc01d5c7098eddede82 iso8601-0.1.12.tar.gz +sha256 116d368d14a8cf0061027c944c60ee20b476ce42814818a7d627396906761f16 LICENSE diff --git a/buildroot/package/python-iso8601/python-iso8601.mk b/buildroot/package/python-iso8601/python-iso8601.mk new file mode 100644 index 0000000..7fc171d --- /dev/null +++ b/buildroot/package/python-iso8601/python-iso8601.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-iso8601 +# +################################################################################ + +PYTHON_ISO8601_VERSION = 0.1.12 +PYTHON_ISO8601_SOURCE = iso8601-$(PYTHON_ISO8601_VERSION).tar.gz +PYTHON_ISO8601_SITE = https://pypi.python.org/packages/45/13/3db24895497345fb44c4248c08b16da34a9eb02643cea2754b21b5ed08b0 +PYTHON_ISO8601_SETUP_TYPE = setuptools +PYTHON_ISO8601_LICENSE = MIT +PYTHON_ISO8601_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-itsdangerous/Config.in b/buildroot/package/python-itsdangerous/Config.in new file mode 100644 index 0000000..39ec0b7 --- /dev/null +++ b/buildroot/package/python-itsdangerous/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_ITSDANGEROUS + bool "python-itsdangerous" + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + help + Itsdangerous contains various helpers to pass data to + untrusted environments and to get it back safe and sound. + + http://pythonhosted.org/itsdangerous/ diff --git a/buildroot/package/python-itsdangerous/python-itsdangerous.hash b/buildroot/package/python-itsdangerous/python-itsdangerous.hash new file mode 100644 index 0000000..a927b8b --- /dev/null +++ b/buildroot/package/python-itsdangerous/python-itsdangerous.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b035b2da1d493b00a5ee7a5b750f96929de87b610643939fbe382902774626fc python-itsdangerous-0.24.tar.gz diff --git a/buildroot/package/python-itsdangerous/python-itsdangerous.mk b/buildroot/package/python-itsdangerous/python-itsdangerous.mk new file mode 100644 index 0000000..45adbb0 --- /dev/null +++ b/buildroot/package/python-itsdangerous/python-itsdangerous.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-itsdangerous +# +################################################################################ + +PYTHON_ITSDANGEROUS_VERSION = 0.24 +PYTHON_ITSDANGEROUS_SITE = $(call github,mitsuhiko,itsdangerous,$(PYTHON_ITSDANGEROUS_VERSION)) +PYTHON_ITSDANGEROUS_SETUP_TYPE = setuptools +PYTHON_ITSDANGEROUS_LICENSE = BSD-3-Clause +PYTHON_ITSDANGEROUS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-jaraco-classes/Config.in b/buildroot/package/python-jaraco-classes/Config.in new file mode 100644 index 0000000..05c1123 --- /dev/null +++ b/buildroot/package/python-jaraco-classes/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_JARACO_CLASSES + bool "python-jaraco-classes" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Utility functions for Python class constructs. + + https://github.com/jaraco/jaraco.classes diff --git a/buildroot/package/python-jaraco-classes/python-jaraco-classes.hash b/buildroot/package/python-jaraco-classes/python-jaraco-classes.hash new file mode 100644 index 0000000..bc30c5f --- /dev/null +++ b/buildroot/package/python-jaraco-classes/python-jaraco-classes.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/jaraco.classes/json, sha256 locally computed +md5 c0cb1a0ce529e3cdbca9d99742071a04 jaraco.classes-1.4.3.tar.gz +sha256 e347f2b502521bfc35c57ab4695e8b6d7371625c392a0ca0d46742ee93359d3e jaraco.classes-1.4.3.tar.gz +sha256 a55e2ffe9b44998e621d51d8c094bed09acc4b5236ee73d7df395a33ba3c18fd LICENSE diff --git a/buildroot/package/python-jaraco-classes/python-jaraco-classes.mk b/buildroot/package/python-jaraco-classes/python-jaraco-classes.mk new file mode 100644 index 0000000..c361e97 --- /dev/null +++ b/buildroot/package/python-jaraco-classes/python-jaraco-classes.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-jaraco-classes +# +################################################################################ + +PYTHON_JARACO_CLASSES_VERSION = 1.4.3 +PYTHON_JARACO_CLASSES_SOURCE = jaraco.classes-$(PYTHON_JARACO_CLASSES_VERSION).tar.gz +PYTHON_JARACO_CLASSES_SITE = https://pypi.python.org/packages/b3/ce/031a6004619c2a3744b977b4a8414d7e8087afe6247110efcac797fee7f1 +PYTHON_JARACO_CLASSES_LICENSE = MIT +PYTHON_JARACO_CLASSES_LICENSE_FILES = LICENSE +PYTHON_JARACO_CLASSES_SETUP_TYPE = setuptools +PYTHON_JARACO_CLASSES_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/buildroot/package/python-jinja2/Config.in b/buildroot/package/python-jinja2/Config.in new file mode 100644 index 0000000..a1900e9 --- /dev/null +++ b/buildroot/package/python-jinja2/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_JINJA2 + bool "python-jinja2" + select BR2_PACKAGE_PYTHON_MARKUPSAFE # runtime + help + Jinja2 is a template engine written in pure Python. It + provides a Django inspired non-XML syntax but supports + inline expressions and an optional sandboxed environment. + + http://jinja.pocoo.org/ diff --git a/buildroot/package/python-jinja2/python-jinja2.hash b/buildroot/package/python-jinja2/python-jinja2.hash new file mode 100644 index 0000000..f5a0972 --- /dev/null +++ b/buildroot/package/python-jinja2/python-jinja2.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/jinja2/json, sha256 locally computed +md5 9e55f0db6620dd99a1b366183a94270d Jinja2-2.9.5.tar.gz +sha256 702a24d992f856fa8d5a7a36db6128198d0c21e1da34448ca236c42e92384825 Jinja2-2.9.5.tar.gz diff --git a/buildroot/package/python-jinja2/python-jinja2.mk b/buildroot/package/python-jinja2/python-jinja2.mk new file mode 100644 index 0000000..c7dd490 --- /dev/null +++ b/buildroot/package/python-jinja2/python-jinja2.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# python-jinja2 +# +################################################################################ + +PYTHON_JINJA2_VERSION = 2.9.5 +PYTHON_JINJA2_SOURCE = Jinja2-$(PYTHON_JINJA2_VERSION).tar.gz +PYTHON_JINJA2_SITE = https://pypi.python.org/packages/71/59/d7423bd5e7ddaf3a1ce299ab4490e9044e8dfd195420fc83a24de9e60726 +PYTHON_JINJA2_SETUP_TYPE = setuptools +PYTHON_JINJA2_LICENSE = BSD-3-Clause +PYTHON_JINJA2_LICENSE_FILES = LICENSE +# In host build, setup.py tries to download markupsafe if it is not installed +HOST_PYTHON_JINJA2_DEPENDENCIES = host-python-markupsafe + +# Both asyncsupport.py and asyncfilters.py use async feature, that is +# not available in Python 2 and some features available in Python 3.6. +# So in both cases *.py compilation would produce compiler errors. +# Hence remove both files after package extraction. +ifeq ($(BR2_PACKAGE_PYTHON),y) +define PYTHON_JINJA2_REMOVE_ASYNC_SUPPORT + rm $(@D)/jinja2/asyncsupport.py $(@D)/jinja2/asyncfilters.py +endef + +PYTHON_JINJA2_POST_EXTRACT_HOOKS = PYTHON_JINJA2_REMOVE_ASYNC_SUPPORT +endif + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-json-schema-validator/Config.in b/buildroot/package/python-json-schema-validator/Config.in new file mode 100644 index 0000000..e50e8ee --- /dev/null +++ b/buildroot/package/python-json-schema-validator/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_JSON_SCHEMA_VALIDATOR + bool "python-json-schema-validator" + help + JSON Schema Validator + + https://pypi.python.org/pypi/json-schema-validator diff --git a/buildroot/package/python-json-schema-validator/python-json-schema-validator.hash b/buildroot/package/python-json-schema-validator/python-json-schema-validator.hash new file mode 100644 index 0000000..7360aba --- /dev/null +++ b/buildroot/package/python-json-schema-validator/python-json-schema-validator.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/json-schema-validator/json, sha256 locally computed +md5 7691b41739faaa8b0965279e72889932 json-schema-validator-2.4.1.tar.gz +sha256 1562a21d83e56231cef09b9aa2c06e8f845974bd26f24be293de6cab9a2fac91 json-schema-validator-2.4.1.tar.gz diff --git a/buildroot/package/python-json-schema-validator/python-json-schema-validator.mk b/buildroot/package/python-json-schema-validator/python-json-schema-validator.mk new file mode 100644 index 0000000..c0a335c --- /dev/null +++ b/buildroot/package/python-json-schema-validator/python-json-schema-validator.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-json-schema-validator +# +################################################################################ + +PYTHON_JSON_SCHEMA_VALIDATOR_VERSION = 2.4.1 +PYTHON_JSON_SCHEMA_VALIDATOR_SOURCE = json-schema-validator-$(PYTHON_JSON_SCHEMA_VALIDATOR_VERSION).tar.gz +PYTHON_JSON_SCHEMA_VALIDATOR_SITE = https://pypi.python.org/packages/70/46/ba39cb7efad1898cfc89bf3588b8612f24d128f1c25b761994f524a59cef +PYTHON_JSON_SCHEMA_VALIDATOR_LICENSE = LGPL-3.0 +PYTHON_JSON_SCHEMA_VALIDATOR_SETUP_TYPE = setuptools +PYTHON_JSON_SCHEMA_VALIDATOR_DEPENDENCIES = host-python-versiontools + +$(eval $(python-package)) diff --git a/buildroot/package/python-jsonschema/Config.in b/buildroot/package/python-jsonschema/Config.in new file mode 100644 index 0000000..b547f4a --- /dev/null +++ b/buildroot/package/python-jsonschema/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_JSONSCHEMA + bool "python-jsonschema" + select BR2_PACKAGE_PYTHON_FUNCTOOLS32 if BR2_PACKAGE_PYTHON # runtime + help + An implementation of JSON Schema validation for Python. + + http://github.com/Julian/jsonschema diff --git a/buildroot/package/python-jsonschema/python-jsonschema.hash b/buildroot/package/python-jsonschema/python-jsonschema.hash new file mode 100644 index 0000000..fc13630 --- /dev/null +++ b/buildroot/package/python-jsonschema/python-jsonschema.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/jsonschema/json, sha256 locally computed +md5 374e848fdb69a3ce8b7e778b47c30640 jsonschema-2.5.1.tar.gz +sha256 36673ac378feed3daa5956276a829699056523d7961027911f064b52255ead41 jsonschema-2.5.1.tar.gz diff --git a/buildroot/package/python-jsonschema/python-jsonschema.mk b/buildroot/package/python-jsonschema/python-jsonschema.mk new file mode 100644 index 0000000..0fb2be8 --- /dev/null +++ b/buildroot/package/python-jsonschema/python-jsonschema.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-jsonschema +# +################################################################################ + +PYTHON_JSONSCHEMA_VERSION = 2.5.1 +PYTHON_JSONSCHEMA_SOURCE = jsonschema-$(PYTHON_JSONSCHEMA_VERSION).tar.gz +PYTHON_JSONSCHEMA_SITE = https://pypi.python.org/packages/58/0d/c816f5ea5adaf1293a1d81d32e4cdfdaf8496973aa5049786d7fdb14e7e7 +PYTHON_JSONSCHEMA_SETUP_TYPE = setuptools +PYTHON_JSONSCHEMA_LICENSE = MIT +PYTHON_JSONSCHEMA_LICENSE_FILES = COPYING json/LICENSE +PYTHON_JSONSCHEMA_DEPENDENCIES = host-python-vcversioner + +$(eval $(python-package)) diff --git a/buildroot/package/python-keyring/Config.in b/buildroot/package/python-keyring/Config.in new file mode 100644 index 0000000..23d86a4 --- /dev/null +++ b/buildroot/package/python-keyring/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_KEYRING + bool "python-keyring" + depends on BR2_INSTALL_LIBSTDCPP # python-secretstorage + select BR2_PACKAGE_PYTHON_SECRETSTORAGE # runtime + help + The Python keyring lib provides a easy way to access the + system keyring service from Python. + + https://pypi.python.org/pypi/keyring + +comment "python-keyring needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-keyring/python-keyring.hash b/buildroot/package/python-keyring/python-keyring.hash new file mode 100644 index 0000000..a574190 --- /dev/null +++ b/buildroot/package/python-keyring/python-keyring.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/keyring/json, sha256 locally computed +md5 9c53e4f2427ebaa59d304a826311fbcf keyring-10.5.0.tar.gz +sha256 0e6129e8c5bc80da34cc1942d30daad79ed40419fcaaa538278c3b2ff235b313 keyring-10.5.0.tar.gz +sha256 a55e2ffe9b44998e621d51d8c094bed09acc4b5236ee73d7df395a33ba3c18fd LICENSE diff --git a/buildroot/package/python-keyring/python-keyring.mk b/buildroot/package/python-keyring/python-keyring.mk new file mode 100644 index 0000000..27db280 --- /dev/null +++ b/buildroot/package/python-keyring/python-keyring.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-keyring +# +################################################################################ + +PYTHON_KEYRING_VERSION = 10.5.0 +PYTHON_KEYRING_SOURCE = keyring-$(PYTHON_KEYRING_VERSION).tar.gz +PYTHON_KEYRING_SITE = https://pypi.python.org/packages/42/2e/51bd1739fe335095a2174db3f2f230346762e7e572471059540146a521f6 +PYTHON_KEYRING_SETUP_TYPE = setuptools +PYTHON_KEYRING_LICENSE = MIT +PYTHON_KEYRING_LICENSE_FILES = LICENSE +PYTHON_KEYRING_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/buildroot/package/python-libconfig/0001-Determine-boost_python-name-depending-on-current-Pyt.patch b/buildroot/package/python-libconfig/0001-Determine-boost_python-name-depending-on-current-Pyt.patch new file mode 100644 index 0000000..b30efc1 --- /dev/null +++ b/buildroot/package/python-libconfig/0001-Determine-boost_python-name-depending-on-current-Pyt.patch @@ -0,0 +1,40 @@ +From 3bc4b9c0d60a735b1d63e52f74492ace39f02824 Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Thu, 27 Jul 2017 09:46:07 +0200 +Subject: [PATCH] Determine boost_python name depending on current Python + version + +Python2 requires boost_python and Python3 requires boost_python3. + +Signed-off-by: Yegor Yefremov +--- + setup.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index fdf5c27..4b38569 100644 +--- a/setup.py ++++ b/setup.py +@@ -3,6 +3,10 @@ + from setuptools import setup, find_packages, Extension + import sys, os + ++boostlib = "boost_python3" ++if sys.version_info < (3, 0): ++ boostlib = "boost_python" ++ + setup( + name = 'pylibconfig', + description = "libconfig bindings for Python", +@@ -19,7 +23,7 @@ setup( + Extension( + "pylibconfig", + ["src/pylibconfig.cc"], +- libraries=["boost_python", "config++"] ++ libraries=[boostlib, "config++"] + #include_dirs=includes, + #extra_link_args=lflags + ) +-- +2.11.0 + diff --git a/buildroot/package/python-libconfig/Config.in b/buildroot/package/python-libconfig/Config.in new file mode 100644 index 0000000..0068871 --- /dev/null +++ b/buildroot/package/python-libconfig/Config.in @@ -0,0 +1,23 @@ +comment "python-libconfig needs a glibc or uClibc toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_PYTHON_LIBCONFIG + bool "python-libconfig" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + # error: invalid use of incomplete type 'struct _IO_FILE' + depends on !BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_PYTHON + select BR2_PACKAGE_LIBCONFIG + help + Python bindings to the C++ library libconfig + + Libconfig is a simple library for manipulating structured + configuration files. The file format is more compact and more + readable than XML. And unlike XML, it is type-aware, so it is + not necessary to do string parsing in application code. + http://www.hyperrealm.com/libconfig/ + + https://github.com/cnangel/python-libconfig diff --git a/buildroot/package/python-libconfig/python-libconfig.hash b/buildroot/package/python-libconfig/python-libconfig.hash new file mode 100644 index 0000000..3839043 --- /dev/null +++ b/buildroot/package/python-libconfig/python-libconfig.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 f4cfb7e60b8fcee32ca3392c99932c579038db0852c1c2c42d7c4b859eea3c5c python-libconfig-b271c3d9dac938ad5cd29b67bd08cc5536a5a391.tar.gz diff --git a/buildroot/package/python-libconfig/python-libconfig.mk b/buildroot/package/python-libconfig/python-libconfig.mk new file mode 100644 index 0000000..3f5984b --- /dev/null +++ b/buildroot/package/python-libconfig/python-libconfig.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-libconfig +# +################################################################################ + +PYTHON_LIBCONFIG_VERSION = b271c3d9dac938ad5cd29b67bd08cc5536a5a391 +PYTHON_LIBCONFIG_SITE = $(call github,cnangel,python-libconfig,$(PYTHON_LIBCONFIG_VERSION)) + +PYTHON_LIBCONFIG_LICENSE = BSD +PYTHON_LIBCONFIG_LICENSE_FILES = README + +PYTHON_LIBCONFIG_SETUP_TYPE = setuptools + +PYTHON_LIBCONFIG_DEPENDENCIES = libconfig boost + +$(eval $(python-package)) diff --git a/buildroot/package/python-lmdb/Config.in b/buildroot/package/python-lmdb/Config.in new file mode 100644 index 0000000..baf9bce --- /dev/null +++ b/buildroot/package/python-lmdb/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_LMDB + bool "python-lmdb" + select BR2_PACKAGE_PYTHON_CFFI # runtime + help + Universal Python binding for the LMDB 'Lightning' Database. + + https://pypi.python.org/pypi/lmdb diff --git a/buildroot/package/python-lmdb/python-lmdb.hash b/buildroot/package/python-lmdb/python-lmdb.hash new file mode 100644 index 0000000..7c29460 --- /dev/null +++ b/buildroot/package/python-lmdb/python-lmdb.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 abd2b2ae9ecf2fd1e1bc55ef4e8463b5910722fcd70a1bbf34a3e669a74a41a4 python-lmdb-py-lmdb_0.89.tar.gz diff --git a/buildroot/package/python-lmdb/python-lmdb.mk b/buildroot/package/python-lmdb/python-lmdb.mk new file mode 100644 index 0000000..62fb046 --- /dev/null +++ b/buildroot/package/python-lmdb/python-lmdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-lmdb +# +################################################################################ + +PYTHON_LMDB_VERSION = py-lmdb_0.89 +PYTHON_LMDB_SITE = $(call github,dw,py-lmdb,$(PYTHON_LMDB_VERSION)) +PYTHON_LMDB_LICENSE = OLDAP-2.8 +PYTHON_LMDB_LICENSE_FILES = LICENSE +PYTHON_LMDB_SETUP_TYPE = setuptools +PYTHON_LMDB_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) diff --git a/buildroot/package/python-logbook/Config.in b/buildroot/package/python-logbook/Config.in new file mode 100644 index 0000000..9ae9144 --- /dev/null +++ b/buildroot/package/python-logbook/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_LOGBOOK + bool "python-logbook" + help + A logging replacement for Python. + + http://logbook.pocoo.org/ diff --git a/buildroot/package/python-logbook/python-logbook.hash b/buildroot/package/python-logbook/python-logbook.hash new file mode 100644 index 0000000..1a79046 --- /dev/null +++ b/buildroot/package/python-logbook/python-logbook.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/logbook/json, sha256 locally computed +md5 22fea705e067c118925898f0c30b0508 Logbook-1.0.0.tar.gz +sha256 87da2515a6b3db866283cb9d4e5a6ec44e52a1d556ebb2ea3b6e7e704b5f1872 Logbook-1.0.0.tar.gz diff --git a/buildroot/package/python-logbook/python-logbook.mk b/buildroot/package/python-logbook/python-logbook.mk new file mode 100644 index 0000000..5fcf301 --- /dev/null +++ b/buildroot/package/python-logbook/python-logbook.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-logbook +# +################################################################################ + +PYTHON_LOGBOOK_VERSION = 1.0.0 +PYTHON_LOGBOOK_SOURCE = Logbook-$(PYTHON_LOGBOOK_VERSION).tar.gz +PYTHON_LOGBOOK_SITE = https://pypi.python.org/packages/34/e8/6419c217bbf464fe8a902418120cccaf476201bd03b50958db24d6e90f65 +PYTHON_LOGBOOK_SETUP_TYPE = setuptools +PYTHON_LOGBOOK_LICENSE = BSD-3-Clause + +$(eval $(python-package)) diff --git a/buildroot/package/python-lxml/Config.in b/buildroot/package/python-lxml/Config.in new file mode 100644 index 0000000..1ccaa5e --- /dev/null +++ b/buildroot/package/python-lxml/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_LXML + bool "python-lxml" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_ZLIB + help + The lxml XML toolkit is a Pythonic binding for the C libraries + libxml2 and libxslt. + + http://lxml.de/ diff --git a/buildroot/package/python-lxml/Config.in.host b/buildroot/package/python-lxml/Config.in.host new file mode 100644 index 0000000..7bf1e48 --- /dev/null +++ b/buildroot/package/python-lxml/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_PYTHON_LXML + bool "host python-lxml" + help + The lxml XML toolkit is a Pythonic binding for the C libraries + libxml2 and libxslt. + + http://lxml.de/ diff --git a/buildroot/package/python-lxml/python-lxml.hash b/buildroot/package/python-lxml/python-lxml.hash new file mode 100644 index 0000000..38607e1 --- /dev/null +++ b/buildroot/package/python-lxml/python-lxml.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f7bc9f702500e205b1560d620f14015fec76dcd6f9e889a946a2ddcc3c344fd0 lxml-4.0.0.tgz diff --git a/buildroot/package/python-lxml/python-lxml.mk b/buildroot/package/python-lxml/python-lxml.mk new file mode 100644 index 0000000..7f1692d --- /dev/null +++ b/buildroot/package/python-lxml/python-lxml.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# python-lxml +# +################################################################################ + +PYTHON_LXML_VERSION = 4.0.0 +PYTHON_LXML_SITE = http://lxml.de/files +PYTHON_LXML_SOURCE = lxml-$(PYTHON_LXML_VERSION).tgz + +# Not including the GPL, because it is used only for the test scripts. +PYTHON_LXML_LICENSE = BSD-3-Clause, Others +PYTHON_LXML_LICENSE_FILES = \ + LICENSES.txt \ + doc/licenses/BSD.txt \ + doc/licenses/elementtree.txt \ + src/lxml/isoschematron/resources/rng/iso-schematron.rng + +# python-lxml can use either setuptools, or distutils as a fallback. +# So, we use setuptools. +PYTHON_LXML_SETUP_TYPE = setuptools + +PYTHON_LXML_DEPENDENCIES = libxml2 libxslt zlib +HOST_PYTHON_LXML_DEPENDENCIES = host-libxml2 host-libxslt host-zlib + +# python-lxml needs these scripts in order to properly detect libxml2 and +# libxslt compiler and linker flags +PYTHON_LXML_BUILD_OPTS = \ + --with-xslt-config=$(STAGING_DIR)/usr/bin/xslt-config \ + --with-xml2-config=$(STAGING_DIR)/usr/bin/xml2-config +HOST_PYTHON_LXML_BUILD_OPTS = \ + --with-xslt-config=$(HOST_DIR)/bin/xslt-config \ + --with-xml2-config=$(HOST_DIR)/bin/xml2-config + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-m2r/Config.in b/buildroot/package/python-m2r/Config.in new file mode 100644 index 0000000..44dafaa --- /dev/null +++ b/buildroot/package/python-m2r/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_M2R + bool "python-m2r" + select BR2_PACKAGE_PYTHON_MISTUNE # runtime + select BR2_PACKAGE_PYTHON_DOCUTILS # runtime + help + Markdown to reStructuredText converter. + + https://github.com/miyakogi/m2r diff --git a/buildroot/package/python-m2r/python-m2r.hash b/buildroot/package/python-m2r/python-m2r.hash new file mode 100644 index 0000000..50de2b4 --- /dev/null +++ b/buildroot/package/python-m2r/python-m2r.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/m2r/json, sha256 locally computed +md5 906eb6dabb0295c93881f32d0a1c0919 m2r-0.1.12.tar.gz +sha256 adfb86ebb7ff3fcd3ebb27ce8cd6f795c409a13f0c03363e265f17419ce5b9ab m2r-0.1.12.tar.gz +sha256 28728ec0ecbd8c171ebaeccebf69e3961282fd81f06abc7424c65546b6ae6f27 LICENSE diff --git a/buildroot/package/python-m2r/python-m2r.mk b/buildroot/package/python-m2r/python-m2r.mk new file mode 100644 index 0000000..7c8ed28 --- /dev/null +++ b/buildroot/package/python-m2r/python-m2r.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-m2r +# +################################################################################ + +PYTHON_M2R_VERSION = 0.1.12 +PYTHON_M2R_SOURCE = m2r-$(PYTHON_M2R_VERSION).tar.gz +PYTHON_M2R_SITE = https://pypi.python.org/packages/a0/95/7273d54664e74c3100d07206fe6b30247be046b39676972fc90ae04376a1 +PYTHON_M2R_SETUP_TYPE = setuptools +PYTHON_M2R_LICENSE = MIT +PYTHON_M2R_LICENSE_FILES = LICENSE +HOST_PYTHON_M2R_DEPENDENCIES = host-python-docutils host-python-mistune + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-mad/Config.in b/buildroot/package/python-mad/Config.in new file mode 100644 index 0000000..2535421 --- /dev/null +++ b/buildroot/package/python-mad/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_MAD + bool "python-mad" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_LIBMAD + help + python-mad is a Python binding for the MAD library, a + high-quality integer-only MPEG decoder. + + http://spacepants.org/src/pymad/ diff --git a/buildroot/package/python-mad/python-mad.hash b/buildroot/package/python-mad/python-mad.hash new file mode 100644 index 0000000..ab91c3f --- /dev/null +++ b/buildroot/package/python-mad/python-mad.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 1c9fc529b78de7d26e9e47cf182c9f8bf43838d8f62a9c1773540d57f5ebc522 pymad-0.6.tar.gz diff --git a/buildroot/package/python-mad/python-mad.mk b/buildroot/package/python-mad/python-mad.mk new file mode 100644 index 0000000..a222148 --- /dev/null +++ b/buildroot/package/python-mad/python-mad.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# python-mad +# +################################################################################ + +PYTHON_MAD_VERSION = 0.6 +PYTHON_MAD_SOURCE = pymad-$(PYTHON_MAD_VERSION).tar.gz +PYTHON_MAD_SITE = http://spacepants.org/src/pymad/download +PYTHON_MAD_SETUP_TYPE = distutils +PYTHON_MAD_LICENSE = GPL-2.0+ +PYTHON_MAD_LICENSE_FILES = COPYING + +PYTHON_MAD_DEPENDENCIES = libmad + +ifeq ($(BR2_ENDIAN),"LITTLE") +PYTHON_MAD_ENDIAN = little +else +PYTHON_MAD_ENDIAN = big +endif + +define PYTHON_MAD_CONFIGURE_CMDS + echo "endian = $(PYTHON_MAD_ENDIAN)" > $(@D)/Setup + echo "mad_libs = mad" >> $(@D)/Setup + echo "mad_lib_dir = $(STAGING_DIR)/usr/lib" >> $(@D)/Setup + echo "mad_include_dir = $(STAGING_DIR)/usr/include" >> $(@D)/Setup +endef + +$(eval $(python-package)) diff --git a/buildroot/package/python-mako/Config.in b/buildroot/package/python-mako/Config.in new file mode 100644 index 0000000..442e290 --- /dev/null +++ b/buildroot/package/python-mako/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_MAKO + bool "python-mako" + help + Mako is a template library written in Python. It provides a + familiar, non-XML syntax which compiles into Python modules + for maximum performance. + + https://pypi.python.org/pypi/Mako diff --git a/buildroot/package/python-mako/python-mako.hash b/buildroot/package/python-mako/python-mako.hash new file mode 100644 index 0000000..6a64ec3 --- /dev/null +++ b/buildroot/package/python-mako/python-mako.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/mako/json, sha256 locally computed +md5 a28e22a339080316b2acc352b9ee631c Mako-1.0.6.tar.gz +sha256 48559ebd872a8e77f92005884b3d88ffae552812cdf17db6768e5c3be5ebbe0d Mako-1.0.6.tar.gz diff --git a/buildroot/package/python-mako/python-mako.mk b/buildroot/package/python-mako/python-mako.mk new file mode 100644 index 0000000..0d06dc4 --- /dev/null +++ b/buildroot/package/python-mako/python-mako.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# python-mako +# +################################################################################ + +PYTHON_MAKO_VERSION = 1.0.6 +PYTHON_MAKO_SOURCE = Mako-$(PYTHON_MAKO_VERSION).tar.gz +PYTHON_MAKO_SITE = https://pypi.python.org/packages/56/4b/cb75836863a6382199aefb3d3809937e21fa4cb0db15a4f4ba0ecc2e7e8e +PYTHON_MAKO_SETUP_TYPE = setuptools +PYTHON_MAKO_LICENSE = MIT +PYTHON_MAKO_LICENSE_FILES = LICENSE + +# In host build, setup.py tries to download markupsafe if it is not installed +HOST_PYTHON_MAKO_DEPENDENCIES = host-python-markupsafe + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-markdown/Config.in b/buildroot/package/python-markdown/Config.in new file mode 100644 index 0000000..6706684 --- /dev/null +++ b/buildroot/package/python-markdown/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_MARKDOWN + bool "python-markdown" + # runtime dependency on Python's xml module + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 + help + This is a Python implementation of John Gruber's Markdown + + https://pypi.python.org/pypi/Markdown diff --git a/buildroot/package/python-markdown/python-markdown.hash b/buildroot/package/python-markdown/python-markdown.hash new file mode 100644 index 0000000..f2131ed --- /dev/null +++ b/buildroot/package/python-markdown/python-markdown.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/markdown/json, sha256 locally computed +md5 d9ef057a5bd185f6f536400a31fc5d45 Markdown-2.6.8.tar.gz +sha256 0ac8a81e658167da95d063a9279c9c1b2699f37c7c4153256a458b3a43860e33 Markdown-2.6.8.tar.gz diff --git a/buildroot/package/python-markdown/python-markdown.mk b/buildroot/package/python-markdown/python-markdown.mk new file mode 100644 index 0000000..d5273f9 --- /dev/null +++ b/buildroot/package/python-markdown/python-markdown.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-markdown +# +################################################################################ + +PYTHON_MARKDOWN_VERSION = 2.6.8 +PYTHON_MARKDOWN_SOURCE = Markdown-$(PYTHON_MARKDOWN_VERSION).tar.gz +PYTHON_MARKDOWN_SITE = https://pypi.python.org/packages/1d/25/3f6d2cb31ec42ca5bd3bfbea99b63892b735d76e26f20dd2dcc34ffe4f0d +PYTHON_MARKDOWN_LICENSE = BSD-3-Clause +PYTHON_MARKDOWN_LICENSE_FILES = LICENSE.md +PYTHON_MARKDOWN_SETUP_TYPE = distutils + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-markdown2/Config.in b/buildroot/package/python-markdown2/Config.in new file mode 100644 index 0000000..8fe2332 --- /dev/null +++ b/buildroot/package/python-markdown2/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_MARKDOWN2 + bool "python-markdown2" + help + A fast and complete Python implementation of Markdown. + + https://github.com/trentm/python-markdown2 diff --git a/buildroot/package/python-markdown2/python-markdown2.hash b/buildroot/package/python-markdown2/python-markdown2.hash new file mode 100644 index 0000000..17ae7d9 --- /dev/null +++ b/buildroot/package/python-markdown2/python-markdown2.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 07e077f5d4aa5f1e2f061f9f94d9e22f9ea266411b8c557b9164fc0e6dff0595 python-markdown2-2.3.2.tar.gz diff --git a/buildroot/package/python-markdown2/python-markdown2.mk b/buildroot/package/python-markdown2/python-markdown2.mk new file mode 100644 index 0000000..1e343b4 --- /dev/null +++ b/buildroot/package/python-markdown2/python-markdown2.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-markdown2 +# +################################################################################ + +PYTHON_MARKDOWN2_VERSION = 2.3.2 +PYTHON_MARKDOWN2_SITE = $(call github,trentm,python-markdown2,$(PYTHON_MARKDOWN2_VERSION)) +PYTHON_MARKDOWN2_SETUP_TYPE = distutils +PYTHON_MARKDOWN2_LICENSE = MIT +PYTHON_MARKDOWN2_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-markupsafe/Config.in b/buildroot/package/python-markupsafe/Config.in new file mode 100644 index 0000000..48421e0 --- /dev/null +++ b/buildroot/package/python-markupsafe/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MARKUPSAFE + bool "python-markupsafe" + help + MarkupSafe implements a XML/HTML/XHTML Markup safe string + for Python. + + https://github.com/mitsuhiko/markupsafe diff --git a/buildroot/package/python-markupsafe/python-markupsafe.hash b/buildroot/package/python-markupsafe/python-markupsafe.hash new file mode 100644 index 0000000..4226a1d --- /dev/null +++ b/buildroot/package/python-markupsafe/python-markupsafe.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/markupsafe/json, sha256 locally computed +md5 2fcedc9284d50e577b5192e8e3578355 MarkupSafe-1.0.tar.gz +sha256 a6be69091dac236ea9c6bc7d012beab42010fa914c459791d627dad4910eb665 MarkupSafe-1.0.tar.gz diff --git a/buildroot/package/python-markupsafe/python-markupsafe.mk b/buildroot/package/python-markupsafe/python-markupsafe.mk new file mode 100644 index 0000000..625a9b5 --- /dev/null +++ b/buildroot/package/python-markupsafe/python-markupsafe.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-markupsafe +# +################################################################################ + +PYTHON_MARKUPSAFE_VERSION = 1.0 +PYTHON_MARKUPSAFE_SOURCE = MarkupSafe-$(PYTHON_MARKUPSAFE_VERSION).tar.gz +PYTHON_MARKUPSAFE_SITE = https://pypi.python.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b +PYTHON_MARKUPSAFE_SETUP_TYPE = setuptools +PYTHON_MARKUPSAFE_LICENSE = BSD-3-Clause +PYTHON_MARKUPSAFE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-mbstrdecoder/Config.in b/buildroot/package/python-mbstrdecoder/Config.in new file mode 100644 index 0000000..017002c --- /dev/null +++ b/buildroot/package/python-mbstrdecoder/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_MBSTRDECODER + bool "python-mbstrdecoder" + help + multi-byte character string decoder. + + https://github.com/thombashi/mbstrdecoder diff --git a/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.hash b/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.hash new file mode 100644 index 0000000..389bc49 --- /dev/null +++ b/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/mbstrdecoder/json, sha256 locally computed +md5 f528c26e537fe5c6987d5c5ccf6ab6e0 mbstrdecoder-0.2.2.tar.gz +sha256 fe6412d8f796fc86c90a5d394a2c93adc05a3e4225986494665a43c65dcc9312 mbstrdecoder-0.2.2.tar.gz diff --git a/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.mk b/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.mk new file mode 100644 index 0000000..8eb36e7 --- /dev/null +++ b/buildroot/package/python-mbstrdecoder/python-mbstrdecoder.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mbstrdecoder +# +################################################################################ + +PYTHON_MBSTRDECODER_VERSION = 0.2.2 +PYTHON_MBSTRDECODER_SOURCE = mbstrdecoder-$(PYTHON_MBSTRDECODER_VERSION).tar.gz +PYTHON_MBSTRDECODER_SITE = https://pypi.python.org/packages/40/17/ea4f3a4c844e3e5a112408879c02a1c0517ab07f97a070afe992d98d1a1a +PYTHON_MBSTRDECODER_SETUP_TYPE = setuptools +PYTHON_MBSTRDECODER_LICENSE = MIT +PYTHON_MBSTRDECODER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-meld3/Config.in b/buildroot/package/python-meld3/Config.in new file mode 100644 index 0000000..9366b3c --- /dev/null +++ b/buildroot/package/python-meld3/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_MELD3 + bool "python-meld3" + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 + help + A HTML/XML templating system. + + https://github.com/supervisor/meld3 diff --git a/buildroot/package/python-meld3/python-meld3.hash b/buildroot/package/python-meld3/python-meld3.hash new file mode 100644 index 0000000..c7d9025 --- /dev/null +++ b/buildroot/package/python-meld3/python-meld3.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/meld3/json, sha256 locally computed +md5 3ccc78cd79cffd63a751ad7684c02c91 meld3-1.0.2.tar.gz +sha256 f7b754a0fde7a4429b2ebe49409db240b5699385a572501bb0d5627d299f9558 meld3-1.0.2.tar.gz diff --git a/buildroot/package/python-meld3/python-meld3.mk b/buildroot/package/python-meld3/python-meld3.mk new file mode 100644 index 0000000..675478e --- /dev/null +++ b/buildroot/package/python-meld3/python-meld3.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-meld3 +# +################################################################################ + +PYTHON_MELD3_VERSION = 1.0.2 +PYTHON_MELD3_SOURCE = meld3-$(PYTHON_MELD3_VERSION).tar.gz +PYTHON_MELD3_SITE = https://pypi.python.org/packages/45/a0/317c6422b26c12fe0161e936fc35f36552069ba8e6f7ecbd99bbffe32a5f +PYTHON_MELD3_LICENSE = ZPL-2.1 +PYTHON_MELD3_LICENSE_FILES = COPYRIGHT.txt LICENSE.txt +PYTHON_MELD3_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-mistune/Config.in b/buildroot/package/python-mistune/Config.in new file mode 100644 index 0000000..e62689d --- /dev/null +++ b/buildroot/package/python-mistune/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MISTUNE + bool "python-mistune" + help + The fastest markdown parser in pure Python with renderer + features, inspired by marked. + + https://pypi.python.org/pypi/mistune diff --git a/buildroot/package/python-mistune/python-mistune.hash b/buildroot/package/python-mistune/python-mistune.hash new file mode 100644 index 0000000..e939aef --- /dev/null +++ b/buildroot/package/python-mistune/python-mistune.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/mistune/json, sha256 locally computed +md5 8bd955fe74ce37af54b16c0d9b89a2ef mistune-0.8.tar.gz +sha256 dc3f43e7cf0abb95cdfecbf82d85c419108d5f13e1844b2a8a2fc0abf24c7a47 mistune-0.8.tar.gz +sha256 0c5259c3dd0a7c46f4835221645f62a0638c9b9faa02af08676e8069e1ff964b LICENSE diff --git a/buildroot/package/python-mistune/python-mistune.mk b/buildroot/package/python-mistune/python-mistune.mk new file mode 100644 index 0000000..405216c --- /dev/null +++ b/buildroot/package/python-mistune/python-mistune.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-mistune +# +################################################################################ + +PYTHON_MISTUNE_VERSION = 0.8 +PYTHON_MISTUNE_SOURCE = mistune-$(PYTHON_MISTUNE_VERSION).tar.gz +PYTHON_MISTUNE_SITE = https://pypi.python.org/packages/d3/66/a45d1c7c50fd63a707cd1bd340b969523137c5284d9466c41012fe54c621 +PYTHON_MISTUNE_LICENSE = BSD-3-Clause +PYTHON_MISTUNE_LICENSE_FILES = LICENSE +PYTHON_MISTUNE_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-more-itertools/Config.in b/buildroot/package/python-more-itertools/Config.in new file mode 100644 index 0000000..dc5fb7c --- /dev/null +++ b/buildroot/package/python-more-itertools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_MORE_ITERTOOLS + bool "python-more-itertools" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + More routines for operating on iterables, beyond itertools. + + https://github.com/erikrose/more-itertools diff --git a/buildroot/package/python-more-itertools/python-more-itertools.hash b/buildroot/package/python-more-itertools/python-more-itertools.hash new file mode 100644 index 0000000..36748cb --- /dev/null +++ b/buildroot/package/python-more-itertools/python-more-itertools.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/more-itertools/json, sha256 locally computed +md5 fef89b28d050e325fbb7eb209e75ab45 more-itertools-4.0.1.tar.gz +sha256 5d21dcefa19782f9ec9aa64e0bfd903f5024512b1e1f17519800b193b2e64d31 more-itertools-4.0.1.tar.gz +sha256 09f1c8c9e941af3e584d59641ea9b87d83c0cb0fd007eb5ef391a7e2643c1a46 LICENSE diff --git a/buildroot/package/python-more-itertools/python-more-itertools.mk b/buildroot/package/python-more-itertools/python-more-itertools.mk new file mode 100644 index 0000000..971a338 --- /dev/null +++ b/buildroot/package/python-more-itertools/python-more-itertools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-more-itertools +# +################################################################################ + +PYTHON_MORE_ITERTOOLS_VERSION = 4.0.1 +PYTHON_MORE_ITERTOOLS_SOURCE = more-itertools-$(PYTHON_MORE_ITERTOOLS_VERSION).tar.gz +PYTHON_MORE_ITERTOOLS_SITE = https://pypi.python.org/packages/a2/28/d02c111c230a769a32fd97e9f6d42bfb0136da381f356b945db38367b3d3 +PYTHON_MORE_ITERTOOLS_SETUP_TYPE = setuptools +PYTHON_MORE_ITERTOOLS_LICENSE = MIT +PYTHON_MORE_ITERTOOLS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-msgpack/Config.in b/buildroot/package/python-msgpack/Config.in new file mode 100644 index 0000000..2050d4f --- /dev/null +++ b/buildroot/package/python-msgpack/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_MSGPACK + bool "python-msgpack" + help + MessagePack (http://msgpack.org/) is a fast, compact binary + serialization format, suitable for similar data to JSON. + This package provides a pure python library for reading + and writing MessagePack data. + + https://pypi.python.org/pypi/msgpack-python/ diff --git a/buildroot/package/python-msgpack/python-msgpack.hash b/buildroot/package/python-msgpack/python-msgpack.hash new file mode 100644 index 0000000..48313ff --- /dev/null +++ b/buildroot/package/python-msgpack/python-msgpack.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/msgpack-python/json, sha256 locally computed. +md5 dcd854fb41ee7584ebbf35e049e6be98 msgpack-python-0.4.8.tar.gz +sha256 1a2b19df0f03519ec7f19f826afb935b202d8979b0856c6fb3dc28955799f886 msgpack-python-0.4.8.tar.gz diff --git a/buildroot/package/python-msgpack/python-msgpack.mk b/buildroot/package/python-msgpack/python-msgpack.mk new file mode 100644 index 0000000..5be2b14 --- /dev/null +++ b/buildroot/package/python-msgpack/python-msgpack.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-msgpack +# +################################################################################ + +PYTHON_MSGPACK_VERSION = 0.4.8 +PYTHON_MSGPACK_SOURCE = msgpack-python-$(PYTHON_MSGPACK_VERSION).tar.gz +PYTHON_MSGPACK_SITE = https://pypi.python.org/packages/21/27/8a1d82041c7a2a51fcc73675875a5f9ea06c2663e02fcfeb708be1d081a0 +PYTHON_MSGPACK_LICENSE = Apache-2.0 +PYTHON_MSGPACK_LICENSE_FILES = COPYING +PYTHON_MSGPACK_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-mutagen/Config.in b/buildroot/package/python-mutagen/Config.in new file mode 100644 index 0000000..470cd99 --- /dev/null +++ b/buildroot/package/python-mutagen/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_PYTHON_MUTAGEN + bool "python-mutagen" + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + help + Mutagen is a Python module to handle audio metadata. It + supports ASF, FLAC, MP4, Monkey’s Audio, MP3, Musepack, Ogg + Opus, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True + Audio, WavPack, OptimFROG, and AIFF audio files. All + versions of ID3v2 are supported, and all standard ID3v2.4 + frames are parsed. + + It can read Xing headers to accurately calculate the bitrate + and length of MP3s. ID3 and APEv2 tags can be edited + regardless of audio format. It can also manipulate Ogg + streams on an individual packet/page level. + + https://mutagen.readthedocs.io/en/latest/ diff --git a/buildroot/package/python-mutagen/python-mutagen.hash b/buildroot/package/python-mutagen/python-mutagen.hash new file mode 100644 index 0000000..3371006 --- /dev/null +++ b/buildroot/package/python-mutagen/python-mutagen.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/mutagen/json, sha256 locally computed +md5 af52956a1b8976accf402f3104b95a84 mutagen-1.36.2.tar.gz +sha256 86fe98e941ca305be8ee6bdc6bb0e4e9c473bf9fb69a838fe5bf2fc6124fbcc7 mutagen-1.36.2.tar.gz diff --git a/buildroot/package/python-mutagen/python-mutagen.mk b/buildroot/package/python-mutagen/python-mutagen.mk new file mode 100644 index 0000000..3b516fe --- /dev/null +++ b/buildroot/package/python-mutagen/python-mutagen.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mutagen +# +################################################################################ + +PYTHON_MUTAGEN_VERSION = 1.36.2 +PYTHON_MUTAGEN_SOURCE = mutagen-$(PYTHON_MUTAGEN_VERSION).tar.gz +PYTHON_MUTAGEN_SITE = https://pypi.python.org/packages/e7/8a/61496657e30c2cbeb9b3aa28848e0adbcba7cab0ff0bd8e6206647670088 +PYTHON_MUTAGEN_LICENSE = GPL-2.0 +PYTHON_MUTAGEN_LICENSE_FILES = COPYING +PYTHON_MUTAGEN_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-mwclient/Config.in b/buildroot/package/python-mwclient/Config.in new file mode 100644 index 0000000..76bf794 --- /dev/null +++ b/buildroot/package/python-mwclient/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_MWCLIENT + bool "python-mwclient" + select BR2_PACKAGE_PYTHON_REQUESTS_OAUTHLIB # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + MediaWiki API client. + + https://github.com/btongminh/mwclient diff --git a/buildroot/package/python-mwclient/python-mwclient.hash b/buildroot/package/python-mwclient/python-mwclient.hash new file mode 100644 index 0000000..3fb643e --- /dev/null +++ b/buildroot/package/python-mwclient/python-mwclient.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/mwclient/json, sha256 locally computed +md5 486d3109e73d298d512d967501b23647 mwclient-0.8.7.tar.gz +sha256 3bdaaa48fda6386b190651e49484a549bd0c48b97573dbda34a8b7c4c80430ed mwclient-0.8.7.tar.gz +sha256 d29eaa80939b6d8fc3ab458bab90f4af879fa9e0430ed7e0fb2b94752e7eb33f mwclient/__init__.py diff --git a/buildroot/package/python-mwclient/python-mwclient.mk b/buildroot/package/python-mwclient/python-mwclient.mk new file mode 100644 index 0000000..5f18ef7 --- /dev/null +++ b/buildroot/package/python-mwclient/python-mwclient.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-mwclient +# +################################################################################ + +PYTHON_MWCLIENT_VERSION = 0.8.7 +PYTHON_MWCLIENT_SOURCE = mwclient-$(PYTHON_MWCLIENT_VERSION).tar.gz +PYTHON_MWCLIENT_SITE = https://pypi.python.org/packages/63/05/ddf7d1b0d3a1dc9ee650dcaef7ddfbb980b4d2f0c41128c5f9e6fed5e8e2 +PYTHON_MWCLIENT_LICENSE = MIT +PYTHON_MWCLIENT_LICENSE_FILES = mwclient/__init__.py +PYTHON_MWCLIENT_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-mwscrape/Config.in b/buildroot/package/python-mwscrape/Config.in new file mode 100644 index 0000000..273ce9a --- /dev/null +++ b/buildroot/package/python-mwscrape/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_MWSCRAPE + bool "python-mwscrape" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_COUCHDB # runtime + select BR2_PACKAGE_PYTHON_FUTURES # runtime + select BR2_PACKAGE_PYTHON_MWCLIENT # runtime + select BR2_PACKAGE_PYTHON_PYLRU # runtime + help + Download rendered articles from MediaWiki API to CouchDB + + https://github.com/itkach/mwscrape diff --git a/buildroot/package/python-mwscrape/python-mwscrape.hash b/buildroot/package/python-mwscrape/python-mwscrape.hash new file mode 100644 index 0000000..b91ef69 --- /dev/null +++ b/buildroot/package/python-mwscrape/python-mwscrape.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 8de8a5ef257851f6e1e41247f64710f48859a5e3f91ebc7200bb60769f02f296 python-mwscrape-6a58d7801eb1e884fd0516f1adbedbd4481c10e6.tar.gz diff --git a/buildroot/package/python-mwscrape/python-mwscrape.mk b/buildroot/package/python-mwscrape/python-mwscrape.mk new file mode 100644 index 0000000..47b943f --- /dev/null +++ b/buildroot/package/python-mwscrape/python-mwscrape.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-mwscrape +# +################################################################################ + +PYTHON_MWSCRAPE_VERSION = 6a58d7801eb1e884fd0516f1adbedbd4481c10e6 +PYTHON_MWSCRAPE_SITE = $(call github,itkach,mwscrape,$(PYTHON_MWSCRAPE_VERSION)) +PYTHON_MWSCRAPE_LICENSE = MPL-2.0 +PYTHON_MWSCRAPE_LICENSE_FILES = LICENSE.txt +PYTHON_MWSCRAPE_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-mwscrape2slob/Config.in b/buildroot/package/python-mwscrape2slob/Config.in new file mode 100644 index 0000000..7856a2c --- /dev/null +++ b/buildroot/package/python-mwscrape2slob/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_PYTHON_MWSCRAPE2SLOB + bool "python-mwscrape2slob" + depends on !BR2_BINFMT_FLAT # python-slob -> python-pyicu -> icu + depends on BR2_INSTALL_LIBSTDCPP # python-slob -> python-pyicu -> icu + depends on BR2_HOST_GCC_AT_LEAST_4_8 # python-slob -> python-pyicu -> icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # python-slob -> python-pyicu -> icu + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_COUCHDB # runtime + select BR2_PACKAGE_PYTHON_CSSSELECT # runtime + select BR2_PACKAGE_PYTHON_CSSUTILS # runtime + select BR2_PACKAGE_PYTHON_LXML # runtime + select BR2_PACKAGE_PYTHON_SLOB # runtime + help + A tool to create slob with content from a MediaWiki CouchDB + created by mwscrape. + + https://github.com/itkach/mwscrape2slob + +comment "python-mwscrape2slob needs a toolchain w/ C++, gcc >= 4.8, host gcc >= 4.8" + depends on BR2_PACKAGE_PYTHON3 && !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.hash b/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.hash new file mode 100644 index 0000000..f1f5e4f --- /dev/null +++ b/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 367ffc3203f7eb2cc26211f58c0693526652d9a238af48c88f936920e804faf7 python-mwscrape2slob-0f9124ed62009dff6a230947d80340f5a61a6f49.tar.gz diff --git a/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.mk b/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.mk new file mode 100644 index 0000000..519f5e5 --- /dev/null +++ b/buildroot/package/python-mwscrape2slob/python-mwscrape2slob.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# python-mwscrape2slob +# +################################################################################ + +PYTHON_MWSCRAPE2SLOB_VERSION = 0f9124ed62009dff6a230947d80340f5a61a6f49 +PYTHON_MWSCRAPE2SLOB_SITE = $(call github,itkach,mwscrape2slob,$(PYTHON_MWSCRAPE2SLOB_VERSION)) +PYTHON_MWSCRAPE2SLOB_LICENSE = GPL-3.0, Apache-2.0 (MathJax), GPL (MediaWiki monobook style sheet) +PYTHON_MWSCRAPE2SLOB_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-netaddr/Config.in b/buildroot/package/python-netaddr/Config.in new file mode 100644 index 0000000..534d136 --- /dev/null +++ b/buildroot/package/python-netaddr/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_NETADDR + bool "python-netaddr" + help + A network address manipulation library for Python. + + https://pypi.python.org/pypi/netaddr diff --git a/buildroot/package/python-netaddr/python-netaddr.hash b/buildroot/package/python-netaddr/python-netaddr.hash new file mode 100644 index 0000000..59628db --- /dev/null +++ b/buildroot/package/python-netaddr/python-netaddr.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/netaddr/json, sha256 locally computed +md5 51019ef59c93f3979bcb37d3b8527e07 netaddr-0.7.19.tar.gz +sha256 38aeec7cdd035081d3a4c306394b19d677623bf76fa0913f6695127c7753aefd netaddr-0.7.19.tar.gz diff --git a/buildroot/package/python-netaddr/python-netaddr.mk b/buildroot/package/python-netaddr/python-netaddr.mk new file mode 100644 index 0000000..a539845 --- /dev/null +++ b/buildroot/package/python-netaddr/python-netaddr.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-netaddr +# +################################################################################ + +PYTHON_NETADDR_VERSION = 0.7.19 +PYTHON_NETADDR_SOURCE = netaddr-$(PYTHON_NETADDR_VERSION).tar.gz +PYTHON_NETADDR_SITE = https://pypi.python.org/packages/0c/13/7cbb180b52201c07c796243eeff4c256b053656da5cfe3916c3f5b57b3a0 +PYTHON_NETADDR_LICENSE = BSD-3-Clause +PYTHON_NETADDR_LICENSE_FILES = LICENSE +PYTHON_NETADDR_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-netifaces/Config.in b/buildroot/package/python-netifaces/Config.in new file mode 100644 index 0000000..1f54f4b --- /dev/null +++ b/buildroot/package/python-netifaces/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_NETIFACES + bool "python-netifaces" + help + Portable access to network interfaces from Python. + + http://alastairs-place.net/projects/netifaces diff --git a/buildroot/package/python-netifaces/python-netifaces.hash b/buildroot/package/python-netifaces/python-netifaces.hash new file mode 100644 index 0000000..335f907 --- /dev/null +++ b/buildroot/package/python-netifaces/python-netifaces.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/netifaces/json, sha256 locally computed +md5 1d424cb5ef52907c5ab913011122a98b netifaces-0.10.6.tar.gz +sha256 0c4da523f36d36f1ef92ee183f2512f3ceb9a9d2a45f7d19cda5a42c6689ebe0 netifaces-0.10.6.tar.gz diff --git a/buildroot/package/python-netifaces/python-netifaces.mk b/buildroot/package/python-netifaces/python-netifaces.mk new file mode 100644 index 0000000..3258be7 --- /dev/null +++ b/buildroot/package/python-netifaces/python-netifaces.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-netifaces +# +################################################################################ + +PYTHON_NETIFACES_VERSION = 0.10.6 +PYTHON_NETIFACES_SOURCE = netifaces-$(PYTHON_NETIFACES_VERSION).tar.gz +PYTHON_NETIFACES_SITE = https://pypi.python.org/packages/72/01/ba076082628901bca750bf53b322a8ff10c1d757dc29196a8e6082711c9d +PYTHON_NETIFACES_LICENSE = MIT +PYTHON_NETIFACES_LICENSE_FILES = README.rst +PYTHON_NETIFACES_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-networkmanager/Config.in b/buildroot/package/python-networkmanager/Config.in new file mode 100644 index 0000000..9b2b474 --- /dev/null +++ b/buildroot/package/python-networkmanager/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_NETWORKMANAGER + bool "python-networkmanager" + depends on BR2_PACKAGE_NETWORK_MANAGER # runtime + depends on BR2_USE_WCHAR # dbus-python + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus-python + depends on BR2_PACKAGE_DBUS # dbus-python + select BR2_PACKAGE_DBUS_PYTHON # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + python-networkmanager wraps NetworkManagers D-Bus interface + so you can be less verbose when talking to NetworkManager + from python. All interfaces have been wrapped in classes, + properties are exposed as python properties and function + calls are forwarded to the correct interface. + + https://pypi.python.org/pypi/python-networkmanager/ diff --git a/buildroot/package/python-networkmanager/python-networkmanager.hash b/buildroot/package/python-networkmanager/python-networkmanager.hash new file mode 100644 index 0000000..1fed4be --- /dev/null +++ b/buildroot/package/python-networkmanager/python-networkmanager.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/python-networkmanager/json, sha256 locally computed +md5 5fc644a65463031295c6b7dd51a0f1bd python-networkmanager-2.0.1.tar.gz +sha256 bc36507506ad29bfdac941b0987ebd1cc9633c9a9291d7378e229e4515a0a517 python-networkmanager-2.0.1.tar.gz diff --git a/buildroot/package/python-networkmanager/python-networkmanager.mk b/buildroot/package/python-networkmanager/python-networkmanager.mk new file mode 100644 index 0000000..29afb5e --- /dev/null +++ b/buildroot/package/python-networkmanager/python-networkmanager.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-networkmanager +# +################################################################################ + +PYTHON_NETWORKMANAGER_VERSION = 2.0.1 +PYTHON_NETWORKMANAGER_SITE = https://pypi.python.org/packages/d7/f9/5cbd99fd24a072875ce048e48d1754285f137aab447de8fee63b6cba990a +PYTHON_NETWORKMANAGER_SETUP_TYPE = setuptools +PYTHON_NETWORKMANAGER_LICENSE = Zlib +PYTHON_NETWORKMANAGER_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/buildroot/package/python-nfc/0001-add-setup-py.patch b/buildroot/package/python-nfc/0001-add-setup-py.patch new file mode 100644 index 0000000..5a51452 --- /dev/null +++ b/buildroot/package/python-nfc/0001-add-setup-py.patch @@ -0,0 +1,26 @@ +Add simple setup.py + +Having a setup.py allows to easily get the .py files compiled into +.pyc, which is good because by default, Buildroot only keeps .pyc +files on the target. + +Signed-off-by: Thomas Petazzoni + +Index: b/setup.py +=================================================================== +--- /dev/null ++++ b/setup.py +@@ -0,0 +1,13 @@ ++#!/usr/bin/env python ++ ++from distutils.core import setup ++ ++setup(name='NFC', ++ version='1.0', ++ description='Python NFC', ++ author='Stephen Tiedemann', ++ author_email='stephen.tiedemann@googlemail.com', ++ url='https://launchpad.net/nfcpy', ++ packages=['nfc', 'nfc/dev', 'nfc/llcp', 'nfc/ndef', ++ 'nfc/snep'], ++ ) diff --git a/buildroot/package/python-nfc/Config.in b/buildroot/package/python-nfc/Config.in new file mode 100644 index 0000000..9a8102c --- /dev/null +++ b/buildroot/package/python-nfc/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_NFC + bool "python-nfc" + depends on BR2_PACKAGE_PYTHON + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + Python module for near field communication. + + https://launchpad.net/nfcpy + +comment "python-nfc needs a toolchain w/ threads" + depends on BR2_PACKAGE_PYTHON + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/python-nfc/python-nfc.mk b/buildroot/package/python-nfc/python-nfc.mk new file mode 100644 index 0000000..574d2e5 --- /dev/null +++ b/buildroot/package/python-nfc/python-nfc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-nfc +# +################################################################################ + +PYTHON_NFC_VERSION = 212 +PYTHON_NFC_SITE = https://launchpad.net/nfcpy +PYTHON_NFC_SITE_METHOD = bzr +PYTHON_NFC_DEPENDENCIES = libusb libusb-compat +PYTHON_NFC_SETUP_TYPE = distutils +PYTHON_NFC_LICENSE = EUPL-1.1+ + +$(eval $(python-package)) diff --git a/buildroot/package/python-numpy/0001-no-fenv-on-uclibc.patch b/buildroot/package/python-numpy/0001-no-fenv-on-uclibc.patch new file mode 100644 index 0000000..5aa377b --- /dev/null +++ b/buildroot/package/python-numpy/0001-no-fenv-on-uclibc.patch @@ -0,0 +1,49 @@ +From 1d309b81a6fdac33dfb5148f618bafe6ebdff958 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 15 Sep 2017 12:51:36 +0300 +Subject: [PATCH] Don't use on uClibc + +The python-numpy code already has provisions to not use when +not available. However, it uses __GLIBC__ to know whether fenv.h is +available or not, but uClibc defines __GLIBC__, so python-numpy thinks +fenv.h is available. + +This patch fixes that by changing all defined(__GLIBC__) occurences by +(defined(__GLIBC__) && !defined(__UCLIBC__)). + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Alexey Brodkin +--- + numpy/core/include/numpy/ufuncobject.h | 2 +- + numpy/core/src/npymath/ieee754.c.src | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/numpy/core/include/numpy/ufuncobject.h b/numpy/core/include/numpy/ufuncobject.h +index d0ac1fd7d732..65e49fcd5b7a 100644 +--- a/numpy/core/include/numpy/ufuncobject.h ++++ b/numpy/core/include/numpy/ufuncobject.h +@@ -319,7 +319,7 @@ typedef struct _loop1d_info { + #if defined(sun) || defined(__BSD__) || defined(__OpenBSD__) || \ + (defined(__FreeBSD__) && (__FreeBSD_version < 502114)) || \ + defined(__NetBSD__) || \ +- defined(__GLIBC__) || defined(__APPLE__) || \ ++ (defined(__GLIBC__) && !defined(__UCLIBC__)) || defined(__APPLE__) || \ + defined(__CYGWIN__) || defined(__MINGW32__) || \ + (defined(__FreeBSD__) && (__FreeBSD_version >= 502114)) || \ + defined(_AIX) || \ +diff --git a/numpy/core/src/npymath/ieee754.c.src b/numpy/core/src/npymath/ieee754.c.src +index 0370ea6c77aa..e63e409b6604 100644 +--- a/numpy/core/src/npymath/ieee754.c.src ++++ b/numpy/core/src/npymath/ieee754.c.src +@@ -612,7 +612,7 @@ void npy_set_floatstatus_invalid(void) + } + + +-#elif defined(__GLIBC__) || defined(__APPLE__) || \ ++#elif (defined(__GLIBC__) && !defined(__UCLIBC__)) || defined(__APPLE__) || \ + defined(__CYGWIN__) || defined(__MINGW32__) || \ + (defined(__FreeBSD__) && (__FreeBSD_version >= 502114)) + # include +-- +2.7.5 + diff --git a/buildroot/package/python-numpy/0002-Add-support-of-ARC.patch b/buildroot/package/python-numpy/0002-Add-support-of-ARC.patch new file mode 100644 index 0000000..c022487 --- /dev/null +++ b/buildroot/package/python-numpy/0002-Add-support-of-ARC.patch @@ -0,0 +1,68 @@ +From 9a225e7d4fb1de5c99c6b5b17cae2fc4c2d1c59a Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Fri, 15 Sep 2017 11:59:14 +0300 +Subject: [PATCH] Add support of ARC + +Synopsys DesignWare ARC Processors are a family of 32-bit CPUs +which in some configurations may run Linux kernel and full stack +of applications on top of it. Among other things is Python. + +With that change we allow building and usage of Numpy on ARC. + +Signed-off-by: Alexey Brodkin +--- + numpy/core/include/numpy/npy_cpu.h | 6 ++++++ + numpy/core/include/numpy/npy_endian.h | 6 ++++-- + 2 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/numpy/core/include/numpy/npy_cpu.h b/numpy/core/include/numpy/npy_cpu.h +index 60abae4e0b0e..84653ea183ce 100644 +--- a/numpy/core/include/numpy/npy_cpu.h ++++ b/numpy/core/include/numpy/npy_cpu.h +@@ -15,6 +15,8 @@ + * NPY_CPU_ARMEB + * NPY_CPU_SH_LE + * NPY_CPU_SH_BE ++ * NPY_CPU_ARCEL ++ * NPY_CPU_ARCEB + */ + #ifndef _NPY_CPUARCH_H_ + #define _NPY_CPUARCH_H_ +@@ -76,6 +78,10 @@ + #define NPY_CPU_AARCH64 + #elif defined(__mc68000__) + #define NPY_CPU_M68K ++#elif defined(__arc__) && defined(__LITTLE_ENDIAN__) ++ #define NPY_CPU_ARCEL ++#elif defined(__arc__) && defined(__BIG_ENDIAN__) ++ #define NPY_CPU_ARCEB + #else + #error Unknown CPU, please report this to numpy maintainers with \ + information about your platform (OS, CPU and compiler) +diff --git a/numpy/core/include/numpy/npy_endian.h b/numpy/core/include/numpy/npy_endian.h +index e34b1d97e655..1a42121db92e 100644 +--- a/numpy/core/include/numpy/npy_endian.h ++++ b/numpy/core/include/numpy/npy_endian.h +@@ -45,7 +45,8 @@ + || defined(NPY_CPU_AARCH64) \ + || defined(NPY_CPU_SH_LE) \ + || defined(NPY_CPU_MIPSEL) \ +- || defined(NPY_CPU_PPC64LE) ++ || defined(NPY_CPU_PPC64LE) \ ++ || defined(NPY_CPU_ARCEL) + #define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN + #elif defined(NPY_CPU_PPC) \ + || defined(NPY_CPU_SPARC) \ +@@ -56,7 +57,8 @@ + || defined(NPY_CPU_SH_BE) \ + || defined(NPY_CPU_MIPSEB) \ + || defined(NPY_CPU_OR1K) \ +- || defined(NPY_CPU_M68K) ++ || defined(NPY_CPU_M68K) \ ++ || defined(NPY_CPU_ARCEB) + #define NPY_BYTE_ORDER NPY_BIG_ENDIAN + #else + #error Unknown CPU: can not set endianness +-- +2.7.5 + diff --git a/buildroot/package/python-numpy/Config.in b/buildroot/package/python-numpy/Config.in new file mode 100644 index 0000000..067085b --- /dev/null +++ b/buildroot/package/python-numpy/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + bool + # Numpy has some CPU specific code + # ARCompact build fails due to toolchain issue + # ARC HS38 build fails on glibc due to missing FE_* definitions + default y if BR2_arc && BR2_archs38 && !BR2_TOOLCHAIN_USES_GLIBC + default y if BR2_aarch64 + default y if BR2_arm + default y if BR2_armeb + default y if BR2_i386 + default y if BR2_mips + default y if BR2_mipsel + default y if BR2_powerpc + default y if BR2_powerpc64 + default y if BR2_sh + default y if BR2_x86_64 + +config BR2_PACKAGE_PYTHON_NUMPY + bool "python-numpy" + depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS + help + NumPy is the fundamental package for scientific computing + with Python. + + Note that NumPy needs fenv.h fully supported by the + C library. + + http://www.numpy.org/ diff --git a/buildroot/package/python-numpy/python-numpy.hash b/buildroot/package/python-numpy/python-numpy.hash new file mode 100644 index 0000000..854f202 --- /dev/null +++ b/buildroot/package/python-numpy/python-numpy.hash @@ -0,0 +1,4 @@ +# Copied from https://github.com/numpy/numpy/releases/tag/v1.13.3 +sha256 4c6b4eef790528bebb7ec9590d74cc193868940fe68e4109a91c196df72d8094 numpy-1.13.3.tar.gz +# License files, locally calculated +sha256 94eebc7c8f86a287c1e9146ed52ebcde88183806d848d8c66e0e52d1aebf3b13 LICENSE.txt diff --git a/buildroot/package/python-numpy/python-numpy.mk b/buildroot/package/python-numpy/python-numpy.mk new file mode 100644 index 0000000..d0d3837 --- /dev/null +++ b/buildroot/package/python-numpy/python-numpy.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# python-numpy +# +################################################################################ + +PYTHON_NUMPY_VERSION = 1.13.3 +PYTHON_NUMPY_SOURCE = numpy-$(PYTHON_NUMPY_VERSION).tar.gz +PYTHON_NUMPY_SITE = https://github.com/numpy/numpy/releases/download/v$(PYTHON_NUMPY_VERSION) +PYTHON_NUMPY_LICENSE = BSD-3-Clause +PYTHON_NUMPY_LICENSE_FILES = LICENSE.txt +PYTHON_NUMPY_SETUP_TYPE = setuptools + +ifeq ($(BR2_PACKAGE_CLAPACK),y) +PYTHON_NUMPY_DEPENDENCIES += clapack +PYTHON_NUMPY_SITE_CFG_LIBS += blas lapack +endif + +PYTHON_NUMPY_BUILD_OPTS = --fcompiler=None + +define PYTHON_NUMPY_CONFIGURE_CMDS + -rm -f $(@D)/site.cfg + echo "[DEFAULT]" >> $(@D)/site.cfg + echo "library_dirs = $(STAGING_DIR)/usr/lib" >> $(@D)/site.cfg + echo "include_dirs = $(STAGING_DIR)/usr/include" >> $(@D)/site.cfg + echo "libraries =" $(subst $(space),$(comma),$(PYTHON_NUMPY_SITE_CFG_LIBS)) >> $(@D)/site.cfg +endef + +# Some package may include few headers from NumPy, so let's install it +# in the staging area. +PYTHON_NUMPY_INSTALL_STAGING = YES + +$(eval $(python-package)) diff --git a/buildroot/package/python-oauthlib/Config.in b/buildroot/package/python-oauthlib/Config.in new file mode 100644 index 0000000..d6617f3 --- /dev/null +++ b/buildroot/package/python-oauthlib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_OAUTHLIB + bool "python-oauthlib" + help + A generic, spec-compliant, thorough implementation of the + OAuth request-signing logic. + + https://github.com/idan/oauthlib diff --git a/buildroot/package/python-oauthlib/python-oauthlib.hash b/buildroot/package/python-oauthlib/python-oauthlib.hash new file mode 100644 index 0000000..f8e1324 --- /dev/null +++ b/buildroot/package/python-oauthlib/python-oauthlib.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/oauthlib/json, sha256 locally computed +md5 277a9a966cc8c72e492b4eeb41332445 oauthlib-2.0.6.tar.gz +sha256 ce57b501e906ff4f614e71c36a3ab9eacbb96d35c24d1970d2539bbc3ec70ce1 oauthlib-2.0.6.tar.gz +sha256 9e1ae8725f5815738dadb6cbb09f450453d94e07c7b5efaee864f546a6209a95 LICENSE diff --git a/buildroot/package/python-oauthlib/python-oauthlib.mk b/buildroot/package/python-oauthlib/python-oauthlib.mk new file mode 100644 index 0000000..ab39800 --- /dev/null +++ b/buildroot/package/python-oauthlib/python-oauthlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-oauthlib +# +################################################################################ + +PYTHON_OAUTHLIB_VERSION = 2.0.6 +PYTHON_OAUTHLIB_SOURCE = oauthlib-$(PYTHON_OAUTHLIB_VERSION).tar.gz +PYTHON_OAUTHLIB_SITE = https://pypi.python.org/packages/a5/8a/212e9b47fb54be109f3ff0684165bb38c51117f34e175c379fce5c7df754 +PYTHON_OAUTHLIB_SETUP_TYPE = setuptools +PYTHON_OAUTHLIB_LICENSE = BSD-3-Clause +PYTHON_OAUTHLIB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-paho-mqtt/Config.in b/buildroot/package/python-paho-mqtt/Config.in new file mode 100644 index 0000000..79d8b33 --- /dev/null +++ b/buildroot/package/python-paho-mqtt/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PAHO_MQTT + bool "python-paho-mqtt" + help + The Paho Python Client provides a client class with support + for both MQTT v3.1 and v3.1.1 on Python 2.7 or 3.x. It also + provides some helper functions to make publishing messages + to an MQTT server very straightforward. + + https://pypi.python.org/pypi/paho-mqtt diff --git a/buildroot/package/python-paho-mqtt/python-paho-mqtt.hash b/buildroot/package/python-paho-mqtt/python-paho-mqtt.hash new file mode 100644 index 0000000..e791d36 --- /dev/null +++ b/buildroot/package/python-paho-mqtt/python-paho-mqtt.hash @@ -0,0 +1,6 @@ +# md5 from https://pypi.python.org/pypi/paho-mqtt/json, sha256 locally computed +md5 2cc27d8b369700b1fc99325add0dadd2 paho-mqtt-1.3.1.tar.gz +sha256 31911f6031de306c27ed79dc77b690d7c55b0dcb0f0434ca34ec6361d0371122 paho-mqtt-1.3.1.tar.gz +sha256 76f13729e84e9222e543303df00f87d1b2c0995b6a505cd859a285667e44babb LICENSE.txt +sha256 e8cf7d54ea46c19aba793983889b7f7425e1ebfcaaccec764a7db091646e203c edl-v10 +sha256 3b9be6b894d0769de796e653571ff6cef494913c0ce78c35a97db939e7d9087c epl-v10 diff --git a/buildroot/package/python-paho-mqtt/python-paho-mqtt.mk b/buildroot/package/python-paho-mqtt/python-paho-mqtt.mk new file mode 100644 index 0000000..f335b35 --- /dev/null +++ b/buildroot/package/python-paho-mqtt/python-paho-mqtt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-paho-mqtt +# +################################################################################ + +PYTHON_PAHO_MQTT_VERSION = 1.3.1 +PYTHON_PAHO_MQTT_SOURCE = paho-mqtt-$(PYTHON_PAHO_MQTT_VERSION).tar.gz +PYTHON_PAHO_MQTT_SITE = https://pypi.python.org/packages/2a/5f/cf14b8f9f8ed1891cda893a2a7d1d6fa23de2a9fb4832f05cef02b79d01f +PYTHON_PAHO_MQTT_LICENSE = EPL-1.0 or EDLv1.0 +PYTHON_PAHO_MQTT_LICENSE_FILES = LICENSE.txt edl-v10 epl-v10 +PYTHON_PAHO_MQTT_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pam/0001-dealloc.patch b/buildroot/package/python-pam/0001-dealloc.patch new file mode 100644 index 0000000..dd4f961 --- /dev/null +++ b/buildroot/package/python-pam/0001-dealloc.patch @@ -0,0 +1,25 @@ +[PATCH] fix two bugs in the PAM object deallocation + +Fixes https://bugzilla.redhat.com/show_bug.cgi?id=658955 + +Downloaded from: +http://pkgs.fedoraproject.org/cgit/PyPAM.git/plain/PyPAM-0.5.0-dealloc.patch + +Signed-off-by: Peter Korsgaard +diff -up PyPAM-0.5.0/PAMmodule.c.dealloc PyPAM-0.5.0/PAMmodule.c +--- PyPAM-0.5.0/PAMmodule.c.dealloc 2011-01-17 22:48:22.000000000 +0100 ++++ PyPAM-0.5.0/PAMmodule.c 2011-01-18 21:24:59.000000000 +0100 +@@ -538,10 +538,11 @@ static void PyPAM_dealloc(PyPAMObject *s + free(self->service); + free(self->user); + free(self->conv); +- pam_end(self->pamh, PAM_SUCCESS); ++ if (self->pamh) ++ pam_end(self->pamh, PAM_SUCCESS); + dlclose(self->dlh2); + dlclose(self->dlh1); +- PyMem_DEL(self); ++ PyObject_Del(self); + } + + static PyObject * PyPAM_getattr(PyPAMObject *self, char *name) diff --git a/buildroot/package/python-pam/0002-nofree.patch b/buildroot/package/python-pam/0002-nofree.patch new file mode 100644 index 0000000..7de8801 --- /dev/null +++ b/buildroot/package/python-pam/0002-nofree.patch @@ -0,0 +1,68 @@ +[PATCH] deallocate the conversation response only in case of error + +Fixes https://bugzilla.redhat.com/show_bug.cgi?id=679714 + +Downloaded from: +http://pkgs.fedoraproject.org/cgit/PyPAM.git/plain/PyPAM-0.5.0-nofree.patch + +Signed-off-by: Peter Korsgaard +diff --git a/PAMmodule.c b/PAMmodule.c +index 03cb799..a7ff8a5 100644 +--- a/PAMmodule.c ++++ b/PAMmodule.c +@@ -24,8 +24,6 @@ typedef struct { + char *service; + char *user; + PyObject *callback; +- struct pam_response *response_data; +- int response_len; + PyObject *user_data; + void *dlh1, *dlh2; + } PyPAMObject; +@@ -54,15 +52,6 @@ static int PyPAM_conv(int num_msg, const struct pam_message **msg, + + Py_INCREF(self); + +- if (NULL != self->response_data) { +- for (int i = 0; i < self->response_len; i++) { +- free(self->response_data[0].resp); +- } +- free(self->response_data); +- self->response_data = NULL; +- self->response_len = 0; +- } +- + PyObject* msgList = PyList_New(num_msg); + + for (int i = 0; i < num_msg; i++) { +@@ -92,6 +81,10 @@ static int PyPAM_conv(int num_msg, const struct pam_message **msg, + char* resp_text; + int resp_retcode = 0; + if (!PyArg_ParseTuple(respTuple, "si", &resp_text, &resp_retcode)) { ++ while (i > 0) { ++ free((--spr)->resp); ++ --i; ++ } + free(*resp); + Py_DECREF(respList); + return PAM_CONV_ERR; +@@ -100,10 +93,6 @@ static int PyPAM_conv(int num_msg, const struct pam_message **msg, + spr->resp_retcode = resp_retcode; + Py_DECREF(respTuple); + } +- +- // Save this so we can free it later. +- self->response_data = *resp; +- self->response_len = PyList_Size(respList); + + Py_DECREF(respList); + +@@ -144,8 +133,6 @@ static PyObject * PyPAM_pam(PyObject *self, PyObject *args) + p->user = NULL; + Py_INCREF(Py_None); + p->callback = Py_None; +- p->response_data = NULL; +- p->response_len = 0; + Py_INCREF(Py_None); + p->user_data = Py_None; + diff --git a/buildroot/package/python-pam/0003-memory-errors-CVE2012-1502.patch b/buildroot/package/python-pam/0003-memory-errors-CVE2012-1502.patch new file mode 100644 index 0000000..62405db --- /dev/null +++ b/buildroot/package/python-pam/0003-memory-errors-CVE2012-1502.patch @@ -0,0 +1,136 @@ +[PATCH] Fix Double Free Corruption (CVE2012-1502) + +Downloaded from: +http://pkgs.fedoraproject.org/cgit/PyPAM.git/plain/PyPAM-0.5.0-memory-errors.patch + +For details, see: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-1502 + +Signed-off-by: Peter Korsgaard +diff -up PyPAM-0.5.0/PAMmodule.c.memory PyPAM-0.5.0/PAMmodule.c +--- PyPAM-0.5.0/PAMmodule.c.memory 2012-05-07 17:22:54.503914026 +0200 ++++ PyPAM-0.5.0/PAMmodule.c 2012-05-07 17:23:15.644381942 +0200 +@@ -37,33 +37,48 @@ static void PyPAM_Err(PyPAMObject *self, + + err_msg = pam_strerror(self->pamh, result); + error = Py_BuildValue("(si)", err_msg, result); +- Py_INCREF(PyPAM_Error); + PyErr_SetObject(PyPAM_Error, error); ++ Py_XDECREF(error); + } + + static int PyPAM_conv(int num_msg, const struct pam_message **msg, + struct pam_response **resp, void *appdata_ptr) + { +- PyObject *args; +- ++ PyObject *args, *msgList, *respList, *item; ++ struct pam_response *response, *spr; + PyPAMObject* self = (PyPAMObject *) appdata_ptr; ++ + if (self->callback == NULL) + return PAM_CONV_ERR; + + Py_INCREF(self); + +- PyObject* msgList = PyList_New(num_msg); +- ++ msgList = PyList_New(num_msg); ++ if (msgList == NULL) { ++ Py_DECREF(self); ++ return PAM_CONV_ERR; ++ } ++ + for (int i = 0; i < num_msg; i++) { +- PyList_SetItem(msgList, i, +- Py_BuildValue("(si)", msg[i]->msg, msg[i]->msg_style)); ++ item = Py_BuildValue("(si)", msg[i]->msg, msg[i]->msg_style); ++ if (item == NULL) { ++ Py_DECREF(msgList); ++ Py_DECREF(self); ++ return PAM_CONV_ERR; ++ } ++ PyList_SetItem(msgList, i, item); + } +- ++ + args = Py_BuildValue("(OO)", self, msgList); +- PyObject* respList = PyEval_CallObject(self->callback, args); ++ if (args == NULL) { ++ Py_DECREF(self); ++ Py_DECREF(msgList); ++ return PAM_CONV_ERR; ++ } ++ respList = PyEval_CallObject(self->callback, args); + Py_DECREF(args); + Py_DECREF(self); +- ++ + if (respList == NULL) + return PAM_CONV_ERR; + +@@ -71,11 +86,15 @@ static int PyPAM_conv(int num_msg, const + Py_DECREF(respList); + return PAM_CONV_ERR; + } +- +- *resp = (struct pam_response *) malloc( ++ ++ response = (struct pam_response *) malloc( + PyList_Size(respList) * sizeof(struct pam_response)); ++ if (response == NULL) { ++ Py_DECREF(respList); ++ return PAM_CONV_ERR; ++ } ++ spr = response; + +- struct pam_response* spr = *resp; + for (int i = 0; i < PyList_Size(respList); i++, spr++) { + PyObject* respTuple = PyList_GetItem(respList, i); + char* resp_text; +@@ -85,7 +104,7 @@ static int PyPAM_conv(int num_msg, const + free((--spr)->resp); + --i; + } +- free(*resp); ++ free(response); + Py_DECREF(respList); + return PAM_CONV_ERR; + } +@@ -95,7 +114,8 @@ static int PyPAM_conv(int num_msg, const + } + + Py_DECREF(respList); +- ++ *resp = response; ++ + return PAM_SUCCESS; + } + +@@ -122,7 +142,11 @@ static PyObject * PyPAM_pam(PyObject *se + PyPAMObject_Type.ob_type = &PyType_Type; + p = (PyPAMObject *) PyObject_NEW(PyPAMObject, &PyPAMObject_Type); + ++ if (p == NULL) ++ return NULL; ++ + if ((spc = (struct pam_conv *) malloc(sizeof(struct pam_conv))) == NULL) { ++ Py_DECREF((PyObject *)p); + PyErr_SetString(PyExc_MemoryError, "out of memory"); + return NULL; + } +@@ -455,9 +479,15 @@ static PyObject * PyPAM_getenvlist(PyObj + } + + retval = PyList_New(0); ++ if (retval == NULL) ++ return NULL; + + while ((cp = *(result++)) != NULL) { + entry = Py_BuildValue("s", cp); ++ if (entry == NULL) { ++ Py_DECREF(retval); ++ return NULL; ++ } + PyList_Append(retval, entry); + Py_DECREF(entry); + } diff --git a/buildroot/package/python-pam/Config.in b/buildroot/package/python-pam/Config.in new file mode 100644 index 0000000..02865d0 --- /dev/null +++ b/buildroot/package/python-pam/Config.in @@ -0,0 +1,18 @@ +comment "python-pam needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library" + depends on BR2_PACKAGE_PYTHON + depends on !BR2_ENABLE_LOCALE || !BR2_USE_WCHAR || BR2_STATIC_LIBS || \ + BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_PYTHON_PAM + bool "python-pam" + depends on BR2_PACKAGE_PYTHON # C extension not compatible with python3 + depends on BR2_ENABLE_LOCALE # linux-pam + depends on BR2_USE_WCHAR # linux-pam + depends on BR2_USE_MMU # linux-pam + depends on !BR2_STATIC_LIBS # linux-pam + depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam + select BR2_PACKAGE_LINUX_PAM + help + PAM (Pluggable Authentication Module) bindings for Python. + + https://admin.fedoraproject.org/pkgdb/package/PyPAM/ diff --git a/buildroot/package/python-pam/python-pam.hash b/buildroot/package/python-pam/python-pam.hash new file mode 100644 index 0000000..14a8948 --- /dev/null +++ b/buildroot/package/python-pam/python-pam.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 796ac019b9ee805696d0d277d8fb912fa2391b6ac070dc6f9f1a9a0fadbc3a5a PyPAM-0.5.0.tar.gz diff --git a/buildroot/package/python-pam/python-pam.mk b/buildroot/package/python-pam/python-pam.mk new file mode 100644 index 0000000..943e01d --- /dev/null +++ b/buildroot/package/python-pam/python-pam.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pam +# +################################################################################ + +PYTHON_PAM_VERSION = 0.5.0 +PYTHON_PAM_SOURCE = PyPAM-$(PYTHON_PAM_VERSION).tar.gz +# pangalactic.org gone +PYTHON_PAM_SITE = http://pkgs.fedoraproject.org/repo/pkgs/PyPAM/PyPAM-0.5.0.tar.gz/f1e7c2c56421dda28a75ace59a3c8871 +PYTHON_PAM_SETUP_TYPE = distutils +PYTHON_PAM_LICENSE = LGPL-2.1 +PYTHON_PAM_LICENSE_FILES = COPYING +PYTHON_PAM_DEPENDENCIES = linux-pam + +$(eval $(python-package)) diff --git a/buildroot/package/python-paramiko/Config.in b/buildroot/package/python-paramiko/Config.in new file mode 100644 index 0000000..1f86af3 --- /dev/null +++ b/buildroot/package/python-paramiko/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_PARAMIKO + bool "python-paramiko" + depends on BR2_INSTALL_LIBSTDCPP # python-pyasn + select BR2_PACKAGE_PYTHON_BCRYPT # runtime + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_PYASN # runtime + select BR2_PACKAGE_PYTHON_PYNACL # runtime + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + help + SSH2 protocol library. + + https://github.com/paramiko/paramiko/ + +comment "python-paramiko needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-paramiko/python-paramiko.hash b/buildroot/package/python-paramiko/python-paramiko.hash new file mode 100644 index 0000000..3b4c779 --- /dev/null +++ b/buildroot/package/python-paramiko/python-paramiko.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/paramiko/json, sha256 locally computed +md5 d44932891b1ce4bfd3e9e9e06c90395d paramiko-2.2.0.tar.gz +sha256 24b6cdb42eedb50f3b9d994ab0ca63e74db57555346e97c6e4b8c2ab51cdfd81 paramiko-2.2.0.tar.gz diff --git a/buildroot/package/python-paramiko/python-paramiko.mk b/buildroot/package/python-paramiko/python-paramiko.mk new file mode 100644 index 0000000..0aed667 --- /dev/null +++ b/buildroot/package/python-paramiko/python-paramiko.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-paramiko +# +################################################################################ + +PYTHON_PARAMIKO_VERSION = 2.2.0 +PYTHON_PARAMIKO_SOURCE = paramiko-$(PYTHON_PARAMIKO_VERSION).tar.gz +PYTHON_PARAMIKO_SITE = https://pypi.python.org/packages/ea/a1/75393511fa6b645d28bd614ba061af99e94a6916c6b4f619f8b6b58bc35e +PYTHON_PARAMIKO_SETUP_TYPE = setuptools +PYTHON_PARAMIKO_LICENSE = LGPL-2.1+ +PYTHON_PARAMIKO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-pathlib2/Config.in b/buildroot/package/python-pathlib2/Config.in new file mode 100644 index 0000000..7297f0a --- /dev/null +++ b/buildroot/package/python-pathlib2/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_PATHLIB2 + bool "python-pathlib2" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_SCANDIR # runtime + help + Object-oriented filesystem paths. + + The goal of pathlib2 is to provide a backport of standard + pathlib module which tracks the standard library module, so + all the newest features of the standard pathlib can be used + also on older Python versions. + + https://pypi.python.org/pypi/pathlib2 diff --git a/buildroot/package/python-pathlib2/python-pathlib2.hash b/buildroot/package/python-pathlib2/python-pathlib2.hash new file mode 100644 index 0000000..a9c2949 --- /dev/null +++ b/buildroot/package/python-pathlib2/python-pathlib2.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pathlib2/json, sha256 locally computed +md5 6c75bfde898b6c88627621a48ee8de14 pathlib2-2.2.1.tar.gz +sha256 ce9007df617ef6b7bd8a31cd2089ed0c1fed1f7c23cf2bf1ba140b3dd563175d pathlib2-2.2.1.tar.gz diff --git a/buildroot/package/python-pathlib2/python-pathlib2.mk b/buildroot/package/python-pathlib2/python-pathlib2.mk new file mode 100644 index 0000000..0116420 --- /dev/null +++ b/buildroot/package/python-pathlib2/python-pathlib2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pathlib2 +# +################################################################################ + +PYTHON_PATHLIB2_VERSION = 2.2.1 +PYTHON_PATHLIB2_SOURCE = pathlib2-$(PYTHON_PATHLIB2_VERSION).tar.gz +PYTHON_PATHLIB2_SITE = https://pypi.python.org/packages/ab/d8/ac7489d50146f29d0a14f65545698f4545d8a6b739b24b05859942048b56 +PYTHON_PATHLIB2_LICENSE = MIT +PYTHON_PATHLIB2_LICENSE_FILES = LICENSE.rst +PYTHON_PATHLIB2_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pathpy/Config.in b/buildroot/package/python-pathpy/Config.in new file mode 100644 index 0000000..98c0512 --- /dev/null +++ b/buildroot/package/python-pathpy/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PATHPY + bool "python-pathpy" + help + path.py implements a path objects as first-class + entities, allowing common operations on files to + be invoked on those path objects directly. + + https://github.com/jaraco/path.py diff --git a/buildroot/package/python-pathpy/python-pathpy.hash b/buildroot/package/python-pathpy/python-pathpy.hash new file mode 100644 index 0000000..de22f6c --- /dev/null +++ b/buildroot/package/python-pathpy/python-pathpy.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/path.py/json, sha256 locally computed +md5 afb4f92e4114b595f50573ecd61c31ee path.py-10.5.tar.gz +sha256 63a7af08676668fd51750f111affbd38c1a13c61aba15c6665b16681771c79a8 path.py-10.5.tar.gz diff --git a/buildroot/package/python-pathpy/python-pathpy.mk b/buildroot/package/python-pathpy/python-pathpy.mk new file mode 100644 index 0000000..4523316 --- /dev/null +++ b/buildroot/package/python-pathpy/python-pathpy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pathpy +# +################################################################################ + +PYTHON_PATHPY_VERSION = 10.5 +PYTHON_PATHPY_SOURCE = path.py-$(PYTHON_PATHPY_VERSION).tar.gz +PYTHON_PATHPY_SITE = https://pypi.python.org/packages/a5/7b/7b303dc1b79fc394b67cea351455ec0db8e6ca5d8537687d40cb7c7d70bb +PYTHON_PATHPY_SETUP_TYPE = setuptools +PYTHON_PATHPY_LICENSE = MIT +PYTHON_PATHPY_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/buildroot/package/python-pathtools/Config.in b/buildroot/package/python-pathtools/Config.in new file mode 100644 index 0000000..63777bd --- /dev/null +++ b/buildroot/package/python-pathtools/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PATHTOOLS + bool "python-pathtools" + help + File system general utilities. + + http://github.com/gorakhargosh/pathtools diff --git a/buildroot/package/python-pathtools/python-pathtools.hash b/buildroot/package/python-pathtools/python-pathtools.hash new file mode 100644 index 0000000..1fa624d --- /dev/null +++ b/buildroot/package/python-pathtools/python-pathtools.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/pathtools/json +md5 9a1af5c605768ea5804b03b734ff0f82 pathtools-0.1.2.tar.gz +# sha256 calculated by scanpypi +sha256 7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0 pathtools-0.1.2.tar.gz diff --git a/buildroot/package/python-pathtools/python-pathtools.mk b/buildroot/package/python-pathtools/python-pathtools.mk new file mode 100644 index 0000000..2b4a271 --- /dev/null +++ b/buildroot/package/python-pathtools/python-pathtools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pathtools +# +################################################################################ + +PYTHON_PATHTOOLS_VERSION = 0.1.2 +PYTHON_PATHTOOLS_SOURCE = pathtools-$(PYTHON_PATHTOOLS_VERSION).tar.gz +PYTHON_PATHTOOLS_SITE = https://pypi.python.org/packages/e7/7f/470d6fcdf23f9f3518f6b0b76be9df16dcc8630ad409947f8be2eb0ed13a +PYTHON_PATHTOOLS_SETUP_TYPE = setuptools +PYTHON_PATHTOOLS_LICENSE = MIT +PYTHON_PATHTOOLS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-pathvalidate/Config.in b/buildroot/package/python-pathvalidate/Config.in new file mode 100644 index 0000000..8606696 --- /dev/null +++ b/buildroot/package/python-pathvalidate/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PATHVALIDATE + bool "python-pathvalidate" + help + pathvalidate is a python library to validate/sanitize a string + such as filename/variable-name. + + https://github.com/thombashi/pathvalidate diff --git a/buildroot/package/python-pathvalidate/python-pathvalidate.hash b/buildroot/package/python-pathvalidate/python-pathvalidate.hash new file mode 100644 index 0000000..734d449 --- /dev/null +++ b/buildroot/package/python-pathvalidate/python-pathvalidate.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pathvalidate/json, sha256 locally computed +md5 fa119fcdbc744dc3a9de11185437992c pathvalidate-0.16.0.tar.gz +sha256 81c665a16e41203dc7698caf4f7ee15b7da97e36368e30e76e76e968ce77f468 pathvalidate-0.16.0.tar.gz diff --git a/buildroot/package/python-pathvalidate/python-pathvalidate.mk b/buildroot/package/python-pathvalidate/python-pathvalidate.mk new file mode 100644 index 0000000..c25f4ce --- /dev/null +++ b/buildroot/package/python-pathvalidate/python-pathvalidate.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pathvalidate +# +################################################################################ + +PYTHON_PATHVALIDATE_VERSION = 0.16.0 +PYTHON_PATHVALIDATE_SOURCE = pathvalidate-$(PYTHON_PATHVALIDATE_VERSION).tar.gz +PYTHON_PATHVALIDATE_SITE = https://pypi.python.org/packages/d8/c5/37474d872ca29510a10d93b103920fad551f577b696104a3574a89093e5f +PYTHON_PATHVALIDATE_SETUP_TYPE = setuptools +PYTHON_PATHVALIDATE_LICENSE = MIT +PYTHON_PATHVALIDATE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-pexpect/Config.in b/buildroot/package/python-pexpect/Config.in new file mode 100644 index 0000000..58a3af5 --- /dev/null +++ b/buildroot/package/python-pexpect/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PEXPECT + bool "python-pexpect" + select BR2_PACKAGE_PYTHON_PTYPROCESS # runtime + help + Pexpect is a pure Python module for spawning child + applications; controlling them; and responding to expected + patterns in their output. Pexpect works like Don Libes’ + Expect. Pexpect allows your script to spawn a child + application and control it as if a human were typing + commands. + + https://pexpect.readthedocs.org diff --git a/buildroot/package/python-pexpect/python-pexpect.hash b/buildroot/package/python-pexpect/python-pexpect.hash new file mode 100644 index 0000000..e383607 --- /dev/null +++ b/buildroot/package/python-pexpect/python-pexpect.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pexpect/json, sha256 locally computed +md5 3694410001a99dff83f0b500a1ca1c95 pexpect-4.2.1.tar.gz +sha256 3d132465a75b57aa818341c6521392a06cc660feb3988d7f1074f39bd23c9a92 pexpect-4.2.1.tar.gz diff --git a/buildroot/package/python-pexpect/python-pexpect.mk b/buildroot/package/python-pexpect/python-pexpect.mk new file mode 100644 index 0000000..f1f9903 --- /dev/null +++ b/buildroot/package/python-pexpect/python-pexpect.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# python-pexpect +# +################################################################################ + +PYTHON_PEXPECT_VERSION = 4.2.1 +PYTHON_PEXPECT_SOURCE = pexpect-$(PYTHON_PEXPECT_VERSION).tar.gz +PYTHON_PEXPECT_SITE = https://pypi.python.org/packages/e8/13/d0b0599099d6cd23663043a2a0bb7c61e58c6ba359b2656e6fb000ef5b98 +PYTHON_PEXPECT_LICENSE = ISC +PYTHON_PEXPECT_LICENSE_FILES = LICENSE +PYTHON_PEXPECT_SETUP_TYPE = distutils + +# async.py is not usable with Python 2, and removing is the solution +# recommended by upstream: +# https://github.com/pexpect/pexpect/issues/290 +ifeq ($(BR2_PACKAGE_PYTHON),y) +define PYTHON_PEXPECT_REMOVE_ASYNC_PY + $(RM) $(@D)/pexpect/async.py +endef +PYTHON_PEXPECT_POST_PATCH_HOOKS += PYTHON_PEXPECT_REMOVE_ASYNC_PY +endif + +$(eval $(python-package)) diff --git a/buildroot/package/python-pickleshare/Config.in b/buildroot/package/python-pickleshare/Config.in new file mode 100644 index 0000000..35a2663 --- /dev/null +++ b/buildroot/package/python-pickleshare/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PICKLESHARE + bool "python-pickleshare" + select BR2_PACKAGE_PYTHON_PATHLIB2 if BR2_PACKAGE_PYTHON # runtime + help + Tiny 'shelve'-like database with concurrency support + + https://pypi.python.org/pypi/pickleshare diff --git a/buildroot/package/python-pickleshare/python-pickleshare.hash b/buildroot/package/python-pickleshare/python-pickleshare.hash new file mode 100644 index 0000000..6e3d408 --- /dev/null +++ b/buildroot/package/python-pickleshare/python-pickleshare.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pickleshare/json, sha256 locally computed +md5 6a9e5dd8dfc023031f6b7b3f824cab12 pickleshare-0.7.4.tar.gz +sha256 84a9257227dfdd6fe1b4be1319096c20eb85ff1e82c7932f36efccfe1b09737b pickleshare-0.7.4.tar.gz diff --git a/buildroot/package/python-pickleshare/python-pickleshare.mk b/buildroot/package/python-pickleshare/python-pickleshare.mk new file mode 100644 index 0000000..53fd84e --- /dev/null +++ b/buildroot/package/python-pickleshare/python-pickleshare.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pickleshare +# +################################################################################ + +PYTHON_PICKLESHARE_VERSION = 0.7.4 +PYTHON_PICKLESHARE_SOURCE = pickleshare-$(PYTHON_PICKLESHARE_VERSION).tar.gz +PYTHON_PICKLESHARE_SITE = https://pypi.python.org/packages/69/fe/dd137d84daa0fd13a709e448138e310d9ea93070620c9db5454e234af525 +PYTHON_PICKLESHARE_LICENSE = MIT +PYTHON_PICKLESHARE_LICENSE_FILES = LICENSE +PYTHON_PICKLESHARE_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pillow/Config.in b/buildroot/package/python-pillow/Config.in new file mode 100644 index 0000000..3820ba8 --- /dev/null +++ b/buildroot/package/python-pillow/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_PILLOW + bool "python-pillow" + help + Pillow is the "friendly" PIL fork by Alex Clark and + Contributors. PIL is the Python Imaging Library by Fredrik + Lundh and Contributors. + + Pillow relies on external libraries to provide support + various image formats. Select the corresponding package(s) + to get this support. Pillow can use jpeg, zlib (for PNG), + tiff, freetype, webp, and openjpeg (JPEG-2000). + + https://pypi.python.org/pypi/Pillow/ diff --git a/buildroot/package/python-pillow/python-pillow.hash b/buildroot/package/python-pillow/python-pillow.hash new file mode 100644 index 0000000..d8c083b --- /dev/null +++ b/buildroot/package/python-pillow/python-pillow.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pillow/json, sha256 locally computed +md5 11e5e2046cf41586716a6042d89abeeb Pillow-4.2.1.tar.gz +sha256 c724f65870e545316f9e82e4c6d608ab5aa9dd82d5185e5b2e72119378740073 Pillow-4.2.1.tar.gz diff --git a/buildroot/package/python-pillow/python-pillow.mk b/buildroot/package/python-pillow/python-pillow.mk new file mode 100644 index 0000000..79d6a77 --- /dev/null +++ b/buildroot/package/python-pillow/python-pillow.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# python-pillow +# +################################################################################ + +PYTHON_PILLOW_VERSION = 4.2.1 +PYTHON_PILLOW_SOURCE = Pillow-$(PYTHON_PILLOW_VERSION).tar.gz +PYTHON_PILLOW_SITE = https://pypi.python.org/packages/55/aa/f7f983fb72710a9daa4b3374b7c160091d3f94f5c09221f9336ade9027f3 +PYTHON_PILLOW_LICENSE = PIL Software License +PYTHON_PILLOW_LICENSE_FILES = LICENSE +PYTHON_PILLOW_SETUP_TYPE = setuptools +PYTHON_PILLOW_BUILD_OPTS = --disable-platform-guessing + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +PYTHON_PILLOW_DEPENDENCIES += freetype +PYTHON_PILLOW_BUILD_OPTS += --enable-freetype +else +PYTHON_PILLOW_BUILD_OPTS += --disable-freetype +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +PYTHON_PILLOW_DEPENDENCIES += jpeg +PYTHON_PILLOW_BUILD_OPTS += --enable-jpeg +else +PYTHON_PILLOW_BUILD_OPTS += --disable-jpeg +endif + +ifeq ($(BR2_PACKAGE_OPENJPEG),y) +PYTHON_PILLOW_DEPENDENCIES += openjpeg +PYTHON_PILLOW_BUILD_OPTS += --enable-jpeg2000 +else +PYTHON_PILLOW_BUILD_OPTS += --disable-jpeg2000 +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +PYTHON_PILLOW_DEPENDENCIES += tiff +PYTHON_PILLOW_BUILD_OPTS += --enable-tiff +else +PYTHON_PILLOW_BUILD_OPTS += --disable-tiff +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +PYTHON_PILLOW_DEPENDENCIES += webp +PYTHON_PILLOW_BUILD_OPTS += --enable-webp +else +PYTHON_PILLOW_BUILD_OPTS += --disable-webp +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +PYTHON_PILLOW_DEPENDENCIES += zlib +PYTHON_PILLOW_BUILD_OPTS += --enable-zlib +else +PYTHON_PILLOW_BUILD_OPTS += --disable-zlib +endif + +define PYTHON_PILLOW_BUILD_CMDS + cd $(PYTHON_PILLOW_BUILDDIR); \ + $(PYTHON_PILLOW_BASE_ENV) $(PYTHON_PILLOW_ENV) \ + $(PYTHON_PILLOW_PYTHON_INTERPRETER) setup.py build_ext \ + $(PYTHON_PILLOW_BASE_BUILD_OPTS) $(PYTHON_PILLOW_BUILD_OPTS) +endef + +define PYTHON_PILLOW_INSTALL_TARGET_CMDS + cd $(PYTHON_PILLOW_BUILDDIR); \ + $(PYTHON_PILLOW_BASE_ENV) $(PYTHON_PILLOW_ENV) \ + $(PYTHON_PILLOW_PYTHON_INTERPRETER) setup.py build_ext \ + $(PYTHON_PILLOW_BUILD_OPTS) install \ + $(PYTHON_PILLOW_BASE_INSTALL_TARGET_OPTS) \ + $(PYTHON_PILLOW_INSTALL_TARGET_OPTS) +endef + +$(eval $(python-package)) diff --git a/buildroot/package/python-portend/Config.in b/buildroot/package/python-portend/Config.in new file mode 100644 index 0000000..6b21078 --- /dev/null +++ b/buildroot/package/python-portend/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PORTEND + bool "python-portend" + select BR2_PACKAGE_PYTHON_TEMPORA # runtime + help + TCP port monitoring utilities. + + https://github.com/jaraco/portend diff --git a/buildroot/package/python-portend/python-portend.hash b/buildroot/package/python-portend/python-portend.hash new file mode 100644 index 0000000..ce4d5f6 --- /dev/null +++ b/buildroot/package/python-portend/python-portend.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/portend/json, sha256 locally computed +md5 a45e001d40227c4529b1a7186f4442f5 portend-1.8.tar.gz +sha256 7de919b82c4ac60d4768fe80a2557290661aa665b7c427de6249d8cb2fde5561 portend-1.8.tar.gz diff --git a/buildroot/package/python-portend/python-portend.mk b/buildroot/package/python-portend/python-portend.mk new file mode 100644 index 0000000..b0e89b1 --- /dev/null +++ b/buildroot/package/python-portend/python-portend.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-portend +# +################################################################################ + +PYTHON_PORTEND_VERSION = 1.8 +PYTHON_PORTEND_SOURCE = portend-$(PYTHON_PORTEND_VERSION).tar.gz +PYTHON_PORTEND_SITE = https://pypi.python.org/packages/3f/37/f3ab6c4a00632d53d7dfb74ba4a695e86605b92b0a94bd41fa443b60ccb6 +PYTHON_PORTEND_LICENSE = MIT +PYTHON_PORTEND_SETUP_TYPE = setuptools +PYTHON_PORTEND_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/buildroot/package/python-posix-ipc/Config.in b/buildroot/package/python-posix-ipc/Config.in new file mode 100644 index 0000000..eba36ed --- /dev/null +++ b/buildroot/package/python-posix-ipc/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_POSIX_IPC + bool "python-posix-ipc" + depends on BR2_PACKAGE_PYTHON + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The Python extension module posix_ipc gives access to POSIX + inter-process semaphores, shared memory and message queues + on systems that support the POSIX Realtime Extensions + a.k.a. POSIX 1003.1b-1993. + + http://semanchuk.com/philip/posix_ipc/ + +comment "python-posix-ipc needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/python-posix-ipc/python-posix-ipc.hash b/buildroot/package/python-posix-ipc/python-posix-ipc.hash new file mode 100644 index 0000000..196f186 --- /dev/null +++ b/buildroot/package/python-posix-ipc/python-posix-ipc.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/posix-ipc/json, sha256 locally computed +md5 85607a392087715ac3a3c7ded2492d06 posix_ipc-1.0.0.tar.gz +sha256 9c93070374ca672725575e5c9874930c8cde69367fb90378b2255e048e31efcb posix_ipc-1.0.0.tar.gz diff --git a/buildroot/package/python-posix-ipc/python-posix-ipc.mk b/buildroot/package/python-posix-ipc/python-posix-ipc.mk new file mode 100644 index 0000000..6178c75 --- /dev/null +++ b/buildroot/package/python-posix-ipc/python-posix-ipc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-posix-ipc +# +################################################################################ + +PYTHON_POSIX_IPC_VERSION = 1.0.0 +PYTHON_POSIX_IPC_SOURCE = posix_ipc-$(PYTHON_POSIX_IPC_VERSION).tar.gz +PYTHON_POSIX_IPC_SITE = https://pypi.python.org/packages/f0/e6/bff62b62b2e75f695b737695951b7a4c1c6595369268a37868f5c34e1c12 +PYTHON_POSIX_IPC_LICENSE = BSD-3-Clause +PYTHON_POSIX_IPC_LICENSE_FILES = LICENSE +PYTHON_POSIX_IPC_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-priority/Config.in b/buildroot/package/python-priority/Config.in new file mode 100644 index 0000000..b73b7e2 --- /dev/null +++ b/buildroot/package/python-priority/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PRIORITY + bool "python-priority" + help + A pure-Python implementation of the HTTP/2 priority tree. + + http://python-hyper.org/priority/ diff --git a/buildroot/package/python-priority/python-priority.hash b/buildroot/package/python-priority/python-priority.hash new file mode 100644 index 0000000..e115d6a --- /dev/null +++ b/buildroot/package/python-priority/python-priority.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/priority/json, sha256 locally computed +md5 4f1ff52f7fa448e9d9cb46337ae86d1e priority-1.3.0.tar.gz +sha256 6bc1961a6d7fcacbfc337769f1a382c8e746566aaa365e78047abe9f66b2ffbe priority-1.3.0.tar.gz diff --git a/buildroot/package/python-priority/python-priority.mk b/buildroot/package/python-priority/python-priority.mk new file mode 100644 index 0000000..8b6dbc1 --- /dev/null +++ b/buildroot/package/python-priority/python-priority.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-priority +# +################################################################################ + +PYTHON_PRIORITY_VERSION = 1.3.0 +PYTHON_PRIORITY_SOURCE = priority-$(PYTHON_PRIORITY_VERSION).tar.gz +PYTHON_PRIORITY_SITE = https://pypi.python.org/packages/ba/96/7d0b024087062418dfe02a68cd6b195399266ac002fb517aad94cc93e076 +PYTHON_PRIORITY_SETUP_TYPE = setuptools +PYTHON_PRIORITY_LICENSE = MIT +PYTHON_PRIORITY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-prompt-toolkit/Config.in b/buildroot/package/python-prompt-toolkit/Config.in new file mode 100644 index 0000000..ccc9ebb --- /dev/null +++ b/buildroot/package/python-prompt-toolkit/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PROMPT_TOOLKIT + bool "python-prompt-toolkit" + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_WCWIDTH # runtime + help + Library for building powerful interactive command lines in + Python. + + https://github.com/jonathanslenders/python-prompt-toolkit diff --git a/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.hash b/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.hash new file mode 100644 index 0000000..f60fc08 --- /dev/null +++ b/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/prompt_toolkit/json, sha256 locally computed +md5 427b496d2c147bd3819bc3a7f6e0d493 prompt_toolkit-1.0.13.tar.gz +sha256 33d68ca09f76cd73287fde7df5748ffacf26a8238dd61ee81ac50860ea7c6776 prompt_toolkit-1.0.13.tar.gz diff --git a/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.mk b/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.mk new file mode 100644 index 0000000..19b7b34 --- /dev/null +++ b/buildroot/package/python-prompt-toolkit/python-prompt-toolkit.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-prompt-toolkit +# +################################################################################ + +PYTHON_PROMPT_TOOLKIT_VERSION = 1.0.13 +PYTHON_PROMPT_TOOLKIT_SOURCE = prompt_toolkit-$(PYTHON_PROMPT_TOOLKIT_VERSION).tar.gz +PYTHON_PROMPT_TOOLKIT_SITE = https://pypi.python.org/packages/23/be/4876b52d5cc159cbd4b0ff6e7aa419a26470849a43a8f647857a4a24467b +PYTHON_PROMPT_TOOLKIT_SETUP_TYPE = setuptools +PYTHON_PROMPT_TOOLKIT_LICENSE = BSD-3-Clause +PYTHON_PROMPT_TOOLKIT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-protobuf/Config.in b/buildroot/package/python-protobuf/Config.in new file mode 100644 index 0000000..500c82a --- /dev/null +++ b/buildroot/package/python-protobuf/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_PROTOBUF + bool "python-protobuf" + # host-protobuf only builds on certain architectures + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_HOST_GCC_AT_LEAST_4_5 # host-protobuf + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Python implementation of the Google Protocol Buffers. + + Protocol buffers are Google's language-neutral, + platform-neutral, extensible mechanism for serializing + structured data. + + https://github.com/protobuf-c/protobuf-c diff --git a/buildroot/package/python-protobuf/python-protobuf.hash b/buildroot/package/python-protobuf/python-protobuf.hash new file mode 100644 index 0000000..91cab4e --- /dev/null +++ b/buildroot/package/python-protobuf/python-protobuf.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1faa722cf475c8e4c43ddb393d6f1477f1a56c93be38a1c8e367c358db476b5f protobuf-python-3.4.1.tar.gz diff --git a/buildroot/package/python-protobuf/python-protobuf.mk b/buildroot/package/python-protobuf/python-protobuf.mk new file mode 100644 index 0000000..b91ba49 --- /dev/null +++ b/buildroot/package/python-protobuf/python-protobuf.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-protobuf +# +################################################################################ + +PYTHON_PROTOBUF_VERSION = $(PROTOBUF_VERSION) +PYTHON_PROTOBUF_SOURCE = protobuf-python-$(PYTHON_PROTOBUF_VERSION).tar.gz +PYTHON_PROTOBUF_SITE = $(PROTOBUF_SITE) +PYTHON_PROTOBUF_LICENSE = BSD-3-Clause +PYTHON_PROTOBUF_LICENSE_FILES = LICENSE +PYTHON_PROTOBUF_DEPENDENCIES = host-protobuf +PYTHON_PROTOBUF_SETUP_TYPE = setuptools +PYTHON_PROTOBUF_SUBDIR = python + +$(eval $(python-package)) diff --git a/buildroot/package/python-psutil/Config.in b/buildroot/package/python-psutil/Config.in new file mode 100644 index 0000000..c64eeee --- /dev/null +++ b/buildroot/package/python-psutil/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PSUTIL + bool "python-psutil" + help + psutil is a cross-platform library for retrieving + information on running processes and system utilization + (CPU, memory, disks, network) in Python. + + https://pypi.python.org/pypi/psutil diff --git a/buildroot/package/python-psutil/python-psutil.hash b/buildroot/package/python-psutil/python-psutil.hash new file mode 100644 index 0000000..19fb8a4 --- /dev/null +++ b/buildroot/package/python-psutil/python-psutil.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/psutil/json, sha256 locally computed +md5 c9aa2599dcd9e5b59d71b6660d396062 psutil-5.2.0.tar.gz +sha256 2fc91d068faa5613c093335f0e758673ef8c722ad4bfa4aded64c13ae69089eb psutil-5.2.0.tar.gz diff --git a/buildroot/package/python-psutil/python-psutil.mk b/buildroot/package/python-psutil/python-psutil.mk new file mode 100644 index 0000000..2b41df7 --- /dev/null +++ b/buildroot/package/python-psutil/python-psutil.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-psutil +# +################################################################################ + +PYTHON_PSUTIL_VERSION = 5.2.0 +PYTHON_PSUTIL_SOURCE = psutil-$(PYTHON_PSUTIL_VERSION).tar.gz +PYTHON_PSUTIL_SITE = https://pypi.python.org/packages/3c/2f/f3ab91349c666f009077157b12057e613a3152a46a6c3be883777546b6de +PYTHON_PSUTIL_SETUP_TYPE = setuptools +PYTHON_PSUTIL_LICENSE = BSD-3-Clause +PYTHON_PSUTIL_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-ptyprocess/Config.in b/buildroot/package/python-ptyprocess/Config.in new file mode 100644 index 0000000..b95dacb --- /dev/null +++ b/buildroot/package/python-ptyprocess/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PTYPROCESS + bool "python-ptyprocess" + help + Launch a subprocess in a pseudo terminal (pty), and interact + with both the process and its pty. + + https://github.com/pexpect/ptyprocess diff --git a/buildroot/package/python-ptyprocess/python-ptyprocess.hash b/buildroot/package/python-ptyprocess/python-ptyprocess.hash new file mode 100644 index 0000000..0e2e0ae --- /dev/null +++ b/buildroot/package/python-ptyprocess/python-ptyprocess.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org, sha256 locally computed +md5 94e537122914cc9ec9c1eadcd36e73a1 ptyprocess-0.5.1.tar.gz +sha256 0530ce63a9295bfae7bd06edc02b6aa935619f486f0f1dc0972f516265ee81a6 ptyprocess-0.5.1.tar.gz diff --git a/buildroot/package/python-ptyprocess/python-ptyprocess.mk b/buildroot/package/python-ptyprocess/python-ptyprocess.mk new file mode 100644 index 0000000..59329d0 --- /dev/null +++ b/buildroot/package/python-ptyprocess/python-ptyprocess.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ptyprocess +# +################################################################################ + +PYTHON_PTYPROCESS_VERSION = 0.5.1 +PYTHON_PTYPROCESS_SITE = https://pypi.python.org/packages/source/p/ptyprocess +PYTHON_PTYPROCESS_SOURCE = ptyprocess-$(PYTHON_PTYPROCESS_VERSION).tar.gz +PYTHON_PTYPROCESS_LICENSE = ISC +PYTHON_PTYPROCESS_LICENSE_FILES = LICENSE +PYTHON_PTYPROCESS_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-pudb/Config.in b/buildroot/package/python-pudb/Config.in new file mode 100644 index 0000000..d4a4f73 --- /dev/null +++ b/buildroot/package/python-pudb/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_PUDB + bool "python-pudb" + select BR2_PACKAGE_PYTHON_URWID # runtime + select BR2_PACKAGE_PYTHON_PYGMENTS # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON_CURSES if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_CURSES if BR2_PACKAGE_PYTHON3 # runtime + help + A full-screen, console-based Python debugger. + + https://github.com/inducer/pudb diff --git a/buildroot/package/python-pudb/python-pudb.hash b/buildroot/package/python-pudb/python-pudb.hash new file mode 100644 index 0000000..febf38f --- /dev/null +++ b/buildroot/package/python-pudb/python-pudb.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pudb/json, sha256 locally computed +md5 97597d9fec79494a83ec8d55987a8a82 pudb-2017.1.2.tar.gz +sha256 29d82ed05030146e5f2f9431926cc24f6c6c284cb451a4a850625fc0303e46e7 pudb-2017.1.2.tar.gz diff --git a/buildroot/package/python-pudb/python-pudb.mk b/buildroot/package/python-pudb/python-pudb.mk new file mode 100644 index 0000000..b6b3d53 --- /dev/null +++ b/buildroot/package/python-pudb/python-pudb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pudb +# +################################################################################ + +PYTHON_PUDB_VERSION = 2017.1.2 +PYTHON_PUDB_SOURCE = pudb-$(PYTHON_PUDB_VERSION).tar.gz +PYTHON_PUDB_SITE = https://pypi.python.org/packages/d3/8a/e0fa18cf6f939a63364117546c9bd933add800642004ad40fd5f5bdba0c6 +PYTHON_PUDB_SETUP_TYPE = setuptools +PYTHON_PUDB_LICENSE = MIT +PYTHON_PUDB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyasn-modules/Config.in b/buildroot/package/python-pyasn-modules/Config.in new file mode 100644 index 0000000..387020d --- /dev/null +++ b/buildroot/package/python-pyasn-modules/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_PYASN_MODULES + bool "python-pyasn-modules" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_PYASN # runtime + help + A collection of ASN.1-based protocols modules. + + https://pypi.python.org/pypi/pyasn1-modules + +comment "python-pyasn-modules needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-pyasn-modules/python-pyasn-modules.hash b/buildroot/package/python-pyasn-modules/python-pyasn-modules.hash new file mode 100644 index 0000000..6d9a707 --- /dev/null +++ b/buildroot/package/python-pyasn-modules/python-pyasn-modules.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=178129bc7fbf07215c25230c5f053f81, sha256 locally computed. +md5 178129bc7fbf07215c25230c5f053f81 pyasn1-modules-0.0.8.tar.gz +sha256 10561934f1829bcc455c7ecdcdacdb4be5ffd3696f26f468eb6eb41e107f3837 pyasn1-modules-0.0.8.tar.gz diff --git a/buildroot/package/python-pyasn-modules/python-pyasn-modules.mk b/buildroot/package/python-pyasn-modules/python-pyasn-modules.mk new file mode 100644 index 0000000..b5e853a --- /dev/null +++ b/buildroot/package/python-pyasn-modules/python-pyasn-modules.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyasn-modules +# +################################################################################ + +PYTHON_PYASN_MODULES_VERSION = 0.0.8 +PYTHON_PYASN_MODULES_SOURCE = pyasn1-modules-$(PYTHON_PYASN_MODULES_VERSION).tar.gz +PYTHON_PYASN_MODULES_SITE = https://pypi.python.org/packages/source/p/pyasn1-modules +PYTHON_PYASN_MODULES_LICENSE = BSD-2-Clause +PYTHON_PYASN_MODULES_LICENSE_FILES = LICENSE.txt +PYTHON_PYASN_MODULES_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyasn/Config.in b/buildroot/package/python-pyasn/Config.in new file mode 100644 index 0000000..2396194 --- /dev/null +++ b/buildroot/package/python-pyasn/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_PYASN + bool "python-pyasn" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON + help + PyASN is a Python extension module that enables you to + perform very fast IP address to Autonomous System Number + lookups. + + https://github.com/hadiasghari/pyasn + +comment "python-pyasn needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-pyasn/python-pyasn.hash b/buildroot/package/python-pyasn/python-pyasn.hash new file mode 100644 index 0000000..59c90a8 --- /dev/null +++ b/buildroot/package/python-pyasn/python-pyasn.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=f00a02a631d4016818659d1cc38d229a, sha256 locally computed +md5 f00a02a631d4016818659d1cc38d229a pyasn1-0.1.9.tar.gz +sha256 853cacd96d1f701ddd67aa03ecc05f51890135b7262e922710112f12a2ed2a7f pyasn1-0.1.9.tar.gz diff --git a/buildroot/package/python-pyasn/python-pyasn.mk b/buildroot/package/python-pyasn/python-pyasn.mk new file mode 100644 index 0000000..f34520f --- /dev/null +++ b/buildroot/package/python-pyasn/python-pyasn.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyasn +# +################################################################################ + +PYTHON_PYASN_VERSION = 0.1.9 +PYTHON_PYASN_SOURCE = pyasn1-$(PYTHON_PYASN_VERSION).tar.gz +PYTHON_PYASN_SITE = https://pypi.python.org/packages/source/p/pyasn1 +PYTHON_PYASN_LICENSE = BSD-2-Clause +PYTHON_PYASN_LICENSE_FILES = LICENSE.txt +PYTHON_PYASN_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pycli/Config.in b/buildroot/package/python-pycli/Config.in new file mode 100644 index 0000000..e1ce3b9 --- /dev/null +++ b/buildroot/package/python-pycli/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYCLI + bool "python-pycli" + help + The cli package is a framework for making simple, correct + command line applications in Python. + + https://pythonhosted.org/pyCLI/ diff --git a/buildroot/package/python-pycli/python-pycli.hash b/buildroot/package/python-pycli/python-pycli.hash new file mode 100644 index 0000000..46a297e --- /dev/null +++ b/buildroot/package/python-pycli/python-pycli.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pycli/json, sha256 locally computed +md5 89c487e7c8068ce05d63394d2ae7ebad pyCLI-2.0.3.tar.gz +sha256 bc53e6c5db031ae1c05d131641f153d22a201c5e82cc8c9324a945752efbb622 pyCLI-2.0.3.tar.gz diff --git a/buildroot/package/python-pycli/python-pycli.mk b/buildroot/package/python-pycli/python-pycli.mk new file mode 100644 index 0000000..7aff1c6 --- /dev/null +++ b/buildroot/package/python-pycli/python-pycli.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pycli +# +################################################################################ + +PYTHON_PYCLI_VERSION = 2.0.3 +PYTHON_PYCLI_SOURCE = pyCLI-$(PYTHON_PYCLI_VERSION).tar.gz +PYTHON_PYCLI_SITE = https://pypi.python.org/packages/95/fc/b2d86a5fbdac4072bcf70b01674b612e1a13026f54962c878fe3eca36fd1 +PYTHON_PYCLI_LICENSE = ISC-like +PYTHON_PYCLI_LICENSE_FILES = lib/cli/__init__.py +PYTHON_PYCLI_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pycparser/Config.in b/buildroot/package/python-pycparser/Config.in new file mode 100644 index 0000000..49190c3 --- /dev/null +++ b/buildroot/package/python-pycparser/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYCPARSER + bool "python-pycparser" + help + C parser in Python + + https://github.com/eliben/pycparser diff --git a/buildroot/package/python-pycparser/python-pycparser.hash b/buildroot/package/python-pycparser/python-pycparser.hash new file mode 100644 index 0000000..25747c3 --- /dev/null +++ b/buildroot/package/python-pycparser/python-pycparser.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pycparser/json, sha256 locally computed +md5 ca98dcb50bc1276f230118f6af5a40c7 pycparser-2.17.tar.gz +sha256 0aac31e917c24cb3357f5a4d5566f2cc91a19ca41862f6c3c22dc60a629673b6 pycparser-2.17.tar.gz diff --git a/buildroot/package/python-pycparser/python-pycparser.mk b/buildroot/package/python-pycparser/python-pycparser.mk new file mode 100644 index 0000000..08a22b4 --- /dev/null +++ b/buildroot/package/python-pycparser/python-pycparser.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pycparser +# +################################################################################ + +PYTHON_PYCPARSER_VERSION = 2.17 +PYTHON_PYCPARSER_SOURCE = pycparser-$(PYTHON_PYCPARSER_VERSION).tar.gz +PYTHON_PYCPARSER_SITE = https://pypi.python.org/packages/be/64/1bb257ffb17d01f4a38d7ce686809a736837ad4371bcc5c42ba7a715c3ac +PYTHON_PYCPARSER_SETUP_TYPE = setuptools +PYTHON_PYCPARSER_LICENSE = BSD-3-Clause +PYTHON_PYCPARSER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-pycrypto/0001-remove-incorrect-header-path.patch b/buildroot/package/python-pycrypto/0001-remove-incorrect-header-path.patch new file mode 100644 index 0000000..9268d31 --- /dev/null +++ b/buildroot/package/python-pycrypto/0001-remove-incorrect-header-path.patch @@ -0,0 +1,21 @@ +Do not use /usr/include for headers + +Using /usr/include is wrong when doing cross-compilation, so get rid +of it, and rely on the compiler to use the appropriate default paths +for headers. + +Signed-off-by: Thomas Petazzoni + +Index: b/setup.py +=================================================================== +--- a/setup.py ++++ b/setup.py +@@ -370,7 +370,7 @@ + 'ext_modules': plat_ext + [ + # _fastmath (uses GNU mp library) + Extension("Crypto.PublicKey._fastmath", +- include_dirs=['src/','/usr/include/'], ++ include_dirs=['src/'], + libraries=['gmp'], + sources=["src/_fastmath.c"]), + diff --git a/buildroot/package/python-pycrypto/Config.in b/buildroot/package/python-pycrypto/Config.in new file mode 100644 index 0000000..e998ecf --- /dev/null +++ b/buildroot/package/python-pycrypto/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PYCRYPTO + bool "python-pycrypto" + select BR2_PACKAGE_GMP + help + PyCrypto is a collection of cryptographic algorithms and + protocols, implemented for use from Python. + + http://www.pycrypto.org/ diff --git a/buildroot/package/python-pycrypto/python-pycrypto.hash b/buildroot/package/python-pycrypto/python-pycrypto.hash new file mode 100644 index 0000000..4637894 --- /dev/null +++ b/buildroot/package/python-pycrypto/python-pycrypto.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c pycrypto-2.6.1.tar.gz diff --git a/buildroot/package/python-pycrypto/python-pycrypto.mk b/buildroot/package/python-pycrypto/python-pycrypto.mk new file mode 100644 index 0000000..927ba91 --- /dev/null +++ b/buildroot/package/python-pycrypto/python-pycrypto.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# python-pycrypto +# +################################################################################ + +PYTHON_PYCRYPTO_VERSION = 2.6.1 +PYTHON_PYCRYPTO_SOURCE = pycrypto-$(PYTHON_PYCRYPTO_VERSION).tar.gz +PYTHON_PYCRYPTO_SITE = http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto +PYTHON_PYCRYPTO_SETUP_TYPE = distutils + +PYTHON_PYCRYPTO_LICENSE = Public Domain, Python 2.2 License (HMAC.py, setup.py) +PYTHON_PYCRYPTO_LICENSE_FILES = \ + COPYRIGHT LEGAL/copy/LICENSE.libtom \ + LEGAL/copy/LICENSE.python-2.2 + +# The pycrypto package contains a LICENSE.orig file, but our patching +# infrastrucure removes all .orig file, so we must rename that license +# file prior to patching, so it is still available to the legal-info +# infrastructure +define PYTHON_PYCRYPTO_RENAME_LICENSE + mv $(@D)/LEGAL/copy/LICENSE.orig $(@D)/LEGAL/copy/LICENSE.original +endef +PYTHON_PYCRYPTO_POST_EXTRACT_HOOKS += PYTHON_PYCRYPTO_RENAME_LICENSE +HOST_PYTHON_PYCRYPTO_POST_EXTRACT_HOOKS += PYTHON_PYCRYPTO_RENAME_LICENSE +PYTHON_PYCRYPTO_LICENSE_FILES += LEGAL/copy/LICENSE.original + +PYTHON_PYCRYPTO_DEPENDENCIES = gmp +HOST_PYTHON_PYCRYPTO_DEPENDENCIES = host-gmp + +# The configure step needs to be run outside of the setup.py since it isn't +# run correctly for cross-compiling +define PYTHON_PYCRYPTO_CONFIGURE_CMDS + (cd $(@D) && \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure \ + --target=$(GNU_TARGET_NAME) \ + --host=$(GNU_TARGET_NAME) \ + --build=$(GNU_HOST_NAME) \ + --prefix=/usr \ + --exec-prefix=/usr \ + --sysconfdir=/etc \ + --program-prefix="" \ + ) +endef + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-pydal/Config.in b/buildroot/package/python-pydal/Config.in new file mode 100644 index 0000000..f1c97f9 --- /dev/null +++ b/buildroot/package/python-pydal/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_PYDAL + bool python-pydal + help + pyDAL is a pure Python Database Abstraction Layer. It + dynamically generates the SQL in real time using the + specified dialect for the database back end, so that you do + not have to write SQL code or learn different SQL dialects + (the term SQL is used generically), and your code will be + portable among different types of databases. + + pyDAL comes from the original web2py's DAL, with the aim of + being wide-compatible. pyDAL doesn't require web2py and can + be used in any Python context. + + https://github.com/web2py/pydal diff --git a/buildroot/package/python-pydal/python-pydal.hash b/buildroot/package/python-pydal/python-pydal.hash new file mode 100644 index 0000000..9a3fad3 --- /dev/null +++ b/buildroot/package/python-pydal/python-pydal.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pydal/json, sha256 locally computed +md5 5a6ad0db15dc39987b4518247a9d0b4b pyDAL-17.8.tar.gz +sha256 46abe2c978ec24013e29cf485a74c90309ebcd2f0d577687ff2d224547cebfc8 pyDAL-17.8.tar.gz diff --git a/buildroot/package/python-pydal/python-pydal.mk b/buildroot/package/python-pydal/python-pydal.mk new file mode 100644 index 0000000..c8d4b44 --- /dev/null +++ b/buildroot/package/python-pydal/python-pydal.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pydal +# +################################################################################ + +PYTHON_PYDAL_VERSION = 17.8 +PYTHON_PYDAL_SOURCE = pyDAL-$(PYTHON_PYDAL_VERSION).tar.gz +PYTHON_PYDAL_SITE = https://pypi.python.org/packages/e3/bd/1d5ca8be486d845074161456637f7d73acc09dc6c8d69bf0e7ad55ce9027 +PYTHON_PYDAL_LICENSE = BSD-3-Clause +PYTHON_PYDAL_LICENSE_FILES = LICENSE +PYTHON_PYDAL_SETUP_TYPE = setuptools + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-pyelftools/Config.in b/buildroot/package/python-pyelftools/Config.in new file mode 100644 index 0000000..ca27302 --- /dev/null +++ b/buildroot/package/python-pyelftools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYELFTOOLS + bool "python-pyelftools" + help + Pyelftools is a Python library for parsing and analyzing ELF + files and DWARF debug information. + + https://github.com/eliben/pyelftools diff --git a/buildroot/package/python-pyelftools/python-pyelftools.hash b/buildroot/package/python-pyelftools/python-pyelftools.hash new file mode 100644 index 0000000..e345a5b --- /dev/null +++ b/buildroot/package/python-pyelftools/python-pyelftools.hash @@ -0,0 +1,4 @@ +# From https://pypi.python.org/packages/ba/78/d4a186a2e38731286c99dc3e3ca8123b6f55cf2e28608e8daf2d84b65494/pyelftools-0.24.tar.gz#md5=c960d5fe0a9308d96ba38b4beec8ac8e +md5 c960d5fe0a9308d96ba38b4beec8ac8e pyelftools-0.24.tar.gz +# Locally calculated +sha256 e9dd97d685a5b96b88a988dabadb88e5a539b64cd7d7927fac9a7368dc4c459c pyelftools-0.24.tar.gz diff --git a/buildroot/package/python-pyelftools/python-pyelftools.mk b/buildroot/package/python-pyelftools/python-pyelftools.mk new file mode 100644 index 0000000..5b5b488 --- /dev/null +++ b/buildroot/package/python-pyelftools/python-pyelftools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyelftools +# +################################################################################ + +PYTHON_PYELFTOOLS_VERSION = 0.24 +PYTHON_PYELFTOOLS_SOURCE = pyelftools-$(PYTHON_PYELFTOOLS_VERSION).tar.gz +PYTHON_PYELFTOOLS_SITE = https://pypi.python.org/packages/ba/78/d4a186a2e38731286c99dc3e3ca8123b6f55cf2e28608e8daf2d84b65494 +PYTHON_PYELFTOOLS_LICENSE = Public domain +PYTHON_PYELFTOOLS_LICENSE_FILES = LICENSE +PYTHON_PYELFTOOLS_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyftpdlib/Config.in b/buildroot/package/python-pyftpdlib/Config.in new file mode 100644 index 0000000..e25c34e --- /dev/null +++ b/buildroot/package/python-pyftpdlib/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYFTPDLIB + bool "python-pyftpdlib" + help + Extremely fast and scalable Python FTP server library. + + https://github.com/giampaolo/pyftpdlib diff --git a/buildroot/package/python-pyftpdlib/python-pyftpdlib.hash b/buildroot/package/python-pyftpdlib/python-pyftpdlib.hash new file mode 100644 index 0000000..3ed1601 --- /dev/null +++ b/buildroot/package/python-pyftpdlib/python-pyftpdlib.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/pyftpdlib/json, sha256 locally computed +md5 f1c7e7f859b3310769149dea4ac26916 pyftpdlib-1.5.3.tar.gz +sha256 7b9ea701f91bee280c5a930a9c4ceaea91b6d4aaf82b8b8ede82fb84a32081a7 pyftpdlib-1.5.3.tar.gz +sha256 18a4ff1ddf890838e36504b307581e3eb42c890a7272ce28b18b3ce1205b7ea8 LICENSE diff --git a/buildroot/package/python-pyftpdlib/python-pyftpdlib.mk b/buildroot/package/python-pyftpdlib/python-pyftpdlib.mk new file mode 100644 index 0000000..a34b563 --- /dev/null +++ b/buildroot/package/python-pyftpdlib/python-pyftpdlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyftpdlib +# +################################################################################ + +PYTHON_PYFTPDLIB_VERSION = 1.5.3 +PYTHON_PYFTPDLIB_SOURCE = pyftpdlib-$(PYTHON_PYFTPDLIB_VERSION).tar.gz +PYTHON_PYFTPDLIB_SITE = https://pypi.python.org/packages/c5/fb/74f6425fbb7f2a87969e1aa01bb9684601de431a3488b95f64509bf985ef +PYTHON_PYFTPDLIB_SETUP_TYPE = setuptools +PYTHON_PYFTPDLIB_LICENSE = MIT +PYTHON_PYFTPDLIB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-pygame/Config.in b/buildroot/package/python-pygame/Config.in new file mode 100644 index 0000000..0a73852 --- /dev/null +++ b/buildroot/package/python-pygame/Config.in @@ -0,0 +1,56 @@ +config BR2_PACKAGE_PYTHON_PYGAME + bool "python-pygame" + select BR2_PACKAGE_SDL + help + Pygame is a cross-platfrom library designed to make it easy + to write multimedia software, such as games, in + Python. Pygame requires the Python language and SDL + multimedia library. + It can also make use of several other popular libraries. + + http://www.pygame.org/ + +if BR2_PACKAGE_PYTHON_PYGAME +config BR2_PACKAGE_PYTHON_PYGAME_IMAGE + bool "pygame.image" + select BR2_PACKAGE_SDL_IMAGE + select BR2_PACKAGE_SDL_IMAGE_PNG + select BR2_PACKAGE_SDL_IMAGE_JPEG + help + pygame module for loading, saving and transfering images. + Will autoselect sdl_image with png and jpeg support. + +config BR2_PACKAGE_PYTHON_PYGAME_EXAMPLES + bool "pygame.examples" + help + Include examples. + Selecting this option adds about 1.5 MB to the target file + system. + +config BR2_PACKAGE_PYTHON_PYGAME_FONT + bool "pygame.font" + select BR2_PACKAGE_SDL_TTF + help + pygame module for loading and rendering fonts. + Will autoselect sdl_ttf. + +config BR2_PACKAGE_PYTHON_PYGAME_MIXER + bool "pygame.mixer" + select BR2_PACKAGE_SDL_MIXER + help + pygame module for loading and playing sounds. + Will autoselect sdl_mixer. + +config BR2_PACKAGE_PYTHON_PYGAME_MIXER_MUSIC + bool "pygame.mixer.music" + depends on BR2_PACKAGE_PYTHON_PYGAME_MIXER + help + pygame module for controlling streamed audio + +config BR2_PACKAGE_PYTHON_PYGAME_SCRAP + bool "pygame.scrap" + depends on BR2_PACKAGE_SDL_X11 + help + pygame module for clipboard support (X11 needed) + +endif diff --git a/buildroot/package/python-pygame/python-pygame.mk b/buildroot/package/python-pygame/python-pygame.mk new file mode 100644 index 0000000..8deb42a --- /dev/null +++ b/buildroot/package/python-pygame/python-pygame.mk @@ -0,0 +1,111 @@ +################################################################################ +# +# python-pygame +# +################################################################################ + +# stable 1.9.1 release requires V4L which has been wiped out of recent Linux +# kernels, so use latest mercurial revision until next stable release is out. +PYTHON_PYGAME_VERSION = d61ea8eabd56 +PYTHON_PYGAME_SOURCE = pygame-$(PYTHON_PYGAME_VERSION).tar.gz +PYTHON_PYGAME_SITE = https://bitbucket.org/pygame/pygame +PYTHON_PYGAME_SITE_METHOD = hg +PYTHON_PYGAME_SETUP_TYPE = distutils +PYTHON_PYGAME_LICENSE = LGPL-2.1+ +PYTHON_PYGAME_LICENSE_FILES = LGPL + +ifeq ($(BR2_PACKAGE_PYTHON_PYGAME_IMAGE),y) +PYTHON_PYGAME_OPT_DEPENDS += sdl_image +endif + +ifeq ($(BR2_PACKAGE_PYTHON_PYGAME_FONT),y) +PYTHON_PYGAME_OPT_DEPENDS += sdl_ttf +endif + +ifeq ($(BR2_PACKAGE_PYTHON_PYGAME_MIXER),y) +PYTHON_PYGAME_OPT_DEPENDS += sdl_mixer +endif + +PYTHON_PYGAME_DEPENDENCIES = sdl $(PYTHON_PYGAME_OPT_DEPENDS) + +ifneq ($(BR2_PACKAGE_PYTHON_PYGAME_IMAGE),y) +define PYTHON_PYGAME_UNCONFIGURE_IMAGE + $(SED) 's/^imageext/#imageext/' $(@D)/Setup +endef +endif + +ifneq ($(BR2_PACKAGE_PYTHON_PYGAME_FONT),y) +define PYTHON_PYGAME_UNCONFIGURE_FONT + $(SED) 's/^font/#font/' $(@D)/Setup +endef +endif + +ifneq ($(BR2_PACKAGE_PYTHON_PYGAME_MIXER),y) +define PYTHON_PYGAME_UNCONFIGURE_MIXER + $(SED) 's/^mixer/#mixer/g' $(@D)/Setup +endef +endif + +# Both require numpy or numeric python module +define PYTHON_PYGAME_UNCONFIGURE_SNDARRAY + $(SED) 's/^_numericsndarray/#_numericsndarray/' $(@D)/Setup +endef + +define PYTHON_PYGAME_UNCONFIGURE_SURFARRAY + $(SED) 's/^_numericsurfarray/#_numericsurfarray/' $(@D)/Setup +endef + +# Requires smpeg +define PYTHON_PYGAME_UNCONFIGURE_MOVIE + $(SED) 's/^movie/#movie/' $(@D)/Setup +endef + +ifneq ($(BR2_PACKAGE_PYTHON_PYGAME_SCRAP),y) +define PYTHON_PYGAME_UNCONFIGURE_SCRAP + $(SED) 's/^scrap/#scrap/' $(@D)/Setup +endef +endif + +define PYTHON_PYGAME_UNCONFIGURE_FREETYPE + $(SED) 's/^_freetype/#_freetype/' $(@D)/Setup +endef + +PYTHON_PYGAME_SDL_FLAGS = `$(STAGING_DIR)/usr/bin/sdl-config --cflags` +PYTHON_PYGAME_SDL_FLAGS += `$(STAGING_DIR)/usr/bin/sdl-config --libs` + +# Pygame needs a Setup file where options should be commented out if +# dependencies are not available +define PYTHON_PYGAME_CONFIGURE_CMDS + cp -f $(@D)/Setup.in $(@D)/Setup + $(SED) "s~^SDL = ~SDL = $(PYTHON_PYGAME_SDL_FLAGS) \n#~" $(@D)/Setup + $(SED) 's/^pypm/#pypm/' $(@D)/Setup + $(PYTHON_PYGAME_UNCONFIGURE_IMAGE) + $(PYTHON_PYGAME_UNCONFIGURE_FONT) + $(PYTHON_PYGAME_UNCONFIGURE_MIXER) + $(PYTHON_PYGAME_UNCONFIGURE_SNDARRAY) + $(PYTHON_PYGAME_UNCONFIGURE_SURFARRAY) + $(PYTHON_PYGAME_UNCONFIGURE_MOVIE) + $(PYTHON_PYGAME_UNCONFIGURE_SCRAP) + $(PYTHON_PYGAME_UNCONFIGURE_FREETYPE) +endef + +define PYTHON_PYGAME_REMOVE_DOC + rm -rf $(TARGET_DIR)/usr/lib/python*/site-packages/pygame/docs +endef + +PYTHON_PYGAME_POST_INSTALL_TARGET_HOOKS += PYTHON_PYGAME_REMOVE_DOC + +define PYTHON_PYGAME_REMOVE_TESTS + rm -rf $(TARGET_DIR)/usr/lib/python*/site-packages/pygame/tests +endef + +PYTHON_PYGAME_POST_INSTALL_TARGET_HOOKS += PYTHON_PYGAME_REMOVE_TESTS + +ifneq ($(BR2_PACKAGE_PYTHON_PYGAME_EXAMPLES),y) +define PYTHON_PYGAME_REMOVE_EXAMPLES + rm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/pygame/examples +endef +PYTHON_PYGAME_POST_INSTALL_TARGET_HOOKS += PYTHON_PYGAME_REMOVE_EXAMPLES +endif + +$(eval $(python-package)) diff --git a/buildroot/package/python-pygments/Config.in b/buildroot/package/python-pygments/Config.in new file mode 100644 index 0000000..f097c52 --- /dev/null +++ b/buildroot/package/python-pygments/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYGMENTS + bool "python-pygments" + help + Pygments is a syntax highlighting package written in Python. + + https://pypi.python.org/pypi/Pygments diff --git a/buildroot/package/python-pygments/python-pygments.hash b/buildroot/package/python-pygments/python-pygments.hash new file mode 100644 index 0000000..525aa0e --- /dev/null +++ b/buildroot/package/python-pygments/python-pygments.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pygments/json, sha256 locally computed +md5 13037baca42f16917cbd5ad2fab50844 Pygments-2.2.0.tar.gz +sha256 dbae1046def0efb574852fab9e90209b23f556367b5a320c0bcb871c77c3e8cc Pygments-2.2.0.tar.gz diff --git a/buildroot/package/python-pygments/python-pygments.mk b/buildroot/package/python-pygments/python-pygments.mk new file mode 100644 index 0000000..6e7eae6 --- /dev/null +++ b/buildroot/package/python-pygments/python-pygments.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pygments +# +################################################################################ + +PYTHON_PYGMENTS_VERSION = 2.2.0 +PYTHON_PYGMENTS_SOURCE = Pygments-$(PYTHON_PYGMENTS_VERSION).tar.gz +PYTHON_PYGMENTS_SITE = https://pypi.python.org/packages/71/2a/2e4e77803a8bd6408a2903340ac498cb0a2181811af7c9ec92cb70b0308a +PYTHON_PYGMENTS_LICENSE = BSD-2-Clause +PYTHON_PYGMENTS_LICENSE_FILES = LICENSE +PYTHON_PYGMENTS_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyicu/Config.in b/buildroot/package/python-pyicu/Config.in new file mode 100644 index 0000000..2d9624c --- /dev/null +++ b/buildroot/package/python-pyicu/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_PYTHON_PYICU + bool "python-pyicu" + depends on BR2_HOST_GCC_AT_LEAST_4_8 # icu + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_INSTALL_LIBSTDCPP # icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # icu + select BR2_PACKAGE_ICU + help + Python extension wrapping the ICU C++ API. + + https://github.com/ovalhub/pyicu + +comment "python-pyicu needs a toolchain w/ C++, gcc >= 4.8, host gcc >= 4.8" + depends on !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_HOST_GCC_AT_LEAST_4_8 diff --git a/buildroot/package/python-pyicu/python-pyicu.hash b/buildroot/package/python-pyicu/python-pyicu.hash new file mode 100644 index 0000000..b0d75fd --- /dev/null +++ b/buildroot/package/python-pyicu/python-pyicu.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/PyICU/json, sha256 locally computed +md5 7656f5cc53a7c18b40e653d6eefdee14 PyICU-1.9.7.tar.gz +sha256 db27cd1cc150b879c5465872bec7fdaf340eca140aa922be03891d5b9f855b61 PyICU-1.9.7.tar.gz diff --git a/buildroot/package/python-pyicu/python-pyicu.mk b/buildroot/package/python-pyicu/python-pyicu.mk new file mode 100644 index 0000000..c6587c3 --- /dev/null +++ b/buildroot/package/python-pyicu/python-pyicu.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pyicu +# +################################################################################ + +PYTHON_PYICU_VERSION = 1.9.7 +PYTHON_PYICU_SOURCE = PyICU-$(PYTHON_PYICU_VERSION).tar.gz +PYTHON_PYICU_SITE = https://pypi.python.org/packages/6e/88/f42a1297909ca6d9113ba37b37067011ae29432fe592fdd98cf52ad23b77 +PYTHON_PYICU_LICENSE = MIT +PYTHON_PYICU_LICENSE_FILES = LICENSE +PYTHON_PYICU_DEPENDENCIES = icu +PYTHON_PYICU_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyinotify/Config.in b/buildroot/package/python-pyinotify/Config.in new file mode 100644 index 0000000..b3e74e1 --- /dev/null +++ b/buildroot/package/python-pyinotify/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYINOTIFY + bool "python-pyinotify" + help + Monitoring filesystems events with inotify on Linux. + + https://github.com/seb-m/pyinotify diff --git a/buildroot/package/python-pyinotify/python-pyinotify.hash b/buildroot/package/python-pyinotify/python-pyinotify.hash new file mode 100644 index 0000000..2bcf054 --- /dev/null +++ b/buildroot/package/python-pyinotify/python-pyinotify.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7943f198c5cef2bdc121d847937fbe565daaa7d4daaf1b8de8ef5689812f481c python-pyinotify-0.9.6.tar.gz diff --git a/buildroot/package/python-pyinotify/python-pyinotify.mk b/buildroot/package/python-pyinotify/python-pyinotify.mk new file mode 100644 index 0000000..b4ea662 --- /dev/null +++ b/buildroot/package/python-pyinotify/python-pyinotify.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-pyinotify +# +################################################################################ + +PYTHON_PYINOTIFY_VERSION = 0.9.6 +PYTHON_PYINOTIFY_SITE = $(call github,seb-m,pyinotify,$(PYTHON_PYINOTIFY_VERSION)) +PYTHON_PYINOTIFY_SETUP_TYPE = setuptools +PYTHON_PYINOTIFY_LICENSE = MIT +PYTHON_PYINOTIFY_LICENSE_FILES = COPYING + +$(eval $(python-package)) diff --git a/buildroot/package/python-pylibftdi/0001-do-not-use-find-library.patch b/buildroot/package/python-pylibftdi/0001-do-not-use-find-library.patch new file mode 100644 index 0000000..192ed43 --- /dev/null +++ b/buildroot/package/python-pylibftdi/0001-do-not-use-find-library.patch @@ -0,0 +1,31 @@ +Hard code library loading + +Shortcut the search for the libraries in case the built in +find_library is broken. + +As buildroot does not ship any of the external programs that the core +procedure use to find libraries use the canonical name of the shared +object and load it. + +In this case this affects loading libftdi and libusb. + +This should be reliable as we specify said libs as dependencies of +this package. + +Signed-off-by: Christian Kellermann + +--- +diff -purN pylibftdi-0.15.0.orig/pylibftdi/driver.py pylibftdi-0.15.0/pylibftdi/driver.py +--- pylibftdi-0.15.0.orig/pylibftdi/driver.py 2015-04-26 22:41:39.000000000 +0200 ++++ pylibftdi-0.15.0/pylibftdi/driver.py 2017-02-27 13:08:56.502958000 +0100 +@@ -121,8 +121,8 @@ class Driver(object): + lib = getattr(cdll, lib_path) + break + if lib is None: +- raise LibraryMissingError('{} library not found (search: {})'.format( +- name, search_list)) ++ return cdll.LoadLibrary(name + '.so') ++ + return lib + + @property diff --git a/buildroot/package/python-pylibftdi/Config.in b/buildroot/package/python-pylibftdi/Config.in new file mode 100644 index 0000000..d340974 --- /dev/null +++ b/buildroot/package/python-pylibftdi/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_PYLIBFTDI + bool "python-pylibftdi" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBFTDI + help + This package contains the python language binding libftdi. + + https://pypi.python.org/pypi/pylibftdi + +comment "python-pylibftdi needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/python-pylibftdi/python-pylibftdi.hash b/buildroot/package/python-pylibftdi/python-pylibftdi.hash new file mode 100644 index 0000000..54b33a1 --- /dev/null +++ b/buildroot/package/python-pylibftdi/python-pylibftdi.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pylibftdi/json, sha256 locally computed +md5 eaee7fb3a67f33a35a164a9628daaafe pylibftdi-0.15.0.tar.gz +sha256 51ef08ebcc4ec3eaec2366e9648d3f8fa1b737ea507a7f3a374ac58abf148e77 pylibftdi-0.15.0.tar.gz diff --git a/buildroot/package/python-pylibftdi/python-pylibftdi.mk b/buildroot/package/python-pylibftdi/python-pylibftdi.mk new file mode 100644 index 0000000..0a5887b --- /dev/null +++ b/buildroot/package/python-pylibftdi/python-pylibftdi.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pylibftdi +# +################################################################################ + +PYTHON_PYLIBFTDI_VERSION = 0.15.0 +PYTHON_PYLIBFTDI_SOURCE = pylibftdi-$(PYTHON_PYLIBFTDI_VERSION).tar.gz +PYTHON_PYLIBFTDI_SITE = https://pypi.python.org/packages/e5/bb/d7a86dbd7685e3866ea75d21c6c726d01706fdc0aa5dc9051ce18ae65693 +PYTHON_PYLIBFTDI_LICENSE = MIT +PYTHON_PYLIBFTDI_LICENSE_FILES = LICENSE.txt +PYTHON_PYLIBFTDI_DEPENDENCIES = libftdi +PYTHON_PYLIBFTDI_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pylru/Config.in b/buildroot/package/python-pylru/Config.in new file mode 100644 index 0000000..c174576 --- /dev/null +++ b/buildroot/package/python-pylru/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYLRU + bool "python-pylru" + help + A least recently used (LRU) cache implementation. + + https://github.com/jlhutch/pylru diff --git a/buildroot/package/python-pylru/python-pylru.hash b/buildroot/package/python-pylru/python-pylru.hash new file mode 100644 index 0000000..806ea36 --- /dev/null +++ b/buildroot/package/python-pylru/python-pylru.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pylru/json, sha256 locally computed +md5 41369d58a1c4391c5cc36f84262abcdc pylru-1.0.9.tar.gz +sha256 71376192671f0ad1690b2a7427d39a29b1df994c8469a9b46b03ed7e28c0172c pylru-1.0.9.tar.gz diff --git a/buildroot/package/python-pylru/python-pylru.mk b/buildroot/package/python-pylru/python-pylru.mk new file mode 100644 index 0000000..75b6de7 --- /dev/null +++ b/buildroot/package/python-pylru/python-pylru.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pylru +# +################################################################################ + +PYTHON_PYLRU_VERSION = 1.0.9 +PYTHON_PYLRU_SOURCE = pylru-$(PYTHON_PYLRU_VERSION).tar.gz +PYTHON_PYLRU_SITE = https://pypi.python.org/packages/c0/7d/0de1055632f3871dfeaabe5a3f0510317cd98b93e7b792b44e4c7de2b17b +PYTHON_PYLRU_SETUP_TYPE = distutils +PYTHON_PYLRU_LICENSE = GPL-2.0 +PYTHON_PYLRU_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-pymysql/Config.in b/buildroot/package/python-pymysql/Config.in new file mode 100644 index 0000000..75b447c --- /dev/null +++ b/buildroot/package/python-pymysql/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYMYSQL + bool "python-pymysql" + help + PyMySQL is a pure-Python MySQL client library. It follows + the DB-API 2.0. + + https://pypi.python.org/pypi/PyMySQL/ diff --git a/buildroot/package/python-pymysql/python-pymysql.hash b/buildroot/package/python-pymysql/python-pymysql.hash new file mode 100644 index 0000000..429ed5a --- /dev/null +++ b/buildroot/package/python-pymysql/python-pymysql.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pymysql/json, sha256 locally computed +md5 fc96ba7c76c01ff0613b0cca9c40df75 PyMySQL-0.7.10.tar.gz +sha256 9468bd7d54df68e49c39e91d7c223d13dedf9e4284173cb5d761673e6275024e PyMySQL-0.7.10.tar.gz diff --git a/buildroot/package/python-pymysql/python-pymysql.mk b/buildroot/package/python-pymysql/python-pymysql.mk new file mode 100644 index 0000000..863eb8b --- /dev/null +++ b/buildroot/package/python-pymysql/python-pymysql.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pymysql +# +################################################################################ + +PYTHON_PYMYSQL_VERSION = 0.7.10 +PYTHON_PYMYSQL_SOURCE = PyMySQL-$(PYTHON_PYMYSQL_VERSION).tar.gz +PYTHON_PYMYSQL_SITE = https://pypi.python.org/packages/90/c2/d81638491baa572d6e79b78bde42c7449d2e45b578c919c0df1a76cb859b +PYTHON_PYMYSQL_LICENSE = MIT +PYTHON_PYMYSQL_LICENSE_FILES = LICENSE +PYTHON_PYMYSQL_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pynacl/Config.in b/buildroot/package/python-pynacl/Config.in new file mode 100644 index 0000000..256f9d5 --- /dev/null +++ b/buildroot/package/python-pynacl/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_PYNACL + bool "python-pynacl" + select BR2_PACKAGE_LIBSODIUM + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_CFFI # runtime + help + Python binding to the Networking and Cryptography (NaCl) + library. + + https://pypi.python.org/pypi/PyNaCl diff --git a/buildroot/package/python-pynacl/python-pynacl.hash b/buildroot/package/python-pynacl/python-pynacl.hash new file mode 100644 index 0000000..7035ac7 --- /dev/null +++ b/buildroot/package/python-pynacl/python-pynacl.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=12fd03d8ce64e0318cb1c69272f17704, sha256 locally computed. +md5 12fd03d8ce64e0318cb1c69272f17704 PyNaCl-1.0.1.tar.gz +sha256 d21d7a7358a85fb9b9ddadfbd1176c40fe199334fe2202881255e77f6d3773f4 PyNaCl-1.0.1.tar.gz diff --git a/buildroot/package/python-pynacl/python-pynacl.mk b/buildroot/package/python-pynacl/python-pynacl.mk new file mode 100644 index 0000000..469ddda --- /dev/null +++ b/buildroot/package/python-pynacl/python-pynacl.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pynacl +# +################################################################################ + +PYTHON_PYNACL_VERSION = 1.0.1 +PYTHON_PYNACL_SOURCE = PyNaCl-$(PYTHON_PYNACL_VERSION).tar.gz +PYTHON_PYNACL_SITE = https://pypi.python.org/packages/source/P/PyNaCl +PYTHON_PYNACL_LICENSE = Apache-2.0 +PYTHON_PYNACL_LICENSE_FILES = LICENSE +PYTHON_PYNACL_SETUP_TYPE = setuptools +PYTHON_PYNACL_DEPENDENCIES = libsodium host-python-cffi +PYTHON_PYNACL_ENV = SODIUM_INSTALL=system + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyopenssl/Config.in b/buildroot/package/python-pyopenssl/Config.in new file mode 100644 index 0000000..c32e211 --- /dev/null +++ b/buildroot/package/python-pyopenssl/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PYOPENSSL + bool "python-pyopenssl" + depends on BR2_INSTALL_LIBSTDCPP # python-cryptography + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Python wrapper module around the OpenSSL library. + + https://github.com/pyca/pyopenssl + +comment "python-pyopenssl needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-pyopenssl/python-pyopenssl.hash b/buildroot/package/python-pyopenssl/python-pyopenssl.hash new file mode 100644 index 0000000..74fa4e5 --- /dev/null +++ b/buildroot/package/python-pyopenssl/python-pyopenssl.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pyopenssl/json, sha256 locally computed +md5 0704ca95106960375cfe78259453094a pyOpenSSL-17.0.0.tar.gz +sha256 48abfe9d2bb8eb8d8947c8452b0223b7b1be2383b332f3b4f248fe59ef0bafdd pyOpenSSL-17.0.0.tar.gz diff --git a/buildroot/package/python-pyopenssl/python-pyopenssl.mk b/buildroot/package/python-pyopenssl/python-pyopenssl.mk new file mode 100644 index 0000000..3fbaf8d --- /dev/null +++ b/buildroot/package/python-pyopenssl/python-pyopenssl.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyopenssl +# +################################################################################ + +PYTHON_PYOPENSSL_VERSION = 17.0.0 +PYTHON_PYOPENSSL_SOURCE = pyOpenSSL-$(PYTHON_PYOPENSSL_VERSION).tar.gz +PYTHON_PYOPENSSL_SITE = https://pypi.python.org/packages/9f/32/80fe4fddeb731b7766cd09fe0b2032a91b43dae655e216792af2a6ae3190 +PYTHON_PYOPENSSL_LICENSE = Apache-2.0 +PYTHON_PYOPENSSL_LICENSE_FILES = LICENSE +PYTHON_PYOPENSSL_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyparsing/Config.in b/buildroot/package/python-pyparsing/Config.in new file mode 100644 index 0000000..425ffe3 --- /dev/null +++ b/buildroot/package/python-pyparsing/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_PYPARSING + bool "python-pyparsing" + help + The pyparsing module is an alternative approach to creating + and executing simple grammars, vs. the traditional lex/yacc + approach, or the use of regular expressions. The pyparsing + module provides a library of classes that client code uses + to construct the grammar directly in Python code. + + http://pyparsing.wikispaces.com/ diff --git a/buildroot/package/python-pyparsing/python-pyparsing.hash b/buildroot/package/python-pyparsing/python-pyparsing.hash new file mode 100644 index 0000000..6138580 --- /dev/null +++ b/buildroot/package/python-pyparsing/python-pyparsing.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pyparsing/json, sha256 locally computed +md5 065908b92904e0d3634eb156f44cc80e pyparsing-2.1.10.tar.gz +sha256 811c3e7b0031021137fc83e051795025fcb98674d07eb8fe922ba4de53d39188 pyparsing-2.1.10.tar.gz diff --git a/buildroot/package/python-pyparsing/python-pyparsing.mk b/buildroot/package/python-pyparsing/python-pyparsing.mk new file mode 100644 index 0000000..4a4b1bb --- /dev/null +++ b/buildroot/package/python-pyparsing/python-pyparsing.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyparsing +# +################################################################################ + +PYTHON_PYPARSING_VERSION = 2.1.10 +PYTHON_PYPARSING_SOURCE = pyparsing-$(PYTHON_PYPARSING_VERSION).tar.gz +PYTHON_PYPARSING_SITE = https://pypi.python.org/packages/38/bb/bf325351dd8ab6eb3c3b7c07c3978f38b2103e2ab48d59726916907cd6fb +PYTHON_PYPARSING_LICENSE = MIT +PYTHON_PYPARSING_LICENSE_FILES = LICENSE +PYTHON_PYPARSING_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyparted/Config.in b/buildroot/package/python-pyparted/Config.in new file mode 100644 index 0000000..944796f --- /dev/null +++ b/buildroot/package/python-pyparted/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_PYPARTED + bool "python-pyparted" + depends on BR2_USE_WCHAR + select BR2_PACKAGE_PARTED + help + Python bindings for GNU parted (libparted). + + https://github.com/rhinstaller/pyparted + +comment "pyparted needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/python-pyparted/python-pyparted.hash b/buildroot/package/python-pyparted/python-pyparted.hash new file mode 100644 index 0000000..11995fb --- /dev/null +++ b/buildroot/package/python-pyparted/python-pyparted.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 a9ec181bf3c7c0635862413fc86cb0950b5af957541535f530ea86a0f9d14e73 python-pyparted-v3.11.0.tar.gz diff --git a/buildroot/package/python-pyparted/python-pyparted.mk b/buildroot/package/python-pyparted/python-pyparted.mk new file mode 100644 index 0000000..0378830 --- /dev/null +++ b/buildroot/package/python-pyparted/python-pyparted.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyparted +# +################################################################################ + +PYTHON_PYPARTED_VERSION = v3.11.0 +PYTHON_PYPARTED_SITE = $(call github,rhinstaller,pyparted,$(PYTHON_PYPARTED_VERSION)) +PYTHON_PYPARTED_SETUP_TYPE = distutils +PYTHON_PYPARTED_LICENSE = GPL-2.0+ +PYTHON_PYPARTED_LICENSE_FILES = COPYING +PYTHON_PYPARTED_DEPENDENCIES = parted + +$(eval $(python-package)) diff --git a/buildroot/package/python-pypcap/Config.in b/buildroot/package/python-pypcap/Config.in new file mode 100644 index 0000000..9b71575 --- /dev/null +++ b/buildroot/package/python-pypcap/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_PYPCAP + bool "python-pypcap" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_LIBPCAP + help + The pypcap module is an object-oriented wrapper of the C + libpcap library. + + https://code.google.com/p/pypcap/ diff --git a/buildroot/package/python-pypcap/python-pypcap.hash b/buildroot/package/python-pypcap/python-pypcap.hash new file mode 100644 index 0000000..30ddfab --- /dev/null +++ b/buildroot/package/python-pypcap/python-pypcap.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 5716d97b39d40b79daf7b0c6a8c8c514f5f1de8f20561c8621ee62a90b93fb03 python-pypcap-6f46e7bf29a648256ddc732a7d0ec83d3ffca390.tar.gz diff --git a/buildroot/package/python-pypcap/python-pypcap.mk b/buildroot/package/python-pypcap/python-pypcap.mk new file mode 100644 index 0000000..fc6fc6e --- /dev/null +++ b/buildroot/package/python-pypcap/python-pypcap.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# python-pypcap +# +################################################################################ + +PYTHON_PYPCAP_VERSION = 6f46e7bf29a648256ddc732a7d0ec83d3ffca390 +PYTHON_PYPCAP_SITE = $(call github,dugsong,pypcap,$(PYTHON_PYPCAP_VERSION)) +PYTHON_PYPCAP_LICENSE = BSD-3-Clause +PYTHON_PYPCAP_LICENSE_FILES = LICENSE +PYTHON_PYPCAP_SETUP_TYPE = distutils +PYTHON_PYPCAP_DEPENDENCIES = host-python-pyrex libpcap + +define PYTHON_PYPCAP_CONFIGURE_CMDS + $(HOST_DIR)/bin/python2 $(HOST_DIR)/bin/pyrexc $(@D)/pcap.pyx + (cd $(@D); \ + $(HOST_DIR)/bin/python setup.py \ + config --with-pcap=$(STAGING_DIR)/usr) +endef + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyqrcode/Config.in b/buildroot/package/python-pyqrcode/Config.in new file mode 100644 index 0000000..01b7ae8 --- /dev/null +++ b/buildroot/package/python-pyqrcode/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_PYQRCODE + bool "python-pyqrcode" + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_CODECSCJK if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_CODECSCJK if BR2_PACKAGE_PYTHON3 # runtime + help + A QR code generator written purely in Python with SVG, EPS, + PNG and terminal output. + + https://github.com/mnooner256/pyqrcode diff --git a/buildroot/package/python-pyqrcode/python-pyqrcode.hash b/buildroot/package/python-pyqrcode/python-pyqrcode.hash new file mode 100644 index 0000000..619ddb0 --- /dev/null +++ b/buildroot/package/python-pyqrcode/python-pyqrcode.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pyqrcode/json, sha256 locally computed +md5 371f29f4b03bd2830c6e0319258b1259 PyQRCode-1.2.1.tar.gz +sha256 fdbf7634733e56b72e27f9bce46e4550b75a3a2c420414035cae9d9d26b234d5 PyQRCode-1.2.1.tar.gz diff --git a/buildroot/package/python-pyqrcode/python-pyqrcode.mk b/buildroot/package/python-pyqrcode/python-pyqrcode.mk new file mode 100644 index 0000000..f3eac5a --- /dev/null +++ b/buildroot/package/python-pyqrcode/python-pyqrcode.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyqrcode +# +################################################################################ + +PYTHON_PYQRCODE_VERSION = 1.2.1 +PYTHON_PYQRCODE_SOURCE = PyQRCode-$(PYTHON_PYQRCODE_VERSION).tar.gz +PYTHON_PYQRCODE_SITE = https://pypi.python.org/packages/37/61/f07226075c347897937d4086ef8e55f0a62ae535e28069884ac68d979316 +PYTHON_PYQRCODE_SETUP_TYPE = setuptools +PYTHON_PYQRCODE_LICENSE = BSD-3-Clause +PYTHON_PYQRCODE_LICENSE_FILES = setup.py + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyqt/0001-configure-skip-qtdetail.patch b/buildroot/package/python-pyqt/0001-configure-skip-qtdetail.patch new file mode 100644 index 0000000..08e99d0 --- /dev/null +++ b/buildroot/package/python-pyqt/0001-configure-skip-qtdetail.patch @@ -0,0 +1,29 @@ +Do not run qtdetail + +qtdetail is a tool that generates qtdetail.out. Since this program is +cross-compiled, it's not possible to run it on the host. + +Consequently, python-pyqt.mk generates the qtdetail.out file before +calling configure-ng.py. + +Therefore, this patch makes sure that the pre-generated qtdetail.out +file is kept, and that qtdetail is not executed. + +Signed-off-by: Gwenhael Goavec-Merou +Signed-off-by: Sergey Kostanbaev +--- +Index: PyQt-x11-gpl-4.11.3/configure-ng.py +=================================================================== +--- PyQt-x11-gpl-4.11.3.orig/configure-ng.py ++++ PyQt-x11-gpl-4.11.3/configure-ng.py +@@ -672,10 +672,6 @@ int main(int argc, char **argv) + if cmd is None: + error("Failed to determine the detail of your Qt installation. Try again using the --verbose flag to see more detail about the problem.") + +- # Create the output file, first making sure it doesn't exist. +- remove_file(out_file) +- run_command(cmd, verbose) +- + if not os.access(out_file, os.F_OK): + error("%s failed to create %s. Make sure your Qt installation is correct." % (cmd, out_file)) + diff --git a/buildroot/package/python-pyqt/0002-configure-set-qws.patch b/buildroot/package/python-pyqt/0002-configure-set-qws.patch new file mode 100644 index 0000000..33a5648 --- /dev/null +++ b/buildroot/package/python-pyqt/0002-configure-set-qws.patch @@ -0,0 +1,43 @@ +Add support for several Qt flavors + +Qt has two flavors: X11 and embedded (QWS). QWS has some limitations +compared to X11. This patch adds an option to select which version to +use. + +Signed-off-by: Gwenhael Goavec-Merou +--- +Index: PyQt-x11-gpl-4.11.3/configure-ng.py +=================================================================== +--- PyQt-x11-gpl-4.11.3.orig/configure-ng.py ++++ PyQt-x11-gpl-4.11.3/configure-ng.py +@@ -960,6 +960,9 @@ int main(int argc, char **argv) + if opts.vendlibdir is not None: + self.vend_lib_dir = opts.vendlibdir + ++ if opts.qtflavor is not None: ++ self.qt_flavor = opts.qtflavor ++ + # Handle any conflicts. + if self.qt_shared: + if len(self.static_plugins) != 0: +@@ -1177,6 +1180,11 @@ def create_optparser(target_config): + dest="notools", + help="disable the building of pyuic5, pyrcc5 and pylupdate5 " + "[default: enabled]") ++ g.add_option("--qt-flavor", dest='qtflavor', type='string', ++ default="WS_X11", metavar='QTFLAVOR', action='store', ++ help="select Qt flavor beetween WS_X11 and WS_QWS " ++ "only available on Linux)" ++ "[default: WS_X11]") + p.add_option_group(g) + + # Vendor ID. +@@ -2088,7 +2096,7 @@ def get_sip_flags(target_config): + elif target_config.py_platform == 'darwin': + plattag = 'WS_MACX' + else: +- plattag = 'WS_X11' ++ plattag = target_config.qt_flavor + + sip_flags.append('-t') + sip_flags.append(plattag) diff --git a/buildroot/package/python-pyqt/0003-sip-add_qws.patch b/buildroot/package/python-pyqt/0003-sip-add_qws.patch new file mode 100644 index 0000000..1ff706f --- /dev/null +++ b/buildroot/package/python-pyqt/0003-sip-add_qws.patch @@ -0,0 +1,44 @@ +Add WS_QWS in the Platforms variable and to define some types + +Signed-off-by: Gwenhael Goavec-Merou +Signed-off-by: Sergey Kostanbaev +--- +Index: PyQt-x11-gpl-4.11.3/sip/QtCore/QtCoremod.sip +=================================================================== +--- PyQt-x11-gpl-4.11.3.orig/sip/QtCore/QtCoremod.sip ++++ PyQt-x11-gpl-4.11.3/sip/QtCore/QtCoremod.sip +@@ -29,7 +29,7 @@ + + %Timeline {Qt_4_1_0 Qt_4_1_1 Qt_4_1_2 Qt_4_1_3 Qt_4_2_0 Qt_4_2_1 Qt_4_2_2 Qt_4_2_3 Qt_4_3_0 Qt_4_3_1 Qt_4_3_2 Qt_4_3_3 Qt_4_3_4 Qt_4_4_0 Qt_4_4_1 Qt_4_4_2 Qt_4_5_0 Qt_4_5_1 Qt_4_5_2 Qt_4_5_3 Qt_4_6_0 Qt_4_6_1 Qt_4_6_2 Qt_4_6_3 Qt_4_7_0 Qt_4_7_1 Qt_4_7_2 Qt_4_7_3 Qt_4_7_4 Qt_4_8_0 Qt_4_8_1 Qt_4_8_2 Qt_4_8_3 Qt_4_8_4 Qt_4_8_5 Qt_4_8_6 Qt_5_0_0} + +-%Platforms {WS_X11 WS_WIN WS_MACX} ++%Platforms {WS_X11 WS_QWS WS_WIN WS_MACX} + + %Feature PyQt_Accessibility + %Feature PyQt_SessionManager +Index: PyQt-x11-gpl-4.11.3/sip/QtCore/qprocess.sip +=================================================================== +--- PyQt-x11-gpl-4.11.3.orig/sip/QtCore/qprocess.sip ++++ PyQt-x11-gpl-4.11.3/sip/QtCore/qprocess.sip +@@ -28,7 +28,7 @@ + %If (WS_WIN) + typedef void *Q_PID; + %End +-%If (WS_X11 || WS_MACX) ++%If (WS_X11 || WS_QWS || WS_MACX) + typedef qint64 Q_PID; + %End + +Index: PyQt-x11-gpl-4.11.3/sip/QtGui/qwindowdefs.sip +=================================================================== +--- PyQt-x11-gpl-4.11.3.orig/sip/QtGui/qwindowdefs.sip ++++ PyQt-x11-gpl-4.11.3/sip/QtGui/qwindowdefs.sip +@@ -27,7 +27,7 @@ + + typedef QList QWidgetList; + %If (- Qt_5_0_0) +-%If (WS_X11) ++%If (WS_X11 || WS_QWS) + // X11 specific definitions. + typedef unsigned long WId; + %End diff --git a/buildroot/package/python-pyqt/0004-sip-QtGuit-hide-qfont-cachestatistics.patch b/buildroot/package/python-pyqt/0004-sip-QtGuit-hide-qfont-cachestatistics.patch new file mode 100644 index 0000000..c07bea7 --- /dev/null +++ b/buildroot/package/python-pyqt/0004-sip-QtGuit-hide-qfont-cachestatistics.patch @@ -0,0 +1,18 @@ +Hide QFont::cacheStatistics which isn't available in QWS + +Signed-off-by: Sergey Kostanbaev +--- + +diff -ur PyQt-x11-gpl-4.9.6/sip/QtGui/qfont.sip pyqt-4.9.6/sip/QtGui/qfont.sip +--- PyQt-x11-gpl-4.9.6/sip/QtGui/qfont.sip 2012-12-08 13:51:38.000000000 +0400 ++++ pyqt-4.9.6/sip/QtGui/qfont.sip 2013-05-22 14:06:38.335000022 +0400 +@@ -185,7 +185,9 @@ + %End + static void initialize(); + static void cleanup(); ++%If (!WS_QWS) + static void cacheStatistics(); ++%End + QString defaultFamily() const; + QString lastResortFamily() const; + QString lastResortFont() const; diff --git a/buildroot/package/python-pyqt/0005-sip-fix_qws_handle.patch b/buildroot/package/python-pyqt/0005-sip-fix_qws_handle.patch new file mode 100644 index 0000000..80623d1 --- /dev/null +++ b/buildroot/package/python-pyqt/0005-sip-fix_qws_handle.patch @@ -0,0 +1,24 @@ +Fix build issue in QWS flavor + +Change HANDLE to void* to get rid of : +buildroot/output/build/python-pyqt-4.11.3/QtCore/sipQtCoreQThread.cpp:318:50: +error: invalid conversion from 'Qt::HANDLE {aka void*}' to 'long +unsigned int' [-fpermissive] error during compilation. + +Signed-off-by: Gwenhael Goavec-Merou +Signed-off-by: Sergey Kostanbaev +--- +Index: PyQt-x11-gpl-4.11.3/sip/QtCore/qnamespace.sip +=================================================================== +--- PyQt-x11-gpl-4.11.3.orig/sip/QtCore/qnamespace.sip ++++ PyQt-x11-gpl-4.11.3/sip/QtCore/qnamespace.sip +@@ -1673,6 +1673,9 @@ namespace Qt + %If (WS_X11) + typedef unsigned long HANDLE; + %End ++%If (WS_QWS) ++ typedef void* HANDLE; ++%End + %End + %If (PyQt_Deprecated_5_0) + typedef Qt::WindowFlags WFlags; diff --git a/buildroot/package/python-pyqt/Config.in b/buildroot/package/python-pyqt/Config.in new file mode 100644 index 0000000..6934a4c --- /dev/null +++ b/buildroot/package/python-pyqt/Config.in @@ -0,0 +1,21 @@ +comment "python-pyqt needs Qt4" + depends on !BR2_PACKAGE_QT + +config BR2_PACKAGE_PYTHON_PYQT + bool "python-pyqt" + depends on BR2_PACKAGE_QT + select BR2_PACKAGE_PYTHON_SIP + help + PyQt4 for Qt Embedded 4 bindings. + + http://www.riverbankcomputing.com/software/pyqt/ + +if BR2_PACKAGE_PYTHON_PYQT + +config BR2_PACKAGE_PYTHON_PYQT_ARCH_USES_QREAL_FLOAT + bool + default y if BR2_arm || BR2_armeb + default y if BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb + default y if (BR2_mipsel || BR2_mips) && BR2_PACKAGE_QT_EMBEDDED + +endif diff --git a/buildroot/package/python-pyqt/python-pyqt.hash b/buildroot/package/python-pyqt/python-pyqt.hash new file mode 100644 index 0000000..1709b66 --- /dev/null +++ b/buildroot/package/python-pyqt/python-pyqt.hash @@ -0,0 +1,5 @@ +# From http://http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11.3/ +md5 997c3e443165a89a559e0d96b061bf70 PyQt-x11-gpl-4.11.3.tar.gz + +# Locally calculated: +sha256 853780dcdbe2e6ba785d703d059b096e1fc49369d3e8d41a060be874b8745686 PyQt-x11-gpl-4.11.3.tar.gz diff --git a/buildroot/package/python-pyqt/python-pyqt.mk b/buildroot/package/python-pyqt/python-pyqt.mk new file mode 100644 index 0000000..e8ae641 --- /dev/null +++ b/buildroot/package/python-pyqt/python-pyqt.mk @@ -0,0 +1,113 @@ +################################################################################ +# +# python-pyqt +# +################################################################################ + +PYTHON_PYQT_VERSION = 4.11.3 +PYTHON_PYQT_SOURCE = PyQt-x11-gpl-$(PYTHON_PYQT_VERSION).tar.gz +PYTHON_PYQT_SITE = http://downloads.sourceforge.net/project/pyqt/PyQt4/PyQt-$(PYTHON_PYQT_VERSION) +PYTHON_PYQT_LICENSE = GPL-2.0 or GPL-3.0 +PYTHON_PYQT_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 + +PYTHON_PYQT_DEPENDENCIES = python-sip host-python-sip qt + +ifeq ($(BR2_PACKAGE_PYTHON),y) +PYTHON_PYQT_PYTHON_DIR = python$(PYTHON_VERSION_MAJOR) +PYTHON_PYQT_RM_PORT_BASE = port_v3 +else ifeq ($(BR2_PACKAGE_PYTHON3),y) +PYTHON_PYQT_PYTHON_DIR = python$(PYTHON3_VERSION_MAJOR) +PYTHON_PYQT_RM_PORT_BASE = port_v2 +endif + +ifeq ($(BR2_PACKAGE_QT_EMBEDDED),y) +PYTHON_PYQT_QTFLAVOR = WS_QWS +else +PYTHON_PYQT_QTFLAVOR = WS_X11 +endif + +PYTHON_PYQT_QTDETAIL_LICENSE = Open Source + +ifeq ($(BR2_PACKAGE_QT_SHARED),y) +PYTHON_PYQT_QTDETAIL_TYPE = shared +endif + +# Turn off features that aren't available in QWS and current qt +# configuration. +PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES = \ + PyQt_Accessibility PyQt_SessionManager \ + PyQt_Shortcut PyQt_RawFont + +ifeq ($(BR2_PACKAGE_QT_OPENSSL),) +PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES += PyQt_OpenSSL +endif + +# Yes, this looks a bit weird: when OpenGL ES is available, we have to +# disable the feature that consists in not having OpenGL ES support. +ifeq ($(BR2_PACKAGE_QT_OPENGL_ES),y) +PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES += PyQt_NoOpenGLES +endif + +# PyQt_qreal_double must be disabled on a number of architectures that +# use float for qreal. +ifeq ($(BR2_PACKAGE_PYTHON_PYQT_ARCH_USES_QREAL_FLOAT),y) +PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES += PyQt_qreal_double +endif + +define PYTHON_PYQT_QTDETAIL + echo $(1) >> $(2)/qtdetail.out +endef + +# Since we can't run generate qtdetail.out by running qtdetail on target device +# we must generate the configuration. +define PYTHON_PYQT_GENERATE_QTDETAIL + $(RM) -f $(1)/qtdetail.out + $(call PYTHON_PYQT_QTDETAIL,$(PYTHON_PYQT_QTDETAIL_LICENSE),$(1)) + $(call PYTHON_PYQT_QTDETAIL,$(PYTHON_PYQT_QTDETAIL_TYPE),$(1)) + $(foreach f,$(PYTHON_PYQT_QTDETAIL_DISABLE_FEATURES), + $(call PYTHON_PYQT_QTDETAIL,$(f),$(1)) \ + ) +endef + +PYTHON_PYQT_CONF_OPTS = \ + --bindir $(TARGET_DIR)/usr/bin \ + --destdir $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages \ + --qmake $(HOST_DIR)/bin/qmake \ + --sysroot $(STAGING_DIR)/usr \ + -w --confirm-license \ + --no-designer-plugin \ + --no-docstrings \ + --no-sip-files \ + --qt-flavor=$(PYTHON_PYQT_QTFLAVOR) + +# The VendorID related information is only needed for Python 2.x, not +# Python 3.x. +ifeq ($(BR2_PACKAGE_PYTHON),y) +PYTHON_PYQT_CONF_OPTS += \ + --vendorid-incdir $(STAGING_DIR)/usr/include/$(PYTHON_PYQT_PYTHON_DIR) \ + --vendorid-libdir $(STAGING_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/config +endif + +define PYTHON_PYQT_CONFIGURE_CMDS + $(call PYTHON_PYQT_GENERATE_QTDETAIL,$(@D)) + (cd $(@D); \ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + $(HOST_DIR)/bin/python configure-ng.py \ + $(PYTHON_PYQT_CONF_OPTS) \ + ) +endef + +define PYTHON_PYQT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# __init__.py is needed to import PyQt4 +# __init__.pyc is needed if BR2_PACKAGE_PYTHON_PYC_ONLY is set +define PYTHON_PYQT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install + touch $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4/__init__.py + $(RM) -rf $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT_PYTHON_DIR)/site-packages/PyQt4/uic/$(PYTHON_PYQT_RM_PORT_BASE) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/python-pyqt5/0001-configure-skip-qtdetail.patch b/buildroot/package/python-pyqt5/0001-configure-skip-qtdetail.patch new file mode 100644 index 0000000..2e7b331 --- /dev/null +++ b/buildroot/package/python-pyqt5/0001-configure-skip-qtdetail.patch @@ -0,0 +1,29 @@ +Do not run qtdetail + +qtdetail is a tool that generates qtdetail.out. Since this program is +cross-compiled, it's not possible to run it on the host. + +Consequently, python-pyqt5.mk generates the qtdetail.out file before +calling configure.py. + +Therefore, this patch makes sure that the pre-generated qtdetail.out +file is kept, and that qtdetail is not executed. + +Signed-off-by: Gwenhael Goavec-Merou +Signed-off-by: Sergey Kostanbaev +--- +Index: PyQt5_gpl-5.7/configure.py +=================================================================== +--- PyQt5_gpl-5.7.orig/configure.py ++++ PyQt5_gpl-5.7/configure.py +@@ -672,10 +672,6 @@ int main(int argc, char **argv) + if cmd is None: + error("Failed to determine the detail of your Qt installation. Try again using the --verbose flag to see more detail about the problem.") + +- # Create the output file, first making sure it doesn't exist. +- remove_file(out_file) +- run_command(cmd, verbose) +- + if not os.access(out_file, os.F_OK): + error("%s failed to create %s. Make sure your Qt installation is correct." % (cmd, out_file)) + diff --git a/buildroot/package/python-pyqt5/0002-fix-qt-5.6.2.patch b/buildroot/package/python-pyqt5/0002-fix-qt-5.6.2.patch new file mode 100644 index 0000000..fd2f9d9 --- /dev/null +++ b/buildroot/package/python-pyqt5/0002-fix-qt-5.6.2.patch @@ -0,0 +1,28 @@ +Fix the build with Qt 5.6.{2,3} + +Building PyQt 5.7 with versions of Qt older than Qt 5.7 is supposed to +work, but currently fails in practice. In fact, this is due to the +fact that the %Timeline variable in QtCoremod.sip didn't contain the +5.6.{2,3} Qt versions, so if this version was used, PyQt was assuming it +was the later version 5.7, and therefore started enabling APIs only +available in Qt 5.7, causing build failures when building against Qt +5.6.{2,3}. + +Adding Qt_5_6_2 and Qt_5_6_3 to the timeline fixes this problem. This +fix was suggested by Phil Thompson . + +Signed-off-by: Thomas Petazzoni + +Index: PyQt5_gpl-5.7/sip/QtCore/QtCoremod.sip +=================================================================== +--- PyQt5_gpl-5.7.orig/sip/QtCore/QtCoremod.sip 2016-07-25 15:55:37.000000000 +0200 ++++ PyQt5_gpl-5.7/sip/QtCore/QtCoremod.sip 2016-10-26 15:45:43.577153825 +0200 +@@ -22,7 +22,7 @@ + + %Module(name=PyQt5.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt5, keyword_arguments="Optional", version=1) + +-%Timeline {Qt_5_0_0 Qt_5_0_1 Qt_5_0_2 Qt_5_1_0 Qt_5_1_1 Qt_5_2_0 Qt_5_2_1 Qt_5_3_0 Qt_5_3_1 Qt_5_3_2 Qt_5_4_0 Qt_5_4_1 Qt_5_4_2 Qt_5_5_0 Qt_5_5_1 Qt_5_6_0 Qt_5_6_1 Qt_5_7_0} ++%Timeline {Qt_5_0_0 Qt_5_0_1 Qt_5_0_2 Qt_5_1_0 Qt_5_1_1 Qt_5_2_0 Qt_5_2_1 Qt_5_3_0 Qt_5_3_1 Qt_5_3_2 Qt_5_4_0 Qt_5_4_1 Qt_5_4_2 Qt_5_5_0 Qt_5_5_1 Qt_5_6_0 Qt_5_6_1 Qt_5_6_2 Qt_5_6_3 Qt_5_7_0} + + %Platforms {WS_X11 WS_WIN WS_MACX} + diff --git a/buildroot/package/python-pyqt5/0003-remove-WindowOkButtonHint-and-WindowCancelButtonHint.patch b/buildroot/package/python-pyqt5/0003-remove-WindowOkButtonHint-and-WindowCancelButtonHint.patch new file mode 100644 index 0000000..146cce0 --- /dev/null +++ b/buildroot/package/python-pyqt5/0003-remove-WindowOkButtonHint-and-WindowCancelButtonHint.patch @@ -0,0 +1,27 @@ +From bb7cbdede46f72468bbb1b9bbefd43a1dbad21c0 Mon Sep 17 00:00:00 2001 +From: Zoltan Gyarmati +Date: Mon, 30 Jan 2017 18:28:15 +0100 +Subject: [PATCH] remove WindowOkButtonHint and WindowCancelButtonHint from + qnamespace.sip as they are removed from qt5.8 + +Signed-off-by: Zoltan Gyarmati +--- + sip/QtCore/qnamespace.sip | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/sip/QtCore/qnamespace.sip b/sip/QtCore/qnamespace.sip +index 2db83b7..559f410 100644 +--- a/sip/QtCore/qnamespace.sip ++++ b/sip/QtCore/qnamespace.sip +@@ -209,8 +209,6 @@ namespace Qt + WindowContextHelpButtonHint, + WindowShadeButtonHint, + WindowStaysOnTopHint, +- WindowOkButtonHint, +- WindowCancelButtonHint, + WindowStaysOnBottomHint, + WindowCloseButtonHint, + MacWindowToolBarButtonHint, +-- +2.7.4 + diff --git a/buildroot/package/python-pyqt5/Config.in b/buildroot/package/python-pyqt5/Config.in new file mode 100644 index 0000000..20ac988 --- /dev/null +++ b/buildroot/package/python-pyqt5/Config.in @@ -0,0 +1,11 @@ +comment "python-pyqt5 needs Qt5" + depends on !BR2_PACKAGE_QT5 + +config BR2_PACKAGE_PYTHON_PYQT5 + bool "python-pyqt5" + depends on BR2_PACKAGE_QT5 + select BR2_PACKAGE_PYTHON_SIP + help + Python bindings for Qt 5 + + http://www.riverbankcomputing.com/software/pyqt/ diff --git a/buildroot/package/python-pyqt5/python-pyqt5.hash b/buildroot/package/python-pyqt5/python-pyqt5.hash new file mode 100644 index 0000000..2a7d05b --- /dev/null +++ b/buildroot/package/python-pyqt5/python-pyqt5.hash @@ -0,0 +1,3 @@ +# md5 from http://http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.7, sha256 locally computed +md5 e3dc21f31fd714659f0688e1eb31bacf PyQt5_gpl-5.7.tar.gz +sha256 892693ba5f79989abb2061dad2d5c4e6f127e9dd3240f73f8220c7152cd35b05 PyQt5_gpl-5.7.tar.gz diff --git a/buildroot/package/python-pyqt5/python-pyqt5.mk b/buildroot/package/python-pyqt5/python-pyqt5.mk new file mode 100644 index 0000000..cde026e --- /dev/null +++ b/buildroot/package/python-pyqt5/python-pyqt5.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# python-pyqt5 +# +################################################################################ + +PYTHON_PYQT5_VERSION = 5.7 +PYTHON_PYQT5_SOURCE = PyQt5_gpl-$(PYTHON_PYQT5_VERSION).tar.gz +PYTHON_PYQT5_SITE = http://downloads.sourceforge.net/project/pyqt/PyQt5/PyQt-$(PYTHON_PYQT5_VERSION) +PYTHON_PYQT5_LICENSE = GPL-3.0 +PYTHON_PYQT5_LICENSE_FILES = LICENSE + +PYTHON_PYQT5_DEPENDENCIES = python-sip host-python-sip qt5base + +ifeq ($(BR2_PACKAGE_PYTHON),y) +PYTHON_PYQT5_PYTHON_DIR = python$(PYTHON_VERSION_MAJOR) +PYTHON_PYQT5_RM_PORT_BASE = port_v3 +else ifeq ($(BR2_PACKAGE_PYTHON3),y) +PYTHON_PYQT5_PYTHON_DIR = python$(PYTHON3_VERSION_MAJOR) +PYTHON_PYQT5_RM_PORT_BASE = port_v2 +endif + +PYTHON_PYQT5_QTDETAIL_LICENSE = Open Source + +PYTHON_PYQT5_QTDETAIL_TYPE = shared + +# Turn off features that aren't available in current qt configuration +PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_OPENSSL),,PyQt_SSL) +PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL),,PyQt_OpenGL) +PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES += $(if $(BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP),,PyQt_Desktop_OpenGL) + +define PYTHON_PYQT5_QTDETAIL + echo $(1) >> $(2)/qtdetail.out +endef + +# Since we can't run generate qtdetail.out by running qtdetail on target device +# we must generate the configuration. +define PYTHON_PYQT5_GENERATE_QTDETAIL + $(RM) -f $(1)/qtdetail.out + $(call PYTHON_PYQT5_QTDETAIL,$(PYTHON_PYQT5_QTDETAIL_LICENSE),$(1)) + $(call PYTHON_PYQT5_QTDETAIL,$(PYTHON_PYQT5_QTDETAIL_TYPE),$(1)) + $(foreach f,$(PYTHON_PYQT5_QTDETAIL_DISABLE_FEATURES), + $(call PYTHON_PYQT5_QTDETAIL,$(f),$(1)) \ + ) +endef + +PYTHON_PYQT5_CONF_OPTS = \ + --bindir $(TARGET_DIR)/usr/bin \ + --destdir $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages \ + --qmake $(HOST_DIR)/bin/qmake \ + --sysroot $(STAGING_DIR)/usr \ + -w --confirm-license \ + --no-designer-plugin \ + --no-docstrings \ + --no-sip-files + +define PYTHON_PYQT5_CONFIGURE_CMDS + $(call PYTHON_PYQT5_GENERATE_QTDETAIL,$(@D)) + (cd $(@D); \ + $(TARGET_MAKE_ENV) \ + $(TARGET_CONFIGURE_OPTS) \ + $(HOST_DIR)/bin/python configure.py \ + $(PYTHON_PYQT5_CONF_OPTS) \ + ) +endef + +define PYTHON_PYQT5_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# __init__.py is needed to import PyQt5 +# __init__.pyc is needed if BR2_PACKAGE_PYTHON_PYC_ONLY is set +define PYTHON_PYQT5_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install + touch $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages/PyQt5/__init__.py + $(RM) -rf $(TARGET_DIR)/usr/lib/$(PYTHON_PYQT5_PYTHON_DIR)/site-packages/PyQt5/uic/$(PYTHON_PYQT5_RM_PORT_BASE) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/python-pyratemp/Config.in b/buildroot/package/python-pyratemp/Config.in new file mode 100644 index 0000000..9a299d1 --- /dev/null +++ b/buildroot/package/python-pyratemp/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PYRATEMP + bool "python-pyratemp" + help + python-pyratemp is a Python library for doing html + templates. written entirely in Python, that is designed to + be very easy to use and very like writing Python. + + https://pypi.python.org/pypi/pyratemp/ diff --git a/buildroot/package/python-pyratemp/python-pyratemp.hash b/buildroot/package/python-pyratemp/python-pyratemp.hash new file mode 100644 index 0000000..f3f29a3 --- /dev/null +++ b/buildroot/package/python-pyratemp/python-pyratemp.hash @@ -0,0 +1,4 @@ +#md5 from https://pypi.python.org/pypi?:action=show_md5&digest=e4bbe5d4a98016efef882b2b2f47defb +md5 e4bbe5d4a98016efef882b2b2f47defb pyratemp-0.3.2.tgz +# Locally calculated: +sha256 c45ed656ada482a02fe780495f37a695e7671accb04f918f7e7f18abf877bc71 pyratemp-0.3.2.tgz diff --git a/buildroot/package/python-pyratemp/python-pyratemp.mk b/buildroot/package/python-pyratemp/python-pyratemp.mk new file mode 100644 index 0000000..055fb30 --- /dev/null +++ b/buildroot/package/python-pyratemp/python-pyratemp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyratemp +# +################################################################################ + +PYTHON_PYRATEMP_VERSION = 0.3.2 +PYTHON_PYRATEMP_SOURCE = pyratemp-$(PYTHON_PYRATEMP_VERSION).tgz +PYTHON_PYRATEMP_SITE = https://pypi.python.org/packages/source/p/pyratemp +PYTHON_PYRATEMP_LICENSE = MIT +PYTHON_PYRATEMP_LICENSE_FILES = LICENSE +PYTHON_PYRATEMP_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyrex/python-pyrex.hash b/buildroot/package/python-pyrex/python-pyrex.hash new file mode 100644 index 0000000..607d303 --- /dev/null +++ b/buildroot/package/python-pyrex/python-pyrex.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5f87df06831d0b3412eb4bc9d3fc2ee7bfae1b913d7da8c23ab2bf5699fb6b50 Pyrex-0.9.9.tar.gz diff --git a/buildroot/package/python-pyrex/python-pyrex.mk b/buildroot/package/python-pyrex/python-pyrex.mk new file mode 100644 index 0000000..6284a5f --- /dev/null +++ b/buildroot/package/python-pyrex/python-pyrex.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pyrex +# +################################################################################ + +PYTHON_PYREX_VERSION = 0.9.9 +PYTHON_PYREX_SOURCE = Pyrex-$(PYTHON_PYREX_VERSION).tar.gz +PYTHON_PYREX_SITE = http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex +PYTHON_PYREX_LICENSE = Apache-2.0 +PYTHON_PYREX_LICENSE_FILES = LICENSE.txt +PYTHON_PYREX_SETUP_TYPE = distutils +HOST_PYTHON_PYREX_NEEDS_HOST_PYTHON = python2 + +$(eval $(host-python-package)) diff --git a/buildroot/package/python-pyro/Config.in b/buildroot/package/python-pyro/Config.in new file mode 100644 index 0000000..6372a1d --- /dev/null +++ b/buildroot/package/python-pyro/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_PYRO + bool "python-pyro" + depends on BR2_PACKAGE_PYTHON + help + python-pyro is a Python library stands for PYthon Remote + Objects. It is an advanced and powerful Distributed Object + Technology system written entirely in Python, that is + designed to be very easy to use.. + + https://pypi.python.org/pypi/Pyro/ diff --git a/buildroot/package/python-pyro/python-pyro.hash b/buildroot/package/python-pyro/python-pyro.hash new file mode 100644 index 0000000..4db42ef --- /dev/null +++ b/buildroot/package/python-pyro/python-pyro.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pyro/json, sha256 locally computed +md5 59d4d3f4a8786776c9d7f9051b8f1a69 Pyro-3.16.tar.gz +sha256 1bed508453ef7a7556b51424a58101af2349b662baab7e7331c5cb85dbe7e578 Pyro-3.16.tar.gz diff --git a/buildroot/package/python-pyro/python-pyro.mk b/buildroot/package/python-pyro/python-pyro.mk new file mode 100644 index 0000000..06b4f45 --- /dev/null +++ b/buildroot/package/python-pyro/python-pyro.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyro +# +################################################################################ + +PYTHON_PYRO_VERSION = 3.16 +PYTHON_PYRO_SOURCE = Pyro-$(PYTHON_PYRO_VERSION).tar.gz +PYTHON_PYRO_SITE = https://pypi.python.org/packages/61/68/0978adae315261b87acd216517c2c7f00780396e4d1426c5412458c6a28f +PYTHON_PYRO_LICENSE = MIT +PYTHON_PYRO_LICENSE_FILES = LICENSE +PYTHON_PYRO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyroute2/Config.in b/buildroot/package/python-pyroute2/Config.in new file mode 100644 index 0000000..4f13ab2 --- /dev/null +++ b/buildroot/package/python-pyroute2/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYROUTE2 + bool "python-pyroute2" + help + Python netlink library - Linux network / netns / wireless / + ipset configuration. + + https://github.com/svinota/pyroute2 diff --git a/buildroot/package/python-pyroute2/python-pyroute2.hash b/buildroot/package/python-pyroute2/python-pyroute2.hash new file mode 100644 index 0000000..dbf09c9 --- /dev/null +++ b/buildroot/package/python-pyroute2/python-pyroute2.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pyroute2/json, sha256 locally computed +md5 ef4282b1401bcd07a9cf4ec0696aba24 pyroute2-0.4.13.tar.gz +sha256 93f3d72f58b3627036427b5571f8e27c93dbb6d01372dc4c452707d6610c0a39 pyroute2-0.4.13.tar.gz diff --git a/buildroot/package/python-pyroute2/python-pyroute2.mk b/buildroot/package/python-pyroute2/python-pyroute2.mk new file mode 100644 index 0000000..eed8eb4 --- /dev/null +++ b/buildroot/package/python-pyroute2/python-pyroute2.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyroute2 +# +################################################################################ + +PYTHON_PYROUTE2_VERSION = 0.4.13 +PYTHON_PYROUTE2_SOURCE = pyroute2-$(PYTHON_PYROUTE2_VERSION).tar.gz +PYTHON_PYROUTE2_SITE = https://pypi.python.org/packages/91/e7/814f60e355078dc51625cd2e7e715ed4a06111ddf2ac5580f2f10e79c94a +PYTHON_PYROUTE2_LICENSE = Apache-2.0 or GPL-2.0+ +PYTHON_PYROUTE2_LICENSE_FILES = LICENSE.Apache.v2 LICENSE.GPL.v2 README.license.md +PYTHON_PYROUTE2_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-pysendfile/Config.in b/buildroot/package/python-pysendfile/Config.in new file mode 100644 index 0000000..5a919dd --- /dev/null +++ b/buildroot/package/python-pysendfile/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYSENDFILE + bool "python-pysendfile" + help + A Python interface to sendfile(2) syscall + + https://github.com/giampaolo/pysendfile diff --git a/buildroot/package/python-pysendfile/python-pysendfile.hash b/buildroot/package/python-pysendfile/python-pysendfile.hash new file mode 100644 index 0000000..755be50 --- /dev/null +++ b/buildroot/package/python-pysendfile/python-pysendfile.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 f4ca8a7f0be67e3d710c0633dd9aadab6881203c31cb9eb9be4f10361ad3f937 python-pysendfile-2.0.1.tar.gz diff --git a/buildroot/package/python-pysendfile/python-pysendfile.mk b/buildroot/package/python-pysendfile/python-pysendfile.mk new file mode 100644 index 0000000..bb8f057 --- /dev/null +++ b/buildroot/package/python-pysendfile/python-pysendfile.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-pysendfile +# +################################################################################ + +PYTHON_PYSENDFILE_VERSION = 2.0.1 +PYTHON_PYSENDFILE_SITE = $(call github,giampaolo,pysendfile,release-$(PYTHON_PYSENDFILE_VERSION)) +PYTHON_PYSENDFILE_SETUP_TYPE = setuptools +PYTHON_PYSENDFILE_LICENSE = MIT +PYTHON_PYSENDFILE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-pysmb/Config.in b/buildroot/package/python-pysmb/Config.in new file mode 100644 index 0000000..32a6878 --- /dev/null +++ b/buildroot/package/python-pysmb/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_PYSMB + bool "python-pysmb" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_PYTHON_PYASN + help + pysmb is an experimental SMB/CIFS library written in Python. + It implements the client-side SMB/CIFS protocol (SMB1 and + SMB2) which allows your Python application to access and + transfer files to/from SMB/CIFS shared folders like your + Windows file sharing and Samba folders. + + https://miketeo.net/wp/index.php/projects/pysmb + +comment "python-pysmb needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-pysmb/python-pysmb.hash b/buildroot/package/python-pysmb/python-pysmb.hash new file mode 100644 index 0000000..9524667 --- /dev/null +++ b/buildroot/package/python-pysmb/python-pysmb.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pysmb/json, sha256 locally computed +md5 e6f9ce0032db528aae060f7019bd409c pysmb-1.1.19.tar.gz +sha256 fa4e6b4a4f2afbfbd71e9179c491f8c77bc2ad19e0bc866d7c6cbfa9ae272602 pysmb-1.1.19.tar.gz diff --git a/buildroot/package/python-pysmb/python-pysmb.mk b/buildroot/package/python-pysmb/python-pysmb.mk new file mode 100644 index 0000000..1b4c187 --- /dev/null +++ b/buildroot/package/python-pysmb/python-pysmb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pysmb +# +################################################################################ + +PYTHON_PYSMB_VERSION = 1.1.19 +PYTHON_PYSMB_SOURCE = pysmb-$(PYTHON_PYSMB_VERSION).tar.gz +PYTHON_PYSMB_SITE = https://pypi.python.org/packages/f9/e7/1fd7faaa946cc6b43ce85bb7a177b75a4718d9c5e291201fec00112b497c +PYTHON_PYSMB_LICENSE = Libpng +PYTHON_PYSMB_LICENSE_FILES = LICENSE +PYTHON_PYSMB_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pysnmp-apps/Config.in b/buildroot/package/python-pysnmp-apps/Config.in new file mode 100644 index 0000000..32e3269 --- /dev/null +++ b/buildroot/package/python-pysnmp-apps/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PYSNMP_APPS + bool "python-pysnmp-apps" + depends on BR2_INSTALL_LIBSTDCPP # pysnmp -> pyasn + select BR2_PACKAGE_PYTHON_PYSNMP + help + A collection of command-line tools for SNMP management + purposes built on top of the PySNMP package. + + http://pysnmp.sf.net + +comment "python-pysnmp-apps needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.hash b/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.hash new file mode 100644 index 0000000..2b865cb --- /dev/null +++ b/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pysnmp-apps/json, sha256 locally computed +md5 7fc08e2d81a77d558b38be5e49ff833e pysnmp-apps-0.4.1.tar.gz +sha256 57accb8c2fcb255b4da85af07ef9cd6a266dc5143b2834419ec8a39a879edeb7 pysnmp-apps-0.4.1.tar.gz diff --git a/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.mk b/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.mk new file mode 100644 index 0000000..79c436f --- /dev/null +++ b/buildroot/package/python-pysnmp-apps/python-pysnmp-apps.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pysnmp-apps +# +################################################################################ + +PYTHON_PYSNMP_APPS_VERSION = 0.4.1 +PYTHON_PYSNMP_APPS_SOURCE = pysnmp-apps-$(PYTHON_PYSNMP_APPS_VERSION).tar.gz +PYTHON_PYSNMP_APPS_SITE = https://pypi.python.org/packages/source/p/pysnmp-apps +PYTHON_PYSNMP_APPS_SETUP_TYPE = setuptools +PYTHON_PYSNMP_APPS_LICENSE = BSD-3-Clause +PYTHON_PYSNMP_APPS_LICENSE_FILES = LICENSE.txt + +PYTHON_PYSNMP_APPS_DEPENDENCIES = python-pysnmp + +$(eval $(python-package)) diff --git a/buildroot/package/python-pysnmp-mibs/Config.in b/buildroot/package/python-pysnmp-mibs/Config.in new file mode 100644 index 0000000..521d95e --- /dev/null +++ b/buildroot/package/python-pysnmp-mibs/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PYSNMP_MIBS + bool "python-pysnmp-mibs" + depends on BR2_INSTALL_LIBSTDCPP # pysnmp -> pyasn + select BR2_PACKAGE_PYTHON_PYSNMP + help + PySNMP MIBs is a set of IETF & IANA MIBs pre-compiled and + packaged to simplify their use with the PySNMP library. + + http://pysnmp.sf.net + +comment "python-pysnmp-libs needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.hash b/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.hash new file mode 100644 index 0000000..8deb2e5 --- /dev/null +++ b/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pysnmp-mibs/json, sha256 locally computed +md5 01845c4595d87d3c3485c0449616cbda pysnmp-mibs-0.1.6.tar.gz +sha256 00fa321ca598e8a14c0ad98702bf10fb5e9d57b7d06bb99dc818fea07683720c pysnmp-mibs-0.1.6.tar.gz diff --git a/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.mk b/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.mk new file mode 100644 index 0000000..9772b78 --- /dev/null +++ b/buildroot/package/python-pysnmp-mibs/python-pysnmp-mibs.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# python-pysnmp-mibs +# +################################################################################ + +PYTHON_PYSNMP_MIBS_VERSION = 0.1.6 +PYTHON_PYSNMP_MIBS_SOURCE = pysnmp-mibs-$(PYTHON_PYSNMP_MIBS_VERSION).tar.gz +PYTHON_PYSNMP_MIBS_SITE = https://pypi.python.org/packages/bf/7c/99ab192af934ed5d41ceef92a1b949b41652f29b46241b902ffec55642f4 +PYTHON_PYSNMP_MIBS_SETUP_TYPE = setuptools +PYTHON_PYSNMP_MIBS_LICENSE = BSD-3-Clause +PYTHON_PYSNMP_MIBS_LICENSE_FILES = LICENSE.txt + +PYTHON_PYSNMP_MIBS_DEPENDENCIES = python-pysnmp + +$(eval $(python-package)) diff --git a/buildroot/package/python-pysnmp/Config.in b/buildroot/package/python-pysnmp/Config.in new file mode 100644 index 0000000..c7cdf38 --- /dev/null +++ b/buildroot/package/python-pysnmp/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_PYSNMP + bool "python-pysnmp" + depends on BR2_INSTALL_LIBSTDCPP # pyasn + select BR2_PACKAGE_PYTHON_PYASN + select BR2_PACKAGE_PYTHON_PYCRYPTO + help + PySNMP is a cross-platform, pure-Python SNMP engine + implementation. + + http://pysnmp.sf.net + +comment "python-pysnmp needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-pysnmp/python-pysnmp.hash b/buildroot/package/python-pysnmp/python-pysnmp.hash new file mode 100644 index 0000000..7ecbf4c --- /dev/null +++ b/buildroot/package/python-pysnmp/python-pysnmp.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pysnmp/json, sha256 locally computed +md5 cc0838cdf3f2d34539f478942f648384 pysnmp-4.3.3.tar.gz +sha256 c837d35cbb2c1e067b7b8ed752d962481ef8d7ff11e4cdd8bfb0840c4a786318 pysnmp-4.3.3.tar.gz diff --git a/buildroot/package/python-pysnmp/python-pysnmp.mk b/buildroot/package/python-pysnmp/python-pysnmp.mk new file mode 100644 index 0000000..2721ba8 --- /dev/null +++ b/buildroot/package/python-pysnmp/python-pysnmp.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-pysnmp +# +################################################################################ + +PYTHON_PYSNMP_VERSION = 4.3.3 +PYTHON_PYSNMP_SOURCE = pysnmp-$(PYTHON_PYSNMP_VERSION).tar.gz +PYTHON_PYSNMP_SITE = https://pypi.python.org/packages/47/b5/c65b9b6fcc36d3f4caca30d3314920f1ca75f5ceecc1f6ae2538ede24511 +PYTHON_PYSNMP_SETUP_TYPE = setuptools + +PYTHON_PYSNMP_LICENSE = BSD-3-Clause +PYTHON_PYSNMP_LICENSE_FILES = LICENSE.txt + +PYTHON_PYSNMP_DEPENDENCIES = python-pyasn python-pycrypto + +$(eval $(python-package)) diff --git a/buildroot/package/python-pysocks/Config.in b/buildroot/package/python-pysocks/Config.in new file mode 100644 index 0000000..cd38d4d --- /dev/null +++ b/buildroot/package/python-pysocks/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYSOCKS + bool "python-pysocks" + help + A Python SOCKS client module. + + https://github.com/Anorov/PySocks diff --git a/buildroot/package/python-pysocks/python-pysocks.hash b/buildroot/package/python-pysocks/python-pysocks.hash new file mode 100644 index 0000000..802bd37 --- /dev/null +++ b/buildroot/package/python-pysocks/python-pysocks.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pysocks/json, sha256 locally computed +md5 07007ec7ed46292dab06013f2e3af365 PySocks-1.6.7.tar.gz +sha256 d00329f27efa157db7efe3ca26fcd69033cd61f83822461ee3f8a353b48e33cf PySocks-1.6.7.tar.gz diff --git a/buildroot/package/python-pysocks/python-pysocks.mk b/buildroot/package/python-pysocks/python-pysocks.mk new file mode 100644 index 0000000..163da76 --- /dev/null +++ b/buildroot/package/python-pysocks/python-pysocks.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pysocks +# +################################################################################ + +PYTHON_PYSOCKS_VERSION = 1.6.7 +PYTHON_PYSOCKS_SOURCE = PySocks-$(PYTHON_PYSOCKS_VERSION).tar.gz +PYTHON_PYSOCKS_SITE = https://pypi.python.org/packages/7d/38/edca891ce16827a1de45cc347e4b6c22311eba25838b9825a5e6c48cf560 +PYTHON_PYSOCKS_LICENSE = BSD-3-Clause +PYTHON_PYSOCKS_LICENSE_FILES = LICENSE +PYTHON_PYSOCKS_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pytablereader/Config.in b/buildroot/package/python-pytablereader/Config.in new file mode 100644 index 0000000..29951ab --- /dev/null +++ b/buildroot/package/python-pytablereader/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_PYTHON_PYTABLEREADER + bool "python-pytablereader" + select BR2_PACKAGE_PYTHON_BEAUTIFULSOUP4 # runtime + select BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime + select BR2_PACKAGE_PYTHON_ENUM34 if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_JSONSCHEMA # runtime + select BR2_PACKAGE_PYTHON_LOGBOOK # runtime + select BR2_PACKAGE_PYTHON_MARKDOWN2 # runtime + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + select BR2_PACKAGE_PYTHON_PATHPY # runtime + select BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime + select BR2_PACKAGE_PYTHON_PYPARSING # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_TABLEDATA # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # runtime + select BR2_PACKAGE_PYTHON_XLRD # runtime + help + A python library to load structured table data from + files/URL with various data formats: + CSV/Excel/HTML/JSON/LTSV/Markdown/TSV. + + https://github.com/thombashi/pytablereader diff --git a/buildroot/package/python-pytablereader/python-pytablereader.hash b/buildroot/package/python-pytablereader/python-pytablereader.hash new file mode 100644 index 0000000..ade5df3 --- /dev/null +++ b/buildroot/package/python-pytablereader/python-pytablereader.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/pytablereader/json, sha256 locally computed +md5 bad666f031a336466c0e9d5c0f4c5783 pytablereader-0.15.0.tar.gz +sha256 edd7d78ceb1692a1b29254f45574f85f03cd04311d2dfd2256a299c6634cc022 pytablereader-0.15.0.tar.gz +sha256 7588265082eed5e9f4afd5090c57e610b740ec547b16aaaab739ba07c5eefb15 LICENSE diff --git a/buildroot/package/python-pytablereader/python-pytablereader.mk b/buildroot/package/python-pytablereader/python-pytablereader.mk new file mode 100644 index 0000000..ce1de4e --- /dev/null +++ b/buildroot/package/python-pytablereader/python-pytablereader.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pytablereader +# +################################################################################ + +PYTHON_PYTABLEREADER_VERSION = 0.15.0 +PYTHON_PYTABLEREADER_SOURCE = pytablereader-$(PYTHON_PYTABLEREADER_VERSION).tar.gz +PYTHON_PYTABLEREADER_SITE = https://pypi.python.org/packages/34/53/e2f51f2efe42c4045ad0822d4ffe739788a74cca35ba7d0bc59a53ec9424 +PYTHON_PYTABLEREADER_SETUP_TYPE = setuptools +PYTHON_PYTABLEREADER_LICENSE = MIT +PYTHON_PYTABLEREADER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-pytablewriter/Config.in b/buildroot/package/python-pytablewriter/Config.in new file mode 100644 index 0000000..10672dc --- /dev/null +++ b/buildroot/package/python-pytablewriter/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_PYTHON_PYTABLEWRITER + bool "python-pytablewriter" + select BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime + select BR2_PACKAGE_PYTHON_DOMINATE # runtime + select BR2_PACKAGE_PYTHON_LOGBOOK # runtime + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + select BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime + select BR2_PACKAGE_PYTHON_PYTABLEREADER # runtime + select BR2_PACKAGE_PYTHON_SIMPLESQLITE # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_TABLEDATA # runtime + select BR2_PACKAGE_PYTHON_TOML # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # runtime + select BR2_PACKAGE_PYTHON_XLSXWRITER # runtime + select BR2_PACKAGE_PYTHON_XLWT # runtime + help + pytablewriter is a python library to write a table in various + formats: CSV, HTML, JavaScript, JSON, Markdown, Excel, Pandas, + Python, reStructuredText. + + https://github.com/thombashi/pytablewriter diff --git a/buildroot/package/python-pytablewriter/python-pytablewriter.hash b/buildroot/package/python-pytablewriter/python-pytablewriter.hash new file mode 100644 index 0000000..36e1453 --- /dev/null +++ b/buildroot/package/python-pytablewriter/python-pytablewriter.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/pytablewriter/json, sha256 locally computed +md5 7d7eff9665b1d9e0c0189c34f8c562c3 pytablewriter-0.27.1.tar.gz +sha256 89e43bffc60ea93f0ed0cc8d8ddbf34ac0b74f8cf781c6c39f4c8bc3a7e4c436 pytablewriter-0.27.1.tar.gz +sha256 a93d75bcb0774e2990106380cadad6dcb2de193c55d435ffc56ba345a08b1dc2 LICENSE diff --git a/buildroot/package/python-pytablewriter/python-pytablewriter.mk b/buildroot/package/python-pytablewriter/python-pytablewriter.mk new file mode 100644 index 0000000..dd87213 --- /dev/null +++ b/buildroot/package/python-pytablewriter/python-pytablewriter.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pytablewriter +# +################################################################################ + +PYTHON_PYTABLEWRITER_VERSION = 0.27.1 +PYTHON_PYTABLEWRITER_SOURCE = pytablewriter-$(PYTHON_PYTABLEWRITER_VERSION).tar.gz +PYTHON_PYTABLEWRITER_SITE = https://pypi.python.org/packages/c2/88/6a9f6cbdabd773ba6de6c41d7a0af58eed37ca97b1d666b04819d0bf9b54 +PYTHON_PYTABLEWRITER_SETUP_TYPE = setuptools +PYTHON_PYTABLEWRITER_LICENSE = MIT +PYTHON_PYTABLEWRITER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-pytrie/Config.in b/buildroot/package/python-pytrie/Config.in new file mode 100644 index 0000000..fb1df41 --- /dev/null +++ b/buildroot/package/python-pytrie/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYTRIE + bool "python-pytrie" + help + A pure Python implementation of the trie data structure. + + https://pypi.python.org/pypi/PyTrie diff --git a/buildroot/package/python-pytrie/python-pytrie.hash b/buildroot/package/python-pytrie/python-pytrie.hash new file mode 100644 index 0000000..88d2542 --- /dev/null +++ b/buildroot/package/python-pytrie/python-pytrie.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=5997b46c854a68bc588f4527c987663a, sha256 locally computed. +md5 5997b46c854a68bc588f4527c987663a PyTrie-0.2.tar.gz +sha256 b272021351efadc6757591aac03ed4794bdfd091122204a4673e94bfb66cc500 PyTrie-0.2.tar.gz diff --git a/buildroot/package/python-pytrie/python-pytrie.mk b/buildroot/package/python-pytrie/python-pytrie.mk new file mode 100644 index 0000000..0fe78fd --- /dev/null +++ b/buildroot/package/python-pytrie/python-pytrie.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pytrie +# +################################################################################ + +PYTHON_PYTRIE_VERSION = 0.2 +PYTHON_PYTRIE_SITE = https://pypi.python.org/packages/source/P/PyTrie +PYTHON_PYTRIE_SOURCE = PyTrie-$(PYTHON_PYTRIE_VERSION).tar.gz +PYTHON_PYTRIE_LICENSE = BSD-3-Clause +PYTHON_PYTRIE_LICENSE_FILES = LICENSE +PYTHON_PYTRIE_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-pytz/Config.in b/buildroot/package/python-pytz/Config.in new file mode 100644 index 0000000..949fbd3 --- /dev/null +++ b/buildroot/package/python-pytz/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_PYTZ + bool "python-pytz" + help + World timezone definitions, modern and historical. + + http://pythonhosted.org/pytz diff --git a/buildroot/package/python-pytz/python-pytz.hash b/buildroot/package/python-pytz/python-pytz.hash new file mode 100644 index 0000000..dd3ff2c --- /dev/null +++ b/buildroot/package/python-pytz/python-pytz.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/pytz/json, sha256 locally computed +md5 7006b56c0d68a162d9fe57d4249c3171 pytz-2017.3.zip +sha256 fae4cffc040921b8a2d60c6cf0b5d662c1190fe54d718271db4eb17d44a185b7 pytz-2017.3.zip +sha256 a1c7102a51ef9ed37766f7388c71fd41bae2a7a95c30673c419ab84e1acc5f02 LICENSE.txt diff --git a/buildroot/package/python-pytz/python-pytz.mk b/buildroot/package/python-pytz/python-pytz.mk new file mode 100644 index 0000000..6e130a6 --- /dev/null +++ b/buildroot/package/python-pytz/python-pytz.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# python-pytz +# +################################################################################ + +PYTHON_PYTZ_VERSION = 2017.3 +PYTHON_PYTZ_SOURCE = pytz-$(PYTHON_PYTZ_VERSION).zip +PYTHON_PYTZ_SITE = https://pypi.python.org/packages/60/88/d3152c234da4b2a1f7a989f89609ea488225eaea015bc16fbde2b3fdfefa +PYTHON_PYTZ_SETUP_TYPE = setuptools +PYTHON_PYTZ_LICENSE = MIT +PYTHON_PYTZ_LICENSE_FILES = LICENSE.txt + +define PYTHON_PYTZ_EXTRACT_CMDS + unzip $(DL_DIR)/$(PYTHON_PYTZ_SOURCE) -d $(@D) + mv $(@D)/pytz-$(PYTHON_PYTZ_VERSION)/* $(@D) + rmdir $(@D)/pytz-$(PYTHON_PYTZ_VERSION) +endef + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch b/buildroot/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch new file mode 100644 index 0000000..93b9568 --- /dev/null +++ b/buildroot/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch @@ -0,0 +1,47 @@ +From e86a1c199d45c9751da67f947af202927dee07f8 Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Thu, 10 Dec 2015 08:44:55 +0100 +Subject: [PATCH] Workaround finding libudev on systems without ldconf + +This patch tries to load libudev.so directly without relying on +Python's find_library(). find_library() fails on systems +without library cache mechanism. + +Taken from pyudev issue 117 discussion: +https://github.com/pyudev/pyudev/pull/117 + +Signed-off-by: Yegor Yefremov +--- + src/pyudev/_libudev.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/pyudev/_libudev.py b/src/pyudev/_libudev.py +index a0de8fb..1348d17 100644 +--- a/src/pyudev/_libudev.py ++++ b/src/pyudev/_libudev.py +@@ -30,7 +30,7 @@ + from __future__ import (print_function, division, unicode_literals, + absolute_import) + +-from ctypes import (CDLL, Structure, POINTER, ++from ctypes import (cdll, CDLL, Structure, POINTER, + c_char, c_char_p, c_int, c_uint, c_ulonglong) + from ctypes.util import find_library + +@@ -265,10 +265,10 @@ def load_udev_library(): + + Raise :exc:`~exceptions.ImportError`, if the udev library was not found. + """ +- udev_library_name = find_library('udev') +- if not udev_library_name: ++ try: ++ libudev = cdll.LoadLibrary('libudev.so') ++ except OSError: + raise ImportError('No library named udev') +- libudev = CDLL(udev_library_name, use_errno=True) + # context function signature + for namespace, members in SIGNATURES.items(): + for funcname in members: +-- +2.1.4 + diff --git a/buildroot/package/python-pyudev/Config.in b/buildroot/package/python-pyudev/Config.in new file mode 100644 index 0000000..fb85395 --- /dev/null +++ b/buildroot/package/python-pyudev/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_PYUDEV + bool "python-pyudev" + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + pyudev is a LGPL licenced, pure Python 2/3 binding to + libudev, the device and hardware management and information + library of Linux. + + https://github.com/pyudev/pyudev + +comment "python-pyudev needs udev /dev management" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/python-pyudev/python-pyudev.hash b/buildroot/package/python-pyudev/python-pyudev.hash new file mode 100644 index 0000000..adda9a4 --- /dev/null +++ b/buildroot/package/python-pyudev/python-pyudev.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=07a60f5f7a6028e83725f759a1b9490a, sha256 locally computed +md5 07a60f5f7a6028e83725f759a1b9490a pyudev-0.18.tar.gz +sha256 83b315f74e29c3a4aa6ea38b6cf73b0bb7e37066d7a5d70972ac418a80aed62a pyudev-0.18.tar.gz diff --git a/buildroot/package/python-pyudev/python-pyudev.mk b/buildroot/package/python-pyudev/python-pyudev.mk new file mode 100644 index 0000000..db941ea --- /dev/null +++ b/buildroot/package/python-pyudev/python-pyudev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyudev +# +################################################################################ + +PYTHON_PYUDEV_VERSION = 0.18 +PYTHON_PYUDEV_SOURCE = pyudev-$(PYTHON_PYUDEV_VERSION).tar.gz +PYTHON_PYUDEV_SITE = https://pypi.python.org/packages/source/p/pyudev +PYTHON_PYUDEV_LICENSE = LGPL-2.1+ +PYTHON_PYUDEV_LICENSE_FILES = COPYING +PYTHON_PYUDEV_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyusb/Config.in b/buildroot/package/python-pyusb/Config.in new file mode 100644 index 0000000..1f97979 --- /dev/null +++ b/buildroot/package/python-pyusb/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_PYUSB + bool "python-pyusb" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + The PyUSB module provides easy access to the Universal + Serial Bus (USB) from Python. + + http://sourceforge.net/apps/trac/pyusb/ + +comment "python-pyusb needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/python-pyusb/python-pyusb.hash b/buildroot/package/python-pyusb/python-pyusb.hash new file mode 100644 index 0000000..098d08f --- /dev/null +++ b/buildroot/package/python-pyusb/python-pyusb.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pyusb/json, sha256 locally computed +md5 c8a571bfdba778555156af3facaea6fc PyUSB-1.0.0.tar.gz +sha256 5b34ffa74ac34f330bff949c94ee00ec4a9d147234db17ee2eed2a67c0275368 PyUSB-1.0.0.tar.gz diff --git a/buildroot/package/python-pyusb/python-pyusb.mk b/buildroot/package/python-pyusb/python-pyusb.mk new file mode 100644 index 0000000..0afcbe8 --- /dev/null +++ b/buildroot/package/python-pyusb/python-pyusb.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pyusb +# +################################################################################ + +PYTHON_PYUSB_VERSION = 1.0.0 +PYTHON_PYUSB_SOURCE = PyUSB-$(PYTHON_PYUSB_VERSION).tar.gz +PYTHON_PYUSB_SITE = https://pypi.python.org/packages/8a/19/66fb48a4905e472f5dfeda3a1bafac369fbf6d6fc5cf55b780864962652d +PYTHON_PYUSB_LICENSE = BSD-3-Clause +PYTHON_PYUSB_LICENSE_FILES = LICENSE +PYTHON_PYUSB_SETUP_TYPE = distutils +PYTHON_PYUSB_DEPENDENCIES = libusb + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyxb/Config.in b/buildroot/package/python-pyxb/Config.in new file mode 100644 index 0000000..6555ed8 --- /dev/null +++ b/buildroot/package/python-pyxb/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_PYXB + bool "python-pyxb" + help + PyXB is a pure Python package that generates Python code for + classes that correspond to data structures defined by + XMLSchema. + + http://pyxb.sourceforge.net/ diff --git a/buildroot/package/python-pyxb/python-pyxb.hash b/buildroot/package/python-pyxb/python-pyxb.hash new file mode 100644 index 0000000..0cfce57 --- /dev/null +++ b/buildroot/package/python-pyxb/python-pyxb.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/PyXB/json, sha256 locally computed +md5 4303573fc7094ce4664c5b71cd4bdb48 PyXB-1.2.6.tar.gz +sha256 2a00f38dd1d87b88f92d79bc5a09718d730419b88e814545f472bbd5a3bf27b4 PyXB-1.2.6.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/buildroot/package/python-pyxb/python-pyxb.mk b/buildroot/package/python-pyxb/python-pyxb.mk new file mode 100644 index 0000000..6af10b5 --- /dev/null +++ b/buildroot/package/python-pyxb/python-pyxb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-pyxb +# +################################################################################ + +PYTHON_PYXB_VERSION = 1.2.6 +PYTHON_PYXB_SOURCE = PyXB-$(PYTHON_PYXB_VERSION).tar.gz +PYTHON_PYXB_SITE = https://pypi.python.org/packages/e3/09/4fdb190ea2b7cb43d6d3e745276ee69f4d6181be70fcbfda7df3c5f72f0e +PYTHON_PYXB_LICENSE = Apache-2.0 +PYTHON_PYXB_LICENSE_FILES = LICENSE +PYTHON_PYXB_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyyaml/Config.in b/buildroot/package/python-pyyaml/Config.in new file mode 100644 index 0000000..45e818b --- /dev/null +++ b/buildroot/package/python-pyyaml/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYYAML + bool "python-pyyaml" + select BR2_PACKAGE_LIBYAML + help + The PyYAML package contains binding to the libyaml API. + + http://pyyaml.org/ diff --git a/buildroot/package/python-pyyaml/python-pyyaml.hash b/buildroot/package/python-pyyaml/python-pyyaml.hash new file mode 100644 index 0000000..209ab27 --- /dev/null +++ b/buildroot/package/python-pyyaml/python-pyyaml.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pyyaml/json, sha256 locally computed +md5 4c129761b661d181ebf7ff4eb2d79950 PyYAML-3.12.tar.gz +sha256 592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab PyYAML-3.12.tar.gz diff --git a/buildroot/package/python-pyyaml/python-pyyaml.mk b/buildroot/package/python-pyyaml/python-pyyaml.mk new file mode 100644 index 0000000..beeaf88 --- /dev/null +++ b/buildroot/package/python-pyyaml/python-pyyaml.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-pyyaml +# +################################################################################ + +PYTHON_PYYAML_VERSION = 3.12 +PYTHON_PYYAML_SOURCE = PyYAML-$(PYTHON_PYYAML_VERSION).tar.gz +PYTHON_PYYAML_SITE = https://pypi.python.org/packages/4a/85/db5a2df477072b2902b0eb892feb37d88ac635d36245a72a6a69b23b383a +PYTHON_PYYAML_SETUP_TYPE = distutils +PYTHON_PYYAML_LICENSE = MIT +PYTHON_PYYAML_LICENSE_FILES = LICENSE +PYTHON_PYYAML_DEPENDENCIES = libyaml + +$(eval $(python-package)) diff --git a/buildroot/package/python-pyzmq/0001-use-buildroot-zmq-version-instead-of-detect.patch b/buildroot/package/python-pyzmq/0001-use-buildroot-zmq-version-instead-of-detect.patch new file mode 100644 index 0000000..cb52eaf --- /dev/null +++ b/buildroot/package/python-pyzmq/0001-use-buildroot-zmq-version-instead-of-detect.patch @@ -0,0 +1,51 @@ +detect.py: fix the ZMQ version check to the ZMQ version of the buildroot + +The setup.py script tries to compile a test C program and runs it, to +retrieve a version string for the installed ZMQ library, but if the cross +compiler links it together, the result cannot be run on the host, due to +different architectures and libraries. + +And if the host compiler would compile/link it, it would not link with +the library version inside buildroot but with the library from the +host, possibly returning a wrong version number. + +Instead of trying to run the compiled test program to get the version +dynamically, return the version of the buildroot environment. + +Written by Michael Rommel, modified for version 16.0.2 by Lionel +Flandrin. + +Signed-off-by: Lionel Flandrin +--- + buildutils/detect.py | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/buildutils/detect.py b/buildutils/detect.py +index 9520da7..823144f 100644 +--- a/buildutils/detect.py ++++ b/buildutils/detect.py +@@ -117,13 +117,15 @@ def detect_zmq(basedir, compiler=None, **compiler_attrs): + + cc = get_compiler(compiler=compiler, **compiler_attrs) + efile = test_compilation(cfile, compiler=cc) +- patch_lib_paths(efile, cc.library_dirs) ++ #patch_lib_paths(efile, cc.library_dirs) + +- rc, so, se = get_output_error([efile]) +- if rc: +- msg = "Error running version detection script:\n%s\n%s" % (so,se) +- logging.error(msg) +- raise IOError(msg) ++ #rc, so, se = get_output_error([efile]) ++ # if rc: ++ # msg = "Error running version detection script:\n%s\n%s" % (so,se) ++ # logging.error(msg) ++ # raise IOError(msg) ++ ++ so = "vers: ##ZEROMQ_VERSION##" + + handlers = {'vers': lambda val: tuple(int(v) for v in val.split('.'))} + +-- +2.11.0 + diff --git a/buildroot/package/python-pyzmq/0002-replace-compile_and_run-with-compile_and_forget.patch b/buildroot/package/python-pyzmq/0002-replace-compile_and_run-with-compile_and_forget.patch new file mode 100644 index 0000000..278e939 --- /dev/null +++ b/buildroot/package/python-pyzmq/0002-replace-compile_and_run-with-compile_and_forget.patch @@ -0,0 +1,76 @@ +detect.py: replace compile_and_run with compile_and_forget + +This function is only used in setup.py to detect the availability of +sys/un.h by compiling and running a small test program. Since we're +cross-compiling we can't run the generated program, however if the +header is missing the test will fail at the compilation step so +running the test in unnecessary. + +Signed-off-by: Lionel Flandrin +--- + buildutils/detect.py | 16 ++++++++-------- + setup.py | 4 ++-- + 2 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/buildutils/detect.py b/buildutils/detect.py +index 7a6c115..9520da7 100644 +--- a/buildutils/detect.py ++++ b/buildutils/detect.py +@@ -58,7 +58,7 @@ def test_compilation(cfile, compiler=None, **compiler_attrs): + cc.link_executable(objs, efile, extra_preargs=lpreargs) + return efile + +-def compile_and_run(basedir, src, compiler=None, **compiler_attrs): ++def compile_and_forget(basedir, src, compiler=None, **compiler_attrs): + if not os.path.exists(basedir): + os.makedirs(basedir) + cfile = pjoin(basedir, os.path.basename(src)) +@@ -66,16 +66,16 @@ def compile_and_run(basedir, src, compiler=None, **compiler_attrs): + try: + cc = get_compiler(compiler, **compiler_attrs) + efile = test_compilation(cfile, compiler=cc) +- patch_lib_paths(efile, cc.library_dirs) +- result = Popen(efile, stdout=PIPE, stderr=PIPE) +- so, se = result.communicate() +- # for py3k: +- so = so.decode() +- se = se.decode() ++ # patch_lib_paths(efile, cc.library_dirs) ++ # result = Popen(efile, stdout=PIPE, stderr=PIPE) ++ # so, se = result.communicate() ++ # # for py3k: ++ # so = so.decode() ++ # se = se.decode() + finally: + shutil.rmtree(basedir) + +- return result.returncode, so, se ++ return None + + + def detect_zmq(basedir, compiler=None, **compiler_attrs): +diff --git a/setup.py b/setup.py +index c3a2879..b8b0aaf 100755 +--- a/setup.py ++++ b/setup.py +@@ -54,7 +54,7 @@ from buildutils import ( + info, warn, fatal, debug, line, copy_and_patch_libzmq, localpath, + fetch_libzmq, stage_platform_hpp, + bundled_version, customize_mingw, +- compile_and_run, ++ compile_and_forget, + patch_lib_paths, + ) + +@@ -327,7 +327,7 @@ class Configure(build_ext): + except Exception: + pass + try: +- compile_and_run(self.tempdir, ++ compile_and_forget(self.tempdir, + pjoin('buildutils', 'check_sys_un.c'), + **minus_zmq + ) +-- +2.11.0 + diff --git a/buildroot/package/python-pyzmq/Config.in b/buildroot/package/python-pyzmq/Config.in new file mode 100644 index 0000000..8f33a63 --- /dev/null +++ b/buildroot/package/python-pyzmq/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_PYZMQ + bool "python-pyzmq" + depends on BR2_INSTALL_LIBSTDCPP # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + select BR2_PACKAGE_ZEROMQ + help + This package contains the python language binding for zeromq. + + http://zeromq.org/bindings:python + +comment "python-pyzmq needs a toolchain w/ C++, threads" + depends on BR2_PACKAGE_PYTHON + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/buildroot/package/python-pyzmq/python-pyzmq.hash b/buildroot/package/python-pyzmq/python-pyzmq.hash new file mode 100644 index 0000000..6cdd0b9 --- /dev/null +++ b/buildroot/package/python-pyzmq/python-pyzmq.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/pyzmq/json, sha256 locally computed +md5 9a8768b00a566a400d70318f8c359cfe pyzmq-16.0.2.tar.gz +sha256 0322543fff5ab6f87d11a8a099c4c07dd8a1719040084b6ce9162bcdf5c45c9d pyzmq-16.0.2.tar.gz diff --git a/buildroot/package/python-pyzmq/python-pyzmq.mk b/buildroot/package/python-pyzmq/python-pyzmq.mk new file mode 100644 index 0000000..c34c5af --- /dev/null +++ b/buildroot/package/python-pyzmq/python-pyzmq.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# python-pyzmq +# +################################################################################ + +PYTHON_PYZMQ_VERSION = 16.0.2 +PYTHON_PYZMQ_SOURCE = pyzmq-$(PYTHON_PYZMQ_VERSION).tar.gz +PYTHON_PYZMQ_SITE = https://pypi.python.org/packages/af/37/8e0bf3800823bc247c36715a52e924e8f8fd5d1432f04b44b8cd7a5d7e55 +PYTHON_PYZMQ_LICENSE = LGPL-3.0+, BSD-3-Clause, Apache-2.0 +# Apache license only online: http://www.apache.org/licenses/LICENSE-2.0 +PYTHON_PYZMQ_LICENSE_FILES = COPYING.LESSER COPYING.BSD +PYTHON_PYZMQ_DEPENDENCIES = zeromq +PYTHON_PYZMQ_SETUP_TYPE = distutils +PYTHON_PYZMQ_BUILD_OPTS = --zmq=$(STAGING_DIR)/usr + +# Due to issues with cross-compiling, hardcode to the zeromq in BR +define PYTHON_PYZMQ_PATCH_ZEROMQ_VERSION + $(SED) 's/##ZEROMQ_VERSION##/$(ZEROMQ_VERSION)/' \ + $(@D)/buildutils/detect.py +endef + +PYTHON_PYZMQ_POST_PATCH_HOOKS += PYTHON_PYZMQ_PATCH_ZEROMQ_VERSION + +$(eval $(python-package)) diff --git a/buildroot/package/python-raven/Config.in b/buildroot/package/python-raven/Config.in new file mode 100644 index 0000000..0d4b26c --- /dev/null +++ b/buildroot/package/python-raven/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_RAVEN + bool "python-raven" + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_UNICODEDATA if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_UNICODEDATA if BR2_PACKAGE_PYTHON3 + help + Raven is a client for Sentry (https://getsentry.com). + + https://github.com/getsentry/raven-python diff --git a/buildroot/package/python-raven/python-raven.hash b/buildroot/package/python-raven/python-raven.hash new file mode 100644 index 0000000..66452a7 --- /dev/null +++ b/buildroot/package/python-raven/python-raven.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi/raven/json, sha256 locally computed +md5 4471e9e881da64f057ee7740345a6b27 raven-6.5.0.tar.gz +sha256 84da75114739191bdf2388f296ffd6177e83567a7fbaf2701e034ad6026e4f3b raven-6.5.0.tar.gz +# License file, locally calculated +sha256 5ce9459bc19ced99cc9eb135d4f559ed01e336354bdf16dd998be85aa688c233 LICENSE diff --git a/buildroot/package/python-raven/python-raven.mk b/buildroot/package/python-raven/python-raven.mk new file mode 100644 index 0000000..4a4cdee --- /dev/null +++ b/buildroot/package/python-raven/python-raven.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-raven +# +################################################################################ + +PYTHON_RAVEN_VERSION = 6.5.0 +PYTHON_RAVEN_SOURCE = raven-$(PYTHON_RAVEN_VERSION).tar.gz +PYTHON_RAVEN_SITE = https://pypi.python.org/packages/e0/26/1bdd4431f59ff92fee7f2378b7d54eb175eb69f68c40c6c9b15161f6774f +PYTHON_RAVEN_SETUP_TYPE = setuptools +PYTHON_RAVEN_LICENSE = BSD-3-Clause +PYTHON_RAVEN_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-remi/Config.in b/buildroot/package/python-remi/Config.in new file mode 100644 index 0000000..553c89c --- /dev/null +++ b/buildroot/package/python-remi/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_REMI + bool "python-remi" + help + Remi is a GUI library for Python applications which transpiles + an application's interface into HTML to be rendered in a web + browser. This removes platform-specific dependencies and lets + you easily develop cross-platform applications in Python! + + https://github.com/dddomodossola/remi/tree/master diff --git a/buildroot/package/python-remi/python-remi.hash b/buildroot/package/python-remi/python-remi.hash new file mode 100644 index 0000000..e3df6cb --- /dev/null +++ b/buildroot/package/python-remi/python-remi.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 69ab3f7438de76708bfc40396f791b76452f84bb8bca6dafbdaca510c17e9526 python-remi-v1.0.tar.gz +sha256 bc198f9846c1da3a1c1b1fa2b12909b021365d1e7fe9b4039245edfcec3b7f7f LICENSE diff --git a/buildroot/package/python-remi/python-remi.mk b/buildroot/package/python-remi/python-remi.mk new file mode 100644 index 0000000..3356430 --- /dev/null +++ b/buildroot/package/python-remi/python-remi.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-remi +# +################################################################################ + +PYTHON_REMI_VERSION = v1.0 +PYTHON_REMI_SITE = $(call github,dddomodossola,remi,$(PYTHON_REMI_VERSION)) +PYTHON_REMI_LICENSE = Apache-2.0 +PYTHON_REMI_LICENSE_FILES = LICENSE +PYTHON_REMI_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-requests-oauthlib/Config.in b/buildroot/package/python-requests-oauthlib/Config.in new file mode 100644 index 0000000..85283b2 --- /dev/null +++ b/buildroot/package/python-requests-oauthlib/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_REQUESTS_OAUTHLIB + bool "python-requests-oauthlib" + select BR2_PACKAGE_PYTHON_OAUTHLIB # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + help + OAuthlib authentication support for Requests. + + https://github.com/requests/requests-oauthlib diff --git a/buildroot/package/python-requests-oauthlib/python-requests-oauthlib.hash b/buildroot/package/python-requests-oauthlib/python-requests-oauthlib.hash new file mode 100644 index 0000000..be0f644 --- /dev/null +++ b/buildroot/package/python-requests-oauthlib/python-requests-oauthlib.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/requests_oauthlib/json, sha256 locally computed +md5 4358a879a4377393bcfd37d0f9ae6d4d requests-oauthlib-0.8.0.tar.gz +sha256 883ac416757eada6d3d07054ec7092ac21c7f35cb1d2cf82faf205637081f468 requests-oauthlib-0.8.0.tar.gz +sha256 ae01846afad8a8291fe6a08966f3015af9a8ff675d84b981f9793c122f7876e8 LICENSE diff --git a/buildroot/package/python-requests-oauthlib/python-requests-oauthlib.mk b/buildroot/package/python-requests-oauthlib/python-requests-oauthlib.mk new file mode 100644 index 0000000..02e3114 --- /dev/null +++ b/buildroot/package/python-requests-oauthlib/python-requests-oauthlib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-requests-oauthlib +# +################################################################################ + +PYTHON_REQUESTS_OAUTHLIB_VERSION = 0.8.0 +PYTHON_REQUESTS_OAUTHLIB_SOURCE = requests-oauthlib-$(PYTHON_REQUESTS_OAUTHLIB_VERSION).tar.gz +PYTHON_REQUESTS_OAUTHLIB_SITE = https://pypi.python.org/packages/80/14/ad120c720f86c547ba8988010d5186102030591f71f7099f23921ca47fe5 +PYTHON_REQUESTS_OAUTHLIB_SETUP_TYPE = setuptools +PYTHON_REQUESTS_OAUTHLIB_LICENSE = ISC +PYTHON_REQUESTS_OAUTHLIB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-requests-toolbelt/Config.in b/buildroot/package/python-requests-toolbelt/Config.in new file mode 100644 index 0000000..ba2b951 --- /dev/null +++ b/buildroot/package/python-requests-toolbelt/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_REQUESTS_TOOLBELT + bool "python-requests-toolbelt" + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + help + A utility belt for advanced users of python-requests. + + https://toolbelt.readthedocs.org diff --git a/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.hash b/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.hash new file mode 100644 index 0000000..75343b0 --- /dev/null +++ b/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/requests_toolbelt/json, sha256 locally computed +md5 be245e2093a9610fb2eb399afc063ad2 requests-toolbelt-0.7.1.tar.gz +sha256 c3843884269d79e492522f3e9f490917e074c1ddbb80111968970e721fe36eaf requests-toolbelt-0.7.1.tar.gz diff --git a/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.mk b/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.mk new file mode 100644 index 0000000..ce1d958 --- /dev/null +++ b/buildroot/package/python-requests-toolbelt/python-requests-toolbelt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-requests-toolbelt +# +################################################################################ + +PYTHON_REQUESTS_TOOLBELT_VERSION = 0.7.1 +PYTHON_REQUESTS_TOOLBELT_SOURCE = requests-toolbelt-$(PYTHON_REQUESTS_TOOLBELT_VERSION).tar.gz +PYTHON_REQUESTS_TOOLBELT_SITE = https://pypi.python.org/packages/ab/bf/2af6b25f880e2d529a524f98837d33b1048a2a15703fc4806185b54e9672 +PYTHON_REQUESTS_TOOLBELT_SETUP_TYPE = setuptools +PYTHON_REQUESTS_TOOLBELT_LICENSE = Apache-2.0 +PYTHON_REQUESTS_TOOLBELT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-requests/Config.in b/buildroot/package/python-requests/Config.in new file mode 100644 index 0000000..30158b8 --- /dev/null +++ b/buildroot/package/python-requests/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_PYTHON_REQUESTS + bool "python-requests" + select BR2_PACKAGE_PYTHON_CERTIFI # runtime + select BR2_PACKAGE_PYTHON_CHARDET # runtime + select BR2_PACKAGE_PYTHON_IDNA # runtime + select BR2_PACKAGE_PYTHON_URLLIB3 # runtime + select BR2_PACKAGE_PYTHON_HASHLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + help + Requests is an Apache2 Licensed HTTP library, written in + Python, for human beings. + + http://www.python-requests.org/ diff --git a/buildroot/package/python-requests/python-requests.hash b/buildroot/package/python-requests/python-requests.hash new file mode 100644 index 0000000..2f182ea --- /dev/null +++ b/buildroot/package/python-requests/python-requests.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/requests/json, sha256 locally computed +md5 40f723ed01dddeaf990d0609d073f021 requests-2.18.1.tar.gz +sha256 c6f3bdf4a4323ac7b45d01e04a6f6c20e32a052cd04de81e05103abc049ad9b9 requests-2.18.1.tar.gz diff --git a/buildroot/package/python-requests/python-requests.mk b/buildroot/package/python-requests/python-requests.mk new file mode 100644 index 0000000..504eb8d --- /dev/null +++ b/buildroot/package/python-requests/python-requests.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-requests +# +################################################################################ + +PYTHON_REQUESTS_VERSION = 2.18.1 +PYTHON_REQUESTS_SOURCE = requests-$(PYTHON_REQUESTS_VERSION).tar.gz +PYTHON_REQUESTS_SITE = https://pypi.python.org/packages/2c/b5/2b6e8ef8dd18203b6399e9f28c7d54f6de7b7549853fe36d575bd31e29a7 +PYTHON_REQUESTS_SETUP_TYPE = setuptools +PYTHON_REQUESTS_LICENSE = Apache-2.0 +PYTHON_REQUESTS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-rpi-gpio/Config.in b/buildroot/package/python-rpi-gpio/Config.in new file mode 100644 index 0000000..4f59ebd --- /dev/null +++ b/buildroot/package/python-rpi-gpio/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_RPI_GPIO + bool "python-rpi-gpio" + depends on BR2_arm + help + A Python module to control the GPIO on a Raspberry Pi. + + http://sourceforge.net/p/raspberry-gpio-python diff --git a/buildroot/package/python-rpi-gpio/python-rpi-gpio.hash b/buildroot/package/python-rpi-gpio/python-rpi-gpio.hash new file mode 100644 index 0000000..e8d390d --- /dev/null +++ b/buildroot/package/python-rpi-gpio/python-rpi-gpio.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/rpi_gpio/json, sha256 locally computed +md5 e4abe1cfb5eacebe53078032256eb837 RPi.GPIO-0.6.3.tar.gz +sha256 a5fc0eb5e401963b6c0a03650da6b42c4005f02d962b81241d96c98d0a578516 RPi.GPIO-0.6.3.tar.gz diff --git a/buildroot/package/python-rpi-gpio/python-rpi-gpio.mk b/buildroot/package/python-rpi-gpio/python-rpi-gpio.mk new file mode 100644 index 0000000..fd32674 --- /dev/null +++ b/buildroot/package/python-rpi-gpio/python-rpi-gpio.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-rpi-gpio +# +################################################################################ + +PYTHON_RPI_GPIO_VERSION = 0.6.3 +PYTHON_RPI_GPIO_SOURCE = RPi.GPIO-$(PYTHON_RPI_GPIO_VERSION).tar.gz +PYTHON_RPI_GPIO_SITE = https://pypi.python.org/packages/e2/58/6e1b775606da6439fa3fd1550e7f714ac62aa75e162eed29dbec684ecb3e +PYTHON_RPI_GPIO_LICENSE = MIT +PYTHON_RPI_GPIO_LICENSE_FILES = LICENCE.txt +PYTHON_RPI_GPIO_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-rtslib-fb/Config.in b/buildroot/package/python-rtslib-fb/Config.in new file mode 100644 index 0000000..f408334 --- /dev/null +++ b/buildroot/package/python-rtslib-fb/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_RTSLIB_FB + bool "python-rtslib-fb" + select BR2_PACKAGE_PYTHON_SIX + help + rtslib-fb is an object-based Python library for configuring + the LIO generic SCSI target, present in 3.x Linux kernel + versions. + + https://github.com/open-iscsi/rtslib-fb diff --git a/buildroot/package/python-rtslib-fb/python-rtslib-fb.hash b/buildroot/package/python-rtslib-fb/python-rtslib-fb.hash new file mode 100644 index 0000000..fd06185 --- /dev/null +++ b/buildroot/package/python-rtslib-fb/python-rtslib-fb.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 d5d81a78046b4c228d29ba88d9950e0f63858e5fcf601e3d0f8bf107fbaadc03 python-rtslib-fb-v2.1.fb57.tar.gz diff --git a/buildroot/package/python-rtslib-fb/python-rtslib-fb.mk b/buildroot/package/python-rtslib-fb/python-rtslib-fb.mk new file mode 100644 index 0000000..8236fb8 --- /dev/null +++ b/buildroot/package/python-rtslib-fb/python-rtslib-fb.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-rtslib-fb +# +################################################################################ + +# When upgrading the version, be sure to also upgrade +# python-configshell-fb and targetcli-fb at the same time. +PYTHON_RTSLIB_FB_VERSION = v2.1.fb57 +# Do not switch site to PyPI: it does not contain the latest version. +PYTHON_RTSLIB_FB_SITE = $(call github,open-iscsi,rtslib-fb,$(PYTHON_RTSLIB_FB_VERSION)) +PYTHON_RTSLIB_FB_LICENSE = Apache-2.0 +PYTHON_RTSLIB_FB_LICENSE_FILES = COPYING +PYTHON_RTSLIB_FB_SETUP_TYPE = setuptools +PYTHON_RTSLIB_FB_DEPENDENCIES = python-six + +$(eval $(python-package)) diff --git a/buildroot/package/python-scandir/Config.in b/buildroot/package/python-scandir/Config.in new file mode 100644 index 0000000..497f962 --- /dev/null +++ b/buildroot/package/python-scandir/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SCANDIR + bool "python-scandir" + help + scandir, a better directory iterator and faster os.walk() + + https://pypi.python.org/pypi/scandir diff --git a/buildroot/package/python-scandir/python-scandir.hash b/buildroot/package/python-scandir/python-scandir.hash new file mode 100644 index 0000000..aecd9a5 --- /dev/null +++ b/buildroot/package/python-scandir/python-scandir.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/scandir/json, sha256 locally computed +md5 a2713043de681bba6b084be42e7a8a44 scandir-1.5.tar.gz +sha256 c2612d1a487d80fb4701b4a91ca1b8f8a695b1ae820570815e85e8c8b23f1283 scandir-1.5.tar.gz diff --git a/buildroot/package/python-scandir/python-scandir.mk b/buildroot/package/python-scandir/python-scandir.mk new file mode 100644 index 0000000..9b7ba70 --- /dev/null +++ b/buildroot/package/python-scandir/python-scandir.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-scandir +# +################################################################################ + +PYTHON_SCANDIR_VERSION = 1.5 +PYTHON_SCANDIR_SOURCE = scandir-$(PYTHON_SCANDIR_VERSION).tar.gz +PYTHON_SCANDIR_SITE = https://pypi.python.org/packages/bd/f4/3143e0289faf0883228017dbc6387a66d0b468df646645e29e1eb89ea10e +PYTHON_SCANDIR_LICENSE = BSD-3-Clause +PYTHON_SCANDIR_LICENSE_FILES = LICENSE.txt +PYTHON_SCANDIR_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-scapy3k/Config.in b/buildroot/package/python-scapy3k/Config.in new file mode 100644 index 0000000..3e75fcd --- /dev/null +++ b/buildroot/package/python-scapy3k/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_SCAPY3K + bool "python-scapy3k" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_ZLIB + help + Network packet and pcap file crafting/sniffing/manipulation + security tool (based on scapy) with python3 compatibility. + + https://github.com/phaethon/scapy diff --git a/buildroot/package/python-scapy3k/python-scapy3k.hash b/buildroot/package/python-scapy3k/python-scapy3k.hash new file mode 100644 index 0000000..36d5dfe --- /dev/null +++ b/buildroot/package/python-scapy3k/python-scapy3k.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 a4c68ef2f787d82a3aec8640cac8dbab6f5b9e31ae4d89a1877efbb9150a9e25 python-scapy3k-v0.18.tar.gz diff --git a/buildroot/package/python-scapy3k/python-scapy3k.mk b/buildroot/package/python-scapy3k/python-scapy3k.mk new file mode 100644 index 0000000..e858dcc --- /dev/null +++ b/buildroot/package/python-scapy3k/python-scapy3k.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# python-scapy3k +# +################################################################################ + +PYTHON_SCAPY3K_VERSION = v0.18 +PYTHON_SCAPY3K_SITE = $(call github,phaethon,scapy,$(PYTHON_SCAPY3K_VERSION)) +PYTHON_SCAPY3K_SETUP_TYPE = distutils +PYTHON_SCAPY3K_LICENSE = GPL-2.0+ + +$(eval $(python-package)) diff --git a/buildroot/package/python-schedule/Config.in b/buildroot/package/python-schedule/Config.in new file mode 100644 index 0000000..d00c245 --- /dev/null +++ b/buildroot/package/python-schedule/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SCHEDULE + bool "python-schedule" + help + Job scheduling for humans. + + https://github.com/dbader/schedule diff --git a/buildroot/package/python-schedule/python-schedule.hash b/buildroot/package/python-schedule/python-schedule.hash new file mode 100644 index 0000000..2b2f048 --- /dev/null +++ b/buildroot/package/python-schedule/python-schedule.hash @@ -0,0 +1,5 @@ +# md5 from https://pypi.python.org/pypi/schedule/json, sha256 locally computed +md5 ab135a73458547d2b836beddd168528b schedule-0.4.3.tar.gz +sha256 31a160546a17838842199c792ba267575cf41339ca730aaf060567b798f4f46e schedule-0.4.3.tar.gz +# License file, locally calculated +sha256 30a8352c318ce1b645acde0299697342d4380ed2637d7ca18a8ad25661e3b41b LICENSE.txt diff --git a/buildroot/package/python-schedule/python-schedule.mk b/buildroot/package/python-schedule/python-schedule.mk new file mode 100644 index 0000000..26a3f5b --- /dev/null +++ b/buildroot/package/python-schedule/python-schedule.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-schedule +# +################################################################################ + +PYTHON_SCHEDULE_VERSION = 0.4.3 +PYTHON_SCHEDULE_SOURCE = schedule-$(PYTHON_SCHEDULE_VERSION).tar.gz +PYTHON_SCHEDULE_SITE = https://pypi.python.org/packages/ee/68/ba6b0bb69b2be13b32983971bca6c5adf22df6321945232e1419bc34a82f +PYTHON_SCHEDULE_SETUP_TYPE = setuptools +PYTHON_SCHEDULE_LICENSE = MIT +PYTHON_SCHEDULE_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-sdnotify/Config.in b/buildroot/package/python-sdnotify/Config.in new file mode 100644 index 0000000..bc77a06 --- /dev/null +++ b/buildroot/package/python-sdnotify/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SDNOTIFY + bool "python-sdnotify" + help + A pure Python implementation of systemd's service notification + protocol (sd_notify). + + https://github.com/bb4242/sdnotify diff --git a/buildroot/package/python-sdnotify/python-sdnotify.hash b/buildroot/package/python-sdnotify/python-sdnotify.hash new file mode 100644 index 0000000..6d3ad6b --- /dev/null +++ b/buildroot/package/python-sdnotify/python-sdnotify.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/sdnotify/json +md5 a182c1ef47e1c6c965771aa3029da16f sdnotify-0.3.1.tar.gz +# sha256 calculated by scanpypi +sha256 e69220d4f6cbb02130f43f929350a80cf51033fde47dcb056fbda71e2dff2d5a sdnotify-0.3.1.tar.gz diff --git a/buildroot/package/python-sdnotify/python-sdnotify.mk b/buildroot/package/python-sdnotify/python-sdnotify.mk new file mode 100644 index 0000000..7c24d32 --- /dev/null +++ b/buildroot/package/python-sdnotify/python-sdnotify.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sdnotify +# +################################################################################ + +PYTHON_SDNOTIFY_VERSION = 0.3.1 +PYTHON_SDNOTIFY_SOURCE = sdnotify-$(PYTHON_SDNOTIFY_VERSION).tar.gz +PYTHON_SDNOTIFY_SITE = https://pypi.python.org/packages/57/f9/ae03e3ebc83be0d501cde1f5d6d23dee74f5c2105f2cdb98bff4fa9ada9c +PYTHON_SDNOTIFY_SETUP_TYPE = distutils +PYTHON_SDNOTIFY_LICENSE = MIT +PYTHON_SDNOTIFY_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-secretstorage/Config.in b/buildroot/package/python-secretstorage/Config.in new file mode 100644 index 0000000..87aaf6a --- /dev/null +++ b/buildroot/package/python-secretstorage/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_SECRETSTORAGE + bool "python-secretstorage" + depends on BR2_INSTALL_LIBSTDCPP # python-cryptography + select BR2_PACKAGE_PYTHON_CRYPTOGRAPHY # runtime + help + Python bindings to FreeDesktop.org Secret Service API. + + https://github.com/mitya57/secretstorage + +comment "python-secretstorage needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-secretstorage/python-secretstorage.hash b/buildroot/package/python-secretstorage/python-secretstorage.hash new file mode 100644 index 0000000..b45fb57 --- /dev/null +++ b/buildroot/package/python-secretstorage/python-secretstorage.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/secretstorage/json, sha256 locally computed +md5 3b9465831b069e2622973afb7deb7bc2 SecretStorage-2.3.1.tar.gz +sha256 3af65c87765323e6f64c83575b05393f9e003431959c9395d1791d51497f29b6 SecretStorage-2.3.1.tar.gz +sha256 1debb9ff5d6759fd23cdb40e3ba34b1fa68dd0b19672b6d154599fb0ab704c57 LICENSE diff --git a/buildroot/package/python-secretstorage/python-secretstorage.mk b/buildroot/package/python-secretstorage/python-secretstorage.mk new file mode 100644 index 0000000..b9776d6 --- /dev/null +++ b/buildroot/package/python-secretstorage/python-secretstorage.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-secretstorage +# +################################################################################ + +PYTHON_SECRETSTORAGE_VERSION = 2.3.1 +PYTHON_SECRETSTORAGE_SOURCE = SecretStorage-$(PYTHON_SECRETSTORAGE_VERSION).tar.gz +PYTHON_SECRETSTORAGE_SITE = https://pypi.python.org/packages/a5/a5/0830cfe34a4cfd0d1c3c8b614ede1edb2aaf999091ac8548dd19cb352e79 +PYTHON_SECRETSTORAGE_SETUP_TYPE = setuptools +PYTHON_SECRETSTORAGE_LICENSE = BSD-3-Clause +PYTHON_SECRETSTORAGE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-see/Config.in b/buildroot/package/python-see/Config.in new file mode 100644 index 0000000..f3049fd --- /dev/null +++ b/buildroot/package/python-see/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SEE + bool "python-see" + help + dir for humans. + + https://ljcooke.github.io/see/ diff --git a/buildroot/package/python-see/python-see.hash b/buildroot/package/python-see/python-see.hash new file mode 100644 index 0000000..c48ee88 --- /dev/null +++ b/buildroot/package/python-see/python-see.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/see/json, sha256 locally computed +md5 cb3bf4d314f73a8f7a2fd3d2d99aab54 see-1.4.1.tar.gz +sha256 14f8f8a88a909a7d7dea81f0016e3fdfabd3b5d335992e102a382e1a71672bd1 see-1.4.1.tar.gz +sha256 dccbd040a7deacee7f05e5e46a8eba6e786ac319f0cb94c36f92d789585911a6 LICENSE diff --git a/buildroot/package/python-see/python-see.mk b/buildroot/package/python-see/python-see.mk new file mode 100644 index 0000000..982962b --- /dev/null +++ b/buildroot/package/python-see/python-see.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-see +# +################################################################################ + +PYTHON_SEE_VERSION = 1.4.1 +PYTHON_SEE_SOURCE = see-$(PYTHON_SEE_VERSION).tar.gz +PYTHON_SEE_SITE = https://pypi.python.org/packages/ff/fc/fcabb6a9bfe7c56798285839780cae67342256b823b97e94d862b0ba21d6 +PYTHON_SEE_SETUP_TYPE = setuptools +PYTHON_SEE_LICENSE = BSD-3-Clause +PYTHON_SEE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-serial/Config.in b/buildroot/package/python-serial/Config.in new file mode 100644 index 0000000..ca12d12 --- /dev/null +++ b/buildroot/package/python-serial/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SERIAL + bool "python-serial" + help + python-serial is a Python library to access serial ports. + + https://github.com/pyserial/pyserial diff --git a/buildroot/package/python-serial/python-serial.hash b/buildroot/package/python-serial/python-serial.hash new file mode 100644 index 0000000..f98a8b9 --- /dev/null +++ b/buildroot/package/python-serial/python-serial.hash @@ -0,0 +1,3 @@ +# md5 from http://pypi.python.org/pypi?:action=show_md5&digest=e849af7f8b7ec75cbc7a53da67c51a51, sha256 locally computed +md5 e849af7f8b7ec75cbc7a53da67c51a51 pyserial-3.1.tar.gz +sha256 c8ffdcbd8bfd308842409e558848c32aa3499a1bfe95a591e4210072b9520f1e pyserial-3.1.tar.gz diff --git a/buildroot/package/python-serial/python-serial.mk b/buildroot/package/python-serial/python-serial.mk new file mode 100644 index 0000000..ce7ec07 --- /dev/null +++ b/buildroot/package/python-serial/python-serial.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# python-serial +# +################################################################################ + +PYTHON_SERIAL_VERSION = 3.1 +PYTHON_SERIAL_SOURCE = pyserial-$(PYTHON_SERIAL_VERSION).tar.gz +PYTHON_SERIAL_SITE = https://pypi.python.org/packages/ce/9c/694ce79a9d4a164e109aeba1a40fba23336f3b7554978553e22a5d41d54d +PYTHON_SERIAL_LICENSE = BSD-3-Clause +PYTHON_SERIAL_LICENSE_FILES = LICENSE.txt +PYTHON_SERIAL_SETUP_TYPE = setuptools + +# aio.py is an experimental module, that is compatible only with +# Python 3, so remove it for Python 2 environment or it will +# cause compilation errors +ifeq ($(BR2_PACKAGE_PYTHON),y) +define PYTHON_SERIAL_REMOVE_AIO_PY + rm $(@D)/serial/aio.py +endef +PYTHON_SERIAL_POST_EXTRACT_HOOKS = PYTHON_SERIAL_REMOVE_AIO_PY +endif + +$(eval $(python-package)) diff --git a/buildroot/package/python-service-identity/Config.in b/buildroot/package/python-service-identity/Config.in new file mode 100644 index 0000000..73593b0 --- /dev/null +++ b/buildroot/package/python-service-identity/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_SERVICE_IDENTITY + bool "python-service-identity" + depends on BR2_INSTALL_LIBSTDCPP # python-pyopenssl, python-pyasn + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_CHARACTERISTIC # runtime + select BR2_PACKAGE_PYTHON_PYASN # runtime + select BR2_PACKAGE_PYTHON_PYASN_MODULES # runtime + select BR2_PACKAGE_PYTHON_PYOPENSSL # runtime + help + Service identity verification for pyOpenSSL. + + https://pypi.python.org/pypi/service_identity + +comment "python-service-identify needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-service-identity/python-service-identity.hash b/buildroot/package/python-service-identity/python-service-identity.hash new file mode 100644 index 0000000..7caaaf9 --- /dev/null +++ b/buildroot/package/python-service-identity/python-service-identity.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/service_identity/json, sha256 locally computed +md5 f509cb41ca2f8420bd8496291136d6cc service_identity-17.0.0.tar.gz +sha256 4001fbb3da19e0df22c47a06d29681a398473af4aa9d745eca525b3b2c2302ab service_identity-17.0.0.tar.gz diff --git a/buildroot/package/python-service-identity/python-service-identity.mk b/buildroot/package/python-service-identity/python-service-identity.mk new file mode 100644 index 0000000..ccc6e71 --- /dev/null +++ b/buildroot/package/python-service-identity/python-service-identity.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-service-identity +# +################################################################################ + +PYTHON_SERVICE_IDENTITY_VERSION = 17.0.0 +PYTHON_SERVICE_IDENTITY_SOURCE = service_identity-$(PYTHON_SERVICE_IDENTITY_VERSION).tar.gz +PYTHON_SERVICE_IDENTITY_SITE = https://pypi.python.org/packages/de/2a/cab6e30be82c8fcd2339ef618036720eda954cf05daef514e386661c9221 +PYTHON_SERVICE_IDENTITY_LICENSE = MIT +PYTHON_SERVICE_IDENTITY_LICENSE_FILES = LICENSE +PYTHON_SERVICE_IDENTITY_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-setproctitle/Config.in b/buildroot/package/python-setproctitle/Config.in new file mode 100644 index 0000000..d13afaa --- /dev/null +++ b/buildroot/package/python-setproctitle/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SETPROCTITLE + bool "python-setproctitle" + help + A Python module to customize the process title. + + https://pypi.python.org/pypi/setproctitle diff --git a/buildroot/package/python-setproctitle/python-setproctitle.hash b/buildroot/package/python-setproctitle/python-setproctitle.hash new file mode 100644 index 0000000..bf4d960 --- /dev/null +++ b/buildroot/package/python-setproctitle/python-setproctitle.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=2dcdd1b761700a5a13252fea3dfd1977, sha256 locally computed. +md5 2dcdd1b761700a5a13252fea3dfd1977 setproctitle-1.1.10.tar.gz +sha256 6283b7a58477dd8478fbb9e76defb37968ee4ba47b05ec1c053cb39638bd7398 setproctitle-1.1.10.tar.gz diff --git a/buildroot/package/python-setproctitle/python-setproctitle.mk b/buildroot/package/python-setproctitle/python-setproctitle.mk new file mode 100644 index 0000000..ff33c0c --- /dev/null +++ b/buildroot/package/python-setproctitle/python-setproctitle.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-setproctitle +# +################################################################################ + +PYTHON_SETPROCTITLE_VERSION = 1.1.10 +PYTHON_SETPROCTITLE_SOURCE = setproctitle-$(PYTHON_SETPROCTITLE_VERSION).tar.gz +PYTHON_SETPROCTITLE_SITE = https://pypi.python.org/packages/5a/0d/dc0d2234aacba6cf1a729964383e3452c52096dc695581248b548786f2b3 +PYTHON_SETPROCTITLE_LICENSE = BSD-3-Clause +PYTHON_SETPROCTITLE_LICENSE_FILES = COPYRIGHT +PYTHON_SETPROCTITLE_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-setuptools-scm/python-setuptools-scm.hash b/buildroot/package/python-setuptools-scm/python-setuptools-scm.hash new file mode 100644 index 0000000..e34e8e2 --- /dev/null +++ b/buildroot/package/python-setuptools-scm/python-setuptools-scm.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/setuptools_scm/json, sha256 locally computed +md5 f17493d53f0d842bb0152f214775640b setuptools_scm-1.15.6.tar.gz +sha256 49ab4685589986a42da85706b3311a2f74f1af567d39fee6cb1e088d7a75fb5f setuptools_scm-1.15.6.tar.gz diff --git a/buildroot/package/python-setuptools-scm/python-setuptools-scm.mk b/buildroot/package/python-setuptools-scm/python-setuptools-scm.mk new file mode 100644 index 0000000..acde261 --- /dev/null +++ b/buildroot/package/python-setuptools-scm/python-setuptools-scm.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-setuptools-scm +# +################################################################################ + +PYTHON_SETUPTOOLS_SCM_VERSION = 1.15.6 +PYTHON_SETUPTOOLS_SCM_SOURCE = setuptools_scm-$(PYTHON_SETUPTOOLS_SCM_VERSION).tar.gz +PYTHON_SETUPTOOLS_SCM_SITE = https://pypi.python.org/packages/03/6d/aafdd01edd227ee879b691455bf19895091872af7e48192bea1758c82032 +PYTHON_SETUPTOOLS_SCM_LICENSE = MIT +PYTHON_SETUPTOOLS_SCM_LICENSE_FILES = LICENSE +PYTHON_SETUPTOOLS_SCM_SETUP_TYPE = setuptools + +$(eval $(host-python-package)) diff --git a/buildroot/package/python-setuptools/0001-add-executable.patch b/buildroot/package/python-setuptools/0001-add-executable.patch new file mode 100644 index 0000000..1f8714e --- /dev/null +++ b/buildroot/package/python-setuptools/0001-add-executable.patch @@ -0,0 +1,72 @@ +From 9b3d307f8f6a1af88f3f810f5a6cf0835830e1e8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Mon, 7 Dec 2015 01:14:33 +0100 +Subject: [PATCH 1/1] add executable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Add a new --executable option to distribute so that we can +force the shebang line in installed python scripts. + +[Thomas: refresh for setuptools 5.8.] +[Jörg: refresh for setuptools 18.7.1] + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Thomas Petazzoni +Signed-off-by: Jörg Krause +--- + setuptools/command/install.py | 2 ++ + setuptools/command/install_scripts.py | 9 +++++++++ + 2 files changed, 11 insertions(+) + +diff --git a/setuptools/command/install.py b/setuptools/command/install.py +index d2bca2e..b60ef19 100644 +--- a/setuptools/command/install.py ++++ b/setuptools/command/install.py +@@ -16,6 +16,7 @@ class install(orig.install): + """Use easy_install to install the package, w/dependencies""" + + user_options = orig.install.user_options + [ ++ ('executable=', 'e', "specify final destination interpreter path"), + ('old-and-unmanageable', None, "Try not to use this!"), + ('single-version-externally-managed', None, + "used by system package builders to create 'flat' eggs"), +@@ -31,6 +32,7 @@ class install(orig.install): + + def initialize_options(self): + orig.install.initialize_options(self) ++ self.executable = None + self.old_and_unmanageable = None + self.single_version_externally_managed = None + +diff --git a/setuptools/command/install_scripts.py b/setuptools/command/install_scripts.py +index be66cb2..07afaf8 100755 +--- a/setuptools/command/install_scripts.py ++++ b/setuptools/command/install_scripts.py +@@ -11,6 +11,13 @@ class install_scripts(orig.install_scripts): + def initialize_options(self): + orig.install_scripts.initialize_options(self) + self.no_ep = False ++ self.executable = None ++ ++ def finalize_options(self): ++ orig.install_scripts.finalize_options(self) ++ self.set_undefined_options('install', ++ ('executable','executable') ++ ) + + def run(self): + import setuptools.command.easy_install as ei +@@ -31,6 +38,8 @@ class install_scripts(orig.install_scripts): + ) + bs_cmd = self.get_finalized_command('build_scripts') + exec_param = getattr(bs_cmd, 'executable', None) ++ if self.executable is not None: ++ exec_param = self.executable + bw_cmd = self.get_finalized_command("bdist_wininst") + is_wininst = getattr(bw_cmd, '_is_running', False) + writer = ei.ScriptWriter +-- +2.6.3 + diff --git a/buildroot/package/python-setuptools/Config.in b/buildroot/package/python-setuptools/Config.in new file mode 100644 index 0000000..f203d0f --- /dev/null +++ b/buildroot/package/python-setuptools/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_SETUPTOOLS + bool "python-setuptools" + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + help + Download, build, install, upgrade, and uninstall Python + packages. + + http://pypi.python.org/pypi/setuptools diff --git a/buildroot/package/python-setuptools/python-setuptools.hash b/buildroot/package/python-setuptools/python-setuptools.hash new file mode 100644 index 0000000..f116a69 --- /dev/null +++ b/buildroot/package/python-setuptools/python-setuptools.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2599b4c452e77824bbd6da28d16b1fe8159c7a4c203d8d419d8b348fde7b9549 python-setuptools-v38.4.0.tar.gz +sha256 c32a3ac395af6321efd28be73d06a00f0db6ab887d1c21d4fec46128d2056d5a LICENSE diff --git a/buildroot/package/python-setuptools/python-setuptools.mk b/buildroot/package/python-setuptools/python-setuptools.mk new file mode 100644 index 0000000..004fc0d --- /dev/null +++ b/buildroot/package/python-setuptools/python-setuptools.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# python-setuptools +# +################################################################################ + +PYTHON_SETUPTOOLS_VERSION = v38.4.0 +PYTHON_SETUPTOOLS_SITE = $(call github,pypa,setuptools,$(PYTHON_SETUPTOOLS_VERSION)) +PYTHON_SETUPTOOLS_LICENSE = MIT +PYTHON_SETUPTOOLS_LICENSE_FILES = LICENSE +PYTHON_SETUPTOOLS_SETUP_TYPE = setuptools + +# recent setuptools versions require bootstrap.py to be invoked +# before the standard setup process. +define PYTHON_SETUPTOOLS_RUN_BOOTSTRAP + cd $(@D) && $(HOST_DIR)/bin/python ./bootstrap.py +endef + +PYTHON_SETUPTOOLS_PRE_CONFIGURE_HOOKS = PYTHON_SETUPTOOLS_RUN_BOOTSTRAP +HOST_PYTHON_SETUPTOOLS_PRE_CONFIGURE_HOOKS = PYTHON_SETUPTOOLS_RUN_BOOTSTRAP + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-sh/Config.in b/buildroot/package/python-sh/Config.in new file mode 100644 index 0000000..b55ea4a --- /dev/null +++ b/buildroot/package/python-sh/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SH + bool "python-sh" + help + Python subprocess replacement that allows you to call any + program as if it were a function. + + https://github.com/amoffat/sh diff --git a/buildroot/package/python-sh/python-sh.hash b/buildroot/package/python-sh/python-sh.hash new file mode 100644 index 0000000..cbc6745 --- /dev/null +++ b/buildroot/package/python-sh/python-sh.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/sh/json, sha256 locally computed +md5 a8351aef25d25f707c17e0a7a6280251 sh-1.12.14.tar.gz +sha256 b52bf5833ed01c7b5c5fb73a7f71b3d98d48e9b9b8764236237bdc7ecae850fc sh-1.12.14.tar.gz diff --git a/buildroot/package/python-sh/python-sh.mk b/buildroot/package/python-sh/python-sh.mk new file mode 100644 index 0000000..dfe80d5 --- /dev/null +++ b/buildroot/package/python-sh/python-sh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sh +# +################################################################################ + +PYTHON_SH_VERSION = 1.12.14 +PYTHON_SH_SOURCE = sh-$(PYTHON_SH_VERSION).tar.gz +PYTHON_SH_SITE = https://pypi.python.org/packages/7c/71/199d27d3e7e78bf448bcecae0105a1d5b29173ffd2bbadaa95a74c156770 +PYTHON_SH_SETUP_TYPE = setuptools +PYTHON_SH_LICENSE = MIT +PYTHON_SH_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-shutilwhich/Config.in b/buildroot/package/python-shutilwhich/Config.in new file mode 100644 index 0000000..a75a63b --- /dev/null +++ b/buildroot/package/python-shutilwhich/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SHUTILWHICH + bool "python-shutilwhich" + help + shutil.which for those not using Python 3.3 yet. + + https://pypi.python.org/pypi/shutilwhich/ diff --git a/buildroot/package/python-shutilwhich/python-shutilwhich.hash b/buildroot/package/python-shutilwhich/python-shutilwhich.hash new file mode 100644 index 0000000..b1a2c78 --- /dev/null +++ b/buildroot/package/python-shutilwhich/python-shutilwhich.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=915947c5cdae7afd748ac715ee547adb, sha256 locally computed. +md5 915947c5cdae7afd748ac715ee547adb shutilwhich-1.1.0.tar.gz +sha256 db1f39c6461e42f630fa617bb8c79090f7711c9ca493e615e43d0610ecb64dc6 shutilwhich-1.1.0.tar.gz diff --git a/buildroot/package/python-shutilwhich/python-shutilwhich.mk b/buildroot/package/python-shutilwhich/python-shutilwhich.mk new file mode 100644 index 0000000..0cf968a --- /dev/null +++ b/buildroot/package/python-shutilwhich/python-shutilwhich.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-shutilwhich +# +################################################################################ + +PYTHON_SHUTILWHICH_VERSION = 1.1.0 +PYTHON_SHUTILWHICH_SOURCE = shutilwhich-$(PYTHON_SHUTILWHICH_VERSION).tar.gz +PYTHON_SHUTILWHICH_SITE = https://pypi.python.org/packages/source/s/shutilwhich +PYTHON_SHUTILWHICH_LICENSE = Python-2.0 +PYTHON_SHUTILWHICH_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-simpleaudio/Config.in b/buildroot/package/python-simpleaudio/Config.in new file mode 100644 index 0000000..c6fcd8b --- /dev/null +++ b/buildroot/package/python-simpleaudio/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_PYTHON_SIMPLEAUDIO + bool "python-simpleaudio" + depends on BR2_PACKAGE_PYTHON3 + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + help + The simplaudio package provides cross-platform, + dependency-free audio playback capability for Python 3 on + OSX, Windows, and Linux. + + https://github.com/hamiltron/py-simple-audio + +comment "python-simpleaudio needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/python-simpleaudio/python-simpleaudio.hash b/buildroot/package/python-simpleaudio/python-simpleaudio.hash new file mode 100644 index 0000000..7e3a7fb --- /dev/null +++ b/buildroot/package/python-simpleaudio/python-simpleaudio.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/simpleaudio/json, sha256 locally computed +md5 8c1c82fdf7ebba1a79b1243651e451d7 simpleaudio-1.0.1.tar.gz +sha256 6cc84d50d8192c074505c719722138ae6ea987fd8eee7fd930237cb308962604 simpleaudio-1.0.1.tar.gz diff --git a/buildroot/package/python-simpleaudio/python-simpleaudio.mk b/buildroot/package/python-simpleaudio/python-simpleaudio.mk new file mode 100644 index 0000000..24ec067 --- /dev/null +++ b/buildroot/package/python-simpleaudio/python-simpleaudio.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-simpleaudio +# +################################################################################ + +PYTHON_SIMPLEAUDIO_VERSION = 1.0.1 +PYTHON_SIMPLEAUDIO_SOURCE = simpleaudio-$(PYTHON_SIMPLEAUDIO_VERSION).tar.gz +PYTHON_SIMPLEAUDIO_SITE = https://pypi.python.org/packages/12/f6/327c1af94062a6a6a5ff06dcf9dc689ed81aa07ae757cca3438c3c9e50fe +PYTHON_SIMPLEAUDIO_LICENSE = MIT +PYTHON_SIMPLEAUDIO_LICENSE_FILES = LICENSE.txt +PYTHON_SIMPLEAUDIO_SETUP_TYPE = setuptools +PYTHON_SIMPLEAUDIO_DEPENDENCIES = alsa-lib + +$(eval $(python-package)) diff --git a/buildroot/package/python-simplegeneric/Config.in b/buildroot/package/python-simplegeneric/Config.in new file mode 100644 index 0000000..623b1ae --- /dev/null +++ b/buildroot/package/python-simplegeneric/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SIMPLEGENERIC + bool "python-simplegeneric" + help + Simple generic functions (similar to Python's own len(), + pickle.dump(), etc.) + + https://pypi.python.org/pypi/simplegeneric diff --git a/buildroot/package/python-simplegeneric/python-simplegeneric.hash b/buildroot/package/python-simplegeneric/python-simplegeneric.hash new file mode 100644 index 0000000..24f652c --- /dev/null +++ b/buildroot/package/python-simplegeneric/python-simplegeneric.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/simplegeneric, sha256 locally computed +md5 f9c1fab00fd981be588fc32759f474e3 simplegeneric-0.8.1.zip +sha256 dc972e06094b9af5b855b3df4a646395e43d1c9d0d39ed345b7393560d0b9173 simplegeneric-0.8.1.zip diff --git a/buildroot/package/python-simplegeneric/python-simplegeneric.mk b/buildroot/package/python-simplegeneric/python-simplegeneric.mk new file mode 100644 index 0000000..cc84320 --- /dev/null +++ b/buildroot/package/python-simplegeneric/python-simplegeneric.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# python-simplegeneric +# +################################################################################ + +PYTHON_SIMPLEGENERIC_VERSION = 0.8.1 +PYTHON_SIMPLEGENERIC_SOURCE = simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION).zip +PYTHON_SIMPLEGENERIC_SITE = https://pypi.python.org/packages/3d/57/4d9c9e3ae9a255cd4e1106bb57e24056d3d0709fc01b2e3e345898e49d5b +PYTHON_SIMPLEGENERIC_LICENSE = ZPL-2.1 + +# Force setup-type to be 'setuptools' in order to force the package to +# be installed with --single-version-externally-managed. Otherwise we +# end up with a .egg file, which is a zip archive, and as such forces +# us to have 'zlib' as a runtime dependency +PYTHON_SIMPLEGENERIC_SETUP_TYPE = setuptools + +define PYTHON_SIMPLEGENERIC_EXTRACT_CMDS + unzip $(DL_DIR)/$(PYTHON_SIMPLEGENERIC_SOURCE) -d $(@D) + mv $(@D)/simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION)/* $(@D) + rmdir $(@D)/simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION) +endef + +$(eval $(python-package)) diff --git a/buildroot/package/python-simplejson/Config.in b/buildroot/package/python-simplejson/Config.in new file mode 100644 index 0000000..c2fd917 --- /dev/null +++ b/buildroot/package/python-simplejson/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_SIMPLEJSON + bool "python-simplejson" + help + Simple, fast, extensible JSON encoder/decoder for Python. + + https://pypi.python.org/pypi/simplejson/ diff --git a/buildroot/package/python-simplejson/python-simplejson.hash b/buildroot/package/python-simplejson/python-simplejson.hash new file mode 100644 index 0000000..f2a5fce --- /dev/null +++ b/buildroot/package/python-simplejson/python-simplejson.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/simplejson/json, sha256 locally computed +md5 6e2f1bd5fb0a926facf5d89d217a7183 simplejson-3.11.1.tar.gz +sha256 01a22d49ddd9a168b136f26cac87d9a335660ce07aa5c630b8e3607d6f4325e7 simplejson-3.11.1.tar.gz diff --git a/buildroot/package/python-simplejson/python-simplejson.mk b/buildroot/package/python-simplejson/python-simplejson.mk new file mode 100644 index 0000000..afc77fe --- /dev/null +++ b/buildroot/package/python-simplejson/python-simplejson.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-simplejson +# +################################################################################ + +PYTHON_SIMPLEJSON_VERSION = 3.11.1 +PYTHON_SIMPLEJSON_SOURCE = simplejson-$(PYTHON_SIMPLEJSON_VERSION).tar.gz +PYTHON_SIMPLEJSON_SITE = https://pypi.python.org/packages/08/48/c97b668d6da7d7bebe7ea1817a6f76394b0ec959cb04214ca833c34359df +PYTHON_SIMPLEJSON_LICENSE = Academic Free License (AFL), MIT +PYTHON_SIMPLEJSON_LICENSE_FILES = LICENSE.txt +PYTHON_SIMPLEJSON_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-simplesqlite/Config.in b/buildroot/package/python-simplesqlite/Config.in new file mode 100644 index 0000000..25941dd --- /dev/null +++ b/buildroot/package/python-simplesqlite/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_PYTHON_SIMPLESQLITE + bool "python-simplesqlite" + select BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime + select BR2_PACKAGE_PYTHON_LOGBOOK # runtime + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + select BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime + select BR2_PACKAGE_PYTHON_PYTABLEREADER # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_SQLITE if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SQLITE if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # runtime + help + SimpleSQLite is a Python library to simplify SQLite database + operations: table creation, data insertion and get data as + other data formats. + + https://github.com/thombashi/SimpleSQLite diff --git a/buildroot/package/python-simplesqlite/python-simplesqlite.hash b/buildroot/package/python-simplesqlite/python-simplesqlite.hash new file mode 100644 index 0000000..b9dc137 --- /dev/null +++ b/buildroot/package/python-simplesqlite/python-simplesqlite.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/simplesqlite/json, sha256 locally computed +md5 be05735a65f91bf0bb47c2bfcf474dd3 SimpleSQLite-0.15.0.tar.gz +sha256 319cf4fd660a2a8ba1d77bac65e3cb3bed30ef5e2b2f98aab558026a29bbefec SimpleSQLite-0.15.0.tar.gz diff --git a/buildroot/package/python-simplesqlite/python-simplesqlite.mk b/buildroot/package/python-simplesqlite/python-simplesqlite.mk new file mode 100644 index 0000000..48c37c5 --- /dev/null +++ b/buildroot/package/python-simplesqlite/python-simplesqlite.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-simplesqlite +# +################################################################################ + +PYTHON_SIMPLESQLITE_VERSION = 0.15.0 +PYTHON_SIMPLESQLITE_SOURCE = SimpleSQLite-$(PYTHON_SIMPLESQLITE_VERSION).tar.gz +PYTHON_SIMPLESQLITE_SITE = https://pypi.python.org/packages/d5/09/e256a7d421c223505d4e89079b4936c6a6de39a5a095ec4bcaa9bfc3f933 +PYTHON_SIMPLESQLITE_SETUP_TYPE = setuptools +PYTHON_SIMPLESQLITE_LICENSE = MIT +PYTHON_SIMPLESQLITE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-singledispatch/Config.in b/buildroot/package/python-singledispatch/Config.in new file mode 100644 index 0000000..4abc219 --- /dev/null +++ b/buildroot/package/python-singledispatch/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_SINGLEDISPATCH + bool "python-singledispatch" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_SIX # runtime + help + This library brings functools.singledispatch from + Python 3.4 to Python 2.6-3.3 + + https://pypi.python.org/pypi/singledispatch diff --git a/buildroot/package/python-singledispatch/python-singledispatch.hash b/buildroot/package/python-singledispatch/python-singledispatch.hash new file mode 100644 index 0000000..8a96d21 --- /dev/null +++ b/buildroot/package/python-singledispatch/python-singledispatch.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=af2fc6a3d6cc5a02d0bf54d909785fcb, sha256 locally computed +md5 af2fc6a3d6cc5a02d0bf54d909785fcb singledispatch-3.4.0.3.tar.gz +sha256 5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c singledispatch-3.4.0.3.tar.gz diff --git a/buildroot/package/python-singledispatch/python-singledispatch.mk b/buildroot/package/python-singledispatch/python-singledispatch.mk new file mode 100644 index 0000000..7e1d5ac --- /dev/null +++ b/buildroot/package/python-singledispatch/python-singledispatch.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-singledispatch +# +################################################################################ + +PYTHON_SINGLEDISPATCH_VERSION = 3.4.0.3 +PYTHON_SINGLEDISPATCH_SOURCE = singledispatch-$(PYTHON_SINGLEDISPATCH_VERSION).tar.gz +PYTHON_SINGLEDISPATCH_SITE = https://pypi.python.org/packages/source/s/singledispatch +PYTHON_SINGLEDISPATCH_LICENSE = MIT +PYTHON_SINGLEDISPATCH_LICENSE_FILES = setup.py +PYTHON_SINGLEDISPATCH_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-sip/Config.in b/buildroot/package/python-sip/Config.in new file mode 100644 index 0000000..1f8961d --- /dev/null +++ b/buildroot/package/python-sip/Config.in @@ -0,0 +1,29 @@ +comment "python-sip needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +comment "python-sip needs qt or qt5" + depends on BR2_USE_MMU + depends on BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_PACKAGE_QT && !BR2_PACKAGE_QT5 + +config BR2_PACKAGE_PYTHON_SIP + bool "python-sip" + depends on BR2_INSTALL_LIBSTDCPP # qt + depends on BR2_TOOLCHAIN_HAS_THREADS # qt + depends on BR2_USE_MMU # qt + depends on BR2_PACKAGE_QT || BR2_PACKAGE_QT5 + help + SIP is a tool that makes it very easy to create Python + bindings for C and C++ libraries. It was originally + developed to create PyQt, the Python bindings for the Qt + toolkit, but can be used to create bindings for any C or C++ + library. + + SIP comprises a code generator and a Python module. The code + generator processes a set of specification files and + generates C or C++ code which is then compiled to create the + bindings extension module. The SIP Python module provides + support functions to the automatically generated code. + + http://www.riverbankcomputing.com/software/sip/intro diff --git a/buildroot/package/python-sip/python-sip.hash b/buildroot/package/python-sip/python-sip.hash new file mode 100644 index 0000000..2f7d430 --- /dev/null +++ b/buildroot/package/python-sip/python-sip.hash @@ -0,0 +1,4 @@ +# From https://sourceforge.net/projects/pyqt/files/sip/sip-4.18/ +md5 78724bf2a79878201c3bc81a1d8248ea sip-4.18.tar.gz +# Locally calculated: +sha256 f1dc5c81c07a9ad97edcd4a0af964a41e420024ba7ca165afd2b351efd249cb6 sip-4.18.tar.gz diff --git a/buildroot/package/python-sip/python-sip.mk b/buildroot/package/python-sip/python-sip.mk new file mode 100644 index 0000000..76d7d04 --- /dev/null +++ b/buildroot/package/python-sip/python-sip.mk @@ -0,0 +1,65 @@ +################################################################################ +# +# python-sip +# +################################################################################ + +PYTHON_SIP_VERSION = 4.18 +PYTHON_SIP_SOURCE = sip-$(PYTHON_SIP_VERSION).tar.gz +PYTHON_SIP_SITE = http://downloads.sourceforge.net/project/pyqt/sip/sip-$(PYTHON_SIP_VERSION) +PYTHON_SIP_LICENSE = SIP license or GPL-2.0 or GPL-3.0 +PYTHON_SIP_LICENSE_FILES = LICENSE LICENSE-GPL2 LICENSE-GPL3 + +ifeq ($(BR2_PACKAGE_QT5),y) +PYTHON_SIP_DEPENDENCIES = qt5base +else +PYTHON_SIP_DEPENDENCIES = qt +endif + +ifeq ($(BR2_PACKAGE_PYTHON),y) +PYTHON_SIP_DEPENDENCIES += python +HOST_PYTHON_SIP_DEPENDENCIES += host-python +PYTHON_SIP_LIB_DIR = usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages +PYTHON_SIP_INCLUDE_DIR = usr/include/python$(PYTHON_VERSION_MAJOR) +else ifeq ($(BR2_PACKAGE_PYTHON3),y) +PYTHON_SIP_DEPENDENCIES += python3 +HOST_PYTHON_SIP_DEPENDENCIES += host-python3 +PYTHON_SIP_LIB_DIR = usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages +PYTHON_SIP_INCLUDE_DIR = usr/include/python$(PYTHON3_VERSION_MAJOR)m +endif + +define HOST_PYTHON_SIP_CONFIGURE_CMDS + (cd $(@D); \ + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(HOST_DIR)/bin/python configure.py) +endef + +define HOST_PYTHON_SIP_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define HOST_PYTHON_SIP_INSTALL_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) install -C $(@D) +endef + +define PYTHON_SIP_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(HOST_DIR)/bin/python configure.py \ + --bindir $(TARGET_DIR)/usr/bin \ + --destdir $(TARGET_DIR)/$(PYTHON_SIP_LIB_DIR) \ + --incdir $(STAGING_DIR)/$(PYTHON_SIP_INCLUDE_DIR) \ + --sipdir $(TARGET_DIR)/usr/share/sip \ + --sysroot $(STAGING_DIR)/usr \ + --use-qmake && \ + $(HOST_DIR)/bin/qmake) +endef + +define PYTHON_SIP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define PYTHON_SIP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) install -C $(@D) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/python-six/Config.in b/buildroot/package/python-six/Config.in new file mode 100644 index 0000000..0a8b69a --- /dev/null +++ b/buildroot/package/python-six/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_SIX + bool "python-six" + help + Six is a Python 2 and 3 compatibility library. It provides + utility functions for smoothing over the differences between + the Python versions with the goal of writing Python code that + is compatible on both Python versions. + + http://pythonhosted.org/six diff --git a/buildroot/package/python-six/Config.in.host b/buildroot/package/python-six/Config.in.host new file mode 100644 index 0000000..1d37e76 --- /dev/null +++ b/buildroot/package/python-six/Config.in.host @@ -0,0 +1,9 @@ +config BR2_PACKAGE_HOST_PYTHON_SIX + bool "host python-six" + help + Six is a Python 2 and 3 compatibility library. It provides + utility functions for smoothing over the differences between + the Python versions with the goal of writing Python code that + is compatible on both Python versions. + + http://pythonhosted.org/six diff --git a/buildroot/package/python-six/python-six.hash b/buildroot/package/python-six/python-six.hash new file mode 100644 index 0000000..f9dbf09 --- /dev/null +++ b/buildroot/package/python-six/python-six.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/six/json, sha256 locally computed +md5 d12789f9baf7e9fb2524c0c64f1773f8 six-1.11.0.tar.gz +sha256 70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9 six-1.11.0.tar.gz +sha256 63478682e84e8c98f4c46308995f1f521a6886976e25421827d2a2be03581328 LICENSE diff --git a/buildroot/package/python-six/python-six.mk b/buildroot/package/python-six/python-six.mk new file mode 100644 index 0000000..cd80634 --- /dev/null +++ b/buildroot/package/python-six/python-six.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-six +# +################################################################################ + +PYTHON_SIX_VERSION = 1.11.0 +PYTHON_SIX_SOURCE = six-$(PYTHON_SIX_VERSION).tar.gz +PYTHON_SIX_SITE = https://pypi.python.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe +PYTHON_SIX_SETUP_TYPE = setuptools +PYTHON_SIX_LICENSE = MIT +PYTHON_SIX_LICENSE_FILES = LICENSE + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-slob/Config.in b/buildroot/package/python-slob/Config.in new file mode 100644 index 0000000..6f83808 --- /dev/null +++ b/buildroot/package/python-slob/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_PYTHON_SLOB + bool "python-slob" + depends on !BR2_BINFMT_FLAT # python-pyicu -> icu + depends on BR2_INSTALL_LIBSTDCPP # python-pyicu -> icu + depends on BR2_HOST_GCC_AT_LEAST_4_8 # python-pyicu -> icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # python-pyicu -> icu + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_PYICU # runtime + # although optional, it is used as default compression + select BR2_PACKAGE_PYTHON3_XZ # runtime + help + slob.py is a reference implementation of slob format reader + and writer. + + https://github.com/itkach/slob + +comment "python-slob needs a toolchain w/ C++, gcc >= 4.8, host gcc >= 4.8" + depends on BR2_PACKAGE_PYTHON3 && !BR2_BINFMT_FLAT + depends on !BR2_INSTALL_LIBSTDCPP || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/buildroot/package/python-slob/python-slob.hash b/buildroot/package/python-slob/python-slob.hash new file mode 100644 index 0000000..39d5d81 --- /dev/null +++ b/buildroot/package/python-slob/python-slob.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 18eb4f45d09d49b1f776cac52ea70ab951566c60cd30bbec39e88f10908fd8ff python-slob-31ad0e769360a5b10a4893f686587bb8e48c3895.tar.gz diff --git a/buildroot/package/python-slob/python-slob.mk b/buildroot/package/python-slob/python-slob.mk new file mode 100644 index 0000000..2db3932 --- /dev/null +++ b/buildroot/package/python-slob/python-slob.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-slob +# +################################################################################ + +PYTHON_SLOB_VERSION = 31ad0e769360a5b10a4893f686587bb8e48c3895 +PYTHON_SLOB_SITE = $(call github,itkach,slob,$(PYTHON_SLOB_VERSION)) +PYTHON_SLOB_LICENSE = GPL-3.0 +PYTHON_SLOB_LICENSE_FILES = LICENSE +PYTHON_SLOB_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-smbus-cffi/Config.in b/buildroot/package/python-smbus-cffi/Config.in new file mode 100644 index 0000000..32f005c --- /dev/null +++ b/buildroot/package/python-smbus-cffi/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_SMBUS_CFFI + bool "python-smbus-cffi" + select BR2_PACKAGE_PYTHON_CFFI + help + This Python module allows SMBus access through the I2C /dev + interface on Linux hosts. The host kernel must have I2C + support, I2C device interface support, and a bus adapter + driver. + + https://github.com/bivab/smbus-cffi diff --git a/buildroot/package/python-smbus-cffi/python-smbus-cffi.hash b/buildroot/package/python-smbus-cffi/python-smbus-cffi.hash new file mode 100644 index 0000000..1e28df9 --- /dev/null +++ b/buildroot/package/python-smbus-cffi/python-smbus-cffi.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=f621c871bd658ee665751ad78e3b2df9, sha256 locally computed +md5 f621c871bd658ee665751ad78e3b2df9 smbus-cffi-0.5.1.tar.gz +sha256 fb4195aaabfc01586863f60d3190b5cb1bf8f12622fd597e23e48768dad6bde8 smbus-cffi-0.5.1.tar.gz diff --git a/buildroot/package/python-smbus-cffi/python-smbus-cffi.mk b/buildroot/package/python-smbus-cffi/python-smbus-cffi.mk new file mode 100644 index 0000000..bc5731d --- /dev/null +++ b/buildroot/package/python-smbus-cffi/python-smbus-cffi.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-smbus-cffi +# +################################################################################ + +PYTHON_SMBUS_CFFI_VERSION = 0.5.1 +PYTHON_SMBUS_CFFI_SOURCE = smbus-cffi-$(PYTHON_SMBUS_CFFI_VERSION).tar.gz +PYTHON_SMBUS_CFFI_SITE = https://pypi.python.org/packages/source/s/smbus-cffi +PYTHON_SMBUS_CFFI_SETUP_TYPE = setuptools +PYTHON_SMBUS_CFFI_LICENSE = GPL-2.0 +PYTHON_SMBUS_CFFI_LICENSE_FILES = LICENSE +PYTHON_SMBUS_CFFI_DEPENDENCIES = host-python-cffi + +$(eval $(python-package)) diff --git a/buildroot/package/python-socketio/Config.in b/buildroot/package/python-socketio/Config.in new file mode 100644 index 0000000..af0f6f3 --- /dev/null +++ b/buildroot/package/python-socketio/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_SOCKETIO + bool "python-socketio" + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_ENGINEIO # runtime + help + Socket.IO server. + + http://github.com/miguelgrinberg/python-socketio/ diff --git a/buildroot/package/python-socketio/python-socketio.hash b/buildroot/package/python-socketio/python-socketio.hash new file mode 100644 index 0000000..659d4d5 --- /dev/null +++ b/buildroot/package/python-socketio/python-socketio.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/python-socketio/json +md5 44fd24e839dc3102920765f345740646 python-socketio-1.4.1.tar.gz +# sha256 calculated by scanpypi +sha256 ebd0984d831d602c8ec6d586ecde4466972cc7ed37dbbfe613192864e8263779 python-socketio-1.4.1.tar.gz diff --git a/buildroot/package/python-socketio/python-socketio.mk b/buildroot/package/python-socketio/python-socketio.mk new file mode 100644 index 0000000..57dc1f8 --- /dev/null +++ b/buildroot/package/python-socketio/python-socketio.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-socketio +# +################################################################################ + +PYTHON_SOCKETIO_VERSION = 1.4.1 +PYTHON_SOCKETIO_SITE = https://pypi.python.org/packages/da/00/66103df6a116a2ce3ea662a9c8c80f337d43d7f138caf04e9af6dec24ba7 +PYTHON_SOCKETIO_SETUP_TYPE = setuptools +PYTHON_SOCKETIO_LICENSE = MIT +PYTHON_SOCKETIO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-sortedcontainers/Config.in b/buildroot/package/python-sortedcontainers/Config.in new file mode 100644 index 0000000..43bd1b1 --- /dev/null +++ b/buildroot/package/python-sortedcontainers/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SORTEDCONTAINERS + bool "python-sortedcontainers" + help + Python Sorted Container Types: SortedList, SortedDict, and + SortedSet. + + http://www.grantjenks.com/docs/sortedcontainers/ diff --git a/buildroot/package/python-sortedcontainers/python-sortedcontainers.hash b/buildroot/package/python-sortedcontainers/python-sortedcontainers.hash new file mode 100644 index 0000000..11fa076 --- /dev/null +++ b/buildroot/package/python-sortedcontainers/python-sortedcontainers.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/sortedcontainers/json, sha256 locally computed +md5 ad4f00e377ad934954ac90fcac0b185f sortedcontainers-1.5.7.tar.gz +sha256 0ff0442865e492bc50476b18000fb8400cf2472d14d21a92b27cd7c5184550ea sortedcontainers-1.5.7.tar.gz diff --git a/buildroot/package/python-sortedcontainers/python-sortedcontainers.mk b/buildroot/package/python-sortedcontainers/python-sortedcontainers.mk new file mode 100644 index 0000000..9960681 --- /dev/null +++ b/buildroot/package/python-sortedcontainers/python-sortedcontainers.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sortedcontainers +# +################################################################################ + +PYTHON_SORTEDCONTAINERS_VERSION = 1.5.7 +PYTHON_SORTEDCONTAINERS_SOURCE = sortedcontainers-$(PYTHON_SORTEDCONTAINERS_VERSION).tar.gz +PYTHON_SORTEDCONTAINERS_SITE = https://pypi.python.org/packages/8d/aa/5369362d730728639ba434318df26b5c554804578d1c48381367ea5377c6 +PYTHON_SORTEDCONTAINERS_SETUP_TYPE = setuptools +PYTHON_SORTEDCONTAINERS_LICENSE = Apache-2.0 +PYTHON_SORTEDCONTAINERS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-spidev/Config.in b/buildroot/package/python-spidev/Config.in new file mode 100644 index 0000000..8540d55 --- /dev/null +++ b/buildroot/package/python-spidev/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_SPIDEV + bool "python-spidev" + help + Python module for interfacing with SPI devices from user + space via the spidev linux kernel driver. + + https://pypi.python.org/pypi/spidev diff --git a/buildroot/package/python-spidev/python-spidev.hash b/buildroot/package/python-spidev/python-spidev.hash new file mode 100644 index 0000000..dc08925 --- /dev/null +++ b/buildroot/package/python-spidev/python-spidev.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/spidev/json, sha256 locally computed +md5 f601676f1bb48b9aa3b3897f95216365 spidev-3.2.tar.gz +sha256 09d2b5122f0dd79910713a11f9a0020f71537224bf829916def4fffc0ea59456 spidev-3.2.tar.gz diff --git a/buildroot/package/python-spidev/python-spidev.mk b/buildroot/package/python-spidev/python-spidev.mk new file mode 100644 index 0000000..17fb049 --- /dev/null +++ b/buildroot/package/python-spidev/python-spidev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-spidev +# +################################################################################ + +PYTHON_SPIDEV_VERSION = 3.2 +PYTHON_SPIDEV_SOURCE = spidev-$(PYTHON_SPIDEV_VERSION).tar.gz +PYTHON_SPIDEV_SITE = https://pypi.python.org/packages/36/83/73748b6e1819b57d8e1df8090200195cdae33aaa22a49a91ded16785eedd +PYTHON_SPIDEV_SETUP_TYPE = distutils +PYTHON_SPIDEV_LICENSE = GPL-2.0 +PYTHON_SPIDEV_LICENSE_FILES = LICENSE.md + +$(eval $(python-package)) diff --git a/buildroot/package/python-systemd/Config.in b/buildroot/package/python-systemd/Config.in new file mode 100644 index 0000000..599b43f --- /dev/null +++ b/buildroot/package/python-systemd/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_SYSTEMD + bool "python-systemd" + depends on BR2_PACKAGE_SYSTEMD + help + Python module for native access to the systemd facilities. + + https://github.com/systemd/python-systemd + +comment "python-systemd needs systemd" + depends on !BR2_PACKAGE_SYSTEMD diff --git a/buildroot/package/python-systemd/python-systemd.hash b/buildroot/package/python-systemd/python-systemd.hash new file mode 100644 index 0000000..ae480b8 --- /dev/null +++ b/buildroot/package/python-systemd/python-systemd.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/systemd-python/, sha256 locally computed +md5 5071ea5bcb976186e92a3f5e75df221d systemd-python-234.tar.gz +sha256 fd0e44bf70eadae45aadc292cb0a7eb5b0b6372cd1b391228047d33895db83e7 systemd-python-234.tar.gz diff --git a/buildroot/package/python-systemd/python-systemd.mk b/buildroot/package/python-systemd/python-systemd.mk new file mode 100644 index 0000000..3ccfd57 --- /dev/null +++ b/buildroot/package/python-systemd/python-systemd.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-systemd +# +################################################################################ + +PYTHON_SYSTEMD_VERSION = 234 # Should be kept in sync with $(SYSTEMD_VERSION) +PYTHON_SYSTEMD_SOURCE = systemd-python-$(PYTHON_SYSTEMD_VERSION).tar.gz +PYTHON_SYSTEMD_SITE = https://pypi.python.org/packages/e8/a8/00ba0f605837a8f69523e6c3a4fb14675a6430c163f836540129c50b3aef +PYTHON_SYSTEMD_SETUP_TYPE = distutils +PYTHON_SYSTEMD_LICENSE = LGPL-2.1 +PYTHON_SYSTEMD_LICENSE_FILES = LICENSE.txt +PYTHON_SYSTEMD_DEPENDENCIES = systemd # To be able to link against libsystemd + +$(eval $(python-package)) diff --git a/buildroot/package/python-tabledata/Config.in b/buildroot/package/python-tabledata/Config.in new file mode 100644 index 0000000..9e8ca9c --- /dev/null +++ b/buildroot/package/python-tabledata/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_TABLEDATA + bool "python-tabledata" + select BR2_PACKAGE_PYTHON_DATAPROPERTY # runtime + select BR2_PACKAGE_PYTHON_LOGBOOK # runtime + select BR2_PACKAGE_PYTHON_PATHVALIDATE # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + select BR2_PACKAGE_PYTHON_TYPEPY # runtime + help + A Python library to represent tabular data for + pytablewriter/pytablereader/SimpleSQLite. + + https://github.com/thombashi/tabledata diff --git a/buildroot/package/python-tabledata/python-tabledata.hash b/buildroot/package/python-tabledata/python-tabledata.hash new file mode 100644 index 0000000..efc6d6a --- /dev/null +++ b/buildroot/package/python-tabledata/python-tabledata.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/tabledata/json, sha256 locally computed +md5 4ff69d8855a835890944591721d0c129 tabledata-0.0.5.tar.gz +sha256 e16490e4c15f06ee258015431ec247a5b301aec4ebca3297cf6451efb9eb3cfb tabledata-0.0.5.tar.gz +sha256 cbce2ac14dd81b6a1155029034512a304505692cc63b625538916cf93bee8ca2 LICENSE diff --git a/buildroot/package/python-tabledata/python-tabledata.mk b/buildroot/package/python-tabledata/python-tabledata.mk new file mode 100644 index 0000000..1305909 --- /dev/null +++ b/buildroot/package/python-tabledata/python-tabledata.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# python-tabledata +# +################################################################################ + +PYTHON_TABLEDATA_VERSION = 0.0.5 +PYTHON_TABLEDATA_SOURCE = tabledata-$(PYTHON_TABLEDATA_VERSION).tar.gz +PYTHON_TABLEDATA_SITE = https://pypi.python.org/packages/9d/03/2e96d18f2bd4b76611fc6aa3881c7e15c857eea99debea9b80ec689354ba +PYTHON_TABLEDATA_SETUP_TYPE = setuptools +PYTHON_TABLEDATA_LICENSE = MIT +PYTHON_TABLEDATA_LICENSE_FILES = LICENSE + +# remove setup.cfg as it tries to create a wheel file and hence +# breaks the build process +define PYTHON_TABLEDATA_REMOVE_SETUP_CFG + rm $(@D)/setup.cfg +endef +PYTHON_TABLEDATA_POST_EXTRACT_HOOKS = PYTHON_TABLEDATA_REMOVE_SETUP_CFG + +$(eval $(python-package)) diff --git a/buildroot/package/python-tempora/Config.in b/buildroot/package/python-tempora/Config.in new file mode 100644 index 0000000..ab5c57f --- /dev/null +++ b/buildroot/package/python-tempora/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_TEMPORA + bool "python-tempora" + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_PYTZ # runtime + help + Objects and routines pertaining to date and time. + + https://github.com/jaraco/tempora diff --git a/buildroot/package/python-tempora/python-tempora.hash b/buildroot/package/python-tempora/python-tempora.hash new file mode 100644 index 0000000..a8367b9 --- /dev/null +++ b/buildroot/package/python-tempora/python-tempora.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/tempora/json, sha256 locally computed +md5 cd0dd5c51c9645285ff505ec531cbcc8 tempora-1.7.tar.gz +sha256 a264672b7f39198eb90b531490ade4e873f6e13839253636c3bd6a5549be1984 tempora-1.7.tar.gz diff --git a/buildroot/package/python-tempora/python-tempora.mk b/buildroot/package/python-tempora/python-tempora.mk new file mode 100644 index 0000000..0bae36a --- /dev/null +++ b/buildroot/package/python-tempora/python-tempora.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-tempora +# +################################################################################ + +PYTHON_TEMPORA_VERSION = 1.7 +PYTHON_TEMPORA_SOURCE = tempora-$(PYTHON_TEMPORA_VERSION).tar.gz +PYTHON_TEMPORA_SITE = https://pypi.python.org/packages/db/2d/c838e9e553d774962a71b832b2c6390194904bfe49fd0d9d792ce8091e8a +PYTHON_TEMPORA_LICENSE = MIT +PYTHON_TEMPORA_SETUP_TYPE = setuptools +PYTHON_TEMPORA_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/buildroot/package/python-thrift/Config.in b/buildroot/package/python-thrift/Config.in new file mode 100644 index 0000000..20d94d0 --- /dev/null +++ b/buildroot/package/python-thrift/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_THRIFT + bool "python-thrift" + depends on BR2_PACKAGE_PYTHON + help + python-thrift is a Python bindings for the Apache Thrift RPC + system. + + http://thrift.apache.org/ diff --git a/buildroot/package/python-thrift/python-thrift.hash b/buildroot/package/python-thrift/python-thrift.hash new file mode 100644 index 0000000..72269eb --- /dev/null +++ b/buildroot/package/python-thrift/python-thrift.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/thrift/json, sha256 locally computed +md5 b519551d7a086bb0b4f222a8f566b7e8 thrift-0.9.3.tar.gz +sha256 dfbc3d3bd19d396718dab05abaf46d93ae8005e2df798ef02e32793cd963877e thrift-0.9.3.tar.gz diff --git a/buildroot/package/python-thrift/python-thrift.mk b/buildroot/package/python-thrift/python-thrift.mk new file mode 100644 index 0000000..d0e3a14 --- /dev/null +++ b/buildroot/package/python-thrift/python-thrift.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-thrift +# +################################################################################ + +PYTHON_THRIFT_VERSION = 0.9.3 +PYTHON_THRIFT_SOURCE = thrift-$(PYTHON_THRIFT_VERSION).tar.gz +PYTHON_THRIFT_SITE = https://pypi.python.org/packages/ae/58/35e3f0cd290039ff862c2c9d8ae8a76896665d70343d833bdc2f748b8e55 +PYTHON_THRIFT_LICENSE = Apache-2.0 +PYTHON_THRIFT_LICENSE_FILES = setup.py +PYTHON_THRIFT_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-tomako/Config.in b/buildroot/package/python-tomako/Config.in new file mode 100644 index 0000000..bd6d299 --- /dev/null +++ b/buildroot/package/python-tomako/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_TOMAKO + bool "python-tomako" + select BR2_PACKAGE_PYTHON_TORNADO # runtime + select BR2_PACKAGE_PYTHON_MAKO # runtime + help + Tomako is the easiest way to use Mako as a template engine for + Tornado. + + https://github.com/rcmachado/tomako diff --git a/buildroot/package/python-tomako/python-tomako.hash b/buildroot/package/python-tomako/python-tomako.hash new file mode 100644 index 0000000..af07a88 --- /dev/null +++ b/buildroot/package/python-tomako/python-tomako.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/tomako/json, sha256 locally computed +md5 a2e9e99be4ddf2263ed441ddc3dfcf96 tomako-0.1.0.post1.tar.gz +sha256 2d8ec113199408eb16ec00361aac6f10b716925779b6331083f304d01dafd150 tomako-0.1.0.post1.tar.gz diff --git a/buildroot/package/python-tomako/python-tomako.mk b/buildroot/package/python-tomako/python-tomako.mk new file mode 100644 index 0000000..23c0b34 --- /dev/null +++ b/buildroot/package/python-tomako/python-tomako.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-tomako +# +################################################################################ + +PYTHON_TOMAKO_VERSION = 0.1.0.post1 +PYTHON_TOMAKO_SOURCE = tomako-$(PYTHON_TOMAKO_VERSION).tar.gz +PYTHON_TOMAKO_SITE = https://pypi.python.org/packages/30/64/e174248281cb2fa8f5bce955d4bd49b253e622bb540a6001e48dec378a07 +PYTHON_TOMAKO_SETUP_TYPE = setuptools +PYTHON_TOMAKO_LICENSE = MIT +PYTHON_TOMAKO_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-toml/Config.in b/buildroot/package/python-toml/Config.in new file mode 100644 index 0000000..a41622f --- /dev/null +++ b/buildroot/package/python-toml/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_TOML + bool "python-toml" + help + Python Library for Tom's Obvious, Minimal Language. + + https://github.com/uiri/toml diff --git a/buildroot/package/python-toml/python-toml.hash b/buildroot/package/python-toml/python-toml.hash new file mode 100644 index 0000000..20737c3 --- /dev/null +++ b/buildroot/package/python-toml/python-toml.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 633a90ecb1f5665b58f0c94153fcf519313ef53e1de0eac90929cd6b6a014235 python-toml-0.9.3.tar.gz diff --git a/buildroot/package/python-toml/python-toml.mk b/buildroot/package/python-toml/python-toml.mk new file mode 100644 index 0000000..fae15f9 --- /dev/null +++ b/buildroot/package/python-toml/python-toml.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-toml +# +################################################################################ + +PYTHON_TOML_VERSION = 0.9.3 +PYTHON_TOML_SITE = $(call github,uiri,toml,$(PYTHON_TOML_VERSION)) +PYTHON_TOML_SETUP_TYPE = setuptools +PYTHON_TOML_LICENSE = MIT +PYTHON_TOML_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-tornado/Config.in b/buildroot/package/python-tornado/Config.in new file mode 100644 index 0000000..a0ee78f --- /dev/null +++ b/buildroot/package/python-tornado/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_TORNADO + bool "python-tornado" + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_SINGLEDISPATCH if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_BACKPORTS_ABC if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_CERTIFI if BR2_PACKAGE_PYTHON # runtime + help + Tornado is a Python web framework and asynchronous networking + library, originally developed at FriendFeed. + + http://www.tornadoweb.org diff --git a/buildroot/package/python-tornado/python-tornado.hash b/buildroot/package/python-tornado/python-tornado.hash new file mode 100644 index 0000000..662db6f --- /dev/null +++ b/buildroot/package/python-tornado/python-tornado.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/tornado/json, sha256 locally computed +md5 838687d20923360af5ab59f101e9e02e tornado-4.5.1.tar.gz +sha256 db0904a28253cfe53e7dedc765c71596f3c53bb8a866ae50123320ec1a7b73fd tornado-4.5.1.tar.gz diff --git a/buildroot/package/python-tornado/python-tornado.mk b/buildroot/package/python-tornado/python-tornado.mk new file mode 100644 index 0000000..6e61675 --- /dev/null +++ b/buildroot/package/python-tornado/python-tornado.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-tornado +# +################################################################################ + +PYTHON_TORNADO_VERSION = 4.5.1 +PYTHON_TORNADO_SOURCE = tornado-$(PYTHON_TORNADO_VERSION).tar.gz +PYTHON_TORNADO_SITE = https://pypi.python.org/packages/df/42/a180ee540e12e2ec1007ac82a42b09dd92e5461e09c98bf465e98646d187 +PYTHON_TORNADO_LICENSE = Apache-2.0 +PYTHON_TORNADO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-traitlets/Config.in b/buildroot/package/python-traitlets/Config.in new file mode 100644 index 0000000..f1804e5 --- /dev/null +++ b/buildroot/package/python-traitlets/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_TRAITLETS + bool "python-traitlets" + select BR2_PACKAGE_PYTHON_ENUM34 if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_IPYTHON_GENUTILS # runtime + select BR2_PACKAGE_PYTHON_DECORATOR # runtime + help + A configuration system for Python applications. + + https://pypi.python.org/pypi/traitlets diff --git a/buildroot/package/python-traitlets/python-traitlets.hash b/buildroot/package/python-traitlets/python-traitlets.hash new file mode 100644 index 0000000..23aa159 --- /dev/null +++ b/buildroot/package/python-traitlets/python-traitlets.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/traitlets/json, sha256 locally computed +md5 3068663f2f38fd939a9eb3a500ccc154 traitlets-4.3.2.tar.gz +sha256 9c4bd2d267b7153df9152698efb1050a5d84982d3384a37b2c1f7723ba3e7835 traitlets-4.3.2.tar.gz diff --git a/buildroot/package/python-traitlets/python-traitlets.mk b/buildroot/package/python-traitlets/python-traitlets.mk new file mode 100644 index 0000000..779f593 --- /dev/null +++ b/buildroot/package/python-traitlets/python-traitlets.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-traitlets +# +################################################################################ + +PYTHON_TRAITLETS_VERSION = 4.3.2 +PYTHON_TRAITLETS_SOURCE = traitlets-$(PYTHON_TRAITLETS_VERSION).tar.gz +PYTHON_TRAITLETS_SITE = https://pypi.python.org/packages/a5/98/7f5ef2fe9e9e071813aaf9cb91d1a732e0a68b6c44a32b38cb8e14c3f069 +PYTHON_TRAITLETS_LICENSE = BSD-3-Clause +PYTHON_TRAITLETS_LICENSE_FILES = COPYING.md +PYTHON_TRAITLETS_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/python-treq/Config.in b/buildroot/package/python-treq/Config.in new file mode 100644 index 0000000..3a121ea --- /dev/null +++ b/buildroot/package/python-treq/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PYTHON_TREQ + bool "python-treq" + depends on BR2_INSTALL_LIBSTDCPP # python-pyopenssl + select BR2_PACKAGE_PYTHON_ATTRS # runtime + select BR2_PACKAGE_PYTHON_IDNA # runtime + select BR2_PACKAGE_PYTHON_PYOPENSSL # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_SERVICE_IDENTITY # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_TWISTED # runtime + help + treq is an HTTP library inspired by requests but written on + top of Twisted's Agents. It provides a simple, higher level + API for making HTTP requests when using Twisted. + + https://github.com/twisted/treq + +comment "python-treq needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-treq/python-treq.hash b/buildroot/package/python-treq/python-treq.hash new file mode 100644 index 0000000..14f3946 --- /dev/null +++ b/buildroot/package/python-treq/python-treq.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/treq/json, sha256 locally computed +md5 7e1f5079b85ec104d4759fc0fb89071e treq-17.8.0.tar.gz +sha256 ef72d2d5e0b24bdf29267b608fa33df0ac401743af8524438b073e1fb2b66f16 treq-17.8.0.tar.gz +sha256 7cc1b65e1937b1cc07052bb864ec96d8e5fd413400c0842e5b89a8201a600293 LICENSE diff --git a/buildroot/package/python-treq/python-treq.mk b/buildroot/package/python-treq/python-treq.mk new file mode 100644 index 0000000..73c4715 --- /dev/null +++ b/buildroot/package/python-treq/python-treq.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-treq +# +################################################################################ + +PYTHON_TREQ_VERSION = 17.8.0 +PYTHON_TREQ_SOURCE = treq-$(PYTHON_TREQ_VERSION).tar.gz +PYTHON_TREQ_SITE = https://pypi.python.org/packages/11/3e/1014f26bfd4d07db015ad48384446b3bdc4de4bbdd2eba3be7fbb149cc44 +PYTHON_TREQ_LICENSE = MIT +PYTHON_TREQ_LICENSE_FILES = LICENSE +PYTHON_TREQ_SETUP_TYPE = setuptools +PYTHON_TREQ_DEPENDENCIES = host-python-incremental + +$(eval $(python-package)) diff --git a/buildroot/package/python-twisted/Config.in b/buildroot/package/python-twisted/Config.in new file mode 100644 index 0000000..344edb4 --- /dev/null +++ b/buildroot/package/python-twisted/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_TWISTED + bool "python-twisted" + select BR2_PACKAGE_PYTHON_INCREMENTAL + select BR2_PACKAGE_PYTHON_AUTOMAT # runtime + select BR2_PACKAGE_PYTHON_CONSTANTLY # runtime + select BR2_PACKAGE_PYTHON_HYPERLINK # runtime + select BR2_PACKAGE_PYTHON_ZOPE_INTERFACE # runtime + help + Twisted is an event-driven networking engine written in + Python. + + https://twistedmatrix.com/trac/ diff --git a/buildroot/package/python-twisted/python-twisted.hash b/buildroot/package/python-twisted/python-twisted.hash new file mode 100644 index 0000000..c22f336 --- /dev/null +++ b/buildroot/package/python-twisted/python-twisted.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/twisted/json, sha256 locally computed +md5 cd5c287802dcbaf7be15cf937c922b71 Twisted-17.5.0.tar.bz2 +sha256 f198a494f0df2482f7c5f99d7f3eef33d22763ffc76641b36fec476b878002ea Twisted-17.5.0.tar.bz2 diff --git a/buildroot/package/python-twisted/python-twisted.mk b/buildroot/package/python-twisted/python-twisted.mk new file mode 100644 index 0000000..fe276d6 --- /dev/null +++ b/buildroot/package/python-twisted/python-twisted.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-twisted +# +################################################################################ + +PYTHON_TWISTED_VERSION = 17.5.0 +PYTHON_TWISTED_SOURCE = Twisted-$(PYTHON_TWISTED_VERSION).tar.bz2 +PYTHON_TWISTED_SITE = https://pypi.python.org/packages/31/bf/7f86a8f8b9778e90d8b2921e9f442a8c8aa33fd2489fc10f236bc8af1749 +PYTHON_TWISTED_SETUP_TYPE = setuptools +PYTHON_TWISTED_LICENSE = MIT +PYTHON_TWISTED_LICENSE_FILES = LICENSE +PYTHON_TWISTED_DEPENDENCIES = python-incremental host-python-incremental + +$(eval $(python-package)) diff --git a/buildroot/package/python-txaio/Config.in b/buildroot/package/python-txaio/Config.in new file mode 100644 index 0000000..9d42382 --- /dev/null +++ b/buildroot/package/python-txaio/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_TXAIO + bool "python-txaio" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Compatibility API between asyncio/Twisted/Trollius. + + https://pypi.python.org/pypi/txaio diff --git a/buildroot/package/python-txaio/python-txaio.hash b/buildroot/package/python-txaio/python-txaio.hash new file mode 100644 index 0000000..6fb8e78 --- /dev/null +++ b/buildroot/package/python-txaio/python-txaio.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/txaio/json, sha256 locally computed +md5 a20e3431c95896a49fa3ffa84f77cde1 txaio-2.8.2.tar.gz +sha256 484cd6c4cdd3f6081b87188f3b2b9a36e02fba6816e8256917c4f6571b567571 txaio-2.8.2.tar.gz +sha256 0387eefce570453daaa60633f28676003731eeca28b2d0a0071c628e3a0004ef LICENSE diff --git a/buildroot/package/python-txaio/python-txaio.mk b/buildroot/package/python-txaio/python-txaio.mk new file mode 100644 index 0000000..5e4d710 --- /dev/null +++ b/buildroot/package/python-txaio/python-txaio.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-txaio +# +################################################################################ + +PYTHON_TXAIO_VERSION = 2.8.2 +PYTHON_TXAIO_SOURCE = txaio-$(PYTHON_TXAIO_VERSION).tar.gz +PYTHON_TXAIO_SITE = https://pypi.python.org/packages/d6/95/d0c67304515f352342bc8fd14e5a3e7ca924134608acb730916073b18464 +PYTHON_TXAIO_LICENSE = MIT +PYTHON_TXAIO_LICENSE_FILES = LICENSE +PYTHON_TXAIO_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-txtorcon/Config.in b/buildroot/package/python-txtorcon/Config.in new file mode 100644 index 0000000..4f91e7b --- /dev/null +++ b/buildroot/package/python-txtorcon/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_PYTHON_TXTORCON + bool "python-txtorcon" + depends on BR2_INSTALL_LIBSTDCPP # python-pyopenssl, python-service-identity + select BR2_PACKAGE_PYTHON_AUTOMAT # runtime + select BR2_PACKAGE_PYTHON_IDNA # runtime + select BR2_PACKAGE_PYTHON_INCREMENTAL # runtime + select BR2_PACKAGE_PYTHON_IPADDRESS if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_PYOPENSSL # runtime + select BR2_PACKAGE_PYTHON_SERVICE_IDENTITY # runtime + select BR2_PACKAGE_PYTHON_TWISTED # runtime + select BR2_PACKAGE_PYTHON_ZOPE_INTERFACE # runtime + help + Twisted-based Tor controller client, with state-tracking and + configuration abstractions. + + https://github.com/meejah/txtorcon + +comment "python-txtorcon needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/python-txtorcon/python-txtorcon.hash b/buildroot/package/python-txtorcon/python-txtorcon.hash new file mode 100644 index 0000000..71a2ec5 --- /dev/null +++ b/buildroot/package/python-txtorcon/python-txtorcon.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/txtorcon/json, sha256 locally computed +md5 4d7380fa7e721c77cac103d971882374 txtorcon-0.19.3.tar.gz +sha256 f73396667909a3c7a98f4dd865edf4ed6a2518ee5a935d92e18b8a479ec244fd txtorcon-0.19.3.tar.gz +sha256 3ada1c32ef38c23d96d7f4e8f4a226c527f51e0202883c7543b06f9cc5228a2b LICENSE diff --git a/buildroot/package/python-txtorcon/python-txtorcon.mk b/buildroot/package/python-txtorcon/python-txtorcon.mk new file mode 100644 index 0000000..f75f504 --- /dev/null +++ b/buildroot/package/python-txtorcon/python-txtorcon.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-txtorcon +# +################################################################################ + +PYTHON_TXTORCON_VERSION = 0.19.3 +PYTHON_TXTORCON_SOURCE = txtorcon-$(PYTHON_TXTORCON_VERSION).tar.gz +PYTHON_TXTORCON_SITE = https://pypi.python.org/packages/05/4b/d2fbfdc08ab83c299f2ad22ba38ea35f71f1c966684f5754e079108a1f64 +PYTHON_TXTORCON_SETUP_TYPE = setuptools +PYTHON_TXTORCON_LICENSE = MIT +PYTHON_TXTORCON_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-typepy/Config.in b/buildroot/package/python-typepy/Config.in new file mode 100644 index 0000000..6079857 --- /dev/null +++ b/buildroot/package/python-typepy/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_TYPEPY + bool "python-typepy" + select BR2_PACKAGE_PYTHON_DATEUTIL # runtime + select BR2_PACKAGE_PYTHON_ENUM34 if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_IPADDRESS if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_MBSTRDECODER # runtime + select BR2_PACKAGE_PYTHON_PYTZ # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + help + A Python library for variable type + checker/validator/converter at a run time. + + https://github.com/thombashi/typepy diff --git a/buildroot/package/python-typepy/python-typepy.hash b/buildroot/package/python-typepy/python-typepy.hash new file mode 100644 index 0000000..9ecac88 --- /dev/null +++ b/buildroot/package/python-typepy/python-typepy.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/typepy/json, sha256 locally computed +md5 b9abd4d661dabe512e95ca69ddb65d55 typepy-0.0.20.tar.gz +sha256 a1a5b9438670d4a5d9f882b7499ea85d06dc384577bb7636cb29d903288bca8c typepy-0.0.20.tar.gz diff --git a/buildroot/package/python-typepy/python-typepy.mk b/buildroot/package/python-typepy/python-typepy.mk new file mode 100644 index 0000000..33d8091 --- /dev/null +++ b/buildroot/package/python-typepy/python-typepy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-typepy +# +################################################################################ + +PYTHON_TYPEPY_VERSION = 0.0.20 +PYTHON_TYPEPY_SOURCE = typepy-$(PYTHON_TYPEPY_VERSION).tar.gz +PYTHON_TYPEPY_SITE = https://pypi.python.org/packages/88/98/c79a19ae571d713fa0b10bc7e0fe611e53c542720b5a9dd2691ca15b3dd8 +PYTHON_TYPEPY_SETUP_TYPE = setuptools +PYTHON_TYPEPY_LICENSE = MIT +PYTHON_TYPEPY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-u-msgpack/Config.in b/buildroot/package/python-u-msgpack/Config.in new file mode 100644 index 0000000..e003164 --- /dev/null +++ b/buildroot/package/python-u-msgpack/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_U_MSGPACK + bool "python-u-msgpack" + help + A portable, lightweight MessagePack serializer and + deserializer written in pure Python. + + https://github.com/vsergeev/u-msgpack-python diff --git a/buildroot/package/python-u-msgpack/python-u-msgpack.hash b/buildroot/package/python-u-msgpack/python-u-msgpack.hash new file mode 100644 index 0000000..12f2be3 --- /dev/null +++ b/buildroot/package/python-u-msgpack/python-u-msgpack.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/u-msgpack-python/json, sha256 locally computed +md5 f5adfb3e19910d8a41e331d3b03aa7c6 u-msgpack-python-2.2.tar.gz +sha256 cdd5a88f2313856a6a9f481f652dab9edd5731059badbb0111280f27249930d7 u-msgpack-python-2.2.tar.gz diff --git a/buildroot/package/python-u-msgpack/python-u-msgpack.mk b/buildroot/package/python-u-msgpack/python-u-msgpack.mk new file mode 100644 index 0000000..89240c3 --- /dev/null +++ b/buildroot/package/python-u-msgpack/python-u-msgpack.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-u-msgpack +# +################################################################################ + +PYTHON_U_MSGPACK_VERSION = 2.2 +PYTHON_U_MSGPACK_SOURCE = u-msgpack-python-$(PYTHON_U_MSGPACK_VERSION).tar.gz +PYTHON_U_MSGPACK_SITE = https://pypi.python.org/packages/66/5b/36fe0fcf290bd39f6ef6c1f5924cf0a9a76b0dc94575975ad7d318619cf9 +PYTHON_U_MSGPACK_SETUP_TYPE = setuptools +PYTHON_U_MSGPACK_LICENSE = MIT +PYTHON_U_MSGPACK_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-ubjson/Config.in b/buildroot/package/python-ubjson/Config.in new file mode 100644 index 0000000..86ed3b2 --- /dev/null +++ b/buildroot/package/python-ubjson/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_UBJSON + bool "python-ubjson" + help + This is a Python v3.2+ (and 2.7+) Universal Binary JSON + encoder/decoder based on the draft-12 specification. + + https://pypi.python.org/pypi/py-ubjson diff --git a/buildroot/package/python-ubjson/python-ubjson.hash b/buildroot/package/python-ubjson/python-ubjson.hash new file mode 100644 index 0000000..30f65fe --- /dev/null +++ b/buildroot/package/python-ubjson/python-ubjson.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/py-ubjson/json, sha256 locally computed +md5 c78bbe899eeba9604302ad746094e8d1 py-ubjson-0.9.0.tar.gz +sha256 b405daaa82acdf5989207e1e5ff6865ef7d23bf450513a6d90a1ab64c75bdcf8 py-ubjson-0.9.0.tar.gz diff --git a/buildroot/package/python-ubjson/python-ubjson.mk b/buildroot/package/python-ubjson/python-ubjson.mk new file mode 100644 index 0000000..a192cfb --- /dev/null +++ b/buildroot/package/python-ubjson/python-ubjson.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ubjson +# +################################################################################ + +PYTHON_UBJSON_VERSION = 0.9.0 +PYTHON_UBJSON_SOURCE = py-ubjson-$(PYTHON_UBJSON_VERSION).tar.gz +PYTHON_UBJSON_SITE = https://pypi.python.org/packages/d4/40/a80006884ec03a54a5c6c53ae76df9978536862f0683b6e6280e3808d289 +PYTHON_UBJSON_LICENSE = Apache-2.0 +PYTHON_UBJSON_LICENSE_FILES = LICENSE +PYTHON_UBJSON_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-ujson/Config.in b/buildroot/package/python-ujson/Config.in new file mode 100644 index 0000000..d185c98 --- /dev/null +++ b/buildroot/package/python-ujson/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_UJSON + bool "python-ujson" + help + UltraJSON is an ultra fast JSON encoder and decoder written + in pure C with bindings for Python 2.5+ and 3. + + https://pypi.python.org/pypi/ujson diff --git a/buildroot/package/python-ujson/python-ujson.hash b/buildroot/package/python-ujson/python-ujson.hash new file mode 100644 index 0000000..2132034 --- /dev/null +++ b/buildroot/package/python-ujson/python-ujson.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=42f77b0cce686dfa4da2e68480b1dd24,sha256 locally computed. +md5 42f77b0cce686dfa4da2e68480b1dd24 ujson-1.35.tar.gz +sha256 f66073e5506e91d204ab0c614a148d5aa938bdbf104751be66f8ad7a222f5f86 ujson-1.35.tar.gz diff --git a/buildroot/package/python-ujson/python-ujson.mk b/buildroot/package/python-ujson/python-ujson.mk new file mode 100644 index 0000000..60a4ecf --- /dev/null +++ b/buildroot/package/python-ujson/python-ujson.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-ujson +# +################################################################################ + +PYTHON_UJSON_VERSION = 1.35 +PYTHON_UJSON_SOURCE = ujson-$(PYTHON_UJSON_VERSION).tar.gz +PYTHON_UJSON_SITE = https://pypi.python.org/packages/source/u/ujson +PYTHON_UJSON_LICENSE = BSD-3-Clause +PYTHON_UJSON_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-urllib3/Config.in b/buildroot/package/python-urllib3/Config.in new file mode 100644 index 0000000..21d3f67 --- /dev/null +++ b/buildroot/package/python-urllib3/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_URLLIB3 + bool "python-urllib3" + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + help + Python HTTP library with thread-safe connection pooling, file + post support, sanity friendly, and more. + + http://urllib3.readthedocs.org/ diff --git a/buildroot/package/python-urllib3/python-urllib3.hash b/buildroot/package/python-urllib3/python-urllib3.hash new file mode 100644 index 0000000..226a826 --- /dev/null +++ b/buildroot/package/python-urllib3/python-urllib3.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/urllib3/json, sha256 locally computed +md5 ef6c72c79b9c6bcd68c204f9b92abc86 urllib3-1.21.1.tar.gz +sha256 b14486978518ca0901a76ba973d7821047409d7f726f22156b24e83fd71382a5 urllib3-1.21.1.tar.gz diff --git a/buildroot/package/python-urllib3/python-urllib3.mk b/buildroot/package/python-urllib3/python-urllib3.mk new file mode 100644 index 0000000..454f75f --- /dev/null +++ b/buildroot/package/python-urllib3/python-urllib3.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-urllib3 +# +################################################################################ + +PYTHON_URLLIB3_VERSION = 1.21.1 +PYTHON_URLLIB3_SOURCE = urllib3-$(PYTHON_URLLIB3_VERSION).tar.gz +PYTHON_URLLIB3_SITE = https://pypi.python.org/packages/96/d9/40e4e515d3e17ed0adbbde1078e8518f8c4e3628496b56eb8f026a02b9e4 +PYTHON_URLLIB3_LICENSE = MIT +PYTHON_URLLIB3_LICENSE_FILES = LICENSE.txt +PYTHON_URLLIB3_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-urwid/Config.in b/buildroot/package/python-urwid/Config.in new file mode 100644 index 0000000..f584a92 --- /dev/null +++ b/buildroot/package/python-urwid/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_URWID + bool "python-urwid" + help + Urwid is a console user interface library for Python + + http://urwid.org/ diff --git a/buildroot/package/python-urwid/python-urwid.hash b/buildroot/package/python-urwid/python-urwid.hash new file mode 100644 index 0000000..c600851 --- /dev/null +++ b/buildroot/package/python-urwid/python-urwid.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/urwid/json, sha256 locally computed +md5 2e1a005cb31368fe21bfeba2d6ad5a5c urwid-1.3.1.tar.gz +sha256 cfcec03e36de25a1073e2e35c2c7b0cc6969b85745715c3a025a31d9786896a1 urwid-1.3.1.tar.gz diff --git a/buildroot/package/python-urwid/python-urwid.mk b/buildroot/package/python-urwid/python-urwid.mk new file mode 100644 index 0000000..4cfee47 --- /dev/null +++ b/buildroot/package/python-urwid/python-urwid.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-urwid +# +################################################################################ + +PYTHON_URWID_VERSION = 1.3.1 +PYTHON_URWID_SOURCE = urwid-$(PYTHON_URWID_VERSION).tar.gz +PYTHON_URWID_SITE = https://pypi.python.org/packages/source/u/urwid +PYTHON_URWID_LICENSE = LGPL-2.1+ +PYTHON_URWID_LICENSE_FILES = COPYING +PYTHON_URWID_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-vcversioner/python-vcversioner.hash b/buildroot/package/python-vcversioner/python-vcversioner.hash new file mode 100644 index 0000000..58573a1 --- /dev/null +++ b/buildroot/package/python-vcversioner/python-vcversioner.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/vcversioner/json, sha256 locally computed +md5 aab6ef5e0cf8614a1b1140ed5b7f107d vcversioner-2.16.0.0.tar.gz +sha256 dae60c17a479781f44a4010701833f1829140b1eeccd258762a74974aa06e19b vcversioner-2.16.0.0.tar.gz diff --git a/buildroot/package/python-vcversioner/python-vcversioner.mk b/buildroot/package/python-vcversioner/python-vcversioner.mk new file mode 100644 index 0000000..e7a62f8 --- /dev/null +++ b/buildroot/package/python-vcversioner/python-vcversioner.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-vcversioner +# +################################################################################ + +PYTHON_VCVERSIONER_VERSION = 2.16.0.0 +PYTHON_VCVERSIONER_SOURCE = vcversioner-$(PYTHON_VCVERSIONER_VERSION).tar.gz +PYTHON_VCVERSIONER_SITE = https://pypi.python.org/packages/c5/cc/33162c0a7b28a4d8c83da07bc2b12cee58c120b4a9e8bba31c41c8d35a16 +PYTHON_VCVERSIONER_SETUP_TYPE = setuptools +PYTHON_VCVERSIONER_LICENSE = ISC + +$(eval $(host-python-package)) diff --git a/buildroot/package/python-versiontools/Config.in b/buildroot/package/python-versiontools/Config.in new file mode 100644 index 0000000..d15de1f --- /dev/null +++ b/buildroot/package/python-versiontools/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_VERSIONTOOLS + bool "python-versiontools" + help + Smart replacement for plain tuple used in __version__. + + https://pypi.python.org/pypi/versiontools diff --git a/buildroot/package/python-versiontools/python-versiontools.hash b/buildroot/package/python-versiontools/python-versiontools.hash new file mode 100644 index 0000000..1067c41 --- /dev/null +++ b/buildroot/package/python-versiontools/python-versiontools.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 a969332887a18a9c98b0df0ea4d4ca75972f24ca94f06fb87d591377e83414f6 versiontools-1.9.1.tar.gz diff --git a/buildroot/package/python-versiontools/python-versiontools.mk b/buildroot/package/python-versiontools/python-versiontools.mk new file mode 100644 index 0000000..b99ddec --- /dev/null +++ b/buildroot/package/python-versiontools/python-versiontools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-versiontools +# +################################################################################ + +PYTHON_VERSIONTOOLS_VERSION = 1.9.1 +PYTHON_VERSIONTOOLS_SOURCE = versiontools-$(PYTHON_VERSIONTOOLS_VERSION).tar.gz +PYTHON_VERSIONTOOLS_SITE = https://pypi.python.org/packages/source/v/versiontools +PYTHON_VERSIONTOOLS_SETUP_TYPE = setuptools +PYTHON_VERSIONTOOLS_LICENSE = LGPL-3.0 + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-watchdog/0001-Add-a-workaround-to-support-uClibc-library.patch b/buildroot/package/python-watchdog/0001-Add-a-workaround-to-support-uClibc-library.patch new file mode 100644 index 0000000..c21e6cd --- /dev/null +++ b/buildroot/package/python-watchdog/0001-Add-a-workaround-to-support-uClibc-library.patch @@ -0,0 +1,43 @@ +From c3b3c4581b25d7e62f5c2ce1484133229d5e657a Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Fri, 16 Feb 2018 13:26:23 +0100 +Subject: [PATCH] Add a workaround to support uClibc library + +uClibc based systems provide only libc.so.0 and libc.so.1 +symlinks. + +So try to find libc.so.0 if neither libc.so nor libc.so.6 +could be found. + +Signed-off-by: Yegor Yefremov +--- + src/watchdog/observers/inotify_c.py | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/watchdog/observers/inotify_c.py b/src/watchdog/observers/inotify_c.py +index 5f208b6..0dc7b50 100644 +--- a/src/watchdog/observers/inotify_c.py ++++ b/src/watchdog/observers/inotify_c.py +@@ -45,7 +45,19 @@ def _load_libc(): + try: + return ctypes.CDLL('libc.so') + except (OSError, IOError): ++ pass ++ ++ try: + return ctypes.CDLL('libc.so.6') ++ except (OSError, IOError): ++ pass ++ ++ # uClibc ++ try: ++ return ctypes.CDLL('libc.so.0') ++ except (OSError, IOError) as err: ++ raise err ++ + + libc = _load_libc() + +-- +2.1.4 + diff --git a/buildroot/package/python-watchdog/Config.in b/buildroot/package/python-watchdog/Config.in new file mode 100644 index 0000000..18f569e --- /dev/null +++ b/buildroot/package/python-watchdog/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_WATCHDOG + bool "python-watchdog" + select BR2_PACKAGE_PYTHON_ARGH # runtime + select BR2_PACKAGE_PYTHON_PATHTOOLS # runtime + select BR2_PACKAGE_PYTHON_PYYAML # runtime + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + Python API and shell utilities to monitor file system events. + + http://github.com/gorakhargosh/watchdog diff --git a/buildroot/package/python-watchdog/python-watchdog.hash b/buildroot/package/python-watchdog/python-watchdog.hash new file mode 100644 index 0000000..9da2b37 --- /dev/null +++ b/buildroot/package/python-watchdog/python-watchdog.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/watchdog/json +md5 bb16926bccc98eae2a04535e4512ddf1 watchdog-0.8.3.tar.gz +# sha256 calculated by scanpypi +sha256 7e65882adb7746039b6f3876ee174952f8eaaa34491ba34333ddf1fe35de4162 watchdog-0.8.3.tar.gz diff --git a/buildroot/package/python-watchdog/python-watchdog.mk b/buildroot/package/python-watchdog/python-watchdog.mk new file mode 100644 index 0000000..3dd92e3 --- /dev/null +++ b/buildroot/package/python-watchdog/python-watchdog.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-watchdog +# +################################################################################ + +PYTHON_WATCHDOG_VERSION = 0.8.3 +PYTHON_WATCHDOG_SOURCE = watchdog-$(PYTHON_WATCHDOG_VERSION).tar.gz +PYTHON_WATCHDOG_SITE = https://pypi.python.org/packages/54/7d/c7c0ad1e32b9f132075967fc353a244eb2b375a3d2f5b0ce612fd96e107e +PYTHON_WATCHDOG_SETUP_TYPE = setuptools +PYTHON_WATCHDOG_LICENSE = Apache-2.0 +PYTHON_WATCHDOG_LICENSE_FILES = LICENSE COPYING + +$(eval $(python-package)) diff --git a/buildroot/package/python-wcwidth/Config.in b/buildroot/package/python-wcwidth/Config.in new file mode 100644 index 0000000..c5cc022 --- /dev/null +++ b/buildroot/package/python-wcwidth/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_WCWIDTH + bool "python-wcwidth" + help + This library measures number of Terminal column cells of + wide-character codes. + + https://github.com/jquast/wcwidth diff --git a/buildroot/package/python-wcwidth/python-wcwidth.hash b/buildroot/package/python-wcwidth/python-wcwidth.hash new file mode 100644 index 0000000..a3ab50f --- /dev/null +++ b/buildroot/package/python-wcwidth/python-wcwidth.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/wcwidth/json, sha256 locally computed +md5 b3b6a0a08f0c8a34d1de8cf44150a4ad wcwidth-0.1.7.tar.gz +sha256 3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e wcwidth-0.1.7.tar.gz diff --git a/buildroot/package/python-wcwidth/python-wcwidth.mk b/buildroot/package/python-wcwidth/python-wcwidth.mk new file mode 100644 index 0000000..2dd392a --- /dev/null +++ b/buildroot/package/python-wcwidth/python-wcwidth.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-wcwidth +# +################################################################################ + +PYTHON_WCWIDTH_VERSION = 0.1.7 +PYTHON_WCWIDTH_SOURCE = wcwidth-$(PYTHON_WCWIDTH_VERSION).tar.gz +PYTHON_WCWIDTH_SITE = https://pypi.python.org/packages/55/11/e4a2bb08bb450fdbd42cc709dd40de4ed2c472cf0ccb9e64af22279c5495 +PYTHON_WCWIDTH_SETUP_TYPE = setuptools +PYTHON_WCWIDTH_LICENSE = MIT +PYTHON_WCWIDTH_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-web2py/Config.in b/buildroot/package/python-web2py/Config.in new file mode 100644 index 0000000..bc2e605 --- /dev/null +++ b/buildroot/package/python-web2py/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_PYTHON_WEB2PY + bool "python-web2py" + select BR2_PACKAGE_PYTHON_PYDAL + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_SQLITE if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SQLITE if BR2_PACKAGE_PYTHON3 # runtime + help + web2py is a free open source full-stack framework for rapid + development of fast, scalable, secure and portable + database-driven web-based applications. + + http://web2py.com + +if BR2_PACKAGE_PYTHON_WEB2PY + +config BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN + bool "install admin panel application" + default y + help + This option install web2py admin panel application. + It can be removed to save space on embedded systems. + +if BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN + +config BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD + string "admin panel password" + default web2py + help + Set the admin panel password. + +endif + +endif diff --git a/buildroot/package/python-web2py/S51web2py b/buildroot/package/python-web2py/S51web2py new file mode 100644 index 0000000..8d229e1 --- /dev/null +++ b/buildroot/package/python-web2py/S51web2py @@ -0,0 +1,25 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting web2py: " + start-stop-daemon -S -q -m -p /run/web2py.pid \ + -c www-data \ + -b -x /var/www/web2py/web2py.py \ + -- --nogui -a '""' -i 0.0.0.0 -p 8000 + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping web2py: " + start-stop-daemon -K -q -p /run/web2py.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + "$0" stop + sleep 1 + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + ;; +esac diff --git a/buildroot/package/python-web2py/python-web2py.hash b/buildroot/package/python-web2py/python-web2py.hash new file mode 100644 index 0000000..adc7bc5 --- /dev/null +++ b/buildroot/package/python-web2py/python-web2py.hash @@ -0,0 +1,2 @@ +# sha256 locally computed +sha256 e432e051ebb826b77835bda03ddb16364b37d137b37ac33005b6ac0fd5d56280 python-web2py-R-2.15.4.tar.gz diff --git a/buildroot/package/python-web2py/python-web2py.mk b/buildroot/package/python-web2py/python-web2py.mk new file mode 100644 index 0000000..9ad5a77 --- /dev/null +++ b/buildroot/package/python-web2py/python-web2py.mk @@ -0,0 +1,77 @@ +################################################################################ +# +# python-web2py +# +################################################################################ + +PYTHON_WEB2PY_VERSION = R-2.15.4 +PYTHON_WEB2PY_SITE = $(call github,web2py,web2py,$(PYTHON_WEB2PY_VERSION)) +PYTHON_WEB2PY_LICENSE = LGPL-3.0 +PYTHON_WEB2PY_LICENSE_FILES = LICENSE +PYTHON_WEB2PY_DEPENDENCIES = $(if $(BR2_PACKAGE_PYTHON3),host-python3 python3,host-python python) \ + python-pydal host-python-pydal + +PYTHON_WEB2PY_EXCLUSIONS = \ + welcome.w2p \ + applications/examples \ + applications/welcome \ + deposit \ + docs \ + examples \ + extras \ + handlers \ + scripts \ + ABOUT \ + anyserver.py \ + CHANGELOG \ + Makefile \ + MANIFEST.in \ + README.markdown \ + setup.py \ + tox.ini + +define PYTHON_WEB2PY_GENERATE_PASSWORD + $(HOST_DIR)/bin/python -c 'import os; \ + os.chdir("$(@D)"); \ + from gluon.main import save_password; \ + save_password($(BR2_PACKAGE_PYTHON_WEB2PY_PASSWORD),8000)' +endef + +ifeq ($(BR2_PACKAGE_PYTHON_WEB2PY_INSTALL_ADMIN),y) +PYTHON_WEB2PY_POST_BUILD_HOOKS += PYTHON_WEB2PY_GENERATE_PASSWORD +else +PYTHON_WEB2PY_EXCLUSIONS += applications/admin +endif + +define PYTHON_WEB2PY_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/var/www/web2py + rsync -a $(@D)/ $(TARGET_DIR)/var/www/web2py/ \ + $(addprefix --exclude=,$(PYTHON_WEB2PY_EXCLUSIONS)) +endef + +define PYTHON_WEB2PY_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/python-web2py/S51web2py \ + $(TARGET_DIR)/etc/init.d/S51web2py +endef + +define PYTHON_WEB2PY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/python-web2py/web2py.service \ + $(TARGET_DIR)/usr/lib/systemd/system/web2py.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib//systemd/system/web2py.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/web2py.service +endef + +# www-data user and group are used for web2py. Because these user and group +# are already set by buildroot, it is not necessary to redefine them. +# See system/skeleton/etc/passwd +# username: www-data uid: 33 +# groupname: www-data gid: 33 +# +# So, we just need to create the directories used by web2py with the right +# ownership. +define PYTHON_WEB2PY_PERMISSIONS + /var/www/web2py r 750 33 33 - - - - - +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/python-web2py/web2py.service b/buildroot/package/python-web2py/web2py.service new file mode 100644 index 0000000..0274bd8 --- /dev/null +++ b/buildroot/package/python-web2py/web2py.service @@ -0,0 +1,11 @@ +[Unit] +Description=Web2py daemon +After=network.target + +[Service] +Type=simple +ExecStart=/var/www/web2py/web2py.py --nogui -a '' -i 0.0.0.0 -p 8000 +User=www-data + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/python-webpy/Config.in b/buildroot/package/python-webpy/Config.in new file mode 100644 index 0000000..5f4df78 --- /dev/null +++ b/buildroot/package/python-webpy/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_WEBPY + bool "python-webpy" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_HASHLIB + help + web.py is a web framework for Python that is as simple as it + is powerful. + + http://webpy.org/ diff --git a/buildroot/package/python-webpy/python-webpy.hash b/buildroot/package/python-webpy/python-webpy.hash new file mode 100644 index 0000000..70981e0 --- /dev/null +++ b/buildroot/package/python-webpy/python-webpy.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 f074241a0b839408a0b9840ade1198e16fbd6aa6393a48a0e84f73b545baab9a python-webpy-webpy-0.39.tar.gz +sha256 3826fd531a9b904841f5e3560fcda7e93f2ab8d11ef124ec65e10625efa26c34 LICENSE.txt +sha256 7347fd17bfd33c4093c31dc77076733e1e0150ce8c13296c56dc042bbecede84 web/wsgiserver/LICENSE.txt diff --git a/buildroot/package/python-webpy/python-webpy.mk b/buildroot/package/python-webpy/python-webpy.mk new file mode 100644 index 0000000..192ba57 --- /dev/null +++ b/buildroot/package/python-webpy/python-webpy.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-webpy +# +################################################################################ + +PYTHON_WEBPY_VERSION = webpy-0.39 +PYTHON_WEBPY_SITE = $(call github,webpy,webpy,$(PYTHON_WEBPY_VERSION)) +PYTHON_WEBPY_SETUP_TYPE = setuptools +PYTHON_WEBPY_LICENSE = Public Domain, CherryPy License +PYTHON_WEBPY_LICENSE_FILES = LICENSE.txt web/wsgiserver/LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-websockets/0001-Fix-behavior-of-recv-in-the-CLOSING-state.patch b/buildroot/package/python-websockets/0001-Fix-behavior-of-recv-in-the-CLOSING-state.patch new file mode 100644 index 0000000..cb97b36 --- /dev/null +++ b/buildroot/package/python-websockets/0001-Fix-behavior-of-recv-in-the-CLOSING-state.patch @@ -0,0 +1,261 @@ +From 402059e4a46a764632eba8a669f5b012f173ee7b Mon Sep 17 00:00:00 2001 +From: Aymeric Augustin +Date: Tue, 1 May 2018 17:05:05 +0200 +Subject: [PATCH] Fix behavior of recv() in the CLOSING state. + +The behavior wasn't tested correctly: in some test cases, the connection +had already moved to the CLOSED state, where the close code and reason +are already known. + +Refactor half_close_connection_{local,remote} to allow multiple runs of +the event loop while remaining in the CLOSING state. Refactor affected +tests accordingly. + +I verified that all tests in the CLOSING state were behaving is intended +by inserting debug statements in recv/send/ping/pong and running: + +$ PYTHONASYNCIODEBUG=1 python -m unittest -v websockets.test_protocol.{Client,Server}Tests.test_{recv,send,ping,pong}_on_closing_connection_{local,remote} + +Fix #317, #327, #350, #357. + +Signed-off-by: Joseph Kogut +--- + websockets/protocol.py | 10 ++--- + websockets/test_protocol.py | 78 +++++++++++++++++++++++++++++-------- + 2 files changed, 66 insertions(+), 22 deletions(-) + +diff --git a/websockets/protocol.py b/websockets/protocol.py +index f8121a1..7583fe9 100644 +--- a/websockets/protocol.py ++++ b/websockets/protocol.py +@@ -303,7 +303,7 @@ class WebSocketCommonProtocol(asyncio.StreamReaderProtocol): + # Don't yield from self.ensure_open() here because messages could be + # received before the closing frame even if the connection is closing. + +- # Wait for a message until the connection is closed ++ # Wait for a message until the connection is closed. + next_message = asyncio_ensure_future( + self.messages.get(), loop=self.loop) + try: +@@ -315,15 +315,15 @@ class WebSocketCommonProtocol(asyncio.StreamReaderProtocol): + next_message.cancel() + raise + +- # Now there's no need to yield from self.ensure_open(). Either a +- # message was received or the connection was closed. +- + if next_message in done: + return next_message.result() + else: + next_message.cancel() + if not self.legacy_recv: +- raise ConnectionClosed(self.close_code, self.close_reason) ++ assert self.state in [State.CLOSING, State.CLOSED] ++ # Wait until the connection is closed to raise ++ # ConnectionClosed with the correct code and reason. ++ yield from self.ensure_open() + + @asyncio.coroutine + def send(self, data): +diff --git a/websockets/test_protocol.py b/websockets/test_protocol.py +index 70348fb..bfd4e3b 100644 +--- a/websockets/test_protocol.py ++++ b/websockets/test_protocol.py +@@ -105,7 +105,7 @@ class CommonTests: + self.loop.call_soon(self.loop.stop) + self.loop.run_forever() + +- def make_drain_slow(self, delay=3 * MS): ++ def make_drain_slow(self, delay=MS): + # Process connection_made in order to initialize self.protocol.writer. + self.run_loop_once() + +@@ -174,6 +174,8 @@ class CommonTests: + # Empty the outgoing data stream so we can make assertions later on. + self.assertOneFrameSent(True, OP_CLOSE, close_frame_data) + ++ assert self.protocol.state is State.CLOSED ++ + def half_close_connection_local(self, code=1000, reason='close'): + """ + Start a closing handshake but do not complete it. +@@ -181,31 +183,56 @@ class CommonTests: + The main difference with `close_connection` is that the connection is + left in the CLOSING state until the event loop runs again. + ++ The current implementation returns a task that must be awaited or ++ cancelled, else asyncio complains about destroying a pending task. ++ + """ + close_frame_data = serialize_close(code, reason) +- # Trigger the closing handshake from the local side. +- self.ensure_future(self.protocol.close(code, reason)) ++ # Trigger the closing handshake from the local endpoint. ++ close_task = self.ensure_future(self.protocol.close(code, reason)) + self.run_loop_once() # wait_for executes + self.run_loop_once() # write_frame executes + # Empty the outgoing data stream so we can make assertions later on. + self.assertOneFrameSent(True, OP_CLOSE, close_frame_data) +- # Prepare the response to the closing handshake from the remote side. +- self.loop.call_soon( +- self.receive_frame, Frame(True, OP_CLOSE, close_frame_data)) +- self.loop.call_soon(self.receive_eof_if_client) ++ ++ assert self.protocol.state is State.CLOSING ++ ++ # Complete the closing sequence at 1ms intervals so the test can run ++ # at each point even it goes back to the event loop several times. ++ self.loop.call_later( ++ MS, self.receive_frame, Frame(True, OP_CLOSE, close_frame_data)) ++ self.loop.call_later(2 * MS, self.receive_eof_if_client) ++ ++ # This task must be awaited or cancelled by the caller. ++ return close_task + + def half_close_connection_remote(self, code=1000, reason='close'): + """ +- Receive a closing handshake. ++ Receive a closing handshake but do not complete it. + + The main difference with `close_connection` is that the connection is + left in the CLOSING state until the event loop runs again. + + """ ++ # On the server side, websockets completes the closing handshake and ++ # closes the TCP connection immediately. Yield to the event loop after ++ # sending the close frame to run the test while the connection is in ++ # the CLOSING state. ++ if not self.protocol.is_client: ++ self.make_drain_slow() ++ + close_frame_data = serialize_close(code, reason) +- # Trigger the closing handshake from the remote side. ++ # Trigger the closing handshake from the remote endpoint. + self.receive_frame(Frame(True, OP_CLOSE, close_frame_data)) +- self.receive_eof_if_client() ++ self.run_loop_once() # read_frame executes ++ # Empty the outgoing data stream so we can make assertions later on. ++ self.assertOneFrameSent(True, OP_CLOSE, close_frame_data) ++ ++ assert self.protocol.state is State.CLOSING ++ ++ # Complete the closing sequence at 1ms intervals so the test can run ++ # at each point even it goes back to the event loop several times. ++ self.loop.call_later(2 * MS, self.receive_eof_if_client) + + def process_invalid_frames(self): + """ +@@ -335,11 +362,13 @@ class CommonTests: + self.assertEqual(data, b'tea') + + def test_recv_on_closing_connection_local(self): +- self.half_close_connection_local() ++ close_task = self.half_close_connection_local() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.recv()) + ++ self.loop.run_until_complete(close_task) # cleanup ++ + def test_recv_on_closing_connection_remote(self): + self.half_close_connection_remote() + +@@ -421,24 +450,29 @@ class CommonTests: + self.assertNoFrameSent() + + def test_send_on_closing_connection_local(self): +- self.half_close_connection_local() ++ close_task = self.half_close_connection_local() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.send('foobar')) ++ + self.assertNoFrameSent() + ++ self.loop.run_until_complete(close_task) # cleanup ++ + def test_send_on_closing_connection_remote(self): + self.half_close_connection_remote() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.send('foobar')) +- self.assertOneFrameSent(True, OP_CLOSE, serialize_close(1000, 'close')) ++ ++ self.assertNoFrameSent() + + def test_send_on_closed_connection(self): + self.close_connection() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.send('foobar')) ++ + self.assertNoFrameSent() + + # Test the ping coroutine. +@@ -466,24 +500,29 @@ class CommonTests: + self.assertNoFrameSent() + + def test_ping_on_closing_connection_local(self): +- self.half_close_connection_local() ++ close_task = self.half_close_connection_local() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.ping()) ++ + self.assertNoFrameSent() + ++ self.loop.run_until_complete(close_task) # cleanup ++ + def test_ping_on_closing_connection_remote(self): + self.half_close_connection_remote() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.ping()) +- self.assertOneFrameSent(True, OP_CLOSE, serialize_close(1000, 'close')) ++ ++ self.assertNoFrameSent() + + def test_ping_on_closed_connection(self): + self.close_connection() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.ping()) ++ + self.assertNoFrameSent() + + # Test the pong coroutine. +@@ -506,24 +545,29 @@ class CommonTests: + self.assertNoFrameSent() + + def test_pong_on_closing_connection_local(self): +- self.half_close_connection_local() ++ close_task = self.half_close_connection_local() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.pong()) ++ + self.assertNoFrameSent() + ++ self.loop.run_until_complete(close_task) # cleanup ++ + def test_pong_on_closing_connection_remote(self): + self.half_close_connection_remote() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.pong()) +- self.assertOneFrameSent(True, OP_CLOSE, serialize_close(1000, 'close')) ++ ++ self.assertNoFrameSent() + + def test_pong_on_closed_connection(self): + self.close_connection() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.pong()) ++ + self.assertNoFrameSent() + + # Test the protocol's logic for acknowledging pings with pongs. +-- +2.17.0 + diff --git a/buildroot/package/python-websockets/Config.in b/buildroot/package/python-websockets/Config.in new file mode 100644 index 0000000..7d80161 --- /dev/null +++ b/buildroot/package/python-websockets/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_WEBSOCKETS + bool "python-websockets" + depends on BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON3_ZLIB + select BR2_PACKAGE_PYTHON3_SSL + help + An implementation of the WebSocket Protocol (RFC 6455) + + https://github.com/aaugustin/websockets diff --git a/buildroot/package/python-websockets/python-websockets.hash b/buildroot/package/python-websockets/python-websockets.hash new file mode 100644 index 0000000..18947cc --- /dev/null +++ b/buildroot/package/python-websockets/python-websockets.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/websockets/json, sha256 locally computed +md5 9e8c6b3c70def4146d75fbb0f52bdfc7 websockets-4.0.1.tar.gz +sha256 da4d4fbe059b0453e726d6d993760065d69b823a27efc3040402a6fcfe6a1ed9 websockets-4.0.1.tar.gz +sha256 2cd4d416e432ca7fda2c103b38b852f8d3cb327d70c3db44410b9fe97e6c4d73 LICENSE diff --git a/buildroot/package/python-websockets/python-websockets.mk b/buildroot/package/python-websockets/python-websockets.mk new file mode 100644 index 0000000..7c5cf8c --- /dev/null +++ b/buildroot/package/python-websockets/python-websockets.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-websockets +# +################################################################################ + +PYTHON_WEBSOCKETS_VERSION = 4.0.1 +PYTHON_WEBSOCKETS_SOURCE = websockets-${PYTHON_WEBSOCKETS_VERSION}.tar.gz +PYTHON_WEBSOCKETS_SITE = https://pypi.python.org/packages/b6/12/6194aac840c65253e45a38912e318f9ac548f9ba86d75bdb8fe66841b335 +PYTHON_WEBSOCKETS_SETUP_TYPE = setuptools +PYTHON_WEBSOCKETS_LICENSE = BSD-3-Clause +PYTHON_WEBSOCKETS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-werkzeug/Config.in b/buildroot/package/python-werkzeug/Config.in new file mode 100644 index 0000000..79e9a45 --- /dev/null +++ b/buildroot/package/python-werkzeug/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_WERKZEUG + bool "python-werkzeug" + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + help + Werkzeug is a WSGI utility library for Python. It's widely + used and BSD licensed. + + http://werkzeug.pocoo.org/ diff --git a/buildroot/package/python-werkzeug/python-werkzeug.hash b/buildroot/package/python-werkzeug/python-werkzeug.hash new file mode 100644 index 0000000..4b20750 --- /dev/null +++ b/buildroot/package/python-werkzeug/python-werkzeug.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/Werkzeug/json, sha256 locally computed +md5 e385b2c5a7193cff24c689b31e1124dc Werkzeug-0.12.2.tar.gz +sha256 903a7b87b74635244548b30d30db4c8947fe64c5198f58899ddcd3a13c23bb26 Werkzeug-0.12.2.tar.gz diff --git a/buildroot/package/python-werkzeug/python-werkzeug.mk b/buildroot/package/python-werkzeug/python-werkzeug.mk new file mode 100644 index 0000000..6d478f7 --- /dev/null +++ b/buildroot/package/python-werkzeug/python-werkzeug.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-werkzeug +# +################################################################################ + +PYTHON_WERKZEUG_VERSION = 0.12.2 +PYTHON_WERKZEUG_SOURCE = Werkzeug-$(PYTHON_WERKZEUG_VERSION).tar.gz +PYTHON_WERKZEUG_SITE = https://pypi.python.org/packages/56/41/c095a77eb2dd69bf278dd664a97d3416af04e9ba1a00b8c138f772741d31 +PYTHON_WERKZEUG_SETUP_TYPE = setuptools +PYTHON_WERKZEUG_LICENSE = BSD-3-Clause +PYTHON_WERKZEUG_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-whoosh/Config.in b/buildroot/package/python-whoosh/Config.in new file mode 100644 index 0000000..1128ce6 --- /dev/null +++ b/buildroot/package/python-whoosh/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_WHOOSH + bool "python-whoosh" + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 # runtime + help + Whoosh is a fast, pure-Python full text indexing, search and + spell checking library. + + https://pypi.python.org/pypi/Whoosh/ diff --git a/buildroot/package/python-whoosh/python-whoosh.hash b/buildroot/package/python-whoosh/python-whoosh.hash new file mode 100644 index 0000000..0621a2a --- /dev/null +++ b/buildroot/package/python-whoosh/python-whoosh.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/whoosh/json, sha256 locally computed +md5 c2710105f20b3e29936bd2357383c325 Whoosh-2.7.4.tar.gz +sha256 7ca5633dbfa9e0e0fa400d3151a8a0c4bec53bd2ecedc0a67705b17565c31a83 Whoosh-2.7.4.tar.gz diff --git a/buildroot/package/python-whoosh/python-whoosh.mk b/buildroot/package/python-whoosh/python-whoosh.mk new file mode 100644 index 0000000..a100c44 --- /dev/null +++ b/buildroot/package/python-whoosh/python-whoosh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-whoosh +# +################################################################################ + +PYTHON_WHOOSH_VERSION = 2.7.4 +PYTHON_WHOOSH_SOURCE = Whoosh-$(PYTHON_WHOOSH_VERSION).tar.gz +PYTHON_WHOOSH_SITE = https://pypi.python.org/packages/25/2b/6beed2107b148edc1321da0d489afc4617b9ed317ef7b72d4993cad9b684 +PYTHON_WHOOSH_SETUP_TYPE = setuptools +PYTHON_WHOOSH_LICENSE = BSD-3-Clause +PYTHON_WHOOSH_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-ws4py/Config.in b/buildroot/package/python-ws4py/Config.in new file mode 100644 index 0000000..f4763a8 --- /dev/null +++ b/buildroot/package/python-ws4py/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_WS4PY + bool "python-ws4py" + help + ws4py is a Python package implementing the WebSocket protocol + as defined in RFC 6455. + + https://ws4py.readthedocs.org diff --git a/buildroot/package/python-ws4py/python-ws4py.hash b/buildroot/package/python-ws4py/python-ws4py.hash new file mode 100644 index 0000000..13469cb --- /dev/null +++ b/buildroot/package/python-ws4py/python-ws4py.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/ws4py/json, sha256 locally computed +md5 f0603ae376707a58d205bd87a67758a2 ws4py-0.4.2.tar.gz +sha256 7ac69ce3e6ec6917a5d678b65f0a18e244a4dc670db6414bc0271b3f4911237f ws4py-0.4.2.tar.gz diff --git a/buildroot/package/python-ws4py/python-ws4py.mk b/buildroot/package/python-ws4py/python-ws4py.mk new file mode 100644 index 0000000..ec5b4af --- /dev/null +++ b/buildroot/package/python-ws4py/python-ws4py.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-ws4py +# +################################################################################ + +PYTHON_WS4PY_VERSION = 0.4.2 +PYTHON_WS4PY_SOURCE = ws4py-$(PYTHON_WS4PY_VERSION).tar.gz +PYTHON_WS4PY_SITE = https://pypi.python.org/packages/b8/98/a90f1d96ffcb15dfc220af524ce23e0a5881258dafa197673357ce1683dd +PYTHON_WS4PY_SETUP_TYPE = setuptools +PYTHON_WS4PY_LICENSE = BSD-3-Clause +PYTHON_WS4PY_LICENSE_FILES = ws4py/__init__.py + +$(eval $(python-package)) diff --git a/buildroot/package/python-wsaccel/Config.in b/buildroot/package/python-wsaccel/Config.in new file mode 100644 index 0000000..ee61e8a --- /dev/null +++ b/buildroot/package/python-wsaccel/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_PYTHON_WSACCEL + bool "python-wsaccel" + help + Accelerator for ws4py and AutobahnPython. + + https://pypi.python.org/pypi/wsaccel diff --git a/buildroot/package/python-wsaccel/python-wsaccel.hash b/buildroot/package/python-wsaccel/python-wsaccel.hash new file mode 100644 index 0000000..a02b5a8 --- /dev/null +++ b/buildroot/package/python-wsaccel/python-wsaccel.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi?:action=show_md5&digest=2b4ea3d6847855c0587d37fca9db0557, sha256 locally computed. +md5 2b4ea3d6847855c0587d37fca9db0557 wsaccel-0.6.2.tar.gz +sha256 425706acf0724d2f6bfa391ec37b4ef121d3432c956029de3cea4e101c218e0c wsaccel-0.6.2.tar.gz diff --git a/buildroot/package/python-wsaccel/python-wsaccel.mk b/buildroot/package/python-wsaccel/python-wsaccel.mk new file mode 100644 index 0000000..016ff2d --- /dev/null +++ b/buildroot/package/python-wsaccel/python-wsaccel.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-wsaccel +# +################################################################################ + +PYTHON_WSACCEL_VERSION = 0.6.2 +PYTHON_WSACCEL_SOURCE = wsaccel-$(PYTHON_WSACCEL_VERSION).tar.gz +PYTHON_WSACCEL_SITE = https://pypi.python.org/packages/source/w/wsaccel +PYTHON_WSACCEL_LICENSE = Apache-2.0 +PYTHON_WSACCEL_SETUP_TYPE = setuptools + +$(eval $(python-package)) diff --git a/buildroot/package/python-xlib/Config.in b/buildroot/package/python-xlib/Config.in new file mode 100644 index 0000000..081af6a --- /dev/null +++ b/buildroot/package/python-xlib/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_XLIB + bool "python-xlib" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + XLib in pure Python (Py2/Py3 compatible) + + https://github.com/python-xlib/python-xlib diff --git a/buildroot/package/python-xlib/python-xlib.hash b/buildroot/package/python-xlib/python-xlib.hash new file mode 100644 index 0000000..2c4861a --- /dev/null +++ b/buildroot/package/python-xlib/python-xlib.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/python-xlib/json, sha256 locally computed +md5 cdf342aa145c2be0ccae46cfb7b62551 python-xlib-0.21.tar.bz2 +sha256 25aad0056172920552c01a163e979b02336abaf47b0792dae9c93ecb29500431 python-xlib-0.21.tar.bz2 +sha256 9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9 LICENSE diff --git a/buildroot/package/python-xlib/python-xlib.mk b/buildroot/package/python-xlib/python-xlib.mk new file mode 100644 index 0000000..0ce6e43 --- /dev/null +++ b/buildroot/package/python-xlib/python-xlib.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-xlib +# +################################################################################ + +PYTHON_XLIB_VERSION = 0.21 +PYTHON_XLIB_SOURCE = python-xlib-$(PYTHON_XLIB_VERSION).tar.bz2 +PYTHON_XLIB_SITE = https://pypi.python.org/packages/eb/de/b0eaaea7b8512dc41504db071824eef30293ff55c58d83081ebaebe85a38 +PYTHON_XLIB_SETUP_TYPE = setuptools +PYTHON_XLIB_LICENSE = LGPL-2.1+ +PYTHON_XLIB_LICENSE_FILES = LICENSE +PYTHON_XLIB_DEPENDENCIES = host-python-setuptools-scm + +$(eval $(python-package)) diff --git a/buildroot/package/python-xlrd/Config.in b/buildroot/package/python-xlrd/Config.in new file mode 100644 index 0000000..40920f7 --- /dev/null +++ b/buildroot/package/python-xlrd/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_XLRD + bool "python-xlrd" + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 + help + Library for developers to extract data from Microsoft + Excel(tm) spreadsheet files. + + http://www.python-excel.org/ diff --git a/buildroot/package/python-xlrd/python-xlrd.hash b/buildroot/package/python-xlrd/python-xlrd.hash new file mode 100644 index 0000000..8075605 --- /dev/null +++ b/buildroot/package/python-xlrd/python-xlrd.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/xlrd/json +md5 9a91b688cd4945477ac28187a54f9a3b xlrd-1.0.0.tar.gz +# sha256 calculated by scanpypi +sha256 0ff87dd5d50425084f7219cb6f86bb3eb5aa29063f53d50bf270ed007e941069 xlrd-1.0.0.tar.gz diff --git a/buildroot/package/python-xlrd/python-xlrd.mk b/buildroot/package/python-xlrd/python-xlrd.mk new file mode 100644 index 0000000..e3f078c --- /dev/null +++ b/buildroot/package/python-xlrd/python-xlrd.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xlrd +# +################################################################################ + +PYTHON_XLRD_VERSION = 1.0.0 +PYTHON_XLRD_SOURCE = xlrd-$(PYTHON_XLRD_VERSION).tar.gz +PYTHON_XLRD_SITE = https://pypi.python.org/packages/42/85/25caf967c2d496067489e0bb32df069a8361e1fd96a7e9f35408e56b3aab +PYTHON_XLRD_SETUP_TYPE = setuptools +PYTHON_XLRD_LICENSE = BSD-3-Clause +PYTHON_XLRD_LICENSE_FILES = xlrd/licences.py + +$(eval $(python-package)) diff --git a/buildroot/package/python-xlsxwriter/Config.in b/buildroot/package/python-xlsxwriter/Config.in new file mode 100644 index 0000000..3641bd0 --- /dev/null +++ b/buildroot/package/python-xlsxwriter/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_XLSXWRITER + bool "python-xlsxwriter" + select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_ZLIB if BR2_PACKAGE_PYTHON3 + help + A Python module for creating Excel XLSX files. + + https://github.com/jmcnamara/XlsxWriter diff --git a/buildroot/package/python-xlsxwriter/python-xlsxwriter.hash b/buildroot/package/python-xlsxwriter/python-xlsxwriter.hash new file mode 100644 index 0000000..a7d4401 --- /dev/null +++ b/buildroot/package/python-xlsxwriter/python-xlsxwriter.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/xlsxwriter/json, sha256 locally computed +md5 3c2831e80fae83070f61f0a9226f45ac XlsxWriter-0.9.6.tar.gz +sha256 b51c00a1d6572ba35e8c06e0af8dd14c34977ef0b5022c3d85d5f1de9f1220c3 XlsxWriter-0.9.6.tar.gz diff --git a/buildroot/package/python-xlsxwriter/python-xlsxwriter.mk b/buildroot/package/python-xlsxwriter/python-xlsxwriter.mk new file mode 100644 index 0000000..2c86e5d --- /dev/null +++ b/buildroot/package/python-xlsxwriter/python-xlsxwriter.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xlsxwriter +# +################################################################################ + +PYTHON_XLSXWRITER_VERSION = 0.9.6 +PYTHON_XLSXWRITER_SOURCE = XlsxWriter-$(PYTHON_XLSXWRITER_VERSION).tar.gz +PYTHON_XLSXWRITER_SITE = https://pypi.python.org/packages/c9/e0/c2b2f57bf53c84af3d2a41a82af7025828cb2bc8a312848a6ab7d018de56 +PYTHON_XLSXWRITER_SETUP_TYPE = setuptools +PYTHON_XLSXWRITER_LICENSE = BSD-2-Clause +PYTHON_XLSXWRITER_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-xlutils/Config.in b/buildroot/package/python-xlutils/Config.in new file mode 100644 index 0000000..9c12d76 --- /dev/null +++ b/buildroot/package/python-xlutils/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_XLUTILS + bool "python-xlutils" + select BR2_PACKAGE_PYTHON_XLRD # runtime + select BR2_PACKAGE_PYTHON_XLWT # runtime + help + Utilities for working with Excel files that require both + xlrd and xlwt. + + http://www.python-excel.org diff --git a/buildroot/package/python-xlutils/python-xlutils.hash b/buildroot/package/python-xlutils/python-xlutils.hash new file mode 100644 index 0000000..4f99860 --- /dev/null +++ b/buildroot/package/python-xlutils/python-xlutils.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/xlutils/json +md5 7a6a339ddaacabce244341582ee61353 xlutils-2.0.0.tar.gz +# sha256 calculated by scanpypi +sha256 7e0e2c233bd185fecf5e2bd3f4e9469ca4a3bd87da64c82cfe5b2af27e7f9e54 xlutils-2.0.0.tar.gz diff --git a/buildroot/package/python-xlutils/python-xlutils.mk b/buildroot/package/python-xlutils/python-xlutils.mk new file mode 100644 index 0000000..fc26b3c --- /dev/null +++ b/buildroot/package/python-xlutils/python-xlutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xlutils +# +################################################################################ + +PYTHON_XLUTILS_VERSION = 2.0.0 +PYTHON_XLUTILS_SOURCE = xlutils-$(PYTHON_XLUTILS_VERSION).tar.gz +PYTHON_XLUTILS_SITE = https://pypi.python.org/packages/93/fe/af6d73e4bc7b0ce359d34bebb2e8d4d129763acfecd66a3a7efc587e54c9 +PYTHON_XLUTILS_SETUP_TYPE = setuptools +PYTHON_XLUTILS_LICENSE = MIT +PYTHON_XLUTILS_LICENSE_FILES = xlutils/license.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-xlwt/Config.in b/buildroot/package/python-xlwt/Config.in new file mode 100644 index 0000000..a48ac6f --- /dev/null +++ b/buildroot/package/python-xlwt/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_XLWT + bool "python-xlwt" + help + Library to create spreadsheet files compatible with MS Excel + 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, + 2.7, 3.3+. + + http://www.python-excel.org/ diff --git a/buildroot/package/python-xlwt/python-xlwt.hash b/buildroot/package/python-xlwt/python-xlwt.hash new file mode 100644 index 0000000..4523887 --- /dev/null +++ b/buildroot/package/python-xlwt/python-xlwt.hash @@ -0,0 +1,3 @@ +# md5 from https://pypi.python.org/pypi/xlwt/json, sha256 locally computed +md5 1f2673a93c221f0195f342c578f04968 xlwt-1.2.0.tar.gz +sha256 505669c1eb6a60823fd3e2e723b60eea95f2c56254113bf163091ed2bedb4ac9 xlwt-1.2.0.tar.gz diff --git a/buildroot/package/python-xlwt/python-xlwt.mk b/buildroot/package/python-xlwt/python-xlwt.mk new file mode 100644 index 0000000..f8a298a --- /dev/null +++ b/buildroot/package/python-xlwt/python-xlwt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xlwt +# +################################################################################ + +PYTHON_XLWT_VERSION = 1.2.0 +PYTHON_XLWT_SOURCE = xlwt-$(PYTHON_XLWT_VERSION).tar.gz +PYTHON_XLWT_SITE = https://pypi.python.org/packages/5b/8d/22b9ec552a1d7865de39f54bd15f9db09c72a6bf8ab77b11dcce4ae336bb +PYTHON_XLWT_SETUP_TYPE = setuptools +PYTHON_XLWT_LICENSE = BSD-3-Clause, BSD-4-Clause +PYTHON_XLWT_LICENSE_FILES = docs/licenses.rst + +$(eval $(python-package)) diff --git a/buildroot/package/python-xmltodict/Config.in b/buildroot/package/python-xmltodict/Config.in new file mode 100644 index 0000000..cb12392 --- /dev/null +++ b/buildroot/package/python-xmltodict/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_XMLTODICT + bool "python-xmltodict" + select BR2_PACKAGE_PYTHON_PYEXPAT if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_PYEXPAT if BR2_PACKAGE_PYTHON3 # runtime + help + Makes working with XML feel like you are working with JSON. + + https://github.com/martinblech/xmltodict diff --git a/buildroot/package/python-xmltodict/python-xmltodict.hash b/buildroot/package/python-xmltodict/python-xmltodict.hash new file mode 100644 index 0000000..4cb265e --- /dev/null +++ b/buildroot/package/python-xmltodict/python-xmltodict.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/xmltodict/json, sha256 locally computed +md5 9f955947db085485873ac68154e88069 xmltodict-0.11.0.tar.gz +sha256 8f8d7d40aa28d83f4109a7e8aa86e67a4df202d9538be40c0cb1d70da527b0df xmltodict-0.11.0.tar.gz +sha256 d66d5eb8f83a0ba21d3dd04318b8817588e8764daabea852d1035e3f07ffda55 LICENSE diff --git a/buildroot/package/python-xmltodict/python-xmltodict.mk b/buildroot/package/python-xmltodict/python-xmltodict.mk new file mode 100644 index 0000000..66007df --- /dev/null +++ b/buildroot/package/python-xmltodict/python-xmltodict.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-xmltodict +# +################################################################################ + +PYTHON_XMLTODICT_VERSION = 0.11.0 +PYTHON_XMLTODICT_SOURCE = xmltodict-$(PYTHON_XMLTODICT_VERSION).tar.gz +PYTHON_XMLTODICT_SITE = https://pypi.python.org/packages/57/17/a6acddc5f5993ea6eaf792b2e6c3be55e3e11f3b85206c818572585f61e1 +PYTHON_XMLTODICT_SETUP_TYPE = setuptools +PYTHON_XMLTODICT_LICENSE = MIT +PYTHON_XMLTODICT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-zope-interface/Config.in b/buildroot/package/python-zope-interface/Config.in new file mode 100644 index 0000000..4279aa9 --- /dev/null +++ b/buildroot/package/python-zope-interface/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_PYTHON_ZOPE_INTERFACE + bool "python-zope-interface" + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime + help + This package provides an implementation of "object + interfaces" for Python. Interfaces are a mechanism for + labeling objects as conforming to a given API or + contract. So, this package can be considered as + implementation of the Design By Contract methodology support + in Python. + + http://docs.zope.org/zope.interface/ diff --git a/buildroot/package/python-zope-interface/python-zope-interface.hash b/buildroot/package/python-zope-interface/python-zope-interface.hash new file mode 100644 index 0000000..2aa0733 --- /dev/null +++ b/buildroot/package/python-zope-interface/python-zope-interface.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/zope.interface/json, sha256 locally computed +md5 8700a4f527c1203b34b10c2b4e7a6912 zope.interface-4.4.3.tar.gz +sha256 d6d26d5dfbfd60c65152938fcb82f949e8dada37c041f72916fef6621ba5c5ce zope.interface-4.4.3.tar.gz +sha256 3e671db11df687516cc1db5b3d65e4aa383eaca3c20cea3faf53a0f7335d0a3c LICENSE.txt diff --git a/buildroot/package/python-zope-interface/python-zope-interface.mk b/buildroot/package/python-zope-interface/python-zope-interface.mk new file mode 100644 index 0000000..7dd6812 --- /dev/null +++ b/buildroot/package/python-zope-interface/python-zope-interface.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-zope-interface +# +################################################################################ + +PYTHON_ZOPE_INTERFACE_VERSION = 4.4.3 +PYTHON_ZOPE_INTERFACE_SOURCE = zope.interface-$(PYTHON_ZOPE_INTERFACE_VERSION).tar.gz +PYTHON_ZOPE_INTERFACE_SITE = https://pypi.python.org/packages/bd/d2/25349ed41f9dcff7b3baf87bd88a4c82396cf6e02f1f42bb68657a3132af +PYTHON_ZOPE_INTERFACE_SETUP_TYPE = setuptools +PYTHON_ZOPE_INTERFACE_LICENSE = ZPL-2.1 +PYTHON_ZOPE_INTERFACE_LICENSE_FILES = LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python/0001-setup.py-do-not-add-invalid-header-locations.patch b/buildroot/package/python/0001-setup.py-do-not-add-invalid-header-locations.patch new file mode 100644 index 0000000..3b2c983 --- /dev/null +++ b/buildroot/package/python/0001-setup.py-do-not-add-invalid-header-locations.patch @@ -0,0 +1,42 @@ +From 3dc31a435b67de2ba3dd3457f0c939e20b58e8de Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:17:06 +0100 +Subject: [PATCH] setup.py: do not add invalid header locations + +This piece of code incorrectly adds /usr/include to +self.compiler.include_dirs, and results in the following invalid +compilation line: + +/home/thomas/projets/buildroot/output/host/usr/bin/arm-none-linux-gnueabi-gcc -fPIC \ + -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 \ + -pipe -Os -DNDEBUG -g -O3 -Wall -Wstrict-prototypes \ + -I/usr/include -I. -IInclude -I./Include \ + -I/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/include \ + -I/home/thomas/projets/buildroot/output/build/python-2.7.6/Include \ + -I/home/thomas/projets/buildroot/output/build/python-2.7.6 \ + -c /home/thomas/projets/buildroot/output/build/python-2.7.6/Modules/mathmodule.c \ + -o build/temp.linux2-arm-2.7/home/thomas/projets/buildroot/output/build/python-2.7.6/Modules/mathmodule.o +cc1: warning: include location "/usr/include" is unsafe for cross-compilation [-Wpoison-system-directories] +[...] + +Signed-off-by: Thomas Petazzoni +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 54054c2..64001e2 100644 +--- a/setup.py ++++ b/setup.py +@@ -496,7 +496,7 @@ class PyBuildExt(build_ext): + for directory in reversed(options.dirs): + add_dir_to_list(dir_list, directory) + +- if os.path.normpath(sys.prefix) != '/usr' \ ++ if False and os.path.normpath(sys.prefix) != '/usr' \ + and not sysconfig.get_config_var('PYTHONFRAMEWORK'): + # OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework + # (PYTHONFRAMEWORK is set) to avoid # linking problems when +-- +2.7.4 + diff --git a/buildroot/package/python/0002-Fix-get_python_inc-for-cross-compilation.patch b/buildroot/package/python/0002-Fix-get_python_inc-for-cross-compilation.patch new file mode 100644 index 0000000..b28ef24 --- /dev/null +++ b/buildroot/package/python/0002-Fix-get_python_inc-for-cross-compilation.patch @@ -0,0 +1,46 @@ +From 367ee7d103cf9f670c3925d555edf6f6a5b9d8d5 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:17:25 +0100 +Subject: [PATCH] Fix get_python_inc() for cross-compilation + +When we are cross compiling, doing os.path.dirname(sys.executable) to +get the build directory is incorrect, because we're executing the host +Python to build things for the target. Instead, we should use the +project_base variable. + +This fixes cross-compilation, which was adding incorrect header paths +pointing to the location where the host Python was built: + +/home/thomas/projets/buildroot/output/host/usr/bin/arm-none-linux-gnueabi-gcc -fPIC -fno-strict-aliasing \ + -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -DNDEBUG -g -O3 -Wall -Wstrict-prototypes \ + -I/usr/include -I. -IInclude -I./Include -I/home/thomas/projets/buildroot/output/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/include \ + -I/home/thomas/projets/buildroot/output/host/usr/bin/Include -I/home/thomas/projets/buildroot/output/host/usr/bin \ + -c /home/thomas/projets/buildroot/output/build/python-2.7.6/Modules/_struct.c \ + -o build/temp.linux2-arm-2.7/home/thomas/projets/buildroot/output/build/python-2.7.6/Modules/_struct.o + +This patch allows to fix the +/home/thomas/projets/buildroot/output/host/usr/bin/Include and +/home/thomas/projets/buildroot/output/host/usr/bin paths that are +incorrectly added to the header paths. + +Signed-off-by: Thomas Petazzoni +--- + Lib/distutils/sysconfig.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py +index de7da1d..d72b6e5 100644 +--- a/Lib/distutils/sysconfig.py ++++ b/Lib/distutils/sysconfig.py +@@ -79,7 +79,7 @@ def get_python_inc(plat_specific=0, prefix=None): + + if os.name == "posix": + if python_build: +- buildir = os.path.dirname(sys.executable) ++ buildir = project_base + if plat_specific: + # python.h is located in the buildir + inc_dir = buildir +-- +2.7.4 + diff --git a/buildroot/package/python/0003-Change-the-install-location-of-_sysconfigdata.py.patch b/buildroot/package/python/0003-Change-the-install-location-of-_sysconfigdata.py.patch new file mode 100644 index 0000000..db5bfe1 --- /dev/null +++ b/buildroot/package/python/0003-Change-the-install-location-of-_sysconfigdata.py.patch @@ -0,0 +1,86 @@ +From 0ef0d4ddd3f2261e381f22061a9a451dfbb1dc9e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:17:59 +0100 +Subject: [PATCH] Change the install location of _sysconfigdata.py + +The _sysconfigdata.py module contains definitions that are needed when +building Python modules. In cross-compilation mode, when building +Python extensions for the target, we need to use the _sysconfigdata.py +of the target Python while executing the host Python. + +However until now, the _sysconfigdata.py module was installed in +build/lib.- directory, together with a number of +architecture-specific shared objects, which cannot be used with the +host Python. + +To solve this problem, this patch moves _sysconfigdata.py to a +separate location, build/sysconfigdata.-/, and only +this directory gets added to the PYTHONPATH of the host Python +interpreter when building Python modules for the target. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.pre.in | 12 ++++++++++-- + configure.ac | 2 +- + 2 files changed, 11 insertions(+), 3 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index e288964..5367df7 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -529,6 +529,9 @@ pybuilddir.txt: $(BUILDPYTHON) + rm -f ./pybuilddir.txt ; \ + exit 1 ; \ + fi ++ echo `cat pybuilddir.txt`/sysconfigdata > pysysconfigdatadir.txt ++ mkdir -p `cat pysysconfigdatadir.txt` ++ cp `cat pybuilddir.txt`/_sysconfigdata.py `cat pysysconfigdatadir.txt` + + # This is shared by the math and cmath modules + Modules/_math.o: Modules/_math.c Modules/_math.h +@@ -1080,7 +1083,7 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + else true; \ + fi; \ + done +- @for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py $(srcdir)/Lib/*.doc $(srcdir)/Lib/*.egg-info ; \ ++ @for i in $(srcdir)/Lib/*.py $(srcdir)/Lib/*.doc $(srcdir)/Lib/*.egg-info ; \ + do \ + if test -x $$i; then \ + $(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \ +@@ -1090,6 +1093,11 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + echo $(INSTALL_DATA) $$i $(LIBDEST); \ + fi; \ + done ++ $(INSTALL_DATA) `cat pysysconfigdatadir.txt`/_sysconfigdata.py \ ++ $(DESTDIR)$(LIBDEST) ++ mkdir -p $(DESTDIR)$(LIBDEST)/sysconfigdata ++ $(INSTALL_DATA) `cat pysysconfigdatadir.txt`/_sysconfigdata.py \ ++ $(DESTDIR)$(LIBDEST)/sysconfigdata + @for d in $(LIBSUBDIRS); \ + do \ + a=$(srcdir)/Lib/$$d; \ +@@ -1418,7 +1426,7 @@ distclean: clobber + Modules/Setup Modules/Setup.local Modules/Setup.config \ + Modules/ld_so_aix Modules/python.exp Misc/python.pc + -rm -f python*-gdb.py +- -rm -f pybuilddir.txt ++ -rm -f pybuilddir.txt pysysconfigdatadir.txt + # Issue #28258: set LC_ALL to avoid issues with Estonian locale. + # Expansion is performed here by shell (spawned by make) itself before + # arguments are passed to find. So LC_ALL=C must be set as a separate +diff --git a/configure.ac b/configure.ac +index 1273465..5f89797 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -33,7 +33,7 @@ if test "$cross_compiling" = yes; then + AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found]) + fi + AC_MSG_RESULT($interp) +- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp ++ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pysysconfigdatadir.txt && echo $(abs_builddir)/`cat pysysconfigdatadir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp + fi + # Used to comment out stuff for rebuilding generated files + GENERATED_COMMENT='#' +-- +2.7.4 + diff --git a/buildroot/package/python/0004-Make-the-compilation-of-.pyc-and-.pyo-conditional.patch b/buildroot/package/python/0004-Make-the-compilation-of-.pyc-and-.pyo-conditional.patch new file mode 100644 index 0000000..3bf407d --- /dev/null +++ b/buildroot/package/python/0004-Make-the-compilation-of-.pyc-and-.pyo-conditional.patch @@ -0,0 +1,76 @@ +From 168e6c594e80395583de5ab0d082be119b2061fc Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:18:57 +0100 +Subject: [PATCH] Make the compilation of .pyc and .pyo conditional + +This commit adds --{enable,disable}-{pyc,pyo} options to enable/disable +the compilation of pyc/pyo files. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.pre.in | 8 ++++++++ + configure.ac | 11 +++++++++++ + 2 files changed, 19 insertions(+) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 5367df7..96fc718 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1128,24 +1128,32 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \ + $(DESTDIR)$(LIBDEST)/distutils/tests ; \ + fi ++ifeq (@PYC_BUILD@,yes) + PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST) -f \ + -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ + $(DESTDIR)$(LIBDEST) ++endif ++ifeq (@PYO_BUILD@,yes) + PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST) -f \ + -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ + $(DESTDIR)$(LIBDEST) ++endif ++ifeq (@PYC_BUILD@,yes) + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages ++endif ++ifeq (@PYO_BUILD@,yes) + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages ++endif + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +diff --git a/configure.ac b/configure.ac +index 5f89797..4aafc82 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -759,6 +759,17 @@ SunOS*) + ;; + esac + ++AC_SUBST(PYC_BUILD) ++ ++AC_ARG_ENABLE(pyc-build, ++ AS_HELP_STRING([--disable-pyc-build], [disable build of pyc files]), ++ [ PYC_BUILD="${enableval}" ], [ PYC_BUILD=yes ]) ++ ++AC_SUBST(PYO_BUILD) ++ ++AC_ARG_ENABLE(pyo-build, ++ AS_HELP_STRING([--disable-pyo-build], [disable build of pyo files]), ++ [ PYO_BUILD="${enableval}" ], [ PYO_BUILD=yes ]) + + AC_SUBST(LIBRARY) + AC_MSG_CHECKING(LIBRARY) +-- +2.7.4 + diff --git a/buildroot/package/python/0005-Adjust-getaddrinfo-test-for-cross-compilation.patch b/buildroot/package/python/0005-Adjust-getaddrinfo-test-for-cross-compilation.patch new file mode 100644 index 0000000..e0a24ec --- /dev/null +++ b/buildroot/package/python/0005-Adjust-getaddrinfo-test-for-cross-compilation.patch @@ -0,0 +1,29 @@ +From 2d971c3cdca9ecc55f2da8aba12ca89e1a66519a Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:19:47 +0100 +Subject: [PATCH] Adjust getaddrinfo() test for cross-compilation + +The getaddrinfo() test in configure.ac uses AC_RUN_IFELSE(), which isn't +cross-compilation friendly. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 4aafc82..63e6918 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3527,7 +3527,7 @@ fi + + AC_MSG_RESULT($ac_cv_buggy_getaddrinfo) + +-if test $have_getaddrinfo = no -o "$ac_cv_buggy_getaddrinfo" = yes ++if test $have_getaddrinfo = no || test "$cross_compiling" != "yes" -a "$ac_cv_buggy_getaddrinfo" = yes + then + if test $ipv6 = yes + then +-- +2.7.4 + diff --git a/buildroot/package/python/0006-Add-minimal-infrastructure-to-be-able-to-disable-ext.patch b/buildroot/package/python/0006-Add-minimal-infrastructure-to-be-able-to-disable-ext.patch new file mode 100644 index 0000000..44a8ae2 --- /dev/null +++ b/buildroot/package/python/0006-Add-minimal-infrastructure-to-be-able-to-disable-ext.patch @@ -0,0 +1,79 @@ +From 977de9474c1fb46359ab6a487e153fbd91a2b568 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:21:28 +0100 +Subject: [PATCH] Add minimal infrastructure to be able to disable extensions + +This commit adds some logic to the Python build system to be able to +disable Python extensions. Follow-up commits actually add options to +disable specific extensions. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.pre.in | 6 +++++- + configure.ac | 2 ++ + setup.py | 5 ++++- + 3 files changed, 11 insertions(+), 2 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 96fc718..33b994d 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -161,6 +161,8 @@ FILEMODE= 644 + # configure script arguments + CONFIG_ARGS= @CONFIG_ARGS@ + ++# disabled extensions ++DISABLED_EXTENSIONS= @DISABLED_EXTENSIONS@ + + # Subdirectories with code + SRCDIRS= @SRCDIRS@ +@@ -548,6 +550,7 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o + esac; \ + $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \ + _TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \ ++ DISABLED_EXTENSIONS="$(DISABLED_EXTENSIONS)" \ + $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build + + # Build static library +@@ -1269,7 +1272,8 @@ libainstall: all python-config + # Install the dynamically loadable modules + # This goes into $(exec_prefix) + sharedinstall: sharedmods +- $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \ ++ $(RUNSHARED) DISABLED_EXTENSIONS="$(DISABLED_EXTENSIONS)" \ ++ $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --install-platlib=$(DESTSHARED) \ +diff --git a/configure.ac b/configure.ac +index 63e6918..5d4232f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2462,6 +2462,8 @@ LIBS="$withval $LIBS" + + PKG_PROG_PKG_CONFIG + ++AC_SUBST(DISABLED_EXTENSIONS) ++ + # Check for use of the system expat library + AC_MSG_CHECKING(for --with-system-expat) + AC_ARG_WITH(system_expat, +diff --git a/setup.py b/setup.py +index 64001e2..3b51c0a 100644 +--- a/setup.py ++++ b/setup.py +@@ -33,7 +33,10 @@ host_platform = get_platform() + COMPILED_WITH_PYDEBUG = ('--with-pydebug' in sysconfig.get_config_var("CONFIG_ARGS")) + + # This global variable is used to hold the list of modules to be disabled. +-disabled_module_list = [] ++try: ++ disabled_module_list = sysconfig.get_config_var("DISABLED_EXTENSIONS").split(" ") ++except KeyError: ++ disabled_module_list = list() + + def add_dir_to_list(dirlist, dir): + """Add the directory 'dir' to the list 'dirlist' (at the front) if +-- +2.7.4 + diff --git a/buildroot/package/python/0007-Adjust-library-header-paths-for-cross-compilation.patch b/buildroot/package/python/0007-Adjust-library-header-paths-for-cross-compilation.patch new file mode 100644 index 0000000..c68f1bf --- /dev/null +++ b/buildroot/package/python/0007-Adjust-library-header-paths-for-cross-compilation.patch @@ -0,0 +1,64 @@ +From f3e0a677c4736f95338825a022a884f8dc7a5c14 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:22:19 +0100 +Subject: [PATCH] Adjust library/header paths for cross-compilation + +When cross-compiling third-party extensions, the get_python_inc() or +get_python_lib() can be called, to return the path to headers or +libraries. However, they use the sys.prefix of the host Python, which +returns incorrect paths when cross-compiling (paths pointing to host +headers and libraries). + +In order to fix this, we introduce the _python_sysroot, _python_prefix +and _python_exec_prefix variables, that allow to override these +values, and get correct header/library paths when cross-compiling +third-party Python modules. + +The _python_sysroot variable is also used to prefix the LIBDIR value +taken from the sysconfigdata module. + +Signed-off-by: Thomas Petazzoni +--- + Lib/distutils/command/build_ext.py | 5 ++++- + Lib/distutils/sysconfig.py | 9 +++++++-- + 2 files changed, 11 insertions(+), 3 deletions(-) + +diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py +index 2c68be3..375b08c 100644 +--- a/Lib/distutils/command/build_ext.py ++++ b/Lib/distutils/command/build_ext.py +@@ -240,7 +240,10 @@ class build_ext (Command): + if (sysconfig.get_config_var('Py_ENABLE_SHARED')): + if not sysconfig.python_build: + # building third party extensions +- self.library_dirs.append(sysconfig.get_config_var('LIBDIR')) ++ libdir = sysconfig.get_config_var('LIBDIR') ++ if "_python_sysroot" in os.environ: ++ libdir = os.environ.get("_python_sysroot") + libdir ++ self.library_dirs.append(libdir) + else: + # building python standard extensions + self.library_dirs.append('.') +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py +index d72b6e5..72151df 100644 +--- a/Lib/distutils/sysconfig.py ++++ b/Lib/distutils/sysconfig.py +@@ -19,8 +19,13 @@ import sys + from distutils.errors import DistutilsPlatformError + + # These are needed in a couple of spots, so just compute them once. +-PREFIX = os.path.normpath(sys.prefix) +-EXEC_PREFIX = os.path.normpath(sys.exec_prefix) ++if "_python_sysroot" in os.environ: ++ _sysroot=os.environ.get('_python_sysroot') ++ PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_prefix')) ++ EXEC_PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_exec_prefix')) ++else: ++ PREFIX = os.path.normpath(sys.prefix) ++ EXEC_PREFIX = os.path.normpath(sys.exec_prefix) + + # Path to the base directory of the project. On Windows the binary may + # live in project/PCBuild9. If we're dealing with an x64 Windows build, +-- +2.7.4 + diff --git a/buildroot/package/python/0008-Don-t-look-in-usr-lib-termcap-for-libraries.patch b/buildroot/package/python/0008-Don-t-look-in-usr-lib-termcap-for-libraries.patch new file mode 100644 index 0000000..d523b74 --- /dev/null +++ b/buildroot/package/python/0008-Don-t-look-in-usr-lib-termcap-for-libraries.patch @@ -0,0 +1,31 @@ +From 87b627d8845e67fd798449b414bece04f18bd450 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:22:40 +0100 +Subject: [PATCH] Don't look in /usr/lib/termcap for libraries + +Signed-off-by: Thomas Petazzoni +--- + setup.py | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/setup.py b/setup.py +index 3b51c0a..fa32532 100644 +--- a/setup.py ++++ b/setup.py +@@ -784,12 +784,9 @@ class PyBuildExt(build_ext): + pass # Issue 7384: Already linked against curses or tinfo. + elif curses_library: + readline_libs.append(curses_library) +- elif self.compiler.find_library_file(lib_dirs + +- ['/usr/lib/termcap'], +- 'termcap'): ++ elif self.compiler.find_library_file(lib_dirs, 'termcap'): + readline_libs.append('termcap') + exts.append( Extension('readline', ['readline.c'], +- library_dirs=['/usr/lib/termcap'], + extra_link_args=readline_extra_link_args, + libraries=readline_libs) ) + else: +-- +2.7.4 + diff --git a/buildroot/package/python/0009-Fix-python-config-for-cross-builds.patch b/buildroot/package/python/0009-Fix-python-config-for-cross-builds.patch new file mode 100644 index 0000000..761d6d9 --- /dev/null +++ b/buildroot/package/python/0009-Fix-python-config-for-cross-builds.patch @@ -0,0 +1,227 @@ +From e5b0d225f4343e82791cb80e4e0c01a9b49eeff4 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 7 Mar 2017 22:23:14 +0100 +Subject: [PATCH] Fix python-config for cross-builds + +Add a backport of http://bugs.python.org/issue16235 so we can use +python-config for cross builds. + +This basically replaces the python version of python-config with a +pure-shell version that's already preprocessed when installed and +doesn't depend on the sysconfig import that usually leads to bad +data/results. + +Signed-off-by: Gustavo Zacarias +[Bernd: rebased for Python 2.7.15] +Signed-off-by: Bernd Kuhls +--- + Makefile.pre.in | 13 +++--- + Misc/python-config.sh.in | 102 +++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 7 +++- + 3 files changed, 116 insertions(+), 6 deletions(-) + create mode 100644 Misc/python-config.sh.in + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 33b994d..beb0837 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -171,7 +171,7 @@ SRCDIRS= @SRCDIRS@ + SUBDIRSTOO= Include Lib Misc Demo + + # Files and directories to be distributed +-CONFIGFILES= configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in ++CONFIGFILES= configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Misc/python-config.sh + DISTFILES= README ChangeLog $(CONFIGFILES) + DISTDIRS= $(SUBDIRS) $(SUBDIRSTOO) Ext-dummy + DIST= $(DISTFILES) $(DISTDIRS) +@@ -431,7 +431,7 @@ LIBRARY_OBJS= \ + + # Default target + all: @DEF_MAKE_ALL_RULE@ +-build_all: check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks ++build_all: check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks python-config + + # Compile a binary with profile guided optimization. + profile-opt: +@@ -1179,10 +1179,12 @@ $(srcdir)/Lib/$(PLATDIR): + fi; \ + cd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regen + +-python-config: $(srcdir)/Misc/python-config.in ++python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh + # Substitution happens here, as the completely-expanded BINDIR + # is not available in configure +- sed -e "s,@EXENAME@,$(BINDIR)/python$(VERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config ++ sed -e "s,@EXENAME@,$(BINDIR)/python$(VERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py ++ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR} ++ sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' Misc/python-config.sh >python-config + + # Install the include files + INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY) +@@ -1241,7 +1243,7 @@ libainstall: all python-config + $(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup + $(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh + $(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(VERSION)-config +- rm python-config ++ $(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py + @if [ -s Modules/python.exp -a \ + "`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \ + echo; echo "Installing support files for building shared extension modules on AIX:"; \ +@@ -1426,6 +1428,7 @@ clobber: clean profile-removal + config.cache config.log pyconfig.h Modules/config.c + -rm -rf build platform + -rm -rf $(PYTHONFRAMEWORKDIR) ++ -rm -f python-config.py python-config + + # Make things extra clean, before making a distribution: + # remove all generated files, even Makefile[.pre] +diff --git a/Misc/python-config.sh.in b/Misc/python-config.sh.in +new file mode 100644 +index 0000000..10db4c1 +--- /dev/null ++++ b/Misc/python-config.sh.in +@@ -0,0 +1,102 @@ ++#!/bin/sh ++ ++exit_with_usage () ++{ ++ echo "Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--configdir" ++ exit $1 ++} ++ ++if [ "$1" = "" ] ; then ++ exit_with_usage 1 ++fi ++ ++# Returns the actual prefix where this script was installed to. ++installed_prefix () ++{ ++ RESULT=$(dirname $(cd $(dirname "$1") && pwd -P)) ++ if which readlink >/dev/null 2>&1 ; then ++ RESULT=$(readlink -f "$RESULT") ++ fi ++ echo $RESULT ++} ++ ++prefix_build="@prefix@" ++prefix_real=$(installed_prefix "$0") ++ ++# Use sed to fix paths from their built to locations to their installed to locations. ++prefix=$(echo "$prefix_build" | sed "s#$prefix_build#$prefix_real#") ++exec_prefix_build="@exec_prefix@" ++exec_prefix=$(echo "$exec_prefix_build" | sed "s#$exec_prefix_build#$prefix_real#") ++includedir=$(echo "@includedir@") ++libdir=$(echo "@libdir@" | sed "s#$prefix_build#$prefix_real#") ++CFLAGS=$(echo "@CFLAGS@" | sed "s#$prefix_build#$prefix_real#") ++VERSION="@VERSION@" ++LIBM="@LIBM@" ++LIBC="@LIBC@" ++SYSLIBS="$LIBM $LIBC" ++LIBS="@LIBS@ $SYSLIBS -lpython${VERSION}" ++BASECFLAGS="@BASECFLAGS@" ++LDLIBRARY="@LDLIBRARY@" ++LINKFORSHARED="@LINKFORSHARED@" ++OPT="@OPT@" ++PY_ENABLE_SHARED="@PY_ENABLE_SHARED@" ++LDVERSION="@LDVERSION@" ++LIBDEST=${prefix}/lib/python${VERSION} ++LIBPL=$(echo "@LIBPL@" | sed "s#$prefix_build#$prefix_real#") ++SO="@SO@" ++PYTHONFRAMEWORK="@PYTHONFRAMEWORK@" ++INCDIR="-I$includedir/python${VERSION}" ++PLATINCDIR="-I$includedir/python${VERSION}" ++ ++# Scan for --help or unknown argument. ++for ARG in $* ++do ++ case $ARG in ++ --help) ++ exit_with_usage 0 ++ ;; ++ --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--abiflags|--configdir) ++ ;; ++ *) ++ exit_with_usage 1 ++ ;; ++esac ++done ++ ++for ARG in "$@" ++do ++ case "$ARG" in ++ --prefix) ++ echo "$prefix" ++ ;; ++ --exec-prefix) ++ echo "$exec_prefix" ++ ;; ++ --includes) ++ echo "$INCDIR $PLATINCDIR" ++ ;; ++ --cflags) ++ echo "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT" ++ ;; ++ --libs) ++ echo "$LIBS" ++ ;; ++ --ldflags) ++ LINKFORSHAREDUSED= ++ if [ -z "$PYTHONFRAMEWORK" ] ; then ++ LINKFORSHAREDUSED=$LINKFORSHARED ++ fi ++ LIBPLUSED= ++ if [ "$PY_ENABLE_SHARED" = "0" ] ; then ++ LIBPLUSED="-L$LIBPL" ++ fi ++ echo "$LIBPLUSED -L$libdir $LIBS $LINKFORSHAREDUSED" ++ ;; ++ --extension-suffix) ++ echo "$SO" ++ ;; ++ --configdir) ++ echo "$LIBPL" ++ ;; ++esac ++done +diff --git a/configure.ac b/configure.ac +index 5d4232f..183a903 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -905,6 +905,7 @@ fi + + # Other platforms follow + if test $enable_shared = "yes"; then ++ PY_ENABLE_SHARED=1 + AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.]) + case $ac_sys_system in + BeOS*) +@@ -965,6 +966,7 @@ if test $enable_shared = "yes"; then + + esac + else # shared is disabled ++ PY_ENABLE_SHARED=0 + case $ac_sys_system in + CYGWIN*) + BLDLIBRARY='$(LIBRARY)' +@@ -2096,6 +2098,9 @@ AC_SUBST(LDCXXSHARED) + AC_SUBST(BLDSHARED) + AC_SUBST(CCSHARED) + AC_SUBST(LINKFORSHARED) ++AC_SUBST(PY_ENABLE_SHARED) ++LIBPL="${prefix}/lib/python${VERSION}/config" ++AC_SUBST(LIBPL) + # SO is the extension of shared libraries `(including the dot!) + # -- usually .so, .sl on HP-UX, .dll on Cygwin + AC_MSG_CHECKING(SO) +@@ -4818,7 +4823,7 @@ AC_MSG_RESULT($ENSUREPIP) + AC_SUBST(ENSUREPIP) + + # generate output files +-AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc) ++AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh) + AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix]) + AC_OUTPUT + +-- +2.7.4 + diff --git a/buildroot/package/python/0010-Remove-the-python-symlink-install-rules.patch b/buildroot/package/python/0010-Remove-the-python-symlink-install-rules.patch new file mode 100644 index 0000000..864ccbf --- /dev/null +++ b/buildroot/package/python/0010-Remove-the-python-symlink-install-rules.patch @@ -0,0 +1,41 @@ +From bddfcbb8a4c011ca2fe471f7a4124cd64b5b0f00 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Tue, 7 Mar 2017 22:23:58 +0100 +Subject: [PATCH] Remove the python symlink install rules + +The python symlink installation will be handled by Buildroot itself, +because Buildroot needs to control to what python interpreter (python2 +or python3) the python symlink points to. + +Signed-off-by: Samuel Martin +[Bernd: rebased against version 2.7.12.] +Signed-off-by: Bernd Kuhls +--- + Makefile.pre.in | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index beb0837..dedcf61 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -968,17 +968,10 @@ bininstall: altbininstall + echo "Creating directory $(LIBPC)"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC); \ + fi +- -if test -f $(DESTDIR)$(BINDIR)/$(PYTHON) -o -h $(DESTDIR)$(BINDIR)/$(PYTHON); \ +- then rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \ +- else true; \ +- fi +- (cd $(DESTDIR)$(BINDIR); $(LN) -s python2$(EXE) $(PYTHON)) + -rm -f $(DESTDIR)$(BINDIR)/python2$(EXE) + (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python2$(EXE)) + -rm -f $(DESTDIR)$(BINDIR)/python2-config + (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python2-config) +- -rm -f $(DESTDIR)$(BINDIR)/python-config +- (cd $(DESTDIR)$(BINDIR); $(LN) -s python2-config python-config) + -test -d $(DESTDIR)$(LIBPC) || $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC) + -rm -f $(DESTDIR)$(LIBPC)/python2.pc + (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python2.pc) +-- +2.7.4 + diff --git a/buildroot/package/python/0011-Don-t-add-multiarch-paths.patch b/buildroot/package/python/0011-Don-t-add-multiarch-paths.patch new file mode 100644 index 0000000..b84c907 --- /dev/null +++ b/buildroot/package/python/0011-Don-t-add-multiarch-paths.patch @@ -0,0 +1,36 @@ +From 50a243a9c90f95e9248ac720e42e802b5922ab90 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:24:28 +0100 +Subject: [PATCH] Don't add multiarch paths + +The add_multiarch_paths() function leads, in certain build +environments, to the addition of host header paths to the CFLAGS, +which is not appropriate for cross-compilation. This patch fixes that +by simply removing the call to add_multiarch_paths() when we're +cross-compiling. + +Investigation done by David . + +Signed-off-by: Thomas Petazzoni +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index fa32532..0b9ea57 100644 +--- a/setup.py ++++ b/setup.py +@@ -461,9 +461,9 @@ class PyBuildExt(build_ext): + if not cross_compiling: + add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') ++ self.add_multiarch_paths() + if cross_compiling: + self.add_gcc_paths() +- self.add_multiarch_paths() + + # Add paths specified in the environment variables LDFLAGS and + # CPPFLAGS for header and library files. +-- +2.7.4 + diff --git a/buildroot/package/python/0012-Abort-on-failed-module-build.patch b/buildroot/package/python/0012-Abort-on-failed-module-build.patch new file mode 100644 index 0000000..7d952ca --- /dev/null +++ b/buildroot/package/python/0012-Abort-on-failed-module-build.patch @@ -0,0 +1,30 @@ +From a131e2ff219872d97eef6585117bd2f8ff9e310d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:24:48 +0100 +Subject: [PATCH] Abort on failed module build + +When building a Python module fails, the setup.py script currently +doesn't exit with an error, and simply continues. This is not a really +nice behavior, so this patch changes setup.py to abort with an error, +so that the build issue is clearly noticeable. + +Signed-off-by: Thomas Petazzoni +--- + setup.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/setup.py b/setup.py +index 0b9ea57..9a5c2b8 100644 +--- a/setup.py ++++ b/setup.py +@@ -299,6 +299,7 @@ class PyBuildExt(build_ext): + print "Failed to build these modules:" + print_three_column(failed) + print ++ sys.exit(1) + + def build_extension(self, ext): + +-- +2.7.4 + diff --git a/buildroot/package/python/0013-sqlite3-fix-build-when-threads-are-not-used-availabl.patch b/buildroot/package/python/0013-sqlite3-fix-build-when-threads-are-not-used-availabl.patch new file mode 100644 index 0000000..dfc11ef --- /dev/null +++ b/buildroot/package/python/0013-sqlite3-fix-build-when-threads-are-not-used-availabl.patch @@ -0,0 +1,58 @@ +From 0f0be88526ece7d2f6ee21c1f59b1546ec6dc7c0 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 7 Mar 2017 22:25:14 +0100 +Subject: [PATCH] sqlite3: fix build when threads are not used/available + +When threads are not used/available, a function in the sqlite3 extension +ends up with a label at the end: + + void _pysqlite_final_callback(sqlite3_context* context) + { + PyObject* function_result; + PyObject** aggregate_instance; + int ok; + + #ifdef WITH_THREAD + PyGILState_STATE threadstate; + + threadstate = PyGILState_Ensure(); + #endif + + aggregate_instance = (PyObject**)sqlite3_aggregate_context(context, sizeof(PyObject*)); + if (!*aggregate_instance) { + goto error; + } + + [......] + + error: + #ifdef WITH_THREAD + PyGILState_Release(threadstate); + #endif + } + +This is not valid, and gcc complains. + +Fix that by adding a dummy statement after the label, so that the label +is never the last statement of the function. + +Signed-off-by: "Yann E. MORIN" +--- + Modules/_sqlite/connection.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c +index 237d6e4..cdf69ab 100644 +--- a/Modules/_sqlite/connection.c ++++ b/Modules/_sqlite/connection.c +@@ -794,6 +794,7 @@ error: + #ifdef WITH_THREAD + PyGILState_Release(threadstate); + #endif ++ ; /* Make gcc happy: a label can't be at the end of a function */ + } + + static void _pysqlite_drop_unused_statement_references(pysqlite_Connection* self) +-- +2.7.4 + diff --git a/buildroot/package/python/0014-Serial-ioctl-workaround.patch b/buildroot/package/python/0014-Serial-ioctl-workaround.patch new file mode 100644 index 0000000..468d535 --- /dev/null +++ b/buildroot/package/python/0014-Serial-ioctl-workaround.patch @@ -0,0 +1,33 @@ +From 22e5a4c5d29ddf0856d7f68f5a613aec00e26168 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 7 Mar 2017 22:25:36 +0100 +Subject: [PATCH] Serial ioctl() workaround + +The ioctls.h of some architectures (notably xtensa) references structs from +linux/serial.h. Make sure to include this header as well. + +Also, undef TIOCTTYGSTRUCT that require reference to internal kernel tty_struct, +but isn't actually referenced in modern kernels. + +Signed-off-by: Baruch Siach +--- + Modules/termios.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Modules/termios.c b/Modules/termios.c +index 57f30dc..a8c9855 100644 +--- a/Modules/termios.c ++++ b/Modules/termios.c +@@ -16,7 +16,9 @@ + * so this needs to be included first on that platform. */ + #include + #endif ++#include + #include ++#undef TIOCTTYGSTRUCT + + /* HP-UX requires that this be included to pick up MDCD, MCTS, MDSR, + * MDTR, MRI, and MRTS (appearantly used internally by some things +-- +2.7.4 + diff --git a/buildroot/package/python/0015-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch b/buildroot/package/python/0015-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch new file mode 100644 index 0000000..fecf29f --- /dev/null +++ b/buildroot/package/python/0015-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch @@ -0,0 +1,35 @@ +From 70049366ddf1fc9084bb02cf4459380976cdf8f7 Mon Sep 17 00:00:00 2001 +From: Christophe Vu-Brugier +Date: Tue, 7 Mar 2017 22:26:09 +0100 +Subject: [PATCH] Do not adjust the shebang of Python scripts for + cross-compilation + +The copy_scripts() method in distutils copies the scripts listed in +the setup file and adjusts the first line to refer to the current +Python interpreter. When cross-compiling, this means that the adjusted +shebang refers to the host Python interpreter. + +This patch modifies copy_scripts() to preserve the shebang when +cross-compilation is detected. + +Signed-off-by: Christophe Vu-Brugier +--- + Lib/distutils/command/build_scripts.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/distutils/command/build_scripts.py b/Lib/distutils/command/build_scripts.py +index 567df65..4922d50 100644 +--- a/Lib/distutils/command/build_scripts.py ++++ b/Lib/distutils/command/build_scripts.py +@@ -89,7 +89,7 @@ class build_scripts (Command): + adjust = 1 + post_interp = match.group(1) or '' + +- if adjust: ++ if adjust and not '_python_sysroot' in os.environ: + log.info("copying and adjusting %s -> %s", script, + self.build_dir) + if not self.dry_run: +-- +2.7.4 + diff --git a/buildroot/package/python/0016-Add-an-option-to-disable-installation-of-test-module.patch b/buildroot/package/python/0016-Add-an-option-to-disable-installation-of-test-module.patch new file mode 100644 index 0000000..2e1a054 --- /dev/null +++ b/buildroot/package/python/0016-Add-an-option-to-disable-installation-of-test-module.patch @@ -0,0 +1,103 @@ +From 0eac7789c0dd4aebe9e69d3c73d0c95e96922ea3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:27:16 +0100 +Subject: [PATCH] Add an option to disable installation of test modules + +The Python standard distribution comes with many test modules, that +are not necessarly useful on embedded targets. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[Bernd: rebased against version 2.7.14] +Signed-off-by: Bernd Kuhls +--- + Makefile.pre.in | 48 ++++++++++++++++++++++++++++++++---------------- + configure.ac | 6 ++++++ + 2 files changed, 38 insertions(+), 16 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index dedcf61..280cc4e 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1032,28 +1032,44 @@ + plat-mac/lib-scriptpackages/SystemEvents \ + plat-mac/lib-scriptpackages/Terminal + PLATMACPATH=:plat-mac:plat-mac/lib-scriptpackages +-LIBSUBDIRS= lib-tk lib-tk/test lib-tk/test/test_tkinter \ +- lib-tk/test/test_ttk site-packages test test/audiodata test/capath \ +- test/data test/cjkencodings test/decimaltestdata test/xmltestdata \ +- test/imghdrdata \ +- test/subprocessdata \ +- test/support \ +- test/tracedmodules \ ++LIBSUBDIRS= lib-tk site-packages \ + encodings compiler hotshot \ +- email email/mime email/test email/test/data \ ++ email email/mime \ + ensurepip ensurepip/_bundled \ +- json json/tests \ +- sqlite3 sqlite3/test \ +- logging bsddb bsddb/test csv importlib wsgiref \ +- lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \ +- lib2to3/tests/data lib2to3/tests/data/fixers lib2to3/tests/data/fixers/myfixes \ +- ctypes ctypes/test ctypes/macholib \ +- idlelib idlelib/Icons idlelib/idle_test \ +- distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \ ++ json \ ++ sqlite3 \ ++ logging bsddb csv importlib wsgiref \ ++ lib2to3 lib2to3/fixes lib2to3/pgen2 \ ++ ctypes ctypes/macholib \ ++ idlelib idlelib/Icons \ ++ distutils distutils/command $(XMLLIBSUBDIRS) \ + multiprocessing multiprocessing/dummy \ +- unittest unittest/test \ ++ unittest \ + lib-old \ + curses pydoc_data $(MACHDEPS) ++ ++TESTSUBDIRS = lib-tk/test lib-tk/test/test_tkinter \ ++ lib-tk/test/test_ttk test test/audiodata test/capath test/data \ ++ test/cjkencodings test/decimaltestdata test/xmltestdata \ ++ test/imghdrdata \ ++ test/subprocessdata \ ++ test/support \ ++ test/tracedmodules \ ++ email/test email/test/data \ ++ json/tests \ ++ sqlite3/test \ ++ bsddb/test \ ++ lib2to3/tests \ ++ lib2to3/tests/data lib2to3/tests/data/fixers lib2to3/tests/data/fixers/myfixes \ ++ ctypes/test \ ++ idlelib/idle_test \ ++ distutils/tests \ ++ unittest/test ++ ++ifeq (@TEST_MODULES@,yes) ++LIBSUBDIRS += $(TESTSUBDIRS) ++endif ++ + libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ +diff --git a/configure.ac b/configure.ac +index 183a903..a1a35f6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2806,6 +2806,12 @@ if test "$posix_threads" = "yes"; then + fi + + ++AC_SUBST(TEST_MODULES) ++ ++AC_ARG_ENABLE(test-modules, ++ AS_HELP_STRING([--disable-test-modules], [disable test modules]), ++ [ TEST_MODULES="${enableval}" ], [ TEST_MODULES=yes ]) ++ + # Check for enable-ipv6 + AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified]) + AC_MSG_CHECKING([if --enable-ipv6 is specified]) +-- +2.7.4 + diff --git a/buildroot/package/python/0017-Add-an-option-to-disable-pydoc.patch b/buildroot/package/python/0017-Add-an-option-to-disable-pydoc.patch new file mode 100644 index 0000000..18582f1 --- /dev/null +++ b/buildroot/package/python/0017-Add-an-option-to-disable-pydoc.patch @@ -0,0 +1,87 @@ +From 52463745b6c46a46a6f2e2bc17983bb3f7bdac6e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:27:34 +0100 +Subject: [PATCH] Add an option to disable pydoc + +It removes 0.5 MB of data from the target plus the pydoc script +itself. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +--- + Makefile.pre.in | 6 +++++- + configure.ac | 5 +++++ + setup.py | 10 +++++++--- + 3 files changed, 17 insertions(+), 4 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 280cc4e..84d5fc6 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1052,7 +1052,7 @@ LIBSUBDIRS= lib-tk site-packages \ + multiprocessing multiprocessing/dummy \ + unittest \ + lib-old \ +- curses pydoc_data $(MACHDEPS) ++ curses $(MACHDEPS) + + TESTSUBDIRS = lib-tk/test lib-tk/test/test_tkinter \ + lib-tk/test/test_ttk test test/audiodata test/capath test/data \ +@@ -1075,6 +1075,10 @@ ifeq (@TEST_MODULES@,yes) + LIBSUBDIRS += $(TESTSUBDIRS) + endif + ++ifeq (@PYDOC@,yes) ++LIBSUBDIRS += pydoc_data ++endif ++ + libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ +diff --git a/configure.ac b/configure.ac +index a1a35f6..8bab160 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2805,6 +2805,11 @@ if test "$posix_threads" = "yes"; then + AC_CHECK_FUNCS(pthread_atfork) + fi + ++AC_SUBST(PYDOC) ++ ++AC_ARG_ENABLE(pydoc, ++ AS_HELP_STRING([--disable-pydoc], [disable pydoc]), ++ [ PYDOC="${enableval}" ], [ PYDOC=yes ]) + + AC_SUBST(TEST_MODULES) + +diff --git a/setup.py b/setup.py +index 9a5c2b8..69771e2 100644 +--- a/setup.py ++++ b/setup.py +@@ -2233,6 +2233,12 @@ def main(): + # turn off warnings when deprecated modules are imported + import warnings + warnings.filterwarnings("ignore",category=DeprecationWarning) ++ ++ scripts = ['Tools/scripts/idle', 'Tools/scripts/2to3', ++ 'Lib/smtpd.py'] ++ if not '--disable-pydoc' in sysconfig.get_config_var("CONFIG_ARGS"): ++ scripts += [ 'Tools/scripts/pydoc' ] ++ + setup(# PyPI Metadata (PEP 301) + name = "Python", + version = sys.version.split()[0], +@@ -2253,9 +2259,7 @@ def main(): + ext_modules=[Extension('_struct', ['_struct.c'])], + + # Scripts to install +- scripts = ['Tools/scripts/pydoc', 'Tools/scripts/idle', +- 'Tools/scripts/2to3', +- 'Lib/smtpd.py'] ++ scripts = scripts, + ) + + # --install-platlib +-- +2.7.4 + diff --git a/buildroot/package/python/0018-Add-an-option-to-disable-lib2to3.patch b/buildroot/package/python/0018-Add-an-option-to-disable-lib2to3.patch new file mode 100644 index 0000000..765b05d --- /dev/null +++ b/buildroot/package/python/0018-Add-an-option-to-disable-lib2to3.patch @@ -0,0 +1,90 @@ +From d0cf9ebed6d34d820cf594578cf513797fb52772 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:27:49 +0100 +Subject: [PATCH] Add an option to disable lib2to3 + +lib2to3 is a library to convert Python 2.x code to Python 3.x. As +such, it is probably not very useful on embedded system targets. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +--- + Makefile.pre.in | 11 ++++++++--- + configure.ac | 6 ++++++ + setup.py | 5 +++-- + 3 files changed, 17 insertions(+), 5 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 84d5fc6..b2a0490 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1045,7 +1045,6 @@ LIBSUBDIRS= lib-tk site-packages \ + json \ + sqlite3 \ + logging bsddb csv importlib wsgiref \ +- lib2to3 lib2to3/fixes lib2to3/pgen2 \ + ctypes ctypes/macholib \ + idlelib idlelib/Icons \ + distutils distutils/command $(XMLLIBSUBDIRS) \ +@@ -1064,8 +1063,6 @@ TESTSUBDIRS = lib-tk/test lib-tk/test/test_tkinter \ + json/tests \ + sqlite3/test \ + bsddb/test \ +- lib2to3/tests \ +- lib2to3/tests/data lib2to3/tests/data/fixers lib2to3/tests/data/fixers/myfixes \ + ctypes/test \ + idlelib/idle_test \ + distutils/tests \ +@@ -1079,6 +1076,14 @@ ifeq (@PYDOC@,yes) + LIBSUBDIRS += pydoc_data + endif + ++ifeq (@LIB2TO3@,yes) ++LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2 ++TESTSUBDIRS += lib2to3/tests \ ++ lib2to3/tests/data \ ++ lib2to3/tests/data/fixers \ ++ lib2to3/tests/data/fixers/myfixes ++endif ++ + libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ +diff --git a/configure.ac b/configure.ac +index 8bab160..270f337 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2817,6 +2817,12 @@ AC_ARG_ENABLE(test-modules, + AS_HELP_STRING([--disable-test-modules], [disable test modules]), + [ TEST_MODULES="${enableval}" ], [ TEST_MODULES=yes ]) + ++AC_SUBST(LIB2TO3) ++ ++AC_ARG_ENABLE(lib2to3, ++ AS_HELP_STRING([--disable-lib2to3], [disable lib2to3]), ++ [ LIB2TO3="${enableval}" ], [ LIB2TO3=yes ]) ++ + # Check for enable-ipv6 + AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified]) + AC_MSG_CHECKING([if --enable-ipv6 is specified]) +diff --git a/setup.py b/setup.py +index 69771e2..f51ef8c 100644 +--- a/setup.py ++++ b/setup.py +@@ -2234,10 +2234,11 @@ def main(): + import warnings + warnings.filterwarnings("ignore",category=DeprecationWarning) + +- scripts = ['Tools/scripts/idle', 'Tools/scripts/2to3', +- 'Lib/smtpd.py'] ++ scripts = ['Tools/scripts/idle', 'Lib/smtpd.py'] + if not '--disable-pydoc' in sysconfig.get_config_var("CONFIG_ARGS"): + scripts += [ 'Tools/scripts/pydoc' ] ++ if not '--disable-lib2to3' in sysconfig.get_config_var("CONFIG_ARGS"): ++ scripts += [ 'Tools/scripts/2to3' ] + + setup(# PyPI Metadata (PEP 301) + name = "Python", +-- +2.7.4 + diff --git a/buildroot/package/python/0019-Add-option-to-disable-the-sqlite3-module.patch b/buildroot/package/python/0019-Add-option-to-disable-the-sqlite3-module.patch new file mode 100644 index 0000000..bffe3fa --- /dev/null +++ b/buildroot/package/python/0019-Add-option-to-disable-the-sqlite3-module.patch @@ -0,0 +1,67 @@ +From 570e1e81484d9bcbd30a7719b07d02785a5cab24 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:28:06 +0100 +Subject: [PATCH] Add option to disable the sqlite3 module + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +--- + Makefile.pre.in | 7 +++++-- + configure.ac | 9 +++++++++ + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index b2a0490..974a052 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1043,7 +1043,6 @@ LIBSUBDIRS= lib-tk site-packages \ + email email/mime \ + ensurepip ensurepip/_bundled \ + json \ +- sqlite3 \ + logging bsddb csv importlib wsgiref \ + ctypes ctypes/macholib \ + idlelib idlelib/Icons \ +@@ -1061,7 +1060,6 @@ TESTSUBDIRS = lib-tk/test lib-tk/test/test_tkinter \ + test/tracedmodules \ + email/test email/test/data \ + json/tests \ +- sqlite3/test \ + bsddb/test \ + ctypes/test \ + idlelib/idle_test \ +@@ -1084,6 +1082,11 @@ TESTSUBDIRS += lib2to3/tests \ + lib2to3/tests/data/fixers/myfixes + endif + ++ifeq (@SQLITE3@,yes) ++LIBSUBDIRS += sqlite3 ++TESTSUBDIRS += sqlite3/test ++endif ++ + libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ +diff --git a/configure.ac b/configure.ac +index 270f337..e9e1897 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2805,6 +2805,15 @@ if test "$posix_threads" = "yes"; then + AC_CHECK_FUNCS(pthread_atfork) + fi + ++AC_SUBST(SQLITE3) ++AC_ARG_ENABLE(sqlite3, ++ AS_HELP_STRING([--disable-sqlite3], [disable sqlite3]), ++ [ SQLITE3="${enableval}" ], [ SQLITE3=yes ]) ++ ++if test "$SQLITE3" = "no" ; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _sqlite3" ++fi ++ + AC_SUBST(PYDOC) + + AC_ARG_ENABLE(pydoc, +-- +2.7.4 + diff --git a/buildroot/package/python/0020-Add-an-option-to-disable-the-tk-module.patch b/buildroot/package/python/0020-Add-an-option-to-disable-the-tk-module.patch new file mode 100644 index 0000000..82df405 --- /dev/null +++ b/buildroot/package/python/0020-Add-an-option-to-disable-the-tk-module.patch @@ -0,0 +1,71 @@ +From 05fbe2527b6f87edeef11f288c36bcbaa378ca02 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:28:57 +0100 +Subject: [PATCH] Add an option to disable the tk module + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +--- + Makefile.pre.in | 11 ++++++++--- + configure.ac | 9 +++++++++ + 2 files changed, 17 insertions(+), 3 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 974a052..f7f025f 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1038,7 +1038,7 @@ PLATMACDIRS= plat-mac plat-mac/Carbon plat-mac/lib-scriptpackages \ + plat-mac/lib-scriptpackages/SystemEvents \ + plat-mac/lib-scriptpackages/Terminal + PLATMACPATH=:plat-mac:plat-mac/lib-scriptpackages +-LIBSUBDIRS= lib-tk site-packages \ ++LIBSUBDIRS= site-packages \ + encodings compiler hotshot \ + email email/mime \ + ensurepip ensurepip/_bundled \ +@@ -1052,8 +1052,7 @@ LIBSUBDIRS= lib-tk site-packages \ + lib-old \ + curses $(MACHDEPS) + +-TESTSUBDIRS = lib-tk/test lib-tk/test/test_tkinter \ +- lib-tk/test/test_ttk test test/audiodata test/capath test/data \ ++TESTSUBDIRS = test test/audiodata test/capath test/data \ + test/cjkencodings test/decimaltestdata test/xmltestdata \ + test/imghdrdata \ + test/subprocessdata \ +@@ -1087,6 +1086,12 @@ LIBSUBDIRS += sqlite3 + TESTSUBDIRS += sqlite3/test + endif + ++ifeq (@TK@,yes) ++LIBSUBDIRS += lib-tk ++TESTSUBDIRS += lib-tk/test lib-tk/test/test_tkinter \ ++ lib-tk/test/test_ttk ++endif ++ + libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ +diff --git a/configure.ac b/configure.ac +index e9e1897..d0f032c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2814,6 +2814,15 @@ if test "$SQLITE3" = "no" ; then + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _sqlite3" + fi + ++AC_SUBST(TK) ++AC_ARG_ENABLE(tk, ++ AS_HELP_STRING([--disable-tk], [disable tk]), ++ [ TK="${enableval}" ], [ TK=yes ]) ++ ++if test "$TK" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _tkinter" ++fi ++ + AC_SUBST(PYDOC) + + AC_ARG_ENABLE(pydoc, +-- +2.7.4 + diff --git a/buildroot/package/python/0021-Add-an-option-to-disable-the-curses-module.patch b/buildroot/package/python/0021-Add-an-option-to-disable-the-curses-module.patch new file mode 100644 index 0000000..c36942a --- /dev/null +++ b/buildroot/package/python/0021-Add-an-option-to-disable-the-curses-module.patch @@ -0,0 +1,59 @@ +From dba12f15baad06cc7e17a275201cc022bb6c84f7 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:29:06 +0100 +Subject: [PATCH] Add an option to disable the curses module + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +--- + Makefile.pre.in | 6 +++++- + configure.ac | 9 +++++++++ + 2 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index f7f025f..bd537d9 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1050,7 +1050,7 @@ LIBSUBDIRS= site-packages \ + multiprocessing multiprocessing/dummy \ + unittest \ + lib-old \ +- curses $(MACHDEPS) ++ $(MACHDEPS) + + TESTSUBDIRS = test test/audiodata test/capath test/data \ + test/cjkencodings test/decimaltestdata test/xmltestdata \ +@@ -1092,6 +1092,10 @@ TESTSUBDIRS += lib-tk/test lib-tk/test/test_tkinter \ + lib-tk/test/test_ttk + endif + ++ifeq (@CURSES@,yes) ++LIBSUBDIRS += curses ++endif ++ + libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ +diff --git a/configure.ac b/configure.ac +index d0f032c..ab081bc 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2823,6 +2823,15 @@ if test "$TK" = "no"; then + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _tkinter" + fi + ++AC_SUBST(CURSES) ++AC_ARG_ENABLE(curses, ++ AS_HELP_STRING([--disable-curses], [disable curses]), ++ [ CURSES="${enableval}" ], [ CURSES=yes ]) ++ ++if test "$CURSES" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _curses _curses_panel" ++fi ++ + AC_SUBST(PYDOC) + + AC_ARG_ENABLE(pydoc, +-- +2.7.4 + diff --git a/buildroot/package/python/0022-Add-an-option-to-disable-expat.patch b/buildroot/package/python/0022-Add-an-option-to-disable-expat.patch new file mode 100644 index 0000000..8253f11 --- /dev/null +++ b/buildroot/package/python/0022-Add-an-option-to-disable-expat.patch @@ -0,0 +1,90 @@ +From 5f0f30bf342cd2b13f98513c39fd8f17351b1a2f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:29:20 +0100 +Subject: [PATCH] Add an option to disable expat + +This patch replaces the existing --with-system-expat option with a +--with-expat={system,builtin,none} option, which allows to tell Python +whether we want to use the system expat (already installed), the expat +builtin the Python sources, or no expat at all (which disables the +installation of XML modules). + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +--- + Makefile.pre.in | 6 +++++- + configure.ac | 18 +++++++++++++----- + setup.py | 2 +- + 3 files changed, 19 insertions(+), 7 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index bd537d9..e5d0dd7 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1046,7 +1046,7 @@ LIBSUBDIRS= site-packages \ + logging bsddb csv importlib wsgiref \ + ctypes ctypes/macholib \ + idlelib idlelib/Icons \ +- distutils distutils/command $(XMLLIBSUBDIRS) \ ++ distutils distutils/command \ + multiprocessing multiprocessing/dummy \ + unittest \ + lib-old \ +@@ -1096,6 +1096,10 @@ ifeq (@CURSES@,yes) + LIBSUBDIRS += curses + endif + ++ifeq (@EXPAT@,yes) ++LIBSUBDIRS += $(XMLLIBSUBDIRS) ++endif ++ + libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ +diff --git a/configure.ac b/configure.ac +index ab081bc..63ee545 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2470,13 +2470,21 @@ PKG_PROG_PKG_CONFIG + AC_SUBST(DISABLED_EXTENSIONS) + + # Check for use of the system expat library +-AC_MSG_CHECKING(for --with-system-expat) +-AC_ARG_WITH(system_expat, +- AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]), ++AC_MSG_CHECKING(for --with-expat) ++AC_ARG_WITH(expat, ++ AS_HELP_STRING([--with-expat], [select which expat version to use: system, builtin, none]), + [], +- [with_system_expat="no"]) ++ [with_expat="builtin"]) + +-AC_MSG_RESULT($with_system_expat) ++AC_MSG_RESULT($with_expat) ++ ++if test "$with_expat" != "none"; then ++ EXPAT=yes ++else ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} pyexpat" ++ EXPAT=no ++fi ++AC_SUBST(EXPAT) + + # Check for use of the system libffi library + AC_MSG_CHECKING(for --with-system-ffi) +diff --git a/setup.py b/setup.py +index f51ef8c..c68f6b4 100644 +--- a/setup.py ++++ b/setup.py +@@ -1483,7 +1483,7 @@ class PyBuildExt(build_ext): + # + # More information on Expat can be found at www.libexpat.org. + # +- if '--with-system-expat' in sysconfig.get_config_var("CONFIG_ARGS"): ++ if '--with-expat=system' in sysconfig.get_config_var("CONFIG_ARGS"): + expat_inc = [] + define_macros = [] + expat_lib = ['expat'] +-- +2.7.4 + diff --git a/buildroot/package/python/0023-Add-an-option-to-disable-CJK-codecs.patch b/buildroot/package/python/0023-Add-an-option-to-disable-CJK-codecs.patch new file mode 100644 index 0000000..e2c2d98 --- /dev/null +++ b/buildroot/package/python/0023-Add-an-option-to-disable-CJK-codecs.patch @@ -0,0 +1,30 @@ +From cb848dae763a3f57e31d734d3be6889f660fa0d0 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:29:31 +0100 +Subject: [PATCH] Add an option to disable CJK codecs + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 63ee545..6a854ab 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2822,6 +2822,12 @@ if test "$SQLITE3" = "no" ; then + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _sqlite3" + fi + ++AC_ARG_ENABLE(codecs-cjk, ++ AS_HELP_STRING([--disable-codecs-cjk], [disable CJK codecs]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk" ++ fi]) ++ + AC_SUBST(TK) + AC_ARG_ENABLE(tk, + AS_HELP_STRING([--disable-tk], [disable tk]), +-- +2.7.4 + diff --git a/buildroot/package/python/0024-Add-an-option-to-disable-NIS.patch b/buildroot/package/python/0024-Add-an-option-to-disable-NIS.patch new file mode 100644 index 0000000..877dfd9 --- /dev/null +++ b/buildroot/package/python/0024-Add-an-option-to-disable-NIS.patch @@ -0,0 +1,33 @@ +From 133776d396b8eaf0243484dc990a53576de9685f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:29:41 +0100 +Subject: [PATCH] Add an option to disable NIS + +NIS is not necessarily available in uClibc, so we need an option to +not compile support for it. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 6a854ab..4c2cbc1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2828,6 +2828,12 @@ AC_ARG_ENABLE(codecs-cjk, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk" + fi]) + ++AC_ARG_ENABLE(nis, ++ AS_HELP_STRING([--disable-nis], [disable NIS]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} nis" ++ fi]) ++ + AC_SUBST(TK) + AC_ARG_ENABLE(tk, + AS_HELP_STRING([--disable-tk], [disable tk]), +-- +2.7.4 + diff --git a/buildroot/package/python/0025-Add-an-option-to-disable-unicodedata.patch b/buildroot/package/python/0025-Add-an-option-to-disable-unicodedata.patch new file mode 100644 index 0000000..a1255e5 --- /dev/null +++ b/buildroot/package/python/0025-Add-an-option-to-disable-unicodedata.patch @@ -0,0 +1,30 @@ +From aa78e3684c0e8f7a5e910e838f9eca2631262048 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:29:52 +0100 +Subject: [PATCH] Add an option to disable unicodedata + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 4c2cbc1..09cb3de 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2834,6 +2834,12 @@ AC_ARG_ENABLE(nis, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} nis" + fi]) + ++AC_ARG_ENABLE(unicodedata, ++ AS_HELP_STRING([--disable-unicodedata], [disable unicodedata]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} unicodedata" ++ fi]) ++ + AC_SUBST(TK) + AC_ARG_ENABLE(tk, + AS_HELP_STRING([--disable-tk], [disable tk]), +-- +2.7.4 + diff --git a/buildroot/package/python/0026-Add-an-option-to-disable-bsddb.patch b/buildroot/package/python/0026-Add-an-option-to-disable-bsddb.patch new file mode 100644 index 0000000..e3ccd44 --- /dev/null +++ b/buildroot/package/python/0026-Add-an-option-to-disable-bsddb.patch @@ -0,0 +1,85 @@ +From cfad2bcae8f572a9422ce5a6adb4caa7c0e521ad Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:30:06 +0100 +Subject: [PATCH] Add an option to disable bsddb + +bsddb has an external dependency on Berkeley DB. Since we want to be +able to build Python without it, this patch adds an option to disable +the build/installation of this Python module. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +--- + Makefile.pre.in | 8 ++++++-- + configure.ac | 22 ++++++++++++++++++++++ + 2 files changed, 28 insertions(+), 2 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index e5d0dd7..2582574 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1043,7 +1043,7 @@ LIBSUBDIRS= site-packages \ + email email/mime \ + ensurepip ensurepip/_bundled \ + json \ +- logging bsddb csv importlib wsgiref \ ++ logging csv importlib wsgiref \ + ctypes ctypes/macholib \ + idlelib idlelib/Icons \ + distutils distutils/command \ +@@ -1059,7 +1059,6 @@ TESTSUBDIRS = test test/audiodata test/capath test/data \ + test/tracedmodules \ + email/test email/test/data \ + json/tests \ +- bsddb/test \ + ctypes/test \ + idlelib/idle_test \ + distutils/tests \ +@@ -1100,6 +1099,11 @@ ifeq (@EXPAT@,yes) + LIBSUBDIRS += $(XMLLIBSUBDIRS) + endif + ++ifeq (@BSDDB@,yes) ++LIBSUBDIRS += bsddb ++TESTSUBDIRS += bsddb/test ++endif ++ + libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ +diff --git a/configure.ac b/configure.ac +index 09cb3de..524614c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2834,6 +2834,28 @@ AC_ARG_ENABLE(nis, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} nis" + fi]) + ++AC_ARG_ENABLE(dbm, ++ AS_HELP_STRING([--disable-dbm], [disable DBM]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} dbm" ++ fi]) ++ ++AC_ARG_ENABLE(gdbm, ++ AS_HELP_STRING([--disable-gdbm], [disable GDBM]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} gdbm" ++ fi]) ++ ++AC_SUBST(BSDDB) ++AC_ARG_ENABLE(bsddb, ++ AS_HELP_STRING([--disable-bsddb], [disable BerkeyleyDB]), ++ [ if test "$enableval" = "no"; then ++ BSDDB=no ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _bsddb" ++ else ++ BSDDB=yes ++ fi], [ BSDDB=yes ]) ++ + AC_ARG_ENABLE(unicodedata, + AS_HELP_STRING([--disable-unicodedata], [disable unicodedata]), + [ if test "$enableval" = "no"; then +-- +2.7.4 + diff --git a/buildroot/package/python/0027-Add-an-option-to-disable-the-ssl-module.patch b/buildroot/package/python/0027-Add-an-option-to-disable-the-ssl-module.patch new file mode 100644 index 0000000..5f2fb87 --- /dev/null +++ b/buildroot/package/python/0027-Add-an-option-to-disable-the-ssl-module.patch @@ -0,0 +1,30 @@ +From fc16ab40e3e6a5b4deed2fa7c5475fa216ff8d17 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:30:22 +0100 +Subject: [PATCH] Add an option to disable the ssl module + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 524614c..cadac82 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2834,6 +2834,12 @@ AC_ARG_ENABLE(nis, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} nis" + fi]) + ++AC_ARG_ENABLE(ssl, ++ AS_HELP_STRING([--disable-ssl], [disable SSL]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _ssl" ++ fi]) ++ + AC_ARG_ENABLE(dbm, + AS_HELP_STRING([--disable-dbm], [disable DBM]), + [ if test "$enableval" = "no"; then +-- +2.7.4 + diff --git a/buildroot/package/python/0028-Add-an-option-to-disable-the-bz2-module.patch b/buildroot/package/python/0028-Add-an-option-to-disable-the-bz2-module.patch new file mode 100644 index 0000000..da914b4 --- /dev/null +++ b/buildroot/package/python/0028-Add-an-option-to-disable-the-bz2-module.patch @@ -0,0 +1,30 @@ +From 6b10788fa040442ace100c3a28cbfff29c9db471 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:30:33 +0100 +Subject: [PATCH] Add an option to disable the bz2 module + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 743707a..f1762e9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2840,6 +2840,12 @@ AC_ARG_ENABLE(ssl, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} ssl" + fi]) + ++AC_ARG_ENABLE(bz2, ++ AS_HELP_STRING([--disable-bz2], [disable BZIP2]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} bz2" ++ fi]) ++ + AC_ARG_ENABLE(dbm, + AS_HELP_STRING([--disable-dbm], [disable DBM]), + [ if test "$enableval" = "no"; then +-- +2.7.4 + diff --git a/buildroot/package/python/0029-Add-an-option-to-disable-the-zlib-module.patch b/buildroot/package/python/0029-Add-an-option-to-disable-the-zlib-module.patch new file mode 100644 index 0000000..b4354e2 --- /dev/null +++ b/buildroot/package/python/0029-Add-an-option-to-disable-the-zlib-module.patch @@ -0,0 +1,30 @@ +From af2c56aa0a5900272cc2d04ce667d4b38e34b596 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:30:45 +0100 +Subject: [PATCH] Add an option to disable the zlib module + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index f1762e9..291ba35 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2846,6 +2846,12 @@ AC_ARG_ENABLE(bz2, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} bz2" + fi]) + ++AC_ARG_ENABLE(zlib, ++ AS_HELP_STRING([--disable-zlib], [disable ZLIB]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} zlib" ++ fi]) ++ + AC_ARG_ENABLE(dbm, + AS_HELP_STRING([--disable-dbm], [disable DBM]), + [ if test "$enableval" = "no"; then +-- +2.7.4 + diff --git a/buildroot/package/python/0030-Do-not-install-the-idle-editor.patch b/buildroot/package/python/0030-Do-not-install-the-idle-editor.patch new file mode 100644 index 0000000..60e64c8 --- /dev/null +++ b/buildroot/package/python/0030-Do-not-install-the-idle-editor.patch @@ -0,0 +1,53 @@ +From 4b7c45c756dccfd3b5ece36fe572042353d1c2f0 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:30:56 +0100 +Subject: [PATCH] Do not install the idle editor + +IDLE is the Python IDE built with the tkinter GUI toolkit. Since it's +highly unlikely to ever be useful in an embedded Linux system +generated by Buildroot, this patch simply disables the installation of +idle and the related Python modules. It saves 800 KB-900 KB of +installed .pyc files. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.pre.in | 2 -- + setup.py | 2 +- + 2 files changed, 1 insertion(+), 3 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 2582574..3cfc590 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1045,7 +1045,6 @@ LIBSUBDIRS= site-packages \ + json \ + logging csv importlib wsgiref \ + ctypes ctypes/macholib \ +- idlelib idlelib/Icons \ + distutils distutils/command \ + multiprocessing multiprocessing/dummy \ + unittest \ +@@ -1060,7 +1059,6 @@ TESTSUBDIRS = test test/audiodata test/capath test/data \ + email/test email/test/data \ + json/tests \ + ctypes/test \ +- idlelib/idle_test \ + distutils/tests \ + unittest/test + +diff --git a/setup.py b/setup.py +index c68f6b4..8045a9b 100644 +--- a/setup.py ++++ b/setup.py +@@ -2234,7 +2234,7 @@ def main(): + import warnings + warnings.filterwarnings("ignore",category=DeprecationWarning) + +- scripts = ['Tools/scripts/idle', 'Lib/smtpd.py'] ++ scripts = ['Lib/smtpd.py'] + if not '--disable-pydoc' in sysconfig.get_config_var("CONFIG_ARGS"): + scripts += [ 'Tools/scripts/pydoc' ] + if not '--disable-lib2to3' in sysconfig.get_config_var("CONFIG_ARGS"): +-- +2.7.4 + diff --git a/buildroot/package/python/0031-Add-an-option-to-disable-the-ossaudiodev-module.patch b/buildroot/package/python/0031-Add-an-option-to-disable-the-ossaudiodev-module.patch new file mode 100644 index 0000000..c2aea5e --- /dev/null +++ b/buildroot/package/python/0031-Add-an-option-to-disable-the-ossaudiodev-module.patch @@ -0,0 +1,30 @@ +From 6af0f179d3db956146bbabac8748675e3abc1f78 Mon Sep 17 00:00:00 2001 +From: Zoltan Gyarmati +Date: Tue, 7 Mar 2017 22:31:22 +0100 +Subject: [PATCH] Add an option to disable the ossaudiodev module + +Signed-off-by: Zoltan Gyarmati +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 291ba35..8dc573e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2898,6 +2898,12 @@ if test "$CURSES" = "no"; then + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _curses _curses_panel" + fi + ++AC_ARG_ENABLE(ossaudiodev, ++ AS_HELP_STRING([--disable-ossaudiodev], [disable OSSAUDIODEV]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} ossaudiodev" ++ fi]) ++ + AC_SUBST(PYDOC) + + AC_ARG_ENABLE(pydoc, +-- +2.7.4 + diff --git a/buildroot/package/python/0032-Add-option-to-disable-the-hashlib-module.patch b/buildroot/package/python/0032-Add-option-to-disable-the-hashlib-module.patch new file mode 100644 index 0000000..bb3ccfa --- /dev/null +++ b/buildroot/package/python/0032-Add-option-to-disable-the-hashlib-module.patch @@ -0,0 +1,30 @@ +From f11dc326ae216911a67bd563b619f39522c14bf2 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:33:02 +0100 +Subject: [PATCH] Add option to disable the hashlib module + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 8dc573e..854724d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2840,6 +2840,12 @@ AC_ARG_ENABLE(ssl, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} ssl" + fi]) + ++AC_ARG_ENABLE(hashlib, ++ AS_HELP_STRING([--disable-hashlib], [disable hashlib]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _hashlib" ++ fi]) ++ + AC_ARG_ENABLE(bz2, + AS_HELP_STRING([--disable-bz2], [disable BZIP2]), + [ if test "$enableval" = "no"; then +-- +2.7.4 + diff --git a/buildroot/package/python/0033-Add-an-option-to-disable-readline-module.patch b/buildroot/package/python/0033-Add-an-option-to-disable-readline-module.patch new file mode 100644 index 0000000..ade729f --- /dev/null +++ b/buildroot/package/python/0033-Add-an-option-to-disable-readline-module.patch @@ -0,0 +1,30 @@ +From 6b461f698bd33b3493207baf79f4ee02286be8e8 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 22:33:55 +0100 +Subject: [PATCH] Add an option to disable readline module + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 854724d..0a06497 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2846,6 +2846,12 @@ AC_ARG_ENABLE(hashlib, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _hashlib" + fi]) + ++AC_ARG_ENABLE(readline, ++ AS_HELP_STRING([--disable-readline], [disable readline]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} readline" ++ fi]) ++ + AC_ARG_ENABLE(bz2, + AS_HELP_STRING([--disable-bz2], [disable BZIP2]), + [ if test "$enableval" = "no"; then +-- +2.7.4 + diff --git a/buildroot/package/python/0034-Override-system-locale-and-set-to-default-when-addin.patch b/buildroot/package/python/0034-Override-system-locale-and-set-to-default-when-addin.patch new file mode 100644 index 0000000..8fe722b --- /dev/null +++ b/buildroot/package/python/0034-Override-system-locale-and-set-to-default-when-addin.patch @@ -0,0 +1,37 @@ +From d2bfa8805206db8c57c182094396d20a9d94bd8f Mon Sep 17 00:00:00 2001 +From: Samuel Cabrero +Date: Sat, 1 Apr 2017 09:31:52 +0200 +Subject: [PATCH] Override system locale and set to default when adding gcc + paths + +Forces the use of the default locale in the function +add_gcc_paths, which is called when cross compiling to add the +include and library paths. This is necessary because otherwise +the gcc output is localized and the output parsing fails, which +results in no paths added and detect_modules not able to find +any system library (eg. libz, libssl, etc.) + +[Thomas: patch taken from https://bugs.python.org/issue23767.] + +Signed-off-by: Samuel Cabrero +Signed-off-by: Thomas Petazzoni +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 8045a9b..c14f4ab 100644 +--- a/setup.py ++++ b/setup.py +@@ -430,7 +430,7 @@ class PyBuildExt(build_ext): + tmpfile = os.path.join(self.build_temp, 'gccpaths') + if not os.path.exists(self.build_temp): + os.makedirs(self.build_temp) +- ret = os.system('%s -E -v - %s 1>/dev/null' % (gcc, tmpfile)) ++ ret = os.system('LC_ALL=C %s -E -v - %s 1>/dev/null' % (gcc, tmpfile)) + is_gcc = False + in_incdirs = False + inc_dirs = [] +-- +2.7.4 + diff --git a/buildroot/package/python/Config.in b/buildroot/package/python/Config.in new file mode 100644 index 0000000..a7f1645 --- /dev/null +++ b/buildroot/package/python/Config.in @@ -0,0 +1,134 @@ +comment "python needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_PYTHON + bool "python" + depends on BR2_USE_WCHAR + # uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS # libffi + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBFFI + help + The python language interpreter. + + http://www.python.org/ + +if BR2_PACKAGE_PYTHON + +choice + prompt "python module format to install" + default BR2_PACKAGE_PYTHON_PYC_ONLY + help + Select Python module format to install on target (py, pyc or + both) + +config BR2_PACKAGE_PYTHON_PY_ONLY + bool ".py sources only" + +config BR2_PACKAGE_PYTHON_PYC_ONLY + bool ".pyc compiled sources only" + +config BR2_PACKAGE_PYTHON_PY_PYC + bool ".py sources and .pyc compiled" + +endchoice + +menu "core python modules" + +comment "The following modules are unusual or require extra libraries" + +config BR2_PACKAGE_PYTHON_BZIP2 + bool "bzip2 module" + select BR2_PACKAGE_BZIP2 + help + bzip2 module for Python + +config BR2_PACKAGE_PYTHON_BSDDB + bool "bsddb module" + select BR2_PACKAGE_BERKELEYDB + help + bsddb module for Python. + +config BR2_PACKAGE_PYTHON_CODECSCJK + bool "codecscjk module" + help + Chinese/Japanese/Korean codecs module for Python (large). + +config BR2_PACKAGE_PYTHON_CURSES + bool "curses module" + select BR2_PACKAGE_NCURSES + help + curses module for Python. + +config BR2_PACKAGE_PYTHON_OSSAUDIODEV + bool "ossaudiodev module" + help + ossaudiodev module for Python. + +config BR2_PACKAGE_PYTHON_READLINE + bool "readline" + select BR2_PACKAGE_READLINE + help + readline module for Python (required for command-line + editing in the Python shell). + +config BR2_PACKAGE_PYTHON_SSL + bool "ssl" + select BR2_PACKAGE_OPENSSL + help + _ssl module for Python (required for https in urllib etc). + +config BR2_PACKAGE_PYTHON_UNICODEDATA + bool "unicodedata module" + default y + help + Unicode character database (used by stringprep module) + (large). + +if BR2_PACKAGE_PYTHON_UNICODEDATA + +choice + prompt "Python unicode database format" + default BR2_PACKAGE_PYTHON_UCS2 + help + Select Python unicode database format for target + +config BR2_PACKAGE_PYTHON_UCS2 + bool "Universal Character Set 2-byte (UCS2)" + +config BR2_PACKAGE_PYTHON_UCS4 + bool "Universal Character Set 4-byte (UCS4)" + +endchoice + +endif + +config BR2_PACKAGE_PYTHON_SQLITE + bool "sqlite module" + select BR2_PACKAGE_SQLITE + help + SQLite database support + +config BR2_PACKAGE_PYTHON_PYEXPAT + bool "xml module" + select BR2_PACKAGE_EXPAT + help + pyexpat and xml libraries for Python + +config BR2_PACKAGE_PYTHON_ZLIB + bool "zlib module" + select BR2_PACKAGE_ZLIB + help + zlib support in Python + +config BR2_PACKAGE_PYTHON_HASHLIB + bool "hashlib module" + select BR2_PACKAGE_OPENSSL + help + hashlib support in Python + +endmenu + +endif diff --git a/buildroot/package/python/python.hash b/buildroot/package/python/python.hash new file mode 100644 index 0000000..feadcfd --- /dev/null +++ b/buildroot/package/python/python.hash @@ -0,0 +1,5 @@ +# From https://www.python.org/downloads/release/python-2715/ +md5 a80ae3cc478460b922242f43a1b4094d Python-2.7.15.tar.xz +# Locally calculated +sha256 22d9b1ac5b26135ad2b8c2901a9413537e08749a753356ee913c84dbd2df5574 Python-2.7.15.tar.xz +sha256 b9a6d9320b8f2693e8d41e496ce56caadacaddcca9be2a64a61749278f425cf2 LICENSE diff --git a/buildroot/package/python/python.mk b/buildroot/package/python/python.mk new file mode 100644 index 0000000..79df3c4 --- /dev/null +++ b/buildroot/package/python/python.mk @@ -0,0 +1,286 @@ +################################################################################ +# +# python +# +################################################################################ + +PYTHON_VERSION_MAJOR = 2.7 +PYTHON_VERSION = $(PYTHON_VERSION_MAJOR).15 +PYTHON_SOURCE = Python-$(PYTHON_VERSION).tar.xz +PYTHON_SITE = https://python.org/ftp/python/$(PYTHON_VERSION) +PYTHON_LICENSE = Python-2.0, others +PYTHON_LICENSE_FILES = LICENSE +PYTHON_LIBTOOL_PATCH = NO + +# Python needs itself to be built, so in order to cross-compile +# Python, we need to build a host Python first. This host Python is +# also installed in $(HOST_DIR), as it is needed when cross-compiling +# third-party Python modules. + +HOST_PYTHON_CONF_OPTS += \ + --enable-static \ + --without-cxx-main \ + --disable-sqlite3 \ + --disable-tk \ + --with-expat=system \ + --disable-curses \ + --disable-codecs-cjk \ + --disable-nis \ + --enable-unicodedata \ + --disable-dbm \ + --disable-gdbm \ + --disable-bsddb \ + --disable-test-modules \ + --disable-bz2 \ + --disable-ssl \ + --disable-ossaudiodev \ + --disable-pyo-build + +# Make sure that LD_LIBRARY_PATH overrides -rpath. +# This is needed because libpython may be installed at the same time that +# python is called. +# Make python believe we don't have 'hg' and 'svn', so that it doesn't +# try to communicate over the network during the build. +HOST_PYTHON_CONF_ENV += \ + LDFLAGS="$(HOST_LDFLAGS) -Wl,--enable-new-dtags" \ + ac_cv_prog_HAS_HG=/bin/false \ + ac_cv_prog_SVNVERSION=/bin/false + +# Building host python in parallel sometimes triggers a "Bus error" +# during the execution of "./python setup.py build" in the +# installation step. It is probably due to the installation of a +# shared library taking place in parallel to the execution of +# ./python, causing spurious Bus error. Building host-python with +# MAKE1 has shown to workaround the problem. +HOST_PYTHON_MAKE = $(MAKE1) + +PYTHON_DEPENDENCIES = host-python libffi $(TARGET_NLS_DEPENDENCIES) + +HOST_PYTHON_DEPENDENCIES = host-expat host-zlib + +PYTHON_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_PYTHON_READLINE),y) +PYTHON_DEPENDENCIES += readline +else +PYTHON_CONF_OPTS += --disable-readline +endif + +ifeq ($(BR2_PACKAGE_PYTHON_CURSES),y) +PYTHON_DEPENDENCIES += ncurses +else +PYTHON_CONF_OPTS += --disable-curses +endif + +ifeq ($(BR2_PACKAGE_PYTHON_PYEXPAT),y) +PYTHON_DEPENDENCIES += expat +PYTHON_CONF_OPTS += --with-expat=system +else +PYTHON_CONF_OPTS += --with-expat=none +endif + +ifeq ($(BR2_PACKAGE_PYTHON_BSDDB),y) +PYTHON_DEPENDENCIES += berkeleydb +else +PYTHON_CONF_OPTS += --disable-bsddb +endif + +ifeq ($(BR2_PACKAGE_PYTHON_SQLITE),y) +PYTHON_DEPENDENCIES += sqlite +else +PYTHON_CONF_OPTS += --disable-sqlite3 +endif + +ifeq ($(BR2_PACKAGE_PYTHON_SSL),y) +PYTHON_DEPENDENCIES += openssl +else +PYTHON_CONF_OPTS += --disable-ssl +endif + +ifneq ($(BR2_PACKAGE_PYTHON_CODECSCJK),y) +PYTHON_CONF_OPTS += --disable-codecs-cjk +endif + +ifneq ($(BR2_PACKAGE_PYTHON_UNICODEDATA),y) +PYTHON_CONF_OPTS += --disable-unicodedata +endif + +# Default is UCS2 w/o a conf opt +ifeq ($(BR2_PACKAGE_PYTHON_UCS4),y) +# host-python must have the same UCS2/4 configuration as the target +# python +HOST_PYTHON_CONF_OPTS += --enable-unicode=ucs4 +PYTHON_CONF_OPTS += --enable-unicode=ucs4 +endif + +ifeq ($(BR2_PACKAGE_PYTHON_BZIP2),y) +PYTHON_DEPENDENCIES += bzip2 +else +PYTHON_CONF_OPTS += --disable-bz2 +endif + +ifeq ($(BR2_PACKAGE_PYTHON_ZLIB),y) +PYTHON_DEPENDENCIES += zlib +else +PYTHON_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_PYTHON_HASHLIB),y) +PYTHON_DEPENDENCIES += openssl +else +PYTHON_CONF_OPTS += --disable-hashlib +endif + +ifeq ($(BR2_PACKAGE_PYTHON_OSSAUDIODEV),y) +PYTHON_CONF_OPTS += --enable-ossaudiodev +else +PYTHON_CONF_OPTS += --disable-ossaudiodev +endif + +# Make python believe we don't have 'hg' and 'svn', so that it doesn't +# try to communicate over the network during the build. +PYTHON_CONF_ENV += \ + ac_cv_have_long_long_format=yes \ + ac_cv_file__dev_ptmx=yes \ + ac_cv_file__dev_ptc=yes \ + ac_cv_working_tzset=yes \ + ac_cv_prog_HAS_HG=/bin/false \ + ac_cv_prog_SVNVERSION=/bin/false + +# GCC is always compliant with IEEE754 +ifeq ($(BR2_ENDIAN),"LITTLE") +PYTHON_CONF_ENV += ac_cv_little_endian_double=yes +else +PYTHON_CONF_ENV += ac_cv_big_endian_double=yes +endif + +PYTHON_CONF_OPTS += \ + --without-cxx-main \ + --without-doc-strings \ + --with-system-ffi \ + --disable-pydoc \ + --disable-test-modules \ + --disable-lib2to3 \ + --disable-gdbm \ + --disable-tk \ + --disable-nis \ + --disable-dbm \ + --disable-pyo-build \ + --disable-pyc-build + +# This is needed to make sure the Python build process doesn't try to +# regenerate those files with the pgen program. Otherwise, it builds +# pgen for the target, and tries to run it on the host. + +define PYTHON_TOUCH_GRAMMAR_FILES + touch $(@D)/Include/graminit.h $(@D)/Python/graminit.c +endef + +PYTHON_POST_PATCH_HOOKS += PYTHON_TOUCH_GRAMMAR_FILES + +# +# Remove useless files. In the config/ directory, only the Makefile +# and the pyconfig.h files are needed at runtime. +# +# idle & smtpd.py have bad shebangs and are mostly samples +# +define PYTHON_REMOVE_USELESS_FILES + rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON_VERSION_MAJOR)-config + rm -f $(TARGET_DIR)/usr/bin/python2-config + rm -f $(TARGET_DIR)/usr/bin/python-config + rm -f $(TARGET_DIR)/usr/bin/smtpd.py + for i in `find $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/config/ \ + -type f -not -name pyconfig.h -a -not -name Makefile` ; do \ + rm -f $$i ; \ + done +endef + +PYTHON_POST_INSTALL_TARGET_HOOKS += PYTHON_REMOVE_USELESS_FILES + +# +# Make sure libpython gets stripped out on target +# +define PYTHON_ENSURE_LIBPYTHON_STRIPPED + chmod u+w $(TARGET_DIR)/usr/lib/libpython$(PYTHON_VERSION_MAJOR)*.so +endef + +PYTHON_POST_INSTALL_TARGET_HOOKS += PYTHON_ENSURE_LIBPYTHON_STRIPPED + +# Always install the python symlink in the target tree +define PYTHON_INSTALL_TARGET_PYTHON_SYMLINK + ln -sf python2 $(TARGET_DIR)/usr/bin/python +endef + +PYTHON_POST_INSTALL_TARGET_HOOKS += PYTHON_INSTALL_TARGET_PYTHON_SYMLINK + +# Always install the python-config symlink in the staging tree +define PYTHON_INSTALL_STAGING_PYTHON_CONFIG_SYMLINK + ln -sf python2-config $(STAGING_DIR)/usr/bin/python-config +endef + +PYTHON_POST_INSTALL_STAGING_HOOKS += PYTHON_INSTALL_STAGING_PYTHON_CONFIG_SYMLINK + +PYTHON_AUTORECONF = YES + +# Some packages may have build scripts requiring python2. +# Only install the python symlink in the host tree if python3 is not enabled +# for the target, otherwise the default python program may be missing. +ifneq ($(BR2_PACKAGE_PYTHON3),y) +define HOST_PYTHON_INSTALL_PYTHON_SYMLINK + ln -sf python2 $(HOST_DIR)/bin/python + ln -sf python2-config $(HOST_DIR)/bin/python-config +endef + +HOST_PYTHON_POST_INSTALL_HOOKS += HOST_PYTHON_INSTALL_PYTHON_SYMLINK +endif + +# Provided to other packages +PYTHON_PATH = $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/sysconfigdata/ + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +ifeq ($(BR2_REPRODUCIBLE),y) +define PYTHON_FIX_TIME + find $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR) -name '*.py' -print0 | \ + xargs -0 --no-run-if-empty touch -d @$(SOURCE_DATE_EPOCH) +endef +endif + +define PYTHON_CREATE_PYC_FILES + $(PYTHON_FIX_TIME) + PYTHONPATH="$(PYTHON_PATH)" \ + cd $(TARGET_DIR) && $(HOST_DIR)/bin/python$(PYTHON_VERSION_MAJOR) \ + $(TOPDIR)/support/scripts/pycompile.py \ + $(if $(BR2_REPRODUCIBLE),--force) \ + usr/lib/python$(PYTHON_VERSION_MAJOR) +endef + +ifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY)$(BR2_PACKAGE_PYTHON_PY_PYC),y) +PYTHON_TARGET_FINALIZE_HOOKS += PYTHON_CREATE_PYC_FILES +endif + +ifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY),y) +define PYTHON_REMOVE_PY_FILES + find $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR) -name '*.py' -print0 | \ + xargs -0 --no-run-if-empty rm -f +endef +PYTHON_TARGET_FINALIZE_HOOKS += PYTHON_REMOVE_PY_FILES +endif + +# Normally, *.pyc files should not have been compiled, but just in +# case, we make sure we remove all of them. +ifeq ($(BR2_PACKAGE_PYTHON_PY_ONLY),y) +define PYTHON_REMOVE_PYC_FILES + find $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR) -name '*.pyc' -print0 | \ + xargs -0 --no-run-if-empty rm -f +endef +PYTHON_TARGET_FINALIZE_HOOKS += PYTHON_REMOVE_PYC_FILES +endif + +# In all cases, we don't want to keep the optimized .pyo files +define PYTHON_REMOVE_PYO_FILES + find $(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR) -name '*.pyo' -print0 | \ + xargs -0 --no-run-if-empty rm -f +endef +PYTHON_TARGET_FINALIZE_HOOKS += PYTHON_REMOVE_PYO_FILES diff --git a/buildroot/package/python3/0001-Make-the-build-of-pyc-files-conditional.patch b/buildroot/package/python3/0001-Make-the-build-of-pyc-files-conditional.patch new file mode 100644 index 0000000..4a8e4e8 --- /dev/null +++ b/buildroot/package/python3/0001-Make-the-build-of-pyc-files-conditional.patch @@ -0,0 +1,56 @@ +From e568f4deb7c648e3265154574db753601636cdda Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 16:21:31 -0800 +Subject: [PATCH] Make the build of pyc files conditional + +This commit adds a new configure option --disable-pyc-build to disable +the compilation of pyc. + +Signed-off-by: Thomas Petazzoni +[ Andrey Smrinov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Makefile.pre.in | 2 ++ + configure.ac | 6 ++++++ + 2 files changed, 8 insertions(+) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 82e830727e..b38bd79121 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1311,6 +1311,7 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c + $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \ + $(DESTDIR)$(LIBDEST)/distutils/tests ; \ + fi ++ifeq (@PYC_BUILD@,yes) + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST) -f \ +@@ -1338,6 +1339,7 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c + $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages ++endif + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ +diff --git a/configure.ac b/configure.ac +index 962006704f..a76b5444df 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1113,6 +1113,12 @@ fi + + AC_MSG_CHECKING(LDLIBRARY) + ++AC_SUBST(PYC_BUILD) ++ ++AC_ARG_ENABLE(pyc-build, ++ AS_HELP_STRING([--disable-pyc-build], [disable build of pyc files]), ++ [ PYC_BUILD="${enableval}" ], [ PYC_BUILD=yes ]) ++ + # MacOSX framework builds need more magic. LDLIBRARY is the dynamic + # library that we build, but we do not want to link against it (we + # will find it with a -framework option). For this reason there is an +-- +2.13.5 + diff --git a/buildroot/package/python3/0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch b/buildroot/package/python3/0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch new file mode 100644 index 0000000..e997f47 --- /dev/null +++ b/buildroot/package/python3/0002-Disable-buggy_getaddrinfo-configure-test-when-cross-.patch @@ -0,0 +1,27 @@ +From 8ec1677d16bef6d6ee5cee4ff004dfa3d0428e88 Mon Sep 17 00:00:00 2001 +From: Vanya Sergeev +Date: Wed, 23 Dec 2015 11:30:33 +0100 +Subject: [PATCH] Disable buggy_getaddrinfo configure test when cross-compiling + with IPv6 support + +Signed-off-by: Vanya Sergeev +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index a76b5444df..5f87c4db5a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3939,7 +3939,7 @@ fi + + AC_MSG_RESULT($ac_cv_buggy_getaddrinfo) + +-if test $have_getaddrinfo = no || test "$ac_cv_buggy_getaddrinfo" = yes ++if test $have_getaddrinfo = no || test "$cross_compiling" != "yes" -a "$ac_cv_buggy_getaddrinfo" = yes + then + if test $ipv6 = yes + then +-- +2.13.5 + diff --git a/buildroot/package/python3/0003-Add-infrastructure-to-disable-the-build-of-certain-e.patch b/buildroot/package/python3/0003-Add-infrastructure-to-disable-the-build-of-certain-e.patch new file mode 100644 index 0000000..76555d2 --- /dev/null +++ b/buildroot/package/python3/0003-Add-infrastructure-to-disable-the-build-of-certain-e.patch @@ -0,0 +1,109 @@ +From 2c2afc80831c518e5daf3df6c9e4c4ac0a7be001 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 16:33:22 -0800 +Subject: [PATCH] Add infrastructure to disable the build of certain extensions + +Some of the extensions part of the Python core have dependencies on +external libraries (sqlite, tk, etc.) or are relatively big and not +necessarly always useful (CJK codecs for example). By extensions, we +mean part of Python modules that are written in C and therefore +compiled to binary code. + +Therefore, we introduce a small infrastructure that allows to disable +some of those extensions. This can be done inside the configure.ac by +adding values to the DISABLED_EXTENSIONS variable (which is a +word-separated list of extensions). + +The implementation works as follow : + + * configure.ac defines a DISABLED_EXTENSIONS variable, which is + substituted (so that when Makefile.pre is generated from + Makefile.pre.in, the value of the variable is substituted). For + now, this DISABLED_EXTENSIONS variable is empty, later patches will + use it. + + * Makefile.pre.in passes the DISABLED_EXTENSIONS value down to the + variables passed in the environment when calling the setup.py + script that actually builds and installs those extensions. + + * setup.py is modified so that the existing "disabled_module_list" is + filled with those pre-disabled extensions listed in + DISABLED_EXTENSIONS. + +Patch ported to python2.7 by Maxime Ripard , and +then extended by Thomas Petazzoni +. + +Signed-off-by: Thomas Petazzoni +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Makefile.pre.in | 6 +++++- + configure.ac | 2 ++ + setup.py | 6 +++++- + 3 files changed, 12 insertions(+), 2 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index b38bd79121..4ce917ab8d 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -190,6 +190,8 @@ FILEMODE= 644 + # configure script arguments + CONFIG_ARGS= @CONFIG_ARGS@ + ++# disabled extensions ++DISABLED_EXTENSIONS= @DISABLED_EXTENSIONS@ + + # Subdirectories with code + SRCDIRS= @SRCDIRS@ +@@ -575,6 +577,7 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o + esac; \ + $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \ + _TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \ ++ DISABLED_EXTENSIONS="$(DISABLED_EXTENSIONS)" \ + $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build + + +@@ -1436,7 +1439,8 @@ libainstall: @DEF_MAKE_RULE@ python-config + # Install the dynamically loadable modules + # This goes into $(exec_prefix) + sharedinstall: sharedmods +- $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \ ++ $(RUNSHARED) DISABLED_EXTENSIONS="$(DISABLED_EXTENSIONS)" \ ++ $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --install-platlib=$(DESTSHARED) \ +diff --git a/configure.ac b/configure.ac +index 5f87c4db5a..d5ee2aedfb 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2810,6 +2810,8 @@ LIBS="$withval $LIBS" + + PKG_PROG_PKG_CONFIG + ++AC_SUBST(DISABLED_EXTENSIONS) ++ + # Check for use of the system expat library + AC_MSG_CHECKING(for --with-system-expat) + AC_ARG_WITH(system_expat, +diff --git a/setup.py b/setup.py +index fe477974bd..86643ae8bf 100644 +--- a/setup.py ++++ b/setup.py +@@ -43,7 +43,11 @@ host_platform = get_platform() + COMPILED_WITH_PYDEBUG = ('--with-pydebug' in sysconfig.get_config_var("CONFIG_ARGS")) + + # This global variable is used to hold the list of modules to be disabled. +-disabled_module_list = [] ++try: ++ disabled_module_list = sysconfig.get_config_var("DISABLED_EXTENSIONS").split(" ") ++except KeyError: ++ disabled_module_list = list() ++ + + def add_dir_to_list(dirlist, dir): + """Add the directory 'dir' to the list 'dirlist' (after any relative +-- +2.13.5 + diff --git a/buildroot/package/python3/0004-Adjust-library-header-paths-for-cross-compilation.patch b/buildroot/package/python3/0004-Adjust-library-header-paths-for-cross-compilation.patch new file mode 100644 index 0000000..989943e --- /dev/null +++ b/buildroot/package/python3/0004-Adjust-library-header-paths-for-cross-compilation.patch @@ -0,0 +1,67 @@ +From e359a7a3c4f9e70360a068bef19c95938fdacede Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 23 Dec 2015 11:33:14 +0100 +Subject: [PATCH] Adjust library/header paths for cross-compilation + +When cross-compiling third-party extensions, the get_python_inc() or +get_python_lib() can be called, to return the path to headers or +libraries. However, they use the sys.prefix of the host Python, which +returns incorrect paths when cross-compiling (paths pointing to host +headers and libraries). + +In order to fix this, we introduce the _python_sysroot, _python_prefix +and _python_exec_prefix variables, that allow to override these +values, and get correct header/library paths when cross-compiling +third-party Python modules. + +Signed-off-by: Thomas Petazzoni +--- + Lib/distutils/command/build_ext.py | 5 ++++- + Lib/distutils/sysconfig.py | 15 +++++++++++---- + 2 files changed, 15 insertions(+), 5 deletions(-) + +diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py +index 74de782d8a..d0c847b365 100644 +--- a/Lib/distutils/command/build_ext.py ++++ b/Lib/distutils/command/build_ext.py +@@ -233,7 +233,10 @@ class build_ext(Command): + if (sysconfig.get_config_var('Py_ENABLE_SHARED')): + if not sysconfig.python_build: + # building third party extensions +- self.library_dirs.append(sysconfig.get_config_var('LIBDIR')) ++ libdir = sysconfig.get_config_var('LIBDIR') ++ if "_python_sysroot" in os.environ: ++ libdir = os.environ.get("_python_sysroot") + libdir ++ self.library_dirs.append(libdir) + else: + # building python standard extensions + self.library_dirs.append('.') +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py +index 2bcd1dd288..422c13fa4f 100644 +--- a/Lib/distutils/sysconfig.py ++++ b/Lib/distutils/sysconfig.py +@@ -17,10 +17,17 @@ import sys + from .errors import DistutilsPlatformError + + # These are needed in a couple of spots, so just compute them once. +-PREFIX = os.path.normpath(sys.prefix) +-EXEC_PREFIX = os.path.normpath(sys.exec_prefix) +-BASE_PREFIX = os.path.normpath(sys.base_prefix) +-BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix) ++if "_python_sysroot" in os.environ: ++ _sysroot=os.environ.get('_python_sysroot') ++ PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_prefix')) ++ EXEC_PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_exec_prefix')) ++ BASE_PREFIX = PREFIX ++ BASE_EXEC_PREFIX = EXEC_PREFIX ++else: ++ PREFIX = os.path.normpath(sys.prefix) ++ EXEC_PREFIX = os.path.normpath(sys.exec_prefix) ++ BASE_PREFIX = os.path.normpath(sys.base_prefix) ++ BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix) + + # Path to the base directory of the project. On Windows the binary may + # live in project/PCBuild/win32 or project/PCBuild/amd64. +-- +2.13.5 + diff --git a/buildroot/package/python3/0005-Don-t-look-in-usr-lib-termcap-for-libraries.patch b/buildroot/package/python3/0005-Don-t-look-in-usr-lib-termcap-for-libraries.patch new file mode 100644 index 0000000..250d6ec --- /dev/null +++ b/buildroot/package/python3/0005-Don-t-look-in-usr-lib-termcap-for-libraries.patch @@ -0,0 +1,31 @@ +From 01b588baf835ec95df7c5696eff1f6c07eaa1108 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 23 Dec 2015 11:36:00 +0100 +Subject: [PATCH] Don't look in /usr/lib/termcap for libraries + +Signed-off-by: Thomas Petazzoni +--- + setup.py | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/setup.py b/setup.py +index 86643ae8bf..cd00fbdbda 100644 +--- a/setup.py ++++ b/setup.py +@@ -786,12 +786,9 @@ class PyBuildExt(build_ext): + pass # Issue 7384: Already linked against curses or tinfo. + elif curses_library: + readline_libs.append(curses_library) +- elif self.compiler.find_library_file(lib_dirs + +- ['/usr/lib/termcap'], +- 'termcap'): ++ elif self.compiler.find_library_file(lib_dirs, 'termcap'): + readline_libs.append('termcap') + exts.append( Extension('readline', ['readline.c'], +- library_dirs=['/usr/lib/termcap'], + extra_link_args=readline_extra_link_args, + libraries=readline_libs) ) + else: +-- +2.13.5 + diff --git a/buildroot/package/python3/0006-Don-t-add-multiarch-paths.patch b/buildroot/package/python3/0006-Don-t-add-multiarch-paths.patch new file mode 100644 index 0000000..220c54c --- /dev/null +++ b/buildroot/package/python3/0006-Don-t-add-multiarch-paths.patch @@ -0,0 +1,37 @@ +From 9055171433d5f6beae90815e8c075dc1e0938936 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 23 Dec 2015 11:36:27 +0100 +Subject: [PATCH] Don't add multiarch paths + +The add_multiarch_paths() function leads, in certain build +environments, to the addition of host header paths to the CFLAGS, +which is not appropriate for cross-compilation. This patch fixes that +by simply removing the call to add_multiarch_paths() when we're +cross-compiling. + +Investigation done by David . + +Signed-off-by: Thomas Petazzoni +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index cd00fbdbda..c956fa08d1 100644 +--- a/setup.py ++++ b/setup.py +@@ -497,10 +497,10 @@ class PyBuildExt(build_ext): + if not cross_compiling: + add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') ++ self.add_multiarch_paths() + # only change this for cross builds for 3.3, issues on Mageia + if cross_compiling: + self.add_gcc_paths() +- self.add_multiarch_paths() + + # Add paths specified in the environment variables LDFLAGS and + # CPPFLAGS for header and library files. +-- +2.13.5 + diff --git a/buildroot/package/python3/0007-Abort-on-failed-module-build.patch b/buildroot/package/python3/0007-Abort-on-failed-module-build.patch new file mode 100644 index 0000000..a44d6b3 --- /dev/null +++ b/buildroot/package/python3/0007-Abort-on-failed-module-build.patch @@ -0,0 +1,30 @@ +From 63ab4a20076740bd39985c7dee3d6231cdc74c75 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 23 Dec 2015 11:43:24 +0100 +Subject: [PATCH] Abort on failed module build + +When building a Python module fails, the setup.py script currently +doesn't exit with an error, and simply continues. This is not a really +nice behavior, so this patch changes setup.py to abort with an error, +so that the build issue is clearly noticeable. + +Signed-off-by: Thomas Petazzoni +--- + setup.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/setup.py b/setup.py +index c956fa08d1..b3add2be76 100644 +--- a/setup.py ++++ b/setup.py +@@ -312,6 +312,7 @@ class PyBuildExt(build_ext): + print("Failed to build these modules:") + print_three_column(failed) + print() ++ sys.exit(1) + + if self.failed_on_import: + failed = self.failed_on_import[:] +-- +2.13.5 + diff --git a/buildroot/package/python3/0008-Serial-ioctl-workaround.patch b/buildroot/package/python3/0008-Serial-ioctl-workaround.patch new file mode 100644 index 0000000..f303bd0 --- /dev/null +++ b/buildroot/package/python3/0008-Serial-ioctl-workaround.patch @@ -0,0 +1,33 @@ +From 20767cb868ff271f4501a6e023f367400882d75e Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Wed, 23 Dec 2015 11:44:02 +0100 +Subject: [PATCH] Serial ioctl() workaround + +The ioctls.h of some architectures (notably xtensa) references structs from +linux/serial.h. Make sure to include this header as well. + +Also, undef TIOCTTYGSTRUCT that require reference to internal kernel tty_struct, +but isn't actually referenced in modern kernels. + +Signed-off-by: Baruch Siach +--- + Modules/termios.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Modules/termios.c b/Modules/termios.c +index b78d33e688..58b0444565 100644 +--- a/Modules/termios.c ++++ b/Modules/termios.c +@@ -9,7 +9,9 @@ + #endif + + #include ++#include + #include ++#undef TIOCTTYGSTRUCT + + /* HP-UX requires that this be included to pick up MDCD, MCTS, MDSR, + * MDTR, MRI, and MRTS (appearantly used internally by some things +-- +2.13.5 + diff --git a/buildroot/package/python3/0009-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch b/buildroot/package/python3/0009-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch new file mode 100644 index 0000000..ce84d11 --- /dev/null +++ b/buildroot/package/python3/0009-Do-not-adjust-the-shebang-of-Python-scripts-for-cros.patch @@ -0,0 +1,35 @@ +From 8869b15c754ae615203b65a99e043f56770bacd5 Mon Sep 17 00:00:00 2001 +From: Christophe Vu-Brugier +Date: Wed, 23 Dec 2015 11:44:30 +0100 +Subject: [PATCH] Do not adjust the shebang of Python scripts for + cross-compilation + +The copy_scripts() method in distutils copies the scripts listed in +the setup file and adjusts the first line to refer to the current +Python interpreter. When cross-compiling, this means that the adjusted +shebang refers to the host Python interpreter. + +This patch modifies copy_scripts() to preserve the shebang when +cross-compilation is detected. + +Signed-off-by: Christophe Vu-Brugier +--- + Lib/distutils/command/build_scripts.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/distutils/command/build_scripts.py b/Lib/distutils/command/build_scripts.py +index ccc70e6465..d6d54195c1 100644 +--- a/Lib/distutils/command/build_scripts.py ++++ b/Lib/distutils/command/build_scripts.py +@@ -91,7 +91,7 @@ class build_scripts(Command): + adjust = True + post_interp = match.group(1) or b'' + +- if adjust: ++ if adjust and not '_python_sysroot' in os.environ: + log.info("copying and adjusting %s -> %s", script, + self.build_dir) + updated_files.append(outfile) +-- +2.13.5 + diff --git a/buildroot/package/python3/0010-Misc-python-config.sh.in-ensure-sed-invocations-only.patch b/buildroot/package/python3/0010-Misc-python-config.sh.in-ensure-sed-invocations-only.patch new file mode 100644 index 0000000..786e958 --- /dev/null +++ b/buildroot/package/python3/0010-Misc-python-config.sh.in-ensure-sed-invocations-only.patch @@ -0,0 +1,60 @@ +From da3880edac19100f69891f225cc2f07a82be1e52 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Thu, 20 Nov 2014 13:24:59 +0100 +Subject: [PATCH] Misc/python-config.sh.in: ensure sed invocations only match + beginning of strings + +The build/real prefix handling using sed breaks if build != real and the +standard include / lib directories are used ($prefix/include and $prefix/lib). + +E.G. + +prefix_build="/usr", libdir="$prefix/lib", includedir="$prefix/include". + +If this gets installed with make DESTDIR="/foo" install, then we end up with +prefix_real = prefix = "/foo/usr" as expected, but +includedir="/foo/foo/usr/include" and libdir="/foo/foo/usr/lib" because of +the double sed invocation (prefix is already expanded). Work around it by +ensuring we only match the beginning of the string. + +Submitted upstream: http://bugs.python.org/issue22907 + +Signed-off-by: Peter Korsgaard +--- + Misc/python-config.sh.in | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/Misc/python-config.sh.in b/Misc/python-config.sh.in +index 30c6927871..f905a7132f 100644 +--- a/Misc/python-config.sh.in ++++ b/Misc/python-config.sh.in +@@ -29,12 +29,12 @@ prefix_real=$(installed_prefix "$0") + + # Use sed to fix paths from their built-to locations to their installed-to + # locations. +-prefix=$(echo "$prefix_build" | sed "s#$prefix_build#$prefix_real#") ++prefix=$(echo "$prefix_build" | sed "s#^$prefix_build#$prefix_real#") + exec_prefix_build="@exec_prefix@" +-exec_prefix=$(echo "$exec_prefix_build" | sed "s#$exec_prefix_build#$prefix_real#") +-includedir=$(echo "@includedir@" | sed "s#$prefix_build#$prefix_real#") +-libdir=$(echo "@libdir@" | sed "s#$prefix_build#$prefix_real#") +-CFLAGS=$(echo "@CFLAGS@" | sed "s#$prefix_build#$prefix_real#") ++exec_prefix=$(echo "$exec_prefix_build" | sed "s#^$exec_prefix_build#$prefix_real#") ++includedir=$(echo "@includedir@" | sed "s#^$prefix_build#$prefix_real#") ++libdir=$(echo "@libdir@" | sed "s#^$prefix_build#$prefix_real#") ++CFLAGS=$(echo "@CFLAGS@" | sed "s#^$prefix_build#$prefix_real#") + VERSION="@VERSION@" + LIBM="@LIBM@" + LIBC="@LIBC@" +@@ -48,7 +48,7 @@ OPT="@OPT@" + PY_ENABLE_SHARED="@PY_ENABLE_SHARED@" + LDVERSION="@LDVERSION@" + LIBDEST=${prefix}/lib/python${VERSION} +-LIBPL=$(echo "@LIBPL@" | sed "s#$prefix_build#$prefix_real#") ++LIBPL=$(echo "@LIBPL@" | sed "s#^$prefix_build#$prefix_real#") + SO="@EXT_SUFFIX@" + PYTHONFRAMEWORK="@PYTHONFRAMEWORK@" + INCDIR="-I$includedir/python${VERSION}${ABIFLAGS}" +-- +2.13.5 + diff --git a/buildroot/package/python3/0011-Override-system-locale-and-set-to-default-when-addin.patch b/buildroot/package/python3/0011-Override-system-locale-and-set-to-default-when-addin.patch new file mode 100644 index 0000000..1c14840 --- /dev/null +++ b/buildroot/package/python3/0011-Override-system-locale-and-set-to-default-when-addin.patch @@ -0,0 +1,37 @@ +From 660ea434ad8f921db74c0e3f93aa3ff5daac44f3 Mon Sep 17 00:00:00 2001 +From: Samuel Cabrero +Date: Wed, 23 Dec 2015 11:45:48 +0100 +Subject: [PATCH] Override system locale and set to default when adding gcc + paths + +Forces the use of the default locale in the function +add_gcc_paths, which is called when cross compiling to add the +include and library paths. This is necessary because otherwise +the gcc output is localized and the output parsing fails, which +results in no paths added and detect_modules not able to find +any system library (eg. libz, libssl, etc.) + +[Thomas: patch taken from https://bugs.python.org/issue23767.] + +Signed-off-by: Samuel Cabrero +Signed-off-by: Thomas Petazzoni +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index b3add2be76..29bfd174d2 100644 +--- a/setup.py ++++ b/setup.py +@@ -457,7 +457,7 @@ class PyBuildExt(build_ext): + tmpfile = os.path.join(self.build_temp, 'gccpaths') + if not os.path.exists(self.build_temp): + os.makedirs(self.build_temp) +- ret = os.system('%s -E -v - %s 1>/dev/null' % (gcc, tmpfile)) ++ ret = os.system('LC_ALL=C %s -E -v - %s 1>/dev/null' % (gcc, tmpfile)) + is_gcc = False + in_incdirs = False + inc_dirs = [] +-- +2.13.5 + diff --git a/buildroot/package/python3/0012-Add-importlib-fix-for-PEP-3147-issue.patch b/buildroot/package/python3/0012-Add-importlib-fix-for-PEP-3147-issue.patch new file mode 100644 index 0000000..ed0ca26 --- /dev/null +++ b/buildroot/package/python3/0012-Add-importlib-fix-for-PEP-3147-issue.patch @@ -0,0 +1,99 @@ +From 9db508467be41bc35f06c0076c855b99a1519d24 Mon Sep 17 00:00:00 2001 +From: Christophe Vu-Brugier +Date: Wed, 22 Feb 2017 16:48:49 -0800 +Subject: [PATCH] Add importlib fix for PEP 3147 issue + +Python 3 has a new standard for installing .pyc file, called PEP +3147. Unfortunately, this standard requires both the .py and .pyc +files to be installed for a Python module to be found. This is quite +annoying on space-constrained embedded systems, since the .py file is +technically not required for execution. + +This patch changes cache_from_source() and source_from_cache() in +importlib to get rid of the "__pycache__" directory. +This effectively disables PEP 3147 for: + +* The python standard library +* Packages built with distutils or setuptools +* Packages built with automake that use the `py-compile` helper + +Signed-off-by: Christophe Vu-Brugier +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Lib/importlib/_bootstrap_external.py | 38 +++++------------------------------- + 1 file changed, 5 insertions(+), 33 deletions(-) + +diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py +index 9feec50842..3550013d58 100644 +--- a/Lib/importlib/_bootstrap_external.py ++++ b/Lib/importlib/_bootstrap_external.py +@@ -275,8 +275,6 @@ def cache_from_source(path, debug_override=None, *, optimization=None): + a True value is the same as setting 'optimization' to the empty string + while a False value is equivalent to setting 'optimization' to '1'. + +- If sys.implementation.cache_tag is None then NotImplementedError is raised. +- + """ + if debug_override is not None: + _warnings.warn('the debug_override parameter is deprecated; use ' +@@ -288,10 +286,7 @@ def cache_from_source(path, debug_override=None, *, optimization=None): + path = _os.fspath(path) + head, tail = _path_split(path) + base, sep, rest = tail.rpartition('.') +- tag = sys.implementation.cache_tag +- if tag is None: +- raise NotImplementedError('sys.implementation.cache_tag is None') +- almost_filename = ''.join([(base if base else rest), sep, tag]) ++ almost_filename = ''.join([(base if base else rest)]) + if optimization is None: + if sys.flags.optimize == 0: + optimization = '' +@@ -302,40 +297,17 @@ def cache_from_source(path, debug_override=None, *, optimization=None): + if not optimization.isalnum(): + raise ValueError('{!r} is not alphanumeric'.format(optimization)) + almost_filename = '{}.{}{}'.format(almost_filename, _OPT, optimization) +- return _path_join(head, _PYCACHE, almost_filename + BYTECODE_SUFFIXES[0]) ++ return _path_join(head, almost_filename + BYTECODE_SUFFIXES[0]) + + + def source_from_cache(path): + """Given the path to a .pyc. file, return the path to its .py file. + + The .pyc file does not need to exist; this simply returns the path to +- the .py file calculated to correspond to the .pyc file. If path does +- not conform to PEP 3147/488 format, ValueError will be raised. If +- sys.implementation.cache_tag is None then NotImplementedError is raised. +- ++ the .py file calculated to correspond to the .pyc file. + """ +- if sys.implementation.cache_tag is None: +- raise NotImplementedError('sys.implementation.cache_tag is None') +- path = _os.fspath(path) +- head, pycache_filename = _path_split(path) +- head, pycache = _path_split(head) +- if pycache != _PYCACHE: +- raise ValueError('{} not bottom-level directory in ' +- '{!r}'.format(_PYCACHE, path)) +- dot_count = pycache_filename.count('.') +- if dot_count not in {2, 3}: +- raise ValueError('expected only 2 or 3 dots in ' +- '{!r}'.format(pycache_filename)) +- elif dot_count == 3: +- optimization = pycache_filename.rsplit('.', 2)[-2] +- if not optimization.startswith(_OPT): +- raise ValueError("optimization portion of filename does not start " +- "with {!r}".format(_OPT)) +- opt_level = optimization[len(_OPT):] +- if not opt_level.isalnum(): +- raise ValueError("optimization level {!r} is not an alphanumeric " +- "value".format(optimization)) +- base_filename = pycache_filename.partition('.')[0] ++ head, filename = _path_split(path) ++ base_filename = filename.partition('.')[0] + return _path_join(head, base_filename + SOURCE_SUFFIXES[0]) + + +-- +2.13.5 + diff --git a/buildroot/package/python3/0013-Add-an-option-to-disable-installation-of-test-module.patch b/buildroot/package/python3/0013-Add-an-option-to-disable-installation-of-test-module.patch new file mode 100644 index 0000000..fc27eda --- /dev/null +++ b/buildroot/package/python3/0013-Add-an-option-to-disable-installation-of-test-module.patch @@ -0,0 +1,115 @@ +From bba0896a05e6406076893dd2f4c3b330e41082a6 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:01:18 -0800 +Subject: [PATCH] Add an option to disable installation of test modules + +The Python standard distribution comes with many test modules, that +are not necessarly useful on embedded targets. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Makefile.pre.in | 55 ++++++++++++++++++++++++++++++++++++------------------- + configure.ac | 5 +++++ + 2 files changed, 41 insertions(+), 19 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 4ce917ab8d..4110fff4ac 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1194,8 +1194,28 @@ maninstall: altmaninstall + + # Install the library + XMLLIBSUBDIRS= xml xml/dom xml/etree xml/parsers xml/sax +-LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \ +- tkinter/test/test_ttk site-packages test \ ++ ++LIBSUBDIRS= tkinter site-packages \ ++ asyncio \ ++ collections concurrent concurrent/futures encodings \ ++ email email/mime \ ++ ensurepip ensurepip/_bundled \ ++ html json http dbm xmlrpc \ ++ sqlite3 \ ++ logging csv wsgiref urllib \ ++ lib2to3 lib2to3/fixes lib2to3/pgen2 \ ++ ctypes ctypes/macholib \ ++ idlelib idlelib/Icons \ ++ distutils distutils/command $(XMLLIBSUBDIRS) \ ++ importlib \ ++ turtledemo \ ++ multiprocessing multiprocessing/dummy \ ++ unittest \ ++ venv venv/scripts venv/scripts/common venv/scripts/posix \ ++ curses pydoc_data ++ ++TESTSUBDIRS= tkinter/test tkinter/test/test_tkinter \ ++ tkinter/test/test_ttk test \ + test/audiodata \ + test/capath test/data \ + test/cjkencodings test/decimaltestdata test/xmltestdata \ +@@ -1229,29 +1249,26 @@ LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \ + test/test_importlib/namespace_pkgs/project3/parent/child \ + test/test_importlib/namespace_pkgs/module_and_namespace_package \ + test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test \ +- asyncio \ + test/test_asyncio \ +- collections concurrent concurrent/futures encodings \ +- email email/mime test/test_email test/test_email/data \ +- ensurepip ensurepip/_bundled \ +- html json test/test_json http dbm xmlrpc \ +- sqlite3 sqlite3/test \ +- logging csv wsgiref urllib \ +- lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \ ++ test/test_email test/test_email/data \ ++ test/test_json \ ++ sqlite3/test \ ++ lib2to3/tests \ + lib2to3/tests/data lib2to3/tests/data/fixers \ + lib2to3/tests/data/fixers/myfixes \ +- ctypes ctypes/test ctypes/macholib \ +- idlelib idlelib/Icons idlelib/idle_test \ +- distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \ +- importlib test/test_importlib test/test_importlib/builtin \ ++ ctypes/test \ ++ idlelib/idle_test \ ++ distutils/tests \ ++ test/test_importlib test/test_importlib/builtin \ + test/test_importlib/extension test/test_importlib/frozen \ + test/test_importlib/import_ test/test_importlib/source \ + test/test_tools test/test_warnings test/test_warnings/data \ +- turtledemo \ +- multiprocessing multiprocessing/dummy \ +- unittest unittest/test unittest/test/testmock \ +- venv venv/scripts venv/scripts/common venv/scripts/posix \ +- curses pydoc_data ++ unittest/test unittest/test/testmock ++ ++ifeq (@TEST_MODULES@,yes) ++LIBSUBDIRS += $(TESTSUBDIRS) ++endif ++ + libinstall: build_all $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ +diff --git a/configure.ac b/configure.ac +index d5ee2aedfb..f924937fe1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3112,6 +3112,11 @@ if test "$posix_threads" = "yes"; then + AC_CHECK_FUNCS(pthread_atfork) + fi + ++AC_SUBST(TEST_MODULES) ++ ++AC_ARG_ENABLE(test-modules, ++ AS_HELP_STRING([--disable-test-modules], [disable test modules]), ++ [ TEST_MODULES="${enableval}" ], [ TEST_MODULES=yes ]) + + # Check for enable-ipv6 + AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified]) +-- +2.13.5 + diff --git a/buildroot/package/python3/0014-Add-an-option-to-disable-pydoc.patch b/buildroot/package/python3/0014-Add-an-option-to-disable-pydoc.patch new file mode 100644 index 0000000..fc565cf --- /dev/null +++ b/buildroot/package/python3/0014-Add-an-option-to-disable-pydoc.patch @@ -0,0 +1,99 @@ +From 18a754e930e03d143d9392e49174cc370b334cdd Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:07:56 -0800 +Subject: [PATCH] Add an option to disable pydoc + +It removes 0.5 MB of data from the target plus the pydoc script +itself. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Makefile.pre.in | 8 +++++++- + configure.ac | 6 ++++++ + setup.py | 9 +++++++-- + 3 files changed, 20 insertions(+), 3 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 4110fff4ac..badb2af35d 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1164,7 +1164,9 @@ bininstall: altbininstall + -rm -f $(DESTDIR)$(BINDIR)/idle3 + (cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3) + -rm -f $(DESTDIR)$(BINDIR)/pydoc3 ++ifeq (@PYDOC@,yes) + (cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3) ++endif + -rm -f $(DESTDIR)$(BINDIR)/2to3 + (cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3) + -rm -f $(DESTDIR)$(BINDIR)/pyvenv +@@ -1212,7 +1214,7 @@ LIBSUBDIRS= tkinter site-packages \ + multiprocessing multiprocessing/dummy \ + unittest \ + venv venv/scripts venv/scripts/common venv/scripts/posix \ +- curses pydoc_data ++ curses + + TESTSUBDIRS= tkinter/test tkinter/test/test_tkinter \ + tkinter/test/test_ttk test \ +@@ -1269,6 +1271,10 @@ ifeq (@TEST_MODULES@,yes) + LIBSUBDIRS += $(TESTSUBDIRS) + endif + ++ifeq (@PYDOC@,yes) ++LIBSUBDIRS += pydoc_data ++endif ++ + libinstall: build_all $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ +diff --git a/configure.ac b/configure.ac +index f924937fe1..1621fa1611 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3112,6 +3112,12 @@ if test "$posix_threads" = "yes"; then + AC_CHECK_FUNCS(pthread_atfork) + fi + ++AC_SUBST(PYDOC) ++ ++AC_ARG_ENABLE(pydoc, ++ AS_HELP_STRING([--disable-pydoc], [disable pydoc]), ++ [ PYDOC="${enableval}" ], [ PYDOC=yes ]) ++ + AC_SUBST(TEST_MODULES) + + AC_ARG_ENABLE(test-modules, +diff --git a/setup.py b/setup.py +index 29bfd174d2..94dd337fef 100644 +--- a/setup.py ++++ b/setup.py +@@ -2281,6 +2281,12 @@ def main(): + # turn off warnings when deprecated modules are imported + import warnings + warnings.filterwarnings("ignore",category=DeprecationWarning) ++ ++ scripts = ['Tools/scripts/idle3', 'Tools/scripts/2to3', ++ 'Lib/smtpd.py'] ++ if not '--disable-pydoc' in sysconfig.get_config_var("CONFIG_ARGS"): ++ scripts += [ 'Tools/scripts/pydoc3' ] ++ + setup(# PyPI Metadata (PEP 301) + name = "Python", + version = sys.version.split()[0], +@@ -2305,8 +2311,7 @@ def main(): + # If you change the scripts installed here, you also need to + # check the PyBuildScripts command above, and change the links + # created by the bininstall target in Makefile.pre.in +- scripts = ["Tools/scripts/pydoc3", "Tools/scripts/idle3", +- "Tools/scripts/2to3", "Tools/scripts/pyvenv"] ++ scripts = scripts + ) + + # --install-platlib +-- +2.13.5 + diff --git a/buildroot/package/python3/0015-Add-an-option-to-disable-lib2to3.patch b/buildroot/package/python3/0015-Add-an-option-to-disable-lib2to3.patch new file mode 100644 index 0000000..e6a3938 --- /dev/null +++ b/buildroot/package/python3/0015-Add-an-option-to-disable-lib2to3.patch @@ -0,0 +1,116 @@ +From c2d279b4a19de7a32e8a73e320423f699d408380 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:15:31 -0800 +Subject: [PATCH] Add an option to disable lib2to3 + +lib2to3 is a library to convert Python 2.x code to Python 3.x. As +such, it is probably not very useful on embedded system targets. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Makefile.pre.in | 16 ++++++++++++---- + configure.ac | 6 ++++++ + setup.py | 5 +++-- + 3 files changed, 21 insertions(+), 6 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index badb2af35d..931cc3ed07 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1168,7 +1168,9 @@ ifeq (@PYDOC@,yes) + (cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3) + endif + -rm -f $(DESTDIR)$(BINDIR)/2to3 ++ifeq (@LIB2TO3@,yes) + (cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3) ++endif + -rm -f $(DESTDIR)$(BINDIR)/pyvenv + (cd $(DESTDIR)$(BINDIR); $(LN) -s pyvenv-$(VERSION) pyvenv) + if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \ +@@ -1205,7 +1207,6 @@ LIBSUBDIRS= tkinter site-packages \ + html json http dbm xmlrpc \ + sqlite3 \ + logging csv wsgiref urllib \ +- lib2to3 lib2to3/fixes lib2to3/pgen2 \ + ctypes ctypes/macholib \ + idlelib idlelib/Icons \ + distutils distutils/command $(XMLLIBSUBDIRS) \ +@@ -1255,9 +1256,6 @@ TESTSUBDIRS= tkinter/test tkinter/test/test_tkinter \ + test/test_email test/test_email/data \ + test/test_json \ + sqlite3/test \ +- lib2to3/tests \ +- lib2to3/tests/data lib2to3/tests/data/fixers \ +- lib2to3/tests/data/fixers/myfixes \ + ctypes/test \ + idlelib/idle_test \ + distutils/tests \ +@@ -1267,6 +1265,14 @@ TESTSUBDIRS= tkinter/test tkinter/test/test_tkinter \ + test/test_tools test/test_warnings test/test_warnings/data \ + unittest/test unittest/test/testmock + ++ifeq (@LIB2TO3@,yes) ++LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2 ++TESTSUBDIRS += lib2to3/tests \ ++ lib2to3/tests/data \ ++ lib2to3/tests/data/fixers \ ++ lib2to3/tests/data/fixers/myfixes ++endif ++ + ifeq (@TEST_MODULES@,yes) + LIBSUBDIRS += $(TESTSUBDIRS) + endif +@@ -1366,10 +1372,12 @@ ifeq (@PYC_BUILD@,yes) + -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages + endif ++ifeq (@LIB2TO3@,yes) + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt ++endif + + python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh + # Substitution happens here, as the completely-expanded BINDIR +diff --git a/configure.ac b/configure.ac +index 1621fa1611..13b2edf8b7 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3124,6 +3124,12 @@ AC_ARG_ENABLE(test-modules, + AS_HELP_STRING([--disable-test-modules], [disable test modules]), + [ TEST_MODULES="${enableval}" ], [ TEST_MODULES=yes ]) + ++AC_SUBST(LIB2TO3) ++ ++AC_ARG_ENABLE(lib2to3, ++ AS_HELP_STRING([--disable-lib2to3], [disable lib2to3]), ++ [ LIB2TO3="${enableval}" ], [ LIB2TO3=yes ]) ++ + # Check for enable-ipv6 + AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified]) + AC_MSG_CHECKING([if --enable-ipv6 is specified]) +diff --git a/setup.py b/setup.py +index 94dd337fef..76429e1326 100644 +--- a/setup.py ++++ b/setup.py +@@ -2282,10 +2282,11 @@ def main(): + import warnings + warnings.filterwarnings("ignore",category=DeprecationWarning) + +- scripts = ['Tools/scripts/idle3', 'Tools/scripts/2to3', +- 'Lib/smtpd.py'] ++ scripts = ['Tools/scripts/idle3', 'Lib/smtpd.py'] + if not '--disable-pydoc' in sysconfig.get_config_var("CONFIG_ARGS"): + scripts += [ 'Tools/scripts/pydoc3' ] ++ if not '--disable-lib2to3' in sysconfig.get_config_var("CONFIG_ARGS"): ++ scripts += [ 'Tools/scripts/2to3' ] + + setup(# PyPI Metadata (PEP 301) + name = "Python", +-- +2.13.5 + diff --git a/buildroot/package/python3/0016-Add-option-to-disable-the-sqlite3-module.patch b/buildroot/package/python3/0016-Add-option-to-disable-the-sqlite3-module.patch new file mode 100644 index 0000000..675e828 --- /dev/null +++ b/buildroot/package/python3/0016-Add-option-to-disable-the-sqlite3-module.patch @@ -0,0 +1,69 @@ +From f2965dfb1aa4f6b3216f3bb1d20f99326f127079 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:20:45 -0800 +Subject: [PATCH] Add option to disable the sqlite3 module + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Makefile.pre.in | 7 +++++-- + configure.ac | 9 +++++++++ + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 931cc3ed07..a1ce0712cd 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1205,7 +1205,6 @@ LIBSUBDIRS= tkinter site-packages \ + email email/mime \ + ensurepip ensurepip/_bundled \ + html json http dbm xmlrpc \ +- sqlite3 \ + logging csv wsgiref urllib \ + ctypes ctypes/macholib \ + idlelib idlelib/Icons \ +@@ -1255,7 +1254,6 @@ TESTSUBDIRS= tkinter/test tkinter/test/test_tkinter \ + test/test_asyncio \ + test/test_email test/test_email/data \ + test/test_json \ +- sqlite3/test \ + ctypes/test \ + idlelib/idle_test \ + distutils/tests \ +@@ -1273,6 +1271,11 @@ TESTSUBDIRS += lib2to3/tests \ + lib2to3/tests/data/fixers/myfixes + endif + ++ifeq (@SQLITE3@,yes) ++LIBSUBDIRS += sqlite3 ++TESTSUBDIRS += sqlite3/test ++endif ++ + ifeq (@TEST_MODULES@,yes) + LIBSUBDIRS += $(TESTSUBDIRS) + endif +diff --git a/configure.ac b/configure.ac +index 13b2edf8b7..d7582cfea4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3112,6 +3112,15 @@ if test "$posix_threads" = "yes"; then + AC_CHECK_FUNCS(pthread_atfork) + fi + ++AC_SUBST(SQLITE3) ++AC_ARG_ENABLE(sqlite3, ++ AS_HELP_STRING([--disable-sqlite3], [disable sqlite3]), ++ [ SQLITE3="${enableval}" ], [ SQLITE3=yes ]) ++ ++if test "$SQLITE3" = "no" ; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _sqlite3" ++fi ++ + AC_SUBST(PYDOC) + + AC_ARG_ENABLE(pydoc, +-- +2.13.5 + diff --git a/buildroot/package/python3/0017-Add-an-option-to-disable-the-tk-module.patch b/buildroot/package/python3/0017-Add-an-option-to-disable-the-tk-module.patch new file mode 100644 index 0000000..5619641 --- /dev/null +++ b/buildroot/package/python3/0017-Add-an-option-to-disable-the-tk-module.patch @@ -0,0 +1,73 @@ +From f96a00d42e714171f1d90501ed73594fddee570f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:23:42 -0800 +Subject: [PATCH] Add an option to disable the tk module + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Makefile.pre.in | 11 ++++++++--- + configure.ac | 9 +++++++++ + 2 files changed, 17 insertions(+), 3 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index a1ce0712cd..dc1e917cc3 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1199,7 +1199,7 @@ maninstall: altmaninstall + # Install the library + XMLLIBSUBDIRS= xml xml/dom xml/etree xml/parsers xml/sax + +-LIBSUBDIRS= tkinter site-packages \ ++LIBSUBDIRS= site-packages \ + asyncio \ + collections concurrent concurrent/futures encodings \ + email email/mime \ +@@ -1216,8 +1216,7 @@ LIBSUBDIRS= tkinter site-packages \ + venv venv/scripts venv/scripts/common venv/scripts/posix \ + curses + +-TESTSUBDIRS= tkinter/test tkinter/test/test_tkinter \ +- tkinter/test/test_ttk test \ ++TESTSUBDIRS= test \ + test/audiodata \ + test/capath test/data \ + test/cjkencodings test/decimaltestdata test/xmltestdata \ +@@ -1263,6 +1262,12 @@ TESTSUBDIRS= tkinter/test tkinter/test/test_tkinter \ + test/test_tools test/test_warnings test/test_warnings/data \ + unittest/test unittest/test/testmock + ++ifeq (@TK@,yes) ++LIBSUBDIRS += tkinter ++TESTSUBDIRS += tkinter/test tkinter/test/test_tkinter \ ++ tkinter/test/test_ttk ++endif ++ + ifeq (@LIB2TO3@,yes) + LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2 + TESTSUBDIRS += lib2to3/tests \ +diff --git a/configure.ac b/configure.ac +index d7582cfea4..6a56a5b0c1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3121,6 +3121,15 @@ if test "$SQLITE3" = "no" ; then + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _sqlite3" + fi + ++AC_SUBST(TK) ++AC_ARG_ENABLE(tk, ++ AS_HELP_STRING([--disable-tk], [disable tk]), ++ [ TK="${enableval}" ], [ TK=yes ]) ++ ++if test "$TK" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _tkinter" ++fi ++ + AC_SUBST(PYDOC) + + AC_ARG_ENABLE(pydoc, +-- +2.13.5 + diff --git a/buildroot/package/python3/0018-Add-an-option-to-disable-the-curses-module.patch b/buildroot/package/python3/0018-Add-an-option-to-disable-the-curses-module.patch new file mode 100644 index 0000000..b68369c --- /dev/null +++ b/buildroot/package/python3/0018-Add-an-option-to-disable-the-curses-module.patch @@ -0,0 +1,62 @@ +From 404aad42698c6d5cbd78421720f9a2bc0e8ec9fe Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:31:51 -0800 +Subject: [PATCH] Add an option to disable the curses module + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Makefile.pre.in | 7 +++++-- + configure.ac | 9 +++++++++ + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index dc1e917cc3..6a6bc082cd 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1213,8 +1213,7 @@ LIBSUBDIRS= site-packages \ + turtledemo \ + multiprocessing multiprocessing/dummy \ + unittest \ +- venv venv/scripts venv/scripts/common venv/scripts/posix \ +- curses ++ venv venv/scripts venv/scripts/common venv/scripts/posix + + TESTSUBDIRS= test \ + test/audiodata \ +@@ -1268,6 +1267,10 @@ TESTSUBDIRS += tkinter/test tkinter/test/test_tkinter \ + tkinter/test/test_ttk + endif + ++ifeq (@CURSES@,yes) ++LIBSUBDIRS += curses ++endif ++ + ifeq (@LIB2TO3@,yes) + LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2 + TESTSUBDIRS += lib2to3/tests \ +diff --git a/configure.ac b/configure.ac +index 6a56a5b0c1..5896b39ff9 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3130,6 +3130,15 @@ if test "$TK" = "no"; then + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _tkinter" + fi + ++AC_SUBST(CURSES) ++AC_ARG_ENABLE(curses, ++ AS_HELP_STRING([--disable-curses], [disable curses]), ++ [ CURSES="${enableval}" ], [ CURSES=yes ]) ++ ++if test "$CURSES" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _curses _curses_panel" ++fi ++ + AC_SUBST(PYDOC) + + AC_ARG_ENABLE(pydoc, +-- +2.13.5 + diff --git a/buildroot/package/python3/0019-Add-an-option-to-disable-expat.patch b/buildroot/package/python3/0019-Add-an-option-to-disable-expat.patch new file mode 100644 index 0000000..0ec0b21 --- /dev/null +++ b/buildroot/package/python3/0019-Add-an-option-to-disable-expat.patch @@ -0,0 +1,92 @@ +From 63fc5bc90cb57460552b544cbed0c2939759ab9e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 22 Feb 2017 17:40:45 -0800 +Subject: [PATCH] Add an option to disable expat + +This patch replaces the existing --with-system-expat option with a +--with-expat={system,builtin,none} option, which allows to tell Python +whether we want to use the system expat (already installed), the expat +builtin the Python sources, or no expat at all (which disables the +installation of XML modules). + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Samuel Martin +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Makefile.pre.in | 6 +++++- + configure.ac | 18 +++++++++++++----- + setup.py | 2 +- + 3 files changed, 19 insertions(+), 7 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 6a6bc082cd..dc4b92b6fe 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1208,7 +1208,7 @@ LIBSUBDIRS= site-packages \ + logging csv wsgiref urllib \ + ctypes ctypes/macholib \ + idlelib idlelib/Icons \ +- distutils distutils/command $(XMLLIBSUBDIRS) \ ++ distutils distutils/command \ + importlib \ + turtledemo \ + multiprocessing multiprocessing/dummy \ +@@ -1271,6 +1271,10 @@ ifeq (@CURSES@,yes) + LIBSUBDIRS += curses + endif + ++ifeq (@EXPAT@,yes) ++LIBSUBDIRS += $(XMLLIBSUBDIRS) ++endif ++ + ifeq (@LIB2TO3@,yes) + LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2 + TESTSUBDIRS += lib2to3/tests \ +diff --git a/configure.ac b/configure.ac +index 5896b39ff9..6f21482207 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2813,13 +2813,21 @@ PKG_PROG_PKG_CONFIG + AC_SUBST(DISABLED_EXTENSIONS) + + # Check for use of the system expat library +-AC_MSG_CHECKING(for --with-system-expat) +-AC_ARG_WITH(system_expat, +- AS_HELP_STRING([--with-system-expat], [build pyexpat module using an installed expat library]), ++AC_MSG_CHECKING(for --with-expat) ++AC_ARG_WITH(expat, ++ AS_HELP_STRING([--with-expat], [select which expat version to use: system, builtin, none]), + [], +- [with_system_expat="no"]) ++ [with_expat="builtin"]) + +-AC_MSG_RESULT($with_system_expat) ++AC_MSG_RESULT($with_expat) ++ ++if test "$with_expat" != "none"; then ++ EXPAT=yes ++else ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} pyexpat" ++ EXPAT=no ++fi ++AC_SUBST(EXPAT) + + # Check for use of the system libffi library + AC_MSG_CHECKING(for --with-system-ffi) +diff --git a/setup.py b/setup.py +index 76429e1326..38aa5e605e 100644 +--- a/setup.py ++++ b/setup.py +@@ -1495,7 +1495,7 @@ class PyBuildExt(build_ext): + # + # More information on Expat can be found at www.libexpat.org. + # +- if '--with-system-expat' in sysconfig.get_config_var("CONFIG_ARGS"): ++ if '--with-expat=system' in sysconfig.get_config_var("CONFIG_ARGS"): + expat_inc = [] + define_macros = [] + expat_lib = ['expat'] +-- +2.13.5 + diff --git a/buildroot/package/python3/0020-Add-an-option-to-disable-CJK-codecs.patch b/buildroot/package/python3/0020-Add-an-option-to-disable-CJK-codecs.patch new file mode 100644 index 0000000..6b316d8 --- /dev/null +++ b/buildroot/package/python3/0020-Add-an-option-to-disable-CJK-codecs.patch @@ -0,0 +1,30 @@ +From 3335500cb13a6bc1ab41dfcf00b33e6ade3b9764 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 23 Dec 2015 11:49:55 +0100 +Subject: [PATCH] Add an option to disable CJK codecs + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 6f21482207..c7742faf41 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3129,6 +3129,12 @@ if test "$SQLITE3" = "no" ; then + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _sqlite3" + fi + ++AC_ARG_ENABLE(codecs-cjk, ++ AS_HELP_STRING([--disable-codecs-cjk], [disable CJK codecs]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk _codecs_iso2022" ++ fi]) ++ + AC_SUBST(TK) + AC_ARG_ENABLE(tk, + AS_HELP_STRING([--disable-tk], [disable tk]), +-- +2.13.5 + diff --git a/buildroot/package/python3/0021-Add-an-option-to-disable-NIS.patch b/buildroot/package/python3/0021-Add-an-option-to-disable-NIS.patch new file mode 100644 index 0000000..f49b23f --- /dev/null +++ b/buildroot/package/python3/0021-Add-an-option-to-disable-NIS.patch @@ -0,0 +1,33 @@ +From e52d4868cc1192f7e1c147aebaf4fc6f7de30357 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 23 Dec 2015 11:50:11 +0100 +Subject: [PATCH] Add an option to disable NIS + +NIS is not necessarily available in uClibc, so we need an option to +not compile support for it. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index c7742faf41..42a871bb09 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3135,6 +3135,12 @@ AC_ARG_ENABLE(codecs-cjk, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk _codecs_iso2022" + fi]) + ++AC_ARG_ENABLE(nis, ++ AS_HELP_STRING([--disable-nis], [disable NIS]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} nis" ++ fi]) ++ + AC_SUBST(TK) + AC_ARG_ENABLE(tk, + AS_HELP_STRING([--disable-tk], [disable tk]), +-- +2.13.5 + diff --git a/buildroot/package/python3/0022-Add-an-option-to-disable-unicodedata.patch b/buildroot/package/python3/0022-Add-an-option-to-disable-unicodedata.patch new file mode 100644 index 0000000..9c207be --- /dev/null +++ b/buildroot/package/python3/0022-Add-an-option-to-disable-unicodedata.patch @@ -0,0 +1,30 @@ +From 69d3e8f0438d01adde55e90eeabafa4abefd3b02 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 23 Dec 2015 11:50:27 +0100 +Subject: [PATCH] Add an option to disable unicodedata + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 42a871bb09..1d610e132b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3141,6 +3141,12 @@ AC_ARG_ENABLE(nis, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} nis" + fi]) + ++AC_ARG_ENABLE(unicodedata, ++ AS_HELP_STRING([--disable-unicodedata], [disable unicodedata]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} unicodedata" ++ fi]) ++ + AC_SUBST(TK) + AC_ARG_ENABLE(tk, + AS_HELP_STRING([--disable-tk], [disable tk]), +-- +2.13.5 + diff --git a/buildroot/package/python3/0023-Add-an-option-to-disable-IDLE.patch b/buildroot/package/python3/0023-Add-an-option-to-disable-IDLE.patch new file mode 100644 index 0000000..da77c44 --- /dev/null +++ b/buildroot/package/python3/0023-Add-an-option-to-disable-IDLE.patch @@ -0,0 +1,89 @@ +From 5bbd94f014c89665d02a8a32442822ab7c5520d0 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Wed, 22 Feb 2017 17:45:14 -0800 +Subject: [PATCH] Add an option to disable IDLE + +IDLE is an IDE embedded into python, written using Tk, so it doesn't make +much sense to have it into our build. + +Signed-off-by: Maxime Ripard +[ Andrey Smirnov: ported to Python 3.6 ] +Signed-off-by: Andrey Smirnov +--- + Makefile.pre.in | 7 ++++++- + configure.ac | 6 ++++++ + setup.py | 4 +++- + 3 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index dc4b92b6fe..3e43066d90 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1162,7 +1162,9 @@ bininstall: altbininstall + -rm -f $(DESTDIR)$(LIBPC)/python3.pc + (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python3.pc) + -rm -f $(DESTDIR)$(BINDIR)/idle3 ++ifeq (@IDLE@,yes) + (cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3) ++endif + -rm -f $(DESTDIR)$(BINDIR)/pydoc3 + ifeq (@PYDOC@,yes) + (cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3) +@@ -1207,7 +1209,6 @@ LIBSUBDIRS= site-packages \ + html json http dbm xmlrpc \ + logging csv wsgiref urllib \ + ctypes ctypes/macholib \ +- idlelib idlelib/Icons \ + distutils distutils/command \ + importlib \ + turtledemo \ +@@ -1275,6 +1276,10 @@ ifeq (@EXPAT@,yes) + LIBSUBDIRS += $(XMLLIBSUBDIRS) + endif + ++ifeq (@IDLE@,yes) ++LIBSUBDIRS += idlelib idlelib/Icons ++endif ++ + ifeq (@LIB2TO3@,yes) + LIBSUBDIRS += lib2to3 lib2to3/fixes lib2to3/pgen2 + TESTSUBDIRS += lib2to3/tests \ +diff --git a/configure.ac b/configure.ac +index 1d610e132b..2699e7ceb1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3183,6 +3183,12 @@ AC_ARG_ENABLE(lib2to3, + AS_HELP_STRING([--disable-lib2to3], [disable lib2to3]), + [ LIB2TO3="${enableval}" ], [ LIB2TO3=yes ]) + ++AC_SUBST(IDLE) ++ ++AC_ARG_ENABLE(idle3, ++ AS_HELP_STRING([--disable-idle3], [disable idle3 IDE]), ++ [ IDLE="${enableval}" ], [ IDLE=yes ]) ++ + # Check for enable-ipv6 + AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified]) + AC_MSG_CHECKING([if --enable-ipv6 is specified]) +diff --git a/setup.py b/setup.py +index 38aa5e605e..d642825c1e 100644 +--- a/setup.py ++++ b/setup.py +@@ -2282,11 +2282,13 @@ def main(): + import warnings + warnings.filterwarnings("ignore",category=DeprecationWarning) + +- scripts = ['Tools/scripts/idle3', 'Lib/smtpd.py'] ++ scripts = [ 'Lib/smtpd.py'] + if not '--disable-pydoc' in sysconfig.get_config_var("CONFIG_ARGS"): + scripts += [ 'Tools/scripts/pydoc3' ] + if not '--disable-lib2to3' in sysconfig.get_config_var("CONFIG_ARGS"): + scripts += [ 'Tools/scripts/2to3' ] ++ if not '--disable-idle3' in sysconfig.get_config_var("CONFIG_ARGS"): ++ scripts += [ 'Tools/scripts/idle3' ] + + setup(# PyPI Metadata (PEP 301) + name = "Python", +-- +2.13.5 + diff --git a/buildroot/package/python3/0024-Add-an-option-to-disable-decimal.patch b/buildroot/package/python3/0024-Add-an-option-to-disable-decimal.patch new file mode 100644 index 0000000..76ef508 --- /dev/null +++ b/buildroot/package/python3/0024-Add-an-option-to-disable-decimal.patch @@ -0,0 +1,62 @@ +From 0870559b9af82b55f1fd8b35528510f563577256 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 23 Dec 2015 11:51:31 +0100 +Subject: [PATCH] Add an option to disable decimal + +This patch replaces the existing --with-system-libmpdec option with a +--with-libmpdec={system,builtin,none} option, which allows to tell +Python whether we want to use the system libmpdec (already installed), +the libmpdec builtin the Python sources, or no libmpdec at all. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 17 ++++++++++++----- + setup.py | 2 +- + 2 files changed, 13 insertions(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 2699e7ceb1..e2c3b6f25c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2862,13 +2862,20 @@ AC_SUBST(LIBFFI_INCLUDEDIR) + AC_MSG_RESULT($with_system_ffi) + + # Check for use of the system libmpdec library +-AC_MSG_CHECKING(for --with-system-libmpdec) +-AC_ARG_WITH(system_libmpdec, +- AS_HELP_STRING([--with-system-libmpdec], [build _decimal module using an installed libmpdec library]), ++AC_MSG_CHECKING(for --with-libmpdec) ++AC_ARG_WITH(libmpdec, ++ AS_HELP_STRING([--with-libmpdec], [select which libmpdec version to use: system, builtin, none]), + [], +- [with_system_libmpdec="no"]) ++ [with_libmpdec="builtin"]) + +-AC_MSG_RESULT($with_system_libmpdec) ++AC_MSG_RESULT($with_libmpdec) ++if test "$with_libmpdec" != "none"; then ++ MPDEC=yes ++else ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _decimal" ++ MPDEC=no ++fi ++AC_SUBST(MPDEC) + + # Check for support for loadable sqlite extensions + AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions) +diff --git a/setup.py b/setup.py +index d642825c1e..5b98255857 100644 +--- a/setup.py ++++ b/setup.py +@@ -2058,7 +2058,7 @@ class PyBuildExt(build_ext): + def _decimal_ext(self): + extra_compile_args = [] + undef_macros = [] +- if '--with-system-libmpdec' in sysconfig.get_config_var("CONFIG_ARGS"): ++ if '--with-libmpdec=system' in sysconfig.get_config_var("CONFIG_ARGS"): + include_dirs = [] + libraries = [':libmpdec.so.2'] + sources = ['_decimal/_decimal.c'] +-- +2.13.5 + diff --git a/buildroot/package/python3/0025-Add-an-option-to-disable-the-ossaudiodev-module.patch b/buildroot/package/python3/0025-Add-an-option-to-disable-the-ossaudiodev-module.patch new file mode 100644 index 0000000..418936c --- /dev/null +++ b/buildroot/package/python3/0025-Add-an-option-to-disable-the-ossaudiodev-module.patch @@ -0,0 +1,30 @@ +From a04fb6159e394ec8346cd49993fdf70db3e1b184 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 23 Dec 2015 11:51:58 +0100 +Subject: [PATCH] Add an option to disable the ossaudiodev module + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index e2c3b6f25c..8e3dded25e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2877,6 +2877,12 @@ else + fi + AC_SUBST(MPDEC) + ++AC_ARG_ENABLE(ossaudiodev, ++ AS_HELP_STRING([--disable-ossaudiodev], [disable OSSAUDIODEV]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} ossaudiodev" ++ fi]) ++ + # Check for support for loadable sqlite extensions + AC_MSG_CHECKING(for --enable-loadable-sqlite-extensions) + AC_ARG_ENABLE(loadable-sqlite-extensions, +-- +2.13.5 + diff --git a/buildroot/package/python3/0026-Add-an-option-to-disable-openssl-support.patch b/buildroot/package/python3/0026-Add-an-option-to-disable-openssl-support.patch new file mode 100644 index 0000000..065e506 --- /dev/null +++ b/buildroot/package/python3/0026-Add-an-option-to-disable-openssl-support.patch @@ -0,0 +1,30 @@ +From 4b001683ad1cb1d90b7c389e67447a250fa9c218 Mon Sep 17 00:00:00 2001 +From: Nicolas Cavallari +Date: Wed, 22 Feb 2017 17:55:59 -0800 +Subject: [PATCH] Add an option to disable openssl support. + +Signed-off-by: Nicolas Cavallari +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 8e3dded25e..28bcdabd67 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3160,6 +3160,12 @@ AC_ARG_ENABLE(unicodedata, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} unicodedata" + fi]) + ++AC_ARG_ENABLE(openssl, ++ AS_HELP_STRING([--disable-openssl], [disable openssl support]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} ssl _ssl _hashlib" ++ fi]) ++ + AC_SUBST(TK) + AC_ARG_ENABLE(tk, + AS_HELP_STRING([--disable-tk], [disable tk]), +-- +2.13.5 + diff --git a/buildroot/package/python3/0027-Add-an-option-to-disable-the-readline-module.patch b/buildroot/package/python3/0027-Add-an-option-to-disable-the-readline-module.patch new file mode 100644 index 0000000..eb19675 --- /dev/null +++ b/buildroot/package/python3/0027-Add-an-option-to-disable-the-readline-module.patch @@ -0,0 +1,30 @@ +From d35deaa5c65c29f2a56a29fd5fc1dadadd485eaf Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 23:29:05 +0100 +Subject: [PATCH] Add an option to disable the readline module + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 28bcdabd67..484f6ebaca 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3166,6 +3166,12 @@ AC_ARG_ENABLE(openssl, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} ssl _ssl _hashlib" + fi]) + ++AC_ARG_ENABLE(readline, ++ AS_HELP_STRING([--disable-readline], [disable readline]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} readline" ++ fi]) ++ + AC_SUBST(TK) + AC_ARG_ENABLE(tk, + AS_HELP_STRING([--disable-tk], [disable tk]), +-- +2.13.5 + diff --git a/buildroot/package/python3/0028-Add-options-to-disable-zlib-bzip2-and-xz-modules.patch b/buildroot/package/python3/0028-Add-options-to-disable-zlib-bzip2-and-xz-modules.patch new file mode 100644 index 0000000..39330ac --- /dev/null +++ b/buildroot/package/python3/0028-Add-options-to-disable-zlib-bzip2-and-xz-modules.patch @@ -0,0 +1,42 @@ +From 9e95f88906f850caa789977dab4b0f256b575254 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 7 Mar 2017 23:31:11 +0100 +Subject: [PATCH] Add options to disable zlib, bzip2 and xz modules + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 484f6ebaca..79538df0cf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3172,6 +3172,24 @@ AC_ARG_ENABLE(readline, + DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} readline" + fi]) + ++AC_ARG_ENABLE(bzip2, ++ AS_HELP_STRING([--disable-bzip2], [disable bzip2]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _bz2" ++ fi]) ++ ++AC_ARG_ENABLE(zlib, ++ AS_HELP_STRING([--disable-zlib], [disable zlib]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} zlib" ++ fi]) ++ ++AC_ARG_ENABLE(xz, ++ AS_HELP_STRING([--disable-xz], [disable xz]), ++ [ if test "$enableval" = "no"; then ++ DISABLED_EXTENSIONS="${DISABLED_EXTENSIONS} _lzma" ++ fi]) ++ + AC_SUBST(TK) + AC_ARG_ENABLE(tk, + AS_HELP_STRING([--disable-tk], [disable tk]), +-- +2.13.5 + diff --git a/buildroot/package/python3/0029-python-config.sh-don-t-reassign-prefix.patch b/buildroot/package/python3/0029-python-config.sh-don-t-reassign-prefix.patch new file mode 100644 index 0000000..49137f2 --- /dev/null +++ b/buildroot/package/python3/0029-python-config.sh-don-t-reassign-prefix.patch @@ -0,0 +1,53 @@ +From 21f787cb9bf0c1440981262f03bc881c5b77c0d8 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Fri, 6 Oct 2017 09:54:15 -0500 +Subject: [PATCH] python-config.sh: don't reassign ${prefix} + +When prefix is set to a path like /usr during crossbuild +the sed operations end up executing twice, once for the prefix +reassignment and another for includedir if it is set as a string +including the ${prefix} variable. This results in an issue +when the build directory is under /usr. + +This patch updates the remaining location which uses the prefix +variable to also sed and update to use the real path. + +Upstream bug report: +https://bugs.python.org/issue31713 + +Buildroot bug: +https://bugs.busybox.net/show_bug.cgi?id=10361 + +Fixes failures like the following: +dbus-python-1.2.4 | NOK | http://autobuild.buildroot.net/results/758858efa97b6273c1b470513f5492258a6d8853 + +Signed-off-by: Matthew Weber +--- + Misc/python-config.sh.in | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/Misc/python-config.sh.in b/Misc/python-config.sh.in +index f905a71..e06be0f 100644 +--- a/Misc/python-config.sh.in ++++ b/Misc/python-config.sh.in +@@ -29,7 +29,7 @@ prefix_real=$(installed_prefix "$0") + + # Use sed to fix paths from their built-to locations to their installed-to + # locations. +-prefix=$(echo "$prefix_build" | sed "s#^$prefix_build#$prefix_real#") ++prefix=$prefix_build + exec_prefix_build="@exec_prefix@" + exec_prefix=$(echo "$exec_prefix_build" | sed "s#^$exec_prefix_build#$prefix_real#") + includedir=$(echo "@includedir@" | sed "s#^$prefix_build#$prefix_real#") +@@ -47,7 +46,7 @@ LINKFORSHARED="@LINKFORSHARED@" + OPT="@OPT@" + PY_ENABLE_SHARED="@PY_ENABLE_SHARED@" + LDVERSION="@LDVERSION@" +-LIBDEST=${prefix}/lib/python${VERSION} ++LIBDEST=$( echo "${prefix}/lib/python${VERSION}" | sed "s#^$prefix_build#$prefix_real#") + LIBPL=$(echo "@LIBPL@" | sed "s#^$prefix_build#$prefix_real#") + SO="@EXT_SUFFIX@" + PYTHONFRAMEWORK="@PYTHONFRAMEWORK@" +-- +1.8.3.1 + diff --git a/buildroot/package/python3/Config.in b/buildroot/package/python3/Config.in new file mode 100644 index 0000000..623fefe --- /dev/null +++ b/buildroot/package/python3/Config.in @@ -0,0 +1,117 @@ +comment "python3 needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_PYTHON3 + bool "python3" + depends on !BR2_PACKAGE_PYTHON + depends on BR2_USE_WCHAR + # uses fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS # libffi + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBFFI + help + The python language interpreter. + + http://www.python.org/ + +if BR2_PACKAGE_PYTHON3 + +choice + prompt "python3 module format to install" + default BR2_PACKAGE_PYTHON3_PYC_ONLY + help + Select Python module format to install on target (py, pyc or + both) + +config BR2_PACKAGE_PYTHON3_PY_ONLY + bool ".py sources only" + +config BR2_PACKAGE_PYTHON3_PYC_ONLY + bool ".pyc compiled sources only" + +config BR2_PACKAGE_PYTHON3_PY_PYC + bool ".py sources and .pyc compiled" + +endchoice + +menu "core python3 modules" + +comment "The following modules are unusual or require extra libraries" + +config BR2_PACKAGE_PYTHON3_BZIP2 + bool "bz2 module" + select BR2_PACKAGE_BZIP2 + help + bzip2 module for Python3 + +config BR2_PACKAGE_PYTHON3_CODECSCJK + bool "codecscjk module" + help + Chinese/Japanese/Korean codecs module for Python (large). + +config BR2_PACKAGE_PYTHON3_CURSES + bool "curses module" + select BR2_PACKAGE_NCURSES + help + curses module for Python3. + +config BR2_PACKAGE_PYTHON3_DECIMAL + bool "decimal module" + select BR2_PACKAGE_MPDECIMAL + help + decimal module for Python3. + +config BR2_PACKAGE_PYTHON3_OSSAUDIODEV + bool "ossaudiodev module" + help + ossaudiodev module for Python3. + +config BR2_PACKAGE_PYTHON3_READLINE + bool "readline" + select BR2_PACKAGE_READLINE + help + readline module for Python3 (required for command-line + editing in the Python shell). + +config BR2_PACKAGE_PYTHON3_SSL + bool "ssl" + select BR2_PACKAGE_OPENSSL + help + _ssl module for Python3 (required for https in urllib etc). + +config BR2_PACKAGE_PYTHON3_UNICODEDATA + bool "unicodedata module" + default y + help + Unicode character database (used by stringprep module) + (large). + +config BR2_PACKAGE_PYTHON3_SQLITE + bool "sqlite module" + select BR2_PACKAGE_SQLITE + help + SQLite database support + +config BR2_PACKAGE_PYTHON3_PYEXPAT + bool "xml module" + select BR2_PACKAGE_EXPAT + help + pyexpat and xml libraries for Python3. + +config BR2_PACKAGE_PYTHON3_XZ + bool "xz module" + select BR2_PACKAGE_XZ + help + xz (a.k.a lzma) module for Python3 + +config BR2_PACKAGE_PYTHON3_ZLIB + bool "zlib module" + select BR2_PACKAGE_ZLIB + help + zlib support in Python3 + +endmenu + +endif diff --git a/buildroot/package/python3/python3.hash b/buildroot/package/python3/python3.hash new file mode 100644 index 0000000..33adb18 --- /dev/null +++ b/buildroot/package/python3/python3.hash @@ -0,0 +1,4 @@ +# From https://www.python.org/downloads/release/python-363/ +md5 b9c2c36c33fb89bda1fefd37ad5af9be Python-3.6.3.tar.xz +# Locally computed +sha256 cda7d967c9a4bfa52337cdf551bcc5cff026b6ac50a8834e568ce4a794ca81da Python-3.6.3.tar.xz diff --git a/buildroot/package/python3/python3.mk b/buildroot/package/python3/python3.mk new file mode 100644 index 0000000..6e61108 --- /dev/null +++ b/buildroot/package/python3/python3.mk @@ -0,0 +1,307 @@ +################################################################################ +# +# python3 +# +################################################################################ + +PYTHON3_VERSION_MAJOR = 3.6 +PYTHON3_VERSION = $(PYTHON3_VERSION_MAJOR).3 +PYTHON3_SOURCE = Python-$(PYTHON3_VERSION).tar.xz +PYTHON3_SITE = https://python.org/ftp/python/$(PYTHON3_VERSION) +PYTHON3_LICENSE = Python-2.0, others +PYTHON3_LICENSE_FILES = LICENSE + +# Python itself doesn't use libtool, but it includes the source code +# of libffi, which uses libtool. Unfortunately, it uses a beta version +# of libtool for which we don't have a matching patch. However, this +# is not a problem, because we don't use the libffi copy included in +# the Python sources, but instead use an external libffi library. +PYTHON3_LIBTOOL_PATCH = NO + +# This host Python is installed in $(HOST_DIR), as it is needed when +# cross-compiling third-party Python modules. + +HOST_PYTHON3_CONF_OPTS += \ + --without-ensurepip \ + --without-cxx-main \ + --disable-sqlite3 \ + --disable-tk \ + --with-expat=system \ + --disable-curses \ + --disable-codecs-cjk \ + --disable-nis \ + --enable-unicodedata \ + --disable-test-modules \ + --disable-idle3 \ + --disable-ossaudiodev \ + --disable-openssl + +# Make sure that LD_LIBRARY_PATH overrides -rpath. +# This is needed because libpython may be installed at the same time that +# python is called. +# Make python believe we don't have 'hg', so that it doesn't try to +# communicate over the network during the build. +HOST_PYTHON3_CONF_ENV += \ + LDFLAGS="$(HOST_LDFLAGS) -Wl,--enable-new-dtags" \ + ac_cv_prog_HAS_HG=/bin/false + +PYTHON3_DEPENDENCIES = host-python3 libffi + +HOST_PYTHON3_DEPENDENCIES = host-expat host-zlib + +PYTHON3_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_PYTHON3_READLINE),y) +PYTHON3_DEPENDENCIES += readline +else +PYTHON3_CONF_OPTS += --disable-readline +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_CURSES),y) +PYTHON3_DEPENDENCIES += ncurses +else +PYTHON3_CONF_OPTS += --disable-curses +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_DECIMAL),y) +PYTHON3_DEPENDENCIES += mpdecimal +PYTHON3_CONF_OPTS += --with-libmpdec=system +else +PYTHON3_CONF_OPTS += --with-libmpdec=none +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_PYEXPAT),y) +PYTHON3_DEPENDENCIES += expat +PYTHON3_CONF_OPTS += --with-expat=system +else +PYTHON3_CONF_OPTS += --with-expat=none +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY),y) +PYTHON3_CONF_OPTS += --enable-old-stdlib-cache +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_SQLITE),y) +PYTHON3_DEPENDENCIES += sqlite +else +PYTHON3_CONF_OPTS += --disable-sqlite3 +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_SSL),y) +PYTHON3_DEPENDENCIES += openssl +else +PYTHON3_CONF_OPTS += --disable-openssl +endif + +ifneq ($(BR2_PACKAGE_PYTHON3_CODECSCJK),y) +PYTHON3_CONF_OPTS += --disable-codecs-cjk +endif + +ifneq ($(BR2_PACKAGE_PYTHON3_UNICODEDATA),y) +PYTHON3_CONF_OPTS += --disable-unicodedata +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_BZIP2),y) +PYTHON3_DEPENDENCIES += bzip2 +else +PYTHON3_CONF_OPTS += --disable-bzip2 +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_XZ),y) +PYTHON3_DEPENDENCIES += xz +else +PYTHON3_CONF_OPTS += --disable-xz +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_ZLIB),y) +PYTHON3_DEPENDENCIES += zlib +else +PYTHON3_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_OSSAUDIODEV),y) +PYTHON3_CONF_OPTS += --enable-ossaudiodev +else +PYTHON3_CONF_OPTS += --disable-ossaudiodev +endif + +# Make python believe we don't have 'hg', so that it doesn't try to +# communicate over the network during the build. +PYTHON3_CONF_ENV += \ + ac_cv_have_long_long_format=yes \ + ac_cv_file__dev_ptmx=yes \ + ac_cv_file__dev_ptc=yes \ + ac_cv_working_tzset=yes \ + ac_cv_prog_HAS_HG=/bin/false + +# GCC is always compliant with IEEE754 +ifeq ($(BR2_ENDIAN),"LITTLE") +PYTHON3_CONF_ENV += ac_cv_little_endian_double=yes +else +PYTHON3_CONF_ENV += ac_cv_big_endian_double=yes +endif + +# uClibc is known to have a broken wcsftime() implementation, so tell +# Python 3 to fall back to strftime() instead. +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +PYTHON3_CONF_ENV += ac_cv_func_wcsftime=no +endif + +PYTHON3_CONF_OPTS += \ + --without-ensurepip \ + --without-cxx-main \ + --with-system-ffi \ + --disable-pydoc \ + --disable-test-modules \ + --disable-lib2to3 \ + --disable-tk \ + --disable-nis \ + --disable-idle3 \ + --disable-pyc-build + +# +# Some of CPython's source code is generated using Python interpreter +# and some helper tools such as "Programs/_freeze_importlib" or +# "Parser/pgen" (look for regen-* targets in Makefile.pre.in for more +# info). Normally CPython codebase ships with those files +# pre-generated, so just regular "make" with no additional steps +# should be sufficient for a succesfull build, however due to +# Buildroot's "Add importlib fix for PEP 3147 issue" custom patch we +# end up modifying "Lib/importlib/_bootstrap_external.py" which means +# we have to do "regen-importlib" step before building CPython +# (Importlib is a builtin module that needs to be "frozen"/converted +# to a C array of bytecode using "Programs/_freeze_importlib") +# +# To achive that we add pre-build steps to host-python3 as well as +# python3 that execute "regen-importlib" target. +# +# Unfortunately, for the target Python, "Programs/_freeze_importlib" +# is built for the target, while we need to run them at build time. So +# when installing host-python3, we copy them to $(HOST_DIR)/bin... +# +define HOST_PYTHON3_MAKE_REGEN_IMPORTLIB + $(HOST_MAKE_ENV) $(PYTHON3_CONF_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) regen-importlib + cp $(@D)/Programs/_freeze_importlib $(HOST_DIR)/bin/python-freeze-importlib +endef + +HOST_PYTHON3_PRE_BUILD_HOOKS += HOST_PYTHON3_MAKE_REGEN_IMPORTLIB +# +# ... And then, when building the target python we first buid +# 'Programs/_freeze_importlib' to force GNU Make to update all of the +# prerequisites of 'Programs/_freeze_importlib', then copy our stashed +# "host-usable" version over the one that was just build and then +# build "regen-importlib" target +# +define PYTHON3_MAKE_REGEN_IMPORTLIB + $(TARGET_MAKE_ENV) $(PYTHON3_CONF_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) Programs/_freeze_importlib + cp $(HOST_DIR)/bin/python-freeze-importlib $(@D)/Programs/_freeze_importlib + $(TARGET_MAKE_ENV) $(PYTHON3_CONF_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) regen-importlib +endef + +PYTHON3_PRE_BUILD_HOOKS += PYTHON3_MAKE_REGEN_IMPORTLIB + +# +# Remove useless files. In the config/ directory, only the Makefile +# and the pyconfig.h files are needed at runtime. +# +define PYTHON3_REMOVE_USELESS_FILES + rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)-config + rm -f $(TARGET_DIR)/usr/bin/python$(PYTHON3_VERSION_MAJOR)m-config + rm -f $(TARGET_DIR)/usr/bin/python3-config + rm -f $(TARGET_DIR)/usr/bin/smtpd.py.3 + for i in `find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/config-$(PYTHON3_VERSION_MAJOR)m/ \ + -type f -not -name pyconfig.h -a -not -name Makefile` ; do \ + rm -f $$i ; \ + done + rm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/__pycache__/ + rm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/lib-dynload/sysconfigdata/__pycache__ + rm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/collections/__pycache__ + rm -rf $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/importlib/__pycache__ +endef + +PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_REMOVE_USELESS_FILES + +# +# Make sure libpython gets stripped out on target +# +define PYTHON3_ENSURE_LIBPYTHON_STRIPPED + chmod u+w $(TARGET_DIR)/usr/lib/libpython$(PYTHON3_VERSION_MAJOR)*.so +endef + +PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_ENSURE_LIBPYTHON_STRIPPED + +PYTHON3_AUTORECONF = YES + +define PYTHON3_INSTALL_SYMLINK + ln -fs python3 $(TARGET_DIR)/usr/bin/python +endef + +ifneq ($(BR2_PACKAGE_PYTHON),y) +PYTHON3_POST_INSTALL_TARGET_HOOKS += PYTHON3_INSTALL_SYMLINK +endif + +# Some packages may have build scripts requiring python3, whatever is the +# python version chosen for the target. +# Only install the python symlink in the host tree if python3 is enabled +# for the target. +ifeq ($(BR2_PACKAGE_PYTHON3),y) +define HOST_PYTHON3_INSTALL_SYMLINK + ln -fs python3 $(HOST_DIR)/bin/python + ln -fs python3-config $(HOST_DIR)/bin/python-config +endef + +HOST_PYTHON3_POST_INSTALL_HOOKS += HOST_PYTHON3_INSTALL_SYMLINK +endif + +# Provided to other packages +PYTHON3_PATH = $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR)/ + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +ifeq ($(BR2_REPRODUCIBLE),y) +define PYTHON3_FIX_TIME + find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.py' -print0 | \ + xargs -0 --no-run-if-empty touch -d @$(SOURCE_DATE_EPOCH) +endef +endif + +define PYTHON3_CREATE_PYC_FILES + $(PYTHON3_FIX_TIME) + PYTHONPATH="$(PYTHON3_PATH)" \ + cd $(TARGET_DIR) && $(HOST_DIR)/bin/python$(PYTHON3_VERSION_MAJOR) \ + $(TOPDIR)/support/scripts/pycompile.py \ + $(if $(BR2_REPRODUCIBLE),--force) \ + usr/lib/python$(PYTHON3_VERSION_MAJOR) +endef + +ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY)$(BR2_PACKAGE_PYTHON3_PY_PYC),y) +PYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_CREATE_PYC_FILES +endif + +ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY),y) +define PYTHON3_REMOVE_PY_FILES + find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.py' -print0 | \ + xargs -0 --no-run-if-empty rm -f +endef +PYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_REMOVE_PY_FILES +endif + +# Normally, *.pyc files should not have been compiled, but just in +# case, we make sure we remove all of them. +ifeq ($(BR2_PACKAGE_PYTHON3_PY_ONLY),y) +define PYTHON3_REMOVE_PYC_FILES + find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.pyc' -print0 | \ + xargs -0 --no-run-if-empty rm -f +endef +PYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_REMOVE_PYC_FILES +endif + +# In all cases, we don't want to keep the optimized .opt-1.pyc and +# .opt-2.pyc files, since they can't work without their non-optimized +# variant. +define PYTHON3_REMOVE_OPTIMIZED_PYC_FILES + find $(TARGET_DIR)/usr/lib/python$(PYTHON3_VERSION_MAJOR) -name '*.opt-1.pyc' -print0 -o -name '*.opt-2.pyc' -print0 | \ + xargs -0 --no-run-if-empty rm -f +endef +PYTHON3_TARGET_FINALIZE_HOOKS += PYTHON3_REMOVE_OPTIMIZED_PYC_FILES diff --git a/buildroot/package/qdecoder/0001-fix-make-install.patch b/buildroot/package/qdecoder/0001-fix-make-install.patch new file mode 100644 index 0000000..f353566 --- /dev/null +++ b/buildroot/package/qdecoder/0001-fix-make-install.patch @@ -0,0 +1,40 @@ +[PATCH] fix make install to respect DESTDIR + +And also ensure destination directories exist. + +Signed-off-by: Peter Korsgaard +--- + src/Makefile.in | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +Index: qdecoder-r12.0.5/src/Makefile.in +=================================================================== +--- qdecoder-r12.0.5.orig/src/Makefile.in ++++ qdecoder-r12.0.5/src/Makefile.in +@@ -78,17 +78,18 @@ + ${LN_S} -f ${SLIBREALNAME} ${SLIBNAME} + + install: all +- ${INSTALL_DATA} qdecoder.h ${HEADERDIR}/qdecoder.h +- ${INSTALL_DATA} ${LIBNAME} ${LIBDIR}/${LIBNAME} +- ${INSTALL_DATA} ${SLIBREALNAME} ${LIBDIR}/${SLIBREALNAME} +- ( cd ${LIBDIR}; ${LN_S} -f ${SLIBREALNAME} ${SLIBNAME} ) ++ mkdir -p ${DESTDIR}/${HEADERDIR} ${DESTDIR}/${LIBDIR} ++ ${INSTALL_DATA} qdecoder.h ${DESTDIR}/${HEADERDIR}/qdecoder.h ++ ${INSTALL_DATA} ${LIBNAME} ${DESTDIR}/${LIBDIR}/${LIBNAME} ++ ${INSTALL_DATA} ${SLIBREALNAME} ${DESTDIR}/${LIBDIR}/${SLIBREALNAME} ++ ( cd ${DESTDIR}/${LIBDIR}; ${LN_S} -f ${SLIBREALNAME} ${SLIBNAME} ) + + deinstall: uninstall + uninstall: +- ${RM} -f ${HEADERDIR}/qdecoder.h +- ${RM} -f ${LIBDIR}/${LIBNAME} +- ${RM} -f ${LIBDIR}/${SLIBREALNAME} +- ${RM} -f ${LIBDIR}/${SLIBNAME} ++ ${RM} -f ${DESTDIR}/${HEADERDIR}/qdecoder.h ++ ${RM} -f ${DESTDIR}/${LIBDIR}/${LIBNAME} ++ ${RM} -f ${DESTDIR}/${LIBDIR}/${SLIBREALNAME} ++ ${RM} -f ${DESTDIR}/${LIBDIR}/${SLIBNAME} + + doc: + doxygen doxygen.conf diff --git a/buildroot/package/qdecoder/0002-configure.ac-drop-hardcoded-paths.patch b/buildroot/package/qdecoder/0002-configure.ac-drop-hardcoded-paths.patch new file mode 100644 index 0000000..689d1d9 --- /dev/null +++ b/buildroot/package/qdecoder/0002-configure.ac-drop-hardcoded-paths.patch @@ -0,0 +1,25 @@ +[PATCH] configure.ac: drop hardcoded paths + +Causing problems with cross compilation. + +Signed-off-by: Peter Korsgaard +--- + configure.ac | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +Index: qdecoder-r12.0.5/configure.ac +=================================================================== +--- qdecoder-r12.0.5.orig/configure.ac ++++ qdecoder-r12.0.5/configure.ac +@@ -81,10 +81,7 @@ + AC_CONFIG_HEADER([config.h]) + AC_CONFIG_FILES([Makefile src/Makefile examples/Makefile]) + +-## Set path +-PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" +-CPPFLAGS="$CPPFLAGS -I/usr/include -I/usr/local/include -I./ -D_GNU_SOURCE" +-LDFLAGS="$LDFLAGS -L/usr/lib -L/usr/local/lib" ++CPPFLAGS="$CPPFLAGS -I./ -D_GNU_SOURCE" + + ## Set autoconf setting + #AC_CANONICAL_TARGET diff --git a/buildroot/package/qdecoder/0003-errno.patch b/buildroot/package/qdecoder/0003-errno.patch new file mode 100644 index 0000000..71d5cfd --- /dev/null +++ b/buildroot/package/qdecoder/0003-errno.patch @@ -0,0 +1,34 @@ +Fixes build error + +qcgireq.c: In function '_parse_multipart_value_into_disk': +qcgireq.c:738:60: error: 'errno' undeclared (first use in this function) + DEBUG("I/O error. (errno=%d)", (ioerror == true) ? errno : 0); + +Patch downloaded from upstream repo: +https://github.com/wolkykim/qdecoder/commit/574f0216a51e3e852cd94e2a0a3b52dc64e74548 + +Signed-off-by: Bernd Kuhls + + +From 574f0216a51e3e852cd94e2a0a3b52dc64e74548 Mon Sep 17 00:00:00 2001 +From: nyov +Date: Fri, 5 Sep 2014 18:41:10 +0000 +Subject: [PATCH] add missing header include + +fixes #7 +--- + src/qcgireq.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/qcgireq.c b/src/qcgireq.c +index dcb8c57..d34ff83 100644 +--- a/src/qcgireq.c ++++ b/src/qcgireq.c +@@ -139,6 +139,7 @@ + #ifndef _WIN32 + #include + #endif ++#include + #include "qdecoder.h" + #include "internal.h" + diff --git a/buildroot/package/qdecoder/Config.in b/buildroot/package/qdecoder/Config.in new file mode 100644 index 0000000..4873877 --- /dev/null +++ b/buildroot/package/qdecoder/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_QDECODER + bool "qdecoder" + depends on !BR2_STATIC_LIBS + help + qDecoder is a simple and powerful CGI library + for the C/C++ programming language. + + http://wolkykim.github.io/qdecoder diff --git a/buildroot/package/qdecoder/qdecoder.hash b/buildroot/package/qdecoder/qdecoder.hash new file mode 100644 index 0000000..6b30310 --- /dev/null +++ b/buildroot/package/qdecoder/qdecoder.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 641d3df4895626d7a530c5d26724e9b5887e9845d4b47f42c1cbce4a17ebf6af qdecoder-r12.0.5.tar.gz diff --git a/buildroot/package/qdecoder/qdecoder.mk b/buildroot/package/qdecoder/qdecoder.mk new file mode 100644 index 0000000..bbbf42a --- /dev/null +++ b/buildroot/package/qdecoder/qdecoder.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# qdecoder +# +################################################################################ + +QDECODER_VERSION = r12.0.5 +QDECODER_SITE = $(call github,wolkykim,qdecoder,$(QDECODER_VERSION)) +QDECODER_LICENSE = BSD-2 +QDECODER_LICENSE_FILES = COPYING +# we patch configure.ac +QDECODER_AUTORECONF = YES +QDECODER_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' + +QDECODER_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/qemu/0001-user-exec-fix-usage-of-mcontext-structure-on-ARM-uCl.patch b/buildroot/package/qemu/0001-user-exec-fix-usage-of-mcontext-structure-on-ARM-uCl.patch new file mode 100644 index 0000000..6d6d024 --- /dev/null +++ b/buildroot/package/qemu/0001-user-exec-fix-usage-of-mcontext-structure-on-ARM-uCl.patch @@ -0,0 +1,35 @@ +From d3f1e7e9ff9aae3f770b0bcb9aa3c2f787f76a1b Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 5 May 2017 09:07:15 +0200 +Subject: [PATCH] user-exec: fix usage of mcontext structure on ARM/uClibc + +user-exec.c has some conditional code to decide how to use the +mcontext structure. Unfortunately, since uClibc defines __GLIBC__, but +with old versions of __GLIBC__ and __GLIBC_MINOR__, an old code path +gets used, which doesn't apply to uClibc. + +Fix this by excluding __UCLIBC__, which ensures we fall back to the +general case of using uc_mcontext.arm_pc, which works fine with +uClibc. + +Signed-off-by: Thomas Petazzoni +--- + user-exec.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/user-exec.c b/user-exec.c +index 6db0758..2b3d116 100644 +--- a/user-exec.c ++++ b/user-exec.c +@@ -409,7 +409,7 @@ int cpu_signal_handler(int host_signum, void *pinfo, + + #if defined(__NetBSD__) + pc = uc->uc_mcontext.__gregs[_REG_R15]; +-#elif defined(__GLIBC__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 3)) ++#elif defined(__GLIBC__) && !defined(__UCLIBC__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 3)) + pc = uc->uc_mcontext.gregs[R15]; + #else + pc = uc->uc_mcontext.arm_pc; +-- +2.7.4 + diff --git a/buildroot/package/qemu/0002-memfd-fix-configure-test.patch b/buildroot/package/qemu/0002-memfd-fix-configure-test.patch new file mode 100644 index 0000000..3e06c0e --- /dev/null +++ b/buildroot/package/qemu/0002-memfd-fix-configure-test.patch @@ -0,0 +1,58 @@ +From 75e5b70e6b5dcc4f2219992d7cffa462aa406af0 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini +Date: Tue, 28 Nov 2017 11:51:27 +0100 +Subject: [PATCH] memfd: fix configure test +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Recent glibc added memfd_create in sys/mman.h. This conflicts with +the definition in util/memfd.c: + + /builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration + +Fix the configure test, and remove the sys/memfd.h inclusion since the +file actually does not exist---it is a typo in the memfd_create(2) man +page. + +Cc: Marc-André Lureau +Signed-off-by: Paolo Bonzini +Signed-off-by: Baruch Siach +--- +Upstream status: commit 75e5b70e6b5 + + configure | 2 +- + util/memfd.c | 4 +--- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/configure b/configure +index 9c8aa5a98bd4..99ccc1725ace 100755 +--- a/configure ++++ b/configure +@@ -3923,7 +3923,7 @@ fi + # check if memfd is supported + memfd=no + cat > $TMPC << EOF +-#include ++#include + + int main(void) + { +diff --git a/util/memfd.c b/util/memfd.c +index 4571d1aba866..412e94a405fc 100644 +--- a/util/memfd.c ++++ b/util/memfd.c +@@ -31,9 +31,7 @@ + + #include "qemu/memfd.h" + +-#ifdef CONFIG_MEMFD +-#include +-#elif defined CONFIG_LINUX ++#if defined CONFIG_LINUX && !defined CONFIG_MEMFD + #include + #include + +-- +2.16.2 + diff --git a/buildroot/package/qemu/Config.in b/buildroot/package/qemu/Config.in new file mode 100644 index 0000000..13b615b --- /dev/null +++ b/buildroot/package/qemu/Config.in @@ -0,0 +1,126 @@ +config BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET + bool + # Only tested on these architectures + default y if BR2_aarch64 || BR2_i386 || BR2_mips || BR2_mipsel \ + || BR2_x86_64 || BR2_arm \ + || BR2_powerpc64 || BR2_powerpc64le + +comment "QEMU requires a toolchain with wchar, threads" + depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET + depends on BR2_USE_MMU + depends on !(BR2_TOOLCHAIN_HAS_THREADS && BR2_USE_WCHAR) + +config BR2_PACKAGE_QEMU + bool "QEMU" + depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR # gettext + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_ZLIB + help + QEMU is a generic and open source machine emulator and + virtualizer. + + When used as a machine emulator, QEMU can run OSes and + programs made for one machine (e.g. an ARM board) on a + different machine (e.g. your own PC). By using dynamic + translation, it achieves very good performance. + + When used as a virtualizer, QEMU achieves near native + performances by executing the guest code directly on the + host CPU. QEMU supports virtualization when executing under + the Xen hypervisor or using the KVM kernel module in + Linux. When using KVM, QEMU can virtualize x86, server and + embedded PowerPC, and S390 guests. + + http://qemu.org/ + +if BR2_PACKAGE_QEMU + +comment "Emulators selection" + +config BR2_PACKAGE_QEMU_CUSTOM_TARGETS + string "Enable specific targets" + help + Enter here the list of QEMU targets you want to build. For + example: + + System emulation | User-land emulation + ----------------------+----------------------- + i386-softmmu | i386-linux-user + arm-softmmu | ppc-linux-user + x86_64-softmmu | sparc-bsd-user + ... | ... + +config QEMU_FOO + bool # To break the indentation + +if BR2_PACKAGE_QEMU_CUSTOM_TARGETS = "" + +comment "... or you can select emulator families to enable, below:" + +config BR2_PACKAGE_QEMU_SYSTEM + bool "Enable all systems emulation" + depends on !BR2_STATIC_LIBS # dtc + select BR2_PACKAGE_QEMU_FDT + help + Say 'y' to build all system emulators/virtualisers that QEMU + supports. + +comment "systems emulation needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_QEMU_LINUX_USER + bool "Enable all Linux user-land emulation" + # Incompatible "struct sigevent" definition on musl + depends on !BR2_TOOLCHAIN_USES_MUSL + help + Say 'y' to build all Linux user-land emulators that QEMU + supports. + +# Note: bsd-user can not be build on Linux + +comment "Linux user-land emulation needs a glibc or uClibc toolchain" + depends on BR2_TOOLCHAIN_USES_MUSL + +endif # BR2_PACKAGE_QEMU_CUSTOM_TARGETS == "" + +config BR2_PACKAGE_QEMU_HAS_EMULS + def_bool y + depends on BR2_PACKAGE_QEMU_SYSTEM || BR2_PACKAGE_QEMU_LINUX_USER || BR2_PACKAGE_QEMU_CUSTOM_TARGETS != "" + +if BR2_PACKAGE_QEMU_HAS_EMULS + +comment "Frontends" + +config BR2_PACKAGE_QEMU_SDL + bool "Enable SDL frontend" + select BR2_PACKAGE_SDL + help + Say 'y' to enable the SDL frontend, that is, a graphical + window presenting the VM's display. + +comment "Misc. features" + +config BR2_PACKAGE_QEMU_FDT + bool "Enable FDT" + depends on !BR2_STATIC_LIBS # dtc + select BR2_PACKAGE_DTC + help + Say 'y' here to have QEMU capable of constructing Device + Trees, and passing them to the VMs. + +comment "FDT support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif # BR2_PACKAGE_QEMU_HAS_EMULS + +config BR2_PACKAGE_QEMU_TOOLS + bool "Enable tools" + help + Say 'y' here to include tools packaged with QEMU + (e.g. qemu-img). + +endif # BR2_PACKAGE_QEMU diff --git a/buildroot/package/qemu/Config.in.host b/buildroot/package/qemu/Config.in.host new file mode 100644 index 0000000..f14bcec --- /dev/null +++ b/buildroot/package/qemu/Config.in.host @@ -0,0 +1,42 @@ +config BR2_PACKAGE_HOST_QEMU + bool "host qemu" + depends on BR2_arm || BR2_armeb || BR2_aarch64 || \ + BR2_i386 || BR2_m68k || BR2_microblazeel || \ + BR2_microblazebe || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sh || \ + BR2_sparc || BR2_x86_64 + select BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE \ + if !BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE + help + QEMU is a generic and open source machine emulator and + virtualizer. + + This option builds an emulator for your selected architecture. + + http://www.qemu.org + +if BR2_PACKAGE_HOST_QEMU + +comment "Emulators selection" + +config BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE + bool "Enable system emulation" + help + Enables the build of the system emulator, which allows to + boot an entire system in Qemu. + +config BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE + bool "Enable Linux user-land emulation" + help + Enables the build of the user-land emulator, which allows to + run user-space applications. + +config BR2_PACKAGE_HOST_QEMU_VDE2 + bool "VDE2 support" + help + Enables VDE2 support. VDE2 stands for Virtual Distributed + Ethernet and can be used to create virtual switches to + "plug" both physical and virtual machines in them. + +endif diff --git a/buildroot/package/qemu/qemu.hash b/buildroot/package/qemu/qemu.hash new file mode 100644 index 0000000..1173c1b --- /dev/null +++ b/buildroot/package/qemu/qemu.hash @@ -0,0 +1,4 @@ +# Locally computed, tarball verified with GPG signature +sha256 fcfdaa1ecdaac8aead616fe811bfb8fe4a8f2cd59796aa446c5175b5af0e829f qemu-2.10.2.tar.xz +sha256 6f04ae8364d0079a192b14635f4b1da294ce18724c034c39a6a41d1b09df6100 COPYING +sha256 48ffe9fc7f1d5462dbd19340bc4dd1d8a9e37c61ed535813e614cbe4a5f0d4df COPYING.LIB diff --git a/buildroot/package/qemu/qemu.mk b/buildroot/package/qemu/qemu.mk new file mode 100644 index 0000000..c3a7e77 --- /dev/null +++ b/buildroot/package/qemu/qemu.mk @@ -0,0 +1,271 @@ +################################################################################ +# +# qemu +# +################################################################################ + +QEMU_VERSION = 2.10.2 +QEMU_SOURCE = qemu-$(QEMU_VERSION).tar.xz +QEMU_SITE = http://download.qemu.org +QEMU_LICENSE = GPL-2.0, LGPL-2.1, MIT, BSD-3-Clause, BSD-2-Clause, Others/BSD-1c +QEMU_LICENSE_FILES = COPYING COPYING.LIB +# NOTE: there is no top-level license file for non-(L)GPL licenses; +# the non-(L)GPL license texts are specified in the affected +# individual source files. + +#------------------------------------------------------------- +# Host-qemu + +HOST_QEMU_DEPENDENCIES = host-pkgconf host-python host-zlib host-libglib2 host-pixman + +# BR ARCH qemu +# ------- ---- +# arm arm +# armeb armeb +# bfin not supported +# i486 i386 +# i586 i386 +# i686 i386 +# x86_64 x86_64 +# m68k m68k +# microblaze microblaze +# mips mips +# mipsel mipsel +# mips64 mips64 +# mips64el mips64el +# powerpc ppc +# powerpc64 ppc64 +# powerpc64le ppc64 (system) / ppc64le (usermode) +# sh2a not supported +# sh4 sh4 +# sh4eb sh4eb +# sh4a sh4 +# sh4aeb sh4eb +# sh64 not supported +# sparc sparc + +HOST_QEMU_ARCH = $(ARCH) +ifeq ($(HOST_QEMU_ARCH),i486) +HOST_QEMU_ARCH = i386 +endif +ifeq ($(HOST_QEMU_ARCH),i586) +HOST_QEMU_ARCH = i386 +endif +ifeq ($(HOST_QEMU_ARCH),i686) +HOST_QEMU_ARCH = i386 +endif +ifeq ($(HOST_QEMU_ARCH),powerpc) +HOST_QEMU_ARCH = ppc +endif +ifeq ($(HOST_QEMU_ARCH),powerpc64) +HOST_QEMU_ARCH = ppc64 +endif +ifeq ($(HOST_QEMU_ARCH),powerpc64le) +HOST_QEMU_ARCH = ppc64le +HOST_QEMU_SYS_ARCH = ppc64 +endif +ifeq ($(HOST_QEMU_ARCH),sh4a) +HOST_QEMU_ARCH = sh4 +endif +ifeq ($(HOST_QEMU_ARCH),sh4aeb) +HOST_QEMU_ARCH = sh4eb +endif +HOST_QEMU_SYS_ARCH ?= $(HOST_QEMU_ARCH) + +ifeq ($(BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE),y) +HOST_QEMU_TARGETS += $(HOST_QEMU_SYS_ARCH)-softmmu +HOST_QEMU_OPTS += --enable-system --enable-fdt +HOST_QEMU_DEPENDENCIES += host-dtc +else +HOST_QEMU_OPTS += --disable-system +endif + +ifeq ($(BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE),y) +HOST_QEMU_TARGETS += $(HOST_QEMU_ARCH)-linux-user +HOST_QEMU_OPTS += --enable-linux-user + +HOST_QEMU_HOST_SYSTEM_TYPE = $(shell uname -s) +ifneq ($(HOST_QEMU_HOST_SYSTEM_TYPE),Linux) +$(error "qemu-user can only be used on Linux hosts") +endif + +# kernel version as major*256 + minor +HOST_QEMU_HOST_SYSTEM_VERSION = $(shell uname -r | awk -F. '{ print $$1 * 256 + $$2 }') +HOST_QEMU_TARGET_SYSTEM_VERSION = $(shell echo $(BR2_TOOLCHAIN_HEADERS_AT_LEAST) | awk -F. '{ print $$1 * 256 + $$2 }') +HOST_QEMU_COMPARE_VERSION = $(shell test $(HOST_QEMU_HOST_SYSTEM_VERSION) -ge $(HOST_QEMU_TARGET_SYSTEM_VERSION) && echo OK) + +# +# The principle of qemu-user is that it emulates the instructions of +# the target architecture when running the binary, and then when this +# binary does a system call, it converts this system call into a +# system call on the host machine. This mechanism makes an assumption: +# that the target binary will not do system calls that do not exist on +# the host. This basically requires that the target binary should be +# built with kernel headers that are older or the same as the kernel +# version running on the host machine. +# + +ifeq ($(BR_BUILDING),y) +ifneq ($(HOST_QEMU_COMPARE_VERSION),OK) +$(error "Refusing to build qemu-user: target Linux version newer than host's.") +endif +endif # BR_BUILDING + +else # BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE +HOST_QEMU_OPTS += --disable-linux-user +endif # BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE + +ifeq ($(BR2_PACKAGE_HOST_QEMU_VDE2),y) +HOST_QEMU_OPTS += --enable-vde +HOST_QEMU_DEPENDENCIES += host-vde2 +endif + +# Override CPP, as it expects to be able to call it like it'd +# call the compiler. +define HOST_QEMU_CONFIGURE_CMDS + cd $(@D); $(HOST_CONFIGURE_OPTS) CPP="$(HOSTCC) -E" \ + ./configure \ + --target-list="$(HOST_QEMU_TARGETS)" \ + --prefix="$(HOST_DIR)" \ + --interp-prefix=$(STAGING_DIR) \ + --cc="$(HOSTCC)" \ + --host-cc="$(HOSTCC)" \ + --python=$(HOST_DIR)/bin/python2 \ + --extra-cflags="$(HOST_CFLAGS)" \ + --extra-ldflags="$(HOST_LDFLAGS)" \ + $(HOST_QEMU_OPTS) +endef + +define HOST_QEMU_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_QEMU_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +$(eval $(host-generic-package)) + +# variable used by other packages +QEMU_USER = $(HOST_DIR)/bin/qemu-$(HOST_QEMU_ARCH) + +#------------------------------------------------------------- +# Target-qemu + +QEMU_DEPENDENCIES = host-pkgconf host-python libglib2 zlib pixman + +# Need the LIBS variable because librt and libm are +# not automatically pulled. :-( +QEMU_LIBS = -lrt -lm + +QEMU_OPTS = + +QEMU_VARS = \ + LIBTOOL=$(HOST_DIR)/bin/libtool \ + PYTHON=$(HOST_DIR)/bin/python2 \ + PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages + +# If we want to specify only a subset of targets, we must still enable all +# of them, so that QEMU properly builds its list of default targets, from +# which it then checks if the specified sub-set is valid. That's what we +# do in the first part of the if-clause. +# Otherwise, if we do not want to pass a sub-set of targets, we then need +# to either enable or disable -user and/or -system emulation appropriately. +# That's what we do in the else-clause. +ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) +QEMU_OPTS += --enable-system --enable-linux-user +QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))" +else + +ifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y) +QEMU_OPTS += --enable-system +else +QEMU_OPTS += --disable-system +endif + +ifeq ($(BR2_PACKAGE_QEMU_LINUX_USER),y) +QEMU_OPTS += --enable-linux-user +else +QEMU_OPTS += --disable-linux-user +endif + +endif + +ifeq ($(BR2_PACKAGE_QEMU_SDL),y) +QEMU_OPTS += --enable-sdl +QEMU_DEPENDENCIES += sdl +QEMU_VARS += SDL_CONFIG=$(BR2_STAGING_DIR)/usr/bin/sdl-config +else +QEMU_OPTS += --disable-sdl +endif + +ifeq ($(BR2_PACKAGE_QEMU_FDT),y) +QEMU_OPTS += --enable-fdt +QEMU_DEPENDENCIES += dtc +else +QEMU_OPTS += --disable-fdt +endif + +ifeq ($(BR2_PACKAGE_QEMU_TOOLS),y) +QEMU_OPTS += --enable-tools +else +QEMU_OPTS += --disable-tools +endif + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +QEMU_OPTS += --enable-libssh2 +QEMU_DEPENDENCIES += libssh2 +else +QEMU_OPTS += --disable-libssh2 +endif + +# Override CPP, as it expects to be able to call it like it'd +# call the compiler. +define QEMU_CONFIGURE_CMDS + ( cd $(@D); \ + LIBS='$(QEMU_LIBS)' \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + CPP="$(TARGET_CC) -E" \ + $(QEMU_VARS) \ + ./configure \ + --prefix=/usr \ + --cross-prefix=$(TARGET_CROSS) \ + --with-system-pixman \ + --audio-drv-list= \ + --enable-kvm \ + --enable-attr \ + --enable-vhost-net \ + --disable-bsd-user \ + --disable-xen \ + --disable-slirp \ + --disable-vnc \ + --disable-virtfs \ + --disable-brlapi \ + --disable-curses \ + --disable-curl \ + --disable-bluez \ + --disable-vde \ + --disable-linux-aio \ + --disable-cap-ng \ + --disable-docs \ + --disable-spice \ + --disable-rbd \ + --disable-libiscsi \ + --disable-usb-redir \ + --disable-strip \ + --disable-seccomp \ + --disable-sparse \ + $(QEMU_OPTS) \ + ) +endef + +define QEMU_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QEMU_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(QEMU_MAKE_ENV) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch b/buildroot/package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch new file mode 100644 index 0000000..e1d99f0 --- /dev/null +++ b/buildroot/package/qextserialport/0001-Create-a-main-include-file-QExtSerialPort.patch @@ -0,0 +1,40 @@ +From 62fbe9c3539945df6204501b7e3ae0d51db075a3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 24 Nov 2016 22:30:40 +0100 +Subject: [PATCH] Create a main include file QExtSerialPort + +This main include file will be installed in + so that Qt applications can use this +library by including header files in a Qt-like style. + +Signed-off-by: Thomas Petazzoni +[Arnout: add it to qextserialport.pri so it is installed] +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + src/QExtSerialPort | 2 ++ + src/qextserialport.pri | 3 ++- + 2 files changed, 4 insertions(+), 1 deletion(-) + create mode 100644 src/QExtSerialPort + +diff --git a/src/QExtSerialPort b/src/QExtSerialPort +new file mode 100644 +index 0000000..a48aeea +--- /dev/null ++++ b/src/QExtSerialPort +@@ -0,0 +1,2 @@ ++#include "qextserialport.h" ++#include "qextserialenumerator.h" +diff --git a/src/qextserialport.pri b/src/qextserialport.pri +index 461d56f..f8a678d 100644 +--- a/src/qextserialport.pri ++++ b/src/qextserialport.pri +@@ -3,7 +3,8 @@ + + PUBLIC_HEADERS += $$PWD/qextserialport.h \ + $$PWD/qextserialenumerator.h \ +- $$PWD/qextserialport_global.h ++ $$PWD/qextserialport_global.h \ ++ $$PWD/QExtSerialPort + + HEADERS += $$PUBLIC_HEADERS \ + $$PWD/qextserialport_p.h \ diff --git a/buildroot/package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch b/buildroot/package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch new file mode 100644 index 0000000..09e26a9 --- /dev/null +++ b/buildroot/package/qextserialport/0002-Tell-qmake-to-add-a-pkgconfig-file-to-ease-usage-wit.patch @@ -0,0 +1,28 @@ +From 14d4d3e7b5c748118acffddd397fb67b37fd5054 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Thu, 24 Nov 2016 22:44:02 +0100 +Subject: [PATCH] Tell qmake to add a pkgconfig file to ease usage with + applications + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + qextserialport.pro | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/qextserialport.pro b/qextserialport.pro +index 8d2c03a..2fcb39c 100644 +--- a/qextserialport.pro ++++ b/qextserialport.pro +@@ -42,7 +42,8 @@ TEMPLATE=lib + include(src/qextserialport.pri) + + #create_prl is needed, otherwise, MinGW can't found libqextserialport1.a +-CONFIG += create_prl ++CONFIG += create_prl create_pc ++QMAKE_PKGCONFIG_DESTDIR = pkgconfig + + #mac framework is designed for shared library + macx:qesp_mac_framework:qesp_static: CONFIG -= qesp_static +-- +2.10.2 + diff --git a/buildroot/package/qextserialport/Config.in b/buildroot/package/qextserialport/Config.in new file mode 100644 index 0000000..4e7ef13 --- /dev/null +++ b/buildroot/package/qextserialport/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_QEXTSERIALPORT + bool "qextserialport" + depends on BR2_PACKAGE_QT || BR2_PACKAGE_QT5 + help + A Qt library to manage serial ports + + http://qextserialport.github.io/ diff --git a/buildroot/package/qextserialport/qextserialport.hash b/buildroot/package/qextserialport/qextserialport.hash new file mode 100644 index 0000000..60c0ff3 --- /dev/null +++ b/buildroot/package/qextserialport/qextserialport.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 23e3b10a8d8a1e2fb071047144222c43d150748ce6670e5d047ba5b0502ad0b2 qextserialport-ada321a9ee463f628e7b781b8ed00ff219152158.tar.gz diff --git a/buildroot/package/qextserialport/qextserialport.mk b/buildroot/package/qextserialport/qextserialport.mk new file mode 100644 index 0000000..e3e325c --- /dev/null +++ b/buildroot/package/qextserialport/qextserialport.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# qextserialport +# +################################################################################ + +QEXTSERIALPORT_VERSION = ada321a9ee463f628e7b781b8ed00ff219152158 +QEXTSERIALPORT_SITE = $(call github,qextserialport,qextserialport,$(QEXTSERIALPORT_VERSION)) +QEXTSERIALPORT_LICENSE = MIT +QEXTSERIALPORT_LICENSE_FILES = LICENSE.md +QEXTSERIALPORT_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +QEXTSERIALPORT_CONF_OPTS += CONFIG+=qesp_static +endif + +ifeq ($(BR2_PACKAGE_QT),y) +QEXTSERIALPORT_DEPENDENCIES += qt +QEXTSERIALPORT_QMAKE = $(QT_QMAKE) +else ifeq ($(BR2_PACKAGE_QT5),y) +QEXTSERIALPORT_DEPENDENCIES += qt5base +QEXTSERIALPORT_QMAKE = $(QT5_QMAKE) +endif + +define QEXTSERIALPORT_CONFIGURE_CMDS + cd $(@D); $(TARGET_MAKE_ENV) $(QEXTSERIALPORT_QMAKE) $(QEXTSERIALPORT_CONF_OPTS) +endef + +define QEXTSERIALPORT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QEXTSERIALPORT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +ifeq ($(BR2_STATIC_LIBS),y) +QEXTSERIALPORT_INSTALL_TARGET = NO +else +define QEXTSERIALPORT_INSTALL_TARGET_CMDS + cp -a $(@D)/*.so.* $(TARGET_DIR)/usr/lib +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/qhull/Config.in b/buildroot/package/qhull/Config.in new file mode 100644 index 0000000..0a4b60f --- /dev/null +++ b/buildroot/package/qhull/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_QHULL + bool "qhull" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 # needs gcc >= 4.4 + help + Qhull computes the convex hull, Delaunay triangulation, + Voronoi diagram, halfspace intersection about a point, + furthest-site Delaunay triangulation, and furthest-site + Voronoi diagram. The source code runs in 2-d, 3-d, 4-d, and + higher dimensions. Qhull implements the Quickhull algorithm + for computing the convex hull. It handles roundoff errors + from floating point arithmetic. It computes volumes, surface + areas, and approximations to the convex hull. + + http://www.qhull.org + +comment "qhull needs a toolchain w/ C++, dynamic library, gcc >= 4.4" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 diff --git a/buildroot/package/qhull/qhull.hash b/buildroot/package/qhull/qhull.hash new file mode 100644 index 0000000..4f059f2 --- /dev/null +++ b/buildroot/package/qhull/qhull.hash @@ -0,0 +1,4 @@ +# From http://www.qhull.org/download/qhull-2015.2.md5sum +md5 e6270733a826a6a7c32b796e005ec3dc qhull-2015-src-7.2.0.tgz +# Locally computed +sha256 78b010925c3b577adc3d58278787d7df08f7c8fb02c3490e375eab91bb58a436 qhull-2015-src-7.2.0.tgz diff --git a/buildroot/package/qhull/qhull.mk b/buildroot/package/qhull/qhull.mk new file mode 100644 index 0000000..8ea38f0 --- /dev/null +++ b/buildroot/package/qhull/qhull.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# qhull +# +################################################################################ + +QHULL_VERSION = 7.2.0 +QHULL_SITE = http://www.qhull.org/download +QHULL_SOURCE = qhull-2015-src-$(QHULL_VERSION).tgz +QHULL_INSTALL_STAGING = YES +QHULL_LICENSE = BSD-Style +QHULL_LICENSE_FILES = COPYING.txt + +$(eval $(cmake-package)) diff --git a/buildroot/package/qjson/0001-fix-Qt4-package-error-in-CMakeLists.txt.patch b/buildroot/package/qjson/0001-fix-Qt4-package-error-in-CMakeLists.txt.patch new file mode 100644 index 0000000..a9e34e4 --- /dev/null +++ b/buildroot/package/qjson/0001-fix-Qt4-package-error-in-CMakeLists.txt.patch @@ -0,0 +1,26 @@ +From 254858bbf443bded2e80480e9f9032ce166b923e Mon Sep 17 00:00:00 2001 +From: Zoltan Gyarmati +Date: Fri, 2 Dec 2016 23:00:58 +0100 +Subject: [PATCH] CMake, Qt4: check specifically for QtCore, fixes #96 + +Signed-off-by: Zoltan Gyarmati +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 31d9987..2fde79f 100755 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -62,7 +62,7 @@ IF (Qt5Core_FOUND) + ELSE() + MESSAGE ("Qt5 not found, searching for Qt4") + # Find Qt4 +- FIND_PACKAGE( Qt4 4.5 REQUIRED ) ++ FIND_PACKAGE( Qt4 4.5 REQUIRED QtCore) + # QStringBuilder is supported since Qt 4.8 for both QString and QByteArray + IF (NOT (${QT_VERSION_MINOR} STRLESS "8")) + MESSAGE ("Enable QStringBuilder") +-- +2.7.4 + diff --git a/buildroot/package/qjson/Config.in b/buildroot/package/qjson/Config.in new file mode 100644 index 0000000..5c423bf --- /dev/null +++ b/buildroot/package/qjson/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_QJSON + bool "qjson" + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_QT || BR2_PACKAGE_QT5 + help + QJson is a Qt-based library that maps JSON data to + QVariant objects and vice versa. + + http://qjson.sourceforge.net + +comment "qjson needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on !BR2_PACKAGE_QT && !BR2_PACKAGE_QT5 diff --git a/buildroot/package/qjson/qjson.hash b/buildroot/package/qjson/qjson.hash new file mode 100644 index 0000000..d794b48 --- /dev/null +++ b/buildroot/package/qjson/qjson.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 e812617477f3c2bb990561767a4cd8b1d3803a52018d4878da302529552610d4 qjson-0.9.0.tar.gz diff --git a/buildroot/package/qjson/qjson.mk b/buildroot/package/qjson/qjson.mk new file mode 100644 index 0000000..1777b94 --- /dev/null +++ b/buildroot/package/qjson/qjson.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# qjson +# +################################################################################ + +QJSON_VERSION = 0.9.0 +QJSON_SITE = $(call github,flavio,qjson,$(QJSON_VERSION)) +QJSON_INSTALL_STAGING = YES +QJSON_DEPENDENCIES = \ + $(if $(BR2_PACKAGE_QT),qt) \ + $(if $(BR2_PACKAGE_QT5),qt5base) +QJSON_LICENSE = LGPL-2.1 +QJSON_LICENSE_FILES = COPYING.lib + +$(eval $(cmake-package)) diff --git a/buildroot/package/qlibc/0001-remove-absolute-paths.patch b/buildroot/package/qlibc/0001-remove-absolute-paths.patch new file mode 100644 index 0000000..5976c3c --- /dev/null +++ b/buildroot/package/qlibc/0001-remove-absolute-paths.patch @@ -0,0 +1,19 @@ +Remove absolute paths to host locations + +Signed-off-by: Sagaert Johan + +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -85,10 +85,8 @@ + + ## Set path + PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" +-CPPFLAGS="$CPPFLAGS -I/usr/include -I/usr/local/include" + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" + CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" +-LDFLAGS="$LDFLAGS -L/usr/lib -L/usr/local/lib" + + ## Set autoconf setting + #AC_CANONICAL_TARGET diff --git a/buildroot/package/qlibc/0002-obey-destdir.patch b/buildroot/package/qlibc/0002-obey-destdir.patch new file mode 100644 index 0000000..f007aa4 --- /dev/null +++ b/buildroot/package/qlibc/0002-obey-destdir.patch @@ -0,0 +1,144 @@ +From dbdc772a35244b45c725a72fad5ddade9bd7d521 Mon Sep 17 00:00:00 2001 +From: pcarpent +Date: Tue, 15 Dec 2015 10:23:44 +0100 +Subject: [PATCH] fix makefile + +add DESTDIR variables in install targets + +Signed-off-by: Bernd Kuhls +(downloaded from upstream commit not included in v2.4.1 + https://github.com/wolkykim/qlibc/commit/dbdc772a35244b45c725a72fad5ddade9bd7d521) +--- + src/Makefile.in | 110 ++++++++++++++++++++++++++++---------------------------- + 1 file changed, 55 insertions(+), 55 deletions(-) + +diff --git a/src/Makefile.in b/src/Makefile.in +index 8a7ab43..4e274ed 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -122,70 +122,70 @@ qlibcext: ${QLIBCEXT_OBJS} + install: ${INSTALL_TARGETS} + + install-qlibc: qlibc +- ${MKDIR_P} ${INST_INCDIR}/qlibc +- ${INSTALL_DATA} ${QLIBC_INCDIR}/qlibc.h ${INST_INCDIR}/qlibc/qlibc.h +- ${MKDIR_P} ${INST_INCDIR}/qlibc/containers/ +- ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qtreetbl.h ${INST_INCDIR}/qlibc/containers/qtreetbl.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qhashtbl.h ${INST_INCDIR}/qlibc/containers/qhashtbl.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qhasharr.h ${INST_INCDIR}/qlibc/containers/qhasharr.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qlisttbl.h ${INST_INCDIR}/qlibc/containers/qlisttbl.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qlist.h ${INST_INCDIR}/qlibc/containers/qlist.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qvector.h ${INST_INCDIR}/qlibc/containers/qvector.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qqueue.h ${INST_INCDIR}/qlibc/containers/qqueue.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qstack.h ${INST_INCDIR}/qlibc/containers/qstack.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qgrow.h ${INST_INCDIR}/qlibc/containers/qgrow.h +- ${MKDIR_P} ${INST_INCDIR}/qlibc/utilities/ +- ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qcount.h ${INST_INCDIR}/qlibc/utilities/qcount.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qencode.h ${INST_INCDIR}/qlibc/utilities/qencode.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qfile.h ${INST_INCDIR}/qlibc/utilities/qfile.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qhash.h ${INST_INCDIR}/qlibc/utilities/qhash.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qio.h ${INST_INCDIR}/qlibc/utilities/qio.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qsocket.h ${INST_INCDIR}/qlibc/utilities/qsocket.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qstring.h ${INST_INCDIR}/qlibc/utilities/qstring.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qsystem.h ${INST_INCDIR}/qlibc/utilities/qsystem.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qtime.h ${INST_INCDIR}/qlibc/utilities/qtime.h +- ${MKDIR_P} ${INST_INCDIR}/qlibc/ipc/ +- ${INSTALL_DATA} ${QLIBC_INCDIR}/ipc/qsem.h ${INST_INCDIR}/qlibc/ipc/qsem.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/ipc/qshm.h ${INST_INCDIR}/qlibc/ipc/qshm.h +- ${MKDIR_P} ${INST_LIBDIR} +- ${INSTALL_DATA} ${QLIBC_LIBDIR}/${QLIBC_LIBNAME} ${INST_LIBDIR}/${QLIBC_LIBNAME} +- ${INSTALL_DATA} ${QLIBC_LIBDIR}/${QLIBC_SLIBREALNAME} ${INST_LIBDIR}/${QLIBC_SLIBREALNAME} +- ( cd ${INST_LIBDIR}; ${LN_S} -f ${QLIBC_SLIBREALNAME} ${QLIBC_SLIBNAME} ) ++ ${MKDIR_P} $(DESTDIR)/${INST_INCDIR}/qlibc ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/qlibc.h $(DESTDIR)/${INST_INCDIR}/qlibc/qlibc.h ++ ${MKDIR_P} $(DESTDIR)/${INST_INCDIR}/qlibc/containers/ ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qtreetbl.h $(DESTDIR)/${INST_INCDIR}/qlibc/containers/qtreetbl.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qhashtbl.h $(DESTDIR)/${INST_INCDIR}/qlibc/containers/qhashtbl.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qhasharr.h $(DESTDIR)/${INST_INCDIR}/qlibc/containers/qhasharr.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qlisttbl.h $(DESTDIR)/${INST_INCDIR}/qlibc/containers/qlisttbl.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qlist.h $(DESTDIR)/${INST_INCDIR}/qlibc/containers/qlist.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qvector.h $(DESTDIR)/${INST_INCDIR}/qlibc/containers/qvector.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qqueue.h $(DESTDIR)/${INST_INCDIR}/qlibc/containers/qqueue.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qstack.h $(DESTDIR)/${INST_INCDIR}/qlibc/containers/qstack.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/containers/qgrow.h $(DESTDIR)/${INST_INCDIR}/qlibc/containers/qgrow.h ++ ${MKDIR_P} $(DESTDIR)/${INST_INCDIR}/qlibc/utilities/ ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qcount.h $(DESTDIR)/${INST_INCDIR}/qlibc/utilities/qcount.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qencode.h $(DESTDIR)/${INST_INCDIR}/qlibc/utilities/qencode.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qfile.h $(DESTDIR)/${INST_INCDIR}/qlibc/utilities/qfile.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qhash.h $(DESTDIR)/${INST_INCDIR}/qlibc/utilities/qhash.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qio.h $(DESTDIR)/${INST_INCDIR}/qlibc/utilities/qio.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qsocket.h $(DESTDIR)/${INST_INCDIR}/qlibc/utilities/qsocket.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qstring.h $(DESTDIR)/${INST_INCDIR}/qlibc/utilities/qstring.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qsystem.h $(DESTDIR)/${INST_INCDIR}/qlibc/utilities/qsystem.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/utilities/qtime.h $(DESTDIR)/${INST_INCDIR}/qlibc/utilities/qtime.h ++ ${MKDIR_P} $(DESTDIR)/${INST_INCDIR}/qlibc/ipc/ ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/ipc/qsem.h $(DESTDIR)/${INST_INCDIR}/qlibc/ipc/qsem.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/ipc/qshm.h $(DESTDIR)/${INST_INCDIR}/qlibc/ipc/qshm.h ++ ${MKDIR_P} $(DESTDIR)/${INST_LIBDIR} ++ ${INSTALL_DATA} ${QLIBC_LIBDIR}/${QLIBC_LIBNAME} $(DESTDIR)/${INST_LIBDIR}/${QLIBC_LIBNAME} ++ ${INSTALL_DATA} ${QLIBC_LIBDIR}/${QLIBC_SLIBREALNAME} $(DESTDIR)/${INST_LIBDIR}/${QLIBC_SLIBREALNAME} ++ ( cd $(DESTDIR)/${INST_LIBDIR}; ${LN_S} -f ${QLIBC_SLIBREALNAME} ${QLIBC_SLIBNAME} ) + + uninstall-qlibc: +- ${RM} -f ${INST_INCDIR}/qlibc/qlibc.h +- ${RM} -rf ${INST_INCDIR}/qlibc/containers +- ${RM} -rf ${INST_INCDIR}/qlibc/utilities +- ${RM} -rf ${INST_INCDIR}/qlibc/ipc +- ${RM} -f ${INST_LIBDIR}/${QLIBC_LIBNAME} +- ${RM} -f ${INST_LIBDIR}/${QLIBC_SLIBREALNAME} +- ${RM} -f ${INST_LIBDIR}/${QLIBC_SLIBNAME} ++ ${RM} -f $(DESTDIR)/${INST_INCDIR}/qlibc/qlibc.h ++ ${RM} -rf $(DESTDIR)/${INST_INCDIR}/qlibc/containers ++ ${RM} -rf $(DESTDIR)/${INST_INCDIR}/qlibc/utilities ++ ${RM} -rf $(DESTDIR)/${INST_INCDIR}/qlibc/ipc ++ ${RM} -f $(DESTDIR)/${INST_LIBDIR}/${QLIBC_LIBNAME} ++ ${RM} -f $(DESTDIR)/${INST_LIBDIR}/${QLIBC_SLIBREALNAME} ++ ${RM} -f $(DESTDIR)/${INST_LIBDIR}/${QLIBC_SLIBNAME} + + install-qlibcext: qlibcext +- ${MKDIR_P} ${INST_INCDIR}/qlibc +- ${INSTALL_DATA} ${QLIBC_INCDIR}/qlibcext.h ${INST_INCDIR}/qlibc/qlibcext.h +- ${MKDIR_P} ${INST_INCDIR}/qlibc/extensions/ +- ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qconfig.h ${INST_INCDIR}/qlibc/extensions/qconfig.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qaconf.h ${INST_INCDIR}/qlibc/extensions/qaconf.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qlog.h ${INST_INCDIR}/qlibc/extensions/qlog.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qhttpclient.h ${INST_INCDIR}/qlibc/extensions/qhttpclient.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qdatabase.h ${INST_INCDIR}/qlibc/extensions/qdatabase.h +- ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qtokenbucket.h ${INST_INCDIR}/qlibc/extensions/qtokenbucket.h +- ${MKDIR_P} ${INST_LIBDIR} +- ${INSTALL_DATA} ${QLIBC_LIBDIR}/${QLIBCEXT_LIBNAME} ${INST_LIBDIR}/${QLIBCEXT_LIBNAME} +- ${INSTALL_DATA} ${QLIBC_LIBDIR}/${QLIBCEXT_SLIBREALNAME} ${INST_LIBDIR}/${QLIBCEXT_SLIBREALNAME} +- ( cd ${INST_LIBDIR}; ${LN_S} -f ${QLIBCEXT_SLIBREALNAME} ${QLIBCEXT_SLIBNAME} ) ++ ${MKDIR_P} $(DESTDIR)/${INST_INCDIR}/qlibc ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/qlibcext.h $(DESTDIR)/${INST_INCDIR}/qlibc/qlibcext.h ++ ${MKDIR_P} $(DESTDIR)/${INST_INCDIR}/qlibc/extensions/ ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qconfig.h $(DESTDIR)/${INST_INCDIR}/qlibc/extensions/qconfig.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qaconf.h $(DESTDIR)/${INST_INCDIR}/qlibc/extensions/qaconf.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qlog.h $(DESTDIR)/${INST_INCDIR}/qlibc/extensions/qlog.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qhttpclient.h $(DESTDIR)/${INST_INCDIR}/qlibc/extensions/qhttpclient.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qdatabase.h $(DESTDIR)/${INST_INCDIR}/qlibc/extensions/qdatabase.h ++ ${INSTALL_DATA} ${QLIBC_INCDIR}/extensions/qtokenbucket.h $(DESTDIR)/${INST_INCDIR}/qlibc/extensions/qtokenbucket.h ++ ${MKDIR_P} $(DESTDIR)/${INST_LIBDIR} ++ ${INSTALL_DATA} ${QLIBC_LIBDIR}/${QLIBCEXT_LIBNAME} $(DESTDIR)/${INST_LIBDIR}/${QLIBCEXT_LIBNAME} ++ ${INSTALL_DATA} ${QLIBC_LIBDIR}/${QLIBCEXT_SLIBREALNAME} $(DESTDIR)/${INST_LIBDIR}/${QLIBCEXT_SLIBREALNAME} ++ ( cd $(DESTDIR)/${INST_LIBDIR}; ${LN_S} -f ${QLIBCEXT_SLIBREALNAME} ${QLIBCEXT_SLIBNAME} ) + + uninstall-qlibcext: +- ${RM} -f ${INST_INCDIR}/qlibc/qlibcext.h +- ${RM} -rf ${INST_INCDIR}/qlibc/extensions +- ${RM} -f ${INST_LIBDIR}/${QLIBCEXT_LIBNAME} +- ${RM} -f ${INST_LIBDIR}/${QLIBCEXT_SLIBREALNAME} +- ${RM} -f ${INST_LIBDIR}/${QLIBCEXT_SLIBNAME} ++ ${RM} -f $(DESTDIR)/${INST_INCDIR}/qlibc/qlibcext.h ++ ${RM} -rf $(DESTDIR)/${INST_INCDIR}/qlibc/extensions ++ ${RM} -f $(DESTDIR)/${INST_LIBDIR}/${QLIBCEXT_LIBNAME} ++ ${RM} -f $(DESTDIR)/${INST_LIBDIR}/${QLIBCEXT_SLIBREALNAME} ++ ${RM} -f $(DESTDIR)/${INST_LIBDIR}/${QLIBCEXT_SLIBNAME} + + deinstall: uninstall + uninstall: uninstall-qlibc uninstall-qlibcext +- ${RMDIR} ${INST_INCDIR}/qlibc ++ ${RMDIR} $(DESTDIR)/${INST_INCDIR}/qlibc + + clean: + ${RM} -f ${QLIBC_OBJS} diff --git a/buildroot/package/qlibc/0003-fix-openssl-mysql-checks.patch b/buildroot/package/qlibc/0003-fix-openssl-mysql-checks.patch new file mode 100644 index 0000000..bb609b2 --- /dev/null +++ b/buildroot/package/qlibc/0003-fix-openssl-mysql-checks.patch @@ -0,0 +1,36 @@ +Allow to explicitly disable openssl and mysql + +AC_ARG_WITH() is being incorrectly used: the third argument indicates +the action that needs to be taken when a value was passed, when not +the option is enabled. Therefore, the result of the existing code was +that when you passed --without-mysql or --without-openssl, the +$withval variable would get the value 'yes', which is obviously wrong. + +Instead, we simply empty this third argument, because $withval is +already properly filled with 'yes' or 'no' by the AC_ARG_WITH() +function. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -170,7 +170,7 @@ + ## --with section + ## + +-AC_ARG_WITH([openssl],[AS_HELP_STRING([--with-openssl], [This will enable HTTPS support in qhttpclient extension API. When it's enabled, user applications will need to link openssl library with -lssl option.])],[withval=yes],[withval=no]) ++AC_ARG_WITH([openssl],[AS_HELP_STRING([--with-openssl], [This will enable HTTPS support in qhttpclient extension API. When it's enabled, user applications will need to link openssl library with -lssl option.])],[],[withval=no]) + if test "$withval" = yes; then + if test "$with_openssl" = yes; then + with_openssl="/usr/include" +@@ -185,7 +185,7 @@ + fi + fi + +-AC_ARG_WITH([mysql],[AS_HELP_STRING([--with-mysql], [This will enable MySQL database support in qdatabase extension API. When it's enabled, user applications need to link mysql client library. (ex: -lmysqlclient)])],[withval=yes],[withval=no]) ++AC_ARG_WITH([mysql],[AS_HELP_STRING([--with-mysql], [This will enable MySQL database support in qdatabase extension API. When it's enabled, user applications need to link mysql client library. (ex: -lmysqlclient)])],[],[withval=no]) + if test "$withval" = yes; then + if test "$with_mysql" = yes; then + with_mysql="/usr/include/mysql" diff --git a/buildroot/package/qlibc/Config.in b/buildroot/package/qlibc/Config.in new file mode 100644 index 0000000..ad6f1fe --- /dev/null +++ b/buildroot/package/qlibc/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_QLIBC + bool "qlibc" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + qLibc is currently one of the most functionally complete + public licensed C/C++ libraries. The C/C++ library which + includes all kinds of containers and general library + routines. It provides ready-made set of common container + APIs with consistant API look. + + https://github.com/wolkykim/qlibc + +comment "qlibc needs a toolchain w/ threads, wchar, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/buildroot/package/qlibc/qlibc.hash b/buildroot/package/qlibc/qlibc.hash new file mode 100644 index 0000000..6b8e4d8 --- /dev/null +++ b/buildroot/package/qlibc/qlibc.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1f9aa5eefd28c45d409130a35104816d41405da64fe900f70a1c41150891501a qlibc-v2.4.1.tar.gz diff --git a/buildroot/package/qlibc/qlibc.mk b/buildroot/package/qlibc/qlibc.mk new file mode 100644 index 0000000..55c7aa3 --- /dev/null +++ b/buildroot/package/qlibc/qlibc.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# qlibc +# +################################################################################ + +QLIBC_VERSION = v2.4.1 +QLIBC_SITE = $(call github,wolkykim,qlibc,$(QLIBC_VERSION)) +QLIBC_LICENSE = BSD-2-Clause +QLIBC_LICENSE_FILES = LICENSE + +# We're patching configure.ac +QLIBC_AUTORECONF = YES +QLIBC_INSTALL_STAGING = YES +QLIBC_DEPENDENCIES = $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +# The configure.ac checks for these use AC_CHECK_FILE() which doesn't +# work for cross-compilation. If someone wants to enable the support +# for OpenSSL or MySQL, some changes to the configure.ac will be +# needed. +QLIBC_CONF_OPTS = --without-mysql --without-openssl + +$(eval $(autotools-package)) diff --git a/buildroot/package/qpdf/Config.in b/buildroot/package/qpdf/Config.in new file mode 100644 index 0000000..87a3192 --- /dev/null +++ b/buildroot/package/qpdf/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_QPDF + bool "qpdf" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_JPEG + help + QPDF is a command-line program that does structural, + content- preserving transformations on PDF files. It could + have been called something like pdf-to-pdf. It also provides + many useful capabilities to developers of PDF-producing + software or for people who just want to look at the innards + of a PDF file to learn more about how they work. + + http://qpdf.sourceforge.net/ + +comment "qpdf needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/qpdf/qpdf.hash b/buildroot/package/qpdf/qpdf.hash new file mode 100644 index 0000000..d27c983 --- /dev/null +++ b/buildroot/package/qpdf/qpdf.hash @@ -0,0 +1,2 @@ +# From https://sourceforge.net/projects/qpdf/files/qpdf/8.1.0/qpdf-8.1.0.sha512/download +sha512 1831bcaaed87dae268db5d61805d1483ec5c101f6ce594be660664c119597ae67cf011c2b50092964d785a814d5f6c780935127a89401fe37a1026ae4d3af15c qpdf-8.1.0.tar.gz diff --git a/buildroot/package/qpdf/qpdf.mk b/buildroot/package/qpdf/qpdf.mk new file mode 100644 index 0000000..4776d22 --- /dev/null +++ b/buildroot/package/qpdf/qpdf.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# qpdf +# +################################################################################ + +QPDF_VERSION = 8.1.0 +QPDF_SITE = http://downloads.sourceforge.net/project/qpdf/qpdf/$(QPDF_VERSION) +QPDF_INSTALL_STAGING = YES +QPDF_LICENSE = Artistic-2.0 +QPDF_LICENSE_FILES = Artistic-2.0 +QPDF_DEPENDENCIES = pcre zlib jpeg + +QPDF_CONF_OPTS = --without-random + +$(eval $(autotools-package)) diff --git a/buildroot/package/qpid-proton/Config.in b/buildroot/package/qpid-proton/Config.in new file mode 100644 index 0000000..b49a2af --- /dev/null +++ b/buildroot/package/qpid-proton/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_QPID_PROTON + bool "qpid-proton" + depends on !BR2_STATIC_LIBS # build a shared library + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + The AMQP messaging toolkit + + Qpid Proton is a high-performance, lightweight messaging + library. It can be used in the widest range of messaging + applications, including brokers, client libraries, routers, + bridges, proxies, and more. + + https://qpid.apache.org/proton/ + +comment "qpid-proton needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/qpid-proton/qpid-proton.hash b/buildroot/package/qpid-proton/qpid-proton.hash new file mode 100644 index 0000000..8c2cc4f --- /dev/null +++ b/buildroot/package/qpid-proton/qpid-proton.hash @@ -0,0 +1,2 @@ +# Hash from: http://www.apache.org/dist/qpid/proton/0.9.1/qpid-proton-0.9.1.tar.gz.sha +sha1 98008d90acd0d47cbd7ac1572a2bb50b452338ed qpid-proton-0.9.1.tar.gz diff --git a/buildroot/package/qpid-proton/qpid-proton.mk b/buildroot/package/qpid-proton/qpid-proton.mk new file mode 100644 index 0000000..c501e48 --- /dev/null +++ b/buildroot/package/qpid-proton/qpid-proton.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# qpid-proton +# +################################################################################ + +QPID_PROTON_VERSION = 0.9.1 +QPID_PROTON_SITE = http://apache.panu.it/qpid/proton/$(QPID_PROTON_VERSION) +QPID_PROTON_STRIP_COMPONENTS = 2 +QPID_PROTON_LICENSE = Apache-2.0 +QPID_PROTON_LICENSE_FILES = LICENSE +QPID_PROTON_INSTALL_STAGING = YES +QPID_PROTON_DEPENDENCIES = \ + host-python \ + util-linux \ + $(if $(BR2_PACKAGE_OPENSSL),openssl) + +# Language bindings are enabled when host-swig tool is present in HOST_DIR. +# For now, disable all of them. +QPID_PROTON_CONF_OPTS = \ + -DBUILD_JAVA=OFF \ + -DBUILD_JAVASCRIPT=OFF \ + -DBUILD_PERL=OFF \ + -DBUILD_PHP=OFF \ + -DBUILD_PYTHON=OFF \ + -DBUILD_RUBY=OFF \ + -DENABLE_VALGRIND=OFF \ + -DENABLE_WARNING_ERROR=OFF \ + -DPYTHON_EXECUTABLE=$(HOST_DIR)/bin/python2 + +define QPID_PROTON_REMOVE_USELESS_FILES + rm -fr $(TARGET_DIR)/usr/share/proton-*/ +endef + +QPID_PROTON_POST_INSTALL_TARGET_HOOKS += QPID_PROTON_REMOVE_USELESS_FILES + +$(eval $(cmake-package)) diff --git a/buildroot/package/qt-webkit-kiosk/Config.in b/buildroot/package/qt-webkit-kiosk/Config.in new file mode 100644 index 0000000..71b4f83 --- /dev/null +++ b/buildroot/package/qt-webkit-kiosk/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_QT_WEBKIT_KIOSK + bool "qt-webkit-kiosk" + depends on BR2_PACKAGE_QT5 + depends on !BR2_STATIC_LIBS # qt5webkit + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5webkit + depends on BR2_HOST_GCC_AT_LEAST_4_8 # qt5webkit -> icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # qt5webkit -> icu + depends on !BR2_BINFMT_FLAT # qt5webkit -> icu + depends on !BR2_MIPS_SOFT_FLOAT # qt5webkit + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5WEBKIT + select BR2_PACKAGE_QT5MULTIMEDIA + help + Simple kiosk-mode browser powered by Qt5Webkit + +if BR2_PACKAGE_QT_WEBKIT_KIOSK + +config BR2_PACKAGE_QT_WEBKIT_KIOSK_SOUNDS + bool "Install browser sound files" + help + Deploy browser sound files on target + +endif + +comment "qt-webkit-kiosk needs a toolchain w/ dynamic library, gcc >= 4.8, host gcc >= 4.8" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_HOST_GCC_AT_LEAST_4_8 + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_BINFMT_FLAT + depends on !BR2_MIPS_SOFT_FLOAT diff --git a/buildroot/package/qt-webkit-kiosk/qt-webkit-kiosk.hash b/buildroot/package/qt-webkit-kiosk/qt-webkit-kiosk.hash new file mode 100644 index 0000000..8097c88 --- /dev/null +++ b/buildroot/package/qt-webkit-kiosk/qt-webkit-kiosk.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 ec05f5bcb202265202a6f3ff74372516ce9beb82206ff67ca2b1b6fcb586ecd2 qt-webkit-kiosk-34efddb0bf0c36c8652f90dcd001db123f286f04.tar.gz diff --git a/buildroot/package/qt-webkit-kiosk/qt-webkit-kiosk.mk b/buildroot/package/qt-webkit-kiosk/qt-webkit-kiosk.mk new file mode 100644 index 0000000..c279cbe --- /dev/null +++ b/buildroot/package/qt-webkit-kiosk/qt-webkit-kiosk.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# qt-webkit-kiosk +# +################################################################################ + +QT_WEBKIT_KIOSK_VERSION = 34efddb0bf0c36c8652f90dcd001db123f286f04 +QT_WEBKIT_KIOSK_SITE = https://github.com/sergey-dryabzhinsky/qt-webkit-kiosk.git +QT_WEBKIT_KIOSK_SITE_METHOD = git +QT_WEBKIT_KIOSK_DEPENDENCIES = qt5webkit qt5multimedia +QT_WEBKIT_KIOSK_LICENSE = LGPL-3.0 +QT_WEBKIT_KIOSK_LICENSE_FILES = doc/lgpl.html + +define QT_WEBKIT_KIOSK_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(QT5_QMAKE) PREFIX=/usr) +endef + +define QT_WEBKIT_KIOSK_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT_WEBKIT_KIOSK_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src -f Makefile.qt-webkit-kiosk \ + INSTALL_ROOT=$(TARGET_DIR) \ + install_target + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + INSTALL_ROOT=$(TARGET_DIR) \ + install_config \ + $(if $(BR2_PACKAGE_QT_WEBKIT_KIOSK_SOUNDS),install_sound) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt/0001-alsatest-fix-the-check-to-treat-alsalib-1.1.x-as-correct.patch b/buildroot/package/qt/0001-alsatest-fix-the-check-to-treat-alsalib-1.1.x-as-correct.patch new file mode 100644 index 0000000..4cec4bd --- /dev/null +++ b/buildroot/package/qt/0001-alsatest-fix-the-check-to-treat-alsalib-1.1.x-as-correct.patch @@ -0,0 +1,29 @@ +From b8f98d956501dfa4ce03a137f15d404930a56066 Mon Sep 17 00:00:00 2001 +From: Dmitry Shachnev +Date: Sat, 5 Mar 2016 10:25:33 +0300 +Subject: [PATCH] alsatest: Fix the check to treat alsalib 1.1.x as correct + version + +Task-number: QTBUG-51681 +Change-Id: I63266c33342f02f4d1a5ea5786f5fbc5a1b421b3 +Reviewed-by: Oswald Buddenhagen +[Upstream commit: https://github.com/qtproject/qtbase/commit/b8f98d956501dfa4ce03a137f15d404930a56066] +[Patch fixing ALSA detection. Taken from Qt5, but applies fine to Qt4.] +Signed-off-by: Thomas Petazzoni +--- + config.tests/unix/alsa/alsatest.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/config.tests/unix/alsa/alsatest.cpp b/config.tests/unix/alsa/alsatest.cpp +index cab6533977..0b45819b61 100644 +--- a/config.tests/unix/alsa/alsatest.cpp ++++ b/config.tests/unix/alsa/alsatest.cpp +@@ -32,7 +32,7 @@ + ****************************************************************************/ + + #include +-#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10)) ++#if SND_LIB_VERSION < 0x1000a // 1.0.10 + #error "Alsa version found too old, require >= 1.0.10" + #endif + diff --git a/buildroot/package/qt/0002-configure.patch b/buildroot/package/qt/0002-configure.patch new file mode 100644 index 0000000..07c9630 --- /dev/null +++ b/buildroot/package/qt/0002-configure.patch @@ -0,0 +1,52 @@ +Fix -hostprefix behaviour + +When -hostprefix ./configure option is used, Qt installs all its +headers, libraries and binaries inside the given host prefix, instead +of the prefix. This is used by Buildroot to make sure that all Qt +libraries and headers are installed in $(STAGING_DIR). + +Qt ./configure script also allows to tune the installation location of +various elements, for examples the plugins through the -plugindir +option. Unfortunately, this option only impact the installation path +on the target, but not on the host when -hostprefix is used. + +This patch modifies Qt ./configure script so that HOST_*PATH_STR +variables are composed of the host prefix concatenated with the path +of installation on the target. This way, the plugin installation local +in the $(STAGING_DIR) and on the target remains the same. + +Signed-off-by: Thomas Petazzoni + +--- + configure | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +Index: qt-everywhere-opensource-src-4.8.1/configure +=================================================================== +--- qt-everywhere-opensource-src-4.8.1.orig/configure ++++ qt-everywhere-opensource-src-4.8.1/configure +@@ -4661,15 +4661,15 @@ + + + if [ ! -z "$QT_HOST_PREFIX" ]; then +- HOSTPREFIX_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_prfxpath=$QT_HOST_PREFIX"` +- HOSTDOCUMENTATION_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_docspath=$QT_HOST_PREFIX/doc"` +- HOSTHEADERS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_hdrspath=$QT_HOST_PREFIX/include"` +- HOSTLIBRARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_libspath=$QT_HOST_PREFIX/lib"` +- HOSTBINARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_binspath=$QT_HOST_PREFIX/bin"` +- HOSTPLUGINS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_plugpath=$QT_HOST_PREFIX/plugins"` +- HOSTIMPORTS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_impspath=$QT_HOST_PREFIX/IMPORTS"` +- HOSTDATA_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_datapath=$QT_HOST_PREFIX"` +- HOSTTRANSLATIONS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_trnspath=$QT_HOST_PREFIX/translations"` ++ HOSTPREFIX_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_prfxpath=$QT_HOST_PREFIX/$QT_INSTALL_PREFIX"` ++ HOSTDOCUMENTATION_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_docspath=$QT_HOST_PREFIX/$QT_INSTALL_DOCS"` ++ HOSTHEADERS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_hdrspath=$QT_HOST_PREFIX/$QT_INSTALL_HEADERS"` ++ HOSTLIBRARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_libspath=$QT_HOST_PREFIX/$QT_INSTALL_LIBS"` ++ HOSTBINARIES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_binspath=$QT_HOST_PREFIX/$QT_INSTALL_BINS"` ++ HOSTPLUGINS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_plugpath=$QT_HOST_PREFIX/$QT_INSTALL_PLUGINS"` ++ HOSTIMPORTS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_impspath=$QT_HOST_PREFIX/$QT_INSTALL_IMPORTS"` ++ HOSTDATA_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_datapath=$QT_HOST_PREFIX/$QT_INSTALL_DATA"` ++ HOSTTRANSLATIONS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_trnspath=$QT_HOST_PREFIX/$QT_INSTALL_TRANSLATIONS"` + HOSTSETTINGS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_stngpath=$QT_INSTALL_SETTINGS"` + HOSTEXAMPLES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_xmplpath=$QT_INSTALL_EXAMPLES"` + HOSTDEMOS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_demopath=$QT_INSTALL_DEMOS"` diff --git a/buildroot/package/qt/0003-eglwsegl-use-system.patch b/buildroot/package/qt/0003-eglwsegl-use-system.patch new file mode 100644 index 0000000..cb30381 --- /dev/null +++ b/buildroot/package/qt/0003-eglwsegl-use-system.patch @@ -0,0 +1,802 @@ +Patch to remove obsolete powervr headers and instead use the headers provided +on the system. + +Signed-off-by: Spenser Gilliland +--- +Index: qt-4.8.5/src/3rdparty/powervr/pvr2d.h +=================================================================== +--- qt-4.8.5.orig/src/3rdparty/powervr/pvr2d.h 2013-07-08 11:24:33.010516867 -0500 ++++ /dev/null 1970-01-01 00:00:00.000000000 +0000 +@@ -1,502 +0,0 @@ +-/*!**************************************************************************** +-@File pvr2d.h +-@Title PVR2D external header file +-@Author Imagination Technologies +-@Copyright Copyright (c) by Imagination Technologies Limited. +- This specification is protected by copyright laws and contains +- material proprietary to Imagination Technologies Limited. +- You may use and distribute this specification free of charge for implementing +- the functionality therein, without altering or removing any trademark, copyright, +- or other notice from the specification. +-@Platform Generic +-@Description PVR2D definitions for PVR2D clients +-******************************************************************************/ +- +- +-/****************************************************************************** +-Modifications :- +-$Log: pvr2d.h $ +-******************************************************************************/ +- +-#ifndef _PVR2D_H_ +-#define _PVR2D_H_ +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-/* PVR2D Platform-specific definitions */ +-#define PVR2D_EXPORT +-#define PVR2D_IMPORT +- +- +-#define PVR2D_REV_MAJOR 2 +-#define PVR2D_REV_MINOR 1 +- +-typedef enum +-{ +- PVR2D_FALSE = 0, +- PVR2D_TRUE +-} PVR2D_BOOL; +- +- +-/* error codes */ +-typedef enum +-{ +- PVR2D_OK = 0, +- PVR2DERROR_INVALID_PARAMETER = -1, +- PVR2DERROR_DEVICE_UNAVAILABLE = -2, +- PVR2DERROR_INVALID_CONTEXT = -3, +- PVR2DERROR_MEMORY_UNAVAILABLE = -4, +- PVR2DERROR_DEVICE_NOT_PRESENT = -5, +- PVR2DERROR_IOCTL_ERROR = -6, +- PVR2DERROR_GENERIC_ERROR = -7, +- PVR2DERROR_BLT_NOTCOMPLETE = -8, +- PVR2DERROR_HW_FEATURE_NOT_SUPPORTED = -9, +- PVR2DERROR_NOT_YET_IMPLEMENTED = -10, +- PVR2DERROR_MAPPING_FAILED = -11 +-}PVR2DERROR; +- +- +-/* pixel formats */ +-typedef enum +-{ +- PVR2D_1BPP = 0, +- PVR2D_RGB565, +- PVR2D_ARGB4444, +- PVR2D_RGB888, +- PVR2D_ARGB8888, +- PVR2D_ARGB1555, +- PVR2D_ALPHA8, +- PVR2D_ALPHA4, +- PVR2D_PAL2, +- PVR2D_PAL4, +- PVR2D_PAL8, +- PVR2D_VGAEMU +- +-}PVR2DFORMAT; +- +- +-/* wrap surface type */ +-typedef enum +-{ +- PVR2D_WRAPFLAG_NONCONTIGUOUS = 0, +- PVR2D_WRAPFLAG_CONTIGUOUS = 1, +- +-}PVR2DWRAPFLAGS; +- +-/* flags for control information of additional blits */ +-typedef enum +-{ +- PVR2D_BLIT_DISABLE_ALL = 0x0000, /* disable all additional controls */ +- PVR2D_BLIT_CK_ENABLE = 0x0001, /* enable colour key */ +- PVR2D_BLIT_GLOBAL_ALPHA_ENABLE = 0x0002, /* enable standard global alpha */ +- PVR2D_BLIT_PERPIXEL_ALPHABLEND_ENABLE = 0x0004, /* enable per-pixel alpha bleding */ +- PVR2D_BLIT_PAT_SURFACE_ENABLE = 0x0008, /* enable pattern surf (disable fill) */ +- PVR2D_BLIT_FULLY_SPECIFIED_ALPHA_ENABLE = 0x0010, /* enable fully specified alpha */ +- PVR2D_BLIT_ROT_90 = 0x0020, /* apply 90 degree rotation to the blt */ +- PVR2D_BLIT_ROT_180 = 0x0040, /* apply 180 degree rotation to the blt */ +- PVR2D_BLIT_ROT_270 = 0x0080, /* apply 270 degree rotation to the blt */ +- PVR2D_BLIT_COPYORDER_TL2BR = 0x0100, /* copy order overrides */ +- PVR2D_BLIT_COPYORDER_BR2TL = 0x0200, +- PVR2D_BLIT_COPYORDER_TR2BL = 0x0400, +- PVR2D_BLIT_COPYORDER_BL2TR = 0x0800, +- PVR2D_BLIT_COLKEY_SOURCE = 0x1000, /* Key colour is on the source surface */ +- PVR2D_BLIT_COLKEY_DEST = 0x2000 /* Key colour is on the destination surface */ +- +-} PVR2DBLITFLAGS; +- +-/* standard alpha-blending functions, AlphaBlendingFunc field of PVR2DBLTINFO */ +-typedef enum +-{ +- PVR2D_ALPHA_OP_SRC_DSTINV = 1, /* source alpha : Cdst = Csrc*Asrc + Cdst*(1-Asrc) */ +- PVR2D_ALPHA_OP_SRCP_DSTINV = 2 /* premultiplied source alpha : Cdst = Csrc + Cdst*(1-Asrc) */ +-} PVR2D_ALPHABLENDFUNC; +- +-/* blend ops for fully specified alpha */ +-typedef enum +-{ +- PVR2D_BLEND_OP_ZERO = 0, +- PVR2D_BLEND_OP_ONE = 1, +- PVR2D_BLEND_OP_SRC = 2, +- PVR2D_BLEND_OP_DST = 3, +- PVR2D_BLEND_OP_GLOBAL = 4, +- PVR2D_BLEND_OP_SRC_PLUS_GLOBAL = 5, +- PVR2D_BLEND_OP_DST_PLUS_GLOBAL = 6 +-}PVR2D_BLEND_OP; +- +- +-typedef void* PVR2D_HANDLE; +- +- +-/* Fully specified alpha blend : pAlpha field of PVR2DBLTINFO structure */ +-/* a fully specified Alpha Blend operation is defined as */ +-/* DST (ALPHA) = (ALPHA_1 * SRC (ALPHA)) + (ALPHA_3 * DST (ALPHA)) */ +-/* DST (RGB) = (ALPHA_2 * SRC (RGB)) + (ALPHA_4 * DST (RGB)) */ +-/* if the pre-multiplication stage is enabled then the equations become the following: */ +-/* PRE_MUL = ((SRC(A)) * (Global Alpha Value)) */ +-/* DST (ALPHA) = (ALPHA_1 * SRC (ALPHA)) + (PRE_MUL * DST (ALPHA)) */ +-/* DST (RGB) = (ALPHA_2 * SRC (RGB)) + (PRE_MUL * DST (RGB)) */ +-/* if the transparent source alpha stage is enabled then a source alpha of zero forces the */ +-/* source to be transparent for that pixel regardless of the blend equation being used. */ +-typedef struct _PVR2D_ALPHABLT +-{ +- PVR2D_BLEND_OP eAlpha1; +- PVR2D_BOOL bAlpha1Invert; +- PVR2D_BLEND_OP eAlpha2; +- PVR2D_BOOL bAlpha2Invert; +- PVR2D_BLEND_OP eAlpha3; +- PVR2D_BOOL bAlpha3Invert; +- PVR2D_BLEND_OP eAlpha4; +- PVR2D_BOOL bAlpha4Invert; +- PVR2D_BOOL bPremulAlpha; /* enable pre-multiplication stage */ +- PVR2D_BOOL bTransAlpha; /* enable transparent source alpha stage */ +- PVR2D_BOOL bUpdateAlphaLookup; /* enable and update the 1555-Lookup alpha table */ +- unsigned char uAlphaLookup0; /* 8 bit alpha when A=0 in a 1555-Lookup surface */ +- unsigned char uAlphaLookup1; /* 8 bit alpha when A=1 in a 1555-Lookup surface */ +- unsigned char uGlobalRGB; /* Global Alpha Value for RGB, 0=transparent 255=opaque */ +- unsigned char uGlobalA; /* Global Alpha Value for Alpha */ +- +-} PVR2D_ALPHABLT, *PPVR2D_ALPHABLT; +- +- +-/* surface memory info structure */ +-typedef struct _PVR2DMEMINFO +-{ +- void *pBase; +- unsigned long ui32MemSize; +- unsigned long ui32DevAddr; +- unsigned long ulFlags; +- void *hPrivateData; +- void *hPrivateMapData; +- +-}PVR2DMEMINFO, *PPVR2DMEMINFO; +- +- +-#define PVR2D_MAX_DEVICE_NAME 20 +- +-typedef struct _PVR2DDEVICEINFO +-{ +- unsigned long ulDevID; +- char szDeviceName[PVR2D_MAX_DEVICE_NAME]; +-}PVR2DDEVICEINFO; +- +- +-typedef struct _PVR2DISPLAYINFO +-{ +- unsigned long ulMaxFlipChains; +- unsigned long ulMaxBuffersInChain; +- PVR2DFORMAT eFormat; +- unsigned long ulWidth; +- unsigned long ulHeight; +- long lStride; +- unsigned long ulMinFlipInterval; +- unsigned long ulMaxFlipInterval; +- +-}PVR2DDISPLAYINFO; +- +- +-typedef struct _PVR2DBLTINFO +-{ +- unsigned long CopyCode; /* rop code */ +- unsigned long Colour; /* fill colour */ +- unsigned long ColourKey; /* colour key */ +- unsigned char GlobalAlphaValue; /* global alpha blending */ +- unsigned char AlphaBlendingFunc; /* per-pixel alpha-blending function */ +- +- PVR2DBLITFLAGS BlitFlags; /* additional blit control information */ +- +- PVR2DMEMINFO *pDstMemInfo; /* destination memory */ +- unsigned long DstOffset; /* byte offset from start of allocation to destination surface pixel 0,0 */ +- long DstStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */ +- long DstX, DstY; /* pixel offset from start of dest surface to start of blt rectangle */ +- long DSizeX,DSizeY; /* blt size */ +- PVR2DFORMAT DstFormat; /* dest format */ +- unsigned long DstSurfWidth; /* size of dest surface in pixels */ +- unsigned long DstSurfHeight; /* size of dest surface in pixels */ +- +- PVR2DMEMINFO *pSrcMemInfo; /* source mem, (source fields are also used for patterns) */ +- unsigned long SrcOffset; /* byte offset from start of allocation to src/pat surface pixel 0,0 */ +- long SrcStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */ +- long SrcX, SrcY; /* pixel offset from start of surface to start of source rectangle */ +- /* for patterns this is the start offset within the pattern */ +- long SizeX,SizeY; /* source rectangle size or pattern size in pixels */ +- PVR2DFORMAT SrcFormat; /* source/pattern format */ +- PVR2DMEMINFO *pPalMemInfo; /* source/pattern palette memory containing argb8888 colour table */ +- unsigned long PalOffset; /* byte offset from start of allocation to start of palette */ +- unsigned long SrcSurfWidth; /* size of source surface in pixels */ +- unsigned long SrcSurfHeight; /* size of source surface in pixels */ +- +- PVR2DMEMINFO *pMaskMemInfo; /* mask memory, 1bpp format implied */ +- unsigned long MaskOffset; /* byte offset from start of allocation to mask surface pixel 0,0 */ +- long MaskStride; /* signed stride, the number of bytes from pixel 0,0 to 0,1 */ +- long MaskX, MaskY; /* mask rect top left (mask size = blt size) */ +- unsigned long MaskSurfWidth; /* size of mask surface in pixels */ +- unsigned long MaskSurfHeight; /* size of mask surface in pixels */ +- +- PPVR2D_ALPHABLT pAlpha; /* fully specified alpha blend */ +- +-}PVR2DBLTINFO, *PPVR2DBLTINFO; +- +-typedef struct _PVR2DRECT +-{ +- long left, top; +- long right, bottom; +-} PVR2DRECT; +- +-typedef struct +-{ +- PVR2DMEMINFO *pSurfMemInfo; /* surface memory */ +- unsigned long SurfOffset; /* byte offset from start of allocation to destination surface pixel 0,0 */ +- long Stride; /* signed stride */ +- PVR2DFORMAT Format; +- unsigned long SurfWidth; /* surface size in pixels */ +- unsigned long SurfHeight; +- +-} PVR2D_SURFACE, *PPVR2D_SURFACE; +- +-typedef struct +-{ +- unsigned long *pUseCode; /* USSE code */ +- unsigned long UseCodeSize; /* usse code size in bytes */ +- +-} PVR2D_USECODE, *PPVR2D_USECODE; +- +-typedef struct +-{ +- PVR2D_SURFACE sDst; /* destination surface */ +- PVR2D_SURFACE sSrc; /* source surface */ +- PVR2DRECT rcDest; /* destination rectangle */ +- PVR2DRECT rcSource; /* source rectangle */ +- PVR2D_HANDLE hUseCode; /* custom USE code (NULL implies source copy) */ +- unsigned long UseParams[2]; /* per-blt params for use code */ +- +-} PVR2D_3DBLT, *PPVR2D_3DBLT; +- +- +-#define MAKE_COPY_BLIT(src,soff,dest,doff,sx,sy,dx,dy,sz) +- +-typedef void* PVR2DCONTEXTHANDLE; +-typedef void* PVR2DFLIPCHAINHANDLE; +- +- +-// CopyCode field of PVR2DBLTINFO structure: +-// the CopyCode field of the PVR2DBLTINFO structure should contain a rop3 or rop4 code. +-// a rop3 is an 8 bit code that describes a blt with three inputs : source dest and pattern +-// rop4 is a 16 bit code that describes a blt with four inputs : source dest pattern and mask +-// common rop3 codes are defined below +-// a colour fill blt is processed in the pattern channel as a constant colour with a rop code of 0xF0 +-// PVR2D_BLIT_PAT_SURFACE_ENABLE defines whether the pattern channel is a surface or a fill colour. +-// a rop4 is defined by two rop3 codes, and the 1 bit-per-pixel mask surface defines which is used. +-// a common rop4 is 0xAAF0 which is the mask copy blt used for text glyphs. +-// CopyCode is taken to be a rop4 when pMaskMemInfo is non zero, otherwise it is assumed to be a rop3 +-// use the PVR2DMASKROP4 macro below to construct a rop4 from two rop3's +-// rop3a is the rop used when mask pixel = 1, and rop3b when mask = 0 +-#define PVR2DROP4(rop3b, rop3a) ((rop3b<<8)|rop3a) +- +-/* common rop codes */ +-#define PVR2DROPclear 0x00 /* 0 (whiteness) */ +-#define PVR2DROPset 0xFF /* 1 (blackness) */ +-#define PVR2DROPnoop 0xAA /* dst (used for masked blts) */ +- +-/* source and dest rop codes */ +-#define PVR2DROPand 0x88 /* src AND dst */ +-#define PVR2DROPandReverse 0x44 /* src AND NOT dst */ +-#define PVR2DROPcopy 0xCC /* src (used for source copy and alpha blts) */ +-#define PVR2DROPandInverted 0x22 /* NOT src AND dst */ +-#define PVR2DROPxor 0x66 /* src XOR dst */ +-#define PVR2DROPor 0xEE /* src OR dst */ +-#define PVR2DROPnor 0x11 /* NOT src AND NOT dst */ +-#define PVR2DROPequiv 0x99 /* NOT src XOR dst */ +-#define PVR2DROPinvert 0x55 /* NOT dst */ +-#define PVR2DROPorReverse 0xDD /* src OR NOT dst */ +-#define PVR2DROPcopyInverted 0x33 /* NOT src */ +-#define PVR2DROPorInverted 0xBB /* NOT src OR dst */ +-#define PVR2DROPnand 0x77 /* NOT src OR NOT dst */ +- +-/* pattern rop codes */ +-#define PVR2DPATROPand 0xA0 /* pat AND dst */ +-#define PVR2DPATROPandReverse 0x50 /* pat AND NOT dst */ +-#define PVR2DPATROPcopy 0xF0 /* pat (used for solid color fills and pattern blts) */ +-#define PVR2DPATROPandInverted 0x0A /* NOT pat AND dst */ +-#define PVR2DPATROPxor 0x5A /* pat XOR dst */ +-#define PVR2DPATROPor 0xFA /* pat OR dst */ +-#define PVR2DPATROPnor 0x05 /* NOT pat AND NOT dst */ +-#define PVR2DPATROPequiv 0xA5 /* NOT pat XOR dst */ +-#define PVR2DPATROPinvert 0x55 /* NOT dst */ +-#define PVR2DPATROPorReverse 0xF5 /* pat OR NOT dst */ +-#define PVR2DPATROPcopyInverted 0x0F /* NOT pat */ +-#define PVR2DPATROPorInverted 0xAF /* NOT pat OR dst */ +-#define PVR2DPATROPnand 0x5F /* NOT pat OR NOT dst */ +- +-/* common rop4 codes */ +-#define PVR2DROP4MaskedCopy PVR2DROP4(PVR2DROPnoop,PVR2DROPcopy) /* masked source copy blt (used for rounded window corners etc) */ +-#define PVR2DROP4MaskedFill PVR2DROP4(PVR2DROPnoop,PVR2DPATROPcopy) /* masked colour fill blt (used for text) */ +- +-/* Legacy support */ +-#define PVR2DROP3_PATMASK PVR2DPATROPcopy +-#define PVR2DROP3_SRCMASK PVR2DROPcopy +- +-/* pixmap memory alignment */ +-#define PVR2D_ALIGNMENT_4 4 /* DWORD alignment */ +-#define PVR2D_ALIGNMENT_ANY 0 /* no alignment */ +-#define PVR2D_ALIGNMENT_PALETTE 16 /* 16 byte alignment is required for palettes */ +- +-/* Heap number for PVR2DGetFrameBuffer */ +-#define PVR2D_FB_PRIMARY_SURFACE 0 +- +-#define PVR2D_PRESENT_PROPERTY_SRCSTRIDE (1 << 0) +-#define PVR2D_PRESENT_PROPERTY_DSTSIZE (1 << 1) +-#define PVR2D_PRESENT_PROPERTY_DSTPOS (1 << 2) +-#define PVR2D_PRESENT_PROPERTY_CLIPRECTS (1 << 3) +-#define PVR2D_PRESENT_PROPERTY_INTERVAL (1 << 4) +- +- +-#define PVR2D_CREATE_FLIPCHAIN_SHARED (1 << 0) +-#define PVR2D_CREATE_FLIPCHAIN_QUERY (1 << 1) +- +-/* Functions that the library exports */ +- +-PVR2D_IMPORT +-int PVR2DEnumerateDevices(PVR2DDEVICEINFO *pDevInfo); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DCreateDeviceContext(unsigned long ulDevID, +- PVR2DCONTEXTHANDLE* phContext, +- unsigned long ulFlags); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DDestroyDeviceContext(PVR2DCONTEXTHANDLE hContext); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DGetDeviceInfo(PVR2DCONTEXTHANDLE hContext, +- PVR2DDISPLAYINFO *pDisplayInfo); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DGetScreenMode(PVR2DCONTEXTHANDLE hContext, +- PVR2DFORMAT *pFormat, +- long *plWidth, +- long *plHeight, +- long *plStride, +- int *piRefreshRate); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DGetFrameBuffer(PVR2DCONTEXTHANDLE hContext, +- int nHeap, +- PVR2DMEMINFO **ppsMemInfo); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DMemAlloc(PVR2DCONTEXTHANDLE hContext, +- unsigned long ulBytes, +- unsigned long ulAlign, +- unsigned long ulFlags, +- PVR2DMEMINFO **ppsMemInfo); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DMemWrap(PVR2DCONTEXTHANDLE hContext, +- void *pMem, +- unsigned long ulFlags, +- unsigned long ulBytes, +- unsigned long alPageAddress[], +- PVR2DMEMINFO **ppsMemInfo); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DMemMap(PVR2DCONTEXTHANDLE hContext, +- unsigned long ulFlags, +- void *hPrivateMapData, +- PVR2DMEMINFO **ppsDstMem); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DMemFree(PVR2DCONTEXTHANDLE hContext, +- PVR2DMEMINFO *psMemInfo); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DBlt(PVR2DCONTEXTHANDLE hContext, +- PVR2DBLTINFO *pBltInfo); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DBltClipped(PVR2DCONTEXTHANDLE hContext, +- PVR2DBLTINFO *pBltInfo, +- unsigned long ulNumClipRects, +- PVR2DRECT *pClipRects); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DQueryBlitsComplete(PVR2DCONTEXTHANDLE hContext, +- PVR2DMEMINFO *pMemInfo, +- unsigned int uiWaitForComplete); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DSetPresentBltProperties(PVR2DCONTEXTHANDLE hContext, +- unsigned long ulPropertyMask, +- long lSrcStride, +- unsigned long ulDstWidth, +- unsigned long ulDstHeight, +- long lDstXPos, +- long lDstYPos, +- unsigned long ulNumClipRects, +- PVR2DRECT *pClipRects, +- unsigned long ulSwapInterval); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DPresentBlt(PVR2DCONTEXTHANDLE hContext, +- PVR2DMEMINFO *pMemInfo, +- long lRenderID); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DCreateFlipChain(PVR2DCONTEXTHANDLE hContext, +- unsigned long ulFlags, +- unsigned long ulNumBuffers, +- unsigned long ulWidth, +- unsigned long ulHeight, +- PVR2DFORMAT eFormat, +- long *plStride, +- unsigned long *pulFlipChainID, +- PVR2DFLIPCHAINHANDLE *phFlipChain); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DDestroyFlipChain(PVR2DCONTEXTHANDLE hContext, +- PVR2DFLIPCHAINHANDLE hFlipChain); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DGetFlipChainBuffers(PVR2DCONTEXTHANDLE hContext, +- PVR2DFLIPCHAINHANDLE hFlipChain, +- unsigned long *pulNumBuffers, +- PVR2DMEMINFO *psMemInfo[]); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DSetPresentFlipProperties(PVR2DCONTEXTHANDLE hContext, +- PVR2DFLIPCHAINHANDLE hFlipChain, +- unsigned long ulPropertyMask, +- long lDstXPos, +- long lDstYPos, +- unsigned long ulNumClipRects, +- PVR2DRECT *pClipRects, +- unsigned long ulSwapInterval); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DPresentFlip(PVR2DCONTEXTHANDLE hContext, +- PVR2DFLIPCHAINHANDLE hFlipChain, +- PVR2DMEMINFO *psMemInfo, +- long lRenderID); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DGetAPIRev(long *lRevMajor, long *lRevMinor); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DLoadUseCode (const PVR2DCONTEXTHANDLE hContext, const unsigned char *pUseCode, +- const unsigned long UseCodeSize, PVR2D_HANDLE *pUseCodeHandle); +-PVR2D_IMPORT +-PVR2DERROR PVR2DFreeUseCode (const PVR2DCONTEXTHANDLE hContext, const PVR2D_HANDLE hUseCodeHandle); +- +-PVR2D_IMPORT +-PVR2DERROR PVR2DBlt3D (const PVR2DCONTEXTHANDLE hContext, const PPVR2D_3DBLT pBlt3D); +- +-#ifdef __cplusplus +-} +-#endif +- +-#endif /* _PVR2D_H_ */ +- +-/****************************************************************************** +- End of file (pvr2d.h) +-******************************************************************************/ +Index: qt-4.8.5/src/3rdparty/powervr/wsegl.h +=================================================================== +--- qt-4.8.5.orig/src/3rdparty/powervr/wsegl.h 2013-07-08 11:24:33.010516867 -0500 ++++ /dev/null 1970-01-01 00:00:00.000000000 +0000 +@@ -1,240 +0,0 @@ +-/****************************************************************************** +- Name : wsegl.h +- Copyright : Copyright (c) Imagination Technologies Limited. +- This specification is protected by copyright laws and contains +- material proprietary to Imagination Technologies Limited. +- You may use and distribute this specification free of charge for implementing +- the functionality therein, without altering or removing any trademark, copyright, +- or other notice from the specification. +- Platform : ANSI +-*****************************************************************************/ +- +- +-#if !defined(__WSEGL_H__) +-#define __WSEGL_H__ +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-/* +-// WSEGL Platform-specific definitions +-*/ +-#define WSEGL_EXPORT +-#define WSEGL_IMPORT +- +-/* +-// WSEGL API Version Number +-*/ +- +-#define WSEGL_VERSION 1 +-#define WSEGL_DEFAULT_DISPLAY 0 +-#define WSEGL_DEFAULT_NATIVE_ENGINE 0 +- +-#define WSEGL_FALSE 0 +-#define WSEGL_TRUE 1 +-#define WSEGL_NULL 0 +- +-#define WSEGL_UNREFERENCED_PARAMETER(param) (param) = (param) +- +-/* +-// WSEGL handles +-*/ +-typedef void *WSEGLDisplayHandle; +-typedef void *WSEGLDrawableHandle; +- +-/* +-// Display capability type +-*/ +-typedef enum WSEGLCapsType_TAG +-{ +- WSEGL_NO_CAPS = 0, +- WSEGL_CAP_MIN_SWAP_INTERVAL = 1, /* System default value = 1 */ +- WSEGL_CAP_MAX_SWAP_INTERVAL = 2, /* System default value = 1 */ +- WSEGL_CAP_WINDOWS_USE_HW_SYNC = 3, /* System default value = 0 (FALSE) */ +- WSEGL_CAP_PIXMAPS_USE_HW_SYNC = 4, /* System default value = 0 (FALSE) */ +- +-} WSEGLCapsType; +- +-/* +-// Display capability +-*/ +-typedef struct WSEGLCaps_TAG +-{ +- WSEGLCapsType eCapsType; +- unsigned long ui32CapsValue; +- +-} WSEGLCaps; +- +-/* +-// Drawable type +-*/ +-#define WSEGL_NO_DRAWABLE 0x0 +-#define WSEGL_DRAWABLE_WINDOW 0x1 +-#define WSEGL_DRAWABLE_PIXMAP 0x2 +- +- +-/* +-// Pixel format of display/drawable +-*/ +-typedef enum WSEGLPixelFormat_TAG +-{ +- WSEGL_PIXELFORMAT_565 = 0, +- WSEGL_PIXELFORMAT_4444 = 1, +- WSEGL_PIXELFORMAT_8888 = 2, +- WSEGL_PIXELFORMAT_1555 = 3 +- +-} WSEGLPixelFormat; +- +-/* +-// Transparent of display/drawable +-*/ +-typedef enum WSEGLTransparentType_TAG +-{ +- WSEGL_OPAQUE = 0, +- WSEGL_COLOR_KEY = 1, +- +-} WSEGLTransparentType; +- +-/* +-// Display/drawable configuration +-*/ +-typedef struct WSEGLConfig_TAG +-{ +- /* +- // Type of drawables this configuration applies to - +- // OR'd values of drawable types. +- */ +- unsigned long ui32DrawableType; +- +- /* Pixel format */ +- WSEGLPixelFormat ePixelFormat; +- +- /* Native Renderable - set to WSEGL_TRUE if native renderable */ +- unsigned long ulNativeRenderable; +- +- /* FrameBuffer Level Parameter */ +- unsigned long ulFrameBufferLevel; +- +- /* Native Visual ID */ +- unsigned long ulNativeVisualID; +- +- /* Native Visual */ +- void *hNativeVisual; +- +- /* Transparent Type */ +- WSEGLTransparentType eTransparentType; +- +- /* Transparent Color - only used if transparent type is COLOR_KEY */ +- unsigned long ulTransparentColor; /* packed as 0x00RRGGBB */ +- +- +-} WSEGLConfig; +- +-/* +-// WSEGL errors +-*/ +-typedef enum WSEGLError_TAG +-{ +- WSEGL_SUCCESS = 0, +- WSEGL_CANNOT_INITIALISE = 1, +- WSEGL_BAD_NATIVE_DISPLAY = 2, +- WSEGL_BAD_NATIVE_WINDOW = 3, +- WSEGL_BAD_NATIVE_PIXMAP = 4, +- WSEGL_BAD_NATIVE_ENGINE = 5, +- WSEGL_BAD_DRAWABLE = 6, +- WSEGL_BAD_CONFIG = 7, +- WSEGL_OUT_OF_MEMORY = 8 +- +-} WSEGLError; +- +-/* +-// Drawable orientation (in degrees anti-clockwise) +-*/ +-typedef enum WSEGLRotationAngle_TAG +-{ +- WSEGL_ROTATE_0 = 0, +- WSEGL_ROTATE_90 = 1, +- WSEGL_ROTATE_180 = 2, +- WSEGL_ROTATE_270 = 3 +- +-} WSEGLRotationAngle; +- +-/* +-// Drawable information required by OpenGL-ES driver +-*/ +-typedef struct WSEGLDrawableParams_TAG +-{ +- /* Width in pixels of the drawable */ +- unsigned long ui32Width; +- +- /* Height in pixels of the drawable */ +- unsigned long ui32Height; +- +- /* Stride in pixels of the drawable */ +- unsigned long ui32Stride; +- +- /* Pixel format of the drawable */ +- WSEGLPixelFormat ePixelFormat; +- +- /* User space cpu virtual address of the drawable */ +- void *pvLinearAddress; +- +- /* HW address of the drawable */ +- unsigned long ui32HWAddress; +- +- /* Private data for the drawable */ +- void *hPrivateData; +- +-} WSEGLDrawableParams; +- +- +-/* +-// Table of function pointers that is returned by WSEGL_GetFunctionTablePointer() +-// +-// The first entry in the table is the version number of the wsegl.h header file that +-// the module has been written against, and should therefore be set to WSEGL_VERSION +-*/ +-typedef struct WSEGL_FunctionTable_TAG +-{ +- unsigned long ui32WSEGLVersion; +- +- WSEGLError (*pfnWSEGL_IsDisplayValid)(NativeDisplayType); +- +- WSEGLError (*pfnWSEGL_InitialiseDisplay)(NativeDisplayType, WSEGLDisplayHandle *, const WSEGLCaps **, WSEGLConfig **); +- +- WSEGLError (*pfnWSEGL_CloseDisplay)(WSEGLDisplayHandle); +- +- WSEGLError (*pfnWSEGL_CreateWindowDrawable)(WSEGLDisplayHandle, WSEGLConfig *, WSEGLDrawableHandle *, NativeWindowType, WSEGLRotationAngle *); +- +- WSEGLError (*pfnWSEGL_CreatePixmapDrawable)(WSEGLDisplayHandle, WSEGLConfig *, WSEGLDrawableHandle *, NativePixmapType, WSEGLRotationAngle *); +- +- WSEGLError (*pfnWSEGL_DeleteDrawable)(WSEGLDrawableHandle); +- +- WSEGLError (*pfnWSEGL_SwapDrawable)(WSEGLDrawableHandle, unsigned long); +- +- WSEGLError (*pfnWSEGL_SwapControlInterval)(WSEGLDrawableHandle, unsigned long); +- +- WSEGLError (*pfnWSEGL_WaitNative)(WSEGLDrawableHandle, unsigned long); +- +- WSEGLError (*pfnWSEGL_CopyFromDrawable)(WSEGLDrawableHandle, NativePixmapType); +- +- WSEGLError (*pfnWSEGL_CopyFromPBuffer)(void *, unsigned long, unsigned long, unsigned long, WSEGLPixelFormat, NativePixmapType); +- +- WSEGLError (*pfnWSEGL_GetDrawableParameters)(WSEGLDrawableHandle, WSEGLDrawableParams *, WSEGLDrawableParams *); +- +- +-} WSEGL_FunctionTable; +- +- +-WSEGL_IMPORT const WSEGL_FunctionTable *WSEGL_GetFunctionTablePointer(void); +- +-#ifdef __cplusplus +-} +-#endif +- +-#endif /* __WSEGL_H__ */ +- +-/****************************************************************************** +- End of file (wsegl.h) +-******************************************************************************/ +Index: qt-4.8.5/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c +=================================================================== +--- qt-4.8.5.orig/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c 2013-07-08 11:24:33.010516867 -0500 ++++ qt-4.8.5/src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c 2013-07-08 11:28:26.142521123 -0500 +@@ -39,7 +39,7 @@ + ** + ****************************************************************************/ + +-#include ++#include + #include + #include + #include +@@ -379,6 +379,20 @@ + return WSEGL_SUCCESS; + } + ++/* Function stub for ConnectDrawable() */ ++static WSEGLError wseglConnectDrawable(WSEGLDrawableHandle hDrawable) ++{ ++ WSEGL_UNREFERENCED_PARAMETER(hDrawable); ++ return WSEGL_SUCCESS; ++} ++ ++/* Function stub for DisconnectDrawable() */ ++static WSEGLError wseglDisconnectDrawable(WSEGLDrawableHandle hDrawable) ++{ ++ WSEGL_UNREFERENCED_PARAMETER(hDrawable); ++ return WSEGL_SUCCESS; ++} ++ + static WSEGL_FunctionTable const wseglFunctions = { + WSEGL_VERSION, + wseglIsDisplayValid, +@@ -392,7 +406,9 @@ + wseglWaitNative, + wseglCopyFromDrawable, + wseglCopyFromPBuffer, +- wseglGetDrawableParameters ++ wseglGetDrawableParameters, ++ wseglConnectDrawable, ++ wseglDisconnectDrawable + }; + + /* Return the table of WSEGL functions to the EGL implementation */ diff --git a/buildroot/package/qt/0004-fix-const-atomics.patch b/buildroot/package/qt/0004-fix-const-atomics.patch new file mode 100644 index 0000000..6485356 --- /dev/null +++ b/buildroot/package/qt/0004-fix-const-atomics.patch @@ -0,0 +1,50 @@ +From d4d07dac01796b2aa0fb501c14865cab7e42b3a9 Mon Sep 17 00:00:00 2001 +From: Mischa Jonker +Date: Sun, 4 Nov 2012 11:42:04 +0100 +Subject: [PATCH] Fix const-related build error in generic atomic ops + +It's still not entirely const-correct though. In all other architectures +this is obfuscated through the use of inline asm (which the compiler +doesn't check). This patch obfuscates through const_cast +--- + src/corelib/arch/generic/qatomic_generic_unix.cpp | 8 ++++---- + src/corelib/arch/qatomic_generic.h | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/corelib/arch/generic/qatomic_generic_unix.cpp b/src/corelib/arch/generic/qatomic_generic_unix.cpp +index 1c6cbf0..6fce81d 100644 +--- a/src/corelib/arch/generic/qatomic_generic_unix.cpp ++++ b/src/corelib/arch/generic/qatomic_generic_unix.cpp +@@ -85,13 +85,13 @@ int QBasicAtomicInt_fetchAndAddOrdered(volatile int *_q_value, int valueToAdd) + + Q_CORE_EXPORT + bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *_q_value, +- void *expectedValue, +- void *newValue) ++ const void *expectedValue, ++ const void *newValue) + { + bool returnValue = false; + pthread_mutex_lock(&qAtomicMutex); + if (*_q_value == expectedValue) { +- *_q_value = newValue; ++ *_q_value = const_cast(newValue); + returnValue = true; + } + pthread_mutex_unlock(&qAtomicMutex); +diff --git a/src/corelib/arch/qatomic_generic.h b/src/corelib/arch/qatomic_generic.h +index 621a767..4c14679 100644 +--- a/src/corelib/arch/qatomic_generic.h ++++ b/src/corelib/arch/qatomic_generic.h +@@ -105,7 +105,7 @@ Q_CORE_EXPORT bool QBasicAtomicInt_testAndSetOrdered(volatile int *, int, int); + Q_CORE_EXPORT int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *, int); + Q_CORE_EXPORT int QBasicAtomicInt_fetchAndAddOrdered(volatile int *, int); + +-Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, void *, void *); ++Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, const void *, const void *); + Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *, void *); + Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *, qptrdiff); + +-- +1.7.0.4 + diff --git a/buildroot/package/qt/0005-pthread_getattr_np.patch b/buildroot/package/qt/0005-pthread_getattr_np.patch new file mode 100644 index 0000000..28f0c84 --- /dev/null +++ b/buildroot/package/qt/0005-pthread_getattr_np.patch @@ -0,0 +1,107 @@ +Add pthred_getattr_np / phread_attr_getstrack alternatives for uClibc + +Based on https://dev.openwrt.org/log/packages/Xorg/lib/qt4/patches/100-fix-webkit-for-uclibc.patch?rev=20371 + +Signed-off-by: Johan Sagaert +--- + src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp | 61 ++++++++++ + 1 file changed, 61 insertions(+) + +Index: qt-everywhere-opensource-src-4.8.1/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp +=================================================================== +--- qt-everywhere-opensource-src-4.8.1.orig/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp ++++ qt-everywhere-opensource-src-4.8.1/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp +@@ -70,6 +70,23 @@ + #endif + #include + ++#if defined(QT_LINUXBASE) ++#include ++#endif ++ ++#if defined(__UCLIBC__) ++// versions of uClibc 0.9.32 and below with linuxthreads.old do not have ++// pthread_getattr_np or pthread_attr_getstack. ++#if __UCLIBC_MAJOR__ == 0 && \ ++ (__UCLIBC_MINOR__ < 9 || \ ++ (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ <= 32)) && \ ++ defined(__LINUXTHREADS_OLD__) ++#define UCLIBC_USE_PROC_SELF_MAPS 1 ++#include ++extern int *__libc_stack_end; ++#endif ++#endif ++ + #if OS(SOLARIS) + #include + #else +@@ -648,6 +665,37 @@ + get_thread_info(find_thread(NULL), &threadInfo); + return threadInfo.stack_end; + #elif OS(UNIX) ++#ifdef UCLIBC_USE_PROC_SELF_MAPS ++ // Read /proc/self/maps and locate the line whose address ++ // range contains __libc_stack_end. ++ FILE *file = fopen("/proc/self/maps", "r"); ++ if (!file) ++ return 0; ++ __fsetlocking(file, FSETLOCKING_BYCALLER); ++ char *line = NULL; ++ size_t lineLen = 0; ++ while (!feof_unlocked(file)) { ++ if (getdelim(&line, &lineLen, '\n', file) <= 0) ++ break; ++ ++ long from; ++ long to; ++ if (sscanf (line, "%lx-%lx", &from, &to) != 2) ++ continue; ++ if (from <= (long)__libc_stack_end && (long)__libc_stack_end < to) { ++ fclose(file); ++ free(line); ++#ifdef _STACK_GROWS_UP ++ return (void *)from; ++#else ++ return (void *)to; ++#endif ++ } ++ } ++ fclose(file); ++ free(line); ++ return 0; ++#else + AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex); + MutexLocker locker(mutex); + static void* stackBase = 0; +@@ -655,11 +703,23 @@ + static pthread_t stackThread; + pthread_t thread = pthread_self(); + if (stackBase == 0 || thread != stackThread) { ++ ++#if defined(QT_LINUXBASE) ++ // LinuxBase is missing pthread_getattr_np - resolve it once at runtime instead ++ // see http://bugs.linuxbase.org/show_bug.cgi?id=2364 ++ typedef int (*GetAttrPtr)(pthread_t, pthread_attr_t *); ++ static int (*pthread_getattr_np_ptr)(pthread_t, pthread_attr_t *) = 0; ++ if (!pthread_getattr_np_ptr) ++ *(void **)&pthread_getattr_np_ptr = dlsym(RTLD_DEFAULT, "pthread_getattr_np"); ++#endif + pthread_attr_t sattr; + pthread_attr_init(&sattr); + #if HAVE(PTHREAD_NP_H) || OS(NETBSD) + // e.g. on FreeBSD 5.4, neundorf@kde.org + pthread_attr_get_np(thread, &sattr); ++#elif defined(QT_LINUXBASE) ++ if (pthread_getattr_np_ptr) ++ pthread_getattr_np_ptr(thread, &sattr); + #else + // FIXME: this function is non-portable; other POSIX systems may have different np alternatives + pthread_getattr_np(thread, &sattr); +@@ -671,6 +731,7 @@ + stackThread = thread; + } + return static_cast(stackBase) + stackSize; ++#endif + #else + #error Need a way to get the stack base on this platform + #endif diff --git a/buildroot/package/qt/0006-script-qtdbus-no-gui.patch b/buildroot/package/qt/0006-script-qtdbus-no-gui.patch new file mode 100644 index 0000000..e29e9e4 --- /dev/null +++ b/buildroot/package/qt/0006-script-qtdbus-no-gui.patch @@ -0,0 +1,22 @@ +[PATCH] fix build with script+dbus enabled, but no gui + +The script/qtdbus plugin doesn't need gui support, so don't try to +link it against libQtGui. + +Signed-off-by: Peter Korsgaard +--- + src/plugins/script/qtdbus/qtdbus.pro | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: qt-4.7.3/src/plugins/script/qtdbus/qtdbus.pro +=================================================================== +--- qt-4.7.3.orig/src/plugins/script/qtdbus/qtdbus.pro ++++ qt-4.7.3/src/plugins/script/qtdbus/qtdbus.pro +@@ -1,6 +1,6 @@ + TARGET = qtscriptdbus + include(../../qpluginbase.pri) +-QT = core gui script ++QT = core script + CONFIG += qdbus + + SOURCES += main.cpp diff --git a/buildroot/package/qt/0007-Add-initial-support-of-ARC-architecture.patch b/buildroot/package/qt/0007-Add-initial-support-of-ARC-architecture.patch new file mode 100644 index 0000000..4470d3b --- /dev/null +++ b/buildroot/package/qt/0007-Add-initial-support-of-ARC-architecture.patch @@ -0,0 +1,183 @@ +From a695eec2ef21240bbc6cd8cd1bdbab76f8da8dfd Mon Sep 17 00:00:00 2001 +From: Vineet Gupta +Date: Wed, 20 May 2015 10:37:25 +0300 +Subject: [PATCH 1/2] Add initial support of ARC architecture + +DesignWare ARC 700 and ARC HS38 are families of 32-bit CPUs +developed by Synopsys, Inc. + +This change implements following: + [1] Defines ARC as one embedded targets + [2] Defines default tools prefixed for ARC like + arc-linux-g++ etc + [3] Defines "inotify" syscall numbers for ARC + (note ARC fully compliant to Linux UAPI headers) + [4] Disables 16-bit aligned data access + +For now we're using generic atomic ops even though it may +introduce performance panalty. + +Change-Id: I91e879ac55c2f3643a544f97cd59671a81ccc3c2 + +This patch was submited in upstream Qt4 and if it ever gets accepted, +it should be removed from Buildroot. + +https://codereview.qt-project.org/#/c/112667 +--- + configure | 6 ++++ + mkspecs/qws/linux-arc-g++/qmake.conf | 21 ++++++++++++++ + mkspecs/qws/linux-arc-g++/qplatformdefs.h | 42 +++++++++++++++++++++++++++ + src/corelib/arch/qatomic_arch.h | 2 ++ + src/corelib/io/qfilesystemwatcher_inotify.cpp | 5 ++++ + src/gui/painting/qblendfunctions.cpp | 4 +-- + 6 files changed, 78 insertions(+), 2 deletions(-) + create mode 100644 mkspecs/qws/linux-arc-g++/qmake.conf + create mode 100644 mkspecs/qws/linux-arc-g++/qplatformdefs.h + +diff --git a/configure b/configure +index 10ad7ca..c7ef074 100755 +--- a/configure ++++ b/configure +@@ -2829,6 +2829,9 @@ if [ "$CFG_EMBEDDED" != "no" ]; then + *86_64) + CFG_EMBEDDED=x86_64 + ;; ++ *arc) ++ CFG_EMBEDDED=arc ++ ;; + *) + CFG_EMBEDDED=generic + ;; +@@ -3309,6 +3312,9 @@ if [ "$PLATFORM" != "$XPLATFORM" -a "$CFG_EMBEDDED" != "no" ]; then + arm*) + CFG_ARCH=arm + ;; ++ arc) ++ CFG_ARCH=arc ++ ;; + *) + CFG_ARCH="$CFG_EMBEDDED" + ;; +diff --git a/mkspecs/qws/linux-arc-g++/qmake.conf b/mkspecs/qws/linux-arc-g++/qmake.conf +new file mode 100644 +index 0000000..a14587b +--- /dev/null ++++ b/mkspecs/qws/linux-arc-g++/qmake.conf +@@ -0,0 +1,21 @@ ++# ++# qmake configuration for building with arc-linux-g++ ++# ++ ++include(../../common/linux.conf) ++include(../../common/gcc-base-unix.conf) ++include(../../common/g++-unix.conf) ++include(../../common/qws.conf) ++ ++# modifications to g++.conf ++QMAKE_CC = arc-linux-gcc ++QMAKE_CXX = arc-linux-g++ ++QMAKE_LINK = arc-linux-g++ ++QMAKE_LINK_SHLIB = arc-linux-g++ ++ ++# modifications to linux.conf ++QMAKE_AR = arc-linux-ar cqs ++QMAKE_OBJCOPY = arc-linux-objcopy ++QMAKE_STRIP = arc-linux-strip ++ ++load(qt_config) +diff --git a/mkspecs/qws/linux-arc-g++/qplatformdefs.h b/mkspecs/qws/linux-arc-g++/qplatformdefs.h +new file mode 100644 +index 0000000..a654aa7 +--- /dev/null ++++ b/mkspecs/qws/linux-arc-g++/qplatformdefs.h +@@ -0,0 +1,42 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2015 The Qt Company Ltd. ++** Contact: http://www.qt.io/licensing/ ++** ++** This file is part of the qmake spec of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see http://www.qt.io/terms-conditions. For further ++** information use the contact form at http://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 or version 3 as published by the Free ++** Software Foundation and appearing in the file LICENSE.LGPLv21 and ++** LICENSE.LGPLv3 included in the packaging of this file. Please review the ++** following information to ensure the GNU Lesser General Public License ++** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ++** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** As a special exception, The Qt Company gives you certain additional ++** rights. These rights are described in The Qt Company LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "../../linux-g++/qplatformdefs.h" +diff --git a/src/corelib/arch/qatomic_arch.h b/src/corelib/arch/qatomic_arch.h +index d154b7e..a48c42a 100644 +--- a/src/corelib/arch/qatomic_arch.h ++++ b/src/corelib/arch/qatomic_arch.h +@@ -94,6 +94,8 @@ QT_BEGIN_HEADER + # include "QtCore/qatomic_sh4a.h" + #elif defined(QT_ARCH_NACL) + # include "QtCore/qatomic_generic.h" ++#elif defined(QT_ARCH_ARC) ++# include "QtCore/qatomic_generic.h" + #else + # error "Qt has not been ported to this architecture" + #endif +diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp +index 8bca422..e3e2565 100644 +--- a/src/corelib/io/qfilesystemwatcher_inotify.cpp ++++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp +@@ -143,6 +143,11 @@ + # define __NR_inotify_add_watch 27 + # define __NR_inotify_rm_watch 28 + // no inotify_init for aarch64 ++#elif defined (__arc__) ++# define __NR_inotify_init 1043 ++# define __NR_inotify_add_watch 27 ++# define __NR_inotify_rm_watch 28 ++# define __NR_inotify_init1 26 + #else + # error "This architecture is not supported. Please talk to qt-bugs@trolltech.com" + #endif +diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp +index de8790a..cc2f5b6 100644 +--- a/src/gui/painting/qblendfunctions.cpp ++++ b/src/gui/painting/qblendfunctions.cpp +@@ -309,9 +309,9 @@ template void qt_blend_argb24_on_rgb16(uchar *destPixels, int dbpl, + const uchar *src = srcPixels + y * sbpl; + const uchar *srcEnd = src + srcOffset; + while (src < srcEnd) { +-#if defined(QT_ARCH_ARMV5) || defined(QT_ARCH_POWERPC) || defined(QT_ARCH_SH) || defined(QT_ARCH_AVR32) || (defined(QT_ARCH_WINDOWSCE) && !defined(_X86_)) || (defined(QT_ARCH_SPARC) && defined(Q_CC_GNU)) || (defined(QT_ARCH_INTEGRITY) && !defined(_X86_)) ++#if defined(QT_ARCH_ARMV5) || defined(QT_ARCH_POWERPC) || defined(QT_ARCH_SH) || defined(QT_ARCH_AVR32) || (defined(QT_ARCH_WINDOWSCE) && !defined(_X86_)) || (defined(QT_ARCH_SPARC) && defined(Q_CC_GNU)) || (defined(QT_ARCH_INTEGRITY) && !defined(_X86_)) || defined(QT_ARCH_ARC) + // non-16-bit aligned memory access is not possible on PowerPC, +- // ARM +Date: Wed, 20 May 2015 10:53:59 +0300 +Subject: [PATCH 2/2] Prevent unaligned access on ARC + +As many other architectures ARC cores by default don't support +unaligned word access to data. + +Even though it's possible to enable unaligned access to data in +ARC HS38 core (we're talking about configuration of core design) +to make sure Qt could be executed on any flavour of ARC fall-back +to byte-accesses is used. + +Change-Id: I96068d40b449f11ba987ed1e5d5e44f493d1eb5f + +This patch was submited in upstream Qt4 and if it ever gets accepted, +it should be removed from Buildroot. + +https://codereview.qt-project.org/#/c/112668 +--- + src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h | 2 +- + src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h | 13 ++++++++++++- + .../webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp | 2 +- + .../webkit/Source/JavaScriptCore/wtf/text/StringHash.h | 2 +- + 4 files changed, 15 insertions(+), 4 deletions(-) + +diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h +index 2d76809..ee9b7f0 100644 +--- a/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h ++++ b/src/3rdparty/webkit/Source/JavaScriptCore/runtime/UString.h +@@ -202,7 +202,7 @@ struct UStringHash { + + // FIXME: perhaps we should have a more abstract macro that indicates when + // going 4 bytes at a time is unsafe +-#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) ++#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) || CPU(ARC) + const UChar* aChars = a->characters(); + const UChar* bChars = b->characters(); + for (unsigned i = 0; i != aLength; ++i) { +diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h +index e8b03be..cd17e9c 100644 +--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h ++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h +@@ -369,7 +369,18 @@ + + #endif /* ARM */ + +-#if CPU(ARM) || CPU(MIPS) || CPU(SH4) ++/* CPU(ARC) - ARC, any version*/ ++#if defined(arc) \ ++ || defined(__arc__) \ ++ || defined(ARC) \ ++ || defined(_ARC_) ++#define WTF_CPU_ARC 1 ++#if defined(__BIG_ENDIAN__) ++#define WTF_CPU_BIG_ENDIAN 1 ++#endif ++#endif ++ ++#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(ARC) + #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1 + #endif + +diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp +index 9dd655e..bd3ab95 100644 +--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp ++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/AtomicString.cpp +@@ -142,7 +142,7 @@ static inline bool equal(StringImpl* string, const UChar* characters, unsigned l + + // FIXME: perhaps we should have a more abstract macro that indicates when + // going 4 bytes at a time is unsafe +-#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) ++#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) || CPU(ARC) + const UChar* stringCharacters = string->characters(); + for (unsigned i = 0; i != length; ++i) { + if (*stringCharacters++ != *characters++) +diff --git a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h +index 4637c3d..91cef81 100644 +--- a/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h ++++ b/src/3rdparty/webkit/Source/JavaScriptCore/wtf/text/StringHash.h +@@ -55,7 +55,7 @@ namespace WTF { + + // FIXME: perhaps we should have a more abstract macro that indicates when + // going 4 bytes at a time is unsafe +-#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) ++#if CPU(ARM) || CPU(SH4) || CPU(MIPS) || CPU(SPARC) || CPU(ARC) + const UChar* aChars = a->characters(); + const UChar* bChars = b->characters(); + for (unsigned i = 0; i != aLength; ++i) { +-- +2.1.0 + diff --git a/buildroot/package/qt/0009-Fix-conversion-constructor-error-for-legacy-c-compil.patch b/buildroot/package/qt/0009-Fix-conversion-constructor-error-for-legacy-c-compil.patch new file mode 100644 index 0000000..d7d387a --- /dev/null +++ b/buildroot/package/qt/0009-Fix-conversion-constructor-error-for-legacy-c-compil.patch @@ -0,0 +1,163 @@ +From ea46f47fb3c475ba2d7581c15185b8d43e63b8c2 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Fri, 27 Feb 2015 21:30:52 +0100 +Subject: [PATCH] Fix conversion/constructor error for legacy c++ compiler. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes the following compile error with legacy c++ compiler: + +error: in C++98 ‘blitRect’ must be initialized by constructor, not by ‘{...}’ + +Signed-off-by: Peter Seiderer +--- + src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp | 14 +++++++------- + src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp | 6 +++--- + src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp | 6 +++--- + src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp | 2 +- + 4 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +index 876d0c2..ed69386 100644 +--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp ++++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp +@@ -942,7 +942,7 @@ void QDirectFBPaintEngine::drawBufferSpan(const uint *buffer, int bufsize, + IDirectFBSurface *src = d->surfaceCache->getSurface(buffer, bufsize); + // ### how does this play with setDFBColor + src->SetColor(src, 0, 0, 0, const_alpha); +- const DFBRectangle rect = { 0, 0, length, 1 }; ++ const DFBRectangle rect = (DFBRectangle_C){ 0, 0, length, 1 }; + d->surface->Blit(d->surface, src, &rect, x, y); + } + +@@ -1223,14 +1223,14 @@ void QDirectFBPaintEnginePrivate::blit(const QRectF &dest, IDirectFBSurface *s, + const QRect dr = engine->state()->matrix.mapRect(dest).toRect(); + if (dr.isEmpty()) + return; +- const DFBRectangle sRect = { sr.x(), sr.y(), sr.width(), sr.height() }; ++ const DFBRectangle sRect = (DFBRectangle_C){ sr.x(), sr.y(), sr.width(), sr.height() }; + DFBResult result; + + if (dr.size() == sr.size()) { + result = surface->Blit(surface, s, &sRect, dr.x(), dr.y()); + } else { + Q_ASSERT(supportsStretchBlit()); +- const DFBRectangle dRect = { dr.x(), dr.y(), dr.width(), dr.height() }; ++ const DFBRectangle dRect = (DFBRectangle_C){ dr.x(), dr.y(), dr.width(), dr.height() }; + result = surface->StretchBlit(surface, s, &sRect, &dRect); + } + if (result != DFB_OK) +@@ -1261,7 +1261,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix + if (newClip.isNull()) + return; + +- const DFBRegion clip = { ++ const DFBRegion clip = (DFBRegion_C){ + newClip.x(), + newClip.y(), + newClip.right(), +@@ -1295,7 +1295,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix + while (y <= destinationRect.bottom()) { + qreal x = startX; + while (x <= destinationRect.right()) { +- const DFBRectangle destination = { qRound(x), qRound(y), mappedSize.width(), mappedSize.height() }; ++ const DFBRectangle destination = (DFBRectangle_C){ qRound(x), qRound(y), (int)mappedSize.width(), (int)mappedSize.height() }; + surface->StretchBlit(surface, sourceSurface, 0, &destination); + x += mappedSize.width(); + } +@@ -1337,7 +1337,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix + if (currentClip.isEmpty()) { + surface->SetClip(surface, 0); + } else { +- const DFBRegion clip = { ++ const DFBRegion clip = (DFBRegion_C){ + currentClip.x(), + currentClip.y(), + currentClip.right(), +@@ -1356,7 +1356,7 @@ void QDirectFBPaintEnginePrivate::updateClip() + surface->SetClip(surface, NULL); + clipType = NoClip; + } else if (clipData->hasRectClip) { +- const DFBRegion r = { ++ const DFBRegion r = (DFBRegion_C){ + clipData->clipRect.x(), + clipData->clipRect.y(), + clipData->clipRect.right(), +diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp +index 412e684..c59c47d 100644 +--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp ++++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp +@@ -363,7 +363,7 @@ void QDirectFBPixmapData::copy(const QPixmapData *data, const QRect &rect) + } else { + dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX); + } +- const DFBRectangle blitRect = { rect.x(), rect.y(), ++ const DFBRectangle blitRect = (DFBRectangle_C){ rect.x(), rect.y(), + rect.width(), rect.height() }; + w = rect.width(); + h = rect.height(); +@@ -465,7 +465,7 @@ QPixmap QDirectFBPixmapData::transformed(const QTransform &transform, + } + data->dfbSurface->SetBlittingFlags(data->dfbSurface, flags); + +- const DFBRectangle destRect = { 0, 0, size.width(), size.height() }; ++ const DFBRectangle destRect = (DFBRectangle_C){ 0, 0, size.width(), size.height() }; + data->dfbSurface->StretchBlit(data->dfbSurface, dfbSurface, 0, &destRect); + data->w = size.width(); + data->h = size.height(); +@@ -551,7 +551,7 @@ bool QDirectFBPixmapData::scroll(int dx, int dy, const QRect &rect) + return false; + } + +- const DFBRectangle source = { rect.x(), rect.y(), rect.width(), rect.height() }; ++ const DFBRectangle source = (DFBRectangle_C){ rect.x(), rect.y(), rect.width(), rect.height() }; + result = dfbSurface->Blit(dfbSurface, dfbSurface, &source, source.x + dx, source.y + dy); + if (result != DFB_OK) { + DirectFBError("QDirectFBPixmapData::scroll", result); +diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp +index eab9580..d26e5bf 100644 +--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp ++++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp +@@ -1635,7 +1635,7 @@ void QDirectFBScreen::solidFill(const QColor &color, const QRegion ®ion) + static inline void clearRect(IDirectFBSurface *surface, const QColor &color, const QRect &rect) + { + Q_ASSERT(surface); +- const DFBRegion region = { rect.left(), rect.top(), rect.right(), rect.bottom() }; ++ const DFBRegion region = (DFBRegion_C){ rect.left(), rect.top(), rect.right(), rect.bottom() }; + // could just reinterpret_cast this to a DFBRegion + surface->SetClip(surface, ®ion); + surface->Clear(surface, color.red(), color.green(), color.blue(), color.alpha()); +@@ -1716,14 +1716,14 @@ void QDirectFBScreen::flipSurface(IDirectFBSurface *surface, DFBSurfaceFlipFlags + const DFBSurfaceFlipFlags nonWaitFlags = flipFlags & ~DSFLIP_WAIT; + for (int i=0; iFlip(surface, &dfbReg, i + 1 < rects.size() ? nonWaitFlags : flipFlags); + } + } else { + const QRect r = region.boundingRect(); +- const DFBRegion dfbReg = { r.x() + offset.x(), r.y() + offset.y(), ++ const DFBRegion dfbReg = (DFBRegion_C){ r.x() + offset.x(), r.y() + offset.y(), + r.right() + offset.x(), + r.bottom() + offset.y() }; + surface->Flip(surface, &dfbReg, flipFlags); +diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp +index 4dff907..25ad06b 100644 +--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp ++++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp +@@ -333,7 +333,7 @@ bool QDirectFBWindowSurface::scroll(const QRegion ®ion, int dx, int dy) + } + dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX); + const QRect r = region.boundingRect(); +- const DFBRectangle rect = { r.x(), r.y(), r.width(), r.height() }; ++ const DFBRectangle rect = (DFBRectangle_C){ r.x(), r.y(), r.width(), r.height() }; + dfbSurface->Blit(dfbSurface, dfbSurface, &rect, r.x() + dx, r.y() + dy); + return true; + } +-- +2.1.4 + diff --git a/buildroot/package/qt/0010-Fix-for-platform-socklen_t-on-other-C-libraries-than.patch b/buildroot/package/qt/0010-Fix-for-platform-socklen_t-on-other-C-libraries-than.patch new file mode 100644 index 0000000..9b16553 --- /dev/null +++ b/buildroot/package/qt/0010-Fix-for-platform-socklen_t-on-other-C-libraries-than.patch @@ -0,0 +1,43 @@ +From 0bf90de93b9fe21df32319e27b2507154fa8a21d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Fri, 15 Apr 2016 00:37:26 +0200 +Subject: [PATCH] Fix for platform socklen_t on other C libraries than glibc +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This helps to make sure that QT_SOCKLEN_T is defined to be 'int' +only when its glibc < 2 and not also for the libraries which may define +it as per standards but are not glibc, e.g. musl. + +This patch is adapted from Qt5 [1]. + +[1] +https://github.com/qtproject/qtbase/commit/813f468a14fb84af43c1f8fc0a1430277358eba2 + +Signed-off-by: Jörg Krause +--- + mkspecs/linux-g++/qplatformdefs.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/mkspecs/linux-g++/qplatformdefs.h b/mkspecs/linux-g++/qplatformdefs.h +index de751dd..d4146ed 100644 +--- a/mkspecs/linux-g++/qplatformdefs.h ++++ b/mkspecs/linux-g++/qplatformdefs.h +@@ -86,10 +86,10 @@ + + #undef QT_SOCKLEN_T + +-#if defined(__GLIBC__) && (__GLIBC__ >= 2) +-#define QT_SOCKLEN_T socklen_t +-#else ++#if defined(__GLIBC__) && (__GLIBC__ < 2) + #define QT_SOCKLEN_T int ++#else ++#define QT_SOCKLEN_T socklen_t + #endif + + #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) +-- +2.8.0 + diff --git a/buildroot/package/qt/0011-Link-with-ldl-option-only-when-it-is-supported.patch b/buildroot/package/qt/0011-Link-with-ldl-option-only-when-it-is-supported.patch new file mode 100644 index 0000000..f3d47f7 --- /dev/null +++ b/buildroot/package/qt/0011-Link-with-ldl-option-only-when-it-is-supported.patch @@ -0,0 +1,116 @@ +From 438f088ad520ac91ae47dba9a515ab0d1088c89c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Fri, 15 Apr 2016 03:32:02 +0200 +Subject: [PATCH] Link with -ldl option only when it is supported +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +`-ldl` option is used unconditionally in `QMAKE_LIBS_DYNLOAD` while libdl is +not supported when libc is static. As the value of `QMAKE_LIBS_DYNLOAD` goes +into 'Libs.private' field of the pkgconfig files created by qmake, static +linking with qt will fail with: + /usr/bin/ld: cannot find -ldl + +Fix this issue by adding a build test to configure to check if libdl is +supported. `QMAKE_LIBS_DYNLOAD` in "src/corelib/plugin/plugin.pri" is now used +only if libdl is available. + +Backported from Qt5: +https://github.com/qtproject/qtbase/commit/f669ea0d54302de31456d57286aa0e4ca1443e98 + +Signed-off-by: Jörg Krause +--- + config.tests/unix/libdl/libdl.cpp | 39 +++++++++++++++++++++++++++++++++++++++ + config.tests/unix/libdl/libdl.pro | 3 +++ + configure | 6 ++++++ + src/corelib/plugin/plugin.pri | 2 +- + 4 files changed, 49 insertions(+), 1 deletion(-) + create mode 100644 config.tests/unix/libdl/libdl.cpp + create mode 100644 config.tests/unix/libdl/libdl.pro + +diff --git a/config.tests/unix/libdl/libdl.cpp b/config.tests/unix/libdl/libdl.cpp +new file mode 100644 +index 0000000..28a8233 +--- /dev/null ++++ b/config.tests/unix/libdl/libdl.cpp +@@ -0,0 +1,39 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2015 The Qt Company Ltd. ++** Contact: http://www.qt.io/licensing/ ++** ++** This file is part of the config.tests of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL21$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see http://www.qt.io/terms-conditions. For further ++** information use the contact form at http://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 or version 3 as published by the Free ++** Software Foundation and appearing in the file LICENSE.LGPLv21 and ++** LICENSE.LGPLv3 included in the packaging of this file. Please review the ++** following information to ensure the GNU Lesser General Public License ++** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ++** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** As a special exception, The Qt Company gives you certain additional ++** rights. These rights are described in The Qt Company LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include ++ ++int main(int, char **) ++{ ++ dlopen(0, 0); ++} +diff --git a/config.tests/unix/libdl/libdl.pro b/config.tests/unix/libdl/libdl.pro +new file mode 100644 +index 0000000..a643934 +--- /dev/null ++++ b/config.tests/unix/libdl/libdl.pro +@@ -0,0 +1,3 @@ ++SOURCES = libdl.cpp ++CONFIG -= qt dylib ++LIBS += -ldl +\ No newline at end of file +diff --git a/configure b/configure +index 10ad7ca..1c70691 100755 +--- a/configure ++++ b/configure +@@ -5506,6 +5506,12 @@ if [ "$CFG_LIBPNG" = "auto" ]; then + fi + fi + ++# detect dl ++if ! compileTest unix/libdl "libdl"; then ++ QMakeVar add DEFINES QT_NO_DYNAMIC_LIBRARY ++ QMAKE_CONFIG="$QMAKE_CONFIG no-libdl" ++fi ++ + # detect accessibility + if [ "$CFG_ACCESSIBILITY" = "auto" ]; then + if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then +diff --git a/src/corelib/plugin/plugin.pri b/src/corelib/plugin/plugin.pri +index eb7a7f7..c342f2e 100644 +--- a/src/corelib/plugin/plugin.pri ++++ b/src/corelib/plugin/plugin.pri +@@ -32,4 +32,4 @@ integrity { + SOURCES += plugin/qlibrary_unix.cpp + } + +-LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD ++!no-libdl: LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD +-- +2.8.0 + diff --git a/buildroot/package/qt/0012-OpenGL-EGL-Avoid-X11-header-collision.patch b/buildroot/package/qt/0012-OpenGL-EGL-Avoid-X11-header-collision.patch new file mode 100644 index 0000000..8c65d1d --- /dev/null +++ b/buildroot/package/qt/0012-OpenGL-EGL-Avoid-X11-header-collision.patch @@ -0,0 +1,60 @@ +From 87c9c18fad02744238336a6cf1ce70d3ec2c89c2 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 11 Jun 2016 17:03:07 +0200 +Subject: [PATCH 1/1] OpenGL/EGL: Avoid X11 header collision + +Including X11 headers via EGL/egl.h leads to a collision of defines +between Qt and X11. To fix this qt5 added + DEFINES += MESA_EGL_NO_X11_HEADERS +in various files: + +https://github.com/qtproject/qtbase/blob/dev/src/platformsupport/eglconvenience/eglconvenience.pri#L19 +https://github.com/qtproject/qtbase/blob/dev/src/plugins/platforms/minimalegl/minimalegl.pro#L10 +https://github.com/qtproject/qtbase/blob/dev/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/eglfs_x11.pro#L6 +[...] + +This patch fixes a similar compile error in qt4: +http://autobuild.buildroot.net/results/9b0/9b0ed92984eead89d148eaa71aff6e2f1e117837/ +http://autobuild.buildroot.org/results/4fd/4fd57553336d36439fab32a7221fc8639758e887/ +http://autobuild.buildroot.org/results/5cb/5cb8072f8220f7203fa79936eedcc43eab53ec66/ + +Signed-off-by: Bernd Kuhls +(patch not sent upstream because qt4 branch is closed: + http://blog.qt.io/blog/2015/05/26/qt-4-8-7-released/) +--- + + src/gui/egl/egl.pri | 3 +++ + src/opengl/opengl.pro | 3 +++ + 2 files changed, 6 insertions(+) + +diff --git a/src/gui/egl/egl.pri b/src/gui/egl/egl.pri +index 8e8664c..715ffd7 100644 +--- a/src/gui/egl/egl.pri ++++ b/src/gui/egl/egl.pri +@@ -22,6 +22,9 @@ contains(QT_CONFIG, egl): { + !isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL + } + ++ # Avoid X11 header collision ++ DEFINES += MESA_EGL_NO_X11_HEADERS ++ + wince*: SOURCES += egl/qegl_wince.cpp + + unix { +diff --git a/src/opengl/opengl.pro b/src/opengl/opengl.pro +index ce1a5d2..65b1031 100644 +--- a/src/opengl/opengl.pro ++++ b/src/opengl/opengl.pro +@@ -149,6 +149,9 @@ embedded { + qglwindowsurface_qws_p.h \ + qgl_egl_p.h + ++ # Avoid X11 header collision ++ DEFINES += MESA_EGL_NO_X11_HEADERS ++ + contains(QT_CONFIG, fontconfig) { + include($$QT_SOURCE_TREE/config.tests/unix/freetype/freetype.pri) + } else { +-- +2.8.1 + diff --git a/buildroot/package/qt/0013-src-corelib-arch-qatomic_arm.h-fix-build-on-ARMv8-32.patch b/buildroot/package/qt/0013-src-corelib-arch-qatomic_arm.h-fix-build-on-ARMv8-32.patch new file mode 100644 index 0000000..645041a --- /dev/null +++ b/buildroot/package/qt/0013-src-corelib-arch-qatomic_arm.h-fix-build-on-ARMv8-32.patch @@ -0,0 +1,37 @@ +From 2281fa50f6e13278d3fd4f028377b8249b7b3cdb Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 8 Sep 2017 09:06:54 +0200 +Subject: [PATCH] src/corelib/arch/qatomic_arm.h: fix build on ARMv8 32-bit + +The Qt build fails on ARMv8 32-bit because it falls back to using the +ARMv5 code that uses the swp instruction, which no longer exists: + +/tmp/ccSxVIzw.s: Assembler messages: +/tmp/ccSxVIzw.s:127: Error: swp{b} use is obsoleted for ARMv8 and later +/tmp/ccSxVIzw.s:190: Error: swp{b} use is obsoleted for ARMv8 and later + +So, this commit adjusts the ARM atomic code to assume ARMv8 is similar +to ARMv7. + +Signed-off-by: Thomas Petazzoni +--- + src/corelib/arch/qatomic_arm.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/corelib/arch/qatomic_arm.h b/src/corelib/arch/qatomic_arm.h +index 77cd66f272..e011929d3e 100644 +--- a/src/corelib/arch/qatomic_arm.h ++++ b/src/corelib/arch/qatomic_arm.h +@@ -47,7 +47,8 @@ QT_BEGIN_HEADER + #if defined(__ARM_ARCH_7__) \ + || defined(__ARM_ARCH_7A__) \ + || defined(__ARM_ARCH_7R__) \ +- || defined(__ARM_ARCH_7M__) ++ || defined(__ARM_ARCH_7M__) \ ++ || defined(__ARM_ARCH_8A__) + # define QT_ARCH_ARMV7 + QT_BEGIN_INCLUDE_HEADER + # include "QtCore/qatomic_armv7.h" +-- +2.13.5 + diff --git a/buildroot/package/qt/0014-Enable-QtWebKit-with-newer-GCC.patch b/buildroot/package/qt/0014-Enable-QtWebKit-with-newer-GCC.patch new file mode 100644 index 0000000..1e555e7 --- /dev/null +++ b/buildroot/package/qt/0014-Enable-QtWebKit-with-newer-GCC.patch @@ -0,0 +1,50 @@ +From f566411fb314b7e4ab01f28e25e942cfaf8c59b7 Mon Sep 17 00:00:00 2001 +From: Evgeniy Didin +Date: Fri, 15 Sep 2017 19:43:48 +0300 +Subject: [PATCH] qt: Allow enabling of QtWebKit with GCC 6+ + +Building Qt with QtWebKit on configuration step there is +a check which disables QtWebKit build with GCC 6+. +Back in the day nobody thought about building Qt with GCC +version greater than 5.x. And now with modern GCCs like +6.x and 7.x this assumption gets in the way. + +Given in Buildroot today we don't have GCC older than 4.9 +it should be safe to remove now meaningless check completely. + +Signed-off-by: Evgeniy Didin +Cc: Alexey Brodkin +Cc: Thomas Petazzoni + +--- + configure | 14 -------------- + 1 file changed, 14 deletions(-) + +diff --git a/configure b/configure +index 10ad7ca0b0..8771144a65 100755 +--- a/configure ++++ b/configure +@@ -7731,20 +7731,6 @@ case "$XPLATFORM" in + canBuildWebKit="no" + canBuildQtXmlPatterns="no" + ;; +- *-g++*) +- # Check gcc's version +- case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in +- 5*|4*|3.4*) +- ;; +- 3.3*) +- canBuildWebKit="no" +- ;; +- *) +- canBuildWebKit="no" +- canBuildQtXmlPatterns="no" +- ;; +- esac +- ;; + solaris-cc*) + # Check the compiler version + case `${QMAKE_CONF_COMPILER} -V 2>&1 | awk '{print $4}'` in +-- +2.11.0 + diff --git a/buildroot/package/qt/0015-configure-fix-build-on-non-x86-platforms.patch b/buildroot/package/qt/0015-configure-fix-build-on-non-x86-platforms.patch new file mode 100644 index 0000000..a599548 --- /dev/null +++ b/buildroot/package/qt/0015-configure-fix-build-on-non-x86-platforms.patch @@ -0,0 +1,146 @@ +From 02e9698c96ca78342b82fa7239e93bab4aa45db2 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 17 Nov 2017 22:20:06 +0100 +Subject: [PATCH] configure: fix build on non-x86 platforms + +When building for an uncommon platform on a ppc64le machine, Qt build +fails because it builds qmake with the target compiler instead of +using the host compiler. This is due to the fact that Qt configure +script believes that both the host and target platforms are "powerpc", +even though the target really is Xtensa or ARC for example. + +Qt's configure script defines a variable called PLATFORM that points to +the mkspecs describing the host machine. For x86, its value is +qws/linux-x86-g++ and for x86-64, its value is +qws/linux-x86_64-g++. For any other host architecture, its value is +qws/linux-generic-g++. + +In parallel to this, Qt's configure script defines a variable called +XPLATFORM that points to the mkspecs describing the target machine. It +points to qws/linux-${CFG_EMBEDDED}-g++, where CFG_EMBEDDED is +simply "generic" for most uncommon architectures. + +Therefore, when we're building for an uncommon architecture, on a +ppc64le machine, we have: + + PLATFORM = qws/linux-generic-g++ + XPLATFORM = qws/linux-generic-g++ + +i.e, both values are equal. Due to this, the following condition is +false: + +if [ "$PLATFORM" != "$XPLATFORM" -a "$CFG_EMBEDDED" != "no" ]; then + +which causes Qt's configure script to fallback to: + +elif [ "$PLATFORM_MAC" = "yes" ] || [ -z "$CFG_ARCH" ]; then + CFG_ARCH=$CFG_HOST_ARCH +fi + +because CFG_ARCH is not defined, and therefore gets defined to +CFG_HOST_ARCH. So we have CFG_ARCH == CFG_HOST_ARCH, and Qt believes +we're doing a native build. + +Therefore, we need to ensure that PLATFORM and XPLATFORM always have a +different value. To achieve this, we create a +qws/linux-host-generic-g++ mkspecs, which is always used as +PLATFORM. It is identical to qws/linux-x86-g++. Compared to +qws/linux-x86_64-g++, the only difference is that we're not passing +the -m64 flag, but that isn't needed when building host tools. + +Signed-off-by: Thomas Petazzoni +--- + configure | 8 +---- + mkspecs/qws/linux-host-generic-g++/qmake.conf | 10 ++++++ + mkspecs/qws/linux-host-generic-g++/qplatformdefs.h | 42 ++++++++++++++++++++++ + 3 files changed, 53 insertions(+), 7 deletions(-) + create mode 100644 mkspecs/qws/linux-host-generic-g++/qmake.conf + create mode 100644 mkspecs/qws/linux-host-generic-g++/qplatformdefs.h + +diff --git a/configure b/configure +index 10ad7ca0b0..d25f90be1e 100755 +--- a/configure ++++ b/configure +@@ -2806,14 +2806,8 @@ if [ "$CFG_EMBEDDED" != "no" ]; then + Linux:*) + if [ -z "$PLATFORM" ]; then + case "$UNAME_MACHINE" in +- *86) +- PLATFORM=qws/linux-x86-g++ +- ;; +- *86_64) +- PLATFORM=qws/linux-x86_64-g++ +- ;; + *) +- PLATFORM=qws/linux-generic-g++ ++ PLATFORM=qws/linux-host-generic-g++ + ;; + esac + fi +diff --git a/mkspecs/qws/linux-host-generic-g++/qmake.conf b/mkspecs/qws/linux-host-generic-g++/qmake.conf +new file mode 100644 +index 0000000000..55011ec52b +--- /dev/null ++++ b/mkspecs/qws/linux-host-generic-g++/qmake.conf +@@ -0,0 +1,10 @@ ++# ++# qmake configuration for building with linux-g++ ++# ++ ++include(../../common/linux.conf) ++include(../../common/gcc-base-unix.conf) ++include(../../common/g++-unix.conf) ++include(../../common/qws.conf) ++ ++load(qt_config) +diff --git a/mkspecs/qws/linux-host-generic-g++/qplatformdefs.h b/mkspecs/qws/linux-host-generic-g++/qplatformdefs.h +new file mode 100644 +index 0000000000..a654aa78a2 +--- /dev/null ++++ b/mkspecs/qws/linux-host-generic-g++/qplatformdefs.h +@@ -0,0 +1,42 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2015 The Qt Company Ltd. ++** Contact: http://www.qt.io/licensing/ ++** ++** This file is part of the qmake spec of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see http://www.qt.io/terms-conditions. For further ++** information use the contact form at http://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 or version 3 as published by the Free ++** Software Foundation and appearing in the file LICENSE.LGPLv21 and ++** LICENSE.LGPLv3 included in the packaging of this file. Please review the ++** following information to ensure the GNU Lesser General Public License ++** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ++** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** As a special exception, The Qt Company gives you certain additional ++** rights. These rights are described in The Qt Company LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "../../linux-g++/qplatformdefs.h" +-- +2.13.6 + diff --git a/buildroot/package/qt/Config.gfx.in b/buildroot/package/qt/Config.gfx.in new file mode 100644 index 0000000..5e6619c --- /dev/null +++ b/buildroot/package/qt/Config.gfx.in @@ -0,0 +1,31 @@ +menu "Graphics drivers" + +config BR2_PACKAGE_QT_GFX_LINUXFB + bool "Linux Framebuffer" + default y + +config BR2_PACKAGE_QT_GFX_TRANSFORMED + bool "Transformed" + +config BR2_PACKAGE_QT_GFX_QVFB + bool "Qt Virtual Framebuffer" + +config BR2_PACKAGE_QT_GFX_VNC + bool "VNC" + +config BR2_PACKAGE_QT_GFX_MULTISCREEN + bool "multiscreen" + +comment "directfb Qt driver not available (need directfb)" + depends on !BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_QT_GFX_DIRECTFB + bool "directFB" + depends on BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_QT_GFX_POWERVR + bool "powervr" + depends on BR2_PACKAGE_QT_OPENGL_ES + depends on BR2_PACKAGE_HAS_POWERVR + +endmenu diff --git a/buildroot/package/qt/Config.in b/buildroot/package/qt/Config.in new file mode 100644 index 0000000..0ecfafa --- /dev/null +++ b/buildroot/package/qt/Config.in @@ -0,0 +1,539 @@ +comment "qt needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +menuconfig BR2_PACKAGE_QT + bool "Qt (obsolete)" + depends on BR2_USE_MMU # fork + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Qt is a cross-platform application and UI framework for + developers using C++. + + http://qt-project.org + +if BR2_PACKAGE_QT + +choice + prompt "Qt installation" + help + Selects the type of installation: standard or embedded + +config BR2_PACKAGE_QT_EMBEDDED + bool "Qt embedded" + help + The embedded Qt installation targets embedded systems + without X.org. Provides backends for framebuffer. + If unsure, say Y. + +comment "Qt standard (X11) not available (need X.org)" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_QT_X11 + bool "Qt standard (X11)" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXV + select BR2_PACKAGE_QT_SYSTEMFREETYPE + select BR2_PACKAGE_QT_GUI_MODULE + help + The standard Qt installation provides X.org backend. If you + don't want to use X.org, say N. + +endchoice + +config BR2_PACKAGE_QT_DEBUG + bool "Compile with debug support" + help + If unsure, say N. + +config BR2_PACKAGE_QT_DEMOS + bool "Compile and install Qt demos (with code)" + select BR2_PACKAGE_QT_GUI_MODULE + help + If unsure, say N. + +config BR2_PACKAGE_QT_TRANSLATION_FILES + bool "Install translation files" + help + Install binary .qm translation files. + Say y if you need these files. They will take about 8 MB + on the target root filesystem. + +config BR2_PACKAGE_QT_EXAMPLES + bool "Compile and install Qt examples (with code)" + select BR2_PACKAGE_QT_GUI_MODULE + help + If unsure, say N. + +choice + prompt "Library type" + help + Selects the library type: Shared or Static + +config BR2_PACKAGE_QT_SHARED + bool "Shared library" + depends on !BR2_STATIC_LIBS + help + Create and use shared Qt libraries. + If you have multiple programs that depend on Qt or intend to + use plugins, say Y. + +config BR2_PACKAGE_QT_STATIC + bool "Static Library" + help + Create and use static Qt libraries. + If you don't have multiple programs on the target that + depends on Qt, then this will save you quite some of storage + space. + If unsure, say Y. + +endchoice + +config BR2_PACKAGE_QT_CONFIG_FILE + string "Config file" + help + Configure options allow to set which modules are being + compiled or not in Qt, but Qt also provide a more + fine-grained mechanism to configure which features should be + enabled or disabled, through a header file. Examples of such + header files can be found in src/corelib/global/qconfig-*.h + in the Qt sources. + + This option allows to set the path of such a configuration + file, which Buildroot will give to Qt at compile time. + +config BR2_PACKAGE_QT_QT3SUPPORT + bool "Compatibility with Qt3" + depends on BR2_PACKAGE_QT_GUI_MODULE + select BR2_PACKAGE_QT_SQL_MODULE + help + Turns on support for older Qt3. This will create an + additional library with proxy code and increase the space + required on target. If unsure say n. + +config BR2_PACKAGE_QT_GUI_MODULE + bool "Gui Module" + default y + select BR2_PACKAGE_QT_NETWORK + help + Turns on support for Gui applications. If your board doesn't + have video output, or you don't require Qt GUI, say n. + +if BR2_PACKAGE_QT_GUI_MODULE + +if BR2_PACKAGE_QT_EMBEDDED + +menu "Pixel depths" +comment "Deselecting each option leads to Qt's default (8,16,32)" + +config BR2_PACKAGE_QT_PIXEL_DEPTH_1 + bool "1 bpp, black/white" + +config BR2_PACKAGE_QT_PIXEL_DEPTH_4 + bool "4 bpp, grayscale" + +config BR2_PACKAGE_QT_PIXEL_DEPTH_8 + bool "8 bpp, paletted" + default y + +config BR2_PACKAGE_QT_PIXEL_DEPTH_12 + bool "12 bpp, rgb 4-4-4" + +config BR2_PACKAGE_QT_PIXEL_DEPTH_15 + bool "15 bpp, rgb 5-5-5" + +config BR2_PACKAGE_QT_PIXEL_DEPTH_16 + bool "16 bpp, rgb 5-6-5" + default y + +config BR2_PACKAGE_QT_PIXEL_DEPTH_18 + bool "18 bpp, rgb 6-6-6" + +config BR2_PACKAGE_QT_PIXEL_DEPTH_24 + bool "24 bpp, rgb 8-8-8" + +config BR2_PACKAGE_QT_PIXEL_DEPTH_32 + bool "32 bpp, argb 8-8-8-8 and rgb 8-8-8" + default y + +endmenu + +menu "Fonts" + +config BR2_PACKAGE_QT_FONT_TRUETYPE + bool "dejavu/vera" + default y + depends on BR2_PACKAGE_QT_QTFREETYPE || BR2_PACKAGE_QT_SYSTEMFREETYPE + +comment "dejavu/vera fonts need freetype support" + depends on !BR2_PACKAGE_QT_QTFREETYPE && !BR2_PACKAGE_QT_SYSTEMFREETYPE + +config BR2_PACKAGE_QT_FONT_MICRO + bool "micro" + default y + +config BR2_PACKAGE_QT_FONT_FIXED + bool "fixed" + default y + +config BR2_PACKAGE_QT_FONT_HELVETICA + bool "helvetica" + default y + +config BR2_PACKAGE_QT_FONT_JAPANESE + bool "japanese" + +config BR2_PACKAGE_QT_FONT_UNIFONT + bool "unicode" + +endmenu + +endif # BR2_PACKAGE_QT_EMBEDDED + +choice + prompt "freetype2 support" + default BR2_PACKAGE_QT_NOFREETYPE + help + Select freetype2 support. + +config BR2_PACKAGE_QT_NOFREETYPE + bool "no freetype2 support" + depends on BR2_PACKAGE_QT_EMBEDDED + help + Do not compile in Freetype2 support. + +comment "Qt freetype2 needs Qt embedded" + depends on BR2_PACKAGE_QT_X11 + +config BR2_PACKAGE_QT_QTFREETYPE + bool "Qt freetype2" + depends on BR2_PACKAGE_QT_EMBEDDED + help + Use the libfreetype bundled with Qt. + +config BR2_PACKAGE_QT_SYSTEMFREETYPE + bool "System freetype2" + select BR2_PACKAGE_FREETYPE + help + Use shared libfreetype from the target system. + See http://www.freetype.org/ +endchoice + +config BR2_PACKAGE_QT_GIF + bool "Enable GIF support" + help + This compiles and installs the plugin for GIF reading support. + +config BR2_PACKAGE_QT_LIBMNG + bool "Enable libmng support" + help + This compiles and installs the plugin for MNG support. + +choice + prompt "JPEG support" + default BR2_PACKAGE_QT_NOJPEG + help + Select libjpeg support. + +config BR2_PACKAGE_QT_NOJPEG + bool "No jpeg support" + help + Disable JPEG support + +config BR2_PACKAGE_QT_SYSTEMJPEG + bool "System libjpeg" + select BR2_PACKAGE_JPEG + help + Link against system libjpeg + +config BR2_PACKAGE_QT_QTJPEG + bool "Use Qt bundled libjpeg" + help + Link against libjpeg provided with Qt +endchoice + +choice + prompt "PNG support" + default BR2_PACKAGE_QT_NOPNG + help + Select which library to use if PNG support should be enabled. + +config BR2_PACKAGE_QT_NOPNG + bool "No PNG support" + +config BR2_PACKAGE_QT_SYSTEMPNG + bool "System libpng" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_QT_QTPNG + bool "Use Qt bundled libpng" +endchoice + +choice + prompt "TIFF support" + default BR2_PACKAGE_QT_NOTIFF + help + Select which library to use if TIFF support should be enabled. + +config BR2_PACKAGE_QT_NOTIFF + bool "No TIFF support" + +config BR2_PACKAGE_QT_SYSTEMTIFF + bool "System libtiff" + select BR2_PACKAGE_TIFF + +config BR2_PACKAGE_QT_QTTIFF + bool "Use Qt bundled libtiff" +endchoice + +config BR2_PACKAGE_QT_ACCESSIBILITY + bool "Enable accessibility support" + help + This enables and compiles the accessibility support. + +endif # BR2_PACKAGE_QT_GUI_MODULE + +choice + prompt "zlib support" + default BR2_PACKAGE_QT_QTZLIB + help + Select zlib support. + +config BR2_PACKAGE_QT_QTZLIB + bool "Qt zlib" + help + Use the zlib bundled with Qt. + +config BR2_PACKAGE_QT_SYSTEMZLIB + bool "System zlib" + select BR2_PACKAGE_ZLIB + help + Use the shared zlib from the system. +endchoice + +source "package/qt/Config.sql.in" +if BR2_PACKAGE_QT_GUI_MODULE +if BR2_PACKAGE_QT_EMBEDDED +source "package/qt/Config.gfx.in" +source "package/qt/Config.mouse.in" +source "package/qt/Config.keyboard.in" +endif + +config BR2_PACKAGE_QT_PHONON + bool "Phonon Module" + default y + depends on BR2_PACKAGE_GSTREAMER + select BR2_PACKAGE_GST_PLUGINS_BASE + help + Build the Phonon module. Support for different audio/video + formats can be configured at the GStreamer package. + If unsure, say n. + +comment "Phonon module needs gstreamer" + depends on !BR2_PACKAGE_GSTREAMER + +config BR2_PACKAGE_QT_PHONON_BACKEND + bool "Phonon Module Backend" + depends on BR2_PACKAGE_QT_PHONON + help + Build the platform Phonon plugin. + If unsure, say n. + +config BR2_PACKAGE_QT_OPENGL + bool "OpenGL support" + default y + depends on (BR2_PACKAGE_HAS_LIBGL && BR2_PACKAGE_QT_X11) || \ + (BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_HAS_LIBGLES) + help + This option enables OpenGL support. + +if BR2_PACKAGE_QT_OPENGL + +choice + prompt "OpenGL API" + help + Select OpenGL API. + +comment "Desktop OpenGL not available (needs Qt standard (X11))" + depends on !BR2_PACKAGE_QT_X11 + +config BR2_PACKAGE_QT_OPENGL_GL_DESKTOP + bool "Desktop OpenGL" + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_QT_X11 + help + Use desktop OpenGL. + +config BR2_PACKAGE_QT_OPENGL_ES + bool "OpenGL ES v2.x support" + depends on BR2_PACKAGE_HAS_LIBGLES + depends on BR2_PACKAGE_HAS_LIBEGL + help + Enable the OpenGL ES v2.x support. + +endchoice + +endif # BR2_PACKAGE_QT_OPENGL + +endif + +config BR2_PACKAGE_QT_DBUS + bool "DBus Module" + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + depends on BR2_USE_MMU # dbus + select BR2_PACKAGE_DBUS + help + Build the Qt DBus module. + +comment "DBus Module needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_QT_XML + bool "XML Module" + default y + help + Build the XML module. + +config BR2_PACKAGE_QT_XMLPATTERNS + bool "XML Patterns Module" + depends on BR2_PACKAGE_QT_XML + help + Build QtXmlPatterns module. + If unsure, say n + +config BR2_PACKAGE_QT_MULTIMEDIA + bool "Multimedia Module" + depends on BR2_PACKAGE_QT_GUI_MODULE + help + Build QtMultimedia module. + +config BR2_PACKAGE_QT_AUDIO_BACKEND + bool "QtMultimedia Audio backend" + depends on BR2_PACKAGE_QT_MULTIMEDIA + depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib + select BR2_PACKAGE_ALSA_LIB + help + Build the ALSA audio backend into QtMultimedia + +config BR2_PACKAGE_QT_SVG + bool "SVG Module" + depends on BR2_PACKAGE_QT_GUI_MODULE + help + Build the SVG module. + If unsure, say n + +config BR2_PACKAGE_QT_NETWORK + bool "Network Module" + default y + help + Install the Network module. + if unsure, say y + +config BR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT + bool + # see src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h + # see http://lists.busybox.net/pipermail/buildroot/2014-November/112605.html + default y if BR2_arc || BR2_arm || BR2_armeb || BR2_i386 || BR2_microblazeel || \ + BR2_microblazebe || BR2_mips || BR2_mipsel || \ + (BR2_mips64 || BR2_mips64el) && !BR2_MIPS_NABI32 || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_x86_64 || \ + BR2_sh4 || BR2_sh4eb || BR2_sh4a || BR2_sh4aeb + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_QT_WEBKIT + bool "WebKit Module" + depends on BR2_PACKAGE_QT_SCRIPT + depends on BR2_PACKAGE_QT_SHARED + depends on BR2_PACKAGE_QT_GUI_MODULE + depends on BR2_PACKAGE_QT_NETWORK + depends on BR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # needs pthread_getattr_np() + depends on BR2_PACKAGE_GSTREAMER + select BR2_PACKAGE_GST_PLUGINS_BASE + select BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_APP + help + Build the WebKit module. + If unsure, say n. + +comment "WebKit needs a toolchain w/ dynamic library, NPTL" + depends on BR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIB + +comment "WebKit needs QtShared/Script/Gui/Network and Gstreamer 0.10" + depends on BR2_PACKAGE_QT_ARCH_SUPPORTS_WEBKIT + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL && !BR2_STATIC_LIB + depends on !BR2_PACKAGE_QT_SCRIPT || !BR2_PACKAGE_QT_SHARED \ + || !BR2_PACKAGE_QT_GUI_MODULE || !BR2_PACKAGE_QT_NETWORK \ + || !BR2_PACKAGE_GSTREAMER + +config BR2_PACKAGE_QT_STL + bool "STL support" + help + Compile STL support. + If unsure, say n. + +config BR2_PACKAGE_QT_OPENSSL + bool "Enable OpenSSL support" + depends on BR2_PACKAGE_QT_NETWORK + select BR2_PACKAGE_OPENSSL + help + Enable support for the OpenSSL encryption library. If you use + QSslSocket say y here, otherwise, say no to save space on the + target. + If unsure, say n. + +config BR2_PACKAGE_QT_ARCH_SUPPORTS_SCRIPT + bool + # see http://lists.busybox.net/pipermail/buildroot/2014-November/112605.html + default y if BR2_arc || BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || \ + BR2_microblazeel || BR2_microblazebe || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_nios2 || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sh4 || BR2_sh4eb || \ + BR2_sh4a || BR2_sh4aeb || BR2_x86_64 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_QT_SCRIPT + bool "Script Module" + default y + depends on BR2_PACKAGE_QT_ARCH_SUPPORTS_SCRIPT + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # needs pthread_getattr_np() + help + Build the Qt Script module. + if unsure, say y. + +comment "Script Module needs a toolchain with NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_PACKAGE_QT_ARCH_SUPPORTS_SCRIPT + +config BR2_PACKAGE_QT_SCRIPTTOOLS + bool "Script Tools Module" + depends on BR2_PACKAGE_QT_SCRIPT + depends on BR2_PACKAGE_QT_GUI_MODULE + help + Build the Qt Script Tools module. + if unsure, say n. + +config BR2_PACKAGE_QT_DECLARATIVE + bool "Declarative module" + depends on BR2_PACKAGE_QT_SCRIPT + depends on BR2_PACKAGE_QT_GUI_MODULE + depends on BR2_PACKAGE_QT_SQL_MODULE + help + Build the Qt Declarative Module for qml support + if unsure, say n. + +config BR2_PACKAGE_QT_TEST + bool "Test Module" + help + Install the Test module. + +endif # BR2_PACKAGE_QT diff --git a/buildroot/package/qt/Config.keyboard.in b/buildroot/package/qt/Config.keyboard.in new file mode 100644 index 0000000..b042547 --- /dev/null +++ b/buildroot/package/qt/Config.keyboard.in @@ -0,0 +1,12 @@ +menu "Keyboard drivers" + +config BR2_PACKAGE_QT_KEYBOARD_TTY + bool "tty" + +config BR2_PACKAGE_QT_KEYBOARD_LINUXINPUT + bool "linux input" + +config BR2_PACKAGE_QT_KEYBOARD_QVFB + bool "qvfb" + +endmenu diff --git a/buildroot/package/qt/Config.mouse.in b/buildroot/package/qt/Config.mouse.in new file mode 100644 index 0000000..1062fac --- /dev/null +++ b/buildroot/package/qt/Config.mouse.in @@ -0,0 +1,26 @@ +menu "Mouse drivers" + +config BR2_PACKAGE_QT_MOUSE_PC + bool "pc" + +config BR2_PACKAGE_QT_MOUSE_LINUXTP + bool "linuxtp" + +config BR2_PACKAGE_QT_MOUSE_LINUXINPUT + bool "linux input" + +config BR2_PACKAGE_QT_MOUSE_TSLIB + bool "tslib" + select BR2_PACKAGE_TSLIB + +config BR2_PACKAGE_QT_MOUSE_QVFB + bool "qvfb" + +comment "Mouse Options" + +config BR2_PACKAGE_QT_MOUSE_NO_QWS_CURSOR + bool "Hide the mouse cursor" + help + Do not show the mouse cursor in QWS. + +endmenu diff --git a/buildroot/package/qt/Config.sql.in b/buildroot/package/qt/Config.sql.in new file mode 100644 index 0000000..6d39bb9 --- /dev/null +++ b/buildroot/package/qt/Config.sql.in @@ -0,0 +1,59 @@ +menuconfig BR2_PACKAGE_QT_SQL_MODULE + bool "SQL Module" + help + Compile Qt SQL Module + +if BR2_PACKAGE_QT_SQL_MODULE +config BR2_PACKAGE_QT_MYSQL + bool "MySQL Driver" + depends on BR2_USE_MMU # mysql + select BR2_PACKAGE_MYSQL + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + Build MySQL driver + If unsure, say n. + +config BR2_PACKAGE_QT_ODBC + bool "ODBC Driver" + select BR2_PACKAGE_UNIXODBC + help + Build ODBC driver + If unsure, say n. + +config BR2_PACKAGE_QT_PSQL + bool "PostgreSQL Driver" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_POSTGRESQL + help + Build PostgreSQL driver + If unsure, say n. + +comment "PostgreSQL driver needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +choice + prompt "SQLite 3 support" + default BR2_PACKAGE_QT_SQLITE_NONE + help + Select SQLite support. + +config BR2_PACKAGE_QT_SQLITE_NONE + bool "No sqlite support" + help + Do not compile any kind of SQLite support. + +config BR2_PACKAGE_QT_SQLITE_QT + bool "Qt SQLite" + help + Use Qt bundled SQLite support. + +config BR2_PACKAGE_QT_SQLITE_SYSTEM + bool "System SQLite" + select BR2_PACKAGE_SQLITE + help + Use system SQLite. + +endchoice + +endif diff --git a/buildroot/package/qt/powervr.ini b/buildroot/package/qt/powervr.ini new file mode 100644 index 0000000..57863eb --- /dev/null +++ b/buildroot/package/qt/powervr.ini @@ -0,0 +1,2 @@ +[default] +WindowSystem=libpvrQWSWSEGL.so.1 diff --git a/buildroot/package/qt/qt.hash b/buildroot/package/qt/qt.hash new file mode 100644 index 0000000..301010c --- /dev/null +++ b/buildroot/package/qt/qt.hash @@ -0,0 +1,3 @@ +# md5 http://download.qt.io/official_releases/qt/4.8/4.8.7/md5sums-4.8.7, sha256 locally computed: +md5 d990ee66bf7ab0c785589776f35ba6ad qt-everywhere-opensource-src-4.8.7.tar.gz +sha256 e2882295097e47fe089f8ac741a95fef47e0a73a3f3cdf21b56990638f626ea0 qt-everywhere-opensource-src-4.8.7.tar.gz diff --git a/buildroot/package/qt/qt.mk b/buildroot/package/qt/qt.mk new file mode 100644 index 0000000..1dcb05d --- /dev/null +++ b/buildroot/package/qt/qt.mk @@ -0,0 +1,716 @@ +################################################################################ +# +# qt +# +################################################################################ + +QT_VERSION_MAJOR = 4.8 +QT_VERSION = $(QT_VERSION_MAJOR).7 +QT_SOURCE = qt-everywhere-opensource-src-$(QT_VERSION).tar.gz +QT_SITE = http://download.qt-project.org/official_releases/qt/$(QT_VERSION_MAJOR)/$(QT_VERSION) +QT_DEPENDENCIES = host-pkgconf +QT_INSTALL_STAGING = YES + +QT_LICENSE := LGPL-2.1 with exceptions or GPL-3.0 +QT_LICENSE_FILES = LICENSE.LGPL LGPL_EXCEPTION.txt LICENSE.GPL3 + +# Opensource licenses are the only one we catter about +QT_CONFIGURE_OPTS += -opensource -confirm-license + +QT_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_QT_CONFIG_FILE)) + +ifneq ($(QT_CONFIG_FILE),) +QT_CONFIGURE_OPTS += -qconfig buildroot +endif + +QT_CFLAGS = $(TARGET_CFLAGS) +QT_CXXFLAGS = $(TARGET_CXXFLAGS) +QT_LDFLAGS = $(TARGET_LDFLAGS) + +# Qt WebKit build fails when gcc-6 is used for build, because +# 'std::auto_ptr' is deprecated starting from gcc 6.x. So, we have to +# use an older c++ standard to prevent build failure +QT_CXXFLAGS += -std=gnu++98 + +# Qt has some assembly function that are not present in thumb1 mode: +# Error: selected processor does not support Thumb mode `swp r3,r7,[r4]' +# so, we desactivate thumb mode +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y) +QT_CFLAGS += -marm +QT_CXXFLAGS += -marm +endif + +ifeq ($(BR2_PACKAGE_QT_QT3SUPPORT),y) +QT_CONFIGURE_OPTS += -qt3support +else +QT_CONFIGURE_OPTS += -no-qt3support +endif + +ifeq ($(BR2_PACKAGE_QT_DEMOS),y) +QT_CONFIGURE_OPTS += -demosdir $(TARGET_DIR)/usr/share/qt/demos +else +QT_CONFIGURE_OPTS += -nomake demos +endif +ifeq ($(BR2_PACKAGE_QT_EXAMPLES),y) +QT_CONFIGURE_OPTS += -examplesdir $(TARGET_DIR)/usr/share/qt/examples +else +QT_CONFIGURE_OPTS += -nomake examples +endif + +# ensure glib is built first if enabled for Qt's glib support +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +QT_CONFIGURE_OPTS += -glib +QT_DEPENDENCIES += libglib2 +else +QT_CONFIGURE_OPTS += -no-glib +endif + +### Pixel depths +QT_PIXEL_DEPTHS = # empty +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_1),y) +QT_PIXEL_DEPTHS += 1 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_4),y) +QT_PIXEL_DEPTHS += 4 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_8),y) +QT_PIXEL_DEPTHS += 8 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_12),y) +QT_PIXEL_DEPTHS += 12 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_15),y) +QT_PIXEL_DEPTHS += 15 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_16),y) +QT_PIXEL_DEPTHS += 16 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_18),y) +QT_PIXEL_DEPTHS += 18 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_24),y) +QT_PIXEL_DEPTHS += 24 +endif +ifeq ($(BR2_PACKAGE_QT_PIXEL_DEPTH_32),y) +QT_PIXEL_DEPTHS += 32 +endif +ifneq ($(QT_PIXEL_DEPTHS),) +QT_CONFIGURE_OPTS += -depths $(subst $(space),$(comma),$(strip $(QT_PIXEL_DEPTHS))) +endif + +### Display drivers +ifeq ($(BR2_PACKAGE_QT_GFX_LINUXFB),y) +QT_CONFIGURE_OPTS += -qt-gfx-linuxfb +else +QT_CONFIGURE_OPTS += -no-gfx-linuxfb +endif +ifeq ($(BR2_PACKAGE_QT_GFX_TRANSFORMED),y) +QT_CONFIGURE_OPTS += -qt-gfx-transformed +else +QT_CONFIGURE_OPTS += -no-gfx-transformed +endif +ifeq ($(BR2_PACKAGE_QT_GFX_QVFB),y) +QT_CONFIGURE_OPTS += -qt-gfx-qvfb +else +QT_CONFIGURE_OPTS += -no-gfx-qvfb +endif +ifeq ($(BR2_PACKAGE_QT_GFX_VNC),y) +QT_CONFIGURE_OPTS += -qt-gfx-vnc +else +QT_CONFIGURE_OPTS += -no-gfx-vnc +endif +ifeq ($(BR2_PACKAGE_QT_GFX_MULTISCREEN),y) +QT_CONFIGURE_OPTS += -qt-gfx-multiscreen +else +QT_CONFIGURE_OPTS += -no-gfx-multiscreen +endif +ifeq ($(BR2_PACKAGE_QT_GFX_DIRECTFB),y) +QT_CONFIGURE_OPTS += -qt-gfx-directfb +QT_DEPENDENCIES += directfb +else +QT_CONFIGURE_OPTS += -no-gfx-directfb +endif +ifeq ($(BR2_PACKAGE_QT_GFX_POWERVR),y) +QT_CONFIGURE_OPTS += \ + -plugin-gfx-powervr -D QT_NO_QWS_CURSOR -D QT_QWS_CLIENTBLIT +QT_DEPENDENCIES += powervr +endif + +### Mouse drivers +ifeq ($(BR2_PACKAGE_QT_MOUSE_PC),y) +QT_CONFIGURE_OPTS += -qt-mouse-pc +else +QT_CONFIGURE_OPTS += -no-mouse-pc +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_LINUXTP),y) +QT_CONFIGURE_OPTS += -qt-mouse-linuxtp +else +QT_CONFIGURE_OPTS += -no-mouse-linuxtp +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_LINUXINPUT),y) +QT_CONFIGURE_OPTS += -qt-mouse-linuxinput +else +QT_CONFIGURE_OPTS += -no-mouse-linuxinput +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_TSLIB),y) +QT_CONFIGURE_OPTS += -qt-mouse-tslib +QT_DEPENDENCIES += tslib +else +QT_CONFIGURE_OPTS += -no-mouse-tslib +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_QVFB),y) +QT_CONFIGURE_OPTS += -qt-mouse-qvfb +else +QT_CONFIGURE_OPTS += -no-mouse-qvfb +endif +ifeq ($(BR2_PACKAGE_QT_MOUSE_NO_QWS_CURSOR),y) +QT_CONFIGURE_OPTS += -D QT_NO_QWS_CURSOR +endif + +### Keyboard drivers +ifeq ($(BR2_PACKAGE_QT_KEYBOARD_TTY),y) +QT_CONFIGURE_OPTS += -qt-kbd-tty +else +QT_CONFIGURE_OPTS += -no-kbd-tty +endif +ifeq ($(BR2_PACKAGE_QT_KEYBOARD_LINUXINPUT),y) +QT_CONFIGURE_OPTS += -qt-kbd-linuxinput +else +QT_CONFIGURE_OPTS += -no-kbd-linuxinput +endif +ifeq ($(BR2_PACKAGE_QT_KEYBOARD_QVFB),y) +QT_CONFIGURE_OPTS += -qt-kbd-qvfb +else +QT_CONFIGURE_OPTS += -no-kbd-qvfb +endif + +ifeq ($(BR2_PACKAGE_QT_DEBUG),y) +QT_CONFIGURE_OPTS += -debug +else +QT_CONFIGURE_OPTS += -release +endif + +ifeq ($(BR2_PACKAGE_QT_SHARED),y) +QT_CONFIGURE_OPTS += -shared +else +QT_CONFIGURE_OPTS += -static +endif + +ifeq ($(BR2_STATIC_LIBS),y) +QT_CONFIGURE_OPTS += -D QT_NO_DYNAMIC_LIBRARY +endif + +ifeq ($(BR2_ENDIAN),"LITTLE") +QT_CONFIGURE_OPTS += -little-endian +else +QT_CONFIGURE_OPTS += -big-endian +endif + +ifeq ($(BR2_arm)$(BR2_armeb),y) +QT_EMB_PLATFORM = arm +else ifeq ($(BR2_i386),y) +QT_EMB_PLATFORM = x86 +else ifeq ($(BR2_x86_64),y) +QT_EMB_PLATFORM = x86_64 +else ifeq ($(BR2_mips)$(BR2_mipsel),y) +QT_EMB_PLATFORM = mips +else ifeq ($(BR2_powerpc),y) +QT_EMB_PLATFORM = powerpc +else ifeq ($(BR2_sh4)$(BR2_sh4eb)$(BR2_sh4a)$(BR2_sh4aeb),y) +QT_EMB_PLATFORM = sh +else +QT_EMB_PLATFORM = generic +endif + +ifeq ($(BR2_PACKAGE_QT_X11),y) +QT_DEPENDENCIES += fontconfig xlib_libXi xlib_libX11 xlib_libXrender \ + xlib_libXcursor xlib_libXrandr xlib_libXext xlib_libXv +# Using pkg-config avoids us some logic to redefine and sed again mkspecs files +# to add X11 include path and link options +QT_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags x11` +QT_CXXFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags x11` +QT_LDFLAGS += `$(PKG_CONFIG_HOST_BINARY) --libs x11 xext` +QT_CONFIGURE_OPTS += -arch $(QT_EMB_PLATFORM) \ + -xplatform qws/linux-$(QT_EMB_PLATFORM)-g++ -x11 -no-gtkstyle -no-sm \ + -no-openvg +else # if BR2_PACKAGE_QT_EMBEDDED +QT_CONFIGURE_OPTS += -embedded $(QT_EMB_PLATFORM) +endif + +ifneq ($(BR2_PACKAGE_QT_GUI_MODULE),y) +QT_CONFIGURE_OPTS += -no-gui +endif + +ifneq ($(BR2_PACKAGE_QT_GIF),y) +QT_CONFIGURE_OPTS += -no-gif +endif + +ifeq ($(BR2_PACKAGE_QT_LIBMNG),y) +QT_CONFIGURE_OPTS += -qt-libmng +else +QT_CONFIGURE_OPTS += -no-libmng +endif + +ifeq ($(BR2_PACKAGE_QT_ACCESSIBILITY),y) +QT_CONFIGURE_OPTS += -accessibility +else +QT_CONFIGURE_OPTS += -no-accessibility +endif + +ifeq ($(BR2_PACKAGE_QT_QTZLIB),y) +QT_CONFIGURE_OPTS += -qt-zlib +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMZLIB),y) +QT_CONFIGURE_OPTS += -system-zlib +QT_DEPENDENCIES += zlib +endif +endif + +ifeq ($(BR2_PACKAGE_QT_QTJPEG),y) +QT_CONFIGURE_OPTS += -qt-libjpeg +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMJPEG),y) +QT_CONFIGURE_OPTS += -system-libjpeg +QT_DEPENDENCIES += jpeg +else +QT_CONFIGURE_OPTS += -no-libjpeg +endif +endif + +ifeq ($(BR2_PACKAGE_QT_QTPNG),y) +QT_CONFIGURE_OPTS += -qt-libpng +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMPNG),y) +QT_CONFIGURE_OPTS += -system-libpng +QT_DEPENDENCIES += libpng +else +QT_CONFIGURE_OPTS += -no-libpng +endif +endif + +ifeq ($(BR2_PACKAGE_QT_QTTIFF),y) +QT_CONFIGURE_OPTS += -qt-libtiff +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMTIFF),y) +QT_CONFIGURE_OPTS += -system-libtiff +QT_DEPENDENCIES += tiff +else +QT_CONFIGURE_OPTS += -no-libtiff +endif +endif + +QT_FONTS = $(addprefix $(STAGING_DIR)/usr/lib/fonts/, $(addsuffix *.qpf, \ + $(if $(BR2_PACKAGE_QT_FONT_MICRO),micro) \ + $(if $(BR2_PACKAGE_QT_FONT_FIXED),fixed) \ + $(if $(BR2_PACKAGE_QT_FONT_HELVETICA),helvetica) \ + $(if $(BR2_PACKAGE_QT_FONT_JAPANESE),japanese) \ + $(if $(BR2_PACKAGE_QT_FONT_UNIFONT),unifont))) + +ifeq ($(BR2_PACKAGE_QT_QTFREETYPE),y) +QT_CONFIGURE_OPTS += -qt-freetype +else +ifeq ($(BR2_PACKAGE_QT_SYSTEMFREETYPE),y) +QT_CONFIGURE_OPTS += -system-freetype +QT_CONFIGURE_OPTS += -I $(STAGING_DIR)/usr/include/freetype2/ +QT_DEPENDENCIES += freetype +else +QT_CONFIGURE_OPTS += -no-freetype +endif +endif + +ifeq ($(BR2_PACKAGE_QT_DBUS),y) +QT_DEPENDENCIES += dbus +endif + +ifeq ($(BR2_PACKAGE_QT_OPENSSL),y) +QT_CONFIGURE_OPTS += -openssl +QT_DEPENDENCIES += openssl +else +QT_CONFIGURE_OPTS += -no-openssl +endif + +ifeq ($(BR2_PACKAGE_QT_OPENGL_ES),y) +QT_CONFIGURE_OPTS += -opengl es2 -egl +QT_DEPENDENCIES += libgles libegl +QT_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags egl` +QT_CXXFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags egl` +QT_LDFLAGS += `$(PKG_CONFIG_HOST_BINARY) --libs egl` +else ifeq ($(BR2_PACKAGE_QT_OPENGL_GL_DESKTOP),y) +QT_CONFIGURE_OPTS += -opengl desktop +QT_DEPENDENCIES += libgl +else +QT_CONFIGURE_OPTS += -no-opengl +endif + +# Qt SQL Drivers +ifeq ($(BR2_PACKAGE_QT_SQL_MODULE),y) +ifeq ($(BR2_PACKAGE_QT_MYSQL),y) +QT_CONFIGURE_OPTS += -qt-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config +QT_DEPENDENCIES += mysql +endif +ifeq ($(BR2_PACKAGE_QT_ODBC),y) +QT_CONFIGURE_OPTS += -qt-sql-odbc +QT_DEPENDENCIES += unixodbc +endif +ifeq ($(BR2_PACKAGE_QT_PSQL),y) +QT_CONFIGURE_OPTS += -qt-sql-psql -psql_config $(STAGING_DIR)/usr/bin/pg_config +QT_DEPENDENCIES += postgresql +endif +ifeq ($(BR2_PACKAGE_QT_SQLITE_QT),y) +QT_CONFIGURE_OPTS += -qt-sql-sqlite +else +ifeq ($(BR2_PACKAGE_QT_SQLITE_SYSTEM),y) +QT_CONFIGURE_OPTS += -system-sqlite +QT_DEPENDENCIES += sqlite +else +QT_CONFIGURE_OPTS += -no-sql-sqlite +endif +endif +ifeq ($(BR2_PACKAGE_QT_SQLITE2),y) +QT_CONFIGURE_OPTS += -qt-sql-sqlite2 +endif +else +# By default, no SQL driver is turned on by configure. +# but it seems sqlite isn't disabled despite what says +# configure --help +QT_CONFIGURE_OPTS += -no-sql-sqlite +endif + +ifeq ($(BR2_PACKAGE_QT_XMLPATTERNS),y) +QT_CONFIGURE_OPTS += -xmlpatterns -exceptions +else +QT_CONFIGURE_OPTS += -no-xmlpatterns +endif + +ifeq ($(BR2_PACKAGE_QT_MULTIMEDIA),y) +QT_CONFIGURE_OPTS += -multimedia +else +QT_CONFIGURE_OPTS += -no-multimedia +endif + +ifeq ($(BR2_PACKAGE_QT_AUDIO_BACKEND),y) +QT_CONFIGURE_OPTS += -audio-backend +QT_DEPENDENCIES += alsa-lib +else +QT_CONFIGURE_OPTS += -no-audio-backend +endif + +ifeq ($(BR2_PACKAGE_QT_PHONON),y) +QT_CONFIGURE_OPTS += -phonon +QT_DEPENDENCIES += gstreamer gst-plugins-base +else +QT_CONFIGURE_OPTS += -no-phonon +endif + +ifeq ($(BR2_PACKAGE_QT_PHONON_BACKEND),y) +QT_CONFIGURE_OPTS += -phonon-backend +else +QT_CONFIGURE_OPTS += -no-phonon-backend +endif + +ifeq ($(BR2_PACKAGE_QT_SVG),y) +QT_CONFIGURE_OPTS += -svg +else +QT_CONFIGURE_OPTS += -no-svg +endif + +ifeq ($(BR2_PACKAGE_QT_WEBKIT),y) +QT_CONFIGURE_OPTS += -webkit +QT_DEPENDENCIES += gstreamer gst-plugins-base +else +QT_CONFIGURE_OPTS += -no-webkit +endif + +ifeq ($(BR2_PACKAGE_QT_SCRIPT),y) +QT_CONFIGURE_OPTS += -script +else +QT_CONFIGURE_OPTS += -no-script +endif + +ifeq ($(BR2_PACKAGE_QT_SCRIPTTOOLS),y) +QT_CONFIGURE_OPTS += -scripttools +else +QT_CONFIGURE_OPTS += -no-scripttools +endif + +ifeq ($(BR2_PACKAGE_QT_STL),y) +QT_CONFIGURE_OPTS += -stl +else +QT_CONFIGURE_OPTS += -no-stl +endif + +ifeq ($(BR2_PACKAGE_QT_DECLARATIVE),y) +QT_CONFIGURE_OPTS += -declarative +else +QT_CONFIGURE_OPTS += -no-declarative +endif + +# -no-pch is needed to workaround the issue described at +# http://comments.gmane.org/gmane.comp.lib.qt.devel/5933. +# In addition, ccache and precompiled headers don't play well together +QT_CONFIGURE_OPTS += -no-pch + +# x86x86fix +# Workaround Qt Embedded bug when crosscompiling for x86 under x86 with linux +# host. It's unclear if this would happen on other hosts. +ifneq ($(findstring linux,$(GNU_HOST_NAME)),) +ifneq ($(findstring x86,$(QT_EMB_PLATFORM)),) +QT_CONFIGURE_OPTS += -platform linux-g++ +endif +endif +# End of workaround. + +# Variable for other Qt applications to use +QT_QMAKE = $(HOST_DIR)/bin/qmake -spec qws/linux-$(QT_EMB_PLATFORM)-g++ + +################################################################################ +# QT_QMAKE_SET -- helper macro to set = in +# the qmake.conf file. Will remove existing variable declaration if +# available. +# +# Argument 1 is the variable name +# Argument 2 is the value to set variable to +# Argument 3 is the base source directory of Qt +# +# E.G. use like this: +# $(call QT_QMAKE_SET,variable,value,directory) +################################################################################ +define QT_QMAKE_SET + $(SED) '/$(1)/d' $(3)/mkspecs/qws/linux-$(QT_EMB_PLATFORM)-g++/qmake.conf + $(SED) "/include.*qws.conf/a$(1) = $(2)" $(3)/mkspecs/qws/linux-$(QT_EMB_PLATFORM)-g++/qmake.conf +endef + +ifneq ($(QT_CONFIG_FILE),) +define QT_CONFIGURE_CONFIG_FILE + cp $(QT_CONFIG_FILE) $(@D)/src/corelib/global/qconfig-buildroot.h +endef +endif + +define QT_CONFIGURE_CMDS + -[ -f $(@D)/Makefile ] && $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) confclean + $(QT_CONFIGURE_IPV6) + $(QT_CONFIGURE_CONFIG_FILE) + # Fix compiler path + $(call QT_QMAKE_SET,QMAKE_CC,$(TARGET_CC),$(@D)) + $(call QT_QMAKE_SET,QMAKE_CXX,$(TARGET_CXX),$(@D)) + $(call QT_QMAKE_SET,QMAKE_LINK,$(TARGET_CXX),$(@D)) + $(call QT_QMAKE_SET,QMAKE_LINK_SHLIB,$(TARGET_CXX),$(@D)) + $(call QT_QMAKE_SET,QMAKE_AR,$(TARGET_AR) cqs,$(@D)) + $(call QT_QMAKE_SET,QMAKE_OBJCOPY,$(TARGET_OBJCOPY),$(@D)) + $(call QT_QMAKE_SET,QMAKE_RANLIB,$(TARGET_RANLIB),$(@D)) + $(call QT_QMAKE_SET,QMAKE_STRIP,$(TARGET_STRIP),$(@D)) + $(call QT_QMAKE_SET,QMAKE_CFLAGS,$(QT_CFLAGS),$(@D)) + $(call QT_QMAKE_SET,QMAKE_CXXFLAGS,$(QT_CXXFLAGS),$(@D)) + $(call QT_QMAKE_SET,QMAKE_LFLAGS,$(QT_LDFLAGS),$(@D)) + $(call QT_QMAKE_SET,PKG_CONFIG,$(HOST_DIR)/bin/pkg-config,$(@D)) +# Don't use TARGET_CONFIGURE_OPTS here, qmake would be compiled for the target +# instead of the host then. So set PKG_CONFIG* manually. + (cd $(@D); \ + PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig:$(PKG_CONFIG_PATH)" \ + $(TARGET_MAKE_ENV) \ + MAKEFLAGS="$(MAKEFLAGS) -j$(PARALLEL_JOBS)" ./configure \ + $(if $(VERBOSE),-verbose,-silent) \ + -force-pkg-config \ + $(QT_CONFIGURE_OPTS) \ + -no-xinerama \ + -no-cups \ + -no-nis \ + -no-separate-debug-info \ + -prefix /usr \ + -plugindir /usr/lib/qt/plugins \ + -importdir /usr/lib/qt/imports \ + -translationdir /usr/share/qt/translations \ + -hostprefix $(STAGING_DIR) \ + -fast \ + -no-rpath \ + ) +endef + +define QT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +# Build the list of libraries and plugins to install to the target + +QT_INSTALL_LIBS += QtCore +QT_HOST_PROGRAMS += moc rcc qmake lrelease + +ifeq ($(BR2_PACKAGE_QT_GUI_MODULE),y) +QT_INSTALL_LIBS += QtGui +QT_HOST_PROGRAMS += uic +endif +ifeq ($(BR2_PACKAGE_QT_SQL_MODULE),y) +QT_INSTALL_LIBS += QtSql +endif +ifeq ($(BR2_PACKAGE_QT_MULTIMEDIA),y) +QT_INSTALL_LIBS += QtMultimedia +endif +ifeq ($(BR2_PACKAGE_QT_PHONON),y) +QT_INSTALL_LIBS += phonon +endif +ifeq ($(BR2_PACKAGE_QT_SVG),y) +QT_INSTALL_LIBS += QtSvg +endif +ifeq ($(BR2_PACKAGE_QT_NETWORK),y) +QT_INSTALL_LIBS += QtNetwork +endif +ifeq ($(BR2_PACKAGE_QT_WEBKIT),y) +QT_INSTALL_LIBS += QtWebKit +endif +ifeq ($(BR2_PACKAGE_QT_XML),y) +QT_INSTALL_LIBS += QtXml +endif +ifeq ($(BR2_PACKAGE_QT_DBUS),y) +QT_INSTALL_LIBS += QtDBus +endif +ifeq ($(BR2_PACKAGE_QT_XMLPATTERNS),y) +QT_INSTALL_LIBS += QtXmlPatterns +endif +ifeq ($(BR2_PACKAGE_QT_SCRIPT),y) +QT_INSTALL_LIBS += QtScript +endif +ifeq ($(BR2_PACKAGE_QT_SCRIPTTOOLS),y) +QT_INSTALL_LIBS += QtScriptTools +endif +ifeq ($(BR2_PACKAGE_QT_DECLARATIVE),y) +QT_INSTALL_LIBS += QtDeclarative +endif +ifeq ($(BR2_PACKAGE_QT_QT3SUPPORT),y) +QT_INSTALL_LIBS += Qt3Support +endif +ifeq ($(BR2_PACKAGE_QT_OPENGL_ES),y) +QT_INSTALL_LIBS += QtOpenGL +endif +ifeq ($(BR2_PACKAGE_QT_GFX_POWERVR),y) +QT_INSTALL_LIBS += pvrQWSWSEGL +endif +ifeq ($(BR2_PACKAGE_QT_TEST),y) +QT_INSTALL_LIBS += QtTest +endif + +QT_CONF_FILE = $(HOST_DIR)/bin/qt.conf + +# Since host programs and spec files have been moved to $(HOST_DIR), +# we need to tell qmake the new location of the various elements, +# through a qt.conf file. +define QT_INSTALL_QT_CONF + mkdir -p $(dir $(QT_CONF_FILE)) + echo "[Paths]" > $(QT_CONF_FILE) + echo "Prefix=$(HOST_DIR)" >> $(QT_CONF_FILE) + echo "Headers=$(STAGING_DIR)/usr/include" >> $(QT_CONF_FILE) + echo "Libraries=$(STAGING_DIR)/usr/lib" >> $(QT_CONF_FILE) + echo "Data=$(HOST_DIR)" >> $(QT_CONF_FILE) + echo "Binaries=$(HOST_DIR)/bin" >> $(QT_CONF_FILE) +endef + +# After running Qt normal installation process (which installs +# everything in the STAGING_DIR), we move host programs such as qmake, +# rcc or uic to the HOST_DIR so that they are available at the usual +# location. A qt.conf file is generated to make sure that all host +# programs still find all files they need. The .pc files are tuned to +# remove the sysroot path from them, since pkg-config already adds it +# automatically. +define QT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + mkdir -p $(HOST_DIR)/bin + mv $(addprefix $(STAGING_DIR)/usr/bin/,$(QT_HOST_PROGRAMS)) $(HOST_DIR)/bin + ln -sf $(STAGING_DIR)/usr/mkspecs $(HOST_DIR)/mkspecs + $(QT_INSTALL_QT_CONF) + for i in moc uic rcc lupdate lrelease ; do \ + $(SED) "s,^$${i}_location=.*,$${i}_location=$(HOST_DIR)/bin/$${i}," \ + $(STAGING_DIR)/usr/lib/pkgconfig/Qt*.pc ; \ + done + $(SED) "s,$(STAGING_DIR)/,,g" $(STAGING_DIR)/usr/lib/pkgconfig/Qt*.pc +endef + +# Library installation +ifeq ($(BR2_PACKAGE_QT_SHARED),y) +define QT_INSTALL_TARGET_LIBS + mkdir -p $(TARGET_DIR)/usr/lib + for lib in $(QT_INSTALL_LIBS); do \ + cp -dpf $(STAGING_DIR)/usr/lib/lib$${lib}.so.* $(TARGET_DIR)/usr/lib ; \ + done +endef +endif + +# Plugin installation +define QT_INSTALL_TARGET_PLUGINS + if [ -d $(STAGING_DIR)/usr/lib/qt/plugins/ ] ; then \ + mkdir -p $(TARGET_DIR)/usr/lib/qt/plugins ; \ + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/* $(TARGET_DIR)/usr/lib/qt/plugins ; \ + fi +endef + +# Import installation +define QT_INSTALL_TARGET_IMPORTS + if [ -d $(STAGING_DIR)/usr/lib/qt/imports/ ] ; then \ + mkdir -p $(TARGET_DIR)/usr/lib/qt/imports ; \ + cp -dpfr $(STAGING_DIR)/usr/lib/qt/imports/* $(TARGET_DIR)/usr/lib/qt/imports ; \ + fi +endef + +# Fonts installation +ifeq ($(BR2_PACKAGE_QT_EMBEDDED),y) +ifneq ($(QT_FONTS),) +define QT_INSTALL_TARGET_FONTS + mkdir -p $(TARGET_DIR)/usr/lib/fonts + cp -dpf $(QT_FONTS) $(TARGET_DIR)/usr/lib/fonts +endef +ifneq ($(BR2_PACKAGE_QT_FONT_MICRO)$(BR2_PACKAGE_QT_FONT_FIXED),) +# as stated in the font source src/3rdparty/fonts/micro.bdf +# source src/3rdparty/fonts/5x7.bdf and source src/3rdparty/fonts/6x13.bdf +QT_LICENSE := $(QT_LICENSE), Public Domain (Micro/Fixed font) +endif +ifneq ($(BR2_PACKAGE_QT_FONT_HELVETICA)$(BR2_PACKAGE_QT_FONT_JAPANESE),) +QT_LICENSE := $(QT_LICENSE), Adobe Helvetica license (Helvetica/Japanese fonts) +QT_LICENSE_FILES += src/3rdparty/fonts/COPYING.Helvetica +endif +ifeq ($(BR2_PACKAGE_QT_FONT_UNIFONT),y) +QT_LICENSE := $(QT_LICENSE), Freeware (Unifont font) +QT_LICENSE_FILES += src/3rdparty/fonts/COPYRIGHT.Unifont +endif +endif # QT_FONTS + +ifeq ($(BR2_PACKAGE_QT_FONT_TRUETYPE),y) +define QT_INSTALL_TARGET_FONTS_TTF + mkdir -p $(TARGET_DIR)/usr/lib/fonts + cp -dpf $(STAGING_DIR)/usr/lib/fonts/*.ttf $(TARGET_DIR)/usr/lib/fonts +endef +QT_LICENSE := $(QT_LICENSE), Bitstream license (DejaVu/Vera TrueType fonts) +QT_LICENSE_FILES += src/3rdparty/fonts/COPYRIGHT.DejaVu \ + src/3rdparty/fonts/README.DejaVu \ + src/3rdparty/fonts/COPYRIGHT.Vera +endif +endif # BR2_PACKAGE_QT_EMBEDDED + +ifeq ($(BR2_PACKAGE_QT_GFX_POWERVR),y) +define QT_INSTALL_TARGET_POWERVR + # Note: this overwrites the default powervr.ini provided by the ti-gfx + # package. + $(INSTALL) -D -m 0644 package/qt/powervr.ini \ + $(TARGET_DIR)/etc/powervr.ini +endef +endif + +ifeq ($(BR2_PACKAGE_QT_TRANSLATION_FILES),y) +define QT_INSTALL_TARGET_TRANSLATIONS + if [ -d $(STAGING_DIR)/usr/share/qt/translations/ ] ; then \ + mkdir -p $(TARGET_DIR)/usr/share/qt/translations ; \ + cp -dpfr $(STAGING_DIR)/usr/share/qt/translations/* $(TARGET_DIR)/usr/share/qt/translations ; \ + fi +endef +endif + +define QT_INSTALL_TARGET_CMDS + $(QT_INSTALL_TARGET_LIBS) + $(QT_INSTALL_TARGET_PLUGINS) + $(QT_INSTALL_TARGET_IMPORTS) + $(QT_INSTALL_TARGET_FONTS) + $(QT_INSTALL_TARGET_FONTS_TTF) + $(QT_INSTALL_TARGET_POWERVR) + $(QT_INSTALL_TARGET_TRANSLATIONS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/Config.in b/buildroot/package/qt5/Config.in new file mode 100644 index 0000000..a9ee44c --- /dev/null +++ b/buildroot/package/qt5/Config.in @@ -0,0 +1,90 @@ +config BR2_PACKAGE_QT5_GL_AVAILABLE + bool + default y + depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES + +config BR2_PACKAGE_QT5_JSCORE_AVAILABLE + bool + default y + # Javascript engine is only available on certain architectures + depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_mipsel + # ARM needs BLX, so v5t+ + depends on !BR2_ARM_CPU_ARMV4 + +comment "Qt5 needs a toolchain w/ wchar, NPTL, C++, dynamic library" + depends on !BR2_PACKAGE_QT + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS + +menuconfig BR2_PACKAGE_QT5 + bool "Qt5" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_STATIC_LIBS + depends on !BR2_PACKAGE_QT + select BR2_PACKAGE_QT5BASE + help + This option enables the Qt5 framework. Sub-options allow to + select which modules should be built. + + http://qt.io + +if BR2_PACKAGE_QT5 + +choice + prompt "Qt5 version" + +config BR2_PACKAGE_QT5_VERSION_LATEST + bool "Latest (5.9)" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11 + depends on !BR2_ARM_CPU_ARMV4 # needs ARMv5+ + # no built-in double-conversion support + depends on !BR2_arc && !BR2_nios2 && !BR2_xtensa + help + This option builds Qt 5.9, which is licensed under + (L)GPL-3.0+. + +comment "Latest Qt version needs host/toolchain w/ gcc >= 4.8" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_HOST_GCC_AT_LEAST_4_8 + depends on !BR2_ARM_CPU_ARMV4 + depends on !BR2_arc && !BR2_nios2 && !BR2_xtensa + +config BR2_PACKAGE_QT5_VERSION_5_6 + bool "LTS (5.6)" + help + This option builds Qt 5.6, which is licensed under + (L)GPL-2.0+. + +endchoice + +source "package/qt5/qt53d/Config.in" +source "package/qt5/qt5base/Config.in" +source "package/qt5/qt5canvas3d/Config.in" +source "package/qt5/qt5charts/Config.in" +source "package/qt5/qt5connectivity/Config.in" +source "package/qt5/qt5declarative/Config.in" +source "package/qt5/qt5enginio/Config.in" +source "package/qt5/qt5graphicaleffects/Config.in" +source "package/qt5/qt5imageformats/Config.in" +source "package/qt5/qt5location/Config.in" +source "package/qt5/qt5multimedia/Config.in" +source "package/qt5/qt5quickcontrols/Config.in" +source "package/qt5/qt5quickcontrols2/Config.in" +source "package/qt5/qt5script/Config.in" +source "package/qt5/qt5scxml/Config.in" +source "package/qt5/qt5sensors/Config.in" +source "package/qt5/qt5serialbus/Config.in" +source "package/qt5/qt5serialport/Config.in" +source "package/qt5/qt5svg/Config.in" +source "package/qt5/qt5tools/Config.in" +source "package/qt5/qt5virtualkeyboard/Config.in" +source "package/qt5/qt5wayland/Config.in" +source "package/qt5/qt5webchannel/Config.in" +source "package/qt5/qt5webkit/Config.in" +source "package/qt5/qt5webkit-examples/Config.in" +source "package/qt5/qt5webengine/Config.in" +source "package/qt5/qt5websockets/Config.in" +source "package/qt5/qt5x11extras/Config.in" +source "package/qt5/qt5xmlpatterns/Config.in" +endif diff --git a/buildroot/package/qt5/qt5.mk b/buildroot/package/qt5/qt5.mk new file mode 100644 index 0000000..84b7a4a --- /dev/null +++ b/buildroot/package/qt5/qt5.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# qt5 +# +################################################################################ + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5_VERSION_MAJOR = 5.9 +QT5_VERSION = $(QT5_VERSION_MAJOR).6 +else +QT5_VERSION_MAJOR = 5.6 +QT5_VERSION = $(QT5_VERSION_MAJOR).3 +endif +QT5_SITE = https://download.qt.io/official_releases/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules + +include $(sort $(wildcard package/qt5/*/*.mk)) + +define QT5_LA_PRL_FILES_FIXUP + for i in $$(find $(STAGING_DIR)/usr/lib* -name "libQt5*.la"); do \ + $(SED) "s:$(BASE_DIR):@BASE_DIR@:g" \ + -e "s:$(STAGING_DIR):@STAGING_DIR@:g" \ + -e "s:\(['= ]\)/usr:\\1@STAGING_DIR@/usr:g" \ + -e "s:@STAGING_DIR@:$(STAGING_DIR):g" \ + -e "s:@BASE_DIR@:$(BASE_DIR):g" \ + $$i ; \ + $(SED) "/^dependency_libs=/s%-L/usr/lib %%g" $$i ; \ + done + for i in $$(find $(STAGING_DIR)/usr/lib* -name "libQt5*.prl"); do \ + $(SED) "s%-L/usr/lib%%" $$i; \ + done +endef + +# Variable for other Qt applications to use +QT5_QMAKE = $(HOST_DIR)/bin/qmake -spec devices/linux-buildroot-g++ diff --git a/buildroot/package/qt5/qt53d/Config.in b/buildroot/package/qt5/qt53d/Config.in new file mode 100644 index 0000000..78602a7 --- /dev/null +++ b/buildroot/package/qt5/qt53d/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_QT53D + bool "qt53d" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + depends on BR2_PACKAGE_QT5_GL_AVAILABLE # qt5declarative_quick + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt53d module. + + This module was in tech preview in Qt 5.6, and promoted + to a core module in Qt 5.7.0. + + Enable the assimp package to gain the assimp sceneparser + plugin. + + http://doc.qt.io/qt-5/qt3d-index.html + +comment "qt53d module needs an OpenGL-capable backend" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE diff --git a/buildroot/package/qt5/qt53d/qt53d.hash b/buildroot/package/qt5/qt53d/qt53d.hash new file mode 100644 index 0000000..dfa595d --- /dev/null +++ b/buildroot/package/qt5/qt53d/qt53d.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qt3d-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 10d05a30e925fcad971126c7f47a5e32c39f007dab96b298b2094501f9607ffe qt3d-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qt3d-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 c89cbc12fde5a279e5b127651a194cae75003ba8113f9e7e7b24e67495ecff09 qt3d-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPL +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 9ae1959e86bd49b9680f78e0b49d4e52ae88a3f234d497e175e42a7e8ed59216 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt53d/qt53d.mk b/buildroot/package/qt5/qt53d/qt53d.mk new file mode 100644 index 0000000..557f643 --- /dev/null +++ b/buildroot/package/qt5/qt53d/qt53d.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# qt53d +# +################################################################################ + +QT53D_VERSION = $(QT5_VERSION) +QT53D_SITE = $(QT5_SITE) +QT53D_SOURCE = qt3d-opensource-src-$(QT53D_VERSION).tar.xz +QT53D_DEPENDENCIES = qt5base qt5declarative +QT53D_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_ASSIMP),y) +QT53D_DEPENDENCIES += assimp +endif + +QT53D_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0 +QT53D_LICENSE_FILES = LICENSE.GPL LICENSE.GPLv3 LICENSE.LGPLv3 + +define QT53D_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT53D_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT53D_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT53D_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/qt3d $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +ifeq ($(BR2_STATIC_LIBS),) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +# Available since 5.9 +define QT53D_INSTALL_TARGET_LATEST + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/geometryloaders $(TARGET_DIR)/usr/lib/qt/plugins + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/renderplugins $(TARGET_DIR)/usr/lib/qt/plugins +endef +endif +define QT53D_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/libQt53D*.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/sceneparsers $(TARGET_DIR)/usr/lib/qt/plugins + cp -dpfr $(STAGING_DIR)/usr/qml/Qt3D $(TARGET_DIR)/usr/qml + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick $(TARGET_DIR)/usr/qml + $(QT53D_INSTALL_TARGET_LATEST) + $(QT53D_INSTALL_TARGET_EXAMPLES) +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5base/5.6.3/0001-eglfs-rasp-pi-header-inclusion.patch b/buildroot/package/qt5/qt5base/5.6.3/0001-eglfs-rasp-pi-header-inclusion.patch new file mode 100644 index 0000000..f1f6d9b --- /dev/null +++ b/buildroot/package/qt5/qt5base/5.6.3/0001-eglfs-rasp-pi-header-inclusion.patch @@ -0,0 +1,45 @@ +From 91c3b111e45dd476aba057836b1b618eacf90f3f Mon Sep 17 00:00:00 2001 +From: Julien Corjon +Date: Tue, 21 Jul 2015 09:58:14 +0200 +Subject: [PATCH] eglfs - fix rasp-pi header inclusion + +eglplateform.h include headers for low level instruction and fail on brcm +headers inclusion + For the brcm presence test we use egl pkg-config file + For the eglfs-plugin compilation we use the egl configuration + +Upstream-Status: https://bugreports.qt.io/browse/QTBUG-47339 +Signed-off-by: Julien Corjon +--- + config.tests/qpa/eglfs-brcm/eglfs-brcm.pro | 2 ++ + src/plugins/platforms/eglfs/eglfs-plugin.pro | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/config.tests/qpa/eglfs-brcm/eglfs-brcm.pro b/config.tests/qpa/eglfs-brcm/eglfs-brcm.pro +index ce16a3a..192a8ad 100644 +--- a/config.tests/qpa/eglfs-brcm/eglfs-brcm.pro ++++ b/config.tests/qpa/eglfs-brcm/eglfs-brcm.pro +@@ -1,6 +1,8 @@ + SOURCES = eglfs-brcm.cpp + + CONFIG -= qt ++CONFIG += link_pkgconfig ++PKGCONFIG += egl + + INCLUDEPATH += $$QMAKE_INCDIR_EGL + +diff --git a/src/plugins/platforms/eglfs/eglfs-plugin.pro b/src/plugins/platforms/eglfs/eglfs-plugin.pro +index 0f493fd..8479496 100644 +--- a/src/plugins/platforms/eglfs/eglfs-plugin.pro ++++ b/src/plugins/platforms/eglfs/eglfs-plugin.pro +@@ -6,6 +6,7 @@ PLUGIN_CLASS_NAME = QEglFSIntegrationPlugin + load(qt_plugin) + + QT += platformsupport-private eglfs_device_lib-private ++CONFIG += egl + + SOURCES += $$PWD/qeglfsmain.cpp + +-- +2.1.0 + diff --git a/buildroot/package/qt5/qt5base/5.6.3/qt5base.hash b/buildroot/package/qt5/qt5base/5.6.3/qt5base.hash new file mode 100644 index 0000000..f113f82 --- /dev/null +++ b/buildroot/package/qt5/qt5base/5.6.3/qt5base.hash @@ -0,0 +1,7 @@ +# Hashes for license files: +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 66f6bb53f6d985a4d651bf1ecfe8bbcbe32b0f744708d588f047580ee85d8ec8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 68afaf3392f8c04218fbf29db43cc0b18bf651c1db086556aa584046de9f3e35 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 1d05f2662f0be7544c4cc238d0957d1ed5d0edc45210e9108f905df354241a0e header.BSD diff --git a/buildroot/package/qt5/qt5base/Config.in b/buildroot/package/qt5/qt5base/Config.in new file mode 100644 index 0000000..b5755e2 --- /dev/null +++ b/buildroot/package/qt5/qt5base/Config.in @@ -0,0 +1,293 @@ +config BR2_PACKAGE_QT5BASE + bool "qt5base" + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_PCRE if BR2_PACKAGE_QT5_VERSION_5_6 + select BR2_PACKAGE_PCRE_16 if BR2_PACKAGE_QT5_VERSION_5_6 + select BR2_PACKAGE_PCRE_UTF if BR2_PACKAGE_QT5_VERSION_5_6 + select BR2_PACKAGE_PCRE2 if BR2_PACKAGE_QT5_VERSION_LATEST + select BR2_PACKAGE_PCRE2_16 if BR2_PACKAGE_QT5_VERSION_LATEST + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5base module, which + contains the base Qt libraries: QtCore, QtNetwork, QtGui, + QtWidgets, etc. + + http://qt.io + +if BR2_PACKAGE_QT5BASE + +config BR2_PACKAGE_QT5BASE_CUSTOM_CONF_OPTS + string "Custom configuration options" + help + Define custom qt5 configuration options which can be used to + enable or disable options not managed by buildroot. These + options are appended to the ones generated by buildroot and + passed to qt5base during configuration. + + E.g. to remove the Windows Vista style option, add the option + -no-feature-style_windowsvista. + +config BR2_PACKAGE_QT5BASE_CONFIG_FILE + string "Config file" + help + Configure options allow to set which modules are being + compiled or not in Qt, but Qt also provide a more + fine-grained mechanism to configure which features should be + enabled or disabled, through a header file. Examples of such + header files can be found in src/corelib/global/qconfig-*.h + in the Qt sources. + + This option allows to set the path of such a configuration + file, which Buildroot will give to Qt at compile time. + +config BR2_PACKAGE_QT5BASE_EXAMPLES + bool "Compile and install examples (with code)" + select BR2_PACKAGE_QT5BASE_NETWORK + select BR2_PACKAGE_QT5BASE_XML + help + If unsure, say N. + +config BR2_PACKAGE_QT5BASE_NETWORK + def_bool y + +config BR2_PACKAGE_QT5BASE_CONCURRENT + bool "concurrent module" + help + This options enables the Qt5Concurrent library. + +config BR2_PACKAGE_QT5BASE_SQL + def_bool y + +if BR2_PACKAGE_QT5BASE_SQL +config BR2_PACKAGE_QT5BASE_MYSQL + bool "MySQL Plugin" + depends on BR2_USE_MMU # mysql + select BR2_PACKAGE_MYSQL + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + Build MySQL plugin + If unsure, say n. + +config BR2_PACKAGE_QT5BASE_PSQL + bool "PostgreSQL Plugin" + depends on BR2_USE_MMU # postgresql + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_POSTGRESQL + help + Build PostgreSQL plugin + If unsure, say n. + +comment "PostgreSQL plugin needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS + +choice + prompt "SQLite 3 support" + default BR2_PACKAGE_QT5BASE_SQLITE_NONE + help + Select SQLite support. + +config BR2_PACKAGE_QT5BASE_SQLITE_NONE + bool "No sqlite support" + help + Do not compile any kind of SQLite support. + +config BR2_PACKAGE_QT5BASE_SQLITE_QT + bool "Qt SQLite" + help + Use Qt bundled SQLite support. + +config BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM + bool "System SQLite" + select BR2_PACKAGE_SQLITE + help + Use system SQLite. + +endchoice + +endif + +config BR2_PACKAGE_QT5BASE_TEST + def_bool y + +config BR2_PACKAGE_QT5BASE_XML + def_bool y + +config BR2_PACKAGE_QT5BASE_GUI + bool "gui module" + select BR2_PACKAGE_FREETYPE + # At least one graphic backend must be enabled, so enable + # linuxfb if nothing is enabled. + select BR2_PACKAGE_QT5BASE_LINUXFB if \ + !BR2_PACKAGE_QT5BASE_DIRECTFB && \ + !BR2_PACKAGE_QT5BASE_XCB && \ + !BR2_PACKAGE_QT5BASE_EGLFS + help + This option enables the Qt5Gui library. + +if BR2_PACKAGE_QT5BASE_GUI + +config BR2_PACKAGE_QT5BASE_WIDGETS + bool "widgets module" + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB + help + This option enables the Qt5Widgets library. + +comment "OpenGL support needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE + +config BR2_PACKAGE_QT5BASE_OPENGL + bool "OpenGL support" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + help + This option enables OpenGL support. + +if BR2_PACKAGE_QT5BASE_OPENGL + +choice + prompt "OpenGL API" + help + Select OpenGL API. + +config BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP + bool "Desktop OpenGL" + depends on BR2_PACKAGE_HAS_LIBGL + help + Use desktop OpenGL. + +config BR2_PACKAGE_QT5BASE_OPENGL_ES2 + bool "OpenGL ES 2.0+" + depends on BR2_PACKAGE_HAS_LIBGLES + help + Use OpenGL ES 2.0 and later versions. + +endchoice + +config BR2_PACKAGE_QT5BASE_OPENGL_LIB + bool "opengl module" + select BR2_PACKAGE_QT5BASE_WIDGETS + help + This option enables the Qt5OpenGL library. This library + includes OpenGL support classes provided to ease porting + from Qt 4.x. + +endif + +config BR2_PACKAGE_QT5BASE_LINUXFB + bool "linuxfb support" + +config BR2_PACKAGE_QT5BASE_DIRECTFB + bool "directfb support" + depends on BR2_PACKAGE_DIRECTFB + +comment "directfb backend available if directfb is enabled" + depends on !BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_QT5BASE_XCB + bool "X.org XCB support" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL_IMAGE + select BR2_PACKAGE_XCB_UTIL_KEYSYMS + select BR2_PACKAGE_XCB_UTIL_WM + select BR2_PACKAGE_LIBXKBCOMMON + +comment "X.org XCB backend available if X.org is enabled" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_QT5BASE_EGLFS + bool "eglfs support" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + select BR2_PACKAGE_QT5BASE_OPENGL + +comment "eglfs backend available if OpenGL and EGL are enabled" + depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_QT5_GL_AVAILABLE + +config BR2_PACKAGE_QT5BASE_DEFAULT_QPA + string "Default graphical platform" + help + Choose the default platform abstraction to use for graphical + applications (e.g xcb, linuxfb, eglfs, ...). If this is + empty, the default for your architecture will be used + (usually this is eglfs). + + You can get a list of supported platforms by running a Qt + application with the option "-platform help" on your + target. You can choose a different platform at runtime with + the -platform option. + +config BR2_PACKAGE_QT5BASE_PRINTSUPPORT + depends on BR2_PACKAGE_QT5BASE_WIDGETS + def_bool y + +config BR2_PACKAGE_QT5BASE_FONTCONFIG + bool "fontconfig support" + select BR2_PACKAGE_FONTCONFIG + help + This option enables Fontconfig and Freetype support using + the system fontconfig and freetype2 libraries. + +config BR2_PACKAGE_QT5BASE_HARFBUZZ + bool "harfbuzz support" + select BR2_PACKAGE_HARFBUZZ if BR2_TOOLCHAIN_HAS_SYNC_4 + help + This option enables HarfBuzz support (either system harfbuzz + if the toolchain supports __sync for 4 bytes, or the qt + provided one which avoids this dependency by using QAtomic). + +config BR2_PACKAGE_QT5BASE_GIF + bool "GIF support" + help + This compiles and installs the plugin for GIF reading support. + +config BR2_PACKAGE_QT5BASE_JPEG + bool "JPEG support" + select BR2_PACKAGE_JPEG + help + This option enables JPEG support using the system libjpeg + library. + +config BR2_PACKAGE_QT5BASE_PNG + bool "PNG support" + select BR2_PACKAGE_LIBPNG + help + This option enables PNG support using the system libpng + library. + +endif + +config BR2_PACKAGE_QT5BASE_DBUS + bool "DBus module" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + select BR2_PACKAGE_DBUS + help + This option enables the D-Bus module. + +config BR2_PACKAGE_QT5BASE_ICU + bool "Enable ICU support" + depends on BR2_HOST_GCC_AT_LEAST_4_8 # icu + depends on !BR2_BINFMT_FLAT # icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # icu + select BR2_PACKAGE_ICU + help + This option enables ICU support in Qt5. This is for example + needed for Qt5Webkit. + +comment "icu support needs a toolchain w/ gcc >= 4.8, host gcc >= 4.8" + depends on !BR2_BINFMT_FLAT + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_HOST_GCC_AT_LEAST_4_8 + +config BR2_PACKAGE_QT5BASE_TSLIB + bool "Enable Tslib support" + select BR2_PACKAGE_TSLIB + help + This options enables the Tslib plugin + +endif diff --git a/buildroot/package/qt5/qt5base/qmake.conf.in b/buildroot/package/qt5/qt5base/qmake.conf.in new file mode 100644 index 0000000..f14527a --- /dev/null +++ b/buildroot/package/qt5/qt5base/qmake.conf.in @@ -0,0 +1,30 @@ +# Qt5 has a mechanism to support "device" profiles, so that people can +# specify the compiler, compiler flags and so on for a specific device. + +# We leverage this mechanism in the Buildroot packaging of qt5 to +# simplify cross-compilation: we have our own "device" definition, which +# allows us to easily pass the cross-compiler paths and flags from our +# qt5.mk. + +include(../common/linux_device_pre.conf) + +# modifications to g++-unix.conf +QMAKE_CC = $${CROSS_COMPILE}gcc +QMAKE_CXX = $${CROSS_COMPILE}g++ + +# modifications to gcc-base.conf +QMAKE_CFLAGS += $${BR_COMPILER_CFLAGS} +QMAKE_CXXFLAGS += $${BR_COMPILER_CXXFLAGS} +QMAKE_CXXFLAGS_RELEASE += -O3 +CONFIG += nostrip + +QMAKE_LIBS += -lrt -lpthread -ldl +QMAKE_CFLAGS_ISYSTEM = + +# Architecture specific configuration +include(arch.conf) + +@EGLFS_DEVICE@ + +include(../common/linux_device_post.conf) +load(qt_config) diff --git a/buildroot/package/qt5/qt5base/qplatformdefs.h b/buildroot/package/qt5/qt5base/qplatformdefs.h new file mode 100644 index 0000000..99e9a27 --- /dev/null +++ b/buildroot/package/qt5/qt5base/qplatformdefs.h @@ -0,0 +1 @@ +#include "../../linux-g++/qplatformdefs.h" diff --git a/buildroot/package/qt5/qt5base/qt.conf.in b/buildroot/package/qt5/qt5base/qt.conf.in new file mode 100644 index 0000000..9a0b9cd --- /dev/null +++ b/buildroot/package/qt5/qt5base/qt.conf.in @@ -0,0 +1,19 @@ +[Paths] +Prefix=@@HOST_DIR@@ +Sysroot=@@STAGING_DIR@@ +Headers=/usr/include/qt5 +Libraries=/usr/lib +LibraryExecutables=/usr/libexec +Binaries=/usr/bin +Plugins=/usr/lib/qt/plugins +Examples=/usr/lib/qt/examples +Qml2Imports=/usr/qml +Imports=/usr/imports +Translations=/usr/translations +Examples=/usr/lib/qt/examples +Demos=/usr/lib/qt/examples +Tests=/usr/tests +Settings=/usr +Documentation=/usr/doc +ArchData=/usr +Data=/usr diff --git a/buildroot/package/qt5/qt5base/qt5base.hash b/buildroot/package/qt5/qt5base/qt5base.hash new file mode 100644 index 0000000..950785c --- /dev/null +++ b/buildroot/package/qt5/qt5base/qt5base.hash @@ -0,0 +1,14 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtbase-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 fef48529a6fc2617a30d75d952cb327c6be341fd104154993922184b3b3b4da1 qtbase-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtbase-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 eed620cb268b199bd83b3fc6a471c51d51e1dc2dbb5374fc97a0cc75facbe36f qtbase-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 68afaf3392f8c04218fbf29db43cc0b18bf651c1db086556aa584046de9f3e35 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 8fdefa0b45d9f791f687da6c2c4c83c1b701aaee2c08008f55d522af214b88f0 header.BSD +sha256 2a886915de4f296cdae5ed67064f86dba01d0c55286d86e8487f2a5caaf40216 src/3rdparty/harfbuzz-ng/COPYING diff --git a/buildroot/package/qt5/qt5base/qt5base.mk b/buildroot/package/qt5/qt5base/qt5base.mk new file mode 100644 index 0000000..53c98ce --- /dev/null +++ b/buildroot/package/qt5/qt5base/qt5base.mk @@ -0,0 +1,356 @@ +################################################################################ +# +# qt5base +# +################################################################################ + +QT5BASE_VERSION = $(QT5_VERSION) +QT5BASE_SITE = $(QT5_SITE) +QT5BASE_SOURCE = qtbase-opensource-src-$(QT5BASE_VERSION).tar.xz + +QT5BASE_DEPENDENCIES = host-pkgconf zlib +QT5BASE_INSTALL_STAGING = YES + +# A few comments: +# * -no-pch to workaround the issue described at +# http://comments.gmane.org/gmane.comp.lib.qt.devel/5933. +# * -system-zlib because zlib is mandatory for Qt build, and we +# want to use the Buildroot packaged zlib +# * -system-pcre because pcre is mandatory to build Qt, and we +# want to use the one packaged in Buildroot +QT5BASE_CONFIGURE_OPTS += \ + -optimized-qmake \ + -no-cups \ + -no-iconv \ + -system-zlib \ + -system-pcre \ + -no-pch \ + -shared + +ifeq ($(BR2_PACKAGE_QT5_VERSION_5_6),y) +QT5BASE_DEPENDENCIES += pcre +else +QT5BASE_DEPENDENCIES += pcre2 +endif + +QT5BASE_CONFIGURE_OPTS += $(call qstrip,$(BR2_PACKAGE_QT5BASE_CUSTOM_CONF_OPTS)) + +# Uses libgbm from mesa3d +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) +QT5BASE_CONFIGURE_OPTS += -kms -gbm +QT5BASE_DEPENDENCIES += mesa3d +else +QT5BASE_CONFIGURE_OPTS += -no-kms +endif + +ifeq ($(BR2_ENABLE_DEBUG),y) +QT5BASE_CONFIGURE_OPTS += -debug +else +QT5BASE_CONFIGURE_OPTS += -release +endif + +ifeq ($(BR2_PACKAGE_QT5_VERSION_5_6),y) +QT5BASE_CONFIGURE_OPTS += -largefile +endif + +QT5BASE_CONFIGURE_OPTS += -opensource -confirm-license +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5BASE_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5BASE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else +QT5BASE_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5BASE_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5BASE_LICENSE := $(QT5BASE_LICENSE), BSD-3-Clause (examples) +QT5BASE_LICENSE_FILES += header.BSD +endif + +QT5BASE_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_QT5BASE_CONFIG_FILE)) + +ifneq ($(QT5BASE_CONFIG_FILE),) +QT5BASE_CONFIGURE_OPTS += -qconfig buildroot +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +QT5BASE_DEPENDENCIES += udev +endif + +# Qt5 SQL Plugins +ifeq ($(BR2_PACKAGE_QT5BASE_SQL),y) +ifeq ($(BR2_PACKAGE_QT5BASE_MYSQL),y) +QT5BASE_CONFIGURE_OPTS += -plugin-sql-mysql -mysql_config $(STAGING_DIR)/usr/bin/mysql_config +QT5BASE_DEPENDENCIES += mysql +else +QT5BASE_CONFIGURE_OPTS += -no-sql-mysql +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_PSQL),y) +QT5BASE_CONFIGURE_OPTS += -plugin-sql-psql -psql_config $(STAGING_DIR)/usr/bin/pg_config +QT5BASE_DEPENDENCIES += postgresql +else +QT5BASE_CONFIGURE_OPTS += -no-sql-psql +endif + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_QT),-plugin-sql-sqlite) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM),-system-sqlite) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM),sqlite) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_SQLITE_NONE),-no-sql-sqlite) +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_GUI),y) +QT5BASE_CONFIGURE_OPTS += -gui -system-freetype +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5_VERSION_5_6),-I$(STAGING_DIR)/usr/include/freetype2) +QT5BASE_DEPENDENCIES += freetype +else +QT5BASE_CONFIGURE_OPTS += -no-gui -no-freetype +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_HARFBUZZ),y) +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),y) +# system harfbuzz in case __sync for 4 bytes is supported +QT5BASE_CONFIGURE_OPTS += -system-harfbuzz +QT5BASE_DEPENDENCIES += harfbuzz +else +# qt harfbuzz otherwise (using QAtomic instead) +QT5BASE_CONFIGURE_OPTS += -qt-harfbuzz +QT5BASE_LICENSE := $(QT5BASE_LICENSE), MIT (harfbuzz) +QT5BASE_LICENSE_FILES += src/3rdparty/harfbuzz-ng/COPYING +endif +else +QT5BASE_CONFIGURE_OPTS += -no-harfbuzz +endif + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_WIDGETS),-widgets,-no-widgets) +# We have to use --enable-linuxfb, otherwise Qt thinks that -linuxfb +# is to add a link against the "inuxfb" library. +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_LINUXFB),--enable-linuxfb,-no-linuxfb) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_DIRECTFB),-directfb,-no-directfb) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_DIRECTFB),directfb) + +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y) +QT5BASE_CONFIGURE_OPTS += -xcb -system-xkbcommon +QT5BASE_DEPENDENCIES += \ + libxcb \ + xcb-util-wm \ + xcb-util-image \ + xcb-util-keysyms \ + xlib_libX11 \ + libxkbcommon +ifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y) +QT5BASE_DEPENDENCIES += xlib_libXext +endif +else +QT5BASE_CONFIGURE_OPTS += -no-xcb +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP),y) +QT5BASE_CONFIGURE_OPTS += -opengl desktop +QT5BASE_DEPENDENCIES += libgl +else ifeq ($(BR2_PACKAGE_QT5BASE_OPENGL_ES2),y) +QT5BASE_CONFIGURE_OPTS += -opengl es2 +QT5BASE_DEPENDENCIES += libgles +else +QT5BASE_CONFIGURE_OPTS += -no-opengl +endif + +QT5BASE_DEFAULT_QPA = $(call qstrip,$(BR2_PACKAGE_QT5BASE_DEFAULT_QPA)) +QT5BASE_CONFIGURE_OPTS += $(if $(QT5BASE_DEFAULT_QPA),-qpa $(QT5BASE_DEFAULT_QPA)) + +ifeq ($(BR2_PACKAGE_QT5BASE_EGLFS),y) +QT5BASE_CONFIGURE_OPTS += -eglfs +QT5BASE_DEPENDENCIES += libegl +else +QT5BASE_CONFIGURE_OPTS += -no-eglfs +endif + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_OPENSSL),-openssl,-no-openssl) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_OPENSSL),openssl) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_FONTCONFIG),-fontconfig,-no-fontconfig) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_FONTCONFIG),fontconfig) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_GIF),,-no-gif) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_JPEG),-system-libjpeg,-no-libjpeg) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_JPEG),jpeg) +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_PNG),-system-libpng,-no-libpng) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_PNG),libpng) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_DBUS),-dbus,-no-dbus) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_DBUS),dbus) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_TSLIB),-tslib,-no-tslib) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_TSLIB),tslib) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_LIBGLIB2),-glib,-no-glib) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBGLIB2),libglib2) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_ICU),-icu,-no-icu) +QT5BASE_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5BASE_ICU),icu) + +QT5BASE_CONFIGURE_OPTS += $(if $(BR2_PACKAGE_QT5BASE_EXAMPLES),-make,-nomake) examples + +ifeq ($(BR2_PACKAGE_QT5_VERSION_5_6),y) +# gstreamer 0.10 support is broken in qt5multimedia +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) +QT5BASE_CONFIGURE_OPTS += -gstreamer 1.0 +QT5BASE_DEPENDENCIES += gst1-plugins-base +else +QT5BASE_CONFIGURE_OPTS += -no-gstreamer +endif +endif + +ifeq ($(BR2_PACKAGE_LIBINPUT),y) +QT5BASE_CONFIGURE_OPTS += -libinput +QT5BASE_DEPENDENCIES += libinput +else +QT5BASE_CONFIGURE_OPTS += -no-libinput +endif + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +# only enable gtk support if libgtk3 X11 backend is enabled +ifeq ($(BR2_PACKAGE_LIBGTK3)$(BR2_PACKAGE_LIBGTK3_X11),yy) +QT5BASE_CONFIGURE_OPTS += -gtk +QT5BASE_DEPENDENCIES += libgtk3 +else +QT5BASE_CONFIGURE_OPTS += -no-gtk +endif +endif + +# Build the list of libraries to be installed on the target +QT5BASE_INSTALL_LIBS_y += Qt5Core +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_XCB) += Qt5XcbQpa +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_NETWORK) += Qt5Network +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_CONCURRENT) += Qt5Concurrent +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_SQL) += Qt5Sql +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_TEST) += Qt5Test +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_XML) += Qt5Xml +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_OPENGL_LIB) += Qt5OpenGL +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_EGLFS) += Qt5EglFSDeviceIntegration +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y) +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_EGLFS) += Qt5EglFsKmsSupport +endif +else +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_EGLFS) += Qt5EglDeviceIntegration +endif + +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_GUI) += Qt5Gui +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_WIDGETS) += Qt5Widgets +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_PRINTSUPPORT) += Qt5PrintSupport + +QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_DBUS) += Qt5DBus + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST)$(BR2_PACKAGE_IMX_GPU_VIV),yy) +# use vivante backend +QT5BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_viv +endif + +ifneq ($(QT5BASE_CONFIG_FILE),) +define QT5BASE_CONFIGURE_CONFIG_FILE + cp $(QT5BASE_CONFIG_FILE) $(@D)/src/corelib/global/qconfig-buildroot.h +endef +endif + +QT5BASE_ARCH_CONFIG_FILE = $(@D)/mkspecs/devices/linux-buildroot-g++/arch.conf +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC)$(BR2_PACKAGE_QT5_VERSION_LATEST),yy) +# Qt 5.8 needs atomics, which on various architectures are in -latomic +define QT5BASE_CONFIGURE_ARCH_CONFIG + printf 'LIBS += -latomic\n' >$(QT5BASE_ARCH_CONFIG_FILE) +endef +endif + +define QT5BASE_CONFIGURE_CMDS + mkdir -p $(@D)/mkspecs/devices/linux-buildroot-g++/ + sed 's/@EGLFS_DEVICE@/$(QT5BASE_EGLFS_DEVICE)/g' \ + $(QT5BASE_PKGDIR)/qmake.conf.in > \ + $(@D)/mkspecs/devices/linux-buildroot-g++/qmake.conf + $(INSTALL) -m 0644 -D $(QT5BASE_PKGDIR)/qplatformdefs.h \ + $(@D)/mkspecs/devices/linux-buildroot-g++/qplatformdefs.h + $(QT5BASE_CONFIGURE_CONFIG_FILE) + touch $(QT5BASE_ARCH_CONFIG_FILE) + $(QT5BASE_CONFIGURE_ARCH_CONFIG) + (cd $(@D); \ + $(TARGET_MAKE_ENV) \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + PKG_CONFIG_LIBDIR="$(STAGING_DIR)/usr/lib/pkgconfig" \ + PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \ + MAKEFLAGS="$(MAKEFLAGS) -j$(PARALLEL_JOBS)" \ + ./configure \ + -v \ + -prefix /usr \ + -hostprefix $(HOST_DIR) \ + -headerdir /usr/include/qt5 \ + -sysroot $(STAGING_DIR) \ + -plugindir /usr/lib/qt/plugins \ + -examplesdir /usr/lib/qt/examples \ + -no-rpath \ + -nomake tests \ + -device buildroot \ + -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ + -device-option BR_COMPILER_CFLAGS="$(TARGET_CFLAGS) $(QT5BASE_EXTRA_CFLAGS)" \ + -device-option BR_COMPILER_CXXFLAGS="$(TARGET_CXXFLAGS) $(QT5BASE_EXTRA_CFLAGS)" \ + $(QT5BASE_CONFIGURE_OPTS) \ + ) +endef + +define QT5BASE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +# The file "qt.conf" can be used to override the hard-coded paths that are +# compiled into the Qt library. We need it to make "qmake" relocatable. +define QT5BASE_INSTALL_QT_CONF + sed -e "s|@@HOST_DIR@@|$(HOST_DIR)|" -e "s|@@STAGING_DIR@@|$(STAGING_DIR)|" \ + $(QT5BASE_PKGDIR)/qt.conf.in > $(HOST_DIR)/bin/qt.conf +endef + +define QT5BASE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) + $(QT5BASE_INSTALL_QT_CONF) +endef + +define QT5BASE_INSTALL_TARGET_LIBS + for lib in $(QT5BASE_INSTALL_LIBS_y); do \ + cp -dpf $(STAGING_DIR)/usr/lib/lib$${lib}.so.* $(TARGET_DIR)/usr/lib || exit 1 ; \ + done +endef + +define QT5BASE_INSTALL_TARGET_PLUGINS + if [ -d $(STAGING_DIR)/usr/lib/qt/plugins/ ] ; then \ + mkdir -p $(TARGET_DIR)/usr/lib/qt/plugins ; \ + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/* $(TARGET_DIR)/usr/lib/qt/plugins ; \ + fi +endef + +ifeq ($(BR2_PACKAGE_QT5_VERSION_5_6),y) +define QT5BASE_INSTALL_TARGET_FONTS + if [ -d $(STAGING_DIR)/usr/lib/fonts/ ] ; then \ + mkdir -p $(TARGET_DIR)/usr/lib/fonts ; \ + cp -dpfr $(STAGING_DIR)/usr/lib/fonts/* $(TARGET_DIR)/usr/lib/fonts ; \ + fi +endef +endif + +define QT5BASE_INSTALL_TARGET_EXAMPLES + if [ -d $(STAGING_DIR)/usr/lib/qt/examples/ ] ; then \ + mkdir -p $(TARGET_DIR)/usr/lib/qt/examples ; \ + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/* $(TARGET_DIR)/usr/lib/qt/examples ; \ + fi +endef + +ifeq ($(BR2_STATIC_LIBS),y) +define QT5BASE_INSTALL_TARGET_CMDS + $(QT5BASE_INSTALL_TARGET_FONTS) + $(QT5BASE_INSTALL_TARGET_EXAMPLES) +endef +else +define QT5BASE_INSTALL_TARGET_CMDS + $(QT5BASE_INSTALL_TARGET_LIBS) + $(QT5BASE_INSTALL_TARGET_PLUGINS) + $(QT5BASE_INSTALL_TARGET_FONTS) + $(QT5BASE_INSTALL_TARGET_EXAMPLES) +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5canvas3d/Config.in b/buildroot/package/qt5/qt5canvas3d/Config.in new file mode 100644 index 0000000..04c0473 --- /dev/null +++ b/buildroot/package/qt5/qt5canvas3d/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_QT5CANVAS3D + bool "qt5canvas3d" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Canvas 3D module provides a way to make WebGL-like + 3D drawing calls from Qt Quick JavaScript. + + http://doc.qt.io/qt-5/qtcanvas3d-index.html + +comment "qt5canvas3d needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE diff --git a/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash b/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash new file mode 100644 index 0000000..be353fb --- /dev/null +++ b/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtcanvas3d-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 e99e0e159f2fba539b7947a1921072f6807f20958d32809edbf12aac571f56ff qtcanvas3d-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtcanvas3d-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 9da45991f62152c2c76931aed8a6059375fdce441b38752991e1ad2c77507c22 qtcanvas3d-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.mk b/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.mk new file mode 100644 index 0000000..97b0ec4 --- /dev/null +++ b/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# qt5canvas3d +# +################################################################################ + +QT5CANVAS3D_VERSION = $(QT5_VERSION) +QT5CANVAS3D_SITE = $(QT5_SITE) +QT5CANVAS3D_SOURCE = qtcanvas3d-opensource-src-$(QT5CANVAS3D_VERSION).tar.xz +QT5CANVAS3D_DEPENDENCIES = qt5base qt5declarative +QT5CANVAS3D_INSTALL_STAGING = YES + +QT5CANVAS3D_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0 +QT5CANVAS3D_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv3 + +define QT5CANVAS3D_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5CANVAS3D_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5CANVAS3D_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +define QT5CANVAS3D_INSTALL_TARGET_CMDS + cp -dpfr $(STAGING_DIR)/usr/qml/QtCanvas3D $(TARGET_DIR)/usr/qml/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5charts/Config.in b/buildroot/package/qt5/qt5charts/Config.in new file mode 100644 index 0000000..78f08fe --- /dev/null +++ b/buildroot/package/qt5/qt5charts/Config.in @@ -0,0 +1,17 @@ +comment "qt5charts needs at least qt-5.7" + depends on !BR2_PACKAGE_QT5_VERSION_LATEST + +config BR2_PACKAGE_QT5CHARTS + bool "qt5charts" + depends on BR2_PACKAGE_QT5_VERSION_LATEST + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Charts module provides a set of easy to use chart + components. + + https://doc.qt.io/qt-5/qtcharts-index.html diff --git a/buildroot/package/qt5/qt5charts/qt5charts.hash b/buildroot/package/qt5/qt5charts/qt5charts.hash new file mode 100644 index 0000000..84e8959 --- /dev/null +++ b/buildroot/package/qt5/qt5charts/qt5charts.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtcharts-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 5fd60f08b1815b0e7b813c75a0ec726bffc7cc686b160bebf1e710e882ceadab qtcharts-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 diff --git a/buildroot/package/qt5/qt5charts/qt5charts.mk b/buildroot/package/qt5/qt5charts/qt5charts.mk new file mode 100644 index 0000000..c15e4e0 --- /dev/null +++ b/buildroot/package/qt5/qt5charts/qt5charts.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# qt5charts +# +################################################################################ + +QT5CHARTS_VERSION = $(QT5_VERSION) +QT5CHARTS_SITE = $(QT5_SITE) +QT5CHARTS_SOURCE = qtcharts-opensource-src-$(QT5CHARTS_VERSION).tar.xz +QT5CHARTS_DEPENDENCIES = qt5base +QT5CHARTS_INSTALL_STAGING = YES + +QT5CHARTS_LICENSE = GPL-3.0 +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5CHARTS_LICENSE_FILES = LICENSE.GPL3 +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5CHARTS_DEPENDENCIES += qt5declarative +endif + +define QT5CHARTS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5CHARTS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5CHARTS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define QT5CHARTS_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Charts*.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/* $(TARGET_DIR)/usr/lib/qt/plugins +endef +endif + +# this is only built with quick support enabled +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +define QT5CHARTS_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtCharts $(TARGET_DIR)/usr/qml/ +endef +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5CHARTS_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/charts* $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +define QT5CHARTS_INSTALL_TARGET_CMDS + $(QT5CHARTS_INSTALL_TARGET_LIBS) + $(QT5CHARTS_INSTALL_TARGET_QMLS) + $(QT5CHARTS_INSTALL_TARGET_EXAMPLES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5connectivity/Config.in b/buildroot/package/qt5/qt5connectivity/Config.in new file mode 100644 index 0000000..8bda8de --- /dev/null +++ b/buildroot/package/qt5/qt5connectivity/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_QT5CONNECTIVITY + bool "qt5connectivity" + depends on BR2_PACKAGE_NEARD || BR2_PACKAGE_BLUEZ_UTILS || BR2_PACKAGE_BLUEZ5_UTILS + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_CONCURRENT + select BR2_PACKAGE_QT5BASE_DBUS + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Connectivity module provides support for Bluetooth/NFC + peripherials. + + http://doc.qt.io/qt-5/qtbluetooth-index.html + http://doc.qt.io/qt-5/qtnfc-index.html + +comment "qt5connectivity needs neard and/or bluez(5)_utils" + depends on !BR2_PACKAGE_NEARD && !BR2_PACKAGE_BLUEZ_UTILS && \ + !BR2_PACKAGE_BLUEZ5_UTILS diff --git a/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash b/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash new file mode 100644 index 0000000..1da448a --- /dev/null +++ b/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtconnectivity-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 fa406e3d63fa4a2acc8ecae6d110f20c766f19a21c7061a12f3c167deb07ccde qtconnectivity-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtconnectivity-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 6c696855c2d4e63709ba81d22c85cab30f66418eac2fb2810a02a4b47a531c57 qtconnectivity-opensource-src-5.9.6.tar.xz diff --git a/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk b/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk new file mode 100644 index 0000000..4369a41 --- /dev/null +++ b/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk @@ -0,0 +1,87 @@ +################################################################################ +# +# qt5connectivity +# +################################################################################ + +QT5CONNECTIVITY_VERSION = $(QT5_VERSION) +QT5CONNECTIVITY_SITE = $(QT5_SITE) +QT5CONNECTIVITY_SOURCE = qtconnectivity-opensource-src-$(QT5CONNECTIVITY_VERSION).tar.xz +QT5CONNECTIVITY_DEPENDENCIES = qt5base +QT5CONNECTIVITY_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5CONNECTIVITY_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5CONNECTIVITY_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +else +QT5CONNECTIVITY_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5CONNECTIVITY_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5CONNECTIVITY_LICENSE := $(QT5CONNECTIVITY_LICENSE), BSD-3-Clause (examples) +endif + +QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5DECLARATIVE),qt5declarative) +QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_BLUEZ_UTILS),bluez_utils) +QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_BLUEZ5_UTILS),bluez5_utils) +QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_NEARD),neard) + +define QT5CONNECTIVITY_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5CONNECTIVITY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5CONNECTIVITY_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +ifneq ($(BR2_PACKAGE_BLUEZ_UTILS)$(BR2_PACKAGE_BLUEZ5_UTILS),) +define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtBluetooth $(TARGET_DIR)/usr/qml/ +endef +endif +ifeq ($(BR2_PACKAGE_NEARD),y) +define QT5CONNECTIVITY_INSTALL_TARGET_NFC_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtNfc $(TARGET_DIR)/usr/qml/ +endef +endif +endif + +ifneq ($(BR2_PACKAGE_BLUEZ_UTILS)$(BR2_PACKAGE_BLUEZ5_UTILS),) +define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Bluetooth.so.* $(TARGET_DIR)/usr/lib + cp -dpf $(STAGING_DIR)/usr/bin/sdpscanner $(TARGET_DIR)/usr/bin +endef +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/bluetooth $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif +endif + +ifeq ($(BR2_PACKAGE_NEARD),y) +define QT5CONNECTIVITY_INSTALL_TARGET_NFC + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Nfc.so.* $(TARGET_DIR)/usr/lib +endef +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5CONNECTIVITY_INSTALL_TARGET_NFC_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/nfc $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif +endif + +define QT5CONNECTIVITY_INSTALL_TARGET_CMDS + $(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH) + $(QT5CONNECTIVITY_INSTALL_TARGET_NFC) + $(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_QMLS) + $(QT5CONNECTIVITY_INSTALL_TARGET_NFC_QMLS) + $(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_EXAMPLES) + $(QT5CONNECTIVITY_INSTALL_TARGET_NFC_EXAMPLES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5declarative/5.6.3/0001-examples-photoviewer-needs-widgets-support.patch b/buildroot/package/qt5/qt5declarative/5.6.3/0001-examples-photoviewer-needs-widgets-support.patch new file mode 100644 index 0000000..aeaaa91 --- /dev/null +++ b/buildroot/package/qt5/qt5declarative/5.6.3/0001-examples-photoviewer-needs-widgets-support.patch @@ -0,0 +1,32 @@ +From b616a7e2a7e03e2eb189dca3dc428c0e19e1652b Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 6 Apr 2017 21:53:40 +0200 +Subject: [PATCH] examples: photoviewer needs widgets support + +Fixes: + + .../qt5declarative-5.8.0/examples/quick/demos/photoviewer/photoviewer.pro + Project ERROR: Unknown module(s) in QT: widgets + +Signed-off-by: Peter Seiderer +--- + examples/quick/demos/demos.pro | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/examples/quick/demos/demos.pro b/examples/quick/demos/demos.pro +index 0644b81a2..5a6fd52ba 100644 +--- a/examples/quick/demos/demos.pro ++++ b/examples/quick/demos/demos.pro +@@ -7,5 +7,7 @@ SUBDIRS = samegame \ + photosurface \ + stocqt + +-qtHaveModule(xmlpatterns): SUBDIRS += rssnews photoviewer +- ++qtHaveModule(xmlpatterns) { ++ SUBDIRS += rssnews ++ qtHaveModule(widgets): SUBDIRS += photoviewer ++} +-- +2.11.0 + diff --git a/buildroot/package/qt5/qt5declarative/5.6.3/0002-examples-qquickviewcomparison-and-quickwidget-needs-.patch b/buildroot/package/qt5/qt5declarative/5.6.3/0002-examples-qquickviewcomparison-and-quickwidget-needs-.patch new file mode 100644 index 0000000..7959d38 --- /dev/null +++ b/buildroot/package/qt5/qt5declarative/5.6.3/0002-examples-qquickviewcomparison-and-quickwidget-needs-.patch @@ -0,0 +1,64 @@ +From b4db5c6cef877b33b5e7cd5a07fe4a7e6797dcfc Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Tue, 16 May 2017 19:47:19 +0200 +Subject: [PATCH] examples: qquickviewcomparison and quickwidget needs OpenGL + support + +Fixes: + + main.cpp:(.text._ZN11QQmlPrivate10createIntoI6FbItemEEvPv[_ZN11QQmlPrivate10createIntoI6FbItemEEvPv]+0x18): undefined reference to `QQuickFramebufferObject::QQuickFramebufferObject(QQuickItem*)' + .obj/main.o: In function `QQmlPrivate::QQmlElement::~QQmlElement()': + main.cpp:(.text._ZN11QQmlPrivate11QQmlElementI6FbItemED2Ev[_ZN11QQmlPrivate11QQmlElementI6FbItemED5Ev]+0x5c): undefined reference to `vtable for QQuickFramebufferObject' + .obj/main.o: In function `QQmlPrivate::QQmlElement::~QQmlElement()': + main.cpp:(.text._ZN11QQmlPrivate11QQmlElementI6FbItemED0Ev[_ZN11QQmlPrivate11QQmlElementI6FbItemED0Ev]+0x64): undefined reference to `vtable for QQuickFramebufferObject' + .obj/main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI6FbItemEE[_ZTVN11QQmlPrivate11QQmlElementI6FbItemEE]+0x48): undefined reference to `QQuickFramebufferObject::isTextureProvider() const' + .obj/main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI6FbItemEE[_ZTVN11QQmlPrivate11QQmlElementI6FbItemEE]+0x4c): undefined reference to `QQuickFramebufferObject::textureProvider() const' + .obj/main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI6FbItemEE[_ZTVN11QQmlPrivate11QQmlElementI6FbItemEE]+0xb4): undefined reference to `QQuickFramebufferObject::geometryChanged(QRectF const&, QRectF const&)' + .obj/main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI6FbItemEE[_ZTVN11QQmlPrivate11QQmlElementI6FbItemEE]+0xb8): undefined reference to `QQuickFramebufferObject::updatePaintNode(QSGNode*, QQuickItem::UpdatePaintNodeData*)' + .obj/main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI6FbItemEE[_ZTVN11QQmlPrivate11QQmlElementI6FbItemEE]+0xbc): undefined reference to `QQuickFramebufferObject::releaseResources()' + .obj/moc_fbitem.o: In function `FbItem::qt_metacast(char const*)': + moc_fbitem.cpp:(.text+0x70): undefined reference to `QQuickFramebufferObject::qt_metacast(char const*)' + .obj/moc_fbitem.o: In function `FbItem::qt_metacall(QMetaObject::Call, int, void**)': + moc_fbitem.cpp:(.text+0x80): undefined reference to `QQuickFramebufferObject::qt_metacall(QMetaObject::Call, int, void**)' + .obj/moc_fbitem.o: In function `FbItem::~FbItem()': + moc_fbitem.cpp:(.text._ZN6FbItemD2Ev[_ZN6FbItemD5Ev]+0x38): undefined reference to `vtable for QQuickFramebufferObject' + .obj/moc_fbitem.o: In function `FbItem::~FbItem()': + moc_fbitem.cpp:(.text._ZN6FbItemD0Ev[_ZN6FbItemD0Ev]+0x40): undefined reference to `vtable for QQuickFramebufferObject' + .obj/moc_fbitem.o:(.data.rel.ro+0x8): undefined reference to `typeinfo for QQuickFramebufferObject' + .obj/moc_fbitem.o:(.data.rel.ro+0x58): undefined reference to `QQuickFramebufferObject::isTextureProvider() const' + .obj/moc_fbitem.o:(.data.rel.ro+0x5c): undefined reference to `QQuickFramebufferObject::textureProvider() const' + .obj/moc_fbitem.o:(.data.rel.ro+0xc4): undefined reference to `QQuickFramebufferObject::geometryChanged(QRectF const&, QRectF const&)' + .obj/moc_fbitem.o:(.data.rel.ro+0xc8): undefined reference to `QQuickFramebufferObject::updatePaintNode(QSGNode*, QQuickItem::UpdatePaintNodeData*)' + .obj/moc_fbitem.o:(.data.rel.ro+0xcc): undefined reference to `QQuickFramebufferObject::releaseResources()' + .obj/moc_fbitem.o:(.data.rel.ro+0xf0): undefined reference to `QQuickFramebufferObject::staticMetaObject' + +Signed-off-by: Peter Seiderer +--- + +Note: +An equivalent patch is upstream for qt5declarative 5.10, but it is not suitable for +backporting to this version due to license differences. + +--- + examples/quick/quick.pro | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/examples/quick/quick.pro b/examples/quick/quick.pro +index 445dfb0fa..26ca0138e 100644 +--- a/examples/quick/quick.pro ++++ b/examples/quick/quick.pro +@@ -36,7 +36,10 @@ qtConfig(opengl(es1|es2)?) { + # Widget dependent examples + qtHaveModule(widgets) { + SUBDIRS += embeddedinwidgets +- qtHaveModule(quickwidgets): SUBDIRS += quickwidgets ++ # OpenGL Support Required ++ qtConfig(opengl(es1|es2)?) { ++ qtHaveModule(quickwidgets): SUBDIRS += quickwidgets ++ } + } + + EXAMPLE_FILES = \ +-- +2.11.0 + diff --git a/buildroot/package/qt5/qt5declarative/Config.in b/buildroot/package/qt5/qt5declarative/Config.in new file mode 100644 index 0000000..3a353a8 --- /dev/null +++ b/buildroot/package/qt5/qt5declarative/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_QT5DECLARATIVE + bool "qt5declarative" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + select BR2_PACKAGE_QT5XMLPATTERNS + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Declarative module provides the Qt QML and Qt Quick + modules for developing UIs with the QML language + + http://doc.qt.io/qt-5/qtqml-index.html + http://doc.qt.io/qt-5/qtquick-index.html + +if BR2_PACKAGE_QT5DECLARATIVE + +comment "quick module needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE && !BR2_PACKAGE_QT5_VERSION_LATEST + +config BR2_PACKAGE_QT5DECLARATIVE_QUICK + bool "quick module" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE || BR2_PACKAGE_QT5_VERSION_LATEST + select BR2_PACKAGE_QT5BASE_OPENGL if BR2_PACKAGE_QT5_GL_AVAILABLE + +endif diff --git a/buildroot/package/qt5/qt5declarative/qt5declarative.hash b/buildroot/package/qt5/qt5declarative/qt5declarative.hash new file mode 100644 index 0000000..9bbda42 --- /dev/null +++ b/buildroot/package/qt5/qt5declarative/qt5declarative.hash @@ -0,0 +1,16 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtdeclarative-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 f63fc053d0d16b8a9ca9308f8ead77874b470ae31b66057e2bd336bf648191fc qtdeclarative-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtdeclarative-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 058fd99a779a753fc5f5e887f1afb799aa53b9f010faa06374b1cfb6fc8bad8a qtdeclarative-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt5declarative/qt5declarative.mk b/buildroot/package/qt5/qt5declarative/qt5declarative.mk new file mode 100644 index 0000000..de8b048 --- /dev/null +++ b/buildroot/package/qt5/qt5declarative/qt5declarative.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# qt5declarative +# +################################################################################ + +QT5DECLARATIVE_VERSION = $(QT5_VERSION) +QT5DECLARATIVE_SITE = $(QT5_SITE) +QT5DECLARATIVE_SOURCE = qtdeclarative-opensource-src-$(QT5DECLARATIVE_VERSION).tar.xz +QT5DECLARATIVE_DEPENDENCIES = qt5base qt5xmlpatterns +QT5DECLARATIVE_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5DECLARATIVE_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5DECLARATIVE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +else +QT5DECLARATIVE_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5DECLARATIVE_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +define QT5DECLARATIVE_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5DECLARATIVE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5DECLARATIVE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_STATIC_LIBS),) + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +define QT5DECLARATIVE_INSTALL_TARGET_QUICK_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Quick*.so.* $(TARGET_DIR)/usr/lib +endef +define QT5DECLARATIVE_INSTALL_TARGET_QUICK_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/quick/ $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +define QT5DECLARATIVE_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Qml*.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/qml* $(TARGET_DIR)/usr/lib/qt/plugins + $(QT5DECLARATIVE_INSTALL_TARGET_QUICK_LIBS) +endef + +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5DECLARATIVE_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/qml* $(TARGET_DIR)/usr/lib/qt/examples/ + $(QT5DECLARATIVE_INSTALL_TARGET_QUICK_EXAMPLES) +endef +endif + +define QT5DECLARATIVE_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/bin/qml* $(TARGET_DIR)/usr/bin + cp -dpfr $(STAGING_DIR)/usr/qml $(TARGET_DIR)/usr + $(QT5DECLARATIVE_INSTALL_TARGET_EXAMPLES) + $(QT5DECLARATIVE_INSTALL_TARGET_LIBS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5enginio/Config.in b/buildroot/package/qt5/qt5enginio/Config.in new file mode 100644 index 0000000..102058e --- /dev/null +++ b/buildroot/package/qt5/qt5enginio/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_QT5ENGINIO + bool "qt5enginio" + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_NETWORK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Enginio is a Backend-as-a-Service solution for simplifying + backend development of connected and data-driven applications. + + This package has been tagged as deprecated since version + 5.6 and not recommended for new design. + + http://doc.qt.io/archives/qt-5.5/enginio-index.html diff --git a/buildroot/package/qt5/qt5enginio/qt5enginio.hash b/buildroot/package/qt5/qt5enginio/qt5enginio.hash new file mode 100644 index 0000000..424c477 --- /dev/null +++ b/buildroot/package/qt5/qt5enginio/qt5enginio.hash @@ -0,0 +1,9 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtenginio-opensource-src-1.6.3.tar.xz.mirrorlist +sha256 d907060b355512ceb7a8c3f6980e3979c20d54320b6804303b6c5e8ed42d3912 qtenginio-opensource-src-1.6.3.tar.xz + +# Hashes for license files: +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d LICENSE.FDL diff --git a/buildroot/package/qt5/qt5enginio/qt5enginio.mk b/buildroot/package/qt5/qt5enginio/qt5enginio.mk new file mode 100644 index 0000000..603b2a5 --- /dev/null +++ b/buildroot/package/qt5/qt5enginio/qt5enginio.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# qt5enginio +# +################################################################################ + +# Qt5Enginio does not follow Qt versionning +# see https://bugreports.qt.io/browse/QTBUG-50111 +QT5ENGINIO_VERSION = 1.6.3 +QT5ENGINIO_SITE = $(QT5_SITE) +QT5ENGINIO_SOURCE = qtenginio-opensource-src-$(QT5ENGINIO_VERSION).tar.xz +QT5ENGINIO_DEPENDENCIES = openssl qt5base +QT5ENGINIO_INSTALL_STAGING = YES + +QT5ENGINIO_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5ENGINIO_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5ENGINIO_LICENSE := $(QT5ENGINIO_LICENSE), BSD-3-Clause (examples) +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5ENGINIO_DEPENDENCIES += qt5declarative +endif + +define QT5ENGINIO_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5ENGINIO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5ENGINIO_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +define QT5ENGINIO_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/Enginio $(TARGET_DIR)/usr/qml/ +endef +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5ENGINIO_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/enginio $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +ifneq ($(BR2_STATIC_LIBS),y) +define QT5ENGINIO_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libEnginio.so.* $(TARGET_DIR)/usr/lib +endef +endif + +define QT5ENGINIO_INSTALL_TARGET_CMDS + $(QT5ENGINIO_INSTALL_TARGET_LIBS) + $(QT5ENGINIO_INSTALL_TARGET_QMLS) + $(QT5ENGINIO_INSTALL_TARGET_EXAMPLES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5graphicaleffects/Config.in b/buildroot/package/qt5/qt5graphicaleffects/Config.in new file mode 100644 index 0000000..69b7fca --- /dev/null +++ b/buildroot/package/qt5/qt5graphicaleffects/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_QT5GRAPHICALEFFECTS + bool "qt5graphicaleffects" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Graphical Effects module provides a set of QML types + for adding visually impressive and configurable effects to + user interfaces. + + http://doc.qt.io/qt-5/qtgraphicaleffects-index.html + +comment "qt5graphicaleffects needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE diff --git a/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash b/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash new file mode 100644 index 0000000..c7f9312 --- /dev/null +++ b/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash @@ -0,0 +1,17 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtgraphicaleffects-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 c742592d5e45b122b29df60b69be23ba7c817f2dc471db86e054f6ea24a999ed qtgraphicaleffects-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtgraphicaleffects-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 5f98bc62e8f27bd13853e90306e7e10f47fb06d7cd38f2e7be76bd907ef37154 qtgraphicaleffects-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk b/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk new file mode 100644 index 0000000..2f6380f --- /dev/null +++ b/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# qt5graphicaleffects +# +################################################################################ + +QT5GRAPHICALEFFECTS_VERSION = $(QT5_VERSION) +QT5GRAPHICALEFFECTS_SITE = $(QT5_SITE) +QT5GRAPHICALEFFECTS_SOURCE = qtgraphicaleffects-opensource-src-$(QT5GRAPHICALEFFECTS_VERSION).tar.xz +QT5GRAPHICALEFFECTS_DEPENDENCIES = qt5base qt5declarative +QT5GRAPHICALEFFECTS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5GRAPHICALEFFECTS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5GRAPHICALEFFECTS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +else +QT5GRAPHICALEFFECTS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5GRAPHICALEFFECTS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +define QT5GRAPHICALEFFECTS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5GRAPHICALEFFECTS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5GRAPHICALEFFECTS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +define QT5GRAPHICALEFFECTS_INSTALL_TARGET_CMDS + cp -dpfr $(STAGING_DIR)/usr/qml/QtGraphicalEffects $(TARGET_DIR)/usr/qml +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5imageformats/Config.in b/buildroot/package/qt5/qt5imageformats/Config.in new file mode 100644 index 0000000..44c85c9 --- /dev/null +++ b/buildroot/package/qt5/qt5imageformats/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5IMAGEFORMATS + bool "qt5imageformats" + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Image Formats module provides plugins for + additional image formats: TIFF, MNG, TGA, WBMP + + http://doc.qt.io/qt-5/qtimageformats-index.html diff --git a/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash b/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash new file mode 100644 index 0000000..d24e550 --- /dev/null +++ b/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash @@ -0,0 +1,14 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtimageformats-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 efe4da3c90c976c9b9a2eb6b081d2b8e1435935695104456276ce98e8a5848c3 qtimageformats-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtimageformats-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 158272da5e49a388b43423399592372968984323bfd543a5a992bbd466ff4060 qtimageformats-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt diff --git a/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk b/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk new file mode 100644 index 0000000..f70f131 --- /dev/null +++ b/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# qt5imageformats +# +################################################################################ + +QT5IMAGEFORMATS_VERSION = $(QT5_VERSION) +QT5IMAGEFORMATS_SITE = $(QT5_SITE) +QT5IMAGEFORMATS_SOURCE = qtimageformats-opensource-src-$(QT5IMAGEFORMATS_VERSION).tar.xz +QT5IMAGEFORMATS_DEPENDENCIES = qt5base +QT5IMAGEFORMATS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5IMAGEFORMATS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5IMAGEFORMATS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else +QT5IMAGEFORMATS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5IMAGEFORMATS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +define QT5IMAGEFORMATS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5IMAGEFORMATS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5IMAGEFORMATS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +ifeq ($(BR2_STATIC_LIBS),) +define QT5IMAGEFORMATS_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/qt/plugins/imageformats/*.so $(TARGET_DIR)/usr/lib/qt/plugins/imageformats/ +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5location/Config.in b/buildroot/package/qt5/qt5location/Config.in new file mode 100644 index 0000000..e177818 --- /dev/null +++ b/buildroot/package/qt5/qt5location/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5LOCATION + bool "qt5location" + select BR2_PACKAGE_QT5BASE + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Location API helps you create viable mapping + solutions using the data available from some of the + popular location services. + + http://doc.qt.io/qt-5/qtlocation-index.html diff --git a/buildroot/package/qt5/qt5location/qt5location.hash b/buildroot/package/qt5/qt5location/qt5location.hash new file mode 100644 index 0000000..a21e707 --- /dev/null +++ b/buildroot/package/qt5/qt5location/qt5location.hash @@ -0,0 +1,14 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtlocation-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 b7a81c58cc331fb15bea8fba21d3c9a59f6dc6ad2e4855e30a14ce59a2af1466 qtlocation-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtlocation-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 7d65c8e155c617719e2fb56d39f11cf2bc911a43cf6667c124d86cc1a12619c9 qtlocation-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt diff --git a/buildroot/package/qt5/qt5location/qt5location.mk b/buildroot/package/qt5/qt5location/qt5location.mk new file mode 100644 index 0000000..e9f1e4d --- /dev/null +++ b/buildroot/package/qt5/qt5location/qt5location.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# qt5location +# +################################################################################ + +QT5LOCATION_VERSION = $(QT5_VERSION) +QT5LOCATION_SITE = $(QT5_SITE) +QT5LOCATION_SOURCE = qtlocation-opensource-src-$(QT5LOCATION_VERSION).tar.xz +QT5LOCATION_DEPENDENCIES = qt5base +QT5LOCATION_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5LOCATION_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5LOCATION_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else +QT5LOCATION_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5LOCATION_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5LOCATION_DEPENDENCIES += qt5declarative +endif + +define QT5LOCATION_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5LOCATION_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5LOCATION_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +define QT5LOCATION_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtPositioning $(TARGET_DIR)/usr/qml/ + cp -dpfr $(STAGING_DIR)/usr/qml/QtLocation $(TARGET_DIR)/usr/qml/ +endef +define QT5LOCATION_INSTALL_TARGET_LOCATION + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Location.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/geoservices $(TARGET_DIR)/usr/lib/qt/plugins/ +endef +endif + +define QT5LOCATION_INSTALL_TARGET_POSITION + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Positioning.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/position $(TARGET_DIR)/usr/lib/qt/plugins/ +endef + +define QT5LOCATION_INSTALL_TARGET_CMDS + $(QT5LOCATION_INSTALL_TARGET_POSITION) + $(QT5LOCATION_INSTALL_TARGET_LOCATION) + $(QT5LOCATION_INSTALL_TARGET_QMLS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5multimedia/Config.in b/buildroot/package/qt5/qt5multimedia/Config.in new file mode 100644 index 0000000..79d6022 --- /dev/null +++ b/buildroot/package/qt5/qt5multimedia/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_QT5MULTIMEDIA + bool "qt5multimedia" + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_NETWORK + select BR2_PACKAGE_QT5BASE_OPENGL_LIB if BR2_PACKAGE_QT5BASE_OPENGL + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Multimedia module provides a rich feature set that + enables you to easily take advantage of a platform's + multimedia capabilities such as media playback and the use + of camera and radio devices. + + http://doc.qt.io/qt-5/multimediaoverview.html diff --git a/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash b/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash new file mode 100644 index 0000000..69a378f --- /dev/null +++ b/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash @@ -0,0 +1,16 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtmultimedia-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 ae36039ea8037742342f1615687e0ca2188f3ed0d700627a5e5be546c15e1b46 qtmultimedia-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtmultimedia-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 9edc11d74e10e4ef857ab38a66700259829e6b5baa4ab0b30655f549d8939fff qtmultimedia-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk b/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk new file mode 100644 index 0000000..041ef49 --- /dev/null +++ b/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk @@ -0,0 +1,90 @@ +################################################################################ +# +# qt5multimedia +# +################################################################################ + +QT5MULTIMEDIA_VERSION = $(QT5_VERSION) +QT5MULTIMEDIA_SITE = $(QT5_SITE) +QT5MULTIMEDIA_SOURCE = qtmultimedia-opensource-src-$(QT5MULTIMEDIA_VERSION).tar.xz +QT5MULTIMEDIA_DEPENDENCIES = qt5base +QT5MULTIMEDIA_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5MULTIMEDIA_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5MULTIMEDIA_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +else +QT5MULTIMEDIA_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5MULTIMEDIA_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) +QT5MULTIMEDIA_DEPENDENCIES += gst1-plugins-base +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5MULTIMEDIA_DEPENDENCIES += qt5declarative +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2)$(BR2_PACKAGE_PULSEAUDIO),yy) +QT5MULTIMEDIA_DEPENDENCIES += libglib2 pulseaudio +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +QT5MULTIMEDIA_DEPENDENCIES += alsa-lib +endif + +# The mesa's EGL/eglplatform.h header includes X11 headers unless the flag +# MESA_EGL_NO_X11_HEADERS is defined. Tell to not include X11 headers if +# the libxcb is not selected. +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL)x$(BR2_PACKAGE_LIBXCB),yx) +QT5MULTIMEDIA_QMAKEFLAGS += QMAKE_CXXFLAGS+=-DMESA_EGL_NO_X11_HEADERS +endif + +define QT5MULTIMEDIA_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake $(QT5MULTIMEDIA_QMAKEFLAGS)) +endef + +define QT5MULTIMEDIA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5MULTIMEDIA_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_STATIC_LIBS),) +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) +define QT5MULTIMEDIA_INSTALL_TARGET_QGSTTOOLS_LIB + cp -dpf $(STAGING_DIR)/usr/lib/libqgsttools*.so.* $(TARGET_DIR)/usr/lib +endef +endif + +define QT5MULTIMEDIA_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Multimedia*.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/* $(TARGET_DIR)/usr/lib/qt/plugins + $(QT5MULTIMEDIA_INSTALL_TARGET_QGSTTOOLS_LIB) +endef +endif + +# this is only built with quick/opengl support enabled +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK)$(BR2_PACKAGE_QT5_GL_AVAILABLE),yy) +define QT5MULTIMEDIA_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtMultimedia $(TARGET_DIR)/usr/qml/ +endef +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5MULTIMEDIA_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/multimedia* $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +define QT5MULTIMEDIA_INSTALL_TARGET_CMDS + $(QT5MULTIMEDIA_INSTALL_TARGET_LIBS) + $(QT5MULTIMEDIA_INSTALL_TARGET_QMLS) + $(QT5MULTIMEDIA_INSTALL_TARGET_EXAMPLES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5quickcontrols/Config.in b/buildroot/package/qt5/qt5quickcontrols/Config.in new file mode 100644 index 0000000..59f6ca4 --- /dev/null +++ b/buildroot/package/qt5/qt5quickcontrols/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_QT5QUICKCONTROLS + bool "qt5quickcontrols" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE || BR2_PACKAGE_QT5_VERSION_LATEST + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Quick Controls module provides a set of controls + that can be used to build complete interfaces in Qt Quick. + + http://doc.qt.io/qt-5/qtquickcontrols-index.html + +comment "qt5quickcontrols needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE && !BR2_PACKAGE_QT5_VERSION_LATEST + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE diff --git a/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash b/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash new file mode 100644 index 0000000..c437073 --- /dev/null +++ b/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtquickcontrols-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 31bb0fc8f21b855af6ff02c415be3246128b523d0ef7c05e248e92281ab0db8e qtquickcontrols-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtquickcontrols-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 da4dd353802197c2bb53c92a36cf7749c7d9dc29b4acc919b692683e9c1c3313 qtquickcontrols-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk b/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk new file mode 100644 index 0000000..88e767b --- /dev/null +++ b/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# qt5quickcontrols +# +################################################################################ + +QT5QUICKCONTROLS_VERSION = $(QT5_VERSION) +QT5QUICKCONTROLS_SITE = $(QT5_SITE) +QT5QUICKCONTROLS_SOURCE = qtquickcontrols-opensource-src-$(QT5QUICKCONTROLS_VERSION).tar.xz +QT5QUICKCONTROLS_DEPENDENCIES = qt5base qt5declarative +QT5QUICKCONTROLS_INSTALL_STAGING = YES + +QT5QUICKCONTROLS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0, GFDL-1.3 (docs) +QT5QUICKCONTROLS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL + +define QT5QUICKCONTROLS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5QUICKCONTROLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5QUICKCONTROLS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK)$(BR2_PACKAGE_QT5BASE_WIDGETS),yy) +define QT5QUICKCONTROLS_INSTALL_TARGET_PRIVATEWIDGETS + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/PrivateWidgets $(TARGET_DIR)/usr/qml/QtQuick +endef +endif + +ifeq ($(BR2_PACKAGE_QT5_VERSION_5_6),y) +define QT5QUICKCONTROLS_INSTALL_TARGET_LAYOUTS + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Layouts $(TARGET_DIR)/usr/qml/QtQuick +endef +endif + +define QT5QUICKCONTROLS_INSTALL_TARGET_CMDS + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Controls $(TARGET_DIR)/usr/qml/QtQuick + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Dialogs $(TARGET_DIR)/usr/qml/QtQuick + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Extras $(TARGET_DIR)/usr/qml/QtQuick + $(QT5QUICKCONTROLS_INSTALL_TARGET_PRIVATEWIDGETS) + $(QT5QUICKCONTROLS_INSTALL_TARGET_LAYOUTS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5quickcontrols2/5.6.3/qt5quickcontrols2.hash b/buildroot/package/qt5/qt5quickcontrols2/5.6.3/qt5quickcontrols2.hash new file mode 100644 index 0000000..6f5bf29 --- /dev/null +++ b/buildroot/package/qt5/qt5quickcontrols2/5.6.3/qt5quickcontrols2.hash @@ -0,0 +1,4 @@ +# Hashes for license files: +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 0ec5b37a28dd638c5c05c8cc940276e55c808353fe8d942c7f993c2c8b4cbe62 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt5quickcontrols2/Config.in b/buildroot/package/qt5/qt5quickcontrols2/Config.in new file mode 100644 index 0000000..d036f74 --- /dev/null +++ b/buildroot/package/qt5/qt5quickcontrols2/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_QT5QUICKCONTROLS2 + bool "qt5quickcontrols2" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE || BR2_PACKAGE_QT5_VERSION_LATEST # qt5declarative/quick + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative/quick + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5quickcontrols2 module. + + This module was in tech preview in Qt 5.6, and promoted + to a core module in Qt 5.7.0. + + https://doc.qt.io/qt-5/qtquickcontrols2-index.html + +comment "qt5quickcontrols2 needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE && !BR2_PACKAGE_QT5_VERSION_LATEST + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE diff --git a/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash b/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash new file mode 100644 index 0000000..ae6fb01 --- /dev/null +++ b/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtquickcontrols2-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 ec5078470abe2da888c2be5d1749b5961ef5132487c180ce4d4aa19ea7ff81cb qtquickcontrols2-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtquickcontrols2-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 24b41ae6acec9372190147736ba31bf0b4467c71cc4b14817e3a82a750481679 qtquickcontrols2-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 d2cfc059acb4abd8e513cd0a73cd8489f34cbafa7bc34d5d31fb3210821cf8ca LICENSE.GPLv3 +sha256 9e63a04ce021b8bf811b30881fa51c8c3db88afeead942cd59322f2fb69c75bc LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk b/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk new file mode 100644 index 0000000..f27cafc --- /dev/null +++ b/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# qt5quickcontrols2 +# +################################################################################ + +QT5QUICKCONTROLS2_VERSION = $(QT5_VERSION) +QT5QUICKCONTROLS2_SITE = $(QT5_SITE) +QT5QUICKCONTROLS2_SOURCE = qtquickcontrols2-opensource-src-$(QT5QUICKCONTROLS2_VERSION).tar.xz +QT5QUICKCONTROLS2_DEPENDENCIES = qt5base qt5declarative +QT5QUICKCONTROLS2_INSTALL_STAGING = YES + +QT5QUICKCONTROLS2_LICENSE = GPL-3.0 or LGPL-3.0, GFDL-1.3 (docs) +QT5QUICKCONTROLS2_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL + +define QT5QUICKCONTROLS2_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5QUICKCONTROLS2_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5QUICKCONTROLS2_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5QUICKCONTROLS2_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/quickcontrols2 $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +define QT5QUICKCONTROLS2_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5QuickTemplates2.so.* $(TARGET_DIR)/usr/lib + cp -dpf $(STAGING_DIR)/usr/lib/libQt5QuickControls2.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/calendar $(TARGET_DIR)/usr/qml/Qt/labs + cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/platform $(TARGET_DIR)/usr/qml/Qt/labs + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Controls.2 $(TARGET_DIR)/usr/qml/QtQuick + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Templates.2 $(TARGET_DIR)/usr/qml/QtQuick + $(QT5QUICKCONTROLS2_INSTALL_TARGET_EXAMPLES) +endef +else +define QT5QUICKCONTROLS2_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5LabsTemplates.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/controls $(TARGET_DIR)/usr/qml/Qt/labs + cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/calendar $(TARGET_DIR)/usr/qml/Qt/labs + cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/templates $(TARGET_DIR)/usr/qml/Qt/labs + $(QT5QUICKCONTROLS2_INSTALL_TARGET_EXAMPLES) +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5script/0001-Detect-32-bits-armv8-a-architecture.patch b/buildroot/package/qt5/qt5script/0001-Detect-32-bits-armv8-a-architecture.patch new file mode 100644 index 0000000..7e4e524 --- /dev/null +++ b/buildroot/package/qt5/qt5script/0001-Detect-32-bits-armv8-a-architecture.patch @@ -0,0 +1,49 @@ +From daf2e222903bacf85f27dfb0fffc4459bbf58b77 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Sun, 10 Jun 2018 08:23:50 -0400 +Subject: [PATCH] Detect 32-bits armv8-a architecture +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +These toolchains define __ARM_ARCH_8A__ (for ARM architecture version) +and __arm__ (for 32-bits word-size; __aarch64__ for 64-bits). + +This commit catches this new architecture (armv8a) within a #ifdef/#endif +inside the if statement dedicated for 32-bits ARM detection. See commit +from WebKit [1] and [2]. + +Fixes: + + In file included from ../3rdparty/javascriptcore/JavaScriptCore/config.h:26, + from ../3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_compile.cpp:44: + ../3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h:370:6: error: #error "Not supported ARM architecture" + # error "Not supported ARM architecture" + ^~~~~ + +[1]: https://github.com/WebKit/webkit/commit/313d9fc4bdd2f020a5d0cf834c3c61982f161ebb +[2]: https://github.com/WebKit/webkit/commit/98f0de0709786f5d9b09dfd5908266990eb909d6 + +Signed-off-by: Gaël PORTAY +--- + src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +index 00caa6d..c4b758e 100644 +--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h ++++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +@@ -306,6 +306,10 @@ + || defined(__ARM_ARCH_7R__) + #define WTF_ARM_ARCH_VERSION 7 + ++#elif defined(__ARM_ARCH_8__) \ ++ || defined(__ARM_ARCH_8A__) ++#define WTF_ARM_ARCH_VERSION 8 ++ + /* RVCT sets _TARGET_ARCH_ARM */ + #elif defined(__TARGET_ARCH_ARM) + #define WTF_ARM_ARCH_VERSION __TARGET_ARCH_ARM +-- +2.17.1 + diff --git a/buildroot/package/qt5/qt5script/Config.in b/buildroot/package/qt5/qt5script/Config.in new file mode 100644 index 0000000..034b7d2 --- /dev/null +++ b/buildroot/package/qt5/qt5script/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_QT5SCRIPT + bool "qt5script" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + select BR2_PACKAGE_QT5BASE + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Script provides support for making Qt applications + scriptable. Provided for Qt 4.x compatibility. + + This package has been tagged as deprecated since version + 5.5.0 and should be replaced by Qt QML module in new + design. + + http://doc.qt.io/qt-5/qtscript-index.html diff --git a/buildroot/package/qt5/qt5script/qt5script.hash b/buildroot/package/qt5/qt5script/qt5script.hash new file mode 100644 index 0000000..acbd3df --- /dev/null +++ b/buildroot/package/qt5/qt5script/qt5script.hash @@ -0,0 +1,14 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtscript-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 f08720dd0e3a70377c1cb7fa3b129e24f4cdedade279e51b67c9271ab470b389 qtscript-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtscript-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 8dbf41abee35be4eb34a56ca3276fac83f3b8671db54c3c7e91c877225727220 qtscript-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 5094ecb9c9dcd0eadc34f3c11511d9b5535063032bc150164ecd1a5d5a445547 src/3rdparty/javascriptcore/JavaScriptCore/COPYING.LIB +sha256 43b007cd3ac7b7ea5284b13e9580334028e6f42e859059605d57558f39374197 src/3rdparty/javascriptcore/JavaScriptCore/pcre/COPYING diff --git a/buildroot/package/qt5/qt5script/qt5script.mk b/buildroot/package/qt5/qt5script/qt5script.mk new file mode 100644 index 0000000..9539f56 --- /dev/null +++ b/buildroot/package/qt5/qt5script/qt5script.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# qt5script +# +################################################################################ + +QT5SCRIPT_VERSION = $(QT5_VERSION) +QT5SCRIPT_SITE = $(QT5_SITE) +QT5SCRIPT_SOURCE = qtscript-opensource-src-$(QT5SCRIPT_VERSION).tar.xz +QT5SCRIPT_DEPENDENCIES = qt5base +QT5SCRIPT_INSTALL_STAGING = YES + +# JavaScriptCore contains files under BSD-2-Clause, BSD-3-Clause, and LGPL-2+. +# This is linked into libQt5Script, which also contains Qt sources under +# LGPL-2.1 (only). Therefore, the library is LGPL-2.1 and BSD-3-Clause. +# libQt5ScriptTools is under the normal Qt opensource license. +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5SCRIPT_LICENSE = LGPL-2.1, BSD-3-Clause, LGPL-3.0 or GPL-2.0+ (libQt5ScriptTools), GFDL-1.3 (docs) +QT5SCRIPT_LICENSE_FILES = LICENSE.LGPLv21 LICENSE.LGPLv3 LICENSE.GPLv3 LICENSE.FDL +else +QT5SCRIPT_LICENSE = LGPL-2.1, BSD-3-Clause, LGPL-2.1 with exception or LGPL-3.0 with exception (libQt5ScriptTools), GFDL-1.3 (docs) +QT5SCRIPT_LICENSE_FILES = LICENSE.LGPLv21 LICENSE.LGPLv3 LGPL_EXCEPTION.txt LICENSE.FDL +endif +# License files from JavaScriptCore +QT5SCRIPT_LICENSE_FILES += \ + src/3rdparty/javascriptcore/JavaScriptCore/COPYING.LIB \ + src/3rdparty/javascriptcore/JavaScriptCore/pcre/COPYING + +define QT5SCRIPT_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5SCRIPT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5SCRIPT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define QT5SCRIPT_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Script*.so.* $(TARGET_DIR)/usr/lib +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5scxml/Config.in b/buildroot/package/qt5/qt5scxml/Config.in new file mode 100644 index 0000000..d94b5ea --- /dev/null +++ b/buildroot/package/qt5/qt5scxml/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_QT5SCXML + bool "qt5scxml" + depends on BR2_PACKAGE_QT5_VERSION_LATEST + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5DECLARATIVE + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt SCXML module provides functionality to create state + machines from SCXML files. + + https://doc.qt.io/qt-5/qtscxml-index.html + +comment "qt5scxml needs at least qt-5.9" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_PACKAGE_QT5_VERSION_LATEST diff --git a/buildroot/package/qt5/qt5scxml/qt5scxml.hash b/buildroot/package/qt5/qt5scxml/qt5scxml.hash new file mode 100644 index 0000000..4a1b383 --- /dev/null +++ b/buildroot/package/qt5/qt5scxml/qt5scxml.hash @@ -0,0 +1,8 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtscxml-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 33947621fd6675c68d67ba11325746a82e7d582599ca0f04e03da4f60d82339a qtscxml-opensource-src-5.9.6.tar.xz + +# Hashes for license files: + +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 diff --git a/buildroot/package/qt5/qt5scxml/qt5scxml.mk b/buildroot/package/qt5/qt5scxml/qt5scxml.mk new file mode 100644 index 0000000..2d197a2 --- /dev/null +++ b/buildroot/package/qt5/qt5scxml/qt5scxml.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# qt5scxml +# +################################################################################ + +QT5SCXML_VERSION = $(QT5_VERSION) +QT5SCXML_SITE = $(QT5_SITE) +QT5SCXML_SOURCE = qtscxml-opensource-src-$(QT5SCXML_VERSION).tar.xz +QT5SCXML_DEPENDENCIES = qt5base qt5declarative +QT5SCXML_INSTALL_STAGING = YES + +QT5SCXML_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5SCXML_LICENSE_FILES = LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5SCXML_LICENSE := $(QT5SCXML_LICENSE), BSD-3-Clause (examples) +endif + +define QT5SCXML_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5SCXML_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5SCXML_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define QT5SCXML_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Scxml*.so.* $(TARGET_DIR)/usr/lib +endef +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5SCXML_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/scxml $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +define QT5SCXML_INSTALL_TARGET_CMDS + $(QT5SCXML_INSTALL_TARGET_LIBS) + $(QT5SCXML_INSTALL_TARGET_EXAMPLES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5sensors/Config.in b/buildroot/package/qt5/qt5sensors/Config.in new file mode 100644 index 0000000..4846a3f --- /dev/null +++ b/buildroot/package/qt5/qt5sensors/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_QT5SENSORS + bool "qt5sensors" + select BR2_PACKAGE_QT5BASE + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt Sensors API provides access to sensor hardware + via QML and C++ interfaces. + + http://doc.qt.io/qt-5/qtsensors-index.html diff --git a/buildroot/package/qt5/qt5sensors/qt5sensors.hash b/buildroot/package/qt5/qt5sensors/qt5sensors.hash new file mode 100644 index 0000000..cf26d8f --- /dev/null +++ b/buildroot/package/qt5/qt5sensors/qt5sensors.hash @@ -0,0 +1,17 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtsensors-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 7502d4dc5571865a7eea2a4180c3be396dfb8ce22df4c4f3d7e9ff32ab334973 qtsensors-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtsensors-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 047fac53c555e685c346be53faacf581cb98d9e2a3193cb55f4e7e81fc51de27 qtsensors-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt5sensors/qt5sensors.mk b/buildroot/package/qt5/qt5sensors/qt5sensors.mk new file mode 100644 index 0000000..d4dc47e --- /dev/null +++ b/buildroot/package/qt5/qt5sensors/qt5sensors.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# qt5sensors +# +################################################################################ + +QT5SENSORS_VERSION = $(QT5_VERSION) +QT5SENSORS_SITE = $(QT5_SITE) +QT5SENSORS_SOURCE = qtsensors-opensource-src-$(QT5SENSORS_VERSION).tar.xz +QT5SENSORS_DEPENDENCIES = qt5base +QT5SENSORS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5SENSORS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5SENSORS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +else +QT5SENSORS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5SENSORS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5SENSORS_DEPENDENCIES += qt5declarative +endif + +define QT5SENSORS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5SENSORS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5SENSORS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define QT5SENSORS_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Sensors.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/sensor* $(TARGET_DIR)/usr/lib/qt/plugins +endef +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +define QT5SENSORS_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtSensors $(TARGET_DIR)/usr/qml +endef +endif + +define QT5SENSORS_INSTALL_TARGET_CMDS + $(QT5SENSORS_INSTALL_TARGET_LIBS) + $(QT5SENSORS_INSTALL_TARGET_QMLS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5serialbus/Config.in b/buildroot/package/qt5/qt5serialbus/Config.in new file mode 100644 index 0000000..2882d50 --- /dev/null +++ b/buildroot/package/qt5/qt5serialbus/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_QT5SERIALBUS + bool "qt5serialbus" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 # CAN FD + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5SERIALPORT + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5serialbus module. + + This module was in tech preview in Qt 5.6, and promoted + to a core module in Qt 5.8.0. + + http://doc.qt.io/qt-5/qtserialbus-index.html + +comment "qt5serialbus needs headers >= 3.6" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 diff --git a/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash b/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash new file mode 100644 index 0000000..8a77ab4 --- /dev/null +++ b/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash @@ -0,0 +1,11 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtserialbus-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 71c89be3879414e2a11cad93a4882758f9259b1c0aec980560309192c99f9a9e qtserialbus-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtserialbus-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 f3e8d0e6ff836198c9fc5b9a2a89dea3c5d604c63a62126fab6d11c2763f172a qtserialbus-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 f827ad079686ba92cc94811e35492d0e8966f704008b6da9eeda0b659fb58a8d LICENSE.FDL diff --git a/buildroot/package/qt5/qt5serialbus/qt5serialbus.mk b/buildroot/package/qt5/qt5serialbus/qt5serialbus.mk new file mode 100644 index 0000000..218aba4 --- /dev/null +++ b/buildroot/package/qt5/qt5serialbus/qt5serialbus.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# qt5serialbus +# +################################################################################ + +QT5SERIALBUS_VERSION = $(QT5_VERSION) +QT5SERIALBUS_SITE = $(QT5_SITE) +QT5SERIALBUS_SOURCE = qtserialbus-opensource-src-$(QT5SERIALBUS_VERSION).tar.xz +QT5SERIALBUS_DEPENDENCIES = qt5base qt5serialport +QT5SERIALBUS_INSTALL_STAGING = YES + +QT5SERIALBUS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0, GFDL-1.3 (docs) +QT5SERIALBUS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL + +define QT5SERIALBUS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5SERIALBUS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5SERIALBUS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define QT5SERIALBUS_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5SerialBus.so.* \ + $(TARGET_DIR)/usr/lib + mkdir -p $(TARGET_DIR)/usr/lib/qt/plugins/canbus + cp -dpf $(STAGING_DIR)/usr/lib/qt/plugins/canbus/*.so \ + $(TARGET_DIR)/usr/lib/qt/plugins/canbus +endef +endif + +define QT5SERIALBUS_INSTALL_TARGET_CMDS + $(QT5SERIALBUS_INSTALL_TARGET_LIBS) + $(INSTALL) -m 0755 -D $(@D)/bin/canbusutil \ + $(TARGET_DIR)/usr/bin/canbusutil +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5serialport/Config.in b/buildroot/package/qt5/qt5serialport/Config.in new file mode 100644 index 0000000..3538c52 --- /dev/null +++ b/buildroot/package/qt5/qt5serialport/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5SERIALPORT + bool "qt5serialport" + select BR2_PACKAGE_QT5BASE + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Serial Port provides the basic functionality, which + includes configuring, I/O operations, getting and setting + the control signals of the RS-232 pinouts. + + http://doc.qt.io/qt-5/qtserialport-index.html diff --git a/buildroot/package/qt5/qt5serialport/qt5serialport.hash b/buildroot/package/qt5/qt5serialport/qt5serialport.hash new file mode 100644 index 0000000..21519d8 --- /dev/null +++ b/buildroot/package/qt5/qt5serialport/qt5serialport.hash @@ -0,0 +1,17 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtserialport-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 082d1fee2703aed19f840c4e4031e37c9b929e5bd8ebef2ebac4b28c509bae1a qtserialport-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtserialport-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 741dfe9d132aed411ad163304fd4485df2da0b40fe57ebce2f6ed4b4043dfcb9 qtserialport-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 e1251235ce9853eecfecfa905da9ee29e9b76e4db2a1c9c4a20699f460419b08 LICENSE.FDL +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 79949ee74297883df6e4e7c4bfe1e75a6e7695376b4a87ffc013e27bda509cb2 LGPL_EXCEPTION.txt diff --git a/buildroot/package/qt5/qt5serialport/qt5serialport.mk b/buildroot/package/qt5/qt5serialport/qt5serialport.mk new file mode 100644 index 0000000..0544237 --- /dev/null +++ b/buildroot/package/qt5/qt5serialport/qt5serialport.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# qt5serialport +# +################################################################################ + +QT5SERIALPORT_VERSION = $(QT5_VERSION) +QT5SERIALPORT_SITE = $(QT5_SITE) +QT5SERIALPORT_SOURCE = qtserialport-opensource-src-$(QT5SERIALPORT_VERSION).tar.xz +QT5SERIALPORT_DEPENDENCIES = qt5base +QT5SERIALPORT_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5SERIALPORT_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5SERIALPORT_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +else +QT5SERIALPORT_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5SERIALPORT_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +define QT5SERIALPORT_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5SERIALPORT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5SERIALPORT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define QT5SERIALPORT_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5SerialPort.so.* $(TARGET_DIR)/usr/lib +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5svg/Config.in b/buildroot/package/qt5/qt5svg/Config.in new file mode 100644 index 0000000..bc80b62 --- /dev/null +++ b/buildroot/package/qt5/qt5svg/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5SVG + bool "qt5svg" + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_GUI + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt SVG provides classes for rendering and displaying SVG + drawings in widgets and on other paint devices. + + http://doc.qt.io/qt-5/qtsvg-index.html diff --git a/buildroot/package/qt5/qt5svg/qt5svg.hash b/buildroot/package/qt5/qt5svg/qt5svg.hash new file mode 100644 index 0000000..ee2a77f --- /dev/null +++ b/buildroot/package/qt5/qt5svg/qt5svg.hash @@ -0,0 +1,13 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtsvg-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 100f183517b46554079beabd8d2cabe3070a74dd0a2e64b6a304eac71cfadcec qtsvg-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtsvg-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 4318ce3c1f94ca865e3405aefb927f257ca824c5adc482302f1449ed34dbd8b8 qtsvg-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt diff --git a/buildroot/package/qt5/qt5svg/qt5svg.mk b/buildroot/package/qt5/qt5svg/qt5svg.mk new file mode 100644 index 0000000..5a12755 --- /dev/null +++ b/buildroot/package/qt5/qt5svg/qt5svg.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# qt5svg +# +################################################################################ + +QT5SVG_VERSION = $(QT5_VERSION) +QT5SVG_SITE = $(QT5_SITE) +QT5SVG_SOURCE = qtsvg-opensource-src-$(QT5SVG_VERSION).tar.xz +QT5SVG_DEPENDENCIES = qt5base +QT5SVG_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5SVG_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5SVG_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL +else +QT5SVG_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5SVG_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +define QT5SVG_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5SVG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5SVG_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y) +define QT5SVG_INSTALL_ICONENGINES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/iconengines $(TARGET_DIR)/usr/lib/qt/plugins +endef +endif + +ifeq ($(BR2_STATIC_LIBS),) +define QT5SVG_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Svg*.so.* $(TARGET_DIR)/usr/lib + cp -dpf $(STAGING_DIR)/usr/lib/qt/plugins/imageformats/libqsvg.so $(TARGET_DIR)/usr/lib/qt/plugins/imageformats/ + $(QT5SVG_INSTALL_ICONENGINES) +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5tools/Config.in b/buildroot/package/qt5/qt5tools/Config.in new file mode 100644 index 0000000..20f00f6 --- /dev/null +++ b/buildroot/package/qt5/qt5tools/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_QT5TOOLS + bool "qt5tools" + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt Tools provides tools facilitate the development + and design of applications. + + http://doc.qt.io/qt-5/qtmodules.html#qt-tools + +if BR2_PACKAGE_QT5TOOLS + +config BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS + bool "Linguist host tools (lconvert, lrelease, lupdate)" + help + This option enables the linguist host tools + lconvert, lrelease and lupdate. + +config BR2_PACKAGE_QT5TOOLS_PIXELTOOL + bool "pixeltool" + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5BASE_PNG # saving png images + help + Compile and install the pixeltool program. + +config BR2_PACKAGE_QT5TOOLS_QTDIAG + bool "qtdiag" + select BR2_PACKAGE_QT5BASE_GUI + help + Compile and install the qtdiag program. + +config BR2_PACKAGE_QT5TOOLS_QTPATHS + bool "qtpaths" + help + Compile and install the qtpaths program. + +config BR2_PACKAGE_QT5TOOLS_QTPLUGININFO + bool "qtplugininfo" + help + Compile and install the qtplugininfo program. + +endif diff --git a/buildroot/package/qt5/qt5tools/qt5tools.hash b/buildroot/package/qt5/qt5tools/qt5tools.hash new file mode 100644 index 0000000..f3030b1 --- /dev/null +++ b/buildroot/package/qt5/qt5tools/qt5tools.hash @@ -0,0 +1,16 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qttools-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 1a63ba838058d73cb540040589b235ded77f76402693decfd6d4d3c75ea67926 qttools-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qttools-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 50e75417ec0c74bb8b1989d1d8e981ee83690dce7dfc0c2169f7c00f397e5117 qttools-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 8ab0b8fe7c8e580e8c571b8fa455baf307e9394d4b3ac53ce50d8e960a8934c5 LICENSE.GPLv3 +sha256 66f6bb53f6d985a4d651bf1ecfe8bbcbe32b0f744708d588f047580ee85d8ec8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 68afaf3392f8c04218fbf29db43cc0b18bf651c1db086556aa584046de9f3e35 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt5tools/qt5tools.mk b/buildroot/package/qt5/qt5tools/qt5tools.mk new file mode 100644 index 0000000..cf181e5 --- /dev/null +++ b/buildroot/package/qt5/qt5tools/qt5tools.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# qt5tools +# +################################################################################ + +QT5TOOLS_VERSION = $(QT5_VERSION) +QT5TOOLS_SITE = $(QT5_SITE) +QT5TOOLS_SOURCE = qttools-opensource-src-$(QT5TOOLS_VERSION).tar.xz + +QT5TOOLS_DEPENDENCIES = qt5base +QT5TOOLS_INSTALL_STAGING = YES + +# linguist tools compile conditionally on qtHaveModule(qmldevtools-private), +# but the condition is used only used to decide if lupdate will support +# parsing qml files (via setting QT_NO_QML define), no linking against +# target qt5 will happen +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5TOOLS_DEPENDENCIES += qt5declarative +endif + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5TOOLS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5TOOLS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +else +QT5TOOLS_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5TOOLS_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +QT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS) += \ + linguist/lconvert linguist/lrelease linguist/lupdate +ifeq ($(BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS),y) +# use install target to copy cmake module files +define QT5TOOLS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/linguist install +endef +endif + +QT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_PIXELTOOL) += pixeltool +QT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_PIXELTOOL) += pixeltool + +QT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTDIAG) += qtdiag +QT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_QTDIAG) += qtdiag + +QT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTPATHS) += qtpaths +QT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_QTPATHS) += qtpaths + +QT5TOOLS_BUILD_DIRS_$(BR2_PACKAGE_QT5TOOLS_QTPLUGININFO) += qtplugininfo +QT5TOOLS_INSTALL_TARGET_$(BR2_PACKAGE_QT5TOOLS_QTPLUGININFO) += qtplugininfo + +define QT5TOOLS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) sub-src-qmake_all + $(foreach p,$(QT5TOOLS_BUILD_DIRS_y), \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src/$(p)$(sep)) +endef + +define QT5TOOLS_INSTALL_TARGET_CMDS + $(foreach p,$(QT5TOOLS_INSTALL_TARGET_y), \ + $(INSTALL) -D -m0755 $(@D)/bin/$(p) $(TARGET_DIR)/usr/bin/$(p)$(sep)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5virtualkeyboard/Config.in b/buildroot/package/qt5/qt5virtualkeyboard/Config.in new file mode 100644 index 0000000..f0e4f03 --- /dev/null +++ b/buildroot/package/qt5/qt5virtualkeyboard/Config.in @@ -0,0 +1,58 @@ +comment "qt5virtualkeyboard needs at least qt-5.7 and an OpenGL backend" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE && !BR2_PACKAGE_QT5_VERSION_LATEST + +config BR2_PACKAGE_QT5VIRTUALKEYBOARD + bool "qt5virtualkeyboard" + # needs at least Qt 5.7 + depends on BR2_PACKAGE_QT5_VERSION_LATEST + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + depends on BR2_PACKAGE_QT5_GL_AVAILABLE || BR2_PACKAGE_QT5_VERSION_LATEST # qt5declarative/quick + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + select BR2_PACKAGE_QT5SVG + help + Qt Virtual Keyboard is a virtual keyboard framework that + consists of a C++ backend supporting custom input methods as + well as a UI frontend implemented in QML. + +if BR2_PACKAGE_QT5VIRTUALKEYBOARD + +config BR2_PACKAGE_QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS + string "language layouts" + default "en_GB" + help + The Virtual Keyboard supports the following languages: + - Arabic (ar_AR) + - Danish (da_DK) + - English (en_GB) + - Finnish (fi_FI) + - French (fr_FR) + - German (de_DE) + - Hindi (hi_IN) + - Italian (it_IT) + - Japanese (ja_JP) + - Korean (ko_KR) + - Norwegian (nb_NO) + - Persian/Farsi (fa_FA) + - Polish (pl_PL) + - Portugese (pt_PT) + - Romanian (ro_RO) + - Russian (ru_RU) + - Simplified Chinese (zh_CN) + - Traditional Chinese (zh_TW) + - Spanish (es_ES) + - Swedish (sv_SE) + + Note: the special value "all" can be used to install support + for all supported languages. + +config BR2_PACKAGE_QT5VIRTUALKEYBOARD_HANDWRITING + bool "handwriting" + help + Handwriting support, with gestures for fullscreen input. + + Lipi Toolkit (LipiTk) is an open source toolkit for online + Handwriting Recognition. + +endif diff --git a/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash b/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash new file mode 100644 index 0000000..f31129b --- /dev/null +++ b/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash @@ -0,0 +1,6 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtvirtualkeyboard-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 217d8502f3f53b62e6e9108e0afb3694cf1d8ae8a6348d3625e3192fc126128c qtvirtualkeyboard-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 7a45a9769d19545480a241230e6ea520b5156fac00930dcd69b6886749743d10 src/virtualkeyboard/3rdparty/lipi-toolkit/MIT_LICENSE.txt diff --git a/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk b/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk new file mode 100644 index 0000000..7d2201b --- /dev/null +++ b/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# qt5virtualkeyboard +# +################################################################################ + +QT5VIRTUALKEYBOARD_VERSION = $(QT5_VERSION) +QT5VIRTUALKEYBOARD_SITE = $(QT5_SITE) +QT5VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-opensource-src-$(QT5VIRTUALKEYBOARD_VERSION).tar.xz +QT5VIRTUALKEYBOARD_DEPENDENCIES = qt5base qt5declarative qt5svg +QT5VIRTUALKEYBOARD_INSTALL_STAGING = YES + +QT5VIRTUALKEYBOARD_LICENSE = GPL-3.0 +QT5VIRTUALKEYBOARD_LICENSE_FILES = LICENSE.GPL3 + +QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS = $(call qstrip,$(BR2_PACKAGE_QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)) +ifneq ($(strip $(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),) +QT5VIRTUALKEYBOARD_QMAKEFLAGS += CONFIG+="$(foreach lang,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS),lang-$(lang))" + +ifneq ($(filter ja_JP all,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),) +QT5VIRTUALKEYBOARD_LICENSE := $(QT5VIRTUALKEYBOARD_LICENSE), Apache-2.0 (openwnn) +QT5VIRTUALKEYBOARD_LICENSE_FILES += src/virtualkeyboard/3rdparty/openwnn/NOTICE +endif + +ifneq ($(filter zh_CN all,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),) +QT5VIRTUALKEYBOARD_3RDPARTY_PARTS = YES +QT5VIRTUALKEYBOARD_LICENSE := $(QT5VIRTUALKEYBOARD_LICENSE), Apache-2.0 (pinyin) +QT5VIRTUALKEYBOARD_LICENSE_FILES += src/virtualkeyboard/3rdparty/pinyin/NOTICE +endif + +ifneq ($(filter zh_TW all,$(QT5VIRTUALKEYBOARD_LANGUAGE_LAYOUTS)),) +QT5VIRTUALKEYBOARD_3RDPARTY_PARTS = YES +QT5VIRTUALKEYBOARD_LICENSE := $(QT5VIRTUALKEYBOARD_LICENSE), Apache-2.0 (tcime), BSD-3-Clause (tcime) +QT5VIRTUALKEYBOARD_LICENSE_FILES += src/virtualkeyboard/3rdparty/tcime/COPYING +endif +endif + +ifeq ($(BR2_PACKAGE_QT5VIRTUALKEYBOARD_HANDWRITING),y) +QT5VIRTUALKEYBOARD_3RDPARTY_PARTS = YES +QT5VIRTUALKEYBOARD_QMAKEFLAGS += CONFIG+=handwriting +QT5VIRTUALKEYBOARD_LICENSE := $(QT5VIRTUALKEYBOARD_LICENSE), MIT (lipi-toolkit) +QT5VIRTUALKEYBOARD_LICENSE_FILES += src/virtualkeyboard/3rdparty/lipi-toolkit/MIT_LICENSE.txt +endif + +ifdef QT5VIRTUALKEYBOARD_3RDPARTY_PARTS +define QT5VIRTUALKEYBOARD_INSTALL_TARGET_3RDPARTY_PARTS + cp -dpfr $(STAGING_DIR)/usr/qtvirtualkeyboard $(TARGET_DIR)/usr +endef +endif + +define QT5VIRTUALKEYBOARD_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake $(QT5VIRTUALKEYBOARD_QMAKEFLAGS)) +endef + +define QT5VIRTUALKEYBOARD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5VIRTUALKEYBOARD_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5VIRTUALKEYBOARD_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/virtualkeyboard $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +define QT5VIRTUALKEYBOARD_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/lib/qt/plugins/platforminputcontexts + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so \ + $(TARGET_DIR)/usr/lib/qt/plugins/platforminputcontexts + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/VirtualKeyboard $(TARGET_DIR)/usr/qml/QtQuick + $(QT5VIRTUALKEYBOARD_INSTALL_TARGET_3RDPARTY_PARTS) + $(QT5VIRTUALKEYBOARD_INSTALL_TARGET_EXAMPLES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5wayland/Config.in b/buildroot/package/qt5/qt5wayland/Config.in new file mode 100644 index 0000000..0182d3c --- /dev/null +++ b/buildroot/package/qt5/qt5wayland/Config.in @@ -0,0 +1,27 @@ +comment "qt5wayland needs an OpenGL-capable backend" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE + +config BR2_PACKAGE_QT5WAYLAND + bool "qt5wayland" + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_WAYLAND + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt5wayland module. + + http://qt.io + +if BR2_PACKAGE_QT5WAYLAND + +config BR2_PACKAGE_QT5WAYLAND_COMPOSITOR + bool "Enable compositor (experimental)" + help + The compositor API is still experimental, and not built by + default. + +endif diff --git a/buildroot/package/qt5/qt5wayland/qt5wayland.hash b/buildroot/package/qt5/qt5wayland/qt5wayland.hash new file mode 100644 index 0000000..6e9079b --- /dev/null +++ b/buildroot/package/qt5/qt5wayland/qt5wayland.hash @@ -0,0 +1,16 @@ +# hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtwayland-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 5a475278b2db73aa7fa7f3ba6d98d8d72774f5c77e172495007d79f91d09daa3 qtwayland-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtwayland-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 6dd066b1ab518b16dc2bebc4b3629528a30161cfce48ce5d8482c67a570667d8 qtwayland-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt5wayland/qt5wayland.mk b/buildroot/package/qt5/qt5wayland/qt5wayland.mk new file mode 100644 index 0000000..8a7f2e1 --- /dev/null +++ b/buildroot/package/qt5/qt5wayland/qt5wayland.mk @@ -0,0 +1,68 @@ +################################################################################ +# +# qt5wayland +# +################################################################################ + +QT5WAYLAND_VERSION = $(QT5_VERSION) +QT5WAYLAND_SITE = $(QT5_SITE) +QT5WAYLAND_SOURCE = qtwayland-opensource-src-$(QT5WAYLAND_VERSION).tar.xz +QT5WAYLAND_DEPENDENCIES = qt5base qt5declarative wayland +QT5WAYLAND_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y) +QT5WAYLAND_DEPENDENCIES += libxkbcommon +endif + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5WAYLAND_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5WAYLAND_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +else +QT5WAYLAND_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5WAYLAND_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +ifeq ($(BR2_PACKAGE_QT5WAYLAND_COMPOSITOR),y) +QT5WAYLAND_QMAKEFLAGS += CONFIG+=wayland-compositor +endif + +# The mesa's EGL/eglplatform.h header includes X11 headers unless the flag +# MESA_EGL_NO_X11_HEADERS is defined. Tell to not include X11 headers if +# the libxcb is not selected. +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL)x$(BR2_PACKAGE_LIBXCB),yx) +QT5WAYLAND_QMAKEFLAGS += QMAKE_CXXFLAGS+=-DMESA_EGL_NO_X11_HEADERS +endif + +define QT5WAYLAND_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake $(QT5WAYLAND_QMAKEFLAGS)) +endef + +define QT5WAYLAND_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5WAYLAND_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_PACKAGE_QT5WAYLAND_COMPOSITOR),y) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +define QT5WAYLAND_INSTALL_COMPOSITOR + cp -dpf $(STAGING_DIR)/usr/lib/libQt5WaylandCompositor.so* $(TARGET_DIR)/usr/lib +endef +else +define QT5WAYLAND_INSTALL_COMPOSITOR + cp -dpf $(STAGING_DIR)/usr/lib/libQt5Compositor.so* $(TARGET_DIR)/usr/lib +endef +endif +endif + +define QT5WAYLAND_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5WaylandClient.so* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/wayland* $(TARGET_DIR)/usr/lib/qt/plugins + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/platforms/libqwayland* $(TARGET_DIR)/usr/lib/qt/plugins/platforms + $(QT5WAYLAND_INSTALL_COMPOSITOR) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5webchannel/Config.in b/buildroot/package/qt5/qt5webchannel/Config.in new file mode 100644 index 0000000..e3d8405 --- /dev/null +++ b/buildroot/package/qt5/qt5webchannel/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_QT5WEBCHANNEL + bool "qt5webchannel" + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5WEBSOCKETS + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt WebChannel enables peer-to-peer communication between + a server (QML/C++ application) and a client + (HTML/JavaScript or QML application). + + http://doc.qt.io/qt-5/qtwebchannel-index.html diff --git a/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash b/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash new file mode 100644 index 0000000..b78f917 --- /dev/null +++ b/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash @@ -0,0 +1,17 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtwebchannel-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 8eb1b0ac2286653c7932758c21e7760788a5d7cfd6162da09afa926d5be50713 qtwebchannel-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtwebchannel-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 222df712c661d4003eebf28806cfd25047721e1c21b70ca320c5978c4a2c7ba5 qtwebchannel-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk b/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk new file mode 100644 index 0000000..d46e053 --- /dev/null +++ b/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# qt5webchannel +# +################################################################################ + +QT5WEBCHANNEL_VERSION = $(QT5_VERSION) +QT5WEBCHANNEL_SITE = $(QT5_SITE) +QT5WEBCHANNEL_SOURCE = qtwebchannel-opensource-src-$(QT5WEBCHANNEL_VERSION).tar.xz +QT5WEBCHANNEL_DEPENDENCIES = qt5base qt5websockets +QT5WEBCHANNEL_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5WEBCHANNEL_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5WEBCHANNEL_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL +else +QT5WEBCHANNEL_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5WEBCHANNEL_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5WEBCHANNEL_LICENSE := $(QT5WEBCHANNEL_LICENSE), BSD-3-Clause (examples) +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5WEBCHANNEL_DEPENDENCIES += qt5declarative +endif + +define QT5WEBCHANNEL_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5WEBCHANNEL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5WEBCHANNEL_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +define QT5WEBCHANNEL_INSTALL_TARGET_JAVASCRIPT + $(INSTALL) -m 0644 -D $(@D)/examples/webchannel/shared/qwebchannel.js \ + $(TARGET_DIR)/var/www/qwebchannel.js +endef +else +define QT5WEBCHANNEL_INSTALL_TARGET_JAVASCRIPT + $(INSTALL) -m 0644 -D $(@D)/src/webchannel/qwebchannel.js \ + $(TARGET_DIR)/var/www/qwebchannel.js +endef +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +define QT5WEBCHANNEL_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtWebChannel $(TARGET_DIR)/usr/qml/ +endef +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5WEBCHANNEL_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/webchannel $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +ifneq ($(BR2_STATIC_LIBS),y) +define QT5WEBCHANNEL_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebChannel.so.* $(TARGET_DIR)/usr/lib +endef +endif + +define QT5WEBCHANNEL_INSTALL_TARGET_CMDS + $(QT5WEBCHANNEL_INSTALL_TARGET_LIBS) + $(QT5WEBCHANNEL_INSTALL_TARGET_QMLS) + $(QT5WEBCHANNEL_INSTALL_TARGET_JAVASCRIPT) + $(QT5WEBCHANNEL_INSTALL_TARGET_EXAMPLES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5webengine/5.6.3/0001-Change-default-SSL-directory.patch b/buildroot/package/qt5/qt5webengine/5.6.3/0001-Change-default-SSL-directory.patch new file mode 100644 index 0000000..15cd9f8 --- /dev/null +++ b/buildroot/package/qt5/qt5webengine/5.6.3/0001-Change-default-SSL-directory.patch @@ -0,0 +1,35 @@ +From fc41c0f572ff347142cca4bf5d82b87782bb5906 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Thu, 23 Nov 2017 16:18:06 -0500 +Subject: [PATCH] Change default SSL directory +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +Change the default SSL directory, as buildroot ca-cert package is +installed at /etc/ssl. That way, we don't have to use the SSL_CERT_DIR +environment at runtime. + +Upstream-Status: Inappropriate +Signed-off-by: Damien Riegel +Signed-off-by: Gaël PORTAY +--- + src/core/qtwebengine_extras.gypi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/qtwebengine_extras.gypi b/src/core/qtwebengine_extras.gypi +index 229421ef..3b2386c0 100644 +--- a/src/core/qtwebengine_extras.gypi ++++ b/src/core/qtwebengine_extras.gypi +@@ -96,7 +96,7 @@ + 'GL_GLEXT_PROTOTYPES', + 'EGL_EGLEXT_PROTOTYPES', + # At runtime the env variable SSL_CERT_DIR can be used to override this +- 'OPENSSLDIR="/usr/lib/ssl"', ++ 'OPENSSLDIR="/etc/ssl"', + 'OPENSSL_LOAD_CONF', + 'EGL_API_FB=1', + 'LINUX=1', +-- +2.15.0 + diff --git a/buildroot/package/qt5/qt5webengine/5.6.3/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch b/buildroot/package/qt5/qt5webengine/5.6.3/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch new file mode 100644 index 0000000..05ed295 --- /dev/null +++ b/buildroot/package/qt5/qt5webengine/5.6.3/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch @@ -0,0 +1,93 @@ +From bdfd084296681bcead17c42f1e5cf0e24ee04f65 Mon Sep 17 00:00:00 2001 +From: Viktor Engelmann +Date: Fri, 7 Jul 2017 12:56:19 +0200 +Subject: [PATCH] Load libEGL and libGLES2 symbols implicitly +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +Instead of explicitly loading libraries from hard-coded locations, +we now just call dlopen(NULL, RTLD_LAZY). This returns a handle to +the host process'es context, which already contains the symbols of +both these libraries, because we link against them. +It was necessary to bypass LoadLibrary, because that expects a non-NULL +file path, so we couldn't pass NULL through that interface. + +Upstream-Status: Merged +Task-number: QTBUG-57761 +Change-Id: I29f037dfe542222b5188a33c7727c81a464a87bb +Reviewed-by: Allan Sandfeld Jensen +Reviewed-by: Michal Klocek +Signed-off-by: Gaël PORTAY +[gportay: backport from 5.9 and merge conflicts] +--- + src/core/surface_factory_qt.cpp | 40 ++++++++-------------------------------- + 1 file changed, 8 insertions(+), 32 deletions(-) + +diff --git a/src/core/surface_factory_qt.cpp b/src/core/surface_factory_qt.cpp +index 48c91bfc..c6059b67 100644 +--- a/src/core/surface_factory_qt.cpp ++++ b/src/core/surface_factory_qt.cpp +@@ -51,51 +51,27 @@ + #if defined(USE_OZONE) + + #include +- +-#ifndef QT_LIBDIR_EGL +-#define QT_LIBDIR_EGL "/usr/lib" +-#endif +-#ifndef QT_LIBDIR_GLES2 +-#define QT_LIBDIR_GLES2 QT_LIBDIR_EGL +-#endif ++#include + + namespace QtWebEngineCore { + +-base::NativeLibrary LoadLibrary(const base::FilePath& filename) { +- base::NativeLibraryLoadError error; +- base::NativeLibrary library = base::LoadNativeLibrary(filename, &error); +- if (!library) { +- LOG(ERROR) << "Failed to load " << filename.MaybeAsASCII() << ": " << error.ToString(); +- return NULL; +- } +- return library; +-} +- + bool SurfaceFactoryQt::LoadEGLGLES2Bindings(AddGLLibraryCallback add_gl_library, SetGLGetProcAddressProcCallback set_gl_get_proc_address) + { +- base::FilePath libEGLPath = QtWebEngineCore::toFilePath(QT_LIBDIR_EGL); +- libEGLPath = libEGLPath.Append("libEGL.so.1"); +- base::NativeLibrary eglLibrary = LoadLibrary(libEGLPath); +- if (!eglLibrary) +- return false; +- +- base::FilePath libGLES2Path = QtWebEngineCore::toFilePath(QT_LIBDIR_GLES2); +- libGLES2Path = libGLES2Path.Append("libGLESv2.so.2"); +- base::NativeLibrary gles2Library = LoadLibrary(libGLES2Path); +- if (!gles2Library) ++ base::NativeLibrary eglgles2Library = dlopen(NULL, RTLD_LAZY); ++ if (!eglgles2Library) { ++ LOG(ERROR) << "Failed to open EGL/GLES2 context " << dlerror(); + return false; ++ } + +- gfx::GLGetProcAddressProc get_proc_address = reinterpret_cast(base::GetFunctionPointerFromNativeLibrary(eglLibrary, "eglGetProcAddress")); ++ gfx::GLGetProcAddressProc get_proc_address = reinterpret_cast(base::GetFunctionPointerFromNativeLibrary(eglgles2Library, "eglGetProcAddress")); + if (!get_proc_address) { + LOG(ERROR) << "eglGetProcAddress not found."; +- base::UnloadNativeLibrary(eglLibrary); +- base::UnloadNativeLibrary(gles2Library); ++ base::UnloadNativeLibrary(eglgles2Library); + return false; + } + + gfx::SetGLGetProcAddressProc(get_proc_address); +- gfx::AddGLNativeLibrary(eglLibrary); +- gfx::AddGLNativeLibrary(gles2Library); ++ gfx::AddGLNativeLibrary(eglgles2Library); + return true; + } + +-- +2.15.0 + diff --git a/buildroot/package/qt5/qt5webengine/Config.in b/buildroot/package/qt5/qt5webengine/Config.in new file mode 100644 index 0000000..7c99255 --- /dev/null +++ b/buildroot/package/qt5/qt5webengine/Config.in @@ -0,0 +1,94 @@ +config BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_arm || \ + BR2_i386 || BR2_x86_64 || \ + BR2_mips || BR2_mips64 + # -m32 flag is used for 32bit builds and host tools have + # limited architecture support + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + depends on !BR2_BINFMT_FLAT # qt5base-icu + depends on BR2_USE_MMU # libglib2, qt5base-dbus + +comment "qt5webengine needs udev /dev management and a glibc toolchain w/ gcc >= 4.8, host gcc >= 4.8, threads, wchar" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + +comment "qt5webengine needs an OpenGL and EGL-capable backend" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE || !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_QT5WEBENGINE + bool "qt5webengine" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC # execinfo.h, mallinfo + depends on BR2_HOST_GCC_AT_LEAST_4_8 # qt5base-icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # qt5base-icu + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, libvpx, qt5base-dbus + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_PACKAGE_QT5_GL_AVAILABLE # qt5declarative, qt5base-eglfs + depends on BR2_PACKAGE_HAS_LIBEGL # qt5base-eglfs + depends on BR2_PACKAGE_HAS_UDEV + # v8 (a chromium 3rd-party) compiles its internal host-tools with the + # same word size as the target. For 32-bits targets, it adds the -m32 + # flag (for 64-bits, it adds the -m64 flag). + # https://github.com/v8/v8/blob/5.6.326.55/gypfiles/toolchain.gypi#L1036-L1037 + select BR2_HOSTARCH_NEEDS_IA32_COMPILER if !BR2_ARCH_IS_64 # v8/chromium + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBVPX + select BR2_PACKAGE_OPUS + select BR2_PACKAGE_WEBP + select BR2_PACKAGE_WEBP_DEMUX + select BR2_PACKAGE_QT5BASE_DBUS + select BR2_PACKAGE_QT5BASE_EGLFS + select BR2_PACKAGE_QT5BASE_FONTCONFIG + select BR2_PACKAGE_QT5BASE_ICU + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + select BR2_PACKAGE_QT5QUICKCONTROLS + select BR2_PACKAGE_QT5QUICKCONTROLS2 + select BR2_PACKAGE_QT5WEBCHANNEL + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXCURSOR if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXI if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXTST if BR2_PACKAGE_QT5BASE_XCB + help + The Qt WebEngine module provides a web browser engine that + makes it easy to embed content from the World Wide Web into + your Qt application. + + Qt WebEngine provides C++ classes and QML types for rendering + HTML, XHTML, and SVG documents, styled using Cascading Style + Sheets (CSS) and scripted with JavaScript. HTML documents can + be made fully editable by the user through the use of the + contenteditable attribute on HTML elements. + + http://doc.qt.io/qt-5/qtwebengine-index.html + +if BR2_PACKAGE_QT5WEBENGINE + +config BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS + bool "proprietary codecs" + help + Qt WebEngine supports the MPEG-4 Part 14 (MP4) file format, + which includes required proprietary audio and video codecs, + such as H.264 and MPEG layer-3 (MP3). + +config BR2_PACKAGE_QT5WEBENGINE_ALSA + bool "alsa" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_ALSA_LIB_RAWMIDI + select BR2_PACKAGE_ALSA_LIB_HWDEP + select BR2_PACKAGE_ALSA_LIB_SEQ + help + Enable ALSA support. + +endif diff --git a/buildroot/package/qt5/qt5webengine/chromium.inc b/buildroot/package/qt5/qt5webengine/chromium.inc new file mode 100644 index 0000000..da709fd --- /dev/null +++ b/buildroot/package/qt5/qt5webengine/chromium.inc @@ -0,0 +1,310 @@ +CHROMIUM_LICENSE_FILES = \ + src/3rdparty/chromium/base/third_party/dmg_fp/LICENSE \ + src/3rdparty/chromium/base/third_party/dynamic_annotations/LICENSE \ + src/3rdparty/chromium/base/third_party/icu/LICENSE \ + src/3rdparty/chromium/base/third_party/libevent/LICENSE \ + src/3rdparty/chromium/base/third_party/nspr/LICENSE \ + src/3rdparty/chromium/base/third_party/superfasthash/LICENSE \ + src/3rdparty/chromium/base/third_party/symbolize/LICENSE \ + src/3rdparty/chromium/base/third_party/valgrind/LICENSE \ + src/3rdparty/chromium/base/third_party/xdg_mime/LICENSE \ + src/3rdparty/chromium/base/third_party/xdg_user_dirs/LICENSE \ + src/3rdparty/chromium/buildtools/LICENSE \ + src/3rdparty/chromium/buildtools/third_party/libc++abi/trunk/LICENSE.TXT \ + src/3rdparty/chromium/buildtools/third_party/libc++/trunk/LICENSE.TXT \ + src/3rdparty/chromium/chrome/third_party/chromevox/LICENSE \ + src/3rdparty/chromium/chrome/third_party/chromevox/third_party/closure-library/LICENSE \ + src/3rdparty/chromium/LICENSE \ + src/3rdparty/chromium/LICENSE.chromium_os \ + src/3rdparty/chromium/mojo/public/LICENSE \ + src/3rdparty/chromium/net/third_party/mozilla_security_manager/LICENSE \ + src/3rdparty/chromium/net/third_party/nss/LICENSE \ + src/3rdparty/chromium/ppapi/LICENSE \ + src/3rdparty/chromium/sdch/open-vcdiff/COPYING \ + src/3rdparty/chromium/testing/gmock/LICENSE \ + src/3rdparty/chromium/testing/gmock/scripts/generator/LICENSE \ + src/3rdparty/chromium/testing/gtest/LICENSE \ + src/3rdparty/chromium/third_party/accessibility_test_framework/LICENSE \ + src/3rdparty/chromium/third_party/afl/src/docs/COPYING \ + src/3rdparty/chromium/third_party/angle/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/third_party/compiler/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/third_party/libXNVCtrl/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/third_party/murmurhash/LICENSE \ + src/3rdparty/chromium/third_party/apache-portable-runtime/LICENSE \ + src/3rdparty/chromium/third_party/apache_velocity/LICENSE \ + src/3rdparty/chromium/third_party/apple_apsl/LICENSE \ + src/3rdparty/chromium/third_party/bintrees/LICENSE.txt \ + src/3rdparty/chromium/third_party/blanketjs/LICENSE \ + src/3rdparty/chromium/third_party/blimp_fonts/LICENSE \ + src/3rdparty/chromium/third_party/blimp_fonts/LICENSE.Apache \ + src/3rdparty/chromium/third_party/blimp_fonts/LICENSE.OFL \ + src/3rdparty/chromium/third_party/boringssl/src/LICENSE \ + src/3rdparty/chromium/third_party/boringssl/src/third_party/android-cmake/LICENSE \ + src/3rdparty/chromium/third_party/bouncycastle/LICENSE \ + src/3rdparty/chromium/third_party/brotli/LICENSE \ + src/3rdparty/chromium/third_party/bspatch/LICENSE \ + src/3rdparty/chromium/third_party/byte_buddy/LICENSE \ + src/3rdparty/chromium/third_party/ced/LICENSE \ + src/3rdparty/chromium/third_party/ced/src/LICENSE \ + src/3rdparty/chromium/third_party/chaijs/LICENSE \ + src/3rdparty/chromium/third_party/checkstyle/LICENSE \ + src/3rdparty/chromium/third_party/checkstyle/LICENSE.apache20 \ + src/3rdparty/chromium/third_party/cld_3/LICENSE \ + src/3rdparty/chromium/third_party/cld_3/src/LICENSE \ + src/3rdparty/chromium/third_party/cld/LICENSE \ + src/3rdparty/chromium/third_party/closure_compiler/compiler/COPYING \ + src/3rdparty/chromium/third_party/closure_compiler/LICENSE \ + src/3rdparty/chromium/third_party/closure_linter/LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/apple_cctools/cctools/APPLE_LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/apple_cf/APPLE_LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/getopt/LICENSE \ + src/3rdparty/chromium/third_party/cros_system_api/LICENSE \ + src/3rdparty/chromium/third_party/cros_system_api/MODULE_LICENSE_BSD \ + src/3rdparty/chromium/third_party/custom_tabs_client/LICENSE \ + src/3rdparty/chromium/third_party/d3/src/LICENSE \ + src/3rdparty/chromium/third_party/decklink/LICENSE \ + src/3rdparty/chromium/third_party/devscripts/COPYING \ + src/3rdparty/chromium/third_party/dom_distiller_js/LICENSE \ + src/3rdparty/chromium/third_party/dpkg-dev/LICENSE \ + src/3rdparty/chromium/third_party/drmemory/LICENSE \ + src/3rdparty/chromium/third_party/errorprone/LICENSE \ + src/3rdparty/chromium/third_party/espresso/LICENSE \ + src/3rdparty/chromium/third_party/expat/files/COPYING \ + src/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/full_lgpl.txt \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.GPLv2 \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.GPLv3 \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.LGPLv2.1 \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.LGPLv3 \ + src/3rdparty/chromium/third_party/ffmpeg/LICENSE.md \ + src/3rdparty/chromium/third_party/fips181/COPYING \ + src/3rdparty/chromium/third_party/flac/COPYING.FDL \ + src/3rdparty/chromium/third_party/flac/COPYING.GPL \ + src/3rdparty/chromium/third_party/flac/COPYING.LGPL \ + src/3rdparty/chromium/third_party/flac/COPYING.Xiph \ + src/3rdparty/chromium/third_party/flatbuffers/LICENSE \ + src/3rdparty/chromium/third_party/flatbuffers/src/LICENSE.txt \ + src/3rdparty/chromium/third_party/flot/LICENSE.txt \ + src/3rdparty/chromium/third_party/fontconfig/LICENSE \ + src/3rdparty/chromium/third_party/fontconfig/src/COPYING \ + src/3rdparty/chromium/third_party/freetype2/src/docs/GPLv2.TXT \ + src/3rdparty/chromium/third_party/freetype2/src/docs/LICENSE.TXT \ + src/3rdparty/chromium/third_party/gardiner_mod/LICENSE \ + src/3rdparty/chromium/third_party/gif_player/LICENSE \ + src/3rdparty/chromium/third_party/glslang/LICENSE \ + src/3rdparty/chromium/third_party/grpc/LICENSE \ + src/3rdparty/chromium/third_party/grpc/src/node/health_check/LICENSE \ + src/3rdparty/chromium/third_party/grpc/src/php/ext/grpc/LICENSE \ + src/3rdparty/chromium/third_party/grpc/third_party/nanopb/LICENSE.txt \ + src/3rdparty/chromium/third_party/grpc/third_party/rake-compiler-dock/LICENSE.txt \ + src/3rdparty/chromium/third_party/guava/LICENSE \ + src/3rdparty/chromium/third_party/gvr-android-sdk/LICENSE \ + src/3rdparty/chromium/third_party/haha/LICENSE \ + src/3rdparty/chromium/third_party/hamcrest/LICENSE \ + src/3rdparty/chromium/third_party/harfbuzz-ng/COPYING \ + src/3rdparty/chromium/third_party/hunspell/COPYING \ + src/3rdparty/chromium/third_party/hunspell/COPYING.LGPL \ + src/3rdparty/chromium/third_party/hunspell/COPYING.MPL \ + src/3rdparty/chromium/third_party/hunspell/src/hunspell/license.hunspell \ + src/3rdparty/chromium/third_party/hunspell/src/hunspell/license.myspell \ + src/3rdparty/chromium/third_party/hwcplus/LICENSE \ + src/3rdparty/chromium/third_party/iaccessible2/LICENSE \ + src/3rdparty/chromium/third_party/iccjpeg/LICENSE \ + src/3rdparty/chromium/third_party/icu4j/LICENSE \ + src/3rdparty/chromium/third_party/icu/LICENSE \ + src/3rdparty/chromium/third_party/icu/license.html \ + src/3rdparty/chromium/third_party/icu/scripts/LICENSE \ + src/3rdparty/chromium/third_party/ijar/LICENSE \ + src/3rdparty/chromium/third_party/inspector_protocol/LICENSE \ + src/3rdparty/chromium/third_party/intellij/LICENSE \ + src/3rdparty/chromium/third_party/isimpledom/LICENSE \ + src/3rdparty/chromium/third_party/javax_inject/LICENSE \ + src/3rdparty/chromium/third_party/jinja2/LICENSE \ + src/3rdparty/chromium/third_party/jmake/LICENSE \ + src/3rdparty/chromium/third_party/jsoncpp/LICENSE \ + src/3rdparty/chromium/third_party/jstemplate/COPYING \ + src/3rdparty/chromium/third_party/khronos/LICENSE \ + src/3rdparty/chromium/third_party/leakcanary/LICENSE \ + src/3rdparty/chromium/third_party/leveldatabase/src/LICENSE \ + src/3rdparty/chromium/third_party/libaddressinput/LICENSE \ + src/3rdparty/chromium/third_party/libaddressinput/src/cpp/LICENSE.chromium \ + src/3rdparty/chromium/third_party/libaddressinput/src/LICENSE \ + src/3rdparty/chromium/third_party/libFuzzer/LICENSE.TXT \ + src/3rdparty/chromium/third_party/libjpeg/LICENSE \ + src/3rdparty/chromium/third_party/libjpeg_turbo/LICENSE.md \ + src/3rdparty/chromium/third_party/libpng/LICENSE \ + src/3rdparty/chromium/third_party/libsecret/LICENSE \ + src/3rdparty/chromium/third_party/libsrtp/LICENSE \ + src/3rdparty/chromium/third_party/libsync/LICENSE \ + src/3rdparty/chromium/third_party/libudev/LICENSE \ + src/3rdparty/chromium/third_party/libusb/src/COPYING \ + src/3rdparty/chromium/third_party/libva/COPYING \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/LICENSE \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/googletest/src/LICENSE \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/libwebm/LICENSE.TXT \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/x86inc/LICENSE \ + src/3rdparty/chromium/third_party/libwebm/source/LICENSE.TXT \ + src/3rdparty/chromium/third_party/libwebp/LICENSE \ + src/3rdparty/chromium/third_party/libxml/src/COPYING \ + src/3rdparty/chromium/third_party/libXNVCtrl/LICENSE \ + src/3rdparty/chromium/third_party/libxslt/linux/COPYING \ + src/3rdparty/chromium/third_party/libyuv/LICENSE \ + src/3rdparty/chromium/third_party/libyuv/LICENSE_THIRD_PARTY \ + src/3rdparty/chromium/third_party/libyuv/third_party/gflags/LICENSE \ + src/3rdparty/chromium/third_party/lzma_sdk/LICENSE \ + src/3rdparty/chromium/third_party/mach_override/LICENSE \ + src/3rdparty/chromium/third_party/markupsafe/LICENSE \ + src/3rdparty/chromium/third_party/mesa/LICENSE \ + src/3rdparty/chromium/third_party/mesa/src/docs/COPYING \ + src/3rdparty/chromium/third_party/mesa/src/docs/license.html \ + src/3rdparty/chromium/third_party/mesa/src/src/gallium/drivers/radeon/LICENSE.TXT \ + src/3rdparty/chromium/third_party/minigbm/LICENSE \ + src/3rdparty/chromium/third_party/mocha/LICENSE \ + src/3rdparty/chromium/third_party/mockito/LICENSE \ + src/3rdparty/chromium/third_party/modp_b64/LICENSE \ + src/3rdparty/chromium/third_party/molokocacao/LICENSE \ + src/3rdparty/chromium/third_party/motemplate/LICENSE \ + src/3rdparty/chromium/third_party/mozilla/LICENSE \ + src/3rdparty/chromium/third_party/mt19937ar/LICENSE \ + src/3rdparty/chromium/third_party/netty4/LICENSE \ + src/3rdparty/chromium/third_party/netty-tcnative/LICENSE \ + src/3rdparty/chromium/third_party/objenesis/LICENSE \ + src/3rdparty/chromium/third_party/ocmock/License.txt \ + src/3rdparty/chromium/third_party/openh264/src/LICENSE \ + src/3rdparty/chromium/third_party/openmax_dl/LICENSE \ + src/3rdparty/chromium/third_party/opus/src/COPYING \ + src/3rdparty/chromium/third_party/ots/LICENSE \ + src/3rdparty/chromium/third_party/ow2_asm/LICENSE \ + src/3rdparty/chromium/third_party/pdfium/LICENSE \ + src/3rdparty/chromium/third_party/pdfium/third_party/bigint/LICENSE \ + src/3rdparty/chromium/third_party/pdfium/third_party/pymock/LICENSE.txt \ + src/3rdparty/chromium/third_party/pexpect/LICENSE \ + src/3rdparty/chromium/third_party/ply/LICENSE \ + src/3rdparty/chromium/third_party/polymer/v1_0/components-chromium/polymer/LICENSE.txt \ + src/3rdparty/chromium/third_party/proguard/LICENSE \ + src/3rdparty/chromium/third_party/protobuf/LICENSE \ + src/3rdparty/chromium/third_party/pycoverage/LICENSE \ + src/3rdparty/chromium/third_party/pyelftools/elftools/construct/LICENSE \ + src/3rdparty/chromium/third_party/pyelftools/LICENSE \ + src/3rdparty/chromium/third_party/pyftpdlib/src/LICENSE \ + src/3rdparty/chromium/third_party/pymock/LICENSE.txt \ + src/3rdparty/chromium/third_party/python_gflags/COPYING \ + src/3rdparty/chromium/third_party/Python-Markdown/LICENSE.md \ + src/3rdparty/chromium/third_party/py_trace_event/src/LICENSE \ + src/3rdparty/chromium/third_party/pywebsocket/src/LICENSE \ + src/3rdparty/chromium/third_party/qcms/src/COPYING \ + src/3rdparty/chromium/third_party/qunit/LICENSE \ + src/3rdparty/chromium/third_party/re2/LICENSE \ + src/3rdparty/chromium/third_party/re2/src/LICENSE \ + src/3rdparty/chromium/third_party/requests/LICENSE \ + src/3rdparty/chromium/third_party/robolectric/LICENSE \ + src/3rdparty/chromium/third_party/robolectric/licenses/extreme.indiana.edu.license.txt \ + src/3rdparty/chromium/third_party/robolectric/licenses/javolution.license.txt \ + src/3rdparty/chromium/third_party/robolectric/licenses/pivotal.labs.license.txt \ + src/3rdparty/chromium/third_party/sfntly/COPYING.txt \ + src/3rdparty/chromium/third_party/sfntly/src/cpp/COPYING.txt \ + src/3rdparty/chromium/third_party/sfntly/src/java/COPYING \ + src/3rdparty/chromium/third_party/shaderc/LICENSE \ + src/3rdparty/chromium/third_party/shaderc/src/LICENSE \ + src/3rdparty/chromium/third_party/shaderc/src/third_party/LICENSE.glslang \ + src/3rdparty/chromium/third_party/shaderc/src/third_party/LICENSE.spirv-tools \ + src/3rdparty/chromium/third_party/simplejson/LICENSE.txt \ + src/3rdparty/chromium/third_party/sinonjs/LICENSE \ + src/3rdparty/chromium/third_party/skia/LICENSE \ + src/3rdparty/chromium/third_party/skia/platform_tools/android/third_party/ashmem/LICENSE \ + src/3rdparty/chromium/third_party/skia/third_party/etc1/LICENSE \ + src/3rdparty/chromium/third_party/skia/third_party/gif/LICENSE \ + src/3rdparty/chromium/third_party/skia/third_party/libpng/LICENSE \ + src/3rdparty/chromium/third_party/smhasher/LICENSE \ + src/3rdparty/chromium/third_party/snappy/src/COPYING \ + src/3rdparty/chromium/third_party/SPIRV-Tools/LICENSE \ + src/3rdparty/chromium/third_party/SPIRV-Tools/src/LICENSE \ + src/3rdparty/chromium/third_party/sqlite4java/LICENSE \ + src/3rdparty/chromium/third_party/sqlite/LICENSE \ + src/3rdparty/chromium/third_party/sqlite/sqlite-src-3100200/autoconf/tea/license.terms \ + src/3rdparty/chromium/third_party/sqlite/src/autoconf/tea/license.terms \ + src/3rdparty/chromium/third_party/sudden_motion_sensor/LICENSE \ + src/3rdparty/chromium/third_party/swiftshader/LICENSE.txt \ + src/3rdparty/chromium/third_party/swiftshader/third_party/LLVM/autoconf/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/Support/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/LLVM/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/LLVM/projects/sample/autoconf/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/llvm-subzero/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/LLVM/utils/unittest/googletest/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/PowerVR_SDK/License.txt \ + src/3rdparty/chromium/third_party/tcmalloc/LICENSE \ + src/3rdparty/chromium/third_party/tcmalloc/vendor/COPYING \ + src/3rdparty/chromium/third_party/tlslite/LICENSE \ + src/3rdparty/chromium/third_party/typ/LICENSE \ + src/3rdparty/chromium/third_party/ub-uiautomator/LICENSE \ + src/3rdparty/chromium/third_party/usb_ids/LICENSE \ + src/3rdparty/chromium/third_party/usrsctp/LICENSE \ + src/3rdparty/chromium/third_party/usrsctp/usrsctplib/LICENSE.md \ + src/3rdparty/chromium/third_party/v4l2capture/LICENSE \ + src/3rdparty/chromium/third_party/v4l-utils/COPYING.libv4l \ + src/3rdparty/chromium/third_party/visualmetrics/src/LICENSE \ + src/3rdparty/chromium/third_party/vulkan/LICENSE \ + src/3rdparty/chromium/third_party/wayland/LICENSE \ + src/3rdparty/chromium/third_party/wayland-protocols/LICENSE \ + src/3rdparty/chromium/third_party/wayland-protocols/src/COPYING \ + src/3rdparty/chromium/third_party/wayland/src/COPYING \ + src/3rdparty/chromium/third_party/wds/LICENSE \ + src/3rdparty/chromium/third_party/wds/src/COPYING \ + src/3rdparty/chromium/third_party/web-animations-js/LICENSE \ + src/3rdparty/chromium/third_party/web-animations-js/sources/COPYING \ + src/3rdparty/chromium/third_party/webdriver/COPYING \ + src/3rdparty/chromium/third_party/webdriver/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/LICENSE_FOR_ABOUT_CREDITS \ + src/3rdparty/chromium/third_party/WebKit/Source/core/LICENSE-APPLE \ + src/3rdparty/chromium/third_party/WebKit/Source/core/LICENSE-LGPL-2 \ + src/3rdparty/chromium/third_party/WebKit/Source/core/LICENSE-LGPL-2.1 \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/audits2_worker/lighthouse/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/cm/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/cm/LICENSE_python \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/cm_modes/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/formatter_worker/acorn/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/gonzales/MIT-LICENSE.txt \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/terminal/xterm.js/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/scripts/closure/COPYING \ + src/3rdparty/chromium/third_party/WebKit/Source/wtf/dtoa/COPYING \ + src/3rdparty/chromium/third_party/WebKit/Source/wtf/dtoa/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/COPYING \ + src/3rdparty/chromium/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/six/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/wptserve/LICENSE \ + src/3rdparty/chromium/third_party/webpagereplay/COPYING \ + src/3rdparty/chromium/third_party/webpagereplay/third_party/dns/LICENSE \ + src/3rdparty/chromium/third_party/webpagereplay/third_party/ipaddr/COPYING \ + src/3rdparty/chromium/third_party/webpagereplay/third_party/ipfw_win32/LICENSE \ + src/3rdparty/chromium/third_party/webpagereplay/third_party/jsmin/LICENSE.txt \ + src/3rdparty/chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE.md \ + src/3rdparty/chromium/third_party/webrtc/examples/objc/AppRTCMobile/third_party/SocketRocket/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/LICENSE_THIRD_PARTY \ + src/3rdparty/chromium/third_party/webtreemap/src/COPYING \ + src/3rdparty/chromium/third_party/woff2/LICENSE \ + src/3rdparty/chromium/third_party/x86inc/LICENSE \ + src/3rdparty/chromium/third_party/xdg-utils/LICENSE \ + src/3rdparty/chromium/third_party/yasm/source/patched-yasm/COPYING \ + src/3rdparty/chromium/third_party/yasm/source/patched-yasm/GNU_GPL-2.0 \ + src/3rdparty/chromium/third_party/yasm/source/patched-yasm/GNU_LGPL-2.0 \ + src/3rdparty/chromium/third_party/zlib/LICENSE \ + src/3rdparty/chromium/tools/gn/out/Release/obj/third_party/widevine/cdm/widevine_test_license_server.ninja \ + src/3rdparty/chromium/tools/gyp/LICENSE \ + src/3rdparty/chromium/tools/origin_trials/third_party/ed25519/LICENSE \ + src/3rdparty/chromium/tools/page_cycler/acid3/LICENSE \ + src/3rdparty/chromium/tools/symsrc/COPYING-pefile \ + src/3rdparty/chromium/tools/win/ChromeDebug/ChromeDebug/LICENSE \ + src/3rdparty/chromium/url/third_party/mozilla/LICENSE.txt \ + src/3rdparty/chromium/v8/LICENSE \ + src/3rdparty/chromium/v8/LICENSE.fdlibm \ + src/3rdparty/chromium/v8/LICENSE.strongtalk \ + src/3rdparty/chromium/v8/LICENSE.v8 \ + src/3rdparty/chromium/v8/LICENSE.valgrind \ + src/3rdparty/chromium/v8/src/third_party/valgrind/LICENSE \ + src/3rdparty/chromium/v8/src/third_party/vtune/LICENSE \ + src/3rdparty/chromium/v8/third_party/inspector_protocol/LICENSE \ + diff --git a/buildroot/package/qt5/qt5webengine/qt5webengine.hash b/buildroot/package/qt5/qt5webengine/qt5webengine.hash new file mode 100644 index 0000000..27ce589 --- /dev/null +++ b/buildroot/package/qt5/qt5webengine/qt5webengine.hash @@ -0,0 +1,5 @@ +# Hash from https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtwebengine-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 009d69fb39f6c0e2b0cd89a7e9302cd0ae1872d02c787d3a37f2cacca5ddb7a7 qtwebengine-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtwebengine-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 4766707f5d8c174a284c0ed813bc6163db0220d69736424d3370b44b640443a1 qtwebengine-opensource-src-5.9.6.tar.xz diff --git a/buildroot/package/qt5/qt5webengine/qt5webengine.mk b/buildroot/package/qt5/qt5webengine/qt5webengine.mk new file mode 100644 index 0000000..4d423f8 --- /dev/null +++ b/buildroot/package/qt5/qt5webengine/qt5webengine.mk @@ -0,0 +1,86 @@ +################################################################################ +# +# qt5webengine +# +################################################################################ + +QT5WEBENGINE_VERSION = $(QT5_VERSION) +QT5WEBENGINE_SITE = $(QT5_SITE) +QT5WEBENGINE_SOURCE = qtwebengine-opensource-src-$(QT5WEBENGINE_VERSION).tar.xz +QT5WEBENGINE_DEPENDENCIES = ffmpeg libglib2 libvpx opus webp qt5base \ + qt5declarative qt5webchannel host-bison host-flex host-gperf \ + host-pkgconf host-python +QT5WEBENGINE_INSTALL_STAGING = YES + +include package/qt5/qt5webengine/chromium.inc +QT5WEBENGINE_LICENSE = GPL-2.0 or LGPL-3.0 or GPL-3.0 or GPL-3.0 with exception +QT5WEBENGINE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT \ + LICENSE.GPLv3 LICENSE.LGPL3 $(CHROMIUM_LICENSE_FILES) + +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y) +QT5WEBENGINE_DEPENDENCIES += xlib_libXScrnSaver xlib_libXcomposite \ + xlib_libXcursor xlib_libXi xlib_libXrandr xlib_libXtst +endif + +QT5WEBENGINE_QMAKEFLAGS += WEBENGINE_CONFIG+=use_system_ffmpeg + +ifeq ($(BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS),y) +QT5WEBENGINE_QMAKEFLAGS += WEBENGINE_CONFIG+=use_proprietary_codecs +endif + +ifeq ($(BR2_PACKAGE_QT5WEBENGINE_ALSA),y) +QT5WEBENGINE_DEPENDENCIES += alsa-lib +else +QT5WEBENGINE_QMAKEFLAGS += QT_CONFIG-=alsa +endif + +# QtWebengine's build system uses python, but only supports python2. We work +# around this by forcing python2 early in the PATH, via a python->python2 +# symlink. +QT5WEBENGINE_ENV = PATH=$(@D)/host-bin:$(BR_PATH) +define QT5WEBENGINE_PYTHON2_SYMLINK + mkdir -p $(@D)/host-bin + ln -sf $(HOST_DIR)/bin/python2 $(@D)/host-bin/python +endef +QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_PYTHON2_SYMLINK + +define QT5WEBENGINE_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBENGINE_ENV) $(HOST_DIR)/bin/qmake $(QT5WEBENGINE_QMAKEFLAGS)) +endef + +define QT5WEBENGINE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(QT5WEBENGINE_ENV) $(MAKE) -C $(@D) +endef + +define QT5WEBENGINE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(QT5WEBENGINE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +define QT5WEBENGINE_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtWebEngine $(TARGET_DIR)/usr/qml/ +endef + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5WEBENGINE_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/webengine* $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +ifneq ($(BR2_STATIC_LIBS),y) +define QT5WEBENGINE_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebEngine*.so.* $(TARGET_DIR)/usr/lib + cp -dpf $(STAGING_DIR)/usr/libexec/QtWebEngineProcess $(TARGET_DIR)/usr/libexec/ + cp -dpfr $(STAGING_DIR)/usr/resources/ $(TARGET_DIR)/usr/ + mkdir -p $(TARGET_DIR)/usr/translations/qtwebengine_locales/ + cp -dpfr $(STAGING_DIR)/usr/translations/qtwebengine_locales $(TARGET_DIR)/usr/translations/qtwebengine_locales/ +endef +endif + +define QT5WEBENGINE_INSTALL_TARGET_CMDS + $(QT5WEBENGINE_INSTALL_TARGET_LIBS) + $(QT5WEBENGINE_INSTALL_TARGET_QMLS) + $(QT5WEBENGINE_INSTALL_TARGET_EXAMPLES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5webkit-examples/0001-Build-examples.patch b/buildroot/package/qt5/qt5webkit-examples/0001-Build-examples.patch new file mode 100644 index 0000000..6303006 --- /dev/null +++ b/buildroot/package/qt5/qt5webkit-examples/0001-Build-examples.patch @@ -0,0 +1,52 @@ +From 78f558df35860484711a600d155ae7a13ebf44b2 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Tue, 28 Nov 2017 23:14:42 -0500 +Subject: [PATCH 1/1] Build examples +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +This patch improves the qt5webkit examples build for 2 aspects: + + - Allows to build even if qt5base examples are not enabled + - Builds xmlpatterns example only if the qt5xmlpattern package + has been built + +Signed-off-by: Massimo Callegari +Signed-off-by: Gaël PORTAY +[gportay: build imageanalyzer example if concurrent module is built] +--- + examples/webkitwidgets/webkitwidgets.pro | 7 ++++--- + qtwebkit-examples.pro | 1 + + 2 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/examples/webkitwidgets/webkitwidgets.pro b/examples/webkitwidgets/webkitwidgets.pro +index ab20df4..67f6785 100644 +--- a/examples/webkitwidgets/webkitwidgets.pro ++++ b/examples/webkitwidgets/webkitwidgets.pro +@@ -4,9 +4,10 @@ SUBDIRS += domtraversal \ + previewer \ + fancybrowser \ + simpleselector \ +- imageanalyzer \ + framecapture \ + browser \ + embedded \ +- scroller \ +- xmlpatterns ++ scroller ++ ++qtHaveModule(xmlpatterns): SUBDIRS += xmlpatterns ++qtHaveModule(concurrent): SUBDIRS += imageanalyzer +diff --git a/qtwebkit-examples.pro b/qtwebkit-examples.pro +index 3fcecf1..2ade7ff 100644 +--- a/qtwebkit-examples.pro ++++ b/qtwebkit-examples.pro +@@ -3,3 +3,4 @@ requires(qtHaveModule(webkit)) + load(qt_parts) + + SUBDIRS += doc ++SUBDIRS += examples +-- +2.15.0 + diff --git a/buildroot/package/qt5/qt5webkit-examples/Config.in b/buildroot/package/qt5/qt5webkit-examples/Config.in new file mode 100644 index 0000000..47bbcba --- /dev/null +++ b/buildroot/package/qt5/qt5webkit-examples/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_QT5WEBKIT_EXAMPLES + bool "qt5webkit-examples" + depends on BR2_PACKAGE_QT5WEBKIT + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package contains examples for the qt5webkit module. + + http://qt.io diff --git a/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.hash b/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.hash new file mode 100644 index 0000000..6e4c090 --- /dev/null +++ b/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.hash @@ -0,0 +1,5 @@ +# Hash from: https://download.qt.io/community_releases/5.6/5.6.3/qtwebkit-examples-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 2d6ce7146298d03b443cca4390bbfee17c4c0b08a31efcbf9fe0732291a6169e qtwebkit-examples-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.1/submodules/qtwebkit-examples-opensource-src-5.9.1.tar.xz.mirrorlist +sha256 e4ce4de6b468243abad2baabbe8ddfb05d25b186529bfe88cb8662fc983f54d0 qtwebkit-examples-opensource-src-5.9.1.tar.xz diff --git a/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.mk b/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.mk new file mode 100644 index 0000000..4c01d83 --- /dev/null +++ b/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# qt5webkit-examples +# +################################################################################ + +# no 5.9.2 package available, fall back to 5.9.1 version +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5WEBKIT_EXAMPLES_VERSION = 5.9.1 +QT5WEBKIT_EXAMPLES_SITE = https://download.qt.io/official_releases/qt/5.9/5.9.1/submodules +else +QT5WEBKIT_EXAMPLES_VERSION = $(QT5_VERSION) +QT5WEBKIT_EXAMPLES_SITE = https://download.qt.io/community_releases/5.6/$(QT5_VERSION) +endif + +QT5WEBKIT_EXAMPLES_SOURCE = qtwebkit-examples-opensource-src-$(QT5WEBKIT_VERSION).tar.xz +QT5WEBKIT_EXAMPLES_DEPENDENCIES = qt5base qt5webkit + +QT5WEBKIT_EXAMPLES_LICENSE_FILES = LICENSE.LGPLv21 LICENSE.LGPLv3 LICENSE.GPLv2 LICENSE.GPLv3 + +QT5WEBKIT_EXAMPLES_LICENSE = LGPL-2.1 with exception or LGPL-3 or GPL-2 or GPL-3 +# Source files contain references to LGPL_EXCEPTION.txt but it is not included +# in the archive. + +ifeq ($(BR2_PACKAGE_QT5XMLPATTERNS),y) +QT5WEBKIT_EXAMPLES_DEPENDENCIES += qt5xmlpatterns +endif + +define QT5WEBKIT_EXAMPLES_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5WEBKIT_EXAMPLES_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5WEBKIT_EXAMPLES_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5WEBKIT_EXAMPLES_DEPENDENCIES += qt5declarative +define QT5WEBKIT_EXAMPLES_INSTALL_QML + cp -dpfr $(@D)/examples/webkitqml $(TARGET_DIR)/usr/lib/qt/examples +endef +endif + +define QT5WEBKIT_EXAMPLES_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/lib/qt/examples + cp -dpfr $(@D)/examples/webkitwidgets $(TARGET_DIR)/usr/lib/qt/examples + $(QT5WEBKIT_EXAMPLES_INSTALL_QML) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5webkit/5.6.3/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch b/buildroot/package/qt5/qt5webkit/5.6.3/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch new file mode 100644 index 0000000..669c7e6 --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/5.6.3/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch @@ -0,0 +1,36 @@ +From 1735a8484ef9ae336f8d607b56bda64c8af10c79 Mon Sep 17 00:00:00 2001 +From: Trevor Woerner +Date: Fri, 7 Feb 2014 04:07:17 +0100 +Subject: [PATCH] qtwebkit: fix QA issue (bad RPATH) + +Building qtwebkit causes a QA issue such that QtWebPluginProcess and +QtWebProcess contain bad RPATHs which point into the build location. This fix +adds a patch to not include the rpath.prf which causes this problem. + +Signed-off-by: Trevor Woerner +Signed-off-by: Martin Jansa + +Downloaded from: +https://github.com/meta-qt5/meta-qt5/blob/krogoth/recipes-qt/qt5/qtwebkit/ +0001-qtwebkit-fix-QA-issue-bad-RPATH.patch + +Signed-off-by: Gary Bisson +--- + Tools/qmake/mkspecs/features/unix/default_post.prf | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Tools/qmake/mkspecs/features/unix/default_post.prf b/Tools/qmake/mkspecs/features/unix/default_post.prf +index fd66af6..ef754c3 100644 +--- a/Tools/qmake/mkspecs/features/unix/default_post.prf ++++ b/Tools/qmake/mkspecs/features/unix/default_post.prf +@@ -61,7 +61,6 @@ linux-*g++* { + } + } + +-contains(TEMPLATE, app): CONFIG += rpath + + CONFIG(debug, debug|release)|force_debug_info { + # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase. +-- +2.7.0 + diff --git a/buildroot/package/qt5/qt5webkit/5.6.3/0002-Remove-TEXTREL-tag-in-x86.patch b/buildroot/package/qt5/qt5webkit/5.6.3/0002-Remove-TEXTREL-tag-in-x86.patch new file mode 100644 index 0000000..14352a1 --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/5.6.3/0002-Remove-TEXTREL-tag-in-x86.patch @@ -0,0 +1,85 @@ +From ae16ce17cc7060274a0b0c165b953fc32540f977 Mon Sep 17 00:00:00 2001 +From: Magnus Granberg +Date: Fri, 27 Feb 2015 11:55:09 +0100 +Subject: [PATCH] Remove TEXTREL tag in x86 + +Fix textrel QA warnings when building qtwebkit for x86: + + WARNING: QA Issue: ELF binary '/home/andre/rdk/rdk-master/build-vbox32/tmp/work/core2-32-rdk-linux/qtwebkit/5.4.0-r0/packages-split/qtwebkit/usr/lib/libQt5WebKit.so.5.4.0' has relocations in .text [textrel] + +Patch from upstream webkit: + + https://bugs.webkit.org/show_bug.cgi?id=70610 + +Minor refresh required to apply cleanly to the older webkit sources used +by qtwebkit. Specifically, the patch needed to be modified to account +for PLATFORM(MAC) -> OS(DARWIN) renaming in recent webkit which is not +part of qtwebkit yet ( https://bugs.webkit.org/show_bug.cgi?id=99683 ). + +Upstream status [webkit] : backport +Upstream status [qtwebkit] : unclear + +Bug: https://bugs.webkit.org/show_bug.cgi?id=70610 +Signed-off-by: Martin Jansa + +Downloaded from: +https://github.com/meta-qt5/meta-qt5/blob/krogoth/recipes-qt/qt5/qtwebkit/ +0002-Remove-TEXTREL-tag-in-x86.patch + +Signed-off-by: Gary Bisson +--- + Source/JavaScriptCore/jit/ThunkGenerators.cpp | 24 ++++++++++++++++++++++++ + Source/WTF/wtf/InlineASM.h | 2 ++ + 2 files changed, 26 insertions(+) + +diff --git a/Source/JavaScriptCore/jit/ThunkGenerators.cpp b/Source/JavaScriptCore/jit/ThunkGenerators.cpp +index 9684df2..8af82d8 100644 +--- a/Source/JavaScriptCore/jit/ThunkGenerators.cpp ++++ b/Source/JavaScriptCore/jit/ThunkGenerators.cpp +@@ -524,6 +524,30 @@ double jsRound(double d) + } \ + static MathThunk UnaryDoubleOpWrapper(function) = &function##Thunk; + ++#elif CPU(X86) && COMPILER(GCC) && OS(LINUX) && defined(__PIC__) ++#define defineUnaryDoubleOpWrapper(function) \ ++ asm( \ ++ ".text\n" \ ++ ".globl " SYMBOL_STRING(function##Thunk) "\n" \ ++ HIDE_SYMBOL(function##Thunk) "\n" \ ++ SYMBOL_STRING(function##Thunk) ":" "\n" \ ++ "pushl %ebx\n" \ ++ "subl $20, %esp\n" \ ++ "movsd %xmm0, (%esp) \n" \ ++ "call __x86.get_pc_thunk.bx\n" \ ++ "addl $_GLOBAL_OFFSET_TABLE_, %ebx\n" \ ++ "call " GLOBAL_REFERENCE(function) "\n" \ ++ "fstpl (%esp) \n" \ ++ "movsd (%esp), %xmm0 \n" \ ++ "addl $20, %esp\n" \ ++ "popl %ebx\n" \ ++ "ret\n" \ ++ );\ ++ extern "C" { \ ++ MathThunkCallingConvention function##Thunk(MathThunkCallingConvention); \ ++ } \ ++ static MathThunk UnaryDoubleOpWrapper(function) = &function##Thunk; ++ + #elif CPU(X86) && COMPILER(GCC) && (PLATFORM(MAC) || OS(LINUX)) + #define defineUnaryDoubleOpWrapper(function) \ + asm( \ +diff --git a/Source/WTF/wtf/InlineASM.h b/Source/WTF/wtf/InlineASM.h +index 0a2fe78..2dc40ef 100644 +--- a/Source/WTF/wtf/InlineASM.h ++++ b/Source/WTF/wtf/InlineASM.h +@@ -46,6 +46,8 @@ + #define GLOBAL_REFERENCE(name) #name "@plt" + #elif CPU(X86) && COMPILER(MINGW) + #define GLOBAL_REFERENCE(name) "@" #name "@4" ++#elif OS(LINUX) && CPU(X86) && defined(__PIC__) ++#define GLOBAL_REFERENCE(name) SYMBOL_STRING(name) "@plt" + #else + #define GLOBAL_REFERENCE(name) SYMBOL_STRING(name) + #endif +-- +2.7.0 + diff --git a/buildroot/package/qt5/qt5webkit/5.6.3/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch b/buildroot/package/qt5/qt5webkit/5.6.3/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch new file mode 100644 index 0000000..a2597a5 --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/5.6.3/0003-Exclude-backtrace-API-for-non-glibc-libraries.patch @@ -0,0 +1,44 @@ +From 6c36f0ff8c1f5852c33d2b23714f9f187cc6ff26 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 5 Jun 2015 19:55:05 -0700 +Subject: [PATCH] Exclude backtrace() API for non-glibc libraries + +It was excluding musl with current checks, so lets make it such that it +considers only glibc when using backtrace API + +Signed-off-by: Khem Raj + +Downloaded from: +https://github.com/meta-qt5/meta-qt5/blob/krogoth/recipes-qt/qt5/qtwebkit/ +0003-Exclude-backtrace-API-for-non-glibc-libraries.patch + +Signed-off-by: Gary Bisson +--- + Source/WTF/wtf/Assertions.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Source/WTF/wtf/Assertions.cpp b/Source/WTF/wtf/Assertions.cpp +index 1b2091f..ba03a28 100644 +--- a/Source/WTF/wtf/Assertions.cpp ++++ b/Source/WTF/wtf/Assertions.cpp +@@ -61,7 +61,7 @@ + #include + #endif + +-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID) ++#if (OS(DARWIN) || (OS(LINUX) && defined (__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID) + #include + #include + #include +@@ -245,7 +245,7 @@ void WTFReportArgumentAssertionFailure(const char* file, int line, const char* f + + void WTFGetBacktrace(void** stack, int* size) + { +-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID) ++#if (OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID) + *size = backtrace(stack, *size); + #elif OS(WINDOWS) && !OS(WINCE) + // The CaptureStackBackTrace function is available in XP, but it is not defined +-- +2.7.0 + diff --git a/buildroot/package/qt5/qt5webkit/5.6.3/0004-Fix-compilation-with-ICU-59.patch b/buildroot/package/qt5/qt5webkit/5.6.3/0004-Fix-compilation-with-ICU-59.patch new file mode 100644 index 0000000..f3b590e --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/5.6.3/0004-Fix-compilation-with-ICU-59.patch @@ -0,0 +1,93 @@ +From bf172ae289a1348842005a9421797970f9b72060 Mon Sep 17 00:00:00 2001 +From: Konstantin Tokarev +Date: Thu, 4 May 2017 15:12:37 +0300 +Subject: [PATCH] Fix compilation with ICU 59 + +Upstream fix: https://bugs.webkit.org/show_bug.cgi?id=171612 + +Task-number: QTBUG-60532 +Change-Id: I6014feea213aa70ebe40b09d9d1a03fd1ed3c843 +Reviewed-by: Allan Sandfeld Jensen +Signed-off-by: Peter Korsgaard +--- + Source/JavaScriptCore/API/JSStringRef.cpp | 6 +++--- + Source/JavaScriptCore/runtime/DateConversion.cpp | 3 ++- + Source/WTF/wtf/TypeTraits.h | 3 +++ + Source/WebKit2/Shared/API/c/WKString.cpp | 2 +- + 4 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/Source/JavaScriptCore/API/JSStringRef.cpp b/Source/JavaScriptCore/API/JSStringRef.cpp +index 812f3d413..77a3fd0f4 100644 +--- a/Source/JavaScriptCore/API/JSStringRef.cpp ++++ b/Source/JavaScriptCore/API/JSStringRef.cpp +@@ -37,7 +37,7 @@ using namespace WTF::Unicode; + JSStringRef JSStringCreateWithCharacters(const JSChar* chars, size_t numChars) + { + initializeThreading(); +- return OpaqueJSString::create(chars, numChars).leakRef(); ++ return OpaqueJSString::create(reinterpret_cast(chars), numChars).leakRef(); + } + + JSStringRef JSStringCreateWithUTF8CString(const char* string) +@@ -62,7 +62,7 @@ JSStringRef JSStringCreateWithUTF8CString(const char* string) + JSStringRef JSStringCreateWithCharactersNoCopy(const JSChar* chars, size_t numChars) + { + initializeThreading(); +- return OpaqueJSString::create(StringImpl::createWithoutCopying(chars, numChars, WTF::DoesNotHaveTerminatingNullCharacter)).leakRef(); ++ return OpaqueJSString::create(StringImpl::createWithoutCopying(reinterpret_cast(chars), numChars, WTF::DoesNotHaveTerminatingNullCharacter)).leakRef(); + } + + JSStringRef JSStringRetain(JSStringRef string) +@@ -83,7 +83,7 @@ size_t JSStringGetLength(JSStringRef string) + + const JSChar* JSStringGetCharactersPtr(JSStringRef string) + { +- return string->characters(); ++ return reinterpret_cast(string->characters()); + } + + size_t JSStringGetMaximumUTF8CStringSize(JSStringRef string) +diff --git a/Source/JavaScriptCore/runtime/DateConversion.cpp b/Source/JavaScriptCore/runtime/DateConversion.cpp +index 0b57f012d..05e27338b 100644 +--- a/Source/JavaScriptCore/runtime/DateConversion.cpp ++++ b/Source/JavaScriptCore/runtime/DateConversion.cpp +@@ -107,7 +107,8 @@ String formatDateTime(const GregorianDateTime& t, DateTimeFormat format, bool as + #if OS(WINDOWS) + TIME_ZONE_INFORMATION timeZoneInformation; + GetTimeZoneInformation(&timeZoneInformation); +- const WCHAR* timeZoneName = t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName; ++ const WCHAR* winTimeZoneName = t.isDST() ? timeZoneInformation.DaylightName : timeZoneInformation.StandardName; ++ String timeZoneName(reinterpret_cast(winTimeZoneName)); + #else + struct tm gtm = t; + char timeZoneName[70]; +diff --git a/Source/WTF/wtf/TypeTraits.h b/Source/WTF/wtf/TypeTraits.h +index 9df2c95cf..f5d6121fd 100644 +--- a/Source/WTF/wtf/TypeTraits.h ++++ b/Source/WTF/wtf/TypeTraits.h +@@ -72,6 +72,9 @@ namespace WTF { + template<> struct IsInteger { static const bool value = true; }; + template<> struct IsInteger { static const bool value = true; }; + template<> struct IsInteger { static const bool value = true; }; ++#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__) || (defined(_HAS_CHAR16_T_LANGUAGE_SUPPORT) && _HAS_CHAR16_T_LANGUAGE_SUPPORT) ++ template<> struct IsInteger { static const bool value = true; }; ++#endif + #if !COMPILER(MSVC) || defined(_NATIVE_WCHAR_T_DEFINED) + template<> struct IsInteger { static const bool value = true; }; + #endif +diff --git a/Source/WebKit2/Shared/API/c/WKString.cpp b/Source/WebKit2/Shared/API/c/WKString.cpp +index cbac67dd8..23400a64e 100644 +--- a/Source/WebKit2/Shared/API/c/WKString.cpp ++++ b/Source/WebKit2/Shared/API/c/WKString.cpp +@@ -55,7 +55,7 @@ size_t WKStringGetLength(WKStringRef stringRef) + size_t WKStringGetCharacters(WKStringRef stringRef, WKChar* buffer, size_t bufferLength) + { + COMPILE_ASSERT(sizeof(WKChar) == sizeof(UChar), WKStringGetCharacters_sizeof_WKChar_matches_UChar); +- return (toImpl(stringRef)->getCharacters(static_cast(buffer), bufferLength)); ++ return (toImpl(stringRef)->getCharacters(reinterpret_cast(buffer), bufferLength)); + } + + size_t WKStringGetMaximumUTF8CStringSize(WKStringRef stringRef) +-- +2.11.0 + diff --git a/buildroot/package/qt5/qt5webkit/5.6.3/0005-Detect-32-bits-armv8-a-architecture.patch b/buildroot/package/qt5/qt5webkit/5.6.3/0005-Detect-32-bits-armv8-a-architecture.patch new file mode 100644 index 0000000..9c2205d --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/5.6.3/0005-Detect-32-bits-armv8-a-architecture.patch @@ -0,0 +1,48 @@ +From 068bf2d2d91382ea0d8ec24a142a30ea429704db Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Tue, 15 Aug 2017 18:28:49 -0400 +Subject: [PATCH] Detect 32-bits armv8-a architecture +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +Adds WTF platform support for the 32-bits armv8-a architectures. + +Theses toolchains define __ARM_ARCH_8A__ (for ARM architecture version) +and __arm__ (for 32-bits word-size; __aarch64__ for 64-bits). + +This commit catches this new architecture (armv8a) within a #ifdef/#endif +inside the if statement dedicated for 32-bits ARM detection. + +Fixes: + + In file included from ./config.h:30:0, + from ... + ./wtf/Platform.h:323:6: error: #error "Not supported ARM architecture" + # error "Not supported ARM architecture" + ^~~~~ + +Upstream-Status: Backport [with adaptations] +Signed-off-by: Gaël PORTAY +--- + Source/WTF/wtf/Platform.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h +index 562840cf7..9cf656845 100644 +--- a/Source/WTF/wtf/Platform.h ++++ b/Source/WTF/wtf/Platform.h +@@ -243,6 +243,10 @@ + || defined(__ARM_ARCH_7S__) + #define WTF_ARM_ARCH_VERSION 7 + ++#elif defined(__ARM_ARCH_8__) \ ++ || defined(__ARM_ARCH_8A__) ++#define WTF_ARM_ARCH_VERSION 8 ++ + /* MSVC sets _M_ARM */ + #elif defined(_M_ARM) + #define WTF_ARM_ARCH_VERSION _M_ARM +-- +2.16.1 + diff --git a/buildroot/package/qt5/qt5webkit/5.9.1/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch b/buildroot/package/qt5/qt5webkit/5.9.1/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch new file mode 100644 index 0000000..669c7e6 --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/5.9.1/0001-qtwebkit-fix-QA-issue-bad-RPATH.patch @@ -0,0 +1,36 @@ +From 1735a8484ef9ae336f8d607b56bda64c8af10c79 Mon Sep 17 00:00:00 2001 +From: Trevor Woerner +Date: Fri, 7 Feb 2014 04:07:17 +0100 +Subject: [PATCH] qtwebkit: fix QA issue (bad RPATH) + +Building qtwebkit causes a QA issue such that QtWebPluginProcess and +QtWebProcess contain bad RPATHs which point into the build location. This fix +adds a patch to not include the rpath.prf which causes this problem. + +Signed-off-by: Trevor Woerner +Signed-off-by: Martin Jansa + +Downloaded from: +https://github.com/meta-qt5/meta-qt5/blob/krogoth/recipes-qt/qt5/qtwebkit/ +0001-qtwebkit-fix-QA-issue-bad-RPATH.patch + +Signed-off-by: Gary Bisson +--- + Tools/qmake/mkspecs/features/unix/default_post.prf | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Tools/qmake/mkspecs/features/unix/default_post.prf b/Tools/qmake/mkspecs/features/unix/default_post.prf +index fd66af6..ef754c3 100644 +--- a/Tools/qmake/mkspecs/features/unix/default_post.prf ++++ b/Tools/qmake/mkspecs/features/unix/default_post.prf +@@ -61,7 +61,6 @@ linux-*g++* { + } + } + +-contains(TEMPLATE, app): CONFIG += rpath + + CONFIG(debug, debug|release)|force_debug_info { + # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase. +-- +2.7.0 + diff --git a/buildroot/package/qt5/qt5webkit/5.9.1/0002-Exclude-backtrace-API-for-non-glibc-libraries.patch b/buildroot/package/qt5/qt5webkit/5.9.1/0002-Exclude-backtrace-API-for-non-glibc-libraries.patch new file mode 100644 index 0000000..a2597a5 --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/5.9.1/0002-Exclude-backtrace-API-for-non-glibc-libraries.patch @@ -0,0 +1,44 @@ +From 6c36f0ff8c1f5852c33d2b23714f9f187cc6ff26 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Fri, 5 Jun 2015 19:55:05 -0700 +Subject: [PATCH] Exclude backtrace() API for non-glibc libraries + +It was excluding musl with current checks, so lets make it such that it +considers only glibc when using backtrace API + +Signed-off-by: Khem Raj + +Downloaded from: +https://github.com/meta-qt5/meta-qt5/blob/krogoth/recipes-qt/qt5/qtwebkit/ +0003-Exclude-backtrace-API-for-non-glibc-libraries.patch + +Signed-off-by: Gary Bisson +--- + Source/WTF/wtf/Assertions.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Source/WTF/wtf/Assertions.cpp b/Source/WTF/wtf/Assertions.cpp +index 1b2091f..ba03a28 100644 +--- a/Source/WTF/wtf/Assertions.cpp ++++ b/Source/WTF/wtf/Assertions.cpp +@@ -61,7 +61,7 @@ + #include + #endif + +-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID) ++#if (OS(DARWIN) || (OS(LINUX) && defined (__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID) + #include + #include + #include +@@ -245,7 +245,7 @@ void WTFReportArgumentAssertionFailure(const char* file, int line, const char* f + + void WTFGetBacktrace(void** stack, int* size) + { +-#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID) ++#if (OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__))) && !OS(ANDROID) + *size = backtrace(stack, *size); + #elif OS(WINDOWS) && !OS(WINCE) + // The CaptureStackBackTrace function is available in XP, but it is not defined +-- +2.7.0 + diff --git a/buildroot/package/qt5/qt5webkit/5.9.1/0003-Detect-32-bits-armv8-a-architecture.patch b/buildroot/package/qt5/qt5webkit/5.9.1/0003-Detect-32-bits-armv8-a-architecture.patch new file mode 100644 index 0000000..9c2205d --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/5.9.1/0003-Detect-32-bits-armv8-a-architecture.patch @@ -0,0 +1,48 @@ +From 068bf2d2d91382ea0d8ec24a142a30ea429704db Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Tue, 15 Aug 2017 18:28:49 -0400 +Subject: [PATCH] Detect 32-bits armv8-a architecture +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +Adds WTF platform support for the 32-bits armv8-a architectures. + +Theses toolchains define __ARM_ARCH_8A__ (for ARM architecture version) +and __arm__ (for 32-bits word-size; __aarch64__ for 64-bits). + +This commit catches this new architecture (armv8a) within a #ifdef/#endif +inside the if statement dedicated for 32-bits ARM detection. + +Fixes: + + In file included from ./config.h:30:0, + from ... + ./wtf/Platform.h:323:6: error: #error "Not supported ARM architecture" + # error "Not supported ARM architecture" + ^~~~~ + +Upstream-Status: Backport [with adaptations] +Signed-off-by: Gaël PORTAY +--- + Source/WTF/wtf/Platform.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h +index 562840cf7..9cf656845 100644 +--- a/Source/WTF/wtf/Platform.h ++++ b/Source/WTF/wtf/Platform.h +@@ -243,6 +243,10 @@ + || defined(__ARM_ARCH_7S__) + #define WTF_ARM_ARCH_VERSION 7 + ++#elif defined(__ARM_ARCH_8__) \ ++ || defined(__ARM_ARCH_8A__) ++#define WTF_ARM_ARCH_VERSION 8 ++ + /* MSVC sets _M_ARM */ + #elif defined(_M_ARM) + #define WTF_ARM_ARCH_VERSION _M_ARM +-- +2.16.1 + diff --git a/buildroot/package/qt5/qt5webkit/Config.in b/buildroot/package/qt5/qt5webkit/Config.in new file mode 100644 index 0000000..72c641b --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_QT5WEBKIT + bool "qt5webkit" + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on BR2_HOST_GCC_AT_LEAST_4_8 # icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # icu + depends on !BR2_BINFMT_FLAT # icu + # assumes a FPU is available on MIPS + depends on !BR2_MIPS_SOFT_FLOAT + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_ICU + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_QT5BASE_XCB + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt WebKit module provides the WebView API, which + allows QML applications to render regions of dynamic + web content. + + This package has been removed from the official release + packages since Qt5.6.0, but it is still available for users + to build it from source. This is useful for platforms + without GPU since the successor (QtWebEngine) requires + OpenGL support. + + http://doc.qt.io/archives/qt-5.5/qtwebkit-index.html + +comment "qt5webkit needs a toolchain w/ dynamic library, gcc >= 4.8, host gcc >= 4.8" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_HOST_GCC_AT_LEAST_4_8 + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_BINFMT_FLAT + depends on !BR2_MIPS_SOFT_FLOAT diff --git a/buildroot/package/qt5/qt5webkit/qt5webkit.hash b/buildroot/package/qt5/qt5webkit/qt5webkit.hash new file mode 100644 index 0000000..57ff2ac --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/qt5webkit.hash @@ -0,0 +1,10 @@ +# Hash from: https://download.qt.io/community_releases/5.6/5.6.3/qtwebkit-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 098c6bb25798fbf1b619b540621287787064efc9b586d76ac0ce7e39b87a3896 qtwebkit-opensource-src-5.6.3.tar.xz + +# hash from: https://download.qt.io/official_releases/qt/5.9/5.9.1/submodules/qtwebkit-opensource-src-5.9.1.tar.xz.mirrorlist +sha256 28a560becd800a4229bfac317c2e5407cd3cc95308bc4c3ca90dba2577b052cf qtwebkit-opensource-src-5.9.1.tar.xz + +# Hashes for license files: +sha256 7555fa34bc131a75ca56d65c40cc1ea8f9515d23e353d4c15d58573a042f7805 Source/WebCore/LICENSE-LGPL-2 +sha256 f2b3bd09663381deb99721109d22b47af1213bb43007a8b56a06c6375c8050ce Source/WebCore/LICENSE-LGPL-2.1 +sha256 a3db6c7f3027aa27489c25a2fa259185cdee945780c32e01c60cbfabf4743b6c LICENSE.LGPLv21 diff --git a/buildroot/package/qt5/qt5webkit/qt5webkit.mk b/buildroot/package/qt5/qt5webkit/qt5webkit.mk new file mode 100644 index 0000000..5186671 --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/qt5webkit.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# qt5webkit +# +################################################################################ + +# no 5.9.2 package available, fall back to 5.9.1 version +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5WEBKIT_VERSION = 5.9.1 +QT5WEBKIT_SITE = https://download.qt.io/official_releases/qt/5.9/5.9.1/submodules +else +QT5WEBKIT_VERSION = $(QT5_VERSION) +QT5WEBKIT_SITE = https://download.qt.io/community_releases/5.6/$(QT5_VERSION) +endif + +QT5WEBKIT_SOURCE = qtwebkit-opensource-src-$(QT5WEBKIT_VERSION).tar.xz +QT5WEBKIT_DEPENDENCIES = \ + host-bison host-flex host-gperf host-python host-ruby \ + qt5base sqlite +QT5WEBKIT_INSTALL_STAGING = YES + +QT5WEBKIT_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2 Source/WebCore/LICENSE-LGPL-2.1 + +QT5WEBKIT_LICENSE = LGPL-2.1+, BSD-3-Clause, BSD-2-Clause +# Source files contain references to LGPL_EXCEPTION.txt but it is not included +# in the archive. +QT5WEBKIT_LICENSE_FILES += LICENSE.LGPLv21 + +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y) +QT5WEBKIT_DEPENDENCIES += xlib_libXext xlib_libXrender +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5WEBKIT_DEPENDENCIES += qt5declarative +endif + +# QtWebkit's build system uses python, but only supports python2. We work +# around this by forcing python2 early in the PATH, via a python->python2 +# symlink. +QT5WEBKIT_ENV = PATH=$(@D)/host-bin:$(BR_PATH) +define QT5WEBKIT_PYTHON2_SYMLINK + mkdir -p $(@D)/host-bin + ln -sf $(HOST_DIR)/bin/python2 $(@D)/host-bin/python +endef +QT5WEBKIT_PRE_CONFIGURE_HOOKS += QT5WEBKIT_PYTHON2_SYMLINK + +# The mesa's EGL/eglplatform.h header includes X11 headers unless the flag +# MESA_EGL_NO_X11_HEADERS is defined. Tell to not include X11 headers if +# the libxcb is not selected. +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL)x$(BR2_PACKAGE_LIBXCB),yx) +QT5WEBKIT_QMAKEFLAGS += QMAKE_CXXFLAGS+=-DMESA_EGL_NO_X11_HEADERS +endif + +define QT5WEBKIT_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(HOST_DIR)/bin/qmake $(QT5WEBKIT_QMAKEFLAGS)) +endef + +define QT5WEBKIT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(MAKE) -C $(@D) +endef + +define QT5WEBKIT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +define QT5WEBKIT_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtWebKit $(TARGET_DIR)/usr/qml/ +endef +endif + +define QT5WEBKIT_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebKit*.so.* $(TARGET_DIR)/usr/lib + cp -dpf $(@D)/bin/* $(TARGET_DIR)/usr/bin/ + $(QT5WEBKIT_INSTALL_TARGET_QMLS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5websockets/Config.in b/buildroot/package/qt5/qt5websockets/Config.in new file mode 100644 index 0000000..0cfde91 --- /dev/null +++ b/buildroot/package/qt5/qt5websockets/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_QT5WEBSOCKETS + bool "qt5websockets" + select BR2_PACKAGE_QT5BASE + select BR2_PACKAGE_QT5BASE_NETWORK + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt WebSockets module provides C++ and QML interfaces + that enable Qt applications to act as a server that can + process WebSocket requests, or a client that can + consume data received from the server, or both. + + http://doc.qt.io/qt-5/qtwebsockets-index.html diff --git a/buildroot/package/qt5/qt5websockets/qt5websockets.hash b/buildroot/package/qt5/qt5websockets/qt5websockets.hash new file mode 100644 index 0000000..28f0f89 --- /dev/null +++ b/buildroot/package/qt5/qt5websockets/qt5websockets.hash @@ -0,0 +1,15 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtwebsockets-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 a2439045616c89dfe06333734ff4726075c92e01db6e6b6863bc138e39c028eb qtwebsockets-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtwebsockets-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 7609eba33ebc9c6954644470ebbb1292cdae50f36d0c8ff5ab068b249e4a3c8e qtwebsockets-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 79949ee74297883df6e4e7c4bfe1e75a6e7695376b4a87ffc013e27bda509cb2 LGPL_EXCEPTION.txt +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 diff --git a/buildroot/package/qt5/qt5websockets/qt5websockets.mk b/buildroot/package/qt5/qt5websockets/qt5websockets.mk new file mode 100644 index 0000000..661bc83 --- /dev/null +++ b/buildroot/package/qt5/qt5websockets/qt5websockets.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# qt5websockets +# +################################################################################ + +QT5WEBSOCKETS_VERSION = $(QT5_VERSION) +QT5WEBSOCKETS_SITE = $(QT5_SITE) +QT5WEBSOCKETS_SOURCE = qtwebsockets-opensource-src-$(QT5WEBSOCKETS_VERSION).tar.xz +QT5WEBSOCKETS_DEPENDENCIES = qt5base +QT5WEBSOCKETS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5WEBSOCKETS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools) +QT5WEBSOCKETS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 +else +QT5WEBSOCKETS_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0 +QT5WEBSOCKETS_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 +endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5WEBSOCKETS_LICENSE := $(QT5WEBSOCKETS_LICENSE), BSD-3-Clause (examples) +endif + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y) +QT5WEBSOCKETS_DEPENDENCIES += qt5declarative +endif + +define QT5WEBSOCKETS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5WEBSOCKETS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5WEBSOCKETS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) +define QT5WEBSOCKETS_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/Qt/WebSockets $(TARGET_DIR)/usr/qml/Qt/ + cp -dpfr $(STAGING_DIR)/usr/qml/QtWebSockets $(TARGET_DIR)/usr/qml/ +endef +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5WEBSOCKETS_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/websockets $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +ifneq ($(BR2_STATIC_LIBS),y) +define QT5WEBSOCKETS_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebSockets.so.* $(TARGET_DIR)/usr/lib +endef +endif + +define QT5WEBSOCKETS_INSTALL_TARGET_CMDS + $(QT5WEBSOCKETS_INSTALL_TARGET_LIBS) + $(QT5WEBSOCKETS_INSTALL_TARGET_QMLS) + $(QT5WEBSOCKETS_INSTALL_TARGET_EXAMPLES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5x11extras/Config.in b/buildroot/package/qt5/qt5x11extras/Config.in new file mode 100644 index 0000000..ff4cc11 --- /dev/null +++ b/buildroot/package/qt5/qt5x11extras/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_QT5X11EXTRAS + bool "qt5x11extras" + depends on BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_QT5BASE_WIDGETS + help + Qt is a cross-platform application and UI framework for + developers using C++. + + Qt X11 Extras enables the Qt programmer to write + applications for the Linux/X11 platform. + + http://doc.qt.io/qt-5/qtx11extras-index.html diff --git a/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash b/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash new file mode 100644 index 0000000..b52d2da --- /dev/null +++ b/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash @@ -0,0 +1,12 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtx11extras-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 1e7a8e96e0629f2b2b78de684b156b357210cf5df6b42f30789423f2cb07677f qtx11extras-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtx11extras-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 65b83df79d87043d63808e709778b3c6fddaafa3c7864d7104ee9a9da5909493 qtx11extras-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk b/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk new file mode 100644 index 0000000..0905d5f --- /dev/null +++ b/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# qt5x11extras +# +################################################################################ + +QT5X11EXTRAS_VERSION = $(QT5_VERSION) +QT5X11EXTRAS_SITE = $(QT5_SITE) +QT5X11EXTRAS_SOURCE = qtx11extras-opensource-src-$(QT5X11EXTRAS_VERSION).tar.xz +QT5X11EXTRAS_DEPENDENCIES = qt5base +QT5X11EXTRAS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5X11EXTRAS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5X11EXTRAS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else +QT5X11EXTRAS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5X11EXTRAS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif + +define QT5X11EXTRAS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5X11EXTRAS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5X11EXTRAS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define QT5X11EXTRAS_INSTALL_TARGET_CMDS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5X11Extras.so.* $(TARGET_DIR)/usr/lib +endef +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5/qt5xmlpatterns/Config.in b/buildroot/package/qt5/qt5xmlpatterns/Config.in new file mode 100644 index 0000000..dd8b54e --- /dev/null +++ b/buildroot/package/qt5/qt5xmlpatterns/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_QT5XMLPATTERNS + bool "qt5xmlpatterns" + select BR2_PACKAGE_QT5BASE + help + Qt is a cross-platform application and UI framework for + developers using C++. + + The Qt XML Patterns module provides support for XPath, + XQuery, XSLT, and XML Schema validation. + + http://doc.qt.io/qt-5/qtxmlpatterns-index.html diff --git a/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash b/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash new file mode 100644 index 0000000..108d6e3 --- /dev/null +++ b/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash @@ -0,0 +1,14 @@ +# Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtxmlpatterns-opensource-src-5.6.3.tar.xz.mirrorlist +sha256 a461ff9f0d7310de9b9904ff9cd34919e958bf4071a6fc7096450b8990ab51f6 qtxmlpatterns-opensource-src-5.6.3.tar.xz + +# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.6/submodules/qtxmlpatterns-opensource-src-5.9.6.tar.xz.mirrorlist +sha256 6a435b14b85e17268b7acf764e7ed92430045a7bb6eb741a1ea200d2df0986dc qtxmlpatterns-opensource-src-5.9.6.tar.xz + +# Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 +sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt diff --git a/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk b/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk new file mode 100644 index 0000000..65fd9bd --- /dev/null +++ b/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# qt5xmlpatterns +# +################################################################################ + +QT5XMLPATTERNS_VERSION = $(QT5_VERSION) +QT5XMLPATTERNS_SITE = $(QT5_SITE) +QT5XMLPATTERNS_SOURCE = qtxmlpatterns-opensource-src-$(QT5XMLPATTERNS_VERSION).tar.xz +QT5XMLPATTERNS_DEPENDENCIES = qt5base +QT5XMLPATTERNS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5XMLPATTERNS_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) +QT5XMLPATTERNS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +else +QT5XMLPATTERNS_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) +QT5XMLPATTERNS_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +endif +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +QT5XMLPATTERNS_LICENSE := $(QT5XMLPATTERNS_LICENSE), BSD-3-Clause (examples) +endif + +define QT5XMLPATTERNS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) +endef + +define QT5XMLPATTERNS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QT5XMLPATTERNS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +ifeq ($(BR2_STATIC_LIBS),) +define QT5XMLPATTERNS_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5XmlPatterns*.so.* $(TARGET_DIR)/usr/lib +endef +endif + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5XMLPATTERNS_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/xmlpatterns $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +define QT5XMLPATTERNS_INSTALL_TARGET_CMDS + $(QT5XMLPATTERNS_INSTALL_TARGET_LIBS) + $(QT5XMLPATTERNS_INSTALL_TARGET_EXAMPLES) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qt5cinex/0001-Fix-execution-problem-with-Qt5.3.patch b/buildroot/package/qt5cinex/0001-Fix-execution-problem-with-Qt5.3.patch new file mode 100644 index 0000000..ceae8cc --- /dev/null +++ b/buildroot/package/qt5cinex/0001-Fix-execution-problem-with-Qt5.3.patch @@ -0,0 +1,64 @@ +From 9b045ee7988daf3bb4c7cbe1ed1b9d744820e82b Mon Sep 17 00:00:00 2001 +From: Pierre Le Magourou +Date: Mon, 15 Dec 2014 11:54:51 +0100 +Subject: [PATCH] Fix execution problem with Qt5.3. + +This patch has been inspired from Open Embedded meta-qt5. + +Signed-off-by: Pierre Le Magourou +--- + content/SettingsView.qml | 4 ++-- + content/Switch.qml | 8 ++++---- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/content/SettingsView.qml b/content/SettingsView.qml +index 7944803..a0ddcc8 100644 +--- a/content/SettingsView.qml ++++ b/content/SettingsView.qml +@@ -127,8 +127,8 @@ Item { + Switch { + text: "Do you l-o-v-e colors?" + checked: settings.showColors +- onText: "Yes" +- offText: "No!" ++ textON: "Yes" ++ textOFF: "No!" + onCheckedChanged: { + settings.showColors = checked; + } +diff --git a/content/Switch.qml b/content/Switch.qml +index 967c03f..66955fc 100644 +--- a/content/Switch.qml ++++ b/content/Switch.qml +@@ -6,8 +6,8 @@ Item { + + property alias text: textItem.text + property bool checked: false +- property string onText: "On" +- property string offText: "Off" ++ property string textON: "On" ++ property string textOFF: "Off" + + QtObject { + id: priv +@@ -120,7 +120,7 @@ Item { + color: "#000000" + font.pixelSize: 18 + font.bold: true +- text: onText ++ text: textON + } + Text { + anchors.verticalCenter: parent.verticalCenter +@@ -129,7 +129,7 @@ Item { + color: "#ffffff" + font.pixelSize: 18 + font.bold: true +- text: offText ++ text: textOFF + } + + Image { +-- +2.1.3 + diff --git a/buildroot/package/qt5cinex/CinematicExperience-demo b/buildroot/package/qt5cinex/CinematicExperience-demo new file mode 100755 index 0000000..919958f --- /dev/null +++ b/buildroot/package/qt5cinex/CinematicExperience-demo @@ -0,0 +1,2 @@ +#!/bin/sh +exec /usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience "$@" diff --git a/buildroot/package/qt5cinex/Config.in b/buildroot/package/qt5cinex/Config.in new file mode 100644 index 0000000..8dbf484 --- /dev/null +++ b/buildroot/package/qt5cinex/Config.in @@ -0,0 +1,34 @@ +comment "qt5cinex needs an Open(E)GL-capable backend" + depends on BR2_PACKAGE_QT5 + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE || !BR2_PACKAGE_HAS_LIBEGL + +config BR2_PACKAGE_QT5CINEX + bool "qt5cinex" + depends on BR2_PACKAGE_QT5 + depends on BR2_PACKAGE_HAS_LIBEGL # qt5base-eglfs + depends on BR2_PACKAGE_QT5_GL_AVAILABLE + # No comment needed for this option, it's an architecture + # dependency. + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE + select BR2_PACKAGE_QT5BASE_NETWORK + select BR2_PACKAGE_QT5BASE_PNG + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5BASE_EGLFS + select BR2_PACKAGE_QT5GRAPHICALEFFECTS + help + This application demonstrates the power of Qt5 and few of + the new additions available in QtQuick 2.0. + + http://quitcoding.com/?page=work#cinex + +if BR2_PACKAGE_QT5CINEX + +config BR2_PACKAGE_QT5CINEX_HD + bool "High-definition version (aka RPi Edition)" + help + High definition version (1920x1080 resolution) of the + application, optimised for Raspberry PI cards. This version + can also be run on any platform supported by Qt5. + +endif diff --git a/buildroot/package/qt5cinex/qt5cinex.hash b/buildroot/package/qt5cinex/qt5cinex.hash new file mode 100644 index 0000000..637f388 --- /dev/null +++ b/buildroot/package/qt5cinex/qt5cinex.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 0dd602983ced5f7c0cfd5ad0fbfe2b0b7e3c9ff715e4ef23eef818ccc2b6c60b Qt5_CinematicExperience_rpi_1.0.tgz +sha256 0e547e0259667915a24e84ade5efdcd0c553f81786734452c2c8dbce19a19f44 Qt5_CinematicExperience_1.0.tgz diff --git a/buildroot/package/qt5cinex/qt5cinex.mk b/buildroot/package/qt5cinex/qt5cinex.mk new file mode 100644 index 0000000..d9254f5 --- /dev/null +++ b/buildroot/package/qt5cinex/qt5cinex.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# qt5cinex +# +################################################################################ + +QT5CINEX_VERSION = 1.0 +QT5CINEX_SITE = http://quitcoding.com/download + +ifeq ($(BR2_PACKAGE_QT5CINEX_HD),y) +QT5CINEX_HD = "rpi_" +endif + +QT5CINEX_SOURCE = Qt5_CinematicExperience_$(QT5CINEX_HD)$(QT5CINEX_VERSION).tgz +QT5CINEX_DEPENDENCIES = qt5base qt5declarative + +QT5CINEX_LICENSE = CC-BY-3.0 +QT5CINEX_LICENSE_FILES = README + +define QT5CINEX_CONFIGURE_CMDS + cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake +endef + +define QT5CINEX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +# In addition to the Cinematic Experience itself, we also install a +# wrapper shell script to /usr/bin: the Cinematic Experience binary +# wants its resource files to be available directly under a contents/ +# sub-directory, which isn't very practical to install in /usr/bin/. +define QT5CINEX_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/Qt5_CinematicExperience \ + $(TARGET_DIR)/usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience + $(INSTALL) -D -m 0664 $(@D)/Qt5_CinematicExperience.qml \ + $(TARGET_DIR)/usr/share/Qt5/CinematicExperience/Qt5_CinematicExperience.qml + cp -dpfr $(@D)/content $(TARGET_DIR)/usr/share/Qt5/CinematicExperience/content + $(INSTALL) -m 0755 -D package/qt5cinex/CinematicExperience-demo \ + $(TARGET_DIR)/usr/bin/CinematicExperience-demo +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/qtuio/0001-TuioServer.cpp-add-missing-include.patch b/buildroot/package/qtuio/0001-TuioServer.cpp-add-missing-include.patch new file mode 100644 index 0000000..9933702 --- /dev/null +++ b/buildroot/package/qtuio/0001-TuioServer.cpp-add-missing-include.patch @@ -0,0 +1,28 @@ +From 4dd7cad8c95484a882eaa2aeaa74595a3dd93a07 Mon Sep 17 00:00:00 2001 +From: Stephan Hoffmann +Date: Sun, 2 Dec 2012 13:36:41 +0100 +Subject: [PATCH] TuioServer.cpp: add missing include + +If usleep() is used the header has to be included + +Signed-off-by: Stephan Hoffmann +--- + src/3rdparty/tuio/TuioServer.cpp | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/src/3rdparty/tuio/TuioServer.cpp b/src/3rdparty/tuio/TuioServer.cpp +index f17bef9..851144c 100644 +--- a/src/3rdparty/tuio/TuioServer.cpp ++++ b/src/3rdparty/tuio/TuioServer.cpp +@@ -25,6 +25,8 @@ using namespace TUIO; + using namespace osc; + + #ifndef WIN32 ++#include ++ + static void* ThreadFunc( void* obj ) + #else + static DWORD WINAPI ThreadFunc( LPVOID obj ) +-- +1.7.0.4 + diff --git a/buildroot/package/qtuio/0002-dont-append-_d-for-debug.patch b/buildroot/package/qtuio/0002-dont-append-_d-for-debug.patch new file mode 100644 index 0000000..fbaaf19 --- /dev/null +++ b/buildroot/package/qtuio/0002-dont-append-_d-for-debug.patch @@ -0,0 +1,29 @@ +[PATCH] don't append _d to library name when Qt is built with debug support + +qtuio appends _d to the library name when Qt was built with debug support, +breaking linking step for examples and staging/target install. + +There's no real advantage to the _d suffix, so simply fix it by removing +the logic appending _d. + +Signed-off-by: Peter Korsgaard +--- + src/qTUIO.pro | 5 ----- + 1 file changed, 5 deletions(-) + +Index: qtuio-abe4973ff6/src/qTUIO.pro +=================================================================== +--- qtuio-abe4973ff6.orig/src/qTUIO.pro ++++ qtuio-abe4973ff6/src/qTUIO.pro +@@ -16,11 +16,6 @@ + win32:LIBS += ws2_32.lib \ + winmm.lib + +-# Changes the name of the target, when is debug mode +-CONFIG( debug, debug|release ) { +- TARGET = $${TARGET}_d +- BUILD_NAME = debug +-} + CONFIG( release, debug|release ):BUILD_NAME = release + + # Temporary folders for the auxiliar files diff --git a/buildroot/package/qtuio/Config.in b/buildroot/package/qtuio/Config.in new file mode 100644 index 0000000..f46f1dd --- /dev/null +++ b/buildroot/package/qtuio/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_QTUIO + bool "qtuio" + depends on BR2_PACKAGE_QT + depends on BR2_PACKAGE_QT_GUI_MODULE + help + Implementation of an interface connecting TUIO messages + and QT events + + https://github.com/x29a/qTUIO + +if BR2_PACKAGE_QTUIO + +config BR2_QTUIO_EXAMPLES + bool "qtuio examples" + help + Build and install qtuio examples + +endif + +comment "qtuio depends on QT gui module" + depends on BR2_PACKAGE_QT + depends on !BR2_PACKAGE_QT_GUI_MODULE diff --git a/buildroot/package/qtuio/qtuio.hash b/buildroot/package/qtuio/qtuio.hash new file mode 100644 index 0000000..bb9bdb1 --- /dev/null +++ b/buildroot/package/qtuio/qtuio.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 65308adb59e910d552d4885772c7f99c7d19dec5e924d852a5a39a1972f8d223 qtuio-abe4973ff60654aad9df7037c4ca15c45f811d24.tar.gz diff --git a/buildroot/package/qtuio/qtuio.mk b/buildroot/package/qtuio/qtuio.mk new file mode 100644 index 0000000..6b90a2c --- /dev/null +++ b/buildroot/package/qtuio/qtuio.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# qtuio +# +################################################################################ + +QTUIO_VERSION = abe4973ff60654aad9df7037c4ca15c45f811d24 +QTUIO_SITE = $(call github,x29a,qTUIO,$(QTUIO_VERSION)) +QTUIO_INSTALL_STAGING = YES +QTUIO_DEPENDENCIES = qt + +QTUIO_LICENSE = GPL-3.0+ +QTUIO_LICENSE_FILES = COPYING + +# The pong example needs QtOpenGL support, which might become available +# some time in the future. Then add pong to the list of examples. +QTUIO_EXAMPLES = dials fingerpaint knobs pinchzoom + +ifeq ($(BR2_QTUIO_EXAMPLES),y) +define QTUIO_CONFIGURE_EXAMPLES + for example in $(QTUIO_EXAMPLES) ; do \ + (cd $(@D)/examples/$${example} && $(TARGET_MAKE_ENV) $(QT_QMAKE)) || exit 1; \ + done +endef +endif + +define QTUIO_CONFIGURE_CMDS + cd $(@D)/src && $(TARGET_MAKE_ENV) $(QT_QMAKE) + $(QTUIO_CONFIGURE_EXAMPLES) +endef + +ifeq ($(BR2_QTUIO_EXAMPLES),y) +define QTUIO_BUILD_EXAMPLES + for example in $(QTUIO_EXAMPLES) ; do \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/examples/$${example} || exit 1; \ + done +endef +endif + +define QTUIO_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src + $(QTUIO_BUILD_EXAMPLES) +endef + +# Unfortunately, there is no working "install" target available +ifeq ($(BR2_QTUIO_EXAMPLES),y) +define QTUIO_INSTALL_EXAMPLES + for example in $(QTUIO_EXAMPLES) ; do \ + $(INSTALL) -D -m 0755 $(@D)/examples/$${example}/$${example} $(TARGET_DIR)/usr/share/qtuio/$${example} || exit 1 ; \ + done +endef +endif + +ifeq ($(BR2_PACKAGE_QT_STATIC),y) +QTUIO_LIBRARY = libqTUIO.a +else +QTUIO_LIBRARY = libqTUIO.so* +define QTUIO_INSTALL_TARGET_LIBRARY + cp -dpf $(@D)/lib/$(QTUIO_LIBRARY) $(TARGET_DIR)/usr/lib +endef +endif + +define QTUIO_INSTALL_TARGET_CMDS + $(QTUIO_INSTALL_TARGET_LIBRARY) + $(QTUIO_INSTALL_EXAMPLES) +endef + +define QTUIO_INSTALL_STAGING_CMDS + cp -dpf $(@D)/lib/$(QTUIO_LIBRARY) $(STAGING_DIR)/usr/lib +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/quagga/0001-fix-ipctl-forwarding.patch b/buildroot/package/quagga/0001-fix-ipctl-forwarding.patch new file mode 100644 index 0000000..e2e3421 --- /dev/null +++ b/buildroot/package/quagga/0001-fix-ipctl-forwarding.patch @@ -0,0 +1,27 @@ +Add definitions for IPCTL_FORWARDING and IP6CTL_FORWARDING. + +Inspired from +http://svn.gnumonks.org/trunk/grouter/build/src/quagga/quagga/quagga-0.99.1-forward_sysctl-2.6.14.patch + +Signed-off-by: Thomas Petazzoni + +Index: quagga-0.99.16/zebra/ipforward_sysctl.c +=================================================================== +--- quagga-0.99.16.orig/zebra/ipforward_sysctl.c 2010-06-20 23:40:45.000000000 +0200 ++++ quagga-0.99.16/zebra/ipforward_sysctl.c 2010-06-20 23:41:37.000000000 +0200 +@@ -31,6 +31,15 @@ + + #define MIB_SIZ 4 + ++/* Fix for recent (2.6.14) kernel headers */ ++#ifndef IPCTL_FORWARDING ++#define IPCTL_FORWARDING NET_IPV4_FORWARD ++#endif ++ ++#ifndef IP6CTL_FORWARDING ++#define IP6CTL_FORWARDING NET_IPV6_FORWARDING ++#endif ++ + extern struct zebra_privs_t zserv_privs; + + /* IPv4 forwarding control MIB. */ diff --git a/buildroot/package/quagga/0002-configure-fix-static-linking-with-readline.patch b/buildroot/package/quagga/0002-configure-fix-static-linking-with-readline.patch new file mode 100644 index 0000000..243dfaf --- /dev/null +++ b/buildroot/package/quagga/0002-configure-fix-static-linking-with-readline.patch @@ -0,0 +1,41 @@ +From 62ede7482da15d276b880f6d8540dce400dc50a7 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 26 Nov 2015 15:59:07 +0100 +Subject: [PATCH] configure: fix static linking with readline + +When static linking is used, the order of the libraries is important, +and the libraries using a symbol from another library should be listed +*before* the library providing that symbol (see +http://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking) +for details. + +When vtysh is linked statically, the command line contains "-lcurses +-lreadline", which causes a build failure due to unresolved +symbols. This is because readline is using symbols from the curses +library: the order should be the opposite. + +This patch fixes that problem by putting the -lreadline at the +beginning of the LIBREADLINE variable calcualted by the configure +script. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 3003e62..290953d 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -652,7 +652,7 @@ dnl [TODO] on Linux, and in [TODO] on Solaris. + )] + )] + ) +- AC_CHECK_LIB(readline, main, LIBREADLINE="$LIBREADLINE -lreadline",, ++ AC_CHECK_LIB(readline, main, LIBREADLINE="-lreadline $LIBREADLINE",, + "$LIBREADLINE") + if test $ac_cv_lib_readline_main = no; then + AC_MSG_ERROR([vtysh needs libreadline but was not found and usable on your system.]) +-- +2.6.3 + diff --git a/buildroot/package/quagga/0003-lib-memory-fix-indirect-static-link-with-zlib.patch b/buildroot/package/quagga/0003-lib-memory-fix-indirect-static-link-with-zlib.patch new file mode 100644 index 0000000..6990f47 --- /dev/null +++ b/buildroot/package/quagga/0003-lib-memory-fix-indirect-static-link-with-zlib.patch @@ -0,0 +1,108 @@ +From 008dd9771057dbbd7ce971c43bce2a0b05e2cf97 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Sun, 21 Aug 2016 08:56:57 +0300 +Subject: [PATCH] lib/memory: fix indirect static link with zlib + +quagga SNMP support depends on netsnmp, that optionally depends on OpenSSL, +which in turn requires zlib. zlib exports the 'zcalloc' symbol, which collides +with a function of the same name in memory.c. This is not a problem when +linking dynamically, since quagga does not use zlib directly. But static +linking fails with the error: + + CCLD ospfd +.../output/host/usr/mips64el-buildroot-linux-uclibc/sysroot/usr/lib/libz.a(zutil.o): In function `zcalloc': +zutil.c:(.text+0x48): multiple definition of `zcalloc' +.../output/build/quagga-1.0.20160315/lib/.libs/libzebra.a(memory.o):memory.c:(.text+0x1a0): first defined here + +Rename 'zcalloc' to 'zzcalloc' to avoid symbol collision. + +Signed-off-by: Baruch Siach +--- +Patch status: posted upstream +https://lists.quagga.net/pipermail/quagga-dev/2016-August/016109.html + + lib/memory.c | 14 ++++++++------ + lib/memory.h | 4 ++-- + 2 files changed, 10 insertions(+), 8 deletions(-) + +diff --git a/lib/memory.c b/lib/memory.c +index 269520d5a435..b1680a5e6f07 100644 +--- a/lib/memory.c ++++ b/lib/memory.c +@@ -80,9 +80,11 @@ zmalloc (int type, size_t size) + + /* + * Allocate memory as in zmalloc, and also clear the memory. ++ * Add an extra 'z' prefix to function name to avoid collision when linking ++ * statically with zlib that exports the 'zcalloc' symbol. + */ + void * +-zcalloc (int type, size_t size) ++zzcalloc (int type, size_t size) + { + void *memory; + +@@ -97,9 +99,9 @@ zcalloc (int type, size_t size) + } + + /* +- * Given a pointer returned by zmalloc or zcalloc, free it and ++ * Given a pointer returned by zmalloc or zzcalloc, free it and + * return a pointer to a new size, basically acting like realloc(). +- * Requires: ptr was returned by zmalloc, zcalloc, or zrealloc with the ++ * Requires: ptr was returned by zmalloc, zzcalloc, or zrealloc with the + * same type. + * Effects: Returns a pointer to the new memory, or aborts. + */ +@@ -109,7 +111,7 @@ zrealloc (int type, void *ptr, size_t size) + void *memory; + + if (ptr == NULL) /* is really alloc */ +- return zcalloc(type, size); ++ return zzcalloc(type, size); + + memory = realloc (ptr, size); + if (memory == NULL) +@@ -122,7 +124,7 @@ zrealloc (int type, void *ptr, size_t size) + + /* + * Free memory allocated by z*alloc or zstrdup. +- * Requires: ptr was returned by zmalloc, zcalloc, or zrealloc with the ++ * Requires: ptr was returned by zmalloc, zzcalloc, or zrealloc with the + * same type. + * Effects: The memory is freed and may no longer be referenced. + */ +@@ -196,7 +198,7 @@ mtype_zcalloc (const char *file, int line, int type, size_t size) + mstat[type].c_calloc++; + mstat[type].t_calloc++; + +- memory = zcalloc (type, size); ++ memory = zzcalloc (type, size); + mtype_log ("xcalloc", memory, file, line, type); + + return memory; +diff --git a/lib/memory.h b/lib/memory.h +index 23962235dbfe..501352993d21 100644 +--- a/lib/memory.h ++++ b/lib/memory.h +@@ -56,7 +56,7 @@ extern struct mlist mlists[]; + mtype_zstrdup (__FILE__, __LINE__, (mtype), (str)) + #else + #define XMALLOC(mtype, size) zmalloc ((mtype), (size)) +-#define XCALLOC(mtype, size) zcalloc ((mtype), (size)) ++#define XCALLOC(mtype, size) zzcalloc ((mtype), (size)) + #define XREALLOC(mtype, ptr, size) zrealloc ((mtype), (ptr), (size)) + #define XFREE(mtype, ptr) do { \ + zfree ((mtype), (ptr)); \ +@@ -67,7 +67,7 @@ extern struct mlist mlists[]; + + /* Prototypes of memory function. */ + extern void *zmalloc (int type, size_t size); +-extern void *zcalloc (int type, size_t size); ++extern void *zzcalloc (int type, size_t size); + extern void *zrealloc (int type, void *ptr, size_t size); + extern void zfree (int type, void *ptr); + extern char *zstrdup (int type, const char *str); +-- +2.8.1 + diff --git a/buildroot/package/quagga/0004-bgpd-Fix-AS_PATH-size-calculation-for-long-paths.patch b/buildroot/package/quagga/0004-bgpd-Fix-AS_PATH-size-calculation-for-long-paths.patch new file mode 100644 index 0000000..1425cf0 --- /dev/null +++ b/buildroot/package/quagga/0004-bgpd-Fix-AS_PATH-size-calculation-for-long-paths.patch @@ -0,0 +1,33 @@ +From 7a42b78be9a4108d98833069a88e6fddb9285008 Mon Sep 17 00:00:00 2001 +From: Andreas Jaggi +Date: Mon, 2 Oct 2017 19:38:43 +0530 +Subject: [PATCH] bgpd: Fix AS_PATH size calculation for long paths + +If you have an AS_PATH with more entries than +what can be written into a single AS_SEGMENT_MAX +it needs to be broken up. The code that noticed +that the AS_PATH needs to be broken up was not +correctly calculating the size of the resulting +message. This patch addresses this issue. + +Signed-off-by: Peter Korsgaard +--- + bgpd/bgp_aspath.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bgpd/bgp_aspath.c b/bgpd/bgp_aspath.c +index b7af5e88..d813bfba 100644 +--- a/bgpd/bgp_aspath.c ++++ b/bgpd/bgp_aspath.c +@@ -903,7 +903,7 @@ aspath_put (struct stream *s, struct aspath *as, int use32bit ) + assegment_header_put (s, seg->type, AS_SEGMENT_MAX); + assegment_data_put (s, seg->as, AS_SEGMENT_MAX, use32bit); + written += AS_SEGMENT_MAX; +- bytes += ASSEGMENT_SIZE (written, use32bit); ++ bytes += ASSEGMENT_SIZE (AS_SEGMENT_MAX, use32bit); + } + + /* write the final segment, probably is also the first */ +-- +2.11.0 + diff --git a/buildroot/package/quagga/0005-bgpd-security-invalid-attr-length-sends-NOTIFY-with-.patch b/buildroot/package/quagga/0005-bgpd-security-invalid-attr-length-sends-NOTIFY-with-.patch new file mode 100644 index 0000000..b64109d --- /dev/null +++ b/buildroot/package/quagga/0005-bgpd-security-invalid-attr-length-sends-NOTIFY-with-.patch @@ -0,0 +1,69 @@ +From cc2e6770697e343f4af534114ab7e633d5beabec Mon Sep 17 00:00:00 2001 +From: Paul Jakma +Date: Wed, 3 Jan 2018 23:57:33 +0000 +Subject: [PATCH] bgpd/security: invalid attr length sends NOTIFY with data + overrun + +Security issue: Quagga-2018-0543 + +See: https://www.quagga.net/security/Quagga-2018-0543.txt + +* bgpd/bgp_attr.c: (bgp_attr_parse) An invalid attribute length is correctly + checked, and a NOTIFY prepared. The NOTIFY can include the incorrect + received data with the NOTIFY, for debug purposes. Commit + c69698704806a9ac5 modified the code to do that just, and also send the + malformed attr with the NOTIFY. However, the invalid attribute length was + used as the length of the data to send back. + + The result is a read past the end of data, which is then written to the + NOTIFY message and sent to the peer. + + A configured BGP peer can use this bug to read up to 64 KiB of memory from + the bgpd process, or crash the process if the invalid read is caught by + some means (unmapped page and SEGV, or other mechanism) resulting in a DoS. + + This bug _ought_ /not/ be exploitable by anything other than the connected + BGP peer, assuming the underlying TCP transport is secure. For no BGP + peer should send on an UPDATE with this attribute. Quagga will not, as + Quagga always validates the attr header length, regardless of type. + + However, it is possible that there are BGP implementations that do not + check lengths on some attributes (e.g. optional/transitive ones of a type + they do not recognise), and might pass such malformed attrs on. If such + implementations exists and are common, then this bug might be triggerable + by BGP speakers further hops away. Those peers will not receive the + NOTIFY (unless they sit on a shared medium), however they might then be + able to trigger a DoS. + + Fix: use the valid bound to calculate the length. + +Signed-off-by: Peter Korsgaard +--- + bgpd/bgp_attr.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c +index ef58beb1..9564637e 100644 +--- a/bgpd/bgp_attr.c ++++ b/bgpd/bgp_attr.c +@@ -2147,6 +2147,8 @@ bgp_attr_parse (struct peer *peer, struct attr *attr, bgp_size_t size, + memset (seen, 0, BGP_ATTR_BITMAP_SIZE); + + /* End pointer of BGP attribute. */ ++ assert (size <= stream_get_size (BGP_INPUT (peer))); ++ assert (size <= stream_get_endp (BGP_INPUT (peer))); + endp = BGP_INPUT_PNT (peer) + size; + + /* Get attributes to the end of attribute length. */ +@@ -2228,7 +2230,7 @@ bgp_attr_parse (struct peer *peer, struct attr *attr, bgp_size_t size, + bgp_notify_send_with_data (peer, + BGP_NOTIFY_UPDATE_ERR, + BGP_NOTIFY_UPDATE_ATTR_LENG_ERR, +- startp, attr_endp - startp); ++ startp, endp - startp); + return BGP_ATTR_PARSE_ERROR; + } + +-- +2.11.0 + diff --git a/buildroot/package/quagga/0006-bgpd-security-Fix-double-free-of-unknown-attribute.patch b/buildroot/package/quagga/0006-bgpd-security-Fix-double-free-of-unknown-attribute.patch new file mode 100644 index 0000000..0e32817 --- /dev/null +++ b/buildroot/package/quagga/0006-bgpd-security-Fix-double-free-of-unknown-attribute.patch @@ -0,0 +1,112 @@ +From e69b535f92eafb599329bf725d9b4c6fd5d7fded Mon Sep 17 00:00:00 2001 +From: Paul Jakma +Date: Sat, 6 Jan 2018 19:52:10 +0000 +Subject: [PATCH] bgpd/security: Fix double free of unknown attribute + +Security issue: Quagga-2018-1114 +See: https://www.quagga.net/security/Quagga-2018-1114.txt + +It is possible for bgpd to double-free an unknown attribute. This can happen +via bgp_update_receive receiving an UPDATE with an invalid unknown attribute. +bgp_update_receive then will call bgp_attr_unintern_sub and bgp_attr_flush, +and the latter may try free an already freed unknown attr. + +* bgpd/bgp_attr.c: (transit_unintern) Take a pointer to the caller's storage + for the (struct transit *), so that transit_unintern can NULL out the + caller's reference if the (struct transit) is freed. + (cluster_unintern) By inspection, appears to have a similar issue. + (bgp_attr_unintern_sub) adjust for above. + +Signed-off-by: Peter Korsgaard +--- + bgpd/bgp_attr.c | 33 +++++++++++++++++++-------------- + bgpd/bgp_attr.h | 4 ++-- + 2 files changed, 21 insertions(+), 16 deletions(-) + +diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c +index 9564637e..0c2806b5 100644 +--- a/bgpd/bgp_attr.c ++++ b/bgpd/bgp_attr.c +@@ -199,15 +199,17 @@ cluster_intern (struct cluster_list *cluster) + } + + void +-cluster_unintern (struct cluster_list *cluster) ++cluster_unintern (struct cluster_list **cluster) + { +- if (cluster->refcnt) +- cluster->refcnt--; ++ struct cluster_list *c = *cluster; ++ if (c->refcnt) ++ c->refcnt--; + +- if (cluster->refcnt == 0) ++ if (c->refcnt == 0) + { +- hash_release (cluster_hash, cluster); +- cluster_free (cluster); ++ hash_release (cluster_hash, c); ++ cluster_free (c); ++ *cluster = NULL; + } + } + +@@ -357,15 +359,18 @@ transit_intern (struct transit *transit) + } + + void +-transit_unintern (struct transit *transit) ++transit_unintern (struct transit **transit) + { +- if (transit->refcnt) +- transit->refcnt--; ++ struct transit *t = *transit; ++ ++ if (t->refcnt) ++ t->refcnt--; + +- if (transit->refcnt == 0) ++ if (t->refcnt == 0) + { +- hash_release (transit_hash, transit); +- transit_free (transit); ++ hash_release (transit_hash, t); ++ transit_free (t); ++ *transit = NULL; + } + } + +@@ -820,11 +825,11 @@ bgp_attr_unintern_sub (struct attr *attr) + UNSET_FLAG(attr->flag, ATTR_FLAG_BIT (BGP_ATTR_LARGE_COMMUNITIES)); + + if (attr->extra->cluster) +- cluster_unintern (attr->extra->cluster); ++ cluster_unintern (&attr->extra->cluster); + UNSET_FLAG(attr->flag, ATTR_FLAG_BIT (BGP_ATTR_CLUSTER_LIST)); + + if (attr->extra->transit) +- transit_unintern (attr->extra->transit); ++ transit_unintern (&attr->extra->transit); + } + } + +diff --git a/bgpd/bgp_attr.h b/bgpd/bgp_attr.h +index 9ff074b2..052acc7d 100644 +--- a/bgpd/bgp_attr.h ++++ b/bgpd/bgp_attr.h +@@ -187,10 +187,10 @@ extern unsigned long int attr_unknown_count (void); + + /* Cluster list prototypes. */ + extern int cluster_loop_check (struct cluster_list *, struct in_addr); +-extern void cluster_unintern (struct cluster_list *); ++extern void cluster_unintern (struct cluster_list **); + + /* Transit attribute prototypes. */ +-void transit_unintern (struct transit *); ++void transit_unintern (struct transit **); + + /* Below exported for unit-test purposes only */ + struct bgp_attr_parser_args { +-- +2.11.0 + diff --git a/buildroot/package/quagga/0007-bgpd-security-debug-print-of-received-NOTIFY-data-ca.patch b/buildroot/package/quagga/0007-bgpd-security-debug-print-of-received-NOTIFY-data-ca.patch new file mode 100644 index 0000000..aeb50ae --- /dev/null +++ b/buildroot/package/quagga/0007-bgpd-security-debug-print-of-received-NOTIFY-data-ca.patch @@ -0,0 +1,114 @@ +From 9e5251151894aefdf8e9392a2371615222119ad8 Mon Sep 17 00:00:00 2001 +From: Paul Jakma +Date: Sat, 6 Jan 2018 22:31:52 +0000 +Subject: [PATCH] bgpd/security: debug print of received NOTIFY data can + over-read msg array + +Security issue: Quagga-2018-1550 +See: https://www.quagga.net/security/Quagga-2018-1550.txt + +* bgpd/bgp_debug.c: (struct message) Nearly every one of the NOTIFY + code/subcode message arrays has their corresponding size variables off + by one, as most have 1 as first index. + + This means (bgp_notify_print) can cause mes_lookup to overread the (struct + message) by 1 pointer value if given an unknown index. + + Fix the bgp_notify_..._msg_max variables to use the compiler to calculate + the correct sizes. + +Signed-off-by: Peter Korsgaard +--- + bgpd/bgp_debug.c | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) + +diff --git a/bgpd/bgp_debug.c b/bgpd/bgp_debug.c +index ba797228..43faee7c 100644 +--- a/bgpd/bgp_debug.c ++++ b/bgpd/bgp_debug.c +@@ -29,6 +29,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + #include "log.h" + #include "sockunion.h" + #include "filter.h" ++#include "memory.h" + + #include "bgpd/bgpd.h" + #include "bgpd/bgp_aspath.h" +@@ -73,7 +74,8 @@ const struct message bgp_status_msg[] = + { Clearing, "Clearing" }, + { Deleted, "Deleted" }, + }; +-const int bgp_status_msg_max = BGP_STATUS_MAX; ++#define BGP_DEBUG_MSG_MAX(msg) const int msg ## _max = array_size (msg) ++BGP_DEBUG_MSG_MAX (bgp_status_msg); + + /* BGP message type string. */ + const char *bgp_type_str[] = +@@ -84,7 +86,8 @@ const char *bgp_type_str[] = + "NOTIFICATION", + "KEEPALIVE", + "ROUTE-REFRESH", +- "CAPABILITY" ++ "CAPABILITY", ++ NULL, + }; + + /* message for BGP-4 Notify */ +@@ -98,15 +101,15 @@ static const struct message bgp_notify_msg[] = + { BGP_NOTIFY_CEASE, "Cease"}, + { BGP_NOTIFY_CAPABILITY_ERR, "CAPABILITY Message Error"}, + }; +-static const int bgp_notify_msg_max = BGP_NOTIFY_MAX; ++BGP_DEBUG_MSG_MAX (bgp_notify_msg); + + static const struct message bgp_notify_head_msg[] = + { + { BGP_NOTIFY_HEADER_NOT_SYNC, "/Connection Not Synchronized"}, + { BGP_NOTIFY_HEADER_BAD_MESLEN, "/Bad Message Length"}, +- { BGP_NOTIFY_HEADER_BAD_MESTYPE, "/Bad Message Type"} ++ { BGP_NOTIFY_HEADER_BAD_MESTYPE, "/Bad Message Type"}, + }; +-static const int bgp_notify_head_msg_max = BGP_NOTIFY_HEADER_MAX; ++BGP_DEBUG_MSG_MAX (bgp_notify_head_msg); + + static const struct message bgp_notify_open_msg[] = + { +@@ -119,7 +122,7 @@ static const struct message bgp_notify_open_msg[] = + { BGP_NOTIFY_OPEN_UNACEP_HOLDTIME, "/Unacceptable Hold Time"}, + { BGP_NOTIFY_OPEN_UNSUP_CAPBL, "/Unsupported Capability"}, + }; +-static const int bgp_notify_open_msg_max = BGP_NOTIFY_OPEN_MAX; ++BGP_DEBUG_MSG_MAX (bgp_notify_open_msg); + + static const struct message bgp_notify_update_msg[] = + { +@@ -136,7 +139,7 @@ static const struct message bgp_notify_update_msg[] = + { BGP_NOTIFY_UPDATE_INVAL_NETWORK, "/Invalid Network Field"}, + { BGP_NOTIFY_UPDATE_MAL_AS_PATH, "/Malformed AS_PATH"}, + }; +-static const int bgp_notify_update_msg_max = BGP_NOTIFY_UPDATE_MAX; ++BGP_DEBUG_MSG_MAX (bgp_notify_update_msg); + + static const struct message bgp_notify_cease_msg[] = + { +@@ -150,7 +153,7 @@ static const struct message bgp_notify_cease_msg[] = + { BGP_NOTIFY_CEASE_COLLISION_RESOLUTION, "/Connection collision resolution"}, + { BGP_NOTIFY_CEASE_OUT_OF_RESOURCE, "/Out of Resource"}, + }; +-static const int bgp_notify_cease_msg_max = BGP_NOTIFY_CEASE_MAX; ++BGP_DEBUG_MSG_MAX (bgp_notify_cease_msg); + + static const struct message bgp_notify_capability_msg[] = + { +@@ -159,7 +162,7 @@ static const struct message bgp_notify_capability_msg[] = + { BGP_NOTIFY_CAPABILITY_INVALID_LENGTH, "/Invalid Capability Length"}, + { BGP_NOTIFY_CAPABILITY_MALFORMED_CODE, "/Malformed Capability Value"}, + }; +-static const int bgp_notify_capability_msg_max = BGP_NOTIFY_CAPABILITY_MAX; ++BGP_DEBUG_MSG_MAX (bgp_notify_capability_msg); + + /* Origin strings. */ + const char *bgp_origin_str[] = {"i","e","?"}; +-- +2.11.0 + diff --git a/buildroot/package/quagga/0008-bgpd-security-fix-infinite-loop-on-certain-invalid-O.patch b/buildroot/package/quagga/0008-bgpd-security-fix-infinite-loop-on-certain-invalid-O.patch new file mode 100644 index 0000000..0a06da9 --- /dev/null +++ b/buildroot/package/quagga/0008-bgpd-security-fix-infinite-loop-on-certain-invalid-O.patch @@ -0,0 +1,43 @@ +From ce07207c50a3d1f05d6dd49b5294282e59749787 Mon Sep 17 00:00:00 2001 +From: Paul Jakma +Date: Sat, 6 Jan 2018 21:20:51 +0000 +Subject: [PATCH] bgpd/security: fix infinite loop on certain invalid OPEN + messages + +Security issue: Quagga-2018-1975 +See: https://www.quagga.net/security/Quagga-2018-1975.txt + +* bgpd/bgp_packet.c: (bgp_capability_msg_parse) capability parser can infinite + loop due to checks that issue 'continue' without bumping the input + pointer. + +Signed-off-by: Peter Korsgaard +--- + bgpd/bgp_packet.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c +index b3d601fc..f9338d8d 100644 +--- a/bgpd/bgp_packet.c ++++ b/bgpd/bgp_packet.c +@@ -2328,7 +2328,8 @@ bgp_capability_msg_parse (struct peer *peer, u_char *pnt, bgp_size_t length) + + end = pnt + length; + +- while (pnt < end) ++ /* XXX: Streamify this */ ++ for (; pnt < end; pnt += hdr->length + 3) + { + /* We need at least action, capability code and capability length. */ + if (pnt + 3 > end) +@@ -2416,7 +2417,6 @@ bgp_capability_msg_parse (struct peer *peer, u_char *pnt, bgp_size_t length) + zlog_warn ("%s unrecognized capability code: %d - ignored", + peer->host, hdr->code); + } +- pnt += hdr->length + 3; + } + return 0; + } +-- +2.11.0 + diff --git a/buildroot/package/quagga/Config.in b/buildroot/package/quagga/Config.in new file mode 100644 index 0000000..98b9d34 --- /dev/null +++ b/buildroot/package/quagga/Config.in @@ -0,0 +1,88 @@ +config BR2_PACKAGE_QUAGGA + bool "quagga" + depends on BR2_USE_MMU # fork() + help + Routing software suite, providing implementations of OSPFv2, + OSPFv3 (IPv6), RIP v1 and v2, RIPng (IPv6) and BGPv4+. + + http://www.quagga.net/ + +if BR2_PACKAGE_QUAGGA + +config BR2_PACKAGE_QUAGGA_ZEBRA + bool "zebra daemon" + help + Build zebra daemon. + +config BR2_PACKAGE_QUAGGA_TCP_ZEBRA + bool "Use TCP sockets between zebra and protocol daemons" + depends on BR2_PACKAGE_QUAGGA_ZEBRA + help + Use a TCP socket to communicate between zebra (supervisor) + and the different protocol daemons. + + You'll want this enabled if zebra and the protocol daemon(s) + run on different hosts. + +config BR2_PACKAGE_QUAGGA_BGPD + bool "BGPv4+ protocol" + help + Build bgpd daemon. + +config BR2_PACKAGE_QUAGGA_BGP_ANNOUNCE + bool "BGP route announcement" + depends on BR2_PACKAGE_QUAGGA_BGPD + +config BR2_PACKAGE_QUAGGA_ISISD + bool "IS-IS protocol" + help + Enable isisd support in quagga. + +config BR2_PACKAGE_QUAGGA_OSPFD + bool "OSPFv2 protocol" + help + Build ospfd daemon. + +config BR2_PACKAGE_QUAGGA_OSPF6D + bool "OSPFv3 (IPv6) protocol" + help + Build ospf6d daemon. + +config BR2_PACKAGE_QUAGGA_RIPD + bool "RIPv2/v3 protocol" + help + Build ripd daemon. + +config BR2_PACKAGE_QUAGGA_RIPNGD + bool "RIPng (IPv6) protocol" + help + Build ripngd daemon. + +config BR2_PACKAGE_QUAGGA_PIMD + bool "PIMd protocol" + help + Provides IPv4 PIM-SSM multicast routing. + +config BR2_PACKAGE_QUAGGA_WATCHQUAGGA + bool "Build watchquagga" + help + Build and install watchquagga, a zebra/protocol daemon + supervisor. + +config BR2_PACKAGE_QUAGGA_VTYSH + bool "Build vtysh" + select BR2_PACKAGE_READLINE + help + Build and install vtysh, a vty shell for Quagga. + +config BR2_PACKAGE_QUAGGA_SNMP + bool "SNMP support" + depends on BR2_USE_MMU # net-snmp + select BR2_PACKAGE_NETSNMP + help + Make quagga information available via SNMP SMUX. + +comment "AgentX support must be enabled in net-snmp or the build will break" + depends on BR2_PACKAGE_QUAGGA_SNMP + +endif diff --git a/buildroot/package/quagga/quagga.hash b/buildroot/package/quagga/quagga.hash new file mode 100644 index 0000000..6da37cf --- /dev/null +++ b/buildroot/package/quagga/quagga.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 b5a94e5bdad3062e04595a5692b8cc435f0a85102f75dfdca0a06d093b4ef63f quagga-1.1.1.tar.gz diff --git a/buildroot/package/quagga/quagga.mk b/buildroot/package/quagga/quagga.mk new file mode 100644 index 0000000..b2b4e2a --- /dev/null +++ b/buildroot/package/quagga/quagga.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# quagga +# +################################################################################ + +QUAGGA_VERSION = 1.1.1 +QUAGGA_SITE = http://download.savannah.gnu.org/releases/quagga +QUAGGA_DEPENDENCIES = host-gawk host-pkgconf +QUAGGA_LICENSE = GPL-2.0+ +QUAGGA_LICENSE_FILES = COPYING + +# We need to override the sysconf and localstate directories so that +# quagga can create files as the quagga user without extra +# intervention +QUAGGA_CONF_OPTS = \ + --program-transform-name='' \ + --sysconfdir=/etc/quagga \ + --localstatedir=/var/run/quagga + +# 0002-configure-fix-static-linking-with-readline.patch +QUAGGA_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +QUAGGA_CONF_OPTS += --enable-capabilities +QUAGGA_DEPENDENCIES += libcap +else +QUAGGA_CONF_OPTS += --disable-capabilities +endif + +ifeq ($(BR2_PACKAGE_PROTOBUF_C),y) +QUAGGA_CONF_OPTS += --enable-protobuf +QUAGGA_DEPENDENCIES += protobuf-c +else +QUAGGA_CONF_OPTS += --disable-protobuf +endif + +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_ZEBRA),--enable-zebra,--disable-zebra) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_BGPD),--enable-bgpd,--disable-bgpd) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_RIPD),--enable-ripd,--disable-ripd) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_RIPNGD),--enable-ripngd,--disable-ripngd) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_OSPFD),--enable-ospfd,--disable-ospfd --disable-ospfapi) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_OSPF6D),--enable-ospf6d,--disable-ospf6d) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_PIMD),--enable-pimd,--disable-pimd) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_WATCHQUAGGA),--enable-watchquagga,--disable-watchquagga) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_ISISD),--enable-isisd,--disable-isisd) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_BGP_ANNOUNCE),--enable-bgp-announce,--disable-bgp-announce) +QUAGGA_CONF_OPTS += $(if $(BR2_PACKAGE_QUAGGA_TCP_ZERBRA),--enable-tcp-zebra,--disable-tcp-zebra) + +define QUAGGA_USERS + quagga -1 quagga -1 * - - - Quagga priv drop user +endef + +# Set the permissions of /etc/quagga such that quagga (through vtysh) +# can save the configuration - set the folder recursively as the files +# need to be 600, and then set the folder (non-recursively) to 755 so +# it can used. Quagga also needs to write to the folder as it moves +# and creates, rather than overwriting. +define QUAGGA_PERMISSIONS + /etc/quagga r 600 quagga quagga - - - - - + /etc/quagga d 755 quagga quagga - - - - - +endef + +ifeq ($(BR2_PACKAGE_QUAGGA_SNMP),y) +QUAGGA_CONF_ENV += ac_cv_path_NETSNMP_CONFIG=$(STAGING_DIR)/usr/bin/net-snmp-config +QUAGGA_CONF_OPTS += --enable-snmp=agentx +QUAGGA_DEPENDENCIES += netsnmp +endif + +ifeq ($(BR2_PACKAGE_QUAGGA_VTYSH),y) +QUAGGA_CONF_OPTS += --enable-vtysh +QUAGGA_DEPENDENCIES += readline +else +QUAGGA_CONF_OPTS += --disable-vtysh +endif + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +QUAGGA_CONF_OPTS += --disable-pie +endif + +define QUAGGA_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/quagga/quagga_tmpfiles.conf \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/quagga.conf + $(INSTALL) -D -m 644 package/quagga/quagga@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/quagga@.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/quagga/quagga@.service b/buildroot/package/quagga/quagga@.service new file mode 100644 index 0000000..797af32 --- /dev/null +++ b/buildroot/package/quagga/quagga@.service @@ -0,0 +1,17 @@ +[Unit] +Description=Quagga %i routing daemon +ConditionFileIsExecutable=/usr/sbin/%i +Wants=quagga@zebra.service + +[Service] +Type=simple +EnvironmentFile=/etc/default/quagga-%i +PrivateTmp=true +# Systemd doesn't like having %i in the executable path. +ExecStart=/usr/bin/env /usr/sbin/%i $OPTS -f /etc/quagga/%i.conf +ExecReload=/bin/kill -HUP $MAINPID +Restart=on-failure + +[Install] +WantedBy=multi-user.target + diff --git a/buildroot/package/quagga/quagga_tmpfiles.conf b/buildroot/package/quagga/quagga_tmpfiles.conf new file mode 100644 index 0000000..e16c475 --- /dev/null +++ b/buildroot/package/quagga/quagga_tmpfiles.conf @@ -0,0 +1 @@ +d /var/run/quagga/ 1755 quagga quagga - diff --git a/buildroot/package/quazip/Config.in b/buildroot/package/quazip/Config.in new file mode 100644 index 0000000..83537d4 --- /dev/null +++ b/buildroot/package/quazip/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_QUAZIP + bool "quazip" + select BR2_PACKAGE_ZLIB + help + QuaZIP is a simple C++ wrapper over Gilles Vollant's + ZIP/UNZIP package that can be used to access ZIP + archives. It uses the Qt toolkit. + + http://quazip.sourceforge.net diff --git a/buildroot/package/quazip/quazip.hash b/buildroot/package/quazip/quazip.hash new file mode 100644 index 0000000..87bf7c2 --- /dev/null +++ b/buildroot/package/quazip/quazip.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 2ad4f354746e8260d46036cde1496c223ec79765041ea28eb920ced015e269b5 quazip-0.7.3.tar.gz diff --git a/buildroot/package/quazip/quazip.mk b/buildroot/package/quazip/quazip.mk new file mode 100644 index 0000000..09037a5 --- /dev/null +++ b/buildroot/package/quazip/quazip.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# quazip +# +################################################################################ + +QUAZIP_VERSION = 0.7.3 +QUAZIP_SITE = http://sourceforge.net/projects/quazip/files/quazip/$(QUAZIP_VERSION) +QUAZIP_INSTALL_STAGING = YES +QUAZIP_DEPENDENCIES = \ + zlib \ + $(if $(BR2_PACKAGE_QT),qt) \ + $(if $(BR2_PACKAGE_QT5),qt5base) +QUAZIP_LICENSE = LGPL-2.1 +QUAZIP_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_QT5),y) +QUAZIP_QMAKE = $(QT5_QMAKE) +else +QUAZIP_QMAKE = $(QT_QMAKE) +endif + +define QUAZIP_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(QUAZIP_QMAKE) PREFIX=/usr) +endef + +define QUAZIP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QUAZIP_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install INSTALL_ROOT=$(STAGING_DIR) +endef + +define QUAZIP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install INSTALL_ROOT=$(TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/quota/0001-tools-getrpcbynumber.patch b/buildroot/package/quota/0001-tools-getrpcbynumber.patch new file mode 100644 index 0000000..899db91 --- /dev/null +++ b/buildroot/package/quota/0001-tools-getrpcbynumber.patch @@ -0,0 +1,42 @@ +allow usage of getrpcbynumber() instead of getrpcbynumber_r() + +libtirpc does not implement the reentrant function getrpcbynumber_r(), +so allow quota to use the non-reentrant version getrpcbynumber(). This +should not be a problem as quota tools are not multi-threaded. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.in +=================================================================== +--- a/configure.in ++++ b/configure.in +@@ -182,6 +182,12 @@ + AC_C_CONST + AC_C_INLINE + ++AC_CHECK_FUNCS([getrpcbynumber getrpcbynumber_r]) ++ ++if test "$ac_cv_func_getrpcbynumber_r" != "yes" -a "$ac_cv_func_getrpcbynumber" != "yes"; then ++ AC_MSG_ERROR([Neither getrpcbynumber_r nor getrpcbynumber are available]) ++fi ++ + AC_ARG_ENABLE(rpc, + [ --enable-rpc=[yes/no] Enable RPC support [default=yes].], + , +Index: b/svc_socket.c +=================================================================== +--- a/svc_socket.c ++++ b/svc_socket.c +@@ -55,7 +55,12 @@ + addr.sin_family = AF_INET; + + if (!port) { ++#if HAVE_GETRPCBYNUMBER_R + ret = getrpcbynumber_r(number, &rpcbuf, rpcdata, sizeof(rpcdata), &rpcp); ++#else ++ rpcp = getrpcbynumber(number); ++ ret = 0; ++#endif + if (ret == 0 && rpcp != NULL) { + /* First try name */ + ret = getservbyname_r(rpcp->r_name, proto, &servbuf, servdata, diff --git a/buildroot/package/quota/0002-fix-static-linking.patch b/buildroot/package/quota/0002-fix-static-linking.patch new file mode 100644 index 0000000..fd73f64 --- /dev/null +++ b/buildroot/package/quota/0002-fix-static-linking.patch @@ -0,0 +1,55 @@ +Use $(LIBS) properly + +This patch makes sure the quota build system uses $(LIBS) where +appropriate, so that it can be used to link with additional libraries, +which is needed when linking statically. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile.in +=================================================================== +--- a/Makefile.in ++++ b/Makefile.in +@@ -105,30 +105,40 @@ + -$(INSTALL) -m $(DEF_MAN_MODE) *.8 $(ROOTDIR)$(mandir)/man8 + + quotaon: quotaon.o quotaon_xfs.o $(LIBOBJS) ++ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + quotacheck: quotacheck.o quotacheck_v1.o quotacheck_v2.o quotaops.o $(LIBOBJS) +- $(CC) $(LDFLAGS) -o $@ $^ $(EXT2LIBS) ++ $(CC) $(LDFLAGS) -o $@ $^ $(EXT2LIBS) $(LIBS) + + quota: quota.o quotaops.o $(LIBOBJS) ++ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + quotasync: quotasync.o $(LIBOBJS) ++ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + quot: quot.o $(LIBOBJS) ++ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + repquota: repquota.o $(LIBOBJS) ++ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + warnquota: warnquota.o $(LIBOBJS) +- $(CC) $(LDFLAGS) -o $@ $^ $(LDAPLIBS) ++ $(CC) $(LDFLAGS) -o $@ $^ $(LDAPLIBS) $(LIBS) + + quotastats: quotastats.o common.o pot.o ++ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + xqmstats: xqmstats.o common.o pot.o ++ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + edquota: edquota.o quotaops.o $(LIBOBJS) ++ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + setquota: setquota.o quotaops.o $(LIBOBJS) ++ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + convertquota: convertquota.o $(LIBOBJS) ++ $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + + rpc.rquotad: rquota_server.o rquota_svc.o svc_socket.o $(LIBOBJS) + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) diff --git a/buildroot/package/quota/0003-remove-non-posix-types.patch b/buildroot/package/quota/0003-remove-non-posix-types.patch new file mode 100644 index 0000000..869c85f --- /dev/null +++ b/buildroot/package/quota/0003-remove-non-posix-types.patch @@ -0,0 +1,200 @@ +Use proper C99 integer types + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +[Thomas: borrowed from OpenEmbedded.] +Signed-off-by: Thomas Petazzoni + +Index: quota-tools/bylabel.c +=================================================================== +--- quota-tools.orig/bylabel.c ++++ quota-tools/bylabel.c +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + #include "bylabel.h" + #include "common.h" +@@ -37,32 +38,32 @@ static struct uuidCache_s { + + #define EXT2_SUPER_MAGIC 0xEF53 + struct ext2_super_block { +- u_char s_dummy1[56]; +- u_char s_magic[2]; +- u_char s_dummy2[46]; +- u_char s_uuid[16]; +- u_char s_volume_name[16]; ++ uint8_t s_dummy1[56]; ++ uint8_t s_magic[2]; ++ uint8_t s_dummy2[46]; ++ uint8_t s_uuid[16]; ++ uint8_t s_volume_name[16]; + }; + +-#define ext2magic(s) ((uint) s.s_magic[0] + (((uint) s.s_magic[1]) << 8)) ++#define ext2magic(s) ((uint32_t) s.s_magic[0] + (((uint32_t) s.s_magic[1]) << 8)) + + #define XFS_SUPER_MAGIC "XFSB" + #define XFS_SUPER_MAGIC2 "BSFX" + struct xfs_super_block { +- u_char s_magic[4]; +- u_char s_dummy[28]; +- u_char s_uuid[16]; +- u_char s_dummy2[60]; +- u_char s_fsname[12]; ++ uint8_t s_magic[4]; ++ uint8_t s_dummy[28]; ++ uint8_t s_uuid[16]; ++ uint8_t s_dummy2[60]; ++ uint8_t s_fsname[12]; + }; + + #define REISER_SUPER_MAGIC "ReIsEr2Fs" + struct reiserfs_super_block { +- u_char s_dummy1[52]; +- u_char s_magic[10]; +- u_char s_dummy2[22]; +- u_char s_uuid[16]; +- u_char s_volume_name[16]; ++ uint8_t s_dummy1[52]; ++ uint8_t s_magic[10]; ++ uint8_t s_dummy2[22]; ++ uint8_t s_uuid[16]; ++ uint8_t s_volume_name[16]; + }; + + static inline unsigned short swapped(unsigned short a) +@@ -222,7 +223,7 @@ static char *get_spec_by_x(int n, const + return NULL; + } + +-static u_char fromhex(char c) ++static uint8_t fromhex(char c) + { + if (isdigit(c)) + return (c - '0'); +@@ -234,7 +235,7 @@ static u_char fromhex(char c) + + static char *get_spec_by_uuid(const char *s) + { +- u_char uuid[16]; ++ uint8_t uuid[16]; + int i; + + if (strlen(s) != 36 || s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-') +Index: quota-tools/quot.c +=================================================================== +--- quota-tools.orig/quot.c ++++ quota-tools/quot.c +@@ -47,6 +47,7 @@ + #include + #include + #include ++#include + + #include "pot.h" + #include "quot.h" +@@ -56,8 +57,8 @@ + #include "quotasys.h" + + #define TSIZE 500 +-static __uint64_t sizes[TSIZE]; +-static __uint64_t overflow; ++static uint64_t sizes[TSIZE]; ++static uint64_t overflow; + + static int aflag; + static int cflag; +@@ -72,7 +73,7 @@ static time_t now; + char *progname; + + static void mounttable(void); +-static char *idname(__uint32_t, int); ++static char *idname(uint32_t, int); + static void report(const char *, const char *, int); + static void creport(const char *, const char *); + +@@ -173,7 +174,7 @@ static int qcmp(du_t * p1, du_t * p2) + static void creport(const char *file, const char *fsdir) + { + int i; +- __uint64_t t = 0; ++ uint64_t t = 0; + + printf(_("%s (%s):\n"), file, fsdir); + for (i = 0; i < TSIZE - 1; i++) +@@ -219,7 +220,7 @@ static void report(const char *file, con + } + } + +-static idcache_t *getnextent(int type, __uint32_t id, int byid) ++static idcache_t *getnextent(int type, uint32_t id, int byid) + { + struct passwd *pw; + struct group *gr; +@@ -240,7 +241,7 @@ static idcache_t *getnextent(int type, _ + return &idc; + } + +-static char *idname(__uint32_t id, int type) ++static char *idname(uint32_t id, int type) + { + idcache_t *ncp, *idp; + static idcache_t nc[2][NID]; +@@ -286,8 +287,8 @@ static void acctXFS(xfs_bstat_t *p) + { + register du_t *dp; + du_t **hp; +- __uint64_t size; +- __uint32_t i, id; ++ uint64_t size; ++ uint32_t i, id; + + if ((p->bs_mode & S_IFMT) == 0) + return; +Index: quota-tools/quot.h +=================================================================== +--- quota-tools.orig/quot.h ++++ quota-tools/quot.h +@@ -35,18 +35,18 @@ + #define SEC24HR (60*60*24) /* seconds per day */ + + typedef struct { +- __uint32_t id; ++ uint32_t id; + char name[UT_NAMESIZE + 1]; + } idcache_t; + + typedef struct du { + struct du *next; +- __uint64_t blocks; +- __uint64_t blocks30; +- __uint64_t blocks60; +- __uint64_t blocks90; +- __uint64_t nfiles; +- __uint32_t id; ++ uint64_t blocks; ++ uint64_t blocks30; ++ uint64_t blocks60; ++ uint64_t blocks90; ++ uint64_t nfiles; ++ uint32_t id; + } du_t; + + #define NDU 60000 +Index: quota-tools/rquota_server.c +=================================================================== +--- quota-tools.orig/rquota_server.c ++++ quota-tools/rquota_server.c +@@ -60,7 +60,7 @@ extern char nfs_pseudoroot[PATH_MAX]; + */ + extern struct authunix_parms *unix_cred; + +-int in_group(gid_t * gids, u_int len, gid_t gid) ++int in_group(gid_t * gids, uint32_t len, gid_t gid) + { + gid_t *gidsp = gids + len; + diff --git a/buildroot/package/quota/0004-import-sys-cdefs.patch b/buildroot/package/quota/0004-import-sys-cdefs.patch new file mode 100644 index 0000000..9acd1fe --- /dev/null +++ b/buildroot/package/quota/0004-import-sys-cdefs.patch @@ -0,0 +1,18 @@ +Add missing include + +quota.h uses the __P definition, so it must include . + +Signed-off-by: Thomas Petazzoni + +Index: b/quota.h +=================================================================== +--- a/quota.h ++++ b/quota.h +@@ -2,6 +2,7 @@ + #define GUARD_QUOTA_H + + #include ++#include + + typedef u_int32_t qid_t; /* Type in which we store ids in memory */ + typedef int64_t qsize_t; /* Type in which we store size limitations */ diff --git a/buildroot/package/quota/0005-include-fcntl.patch b/buildroot/package/quota/0005-include-fcntl.patch new file mode 100644 index 0000000..fe7ea98 --- /dev/null +++ b/buildroot/package/quota/0005-include-fcntl.patch @@ -0,0 +1,20 @@ +Include to get loff_t definition + +Fixes the following build issue with musl: + +dqblk_v2.h:32:2: error: unknown type name ‘loff_t’ + +Signed-off-by: Thomas Petazzoni + +Index: b/dqblk_v2.h +=================================================================== +--- a/dqblk_v2.h ++++ b/dqblk_v2.h +@@ -8,6 +8,7 @@ + #define GUARD_DQBLK_V2_H + + #include ++#include + #include "quota_tree.h" + + #define Q_V2_GETQUOTA 0x0D00 /* Get limits and usage */ diff --git a/buildroot/package/quota/Config.in b/buildroot/package/quota/Config.in new file mode 100644 index 0000000..051a765 --- /dev/null +++ b/buildroot/package/quota/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_QUOTA + bool "quota" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC || BR2_TOOLCHAIN_HAS_THREADS # libtirpc + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + Implementation of the disk quota system. + + http://sourceforge.net/projects/linuxquota/ + +comment "quota needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || \ + !(BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_HAS_NATIVE_RPC) diff --git a/buildroot/package/quota/quota.hash b/buildroot/package/quota/quota.hash new file mode 100644 index 0000000..5e49693 --- /dev/null +++ b/buildroot/package/quota/quota.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/linuxquota/files/quota-tools/4.01/ (click on info button) +md5 5c2c31e321d2e1322ce12d69ae5c66d6 quota-4.01.tar.gz +sha1 64d2ab8b039cfea1aa4bd9e77e8c373488a7f0bf quota-4.01.tar.gz diff --git a/buildroot/package/quota/quota.mk b/buildroot/package/quota/quota.mk new file mode 100644 index 0000000..38e18a6 --- /dev/null +++ b/buildroot/package/quota/quota.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# quota +# +################################################################################ + +QUOTA_VERSION = 4.01 +QUOTA_SITE = http://downloads.sourceforge.net/project/linuxquota/quota-tools/$(QUOTA_VERSION) +QUOTA_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-nfs-utils +QUOTA_AUTORECONF = YES +QUOTA_LICENSE = GPL-2.0+ +QUOTA_CONF_OPTS = --disable-strip-binaries +QUOTA_LIBS = $(TARGET_NLS_LIBS) + +QUOTA_CFLAGS = $(TARGET_CFLAGS) + +ifeq ($(BR2_PACKAGE_E2FSPROGS),y) +QUOTA_DEPENDENCIES += e2fsprogs +QUOTA_CONF_OPTS += --enable-ext2direct +# quote does not use pkg-config to find e2fsprogs, so it does not know it +# may require -pthreads in case of static build +ifeq ($(BR2_STATIC_LIBS)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +QUOTA_LIBS += -pthread +endif +else +QUOTA_CONF_OPTS += --disable-ext2direct +endif + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +QUOTA_DEPENDENCIES += libtirpc host-pkgconf +QUOTA_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc` +QUOTA_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc` +endif + +QUOTA_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) CFLAGS="$(QUOTA_CFLAGS) -D_GNU_SOURCE" LIBS="$(QUOTA_LIBS)" +QUOTA_CONF_ENV = \ + CFLAGS="$(QUOTA_CFLAGS) -D_GNU_SOURCE" LIBS="$(QUOTA_LIBS)" + +# Package uses autoconf but not automake. +QUOTA_INSTALL_TARGET_OPTS = \ + ROOTDIR=$(TARGET_DIR) \ + install + +$(eval $(autotools-package)) diff --git a/buildroot/package/qwt/Config.in b/buildroot/package/qwt/Config.in new file mode 100644 index 0000000..041c2d1 --- /dev/null +++ b/buildroot/package/qwt/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_QWT + bool "qwt" + depends on BR2_PACKAGE_QT || BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT_GUI_MODULE if BR2_PACKAGE_QT + select BR2_PACKAGE_QT5BASE_GUI if BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_WIDGETS if BR2_PACKAGE_QT5 # printsupport + select BR2_PACKAGE_QT5BASE_CONCURRENT if BR2_PACKAGE_QT5 + help + Qwt is a graphics extension to the Qt GUI application + framework. It provides a 2D plotting widget and more. + + http://qwt.sourceforge.net/ + +if BR2_PACKAGE_QWT + +config BR2_PACKAGE_QWT_SVG + bool "SVG support" + select BR2_PACKAGE_QT_SVG if BR2_PACKAGE_QT + select BR2_PACKAGE_QT5SVG if BR2_PACKAGE_QT5 + +config BR2_PACKAGE_QWT_MATHML + bool "MathML support" + +config BR2_PACKAGE_QWT_OPENGL + bool "OpenGL support" + depends on (BR2_PACKAGE_HAS_LIBGLES && BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_QT) || \ + (BR2_PACKAGE_QT5_GL_AVAILABLE && BR2_PACKAGE_QT5) + select BR2_PACKAGE_QT_OPENGL if BR2_PACKAGE_QT + select BR2_PACKAGE_QT5BASE_OPENGL if BR2_PACKAGE_QT5 + select BR2_PACKAGE_QT5BASE_OPENGL_LIB if BR2_PACKAGE_QT5 + +endif diff --git a/buildroot/package/qwt/qwt.hash b/buildroot/package/qwt/qwt.hash new file mode 100644 index 0000000..a0077a6 --- /dev/null +++ b/buildroot/package/qwt/qwt.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/qwt/files/qwt/6.1.3/ +sha1 90ec21bc42f7fae270482e1a0df3bc79cb10e5c7 qwt-6.1.3.tar.bz2 +md5 19d1f5fa5e22054d22ee3accc37c54ba qwt-6.1.3.tar.bz2 diff --git a/buildroot/package/qwt/qwt.mk b/buildroot/package/qwt/qwt.mk new file mode 100644 index 0000000..619453b --- /dev/null +++ b/buildroot/package/qwt/qwt.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# qwt +# +################################################################################ + +QWT_VERSION = 6.1.3 +QWT_SOURCE = qwt-$(QWT_VERSION).tar.bz2 +QWT_SITE = http://downloads.sourceforge.net/project/qwt/qwt/$(QWT_VERSION) +QWT_INSTALL_STAGING = YES +ifeq ($(BR2_PACKAGE_QT),y) +QWT_DEPENDENCIES = qt +QWT_QMAKE = $(QT_QMAKE) +else ifeq ($(BR2_PACKAGE_QT5),y) +QWT_DEPENDENCIES += qt5base +QWT_QMAKE = $(QT5_QMAKE) +endif + +QWT_LICENSE = LGPL-2.1 with exceptions +QWT_LICENSE_FILES = COPYING + +QWT_CONFIG = 's%QWT_INSTALL_PREFIX.*/usr/local/.*%QWT_INSTALL_PREFIX = /usr%' +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDesigner.*$$/\# QWT_CONFIG += QwtDesigner/' +QWT_CONFIG += -e 's%/features%/mkspecs/features%' + +ifeq ($(BR2_PACKAGE_QWT_SVG),y) +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtSvg.*$$/QWT_CONFIG += QwtSvg/' +else +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtSvg.*$$/\# QWT_CONFIG += QwtSvg/' +endif + +ifeq ($(BR2_PACKAGE_QWT_MATHML),y) +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtMathML.*$$/QWT_CONFIG += QwtMathML/' +else +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtMathML.*$$/\# QWT_CONFIG += QwtMathML/' +endif + +ifeq ($(BR2_PACKAGE_QWT_OPENGL),y) +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtOpenGL.*$$/QWT_CONFIG += QwtOpenGL/' +else +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtOpenGL.*$$/\# QWT_CONFIG += QwtOpenGL/' +endif + +ifeq ($(BR2_STATIC_LIBS),y) +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDll.*$$/\# QWT_CONFIG += QwtDll/' +else +QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDll.*$$/QWT_CONFIG += QwtDll/' +endif + +define QWT_CONFIGURE_CMDS + $(SED) $(QWT_CONFIG) $(@D)/qwtconfig.pri + (cd $(@D); $(TARGET_MAKE_ENV) $(QWT_QMAKE)) +endef + +define QWT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +# After installation, we fixup the INSTALL_PREFIX in qwtconfig.pri so +# that when building with qmake, -L$(STAGING_DIR)/usr/lib is used and +# not -L/usr/lib. +define QWT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install INSTALL_ROOT=$(STAGING_DIR) + $(SED) "s%QWT_INSTALL_PREFIX = .*%QWT_INSTALL_PREFIX = $(STAGING_DIR)/usr%" \ + $(STAGING_DIR)/usr/mkspecs/features/qwtconfig.pri +endef + +define QWT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install INSTALL_ROOT=$(TARGET_DIR) + rm -Rf $(TARGET_DIR)/usr/mkspecs +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rabbitmq-c/Config.in b/buildroot/package/rabbitmq-c/Config.in new file mode 100644 index 0000000..b330c90 --- /dev/null +++ b/buildroot/package/rabbitmq-c/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_RABBITMQ_C + bool "rabbitmq-c" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + This is a C-language AMQP client library for use with v2.0+ + of the RabbitMQ broker. + + https://github.com/alanxz/rabbitmq-c + +comment "rabbitmq-c needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/rabbitmq-c/rabbitmq-c.hash b/buildroot/package/rabbitmq-c/rabbitmq-c.hash new file mode 100644 index 0000000..45e8cbd --- /dev/null +++ b/buildroot/package/rabbitmq-c/rabbitmq-c.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d8ed9dcb49903d83d79d7b227da35ef68c60e5e0b08d0fc1fb4e4dc577b8802b rabbitmq-c-v0.8.0.tar.gz diff --git a/buildroot/package/rabbitmq-c/rabbitmq-c.mk b/buildroot/package/rabbitmq-c/rabbitmq-c.mk new file mode 100644 index 0000000..d496a4c --- /dev/null +++ b/buildroot/package/rabbitmq-c/rabbitmq-c.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# rabbitmq-c +# +################################################################################ + +RABBITMQ_C_VERSION = v0.8.0 +RABBITMQ_C_SITE = $(call github,alanxz,rabbitmq-c,$(RABBITMQ_C_VERSION)) +RABBITMQ_C_LICENSE = MIT +RABBITMQ_C_LICENSE_FILES = LICENSE-MIT +RABBITMQ_C_INSTALL_STAGING = YES +RABBITMQ_C_CONF_OPTS = \ + -DBUILD_API_DOCS=OFF \ + -DBUILD_TOOLS_DOCS=OFF + +# BUILD_SHARED_LIBS is handled in pkg-cmake.mk as it is a generic cmake variable +ifeq ($(BR2_STATIC_LIBS),y) +RABBITMQ_C_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +RABBITMQ_C_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +else ifeq ($(BR2_SHARED_LIBS),y) +RABBITMQ_C_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF +endif + +# CMake OpenSSL detection is buggy, and doesn't properly use +# pkg-config, so it fails when statically linking. See +# https://gitlab.kitware.com/cmake/cmake/issues/16885. +ifeq ($(BR2_PACKAGE_OPENSSL):$(BR2_STATIC_LIBS),y:) +RABBITMQ_C_CONF_OPTS += -DENABLE_SSL_SUPPORT=ON +RABBITMQ_C_DEPENDENCIES += openssl +else +RABBITMQ_C_CONF_OPTS += -DENABLE_SSL_SUPPORT=OFF +endif + +# Popt is sometimes linked against libintl, but CMake doesn't know +# about that, and there's no way to tell manually CMake to link +# against an additional library. +ifeq ($(BR2_PACKAGE_POPT):$(BR2_STATIC_LIBS),y:) +RABBITMQ_C_CONF_OPTS += -DBUILD_TOOLS=ON +RABBITMQ_C_DEPENDENCIES += popt +else +RABBITMQ_C_CONF_OPTS += -DBUILD_TOOLS=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/rabbitmq-server/Config.in b/buildroot/package/rabbitmq-server/Config.in new file mode 100644 index 0000000..b3b7639 --- /dev/null +++ b/buildroot/package/rabbitmq-server/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_RABBITMQ_SERVER + bool "rabbitmq-server" + depends on BR2_PACKAGE_ERLANG + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_OPENSSL # Required to build Erlang's crypto and ssl + # applications + help + High-performance AMQP-compliant message broker written in + Erlang. + + http://www.rabbitmq.com + +comment "rabbitmq-server needs erlang" + depends on !BR2_PACKAGE_ERLANG diff --git a/buildroot/package/rabbitmq-server/S50rabbitmq-server b/buildroot/package/rabbitmq-server/S50rabbitmq-server new file mode 100755 index 0000000..faf248d --- /dev/null +++ b/buildroot/package/rabbitmq-server/S50rabbitmq-server @@ -0,0 +1,28 @@ +#!/bin/sh +# +# Start/stop rabbitmq-server +# + +INSTALLUSER=rabbitmq +RUNDIR=/var/run/rabbitmq + +case "$1" in + start) + install -d -o "$INSTALLUSER" -g "$INSTALLUSER" "$RUNDIR" || exit 1 + printf "Starting rabbitmq-server: " + su -c "/usr/sbin/rabbitmq-server -detached" - "$INSTALLUSER" 2>/dev/null + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping rabbitmq-server: " + su -c "/usr/sbin/rabbitmqctl stop" - "$INSTALLUSER" + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + "$0" stop || true + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/rabbitmq-server/rabbitmq-server.hash b/buildroot/package/rabbitmq-server/rabbitmq-server.hash new file mode 100644 index 0000000..3cd412d --- /dev/null +++ b/buildroot/package/rabbitmq-server/rabbitmq-server.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 395689bcf57fd48aed452fcd43ff9a992de40067d3ea5c44e14680d69db7b78e rabbitmq-server-3.6.6.tar.xz diff --git a/buildroot/package/rabbitmq-server/rabbitmq-server.mk b/buildroot/package/rabbitmq-server/rabbitmq-server.mk new file mode 100644 index 0000000..6df7707 --- /dev/null +++ b/buildroot/package/rabbitmq-server/rabbitmq-server.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# rabbitmq-server +# +################################################################################ + +RABBITMQ_SERVER_VERSION = 3.6.6 +RABBITMQ_SERVER_SITE = http://www.rabbitmq.com/releases/rabbitmq-server/v$(RABBITMQ_SERVER_VERSION) +RABBITMQ_SERVER_SOURCE = rabbitmq-server-$(RABBITMQ_SERVER_VERSION).tar.xz +RABBITMQ_SERVER_LICENSE = MPL-1.1, Apache-2.0, BSD-2-Clause, EPL, MIT, MPL-2.0 +RABBITMQ_SERVER_LICENSE_FILES = LICENSE-MPL-RabbitMQ \ + LICENSE LICENSE-APACHE2-ExplorerCanvas \ + LICENSE-APL2-Rebar LICENSE-APL2-Stomp-Websocket \ + LICENSE-BSD-base64js LICENSE-BSD-glMatrix \ + LICENSE-EPL-OTP LICENSE-MIT-EJS10 \ + LICENSE-MIT-Flot LICENSE-MIT-jQuery164 \ + LICENSE-MIT-Mochi LICENSE-MIT-Mochiweb \ + LICENSE-MIT-Sammy060 LICENSE-MIT-SockJS \ + LICENSE-MPL2 +RABBITMQ_SERVER_DEPENDENCIES = host-libxslt host-zip erlang libxslt +RABBITMQ_SERVER_TARGET_BINS = rabbitmq-plugins rabbitmq-server rabbitmqctl rabbitmq-env rabbitmq-defaults + +define RABBITMQ_SERVER_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define RABBITMQ_SERVER_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install + + for bin in $(RABBITMQ_SERVER_TARGET_BINS); do \ + ln -sf ../lib/erlang/lib/rabbitmq_server-$(RABBITMQ_SERVER_VERSION)/sbin/$$bin \ + $(TARGET_DIR)/usr/sbin/$$bin; \ + done +endef + +define RABBITMQ_SERVER_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/rabbitmq-server/rabbitmq-server.service \ + $(TARGET_DIR)/usr/lib/systemd/system/rabbitmq-server.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + + ln -fs ../../../../usr/lib/systemd/system/rabbitmq-server.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service +endef + +define RABBITMQ_SERVER_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/rabbitmq-server/S50rabbitmq-server \ + $(TARGET_DIR)/etc/init.d/S50rabbitmq-server +endef + +define RABBITMQ_SERVER_USERS + rabbitmq -1 rabbitmq -1 * /var/lib/rabbitmq /bin/sh - rabbitmq-server daemon +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rabbitmq-server/rabbitmq-server.service b/buildroot/package/rabbitmq-server/rabbitmq-server.service new file mode 100644 index 0000000..268b4bd --- /dev/null +++ b/buildroot/package/rabbitmq-server/rabbitmq-server.service @@ -0,0 +1,15 @@ +[Unit] +Description=RabbitMQ Messaging Server +After=syslog.target network.target + +[Service] +Type=simple +User=rabbitmq +Group=rabbitmq +Environment=HOME=/var/lib/rabbitmq +WorkingDirectory=/var/lib/rabbitmq +ExecStart=/usr/sbin/rabbitmq-server +ExecStop=/usr/sbin/rabbitmqctl stop + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/racehound/0001-Fix-module-install-path-lib-instead-of-usr-lib-prefi.patch b/buildroot/package/racehound/0001-Fix-module-install-path-lib-instead-of-usr-lib-prefi.patch new file mode 100644 index 0000000..6cac55d --- /dev/null +++ b/buildroot/package/racehound/0001-Fix-module-install-path-lib-instead-of-usr-lib-prefi.patch @@ -0,0 +1,26 @@ +From 4f8ed39ddaf17c7dd4ddbdb88e67097f00c98173 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 16 Jul 2015 23:11:25 +0200 +Subject: [PATCH] Fix module install path (/lib instead of /usr/lib prefix) + +Signed-off-by: Peter Seiderer +--- + cmake/modules/path_prefixes.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/modules/path_prefixes.cmake b/cmake/modules/path_prefixes.cmake +index 3cb1fe2..9dc50a4 100644 +--- a/cmake/modules/path_prefixes.cmake ++++ b/cmake/modules/path_prefixes.cmake +@@ -113,7 +113,7 @@ set(RH_INSTALL_PREFIX_DOC + # Set derivative prefixes + + # additional, 1 +-set(RH_INSTALL_PREFIX_KMODULE "${RH_INSTALL_PREFIX_LIB}/modules/${KBUILD_VERSION_STRING}/misc") ++set(RH_INSTALL_PREFIX_KMODULE "/lib/modules/${KBUILD_VERSION_STRING}/misc") + # Another variant + #"${RH_INSTALL_PREFIX_LIB}/modules/${KBUILD_VERSION_STRING}/extra") + # additional, 2 +-- +2.1.4 + diff --git a/buildroot/package/racehound/Config.in b/buildroot/package/racehound/Config.in new file mode 100644 index 0000000..2d1ccb8 --- /dev/null +++ b/buildroot/package/racehound/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_RACEHOUND + bool "racehound" + depends on BR2_LINUX_KERNEL + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR # elfutils + depends on !BR2_STATIC_LIBS # elfutils + depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils + # only x86/x86_64 supported + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_ELFUTILS + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + RaceHound can be used to detect data races in the Linux + kernel on x86. + + RaceHound needs the following kernel configurations enabled: + - CONFIG_X86_32 or CONFIG_X86_64 + - CONFIG_MODULES + - CONFIG_MODULE_UNLOAD + - CONFIG_SYSFS + - CONFIG_DEBUG_FS + - CONFIG_KALLSYMS + - CONFIG_KALLSYMS_ALL + - CONFIG_KPROBES + + https://github.com/winnukem/racehound + +comment "racehound needs an Linux kernel >= 3.14 to be built" + depends on !BR2_LINUX_KERNEL + depends on BR2_i386 || BR2_x86_64 + +comment "racehound needs a uClibc or glibc toolchain w/ C++, wchar, dynamic library" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || BR2_STATIC_LIBS \ + || !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) diff --git a/buildroot/package/racehound/racehound.hash b/buildroot/package/racehound/racehound.hash new file mode 100644 index 0000000..d9a7f06 --- /dev/null +++ b/buildroot/package/racehound/racehound.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 935bc4a7c7b645dee5b905f6e97d0db3f0ac4f48e71d15f4e3982811017ac43c racehound-f09f06fcc3c77c8c5541be3ba5be80aa8148ce0c.tar.gz diff --git a/buildroot/package/racehound/racehound.mk b/buildroot/package/racehound/racehound.mk new file mode 100644 index 0000000..6499e16 --- /dev/null +++ b/buildroot/package/racehound/racehound.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# racehound +# +################################################################################ + +RACEHOUND_VERSION = f09f06fcc3c77c8c5541be3ba5be80aa8148ce0c +RACEHOUND_SITE = $(call github,winnukem,racehound,$(RACEHOUND_VERSION)) +RACEHOUND_LICENSE = GPL-2.0 +RACEHOUND_LICENSE_FILES = LICENSE +RACEHOUND_SUPPORTS_IN_SOURCE_BUILD = NO + +RACEHOUND_DEPENDENCIES = elfutils linux + +# override auto detection (uses host parameters, not cross compile +# ready) +RACEHOUND_CONF_OPTS += \ + -DKERNEL_VERSION_OK=YES \ + -DMODULE_BUILD_SUPPORTED=YES \ + -DKERNEL_CONFIG_OK=YES \ + -DKBUILD_BUILD_DIR=$(LINUX_DIR) \ + -DKBUILD_VERSION_STRING=$(LINUX_VERSION_PROBED) + +# cross compile environment for linux kernel module +RACEHOUND_MAKE_ENV = $(LINUX_MAKE_FLAGS) + +$(eval $(cmake-package)) diff --git a/buildroot/package/radvd/0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch b/buildroot/package/radvd/0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch new file mode 100644 index 0000000..4476808 --- /dev/null +++ b/buildroot/package/radvd/0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch @@ -0,0 +1,27 @@ +From 324e1ebc7b86f68f49fb4f1c34a4de60d18dd3c1 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Sun, 23 Nov 2014 12:17:11 +0100 +Subject: [PATCH 2/3] Don't force -fstack-protector, the toolchain might lack + support for it + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Thomas Petazzoni +--- + Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 80633e7..8b5a2e4 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -43,7 +43,6 @@ DISABLE_WARNINGS = \ + + AM_CFLAGS = \ + -fno-strict-aliasing \ +- -fstack-protector \ + $(ENABLE_WARNINGS) \ + $(DISABLE_WARNINGS) + +-- +2.1.0 + diff --git a/buildroot/package/radvd/Config.in b/buildroot/package/radvd/Config.in new file mode 100644 index 0000000..48aeedc --- /dev/null +++ b/buildroot/package/radvd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_RADVD + bool "radvd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_FLEX + help + IPv6 Router Advertisement Daemon. + + http://www.litech.org/radvd/ diff --git a/buildroot/package/radvd/S50radvd b/buildroot/package/radvd/S50radvd new file mode 100755 index 0000000..9f1407c --- /dev/null +++ b/buildroot/package/radvd/S50radvd @@ -0,0 +1,18 @@ +#!/bin/sh + +RADVD=/usr/sbin/radvd + +echo "1" > /proc/sys/net/ipv6/conf/all/forwarding + +printf "Starting radvd: " +if [ ! -x "${RADVD}" ]; then + echo "missing" + exit 1 +fi + +if ${RADVD} ; then + echo "done" +else + echo "failed" + exit 1 +fi diff --git a/buildroot/package/radvd/radvd.hash b/buildroot/package/radvd/radvd.hash new file mode 100644 index 0000000..ac6014b --- /dev/null +++ b/buildroot/package/radvd/radvd.hash @@ -0,0 +1,2 @@ +# From http://www.litech.org/radvd/dist/radvd-2.12.tar.gz.sha256 +sha256 b070e77238e789e298a82cba2b1bfb0b0180b4ebc1adfc4e75058adfdbff747b radvd-2.12.tar.xz diff --git a/buildroot/package/radvd/radvd.mk b/buildroot/package/radvd/radvd.mk new file mode 100644 index 0000000..8822187 --- /dev/null +++ b/buildroot/package/radvd/radvd.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# radvd +# +################################################################################ + +RADVD_VERSION = 2.12 +RADVD_SOURCE = radvd-$(RADVD_VERSION).tar.xz +RADVD_SITE = http://www.litech.org/radvd/dist +RADVD_DEPENDENCIES = host-bison flex host-flex host-pkgconf +# We need to ignore , because radvd already includes +# , which conflicts with . +RADVD_CONF_ENV = \ + ac_cv_prog_cc_c99='-std=gnu99' \ + ac_cv_header_linux_if_arp_h=no +# For 0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch +RADVD_AUTORECONF = YES +RADVD_LICENSE = BSD-4-Clause-like +RADVD_LICENSE_FILES = COPYRIGHT + +define RADVD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/radvd/S50radvd $(TARGET_DIR)/etc/init.d/S50radvd +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/ramsmp/Config.in b/buildroot/package/ramsmp/Config.in new file mode 100644 index 0000000..411e7de --- /dev/null +++ b/buildroot/package/ramsmp/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_RAMSMP + bool "ramspeed/smp" + depends on BR2_USE_MMU # fork() + help + RAMspeed/SMP is a free open source command line utility to + measure cache and memory performance of multiprocessor + machines. + + http://alasir.com/software/ramspeed/ diff --git a/buildroot/package/ramsmp/Makefile b/buildroot/package/ramsmp/Makefile new file mode 100644 index 0000000..5cd76e0 --- /dev/null +++ b/buildroot/package/ramsmp/Makefile @@ -0,0 +1,14 @@ + +all: generic + +generic: ramsmp.c fltmem.c fltmark.c intmem.c intmark.c + $(CC) $(CFLAGS) $(LDFLAGS) $^ -o ramsmp + +i386: ramsmp.c i386/*.s i386/cpuinfo/*.s + $(CC) $(CFLAGS) -DI386_ASM $(LDFLAGS) $^ -o ramsmp + +x86_64: ramsmp.c amd64/*.s + $(CC) $(CFLAGS) -DAMD64_ASM $(LDFLAGS) $^ -o ramsmp + +clean: + rm -f *.o ramsmp diff --git a/buildroot/package/ramsmp/ramsmp.hash b/buildroot/package/ramsmp/ramsmp.hash new file mode 100644 index 0000000..46aa3f1 --- /dev/null +++ b/buildroot/package/ramsmp/ramsmp.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 39fb15493fb3c293575746d56f6ab9faaa1d876d8b1f0d8e5a4042d2ace95839 ramsmp-3.5.0.tar.gz diff --git a/buildroot/package/ramsmp/ramsmp.mk b/buildroot/package/ramsmp/ramsmp.mk new file mode 100644 index 0000000..6098376 --- /dev/null +++ b/buildroot/package/ramsmp/ramsmp.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# ramsmp +# +################################################################################ + +RAMSMP_VERSION = 3.5.0 +RAMSMP_SITE = http://www.alasir.com/software/ramspeed +RAMSMP_ARCH = $(if $(BR2_i386),i386)$(if $(BR2_x86_64),x86_64) +RAMSMP_LICENSE = Alasir License +RAMSMP_LICENSE_FILES = LICENCE + +define RAMSMP_BUILD_CMDS + cp -f package/ramsmp/Makefile $(@D) + $(TARGET_CONFIGURE_OPTS) make -C $(@D) $(RAMSMP_ARCH) +endef + +define RAMSMP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/ramsmp $(TARGET_DIR)/usr/bin/ramsmp +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ramspeed/Config.in b/buildroot/package/ramspeed/Config.in new file mode 100644 index 0000000..b236329 --- /dev/null +++ b/buildroot/package/ramspeed/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_RAMSPEED + bool "ramspeed" + help + RAMspeed is a free open source command line utility + to measure cache and memory performance. + + http://alasir.com/software/ramspeed/ diff --git a/buildroot/package/ramspeed/Makefile b/buildroot/package/ramspeed/Makefile new file mode 100644 index 0000000..f4a4de6 --- /dev/null +++ b/buildroot/package/ramspeed/Makefile @@ -0,0 +1,14 @@ + +all: generic + +generic: ramspeed.c fltmem.c fltmark.c intmem.c intmark.c + $(CC) $(CFLAGS) $(LDFLAGS) $^ -o ramspeed + +i386: ramspeed.c i386/*.s i386/cpuinfo/*.s + $(CC) $(CFLAGS) -DI386_ASM $(LDFLAGS) $^ -o ramspeed + +x86_64: ramspeed.c amd64/*.s + $(CC) $(CFLAGS) -DAMD64_ASM $(LDFLAGS) $^ -o ramspeed + +clean: + rm -f *.o ramspeed diff --git a/buildroot/package/ramspeed/ramspeed.hash b/buildroot/package/ramspeed/ramspeed.hash new file mode 100644 index 0000000..71052a3 --- /dev/null +++ b/buildroot/package/ramspeed/ramspeed.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f84e2e42b2b6b221ef9b586f6ae63d863db4ff21858e0ce7c84622a7c9522950 ramspeed-2.6.0.tar.gz diff --git a/buildroot/package/ramspeed/ramspeed.mk b/buildroot/package/ramspeed/ramspeed.mk new file mode 100644 index 0000000..7dc4faa --- /dev/null +++ b/buildroot/package/ramspeed/ramspeed.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# ramspeed +# +################################################################################ + +RAMSPEED_VERSION = 2.6.0 +RAMSPEED_SITE = http://www.alasir.com/software/ramspeed +RAMSPEED_ARCH = $(if $(BR2_i386),i386)$(if $(BR2_x86_64),x86_64) +RAMSPEED_LICENSE = Alasir License +RAMSPEED_LICENSE_FILES = LICENCE + +define RAMSPEED_BUILD_CMDS + cp -f package/ramspeed/Makefile $(@D) + $(TARGET_CONFIGURE_OPTS) make -C $(@D) $(RAMSPEED_ARCH) +endef + +define RAMSPEED_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/ramspeed $(TARGET_DIR)/usr/bin/ramspeed +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ranger/0001-colorscheme-check-for-compiled-python-files.patch b/buildroot/package/ranger/0001-colorscheme-check-for-compiled-python-files.patch new file mode 100644 index 0000000..bde3fee --- /dev/null +++ b/buildroot/package/ranger/0001-colorscheme-check-for-compiled-python-files.patch @@ -0,0 +1,31 @@ +From 654e3116825c4d12340613196279fb13a5662113 Mon Sep 17 00:00:00 2001 +From: Thijs Vermeir +Date: Tue, 20 Oct 2015 18:13:36 +0200 +Subject: [PATCH] colorscheme: check for compiled python files + +Some systems only provide *.pyc files + +Patch accepted upstream: +https://github.com/hut/ranger/commit/d69f1ed3207c785d1a39ddd2992f6abb021b7540 + +Signed-off-by: Thijs Vermeir +--- + ranger/gui/colorscheme.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ranger/gui/colorscheme.py b/ranger/gui/colorscheme.py +index d6afcac..d2b3b2d 100644 +--- a/ranger/gui/colorscheme.py ++++ b/ranger/gui/colorscheme.py +@@ -86,7 +86,7 @@ def _colorscheme_name_to_class(signal): + usecustom = not ranger.arg.clean + + def exists(colorscheme): +- return os.path.exists(colorscheme + '.py') ++ return os.path.exists(colorscheme + '.py') or os.path.exists(colorscheme + '.pyc') + + def is_scheme(x): + try: +-- +2.6.1 + diff --git a/buildroot/package/ranger/Config.in b/buildroot/package/ranger/Config.in new file mode 100644 index 0000000..ee0ffec --- /dev/null +++ b/buildroot/package/ranger/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_RANGER + bool "ranger" + depends on BR2_USE_MMU # python3 + depends on BR2_USE_WCHAR # python3 + depends on BR2_TOOLCHAIN_HAS_THREADS # python3 + depends on !BR2_STATIC_LIBS # python3 + select BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_CURSES if BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON3_CURSES if BR2_PACKAGE_PYTHON3 + help + ranger is a console file manager with VI key bindings. It + provides a minimalistic and nice curses interface with a + view on the directory hierarchy. It ships with "rifle", a + file launcher that is good at automatically finding out + which program to use for what file type. + + http://ranger.nongnu.org + +comment "ranger needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/ranger/ranger.hash b/buildroot/package/ranger/ranger.hash new file mode 100644 index 0000000..30bdbed --- /dev/null +++ b/buildroot/package/ranger/ranger.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 94f6e342daee4445f15db5a7440a11138487c49cc25da0c473bbf1b8978f5b79 ranger-1.7.2.tar.gz diff --git a/buildroot/package/ranger/ranger.mk b/buildroot/package/ranger/ranger.mk new file mode 100644 index 0000000..aaca438 --- /dev/null +++ b/buildroot/package/ranger/ranger.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# ranger +# +################################################################################ + +RANGER_VERSION = 1.7.2 +RANGER_SITE = http://ranger.nongnu.org +RANGER_SETUP_TYPE = distutils +RANGER_LICENSE = GPL-3.0 +RANGER_LICENSE_FILES = AUTHORS + +# The ranger script request python to be called with -O (optimize generated +# bytecode slightly; also PYTHONOPTIMIZE=x). This implicitly requires the python +# source files to be present. Therefore, the -O flag is removed when only the .pyc +# files are installed. + +define RANGER_DO_NOT_GENERATE_BYTECODE_AT_RUNTIME + $(SED) 's%/usr/bin/python -O%/usr/bin/python%g' $(@D)/scripts/ranger +endef + +ifeq ($(BR2_PACKAGE_PYTHON3_PYC_ONLY)$(BR2_PACKAGE_PYTHON_PYC_ONLY),y) +RANGER_POST_PATCH_HOOKS += RANGER_DO_NOT_GENERATE_BYTECODE_AT_RUNTIME +endif + +$(eval $(python-package)) diff --git a/buildroot/package/rapidjson/Config.in b/buildroot/package/rapidjson/Config.in new file mode 100644 index 0000000..abf8996 --- /dev/null +++ b/buildroot/package/rapidjson/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_RAPIDJSON + bool "rapidjson" + depends on BR2_INSTALL_LIBSTDCPP + help + A fast JSON parser/generator for C++ with both SAX/DOM style + API. + + http://rapidjson.org/ + +comment "rapidjson needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/rapidjson/rapidjson.hash b/buildroot/package/rapidjson/rapidjson.hash new file mode 100644 index 0000000..a4b02cf --- /dev/null +++ b/buildroot/package/rapidjson/rapidjson.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 bf7ced29704a1e696fbccf2a2b4ea068e7774fa37f6d7dd4039d0787f8bed98e rapidjson-v1.1.0.tar.gz +sha256 a140e5d46fe734a1c78f1a3c3ef207871dd75648be71fdda8e309b23ab8b1f32 license.txt diff --git a/buildroot/package/rapidjson/rapidjson.mk b/buildroot/package/rapidjson/rapidjson.mk new file mode 100644 index 0000000..4d69bc3 --- /dev/null +++ b/buildroot/package/rapidjson/rapidjson.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# rapidjson +# +################################################################################ + +RAPIDJSON_VERSION = v1.1.0 +RAPIDJSON_SITE = $(call github,miloyip,rapidjson,$(RAPIDJSON_VERSION)) +RAPIDJSON_LICENSE = MIT +RAPIDJSON_LICENSE_FILES = license.txt + +# rapidjson is a header-only C++ library +RAPIDJSON_INSTALL_TARGET = NO +RAPIDJSON_INSTALL_STAGING = YES + +RAPIDJSON_CONF_OPTS = \ + -DRAPIDJSON_BUILD_DOC=OFF \ + -DRAPIDJSON_BUILD_EXAMPLES=OFF \ + -DRAPIDJSON_BUILD_TESTS=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch b/buildroot/package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch new file mode 100644 index 0000000..fcf1b3c --- /dev/null +++ b/buildroot/package/rapidxml/0001-ensure-internal-print-operations-are-declared-before.patch @@ -0,0 +1,38 @@ +[PATCH] ensure internal print operations are declared before use + +Stock rapidxml-1.13 does not allow implementers of the +`rapidxml_print.hpp` header to build under GCC 4.7 (or newer) due to +compliation issues. This is a result of "Name lookup changes" introduced +in GCC 4.7 [1]. The following adds forward declarations required to +compile with GCC 4.7+. + +This issue has been mentioned upstream [2], but it has yet to be fixed +in official sources. + +[1]: https://gcc.gnu.org/gcc-4.7/porting_to.html +[2]: https://sourceforge.net/p/rapidxml/bugs/16/ + +Signed-off-by: James Knight + +Index: b/rapidxml_print.hpp +=================================================================== +--- a/rapidxml_print.hpp ++++ b/rapidxml_print.hpp +@@ -101,7 +101,16 @@ + + /////////////////////////////////////////////////////////////////////////// + // Internal printing operations +- ++ ++ template inline OutIt print_cdata_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_children(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_comment_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_data_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_declaration_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_doctype_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_element_node(OutIt out, const xml_node *node, int flags, int indent); ++ template inline OutIt print_pi_node(OutIt out, const xml_node *node, int flags, int indent); ++ + // Print node + template + inline OutIt print_node(OutIt out, const xml_node *node, int flags, int indent) diff --git a/buildroot/package/rapidxml/Config.in b/buildroot/package/rapidxml/Config.in new file mode 100644 index 0000000..76b2248 --- /dev/null +++ b/buildroot/package/rapidxml/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_RAPIDXML + bool "rapidxml" + help + RapidXml is an attempt to create the fastest XML parser + possible, while retaining useability, portability and + reasonable W3C compatibility. It is an in-situ parser with + parsing speed approaching speed of strlen function executed + on the same data. + + http://sourceforge.net/projects/rapidxml/ + https://en.wikipedia.org/wiki/RapidXml diff --git a/buildroot/package/rapidxml/rapidxml.hash b/buildroot/package/rapidxml/rapidxml.hash new file mode 100644 index 0000000..81919f0 --- /dev/null +++ b/buildroot/package/rapidxml/rapidxml.hash @@ -0,0 +1,6 @@ +# From https://sourceforge.net/projects/rapidxml/files/rapidxml/rapidxml%201.13/ +sha1 f5fd4fbc5ad7e96045313697811d65ea8089a950 rapidxml-1.13.zip +md5 7b4b42c9331c90aded23bb55dc725d6a rapidxml-1.13.zip + +# Locally calculated +sha256 c3f0b886374981bb20fabcf323d755db4be6dba42064599481da64a85f5b3571 rapidxml-1.13.zip diff --git a/buildroot/package/rapidxml/rapidxml.mk b/buildroot/package/rapidxml/rapidxml.mk new file mode 100644 index 0000000..2bec8fe --- /dev/null +++ b/buildroot/package/rapidxml/rapidxml.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# rapidxml +# +################################################################################ + +RAPIDXML_VERSION = 1.13 +RAPIDXML_SOURCE = rapidxml-$(RAPIDXML_VERSION).zip +RAPIDXML_SITE = http://downloads.sourceforge.net/project/rapidxml/rapidxml/rapidxml%20$(RAPIDXML_VERSION) +RAPIDXML_LICENSE = BSL-1.0 or MIT +RAPIDXML_LICENSE_FILES = license.txt + +# C++ headers only +RAPIDXML_INSTALL_TARGET = NO +RAPIDXML_INSTALL_STAGING = YES + +define RAPIDXML_EXTRACT_CMDS + $(UNZIP) -d $(@D) $(DL_DIR)/$(RAPIDXML_SOURCE) + mv $(@D)/rapidxml-$(RAPIDXML_VERSION)/* $(@D)/ + rmdir $(@D)/rapidxml-$(RAPIDXML_VERSION) +endef + +define RAPIDXML_INSTALL_STAGING_CMDS + cp -dpfr $(@D)/*hpp $(STAGING_DIR)/usr/include +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/raptor/0001-configure.ac-remove-conditional-lib-inclusion.patch b/buildroot/package/raptor/0001-configure.ac-remove-conditional-lib-inclusion.patch new file mode 100644 index 0000000..7367ad2 --- /dev/null +++ b/buildroot/package/raptor/0001-configure.ac-remove-conditional-lib-inclusion.patch @@ -0,0 +1,21 @@ +Removed header Include path from the configure file as path was +from the host, which is wrong for the cross compilation. +Upstream: None + +Signed-off-by: Nitin Mendiratta + +diff --git a/configure.ac b/configure.ac +index 10ff870..27b9957 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1145,9 +1145,7 @@ have_lininn=no + have_inn_parsedate=no + + oCPPFLAGS="$CPPFLAGS" +-if test -d /usr/include/inn; then +- CPPFLAGS="$CPPFLAGS -I/usr/include/inn" +-fi ++ + AC_CHECK_HEADER(libinn.h) + CPPFLAGS="$oCPPFLAGS" + diff --git a/buildroot/package/raptor/Config.in b/buildroot/package/raptor/Config.in new file mode 100644 index 0000000..65979a2 --- /dev/null +++ b/buildroot/package/raptor/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_RAPTOR + bool "raptor" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + help + A C library that provides a set of parsers and + serializers that generate Resource Description + Framework (RDF) triples by parsing syntaxes or + serialize the triples into a syntax. + + http://librdf.org/raptor/ diff --git a/buildroot/package/raptor/raptor.hash b/buildroot/package/raptor/raptor.hash new file mode 100644 index 0000000..ee7a71b --- /dev/null +++ b/buildroot/package/raptor/raptor.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ada7f0ba54787b33485d090d3d2680533520cd4426d2f7fb4782dd4a6a1480ed raptor2-2.0.15.tar.gz diff --git a/buildroot/package/raptor/raptor.mk b/buildroot/package/raptor/raptor.mk new file mode 100644 index 0000000..4c7135f --- /dev/null +++ b/buildroot/package/raptor/raptor.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# raptor +# +################################################################################ + +RAPTOR_VERSION = 2.0.15 +RAPTOR_SOURCE = raptor2-$(RAPTOR_VERSION).tar.gz +RAPTOR_SITE = http://download.librdf.org/source +RAPTOR_DEPENDENCIES = libxml2 libxslt +RAPTOR_LICENSE = GPL-2.0+ or LGPL-2.1+ or Apache-2.0+ +RAPTOR_LICENSE_FILES = LICENSE.txt +RAPTOR_INSTALL_STAGING = YES + +# Flag is added to make sure the patch is applied for the configure.ac of raptor. +RAPTOR_AUTORECONF = YES + +RAPTOR_CONF_OPTS =\ + --with-xml2-config=$(STAGING_DIR)/usr/bin/xml2-config \ + --with-xslt-config=$(STAGING_DIR)/usr/bin/xslt-config + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +RAPTOR_DEPENDENCIES += libcurl +RAPTOR_CONF_OPTS += --with-curl-config=$(STAGING_DIR)/usr/bin/curl-config +else +RAPTOR_CONF_OPTS += --with-curl-config=no +endif + +ifeq ($(BR2_PACKAGE_YAJL),y) +RAPTOR_DEPENDENCIES += yajl +RAPTOR_CONF_ENV += LIBS="-lm" +RAPTOR_CONF_OPTS += --with-yajl=$(STAGING_DIR)/usr +else +RAPTOR_CONF_OPTS += --with-yajl=no +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +RAPTOR_DEPENDENCIES += icu +RAPTOR_CONF_OPTS += --with-icu-config=$(STAGING_DIR)/usr/bin/icu-config +else +RAPTOR_CONF_OPTS += --with-icu-config=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch b/buildroot/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch new file mode 100644 index 0000000..cdab607 --- /dev/null +++ b/buildroot/package/raspberrypi-usbboot/0001-Makefile-allow-passing-CFLAGS-LDFLAGS.patch @@ -0,0 +1,28 @@ +From 5b015e67af27679f4ca8f7f5f2f71020ec054b0c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 2 Dec 2016 23:09:44 +0100 +Subject: [PATCH] Makefile: allow passing CFLAGS/LDFLAGS + +This might be needed to pass some custom CFLAGS/LDFLAGS when building +rpiboot. + +Submitted-upstream: https://github.com/raspberrypi/usbboot/pull/2 +Signed-off-by: Thomas Petazzoni +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 3e7d1e4..d9a7220 100755 +--- a/Makefile ++++ b/Makefile +@@ -1,5 +1,5 @@ + rpiboot: main.c +- $(CC) -g -o $@ $< -lusb-1.0 ++ $(CC) -g $(CFLAGS) -o $@ $< -lusb-1.0 $(LDFLAGS) + + install: rpiboot + cp rpiboot /usr/bin +-- +2.7.4 + diff --git a/buildroot/package/raspberrypi-usbboot/0002-Makefile-add-DESTDIR-support.patch b/buildroot/package/raspberrypi-usbboot/0002-Makefile-add-DESTDIR-support.patch new file mode 100644 index 0000000..a757cb0 --- /dev/null +++ b/buildroot/package/raspberrypi-usbboot/0002-Makefile-add-DESTDIR-support.patch @@ -0,0 +1,51 @@ +From 905bc741b189d67160b27551b8ad01459c2707a0 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 2 Dec 2016 23:10:37 +0100 +Subject: [PATCH] Makefile: add DESTDIR support + +This allows installing rpiboot outside of /usr if needed. + +Submitted-upstream: https://github.com/raspberrypi/usbboot/pull/2 +Signed-off-by: Thomas Petazzoni +[Arnout: remove /usr] +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + Makefile | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/Makefile b/Makefile +index d9a7220..7835b7f 100755 +--- a/Makefile ++++ b/Makefile +@@ -2,18 +2,18 @@ rpiboot: main.c + $(CC) -g $(CFLAGS) -o $@ $< -lusb-1.0 $(LDFLAGS) + + install: rpiboot +- cp rpiboot /usr/bin +- mkdir -p /usr/share/rpiboot +- cp usbbootcode.bin /usr/share/rpiboot +- cp msd.elf /usr/share/rpiboot +- cp buildroot.elf /usr/share/rpiboot ++ cp rpiboot $(DESTDIR)bin ++ mkdir -p $(DESTDIR)/share/rpiboot ++ cp usbbootcode.bin $(DESTDIR)/share/rpiboot ++ cp msd.elf $(DESTDIR)/share/rpiboot ++ cp buildroot.elf $(DESTDIR)/share/rpiboot + + uninstall: +- rm -f /usr/bin/rpiboot +- rm -f /usr/share/rpiboot/usbbootcode.bin +- rm -f /usr/share/rpiboot/msd.elf +- rm -f /usr/share/rpiboot/buildroot.elf +- rmdir --ignore-fail-on-non-empty /usr/share/rpiboot/ ++ rm -f $(DESTDIR)/bin/rpiboot ++ rm -f $(DESTDIR)/share/rpiboot/usbbootcode.bin ++ rm -f $(DESTDIR)/share/rpiboot/msd.elf ++ rm -f $(DESTDIR)/share/rpiboot/buildroot.elf ++ rmdir --ignore-fail-on-non-empty $(DESTDIR)/share/rpiboot/ + + clean: + rm rpiboot +-- +2.7.4 + diff --git a/buildroot/package/raspberrypi-usbboot/0003-main.c-rework-logic-to-find-def1-def2-and-def3-files.patch b/buildroot/package/raspberrypi-usbboot/0003-main.c-rework-logic-to-find-def1-def2-and-def3-files.patch new file mode 100644 index 0000000..30cde49 --- /dev/null +++ b/buildroot/package/raspberrypi-usbboot/0003-main.c-rework-logic-to-find-def1-def2-and-def3-files.patch @@ -0,0 +1,127 @@ +From 935894908dc24acda0acea7d211a9d80e55ecadb Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 2 Dec 2016 23:43:23 +0100 +Subject: [PATCH] main.c: rework logic to find def1, def2 and def3 files + +The current logic to find def1, def2 and def3 first tries to find them +in the local directory, and if they are not available, find them in +/usr/share. + +However, this doesn't work if rpiboot and its related files are +installed, but not in /usr. In order to address this use-case, this +commit reworks the logic to find the file path. + +A new function, getfilepath() is created. If the requested file is +available in the current directory, it is used. If not, then the path to +the file is inferred from the location of the currently running +program. I.e if we run /home/foo/sys/bin/rpiboot, then we will search +def1 in usbbootcode.bin in +/home/foo/sys/bin/../share/rpiboot/usbbootcode.bin. + +This continues to address the case of an installation in /usr, while +allowing installation in other locations as well. + +Submitted-upstream: https://github.com/raspberrypi/usbboot/pull/2 +Signed-off-by: Thomas Petazzoni +--- + main.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 48 insertions(+), 13 deletions(-) + +diff --git a/main.c b/main.c +index 1b4e042..7c571d6 100755 +--- a/main.c ++++ b/main.c +@@ -1,10 +1,12 @@ +-#include "libusb-1.0/libusb.h" ++#define _GNU_SOURCE + #include + #include + #include +- ++#include + #include + ++#include "libusb-1.0/libusb.h" ++ + int verbose = 0; + int out_ep = 1; + int in_ep = 2; +@@ -146,6 +148,37 @@ int ep_read(unsigned char *buf, int len, libusb_device_handle * usb_device) + return len; + } + ++char *getfilepath(char *filename) ++{ ++ char *progpath, *filepath, *progdir; ++ ssize_t len; ++ ++ /* If file is available locally, use it */ ++ if (access(filename, F_OK) != -1) ++ return filename; ++ ++ /* Otherwise, use the installed version */ ++ progpath = malloc(PATH_MAX); ++ len = readlink("/proc/self/exe", progpath, PATH_MAX - 1); ++ if (len == -1) ++ { ++ free(progpath); ++ return NULL; ++ } ++ ++ progpath[len] = '\0'; ++ progdir = dirname(progpath); ++ if (asprintf(&filepath, "%s/../share/rpiboot/%s", progdir, filename) < 0) ++ { ++ free(progpath); ++ return NULL; ++ } ++ ++ free(progpath); ++ ++ return filepath; ++} ++ + int main(int argc, char *argv[]) + { + int result; +@@ -157,13 +190,9 @@ int main(int argc, char *argv[]) + int last_serial = -1; + FILE *fp1, *fp2, *fp; + +- char def1_inst[] = "/usr/share/rpiboot/usbbootcode.bin"; +- char def2_inst[] = "/usr/share/rpiboot/msd.elf"; +- char def3_inst[] = "/usr/share/rpiboot/buildroot.elf"; +- +- char def1_loc[] = "./usbbootcode.bin"; +- char def2_loc[] = "./msd.elf"; +- char def3_loc[] = "./buildroot.elf"; ++ char def1_name[] = "usbbootcode.bin"; ++ char def2_name[] = "msd.elf"; ++ char def3_name[] = "buildroot.elf"; + + char *def1, *def2, *def3; + +@@ -171,10 +200,16 @@ int main(int argc, char *argv[]) + char *fatimage = NULL, *executable = NULL; + int loop = 0; + +-// if local file version exists use it else use installed +- if( access( def1_loc, F_OK ) != -1 ) { def1 = def1_loc; } else { def1 = def1_inst; } +- if( access( def2_loc, F_OK ) != -1 ) { def2 = def2_loc; } else { def2 = def2_inst; } +- if( access( def3_loc, F_OK ) != -1 ) { def3 = def3_loc; } else { def3 = def3_inst; } ++ def1 = getfilepath(def1_name); ++ def2 = getfilepath(def2_name); ++ def3 = getfilepath(def3_name); ++ ++ if (!def1 || !def2 || !def3) ++ { ++ fprintf(stderr, "One of %s, %s or %s cannot be found\n", ++ def1_name, def2_name, def3_name); ++ exit(1); ++ } + + stage1 = def1; + stage2 = def2; +-- +2.7.4 + diff --git a/buildroot/package/raspberrypi-usbboot/Config.in.host b/buildroot/package/raspberrypi-usbboot/Config.in.host new file mode 100644 index 0000000..dce2fcc --- /dev/null +++ b/buildroot/package/raspberrypi-usbboot/Config.in.host @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HOST_RASPBERRYPI_USBBOOT + bool "host raspberrypi-usbboot" + depends on BR2_arm + help + This package builds and install the "rpiboot" tool for the + host machine. This tool allows to boot the Broadcom BCM + processor used in the RaspberryPi to boot over USB, and have + it expose a USB mass storage device in order to reflash the + built-in storage of the RaspberryPi (useful for the eMMC + built into the Compute module). + + https://github.com/raspberrypi/usbboot diff --git a/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.hash b/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.hash new file mode 100644 index 0000000..94860a9 --- /dev/null +++ b/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a8893f8a10522bd58866eb34e7f0d7731c43200d585f122681f428cdef76e676 raspberrypi-usbboot-f4e3f0f9a3c64d846ba53ec3367e33a4f9a7d051.tar.gz diff --git a/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.mk b/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.mk new file mode 100644 index 0000000..7018617 --- /dev/null +++ b/buildroot/package/raspberrypi-usbboot/raspberrypi-usbboot.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# raspberrypi-usbboot +# +################################################################################ + +RASPBERRYPI_USBBOOT_VERSION = f4e3f0f9a3c64d846ba53ec3367e33a4f9a7d051 +RASPBERRYPI_USBBOOT_SITE = $(call github,raspberrypi,usbboot,$(RASPBERRYPI_USBBOOT_VERSION)) + +HOST_RASPBERRYPI_USBBOOT_DEPENDENCIES = host-libusb + +define HOST_RASPBERRYPI_USBBOOT_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) +endef + +define HOST_RASPBERRYPI_USBBOOT_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \ + DESTDIR=$(HOST_DIR) install +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/ratpoison/Config.in b/buildroot/package/ratpoison/Config.in new file mode 100644 index 0000000..7b72429 --- /dev/null +++ b/buildroot/package/ratpoison/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_RATPOISON + bool "ratpoison" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_LIBERATION + select BR2_PACKAGE_XLIB_LIBX11 + help + Ratpoison is a simple Window Manager. It is largely modelled + after GNU Screen and focuses on the keyboard instead of a + mouse. + + The screen can be split into non-overlapping frames. All + windows are kept maximized inside their frames to take full + advantage of your precious screen real estate. + + http://www.nongnu.org/ratpoison/ diff --git a/buildroot/package/ratpoison/ratpoison.hash b/buildroot/package/ratpoison/ratpoison.hash new file mode 100644 index 0000000..44781b0 --- /dev/null +++ b/buildroot/package/ratpoison/ratpoison.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d98fa4be025ecca453c407ff311ab3949f29f20d6d8abedf8f0716b85fc8d1f1 ratpoison-1.4.9.tar.xz diff --git a/buildroot/package/ratpoison/ratpoison.mk b/buildroot/package/ratpoison/ratpoison.mk new file mode 100644 index 0000000..27cca84 --- /dev/null +++ b/buildroot/package/ratpoison/ratpoison.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# ratpoison +# +################################################################################ + +RATPOISON_VERSION = 1.4.9 +RATPOISON_SOURCE = ratpoison-$(RATPOISON_VERSION).tar.xz +RATPOISON_SITE = http://download.savannah.nongnu.org/releases/ratpoison +RATPOISON_LICENSE = GPL-2.0+ +RATPOISON_LICENSE_FILES = COPYING + +RATPOISON_CONF_OPTS = \ + --x-includes=$(STAGING_DIR)/usr/include/X11 \ + --x-libraries=$(STAGING_DIR)/usr/lib \ + --without-xkb \ + --without-xft + +RATPOISON_DEPENDENCIES = xlib_libX11 + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +RATPOISON_DEPENDENCIES += xlib_libXrandr +RATPOISON_CONF_OPTS += --with-xrandr +else +RATPOISON_CONF_OPTS += --without-xrandr +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/rauc/Config.in b/buildroot/package/rauc/Config.in new file mode 100644 index 0000000..6433b82 --- /dev/null +++ b/buildroot/package/rauc/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_RAUC + bool "rauc" + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + depends on BR2_USE_WCHAR # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_DBUS # run-time dependency + help + RAUC is the Robust Auto-Update Controller developed by + Pengutronix. It supports updating embedded Linux + systems over the network or from disks and provides a + d-bus interface. + + http://rauc.io/ + +if BR2_PACKAGE_RAUC + +config BR2_PACKAGE_RAUC_NETWORK + bool "network support" + select BR2_PACKAGE_LIBCURL + help + This option enables support for updating firmware over + the network using libcurl. + +config BR2_PACKAGE_RAUC_JSON + bool "JSON output support" + select BR2_PACKAGE_JSON_GLIB + help + This option enables support for providing output in + JSON format. + +endif + +comment "rauc needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/rauc/Config.in.host b/buildroot/package/rauc/Config.in.host new file mode 100644 index 0000000..1bd9a79 --- /dev/null +++ b/buildroot/package/rauc/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_RAUC + bool "host rauc" + select BR2_PACKAGE_HOST_SQUASHFS # run-time dependency + help + RAUC is the Robust Auto-Update Controller developed by + Pengutronix. Enable this option to build the rauc + host tool which may be used to generate firmware + bundles that are handled by the target rauc service. + + http://rauc.io/ diff --git a/buildroot/package/rauc/rauc.hash b/buildroot/package/rauc/rauc.hash new file mode 100644 index 0000000..91d7c1d --- /dev/null +++ b/buildroot/package/rauc/rauc.hash @@ -0,0 +1,3 @@ +# Locally calculated, after verifying against +# https://github.com/rauc/rauc/releases/download/v0.3/rauc-0.3.tar.xz.asc +sha256 dc01bfb08b1830376782f9a51cfec290171519267ab97cc909435da9ac6d6d98 rauc-0.3.tar.xz diff --git a/buildroot/package/rauc/rauc.mk b/buildroot/package/rauc/rauc.mk new file mode 100644 index 0000000..63fbc53 --- /dev/null +++ b/buildroot/package/rauc/rauc.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# rauc +# +################################################################################ + +RAUC_VERSION = 0.3 +RAUC_SITE = https://github.com/rauc/rauc/releases/download/v$(RAUC_VERSION) +RAUC_SOURCE = rauc-$(RAUC_VERSION).tar.xz +RAUC_LICENSE = LGPL-2.1 +RAUC_DEPENDENCIES = host-pkgconf openssl libglib2 + +ifeq ($(BR2_PACKAGE_RAUC_NETWORK),y) +RAUC_CONF_OPTS += --enable-network +RAUC_DEPENDENCIES += libcurl +else +RAUC_CONF_OPTS += --disable-network +endif + +ifeq ($(BR2_PACKAGE_RAUC_JSON),y) +RAUC_CONF_OPTS += --enable-json +RAUC_DEPENDENCIES += json-glib +else +RAUC_CONF_OPTS += --disable-json +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +# configure uses pkg-config --variable=systemdsystemunitdir systemd +RAUC_DEPENDENCIES += systemd +endif + +HOST_RAUC_DEPENDENCIES = host-pkgconf host-openssl host-libglib2 host-squashfs +HOST_RAUC_CONF_OPTS += --disable-network --disable-json --disable-service + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/rdesktop/0001-8bit-colors.patch b/buildroot/package/rdesktop/0001-8bit-colors.patch new file mode 100644 index 0000000..710f8de --- /dev/null +++ b/buildroot/package/rdesktop/0001-8bit-colors.patch @@ -0,0 +1,21 @@ +diff -urpN rdesktop-1.5.0-orig/xwin.c rdesktop-1.5.0/xwin.c +--- rdesktop-1.5.0-orig/xwin.c 2007-01-17 12:01:18.000000000 +0100 ++++ rdesktop-1.5.0/xwin.c 2007-01-17 12:05:02.000000000 +0100 +@@ -1461,7 +1461,7 @@ select_visual(int screen_num) + } + + /* we use a colourmap, so the default visual should do */ +- g_owncolmap = True; ++// g_owncolmap = True; + g_visual = vmatches[0].visual; + g_depth = vmatches[0].depth; + } +@@ -1568,7 +1568,7 @@ ui_init(void) + { + g_xcolmap = + XCreateColormap(g_display, RootWindowOfScreen(g_screen), g_visual, +- AllocNone); ++ (g_depth <= 8) ? AllocAll : AllocNone); + if (g_depth <= 8) + warning("Display colour depth is %d bit: you may want to use -C for a private colourmap.\n", g_depth); + } diff --git a/buildroot/package/rdesktop/Config.in b/buildroot/package/rdesktop/Config.in new file mode 100644 index 0000000..0335bee --- /dev/null +++ b/buildroot/package/rdesktop/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_RDESKTOP + bool "rdesktop" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXT + help + rdesktop is an open source client for Windows NT Terminal + Server and Windows 2000/2003 Terminal Services, capable of + natively speaking Remote Desktop Protocol (RDP) in order to + present the user's NT desktop. + + http://rdesktop.sf.net/ diff --git a/buildroot/package/rdesktop/rdesktop.hash b/buildroot/package/rdesktop/rdesktop.hash new file mode 100644 index 0000000..cc1f55b --- /dev/null +++ b/buildroot/package/rdesktop/rdesktop.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/rdesktop/files/rdesktop/1.8.3/ +md5 86e8b368a7c715e74ded92e0d7912dc5 rdesktop-1.8.3.tar.gz +sha1 aa1e56043782e04a0121357b24874e3ad6ae7b1d rdesktop-1.8.3.tar.gz diff --git a/buildroot/package/rdesktop/rdesktop.mk b/buildroot/package/rdesktop/rdesktop.mk new file mode 100644 index 0000000..da8a80e --- /dev/null +++ b/buildroot/package/rdesktop/rdesktop.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# rdesktop +# +################################################################################ + +RDESKTOP_VERSION = 1.8.3 +RDESKTOP_SITE = http://downloads.sourceforge.net/project/rdesktop/rdesktop/$(RDESKTOP_VERSION) +RDESKTOP_DEPENDENCIES = host-pkgconf openssl xlib_libX11 xlib_libXt \ + $(if $(BR2_PACKAGE_ALSA_LIB_PCM),alsa-lib) \ + $(if $(BR2_PACKAGE_LIBAO),libao) \ + $(if $(BR2_PACKAGE_LIBSAMPLERATE),libsamplerate) +RDESKTOP_CONF_OPTS = --with-openssl=$(STAGING_DIR)/usr --disable-credssp +RDESKTOP_LICENSE = GPL-3.0+ +RDESKTOP_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_PCSC_LITE),y) +RDESKTOP_DEPENDENCIES += pcsc-lite +else +RDESKTOP_CONF_OPTS += --disable-smartcard +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/read-edid/0001-Fix-install-file-list.patch b/buildroot/package/read-edid/0001-Fix-install-file-list.patch new file mode 100644 index 0000000..622e97d --- /dev/null +++ b/buildroot/package/read-edid/0001-Fix-install-file-list.patch @@ -0,0 +1,29 @@ +From 562f48bee3443bda0ac257f2b0c52a72208163e0 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 7 Dec 2015 21:20:38 +0100 +Subject: [PATCH] Fix install file list. + +Fixes: + CMake Error at cmake_install.cmake:40 (file): + file INSTALL cannot find + ".../build/read-edid-3.0.2/COPYING". + +Signed-off-by: Peter Seiderer +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7bf4561..2b9bc86 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -13,5 +13,5 @@ endif () + add_subdirectory (parse-edid) + + INSTALL(FILES get-edid.1 DESTINATION share/man/man1) +-INSTALL(FILES AUTHORS ChangeLog COPYING README DESTINATION ++INSTALL(FILES AUTHORS ChangeLog README DESTINATION + share/doc/read-edid) +-- +2.1.4 + diff --git a/buildroot/package/read-edid/0002-Fix-compiler-check.patch b/buildroot/package/read-edid/0002-Fix-compiler-check.patch new file mode 100644 index 0000000..6c5f58c --- /dev/null +++ b/buildroot/package/read-edid/0002-Fix-compiler-check.patch @@ -0,0 +1,19 @@ +Fix compiler check + +By default CMake looks for c++ which the project does not need. + +Patch by Thomas: +http://lists.busybox.net/pipermail/buildroot/2015-December/146865.html + +Signed-off-by: Bernd Kuhls + +diff -uNr read-edid-3.0.2.org/CMakeLists.txt read-edid-3.0.2/CMakeLists.txt +--- read-edid-3.0.2.org/CMakeLists.txt 2014-02-05 17:27:26.000000000 +0100 ++++ read-edid-3.0.2/CMakeLists.txt 2015-12-13 16:08:43.000000000 +0100 +@@ -1,5 +1,5 @@ + cmake_minimum_required (VERSION 2.6) +-project (read-edid) ++project (read-edid C) + + option(I2CBUILD "Build I2C get-edid implementation" ON) + option(CLASSICBUILD "Build VBE get-edid implementation" ON) diff --git a/buildroot/package/read-edid/Config.in b/buildroot/package/read-edid/Config.in new file mode 100644 index 0000000..c830e17 --- /dev/null +++ b/buildroot/package/read-edid/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_READ_EDID + bool "read-edid" + help + Read-edid is a pair of tools for reading the EDID from a + monitor. It should work with most monitors made since 1996 + (except for newer ones with 256-byte EDID's - WiP), assuming + the video card supports the standard read commands (most + do). Read-edid is a set of two tools - get-edid, which gets + the raw edid information from the monitor, and parse-edid, + which turns the raw binary information into an + XF86Config-compatible monitor section. + + http://polypux.org/projects/read-edid/ diff --git a/buildroot/package/read-edid/read-edid.hash b/buildroot/package/read-edid/read-edid.hash new file mode 100644 index 0000000..3005217 --- /dev/null +++ b/buildroot/package/read-edid/read-edid.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c7c6d8440f5b90f98e276829271ccea5b2ff5a3413df8a0f87ec09f834af186f read-edid-3.0.2.tar.gz diff --git a/buildroot/package/read-edid/read-edid.mk b/buildroot/package/read-edid/read-edid.mk new file mode 100644 index 0000000..3e38f50 --- /dev/null +++ b/buildroot/package/read-edid/read-edid.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# read-edid +# +################################################################################ + +READ_EDID_VERSION = 3.0.2 +READ_EDID_SITE = http://www.polypux.org/projects/read-edid +READ_EDID_LICENSE = BSD-like +READ_EDID_LICENSE_FILES = LICENSE + +# disable classic get-edid support (needs libx86) +READ_EDID_CONF_OPTS += -DCLASSICBUILD=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/readline/0000-curses-link.patch b/buildroot/package/readline/0000-curses-link.patch new file mode 100644 index 0000000..56b4770 --- /dev/null +++ b/buildroot/package/readline/0000-curses-link.patch @@ -0,0 +1,16 @@ +link readline directly to ncurses since it needs symbols from it + +upstream readline does this on purpose (no direct linking), but +it doesn't make much sense in a Linux world + +--- a/support/shobj-conf ++++ b/support/shobj-conf +@@ -42,7 +42,7 @@ + SHOBJ_LIBS= + + SHLIB_XLDFLAGS= +-SHLIB_LIBS= ++SHLIB_LIBS=-lncurses + + SHLIB_DOT='.' + SHLIB_LIBPREF='lib' diff --git a/buildroot/package/readline/Config.in b/buildroot/package/readline/Config.in new file mode 100644 index 0000000..1cb0672 --- /dev/null +++ b/buildroot/package/readline/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_READLINE + bool "readline" + select BR2_PACKAGE_NCURSES + help + The GNU Readline library provides a set of functions for use + by applications that allow users to edit command lines + as they are typed in. + + https://cnswww.cns.cwru.edu/php/chet/readline/rltop.html diff --git a/buildroot/package/readline/inputrc b/buildroot/package/readline/inputrc new file mode 100644 index 0000000..2f1cb60 --- /dev/null +++ b/buildroot/package/readline/inputrc @@ -0,0 +1,44 @@ +# /etc/inputrc - global inputrc for libreadline +# See readline(3readline) and `info readline' for more information. + +# Be 8 bit clean. +set input-meta on +set output-meta on +set bell-style visible + +# To allow the use of 8bit-characters like the german umlauts, comment out +# the line below. However this makes the meta key not work as a meta key, +# which is annoying to those which don't need to type in 8-bit characters. + +# set convert-meta off + +"\e0d": backward-word +"\e0c": forward-word +"\e[h": beginning-of-line +"\e[f": end-of-line +"\e[1~": beginning-of-line +"\e[4~": end-of-line +#"\e[5~": beginning-of-history +#"\e[6~": end-of-history +"\e[3~": delete-char +"\e[2~": quoted-insert + +# Common standard keypad and cursor +# (codes courtsey Werner Fink, ) +#"\e[1~": history-search-backward +"\e[2~": yank +"\e[3~": delete-char +#"\e[4~": set-mark +"\e[5~": history-search-backward +"\e[6~": history-search-forward +# Normal keypad and cursor of xterm +"\e[F": end-of-line +"\e[H": beginning-of-line +# Application keypad and cursor of xterm +"\eOA": previous-history +"\eOC": forward-char +"\eOB": next-history +"\eOD": backward-char +"\eOF": end-of-line +"\eOH": beginning-of-line + diff --git a/buildroot/package/readline/readline.hash b/buildroot/package/readline/readline.hash new file mode 100644 index 0000000..43f8c64 --- /dev/null +++ b/buildroot/package/readline/readline.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 750d437185286f40a369e1e4f4764eda932b9459b5ec9a731628393dd3d32334 readline-7.0.tar.gz diff --git a/buildroot/package/readline/readline.mk b/buildroot/package/readline/readline.mk new file mode 100644 index 0000000..cc5d4f2 --- /dev/null +++ b/buildroot/package/readline/readline.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# readline +# +################################################################################ + +READLINE_VERSION = 7.0 +READLINE_SITE = $(BR2_GNU_MIRROR)/readline +READLINE_INSTALL_STAGING = YES +READLINE_DEPENDENCIES = ncurses +HOST_READLINE_DEPENDENCIES = host-ncurses +READLINE_CONF_ENV = bash_cv_func_sigsetjmp=yes \ + bash_cv_wcwidth_broken=no +READLINE_LICENSE = GPL-3.0+ +READLINE_LICENSE_FILES = COPYING + +define READLINE_PURGE_EXAMPLES + rm -rf $(TARGET_DIR)/usr/share/readline +endef +READLINE_POST_INSTALL_TARGET_HOOKS += READLINE_PURGE_EXAMPLES + +define READLINE_INSTALL_INPUTRC + $(INSTALL) -D -m 644 package/readline/inputrc $(TARGET_DIR)/etc/inputrc +endef +READLINE_POST_INSTALL_TARGET_HOOKS += READLINE_INSTALL_INPUTRC + +ifneq ($(BR2_STATIC_LIBS),y) +# libraries get installed read only, so strip fails +define READLINE_INSTALL_FIXUPS_SHARED + chmod +w $(addprefix $(TARGET_DIR)/usr/lib/,libhistory.so.* libreadline.so.*) +endef +READLINE_POST_INSTALL_TARGET_HOOKS += READLINE_INSTALL_FIXUPS_SHARED +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/redis/0001-uclibc.patch b/buildroot/package/redis/0001-uclibc.patch new file mode 100644 index 0000000..a0534d5 --- /dev/null +++ b/buildroot/package/redis/0001-uclibc.patch @@ -0,0 +1,23 @@ +redis-001-uclibc.patch: This patch fixes redis so that it can be compiled +against uclibc. Patch originates from: + + Support cross-compiling for uClibc targets + https://github.com/antirez/redis/pull/537 + Mike Steinert, mike.steinert@gmail.com + +Signed-off-by: Daniel Price +[Martin: adapt to 3.0.3] +Signed-off-by: Martin Bark + +========================================================================= +diff -ur old/src/config.h new/src/config.h +--- old/src/config.h 2012-10-26 07:20:24.000000000 -0700 ++++ new/src/config.h 2012-10-31 13:41:51.206309564 -0700 +@@ -62,7 +62,7 @@ + #endif + + /* Test for backtrace() */ +-#if defined(__APPLE__) || (defined(__linux__) && defined(__GLIBC__)) ++#if defined(__APPLE__) || (defined(__linux__) && defined(__GLIBC__) && !defined(__UCLIBC__)) + #define HAVE_BACKTRACE 1 + #endif diff --git a/buildroot/package/redis/0002-largefile-conditional-define.patch b/buildroot/package/redis/0002-largefile-conditional-define.patch new file mode 100644 index 0000000..747e055 --- /dev/null +++ b/buildroot/package/redis/0002-largefile-conditional-define.patch @@ -0,0 +1,32 @@ +Define _LARGEFILE_SOURCE and _FILE_OFFSET_BITS conditionally + +In order to avoid ugly warnings at compile time, only define +_LARGEFILE_SOURCE and _FILE_OFFSET_BITS if they have not already been +defined through the build command line. + +Avoids: + + In file included from redis.h:33:0, + from migrate.c:1: + fmacros.h:45:0: warning: "_LARGEFILE_SOURCE" redefined + :0:0: note: this is the location of the previous definition + +Signed-off-by: Thomas Petazzoni + +Index: redis-2.6.11/src/fmacros.h +=================================================================== +--- redis-2.6.11.orig/src/fmacros.h 2013-03-25 22:09:15.000000000 +0100 ++++ redis-2.6.11/src/fmacros.h 2013-03-25 22:09:40.000000000 +0100 +@@ -42,7 +42,12 @@ + #define _XOPEN_SOURCE + #endif + ++#ifndef _LARGEFILE_SOURCE + #define _LARGEFILE_SOURCE ++#endif ++ ++#ifndef _FILE_OFFSET_BITS + #define _FILE_OFFSET_BITS 64 ++#endif + + #endif diff --git a/buildroot/package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch b/buildroot/package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch new file mode 100644 index 0000000..6ad81a4 --- /dev/null +++ b/buildroot/package/redis/0003-redis.conf-adjust-defauts-for-buildroot.patch @@ -0,0 +1,29 @@ +From f79d1d1bf9e6f54b67e5482602084fbff7fd9cc9 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Fri, 28 Oct 2016 12:50:34 -0300 +Subject: [PATCH] redis.conf: adjust defauts for buildroot + +Based on Martin Bark's patch hence archlinux package. +We just need to specify a proper db directory. + +Signed-off-by: Gustavo Zacarias +--- + redis.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/redis.conf b/redis.conf +index 22e00bc..3bb0430 100644 +--- a/redis.conf ++++ b/redis.conf +@@ -244,7 +244,7 @@ dbfilename dump.rdb + # The Append Only File will also be created inside this directory. + # + # Note that you must specify a directory here, not a file name. +-dir ./ ++dir /var/lib/redis/ + + ################################# REPLICATION ################################# + +-- +2.7.3 + diff --git a/buildroot/package/redis/Config.in b/buildroot/package/redis/Config.in new file mode 100644 index 0000000..5d7edd8 --- /dev/null +++ b/buildroot/package/redis/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_REDIS + bool "redis" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Redis is an open source, advanced key-value store. It is + often referred to as a data structure server since keys can + contain strings, hashes, lists, sets and sorted sets. + + http://www.redis.io + +comment "redis needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/redis/S50redis b/buildroot/package/redis/S50redis new file mode 100644 index 0000000..ae2a341 --- /dev/null +++ b/buildroot/package/redis/S50redis @@ -0,0 +1,38 @@ +#!/bin/sh +# +# start redis +# + +start() { + printf "Starting redis: " + umask 077 + start-stop-daemon -S -q -c redis:redis -b \ + --exec /usr/bin/redis-server -- /etc/redis.conf + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping redis: " + /usr/bin/redis-cli shutdown + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/redis/redis.hash b/buildroot/package/redis/redis.hash new file mode 100644 index 0000000..d9a14ce --- /dev/null +++ b/buildroot/package/redis/redis.hash @@ -0,0 +1,4 @@ +# From https://github.com/antirez/redis-hashes/blob/master/README +sha256 98c4254ae1be4e452aa7884245471501c9aa657993e0318d88f048093e7f88fd redis-3.2.12.tar.gz +# Locally calculated +sha256 cbf420a3672475a6e2765e3c0984c1f81efe0212afb94a3c998ee63bfd661063 COPYING diff --git a/buildroot/package/redis/redis.mk b/buildroot/package/redis/redis.mk new file mode 100644 index 0000000..cbd2d7b --- /dev/null +++ b/buildroot/package/redis/redis.mk @@ -0,0 +1,57 @@ +################################################################################ +# +# redis +# +################################################################################ + +REDIS_VERSION = 3.2.12 +REDIS_SITE = http://download.redis.io/releases +REDIS_LICENSE = BSD-3-Clause (core); MIT and BSD family licenses (Bundled components) +REDIS_LICENSE_FILES = COPYING + +define REDIS_USERS + redis -1 redis -1 * /var/lib/redis /bin/false - Redis Server +endef + +# Uses __atomic_fetch_add_4. Adding -latomic to LDFLAGS does not work, +# because LDFLAGS is used before the list of object files. We need to +# add -latomic to FINAL_LIBS to provide -latomic at the correct place +# in the linking command. +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +define REDIS_FIX_MAKEFILE + $(SED) 's/FINAL_LIBS=-lm/FINAL_LIBS=-lm -latomic/' $(@D)/src/Makefile +endef +REDIS_POST_PATCH_HOOKS = REDIS_FIX_MAKEFILE +endif + +# Redis doesn't support DESTDIR (yet, see +# https://github.com/antirez/redis/pull/609). We set PREFIX +# instead. +REDIS_BUILDOPTS = $(TARGET_CONFIGURE_OPTS) \ + PREFIX=$(TARGET_DIR)/usr MALLOC=libc + +define REDIS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(REDIS_BUILDOPTS) -C $(@D) +endef + +define REDIS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(REDIS_BUILDOPTS) -C $(@D) \ + LDCONFIG=true install + $(INSTALL) -D -m 0644 $(@D)/redis.conf \ + $(TARGET_DIR)/etc/redis.conf +endef + +define REDIS_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/redis/S50redis \ + $(TARGET_DIR)/etc/init.d/S50redis +endef + +define REDIS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/redis/redis.service \ + $(TARGET_DIR)/usr/lib/systemd/system/redis.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/redis.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/redis.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/redis/redis.service b/buildroot/package/redis/redis.service new file mode 100644 index 0000000..0a8162b --- /dev/null +++ b/buildroot/package/redis/redis.service @@ -0,0 +1,22 @@ +[Unit] +Description=Advanced key-value store +After=network.target + +[Service] +Type=simple +User=redis +Group=redis +ExecStart=/usr/bin/redis-server /etc/redis.conf +ExecStop=/usr/bin/redis-cli shutdown +CapabilityBoundingSet= +PrivateTmp=true +PrivateDevices=true +ProtectSystem=full +ProtectHome=true +NoNewPrivileges=true +RuntimeDirectory=redis +RuntimeDirectoryMode=755 +LimitNOFILE=10032 + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/refpolicy/Config.in b/buildroot/package/refpolicy/Config.in new file mode 100644 index 0000000..954dc3a --- /dev/null +++ b/buildroot/package/refpolicy/Config.in @@ -0,0 +1,69 @@ +config BR2_PACKAGE_REFPOLICY + bool "refpolicy" + depends on BR2_TOOLCHAIN_HAS_THREADS # policycoreutils + depends on BR2_TOOLCHAIN_USES_GLIBC # policycoreutils + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS # policycoreutils + depends on !BR2_STATIC_LIBS # policycoreutils + depends on !BR2_arc # policycoreutils + select BR2_PACKAGE_POLICYCOREUTILS + select BR2_PACKAGE_BUSYBOX_SELINUX if BR2_PACKAGE_BUSYBOX + help + The SELinux Reference Policy project (refpolicy) is a + complete SELinux policy that can be used as the system + policy for a variety of systems and used as the basis for + creating other policies. Reference Policy was originally + based on the NSA example policy, but aims to accomplish many + additional goals. + + The current refpolicy does not fully support Buildroot and + needs modifications to work with the default system file + layout. These changes should be added as patches to the + refpolicy that modify a single SELinux policy. + + The refpolicy works for the most part in permissive + mode. Only the basic set of utilities are enabled in the + example policy config and some of the pathing in the + policies is not correct. Individual policies would need to + be tweaked to get everything functioning properly. + + https://github.com/TresysTechnology/refpolicy + +comment "refpolicy needs a glibc toolchain w/ threads, dynamic library" + depends on !BR2_arc + depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_USES_GLIBC + +if BR2_PACKAGE_REFPOLICY + +config BR2_PACKAGE_REFPOLICY_POLICY_VERSION + string "Policy version" + default "30" + +choice + prompt "SELinux default state" + default BR2_PACKAGE_REFPOLICY_POLICY_STATE_PERMISSIVE + +config BR2_PACKAGE_REFPOLICY_POLICY_STATE_ENFORCING + bool "Enforcing" + help + SELinux security policy is enforced + +config BR2_PACKAGE_REFPOLICY_POLICY_STATE_PERMISSIVE + bool "Permissive" + help + SELinux prints warnings instead of enforcing + +config BR2_PACKAGE_REFPOLICY_POLICY_STATE_DISABLED + bool "Disabled" + help + No SELinux policy is loaded +endchoice + +config BR2_PACKAGE_REFPOLICY_POLICY_STATE + string + default "permissive" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_PERMISSIVE + default "enforcing" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_ENFORCING + default "disabled" if BR2_PACKAGE_REFPOLICY_POLICY_STATE_DISABLED + +endif diff --git a/buildroot/package/refpolicy/config b/buildroot/package/refpolicy/config new file mode 100644 index 0000000..087297c --- /dev/null +++ b/buildroot/package/refpolicy/config @@ -0,0 +1,8 @@ +# This file controls the state of SELinux on the system. +# SELINUX= can take one of these three values: +# enforcing - SELinux security policy is enforced. +# permissive - SELinux prints warnings instead of enforcing. +# disabled - No SELinux policy is loaded. +SELINUX=disabled + +SELINUXTYPE=targeted diff --git a/buildroot/package/refpolicy/refpolicy.hash b/buildroot/package/refpolicy/refpolicy.hash new file mode 100644 index 0000000..f341566 --- /dev/null +++ b/buildroot/package/refpolicy/refpolicy.hash @@ -0,0 +1,5 @@ +# From https://github.com/TresysTechnology/refpolicy/wiki/DownloadRelease +sha256 e826f7d7f899a548e538964487e9fc1bc67ca94756ebdce0bfb6532b4eb0d06b refpolicy-2.20180114.tar.bz2 + +# Locally computed +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/buildroot/package/refpolicy/refpolicy.mk b/buildroot/package/refpolicy/refpolicy.mk new file mode 100644 index 0000000..590e0eb --- /dev/null +++ b/buildroot/package/refpolicy/refpolicy.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# refpolicy +# +################################################################################ + +REFPOLICY_VERSION = 2.20180114 +REFPOLICY_SOURCE = refpolicy-$(REFPOLICY_VERSION).tar.bz2 +REFPOLICY_SITE = https://raw.githubusercontent.com/wiki/TresysTechnology/refpolicy/files +REFPOLICY_LICENSE = GPL-2.0 +REFPOLICY_LICENSE_FILES = COPYING +REFPOLICY_INSTALL_STAGING = YES +REFPOLICY_DEPENDENCIES = \ + host-m4 \ + host-checkpolicy \ + host-policycoreutils \ + host-setools \ + host-gawk \ + policycoreutils + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +REFPOLICY_DEPENDENCIES += host-python3 +else +REFPOLICY_DEPENDENCIES += host-python +endif + +# Cannot use multiple threads to build the reference policy +REFPOLICY_MAKE = \ + TEST_TOOLCHAIN=$(HOST_DIR) \ + $(TARGET_MAKE_ENV) \ + $(MAKE1) + +REFPOLICY_POLICY_VERSION = \ + $(call qstrip,$(BR2_PACKAGE_REFPOLICY_POLICY_VERSION)) +REFPOLICY_POLICY_STATE = \ + $(call qstrip,$(BR2_PACKAGE_REFPOLICY_POLICY_STATE)) + +define REFPOLICY_CONFIGURE_CMDS + $(SED) "/OUTPUT_POLICY/c\OUTPUT_POLICY = $(REFPOLICY_POLICY_VERSION)" \ + $(@D)/build.conf + $(SED) "/MONOLITHIC/c\MONOLITHIC = y" $(@D)/build.conf + $(SED) "/NAME/c\NAME = targeted" $(@D)/build.conf +endef + +define REFPOLICY_BUILD_CMDS + $(REFPOLICY_MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) bare conf +endef + +define REFPOLICY_INSTALL_STAGING_CMDS + $(REFPOLICY_MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) \ + install-src install-headers +endef + +define REFPOLICY_INSTALL_TARGET_CMDS + $(REFPOLICY_MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + $(INSTALL) -m 0755 -D package/refpolicy/config \ + $(TARGET_DIR)/etc/selinux/config + $(SED) "/^SELINUX=/c\SELINUX=$(REFPOLICY_POLICY_STATE)" \ + $(TARGET_DIR)/etc/selinux/config +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/restorecond/Config.in b/buildroot/package/restorecond/Config.in new file mode 100644 index 0000000..54a5545 --- /dev/null +++ b/buildroot/package/restorecond/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_RESTORECOND + bool "restorecond" + depends on !BR2_arc + depends on BR2_USE_MMU # libglib2 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on !BR2_STATIC_LIBS # libselinux + depends on BR2_TOOLCHAIN_USES_GLIBC # libselinux + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBSELINUX + select BR2_PACKAGE_LIBSEPOL + help + restorecond is a daemon that watches for file creation and + then sets the default SELinux file context for that file. + + https://github.com/SELinuxProject/selinux/wiki/Releases + +comment "restorecond needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_arc + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ + BR2_STATIC_LIBS || !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/restorecond/restorecond.hash b/buildroot/package/restorecond/restorecond.hash new file mode 100644 index 0000000..f52bbd2 --- /dev/null +++ b/buildroot/package/restorecond/restorecond.hash @@ -0,0 +1,2 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 cb8e0a8d706cb2c1f105125f3514dffffefcbcfb49199183a7f91ab0bdf1f24d restorecond-2.7.tar.gz diff --git a/buildroot/package/restorecond/restorecond.mk b/buildroot/package/restorecond/restorecond.mk new file mode 100644 index 0000000..aaa59b3 --- /dev/null +++ b/buildroot/package/restorecond/restorecond.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# restorecond +# +################################################################################ + +RESTORECOND_VERSION = 2.7 +RESTORECOND_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20170804 +RESTORECOND_LICENSE = GPL-2.0 +RESTORECOND_LICENSE_FILES = COPYING + +RESTORECOND_DEPENDENCIES = libglib2 libsepol libselinux dbus-glib + +# Undefining _FILE_OFFSET_BITS here because of a "bug" with glibc fts.h +# large file support. +# See https://bugzilla.redhat.com/show_bug.cgi?id=574992 for more information +RESTORECOND_MAKE_OPTS += \ + $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -U_FILE_OFFSET_BITS" \ + CPPFLAGS="$(TARGET_CPPFLAGS) -U_FILE_OFFSET_BITS" \ + ARCH="$(BR2_ARCH)" + +# We need to pass DESTDIR at build time because it's used by +# restorecond build system to find headers and libraries. +define RESTORECOND_BUILD_CMDS + $(MAKE) -C $(@D) $(RESTORECOND_MAKE_OPTS) DESTDIR=$(STAGING_DIR) all +endef + +define RESTORECOND_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D $(@D)/restorecond.init \ + $(TARGET_DIR)/etc/init.d/S20restorecond +endef + +define RESTORECOND_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D $(@D)/restorecond.service \ + $(TARGET_DIR)/usr/lib/systemd/system/restorecond.service + + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/restorecond.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/restorecond.service + + $(INSTALL) -m 0600 -D $(@D)/org.selinux.Restorecond.service \ + $(TARGET_DIR)/etc/systemd/system/org.selinux.Restorecond.service +endef + +define RESTORECOND_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/restorecond.conf $(TARGET_DIR)/etc/selinux/restorecond.conf + $(INSTALL) -m 0644 -D $(@D)/restorecond_user.conf $(TARGET_DIR)/etc/selinux/restorecond_user.conf + $(INSTALL) -m 0755 -D $(@D)/restorecond $(TARGET_DIR)/usr/sbin/restorecond +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rhash/Config.in b/buildroot/package/rhash/Config.in new file mode 100644 index 0000000..2ddcb00 --- /dev/null +++ b/buildroot/package/rhash/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_RHASH + bool "rhash" + help + LibRHash is a professional, portable, thread-safe C library + for computing a wide variety of hash sums, such as CRC32, + MD4, MD5, SHA1, SHA256, SHA512, SHA3, AICH, ED2K, Tiger, + DC++ TTH, BitTorrent BTIH, GOST R 34.11-94, RIPEMD-160, + HAS-160, EDON-R, Whirlpool and Snefru. + + https://github.com/rhash/RHash + +if BR2_PACKAGE_RHASH + +config BR2_PACKAGE_RHASH_BIN + bool "rhash binary" + depends on !BR2_STATIC_LIBS + help + Install rhash console utility + +comment "rhash binary needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +endif diff --git a/buildroot/package/rhash/rhash.hash b/buildroot/package/rhash/rhash.hash new file mode 100644 index 0000000..5efc3a6 --- /dev/null +++ b/buildroot/package/rhash/rhash.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/rhash/files/rhash/1.3.4/ +md5 0b51010604659e9e99f6307b053ba13b rhash-1.3.4-src.tar.gz +sha1 411d8c7ba84fa9763bc49fa2fd3a7587712fd52c rhash-1.3.4-src.tar.gz diff --git a/buildroot/package/rhash/rhash.mk b/buildroot/package/rhash/rhash.mk new file mode 100644 index 0000000..53f49d8 --- /dev/null +++ b/buildroot/package/rhash/rhash.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# rhash +# +################################################################################ + +RHASH_VERSION = 1.3.4 +RHASH_SOURCE = rhash-$(RHASH_VERSION)-src.tar.gz +RHASH_SITE = https://sourceforge.net/projects/rhash/files/rhash/$(RHASH_VERSION) +RHASH_LICENSE = MIT +RHASH_LICENSE_FILES = COPYING +RHASH_INSTALL_STAGING = YES +RHASH_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +RHASH_ADDLDFLAGS = $(TARGET_NLS_LIBS) +RHASH_ADDCFLAGS = $(if $(BR2_SYSTEM_ENABLE_NLS),-DUSE_GETTEXT) + +ifeq ($(BR2_PACKAGE_OPENSSL)x$(BR2_STATIC_LIBS),yx) +RHASH_DEPENDENCIES += openssl +RHASH_ADDCFLAGS += -DOPENSSL_RUNTIME -rdynamic +RHASH_ADDLDFLAGS += -ldl +endif + +RHASH_MAKE_OPTS = \ + ADDCFLAGS="$(RHASH_ADDCFLAGS)" \ + ADDLDFLAGS="$(RHASH_ADDLDFLAGS)" \ + PREFIX="/usr" + +ifeq ($(BR2_SHARED_LIBS),y) +RHASH_BUILD_TARGETS = lib-shared build-shared +RHASH_INSTALL_TARGETS = install-lib-shared install-so-link +else ifeq ($(BR2_STATIC_LIBS),y) +RHASH_BUILD_TARGETS = lib-static +RHASH_INSTALL_TARGETS = install-lib-static +else +RHASH_BUILD_TARGETS = lib-static lib-shared build-shared +RHASH_INSTALL_TARGETS = install-lib-static install-lib-shared install-so-link +endif + +define RHASH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + $(RHASH_MAKE_OPTS) $(RHASH_BUILD_TARGETS) +endef + +define RHASH_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/librhash \ + DESTDIR="$(STAGING_DIR)" $(RHASH_MAKE_OPTS) $(RHASH_INSTALL_TARGETS) \ + install-headers +endef + +ifeq ($(BR2_PACKAGE_RHASH_BIN),y) +define RHASH_INSTALL_TARGET_RHASH_BIN + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) install-shared +endef +endif + +define RHASH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/librhash \ + DESTDIR="$(TARGET_DIR)" $(RHASH_MAKE_OPTS) $(RHASH_INSTALL_TARGETS) + $(RHASH_INSTALL_TARGET_RHASH_BIN) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/riemann-c-client/Config.in b/buildroot/package/riemann-c-client/Config.in new file mode 100644 index 0000000..91b13b7 --- /dev/null +++ b/buildroot/package/riemann-c-client/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_RIEMANN_C_CLIENT + bool "riemann-c-client" + depends on BR2_INSTALL_LIBSTDCPP # protobuf-c + depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf-c + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" # protobuf-c + depends on BR2_HOST_GCC_AT_LEAST_4_5 # protobuf-c + select BR2_PACKAGE_PROTOBUF_C + help + Riemann-c-client is a C client library for the Riemann + monitoring system, providing a convenient and simple API, + high test coverage and a copyleft license, along with API + and ABI stability. + + https://github.com/algernon/riemann-c-client + +comment "riemann-c-client needs a toolchain w/ C++, threads, host gcc >= 4.5" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_HOST_GCC_AT_LEAST_4_5 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" diff --git a/buildroot/package/riemann-c-client/riemann-c-client.hash b/buildroot/package/riemann-c-client/riemann-c-client.hash new file mode 100644 index 0000000..0902881 --- /dev/null +++ b/buildroot/package/riemann-c-client/riemann-c-client.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4b18804f489834fa953f4af887290173c745b471a5993bb108a9142c867de457 riemann-c-client-1.9.1.tar.xz diff --git a/buildroot/package/riemann-c-client/riemann-c-client.mk b/buildroot/package/riemann-c-client/riemann-c-client.mk new file mode 100644 index 0000000..09f7900 --- /dev/null +++ b/buildroot/package/riemann-c-client/riemann-c-client.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# riemann-c-client +# +################################################################################ + +RIEMANN_C_CLIENT_VERSION = 1.9.1 +RIEMANN_C_CLIENT_SOURCE = riemann-c-client-$(RIEMANN_C_CLIENT_VERSION).tar.xz +RIEMANN_C_CLIENT_SITE = https://github.com/algernon/riemann-c-client/releases/download/riemann-c-client-$(RIEMANN_C_CLIENT_VERSION) +RIEMANN_C_CLIENT_LICENSE = LGPL-3.0+ +RIEMANN_C_CLIENT_LICENSE_FILES = LICENSE +RIEMANN_C_CLIENT_INSTALL_STAGING = YES +RIEMANN_C_CLIENT_MAKE = $(MAKE1) +RIEMANN_C_CLIENT_DEPENDENCIES = \ + host-pkgconf protobuf-c \ + $(if $(BR2_PACKAGE_GNUTLS),gnutls) \ + $(if $(BR2_PACKAGE_JSON_C),json-c) + +ifeq ($(BR2_bfin),y) +# ld symbol versioning not working on bfin +RIEMANN_C_CLIENT_CONF_ENV += ac_cv_prog_ld_version_script=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/rings/Config.in b/buildroot/package/rings/Config.in new file mode 100644 index 0000000..87ade07 --- /dev/null +++ b/buildroot/package/rings/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_RINGS + bool "rings" + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + help + Provides a way to create new Lua states from within Lua. + + http://github.com/keplerproject/rings diff --git a/buildroot/package/rings/rings.hash b/buildroot/package/rings/rings.hash new file mode 100644 index 0000000..59da2fa --- /dev/null +++ b/buildroot/package/rings/rings.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 627ac55d4a420fab766e6870fcd82cb39da12fb4ec8efddc7220b188a4ad4bc3 rings-1.3.0-1.src.rock diff --git a/buildroot/package/rings/rings.mk b/buildroot/package/rings/rings.mk new file mode 100644 index 0000000..92001bb --- /dev/null +++ b/buildroot/package/rings/rings.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# rings +# +################################################################################ + +RINGS_VERSION_MAJOR = 1.3.0 +RINGS_VERSION = $(RINGS_VERSION_MAJOR)-1 +RINGS_SUBDIR = rings-v_$(subst .,_,$(RINGS_VERSION_MAJOR)) +RINGS_LICENSE = MIT +RINGS_LICENSE_FILES = $(RINGS_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/buildroot/package/rng-tools/0001-rngd-exit-code.patch b/buildroot/package/rng-tools/0001-rngd-exit-code.patch new file mode 100644 index 0000000..709e20c --- /dev/null +++ b/buildroot/package/rng-tools/0001-rngd-exit-code.patch @@ -0,0 +1,22 @@ +Exit with a special value when RNG modules are not available + +Instead of returning with an error, exit with a special value when the +RNG kernel modules are not present in the kernel. This is not really a +hard failure. + +Patch borrowed from Fedora, at +http://pkgs.fedoraproject.org/cgit/rng-tools.git/tree/rngd-exit-code.patch. + +Signed-off-by: Maxim Mikityanskiy + +--- a/rngd.c ++++ b/rngd.c +@@ -319,7 +319,7 @@ int main(int argc, char **argv) + message(LOG_DAEMON|LOG_ERR, + "Maybe RNG device modules are not loaded\n"); + } +- return 1; ++ return 66; + } + + if (arguments->verbose) { diff --git a/buildroot/package/rng-tools/Config.in b/buildroot/package/rng-tools/Config.in new file mode 100644 index 0000000..b00477d --- /dev/null +++ b/buildroot/package/rng-tools/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_RNG_TOOLS + bool "rng-tools" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS || !(BR2_i386 || BR2_x86_64) # libgcrypt + select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL + # For rdrand ligcrypt is required and it's not obvious to users + select BR2_PACKAGE_LIBGCRYPT if BR2_i386 || BR2_x86_64 + help + Daemon to use hardware random number generators. + + http://sourceforge.net/projects/gkernel/ diff --git a/buildroot/package/rng-tools/S21rngd b/buildroot/package/rng-tools/S21rngd new file mode 100755 index 0000000..b38be5a --- /dev/null +++ b/buildroot/package/rng-tools/S21rngd @@ -0,0 +1,48 @@ +#!/bin/sh + +NAME="rngd" +DAEMON="/usr/sbin/${NAME}" +DAEMON_ARGS="" +CFG_FILE="/etc/default/${NAME}" +PID_FILE="/var/run/${NAME}.pid" + +# Read configuration variable file if it is present +[ -r "${CFG_FILE}" ] && . "${CFG_FILE}" + +start() +{ + printf "Starting ${NAME}: " + start-stop-daemon -S -q -x "${DAEMON}" -- ${DAEMON_ARGS} + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() +{ + printf "Stopping ${NAME}: " + # This daemon does not exit properly with the default TERM signal unless + # it's forced to work by something reading /dev/random. Killing it and + # removing its PID file is more straightforward. + if start-stop-daemon -K -q -s KILL -p "${PID_FILE}" -n "${NAME}"; then + rm -f "${PID_FILE}" + echo "OK" + else + echo "FAIL" + fi +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" >&2 + exit 1 + ;; +esac diff --git a/buildroot/package/rng-tools/rng-tools.hash b/buildroot/package/rng-tools/rng-tools.hash new file mode 100644 index 0000000..09769e4 --- /dev/null +++ b/buildroot/package/rng-tools/rng-tools.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/gkernel/files/rng-tools/5/ +md5 6726cdc6fae1f5122463f24ae980dd68 rng-tools-5.tar.gz +sha1 3092768ac45315a5dcc0170d05566d1d00dbad96 rng-tools-5.tar.gz diff --git a/buildroot/package/rng-tools/rng-tools.mk b/buildroot/package/rng-tools/rng-tools.mk new file mode 100644 index 0000000..bbb1a64 --- /dev/null +++ b/buildroot/package/rng-tools/rng-tools.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# rng-tools +# +################################################################################ + +RNG_TOOLS_VERSION = 5 +RNG_TOOLS_SITE = http://downloads.sourceforge.net/project/gkernel/rng-tools/$(RNG_TOOLS_VERSION) +RNG_TOOLS_LICENSE = GPL-2.0 +RNG_TOOLS_LICENSE_FILES = COPYING + +# Work around for uClibc or musl toolchains which lack argp_*() +# functions. +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +RNG_TOOLS_CONF_ENV += LIBS="-largp" +RNG_TOOLS_DEPENDENCIES += argp-standalone +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +RNG_TOOLS_DEPENDENCIES += libgcrypt +else +RNG_TOOLS_CONF_OPTS += --without-libgcrypt +endif + +define RNG_TOOLS_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/rng-tools/S21rngd \ + $(TARGET_DIR)/etc/init.d/S21rngd +endef + +define RNG_TOOLS_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/rng-tools/rngd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/rngd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/rngd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/rngd.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/rng-tools/rngd.service b/buildroot/package/rng-tools/rngd.service new file mode 100644 index 0000000..c0bcffe --- /dev/null +++ b/buildroot/package/rng-tools/rngd.service @@ -0,0 +1,10 @@ +[Unit] +Description=Hardware RNG Entropy Gatherer Daemon + +[Service] +ExecStart=/usr/sbin/rngd -f $DAEMON_ARGS +SuccessExitStatus=66 +EnvironmentFile=-/etc/default/rngd + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/rp-pppoe/0002-krn-plugin.patch b/buildroot/package/rp-pppoe/0002-krn-plugin.patch new file mode 100644 index 0000000..d364e86 --- /dev/null +++ b/buildroot/package/rp-pppoe/0002-krn-plugin.patch @@ -0,0 +1,25 @@ +diff -Nura rp-pppoe-3.11.orig/src/configure rp-pppoe-3.11/src/configure +--- rp-pppoe-3.11.orig/src/configure 2012-08-21 10:01:10.536440032 -0300 ++++ rp-pppoe-3.11/src/configure 2012-08-21 10:01:45.353442397 -0300 +@@ -4517,7 +4517,7 @@ + modprobe pppoe > /dev/null 2>&1 + fi + if test "$cross_compiling" = yes; then : +- ac_cv_linux_kernel_pppoe=no; $ECHO "cross-compiling, default: " ++ ac_cv_linux_kernel_pppoe=yes; $ECHO "cross-compiling, default: " + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +diff -Nura rp-pppoe-3.11.orig/src/pppoe-server.c rp-pppoe-3.11/src/pppoe-server.c +--- rp-pppoe-3.11.orig/src/pppoe-server.c 2012-08-21 10:01:10.535440032 -0300 ++++ rp-pppoe-3.11/src/pppoe-server.c 2012-08-21 10:02:02.597443569 -0300 +@@ -20,6 +20,9 @@ + + #include "config.h" + ++/* Patched hack to make this cross compile */ ++#define HAVE_LINUX_KERNEL_PPPOE 1 ++ + #if defined(HAVE_NETPACKET_PACKET_H) || defined(HAVE_LINUX_IF_PACKET_H) + #define _POSIX_SOURCE 1 /* For sigaction defines */ + #endif diff --git a/buildroot/package/rp-pppoe/Config.in b/buildroot/package/rp-pppoe/Config.in new file mode 100644 index 0000000..8a69271 --- /dev/null +++ b/buildroot/package/rp-pppoe/Config.in @@ -0,0 +1,19 @@ +comment "rp-pppoe needs a uClibc or glibc toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL + depends on BR2_USE_MMU + +config BR2_PACKAGE_RP_PPPOE + bool "rp-pppoe" + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL # pppd + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_PPPD + help + An implementation of the Point-to-point protocol over + Ethernet. Has userspace client and server deamons. You + likely only need this package if you are implementing the + pppoe server that will service other pppoe client + devices. Otherwise the normal client functionality already + exists in the pppd package (and kernel). + + http://www.roaringpenguin.com/pppoe.html diff --git a/buildroot/package/rp-pppoe/rp-pppoe.hash b/buildroot/package/rp-pppoe/rp-pppoe.hash new file mode 100644 index 0000000..0cf85a0 --- /dev/null +++ b/buildroot/package/rp-pppoe/rp-pppoe.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 00794e04031546b0e9b8cf286f2a6d1ccfc4a621b2a3abb2d7ef2a7ab7cc86c2 rp-pppoe-3.12.tar.gz diff --git a/buildroot/package/rp-pppoe/rp-pppoe.mk b/buildroot/package/rp-pppoe/rp-pppoe.mk new file mode 100644 index 0000000..4214df9 --- /dev/null +++ b/buildroot/package/rp-pppoe/rp-pppoe.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# rp-pppoe +# +################################################################################ + +RP_PPPOE_VERSION = 3.12 +RP_PPPOE_SITE = http://www.roaringpenguin.com/files/download +RP_PPPOE_LICENSE = GPL-2.0 +RP_PPPOE_LICENSE_FILES = doc/LICENSE +RP_PPPOE_DEPENDENCIES = pppd +RP_PPPOE_SUBDIR = src +RP_PPPOE_TARGET_FILES = pppoe pppoe-server pppoe-relay pppoe-sniff +RP_PPPOE_TARGET_SCRIPTS = pppoe-connect pppoe-init pppoe-setup pppoe-start \ + pppoe-status pppoe-stop +RP_PPPOE_MAKE_OPTS = PLUGIN_DIR=/usr/lib/pppd/$(PPPD_VERSION) +RP_PPPOE_CONF_OPTS = --disable-debugging + +# The pppd, echo, setsid and id paths must be the ones on the +# target. Indeed, the result of these checks is used to replace +# variables in scripts that are installed in the target. +RP_PPPOE_CONF_ENV = \ + rpppoe_cv_pack_bitfields=normal \ + ac_cv_path_PPPD=/usr/sbin/pppd \ + ac_cv_path_ECHO=/bin/echo \ + ac_cv_path_SETSID=/usr/bin/setsid \ + ac_cv_path_ID=/usr/bin/id \ + PPPD_H=$(PPPD_DIR)/pppd/pppd.h + +define RP_PPPOE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/configs/pppoe.conf \ + $(TARGET_DIR)/etc/ppp/pppoe.conf + for ff in $(RP_PPPOE_TARGET_FILES); do \ + $(INSTALL) -m 0755 $(@D)/src/$$ff $(TARGET_DIR)/usr/sbin/$$ff || exit 1; \ + done + for ff in $(RP_PPPOE_TARGET_SCRIPTS); do \ + $(INSTALL) -m 0755 $(@D)/scripts/$$ff $(TARGET_DIR)/usr/sbin/$$ff || exit 1; \ + done +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/rpcbind/0001-Remove-yellow-pages-support.patch b/buildroot/package/rpcbind/0001-Remove-yellow-pages-support.patch new file mode 100644 index 0000000..314e32e --- /dev/null +++ b/buildroot/package/rpcbind/0001-Remove-yellow-pages-support.patch @@ -0,0 +1,56 @@ +From 226b9c57ff403b407dbf1ff8a615da455a4cbd23 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 10 Nov 2012 22:03:43 +0100 +Subject: [PATCH] Remove yellow pages support + +This support requires yellow pages support in libtirpc, which isn't +available. As most Buildroot users are most likely never going to need +such feature, get rid of it. + +Signed-off-by: Thomas Petazzoni +--- + src/security.c | 18 ------------------ + 1 file changed, 18 deletions(-) + +diff --git a/src/security.c b/src/security.c +index 0c9453f..abc81bb 100644 +--- a/src/security.c ++++ b/src/security.c +@@ -24,9 +24,6 @@ + #include + #include + #include +-#include +-#include +-#include + #else + # define MOUNTPROC_MNT 1 + # define MOUNTPROC_UMNT 3 +@@ -325,24 +322,9 @@ check_callit(SVCXPRT *xprt, struct r_rmtcall_args *args, int versnum /*__unused* + args->rmt_proc != MOUNTPROC_UMNT) + break; + goto deny; +- case YPBINDPROG: +- if (args->rmt_proc != YPBINDPROC_SETDOM) +- break; +- /* FALLTHROUGH */ +- case YPPASSWDPROG: + case NFS_PROGRAM: + case RQUOTAPROG: + goto deny; +- case YPPROG: +- switch (args->rmt_proc) { +- case YPPROC_ALL: +- case YPPROC_MATCH: +- case YPPROC_FIRST: +- case YPPROC_NEXT: +- goto deny; +- default: +- break; +- } + default: + break; + } +-- +2.4.5 + diff --git a/buildroot/package/rpcbind/0002-handle_reply-Don-t-use-the-xp_auth-pointer-directly.patch b/buildroot/package/rpcbind/0002-handle_reply-Don-t-use-the-xp_auth-pointer-directly.patch new file mode 100644 index 0000000..6145514 --- /dev/null +++ b/buildroot/package/rpcbind/0002-handle_reply-Don-t-use-the-xp_auth-pointer-directly.patch @@ -0,0 +1,42 @@ +From 9194122389f2a56b1cd1f935e64307e2e963c2da Mon Sep 17 00:00:00 2001 +From: Steve Dickson +Date: Mon, 2 Nov 2015 17:05:18 -0500 +Subject: [PATCH] handle_reply: Don't use the xp_auth pointer directly + +In the latest libtirpc version to access the xp_auth +one must use the SVC_XP_AUTH macro. To be backwards +compatible a couple ifdefs were added to use the +macro when it exists. + +Signed-off-by: Steve Dickson +[peda@axentia.se: backport from upstream] +Signed-off-by: Peter Rosin +--- + src/rpcb_svc_com.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c +index 4ae93f1..22d6c84 100644 +--- a/src/rpcb_svc_com.c ++++ b/src/rpcb_svc_com.c +@@ -1295,10 +1295,17 @@ handle_reply(int fd, SVCXPRT *xprt) + a.rmt_localvers = fi->versnum; + + xprt_set_caller(xprt, fi); ++#if defined(SVC_XP_AUTH) ++ SVC_XP_AUTH(xprt) = svc_auth_none; ++#else + xprt->xp_auth = &svc_auth_none; ++#endif + svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a); ++#if !defined(SVC_XP_AUTH) + SVCAUTH_DESTROY(xprt->xp_auth); + xprt->xp_auth = NULL; ++#endif ++ + done: + if (buffer) + free(buffer); +-- +2.5.3 + diff --git a/buildroot/package/rpcbind/0003-src-remove-use-of-the-__P-macro.patch b/buildroot/package/rpcbind/0003-src-remove-use-of-the-__P-macro.patch new file mode 100644 index 0000000..72fda88 --- /dev/null +++ b/buildroot/package/rpcbind/0003-src-remove-use-of-the-__P-macro.patch @@ -0,0 +1,243 @@ +From 2f7d15304e0544e4c693c86d8ab8b2f08b9e9886 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 15 Aug 2016 16:36:40 +0200 +Subject: [PATCH] src: remove use of the __P() macro + +The __P() macro is a legacy compatibility macro aimed making pre-ANSI +(i.e. K&R) compilers that do not support function prototypes happy, +while still allowing such prototypes for ANSI-compliant compilers. + +Since virtually all compilers have been ANSI-compliant for a few decades +now, use of __P() is totally useless. + +Furthermore, __P() is defined in the non-standard sys/cdefs.h header. +This header is present in glibc and uClibc, and both have it included +from many of their headers. So, sys/cdefs.h is automagically included in +most cases and its macros are available. + +However, the musl C library does not provide this sys/cdefs.h header. +Thus, the build breaks on musl. + +For all the above reasons, get rid of __P() wherever it is used; just +always declare real function prototypes. + +Signed-off-by: "Yann E. MORIN" +Cc: Chuck Lever +Cc: Steve Dickson +--- + src/check_bound.c | 2 +- + src/pmap_svc.c | 10 +++++----- + src/rpcb_svc.c | 10 +++++----- + src/rpcb_svc_4.c | 14 ++++++-------- + src/rpcb_svc_com.c | 46 +++++++++++++++++++++++----------------------- + src/rpcbind.c | 12 ++++++------ + src/util.c | 2 +- + src/warmstart.c | 4 ++-- + 8 files changed, 49 insertions(+), 51 deletions(-) + +diff --git a/src/check_bound.c b/src/check_bound.c +index c70b845..92bfd36 100644 +--- a/src/check_bound.c ++++ b/src/check_bound.c +@@ -70,7 +70,7 @@ static struct fdlist *fdhead; /* Link list of the check fd's */ + static struct fdlist *fdtail; + static char *nullstring = ""; + +-static bool_t check_bound __P((struct fdlist *, char *uaddr)); ++static bool_t check_bound(struct fdlist *, char *uaddr); + + /* + * Returns 1 if the given address is bound for the given addr & transport +diff --git a/src/pmap_svc.c b/src/pmap_svc.c +index ad28b93..4c744fe 100644 +--- a/src/pmap_svc.c ++++ b/src/pmap_svc.c +@@ -60,11 +60,11 @@ static char sccsid[] = "@(#)pmap_svc.c 1.23 89/04/05 Copyr 1984 Sun Micro"; + #include "rpcbind.h" + #include "xlog.h" + #include /* svc_getcaller routine definition */ +-static struct pmaplist *find_service_pmap __P((rpcprog_t, rpcvers_t, +- rpcprot_t)); +-static bool_t pmapproc_change __P((struct svc_req *, SVCXPRT *, u_long)); +-static bool_t pmapproc_getport __P((struct svc_req *, SVCXPRT *)); +-static bool_t pmapproc_dump __P((struct svc_req *, SVCXPRT *)); ++static struct pmaplist *find_service_pmap(rpcprog_t, rpcvers_t, ++ rpcprot_t); ++static bool_t pmapproc_change(struct svc_req *, SVCXPRT *, u_long); ++static bool_t pmapproc_getport(struct svc_req *, SVCXPRT *); ++static bool_t pmapproc_dump(struct svc_req *, SVCXPRT *); + + /* + * Called for all the version 2 inquiries. +diff --git a/src/rpcb_svc.c b/src/rpcb_svc.c +index bd92201..709e3fb 100644 +--- a/src/rpcb_svc.c ++++ b/src/rpcb_svc.c +@@ -53,10 +53,10 @@ + #include "rpcbind.h" + #include "xlog.h" + +-static void *rpcbproc_getaddr_3_local __P((void *, struct svc_req *, SVCXPRT *, +- rpcvers_t)); +-static void *rpcbproc_dump_3_local __P((void *, struct svc_req *, SVCXPRT *, +- rpcvers_t)); ++static void *rpcbproc_getaddr_3_local(void *, struct svc_req *, SVCXPRT *, ++ rpcvers_t); ++static void *rpcbproc_dump_3_local(void *, struct svc_req *, SVCXPRT *, ++ rpcvers_t); + + /* + * Called by svc_getreqset. There is a separate server handle for +@@ -75,7 +75,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp) + } argument; + char *result; + xdrproc_t xdr_argument, xdr_result; +- void *(*local) __P((void *, struct svc_req *, SVCXPRT *, rpcvers_t)); ++ void *(*local)(void *, struct svc_req *, SVCXPRT *, rpcvers_t); + rpcprog_t setprog = 0; + + rpcbs_procinfo(RPCBVERS_3_STAT, rqstp->rq_proc); +diff --git a/src/rpcb_svc_4.c b/src/rpcb_svc_4.c +index b673452..5094879 100644 +--- a/src/rpcb_svc_4.c ++++ b/src/rpcb_svc_4.c +@@ -54,13 +54,11 @@ + #include "rpcbind.h" + #include "xlog.h" + +-static void *rpcbproc_getaddr_4_local __P((void *, struct svc_req *, SVCXPRT *, +- rpcvers_t)); +-static void *rpcbproc_getversaddr_4_local __P((void *, struct svc_req *, SVCXPRT *, rpcvers_t)); +-static void *rpcbproc_getaddrlist_4_local +- __P((void *, struct svc_req *, SVCXPRT *, rpcvers_t)); +-static void free_rpcb_entry_list __P((rpcb_entry_list_ptr *)); +-static void *rpcbproc_dump_4_local __P((void *, struct svc_req *, SVCXPRT *, rpcvers_t)); ++static void *rpcbproc_getaddr_4_local(void *, struct svc_req *, SVCXPRT *, rpcvers_t); ++static void *rpcbproc_getversaddr_4_local(void *, struct svc_req *, SVCXPRT *, rpcvers_t); ++static void *rpcbproc_getaddrlist_4_local(void *, struct svc_req *, SVCXPRT *, rpcvers_t); ++static void free_rpcb_entry_list(rpcb_entry_list_ptr *); ++static void *rpcbproc_dump_4_local(void *, struct svc_req *, SVCXPRT *, rpcvers_t); + + /* + * Called by svc_getreqset. There is a separate server handle for +@@ -78,7 +76,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp) + } argument; + char *result; + xdrproc_t xdr_argument, xdr_result; +- void *(*local) __P((void *, struct svc_req *, SVCXPRT *, rpcvers_t)); ++ void *(*local)(void *, struct svc_req *, SVCXPRT *, rpcvers_t); + rpcprog_t setprog = 0; + + rpcbs_procinfo(RPCBVERS_4_STAT, rqstp->rq_proc); +diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c +index 148fe42..5862c26 100644 +--- a/src/rpcb_svc_com.c ++++ b/src/rpcb_svc_com.c +@@ -100,29 +100,29 @@ struct finfo { + static struct finfo FINFO[NFORWARD]; + + +-static bool_t xdr_encap_parms __P((XDR *, struct encap_parms *)); +-static bool_t xdr_rmtcall_args __P((XDR *, struct r_rmtcall_args *)); +-static bool_t xdr_rmtcall_result __P((XDR *, struct r_rmtcall_args *)); +-static bool_t xdr_opaque_parms __P((XDR *, struct r_rmtcall_args *)); +-static int find_rmtcallfd_by_netid __P((char *)); +-static SVCXPRT *find_rmtcallxprt_by_fd __P((int)); +-static int forward_register __P((u_int32_t, struct netbuf *, int, char *, +- rpcproc_t, rpcvers_t, u_int32_t *)); +-static struct finfo *forward_find __P((u_int32_t)); +-static int free_slot_by_xid __P((u_int32_t)); +-static int free_slot_by_index __P((int)); +-static int netbufcmp __P((struct netbuf *, struct netbuf *)); +-static struct netbuf *netbufdup __P((struct netbuf *)); +-static void netbuffree __P((struct netbuf *)); +-static int check_rmtcalls __P((struct pollfd *, int)); +-static void xprt_set_caller __P((SVCXPRT *, struct finfo *)); +-static void send_svcsyserr __P((SVCXPRT *, struct finfo *)); +-static void handle_reply __P((int, SVCXPRT *)); +-static void find_versions __P((rpcprog_t, char *, rpcvers_t *, rpcvers_t *)); +-static rpcblist_ptr find_service __P((rpcprog_t, rpcvers_t, char *)); +-static char *getowner __P((SVCXPRT *, char *, size_t)); +-static int add_pmaplist __P((RPCB *)); +-static int del_pmaplist __P((RPCB *)); ++static bool_t xdr_encap_parms(XDR *, struct encap_parms *); ++static bool_t xdr_rmtcall_args(XDR *, struct r_rmtcall_args *); ++static bool_t xdr_rmtcall_result(XDR *, struct r_rmtcall_args *); ++static bool_t xdr_opaque_parms(XDR *, struct r_rmtcall_args *); ++static int find_rmtcallfd_by_netid(char *); ++static SVCXPRT *find_rmtcallxprt_by_fd(int); ++static int forward_register(u_int32_t, struct netbuf *, int, char *, ++ rpcproc_t, rpcvers_t, u_int32_t *); ++static struct finfo *forward_find(u_int32_t); ++static int free_slot_by_xid(u_int32_t); ++static int free_slot_by_index(int); ++static int netbufcmp(struct netbuf *, struct netbuf *); ++static struct netbuf *netbufdup(struct netbuf *); ++static void netbuffree(struct netbuf *); ++static int check_rmtcalls(struct pollfd *, int); ++static void xprt_set_caller(SVCXPRT *, struct finfo *); ++static void send_svcsyserr(SVCXPRT *, struct finfo *); ++static void handle_reply(int, SVCXPRT *); ++static void find_versions(rpcprog_t, char *, rpcvers_t *, rpcvers_t *); ++static rpcblist_ptr find_service(rpcprog_t, rpcvers_t, char *); ++static char *getowner(SVCXPRT *, char *, size_t); ++static int add_pmaplist(RPCB *); ++static int del_pmaplist(RPCB *); + + /* + * Set a mapping of program, version, netid +diff --git a/src/rpcbind.c b/src/rpcbind.c +index c4265cd..87ccdc2 100644 +--- a/src/rpcbind.c ++++ b/src/rpcbind.c +@@ -136,13 +136,13 @@ char *tcp_uaddr; /* Universal TCP address */ + static char servname[] = "rpcbind"; + static char superuser[] = "superuser"; + +-int main __P((int, char *[])); ++int main(int, char *[]); + +-static int init_transport __P((struct netconfig *)); +-static void rbllist_add __P((rpcprog_t, rpcvers_t, struct netconfig *, +- struct netbuf *)); +-static void terminate __P((int)); +-static void parseargs __P((int, char *[])); ++static int init_transport(struct netconfig *); ++static void rbllist_add(rpcprog_t, rpcvers_t, struct netconfig *, ++ struct netbuf *); ++static void terminate(int); ++static void parseargs(int, char *[]); + + int + main(int argc, char *argv[]) +diff --git a/src/util.c b/src/util.c +index a6c835b..74b0284 100644 +--- a/src/util.c ++++ b/src/util.c +@@ -70,7 +70,7 @@ static struct sockaddr_in *local_in4; + static struct sockaddr_in6 *local_in6; + #endif + +-static int bitmaskcmp __P((void *, void *, void *, int)); ++static int bitmaskcmp(void *, void *, void *, int); + + /* + * For all bits set in "mask", compare the corresponding bits in +diff --git a/src/warmstart.c b/src/warmstart.c +index b6eb73e..122a058 100644 +--- a/src/warmstart.c ++++ b/src/warmstart.c +@@ -58,8 +58,8 @@ + #define PMAPFILE RPCBIND_STATEDIR "/portmap.xdr" + #endif + +-static bool_t write_struct __P((char *, xdrproc_t, void *)); +-static bool_t read_struct __P((char *, xdrproc_t, void *)); ++static bool_t write_struct(char *, xdrproc_t, void *); ++static bool_t read_struct(char *, xdrproc_t, void *); + + static bool_t + write_struct(char *filename, xdrproc_t structproc, void *list) +-- +2.7.4 + diff --git a/buildroot/package/rpcbind/0004-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch b/buildroot/package/rpcbind/0004-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch new file mode 100644 index 0000000..130e5d7 --- /dev/null +++ b/buildroot/package/rpcbind/0004-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch @@ -0,0 +1,231 @@ +From 093bf65c79af417cffa09d6475f58923540eebcc Mon Sep 17 00:00:00 2001 +From: Doran Moppert +Date: Thu, 11 May 2017 11:42:54 -0400 +Subject: [PATCH] rpcbind: pair all svc_getargs() calls with svc_freeargs() to + avoid memory leak + +This patch is to address CVE-2017-8779 "rpcbomb" in rpcbind, discussed +at [1], [2], [3]. The last link suggests this issue is actually a bug +in rpcbind, which led me here. + +The leak caused by the reproducer at [4] appears to come from +rpcb_service_4(), in the case where svc_getargs() returns false and the +function had an early return, rather than passing through the cleanup +path at done:, as would otherwise occur. + +It also addresses a couple of other locations where the same fault seems +to exist, though I haven't been able to exercise those. I hope someone +more intimate with rpc(3) can confirm my understanding is correct, and +that I haven't introduced any new bugs. + +Without this patch, using the reproducer (and variants) repeatedly +against rpcbind with a numBytes argument of 1_000_000_000, /proc/$(pidof +rpcbind)/status reports VmSize increase of 976564 kB each call, and +VmRSS increase of around 260 kB every 33 calls - the specific numbers +are probably an artifact of my rhel/glibc version. With the patch, +there is a small (~50 kB) VmSize increase with the first message, but +thereafter both VmSize and VmRSS remain steady. + +[1]: http://seclists.org/oss-sec/2017/q2/209 +[2]: https://bugzilla.redhat.com/show_bug.cgi?id=1448124 +[3]: https://sourceware.org/ml/libc-alpha/2017-05/msg00129.html +[4]: https://github.com/guidovranken/rpcbomb/ + +Signed-off-by: Doran Moppert +Signed-off-by: Steve Dickson +(cherry picked from commit 7ea36eeece56b59f98e469934e4c20b4da043346) +[Peter: unconditionally include syslog.h for LOG_DEBUG] +Signed-off-by: Peter Korsgaard +--- + src/pmap_svc.c | 58 ++++++++++++++++++++++++++++++++++++++++++++---------- + src/rpcb_svc.c | 2 +- + src/rpcb_svc_4.c | 2 +- + src/rpcb_svc_com.c | 8 ++++++++ + 4 files changed, 58 insertions(+), 12 deletions(-) + +diff --git a/src/pmap_svc.c b/src/pmap_svc.c +index ad28b93..f730bed 100644 +--- a/src/pmap_svc.c ++++ b/src/pmap_svc.c +@@ -53,8 +53,8 @@ static char sccsid[] = "@(#)pmap_svc.c 1.23 89/04/05 Copyr 1984 Sun Micro"; + #include + #include + #include +-#ifdef RPCBIND_DEBUG + #include ++#ifdef RPCBIND_DEBUG + #include + #endif + #include "rpcbind.h" +@@ -175,6 +175,7 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long + long ans; + uid_t uid; + char uidbuf[32]; ++ int rc = TRUE; + + /* + * Can't use getpwnam here. We might end up calling ourselves +@@ -194,7 +195,8 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long + + if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { + svcerr_decode(xprt); +- return (FALSE); ++ rc = FALSE; ++ goto done; + } + #ifdef RPCBIND_DEBUG + if (debugging) +@@ -205,7 +207,8 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long + + if (!check_access(xprt, op, reg.pm_prog, PMAPVERS)) { + svcerr_weakauth(xprt); +- return (FALSE); ++ rc = (FALSE); ++ goto done; + } + + rpcbreg.r_prog = reg.pm_prog; +@@ -258,7 +261,16 @@ done_change: + rpcbs_set(RPCBVERS_2_STAT, ans); + else + rpcbs_unset(RPCBVERS_2_STAT, ans); +- return (TRUE); ++done: ++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { ++ if (debugging) { ++ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); ++ if (doabort) { ++ rpcbind_abort(); ++ } ++ } ++ } ++ return (rc); + } + + /* ARGSUSED */ +@@ -272,15 +284,18 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + #ifdef RPCBIND_DEBUG + char *uaddr; + #endif ++ int rc = TRUE; + + if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { + svcerr_decode(xprt); +- return (FALSE); ++ rc = FALSE; ++ goto done; + } + + if (!check_access(xprt, PMAPPROC_GETPORT, reg.pm_prog, PMAPVERS)) { + svcerr_weakauth(xprt); +- return FALSE; ++ rc = FALSE; ++ goto done; + } + + #ifdef RPCBIND_DEBUG +@@ -330,21 +345,34 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + pmap_ipprot2netid(reg.pm_prot) ?: "", + port ? udptrans : ""); + +- return (TRUE); ++done: ++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)®)) { ++ if (debugging) { ++ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); ++ if (doabort) { ++ rpcbind_abort(); ++ } ++ } ++ } ++ return (rc); + } + + /* ARGSUSED */ + static bool_t + pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + { ++ int rc = TRUE; ++ + if (!svc_getargs(xprt, (xdrproc_t)xdr_void, NULL)) { + svcerr_decode(xprt); +- return (FALSE); ++ rc = FALSE; ++ goto done; + } + + if (!check_access(xprt, PMAPPROC_DUMP, 0, PMAPVERS)) { + svcerr_weakauth(xprt); +- return FALSE; ++ rc = FALSE; ++ goto done; + } + + if ((!svc_sendreply(xprt, (xdrproc_t) xdr_pmaplist_ptr, +@@ -354,7 +382,17 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + rpcbind_abort(); + } + } +- return (TRUE); ++ ++done: ++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)NULL)) { ++ if (debugging) { ++ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); ++ if (doabort) { ++ rpcbind_abort(); ++ } ++ } ++ } ++ return (rc); + } + + int pmap_netid2ipprot(const char *netid) +diff --git a/src/rpcb_svc.c b/src/rpcb_svc.c +index bd92201..0c22a9d 100644 +--- a/src/rpcb_svc.c ++++ b/src/rpcb_svc.c +@@ -166,7 +166,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp) + svcerr_decode(transp); + if (debugging) + (void) xlog(LOG_DEBUG, "rpcbind: could not decode"); +- return; ++ goto done; + } + + if (rqstp->rq_proc == RPCBPROC_SET +diff --git a/src/rpcb_svc_4.c b/src/rpcb_svc_4.c +index b673452..3e37b54 100644 +--- a/src/rpcb_svc_4.c ++++ b/src/rpcb_svc_4.c +@@ -220,7 +220,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp) + svcerr_decode(transp); + if (debugging) + (void) xlog(LOG_DEBUG, "rpcbind: could not decode\n"); +- return; ++ goto done; + } + + if (rqstp->rq_proc == RPCBPROC_SET +diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c +index ff9ce6b..98ede61 100644 +--- a/src/rpcb_svc_com.c ++++ b/src/rpcb_svc_com.c +@@ -931,6 +931,14 @@ error: + if (call_msg.rm_xid != 0) + (void) free_slot_by_xid(call_msg.rm_xid); + out: ++ if (!svc_freeargs(transp, (xdrproc_t) xdr_rmtcall_args, (char *) &a)) { ++ if (debugging) { ++ (void) xlog(LOG_DEBUG, "unable to free arguments\n"); ++ if (doabort) { ++ rpcbind_abort(); ++ } ++ } ++ } + if (local_uaddr) + free(local_uaddr); + if (buf_alloc) +-- +2.11.0 + diff --git a/buildroot/package/rpcbind/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch b/buildroot/package/rpcbind/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch new file mode 100644 index 0000000..c482af5 --- /dev/null +++ b/buildroot/package/rpcbind/0005-rpcbproc_callit_com-Stop-freeing-a-static-pointer.patch @@ -0,0 +1,98 @@ +From 4e201b75928ff7d4894cd30ab0f5f67b9cd95f5c Mon Sep 17 00:00:00 2001 +From: Steve Dickson +Date: Thu, 18 Jan 2018 17:33:56 +0000 +Subject: [PATCH] rpcbproc_callit_com: Stop freeing a static pointer + +commit 7ea36ee introduced a svc_freeargs() call +that ended up freeing static pointer. + +It turns out the allocations for the rmt_args +is not necessary . The xdr routines (xdr_bytes) will +handle the memory management and the largest +possible message size is UDPMSGSIZE (due to UDP only) +which is smaller than RPC_BUF_MAX + +Signed-off-by: Steve Dickson +(cherry picked from commit 7c7590ad536c0e24bef790cb1e65702fc54db566) +Signed-off-by: Ed Blake +--- + src/rpcb_svc_com.c | 39 ++++++--------------------------------- + 1 file changed, 6 insertions(+), 33 deletions(-) + +diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c +index 0432b6f..64f1104 100644 +--- a/src/rpcb_svc_com.c ++++ b/src/rpcb_svc_com.c +@@ -616,9 +616,9 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + struct netconfig *nconf; + struct netbuf *caller; + struct r_rmtcall_args a; +- char *buf_alloc = NULL, *outbufp; ++ char *outbufp; + char *outbuf_alloc = NULL; +- char buf[RPC_BUF_MAX], outbuf[RPC_BUF_MAX]; ++ char outbuf[RPC_BUF_MAX]; + struct netbuf *na = (struct netbuf *) NULL; + struct rpc_msg call_msg; + int outlen; +@@ -639,36 +639,10 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + } + if (si.si_socktype != SOCK_DGRAM) + return; /* Only datagram type accepted */ +- sendsz = __rpc_get_t_size(si.si_af, si.si_proto, UDPMSGSIZE); +- if (sendsz == 0) { /* data transfer not supported */ +- if (reply_type == RPCBPROC_INDIRECT) +- svcerr_systemerr(transp); +- return; +- } +- /* +- * Should be multiple of 4 for XDR. +- */ +- sendsz = ((sendsz + 3) / 4) * 4; +- if (sendsz > RPC_BUF_MAX) { +-#ifdef notyet +- buf_alloc = alloca(sendsz); /* not in IDR2? */ +-#else +- buf_alloc = malloc(sendsz); +-#endif /* notyet */ +- if (buf_alloc == NULL) { +- if (debugging) +- xlog(LOG_DEBUG, +- "rpcbproc_callit_com: No Memory!\n"); +- if (reply_type == RPCBPROC_INDIRECT) +- svcerr_systemerr(transp); +- return; +- } +- a.rmt_args.args = buf_alloc; +- } else { +- a.rmt_args.args = buf; +- } ++ sendsz = UDPMSGSIZE; + + call_msg.rm_xid = 0; /* For error checking purposes */ ++ memset(&a, 0, sizeof(a)); /* Zero out the input buffer */ + if (!svc_getargs(transp, (xdrproc_t) xdr_rmtcall_args, (char *) &a)) { + if (reply_type == RPCBPROC_INDIRECT) + svcerr_decode(transp); +@@ -708,7 +682,8 @@ rpcbproc_callit_com(struct svc_req *rqstp, SVCXPRT *transp, + if (rbl == (rpcblist_ptr)NULL) { + #ifdef RPCBIND_DEBUG + if (debugging) +- xlog(LOG_DEBUG, "not found\n"); ++ xlog(LOG_DEBUG, "prog %lu vers %lu: not found\n", ++ a.rmt_prog, a.rmt_vers); + #endif + if (reply_type == RPCBPROC_INDIRECT) + svcerr_noprog(transp); +@@ -941,8 +916,6 @@ out: + } + if (local_uaddr) + free(local_uaddr); +- if (buf_alloc) +- free(buf_alloc); + if (outbuf_alloc) + free(outbuf_alloc); + if (na) { +-- +2.11.0 + diff --git a/buildroot/package/rpcbind/0006-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch b/buildroot/package/rpcbind/0006-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch new file mode 100644 index 0000000..11ce6a8 --- /dev/null +++ b/buildroot/package/rpcbind/0006-pmapproc_dump-Fixed-typo-in-memory-leak-patch.patch @@ -0,0 +1,31 @@ +From d3f1f55e50e3c436a2ea91d60da84c3a94e6c53f Mon Sep 17 00:00:00 2001 +From: Steve Dickson +Date: Thu, 18 Jan 2018 17:41:49 +0000 +Subject: [PATCH] pmapproc_dump: Fixed typo in memory leak patch + +commit 7ea36eee introduce a typo that caused +NIS (aka ypbind) to fail. + +Signed-off-by: Steve Dickson +(cherry picked from commit c49a7ea639eb700823e174fd605bbbe183e229aa) +Signed-off-by: Ed Blake +--- + src/pmap_svc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/pmap_svc.c b/src/pmap_svc.c +index bb57b05..ffca7df 100644 +--- a/src/pmap_svc.c ++++ b/src/pmap_svc.c +@@ -384,7 +384,7 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt) + } + + done: +- if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)NULL)) { ++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_void, (char *)NULL)) { + if (debugging) { + (void) xlog(LOG_DEBUG, "unable to free arguments\n"); + if (doabort) { +-- +2.11.0 + diff --git a/buildroot/package/rpcbind/Config.in b/buildroot/package/rpcbind/Config.in new file mode 100644 index 0000000..ced2d40 --- /dev/null +++ b/buildroot/package/rpcbind/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_RPCBIND + bool "rpcbind" + # We really need libtirpc and can't work with the native RPC + # implementation of toolchains. + depends on BR2_TOOLCHAIN_HAS_THREADS # libtirpc + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBTIRPC + help + The rpcbind utility is a server that converts RPC program + numbers into universal addresses. + +comment "rpcbind needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/rpcbind/S30rpcbind b/buildroot/package/rpcbind/S30rpcbind new file mode 100644 index 0000000..532d3f8 --- /dev/null +++ b/buildroot/package/rpcbind/S30rpcbind @@ -0,0 +1,38 @@ +#!/bin/sh +# +# Starts rpcbind. +# + +start() { + printf "Starting rpcbind: " + umask 077 + start-stop-daemon -S -q -p /var/run/rpcbind.pid --exec /usr/bin/rpcbind + echo "OK" +} +stop() { + printf "Stopping rpcbind daemon: " + start-stop-daemon -K -q -p /var/run/rpcbind.pid + echo "OK" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/buildroot/package/rpcbind/rpcbind.hash b/buildroot/package/rpcbind/rpcbind.hash new file mode 100644 index 0000000..5c9ecd1 --- /dev/null +++ b/buildroot/package/rpcbind/rpcbind.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 9897823a9d820ea011d9ea02054d5ab99469b9ca5346265fee380713c8fed27b rpcbind-0.2.3.tar.bz2 diff --git a/buildroot/package/rpcbind/rpcbind.mk b/buildroot/package/rpcbind/rpcbind.mk new file mode 100644 index 0000000..5c216af --- /dev/null +++ b/buildroot/package/rpcbind/rpcbind.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# rpcbind +# +################################################################################ + +RPCBIND_VERSION = 0.2.3 +RPCBIND_SITE = http://downloads.sourceforge.net/project/rpcbind/rpcbind/$(RPCBIND_VERSION) +RPCBIND_SOURCE = rpcbind-$(RPCBIND_VERSION).tar.bz2 +RPCBIND_LICENSE = BSD-3-Clause +RPCBIND_LICENSE_FILES = COPYING + +RPCBIND_CONF_ENV += \ + CFLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" +RPCBIND_DEPENDENCIES += libtirpc host-pkgconf +RPCBIND_CONF_OPTS += --with-rpcuser=root + +ifeq ($(BR2_INIT_SYSTEMD),y) +RPCBIND_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +else +RPCBIND_CONF_OPTS += --with-systemdsystemunitdir=no +endif + +define RPCBIND_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D package/rpcbind/rpcbind.service \ + $(TARGET_DIR)/usr/lib/systemd/system/rpcbind.service + $(INSTALL) -m 0644 -D package/rpcbind/rpcbind.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/rpcbind.socket + mkdir -p $(TARGET_DIR)/etc/systemd/system/sockets.target.wants + ln -fs ../../../../usr/lib/systemd/system/rpcbind.socket \ + $(TARGET_DIR)/etc/systemd/system/sockets.target.wants/rpcbind.socket +endef + +define RPCBIND_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/rpcbind/S30rpcbind \ + $(TARGET_DIR)/etc/init.d/S30rpcbind +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/rpcbind/rpcbind.service b/buildroot/package/rpcbind/rpcbind.service new file mode 100644 index 0000000..b7a32a1 --- /dev/null +++ b/buildroot/package/rpcbind/rpcbind.service @@ -0,0 +1,10 @@ +[Unit] +Description=RPC bind service +Requires=rpcbind.socket + +[Service] +Type=forking +ExecStart=/usr/bin/rpcbind + +[Install] +Also=rpcbind.socket diff --git a/buildroot/package/rpcbind/rpcbind.socket b/buildroot/package/rpcbind/rpcbind.socket new file mode 100644 index 0000000..d63c1d9 --- /dev/null +++ b/buildroot/package/rpcbind/rpcbind.socket @@ -0,0 +1,8 @@ +[Unit] +Description=RPCbind Server Activation Socket + +[Socket] +ListenStream=/var/run/rpcbind.sock + +[Install] +WantedBy=sockets.target diff --git a/buildroot/package/rpi-bt-firmware/Config.in b/buildroot/package/rpi-bt-firmware/Config.in new file mode 100644 index 0000000..dfc1cee --- /dev/null +++ b/buildroot/package/rpi-bt-firmware/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_RPI_BT_FIRMWARE + bool "rpi-bt-firmware" + depends on BR2_arm || BR2_aarch64 + help + Raspberry Pi 3 and Zero W Broadcom BCM43438 Bluetooth module + firmware. + + https://aur.archlinux.org/packages/pi-bluetooth diff --git a/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.hash b/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.hash new file mode 100644 index 0000000..f1d06e8 --- /dev/null +++ b/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 5d9c9364277414ffd67b4a266cdf88e92f28eb937e5a413750e87b7a94161bef rpi-bt-firmware-a439f892bf549ddfefa9ba7ad1999cc515f233bf.tar.gz diff --git a/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.mk b/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.mk new file mode 100644 index 0000000..255da19 --- /dev/null +++ b/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# rpi-bt-firmware +# +################################################################################ + +RPI_BT_FIRMWARE_VERSION = a439f892bf549ddfefa9ba7ad1999cc515f233bf +RPI_BT_FIRMWARE_SITE = https://aur.archlinux.org/pi-bluetooth.git +RPI_BT_FIRMWARE_SITE_METHOD = git +RPI_BT_FIRMWARE_LICENSE = PROPRIETARY +RPI_BT_FIRMWARE_LICENSE_FILES = LICENCE.broadcom_bcm43xx + +# The BlueZ hciattach utility looks for firmware in /etc/firmware. Add a +# compatibility symlink. +define RPI_BT_FIRMWARE_INSTALL_TARGET_CMDS + ln -sf ../lib/firmware $(TARGET_DIR)/etc/firmware + $(INSTALL) -D -m 0644 $(@D)/BCM43430A1.hcd \ + $(TARGET_DIR)/lib/firmware/BCM43430A1.hcd +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rpi-firmware/Config.in b/buildroot/package/rpi-firmware/Config.in new file mode 100644 index 0000000..0ebbe7a --- /dev/null +++ b/buildroot/package/rpi-firmware/Config.in @@ -0,0 +1,86 @@ +config BR2_PACKAGE_RPI_FIRMWARE + bool "rpi-firmware" + depends on BR2_arm || BR2_aarch64 + help + RaspberryPi Firmware + + Pre-compiled binaries of the current bootloader and GPU + firmware + + https://github.com/raspberrypi/firmware + +if BR2_PACKAGE_RPI_FIRMWARE + +choice + bool "Firmware to boot" + default BR2_PACKAGE_RPI_FIRMWARE_DEFAULT + help + There are three different firmware files: + - the default firmware, that enables standard GPU + features; + - the extended firmware, that enables additional GPU + features (eg. more audio/video codecs); + - the cut-down firmware, for emergency situations, with + only features required to boot a Linux kernel. + +config BR2_PACKAGE_RPI_FIRMWARE_DEFAULT + bool "default" + help + The default firmware, that enables standard GPU features. + +config BR2_PACKAGE_RPI_FIRMWARE_X + bool "extended ('x', more codecs)" + help + The extended firmware, that enables additional GPU features + (eg. more audio/video codecs). + +config BR2_PACKAGE_RPI_FIRMWARE_CD + bool "cut-down ('cd', emergency)" + help + The cut-down firmware, for emergency situations, with only + features required to boot a Linux kernel. + +endchoice + +config BR2_PACKAGE_RPI_FIRMWARE_BOOT + string + default "" if BR2_PACKAGE_RPI_FIRMWARE_DEFAULT + default "_x" if BR2_PACKAGE_RPI_FIRMWARE_X + default "_cd" if BR2_PACKAGE_RPI_FIRMWARE_CD + +config BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS + bool "Install Device Tree Blobs (DTBs)" + default y + depends on !BR2_LINUX_KERNEL_DTS_SUPPORT + help + If you are using a Linux kernel <= 3.18, you should say 'y' + here. + + If you are using a Linux kernel >= 3.19, you should say 'n' + here, and enable BR2_LINUX_KERNEL_DTS_SUPPORT to let the + kernel build the DTB. + +config BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS + bool "Install DTB overlays" + default y + depends on BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS \ + || BR2_LINUX_KERNEL_DTS_SUPPORT + help + Say 'y' here if you need to load one or more of the DTB + overlays, to support HATs (Hardware Attached on Top, add-on + modules). + +config BR2_PACKAGE_RPI_FIRMWARE_INSTALL_VCDBG + bool "vcdbg" + depends on BR2_arm # prebuilt arm binary, rpi-userland + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_INSTALL_LIBSTDCPP # rpi-userland + select BR2_PACKAGE_RPI_USERLAND + help + Install vcdbg, to help debug communication with the GPU. + +comment "vcdbg needs a glibc toolchain w/ C++" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP + +endif # BR2_PACKAGE_RPI_FIRMWARE diff --git a/buildroot/package/rpi-firmware/cmdline.txt b/buildroot/package/rpi-firmware/cmdline.txt new file mode 100644 index 0000000..155a546 --- /dev/null +++ b/buildroot/package/rpi-firmware/cmdline.txt @@ -0,0 +1 @@ +root=/dev/mmcblk0p2 rootwait console=tty1 console=ttyAMA0,115200 diff --git a/buildroot/package/rpi-firmware/config.txt b/buildroot/package/rpi-firmware/config.txt new file mode 100644 index 0000000..58cc966 --- /dev/null +++ b/buildroot/package/rpi-firmware/config.txt @@ -0,0 +1,20 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using a post-build script. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 diff --git a/buildroot/package/rpi-firmware/rpi-firmware.hash b/buildroot/package/rpi-firmware/rpi-firmware.hash new file mode 100644 index 0000000..833a7fb --- /dev/null +++ b/buildroot/package/rpi-firmware/rpi-firmware.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 0451e1a843bf02df81126a1625d9a15dfdf19dcb2f9e95b0613a63e59fd31ca8 rpi-firmware-2067241bc7cdf238fdeab7f5a3c22faa57dd5617.tar.gz diff --git a/buildroot/package/rpi-firmware/rpi-firmware.mk b/buildroot/package/rpi-firmware/rpi-firmware.mk new file mode 100644 index 0000000..22eaaa2 --- /dev/null +++ b/buildroot/package/rpi-firmware/rpi-firmware.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# rpi-firmware +# +################################################################################ + +RPI_FIRMWARE_VERSION = 2067241bc7cdf238fdeab7f5a3c22faa57dd5617 +RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) +RPI_FIRMWARE_LICENSE = BSD-3-Clause +RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom +RPI_FIRMWARE_INSTALL_IMAGES = YES + +ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS),y) +define RPI_FIRMWARE_INSTALL_DTB + $(INSTALL) -D -m 0644 $(@D)/boot/bcm2708-rpi-b.dtb $(BINARIES_DIR)/rpi-firmware/bcm2708-rpi-b.dtb + $(INSTALL) -D -m 0644 $(@D)/boot/bcm2708-rpi-b-plus.dtb $(BINARIES_DIR)/rpi-firmware/bcm2708-rpi-b-plus.dtb + $(INSTALL) -D -m 0644 $(@D)/boot/bcm2709-rpi-2-b.dtb $(BINARIES_DIR)/rpi-firmware/bcm2709-rpi-2-b.dtb + $(INSTALL) -D -m 0644 $(@D)/boot/bcm2710-rpi-3-b.dtb $(BINARIES_DIR)/rpi-firmware/bcm2710-rpi-3-b.dtb +endef +endif + +ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS),y) +define RPI_FIRMWARE_INSTALL_DTB_OVERLAYS + for ovldtb in $(@D)/boot/overlays/*.dtbo; do \ + $(INSTALL) -D -m 0644 $${ovldtb} $(BINARIES_DIR)/rpi-firmware/overlays/$${ovldtb##*/} || exit 1; \ + done +endef +endif + +ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_VCDBG),y) +define RPI_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0700 $(@D)/$(if BR2_ARM_EABIHF,hardfp/)opt/vc/bin/vcdbg \ + $(TARGET_DIR)/usr/sbin/vcdbg + $(INSTALL) -D -m 0644 $(@D)/$(if BR2_ARM_EABIHF,hardfp/)opt/vc/lib/libelftoolchain.so \ + $(TARGET_DIR)/usr/lib/libelftoolchain.so +endef +endif # INSTALL_VCDBG + +define RPI_FIRMWARE_INSTALL_IMAGES_CMDS + $(INSTALL) -D -m 0644 $(@D)/boot/bootcode.bin $(BINARIES_DIR)/rpi-firmware/bootcode.bin + $(INSTALL) -D -m 0644 $(@D)/boot/start$(BR2_PACKAGE_RPI_FIRMWARE_BOOT).elf $(BINARIES_DIR)/rpi-firmware/start.elf + $(INSTALL) -D -m 0644 $(@D)/boot/fixup$(BR2_PACKAGE_RPI_FIRMWARE_BOOT).dat $(BINARIES_DIR)/rpi-firmware/fixup.dat + $(INSTALL) -D -m 0644 package/rpi-firmware/config.txt $(BINARIES_DIR)/rpi-firmware/config.txt + $(INSTALL) -D -m 0644 package/rpi-firmware/cmdline.txt $(BINARIES_DIR)/rpi-firmware/cmdline.txt + $(RPI_FIRMWARE_INSTALL_DTB) + $(RPI_FIRMWARE_INSTALL_DTB_OVERLAYS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch b/buildroot/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch new file mode 100644 index 0000000..fb87337 --- /dev/null +++ b/buildroot/package/rpi-userland/0001-Add-.pc-files-for-the-OpenGLESv2-EGL-and-bcm_host-li.patch @@ -0,0 +1,107 @@ +From 4824be8986c2b6ef0b0bd2b32bc99c4ba6406640 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 24 Jan 2015 19:44:14 +0100 +Subject: [PATCH] Add .pc files for the OpenGLESv2, EGL and bcm_host libraries + +Those pkg-config files make it easier for Qt5 to find those libraries +and the appropriate link flags. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: "Yann E. MORIN" + +[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163] +Signed-off-by: Peter Seiderer +--- + host_applications/linux/libs/bcm_host/CMakeLists.txt | 4 ++++ + host_applications/linux/libs/bcm_host/bcm_host.pc.in | 10 ++++++++++ + interface/khronos/CMakeLists.txt | 8 ++++++++ + interface/khronos/egl/egl.pc.in | 11 +++++++++++ + interface/khronos/glxx/glesv2.pc.in | 10 ++++++++++ + 5 files changed, 43 insertions(+) + create mode 100644 host_applications/linux/libs/bcm_host/bcm_host.pc.in + create mode 100644 interface/khronos/egl/egl.pc.in + create mode 100644 interface/khronos/glxx/glesv2.pc.in + +diff --git a/host_applications/linux/libs/bcm_host/CMakeLists.txt b/host_applications/linux/libs/bcm_host/CMakeLists.txt +index 1edf50a..1f29ead 100644 +--- a/host_applications/linux/libs/bcm_host/CMakeLists.txt ++++ b/host_applications/linux/libs/bcm_host/CMakeLists.txt +@@ -20,3 +20,7 @@ target_link_libraries(bcm_host vcos vchostif) + + install(TARGETS bcm_host DESTINATION lib) + ++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bcm_host.pc.in" ++ "${CMAKE_CURRENT_BINARY_DIR}/bcm_host.pc" @ONLY) ++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/bcm_host.pc" ++ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") +diff --git a/host_applications/linux/libs/bcm_host/bcm_host.pc.in b/host_applications/linux/libs/bcm_host/bcm_host.pc.in +new file mode 100644 +index 0000000..d40d350 +--- /dev/null ++++ b/host_applications/linux/libs/bcm_host/bcm_host.pc.in +@@ -0,0 +1,10 @@ ++prefix=/usr ++exec_prefix=${prefix} ++libdir=${exec_prefix}/lib ++includedir=${prefix}/include ++ ++Name: bcm_host ++Description: Broadcom VideoCore host API library ++Version: 1 ++Libs: -L${libdir} -lbcm_host -lvcos -lvchiq_arm ++Cflags: -I${includedir} -I${includedir}/interface/vmcs_host/linux -I${includedir}/interface/vcos/pthreads -DUSE_VCHIQ_ARM +diff --git a/interface/khronos/CMakeLists.txt b/interface/khronos/CMakeLists.txt +index 4231af4..2844ebd 100644 +--- a/interface/khronos/CMakeLists.txt ++++ b/interface/khronos/CMakeLists.txt +@@ -74,6 +74,14 @@ target_link_libraries(OpenVG EGL) + + install(TARGETS EGL GLESv2 OpenVG WFC khrn_client DESTINATION lib) + install(TARGETS EGL_static GLESv2_static khrn_static DESTINATION lib) ++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/egl/egl.pc.in" ++ "${CMAKE_CURRENT_BINARY_DIR}/egl/egl.pc" @ONLY) ++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/egl/egl.pc" ++ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") ++configure_file("${CMAKE_CURRENT_SOURCE_DIR}/glxx/glesv2.pc.in" ++ "${CMAKE_CURRENT_BINARY_DIR}/glxx/glesv2.pc" @ONLY) ++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glxx/glesv2.pc" ++ DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") + + # recommended names to use to avoid conflicts with mesa libs + add_library(brcmEGL ${SHARED} ${EGL_SOURCE}) +diff --git a/interface/khronos/egl/egl.pc.in b/interface/khronos/egl/egl.pc.in +new file mode 100644 +index 0000000..5868706 +--- /dev/null ++++ b/interface/khronos/egl/egl.pc.in +@@ -0,0 +1,11 @@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++exec_prefix=${prefix} ++libdir=${exec_prefix}/lib ++includedir=${prefix}/include ++ ++Name: egl ++Description: RasberryPi implementation of EGL ++Version: 10 ++Libs: -L${libdir} -lEGL -lGLESv2 -lbcm_host -lvchostif ++Cflags: -I${includedir}/ -I${includedir}/interface/vcos/pthreads/ \ ++ -I${includedir}/interface/vmcs_host/linux/ +diff --git a/interface/khronos/glxx/glesv2.pc.in b/interface/khronos/glxx/glesv2.pc.in +new file mode 100644 +index 0000000..2f58eed +--- /dev/null ++++ b/interface/khronos/glxx/glesv2.pc.in +@@ -0,0 +1,10 @@ ++prefix=@CMAKE_INSTALL_PREFIX@ ++exec_prefix=${prefix} ++libdir=${exec_prefix}/lib ++includedir=${prefix}/include ++ ++Name: glesv2 ++Description: RasberryPi implementation of OpenGL ESv2 ++Version: 2.0 ++Libs: -L${libdir} -lGLESv2 ++Cflags: -I${includedir}/ +-- +2.8.1 + diff --git a/buildroot/package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch b/buildroot/package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch new file mode 100644 index 0000000..0e9dede --- /dev/null +++ b/buildroot/package/rpi-userland/0002-interface-remove-faulty-assert-to-make-weston-happy-.patch @@ -0,0 +1,35 @@ +From a126ee5a3235792abb58daffd9d4b3e1012f675b Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 24 Jan 2015 22:07:19 +0100 +Subject: [PATCH] interface: remove faulty assert() to make weston happy at + runtime + +This was removed after a discussion on IRC with the weston guys +('daniels' on irc.freenode.net/#wayland). + +Upstream status: no, will be pushed by weston guys later. +If not, I'll do it. + +Signed-off-by: "Yann E. MORIN" + +[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163] +Signed-off-by: Peter Seiderer +--- + interface/vmcs_host/vc_vchi_dispmanx.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/interface/vmcs_host/vc_vchi_dispmanx.c b/interface/vmcs_host/vc_vchi_dispmanx.c +index 133e86d..0c7873c 100755 +--- a/interface/vmcs_host/vc_vchi_dispmanx.c ++++ b/interface/vmcs_host/vc_vchi_dispmanx.c +@@ -1306,7 +1306,6 @@ static void *dispmanx_notify_func( void *arg ) { + // Decrement the use count - the corresponding "use" is in vc_dispmanx_update_submit. + vchi_service_release(dispmanx_client.notify_handle[0]); + if (dispmanx_client.update_callback ) { +- vcos_assert( dispmanx_client.pending_update_handle == handle); + dispmanx_client.update_callback(handle, dispmanx_client.update_callback_param); + } + } else { +-- +2.8.1 + diff --git a/buildroot/package/rpi-userland/0003-Disable-Werror-everywhere.patch b/buildroot/package/rpi-userland/0003-Disable-Werror-everywhere.patch new file mode 100644 index 0000000..64ae8ed --- /dev/null +++ b/buildroot/package/rpi-userland/0003-Disable-Werror-everywhere.patch @@ -0,0 +1,171 @@ +From 67924a43d52862a7b4c9076d49071449313fea85 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Thu, 22 Sep 2016 22:59:11 +0200 +Subject: [PATCH] Disable Werror everywhere + +With gcc-5.1, some constructs that were previously accepted (but wrong) +are now considered warnings, and thus -Werror makes them errors. + +Ditch -Werror altoghether. + +Signed-off-by: "Yann E. MORIN" + +[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163] +Signed-off-by: Peter Seiderer +--- + host_applications/android/apps/vidtex/CMakeLists.txt | 2 +- + host_applications/linux/apps/gencmd/CMakeLists.txt | 2 +- + host_applications/linux/apps/raspicam/CMakeLists.txt | 2 +- + host_applications/linux/apps/smem/CMakeLists.txt | 2 +- + host_applications/linux/libs/bcm_host/CMakeLists.txt | 2 +- + host_applications/linux/libs/sm/CMakeLists.txt | 2 +- + interface/mmal/CMakeLists.txt | 2 +- + interface/vcos/CMakeLists.txt | 2 +- + interface/vcos/pthreads/CMakeLists.txt | 2 +- + interface/vmcs_host/CMakeLists.txt | 2 +- + interface/vmcs_host/linux/vcfiled/CMakeLists.txt | 2 +- + 11 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/host_applications/android/apps/vidtex/CMakeLists.txt b/host_applications/android/apps/vidtex/CMakeLists.txt +index 1f705ef..37d037d 100644 +--- a/host_applications/android/apps/vidtex/CMakeLists.txt ++++ b/host_applications/android/apps/vidtex/CMakeLists.txt +@@ -1,6 +1,6 @@ + cmake_minimum_required(VERSION 2.8) + +-SET(COMPILE_DEFINITIONS -Werror -Wall) ++SET(COMPILE_DEFINITIONS -Wall) + include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/libs/bcm_host/include) + + set (VIDTEX_SOURCES +diff --git a/host_applications/linux/apps/gencmd/CMakeLists.txt b/host_applications/linux/apps/gencmd/CMakeLists.txt +index f95d1a1..034bf20 100644 +--- a/host_applications/linux/apps/gencmd/CMakeLists.txt ++++ b/host_applications/linux/apps/gencmd/CMakeLists.txt +@@ -4,7 +4,7 @@ if (WIN32) + set(VCOS_PLATFORM win32) + else () + set(VCOS_PLATFORM pthreads) +- add_definitions(-Wall -Werror) ++ add_definitions(-Wall ) + endif () + + include_directories( ../../../.. +diff --git a/host_applications/linux/apps/raspicam/CMakeLists.txt b/host_applications/linux/apps/raspicam/CMakeLists.txt +index 2afc145..04e446f 100644 +--- a/host_applications/linux/apps/raspicam/CMakeLists.txt ++++ b/host_applications/linux/apps/raspicam/CMakeLists.txt +@@ -1,7 +1,7 @@ + + # raspistill/raspivid/raspiyuv + +-SET(COMPILE_DEFINITIONS -Werror) ++SET(COMPILE_DEFINITIONS ) + + include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/libs/bcm_host/include) + include_directories(${PROJECT_SOURCE_DIR}/host_applications/linux/apps/raspicam/) +diff --git a/host_applications/linux/apps/smem/CMakeLists.txt b/host_applications/linux/apps/smem/CMakeLists.txt +index 0fa8328..f0d1e77 100644 +--- a/host_applications/linux/apps/smem/CMakeLists.txt ++++ b/host_applications/linux/apps/smem/CMakeLists.txt +@@ -4,7 +4,7 @@ get_filename_component (VIDEOCORE_ROOT ../../../.. ABSOLUTE) + include (${VIDEOCORE_ROOT}/makefiles/cmake/global_settings.cmake) + + if (NOT WIN32) +- add_definitions(-Wall -Werror) ++ add_definitions(-Wall ) + endif () + + include_directories ( +diff --git a/host_applications/linux/libs/bcm_host/CMakeLists.txt b/host_applications/linux/libs/bcm_host/CMakeLists.txt +index 1f29ead..fb78cea 100644 +--- a/host_applications/linux/libs/bcm_host/CMakeLists.txt ++++ b/host_applications/linux/libs/bcm_host/CMakeLists.txt +@@ -3,7 +3,7 @@ if (WIN32) + set(VCOS_PLATFORM win32) + else () + set(VCOS_PLATFORM pthreads) +- add_definitions(-Wall -Werror) ++ add_definitions(-Wall ) + endif () + + include_directories( ../../../.. +diff --git a/host_applications/linux/libs/sm/CMakeLists.txt b/host_applications/linux/libs/sm/CMakeLists.txt +index c6bf764..4bca0b0 100644 +--- a/host_applications/linux/libs/sm/CMakeLists.txt ++++ b/host_applications/linux/libs/sm/CMakeLists.txt +@@ -3,7 +3,7 @@ if (WIN32) + set(VCOS_PLATFORM win32) + else () + set(VCOS_PLATFORM pthreads) +- add_definitions(-Wall -Werror) ++ add_definitions(-Wall ) + endif () + + include_directories( ../../../.. +diff --git a/interface/mmal/CMakeLists.txt b/interface/mmal/CMakeLists.txt +index 37ae757..78b24a9 100644 +--- a/interface/mmal/CMakeLists.txt ++++ b/interface/mmal/CMakeLists.txt +@@ -3,7 +3,7 @@ if (NOT DEFINED LIBRARY_TYPE) + set(LIBRARY_TYPE SHARED) + endif (NOT DEFINED LIBRARY_TYPE) + +-add_definitions(-Wall -Werror) ++add_definitions(-Wall ) + + add_library(mmal SHARED util/mmal_util.c) + +diff --git a/interface/vcos/CMakeLists.txt b/interface/vcos/CMakeLists.txt +index 23a8d72..988b104 100644 +--- a/interface/vcos/CMakeLists.txt ++++ b/interface/vcos/CMakeLists.txt +@@ -43,7 +43,7 @@ foreach (header ${HEADERS}) + endforeach () + + if (CMAKE_COMPILER_IS_GNUCC) +- add_definitions (-ggdb -Werror -Wall) ++ add_definitions (-ggdb -Wall) + endif () + + if (CMAKE_COMPILER_2005) +diff --git a/interface/vcos/pthreads/CMakeLists.txt b/interface/vcos/pthreads/CMakeLists.txt +index 1d81ca3..b35cd8e 100644 +--- a/interface/vcos/pthreads/CMakeLists.txt ++++ b/interface/vcos/pthreads/CMakeLists.txt +@@ -1,7 +1,7 @@ + # MSVC5 does not fully support C99, enabling declaration-after-statement + # warnings allows a common MSVC5 build error to be detected in Linux builds. + if (CMAKE_COMPILER_IS_GNUCC) +- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wdeclaration-after-statement") ++ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wdeclaration-after-statement") + add_definitions (-D_GNU_SOURCE) + endif () + +diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt +index 0b3adc9..c5156d8 100755 +--- a/interface/vmcs_host/CMakeLists.txt ++++ b/interface/vmcs_host/CMakeLists.txt +@@ -2,7 +2,7 @@ + # interface/vmcs_host + + # not working in release build +-# add_definitions(-Werror) ++# add_definitions() + + # vc_vchi_gencmd.c has a type-punning problem in vc_gencmd_read_response + add_definitions(-fno-strict-aliasing) +diff --git a/interface/vmcs_host/linux/vcfiled/CMakeLists.txt b/interface/vmcs_host/linux/vcfiled/CMakeLists.txt +index aed0e83..d834b3f 100644 +--- a/interface/vmcs_host/linux/vcfiled/CMakeLists.txt ++++ b/interface/vmcs_host/linux/vcfiled/CMakeLists.txt +@@ -1,5 +1,5 @@ + +-add_definitions(-Werror) ++add_definitions() + + # vcfiled - serves files to videocore. used for media handlers from + # OpenMAX/IL and loading VLLs. +-- +2.8.1 + diff --git a/buildroot/package/rpi-userland/0004-host-applications-disable-missing-applications.patch b/buildroot/package/rpi-userland/0004-host-applications-disable-missing-applications.patch new file mode 100644 index 0000000..0803912 --- /dev/null +++ b/buildroot/package/rpi-userland/0004-host-applications-disable-missing-applications.patch @@ -0,0 +1,34 @@ +From c8d2c332da2a03ed80d62628bbf54187a66f49b6 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Fri, 24 Jul 2015 20:20:33 +0200 +Subject: [PATCH] host-applications: disable missing applications + +Those applications are missing from the public rpi-firmware package, so +do not even try to build them. + +Signed-off-by: "Yann E. MORIN" + +[Rebased for rpi-userland-a1b89e91f393c7134b4cdc36431f863bb3333163] +Signed-off-by: Peter Seiderer +--- + host_applications/linux/CMakeLists.txt | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/host_applications/linux/CMakeLists.txt b/host_applications/linux/CMakeLists.txt +index 5a648e7..83bb66e 100644 +--- a/host_applications/linux/CMakeLists.txt ++++ b/host_applications/linux/CMakeLists.txt +@@ -12,10 +12,7 @@ add_subdirectory(apps/dtoverlay) + add_subdirectory(apps/dtmerge) + + if(ALL_APPS) +- add_subdirectory(apps/vcdbg) +- add_subdirectory(libs/elftoolchain) + # add_subdirectory(apps/smct) +- add_subdirectory(apps/edid_parser) + add_subdirectory(apps/hello_pi) + endif() + +-- +2.8.1 + diff --git a/buildroot/package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch b/buildroot/package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch new file mode 100644 index 0000000..f028f67 --- /dev/null +++ b/buildroot/package/rpi-userland/0005-dtmerge-add-missing-include-for-va_list.patch @@ -0,0 +1,34 @@ +From 1ffed0e8601afb7e65545bd545772edd0fccc404 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sat, 23 Apr 2016 17:48:13 +0200 +Subject: [PATCH] dtmerge: add missing include for va_list +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes compile error with uclibc-1.0.14: + + In file included from rpi-userland-52eca998aa43f278314579dba4798a3fe1da46c3/host_applications/linux/apps/dtmerge/dtmerge.c:32:0: + rpi-userland-52eca998aa43f278314579dba4798a3fe1da46c3/helpers/dtoverlay/dtoverlay.h:65:54: error: unknown type name ‘va_list’ + const char *fmt, va_list args); + +Signed-off-by: Peter Seiderer +--- + host_applications/linux/apps/dtmerge/dtmerge.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/host_applications/linux/apps/dtmerge/dtmerge.c b/host_applications/linux/apps/dtmerge/dtmerge.c +index 9243da1..2ac8d39 100644 +--- a/host_applications/linux/apps/dtmerge/dtmerge.c ++++ b/host_applications/linux/apps/dtmerge/dtmerge.c +@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include + #include + #include ++#include + + #include "dtoverlay.h" + +-- +2.8.1 + diff --git a/buildroot/package/rpi-userland/0006-host-apps-dtoverlay-don-t-install-script-in-random-l.patch b/buildroot/package/rpi-userland/0006-host-apps-dtoverlay-don-t-install-script-in-random-l.patch new file mode 100644 index 0000000..2900eb7 --- /dev/null +++ b/buildroot/package/rpi-userland/0006-host-apps-dtoverlay-don-t-install-script-in-random-l.patch @@ -0,0 +1,45 @@ +From a5a4e361c8116ca9228a896f672102c02be56bb7 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 7 Mar 2017 22:01:39 +0100 +Subject: [PATCH] host-apps/dtoverlay: don't install script in random location + +Currently, we add a custom command that installs the dtoverlay pre/post +scripts in ${CMAKE_BINARY_DIR}/../../bin + +However: + + - this points outside of the package directory.; it even points two + directories higher; + + - when doing cross-compilation, this is definitely not the place where + the /bin directory really is; + + - the scripts are already properly installed without this code. + +Remove that code, it serves no purpose and breaks for cross-compilation. + +Signed-off-by: "Yann E. MORIN" +--- + host_applications/linux/apps/dtoverlay/CMakeLists.txt | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/host_applications/linux/apps/dtoverlay/CMakeLists.txt b/host_applications/linux/apps/dtoverlay/CMakeLists.txt +index 9009200..dd48d83 100755 +--- a/host_applications/linux/apps/dtoverlay/CMakeLists.txt ++++ b/host_applications/linux/apps/dtoverlay/CMakeLists.txt +@@ -22,12 +22,4 @@ add_custom_command(TARGET dtoverlay POST_BUILD COMMAND ln;-sf;dtoverlay;dtparam) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dtparam DESTINATION bin) + + set(DTOVERLAY_SCRIPTS dtoverlay-pre dtoverlay-post) +-foreach(_script ${DTOVERLAY_SCRIPTS}) +- add_custom_command( +- TARGET dtoverlay +- COMMAND ${CMAKE_COMMAND} +- -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${_script} +- ${CMAKE_BINARY_DIR}/../../bin/${_script} +- ) +-endforeach() + install(PROGRAMS ${DTOVERLAY_SCRIPTS} DESTINATION bin) +-- +2.7.4 + diff --git a/buildroot/package/rpi-userland/Config.in b/buildroot/package/rpi-userland/Config.in new file mode 100644 index 0000000..8d349f2 --- /dev/null +++ b/buildroot/package/rpi-userland/Config.in @@ -0,0 +1,52 @@ +config BR2_PACKAGE_RPI_USERLAND + bool "rpi-userland" + depends on BR2_arm + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_LIBOPENVG + select BR2_PACKAGE_HAS_LIBOPENMAX + help + Raspberry Pi Userland contains the necessary library to use + the VideoCore driver. + + Includes source for the ARM side code to interface to: EGL, + mmal, GLESv2, vcos, openmaxil, vchiq_arm, bcm_host, WFC, + OpenVG. + + https://github.com/raspberrypi/userland/ + +if BR2_PACKAGE_RPI_USERLAND + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "rpi-userland" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "rpi-userland" + +config BR2_PACKAGE_PROVIDES_LIBOPENVG + default "rpi-userland" + +config BR2_PACKAGE_PROVIDES_LIBOPENMAX + default "rpi-userland" + +config BR2_PACKAGE_RPI_USERLAND_START_VCFILED + bool "Start vcfiled" + depends on BR2_INIT_SYSV || BR2_INIT_BUSYBOX + help + vcfiled is a daemon serving files to VideoCore from the host + file system. + +config BR2_PACKAGE_RPI_USERLAND_HELLO + bool "hello_pi examples" + help + Install the hello-pi examples to test the HW (GPU, camera...) + +endif + +comment "rpi-userland needs a toolchain w/ C++, threads, dynamic library" + depends on BR2_arm + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/rpi-userland/S94vcfiled b/buildroot/package/rpi-userland/S94vcfiled new file mode 100755 index 0000000..4d27b91 --- /dev/null +++ b/buildroot/package/rpi-userland/S94vcfiled @@ -0,0 +1,47 @@ +#!/bin/sh + +NAME=vcfiled +DESC="VideoCore file server daemon $NAME" +DAEMON="/usr/sbin/$NAME" +DAEMON_ARGS="" +CFGFILE="/etc/default/$NAME" +PIDFILE="/var/run/$NAME.pid" + +# Read configuration variable file if it is present +[ -r "$CFGFILE" ] && . "$CFGFILE" + +start() +{ + printf "Starting $DESC: " + start-stop-daemon -S -q -p "$PIDFILE" -x "$DAEMON" -- $DAEMON_ARGS && + echo "done" || echo "failed" +} + +stop() +{ + printf "Stopping $DESC: " + if start-stop-daemon -K -q -R TERM/30/KILL/5 -p "$PIDFILE" -n "$NAME"; then + # This daemon does not remove its PID file when it exits. + rm -f "$PIDFILE" + echo "done" + else + echo "failed" + fi +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" >&2 + exit 1 + ;; +esac diff --git a/buildroot/package/rpi-userland/rpi-userland.hash b/buildroot/package/rpi-userland/rpi-userland.hash new file mode 100644 index 0000000..f1bb5e6 --- /dev/null +++ b/buildroot/package/rpi-userland/rpi-userland.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 8ed745ea28ef9d5e6d2e5534acabe1ea1a6c6be9bab7f683527ce5da5a3f77cb rpi-userland-a7976021a89451de0d008aa48f16c4e88872899b.tar.gz diff --git a/buildroot/package/rpi-userland/rpi-userland.mk b/buildroot/package/rpi-userland/rpi-userland.mk new file mode 100644 index 0000000..a798795 --- /dev/null +++ b/buildroot/package/rpi-userland/rpi-userland.mk @@ -0,0 +1,64 @@ +################################################################################ +# +# rpi-userland +# +################################################################################ + +RPI_USERLAND_VERSION = a7976021a89451de0d008aa48f16c4e88872899b +RPI_USERLAND_SITE = $(call github,raspberrypi,userland,$(RPI_USERLAND_VERSION)) +RPI_USERLAND_LICENSE = BSD-3-Clause +RPI_USERLAND_LICENSE_FILES = LICENCE +RPI_USERLAND_INSTALL_STAGING = YES +RPI_USERLAND_CONF_OPTS = -DVMCS_INSTALL_PREFIX=/usr \ + -DCMAKE_C_FLAGS="$(TARGET_CFLAGS) \ + -DVCFILED_LOCKFILE=\\\"/var/run/vcfiled.pid\\\"" + +RPI_USERLAND_PROVIDES = libegl libgles libopenmax libopenvg + +ifeq ($(BR2_PACKAGE_RPI_USERLAND_START_VCFILED),y) +define RPI_USERLAND_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/rpi-userland/S94vcfiled \ + $(TARGET_DIR)/etc/init.d/S94vcfiled +endef +define RPI_USERLAND_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/rpi-userland/vcfiled.service \ + $(TARGET_DIR)/usr/lib/systemd/system/vcfiled.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/vcfiled.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/vcfiled.service +endef +endif + +ifeq ($(BR2_PACKAGE_RPI_USERLAND_HELLO),y) + +RPI_USERLAND_CONF_OPTS += -DALL_APPS=ON + +define RPI_USERLAND_EXTRA_LIBS_TARGET + $(INSTALL) -m 0644 -D \ + $(@D)/build/lib/libilclient.so \ + $(TARGET_DIR)/usr/lib/libilclient.so +endef +RPI_USERLAND_POST_INSTALL_TARGET_HOOKS += RPI_USERLAND_EXTRA_LIBS_TARGET + +define RPI_USERLAND_EXTRA_LIBS_STAGING + $(INSTALL) -m 0644 -D \ + $(@D)/build/lib/libilclient.so \ + $(STAGING_DIR)/usr/lib/libilclient.so +endef +RPI_USERLAND_POST_INSTALL_STAGING_HOOKS += RPI_USERLAND_EXTRA_LIBS_STAGING + +else + +RPI_USERLAND_CONF_OPTS += -DALL_APPS=OFF + +endif # BR2_PACKAGE_RPI_USERLAND_HELLO + +define RPI_USERLAND_POST_TARGET_CLEANUP + rm -f $(TARGET_DIR)/etc/init.d/vcfiled + rm -f $(TARGET_DIR)/usr/share/install/vcfiled + rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/usr/share/install + rm -Rf $(TARGET_DIR)/usr/src +endef +RPI_USERLAND_POST_INSTALL_TARGET_HOOKS += RPI_USERLAND_POST_TARGET_CLEANUP + +$(eval $(cmake-package)) diff --git a/buildroot/package/rpi-userland/vcfiled.service b/buildroot/package/rpi-userland/vcfiled.service new file mode 100644 index 0000000..b09aa62 --- /dev/null +++ b/buildroot/package/rpi-userland/vcfiled.service @@ -0,0 +1,9 @@ +[Unit] +Description=VideoCore file server daemon + +[Service] +ExecStart=/usr/sbin/vcfiled --foreground +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/rpi-wifi-firmware/Config.in b/buildroot/package/rpi-wifi-firmware/Config.in new file mode 100644 index 0000000..2c87c75 --- /dev/null +++ b/buildroot/package/rpi-wifi-firmware/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_RPI_WIFI_FIRMWARE + bool "rpi-wifi-firmware" + depends on BR2_arm || BR2_aarch64 + select BR2_PACKAGE_LINUX_FIRMWARE + select BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX # runtime + help + Raspberry Pi 3 and Zero W Broadcom BCM43430 wifi module + NVRAM data. + + https://github.com/RPi-Distro/firmware-nonfree/ diff --git a/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.hash b/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.hash new file mode 100644 index 0000000..c205065 --- /dev/null +++ b/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 872fde4f9942d9aba805880d6eaddfe050305626fd58ad955bfe77c04f6b75a5 brcmfmac43430-sdio.txt diff --git a/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.mk b/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.mk new file mode 100644 index 0000000..6c855a8 --- /dev/null +++ b/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# rpi-wifi-firmware +# +################################################################################ + +RPI_WIFI_FIRMWARE_VERSION = 54bab3d6a6d43239c71d26464e6e10e5067ffea7 +# brcmfmac43430-sdio.bin comes from linux-firmware +RPI_WIFI_FIRMWARE_SOURCE = brcmfmac43430-sdio.txt +# git repo contains a lot of unrelated files +RPI_WIFI_FIRMWARE_SITE = https://raw.githubusercontent.com/RPi-Distro/firmware-nonfree/$(RPI_WIFI_FIRMWARE_VERSION)/brcm80211/brcm +RPI_WIFI_FIRMWARE_LICENSE = PROPRIETARY + +define RPI_WIFI_FIRMWARE_EXTRACT_CMDS + cp $(DL_DIR)/$($(PKG)_SOURCE) $(@D)/ +endef + +define RPI_WIFI_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/$(RPI_WIFI_FIRMWARE_SOURCE) \ + $(TARGET_DIR)/lib/firmware/brcm/$(RPI_WIFI_FIRMWARE_SOURCE) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rpm/0001-configure-ac-use-link-instead-of-compile-for-gcc-flags-test.patch b/buildroot/package/rpm/0001-configure-ac-use-link-instead-of-compile-for-gcc-flags-test.patch new file mode 100644 index 0000000..6f6a2ab --- /dev/null +++ b/buildroot/package/rpm/0001-configure-ac-use-link-instead-of-compile-for-gcc-flags-test.patch @@ -0,0 +1,33 @@ +From b5f1895aae096836d6e8e155ee289e1b10fcabcb Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 10 Oct 2015 23:17:44 +0200 +Subject: [PATCH] configure.ac: use link instead of compile for gcc flags test + +The logic that tests whether gcc supports or not certain flags uses +AC_COMPILE_IFELSE(). However, when checking for stack smashing +protection support, an AC_LINK_IFELSE() test is needed, since the +build might work but not the link stage if certain libraries are +missing for proper stack smashing protection support. + +Therefore, this commit switches to use AC_LINK_IFELSE(). + +[Upstream commit: https://github.com/rpm-software-management/rpm/commit/b5f1895aae096836d6e8e155ee289e1b10fcabcb] +Signed-off-by: Thomas Petazzoni +Signed-off-by: James Knight +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 6ece8c9fd..822294c3f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -43,7 +43,7 @@ if test "$GCC" = yes; then + echo + for flag in $cflags_to_try; do + CFLAGS="$CFLAGS $flag -Werror" +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[ + echo " $flag" + RPMCFLAGS="$RPMCFLAGS $flag" + ],[]) diff --git a/buildroot/package/rpm/0002-configure-ac-correct-stack-protector-check.patch b/buildroot/package/rpm/0002-configure-ac-correct-stack-protector-check.patch new file mode 100644 index 0000000..9d2942b --- /dev/null +++ b/buildroot/package/rpm/0002-configure-ac-correct-stack-protector-check.patch @@ -0,0 +1,45 @@ +From c810a0aca3f1148d2072d44b91b8cc9caeb4cf19 Mon Sep 17 00:00:00 2001 +From: James Knight +Date: Wed, 16 Nov 2016 15:54:46 -0500 +Subject: [PATCH] configure.ac: correct stack protector check + +If a used toolchain accepts the `-fstack-protector` option but does not +provide a stack smashing protector implementation (ex. libssp), linking +will fail: + + .libs/rpmio.o: In function `Fdescr': + rpmio.c:(.text+0x672): undefined reference to `__stack_chk_fail_local' + .libs/rpmio.o: In function `Fdopen': + rpmio.c:(.text+0xce9): undefined reference to `__stack_chk_fail_local' + .libs/rpmio.o: In function `ufdCopy': + rpmio.c:(.text+0x10f7): undefined reference to `__stack_chk_fail_local' + ... + +This is a result of testing for `-fstack-protector` support using a main +that GCC does not inject guards. GCC's manual notes that stack protector +code is only added when "[functions] that call alloca, and functions +with buffers larger than 8 bytes" [1]. This commit adjusts the stack +protector check to allocate memory on the stack (via `alloca`). + +[1]: https://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html + +Signed-off-by: James Knight +[Upstream commit: https://github.com/rpm-software-management/rpm/commit/c810a0aca3f1148d2072d44b91b8cc9caeb4cf19] +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index a9730d3bc..b4b3fe8fb 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -43,7 +43,7 @@ if test "$GCC" = yes; then + echo + for flag in $cflags_to_try; do + CFLAGS="$CFLAGS $flag -Werror" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[return 0;]])],[ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[alloca(100);]])],[ + echo " $flag" + RPMCFLAGS="$RPMCFLAGS $flag" + ],[]) diff --git a/buildroot/package/rpm/0003-Detect-bfd.h-to-enable-disable-sepdebugcrcfix-buildi.patch b/buildroot/package/rpm/0003-Detect-bfd.h-to-enable-disable-sepdebugcrcfix-buildi.patch new file mode 100644 index 0000000..e1fd069 --- /dev/null +++ b/buildroot/package/rpm/0003-Detect-bfd.h-to-enable-disable-sepdebugcrcfix-buildi.patch @@ -0,0 +1,55 @@ +From edadcf67980764c104c25c7c1a0ba91257b89698 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 8 Dec 2016 23:33:30 +0100 +Subject: [PATCH 1/2] Detect bfd.h to enable/disable sepdebugcrcfix building + +tools/sepdebugcrcfix includes , but this header from binutils +is not checked in the configure script. Due to this, sepdebugcrcfix is +attempted to be built even when is not available. This commit +addresses that by adding the appropriate configure check. + +This fixes the following build error: + +tools/sepdebugcrcfix.c:31:17: fatal error: bfd.h: No such file or directory +compilation terminated. +make[3]: *** [tools/sepdebugcrcfix.o] Error 1 + +Signed-off-by: Thomas Petazzoni +--- + Makefile.am | 2 ++ + configure.ac | 3 +++ + 2 files changed, 5 insertions(+) + +diff --git a/Makefile.am b/Makefile.am +index 863138c..d8a68f0 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -168,9 +168,11 @@ elfdeps_SOURCES = tools/elfdeps.c + elfdeps_LDADD = rpmio/librpmio.la + elfdeps_LDADD += @WITH_LIBELF_LIB@ @WITH_POPT_LIB@ + ++if HAS_BFD_H + rpmlibexec_PROGRAMS += sepdebugcrcfix + sepdebugcrcfix_SOURCES = tools/sepdebugcrcfix.c + sepdebugcrcfix_LDADD = @WITH_LIBELF_LIB@ ++endif # HAS_BFD_H + endif + endif + +diff --git a/configure.ac b/configure.ac +index c5ae701..b99ecb8 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -242,6 +242,9 @@ AC_CHECK_HEADERS([dwarf.h], [ + ]) + AM_CONDITIONAL(LIBDWARF,[test "$WITH_LIBDWARF" = yes]) + ++AC_CHECK_HEADERS([bfd.h]) ++AM_CONDITIONAL(HAS_BFD_H, [test "${ac_cv_header_bfd_h}" = "yes"]) ++ + #================= + # Check for beecrypt library if requested. + AC_ARG_WITH(beecrypt, [ --with-beecrypt build with beecrypt support ],,[with_beecrypt=no]) +-- +2.7.4 + diff --git a/buildroot/package/rpm/0004-tools-sepdebugcrcfix.c-fix-build-with-recent-binutil.patch b/buildroot/package/rpm/0004-tools-sepdebugcrcfix.c-fix-build-with-recent-binutil.patch new file mode 100644 index 0000000..bebe945 --- /dev/null +++ b/buildroot/package/rpm/0004-tools-sepdebugcrcfix.c-fix-build-with-recent-binutil.patch @@ -0,0 +1,43 @@ +From 65afab91444d4996a8e61d1e2d27d52e18417ef5 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 8 Dec 2016 23:45:55 +0100 +Subject: [PATCH 2/2] tools/sepdebugcrcfix.c: fix build with recent binutils + +Moderately recent binutils versions install a header that +checks if config.h is included. While this makes sense in binutils +itself, it does not outside. So the binutils developers have added a +check: if PACKAGE or PACKAGE_VERSION are defined, they assume you're +re-using bfd.h outside of binutils, and therefore including it without +including config.h is legit. + +So we take the same approch as numerous users of bfd.h: fake a PACKAGE +definition. See for example tools/perf/util/srcline.c in the Linux +kernel source tree. + +This fixes the following build error: + +In file included from tools/sepdebugcrcfix.c:31:0: +/home/test/autobuild/run/instance-0/output/host/usr/arc-buildroot-linux-uclibc/sysroot/usr/include/bfd.h:35:2: error: #error config.h must be included before this header + #error config.h must be included before this header + +Signed-off-by: Thomas Petazzoni +--- + tools/sepdebugcrcfix.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tools/sepdebugcrcfix.c b/tools/sepdebugcrcfix.c +index cd7fa02..e7b480f 100644 +--- a/tools/sepdebugcrcfix.c ++++ b/tools/sepdebugcrcfix.c +@@ -28,6 +28,8 @@ + #include + #include + #include ++/* Needed to please */ ++#define PACKAGE "rpm" + #include + + #define _(x) x +-- +2.7.4 + diff --git a/buildroot/package/rpm/Config.in b/buildroot/package/rpm/Config.in new file mode 100644 index 0000000..aa857ef --- /dev/null +++ b/buildroot/package/rpm/Config.in @@ -0,0 +1,20 @@ +comment "rpm needs a toolchain w/ dynamic library and threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + depends on BR2_USE_MMU + +config BR2_PACKAGE_RPM + bool "rpm" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + depends on BR2_TOOLCHAIN_HAS_THREADS # beecrypt + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_BEECRYPT if !BR2_PACKAGE_LIBNSS + select BR2_PACKAGE_BERKELEYDB + select BR2_PACKAGE_FILE + select BR2_PACKAGE_POPT + select BR2_PACKAGE_ZLIB + help + The RPM Package Manager (RPM). + + http://www.rpm.org/ diff --git a/buildroot/package/rpm/rpm.hash b/buildroot/package/rpm/rpm.hash new file mode 100644 index 0000000..7ae9ec7 --- /dev/null +++ b/buildroot/package/rpm/rpm.hash @@ -0,0 +1,2 @@ +# From http://rpm.org/wiki/Releases/4.13.0.1 +sha1 9566f95f38fcb214e439c552f378c2f64ba0aff9 rpm-4.13.0.1.tar.bz2 diff --git a/buildroot/package/rpm/rpm.mk b/buildroot/package/rpm/rpm.mk new file mode 100644 index 0000000..159ae72 --- /dev/null +++ b/buildroot/package/rpm/rpm.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# rpm +# +################################################################################ + +RPM_VERSION_MAJOR = 4.13 +RPM_VERSION = $(RPM_VERSION_MAJOR).0.1 +RPM_SOURCE = rpm-$(RPM_VERSION).tar.bz2 +RPM_SITE = http://ftp.rpm.org/releases/rpm-$(RPM_VERSION_MAJOR).x +RPM_DEPENDENCIES = host-pkgconf berkeleydb file popt zlib +RPM_LICENSE = GPL-2.0 or LGPL-2.0 (library only) +RPM_LICENSE_FILES = COPYING +RPM_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) + +# 0001-configure-ac-use-link-instead-of-compile-for-gcc-flags-test.patch +# 0002-configure-ac-correct-stack-protector-check.patch +RPM_AUTORECONF = YES + +RPM_CONF_OPTS = \ + --disable-python \ + --disable-rpath \ + --with-external-db \ + --with-gnu-ld \ + --without-cap \ + --without-hackingdocs \ + --without-lua + +ifeq ($(BR2_PACKAGE_ACL),y) +RPM_DEPENDENCIES += acl +RPM_CONF_OPTS += --with-acl +else +RPM_CONF_OPTS += --without-acl +endif + +ifeq ($(BR2_PACKAGE_LIBNSS),y) +RPM_DEPENDENCIES += libnss +RPM_CONF_OPTS += --without-beecrypt +RPM_CFLAGS += -I$(STAGING_DIR)/usr/include/nss -I$(STAGING_DIR)/usr/include/nspr +else +RPM_DEPENDENCIES += beecrypt +RPM_CONF_OPTS += --with-beecrypt +RPM_CFLAGS += -I$(STAGING_DIR)/usr/include/beecrypt +endif + +ifeq ($(BR2_PACKAGE_GETTEXT_PROVIDES_LIBINTL),y) +RPM_CONF_OPTS += --with-libintl-prefix=$(STAGING_DIR)/usr +else +RPM_CONF_OPTS += --without-libintl-prefix +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +RPM_DEPENDENCIES += libarchive +RPM_CONF_OPTS += --with-archive +else +RPM_CONF_OPTS += --without-archive +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +RPM_DEPENDENCIES += libselinux +RPM_CONF_OPTS += --with-selinux +else +RPM_CONF_OPTS += --without-selinux +endif + +# For the elfutils and binutils dependencies, there are no +# configuration options to explicitly enable/disable them. +ifeq ($(BR2_PACKAGE_ELFUTILS),y) +RPM_DEPENDENCIES += elfutils +endif + +ifeq ($(BR2_PACKAGE_BINUTILS),y) +RPM_DEPENDENCIES += binutils +endif + +# ac_cv_prog_cc_c99: RPM uses non-standard GCC extensions (ex. `asm`). +RPM_CONF_ENV = \ + ac_cv_prog_cc_c99='-std=gnu99' \ + CFLAGS="$(TARGET_CFLAGS) $(RPM_CFLAGS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/rrdtool/Config.in b/buildroot/package/rrdtool/Config.in new file mode 100644 index 0000000..631ed32 --- /dev/null +++ b/buildroot/package/rrdtool/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_RRDTOOL + bool "rrdtool" + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_LIBGLIB2 + help + RRDtool is the OpenSource industry standard, high performance + data logging and graphing system for time series data. + + http://oss.oetiker.ch/rrdtool/ + +if BR2_PACKAGE_RRDTOOL + +config BR2_PACKAGE_RRDTOOL_RRDGRAPH + bool "rrd_graph" + default y + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # pango -> harfbuzz + depends on BR2_INSTALL_LIBSTDCPP # freetype support from pango + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PDF + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_CAIRO_PS + select BR2_PACKAGE_CAIRO_SVG + select BR2_PACKAGE_PANGO + help + This enables the graphing capabilities ('rrdgraph'). + Without this it will only act as a database backend. + +comment "rrd_graph support needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +endif + +comment "rrdtool needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/rrdtool/rrdtool.hash b/buildroot/package/rrdtool/rrdtool.hash new file mode 100644 index 0000000..cff5501 --- /dev/null +++ b/buildroot/package/rrdtool/rrdtool.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 cd948e89cd2d8825fab4a6fb0323f810948d934af7d92c9ee8b5e9e1350e52d7 rrdtool-1.6.0.tar.gz diff --git a/buildroot/package/rrdtool/rrdtool.mk b/buildroot/package/rrdtool/rrdtool.mk new file mode 100644 index 0000000..ea5c892 --- /dev/null +++ b/buildroot/package/rrdtool/rrdtool.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# rrdtool +# +################################################################################ + +RRDTOOL_VERSION = 1.6.0 +RRDTOOL_SITE = http://oss.oetiker.ch/rrdtool/pub +RRDTOOL_LICENSE = GPL-2.0+ with FLOSS license exceptions as explained in COPYRIGHT +RRDTOOL_LICENSE_FILES = COPYRIGHT LICENSE +RRDTOOL_DEPENDENCIES = host-pkgconf libglib2 $(TARGET_NLS_DEPENDENCIES) +# autoreconf needed to avoid link failure due to missing -lintl, +# gettextize needed as a consequence of autoreconf +RRDTOOL_AUTORECONF = YES +RRDTOOL_GETTEXTIZE = YES +RRDTOOL_INSTALL_STAGING = YES +RRDTOOL_CONF_OPTS = \ + --disable-examples \ + --disable-libdbi \ + --disable-librados \ + --disable-libwrap \ + --disable-lua \ + --disable-perl \ + --disable-python \ + --disable-ruby \ + --disable-tcl + +ifeq ($(BR2_PACKAGE_RRDTOOL_RRDGRAPH),y) +RRDTOOL_DEPENDENCIES += cairo pango +else +RRDTOOL_CONF_OPTS += --disable-rrd_graph +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +RRDTOOL_DEPENDENCIES += libxml2 +else +RRDTOOL_CONF_OPTS += --disable-rrd_restore +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/rs485conf/Config.in b/buildroot/package/rs485conf/Config.in new file mode 100644 index 0000000..ff0b743 --- /dev/null +++ b/buildroot/package/rs485conf/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_RS485CONF + bool "rs485conf" + help + rs485conf is intended to be used on embedded boards with RS485 + interface. It can show as well as modify RS485 configuration + parameters of TTY device with easy to use command line + options. + + https://github.com/mniestroj/rs485conf diff --git a/buildroot/package/rs485conf/rs485conf.hash b/buildroot/package/rs485conf/rs485conf.hash new file mode 100644 index 0000000..e2ccbfd --- /dev/null +++ b/buildroot/package/rs485conf/rs485conf.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f163f81cd50aae6fa39cbb4f6408a3699da7a87a56649c4b96d6f168c9be6a7d rs485conf-5c8d00cf70950fab3454549b81dea843d844492a.tar.gz diff --git a/buildroot/package/rs485conf/rs485conf.mk b/buildroot/package/rs485conf/rs485conf.mk new file mode 100644 index 0000000..9d1b764 --- /dev/null +++ b/buildroot/package/rs485conf/rs485conf.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# rs485conf +# +################################################################################ + +RS485CONF_VERSION = 5c8d00cf70950fab3454549b81dea843d844492a +RS485CONF_SITE = $(call github,mniestroj,rs485conf,$(RS485CONF_VERSION)) +RS485CONF_LICENSE = BSD-3-Clause +RS485CONF_LICENSE_FILES = LICENSE + +define RS485CONF_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define RS485CONF_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX="$(TARGET_DIR)/usr" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rsh-redone/Config.in b/buildroot/package/rsh-redone/Config.in new file mode 100644 index 0000000..1335c85 --- /dev/null +++ b/buildroot/package/rsh-redone/Config.in @@ -0,0 +1,43 @@ +config BR2_PACKAGE_RSH_REDONE + bool "rsh-redone" + help + Rsh-redone is a reimplementation of the remote shell clients + and servers. It is written from the ground up to avoid the + bugs found in the standard clients and servers. It also + fully supports IPv6. + + http://packages.debian.org/source/sid/rsh-redone + +if BR2_PACKAGE_RSH_REDONE + +config BR2_PACKAGE_RSH_REDONE_RLOGIN + bool "rlogin" + +config BR2_PACKAGE_RSH_REDONE_RLOGIND + bool "rlogind" + depends on !BR2_STATIC_LIBS + depends on BR2_ENABLE_LOCALE && BR2_USE_WCHAR + depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam + depends on BR2_USE_MMU # linux-pam + select BR2_PACKAGE_LINUX_PAM + +comment "rlogind needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_RSH_REDONE_RSH + bool "rsh" + +config BR2_PACKAGE_RSH_REDONE_RSHD + bool "rshd" + depends on BR2_ENABLE_LOCALE && BR2_USE_WCHAR + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam + depends on BR2_USE_MMU # linux-pam + select BR2_PACKAGE_LINUX_PAM + +comment "rshd needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL + +endif diff --git a/buildroot/package/rsh-redone/rsh-redone.hash b/buildroot/package/rsh-redone/rsh-redone.hash new file mode 100644 index 0000000..ba85607 --- /dev/null +++ b/buildroot/package/rsh-redone/rsh-redone.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/r/rsh-redone/rsh-redone_85-2.dsc +sha256 55ac8ee2acacbc3490f073e3922c0cde46ffe4ea3c593e05c48fed4c1e1a8811 rsh-redone_85.orig.tar.gz diff --git a/buildroot/package/rsh-redone/rsh-redone.mk b/buildroot/package/rsh-redone/rsh-redone.mk new file mode 100644 index 0000000..f63da64 --- /dev/null +++ b/buildroot/package/rsh-redone/rsh-redone.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# rsh-redone +# +################################################################################ + +RSH_REDONE_VERSION = 85 +RSH_REDONE_SOURCE = rsh-redone_$(RSH_REDONE_VERSION).orig.tar.gz +RSH_REDONE_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/r/rsh-redone +RSH_REDONE_LICENSE = GPL-2.0 +RSH_REDONE_LICENSE_FILES = rsh.c + +RSH_REDONE_BINS-y = +RSH_REDONE_BINS-$(BR2_PACKAGE_RSH_REDONE_RLOGIN) += rlogin +RSH_REDONE_BINS-$(BR2_PACKAGE_RSH_REDONE_RSH) += rsh +RSH_REDONE_SBINS-y = +RSH_REDONE_SBINS-$(BR2_PACKAGE_RSH_REDONE_RLOGIND) += in.rlogind +RSH_REDONE_SBINS-$(BR2_PACKAGE_RSH_REDONE_RSHD) += in.rshd + +RSH_REDONE_MAKE_FLAGS = \ + BIN="$(RSH_REDONE_BINS-y)" SBIN="$(RSH_REDONE_SBINS-y)" + +ifneq ($(BR2_PACKAGE_RSH_REDONE_RSHD)$(BR2_PACKAGE_RSH_REDONE_RLOGIND),) +RSH_REDONE_DEPENDENCIES = linux-pam +endif + +define RSH_REDONE_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(RSH_REDONE_MAKE_FLAGS) +endef + +define RSH_REDONE_INSTALL_TARGET_CMDS + $(if $(RSH_REDONE_BINS-y)$(RSH_REDONE_SBINS-y), + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(RSH_REDONE_MAKE_FLAGS) DESTDIR=$(TARGET_DIR) \ + $(if $(RSH_REDONE_BINS-y),install-bin) \ + $(if $(RSH_REDONE_SBINS-y),install-sbin)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rsync/Config.in b/buildroot/package/rsync/Config.in new file mode 100644 index 0000000..b952974 --- /dev/null +++ b/buildroot/package/rsync/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_RSYNC + bool "rsync" + # fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_POPT + help + File transfer program to keep remote files in sync. + + http://rsync.samba.org/ diff --git a/buildroot/package/rsync/rsync.hash b/buildroot/package/rsync/rsync.hash new file mode 100644 index 0000000..2da62a1 --- /dev/null +++ b/buildroot/package/rsync/rsync.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://download.samba.org/pub/rsync/src/rsync-3.1.3.tar.gz.asc +sha256 55cc554efec5fdaad70de921cd5a5eeb6c29a95524c715f3bbf849235b0800c0 rsync-3.1.3.tar.gz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/rsync/rsync.mk b/buildroot/package/rsync/rsync.mk new file mode 100644 index 0000000..52875e4 --- /dev/null +++ b/buildroot/package/rsync/rsync.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# rsync +# +################################################################################ + +RSYNC_VERSION = 3.1.3 +RSYNC_SITE = http://rsync.samba.org/ftp/rsync/src +RSYNC_LICENSE = GPL-3.0+ +RSYNC_LICENSE_FILES = COPYING +RSYNC_DEPENDENCIES = zlib popt +RSYNC_CONF_OPTS = \ + --with-included-zlib=no \ + --with-included-popt=no + +ifeq ($(BR2_PACKAGE_ACL),y) +RSYNC_DEPENDENCIES += acl +else +RSYNC_CONF_OPTS += --disable-acl-support +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/rsyslog/Config.in b/buildroot/package/rsyslog/Config.in new file mode 100644 index 0000000..8c024e6 --- /dev/null +++ b/buildroot/package/rsyslog/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_RSYSLOG + bool "rsyslog" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # modules + depends on !BR2_TOOLCHAIN_USES_MUSL # GLOB_BRACE + # Propagate the exact same dependency from libfastjson, + # even though rsyslog already depends on threads for itself: + depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LIBESTR + select BR2_PACKAGE_LIBLOGGING + select BR2_PACKAGE_LIBFASTJSON + help + Rsyslog is a powerful and flexible syslog implementation + + http://www.rsyslog.com + +comment "rsyslog needs a uClibc or glibc toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/rsyslog/S01logging b/buildroot/package/rsyslog/S01logging new file mode 100644 index 0000000..8e4a59c --- /dev/null +++ b/buildroot/package/rsyslog/S01logging @@ -0,0 +1,36 @@ +#!/bin/sh + +start() { + printf "Starting rsyslog daemon: " + start-stop-daemon -S -q -p /var/run/rsyslogd.pid --exec /usr/sbin/rsyslogd + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping rsyslog daemon: " + start-stop-daemon -K -q -p /var/run/rsyslogd.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/rsyslog/rsyslog.hash b/buildroot/package/rsyslog/rsyslog.hash new file mode 100644 index 0000000..4fe6a0e --- /dev/null +++ b/buildroot/package/rsyslog/rsyslog.hash @@ -0,0 +1,2 @@ +# From http://www.rsyslog.com/downloads/download-v8-stable/ +sha256 06e2884181333dccecceaca82827ae24ca7a258b4fbf7b1e07a80d4caae640ca rsyslog-8.22.0.tar.gz diff --git a/buildroot/package/rsyslog/rsyslog.mk b/buildroot/package/rsyslog/rsyslog.mk new file mode 100644 index 0000000..e32505b --- /dev/null +++ b/buildroot/package/rsyslog/rsyslog.mk @@ -0,0 +1,106 @@ +################################################################################ +# +# rsyslog +# +################################################################################ + +RSYSLOG_VERSION = 8.22.0 +RSYSLOG_SITE = http://rsyslog.com/files/download/rsyslog +RSYSLOG_LICENSE = GPL-3.0, LGPL-3.0, Apache-2.0 +RSYSLOG_LICENSE_FILES = COPYING COPYING.LESSER COPYING.ASL20 +RSYSLOG_DEPENDENCIES = zlib libestr liblogging libfastjson host-pkgconf +RSYSLOG_CONF_ENV = ac_cv_prog_cc_c99='-std=c99' +RSYSLOG_PLUGINS = imdiag imfile impstats imptcp \ + mmanon mmaudit mmfields mmjsonparse mmpstrucdata mmsequence mmutf8fix \ + mail omprog omruleset omstdout omuxsock \ + pmaixforwardedfrom pmciscoios pmcisconames pmlastmsg pmsnare +RSYSLOG_CONF_OPTS = --disable-generate-man-pages \ + $(foreach x,$(call qstrip,$(RSYSLOG_PLUGINS)),--enable-$(x)) + +# Build after BusyBox +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +RSYSLOG_DEPENDENCIES += busybox +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +RSYSLOG_DEPENDENCIES += gnutls +RSYSLOG_CONF_OPTS += --enable-gnutls +else +RSYSLOG_CONF_OPTS += --disable-gnutls +endif + +ifeq ($(BR2_PACKAGE_LIBEE),y) +RSYSLOG_DEPENDENCIES += libee +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +RSYSLOG_DEPENDENCIES += libgcrypt +RSYSLOG_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +RSYSLOG_CONF_OPTS += --enable-libgcrypt +else +RSYSLOG_CONF_OPTS += --disable-libgcrypt +endif + +ifeq ($(BR2_PACKAGE_MYSQL),y) +RSYSLOG_DEPENDENCIES += mysql +RSYSLOG_CONF_OPTS += --enable-mysql +RSYSLOG_CONF_ENV += ac_cv_prog_MYSQL_CONFIG=$(STAGING_DIR)/usr/bin/mysql_config +else +RSYSLOG_CONF_OPTS += --disable-mysql +endif + +ifeq ($(BR2_PACKAGE_POSTGRESQL),y) +RSYSLOG_DEPENDENCIES += postgresql +RSYSLOG_CONF_OPTS += --enable-pgsql +RSYSLOG_CONF_ENV += ac_cv_prog_PG_CONFIG=$(STAGING_DIR)/usr/bin/pg_config +else +RSYSLOG_CONF_OPTS += --disable-pgsql +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +RSYSLOG_DEPENDENCIES += util-linux +RSYSLOG_CONF_OPTS += --enable-uuid +else +RSYSLOG_CONF_OPTS += --disable-uuid +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +RSYSLOG_CONF_OPTS += \ + --enable-imjournal \ + --enable-omjournal \ + --with-systemdsystemunitdir=/usr/lib/systemd/system +RSYSLOG_DEPENDENCIES += systemd +else +RSYSLOG_CONF_OPTS += \ + --disable-imjournal \ + --disable-omjournal +endif + +define RSYSLOG_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/rsyslog/S01logging \ + $(TARGET_DIR)/etc/init.d/S01logging +endef + +# The rsyslog.service is installed by rsyslog, but the link is not created +# so the service is not enabled. +# We need to create another link which is due to the fact that the +# rsyslog.service contains an Alias= +# If we were to use systemctl enable to enable the service, it would +# create both, so we mimic that. +define RSYSLOG_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/rsyslog.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/rsyslog.service + ln -sf ../../../usr/lib/systemd/system/rsyslog.service \ + $(TARGET_DIR)/etc/systemd/system/syslog.service +endef + +define RSYSLOG_INSTALL_CONF + $(INSTALL) -m 0644 -D $(@D)/platform/redhat/rsyslog.conf \ + $(TARGET_DIR)/etc/rsyslog.conf + mkdir -p $(TARGET_DIR)/etc/rsyslog.d +endef + +RSYSLOG_POST_INSTALL_TARGET_HOOKS += RSYSLOG_INSTALL_CONF + +$(eval $(autotools-package)) diff --git a/buildroot/package/rt-tests/0001-Fix-various-minor-issues-with-rt-tests-build-system.patch b/buildroot/package/rt-tests/0001-Fix-various-minor-issues-with-rt-tests-build-system.patch new file mode 100644 index 0000000..157514a --- /dev/null +++ b/buildroot/package/rt-tests/0001-Fix-various-minor-issues-with-rt-tests-build-system.patch @@ -0,0 +1,55 @@ +From eb47c07e9d20e0b1a6cc4b0df26f24f22f024f1c Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Mon, 10 Nov 2014 11:44:55 +0300 +Subject: [PATCH] Fix various minor issues with rt-tests build system + +The issues fixed are : + + * Remove the automatic NUMA detection from the host + architecture. This is broken when doing cross-compilation. One can + still set NUMA=1 if NUMA support is desired. + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Alexey Brodkin +Cc: Peter Korsgaard +[Romain: + rebase on v1.0 + Remove HASPYTHON since PYLIB can be overriden from the environment] +Signed-off-by: Romain Naour +--- + Makefile | 19 ------------------- + 1 file changed, 19 deletions(-) + +diff --git a/Makefile b/Makefile +index a54d82b..0946f93 100644 +--- a/Makefile ++++ b/Makefile +@@ -38,25 +38,6 @@ else + CFLAGS += -O0 -g + endif + +-# We make some gueses on how to compile rt-tests based on the machine type +-# and the ostype. These can often be overridden. +-dumpmachine := $(shell $(CC) -dumpmachine) +- +-# The ostype is typically something like linux or android +-ostype := $(lastword $(subst -, ,$(dumpmachine))) +- +-machinetype := $(shell echo $(dumpmachine)| \ +- sed -e 's/-.*//' -e 's/i.86/i386/' -e 's/mips.*/mips/' -e 's/ppc.*/powerpc/') +- +-# The default is to assume you have libnuma installed, which is fine to do +-# even on non-numa machines. If you don't want to install the numa libs, for +-# example, they might not be available in an embedded environment, then +-# compile with +-# make NUMA=0 +-ifneq ($(filter x86_64 i386 ia64 mips powerpc,$(machinetype)),) +-NUMA := 1 +-endif +- + # The default is to assume that you have numa_parse_cpustring_all + # If you have an older version of libnuma that only has numa_parse_cpustring + # then compile with +-- +2.5.5 + diff --git a/buildroot/package/rt-tests/0002-Fix-a-build-issue-with-uClibc-ng.patch b/buildroot/package/rt-tests/0002-Fix-a-build-issue-with-uClibc-ng.patch new file mode 100644 index 0000000..785d93c --- /dev/null +++ b/buildroot/package/rt-tests/0002-Fix-a-build-issue-with-uClibc-ng.patch @@ -0,0 +1,33 @@ +From 21e0c16a85c2e028a963703511d750d1751bc254 Mon Sep 17 00:00:00 2001 +From: Alexey Brodkin +Date: Wed, 13 Jul 2016 23:46:38 +0200 +Subject: [PATCH] Fix a build issue with uClibc-ng + +uClibc-ng has clock_nanosleep() if built with UCLIBC_HAS_ADVANCED_REALTIME, + conflicting with emulation function. + +Signed-off-by: Peter Korsgaard +[Romain: + rebase on v1.0 + remove uClibc legacy support, uClibc-ng provide utmpx.h] +Signed-off-by: Romain Naour +--- + src/cyclictest/cyclictest.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c +index 00e5f3d..92fa3dd 100644 +--- a/src/cyclictest/cyclictest.c ++++ b/src/cyclictest/cyclictest.c +@@ -58,7 +58,7 @@ + #define gettid() syscall(__NR_gettid) + #define sigev_notify_thread_id _sigev_un._tid + +-#ifdef __UCLIBC__ ++#if defined(__UCLIBC__) && !defined(__UCLIBC_HAS_ADVANCED_REALTIME__) + #define MAKE_PROCESS_CPUCLOCK(pid, clock) \ + ((~(clockid_t) (pid) << 3) | (clockid_t) (clock)) + #define CPUCLOCK_SCHED 2 +-- +2.5.5 + diff --git a/buildroot/package/rt-tests/0003-Add-syscall-number-for-sched_-gs-etattr-for-SH4.patch b/buildroot/package/rt-tests/0003-Add-syscall-number-for-sched_-gs-etattr-for-SH4.patch new file mode 100644 index 0000000..9d606a4 --- /dev/null +++ b/buildroot/package/rt-tests/0003-Add-syscall-number-for-sched_-gs-etattr-for-SH4.patch @@ -0,0 +1,34 @@ +From 53c7e8bc75f0f27752309ddae49e8d3b867a7681 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Mon, 15 Aug 2016 18:20:47 +0200 +Subject: [PATCH] Add syscall-number for sched_(gs)etattr() for SH4 + +Signed-off-by: Romain Naour +--- + src/include/rt-sched.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/include/rt-sched.h b/src/include/rt-sched.h +index 679c4bd..83394c6 100644 +--- a/src/include/rt-sched.h ++++ b/src/include/rt-sched.h +@@ -51,6 +51,16 @@ + #endif + #endif + ++/* SCHED_DEADLINE available on sh4 since kernel 4.8 */ ++#ifdef __SH4__ ++#ifndef __NR_sched_setattr ++#define __NR_sched_setattr 370 ++#endif ++#ifndef __NR_sched_getattr ++#define __NR_sched_getattr 369 ++#endif ++#endif ++ + #ifdef __tilegx__ + #define __NR_sched_setattr 274 + #define __NR_sched_getattr 275 +-- +2.5.5 + diff --git a/buildroot/package/rt-tests/Config.in b/buildroot/package/rt-tests/Config.in new file mode 100644 index 0000000..23e911b --- /dev/null +++ b/buildroot/package/rt-tests/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_RT_TESTS + bool "rt-tests" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 # deadline scheduler syscall + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen + depends on !BR2_TOOLCHAIN_USES_MUSL # cyclictest + help + Set of utilities for testing the real-time behaviour of a + Linux system. + + All tools are simple C programs with no dependencies, except + the hwlatdetect utility, which is a Python script and + therefore requires the Python interpreter. It will only be + installed if a Python interpreter has been selected in the + Buildroot configuration. + + Note that this package requires a toolchain built with the + NPTL implementation of the pthread API (this is always the + case with glibc toolchains, but may not necessarily be the + case with uClibc toolchains, since the thread implementation + is configurable). + + http://rt.wiki.kernel.org + +comment "rt-tests may not work on MIPS with an external uClibc toolchain" + depends on BR2_PACKAGE_RT_TESTS + depends on BR2_TOOLCHAIN_EXTERNAL_UCLIBC + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + +comment "rt-tests needs a uClibc or glibc toolchain w/ NPTL, headers >= 3.14, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + depends on BR2_USE_MMU diff --git a/buildroot/package/rt-tests/rt-tests.hash b/buildroot/package/rt-tests/rt-tests.hash new file mode 100644 index 0000000..f37af43 --- /dev/null +++ b/buildroot/package/rt-tests/rt-tests.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 aea85fd8eda8c1d96e9d32a019bfd4a1d2e0d362971d97838996f49d1af2d470 rt-tests-1.0.tar.xz diff --git a/buildroot/package/rt-tests/rt-tests.mk b/buildroot/package/rt-tests/rt-tests.mk new file mode 100644 index 0000000..273949a --- /dev/null +++ b/buildroot/package/rt-tests/rt-tests.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# rt-tests +# +################################################################################ + +RT_TESTS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/rt-tests +RT_TESTS_SOURCE = rt-tests-$(RT_TESTS_VERSION).tar.xz +RT_TESTS_VERSION = 1.0 +RT_TESTS_LICENSE = GPL-2.0+ +RT_TESTS_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_PYTHON),y) +RT_TESTS_DEPENDENCIES = python +endif + +define RT_TESTS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + prefix=/usr +endef + +define RT_TESTS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR="$(TARGET_DIR)" \ + prefix=/usr \ + $(if $(BR2_PACKAGE_PYTHON),PYLIB=/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/,PYLIB="") \ + install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rtai/Config.in b/buildroot/package/rtai/Config.in new file mode 100644 index 0000000..14b1854 --- /dev/null +++ b/buildroot/package/rtai/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_RTAI + bool "rtai" + depends on BR2_LINUX_KERNEL_EXT_RTAI + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + RTAI - the RealTime Application Interface for Linux. + + http://www.rtai.org diff --git a/buildroot/package/rtai/rtai.hash b/buildroot/package/rtai/rtai.hash new file mode 100644 index 0000000..f0afafb --- /dev/null +++ b/buildroot/package/rtai/rtai.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 13669da744a0ba411bdb8e47fa47b6e19171646ae42c8dbb2735d12e555fb1a3 rtai-4.0.1.tar.bz2 diff --git a/buildroot/package/rtai/rtai.mk b/buildroot/package/rtai/rtai.mk new file mode 100644 index 0000000..90f2cc4 --- /dev/null +++ b/buildroot/package/rtai/rtai.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# rtai +# +################################################################################ + +RTAI_VERSION = 4.0.1 +RTAI_SOURCE = rtai-$(RTAI_VERSION).tar.bz2 +RTAI_SITE = https://www.rtai.org/userfiles/downloads/RTAI +RTAI_INSTALL_STAGING = YES + +# The _CONFIG_SCRIPTS cannot apply here to the specificities of rtai-config +define RTAI_POST_PATCH_FIXUP + $(SED) 's%^staging=.*%staging=$(STAGING_DIR)%' $(STAGING_DIR)/usr/bin/rtai-config +endef + +RTAI_POST_INSTALL_STAGING_HOOKS += RTAI_POST_PATCH_FIXUP + +RTAI_DEPENDENCIES = linux + +RTAI_CONF_OPTS = \ + --includedir=/usr/include/rtai \ + --with-linux-dir=$(LINUX_DIR) \ + --disable-leds \ + --enable-usi \ + --enable-align-priority \ + --disable-rtailab \ + --with-module-dir=/lib/modules/$(LINUX_VERSION_PROBED)/rtai + +RTAI_MAKE = $(MAKE1) + +$(eval $(autotools-package)) diff --git a/buildroot/package/rtl8188eu/Config.in b/buildroot/package/rtl8188eu/Config.in new file mode 100644 index 0000000..9263802 --- /dev/null +++ b/buildroot/package/rtl8188eu/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_RTL8188EU + bool "rtl8188eu" + depends on BR2_LINUX_KERNEL + help + A standalone driver for the RTL8188EU USB Wi-Fi adapter. + This is needed only for Linux kernels before 3.12. + Since 3.12, there is a (staging) driver in mainline, with a + similar codebase. + + Make sure your target kernel has the CONFIG_WIRELESS_EXT + config option enabled. + + Note: this package needs a firmware loading mechanism to load + the binary blob for the chip to work. + + https://github.com/lwfinger/rtl8188eu + +comment "rtl8188eu needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/rtl8188eu/rtl8188eu.hash b/buildroot/package/rtl8188eu/rtl8188eu.hash new file mode 100644 index 0000000..6f68f44 --- /dev/null +++ b/buildroot/package/rtl8188eu/rtl8188eu.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 9f16fab009bd7bc9e377cf7dcdf82be1b60e7f88e27f2833eea5b422d104e3fe rtl8188eu-ced2b64a1139dcaf86947e3a9f7617dffbd64239.tar.gz diff --git a/buildroot/package/rtl8188eu/rtl8188eu.mk b/buildroot/package/rtl8188eu/rtl8188eu.mk new file mode 100644 index 0000000..5c1cc73 --- /dev/null +++ b/buildroot/package/rtl8188eu/rtl8188eu.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# rtl8188eu +# +################################################################################ + +RTL8188EU_VERSION = ced2b64a1139dcaf86947e3a9f7617dffbd64239 +RTL8188EU_SITE = $(call github,lwfinger,rtl8188eu,$(RTL8188EU_VERSION)) +RTL8188EU_LICENSE = GPL-2.0, proprietary (rtl8188eufw.bin firmware blob) +RTL8188EU_LICENSE_FILES = COPYING +RTL8188EU_MODULE_MAKE_OPTS = CONFIG_RTL8188EU=m + +define RTL8188EU_INSTALL_FIRMWARE + $(INSTALL) -D -m 644 $(@D)/rtl8188eufw.bin \ + $(TARGET_DIR)/lib/firmware/rtlwifi/rtl8188eufw.bin +endef +RTL8188EU_POST_INSTALL_TARGET_HOOKS += RTL8188EU_INSTALL_FIRMWARE + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/rtl8189fs/Config.in b/buildroot/package/rtl8189fs/Config.in new file mode 100644 index 0000000..ae69b79 --- /dev/null +++ b/buildroot/package/rtl8189fs/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_RTL8189FS + bool "rtl8189fs" + depends on BR2_LINUX_KERNEL + help + Wireless driver rtl8189fs. + + https://github.com/jwrdegoede/rtl8189ES_linux.git + +comment "rtl8189fs needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/rtl8189fs/rtl8189fs.hash b/buildroot/package/rtl8189fs/rtl8189fs.hash new file mode 100644 index 0000000..d6ce6c1 --- /dev/null +++ b/buildroot/package/rtl8189fs/rtl8189fs.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 93472471e1769f92984792f40a0898dd8dd02122d745d48e8edd1a8cc869bc82 rtl8189fs-569bdb91f2cc76e2f5b77df42471db2a62fd2376.tar.gz diff --git a/buildroot/package/rtl8189fs/rtl8189fs.mk b/buildroot/package/rtl8189fs/rtl8189fs.mk new file mode 100644 index 0000000..d463bba --- /dev/null +++ b/buildroot/package/rtl8189fs/rtl8189fs.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# rtl8189fs +# +################################################################################ + +RTL8189FS_VERSION = 569bdb91f2cc76e2f5b77df42471db2a62fd2376 +RTL8189FS_SITE = $(call github,jwrdegoede,rtl8189ES_linux,$(RTL8189FS_VERSION)) +RTL8189FS_LICENSE = GPL-2.0 + +RTL8189FS_MODULE_MAKE_OPTS = \ + CONFIG_RTL8189FS=m \ + KVER=$(LINUX_VERSION_PROBED) \ + KSRC=$(LINUX_DIR) + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/rtl8723bs/0001-rtl8723bs-add-debug-level-modparam.patch b/buildroot/package/rtl8723bs/0001-rtl8723bs-add-debug-level-modparam.patch new file mode 100644 index 0000000..0443c1f --- /dev/null +++ b/buildroot/package/rtl8723bs/0001-rtl8723bs-add-debug-level-modparam.patch @@ -0,0 +1,41 @@ +From 9f70428f506ac9d5af325004c01c59c62669d7eb Mon Sep 17 00:00:00 2001 +From: Jason Abele +Date: Sat, 15 Aug 2015 18:20:54 -0700 +Subject: [PATCH] rtl8723bs: add debug level modparam + +For ease of controlling debug printk verbosity, add a module parameter +which sets debug level at module load. + +Signed-off-by: Jason Abele +[Fixed to apply on current version] +Signed-off-by: Ariel D'Alessandro +--- + os_dep/os_intfs.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/os_dep/os_intfs.c b/os_dep/os_intfs.c +index b30c2a0..eeb8946 100644 +--- a/os_dep/os_intfs.c ++++ b/os_dep/os_intfs.c +@@ -231,6 +231,10 @@ module_param(rtw_decrypt_phy_file, int, 0644); + MODULE_PARM_DESC(rtw_decrypt_phy_file,"Enable Decrypt PHY File"); + #endif + ++int rtw_debug_level = _drv_err_; ++module_param(rtw_debug_level, int, 0644); ++MODULE_PARM_DESC(rtw_debug_level,"Set Driver Debug Verbosity"); ++ + int _netdev_open(struct net_device *pnetdev); + int netdev_open (struct net_device *pnetdev); + static int netdev_close (struct net_device *pnetdev); +@@ -347,6 +351,7 @@ static uint loadparam(struct adapter *padapter, _nic_hdl pnetdev) + registry_par->qos_opt_enable = (u8)rtw_qos_opt_enable; + + registry_par->hiq_filter = (u8)rtw_hiq_filter; ++ GlobalDebugLevel = rtw_debug_level; + return status; + } + +-- +2.8.3 + diff --git a/buildroot/package/rtl8723bs/Config.in b/buildroot/package/rtl8723bs/Config.in new file mode 100644 index 0000000..3d5dea4 --- /dev/null +++ b/buildroot/package/rtl8723bs/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_RTL8723BS + bool "rtl8723bs" + depends on BR2_LINUX_KERNEL + help + rtl8723bs wifi driver + + https://github.com/hadess/rtl8723bs + +comment "rtl8723bs needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/rtl8723bs/rtl8723bs.mk b/buildroot/package/rtl8723bs/rtl8723bs.mk new file mode 100644 index 0000000..4c6303c --- /dev/null +++ b/buildroot/package/rtl8723bs/rtl8723bs.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# rtl8723bs +# +################################################################################ + +RTL8723BS_VERSION = 11ab92d8ccd71c80f0102828366b14ef6b676fb2 +RTL8723BS_SITE = $(call github,hadess,rtl8723bs,$(RTL8723BS_VERSION)) +RTL8723BS_LICENSE = GPL-2.0, proprietary (*.bin firmware blobs) + +RTL8723BS_MODULE_MAKE_OPTS = \ + CONFIG_RTL8723BS=m \ + KVER=$(LINUX_VERSION_PROBED) \ + KSRC=$(LINUX_DIR) + +RTL8723BS_BINS = rtl8723bs_ap_wowlan.bin rtl8723bs_wowlan.bin \ + rtl8723bs_bt.bin rtl8723bs_nic.bin + +define RTL8723BS_INSTALL_FIRMWARE + $(foreach bin, $(RTL8723BS_BINS), \ + $(INSTALL) -D -m 644 $(@D)/$(bin) $(TARGET_DIR)/lib/firmware/rtlwifi/$(bin) + ) +endef +RTL8723BS_POST_INSTALL_TARGET_HOOKS += RTL8723BS_INSTALL_FIRMWARE + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/rtl8723bu/Config.in b/buildroot/package/rtl8723bu/Config.in new file mode 100644 index 0000000..266a794 --- /dev/null +++ b/buildroot/package/rtl8723bu/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_RTL8723BU + bool "rtl8723bu" + depends on BR2_LINUX_KERNEL + help + rtl8723bu wifi driver + + https://github.com/lwfinger/rtl8723bu + +comment "rtl8723bu needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/rtl8723bu/rtl8723bu.hash b/buildroot/package/rtl8723bu/rtl8723bu.hash new file mode 100644 index 0000000..ef4edda --- /dev/null +++ b/buildroot/package/rtl8723bu/rtl8723bu.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 da04cffc306d9738abdc67d234b8948db6ca97ed77760c68d99d18817839a513 rtl8723bu-b922079a090dcaad58179d478442ff97f18521c9.tar.gz diff --git a/buildroot/package/rtl8723bu/rtl8723bu.mk b/buildroot/package/rtl8723bu/rtl8723bu.mk new file mode 100644 index 0000000..942b13b --- /dev/null +++ b/buildroot/package/rtl8723bu/rtl8723bu.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# rtl8723bu +# +################################################################################ + +RTL8723BU_VERSION = b922079a090dcaad58179d478442ff97f18521c9 +RTL8723BU_SITE = $(call github,lwfinger,rtl8723bu,$(RTL8723BU_VERSION)) +RTL8723BU_LICENSE = GPL-2.0, proprietary (*.bin firmware blobs) + +RTL8723BU_MODULE_MAKE_OPTS = \ + KVER=$(LINUX_VERSION_PROBED) \ + KSRC=$(LINUX_DIR) + +define RTL8723BU_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 644 $(@D)/rtl8723b_fw.bin $(TARGET_DIR)/lib/firmware/rtlwifi/rtl8723b_fw.bin +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/rtl8821au/Config.in b/buildroot/package/rtl8821au/Config.in new file mode 100644 index 0000000..9827ad5 --- /dev/null +++ b/buildroot/package/rtl8821au/Config.in @@ -0,0 +1,10 @@ +comment "rtl8821au needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_RTL8821AU + bool "rtl8821au" + depends on BR2_LINUX_KERNEL + help + rtl8821au wifi driver + + https://github.com/paralin/rtl8821au diff --git a/buildroot/package/rtl8821au/rtl8821au.hash b/buildroot/package/rtl8821au/rtl8821au.hash new file mode 100644 index 0000000..f35d579 --- /dev/null +++ b/buildroot/package/rtl8821au/rtl8821au.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 23889fe4bf518dbadcbfac613f64a74bbce177267d9337a98843e4e7de8f1896 rtl8821au-b018b446fb0729fa659e7eead475d6c13f192642.tar.gz diff --git a/buildroot/package/rtl8821au/rtl8821au.mk b/buildroot/package/rtl8821au/rtl8821au.mk new file mode 100644 index 0000000..b6ad431 --- /dev/null +++ b/buildroot/package/rtl8821au/rtl8821au.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# rtl8821au +# +################################################################################ + +RTL8821AU_VERSION = b018b446fb0729fa659e7eead475d6c13f192642 +RTL8821AU_SITE = $(call github,abperiasamy,rtl8812AU_8821AU_linux,$(RTL8821AU_VERSION)) +RTL8821AU_LICENSE = GPL-2.0 +RTL8821AU_LICENSE_FILES = LICENSE + +RTL8821AU_MODULE_MAKE_OPTS = \ + CONFIG_RTL8812AU_8821AU=m \ + KVER=$(LINUX_VERSION_PROBED) \ + USER_EXTRA_CFLAGS="-DCONFIG_$(call qstrip,$(BR2_ENDIAN))_ENDIAN \ + -Wno-error" + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/rtmpdump/Config.in b/buildroot/package/rtmpdump/Config.in new file mode 100644 index 0000000..5e9c508 --- /dev/null +++ b/buildroot/package/rtmpdump/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_RTMPDUMP + bool "librtmp" + select BR2_PACKAGE_ZLIB + help + rtmpdump - RTMPDump Real-Time Messaging Protocol API + Only librtmp is installed by this package. + + http://rtmpdump.mplayerhq.hu diff --git a/buildroot/package/rtmpdump/rtmpdump.mk b/buildroot/package/rtmpdump/rtmpdump.mk new file mode 100644 index 0000000..f5d430c --- /dev/null +++ b/buildroot/package/rtmpdump/rtmpdump.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# rtmpdump +# +################################################################################ + +RTMPDUMP_VERSION = fa8646daeb19dfd12c181f7d19de708d623704c0 +RTMPDUMP_SITE = git://git.ffmpeg.org/rtmpdump +RTMPDUMP_INSTALL_STAGING = YES +# Note that rtmpdump is GPL-2.0 but librtmp has its own license and since we only +# care about librtmp, it's LGPL-2.1+ +RTMPDUMP_LICENSE = LGPL-2.1+ +RTMPDUMP_LICENSE_FILES = librtmp/COPYING +RTMPDUMP_DEPENDENCIES = zlib + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +RTMPDUMP_DEPENDENCIES += gnutls +RTMPDUMP_CRYPTO = GNUTLS +else ifeq ($(BR2_PACKAGE_OPENSSL),y) +RTMPDUMP_DEPENDENCIES += openssl +RTMPDUMP_CRYPTO = OPENSSL +else +# no crypto +RTMPDUMP_CRYPTO = +endif + +RTMPDUMP_CFLAGS = $(TARGET_CFLAGS) + +ifneq ($(BR2_STATIC_LIBS),y) +RTMPDUMP_CFLAGS += -fPIC +else +RTMPDUMP_SHARED = "SHARED=" +endif + +RTMPDUMP_MAKE_FLAGS = \ + CRYPTO=$(RTMPDUMP_CRYPTO) \ + prefix=/usr \ + $(RTMPDUMP_SHARED) + +define RTMPDUMP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(RTMPDUMP_MAKE_FLAGS) \ + XCFLAGS="$(RTMPDUMP_CFLAGS)" \ + XLDFLAGS="$(TARGET_LDFLAGS)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + -C $(@D)/librtmp +endef + +define RTMPDUMP_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/librtmp install DESTDIR=$(STAGING_DIR) $(RTMPDUMP_MAKE_FLAGS) +endef + +define RTMPDUMP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/librtmp install DESTDIR=$(TARGET_DIR) $(RTMPDUMP_MAKE_FLAGS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rtorrent/0001-cross_compile.patch b/buildroot/package/rtorrent/0001-cross_compile.patch new file mode 100644 index 0000000..a8ad696 --- /dev/null +++ b/buildroot/package/rtorrent/0001-cross_compile.patch @@ -0,0 +1,65 @@ +From d62f7474289970d5be3fd658dd6ace4489408bdf Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Mon, 5 Oct 2015 00:52:26 +0100 +Subject: [PATCH] Fix cross compilation, based on OpenWRT patch. + +[Vincent: tweak the patch for version 0.9.6] + +Signed-off-by: Gustavo Zacarias +Signed-off-by: Vicente Olivert Riera +--- + configure.ac | 1 - + scripts/checks.m4 | 2 +- + scripts/common.m4 | 4 ++-- + 3 files changed, 3 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index ba5bbf2..0821d4e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4,7 +4,6 @@ AC_DEFINE(API_VERSION, 9, api version) + + AM_INIT_AUTOMAKE + AC_CONFIG_HEADERS(config.h) +-AM_PATH_CPPUNIT(1.9.6) + + AC_PROG_CXX + AC_PROG_LIBTOOL +diff --git a/scripts/checks.m4 b/scripts/checks.m4 +index 598f39b..0e5abe0 100644 +--- a/scripts/checks.m4 ++++ b/scripts/checks.m4 +@@ -96,7 +96,7 @@ AC_DEFUN([TORRENT_CHECK_KQUEUE], [ + AC_DEFUN([TORRENT_CHECK_KQUEUE_SOCKET_ONLY], [ + AC_MSG_CHECKING(whether kqueue supports pipes and ptys) + +- AC_RUN_IFELSE([AC_LANG_SOURCE([ ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include + #include + #include +diff --git a/scripts/common.m4 b/scripts/common.m4 +index 5127624..cc68269 100644 +--- a/scripts/common.m4 ++++ b/scripts/common.m4 +@@ -223,7 +223,7 @@ dnl Need to fix this so that it uses the stuff defined by the system. + AC_DEFUN([TORRENT_CHECK_EXECINFO], [ + AC_MSG_CHECKING(for execinfo.h) + +- AC_RUN_IFELSE([AC_LANG_SOURCE([ ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include + int main() { backtrace((void**)0, 0); backtrace_symbols((char**)0, 0); return 0;} + ])], +@@ -238,7 +238,7 @@ AC_DEFUN([TORRENT_CHECK_EXECINFO], [ + AC_DEFUN([TORRENT_CHECK_ALIGNED], [ + AC_MSG_CHECKING(the byte alignment) + +- AC_RUN_IFELSE([AC_LANG_SOURCE([ ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ + #include + int main() { + char buf@<:@8@:>@ = { 0, 0, 0, 0, 1, 0, 0, 0 }; +-- +1.7.1 + diff --git a/buildroot/package/rtorrent/Config.in b/buildroot/package/rtorrent/Config.in new file mode 100644 index 0000000..190e50f --- /dev/null +++ b/buildroot/package/rtorrent/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_RTORRENT + bool "rtorrent" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBTORRENT + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + help + BitTorrent Client using libtorrent + + https://github.com/rakshasa/rtorrent + +comment "rtorrent needs a toolchain w/ C++, threads, wchar" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_1 && BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/buildroot/package/rtorrent/rtorrent.hash b/buildroot/package/rtorrent/rtorrent.hash new file mode 100644 index 0000000..15257ac --- /dev/null +++ b/buildroot/package/rtorrent/rtorrent.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1e69c24f1f26f8f07d58d673480dc392bfc4317818c1115265b08a7813ff5b0e rtorrent-0.9.6.tar.gz diff --git a/buildroot/package/rtorrent/rtorrent.mk b/buildroot/package/rtorrent/rtorrent.mk new file mode 100644 index 0000000..51dc9ee --- /dev/null +++ b/buildroot/package/rtorrent/rtorrent.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# rtorrent +# +################################################################################ + +RTORRENT_VERSION = 0.9.6 +RTORRENT_SITE = http://rtorrent.net/downloads +RTORRENT_DEPENDENCIES = host-pkgconf libcurl libtorrent ncurses +RTORRENT_AUTORECONF = YES +RTORRENT_LICENSE = GPL-2.0 +RTORRENT_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/rtptools/0001-host2ip.c-disable-NIS-support-for-toolchains-lacking.patch b/buildroot/package/rtptools/0001-host2ip.c-disable-NIS-support-for-toolchains-lacking.patch new file mode 100644 index 0000000..1bf7c13 --- /dev/null +++ b/buildroot/package/rtptools/0001-host2ip.c-disable-NIS-support-for-toolchains-lacking.patch @@ -0,0 +1,73 @@ +From f8ffde6c0c0a9008cd65601f6c9712899106e42c Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 11 Apr 2016 23:03:48 +0200 +Subject: [PATCH] host2ip.c: disable NIS support for toolchains lacking SUN RPC + +Some toolchains are missing SUN RPC; this is the case for toolchains +based on uClibc, and some glibc-based toolchains (when SUN RPC headers +were taken out of glibc). + +Add a configure check for the required SUN RPC header, and make the code +using SUN RPC conditional on the result. + +Also drop the legacy AM_C_PROTOTYPES: it is no longer supported by +autoconf and breaks autoreconf. + +Signed-off-by: Peter Korsgaard +[yann.morin.1998@free.fr: add the ./configure check; do not include + features.h; do not check specifically for uClibc] +Signed-off-by: "Yann E. MORIN" +--- + configure.in | 3 ++- + host2ip.c | 5 +++++ + 2 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/configure.in b/configure.in +index de394cf..889e6ed 100644 +--- a/configure.in ++++ b/configure.in +@@ -39,9 +39,10 @@ CU_CHECK_LIB(socket, socket) + dnl Checks for header files. + AC_HEADER_STDC + AC_CHECK_HEADERS(search.h sys/time.h unistd.h) ++AC_CHECK_HEADER([rpcsvc/ypclnt.h], ++ [AC_DEFINE([HAVE_YP],[1],[Define to 1 if you have rpcsvc/ypclnt.h])]) + + dnl Checks for typedefs, structures, and compiler characteristics. +-AM_C_PROTOTYPES + AC_C_CONST + AC_C_BIGENDIAN + AC_TYPE_UID_T +diff --git a/host2ip.c b/host2ip.c +index b094343..95014cd 100644 +--- a/host2ip.c ++++ b/host2ip.c +@@ -3,7 +3,10 @@ + #include /* gethostbyname() */ + #include /* sockaddr_in */ + #include /* inet_addr() */ ++#ifdef HAVE_YP + #include /* YP */ ++#endif ++ + #include /* strlen() added by Akira 12/27/01 */ + #include "sysdep.h" + +@@ -28,6 +31,7 @@ struct in_addr host2ip(char *host) + else if ((hep = gethostbyname(host))) { + in = *(struct in_addr *)(hep->h_addr_list[0]); + } ++#ifdef HAVE_YP + /* As a last resort, try YP. */ + else { + static char *domain = 0; /* YP domain */ +@@ -39,5 +43,6 @@ struct in_addr host2ip(char *host) + in.s_addr = inet_addr(value); + } + } ++#endif + return in; + } /* host2ip */ +-- +1.9.1 + diff --git a/buildroot/package/rtptools/Config.in b/buildroot/package/rtptools/Config.in new file mode 100644 index 0000000..80bbb7a --- /dev/null +++ b/buildroot/package/rtptools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_RTPTOOLS + bool "rtptools" + help + The rtptools distribution consists of a number of small + applications that can be used for processing RTP data. + + http://www.cs.columbia.edu/irt/software/rtptools/ diff --git a/buildroot/package/rtptools/rtptools.hash b/buildroot/package/rtptools/rtptools.hash new file mode 100644 index 0000000..bf5b4a6 --- /dev/null +++ b/buildroot/package/rtptools/rtptools.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 99d681f6e328486fa1fc16581b0a5974e31eb2708101683ee9c8a0b6bed31050 rtptools-1.20.tar.gz diff --git a/buildroot/package/rtptools/rtptools.mk b/buildroot/package/rtptools/rtptools.mk new file mode 100644 index 0000000..7990e8f --- /dev/null +++ b/buildroot/package/rtptools/rtptools.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# rtptools +# +################################################################################ + +RTPTOOLS_VERSION = 1.20 +RTPTOOLS_SITE = http://www.cs.columbia.edu/irt/software/rtptools/download +RTPTOOLS_LICENSE = MIT-like (research and education only) +RTPTOOLS_LICENSE_FILES = COPYRIGHT +RTPTOOLS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/rubix/0001-dont-use-legacy-functions.patch b/buildroot/package/rubix/0001-dont-use-legacy-functions.patch new file mode 100644 index 0000000..9c34aee --- /dev/null +++ b/buildroot/package/rubix/0001-dont-use-legacy-functions.patch @@ -0,0 +1,18 @@ +Use strstr() instead of index(), since index() is a legacy function +and it may not be available in uClibc, depending on the configuration. + +Signed-off-by: Thomas Petazzoni + +Index: rubix-1.0.5/cube.c +=================================================================== +--- rubix-1.0.5.orig/cube.c 2010-02-14 14:19:05.000000000 +0100 ++++ rubix-1.0.5/cube.c 2010-02-14 14:19:14.000000000 +0100 +@@ -257,7 +257,7 @@ + if (i==-1) goto finish; + if (buffer[0]=='%') goto new_section; + buffer[0]=toupper(buffer[0]); +- ptr = index(buffer, '='); ++ ptr = strstr(buffer, '='); + if (ptr) { + ++ptr; + while (isspace(*ptr)) ++ptr; diff --git a/buildroot/package/rubix/0002-misc-fixes.patch b/buildroot/package/rubix/0002-misc-fixes.patch new file mode 100644 index 0000000..3ce6dad --- /dev/null +++ b/buildroot/package/rubix/0002-misc-fixes.patch @@ -0,0 +1,135 @@ +diff -Nrup rubix-1.0.5/fillpoly.c rubix-1.0.5-avr32/fillpoly.c +--- rubix-1.0.5/fillpoly.c 2003-10-12 15:41:43.000000000 -0400 ++++ rubix-1.0.5-avr32/fillpoly.c 2008-02-29 12:39:51.000000000 -0500 +@@ -435,7 +435,7 @@ void fill_lines(device *d, int thecol) + ); + #endif + } +- } else if (d->depth==16) { /* here 16bpp */ ++ } else if ((d->depth==16) | (d->depth==15)) { /* here 16bpp */ + register int i; + #ifndef PC_ARCHI + register int j; +diff -Nrup rubix-1.0.5/line.c rubix-1.0.5-avr32/line.c +--- rubix-1.0.5/line.c 2003-10-12 14:15:19.000000000 -0400 ++++ rubix-1.0.5-avr32/line.c 2008-02-29 12:39:51.000000000 -0500 +@@ -1317,7 +1317,7 @@ void drawline(device *d, line *l) + #endif + if (d->depth==8) + drawline8(d, l); +- else if (d->depth==16) ++ else if ((d->depth==16) | (d->depth==15)) + drawline16(d, l); + else if (d->depth==24) + drawline24(d, l); +diff -Nrup rubix-1.0.5/Makefile rubix-1.0.5-avr32/Makefile +--- rubix-1.0.5/Makefile 2003-12-04 14:27:58.000000000 -0500 ++++ rubix-1.0.5-avr32/Makefile 2008-02-29 12:58:30.000000000 -0500 +@@ -11,21 +11,17 @@ + # Customize to fit your needs (especially if it does not work for now). + + LANGUAGE=ENGLISH +-GAMESDIR=/usr/games + + #architecture=-DPC_ARCHI + + # For Solaris + #EXTRALIBS=-lsocket + +-CC=gcc + CFLAGS=-Wall -O3 -fomit-frame-pointer -ffast-math \ + -DGAMESDIR="\"$(GAMESDIR)\"" \ + -D$(LANGUAGE) $(architecture) + + #CFLAGS=-Wall -g -ffast-math -Iplayer $(architecture) +-XINC=-I/usr/X11R6/include +-XLIB=-L/usr/X11R6/lib -lX11 + + #the following should not be changed. + +@@ -37,7 +33,7 @@ rubix : $(OBJ) + + install : + mkdir -p $(GAMESDIR) +- install -c -s rubix $(GAMESDIR) ++ install -c rubix $(GAMESDIR) + + clean : + rm -f *.o *~ core *.bak *.dat gmon.out +diff -Nrup rubix-1.0.5/screen.c rubix-1.0.5-avr32/screen.c +--- rubix-1.0.5/screen.c 2004-04-26 04:26:05.000000000 -0400 ++++ rubix-1.0.5-avr32/screen.c 2008-02-29 12:39:51.000000000 -0500 +@@ -80,11 +80,17 @@ void error_statement(SCREEN *s) + + int reset_data_buffers(SCREEN *s) + { ++ int temp; + + if (s->im) + XDestroyImage(s->im); ++ if (s->depth == 15) { ++ temp=16; ++ } else { ++ temp=s->depth; ++ } + +- s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*s->depth); ++ s->buffer=(char *)malloc(((SCREEN_X+7)/8)*SCREEN_Y*temp); + + if (!s->buffer) { + error_statement(s); +@@ -106,7 +112,7 @@ int reset_data_buffers(SCREEN *s) + */ + /* Sed - december 2003 - no it has to be 8 */ + s->im=XCreateImage(s->d, DefaultVisual(s->d, DefaultScreen(s->d)), +- s->depth==32?24:s->depth, ZPixmap, ++ s->depth, ZPixmap, + 0, s->buffer, SCREEN_X, SCREEN_Y, 8, 0); + + if (!s->im) { +@@ -139,8 +145,8 @@ int init_screen(SCREEN *s) + + s->depth=DefaultDepth(s->d, DefaultScreen(s->d)); + +- if (s->depth!=8 && s->depth!=16 && s->depth!=24) { +- fprintf(stderr, "screen depth not supported (only 8, 16 and 24bpp (which means 32bpp too) handled\n"); ++ if (s->depth!=8 && s->depth!=15 && s->depth!=16 && s->depth!=24) { ++ fprintf(stderr, "screen depth not supported (only 8, 15, 16 and 24bpp (which means 32bpp too) handled\n"); + XCloseDisplay(s->d); + s->d=(Display *)0; + return -1; +@@ -182,10 +188,10 @@ int init_screen(SCREEN *s) + + /* let's create and map our window */ + s->w=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0, +- SCREEN_X, SCREEN_Y, 3, s->depth==32?24:s->depth, ++ SCREEN_X, SCREEN_Y, 3, s->depth, + CopyFromParent, CopyFromParent, 0, NULL); + s->h=XCreateWindow(s->d, DefaultRootWindow(s->d), 0, 0, +- HELP_X, HELP_Y, 3, s->depth==32?24:s->depth, ++ HELP_X, HELP_Y, 3, s->depth, + CopyFromParent, CopyFromParent, 0, NULL); + + xch.res_name = "rubix"; +@@ -946,13 +952,18 @@ void close_screen(SCREEN *s) + void clear_screen(SCREEN *s) + { + /* fill s->im with pixel[10], avoid XPutPixel which is rather slow... */ +- int i, w, dw; ++ int i, w, dw, temp; ++ if (s->depth == 15) { ++ temp = 16; ++ } else { ++ temp = s->depth; ++ } + w = (SCREEN_X+7)/8; +- dw = s->depth/8; ++ dw = temp/8; + XPutPixel(s->im, 0, 0, pixel[10]); + for (i=1; i<8*w; i++) + memcpy(s->buffer + i*dw, s->buffer, dw); +- w = w * s->depth; ++ w = w * temp; + for (i=1; ibuffer + i*w, s->buffer, w); + } diff --git a/buildroot/package/rubix/Config.in b/buildroot/package/rubix/Config.in new file mode 100644 index 0000000..7afc0ae --- /dev/null +++ b/buildroot/package/rubix/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_RUBIX + bool "rubix" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + help + A 3D rubiks cube game for X + + http://mirror.egtvedt.no/avr32linux.org/twiki/pub/Main/Rubix diff --git a/buildroot/package/rubix/rubix.hash b/buildroot/package/rubix/rubix.hash new file mode 100644 index 0000000..90fc9cd --- /dev/null +++ b/buildroot/package/rubix/rubix.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d3c6bf8bfa891e72baac0250a79d26045ddb4412b72d90de7c46091c07516b43 rubix-1.0.5.tar.bz2 diff --git a/buildroot/package/rubix/rubix.mk b/buildroot/package/rubix/rubix.mk new file mode 100644 index 0000000..b808bc0 --- /dev/null +++ b/buildroot/package/rubix/rubix.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# rubix +# +################################################################################ + +RUBIX_VERSION = 1.0.5 +RUBIX_SOURCE = rubix-$(RUBIX_VERSION).tar.bz2 +RUBIX_SITE = http://mirror.egtvedt.no/avr32linux.org/twiki/pub/Main/Rubix +RUBIX_LICENSE = Public Domain +RUBIX_LICENSE_FILES = LICENCE +RUBIX_DEPENDENCIES = xlib_libX11 + +RUBIX_MAKE_OPTS = \ + CC="$(TARGET_CC)" \ + XINC="-I$(STAGING_DIR)/usr/include/X11" \ + XLIB="-L$(STAGING_DIR)/usr/lib -lX11" + +RUBIX_INSTALL_TARGET_OPTS = GAMESDIR=$(TARGET_DIR)/usr/games install + +$(eval $(autotools-package)) diff --git a/buildroot/package/ruby/Config.in b/buildroot/package/ruby/Config.in new file mode 100644 index 0000000..141db90 --- /dev/null +++ b/buildroot/package/ruby/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_RUBY + bool "ruby" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + Object Oriented Scripting Language. + + http://www.ruby-lang.org/ + +comment "ruby needs a toolchain w/ wchar, threads, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/ruby/ruby.hash b/buildroot/package/ruby/ruby.hash new file mode 100644 index 0000000..d066186 --- /dev/null +++ b/buildroot/package/ruby/ruby.hash @@ -0,0 +1,6 @@ +# From https://www.ruby-lang.org/en/news/2017/09/14/ruby-2-4-2-released/ +sha256 748a8980d30141bd1a4124e11745bb105b436fb1890826e0d2b9ea31af27f735 ruby-2.4.2.tar.xz +# License files, Locally calculated +sha256 5cda9584acd5e1096276a375085b7e659fa67a072fd69ec2c3931e54f7f563bb LEGAL +sha256 f5eb1b2956d5f7a67b2e5722a3749bc2fe86f9c580f2e3f5a08519cf073b5864 COPYING +sha256 a5e3042dacb53eebda91f3b1caefbfec8307711df8c4ed1ed20e4e97c43307a4 BSDL diff --git a/buildroot/package/ruby/ruby.mk b/buildroot/package/ruby/ruby.mk new file mode 100644 index 0000000..4bf1a14 --- /dev/null +++ b/buildroot/package/ruby/ruby.mk @@ -0,0 +1,102 @@ +################################################################################ +# +# ruby +# +################################################################################ + +RUBY_VERSION_MAJOR = 2.4 +RUBY_VERSION = $(RUBY_VERSION_MAJOR).2 +RUBY_VERSION_EXT = 2.4.0 +RUBY_SITE = http://cache.ruby-lang.org/pub/ruby/$(RUBY_VERSION_MAJOR) +RUBY_SOURCE = ruby-$(RUBY_VERSION).tar.xz +RUBY_DEPENDENCIES = host-pkgconf host-ruby +HOST_RUBY_DEPENDENCIES = host-pkgconf +RUBY_MAKE_ENV = $(TARGET_MAKE_ENV) +RUBY_CONF_OPTS = --disable-install-doc --disable-rpath --disable-rubygems +HOST_RUBY_CONF_OPTS = \ + --disable-install-doc \ + --with-out-ext=curses,openssl,readline \ + --without-gmp +RUBY_LICENSE = Ruby or BSD-2-Clause, BSD-3-Clause, others +RUBY_LICENSE_FILES = LEGAL COPYING BSDL + +RUBY_CFLAGS = $(TARGET_CFLAGS) +# With some SuperH toolchains (like Sourcery CodeBench 2012.09), ruby fails to +# build with 'pcrel too far'. This seems to be caused by the -Os option we pass +# by default. To fix the problem, use standard -O2 optimization instead. +ifeq ($(BR2_sh),y) +RUBY_CFLAGS += -O2 +endif +RUBY_CONF_ENV = CFLAGS="$(RUBY_CFLAGS)" + +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y) +# On uClibc, finite, isinf and isnan are not directly implemented as +# functions. Instead math.h #define's these to __finite, __isinf and +# __isnan, confusing the Ruby configure script. Tell it that they +# really are available. +RUBY_CONF_ENV += \ + ac_cv_func_finite=yes \ + ac_cv_func_isinf=yes \ + ac_cv_func_isnan=yes +endif + +ifeq ($(BR2_bfin),y) +RUBY_CONF_ENV += ac_cv_func_dl_iterate_phdr=no +# Blackfin doesn't have FFI closure support, needed by the fiddle +# extension. +RUBY_CONF_OPTS += --with-out-ext=fiddle +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_SSP),) +RUBY_CONF_ENV += stack_protector=no +endif + +# Force optionals to build before we do +ifeq ($(BR2_PACKAGE_BERKELEYDB),y) +RUBY_DEPENDENCIES += berkeleydb +endif +ifeq ($(BR2_PACKAGE_GDBM),y) +RUBY_DEPENDENCIES += gdbm +endif +ifeq ($(BR2_PACKAGE_LIBYAML),y) +RUBY_DEPENDENCIES += libyaml +endif +ifeq ($(BR2_PACKAGE_NCURSES),y) +RUBY_DEPENDENCIES += ncurses +endif +ifeq ($(BR2_PACKAGE_OPENSSL),y) +RUBY_DEPENDENCIES += openssl +endif +ifeq ($(BR2_PACKAGE_READLINE),y) +RUBY_DEPENDENCIES += readline +endif +ifeq ($(BR2_PACKAGE_ZLIB),y) +RUBY_DEPENDENCIES += zlib +endif +ifeq ($(BR2_PACKAGE_GMP),y) +RUBY_DEPENDENCIES += gmp +RUBY_CONF_OPTS += --with-gmp +else +RUBY_CONF_OPTS += --without-gmp +endif + +# workaround for amazing build failure, see +# http://lists.busybox.net/pipermail/buildroot/2014-December/114273.html +define RUBY_REMOVE_VERCONF_H + rm -f $(@D)/verconf.h +endef +RUBY_POST_CONFIGURE_HOOKS += RUBY_REMOVE_VERCONF_H + +# Remove rubygems and friends, as they need extensions that aren't +# built and a target compiler. +RUBY_EXTENSIONS_REMOVE = rake* rdoc* rubygems* +define RUBY_REMOVE_RUBYGEMS + rm -f $(addprefix $(TARGET_DIR)/usr/bin/, gem rdoc ri rake) + rm -rf $(TARGET_DIR)/usr/lib/ruby/gems + rm -rf $(addprefix $(TARGET_DIR)/usr/lib/ruby/$(RUBY_VERSION_EXT)/, \ + $(RUBY_EXTENSIONS_REMOVE)) +endef +RUBY_POST_INSTALL_TARGET_HOOKS += RUBY_REMOVE_RUBYGEMS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/runc/Config.in b/buildroot/package/runc/Config.in new file mode 100644 index 0000000..fd5dee7 --- /dev/null +++ b/buildroot/package/runc/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_RUNC + bool "runc" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + runC is a CLI tool for spawning and running containers + according to the OCP specification. + + https://github.com/opencontainers/runc + +comment "runc needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS && \ + BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/runc/runc.hash b/buildroot/package/runc/runc.hash new file mode 100644 index 0000000..3e188c5 --- /dev/null +++ b/buildroot/package/runc/runc.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 b5c50d7d9a5f610d5424f96196efa306ec708fd9299302dd919545099c16b7c1 runc-9c2d8d184e5da67c95d601382adf14862e4f2228.tar.gz diff --git a/buildroot/package/runc/runc.mk b/buildroot/package/runc/runc.mk new file mode 100644 index 0000000..fb3fec2 --- /dev/null +++ b/buildroot/package/runc/runc.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# runc +# +################################################################################ + +RUNC_VERSION = 9c2d8d184e5da67c95d601382adf14862e4f2228 +RUNC_SITE = $(call github,opencontainers,runc,$(RUNC_VERSION)) +RUNC_LICENSE = Apache-2.0 +RUNC_LICENSE_FILES = LICENSE + +RUNC_DEPENDENCIES = host-go + +RUNC_GOPATH = "$(@D)/Godeps/_workspace" +RUNC_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ + CGO_ENABLED=1 \ + GOBIN="$(@D)/bin" \ + GOPATH="$(RUNC_GOPATH)" \ + PATH=$(BR_PATH) + +RUNC_GLDFLAGS = \ + -X main.gitCommit=$(RUNC_VERSION) + +ifeq ($(BR2_STATIC_LIBS),y) +RUNC_GLDFLAGS += -extldflags '-static' +endif + +RUNC_GOTAGS = cgo static_build + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +RUNC_GOTAGS += seccomp +RUNC_DEPENDENCIES += libseccomp host-pkgconf +endif + +define RUNC_CONFIGURE_CMDS + mkdir -p $(RUNC_GOPATH)/src/github.com/opencontainers + ln -s $(@D) $(RUNC_GOPATH)/src/github.com/opencontainers/runc +endef + +define RUNC_BUILD_CMDS + cd $(@D) && $(RUNC_MAKE_ENV) $(HOST_DIR)/bin/go \ + build -v -o $(@D)/bin/runc \ + -tags "$(RUNC_GOTAGS)" -ldflags "$(RUNC_GLDFLAGS)" . +endef + +define RUNC_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/runc $(TARGET_DIR)/usr/bin/runc +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/rust-bin/rust-bin.hash b/buildroot/package/rust-bin/rust-bin.hash new file mode 100644 index 0000000..5b34a6a --- /dev/null +++ b/buildroot/package/rust-bin/rust-bin.hash @@ -0,0 +1,33 @@ +# From https://static.rust-lang.org/dist/rustc-1.23.0-i686-unknown-linux-gnu.tar.xz.sha256 +sha256 243de2826b2d545b8428414a3f7e86ce5e86163ec927a374958052a047b55e69 rustc-1.23.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rustc-1.23.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +sha256 d72674a683dcc8a07ad72d6ae08b96a7dfc72cf08433e2ae69c0f8a2b9c79c17 rustc-1.23.0-x86_64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-aarch64-unknown-linux-gnu.tar.xz.sha256 +sha256 0d9c976c46a277ef860ce5766387ea8e40f84657e5f9962cba91be62a00ca345 rust-std-1.23.0-aarch64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-arm-unknown-linux-gnueabi.tar.xz.sha256 +sha256 3d7ce58f6d2bbf6faf91049893e96611a172b0af02d98190e36a49e8b0f974ee rust-std-1.23.0-arm-unknown-linux-gnueabi.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-arm-unknown-linux-gnueabihf.tar.xz.sha256 +sha256 0a2a43668c2ddc2516e85e1c097d2672acaf61541d2b70f40daba548b3ccbee1 rust-std-1.23.0-arm-unknown-linux-gnueabihf.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-armv7-unknown-linux-gnueabihf.tar.xz.sha256 +sha256 b2f7f4e2e31d86302e929d0435b6f40778c22fc9306f0850b0edc4738ff2634e rust-std-1.23.0-armv7-unknown-linux-gnueabihf.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-i686-unknown-linux-gnu.tar.xz.sha256 +sha256 f9659f844ccd2e25e9f01a49fb7adf0ce26cbbec7a4df7081dd2d0929a86b2d3 rust-std-1.23.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-mips-unknown-linux-gnu.tar.xz.sha256 +sha256 8324d9c1eacba0de31fff29841d0f0567261489ee46a270e30be929095bfe19a rust-std-1.23.0-mips-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-mips64-unknown-linux-gnuabi64.tar.xz.sha256 +sha256 521f70f3346ff8e28e33350fd5ad9bbba7dfc9038389f3965bcfa2f1d1a498a5 rust-std-1.23.0-mips64-unknown-linux-gnuabi64.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-mips64el-unknown-linux-gnuabi64.tar.xz.sha256 +sha256 d08f5792bd0d4f5d3d81a4ec1b3a2b36e7c389de2ecf2e777e390461ff015d08 rust-std-1.23.0-mips64el-unknown-linux-gnuabi64.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-mipsel-unknown-linux-gnu.tar.xz.sha256 +sha256 77291fff357b9e1764a4d7975bdbecdb37aeb0d37d85ccb68f7d785f4da1a056 rust-std-1.23.0-mipsel-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-powerpc-unknown-linux-gnu.tar.xz.sha256 +sha256 d1b862d32c4921058ff4ea5b7fead3b2954b5f0f036603b1c58a600e602d1f25 rust-std-1.23.0-powerpc-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-powerpc64-unknown-linux-gnu.tar.xz.sha256 +sha256 e03bf7907914c88d2f19e719f07641b1b1ffbb65cf9daae8b028f4ab4619b4ff rust-std-1.23.0-powerpc64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-powerpc64le-unknown-linux-gnu.tar.xz.sha256 +sha256 674f74245341119409e203109c22d432d0ed3312a6ff4d3b03cab251e61cc53a rust-std-1.23.0-powerpc64le-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.23.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +sha256 0d87225dd081c7ea5002fdeb21983d23bc52fa37d23c88d5c97b2c44660f8af9 rust-std-1.23.0-x86_64-unknown-linux-gnu.tar.xz +# Locally generated +sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/buildroot/package/rust-bin/rust-bin.mk b/buildroot/package/rust-bin/rust-bin.mk new file mode 100644 index 0000000..cd5844b --- /dev/null +++ b/buildroot/package/rust-bin/rust-bin.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# rust-bin +# +################################################################################ + +RUST_BIN_VERSION = 1.23.0 +RUST_BIN_SITE = https://static.rust-lang.org/dist +RUST_BIN_LICENSE = Apache-2.0 or MIT +RUST_BIN_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +HOST_RUST_BIN_PROVIDES = host-rustc + +HOST_RUST_BIN_SOURCE = rustc-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAME).tar.xz + +HOST_RUST_BIN_EXTRA_DOWNLOADS = \ + rust-std-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAME).tar.xz \ + rust-std-$(RUST_BIN_VERSION)-$(RUSTC_TARGET_NAME).tar.xz + +HOST_RUST_BIN_LIBSTD_HOST_PREFIX = rust-std-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAME)/rust-std-$(RUSTC_HOST_NAME) + +define HOST_RUST_BIN_LIBSTD_EXTRACT + mkdir -p $(@D)/std + $(foreach f,$(HOST_RUST_BIN_EXTRA_DOWNLOADS), \ + $(call suitable-extractor,$(f)) $(DL_DIR)/$(f) | \ + $(TAR) -C $(@D)/std $(TAR_OPTIONS) - + ) + cd $(@D)/rustc/lib/rustlib; \ + ln -sf ../../../std/$(HOST_RUST_BIN_LIBSTD_HOST_PREFIX)/lib/rustlib/$(RUSTC_HOST_NAME) +endef + +HOST_RUST_BIN_POST_EXTRACT_HOOKS += HOST_RUST_BIN_LIBSTD_EXTRACT + +HOST_RUST_BIN_INSTALL_OPTS = \ + --prefix=$(HOST_DIR) \ + --disable-ldconfig + +ifeq ($(BR2_PACKAGE_HOST_RUST_BIN),y) +define HOST_RUST_BIN_INSTALL_RUSTC + (cd $(@D); \ + ./install.sh $(HOST_RUST_BIN_INSTALL_OPTS)) +endef + +define HOST_RUST_BIN_INSTALL_LIBSTD_HOST + (cd $(@D)/std/rust-std-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAME); \ + ./install.sh $(HOST_RUST_BIN_INSTALL_OPTS)) +endef + +define HOST_RUST_BIN_INSTALL_LIBSTD_TARGET + (cd $(@D)/std/rust-std-$(RUST_BIN_VERSION)-$(RUSTC_TARGET_NAME); \ + ./install.sh $(HOST_RUST_BIN_INSTALL_OPTS)) +endef +endif + +define HOST_RUST_BIN_INSTALL_CMDS + $(HOST_RUST_BIN_INSTALL_RUSTC) + $(HOST_RUST_BIN_INSTALL_LIBSTD_HOST) + $(HOST_RUST_BIN_INSTALL_LIBSTD_TARGET) +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/rust/rust.hash b/buildroot/package/rust/rust.hash new file mode 100644 index 0000000..d6731b6 --- /dev/null +++ b/buildroot/package/rust/rust.hash @@ -0,0 +1,5 @@ +# From https://static.rust-lang.org/dist/rustc-1.23.0-src.tar.xz.sha256 +sha256 7196032371b50dd5582465b3bfa79ffd783b74f0711420d99b61b26c96fb3d80 rustc-1.23.0-src.tar.xz +# Locally generated +sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE +sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/buildroot/package/rust/rust.mk b/buildroot/package/rust/rust.mk new file mode 100644 index 0000000..ff2634b --- /dev/null +++ b/buildroot/package/rust/rust.mk @@ -0,0 +1,79 @@ +################################################################################ +# +# rust +# +################################################################################ + +RUST_VERSION = 1.23.0 +RUST_SOURCE = rustc-$(RUST_VERSION)-src.tar.xz +RUST_SITE = https://static.rust-lang.org/dist +RUST_LICENSE = Apache-2.0 or MIT +RUST_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT + +HOST_RUST_PROVIDES = host-rustc + +HOST_RUST_DEPENDENCIES = \ + toolchain \ + host-rust-bin \ + host-cargo-bin \ + host-python \ + $(BR2_CMAKE_HOST_DEPENDENCY) + +ifeq ($(BR2_PACKAGE_JEMALLOC),y) +HOST_RUST_DEPENDENCIES += jemalloc +HOST_RUST_JEMALLOC_ENABLED = true +HOST_RUST_JEMALLOC_CONF = 'jemalloc = "$(STAGING_DIR)/usr/lib/libjemalloc_pic.a"' +else +HOST_RUST_JEMALLOC_ENABLED = false +endif + +HOST_RUST_VERBOSITY = $(if $(VERBOSE),2,0) + +# Some vendor crates contain Cargo.toml.orig files. The associated +# .cargo-checksum.json file will contain a checksum for Cargo.toml.orig but +# support/scripts/apply-patches.sh will delete them. This will cause the build +# to fail, as Cargo will not be able to find the file and verify the checksum. +# So, remove all Cargo.toml.orig entries from the affected .cargo-checksum.json +# files +define HOST_RUST_EXCLUDE_ORIG_FILES + for file in $$(find $(@D) -name '*.orig'); do \ + crate=$$(dirname $${file}); \ + fn=$${crate}/.cargo-checksum.json; \ + sed -i -e 's/"Cargo.toml.orig":"[a-z0-9]\+",//g' $${fn}; \ + done +endef + +HOST_RUST_POST_EXTRACT_HOOKS += HOST_RUST_EXCLUDE_ORIG_FILES + +define HOST_RUST_CONFIGURE_CMDS + ( \ + echo '[build]'; \ + echo 'target = ["$(RUSTC_TARGET_NAME)"]'; \ + echo 'cargo = "$(HOST_CARGO_BIN_DIR)/cargo/bin/cargo"'; \ + echo 'rustc = "$(HOST_RUST_BIN_DIR)/rustc/bin/rustc"'; \ + echo 'python = "$(HOST_DIR)/bin/python2"'; \ + echo 'submodules = false'; \ + echo 'vendor = true'; \ + echo 'compiler-docs = false'; \ + echo 'docs = false'; \ + echo 'verbose = $(HOST_RUST_VERBOSITY)'; \ + echo '[install]'; \ + echo 'prefix = "$(HOST_DIR)"'; \ + echo '[rust]'; \ + echo 'use-jemalloc = $(HOST_RUST_JEMALLOC_ENABLED)'; \ + echo '[target.$(RUSTC_TARGET_NAME)]'; \ + echo 'cc = "$(TARGET_CROSS)gcc"'; \ + echo $(HOST_RUST_JEMALLOC_CONF); \ + ) > $(@D)/config.toml +endef + +define HOST_RUST_BUILD_CMDS + cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py build +endef + +define HOST_RUST_INSTALL_CMDS + cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py dist + cd $(@D); $(HOST_MAKE_ENV) $(HOST_DIR)/bin/python2 x.py install +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/rustc/Config.in.host b/buildroot/package/rustc/Config.in.host new file mode 100644 index 0000000..1c79eed --- /dev/null +++ b/buildroot/package/rustc/Config.in.host @@ -0,0 +1,79 @@ +config BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + bool + # The pre-built Rust standard library is only available for the + # following architectures/ABIs, and is built against glibc. + default y if BR2_i386 + default y if BR2_x86_64 + default y if BR2_aarch64 + default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 \ + && !(BR2_ARM_CPU_ARMV7A && BR2_ARM_EABI) + default y if BR2_powerpc || BR2_powerpc64 + default y if (BR2_mips || BR2_mipsel) && !BR2_MIPS_CPU_MIPS32R6 + default y if (BR2_mips64 || BR2_mips64el) && !BR2_MIPS_CPU_MIPS64R6 \ + && BR2_MIPS_NABI64 + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + +config BR2_PACKAGE_HOST_RUSTC_ARCH + string + default "armv7" if BR2_ARM_CPU_ARMV7A + default BR2_ARCH if !BR2_ARM_CPU_ARMV7A + +config BR2_PACKAGE_HOST_RUSTC_ABI + string + default "eabi" if BR2_ARM_EABI + default "eabihf" if BR2_ARM_EABIHF + default "abi64" if BR2_MIPS_NABI64 + +config BR2_PACKAGE_HOST_RUSTC + bool "host rustc" + depends on BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS + help + Compiler for the Rust language + + http://www.rust-lang.org + +if BR2_PACKAGE_HOST_RUSTC + +choice + prompt "Rust compiler variant" + default BR2_PACKAGE_HOST_RUST_BIN + help + Select a Rust compiler + +config BR2_PACKAGE_HOST_RUST + bool "host rust" + depends on BR2_HOST_GCC_AT_LEAST_4_7 # required by LLVM + # triggers ICE on trunc_int_for_mode, at explow.c:56 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 || !BR2_aarch64 + select BR2_PACKAGE_HAS_HOST_RUSTC + help + This package will build the compiler for the host as well as + two flavors of the standard library: one for the host, another + for the target. Both are installed in the host directory. + +comment "host-rust needs a toolchain w/ gcc >= 5" + depends on BR2_aarch64 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +comment "host-rust needs host gcc >= 4.7" + depends on !BR2_HOST_GCC_AT_LEAST_4_7 + +config BR2_PACKAGE_HOST_RUST_BIN + bool "host rust (pre-built)" + select BR2_PACKAGE_HAS_HOST_RUSTC + help + This package will install pre-built versions of the compiler + for the host and the Rust standard library for the target. + +endchoice + +config BR2_PACKAGE_HAS_HOST_RUSTC + bool + +config BR2_PACKAGE_PROVIDES_HOST_RUSTC + string + default "host-rust" if BR2_PACKAGE_HOST_RUST + default "host-rust-bin" if BR2_PACKAGE_HOST_RUST_BIN + +endif diff --git a/buildroot/package/rustc/rustc.mk b/buildroot/package/rustc/rustc.mk new file mode 100644 index 0000000..bed74f3 --- /dev/null +++ b/buildroot/package/rustc/rustc.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# rustc +# +################################################################################ + +RUSTC_ARCH = $(call qstrip,$(BR2_PACKAGE_HOST_RUSTC_ARCH)) +RUSTC_ABI = $(call qstrip,$(BR2_PACKAGE_HOST_RUSTC_ABI)) + +RUSTC_TARGET_NAME = $(RUSTC_ARCH)-unknown-linux-gnu$(RUSTC_ABI) + +ifeq ($(HOSTARCH),x86) +RUSTC_HOST_ARCH = i686 +else +RUSTC_HOST_ARCH = $(HOSTARCH) +endif + +RUSTC_HOST_NAME = $(RUSTC_HOST_ARCH)-unknown-linux-gnu + +$(eval $(host-virtual-package)) diff --git a/buildroot/package/rygel/0001-Allow-UI-build-without-gstreamer-video.patch b/buildroot/package/rygel/0001-Allow-UI-build-without-gstreamer-video.patch new file mode 100644 index 0000000..6e1f528 --- /dev/null +++ b/buildroot/package/rygel/0001-Allow-UI-build-without-gstreamer-video.patch @@ -0,0 +1,37 @@ +From f3a49ad1a4ba172e97bd860bc067f7e9ebe69509 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 8 Jan 2018 13:27:42 +0100 +Subject: [PATCH] Allow UI build without gstreamer-video + +If EXAMPLE_UI dependencies are not met, only display a warning. +Indeed, currently, we can't build rygel UI without gstreamer-video which +is only a dependency of fullscreen-renderer application. + +fullscreen-renderer won't be build without gstreamer as HAVE_GSTREAMER +has to be true to check HAVE_UI in examples/Makefile.am + +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 00b94da..d140a27 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -359,7 +359,11 @@ if test x$try_ui = xyes ; then + [$RYGEL_COMMON_MODULES gio-2.0 >= $GIO_REQUIRED + gssdp-1.0 >= $GSSDP_REQUIRED + gstreamer-video-1.0 >= $GSTREAMER_REQUIRED +- gtk+-3.0 >= $GTK_REQUIRED]) ++ gtk+-3.0 >= $GTK_REQUIRED],, ++ [ ++ AC_MSG_WARN([Example UI dependencies not found.]) ++ AC_MSG_WARN([Example UI applications will not be built.]) ++ ]) + ], + [ + AC_MSG_WARN([UI dependencies not found.]) +-- +2.7.4 + diff --git a/buildroot/package/rygel/Config.in b/buildroot/package/rygel/Config.in new file mode 100644 index 0000000..86d6a38 --- /dev/null +++ b/buildroot/package/rygel/Config.in @@ -0,0 +1,51 @@ +config BR2_PACKAGE_RYGEL + bool "rygel" + depends on BR2_USE_WCHAR # gupnp-av + depends on BR2_TOOLCHAIN_HAS_THREADS # gupnp-av + depends on BR2_USE_MMU # gupnp-av + select BR2_PACKAGE_GUPNP_AV + select BR2_PACKAGE_LIBGEE + select BR2_PACKAGE_LIBMEDIAART + select BR2_PACKAGE_SQLITE + help + Rygel is a home media solution (UPnP AV MediaServer) that + allows you to easily share audio, video and pictures to other + devices. + + Additionally, media player software may use Rygel to become a + MediaRenderer that may be controlled remotely by a UPnP or + DLNA Controller. + + Rygel achieves interoperability with other devices in the + market by trying to conform to the very strict requirements of + DLNA and by converting media on-the-fly to formats that client + devices can handle. + + Most Rygel functionality is implemented through a plug-in + mechanism. + + https://wiki.gnome.org/Projects/Rygel + +if BR2_PACKAGE_RYGEL + +choice + prompt "media engine" + default BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE + +config BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE + bool "simple" + +config BR2_PACKAGE_RYGEL_MEDIA_ENGINE_GSTREAMER1 + bool "gstreamer1" + select BR2_PACKAGE_GDK_PIXBUF + select BR2_PACKAGE_GUPNP_DLNA + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + +endchoice + +comment "rygel needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +endif # BR2_PACKAGE_RYGEL diff --git a/buildroot/package/rygel/S99rygel b/buildroot/package/rygel/S99rygel new file mode 100644 index 0000000..ee832e9 --- /dev/null +++ b/buildroot/package/rygel/S99rygel @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME=rygel +PIDFILE=/var/run/$NAME.pid +DAEMON=/usr/bin/$NAME + +start() { + printf "Starting $NAME: " + start-stop-daemon -S -q -m -b -p $PIDFILE --exec $DAEMON + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +stop() { + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE + [ $? = 0 ] && echo "OK" || echo "FAIL" +} +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/rygel/rygel.hash b/buildroot/package/rygel/rygel.hash new file mode 100644 index 0000000..028af21 --- /dev/null +++ b/buildroot/package/rygel/rygel.hash @@ -0,0 +1,6 @@ +# Hash from: http://ftp.gnome.org/pub/gnome/sources/rygel/0.36/rygel-0.36.0.sha256sum: +sha256 31e8ade78b4ea59978d1b59056fa5cd8aef6b9c1457d3dd06de4d2e75a01813f rygel-0.36.0.tar.xz + +# Locally calculated +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING +sha256 c7d881be8ae01162510e982a32001446c6d6d18a9cecc89cc41a28bd215a0262 COPYING.logo diff --git a/buildroot/package/rygel/rygel.mk b/buildroot/package/rygel/rygel.mk new file mode 100644 index 0000000..cd8897c --- /dev/null +++ b/buildroot/package/rygel/rygel.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# rygel +# +################################################################################ + +RYGEL_VERSION_MAJOR = 0.36 +RYGEL_VERSION = $(RYGEL_VERSION_MAJOR).0 +RYGEL_SOURCE = rygel-$(RYGEL_VERSION).tar.xz +RYGEL_SITE = http://ftp.gnome.org/pub/gnome/sources/rygel/$(RYGEL_VERSION_MAJOR) +RYGEL_LICENSE = LGPL-2.1+, CC-BY-SA-3.0 (logo) +RYGEL_LICENSE_FILES = COPYING COPYING.logo +RYGEL_DEPENDENCIES = \ + gupnp-av \ + libgee \ + libmediaart \ + sqlite +RYGEL_INSTALL_STAGING = YES +# We're patching configure.ac +RYGEL_AUTORECONF = YES + +RYGEL_CONF_OPTS += \ + --disable-apidocs \ + --disable-coverage \ + --disable-example-plugins \ + --enable-external-plugin \ + --enable-lms-plugin \ + --enable-mpris-plugin \ + --enable-ruih-plugin \ + --disable-tracker-plugin + +ifeq ($(BR2_PACKAGE_GDK_PIXBUF),y) +RYGEL_DEPENDENCIES += gdk-pixbuf +endif + +ifeq ($(BR2_PACKAGE_RYGEL_MEDIA_ENGINE_GSTREAMER1),y) +RYGEL_CONF_OPTS += \ + --with-media-engine=gstreamer \ + --enable-playbin-plugin \ + --enable-media_export-plugin \ + --enable-gst-launch-plugin +RYGEL_DEPENDENCIES += \ + gupnp-dlna \ + gst1-plugins-base \ + gstreamer1 +else ifeq ($(BR2_PACKAGE_RYGEL_MEDIA_ENGINE_SIMPLE),y) +RYGEL_CONF_OPTS += \ + --with-media-engine=simple \ + --disable-playbin-plugin \ + --disable-media_export-plugin \ + --disable-gst-launch-plugin +endif + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +RYGEL_CONF_OPTS += --with-ui +RYGEL_DEPENDENCIES += libgtk3 +else +RYGEL_CONF_OPTS += --without-ui +endif + +define RYGEL_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/rygel/S99rygel \ + $(TARGET_DIR)/etc/init.d/S99rygel +endef + +define RYGEL_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/rygel/rygel.service \ + $(TARGET_DIR)/usr/lib/systemd/system/rygel.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/rygel.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/rygel.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/rygel/rygel.service b/buildroot/package/rygel/rygel.service new file mode 100644 index 0000000..6ae8ee7 --- /dev/null +++ b/buildroot/package/rygel/rygel.service @@ -0,0 +1,10 @@ +[Unit] +Description=Rygel DLNA server +After=network.target + +[Service] +ExecStart=/usr/bin/rygel +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/s6-dns/Config.in b/buildroot/package/s6-dns/Config.in new file mode 100644 index 0000000..e982fda --- /dev/null +++ b/buildroot/package/s6-dns/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_S6_DNS + bool "s6-dns" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + help + s6-dns is a suite of DNS client programs and libraries for + Unix systems, as an alternative to the BIND, djbdns or other + DNS clients. + + http://skarnet.org/software/s6-dns/ diff --git a/buildroot/package/s6-dns/s6-dns.hash b/buildroot/package/s6-dns/s6-dns.hash new file mode 100644 index 0000000..483d4f0 --- /dev/null +++ b/buildroot/package/s6-dns/s6-dns.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 a828583e48741927c88de3822283c317c792ffc15d5e9043f29625b87ba38740 s6-dns-2.3.0.0.tar.gz +sha256 6ee77e7199d69b707ab864ea7a838f9562717aaa41c89413bdb2cf835f95052f COPYING diff --git a/buildroot/package/s6-dns/s6-dns.mk b/buildroot/package/s6-dns/s6-dns.mk new file mode 100644 index 0000000..42639aa --- /dev/null +++ b/buildroot/package/s6-dns/s6-dns.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# s6-dns +# +################################################################################ + +S6_DNS_VERSION = 2.3.0.0 +S6_DNS_SITE = http://skarnet.org/software/s6-dns +S6_DNS_LICENSE = ISC +S6_DNS_LICENSE_FILES = COPYING +S6_DNS_INSTALL_STAGING = YES +S6_DNS_DEPENDENCIES = skalibs + +S6_DNS_CONF_OPTS = \ + --prefix=/usr \ + --with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/usr/include \ + --with-dynlib=$(STAGING_DIR)/usr/lib \ + --with-lib=$(STAGING_DIR)/usr/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_DNS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_DNS_CONF_OPTS)) +endef + +define S6_DNS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_DNS_REMOVE_STATIC_LIB_DIR + rm -rf $(TARGET_DIR)/usr/lib/s6-dns +endef + +S6_DNS_POST_INSTALL_TARGET_HOOKS += S6_DNS_REMOVE_STATIC_LIB_DIR + +define S6_DNS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define S6_DNS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/s6-linux-init/Config.in b/buildroot/package/s6-linux-init/Config.in new file mode 100644 index 0000000..b56b861 --- /dev/null +++ b/buildroot/package/s6-linux-init/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_S6_LINUX_INIT + bool "s6-linux-init" + depends on BR2_USE_MMU # s6 + select BR2_PACKAGE_S6 + select BR2_PACKAGE_S6_LINUX_UTILS + select BR2_PACKAGE_S6_PORTABLE_UTILS + help + s6-linux-init is a set of minimalistic tools to create a + s6-based init system, including a /sbin/init binary, on a + Linux kernel. + + http://skarnet.org/software/s6-linux-init/ diff --git a/buildroot/package/s6-linux-init/s6-linux-init.hash b/buildroot/package/s6-linux-init/s6-linux-init.hash new file mode 100644 index 0000000..03aeaf3 --- /dev/null +++ b/buildroot/package/s6-linux-init/s6-linux-init.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 9ee2e8a5abc250bcb2be7d07566592ba5cbe3abce858f60853d3ac45b1ccdd79 s6-linux-init-0.3.1.1.tar.gz +sha256 43cdbc05eceb0781d71a0661bbb6b9335efc4b733fbd02847c0c6667fd440993 COPYING diff --git a/buildroot/package/s6-linux-init/s6-linux-init.mk b/buildroot/package/s6-linux-init/s6-linux-init.mk new file mode 100644 index 0000000..c5dee02 --- /dev/null +++ b/buildroot/package/s6-linux-init/s6-linux-init.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# s6-linux-init +# +################################################################################ + +S6_LINUX_INIT_VERSION = 0.3.1.1 +S6_LINUX_INIT_SITE = http://skarnet.org/software/s6-linux-init +S6_LINUX_INIT_LICENSE = ISC +S6_LINUX_INIT_LICENSE_FILES = COPYING +S6_LINUX_INIT_DEPENDENCIES = s6 s6-linux-utils s6-portable-utils + +S6_LINUX_INIT_CONF_OPTS = \ + --prefix=/usr \ + --with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/usr/include \ + --with-dynlib=$(STAGING_DIR)/usr/lib \ + --with-lib=$(STAGING_DIR)/usr/lib/execline \ + --with-lib=$(STAGING_DIR)/usr/lib/s6 \ + --with-lib=$(STAGING_DIR)/usr/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_LINUX_INIT_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_LINUX_INIT_CONF_OPTS)) +endef + +define S6_LINUX_INIT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_LINUX_INIT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/s6-linux-utils/Config.in b/buildroot/package/s6-linux-utils/Config.in new file mode 100644 index 0000000..43e6bb9 --- /dev/null +++ b/buildroot/package/s6-linux-utils/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_S6_LINUX_UTILS + bool "s6-linux-utils" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + help + s6-linux-utils is a set of minimalistic Linux-specific + system utilities. + + http://skarnet.org/software/s6-linux-utils/ diff --git a/buildroot/package/s6-linux-utils/s6-linux-utils.hash b/buildroot/package/s6-linux-utils/s6-linux-utils.hash new file mode 100644 index 0000000..34fc5ea --- /dev/null +++ b/buildroot/package/s6-linux-utils/s6-linux-utils.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 9562ef293c916c4448d16fcbbc065eb28fd995ac34cd3538179cbc3ee056ab93 s6-linux-utils-2.4.0.1.tar.gz +sha256 6ee77e7199d69b707ab864ea7a838f9562717aaa41c89413bdb2cf835f95052f COPYING diff --git a/buildroot/package/s6-linux-utils/s6-linux-utils.mk b/buildroot/package/s6-linux-utils/s6-linux-utils.mk new file mode 100644 index 0000000..3f17457 --- /dev/null +++ b/buildroot/package/s6-linux-utils/s6-linux-utils.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# s6-linux-utils +# +################################################################################ + +S6_LINUX_UTILS_VERSION = 2.4.0.1 +S6_LINUX_UTILS_SITE = http://skarnet.org/software/s6-linux-utils +S6_LINUX_UTILS_LICENSE = ISC +S6_LINUX_UTILS_LICENSE_FILES = COPYING +S6_LINUX_UTILS_DEPENDENCIES = skalibs + +S6_LINUX_UTILS_CONF_OPTS = \ + --prefix=/usr \ + --with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/usr/include \ + --with-dynlib=$(STAGING_DIR)/usr/lib \ + --with-lib=$(STAGING_DIR)/usr/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_LINUX_UTILS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_LINUX_UTILS_CONF_OPTS)) +endef + +define S6_LINUX_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_LINUX_UTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/s6-networking/Config.in b/buildroot/package/s6-networking/Config.in new file mode 100644 index 0000000..bdf5847 --- /dev/null +++ b/buildroot/package/s6-networking/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_S6_NETWORKING + bool "s6-networking" + depends on BR2_USE_MMU # s6 + select BR2_PACKAGE_S6_DNS + select BR2_PACKAGE_S6 + help + s6-networking is a suite of small networking utilities for + Unix systems. It includes command-line client and server + management, TCP access control, privilege escalation across + UNIX domain sockets, IDENT protocol management and clock + synchronization. + + http://skarnet.org/software/s6-networking/ diff --git a/buildroot/package/s6-networking/s6-networking.hash b/buildroot/package/s6-networking/s6-networking.hash new file mode 100644 index 0000000..46f88e0 --- /dev/null +++ b/buildroot/package/s6-networking/s6-networking.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 d81968756abbcecde6a872c89d82f643cd621a0c295c2c57650705dbe875481a s6-networking-2.3.0.2.tar.gz +sha256 6ee77e7199d69b707ab864ea7a838f9562717aaa41c89413bdb2cf835f95052f COPYING diff --git a/buildroot/package/s6-networking/s6-networking.mk b/buildroot/package/s6-networking/s6-networking.mk new file mode 100644 index 0000000..7c9f087 --- /dev/null +++ b/buildroot/package/s6-networking/s6-networking.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# s6-networking +# +################################################################################ + +S6_NETWORKING_VERSION = 2.3.0.2 +S6_NETWORKING_SITE = http://skarnet.org/software/s6-networking +S6_NETWORKING_LICENSE = ISC +S6_NETWORKING_LICENSE_FILES = COPYING +S6_NETWORKING_INSTALL_STAGING = YES +S6_NETWORKING_DEPENDENCIES = s6-dns s6 + +S6_NETWORKING_CONF_OPTS = \ + --prefix=/usr \ + --with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/usr/include \ + --with-dynlib=$(STAGING_DIR)/usr/lib \ + --with-lib=$(STAGING_DIR)/usr/lib/execline \ + --with-lib=$(STAGING_DIR)/usr/lib/s6 \ + --with-lib=$(STAGING_DIR)/usr/lib/s6-dns \ + --with-lib=$(STAGING_DIR)/usr/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +ifeq ($(BR2_PACKAGE_LIBRESSL),y) +S6_NETWORKING_CONF_OPTS += --enable-ssl=libressl +S6_NETWORKING_DEPENDENCIES = libressl +endif + +define S6_NETWORKING_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_NETWORKING_CONF_OPTS)) +endef + +define S6_NETWORKING_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_NETWORKING_REMOVE_STATIC_LIB_DIR + rm -rf $(TARGET_DIR)/usr/lib/s6-networking +endef + +S6_NETWORKING_POST_INSTALL_TARGET_HOOKS += S6_NETWORKING_REMOVE_STATIC_LIB_DIR + +define S6_NETWORKING_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define S6_NETWORKING_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/s6-portable-utils/Config.in b/buildroot/package/s6-portable-utils/Config.in new file mode 100644 index 0000000..8521ecf --- /dev/null +++ b/buildroot/package/s6-portable-utils/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_S6_PORTABLE_UTILS + bool "s6-portable-utils" + depends on BR2_USE_MMU # skalibs + select BR2_PACKAGE_SKALIBS + help + s6-portable-utils is a set of tiny general Unix utilities, + often performing well-known tasks such as cut and grep, but + optimized for simplicity and small size. They were designed + for embedded systems and other constrained environments, but + they work everywhere. + + http://skarnet.org/software/s6-portable-utils/ diff --git a/buildroot/package/s6-portable-utils/s6-portable-utils.hash b/buildroot/package/s6-portable-utils/s6-portable-utils.hash new file mode 100644 index 0000000..f27d0b8 --- /dev/null +++ b/buildroot/package/s6-portable-utils/s6-portable-utils.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 6ae239d2c458a81c92b5d616129e443874f925bf3da02589913a1a3b708c4531 s6-portable-utils-2.2.1.1.tar.gz +sha256 6ee77e7199d69b707ab864ea7a838f9562717aaa41c89413bdb2cf835f95052f COPYING diff --git a/buildroot/package/s6-portable-utils/s6-portable-utils.mk b/buildroot/package/s6-portable-utils/s6-portable-utils.mk new file mode 100644 index 0000000..a15bca1 --- /dev/null +++ b/buildroot/package/s6-portable-utils/s6-portable-utils.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# s6-portable-utils +# +################################################################################ + +S6_PORTABLE_UTILS_VERSION = 2.2.1.1 +S6_PORTABLE_UTILS_SITE = http://skarnet.org/software/s6-portable-utils +S6_PORTABLE_UTILS_LICENSE = ISC +S6_PORTABLE_UTILS_LICENSE_FILES = COPYING +S6_PORTABLE_UTILS_DEPENDENCIES = skalibs + +S6_PORTABLE_UTILS_CONF_OPTS = \ + --prefix=/usr \ + --with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/usr/include \ + --with-dynlib=$(STAGING_DIR)/usr/lib \ + --with-lib=$(STAGING_DIR)/usr/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_PORTABLE_UTILS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_PORTABLE_UTILS_CONF_OPTS)) +endef + +define S6_PORTABLE_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_PORTABLE_UTILS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/s6-rc/Config.in b/buildroot/package/s6-rc/Config.in new file mode 100644 index 0000000..39a924e --- /dev/null +++ b/buildroot/package/s6-rc/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_S6_RC + bool "s6-rc" + depends on BR2_USE_MMU # s6 + select BR2_PACKAGE_S6 + help + s6-rc is a service manager for s6-based systems, i.e. a + suite of programs that can start and stop services, both + long-running daemons and one-time initialization scripts, in + the proper order according to a dependency tree. + + http://skarnet.org/software/s6-rc/ diff --git a/buildroot/package/s6-rc/Config.in.host b/buildroot/package/s6-rc/Config.in.host new file mode 100644 index 0000000..f250b9f --- /dev/null +++ b/buildroot/package/s6-rc/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_S6_RC + bool "host s6-rc" + depends on BR2_PACKAGE_S6_RC + help + This package provides the host variant of the s6-rc tools, + required to build the s6-rc service database offline. + + http://skarnet.org/software/s6-rc/ diff --git a/buildroot/package/s6-rc/s6-rc.hash b/buildroot/package/s6-rc/s6-rc.hash new file mode 100644 index 0000000..76ab69d --- /dev/null +++ b/buildroot/package/s6-rc/s6-rc.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 96b8e7f275d42113b9ba7ef1d8856f64183b9421c39702f8332e6f5686496fba s6-rc-0.4.0.0.tar.gz +sha256 1377d3b18a31de11e8bb06f0f46888a23bc16cbc57285035793bf7e7943bbcb3 COPYING diff --git a/buildroot/package/s6-rc/s6-rc.mk b/buildroot/package/s6-rc/s6-rc.mk new file mode 100644 index 0000000..396adae --- /dev/null +++ b/buildroot/package/s6-rc/s6-rc.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# s6-rc +# +################################################################################ + +S6_RC_VERSION = 0.4.0.0 +S6_RC_SITE = http://skarnet.org/software/s6-rc +S6_RC_LICENSE = ISC +S6_RC_LICENSE_FILES = COPYING +S6_RC_INSTALL_STAGING = YES +S6_RC_DEPENDENCIES = s6 + +S6_RC_CONF_OPTS = \ + --prefix=/usr \ + --with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/usr/include \ + --with-dynlib=$(STAGING_DIR)/usr/lib \ + --with-lib=$(STAGING_DIR)/usr/lib/execline \ + --with-lib=$(STAGING_DIR)/usr/lib/s6 \ + --with-lib=$(STAGING_DIR)/usr/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_RC_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_RC_CONF_OPTS)) +endef + +define S6_RC_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_RC_REMOVE_STATIC_LIB_DIR + rm -rf $(TARGET_DIR)/usr/lib/s6-rc +endef + +S6_RC_POST_INSTALL_TARGET_HOOKS += S6_RC_REMOVE_STATIC_LIB_DIR + +define S6_RC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define S6_RC_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +HOST_S6_RC_DEPENDENCIES = host-s6 + +HOST_S6_RC_CONF_OPTS = \ + --prefix=$(HOST_DIR) \ + --libexecdir=/usr/libexec \ + --with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \ + --with-include=$(HOST_DIR)/include \ + --with-dynlib=$(HOST_DIR)/lib \ + --disable-static \ + --enable-shared \ + --disable-allstatic + +define HOST_S6_RC_CONFIGURE_CMDS + (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_S6_RC_CONF_OPTS)) +endef + +define HOST_S6_RC_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_S6_RC_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install-dynlib install-bin + rm -f $(HOST_DIR)/bin/s6-rc-dryrun +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/s6/Config.in b/buildroot/package/s6/Config.in new file mode 100644 index 0000000..043380f --- /dev/null +++ b/buildroot/package/s6/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_S6 + bool "s6" + depends on BR2_USE_MMU # execline + select BR2_PACKAGE_EXECLINE + help + s6 is a small suite of programs for UNIX, designed to allow + process supervision (a.k.a service supervision), in the line + of daemontools and runit, as well as various operations on + processes and daemons. + + http://skarnet.org/software/s6/ diff --git a/buildroot/package/s6/s6.hash b/buildroot/package/s6/s6.hash new file mode 100644 index 0000000..4a20e0f --- /dev/null +++ b/buildroot/package/s6/s6.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 6617cbf82c73273c67c6102a1a5c48449ef65ffbe8d0db6a587b7f0078dc6e13 s6-2.7.0.0.tar.gz +sha256 3eadcf980c40da0f257b8292d805ff41e5e5a908c1942315d9a627732e1aa012 COPYING diff --git a/buildroot/package/s6/s6.mk b/buildroot/package/s6/s6.mk new file mode 100644 index 0000000..5556bff --- /dev/null +++ b/buildroot/package/s6/s6.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# s6 +# +################################################################################ + +S6_VERSION = 2.7.0.0 +S6_SITE = http://skarnet.org/software/s6 +S6_LICENSE = ISC +S6_LICENSE_FILES = COPYING +S6_INSTALL_STAGING = YES +S6_DEPENDENCIES = execline + +S6_CONF_OPTS = \ + --prefix=/usr \ + --with-sysdeps=$(STAGING_DIR)/usr/lib/skalibs/sysdeps \ + --with-include=$(STAGING_DIR)/usr/include \ + --with-dynlib=$(STAGING_DIR)/usr/lib \ + --with-lib=$(STAGING_DIR)/usr/lib/execline \ + --with-lib=$(STAGING_DIR)/usr/lib/skalibs \ + $(if $(BR2_STATIC_LIBS),,--disable-allstatic) \ + $(SHARED_STATIC_LIBS_OPTS) + +define S6_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(S6_CONF_OPTS)) +endef + +define S6_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define S6_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define S6_REMOVE_STATIC_LIB_DIR + rm -rf $(TARGET_DIR)/usr/lib/s6 +endef + +S6_POST_INSTALL_TARGET_HOOKS += S6_REMOVE_STATIC_LIB_DIR + +define S6_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +HOST_S6_DEPENDENCIES = host-execline + +HOST_S6_CONF_OPTS = \ + --prefix=$(HOST_DIR) \ + --with-sysdeps=$(HOST_DIR)/lib/skalibs/sysdeps \ + --with-include=$(HOST_DIR)/include \ + --with-dynlib=$(HOST_DIR)/lib \ + --disable-static \ + --enable-shared \ + --disable-allstatic + +define HOST_S6_CONFIGURE_CMDS + (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_S6_CONF_OPTS)) +endef + +define HOST_S6_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_S6_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install-dynlib install-include +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/safeclib/0001-Fix-install-when-HAVE_WCHAR-is-unset.patch b/buildroot/package/safeclib/0001-Fix-install-when-HAVE_WCHAR-is-unset.patch new file mode 100644 index 0000000..c34002d --- /dev/null +++ b/buildroot/package/safeclib/0001-Fix-install-when-HAVE_WCHAR-is-unset.patch @@ -0,0 +1,50 @@ +From 5991f0d4b86c02a3d7739509b96815ccfa734be7 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 18 Dec 2017 17:17:54 +0100 +Subject: [PATCH] Fix install when HAVE_WCHAR is unset + +Don't build WCSNORM_xxx man pages if HAVE_WHCAR is not set otherwise +installation will fail as the wcsnorm_mode enum is not defined in +safe_str_lib.h when SAFECLIB_DISABLE_WCHAR is set + +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 31398d1..b7e65a5 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -142,12 +142,6 @@ dist_man_MANS += \ + doc/man/man3/SAFE_STR_PASSWORD_MIN_LENGTH.3 \ + doc/man/man3/STRTOK_DELIM_MAX_LEN.3 \ + doc/man/man3/TMP_MAX_S.3 \ +- doc/man/man3/WCSNORM_FCC.3 \ +- doc/man/man3/WCSNORM_FCD.3 \ +- doc/man/man3/WCSNORM_NFC.3 \ +- doc/man/man3/WCSNORM_NFD.3 \ +- doc/man/man3/WCSNORM_NFKC.3 \ +- doc/man/man3/WCSNORM_NFKD.3 \ + doc/man/man3/abort_handler_s.3 \ + doc/man/man3/abort_handler_s.c.3 \ + doc/man/man3/asctime_s.3 \ +@@ -461,6 +455,15 @@ dist_man_MANS += \ + doc/man/man3/wprintf_s.c.3 \ + doc/man/man3/wscanf_s.3 \ + doc/man/man3/wscanf_s.c.3 ++if ENABLE_WCHAR ++dist_man_MANS += \ ++ doc/man/man3/WCSNORM_FCC.3 \ ++ doc/man/man3/WCSNORM_FCD.3 \ ++ doc/man/man3/WCSNORM_NFC.3 \ ++ doc/man/man3/WCSNORM_NFD.3 \ ++ doc/man/man3/WCSNORM_NFKC.3 \ ++ doc/man/man3/WCSNORM_NFKD.3 ++endif + CLEANFILES += Doxyfile doc/footer README.md + + # avoid parallel doxygen +-- +2.7.4 + diff --git a/buildroot/package/safeclib/Config.in b/buildroot/package/safeclib/Config.in new file mode 100644 index 0000000..5117c49 --- /dev/null +++ b/buildroot/package/safeclib/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SAFECLIB + bool "safeclib" + help + safec fork with all C11 Annex K functions + + This library implements the secure C11 Annex K functions on + top of most libc implementations, which are missing from them. + + https://rurban.github.io/safeclib/ diff --git a/buildroot/package/safeclib/safeclib.hash b/buildroot/package/safeclib/safeclib.hash new file mode 100644 index 0000000..95a862e --- /dev/null +++ b/buildroot/package/safeclib/safeclib.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 9c09c6e9fc95207c7d45944f8b669f2454056bef2bbaef70c94ba3f81be1cbb2 safeclib-v09102017.tar.gz +sha256 c33e77efd5781e3d59a2bb648c82d2a615035ef0d24cf58880380e3af906510b COPYING diff --git a/buildroot/package/safeclib/safeclib.mk b/buildroot/package/safeclib/safeclib.mk new file mode 100644 index 0000000..b1aa259 --- /dev/null +++ b/buildroot/package/safeclib/safeclib.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# safeclib +# +################################################################################ + +SAFECLIB_VERSION = v09102017 +SAFECLIB_SITE = $(call github,rurban,safeclib,$(SAFECLIB_VERSION)) +SAFECLIB_LICENSE = MIT +SAFECLIB_LICENSE_FILES = COPYING +SAFECLIB_INSTALL_STAGING = YES +# From git +SAFECLIB_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/sam-ba/Config.in.host b/buildroot/package/sam-ba/Config.in.host new file mode 100644 index 0000000..6093865 --- /dev/null +++ b/buildroot/package/sam-ba/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_SAM_BA + bool "host sam-ba" + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_HOSTARCH_NEEDS_IA32_LIBS + help + Atmel SAM-BA software provides an open set of tools for + programming the Atmel SAM3, SAM7 and SAM9 ARM-based + microcontrollers. + + http://www.at91.com/linux4sam/bin/view/Linux4SAM/SoftwareTools diff --git a/buildroot/package/sam-ba/sam-ba.hash b/buildroot/package/sam-ba/sam-ba.hash new file mode 100644 index 0000000..61feb32 --- /dev/null +++ b/buildroot/package/sam-ba/sam-ba.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 302734f53e471b5d1a292c9af937262f4fd766ec47ebfea62439761e7c1cd9d7 sam-ba_2.16_linux.zip diff --git a/buildroot/package/sam-ba/sam-ba.mk b/buildroot/package/sam-ba/sam-ba.mk new file mode 100644 index 0000000..a794145 --- /dev/null +++ b/buildroot/package/sam-ba/sam-ba.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# sam-ba +# +################################################################################ + +SAM_BA_SITE = http://www.atmel.com/dyn/resources/prod_documents +SAM_BA_VERSION = 2.16 +SAM_BA_SOURCE = sam-ba_$(SAM_BA_VERSION)_linux.zip +SAM_BA_LICENSE = SAM-BA license (sam-ba executable), \ + BSD-2-Clause like, BSD-4-Clause (TCL and applets code) +SAM_BA_LICENSE_FILES = doc/license.txt tcl_lib/boards.tcl \ + applets/sam4c/libraries/libchip_sam4c/include/sam4c/sam4c32e-1.h + +define HOST_SAM_BA_EXTRACT_CMDS + $(UNZIP) -d $(BUILD_DIR) $(DL_DIR)/$(SAM_BA_SOURCE) + mv $(BUILD_DIR)/sam-ba_cdc_linux/* $(@D) + rmdir $(BUILD_DIR)/sam-ba_cdc_linux/ +endef + +# Since it's a prebuilt application and it does not conform to the +# usual Unix hierarchy, we install it in $(HOST_DIR)/opt/sam-ba and +# then create a symbolic link from $(HOST_DIR)/bin to the +# application binary, for easier usage. + +ifeq ($(HOSTARCH),x86_64) +SAM_BA_BIN_NAME = sam-ba_64 +else +SAM_BA_BIN_NAME = sam-ba +endif + +define HOST_SAM_BA_INSTALL_CMDS + mkdir -p $(HOST_DIR)/opt/sam-ba/ + cp -a $(@D)/* $(HOST_DIR)/opt/sam-ba/ + ln -sf ../opt/sam-ba/$(SAM_BA_BIN_NAME) $(HOST_DIR)/bin/sam-ba +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch b/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch new file mode 100644 index 0000000..ed6accf --- /dev/null +++ b/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch @@ -0,0 +1,44 @@ +From fc0304ba92ec7ae9a2f75fbc31d97fee39d19665 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Wed, 7 Sep 2016 23:03:43 -0300 +Subject: [PATCH] libreplace: disable libbsd support + +Disable libbsd support, samba4 uses a global config.h for its own +codebase and that of heimdal (when building with builtin). +This causes redefinition conflicts for link(2) when both standard +unistd.h and bsd/unistd.h get included. + +Signed-off-by: Gustavo Zacarias +(rebased for version 4.7.3) +Signed-off-by: Bernd Kuhls +--- + lib/replace/wscript | 12 ------------ + 1 file changed, 12 deletions(-) + +diff --git a/lib/replace/wscript b/lib/replace/wscript +index 1dfd902..456be9b 100644 +--- a/lib/replace/wscript ++++ b/lib/replace/wscript +@@ -253,19 +253,6 @@ + + strlcpy_in_bsd = False + +- # libbsd on some platforms provides strlcpy and strlcat +- if not conf.CHECK_FUNCS('strlcpy strlcat'): +- if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h', +- checklibc=True): +- strlcpy_in_bsd = True +- if not conf.CHECK_FUNCS('getpeereid'): +- conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h') +- if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'): +- conf.CHECK_FUNCS_IN('setproctitle', 'bsd', headers='sys/types.h bsd/unistd.h') +- +- if not conf.CHECK_FUNCS('closefrom'): +- conf.CHECK_FUNCS_IN('closefrom', 'bsd', headers='bsd/unistd.h') +- + conf.CHECK_CODE(''' + struct ucred cred; + socklen_t cred_len; +-- +2.7.3 + diff --git a/buildroot/package/samba4/0002-patch-source3__libads__kerberos_keytab.c.patch b/buildroot/package/samba4/0002-patch-source3__libads__kerberos_keytab.c.patch new file mode 100644 index 0000000..1213659 --- /dev/null +++ b/buildroot/package/samba4/0002-patch-source3__libads__kerberos_keytab.c.patch @@ -0,0 +1,31 @@ +From: Timur I. Bakeyev +Subject: Fix compilation of Samba 4.7.4 with disabled ADS + +Downloaded from upstream mailinglist +https://lists.samba.org/archive/samba-technical/2017-December/124629.html + +Patch originates from FreeBSD: +https://svnweb.freebsd.org/ports/head/net/samba47/files/patch-source3__libads__kerberos_keytab.c?revision=457119&view=markup + +Signed-off-by: Bernd Kuhls + +--- a/source3/libads/kerberos_keytab.c.orig 2017-12-23 14:23:53.247467000 +0100 ++++ b/source3/libads/kerberos_keytab.c 2017-12-23 18:57:07.135340000 +0100 +@@ -32,8 +32,6 @@ + + #ifdef HAVE_KRB5 + +-#ifdef HAVE_ADS +- + /* This MAX_NAME_LEN is a constant defined in krb5.h */ + #ifndef MAX_KEYTAB_NAME_LEN + #define MAX_KEYTAB_NAME_LEN 1100 +@@ -85,6 +83,8 @@ + return ret; + } + ++#ifdef HAVE_ADS ++ + /********************************************************************** + Adds a single service principal, i.e. 'host' to the system keytab + ***********************************************************************/ diff --git a/buildroot/package/samba4/0003-Fix-uClibc-build-on-64bit-platforms-by-including-std.patch b/buildroot/package/samba4/0003-Fix-uClibc-build-on-64bit-platforms-by-including-std.patch new file mode 100644 index 0000000..3b248e6 --- /dev/null +++ b/buildroot/package/samba4/0003-Fix-uClibc-build-on-64bit-platforms-by-including-std.patch @@ -0,0 +1,67 @@ +From 4a63f267efab2ef86adbeddda45909127135d7c8 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 28 Jan 2018 11:57:11 +0100 +Subject: [PATCH 1/1] Fix uClibc build on 64bit platforms by including stdint.h + +Fixes an error detected by buildroot autobuilders: +http://autobuild.buildroot.net/results/573/573e2268e205e10d1352fa81122d8f225fdb4575/build-end.log + +/home/rclinux/rc-buildroot-test/scripts/instance-1/output/host/mips64el-buildroot-linux-uclibc/sysroot/usr/include/stdint.h:122:27: +error: conflicting types for 'uintptr_t' + typedef unsigned long int uintptr_t; + ^ +In file included from ../lib/ldb/tests/ldb_msg.c:17:0: +../third_party/cmocka/cmocka.h:126:28: note: previous declaration of 'uintptr_t' was here + typedef unsigned int uintptr_t; + +The define __WORDSIZE is missing when cmocka.h decides how to +define uintptr_t, this patch includes stdint.h when needed. + +Patch sent upstream: +https://lists.samba.org/archive/samba-technical/2018-January/125306.html + +Signed-off-by: Bernd Kuhls +--- + lib/ldb/tests/ldb_mod_op_test.c | 1 + + lib/ldb/tests/ldb_msg.c | 1 + + libcli/smb/test_smb1cli_session.c | 1 + + 3 files changed, 3 insertions(+) + +diff --git a/lib/ldb/tests/ldb_mod_op_test.c b/lib/ldb/tests/ldb_mod_op_test.c +index cf2288c7bce..4690594186e 100644 +--- a/lib/ldb/tests/ldb_mod_op_test.c ++++ b/lib/ldb/tests/ldb_mod_op_test.c +@@ -13,6 +13,7 @@ + */ + #include + #include ++#include + #include + #include + +diff --git a/lib/ldb/tests/ldb_msg.c b/lib/ldb/tests/ldb_msg.c +index f8de418e0dc..31786a9a318 100644 +--- a/lib/ldb/tests/ldb_msg.c ++++ b/lib/ldb/tests/ldb_msg.c +@@ -13,6 +13,7 @@ + */ + #include + #include ++#include + #include + #include + +diff --git a/libcli/smb/test_smb1cli_session.c b/libcli/smb/test_smb1cli_session.c +index d1e21d5431e..6a526c96b61 100644 +--- a/libcli/smb/test_smb1cli_session.c ++++ b/libcli/smb/test_smb1cli_session.c +@@ -1,5 +1,6 @@ + #include + #include ++#include + #include + #include + +-- +2.11.0 + diff --git a/buildroot/package/samba4/Config.in b/buildroot/package/samba4/Config.in new file mode 100644 index 0000000..298fdc6 --- /dev/null +++ b/buildroot/package/samba4/Config.in @@ -0,0 +1,49 @@ +comment "samba4 needs a uClibc or glibc toolchain w/ wchar, dynamic library, NPTL" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || BR2_TOOLCHAIN_USES_MUSL \ + || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU + +config BR2_PACKAGE_SAMBA4 + bool "samba4" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # python + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # python -> libffi + depends on !BR2_STATIC_LIBS # python, gnutls + depends on !BR2_nios2 # binary too large, relocations don't fit + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_E2FSPROGS + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_PACKAGE_POPT + select BR2_PACKAGE_PYTHON + select BR2_PACKAGE_ZLIB + help + Provides secure, stable and fast file and print services + for all clients using the SMB/CIFS protocol, such as all + versions of DOS, Windows, OS/2, Linux and many others. + + http://www.samba.org/ + +if BR2_PACKAGE_SAMBA4 + +config BR2_PACKAGE_SAMBA4_AD_DC + bool "AD DC" + select BR2_PACKAGE_GNUTLS + help + Enable Active Directory Domain Controller functionality. + +config BR2_PACKAGE_SAMBA4_ADS + bool "ADS" + select BR2_PACKAGE_OPENLDAP + help + Enable Active Directory member Server functionality. + +config BR2_PACKAGE_SAMBA4_SMBTORTURE + bool "smbtorture" + help + Install the smbtorture test suite. + It's normally used for validation and stress testing. + Approximately +5 MB of stripped uncompressed target space. + +endif diff --git a/buildroot/package/samba4/S91smb b/buildroot/package/samba4/S91smb new file mode 100644 index 0000000..c8c5fc8 --- /dev/null +++ b/buildroot/package/samba4/S91smb @@ -0,0 +1,56 @@ +#!/bin/sh + +[ -f /etc/samba/smb.conf ] || exit 0 + +mkdir -p /var/log/samba + +start() { + printf "Starting SMB services: " + smbd -D + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Starting NMB services: " + nmbd -D + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Shutting down SMB services: " + kill -9 `pidof smbd` + [ $? = 0 ] && echo "OK" || echo "FAIL" + + printf "Shutting down NMB services: " + kill -9 `pidof nmbd` + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + start +} + +reload() { + printf "Reloading smb.conf file: " + kill -HUP `pidof smbd` + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + reload) + reload + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/samba4/samba4-cache.txt b/buildroot/package/samba4/samba4-cache.txt new file mode 100644 index 0000000..0485f0d --- /dev/null +++ b/buildroot/package/samba4/samba4-cache.txt @@ -0,0 +1,41 @@ +Checking simple C program: OK +rpath library support: OK +-Wl,--version-script support: OK +Checking getconf LFS_CFLAGS: NO +Checking for large file support without additional flags: OK +Checking for -D_LARGE_FILES: OK +Checking correct behavior of strtoll: NO +Checking for working strptime: OK +Checking for C99 vsnprintf: OK +Checking for HAVE_SHARED_MMAP: OK +Checking for HAVE_MREMAP: OK +Checking for HAVE_INCOHERENT_MMAP: NO +Checking for HAVE_SECURE_MKSTEMP: OK +Checking for HAVE_IFACE_GETIFADDRS: OK +Checking for kernel change notify support: OK +Checking for Linux kernel oplocks: OK +Checking for kernel share modes: OK +Checking if can we convert from CP850 to UCS-2LE: OK +Checking if can we convert from UTF-8 to UCS-2LE: OK +Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK +Checking whether we can use Linux thread-specific credentials: OK +Checking whether setreuid is available: OK +Checking whether setresuid is available: OK +Checking whether seteuid is available: OK +Checking whether fcntl locking is available: OK +Checking whether fcntl lock supports open file description locks: OK +Checking for the maximum value of the 'time_t' type: OK +Checking whether the realpath function allows a NULL argument: OK +Checking whether POSIX capabilities are available: OK +Checking for ftruncate extend: OK +vfs_fileid checking for statfs() and struct statfs.f_fsid: OK +getcwd takes a NULL argument: OK +Checking uname sysname type: "Linux" +Checking uname release type: "3.0.0" +Checking uname version type: "#1 Tue Nov 1 12:34:56 UTC 2013" +Checking value of NSIG: "65" +Checking value of _NSIG: "65" +Checking value of SIGRTMAX: "64" +Checking value of SIGRTMIN: "34" +Checking errno of iconv for illegal multibyte sequence: "0" +checking for clnt_create(): OK diff --git a/buildroot/package/samba4/samba4.hash b/buildroot/package/samba4/samba4.hash new file mode 100644 index 0000000..dddd132 --- /dev/null +++ b/buildroot/package/samba4/samba4.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +# https://download.samba.org/pub/samba/stable/samba-4.7.6.tar.asc +sha256 1eede30fc8ef6504e24602fb72b00baa0a7b73b59f16d25cb0771dc8c7c57d6e samba-4.7.6.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/samba4/samba4.mk b/buildroot/package/samba4/samba4.mk new file mode 100644 index 0000000..86df8b8 --- /dev/null +++ b/buildroot/package/samba4/samba4.mk @@ -0,0 +1,172 @@ +################################################################################ +# +# samba4 +# +################################################################################ + +SAMBA4_VERSION = 4.7.6 +SAMBA4_SITE = https://download.samba.org/pub/samba/stable +SAMBA4_SOURCE = samba-$(SAMBA4_VERSION).tar.gz +SAMBA4_INSTALL_STAGING = YES +SAMBA4_LICENSE = GPL-3.0+ +SAMBA4_LICENSE_FILES = COPYING +SAMBA4_DEPENDENCIES = \ + host-e2fsprogs host-heimdal host-python host-nfs-utils \ + e2fsprogs popt python zlib \ + $(if $(BR2_PACKAGE_LIBAIO),libaio) \ + $(if $(BR2_PACKAGE_LIBCAP),libcap) \ + $(if $(BR2_PACKAGE_READLINE),readline) \ + $(TARGET_NLS_DEPENDENCIES) +SAMBA4_CFLAGS = $(TARGET_CFLAGS) +SAMBA4_LDFLAGS = $(TARGET_LDFLAGS) +SAMBA4_CONF_ENV = \ + CFLAGS="$(SAMBA4_CFLAGS)" \ + LDFLAGS="$(SAMBA4_LDFLAGS)" + +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +SAMBA4_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc` +SAMBA4_LDFLAGS += `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc` +SAMBA4_DEPENDENCIES += libtirpc host-pkgconf +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +SAMBA4_CONF_OPTS += --with-acl-support +SAMBA4_DEPENDENCIES += acl +else +SAMBA4_CONF_OPTS += --without-acl-support +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +SAMBA4_CONF_ENV += CUPS_CONFIG="$(STAGING_DIR)/usr/bin/cups-config" +SAMBA4_CONF_OPTS += --enable-cups +SAMBA4_DEPENDENCIES += cups +else +SAMBA4_CONF_OPTS += --disable-cups +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +SAMBA4_DEPENDENCIES += dbus +endif + +ifeq ($(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_AVAHI_DAEMON),yy) +SAMBA4_CONF_OPTS += --enable-avahi +SAMBA4_DEPENDENCIES += avahi +else +SAMBA4_CONF_OPTS += --disable-avahi +endif + +ifeq ($(BR2_PACKAGE_GAMIN),y) +SAMBA4_CONF_OPTS += --with-fam +SAMBA4_DEPENDENCIES += gamin +else +SAMBA4_CONF_OPTS += --without-fam +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +SAMBA4_CONF_OPTS += --enable-gnutls +SAMBA4_DEPENDENCIES += gnutls +else +SAMBA4_CONF_OPTS += --disable-gnutls +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +SAMBA4_CONF_ENV += NCURSES_CONFIG="$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS)" +SAMBA4_DEPENDENCIES += ncurses +else +SAMBA4_CONF_OPTS += --without-regedit +endif + +# The ctdb tests (cluster) need bash and take up some space +# They're normally intended for debugging so remove them +define SAMBA4_REMOVE_CTDB_TESTS + rm -rf $(TARGET_DIR)/usr/lib/ctdb-tests + rm -rf $(TARGET_DIR)/usr/share/ctdb-tests + rm -f $(TARGET_DIR)/usr/bin/ctdb_run_*tests +endef +SAMBA4_POST_INSTALL_TARGET_HOOKS += SAMBA4_REMOVE_CTDB_TESTS + +define SAMBA4_CONFIGURE_CMDS + $(INSTALL) -m 0644 package/samba4/samba4-cache.txt $(@D)/cache.txt; + echo 'Checking uname machine type: $(BR2_ARCH)' >>$(@D)/cache.txt; + (cd $(@D); \ + PYTHON_CONFIG="$(STAGING_DIR)/usr/bin/python-config" \ + python_LDFLAGS="" \ + python_LIBDIR="" \ + $(TARGET_CONFIGURE_OPTS) \ + $(SAMBA4_CONF_ENV) \ + ./buildtools/bin/waf configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --with-libiconv=$(STAGING_DIR)/usr \ + --enable-fhs \ + --cross-compile \ + --cross-answers=$(@D)/cache.txt \ + --hostcc=gcc \ + --disable-rpath \ + --disable-rpath-install \ + --disable-iprint \ + --without-pam \ + --without-dmapi \ + --disable-glusterfs \ + --with-cluster-support \ + --bundled-libraries='!asn1_compile,!compile_et' \ + $(SAMBA4_CONF_OPTS) \ + ) +endef + +define SAMBA4_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define SAMBA4_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +define SAMBA4_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +ifeq ($(BR2_PACKAGE_SAMBA4_AD_DC),) +SAMBA4_CONF_OPTS += --without-ad-dc +endif + +ifeq ($(BR2_PACKAGE_SAMBA4_ADS),y) +SAMBA4_CONF_OPTS += --with-ads --with-ldap --with-shared-modules=idmap_ad +SAMBA4_DEPENDENCIES += openldap +else +SAMBA4_CONF_OPTS += --without-ads --without-ldap +endif + +ifeq ($(BR2_PACKAGE_SAMBA4_SMBTORTURE),) +define SAMBA4_REMOVE_SMBTORTURE + rm -f $(TARGET_DIR)/usr/bin/smbtorture +endef +SAMBA4_POST_INSTALL_TARGET_HOOKS += SAMBA4_REMOVE_SMBTORTURE +endif + +define SAMBA4_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/samba4/S91smb \ + $(TARGET_DIR)/etc/init.d/S91smb +endef + +define SAMBA4_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/packaging/systemd/nmb.service \ + $(TARGET_DIR)/usr/lib/systemd/system/nmb.service + $(INSTALL) -D -m 644 $(@D)/packaging/systemd/smb.service \ + $(TARGET_DIR)/usr/lib/systemd/system/smb.service + $(INSTALL) -D -m 644 $(@D)/packaging/systemd/winbind.service \ + $(TARGET_DIR)/usr/lib/systemd/system/winbind.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/nmb.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/nmb.service + ln -sf ../../../../usr/lib/systemd/system/smb.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/smb.service + ln -sf ../../../../usr/lib/systemd/system/winbind.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/winbind.service + $(INSTALL) -D -m 644 $(@D)/packaging/systemd/samba.conf.tmp \ + $(TARGET_DIR)/usr/lib/tmpfiles.d/samba.conf + printf "d /var/log/samba 755 root root\n" >>$(TARGET_DIR)/usr/lib/tmpfiles.d/samba.conf +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/sane-backends/0001-qcam-x86.patch b/buildroot/package/sane-backends/0001-qcam-x86.patch new file mode 100644 index 0000000..f14dd0e --- /dev/null +++ b/buildroot/package/sane-backends/0001-qcam-x86.patch @@ -0,0 +1,61 @@ +[PATCH] backend/qcam.c: fix build on !x86 + +inb/outb/ioperm are x86 specific interfaces, so replace with noops on +!x86. + +Inspired by similar patch in openwrt: +https://dev.openwrt.org/ticket/5689 + +Signed-off-by: Peter Korsgaard +--- + backend/qcam.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +Index: sane-backends-1.0.22/backend/qcam.c +=================================================================== +--- sane-backends-1.0.22.orig/backend/qcam.c ++++ sane-backends-1.0.22/backend/qcam.c +@@ -205,12 +205,20 @@ + + #endif /* || || */ + ++/* inb / outb only exist on x86 */ ++#if defined(__i386__) || defined(__x86_64__) + #define read_lpdata(d) inb ((d)->port) + #define read_lpstatus(d) inb ((d)->port + 1) + #define read_lpcontrol(d) inb ((d)->port + 2) + #define write_lpdata(d,v) outb ((v), (d)->port) + #define write_lpcontrol(d,v) outb ((v), (d)->port + 2) +- ++#else ++#define read_lpdata(d) 0 ++#define read_lpstatus(d) 0 ++#define read_lpcontrol(d) 0 ++#define write_lpdata(d,v) ++#define write_lpcontrol(d,v) ++#endif + + static SANE_Status + enable_ports (QC_Device * q) +@@ -219,8 +227,10 @@ + if (q->port < 0x278 || q->port > 0x3bc) + return SANE_STATUS_INVAL; + ++#if defined(__i386__) || defined(__x86_64__) + if (ioperm (q->port, 3, 1) < 0) + return SANE_STATUS_INVAL; ++#endif + + return SANE_STATUS_GOOD; + } +@@ -228,8 +238,10 @@ + static SANE_Status + disable_ports (QC_Device * q) + { ++#if defined(__i386__) || defined(__x86_64__) + if (ioperm (q->port, 3, 0) < 0) + return SANE_STATUS_INVAL; ++#endif + + return SANE_STATUS_GOOD; + } diff --git a/buildroot/package/sane-backends/0002-Add-missing-sys-types.h-includes.patch b/buildroot/package/sane-backends/0002-Add-missing-sys-types.h-includes.patch new file mode 100644 index 0000000..8ab41f1 --- /dev/null +++ b/buildroot/package/sane-backends/0002-Add-missing-sys-types.h-includes.patch @@ -0,0 +1,106 @@ +From d33f16f463e888846d69ddfbeeb963d40972b654 Mon Sep 17 00:00:00 2001 +From: Luiz Angelo Daros de Luca +Date: Thu, 15 Oct 2015 12:35:00 +0900 +Subject: [PATCH] Add missing includes + +[Thomas: backport from upstream commit +33495ef9b42a783c8f5f2c056ac5699481d3cc7e, allows to fix the build with +the musl C library.] +Signed-off-by: Thomas Petazzoni +--- + backend/epsonds-io.c | 3 +++ + backend/hp5400.c | 3 +++ + backend/hp5590.c | 3 +++ + backend/kvs20xx_cmd.h | 4 ++++ + backend/kvs40xx.h | 3 +++ + include/sane/sanei_udp.h | 3 +++ + 6 files changed, 19 insertions(+) + +diff --git a/backend/epsonds-io.c b/backend/epsonds-io.c +index 28bacfc..512997d 100644 +--- a/backend/epsonds-io.c ++++ b/backend/epsonds-io.c +@@ -16,6 +16,9 @@ + #include "sane/config.h" + #include + #include /* sleep */ ++#ifdef HAVE_SYS_TYPES_H ++#include ++#endif + + #include "epsonds.h" + #include "epsonds-io.h" +diff --git a/backend/hp5400.c b/backend/hp5400.c +index 61de3db..cfa2dc9 100644 +--- a/backend/hp5400.c ++++ b/backend/hp5400.c +@@ -67,6 +67,9 @@ + #include /* malloc, free */ + #include /* memcpy */ + #include ++#ifdef HAVE_SYS_TYPES_H ++#include ++#endif + + + #define HP5400_CONFIG_FILE "hp5400.conf" +diff --git a/backend/hp5590.c b/backend/hp5590.c +index 7b1cd60..5422372 100644 +--- a/backend/hp5590.c ++++ b/backend/hp5590.c +@@ -48,6 +48,9 @@ + #include + #include + #include ++#ifdef HAVE_SYS_TYPES_H ++#include ++#endif + + #include "../include/sane/sane.h" + #define BACKEND_NAME hp5590 +diff --git a/backend/kvs20xx_cmd.h b/backend/kvs20xx_cmd.h +index c18b754..4acaf62 100644 +--- a/backend/kvs20xx_cmd.h ++++ b/backend/kvs20xx_cmd.h +@@ -9,6 +9,10 @@ + Panasonic KV-S20xx USB-SCSI scanners. + */ + ++#ifdef HAVE_SYS_TYPES_H ++#include ++#endif ++ + #define COMMAND_BLOCK 1 + #define DATA_BLOCK 2 + #define RESPONSE_BLOCK 3 +diff --git a/backend/kvs40xx.h b/backend/kvs40xx.h +index fa17163..02e0da6 100644 +--- a/backend/kvs40xx.h ++++ b/backend/kvs40xx.h +@@ -10,6 +10,9 @@ + + #include "../include/sane/config.h" + #include ++#ifdef HAVE_SYS_TYPES_H ++#include ++#endif + + #undef BACKEND_NAME + #define BACKEND_NAME kvs40xx +diff --git a/include/sane/sanei_udp.h b/include/sane/sanei_udp.h +index c44afdd..e32fc1a 100644 +--- a/include/sane/sanei_udp.h ++++ b/include/sane/sanei_udp.h +@@ -27,6 +27,9 @@ + #include + #include + #endif ++#ifdef HAVE_SYS_TYPES_H ++#include ++#endif + + extern SANE_Status sanei_udp_open(const char *host, int port, int *fdp); + extern SANE_Status sanei_udp_open_broadcast(int *fdp); +-- +2.7.4 + diff --git a/buildroot/package/sane-backends/0003-sane_backend-add-missing-config.h.patch b/buildroot/package/sane-backends/0003-sane_backend-add-missing-config.h.patch new file mode 100644 index 0000000..8e56b02 --- /dev/null +++ b/buildroot/package/sane-backends/0003-sane_backend-add-missing-config.h.patch @@ -0,0 +1,49 @@ +From 13aadf79659dd238b618c8be7c1de44960bd5d50 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 11 Nov 2016 22:20:03 +0100 +Subject: [PATCH] sane_backend: add missing config.h + +We should include config.h from sanei_backend.h in order to use the +correct if/else HAVE_FOO. + +For some reason with Glibc or uClibc there is no problem but with musl +we have the following weird issue: + +In file included from epsonds.h:41:0, + from epsonds-jpeg.c:18: +../include/sane/sanei_backend.h:99:33: error: expected ';', identifier or '(' before 'int' + # define sigset_t int + ^ +../include/sane/sanei_backend.h:99:33: warning: useless type name in empty declaration + +That's because HAVE_SIGPROCMASK is not defined although it's correctly +detected by the configure script. + +$ grep config.log +config.log:#define HAVE_SIGPROCMASK 1 + +So, include config.h to avoid to redefine sigset_t. + +Fixes: +http://autobuild.buildroot.net/results/9f1/9f1f1cb727b5c5407e69172280a3dee880e55cdf + +Signed-off-by: Romain Naour +--- + include/sane/sanei_backend.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/sane/sanei_backend.h b/include/sane/sanei_backend.h +index 1b5afe2..2a96532 100644 +--- a/include/sane/sanei_backend.h ++++ b/include/sane/sanei_backend.h +@@ -8,6 +8,7 @@ + * @sa sanei.h sanei_thread.h + */ + ++#include "../include/sane/config.h" + + /* + * Compiler related options +-- +2.5.5 + diff --git a/buildroot/package/sane-backends/Config.in b/buildroot/package/sane-backends/Config.in new file mode 100644 index 0000000..48ae9f7 --- /dev/null +++ b/buildroot/package/sane-backends/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_SANE_BACKENDS + bool "sane-backends" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + help + SANE - Scanner Access Now Easy + + http://www.sane-project.org + + Backends are included automatically based on the libraries + that have been selected: libusb, jpeg, tiff, avahi (with + dbus and libglib2), and netsnmp. + +comment "sane-backends needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/sane-backends/sane-backends.hash b/buildroot/package/sane-backends/sane-backends.hash new file mode 100644 index 0000000..a7693e2 --- /dev/null +++ b/buildroot/package/sane-backends/sane-backends.hash @@ -0,0 +1,2 @@ +# From http://www.sane-project.org/sane-md5sums.txt +md5 f9ed5405b3c12f07c6ca51ee60225fe7 sane-backends-1.0.25.tar.gz diff --git a/buildroot/package/sane-backends/sane-backends.mk b/buildroot/package/sane-backends/sane-backends.mk new file mode 100644 index 0000000..ed3b912 --- /dev/null +++ b/buildroot/package/sane-backends/sane-backends.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# sane-backends +# +################################################################################ + +SANE_BACKENDS_VERSION = 1.0.25 +SANE_BACKENDS_SITE = https://alioth.debian.org/frs/download.php/file/4146 +SANE_BACKENDS_CONFIG_SCRIPTS = sane-config +SANE_BACKENDS_LICENSE = GPL-2.0+ +SANE_BACKENDS_LICENSE_FILES = COPYING +SANE_BACKENDS_INSTALL_STAGING = YES + +SANE_BACKENDS_CONF_OPTS = \ + $(if $(BR2_TOOLCHAIN_HAS_THREADS),--enable-pthread,--disable-pthread) + +ifeq ($(BR2_INIT_SYSTEMD),y) +SANE_BACKENDS_CONF_OPTS += --with-systemd +SANE_BACKENDS_DEPENDENCIES += systemd +else +SANE_BACKENDS_CONF_OPTS += --without-systemd +endif + +ifeq ($(BR2_PACKAGE_LIBUSB),y) +SANE_BACKENDS_DEPENDENCIES += libusb +SANE_BACKENDS_CONF_OPTS += --enable-libusb_1_0 +else +SANE_BACKENDS_CONF_OPTS += --disable-libusb +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +SANE_BACKENDS_DEPENDENCIES += jpeg +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +SANE_BACKENDS_DEPENDENCIES += tiff +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +SANE_BACKENDS_DEPENDENCIES += libv4l +endif + +ifeq ($(BR2_PACKAGE_AVAHI)$(BR2_PACKAGE_DBUS)$(BR2_PACKAGE_LIBGLIB2),yyy) +SANE_BACKENDS_DEPENDENCIES += avahi +SANE_BACKENDS_CONF_OPTS += --enable-avahi +endif + +ifeq ($(BR2_PACKAGE_NETSNMP),y) +SANE_BACKENDS_CONF_ENV += ac_cv_path_SNMP_CONFIG_PATH=$(STAGING_DIR)/usr/bin/net-snmp-config +SANE_BACKENDS_DEPENDENCIES += netsnmp +else +SANE_BACKENDS_CONF_OPTS += --without-snmp +endif + +define SANE_BACKENDS_DISABLE_DOCS + $(SED) 's/ doc//' $(@D)/Makefile +endef + +SANE_BACKENDS_POST_CONFIGURE_HOOKS += SANE_BACKENDS_DISABLE_DOCS + +define SANE_BACKENDS_USERS + saned -1 saned -1 * /etc/sane.d - - Saned User +endef + +define SANE_BACKENDS_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D package/sane-backends/saned.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/saned.socket + mkdir -p $(TARGET_DIR)/etc/systemd/system/socket.target.wants + ln -sf ../../../../usr/lib/systemd/system/saned.socket \ + $(TARGET_DIR)/etc/systemd/system/socket.target.wants/saned.socket + $(INSTALL) -m 0644 -D package/sane-backends/saned@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/saned@.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/saned@.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/saned@.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/sane-backends/saned.socket b/buildroot/package/sane-backends/saned.socket new file mode 100644 index 0000000..1aa19e7 --- /dev/null +++ b/buildroot/package/sane-backends/saned.socket @@ -0,0 +1,10 @@ +[Unit] +Description=saned incoming socket + +[Socket] +ListenStream=6566 +Accept=yes +MaxConnections=1 + +[Install] +WantedBy=sockets.target diff --git a/buildroot/package/sane-backends/saned@.service b/buildroot/package/sane-backends/saned@.service new file mode 100644 index 0000000..1905dbf --- /dev/null +++ b/buildroot/package/sane-backends/saned@.service @@ -0,0 +1,18 @@ +[Unit] +Description=Scanner Service +Requires=saned.socket + +[Service] +ExecStart=/usr/sbin/saned +User=saned +Group=saned +StandardInput=null +StandardOutput=syslog +StandardError=syslog +Environment=SANE_CONFIG_DIR=/etc/sane.d +# If you need to debug your configuration uncomment the next line and +# change it as appropriate to set the desired debug options +# Environment=SANE_DEBUG_DLL=255 SANE_DEBUG_BJNP=5 + +[Install] +Also=saned.socket diff --git a/buildroot/package/sbc/Config.in b/buildroot/package/sbc/Config.in new file mode 100644 index 0000000..f1dbc0e --- /dev/null +++ b/buildroot/package/sbc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_SBC + bool "sbc" + select BR2_PACKAGE_LIBSNDFILE + help + An audio codec to connect bluetooth high quality audio + devices like headphones or loudspeakers. + + http://www.bluez.org/ diff --git a/buildroot/package/sbc/sbc.hash b/buildroot/package/sbc/sbc.hash new file mode 100644 index 0000000..be3c8f7 --- /dev/null +++ b/buildroot/package/sbc/sbc.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc +sha256 e61022cf576f14190241e7071753fdacdce5d1dea89ffd704110fc50be689309 sbc-1.3.tar.xz diff --git a/buildroot/package/sbc/sbc.mk b/buildroot/package/sbc/sbc.mk new file mode 100644 index 0000000..77661c1 --- /dev/null +++ b/buildroot/package/sbc/sbc.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# sbc +# +################################################################################ + +SBC_VERSION = 1.3 +SBC_SOURCE = sbc-$(SBC_VERSION).tar.xz +SBC_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth +SBC_INSTALL_STAGING = YES +SBC_DEPENDENCIES = libsndfile host-pkgconf +SBC_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (library) +SBC_LICENSE_FILES = COPYING COPYING.LIB + +$(eval $(autotools-package)) diff --git a/buildroot/package/sconeserver/Config.in b/buildroot/package/sconeserver/Config.in new file mode 100644 index 0000000..7027bd9 --- /dev/null +++ b/buildroot/package/sconeserver/Config.in @@ -0,0 +1,109 @@ +menuconfig BR2_PACKAGE_SCONESERVER + bool "sconeserver" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on !BR2_STATIC_LIBS # dlopen() + select BR2_PACKAGE_PCRE + help + Sconeserver is a modular, object-orientated and extremely + versatile network server framework for GNU/Linux and + UNIX-like platforms. + + http://www.sconemad.com/sconeserver/ + +if BR2_PACKAGE_SCONESERVER + +comment "Sconeserver modules" + +config BR2_PACKAGE_SCONESERVER_EXAMPLES + bool "examples" + help + Example modules for Sconeserver + +config BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE + bool "http::sconesite" + select BR2_PACKAGE_LIBXML2 + help + http::sconesite module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE_IMAGE + bool "http::sconesite::image" + depends on BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE + depends on BR2_USE_MMU # imagemagick + select BR2_PACKAGE_IMAGEMAGICK + help + http::sconesite::image module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_MYSQL + bool "mysql" + depends on BR2_USE_MMU # mysql + select BR2_PACKAGE_MYSQL + help + MySQL module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_BLUETOOTH + bool "bluetooth" + depends on BR2_USE_WCHAR # bluez->libglib2 + depends on BR2_USE_MMU # bluez->dbus + depends on BR2_TOOLCHAIN_HAS_THREADS # bluez->dbus, bluez->libglib2 + depends on !BR2_STATIC_LIBS # bluez_utils + select BR2_PACKAGE_BLUEZ_UTILS + help + Bluetooth module for Sconeserver + +comment "bluetooth support needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_SCONESERVER_RSS + bool "rss" + select BR2_PACKAGE_LIBXML2 + help + RSS module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_LOCATION + bool "location" + depends on BR2_USE_MMU # gpsd + depends on BR2_TOOLCHAIN_HAS_THREADS # gpsd + depends on !BR2_STATIC_LIBS # gpsd + select BR2_PACKAGE_GPSD + help + Location module for Sconeserver + +comment "location support needs a toolchain w/ theads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBRARY + +config BR2_PACKAGE_SCONESERVER_LETTUCE + bool "lettuce" + help + Sconeserver module for Lettuce embedded automation platform + + http://www.sconemad.com/lettuce/ + +config BR2_PACKAGE_SCONESERVER_MATHS + bool "maths" + select BR2_PACKAGE_MPFR + help + Mathematics module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_TESTBUILDER + bool "testbuilder" + help + Testbuilder module for Sconeserver + +config BR2_PACKAGE_SCONESERVER_UI + bool "ui" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + help + UI module for Sconeserver + +comment "ui module requires X.org" + depends on !BR2_PACKAGE_XORG7 + +endif # BR2_PACKAGE_SCONESERVER + +comment "sconeserver needs a toolchain with dynamic library, C++, NPTL" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || BR2_STATIC_LIBS diff --git a/buildroot/package/sconeserver/sconeserver.hash b/buildroot/package/sconeserver/sconeserver.hash new file mode 100644 index 0000000..978b442 --- /dev/null +++ b/buildroot/package/sconeserver/sconeserver.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 38e72b962eb42bea8f0deb6f101833f8f2f2fa8c53f0dc03f3eb5d56873517c8 sconeserver-d659468cd164e6a6cc12932cc6780566b04f8328.tar.gz diff --git a/buildroot/package/sconeserver/sconeserver.mk b/buildroot/package/sconeserver/sconeserver.mk new file mode 100644 index 0000000..cf7bcbc --- /dev/null +++ b/buildroot/package/sconeserver/sconeserver.mk @@ -0,0 +1,114 @@ +################################################################################ +# +# sconeserver +# +################################################################################ + +SCONESERVER_VERSION = d659468cd164e6a6cc12932cc6780566b04f8328 +SCONESERVER_SITE = $(call github,sconemad,sconeserver,$(SCONESERVER_VERSION)) +SCONESERVER_LICENSE = GPL-2.0+ +SCONESERVER_LICENSE_FILES = COPYING +# fetching from Git, we need to generate the configure script +SCONESERVER_AUTORECONF = YES +SCONESERVER_DEPENDENCIES = host-pkgconf pcre +# disable markdown module because its git submodule cmark +# https://github.com/sconemad/sconeserver/tree/master/markdown +# has no cross-compile support provided by the sconeserver build system +SCONESERVER_CONF_OPTS += --with-ip --with-local --with-ip6 --without-markdown + +# Sconeserver configure script fails to find the libxml2 headers. +ifeq ($(BR2_PACKAGE_LIBXML2),y) +SCONESERVER_CONF_OPTS += \ + --with-xml2-config="$(STAGING_DIR)/usr/bin/xml2-config" +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SCONESERVER_DEPENDENCIES += openssl +SCONESERVER_CONF_OPTS += --with-ssl +ifeq ($(BR2_STATIC_LIBS),y) +SCONESERVER_CONF_ENV += SSL_LIBADD=-lz +endif +else +SCONESERVER_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_EXAMPLES),y) +SCONESERVER_CONF_OPTS += --with-examples +else +SCONESERVER_CONF_OPTS += --without-examples +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE),y) +SCONESERVER_DEPENDENCIES += libxml2 +SCONESERVER_CONF_OPTS += --with-sconesite +else +SCONESERVER_CONF_OPTS += --without-sconesite +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE_IMAGE),y) +SCONESERVER_DEPENDENCIES += imagemagick +SCONESERVER_CONF_OPTS += \ + --with-sconesite-image \ + --with-Magick++-config="$(STAGING_DIR)/usr/bin/Magick++-config" +else +SCONESERVER_CONF_OPTS += --without-sconesite-image --with-Magick++-config=no +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_MYSQL),y) +SCONESERVER_DEPENDENCIES += mysql +SCONESERVER_CONF_OPTS += \ + --with-mysql \ + --with-mysql_config="$(STAGING_DIR)/usr/bin/mysql_config" \ + LDFLAGS="$(TARGET_LDFLAGS) -L$(STAGING_DIR)/usr/lib/mysql" +else +SCONESERVER_CONF_OPTS += --without-mysql +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_BLUETOOTH),y) +SCONESERVER_DEPENDENCIES += bluez_utils +SCONESERVER_CONF_OPTS += --with-bluetooth +else +SCONESERVER_CONF_OPTS += --without-bluetooth +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_RSS),y) +SCONESERVER_DEPENDENCIES += libxml2 +SCONESERVER_CONF_OPTS += --with-rss +else +SCONESERVER_CONF_OPTS += --without-rss +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_LOCATION),y) +SCONESERVER_DEPENDENCIES += gpsd +SCONESERVER_CONF_OPTS += --with-location +else +SCONESERVER_CONF_OPTS += --without-location +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_LETTUCE),y) +SCONESERVER_CONF_OPTS += --with-lettuce +else +SCONESERVER_CONF_OPTS += --without-lettuce +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_MATHS),y) +SCONESERVER_DEPENDENCIES += mpfr +SCONESERVER_CONF_OPTS += --with-maths +else +SCONESERVER_CONF_OPTS += --without-maths +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_TESTBUILDER),y) +SCONESERVER_CONF_OPTS += --with-testbuilder +else +SCONESERVER_CONF_OPTS += --without-testbuilder +endif + +ifeq ($(BR2_PACKAGE_SCONESERVER_UI),y) +SCONESERVER_DEPENDENCIES += xlib_libX11 +SCONESERVER_CONF_OPTS += --with-ui +else +SCONESERVER_CONF_OPTS += --without-ui +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/scons/scons.hash b/buildroot/package/scons/scons.hash new file mode 100644 index 0000000..b3cdea0 --- /dev/null +++ b/buildroot/package/scons/scons.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 0b25218ae7b46a967db42f2a53721645b3d42874a65f9552ad16ce26d30f51f2 scons-2.5.1.tar.gz diff --git a/buildroot/package/scons/scons.mk b/buildroot/package/scons/scons.mk new file mode 100644 index 0000000..14be589 --- /dev/null +++ b/buildroot/package/scons/scons.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# scons +# +################################################################################ + +SCONS_VERSION = 2.5.1 +SCONS_SITE = http://downloads.sourceforge.net/project/scons/scons/$(SCONS_VERSION) +SCONS_LICENSE = MIT +SCONS_LICENSE_FILES = LICENSE.txt +SCONS_SETUP_TYPE = distutils + +HOST_SCONS_NEEDS_HOST_PYTHON = python2 + +HOST_SCONS_INSTALL_OPTS = \ + --install-lib=$(HOST_DIR)/lib/scons-$(SCONS_VERSION) + +$(eval $(host-python-package)) + +# variables used by other packages +SCONS = $(HOST_DIR)/bin/python2 $(HOST_DIR)/bin/scons $(if $(QUIET),-s) diff --git a/buildroot/package/screen/0001-compiler-sanity-checks.patch b/buildroot/package/screen/0001-compiler-sanity-checks.patch new file mode 100644 index 0000000..fe6c3fd --- /dev/null +++ b/buildroot/package/screen/0001-compiler-sanity-checks.patch @@ -0,0 +1,62 @@ +From: Maarten ter Huurne +Date: Sat, 13 Sep 2014 10:27:27 +0200 +Subject: Removed redundant compiler sanity checks + +AC_PROG_CC already performs sanity checks. And unlike the removed +checks, it does so in a way that supports cross compilation. + +Signed-off-by: Maarten ter Huurne +[Ricardo: rebase on top of 4.3.1] +Signed-off-by: Ricardo Martincoski +--- + configure.ac | 27 --------------------------- + 1 file changed, 27 deletions(-) + +diff --git a/configure.ac b/configure.ac +index ffe2e37..27690a6 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -48,31 +48,6 @@ AC_PROG_GCC_TRADITIONAL + AC_ISC_POSIX + AC_USE_SYSTEM_EXTENSIONS + +-AC_TRY_RUN(main(){exit(0);},,[ +-if test $CC != cc ; then +-AC_NOTE(Your $CC failed - restarting with CC=cc) +-AC_NOTE() +-CC=cc +-export CC +-exec $0 $configure_args +-fi +-]) +- +-AC_TRY_RUN(main(){exit(0);},, +-exec 5>&2 +-eval $ac_link +-AC_NOTE(CC=$CC; CFLAGS=$CFLAGS; LIBS=$LIBS;) +-AC_NOTE($ac_compile) +-AC_MSG_ERROR(Can't run the compiler - sorry)) +- +-AC_TRY_RUN([ +-main() +-{ +- int __something_strange_(); +- __something_strange_(0); +-} +-],AC_MSG_ERROR(Your compiler does not set the exit status - sorry)) +- + AC_PROG_AWK + + AC_PROG_INSTALL +@@ -1300,8 +1275,6 @@ fi + dnl Ptx bug workaround -- insert -lc after -ltermcap + test -n "$seqptx" && LIBS="-ltermcap -lc -lsocket -linet -lnsl -lsec -lseq" + +-AC_TRY_RUN(main(){exit(0);},,AC_MSG_ERROR(Can't run the compiler - internal error. Sorry.)) +- + ETCSCREENRC= + AC_MSG_CHECKING(for the global screenrc file) + AC_ARG_WITH(sys-screenrc, [ --with-sys-screenrc=path to the global screenrc file], [ ETCSCREENRC="${withval}" ]) +-- +1.8.4.5 + diff --git a/buildroot/package/screen/0002-no-memcpy-fallback.patch b/buildroot/package/screen/0002-no-memcpy-fallback.patch new file mode 100644 index 0000000..f3a6a70 --- /dev/null +++ b/buildroot/package/screen/0002-no-memcpy-fallback.patch @@ -0,0 +1,124 @@ +From: Maarten ter Huurne +Date: Sat, 13 Sep 2014 11:37:59 +0200 +Subject: Do not use memcpy as an alternative for bcopy/memmove + +The configure script runs a small test program to check whether +memcpy can handle overlapping memory areas. However, it is not valid +to conclude that if a single case of overlapping memory is handled +correctly, all cases will be handled correctly. + +Since screen already has its own bcopy implementation as a fallback +for the case that bcopy and memmove are unusable, removing the memcpy +option should not break any systems. + +Signed-off-by: Maarten ter Huurne +[Ricardo: rebase on top of 4.3.1] +Signed-off-by: Ricardo Martincoski +--- + acconfig.h | 3 +-- + configure.ac | 18 +----------------- + os.h | 8 ++------ + osdef.h.in | 10 +--------- + 4 files changed, 5 insertions(+), 34 deletions(-) + +diff --git a/acconfig.h b/acconfig.h +index 2e46985..9b0b9d4 100644 +--- a/acconfig.h ++++ b/acconfig.h +@@ -476,7 +476,7 @@ + #undef GETTTYENT + + /* +- * Define USEBCOPY if the bcopy/memcpy from your system's C library ++ * Define USEBCOPY if the bcopy from your system's C library + * supports the overlapping of source and destination blocks. When + * undefined, screen uses its own (probably slower) version of bcopy(). + * +@@ -487,7 +487,6 @@ + * Their memove fails the test in the configure script. Sigh. (Juergen) + */ + #undef USEBCOPY +-#undef USEMEMCPY + #undef USEMEMMOVE + + /* +diff --git a/configure.ac b/configure.ac +index 27690a6..b8e3bec 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1145,7 +1145,7 @@ AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT)) + AC_CHECKING(fdwalk) + AC_TRY_LINK([#include ], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK)) + +-AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments) ++AC_CHECKING(whether memmove/bcopy handles overlapping arguments) + AC_TRY_RUN([ + main() { + char buf[10]; +@@ -1175,22 +1175,6 @@ main() { + exit(0); /* libc version works properly. */ + }], AC_DEFINE(USEMEMMOVE)) + +- +-AC_TRY_RUN([ +-#define bcopy(s,d,l) memcpy(d,s,l) +-main() { +- char buf[10]; +- strcpy(buf, "abcdefghi"); +- bcopy(buf, buf + 2, 3); +- if (strncmp(buf, "ababcf", 6)) +- exit(1); +- strcpy(buf, "abcdefghi"); +- bcopy(buf + 2, buf, 3); +- if (strncmp(buf, "cdedef", 6)) +- exit(1); +- exit(0); /* libc version works properly. */ +-}], AC_DEFINE(USEMEMCPY)) +- + AC_SYS_LONG_FILE_NAMES + + AC_MSG_CHECKING(for vsprintf) +diff --git a/os.h b/os.h +index e827ac9..0b41fb9 100644 +--- a/os.h ++++ b/os.h +@@ -142,12 +142,8 @@ extern int errno; + # ifdef USEMEMMOVE + # define bcopy(s,d,len) memmove(d,s,len) + # else +-# ifdef USEMEMCPY +-# define bcopy(s,d,len) memcpy(d,s,len) +-# else +-# define NEED_OWN_BCOPY +-# define bcopy xbcopy +-# endif ++# define NEED_OWN_BCOPY ++# define bcopy xbcopy + # endif + #endif + +diff --git a/osdef.h.in b/osdef.h.in +index 8687b60..e4057a0 100644 +--- a/osdef.h.in ++++ b/osdef.h.in +@@ -58,16 +58,8 @@ extern int bcmp __P((char *, char *, int)); + extern int killpg __P((int, int)); + #endif + +-#ifndef USEBCOPY +-# ifdef USEMEMCPY +-extern void memcpy __P((char *, char *, int)); +-# else +-# ifdef USEMEMMOVE ++#if defined(USEMEMMOVE) && !defined(USEBCOPY) + extern void memmove __P((char *, char *, int)); +-# else +-extern void bcopy __P((char *, char *, int)); +-# endif +-# endif + #else + extern void bcopy __P((char *, char *, int)); + #endif +-- +1.8.4.5 + diff --git a/buildroot/package/screen/0003-cross-compilation-AC_TRY_RUN.patch b/buildroot/package/screen/0003-cross-compilation-AC_TRY_RUN.patch new file mode 100644 index 0000000..eafe3d5 --- /dev/null +++ b/buildroot/package/screen/0003-cross-compilation-AC_TRY_RUN.patch @@ -0,0 +1,125 @@ +From: Maarten ter Huurne +Date: Sat, 13 Sep 2014 12:04:41 +0200 +Subject: Provide cross compilation alternatives for all AC_TRY_RUN uses + +Signed-off-by: Maarten ter Huurne +[Ricardo: rebase on top of 4.3.1] +Signed-off-by: Ricardo Martincoski +--- + configure.ac | 30 +++++++++++++++++++----------- + 1 file changed, 19 insertions(+), 11 deletions(-) + +diff --git a/configure.ac b/configure.ac +index b8e3bec..c4b7cd4 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -348,7 +348,8 @@ main() + exit(0); + } + ], AC_NOTE(- your fifos are usable) fifo=1, +-AC_NOTE(- your fifos are not usable)) ++AC_NOTE(- your fifos are not usable), ++AC_NOTE(- skipping check because we are cross compiling; assuming fifos are usable) fifo=1) + rm -f /tmp/conftest* + + if test -n "$fifo"; then +@@ -396,7 +397,8 @@ main() + exit(0); + } + ], AC_NOTE(- your implementation is ok), +-AC_NOTE(- you have a broken implementation) AC_DEFINE(BROKEN_PIPE) fifobr=1) ++AC_NOTE(- you have a broken implementation) AC_DEFINE(BROKEN_PIPE) fifobr=1, ++AC_NOTE(- skipping check because we are cross compiling; assuming fifo implementation is ok)) + rm -f /tmp/conftest* + fi + +@@ -458,7 +460,8 @@ main() + exit(0); + } + ], AC_NOTE(- your sockets are usable) sock=1, +-AC_NOTE(- your sockets are not usable)) ++AC_NOTE(- your sockets are not usable), ++AC_NOTE(- skipping check because we are cross compiling; assuming sockets are usable) sock=1) + rm -f /tmp/conftest* + + if test -n "$sock"; then +@@ -497,7 +500,8 @@ main() + } + ],AC_NOTE(- you are normal), + AC_NOTE(- unix domain sockets are not kept in the filesystem) +-AC_DEFINE(SOCK_NOT_IN_FS) socknofs=1) ++AC_DEFINE(SOCK_NOT_IN_FS) socknofs=1, ++AC_NOTE(- skipping check because we are cross compiling; assuming sockets are normal)) + rm -f /tmp/conftest* + fi + +@@ -624,7 +628,8 @@ main() + exit(0); + } + ],AC_NOTE(- select is ok), +-AC_NOTE(- select can't count) AC_DEFINE(SELECT_BROKEN)) ++AC_NOTE(- select can't count) AC_DEFINE(SELECT_BROKEN), ++AC_NOTE(- skipping check because we are cross compiling; assuming select is ok)) + + dnl + dnl **** termcap or terminfo **** +@@ -666,7 +671,8 @@ main() + { + exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1); + }], AC_NOTE(- you use the termcap database), +-AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO)) ++AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO), ++AC_NOTE(- skipping check because we are cross compiling; assuming terminfo database is used) AC_DEFINE(TERMINFO)) + AC_CHECKING(ospeed) + AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED)) + +@@ -801,7 +807,8 @@ main() + else + AC_NOTE(- can't determine - assume ptys are world accessable) + fi +- ] ++ ], ++ AC_NOTE(- skipping check because we are cross compiling; assuming ptys are world accessable) + ) + rm -f conftest_grp + fi +@@ -885,7 +892,7 @@ AC_EGREP_CPP(yes, + #endif + ], load=1) + fi +-if test -z "$load" ; then ++if test -z "$load" && test "$cross_compiling" = no ; then + AC_CHECKING(for kernelfile) + for core in /unix /vmunix /dynix /hp-ux /xelos /dev/ksyms /kernel/unix /kernel/genunix /unicos /mach /netbsd /386bsd /dgux /bsd /stand/vmunix; do + if test -f $core || test -c $core; then +@@ -1078,7 +1085,7 @@ main() + #endif + exit(0); + } +-],,AC_DEFINE(SYSVSIGS)) ++],,AC_DEFINE(SYSVSIGS),:) + + fi + +@@ -1158,7 +1165,7 @@ main() { + if (strncmp(buf, "cdedef", 6)) + exit(1); + exit(0); /* libc version works properly. */ +-}], AC_DEFINE(USEBCOPY)) ++}], AC_DEFINE(USEBCOPY),,:) + + AC_TRY_RUN([ + #define bcopy(s,d,l) memmove(d,s,l) +@@ -1173,7 +1180,8 @@ main() { + if (strncmp(buf, "cdedef", 6)) + exit(1); + exit(0); /* libc version works properly. */ +-}], AC_DEFINE(USEMEMMOVE)) ++}], AC_DEFINE(USEMEMMOVE),, ++ AC_NOTE(- skipping check because we are cross compiling; use memmove) AC_DEFINE(USEMEMMOVE)) + + AC_SYS_LONG_FILE_NAMES + +-- +1.8.4.5 + diff --git a/buildroot/package/screen/0004-cross-compilation-ignore-host-fs.patch b/buildroot/package/screen/0004-cross-compilation-ignore-host-fs.patch new file mode 100644 index 0000000..fa698ef --- /dev/null +++ b/buildroot/package/screen/0004-cross-compilation-ignore-host-fs.patch @@ -0,0 +1,132 @@ +From: Maarten ter Huurne +Date: Sun, 14 Sep 2014 07:10:59 +0200 +Subject: When cross-compiling, skip checks that look in the host file system + +Signed-off-by: Maarten ter Huurne +[Ricardo: rebase on top of 4.3.1] +Signed-off-by: Ricardo Martincoski +--- + configure.ac | 23 +++++++++++++++++++---- + 1 file changed, 19 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index c4b7cd4..9cf7cee 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -85,7 +85,7 @@ AC_ARG_ENABLE(socket-dir, + dnl + dnl **** special unix variants **** + dnl +-if test -n "$ISC"; then ++if test "$cross_compiling" = no && test -n "$ISC" ; then + AC_DEFINE(ISC) LIBS="$LIBS -linet" + fi + +@@ -96,10 +96,11 @@ dnl AC_DEFINE(OSF1) # this disables MIPS again.... + dnl fi + dnl fi + +-if test -f /sysV68 ; then ++if test "$cross_compiling" = no && test -f /sysV68 ; then + AC_DEFINE(sysV68) + fi + ++if test "$cross_compiling" = no ; then + AC_CHECKING(for MIPS) + if test -f /lib/libmld.a || test -f /usr/lib/libmld.a || test -f /usr/lib/cmplrs/cc/libmld.a; then + oldlibs="$LIBS" +@@ -123,6 +124,7 @@ AC_DEFINE(USE_WAIT2) LIBS="$LIBS -lbsd" ; CC="$CC -I/usr/include/bsd" + )) + fi + fi ++fi + + + AC_CHECKING(for Ultrix) +@@ -132,7 +134,7 @@ AC_EGREP_CPP(yes, + #endif + ], ULTRIX=1) + +-if test -f /usr/lib/libpyr.a ; then ++if test "$cross_compiling" = no && test -f /usr/lib/libpyr.a ; then + oldlibs="$LIBS" + LIBS="$LIBS -lpyr" + AC_CHECKING(Pyramid OSX) +@@ -679,17 +681,21 @@ AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED)) + dnl + dnl **** PTY specific things **** + dnl ++if test "$cross_compiling" = no ; then + AC_CHECKING(for /dev/ptc) + if test -r /dev/ptc; then + AC_DEFINE(HAVE_DEV_PTC) + fi ++fi + ++if test "$cross_compiling" = no ; then + AC_CHECKING(for SVR4 ptys) + sysvr4ptys= + if test -c /dev/ptmx ; then + AC_TRY_LINK([],[ptsname(0);grantpt(0);unlockpt(0);],[AC_DEFINE(HAVE_SVR4_PTYS) + sysvr4ptys=1]) + fi ++fi + + AC_CHECK_FUNCS(getpt) + +@@ -699,6 +705,7 @@ AC_CHECK_FUNCS(openpty,, + [AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY)] [LIBS="$LIBS -lutil"])]) + fi + ++if test "$cross_compiling" = no ; then + AC_CHECKING(for ptyranges) + if test -d /dev/ptym ; then + pdir='/dev/ptym' +@@ -722,6 +729,7 @@ p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\ + AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0") + AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1") + fi ++fi + + dnl **** pty mode/group handling **** + dnl +@@ -869,14 +877,16 @@ fi + dnl + dnl **** loadav **** + dnl ++if test "$cross_compiling" = no ; then + AC_CHECKING(for libutil(s)) + test -f /usr/lib/libutils.a && LIBS="$LIBS -lutils" + test -f /usr/lib/libutil.a && LIBS="$LIBS -lutil" ++fi + + AC_CHECKING(getloadavg) + AC_TRY_LINK(,[getloadavg((double *)0, 0);], + AC_DEFINE(LOADAV_GETLOADAVG) load=1, +-if test -f /usr/lib/libkvm.a ; then ++if test "$cross_compiling" = no && test -f /usr/lib/libkvm.a ; then + olibs="$LIBS" + LIBS="$LIBS -lkvm" + AC_CHECKING(getloadavg with -lkvm) +@@ -1094,13 +1104,18 @@ dnl **** libraries **** + dnl + + AC_CHECKING(for crypt and sec libraries) ++if test "$cross_compiling" = no ; then + test -f /lib/libcrypt_d.a || test -f /usr/lib/libcrypt_d.a && LIBS="$LIBS -lcrypt_d" ++fi + oldlibs="$LIBS" + LIBS="$LIBS -lcrypt" + AC_CHECKING(crypt) + AC_TRY_LINK(,,,LIBS="$oldlibs") ++if test "$cross_compiling" = no ; then + test -f /lib/libsec.a || test -f /usr/lib/libsec.a && LIBS="$LIBS -lsec" + test -f /lib/libshadow.a || test -f /usr/lib/libshadow.a && LIBS="$LIBS -lshadow" ++fi ++ + oldlibs="$LIBS" + LIBS="$LIBS -lsun" + AC_CHECKING(IRIX sun library) +-- +1.8.4.5 + diff --git a/buildroot/package/screen/0005-avoid-identifying-as-SVR4.patch b/buildroot/package/screen/0005-avoid-identifying-as-SVR4.patch new file mode 100644 index 0000000..745ef41 --- /dev/null +++ b/buildroot/package/screen/0005-avoid-identifying-as-SVR4.patch @@ -0,0 +1,54 @@ +From: Maarten ter Huurne +Date: Sun, 14 Sep 2014 11:16:58 +0200 +Subject: Avoid mis-identifying systems as SVR4 + +My openSUSE 13.1 Linux system was detected as SVR4 because it had +libelf installed. This leads to linking with libelf, even though no +symbols from that library were actually used, and to a workaround for +a buggy getlogin() being enabled. + +It is not documented which exact SVR4 system had the bug that the +workaround was added for, so all I could do is make an educated guess +at the #defines its compiler would be likely to set. + +Signed-off-by: Maarten ter Huurne +[Ricardo: rebase on top of 4.3.1] +Signed-off-by: Ricardo Martincoski +--- + configure.ac | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 9cf7cee..e09e4cf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -179,14 +179,24 @@ AC_EGREP_CPP(yes, + #endif + ], LIBS="$LIBS -lsocket -linet";seqptx=1) + ++AC_CHECKING(SVR4) ++AC_EGREP_CPP(yes, ++[main () { ++#if defined(SVR4) || defined(__SVR4) ++ yes; ++#endif ++], AC_NOTE(- you have a SVR4 system) AC_DEFINE(SVR4) svr4=1) ++if test -n "$svr4" ; then + oldlibs="$LIBS" + LIBS="$LIBS -lelf" + AC_CHECKING(SVR4) + AC_TRY_LINK([#include + ],, +-[AC_CHECK_HEADER(dwarf.h, AC_DEFINE(SVR4) AC_DEFINE(BUGGYGETLOGIN), +-[AC_CHECK_HEADER(elf.h, AC_DEFINE(SVR4) AC_DEFINE(BUGGYGETLOGIN))])] ++[AC_CHECK_HEADER(dwarf.h, AC_DEFINE(BUGGYGETLOGIN), ++[AC_CHECK_HEADER(elf.h, AC_DEFINE(BUGGYGETLOGIN))])] + ,LIBS="$oldlibs") ++fi ++ + AC_CHECK_HEADERS([stropts.h string.h strings.h]) + + AC_CHECKING(for Solaris 2.x) +-- +1.8.4.5 + diff --git a/buildroot/package/screen/0006-install-no-backup-binary.patch b/buildroot/package/screen/0006-install-no-backup-binary.patch new file mode 100644 index 0000000..7842662 --- /dev/null +++ b/buildroot/package/screen/0006-install-no-backup-binary.patch @@ -0,0 +1,41 @@ +From: Maarten ter Huurne +Date: Sun, 14 Sep 2014 23:58:34 +0200 +Subject: Do not create backup of old installed binary + +This is a rather unusual feature that packagers will not expect. + +Signed-off-by: Maarten ter Huurne +[baruch: update for 4.6.2] +Signed-off-by: Baruch Siach +--- + Makefile.in | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 187a69b..65549e9 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -83,12 +83,9 @@ screen: $(OFILES) + $(OPTIONS) $(CFLAGS) $< + + install_bin: .version screen installdirs +- -if [ -f $(DESTDIR)$(bindir)/$(SCREEN) ] && [ ! -f $(DESTDIR)$(bindir)/$(SCREEN).old ]; \ +- then mv $(DESTDIR)$(bindir)/$(SCREEN) $(DESTDIR)$(bindir)/$(SCREEN).old; fi + $(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN) + -chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN) + # This doesn't work if $(bindir)/screen is a symlink +- -if [ -f $(DESTDIR)$(bindir)/screen ] && [ ! -f $(DESTDIR)$(bindir)/screen.old ]; then mv $(DESTDIR)$(bindir)/screen $(DESTDIR)$(bindir)/screen.old; fi + rm -f $(DESTDIR)$(bindir)/screen + (cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen) + cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS) +@@ -113,7 +110,6 @@ installdirs: + uninstall: .version + rm -f $(DESTDIR)$(bindir)/$(SCREEN) + rm -f $(DESTDIR)$(bindir)/screen +- -mv $(DESTDIR)$(bindir)/screen.old $(DESTDIR)$(bindir)/screen + rm -f $(DESTDIR)$(ETCSCREENRC) + cd doc; $(MAKE) uninstall + +-- +1.8.4.5 + diff --git a/buildroot/package/screen/0007-install-always-chmod.patch b/buildroot/package/screen/0007-install-always-chmod.patch new file mode 100644 index 0000000..0aa7690 --- /dev/null +++ b/buildroot/package/screen/0007-install-always-chmod.patch @@ -0,0 +1,29 @@ +From: Maarten ter Huurne +Date: Mon, 15 Sep 2014 00:03:05 +0200 +Subject: Change binary permission flags even if chown fails + +Typically when creating a package, the build is not run as root, so +the chown will fail. But the chmod can still be done. + +Signed-off-by: Maarten ter Huurne +--- + Makefile.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 65549e9..3c12fdb 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -84,7 +84,8 @@ screen: $(OFILES) + + install_bin: .version screen + $(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN) +- -chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN) ++ -chown root $(DESTDIR)$(bindir)/$(SCREEN) ++ -chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN) + # This doesn't work if $(bindir)/screen is a symlink + rm -f $(DESTDIR)$(bindir)/screen + (cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen) +-- +1.8.4.5 + diff --git a/buildroot/package/screen/0008-install-nonversioned-binary.patch b/buildroot/package/screen/0008-install-nonversioned-binary.patch new file mode 100644 index 0000000..ecbbd65 --- /dev/null +++ b/buildroot/package/screen/0008-install-nonversioned-binary.patch @@ -0,0 +1,31 @@ +From: Maarten ter Huurne +Date: Mon, 15 Sep 2014 00:06:20 +0200 +Subject: Support overriding SCREEN to get a non-versioned binary + +If a packager runs "make install SCREEN=screen", do not create +"screen" as a symlink to itself. + +Signed-off-by: Maarten ter Huurne +--- + Makefile.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Makefile.in b/Makefile.in +index 3c12fdb..860f351 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -86,9 +86,11 @@ install_bin: .version screen + $(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN) + -chown root $(DESTDIR)$(bindir)/$(SCREEN) + -chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN) ++ifneq (${SCREEN},screen) + # This doesn't work if $(bindir)/screen is a symlink + rm -f $(DESTDIR)$(bindir)/screen + (cd $(DESTDIR)$(bindir) && ln -f -s $(SCREEN) screen) ++endif + cp $(srcdir)/utf8encodings/?? $(DESTDIR)$(SCREENENCODINGS) + + ############################################################################### +-- +1.8.4.5 + diff --git a/buildroot/package/screen/0009-rename-sched_h.patch b/buildroot/package/screen/0009-rename-sched_h.patch new file mode 100644 index 0000000..cdbb033 --- /dev/null +++ b/buildroot/package/screen/0009-rename-sched_h.patch @@ -0,0 +1,142 @@ +From: Maarten ter Huurne +Date: Mon, 15 Sep 2014 00:24:41 +0200 +Subject: Renamed sched.h to eventqueue.h + +There is a system header that got shadowed by "sched.h". +While Screen itself doesn't include , other system headers +might include it indirectly. This broke the build when using uClibc +with pthread support. + +Signed-off-by: Maarten ter Huurne +--- + eventqueue.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ + sched.h | 48 ------------------------------------------------ + screen.h | 2 +- + 3 files changed, 49 insertions(+), 49 deletions(-) + create mode 100644 eventqueue.h + delete mode 100644 sched.h + +diff --git a/eventqueue.h b/eventqueue.h +new file mode 100644 +index 0000000..fdc3fc4 +--- /dev/null ++++ b/eventqueue.h +@@ -0,0 +1,48 @@ ++/* Copyright (c) 2008, 2009 ++ * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) ++ * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) ++ * Micah Cowan (micah@cowan.name) ++ * Sadrul Habib Chowdhury (sadrul@users.sourceforge.net) ++ * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007 ++ * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) ++ * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) ++ * Copyright (c) 1987 Oliver Laumann ++ * ++ * 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 3, 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 (see the file COPYING); if not, see ++ * http://www.gnu.org/licenses/, or contact Free Software Foundation, Inc., ++ * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA ++ * ++ **************************************************************** ++ * $Id$ GNU ++ */ ++ ++struct event ++{ ++ struct event *next; ++ void (*handler) __P((struct event *, char *)); ++ char *data; ++ int fd; ++ int type; ++ int pri; ++ struct timeval timeout; ++ int queued; /* in evs queue */ ++ int active; /* in fdset */ ++ int *condpos; /* only active if condpos - condneg > 0 */ ++ int *condneg; ++}; ++ ++#define EV_TIMEOUT 0 ++#define EV_READ 1 ++#define EV_WRITE 2 ++#define EV_ALWAYS 3 +diff --git a/sched.h b/sched.h +deleted file mode 100644 +index fdc3fc4..0000000 +--- a/sched.h ++++ /dev/null +@@ -1,48 +0,0 @@ +-/* Copyright (c) 2008, 2009 +- * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) +- * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) +- * Micah Cowan (micah@cowan.name) +- * Sadrul Habib Chowdhury (sadrul@users.sourceforge.net) +- * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007 +- * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de) +- * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de) +- * Copyright (c) 1987 Oliver Laumann +- * +- * 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 3, 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 (see the file COPYING); if not, see +- * http://www.gnu.org/licenses/, or contact Free Software Foundation, Inc., +- * 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA +- * +- **************************************************************** +- * $Id$ GNU +- */ +- +-struct event +-{ +- struct event *next; +- void (*handler) __P((struct event *, char *)); +- char *data; +- int fd; +- int type; +- int pri; +- struct timeval timeout; +- int queued; /* in evs queue */ +- int active; /* in fdset */ +- int *condpos; /* only active if condpos - condneg > 0 */ +- int *condneg; +-}; +- +-#define EV_TIMEOUT 0 +-#define EV_READ 1 +-#define EV_WRITE 2 +-#define EV_ALWAYS 3 +diff --git a/screen.h b/screen.h +index 603ca3f..34238c8 100644 +--- a/screen.h ++++ b/screen.h +@@ -43,7 +43,7 @@ + #include "osdef.h" + + #include "ansi.h" +-#include "sched.h" ++#include "eventqueue.h" + #include "acls.h" + #include "comm.h" + #include "layer.h" +-- +1.8.4.5 + diff --git a/buildroot/package/screen/Config.in b/buildroot/package/screen/Config.in new file mode 100644 index 0000000..ee4c04c --- /dev/null +++ b/buildroot/package/screen/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_SCREEN + bool "screen" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + Screen is a full-screen window manager that multiplexes a + physical terminal between several processes, typically + interactive shells. Each virtual terminal provides the + functions of the DEC VT100 terminal and, in addition, + several control functions from the ANSI X3.64 (ISO 6429) and + ISO 2022 standards (e.g., insert/delete line and support for + multiple character sets). + + http://www.gnu.org/software/screen/ diff --git a/buildroot/package/screen/screen.hash b/buildroot/package/screen/screen.hash new file mode 100644 index 0000000..0e1613b --- /dev/null +++ b/buildroot/package/screen/screen.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/screen/screen-4.6.2.tar.gz.sig +sha256 1b6922520e6a0ce5e28768d620b0f640a6631397f95ccb043b70b91bb503fa3a screen-4.6.2.tar.gz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/screen/screen.mk b/buildroot/package/screen/screen.mk new file mode 100644 index 0000000..8d67c04 --- /dev/null +++ b/buildroot/package/screen/screen.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# screen +# +################################################################################ + +SCREEN_VERSION = 4.6.2 +SCREEN_SITE = $(BR2_GNU_MIRROR)/screen +SCREEN_LICENSE = GPL-3.0+ +SCREEN_LICENSE_FILES = COPYING +SCREEN_DEPENDENCIES = ncurses +SCREEN_AUTORECONF = YES +SCREEN_CONF_ENV = CFLAGS="$(TARGET_CFLAGS)" +SCREEN_CONF_OPTS = --enable-colors256 +SCREEN_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) SCREEN=screen install_bin + +define SCREEN_INSTALL_SCREENRC + $(INSTALL) -m 0755 -D $(@D)/etc/screenrc $(TARGET_DIR)/etc/screenrc +endef + +SCREEN_POST_INSTALL_TARGET_HOOKS += SCREEN_INSTALL_SCREENRC + +$(eval $(autotools-package)) diff --git a/buildroot/package/scrub/0001-configure-ac-make-sure-m4-macros-are-included-in-the-build.patch b/buildroot/package/scrub/0001-configure-ac-make-sure-m4-macros-are-included-in-the-build.patch new file mode 100644 index 0000000..d8729b4 --- /dev/null +++ b/buildroot/package/scrub/0001-configure-ac-make-sure-m4-macros-are-included-in-the-build.patch @@ -0,0 +1,45 @@ +From 11d30916dd9c11a26c7c8a0f6db9e6ebca301594 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Mon, 18 Jan 2016 21:45:23 +0100 +Subject: [PATCH] configure.ac: make sure m4 macros are included in the build + +This change prevents the following error to occur when calling +autoreconf: + + >>> scrub 2.6.1 Autoreconfiguring + cd /work/build/scrub/build/scrub-2.6.1/ && PATH="/work/build/scrub/host/bin:/work/build/scrub/host/sbin:/work/build/scrub/host/usr/bin:/work/build/scrub/host/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/sbin:/usr/sbin" AR="/usr/bin/ar" AS="/usr/bin/as" LD="/usr/bin/ld" NM="/usr/bin/nm" CC="/usr/bin/gcc" GCC="/usr/bin/gcc" CXX="/usr/bin/g++" CPP="/usr/bin/cpp" OBJCOPY="/usr/bin/objcopy" RANLIB="/usr/bin/ranlib" CPPFLAGS="-I/work/build/scrub/host/usr/include" CFLAGS="-O2 -I/work/build/scrub/host/usr/include" CXXFLAGS="-O2 -I/work/build/scrub/host/usr/include" LDFLAGS="-L/work/build/scrub/host/lib -L/work/build/scrub/host/usr/lib -Wl,-rpath,/work/build/scrub/host/usr/lib" PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 PKG_CONFIG="/work/build/scrub/host/usr/bin/pkg-config" PKG_CONFIG_SYSROOT_DIR="/" PKG_CONFIG_LIBDIR="/work/build/scrub/host/usr/lib/pkgconfig:/work/build/scrub/host/usr/share/pkgconfig" INTLTOOL_PERL=/usr/bin/perl ACLOCAL="/work/build/scrub/host/usr/bin/aclocal -I /work/build/scrub/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/share/aclocal" AUTOCONF="/work/build/scrub/host/usr/bin/autoconf" AUTOHEADER="/work/build/scrub/host/usr/bin/autoheader" AUTOMAKE="/work/build/scrub/host/usr/bin/automake" AUTOPOINT=/bin/true /work/build/scrub/host/usr/bin/autoreconf -f -i -I "/work/build/scrub/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/share/aclocal" -I "/work/build/scrub/host/usr/share/aclocal" + libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config'. + libtoolize: copying file 'config/ltmain.sh' + libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac, + libtoolize: and rerunning libtoolize and aclocal. + libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am. + configure.ac:10: error possibly undefined macro: X_AC_META + If this token and others are legitimate, please use m4_pattern_allow. + See the Autoconf documentation. + configure.ac:11: error possibly undefined macro: X_AC_EXPAND_INSTALL_DIRS + configure.ac:51: error possibly undefined macro: AC_PKGCONFIG + configure.ac:70: error possibly undefined macro: X_AC_CHECK_PTHREADS + autoreconf: /work/build/scrub/host/usr/bin/autoconf failed with exit status: 1 + package/pkg-generic.mk:185: recipe for target '/work/build/scrub/build/scrub-2.6.1/.stamp_configured' failed + make: *** [/work/build/scrub/build/scrub-2.6.1/.stamp_configured] Error 1 + make: Leaving directory '/work/repos/buildroot' + +Signed-off-by: Samuel Martin +[Upstream commit: https://github.com/chaos/scrub/commit/11d30916dd9c11a26c7c8a0f6db9e6ebca301594] +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.ac b/configure.ac +index 3d71289..07eaf33 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -7,6 +7,7 @@ AC_INIT(m4_esyscmd([awk '/Name:/ {printf "%s",$2; exit}' META]), + AC_CONFIG_AUX_DIR([config]) + AC_CONFIG_SRCDIR([NEWS]) + AC_CANONICAL_SYSTEM ++AC_CONFIG_MACRO_DIR([config]) + X_AC_META + X_AC_EXPAND_INSTALL_DIRS + diff --git a/buildroot/package/scrub/Config.in b/buildroot/package/scrub/Config.in new file mode 100644 index 0000000..84bcc29 --- /dev/null +++ b/buildroot/package/scrub/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SCRUB + bool "scrub" + help + Scrub iteratively writes patterns on files or disk devices + to make retrieving the data more difficult. + + https://github.com/chaos/scrub/ diff --git a/buildroot/package/scrub/scrub.hash b/buildroot/package/scrub/scrub.hash new file mode 100644 index 0000000..4cb8189 --- /dev/null +++ b/buildroot/package/scrub/scrub.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 838b061b2e1932b342fb9695c5579cdff5d2d72506cb41d6d8032eba18aed969 scrub-2.6.1.tar.gz +# License files, locally calculated +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING +sha256 f76abbfb80cde1036cb553cdecb08bb846a48e33c91ef56c0f494172fd407f33 DISCLAIMER diff --git a/buildroot/package/scrub/scrub.mk b/buildroot/package/scrub/scrub.mk new file mode 100644 index 0000000..ace19d5 --- /dev/null +++ b/buildroot/package/scrub/scrub.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# scrub +# +################################################################################ + +SCRUB_VERSION = 2.6.1 +SCRUB_SITE = $(call github,chaos,scrub,$(SCRUB_VERSION)) +SCRUB_LICENSE = GPL-2.0+ +SCRUB_LICENSE_FILES = COPYING DISCLAIMER + +# Fetching from the git repo, no configure/Makefile generated, and patching +# configure.ac +SCRUB_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/scrypt/Config.in b/buildroot/package/scrypt/Config.in new file mode 100644 index 0000000..e6d1ac1 --- /dev/null +++ b/buildroot/package/scrypt/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SCRYPT + bool "scrypt" + select BR2_PACKAGE_OPENSSL + help + A password-based key derivation function specifically + designed to make it costly to perform large-scale custom + hardware attacks by requiring large amounts of memory. + + http://www.tarsnap.com/scrypt.html diff --git a/buildroot/package/scrypt/scrypt.hash b/buildroot/package/scrypt/scrypt.hash new file mode 100644 index 0000000..6694456 --- /dev/null +++ b/buildroot/package/scrypt/scrypt.hash @@ -0,0 +1,2 @@ +# From http://www.tarsnap.com/scrypt/scrypt-sigs-1.2.0.asc +sha256 1754bc89405277c8ac14220377a4c240ddc34b1ce70882aa92cd01bfdc8569d4 scrypt-1.2.0.tgz diff --git a/buildroot/package/scrypt/scrypt.mk b/buildroot/package/scrypt/scrypt.mk new file mode 100644 index 0000000..ae5a64e --- /dev/null +++ b/buildroot/package/scrypt/scrypt.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# scrypt +# +################################################################################ + +SCRYPT_VERSION = 1.2.0 +SCRYPT_SOURCE = scrypt-$(SCRYPT_VERSION).tgz +SCRYPT_SITE = http://www.tarsnap.com/scrypt +SCRYPT_LICENSE = BSD-2-Clause +SCRYPT_LICENSE_FILES = main.c +SCRYPT_DEPENDENCIES = openssl +SCRYPT_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl/0001-use-correct-directfb-config.patch b/buildroot/package/sdl/0001-use-correct-directfb-config.patch new file mode 100644 index 0000000..ef671a1 --- /dev/null +++ b/buildroot/package/sdl/0001-use-correct-directfb-config.patch @@ -0,0 +1,25 @@ +[PATCH] configure.in: use correct directfb-config in version check + +The configure script has just checked for the correct directfb-config +script, so also use it for the version check instead of whatever +might be in the path. + +Signed-off-by: Peter Korsgaard +--- + configure.in | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +Index: SDL-1.2.15/configure.in +=================================================================== +--- SDL-1.2.15.orig/configure.in ++++ SDL-1.2.15/configure.in +@@ -1276,7 +1276,7 @@ + else + set -- `echo $DIRECTFB_REQUIRED_VERSION | sed 's/\./ /g'` + NEED_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3` +- set -- `directfb-config --version | sed 's/\./ /g'` ++ set -- `$DIRECTFBCONFIG --version | sed 's/\./ /g'` + HAVE_VERSION=`expr $1 \* 10000 + $2 \* 100 + $3` + if test $HAVE_VERSION -ge $NEED_VERSION; then + DIRECTFB_CFLAGS=`$DIRECTFBCONFIG --cflags` + diff --git a/buildroot/package/sdl/0002-fix-compilation-with-libx11.patch b/buildroot/package/sdl/0002-fix-compilation-with-libx11.patch new file mode 100644 index 0000000..27f2448 --- /dev/null +++ b/buildroot/package/sdl/0002-fix-compilation-with-libx11.patch @@ -0,0 +1,60 @@ +sdl: Fix compilation with libX11 >= 1.5.99.902 +Signed-off-by: Vicente Olivert Riera + +# HG changeset patch +# User Azamat H. Hackimov +# Date 1370184533 -21600 +# Node ID 91ad7b43317a6387e115ecdf63a49137f47e42c8 +# Parent f7fd5c3951b9ed922fdf696f7182e71b58a13268 +Fix compilation with libX11 >= 1.5.99.902. + +These changes fixes bug #1769 for SDL 1.2 +(http://bugzilla.libsdl.org/show_bug.cgi?id=1769). + +diff -r f7fd5c3951b9 -r 91ad7b43317a configure.in +--- a/configure.in Wed Apr 17 00:56:53 2013 -0700 ++++ b/configure.in Sun Jun 02 20:48:53 2013 +0600 +@@ -1169,6 +1169,17 @@ + if test x$definitely_enable_video_x11_xrandr = xyes; then + AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRANDR) + fi ++ AC_MSG_CHECKING(for const parameter to _XData32) ++ have_const_param_xdata32=no ++ AC_TRY_COMPILE([ ++ #include ++ extern int _XData32(Display *dpy,register _Xconst long *data,unsigned len); ++ ],[ ++ ],[ ++ have_const_param_xdata32=yes ++ AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32) ++ ]) ++ AC_MSG_RESULT($have_const_param_xdata32) + fi + fi + } +diff -r f7fd5c3951b9 -r 91ad7b43317a include/SDL_config.h.in +--- a/include/SDL_config.h.in Wed Apr 17 00:56:53 2013 -0700 ++++ b/include/SDL_config.h.in Sun Jun 02 20:48:53 2013 +0600 +@@ -283,6 +283,7 @@ + #undef SDL_VIDEO_DRIVER_WINDIB + #undef SDL_VIDEO_DRIVER_WSCONS + #undef SDL_VIDEO_DRIVER_X11 ++#undef SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32 + #undef SDL_VIDEO_DRIVER_X11_DGAMOUSE + #undef SDL_VIDEO_DRIVER_X11_DYNAMIC + #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT +diff -r f7fd5c3951b9 -r 91ad7b43317a src/video/x11/SDL_x11sym.h +--- a/src/video/x11/SDL_x11sym.h Wed Apr 17 00:56:53 2013 -0700 ++++ b/src/video/x11/SDL_x11sym.h Sun Jun 02 20:48:53 2013 +0600 +@@ -165,7 +165,11 @@ + */ + #ifdef LONG64 + SDL_X11_MODULE(IO_32BIT) ++#if SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32 ++SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return) ++#else + SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return) ++#endif + SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),) + #endif + diff --git a/buildroot/package/sdl/Config.in b/buildroot/package/sdl/Config.in new file mode 100644 index 0000000..65ac8a2 --- /dev/null +++ b/buildroot/package/sdl/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_SDL + bool "SDL" + help + Simple DirectMedia Layer - SDL is a library that allows + programs portable low level access to a video framebuffer, + audio output, mouse, and keyboard. + + http://www.libsdl.org/ + +if BR2_PACKAGE_SDL + +config BR2_PACKAGE_SDL_FBCON + bool "SDL framebuffer console video driver" + default y + +config BR2_PACKAGE_SDL_DIRECTFB + bool "SDL DirectFB video driver" + depends on BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_SDL_QTOPIA + bool "SDL Qtopia video driver" + depends on BR2_PACKAGE_QT + +config BR2_PACKAGE_SDL_X11 + bool "SDL X11 video driver" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + +endif diff --git a/buildroot/package/sdl/sdl.hash b/buildroot/package/sdl/sdl.hash new file mode 100644 index 0000000..ad59b90 --- /dev/null +++ b/buildroot/package/sdl/sdl.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 d6d316a793e5e348155f0dd93b979798933fb98aa1edebcc108829d6474aad00 SDL-1.2.15.tar.gz diff --git a/buildroot/package/sdl/sdl.mk b/buildroot/package/sdl/sdl.mk new file mode 100644 index 0000000..0a6a7de --- /dev/null +++ b/buildroot/package/sdl/sdl.mk @@ -0,0 +1,101 @@ +################################################################################ +# +# sdl +# +################################################################################ + +SDL_VERSION = 1.2.15 +SDL_SOURCE = SDL-$(SDL_VERSION).tar.gz +SDL_SITE = http://www.libsdl.org/release +SDL_LICENSE = LGPL-2.1+ +SDL_LICENSE_FILES = COPYING +SDL_INSTALL_STAGING = YES + +# we're patching configure.in, but package cannot autoreconf with our version of +# autotools, so we have to do it manually instead of setting SDL_AUTORECONF = YES +define SDL_RUN_AUTOGEN + cd $(@D) && PATH=$(BR_PATH) ./autogen.sh +endef + +SDL_PRE_CONFIGURE_HOOKS += SDL_RUN_AUTOGEN +HOST_SDL_PRE_CONFIGURE_HOOKS += SDL_RUN_AUTOGEN + +SDL_DEPENDENCIES += host-automake host-autoconf host-libtool +HOST_SDL_DEPENDENCIES += host-automake host-autoconf host-libtool + +ifeq ($(BR2_PACKAGE_SDL_FBCON),y) +SDL_CONF_OPTS += --enable-video-fbcon=yes +else +SDL_CONF_OPTS += --enable-video-fbcon=no +endif + +ifeq ($(BR2_PACKAGE_SDL_DIRECTFB),y) +SDL_DEPENDENCIES += directfb +SDL_CONF_OPTS += --enable-video-directfb=yes +SDL_CONF_ENV = ac_cv_path_DIRECTFBCONFIG=$(STAGING_DIR)/usr/bin/directfb-config +else +SDL_CONF_OPTS += --enable-video-directfb=no +endif + +ifeq ($(BR2_PACKAGE_SDL_QTOPIA),y) +SDL_CONF_OPTS += --enable-video-qtopia=yes +SDL_DEPENDENCIES += qt +else +SDL_CONF_OPTS += --enable-video-qtopia=no +endif + +ifeq ($(BR2_PACKAGE_SDL_X11),y) +SDL_CONF_OPTS += --enable-video-x11=yes +SDL_DEPENDENCIES += \ + xlib_libX11 xlib_libXext \ + $(if $(BR2_PACKAGE_XLIB_LIBXRENDER), xlib_libXrender) \ + $(if $(BR2_PACKAGE_XLIB_LIBXRANDR), xlib_libXrandr) +else +SDL_CONF_OPTS += --enable-video-x11=no +endif + +ifneq ($(BR2_USE_MMU),y) +SDL_CONF_OPTS += --enable-dga=no +endif + +# overwrite autodection (prevents confusion with host libpth version) +ifeq ($(BR2_PACKAGE_LIBPTHSEM_COMPAT),y) +SDL_CONF_OPTS += --enable-pth +SDL_CONF_ENV += ac_cv_path_PTH_CONFIG=$(STAGING_DIR)/usr/bin/pth-config +SDL_DEPENDENCIES += libpthsem +else +SDL_CONF_OPTS += --disable-pth +endif + +ifeq ($(BR2_PACKAGE_TSLIB),y) +SDL_DEPENDENCIES += tslib +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +SDL_DEPENDENCIES += alsa-lib +endif + +ifeq ($(BR2_PACKAGE_MESA3D),y) +SDL_DEPENDENCIES += mesa3d +endif + +SDL_CONF_OPTS += \ + --disable-rpath \ + --enable-pulseaudio=no \ + --disable-arts \ + --disable-esd \ + --disable-nasm \ + --disable-video-ps3 + +HOST_SDL_CONF_OPTS += \ + --enable-pulseaudio=no \ + --enable-video-x11=no \ + --disable-arts \ + --disable-esd \ + --disable-nasm \ + --disable-video-ps3 + +SDL_CONFIG_SCRIPTS = sdl-config + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/sdl2/Config.in b/buildroot/package/sdl2/Config.in new file mode 100644 index 0000000..f29b3c7 --- /dev/null +++ b/buildroot/package/sdl2/Config.in @@ -0,0 +1,60 @@ +config BR2_PACKAGE_SDL2 + bool "sdl2" + depends on !BR2_STATIC_LIBS + help + Simple DirectMedia Layer 2 - SDL2 is a library that allows + programs portable low level access to a video framebuffer, + audio output, mouse, and keyboard. It is not compatible with + SDL1. + + http://www.libsdl.org/ + +if BR2_PACKAGE_SDL2 + +config BR2_PACKAGE_SDL2_DIRECTFB + bool "DirectFB video driver" + depends on BR2_PACKAGE_DIRECTFB + +comment "DirectFB video driver needs directfb" + depends on !BR2_PACKAGE_DIRECTFB + +config BR2_PACKAGE_SDL2_X11 + bool "X11 video driver" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + +comment "X11 video driver needs X.org" + depends on !BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + +config BR2_PACKAGE_SDL2_KMSDRM + bool "KMS/DRM video driver" + depends on BR2_PACKAGE_LIBDRM + +comment "KMS/DRM video driver needs libdrm" + depends on !BR2_PACKAGE_LIBDRM + +config BR2_PACKAGE_SDL2_OPENGL + bool "OpenGL (GLX)" + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # X11 video driver + select BR2_PACKAGE_SDL2_X11 + +comment "OpenGL support needs X11 and an OpenGL provider" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_LIBGL || !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_SDL2_OPENGLES + bool "OpenGL ES" + depends on BR2_PACKAGE_HAS_LIBGLES + +comment "OpenGL ES support needs an OpenGL ES provider" + depends on !BR2_PACKAGE_HAS_LIBGLES + +endif + +comment "sdl2 needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/sdl2/sdl2.hash b/buildroot/package/sdl2/sdl2.hash new file mode 100644 index 0000000..997b4a5 --- /dev/null +++ b/buildroot/package/sdl2/sdl2.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.0.8.tar.gz.sig +sha256 edc77c57308661d576e843344d8638e025a7818bff73f8fbfab09c3c5fd092ec SDL2-2.0.8.tar.gz +# Locally calculated +sha256 61e627031e1160bf8b9bdbc9cda27656d422ea8eaab199b64b4a4a4168437154 COPYING.txt diff --git a/buildroot/package/sdl2/sdl2.mk b/buildroot/package/sdl2/sdl2.mk new file mode 100644 index 0000000..bd71485 --- /dev/null +++ b/buildroot/package/sdl2/sdl2.mk @@ -0,0 +1,142 @@ +################################################################################ +# +# sdl2 +# +################################################################################ + +SDL2_VERSION = 2.0.8 +SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz +SDL2_SITE = http://www.libsdl.org/release +SDL2_LICENSE = Zlib +SDL2_LICENSE_FILES = COPYING.txt +SDL2_INSTALL_STAGING = YES +SDL2_CONFIG_SCRIPTS = sdl2-config + +SDL2_CONF_OPTS += \ + --disable-rpath \ + --disable-arts \ + --disable-esd \ + --disable-dbus \ + --disable-pulseaudio \ + --disable-video-wayland + +# We must enable static build to get compilation successful. +SDL2_CONF_OPTS += --enable-static + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +SDL2_DEPENDENCIES += udev +SDL2_CONF_OPTS += --enable-libudev +else +SDL2_CONF_OPTS += --disable-libudev +endif + +ifeq ($(BR2_PACKAGE_SDL2_DIRECTFB),y) +SDL2_DEPENDENCIES += directfb +SDL2_CONF_OPTS += --enable-video-directfb +SDL2_CONF_ENV = ac_cv_path_DIRECTFBCONFIG=$(STAGING_DIR)/usr/bin/directfb-config +else +SDL2_CONF_OPTS += --disable-video-directfb +endif + +ifeq ($(BR2_PACKAGE_SDL2_OPENGLES)$(BR2_PACKAGE_RPI_USERLAND),yy) +SDL2_DEPENDENCIES += rpi-userland +SDL2_CONF_OPTS += --enable-video-rpi +else +SDL2_CONF_OPTS += --disable-video-rpi +endif + +# x-includes and x-libraries must be set for cross-compiling +# By default x_includes and x_libraries contains unsafe paths. +# (/usr/X11R6/include and /usr/X11R6/lib) +ifeq ($(BR2_PACKAGE_SDL2_X11),y) +SDL2_DEPENDENCIES += xlib_libX11 xlib_libXext + +# X11/extensions/shape.h is provided by libXext. +SDL2_CONF_OPTS += --enable-video-x11 \ + --with-x=$(STAGING_DIR) \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib \ + --enable-video-x11-xshape + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +SDL2_DEPENDENCIES += xlib_libXcursor +SDL2_CONF_OPTS += --enable-video-x11-xcursor +else +SDL2_CONF_OPTS += --disable-video-x11-xcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +SDL2_DEPENDENCIES += xlib_libXinerama +SDL2_CONF_OPTS += --enable-video-x11-xinerama +else +SDL2_CONF_OPTS += --disable-video-x11-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +SDL2_DEPENDENCIES += xlib_libXi +SDL2_CONF_OPTS += --enable-video-x11-xinput +else +SDL2_CONF_OPTS += --disable-video-x11-xinput +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +SDL2_DEPENDENCIES += xlib_libXrandr +SDL2_CONF_OPTS += --enable-video-x11-xrandr +else +SDL2_CONF_OPTS += --disable-video-x11-xrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXSCRNSAVER),y) +SDL2_DEPENDENCIES += xlib_libXScrnSaver +SDL2_CONF_OPTS += --enable-video-x11-scrnsaver +else +SDL2_CONF_OPTS += --disable-video-x11-scrnsaver +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y) +SDL2_DEPENDENCIES += xlib_libXxf86vm +SDL2_CONF_OPTS += --enable-video-x11-vm +else +SDL2_CONF_OPTS += --disable-video-x11-vm +endif + +else +SDL2_CONF_OPTS += --disable-video-x11 --without-x +endif + +ifeq ($(BR2_PACKAGE_SDL2_OPENGL),y) +SDL2_CONF_OPTS += --enable-video-opengl +SDL2_DEPENDENCIES += libgl +else +SDL2_CONF_OPTS += --disable-video-opengl +endif + +ifeq ($(BR2_PACKAGE_SDL2_OPENGLES),y) +SDL2_CONF_OPTS += --enable-video-opengles +SDL2_DEPENDENCIES += libgles +else +SDL2_CONF_OPTS += --disable-video-opengles +endif + +ifeq ($(BR2_PACKAGE_TSLIB),y) +SDL2_DEPENDENCIES += tslib +SDL2_CONF_OPTS += --enable-input-tslib +else +SDL2_CONF_OPTS += --disable-input-tslib +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +SDL2_DEPENDENCIES += alsa-lib +SDL2_CONF_OPTS += --enable-alsa +else +SDL2_CONF_OPTS += --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_SDL2_KMSDRM),y) +SDL2_DEPENDENCIES += libdrm +SDL2_CONF_OPTS += --enable-video-kmsdrm +else +SDL2_CONF_OPTS += --disable-video-kmsdrm +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl2_gfx/Config.in b/buildroot/package/sdl2_gfx/Config.in new file mode 100644 index 0000000..f5dafc5 --- /dev/null +++ b/buildroot/package/sdl2_gfx/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_SDL2_GFX + bool "sdl2_gfx" + depends on BR2_PACKAGE_SDL2 + help + The SDL2_gfx library is an extension to the SDL2 library + which provides basic antialiased drawing routines such as + lines, circles or polygons, an interpolating rotozoomer for + SDL surfaces, framerate control and MMX image filters. + + http://www.ferzkopp.net/wordpress/2016/01/02/sdl_gfx-sdl2_gfx diff --git a/buildroot/package/sdl2_gfx/sdl2_gfx.hash b/buildroot/package/sdl2_gfx/sdl2_gfx.hash new file mode 100644 index 0000000..4cb07ee --- /dev/null +++ b/buildroot/package/sdl2_gfx/sdl2_gfx.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 d69bcbceb811b4e5712fbad3ede737166327f44b727f1388c32581dbbe8c599a SDL2_gfx-1.0.1.tar.gz diff --git a/buildroot/package/sdl2_gfx/sdl2_gfx.mk b/buildroot/package/sdl2_gfx/sdl2_gfx.mk new file mode 100644 index 0000000..1ec1387 --- /dev/null +++ b/buildroot/package/sdl2_gfx/sdl2_gfx.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# sdl2_gfx +# +################################################################################ + +SDL2_GFX_VERSION = 1.0.1 +SDL2_GFX_SOURCE = SDL2_gfx-$(SDL2_GFX_VERSION).tar.gz +SDL2_GFX_SITE = http://www.ferzkopp.net/Software/SDL2_gfx +SDL2_GFX_LICENSE = Zlib +SDL2_GFX_LICENSE_FILES = COPYING SDL2_framerate.h +SDL2_GFX_INSTALL_STAGING = YES +SDL2_GFX_DEPENDENCIES = sdl2 host-pkgconf +SDL2_GFX_CONF_OPTS = --disable-sdltest +# configure/Makefile.in not up-to-date, causing aclocal to be used at +# build time if we don't autoreconf. +SDL2_GFX_AUTORECONF = YES + +# Even though x86_64 processors support MMX, the MMX-specific assembly +# code in sdl2_gfx is IA32 specific, and does not build for x86_64. +ifeq ($(BR2_i386)$(BR2_X86_CPU_HAS_MMX),yy) +SDL2_GFX_CONF_OPTS += --enable-mmx +else +SDL2_GFX_CONF_OPTS += --disable-mmx +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl2_image/Config.in b/buildroot/package/sdl2_image/Config.in new file mode 100644 index 0000000..9b4a383 --- /dev/null +++ b/buildroot/package/sdl2_image/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SDL2_IMAGE + bool "sdl2_image" + depends on BR2_PACKAGE_SDL2 + help + SDL2_image is an image file loading library. It loads images + as SDL surfaces, and supports the following formats: BMP, + GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, XCF, XPM, XV. + + http://www.libsdl.org/projects/SDL_image/ diff --git a/buildroot/package/sdl2_image/sdl2_image.hash b/buildroot/package/sdl2_image/sdl2_image.hash new file mode 100644 index 0000000..cf32535 --- /dev/null +++ b/buildroot/package/sdl2_image/sdl2_image.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3510c25da735ffcd8ce3b65073150ff4f7f9493b866e85b83738083b556d2368 SDL2_image-2.0.3.tar.gz +sha256 13240ed78c8726c510b9634976430d3d3a9ea2d1ced3214119766e9e71568a35 COPYING.txt diff --git a/buildroot/package/sdl2_image/sdl2_image.mk b/buildroot/package/sdl2_image/sdl2_image.mk new file mode 100644 index 0000000..8c1c5f6 --- /dev/null +++ b/buildroot/package/sdl2_image/sdl2_image.mk @@ -0,0 +1,58 @@ +################################################################################ +# +# sdl2_image +# +################################################################################ + +SDL2_IMAGE_VERSION = 2.0.3 +SDL2_IMAGE_SOURCE = SDL2_image-$(SDL2_IMAGE_VERSION).tar.gz +SDL2_IMAGE_SITE = http://www.libsdl.org/projects/SDL_image/release +SDL2_IMAGE_INSTALL_STAGING = YES +SDL2_IMAGE_LICENSE = Zlib +SDL2_IMAGE_LICENSE_FILES = COPYING.txt + +# Unconditionally enable support for image formats that don't require +# any dependency. +SDL2_IMAGE_CONF_OPTS = \ + --disable-sdltest \ + --enable-bmp \ + --enable-gif \ + --enable-lbm \ + --enable-pcx \ + --enable-pnm \ + --enable-tga \ + --enable-xcf \ + --enable-xpm \ + --enable-xv + +SDL2_IMAGE_DEPENDENCIES = sdl2 host-pkgconf + +ifeq ($(BR2_PACKAGE_JPEG),y) +SDL2_IMAGE_CONF_OPTS += --enable-jpg +SDL2_IMAGE_DEPENDENCIES += jpeg +else +SDL2_IMAGE_CONF_OPTS += --disable-jpg +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +SDL2_IMAGE_CONF_OPTS += --enable-png +SDL2_IMAGE_DEPENDENCIES += libpng +else +SDL2_IMAGE_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +SDL2_IMAGE_CONF_OPTS += --enable-tif +SDL2_IMAGE_DEPENDENCIES += tiff +else +SDL2_IMAGE_CONF_OPTS += --disable-tif +endif + +ifeq ($(BR2_PACKAGE_WEBP),y) +SDL2_IMAGE_CONF_OPTS += --enable-webp +SDL2_IMAGE_DEPENDENCIES += webp +else +SDL2_IMAGE_CONF_OPTS += --disable-webp +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl2_mixer/Config.in b/buildroot/package/sdl2_mixer/Config.in new file mode 100644 index 0000000..8e1cf58 --- /dev/null +++ b/buildroot/package/sdl2_mixer/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_SDL2_MIXER + bool "sdl2_mixer" + depends on BR2_PACKAGE_SDL2 + help + SDL_mixer is a sample multi-channel audio mixer library. It + supports any number of simultaneously playing channels of 16 + bit stereo audio, plus a single channel of music, mixed by + the popular FLAC, MikMod MOD, Timidity MIDI, Ogg Vorbis, and + SMPEG MP3 libraries. + + http://www.libsdl.org/projects/SDL_mixer/ diff --git a/buildroot/package/sdl2_mixer/sdl2_mixer.hash b/buildroot/package/sdl2_mixer/sdl2_mixer.hash new file mode 100644 index 0000000..48bc887 --- /dev/null +++ b/buildroot/package/sdl2_mixer/sdl2_mixer.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5a24f62a610249d744cbd8d28ee399d8905db7222bf3bdbc8a8b4a76e597695f SDL2_mixer-2.0.1.tar.gz diff --git a/buildroot/package/sdl2_mixer/sdl2_mixer.mk b/buildroot/package/sdl2_mixer/sdl2_mixer.mk new file mode 100644 index 0000000..c990847 --- /dev/null +++ b/buildroot/package/sdl2_mixer/sdl2_mixer.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# sdl2_mixer +# +################################################################################ + +SDL2_MIXER_VERSION = 2.0.1 +SDL2_MIXER_SOURCE = SDL2_mixer-$(SDL2_MIXER_VERSION).tar.gz +SDL2_MIXER_SITE = http://www.libsdl.org/projects/SDL_mixer/release +SDL2_MIXER_LICENSE = Zlib +SDL2_MIXER_LICENSE_FILES = COPYING.txt +SDL2_MIXER_INSTALL_STAGING = YES +SDL2_MIXER_DEPENDENCIES = sdl2 host-pkgconf + +SDL2_MIXER_CONF_OPTS = \ + --disable-fluidsynth \ + --disable-music-mp3 + +ifeq ($(BR2_PACKAGE_FLAC),y) +SDL2_MIXER_CONF_OPTS += --enable-music-flac +SDL2_MIXER_DEPENDENCIES += flac +else +SDL2_MIXER_CONF_OPTS += --disable-music-flac +endif + +ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) +SDL2_MIXER_CONF_OPTS += --enable-music-mod-modplug +SDL2_MIXER_DEPENDENCIES += libmodplug +else +SDL2_MIXER_CONF_OPTS += --disable-music-mod-modplug +endif + +ifeq ($(BR2_PACKAGE_TREMOR),y) +SDL2_MIXER_CONF_OPTS += --enable-music-ogg-tremor +SDL2_MIXER_DEPENDENCIES += tremor +else +SDL2_MIXER_CONF_OPTS += --disable-music-ogg-tremor +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl2_net/Config.in b/buildroot/package/sdl2_net/Config.in new file mode 100644 index 0000000..d5e749f --- /dev/null +++ b/buildroot/package/sdl2_net/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SDL2_NET + bool "sdl2_net" + depends on BR2_PACKAGE_SDL2 + help + This is a small sample cross-platform networking library, + with a sample chat client and server application. The chat + client uses the GUIlib GUI framework library. + + http://www.libsdl.org/projects/SDL_net/ diff --git a/buildroot/package/sdl2_net/sdl2_net.hash b/buildroot/package/sdl2_net/sdl2_net.hash new file mode 100644 index 0000000..c5f4433 --- /dev/null +++ b/buildroot/package/sdl2_net/sdl2_net.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 15ce8a7e5a23dafe8177c8df6e6c79b6749a03fff1e8196742d3571657609d21 SDL2_net-2.0.1.tar.gz diff --git a/buildroot/package/sdl2_net/sdl2_net.mk b/buildroot/package/sdl2_net/sdl2_net.mk new file mode 100644 index 0000000..2fa4a8c --- /dev/null +++ b/buildroot/package/sdl2_net/sdl2_net.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# sdl2_net +# +################################################################################ + +SDL2_NET_VERSION = 2.0.1 +SDL2_NET_SOURCE = SDL2_net-$(SDL2_NET_VERSION).tar.gz +SDL2_NET_SITE = http://www.libsdl.org/projects/SDL_net/release +SDL2_NET_LICENSE = Zlib +SDL2_NET_LICENSE_FILES = COPYING.txt +SDL2_NET_INSTALL_STAGING = YES +SDL2_NET_DEPENDENCIES = sdl2 + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl2_ttf/0001-fix-opengl-detection.patch b/buildroot/package/sdl2_ttf/0001-fix-opengl-detection.patch new file mode 100644 index 0000000..06e0abf --- /dev/null +++ b/buildroot/package/sdl2_ttf/0001-fix-opengl-detection.patch @@ -0,0 +1,37 @@ +# HG changeset patch +# User Sam Lantinga +# Date 1485568474 28800 +# Node ID 3b93536d291a34183592fd29ef1df9cf1416ac09 +# Parent 184c34c673d479477d34194e3c0b1abe7ca5d828 +Make sure we can link with OpenGL libraries in the OpenGL configure test + +[yann.morin.1998@free.fr: + - backported from upstream + - drop the configure hunk for autoreconf +] +Signed-off-by: "Yann E. MORIN" + +diff -r 184c34c673d4 -r 3b93536d291a configure.in +--- a/configure.in Sun Jan 01 18:46:38 2017 -0800 ++++ b/configure.in Fri Jan 27 17:54:34 2017 -0800 +@@ -164,14 +164,17 @@ + esac + AC_MSG_CHECKING(for OpenGL support) + have_opengl=no +-AC_TRY_COMPILE([ ++save_LIBS="$LIBS" ++LIBS="$LIBS $SYS_GL_LIBS" ++AC_TRY_LINK([ + #include "SDL_opengl.h" + ],[ +- GLuint texture; ++ glOrtho( -2.0, 2.0, -2.0, 2.0, -20.0, 20.0 ); + ],[ + have_opengl=yes + ]) + AC_MSG_RESULT($have_opengl) ++LIBS="$save_LIBS" + if test x$have_opengl = xyes; then + CFLAGS="$CFLAGS -DHAVE_OPENGL" + GL_LIBS="$SYS_GL_LIBS" + diff --git a/buildroot/package/sdl2_ttf/0002-fix-autoreconf.patch b/buildroot/package/sdl2_ttf/0002-fix-autoreconf.patch new file mode 100644 index 0000000..88543a9 --- /dev/null +++ b/buildroot/package/sdl2_ttf/0002-fix-autoreconf.patch @@ -0,0 +1,30 @@ +# HG changeset patch +# User "Yann E. MORIN" +# Date 1485597428 -3600 +# Node ID 26376ce4a3e6565885fd984b3fe5a39a6895dcdd +# Parent 3b93536d291a34183592fd29ef1df9cf1416ac09 +configure: fix autoreconf + +Signed-off-by: "Yann E. MORIN" + +diff --git a/configure.in b/configure.in +--- a/configure.in ++++ b/configure.in +@@ -1,5 +1,6 @@ + dnl Process this file with autoconf to produce a configure script. +-AC_INIT(README.txt) ++dnl The version string must be a literal ++AC_INIT([SDL2_ttf],[2.0.14]) + + dnl Set various version strings - taken gratefully from the GTk sources + +@@ -42,7 +42,7 @@ + AC_CANONICAL_HOST + + dnl Setup for automake +-AM_INIT_AUTOMAKE(SDL2_ttf, $VERSION) ++AM_INIT_AUTOMAKE([foreign]) + + dnl Check for tools + AC_PROG_LIBTOOL + diff --git a/buildroot/package/sdl2_ttf/Config.in b/buildroot/package/sdl2_ttf/Config.in new file mode 100644 index 0000000..fc870a7 --- /dev/null +++ b/buildroot/package/sdl2_ttf/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SDL2_TTF + bool "sdl2_ttf" + depends on BR2_PACKAGE_SDL2 + select BR2_PACKAGE_FREETYPE + help + SDL2_ttf is a sample TrueType font library. It allows you to + use TrueType fonts in your SDL2 applications. + + http://www.libsdl.org/projects/SDL_ttf/ diff --git a/buildroot/package/sdl2_ttf/sdl2_ttf.hash b/buildroot/package/sdl2_ttf/sdl2_ttf.hash new file mode 100644 index 0000000..515189a --- /dev/null +++ b/buildroot/package/sdl2_ttf/sdl2_ttf.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 34db5e20bcf64e7071fe9ae25acaa7d72bdc4f11ab3ce59acc768ab62fe39276 SDL2_ttf-2.0.14.tar.gz diff --git a/buildroot/package/sdl2_ttf/sdl2_ttf.mk b/buildroot/package/sdl2_ttf/sdl2_ttf.mk new file mode 100644 index 0000000..dbe30dd --- /dev/null +++ b/buildroot/package/sdl2_ttf/sdl2_ttf.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# sdl2_ttf +# +################################################################################ + +SDL2_TTF_VERSION = 2.0.14 +SDL2_TTF_SOURCE = SDL2_ttf-$(SDL2_TTF_VERSION).tar.gz +SDL2_TTF_SITE = http://www.libsdl.org/projects/SDL_ttf/release +SDL2_TTF_LICENSE = Zlib +SDL2_TTF_LICENSE_FILES = COPYING.txt +SDL2_TTF_INSTALL_STAGING = YES +SDL2_TTF_DEPENDENCIES = sdl2 freetype host-pkgconf + +# Two patches touching configure.in +SDL2_TTF_AUTORECONF = YES + +SDL2_TTF_CONF_ENV = \ + FREETYPE_CONFIG=$(STAGING_DIR)/usr/bin/freetype-config + +# x-includes and x-libraries must be set for cross-compiling +# By default x_includes and x_libraries contains unsafe paths. +# (/usr/include and /usr/lib) +ifeq ($(BR2_PACKAGE_SDL2_X11),y) +SDL2_TTF_CONF_OPTS += \ + --with-x \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib +else +SDL2_TTF_CONF_OPTS += \ + --without-x +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl_gfx/Config.in b/buildroot/package/sdl_gfx/Config.in new file mode 100644 index 0000000..b5d5cac --- /dev/null +++ b/buildroot/package/sdl_gfx/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_SDL_GFX + bool "SDL_gfx" + depends on BR2_PACKAGE_SDL + help + The SDL_gfx library is an extension to the SDL library which + provides basic antialiased drawing routines such as lines, + circles or polygons, an interpolating rotozoomer for SDL + surfaces, framerate control and MMX image filters. + + http://cms.ferzkopp.net/index.php/software/13-sdl-gfx diff --git a/buildroot/package/sdl_gfx/sdl_gfx.hash b/buildroot/package/sdl_gfx/sdl_gfx.hash new file mode 100644 index 0000000..8c2be96 --- /dev/null +++ b/buildroot/package/sdl_gfx/sdl_gfx.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/sdlgfx/files/ +md5 fcc3c4f2d1b4943409bf7e67dd65d03a SDL_gfx-2.0.23.tar.gz +sha1 aae60e7fed539f3f8a0a0bd6da3bbcf625642596 SDL_gfx-2.0.23.tar.gz diff --git a/buildroot/package/sdl_gfx/sdl_gfx.mk b/buildroot/package/sdl_gfx/sdl_gfx.mk new file mode 100644 index 0000000..e7420de --- /dev/null +++ b/buildroot/package/sdl_gfx/sdl_gfx.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# sdl_gfx +# +################################################################################ + +SDL_GFX_VERSION_MAJOR = 2.0 +SDL_GFX_VERSION = $(SDL_GFX_VERSION_MAJOR).23 +SDL_GFX_SOURCE = SDL_gfx-$(SDL_GFX_VERSION).tar.gz +SDL_GFX_SITE = http://www.ferzkopp.net/Software/SDL_gfx-$(SDL_GFX_VERSION_MAJOR) +SDL_GFX_LICENSE = Zlib +SDL_GFX_LICENSE_FILES = COPYING LICENSE +SDL_GFX_INSTALL_STAGING = YES +SDL_GFX_DEPENDENCIES = sdl +SDL_GFX_CONF_OPTS = \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --disable-sdltest \ + --enable-static + +# Even though x86_64 processors support MMX, the MMX-specific assembly +# code in sdl_gfx is IA32 specific, and does not build for x86_64. +ifeq ($(BR2_i386)$(BR2_X86_CPU_HAS_MMX),yy) +SDL_GFX_CONF_OPTS += --enable-mmx +else +SDL_GFX_CONF_OPTS += --disable-mmx +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl_image/Config.in b/buildroot/package/sdl_image/Config.in new file mode 100644 index 0000000..c719d44 --- /dev/null +++ b/buildroot/package/sdl_image/Config.in @@ -0,0 +1,57 @@ +menuconfig BR2_PACKAGE_SDL_IMAGE + bool "SDL_image" + depends on BR2_PACKAGE_SDL + help + SDL_image is an image file loading library. It loads images + as SDL surfaces, and supports the following formats: + BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, XCF, XPM, XV. + + http://www.libsdl.org/projects/SDL_image/ + +if BR2_PACKAGE_SDL_IMAGE + +config BR2_PACKAGE_SDL_IMAGE_BMP + bool "BMP support" + default y + +config BR2_PACKAGE_SDL_IMAGE_GIF + bool "GIF support" + +config BR2_PACKAGE_SDL_IMAGE_JPEG + bool "JPEG support" + select BR2_PACKAGE_JPEG + +config BR2_PACKAGE_SDL_IMAGE_LBM + bool "LBM support" + +config BR2_PACKAGE_SDL_IMAGE_PCX + bool "PCX support" + +config BR2_PACKAGE_SDL_IMAGE_PNG + bool "PNG support" + select BR2_PACKAGE_LIBPNG + +config BR2_PACKAGE_SDL_IMAGE_PNM + bool "PNM support" + +config BR2_PACKAGE_SDL_IMAGE_TARGA + bool "TARGA support" + +config BR2_PACKAGE_SDL_IMAGE_TIFF + bool "TIFF support" + select BR2_PACKAGE_TIFF + +config BR2_PACKAGE_SDL_IMAGE_WEBP + bool "WEBP support" + select BR2_PACKAGE_WEBP + +config BR2_PACKAGE_SDL_IMAGE_XCF + bool "XCF support" + +config BR2_PACKAGE_SDL_IMAGE_XPM + bool "XPM support" + +config BR2_PACKAGE_SDL_IMAGE_XV + bool "XV support" + +endif diff --git a/buildroot/package/sdl_image/sdl_image.hash b/buildroot/package/sdl_image/sdl_image.hash new file mode 100644 index 0000000..8362234 --- /dev/null +++ b/buildroot/package/sdl_image/sdl_image.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0b90722984561004de84847744d566809dbb9daf732a9e503b91a1b5a84e5699 SDL_image-1.2.12.tar.gz diff --git a/buildroot/package/sdl_image/sdl_image.mk b/buildroot/package/sdl_image/sdl_image.mk new file mode 100644 index 0000000..ee0712c --- /dev/null +++ b/buildroot/package/sdl_image/sdl_image.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# sdl_image +# +################################################################################ + +SDL_IMAGE_VERSION = 1.2.12 +SDL_IMAGE_SOURCE = SDL_image-$(SDL_IMAGE_VERSION).tar.gz +SDL_IMAGE_SITE = http://www.libsdl.org/projects/SDL_image/release +SDL_IMAGE_INSTALL_STAGING = YES +SDL_IMAGE_LICENSE = Zlib +SDL_IMAGE_LICENSE_FILES = COPYING + +SDL_IMAGE_CONF_OPTS = \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr \ + --disable-sdltest \ + --disable-static \ + --enable-bmp=$(if $(BR2_PACKAGE_SDL_IMAGE_BMP),yes,no) \ + --enable-gif=$(if $(BR2_PACKAGE_SDL_IMAGE_GIF),yes,no) \ + --enable-jpg=$(if $(BR2_PACKAGE_SDL_IMAGE_JPEG),yes,no) \ + --enable-lbm=$(if $(BR2_PACKAGE_SDL_IMAGE_LBM),yes,no) \ + --enable-pcx=$(if $(BR2_PACKAGE_SDL_IMAGE_PCX),yes,no) \ + --enable-png=$(if $(BR2_PACKAGE_SDL_IMAGE_PNG),yes,no) \ + --enable-pnm=$(if $(BR2_PACKAGE_SDL_IMAGE_PNM),yes,no) \ + --enable-tga=$(if $(BR2_PACKAGE_SDL_IMAGE_TARGA),yes,no) \ + --enable-tif=$(if $(BR2_PACKAGE_SDL_IMAGE_TIFF),yes,no) \ + --enable-webp=$(if $(BR2_PACKAGE_SDL_IMAGE_WEBP),yes,no) \ + --enable-xcf=$(if $(BR2_PACKAGE_SDL_IMAGE_XCF),yes,no) \ + --enable-xpm=$(if $(BR2_PACKAGE_SDL_IMAGE_XPM),yes,no) \ + --enable-xv=$(if $(BR2_PACKAGE_SDL_IMAGE_XV),yes,no) + +SDL_IMAGE_DEPENDENCIES = sdl \ + $(if $(BR2_PACKAGE_SDL_IMAGE_JPEG),jpeg) \ + $(if $(BR2_PACKAGE_SDL_IMAGE_PNG),libpng) \ + $(if $(BR2_PACKAGE_SDL_IMAGE_TIFF),tiff) \ + $(if $(BR2_PACKAGE_SDL_IMAGE_WEBP),webp) + +HOST_SDL_IMAGE_CONF_OPTS = \ + --with-sdl-prefix=$(HOST_DIR) \ + --with-sdl-exec-prefix=$(HOST_DIR) \ + --disable-sdltest \ + --disable-static \ + --disable-jpg-shared \ + --disable-png-shared \ + --disable-tif-shared + +HOST_SDL_IMAGE_DEPENDENCIES = host-libjpeg host-libpng host-sdl + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/sdl_mixer/0001-Add-Libs.private-field-to-pkg-config-file.patch b/buildroot/package/sdl_mixer/0001-Add-Libs.private-field-to-pkg-config-file.patch new file mode 100644 index 0000000..e0e8571 --- /dev/null +++ b/buildroot/package/sdl_mixer/0001-Add-Libs.private-field-to-pkg-config-file.patch @@ -0,0 +1,64 @@ +From abf3a1b9c9cdacb574c2b9cdbf3f2a5e18c39ab9 Mon Sep 17 00:00:00 2001 +From: Rodrigo Rebello +Date: Mon, 29 Feb 2016 22:53:49 -0300 +Subject: [PATCH 1/1] Add 'Libs.private' field to pkg-config file + +In order to support static linking, SDL_mixer.pc should include a +'Libs.private' field listing all the libraries that SDL_mixer requires. + +This patch adds such a field and also modifies configure.in so that +EXTRA_LDFLAGS (which is now also used as the value of 'Libs.private') +no longer includes SDL_LIBS. This is done so as to prevent libraries +required by SDL from being listed twice when 'pkg-config --libs --static +SDL_mixer' is run (they're already shown because of the 'Requires: sdl' +line in SDL_mixer.pc). Makefile.in is also adjusted accordingly. + +Upstream status: submitted +https://bugzilla.libsdl.org/show_bug.cgi?id=3278 + +Signed-off-by: Rodrigo Rebello +--- + Makefile.in | 2 +- + SDL_mixer.pc.in | 1 + + configure.in | 1 - + 3 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 3d10565..ce4efd4 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -63,7 +63,7 @@ $(objects): + .PHONY: all install install-hdrs install-lib install-bin uninstall uninstall-hdrs uninstall-lib uninstall-bin clean distclean dist + + $(objects)/$(TARGET): $(OBJECTS) $(VERSION_OBJECTS) +- $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(SDL_LIBS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) + + $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET) + $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) +diff --git a/SDL_mixer.pc.in b/SDL_mixer.pc.in +index 1c4965d..d793521 100644 +--- a/SDL_mixer.pc.in ++++ b/SDL_mixer.pc.in +@@ -8,5 +8,6 @@ Description: mixer library for Simple DirectMedia Layer + Version: @VERSION@ + Requires: sdl >= @SDL_VERSION@ + Libs: -L${libdir} -lSDL_mixer ++Libs.private: @EXTRA_LDFLAGS@ + Cflags: -I${includedir}/SDL + +diff --git a/configure.in b/configure.in +index 2272b29..442eca6 100644 +--- a/configure.in ++++ b/configure.in +@@ -202,7 +202,6 @@ AM_PATH_SDL($SDL_VERSION, + AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]) + ) + EXTRA_CFLAGS="$EXTRA_CFLAGS $SDL_CFLAGS" +-EXTRA_LDFLAGS="$EXTRA_LDFLAGS $SDL_LIBS" + + dnl Check for math library + AC_CHECK_LIB(m, pow, [LIBM="-lm"]) +-- +2.1.4 + diff --git a/buildroot/package/sdl_mixer/0002-add-LDFLAGS-while-linking.patch b/buildroot/package/sdl_mixer/0002-add-LDFLAGS-while-linking.patch new file mode 100644 index 0000000..4144660 --- /dev/null +++ b/buildroot/package/sdl_mixer/0002-add-LDFLAGS-while-linking.patch @@ -0,0 +1,29 @@ +Pass LDFLAGS while creating binaries. + +Fixes following linking error with uClibc-ng: +br/output/host/usr/lib/gcc/powerpc-buildroot-linux-uclibc/5.4.0/libgcc.a(unwind-dw2-fde-dip.o): In function `_Unwind_Find_FDE': +br/output/build/host-gcc-final-5.4.0/build/powerpc-buildroot-linux-uclibc/libgcc/../../../libgcc/unwind-dw2-fde-dip.c:465: undefined reference to `dl_iterate_phdr' +collect2: error: ld returned 1 exit status + +Since uClibc-ng 1.0.18 a circular dependency between libc and libgcc +exist, when static linking is used. It can be resolved by the compiler +when -static is correctly passed in the linking step. + +Signed-off-by: Waldemar Brodkorb + +diff -Nur SDL_mixer-1.2.12.orig/Makefile.in SDL_mixer-1.2.12/Makefile.in +--- SDL_mixer-1.2.12.orig/Makefile.in 2012-01-15 23:01:04.000000000 +0100 ++++ SDL_mixer-1.2.12/Makefile.in 2016-12-07 08:29:22.479786596 +0100 +@@ -66,10 +66,10 @@ + $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS) + + $(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET) +- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(objects)/$(TARGET) + + $(objects)/playmus$(EXE): $(objects)/playmus.lo $(objects)/$(TARGET) +- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) ++ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(LDFLAGS) $(objects)/$(TARGET) + + install: all install-hdrs install-lib #install-bin + install-hdrs: diff --git a/buildroot/package/sdl_mixer/Config.in b/buildroot/package/sdl_mixer/Config.in new file mode 100644 index 0000000..42dfe63 --- /dev/null +++ b/buildroot/package/sdl_mixer/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_SDL_MIXER + bool "SDL_mixer" + depends on BR2_PACKAGE_SDL + help + SDL_mixer is a sample multi-channel audio mixer library. + It supports any number of simultaneously playing channels of + 16 bit stereo audio, plus a single channel of music, mixed + by the popular MikMod MOD, Timidity MIDI, Ogg Vorbis, and + SMPEG MP3 libraries. + + http://www.libsdl.org/projects/SDL_mixer/ diff --git a/buildroot/package/sdl_mixer/sdl_mixer.hash b/buildroot/package/sdl_mixer/sdl_mixer.hash new file mode 100644 index 0000000..cfe8b07 --- /dev/null +++ b/buildroot/package/sdl_mixer/sdl_mixer.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1644308279a975799049e4826af2cfc787cad2abb11aa14562e402521f86992a SDL_mixer-1.2.12.tar.gz diff --git a/buildroot/package/sdl_mixer/sdl_mixer.mk b/buildroot/package/sdl_mixer/sdl_mixer.mk new file mode 100644 index 0000000..1c6912a --- /dev/null +++ b/buildroot/package/sdl_mixer/sdl_mixer.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# sdl_mixer +# +################################################################################ + +SDL_MIXER_VERSION = 1.2.12 +SDL_MIXER_SOURCE = SDL_mixer-$(SDL_MIXER_VERSION).tar.gz +SDL_MIXER_SITE = http://www.libsdl.org/projects/SDL_mixer/release +SDL_MIXER_LICENSE = Zlib +SDL_MIXER_LICENSE_FILES = COPYING + +SDL_MIXER_INSTALL_STAGING = YES +SDL_MIXER_DEPENDENCIES = sdl + +# We're patching configure.in, so we need to autoreconf +SDL_MIXER_AUTORECONF = YES +SDL_MIXER_AUTORECONF_OPTS = -Iacinclude + +SDL_MIXER_CONF_OPTS = \ + --without-x \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --disable-music-midi \ + --disable-music-mod \ + --disable-music-mp3 \ + --disable-music-flac # configure script fails when cross compiling + +ifeq ($(BR2_PACKAGE_LIBMAD),y) +SDL_MIXER_CONF_OPTS += --enable-music-mp3-mad-gpl +SDL_MIXER_DEPENDENCIES += libmad +else +SDL_MIXER_CONF_OPTS += --disable-music-mp3-mad-gpl +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +SDL_MIXER_CONF_OPTS += --enable-music-ogg +SDL_MIXER_DEPENDENCIES += libvorbis +else +SDL_MIXER_CONF_OPTS += --disable-music-ogg +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl_net/Config.in b/buildroot/package/sdl_net/Config.in new file mode 100644 index 0000000..2d9cbe1 --- /dev/null +++ b/buildroot/package/sdl_net/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SDL_NET + bool "SDL_net" + depends on BR2_PACKAGE_SDL + help + SDL_net is a small, low-level, cross-platform network + library, that can be used with the Simple DirectMedia Layer + library (SDL). + + http://www.libsdl.org/projects/SDL_net/ diff --git a/buildroot/package/sdl_net/sdl_net.hash b/buildroot/package/sdl_net/sdl_net.hash new file mode 100644 index 0000000..56a7484 --- /dev/null +++ b/buildroot/package/sdl_net/sdl_net.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 5f4a7a8bb884f793c278ac3f3713be41980c5eedccecff0260411347714facb4 SDL_net-1.2.8.tar.gz diff --git a/buildroot/package/sdl_net/sdl_net.mk b/buildroot/package/sdl_net/sdl_net.mk new file mode 100644 index 0000000..c7e409a --- /dev/null +++ b/buildroot/package/sdl_net/sdl_net.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# sdl_net +# +################################################################################ + +SDL_NET_VERSION = 1.2.8 +SDL_NET_SITE = http://www.libsdl.org/projects/SDL_net/release +SDL_NET_SOURCE = SDL_net-$(SDL_NET_VERSION).tar.gz +SDL_NET_LICENSE = Zlib +SDL_NET_LICENSE_FILES = COPYING + +SDL_NET_CONF_OPTS = \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr + +SDL_NET_INSTALL_STAGING = YES + +SDL_NET_DEPENDENCIES = sdl + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl_sound/0001-fix-constness.patch b/buildroot/package/sdl_sound/0001-fix-constness.patch new file mode 100644 index 0000000..1f27a07 --- /dev/null +++ b/buildroot/package/sdl_sound/0001-fix-constness.patch @@ -0,0 +1,16 @@ +decoders/speex: fix constness of speex mode + +Signed-off-by: "Yann E. MORIN" + +diff -durN sdl_sound-1.0.3.orig/decoders/speex.c sdl_sound-1.0.3/decoders/speex.c +--- sdl_sound-1.0.3.orig/decoders/speex.c 2014-11-17 19:40:09.543553556 +0100 ++++ sdl_sound-1.0.3/decoders/speex.c 2014-11-17 19:40:37.119864580 +0100 +@@ -124,7 +124,7 @@ + + static int process_header(speex_t *speex, Sound_Sample *sample) + { +- SpeexMode *mode; ++ const SpeexMode * mode; + SpeexHeader *hptr; + SpeexHeader header; + int enh_enabled = SPEEX_USE_PERCEPTUAL_ENHANCER; diff --git a/buildroot/package/sdl_sound/0002-remove-werror.patch b/buildroot/package/sdl_sound/0002-remove-werror.patch new file mode 100644 index 0000000..c08bbdb --- /dev/null +++ b/buildroot/package/sdl_sound/0002-remove-werror.patch @@ -0,0 +1,29 @@ +Do not add -Werror when --enable-debug is used + +Using -Werror causes some problems due to warnings in the SDL_sound +code, so let's disable it. + +We patch configure directly, because: + + 1/ configure.in doesn't autoreconf properly out of the box. + + 2/ the length of the configure or configure.in patch would be exactly + the same (one line), or maybe more for the configure.in patch if + we want the package to autoreconf properly + + 3/ the patch will never go upstream, because upstream is dead. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure +=================================================================== +--- a/configure ++++ b/configure +@@ -19561,7 +19561,6 @@ + else + CFLAGS="-O0" + fi +- CFLAGS="$CFLAGS -Werror" + + cat >>confdefs.h <<\_ACEOF + #define DEBUG 1 diff --git a/buildroot/package/sdl_sound/0003-renamed-physfs-export.patch b/buildroot/package/sdl_sound/0003-renamed-physfs-export.patch new file mode 100644 index 0000000..3aeded3 --- /dev/null +++ b/buildroot/package/sdl_sound/0003-renamed-physfs-export.patch @@ -0,0 +1,32 @@ +This patch is taken from the Arch Linux User Repository, see: +https://aur.archlinux.org/packages/sdl_sound-patched-hg/ + +Signed-off-by: Sam Bobroff + +diff -ru SDL_sound.orig/playsound/physfsrwops.h SDL_sound/playsound/physfsrwops.h +--- SDL_sound.orig/playsound/physfsrwops.h 2014-01-11 06:28:35.494936000 +0100 ++++ SDL_sound/playsound/physfsrwops.h 2014-01-11 06:31:38.315675483 +0100 +@@ -29,6 +29,11 @@ + extern "C" { + #endif + ++/* renamed in physfs dev, add alias */ ++#ifdef PHYSFS_DECL ++#define __EXPORT__ PHYSFS_DECL ++#endif ++ + /** + * Open a platform-independent filename for reading, and make it accessible + * via an SDL_RWops structure. The file will be closed in PhysicsFS when the +@@ -77,6 +82,11 @@ + */ + __EXPORT__ SDL_RWops *PHYSFSRWOPS_makeRWops(PHYSFS_file *handle); + ++/* renamed in physfs dev, remove alias */ ++#ifdef PHYSFS_DECL ++#undef __EXPORT__ ++#endif ++ + #ifdef __cplusplus + } + #endif diff --git a/buildroot/package/sdl_sound/Config.in b/buildroot/package/sdl_sound/Config.in new file mode 100644 index 0000000..6da1985 --- /dev/null +++ b/buildroot/package/sdl_sound/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_SDL_SOUND + bool "SDL_sound" + depends on BR2_PACKAGE_SDL + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + SDL_sound is a library that handles the decoding of several + popular sound file formats, such as .WAV and .MP3. + It is meant to make the programmer's sound playback tasks + simpler. The programmer gives SDL_sound a filename, or feeds + it data directly from one of many sources, and then reads the + decoded waveform data back at her leisure. + + http://icculus.org/SDL_sound/ + +if BR2_PACKAGE_SDL_SOUND + +config BR2_PACKAGE_SDL_SOUND_PLAYSOUND + bool "install playsound tool" + help + Enable this option to install the playsound/playsound_simple + tools to target. + +endif diff --git a/buildroot/package/sdl_sound/sdl_sound.hash b/buildroot/package/sdl_sound/sdl_sound.hash new file mode 100644 index 0000000..a548627 --- /dev/null +++ b/buildroot/package/sdl_sound/sdl_sound.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3999fd0bbb485289a52be14b2f68b571cb84e380cc43387eadf778f64c79e6df SDL_sound-1.0.3.tar.gz diff --git a/buildroot/package/sdl_sound/sdl_sound.mk b/buildroot/package/sdl_sound/sdl_sound.mk new file mode 100644 index 0000000..2544b59 --- /dev/null +++ b/buildroot/package/sdl_sound/sdl_sound.mk @@ -0,0 +1,75 @@ +################################################################################ +# +# sdl_sound +# +################################################################################ + +SDL_SOUND_VERSION = 1.0.3 +SDL_SOUND_SOURCE = SDL_sound-$(SDL_SOUND_VERSION).tar.gz +SDL_SOUND_SITE = http://icculus.org/SDL_sound/downloads +SDL_SOUND_LICENSE = LGPL-2.1+ +SDL_SOUND_LICENSE_FILES = COPYING +SDL_SOUND_INSTALL_STAGING = YES +SDL_SOUND_DEPENDENCIES = sdl + +ifneq ($(BR2_ENABLE_LOCALE),y) +SDL_SOUND_DEPENDENCIES += libiconv +endif + +# optional dependencies +ifeq ($(BR2_PACKAGE_FLAC)$(BR2_PACKAGE_LIBOGG),yy) +SDL_SOUND_CONF_OPTS += --enable-flac +SDL_SOUND_DEPENDENCIES += flac libogg +else +SDL_SOUND_CONF_OPTS += --disable-flac +endif + +ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) +SDL_SOUND_CONF_OPTS += --enable-modplug +SDL_SOUND_DEPENDENCIES += libmodplug +else +SDL_SOUND_CONF_OPTS += --disable-modplug +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +SDL_SOUND_CONF_OPTS += --enable-ogg +SDL_SOUND_DEPENDENCIES += libvorbis +else +SDL_SOUND_CONF_OPTS += --disable-ogg +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +SDL_SOUND_CONF_OPTS += --enable-speex +SDL_SOUND_DEPENDENCIES += speex +else +SDL_SOUND_CONF_OPTS += --disable-speex +endif + +ifeq ($(BR2_PACKAGE_PHYSFS),y) +SDL_SOUND_CONF_OPTS += --enable-physfs +SDL_SOUND_DEPENDENCIES += physfs +else +SDL_SOUND_CONF_OPTS += --disable-physfs +endif + +SDL_SOUND_CONF_OPTS = \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr \ + --disable-sdltest \ + --enable-static + +ifeq ($(BR2_X86_CPU_HAS_MMX),y) +SDL_SOUND_CONF_OPTS += --enable-mmx +else +SDL_SOUND_CONF_OPTS += --disable-mmx +endif + +define SDL_SOUND_REMOVE_PLAYSOUND + rm $(addprefix $(TARGET_DIR)/usr/bin/,playsound playsound_simple) +endef + +ifneq ($(BR2_PACKAGE_SDL_SOUND_PLAYSOUND),y) +SDL_SOUND_POST_INSTALL_TARGET_HOOKS += SDL_SOUND_REMOVE_PLAYSOUND +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sdl_ttf/Config.in b/buildroot/package/sdl_ttf/Config.in new file mode 100644 index 0000000..efc92e5 --- /dev/null +++ b/buildroot/package/sdl_ttf/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SDL_TTF + bool "SDL_TTF" + depends on BR2_PACKAGE_SDL + select BR2_PACKAGE_FREETYPE + help + SDL_ttf is a sample TrueType font library. It allows you to + use TrueType fonts in your SDL applications. + + http://www.libsdl.org/projects/SDL_ttf/ diff --git a/buildroot/package/sdl_ttf/sdl_ttf.hash b/buildroot/package/sdl_ttf/sdl_ttf.hash new file mode 100644 index 0000000..ac7d6a6 --- /dev/null +++ b/buildroot/package/sdl_ttf/sdl_ttf.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 724cd895ecf4da319a3ef164892b72078bd92632a5d812111261cde248ebcdb7 SDL_ttf-2.0.11.tar.gz diff --git a/buildroot/package/sdl_ttf/sdl_ttf.mk b/buildroot/package/sdl_ttf/sdl_ttf.mk new file mode 100644 index 0000000..1d94c6c --- /dev/null +++ b/buildroot/package/sdl_ttf/sdl_ttf.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# sdl_ttf +# +################################################################################ + +SDL_TTF_VERSION = 2.0.11 +SDL_TTF_SOURCE = SDL_ttf-$(SDL_TTF_VERSION).tar.gz +SDL_TTF_SITE = http://www.libsdl.org/projects/SDL_ttf/release +SDL_TTF_LICENSE = Zlib +SDL_TTF_LICENSE_FILES = COPYING + +SDL_TTF_INSTALL_STAGING = YES +SDL_TTF_DEPENDENCIES = sdl freetype +SDL_TTF_CONF_OPTS = \ + --without-x \ + --with-freetype-prefix=$(STAGING_DIR)/usr \ + --with-sdl-prefix=$(STAGING_DIR)/usr + +SDL_TTF_MAKE_OPTS = INCLUDES="-I$(STAGING_DIR)/usr/include/SDL" LDFLAGS="-L$(STAGING_DIR)/usr/lib" +$(eval $(autotools-package)) diff --git a/buildroot/package/sdparm/Config.in b/buildroot/package/sdparm/Config.in new file mode 100644 index 0000000..cec0f84 --- /dev/null +++ b/buildroot/package/sdparm/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SDPARM + bool "sdparm" + help + Utility to accesses SCSI device parameters. + + http://sg.danny.cz/sg/sdparm.html diff --git a/buildroot/package/sdparm/sdparm.hash b/buildroot/package/sdparm/sdparm.hash new file mode 100644 index 0000000..050785a --- /dev/null +++ b/buildroot/package/sdparm/sdparm.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 7dc9e148cef22744e00809dad21b59ac544e3615001bc1b2399978f73e1d58ca sdparm-1.10.tar.xz diff --git a/buildroot/package/sdparm/sdparm.mk b/buildroot/package/sdparm/sdparm.mk new file mode 100644 index 0000000..b9fac51 --- /dev/null +++ b/buildroot/package/sdparm/sdparm.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# sdparm +# +################################################################################ + +SDPARM_VERSION = 1.10 +SDPARM_SOURCE = sdparm-$(SDPARM_VERSION).tar.xz +SDPARM_SITE = http://sg.danny.cz/sg/p +SDPARM_LICENSE = BSD-3-Clause +SDPARM_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_SG3_UTILS),y) +SDPARM_DEPENDENCIES += sg3_utils +else +SDPARM_CONF_OPTS += --disable-libsgutils +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sed/Config.in b/buildroot/package/sed/Config.in new file mode 100644 index 0000000..b8d182a --- /dev/null +++ b/buildroot/package/sed/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_SED + bool "sed" + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + sed (stream editor) is a non-interactive command-line text + editor. + + https://www.gnu.org/software/sed/ + +comment "sed needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/sed/sed.hash b/buildroot/package/sed/sed.hash new file mode 100644 index 0000000..652c573 --- /dev/null +++ b/buildroot/package/sed/sed.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 cbd6ebc5aaf080ed60d0162d7f6aeae58211a1ee9ba9bb25623daa6cd942683b sed-4.4.tar.xz diff --git a/buildroot/package/sed/sed.mk b/buildroot/package/sed/sed.mk new file mode 100644 index 0000000..28df140 --- /dev/null +++ b/buildroot/package/sed/sed.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# sed +# +################################################################################ + +SED_VERSION = 4.4 +SED_SOURCE = sed-$(SED_VERSION).tar.xz +SED_SITE = $(BR2_GNU_MIRROR)/sed +SED_LICENSE = GPL-3.0 +SED_LICENSE_FILES = COPYING + +SED_CONF_OPTS = \ + --bindir=/bin \ + --libdir=/lib \ + --libexecdir=/usr/lib \ + --sysconfdir=/etc \ + --datadir=/usr/share \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --include=$(STAGING_DIR)/usr/include + +$(eval $(autotools-package)) diff --git a/buildroot/package/selinux-python/0001-python-build-follow-standard-semantics-for-DESTD.patch b/buildroot/package/selinux-python/0001-python-build-follow-standard-semantics-for-DESTD.patch new file mode 100644 index 0000000..156701a --- /dev/null +++ b/buildroot/package/selinux-python/0001-python-build-follow-standard-semantics-for-DESTD.patch @@ -0,0 +1,117 @@ +python: build: follow standard semantics for DESTDIR and PREFIX + +Signed-off-by: Marcus Folkesson + +diff -durN python.orig/audit2allow/Makefile python/audit2allow/Makefile +--- python.orig/audit2allow/Makefile 2017-08-04 15:31:00.000000000 +0200 ++++ python/audit2allow/Makefile 2018-01-17 09:44:35.659573123 +0100 +@@ -1,19 +1,17 @@ + PYTHON ?= python + + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr +-BINDIR ?= $(PREFIX)/bin +-LIBDIR ?= $(PREFIX)/lib +-MANDIR ?= $(PREFIX)/share/man +-LOCALEDIR ?= /usr/share/locale +-INCLUDEDIR ?= $(PREFIX)/include +-LIBSEPOLA ?= $(LIBDIR)/libsepol.a ++PREFIX ?= /usr ++BINDIR ?= $(DESTDIR)$(PREFIX)/bin ++LIBDIR ?= $(DESTDIR)$(PREFIX)/lib ++MANDIR ?= $(DESTDIR)$(PREFIX)/share/man + + CFLAGS ?= -Werror -Wall -W + + all: audit2why sepolgen-ifgen-attr-helper + +-sepolgen-ifgen-attr-helper: sepolgen-ifgen-attr-helper.o $(LIBSEPOLA) ++sepolgen-ifgen-attr-helper: sepolgen-ifgen-attr-helper.o ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ -l:libsepol.a + + audit2why: + ln -sf audit2allow audit2why +diff -durN python.orig/chcat/Makefile python/chcat/Makefile +--- python.orig/chcat/Makefile 2017-08-04 15:31:00.000000000 +0200 ++++ python/chcat/Makefile 2018-01-17 09:44:35.659573123 +0100 +@@ -1,8 +1,8 @@ + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr +-BINDIR ?= $(PREFIX)/bin +-MANDIR ?= $(PREFIX)/share/man +-LOCALEDIR ?= $(PREFIX)/share/locale ++PREFIX ?= /usr ++BINDIR ?= $(DESTDIR)$(PREFIX)/bin ++MANDIR ?= $(DESTDIR)$(PREFIX)/share/man ++LOCALEDIR ?= $(DESTDIR)$(PREFIX)/share/locale + + .PHONY: all + all: chcat +diff -durN python.orig/semanage/Makefile python/semanage/Makefile +--- python.orig/semanage/Makefile 2017-08-04 15:31:00.000000000 +0200 ++++ python/semanage/Makefile 2018-01-17 09:44:43.676239705 +0100 +@@ -1,13 +1,12 @@ + PYTHON ?= python + + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr +-LIBDIR ?= $(PREFIX)/lib +-SBINDIR ?= $(PREFIX)/sbin +-MANDIR = $(PREFIX)/share/man +-PYTHONLIBDIR ?= $(shell $(PYTHON) -c "from distutils.sysconfig import *; print(get_python_lib(1))") ++PREFIX ?= /usr ++SBINDIR ?= $(DESTDIR)$(PREFIX)/sbin ++MANDIR = $(DESTDIR)$(PREFIX)/share/man ++PYTHONLIBDIR ?= $(shell $(PYTHON) -c "from distutils.sysconfig import *; print(get_python_lib(prefix='$(PREFIX)'))") + PACKAGEDIR ?= $(DESTDIR)/$(PYTHONLIBDIR) +-BASHCOMPLETIONDIR ?= $(DESTDIR)/usr/share/bash-completion/completions ++BASHCOMPLETIONDIR ?= $(DESTDIR)$(PREFIX)/share/bash-completion/completions + + TARGETS=semanage + +diff -durN python.orig/sepolgen/src/sepolgen/Makefile python/sepolgen/src/sepolgen/Makefile +--- python.orig/sepolgen/src/sepolgen/Makefile 2017-08-04 15:31:00.000000000 +0200 ++++ python/sepolgen/src/sepolgen/Makefile 2018-01-17 09:44:35.659573123 +0100 +@@ -1,5 +1,6 @@ ++PREFIX ?= /usr + PYTHON ?= python +-PYTHONLIBDIR ?= $(shell $(PYTHON) -c "from distutils.sysconfig import *; print(get_python_lib(1))") ++PYTHONLIBDIR ?= $(shell $(PYTHON) -c "from distutils.sysconfig import *; print(get_python_lib(prefix='$(PREFIX)'))") + PACKAGEDIR ?= $(DESTDIR)/$(PYTHONLIBDIR)/sepolgen + + all: +diff -durN python.orig/sepolicy/Makefile python/sepolicy/Makefile +--- python.orig/sepolicy/Makefile 2017-08-04 15:31:00.000000000 +0200 ++++ python/sepolicy/Makefile 2018-01-17 09:44:35.659573123 +0100 +@@ -1,14 +1,14 @@ + PYTHON ?= python + + # Installation directories. +-PREFIX ?= $(DESTDIR)/usr +-LIBDIR ?= $(PREFIX)/lib +-BINDIR ?= $(PREFIX)/bin +-DATADIR ?= $(PREFIX)/share +-MANDIR ?= $(PREFIX)/share/man +-LOCALEDIR ?= /usr/share/locale +-BASHCOMPLETIONDIR ?= $(DESTDIR)/usr/share/bash-completion/completions +-SHAREDIR ?= $(PREFIX)/share/sandbox ++PREFIX ?= /usr ++LIBDIR ?= $(DESTDIR)$(PREFIX)/lib ++BINDIR ?= $(DESTDIR)$(PREFIX)/bin ++DATADIR ?= $(DESTDIR)$(PREFIX)/share ++MANDIR ?= $(DESTDIR)$(PREFIX)/share/man ++LOCALEDIR ?= $(DESTDIR)$(PREFIX)/share/locale ++BASHCOMPLETIONDIR ?= $(DESTDIR)$(PREFIX)/share/bash-completion/completions ++SHAREDIR ?= $(DESTDIR)$(PREFIX)/share/sandbox + CFLAGS ?= -Wall -Werror -Wextra -W + override CFLAGS += -DPACKAGE="policycoreutils" -DSHARED -shared + +@@ -30,7 +30,7 @@ + @$(PYTHON) test_sepolicy.py -v + + install: +- $(PYTHON) setup.py install `test -n "$(DESTDIR)" && echo --root $(DESTDIR)` ++ $(PYTHON) setup.py install --prefix=$(PREFIX) `test -n "$(DESTDIR)" && echo --root $(DESTDIR)` + [ -d $(BINDIR) ] || mkdir -p $(BINDIR) + install -m 755 sepolicy.py $(BINDIR)/sepolicy + (cd $(BINDIR); ln -sf sepolicy sepolgen) diff --git a/buildroot/package/selinux-python/Config.in b/buildroot/package/selinux-python/Config.in new file mode 100644 index 0000000..b9fab9a --- /dev/null +++ b/buildroot/package/selinux-python/Config.in @@ -0,0 +1,63 @@ +menuconfig BR2_PACKAGE_SELINUX_PYTHON + bool "selinux-python" + depends on BR2_USE_MMU + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON + help + A set of SELinux tools written in python that help with + managing a system with SELinux enabled. If no packages are + selected nothing will actually be built. + https://github.com/SELinuxProject/selinux/wiki + +if BR2_PACKAGE_SELINUX_PYTHON + +config BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW + bool "audit2allow" + depends on BR2_USE_WCHAR # sepolgen + depends on BR2_USE_MMU # sepolgen + depends on BR2_TOOLCHAIN_HAS_THREADS # sepolgen, checkpolicy + depends on !BR2_STATIC_LIBS # sepolgen + depends on BR2_TOOLCHAIN_USES_GLIBC # checkpolicy + depends on !BR2_arc # checkpolicy + select BR2_PACKAGE_CHECKPOLICY + select BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN + select BR2_PACKAGE_SEMODULE_UTILS + help + This module installs two programs: + + audit2allow - Generate SELinux policy allow/dontaudit rules + from logs of denied operations. + + audit2why - translates SELinux audit messages into a + description of why the access was denied (audit2allow -w) + +comment "audit2allow needs a glibc toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_arc + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +config BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN + bool "sepolgen" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_SEMODULE_UTILS + help + This package contains a Python module that allows you to + generate an initial SELinux policy module template. + +comment "sepolgen needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +endif + +comment "selinux-python packages needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/selinux-python/selinux-python.hash b/buildroot/package/selinux-python/selinux-python.hash new file mode 100644 index 0000000..42fe575 --- /dev/null +++ b/buildroot/package/selinux-python/selinux-python.hash @@ -0,0 +1,2 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 4217cb965ecda96c91e15ffcc2e7ddd13ecc2bf5631100f3cd072a7616f140ed selinux-python-2.7.tar.gz diff --git a/buildroot/package/selinux-python/selinux-python.mk b/buildroot/package/selinux-python/selinux-python.mk new file mode 100644 index 0000000..25a2d04 --- /dev/null +++ b/buildroot/package/selinux-python/selinux-python.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# selinux-python +# +################################################################################ + +SELINUX_PYTHON_VERSION = 2.7 +SELINUX_PYTHON_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20170804 +SELINUX_PYTHON_LICENSE = GPL-2.0 +SELINUX_PYTHON_LICENSE_FILES = COPYING + +SELINUX_PYTHON_MAKE_OPTS += \ + $(TARGET_CONFIGURE_OPTS) \ + ARCH="$(BR2_ARCH)" \ + LIBDIR="$(STAGING_DIR)/usr/lib" + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +SELINUX_PYTHON_DEPENDENCIES += python3 +SELINUX_PYTHON_MAKE_OPTS += \ + PYTHONLIBDIR="usr/lib/python$(PYTHON3_VERSION_MAJOR)" +else +SELINUX_PYTHON_DEPENDENCIES += python +SELINUX_PYTHON_MAKE_OPTS += \ + PYTHONLIBDIR="usr/lib/python$(PYTHON_VERSION_MAJOR)" +endif + +ifeq ($(BR2_PACKAGE_SELINUX_PYTHON_AUDIT2ALLOW),y) +SELINUX_PYTHON_DEPENDENCIES += checkpolicy +SELINUX_PYTHON_MAKE_DIRS += audit2allow +endif + +ifeq ($(BR2_PACKAGE_SELINUX_PYTHON_SEPOLGEN),y) +SELINUX_PYTHON_MAKE_DIRS += sepolgen/src/sepolgen +endif + +define SELINUX_PYTHON_BUILD_CMDS + $(foreach d,$(SELINUX_PYTHON_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(SELINUX_PYTHON_MAKE_OPTS) \ + all + ) +endef + +define SELINUX_PYTHON_INSTALL_TARGET_CMDS + $(foreach d,$(SELINUX_PYTHON_MAKE_DIRS), + $(MAKE) -C $(@D)/$(d) $(SELINUX_PYTHON_MAKE_OPTS) \ + DESTDIR=$(TARGET_DIR) install + ) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/semodule-utils/Config.in b/buildroot/package/semodule-utils/Config.in new file mode 100644 index 0000000..38e043d --- /dev/null +++ b/buildroot/package/semodule-utils/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_SEMODULE_UTILS + bool "semodule-utils" + depends on BR2_TOOLCHAIN_HAS_THREADS # libsepol + select BR2_PACKAGE_LIBSEPOL + help + semodule-utils is a package that contains tools for handling + selinux modules. + + The package will install the following utilities: + * semodule_deps - Show the dependencies between SELinux + policy packages. + * semodule_expand - Expand a SELinux policy module package. + * semodule_link - Link SELinux policy module packages together + * semodule_package - Create a SELinux policy module package. + + https://github.com/SELinuxProject/selinux/wiki/Releases + +comment "semodule-utils needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/semodule-utils/semodule-utils.hash b/buildroot/package/semodule-utils/semodule-utils.hash new file mode 100644 index 0000000..18c8217 --- /dev/null +++ b/buildroot/package/semodule-utils/semodule-utils.hash @@ -0,0 +1,2 @@ +# https://github.com/SELinuxProject/selinux/wiki/Releases +sha256 90c98b3362a43b4da2a51a9176820a56f3e615225e23e3395bc566c4490786ba semodule-utils-2.7.tar.gz diff --git a/buildroot/package/semodule-utils/semodule-utils.mk b/buildroot/package/semodule-utils/semodule-utils.mk new file mode 100644 index 0000000..8f07fa0 --- /dev/null +++ b/buildroot/package/semodule-utils/semodule-utils.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# semodule-utils +# +################################################################################ + +SEMODULE_UTILS_VERSION = 2.7 +SEMODULE_UTILS_SITE = https://raw.githubusercontent.com/wiki/SELinuxProject/selinux/files/releases/20170804 +SEMODULE_UTILS_LICENSE = GPL-2.0 +SEMODULE_UTILS_LICENSE_FILES = COPYING +SEMODULE_UTILS_DEPENDENCIES = libsepol + +SEMODULE_UTILS_MAKE_OPTS += \ + $(TARGET_CONFIGURE_OPTS) \ + LIBSEPOLA=$(STAGING_DIR)/usr/lib/libsepol.a + +# We need to pass DESTDIR at build time because it's used by +# semodule-utils build system to find headers and libraries. +define SEMODULE_UTILS_BUILD_CMDS + $(MAKE) -C $(@D) $(SEMODULE_UTILS_MAKE_OPTS) DESTDIR=$(STAGING_DIR) all +endef + +define SEMODULE_UTILS_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D) $(SEMODULE_UTILS_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ser2net/Config.in b/buildroot/package/ser2net/Config.in new file mode 100644 index 0000000..3f0d15b --- /dev/null +++ b/buildroot/package/ser2net/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_SER2NET + bool "ser2net" + depends on BR2_USE_MMU # fork() + help + Ser2net provides a way for a user to connect from a network + connection to a serial port.. + + http://ser2net.sourceforge.net diff --git a/buildroot/package/ser2net/S50ser2net b/buildroot/package/ser2net/S50ser2net new file mode 100644 index 0000000..200dfd0 --- /dev/null +++ b/buildroot/package/ser2net/S50ser2net @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Startup script for ser2net +# + +start() { + printf "Starting ser2net: " + if [ ! -f /etc/ser2net.conf ] ; then + echo "no configuration file" + exit 1 + fi + + start-stop-daemon -S -q --exec /usr/sbin/ser2net -- -P /var/run/ser2net.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Shutting down ser2net: " + start-stop-daemon -K -q -p /var/run/ser2net.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + *) + echo "Usage: ser2net {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/ser2net/ser2net.hash b/buildroot/package/ser2net/ser2net.hash new file mode 100644 index 0000000..6778235 --- /dev/null +++ b/buildroot/package/ser2net/ser2net.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 d846066e27c3072565990745d030357aa0c278f96b7d1d4f59023347c1db8824 ser2net-3.4.tar.gz diff --git a/buildroot/package/ser2net/ser2net.mk b/buildroot/package/ser2net/ser2net.mk new file mode 100644 index 0000000..833becc --- /dev/null +++ b/buildroot/package/ser2net/ser2net.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# ser2net +# +################################################################################ + +SER2NET_VERSION = 3.4 +SER2NET_SITE = http://downloads.sourceforge.net/project/ser2net/ser2net +SER2NET_LICENSE = GPL-2.0+ +SER2NET_LICENSE_FILES = COPYING + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +SER2NET_CONF_OPTS += --with-pthreads +else +SER2NET_CONF_OPTS += --without-pthreads +endif + +define SER2NET_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/ser2net/S50ser2net \ + $(TARGET_DIR)/etc/init.d/S50ser2net +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/setools/0001-remove-werror-flag-from-setup.patch b/buildroot/package/setools/0001-remove-werror-flag-from-setup.patch new file mode 100644 index 0000000..b1446e2 --- /dev/null +++ b/buildroot/package/setools/0001-remove-werror-flag-from-setup.patch @@ -0,0 +1,29 @@ +From b2fe84bfd00117d4897f1f2e8f83d3410eb188b8 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Thu, 12 Oct 2017 22:04:58 -0400 +Subject: [PATCH] remove werror flag from setup + +Compilers older than gcc6 will generate uninitialized variable warnings which +will cause compiling to fail. + +Signed-off-by: Adam Duskett +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 2ca44c9..9319bf6 100644 +--- a/setup.py ++++ b/setup.py +@@ -146,7 +146,7 @@ ext_py_mods = [Extension('setools.policyrep._qpol', + 'libqpol/policy_scan.c', + 'libqpol/xen_query.c'], + include_dirs=include_dirs, +- extra_compile_args=['-Werror', '-Wextra', ++ extra_compile_args=['-Wextra', + '-Waggregate-return', + '-Wfloat-equal', + '-Wformat', '-Wformat=2', +-- +2.13.6 + diff --git a/buildroot/package/setools/0002-Do-not-export-use-setools.InfoFlowAnalysis-and-setoo.patch b/buildroot/package/setools/0002-Do-not-export-use-setools.InfoFlowAnalysis-and-setoo.patch new file mode 100644 index 0000000..1ef1cd6 --- /dev/null +++ b/buildroot/package/setools/0002-Do-not-export-use-setools.InfoFlowAnalysis-and-setoo.patch @@ -0,0 +1,142 @@ +From 2512c3ba608077db3a5e0286b976fadc8a04a5c4 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Thu, 23 Feb 2017 08:17:07 +0100 +Subject: [PATCH] Do not export/use setools.InfoFlowAnalysis and + setools.DomainTransitionAnalysis + +dta and infoflow modules require networkx which brings lot of dependencies. +These dependencies are not necessary for setools module itself as it's +used in policycoreutils. + +Therefore it's better to use setools.infoflow.InfoFlowAnalysis and +setools.dta.DomainTransitionAnalysis and let the package containing +sedta and seinfoflow to require python3-networkx + +Signed-off-by: Adam Duskett +--- + sedta | 3 ++- + seinfoflow | 3 ++- + setools/__init__.py | 4 ++-- + setoolsgui/apol/dta.py | 2 +- + setoolsgui/apol/infoflow.py | 2 +- + tests/dta.py | 3 ++- + tests/infoflow.py | 3 ++- + 7 files changed, 12 insertions(+), 8 deletions(-) + +diff --git a/sedta b/sedta +index 1c76ebb..255ad49 100755 +--- a/sedta ++++ b/sedta +@@ -23,6 +23,7 @@ import argparse + import logging + + import setools ++import setools.dta + + + def print_transition(trans): +@@ -111,7 +112,7 @@ else: + + try: + p = setools.SELinuxPolicy(args.policy) +- g = setools.DomainTransitionAnalysis(p, reverse=args.reverse, exclude=args.exclude) ++ g = setools.dta.DomainTransitionAnalysis(p, reverse=args.reverse, exclude=args.exclude) + + if args.shortest_path or args.all_paths: + if args.shortest_path: +diff --git a/seinfoflow b/seinfoflow +index b287921..d53bdef 100755 +--- a/seinfoflow ++++ b/seinfoflow +@@ -19,6 +19,7 @@ + + from __future__ import print_function + import setools ++import setools.infoflow + import argparse + import sys + import logging +@@ -79,7 +80,7 @@ else: + try: + p = setools.SELinuxPolicy(args.policy) + m = setools.PermissionMap(args.map) +- g = setools.InfoFlowAnalysis(p, m, min_weight=args.min_weight, exclude=args.exclude) ++ g = setools.infoflow.InfoFlowAnalysis(p, m, min_weight=args.min_weight, exclude=args.exclude) + + if args.shortest_path or args.all_paths: + if args.shortest_path: +diff --git a/setools/__init__.py b/setools/__init__.py +index a84c846..a53c5a7 100644 +--- a/setools/__init__.py ++++ b/setools/__init__.py +@@ -74,11 +74,11 @@ from .pcideviceconquery import PcideviceconQuery + from .devicetreeconquery import DevicetreeconQuery + + # Information Flow Analysis +-from .infoflow import InfoFlowAnalysis ++# from .infoflow import InfoFlowAnalysis + from .permmap import PermissionMap + + # Domain Transition Analysis +-from .dta import DomainTransitionAnalysis ++# from .dta import DomainTransitionAnalysis + + # Policy difference + from .diff import PolicyDifference +diff --git a/setoolsgui/apol/dta.py b/setoolsgui/apol/dta.py +index 0aaf13f..5b1ea20 100644 +--- a/setoolsgui/apol/dta.py ++++ b/setoolsgui/apol/dta.py +@@ -23,7 +23,7 @@ from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread + from PyQt5.QtGui import QPalette, QTextCursor + from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \ + QTreeWidgetItem +-from setools import DomainTransitionAnalysis ++from setools.dta import DomainTransitionAnalysis + + from ..logtosignal import LogHandlerToSignal + from .analysistab import AnalysisTab +diff --git a/setoolsgui/apol/infoflow.py b/setoolsgui/apol/infoflow.py +index 1ae16de..fdf8f7b 100644 +--- a/setoolsgui/apol/infoflow.py ++++ b/setoolsgui/apol/infoflow.py +@@ -25,7 +25,7 @@ from PyQt5.QtCore import pyqtSignal, Qt, QStringListModel, QThread + from PyQt5.QtGui import QPalette, QTextCursor + from PyQt5.QtWidgets import QCompleter, QHeaderView, QMessageBox, QProgressDialog, \ + QTreeWidgetItem +-from setools import InfoFlowAnalysis ++from setools.infoflow import InfoFlowAnalysis + from setools.exception import UnmappedClass, UnmappedPermission + + from ..logtosignal import LogHandlerToSignal +diff --git a/tests/dta.py b/tests/dta.py +index 32b9271..2bdd052 100644 +--- a/tests/dta.py ++++ b/tests/dta.py +@@ -17,7 +17,8 @@ + # + import unittest + +-from setools import SELinuxPolicy, DomainTransitionAnalysis ++from setools import SELinuxPolicy ++from setools.dta import DomainTransitionAnalysis + from setools import TERuletype as TERT + from setools.policyrep.exception import InvalidType + from setools.policyrep.typeattr import Type +diff --git a/tests/infoflow.py b/tests/infoflow.py +index 7751dda..a21c683 100644 +--- a/tests/infoflow.py ++++ b/tests/infoflow.py +@@ -17,7 +17,8 @@ + # + import unittest + +-from setools import SELinuxPolicy, InfoFlowAnalysis ++from setools import SELinuxPolicy ++from setools.infoflow import InfoFlowAnalysis + from setools import TERuletype as TERT + from setools.permmap import PermissionMap + from setools.policyrep.exception import InvalidType +-- +2.9.3 + diff --git a/buildroot/package/setools/Config.in b/buildroot/package/setools/Config.in new file mode 100644 index 0000000..ae0c45f --- /dev/null +++ b/buildroot/package/setools/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_SETOOLS + bool "setools" + depends on !BR2_arc # arc: libselinux not available + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_USES_GLIBC # libselinux + depends on BR2_USE_MMU + select BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_ENUM34 if !BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_SETUPTOOLS + select BR2_PACKAGE_LIBSELINUX + help + SETools is an open source project designed to facilitate + SELinux policy analysis. The primary tools are: + * apol - analyze a SELinux policy. (requires python-qt5) + * sediff - semantic policy difference tool for SELinux. + * sedta - Perform domain transition analyses + * sesearch - Search rules (allow, type_transition, etc.) + + https://github.com/TresysTechnology/setools + +comment "setools needs a glibc toolchain w/ threads, C++, wchar, dynamic library" + depends on BR2_USE_MMU && !BR2_arc + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_USE_WCHAR || !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/setools/setools.hash b/buildroot/package/setools/setools.hash new file mode 100644 index 0000000..8729297 --- /dev/null +++ b/buildroot/package/setools/setools.hash @@ -0,0 +1,7 @@ +# From https://github.com/TresysTechnology/setools3/wiki/Download +md5 d68d0d4e4da0f01da0f208782ff04b91 setools-4.1.1.tar.bz2 +# Locally computed +sha256 46a927ea2b163cbe1d35cc35da43e45853e13720c7e02d4cf75a498783c19610 setools-4.1.1.tar.gz +sha256 2f7547e10f76a382c24c053595f38a5cc6dda9347f508f254ca490e0046a9624 COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPL +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/buildroot/package/setools/setools.mk b/buildroot/package/setools/setools.mk new file mode 100644 index 0000000..6748c95 --- /dev/null +++ b/buildroot/package/setools/setools.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# setools +# +################################################################################ + +SETOOLS_VERSION = 4.1.1 +SETOOLS_SITE = $(call github,TresysTechnology,setools,$(SETOOLS_VERSION)) +SETOOLS_DEPENDENCIES = libselinux libsepol python-setuptools host-bison host-flex host-swig +SETOOLS_INSTALL_STAGING = YES +SETOOLS_LICENSE = GPL-2.0+, LGPL-2.1+ +SETOOLS_LICENSE_FILES = COPYING COPYING.GPL COPYING.LGPL +SETOOLS_SETUP_TYPE = setuptools +HOST_SETOOLS_DEPENDENCIES = host-libselinux host-libsepol + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +SETOOLS_PYLIBVER = python$(PYTHON3_VERSION_MAJOR) +else +SETOOLS_PYLIBVER = python$(PYTHON_VERSION_MAJOR) +SETOOLS_DEPENDENCIES += python-enum34 +endif + +define SETOOLS_FIX_SETUP + # By default, setup.py will look for libsepol.a in the host machines + # /usr/lib directory. This needs to be changed to the staging directory. + $(SED) "s@base_lib_dirs =.*@base_lib_dirs = ['$(STAGING_DIR)/usr/lib']@g" \ + $(@D)/setup.py +endef +SETOOLS_POST_PATCH_HOOKS += SETOOLS_FIX_SETUP + +define HOST_SETOOLS_FIX_SETUP + # By default, setup.py will look for libsepol.a in the host machines + # /usr/lib directory. This needs to be changed to the host directory. + $(SED) "s@base_lib_dirs =.*@base_lib_dirs = ['$(HOST_DIR)/lib']@g" \ + $(@D)/setup.py +endef +HOST_SETOOLS_POST_PATCH_HOOKS += HOST_SETOOLS_FIX_SETUP + +# sedta and seinfoflow depend on python-networkx. This package is not +# available in buildroot. +define SETOOLS_REMOVE_BROKEN_SCRIPTS + $(RM) $(TARGET_DIR)/usr/bin/sedta + $(RM) $(TARGET_DIR)/usr/bin/seinfoflow +endef +SETOOLS_POST_INSTALL_TARGET_HOOKS += SETOOLS_REMOVE_BROKEN_SCRIPTS + +# apol requires pyqt5. However, the setools installation +# process will install apol even if pyqt5 is missing. +# Remove these scripts from the target it pyqt5 is not selected. +ifeq ($(BR2_PACKAGE_PYTHON_PYQT5),) +define SETOOLS_REMOVE_QT_SCRIPTS + $(RM) $(TARGET_DIR)/usr/bin/apol + $(RM) -r $(TARGET_DIR)/lib/$(SETOOLS_PYLIBVER)/site-packages/setoolsgui/ +endef +SETOOLS_POST_INSTALL_TARGET_HOOKS += SETOOLS_REMOVE_QT_SCRIPTS +endif + +# sedta and seinfoflow depend on python-networkx. This package is not +# available in buildroot. pyqt5 is not a host-package, remove apol +# from the host directory as well. +define HOST_SETOOLS_REMOVE_BROKEN_SCRIPTS + $(RM) $(HOST_DIR)/bin/sedta + $(RM) $(HOST_DIR)/bin/seinfoflow + $(RM) $(HOST_DIR)/bin/apol +endef +HOST_SETOOLS_POST_INSTALL_HOOKS += HOST_SETOOLS_REMOVE_BROKEN_SCRIPTS + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/setserial/0001-build-system-fix.patch b/buildroot/package/setserial/0001-build-system-fix.patch new file mode 100644 index 0000000..eec7993 --- /dev/null +++ b/buildroot/package/setserial/0001-build-system-fix.patch @@ -0,0 +1,28 @@ +Install the setserial program in /usr/bin instead of /bin, and make +sure that the directories (especially the manpages directory) are +created before installing files to them. This is similar to what +automake does. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.in | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +Index: setserial-2.17/Makefile.in +=================================================================== +--- setserial-2.17.orig/Makefile.in ++++ setserial-2.17/Makefile.in +@@ -26,9 +26,10 @@ setserial.cat: setserial.8 + nroff -man setserial.8 > setserial.cat + + install: setserial setserial.8 +- $(INSTALL_PROGRAM) setserial $(DESTDIR)/bin +- $(STRIP) $(DESTDIR)/bin/setserial +- $(INSTALL_DATA) setserial.8 $(DESTDIR)/usr/man/man8 ++ mkdir -p $(DESTDIR)/usr/bin ++ $(INSTALL_PROGRAM) setserial $(DESTDIR)/usr/bin ++ mkdir -p $(DESTDIR)/usr/share/man/man8 ++ $(INSTALL_DATA) setserial.8 $(DESTDIR)/usr/share/man/man8 + + clean: + $(RM) setserial setserial.o setserial.cat *~ diff --git a/buildroot/package/setserial/0002-tiocghayesesp-build-fix.patch b/buildroot/package/setserial/0002-tiocghayesesp-build-fix.patch new file mode 100644 index 0000000..176a0c9 --- /dev/null +++ b/buildroot/package/setserial/0002-tiocghayesesp-build-fix.patch @@ -0,0 +1,28 @@ +[PATCH] setserial: fix build with 2.6.33+ kernel headers + +linux/hayesesp.h got removed in 2.6.33, but some archs (like x86) still +define the TIOCGHAYESESP ioctl, breaking the build. + +It's very unlikely to be of interest anymore, so just undef it. + +Signed-off-by: Peter Korsgaard +--- + setserial.c | 5 +++++ + 1 file changed, 5 insertions(+) + +Index: setserial-2.17/setserial.c +=================================================================== +--- setserial-2.17.orig/setserial.c ++++ setserial-2.17/setserial.c +@@ -24,6 +24,11 @@ + #endif + #include + ++/* linux/hayesesp.h got removed in 2.6.33 but some archs (like x86) ++ still define TIOCGHAYESESP. It's very unlikely to be of interest ++ anymore, so just undef it */ ++#undef TIOCGHAYESESP ++ + #include "version.h" + + static char version_str[] = "setserial version " SETSERIAL_VERSION ", " diff --git a/buildroot/package/setserial/Config.in b/buildroot/package/setserial/Config.in new file mode 100644 index 0000000..4ff2477 --- /dev/null +++ b/buildroot/package/setserial/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SETSERIAL + bool "setserial" + # Uses fork() + depends on BR2_USE_MMU + help + Setserial : configuration of serial ports diff --git a/buildroot/package/setserial/setserial.hash b/buildroot/package/setserial/setserial.hash new file mode 100644 index 0000000..ce3b369 --- /dev/null +++ b/buildroot/package/setserial/setserial.hash @@ -0,0 +1,3 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/s/setserial/setserial_2.17-45.3.dsc +sha256 7e4487d320ac31558563424189435d396ddf77953bb23111a17a3d1487b5794a setserial_2.17.orig.tar.gz +sha256 33db87e8a86cf12b7c97efca9e056865e71358e8cfeb3931118b2647ce1eecc6 setserial_2.17-45.3.diff.gz diff --git a/buildroot/package/setserial/setserial.mk b/buildroot/package/setserial/setserial.mk new file mode 100644 index 0000000..66ca59d --- /dev/null +++ b/buildroot/package/setserial/setserial.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# setserial +# +################################################################################ + +SETSERIAL_VERSION = 2.17 +SETSERIAL_PATCH = setserial_2.17-45.3.diff.gz +SETSERIAL_SOURCE = setserial_$(SETSERIAL_VERSION).orig.tar.gz +SETSERIAL_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/s/setserial +SETSERIAL_LICENSE = GPL-2.0 +SETSERIAL_LICENSE_FILES = debian/copyright +# make all also builds setserial.cat which needs nroff +SETSERIAL_MAKE_OPTS = setserial + +define SETSERIAL_APPLY_DEBIAN_PATCHES + # Touching gorhack.h is needed for the Debian patch 18 to work + if [ -d $(@D)/debian/patches ]; then \ + touch $(@D)/gorhack.h; \ + rm $(@D)/debian/patches/01_makefile.dpatch; \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches *.dpatch; \ + fi +endef + +SETSERIAL_POST_PATCH_HOOKS += SETSERIAL_APPLY_DEBIAN_PATCHES + +$(eval $(autotools-package)) diff --git a/buildroot/package/sg3_utils/0001-support-uclinux-as-a-linux.patch b/buildroot/package/sg3_utils/0001-support-uclinux-as-a-linux.patch new file mode 100644 index 0000000..d9106cd --- /dev/null +++ b/buildroot/package/sg3_utils/0001-support-uclinux-as-a-linux.patch @@ -0,0 +1,16 @@ +Recognise uclinux as a linux + +Signed-off-by: "Yann E. MORIN" + +diff -durN sg3_utils-1.42.orig/configure.ac sg3_utils-1.42/configure.ac +--- sg3_utils-1.42.orig/configure.ac 2015-10-21 01:10:59.000000000 +0200 ++++ sg3_utils-1.42/configure.ac 2016-08-14 19:30:37.841766149 +0200 +@@ -71,7 +71,7 @@ + + # Define platform-specific symbol. + AM_CONDITIONAL(OS_FREEBSD, [echo $host_os | grep 'freebsd' > /dev/null]) +-AM_CONDITIONAL(OS_LINUX, [echo $host_os | grep '^linux' > /dev/null]) ++AM_CONDITIONAL(OS_LINUX, [echo $host_os | grep -E '^(uc)?linux' > /dev/null]) + AM_CONDITIONAL(OS_OSF, [echo $host_os | grep '^osf' > /dev/null]) + AM_CONDITIONAL(OS_SOLARIS, [echo $host_os | grep '^solaris' > /dev/null]) + AM_CONDITIONAL(OS_WIN32_MINGW, [echo $host_os | grep '^mingw' > /dev/null]) diff --git a/buildroot/package/sg3_utils/Config.in b/buildroot/package/sg3_utils/Config.in new file mode 100644 index 0000000..4b74eda --- /dev/null +++ b/buildroot/package/sg3_utils/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_SG3_UTILS + bool "sg3-utils" + depends on !BR2_bfin # symbol prefixing problems + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Low level utilities for devices that use a SCSI command set. + This option install only libsgutils2 library not programs. + + http://sg.danny.cz/sg/sg3_utils.html + +if BR2_PACKAGE_SG3_UTILS + +config BR2_PACKAGE_SG3_UTILS_PROGS + bool "install programs" + +endif + +comment "sg3-utils needs a toolchain w/ threads" + depends on !BR2_bfin + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/sg3_utils/sg3_utils.hash b/buildroot/package/sg3_utils/sg3_utils.hash new file mode 100644 index 0000000..a884063 --- /dev/null +++ b/buildroot/package/sg3_utils/sg3_utils.hash @@ -0,0 +1,2 @@ +# Locally calculated from download (no sig, hash) +sha256 97aeed65894feb2add896b4adfa4cf343966c8a61c7d206795ed0507640ee7b9 sg3_utils-1.42.tar.xz diff --git a/buildroot/package/sg3_utils/sg3_utils.mk b/buildroot/package/sg3_utils/sg3_utils.mk new file mode 100644 index 0000000..88827f3 --- /dev/null +++ b/buildroot/package/sg3_utils/sg3_utils.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# sg3_utils +# +################################################################################ + +SG3_UTILS_VERSION = 1.42 +SG3_UTILS_SOURCE = sg3_utils-$(SG3_UTILS_VERSION).tar.xz +SG3_UTILS_SITE = http://sg.danny.cz/sg/p +SG3_UTILS_LICENSE = BSD-3-Clause (library) +# Some utils progs are GPL-2.0+ licensed while others are BSD-3-Clause +ifeq ($(BR2_PACKAGE_SG3_UTILS_PROGS),y) +SG3_UTILS_LICENSE := $(SG3_UTILS_LICENSE), GPL-2.0+ (programs), BSD-3-Clause (programs) +endif +SG3_UTILS_LICENSE_FILES = COPYING BSD_LICENSE + +# Patching configure.ac +SG3_UTILS_AUTORECONF = YES + +# install the libsgutils2 library +SG3_UTILS_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_SG3_UTILS_PROGS),) +define SG3_UTILS_REMOVE_PROGS + for prog in \ + compare_and_write copy_results dd decode_sense \ + emc_trespass format get_config \ + get_lba_status ident inq logs luns map26 \ + map sgm_dd modes opcodes sgp_dd persist prevent \ + raw rbuf rdac read readcap read_block_limits \ + read_attr read_buffer read_long reassign referrals \ + rep_zones requests reset reset_wp rmsn rtpg safte sanitize \ + sat_identify sat_phy_event sat_read_gplog sat_set_features \ + scan senddiag ses ses_microcode start stpg sync test_rwbuf \ + timestamp turs unmap verify vpd write_buffer write_long \ + write_same write_verify wr_mode xcopy zone; do \ + $(RM) $(TARGET_DIR)/usr/bin/sg_$${prog} ; \ + done + for prog in \ + logging_level mandat readcap ready satl start stop \ + temperature; do \ + $(RM) $(TARGET_DIR)/usr/bin/scsi_$${prog} ; \ + done + for prog in \ + sginfo sgm_dd sgp_dd; do \ + $(RM) $(TARGET_DIR)/usr/bin/$${prog}; \ + done +endef + +SG3_UTILS_POST_INSTALL_TARGET_HOOKS += SG3_UTILS_REMOVE_PROGS +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/shairport-sync/Config.in b/buildroot/package/shairport-sync/Config.in new file mode 100644 index 0000000..5df4c19 --- /dev/null +++ b/buildroot/package/shairport-sync/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_SHAIRPORT_SYNC + bool "shairport-sync" + depends on BR2_USE_MMU # libdaemon + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_LIBCONFIG + select BR2_PACKAGE_LIBDAEMON + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_MBEDTLS + select BR2_PACKAGE_POPT + help + Shairport Sync emulates an AirPort Express for the purpose + of streaming audio from iTunes, iPods, iPhones, iPads and + AppleTVs. Audio played by a Shairport Sync-powered device + stays in synchrony with the source and thus with other + devices that are playing the same source + synchronously. Thus, for example, synchronised multi-room + audio is possible without difficulty. + + https://github.com/mikebrady/shairport-sync + +if BR2_PACKAGE_SHAIRPORT_SYNC + +config BR2_PACKAGE_SHAIRPORT_SYNC_LIBSOXR + bool "libsoxr support" + select BR2_PACKAGE_LIBSOXR + help + Enable support for libsoxr, the SoX Resampler library. + + Briefly, Shairport Sync keeps in step with the audio source + by deleting or inserting frames of audio into the stream as + needed. This "interpolation" is normally inaudible, but it + can be heard in some circumstances. Libsoxr allows this + interpolation to be done much more smoothly and subtly. + +endif + +comment "shairport-sync needs a toolchain w/ C++, NPTL" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/shairport-sync/S99shairport-sync b/buildroot/package/shairport-sync/S99shairport-sync new file mode 100644 index 0000000..5443ed1 --- /dev/null +++ b/buildroot/package/shairport-sync/S99shairport-sync @@ -0,0 +1,25 @@ +#! /bin/sh + +# Additional options that are passed to Shairport Sync +OPTIONS="-d" + +case "$1" in + start) + printf "Starting shairport-sync: " + start-stop-daemon -S -q -p /var/run/shairport-sync.pid --exec /usr/bin/shairport-sync -- $OPTIONS + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping shairport-sync: " + start-stop-daemon -K -q -p /var/run/shairport-sync.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac diff --git a/buildroot/package/shairport-sync/shairport-sync.hash b/buildroot/package/shairport-sync/shairport-sync.hash new file mode 100644 index 0000000..e0eea4c --- /dev/null +++ b/buildroot/package/shairport-sync/shairport-sync.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 90555f1a5e05bd777741147d5c0104543d0f26d4f95b9bfd44143c818a6f50f1 shairport-sync-3.1.6.tar.gz diff --git a/buildroot/package/shairport-sync/shairport-sync.mk b/buildroot/package/shairport-sync/shairport-sync.mk new file mode 100644 index 0000000..53ebcc5 --- /dev/null +++ b/buildroot/package/shairport-sync/shairport-sync.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# shairport-sync +# +################################################################################ + +SHAIRPORT_SYNC_VERSION = 3.1.6 +SHAIRPORT_SYNC_SITE = $(call github,mikebrady,shairport-sync,$(SHAIRPORT_SYNC_VERSION)) + +SHAIRPORT_SYNC_LICENSE = MIT, BSD-3-Clause +SHAIRPORT_SYNC_LICENSE_FILES = LICENSES +SHAIRPORT_SYNC_DEPENDENCIES = alsa-lib libconfig libdaemon popt host-pkgconf + +# git clone, no configure +SHAIRPORT_SYNC_AUTORECONF = YES + +SHAIRPORT_SYNC_CONF_OPTS = --with-alsa \ + --with-metadata \ + --with-pipe \ + --with-stdout + +SHAIRPORT_SYNC_CONF_ENV += LIBS="$(SHAIRPORT_SYNC_CONF_LIBS)" + +# Avahi or tinysvcmdns (shaiport-sync bundles its own version of tinysvcmdns). +# Avahi support needs libavahi-client, which is built by avahi if avahi-daemon +# and dbus is selected. Since there is no BR2_PACKAGE_LIBAVAHI_CLIENT config +# option yet, use the avahi-daemon and dbus congig symbols to check for +# libavahi-client. +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy) +SHAIRPORT_SYNC_DEPENDENCIES += avahi +SHAIRPORT_SYNC_CONF_OPTS += --with-avahi +else +SHAIRPORT_SYNC_CONF_OPTS += --with-tinysvcmdns +endif + +# OpenSSL or mbedTLS +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SHAIRPORT_SYNC_DEPENDENCIES += openssl +SHAIRPORT_SYNC_CONF_OPTS += --with-ssl=openssl +else +SHAIRPORT_SYNC_DEPENDENCIES += mbedtls +SHAIRPORT_SYNC_CONF_OPTS += --with-ssl=mbedtls +SHAIRPORT_SYNC_CONF_LIBS += -lmbedx509 -lmbedcrypto +ifeq ($(BR2_PACKAGE_MBEDTLS_COMPRESSION),y) +SHAIRPORT_SYNC_CONF_LIBS += -lz +endif +endif + +ifeq ($(BR2_PACKAGE_SHAIRPORT_SYNC_LIBSOXR),y) +SHAIRPORT_SYNC_DEPENDENCIES += libsoxr +SHAIRPORT_SYNC_CONF_OPTS += --with-soxr +endif + +define SHAIRPORT_SYNC_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/shairport-sync \ + $(TARGET_DIR)/usr/bin/shairport-sync + $(INSTALL) -D -m 0644 $(@D)/scripts/shairport-sync.conf \ + $(TARGET_DIR)/etc/shairport-sync.conf +endef + +define SHAIRPORT_SYNC_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/shairport-sync/S99shairport-sync \ + $(TARGET_DIR)/etc/init.d/S99shairport-sync +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/shapelib/Config.in b/buildroot/package/shapelib/Config.in new file mode 100644 index 0000000..553d348 --- /dev/null +++ b/buildroot/package/shapelib/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_SHAPELIB + bool "shapelib" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_PROJ + help + The Shapefile C Library provides the ability to write simple + C programs for reading, writing and updating (to a limited + extent) ESRI Shapefiles, and the associated attribute file + (.dbf). + + http://shapelib.maptools.org/ + +comment "shapelib needs a toolchain w/ C++, threads" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/shapelib/shapelib.hash b/buildroot/package/shapelib/shapelib.hash new file mode 100644 index 0000000..6abddb2 --- /dev/null +++ b/buildroot/package/shapelib/shapelib.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 a4c94817365761a3a4c21bb3ca1c680a6bdfd3edd61df9fdd291d3e7645923b3 shapelib-1.4.1.tar.gz +sha256 7eb803a70990017a1c4e38a8342d7413c5dfeec3ed1ac407e15ae2c274e560ff COPYING +sha256 a638278f7f1cb7d0cdc73b47a6c87261b882e356a8e79922e90d44d7ef1dd2c7 web/license.html diff --git a/buildroot/package/shapelib/shapelib.mk b/buildroot/package/shapelib/shapelib.mk new file mode 100644 index 0000000..b76c3bb --- /dev/null +++ b/buildroot/package/shapelib/shapelib.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# shapelib +# +################################################################################ + +SHAPELIB_VERSION = 1.4.1 +SHAPELIB_SITE = http://download.osgeo.org/shapelib +SHAPELIB_LICENSE = MIT or LGPL-2.0 +SHAPELIB_LICENSE_FILES = web/license.html COPYING +SHAPELIB_INSTALL_STAGING = YES +SHAPELIB_DEPENDENCIES = proj + +$(eval $(autotools-package)) diff --git a/buildroot/package/shared-mime-info/0001-Remove-incorrect-dependency-from-install-data-hook.patch b/buildroot/package/shared-mime-info/0001-Remove-incorrect-dependency-from-install-data-hook.patch new file mode 100644 index 0000000..a0d3fb0 --- /dev/null +++ b/buildroot/package/shared-mime-info/0001-Remove-incorrect-dependency-from-install-data-hook.patch @@ -0,0 +1,45 @@ +From 3bcb00e27ab09c433fdfecace0d48a6a7ed55ea8 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 22 Apr 2016 23:14:32 +0200 +Subject: [PATCH] Remove incorrect dependency from install-data-hook + +Having install-binPROGRAMS as a dependency of install-data-hook is not +correct, as it causes the installation of programs to be executed +twice, and those two installations are racing with each other, causing +random installation failures. + +In addition, this dependency is not needed: the install-data-hook +calls the update-mime-database program in one of two ways: + + - When cross-compiling, using the program pointed by + UPDATE_MIME_DATABASE, which is already built, and is not installed + by install-binPROGRAMS. + + - When compiling natively, suing the update-mime-database from the + build directory, so there is no need to depend on + install-binPROGRAMS. + +This patch is similar to the patch used by the Yocto Project at +http://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-support/shared-mime-info/shared-mime-info/install-data-hook.patch. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 6fc4f73..c318dc3 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -52,7 +52,7 @@ else + update_mime_database="$(top_builddir)/update-mime-database$(EXEEXT)" + endif + +-install-data-hook: install-binPROGRAMS ++install-data-hook: + if ENABLE_UPDATE_MIMEDB + $(update_mime_database) -V "$(DESTDIR)$(datadir)/mime" + endif +-- +2.6.4 + diff --git a/buildroot/package/shared-mime-info/Config.in b/buildroot/package/shared-mime-info/Config.in new file mode 100644 index 0000000..514044b --- /dev/null +++ b/buildroot/package/shared-mime-info/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_SHARED_MIME_INFO + bool "shared-mime-info" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBXML2 + help + The shared-mime-info package contains the core + database of common types and the update-mime-database + command used to extend it. + + https://freedesktop.org/wiki/Software/shared-mime-info/ + +comment "shared-mime-info needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/shared-mime-info/shared-mime-info.hash b/buildroot/package/shared-mime-info/shared-mime-info.hash new file mode 100644 index 0000000..cf6c8f3 --- /dev/null +++ b/buildroot/package/shared-mime-info/shared-mime-info.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2af55ef1a0319805b74ab40d331a3962c905477d76c086f49e34dc96363589e9 shared-mime-info-1.8.tar.xz diff --git a/buildroot/package/shared-mime-info/shared-mime-info.mk b/buildroot/package/shared-mime-info/shared-mime-info.mk new file mode 100644 index 0000000..e68d631 --- /dev/null +++ b/buildroot/package/shared-mime-info/shared-mime-info.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# shared-mime-info +# +################################################################################ + +SHARED_MIME_INFO_VERSION = 1.8 +SHARED_MIME_INFO_SOURCE = shared-mime-info-$(SHARED_MIME_INFO_VERSION).tar.xz +SHARED_MIME_INFO_SITE = https://people.freedesktop.org/~hadess +SHARED_MIME_INFO_INSTALL_STAGING = YES +# 0001-Remove-incorrect-dependency-from-install-data-hook.patch +SHARED_MIME_INFO_AUTORECONF = YES +SHARED_MIME_INFO_CONF_ENV = XMLLINT=$(HOST_DIR)/bin/xmllint +SHARED_MIME_INFO_DEPENDENCIES = host-shared-mime-info libxml2 libglib2 +SHARED_MIME_INFO_CONF_OPTS = \ + --disable-update-mimedb \ + --disable-default-make-check +HOST_SHARED_MIME_INFO_CONF_OPTS = \ + --disable-update-mimedb \ + --disable-default-make-check +SHARED_MIME_INFO_LICENSE = GPL-2.0 +SHARED_MIME_INFO_LICENSE_FILES = COPYING + +HOST_SHARED_MIME_INFO_DEPENDENCIES = \ + host-pkgconf host-intltool host-libxml2 host-libglib2 + +define SHARED_MIME_INFO_INSTALL_TARGET_CMDS + $(HOST_MAKE_ENV) $(SHARED_MIME_INFO_HOST_BINARY) $(STAGING_DIR)/usr/share/mime + $(INSTALL) -D $(STAGING_DIR)/usr/share/mime/mime.cache $(TARGET_DIR)/usr/share/mime/mime.cache +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# shared-mime-info for the host +SHARED_MIME_INFO_HOST_BINARY = $(HOST_DIR)/bin/update-mime-database diff --git a/buildroot/package/shellinabox/0001-Makefile-disable-always-building-statically.patch b/buildroot/package/shellinabox/0001-Makefile-disable-always-building-statically.patch new file mode 100644 index 0000000..2f2097e --- /dev/null +++ b/buildroot/package/shellinabox/0001-Makefile-disable-always-building-statically.patch @@ -0,0 +1,26 @@ +From c060e6f06a81ffa400266a6d0bfc58511265a16f Mon Sep 17 00:00:00 2001 +From: Olivier Singla +Date: Thu, 4 Aug 2016 21:23:41 +0200 +Subject: [PATCH] Makefile: disable always building statically + +Signed-off-by: Olivier Singla +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 7b8e7ab..5c4c71e 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -126,7 +126,7 @@ BUILT_SOURCES = shellinabox/beep.h \ + + shellinaboxd_LDADD = liblogging.la \ + libhttp.la +-shellinaboxd_LDFLAGS = -static ++shellinaboxd_LDFLAGS = + ## Added this for compatibility with older versions of autoconf/automake + docdir = ${datadir}/doc/${PACKAGE} + +-- +2.7.4 + diff --git a/buildroot/package/shellinabox/0002-launcher.c-include-sys-ttydefaults.h.patch b/buildroot/package/shellinabox/0002-launcher.c-include-sys-ttydefaults.h.patch new file mode 100644 index 0000000..caa5456 --- /dev/null +++ b/buildroot/package/shellinabox/0002-launcher.c-include-sys-ttydefaults.h.patch @@ -0,0 +1,27 @@ +From c8d9df500b1ca83ad6da9b6055549adaba6ee0d3 Mon Sep 17 00:00:00 2001 +From: Olivier Singla +Date: Thu, 4 Aug 2016 22:05:08 +0200 +Subject: [PATCH] launcher.c: include + +This include is needed to get the definition of TTYDEF_*. + +Signed-off-by: Olivier Singla +--- + shellinabox/launcher.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/shellinabox/launcher.c b/shellinabox/launcher.c +index 2bac171..c8ba6cb 100644 +--- a/shellinabox/launcher.c ++++ b/shellinabox/launcher.c +@@ -66,6 +66,7 @@ + #include + #include + #include ++#include + #include + #include + +-- +2.7.4 + diff --git a/buildroot/package/shellinabox/Config.in b/buildroot/package/shellinabox/Config.in new file mode 100644 index 0000000..63a298d --- /dev/null +++ b/buildroot/package/shellinabox/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_SHELLINABOX + bool "shellinabox" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlfcn.h + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + Shell In A Box implements a web server that can export + arbitrary command line tools to a web based terminal + emulator. This emulator is accessible to any JavaScript and + CSS enabled web browser and does not require any additional + browser plugins. + + https://github.com/shellinabox/shellinabox + +comment "shellinabox needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/shellinabox/shellinabox.hash b/buildroot/package/shellinabox/shellinabox.hash new file mode 100644 index 0000000..4bc1103 --- /dev/null +++ b/buildroot/package/shellinabox/shellinabox.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 d25ba9f72f04471fc1a8a564c65ef466c4553280ff3eeb365ed9c897d05ed2da shellinabox-v2.19.tar.gz diff --git a/buildroot/package/shellinabox/shellinabox.mk b/buildroot/package/shellinabox/shellinabox.mk new file mode 100644 index 0000000..1db62e6 --- /dev/null +++ b/buildroot/package/shellinabox/shellinabox.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# shellinabox +# +################################################################################ + +SHELLINABOX_VERSION = v2.19 +SHELLINABOX_SITE = $(call github,shellinabox,shellinabox,$(SHELLINABOX_VERSION)) +SHELLINABOX_LICENSE = GPL-2.0 with OpenSSL exception +SHELLINABOX_LICENSE_FILES = COPYING GPL-2 + +# Fetching from Github, and patching Makefile.am, so we need to autoreconf +SHELLINABOX_AUTORECONF = YES + +# The OpenSSL support is supposed to be optional, but in practice, +# with OpenSSL disabled, it fails to build. See +# https://github.com/shellinabox/shellinabox/issues/385. +SHELLINABOX_DEPENDENCIES = zlib openssl +SHELLINABOX_CONF_OPTS = \ + --disable-runtime-loading \ + --enable-ssl + +# musl's implementation of utmpx is a dummy one, and some aspects of +# it cause build failures in shellinabox +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +SHELLINABOX_CONF_ENV += ac_cv_header_utmpx_h=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sigrok-cli/Config.in b/buildroot/package/sigrok-cli/Config.in new file mode 100644 index 0000000..75bd8c6 --- /dev/null +++ b/buildroot/package/sigrok-cli/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_SIGROK_CLI + bool "sigrok-cli" + # libsigrok->libglib2: + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + # libsigrok->libzip + depends on !BR2_STATIC_LIBS + # libsigrok + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + select BR2_PACKAGE_LIBSIGROK + help + Sigrok-cli is a command-line frontend for the sigrok + software suite. + + http://sigrok.org/wiki/Sigrok-cli + +comment "sigrok-cli needs a toolchain w/ wchar, threads, dynamic library, gcc >= 4.7" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || BR2_STATIC_LIBS diff --git a/buildroot/package/sigrok-cli/sigrok-cli.hash b/buildroot/package/sigrok-cli/sigrok-cli.hash new file mode 100644 index 0000000..42bbdc1 --- /dev/null +++ b/buildroot/package/sigrok-cli/sigrok-cli.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 5669d968c2de3dfc6adfda76e83789b6ba76368407c832438cef5e7099a65e1c sigrok-cli-0.7.0.tar.gz diff --git a/buildroot/package/sigrok-cli/sigrok-cli.mk b/buildroot/package/sigrok-cli/sigrok-cli.mk new file mode 100644 index 0000000..1e017d6 --- /dev/null +++ b/buildroot/package/sigrok-cli/sigrok-cli.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# sigrok-cli +# +################################################################################ + +SIGROK_CLI_VERSION = 0.7.0 +SIGROK_CLI_SITE = http://sigrok.org/download/source/sigrok-cli +SIGROK_CLI_LICENSE = GPL-3.0+ +SIGROK_CLI_LICENSE_FILES = COPYING +SIGROK_CLI_DEPENDENCIES = host-pkgconf libsigrok + +ifeq ($(BR2_PACKAGE_LIBSIGROKDECODE),y) +SIGROK_CLI_CONF_OPTS += --with-libsigrokdecode +SIGROK_CLI_DEPENDENCIES += libsigrokdecode +else +SIGROK_CLI_CONF_OPTS += --with-libsigrokdecode=NO +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sispmctl/0001-configure-add-pkg-config-support.patch b/buildroot/package/sispmctl/0001-configure-add-pkg-config-support.patch new file mode 100644 index 0000000..9466080 --- /dev/null +++ b/buildroot/package/sispmctl/0001-configure-add-pkg-config-support.patch @@ -0,0 +1,70 @@ +From 8002a7e6fa965dfd304d098fbc64b0f1a6e3b465 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 24 Aug 2014 22:34:29 +0200 +Subject: [PATCH 1/1] configure: add pkg-config support + +The static linking doesn't works with libusb-compat when using libusb-config. +Also the CFLAGS initialization with libusb-config --cflags is comented out. + +Based on libftdi's patch, add the support for pkg-config to link sispmctl +correctly. + +This allow to add correct include directory to CFLAGS +(Add -I$(STAGING_DIR)/usr/include and -I$(STAGING_DIR)/usr/include/libusb-1.0) +Also add needed libraries during static linking (-lusb -lusb-1.0 and -pthread) + +Signed-off-by: Romain Naour +--- + configure.in | 36 +++++++++++------------------------- + 1 file changed, 11 insertions(+), 25 deletions(-) + +diff --git a/configure.in b/configure.in +index 08d39ea..65d0c1d 100644 +--- a/configure.in ++++ b/configure.in +@@ -23,31 +23,17 @@ AC_SUBST(WEBDIR) + AC_ARG_WITH(bindaddr,[ --with-bindaddr=IP bind listening socket to IP], [BINDADDR="$withval"]) + AC_SUBST(BINDADDR) + +- +-# Checks for libraries. +-dnl check for libusb-config +-AC_PATH_PROG(HAVELIBUSB, libusb-config, $PATH) +- +-if test -e "$HAVELIBUSB"; then +- dnl LIBUSB_CFLAGS=`$HAVELIBUSB --cflags` +- LIBUSB_LIBS=`$HAVELIBUSB --libs` +- CFLAGS="$CFLAGS $LIBUSB_CFLAGS" +- LIBS="$LIBS $LIBUSB_LIBS" +-else +- AC_MSG_ERROR([*** libusb-config not found. You need a working libusb installation. Version >=0.1.7]) +-fi +- +-dnl check for version of libusb +-AC_MSG_CHECKING([if libusb version is >= 0.1.9]) +-libusb_version_needed="1009" +-libusb_version=`$HAVELIBUSB --version | sed -e "s/libusb //" | awk 'BEGIN { FS = "."; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'` +- +-if test $libusb_version -lt $libusb_version_needed; then +- AC_MSG_RESULT(no) +- AC_MSG_ERROR([*** libusb is too old ($libusb_version). You need a libusb installation newer or equal to 0.1.9.]) +-else +- AC_MSG_RESULT(yes) +-fi ++dnl check for libusb ++PKG_CHECK_MODULES(LIBUSB, libusb >= 0.1.11) ++CFLAGS="$CFLAGS $LIBUSB_CFLAGS" ++LIBS="$LIBS $LIBUSB_LIBS" ++ ++dnl Check for recent pkg-config which supports Requires.private ++case `$PKG_CONFIG --version` in ++0.?|0.1[0-7]) PKGCONFIG_REQUIRES="Requires"; ;; ++*) PKGCONFIG_REQUIRES="Requires.private"; ;; ++esac ++AC_SUBST(PKGCONFIG_REQUIRES) + + # Checks for header files. + AC_HEADER_STDC +-- +1.9.3 + diff --git a/buildroot/package/sispmctl/Config.in b/buildroot/package/sispmctl/Config.in new file mode 100644 index 0000000..6066dc0 --- /dev/null +++ b/buildroot/package/sispmctl/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_SISPMCTL + bool "sispmctl" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_LIBUSB_COMPAT + help + sispmctl is an application enabling the use of the GEMBIRD + SiS-PM and mSiS(sispm) USB-controlled power-outlet device + under Linux. Note that the device is also sold under + different Names, i.e. as "IntelliPlug" in Germany. + + http://sispmctl.sourceforge.net/ + +comment "sispmctl needs a toolchain w/ threads, wchar" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + depends on BR2_USE_MMU diff --git a/buildroot/package/sispmctl/sispmctl.hash b/buildroot/package/sispmctl/sispmctl.hash new file mode 100644 index 0000000..9f34b43 --- /dev/null +++ b/buildroot/package/sispmctl/sispmctl.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 e9a99cc81ef0a93f3484e5093efd14d93cc967221fcd22c151f0bea32eb91da7 sispmctl-3.1.tar.gz diff --git a/buildroot/package/sispmctl/sispmctl.mk b/buildroot/package/sispmctl/sispmctl.mk new file mode 100644 index 0000000..85c0338 --- /dev/null +++ b/buildroot/package/sispmctl/sispmctl.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# sispmctl +# +################################################################################ + +SISPMCTL_VERSION = 3.1 +SISPMCTL_SITE = http://downloads.sourceforge.net/project/sispmctl/sispmctl/sispmctl-$(SISPMCTL_VERSION) +SISPMCTL_LICENSE = GPL-2.0+ +SISPMCTL_LICENSE_FILES = LICENCE +SISPMCTL_DEPENDENCIES = libusb-compat + +SISPMCTL_CONF_OPTS = --enable-webless + +# We're patching configure.in +SISPMCTL_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/skalibs/0001-No-runtime-tests-for-endianness.patch b/buildroot/package/skalibs/0001-No-runtime-tests-for-endianness.patch new file mode 100644 index 0000000..eb70b4e --- /dev/null +++ b/buildroot/package/skalibs/0001-No-runtime-tests-for-endianness.patch @@ -0,0 +1,96 @@ +From d3920dce139734e00bbe4447a16ef24dfe4d704a Mon Sep 17 00:00:00 2001 +From: Eric Le Bihan +Date: Tue, 10 Oct 2017 19:51:02 +0200 +Subject: [PATCH] No runtime tests for endianness + +Replace build and execution of runtime test programs for determining +the endianness of the target with compile time test programs. + +This improves support for cross-compilation. + +Signed-off-by: Eric Le Bihan +--- + configure | 13 ++++++++++--- + src/sysdeps/trybigendian.c | 16 ++++++++++++++++ + src/sysdeps/trylittleendian.c | 19 +++++++++++++++++++ + 3 files changed, 45 insertions(+), 3 deletions(-) + create mode 100644 src/sysdeps/trybigendian.c + create mode 100644 src/sysdeps/trylittleendian.c + +diff --git a/configure b/configure +index f34dcd0..f2a77f3 100755 +--- a/configure ++++ b/configure +@@ -478,12 +478,19 @@ EOF + exec 3>&- + + echo "Checking system endianness..." +- $CC_AUTO $CPPFLAGS_AUTO $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -o tryendianness src/sysdeps/tryendianness.c +- endianness=$(./tryendianness) || fail "$0: unable to determine endianness" ++ if $CC_AUTO $CPPFLAGS_AUTO $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -o trybigendian src/sysdeps/trybigendian.c 2>/dev/null; then ++ endianness=big ++ else ++ if $CC_AUTO $CPPFLAGS_AUTO $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -o trylittleendian src/sysdeps/trylittleendian.c 2>/dev/null; then ++ endianness=little ++ else ++ fail "$0: unable to determine endianness" ++ fi ++ fi + echo "endianness: $endianness" >> $sysdeps/sysdeps + echo "#define ${package_macro_name}_ENDIANNESS \"$endianness\"" >> $sysdeps/sysdeps.h + echo " ... $endianness" +- rm -f tryendianness ++ rm -f trybigendian trylittleendian + + trytypes + choose clr accept4 ACCEPT4 'accept4()' +diff --git a/src/sysdeps/trybigendian.c b/src/sysdeps/trybigendian.c +new file mode 100644 +index 0000000..d857572 +--- /dev/null ++++ b/src/sysdeps/trybigendian.c +@@ -0,0 +1,16 @@ ++#if defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN) || \ ++ defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || \ ++ defined(__BIG_ENDIAN) || \ ++ defined(__ARMEB__) || \ ++ defined(__THUMBEB__) || \ ++ defined(__AARCH64EB__) || \ ++ defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) ++#define YEAH ++#else ++#error "not big endian" ++#endif ++ ++int main(void) ++{ ++ return 0; ++} +diff --git a/src/sysdeps/trylittleendian.c b/src/sysdeps/trylittleendian.c +new file mode 100644 +index 0000000..68b93c1 +--- /dev/null ++++ b/src/sysdeps/trylittleendian.c +@@ -0,0 +1,19 @@ ++#if defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN) || \ ++ defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || \ ++ defined(__LITTLE_ENDIAN) || \ ++ defined(__ARMEL__) || \ ++ defined(__THUMBEL__) || \ ++ defined(__AARCH64EL__) || \ ++ defined(__i386) || defined(__i386__) || \ ++ defined(__amd64) || defined(__amd64__) || \ ++ defined(__x86_64) || defined(__x86_64__) || \ ++ defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) ++#define YEAH ++#else ++#error "not little endian" ++#endif ++ ++int main(void) ++{ ++ return 0; ++} +-- +2.13.6 + diff --git a/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch b/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch new file mode 100644 index 0000000..3ee0cdd --- /dev/null +++ b/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch @@ -0,0 +1,109 @@ +From df3a3e708653ca1cdb0eda77bbda5cb8de177571 Mon Sep 17 00:00:00 2001 +From: "Van Bemten, Lionel (Nokia - BE/Antwerp)" +Date: Tue, 10 Oct 2017 19:51:18 +0200 +Subject: [PATCH] No runtime tests for type sizes + +Replace build and execution of runtime test programs for determining +some type sizes of the target with compile time test programs. + +This improves support for cross-compilation. + +Signed-off-by: "Van Bemten, Lionel (Nokia - BE/Antwerp)" +Signed-off-by: Eric Le Bihan +--- + configure | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 61 insertions(+), 16 deletions(-) + +diff --git a/configure b/configure +index f2a77f3..8348b1f 100755 +--- a/configure ++++ b/configure +@@ -154,25 +154,70 @@ choose () { + fi + } + ++findtypesize () { ++ typ=$1 ++ abbr=$2 ++ r=false ++ type_size=0 ++ while true; do ++ cat>trysizeof${abbr}.c< ++ ++int main(void) ++{ ++ static int v = 1 / !!((sizeof($typ) == $type_size)); ++ return 0; ++} ++EOF ++ if $CC_AUTO $CPPFLAGS_AUTO $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -o trysizeof${abbr} trysizeof${abbr}.c 2>/dev/null; then ++ r=true ++ break ++ fi ++ type_size=$(expr $type_size + 1) ++ test $type_size -le 16 || break ++ done ++ rm -f trysizeof${abbr} trysizeof${abbr}.c ++ test $r = true || fail "$0: unable to determine size of $typ" ++ caps=$(echo "sizeof${abbr}" | tr a-z A-Z) ++ echo "#define ${package_macro_name}_${caps} $type_size" >> $sysdeps/sysdeps.h ++ echo "sizeof${abbr}: $type_size" >> $sysdeps/sysdeps ++} ++ ++findtypesign () { ++ typ=$1 ++ abbr=$2 ++ caps=$(echo "signed${abbr}" | tr a-z A-Z) ++ cat>trysignof${abbr}.c< ++ ++int main(void) ++{ ++ static int v = 1 / !!(((($typ) -1) < 0)); ++ return 0; ++} ++EOF ++ if $CC_AUTO $CPPFLAGS_AUTO $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -o trysignof${abbr} trysignof${abbr}.c 2>/dev/null; then ++ echo "#define ${package_macro_name}_HASSIGNED${caps}" >> $sysdeps/sysdeps.h ++ echo "#undef ${package_macro_name}_HASUNSIGNED${caps}" >> $sysdeps/sysdeps.h ++ echo "signed${abbr}: yes" >> $sysdeps/sysdeps ++ else ++ echo "#undef ${package_macro_name}_HASSIGNED${caps}" >> $sysdeps/sysdeps.h ++ echo "#define ${package_macro_name}_HASUNSIGNED${caps}" >> $sysdeps/sysdeps.h ++ echo "signed${abbr}: no" >> $sysdeps/sysdeps ++ fi ++ rm -f trysignof${abbr} trysignof${abbr}.c ++} ++ + trytypes () { + echo "Checking size and signedness of standard types..." +- $CC_AUTO $CPPFLAGS_AUTO $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -o output-types src/sysdeps/output-types.c +- ./output-types >> $sysdeps/sysdeps +- ./output-types | grep -F sizeof | while read key value ; do +- caps=$(echo $key | sed s/:\$// | tr a-z A-Z) +- echo "#define ${package_macro_name}_${caps} $value" >> $sysdeps/sysdeps.h ++ for t in "unsigned short" "unsigned int" "unsigned long"; do ++ abbr=$(echo "$t" | sed -e 's/nsigned //') ++ findtypesize "$t" "${abbr}" + done +- ./output-types | grep -F signed | while read key value ; do +- caps=$(echo $key | sed s/:\$// | tr a-z A-Z) +- if test $value = yes ; then +- echo "#define ${package_macro_name}_HASSIGNED${caps}" +- echo "#undef ${package_macro_name}_HASUNSIGNED${caps}" +- else +- echo "#undef ${package_macro_name}_HASSIGNED${caps}" +- echo "#define ${package_macro_name}_HASUNSIGNED${caps}" +- fi >> $sysdeps/sysdeps.h ++ for t in size uid gid pid time dev ino; do ++ findtypesize "${t}_t" "$t" ++ findtypesign "${t}_t" "$t" + done +- rm -f output-types + echo " ... done" + } + +-- +2.13.6 + diff --git a/buildroot/package/skalibs/0003-Make-linker-use-dummy-file-when-testing-libs.patch b/buildroot/package/skalibs/0003-Make-linker-use-dummy-file-when-testing-libs.patch new file mode 100644 index 0000000..0841179 --- /dev/null +++ b/buildroot/package/skalibs/0003-Make-linker-use-dummy-file-when-testing-libs.patch @@ -0,0 +1,44 @@ +From 02ef4599179ead87cc6d154a32acaa6627cbfca2 Mon Sep 17 00:00:00 2001 +From: Eric Le Bihan +Date: Tue, 10 Oct 2017 19:51:34 +0200 +Subject: [PATCH] Make linker use dummy file when testing libs + +For some architectures, like Xtensa or HPPA, ld from binutils requires +the output file to be a regular file, as mentioned in a bug report on +the mailing list [1]. + +So, use a dummy file as output file for ld in trylibs(), instead of +/dev/null. + +[1] https://sourceware.org/bugzilla/show_bug.cgi?id=19526 + +Signed-off-by: Eric Le Bihan +--- + configure | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 8348b1f..62e5981 100755 +--- a/configure ++++ b/configure +@@ -227,7 +227,7 @@ trylibs () { + echo "Checking whether system has $2..." >&3 + shift 2 + if $CC_AUTO $CPPFLAGS_AUTO $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST -c -o try$name.o src/sysdeps/try$name.c 2>/dev/null ; then +- until $CC_AUTO $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -o /dev/null try$name.o $args 2>/dev/null ; do ++ until $CC_AUTO $CPPFLAGS_AUTO $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST -o try$name try$name.o $args 2>/dev/null ; do + if test -z "$*" ; then + rm -f try$name.o + echo +@@ -243,7 +243,7 @@ trylibs () { + else + echo " ... yes, with$args" >&3 + fi +- rm -f try$name.o ++ rm -f try$name.o try$name + return 0 + else + echo +-- +2.13.6 + diff --git a/buildroot/package/skalibs/Config.in b/buildroot/package/skalibs/Config.in new file mode 100644 index 0000000..7802ae3 --- /dev/null +++ b/buildroot/package/skalibs/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SKALIBS + bool "skalibs" + depends on BR2_USE_MMU # fork() + help + skalibs is a package centralizing the FOSS C development + files used for building all software at skarnet.org: + it contains essentially general-purpose libraries. + + http://skarnet.org/software/skalibs/ diff --git a/buildroot/package/skalibs/skalibs.hash b/buildroot/package/skalibs/skalibs.hash new file mode 100644 index 0000000..a65aaad --- /dev/null +++ b/buildroot/package/skalibs/skalibs.hash @@ -0,0 +1,3 @@ +# Locally generated +sha256 8508ca00d4e2355e9ec0ec7f4808e98b349999d6732d2f123ac53b4df5260c81 skalibs-2.6.3.1.tar.gz +sha256 3eadcf980c40da0f257b8292d805ff41e5e5a908c1942315d9a627732e1aa012 COPYING diff --git a/buildroot/package/skalibs/skalibs.mk b/buildroot/package/skalibs/skalibs.mk new file mode 100644 index 0000000..2ce0c33 --- /dev/null +++ b/buildroot/package/skalibs/skalibs.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# skalibs +# +################################################################################ + +SKALIBS_VERSION = 2.6.3.1 +SKALIBS_SITE = http://skarnet.org/software/skalibs +SKALIBS_LICENSE = ISC +SKALIBS_LICENSE_FILES = COPYING +SKALIBS_INSTALL_STAGING = YES + +SKALIBS_CONF_OPTS = \ + --prefix=/usr \ + --with-default-path=/sbin:/usr/sbin:/bin:/usr/bin \ + $(SHARED_STATIC_LIBS_OPTS) + +define SKALIBS_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(SKALIBS_CONF_OPTS)) +endef + +define SKALIBS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define SKALIBS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + rm -rf $(TARGET_DIR)/usr/lib/skalibs +endef + +define SKALIBS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install +endef + +HOST_SKALIBS_CONF_OPTS = \ + --prefix=$(HOST_DIR) \ + --disable-static \ + --enable-shared \ + --disable-allstatic + +define HOST_SKALIBS_CONFIGURE_CMDS + (cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure $(HOST_SKALIBS_CONF_OPTS)) +endef + +define HOST_SKALIBS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_SKALIBS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/skeleton-custom/Config.in b/buildroot/package/skeleton-custom/Config.in new file mode 100644 index 0000000..601c3b2 --- /dev/null +++ b/buildroot/package/skeleton-custom/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SKELETON_CUSTOM + bool + select BR2_PACKAGE_HAS_SKELETON + +config BR2_PACKAGE_PROVIDES_SKELETON + default "skeleton-custom" if BR2_PACKAGE_SKELETON_CUSTOM diff --git a/buildroot/package/skeleton-custom/skeleton-custom.mk b/buildroot/package/skeleton-custom/skeleton-custom.mk new file mode 100644 index 0000000..8c57531 --- /dev/null +++ b/buildroot/package/skeleton-custom/skeleton-custom.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# skeleton-custom +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_CUSTOM_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_CUSTOM_ADD_SKELETON_DEPENDENCY = NO + +SKELETON_CUSTOM_PROVIDES = skeleton + +SKELETON_CUSTOM_INSTALL_STAGING = YES + +SKELETON_CUSTOM_PATH = $(call qstrip,$(BR2_ROOTFS_SKELETON_CUSTOM_PATH)) + +ifeq ($(BR2_PACKAGE_SKELETON_CUSTOM)$(BR_BUILDING),yy) +ifeq ($(SKELETON_CUSTOM_PATH),) +$(error No path specified for the custom skeleton) +endif +endif + +# Extract the inode numbers for all of those directories. In case any is +# a symlink, we want to get the inode of the pointed-to directory, so we +# append '/.' to be sure we get the target directory. Since the symlinks +# can be anyway (/bin -> /usr/bin or /usr/bin -> /bin), we do that for +# all of them. +# +SKELETON_CUSTOM_LIB_INODE = $(shell stat -c '%i' $(SKELETON_CUSTOM_PATH)/lib/. 2>/dev/null) +SKELETON_CUSTOM_BIN_INODE = $(shell stat -c '%i' $(SKELETON_CUSTOM_PATH)/bin/. 2>/dev/null) +SKELETON_CUSTOM_SBIN_INODE = $(shell stat -c '%i' $(SKELETON_CUSTOM_PATH)/sbin/. 2>/dev/null) +SKELETON_CUSTOM_USR_LIB_INODE = $(shell stat -c '%i' $(SKELETON_CUSTOM_PATH)/usr/lib/. 2>/dev/null) +SKELETON_CUSTOM_USR_BIN_INODE = $(shell stat -c '%i' $(SKELETON_CUSTOM_PATH)/usr/bin/. 2>/dev/null) +SKELETON_CUSTOM_USR_SBIN_INODE = $(shell stat -c '%i' $(SKELETON_CUSTOM_PATH)/usr/sbin/. 2>/dev/null) + +# For a merged /usr, ensure that /lib, /bin and /sbin and their /usr +# counterparts are appropriately setup as symlinks ones to the others. +ifeq ($(BR2_ROOTFS_MERGED_USR),y) + +ifneq ($(SKELETON_CUSTOM_LIB_INODE),$(SKELETON_CUSTOM_USR_LIB_INODE)) +SKELETON_CUSTOM_NOT_MERGED_USR_DIRS += /lib +endif +ifneq ($(SKELETON_CUSTOM_BIN_INODE),$(SKELETON_CUSTOM_USR_BIN_INODE)) +SKELETON_CUSTOM_NOT_MERGED_USR_DIRS += /bin +endif +ifneq ($(SKELETON_CUSTOM_SBIN_INODE),$(SKELETON_CUSTOM_USR_SBIN_INODE)) +SKELETON_CUSTOM_NOT_MERGED_USR_DIRS += /sbin +endif + +endif # merged /usr + +ifeq ($(BR2_PACKAGE_SKELETON_CUSTOM)$(BR_BUILDING),yy) +ifneq ($(SKELETON_CUSTOM_NOT_MERGED_USR_DIRS),) +$(error The custom skeleton in $(SKELETON_CUSTOM_PATH) is not \ + using a merged /usr for the following directories: \ + $(SKELETON_CUSTOM_NOT_MERGED_USR_DIRS)) +endif +endif + +# The target-dir-warning file and the lib{32,64} symlinks are the only +# things we customise in the custom skeleton. +define SKELETON_CUSTOM_INSTALL_TARGET_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_CUSTOM_PATH),$(TARGET_DIR)) + $(call SYSTEM_LIB_SYMLINK,$(TARGET_DIR)) + $(INSTALL) -m 0644 support/misc/target-dir-warning.txt \ + $(TARGET_DIR_WARNING_FILE) +endef + +# For the staging dir, we don't really care what we install, but we +# need the /lib and /usr/lib appropriately setup. Since we ensure, +# above, that they are correct in the skeleton, we can simply copy the +# skeleton to staging. +define SKELETON_CUSTOM_INSTALL_STAGING_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_CUSTOM_PATH),$(STAGING_DIR)) + $(call SYSTEM_LIB_SYMLINK,$(STAGING_DIR)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/skeleton-init-common/Config.in b/buildroot/package/skeleton-init-common/Config.in new file mode 100644 index 0000000..0fd95de --- /dev/null +++ b/buildroot/package/skeleton-init-common/Config.in @@ -0,0 +1,2 @@ +config BR2_PACKAGE_SKELETON_INIT_COMMON + bool diff --git a/buildroot/package/skeleton-init-common/skeleton-init-common.mk b/buildroot/package/skeleton-init-common/skeleton-init-common.mk new file mode 100644 index 0000000..8228a81 --- /dev/null +++ b/buildroot/package/skeleton-init-common/skeleton-init-common.mk @@ -0,0 +1,90 @@ +################################################################################ +# +# skeleton-init-common +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_INIT_COMMON_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_INIT_COMMON_ADD_SKELETON_DEPENDENCY = NO + +# The skeleton also handles the merged /usr case in the sysroot +SKELETON_INIT_COMMON_INSTALL_STAGING = YES + +SKELETON_INIT_COMMON_PATH = system/skeleton + +define SKELETON_INIT_COMMON_INSTALL_TARGET_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_INIT_COMMON_PATH),$(TARGET_DIR)) + $(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(TARGET_DIR)) + $(call SYSTEM_LIB_SYMLINK,$(TARGET_DIR)) + $(INSTALL) -m 0644 support/misc/target-dir-warning.txt \ + $(TARGET_DIR_WARNING_FILE) +endef + +# We don't care much about what goes in staging, as long as it is +# correctly setup for merged/non-merged /usr. The simplest is to +# fill it in with the content of the skeleton. +define SKELETON_INIT_COMMON_INSTALL_STAGING_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_INIT_COMMON_PATH),$(STAGING_DIR)) + $(call SYSTEM_USR_SYMLINKS_OR_DIRS,$(STAGING_DIR)) + $(call SYSTEM_LIB_SYMLINK,$(STAGING_DIR)) + $(INSTALL) -d -m 0755 $(STAGING_DIR)/usr/include +endef + +SKELETON_INIT_COMMON_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME)) +SKELETON_INIT_COMMON_ISSUE = $(call qstrip,$(BR2_TARGET_GENERIC_ISSUE)) +SKELETON_INIT_COMMON_ROOT_PASSWD = $(call qstrip,$(BR2_TARGET_GENERIC_ROOT_PASSWD)) +SKELETON_INIT_COMMON_PASSWD_METHOD = $(call qstrip,$(BR2_TARGET_GENERIC_PASSWD_METHOD)) +SKELETON_INIT_COMMON_BIN_SH = $(call qstrip,$(BR2_SYSTEM_BIN_SH)) + +ifneq ($(SKELETON_INIT_COMMON_HOSTNAME),) +define SKELETON_INIT_COMMON_SET_HOSTNAME + mkdir -p $(TARGET_DIR)/etc + echo "$(SKELETON_INIT_COMMON_HOSTNAME)" > $(TARGET_DIR)/etc/hostname + $(SED) '$$a \127.0.1.1\t$(SKELETON_INIT_COMMON_HOSTNAME)' \ + -e '/^127.0.1.1/d' $(TARGET_DIR)/etc/hosts +endef +SKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_HOSTNAME +endif + +ifneq ($(SKELETON_INIT_COMMON_ISSUE),) +define SKELETON_INIT_COMMON_SET_ISSUE + mkdir -p $(TARGET_DIR)/etc + echo "$(SKELETON_INIT_COMMON_ISSUE)" > $(TARGET_DIR)/etc/issue +endef +SKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_ISSUE +endif + +ifeq ($(BR2_TARGET_ENABLE_ROOT_LOGIN),y) +ifneq ($(filter $$1$$% $$5$$% $$6$$%,$(SKELETON_INIT_COMMON_ROOT_PASSWD)),) +SKELETON_INIT_COMMON_ROOT_PASSWORD = '$(SKELETON_INIT_COMMON_ROOT_PASSWD)' +else ifneq ($(SKELETON_INIT_COMMON_ROOT_PASSWD),) +# This variable will only be evaluated in the finalize stage, so we can +# be sure that host-mkpasswd will have already been built by that time. +SKELETON_INIT_COMMON_ROOT_PASSWORD = "`$(MKPASSWD) -m "$(SKELETON_INIT_COMMON_PASSWD_METHOD)" "$(SKELETON_INIT_COMMON_ROOT_PASSWD)"`" +endif +else # !BR2_TARGET_ENABLE_ROOT_LOGIN +SKELETON_INIT_COMMON_ROOT_PASSWORD = "*" +endif +define SKELETON_INIT_COMMON_SET_ROOT_PASSWD + $(SED) s,^root:[^:]*:,root:$(SKELETON_INIT_COMMON_ROOT_PASSWORD):, $(TARGET_DIR)/etc/shadow +endef +SKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_ROOT_PASSWD + +ifeq ($(BR2_SYSTEM_BIN_SH_NONE),y) +define SKELETON_INIT_COMMON_SET_BIN_SH + rm -f $(TARGET_DIR)/bin/sh +endef +else +ifneq ($(SKELETON_INIT_COMMON_BIN_SH),) +define SKELETON_INIT_COMMON_SET_BIN_SH + ln -sf $(SKELETON_INIT_COMMON_BIN_SH) $(TARGET_DIR)/bin/sh +endef +endif +endif +SKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_BIN_SH + +$(eval $(generic-package)) diff --git a/buildroot/package/skeleton-init-none/Config.in b/buildroot/package/skeleton-init-none/Config.in new file mode 100644 index 0000000..449bf66 --- /dev/null +++ b/buildroot/package/skeleton-init-none/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SKELETON_INIT_NONE + bool + select BR2_PACKAGE_HAS_SKELETON + select BR2_PACKAGE_SKELETON_INIT_COMMON + +config BR2_PACKAGE_PROVIDES_SKELETON + default "skeleton-init-none" if BR2_PACKAGE_SKELETON_INIT_NONE diff --git a/buildroot/package/skeleton-init-none/skeleton-init-none.mk b/buildroot/package/skeleton-init-none/skeleton-init-none.mk new file mode 100644 index 0000000..8181aa0 --- /dev/null +++ b/buildroot/package/skeleton-init-none/skeleton-init-none.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# skeleton-init-none +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_INIT_NONE_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_INIT_NONE_ADD_SKELETON_DEPENDENCY = NO + +SKELETON_INIT_NONE_DEPENDENCIES = skeleton-init-common + +SKELETON_INIT_NONE_PROVIDES = skeleton + +$(eval $(generic-package)) diff --git a/buildroot/package/skeleton-init-systemd/Config.in b/buildroot/package/skeleton-init-systemd/Config.in new file mode 100644 index 0000000..59b21d1 --- /dev/null +++ b/buildroot/package/skeleton-init-systemd/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SKELETON_INIT_SYSTEMD + bool + select BR2_PACKAGE_HAS_SKELETON + select BR2_PACKAGE_SKELETON_INIT_COMMON + +config BR2_PACKAGE_PROVIDES_SKELETON + default "skeleton-init-systemd" if BR2_PACKAGE_SKELETON_INIT_SYSTEMD diff --git a/buildroot/package/skeleton-init-systemd/skeleton-init-systemd.mk b/buildroot/package/skeleton-init-systemd/skeleton-init-systemd.mk new file mode 100644 index 0000000..ff64205 --- /dev/null +++ b/buildroot/package/skeleton-init-systemd/skeleton-init-systemd.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# skeleton-init-systemd +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_INIT_SYSTEMD_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_INIT_SYSTEMD_ADD_SKELETON_DEPENDENCY = NO + +SKELETON_INIT_SYSTEMD_DEPENDENCIES = skeleton-init-common + +SKELETON_INIT_SYSTEMD_PROVIDES = skeleton + +ifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y) + +define SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW + echo "/dev/root / auto rw 0 1" >$(TARGET_DIR)/etc/fstab +endef + +else + +# On a R/O rootfs, /var is a tmpfs filesystem. So, at build time, we +# redirect /var to the "factory settings" location. Just before the +# filesystem gets created, the /var symlink will be replaced with +# a real (but empty) directory, and the "factory files" will be copied +# back there by the tmpfiles.d mechanism. +define SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW + mkdir -p $(TARGET_DIR)/etc/systemd/tmpfiles.d + echo "/dev/root / auto ro 0 1" >$(TARGET_DIR)/etc/fstab + echo "tmpfs /var tmpfs mode=1777 0 0" >>$(TARGET_DIR)/etc/fstab +endef + +define SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR + rm -rf $(TARGET_DIR)/usr/share/factory/var + mv $(TARGET_DIR)/var $(TARGET_DIR)/usr/share/factory/var + mkdir -p $(TARGET_DIR)/var + for i in $(TARGET_DIR)/usr/share/factory/var/* \ + $(TARGET_DIR)/usr/share/factory/var/lib/* \ + $(TARGET_DIR)/usr/share/factory/var/lib/systemd/*; do \ + [ -e "$${i}" ] || continue; \ + j="$${i#$(TARGET_DIR)/usr/share/factory}"; \ + if [ -L "$${i}" ]; then \ + printf "L+! %s - - - - %s\n" \ + "$${j}" "../usr/share/factory/$${j}" \ + || exit 1; \ + else \ + printf "C! %s - - - -\n" "$${j}" \ + || exit 1; \ + fi; \ + done >$(TARGET_DIR)/etc/tmpfiles.d/var-factory.conf +endef +SKELETON_INIT_SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR + +define SKELETON_INIT_SYSTEMD_POST_ROOTFS_VAR + rm -rf $(TARGET_DIR)/var + mv $(TARGET_DIR)/usr/share/factory/var $(TARGET_DIR)/var +endef +SKELETON_INIT_SYSTEMD_ROOTFS_POST_CMD_HOOKS += SKELETON_INIT_SYSTEMD_POST_ROOTFS_VAR + +endif + +define SKELETON_INIT_SYSTEMD_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/home + mkdir -p $(TARGET_DIR)/srv + mkdir -p $(TARGET_DIR)/var + ln -s ../run $(TARGET_DIR)/var/run + $(SKELETON_INIT_SYSTEMD_ROOT_RO_OR_RW) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/skeleton-init-sysv/Config.in b/buildroot/package/skeleton-init-sysv/Config.in new file mode 100644 index 0000000..6f645f9 --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SKELETON_INIT_SYSV + bool + select BR2_PACKAGE_HAS_SKELETON + select BR2_PACKAGE_SKELETON_INIT_COMMON + +config BR2_PACKAGE_PROVIDES_SKELETON + default "skeleton-init-sysv" if BR2_PACKAGE_SKELETON_INIT_SYSV diff --git a/buildroot/package/skeleton-init-sysv/skeleton-init-sysv.mk b/buildroot/package/skeleton-init-sysv/skeleton-init-sysv.mk new file mode 100644 index 0000000..c89c2dc --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/skeleton-init-sysv.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# skeleton-init-sysv +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_INIT_SYSV_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_INIT_SYSV_ADD_SKELETON_DEPENDENCY = NO + +SKELETON_INIT_SYSV_DEPENDENCIES = skeleton-init-common + +SKELETON_INIT_SYSV_PROVIDES = skeleton + +define SKELETON_INIT_SYSV_INSTALL_TARGET_CMDS + $(call SYSTEM_RSYNC,$(SKELETON_INIT_SYSV_PKGDIR)/skeleton,$(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/skeleton-init-sysv/skeleton/dev/log b/buildroot/package/skeleton-init-sysv/skeleton/dev/log new file mode 120000 index 0000000..d96b3b1 --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/skeleton/dev/log @@ -0,0 +1 @@ +../tmp/log \ No newline at end of file diff --git a/buildroot/package/skeleton-init-sysv/skeleton/dev/pts/.empty b/buildroot/package/skeleton-init-sysv/skeleton/dev/pts/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/package/skeleton-init-sysv/skeleton/dev/shm/.empty b/buildroot/package/skeleton-init-sysv/skeleton/dev/shm/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/package/skeleton-init-sysv/skeleton/etc/fstab b/buildroot/package/skeleton-init-sysv/skeleton/etc/fstab new file mode 100644 index 0000000..169054b --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/skeleton/etc/fstab @@ -0,0 +1,8 @@ +# +/dev/root / ext2 rw,noauto 0 1 +proc /proc proc defaults 0 0 +devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0 +tmpfs /dev/shm tmpfs mode=0777 0 0 +tmpfs /tmp tmpfs mode=1777 0 0 +tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0 +sysfs /sys sysfs defaults 0 0 diff --git a/buildroot/package/skeleton-init-sysv/skeleton/var/cache b/buildroot/package/skeleton-init-sysv/skeleton/var/cache new file mode 120000 index 0000000..1431b0e --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/skeleton/var/cache @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/buildroot/package/skeleton-init-sysv/skeleton/var/lib/misc b/buildroot/package/skeleton-init-sysv/skeleton/var/lib/misc new file mode 120000 index 0000000..f1fde8c --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/skeleton/var/lib/misc @@ -0,0 +1 @@ +../../tmp \ No newline at end of file diff --git a/buildroot/package/skeleton-init-sysv/skeleton/var/lock b/buildroot/package/skeleton-init-sysv/skeleton/var/lock new file mode 120000 index 0000000..1431b0e --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/skeleton/var/lock @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/buildroot/package/skeleton-init-sysv/skeleton/var/log b/buildroot/package/skeleton-init-sysv/skeleton/var/log new file mode 120000 index 0000000..1431b0e --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/skeleton/var/log @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/buildroot/package/skeleton-init-sysv/skeleton/var/run b/buildroot/package/skeleton-init-sysv/skeleton/var/run new file mode 120000 index 0000000..84ba55b --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/skeleton/var/run @@ -0,0 +1 @@ +../run \ No newline at end of file diff --git a/buildroot/package/skeleton-init-sysv/skeleton/var/spool b/buildroot/package/skeleton-init-sysv/skeleton/var/spool new file mode 120000 index 0000000..1431b0e --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/skeleton/var/spool @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/buildroot/package/skeleton-init-sysv/skeleton/var/tmp b/buildroot/package/skeleton-init-sysv/skeleton/var/tmp new file mode 120000 index 0000000..1431b0e --- /dev/null +++ b/buildroot/package/skeleton-init-sysv/skeleton/var/tmp @@ -0,0 +1 @@ +../tmp \ No newline at end of file diff --git a/buildroot/package/skeleton/Config.in b/buildroot/package/skeleton/Config.in new file mode 100644 index 0000000..efaa1e1 --- /dev/null +++ b/buildroot/package/skeleton/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SKELETON + bool + default y + +config BR2_PACKAGE_HAS_SKELETON + bool + +config BR2_PACKAGE_PROVIDES_SKELETON + string diff --git a/buildroot/package/skeleton/skeleton.mk b/buildroot/package/skeleton/skeleton.mk new file mode 100644 index 0000000..d380f41 --- /dev/null +++ b/buildroot/package/skeleton/skeleton.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# skeleton +# +################################################################################ + +# The skeleton can't depend on the toolchain, since all packages depends on the +# skeleton and the toolchain is a target package, as is skeleton. +# Hence, skeleton would depends on the toolchain and the toolchain would depend +# on skeleton. +SKELETON_ADD_TOOLCHAIN_DEPENDENCY = NO +SKELETON_ADD_SKELETON_DEPENDENCY = NO + +$(eval $(virtual-package)) diff --git a/buildroot/package/sl/Config.in b/buildroot/package/sl/Config.in new file mode 100644 index 0000000..7abe705 --- /dev/null +++ b/buildroot/package/sl/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SL + bool "sl" + select BR2_PACKAGE_NCURSES + help + SL (Steam Locomotive) runs across your terminal when you + type "sl" as you meant to type "ls". It's just a joke + command, and not useful at all. + + https://github.com/mtoyoda/sl diff --git a/buildroot/package/sl/sl.hash b/buildroot/package/sl/sl.hash new file mode 100644 index 0000000..be74670 --- /dev/null +++ b/buildroot/package/sl/sl.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1e5996757f879c81f202a18ad8e982195cf51c41727d3fea4af01fdcbbb5563a sl-5.02.tar.gz diff --git a/buildroot/package/sl/sl.mk b/buildroot/package/sl/sl.mk new file mode 100644 index 0000000..bb28b2a --- /dev/null +++ b/buildroot/package/sl/sl.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# sl +# +################################################################################ + +SL_VERSION = 5.02 +SL_SITE = $(call github,mtoyoda,sl,$(SL_VERSION)) +SL_LICENSE = Custom +SL_LICENSE_FILES = LICENSE +SL_DEPENDENCIES = ncurses + +define SL_BUILD_CMDS + $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define SL_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/sl $(TARGET_DIR)/usr/bin/sl +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/slang/0001-slsh-libs.patch b/buildroot/package/slang/0001-slsh-libs.patch new file mode 100644 index 0000000..211cb4a --- /dev/null +++ b/buildroot/package/slang/0001-slsh-libs.patch @@ -0,0 +1,19 @@ +Link against sources instead of installation paths that aren't DESTDIRed. +Patch taken from gentoo portage, upstream status unknown, author +probably Diego Pettenò. + +Signed-off-by: Gustavo Zacarias +[Bernd: rebased against 2.3.1a] +Signed-off-by: Bernd Kuhls + +--- a/slsh/Makefile.in ++++ b/slsh/Makefile.in +@@ -92,7 +92,7 @@ + $(OBJDIR)/slsh_exe: $(OBJDIR)/slsh.o $(OBJDIR)/readline.o + $(CC) $(CFLAGS) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh_exe $(LDFLAGS) $(DLINK_FLAGS) $(SRC_LIBS) + $(OBJDIR)/slsh: $(OBJDIR)/slsh.o $(OBJDIR)/readline.o +- $(CC) $(CFLAGS) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh $(LDFLAGS) $(DLINK_FLAGS) $(INST_LIBS) ++ $(CC) $(CFLAGS) $(OBJDIR)/slsh.o $(OBJDIR)/readline.o -o $(OBJDIR)/slsh $(LDFLAGS) $(DLINK_FLAGS) $(SRC_LIBS) + $(OBJDIR)/slsh.o: $(OBJDIR_TSTAMP) slsh.c slsh.h config.h Makefile + cd $(OBJDIR) && $(CC) $(SLANG_SRCINC) $(CFLAGS) -c $(DEFS) $(SRCDIR)/slsh.c + $(OBJDIR)/readline.o: $(OBJDIR_TSTAMP) readline.c slsh.h config.h Makefile diff --git a/buildroot/package/slang/Config.in b/buildroot/package/slang/Config.in new file mode 100644 index 0000000..a500ff5 --- /dev/null +++ b/buildroot/package/slang/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SLANG + bool "slang" + depends on BR2_USE_MMU # fork() + help + Multi-platform console display library. + + http://www.jedsoft.org/slang/index.html diff --git a/buildroot/package/slang/slang.hash b/buildroot/package/slang/slang.hash new file mode 100644 index 0000000..bd806e8 --- /dev/null +++ b/buildroot/package/slang/slang.hash @@ -0,0 +1,6 @@ +# sha1 from http://www.jedsoft.org/releases/slang/, sha256 locally computed +sha1 a8ea7f1b5736160a94efb67b137a0f5b9916bdf2 slang-2.3.1a.tar.bz2 +sha256 54f0c3007fde918039c058965dffdfd6c5aec0bad0f4227192cc486021f08c36 slang-2.3.1a.tar.bz2 + +# License file, locally computed +sha256 ff05a90962e7773f8bdc47b2a9585130526039102759b524c1dffbd57cfe469b COPYING diff --git a/buildroot/package/slang/slang.mk b/buildroot/package/slang/slang.mk new file mode 100644 index 0000000..d0c0e76 --- /dev/null +++ b/buildroot/package/slang/slang.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# slang +# +################################################################################ + +SLANG_VERSION = 2.3.1a +SLANG_SOURCE = slang-$(SLANG_VERSION).tar.bz2 +SLANG_SITE = http://www.jedsoft.org/releases/slang +SLANG_LICENSE = GPL-2.0+ +SLANG_LICENSE_FILES = COPYING +SLANG_INSTALL_STAGING = YES +SLANG_CONF_OPTS = --with-onig=no +SLANG_MAKE = $(MAKE1) + +# Racy and we don't have/do libtermcap +define SLANG_DISABLE_TERMCAP + $(SED) '/^TERMCAP=/s:=.*:=:' $(@D)/configure +endef +SLANG_POST_PATCH_HOOKS += SLANG_DISABLE_TERMCAP + +# Absolute path hell, sigh... +ifeq ($(BR2_PACKAGE_LIBPNG),y) +SLANG_CONF_OPTS += --with-png=$(STAGING_DIR)/usr +SLANG_DEPENDENCIES += libpng +else +SLANG_CONF_OPTS += --with-png=no +endif +ifeq ($(BR2_PACKAGE_PCRE),y) +SLANG_CONF_OPTS += --with-pcre=$(STAGING_DIR)/usr +SLANG_DEPENDENCIES += pcre +else +SLANG_CONF_OPTS += --with-pcre=no +endif +ifeq ($(BR2_PACKAGE_ZLIB),y) +SLANG_CONF_OPTS += --with-z=$(STAGING_DIR)/usr +SLANG_DEPENDENCIES += zlib +else +SLANG_CONF_OPTS += --with-z=no +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +SLANG_DEPENDENCIES += ncurses +SLANG_CONF_ENV += ac_cv_path_nc5config=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) +else +SLANG_CONF_OPTS += ac_cv_path_nc5config=no +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +SLANG_CONF_OPTS += --with-readline=gnu +SLANG_DEPENDENCIES += readline +ifeq ($(BR2_STATIC_LIBS),y) +SLANG_CONF_ENV += LIBS="`$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) --libs`" +endif +endif + +ifeq ($(BR2_STATIC_LIBS),y) +SLANG_MAKE_OPTS = static +SLANG_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-static +SLANG_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-static +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/slirp/Config.in b/buildroot/package/slirp/Config.in new file mode 100644 index 0000000..51dea97 --- /dev/null +++ b/buildroot/package/slirp/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_SLIRP + bool "slirp" + help + The Spice project aims to provide a complete open source + solution for interaction with virtualized desktop devices. + The Spice project deals with both the virtualized devices + and the front-end. Interaction between front-end and + back-end is done using VD-Interfaces. + + This package implements the slirp-part for Spice. Slirp + emulates a PPP or SLIP connection over a normal terminal. + + http://www.spice-space.org/ + + NOTE: + This package has some history of a unique kind: + - originally developped as 'slirp' by Danny Gasparovski, and + seemingly abandonned (developper /disapeared/) + - then re-maintained at sourceforge by "Kelly", up to some + time around 2009: http://slirp.sourceforge.net/ + - during that period, QEMU (Fabrice BELLARD) forked the code + and included it in QEMU + - and it was imported from this breed by the Spice project + around May 2009 + - which is what we use here diff --git a/buildroot/package/slirp/slirp.mk b/buildroot/package/slirp/slirp.mk new file mode 100644 index 0000000..7cfead6 --- /dev/null +++ b/buildroot/package/slirp/slirp.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# slirp +# +################################################################################ + +# There's no tarball releases of slirp, so we use the git repo +# Also, there's no tag, so we use a random SHA1 (master's HEAD +# of today) +SLIRP_VERSION = 8c2da74c1385242f20799fec8c04f8378edc6550 +SLIRP_SITE = git://anongit.freedesktop.org/spice/slirp +SLIRP_LICENSE = BSD-4-Clause, BSD-2-Clause +# Note: The license file 'COPYRIGHT' is missing from the sources, +# although some files refer to it. +SLIRP_INSTALL_STAGING = YES + +# As we're using the git tree, there's no ./configure, +# so we need to autoreconf. +SLIRP_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/smack/Config.in b/buildroot/package/smack/Config.in new file mode 100644 index 0000000..3e88f8d --- /dev/null +++ b/buildroot/package/smack/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_SMACK + bool "smack" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + help + User space programs and libraries for SMACK. + + SMACK stands for Simplified Mandatory Access Control Kernel. + It is a Linux Security Module which provides a Mandatory + Access Control mechanism, aimed towards simplicity. + + This package provides a library which allows applications to + work with SMACK and tools to load/unload rules from the + kernel, as well as query the policy. + + SMACK requires the following kernel options to be enabled: + + - CONFIG_SECURITY + - CONFIG_SECURITY_SMACK + - CONFIG_SECURITY_NETWORK + + These options will be automatically enabled by Buildroot if + it is responsible for building the kernel. Otherwise, if you + are building your kernel outside of Buildroot, make sure + these options are enabled. + + To activate SMACK, do not forget to add "security=smack" to + your kernel command line. + + https://github.com/smack-team/smack + +comment "smack needs a toolchain w/ dynamic library, threads, headers >= 3.0" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/smack/smack.hash b/buildroot/package/smack/smack.hash new file mode 100644 index 0000000..2c1f446 --- /dev/null +++ b/buildroot/package/smack/smack.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 1a607da3b1a661dc76b7a5b8571f4a2d56b4d61d78376088d19f2d8637dc6822 smack-1.3.1.tar.gz diff --git a/buildroot/package/smack/smack.mk b/buildroot/package/smack/smack.mk new file mode 100644 index 0000000..d2ac005 --- /dev/null +++ b/buildroot/package/smack/smack.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# smack +# +################################################################################ + +SMACK_VERSION = 1.3.1 +SMACK_SITE = $(call github,smack-team,smack,v$(SMACK_VERSION)) +SMACK_LICENSE = LGPL-2.1 +SMACK_LICENSE_FILES = COPYING +SMACK_INSTALL_STAGING = YES +SMACK_DEPENDENCIES = host-pkgconf + +# Sources from GitHub, no configure script included. +SMACK_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/smartmontools/Config.in b/buildroot/package/smartmontools/Config.in new file mode 100644 index 0000000..92e0037 --- /dev/null +++ b/buildroot/package/smartmontools/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_SMARTMONTOOLS + bool "smartmontools" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + help + Control and monitor storage systems using S.M.A.R.T. + + http://smartmontools.sourceforge.net/ + +comment "smartmontools needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/smartmontools/smartmontools.hash b/buildroot/package/smartmontools/smartmontools.hash new file mode 100644 index 0000000..2f2b7aa --- /dev/null +++ b/buildroot/package/smartmontools/smartmontools.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/smartmontools/files/smartmontools/6.5/ +md5 093aeec3f8f39fa9a37593c4012d3156 smartmontools-6.5.tar.gz +sha1 7e788b429534a4ae627858fbcc826b93402cee7e smartmontools-6.5.tar.gz diff --git a/buildroot/package/smartmontools/smartmontools.mk b/buildroot/package/smartmontools/smartmontools.mk new file mode 100644 index 0000000..137c00a --- /dev/null +++ b/buildroot/package/smartmontools/smartmontools.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# smartmontools +# +################################################################################ + +SMARTMONTOOLS_VERSION = 6.5 +SMARTMONTOOLS_SITE = http://downloads.sourceforge.net/project/smartmontools/smartmontools/$(SMARTMONTOOLS_VERSION) +SMARTMONTOOLS_LICENSE = GPL-2.0+ +SMARTMONTOOLS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/smcroute/Config.in b/buildroot/package/smcroute/Config.in new file mode 100644 index 0000000..0d0f5f7 --- /dev/null +++ b/buildroot/package/smcroute/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_SMCROUTE + bool "smcroute" + depends on BR2_USE_MMU # fork() + help + SMCRoute is a command line tool to manipulate the multicast + routes of a UNIX kernel. It supports both IPv4 and IPv6 + multicast routing. SMCRoute can be used as an alternative to + dynamic multicast routers like mrouted or pimd in setups + where static multicast routes should be maintained and/or no + proper IGMP or MLD signaling exists. + + https://github.com/troglobit/smcroute diff --git a/buildroot/package/smcroute/smcroute.hash b/buildroot/package/smcroute/smcroute.hash new file mode 100644 index 0000000..0487ef6 --- /dev/null +++ b/buildroot/package/smcroute/smcroute.hash @@ -0,0 +1,4 @@ +# Locally generated +sha256 cd6c5cc2edfa1348acb07ed026180ebfc8dd0f87153f5382cb27cb5557724c56 smcroute-2.3.1.tar.xz +# From https://github.com/troglobit/smcroute/releases/download/2.3.1/smcroute-2.3.1.tar.xz.md5 +md5 d8080828b7730bffb86969afd2bf94cb smcroute-2.3.1.tar.xz diff --git a/buildroot/package/smcroute/smcroute.mk b/buildroot/package/smcroute/smcroute.mk new file mode 100644 index 0000000..e7e6ef1 --- /dev/null +++ b/buildroot/package/smcroute/smcroute.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# smcroute +# +################################################################################ + +SMCROUTE_VERSION = 2.3.1 +SMCROUTE_SOURCE = smcroute-$(SMCROUTE_VERSION).tar.xz +SMCROUTE_SITE = https://github.com/troglobit/smcroute/releases/download/$(SMCROUTE_VERSION) +SMCROUTE_LICENSE = GPL-2.0+ +SMCROUTE_LICENSE_FILES = COPYING + +SMCROUTE_CONF_OPTS = ac_cv_func_setpgrp_void=yes +#BUG:The package Makefile uses CC?= even though the package is autotools based +SMCROUTE_MAKE_ENV = $(TARGET_CONFIGURE_OPTS) + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +SMCROUTE_DEPENDENCIES = libcap +SMCROUTE_CONF_OPTS += --with-libcap +else +SMCROUTE_CONF_OPTS += --without-libcap +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/smstools3/0001-fix-Makefile.patch b/buildroot/package/smstools3/0001-fix-Makefile.patch new file mode 100644 index 0000000..5842357 --- /dev/null +++ b/buildroot/package/smstools3/0001-fix-Makefile.patch @@ -0,0 +1,29 @@ +Makefile: fix rules + +In a Makefile, recipes should follow rules, there can not be variable +definitions in-between. + +Although make-3.81 is happy about it, make-4.0 (and probably 3.82 too) +do whine loudly. + +Signed-off-by: "Yann E. MORIN" + +diff -durN smstools3-3.1.15.orig/src/Makefile smstools3-3.1.15/src/Makefile +--- smstools3-3.1.15.orig/src/Makefile 2010-09-21 13:29:14.000000000 +0200 ++++ smstools3-3.1.15/src/Makefile 2014-09-01 22:27:02.719939329 +0200 +@@ -39,14 +39,13 @@ + + all: smsd + +-smsd: smsd.c extras.o locking.o cfgfile.o logging.o alarm.o smsd_cfg.o charset.o stats.o blacklist.o whitelist.o modeminit.o pdu.o +- + ifneq (,$(findstring SOLARIS,$(CFLAGS))) + ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS))) + override LFLAGS += -lsocket -lnsl + endif + endif + ++smsd: smsd.c extras.o locking.o cfgfile.o logging.o alarm.o smsd_cfg.o charset.o stats.o blacklist.o whitelist.o modeminit.o pdu.o + ifneq (,$(findstring NOSTATS,$(CFLAGS))) + $(CC) $(CFLAGS) -o $@ $^ $(LFLAGS) + else diff --git a/buildroot/package/smstools3/Config.in b/buildroot/package/smstools3/Config.in new file mode 100644 index 0000000..dca3996 --- /dev/null +++ b/buildroot/package/smstools3/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_SMSTOOLS3 + bool "smstools3" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The SMS Server Tools 3 is a SMS Gateway software which can + send and receive short messages through GSM modems and + mobile phones. + + http://smstools3.kekekasvi.com/ + +if BR2_PACKAGE_SMSTOOLS3 + +config BR2_PACKAGE_SMSTOOLS3_NB_MODEMS + int "Number of modems to support" + default 1 + help + To reduce memory footprint of SMS Server Tools, you can + specify the exact number of modems connected to your + board. By default only 1 modem is used. + +endif + +comment "smstools3 needs a toolchain w/ wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/smstools3/S50smsd b/buildroot/package/smstools3/S50smsd new file mode 100644 index 0000000..cd78150 --- /dev/null +++ b/buildroot/package/smstools3/S50smsd @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Starts the SMS Server Tools 3 +# + +NAME=smsd +DAEMON=/usr/bin/$NAME +PIDFILE=/var/run/$NAME.pid +SPOOL=/var/spool/sms + +start() +{ + printf "Starting $NAME: " + mkdir -p $SPOOL/outgoing + mkdir -p $SPOOL/incoming + mkdir -p $SPOOL/checked + start-stop-daemon -S -q -p $PIDFILE --exec $DAEMON -- -c /etc/smsd.conf && echo "OK" || echo "Failed" +} + +stop() +{ + printf "Stopping $NAME: " + start-stop-daemon -K -q -p $PIDFILE && echo "OK" || echo "Failed" + rm -f $PIDFILE +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/smstools3/smstools3.hash b/buildroot/package/smstools3/smstools3.hash new file mode 100644 index 0000000..b0b521f --- /dev/null +++ b/buildroot/package/smstools3/smstools3.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 ed00ffaeaa312a5b4f969f4e97a64603a866bbe16e393ea02f5bf05234814d59 smstools3-3.1.15.tar.gz diff --git a/buildroot/package/smstools3/smstools3.mk b/buildroot/package/smstools3/smstools3.mk new file mode 100644 index 0000000..2dfd11b --- /dev/null +++ b/buildroot/package/smstools3/smstools3.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# smstools3 +# +################################################################################ + +SMSTOOLS3_VERSION = 3.1.15 +SMSTOOLS3_SITE = http://smstools3.kekekasvi.com/packages +SMSTOOLS3_LICENSE = GPL-2.0+ +SMSTOOLS3_LICENSE_FILES = doc/license.html LICENSE + +SMSTOOLS3_CFLAGS = $(TARGET_CFLAGS) +SMSTOOLS3_CFLAGS += -D NUMBER_OF_MODEMS=$(BR2_PACKAGE_SMSTOOLS3_NB_MODEMS) +SMSTOOLS3_CFLAGS += -D NOSTATS + +define SMSTOOLS3_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(SMSTOOLS3_CFLAGS)" -C $(@D) +endef + +define SMSTOOLS3_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/smstools3/S50smsd \ + $(TARGET_DIR)/etc/init.d/S50smsd +endef + +define SMSTOOLS3_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/src/smsd \ + $(TARGET_DIR)/usr/bin/smsd + $(INSTALL) -m 0755 -D $(@D)/scripts/sendsms \ + $(TARGET_DIR)/usr/bin/sendsms + $(INSTALL) -m 0644 -D $(@D)/examples/smsd.conf.easy \ + $(TARGET_DIR)/etc/smsd.conf +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/snappy/Config.in b/buildroot/package/snappy/Config.in new file mode 100644 index 0000000..1bd3d6e --- /dev/null +++ b/buildroot/package/snappy/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_SNAPPY + bool "snappy" + depends on BR2_INSTALL_LIBSTDCPP + help + Snappy is a compression/decompression library. It does not + aim for maximum compression, or compatibility with any other + compression library; instead, it aims for very high speeds + and reasonable compression. + + http://google.github.io/snappy/ + +comment "snappy needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/snappy/snappy.hash b/buildroot/package/snappy/snappy.hash new file mode 100644 index 0000000..71a2500 --- /dev/null +++ b/buildroot/package/snappy/snappy.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e701cd80f1154d648c762c86140ad6873a5c9b09ed1d754e3157be8193d2c39e snappy-be6dc3db83c4701e3e79694dcbfd1c3da03b91dd.tar.gz diff --git a/buildroot/package/snappy/snappy.mk b/buildroot/package/snappy/snappy.mk new file mode 100644 index 0000000..a537ade --- /dev/null +++ b/buildroot/package/snappy/snappy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# snappy +# +################################################################################ + +SNAPPY_VERSION = be6dc3db83c4701e3e79694dcbfd1c3da03b91dd +SNAPPY_SITE = $(call github,google,snappy,$(SNAPPY_VERSION)) +SNAPPY_LICENSE = BSD-3-Clause +SNAPPY_LICENSE_FILES = COPYING +SNAPPY_INSTALL_STAGING = YES +SNAPPY_CONF_OPTS = -DSNAPPY_BUILD_TESTS=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/sngrep/Config.in b/buildroot/package/sngrep/Config.in new file mode 100644 index 0000000..4d0d80c --- /dev/null +++ b/buildroot/package/sngrep/Config.in @@ -0,0 +1,14 @@ +comment "sngrep needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_SNGREP + bool "sngrep" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBPCAP + help + sngrep is a tool for displaying SIP calls message flows from + terminal. It supports live capture to display realtime SIP + packets and can also be used as PCAP viewer. + + https://github.com/irontec/sngrep diff --git a/buildroot/package/sngrep/sngrep.hash b/buildroot/package/sngrep/sngrep.hash new file mode 100644 index 0000000..cd2dff5 --- /dev/null +++ b/buildroot/package/sngrep/sngrep.hash @@ -0,0 +1,6 @@ +# From https://github.com/irontec/sngrep/releases/download/v1.4.4/sngrep-1.4.4.tar.gz.md5sum +md5 8e2286c2e23f4b29667025e5809dc303 sngrep-1.4.4.tar.gz + +# Locally computed +sha256 2379b8b3e9498d426a0bc03b90d74170a80f98f167f89c126d53dcc66bc5f60b sngrep-v1.4.4.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/buildroot/package/sngrep/sngrep.mk b/buildroot/package/sngrep/sngrep.mk new file mode 100644 index 0000000..93a0c3f --- /dev/null +++ b/buildroot/package/sngrep/sngrep.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# sngrep +# +################################################################################ + +SNGREP_VERSION = v1.4.4 +SNGREP_SITE = $(call github,irontec,sngrep,$(SNGREP_VERSION)) +SNGREP_LICENSE = GPL-3.0+ +SNGREP_LICENSE_FILES = LICENSE +SNGREP_AUTORECONF = YES +SNGREP_DEPENDENCIES = libpcap ncurses host-pkgconf + +SNGREP_CONF_ENV += \ + $(if $(BR2_STATIC_LIBS),LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --libs`") + +SNGREP_CONF_OPTS += --disable-unicode + +# openssl and gnutls can't be enabled at the same time. +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SNGREP_DEPENDENCIES += openssl +SNGREP_CONF_OPTS += --with-openssl --without-gnutls +# gnutls support also requires libgcrypt +else ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy) +SNGREP_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +SNGREP_DEPENDENCIES += gnutls libgcrypt +SNGREP_CONF_OPTS += --with-gnutls --without-openssl +else +SNGREP_CONF_OPTS += --without-gnutls --without-openssl +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +SNGREP_DEPENDENCIES += pcre +SNGREP_CONF_OPTS += --with-pcre +else +SNGREP_CONF_OPTS += --without-pcre +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/snmppp/Config.in b/buildroot/package/snmppp/Config.in new file mode 100644 index 0000000..8d28467 --- /dev/null +++ b/buildroot/package/snmppp/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_SNMPPP + bool "snmp++" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + SNMP++v3.x is a C++ API which supports SNMP v1, v2c, and v3. + + http://www.agentpp.com/snmp_pp3_x/snmp_pp3_x.html + +if BR2_PACKAGE_SNMPPP + +config BR2_PACKAGE_SNMPPP_LOGGING + bool "enable logging" + help + Enable logging output for SNMP++. + According to the SNMP++ documentation, disabling logging + "increases performance drastically and minimizes memory + consumption". + +config BR2_PACKAGE_SNMPPP_SNMPV3 + bool "enable SNMPv3" + default y + select BR2_PACKAGE_OPENSSL + help + Enable optional support for SNMP++. This selects OpenSSL. + +endif + +comment "snmp++ needs a toolchain w/ threads, C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/snmppp/snmppp.hash b/buildroot/package/snmppp/snmppp.hash new file mode 100644 index 0000000..5c8feee --- /dev/null +++ b/buildroot/package/snmppp/snmppp.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 6827adb6a6a68a7f32c41fa12bdfd0aa48f4825b8773f63fc4d5c8482d4ed481 snmp++-3.3.10.tar.gz +sha256 d00d5deb9ce44fa01ddf6f882de3ea8b9e8402f776b546dd982d55367ebbd392 src/v3.cpp diff --git a/buildroot/package/snmppp/snmppp.mk b/buildroot/package/snmppp/snmppp.mk new file mode 100644 index 0000000..4ceb61c --- /dev/null +++ b/buildroot/package/snmppp/snmppp.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# snmppp +# +################################################################################ + +SNMPPP_VERSION = 3.3.10 +SNMPPP_SOURCE = snmp++-$(SNMPPP_VERSION).tar.gz +SNMPPP_SITE = http://www.agentpp.com/download +SNMPPP_DEPENDENCIES = host-pkgconf +SNMPPP_INSTALL_STAGING = YES +SNMPPP_CONF_OPTS = $(if $(BR2_PACKAGE_SNMPPP_LOGGING),--enable-logging,--disable-logging) +SNMPPP_LICENSE = SNMP++ +SNMPPP_LICENSE_FILES = src/v3.cpp + +ifeq ($(BR2_PACKAGE_SNMPPP_SNMPV3),y) +SNMPPP_CONF_OPTS += --enable-snmpv3 +SNMPPP_DEPENDENCIES += openssl +else +SNMPPP_CONF_OPTS += --disable-snmpv3 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/socat/0001-no-documentation.patch b/buildroot/package/socat/0001-no-documentation.patch new file mode 100644 index 0000000..ce088df --- /dev/null +++ b/buildroot/package/socat/0001-no-documentation.patch @@ -0,0 +1,37 @@ +socat: disable documentation build/installation + +The documentation generation process requires a special yold2man +program, for which we don't have a package in Buildroot. Since we +generally don't care much about documentation of packages, just adjust +the package Makefile.in to not build/install its documentation. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile.in +=================================================================== +--- a/Makefile.in ++++ b/Makefile.in +@@ -93,7 +93,7 @@ + Config/Makefile.Cygwin-1-5-25 Config/config.Cygwin-1-5-25.h \ + Config/Makefile.MacOSX-10-5 Config/config.MacOSX-10-5.h + +-all: progs doc ++all: progs + + scmclean: gitclean + +@@ -136,13 +136,11 @@ + strip: progs + strip $(PROGS) + +-install: progs $(srcdir)/doc/socat.1 ++install: progs + mkdir -p $(DESTDIR)$(BINDEST) + $(INSTALL) -m 755 socat $(DESTDIR)$(BINDEST) + $(INSTALL) -m 755 procan $(DESTDIR)$(BINDEST) + $(INSTALL) -m 755 filan $(DESTDIR)$(BINDEST) +- mkdir -p $(DESTDIR)$(MANDEST)/man1 +- $(INSTALL) -m 644 $(srcdir)/doc/socat.1 $(DESTDIR)$(MANDEST)/man1/ + + uninstall: + rm -f $(DESTDIR)$(BINDEST)/socat diff --git a/buildroot/package/socat/0002-ptrdiff_t-is-defined-in-stddef.h.patch b/buildroot/package/socat/0002-ptrdiff_t-is-defined-in-stddef.h.patch new file mode 100644 index 0000000..acae641 --- /dev/null +++ b/buildroot/package/socat/0002-ptrdiff_t-is-defined-in-stddef.h.patch @@ -0,0 +1,28 @@ +From 99c55f2694fe8621ca2344eb002610dac7f9c969 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Tue, 2 Feb 2016 09:34:24 -0300 +Subject: [PATCH] ptrdiff_t is defined in stddef.h + +Status: sent upstream via email. + +Signed-off-by: Gustavo Zacarias +--- + nestlex.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/nestlex.c b/nestlex.c +index f7950f0..f49482d 100644 +--- a/nestlex.c ++++ b/nestlex.c +@@ -4,6 +4,8 @@ + + /* a function for lexical scanning of nested character patterns */ + ++#include /* ptrdiff_t */ ++ + #include "config.h" + #include "mytypes.h" + +-- +2.4.10 + diff --git a/buildroot/package/socat/0003-compat-set-NETDB_INTERNAL.patch b/buildroot/package/socat/0003-compat-set-NETDB_INTERNAL.patch new file mode 100644 index 0000000..da31073 --- /dev/null +++ b/buildroot/package/socat/0003-compat-set-NETDB_INTERNAL.patch @@ -0,0 +1,35 @@ +From e7804d1750652e39c7a5803d360b29b2637a695f Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 28 Aug 2016 21:04:01 +0200 +Subject: [PATCH] compat: set NETDB_INTERNAL + +Musl doesn't provide NETDB_INTERNAL which is defined in resolv/netdb.h +in Glibc [1]. + +Set NETDB_INTERNAL to -1 locally if not already defined. +Based on [2]. + +[1] https://sourceware.org/git/?p=glibc.git;a=blob;f=resolv/netdb.h;h=3aba530932c7a62a4f23e3193e9186da677f552b;hb=fdfc9260b61d3d72541f18104d24c7bcb0ce5ca2#l74 +[2] http://git.alpinelinux.org/cgit/aports/tree/main/socat/netdb-internal.patch?id=5a45173b50892cb634197c30b3506ebff98d3b7d + +Signed-off-by: Romain Naour +--- + compat.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/compat.h b/compat.h +index 19a929f..4f5ee6d 100644 +--- a/compat.h ++++ b/compat.h +@@ -666,6 +666,8 @@ typedef int sig_atomic_t; + + #if !defined(NETDB_INTERNAL) && defined(h_NETDB_INTERNAL) + # define NETDB_INTERNAL h_NETDB_INTERNAL ++#elif !defined(NETDB_INTERNAL) ++# define NETDB_INTERNAL (-1) + #endif + + #ifndef INET_ADDRSTRLEN +-- +2.5.5 + diff --git a/buildroot/package/socat/0004-xio-tun-remove-if_tun.h-kernel-header.patch b/buildroot/package/socat/0004-xio-tun-remove-if_tun.h-kernel-header.patch new file mode 100644 index 0000000..7704123 --- /dev/null +++ b/buildroot/package/socat/0004-xio-tun-remove-if_tun.h-kernel-header.patch @@ -0,0 +1,91 @@ +From 1c141194e3587cc8124e5f4512dc3030e5a104b1 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 28 Aug 2016 22:06:09 +0200 +Subject: [PATCH] xio-tun: remove if_tun.h kernel header + +xio-tun mixes userspace and kernel headers. + +http://wiki.musl-libc.org/wiki/FAQ#Q:_why_am_i_getting_.22error:_redefinition_of_struct_ethhdr.2Ftcphdr.2Fetc.22_.3F + +Signed-off-by: Romain Naour +--- + config.h.in | 3 --- + configure.in | 8 +------- + sysincludes.h | 3 --- + xio-tun.c | 6 ++++++ + 4 files changed, 7 insertions(+), 13 deletions(-) + +diff --git a/config.h.in b/config.h.in +index 9058bf8..ed0962c 100644 +--- a/config.h.in ++++ b/config.h.in +@@ -258,9 +258,6 @@ + /* Define if you have the header file. */ + #undef HAVE_LINUX_ERRQUEUE_H + +-/* Define if you have the header file. */ +-#undef HAVE_LINUX_IF_TUN_H +- + /* Define if you have the header file. */ + #undef HAVE_NETPACKET_PACKET_H + +diff --git a/configure.in b/configure.in +index 1d2e76f..27bb3d5 100644 +--- a/configure.in ++++ b/configure.in +@@ -78,7 +78,7 @@ AC_CHECK_HEADERS(arpa/nameser.h) + + AC_HEADER_RESOLV() + +-AC_CHECK_HEADERS(termios.h linux/if_tun.h) ++AC_CHECK_HEADERS(termios.h) + AC_CHECK_HEADERS(net/if_dl.h) + AC_CHECK_HEADERS(linux/types.h) + AC_CHECK_HEADER(linux/errqueue.h, AC_DEFINE(HAVE_LINUX_ERRQUEUE_H), [], [#include +@@ -680,12 +680,6 @@ AC_ARG_ENABLE(tun, [ --disable-tun disable TUN/TAP support], + esac], + [AC_MSG_RESULT(yes); WITH_TUN=1 ]) + +-# +-if ! test "$ac_cv_header_linux_if_tun_h" = 'yes'; then +- AC_MSG_WARN(include file linux/if_tun.h not found, disabling TUN) +- WITH_TUN= +-fi +-# + if test -n "$WITH_TUN"; then + AC_DEFINE(WITH_TUN) + fi +diff --git a/sysincludes.h b/sysincludes.h +index 98dff77..28067f4 100644 +--- a/sysincludes.h ++++ b/sysincludes.h +@@ -142,9 +142,6 @@ + #if HAVE_NETINET_IF_ETHER_H + #include + #endif +-#if HAVE_LINUX_IF_TUN_H +-#include +-#endif + + #if HAVE_TERMIOS_H && _WITH_TERMIOS + #include +diff --git a/xio-tun.c b/xio-tun.c +index 0628d27..f965a7e 100644 +--- a/xio-tun.c ++++ b/xio-tun.c +@@ -14,6 +14,12 @@ + + #include "xio-tun.h" + ++/* TUNSETIFF flags from if_tun.h kernel header */ ++#define IFF_TUN 0x0001 ++#define IFF_TAP 0x0002 ++#define IFF_NO_PI 0x1000 ++ ++#define TUNSETIFF _IOW('T', 202, int) + + static int xioopen_tun(int argc, const char *argv[], struct opt *opts, int xioflags, xiofile_t *fd, unsigned groups, int dummy1, int dummy2, int dummy3); + +-- +2.5.5 + diff --git a/buildroot/package/socat/Config.in b/buildroot/package/socat/Config.in new file mode 100644 index 0000000..af456ab --- /dev/null +++ b/buildroot/package/socat/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SOCAT + bool "socat" + depends on BR2_USE_MMU # fork() + help + Multipurpose socket relay program. + + http://www.dest-unreach.org/socat/ diff --git a/buildroot/package/socat/socat.hash b/buildroot/package/socat/socat.hash new file mode 100644 index 0000000..77abcf2 --- /dev/null +++ b/buildroot/package/socat/socat.hash @@ -0,0 +1,8 @@ +# From http://www.dest-unreach.org/socat/download.md5sum +md5 607a24c15bd2cb54e9328bfbbd3a1ae9 socat-1.7.3.2.tar.bz2 +# Calculated based on the hash above +sha256 e3561f808739383eb10fada1e5d4f26883f0311b34fd0af7837d0c95ef379251 socat-1.7.3.2.tar.bz2 +# Locally calculated +sha256 4846488cea98a2905dc75b7aa5eea721568e372447efe06b85bd896ee8c54f10 README +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 fd9e48ca316a5032069b9521f4f4b4d9b1c60365012bae1e62286bcd5bd2e761 COPYING.OpenSSL diff --git a/buildroot/package/socat/socat.mk b/buildroot/package/socat/socat.mk new file mode 100644 index 0000000..5fea067 --- /dev/null +++ b/buildroot/package/socat/socat.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# socat +# +################################################################################ + +SOCAT_VERSION = 1.7.3.2 +SOCAT_SOURCE = socat-$(SOCAT_VERSION).tar.bz2 +SOCAT_SITE = http://www.dest-unreach.org/socat/download +SOCAT_LICENSE = GPL-2.0 with OpenSSL exception +SOCAT_LICENSE_FILES = README COPYING COPYING.OpenSSL + +SOCAT_CONF_ENV = sc_cv_termios_ispeed=no + +ifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y) +SOCAT_CONF_ENV += \ + sc_cv_sys_crdly_shift=12 \ + sc_cv_sys_tabdly_shift=10 \ + sc_cv_sys_csize_shift=8 +else +SOCAT_CONF_ENV += \ + sc_cv_sys_crdly_shift=9 \ + sc_cv_sys_tabdly_shift=11 \ + sc_cv_sys_csize_shift=4 +endif + +# We need to run autoconf to regenerate the configure script, since we patch +# configure.in and Makefile.in. However, the package only uses autoconf and not +# automake, so we can't use the normal autoreconf logic. + +SOCAT_DEPENDENCIES = host-autoconf + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SOCAT_DEPENDENCIES += openssl +else +SOCAT_CONF_OPTS += --disable-openssl +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +SOCAT_DEPENDENCIES += readline +else +SOCAT_CONF_OPTS += --disable-readline +endif + +define SOCAT_RUN_AUTOCONF + (cd $(@D); $(HOST_DIR)/bin/autoconf) +endef + +SOCAT_PRE_CONFIGURE_HOOKS += SOCAT_RUN_AUTOCONF + +$(eval $(autotools-package)) diff --git a/buildroot/package/socketcand/Config.in b/buildroot/package/socketcand/Config.in new file mode 100644 index 0000000..7d66325 --- /dev/null +++ b/buildroot/package/socketcand/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_SOCKETCAND + bool "socketcand" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + Socketcand is a daemon that provides access to CAN interfaces + on a machine via a network interface. + + https://github.com/dschanoeh/socketcand + +comment "socketcand needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/socketcand/socketcand.hash b/buildroot/package/socketcand/socketcand.hash new file mode 100644 index 0000000..6398d6d --- /dev/null +++ b/buildroot/package/socketcand/socketcand.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 7e9a02fdd61be8780ca3ff8678a37f8574fdcf74b1ab9de79bbb65257daf05db socketcand-df7fb4ff8a4439d7737fe2df3540e1ab7465721a.tar.gz diff --git a/buildroot/package/socketcand/socketcand.mk b/buildroot/package/socketcand/socketcand.mk new file mode 100644 index 0000000..aeb052c --- /dev/null +++ b/buildroot/package/socketcand/socketcand.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# socketcand +# +################################################################################ + +SOCKETCAND_VERSION = df7fb4ff8a4439d7737fe2df3540e1ab7465721a +SOCKETCAND_SITE = $(call github,dschanoeh,socketcand,$(SOCKETCAND_VERSION)) +SOCKETCAND_AUTORECONF = YES +SOCKETCAND_LICENSE = BSD-3-Clause or GPL-2.0 +SOCKETCAND_LICENSE_FILES = socketcand.c + +ifeq ($(BR2_PACKAGE_LIBCONFIG),y) +SOCKETCAND_DEPENDENCIES = libconfig +else +SOCKETCAND_CONF_OPTS = --without-config +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sofia-sip/0001-soa_tag.h-reintroduce-soatag_local_sdp_str_ref.patch b/buildroot/package/sofia-sip/0001-soa_tag.h-reintroduce-soatag_local_sdp_str_ref.patch new file mode 100644 index 0000000..2d52348 --- /dev/null +++ b/buildroot/package/sofia-sip/0001-soa_tag.h-reintroduce-soatag_local_sdp_str_ref.patch @@ -0,0 +1,26 @@ +From bcd0f17fd83f2dfe570a3ab17249a5c7290b27f2 Mon Sep 17 00:00:00 2001 +From: Pekka Pessi +Date: Thu, 24 Mar 2011 14:45:21 +0200 +Subject: [PATCH] soa_tag.h: reintroduce soatag_local_sdp_str_ref + +Thanks to Erik Habicht for spotting it +--- + libsofia-sip-ua/soa/sofia-sip/soa_tag.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/libsofia-sip-ua/soa/sofia-sip/soa_tag.h b/libsofia-sip-ua/soa/sofia-sip/soa_tag.h +index 723ca02..d9448d6 100644 +--- a/libsofia-sip-ua/soa/sofia-sip/soa_tag.h ++++ b/libsofia-sip-ua/soa/sofia-sip/soa_tag.h +@@ -118,7 +118,7 @@ SOFIAPUBVAR tag_typedef_t soatag_local_sdp_ref; + SOFIAPUBVAR tag_typedef_t soatag_local_sdp_str; + #define SOATAG_LOCAL_SDP_STR_REF(x) \ + soatag_local_sdp_str_ref, tag_str_vr(&(x)) +-SOFIAPUBVAR tag_typedef_t soatag_session_sdp_str_ref; ++SOFIAPUBVAR tag_typedef_t soatag_local_sdp_str_ref; + + #define SOATAG_AF(x) soatag_af, tag_int_v((x)) + SOFIAPUBVAR tag_typedef_t soatag_af; +-- +1.7.7 + diff --git a/buildroot/package/sofia-sip/Config.in b/buildroot/package/sofia-sip/Config.in new file mode 100644 index 0000000..24e2148 --- /dev/null +++ b/buildroot/package/sofia-sip/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_SOFIA_SIP + bool "sofia-sip" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Sofia-SIP is an open-source SIP User-Agent library, + compliant with the IETF RFC3261 specification (see the + feature table). It can be used as a building block for SIP + client software for uses such as VoIP, IM, and many other + real-time and person-to-person communication services. + + http://sofia-sip.sourceforge.net/ + +comment "sofia-sip needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/sofia-sip/sofia-sip.hash b/buildroot/package/sofia-sip/sofia-sip.hash new file mode 100644 index 0000000..fe9c4b1 --- /dev/null +++ b/buildroot/package/sofia-sip/sofia-sip.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2b01bc2e1826e00d1f7f57d29a2854b15fd5fe24695e47a14a735d195dd37c81 sofia-sip-1.12.11.tar.gz diff --git a/buildroot/package/sofia-sip/sofia-sip.mk b/buildroot/package/sofia-sip/sofia-sip.mk new file mode 100644 index 0000000..831b9ea --- /dev/null +++ b/buildroot/package/sofia-sip/sofia-sip.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# sofia-sip +# +################################################################################ + +SOFIA_SIP_VERSION = 1.12.11 +SOFIA_SIP_SITE = http://downloads.sourceforge.net/project/sofia-sip/sofia-sip/$(SOFIA_SIP_VERSION) +SOFIA_SIP_INSTALL_STAGING = YES +SOFIA_SIP_DEPENDENCIES = host-pkgconf +SOFIA_SIP_LICENSE = LGPL-2.1+ +SOFIA_SIP_LICENSE_FILES = COPYING COPYRIGHTS +SOFIA_SIP_CONF_OPTS = --with-doxygen=no + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +SOFIA_SIP_CONF_OPTS += --with-glib +SOFIA_SIP_DEPENDENCIES += libglib2 +else +SOFIA_SIP_CONF_OPTS += --without-glib +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SOFIA_SIP_CONF_OPTS += --with-openssl +SOFIA_SIP_DEPENDENCIES += openssl +else +SOFIA_SIP_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_ENABLE_DEBUG),y) +SOFIA_SIP_CONF_OPTS += --enable-ndebug +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/softether/0001-Create-autotools-plumbing-for-SoftEther.patch b/buildroot/package/softether/0001-Create-autotools-plumbing-for-SoftEther.patch new file mode 100644 index 0000000..3f17a74 --- /dev/null +++ b/buildroot/package/softether/0001-Create-autotools-plumbing-for-SoftEther.patch @@ -0,0 +1,2105 @@ +From c5e5d7e93c6f3302adf5821c29c4efdb7630e418 Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Sat, 12 Apr 2014 17:46:04 -0400 +Subject: [PATCH] Create autotools plumbing for SoftEther. + +Add autoconf and automake capabilities to SoftEther so that it can be built +like this: + + # autoreconf --force --install + # ./configure + # make install DESTDIR=/tmp/softether + +All standard configure parameters are supported, plus: + + # ./configure --enable-debug + +Autotools support makes porting, cross compiling, and optimization much easier. + +These GNU autoconf-archive components are used for dependency checking: + + * ax_check_openssl.m4 + * ax_check_zlib.m4 + * ax_lib_readline.m4 + * ax_pthread.m4 + * ax_with_curses.m4 + +NB: http://www.gnu.org/software/autoconf-archive/ + +[Upstream commit: https://github.com/dajhorn/SoftEtherVPN/commit/c5e5d7e93c6f3302adf5821c29c4efdb7630e418] +Signed-off-by: Thomas Petazzoni +--- + Makefile.am | 21 ++ + autotools/ax_check_openssl.m4 | 124 ++++++++++ + autotools/ax_check_zlib.m4 | 142 +++++++++++ + autotools/ax_lib_readline.m4 | 107 +++++++++ + autotools/ax_pthread.m4 | 332 ++++++++++++++++++++++++++ + autotools/ax_with_curses.m4 | 518 +++++++++++++++++++++++++++++++++++++++++ + autotools/softether.am | 39 ++++ + configure.ac | 96 ++++++++ + configure => manual_configure | 0 + src/Cedar/Makefile.am | 82 +++++++ + src/Makefile.am | 26 +++ + src/Mayaqua/Makefile.am | 43 ++++ + src/bin/hamcore/Makefile.am | 29 +++ + src/hamcorebuilder/Makefile.am | 29 +++ + src/vpnbridge/Makefile.am | 29 +++ + src/vpnclient/Makefile.am | 29 +++ + src/vpncmd/Makefile.am | 29 +++ + src/vpnserver/Makefile.am | 29 +++ + 18 files changed, 1704 insertions(+) + create mode 100644 Makefile.am + create mode 100644 autotools/ax_check_openssl.m4 + create mode 100644 autotools/ax_check_zlib.m4 + create mode 100644 autotools/ax_lib_readline.m4 + create mode 100644 autotools/ax_pthread.m4 + create mode 100644 autotools/ax_with_curses.m4 + create mode 100644 autotools/softether.am + create mode 100644 configure.ac + rename configure => manual_configure (100%) + create mode 100644 src/Cedar/Makefile.am + create mode 100644 src/Makefile.am + create mode 100644 src/Mayaqua/Makefile.am + create mode 100644 src/bin/hamcore/Makefile.am + create mode 100644 src/hamcorebuilder/Makefile.am + create mode 100644 src/vpnbridge/Makefile.am + create mode 100644 src/vpnclient/Makefile.am + create mode 100644 src/vpncmd/Makefile.am + create mode 100644 src/vpnserver/Makefile.am + +diff --git a/Makefile.am b/Makefile.am +new file mode 100644 +index 00000000..aa73b2ba +--- /dev/null ++++ b/Makefile.am +@@ -0,0 +1,21 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++ACLOCAL_AMFLAGS = -I autotools ++include $(top_srcdir)/autotools/softether.am ++SUBDIRS = src +diff --git a/autotools/ax_check_openssl.m4 b/autotools/ax_check_openssl.m4 +new file mode 100644 +index 00000000..a87c5a6b +--- /dev/null ++++ b/autotools/ax_check_openssl.m4 +@@ -0,0 +1,124 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_openssl.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_OPENSSL([action-if-found[, action-if-not-found]]) ++# ++# DESCRIPTION ++# ++# Look for OpenSSL in a number of default spots, or in a user-selected ++# spot (via --with-openssl). Sets ++# ++# OPENSSL_INCLUDES to the include directives required ++# OPENSSL_LIBS to the -l directives required ++# OPENSSL_LDFLAGS to the -L or -R flags required ++# ++# and calls ACTION-IF-FOUND or ACTION-IF-NOT-FOUND appropriately ++# ++# This macro sets OPENSSL_INCLUDES such that source files should use the ++# openssl/ directory in include directives: ++# ++# #include ++# ++# LICENSE ++# ++# Copyright (c) 2009,2010 Zmanda Inc. ++# Copyright (c) 2009,2010 Dustin J. Mitchell ++# ++# Copying and distribution of this file, with or without modification, are ++# permitted in any medium without royalty provided the copyright notice ++# and this notice are preserved. This file is offered as-is, without any ++# warranty. ++ ++#serial 8 ++ ++AU_ALIAS([CHECK_SSL], [AX_CHECK_OPENSSL]) ++AC_DEFUN([AX_CHECK_OPENSSL], [ ++ found=false ++ AC_ARG_WITH([openssl], ++ [AS_HELP_STRING([--with-openssl=DIR], ++ [root of the OpenSSL directory])], ++ [ ++ case "$withval" in ++ "" | y | ye | yes | n | no) ++ AC_MSG_ERROR([Invalid --with-openssl value]) ++ ;; ++ *) ssldirs="$withval" ++ ;; ++ esac ++ ], [ ++ # if pkg-config is installed and openssl has installed a .pc file, ++ # then use that information and don't search ssldirs ++ AC_PATH_PROG([PKG_CONFIG], [pkg-config]) ++ if test x"$PKG_CONFIG" != x""; then ++ OPENSSL_LDFLAGS=`$PKG_CONFIG openssl --libs-only-L 2>/dev/null` ++ if test $? = 0; then ++ OPENSSL_LIBS=`$PKG_CONFIG openssl --libs-only-l 2>/dev/null` ++ OPENSSL_INCLUDES=`$PKG_CONFIG openssl --cflags-only-I 2>/dev/null` ++ found=true ++ fi ++ fi ++ ++ # no such luck; use some default ssldirs ++ if ! $found; then ++ ssldirs="/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr" ++ fi ++ ] ++ ) ++ ++ ++ # note that we #include , so the OpenSSL headers have to be in ++ # an 'openssl' subdirectory ++ ++ if ! $found; then ++ OPENSSL_INCLUDES= ++ for ssldir in $ssldirs; do ++ AC_MSG_CHECKING([for openssl/ssl.h in $ssldir]) ++ if test -f "$ssldir/include/openssl/ssl.h"; then ++ OPENSSL_INCLUDES="-I$ssldir/include" ++ OPENSSL_LDFLAGS="-L$ssldir/lib" ++ OPENSSL_LIBS="-lssl -lcrypto" ++ found=true ++ AC_MSG_RESULT([yes]) ++ break ++ else ++ AC_MSG_RESULT([no]) ++ fi ++ done ++ ++ # if the file wasn't found, well, go ahead and try the link anyway -- maybe ++ # it will just work! ++ fi ++ ++ # try the preprocessor and linker with our new flags, ++ # being careful not to pollute the global LIBS, LDFLAGS, and CPPFLAGS ++ ++ AC_MSG_CHECKING([whether compiling and linking against OpenSSL works]) ++ echo "Trying link with OPENSSL_LDFLAGS=$OPENSSL_LDFLAGS;" \ ++ "OPENSSL_LIBS=$OPENSSL_LIBS; OPENSSL_INCLUDES=$OPENSSL_INCLUDES" >&AS_MESSAGE_LOG_FD ++ ++ save_LIBS="$LIBS" ++ save_LDFLAGS="$LDFLAGS" ++ save_CPPFLAGS="$CPPFLAGS" ++ LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" ++ LIBS="$OPENSSL_LIBS $LIBS" ++ CPPFLAGS="$OPENSSL_INCLUDES $CPPFLAGS" ++ AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM([#include ], [SSL_new(NULL)])], ++ [ ++ AC_MSG_RESULT([yes]) ++ $1 ++ ], [ ++ AC_MSG_RESULT([no]) ++ $2 ++ ]) ++ CPPFLAGS="$save_CPPFLAGS" ++ LDFLAGS="$save_LDFLAGS" ++ LIBS="$save_LIBS" ++ ++ AC_SUBST([OPENSSL_INCLUDES]) ++ AC_SUBST([OPENSSL_LIBS]) ++ AC_SUBST([OPENSSL_LDFLAGS]) ++]) +diff --git a/autotools/ax_check_zlib.m4 b/autotools/ax_check_zlib.m4 +new file mode 100644 +index 00000000..ae5705f6 +--- /dev/null ++++ b/autotools/ax_check_zlib.m4 +@@ -0,0 +1,142 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_zlib.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_ZLIB([action-if-found], [action-if-not-found]) ++# ++# DESCRIPTION ++# ++# This macro searches for an installed zlib library. If nothing was ++# specified when calling configure, it searches first in /usr/local and ++# then in /usr, /opt/local and /sw. If the --with-zlib=DIR is specified, ++# it will try to find it in DIR/include/zlib.h and DIR/lib/libz.a. If ++# --without-zlib is specified, the library is not searched at all. ++# ++# If either the header file (zlib.h) or the library (libz) is not found, ++# shell commands 'action-if-not-found' is run. If 'action-if-not-found' is ++# not specified, the configuration exits on error, asking for a valid zlib ++# installation directory or --without-zlib. ++# ++# If both header file and library are found, shell commands ++# 'action-if-found' is run. If 'action-if-found' is not specified, the ++# default action appends '-I${ZLIB_HOME}/include' to CPFLAGS, appends ++# '-L$ZLIB_HOME}/lib' to LDFLAGS, prepends '-lz' to LIBS, and calls ++# AC_DEFINE(HAVE_LIBZ). You should use autoheader to include a definition ++# for this symbol in a config.h file. Sample usage in a C/C++ source is as ++# follows: ++# ++# #ifdef HAVE_LIBZ ++# #include ++# #endif /* HAVE_LIBZ */ ++# ++# LICENSE ++# ++# Copyright (c) 2008 Loic Dachary ++# Copyright (c) 2010 Bastien Chevreux ++# ++# 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, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 14 ++ ++AU_ALIAS([CHECK_ZLIB], [AX_CHECK_ZLIB]) ++AC_DEFUN([AX_CHECK_ZLIB], ++# ++# Handle user hints ++# ++[AC_MSG_CHECKING(if zlib is wanted) ++zlib_places="/usr/local /usr /opt/local /sw" ++AC_ARG_WITH([zlib], ++[ --with-zlib=DIR root directory path of zlib installation @<:@defaults to ++ /usr/local or /usr if not found in /usr/local@:>@ ++ --without-zlib to disable zlib usage completely], ++[if test "$withval" != no ; then ++ AC_MSG_RESULT(yes) ++ if test -d "$withval" ++ then ++ zlib_places="$withval $zlib_places" ++ else ++ AC_MSG_WARN([Sorry, $withval does not exist, checking usual places]) ++ fi ++else ++ zlib_places= ++ AC_MSG_RESULT(no) ++fi], ++[AC_MSG_RESULT(yes)]) ++ ++# ++# Locate zlib, if wanted ++# ++if test -n "${zlib_places}" ++then ++ # check the user supplied or any other more or less 'standard' place: ++ # Most UNIX systems : /usr/local and /usr ++ # MacPorts / Fink on OSX : /opt/local respectively /sw ++ for ZLIB_HOME in ${zlib_places} ; do ++ if test -f "${ZLIB_HOME}/include/zlib.h"; then break; fi ++ ZLIB_HOME="" ++ done ++ ++ ZLIB_OLD_LDFLAGS=$LDFLAGS ++ ZLIB_OLD_CPPFLAGS=$CPPFLAGS ++ if test -n "${ZLIB_HOME}"; then ++ LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" ++ CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include" ++ fi ++ AC_LANG_SAVE ++ AC_LANG_C ++ AC_CHECK_LIB([z], [inflateEnd], [zlib_cv_libz=yes], [zlib_cv_libz=no]) ++ AC_CHECK_HEADER([zlib.h], [zlib_cv_zlib_h=yes], [zlib_cv_zlib_h=no]) ++ AC_LANG_RESTORE ++ if test "$zlib_cv_libz" = "yes" && test "$zlib_cv_zlib_h" = "yes" ++ then ++ # ++ # If both library and header were found, action-if-found ++ # ++ m4_ifblank([$1],[ ++ CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include" ++ LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" ++ LIBS="-lz $LIBS" ++ AC_DEFINE([HAVE_LIBZ], [1], ++ [Define to 1 if you have `z' library (-lz)]) ++ ],[ ++ # Restore variables ++ LDFLAGS="$ZLIB_OLD_LDFLAGS" ++ CPPFLAGS="$ZLIB_OLD_CPPFLAGS" ++ $1 ++ ]) ++ else ++ # ++ # If either header or library was not found, action-if-not-found ++ # ++ m4_default([$2],[ ++ AC_MSG_ERROR([either specify a valid zlib installation with --with-zlib=DIR or disable zlib usage with --without-zlib]) ++ ]) ++ fi ++fi ++]) +diff --git a/autotools/ax_lib_readline.m4 b/autotools/ax_lib_readline.m4 +new file mode 100644 +index 00000000..056f25c2 +--- /dev/null ++++ b/autotools/ax_lib_readline.m4 +@@ -0,0 +1,107 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_lib_readline.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_LIB_READLINE ++# ++# DESCRIPTION ++# ++# Searches for a readline compatible library. If found, defines ++# `HAVE_LIBREADLINE'. If the found library has the `add_history' function, ++# sets also `HAVE_READLINE_HISTORY'. Also checks for the locations of the ++# necessary include files and sets `HAVE_READLINE_H' or ++# `HAVE_READLINE_READLINE_H' and `HAVE_READLINE_HISTORY_H' or ++# 'HAVE_HISTORY_H' if the corresponding include files exists. ++# ++# The libraries that may be readline compatible are `libedit', ++# `libeditline' and `libreadline'. Sometimes we need to link a termcap ++# library for readline to work, this macro tests these cases too by trying ++# to link with `libtermcap', `libcurses' or `libncurses' before giving up. ++# ++# Here is an example of how to use the information provided by this macro ++# to perform the necessary includes or declarations in a C file: ++# ++# #ifdef HAVE_LIBREADLINE ++# # if defined(HAVE_READLINE_READLINE_H) ++# # include ++# # elif defined(HAVE_READLINE_H) ++# # include ++# # else /* !defined(HAVE_READLINE_H) */ ++# extern char *readline (); ++# # endif /* !defined(HAVE_READLINE_H) */ ++# char *cmdline = NULL; ++# #else /* !defined(HAVE_READLINE_READLINE_H) */ ++# /* no readline */ ++# #endif /* HAVE_LIBREADLINE */ ++# ++# #ifdef HAVE_READLINE_HISTORY ++# # if defined(HAVE_READLINE_HISTORY_H) ++# # include ++# # elif defined(HAVE_HISTORY_H) ++# # include ++# # else /* !defined(HAVE_HISTORY_H) */ ++# extern void add_history (); ++# extern int write_history (); ++# extern int read_history (); ++# # endif /* defined(HAVE_READLINE_HISTORY_H) */ ++# /* no history */ ++# #endif /* HAVE_READLINE_HISTORY */ ++# ++# LICENSE ++# ++# Copyright (c) 2008 Ville Laurikari ++# ++# Copying and distribution of this file, with or without modification, are ++# permitted in any medium without royalty provided the copyright notice ++# and this notice are preserved. This file is offered as-is, without any ++# warranty. ++ ++#serial 6 ++ ++AU_ALIAS([VL_LIB_READLINE], [AX_LIB_READLINE]) ++AC_DEFUN([AX_LIB_READLINE], [ ++ AC_CACHE_CHECK([for a readline compatible library], ++ ax_cv_lib_readline, [ ++ ORIG_LIBS="$LIBS" ++ for readline_lib in readline edit editline; do ++ for termcap_lib in "" termcap curses ncurses; do ++ if test -z "$termcap_lib"; then ++ TRY_LIB="-l$readline_lib" ++ else ++ TRY_LIB="-l$readline_lib -l$termcap_lib" ++ fi ++ LIBS="$ORIG_LIBS $TRY_LIB" ++ AC_TRY_LINK_FUNC(readline, ax_cv_lib_readline="$TRY_LIB") ++ if test -n "$ax_cv_lib_readline"; then ++ break ++ fi ++ done ++ if test -n "$ax_cv_lib_readline"; then ++ break ++ fi ++ done ++ if test -z "$ax_cv_lib_readline"; then ++ ax_cv_lib_readline="no" ++ fi ++ LIBS="$ORIG_LIBS" ++ ]) ++ ++ if test "$ax_cv_lib_readline" != "no"; then ++ LIBS="$LIBS $ax_cv_lib_readline" ++ AC_DEFINE(HAVE_LIBREADLINE, 1, ++ [Define if you have a readline compatible library]) ++ AC_CHECK_HEADERS(readline.h readline/readline.h) ++ AC_CACHE_CHECK([whether readline supports history], ++ ax_cv_lib_readline_history, [ ++ ax_cv_lib_readline_history="no" ++ AC_TRY_LINK_FUNC(add_history, ax_cv_lib_readline_history="yes") ++ ]) ++ if test "$ax_cv_lib_readline_history" = "yes"; then ++ AC_DEFINE(HAVE_READLINE_HISTORY, 1, ++ [Define if your readline library has \`add_history']) ++ AC_CHECK_HEADERS(history.h readline/history.h) ++ fi ++ fi ++])dnl +diff --git a/autotools/ax_pthread.m4 b/autotools/ax_pthread.m4 +new file mode 100644 +index 00000000..d383ad5c +--- /dev/null ++++ b/autotools/ax_pthread.m4 +@@ -0,0 +1,332 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_pthread.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) ++# ++# DESCRIPTION ++# ++# This macro figures out how to build C programs using POSIX threads. It ++# sets the PTHREAD_LIBS output variable to the threads library and linker ++# flags, and the PTHREAD_CFLAGS output variable to any special C compiler ++# flags that are needed. (The user can also force certain compiler ++# flags/libs to be tested by setting these environment variables.) ++# ++# Also sets PTHREAD_CC to any special C compiler that is needed for ++# multi-threaded programs (defaults to the value of CC otherwise). (This ++# is necessary on AIX to use the special cc_r compiler alias.) ++# ++# NOTE: You are assumed to not only compile your program with these flags, ++# but also link it with them as well. e.g. you should link with ++# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS ++# ++# If you are only building threads programs, you may wish to use these ++# variables in your default LIBS, CFLAGS, and CC: ++# ++# LIBS="$PTHREAD_LIBS $LIBS" ++# CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++# CC="$PTHREAD_CC" ++# ++# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant ++# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name ++# (e.g. PTHREAD_CREATE_UNDETACHED on AIX). ++# ++# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the ++# PTHREAD_PRIO_INHERIT symbol is defined when compiling with ++# PTHREAD_CFLAGS. ++# ++# ACTION-IF-FOUND is a list of shell commands to run if a threads library ++# is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it ++# is not found. If ACTION-IF-FOUND is not specified, the default action ++# will define HAVE_PTHREAD. ++# ++# Please let the authors know if this macro fails on any platform, or if ++# you have any other suggestions or comments. This macro was based on work ++# by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help ++# from M. Frigo), as well as ac_pthread and hb_pthread macros posted by ++# Alejandro Forero Cuervo to the autoconf macro repository. We are also ++# grateful for the helpful feedback of numerous users. ++# ++# Updated for Autoconf 2.68 by Daniel Richard G. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Steven G. Johnson ++# Copyright (c) 2011 Daniel Richard G. ++# ++# 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 3 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, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 21 ++ ++AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) ++AC_DEFUN([AX_PTHREAD], [ ++AC_REQUIRE([AC_CANONICAL_HOST]) ++AC_LANG_PUSH([C]) ++ax_pthread_ok=no ++ ++# We used to check for pthread.h first, but this fails if pthread.h ++# requires special compiler flags (e.g. on True64 or Sequent). ++# It gets checked for in the link test anyway. ++ ++# First of all, check if the user has set any of the PTHREAD_LIBS, ++# etcetera environment variables, and if threads linking works using ++# them: ++if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then ++ save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++ save_LIBS="$LIBS" ++ LIBS="$PTHREAD_LIBS $LIBS" ++ AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) ++ AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes]) ++ AC_MSG_RESULT([$ax_pthread_ok]) ++ if test x"$ax_pthread_ok" = xno; then ++ PTHREAD_LIBS="" ++ PTHREAD_CFLAGS="" ++ fi ++ LIBS="$save_LIBS" ++ CFLAGS="$save_CFLAGS" ++fi ++ ++# We must check for the threads library under a number of different ++# names; the ordering is very important because some systems ++# (e.g. DEC) have both -lpthread and -lpthreads, where one of the ++# libraries is broken (non-POSIX). ++ ++# Create a list of thread flags to try. Items starting with a "-" are ++# C compiler flags, and other items are library names, except for "none" ++# which indicates that we try without any flags at all, and "pthread-config" ++# which is a program returning the flags for the Pth emulation library. ++ ++ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" ++ ++# The ordering *is* (sometimes) important. Some notes on the ++# individual items follow: ++ ++# pthreads: AIX (must check this before -lpthread) ++# none: in case threads are in libc; should be tried before -Kthread and ++# other compiler flags to prevent continual compiler warnings ++# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) ++# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) ++# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) ++# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) ++# -pthreads: Solaris/gcc ++# -mthreads: Mingw32/gcc, Lynx/gcc ++# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it ++# doesn't hurt to check since this sometimes defines pthreads too; ++# also defines -D_REENTRANT) ++# ... -mt is also the pthreads flag for HP/aCC ++# pthread: Linux, etcetera ++# --thread-safe: KAI C++ ++# pthread-config: use pthread-config program (for GNU Pth library) ++ ++case ${host_os} in ++ solaris*) ++ ++ # On Solaris (at least, for some versions), libc contains stubbed ++ # (non-functional) versions of the pthreads routines, so link-based ++ # tests will erroneously succeed. (We need to link with -pthreads/-mt/ ++ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather ++ # a function called by this macro, so we could check for that, but ++ # who knows whether they'll stub that too in a future libc.) So, ++ # we'll just look for -pthreads and -lpthread first: ++ ++ ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ++ ;; ++ ++ darwin*) ++ ax_pthread_flags="-pthread $ax_pthread_flags" ++ ;; ++esac ++ ++# Clang doesn't consider unrecognized options an error unless we specify ++# -Werror. We throw in some extra Clang-specific options to ensure that ++# this doesn't happen for GCC, which also accepts -Werror. ++ ++AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags]) ++save_CFLAGS="$CFLAGS" ++ax_pthread_extra_flags="-Werror" ++CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument" ++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])], ++ [AC_MSG_RESULT([yes])], ++ [ax_pthread_extra_flags= ++ AC_MSG_RESULT([no])]) ++CFLAGS="$save_CFLAGS" ++ ++if test x"$ax_pthread_ok" = xno; then ++for flag in $ax_pthread_flags; do ++ ++ case $flag in ++ none) ++ AC_MSG_CHECKING([whether pthreads work without any flags]) ++ ;; ++ ++ -*) ++ AC_MSG_CHECKING([whether pthreads work with $flag]) ++ PTHREAD_CFLAGS="$flag" ++ ;; ++ ++ pthread-config) ++ AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) ++ if test x"$ax_pthread_config" = xno; then continue; fi ++ PTHREAD_CFLAGS="`pthread-config --cflags`" ++ PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ++ ;; ++ ++ *) ++ AC_MSG_CHECKING([for the pthreads library -l$flag]) ++ PTHREAD_LIBS="-l$flag" ++ ;; ++ esac ++ ++ save_LIBS="$LIBS" ++ save_CFLAGS="$CFLAGS" ++ LIBS="$PTHREAD_LIBS $LIBS" ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags" ++ ++ # Check for various functions. We must include pthread.h, ++ # since some functions may be macros. (On the Sequent, we ++ # need a special flag -Kthread to make this header compile.) ++ # We check for pthread_join because it is in -lpthread on IRIX ++ # while pthread_create is in libc. We check for pthread_attr_init ++ # due to DEC craziness with -lpthreads. We check for ++ # pthread_cleanup_push because it is one of the few pthread ++ # functions on Solaris that doesn't have a non-functional libc stub. ++ # We try pthread_create on general principles. ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ++ static void routine(void *a) { a = 0; } ++ static void *start_routine(void *a) { return a; }], ++ [pthread_t th; pthread_attr_t attr; ++ pthread_create(&th, 0, start_routine, 0); ++ pthread_join(th, 0); ++ pthread_attr_init(&attr); ++ pthread_cleanup_push(routine, 0); ++ pthread_cleanup_pop(0) /* ; */])], ++ [ax_pthread_ok=yes], ++ []) ++ ++ LIBS="$save_LIBS" ++ CFLAGS="$save_CFLAGS" ++ ++ AC_MSG_RESULT([$ax_pthread_ok]) ++ if test "x$ax_pthread_ok" = xyes; then ++ break; ++ fi ++ ++ PTHREAD_LIBS="" ++ PTHREAD_CFLAGS="" ++done ++fi ++ ++# Various other checks: ++if test "x$ax_pthread_ok" = xyes; then ++ save_LIBS="$LIBS" ++ LIBS="$PTHREAD_LIBS $LIBS" ++ save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++ ++ # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. ++ AC_MSG_CHECKING([for joinable pthread attribute]) ++ attr_name=unknown ++ for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include ], ++ [int attr = $attr; return attr /* ; */])], ++ [attr_name=$attr; break], ++ []) ++ done ++ AC_MSG_RESULT([$attr_name]) ++ if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then ++ AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name], ++ [Define to necessary symbol if this constant ++ uses a non-standard name on your system.]) ++ fi ++ ++ AC_MSG_CHECKING([if more special flags are required for pthreads]) ++ flag=no ++ case ${host_os} in ++ aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; ++ osf* | hpux*) flag="-D_REENTRANT";; ++ solaris*) ++ if test "$GCC" = "yes"; then ++ flag="-D_REENTRANT" ++ else ++ # TODO: What about Clang on Solaris? ++ flag="-mt -D_REENTRANT" ++ fi ++ ;; ++ esac ++ AC_MSG_RESULT([$flag]) ++ if test "x$flag" != xno; then ++ PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" ++ fi ++ ++ AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT], ++ [ax_cv_PTHREAD_PRIO_INHERIT], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], ++ [[int i = PTHREAD_PRIO_INHERIT;]])], ++ [ax_cv_PTHREAD_PRIO_INHERIT=yes], ++ [ax_cv_PTHREAD_PRIO_INHERIT=no]) ++ ]) ++ AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"], ++ [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])]) ++ ++ LIBS="$save_LIBS" ++ CFLAGS="$save_CFLAGS" ++ ++ # More AIX lossage: compile with *_r variant ++ if test "x$GCC" != xyes; then ++ case $host_os in ++ aix*) ++ AS_CASE(["x/$CC"], ++ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6], ++ [#handle absolute path differently from PATH based program lookup ++ AS_CASE(["x$CC"], ++ [x/*], ++ [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])], ++ [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])]) ++ ;; ++ esac ++ fi ++fi ++ ++test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" ++ ++AC_SUBST([PTHREAD_LIBS]) ++AC_SUBST([PTHREAD_CFLAGS]) ++AC_SUBST([PTHREAD_CC]) ++ ++# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: ++if test x"$ax_pthread_ok" = xyes; then ++ ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1]) ++ : ++else ++ ax_pthread_ok=no ++ $2 ++fi ++AC_LANG_POP ++])dnl AX_PTHREAD +diff --git a/autotools/ax_with_curses.m4 b/autotools/ax_with_curses.m4 +new file mode 100644 +index 00000000..e4cbd31b +--- /dev/null ++++ b/autotools/ax_with_curses.m4 +@@ -0,0 +1,518 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_with_curses.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_WITH_CURSES ++# ++# DESCRIPTION ++# ++# This macro checks whether a SysV or X/Open-compatible Curses library is ++# present, along with the associated header file. The NcursesW ++# (wide-character) library is searched for first, followed by Ncurses, ++# then the system-default plain Curses. The first library found is the ++# one returned. ++# ++# The following options are understood: --with-ncursesw, --with-ncurses, ++# --without-ncursesw, --without-ncurses. The "--with" options force the ++# macro to use that particular library, terminating with an error if not ++# found. The "--without" options simply skip the check for that library. ++# The effect on the search pattern is: ++# ++# (no options) - NcursesW, Ncurses, Curses ++# --with-ncurses --with-ncursesw - NcursesW only [*] ++# --without-ncurses --with-ncursesw - NcursesW only [*] ++# --with-ncursesw - NcursesW only [*] ++# --with-ncurses --without-ncursesw - Ncurses only [*] ++# --with-ncurses - NcursesW, Ncurses [**] ++# --without-ncurses --without-ncursesw - Curses only ++# --without-ncursesw - Ncurses, Curses ++# --without-ncurses - NcursesW, Curses ++# ++# [*] If the library is not found, abort the configure script. ++# ++# [**] If the second library (Ncurses) is not found, abort configure. ++# ++# The following preprocessor symbols may be defined by this macro if the ++# appropriate conditions are met: ++# ++# HAVE_CURSES - if any SysV or X/Open Curses library found ++# HAVE_CURSES_ENHANCED - if library supports X/Open Enhanced functions ++# HAVE_CURSES_COLOR - if library supports color (enhanced functions) ++# HAVE_CURSES_OBSOLETE - if library supports certain obsolete features ++# HAVE_NCURSESW - if NcursesW (wide char) library is to be used ++# HAVE_NCURSES - if the Ncurses library is to be used ++# ++# HAVE_CURSES_H - if is present and should be used ++# HAVE_NCURSESW_H - if should be used ++# HAVE_NCURSES_H - if should be used ++# HAVE_NCURSESW_CURSES_H - if should be used ++# HAVE_NCURSES_CURSES_H - if should be used ++# ++# (These preprocessor symbols are discussed later in this document.) ++# ++# The following output variable is defined by this macro; it is precious ++# and may be overridden on the ./configure command line: ++# ++# CURSES_LIB - library to add to xxx_LDADD ++# ++# The library listed in CURSES_LIB is NOT added to LIBS by default. You ++# need to add CURSES_LIB to the appropriate xxx_LDADD line in your ++# Makefile.am. For example: ++# ++# prog_LDADD = @CURSES_LIB@ ++# ++# If CURSES_LIB is set on the configure command line (such as by running ++# "./configure CURSES_LIB=-lmycurses"), then the only header searched for ++# is . The user may use the CPPFLAGS precious variable to ++# override the standard #include search path. If the user needs to ++# specify an alternative path for a library (such as for a non-standard ++# NcurseW), the user should use the LDFLAGS variable. ++# ++# The following shell variables may be defined by this macro: ++# ++# ax_cv_curses - set to "yes" if any Curses library found ++# ax_cv_curses_enhanced - set to "yes" if Enhanced functions present ++# ax_cv_curses_color - set to "yes" if color functions present ++# ax_cv_curses_obsolete - set to "yes" if obsolete features present ++# ++# ax_cv_ncursesw - set to "yes" if NcursesW library found ++# ax_cv_ncurses - set to "yes" if Ncurses library found ++# ax_cv_plaincurses - set to "yes" if plain Curses library found ++# ax_cv_curses_which - set to "ncursesw", "ncurses", "plaincurses" or "no" ++# ++# These variables can be used in your configure.ac to determine the level ++# of support you need from the Curses library. For example, if you must ++# have either Ncurses or NcursesW, you could include: ++# ++# AX_WITH_CURSES ++# if test "x$ax_cv_ncursesw" != xyes && test "x$ax_cv_ncurses" != xyes; then ++# AC_MSG_ERROR([requires either NcursesW or Ncurses library]) ++# fi ++# ++# If any Curses library will do (but one must be present and must support ++# color), you could use: ++# ++# AX_WITH_CURSES ++# if test "x$ax_cv_curses" != xyes || test "x$ax_cv_curses_color" != xyes; then ++# AC_MSG_ERROR([requires an X/Open-compatible Curses library with color]) ++# fi ++# ++# Certain preprocessor symbols and shell variables defined by this macro ++# can be used to determine various features of the Curses library. In ++# particular, HAVE_CURSES and ax_cv_curses are defined if the Curses ++# library found conforms to the traditional SysV and/or X/Open Base Curses ++# definition. Any working Curses library conforms to this level. ++# ++# HAVE_CURSES_ENHANCED and ax_cv_curses_enhanced are defined if the ++# library supports the X/Open Enhanced Curses definition. In particular, ++# the wide-character types attr_t, cchar_t and wint_t, the functions ++# wattr_set() and wget_wch() and the macros WA_NORMAL and _XOPEN_CURSES ++# are checked. The Ncurses library does NOT conform to this definition, ++# although NcursesW does. ++# ++# HAVE_CURSES_COLOR and ax_cv_curses_color are defined if the library ++# supports color functions and macros such as COLOR_PAIR, A_COLOR, ++# COLOR_WHITE, COLOR_RED and init_pair(). These are NOT part of the ++# X/Open Base Curses definition, but are part of the Enhanced set of ++# functions. The Ncurses library DOES support these functions, as does ++# NcursesW. ++# ++# HAVE_CURSES_OBSOLETE and ax_cv_curses_obsolete are defined if the ++# library supports certain features present in SysV and BSD Curses but not ++# defined in the X/Open definition. In particular, the functions ++# getattrs(), getcurx() and getmaxx() are checked. ++# ++# To use the HAVE_xxx_H preprocessor symbols, insert the following into ++# your system.h (or equivalent) header file: ++# ++# #if defined HAVE_NCURSESW_CURSES_H ++# # include ++# #elif defined HAVE_NCURSESW_H ++# # include ++# #elif defined HAVE_NCURSES_CURSES_H ++# # include ++# #elif defined HAVE_NCURSES_H ++# # include ++# #elif defined HAVE_CURSES_H ++# # include ++# #else ++# # error "SysV or X/Open-compatible Curses header file required" ++# #endif ++# ++# For previous users of this macro: you should not need to change anything ++# in your configure.ac or Makefile.am, as the previous (serial 10) ++# semantics are still valid. However, you should update your system.h (or ++# equivalent) header file to the fragment shown above. You are encouraged ++# also to make use of the extended functionality provided by this version ++# of AX_WITH_CURSES, as well as in the additional macros ++# AX_WITH_CURSES_PANEL, AX_WITH_CURSES_MENU and AX_WITH_CURSES_FORM. ++# ++# LICENSE ++# ++# Copyright (c) 2009 Mark Pulford ++# Copyright (c) 2009 Damian Pietras ++# Copyright (c) 2012 Reuben Thomas ++# Copyright (c) 2011 John Zaitseff ++# ++# 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 3 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, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 15 ++ ++AU_ALIAS([MP_WITH_CURSES], [AX_WITH_CURSES]) ++AC_DEFUN([AX_WITH_CURSES], [ ++ AC_ARG_VAR([CURSES_LIB], [linker library for Curses, e.g. -lcurses]) ++ AC_ARG_WITH([ncurses], [AS_HELP_STRING([--with-ncurses], ++ [force the use of Ncurses or NcursesW])], ++ [], [with_ncurses=check]) ++ AC_ARG_WITH([ncursesw], [AS_HELP_STRING([--without-ncursesw], ++ [do not use NcursesW (wide character support)])], ++ [], [with_ncursesw=check]) ++ ++ ax_saved_LIBS=$LIBS ++ AS_IF([test "x$with_ncurses" = xyes || test "x$with_ncursesw" = xyes], ++ [ax_with_plaincurses=no], [ax_with_plaincurses=check]) ++ ++ ax_cv_curses_which=no ++ ++ # Test for NcursesW ++ ++ AS_IF([test "x$CURSES_LIB" = x && test "x$with_ncursesw" != xno], [ ++ LIBS="$ax_saved_LIBS -lncursesw" ++ ++ AC_CACHE_CHECK([for NcursesW wide-character library], [ax_cv_ncursesw], [ ++ AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])], ++ [ax_cv_ncursesw=yes], [ax_cv_ncursesw=no]) ++ ]) ++ AS_IF([test "x$ax_cv_ncursesw" = xno && test "x$with_ncursesw" = xyes], [ ++ AC_MSG_ERROR([--with-ncursesw specified but could not find NcursesW library]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_ncursesw" = xyes], [ ++ ax_cv_curses=yes ++ ax_cv_curses_which=ncursesw ++ CURSES_LIB="-lncursesw" ++ AC_DEFINE([HAVE_NCURSESW], [1], [Define to 1 if the NcursesW library is present]) ++ AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present]) ++ ++ AC_CACHE_CHECK([for working ncursesw/curses.h], [ax_cv_header_ncursesw_curses_h], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@define _XOPEN_SOURCE_EXTENDED 1 ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ attr_t d = WA_NORMAL; ++ cchar_t e; ++ wint_t f; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ wattr_set(stdscr, d, 0, NULL); ++ wget_wch(stdscr, &f); ++ ]])], ++ [ax_cv_header_ncursesw_curses_h=yes], ++ [ax_cv_header_ncursesw_curses_h=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_ncursesw_curses_h" = xyes], [ ++ ax_cv_curses_enhanced=yes ++ ax_cv_curses_color=yes ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions]) ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ AC_DEFINE([HAVE_NCURSESW_CURSES_H], [1], [Define to 1 if is present]) ++ ]) ++ ++ AC_CACHE_CHECK([for working ncursesw.h], [ax_cv_header_ncursesw_h], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@define _XOPEN_SOURCE_EXTENDED 1 ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ attr_t d = WA_NORMAL; ++ cchar_t e; ++ wint_t f; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ wattr_set(stdscr, d, 0, NULL); ++ wget_wch(stdscr, &f); ++ ]])], ++ [ax_cv_header_ncursesw_h=yes], ++ [ax_cv_header_ncursesw_h=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_ncursesw_h" = xyes], [ ++ ax_cv_curses_enhanced=yes ++ ax_cv_curses_color=yes ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions]) ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ AC_DEFINE([HAVE_NCURSESW_H], [1], [Define to 1 if is present]) ++ ]) ++ ++ AC_CACHE_CHECK([for working ncurses.h], [ax_cv_header_ncurses_h_with_ncursesw], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@define _XOPEN_SOURCE_EXTENDED 1 ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ attr_t d = WA_NORMAL; ++ cchar_t e; ++ wint_t f; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ wattr_set(stdscr, d, 0, NULL); ++ wget_wch(stdscr, &f); ++ ]])], ++ [ax_cv_header_ncurses_h_with_ncursesw=yes], ++ [ax_cv_header_ncurses_h_with_ncursesw=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_ncurses_h_with_ncursesw" = xyes], [ ++ ax_cv_curses_enhanced=yes ++ ax_cv_curses_color=yes ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions]) ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ AC_DEFINE([HAVE_NCURSES_H], [1], [Define to 1 if is present]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_header_ncursesw_curses_h" = xno && test "x$ax_cv_header_ncursesw_h" = xno && test "x$ax_cv_header_ncurses_h_with_ncursesw" = xno], [ ++ AC_MSG_WARN([could not find a working ncursesw/curses.h, ncursesw.h or ncurses.h]) ++ ]) ++ ]) ++ ]) ++ ++ # Test for Ncurses ++ ++ AS_IF([test "x$CURSES_LIB" = x && test "x$with_ncurses" != xno && test "x$ax_cv_curses_which" = xno], [ ++ LIBS="$ax_saved_LIBS -lncurses" ++ ++ AC_CACHE_CHECK([for Ncurses library], [ax_cv_ncurses], [ ++ AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])], ++ [ax_cv_ncurses=yes], [ax_cv_ncurses=no]) ++ ]) ++ AS_IF([test "x$ax_cv_ncurses" = xno && test "x$with_ncurses" = xyes], [ ++ AC_MSG_ERROR([--with-ncurses specified but could not find Ncurses library]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_ncurses" = xyes], [ ++ ax_cv_curses=yes ++ ax_cv_curses_which=ncurses ++ CURSES_LIB="-lncurses" ++ AC_DEFINE([HAVE_NCURSES], [1], [Define to 1 if the Ncurses library is present]) ++ AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present]) ++ ++ AC_CACHE_CHECK([for working ncurses/curses.h], [ax_cv_header_ncurses_curses_h], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ ]])], ++ [ax_cv_header_ncurses_curses_h=yes], ++ [ax_cv_header_ncurses_curses_h=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_ncurses_curses_h" = xyes], [ ++ ax_cv_curses_color=yes ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ AC_DEFINE([HAVE_NCURSES_CURSES_H], [1], [Define to 1 if is present]) ++ ]) ++ ++ AC_CACHE_CHECK([for working ncurses.h], [ax_cv_header_ncurses_h], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ ]])], ++ [ax_cv_header_ncurses_h=yes], ++ [ax_cv_header_ncurses_h=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_ncurses_h" = xyes], [ ++ ax_cv_curses_color=yes ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ AC_DEFINE([HAVE_NCURSES_H], [1], [Define to 1 if is present]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_header_ncurses_curses_h" = xno && test "x$ax_cv_header_ncurses_h" = xno], [ ++ AC_MSG_WARN([could not find a working ncurses/curses.h or ncurses.h]) ++ ]) ++ ]) ++ ]) ++ ++ # Test for plain Curses (or if CURSES_LIB was set by user) ++ ++ AS_IF([test "x$with_plaincurses" != xno && test "x$ax_cv_curses_which" = xno], [ ++ AS_IF([test "x$CURSES_LIB" != x], [ ++ LIBS="$ax_saved_LIBS $CURSES_LIB" ++ ], [ ++ LIBS="$ax_saved_LIBS -lcurses" ++ ]) ++ ++ AC_CACHE_CHECK([for Curses library], [ax_cv_plaincurses], [ ++ AC_LINK_IFELSE([AC_LANG_CALL([], [initscr])], ++ [ax_cv_plaincurses=yes], [ax_cv_plaincurses=no]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_plaincurses" = xyes], [ ++ ax_cv_curses=yes ++ ax_cv_curses_which=plaincurses ++ AS_IF([test "x$CURSES_LIB" = x], [ ++ CURSES_LIB="-lcurses" ++ ]) ++ AC_DEFINE([HAVE_CURSES], [1], [Define to 1 if a SysV or X/Open compatible Curses library is present]) ++ ++ # Check for base conformance (and header file) ++ ++ AC_CACHE_CHECK([for working curses.h], [ax_cv_header_curses_h], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ initscr(); ++ ]])], ++ [ax_cv_header_curses_h=yes], ++ [ax_cv_header_curses_h=no]) ++ ]) ++ AS_IF([test "x$ax_cv_header_curses_h" = xyes], [ ++ AC_DEFINE([HAVE_CURSES_H], [1], [Define to 1 if is present]) ++ ++ # Check for X/Open Enhanced conformance ++ ++ AC_CACHE_CHECK([for X/Open Enhanced Curses conformance], [ax_cv_plaincurses_enhanced], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@define _XOPEN_SOURCE_EXTENDED 1 ++ @%:@include ++ @%:@ifndef _XOPEN_CURSES ++ @%:@error "this Curses library is not enhanced" ++ "this Curses library is not enhanced" ++ @%:@endif ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ attr_t d = WA_NORMAL; ++ cchar_t e; ++ wint_t f; ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ wattr_set(stdscr, d, 0, NULL); ++ wget_wch(stdscr, &f); ++ ]])], ++ [ax_cv_plaincurses_enhanced=yes], ++ [ax_cv_plaincurses_enhanced=no]) ++ ]) ++ AS_IF([test "x$ax_cv_plaincurses_enhanced" = xyes], [ ++ ax_cv_curses_enhanced=yes ++ ax_cv_curses_color=yes ++ AC_DEFINE([HAVE_CURSES_ENHANCED], [1], [Define to 1 if library supports X/Open Enhanced functions]) ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ ]) ++ ++ # Check for color functions ++ ++ AC_CACHE_CHECK([for Curses color functions], [ax_cv_plaincurses_color], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@define _XOPEN_SOURCE_EXTENDED 1 ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ chtype c = COLOR_PAIR(1) & A_COLOR; ++ initscr(); ++ init_pair(1, COLOR_WHITE, COLOR_RED); ++ ]])], ++ [ax_cv_plaincurses_color=yes], ++ [ax_cv_plaincurses_color=no]) ++ ]) ++ AS_IF([test "x$ax_cv_plaincurses_color" = xyes], [ ++ ax_cv_curses_color=yes ++ AC_DEFINE([HAVE_CURSES_COLOR], [1], [Define to 1 if library supports color (enhanced functions)]) ++ ]) ++ ++ # Check for obsolete functions ++ ++ AC_CACHE_CHECK([for obsolete Curses functions], [ax_cv_plaincurses_obsolete], [ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ ++ @%:@include ++ ]], [[ ++ chtype a = A_BOLD; ++ int b = KEY_LEFT; ++ int g = getattrs(stdscr); ++ int h = getcurx(stdscr) + getmaxx(stdscr); ++ initscr(); ++ ]])], ++ [ax_cv_plaincurses_obsolete=yes], ++ [ax_cv_plaincurses_obsolete=no]) ++ ]) ++ AS_IF([test "x$ax_cv_plaincurses_obsolete" = xyes], [ ++ ax_cv_curses_obsolete=yes ++ AC_DEFINE([HAVE_CURSES_OBSOLETE], [1], [Define to 1 if library supports certain obsolete features]) ++ ]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_header_curses_h" = xno], [ ++ AC_MSG_WARN([could not find a working curses.h]) ++ ]) ++ ]) ++ ]) ++ ++ AS_IF([test "x$ax_cv_curses" != xyes], [ax_cv_curses=no]) ++ AS_IF([test "x$ax_cv_curses_enhanced" != xyes], [ax_cv_curses_enhanced=no]) ++ AS_IF([test "x$ax_cv_curses_color" != xyes], [ax_cv_curses_color=no]) ++ AS_IF([test "x$ax_cv_curses_obsolete" != xyes], [ax_cv_curses_obsolete=no]) ++ ++ LIBS=$ax_saved_LIBS ++])dnl +diff --git a/autotools/softether.am b/autotools/softether.am +new file mode 100644 +index 00000000..e5e91eeb +--- /dev/null ++++ b/autotools/softether.am +@@ -0,0 +1,39 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++if CONFIGURE_ENABLE_DEBUG ++DEBUG_CFLAGS = -g -D_DEBUG -DDEBUG ++else ++DEBUG_CFLAGS = -DNDEBUG -DVPN_SPEED ++endif ++ ++AM_CFLAGS = \ ++ $(DEBUG_CFLAGS) \ ++ -I$(top_srcdir)/src \ ++ -I$(top_srcdir)/src/Mayaqua \ ++ -I$(top_srcdir)/src/Cedar \ ++ -DUNIX \ ++ -DUNIX_LINUX \ ++ -D_REENTRANT \ ++ -DREENTRANT \ ++ -D_THREAD_SAFE \ ++ -D_THREADSAFE \ ++ -DTHREAD_SAFE \ ++ -DTHREADSAFE \ ++ -D_FILE_OFFSET_BITS=64 \ ++ -fsigned-char +diff --git a/configure.ac b/configure.ac +new file mode 100644 +index 00000000..4a3fc2ba +--- /dev/null ++++ b/configure.ac +@@ -0,0 +1,96 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++AC_INIT([SoftEther], [1], [http://www.vpnusers.com/], [softether], [http://www.softether.org/]) ++AC_CONFIG_AUX_DIR([autotools]) ++AC_CONFIG_MACRO_DIR([autotools]) ++AM_INIT_AUTOMAKE([foreign -Wall -Werror]) ++AM_PROG_AR ++AC_PROG_CC ++AC_PROG_LIBTOOL ++AC_CONFIG_HEADERS([softether_config.h]) ++AC_CONFIG_FILES([ ++ Makefile ++ src/Makefile ++ src/Mayaqua/Makefile ++ src/Cedar/Makefile ++ src/hamcorebuilder/Makefile ++ src/bin/hamcore/Makefile ++ src/vpnserver/Makefile ++ src/vpnclient/Makefile ++ src/vpnbridge/Makefile ++ src/vpncmd/Makefile ++]) ++ ++ ++AC_ARG_ENABLE( ++ [debug], ++ AS_HELP_STRING([--enable-debug], [build SoftEther with debugging features]), ++ [debug=yes] ++) ++AM_CONDITIONAL([CONFIGURE_ENABLE_DEBUG], [test _"$debug" = _yes]) ++ ++ ++AX_PTHREAD([ ++ AC_SUBST(PTHREAD_CC) ++ AC_SUBST(PTHREAD_CFLAGS) ++ AC_SUBST(PTHREAD_LIBS) ++],[ ++ AC_MSG_ERROR([pthread capabilities not found]) ++]) ++ ++CC="$PTHREAD_CC" ++CFLAGS="$CFLAGS $PTHREAD_CFLAGS" ++LIBS="$PTHREAD_LIBS $LIBS" ++ ++ ++AX_CHECK_OPENSSL([ ++ AC_SUBST(OPENSSL_LIBS) ++ AC_SUBST(OPENSSL_LDFLAGS) ++],[ ++ AC_MSG_ERROR([openssl not found]) ++]) ++ ++LIBS="$LIBS $OPENSSL_LIBS" ++LDFLAGS="$LDFLAGS $OPENSSL_LDFLAGS" ++ ++ ++# This macro automatically updates build variables. ++AX_CHECK_ZLIB(, AC_MSG_ERROR([zlib not found])) ++ ++ ++AX_WITH_CURSES ++if test "_$ax_cv_curses" != _yes ++then ++ AC_MSG_ERROR([libcurses, libncurses, or libncursesw not found]) ++else ++ AC_SUBST(CURSES_LIB) ++ LIBS="$LIBS $CURSES_LIB" ++fi ++ ++ ++AX_LIB_READLINE ++if test "_$ax_cv_lib_readline" = _no ++then ++ AC_MSG_ERROR([libreadline not found]) ++else ++ : This macro automatically updates build variables. ++fi ++ ++ ++AC_OUTPUT +--- a/configure 2017-07-16 04:53:31.000000000 +0200 ++++ b/configure 1970-01-01 01:00:00.000000000 +0100 +@@ -1,112 +0,0 @@ +-#!/bin/sh +- +-echo '---------------------------------------------------------------------' +-echo 'SoftEther VPN for Unix' +-echo +-echo 'Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan.' +-echo 'Copyright (c) Daiyuu Nobori. All Rights Reserved.' +-echo +-echo 'This program is free software; you can redistribute it and/or' +-echo 'modify it under the terms of the GNU General Public License' +-echo 'version 2 as published by the Free Software Foundation.' +-echo +-echo 'Read and understand README.TXT, LICENSE.TXT and WARNING.TXT before use.' +-echo '---------------------------------------------------------------------' +-echo +- +-echo 'Welcome to the corner-cutting configure script !' +-echo +- +-OS="" +-case "`uname -s`" in +-Linux) +- OS="linux" +- ;; +-FreeBSD) +- OS="freebsd" +- ;; +-SunOS) +- OS="solaris" +- ;; +-Darwin) +- OS="macos" +- ;; +-OpenBSD) +- OS="openbsd" +- ;; +-*) +- echo 'Select your operating system below:' +- echo ' 1: Linux' +- echo ' 2: FreeBSD' +- echo ' 3: Solaris' +- echo ' 4: Mac OS X' +- echo ' 5: OpenBSD' +- echo +- echo -n 'Which is your operating system (1 - 5) ? : ' +- read TMP +- echo +- if test "$TMP" = "1" +- then +- OS="linux" +- fi +- if test "$TMP" = "2" +- then +- OS="freebsd" +- fi +- if test "$TMP" = "3" +- then +- OS="solaris" +- fi +- if test "$TMP" = "4" +- then +- OS="macos" +- fi +- if test "$TMP" = "5" +- then +- OS="openbsd" +- fi +- +- if test "$OS" = "" +- then +- echo "Wrong number." +- exit 1 +- fi +- ;; +-esac +- +-CPU="" +-case "`uname -m`" in +-x86_64|amd64|aarch64|arm64|armv8*|mips64|ppc64|sparc64|alpha|ia64) +- CPU=64bit +- ;; +-i?86|x86pc|i86pc|armv4*|armv5*|armv6*|armv7*) +- CPU=32bit +- ;; +-*) +- echo 'Select your CPU bits below:' +- echo ' 1: 32-bit' +- echo ' 2: 64-bit' +- echo +- echo -n 'Which is the type of your CPU (1 - 2) ? : ' +- read TMP +- echo +- if test "$TMP" = "1" +- then +- CPU="32bit" +- fi +- if test "$TMP" = "2" +- then +- CPU="64bit" +- fi +- +- if test "$CPU" = "" +- then +- echo "Wrong number." +- exit 1 +- fi +- ;; +-esac +- +-cp src/makefiles/${OS}_${CPU}.mak Makefile +- +-echo "The Makefile is generated. Run 'make' to build SoftEther VPN." +--- a/manual_configure 1970-01-01 01:00:00.000000000 +0100 ++++ b/manual_configure 2017-07-16 04:53:31.000000000 +0200 +@@ -0,0 +1,112 @@ ++#!/bin/sh ++ ++echo '---------------------------------------------------------------------' ++echo 'SoftEther VPN for Unix' ++echo ++echo 'Copyright (c) SoftEther VPN Project at University of Tsukuba, Japan.' ++echo 'Copyright (c) Daiyuu Nobori. All Rights Reserved.' ++echo ++echo 'This program is free software; you can redistribute it and/or' ++echo 'modify it under the terms of the GNU General Public License' ++echo 'version 2 as published by the Free Software Foundation.' ++echo ++echo 'Read and understand README.TXT, LICENSE.TXT and WARNING.TXT before use.' ++echo '---------------------------------------------------------------------' ++echo ++ ++echo 'Welcome to the corner-cutting configure script !' ++echo ++ ++OS="" ++case "`uname -s`" in ++Linux) ++ OS="linux" ++ ;; ++FreeBSD) ++ OS="freebsd" ++ ;; ++SunOS) ++ OS="solaris" ++ ;; ++Darwin) ++ OS="macos" ++ ;; ++OpenBSD) ++ OS="openbsd" ++ ;; ++*) ++ echo 'Select your operating system below:' ++ echo ' 1: Linux' ++ echo ' 2: FreeBSD' ++ echo ' 3: Solaris' ++ echo ' 4: Mac OS X' ++ echo ' 5: OpenBSD' ++ echo ++ echo -n 'Which is your operating system (1 - 5) ? : ' ++ read TMP ++ echo ++ if test "$TMP" = "1" ++ then ++ OS="linux" ++ fi ++ if test "$TMP" = "2" ++ then ++ OS="freebsd" ++ fi ++ if test "$TMP" = "3" ++ then ++ OS="solaris" ++ fi ++ if test "$TMP" = "4" ++ then ++ OS="macos" ++ fi ++ if test "$TMP" = "5" ++ then ++ OS="openbsd" ++ fi ++ ++ if test "$OS" = "" ++ then ++ echo "Wrong number." ++ exit 1 ++ fi ++ ;; ++esac ++ ++CPU="" ++case "`uname -m`" in ++x86_64|amd64|aarch64|arm64|armv8*|mips64|ppc64|sparc64|alpha|ia64) ++ CPU=64bit ++ ;; ++i?86|x86pc|i86pc|armv4*|armv5*|armv6*|armv7*) ++ CPU=32bit ++ ;; ++*) ++ echo 'Select your CPU bits below:' ++ echo ' 1: 32-bit' ++ echo ' 2: 64-bit' ++ echo ++ echo -n 'Which is the type of your CPU (1 - 2) ? : ' ++ read TMP ++ echo ++ if test "$TMP" = "1" ++ then ++ CPU="32bit" ++ fi ++ if test "$TMP" = "2" ++ then ++ CPU="64bit" ++ fi ++ ++ if test "$CPU" = "" ++ then ++ echo "Wrong number." ++ exit 1 ++ fi ++ ;; ++esac ++ ++cp src/makefiles/${OS}_${CPU}.mak Makefile ++ ++echo "The Makefile is generated. Run 'make' to build SoftEther VPN." +diff --git a/src/Cedar/Makefile.am b/src/Cedar/Makefile.am +new file mode 100644 +index 00000000..5346537d +--- /dev/null ++++ b/src/Cedar/Makefile.am +@@ -0,0 +1,82 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++noinst_LTLIBRARIES = libcedar.la ++ ++libcedar_la_SOURCES = \ ++ Account.c \ ++ Admin.c \ ++ AzureClient.c \ ++ AzureServer.c \ ++ Bridge.c \ ++ BridgeUnix.c \ ++ BridgeWin32.c \ ++ Cedar.c \ ++ CedarPch.c \ ++ Client.c \ ++ CM.c \ ++ Command.c \ ++ Connection.c \ ++ Console.c \ ++ Database.c \ ++ DDNS.c \ ++ EM.c \ ++ EtherLog.c \ ++ Hub.c \ ++ Interop_OpenVPN.c \ ++ Interop_SSTP.c \ ++ IPsec.c \ ++ IPsec_EtherIP.c \ ++ IPsec_IKE.c \ ++ IPsec_IkePacket.c \ ++ IPsec_IPC.c \ ++ IPsec_L2TP.c \ ++ IPsec_PPP.c \ ++ IPsec_Win7.c \ ++ Layer3.c \ ++ Link.c \ ++ Listener.c \ ++ Logging.c \ ++ Nat.c \ ++ NativeStack.c \ ++ NM.c \ ++ NullLan.c \ ++ Protocol.c \ ++ Radius.c \ ++ Remote.c \ ++ Sam.c \ ++ SecureInfo.c \ ++ SecureNAT.c \ ++ SeLowUser.c \ ++ Server.c \ ++ Session.c \ ++ SM.c \ ++ SW.c \ ++ UdpAccel.c \ ++ UT.c \ ++ VG.c \ ++ Virtual.c \ ++ VLan.c \ ++ VLanUnix.c \ ++ VLanWin32.c \ ++ WaterMark.c \ ++ WebUI.c \ ++ WinUi.c \ ++ Wpc.c +diff --git a/src/Makefile.am b/src/Makefile.am +new file mode 100644 +index 00000000..dc745426 +--- /dev/null ++++ b/src/Makefile.am +@@ -0,0 +1,26 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++# These components are built as libtool convenience libraries. ++SUBDIRS = Mayaqua Cedar ++ ++# This is a nodist helper. ++SUBDIRS += hamcorebuilder ++ ++# These are final build products. ++SUBDIRS += bin/hamcore vpnserver vpnclient vpnbridge vpncmd +diff --git a/src/Mayaqua/Makefile.am b/src/Mayaqua/Makefile.am +new file mode 100644 +index 00000000..6b8dc1a6 +--- /dev/null ++++ b/src/Mayaqua/Makefile.am +@@ -0,0 +1,43 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++noinst_LTLIBRARIES = libmayaqua.la ++ ++libmayaqua_la_SOURCES = \ ++ Cfg.c \ ++ Encrypt.c \ ++ FileIO.c \ ++ Internat.c \ ++ Kernel.c \ ++ Mayaqua.c \ ++ Memory.c \ ++ Microsoft.c \ ++ Network.c \ ++ Object.c \ ++ OS.c \ ++ Pack.c \ ++ Secure.c \ ++ Str.c \ ++ Table.c \ ++ TcpIp.c \ ++ Tick64.c \ ++ Tracking.c \ ++ Unix.c \ ++ Win32.c +diff --git a/src/bin/hamcore/Makefile.am b/src/bin/hamcore/Makefile.am +new file mode 100644 +index 00000000..37b0291e +--- /dev/null ++++ b/src/bin/hamcore/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++# This is required to use a custom build rule with -Wall and -Werror enabled. ++AUTOMAKE_OPTIONS = -Wno-override ++EXEEXT = ++HAMCOREBUILDER = $(top_builddir)/src/hamcorebuilder/hamcorebuilder ++ ++sbin_PROGRAMS = hamcore.se2 ++ ++hamcore.se2$(EXEEXT): $(HAMCOREBUILDER) ++ $(HAMCOREBUILDER) $(top_srcdir)/src/bin/hamcore $@ +diff --git a/src/hamcorebuilder/Makefile.am b/src/hamcorebuilder/Makefile.am +new file mode 100644 +index 00000000..a22429f0 +--- /dev/null ++++ b/src/hamcorebuilder/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++noinst_PROGRAMS = \ ++ hamcorebuilder ++ ++hamcorebuilder_SOURCES = \ ++ hamcorebuilder.c ++ ++hamcorebuilder_LDADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la +diff --git a/src/vpnbridge/Makefile.am b/src/vpnbridge/Makefile.am +new file mode 100644 +index 00000000..35fe043d +--- /dev/null ++++ b/src/vpnbridge/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++sbin_PROGRAMS = \ ++ vpnbridge ++ ++vpnbridge_SOURCES = \ ++ vpnbridge.c ++ ++vpnbridge_LDADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la +diff --git a/src/vpnclient/Makefile.am b/src/vpnclient/Makefile.am +new file mode 100644 +index 00000000..1aa55330 +--- /dev/null ++++ b/src/vpnclient/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++sbin_PROGRAMS = \ ++ vpnclient ++ ++vpnclient_SOURCES = \ ++ vpncsvc.c ++ ++vpnclient_LDADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la +diff --git a/src/vpncmd/Makefile.am b/src/vpncmd/Makefile.am +new file mode 100644 +index 00000000..d8042aa2 +--- /dev/null ++++ b/src/vpncmd/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++sbin_PROGRAMS = \ ++ vpncmd ++ ++vpncmd_SOURCES = \ ++ vpncmd.c ++ ++vpncmd_LDADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la +diff --git a/src/vpnserver/Makefile.am b/src/vpnserver/Makefile.am +new file mode 100644 +index 00000000..c1c33570 +--- /dev/null ++++ b/src/vpnserver/Makefile.am +@@ -0,0 +1,29 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++sbin_PROGRAMS = \ ++ vpnserver ++ ++vpnserver_SOURCES = \ ++ vpnserver.c ++ ++vpnserver_LDADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la diff --git a/buildroot/package/softether/0002-Create-libsoftether.so-and-dynamically-link.patch b/buildroot/package/softether/0002-Create-libsoftether.so-and-dynamically-link.patch new file mode 100644 index 0000000..1fdf118 --- /dev/null +++ b/buildroot/package/softether/0002-Create-libsoftether.so-and-dynamically-link.patch @@ -0,0 +1,133 @@ +From 75625af541fd128f51079d0ffe5ef24645b8f421 Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Sun, 13 Apr 2014 12:51:15 -0400 +Subject: [PATCH] Create libsoftether.so and dynamically link the userland. + +Sharing object code between vpnbridge, vpnclient, vpnserver, and vpncmd +reduces the binary size of SoftEther by 85% and its administrative memory +footprint by 50%. + +[Upstream commit https://github.com/dajhorn/SoftEtherVPN/commit/75625af541fd128f51079d0ffe5ef24645b8f421] +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 1 + + src/Makefile.am | 7 +++++-- + src/libsoftether/Makefile.am | 34 ++++++++++++++++++++++++++++++++++ + src/vpnbridge/Makefile.am | 3 +-- + src/vpnclient/Makefile.am | 3 +-- + src/vpncmd/Makefile.am | 3 +-- + src/vpnserver/Makefile.am | 3 +-- + 7 files changed, 44 insertions(+), 10 deletions(-) + create mode 100644 src/libsoftether/Makefile.am + +diff --git a/configure.ac b/configure.ac +index 4a3fc2ba..94639c44 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -30,6 +30,7 @@ AC_CONFIG_FILES([ + src/Mayaqua/Makefile + src/Cedar/Makefile + src/hamcorebuilder/Makefile ++ src/libsoftether/Makefile + src/bin/hamcore/Makefile + src/vpnserver/Makefile + src/vpnclient/Makefile +diff --git a/src/Makefile.am b/src/Makefile.am +index dc745426..1d041d47 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -22,5 +22,8 @@ SUBDIRS = Mayaqua Cedar + # This is a nodist helper. + SUBDIRS += hamcorebuilder + +-# These are final build products. +-SUBDIRS += bin/hamcore vpnserver vpnclient vpnbridge vpncmd ++# These are shared components. ++SUBDIRS += libsoftether bin/hamcore ++ ++# These are the final build products. ++SUBDIRS += vpnserver vpnclient vpnbridge vpncmd +diff --git a/src/libsoftether/Makefile.am b/src/libsoftether/Makefile.am +new file mode 100644 +index 00000000..601920d9 +--- /dev/null ++++ b/src/libsoftether/Makefile.am +@@ -0,0 +1,34 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++lib_LTLIBRARIES = \ ++ libsoftether.la ++ ++libsoftether_la_SOURCES = ++ ++libsoftether_la_LDFLAGS = \ ++ -avoid-version ++ ++libsoftether_la_LIBTOOLFLAGS = \ ++ --tag=disable-static ++ ++libsoftether_la_LIBADD = \ ++ $(top_builddir)/src/Mayaqua/libmayaqua.la \ ++ $(top_builddir)/src/Cedar/libcedar.la +diff --git a/src/vpnbridge/Makefile.am b/src/vpnbridge/Makefile.am +index 35fe043d..fb91dd2d 100644 +--- a/src/vpnbridge/Makefile.am ++++ b/src/vpnbridge/Makefile.am +@@ -25,5 +25,4 @@ vpnbridge_SOURCES = \ + vpnbridge.c + + vpnbridge_LDADD = \ +- $(top_builddir)/src/Mayaqua/libmayaqua.la \ +- $(top_builddir)/src/Cedar/libcedar.la ++ $(top_builddir)/src/libsoftether/libsoftether.la +diff --git a/src/vpnclient/Makefile.am b/src/vpnclient/Makefile.am +index 1aa55330..c225c416 100644 +--- a/src/vpnclient/Makefile.am ++++ b/src/vpnclient/Makefile.am +@@ -25,5 +25,4 @@ vpnclient_SOURCES = \ + vpncsvc.c + + vpnclient_LDADD = \ +- $(top_builddir)/src/Mayaqua/libmayaqua.la \ +- $(top_builddir)/src/Cedar/libcedar.la ++ $(top_builddir)/src/libsoftether/libsoftether.la +diff --git a/src/vpncmd/Makefile.am b/src/vpncmd/Makefile.am +index d8042aa2..271affb0 100644 +--- a/src/vpncmd/Makefile.am ++++ b/src/vpncmd/Makefile.am +@@ -25,5 +25,4 @@ vpncmd_SOURCES = \ + vpncmd.c + + vpncmd_LDADD = \ +- $(top_builddir)/src/Mayaqua/libmayaqua.la \ +- $(top_builddir)/src/Cedar/libcedar.la ++ $(top_builddir)/src/libsoftether/libsoftether.la +diff --git a/src/vpnserver/Makefile.am b/src/vpnserver/Makefile.am +index c1c33570..1f7b7f98 100644 +--- a/src/vpnserver/Makefile.am ++++ b/src/vpnserver/Makefile.am +@@ -25,5 +25,4 @@ vpnserver_SOURCES = \ + vpnserver.c + + vpnserver_LDADD = \ +- $(top_builddir)/src/Mayaqua/libmayaqua.la \ +- $(top_builddir)/src/Cedar/libcedar.la ++ $(top_builddir)/src/libsoftether/libsoftether.la diff --git a/buildroot/package/softether/0003-use-fhs-install-directories.patch b/buildroot/package/softether/0003-use-fhs-install-directories.patch new file mode 100644 index 0000000..c489cc1 --- /dev/null +++ b/buildroot/package/softether/0003-use-fhs-install-directories.patch @@ -0,0 +1,318 @@ +From b9420c3bfc2a8b9d35d0c8e5f6849007c2bc21fa Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Mon, 14 Apr 2014 13:22:24 -0400 +Subject: [PATCH] Use FHS installation directories. + +Install to `/usr/sbin`, `/usr/lib`, and `/var/lib` according to the Linux +filesystem hierarchy standard if SoftEther is built through autotools. + +In a managed installation, the FHS stipulates that the application must +accomodate a read-only installation path. This requires a new `GetStateDir` +function that substitues `GetExeDir` in some parts of the code. + +Taken from Github at +https://github.com/dajhorn/SoftEtherVPN/commit/b9420c3bfc2a8b9d35d0c8e5f6849007c2bc21fa. + +Signed-off-by: Bernd Kuhls +Signed-off-by: Thomas Petazzoni +--- + autotools/softether.am | 1 + + src/Cedar/Admin.c | 2 +- + src/Cedar/Command.c | 6 +++++- + src/Cedar/Logging.c | 2 +- + src/Cedar/Server.c | 4 ++-- + src/Mayaqua/Encrypt.c | 2 +- + src/Mayaqua/FileIO.c | 39 ++++++++++++++++++++++++++++++++++++--- + src/Mayaqua/FileIO.h | 2 ++ + src/Mayaqua/Mayaqua.c | 4 ++++ + src/Mayaqua/Table.c | 6 +++++- + src/Mayaqua/Unix.c | 6 +++--- + src/bin/hamcore/Makefile.am | 8 ++++++-- + 12 files changed, 67 insertions(+), 15 deletions(-) + +Index: b/autotools/softether.am +=================================================================== +--- a/autotools/softether.am ++++ b/autotools/softether.am +@@ -27,6 +27,7 @@ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/Mayaqua \ + -I$(top_srcdir)/src/Cedar \ ++ -DSTATE_DIR='"@localstatedir@/lib/softether"' \ + -DUNIX \ + -DUNIX_LINUX \ + -D_REENTRANT \ +Index: b/src/Cedar/Admin.c +=================================================================== +--- a/src/Cedar/Admin.c ++++ b/src/Cedar/Admin.c +@@ -10334,7 +10334,7 @@ + + Zero(t, sizeof(RPC_READ_LOG_FILE)); + +- GetExeDir(exe_dir, sizeof(exe_dir)); ++ GetStateDir(exe_dir, sizeof(exe_dir)); + Format(full_path, sizeof(full_path), "%s/%s", exe_dir, filepath); + + // Read file +Index: b/src/Cedar/Command.c +=================================================================== +--- a/src/Cedar/Command.c ++++ b/src/Cedar/Command.c +@@ -527,7 +527,7 @@ + UINT i; + + GetExeName(exe, sizeof(exe)); +- GetExeDir(exe_dir, sizeof(exe_dir)); ++ GetStateDir(exe_dir, sizeof(exe_dir)); + + ok = false; + dirs = EnumDir(exe_dir); +@@ -552,7 +552,11 @@ + UCHAR *buf; + IO *io; + #ifndef OS_WIN32 ++#ifdef STATE_DIR ++ wchar_t *filename = L"" STATE_DIR L"/vpn_checker_tmp"; ++#else + wchar_t *filename = L"/tmp/vpn_checker_tmp"; ++#endif + #else // OS_WIN32 + wchar_t filename[MAX_PATH]; + CombinePathW(filename, sizeof(filename), MsGetMyTempDirW(), L"vpn_checker_tmp"); +Index: b/src/Cedar/Logging.c +=================================================================== +--- a/src/Cedar/Logging.c ++++ b/src/Cedar/Logging.c +@@ -508,7 +508,7 @@ + + e = ZeroMalloc(sizeof(ERASER)); + +- GetExeDir(dir, sizeof(dir)); ++ GetStateDir(dir, sizeof(dir)); + + e->Log = log; + e->MinFreeSpace = min_size; +Index: b/src/Cedar/Server.c +=================================================================== +--- a/src/Cedar/Server.c ++++ b/src/Cedar/Server.c +@@ -1060,7 +1060,7 @@ + hubname = NULL; + } + +- GetExeDir(exe_dir, sizeof(exe_dir)); ++ GetStateDir(exe_dir, sizeof(exe_dir)); + + // Enumerate in the server_log + if (hubname == NULL) +@@ -1134,7 +1134,7 @@ + return; + } + +- GetExeDir(exe_dir, sizeof(exe_dir)); ++ GetStateDir(exe_dir, sizeof(exe_dir)); + Format(dir_full_path, sizeof(dir_full_path), "%s/%s", exe_dir, dirname); + + dir = EnumDir(dir_full_path); +Index: b/src/Mayaqua/Encrypt.c +=================================================================== +--- a/src/Mayaqua/Encrypt.c ++++ b/src/Mayaqua/Encrypt.c +@@ -579,7 +579,7 @@ + return false; + } + +- GetExeDir(dirname, sizeof(dirname)); ++ GetStateDir(dirname, sizeof(dirname)); + + // Search the CRL file + t = EnumDir(dirname); +Index: b/src/Mayaqua/FileIO.c +=================================================================== +--- a/src/Mayaqua/FileIO.c ++++ b/src/Mayaqua/FileIO.c +@@ -122,8 +122,14 @@ + #include + #include + ++#ifdef STATE_DIR ++static char exe_file_name[MAX_SIZE] = STATE_DIR "/a.out"; ++static wchar_t exe_file_name_w[MAX_SIZE] = L"" STATE_DIR L"/a.out"; ++#else + static char exe_file_name[MAX_SIZE] = "/tmp/a.out"; + static wchar_t exe_file_name_w[MAX_SIZE] = L"/tmp/a.out"; ++#endif ++ + static LIST *hamcore = NULL; + static IO *hamcore_io = NULL; + +@@ -1038,7 +1044,7 @@ + } + + // If the file exist in hamcore/ directory on the local disk, read it +- GetExeDirW(exe_dir, sizeof(exe_dir)); ++ GetStateDirW(exe_dir, sizeof(exe_dir)); + + UniFormat(tmp, sizeof(tmp), L"%s/%S/%S", exe_dir, HAMCORE_DIR_NAME, filename); + +@@ -1154,7 +1160,7 @@ + return; + } + +- GetExeDirW(exe_dir, sizeof(exe_dir)); ++ GetStateDirW(exe_dir, sizeof(exe_dir)); + UniFormat(tmp, sizeof(tmp), L"%s/%S", exe_dir, HAMCORE_FILE_NAME); + + UniFormat(tmp2, sizeof(tmp2), L"%s/%S", exe_dir, HAMCORE_FILE_NAME_2); +@@ -1438,6 +1444,33 @@ + GetDirNameFromFilePathW(name, size, exe_file_name_w); + } + ++void GetStateDir(char *name, UINT size) ++{ ++ // Validate arguments ++ if (name == NULL) ++ { ++ return; ++ } ++#ifdef STATE_DIR ++ StrCpy(name, size, STATE_DIR); ++#else ++ GetExeDir(name, size) ++#endif ++} ++void GetStateDirW(wchar_t *name, UINT size) ++{ ++ // Validate arguments ++ if (name == NULL) ++ { ++ return; ++ } ++#ifdef STATE_DIR ++ UniStrCpy(name, size, L"" STATE_DIR L""); ++#else ++ GetExeDirW(name, size) ++#endif ++} ++ + // Get the EXE file name + void GetExeName(char *name, UINT size) + { +@@ -2389,7 +2422,7 @@ + else + { + wchar_t dir[MAX_SIZE]; +- GetExeDirW(dir, sizeof(dir)); ++ GetStateDirW(dir, sizeof(dir)); + ConbinePathW(dst, size, dir, &src[1]); + } + } +Index: b/src/Mayaqua/FileIO.h +=================================================================== +--- a/src/Mayaqua/FileIO.h ++++ b/src/Mayaqua/FileIO.h +@@ -349,6 +349,8 @@ + void GetExeNameW(wchar_t *name, UINT size); + void GetExeDir(char *name, UINT size); + void GetExeDirW(wchar_t *name, UINT size); ++void GetStateDir(char *name, UINT size); ++void GetStateDirW(wchar_t *name, UINT size); + void BuildHamcore(char *dst_filename, char *src_dir, bool unix_only); + int CompareHamcore(void *p1, void *p2); + void InitHamcore(); +Index: b/src/Mayaqua/Mayaqua.c +=================================================================== +--- a/src/Mayaqua/Mayaqua.c ++++ b/src/Mayaqua/Mayaqua.c +@@ -611,7 +611,11 @@ + _exit(0); + } + ++#ifndef STATE_DIR ++ // This check causes hamcorebuilder to fail in an unprivileged ++ // environment, and is unnecessary for a managed installation. + CheckUnixTempDir(); ++#endif + + // Initialization of Probe + InitProbe(); +Index: b/src/Mayaqua/Table.c +=================================================================== +--- a/src/Mayaqua/Table.c ++++ b/src/Mayaqua/Table.c +@@ -1191,7 +1191,7 @@ + return; + } + +- GetExeDirW(exe, sizeof(exe)); ++ GetStateDirW(exe, sizeof(exe)); + UniStrCpy(hashtemp, sizeof(hashtemp), strfilename); + BinToStrW(tmp, sizeof(tmp), filehash, MD5_SIZE); + UniStrCat(hashtemp, sizeof(hashtemp), tmp); +@@ -1204,7 +1204,11 @@ + UniStrLower(tmp); + + #ifndef OS_WIN32 ++#ifdef STATE_DIR ++ UniStrCpy(exe, sizeof(exe), L"" STATE_DIR L""); ++#else + UniStrCpy(exe, sizeof(exe), L"/tmp"); ++#endif + #else // OS_WIN32 + StrToUni(exe, sizeof(exe), MsGetTempDir()); + #endif // OS_WIN32 +Index: b/src/Mayaqua/Unix.c +=================================================================== +--- a/src/Mayaqua/Unix.c ++++ b/src/Mayaqua/Unix.c +@@ -928,7 +928,7 @@ + StrCpy(tmp, sizeof(tmp), instance_name); + } + +- GetExeDir(dir, sizeof(dir)); ++ GetStateDir(dir, sizeof(dir)); + + // File name generation + Format(name, sizeof(name), "%s/.%s", dir, tmp); +@@ -2260,7 +2260,7 @@ + return; + } + +- GetExeDir(dir, sizeof(dir)); ++ GetStateDir(dir, sizeof(dir)); + + GetExeName(exe_name, sizeof(exe_name)); + StrCat(exe_name, sizeof(exe_name), ":pid_hash"); +@@ -2305,7 +2305,7 @@ + return; + } + +- GetExeDir(dir, sizeof(dir)); ++ GetStateDir(dir, sizeof(dir)); + + GetExeName(exe_name, sizeof(exe_name)); + StrCat(exe_name, sizeof(exe_name), ":pid_hash"); +Index: b/src/bin/hamcore/Makefile.am +=================================================================== +--- a/src/bin/hamcore/Makefile.am ++++ b/src/bin/hamcore/Makefile.am +@@ -18,12 +18,16 @@ + + include $(top_srcdir)/autotools/softether.am + +-# This is required to use a custom build rule with -Wall and -Werror enabled. ++# An empty EXEEXT required for overrides with -Wall and -Werror enabled. + AUTOMAKE_OPTIONS = -Wno-override + EXEEXT = ++ + HAMCOREBUILDER = $(top_builddir)/src/hamcorebuilder/hamcorebuilder + +-sbin_PROGRAMS = hamcore.se2 ++noinst_PROGRAMS = hamcore.se2 + + hamcore.se2$(EXEEXT): $(HAMCOREBUILDER) + $(HAMCOREBUILDER) $(top_srcdir)/src/bin/hamcore $@ ++ ++install-exec-local: hamcore.se2$(EXEEXT) ++ $(INSTALL_DATA) -D hamcore.se2$(EXEEXT) $(DESTDIR)$(localstatedir)/lib/softether/hamcore.se2 diff --git a/buildroot/package/softether/0004-create-non-forking-softetherd-for-upstart-and-systemd.patch b/buildroot/package/softether/0004-create-non-forking-softetherd-for-upstart-and-systemd.patch new file mode 100644 index 0000000..72913b0 --- /dev/null +++ b/buildroot/package/softether/0004-create-non-forking-softetherd-for-upstart-and-systemd.patch @@ -0,0 +1,218 @@ +From 64dd780905ae339a0a57e4aba541799016816a1a Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Fri, 3 Oct 2014 13:30:24 -0400 +Subject: [PATCH] Create a non-forking softetherd for upstart and systemd. + +Implement a daemon that expects to be invoked by a new-style init like upstart +or systemd as: + + /usr/sbin/softetherd [vpnbridge|vpnclient|vpnserver] + +Alternatively, if the command line argument is empty, then use the +`SOFTETHER_MODE` environment variable instead. + +Conflicts: + src/bin/hamcore/strtable_en.stb + +Taken from Github at +https://github.com/dajhorn/SoftEtherVPN/commit/64dd780905ae339a0a57e4aba541799016816a1a. + +Signed-off-by: Bernd Kuhls +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 1 + + src/Makefile.am | 3 ++ + src/bin/hamcore/strtable_en.stb | 1 + + src/softetherd/Makefile.am | 28 ++++++++++ + src/softetherd/softetherd.c | 114 ++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 147 insertions(+) + create mode 100644 src/softetherd/Makefile.am + create mode 100644 src/softetherd/softetherd.c + +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -36,6 +36,7 @@ + src/vpnclient/Makefile + src/vpnbridge/Makefile + src/vpncmd/Makefile ++ src/softetherd/Makefile + ]) + + +Index: b/src/Makefile.am +=================================================================== +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -27,3 +27,6 @@ + + # These are the final build products. + SUBDIRS += vpnserver vpnclient vpnbridge vpncmd ++ ++# This is a daemon for upstart and systemd. ++SUBDIRS += softetherd +Index: b/src/bin/hamcore/strtable_en.stb +=================================================================== +--- a/src/bin/hamcore/strtable_en.stb ++++ b/src/bin/hamcore/strtable_en.stb +@@ -1062,6 +1062,7 @@ + + + # Concerning services (UNIX) ++UNIX_DAEMON_HELP SoftEther VPN non-forking daemon for upstart and systemd.\nCommand Usage:\n %S vpnbridge - Enable bridging features.\n %S vpnclient - Enable client features.\n %S vpnserver - Enable all features.\nThe parameter can be set in the SOFTETHER_MODE environment variable.\n\n + UNIX_SVC_HELP %S service program\nCopyright (c) SoftEther VPN Project. All Rights Reserved.\n\n%S command usage:\n %S start - Start the %S service.\n %S stop - Stop the %S service if the service has been already started.\n\n + UNIX_SVC_STARTED The %S service has been started.\n + UNIX_SVC_STOPPING Stopping the %S service ...\n +Index: b/src/softetherd/Makefile.am +=================================================================== +--- /dev/null ++++ b/src/softetherd/Makefile.am +@@ -0,0 +1,28 @@ ++# Copyright 2014 Darik Horn ++# ++# This file is part of SoftEther. ++# ++# SoftEther 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. ++# ++# SoftEther 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 ++# SoftEther. If not, see . ++ ++ ++include $(top_srcdir)/autotools/softether.am ++ ++sbin_PROGRAMS = \ ++ softetherd ++ ++softetherd_SOURCES = \ ++ softetherd.c ++ ++softetherd_LDADD = \ ++ $(top_builddir)/src/libsoftether/libsoftether.la +Index: b/src/softetherd/softetherd.c +=================================================================== +--- /dev/null ++++ b/src/softetherd/softetherd.c +@@ -0,0 +1,114 @@ ++// SoftEther VPN daemon for upstart and systemd. ++// ++// Copyright 2014 Darik Horn ++// ++// This file is part of SoftEther. ++// ++// SoftEther 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. ++// ++// SoftEther 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 ++// SoftEther. If not, see . ++ ++ ++#include ++ ++#define VPN_EXE ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++void DaemonUsage(char *name) ++{ ++ UniPrint(_UU("UNIX_DAEMON_HELP"), name, name, name); ++} ++ ++ ++void DaemonStartProcess() ++{ ++ // This environment variable is exported by upstart. ++ char *upstart_job = getenv("UPSTART_JOB"); ++ ++ InitCedar(); ++ StInit(); ++ StStartServer(false); ++ ++ // Notify upstart that softetherd is ready. ++ if (upstart_job != NULL) ++ { ++ unsetenv("UPSTART_JOB"); ++ raise(SIGSTOP); ++ } ++} ++ ++ ++void DaemonStopProcess() ++{ ++ StStopServer(); ++ StFree(); ++ FreeCedar(); ++} ++ ++ ++int main(int argc, char *argv[]) ++{ ++ // This environment variable is sourced and exported by the init process from /etc/default/softether. ++ char *softether_mode = getenv("SOFTETHER_MODE"); ++ ++ InitMayaqua(false, false, argc, argv); ++ ++ // Check for an explicit invocation. (eg: "/usr/sbin/softetherd vpnserver") ++ if (argc >= 2) ++ { ++ if (StrCmpi(argv[1], "vpnbridge") == 0 ++ || StrCmpi(argv[1], "vpnclient") == 0 ++ || StrCmpi(argv[1], "vpnserver") == 0) ++ { ++ UnixExecService(argv[1], DaemonStartProcess, DaemonStopProcess); ++ FreeMayaqua(); ++ return 0; ++ } ++ ++ // Exit status codes 150..199 are reserved for the application by the LSB. ++ fprintf(stderr, "Error: Unrecognized parameter: %s\n", argv[1]); ++ fflush(stderr); ++ FreeMayaqua(); ++ return 150; ++ } ++ ++ // Alternatively, use the environment variable. ++ if (softether_mode != NULL) ++ { ++ if (StrCmpi(softether_mode, "vpnbridge") == 0 ++ || StrCmpi(softether_mode, "vpnclient") == 0 ++ || StrCmpi(softether_mode, "vpnserver") == 0) ++ { ++ UnixExecService(softether_mode, DaemonStartProcess, DaemonStopProcess); ++ FreeMayaqua(); ++ return 0; ++ } ++ ++ // Exit status codes 150..199 are reserved for the application by the LSB. ++ fprintf(stderr, "Error: Unrecognized environment variable: SOFTETHER_MODE=%s\n", softether_mode); ++ fflush(stderr); ++ FreeMayaqua(); ++ return 151; ++ } ++ ++ DaemonUsage(argv[0]); ++ FreeMayaqua(); ++ return 3; ++} diff --git a/buildroot/package/softether/0005-change-GetExeDir-to-GetStateDir-in-Cedar-and-Mayaqua.patch b/buildroot/package/softether/0005-change-GetExeDir-to-GetStateDir-in-Cedar-and-Mayaqua.patch new file mode 100644 index 0000000..6cb4e72 --- /dev/null +++ b/buildroot/package/softether/0005-change-GetExeDir-to-GetStateDir-in-Cedar-and-Mayaqua.patch @@ -0,0 +1,90 @@ +From d68db9f2cee975aad5e07b44485615f3d842ab45 Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Fri, 11 Jul 2014 16:17:18 -0400 +Subject: [PATCH] Change GetExeDir to GetStateDir in Cedar and Mayaqua. + +Resolve this AppArmor error by ensuring that certificate files files are +written into /var/lib/softether instead of the current working directory: + + Profile: /usr/sbin/softetherd + Operation: mkdir + Name: /usr/sbin/chain_certs + Denied: c + Logfile: /var/log/kern.log + + type=1400 audit: apparmor="DENIED" operation="mkdir" profile="/usr/sbin/softetherd" name="/usr/sbin/chain_certs/" pid=36448 comm="softetherd" requested_mask="c" denied_mask="c" fsuid=0 ouid=0 + +Taken from Github +https://github.com/dajhorn/SoftEtherVPN/commit/d68db9f2cee975aad5e07b44485615f3d842ab45. + +Signed-off-by: Bernd Kuhls +Signed-off-by: Thomas Petazzoni +--- + src/Cedar/Protocol.c | 12 ++++++------ + src/Mayaqua/Network.c | 6 +++--- + 2 files changed, 9 insertions(+), 9 deletions(-) + +Index: b/src/Cedar/Protocol.c +=================================================================== +--- a/src/Cedar/Protocol.c ++++ b/src/Cedar/Protocol.c +@@ -161,10 +161,10 @@ + UINT i; + DIRLIST *dir; + wchar_t dirname[MAX_SIZE]; +- wchar_t exedir[MAX_SIZE]; ++ wchar_t statedir[MAX_SIZE]; + +- GetExeDirW(exedir, sizeof(exedir)); +- CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs"); ++ GetStateDirW(statedir, sizeof(statedir)); ++ CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs"); + MakeDirExW(dirname); + + if (auto_save) +@@ -461,7 +461,7 @@ + void AddAllChainCertsToCertList(LIST *o) + { + wchar_t dirname[MAX_SIZE]; +- wchar_t exedir[MAX_SIZE]; ++ wchar_t statedir[MAX_SIZE]; + DIRLIST *dir; + // Validate arguments + if (o == NULL) +@@ -469,9 +469,9 @@ + return; + } + +- GetExeDirW(exedir, sizeof(exedir)); ++ GetStateDirW(statedir, sizeof(statedir)); + +- CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs"); ++ CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs"); + + MakeDirExW(dirname); + +Index: b/src/Mayaqua/Network.c +=================================================================== +--- a/src/Mayaqua/Network.c ++++ b/src/Mayaqua/Network.c +@@ -12588,7 +12588,7 @@ + void AddChainSslCertOnDirectory(struct ssl_ctx_st *ctx) + { + wchar_t dirname[MAX_SIZE]; +- wchar_t exedir[MAX_SIZE]; ++ wchar_t statedir[MAX_SIZE]; + wchar_t txtname[MAX_SIZE]; + DIRLIST *dir; + LIST *o; +@@ -12602,9 +12602,9 @@ + + o = NewListFast(NULL); + +- GetExeDirW(exedir, sizeof(exedir)); ++ GetStateDirW(statedir, sizeof(statedir)); + +- CombinePathW(dirname, sizeof(dirname), exedir, L"chain_certs"); ++ CombinePathW(dirname, sizeof(dirname), statedir, L"chain_certs"); + + MakeDirExW(dirname); + diff --git a/buildroot/package/softether/0006-cross-compile.patch b/buildroot/package/softether/0006-cross-compile.patch new file mode 100644 index 0000000..0b31eca --- /dev/null +++ b/buildroot/package/softether/0006-cross-compile.patch @@ -0,0 +1,30 @@ +Host version of hamcorebuilder is needed during cross-compile + +Signed-off-by: Bernd Kuhls + +diff -uNr SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/bin/hamcore/Makefile.am SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/bin/hamcore/Makefile.am +--- SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/bin/hamcore/Makefile.am 2014-09-27 12:56:53.108725793 +0200 ++++ SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/bin/hamcore/Makefile.am 2014-09-27 12:57:50.280009025 +0200 +@@ -26,8 +26,8 @@ + + noinst_PROGRAMS = hamcore.se2 + +-hamcore.se2$(EXEEXT): $(HAMCOREBUILDER) +- $(HAMCOREBUILDER) $(top_srcdir)/src/bin/hamcore $@ ++hamcore.se2$(EXEEXT): ++ hamcorebuilder $(top_srcdir)/src/bin/hamcore $@ + + install-exec-local: hamcore.se2$(EXEEXT) + $(INSTALL_DATA) -D hamcore.se2$(EXEEXT) $(DESTDIR)$(localstatedir)/lib/softether/hamcore.se2 +diff -uNr SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/Makefile.am SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/Makefile.am +--- SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824.org/src/Makefile.am 2014-09-27 12:56:53.136726809 +0200 ++++ SoftEtherVPN-16b713b98da8dba29f0f845d5a8c36d6f7c34824/src/Makefile.am 2014-09-27 12:58:12.959723109 +0200 +@@ -20,7 +20,7 @@ + SUBDIRS = Mayaqua Cedar + + # This is a nodist helper. +-SUBDIRS += hamcorebuilder ++# SUBDIRS += hamcorebuilder + + # These are shared components. + SUBDIRS += libsoftether bin/hamcore diff --git a/buildroot/package/softether/0007-iconv.patch b/buildroot/package/softether/0007-iconv.patch new file mode 100644 index 0000000..09d7777 --- /dev/null +++ b/buildroot/package/softether/0007-iconv.patch @@ -0,0 +1,28 @@ +Fix linking with libiconv + +Inspired by https://github.com/el1n/OpenWRT-package-softether/blob/4cb1cd9073a76edf34c512e587069626e02e2404/patches/120-fix-iconv-headers-common.patch + +Signed-off-by: Bernd Kuhls + +Index: b/src/Mayaqua/Mayaqua.h +=================================================================== +--- a/src/Mayaqua/Mayaqua.h ++++ b/src/Mayaqua/Mayaqua.h +@@ -282,17 +282,7 @@ + #include + #endif // MAYAQUA_SUPPORTS_GETIFADDRS + +-#ifdef UNIX_LINUX +-typedef void *iconv_t; +-iconv_t iconv_open (__const char *__tocode, __const char *__fromcode); +-size_t iconv (iconv_t __cd, char **__restrict __inbuf, +- size_t *__restrict __inbytesleft, +- char **__restrict __outbuf, +- size_t *__restrict __outbytesleft); +-int iconv_close (iconv_t __cd); +-#else // UNIX_LINUX + #include +-#endif // UNIX_LINUX + + + diff --git a/buildroot/package/softether/0008-librt.patch b/buildroot/package/softether/0008-librt.patch new file mode 100644 index 0000000..661c960 --- /dev/null +++ b/buildroot/package/softether/0008-librt.patch @@ -0,0 +1,33 @@ +Downloaded from +https://github.com/dajhorn/SoftEtherVPN/commit/9a8538a6f2287fe8bebd0a7185de408e31e5a7df + +Fixes +http://autobuild.buildroot.net/results/48f/48f778a891e0bf6a60ed2e4bec057c338ec25ec9/ +and many others + +Signed-off-by: Bernd Kuhls + + +From 9a8538a6f2287fe8bebd0a7185de408e31e5a7df Mon Sep 17 00:00:00 2001 +From: Darik Horn +Date: Thu, 5 Jun 2014 21:02:02 -0400 +Subject: [PATCH] Add an explicit autoconf check for librt. + +The realtime extensions library is not automatically linked on Debian ARM +platforms, so do an AC_CHECK_LIB for it in the configuration macro. +--- + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.ac b/configure.ac +index 165623a..6f85393 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -60,6 +60,7 @@ CC="$PTHREAD_CC" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + ++AC_CHECK_LIB([rt],[clock_gettime]) + + AX_CHECK_OPENSSL([ + AC_SUBST(OPENSSL_LIBS) diff --git a/buildroot/package/softether/0009-uclibc-ai-addrconfig.patch b/buildroot/package/softether/0009-uclibc-ai-addrconfig.patch new file mode 100644 index 0000000..7d8f1c6 --- /dev/null +++ b/buildroot/package/softether/0009-uclibc-ai-addrconfig.patch @@ -0,0 +1,27 @@ +Only enable getifaddrs support when available + +On uClibc, the ifaddrs.h support is optional. While the default +Buildroot uClibc configuration has it enabled, some external +toolchains may not. Therefore this patch detects that and adjusts +softether usage of ifaddrs accordingly. + +Based on an initial patch from Bernd Kuhls. + +Signed-off-by: Thomas Petazzoni + +Index: b/src/Mayaqua/Mayaqua.h +=================================================================== +--- a/src/Mayaqua/Mayaqua.h ++++ b/src/Mayaqua/Mayaqua.h +@@ -235,9 +235,11 @@ + #ifdef OS_UNIX + #ifndef UNIX_SOLARIS + #ifndef CPU_SH4 ++#if !defined(__UCLIBC__) || defined(__UCLIBC_SUPPORT_AI_ADDRCONFIG__) + // Getifaddrs system call is supported on UNIX other than Solaris. + // However, it is not supported also by the Linux on SH4 CPU + #define MAYAQUA_SUPPORTS_GETIFADDRS ++#endif // !UCLIBC || UCLIBC_SUPPORT_AI_ADDRCONFIG + #endif // CPU_SH4 + #endif // UNIX_SOLARIS + #endif // OS_UNIX diff --git a/buildroot/package/softether/Config.in b/buildroot/package/softether/Config.in new file mode 100644 index 0000000..bfb45b0 --- /dev/null +++ b/buildroot/package/softether/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_SOFTETHER + bool "softether" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + select BR2_PACKAGE_READLINE + help + The SoftEther Server is a fully integrated implementation of + the SSTP, L2TP, L2TPv3, OpenVPN, and IPSec virtual private + networking protocols on Linux and several other + platforms. It is generally compatible with other + implementations by Apple, Cisco, Juniper, Microsoft, et al. + + Convenient Layer-2 and Layer-3 bridging capabilities can + connect several branch offices into a single broadcast or + routing domain, even behind a NAT or without a static IPv4 + address. + + In addition to supporting most VPN protocols, the SoftEther + Client can penetrate hardened firewalls and captured + gateways through HTTPS, DNS, and ICMP exfiltration. + + http://www.softether.org + +comment "softether needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !(BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/buildroot/package/softether/softether.hash b/buildroot/package/softether/softether.hash new file mode 100644 index 0000000..ec6e060 --- /dev/null +++ b/buildroot/package/softether/softether.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 8e6310d36e579ea07171ce5fcb9ebe31235d218444c4e4836ca6c32aa49c1f93 softether-v4.22-9634-beta.tar.gz +sha256 7aeb873293fa0e44425dabf68a8e46e26c848fe58efcfd3ac7c90a3386f3edd1 LICENSE diff --git a/buildroot/package/softether/softether.mk b/buildroot/package/softether/softether.mk new file mode 100644 index 0000000..05d2f20 --- /dev/null +++ b/buildroot/package/softether/softether.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# softether +# +################################################################################ + +SOFTETHER_VERSION = v4.22-9634-beta +SOFTETHER_SITE = $(call github,SoftEtherVPN,SoftEtherVPN,$(SOFTETHER_VERSION)) +SOFTETHER_LICENSE = GPL-2.0 +SOFTETHER_LICENSE_FILES = LICENSE +SOFTETHER_DEPENDENCIES = host-softether libopenssl readline +SOFTETHER_AUTORECONF = YES + +ifeq ($(BR2_ENABLE_LOCALE),) +SOFTETHER_DEPENDENCIES += libiconv +SOFTETHER_CONF_ENV = LIBS+=" -liconv" +endif + +ifeq ($(BR2_STATIC_LIBS),y) +# openssl needs zlib +SOFTETHER_CONF_ENV += LIBS+=" -lz" +endif + +SOFTETHER_CONF_OPTS = \ + --with-openssl="$(STAGING_DIR)/usr" \ + --with-zlib="$(STAGING_DIR)/usr" + +# host-libiconv does not exist, therefore we need this extra line +HOST_SOFTETHER_DEPENDENCIES = host-pkgconf host-libopenssl host-readline + +# target build creates the file hamcore.se2 which needs the host variant of +# hamcorebuilder, for details see http://www.vpnusers.com/viewtopic.php?p=5426 +define HOST_SOFTETHER_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/src/Mayaqua + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/src/Cedar + $(HOST_MAKE_ENV) $(MAKE) -C $(@D)/src/hamcorebuilder +endef + +define HOST_SOFTETHER_INSTALL_CMDS + $(INSTALL) -m 0755 $(@D)/src/hamcorebuilder/hamcorebuilder $(HOST_DIR)/bin/hamcorebuilder +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/solarus/0001-cmake-remove-Werror.patch b/buildroot/package/solarus/0001-cmake-remove-Werror.patch new file mode 100644 index 0000000..b27908c --- /dev/null +++ b/buildroot/package/solarus/0001-cmake-remove-Werror.patch @@ -0,0 +1,27 @@ +From 4d315359d15e1221f3463b77a960a60093aac893 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 22 Jun 2017 00:19:56 +0200 +Subject: [PATCH] cmake: remove Werror + +Signed-off-by: Romain Naour +--- + cmake/AddCompilationFlags.cmake | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/cmake/AddCompilationFlags.cmake b/cmake/AddCompilationFlags.cmake +index 5159ff9..a506033 100644 +--- a/cmake/AddCompilationFlags.cmake ++++ b/cmake/AddCompilationFlags.cmake +@@ -24,9 +24,6 @@ endif() + # Be less pedantic in release builds for users. + set(CMAKE_CXX_FLAGS_RELEASE "-Wno-error -Wall -Wextra -Wno-unknown-pragmas -Wno-fatal-errors ${CMAKE_CXX_FLAGS_RELEASE}") + +-# Be more pedantic in debug mode for developers. +-set(CMAKE_CXX_FLAGS_DEBUG "-Werror -Wall -Wextra -pedantic ${CMAKE_CXX_FLAGS_DEBUG}") +- + # Platform-specific flags. + if(WIN32) + # MinGW: disable the console by default. +-- +2.9.4 + diff --git a/buildroot/package/solarus/Config.in b/buildroot/package/solarus/Config.in new file mode 100644 index 0000000..30c7aa2 --- /dev/null +++ b/buildroot/package/solarus/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_SOLARUS + bool "solarus" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + depends on !BR2_STATIC_LIBS # SDL2 + select BR2_PACKAGE_LIBMODPLUG + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBPNG # runtime + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_OPENAL + select BR2_PACKAGE_PHYSFS + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_IMAGE + select BR2_PACKAGE_SDL2_TTF + help + Solarus is an open-source Zelda-like 2D game engine written + in C++. It can run games scripted in Lua. This engine is used + by our Zelda fangames. Solarus is licensed under GPL v3. + + http://www.solarus-games.org + https://github.com/solarus-games/solarus + +comment "solarus needs a toolchain w/ C++, gcc >= 4.8, NPTL, dynamic library" + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS diff --git a/buildroot/package/solarus/solarus.hash b/buildroot/package/solarus/solarus.hash new file mode 100644 index 0000000..8ed5caf --- /dev/null +++ b/buildroot/package/solarus/solarus.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 5930584e7c333089a2c1bf372ccc25ad3fb5c1d973189d2bf67f2308189af94d solarus-v1.5.3.tar.gz + +sha256 09cb24006b6a3f2698d8851dc5df4f413c1a98e20d4008bffd76ec236f14244d license.txt +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 license_gpl.txt diff --git a/buildroot/package/solarus/solarus.mk b/buildroot/package/solarus/solarus.mk new file mode 100644 index 0000000..af37f81 --- /dev/null +++ b/buildroot/package/solarus/solarus.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# solarus +# +################################################################################ + +SOLARUS_VERSION = v1.5.3 +SOLARUS_SITE = $(call github,solarus-games,solarus,$(SOLARUS_VERSION)) + +SOLARUS_LICENSE = GPL-3.0 (code), CC-BY-SA-4.0 (Solarus logos and icons), \ + CC-BY-SA-3.0 (GUI icons) +SOLARUS_LICENSE_FILES = license.txt license_gpl.txt + +# Install libsolarus.so +SOLARUS_INSTALL_STAGING = YES + +SOLARUS_DEPENDENCIES = libmodplug libogg libvorbis luajit openal physfs sdl2 \ + sdl2_image sdl2_ttf + +# Disable launcher GUI (requires Qt5) +SOLARUS_CONF_OPTS = -DSOLARUS_GUI=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/sound-theme-borealis/Config.in b/buildroot/package/sound-theme-borealis/Config.in new file mode 100644 index 0000000..fcc109f --- /dev/null +++ b/buildroot/package/sound-theme-borealis/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SOUND_THEME_BOREALIS + bool "sound-theme-borealis" + help + Borealis sound theme. + + http://kde-look.org/content/show.php?content=12584 diff --git a/buildroot/package/sound-theme-borealis/sound-theme-borealis.hash b/buildroot/package/sound-theme-borealis/sound-theme-borealis.hash new file mode 100644 index 0000000..7a4d3e1 --- /dev/null +++ b/buildroot/package/sound-theme-borealis/sound-theme-borealis.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 dd80a9c6317de29d42786ba7d95b114b64d06ec6c0c17dd18df853a5c668e727 Borealis_sound_theme_ogg-0.9a.tar.bz2 diff --git a/buildroot/package/sound-theme-borealis/sound-theme-borealis.mk b/buildroot/package/sound-theme-borealis/sound-theme-borealis.mk new file mode 100644 index 0000000..9242837 --- /dev/null +++ b/buildroot/package/sound-theme-borealis/sound-theme-borealis.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# sound-theme-borealis +# +################################################################################ + +SOUND_THEME_BOREALIS_VERSION = 0.9a +SOUND_THEME_BOREALIS_SITE = http://ico.bukvic.net/Linux/Borealis_soundtheme +SOUND_THEME_BOREALIS_SOURCE = \ + Borealis_sound_theme_ogg-$(SOUND_THEME_BOREALIS_VERSION).tar.bz2 + +define SOUND_THEME_BOREALIS_INSTALL_TARGET_CMDS + for f in $(@D)/*.ogg ; do \ + $(INSTALL) -D -m 0644 $$f $(TARGET_DIR)/usr/share/sounds/borealis/stereo/`basename $$f` || exit 1; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/sound-theme-freedesktop/Config.in b/buildroot/package/sound-theme-freedesktop/Config.in new file mode 100644 index 0000000..8b48015 --- /dev/null +++ b/buildroot/package/sound-theme-freedesktop/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SOUND_THEME_FREEDESKTOP + bool "sound-theme-freedesktop" + help + Default theme for the XDG Sound Theme Specification. + + http://freedesktop.org/wiki/Specifications/sound-theme-spec diff --git a/buildroot/package/sound-theme-freedesktop/sound-theme-freedesktop.hash b/buildroot/package/sound-theme-freedesktop/sound-theme-freedesktop.hash new file mode 100644 index 0000000..cde02ca --- /dev/null +++ b/buildroot/package/sound-theme-freedesktop/sound-theme-freedesktop.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e6595afb02b76099ef6df42c2ac7c4f9680c21c3f26b2a7ca0943d1fdbbd9aef sound-theme-freedesktop-0.7.tar.bz2 diff --git a/buildroot/package/sound-theme-freedesktop/sound-theme-freedesktop.mk b/buildroot/package/sound-theme-freedesktop/sound-theme-freedesktop.mk new file mode 100644 index 0000000..ea4c853 --- /dev/null +++ b/buildroot/package/sound-theme-freedesktop/sound-theme-freedesktop.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# sound-theme-freedesktop +# +################################################################################ + +SOUND_THEME_FREEDESKTOP_VERSION = 0.7 +SOUND_THEME_FREEDESKTOP_SITE = \ + http://people.freedesktop.org/~mccann/dist +SOUND_THEME_FREEDESKTOP_SOURCE = \ + sound-theme-freedesktop-$(SOUND_THEME_FREEDESKTOP_VERSION).tar.bz2 +SOUND_THEME_FREEDESKTOP_DEPENDENCIES = host-intltool + +$(eval $(autotools-package)) diff --git a/buildroot/package/sox/0001-uclibc.patch b/buildroot/package/sox/0001-uclibc.patch new file mode 100644 index 0000000..5c118fa --- /dev/null +++ b/buildroot/package/sox/0001-uclibc.patch @@ -0,0 +1,26 @@ +Make SoX support uclibc-based toolchains, from: +http://sourceforge.net/p/sox/bugs/179/ + +Signed-off-by: Gustavo Zacarias + +Index: sox-14.4.1/src/formats.c +=================================================================== +--- sox-14.4.1.orig/src/formats.c ++++ sox-14.4.1/src/formats.c +@@ -409,7 +409,7 @@ static void UNUSED rewind_pipe(FILE * fp + #if defined _FSTDIO || defined _NEWLIB_VERSION || defined __APPLE__ + fp->_p -= PIPE_AUTO_DETECT_SIZE; + fp->_r += PIPE_AUTO_DETECT_SIZE; +-#elif defined __GLIBC__ ++#elif defined __GLIBC__ && ! defined __UCLIBC__ + fp->_IO_read_ptr = fp->_IO_read_base; + #elif defined _MSC_VER || defined _WIN32 || defined _WIN64 || defined _ISO_STDIO_ISO_H + fp->_ptr = fp->_base; +@@ -417,7 +417,6 @@ static void UNUSED rewind_pipe(FILE * fp + /* To fix this #error, either simply remove the #error line and live without + * file-type detection with pipes, or add support for your compiler in the + * lines above. Test with cat monkey.wav | ./sox --info - */ +- #error FIX NEEDED HERE + #define NO_REWIND_PIPE + (void)fp; + #endif diff --git a/buildroot/package/sox/Config.in b/buildroot/package/sox/Config.in new file mode 100644 index 0000000..5325ed6 --- /dev/null +++ b/buildroot/package/sox/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_SOX + bool "sox" + help + SoX is a cross-platform (Windows, Linux, MacOS X, etc.) + command line utility that can convert various formats of + computer audio files into other formats. + + It can also apply various effects to these sound files, and, + as an added bonus, SoX can play and record audio files on + most platforms. + + http://sox.sourceforge.net/ diff --git a/buildroot/package/sox/sox.hash b/buildroot/package/sox/sox.hash new file mode 100644 index 0000000..2f8069b --- /dev/null +++ b/buildroot/package/sox/sox.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/sox/files/sox/14.4.2/ +md5 ba804bb1ce5c71dd484a102a5b27d0dd sox-14.4.2.tar.bz2 +sha1 dc9668256b9d81ef25d672f14f12ec026b0b4087 sox-14.4.2.tar.bz2 diff --git a/buildroot/package/sox/sox.mk b/buildroot/package/sox/sox.mk new file mode 100644 index 0000000..0b3dc13 --- /dev/null +++ b/buildroot/package/sox/sox.mk @@ -0,0 +1,112 @@ +################################################################################ +# +# sox +# +################################################################################ + +SOX_VERSION = 14.4.2 +SOX_SITE = http://downloads.sourceforge.net/project/sox/sox/$(SOX_VERSION) +SOX_SOURCE = sox-$(SOX_VERSION).tar.bz2 +SOX_DEPENDENCIES = host-pkgconf +SOX_CONF_OPTS = --with-distro="Buildroot" --without-ffmpeg --disable-gomp \ + $(if $(BR2_TOOLCHAIN_HAS_SSP),,--disable-stack-protector) +SOX_LICENSE = GPL-2.0+ (sox binary), LGPL-2.1+ (libraries) +SOX_LICENSE_FILES = LICENSE.GPL LICENSE.LGPL + +# MIPS Codescape toolchains don't support stack-smashing protection +# despite of using glibc. +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS)$(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS),y) +SOX_CONF_OPTS += --disable-stack-protector +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB_PCM),y) +SOX_DEPENDENCIES += alsa-lib +else +SOX_CONF_OPTS += --without-alsa +endif + +ifeq ($(BR2_PACKAGE_FILE),y) +SOX_DEPENDENCIES += file +else +SOX_CONF_OPTS += --without-magic +endif + +ifeq ($(BR2_PACKAGE_FLAC),y) +SOX_DEPENDENCIES += flac +else +SOX_CONF_OPTS += --without-flac +endif + +ifeq ($(BR2_PACKAGE_LAME),y) +SOX_DEPENDENCIES += lame +else +SOX_CONF_OPTS += --without-lame +endif + +ifeq ($(BR2_PACKAGE_LIBAO),y) +SOX_DEPENDENCIES += libao +else +SOX_CONF_OPTS += --without-ao +endif + +ifeq ($(BR2_PACKAGE_LIBID3TAG),y) +SOX_DEPENDENCIES += libid3tag +else +SOX_CONF_OPTS += --without-id3tag +endif + +ifeq ($(BR2_PACKAGE_LIBMAD),y) +SOX_DEPENDENCIES += libmad +else +SOX_CONF_OPTS += --without-mad +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +SOX_DEPENDENCIES += libpng +else +SOX_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y) +SOX_DEPENDENCIES += libsndfile +else +SOX_CONF_OPTS += --without-sndfile +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +SOX_DEPENDENCIES += libvorbis +else +SOX_CONF_OPTS += --without-oggvorbis +endif + +ifeq ($(BR2_PACKAGE_OPENCORE_AMR),y) +SOX_DEPENDENCIES += opencore-amr +else +SOX_CONF_OPTS += --without-amrwb --without-amrnb +endif + +ifeq ($(BR2_PACKAGE_OPUSFILE),y) +SOX_DEPENDENCIES += opusfile +else +SOX_CONF_OPTS += --without-opus +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +SOX_DEPENDENCIES += pulseaudio +else +SOX_CONF_OPTS += --without-pulseaudio +endif + +ifeq ($(BR2_PACKAGE_TWOLAME),y) +SOX_DEPENDENCIES += twolame +else +SOX_CONF_OPTS += --without-twolame +endif + +ifeq ($(BR2_PACKAGE_WAVPACK),y) +SOX_DEPENDENCIES += wavpack +else +SOX_CONF_OPTS += --without-wavpack +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sp-oops-extract/0001-Make-the-Makefile-more-cross-compiler-friendly.patch b/buildroot/package/sp-oops-extract/0001-Make-the-Makefile-more-cross-compiler-friendly.patch new file mode 100644 index 0000000..67153c2 --- /dev/null +++ b/buildroot/package/sp-oops-extract/0001-Make-the-Makefile-more-cross-compiler-friendly.patch @@ -0,0 +1,22 @@ +Fetch from: https://github.com/Schischu/ptxdist_sh/tree/master/patches/sp-oops-extract-0.0.7 + +From: Bernhard Walle +Date: Wed, 21 Mar 2012 15:55:06 +0100 +Subject: [PATCH] Make the Makefile more cross-compiler friendly + +Signed-off-by: Bernhard Walle +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index cf5b550..e05eb1f 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -9,4 +9,4 @@ distclean: clean + $(RM) $(TARGETS) + + sp-oops-extract: oopslog.c +- gcc -Wall -s -o $@ $^ ++ $(CC) $(LDFLAGS) $(CPPFLAGS) $(CFLAGS) -Wall -o $@ $^ + diff --git a/buildroot/package/sp-oops-extract/0002-stdint-cleanup.patch b/buildroot/package/sp-oops-extract/0002-stdint-cleanup.patch new file mode 100644 index 0000000..255fe8a --- /dev/null +++ b/buildroot/package/sp-oops-extract/0002-stdint-cleanup.patch @@ -0,0 +1,33 @@ +consolidate use of stdint types + +Change u_int*_t to uint*_t for compatibility with a larger number of C +libraries. + +Signed-off-by: Doug Kehn + +Index: sp-oops-extract-0.0.7-1/src/oopslog.c +=================================================================== +--- sp-oops-extract-0.0.7-1.orig/src/oopslog.c ++++ sp-oops-extract-0.0.7-1/src/oopslog.c +@@ -64,8 +64,8 @@ static int try_to_check_for_bad_blocks(v + + int main(const int argc, const char *argv[]) + { +- u_int32_t *count, maxcount = 0xffffffff; +- u_int32_t *magic_ptr, magic_value = 0x5d005d00; ++ uint32_t *count, maxcount = 0xffffffff; ++ uint32_t *magic_ptr, magic_value = 0x5d005d00; + + unsigned char *charbuf; + unsigned long size; +@@ -137,8 +137,8 @@ int main(const int argc, const char *arg + errx(-1, "%s is something weird", device); + + charbuf = buf; +- count = (u_int32_t *) buf; +- magic_ptr = (u_int32_t *) (buf + sizeof(u_int32_t)); ++ count = (uint32_t *) buf; ++ magic_ptr = (uint32_t *) (buf + sizeof(uint32_t)); + + for (i = 0; i < (size / OOPS_PAGE_SIZE); i++) { + pread(fd, buf, OOPS_PAGE_SIZE, i * OOPS_PAGE_SIZE); diff --git a/buildroot/package/sp-oops-extract/Config.in b/buildroot/package/sp-oops-extract/Config.in new file mode 100644 index 0000000..d4e0252 --- /dev/null +++ b/buildroot/package/sp-oops-extract/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SP_OOPS_EXTRACT + bool "sp-oops-extract" + help + A tool for extracting OOPS/panic logs from MTD. + + http://maemo.org/packages/view/sp-oops-extract/ diff --git a/buildroot/package/sp-oops-extract/sp-oops-extract.hash b/buildroot/package/sp-oops-extract/sp-oops-extract.hash new file mode 100644 index 0000000..835bfe8 --- /dev/null +++ b/buildroot/package/sp-oops-extract/sp-oops-extract.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 85601a569af1f4584db75fad21d3a70e377ce12d1bccad7dbe1112abd3b43d93 sp-oops-extract_0.0.7-1.tar.gz diff --git a/buildroot/package/sp-oops-extract/sp-oops-extract.mk b/buildroot/package/sp-oops-extract/sp-oops-extract.mk new file mode 100644 index 0000000..a3ff46c --- /dev/null +++ b/buildroot/package/sp-oops-extract/sp-oops-extract.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# sp-oops-extract +# +################################################################################ + +SP_OOPS_EXTRACT_VERSION = 0.0.7-1 +SP_OOPS_EXTRACT_SITE = http://repository.maemo.org/pool/maemo5.0/free/s/sp-oops-extract +SP_OOPS_EXTRACT_SOURCE = sp-oops-extract_$(SP_OOPS_EXTRACT_VERSION).tar.gz +SP_OOPS_EXTRACT_LICENSE = GPL-2.0 +SP_OOPS_EXTRACT_LICENSE_FILES = COPYING + +define SP_OOPS_EXTRACT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) +endef + +define SP_OOPS_EXTRACT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install \ + DESTDIR=$(TARGET_DIR) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/spawn-fcgi/Config.in b/buildroot/package/spawn-fcgi/Config.in new file mode 100644 index 0000000..59791e8 --- /dev/null +++ b/buildroot/package/spawn-fcgi/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_SPAWN_FCGI + bool "spawn-fcgi" + depends on BR2_USE_MMU # fork() + help + FastCGI process spawner. + Project split from lighttpd. + + http://redmine.lighttpd.net/projects/spawn-fcgi diff --git a/buildroot/package/spawn-fcgi/spawn-fcgi.hash b/buildroot/package/spawn-fcgi/spawn-fcgi.hash new file mode 100644 index 0000000..c1911e4 --- /dev/null +++ b/buildroot/package/spawn-fcgi/spawn-fcgi.hash @@ -0,0 +1,2 @@ +# From http://redmine.lighttpd.net/news/9 +sha256 a3cfc7c9581b6ddc31084b379c9160323fa345d357ace6cd2d3d3af3593e2873 spawn-fcgi-1.6.4.tar.bz2 diff --git a/buildroot/package/spawn-fcgi/spawn-fcgi.mk b/buildroot/package/spawn-fcgi/spawn-fcgi.mk new file mode 100644 index 0000000..ed97d0a --- /dev/null +++ b/buildroot/package/spawn-fcgi/spawn-fcgi.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# spawn-fcgi +# +################################################################################ + +SPAWN_FCGI_VERSION = 1.6.4 +SPAWN_FCGI_SITE = http://www.lighttpd.net/download +SPAWN_FCGI_SOURCE = spawn-fcgi-$(SPAWN_FCGI_VERSION).tar.bz2 +SPAWN_FCGI_LICENSE = BSD-3-Clause +SPAWN_FCGI_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/speex/0001-thumb2-support.patch b/buildroot/package/speex/0001-thumb2-support.patch new file mode 100644 index 0000000..b6f7369 --- /dev/null +++ b/buildroot/package/speex/0001-thumb2-support.patch @@ -0,0 +1,220 @@ +Make speex Thumb2 compatible + +Patch written by Michael Hope from Linaro, available at +http://lists.xiph.org/pipermail/speex-dev/2010-November/008041.html. + +Signed-off-by: Thomas Petazzoni + +diff --git a/libspeex/filters_arm4.h b/libspeex/filters_arm4.h +index 7a74042..6ec1f75 100644 +--- a/libspeex/filters_arm4.h ++++ b/libspeex/filters_arm4.h +@@ -47,8 +47,10 @@ int normalize16(const spx_sig_t *x, spx_word16_t *y, spx_sig_t max_scale, int le + + "\tldr %4, [%0], #4 \n" + "\tcmps %4, %1 \n" ++ "\tit gt \n" + "\tmovgt %1, %4 \n" + "\tcmps %4, %3 \n" ++ "\tit lt \n" + "\tmovlt %3, %4 \n" + + "\tsubs %2, %2, #1 \n" +@@ -56,6 +58,7 @@ int normalize16(const spx_sig_t *x, spx_word16_t *y, spx_sig_t max_scale, int le + + "\trsb %3, %3, #0 \n" + "\tcmp %1, %3 \n" ++ "\tit lt \n" + "\tmovlt %1, %3 \n" + : "=r" (dead1), "=r" (max_val), "=r" (dead3), "=r" (dead4), + "=r" (dead5), "=r" (dead6) +diff --git a/libspeex/fixed_arm4.h b/libspeex/fixed_arm4.h +index b6981ca..b6218ca 100644 +--- a/libspeex/fixed_arm4.h ++++ b/libspeex/fixed_arm4.h +@@ -69,72 +69,90 @@ static inline short DIV32_16(int a, int b) + __asm__ __volatile__ ( + "\teor %5, %0, %1\n" + "\tmovs %4, %0\n" ++ "\tit mi \n" + "\trsbmi %0, %0, #0 \n" + "\tmovs %4, %1\n" ++ "\tit mi \n" + "\trsbmi %1, %1, #0 \n" + "\tmov %4, #1\n" + + "\tsubs %3, %0, %1, asl #14 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #14 \n" + + "\tsubs %3, %0, %1, asl #13 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #13 \n" + + "\tsubs %3, %0, %1, asl #12 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #12 \n" + + "\tsubs %3, %0, %1, asl #11 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #11 \n" + + "\tsubs %3, %0, %1, asl #10 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #10 \n" + + "\tsubs %3, %0, %1, asl #9 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #9 \n" + + "\tsubs %3, %0, %1, asl #8 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #8 \n" + + "\tsubs %3, %0, %1, asl #7 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #7 \n" + + "\tsubs %3, %0, %1, asl #6 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #6 \n" + + "\tsubs %3, %0, %1, asl #5 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #5 \n" + + "\tsubs %3, %0, %1, asl #4 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #4 \n" + + "\tsubs %3, %0, %1, asl #3 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #3 \n" + + "\tsubs %3, %0, %1, asl #2 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #2 \n" + + "\tsubs %3, %0, %1, asl #1 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4, asl #1 \n" + + "\tsubs %3, %0, %1 \n" ++ "\titt pl \n" + "\tmovpl %0, %3 \n" + "\torrpl %2, %2, %4 \n" + + "\tmovs %5, %5, lsr #31 \n" ++ "\tit ne \n" + "\trsbne %2, %2, #0 \n" + : "=r" (dead1), "=r" (dead2), "=r" (res), + "=r" (dead3), "=r" (dead4), "=r" (dead5) +diff --git a/libspeex/fixed_arm5e.h b/libspeex/fixed_arm5e.h +index 9b4861c..bdadd02 100644 +--- a/libspeex/fixed_arm5e.h ++++ b/libspeex/fixed_arm5e.h +@@ -97,72 +97,90 @@ static inline short DIV32_16(int a, int b) + __asm__ __volatile__ ( + "\teor %5, %0, %1\n" + "\tmovs %4, %0\n" ++ "\tit mi \n" + "\trsbmi %0, %0, #0 \n" + "\tmovs %4, %1\n" ++ "\tit mi \n" + "\trsbmi %1, %1, #0 \n" + "\tmov %4, #1\n" + + "\tsubs %3, %0, %1, asl #14 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #14 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #13 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #13 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #12 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #12 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #11 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #11 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #10 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #10 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #9 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #9 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #8 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #8 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #7 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #7 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #6 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #6 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #5 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #5 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #4 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #4 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #3 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #3 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #2 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #2 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1, asl #1 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4, asl #1 \n" + "\tmovpl %0, %3 \n" + + "\tsubs %3, %0, %1 \n" ++ "\titt pl \n" + "\torrpl %2, %2, %4 \n" + "\tmovpl %0, %3 \n" + + "\tmovs %5, %5, lsr #31 \n" ++ "\tit ne \n" + "\trsbne %2, %2, #0 \n" + : "=r" (dead1), "=r" (dead2), "=r" (res), + "=r" (dead3), "=r" (dead4), "=r" (dead5) diff --git a/buildroot/package/speex/Config.in b/buildroot/package/speex/Config.in new file mode 100644 index 0000000..c4e3df5 --- /dev/null +++ b/buildroot/package/speex/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_SPEEX + bool "speex" + select BR2_PACKAGE_LIBOGG + help + Speex is an Open Source/Free Software patent-free + audio compression format designed for speech. + It can be used for Voice over IP + + http://www.speex.org/ + +if BR2_PACKAGE_SPEEX + +config BR2_PACKAGE_SPEEX_ARM4 + bool + default y + depends on BR2_ARM_CPU_ARMV4 + +config BR2_PACKAGE_SPEEX_ARM5E + bool + default y + depends on BR2_arm && !BR2_PACKAGE_SPEEX_ARM4 + +endif diff --git a/buildroot/package/speex/speex.hash b/buildroot/package/speex/speex.hash new file mode 100644 index 0000000..c38a0a7 --- /dev/null +++ b/buildroot/package/speex/speex.hash @@ -0,0 +1,2 @@ +# From http://downloads.xiph.org/releases/speex/SHA256SUMS.txt +sha256 342f30dc57bd4a6dad41398365baaa690429660b10d866b7d508e8f1179cb7a6 speex-1.2rc1.tar.gz diff --git a/buildroot/package/speex/speex.mk b/buildroot/package/speex/speex.mk new file mode 100644 index 0000000..1b278ea --- /dev/null +++ b/buildroot/package/speex/speex.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# speex +# +################################################################################ + +SPEEX_VERSION = 1.2rc1 +SPEEX_SITE = http://downloads.us.xiph.org/releases/speex +SPEEX_LICENSE = BSD-3-Clause +SPEEX_LICENSE_FILES = COPYING + +SPEEX_INSTALL_STAGING = YES +SPEEX_DEPENDENCIES = libogg +SPEEX_CONF_OPTS = \ + --with-ogg-libraries=$(STAGING_DIR)/usr/lib \ + --with-ogg-includes=$(STAGING_DIR)/usr/include \ + --enable-fixed-point + +ifeq ($(BR2_PACKAGE_SPEEX_ARM4),y) +SPEEX_CONF_OPTS += --enable-arm4-asm +endif + +ifeq ($(BR2_PACKAGE_SPEEX_ARM5E),y) +SPEEX_CONF_OPTS += --enable-arm5e-asm +endif + +define SPEEX_LIBTOOL_FIXUP + $(SED) 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' $(@D)/libtool + $(SED) 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' $(@D)/libtool +endef + +SPEEX_POST_CONFIGURE_HOOKS += SPEEX_LIBTOOL_FIXUP + +define SPEEX_BUILD_CMDS + $($(PKG)_MAKE_ENV) $(MAKE) $($(PKG)_MAKE_OPTS) -C $(@D)/$($(PKG)_SUBDIR) +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/sphinxbase/Config.in b/buildroot/package/sphinxbase/Config.in new file mode 100644 index 0000000..00a19f6 --- /dev/null +++ b/buildroot/package/sphinxbase/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_SPHINXBASE + bool "sphinxbase" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + CMUSphinx toolkit is a leading speech recognition toolkit + with various tools used to build speech applications. CMU + Sphinx toolkit has a number of packages for different tasks + and applications. + + http://cmusphinx.sourceforge.net/ + +comment "sphinxbase needs a toolchain with threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/sphinxbase/sphinxbase.hash b/buildroot/package/sphinxbase/sphinxbase.hash new file mode 100644 index 0000000..9fbb6df --- /dev/null +++ b/buildroot/package/sphinxbase/sphinxbase.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 06971dbe272d2f73bde0ef7b3538c0c8f8ea885cb171fd6b17a5975bced66e64 sphinxbase-5prealpha.tar.gz diff --git a/buildroot/package/sphinxbase/sphinxbase.mk b/buildroot/package/sphinxbase/sphinxbase.mk new file mode 100644 index 0000000..86f9089 --- /dev/null +++ b/buildroot/package/sphinxbase/sphinxbase.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# sphinxbase +# +################################################################################ + +SPHINXBASE_VERSION = 5prealpha +SPHINXBASE_SITE = http://downloads.sourceforge.net/project/cmusphinx/sphinxbase/5prealpha +SPHINXBASE_LICENSE = BSD-2-Clause +# Note http://sourceforge.net/p/cmusphinx/bugs/441/ "LICENSE file missing in" +# 5prealpha tarballs". The license is contained in the copyright notice at the +# top of each source file. For example: +SPHINXBASE_LICENSE_FILES = src/libsphinxbase/util/bio.c + +SPHINXBASE_DEPENDENCIES = host-bison + +SPHINXBASE_CONF_OPTS = --without-python --without-lapack + +$(eval $(autotools-package)) diff --git a/buildroot/package/spi-tools/Config.in b/buildroot/package/spi-tools/Config.in new file mode 100644 index 0000000..8d26344 --- /dev/null +++ b/buildroot/package/spi-tools/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SPI_TOOLS + bool "spi-tools" + help + This package contains some simple command line tools to help + using Linux spidev devices. + + https://github.com/cpb-/spi-tools diff --git a/buildroot/package/spi-tools/spi-tools.hash b/buildroot/package/spi-tools/spi-tools.hash new file mode 100644 index 0000000..25c7381 --- /dev/null +++ b/buildroot/package/spi-tools/spi-tools.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 72a6c4a9d13011addc61bc3906543cd06f76f567270ae4b6ca4d0115fd6a9538 spi-tools-0.8.1.tar.gz diff --git a/buildroot/package/spi-tools/spi-tools.mk b/buildroot/package/spi-tools/spi-tools.mk new file mode 100644 index 0000000..e5f3774 --- /dev/null +++ b/buildroot/package/spi-tools/spi-tools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# spi-tools +# +################################################################################ + +SPI_TOOLS_VERSION = 0.8.1 +SPI_TOOLS_SITE = $(call github,cpb-,spi-tools,$(SPI_TOOLS_VERSION)) +# autoreconf must be run as specified in package documentation +SPI_TOOLS_AUTORECONF = YES +SPI_TOOLS_LICENSE = GPL-2.0 +SPI_TOOLS_LICENSE_FILES = LICENSE + +$(eval $(autotools-package)) diff --git a/buildroot/package/spice-protocol/Config.in b/buildroot/package/spice-protocol/Config.in new file mode 100644 index 0000000..63b08aa --- /dev/null +++ b/buildroot/package/spice-protocol/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_SPICE_PROTOCOL + bool "spice protocol" + help + The Spice project aims to provide a complete open source + solution for interaction with virtualized desktop devices. + The Spice project deals with both the virtualized devices + and the front-end. Interaction between front-end and + back-end is done using VD-Interfaces. + + This package implements the protocol-part of Spice. + + http://www.spice-space.org/ diff --git a/buildroot/package/spice-protocol/spice-protocol.hash b/buildroot/package/spice-protocol/spice-protocol.hash new file mode 100644 index 0000000..c75c095 --- /dev/null +++ b/buildroot/package/spice-protocol/spice-protocol.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 788f0d7195bec5b14371732b562eb55ca82712aab12273b0e87529fb30532efb spice-protocol-0.12.10.tar.bz2 diff --git a/buildroot/package/spice-protocol/spice-protocol.mk b/buildroot/package/spice-protocol/spice-protocol.mk new file mode 100644 index 0000000..dcc6fee --- /dev/null +++ b/buildroot/package/spice-protocol/spice-protocol.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# spice-protocol +# +################################################################################ + +SPICE_PROTOCOL_VERSION = 0.12.10 +SPICE_PROTOCOL_SOURCE = spice-protocol-$(SPICE_PROTOCOL_VERSION).tar.bz2 +SPICE_PROTOCOL_SITE = http://www.spice-space.org/download/releases +SPICE_PROTOCOL_LICENSE = BSD-3-Clause +SPICE_PROTOCOL_LICENSE_FILES = COPYING +SPICE_PROTOCOL_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/spice/0001-Prevent-possible-DoS-attempts-during-protocol-handsh.patch b/buildroot/package/spice/0001-Prevent-possible-DoS-attempts-during-protocol-handsh.patch new file mode 100644 index 0000000..57a64d9 --- /dev/null +++ b/buildroot/package/spice/0001-Prevent-possible-DoS-attempts-during-protocol-handsh.patch @@ -0,0 +1,60 @@ +From 1c6517973095a67c8cb57f3550fc1298404ab556 Mon Sep 17 00:00:00 2001 +From: Frediano Ziglio +Date: Tue, 13 Dec 2016 14:39:48 +0000 +Subject: [PATCH] Prevent possible DoS attempts during protocol handshake + +The limit for link message is specified using a 32 bit unsigned integer. +This could cause possible DoS due to excessive memory allocations and +some possible crashes. +For instance a value >= 2^31 causes a spice_assert to be triggered in +async_read_handler (reds-stream.c) due to an integer overflow at this +line: + + int n = async->end - async->now; + +This could be easily triggered with a program like + + #!/usr/bin/env python + + import socket + import time + from struct import pack + + server = '127.0.0.1' + port = 5900 + + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((server, port)) + data = pack('<4sIII', 'REDQ', 2, 2, 0xaaaaaaaa) + s.send(data) + + time.sleep(1) + +without requiring any authentication (the same can be done +with TLS). + +[Peter: fixes CVE-2016-9578] +Signed-off-by: Frediano Ziglio +Acked-by: Christophe Fergeau +Signed-off-by: Peter Korsgaard +--- + server/reds.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/server/reds.c b/server/reds.c +index f40b65c1..86a33d53 100644 +--- a/server/reds.c ++++ b/server/reds.c +@@ -2202,7 +2202,8 @@ static void reds_handle_read_header_done(void *opaque) + + reds->peer_minor_version = header->minor_version; + +- if (header->size < sizeof(SpiceLinkMess)) { ++ /* the check for 4096 is to avoid clients to cause arbitrary big memory allocations */ ++ if (header->size < sizeof(SpiceLinkMess) || header->size > 4096) { + reds_send_link_error(link, SPICE_LINK_ERR_INVALID_DATA); + spice_warning("bad size %u", header->size); + reds_link_free(link); +-- +2.11.0 + diff --git a/buildroot/package/spice/0002-Prevent-integer-overflows-in-capability-checks.patch b/buildroot/package/spice/0002-Prevent-integer-overflows-in-capability-checks.patch new file mode 100644 index 0000000..5bf9b89 --- /dev/null +++ b/buildroot/package/spice/0002-Prevent-integer-overflows-in-capability-checks.patch @@ -0,0 +1,43 @@ +From f66dc643635518e53dfbe5262f814a64eec54e4a Mon Sep 17 00:00:00 2001 +From: Frediano Ziglio +Date: Tue, 13 Dec 2016 14:40:10 +0000 +Subject: [PATCH] Prevent integer overflows in capability checks + +The limits for capabilities are specified using 32 bit unsigned integers. +This could cause possible integer overflows causing buffer overflows. +For instance the sum of num_common_caps and num_caps can be 0 avoiding +additional checks. +As the link message is now capped to 4096 and the capabilities are +contained in the link message limit the capabilities to 1024 +(capabilities are expressed in number of uint32_t items). + +[Peter: fixes CVE-2016-9578] +Signed-off-by: Frediano Ziglio +Acked-by: Christophe Fergeau +Signed-off-by: Peter Korsgaard +--- + server/reds.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/server/reds.c b/server/reds.c +index 86a33d53..91504544 100644 +--- a/server/reds.c ++++ b/server/reds.c +@@ -2110,6 +2110,14 @@ static void reds_handle_read_link_done(void *opaque) + link_mess->num_channel_caps = GUINT32_FROM_LE(link_mess->num_channel_caps); + link_mess->num_common_caps = GUINT32_FROM_LE(link_mess->num_common_caps); + ++ /* Prevent DoS. Currently we defined only 13 capabilities, ++ * I expect 1024 to be valid for quite a lot time */ ++ if (link_mess->num_channel_caps > 1024 || link_mess->num_common_caps > 1024) { ++ reds_send_link_error(link, SPICE_LINK_ERR_INVALID_DATA); ++ reds_link_free(link); ++ return; ++ } ++ + num_caps = link_mess->num_common_caps + link_mess->num_channel_caps; + caps = (uint32_t *)((uint8_t *)link_mess + link_mess->caps_offset); + +-- +2.11.0 + diff --git a/buildroot/package/spice/0003-main-channel-Prevent-overflow-reading-messages-from-.patch b/buildroot/package/spice/0003-main-channel-Prevent-overflow-reading-messages-from-.patch new file mode 100644 index 0000000..f602d5f --- /dev/null +++ b/buildroot/package/spice/0003-main-channel-Prevent-overflow-reading-messages-from-.patch @@ -0,0 +1,33 @@ +From 5f96b596353d73bdf4bb3cd2de61e48a7fd5b4c3 Mon Sep 17 00:00:00 2001 +From: Frediano Ziglio +Date: Tue, 29 Nov 2016 16:46:56 +0000 +Subject: [PATCH] main-channel: Prevent overflow reading messages from client + +Caller is supposed the function return a buffer able to store +size bytes. + +[Peter: fixes CVE-2016-9577] +Signed-off-by: Frediano Ziglio +Acked-by: Christophe Fergeau +Signed-off-by: Peter Korsgaard +--- + server/main_channel.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/server/main_channel.c b/server/main_channel.c +index 0ecc9df8..1fc39155 100644 +--- a/server/main_channel.c ++++ b/server/main_channel.c +@@ -1026,6 +1026,9 @@ static uint8_t *main_channel_alloc_msg_rcv_buf(RedChannelClient *rcc, + + if (type == SPICE_MSGC_MAIN_AGENT_DATA) { + return reds_get_agent_data_buffer(mcc, size); ++ } else if (size > sizeof(main_chan->recv_buf)) { ++ /* message too large, caller will log a message and close the connection */ ++ return NULL; + } else { + return main_chan->recv_buf; + } +-- +2.11.0 + diff --git a/buildroot/package/spice/0004-reds-Disconnect-when-receiving-overly-big-ClientMoni.patch b/buildroot/package/spice/0004-reds-Disconnect-when-receiving-overly-big-ClientMoni.patch new file mode 100644 index 0000000..070259f --- /dev/null +++ b/buildroot/package/spice/0004-reds-Disconnect-when-receiving-overly-big-ClientMoni.patch @@ -0,0 +1,75 @@ +From f1e7ec03e26ab6b8ca9b7ec060846a5b706a963d Mon Sep 17 00:00:00 2001 +From: Frediano Ziglio +Date: Mon, 15 May 2017 15:57:28 +0100 +Subject: [PATCH] reds: Disconnect when receiving overly big + ClientMonitorsConfig + +Total message size received from the client was unlimited. There is +a 2kiB size check on individual agent messages, but the MonitorsConfig +message can be split in multiple chunks, and the size of the +non-chunked MonitorsConfig message was never checked. This could easily +lead to memory exhaustion on the host. + +Signed-off-by: Frediano Ziglio +Signed-off-by: Peter Korsgaard +--- + server/reds.c | 25 +++++++++++++++++++++++-- + 1 file changed, 23 insertions(+), 2 deletions(-) + +diff --git a/server/reds.c b/server/reds.c +index f439a366..7be85fdf 100644 +--- a/server/reds.c ++++ b/server/reds.c +@@ -993,19 +993,34 @@ static void reds_client_monitors_config_cleanup(void) + static void reds_on_main_agent_monitors_config( + MainChannelClient *mcc, void *message, size_t size) + { ++ const unsigned int MAX_MONITORS = 256; ++ const unsigned int MAX_MONITOR_CONFIG_SIZE = ++ sizeof(VDAgentMonitorsConfig) + MAX_MONITORS * sizeof(VDAgentMonConfig); ++ + VDAgentMessage *msg_header; + VDAgentMonitorsConfig *monitors_config; + RedsClientMonitorsConfig *cmc = &reds->client_monitors_config; + ++ // limit size of message sent by the client as this can cause a DoS through ++ // memory exhaustion, or potentially some integer overflows ++ if (sizeof(VDAgentMessage) + MAX_MONITOR_CONFIG_SIZE - cmc->buffer_size < size) { ++ goto overflow; ++ } + cmc->buffer_size += size; + cmc->buffer = realloc(cmc->buffer, cmc->buffer_size); + spice_assert(cmc->buffer); + cmc->mcc = mcc; + memcpy(cmc->buffer + cmc->buffer_pos, message, size); + cmc->buffer_pos += size; ++ if (sizeof(VDAgentMessage) > cmc->buffer_size) { ++ spice_debug("not enough data yet. %d", cmc->buffer_size); ++ return; ++ } + msg_header = (VDAgentMessage *)cmc->buffer; +- if (sizeof(VDAgentMessage) > cmc->buffer_size || +- msg_header->size > cmc->buffer_size - sizeof(VDAgentMessage)) { ++ if (msg_header->size > MAX_MONITOR_CONFIG_SIZE) { ++ goto overflow; ++ } ++ if (msg_header->size > cmc->buffer_size - sizeof(VDAgentMessage)) { + spice_debug("not enough data yet. %d", cmc->buffer_size); + return; + } +@@ -1013,6 +1028,12 @@ static void reds_on_main_agent_monitors_config( + spice_debug("%s: %d", __func__, monitors_config->num_of_monitors); + red_dispatcher_client_monitors_config(monitors_config); + reds_client_monitors_config_cleanup(); ++ return; ++ ++overflow: ++ spice_warning("received invalid MonitorsConfig request from client, disconnecting"); ++ red_channel_client_disconnect(main_channel_client_get_base(mcc)); ++ reds_client_monitors_config_cleanup(); + } + + void reds_on_main_agent_data(MainChannelClient *mcc, void *message, size_t size) +-- +2.11.0 + diff --git a/buildroot/package/spice/0005-reds-Avoid-integer-overflows-handling-monitor-config.patch b/buildroot/package/spice/0005-reds-Avoid-integer-overflows-handling-monitor-config.patch new file mode 100644 index 0000000..9874052 --- /dev/null +++ b/buildroot/package/spice/0005-reds-Avoid-integer-overflows-handling-monitor-config.patch @@ -0,0 +1,31 @@ +From ec6229c79abe05d731953df5f7e9a05ec9f6df79 Mon Sep 17 00:00:00 2001 +From: Frediano Ziglio +Date: Mon, 15 May 2017 15:57:28 +0100 +Subject: [PATCH] reds: Avoid integer overflows handling monitor + configuration + +Avoid VDAgentMessage::size integer overflows. + +Signed-off-by: Frediano Ziglio +Signed-off-by: Peter Korsgaard +--- + server/reds.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/server/reds.c b/server/reds.c +index 7be85fdf..e1c8c108 100644 +--- a/server/reds.c ++++ b/server/reds.c +@@ -1024,6 +1024,9 @@ static void reds_on_main_agent_monitors_config( + spice_debug("not enough data yet. %d", cmc->buffer_size); + return; + } ++ if (msg_header->size < sizeof(VDAgentMonitorsConfig)) { ++ goto overflow; ++ } + monitors_config = (VDAgentMonitorsConfig *)(cmc->buffer + sizeof(*msg_header)); + spice_debug("%s: %d", __func__, monitors_config->num_of_monitors); + red_dispatcher_client_monitors_config(monitors_config); +-- +2.11.0 + diff --git a/buildroot/package/spice/0006-reds-Avoid-buffer-overflows-handling-monitor-configu.patch b/buildroot/package/spice/0006-reds-Avoid-buffer-overflows-handling-monitor-configu.patch new file mode 100644 index 0000000..212645b --- /dev/null +++ b/buildroot/package/spice/0006-reds-Avoid-buffer-overflows-handling-monitor-configu.patch @@ -0,0 +1,48 @@ +From a957a90baf2c62d31f3547e56bba7d0e812d2331 Mon Sep 17 00:00:00 2001 +From: Frediano Ziglio +Date: Mon, 15 May 2017 15:57:28 +0100 +Subject: [PATCH] reds: Avoid buffer overflows handling monitor + configuration + +It was also possible for a malicious client to set +VDAgentMonitorsConfig::num_of_monitors to a number larger +than the actual size of VDAgentMOnitorsConfig::monitors. +This would lead to buffer overflows, which could allow the guest to +read part of the host memory. This might cause write overflows in the +host as well, but controlling the content of such buffers seems +complicated. + +Signed-off-by: Frediano Ziglio +Signed-off-by: Peter Korsgaard +--- + server/reds.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/server/reds.c b/server/reds.c +index e1c8c108..3a42c375 100644 +--- a/server/reds.c ++++ b/server/reds.c +@@ -1000,6 +1000,7 @@ static void reds_on_main_agent_monitors_config( + VDAgentMessage *msg_header; + VDAgentMonitorsConfig *monitors_config; + RedsClientMonitorsConfig *cmc = &reds->client_monitors_config; ++ uint32_t max_monitors; + + // limit size of message sent by the client as this can cause a DoS through + // memory exhaustion, or potentially some integer overflows +@@ -1028,6 +1029,12 @@ static void reds_on_main_agent_monitors_config( + goto overflow; + } + monitors_config = (VDAgentMonitorsConfig *)(cmc->buffer + sizeof(*msg_header)); ++ // limit the monitor number to avoid buffer overflows ++ max_monitors = (msg_header->size - sizeof(VDAgentMonitorsConfig)) / ++ sizeof(VDAgentMonConfig); ++ if (monitors_config->num_of_monitors > max_monitors) { ++ goto overflow; ++ } + spice_debug("%s: %d", __func__, monitors_config->num_of_monitors); + red_dispatcher_client_monitors_config(monitors_config); + reds_client_monitors_config_cleanup(); +-- +2.11.0 + diff --git a/buildroot/package/spice/Config.in b/buildroot/package/spice/Config.in new file mode 100644 index 0000000..2241b55 --- /dev/null +++ b/buildroot/package/spice/Config.in @@ -0,0 +1,24 @@ +comment "spice server needs a toolchain w/ wchar, threads" + depends on BR2_i386 || BR2_x86_64 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_SPICE + bool "spice server" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_SPICE_PROTOCOL + help + The Spice project aims to provide a complete open source + solution for interaction with virtualized desktop devices. + The Spice project deals with both the virtualized devices + and the front-end. Interaction between front-end and + back-end is done using VD-Interfaces. + + This package implements the server-part of Spice. + + http://www.spice-space.org/ diff --git a/buildroot/package/spice/spice.hash b/buildroot/package/spice/spice.hash new file mode 100644 index 0000000..c9b591f --- /dev/null +++ b/buildroot/package/spice/spice.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f901a5c5873d61acac84642f9eea5c4d6386fc3e525c2b68792322794e1c407d spice-0.12.8.tar.bz2 diff --git a/buildroot/package/spice/spice.mk b/buildroot/package/spice/spice.mk new file mode 100644 index 0000000..7b09f39 --- /dev/null +++ b/buildroot/package/spice/spice.mk @@ -0,0 +1,74 @@ +################################################################################ +# +# spice +# +################################################################################ + +SPICE_VERSION = 0.12.8 +SPICE_SOURCE = spice-$(SPICE_VERSION).tar.bz2 +SPICE_SITE = http://www.spice-space.org/download/releases +SPICE_LICENSE = LGPL-2.1+ +SPICE_LICENSE_FILES = COPYING +SPICE_INSTALL_STAGING = YES +SPICE_DEPENDENCIES = \ + jpeg \ + libglib2 \ + openssl \ + pixman \ + spice-protocol + +# We disable everything for now, because the dependency tree can become +# quite deep if we try to enable some features, and I have not tested that. +SPICE_CONF_OPTS = \ + --disable-opengl \ + --disable-smartcard \ + --disable-automated-tests \ + --without-sasl \ + --disable-manual + +SPICE_DEPENDENCIES += host-pkgconf + +ifeq ($(BR2_PACKAGE_CELT051),y) +SPICE_CONF_OPTS += --enable-celt051 +SPICE_DEPENDENCIES += celt051 +else +SPICE_CONF_OPTS += --disable-celt051 +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +SPICE_CONF_OPTS += --enable-lz4 +SPICE_DEPENDENCIES += lz4 +else +SPICE_CONF_OPTS += --disable-lz4 +endif + +# no enable/disable, detected using pkg-config +ifeq ($(BR2_PACKAGE_OPUS),y) +SPICE_DEPENDENCIES += opus +endif + +# We need to tweak spice.pc because it /forgets/ (for static linking) that +# it should link against libz and libjpeg. libz is pkg-config-aware, while +# libjpeg isn't, hence the two-line tweak +define SPICE_POST_INSTALL_STAGING_FIX_PC + $(SED) 's/^\(Requires.private:.*\)$$/\1 zlib/; s/^\(Libs.private:.*\)$$/\1 -ljpeg/;' \ + "$(STAGING_DIR)/usr/lib/pkgconfig/spice-server.pc" +endef +SPICE_POST_INSTALL_STAGING_HOOKS += SPICE_POST_INSTALL_STAGING_FIX_PC + +# It is currently not possible to detect if stack-protection is available +# or not, because it requires support from both the compiler *and* the +# C library, but the C library (eg. uClibc) can be compiled without that +# support, even if gcc accepts the -fstack-protector-all option. +# spice's ./configure only checks for gcc's -fstack-protector-all option, +# so it misses the case where the C library doe not provide the requires +# support. +# A correct fix would be to fix spice's ./configure to also check the C +# library, but it might be much more involved. +# So, we simply disable it for now. After all, as uClibc's help puts it: +# Note that NOEXECSTACK on a kernel with address space randomization +# is generally sufficient to prevent most buffer overflow exploits +# without increasing code size. +SPICE_CONF_OPTS += gl_cv_warn__fstack_protector_all=no + +$(eval $(autotools-package)) diff --git a/buildroot/package/spidev_test/Config.in b/buildroot/package/spidev_test/Config.in new file mode 100644 index 0000000..0d8214c --- /dev/null +++ b/buildroot/package/spidev_test/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_SPIDEV_TEST + bool "spidev_test" + help + SPI testing utility (using spidev driver). + + This package builds and installs the userspace 'spidev_test' + command. It is up to the user to ensure that the kernel + configuration has all suitable options enabled to allow a + proper operation of 'spidev_test'. + + The version used is based on your toolchain headers version, + if it's older than 3.15 then 3.0 is used, otherwise 3.15 + is used. + This means you won't have quad-pumped SPI support if your + toolchain is too old. + + https://www.kernel.org/doc/Documentation/spi/spidev_test.c diff --git a/buildroot/package/spidev_test/spidev_test.hash b/buildroot/package/spidev_test/spidev_test.hash new file mode 100644 index 0000000..7bc4a27 --- /dev/null +++ b/buildroot/package/spidev_test/spidev_test.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 80471c330d8c0bf5ba6479c434a54a54bdd2dc59a703b9c76c2541ec04cfb8c3 spidev_test.c?id=v3.0 +sha256 3cf76b15d9a8644f3f5cbc0387cc02a7d4a392ade39788cbc6367cce98552e2f spidev_test.c?id=v4.10 diff --git a/buildroot/package/spidev_test/spidev_test.mk b/buildroot/package/spidev_test/spidev_test.mk new file mode 100644 index 0000000..1d65780 --- /dev/null +++ b/buildroot/package/spidev_test/spidev_test.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# spidev_test +# +################################################################################ + +# Build the latest version that is compatible with the toolchain's kernel headers +# v3.15+ requires SPI_TX_QUAD/SPI_RX_QUAD to build +# Normally kernel headers can't be newer than kernel so switch based on that. +# If you need quad-pumped spi support you need to upgrade your toolchain. +# Note that the location of spidev_test.c changes from v4.5 onwards. + +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15),y) +SPIDEV_TEST_VERSION = v4.10 +SPIDEV_TEST_PATH = tools/spi +else +SPIDEV_TEST_VERSION = v3.0 +SPIDEV_TEST_PATH = Documentation/spi +endif + +SPIDEV_TEST_SITE = http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/$(SPIDEV_TEST_PATH) +SPIDEV_TEST_SOURCE = spidev_test.c?id=$(SPIDEV_TEST_VERSION) +SPIDEV_TEST_LICENSE = GPL-2.0 + +# musl libc requires linux/ioctl.h for _IOC_SIZEBITS. Do a sed patch to keep +# compatibility with different spidev_test.c versions that we support. +define SPIDEV_ADD_LINUX_IOCTL + $(SED) 's~^#include ~#include \n#include ~' \ + $(@D)/spidev_test.c +endef + +SPIDEV_TEST_POST_PATCH_HOOKS += SPIDEV_ADD_LINUX_IOCTL + +define SPIDEV_TEST_EXTRACT_CMDS + cp $(DL_DIR)/$(SPIDEV_TEST_SOURCE) $(@D)/spidev_test.c +endef + +define SPIDEV_TEST_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CC) $(TARGET_CFLAGS) \ + -o $(@D)/spidev_test $(@D)/spidev_test.c +endef + +define SPIDEV_TEST_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/spidev_test \ + $(TARGET_DIR)/usr/sbin/spidev_test +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/sqlcipher/Config.in b/buildroot/package/sqlcipher/Config.in new file mode 100644 index 0000000..332754b --- /dev/null +++ b/buildroot/package/sqlcipher/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_SQLCIPHER + bool "sqlcipher" + depends on !BR2_PACKAGE_SQLITE + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_OPENSSL + help + SQLCipher is an SQLite extension that provides 256 bits AES + encryption of database files. Note that it is a fork of + SQLite and they cannot be installed side-by-side. + + http://sqlcipher.net + +if BR2_PACKAGE_SQLCIPHER + +config BR2_PACKAGE_SQLCIPHER_READLINE + bool "Command-line editing" + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_READLINE + help + Enable command-line editing. This requires ncurses and + readline. + +config BR2_PACKAGE_SQLCIPHER_STAT3 + bool "Additional query optimizations (stat3)" + help + Adds additional logic to the ANALYZE command and to the + query planner that can help SQLite to choose a better query + plan under certain situations. + +endif + +comment "sqlcipher conflicts with sqlite" + depends on BR2_PACKAGE_SQLITE + +comment "sqlcipher needs a toolchain w/ threads" + depends on !BR2_PACKAGE_SQLITE + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/sqlcipher/sqlcipher.hash b/buildroot/package/sqlcipher/sqlcipher.hash new file mode 100644 index 0000000..f3c7e0b --- /dev/null +++ b/buildroot/package/sqlcipher/sqlcipher.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 25fa4f4cb38dcf9e52e4d1f46be8fee9c7aaef35b6df96912a216b289e22c2af sqlcipher-v3.2.0.tar.gz diff --git a/buildroot/package/sqlcipher/sqlcipher.mk b/buildroot/package/sqlcipher/sqlcipher.mk new file mode 100644 index 0000000..db94d06 --- /dev/null +++ b/buildroot/package/sqlcipher/sqlcipher.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# sqlcipher +# +################################################################################ + +SQLCIPHER_VERSION = v3.2.0 +SQLCIPHER_SITE = $(call github,sqlcipher,sqlcipher,$(SQLCIPHER_VERSION)) +SQLCIPHER_DEPENDENCIES = openssl host-tcl +SQLCIPHER_INSTALL_STAGING = YES + +SQLCIPHER_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) $(SQLCIPHER_CFLAGS)" \ + TCLSH_CMD=$(HOST_DIR)/bin/tclsh$(TCL_VERSION_MAJOR) + +SQLCIPHER_CONF_OPTS = \ + --enable-threadsafe \ + --disable-tcl + +SQLCIPHER_CFLAGS += -DSQLITE_HAS_CODEC # Required according to the README +SQLCIPHER_CONF_ENV += LIBS="-lcrypto -lz" + +ifeq ($(BR2_PACKAGE_SQLCIPHER_STAT3),y) +SQLCIPHER_CFLAGS += -DSQLITE_ENABLE_STAT3 +endif + +ifeq ($(BR2_PACKAGE_SQLCIPHER_READLINE),y) +SQLCIPHER_DEPENDENCIES += ncurses readline +SQLCIPHER_CONF_OPTS += --with-readline-inc="-I$(STAGING_DIR)/usr/include" +else +SQLCIPHER_CONF_OPTS += --disable-readline +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/sqlite/Config.in b/buildroot/package/sqlite/Config.in new file mode 100644 index 0000000..ec73968 --- /dev/null +++ b/buildroot/package/sqlite/Config.in @@ -0,0 +1,66 @@ +config BR2_PACKAGE_SQLITE + bool "sqlite" + help + SQLite is a small C library that implements a + self-contained, embeddable, zero-configuration SQL database + engine. + + http://www.sqlite.org/ + +if BR2_PACKAGE_SQLITE + +config BR2_PACKAGE_SQLITE_STAT3 + bool "Additional query optimizations (stat3)" + help + Adds additional logic to the ANALYZE command and to the + query planner that can help SQLite to choose a better query + plan under certain situations. + +config BR2_PACKAGE_SQLITE_ENABLE_FTS3 + bool "Enable version 3 of the full-text search engine" + help + When this option is defined in the amalgamation (see + http://www.sqlite.org/amalgamation.html), version 3 of the + full-text search engine is added to the build automatically. + +config BR2_PACKAGE_SQLITE_ENABLE_JSON1 + bool "Enable the JSON extensions for SQLite" + help + When this option is defined in the amalgamation, the JSON + extensions are added to the build automatically. + +config BR2_PACKAGE_SQLITE_ENABLE_UNLOCK_NOTIFY + bool "Enable sqlite3_unlock_notify() interface" + help + This option enables the sqlite3_unlock_notify() interface + and its accosiated functionality. See the documentation + http://www.sqlite.org/unlock_notify.html for additional + information. + +config BR2_PACKAGE_SQLITE_SECURE_DELETE + bool "Set the secure_delete pragma on by default" + help + This compile-time option changes the default settings of the + secure_delete pragma. When this option is not used, + secure_delete defaults to off. When this option is present, + secure_delete defaults to on. + + The secure_delete setting causes deleted content to be + overwritten with zeros. There is a small performance penalty + for this since additional I/O must occur. On the other hand, + secure_delete can prevent sensitive information from + lingering in unused parts of the database file after it has + allegedly been deleted. See the documentation on the + http://www.sqlite.org/pragma.html#pragma_secure_delete for + additional information. + +config BR2_PACKAGE_SQLITE_NO_SYNC + bool "Disable fsync" + help + By default SQLite forces all database transactions to + storage immediately using fsync() to protect against data + loss in case of power failure. This option turns this + behavior off resulting in higher performance especially when + using slow flash storage. + +endif diff --git a/buildroot/package/sqlite/sqlite.hash b/buildroot/package/sqlite/sqlite.hash new file mode 100644 index 0000000..be5820e --- /dev/null +++ b/buildroot/package/sqlite/sqlite.hash @@ -0,0 +1,6 @@ +# From http://www.sqlite.org/download.html +sha1 f56fe3407d8297fc0a68a058f4c9e6b77e83575c sqlite-autoconf-3210000.tar.gz +# Calculated based on the hash above +sha256 d7dd516775005ad87a57f428b6f86afd206cb341722927f104d3f0cf65fbbbe3 sqlite-autoconf-3210000.tar.gz +# Locally calculated +sha256 66e056b6e8687f32af30d5187611b98b12a8f46f07aaf62f43585f276e8f0ac9 tea/license.terms diff --git a/buildroot/package/sqlite/sqlite.mk b/buildroot/package/sqlite/sqlite.mk new file mode 100644 index 0000000..5239592 --- /dev/null +++ b/buildroot/package/sqlite/sqlite.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# sqlite +# +################################################################################ + +SQLITE_VERSION = 3210000 +SQLITE_SOURCE = sqlite-autoconf-$(SQLITE_VERSION).tar.gz +SQLITE_SITE = http://www.sqlite.org/2017 +SQLITE_LICENSE = Public domain +SQLITE_LICENSE_FILES = tea/license.terms +SQLITE_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_SQLITE_STAT3),y) +SQLITE_CFLAGS += -DSQLITE_ENABLE_STAT3 +endif + +ifeq ($(BR2_PACKAGE_SQLITE_ENABLE_FTS3),y) +SQLITE_CFLAGS += -DSQLITE_ENABLE_FTS3 +endif + +ifeq ($(BR2_PACKAGE_SQLITE_ENABLE_JSON1),y) +SQLITE_CFLAGS += -DSQLITE_ENABLE_JSON1 +endif + +ifeq ($(BR2_PACKAGE_SQLITE_ENABLE_UNLOCK_NOTIFY),y) +SQLITE_CFLAGS += -DSQLITE_ENABLE_UNLOCK_NOTIFY +endif + +ifeq ($(BR2_PACKAGE_SQLITE_SECURE_DELETE),y) +SQLITE_CFLAGS += -DSQLITE_SECURE_DELETE +endif + +ifeq ($(BR2_PACKAGE_SQLITE_NO_SYNC),y) +SQLITE_CFLAGS += -DSQLITE_NO_SYNC +endif + +SQLITE_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) $(SQLITE_CFLAGS)" + +ifeq ($(BR2_STATIC_LIBS),y) +SQLITE_CONF_OPTS += --enable-dynamic-extensions=no +else +SQLITE_CONF_OPTS += --disable-static-shell +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +SQLITE_CONF_OPTS += --enable-threadsafe +else +SQLITE_CONF_OPTS += --disable-threadsafe +endif + +ifeq ($(BR2_PACKAGE_NCURSES)$(BR2_PACKAGE_READLINE),yy) +SQLITE_DEPENDENCIES += ncurses readline +SQLITE_CONF_OPTS += --disable-editline --enable-readline +else ifeq ($(BR2_PACKAGE_LIBEDIT),y) +SQLITE_DEPENDENCIES += libedit +SQLITE_CONF_OPTS += --enable-editline --disable-readline +else +SQLITE_CONF_OPTS += --disable-editline --disable-readline +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/squashfs/0001-musl.patch b/buildroot/package/squashfs/0001-musl.patch new file mode 100644 index 0000000..891b171 --- /dev/null +++ b/buildroot/package/squashfs/0001-musl.patch @@ -0,0 +1,71 @@ +Fix musl build + +Downloaded from +http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-devtools/squashfs-tools/squashfs-tools/fix-compat.patch +and adjusted paths. + +Signed-off-by: Bernd Kuhls + +Define FNM_EXTMATCH if not defined its glibc specific define +include missing sys/stat.h for stat* function declarations + +Upstream-Status: Pending +Signed-off-by: Khem Raj + +Index: squashfs-tools/action.c +=================================================================== +--- a/squashfs-tools.orig/action.c ++++ b/squashfs-tools/action.c +@@ -44,6 +44,10 @@ + #include "action.h" + #include "error.h" + ++#if !defined(FNM_EXTMATCH) ++#define FNM_EXTMATCH 0 ++#endif ++ + /* + * code to parse actions + */ +Index: squashfs-tools/mksquashfs.c +=================================================================== +--- a/squashfs-tools.orig/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -1286,6 +1286,10 @@ void write_dir(squashfs_inode *inode, st + dir_size + 3, directory_block, directory_offset, NULL, NULL, + dir, 0); + ++#if !defined(FNM_EXTMATCH) ++#define FNM_EXTMATCH 0 ++#endif ++ + #ifdef SQUASHFS_TRACE + { + unsigned char *dirp; +Index: squashfs-tools/pseudo.c +=================================================================== +--- a/squashfs-tools.orig/pseudo.c ++++ b/squashfs-tools/pseudo.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + #include + + #include "pseudo.h" +Index: squashfs-tools/unsquashfs.c +=================================================================== +--- a/squashfs-tools.orig/unsquashfs.c ++++ b/squashfs-tools/unsquashfs.c +@@ -38,6 +38,10 @@ + #include + #include + ++#ifndef FNM_EXTMATCH ++#define FNM_EXTMATCH 0 ++#endif ++ + struct cache *fragment_cache, *data_cache; + struct queue *to_reader, *to_inflate, *to_writer, *from_writer; + pthread_t *thread, *inflator_thread; diff --git a/buildroot/package/squashfs/Config.in b/buildroot/package/squashfs/Config.in new file mode 100644 index 0000000..70c0fc9 --- /dev/null +++ b/buildroot/package/squashfs/Config.in @@ -0,0 +1,48 @@ +config BR2_PACKAGE_SQUASHFS + bool "squashfs" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_SQUASHFS_GZIP if !(BR2_PACKAGE_SQUASHFS_LZMA || BR2_PACKAGE_SQUASHFS_LZO) + help + Tools to generate SquashFS filesystems. + + http://squashfs.sourceforge.net/ + +if BR2_PACKAGE_SQUASHFS + +config BR2_PACKAGE_SQUASHFS_GZIP + bool "gzip support" + default y + select BR2_PACKAGE_ZLIB + help + Support GZIP compression algorithm + +config BR2_PACKAGE_SQUASHFS_LZ4 + bool "lz4 support" + select BR2_PACKAGE_LZ4 + help + Support LZ4 compression algorithm + +config BR2_PACKAGE_SQUASHFS_LZMA + bool "lzma support" + select BR2_PACKAGE_XZ + help + Support LZMA compression algorithm + +config BR2_PACKAGE_SQUASHFS_LZO + bool "lzo support" + select BR2_PACKAGE_LZO + help + Support LZO compression algorithm + +config BR2_PACKAGE_SQUASHFS_XZ + bool "xz support" + select BR2_PACKAGE_XZ + help + Support XZ compression algorithm + +endif + +comment "squashfs needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU diff --git a/buildroot/package/squashfs/Config.in.host b/buildroot/package/squashfs/Config.in.host new file mode 100644 index 0000000..b353374 --- /dev/null +++ b/buildroot/package/squashfs/Config.in.host @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HOST_SQUASHFS + bool "host squashfs" + help + Tools to generate SquashFS filesystems. + + http://squashfs.sourceforge.net/ diff --git a/buildroot/package/squashfs/squashfs.hash b/buildroot/package/squashfs/squashfs.hash new file mode 100644 index 0000000..74fdb44 --- /dev/null +++ b/buildroot/package/squashfs/squashfs.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 2c49392816615b73bf5d6cdce9776cb66a01f5a1494b1d9af580667e32bab001 squashfs-3de1687d7432ea9b302c2db9521996f506c140a3.tar.gz diff --git a/buildroot/package/squashfs/squashfs.mk b/buildroot/package/squashfs/squashfs.mk new file mode 100644 index 0000000..9599d89 --- /dev/null +++ b/buildroot/package/squashfs/squashfs.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# squashfs +# +################################################################################ + +SQUASHFS_VERSION = 3de1687d7432ea9b302c2db9521996f506c140a3 +SQUASHFS_SITE = https://git.kernel.org/pub/scm/fs/squashfs/squashfs-tools.git +SQUASHFS_SITE_METHOD = git +SQUASHFS_LICENSE = GPL-2.0+ +SQUASHFS_LICENSE_FILES = COPYING +SQUASHFS_MAKE_ARGS = XATTR_SUPPORT=1 + +ifeq ($(BR2_PACKAGE_SQUASHFS_LZ4),y) +SQUASHFS_DEPENDENCIES += lz4 +SQUASHFS_MAKE_ARGS += LZ4_SUPPORT=1 COMP_DEFAULT=lz4 +else +SQUASHFS_MAKE_ARGS += LZ4_SUPPORT=0 +endif + +ifeq ($(BR2_PACKAGE_SQUASHFS_LZMA),y) +SQUASHFS_DEPENDENCIES += xz +SQUASHFS_MAKE_ARGS += LZMA_XZ_SUPPORT=1 COMP_DEFAULT=lzma +else +SQUASHFS_MAKE_ARGS += LZMA_XZ_SUPPORT=0 +endif + +ifeq ($(BR2_PACKAGE_SQUASHFS_XZ),y) +SQUASHFS_DEPENDENCIES += xz +SQUASHFS_MAKE_ARGS += XZ_SUPPORT=1 COMP_DEFAULT=xz +else +SQUASHFS_MAKE_ARGS += XZ_SUPPORT=0 +endif + +ifeq ($(BR2_PACKAGE_SQUASHFS_LZO),y) +SQUASHFS_DEPENDENCIES += lzo +SQUASHFS_MAKE_ARGS += LZO_SUPPORT=1 COMP_DEFAULT=lzo +else +SQUASHFS_MAKE_ARGS += LZO_SUPPORT=0 +endif + +ifeq ($(BR2_PACKAGE_SQUASHFS_GZIP),y) +SQUASHFS_DEPENDENCIES += zlib +SQUASHFS_MAKE_ARGS += GZIP_SUPPORT=1 COMP_DEFAULT=gzip +else +SQUASHFS_MAKE_ARGS += GZIP_SUPPORT=0 +endif + +HOST_SQUASHFS_DEPENDENCIES = host-zlib host-lz4 host-lzo host-xz + +HOST_SQUASHFS_MAKE_ARGS = \ + XATTR_SUPPORT=1 \ + XZ_SUPPORT=1 \ + GZIP_SUPPORT=1 \ + LZ4_SUPPORT=1 \ + LZO_SUPPORT=1 \ + LZMA_XZ_SUPPORT=1 + +define SQUASHFS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + CC="$(TARGET_CC)" \ + EXTRA_CFLAGS="$(TARGET_CFLAGS) -fgnu89-inline" \ + EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \ + $(SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ +endef + +define SQUASHFS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ INSTALL_DIR=$(TARGET_DIR)/usr/bin install +endef + +define HOST_SQUASHFS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) \ + CC="$(HOSTCC)" \ + EXTRA_CFLAGS="$(HOST_CFLAGS)" \ + EXTRA_LDFLAGS="$(HOST_LDFLAGS)" \ + $(HOST_SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ +endef + +define HOST_SQUASHFS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_SQUASHFS_MAKE_ARGS) \ + -C $(@D)/squashfs-tools/ INSTALL_DIR=$(HOST_DIR)/bin install +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/squeezelite/0001-Makefile-allow-passing-CFLAGS-and-LDFLAGS.patch b/buildroot/package/squeezelite/0001-Makefile-allow-passing-CFLAGS-and-LDFLAGS.patch new file mode 100644 index 0000000..2f002a8 --- /dev/null +++ b/buildroot/package/squeezelite/0001-Makefile-allow-passing-CFLAGS-and-LDFLAGS.patch @@ -0,0 +1,54 @@ +From a0f2e79d1373967dac9f3df4c500a71cd1b96b2b Mon Sep 17 00:00:00 2001 +From: Hiroshi Kawashima +Date: Sun, 7 Feb 2016 18:04:53 +0100 +Subject: [PATCH] Makefile: allow passing CFLAGS and LDFLAGS + +This patch is applied to squeezelite Makefile to add override +directive for CFLAGS and LDFLAGS assignment. +This enables adding flags to CFLAGS and LDFLAGS in Makefile. + +Signed-off-by: Hiroshi Kawashima +--- + Makefile | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index dca2abd..286c725 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,4 +1,6 @@ + # Cross compile support - create a Makefile which defines these three variables and then includes this Makefile... ++override CFLAGS += $(OPTS) ++override LDFLAGS += -lasound -lpthread -lm -lrt + CFLAGS ?= -Wall -fPIC -O2 $(OPTS) + LDFLAGS ?= -lasound -lpthread -lm -lrt + EXECUTABLE ?= squeezelite +@@ -52,20 +54,20 @@ endif + + # add optional link options + ifneq (,$(findstring $(OPT_LINKALL), $(CFLAGS))) +- LDFLAGS += $(LINKALL) ++ override LDFLAGS += $(LINKALL) + ifneq (,$(findstring $(OPT_FF), $(CFLAGS))) +- LDFLAGS += $(LINKALL_FF) ++ override LDFLAGS += $(LINKALL_FF) + endif + ifneq (,$(findstring $(OPT_RESAMPLE), $(CFLAGS))) +- LDFLAGS += $(LINKALL_RESAMPLE) ++ override LDFLAGS += $(LINKALL_RESAMPLE) + endif + ifneq (,$(findstring $(OPT_IR), $(CFLAGS))) +- LDFLAGS += $(LINKALL_IR) ++ override LDFLAGS += $(LINKALL_IR) + endif + else + # if not LINKALL and linux add LINK_LINUX + ifeq ($(UNAME), Linux) +- LDFLAGS += $(LINK_LINUX) ++ override LDFLAGS += $(LINK_LINUX) + endif + endif + +-- +2.6.4 + diff --git a/buildroot/package/squeezelite/0002-output_alsa-use-mallopt-only-on-glibc.patch b/buildroot/package/squeezelite/0002-output_alsa-use-mallopt-only-on-glibc.patch new file mode 100644 index 0000000..6962b7b --- /dev/null +++ b/buildroot/package/squeezelite/0002-output_alsa-use-mallopt-only-on-glibc.patch @@ -0,0 +1,34 @@ +From 903922a7bcf06e04d9830b47bba6d65ed37304c1 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 7 Feb 2016 18:05:56 +0100 +Subject: [PATCH] output_alsa: use mallopt() only on glibc + +The musl C library does not provide the glibc specific mallopt() +functionality, so use it only when __GLIBC__ is defined. + +uClibc pretends to be glibc by defining __GLIBC__, but it implements +mallopt(), so it works fine. + +Signed-off-by: Thomas Petazzoni +--- + output_alsa.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/output_alsa.c b/output_alsa.c +index aa01560..44c9fc7 100644 +--- a/output_alsa.c ++++ b/output_alsa.c +@@ -862,8 +862,10 @@ void output_init_alsa(log_level level, const char *device, unsigned output_buf_s + LOG_INFO("memory locked"); + } + ++#ifdef __GLIBC__ + mallopt(M_TRIM_THRESHOLD, -1); + mallopt(M_MMAP_MAX, 0); ++#endif + + touch_memory(silencebuf, MAX_SILENCE_FRAMES * BYTES_PER_FRAME); + touch_memory(outputbuf->buf, outputbuf->size); +-- +2.6.4 + diff --git a/buildroot/package/squeezelite/0003-ffmpeg_2_9.patch b/buildroot/package/squeezelite/0003-ffmpeg_2_9.patch new file mode 100644 index 0000000..f69b829 --- /dev/null +++ b/buildroot/package/squeezelite/0003-ffmpeg_2_9.patch @@ -0,0 +1,57 @@ +Fix compilation with ffmpeg >= 2.9 + +Downloaded from Debian: +https://sources.debian.net/src/squeezelite/1.8-3/debian/patches/ffmpeg_2.9.patch/ + +Signed-off-by: Bernd Kuhls + + +Description: Replace deprecated FFmpeg API +Author: Andreas Cadhalpun +Last-Update: <2015-11-02> + +--- squeezelite-1.8.orig/ffmpeg.c ++++ squeezelite-1.8/ffmpeg.c +@@ -52,8 +52,8 @@ struct ff_s { + unsigned (* avcodec_version)(void); + AVCodec * (* avcodec_find_decoder)(int); + int attribute_align_arg (* avcodec_open2)(AVCodecContext *, const AVCodec *, AVDictionary **); +- AVFrame * (* avcodec_alloc_frame)(void); +- void (* avcodec_free_frame)(AVFrame **); ++ AVFrame * (* av_frame_alloc)(void); ++ void (* av_frame_free)(AVFrame **); + int attribute_align_arg (* avcodec_decode_audio4)(AVCodecContext *, AVFrame *, int *, const AVPacket *); + // ffmpeg symbols to be dynamically loaded from libavformat + unsigned (* avformat_version)(void); +@@ -324,7 +324,7 @@ static decode_state ff_decode(void) { + + AVCODEC(ff, open2, ff->codecC, codec, NULL); + +- ff->frame = AVCODEC(ff, alloc_frame); ++ ff->frame = AV(ff, frame_alloc); + + ff->avpkt = AV(ff, malloc, sizeof(AVPacket)); + if (ff->avpkt == NULL) { +@@ -520,9 +520,9 @@ static void _free_ff_data(void) { + if (ff->frame) { + // ffmpeg version dependant free function + #if !LINKALL +- ff->avcodec_free_frame ? AVCODEC(ff, free_frame, &ff->frame) : AV(ff, freep, &ff->frame); ++ ff->av_frame_free ? AV(ff, frame_free, &ff->frame) : AV(ff, freep, &ff->frame); + #elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54,28,0) +- AVCODEC(ff, free_frame, &ff->frame); ++ AV(ff, frame_free, &ff->frame); + #else + AV(ff, freep, &ff->frame); + #endif +@@ -607,8 +607,8 @@ static bool load_ff() { + ff->avcodec_version = dlsym(handle_codec, "avcodec_version"); + ff->avcodec_find_decoder = dlsym(handle_codec, "avcodec_find_decoder"); + ff->avcodec_open2 = dlsym(handle_codec, "avcodec_open2"); +- ff->avcodec_alloc_frame = dlsym(handle_codec, "avcodec_alloc_frame"); +- ff->avcodec_free_frame = dlsym(handle_codec, "avcodec_free_frame"); ++ ff->av_frame_alloc = dlsym(handle_codec, "av_frame_alloc"); ++ ff->av_frame_free = dlsym(handle_codec, "av_frame_free"); + ff->avcodec_decode_audio4 = dlsym(handle_codec, "avcodec_decode_audio4"); + ff->av_init_packet = dlsym(handle_codec, "av_init_packet"); + ff->av_free_packet = dlsym(handle_codec, "av_free_packet"); diff --git a/buildroot/package/squeezelite/Config.in b/buildroot/package/squeezelite/Config.in new file mode 100644 index 0000000..63b9183 --- /dev/null +++ b/buildroot/package/squeezelite/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_SQUEEZELITE + bool "squeezelite" + depends on BR2_USE_WCHAR # flac + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_USE_MMU # mpg123 + depends on !BR2_STATIC_LIBS # dlopen + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_ALSA_LIB_MIXER + select BR2_PACKAGE_FLAC + select BR2_PACKAGE_LIBMAD + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_FAAD2 + select BR2_PACKAGE_MPG123 + help + Logitech Media Server client + + https://code.google.com/p/squeezelite/ + +if BR2_PACKAGE_SQUEEZELITE + +config BR2_PACKAGE_SQUEEZELITE_FFMPEG + bool "Enable WMA and ALAC decoding" + default y + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_FFMPEG + +config BR2_PACKAGE_SQUEEZELITE_DSD + bool "Enable DSD decoding" + +config BR2_PACKAGE_SQUEEZELITE_RESAMPLE + bool "Enable resampling support" + select BR2_PACKAGE_LIBSOXR + +config BR2_PACKAGE_SQUEEZELITE_VISEXPORT + bool "Enable visualiser support" + +endif + +comment "squeezelite needs a toolchain w/ wchar, NPTL, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || BR2_STATIC_LIBS diff --git a/buildroot/package/squeezelite/squeezelite.hash b/buildroot/package/squeezelite/squeezelite.hash new file mode 100644 index 0000000..1dbb4c1 --- /dev/null +++ b/buildroot/package/squeezelite/squeezelite.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0c844e7714d3f15325629c59ee75e6309763116e61a6b73486b502e2e5cce5fd squeezelite-v1.8.tar.gz diff --git a/buildroot/package/squeezelite/squeezelite.mk b/buildroot/package/squeezelite/squeezelite.mk new file mode 100644 index 0000000..3b23b10 --- /dev/null +++ b/buildroot/package/squeezelite/squeezelite.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# squeezelite +# +################################################################################ + +SQUEEZELITE_VERSION = v1.8 +SQUEEZELITE_SITE = $(call github,robadenshi,squeezelite,$(SQUEEZELITE_VERSION)) +SQUEEZELITE_LICENSE = GPL-3.0 +SQUEEZELITE_LICENSE_FILES = LICENSE.txt +SQUEEZELITE_DEPENDENCIES = alsa-lib flac libmad libvorbis faad2 mpg123 +SQUEEZELITE_MAKE_OPTS = -DLINKALL + +ifeq ($(BR2_PACKAGE_SQUEEZELITE_FFMPEG),y) +SQUEEZELITE_DEPENDENCIES += ffmpeg +SQUEEZELITE_MAKE_OPTS += -DFFMPEG +endif + +ifeq ($(BR2_PACKAGE_SQUEEZELITE_DSD),y) +SQUEEZELITE_MAKE_OPTS += -DDSD +endif + +ifeq ($(BR2_PACKAGE_SQUEEZELITE_RESAMPLE),y) +SQUEEZELITE_DEPENDENCIES += libsoxr +SQUEEZELITE_MAKE_OPTS += -DRESAMPLE +endif + +ifeq ($(BR2_PACKAGE_SQUEEZELITE_VISEXPORT),y) +SQUEEZELITE_MAKE_OPTS += -DVISEXPORT +endif + +define SQUEEZELITE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + OPTS="$(SQUEEZELITE_MAKE_OPTS)" -C $(@D) all +endef + +define SQUEEZELITE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/squeezelite \ + $(TARGET_DIR)/usr/bin/squeezelite +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/squid/0001-assume-get-certificate-ok.patch b/buildroot/package/squid/0001-assume-get-certificate-ok.patch new file mode 100644 index 0000000..e26b50d --- /dev/null +++ b/buildroot/package/squid/0001-assume-get-certificate-ok.patch @@ -0,0 +1,17 @@ +The openssl get_certificate working test isn't cross compile friendly. +Just assume it works ok since we're using a modern OpenSSL version. + +Signed-off-by: Gustavo Zacarias + +diff -Nura squid-3.5.1.orig/configure.ac squid-3.5.1/configure.ac +--- squid-3.5.1.orig/configure.ac 2015-01-27 11:09:15.035711981 -0300 ++++ squid-3.5.1/configure.ac 2015-01-27 11:09:25.829084482 -0300 +@@ -1342,7 +1342,7 @@ + AC_DEFINE(USE_OPENSSL,1,[OpenSSL support is available]) + + # check for other specific broken implementations +- SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS ++ #SQUID_CHECK_OPENSSL_GETCERTIFICATE_WORKS + SQUID_CHECK_OPENSSL_CONST_SSL_METHOD + SQUID_CHECK_OPENSSL_TXTDB + SQUID_CHECK_OPENSSL_HELLO_OVERWRITE_HACK diff --git a/buildroot/package/squid/0002-missing-include-time_h.patch b/buildroot/package/squid/0002-missing-include-time_h.patch new file mode 100644 index 0000000..18b3ab3 --- /dev/null +++ b/buildroot/package/squid/0002-missing-include-time_h.patch @@ -0,0 +1,28 @@ +ipc/Kid.cc: add missing include of time.h + +Function time() comes from , so add the necessary include. +This fixes compilation on some configurations, for example +http://autobuild.buildroot.net/results/b33/b33e1f41e50b6e7ac3e30806b9a617d451bc27b4/ + +Signed-off-by: Thomas De Schampheleire +Upstream-status: submitted (http://bugs.squid-cache.org/show_bug.cgi?id=3967) + +--- + src/ipc/Kid.cc | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + + +diff --git a/src/ipc/Kid.cc b/src/ipc/Kid.cc +--- a/src/ipc/Kid.cc ++++ b/src/ipc/Kid.cc +@@ -11,6 +11,10 @@ + #include + #endif + ++#if HAVE_TIME_H ++#include ++#endif ++ + int TheProcessKind = pkOther; + + Kid::Kid(): diff --git a/buildroot/package/squid/0003-ESI-make-sure-endofName-never-exceeds-tagEnd-130.patch b/buildroot/package/squid/0003-ESI-make-sure-endofName-never-exceeds-tagEnd-130.patch new file mode 100644 index 0000000..6e71677 --- /dev/null +++ b/buildroot/package/squid/0003-ESI-make-sure-endofName-never-exceeds-tagEnd-130.patch @@ -0,0 +1,35 @@ +From eb2db98a676321b814fc4a51c4fb7928a8bb45d9 Mon Sep 17 00:00:00 2001 +From: Amos Jeffries +Date: Fri, 19 Jan 2018 13:54:14 +1300 +Subject: [PATCH] ESI: make sure endofName never exceeds tagEnd (#130) + +Signed-off-by: Peter Korsgaard +--- + src/esi/CustomParser.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/esi/CustomParser.cc b/src/esi/CustomParser.cc +index d86d2d309..db634d921 100644 +--- a/src/esi/CustomParser.cc ++++ b/src/esi/CustomParser.cc +@@ -121,7 +121,7 @@ ESICustomParser::parse(char const *dataToParse, size_t const lengthOfData, bool + + char * endofName = strpbrk(const_cast(tag), w_space); + +- if (endofName > tagEnd) ++ if (!endofName || endofName > tagEnd) + endofName = const_cast(tagEnd); + + *endofName = '\0'; +@@ -214,7 +214,7 @@ ESICustomParser::parse(char const *dataToParse, size_t const lengthOfData, bool + + char * endofName = strpbrk(const_cast(tag), w_space); + +- if (endofName > tagEnd) ++ if (!endofName || endofName > tagEnd) + endofName = const_cast(tagEnd); + + *endofName = '\0'; +-- +2.11.0 + diff --git a/buildroot/package/squid/0004-Fix-indirect-IP-logging-for-transactions-without-a-c.patch b/buildroot/package/squid/0004-Fix-indirect-IP-logging-for-transactions-without-a-c.patch new file mode 100644 index 0000000..51fff30 --- /dev/null +++ b/buildroot/package/squid/0004-Fix-indirect-IP-logging-for-transactions-without-a-c.patch @@ -0,0 +1,31 @@ +From 8232b83d3fa47a1399f155cb829db829369fbae9 Mon Sep 17 00:00:00 2001 +From: squidadm +Date: Sun, 21 Jan 2018 08:07:08 +1300 +Subject: [PATCH] Fix indirect IP logging for transactions without a client + connection (#129) (#136) + +Signed-off-by: Peter Korsgaard +--- + src/client_side_request.cc | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/client_side_request.cc b/src/client_side_request.cc +index be124f355..203f89d46 100644 +--- a/src/client_side_request.cc ++++ b/src/client_side_request.cc +@@ -488,9 +488,9 @@ clientFollowXForwardedForCheck(allow_t answer, void *data) + * Ensure that the access log shows the indirect client + * instead of the direct client. + */ +- ConnStateData *conn = http->getConn(); +- conn->log_addr = request->indirect_client_addr; +- http->al->cache.caddr = conn->log_addr; ++ http->al->cache.caddr = request->indirect_client_addr; ++ if (ConnStateData *conn = http->getConn()) ++ conn->log_addr = request->indirect_client_addr; + } + request->x_forwarded_for_iterator.clean(); + request->flags.done_follow_x_forwarded_for = true; +-- +2.11.0 + diff --git a/buildroot/package/squid/Config.in b/buildroot/package/squid/Config.in new file mode 100644 index 0000000..141a502 --- /dev/null +++ b/buildroot/package/squid/Config.in @@ -0,0 +1,15 @@ +comment "squid needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_SQUID + bool "squid" + depends on BR2_INSTALL_LIBSTDCPP + # needs fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBCAP + help + Caching proxy for the Web supporting HTTP, HTTPS, FTP, and + more. + + http://www.squid-cache.org/ diff --git a/buildroot/package/squid/S97squid b/buildroot/package/squid/S97squid new file mode 100755 index 0000000..535b1d9 --- /dev/null +++ b/buildroot/package/squid/S97squid @@ -0,0 +1,40 @@ +#!/bin/sh + +[ -x /usr/sbin/squid ] || exit 0 +[ -f /etc/squid.conf ] || exit 0 + +case "$1" in + start) + printf "Starting squid: " + if [ ! -d /var/log/squid ]; then + mkdir -p /var/log/squid + chown squid:squid /var/log/squid + fi + start-stop-daemon -S -x /usr/sbin/squid + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + + stop) + printf "Stopping squid: " + /usr/sbin/squid -k shutdown + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + + reload) + printf "Reloading squid configuration: " + /usr/sbin/squid -k reconfigure + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + + restart) + printf "Restarting squid: " + /usr/sbin/squid -k restart + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + + *) + echo "Usage: $0 {start|stop|reload|restart}" + exit 1 +esac + +exit 0 diff --git a/buildroot/package/squid/squid.hash b/buildroot/package/squid/squid.hash new file mode 100644 index 0000000..8787cb2 --- /dev/null +++ b/buildroot/package/squid/squid.hash @@ -0,0 +1,5 @@ +# From http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.27.tar.xz.asc +md5 39ef8199675d48a314b540f92c00c545 squid-3.5.27.tar.xz +sha1 1e69c96d13cd49844da3bcf33a0b428fbe7b6f77 squid-3.5.27.tar.xz +# Locally calculated +sha256 58f5d05257af1fb964fde20e134d660fac9afa86b6fd8c70d63ead63068378fa COPYING diff --git a/buildroot/package/squid/squid.mk b/buildroot/package/squid/squid.mk new file mode 100644 index 0000000..8ade55e --- /dev/null +++ b/buildroot/package/squid/squid.mk @@ -0,0 +1,93 @@ +################################################################################ +# +# squid +# +################################################################################ + +SQUID_VERSION_MAJOR = 3.5 +SQUID_VERSION = $(SQUID_VERSION_MAJOR).27 +SQUID_SOURCE = squid-$(SQUID_VERSION).tar.xz +SQUID_SITE = http://www.squid-cache.org/Versions/v3/$(SQUID_VERSION_MAJOR) +SQUID_LICENSE = GPL-2.0+ +SQUID_LICENSE_FILES = COPYING +# For 0001-assume-get-certificate-ok.patch +SQUID_AUTORECONF = YES +SQUID_DEPENDENCIES = libcap host-libcap host-pkgconf \ + $(if $(BR2_PACKAGE_LIBNETFILTER_CONNTRACK),libnetfilter_conntrack) +SQUID_CONF_ENV = \ + ac_cv_epoll_works=yes \ + ac_cv_func_setresuid=yes \ + ac_cv_func_va_copy=yes \ + ac_cv_func___va_copy=yes \ + ac_cv_func_strnstr=no \ + ac_cv_have_squid=yes \ + BUILDCXX="$(HOSTCXX)" \ + BUILDCXXFLAGS="$(HOST_CXXFLAGS)" +SQUID_CONF_OPTS = \ + --enable-async-io=8 \ + $(if $(BR2_TOOLCHAIN_USES_MUSL),--disable-linux-netfilter,--enable-linux-netfilter) \ + --enable-removal-policies="lru,heap" \ + --with-filedescriptors=1024 \ + --disable-ident-lookups \ + --without-mit-krb5 \ + --enable-auth-basic="fake getpwnam" \ + --enable-auth-digest="file" \ + --enable-auth-negotiate="wrapper" \ + --enable-auth-ntlm="fake" \ + --disable-strict-error-checking \ + --enable-external-acl-helpers="file_userip" \ + --with-logdir=/var/log/squid/ \ + --with-pidfile=/var/run/squid.pid \ + --with-swapdir=/var/cache/squid/ \ + --with-default-user=squid + +# Atomics in Squid use __sync built-ins on 4 and 8 bytes. However, the +# configure script tests them using AC_TRY_RUN, so we have to give +# some hints. +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4)$(BR2_TOOLCHAIN_HAS_SYNC_8),yy) +SQUID_CONF_ENV += squid_cv_gnu_atomics=yes +else +SQUID_CONF_ENV += squid_cv_gnu_atomics=no +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SQUID_CONF_OPTS += --with-openssl +SQUID_DEPENDENCIES += openssl +else +SQUID_CONF_OPTS += --without-openssl +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +SQUID_CONF_OPTS += --with-gnutls +SQUID_DEPENDENCIES += gnutls +else +SQUID_CONF_OPTS += --without-gnutls +endif + +define SQUID_CLEANUP_TARGET + rm -f $(addprefix $(TARGET_DIR)/usr/bin/, \ + RunCache RunAccel) + rm -f $(addprefix $(TARGET_DIR)/etc/, \ + cachemgr.conf mime.conf.default squid.conf.default) +endef + +SQUID_POST_INSTALL_TARGET_HOOKS += SQUID_CLEANUP_TARGET + +define SQUID_USERS + squid -1 squid -1 * - - - Squid proxy cache +endef + +define SQUID_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/squid/S97squid \ + $(TARGET_DIR)/etc/init.d/S97squid +endef + +define SQUID_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/tools/systemd/squid.service \ + $(TARGET_DIR)/usr/lib/systemd/system/squid.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../..//usr/lib/systemd/system/squid.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/squid.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/sredird/0001-termio.patch b/buildroot/package/sredird/0001-termio.patch new file mode 100644 index 0000000..7c7c67f --- /dev/null +++ b/buildroot/package/sredird/0001-termio.patch @@ -0,0 +1,20 @@ +Fix musl build + +Patch was inspired by +http://svnweb.freebsd.org/ports/head/comms/sredird/files/patch-sredird.c?revision=363168&view=markup +http://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/sysutils/sredird/patches/patch-aa +https://github.com/bitrig/bitrig-ports/blob/master/comms/sredird/patches/patch-sredird_c + +Signed-off-by: Bernd Kuhls + +diff -uNr sredird-2.2.2.org/sredird.c sredird-2.2.2/sredird.c +--- sredird-2.2.2.org/sredird.c 2005-08-12 16:10:46.000000000 +0200 ++++ sredird-2.2.2/sredird.c 2016-01-31 18:53:08.000000000 +0100 +@@ -110,7 +110,6 @@ + #include + #include + #include +-#include + #include + #include + #include diff --git a/buildroot/package/sredird/Config.in b/buildroot/package/sredird/Config.in new file mode 100644 index 0000000..d8c5ef9 --- /dev/null +++ b/buildroot/package/sredird/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_SREDIRD + bool "sredird" + help + Sredird is a serial port redirector that is compliant with + the RFC 2217 "Telnet Com Port Control Option" protocol. This + protocol lets you share a serial port through the network. + + http://freecode.com/projects/sredird diff --git a/buildroot/package/sredird/sredird.hash b/buildroot/package/sredird/sredird.hash new file mode 100644 index 0000000..63a419f --- /dev/null +++ b/buildroot/package/sredird/sredird.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 640c47dcd84b3b90640165a38eb336a675fdab06c14c09cae2f4a604cae560d3 sredird-2.2.2.tar.gz diff --git a/buildroot/package/sredird/sredird.mk b/buildroot/package/sredird/sredird.mk new file mode 100644 index 0000000..723c10a --- /dev/null +++ b/buildroot/package/sredird/sredird.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# sredird +# +################################################################################ + +SREDIRD_VERSION = 2.2.2 +SREDIRD_SITE = http://www.ibiblio.org/pub/Linux/system/serial +SREDIRD_LICENSE = GPL-2.0+ +SREDIRD_LICENSE_FILES = COPYING + +define SREDIRD_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define SREDIRD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/sredird $(TARGET_DIR)/usr/sbin/sredird +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/sshfs/Config.in b/buildroot/package/sshfs/Config.in new file mode 100644 index 0000000..7383b60 --- /dev/null +++ b/buildroot/package/sshfs/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_SSHFS + bool "sshfs (FUSE)" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse, glib2 + depends on BR2_USE_MMU # libfuse, glib2 + depends on !BR2_STATIC_LIBS # libfuse + select BR2_PACKAGE_LIBFUSE + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_OPENSSH + help + FUSE filesystem client based on the SSH File Transfer + Protocol. + + https://github.com/libfuse/sshfs + +comment "sshfs needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/sshfs/sshfs.hash b/buildroot/package/sshfs/sshfs.hash new file mode 100644 index 0000000..09ae5d1 --- /dev/null +++ b/buildroot/package/sshfs/sshfs.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 7f689174d02e6b7e2631306fda4fb8e6b4483102d1bce82b3cdafba33369ad22 sshfs-2.8.tar.gz diff --git a/buildroot/package/sshfs/sshfs.mk b/buildroot/package/sshfs/sshfs.mk new file mode 100644 index 0000000..ee96ad6 --- /dev/null +++ b/buildroot/package/sshfs/sshfs.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# sshfs +# +################################################################################ + +SSHFS_VERSION = 2.8 +SSHFS_SITE = https://github.com/libfuse/sshfs/releases/download/sshfs_$(SSHFS_VERSION) +SSHFS_LICENSE = GPL-2.0 +SSHFS_LICENSE_FILES = COPYING +SSHFS_DEPENDENCIES = \ + libglib2 libfuse openssh \ + $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_ENABLE_LOCALE),,libiconv) + +$(eval $(autotools-package)) diff --git a/buildroot/package/sshpass/Config.in b/buildroot/package/sshpass/Config.in new file mode 100644 index 0000000..24e4629 --- /dev/null +++ b/buildroot/package/sshpass/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SSHPASS + bool "sshpass" + depends on BR2_USE_MMU # fork() + help + Sshpass is a tool for non-interactivly performing + password authentication with SSH's so called + "interactive keyboard password authentication". + + http://sshpass.sourceforge.net diff --git a/buildroot/package/sshpass/sshpass.hash b/buildroot/package/sshpass/sshpass.hash new file mode 100644 index 0000000..f6e0611 --- /dev/null +++ b/buildroot/package/sshpass/sshpass.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 c6324fcee608b99a58f9870157dfa754837f8c48be3df0f5e2f3accf145dee60 sshpass-1.06.tar.gz diff --git a/buildroot/package/sshpass/sshpass.mk b/buildroot/package/sshpass/sshpass.mk new file mode 100644 index 0000000..6c14f0f --- /dev/null +++ b/buildroot/package/sshpass/sshpass.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# sshpass +# +################################################################################ + +SSHPASS_VERSION = 1.06 +SSHPASS_SITE = http://downloads.sourceforge.net/project/sshpass/sshpass/$(SSHPASS_VERSION) +SSHPASS_LICENSE = GPL-2.0+ +SSHPASS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/sslh/0001-secure-version-while-building-sslh-in-a-larger-git-t.patch b/buildroot/package/sslh/0001-secure-version-while-building-sslh-in-a-larger-git-t.patch new file mode 100644 index 0000000..d23bc9f --- /dev/null +++ b/buildroot/package/sslh/0001-secure-version-while-building-sslh-in-a-larger-git-t.patch @@ -0,0 +1,45 @@ +From 0c39699da9a3d6534b6d26e7c9686ee76d81b64a Mon Sep 17 00:00:00 2001 +From: David Bachelart +Date: Thu, 26 Jan 2017 10:07:47 +0100 +Subject: [PATCH] fix version extraction when building in a larger git tree + +sslh uses host git to extract its own version number. In buildroot, this +is an issue since extracted information is conflicting with buildroot git +status if we use git as VCS for buildroot. + +Since these git calls are legitimate only if git is used for the sslh +subtree only, this patch adds a check : a .git directory has to exist at +the root of the project to enable git-extracted version string. + +Signed-off-by: David Bachelart +[yann.morin.1998@free.fr: fix troll character U+c2a0] +Signed-off-by: "Yann E. MORIN" +--- + genver.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/genver.sh b/genver.sh +index 79fd0a0..051e57b 100755 +--- a/genver.sh ++++ b/genver.sh +@@ -7,7 +7,7 @@ else + QUIET=0 + fi + +-if ! `(git status | grep -q "On branch") 2> /dev/null`; then ++if [ ! -d .git ] || ! `(git status | grep -q "On branch") 2> /dev/null`; then + # If we don't have git, we can't work out what + # version this is. It must have been downloaded as a + # zip file. +@@ -25,7 +25,7 @@ if ! `(git status | grep -q "On branch") 2> /dev/null`; then + fi + fi + +-if head=`git rev-parse --verify HEAD 2>/dev/null`; then ++if [ -d .git ] && head=`git rev-parse --verify HEAD 2>/dev/null`; then + # generate the version info based on the tag + release=`(git describe --tags || git --describe || git describe --all --long) \ + 2>/dev/null | tr -d '\n'` +-- +2.1.4 + diff --git a/buildroot/package/sslh/Config.in b/buildroot/package/sslh/Config.in new file mode 100644 index 0000000..21bd65f --- /dev/null +++ b/buildroot/package/sslh/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_SSLH + bool "sslh" + depends on BR2_INSTALL_LIBSTDCPP + # uses fork() + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBCONFIG + help + Applicative protocol multiplexer + + http://www.rutschle.net/tech/sslh.shtml + +comment "sslh needs a toolchain w/ C++" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/sslh/S35sslh b/buildroot/package/sslh/S35sslh new file mode 100644 index 0000000..4a613f8 --- /dev/null +++ b/buildroot/package/sslh/S35sslh @@ -0,0 +1,48 @@ +#!/bin/sh +# +# Starts the SSLH server +# + +# default setup : listen on port 8090 forward ssh traffic to +# localhost:22 and http traffic to localhost:80 +SSLH_ARGS="--listen 0.0.0.0:8090 --ssh 127.0.0.1:22 --http 127.0.0.1:80" + +# Allow a few customizations from a config file (overrides +# default setup) +test -r /etc/default/sslh && . /etc/default/sslh + +start() { + SSLH_ARGS="$SSLH_ARGS --user root" + echo -n "Starting sslh: " + start-stop-daemon -S -q -p /var/run/sslh.pid \ + --exec /usr/sbin/sslh -- $SSLH_ARGS + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping sslh: " + start-stop-daemon -K -q -p /var/run/sslh.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/sslh/sslh.hash b/buildroot/package/sslh/sslh.hash new file mode 100644 index 0000000..757005d --- /dev/null +++ b/buildroot/package/sslh/sslh.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1601a5b377dcafc6b47d2fbb8d4d25cceb83053a4adcc5874d501a2d5a7745ad sslh-v1.18.tar.gz diff --git a/buildroot/package/sslh/sslh.mk b/buildroot/package/sslh/sslh.mk new file mode 100644 index 0000000..3a9223b --- /dev/null +++ b/buildroot/package/sslh/sslh.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# sslh +# +################################################################################ + +SSLH_VERSION = v1.18 +SSLH_SITE = http://www.rutschle.net/tech/sslh +SSLH_LICENSE = GPL-2.0+ +SSLH_LICENSE_FILES = COPYING + +SSLH_DEPENDENCIES = libconfig + +define SSLH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define SSLH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define SSLH_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/sslh/S35sslh $(TARGET_DIR)/etc/init.d/S35sslh +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch b/buildroot/package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch new file mode 100644 index 0000000..64dc00d --- /dev/null +++ b/buildroot/package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch @@ -0,0 +1,30 @@ +Make linux-uclibcgnueabi an alias for linux-uclibceabi since it's +what we use in buildroot toolchains. +Slightly tweak musleabi to match the buildroot-used tuple. + +Signed-off-by: Gustavo Zacarias + +diff -Nura dpkg-1.18.3.orig/ostable dpkg-1.18.3/ostable +--- dpkg-1.18.3.orig/ostable 2015-10-15 08:05:04.471762555 -0300 ++++ dpkg-1.18.3/ostable 2015-10-15 08:11:05.206132648 -0300 +@@ -12,10 +12,10 @@ + # system part of the output of the GNU config.guess script. + # + # +-uclibceabi-linux linux-uclibceabi linux[^-]*-uclibceabi ++uclibceabi-linux linux-uclibceabi linux[^-]*-uclibc.*eabi + uclibc-linux linux-uclibc linux[^-]*-uclibc + musleabihf-linux linux-musleabihf linux[^-]*-musleabihf +-musl-linux linux-musl linux[^-]*-musl ++musl-linux linux-musl linux[^-]*-musl[^-]* + gnueabihf-linux linux-gnueabihf linux[^-]*-gnueabihf + gnueabi-linux linux-gnueabi linux[^-]*-gnueabi + gnuabin32-linux linux-gnuabin32 linux[^-]*-gnuabin32 +@@ -34,6 +34,6 @@ + bsd-netbsd netbsd netbsd[^-]* + bsd-openbsd openbsd openbsd[^-]* + sysv-solaris solaris solaris[^-]* +-uclibceabi-uclinux uclinux-uclibceabi uclinux[^-]*-uclibceabi ++uclibceabi-uclinux uclinux-uclibceabi uclinux[^-]*-uclibc.*eabi + uclibc-uclinux uclinux-uclibc uclinux[^-]*(-uclibc.*)? + tos-mint mint mint[^-]* diff --git a/buildroot/package/start-stop-daemon/0002-just-warn-on-missing-arch.patch b/buildroot/package/start-stop-daemon/0002-just-warn-on-missing-arch.patch new file mode 100644 index 0000000..2b9cd3d --- /dev/null +++ b/buildroot/package/start-stop-daemon/0002-just-warn-on-missing-arch.patch @@ -0,0 +1,19 @@ +Just warn on missing arch + +Some architectures are not listed in dpkg list (e.g. mips64el, xtensa, sh4a). +Don't break the build for that. + +Signed-off-by: Baruch Siach +--- +diff -Nuar dpkg-1.16.15-orig/m4/dpkg-arch.m4 dpkg-1.16.15/m4/dpkg-arch.m4 +--- dpkg-1.16.15-orig/m4/dpkg-arch.m4 2014-05-30 02:47:25.000000000 +0300 ++++ dpkg-1.16.15/m4/dpkg-arch.m4 2015-01-16 06:55:19.701596362 +0200 +@@ -57,7 +57,7 @@ + AC_MSG_CHECKING([dpkg architecture name]) + _DPKG_ARCHITECTURE([DEB_HOST_ARCH], [dpkg_arch]) + if test "x$dpkg_arch" = "x"; then +- AC_MSG_ERROR([cannot determine host dpkg architecture]) ++ AC_MSG_WARN([cannot determine host dpkg architecture]) + else + AC_MSG_RESULT([$dpkg_arch]) + fi diff --git a/buildroot/package/start-stop-daemon/Config.in b/buildroot/package/start-stop-daemon/Config.in new file mode 100644 index 0000000..8f0dda1 --- /dev/null +++ b/buildroot/package/start-stop-daemon/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_START_STOP_DAEMON + bool "start-stop-daemon" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + start-stop-daemon is used to control the creation and + termination of system-level processes. + + https://tracker.debian.org/pkg/dpkg diff --git a/buildroot/package/start-stop-daemon/start-stop-daemon.hash b/buildroot/package/start-stop-daemon/start-stop-daemon.hash new file mode 100644 index 0000000..7ce6cc3 --- /dev/null +++ b/buildroot/package/start-stop-daemon/start-stop-daemon.hash @@ -0,0 +1,2 @@ +# From http://ftp.de.debian.org/debian/pool/main/d/dpkg/dpkg_1.18.10.dsc +sha256 025524da41ba18b183ff11e388eb8686f7cc58ee835ed7d48bd159c46a8b6dc5 dpkg_1.18.10.tar.xz diff --git a/buildroot/package/start-stop-daemon/start-stop-daemon.mk b/buildroot/package/start-stop-daemon/start-stop-daemon.mk new file mode 100644 index 0000000..7071f56 --- /dev/null +++ b/buildroot/package/start-stop-daemon/start-stop-daemon.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# start-stop-daemon +# +################################################################################ + +# Debian start-stop-daemon is part of dpkg. Since start-stop-daemon is the only +# interesting tool in it, we call the buildroot package start-stop-daemon. + +START_STOP_DAEMON_VERSION = 1.18.10 +START_STOP_DAEMON_SOURCE = dpkg_$(START_STOP_DAEMON_VERSION).tar.xz +START_STOP_DAEMON_SITE = http://snapshot.debian.org/archive/debian/20160731T221931Z/pool/main/d/dpkg +START_STOP_DAEMON_CONF_OPTS = \ + --disable-dselect \ + --disable-update-alternatives \ + --disable-install-info \ + --exec-prefix=/ +START_STOP_DAEMON_CONF_ENV = \ + dpkg_cv_va_copy=yes \ + dpkg_cv_c99_snprintf=yes \ + DPKG_DEVEL_MODE=1 +START_STOP_DAEMON_DEPENDENCIES = host-pkgconf \ + $(if $(BR2_PACKAGE_BUSYBOX),busybox) +# Patching m4/dpkg-arch.m4 +START_STOP_DAEMON_AUTORECONF = YES +START_STOP_DAEMON_LICENSE = GPL-2.0+ +START_STOP_DAEMON_LICENSE_FILES = COPYING + +define START_STOP_DAEMON_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/lib/compat + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/utils +endef + +define START_STOP_DAEMON_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/utils/start-stop-daemon \ + $(TARGET_DIR)/sbin/start-stop-daemon +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/startup-notification/Config.in b/buildroot/package/startup-notification/Config.in new file mode 100644 index 0000000..88d1817 --- /dev/null +++ b/buildroot/package/startup-notification/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_STARTUP_NOTIFICATION + bool "startup-notification" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + help + Startup-notification is a library used to monitor + application startup. + + http://freedesktop.org/software/startup-notification/releases diff --git a/buildroot/package/startup-notification/startup-notification.hash b/buildroot/package/startup-notification/startup-notification.hash new file mode 100644 index 0000000..cadbf98 --- /dev/null +++ b/buildroot/package/startup-notification/startup-notification.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c2fa09f9a49d8b319e79638e49e967c682df8726006e03059b1ffca5ab82099c startup-notification-0.9.tar.gz diff --git a/buildroot/package/startup-notification/startup-notification.mk b/buildroot/package/startup-notification/startup-notification.mk new file mode 100644 index 0000000..b331408 --- /dev/null +++ b/buildroot/package/startup-notification/startup-notification.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# startup-notification +# +################################################################################ + +STARTUP_NOTIFICATION_VERSION = 0.9 +STARTUP_NOTIFICATION_SITE = http://freedesktop.org/software/startup-notification/releases +STARTUP_NOTIFICATION_INSTALL_STAGING = YES +STARTUP_NOTIFICATION_DEPENDENCIES = xlib_libX11 +STARTUP_NOTIFICATION_CONF_ENV = lf_cv_sane_realloc=yes +STARTUP_NOTIFICATION_CONF_OPTS = --with-x \ + --x-includes="$(STAGING_DIR)/usr/include/X11" \ + --x-libraries="$(STAGING_DIR)/usr/lib" +STARTUP_NOTIFICATION_LICENSE = LGPL-2.0 +STARTUP_NOTIFICATION_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/statserial/0001-ncurses-link.patch b/buildroot/package/statserial/0001-ncurses-link.patch new file mode 100644 index 0000000..b1c41e6 --- /dev/null +++ b/buildroot/package/statserial/0001-ncurses-link.patch @@ -0,0 +1,16 @@ +Link to libncurses instead of the legacy libcurses. + +Signed-off-by: Gustavo Zacarias + +diff -Nura statserial-1.1.orig/Makefile statserial-1.1/Makefile +--- statserial-1.1.orig/Makefile 2014-07-04 12:47:41.279440415 -0300 ++++ statserial-1.1/Makefile 2014-07-04 12:47:47.948665740 -0300 +@@ -10,7 +10,7 @@ + LDFLAGS = -s -N + + statserial: statserial.o +- $(LD) $(LDFLAGS) -o statserial statserial.o -lcurses ++ $(LD) $(LDFLAGS) -o statserial statserial.o -lncurses + + statserial.o: statserial.c + $(CC) $(CFLAGS) -c statserial.c diff --git a/buildroot/package/statserial/Config.in b/buildroot/package/statserial/Config.in new file mode 100644 index 0000000..4db5eb1 --- /dev/null +++ b/buildroot/package/statserial/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_STATSERIAL + bool "statserial" + select BR2_PACKAGE_NCURSES + help + Displays a table of the signals on a standard + 9-pin or 25-pin serial port, and indicates the + status of the handshaking lines. It can be + useful for debugging problems with serial + ports or modems. + + https://sites.google.com/site/tranter/software diff --git a/buildroot/package/statserial/statserial.hash b/buildroot/package/statserial/statserial.hash new file mode 100644 index 0000000..3cdb17d --- /dev/null +++ b/buildroot/package/statserial/statserial.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 40cf3bd506852942aa98f468c90ed4ea66dbd343b93efacd40d617b55caf3967 statserial-1.1.tar.gz diff --git a/buildroot/package/statserial/statserial.mk b/buildroot/package/statserial/statserial.mk new file mode 100644 index 0000000..f9b131f --- /dev/null +++ b/buildroot/package/statserial/statserial.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# statserial +# +################################################################################ + +STATSERIAL_VERSION = 1.1 +STATSERIAL_SITE = http://www.ibiblio.org/pub/Linux/system/serial +STATSERIAL_DEPENDENCIES = ncurses +STATSERIAL_LICENSE = GPL-2.0+ +STATSERIAL_LICENSE_FILES = COPYING + +define STATSERIAL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)" -C $(@D) +endef + +define STATSERIAL_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/statserial $(TARGET_DIR)/usr/bin/statserial +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/stella/0001-Add-cross-compilation-support.patch b/buildroot/package/stella/0001-Add-cross-compilation-support.patch new file mode 100644 index 0000000..1aefd86 --- /dev/null +++ b/buildroot/package/stella/0001-Add-cross-compilation-support.patch @@ -0,0 +1,29 @@ +From ef1cffc526d3cf9562d50efbf8addc2aa4c06b52 Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Sun, 30 Jul 2017 18:23:23 -0300 +Subject: [PATCH 1/2] Add cross-compilation support + +Signed-off-by: Sergio Prado +--- + configure | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index c2f304729651..b05321aac3da 100755 +--- a/configure ++++ b/configure +@@ -499,8 +499,9 @@ if test -n "$_host"; then + _host_os=win32 + ;; + *) +- echo "Cross-compiling to unknown target, please add your target to configure." +- exit 1 ++ echo "Cross-compiling to $_host target" ++ DEFINES="$DEFINES -DUNIX" ++ _host_os=unix + ;; + esac + +-- +1.9.1 + diff --git a/buildroot/package/stella/0002-Do-not-strip-when-installing.patch b/buildroot/package/stella/0002-Do-not-strip-when-installing.patch new file mode 100644 index 0000000..8a95a81 --- /dev/null +++ b/buildroot/package/stella/0002-Do-not-strip-when-installing.patch @@ -0,0 +1,26 @@ +From d506a586b299682a425d3c3de68baefb7221fa9a Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Sun, 30 Jul 2017 18:25:12 -0300 +Subject: [PATCH 2/2] Do not strip when installing + +Signed-off-by: Sergio Prado +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 346640e53bea..fedaed05a4d6 100644 +--- a/Makefile ++++ b/Makefile +@@ -173,7 +173,7 @@ config.mak: $(srcdir)/configure + + install: all + $(INSTALL) -d "$(DESTDIR)$(BINDIR)" +- $(INSTALL) -c -s -m 755 "$(srcdir)/stella$(EXEEXT)" "$(DESTDIR)$(BINDIR)/stella$(EXEEXT)" ++ $(INSTALL) -c -m 755 "$(srcdir)/stella$(EXEEXT)" "$(DESTDIR)$(BINDIR)/stella$(EXEEXT)" + $(INSTALL) -d "$(DESTDIR)$(DOCDIR)" + $(INSTALL) -c -m 644 "$(srcdir)/Announce.txt" "$(srcdir)/Changes.txt" "$(srcdir)/Copyright.txt" "$(srcdir)/License.txt" "$(srcdir)/README-SDL.txt" "$(srcdir)/Readme.txt" "$(srcdir)/Todo.txt" "$(srcdir)/docs/index.html" "$(srcdir)/docs/debugger.html" "$(DESTDIR)$(DOCDIR)/" + $(INSTALL) -d "$(DESTDIR)$(DOCDIR)/graphics" +-- +1.9.1 + diff --git a/buildroot/package/stella/0003-Fix-error-when-building-with-uClibc-ng.patch b/buildroot/package/stella/0003-Fix-error-when-building-with-uClibc-ng.patch new file mode 100644 index 0000000..ffbc831 --- /dev/null +++ b/buildroot/package/stella/0003-Fix-error-when-building-with-uClibc-ng.patch @@ -0,0 +1,54 @@ +From 36d5c8bc3592b4dffbec222a179c3956787a0694 Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Sat, 9 Sep 2017 15:04:58 -0300 +Subject: [PATCH] Fix error when building with uClibc-ng +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The uClibc-ng C library defines a type called R0 that conflits with a +global variable called R0 from PaddleReader.cxx. + +src/emucore/tia/PaddleReader.cxx:25:3: error: ‘constexpr const double R0’ redeclared as different kind of symbol + R0 = 1.5e3, + ^ +/home/sprado/workspace/build/buildroot/build/stella_uclibc/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/include/sys/ucontext.h:42:3: note: previous declaration ‘ R0’ + R0 = 0, + ^~ + +So let's redefine R0 as a private member of the PaddleReader class. + +Signed-off-by: Sergio Prado +--- + src/emucore/tia/PaddleReader.cxx | 1 - + src/emucore/tia/PaddleReader.hxx | 2 ++ + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/emucore/tia/PaddleReader.cxx b/src/emucore/tia/PaddleReader.cxx +index 69c828ea6c5c..27ff828200ee 100644 +--- a/src/emucore/tia/PaddleReader.cxx ++++ b/src/emucore/tia/PaddleReader.cxx +@@ -22,7 +22,6 @@ + static constexpr double + C = 68e-9, + RPOT = 1e6, +- R0 = 1.5e3, + USUPP = 5; + + static constexpr double TRIPPOINT_LINES = 379; +diff --git a/src/emucore/tia/PaddleReader.hxx b/src/emucore/tia/PaddleReader.hxx +index 00238a4fe5b5..0032e6efd015 100644 +--- a/src/emucore/tia/PaddleReader.hxx ++++ b/src/emucore/tia/PaddleReader.hxx +@@ -65,6 +65,8 @@ class PaddleReader : public Serializable + + bool myIsDumped; + ++ static constexpr double R0 = 1.5e3; ++ + private: + PaddleReader(const PaddleReader&) = delete; + PaddleReader(PaddleReader&&) = delete; +-- +1.9.1 + diff --git a/buildroot/package/stella/Config.in b/buildroot/package/stella/Config.in new file mode 100644 index 0000000..639b9e4 --- /dev/null +++ b/buildroot/package/stella/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_STELLA + bool "stella" + depends on !BR2_STATIC_LIBS # sdl2 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++14 + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_ZLIB + help + Stella is a multi-platform Atari 2600 VCS emulator. + + https://stella-emu.github.io/ + +comment "stella needs a toolchain w/ dynamic library, C++, threads, gcc >= 4.9" + depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/buildroot/package/stella/stella.hash b/buildroot/package/stella/stella.hash new file mode 100644 index 0000000..ef17ff7 --- /dev/null +++ b/buildroot/package/stella/stella.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 74ee708b68340b65519a04a22c61921cdcf69a1d308600c212414b28e9e689ac stella-5.0.2-src.tar.xz diff --git a/buildroot/package/stella/stella.mk b/buildroot/package/stella/stella.mk new file mode 100644 index 0000000..158a511 --- /dev/null +++ b/buildroot/package/stella/stella.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# stella +# +################################################################################ + +STELLA_VERSION = 5.0.2 +STELLA_SOURCE = stella-$(STELLA_VERSION)-src.tar.xz +STELLA_SITE = https://github.com/stella-emu/stella/releases/download/$(STELLA_VERSION) +STELLA_LICENSE = GPL-2.0+ +STELLA_LICENSE_FILES = Copyright.txt License.txt + +STELLA_DEPENDENCIES = sdl2 libpng zlib + +STELLA_CONF_OPTS = \ + --host=$(GNU_TARGET_NAME) \ + --prefix=/usr \ + --with-sdl-prefix=$(STAGING_DIR)/usr + +# The configure script is not autoconf based, so we use the +# generic-package infrastructure +define STELLA_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + ./configure $(STELLA_CONF_OPTS) \ + ) +endef + +define STELLA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define STELLA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/stm32flash/Config.in b/buildroot/package/stm32flash/Config.in new file mode 100644 index 0000000..87afe3b --- /dev/null +++ b/buildroot/package/stm32flash/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_STM32FLASH + bool "stm32flash" + help + Open source cross platform flash program for the STM32 ARM + microcontrollers using the built-in ST serial bootloader + over UART or I2C. + + http://sourceforge.net/projects/stm32flash/ diff --git a/buildroot/package/stm32flash/stm32flash.mk b/buildroot/package/stm32flash/stm32flash.mk new file mode 100644 index 0000000..c41fc76 --- /dev/null +++ b/buildroot/package/stm32flash/stm32flash.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# stm32flash +# +################################################################################ + +STM32FLASH_VERSION = 4ac0566f188f39eace0223d966d349cd2f2c5895 +STM32FLASH_SITE = git://git.code.sf.net/p/stm32flash/code +STM32FLASH_LICENSE = GPL-2.0+ +STM32FLASH_LICENSE_FILES = gpl-2.0.txt + +define STM32FLASH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define STM32FLASH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" PREFIX="/usr" \ + -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/strace/Config.in b/buildroot/package/strace/Config.in new file mode 100644 index 0000000..b84b3fd --- /dev/null +++ b/buildroot/package/strace/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_STRACE + bool "strace" + # needs at least kernel headers 4.0 on nios2 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 || !BR2_nios2 + help + A useful diagnostic, instructional, and debugging tool. + Allows you to track what system calls a program makes + while it is running. + + https://strace.io + +comment "strace needs a toolchain w/ headers >= 4.0 on nios2" + depends on BR2_nios2 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 diff --git a/buildroot/package/strace/strace.hash b/buildroot/package/strace/strace.hash new file mode 100644 index 0000000..404be39 --- /dev/null +++ b/buildroot/package/strace/strace.hash @@ -0,0 +1,7 @@ +# From https://sourceforge.net/projects/strace/files/strace/4.20/ +md5 f2271ab0fac49ebee9cbd7f3469227cb strace-4.20.tar.xz +sha1 9cebc754af3434e4027a07745770892f685c0316 strace-4.20.tar.xz +# Locally calculated after checking signature +# https://sourceforge.net/projects/strace/files/strace/4.20/strace-4.20.tar.xz.asc +sha256 5bf3148dd17306a42566f7da17368fdd781afa147db05ea63a4ca2b50f58c523 strace-4.20.tar.xz +sha256 ea7ff222f36c9df0aa2924a8f7c7d2aec3ea11e752feba4b15ec79b695b6236a COPYING diff --git a/buildroot/package/strace/strace.mk b/buildroot/package/strace/strace.mk new file mode 100644 index 0000000..ba57774 --- /dev/null +++ b/buildroot/package/strace/strace.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# strace +# +################################################################################ + +STRACE_VERSION = 4.20 +STRACE_SOURCE = strace-$(STRACE_VERSION).tar.xz +STRACE_SITE = http://downloads.sourceforge.net/project/strace/strace/$(STRACE_VERSION) +STRACE_LICENSE = BSD-3-Clause +STRACE_LICENSE_FILES = COPYING + +# strace bundle some kernel headers to build libmpers, this mixes userspace +# headers and kernel headers which break the build with musl. +# The stddef.h from gcc is used instead of the one from musl. +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +STRACE_CONF_OPTS += st_cv_m32_mpers=no \ + st_cv_mx32_mpers=no +endif + +define STRACE_REMOVE_STRACE_GRAPH + rm -f $(TARGET_DIR)/usr/bin/strace-graph +endef + +STRACE_POST_INSTALL_TARGET_HOOKS += STRACE_REMOVE_STRACE_GRAPH + +$(eval $(autotools-package)) diff --git a/buildroot/package/stress-ng/Config.in b/buildroot/package/stress-ng/Config.in new file mode 100644 index 0000000..8816322 --- /dev/null +++ b/buildroot/package/stress-ng/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_STRESS_NG + bool "stress-ng" + depends on BR2_USE_MMU # fork() + # disabled on musl: stress-malloc.c needs mallopt() and M_MMAP_THRESHOLD + # disabled on uClibc: stress-aio.c needs aio.h + depends on BR2_TOOLCHAIN_USES_GLIBC + # perf.c needs PERF_COUNT_HW_REF_CPU_CYCLES + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + depends on !BR2_microblaze # keyutils + # fenv.h lacks FE_INVALID, FE_OVERFLOW & FE_UNDERFLOW on nios2 and ARC + depends on !BR2_nios2 + depends on !BR2_arc + depends on !BR2_STATIC_LIBS # keyutils + select BR2_PACKAGE_KEYUTILS # stress-key.c needs keyutils.h + select BR2_PACKAGE_ATTR # stress-xattr.c needs xattr.h + help + stress-ng will stress test a computer system in various + selectable ways. It was designed to exercise various physical + subsystems of a computer as well as the various operating + system kernel interfaces. + + http://kernel.ubuntu.com/~cking/stress-ng/ + +comment "stress-ng needs a glibc toolchain w/ dynamic library, headers >= 3.3" + depends on !BR2_microblaze && !BR2_nios2 && !BR2_arc + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 \ + || !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/stress-ng/stress-ng.hash b/buildroot/package/stress-ng/stress-ng.hash new file mode 100644 index 0000000..e735439 --- /dev/null +++ b/buildroot/package/stress-ng/stress-ng.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 0e1d7733b35f594f7461dedbf836bd4966d0611da4cd4e85cde4804d2a425e6d stress-ng-0.06.15.tar.gz diff --git a/buildroot/package/stress-ng/stress-ng.mk b/buildroot/package/stress-ng/stress-ng.mk new file mode 100644 index 0000000..794e875 --- /dev/null +++ b/buildroot/package/stress-ng/stress-ng.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# stress-ng +# +################################################################################ + +STRESS_NG_VERSION = 0.06.15 +STRESS_NG_SITE = http://kernel.ubuntu.com/~cking/tarballs/stress-ng +STRESS_NG_LICENSE = GPL-2.0+ +STRESS_NG_LICENSE_FILES = COPYING + +STRESS_NG_DEPENDENCIES = attr keyutils + +define STRESS_NG_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# Don't use make install otherwise stress-ng will be rebuild without +# required link libraries if any. Furthermore, using INSTALL allow to +# set the file permission correcly on the target. +define STRESS_NG_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/stress-ng $(TARGET_DIR)/usr/bin/stress-ng +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/stress/Config.in b/buildroot/package/stress/Config.in new file mode 100644 index 0000000..b22c3f1 --- /dev/null +++ b/buildroot/package/stress/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_STRESS + bool "stress" + depends on BR2_USE_MMU # fork() + help + A deliberately simple workload generator for POSIX systems. + It imposes a configurable amount of CPU, memory, I/O, and + disk stress on the system. + + http://people.seas.harvard.edu/~apw/stress/ diff --git a/buildroot/package/stress/stress.hash b/buildroot/package/stress/stress.hash new file mode 100644 index 0000000..24cf043 --- /dev/null +++ b/buildroot/package/stress/stress.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 057e4fc2a7706411e1014bf172e4f94b63a12f18412378fca8684ca92408825b stress-1.0.4.tar.gz diff --git a/buildroot/package/stress/stress.mk b/buildroot/package/stress/stress.mk new file mode 100644 index 0000000..4d2d4cb --- /dev/null +++ b/buildroot/package/stress/stress.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# stress +# +################################################################################ + +STRESS_VERSION = 1.0.4 +STRESS_SITE = http://people.seas.harvard.edu/~apw/stress +STRESS_LICENSE = GPL-2.0+ +STRESS_LICENSE_FILES = COPYING + +# Stress is linked statically if the --enable-static is specified. +# However, this option is always specified in the global +# SHARED_STATIC_LIBS_OPTS to tell packages to build static libraries, +# if supported. +# +# If the BR2_STATIC_LIBS is not defined, we have to specify +# --disable-static explicitly to get stress linked dynamically. +# +# Also, disable documentation by undefining makeinfo +STRESS_CONF_OPTS = \ + $(if $(BR2_STATIC_LIBS),,--disable-static) \ + MAKEINFO=: + +$(eval $(autotools-package)) diff --git a/buildroot/package/strongswan/0001-af_alg-fix-crypt-definition-conflict.patch b/buildroot/package/strongswan/0001-af_alg-fix-crypt-definition-conflict.patch new file mode 100644 index 0000000..442e53e --- /dev/null +++ b/buildroot/package/strongswan/0001-af_alg-fix-crypt-definition-conflict.patch @@ -0,0 +1,55 @@ +From 0b906cb025a506be1b73e5b485179585d1a90be2 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 11 May 2017 14:04:47 +0300 +Subject: [PATCH] af_alg: fix crypt() definition conflict + +Rename the crypt() method to avoid conflict with POSIX crypt(). Fixes the +following build failure with musl libc: + +In file included from ../../../../src/libstrongswan/utils/utils.h:53:0, + from ../../../../src/libstrongswan/library.h:101, + from af_alg_ops.h:24, + from af_alg_ops.c:16: +af_alg_ops.c:110:22: error: conflicting types for 'crypt' + METHOD(af_alg_ops_t, crypt, bool, + ^ +../../../../src/libstrongswan/utils/utils/object.h:99:13: note: in definition of macro 'METHOD' + static ret name(union {iface *_public; this;} \ + ^ +In file included from af_alg_ops.c:18:0: +.../host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/unistd.h:144:7: note: previous declaration of 'crypt' was here + char *crypt(const char *, const char *); + ^ + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/strongswan/strongswan/pull/72 + + src/libstrongswan/plugins/af_alg/af_alg_ops.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/libstrongswan/plugins/af_alg/af_alg_ops.c b/src/libstrongswan/plugins/af_alg/af_alg_ops.c +index 331d1e8010aa..452cd1ac30c9 100644 +--- a/src/libstrongswan/plugins/af_alg/af_alg_ops.c ++++ b/src/libstrongswan/plugins/af_alg/af_alg_ops.c +@@ -107,7 +107,7 @@ METHOD(af_alg_ops_t, hash, bool, + return TRUE; + } + +-METHOD(af_alg_ops_t, crypt, bool, ++METHOD(af_alg_ops_t, crypt_, bool, + private_af_alg_ops_t *this, u_int32_t type, chunk_t iv, chunk_t data, + char *out) + { +@@ -224,7 +224,7 @@ af_alg_ops_t *af_alg_ops_create(char *type, char *alg) + .public = { + .hash = _hash, + .reset = _reset, +- .crypt = _crypt, ++ .crypt = _crypt_, + .set_key = _set_key, + .destroy = _destroy, + }, +-- +2.11.0 + diff --git a/buildroot/package/strongswan/0002-strongswan-add-missing-include-of-stdint.h.patch b/buildroot/package/strongswan/0002-strongswan-add-missing-include-of-stdint.h.patch new file mode 100644 index 0000000..d5ca690 --- /dev/null +++ b/buildroot/package/strongswan/0002-strongswan-add-missing-include-of-stdint.h.patch @@ -0,0 +1,32 @@ +From a8fd708ce89d5ffb64a5e8873d49a55094dde898 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Mon, 2 Oct 2017 10:16:36 -0500 +Subject: [PATCH] strongswan: add missing include of stdint.h + +Recent releases of glibc don't include the full stdint.h +header in some network headers included by utils.h. +Upstream is targetting a 5.6.1 release of the fix. + +Ustream: https://wiki.strongswan.org/issues/2425 + +Signed-off-by: Matthew Weber +--- + src/libstrongswan/utils/utils/memory.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/libstrongswan/utils/utils/memory.h b/src/libstrongswan/utils/utils/memory.h +index aef318f..c11624d 100644 +--- a/src/libstrongswan/utils/utils/memory.h ++++ b/src/libstrongswan/utils/utils/memory.h +@@ -14,6 +14,8 @@ + * for more details. + */ + ++#include /* for uintptr_t */ ++ + /** + * @defgroup memory_i memory + * @{ @ingroup utils_i +-- +1.9.1 + diff --git a/buildroot/package/strongswan/Config.in b/buildroot/package/strongswan/Config.in new file mode 100644 index 0000000..0438eec --- /dev/null +++ b/buildroot/package/strongswan/Config.in @@ -0,0 +1,133 @@ +comment "strongswan needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +menuconfig BR2_PACKAGE_STRONGSWAN + bool "strongswan" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_ATOMIC + depends on !BR2_STATIC_LIBS + help + strongSwan is an OpenSource IPsec implementation for the + Linux operating system. It is based on the discontinued + FreeS/WAN project and the X.509 patch. + + The focus is on: + - simplicity of configuration + - strong encryption and authentication methods + - powerful IPsec policies supporting large and complex + VPN networks + + strongSwan provide many plugins. Only a few are presented + here. + + http://www.strongswan.org/ + +if BR2_PACKAGE_STRONGSWAN + +choice + prompt "Cryptographic backend" + default BR2_PACKAGE_STRONGSWAN_GMP + +config BR2_PACKAGE_STRONGSWAN_OPENSSL + bool "OpenSSL" + select BR2_PACKAGE_OPENSSL + +config BR2_PACKAGE_STRONGSWAN_GCRYPT + bool "libgcrypt" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + select BR2_PACKAGE_LIBGCRYPT + +config BR2_PACKAGE_STRONGSWAN_GMP + bool "GNU MP (libgmp)" + select BR2_PACKAGE_GMP + +endchoice + +config BR2_PACKAGE_STRONGSWAN_AF_ALG + bool "Enable AF_ALG crypto interface to Linux Crypto API" + +config BR2_PACKAGE_STRONGSWAN_CURL + bool "Enable CURL fetcher plugin to fetch files via libcurl" + select BR2_PACKAGE_LIBCURL + +config BR2_PACKAGE_STRONGSWAN_CHARON + bool "Enable the IKEv1/IKEv2 keying daemon charon" + default y + +if BR2_PACKAGE_STRONGSWAN_CHARON + +config BR2_PACKAGE_STRONGSWAN_TNCCS_11 + bool "Enable TNCCS 1.1 protocol module" + select BR2_PACKAGE_LIBXML2 + +config BR2_PACKAGE_STRONGSWAN_TNCCS_20 + bool "Enable TNCCS 2.0 protocol module" + +config BR2_PACKAGE_STRONGSWAN_TNCCS_DYNAMIC + bool "Enable dynamic TNCCS protocol discovery module" + +config BR2_PACKAGE_STRONGSWAN_EAP + bool "Enable EAP protocols" + help + Enable various EAP protocols: + - mschapv2 + - tls + - ttls + - peap + - sim + - sim-file + - aka + - aka-3gpp2 + - simaka-sql + - simaka-pseudonym + - simaka-reauth + - identity + - md5 + - gtc + - tnc + - dynamic + - radius + +if BR2_PACKAGE_STRONGSWAN_EAP + +config BR2_PACKAGE_STRONGSWAN_EAP_SIM_PCSC + bool "Enable EAP-SIM smart card backend" + depends on !BR2_STATIC_LIBS # pcsc-lite + select BR2_PACKAGE_PCSC_LITE + +endif + +config BR2_PACKAGE_STRONGSWAN_UNITY + bool "Enables Cisco Unity extension plugin" + +config BR2_PACKAGE_STRONGSWAN_STROKE + bool "Enable charons stroke configuration backend" + default y + +config BR2_PACKAGE_STRONGSWAN_SQL + bool "Enable SQL database configuration backend" + depends on BR2_PACKAGE_SQLITE || BR2_PACKAGE_MYSQL + +endif + +config BR2_PACKAGE_STRONGSWAN_PKI + bool "Enable pki certificate utility" + default y + +config BR2_PACKAGE_STRONGSWAN_SCEP + bool "Enable SCEP client tool" + +config BR2_PACKAGE_STRONGSWAN_SCRIPTS + bool "Enable additional utilities (found in scripts directory)" + default y + depends on BR2_PACKAGE_STRONGSWAN_CHARON + +config BR2_PACKAGE_STRONGSWAN_VICI + bool "Enable vici/swanctl" + default y + depends on BR2_PACKAGE_STRONGSWAN_CHARON + +endif diff --git a/buildroot/package/strongswan/strongswan.hash b/buildroot/package/strongswan/strongswan.hash new file mode 100644 index 0000000..820c712 --- /dev/null +++ b/buildroot/package/strongswan/strongswan.hash @@ -0,0 +1,10 @@ +# From http://download.strongswan.org/strongswan-5.4.0.tar.bz2.md5 +md5 9d7c77b0da9b69f859624897e5e9ebbf strongswan-5.4.0.tar.bz2 +# Calculated based on the hash above +sha256 f8288faaea6a9cd8a7d413c0b76b7922be5da3dfcd01fd05cb30d2c55d3bbe89 strongswan-5.4.0.tar.bz2 +# Locally calculated +sha256 f5ba7f46cf7ae81dd81bc86f9e4cfa0c5c7c6987149b3bc9c0b8bf08598a1063 strongswan-4.4.0-5.5.2_gmp_mpz_powm_sec.patch +sha256 03db8c7a4133e877e8992e155c046dd27ec4810d50f239abf55595f0280caf31 strongswan-5.0.0-5.5.2_asn1_choice.patch +sha256 c80e02c9a5eeaf10f0a8bdde3be6375dd2833e515af03dad3a700e93c4fd041a strongswan-4.4.0-5.5.3_gmp_mpz_export.patch +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 2292e21797754548dccdef9eef6aee7584e552fbd890fa914e1de8d3577d23f0 LICENSE diff --git a/buildroot/package/strongswan/strongswan.mk b/buildroot/package/strongswan/strongswan.mk new file mode 100644 index 0000000..65618af --- /dev/null +++ b/buildroot/package/strongswan/strongswan.mk @@ -0,0 +1,91 @@ +################################################################################ +# +# strongswan +# +################################################################################ + +STRONGSWAN_VERSION = 5.4.0 +STRONGSWAN_SOURCE = strongswan-$(STRONGSWAN_VERSION).tar.bz2 +STRONGSWAN_SITE = http://download.strongswan.org +STRONGSWAN_PATCH = \ + $(STRONGSWAN_SITE)/patches/21_gmp_mpz_powm_sec_patch/strongswan-4.4.0-5.5.2_gmp_mpz_powm_sec.patch \ + $(STRONGSWAN_SITE)/patches/22_asn1_choice_patch/strongswan-5.0.0-5.5.2_asn1_choice.patch \ + $(STRONGSWAN_SITE)/patches/23_gmp_mpz_export_patch/strongswan-4.4.0-5.5.3_gmp_mpz_export.patch +STRONGSWAN_LICENSE = GPL-2.0+ +STRONGSWAN_LICENSE_FILES = COPYING LICENSE +STRONGSWAN_DEPENDENCIES = host-pkgconf +STRONGSWAN_CONF_OPTS += \ + --without-lib-prefix \ + --enable-led \ + --enable-pkcs11=yes \ + --enable-kernel-netlink=yes \ + --enable-socket-default=yes \ + --enable-openssl=$(if $(BR2_PACKAGE_STRONGSWAN_OPENSSL),yes,no) \ + --enable-gcrypt=$(if $(BR2_PACKAGE_STRONGSWAN_GCRYPT),yes,no) \ + --enable-gmp=$(if $(BR2_PACKAGE_STRONGSWAN_GMP),yes,no) \ + --enable-af-alg=$(if $(BR2_PACKAGE_STRONGSWAN_AF_ALG),yes,no) \ + --enable-curl=$(if $(BR2_PACKAGE_STRONGSWAN_CURL),yes,no) \ + --enable-charon=$(if $(BR2_PACKAGE_STRONGSWAN_CHARON),yes,no) \ + --enable-tnccs-11=$(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_11),yes,no) \ + --enable-tnccs-20=$(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_20),yes,no) \ + --enable-tnccs-dynamic=$(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_DYNAMIC),yes,no) \ + --enable-eap-sim-pcsc=$(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIM_PCSC),yes,no) \ + --enable-unity=$(if $(BR2_PACKAGE_STRONGSWAN_UNITY),yes,no) \ + --enable-stroke=$(if $(BR2_PACKAGE_STRONGSWAN_STROKE),yes,no) \ + --enable-sql=$(if $(BR2_PACKAGE_STRONGSWAN_SQL),yes,no) \ + --enable-pki=$(if $(BR2_PACKAGE_STRONGSWAN_PKI),yes,no) \ + --enable-scepclient=$(if $(BR2_PACKAGE_STRONGSWAN_SCEP),yes,no) \ + --enable-scripts=$(if $(BR2_PACKAGE_STRONGSWAN_SCRIPTS),yes,no) \ + --enable-vici=$(if $(BR2_PACKAGE_STRONGSWAN_VICI),yes,no) \ + --enable-swanctl=$(if $(BR2_PACKAGE_STRONGSWAN_VICI),yes,no) \ + --with-ipseclibdir=/usr/lib \ + --with-plugindir=/usr/lib/ipsec/plugins \ + --with-imcvdir=/usr/lib/ipsec/imcvs + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +STRONGSWAN_CONF_ENV += LIBS='-latomic' +endif + +ifeq ($(BR2_PACKAGE_STRONGSWAN_EAP),y) +STRONGSWAN_CONF_OPTS += \ + --enable-eap-sim \ + --enable-eap-sim-file \ + --enable-eap-aka \ + --enable-eap-aka-3gpp2 \ + --enable-eap-simaka-sql \ + --enable-eap-simaka-pseudonym \ + --enable-eap-simaka-reauth \ + --enable-eap-identity \ + --enable-eap-md5 \ + --enable-eap-gtc \ + --enable-eap-mschapv2 \ + --enable-eap-tls \ + --enable-eap-ttls \ + --enable-eap-peap \ + --enable-eap-tnc \ + --enable-eap-dynamic \ + --enable-eap-radius +STRONGSWAN_DEPENDENCIES += gmp +endif + +STRONGSWAN_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_STRONGSWAN_OPENSSL),openssl) \ + $(if $(BR2_PACKAGE_STRONGSWAN_GCRYPT),libgcrypt) \ + $(if $(BR2_PACKAGE_STRONGSWAN_GMP),gmp) \ + $(if $(BR2_PACKAGE_STRONGSWAN_CURL),libcurl) \ + $(if $(BR2_PACKAGE_STRONGSWAN_TNCCS_11),libxml2) \ + $(if $(BR2_PACKAGE_STRONGSWAN_EAP_SIM_PCSC),pcsc-lite) + +ifeq ($(BR2_PACKAGE_STRONGSWAN_SQL),y) +STRONGSWAN_DEPENDENCIES += \ + $(if $(BR2_PACKAGE_SQLITE),sqlite) \ + $(if $(BR2_PACKAGE_MYSQL),mysql) +endif + +# disable connmark/forecast until net/if.h vs. linux/if.h conflict resolved +# problem exist since linux 4.5 header changes +STRONGSWAN_CONF_OPTS += \ + --disable-connmark \ + --disable-forecast + +$(eval $(autotools-package)) diff --git a/buildroot/package/stunnel/Config.in b/buildroot/package/stunnel/Config.in new file mode 100644 index 0000000..e4a9567 --- /dev/null +++ b/buildroot/package/stunnel/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_STUNNEL + bool "stunnel" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_OPENSSL + help + Stunnel is a program that wraps any TCP connection with an SSL + connection. + + http://www.stunnel.org/ diff --git a/buildroot/package/stunnel/S50stunnel b/buildroot/package/stunnel/S50stunnel new file mode 100644 index 0000000..04637b6 --- /dev/null +++ b/buildroot/package/stunnel/S50stunnel @@ -0,0 +1,35 @@ +#!/bin/sh + +start() { + printf "Starting stunnel: " + start-stop-daemon -S -q -p /var/run/stunnel.pid --exec /usr/bin/stunnel + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping stunnel: " + start-stop-daemon -K -q -p /var/run/stunnel.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/stunnel/stunnel.hash b/buildroot/package/stunnel/stunnel.hash new file mode 100644 index 0000000..d3b9451 --- /dev/null +++ b/buildroot/package/stunnel/stunnel.hash @@ -0,0 +1,5 @@ +# From https://www.stunnel.org/downloads/stunnel-5.44.tar.gz.sha256 +sha256 990a325dbb47d77d88772dd02fbbd27d91b1fea3ece76c9ff4461eca93f12299 stunnel-5.44.tar.gz +# Locally calculated +sha256 c43821865591e4d893906e2801b5ec4de58e51978f5563a61475cd0adc0bec4d COPYING +sha256 1ee2b290e92c211b08df10e9fcaf32596cdb22b8eae731b18c2c074a4a83eebe COPYRIGHT.GPL diff --git a/buildroot/package/stunnel/stunnel.mk b/buildroot/package/stunnel/stunnel.mk new file mode 100644 index 0000000..4a5d2a0 --- /dev/null +++ b/buildroot/package/stunnel/stunnel.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# stunnel +# +################################################################################ + +STUNNEL_VERSION_MAJOR = 5 +STUNNEL_VERSION = $(STUNNEL_VERSION_MAJOR).44 +STUNNEL_SITE = http://www.usenix.org.uk/mirrors/stunnel/archive/$(STUNNEL_VERSION_MAJOR).x +STUNNEL_DEPENDENCIES = openssl +STUNNEL_CONF_OPTS = --with-ssl=$(STAGING_DIR)/usr --with-threads=fork \ + --disable-libwrap +STUNNEL_CONF_ENV = \ + ax_cv_check_cflags___fstack_protector=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) \ + LIBS=$(if $(BR2_STATIC_LIBS),-lz) +STUNNEL_LICENSE = GPL-2.0+ +STUNNEL_LICENSE_FILES = COPYING COPYRIGHT.GPL + +ifeq ($(BR2_INIT_SYSTEMD),y) +STUNNEL_DEPENDENCIES += systemd +else +STUNNEL_CONF_OPTS += --disable-systemd +endif + +define STUNNEL_INSTALL_CONF + $(INSTALL) -m 0644 -D $(@D)/tools/stunnel.conf \ + $(TARGET_DIR)/etc/stunnel/stunnel.conf + rm -f $(TARGET_DIR)/etc/stunnel/stunnel.conf-sample +endef + +STUNNEL_POST_INSTALL_TARGET_HOOKS += STUNNEL_INSTALL_CONF + +define STUNNEL_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/stunnel/S50stunnel $(TARGET_DIR)/etc/init.d/S50stunnel +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/subversion/0001-dont-mangle-cflags.patch b/buildroot/package/subversion/0001-dont-mangle-cflags.patch new file mode 100644 index 0000000..adb8b8e --- /dev/null +++ b/buildroot/package/subversion/0001-dont-mangle-cflags.patch @@ -0,0 +1,24 @@ +[PATCH] configure.ac: don't mangle CFLAGS + +Ensure that the sed expression to strip debugging options from CFLAGS +doesn't mangle flags like -mfloat-gprs=double, breaking the build. + +[Vincent: adapt to 1.9.2 and patch configure.ac instead of configure] + +Signed-off-by: Peter Korsgaard +Signed-off-by: Vicente Olivert Riera + +diff -Nrup a/configure.ac b/configure.ac +--- a/configure.ac 2015-07-27 00:03:10.000000000 +0100 ++++ b/configure.ac 2015-09-28 10:33:39.175048493 +0100 +@@ -1110,8 +1110,8 @@ if test "$enable_debugging" = "yes" ; th + CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG" + elif test "$enable_debugging" = "no" ; then + AC_MSG_NOTICE([Disabling debugging]) +- CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"] +- CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"] ++ CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9]* //g'`"] ++ CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9]* //g'`"] + dnl Compile with NDEBUG to get rid of assertions + CFLAGS="$CFLAGS -DNDEBUG" + CXXFLAGS="$CXXFLAGS -DNDEBUG" diff --git a/buildroot/package/subversion/0002-disable-macos-specific-features.patch b/buildroot/package/subversion/0002-disable-macos-specific-features.patch new file mode 100644 index 0000000..b960ca2 --- /dev/null +++ b/buildroot/package/subversion/0002-disable-macos-specific-features.patch @@ -0,0 +1,23 @@ +Disable Mac OS specific features + +We only support Linux so we don't need them. Also, they cause a build +failure when cross compiling: + +checking for Mach-O dynamic module iteration functions +error: cannot run test program while cross compiling + +Signed-off-by: Vicente Olivert Riera + +diff -Nrup a/configure.ac b/configure.ac +--- a/configure.ac 2015-09-28 10:33:39.175048493 +0100 ++++ b/configure.ac 2015-09-28 10:47:53.921428143 +0100 +@@ -467,9 +467,6 @@ fi + + dnl Mac OS specific features ------------------- + +-SVN_LIB_MACHO_ITERATE +-SVN_LIB_MACOS_PLIST +-SVN_LIB_MACOS_KEYCHAIN + + dnl APR_HAS_DSO ------------------- + diff --git a/buildroot/package/subversion/Config.in b/buildroot/package/subversion/Config.in new file mode 100644 index 0000000..ecac518 --- /dev/null +++ b/buildroot/package/subversion/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_SUBVERSION + bool "subversion" + # apr really needs shared library support + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # apr + select BR2_PACKAGE_APR + select BR2_PACKAGE_APR_UTIL + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_SQLITE + help + Subversion is an open source version control system + + http://subversion.apache.org/ + +comment "subversion needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/subversion/subversion.hash b/buildroot/package/subversion/subversion.hash new file mode 100644 index 0000000..6adb57c --- /dev/null +++ b/buildroot/package/subversion/subversion.hash @@ -0,0 +1,4 @@ +# From http://subversion.apache.org/download.cgi#recommended-release +sha1 874b81749cdc3e88152d103243c3623ac6338388 subversion-1.9.7.tar.bz2 +# From https://www.apache.org/dist/subversion/subversion-1.9.7.tar.bz2.sha512 +sha512 a55efd3edaddbc099450d849fcc6fe5a8d20b85ece966d8ac2fd73ee9cb4255a0349bbcfceb4e9fca6daf054ce7c648eff8d273c6873f5dade6e62dcea7eeb2b subversion-1.9.7.tar.bz2 diff --git a/buildroot/package/subversion/subversion.mk b/buildroot/package/subversion/subversion.mk new file mode 100644 index 0000000..55738a8 --- /dev/null +++ b/buildroot/package/subversion/subversion.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# subversion +# +################################################################################ + +SUBVERSION_VERSION = 1.9.7 +SUBVERSION_SOURCE = subversion-$(SUBVERSION_VERSION).tar.bz2 +SUBVERSION_SITE = http://mirror.catn.com/pub/apache/subversion +SUBVERSION_LICENSE = Apache-2.0 +SUBVERSION_LICENSE_FILES = LICENSE +SUBVERSION_DEPENDENCIES = host-pkgconf apr apr-util expat zlib sqlite +SUBVERSION_AUTORECONF = YES +SUBVERSION_CONF_OPTS = \ + --with-expat=$(STAGING_DIR)/usr/include:$(STAGING_DIR)/usr/lib: \ + --with-apr=$(STAGING_DIR)/usr \ + --with-apr-util=$(STAGING_DIR)/usr \ + --with-zlib=$(STAGING_DIR)/usr \ + --without-serf \ + --without-apxs \ + --without-berkeley-db \ + --without-sasl \ + --without-gnome-keyring \ + --without-libmagic + +$(eval $(autotools-package)) diff --git a/buildroot/package/sudo/Config.in b/buildroot/package/sudo/Config.in new file mode 100644 index 0000000..cbef15d --- /dev/null +++ b/buildroot/package/sudo/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_SUDO + bool "sudo" + # uses fork() + depends on BR2_USE_MMU + help + Sudo is a program designed to allow a sysadmin to give + limited root privileges to users and log root activity. The + basic philosophy is to give as few privileges as possible + but still allow people to get their work done. + + http://www.sudo.ws/sudo/ diff --git a/buildroot/package/sudo/sudo.hash b/buildroot/package/sudo/sudo.hash new file mode 100644 index 0000000..80448ff --- /dev/null +++ b/buildroot/package/sudo/sudo.hash @@ -0,0 +1,2 @@ +# From: http://www.sudo.ws/download.html +sha256 74c5746cd33a814e2431c39faf0d76f7f8a697379bd073862e3b156cf0d76368 sudo-1.8.21p2.tar.gz diff --git a/buildroot/package/sudo/sudo.mk b/buildroot/package/sudo/sudo.mk new file mode 100644 index 0000000..77a95bd --- /dev/null +++ b/buildroot/package/sudo/sudo.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# sudo +# +################################################################################ + +SUDO_VERSION = 1.8.21p2 +SUDO_SITE = https://www.sudo.ws/sudo/dist +SUDO_LICENSE = ISC, BSD-3-Clause +SUDO_LICENSE_FILES = doc/LICENSE +# This is to avoid sudo's make install from chown()ing files which fails +SUDO_INSTALL_TARGET_OPTS = INSTALL_OWNER="" DESTDIR="$(TARGET_DIR)" install +SUDO_CONF_OPTS = \ + --without-lecture \ + --without-sendmail \ + --without-umask \ + --with-logging=syslog \ + --without-interfaces \ + --with-env-editor + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +define SUDO_INSTALL_PAM_CONF + $(INSTALL) -D -m 0644 package/sudo/sudo.pam $(TARGET_DIR)/etc/pam.d/sudo +endef + +SUDO_DEPENDENCIES += linux-pam +SUDO_CONF_OPTS += --with-pam +SUDO_POST_INSTALL_TARGET_HOOKS += SUDO_INSTALL_PAM_CONF +else +SUDO_CONF_OPTS += --without-pam +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +SUDO_CONF_OPTS += --enable-zlib +SUDO_DEPENDENCIES += zlib +else +SUDO_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +SUDO_DEPENDENCIES += openldap +SUDO_CONF_OPTS += --with-ldap +# If we are building sudo statically and openldap was linked with openssl, then +# when we link sudo with openldap we need to specify the openssl libs, otherwise +# it will fail with "undefined reference" errors. +ifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_OPENSSL),yy) +SUDO_DEPENDENCIES += host-pkgconf +SUDO_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`" +endif +else +SUDO_CONF_OPTS += --without-ldap +endif + +# mksigname/mksiglist needs to run on build host to generate source files +define SUDO_BUILD_MKSIGNAME_MKSIGLIST_HOST + $(MAKE) $(HOST_CONFIGURE_OPTS) \ + CPPFLAGS="$(HOST_CPPFLAGS) -I../../include -I../.." \ + -C $(@D)/lib/util mksigname mksiglist +endef + +SUDO_POST_CONFIGURE_HOOKS += SUDO_BUILD_MKSIGNAME_MKSIGLIST_HOST + +define SUDO_PERMISSIONS + /usr/bin/sudo f 4755 0 0 - - - - - +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/sudo/sudo.pam b/buildroot/package/sudo/sudo.pam new file mode 100644 index 0000000..c6e6f20 --- /dev/null +++ b/buildroot/package/sudo/sudo.pam @@ -0,0 +1,12 @@ +auth sufficient pam_rootok.so +auth required pam_wheel.so use_uid +auth required pam_env.so +auth required pam_unix.so nullok + +account required pam_unix.so + +password required pam_unix.so nullok + +session required pam_limits.so +session required pam_env.so +session required pam_unix.so diff --git a/buildroot/package/sunxi-boards/Config.in b/buildroot/package/sunxi-boards/Config.in new file mode 100644 index 0000000..d9fd852 --- /dev/null +++ b/buildroot/package/sunxi-boards/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_SUNXI_BOARDS + bool "sunxi script.bin board file" + depends on BR2_arm + select BR2_PACKAGE_HOST_SUNXI_TOOLS + help + Sunxi-boards requires a compiled .fex files for hardware + description, used by the kernel during boot for hardware + initialization. This package is specific for linux-sunxi + kernel and it is useless for mainline kernel versions. + + https://github.com/linux-sunxi/sunxi-boards + +if BR2_PACKAGE_SUNXI_BOARDS +config BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE + string ".fex file to compile" + help + This field defines the name of the .fex file for which the + .bin file should be generated. + + This should be the path of the .fex file relative to the + sys_config/ directory, and including the .fex extension. + + See inside sys_config/ directory in sunxi-boards source code + to see the list of valid .fex files. +endif diff --git a/buildroot/package/sunxi-boards/sunxi-boards.hash b/buildroot/package/sunxi-boards/sunxi-boards.hash new file mode 100644 index 0000000..7556824 --- /dev/null +++ b/buildroot/package/sunxi-boards/sunxi-boards.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 ff1fa509fd5716d26c23a82e59300876a848122f745713a610f8f3c47d448064 sunxi-boards-a6a4e94066f4ec6b26fc7060dc453a6bcf26a504.tar.gz diff --git a/buildroot/package/sunxi-boards/sunxi-boards.mk b/buildroot/package/sunxi-boards/sunxi-boards.mk new file mode 100644 index 0000000..83b3842 --- /dev/null +++ b/buildroot/package/sunxi-boards/sunxi-boards.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# sunxi-boards +# +################################################################################ + +SUNXI_BOARDS_VERSION = a6a4e94066f4ec6b26fc7060dc453a6bcf26a504 +SUNXI_BOARDS_SITE = $(call github,linux-sunxi,sunxi-boards,$(SUNXI_BOARDS_VERSION)) +SUNXI_BOARDS_DEPENDENCIES = host-sunxi-tools +SUNXI_BOARDS_INSTALL_IMAGES = YES +SUNXI_BOARDS_INSTALL_TARGET = NO +SUNXI_BOARDS_FEX_FILE = $(call qstrip,$(BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE)) + +define SUNXI_BOARDS_INSTALL_IMAGES_CMDS + $(FEX2BIN) $(@D)/sys_config/$(SUNXI_BOARDS_FEX_FILE) \ + $(BINARIES_DIR)/script.bin +endef + +ifeq ($(BR2_PACKAGE_SUNXI_BOARDS)$(BR_BUILDING),yy) +# we NEED a board name +ifeq ($(SUNXI_BOARDS_FEX_FILE),) +$(error No sunxi .fex file specified. Check your BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE settings) +endif +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/sunxi-cedarx/Config.in b/buildroot/package/sunxi-cedarx/Config.in new file mode 100644 index 0000000..43fcce5 --- /dev/null +++ b/buildroot/package/sunxi-cedarx/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_SUNXI_CEDARX + bool "sunxi-cedarx" + depends on BR2_arm + depends on BR2_TOOLCHAIN_USES_GLIBC + help + Sunxi CedarX decoder libraries. CedarX is Allwinner's + multimedia co-processing technology for hardware accelerated + video and image decoding, as used inside their A10 SoC's and + others. + + http://github.com/linux-sunxi/cedarx-libs + http://linux-sunxi.org/CedarX + +comment "sunxi-cedarx needs a glibc toolchain" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/sunxi-cedarx/sunxi-cedarx.hash b/buildroot/package/sunxi-cedarx/sunxi-cedarx.hash new file mode 100644 index 0000000..048b868 --- /dev/null +++ b/buildroot/package/sunxi-cedarx/sunxi-cedarx.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 ea7426f83325d247ba0d4734eaf1cb53bab178a81f935e2535ddb3069f70ba84 sunxi-cedarx-b8f52d913f73720e50d8f1b2f8610467b575dc45.tar.gz diff --git a/buildroot/package/sunxi-cedarx/sunxi-cedarx.mk b/buildroot/package/sunxi-cedarx/sunxi-cedarx.mk new file mode 100644 index 0000000..219f1bc --- /dev/null +++ b/buildroot/package/sunxi-cedarx/sunxi-cedarx.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# sunxi-cedarx +# +################################################################################ + +SUNXI_CEDARX_VERSION = b8f52d913f73720e50d8f1b2f8610467b575dc45 +SUNXI_CEDARX_SITE = $(call github,linux-sunxi,cedarx-libs,$(SUNXI_CEDARX_VERSION)) + +SUNXI_CEDARX_INSTALL_STAGING = YES + +SUNXI_CEDARX_CONFIGURE_OPTS = \ + CROSS_COMPILE=$(TARGET_CROSS) + +ifeq ($(BR2_ARM_EABIHF),y) +SUNXI_CEDARX_BIN_DIR = $(@D)/libcedarv/linux-armhf +else +SUNXI_CEDARX_BIN_DIR = $(@D)/libcedarv/linux-armel2 +endif + +define SUNXI_CEDARX_BUILD_AVHEAP + $(TARGET_CC) $(TARGET_CFLAGS) \ + -c $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/avheap.c \ + -o $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/avheap.o \ + -I $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap \ + -I $(SUNXI_CEDARX_BIN_DIR)/ + $(TARGET_CC) -shared -L./ -Wl,-soname,libavheap.so \ + -o $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/libavheap.so \ + $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/avheap.o +endef + +define SUNXI_CEDARX_INSTALL_AVHEAP + $(INSTALL) -D -m 755 $(SUNXI_CEDARX_BIN_DIR)/adapter/avheap/libavheap.so \ + $(1)/usr/lib/libavheap.so +endef + +define SUNXI_CEDARX_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(SUNXI_CEDARX_BIN_DIR) \ + $(SUNXI_CEDARX_CONFIGURE_OPTS) + $(SUNXI_CEDARX_BUILD_AVHEAP) +endef + +define SUNXI_CEDARX_INSTALL_STAGING_CMDS + $(INSTALL) -d -m 755 $(STAGING_DIR)/usr/include/libvecore + $(INSTALL) -m 664 $(SUNXI_CEDARX_BIN_DIR)/libvecore/*.h \ + $(STAGING_DIR)/usr/include/libvecore + $(INSTALL) -m 644 $(SUNXI_CEDARX_BIN_DIR)/*.h \ + $(STAGING_DIR)/usr/include/ + $(INSTALL) -D -m 755 $(SUNXI_CEDARX_BIN_DIR)/libvecore/libvecore.so \ + $(STAGING_DIR)/usr/lib/libvecore.so + $(call SUNXI_CEDARX_INSTALL_AVHEAP, $(STAGING_DIR)) +endef + +define SUNXI_CEDARX_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(SUNXI_CEDARX_BIN_DIR)/libvecore/libvecore.so \ + $(TARGET_DIR)/usr/lib/libvecore.so + $(call SUNXI_CEDARX_INSTALL_AVHEAP, $(TARGET_DIR)) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/sunxi-mali/0001-Add-missing-GLchar-definitions.patch b/buildroot/package/sunxi-mali/0001-Add-missing-GLchar-definitions.patch new file mode 100644 index 0000000..a9370b0 --- /dev/null +++ b/buildroot/package/sunxi-mali/0001-Add-missing-GLchar-definitions.patch @@ -0,0 +1,45 @@ +From 058d5e8cd90d117535b5d314fd9e15c70028ff20 Mon Sep 17 00:00:00 2001 +From: Eric Le Bihan +Date: Mon, 21 Apr 2014 19:31:23 +0200 +Subject: [PATCH] Add missing GLchar definitions. + +The GLES and GLES2 header files provided by sunxi-mali do not define the +type "GLchar" and use "char" instead in the prototype of some functions. + +This issue has been reported upstream some time ago, but the pull +request has not been merged yet. (See +https://github.com/linux-sunxi/sunxi-mali/pull/8). + +Signed-off-by: Eric Le Bihan +--- + include/GLES/gl.h | 1 + + include/GLES2/gl2.h | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/include/GLES/gl.h b/include/GLES/gl.h +index 858f394..a6bb591 100644 +--- a/include/GLES/gl.h ++++ b/include/GLES/gl.h +@@ -29,6 +29,7 @@ typedef float GLfloat; + typedef float GLclampf; + typedef signed int GLfixed; + typedef signed int GLclampx; ++typedef char GLchar; + + typedef int * GLintptr; + typedef int * GLsizeiptr; +diff --git a/include/GLES2/gl2.h b/include/GLES2/gl2.h +index 59e376c..90d96bb 100644 +--- a/include/GLES2/gl2.h ++++ b/include/GLES2/gl2.h +@@ -32,6 +32,7 @@ typedef unsigned int GLuint; + typedef khronos_float_t GLfloat; + typedef khronos_float_t GLclampf; + typedef khronos_int32_t GLfixed; ++typedef char GLchar; + + /* GL types for handling large vertex buffer objects */ + typedef khronos_intptr_t GLintptr; +-- +1.9.0 + diff --git a/buildroot/package/sunxi-mali/0002-linking-of-test-app-needs-libUMP.patch b/buildroot/package/sunxi-mali/0002-linking-of-test-app-needs-libUMP.patch new file mode 100644 index 0000000..1c8f7ee --- /dev/null +++ b/buildroot/package/sunxi-mali/0002-linking-of-test-app-needs-libUMP.patch @@ -0,0 +1,18 @@ +linking of test app needs libUMP + +Signed-off-by: Francois Perrad + +diff --git a/test/Makefile b/test/Makefile +index 700416e..92085cb 100644 +--- a/test/Makefile ++++ b/test/Makefile +@@ -5,7 +5,7 @@ + all: test + + test: ../config.mk test.c +- $(CC) $(CFLAGS) -o $@ test.c -lEGL -lGLESv2 ++ $(CC) $(CFLAGS) -o $@ test.c -lEGL -lGLESv2 -lUMP + + clean: + rm -f test + diff --git a/buildroot/package/sunxi-mali/0003-fix-conflicting-data-types-between-GLES2-gl2.h-and-G.patch b/buildroot/package/sunxi-mali/0003-fix-conflicting-data-types-between-GLES2-gl2.h-and-G.patch new file mode 100644 index 0000000..62e1b17 --- /dev/null +++ b/buildroot/package/sunxi-mali/0003-fix-conflicting-data-types-between-GLES2-gl2.h-and-G.patch @@ -0,0 +1,57 @@ +From 5bf4d4f9c759fdb3c0db61a781042223236169c6 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Mon, 5 Jun 2017 12:40:16 +0200 +Subject: [PATCH] fix conflicting data types between GLES2/gl2.h and GLES/gl.h + +When OpenGL ES 1.1 and OpenGL ES 2.0 are used at the same time, the +build fail since GLintptr and GLsizeiptr data type are not the same in +GLES2/gl2.h and GLES/gl.h. + +Also sync the data type of GLbyte, GLubyte, GLfloat, GLclampf and +GLfixed. + +Fixes: +http://autobuild.buildroot.net/results/258/25898b45cefde9661d8ac87dd84bc883bb5283d1 + +Signed-off-by: Romain Naour +--- + include/GLES/gl.h | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +diff --git a/include/GLES/gl.h b/include/GLES/gl.h +index a6bb591..799408b 100644 +--- a/include/GLES/gl.h ++++ b/include/GLES/gl.h +@@ -18,22 +18,21 @@ typedef void GLvoid; + typedef unsigned int GLenum; + typedef unsigned char GLboolean; + typedef unsigned int GLbitfield; +-typedef signed char GLbyte; ++typedef khronos_int8_t GLbyte; + typedef short GLshort; + typedef int GLint; + typedef int GLsizei; +-typedef unsigned char GLubyte; ++typedef khronos_uint8_t GLubyte; + typedef unsigned short GLushort; + typedef unsigned int GLuint; +-typedef float GLfloat; +-typedef float GLclampf; +-typedef signed int GLfixed; ++typedef khronos_float_t GLfloat; ++typedef khronos_float_t GLclampf; ++typedef khronos_int32_t GLfixed; + typedef signed int GLclampx; + typedef char GLchar; + +-typedef int * GLintptr; +-typedef int * GLsizeiptr; +- ++typedef khronos_intptr_t GLintptr; ++typedef khronos_ssize_t GLsizeiptr; + + /*************************************************************/ + +-- +2.9.4 + diff --git a/buildroot/package/sunxi-mali/Config.in b/buildroot/package/sunxi-mali/Config.in new file mode 100644 index 0000000..554ee68 --- /dev/null +++ b/buildroot/package/sunxi-mali/Config.in @@ -0,0 +1,59 @@ +config BR2_PACKAGE_SUNXI_MALI + bool "sunxi-mali" + depends on BR2_arm + # libump package only provide libUMP.so.3 which is used by + # libMali for r3p0 and r3p1 Mali kernel module. This version + # is only available for ARM EABIhf. + # libMali for r2p4 Mali kernel module (available for ARM EABI) + # requires libUMP.so.2. + depends on BR2_ARM_EABIHF # libUMP.so.3 only + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_LIBUMP + help + Install the ARM Mali drivers for sunxi based systems (i.e + systems based on ARM Allwinner SoCs). This driver requires + either the sunxi-kernel with the ARM Mali driver enabled or + the installation of the ARM Mali drivers as an external + module. + + http://github.com/linux-sunxi/sunxi-mali + +if BR2_PACKAGE_SUNXI_MALI + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "sunxi-mali" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "sunxi-mali" + +config BR2_PACKAGE_SUNXI_MALI_DBG + bool "install malitest and maliver tools" + help + Install 3D triangle demo malitest application and the + maliver application which describes the kernel module + version. + +choice + prompt "Version" + default BR2_PACKAGE_SUNXI_MALI_R3P0 + help + Select the version of the kernel module. For the + sunxi-kernel, the appropriate version number is r3p0. For + other kernels, use the maliver application to determine the + appropriate version. + +config BR2_PACKAGE_SUNXI_MALI_R3P0 + bool "r3p0" + +config BR2_PACKAGE_SUNXI_MALI_R3P1 + bool "r3p1" + +endchoice + +endif + +comment "sunxi-mali needs an EABIhf glibc toolchain" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF diff --git a/buildroot/package/sunxi-mali/S80mali b/buildroot/package/sunxi-mali/S80mali new file mode 100644 index 0000000..ecfbab9 --- /dev/null +++ b/buildroot/package/sunxi-mali/S80mali @@ -0,0 +1,54 @@ +#!/bin/sh -e + +install_driver() { + DRIVER=$1 + OPTS=$2 + + modprobe $DRIVER $OPTS + maj=$(awk "\$2==\"${DRIVER}\" { print \$1; }" /proc/devices) + + rm -f /dev/${DRIVER} + + mknod /dev/${DRIVER} c $maj 0 + chmod 600 /dev/${DRIVER} +} + +start() { + echo "mali: starting driver" + + BITSPERPIXEL="$(fbset | awk '/geom/ {print $6}')" + YRES="$(fbset | awk '/geom/ {print $3}')" + # Set RGBA ordering to something the drivers like + if [ "$BITSPERPIXEL" = "32" ] ; then + fbset -rgba 8/16,8/8,8/0,8/24 + fi + # Try to enable triple buffering when there's enough VRAM + fbset -vyres $(( YRES*3 )) + + install_driver mali + install_driver ump +} + +stop() { + echo "mali: stopping driver" + + rmmod ump + rmmod mali +} + +case "$1" in +start) + start +;; +stop) + stop +;; +restart) + stop + start +;; +*) + echo "mali: Please use start, stop, or restart." + exit 1 +;; +esac diff --git a/buildroot/package/sunxi-mali/egl.pc b/buildroot/package/sunxi-mali/egl.pc new file mode 100644 index 0000000..2823209 --- /dev/null +++ b/buildroot/package/sunxi-mali/egl.pc @@ -0,0 +1,12 @@ +prefix=/usr/ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: egl +Description: ARM Mali implementation of EGL +Version: 1.4 +Requires: +Libs: -L${libdir} -lEGL -lGLESv2 -lUMP +Cflags: -I${includedir} + diff --git a/buildroot/package/sunxi-mali/glesv2.pc b/buildroot/package/sunxi-mali/glesv2.pc new file mode 100644 index 0000000..4702d13 --- /dev/null +++ b/buildroot/package/sunxi-mali/glesv2.pc @@ -0,0 +1,12 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: glesv2 +Description: ARM Mali implementation of OpenGL ESv2 +Version: 2.0 +Requires: +Libs: -L${libdir} -lGLESv2 -lGLESv1_CM -lUMP +Cflags: -I${includedir} + diff --git a/buildroot/package/sunxi-mali/sunxi-mali.hash b/buildroot/package/sunxi-mali/sunxi-mali.hash new file mode 100644 index 0000000..31b5990 --- /dev/null +++ b/buildroot/package/sunxi-mali/sunxi-mali.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 c5f58b2c0533a74f491634ddbd80d888781f4ea29ecc5c24bd7300c02bef1145 sunxi-mali-d343311efc8db166d8371b28494f0f27b6a5872.tar.gz diff --git a/buildroot/package/sunxi-mali/sunxi-mali.mk b/buildroot/package/sunxi-mali/sunxi-mali.mk new file mode 100644 index 0000000..90b580f --- /dev/null +++ b/buildroot/package/sunxi-mali/sunxi-mali.mk @@ -0,0 +1,73 @@ +################################################################################ +# +# sunxi-mali +# +################################################################################ + +# last sha1 character dropped to ensure unique filename +SUNXI_MALI_VERSION = d343311efc8db166d8371b28494f0f27b6a5872 +SUNXI_MALI_SITE = https://github.com/linux-sunxi/sunxi-mali +SUNXI_MALI_SITE_METHOD = git + +# Get the sunxi-mali-proprietary libraries +SUNXI_MALI_GIT_SUBMODULES = YES + +SUNXI_MALI_INSTALL_STAGING = YES +SUNXI_MALI_DEPENDENCIES = libump +SUNXI_MALI_PROVIDES = libegl libgles + +# The options below must be provided in the environment. Providing these +# through options overrides the value and prevents the makefiles from +# appending to these variables. This is used throughout the sunxi-mali build +# system. +# +# Furthermore, the -lm -dl -lpthread options are included due to a possible bug +# in the way the linaro 2013.06 toolchain handles shared libraries. +SUNXI_MALI_MAKE_ENV = \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS) -lm -ldl -lpthread" \ + $(TARGET_MAKE_ENV) + +SUNXI_MALI_MAKE_OPTS += EGL_TYPE=framebuffer \ + ABI=armhf + +ifeq ($(BR2_PACKAGE_SUNXI_MALI_R3P0),y) +SUNXI_MALI_MAKE_OPTS += VERSION=r3p0 +endif +ifeq ($(BR2_PACKAGE_SUNXI_MALI_R3P1),y) +SUNXI_MALI_MAKE_OPTS += VERSION=r3p1 +endif + +define SUNXI_MALI_BUILD_CMDS + $(SUNXI_MALI_MAKE_ENV) $(MAKE) -C $(@D) $(SUNXI_MALI_MAKE_OPTS) all + $(TARGET_CC) $(TARGET_CFLAGS) -o $(@D)/version/version \ + $(@D)/version/version.c +endef + +define SUNXI_MALI_INSTALL_STAGING_CMDS + $(SUNXI_MALI_MAKE_ENV) $(MAKE) -C $(@D) \ + $(SUNXI_MALI_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install + # test must be built after install because it depends on headers that are + # generated during the install above. + $(SUNXI_MALI_MAKE_ENV) $(MAKE) -C $(@D) $(SUNXI_MALI_MAKE_OPTS) test + $(INSTALL) -D -m 0644 package/sunxi-mali/egl.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/egl.pc + $(INSTALL) -D -m 0644 package/sunxi-mali/glesv2.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/glesv2.pc +endef + +define SUNXI_MALI_INSTALL_TARGET_CMDS + $(SUNXI_MALI_MAKE_ENV) $(MAKE) -C $(@D)/lib \ + $(SUNXI_MALI_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install + $(if $(BR2_PACKAGE_SUNXI_MALI_DBG), + $(INSTALL) -m 755 $(@D)/version/version $(TARGET_DIR)/usr/bin/maliver; \ + $(INSTALL) -m 755 $(@D)/test/test $(TARGET_DIR)/usr/bin/malitest + ) +endef + +define SUNXI_MALI_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/sunxi-mali/S80mali \ + $(TARGET_DIR)/etc/init.d/S80mali +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/sunxi-tools/Config.in b/buildroot/package/sunxi-tools/Config.in new file mode 100644 index 0000000..02eba95 --- /dev/null +++ b/buildroot/package/sunxi-tools/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_SUNXI_TOOLS + bool "sunxi nand-part" + depends on BR2_arm + help + nand-part is part of sunxi-tools for Allwinner A10 (aka + sun4i) and A13 (aka sun5i) based devices. It is a tool to + repartition the internal NAND on sunxi devices. + + http://linux-sunxi.org/Sunxi-tools diff --git a/buildroot/package/sunxi-tools/Config.in.host b/buildroot/package/sunxi-tools/Config.in.host new file mode 100644 index 0000000..5fab5e6 --- /dev/null +++ b/buildroot/package/sunxi-tools/Config.in.host @@ -0,0 +1,12 @@ +config BR2_PACKAGE_HOST_SUNXI_TOOLS + bool "host sunxi-tools" + depends on BR2_arm + help + Tools for Allwinner A10 (aka sun4i) and A13 (aka sun5i) + based devices. This includes fex2bin which can be used to + compile .fex board definition files to the binary script.bin + format required by the linux-sunxi kernel. These tools are + specific for linux-sunxi kernel and do not apply to the + mainline Linux kernel version. + + http://linux-sunxi.org/Sunxi-tools diff --git a/buildroot/package/sunxi-tools/sunxi-tools.hash b/buildroot/package/sunxi-tools/sunxi-tools.hash new file mode 100644 index 0000000..efb2b54 --- /dev/null +++ b/buildroot/package/sunxi-tools/sunxi-tools.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 da5d762608517b4b2e9bd392bd9a63afae3973d9c8264cbcfb757ddac8120d1b sunxi-tools-v1.4.1.tar.gz diff --git a/buildroot/package/sunxi-tools/sunxi-tools.mk b/buildroot/package/sunxi-tools/sunxi-tools.mk new file mode 100644 index 0000000..3a44cf6 --- /dev/null +++ b/buildroot/package/sunxi-tools/sunxi-tools.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# sunxi-tools +# +################################################################################ + +SUNXI_TOOLS_VERSION = v1.4.1 +SUNXI_TOOLS_SITE = $(call github,linux-sunxi,sunxi-tools,$(SUNXI_TOOLS_VERSION)) +SUNXI_TOOLS_LICENSE = GPL-2.0+ +SUNXI_TOOLS_LICENSE_FILES = LICENSE.md +HOST_SUNXI_TOOLS_DEPENDENCIES = host-libusb host-pkgconf +FEX2BIN = $(HOST_DIR)/bin/fex2bin + +define HOST_SUNXI_TOOLS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) CC="$(HOSTCC)" PREFIX=$(HOST_DIR) \ + EXTRA_CFLAGS="$(HOST_CFLAGS)" LDFLAGS="$(HOST_LDFLAGS)" \ + -C $(@D) tools +endef + +define HOST_SUNXI_TOOLS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) PREFIX=$(HOST_DIR) \ + -C $(@D) install-tools +endef + +define SUNXI_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" PREFIX=/usr \ + EXTRA_CFLAGS="$(TARGET_CFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)" \ + -C $(@D) sunxi-nand-part +endef + +define SUNXI_TOOLS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/sunxi-nand-part $(TARGET_DIR)/usr/bin/sunxi-nand-part +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/supertux/Config.in b/buildroot/package/supertux/Config.in new file mode 100644 index 0000000..684c2cc --- /dev/null +++ b/buildroot/package/supertux/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_SUPERTUX + bool "supertux" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_PACKAGE_HAS_LIBGL # libglew + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 # libglew, SDL2 OpenGL (GLX) + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 gcc attributes noreturn + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + depends on BR2_USE_MMU # SDL2 OpenGL (GLX) + depends on !BR2_STATIC_LIBS # SDL2 + depends on BR2_USE_WCHAR # Boost + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_DATE_TIME + select BR2_PACKAGE_BOOST_FILESYSTEM + select BR2_PACKAGE_BOOST_SYSTEM + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBGLEW + select BR2_PACKAGE_LIBGLU # GL/glu.h + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_OPENAL + select BR2_PACKAGE_PHYSFS + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_IMAGE + select BR2_PACKAGE_SDL2_OPENGL + help + SuperTux is a free classic 2D jump'n run sidescroller game in + a style similar to the original Super Mario games covered + under the GNU GPL. + + http://supertux.github.io/ + +comment "supertux needs OpenGL and a toolchain w/ C++, gcc >= 4.8, NPTL, dynamic library, wchar" + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_PACKAGE_HAS_LIBGL || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_STATIC_LIBS || !BR2_USE_WCHAR diff --git a/buildroot/package/supertux/supertux.hash b/buildroot/package/supertux/supertux.hash new file mode 100644 index 0000000..c56f608 --- /dev/null +++ b/buildroot/package/supertux/supertux.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c9dc3b42991ce5c5d0d0cb94e44c4ec2373ad09029940f0e92331e7e9ada0ac5 SuperTux-v0.5.1-Source.tar.gz diff --git a/buildroot/package/supertux/supertux.mk b/buildroot/package/supertux/supertux.mk new file mode 100644 index 0000000..e397441 --- /dev/null +++ b/buildroot/package/supertux/supertux.mk @@ -0,0 +1,70 @@ +################################################################################ +# +# supertux +# +################################################################################ + +SUPERTUX_VERSION = 0.5.1 +SUPERTUX_SITE = https://github.com/SuperTux/supertux/releases/download/v$(SUPERTUX_VERSION) +SUPERTUX_SOURCE = SuperTux-v$(SUPERTUX_VERSION)-Source.tar.gz + +# Supertux itself is GPL-3.0+, but it bundles a few libraries with different +# licenses (sexp-cpp, squirrel, tinygettext) which are linked statically. +SUPERTUX_LICENSE = GPL-3.0+ (code), CC-BY-SA-2.0, CC-BY-SA-3.0, GPL-2.0+ (images music sounds) +SUPERTUX_LICENSE_FILES = LICENSE.txt data/AUTHORS + +# Use bundled squirrel, tinygettext sexp-cpp packages which are hardcoded in +# the CMake build system. +SUPERTUX_DEPENDENCIES = host-pkgconf boost libcurl libgl libglew libglu \ + libogg libvorbis openal physfs sdl2 sdl2_image + +# ENABLE_BOOST_STATIC_LIBS=OFF: use boost shared libraries since supertux +# depends on !BR2_STATIC_LIBS and boost provide only shared libraries with +# BR2_SHARED_LIBS. +# ENABLE_OPENGL=ON: Can be disabled but will make SuperTux unplayable slow. +# GLBINDING_ENABLED=OFF: use GLEW (default) instead of glbinding. +# Install the game directly in /usr/bin and game data in /usr/share/supertux2. +# Force using physfs.so from staging since the check on PHYSFS_getPrefDir symbol +# in physfs.h (CHECK_SYMBOL_EXISTS) doesn't work. +SUPERTUX_CONF_OPTS += \ + -DENABLE_BOOST_STATIC_LIBS=OFF \ + -DBUILD_DOCUMENTATION=OFF \ + -DENABLE_OPENGL=ON \ + -DGLBINDING_ENABLED=OFF \ + -DINSTALL_SUBDIR_BIN="bin" \ + -DINSTALL_SUBDIR_SHARE="share/supertux2" \ + -DUSE_SYSTEM_PHYSFS=ON + +# Avoid incompatible posix_memalign declaration on x86 and x86_64 with +# musl. +# https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01425.html +ifeq ($(BR2_TOOLCHAIN_USES_MUSL):$(BR2_i386)$(BR2_x86_64),y:y) +define SUPERTUX_REMOVE_PEDANTIC + $(SED) 's% -pedantic%%' $(@D)/CMakeLists.txt + $(SED) 's%CHECK_CXX_FLAG(pedantic)%%' $(@D)/external/tinygettext/CMakeLists.txt +endef +SUPERTUX_POST_PATCH_HOOKS += SUPERTUX_REMOVE_PEDANTIC +endif + +# From https://bugs.debian.org/cgi-bin/bugreport.cgi/?bug=770670 +# "The problem lies within SDL_cpuinfo.h. It includes altivec.h, which by +# definition provides an unconditional vector, pixel and bool define in +# standard-c++ mode. In GNU-c++ mode this names are only defined +# context-sensitive by cpp. SDL_cpuinfo.h is included by SDL.h. +# Including altivec.h makes arbitrary code break." +# +# Acording to a bug report in GCC [1]: +# "You need to use -std=g++11 or undefine bool after the include of altivec.h +# as context sensitive keywords is not part of the C++11 standard". +# So use gnu++11 instead of c++11 only for altivec system. +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58241#c3 +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +define SUPERTUX_FIX_ALTIVEC_ISSUE + $(SED) 's%std=c++0x%std=gnu++0x%' $(@D)/CMakeLists.txt + $(SED) 's%std=c++11%std=gnu++11%' $(@D)/CMakeLists.txt + $(SED) 's%std=c++0x%std=gnu++0x%' $(@D)/external/tinygettext/CMakeLists.txt +endef +SUPERTUX_POST_PATCH_HOOKS += SUPERTUX_FIX_ALTIVEC_ISSUE +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/supertuxkart/Config.in b/buildroot/package/supertuxkart/Config.in new file mode 100644 index 0000000..5175916 --- /dev/null +++ b/buildroot/package/supertuxkart/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_SUPERTUXKART + bool "supertuxkart" + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP # openal + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # openal + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS # openal + depends on BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + depends on !BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBGLU + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_OPENAL + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_ZLIB + help + Karts. Nitro. Action! SuperTuxKart is a free 3D arcade kart + racer with multiple karts, tracks and modes you can play. + Beat the evil Nolok by any means necessary, and make the + mascot kingdom safe once again! + + http://supertuxkart.sourceforge.net/Main_Page + +comment "supertuxkart needs an OpenGL backend, a uClibc or glibc toolchain w/ NPTL, C++" + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_i386 || BR2_x86_64 + depends on BR2_USE_MMU + depends on BR2_PACKAGE_OPENAL_ARCH_SUPPORTS + depends on BR2_PACKAGE_XORG7 + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_PACKAGE_HAS_LIBGL \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/supertuxkart/supertuxkart.hash b/buildroot/package/supertuxkart/supertuxkart.hash new file mode 100644 index 0000000..4bba3f2 --- /dev/null +++ b/buildroot/package/supertuxkart/supertuxkart.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 d8014e7106ba84f98b5ec5f146249dcffc284fc4083f8f237ff420b9e2219cb0 supertuxkart-0.9.3-src.tar.xz +# From https://sourceforge.net/projects/supertuxkart/files/SuperTuxKart/0.9.3/ +sha1 2650ba20976472f10122a8600cc239507a9b6f24 supertuxkart-0.9.3-src.tar.xz +md5 8de5455b8fdbb92679e302b76c9041cf supertuxkart-0.9.3-src.tar.xz diff --git a/buildroot/package/supertuxkart/supertuxkart.mk b/buildroot/package/supertuxkart/supertuxkart.mk new file mode 100644 index 0000000..3775621 --- /dev/null +++ b/buildroot/package/supertuxkart/supertuxkart.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# supertuxkart +# +################################################################################ + +SUPERTUXKART_VERSION = 0.9.3 +SUPERTUXKART_SOURCE = supertuxkart-$(SUPERTUXKART_VERSION)-src.tar.xz +SUPERTUXKART_SITE = http://downloads.sourceforge.net/project/supertuxkart/SuperTuxKart/$(SUPERTUXKART_VERSION) + +# Supertuxkart itself is GPL-3.0+, but it bundles a few libraries with different +# licenses. Irrlicht, bullet and angelscript have Zlib license, while glew is +# BSD-3-Clause. Since they are linked statically, the result is GPL-3.0+. +SUPERTUXKART_LICENSE = GPL-3.0+ +SUPERTUXKART_LICENSE_FILES = COPYING + +SUPERTUXKART_DEPENDENCIES = \ + freetype \ + jpeg \ + libcurl \ + libgl \ + libglu \ + libogg \ + libpng \ + libvorbis \ + openal \ + xlib_libXrandr \ + zlib + +# Since supertuxkart is not installing libstkirrlicht.so, and since it is +# the only user of the bundled libraries, turn off shared libraries entirely. +# Disable In-game recorder (there is no libopenglrecorder package) +SUPERTUXKART_CONF_OPTS = -DBUILD_SHARED_LIBS=OFF \ + -DBUILD_RECORDER=OFF + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +SUPERTUXKART_DEPENDENCIES += libfribidi +SUPERTUXKART_CONF_OPTS += -DUSE_FRIBIDI=ON +else +SUPERTUXKART_CONF_OPTS += -DUSE_FRIBIDI=OFF +endif + +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y) +SUPERTUXKART_DEPENDENCIES += bluez5_utils +SUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=ON +else +# Wiimote support relies on bluez5. +SUPERTUXKART_CONF_OPTS += -DUSE_WIIUSE=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/supervisor/Config.in b/buildroot/package/supervisor/Config.in new file mode 100644 index 0000000..2ab0e04 --- /dev/null +++ b/buildroot/package/supervisor/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_SUPERVISOR + bool "supervisor" + depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_MELD3 + select BR2_PACKAGE_PYTHON_SETUPTOOLS # runtime dependency + help + A client/server system that allows its users to control a + number of processes on UNIX-like operating systems. + + http://supervisord.org/ + +comment "supervisor needs the python interpreter" + depends on !BR2_PACKAGE_PYTHON diff --git a/buildroot/package/supervisor/S99supervisord b/buildroot/package/supervisor/S99supervisord new file mode 100755 index 0000000..921dcf6 --- /dev/null +++ b/buildroot/package/supervisor/S99supervisord @@ -0,0 +1,29 @@ +#!/bin/sh + +mkdir -p /var/log/supervisor + +case "$1" in + start) + printf "Starting supervisord: " + start-stop-daemon -S -q -p /var/run/supervisord.pid --exec /usr/bin/supervisord + echo "done" + ;; + stop) + printf "Stopping supervisord: " + start-stop-daemon -K -q -p /var/run/supervisord.pid + echo "done" + ;; + restart) + "$0" stop + sleep 5 + "$0" start + ;; + reload) + start-stop-daemon -K -q -p /var/run/supervisord.pid -s HUP + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/supervisor/supervisor.hash b/buildroot/package/supervisor/supervisor.hash new file mode 100644 index 0000000..0ebc663 --- /dev/null +++ b/buildroot/package/supervisor/supervisor.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 82f75089f719a7a3ca87f35c89a03c20fd3c0912552c96eb6fa40274ced6604e supervisor-3.1.4.tar.gz +sha256 a85a622378c6a892ead1ce5d0488e446e106bf014d3b763fdbc1ad1ae38ee491 COPYRIGHT.txt +sha256 27ba0b2357ed6974d755ed53232c5ab8595622b3111bb91682708ea188cc3696 LICENSES.txt diff --git a/buildroot/package/supervisor/supervisor.mk b/buildroot/package/supervisor/supervisor.mk new file mode 100644 index 0000000..9b93b44 --- /dev/null +++ b/buildroot/package/supervisor/supervisor.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# supervisor +# +################################################################################ + +SUPERVISOR_VERSION = 3.1.4 +SUPERVISOR_SITE = https://pypi.python.org/packages/12/50/cd330d1a0daffbbe54803cb0c4c1ada892b5d66db08befac385122858eee +SUPERVISOR_LICENSE = BSD-like, rdflib (http_client.py), PSF (medusa), ZPL-2.1 +SUPERVISOR_LICENSE_FILES = COPYRIGHT.txt LICENSES.txt +SUPERVISOR_SETUP_TYPE = setuptools + +define SUPERVISOR_INSTALL_CONF_FILES + $(INSTALL) -d -m 755 $(TARGET_DIR)/etc/supervisor.d + $(INSTALL) -D -m 644 package/supervisor/supervisord.conf \ + $(TARGET_DIR)/etc/supervisord.conf +endef + +SUPERVISOR_POST_INSTALL_TARGET_HOOKS += SUPERVISOR_INSTALL_CONF_FILES + +define SUPERVISOR_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/supervisor/S99supervisord \ + $(TARGET_DIR)/etc/init.d/S99supervisord +endef + +define SUPERVISOR_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/supervisor/supervisord.service \ + $(TARGET_DIR)/usr/lib/systemd/system/supervisord.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/supervisord.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/supervisord.service +endef + +$(eval $(python-package)) diff --git a/buildroot/package/supervisor/supervisord.conf b/buildroot/package/supervisor/supervisord.conf new file mode 100644 index 0000000..1372a68 --- /dev/null +++ b/buildroot/package/supervisor/supervisord.conf @@ -0,0 +1,18 @@ +[unix_http_server] +file = /var/run/supervisor.sock + +[supervisord] +logfile = /var/log/supervisor/supervisord.log +logfile_maxbytes = 200KB +logfile_backups = 1 +pidfile = /var/run/supervisord.pid +childlogdir = /var/log/supervisor + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl = unix:///var/run/supervisor.sock + +[include] +files = /etc/supervisor.d/*.conf diff --git a/buildroot/package/supervisor/supervisord.service b/buildroot/package/supervisor/supervisord.service new file mode 100644 index 0000000..92c38c7 --- /dev/null +++ b/buildroot/package/supervisor/supervisord.service @@ -0,0 +1,10 @@ +[Unit] +Description=Process Control System +After=syslog.target + +[Service] +ExecStart=/usr/bin/supervisord -n +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch b/buildroot/package/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch new file mode 100644 index 0000000..7f3002d --- /dev/null +++ b/buildroot/package/swig/0001-Add-Node-7.x-aka-V8-5.2-support.patch @@ -0,0 +1,328 @@ +From f08d7a63a92a3ba89d97bdfcc206e1e1c4804c0f Mon Sep 17 00:00:00 2001 +From: Patrick Schneider +Date: Thu, 13 Apr 2017 15:02:53 +0200 +Subject: [PATCH 1/2] Add Node 7.x aka V8 5.2+ support + +* Use WeakCallbackInfo instead of WeakCallbackData +* Use GetPrivate instead of GetHiddenValue +* Adopted new signature for SetWeak to support destructor calling +* SetAccessor deprecation fixed +* Proper version checks where applicable + +Signed-off-by: Yegor Yefremov +--- + Lib/javascript/v8/javascriptcode.swg | 27 +++++++++++++++++----- + Lib/javascript/v8/javascripthelpers.swg | 29 +++++++++++++++++++++--- + Lib/javascript/v8/javascriptinit.swg | 16 +++++++++++-- + Lib/javascript/v8/javascriptrun.swg | 40 ++++++++++++++++++++++++++++----- + 4 files changed, 95 insertions(+), 17 deletions(-) + +diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg +index fb7d55c..b8c5089 100644 +--- a/Lib/javascript/v8/javascriptcode.swg ++++ b/Lib/javascript/v8/javascriptcode.swg +@@ -133,10 +133,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + static void $jswrapper(v8::Isolate *isolate, v8::Persistent *object, SWIGV8_Proxy *proxy) { +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + static void $jswrapper(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SWIGV8_Proxy *proxy = data.GetParameter(); ++#else ++ static void $jswrapper(const v8::WeakCallbackInfo &data) { ++ SWIGV8_Proxy *proxy = data.GetParameter(); + #endif + + if(proxy->swigCMemOwn && proxy->swigCObject) { +@@ -147,7 +150,9 @@ static void $jswrapper(const v8::WeakCallbackData &dat + } + delete proxy; + ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + object.Clear(); ++#endif + + #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) + object.Dispose(); +@@ -155,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat + object.Dispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) + object->Dispose(isolate); +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + object->Dispose(); + #endif + } +@@ -177,10 +182,13 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) { +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + static void $jswrapper(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SWIGV8_Proxy *proxy = data.GetParameter(); ++#else ++static void $jswrapper(const v8::WeakCallbackInfo &data) { ++ SWIGV8_Proxy *proxy = data.GetParameter(); + #endif + + if(proxy->swigCMemOwn && proxy->swigCObject) { +@@ -197,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat + object->Dispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + object->Dispose(); +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + object.Clear(); + #endif + } +@@ -211,7 +219,11 @@ static void $jswrapper(const v8::WeakCallbackData &dat + * ----------------------------------------------------------------------------- */ + %fragment("js_getter", "templates") + %{ ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { ++#else ++static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { ++#endif + SWIGV8_HANDLESCOPE(); + + v8::Handle jsresult; +@@ -233,8 +245,11 @@ fail: + * ----------------------------------------------------------------------------- */ + %fragment("js_setter", "templates") + %{ +-static void $jswrapper(v8::Local property, v8::Local value, +- const SwigV8PropertyCallbackInfoVoid &info) { ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { ++#else ++static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { ++#endif + SWIGV8_HANDLESCOPE(); + + $jslocals +diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg +index 091467d..7461079 100644 +--- a/Lib/javascript/v8/javascripthelpers.swg ++++ b/Lib/javascript/v8/javascripthelpers.swg +@@ -6,11 +6,16 @@ typedef v8::InvocationCallback SwigV8FunctionCallback; + typedef v8::AccessorGetter SwigV8AccessorGetterCallback; + typedef v8::AccessorSetter SwigV8AccessorSetterCallback; + typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid; +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + typedef v8::FunctionCallback SwigV8FunctionCallback; + typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback; + typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback; + typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; ++#else ++typedef v8::FunctionCallback SwigV8FunctionCallback; ++typedef v8::AccessorNameGetterCallback SwigV8AccessorGetterCallback; ++typedef v8::AccessorNameSetterCallback SwigV8AccessorSetterCallback; ++typedef v8::PropertyCallbackInfo SwigV8PropertyCallbackInfoVoid; + #endif + + /** +@@ -65,18 +70,36 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle obj, const char + */ + SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle obj, const char* symbol, + SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); ++#else ++ obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter); ++#endif + } + +-SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, +- const SwigV8PropertyCallbackInfoVoid& info) ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) ++#else ++SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) ++#endif + { + char buffer[256]; + char msg[512]; + int res; + ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + property->WriteUtf8(buffer, 256); + res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); ++#else ++ v8::Local sproperty; ++ if (property->ToString(SWIGV8_CURRENT_CONTEXT()).ToLocal(&sproperty)) { ++ sproperty->WriteUtf8(buffer, 256); ++ res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); ++ } ++ else { ++ res = -1; ++ } ++#endif + + if(res<0) { + SWIG_exception(SWIG_ERROR, "Tried to write read-only variable."); +diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg +index 34befa7..86008d9 100644 +--- a/Lib/javascript/v8/javascriptinit.swg ++++ b/Lib/javascript/v8/javascriptinit.swg +@@ -7,15 +7,27 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { + v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); + v8::Local mod = SWIGV8_EXTERNAL_NEW(swig_module); + assert(!mod.IsEmpty()); ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod); ++#else ++ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); ++ global_obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, mod); ++#endif + } + + SWIGRUNTIME swig_module_info * + SWIG_V8_GetModule(void *) { + v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + v8::Local moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data")); ++#else ++ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); ++ v8::Local moduleinfo; ++ if (!global_obj->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&moduleinfo)) ++ return 0; ++#endif + +- if (moduleinfo.IsEmpty()) ++ if (moduleinfo.IsEmpty() || moduleinfo->IsNull() || moduleinfo->IsUndefined()) + { + // It's not yet loaded + return 0; +@@ -23,7 +35,7 @@ SWIG_V8_GetModule(void *) { + + v8::Local moduleinfo_extern = v8::Local::Cast(moduleinfo); + +- if (moduleinfo_extern.IsEmpty()) ++ if (moduleinfo_extern.IsEmpty() || moduleinfo_extern->IsNull() || moduleinfo_extern->IsUndefined()) + { + // Something's not right + return 0; +diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg +index 5ac52a5..30002c0 100644 +--- a/Lib/javascript/v8/javascriptrun.swg ++++ b/Lib/javascript/v8/javascriptrun.swg +@@ -193,8 +193,10 @@ public: + void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy); +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + void (*dtor) (const v8::WeakCallbackData &data); ++#else ++ void (*dtor) (const v8::WeakCallbackInfo &data); + #endif + }; + +@@ -241,9 +243,12 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) { +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData &data) { + SWIGV8_Proxy *proxy = data.GetParameter(); ++#else ++SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackInfo &data) { ++ SWIGV8_Proxy *proxy = data.GetParameter(); + #endif + + delete proxy; +@@ -312,12 +317,18 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, sw + } else { + cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor); + } +-#else ++#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { + cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); + } else { + cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor); + } ++#else ++ if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { ++ cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor, v8::WeakCallbackType::kParameter); ++ } else { ++ cdata->handle.SetWeak(cdata, SWIGV8_Proxy_DefaultDtor, v8::WeakCallbackType::kParameter); ++ } + #endif + + #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) +@@ -470,7 +481,14 @@ int SwigV8Packed_Check(v8::Handle valRef) { + + v8::Handle objRef = valRef->ToObject(); + if(objRef->InternalFieldCount() < 1) return false; ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + v8::Handle flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); ++#else ++ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); ++ v8::Local flag; ++ if (!objRef->GetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey).ToLocal(&flag)) ++ return false; ++#endif + return (flag->IsBoolean() && flag->BooleanValue()); + } + +@@ -519,10 +537,13 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist + SwigV8PackedData *cdata = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent *object, SwigV8PackedData *cdata) { +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SwigV8PackedData *cdata = data.GetParameter(); ++#else ++SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfo &data) { ++ SwigV8PackedData *cdata = data.GetParameter(); + #endif + + delete cdata; +@@ -537,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackDataDispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + object->Dispose(); +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + object.Clear(); + #endif + } +@@ -550,7 +571,12 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf + // v8::Handle obj = SWIGV8_OBJECT_NEW(); + v8::Local obj = SWIGV8_OBJECT_NEW(); + ++#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true)); ++#else ++ v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); ++ obj->SetPrivate(SWIGV8_CURRENT_CONTEXT(), privateKey, SWIGV8_BOOLEAN_NEW(true)); ++#endif + + #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031511) + obj->SetPointerInInternalField(0, cdata); +@@ -573,9 +599,11 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf + cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete); +-#else ++#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) + cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete); + // v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete); ++#else ++ cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete, v8::WeakCallbackType::kParameter); + #endif + + #if (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x031710) +-- +2.1.4 + diff --git a/buildroot/package/swig/0002-Remove-warnings-on-Node-6.x-aka-V8-5.0-and-5.1.patch b/buildroot/package/swig/0002-Remove-warnings-on-Node-6.x-aka-V8-5.0-and-5.1.patch new file mode 100644 index 0000000..6724220 --- /dev/null +++ b/buildroot/package/swig/0002-Remove-warnings-on-Node-6.x-aka-V8-5.0-and-5.1.patch @@ -0,0 +1,222 @@ +From 9ce8d7e7c99e75163318428aeff6e60d398fcdca Mon Sep 17 00:00:00 2001 +From: Patrick Schneider +Date: Thu, 13 Apr 2017 19:39:44 +0200 +Subject: [PATCH 2/2] Remove warnings on Node 6.x aka V8 5.0 and 5.1 + +The proposed changes targetted at 5.2 (or 5.4 to be more precise, since there is no Node release with V8 5.2 or 5.3) work for lower versions as well and bust the deprecation warnings there. + +Signed-off-by: Yegor Yefremov +--- + Lib/javascript/v8/javascriptcode.swg | 14 +++++++------- + Lib/javascript/v8/javascripthelpers.swg | 8 ++++---- + Lib/javascript/v8/javascriptinit.swg | 4 ++-- + Lib/javascript/v8/javascriptrun.swg | 16 ++++++++-------- + 4 files changed, 21 insertions(+), 21 deletions(-) + +diff --git a/Lib/javascript/v8/javascriptcode.swg b/Lib/javascript/v8/javascriptcode.swg +index b8c5089..c4aaf3d 100644 +--- a/Lib/javascript/v8/javascriptcode.swg ++++ b/Lib/javascript/v8/javascriptcode.swg +@@ -133,7 +133,7 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + static void $jswrapper(v8::Isolate *isolate, v8::Persistent *object, SWIGV8_Proxy *proxy) { +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + static void $jswrapper(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SWIGV8_Proxy *proxy = data.GetParameter(); +@@ -150,7 +150,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat + } + delete proxy; + +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + object.Clear(); + #endif + +@@ -160,7 +160,7 @@ static void $jswrapper(const v8::WeakCallbackData &dat + object.Dispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < 0x032100) + object->Dispose(isolate); +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + object->Dispose(); + #endif + } +@@ -182,7 +182,7 @@ static void $jswrapper(v8::Isolate *isolate, v8::Persistent object, v + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + static void $jswrapper(v8::Isolate *isolate, v8::Persistent< v8::Object> *object, SWIGV8_Proxy *proxy) { +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + static void $jswrapper(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SWIGV8_Proxy *proxy = data.GetParameter(); +@@ -205,7 +205,7 @@ static void $jswrapper(const v8::WeakCallbackInfo &data) { + object->Dispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + object->Dispose(); +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + object.Clear(); + #endif + } +@@ -219,7 +219,7 @@ static void $jswrapper(const v8::WeakCallbackInfo &data) { + * ----------------------------------------------------------------------------- */ + %fragment("js_getter", "templates") + %{ +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { + #else + static SwigV8ReturnValue $jswrapper(v8::Local property, const SwigV8PropertyCallbackInfo &info) { +@@ -245,7 +245,7 @@ fail: + * ----------------------------------------------------------------------------- */ + %fragment("js_setter", "templates") + %{ +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { + #else + static void $jswrapper(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid &info) { +diff --git a/Lib/javascript/v8/javascripthelpers.swg b/Lib/javascript/v8/javascripthelpers.swg +index 7461079..7b8a5ec 100644 +--- a/Lib/javascript/v8/javascripthelpers.swg ++++ b/Lib/javascript/v8/javascripthelpers.swg +@@ -6,7 +6,7 @@ typedef v8::InvocationCallback SwigV8FunctionCallback; + typedef v8::AccessorGetter SwigV8AccessorGetterCallback; + typedef v8::AccessorSetter SwigV8AccessorSetterCallback; + typedef v8::AccessorInfo SwigV8PropertyCallbackInfoVoid; +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + typedef v8::FunctionCallback SwigV8FunctionCallback; + typedef v8::AccessorGetterCallback SwigV8AccessorGetterCallback; + typedef v8::AccessorSetterCallback SwigV8AccessorSetterCallback; +@@ -70,14 +70,14 @@ SWIGRUNTIME void SWIGV8_AddStaticFunction(v8::Handle obj, const char + */ + SWIGRUNTIME void SWIGV8_AddStaticVariable(v8::Handle obj, const char* symbol, + SwigV8AccessorGetterCallback getter, SwigV8AccessorSetterCallback setter) { +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + obj->SetAccessor(SWIGV8_SYMBOL_NEW(symbol), getter, setter); + #else + obj->SetAccessor(SWIGV8_CURRENT_CONTEXT(), SWIGV8_SYMBOL_NEW(symbol), getter, setter); + #endif + } + +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) + #else + SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::Local value, const SwigV8PropertyCallbackInfoVoid& info) +@@ -87,7 +87,7 @@ SWIGRUNTIME void JS_veto_set_variable(v8::Local property, v8::LocalWriteUtf8(buffer, 256); + res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); + #else +diff --git a/Lib/javascript/v8/javascriptinit.swg b/Lib/javascript/v8/javascriptinit.swg +index 86008d9..e83f478 100644 +--- a/Lib/javascript/v8/javascriptinit.swg ++++ b/Lib/javascript/v8/javascriptinit.swg +@@ -7,7 +7,7 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { + v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); + v8::Local mod = SWIGV8_EXTERNAL_NEW(swig_module); + assert(!mod.IsEmpty()); +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + global_obj->SetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data"), mod); + #else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); +@@ -18,7 +18,7 @@ SWIG_V8_SetModule(void *, swig_module_info *swig_module) { + SWIGRUNTIME swig_module_info * + SWIG_V8_GetModule(void *) { + v8::Local global_obj = SWIGV8_CURRENT_CONTEXT()->Global(); +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + v8::Local moduleinfo = global_obj->GetHiddenValue(SWIGV8_STRING_NEW("swig_module_info_data")); + #else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("swig_module_info_data")); +diff --git a/Lib/javascript/v8/javascriptrun.swg b/Lib/javascript/v8/javascriptrun.swg +index 30002c0..0af9f4e 100644 +--- a/Lib/javascript/v8/javascriptrun.swg ++++ b/Lib/javascript/v8/javascriptrun.swg +@@ -193,7 +193,7 @@ public: + void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Value> object, void *parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + void (*dtor) (v8::Isolate *isolate, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy); +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + void (*dtor) (const v8::WeakCallbackData &data); + #else + void (*dtor) (const v8::WeakCallbackInfo &data); +@@ -243,7 +243,7 @@ SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Val + SWIGV8_Proxy *proxy = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(v8::Isolate *, v8::Persistent< v8::Object > *object, SWIGV8_Proxy *proxy) { +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData &data) { + SWIGV8_Proxy *proxy = data.GetParameter(); + #else +@@ -317,7 +317,7 @@ SWIGRUNTIME void SWIGV8_SetPrivateData(v8::Handle obj, void *ptr, sw + } else { + cdata->handle.MakeWeak(cdata, SWIGV8_Proxy_DefaultDtor); + } +-#elifif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + if(cdata->swigCMemOwn && (SWIGV8_ClientData*)info->clientdata) { + cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor); + } else { +@@ -481,7 +481,7 @@ int SwigV8Packed_Check(v8::Handle valRef) { + + v8::Handle objRef = valRef->ToObject(); + if(objRef->InternalFieldCount() < 1) return false; +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + v8::Handle flag = objRef->GetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__")); + #else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); +@@ -537,7 +537,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persist + SwigV8PackedData *cdata = static_cast(parameter); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + SWIGRUNTIME void _wrap_SwigV8PackedData_delete(v8::Isolate *isolate, v8::Persistent *object, SwigV8PackedData *cdata) { +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackData &data) { + v8::Local object = data.GetValue(); + SwigV8PackedData *cdata = data.GetParameter(); +@@ -558,7 +558,7 @@ SWIGRUNTIME void _wrap_SwigV8PackedData_delete(const v8::WeakCallbackInfoDispose(isolate); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + object->Dispose(); +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + object.Clear(); + #endif + } +@@ -571,7 +571,7 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf + // v8::Handle obj = SWIGV8_OBJECT_NEW(); + v8::Local obj = SWIGV8_OBJECT_NEW(); + +-#if (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#if (V8_MAJOR_VERSION-0) < 5 + obj->SetHiddenValue(SWIGV8_STRING_NEW("__swig__packed_data__"), SWIGV8_BOOLEAN_NEW(true)); + #else + v8::Local privateKey = v8::Private::ForApi(v8::Isolate::GetCurrent(), SWIGV8_STRING_NEW("__swig__packed_data__")); +@@ -599,7 +599,7 @@ v8::Handle SWIGV8_NewPackedObj(void *data, size_t size, swig_type_inf + cdata->handle.MakeWeak(v8::Isolate::GetCurrent(), cdata, _wrap_SwigV8PackedData_delete); + #elif (V8_MAJOR_VERSION-0) < 4 && (SWIG_V8_VERSION < SWIGV8_SETWEAK_VERSION) + cdata->handle.MakeWeak(cdata, _wrap_SwigV8PackedData_delete); +-#elif (V8_MAJOR_VERSION-0) < 5 || (V8_MAJOR_VERSION == 5 && V8_MINOR_VERSION < 2) ++#elif (V8_MAJOR_VERSION-0) < 5 + cdata->handle.SetWeak(cdata, _wrap_SwigV8PackedData_delete); + // v8::V8::SetWeak(&cdata->handle, cdata, _wrap_SwigV8PackedData_delete); + #else +-- +2.1.4 + diff --git a/buildroot/package/swig/swig.hash b/buildroot/package/swig/swig.hash new file mode 100644 index 0000000..77c93a9 --- /dev/null +++ b/buildroot/package/swig/swig.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 7cf9f447ae7ed1c51722efc45e7f14418d15d7a1e143ac9f09a668999f4fc94d swig-3.0.12.tar.gz diff --git a/buildroot/package/swig/swig.mk b/buildroot/package/swig/swig.mk new file mode 100644 index 0000000..157d3a3 --- /dev/null +++ b/buildroot/package/swig/swig.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# swig +# +################################################################################ + +SWIG_VERSION_MAJOR = 3.0 +SWIG_VERSION = $(SWIG_VERSION_MAJOR).12 +SWIG_SITE = http://downloads.sourceforge.net/project/swig/swig/swig-$(SWIG_VERSION) +HOST_SWIG_DEPENDENCIES = host-bison +HOST_SWIG_CONF_OPTS = \ + --without-pcre \ + --disable-ccache \ + --without-octave +SWIG_LICENSE = GPL-3.0+, BSD-2-Clause, BSD-3-Clause +SWIG_LICENSE_FILES = LICENSE LICENSE-GPL LICENSE-UNIVERSITIES + +# CMake looks first at swig3.0, then swig2.0 and then swig. However, +# when doing the search, it will look into the PATH for swig2.0 first, +# and then for swig. +# While the PATH contains first our $(HOST_DIR)/bin, it also contains +# /usr/bin and other system directories. Therefore, if there is an +# installed swig3.0 on the system, it will get the preference over the +# swig installed in $(HOST_DIR)/bin, which isn't nice. To prevent +# this from happening we create a symbolic link swig3.0 -> swig, so that +# our swig always gets used. + +define HOST_SWIG_INSTALL_SYMLINK + ln -fs swig $(HOST_DIR)/bin/swig$(SWIG_VERSION_MAJOR) +endef + +HOST_SWIG_POST_INSTALL_HOOKS += HOST_SWIG_INSTALL_SYMLINK + +$(eval $(host-autotools-package)) + +SWIG = $(HOST_DIR)/bin/swig$(SWIG_VERSION_MAJOR) diff --git a/buildroot/package/swupdate/0001-compat.h-introduce-compatibility-header.patch b/buildroot/package/swupdate/0001-compat.h-introduce-compatibility-header.patch new file mode 100644 index 0000000..5e3bfb0 --- /dev/null +++ b/buildroot/package/swupdate/0001-compat.h-introduce-compatibility-header.patch @@ -0,0 +1,87 @@ +From 9867a9d6a21e6b0b9bcba57c3e2398fe671cea17 Mon Sep 17 00:00:00 2001 +From: Christian Storm +Date: Tue, 16 Jan 2018 10:34:52 +0100 +Subject: [PATCH] compat.h: introduce compatibility header +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Introduce a compat.h housing compatibility definitions +and macros along the lines of commit 7b49b8d having +introduced a compatibility mechanism for Lua. + +First use case (and motivation) is the support for +musl (https://www.musl-libc.org/) which doesn't +bother to provide + char *strndupa(const char *s, size_t n) + +Backported from: 9867a9d6a21e6b0b9bcba57c3e2398fe671cea17 + +Reviewed-by: Stefano Babic +Reported-by: Jörg Krause +Signed-off-by: Christian Storm +Signed-off-by: Jörg Krause +--- + include/compat.h | 24 ++++++++++++++++++++++++ + include/util.h | 1 + + ipc/network_ipc.c | 1 + + 3 files changed, 26 insertions(+) + create mode 100644 include/compat.h + +diff --git a/include/compat.h b/include/compat.h +new file mode 100644 +index 0000000..29d7af1 +--- /dev/null ++++ b/include/compat.h +@@ -0,0 +1,24 @@ ++/* ++ * Author: Christian Storm ++ * Copyright (C) 2018, Siemens AG ++ * ++ * SPDX-License-Identifier: GPL-2.0-or-later ++ */ ++ ++#pragma once ++ ++#ifndef strndupa ++/* ++ * Define char *strndupa(const char *s, size_t n) ++ * for, e.g., musl (https://www.musl-libc.org/) ++ * which does not bother to implement this function. ++ */ ++#define strndupa(s, n) \ ++ (__extension__({ \ ++ const char *__in = (s); \ ++ size_t __len = strnlen(__in, (n)) + 1; \ ++ char *__out = (char *)alloca(__len); \ ++ __out[__len - 1] = '\0'; \ ++ (char *)memcpy(__out, __in, __len - 1); \ ++ })) ++#endif +diff --git a/include/util.h b/include/util.h +index bec2975..d43cd8c 100644 +--- a/include/util.h ++++ b/include/util.h +@@ -12,6 +12,7 @@ + #include + #include "swupdate.h" + #include "swupdate_status.h" ++#include "compat.h" + + #define NOTIFY_BUF_SIZE 2048 + #define ENOMEM_ASPRINTF -1 +diff --git a/ipc/network_ipc.c b/ipc/network_ipc.c +index 3f197c7..48f6fcc 100644 +--- a/ipc/network_ipc.c ++++ b/ipc/network_ipc.c +@@ -27,6 +27,7 @@ + #include + + #include "network_ipc.h" ++#include "compat.h" + + #ifdef CONFIG_SOCKET_CTRL_PATH + static char* SOCKET_CTRL_PATH = (char*)CONFIG_SOCKET_CTRL_PATH; +-- +2.15.1 + diff --git a/buildroot/package/swupdate/0002-Fix-build-if-DOWNLOAD-is-set-but-no-JSON.patch b/buildroot/package/swupdate/0002-Fix-build-if-DOWNLOAD-is-set-but-no-JSON.patch new file mode 100644 index 0000000..5e07995 --- /dev/null +++ b/buildroot/package/swupdate/0002-Fix-build-if-DOWNLOAD-is-set-but-no-JSON.patch @@ -0,0 +1,107 @@ +From 37a6666a532e9cbc42b56301f27919ae7c00d2eb Mon Sep 17 00:00:00 2001 +From: Stefano Babic +Date: Tue, 23 Jan 2018 16:52:32 +0100 +Subject: [PATCH] Fix build if DOWNLOAD is set, but no JSON +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The downloader does not require JSON, but channel_curl is built +even if not called. Build fails with the error: + +corelib/channel_curl.c:27:10: fatal error: json-c/json.h: No such file or directory + +Add a CONFIG_CHANNEL_CURL that is automatically set by the modules +reuiring it (suricatta and swuforwarder). + +Backported from: 37a6666a532e9cbc42b56301f27919ae7c00d2eb + +Signed-off-by: Stefano Babic +Reported-by: Jörg Krause +Acked-by: Jörg Krause +Signed-off-by: Jörg Krause +--- + Kconfig | 7 +++++++ + corelib/Makefile | 2 +- + handlers/Config.in | 8 +++++--- + suricatta/Config.in | 3 +-- + 4 files changed, 14 insertions(+), 6 deletions(-) + +diff --git a/Kconfig b/Kconfig +index 4469096..e344572 100644 +--- a/Kconfig ++++ b/Kconfig +@@ -294,6 +294,13 @@ config DOWNLOAD + comment "Image downloading support needs libcurl" + depends on !HAVE_LIBCURL + ++config CHANNEL_CURL ++ bool ++ depends on HAVE_LIBCURL ++ depends on HAVE_JSON_C ++ select CURL ++ select JSON ++ + config HASH_VERIFY + bool "Allow to add sha256 hash to each image" + depends on HAVE_LIBSSL +diff --git a/corelib/Makefile b/corelib/Makefile +index 282bffd..4b30f9c 100644 +--- a/corelib/Makefile ++++ b/corelib/Makefile +@@ -17,4 +17,4 @@ lib-$(CONFIG_ENCRYPTED_IMAGES) += swupdate_decrypt.o + lib-$(CONFIG_LIBCONFIG) += swupdate_settings.o \ + parsing_library_libconfig.o + lib-$(CONFIG_JSON) += parsing_library_libjson.o +-lib-$(CONFIG_CURL) += channel_curl.o ++lib-$(CONFIG_CHANNEL_CURL) += channel_curl.o +diff --git a/handlers/Config.in b/handlers/Config.in +index 596f069..6226b59 100644 +--- a/handlers/Config.in ++++ b/handlers/Config.in +@@ -54,7 +54,6 @@ config UBIVIDOFFSET + if your NAND driver incorrectly reports that it can handle + sub-page accesses when it should not. + +- + config CFI + bool "cfi" + depends on MTD +@@ -164,8 +163,8 @@ comment "remote handler needs zeromq" + config SWUFORWARDER_HANDLER + bool "SWU forwarder" + depends on HAVE_LIBCURL +- select CURL +- select JSON ++ depends on HAVE_JSON_C ++ select CHANNEL_CURL + default n + help + This allows to build a chain of updater. A +@@ -174,6 +173,9 @@ config SWUFORWARDER_HANDLER + embedded SWU to the other devices using the + Webserver REST API. + ++comment "swuforward handler needs json-c and curl" ++ depends on !HAVE_JSON_C || !HAVE_LIBCURL ++ + comment "SWU forwarder requires libcurl" + depends on !HAVE_LIBCURL + +diff --git a/suricatta/Config.in b/suricatta/Config.in +index 62e448a..2586169 100644 +--- a/suricatta/Config.in ++++ b/suricatta/Config.in +@@ -71,8 +71,7 @@ config SURICATTA_HAWKBIT + bool "hawkBit support" + depends on HAVE_LIBCURL + depends on HAVE_JSON_C +- select JSON +- select CURL ++ select CHANNEL_CURL + help + Support for hawkBit server. + https://projects.eclipse.org/projects/iot.hawkbit +-- +2.16.1 + diff --git a/buildroot/package/swupdate/Config.in b/buildroot/package/swupdate/Config.in new file mode 100644 index 0000000..ca2eaf2 --- /dev/null +++ b/buildroot/package/swupdate/Config.in @@ -0,0 +1,64 @@ +config BR2_PACKAGE_SWUPDATE + bool "swupdate" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + # swupdate requires a parser and uses libconfig as default + select BR2_PACKAGE_LIBCONFIG if !BR2_PACKAGE_JSON_C && \ + !BR2_PACKAGE_HAS_LUAINTERPRETER + help + swupdate provides a reliable way to update the software on + an embedded system. + + swupdate is highly configurable to fit the targets + requirements and to minimize the footprint. The provided + default configuration file BR2_PACKAGE_SWUPDATE_CONFIG will + enable swupdate with an embedded webserver, a parser and a + handler for raw NAND or NOR flash. + + The default configuration file builds a reasonable firmware + update system with minimal external dependencies in mind. + If you like to use your own modified configuration, + you have to select the necessary packages manually: + + * Select BR2_PACKAGE_LUA or BR2_PACKAGE_LUAJIT if you want + want to have Lua support. + * Select BR2_LIBCURL if you want to use the download + feature. + * Select BR2_PACKAGE_OPENSSL is you want to add encryption + support. + * Select BR2_PACKAGE_MTD if you want to use swupdate with + UBI partitions. + * Select BR2_PACKAGE_ZLIB if you want to deal with gzip + compressed archives. + * Select BR2_PACKAGE_UBOOT_TOOLS and BR2_PACKAGE_ZLIB to add + support for setting the U-Boot environment. + * Select BR2_PACKAGE_ZEROMQ to add support for using a + remote handler. + + https://sbabic.github.io/swupdate + +if BR2_PACKAGE_SWUPDATE + +config BR2_PACKAGE_SWUPDATE_CONFIG + string "swupdate configuration file" + default "package/swupdate/swupdate.config" + help + Path to the swupdate configuration file. + + I you wish to use your own modified swupdate configuration + file specify the config file location with this option. + +config BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE + bool "install default website" + default y + help + Install the provided website to /var/www/swupdate. + + This is necessary if you want to run swupdate with the + embedded webserver and do not provide an own website to be + installed to /var/www/swupdate. +endif + +comment "swupdate needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/swupdate/swupdate.config b/buildroot/package/swupdate/swupdate.config new file mode 100644 index 0000000..0f6e961 --- /dev/null +++ b/buildroot/package/swupdate/swupdate.config @@ -0,0 +1,130 @@ +# +# Automatically generated file; DO NOT EDIT. +# Swupdate Configuration +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Swupdate Settings +# + +# +# General Configuration +# +# CONFIG_CURL is not set +# CONFIG_SYSTEMD is not set +CONFIG_SCRIPTS=y +# CONFIG_HW_COMPATIBILITY is not set +CONFIG_SW_VERSIONS_FILE="/etc/sw-versions" + +# +# Socket Paths +# +CONFIG_SOCKET_CTRL_PATH="/tmp/sockinstctrl" +CONFIG_SOCKET_PROGRESS_PATH="/tmp/swupdateprog" +CONFIG_SOCKET_REMOTE_HANDLER_DIRECTORY="/tmp/" + +# +# MTD support needs libmtd +# + +# +# Lua support needs a Lua interpreter +# +# CONFIG_FEATURE_SYSLOG is not set + +# +# Build Options +# +CONFIG_CROSS_COMPILE="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_WERROR is not set +# CONFIG_NOCLEANUP is not set + +# +# U-Boot support needs libubootenv, libz +# +CONFIG_BOOTLOADER_NONE=y +# CONFIG_BOOTLOADER_GRUB is not set + +# +# Image downloading support needs libcurl +# + +# +# Hash verification needs libssl +# + +# +# Image verification (signed images) needs libssl +# + +# +# Image encryption needs libssl +# +# CONFIG_SURICATTA is not set +CONFIG_WEBSERVER=y + +# +# Webserver Features +# +CONFIG_MONGOOSE=y + +# +# Mongoose Feature +# +CONFIG_MONGOOSEIPV6=y + +# +# SSL support needs libcrypto, libssl +# + +# +# Archival Features +# + +# +# gunzip support needs libz +# + +# +# Parser Features +# +CONFIG_LIBCONFIG=y +CONFIG_PARSERROOT="" + +# +# JSON config parser support needs json-c +# +# CONFIG_SETSWDESCRIPTION is not set + +# +# Image Handlers +# + +# +# ubivol support needs libubi +# +CONFIG_RAW=y +# CONFIG_SHELLSCRIPTHANDLER is not set + +# +# archive support needs libarchive +# + +# +# remote handler needs zeromq +# + +# +# SWU forwarder requires libcurl +# +# CONFIG_BOOTLOADERHANDLER is not set diff --git a/buildroot/package/swupdate/swupdate.hash b/buildroot/package/swupdate/swupdate.hash new file mode 100644 index 0000000..d1b69c9 --- /dev/null +++ b/buildroot/package/swupdate/swupdate.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1e15d9675cf7e23886dca7ea058498282c35679a555845dbc85ffe688f2cc681 swupdate-2017.11.tar.gz diff --git a/buildroot/package/swupdate/swupdate.mk b/buildroot/package/swupdate/swupdate.mk new file mode 100644 index 0000000..aa232e5 --- /dev/null +++ b/buildroot/package/swupdate/swupdate.mk @@ -0,0 +1,139 @@ +################################################################################ +# +# swupdate +# +################################################################################ + +SWUPDATE_VERSION = 2017.11 +SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION)) +SWUPDATE_LICENSE = GPL-2.0+, MIT, Public Domain +SWUPDATE_LICENSE_FILES = COPYING + +# swupdate bundles its own version of mongoose (version 3.8) + +ifeq ($(BR2_PACKAGE_JSON_C),y) +SWUPDATE_DEPENDENCIES += json-c +SWUPDATE_MAKE_ENV += HAVE_JSON_C=y +else +SWUPDATE_MAKE_ENV += HAVE_JSON_C=n +endif + +ifeq ($(BR2_PACKAGE_LIBARCHIVE),y) +SWUPDATE_DEPENDENCIES += libarchive +SWUPDATE_MAKE_ENV += HAVE_LIBARCHIVE=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBARCHIVE=n +endif + +ifeq ($(BR2_PACKAGE_LIBCONFIG),y) +SWUPDATE_DEPENDENCIES += libconfig +SWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBCONFIG=n +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +SWUPDATE_DEPENDENCIES += libcurl +SWUPDATE_MAKE_ENV += HAVE_LIBCURL=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBCURL=n +endif + +ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y) +SWUPDATE_DEPENDENCIES += luainterpreter host-pkgconf +# defines the base name for the pkg-config file ("lua" or "luajit") +define SWUPDATE_SET_LUA_VERSION + $(call KCONFIG_SET_OPT,CONFIG_LUAPKG,$(BR2_PACKAGE_PROVIDES_LUAINTERPRETER),$(SWUPDATE_BUILD_CONFIG)) +endef +SWUPDATE_MAKE_ENV += HAVE_LUA=y +else +SWUPDATE_MAKE_ENV += HAVE_LUA=n +endif + +ifeq ($(BR2_PACKAGE_MTD),y) +SWUPDATE_DEPENDENCIES += mtd +SWUPDATE_MAKE_ENV += HAVE_LIBMTD=y +SWUPDATE_MAKE_ENV += HAVE_LIBUBI=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBMTD=n +SWUPDATE_MAKE_ENV += HAVE_LIBUBI=n +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SWUPDATE_DEPENDENCIES += openssl +SWUPDATE_MAKE_ENV += HAVE_LIBSSL=y +SWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBSSL=n +SWUPDATE_MAKE_ENV += HAVE_LIBCRYPTO=n +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS),y) +SWUPDATE_DEPENDENCIES += uboot-tools +SWUPDATE_MAKE_ENV += HAVE_LIBUBOOTENV=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBUBOOTENV=n +endif + +ifeq ($(BR2_PACKAGE_ZEROMQ),y) +SWUPDATE_DEPENDENCIES += zeromq +SWUPDATE_MAKE_ENV += HAVE_LIBZEROMQ=y +else +SWUPDATE_MAKE_ENV += HAVE_LIBZEROMQ=n +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +SWUPDATE_DEPENDENCIES += zlib +SWUPDATE_MAKE_ENV += HAVE_ZLIB=y +else +SWUPDATE_MAKE_ENV += HAVE_ZLIB=n +endif + +SWUPDATE_BUILD_CONFIG = $(@D)/.config + +SWUPDATE_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG)) +SWUPDATE_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig + +ifeq ($(BR2_STATIC_LIBS),y) +define SWUPDATE_PREFER_STATIC + $(call KCONFIG_ENABLE_OPT,CONFIG_STATIC,$(SWUPDATE_BUILD_CONFIG)) +endef +endif + +define SWUPDATE_SET_BUILD_OPTIONS + $(call KCONFIG_SET_OPT,CONFIG_CROSS_COMPILE,"$(TARGET_CROSS)", \ + $(SWUPDATE_BUILD_CONFIG)) + $(call KCONFIG_SET_OPT,CONFIG_SYSROOT,"$(STAGING_DIR)", \ + $(SWUPDATE_BUILD_CONFIG)) + $(call KCONFIG_SET_OPT,CONFIG_EXTRA_CFLAGS,"$(TARGET_CFLAGS)", \ + $(SWUPDATE_BUILD_CONFIG)) + $(call KCONFIG_SET_OPT,CONFIG_EXTRA_LDFLAGS,"$(TARGET_LDFLAGS)", \ + $(SWUPDATE_BUILD_CONFIG)) +endef + +define SWUPDATE_KCONFIG_FIXUP_CMDS + $(SWUPDATE_PREFER_STATIC) + $(SWUPDATE_SET_BUILD_OPTIONS) + $(SWUPDATE_SET_LUA_VERSION) +endef + +define SWUPDATE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(SWUPDATE_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define SWUPDATE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/swupdate $(TARGET_DIR)/usr/bin/swupdate + $(if $(BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE), \ + mkdir -p $(TARGET_DIR)/var/www/swupdate; \ + cp -dpf $(@D)/www/* $(TARGET_DIR)/var/www/swupdate) +endef + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR2_PACKAGE_SWUPDATE)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_PACKAGE_SWUPDATE_CONFIG)),) +$(error No Swupdate configuration file specified, check your BR2_PACKAGE_SWUPDATE_CONFIG setting) +endif +endif + +$(eval $(kconfig-package)) diff --git a/buildroot/package/sylpheed/Config.in b/buildroot/package/sylpheed/Config.in new file mode 100644 index 0000000..f03ae87 --- /dev/null +++ b/buildroot/package/sylpheed/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_SYLPHEED + bool "sylpheed" + depends on BR2_PACKAGE_LIBGTK2 + help + lightweight and user-friendly e-mail client. + + http://sylpheed.sraoss.jp/en/ diff --git a/buildroot/package/sylpheed/sylpheed.hash b/buildroot/package/sylpheed/sylpheed.hash new file mode 100644 index 0000000..39c0927 --- /dev/null +++ b/buildroot/package/sylpheed/sylpheed.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 4aeb7c6436ad485a2cc101dd68a1fb84abcad4c6471ed9ddefec65e482e5b2b1 sylpheed-3.2.0.tar.bz2 diff --git a/buildroot/package/sylpheed/sylpheed.mk b/buildroot/package/sylpheed/sylpheed.mk new file mode 100644 index 0000000..14107f0 --- /dev/null +++ b/buildroot/package/sylpheed/sylpheed.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# sylpheed +# +################################################################################ + +SYLPHEED_VERSION_MAJOR = 3.2 +SYLPHEED_VERSION = $(SYLPHEED_VERSION_MAJOR).0 +SYLPHEED_SOURCE = sylpheed-$(SYLPHEED_VERSION).tar.bz2 +SYLPHEED_SITE = http://sylpheed.sraoss.jp/sylpheed/v$(SYLPHEED_VERSION_MAJOR) +SYLPHEED_LICENSE = GPL-2.0+ (executables), LGPL-2.1+ (library, attachment plugin) +SYLPHEED_LICENSE_FILES = COPYING COPYING.LIB +SYLPHEED_CONF_OPTS = --disable-gtkspell --disable-gpgme +SYLPHEED_DEPENDENCIES = host-pkgconf libgtk2 + +# Remove the -I$(includedir) from the Makefiles +# because it refers to the host /usr/include. +define SYLPHEED_PRECONFIGURE + for i in $$(find $(@D) -name "Makefile*"); do \ + sed -i 's:-I$$(includedir)::g' $$i; \ + done +endef + +SYLPHEED_PRE_CONFIGURE_HOOKS += SYLPHEED_PRECONFIGURE + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +SYLPHEED_DEPENDENCIES += openssl +SYLPHEED_CONF_OPTS += --enable-ssl +else +SYLPHEED_CONF_OPTS += --disable-ssl +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/synergy/0001-allow-building-of-synergy-without-tests.patch b/buildroot/package/synergy/0001-allow-building-of-synergy-without-tests.patch new file mode 100644 index 0000000..0c550ee --- /dev/null +++ b/buildroot/package/synergy/0001-allow-building-of-synergy-without-tests.patch @@ -0,0 +1,86 @@ +From cb6b00947ea125c3246654bb3dd3986b64e974d4 Mon Sep 17 00:00:00 2001 +From: Pieterjan Camerlynck +Date: Mon, 27 Mar 2017 21:51:59 +0200 +Subject: [PATCH] allow building of synergy without tests + +Upstream status: https://github.com/symless/synergy/pull/5943 + +Signed-off-by: Pieterjan Camerlynck +--- + CMakeLists.txt | 2 ++ + src/CMakeLists.txt | 2 +- + src/lib/synergy/KeyMap.h | 4 ++++ + src/test/unittests/synergy/KeyMapTests.cpp | 2 ++ + 4 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 94c474e..cceac45 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -39,6 +39,8 @@ endif() + # First, declare project (important for prerequisite checks). + project(synergy C CXX) + ++option(BUILD_TESTS "Override building of tests" ON) ++ + # put binaries in a different dir to make them easier to find. + set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) + set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 237ba48..96dadd2 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -50,6 +50,6 @@ add_subdirectory(lib) + add_subdirectory(cmd) + add_subdirectory(micro) + +-if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "IRIX") ++if (BUILD_TESTS AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "IRIX") + add_subdirectory(test) + endif() +diff --git a/src/lib/synergy/KeyMap.h b/src/lib/synergy/KeyMap.h +index de869e6..51e7e07 100644 +--- a/src/lib/synergy/KeyMap.h ++++ b/src/lib/synergy/KeyMap.h +@@ -24,7 +24,9 @@ + #include "common/stdset.h" + #include "common/stdvector.h" + ++#ifdef TEST_ENV + #include "gtest/gtest_prod.h" ++#endif + + namespace synergy { + +@@ -326,6 +328,7 @@ public: + + //@} + ++#ifdef TEST_ENV + private: + FRIEND_TEST(KeyMapTests, + findBestKey_requiredDown_matchExactFirstItem); +@@ -340,6 +343,7 @@ private: + FRIEND_TEST(KeyMapTests, + findBestKey_onlyOneRequiredDown_matchTwoRequiredChangesItem); + FRIEND_TEST(KeyMapTests, findBestKey_noRequiredDown_cannotMatch); ++#endif + + private: + //! Ways to synthesize a key +diff --git a/src/test/unittests/synergy/KeyMapTests.cpp b/src/test/unittests/synergy/KeyMapTests.cpp +index 1a195af..fe2a5e4 100644 +--- a/src/test/unittests/synergy/KeyMapTests.cpp ++++ b/src/test/unittests/synergy/KeyMapTests.cpp +@@ -15,6 +15,8 @@ + * along with this program. If not, see . + */ + ++#define TEST_ENV ++ + #include "synergy/KeyMap.h" + + #include "test/global/gtest.h" +-- +2.7.4 + diff --git a/buildroot/package/synergy/0002-do-not-change-output-path-when-building-in-debug.patch b/buildroot/package/synergy/0002-do-not-change-output-path-when-building-in-debug.patch new file mode 100644 index 0000000..a261b6b --- /dev/null +++ b/buildroot/package/synergy/0002-do-not-change-output-path-when-building-in-debug.patch @@ -0,0 +1,33 @@ +From 2868add1b7375ef4e2427edb85e27759c5ee226b Mon Sep 17 00:00:00 2001 +From: Pieterjan Camerlynck +Date: Fri, 31 Mar 2017 20:05:30 +0200 +Subject: [PATCH] do not change output path when building in debug + +Signed-off-by: Pieterjan Camerlynck +--- + CMakeLists.txt | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 94c474e..1080e41 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -43,15 +43,6 @@ project(synergy C CXX) + set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) + set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) + +-# for unix, put debug files in a separate bin "debug" dir. +-# release bin files should stay in the root of the bin dir. +-if (CMAKE_GENERATOR STREQUAL "Unix Makefiles") +- if (CMAKE_BUILD_TYPE STREQUAL Debug) +- set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin/debug) +- set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib/debug) +- endif() +-endif() +- + # Set some easy to type variables. + set(root_dir ${CMAKE_SOURCE_DIR}) + set(cmake_dir ${root_dir}/res) +-- +2.7.4 + diff --git a/buildroot/package/synergy/Config.in b/buildroot/package/synergy/Config.in new file mode 100644 index 0000000..3bb8b8e --- /dev/null +++ b/buildroot/package/synergy/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_SYNERGY + bool "synergy" + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXTST + help + Synergy lets you easily share a single mouse and + keyboard between multiple computers with different + operating systems, each with its own display, + without special hardware. + + https://github.com/symless/synergy/ + +comment "synergy needs a toolchain w/ C++, wchar" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR) diff --git a/buildroot/package/synergy/synergy.hash b/buildroot/package/synergy/synergy.hash new file mode 100644 index 0000000..52f9d74 --- /dev/null +++ b/buildroot/package/synergy/synergy.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 85c388f93881d741981ce3c675e840a52a76883cb2cea1da306c0c453c5d7d9b synergy-v1.8.8-stable.tar.gz diff --git a/buildroot/package/synergy/synergy.mk b/buildroot/package/synergy/synergy.mk new file mode 100644 index 0000000..76a4004 --- /dev/null +++ b/buildroot/package/synergy/synergy.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# synergy +# +################################################################################ + +SYNERGY_VERSION = v1.8.8-stable +SYNERGY_SITE = $(call github,symless,synergy,$(SYNERGY_VERSION)) +SYNERGY_LICENSE = GPL-2.0 +SYNERGY_LICENSE_FILES = LICENSE +SYNERGY_DEPENDENCIES = libcurl openssl xlib_libX11 xlib_libXtst + +ifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y) +SYNERGY_DEPENDENCIES += xlib_libXext +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +SYNERGY_DEPENDENCIES += xlib_libXi +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +SYNERGY_DEPENDENCIES += xlib_libXinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +SYNERGY_DEPENDENCIES += xlib_libXrandr +endif + +define SYNERGY_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/synergyc $(TARGET_DIR)/usr/bin/synergyc + $(INSTALL) -D -m 0755 $(@D)/bin/synergys $(TARGET_DIR)/usr/bin/synergys +endef + +$(eval $(cmake-package)) diff --git a/buildroot/package/sysdig/Config.in b/buildroot/package/sysdig/Config.in new file mode 100644 index 0000000..6ccb706 --- /dev/null +++ b/buildroot/package/sysdig/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_SYSDIG + bool "sysdig" + depends on BR2_LINUX_KERNEL + depends on BR2_INSTALL_LIBSTDCPP # libjson + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on !BR2_STATIC_LIBS # luajit + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_LUAJIT + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_JQ + select BR2_PACKAGE_LIBB64 + help + Sysdig is open source, system-level exploration: + capture system state and activity from a running Linux + instance, then save, filter and analyze. + Think of it as strace + tcpdump + lsof + awesome sauce. + With a little Lua cherry on top. + + http://sysdig.org + +comment "sysdig needs a toolchain w/ C++, gcc >= 4.8, dynamic library and a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || BR2_STATIC_LIBS + depends on BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS diff --git a/buildroot/package/sysdig/sysdig.hash b/buildroot/package/sysdig/sysdig.hash new file mode 100644 index 0000000..63a9e38 --- /dev/null +++ b/buildroot/package/sysdig/sysdig.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 480d5d8fd7e7373c08008c30bd8e2c7595d5c45d710bf07bd15a522021b560f6 sysdig-0.19.1.tar.gz diff --git a/buildroot/package/sysdig/sysdig.mk b/buildroot/package/sysdig/sysdig.mk new file mode 100644 index 0000000..a9c9f21 --- /dev/null +++ b/buildroot/package/sysdig/sysdig.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# sysdig +# +################################################################################ + +SYSDIG_VERSION = 0.19.1 +SYSDIG_SITE = $(call github,draios,sysdig,$(SYSDIG_VERSION)) +SYSDIG_LICENSE = GPL-2.0 +SYSDIG_LICENSE_FILES = COPYING +SYSDIG_CONF_OPTS = -DUSE_BUNDLED_LUAJIT=OFF -DUSE_BUNDLED_ZLIB=OFF \ + -DUSE_BUNDLED_JSONCPP=OFF -DENABLE_DKMS=OFF -DUSE_BUNDLED_CURL=OFF \ + -DUSE_BUNDLED_NCURSES=OFF -DUSE_BUNDLED_OPENSSL=OFF \ + -DUSE_BUNDLED_JQ=OFF -DUSE_BUNDLED_B64=OFF +SYSDIG_DEPENDENCIES = zlib luajit jsoncpp libcurl ncurses openssl jq libb64 +SYSDIG_SUPPORTS_IN_SOURCE_BUILD = NO + +# sysdig creates the module Makefile from a template, which contains a +# single place-holder, KBUILD_FLAGS, wich is only replaced with two +# things: +# - debug flags, which we don't care about here, +# - 'sysdig-feature' flags, which are never set, so always empty +# So, just replace the place-holder with the only meaningful value: nothing. +define SYSDIG_MODULE_GEN_MAKEFILE + $(INSTALL) -m 0644 $(@D)/driver/Makefile.in $(@D)/driver/Makefile + $(SED) 's/@KBUILD_FLAGS@//;' $(@D)/driver/Makefile + $(SED) 's/@PROBE_NAME@/sysdig-probe/;' $(@D)/driver/Makefile +endef +SYSDIG_POST_PATCH_HOOKS += SYSDIG_MODULE_GEN_MAKEFILE + +# Don't build the driver as part of the 'standard' procedure, we'll +# build it on our own with the kernel-module infra. +SYSDIG_CONF_OPTS += -DBUILD_DRIVER=OFF + +SYSDIG_MODULE_SUBDIRS = driver +SYSDIG_MODULE_MAKE_OPTS = KERNELDIR=$(LINUX_DIR) + +$(eval $(kernel-module)) +$(eval $(cmake-package)) diff --git a/buildroot/package/sysklogd/0001-Replace-deprecated-union-wait-with-int.patch b/buildroot/package/sysklogd/0001-Replace-deprecated-union-wait-with-int.patch new file mode 100644 index 0000000..d3fc0dc --- /dev/null +++ b/buildroot/package/sysklogd/0001-Replace-deprecated-union-wait-with-int.patch @@ -0,0 +1,28 @@ +From 76685540a7882926c54bc0d1a8945b7a6abffe40 Mon Sep 17 00:00:00 2001 +From: Ryan Coe +Date: Fri, 7 Oct 2016 19:42:40 -0700 +Subject: [PATCH] Replace deprecated union wait with int + +This is needed for compatibility with glibc >= 2.24. + +Signed-off-by: Ryan Coe +--- + syslogd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/syslogd.c b/syslogd.c +index ea73ea5..ace96c8 100644 +--- a/syslogd.c ++++ b/syslogd.c +@@ -2094,7 +2094,7 @@ void reapchild() + (void) signal(SIGCHLD, reapchild); /* reset signal handler -ASP */ + wait ((int *)0); + #else +- union wait status; ++ int status; + + while (wait3(&status, WNOHANG, (struct rusage *) NULL) > 0) + ; +-- +2.7.4 + diff --git a/buildroot/package/sysklogd/0002-Fix-improper-header-includes.patch b/buildroot/package/sysklogd/0002-Fix-improper-header-includes.patch new file mode 100644 index 0000000..3518ef0 --- /dev/null +++ b/buildroot/package/sysklogd/0002-Fix-improper-header-includes.patch @@ -0,0 +1,78 @@ +From 7a043f619a91fbb998863c08e3e5e94a4747b11d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Nov 2016 23:07:36 +0100 +Subject: [PATCH] Fix improper header includes + +When building with the musl C library, a number of warnings indicate +that sysklogd is directly including headers that are considered internal +to the C library: + + - Instead of including , should be included. + + - Instead of including , should be included. + + - Instead of includeing , should be included. + +Signed-off-by: Thomas Petazzoni +--- + klogd.c | 2 +- + ksym_mod.c | 2 +- + syslog.c | 2 +- + syslogd.c | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/klogd.c b/klogd.c +index 6cc80ed..a173353 100644 +--- a/klogd.c ++++ b/klogd.c +@@ -260,7 +260,7 @@ + #include + #include + #include +-#include ++#include + #include + #if !defined(__GLIBC__) + #include +diff --git a/ksym_mod.c b/ksym_mod.c +index 68cd6b6..2e69d65 100644 +--- a/ksym_mod.c ++++ b/ksym_mod.c +@@ -113,7 +113,7 @@ + #include + #include + #include +-#include ++#include + #include + #include "module.h" + #if !defined(__GLIBC__) +diff --git a/syslog.c b/syslog.c +index bdb3ff2..f96b43c 100644 +--- a/syslog.c ++++ b/syslog.c +@@ -55,7 +55,7 @@ static char sccsid[] = "@(#)syslog.c 5.28 (Berkeley) 6/27/90"; + #include + #include + #include +-#include ++#include + #include + #if 0 + #include "syslog.h" +diff --git a/syslogd.c b/syslogd.c +index ace96c8..b5e8054 100644 +--- a/syslogd.c ++++ b/syslogd.c +@@ -521,7 +521,7 @@ static char sccsid[] = "@(#)syslogd.c 5.27 (Berkeley) 10/10/88"; + #define SYSLOG_NAMES + #include + #include +-#include ++#include + #include + #include + #include +-- +2.7.4 + diff --git a/buildroot/package/sysklogd/0003-Remove-include-of-linux-time.h.patch b/buildroot/package/sysklogd/0003-Remove-include-of-linux-time.h.patch new file mode 100644 index 0000000..374d89b --- /dev/null +++ b/buildroot/package/sysklogd/0003-Remove-include-of-linux-time.h.patch @@ -0,0 +1,50 @@ +From f4926a61ba2d3766255dd996bf0315bc8fa0c528 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Nov 2016 23:09:03 +0100 +Subject: [PATCH] Remove include of + +klogd.c and ksym_mod.c currently include if GLIBC is not +defined. Unfortunately, this breaks badly with the musl C library: this +C library is not glibc so it doesn't define GLIBC, but it does have a +definition of "struct timespec" in its header file, which conflict with +the one provided by the Linux kernel headers. + +So, this commit simply gets rid of this header inclusion. + +Signed-off-by: Thomas Petazzoni +--- + klogd.c | 3 --- + ksym_mod.c | 3 --- + 2 files changed, 6 deletions(-) + +diff --git a/klogd.c b/klogd.c +index a173353..6505d96 100644 +--- a/klogd.c ++++ b/klogd.c +@@ -262,9 +262,6 @@ + #include + #include + #include +-#if !defined(__GLIBC__) +-#include +-#endif /* __GLIBC__ */ + #include + #include + #include +diff --git a/ksym_mod.c b/ksym_mod.c +index 2e69d65..6e26da1 100644 +--- a/ksym_mod.c ++++ b/ksym_mod.c +@@ -116,9 +116,6 @@ + #include + #include + #include "module.h" +-#if !defined(__GLIBC__) +-#include +-#endif /* __GLIBC__ */ + #include + #include + #include +-- +2.7.4 + diff --git a/buildroot/package/sysklogd/0004-Remove-bogus-hand-written-klogctl-syscall-implementa.patch b/buildroot/package/sysklogd/0004-Remove-bogus-hand-written-klogctl-syscall-implementa.patch new file mode 100644 index 0000000..548f160 --- /dev/null +++ b/buildroot/package/sysklogd/0004-Remove-bogus-hand-written-klogctl-syscall-implementa.patch @@ -0,0 +1,38 @@ +From fe92a7a8197241f7d6b28ea3c8214bb6d2c7fda4 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Nov 2016 23:10:55 +0100 +Subject: [PATCH] Remove bogus hand-written klogctl() syscall implementation + +The way the hand-written klogctl() syscall is written cannot compile, as +_syscall3() is just a function provided by the C library, so calling it +outside of a function doesn't build. + +Since the musl C library provides a klogctl() function, we don't need +this hand-written system call anyway. + +Signed-off-by: Thomas Petazzoni +--- + klogd.c | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/klogd.c b/klogd.c +index 6505d96..9219671 100644 +--- a/klogd.c ++++ b/klogd.c +@@ -274,13 +274,8 @@ + + #define __LIBRARY__ + #include +-#if !defined(__GLIBC__) +-# define __NR_ksyslog __NR_syslog +-_syscall3(int,ksyslog,int, type, char *, buf, int, len); +-#else + #include + #define ksyslog klogctl +-#endif + + #define LOG_BUFFER_SIZE 4096 + #define LOG_LINE_LENGTH 1000 +-- +2.7.4 + diff --git a/buildroot/package/sysklogd/0005-Add-missing-headers-for-open-flags.patch b/buildroot/package/sysklogd/0005-Add-missing-headers-for-open-flags.patch new file mode 100644 index 0000000..1a7ad84 --- /dev/null +++ b/buildroot/package/sysklogd/0005-Add-missing-headers-for-open-flags.patch @@ -0,0 +1,46 @@ +From 0dff338a704f4ad11a2b78871e1f2a0b8030b4d2 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Nov 2016 23:12:37 +0100 +Subject: [PATCH] Add missing headers for open() flags + +Both pidfile.c and syslog.c use open() and its flags, but forgets to +include all relevant headers, causing build failures with the musl C +library. + +Signed-off-by: Thomas Petazzoni +--- + pidfile.c | 2 ++ + syslog.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/pidfile.c b/pidfile.c +index e0959a0..14de56f 100644 +--- a/pidfile.c ++++ b/pidfile.c +@@ -26,8 +26,10 @@ + + #include + #include ++#include + #include + #include ++#include + #include + #include + #include +diff --git a/syslog.c b/syslog.c +index f96b43c..d09e7aa 100644 +--- a/syslog.c ++++ b/syslog.c +@@ -57,6 +57,8 @@ static char sccsid[] = "@(#)syslog.c 5.28 (Berkeley) 6/27/90"; + #include + #include + #include ++#include ++#include + #if 0 + #include "syslog.h" + #include "pathnames.h" +-- +2.7.4 + diff --git a/buildroot/package/sysklogd/0006-syslogd.c-rename-dprintf-to-mydprintf.patch b/buildroot/package/sysklogd/0006-syslogd.c-rename-dprintf-to-mydprintf.patch new file mode 100644 index 0000000..a1fb533 --- /dev/null +++ b/buildroot/package/sysklogd/0006-syslogd.c-rename-dprintf-to-mydprintf.patch @@ -0,0 +1,39 @@ +From 68213f6902d291d2ba1626fd950fd7d4a1329d33 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 28 Nov 2016 23:13:08 +0100 +Subject: [PATCH] syslogd.c: rename dprintf() to mydprintf() + +There is an existing kludge in syslogd.c to rename all dprintf() +function calls and its definition to mydprintf(). This kludge is only +applied when the glibc C library is used (i.e when GLIBC is defined), +because glibc also provides a dprintf() function, with a different +signature and behavior. + +However, the musl C library also provides the dprintf() function (with +the same signature as the one in glibc, obviously), but does not define +the GLIBC macro, causing a conflicting definition of dprintf. + +This commit fixes that by having the rename kludge used unconditionally. + +Signed-off-by: Thomas Petazzoni +--- + syslogd.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/syslogd.c b/syslogd.c +index b5e8054..22a9ed5 100644 +--- a/syslogd.c ++++ b/syslogd.c +@@ -818,9 +818,7 @@ void doexit(int sig); + void init(); + void cfline(char *line, register struct filed *f); + int decode(char *name, struct code *codetab); +-#if defined(__GLIBC__) + #define dprintf mydprintf +-#endif /* __GLIBC__ */ + static void dprintf(char *, ...); + static void allocate_log(void); + void sighup_handler(); +-- +2.7.4 + diff --git a/buildroot/package/sysklogd/Config.in b/buildroot/package/sysklogd/Config.in new file mode 100644 index 0000000..4188fb8 --- /dev/null +++ b/buildroot/package/sysklogd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_SYSKLOGD + bool "syslogd & klogd" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + System log daemons syslogd and klogd. + + http://www.infodrom.org/projects/sysklogd/ diff --git a/buildroot/package/sysklogd/S01logging b/buildroot/package/sysklogd/S01logging new file mode 100644 index 0000000..1cbfe86 --- /dev/null +++ b/buildroot/package/sysklogd/S01logging @@ -0,0 +1,25 @@ +#!/bin/sh + +case "$1" in + start) + printf "Starting logging: " + /sbin/syslogd -m 0 + /sbin/klogd + echo "OK" + ;; + stop) + printf "Stopping logging: " + [ -f /var/run/klogd.pid ] && kill `cat /var/run/klogd.pid` + [ -f /var/run/syslogd.pid ] && kill `cat /var/run/syslogd.pid` + echo "OK" + ;; + restart|reload) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/sysklogd/klogd.service b/buildroot/package/sysklogd/klogd.service new file mode 100644 index 0000000..c66795b --- /dev/null +++ b/buildroot/package/sysklogd/klogd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Kernel Log Daemon + +[Service] +ExecStart=/usr/sbin/klogd -n +StandardOutput=null +Restart=on-failure + +[Install] +WantedBy=multi-user.target +WantedBy=syslogd.service diff --git a/buildroot/package/sysklogd/sysklogd.hash b/buildroot/package/sysklogd/sysklogd.hash new file mode 100644 index 0000000..dd5b89a --- /dev/null +++ b/buildroot/package/sysklogd/sysklogd.hash @@ -0,0 +1,2 @@ +# Locally calculated from download (no sig, hash) +sha256 5166c185ae23c92e8b9feee66a6e3d0bc944bf673112f53e3ecf62e08ce7c201 sysklogd-1.5.1.tar.gz diff --git a/buildroot/package/sysklogd/sysklogd.mk b/buildroot/package/sysklogd/sysklogd.mk new file mode 100644 index 0000000..1c8259a --- /dev/null +++ b/buildroot/package/sysklogd/sysklogd.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# sysklogd +# +################################################################################ + +SYSKLOGD_VERSION = 1.5.1 +SYSKLOGD_SITE = http://www.infodrom.org/projects/sysklogd/download +SYSKLOGD_LICENSE = GPL-2.0+ +SYSKLOGD_LICENSE_FILES = COPYING + +# Override BusyBox implementations if BusyBox is enabled. +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +SYSKLOGD_DEPENDENCIES = busybox +endif + +# Override SKFLAGS which is used as CFLAGS. +define SYSKLOGD_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) SKFLAGS="$(TARGET_CFLAGS) -DSYSV" \ + -C $(@D) +endef + +define SYSKLOGD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0500 $(@D)/syslogd $(TARGET_DIR)/sbin/syslogd + $(INSTALL) -D -m 0500 $(@D)/klogd $(TARGET_DIR)/sbin/klogd + $(INSTALL) -D -m 0644 package/sysklogd/syslog.conf \ + $(TARGET_DIR)/etc/syslog.conf +endef + +define SYSKLOGD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/sysklogd/S01logging \ + $(TARGET_DIR)/etc/init.d/S01logging +endef + +define SYSKLOGD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(SYSKLOGD_PKGDIR)/syslogd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/syslogd.service + $(INSTALL) -D -m 644 $(SYSKLOGD_PKGDIR)/klogd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/klogd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/syslogd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/syslogd.service + ln -sf ../../../usr/lib/systemd/system/syslogd.service \ + $(TARGET_DIR)/etc/systemd/system/syslog.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/sysklogd/syslog.conf b/buildroot/package/sysklogd/syslog.conf new file mode 100644 index 0000000..3184139 --- /dev/null +++ b/buildroot/package/sysklogd/syslog.conf @@ -0,0 +1,7 @@ +# /etc/syslog.conf - Configuration file for syslogd + +auth,authpriv.* /var/log/auth.log +*.*;auth,authpriv.none /var/log/messages +user.* /var/log/user.log + +*.emerg * diff --git a/buildroot/package/sysklogd/syslogd.service b/buildroot/package/sysklogd/syslogd.service new file mode 100644 index 0000000..70e4cff --- /dev/null +++ b/buildroot/package/sysklogd/syslogd.service @@ -0,0 +1,13 @@ +[Unit] +Description=System Logging Service +Requires=syslog.socket +Wants=klogd.service + +[Service] +ExecStart=/usr/sbin/syslogd -m 0 -n +StandardOutput=null +Restart=on-failure + +[Install] +WantedBy=multi-user.target +Alias=syslog.service diff --git a/buildroot/package/syslog-ng/0001-modules-json-Adaptions-for-json-c-v0.13.patch b/buildroot/package/syslog-ng/0001-modules-json-Adaptions-for-json-c-v0.13.patch new file mode 100644 index 0000000..b307ab5 --- /dev/null +++ b/buildroot/package/syslog-ng/0001-modules-json-Adaptions-for-json-c-v0.13.patch @@ -0,0 +1,39 @@ +From 1b824dd6389e209eab752d5a698c6093f311e3e3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= +Date: Mon, 11 Dec 2017 15:46:06 +0100 +Subject: [PATCH] modules/json: Adaptions for json-c v0.13 + +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit 1b824dd6389e + + modules/json/json-parser.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/modules/json/json-parser.c b/modules/json/json-parser.c +index 0368ed8f7ffe..356df48b9fc7 100644 +--- a/modules/json/json-parser.c ++++ b/modules/json/json-parser.c +@@ -20,6 +20,8 @@ + * COPYING for details. + */ + ++#define JSON_C_VER_013 (13 << 8) ++ + #include "json-parser.h" + #include "dot-notation.h" + #include "scratch-buffers.h" +@@ -28,7 +30,10 @@ + #include + + #include ++ ++#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013) + #include ++#endif + + typedef struct _JSONParser + { +-- +2.15.1 + diff --git a/buildroot/package/syslog-ng/Config.in b/buildroot/package/syslog-ng/Config.in new file mode 100644 index 0000000..fbc2362 --- /dev/null +++ b/buildroot/package/syslog-ng/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_SYSLOG_NG + bool "syslog-ng" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_EVENTLOG + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_PCRE + select BR2_PACKAGE_OPENSSL + help + syslog-ng is an enhanced log daemon, supporting a wide range + of input and output methods: syslog, unstructured text, + queueing, SQL & NoSQL + + https://syslog-ng.org/ + +comment "syslog-ng needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/syslog-ng/S01logging b/buildroot/package/syslog-ng/S01logging new file mode 100644 index 0000000..d7c899a --- /dev/null +++ b/buildroot/package/syslog-ng/S01logging @@ -0,0 +1,38 @@ +#!/bin/sh + +start() { + printf "Starting syslog-ng daemon: " + start-stop-daemon -S -q -p /var/run/syslog-ng.pid \ + -x /usr/sbin/syslog-ng -- --pidfile /var/run/syslog-ng.pid + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping syslog-ng daemon: " + start-stop-daemon -K -q -p /var/run/syslog-ng.pid \ + -x /usr/sbin/syslog-ng + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +restart() { + stop + sleep 1 + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? diff --git a/buildroot/package/syslog-ng/syslog-ng.conf b/buildroot/package/syslog-ng/syslog-ng.conf new file mode 100644 index 0000000..e767255 --- /dev/null +++ b/buildroot/package/syslog-ng/syslog-ng.conf @@ -0,0 +1,16 @@ +@version: 3.10 + +source s_sys { + file("/proc/kmsg" program_override("kernel")); + unix-stream ("/dev/log"); + internal(); +}; + +destination d_all { + file("/var/log/messages"); +}; + +log { + source(s_sys); + destination(d_all); +}; diff --git a/buildroot/package/syslog-ng/syslog-ng.hash b/buildroot/package/syslog-ng/syslog-ng.hash new file mode 100644 index 0000000..d9c51e9 --- /dev/null +++ b/buildroot/package/syslog-ng/syslog-ng.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 a905fe7bad09dcf40bf03650ef1c287b511bf262d004464b8993a28ce58c9136 syslog-ng-3.10.1.tar.gz diff --git a/buildroot/package/syslog-ng/syslog-ng.mk b/buildroot/package/syslog-ng/syslog-ng.mk new file mode 100644 index 0000000..2b6f2c0 --- /dev/null +++ b/buildroot/package/syslog-ng/syslog-ng.mk @@ -0,0 +1,118 @@ +################################################################################ +# +# syslog-ng +# +################################################################################ + +# When updating the version, please check at runtime if the version in +# syslog-ng.conf header needs to be updated +SYSLOG_NG_VERSION = 3.10.1 +SYSLOG_NG_SITE = https://github.com/balabit/syslog-ng/releases/download/syslog-ng-$(SYSLOG_NG_VERSION) +SYSLOG_NG_LICENSE = LGPL-2.1+ (syslog-ng core), GPL-2.0+ (modules) +SYSLOG_NG_LICENSE_FILES = COPYING +SYSLOG_NG_DEPENDENCIES = host-bison host-flex host-pkgconf \ + eventlog libglib2 openssl pcre +# rabbit-mq needs -lrt +SYSLOG_NG_CONF_ENV = LIBS=-lrt +SYSLOG_NG_CONF_OPTS = --disable-manpages --localstatedir=/var/run \ + --disable-java --disable-java-modules --disable-mongodb + +# We override busybox's S01logging init script +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +SYSLOG_NG_DEPENDENCIES += busybox +endif + +ifeq ($(BR2_PACKAGE_GEOIP),y) +SYSLOG_NG_DEPENDENCIES += geoip +SYSLOG_NG_CONF_OPTS += --enable-geoip +else +SYSLOG_NG_CONF_OPTS += --disable-geoip +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +SYSLOG_NG_DEPENDENCIES += libcap +SYSLOG_NG_CONF_OPTS += --enable-linux-caps +else +SYSLOG_NG_CONF_OPTS += --disable-linux-caps +endif + +ifeq ($(BR2_PACKAGE_PYTHON),y) +SYSLOG_NG_DEPENDENCIES += python +SYSLOG_NG_CONF_OPTS += \ + --enable-python \ + --with-python=$(PYTHON_VERSION_MAJOR) +else ifeq ($(BR2_PACKAGE_PYTHON3),y) +SYSLOG_NG_DEPENDENCIES += python3 +SYSLOG_NG_CONF_OPTS += \ + --enable-python \ + --with-python=$(PYTHON3_VERSION_MAJOR) +else +SYSLOG_NG_CONF_OPTS += \ + --disable-python \ + --without-python +endif + +ifeq ($(BR2_PACKAGE_LIBESMTP),y) +SYSLOG_NG_DEPENDENCIES += libesmtp +SYSLOG_NG_CONF_OPTS += --enable-smtp +SYSLOG_NG_CONF_OPTS += --with-libesmtp="$(STAGING_DIR)/usr" +else +SYSLOG_NG_CONF_OPTS += --disable-smtp +endif + +ifeq ($(BR2_PACKAGE_JSON_C),y) +SYSLOG_NG_DEPENDENCIES += json-c +SYSLOG_NG_CONF_OPTS += --enable-json +else +SYSLOG_NG_CONF_OPTS += --disable-json +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +SYSLOG_NG_DEPENDENCIES += util-linux +endif + +ifeq ($(BR2_PACKAGE_LIBNET),y) +SYSLOG_NG_DEPENDENCIES += libnet +SYSLOG_NG_CONF_OPTS += \ + --with-libnet=$(STAGING_DIR)/usr/bin \ + --enable-spoof-source +else +SYSLOG_NG_CONF_OPTS += --disable-spoof-source +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +SYSLOG_NG_DEPENDENCIES += libcurl +SYSLOG_NG_CONF_OPTS += --enable-http +SYSLOG_NG_CONF_OPTS += --with-libcurl="$(STAGING_DIR)/usr" +else +SYSLOG_NG_CONF_OPTS += --disable-http +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +SYSLOG_NG_DEPENDENCIES += systemd +SYSLOG_NG_CONF_OPTS += \ + --enable-systemd \ + --with-systemdsystemunitdir=/usr/lib/systemd/system +else +SYSLOG_NG_CONF_OPTS += --disable-systemd +endif + +define SYSLOG_NG_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/syslog-ng/S01logging \ + $(TARGET_DIR)/etc/init.d/S01logging +endef + +# By default syslog-ng installs a number of sample configuration +# files. Some of these rely on optional features being +# enabled. Because of this buildroot uninstalls the shipped config +# files and provides a simplified configuration. +define SYSLOG_NG_FIXUP_CONFIG + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) scl-uninstall-local + $(INSTALL) -D -m 0644 package/syslog-ng/syslog-ng.conf \ + $(TARGET_DIR)/etc/syslog-ng.conf +endef + +SYSLOG_NG_POST_INSTALL_TARGET_HOOKS = SYSLOG_NG_FIXUP_CONFIG + +$(eval $(autotools-package)) diff --git a/buildroot/package/sysprof/0001-define-NT_GNU_BUILD_ID.patch b/buildroot/package/sysprof/0001-define-NT_GNU_BUILD_ID.patch new file mode 100644 index 0000000..dcc2cbe --- /dev/null +++ b/buildroot/package/sysprof/0001-define-NT_GNU_BUILD_ID.patch @@ -0,0 +1,22 @@ +On uclibc elf.h does not have GNU extentions but we need this define +so we define it locally if its not getting it from elf.h + +Signed-off-by: Khem Raj + +Upstream-Status: Pending + +Index: git/elfparser.h +=================================================================== +--- git.orig/elfparser.h 2011-07-16 18:57:41.000000000 -0700 ++++ git/elfparser.h 2011-07-16 20:28:54.733829895 -0700 +@@ -17,6 +17,10 @@ + */ + #include + ++#ifndef NT_GNU_BUILD_ID ++#define NT_GNU_BUILD_ID 3 ++#endif ++ + typedef struct ElfSym ElfSym; + typedef struct ElfParser ElfParser; + diff --git a/buildroot/package/sysprof/Config.in b/buildroot/package/sysprof/Config.in new file mode 100644 index 0000000..3913274 --- /dev/null +++ b/buildroot/package/sysprof/Config.in @@ -0,0 +1,31 @@ +config BR2_PACKAGE_SYSPROF + bool "sysprof" + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + depends on BR2_USE_MMU # glib2 + # In its util.h file, sysprof contains architecture-specific + # code + depends on BR2_i386 || BR2_x86_64 || BR2_powerpc || BR2_sh4a || BR2_sh4aeb + select BR2_PACKAGE_LIBGLIB2 + help + Sysprof is a statistical, system-wide profiler that can + profile user and kernel code using the perf API. + + http://sysprof.com + +if BR2_PACKAGE_SYSPROF + +config BR2_PACKAGE_SYSPROF_GUI + bool "sysprof GUI" + depends on BR2_PACKAGE_LIBGTK2 + select BR2_PACKAGE_LIBGLADE + select BR2_PACKAGE_GDK_PIXBUF + help + GUI for the sysprof system-wide statistical profiler. + +endif + +comment "sysprof needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_i386 || BR2_x86_64 || BR2_powerpc || BR2_sh4a || BR2_sh4aeb + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/sysprof/sysprof.hash b/buildroot/package/sysprof/sysprof.hash new file mode 100644 index 0000000..8541ecc --- /dev/null +++ b/buildroot/package/sysprof/sysprof.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 baf03c6fc01a845c705873e6fc7927aa89539dcda6963f9ec4c8eb4c086a64f1 sysprof-1.2.0.tar.gz diff --git a/buildroot/package/sysprof/sysprof.mk b/buildroot/package/sysprof/sysprof.mk new file mode 100644 index 0000000..033194a --- /dev/null +++ b/buildroot/package/sysprof/sysprof.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# sysprof +# +################################################################################ + +SYSPROF_VERSION = 1.2.0 +SYSPROF_SITE = http://sysprof.com +SYSPROF_DEPENDENCIES = libglib2 +SYSPROF_LICENSE = GPL-2.0+ +SYSPROF_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_SYSPROF_GUI),y) +SYSPROF_DEPENDENCIES += libgtk2 libglade gdk-pixbuf +endif + +define SYSPROF_CREATE_M4_DIR + mkdir -p $(@D)/m4 +endef + +SYSPROF_POST_PATCH_HOOKS += SYSPROF_CREATE_M4_DIR + +$(eval $(autotools-package)) diff --git a/buildroot/package/sysstat/Config.in b/buildroot/package/sysstat/Config.in new file mode 100644 index 0000000..442b787 --- /dev/null +++ b/buildroot/package/sysstat/Config.in @@ -0,0 +1,39 @@ +config BR2_PACKAGE_SYSSTAT + bool "sysstat" + depends on BR2_USE_MMU # fork() + help + The sysstat utilities are a collection of performance + monitoring tools for Linux. These include sar, sadf, mpstat, + iostat, pidstat and sa tools. + + Some Features : + + * Input / Output and transfer rate statistics (global, per + device, per partition, per network filesystem and per + Linux task / PID) + * CPU statistics (global, per CPU and per Linux task / + PID), including support for virtualization architectures + * Memory and swap space utilization statistics + * Virtual memory, paging and fault statistics + * Per-task (per-PID) memory and page fault statistics + * Global CPU and page fault statistics for tasks and all + their children + * Process creation activity + * Interrupt statistics (global, per CPU and per interrupt, + including potential APIC interrupt sources) + * Extensive network statistics: network interface activity + (number of packets and kB received and transmitted per + second, etc.) including failures from network devices; + network traffic statistics for IP, TCP, ICMP and UDP + protocols based on SNMPv2 standards; support for + IPv6-related protocols. + * NFS server and client activity + * Socket statistics + * Run queue and system load statistics + * Kernel internal tables utilization statistics + * System and per Linux task switching activity + * Swapping statistics + * TTY device activity + * Power management statistics + + http://pagesperso-orange.fr/sebastien.godard/ diff --git a/buildroot/package/sysstat/sysstat.hash b/buildroot/package/sysstat/sysstat.hash new file mode 100644 index 0000000..a356310 --- /dev/null +++ b/buildroot/package/sysstat/sysstat.hash @@ -0,0 +1,5 @@ +# From: http://sebastien.godard.pagesperso-orange.fr/download.html +sha1 2eb3d20016084c9e6ff94c9b2f3b2ada7e8d26c6 sysstat-11.6.1.tar.xz +# Locally calculated +sha256 4b2a2cfa8c8fe6ae0155e168ed9a7066caebc3ecb903b0e64a9ede28ecb68fcb sysstat-11.6.1.tar.xz +sha256 db296f2f7f35bca3a174efb0eb392b3b17bd94b341851429a3dff411b1c2fc73 COPYING diff --git a/buildroot/package/sysstat/sysstat.mk b/buildroot/package/sysstat/sysstat.mk new file mode 100644 index 0000000..bdc0610 --- /dev/null +++ b/buildroot/package/sysstat/sysstat.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# sysstat +# +################################################################################ + +SYSSTAT_VERSION = 11.6.1 +SYSSTAT_SOURCE = sysstat-$(SYSSTAT_VERSION).tar.xz +SYSSTAT_SITE = http://pagesperso-orange.fr/sebastien.godard +SYSSTAT_CONF_OPTS = --disable-file-attr --disable-sensors +SYSSTAT_DEPENDENCIES = host-gettext $(TARGET_NLS_DEPENDENCIES) +SYSSTAT_LICENSE = GPL-2.0+ +SYSSTAT_LICENSE_FILES = COPYING +SYSSTAT_MAKE_OPTS += LFLAGS="$(TARGET_LDFLAGS) $(TARGET_NLS_LIBS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/systemd-bootchart/Config.in b/buildroot/package/systemd-bootchart/Config.in new file mode 100644 index 0000000..8deb6b9 --- /dev/null +++ b/buildroot/package/systemd-bootchart/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_SYSTEMD_BOOTCHART + bool "systemd-bootchart" + depends on BR2_INIT_SYSTEMD + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + help + systemd-bootchart is a tool, usually run at system startup, + that collects the CPU load, disk load, memory usage, as well + as per-process information from a running system. Collected + results are output as an SVG graph. + + systemd-bootchart requires a Linux kernel >= 3.0 with the + following options enabled: + + - CONFIG_SCHEDSTATS + - CONFIG_SCHED_DEBUG + + These options will be automatically enabled by Buildroot if + it is responsible for building the kernel. Otherwise, if you + are building your kernel outside of Buildroot, make sure + these options are enabled. + + http://www.freedesktop.org/software/systemd/man/systemd-bootchart.html + +comment "systemd-bootchart needs a toolchain w/ headers >= 3.17" + depends on BR2_INIT_SYSTEMD + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 diff --git a/buildroot/package/systemd-bootchart/systemd-bootchart.hash b/buildroot/package/systemd-bootchart/systemd-bootchart.hash new file mode 100644 index 0000000..40643db --- /dev/null +++ b/buildroot/package/systemd-bootchart/systemd-bootchart.hash @@ -0,0 +1,2 @@ +# sha256 locally computed +sha256 f4cb17b21928e36ec27de5c5294dea6ec1de4acd7ee6c56d6ecc75319cbcaefa systemd-bootchart-233.tar.xz diff --git a/buildroot/package/systemd-bootchart/systemd-bootchart.mk b/buildroot/package/systemd-bootchart/systemd-bootchart.mk new file mode 100644 index 0000000..bcc3dbe --- /dev/null +++ b/buildroot/package/systemd-bootchart/systemd-bootchart.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# systemd-bootchart +# +################################################################################ + +SYSTEMD_BOOTCHART_VERSION = 233 +SYSTEMD_BOOTCHART_SOURCE = systemd-bootchart-$(SYSTEMD_BOOTCHART_VERSION).tar.xz +# Do not use the github helper here: the uploaded release tarball already +# contains the generated autotools scripts. It also slightly differs with +# two missing source files... :-/ +SYSTEMD_BOOTCHART_SITE = https://github.com/systemd/systemd-bootchart/releases/download/v$(SYSTEMD_BOOTCHART_VERSION) +SYSTEMD_BOOTCHART_LICENSE = LGPL-2.1+ +SYSTEMD_BOOTCHART_LICENSE_FILES = LICENSE.LGPL2.1 +SYSTEMD_BOOTCHART_DEPENDENCIES = systemd + +SYSTEMD_BOOTCHART_CONF_OPTS = --disable-man + +$(eval $(autotools-package)) diff --git a/buildroot/package/systemd/0001-fix-getty-unit.patch b/buildroot/package/systemd/0001-fix-getty-unit.patch new file mode 100644 index 0000000..b694762 --- /dev/null +++ b/buildroot/package/systemd/0001-fix-getty-unit.patch @@ -0,0 +1,48 @@ +From 7deb6387aeb07fa4300fa3cf9d6c039dabd120d7 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard +Date: Mon, 31 Jul 2017 10:08:46 -0400 +Subject: [PATCH] fix-getty-unit + +Prefer getty to agetty in console setup systemd units + +Signed-off-by: Maxime Ripard +Signed-off-by: Eric Le Bihan +[aduskett@gmail.com: Update for systemd v237] +Signed-off-by: Adam Duskett +--- + units/getty@.service.m4 | 5 +---- + units/serial-getty@.service.m4 | 2 +- + 2 files changed, 2 insertions(+), 5 deletions(-) + +diff --git a/units/getty@.service.m4 b/units/getty@.service.m4 +index 2a84061..7ad588f 100644 +--- a/units/getty@.service.m4 ++++ b/units/getty@.service.m4 +@@ -35,10 +35,7 @@ ConditionPathExists=/dev/tty0 + + [Service] + # the VT is cleared by TTYVTDisallocate +-# The '-o' option value tells agetty to replace 'login' arguments with an +-# option to preserve environment (-p), followed by '--' for safety, and then +-# the entered username. +-ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM ++ExecStart=-/sbin/getty -L %I 115200 vt100 + Type=idle + Restart=always + RestartSec=0 +diff --git a/units/serial-getty@.service.m4 b/units/serial-getty@.service.m4 +index b7caeaf..c663612 100644 +--- a/units/serial-getty@.service.m4 ++++ b/units/serial-getty@.service.m4 +@@ -33,7 +33,7 @@ Before=rescue.service + # The '-o' option value tells agetty to replace 'login' arguments with an + # option to preserve environment (-p), followed by '--' for safety, and then + # the entered username. +-ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 %I $TERM ++ExecStart=-/sbin/getty -L %I 115200 vt100 + Type=idle + Restart=always + UtmpIdentifier=%I +-- +2.13.3 + diff --git a/buildroot/package/systemd/0002-install-don-t-use-ln-relative.patch b/buildroot/package/systemd/0002-install-don-t-use-ln-relative.patch new file mode 100644 index 0000000..61a139e --- /dev/null +++ b/buildroot/package/systemd/0002-install-don-t-use-ln-relative.patch @@ -0,0 +1,80 @@ +From 17560d52e9ec0afebbfe31e694870c6433b36f60 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Sun, 31 Dec 2017 12:46:04 -0500 +Subject: [PATCH] install: don't use ln --relative + +Oldish enterprise-class distributions have too old versions of +coreutils, with ln not supporting --relative. + +So we fake it. + +ln --relative would create minimalist relative paths, but they are not +trivial to generate. Instead, we always create paths relative to the +root, i.e.: + + ln -s --relative /usr/bin/foo /usr/sbin/foo + +would create: /usr/sbin/foo -> ../bin/foo +while we do : /usr/sbin/foo -> ../../usr/bin/foo + +Signed-off-by: "Yann E. MORIN" +[aduskett@gmail.com: Added meson.build section and dirname wrapper in add-wants] +[aduskett@gmail.com: Update for systemd v237] +Signed-off-by: Adam Duskett +[tpiepho@impinj.com: Fix add-wants wrapper] +Signed-off-by: Trent Piepho +--- + meson.build | 2 +- + tools/meson-make-symlink.sh | 3 ++- + units/meson-add-wants.sh | 6 ++++-- + 3 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/meson.build b/meson.build +index d4af95a44..d75f2b34c 100644 +--- a/meson.build ++++ b/meson.build +@@ -586,7 +586,7 @@ endforeach + conf.set_quoted('TELINIT', get_option('telinit-path')) + + if run_command('ln', '--relative', '--help').returncode() != 0 +- error('ln does not support --relative') ++ message('ln does not support --relative') + endif + + ############################################################ +diff --git a/tools/meson-make-symlink.sh b/tools/meson-make-symlink.sh +index 501cd43d4..25e7f89fd 100755 +--- a/tools/meson-make-symlink.sh ++++ b/tools/meson-make-symlink.sh +@@ -8,5 +8,6 @@ mkdir -vp "$(dirname "${DESTDIR:-}$2")" + if [ "$(dirname $1)" = . ]; then + ln -vfs -T "$1" "${DESTDIR:-}$2" + else +- ln -vfs -T --relative "${DESTDIR:-}$1" "${DESTDIR:-}$2" ++ dds="$( dirname "$2" |sed -r -e 's:/+[^/]+:../:g; s:/$::' )" ++ ln -vfs -T "${dds}$1" "${DESTDIR:-}$2" + fi +diff --git a/units/meson-add-wants.sh b/units/meson-add-wants.sh +index 70f7172ae..bb8155075 100755 +--- a/units/meson-add-wants.sh ++++ b/units/meson-add-wants.sh +@@ -14,7 +14,7 @@ case "$target" in + ;; + esac + +-unitpath="${DESTDIR:-}${unitdir}/${unit}" ++unitpath="${unitdir}/${unit}" + + case "$target" in + */) +@@ -25,4 +25,6 @@ case "$target" in + ;; + esac + +-ln -vfs --relative "$unitpath" "$dir" ++[ ! -d "${dir}" ] && linkdir=`dirname "${dir}"` || linkdir="${dir}" ++dds="$(printf "%s" "${linkdir#${DESTDIR:-}}" |sed -r -e 's:/+[^/]+:../:g; s:/$::')" ++ln -vfs "$dds$unitpath" "$dir" +-- +2.14.3 + diff --git a/buildroot/package/systemd/0003-fix-am-path-libgcrypt-no-found.patch b/buildroot/package/systemd/0003-fix-am-path-libgcrypt-no-found.patch new file mode 100644 index 0000000..1861a42 --- /dev/null +++ b/buildroot/package/systemd/0003-fix-am-path-libgcrypt-no-found.patch @@ -0,0 +1,159 @@ +From cb47c1da9c4a8f69662f9c17497aeeb8a922d41a Mon Sep 17 00:00:00 2001 +From: Eric Le Bihan +Date: Fri, 28 Jul 2017 07:13:51 -0400 +Subject: [PATCH] Fix AM_PATH_LIBGCRYPT not found + +This patch installs a copy of libgcrypt.m4 from the libgcrypt source tarball +to systemd m4 directory. + +Libgcrypt uses a custom m4 macro and not pkg-config to check if the +development files are available. Though libgcrypt support is optional in +systemd, this macro should be available whenever autoreconf is used, otherwise +the re-configuration will fail with: + + configure.ac:616: warning: macro 'AM_PATH_LIBGCRYPT' not found in library + +As asking the user to install the development package of libgcrypt on the host +machine or adding libgcrypt as a build dependency to systemd is not +acceptable, the required file is added to the m4 directory. + +Signed-off-by: Eric Le Bihan +[Adam: Refresh for 234] +Signed-off-by: Adam Duskett +--- + m4/libgcrypt.m4 | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 123 insertions(+) + create mode 100644 m4/libgcrypt.m4 + +diff --git a/m4/libgcrypt.m4 b/m4/libgcrypt.m4 +new file mode 100644 +index 0000000..831dc0c +--- /dev/null ++++ b/m4/libgcrypt.m4 +@@ -0,0 +1,123 @@ ++dnl Autoconf macros for libgcrypt ++dnl Copyright (C) 2002, 2004 Free Software Foundation, Inc. ++dnl ++dnl This file is free software; as a special exception the author gives ++dnl unlimited permission to copy and/or distribute it, with or without ++dnl modifications, as long as this notice is preserved. ++dnl ++dnl This file is distributed in the hope that it will be useful, but ++dnl WITHOUT ANY WARRANTY, to the extent permitted by law; without even the ++dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++ ++ ++dnl AM_PATH_LIBGCRYPT([MINIMUM-VERSION, ++dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]]) ++dnl Test for libgcrypt and define LIBGCRYPT_CFLAGS and LIBGCRYPT_LIBS. ++dnl MINIMUN-VERSION is a string with the version number optionalliy prefixed ++dnl with the API version to also check the API compatibility. Example: ++dnl a MINIMUN-VERSION of 1:1.2.5 won't pass the test unless the installed ++dnl version of libgcrypt is at least 1.2.5 *and* the API number is 1. Using ++dnl this features allows to prevent build against newer versions of libgcrypt ++dnl with a changed API. ++dnl ++AC_DEFUN([AM_PATH_LIBGCRYPT], ++[ AC_ARG_WITH(libgcrypt-prefix, ++ AC_HELP_STRING([--with-libgcrypt-prefix=PFX], ++ [prefix where LIBGCRYPT is installed (optional)]), ++ libgcrypt_config_prefix="$withval", libgcrypt_config_prefix="") ++ if test x$libgcrypt_config_prefix != x ; then ++ if test x${LIBGCRYPT_CONFIG+set} != xset ; then ++ LIBGCRYPT_CONFIG=$libgcrypt_config_prefix/bin/libgcrypt-config ++ fi ++ fi ++ ++ AC_PATH_TOOL(LIBGCRYPT_CONFIG, libgcrypt-config, no) ++ tmp=ifelse([$1], ,1:1.2.0,$1) ++ if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then ++ req_libgcrypt_api=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\1/'` ++ min_libgcrypt_version=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\2/'` ++ else ++ req_libgcrypt_api=0 ++ min_libgcrypt_version="$tmp" ++ fi ++ ++ AC_MSG_CHECKING(for LIBGCRYPT - version >= $min_libgcrypt_version) ++ ok=no ++ if test "$LIBGCRYPT_CONFIG" != "no" ; then ++ req_major=`echo $min_libgcrypt_version | \ ++ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'` ++ req_minor=`echo $min_libgcrypt_version | \ ++ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'` ++ req_micro=`echo $min_libgcrypt_version | \ ++ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'` ++ libgcrypt_config_version=`$LIBGCRYPT_CONFIG --version` ++ major=`echo $libgcrypt_config_version | \ ++ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'` ++ minor=`echo $libgcrypt_config_version | \ ++ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'` ++ micro=`echo $libgcrypt_config_version | \ ++ sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/'` ++ if test "$major" -gt "$req_major"; then ++ ok=yes ++ else ++ if test "$major" -eq "$req_major"; then ++ if test "$minor" -gt "$req_minor"; then ++ ok=yes ++ else ++ if test "$minor" -eq "$req_minor"; then ++ if test "$micro" -ge "$req_micro"; then ++ ok=yes ++ fi ++ fi ++ fi ++ fi ++ fi ++ fi ++ if test $ok = yes; then ++ AC_MSG_RESULT([yes ($libgcrypt_config_version)]) ++ else ++ AC_MSG_RESULT(no) ++ fi ++ if test $ok = yes; then ++ # If we have a recent libgcrypt, we should also check that the ++ # API is compatible ++ if test "$req_libgcrypt_api" -gt 0 ; then ++ tmp=`$LIBGCRYPT_CONFIG --api-version 2>/dev/null || echo 0` ++ if test "$tmp" -gt 0 ; then ++ AC_MSG_CHECKING([LIBGCRYPT API version]) ++ if test "$req_libgcrypt_api" -eq "$tmp" ; then ++ AC_MSG_RESULT([okay]) ++ else ++ ok=no ++ AC_MSG_RESULT([does not match. want=$req_libgcrypt_api got=$tmp]) ++ fi ++ fi ++ fi ++ fi ++ if test $ok = yes; then ++ LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags` ++ LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs` ++ ifelse([$2], , :, [$2]) ++ if test x"$host" != x ; then ++ libgcrypt_config_host=`$LIBGCRYPT_CONFIG --host 2>/dev/null || echo none` ++ if test x"$libgcrypt_config_host" != xnone ; then ++ if test x"$libgcrypt_config_host" != x"$host" ; then ++ AC_MSG_WARN([[ ++*** ++*** The config script $LIBGCRYPT_CONFIG was ++*** built for $libgcrypt_config_host and thus may not match the ++*** used host $host. ++*** You may want to use the configure option --with-libgcrypt-prefix ++*** to specify a matching config script. ++***]]) ++ fi ++ fi ++ fi ++ else ++ LIBGCRYPT_CFLAGS="" ++ LIBGCRYPT_LIBS="" ++ ifelse([$3], , :, [$3]) ++ fi ++ AC_SUBST(LIBGCRYPT_CFLAGS) ++ AC_SUBST(LIBGCRYPT_LIBS) ++]) +-- +2.13.3 + diff --git a/buildroot/package/systemd/0004-core-dont-include-libmount-h-in-a-header-file.patch b/buildroot/package/systemd/0004-core-dont-include-libmount-h-in-a-header-file.patch new file mode 100644 index 0000000..b91d097 --- /dev/null +++ b/buildroot/package/systemd/0004-core-dont-include-libmount-h-in-a-header-file.patch @@ -0,0 +1,75 @@ +From 227b8a762fea1458547be2cdf0e6e4aac0079730 Mon Sep 17 00:00:00 2001 +From: Michael Olbrich +Date: Mon, 26 Mar 2018 17:34:53 +0200 +Subject: [PATCH] core: don't include libmount.h in a header file (#8580) + +linux/fs.h sys/mount.h, libmount.h and missing.h all include MS_* +definitions. + +To avoid problems, only one of linux/fs.h, sys/mount.h and libmount.h +should be included. And missing.h must be included last. + +Without this, building systemd may fail with: + +In file included from [...]/libmount/libmount.h:31:0, + from ../systemd-238/src/core/manager.h:23, + from ../systemd-238/src/core/emergency-action.h:37, + from ../systemd-238/src/core/unit.h:34, + from ../systemd-238/src/core/dbus-timer.h:25, + from ../systemd-238/src/core/timer.c:26: +[...]/sys/mount.h:57:2: error: expected identifier before numeric constant + +Upstream: https://github.com/systemd/systemd/pull/8580 +Signed-off-by: Stefan Becker +--- + src/core/dbus-execute.c | 1 + + src/core/manager.h | 3 ++- + src/core/mount.c | 2 ++ + 3 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c +index 7344623ebf6..c342093bca4 100644 +--- a/src/core/dbus-execute.c ++++ b/src/core/dbus-execute.c +@@ -18,6 +18,7 @@ + along with systemd; If not, see . + ***/ + ++#include + #include + #include + +diff --git a/src/core/manager.h b/src/core/manager.h +index 28c5da225b1..e09e0cdf5e9 100644 +--- a/src/core/manager.h ++++ b/src/core/manager.h +@@ -20,7 +20,6 @@ + along with systemd; If not, see . + ***/ + +-#include + #include + #include + +@@ -34,6 +33,8 @@ + #include "list.h" + #include "ratelimit.h" + ++struct libmnt_monitor; ++ + /* Enforce upper limit how many names we allow */ + #define MANAGER_MAX_NAMES 131072 /* 128K */ + +diff --git a/src/core/mount.c b/src/core/mount.c +index 0e755da5c02..0154ebda5d6 100644 +--- a/src/core/mount.c ++++ b/src/core/mount.c +@@ -23,6 +23,8 @@ + #include + #include + ++#include ++ + #include "sd-messages.h" + + #include "alloc-util.h" diff --git a/buildroot/package/systemd/0005-basic-macros-rename-noreturn.patch b/buildroot/package/systemd/0005-basic-macros-rename-noreturn.patch new file mode 100644 index 0000000..6cd8470 --- /dev/null +++ b/buildroot/package/systemd/0005-basic-macros-rename-noreturn.patch @@ -0,0 +1,201 @@ +From 848e863acc51ecfb0f3955c498874588201d9130 Mon Sep 17 00:00:00 2001 +From: Franck Bui +Date: Thu, 15 Mar 2018 06:23:46 +0100 +Subject: [PATCH] basic/macros: rename noreturn into _noreturn_ (#8456) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +"noreturn" is reserved and can be used in other header files we include: + + [ 16s] In file included from /usr/include/gcrypt.h:30:0, + [ 16s] from ../src/journal/journal-file.h:26, + [ 16s] from ../src/journal/journal-vacuum.c:31: + [ 16s] /usr/include/gpg-error.h:1544:46: error: expected ‘,’ or ‘;’ before ‘)’ token + [ 16s] void gpgrt_log_bug (const char *fmt, ...) GPGRT_ATTR_NR_PRINTF(1,2); + +Here we include grcrypt.h (which in turns include gpg-error.h) *after* we +"noreturn" was defined in macro.h. + +Upstream: https://github.com/systemd/systemd/pull/8456 +Signed-off-by: Stefan Becker +--- + src/basic/log.c | 4 ++-- + src/basic/log.h | 4 ++-- + src/basic/macro.h | 19 +++++++++---------- + src/basic/process-util.c | 2 +- + src/basic/process-util.h | 2 +- + src/core/main.c | 4 ++-- + src/journal/test-journal-interleaving.c | 2 +- + src/shared/pager.c | 2 +- + src/udev/collect/collect.c | 2 +- + 9 files changed, 20 insertions(+), 21 deletions(-) + +diff --git a/src/basic/log.c b/src/basic/log.c +index 7a7f2cbec13..16a2431c548 100644 +--- a/src/basic/log.c ++++ b/src/basic/log.c +@@ -814,7 +814,7 @@ static void log_assert( + log_dispatch_internal(level, 0, file, line, func, NULL, NULL, NULL, NULL, buffer); + } + +-noreturn void log_assert_failed_realm( ++_noreturn_ void log_assert_failed_realm( + LogRealm realm, + const char *text, + const char *file, +@@ -826,7 +826,7 @@ noreturn void log_assert_failed_realm( + abort(); + } + +-noreturn void log_assert_failed_unreachable_realm( ++_noreturn_ void log_assert_failed_unreachable_realm( + LogRealm realm, + const char *text, + const char *file, +diff --git a/src/basic/log.h b/src/basic/log.h +index efcf0f1bfc1..314be128a23 100644 +--- a/src/basic/log.h ++++ b/src/basic/log.h +@@ -186,7 +186,7 @@ int log_dump_internal( + char *buffer); + + /* Logging for various assertions */ +-noreturn void log_assert_failed_realm( ++_noreturn_ void log_assert_failed_realm( + LogRealm realm, + const char *text, + const char *file, +@@ -195,7 +195,7 @@ noreturn void log_assert_failed_realm( + #define log_assert_failed(text, ...) \ + log_assert_failed_realm(LOG_REALM, (text), __VA_ARGS__) + +-noreturn void log_assert_failed_unreachable_realm( ++_noreturn_ void log_assert_failed_unreachable_realm( + LogRealm realm, + const char *text, + const char *file, +diff --git a/src/basic/macro.h b/src/basic/macro.h +index 95be63a2040..8911edfc4be 100644 +--- a/src/basic/macro.h ++++ b/src/basic/macro.h +@@ -53,6 +53,15 @@ + #else + #define _fallthrough_ + #endif ++/* Define C11 noreturn without and even on older gcc ++ * compiler versions */ ++#ifndef _noreturn_ ++#if __STDC_VERSION__ >= 201112L ++#define _noreturn_ _Noreturn ++#else ++#define _noreturn_ __attribute__((noreturn)) ++#endif ++#endif + + /* Temporarily disable some warnings */ + #define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT \ +@@ -414,16 +423,6 @@ static inline unsigned long ALIGN_POWER2(unsigned long u) { + #endif + #endif + +-/* Define C11 noreturn without and even on older gcc +- * compiler versions */ +-#ifndef noreturn +-#if __STDC_VERSION__ >= 201112L +-#define noreturn _Noreturn +-#else +-#define noreturn __attribute__((noreturn)) +-#endif +-#endif +- + #define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func) \ + static inline void func##p(type *p) { \ + if (*p) \ +diff --git a/src/basic/process-util.c b/src/basic/process-util.c +index aa9846db5dc..e6120af5b68 100644 +--- a/src/basic/process-util.c ++++ b/src/basic/process-util.c +@@ -987,7 +987,7 @@ bool is_main_thread(void) { + return cached > 0; + } + +-noreturn void freeze(void) { ++_noreturn_ void freeze(void) { + + log_close(); + +diff --git a/src/basic/process-util.h b/src/basic/process-util.h +index 93029e36e5f..5170adec7bb 100644 +--- a/src/basic/process-util.h ++++ b/src/basic/process-util.h +@@ -91,7 +91,7 @@ int pid_from_same_root_fs(pid_t pid); + + bool is_main_thread(void); + +-noreturn void freeze(void); ++_noreturn_ void freeze(void); + + bool oom_score_adjust_is_valid(int oa); + +diff --git a/src/core/main.c b/src/core/main.c +index 076846a41c0..4b2d1492373 100644 +--- a/src/core/main.c ++++ b/src/core/main.c +@@ -141,7 +141,7 @@ static uint64_t arg_default_tasks_max = UINT64_MAX; + static sd_id128_t arg_machine_id = {}; + static EmergencyAction arg_cad_burst_action = EMERGENCY_ACTION_REBOOT_FORCE; + +-noreturn static void freeze_or_reboot(void) { ++_noreturn_ static void freeze_or_reboot(void) { + + if (arg_crash_reboot) { + log_notice("Rebooting in 10s..."); +@@ -156,7 +156,7 @@ noreturn static void freeze_or_reboot(void) { + freeze(); + } + +-noreturn static void crash(int sig) { ++_noreturn_ static void crash(int sig) { + struct sigaction sa; + pid_t pid; + +diff --git a/src/journal/test-journal-interleaving.c b/src/journal/test-journal-interleaving.c +index 5a88b2774fa..d87bdbdd32a 100644 +--- a/src/journal/test-journal-interleaving.c ++++ b/src/journal/test-journal-interleaving.c +@@ -37,7 +37,7 @@ + + static bool arg_keep = false; + +-noreturn static void log_assert_errno(const char *text, int error, const char *file, int line, const char *func) { ++_noreturn_ static void log_assert_errno(const char *text, int error, const char *file, int line, const char *func) { + log_internal(LOG_CRIT, error, file, line, func, + "'%s' failed at %s:%u (%s): %m", text, file, line, func); + abort(); +diff --git a/src/shared/pager.c b/src/shared/pager.c +index 75db3c985bd..681af9c40e3 100644 +--- a/src/shared/pager.c ++++ b/src/shared/pager.c +@@ -47,7 +47,7 @@ static int stored_stderr = -1; + static bool stdout_redirected = false; + static bool stderr_redirected = false; + +-noreturn static void pager_fallback(void) { ++_noreturn_ static void pager_fallback(void) { + int r; + + r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (uint64_t) -1, 0); +diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c +index 2821640e93b..c8fa47b3d7d 100644 +--- a/src/udev/collect/collect.c ++++ b/src/udev/collect/collect.c +@@ -58,7 +58,7 @@ static inline struct _mate *node_to_mate(struct udev_list_node *node) + return container_of(node, struct _mate, node); + } + +-noreturn static void sig_alrm(int signo) ++_noreturn_ static void sig_alrm(int signo) + { + exit(4); + } diff --git a/buildroot/package/systemd/Config.in b/buildroot/package/systemd/Config.in new file mode 100644 index 0000000..7b613df --- /dev/null +++ b/buildroot/package/systemd/Config.in @@ -0,0 +1,330 @@ +config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS + bool + # see src/shared/architecture.h + default y if BR2_arm || BR2_armeb || BR2_i386 || BR2_mips || \ + BR2_mipsel || BR2_powerpc || BR2_powerpc64 || \ + BR2_powerpc64le || BR2_sh4 || BR2_sh4eb || \ + BR2_sh4a || BR2_sh4aeb || BR2_sparc || BR2_x86_64 || \ + BR2_aarch64 || BR2_m68k + +menuconfig BR2_PACKAGE_SYSTEMD + bool "systemd" + depends on BR2_INIT_SYSTEMD + depends on !BR2_STATIC_LIBS # kmod + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus + depends on BR2_USE_MMU # dbus + select BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_DBUS # runtime dependency only + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_BINARIES + select BR2_PACKAGE_UTIL_LINUX_MOUNT + select BR2_PACKAGE_UTIL_LINUX_NOLOGIN + select BR2_PACKAGE_UTIL_LINUX_FSCK + select BR2_PACKAGE_KMOD + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # kmod-tools + select BR2_PACKAGE_KMOD_TOOLS + select BR2_TARGET_TZ_INFO + select BR2_NEEDS_HOST_UTF8_LOCALE + help + systemd is a system and service manager for Linux, + compatible with SysV and LSB init scripts. systemd provides + aggressive parallelization capabilities, uses socket and + D-Bus activation for starting services, offers on-demand + starting of daemons, keeps track of processes using Linux + cgroups, supports snapshotting and restoring of the system + state, maintains mount and automount points and implements + an elaborate transactional dependency-based service control + logic. It can work as a drop-in replacement for sysvinit. + + Systemd requires a Linux kernel >= 3.0 with the following + options enabled: + + - CONFIG_CGROUPS + - CONFIG_INOTIFY_USER + - CONFIG_FHANDLE + - CONFIG_AUTOFS4_FS + - CONFIG_TMPFS_POSIX_ACL + - CONFIG_TMPFS_XATTR + + These options will be automatically enabled by Buildroot if + it is responsible for building the kernel. Otherwise, if you + are building your kernel outside of Buildroot, make sure + these options are enabled. + + Systemd also provides udev, the userspace device daemon. + + The selection of other packages will enable some features: + + - acl package will add support for multi-seat. + - xz and/or l4 packages will add compression support in + journal and coredump. + - libcurl package will add support for systemd-journal-upload. + - libgcrypt package will add support for journal sealing and + DNSSEC verification in resolved. + + Notice that systemd selects the fsck wrapper from util-linux + but no particular fsck. is selected. You must choose + the apropriate ones (e.g. e2fsck, from the e2fsprogs + package) according to the system configuration. + + http://freedesktop.org/wiki/Software/systemd + +if BR2_PACKAGE_SYSTEMD + +config BR2_PACKAGE_PROVIDES_UDEV + default "systemd" + +config BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY + bool "HTTP server for journal events" + select BR2_PACKAGE_LIBMICROHTTPD + help + systemd-journal-gatewayd serves journal events over the + network. Clients must connect using HTTP. The server + listens on port 19531 by default. + + http://www.freedesktop.org/software/systemd/man/systemd-journal-gatewayd.service.html + +config BR2_PACKAGE_SYSTEMD_BACKLIGHT + bool "enable backlight support" + help + systemd-backlight is a service that restores the display + backlight brightness at early boot and saves it at shutdown. + + http://www.freedesktop.org/software/systemd/man/systemd-backlight@.service.html + +config BR2_PACKAGE_SYSTEMD_BINFMT + bool "enable binfmt tool" + help + systemd-binfmt is an early boot service that registers + additional binary formats for executables in the kernel. + + http://www.freedesktop.org/software/systemd/man/systemd-binfmt.service.html + +config BR2_PACKAGE_SYSTEMD_COREDUMP + bool "enable coredump hook" + help + systemd-coredump can be used as a helper binary by the + kernel when a user space program receives a fatal signal and + dumps core. + + http://www.freedesktop.org/software/systemd/man/systemd-coredump.html + +config BR2_PACKAGE_SYSTEMD_FIRSTBOOT + bool "enable firstboot support" + help + systemd-firstboot initializes the most basic system settings + interactively on the first boot. + + http://www.freedesktop.org/software/systemd/man/systemd-firstboot.html + +config BR2_PACKAGE_SYSTEMD_HIBERNATE + bool "enable hibernation support" + help + When this features is enabled, additional tools and services + are built to support suspending and resuming the system. + + http://www.freedesktop.org/software/systemd/man/systemd-sleep.html + +config BR2_PACKAGE_SYSTEMD_HOSTNAMED + bool "enable hostname daemon" + default y + help + systemd-hostnamed is a system service that may be used as a + mechanism to change the system's hostname. + + http://www.freedesktop.org/software/systemd/man/systemd-hostnamed.service.html + +config BR2_PACKAGE_SYSTEMD_HWDB + bool "enable hwdb installation" + default y + help + Enables hardware database installation to /usr/lib/udev/hwdb.d + + Disabling this option improves first boot time (or every boot + time in case of initramfs images) and saves several MB space. + + https://www.freedesktop.org/software/systemd/man/hwdb.html + +config BR2_PACKAGE_SYSTEMD_IMPORTD + bool "enable import daemon" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_BZIP2 + select BR2_PACKAGE_LZ4 + select BR2_PACKAGE_XZ + select BR2_PACKAGE_ZLIB + help + systemd-importd is a system service that manages virtual + machine and container images for systemd-machined and + machinectl. + + http://www.freedesktop.org/software/systemd/man/machinectl.html#Image%20Transfer%20Commands + +config BR2_PACKAGE_SYSTEMD_LOCALED + bool "enable locale daemon" + help + systemd-localed is a system service that may be used as + mechanism to change the system locale settings, as well as + the console key mapping and default X11 key mapping. + + http://www.freedesktop.org/software/systemd/man/systemd-localed.service.html + +config BR2_PACKAGE_SYSTEMD_LOGIND + bool "enable login daemon" + help + systemd-logind is a system service that manages user logins. + + http://www.freedesktop.org/software/systemd/man/systemd-logind.service.html + +config BR2_PACKAGE_SYSTEMD_MACHINED + bool "enable machine daemon" + help + systemd-machined is a system service that keeps track of + virtual machines and containers, and processes belonging to + them. + + http://www.freedesktop.org/software/systemd/man/systemd-machined.service.html + +config BR2_PACKAGE_SYSTEMD_MYHOSTNAME + bool "enable myhostname NSS plugin" + default y + help + nss-myhostname is a plug-in module for the GNU Name Service + Switch (NSS) functionality of the GNU C Library (glibc), + primarily providing hostname resolution for the locally + configured system hostname as returned by gethostname(2). + + http://www.freedesktop.org/software/systemd/man/nss-myhostname.html + +config BR2_PACKAGE_SYSTEMD_NETWORKD + bool "enable network manager" + default y + help + systemd-networkd is a system service that manages networks. + It detects and configures network devices as they appear, as + well as creating virtual network devices. + + This simple network configuration solution is an alternative + to dhcpcd or ISC dhcp. + + http://www.freedesktop.org/software/systemd/man/systemd-networkd.html + +config BR2_PACKAGE_SYSTEMD_POLKIT + bool "enable polkit support" + select BR2_PACKAGE_POLKIT + help + If enabled, systemd is built with polkit support and policy + files for its services are generated and installed. It is + useful for allowing unprivileged processes to speak to + systemd's many privileged processes. + + http://wiki.freedesktop.org/www/Software/polkit/ + +config BR2_PACKAGE_SYSTEMD_QUOTACHECK + bool "enable quotacheck tools" + help + systemd-quotacheck is a service responsible for file system + quota checks. It is run once at boot after all necessary + file systems are mounted. It is pulled in only if at least + one file system has quotas enabled. + + http://www.freedesktop.org/software/systemd/man/systemd-quotacheck.service.html + +config BR2_PACKAGE_SYSTEMD_RANDOMSEED + bool "enable random-seed support" + help + systemd-random-seed is a service that restores the random + seed of the system at early boot and saves it at + shutdown. Saving/restoring the random seed across boots + increases the amount of available entropy early at boot. + + http://www.freedesktop.org/software/systemd/man/systemd-random-seed.service.html + +config BR2_PACKAGE_SYSTEMD_RESOLVED + bool "enable resolve daemon" + default y + help + systemd-resolved is a system service that provides network + name resolution to local applications. It implements a + caching and validating DNS/DNSSEC stub resolver, as well as + an LLMNR resolver and responder. + + http://www.freedesktop.org/software/systemd/man/systemd-resolved.html + +config BR2_PACKAGE_SYSTEMD_RFKILL + bool "enable rfkill tools" + help + systemd-rfkill is a service that restores the RF kill switch + state at early boot and saves it at shutdown. + + http://www.freedesktop.org/software/systemd/man/systemd-rfkill@.service.html + +config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT + bool "enable SMACK support" + select BR2_PACKAGE_ATTR + select BR2_PACKAGE_SMACK + help + Enable support for SMACK, the Simple Mandatory Access + Control Kernel, a minimal approach to Access Control + implemented as a kernel LSM. + + This feature requires a kernel >= 3.8. + + When this feature is enabled, Systemd mounts smackfs and + manages security labels for sockets. + +config BR2_PACKAGE_SYSTEMD_SYSUSERS + bool "enable sysusers support" + help + systemd-sysusers creates system users and groups, based on + the file format and location specified in sysusers.d(5). + + http://www.freedesktop.org/software/systemd/man/systemd-sysusers.html + +config BR2_PACKAGE_SYSTEMD_TIMEDATED + bool "enable timedate daemon" + default y + help + systemd-timedated is a system service that may be used as a + mechanism to change the system clock and timezone, as well + as to enable/disable NTP time synchronization. + + http://www.freedesktop.org/software/systemd/man/systemd-timedated.service.html + +config BR2_PACKAGE_SYSTEMD_TIMESYNCD + bool "enable timesync daemon" + default y + help + systemd-timesyncd is a service that may be used to + synchronize the local system clock with a Network Time + Protocol server. + + This simple NTP solution is an alternative to sntp/ntpd from + the ntp package. + + http://www.freedesktop.org/software/systemd/man/systemd-timesyncd.html + +config BR2_PACKAGE_SYSTEMD_TMPFILES + bool "enable tmpfiles support" + default y + help + systemd-tmpfiles creates, deletes, and cleans up volatile + and temporary files and directories, based on the + configuration file format and location specified in + tmpfiles.d(5). + + http://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html + +config BR2_PACKAGE_SYSTEMD_VCONSOLE + bool "enable vconsole tool" + help + systemd-vconsole-setup is an early boot service that + configures the virtual console font and console keymap. + + http://www.freedesktop.org/software/systemd/man/systemd-vconsole-setup.service.html + +endif diff --git a/buildroot/package/systemd/dhcp.network b/buildroot/package/systemd/dhcp.network new file mode 100644 index 0000000..9b636fa --- /dev/null +++ b/buildroot/package/systemd/dhcp.network @@ -0,0 +1,4 @@ +[Match] +Name=SYSTEMD_NETWORKD_DHCP_IFACE +[Network] +DHCP=ipv4 diff --git a/buildroot/package/systemd/systemd.hash b/buildroot/package/systemd/systemd.hash new file mode 100644 index 0000000..d580a29 --- /dev/null +++ b/buildroot/package/systemd/systemd.hash @@ -0,0 +1,5 @@ +# sha256 locally computed +sha256 c83dabbe1c9de6b9db1dafdb7e04140c7d0535705c68842f6c0768653ba4913c systemd-237.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 LICENSE.GPL2 +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL2.1 +sha256 9c7709aa401a41c4c3f33ea75c34ae5d5354d62c310c3391c2a5958952d8aadd README diff --git a/buildroot/package/systemd/systemd.mk b/buildroot/package/systemd/systemd.mk new file mode 100644 index 0000000..4dea7d3 --- /dev/null +++ b/buildroot/package/systemd/systemd.mk @@ -0,0 +1,417 @@ +################################################################################ +# +# systemd +# +################################################################################ + +SYSTEMD_VERSION = 237 +SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION)) +SYSTEMD_LICENSE = LGPL-2.1+, GPL-2.0+ (udev), Public Domain (few source files, see README) +SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README +SYSTEMD_INSTALL_STAGING = YES +SYSTEMD_DEPENDENCIES = \ + host-gperf \ + host-intltool \ + host-meson \ + kmod \ + libcap \ + util-linux + +SYSTEMD_PROVIDES = udev + +# Make sure that systemd will always be built after busybox so that we have +# a consistent init setup between two builds +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +SYSTEMD_DEPENDENCIES += busybox +endif + +SYSTEMD_CONF_OPTS += \ + --prefix=/usr \ + --libdir='/usr/lib' \ + --buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \ + --cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf \ + -Drootlibdir='/usr/lib' \ + -Dblkid=true \ + -Dman=false \ + -Dima=false \ + -Dlibcryptsetup=false \ + -Defi=false \ + -Dgnu-efi=false \ + -Dldconfig=false \ + -Ddefault-dnssec=no \ + -Dtests=false \ + -Dsystem-uid-max=999 \ + -Dsystem-gid-max=999 \ + -Dtelinit-path=$(TARGET_DIR)/sbin/telinit \ + -Dkill-path=/usr/bin/kill \ + -Dkmod-path=/usr/bin/kmod \ + -Dkexec-path=/usr/sbin/kexec \ + -Dsulogin-path=/usr/sbin/sulogin \ + -Dmount-path=/usr/bin/mount \ + -Dumount-path=/usr/bin/umount \ + -Dnobody-group=nogroup + +ifeq ($(BR2_PACKAGE_ACL),y) +SYSTEMD_DEPENDENCIES += acl +SYSTEMD_CONF_OPTS += -Dacl=true +else +SYSTEMD_CONF_OPTS += -Dacl=false +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +SYSTEMD_DEPENDENCIES += audit +SYSTEMD_CONF_OPTS += -Daudit=true +else +SYSTEMD_CONF_OPTS += -Daudit=false +endif + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +SYSTEMD_DEPENDENCIES += libidn +SYSTEMD_CONF_OPTS += -Dlibidn=true +else +SYSTEMD_CONF_OPTS += -Dlibidn=false +endif + +ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) +SYSTEMD_DEPENDENCIES += libseccomp +SYSTEMD_CONF_OPTS += -Dseccomp=true +else +SYSTEMD_CONF_OPTS += -Dseccomp=false +endif + +ifeq ($(BR2_PACKAGE_LIBXKBCOMMON),y) +SYSTEMD_DEPENDENCIES += libxkbcommon +SYSTEMD_CONF_OPTS += -Dxkbcommon=true +else +SYSTEMD_CONF_OPTS += -Dxkbcommon=false +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +SYSTEMD_DEPENDENCIES += bzip2 +SYSTEMD_CONF_OPTS += -Dbzip2=true +else +SYSTEMD_CONF_OPTS += -Dbzip2=false +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +SYSTEMD_DEPENDENCIES += lz4 +SYSTEMD_CONF_OPTS += -Dlz4=true +else +SYSTEMD_CONF_OPTS += -Dlz4=false +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +SYSTEMD_DEPENDENCIES += linux-pam +SYSTEMD_CONF_OPTS += -Dpam=true +else +SYSTEMD_CONF_OPTS += -Dpam=false +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +SYSTEMD_DEPENDENCIES += xz +SYSTEMD_CONF_OPTS += -Dxz=true +else +SYSTEMD_CONF_OPTS += -Dxz=false +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +SYSTEMD_DEPENDENCIES += zlib +SYSTEMD_CONF_OPTS += -Dzlib=true +else +SYSTEMD_CONF_OPTS += -Dzlib=false +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +SYSTEMD_DEPENDENCIES += libcurl +SYSTEMD_CONF_OPTS += -Dlibcurl=true +else +SYSTEMD_CONF_OPTS += -Dlibcurl=false +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +SYSTEMD_DEPENDENCIES += libgcrypt +SYSTEMD_CONF_OPTS += -Dgcrypt=true +else +SYSTEMD_CONF_OPTS += -Dgcrypt=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY),y) +SYSTEMD_DEPENDENCIES += libmicrohttpd +SYSTEMD_CONF_OPTS += -Dmicrohttpd=true +ifeq ($(BR2_PACKAGE_LIBQRENCODE),y) +SYSTEMD_CONF_OPTS += -Dqrencode=true +SYSTEMD_DEPENDENCIES += libqrencode +else +SYSTEMD_CONF_OPTS += -Dqrencode=false +endif +else +SYSTEMD_CONF_OPTS += -Dmicrohttpd=false -Dqrencode=false +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +SYSTEMD_DEPENDENCIES += libselinux +SYSTEMD_CONF_OPTS += -Dselinux=true +else +SYSTEMD_CONF_OPTS += -Dselinux=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_HWDB),y) +SYSTEMD_CONF_OPTS += -Dhwdb=true +else +SYSTEMD_CONF_OPTS += -Dhwdb=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_BINFMT),y) +SYSTEMD_CONF_OPTS += -Dbinfmt=true +else +SYSTEMD_CONF_OPTS += -Dbinfmt=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_VCONSOLE),y) +SYSTEMD_CONF_OPTS += -Dvconsole=true +else +SYSTEMD_CONF_OPTS += -Dvconsole=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_QUOTACHECK),y) +SYSTEMD_CONF_OPTS += -Dquotacheck=true +else +SYSTEMD_CONF_OPTS += -Dquotacheck=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_TMPFILES),y) +SYSTEMD_CONF_OPTS += -Dtmpfiles=true +else +SYSTEMD_CONF_OPTS += -Dtmpfiles=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y) +SYSTEMD_CONF_OPTS += -Dsysusers=true +else +SYSTEMD_CONF_OPTS += -Dsysusers=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_FIRSTBOOT),y) +SYSTEMD_CONF_OPTS += -Dfirstboot=true +else +SYSTEMD_CONF_OPTS += -Dfirstboot=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_RANDOMSEED),y) +SYSTEMD_CONF_OPTS += -Drandomseed=true +else +SYSTEMD_CONF_OPTS += -Drandomseed=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_BACKLIGHT),y) +SYSTEMD_CONF_OPTS += -Dbacklight=true +else +SYSTEMD_CONF_OPTS += -Dbacklight=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_RFKILL),y) +SYSTEMD_CONF_OPTS += -Drfkill=true +else +SYSTEMD_CONF_OPTS += -Drfkill=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_LOGIND),y) +SYSTEMD_CONF_OPTS += -Dlogind=true +else +SYSTEMD_CONF_OPTS += -Dlogind=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_MACHINED),y) +SYSTEMD_CONF_OPTS += -Dmachined=true +else +SYSTEMD_CONF_OPTS += -Dmachined=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_IMPORTD),y) +SYSTEMD_CONF_OPTS += -Dimportd=true +else +SYSTEMD_CONF_OPTS += -Dimportd=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_HOSTNAMED),y) +SYSTEMD_CONF_OPTS += -Dhostnamed=true +else +SYSTEMD_CONF_OPTS += -Dhostnamed=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_MYHOSTNAME),y) +SYSTEMD_CONF_OPTS += -Dmyhostname=true +else +SYSTEMD_CONF_OPTS += -Dmyhostname=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_TIMEDATED),y) +SYSTEMD_CONF_OPTS += -Dtimedated=true +else +SYSTEMD_CONF_OPTS += -Dtimedated=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_LOCALED),y) +SYSTEMD_CONF_OPTS += -Dlocaled=true +else +SYSTEMD_CONF_OPTS += -Dlocaled=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_COREDUMP),y) +SYSTEMD_CONF_OPTS += -Dcoredump=true +SYSTEMD_COREDUMP_USER = systemd-coredump -1 systemd-coredump -1 * /var/lib/systemd/coredump - - Core Dumper +else +SYSTEMD_CONF_OPTS += -Dcoredump=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_POLKIT),y) +SYSTEMD_CONF_OPTS += -Dpolkit=true +SYSTEMD_DEPENDENCIES += polkit +else +SYSTEMD_CONF_OPTS += -Dpolkit=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_NETWORKD),y) +SYSTEMD_CONF_OPTS += -Dnetworkd=true +SYSTEMD_NETWORKD_USER = systemd-network -1 systemd-network -1 * - - - Network Manager +define SYSTEMD_INSTALL_RESOLVCONF_HOOK + ln -sf ../run/systemd/resolve/resolv.conf \ + $(TARGET_DIR)/etc/resolv.conf +endef +SYSTEMD_NETWORKD_DHCP_IFACE = $(call qstrip,$(BR2_SYSTEM_DHCP)) +ifneq ($(SYSTEMD_NETWORKD_DHCP_IFACE),) +define SYSTEMD_INSTALL_NETWORK_CONFS + sed s/SYSTEMD_NETWORKD_DHCP_IFACE/$(SYSTEMD_NETWORKD_DHCP_IFACE)/ \ + package/systemd/dhcp.network > \ + $(TARGET_DIR)/etc/systemd/network/dhcp.network +endef +endif +else +SYSTEMD_CONF_OPTS += -Dnetworkd=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_RESOLVED),y) +SYSTEMD_CONF_OPTS += -Dresolve=true +SYSTEMD_RESOLVED_USER = systemd-resolve -1 systemd-resolve -1 * - - - Network Name Resolution Manager +else +SYSTEMD_CONF_OPTS += -Dresolve=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_TIMESYNCD),y) +SYSTEMD_CONF_OPTS += -Dtimesyncd=true +SYSTEMD_TIMESYNCD_USER = systemd-timesync -1 systemd-timesync -1 * - - - Network Time Synchronization +define SYSTEMD_INSTALL_SERVICE_TIMESYNC + mkdir -p $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants + ln -sf ../../../../lib/systemd/system/systemd-timesyncd.service \ + $(TARGET_DIR)/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service +endef +else +SYSTEMD_CONF_OPTS += -Dtimesyncd=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT),y) +SYSTEMD_CONF_OPTS += -Dsmack=true +else +SYSTEMD_CONF_OPTS += -Dsmack=false +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD_HIBERNATE),y) +SYSTEMD_CONF_OPTS += -Dhibernate=true +else +SYSTEMD_CONF_OPTS += -Dhibernate=false +endif + +SYSTEMD_FALLBACK_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME)) +ifneq ($(SYSTEMD_FALLBACK_HOSTNAME),) +SYSTEMD_CONF_OPTS += -Dfallback-hostname=$(SYSTEMD_FALLBACK_HOSTNAME) +endif + +define SYSTEMD_INSTALL_INIT_HOOK + ln -fs ../lib/systemd/systemd $(TARGET_DIR)/sbin/init + ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/halt + ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/poweroff + ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/reboot + ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/shutdown + ln -fs ../../../lib/systemd/system/multi-user.target \ + $(TARGET_DIR)/etc/systemd/system/default.target +endef + +define SYSTEMD_INSTALL_MACHINEID_HOOK + touch $(TARGET_DIR)/etc/machine-id +endef + +SYSTEMD_POST_INSTALL_TARGET_HOOKS += \ + SYSTEMD_INSTALL_INIT_HOOK \ + SYSTEMD_INSTALL_MACHINEID_HOOK \ + SYSTEMD_INSTALL_RESOLVCONF_HOOK + +define SYSTEMD_USERS + - - input -1 * - - - Input device group + - - systemd-journal -1 * - - - Journal + - - render -1 * - - - DRI rendering nodes + - - kvm -1 * - - - kvm nodes + systemd-bus-proxy -1 systemd-bus-proxy -1 * - - - Proxy D-Bus messages to/from a bus + systemd-journal-gateway -1 systemd-journal-gateway -1 * /var/log/journal - - Journal Gateway + systemd-journal-remote -1 systemd-journal-remote -1 * /var/log/journal/remote - - Journal Remote + systemd-journal-upload -1 systemd-journal-upload -1 * - - - Journal Upload + $(SYSTEMD_COREDUMP_USER) + $(SYSTEMD_NETWORKD_USER) + $(SYSTEMD_RESOLVED_USER) + $(SYSTEMD_TIMESYNCD_USER) +endef + +define SYSTEMD_DISABLE_SERVICE_TTY1 + rm -f $(TARGET_DIR)/etc/systemd/system/getty.target.wants/getty@tty1.service +endef + +ifneq ($(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)),) +# systemd needs getty.service for VTs and serial-getty.service for serial ttys +# also patch the file to use the correct baud-rate, the default baudrate is 115200 so look for that +define SYSTEMD_INSTALL_SERVICE_TTY + if echo $(BR2_TARGET_GENERIC_GETTY_PORT) | egrep -q 'tty[0-9]*$$'; \ + then \ + SERVICE="getty"; \ + else \ + SERVICE="serial-getty"; \ + fi; \ + ln -fs ../../../../lib/systemd/system/$${SERVICE}@.service \ + $(TARGET_DIR)/etc/systemd/system/getty.target.wants/$${SERVICE}@$(BR2_TARGET_GENERIC_GETTY_PORT).service; \ + if [ $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE)) -gt 0 ] ; \ + then \ + $(SED) 's,115200,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE),' $(TARGET_DIR)/lib/systemd/system/$${SERVICE}@.service; \ + fi +endef +endif + +define SYSTEMD_INSTALL_INIT_SYSTEMD + $(SYSTEMD_DISABLE_SERVICE_TTY1) + $(SYSTEMD_INSTALL_SERVICE_TTY) + $(SYSTEMD_INSTALL_SERVICE_TIMESYNC) + $(SYSTEMD_INSTALL_NETWORK_CONFS) +endef + +SYSTEMD_NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) + +SYSTEMD_ENV = $(TARGET_MAKE_ENV) $(HOST_UTF8_LOCALE_ENV) + +define SYSTEMD_CONFIGURE_CMDS + rm -rf $(@D)/build + mkdir -p $(@D)/build + $(SYSTEMD_ENV) meson $(SYSTEMD_CONF_OPTS) $(@D) $(@D)/build +endef + +define SYSTEMD_BUILD_CMDS + $(SYSTEMD_ENV) ninja $(SYSTEMD_NINJA_OPTS) -C $(@D)/build +endef + +define SYSTEMD_INSTALL_TARGET_CMDS + $(SYSTEMD_ENV) DESTDIR=$(TARGET_DIR) ninja $(SYSTEMD_NINJA_OPTS) \ + -C $(@D)/build install +endef + +define SYSTEMD_INSTALL_STAGING_CMDS + $(SYSTEMD_ENV) DESTDIR=$(STAGING_DIR) ninja $(SYSTEMD_NINJA_OPTS) \ + -C $(@D)/build install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/sysvinit/0001-fix-libcrypt-test.patch b/buildroot/package/sysvinit/0001-fix-libcrypt-test.patch new file mode 100644 index 0000000..6c22436 --- /dev/null +++ b/buildroot/package/sysvinit/0001-fix-libcrypt-test.patch @@ -0,0 +1,20 @@ +Make the libcrypt test somewhat cross-compilation compliant + +Signed-off-by: Thomas Petazzoni + +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -78,8 +78,9 @@ else + endif + + # Additional libs for GNU libc. +-ifneq ($(wildcard /usr/lib*/libcrypt.a),) +- SULOGINLIBS += -lcrypt ++HAS_LIBCRYPT=$(shell f=`mktemp` && echo 'int main(void) {}' | $(CC) -o $$f -xc - -lcrypt >/dev/null 2>&1 && echo yes; rm -f $$f) ++ifeq ($(HAS_LIBCRYPT),yes) ++ SULOGINLIBS += -lcrypt + endif + + all: $(BIN) $(SBIN) $(USRBIN) diff --git a/buildroot/package/sysvinit/0002-musl-fix-compilation-errors.patch b/buildroot/package/sysvinit/0002-musl-fix-compilation-errors.patch new file mode 100644 index 0000000..5dcdecf --- /dev/null +++ b/buildroot/package/sysvinit/0002-musl-fix-compilation-errors.patch @@ -0,0 +1,38 @@ +Fix various compilation errors when compiling against must libc + +Signed-off-by: Dagg Stompler + +diff -Nupr a/src/init.c b/src/init.c +--- a/src/init.c 2017-08-13 18:44:27.000000000 +0300 ++++ b/src/init.c 2017-08-13 18:34:45.000000000 +0300 +@@ -37,6 +37,7 @@ + #include + #endif + #include ++#include + #include + #include + #include +diff -Nupr a/src/init.h b/src/init.h +--- a/src/init.h 2017-08-13 19:35:46.000000000 +0300 ++++ b/src/init.h 2017-08-13 19:36:01.000000000 +0300 +@@ -22,6 +22,8 @@ + * + */ + ++#include ++ + /* Standard configuration */ + #define CHANGE_WAIT 0 /* Change runlevel while + waiting for a process to exit? */ +diff -Nupr a/src/mountpoint.c b/src/mountpoint.c +--- a/src/mountpoint.c 2017-08-13 20:28:26.000000000 +0300 ++++ b/src/mountpoint.c 2017-08-13 20:28:40.000000000 +0300 +@@ -24,6 +24,7 @@ + */ + + #include ++#include + #include + #include + #include diff --git a/buildroot/package/sysvinit/Config.in b/buildroot/package/sysvinit/Config.in new file mode 100644 index 0000000..7f27a70 --- /dev/null +++ b/buildroot/package/sysvinit/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_SYSVINIT + bool "sysvinit" + depends on BR2_USE_MMU # fork() + depends on BR2_INIT_SYSV + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + System V style implementation of /sbin/init, parent of all + processes + + http://savannah.nongnu.org/projects/sysvinit diff --git a/buildroot/package/sysvinit/inittab b/buildroot/package/sysvinit/inittab new file mode 100644 index 0000000..a314710 --- /dev/null +++ b/buildroot/package/sysvinit/inittab @@ -0,0 +1,31 @@ +# /etc/inittab +# +# This inittab is a basic inittab sample for sysvinit, which mimics +# Buildroot's default inittab for BusyBox. +id:3:initdefault: + +si0::sysinit:/bin/mount -t proc proc /proc +si1::sysinit:/bin/mount -o remount,rw / +si2::sysinit:/bin/mkdir -p /dev/pts /dev/shm +si3::sysinit:/bin/mount -a +si4::sysinit:/sbin/swapon -a +si5::sysinit:/bin/ln -sf /proc/self/fd /dev/fd 2>/dev/null +si6::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin 2>/dev/null +si7::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout 2>/dev/null +si8::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr 2>/dev/null +si9::sysinit:/bin/hostname -F /etc/hostname +rcS:12345:wait:/etc/init.d/rcS + +# S0:1:respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL + +# Stuff to do for the 3-finger salute +#ca::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +shd0:06:wait:/etc/init.d/rcK +shd1:06:wait:/sbin/swapoff -a +shd2:06:wait:/bin/umount -a -r + +# The usual halt or reboot actions +hlt0:0:wait:/sbin/halt -dhp +reb0:6:wait:/sbin/reboot diff --git a/buildroot/package/sysvinit/sysvinit.hash b/buildroot/package/sysvinit/sysvinit.hash new file mode 100644 index 0000000..268b984 --- /dev/null +++ b/buildroot/package/sysvinit/sysvinit.hash @@ -0,0 +1,3 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/s/sysvinit/sysvinit_2.88dsf-13.1%2Bsqueeze1.dsc +sha256 b016f937958d2809a020d407e1287bdc09abf1d44efaa96530e2ea57f544f4e8 sysvinit_2.88dsf.orig.tar.gz +sha256 26b456a31036b1e1c2486c22ca2b7fde6d723b7c63669604eacc61cfb6609ef8 sysvinit_2.88dsf-13.1+squeeze1.diff.gz diff --git a/buildroot/package/sysvinit/sysvinit.mk b/buildroot/package/sysvinit/sysvinit.mk new file mode 100644 index 0000000..a606dda --- /dev/null +++ b/buildroot/package/sysvinit/sysvinit.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# sysvinit +# +################################################################################ + +SYSVINIT_VERSION = 2.88 +SYSVINIT_SOURCE = sysvinit_$(SYSVINIT_VERSION)dsf.orig.tar.gz +SYSVINIT_PATCH = sysvinit_$(SYSVINIT_VERSION)dsf-13.1+squeeze1.diff.gz +SYSVINIT_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/s/sysvinit +SYSVINIT_LICENSE = GPL-2.0+ +SYSVINIT_LICENSE_FILES = COPYING + +SYSVINIT_MAKE_OPTS = SYSROOT=$(STAGING_DIR) + +# Override BusyBox implementations if BusyBox is enabled. +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +SYSVINIT_DEPENDENCIES = busybox +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +SYSVINIT_DEPENDENCIES += libselinux +SYSVINIT_MAKE_OPTS += WITH_SELINUX="yes" +endif + +define SYSVINIT_DEBIAN_PATCHES + if [ -d $(@D)/debian/patches ]; then \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches \*.patch; \ + fi +endef + +SYSVINIT_POST_PATCH_HOOKS = SYSVINIT_DEBIAN_PATCHES + +define SYSVINIT_BUILD_CMDS + # Force sysvinit to link against libcrypt as it otherwise + # use an incorrect test to see if it's available + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(SYSVINIT_MAKE_OPTS) -C $(@D)/src +endef + +define SYSVINIT_INSTALL_TARGET_CMDS + for x in halt init shutdown killall5; do \ + $(INSTALL) -D -m 0755 $(@D)/src/$$x $(TARGET_DIR)/sbin/$$x || exit 1; \ + done + $(INSTALL) -D -m 0644 package/sysvinit/inittab $(TARGET_DIR)/etc/inittab + ln -sf /sbin/halt $(TARGET_DIR)/sbin/reboot + ln -sf /sbin/halt $(TARGET_DIR)/sbin/poweroff + ln -sf killall5 $(TARGET_DIR)/sbin/pidof +endef + +ifeq ($(BR2_TARGET_GENERIC_GETTY),y) +define SYSVINIT_SET_GETTY + $(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(shell echo $(SYSTEM_GETTY_PORT) | tail -c+4)::respawn:/sbin/getty -L $(SYSTEM_GETTY_OPTIONS) $(SYSTEM_GETTY_PORT) $(SYSTEM_GETTY_BAUDRATE) $(SYSTEM_GETTY_TERM) #~' \ + $(TARGET_DIR)/etc/inittab +endef +SYSVINIT_TARGET_FINALIZE_HOOKS += SYSVINIT_SET_GETTY +endif # BR2_TARGET_GENERIC_GETTY + +SYSVINIT_TARGET_FINALIZE_HOOKS += SYSTEM_REMOUNT_ROOT_INITTAB + +$(eval $(generic-package)) diff --git a/buildroot/package/szip/Config.in b/buildroot/package/szip/Config.in new file mode 100644 index 0000000..5a24362 --- /dev/null +++ b/buildroot/package/szip/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_SZIP + bool "szip" + help + Szip is an implementation of the extended-Rice lossless + compression algorithm. + + The Consultative Committee on Space Data Systems (CCSDS) has + adopted the extended-Rice algorithm for international + standards for space applications[1,6,7]. Szip is reported to + provide fast and effective compression, specifically for the + EOS data generated by the NASA Earth Observatory System + (EOS)[1]. It was originally developed at University of New + Mexico (UNM) and integrated with HDF4 by UNM researchers and + developers. + + http://www.hdfgroup.org/doc_resource/SZIP diff --git a/buildroot/package/szip/szip.hash b/buildroot/package/szip/szip.hash new file mode 100644 index 0000000..c6caf36 --- /dev/null +++ b/buildroot/package/szip/szip.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 a816d95d5662e8279625abdbea7d0e62157d7d1f028020b1075500bf483ed5ef szip-2.1.tar.gz diff --git a/buildroot/package/szip/szip.mk b/buildroot/package/szip/szip.mk new file mode 100644 index 0000000..f3a4758 --- /dev/null +++ b/buildroot/package/szip/szip.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# szip +# +################################################################################ + +SZIP_VERSION = 2.1 +SZIP_SITE = http://www.hdfgroup.org/ftp/lib-external/szip/2.1/src +SZIP_LICENSE = szip license +SZIP_LICENSE_FILES = COPYING +SZIP_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/taglib/Config.in b/buildroot/package/taglib/Config.in new file mode 100644 index 0000000..9e6bb70 --- /dev/null +++ b/buildroot/package/taglib/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_TAGLIB + bool "taglib" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + help + TagLib is a library for reading and editing the meta-data of + several popular audio formats. Currently it supports both + ID3v1 and ID3v2 for MP3 files, Ogg Vorbis comments and ID3 + tags and Vorbis comments in FLAC, MPC, Speex, WavPack and + TrueAudio files. + + http://taglib.org/ + +if BR2_PACKAGE_TAGLIB + +config BR2_PACKAGE_TAGLIB_MP4 + bool "taglib mp4 support" + +config BR2_PACKAGE_TAGLIB_ASF + bool "taglib wma support" + +endif + +comment "taglib needs a toolchain w/ C++, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/buildroot/package/taglib/taglib.hash b/buildroot/package/taglib/taglib.hash new file mode 100644 index 0000000..7a5c5cf --- /dev/null +++ b/buildroot/package/taglib/taglib.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b6d1a5a610aae6ff39d93de5efd0fdc787aa9e9dc1e7026fa4c961b26563526b taglib-1.11.1.tar.gz diff --git a/buildroot/package/taglib/taglib.mk b/buildroot/package/taglib/taglib.mk new file mode 100644 index 0000000..6f36347 --- /dev/null +++ b/buildroot/package/taglib/taglib.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# taglib +# +################################################################################ + +TAGLIB_VERSION = 1.11.1 +TAGLIB_SITE = http://taglib.github.io/releases +TAGLIB_INSTALL_STAGING = YES +TAGLIB_LICENSE = LGPL-2.1 or MPL-1.1 +TAGLIB_LICENSE_FILES = COPYING.LGPL COPYING.MPL + +ifeq ($(BR2_PACKAGE_ZLIB),y) +TAGLIB_DEPENDENCIES += zlib +endif + +ifeq ($(BR2_PACKAGE_TAGLIB_ASF),y) +TAGLIB_CONF_OPTS += -DWITH_ASF=ON +endif + +ifeq ($(BR2_PACKAGE_TAGLIB_MP4),y) +TAGLIB_CONF_OPTS += -DWITH_MP4=ON +endif + +define TAGLIB_REMOVE_DEVFILE + rm -f $(TARGET_DIR)/usr/bin/taglib-config +endef + +TAGLIB_POST_INSTALL_TARGET_HOOKS += TAGLIB_REMOVE_DEVFILE + +$(eval $(cmake-package)) diff --git a/buildroot/package/tar/Config.in b/buildroot/package/tar/Config.in new file mode 100644 index 0000000..b0be7a3 --- /dev/null +++ b/buildroot/package/tar/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_TAR + bool "tar" + depends on BR2_USE_WCHAR + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + A program that saves many files together into a single tape + or disk archive, and can restore individual files from the + archive. + + http://www.gnu.org/software/tar/ + +comment "tar needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/tar/tar.hash b/buildroot/package/tar/tar.hash new file mode 100644 index 0000000..e563456 --- /dev/null +++ b/buildroot/package/tar/tar.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking signature +sha256 402dcfd0022fd7a1f2c5611f5c61af1cd84910a760a44a688e18ddbff4e9f024 tar-1.29.tar.xz +sha256 9173f222464dd3676118408840da5990527062b5c7daf6487bed7c396c45bfb1 tar-1.29.cpio.gz diff --git a/buildroot/package/tar/tar.mk b/buildroot/package/tar/tar.mk new file mode 100644 index 0000000..a8a15d9 --- /dev/null +++ b/buildroot/package/tar/tar.mk @@ -0,0 +1,50 @@ +################################################################################ +# +# tar +# +################################################################################ + +TAR_VERSION = 1.29 +TAR_SOURCE = tar-$(TAR_VERSION).tar.xz +TAR_SITE = $(BR2_GNU_MIRROR)/tar +# busybox installs in /bin, so we need tar to install as well in /bin +# so that it overrides the Busybox symlinks. +TAR_CONF_OPTS = --exec-prefix=/ +TAR_LICENSE = GPL-3.0+ +TAR_LICENSE_FILES = COPYING + +# Prefer full-blown tar over buybox's version +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +TAR_DEPENDENCIES += busybox +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +TAR_DEPENDENCIES += acl +TAR_CONF_OPTS += --with-posix-acls +else +TAR_CONF_OPTS += --without-posix-acls +endif + +ifeq ($(BR2_PACKAGE_ATTR),y) +TAR_DEPENDENCIES += attr +TAR_CONF_OPTS += --with-xattrs +else +TAR_CONF_OPTS += --without-xattrs +endif + +$(eval $(autotools-package)) + +# host-tar: use cpio.gz instead of tar.gz to prevent chicken-egg problem +# of needing tar to build tar. +HOST_TAR_SOURCE = tar-$(TAR_VERSION).cpio.gz +define HOST_TAR_EXTRACT_CMDS + mkdir -p $(@D) + cd $(@D) && \ + $(call suitable-extractor,$(HOST_TAR_SOURCE)) $(DL_DIR)/$(HOST_TAR_SOURCE) | cpio -i --preserve-modification-time + mv $(@D)/tar-$(TAR_VERSION)/* $(@D) + rmdir $(@D)/tar-$(TAR_VERSION) +endef + +HOST_TAR_CONF_OPTS = --without-selinux + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/targetcli-fb/Config.in b/buildroot/package/targetcli-fb/Config.in new file mode 100644 index 0000000..24ff314 --- /dev/null +++ b/buildroot/package/targetcli-fb/Config.in @@ -0,0 +1,15 @@ +comment "targetcli-fb depends on Python" + depends on !BR2_PACKAGE_PYTHON && !BR2_PACKAGE_PYTHON3 + +config BR2_PACKAGE_TARGETCLI_FB + bool "targetcli-fb" + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_CONFIGSHELL_FB + select BR2_PACKAGE_PYTHON_RTSLIB_FB + select BR2_PACKAGE_PYTHON_SIX + help + targetcli-fb is a command-line interface for configuring the + LIO generic SCSI target, present in 3.x Linux kernel + versions. + + https://github.com/open-iscsi/targetcli-fb diff --git a/buildroot/package/targetcli-fb/S50target b/buildroot/package/targetcli-fb/S50target new file mode 100755 index 0000000..3ce55ab --- /dev/null +++ b/buildroot/package/targetcli-fb/S50target @@ -0,0 +1,46 @@ +#!/bin/sh +# +# Restore / clear the Linux "SCSI target" driver configuration with `targetctl` +# + +start() { + local ret + + printf "Restoring target configuration: " + /usr/bin/targetctl restore >/dev/null 2>&1 + ret=$? + echo "done" + + return $ret +} + +stop() { + local ret + + printf "Clearing target configuration: " + /usr/bin/targetctl clear >/dev/null 2>&1 + ret=$? + echo "done" + + return $ret +} + +restart() { + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/targetcli-fb/target.service b/buildroot/package/targetcli-fb/target.service new file mode 100644 index 0000000..400284e --- /dev/null +++ b/buildroot/package/targetcli-fb/target.service @@ -0,0 +1,14 @@ +[Unit] +Description=Restore LIO kernel target configuration +Requires=sys-kernel-config.mount +After=sys-kernel-config.mount network.target local-fs.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/targetctl restore +ExecStop=/usr/bin/targetctl clear +SyslogIdentifier=target + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/targetcli-fb/targetcli-fb.hash b/buildroot/package/targetcli-fb/targetcli-fb.hash new file mode 100644 index 0000000..50cb3e3 --- /dev/null +++ b/buildroot/package/targetcli-fb/targetcli-fb.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 0f32ab6f3ecd234280d55be5e89ce2b3a02f9c82c8dccaae66e26464cff8901a targetcli-fb-v2.1.fb41.tar.gz diff --git a/buildroot/package/targetcli-fb/targetcli-fb.mk b/buildroot/package/targetcli-fb/targetcli-fb.mk new file mode 100644 index 0000000..4057592 --- /dev/null +++ b/buildroot/package/targetcli-fb/targetcli-fb.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# targetcli-fb +# +################################################################################ + +# When upgrading the version, be sure to also upgrade python-rtslib-fb +# and python-configshell-fb at the same time. +TARGETCLI_FB_VERSION = v2.1.fb41 +TARGETCLI_FB_SITE = $(call github,open-iscsi,targetcli-fb,$(TARGETCLI_FB_VERSION)) +TARGETCLI_FB_LICENSE = Apache-2.0 +TARGETCLI_FB_LICENSE_FILES = COPYING +TARGETCLI_FB_SETUP_TYPE = setuptools +TARGETCLI_FB_DEPENDENCIES = python-configshell-fb python-rtslib-fb python-six + +define TARGETCLI_FB_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/targetcli-fb/S50target \ + $(TARGET_DIR)/etc/init.d/S50target +endef + +define TARGETCLI_FB_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D package/targetcli-fb/target.service \ + $(TARGET_DIR)/usr/lib/systemd/system/target.service +endef + +# Targetcli stores its configuration in /etc/target/saveconfig.json +# and complains if the /etc/target/ directory does not exist. +define TARGETCLI_FB_INSTALL_CONF_DIR + $(INSTALL) -m 0755 -d $(TARGET_DIR)/etc/target +endef + +TARGETCLI_FB_POST_INSTALL_TARGET_HOOKS += TARGETCLI_FB_INSTALL_CONF_DIR + +$(eval $(python-package)) diff --git a/buildroot/package/taskd/0001-Fix-missing-cmakedefine-HAVE_GET_CURRENT_DIR_NAME.patch b/buildroot/package/taskd/0001-Fix-missing-cmakedefine-HAVE_GET_CURRENT_DIR_NAME.patch new file mode 100644 index 0000000..960c71b --- /dev/null +++ b/buildroot/package/taskd/0001-Fix-missing-cmakedefine-HAVE_GET_CURRENT_DIR_NAME.patch @@ -0,0 +1,28 @@ +From b067ab9bf667bb9257bb9eeaa6bf25f9a1a17f06 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Fri, 6 May 2016 23:35:42 +0200 +Subject: [PATCH] Fix missing cmakedefine HAVE_GET_CURRENT_DIR_NAME +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Jörg Krause +--- + cmake.h.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/cmake.h.in b/cmake.h.in +index 4124ce9..0b8f9d0 100644 +--- a/cmake.h.in ++++ b/cmake.h.in +@@ -51,6 +51,7 @@ + #cmakedefine HAVE_ST_BIRTHTIME + + /* Functions */ ++#cmakedefine HAVE_GET_CURRENT_DIR_NAME + #cmakedefine HAVE_TIMEGM + #cmakedefine HAVE_UUID_UNPARSE_LOWER + +-- +2.8.2 + diff --git a/buildroot/package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch b/buildroot/package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch new file mode 100644 index 0000000..f2365ea --- /dev/null +++ b/buildroot/package/taskd/0002-Use-correct-variables-for-GnuTLS-detection.patch @@ -0,0 +1,32 @@ +From 88fee5c6eb2271d3de6b9878cd29a0494999aa18 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Sun, 20 Nov 2016 23:46:45 +0100 +Subject: [PATCH] Use correct variables for GnuTLS detection + +At least with recent CMake, it seems the variables created by +find_package (GnuTLS) are called PC_GNUTLS_INCLUDE_DIRS and +PC_GNUTLS_LIBRARIES. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index d8125d9..ccf827b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -110,8 +110,8 @@ message ("-- Looking for GnuTLS") + find_package (GnuTLS REQUIRED) + if (GNUTLS_FOUND) + set (HAVE_LIBGNUTLS true) +- set (TASKD_INCLUDE_DIRS ${TASKD_INCLUDE_DIRS} ${GNUTLS_INCLUDE_DIR}) +- set (TASKD_LIBRARIES ${TASKD_LIBRARIES} ${GNUTLS_LIBRARIES}) ++ set (TASKD_INCLUDE_DIRS ${TASKD_INCLUDE_DIRS} ${PC_GNUTLS_INCLUDE_DIRS}) ++ set (TASKD_LIBRARIES ${TASKD_LIBRARIES} ${PC_GNUTLS_LIBRARIES}) + endif (GNUTLS_FOUND) + + message ("-- Looking for libuuid") +-- +2.10.2 + diff --git a/buildroot/package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch b/buildroot/package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch new file mode 100644 index 0000000..34139fe --- /dev/null +++ b/buildroot/package/taskd/0003-CMakeLists-use-pkg-config-uuid-detection.patch @@ -0,0 +1,40 @@ +CMakeLists.txt: use pkg-config to detect uuid when possible + +In order to take into account the libraries used by libuuid when +building statically, using pkg-config is recommended. This patch +therefore improves the CMakeLists.txt to use pkg-config to detect +libuuid when pkg-config is available. + +Signed-off-by: Thomas Petazzoni + +Index: b/CMakeLists.txt +=================================================================== +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,7 @@ + + include (CheckFunctionExists) + include (CheckStructHasMember) ++include (FindPkgConfig) + + set (HAVE_CMAKE true) + +@@ -119,8 +120,16 @@ + # Apple and FreeBSD include the uuid functions in their libc, rather than libuuid + check_function_exists (uuid_unparse_lower HAVE_UUID_UNPARSE_LOWER) + else (DARWIN OR FREEBSD) +- find_path (UUID_INCLUDE_DIR uuid/uuid.h) +- find_library (UUID_LIBRARY NAMES uuid) ++ if(PKG_CONFIG_FOUND) ++ pkg_check_modules(PC_UUID uuid) ++ if(PC_UUID_FOUND) ++ set (UUID_INCLUDE_DIR ${PC_UUID_INCLUDE_DIRS}) ++ set (UUID_LIBRARY ${PC_UUID_LIBRARIES}) ++ endif(PC_UUID_FOUND) ++ else(PKG_CONFIG_FOUND) ++ find_path (UUID_INCLUDE_DIR uuid/uuid.h) ++ find_library (UUID_LIBRARY NAMES uuid) ++ endif(PKG_CONFIG_FOUND) + if (UUID_INCLUDE_DIR AND UUID_LIBRARY) + set (TASKD_INCLUDE_DIRS ${TASKD_INCLUDE_DIRS} ${UUID_INCLUDE_DIR}) + set (TASKD_LIBRARIES ${TASKD_LIBRARIES} ${UUID_LIBRARY}) diff --git a/buildroot/package/taskd/Config.in b/buildroot/package/taskd/Config.in new file mode 100644 index 0000000..19d123f --- /dev/null +++ b/buildroot/package/taskd/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_TASKD + bool "taskd" + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_WCHAR # gnutls + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_GNUTLS + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Task management synchronization daemon. + + http://taskwarrior.org/ + +comment "taskd needs a toolchain w/ C++, wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/taskd/taskd.hash b/buildroot/package/taskd/taskd.hash new file mode 100644 index 0000000..41d37bb --- /dev/null +++ b/buildroot/package/taskd/taskd.hash @@ -0,0 +1,4 @@ +# From http://taskwarrior.org/download/ +sha1 ded339deeee65277e4712f71a9159502f8b20b52 taskd-1.1.0.tar.gz +# Locally calculated +sha256 7b8488e687971ae56729ff4e2e5209ff8806cf8cd57718bfd7e521be130621b4 taskd-1.1.0.tar.gz diff --git a/buildroot/package/taskd/taskd.mk b/buildroot/package/taskd/taskd.mk new file mode 100644 index 0000000..b19be68 --- /dev/null +++ b/buildroot/package/taskd/taskd.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# taskd +# +################################################################################ + +TASKD_VERSION = 1.1.0 +TASKD_SITE = http://taskwarrior.org/download +TASKD_LICENSE = MIT +TASKD_LICENSE_FILES = COPYING +TASKD_DEPENDENCIES = gnutls util-linux host-pkgconf + +$(eval $(cmake-package)) diff --git a/buildroot/package/tcf-agent/0001-agent-add-install-target-to-the-CMakeLists.patch b/buildroot/package/tcf-agent/0001-agent-add-install-target-to-the-CMakeLists.patch new file mode 100644 index 0000000..fd2d61f --- /dev/null +++ b/buildroot/package/tcf-agent/0001-agent-add-install-target-to-the-CMakeLists.patch @@ -0,0 +1,48 @@ +From 96c43b223c90746cb2f680d6d5e198afc690dd4d Mon Sep 17 00:00:00 2001 +From: Norbert Lange +Date: Mon, 4 Dec 2017 10:56:45 +0100 +Subject: [PATCH] agent: add install target to the CMakeLists + +It is common for CMake packages to make sure that 'make install' +works properly, and that's what most users expect. + +More specifically, build systems such as Buildroot also expect +'make install' to do the right thing for CMake-based packages + +Signed-off-by: Norbert Lange +--- + agent/CMakeLists.txt | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/agent/CMakeLists.txt b/agent/CMakeLists.txt +index aef15b96..605862b2 100644 +--- a/agent/CMakeLists.txt ++++ b/agent/CMakeLists.txt +@@ -1,6 +1,8 @@ + # -*- cmake -*- + + cmake_minimum_required(VERSION 2.8) ++project(tcfagent C) ++include(GNUInstallDirs) + + set(CMAKE_COLOR_MAKEFILE OFF) + +@@ -43,3 +45,15 @@ message(STATUS "machine:" ${TCF_MACHINE}) + + add_executable(agent tcf/main/main.c) + target_link_libraries(agent ${TCF_LIB_NAME}) ++ ++# executable and library cant have the same target name, ++# but we can rename the output ++set_target_properties(agent ++ PROPERTIES OUTPUT_NAME tcf-agent) ++ ++# add target to install all outputs ++install(TARGETS agent ${TCF_LIB_NAME} ++ RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++) +-- +2.15.1 + diff --git a/buildroot/package/tcf-agent/0002-linux-remove-explicit-uses-of-__ptrace_request.patch b/buildroot/package/tcf-agent/0002-linux-remove-explicit-uses-of-__ptrace_request.patch new file mode 100644 index 0000000..5c82039 --- /dev/null +++ b/buildroot/package/tcf-agent/0002-linux-remove-explicit-uses-of-__ptrace_request.patch @@ -0,0 +1,103 @@ +From 3e662598e1d9ad682e470988764c3af5b1a78cb7 Mon Sep 17 00:00:00 2001 +From: Norbert Lange +Date: Fri, 1 Dec 2017 13:15:50 +0100 +Subject: [PATCH] linux: remove explicit uses of __ptrace_request + +This type is not to be used directly, and with musl it wont build + +Signed-off-by: Norbert Lange +--- + agent/machine/arm/tcf/cpudefs-mdep.c | 4 ++-- + agent/machine/arm/tcf/regset-mdep.h | 4 ++-- + agent/system/GNU/Linux/tcf/context-linux.c | 18 +++++++++--------- + 3 files changed, 13 insertions(+), 13 deletions(-) + +diff --git a/agent/machine/arm/tcf/cpudefs-mdep.c b/agent/machine/arm/tcf/cpudefs-mdep.c +index 27ab0129..0bc8b146 100644 +--- a/agent/machine/arm/tcf/cpudefs-mdep.c ++++ b/agent/machine/arm/tcf/cpudefs-mdep.c +@@ -89,10 +89,10 @@ static RegisterDefinition * lr_def = NULL; + static RegisterDefinition * cpsr_def = NULL; + + #if !defined(PTRACE_GETHBPREGS) +-#define PTRACE_GETHBPREGS (enum __ptrace_request)29 ++#define PTRACE_GETHBPREGS 29 + #endif + #if !defined(PTRACE_SETHBPREGS) +-#define PTRACE_SETHBPREGS (enum __ptrace_request)30 ++#define PTRACE_SETHBPREGS 30 + #endif + + #define ARM_DEBUG_ARCH_V6 1 +diff --git a/agent/machine/arm/tcf/regset-mdep.h b/agent/machine/arm/tcf/regset-mdep.h +index e5516042..893ba64f 100644 +--- a/agent/machine/arm/tcf/regset-mdep.h ++++ b/agent/machine/arm/tcf/regset-mdep.h +@@ -28,11 +28,11 @@ + #endif + + #ifndef PTRACE_GETREGSET +-#define PTRACE_GETREGSET (enum __ptrace_request)0x4204 ++#define PTRACE_GETREGSET 0x4204 + #endif + + #ifndef PTRACE_SETREGSET +-#define PTRACE_SETREGSET (enum __ptrace_request)0x4205 ++#define PTRACE_SETREGSET 0x4205 + #endif + + struct regset_gp { +diff --git a/agent/system/GNU/Linux/tcf/context-linux.c b/agent/system/GNU/Linux/tcf/context-linux.c +index d4eb5e6b..4c86021e 100644 +--- a/agent/system/GNU/Linux/tcf/context-linux.c ++++ b/agent/system/GNU/Linux/tcf/context-linux.c +@@ -60,10 +60,10 @@ + #endif + + #if !defined(PTRACE_SETOPTIONS) +-#define PTRACE_SETOPTIONS (enum __ptrace_request)0x4200 +-#define PTRACE_GETEVENTMSG (enum __ptrace_request)0x4201 +-#define PTRACE_GETSIGINFO (enum __ptrace_request)0x4202 +-#define PTRACE_SETSIGINFO (enum __ptrace_request)0x4203 ++#define PTRACE_SETOPTIONS 0x4200 ++#define PTRACE_GETEVENTMSG 0x4201 ++#define PTRACE_GETSIGINFO 0x4202 ++#define PTRACE_SETSIGINFO 0x4203 + + #define PTRACE_O_TRACESYSGOOD 0x00000001 + #define PTRACE_O_TRACEFORK 0x00000002 +@@ -85,8 +85,8 @@ + + #if defined(__arm__) || defined(__aarch64__) + #if !defined(PTRACE_GETVFPREGS) +-#define PTRACE_GETVFPREGS (enum __ptrace_request)27 +-#define PTRACE_SETVFPREGS (enum __ptrace_request)28 ++#define PTRACE_GETVFPREGS 27 ++#define PTRACE_SETVFPREGS 28 + #endif + #endif + +@@ -483,7 +483,7 @@ static const char * get_ptrace_cmd_name(int cmd) { + static int do_single_step(Context * ctx) { + uint32_t is_cont = 0; + ContextExtensionLinux * ext = EXT(ctx); +- enum __ptrace_request cmd = PTRACE_SINGLESTEP; ++ int cmd = PTRACE_SINGLESTEP; + + assert(!ext->pending_step); + +@@ -540,9 +540,9 @@ int context_continue(Context * ctx) { + int signal = 0; + ContextExtensionLinux * ext = EXT(ctx); + #if USE_PTRACE_SYSCALL +- enum __ptrace_request cmd = PTRACE_SYSCALL; ++ int cmd = PTRACE_SYSCALL; + #else +- enum __ptrace_request cmd = PTRACE_CONT; ++ int cmd = PTRACE_CONT; + #endif + + assert(is_dispatch_thread()); +-- +2.15.1 + diff --git a/buildroot/package/tcf-agent/0003-linux-provide-canonicalize_file_name-for-all-c-libs-.patch b/buildroot/package/tcf-agent/0003-linux-provide-canonicalize_file_name-for-all-c-libs-.patch new file mode 100644 index 0000000..8532307 --- /dev/null +++ b/buildroot/package/tcf-agent/0003-linux-provide-canonicalize_file_name-for-all-c-libs-.patch @@ -0,0 +1,46 @@ +From 1323aa4459004b9817f0cfbf4b59c31480d527cf Mon Sep 17 00:00:00 2001 +From: Norbert Lange +Date: Fri, 1 Dec 2017 13:34:08 +0100 +Subject: [PATCH] linux: provide canonicalize_file_name for all c libs except + glibc + +musl was not covered so far, and this library does not define a +macro for detection. +unless glibc is detected, a canonicalize_file_name implementation +will be provided. + +Signed-off-by: Norbert Lange +--- + agent/tcf/framework/mdep.c | 2 +- + agent/tcf/framework/mdep.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/agent/tcf/framework/mdep.c b/agent/tcf/framework/mdep.c +index 8aee811f..d38036be 100644 +--- a/agent/tcf/framework/mdep.c ++++ b/agent/tcf/framework/mdep.c +@@ -1097,7 +1097,7 @@ char * canonicalize_file_name(const char * path) { + return strdup(res); + } + +-#elif defined(__UCLIBC__) ++#elif defined(__UCLIBC__) || !defined(__GLIBC_) + + char * canonicalize_file_name(const char * path) { + return realpath(path, NULL); +diff --git a/agent/tcf/framework/mdep.h b/agent/tcf/framework/mdep.h +index f90f03f2..3e331383 100644 +--- a/agent/tcf/framework/mdep.h ++++ b/agent/tcf/framework/mdep.h +@@ -292,7 +292,7 @@ extern int loc_clock_gettime(int, struct timespec *); + + #define O_BINARY 0 + +-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) || defined(__sun__) ++#if (defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) || defined(__sun__)) | !defined (__GLIBC__) + # define O_LARGEFILE 0 + extern char ** environ; + extern char * canonicalize_file_name(const char * path); +-- +2.15.1 + diff --git a/buildroot/package/tcf-agent/Config.in b/buildroot/package/tcf-agent/Config.in new file mode 100644 index 0000000..9cd2831 --- /dev/null +++ b/buildroot/package/tcf-agent/Config.in @@ -0,0 +1,42 @@ +config BR2_PACKAGE_TCF_AGENT + bool "tcf-agent" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS + depends on BR2_USE_MMU # util-linux + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Target Communication Framework Agent is an example + application using the Target Communication Framework + Library. + + Target Communication Framework is universal, extensible, + simple, lightweight, vendor agnostic framework for tools and + targets to communicate for purpose of debugging, profiling, + code patching and other device software development needs. + + tcf-agent is a daemon, which provides TCF services that can + be used by local and remote clients. + + https://wiki.eclipse.org/TCF + +config BR2_PACKAGE_TCF_AGENT_ARCH + string + default "arm" if BR2_arm || BR2_armeb + default "a64" if BR2_aarch64 || BR2_aarch64_be + default "i686" if BR2_i386 && BR2_ARCH="i686" + default "i386" if BR2_i386 && !BR2_ARCH="i686" + default "x86_64" if BR2_x86_64 + default "powerpc" if BR2_powerpc || BR2_powerpcle +# those architectures fail to build currently +# default "ppc64" if BR2_powerpc64 || BR2_powerpc64le +# default "microblaze" if BR2_microblaze || BR2_microblazeel + +config BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS + bool + default y if BR2_PACKAGE_TCF_AGENT_ARCH != "" + +comment "tcf-agent needs a toolchain w/ threads" + depends on BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/tcf-agent/S55tcf-agent b/buildroot/package/tcf-agent/S55tcf-agent new file mode 100755 index 0000000..4418a54 --- /dev/null +++ b/buildroot/package/tcf-agent/S55tcf-agent @@ -0,0 +1,40 @@ +#!/bin/sh + +DAEMON_PATH=/usr/sbin/tcf-agent +DAEMON_NAME=tcf-agent +DAEMON_ARGS="-L- -l0" + +PIDFILE=/var/run/$DAEMON_NAME.pid +[ -r /etc/default/$DAEMON_NAME ] && . /etc/default/$DAEMON_NAME + +start() { + printf "Starting $DAEMON_NAME: " + start-stop-daemon -S -o -q -p $PIDFILE -m -b \ + -x $DAEMON_PATH -- $DAEMON_ARGS + + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping $DAEMON_NAME: " + start-stop-daemon -K -o -q -p $PIDFILE \ + -x $DAEMON_PATH + + [ $? = 0 ] && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/tcf-agent/tcf-agent.hash b/buildroot/package/tcf-agent/tcf-agent.hash new file mode 100644 index 0000000..d46d520 --- /dev/null +++ b/buildroot/package/tcf-agent/tcf-agent.hash @@ -0,0 +1,5 @@ +# Locally computed: +sha256 94e9277a52929791417d59b515235bf28ca29ffb05c9e89ad331ebc3256fb5df org.eclipse.tcf.agent-1.6.0.tar.gz + +# Hash for license files: +sha256 f82d01b74a513bd3504d08136026a5ac2a7e6ff62ebcde391fa74aa222d11ce0 agent/edl-v10.html diff --git a/buildroot/package/tcf-agent/tcf-agent.mk b/buildroot/package/tcf-agent/tcf-agent.mk new file mode 100644 index 0000000..7b615d3 --- /dev/null +++ b/buildroot/package/tcf-agent/tcf-agent.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# tcf-agent +# +################################################################################ + +TCF_AGENT_VERSION = 1.6.0 +# the tar.xz link was broken the time this file got authored +TCF_AGENT_SOURCE = org.eclipse.tcf.agent-$(TCF_AGENT_VERSION).tar.gz +TCF_AGENT_SITE = http://git.eclipse.org/c/tcf/org.eclipse.tcf.agent.git/snapshot +# see https://wiki.spdx.org/view/Legal_Team/License_List/Licenses_Under_Consideration +TCF_AGENT_LICENSE = BSD-3-Clause +TCF_AGENT_LICENSE_FILES = agent/edl-v10.html + +TCF_AGENT_DEPENDENCIES = util-linux +TCF_AGENT_SUBDIR = agent + +# there is not much purpose for the shared lib, +# if wont be used (unmodifed) outside the tcf-agent application +TCF_AGENT_CONF_OPTS = \ + -DBUILD_SHARED_LIBS=OFF \ + -DTCF_MACHINE=$(call qstrip,$(BR2_PACKAGE_TCF_AGENT_ARCH)) + +define TCF_AGENT_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/tcf-agent/tcf-agent.service \ + $(TARGET_DIR)/usr/lib/systemd/system/tcf-agent.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/tcf-agent.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/tcf-agent.service +endef + +define TCF_AGENT_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/tcf-agent/S55tcf-agent \ + $(TARGET_DIR)/etc/init.d/S55tcf-agent +endef + +$(eval $(cmake-package)) diff --git a/buildroot/package/tcf-agent/tcf-agent.service b/buildroot/package/tcf-agent/tcf-agent.service new file mode 100644 index 0000000..8d2023b --- /dev/null +++ b/buildroot/package/tcf-agent/tcf-agent.service @@ -0,0 +1,9 @@ +[Unit] +Description=Target Communication Framework Agent +After=network.target + +[Service] +ExecStart=/usr/sbin/tcf-agent -L- -l0 + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/tcl/0001-dont-build-compat.patch b/buildroot/package/tcl/0001-dont-build-compat.patch new file mode 100644 index 0000000..85c5c57 --- /dev/null +++ b/buildroot/package/tcl/0001-dont-build-compat.patch @@ -0,0 +1,32 @@ +From: Andrew Ruder +Subject: [PATCH] Disable tcl compatibility layers + +Turn off building compatibility layers for old/broken versions of +standard functions (strstr, strtoul, strtod) with the assumption that +anything buildroot is using as a standard C library will be good enough +to not have broken behavior. + +Signed-off-by: Andrew Ruder +--- + +diff --git a/unix/tcl.m4 b/unix/tcl.m4 +--- a/unix/tcl.m4 ++++ b/unix/tcl.m4 +@@ -2466,7 +2466,7 @@ AC_DEFUN([SC_BUGGY_STRTOD], [ + } + exit(0); + }], tcl_cv_strtod_buggy=ok, tcl_cv_strtod_buggy=buggy, +- tcl_cv_strtod_buggy=buggy)]) ++ tcl_cv_strtod_buggy=ok)]) + if test "$tcl_cv_strtod_buggy" = buggy; then + AC_LIBOBJ([fixstrtod]) + USE_COMPAT=1 +@@ -2725,7 +2725,7 @@ AC_DEFUN([SC_TCL_CHECK_BROKEN_FUNC],[ + if test ["$tcl_ok"] = 1; then + AC_CACHE_CHECK([proper ]$1[ implementation], [tcl_cv_]$1[_unbroken], + AC_TRY_RUN([[int main() {]$2[}]],[tcl_cv_]$1[_unbroken]=ok, +- [tcl_cv_]$1[_unbroken]=broken,[tcl_cv_]$1[_unbroken]=unknown)) ++ [tcl_cv_]$1[_unbroken]=broken,[tcl_cv_]$1[_unbroken]=ok)) + if test ["$tcl_cv_]$1[_unbroken"] = "ok"; then + tcl_ok=1 + else diff --git a/buildroot/package/tcl/Config.in b/buildroot/package/tcl/Config.in new file mode 100644 index 0000000..f1fa054 --- /dev/null +++ b/buildroot/package/tcl/Config.in @@ -0,0 +1,39 @@ +comment "tcl needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + +config BR2_PACKAGE_TCL + bool "tcl" + # fork() + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + # See this mailing list thread: + # http://lists.busybox.net/pipermail/buildroot/2015-March/121198.html + depends on !BR2_STATIC_LIBS + help + TCL (Tool Command Language) is a simple textual language. + + http://www.tcl.tk + +if BR2_PACKAGE_TCL + +config BR2_PACKAGE_TCL_DEL_ENCODINGS + bool "delete encodings (saves 1.6Mb)" + default y + help + Delete encoding files for TCL. If your programs do not use + various tcl character recoding functions, you may safely + choose Y here. + + It saves approx. 1.6 Mb of space. + +config BR2_PACKAGE_TCL_SHLIB_ONLY + bool "install only shared library" + default y + help + Install only TCL shared library and not binary tcl + interpreter (tclsh). + + Saves ~14kb. + +endif diff --git a/buildroot/package/tcl/tcl.hash b/buildroot/package/tcl/tcl.hash new file mode 100644 index 0000000..359b543 --- /dev/null +++ b/buildroot/package/tcl/tcl.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a265409781e4b3edcc4ef822533071b34c3dc6790b893963809b9fe221befe07 tcl8.6.6-src.tar.gz +sha256 c0a69a2bfd757361ec7e6143973b103c90409316b49e9c88db26ad6388e79f16 license.terms diff --git a/buildroot/package/tcl/tcl.mk b/buildroot/package/tcl/tcl.mk new file mode 100644 index 0000000..b9fb7af --- /dev/null +++ b/buildroot/package/tcl/tcl.mk @@ -0,0 +1,80 @@ +################################################################################ +# +# tcl +# +################################################################################ + +TCL_VERSION_MAJOR = 8.6 +TCL_VERSION = $(TCL_VERSION_MAJOR).6 +TCL_SOURCE = tcl$(TCL_VERSION)-src.tar.gz +TCL_SITE = http://downloads.sourceforge.net/project/tcl/Tcl/$(TCL_VERSION) +TCL_LICENSE = TCL +TCL_LICENSE_FILES = license.terms +TCL_SUBDIR = unix +TCL_INSTALL_STAGING = YES +TCL_AUTORECONF = YES + +TCL_CONF_OPTS = \ + --disable-symbols \ + --disable-langinfo \ + --disable-framework + +HOST_TCL_CONF_OPTS = \ + --disable-symbols \ + --disable-langinfo \ + --disable-framework + +# I haven't found a good way to force pkgs to not build +# or configure without just removing the entire pkg directory. +define HOST_TCL_REMOVE_PACKAGES + rm -fr $(@D)/pkgs/sqlite3* $(@D)/pkgs/tdbc* +endef +HOST_TCL_PRE_CONFIGURE_HOOKS += HOST_TCL_REMOVE_PACKAGES + +# We remove the bundled sqlite as we prefer to not use bundled stuff at all. +define TCL_REMOVE_PACKAGES + rm -fr $(@D)/pkgs/sqlite3* \ + $(if $(BR2_PACKAGE_MYSQL),,$(@D)/pkgs/tdbcmysql*) \ + $(@D)/pkgs/tdbcodbc* \ + $(if $(BR2_PACKAGE_POSTGRESQL),,$(@D)/pkgs/tdbcpostgres*) \ + $(if $(BR2_PACKAGE_SQLITE),,$(@D)/pkgs/tdbcsqlite3*) +endef +TCL_PRE_CONFIGURE_HOOKS += TCL_REMOVE_PACKAGES + +ifeq ($(BR2_PACKAGE_TCL_DEL_ENCODINGS),y) +define TCL_REMOVE_ENCODINGS + rm -rf $(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/encoding/* +endef +TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_ENCODINGS +endif + +ifeq ($(BR2_PACKAGE_TCL_SHLIB_ONLY),y) +define TCL_REMOVE_TCLSH + rm -f $(TARGET_DIR)/usr/bin/tclsh$(TCL_VERSION_MAJOR) +endef +TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_TCLSH +else +define TCL_SYMLINK_TCLSH + ln -sf tclsh$(TCL_VERSION_MAJOR) $(TARGET_DIR)/usr/bin/tclsh +endef +TCL_POST_INSTALL_TARGET_HOOKS += TCL_SYMLINK_TCLSH +endif + +# Until someone needs it, we don't handle locale installation. tcl has +# a complicated method of translating LANG-style locale names into its internal +# .msg name which makes it difficult to save the correct locales per the +# configured whitelist. +define TCL_REMOVE_EXTRA + rm -fr $(TARGET_DIR)/usr/lib/tclConfig.sh \ + $(TARGET_DIR)/usr/lib/tclooConfig.sh \ + $(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/tclAppInit.c \ + $(TARGET_DIR)/usr/lib/tcl$(TCL_VERSION_MAJOR)/msgs +endef +TCL_POST_INSTALL_TARGET_HOOKS += TCL_REMOVE_EXTRA + +TCL_DEPENDENCIES = $(if $(BR2_PACKAGE_SQLITE),sqlite) \ + $(if $(BR2_PACKAGE_MYSQL),mysql) \ + $(if $(BR2_PACKAGE_POSTGRESQL),postgresql) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/tclap/Config.in b/buildroot/package/tclap/Config.in new file mode 100644 index 0000000..560cf33 --- /dev/null +++ b/buildroot/package/tclap/Config.in @@ -0,0 +1,18 @@ +comment "tclap needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_TCLAP + bool "tclap" + depends on BR2_INSTALL_LIBSTDCPP + help + This is a small, flexible library that provides a simple + interface for defining and accessing command line + arguments. It was initially inspired by the user friendly + CLAP libary. The difference is that this library is + templatized, so the argument class is type independent. Type + independence avoids identical-except-for-type objects, such + as IntArg, FloatArg, and StringArg. While the library is not + strictly compliant with the GNU or POSIX standards, it is + close. + + http://tclap.sourceforge.net/ diff --git a/buildroot/package/tclap/tclap.hash b/buildroot/package/tclap/tclap.hash new file mode 100644 index 0000000..55d475f --- /dev/null +++ b/buildroot/package/tclap/tclap.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 9f9f0fe3719e8a89d79b6ca30cf2d16620fba3db5b9610f9b51dd2cd033deebb tclap-1.2.1.tar.gz diff --git a/buildroot/package/tclap/tclap.mk b/buildroot/package/tclap/tclap.mk new file mode 100644 index 0000000..807f247 --- /dev/null +++ b/buildroot/package/tclap/tclap.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# tclap +# +################################################################################ + +TCLAP_VERSION = 1.2.1 +TCLAP_SITE = http://downloads.sourceforge.net/project/tclap +TCLAP_LICENSE = MIT +TCLAP_LICENSE_FILES = COPYING +TCLAP_INSTALL_STAGING = YES + +# This package is a pure C++ template library, only made of headers. +TCLAP_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/tcllib/Config.in b/buildroot/package/tcllib/Config.in new file mode 100644 index 0000000..b0a4ad0 --- /dev/null +++ b/buildroot/package/tcllib/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_TCLLIB + bool "tcllib" + help + Tcllib is a collection of utility modules for Tcl. These + modules provide a wide variety of functionality, from + implementations of standard data structures to + implementations of common networking protocols. The intent + is to collect commonly used function into a single library, + which users can rely on to be available and stable + + http://tcl.activestate.com/software/tcllib/ diff --git a/buildroot/package/tcllib/tcllib.hash b/buildroot/package/tcllib/tcllib.hash new file mode 100644 index 0000000..d08b5a1 --- /dev/null +++ b/buildroot/package/tcllib/tcllib.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 0db9e17d6c0f44d3ca2df2ea5023e35c0f3767e7008c3cb26d201446eb68add1 tcllib-1.13.tar.bz2 +sha256 530ec70eb11a455bd582d86b6d74c2dd7cc367d90b8bbdd59fcb43ae02f95a4b license.terms diff --git a/buildroot/package/tcllib/tcllib.mk b/buildroot/package/tcllib/tcllib.mk new file mode 100644 index 0000000..dfa35c8 --- /dev/null +++ b/buildroot/package/tcllib/tcllib.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# tcllib +# +################################################################################ + +TCLLIB_VERSION = 1.13 +TCLLIB_SOURCE = tcllib-$(TCLLIB_VERSION).tar.bz2 +TCLLIB_SITE = http://downloads.sourceforge.net/project/tcllib/tcllib/$(TCLLIB_VERSION) +TCLLIB_LICENSE = TCL +TCLLIB_LICENSE_FILES = license.terms +TCLLIB_DEPENDENCIES = host-tcl +TCLLIB_CONF_ENV = ac_cv_path_tclsh="$(HOST_DIR)/bin/tclsh$(TCL_VERSION_MAJOR)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/tcpdump/Config.in b/buildroot/package/tcpdump/Config.in new file mode 100644 index 0000000..8b54c60 --- /dev/null +++ b/buildroot/package/tcpdump/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_TCPDUMP + bool "tcpdump" + select BR2_PACKAGE_LIBPCAP + help + A tool for network monitoring and data acquisition. + + http://www.tcpdump.org/ + +if BR2_PACKAGE_TCPDUMP + +config BR2_PACKAGE_TCPDUMP_SMB + bool "smb dump support" + help + enable possibly-buggy SMB printer + +endif diff --git a/buildroot/package/tcpdump/tcpdump.hash b/buildroot/package/tcpdump/tcpdump.hash new file mode 100644 index 0000000..0eb56e6 --- /dev/null +++ b/buildroot/package/tcpdump/tcpdump.hash @@ -0,0 +1,3 @@ +# Locally calculated after checking pgp signature at http://www.tcpdump.org/release/tcpdump-4.9.2.tar.gz.sig +sha256 798b3536a29832ce0cbb07fafb1ce5097c95e308a6f592d14052e1ef1505fe79 tcpdump-4.9.2.tar.gz +sha256 9b03d5d13e66d6de02a4bb2d0dd1cb9f41808d045962cdcc42350d5291b141a1 LICENSE diff --git a/buildroot/package/tcpdump/tcpdump.mk b/buildroot/package/tcpdump/tcpdump.mk new file mode 100644 index 0000000..2a6d095 --- /dev/null +++ b/buildroot/package/tcpdump/tcpdump.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# tcpdump +# +################################################################################ + +TCPDUMP_VERSION = 4.9.2 +TCPDUMP_SITE = http://www.tcpdump.org/release +TCPDUMP_LICENSE = BSD-3-Clause +TCPDUMP_LICENSE_FILES = LICENSE +TCPDUMP_CONF_ENV = \ + ac_cv_linux_vers=2 \ + td_cv_buggygetaddrinfo=no \ + PCAP_CONFIG=$(STAGING_DIR)/usr/bin/pcap-config +TCPDUMP_CONF_OPTS = \ + --without-crypto \ + --with-system-libpcap \ + $(if $(BR2_PACKAGE_TCPDUMP_SMB),--enable-smb,--disable-smb) +TCPDUMP_DEPENDENCIES = zlib libpcap + +ifeq ($(BR2_STATIC_LIBS),y) +TCPDUMP_CONF_OPTS += LIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +# make install installs an unneeded extra copy of the tcpdump binary +define TCPDUMP_REMOVE_DUPLICATED_BINARY + rm -f $(TARGET_DIR)/usr/sbin/tcpdump.$(TCPDUMP_VERSION) +endef + +TCPDUMP_POST_INSTALL_TARGET_HOOKS += TCPDUMP_REMOVE_DUPLICATED_BINARY + +$(eval $(autotools-package)) diff --git a/buildroot/package/tcping/Config.in b/buildroot/package/tcping/Config.in new file mode 100644 index 0000000..e72df09 --- /dev/null +++ b/buildroot/package/tcping/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_TCPING + bool "tcping" + help + tcping does a TCP connect to the given ip/port + combination. The user can specify a timeout in seconds. This + is useful in shell scripts running in firewalled + environments. Often SYNs are just being dropped by + firewalls, thus connection establishment will be retried + several times (for minutes) until a TCP timeout is + reached. With tcping it is possible to check first if the + desired port is reachable and then start connection + establishment. + + http://linuxco.de/tcping/tcping.html diff --git a/buildroot/package/tcping/tcping.hash b/buildroot/package/tcping/tcping.hash new file mode 100644 index 0000000..de42775 --- /dev/null +++ b/buildroot/package/tcping/tcping.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 1ad52e904094d12b225ac4a0bc75297555e931c11a1501445faa548ff5ecdbd0 tcping-1.3.5.tar.gz diff --git a/buildroot/package/tcping/tcping.mk b/buildroot/package/tcping/tcping.mk new file mode 100644 index 0000000..7edf45e --- /dev/null +++ b/buildroot/package/tcping/tcping.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# tcping +# +################################################################################ + +TCPING_VERSION = 1.3.5 +TCPING_SITE = http://linuxco.de/tcping +TCPING_LICENSE = GPL-3.0+ +TCPING_LICENSE_FILES = LICENSE + +define TCPING_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CCFLAGS="$(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ + -C $(@D) tcping.linux +endef + +define TCPING_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/tcping $(TARGET_DIR)/usr/bin/tcping +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/tcpreplay/Config.in b/buildroot/package/tcpreplay/Config.in new file mode 100644 index 0000000..5e36452 --- /dev/null +++ b/buildroot/package/tcpreplay/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_TCPREPLAY + bool "tcpreplay" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPCAP + help + Tcpreplay is a tool for replaying network traffic from files + saved with tcpdump or other tools which write pcap(3) files. + + http://tcpreplay.appneta.com/ diff --git a/buildroot/package/tcpreplay/tcpreplay.hash b/buildroot/package/tcpreplay/tcpreplay.hash new file mode 100644 index 0000000..b033d3c --- /dev/null +++ b/buildroot/package/tcpreplay/tcpreplay.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 043756c532dab93e2be33a517ef46b1341f7239278a1045ae670041dd8a4531d tcpreplay-4.2.6.tar.gz diff --git a/buildroot/package/tcpreplay/tcpreplay.mk b/buildroot/package/tcpreplay/tcpreplay.mk new file mode 100644 index 0000000..adccde0 --- /dev/null +++ b/buildroot/package/tcpreplay/tcpreplay.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# tcpreplay +# +################################################################################ + +TCPREPLAY_VERSION = 4.2.6 +TCPREPLAY_SITE = https://github.com/appneta/tcpreplay/releases/download/v$(TCPREPLAY_VERSION) +TCPREPLAY_LICENSE = GPL-3.0 +TCPREPLAY_LICENSE_FILES = docs/LICENSE +TCPREPLAY_CONF_ENV = \ + tr_cv_libpcap_version=">= 0.7.0" \ + ac_cv_have_bpf=no \ + $(call AUTOCONF_AC_CHECK_FILE_VAL,$(STAGING_DIR)/usr/include/pcap-netmap.c)=no +TCPREPLAY_CONF_OPTS = --with-libpcap=$(STAGING_DIR)/usr +TCPREPLAY_DEPENDENCIES = libpcap + +# libpcap may depend on symbols in other libs +TCPREPLAY_LIBS = $(STAGING_DIR)/usr/bin/pcap-config --static --libs +TCPREPLAY_CONF_ENV += ac_cv_search_pcap_close="`$(TCPREPLAY_LIBS)`" \ + LIBS="`$(TCPREPLAY_LIBS)`" + +ifeq ($(BR2_STATIC_LIBS),y) +TCPREPLAY_CONF_OPTS += --enable-dynamic-link=no +endif + +ifeq ($(BR2_PACKAGE_TCPDUMP),y) +TCPREPLAY_CONF_ENV += ac_cv_path_tcpdump_path=/usr/sbin/tcpdump +else +TCPREPLAY_CONF_ENV += ac_cv_path_tcpdump_path=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/tegrarcm/0001-Don-t-assume-cryptopp-is-system-wide-installed.patch b/buildroot/package/tegrarcm/0001-Don-t-assume-cryptopp-is-system-wide-installed.patch new file mode 100644 index 0000000..3c738d8 --- /dev/null +++ b/buildroot/package/tegrarcm/0001-Don-t-assume-cryptopp-is-system-wide-installed.patch @@ -0,0 +1,114 @@ +From 5ea6b3859ebe16ff47856b58262b14463e119c13 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Tue, 19 Apr 2016 22:14:42 +0200 +Subject: [PATCH] Don't assume cryptopp is system-wide installed + +The current build system adds "-isystem /usr/include/$(CRYPTOLIB)" to +AM_CPPFLAGS, but this is wrong because cryptopp might not be installed +in this location. Instead, the build system should simply include + or and rely on the compiler include +path. + +The tricky part is that it can be or . To +solve this, we use a solution similar to the one used in +https://github.com/bingmann/crypto-speedtest/blob/master/m4/cryptopp.m4 +and +https://github.com/bingmann/crypto-speedtest/blob/master/src/speedtest_cryptopp.cpp: +the configure script fills in a variable called +CRYPTOLIB_HEADER_PREFIX, and we use that in the C++ code to include +the right header file. + +It is worth mentioning that doing #include + doesn't work, and we have to use an +intermediate #define'd constant to overcome this C preprocessor +limitation. + +Signed-off-by: Thomas Petazzoni +Submitted upstream at https://github.com/NVIDIA/tegrarcm/pull/2 +--- + configure.ac | 1 + + src/Makefile.am | 2 +- + src/aes-cmac.cpp | 28 +++++++++++++++++----------- + 3 files changed, 19 insertions(+), 12 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 943654f..620e158 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -33,6 +33,7 @@ AC_LINK_IFELSE( + [AC_MSG_ERROR([libcrypto++/libcryptopp is not installed.])])] + ) + AC_SUBST(CRYPTOLIB) ++AC_DEFINE_UNQUOTED([CRYPTOLIB_HEADER_PREFIX], [$CRYPTOLIB], [Location of cryptolib header]) + LDFLAGS=$SAVED_LDFLAGS + AC_LANG(C) + +diff --git a/src/Makefile.am b/src/Makefile.am +index 3dad0e6..35a606f 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -1,5 +1,5 @@ + AM_CFLAGS = -Wall -std=c99 +-AM_CPPFLAGS = -isystem /usr/include/$(CRYPTOLIB) $(LIBUSB_CFLAGS) ++AM_CPPFLAGS = $(LIBUSB_CFLAGS) + + bin_PROGRAMS = tegrarcm + tegrarcm_SOURCES = \ +diff --git a/src/aes-cmac.cpp b/src/aes-cmac.cpp +index 24c89f8..da8be5a 100644 +--- a/src/aes-cmac.cpp ++++ b/src/aes-cmac.cpp +@@ -26,6 +26,9 @@ + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ ++ ++#include "config.h" ++ + #include + using std::cout; + using std::cerr; +@@ -40,26 +43,29 @@ using std::string; + #include + using std::exit; + +-#include "cryptlib.h" +-using CryptoPP::Exception; ++#define CRYPTOPP_INCLUDE_CRYPTLIB ++#define CRYPTOPP_INCLUDE_CMAC ++#define CRYPTOPP_INCLUDE_AES ++#define CRYPTOPP_INCLUDE_HEX ++#define CRYPTOPP_INCLUDE_FILTERS ++#define CRYPTOPP_INCLUDE_SECBLOCK + +-#include "cmac.h" +-using CryptoPP::CMAC; ++#include CRYPTOPP_INCLUDE_CRYPTLIB ++#include CRYPTOPP_INCLUDE_CMAC ++#include CRYPTOPP_INCLUDE_AES ++#include CRYPTOPP_INCLUDE_HEX ++#include CRYPTOPP_INCLUDE_FILTERS ++#include CRYPTOPP_INCLUDE_SECBLOCK + +-#include "aes.h" ++using CryptoPP::Exception; ++using CryptoPP::CMAC; + using CryptoPP::AES; +- +-#include "hex.h" + using CryptoPP::HexEncoder; + using CryptoPP::HexDecoder; +- +-#include "filters.h" + using CryptoPP::StringSink; + using CryptoPP::StringSource; + using CryptoPP::HashFilter; + using CryptoPP::HashVerificationFilter; +- +-#include "secblock.h" + using CryptoPP::SecByteBlock; + + extern "C" int cmac_hash(const unsigned char *msg, int len, unsigned char *cmac_buf) +-- +2.6.4 + diff --git a/buildroot/package/tegrarcm/Config.in.host b/buildroot/package/tegrarcm/Config.in.host new file mode 100644 index 0000000..d8cbb94 --- /dev/null +++ b/buildroot/package/tegrarcm/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_TEGRARCM + bool "host tegrarcm" + depends on BR2_arm || BR2_armeb + help + This program is used to send code to a Tegra device in + recovery mode. + + https://github.com/NVIDIA/tegrarcm diff --git a/buildroot/package/tegrarcm/tegrarcm.hash b/buildroot/package/tegrarcm/tegrarcm.hash new file mode 100644 index 0000000..4194a4c --- /dev/null +++ b/buildroot/package/tegrarcm/tegrarcm.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 538cb0af237ab33e070d3aeb6cc828cd7ef453753ba2ccc21b87ed43faac51bd tegrarcm-v1.7.tar.gz diff --git a/buildroot/package/tegrarcm/tegrarcm.mk b/buildroot/package/tegrarcm/tegrarcm.mk new file mode 100644 index 0000000..ad4c317 --- /dev/null +++ b/buildroot/package/tegrarcm/tegrarcm.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# tegrarcm +# +################################################################################ + +TEGRARCM_VERSION = v1.7 +TEGRARCM_SITE = $(call github,NVIDIA,tegrarcm,$(TEGRARCM_VERSION)) +TEGRARCM_LICENSE = BSD-3-Clause / NVIDIA Software License (src/miniloader) +TEGRARCM_LICENSE_FILES = LICENSE +TEGRARCM_AUTORECONF = YES +HOST_TEGRARCM_DEPENDENCIES = host-libusb host-pkgconf host-cryptopp + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/tekui/Config.in b/buildroot/package/tekui/Config.in new file mode 100644 index 0000000..067a6dd --- /dev/null +++ b/buildroot/package/tekui/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_TEKUI + bool "tekui" + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_LUAFILESYSTEM # runtime only + select BR2_PACKAGE_LUAEXPAT # runtime only + select BR2_PACKAGE_LUASOCKET # runtime only + select BR2_PACKAGE_LUAPOSIX # runtime only + help + TekUI is a small, freestanding and portable graphical user + interface (GUI) toolkit written in Lua and C. It was + initially developed for the X Window System and has been + ported to DirectFB, Windows, Nano-X and a raw framebuffer + since + + http://tekui.neoscientists.org/ + +comment "tekui needs a Lua interpreter and a toolchain w/ threads, dynamic library" + depends on !BR2_PACKAGE_HAS_LUAINTERPRETER || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/tekui/tekui.hash b/buildroot/package/tekui/tekui.hash new file mode 100644 index 0000000..07de2ed --- /dev/null +++ b/buildroot/package/tekui/tekui.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 28abfaacc0f2ddae962afbbca862a7fb619c33a99a497be9edd746091013dd7f tekui-1.12.tgz diff --git a/buildroot/package/tekui/tekui.mk b/buildroot/package/tekui/tekui.mk new file mode 100644 index 0000000..f9ae849 --- /dev/null +++ b/buildroot/package/tekui/tekui.mk @@ -0,0 +1,66 @@ +################################################################################ +# +# tekui +# +################################################################################ + +TEKUI_VERSION = 1.12 +TEKUI_SOURCE = tekui-$(TEKUI_VERSION).tgz +TEKUI_SITE = http://tekui.neoscientists.org/releases +TEKUI_LICENSE = MIT +TEKUI_LICENSE_FILES = COPYRIGHT +TEKUI_DEPENDENCIES = freetype luainterpreter + +TEKUI_MAKE_OPTS = \ + CC="$(TARGET_CC) -fPIC" \ + AR="$(TARGET_AR) rcu" \ + INSTALL_S="install" \ + LUAVER=$(LUAINTERPRETER_ABIVER) \ + LUA_DEFS="" + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +TEKUI_DEPENDENCIES += libpng +TEKUI_MAKE_OPTS += TEKUI_DEFS="-DENABLE_GRADIENT -DENABLE_FILENO -DENABLE_PIXMAP_CACHE -DENABLE_PNG" +TEKUI_MAKE_OPTS += TEKUI_LIBS=-lpng +else +TEKUI_MAKE_OPTS += TEKUI_DEFS="-DENABLE_GRADIENT -DENABLE_FILENO -DENABLE_PIXMAP_CACHE" +endif + +ifeq ($(BR2_PACKAGE_DEJAVU),y) +TEKUI_FONTDIR=/usr/share/fonts/dejavu +else +TEKUI_FONTDIR=/usr/share/lua/$(LUAINTERPRETER_ABIVER)/tek/ui/font +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT)$(BR2_PACKAGE_XLIB_LIBXXF86VM),yy) +TEKUI_DEPENDENCIES += xlib_libXft xlib_libXxf86vm +TEKUI_MAKE_OPTS += \ + X11_LIBS="-lXext -lXxf86vm -lXft -lfreetype -lfontconfig" \ + X11_DEFS="-D_XOPEN_SOURCE -DENABLE_XFT -DENABLE_XVID -I$(STAGING_DIR)/usr/include/freetype2 -I$(STAGING_DIR)/usr/include/fontconfig" \ + DISPLAY_DRIVER=x11 +else +ifeq ($(BR2_PACKAGE_DIRECTFB),y) +TEKUI_DEPENDENCIES += directfb +TEKUI_MAKE_OPTS += \ + DIRECTFB_LIBS="-lfreetype -ldirectfb -lpthread" \ + DIRECTFB_DEFS="-D_REENTRANT -I$(STAGING_DIR)/usr/include/directfb -I$(STAGING_DIR)/usr/include/freetype2" \ + DISPLAY_DRIVER=directfb +else +TEKUI_MAKE_OPTS += \ + FREETYPE_LIBS=-lfreetype \ + FREETYPE_DEFS="-I$(STAGING_DIR)/usr/include/freetype2" \ + RAWFB_SUB_LIBS="" \ + RAWFB_SUB_DEFS="-DDEF_FONTDIR=\\\"$(TEKUI_FONTDIR)\\\"" \ + DISPLAY_DRIVER=rawfb +endif +endif + +define TEKUI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TEKUI_MAKE_OPTS) PREFIX="/usr" -C $(@D) all +endef + +define TEKUI_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TEKUI_MAKE_OPTS) PREFIX="$(TARGET_DIR)/usr" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/terminology/Config.in b/buildroot/package/terminology/Config.in new file mode 100644 index 0000000..f367ce5 --- /dev/null +++ b/buildroot/package/terminology/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_TERMINOLOGY + bool "terminology" + depends on BR2_PACKAGE_EFL + help + Terminology is an EFL terminal emulator with some extra + bells and whistles. + + https://www.enlightenment.org/about-terminology diff --git a/buildroot/package/terminology/terminology.hash b/buildroot/package/terminology/terminology.hash new file mode 100644 index 0000000..81ae5d8 --- /dev/null +++ b/buildroot/package/terminology/terminology.hash @@ -0,0 +1,2 @@ +# From https://sourceforge.net/p/enlightenment/mailman/message/36026490/ +sha256 da12b8a24ca5248b2d292d9b1e19cabc61ae29b21f96d4b6f4f3e7b4feeecc16 terminology-1.1.1.tar.xz diff --git a/buildroot/package/terminology/terminology.mk b/buildroot/package/terminology/terminology.mk new file mode 100644 index 0000000..ed811b3 --- /dev/null +++ b/buildroot/package/terminology/terminology.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# terminology +# +################################################################################ + +TERMINOLOGY_VERSION = 1.1.1 +TERMINOLOGY_SOURCE = terminology-$(TERMINOLOGY_VERSION).tar.xz +TERMINOLOGY_SITE = https://download.enlightenment.org/rel/apps/terminology +TERMINOLOGY_LICENSE = BSD-2-Clause +TERMINOLOGY_LICENSE_FILES = COPYING + +TERMINOLOGY_DEPENDENCIES = efl host-pkgconf +TERMINOLOGY_CONF_OPTS = --with-edje-cc=$(HOST_DIR)/bin/edje_cc + +$(eval $(autotools-package)) diff --git a/buildroot/package/tesseract-ocr/Config.in b/buildroot/package/tesseract-ocr/Config.in new file mode 100644 index 0000000..3afaca7 --- /dev/null +++ b/buildroot/package/tesseract-ocr/Config.in @@ -0,0 +1,44 @@ +comment "tesseract-ocr needs a toolchain w/ threads, C++, gcc >= 4.8, dynamic library, wchar" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || BR2_STATIC_LIBS || !BR2_USE_WCHAR + +menuconfig BR2_PACKAGE_TESSERACT_OCR + bool "tesseract-ocr" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + select BR2_PACKAGE_LEPTONICA + help + Tesseract is an OCR (Optical Character Recognition) engine, + It can be used directly, or (for programmers) using an API. + It supports a wide variety of languages. + + https://github.com/tesseract-ocr/tesseract + +if BR2_PACKAGE_TESSERACT_OCR + +comment "tesseract-ocr languages support" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_ENG + bool "English" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_FRA + bool "French" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_GER + bool "German" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_SPA + bool "Spanish" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_SIM + bool "Simplified Chinese" + +config BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_TRA + bool "Traditional Chinese" + +endif diff --git a/buildroot/package/tesseract-ocr/tesseract-ocr.hash b/buildroot/package/tesseract-ocr/tesseract-ocr.hash new file mode 100644 index 0000000..9bb5b52 --- /dev/null +++ b/buildroot/package/tesseract-ocr/tesseract-ocr.hash @@ -0,0 +1,8 @@ +# locally computed +sha256 3fe83e06d0f73b39f6e92ed9fc7ccba3ef734877b76aa5ddaaa778fac095d996 tesseract-ocr-3.05.00.tar.gz +sha256 c0515c9f1e0c79e1069fcc05c2b2f6a6841fb5e1082d695db160333c1154f06d eng.traineddata +sha256 86afb23ad146467f263e8ade56fd3951b1cc28f8c4eebc34f993d3c02d88a7ab fra.traineddata +sha256 cb7eb42a7e972cec7ef904fe81825d7b547c46df684c814fdb11a930b13bca3a deu.traineddata +sha256 f23985996bbcfe2b57864ccb082783c1c74c87429f04411a04a6ba4d3da2efda spa.traineddata +sha256 323ae74d4a2ff49e932dbb4d6282fe0e67ddfafda075ec85803ecd077207454c chi_sim.traineddata +sha256 774d566bd0b36e4b6c07415dfa5b6b57feb2575b1f5f231d7fe01a52dac5dd0e chi_tra.traineddata diff --git a/buildroot/package/tesseract-ocr/tesseract-ocr.mk b/buildroot/package/tesseract-ocr/tesseract-ocr.mk new file mode 100644 index 0000000..9e315b2 --- /dev/null +++ b/buildroot/package/tesseract-ocr/tesseract-ocr.mk @@ -0,0 +1,72 @@ +################################################################################ +# +# tesseract-ocr +# +################################################################################ + +TESSERACT_OCR_VERSION = 3.05.00 +TESSERACT_OCR_DATA_VERSION = 3.04.00 +TESSERACT_OCR_SITE = $(call github,tesseract-ocr,tesseract,$(TESSERACT_OCR_VERSION)) +TESSERACT_OCR_LICENSE = Apache-2.0 +TESSERACT_OCR_LICENSE_FILES = COPYING + +# Source from github, no configure script provided +TESSERACT_OCR_AUTORECONF = YES + +# cairo, pango and icu are optional dependencies, but only needed for +# building training tools, which are only built explicitly with "make +# training", which is not done by this package. +TESSERACT_OCR_DEPENDENCIES = leptonica host-pkgconf +TESSERACT_OCR_INSTALL_STAGING = YES +TESSERACT_OCR_CONF_ENV = \ + LIBLEPT_HEADERSDIR=$(STAGING_DIR)/usr/include/leptonica +TESSERACT_OCR_CONF_OPTS = \ + --disable-opencl + +# Language data files download +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_ENG),y) +TESSERACT_OCR_DATA_FILES += eng.traineddata +endif + +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_FRA),y) +TESSERACT_OCR_DATA_FILES += fra.traineddata +endif + +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_DEU),y) +TESSERACT_OCR_DATA_FILES += deu.traineddata +endif + +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_SPA),y) +TESSERACT_OCR_DATA_FILES += spa.traineddata +endif + +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_SIM),y) +TESSERACT_OCR_DATA_FILES += chi_sim.traineddata +endif + +ifeq ($(BR2_PACKAGE_TESSERACT_OCR_LANG_CHI_TRA),y) +TESSERACT_OCR_DATA_FILES += chi_tra.traineddata +endif + +TESSERACT_OCR_EXTRA_DOWNLOADS = \ + $(addprefix https://github.com/tesseract-ocr/tessdata/raw/$(TESSERACT_OCR_DATA_VERSION)/,\ + $(TESSERACT_OCR_DATA_FILES)) + +define TESSERACT_OCR_PRECONFIGURE + # Autoreconf step fails due to missing m4 directory + mkdir -p $(@D)/m4 +endef + +TESSERACT_OCR_PRE_CONFIGURE_HOOKS += TESSERACT_OCR_PRECONFIGURE + +# Language data files installation +define TESSERACT_OCR_INSTALL_LANG_DATA + $(foreach langfile,$(TESSERACT_OCR_DATA_FILES), \ + $(INSTALL) -D -m 0644 $(DL_DIR)/$(langfile) \ + $(TARGET_DIR)/usr/share/tessdata/$(langfile) + ) +endef + +TESSERACT_OCR_POST_INSTALL_TARGET_HOOKS += TESSERACT_OCR_INSTALL_LANG_DATA + +$(eval $(autotools-package)) diff --git a/buildroot/package/tftpd/Config.in b/buildroot/package/tftpd/Config.in new file mode 100644 index 0000000..ea5cb30 --- /dev/null +++ b/buildroot/package/tftpd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_TFTPD + bool "tftpd" + # linker issue with pre-6.x toolchains + depends on !(BR2_nios2 && !BR2_TOOLCHAIN_GCC_AT_LEAST_6) + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + HPA's Trivial File Transfer Protocol (tftp) server. diff --git a/buildroot/package/tftpd/S80tftpd-hpa b/buildroot/package/tftpd/S80tftpd-hpa new file mode 100755 index 0000000..4e8361f --- /dev/null +++ b/buildroot/package/tftpd/S80tftpd-hpa @@ -0,0 +1,81 @@ +#! /bin/sh + +OPTIONS="-c -l -s /var/lib/tftpboot" + +set -e + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +DESC="HPA's tftpd" +NAME=tftpd +DAEMON=/usr/sbin/$NAME +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/S80tftpd-hpa + +# +# Function that starts the daemon/service. +# +d_start() { + mkdir -p /var/lib/tftpboot + chmod 1777 /var/lib/tftpboot + $DAEMON $OPTIONS +} + +# +# Function that stops the daemon/service. +# +d_stop() { + killall -q $NAME +} + +# +# Function that sends a SIGHUP to the daemon/service. +# +d_reload() { + d_start + d_stop +} + +case "$1" in + start) + printf "Starting $DESC: " + d_start + echo "done" + ;; + stop) + printf "Stopping $DESC: " + d_stop + echo "done" + ;; + #reload) + # + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + # + # If the daemon responds to changes in its config file + # directly anyway, make this an "exit 0". + # + # printf "Reloading $DESC configuration..." + # d_reload + # echo "done." + #;; + restart|force-reload) + # + # If the "reload" option is implemented, move the "force-reload" + # option to the "reload" entry above. If not, "force-reload" is + # just the same as "restart". + # + printf "Restarting $DESC: " + d_stop + sleep 1 + d_start + echo "done" + ;; + *) + # echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/buildroot/package/tftpd/tftpd.hash b/buildroot/package/tftpd/tftpd.hash new file mode 100644 index 0000000..247b757 --- /dev/null +++ b/buildroot/package/tftpd/tftpd.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/software/network/tftp/tftp-hpa/sha256sums.asc +sha256 afee361df96a2f88344e191f6a25480fd714e1d28d176c3f10cc43fa206b718b tftp-hpa-5.2.tar.xz diff --git a/buildroot/package/tftpd/tftpd.mk b/buildroot/package/tftpd/tftpd.mk new file mode 100644 index 0000000..78df835 --- /dev/null +++ b/buildroot/package/tftpd/tftpd.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# tftpd +# +################################################################################ + +TFTPD_VERSION = 5.2 +TFTPD_SOURCE = tftp-hpa-$(TFTPD_VERSION).tar.xz +TFTPD_SITE = $(BR2_KERNEL_MIRROR)/software/network/tftp/tftp-hpa +TFTPD_CONF_OPTS = --without-tcpwrappers + +# Override BusyBox implementations if BusyBox is enabled. +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +TFTPD_DEPENDENCIES += busybox +endif + +define TFTPD_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/tftp/tftp $(TARGET_DIR)/usr/bin/tftp + $(INSTALL) -D $(@D)/tftpd/tftpd $(TARGET_DIR)/usr/sbin/tftpd +endef + +define TFTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/tftpd/S80tftpd-hpa $(TARGET_DIR)/etc/init.d/S80tftpd-hpa +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/thrift/0001-libevent-cross.patch b/buildroot/package/thrift/0001-libevent-cross.patch new file mode 100644 index 0000000..f07caa7 --- /dev/null +++ b/buildroot/package/thrift/0001-libevent-cross.patch @@ -0,0 +1,16 @@ +Make it cross-compile happy the hard way, there's no clean way. + +Signed-off-by: Gustavo Zacarias + +diff -Nura thrift-0.9.1.orig/aclocal/ax_lib_event.m4 thrift-0.9.1/aclocal/ax_lib_event.m4 +--- thrift-0.9.1.orig/aclocal/ax_lib_event.m4 2013-08-15 11:04:29.000000000 -0300 ++++ thrift-0.9.1/aclocal/ax_lib_event.m4 2013-10-07 20:40:44.076435613 -0300 +@@ -75,7 +75,7 @@ + AC_LANG_PUSH([C]) + dnl This can be changed to AC_LINK_IFELSE if you are cross-compiling, + dnl but then the version cannot be checked. +- AC_RUN_IFELSE([AC_LANG_PROGRAM([[ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + #include + ]], [[ diff --git a/buildroot/package/thrift/0002-autoreconf.patch b/buildroot/package/thrift/0002-autoreconf.patch new file mode 100644 index 0000000..1a52f7c --- /dev/null +++ b/buildroot/package/thrift/0002-autoreconf.patch @@ -0,0 +1,28 @@ +Fillers to make autoreconf (automake) happy. + +Signed-off-by: Gustavo Zacarias + +diff -Nura thrift-0.9.2.orig/AUTHORS thrift-0.9.2/AUTHORS +--- thrift-0.9.2.orig/AUTHORS 1969-12-31 21:00:00.000000000 -0300 ++++ thrift-0.9.2/AUTHORS 2014-12-05 14:46:20.431211224 -0300 +@@ -0,0 +1,2 @@ ++ ++ +diff -Nura thrift-0.9.2.orig/ChangeLog thrift-0.9.2/ChangeLog +--- thrift-0.9.2.orig/ChangeLog 1969-12-31 21:00:00.000000000 -0300 ++++ thrift-0.9.2/ChangeLog 2014-12-05 14:46:34.290686170 -0300 +@@ -0,0 +1,2 @@ ++ ++ +diff -Nura thrift-0.9.2.orig/NEWS thrift-0.9.2/NEWS +--- thrift-0.9.2.orig/NEWS 1969-12-31 21:00:00.000000000 -0300 ++++ thrift-0.9.2/NEWS 2014-12-05 14:46:32.308618241 -0300 +@@ -0,0 +1,2 @@ ++ ++ +diff -Nura thrift-0.9.2.orig/README thrift-0.9.2/README +--- thrift-0.9.2.orig/README 1969-12-31 21:00:00.000000000 -0300 ++++ thrift-0.9.2/README 2014-12-05 14:46:28.305481028 -0300 +@@ -0,0 +1,2 @@ ++ ++ diff --git a/buildroot/package/thrift/0003-zlib-cross.patch b/buildroot/package/thrift/0003-zlib-cross.patch new file mode 100644 index 0000000..3af39c4 --- /dev/null +++ b/buildroot/package/thrift/0003-zlib-cross.patch @@ -0,0 +1,16 @@ +Make zlib version detection cross-compile happy. + +Signed-off-by: Gustavo Zacarias + +diff -Nura thrift-0.9.1.orig/aclocal/ax_lib_zlib.m4 thrift-0.9.1/aclocal/ax_lib_zlib.m4 +--- thrift-0.9.1.orig/aclocal/ax_lib_zlib.m4 2013-08-15 11:04:29.000000000 -0300 ++++ thrift-0.9.1/aclocal/ax_lib_zlib.m4 2013-10-07 20:47:44.523177973 -0300 +@@ -73,7 +73,7 @@ + # (defined in the library). + AC_LANG_PUSH([C]) + dnl This can be changed to AC_LINK_IFELSE if you are cross-compiling. +- AC_RUN_IFELSE([AC_LANG_PROGRAM([[ ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + #if ZLIB_VERNUM >= 0x$WANT_ZLIB_VERSION + #else diff --git a/buildroot/package/thrift/0004-THRIFT-3071-check-minimum-required-version-of-automa.patch b/buildroot/package/thrift/0004-THRIFT-3071-check-minimum-required-version-of-automa.patch new file mode 100644 index 0000000..ec2e225 --- /dev/null +++ b/buildroot/package/thrift/0004-THRIFT-3071-check-minimum-required-version-of-automa.patch @@ -0,0 +1,47 @@ +From 9b03d2b02d32302008d2bd0218b31b9a0ca5a748 Mon Sep 17 00:00:00 2001 +From: Jens Geyer +Date: Fri, 3 Apr 2015 12:37:03 +0200 +Subject: [PATCH] THRIFT-3071 check minimum required version of automake in bootstrap.sh +Client: Build process +Patch: James E. King, III + +This closes #421 + +- remove a warning when using libtool + +"libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([./aclocal])' to configure.ac," + +[Romain: + - This is upstream commit 4aa95df383bfa13c46a4dc0b41672ec29d476300 + - remove the part for bootstrap.sh which is not + bundled in thrift archive. + - fix the commit log accordingly] + +Signed-off-by: Romain Naour +--- + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 5fa611e..8daeb03 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -18,6 +18,7 @@ + # + + AC_PREREQ(2.65) ++AC_CONFIG_MACRO_DIR([./aclocal]) + + AC_INIT([thrift], [0.9.2]) + +@@ -540,6 +541,7 @@ AC_CHECK_FUNCS([memset]) + AC_CHECK_FUNCS([mkdir]) + AC_CHECK_FUNCS([realpath]) + AC_CHECK_FUNCS([select]) ++AC_CHECK_FUNCS([setlocale]) + AC_CHECK_FUNCS([socket]) + AC_CHECK_FUNCS([strchr]) + AC_CHECK_FUNCS([strdup]) +-- +1.9.3 + diff --git a/buildroot/package/thrift/0005-configure.ac-C-11-is-optional.patch b/buildroot/package/thrift/0005-configure.ac-C-11-is-optional.patch new file mode 100644 index 0000000..9ed7e0a --- /dev/null +++ b/buildroot/package/thrift/0005-configure.ac-C-11-is-optional.patch @@ -0,0 +1,28 @@ +From 9c3a7e79b256730dd85a7acadbaf57ab018b3127 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Tue, 7 Apr 2015 07:37:26 +0200 +Subject: [PATCH] configure.ac: C++11 is optional + +Thrift build fine whitout c++11 support. + +Signed-off-by: Romain Naour +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 8daeb03..bfd49ae 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -99,7 +99,7 @@ AC_PROG_AWK + AC_PROG_RANLIB + + AC_LANG([C++]) +-AX_CXX_COMPILE_STDCXX_11([noext]) ++AX_CXX_COMPILE_STDCXX_11([noext], [optional]) + + AC_ARG_ENABLE([libs], + AS_HELP_STRING([--enable-libs], [build the Apache Thrift libraries [default=yes]]), +-- +1.9.3 + diff --git a/buildroot/package/thrift/Config.in b/buildroot/package/thrift/Config.in new file mode 100644 index 0000000..2fa0470 --- /dev/null +++ b/buildroot/package/thrift/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_THRIFT + bool "thrift" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + The Apache Thrift software framework, for scalable + cross-language services development, combines a software + stack with a code generation engine to build services that + work efficiently and seamlessly between C++, Java, Python, + PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, + Node.js, Smalltalk, OCaml and Delphi and other languages. + + http://thrift.apache.org/ + +comment "thrift needs a toolchain w/ C++, wchar, threads" + depends on !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/thrift/thrift.hash b/buildroot/package/thrift/thrift.hash new file mode 100644 index 0000000..811aa98 --- /dev/null +++ b/buildroot/package/thrift/thrift.hash @@ -0,0 +1,2 @@ +# From https://www.apache.org/dist/thrift/0.9.2/thrift-0.9.2.tar.gz.md5 +md5 89f63cc4d0100912f4a1f8a9dee63678 thrift-0.9.2.tar.gz diff --git a/buildroot/package/thrift/thrift.mk b/buildroot/package/thrift/thrift.mk new file mode 100644 index 0000000..741d33f --- /dev/null +++ b/buildroot/package/thrift/thrift.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# thrift +# +################################################################################ + +THRIFT_VERSION = 0.9.2 +THRIFT_SITE = http://www.us.apache.org/dist/thrift/$(THRIFT_VERSION) +THRIFT_DEPENDENCIES = host-autoconf-archive host-pkgconf host-thrift boost \ + libevent openssl zlib +THRIFT_INSTALL_STAGING = YES +HOST_THRIFT_DEPENDENCIES = host-autoconf-archive host-bison host-boost \ + host-flex host-libevent host-openssl host-pkgconf host-zlib + +THRIFT_CONF_OPTS = --with-sysroot=$(STAGING_DIR) \ + --with-boost \ + --with-boost-libdir=$(STAGING_DIR)/usr/lib \ + --disable-tests \ + --disable-tutorial +HOST_THRIFT_CONF_OPTS = --with-sysroot=$(HOST_DIR) \ + --disable-tests \ + --disable-tutorial +THRIFT_AUTORECONF = YES +THRIFT_AUTORECONF_OPTS = -I $(HOST_DIR)/share/autoconf-archive +THRIFT_LICENSE = Apache-2.0 +THRIFT_LICENSE_FILES = LICENSE + +# relocation truncated to fit: R_68K_GOT16O +ifeq ($(BR2_m68k_cf),y) +THRIFT_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -mxgot" +endif + +ifeq ($(BR2_STATIC_LIBS),y) +# openssl uses zlib, so we need to explicitly link with it when static +THRIFT_CONF_ENV += LIBS=-lz +endif + +# Language selection +# The generator (host tool) works with all of them regardless +# This is just for the libraries / bindings +THRIFT_LANG_CONF_OPTS += --without-csharp --without-java --without-erlang \ + --without-python --without-perl --without-php --without-php_extension \ + --without-ruby --without-haskell --without-go --without-d \ + --without-qt4 --without-lua +HOST_THRIFT_CONF_OPTS += $(THRIFT_LANG_CONF_OPTS) --without-c_glib +THRIFT_CONF_OPTS += $(THRIFT_LANG_CONF_OPTS) + +# C bindings +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +THRIFT_DEPENDENCIES += libglib2 +else +THRIFT_CONF_OPTS += --without-c_glib +endif + +# De-hardcode THRIFT for cross compiling +define THRIFT_TOOL_NO_HARDCODE + for f in `find $(@D) -name Makefile.am -type f`; do \ + $(SED) "/^THRIFT =/d" $$f; \ + done + $(SED) "s:top_builddir)/compiler/cpp/thrift:THRIFT):" $(@D)/tutorial/Makefile.am +endef + +THRIFT_POST_PATCH_HOOKS += THRIFT_TOOL_NO_HARDCODE + +define THRIFT_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) THRIFT=$(HOST_DIR)/bin/thrift -C $(@D) +endef + +# Install runtime only +define THRIFT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/lib DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) + +# to be used by other packages +THRIFT = $(HOST_DIR)/bin/thrift diff --git a/buildroot/package/thttpd/0001-getline.patch b/buildroot/package/thttpd/0001-getline.patch new file mode 100644 index 0000000..35c366a --- /dev/null +++ b/buildroot/package/thttpd/0001-getline.patch @@ -0,0 +1,26 @@ +Fix glibc/eglibc getline() conflicting functions. + +Signed-off-by: Gustavo Zacarias +--- + +diff -Nura thttpd-2.25b.orig/extras/htpasswd.c thttpd-2.25b/extras/htpasswd.c +--- thttpd-2.25b.orig/extras/htpasswd.c 2001-12-18 21:08:08.000000000 -0300 ++++ thttpd-2.25b/extras/htpasswd.c 2011-11-25 11:42:47.198582812 -0300 +@@ -49,7 +49,7 @@ + while((line[y++] = line[x++])); + } + +-static int getline(char *s, int n, FILE *f) { ++static int get_line(char *s, int n, FILE *f) { + register int i=0; + + while(1) { +@@ -189,7 +189,7 @@ + strcpy(user,argv[2]); + + found = 0; +- while(!(getline(line,MAX_STRING_LEN,f))) { ++ while(!(get_line(line,MAX_STRING_LEN,f))) { + if(found || (line[0] == '#') || (!line[0])) { + putline(tfp,line); + continue; diff --git a/buildroot/package/thttpd/Config.in b/buildroot/package/thttpd/Config.in new file mode 100644 index 0000000..66537aa --- /dev/null +++ b/buildroot/package/thttpd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_THTTPD + bool "thttpd" + depends on BR2_USE_MMU # fork() + help + thttpd is a simple, small, portable, fast, and secure HTTP + server + + http://www.acme.com/software/thttpd/ diff --git a/buildroot/package/thttpd/thttpd.hash b/buildroot/package/thttpd/thttpd.hash new file mode 100644 index 0000000..2400f5b --- /dev/null +++ b/buildroot/package/thttpd/thttpd.hash @@ -0,0 +1,3 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/t/thttpd/thttpd_2.25b-11.dsc +sha256 07719b08b1cff6a21c08697a7bcb4395425b07ee753106262fb62a03a7d32360 thttpd_2.25b.orig.tar.gz +sha256 4d213c18daf121d21412cc54864fbca250e1773a91df6573373e1d2273a2cec9 thttpd_2.25b-11.diff.gz diff --git a/buildroot/package/thttpd/thttpd.mk b/buildroot/package/thttpd/thttpd.mk new file mode 100644 index 0000000..f1bee01 --- /dev/null +++ b/buildroot/package/thttpd/thttpd.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# thttpd +# +################################################################################ + +THTTPD_VERSION = 2.25b +THTTPD_SOURCE = thttpd_$(THTTPD_VERSION).orig.tar.gz +THTTPD_PATCH = thttpd_$(THTTPD_VERSION)-11.diff.gz +THTTPD_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/t/thttpd +THTTPD_LICENSE = BSD-2-Clause +THTTPD_LICENSE_FILES = thttpd.c + +ifneq ($(THTTPD_PATCH),) +define THTTPD_DEBIAN_PATCHES + if [ -d $(@D)/debian/patches ]; then \ + $(APPLY_PATCHES) $(@D) $(@D)/debian/patches \*.patch; \ + fi +endef +endif + +THTTPD_POST_PATCH_HOOKS = THTTPD_DEBIAN_PATCHES + +THTTPD_MAKE = $(MAKE1) + +define THTTPD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/thttpd $(TARGET_DIR)/usr/sbin/thttpd + $(INSTALL) -D -m 0755 $(@D)/extras/htpasswd $(TARGET_DIR)/usr/bin/htpasswd + $(INSTALL) -D -m 0755 $(@D)/extras/makeweb $(TARGET_DIR)/usr/bin/makeweb + $(INSTALL) -D -m 0755 $(@D)/extras/syslogtocern $(TARGET_DIR)/usr/bin/syslogtocern + $(INSTALL) -D -m 0755 $(@D)/scripts/thttpd_wrapper $(TARGET_DIR)/usr/sbin/thttpd_wrapper + $(SED) 's:/usr/local/sbin:/usr/sbin:g' -e \ + 's:/usr/local/www:/var/www:g' $(TARGET_DIR)/usr/sbin/thttpd_wrapper + $(INSTALL) -d $(TARGET_DIR)/var/www/data + $(INSTALL) -d $(TARGET_DIR)/var/www/logs + echo "dir=/var/www/data" > $(TARGET_DIR)/var/www/thttpd_config + echo 'cgipat=**.cgi' >> $(TARGET_DIR)/var/www/thttpd_config + echo "logfile=/var/www/logs/thttpd_log" >> $(TARGET_DIR)/var/www/thttpd_config + echo "pidfile=/var/run/thttpd.pid" >> $(TARGET_DIR)/var/www/thttpd_config +endef + +define THTTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(@D)/scripts/thttpd.sh $(TARGET_DIR)/etc/init.d/S90thttpd + $(SED) 's:/usr/local/sbin:/usr/sbin:g' $(TARGET_DIR)/etc/init.d/S90thttpd +endef + +define THTTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/thttpd/thttpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/thttpd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/ + ln -fs ../../../../usr/lib/systemd/system/thttpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/thttpd.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/thttpd/thttpd.service b/buildroot/package/thttpd/thttpd.service new file mode 100644 index 0000000..e3c93e7 --- /dev/null +++ b/buildroot/package/thttpd/thttpd.service @@ -0,0 +1,10 @@ +[Unit] +Description=Tiny HTTP Daemon + +[Service] +PIDFile=/run/thttpd.pid +ExecStart=/usr/sbin/thttpd -D -C /etc/thttpd.conf +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/ti-cgt-pru/Config.in.host b/buildroot/package/ti-cgt-pru/Config.in.host new file mode 100644 index 0000000..a366337 --- /dev/null +++ b/buildroot/package/ti-cgt-pru/Config.in.host @@ -0,0 +1,17 @@ +config BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS + bool + default y + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_arm + +config BR2_PACKAGE_HOST_TI_CGT_PRU + bool "host ti-cgt-pru" + depends on BR2_PACKAGE_HOST_TI_CGT_PRU_ARCH_SUPPORTS + help + This package provides the Code Generation Tools for the PRU + unit found on some TI processors e.g. AM3358. + + Note: this is a binary cross toolchain that runs on x86 hosts + targeting PRU cores found alongside some ARM processors. + + http://processors.wiki.ti.com/index.php/Programmable_Realtime_Unit_Software_Development diff --git a/buildroot/package/ti-cgt-pru/ti-cgt-pru.hash b/buildroot/package/ti-cgt-pru/ti-cgt-pru.hash new file mode 100644 index 0000000..1975d8d --- /dev/null +++ b/buildroot/package/ti-cgt-pru/ti-cgt-pru.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 7dc37fd689d1d506bf410d2a00af658b93a58d4bc10ac32c2210129dab617377 ti_cgt_pru_2.2.1_linux_installer_x86.bin +sha256 eb646f4f8b14351110992b40ba24d12803bcc150a76e7298705f51088b0a09cc PRU_Code_Generation_Tools_2.2.x_manifest.html +sha256 6b98f9262abd1ae9a3731e6feee02a56b6e290542dea119eeeeaf88bf802aabc pru_rts_2_2_0_82167478-F8C9-49b2-82BD-12F8550770F9.spdx diff --git a/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk b/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk new file mode 100644 index 0000000..0b9a64b --- /dev/null +++ b/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# ti-cgt-pru +# +################################################################################ + +TI_CGT_PRU_VERSION = 2.2.1 +TI_CGT_PRU_SOURCE = ti_cgt_pru_$(TI_CGT_PRU_VERSION)_linux_installer_x86.bin +TI_CGT_PRU_SITE = http://downloads.ti.com/codegen/esd/cgt_public_sw/PRU/$(TI_CGT_PRU_VERSION) +TI_CGT_PRU_LICENSE = TI Technology and Software Publicly Available License (compiler + PRU library), \ + BSL-1.0 (compiler), BSD-2-Clause, BSD-3-Clause, MIT, AFL-3.0, Hewlett-Packard (PRU library) +TI_CGT_PRU_LICENSE_FILES = PRU_Code_Generation_Tools_2.2.x_manifest.html \ + pru_rts_2_2_0_82167478-F8C9-49b2-82BD-12F8550770F9.spdx + +define HOST_TI_CGT_PRU_EXTRACT_CMDS + chmod +x $(DL_DIR)/$(TI_CGT_PRU_SOURCE) + $(DL_DIR)/$(TI_CGT_PRU_SOURCE) --prefix $(@D) --mode unattended + mv $(@D)/ti-cgt-pru_$(TI_CGT_PRU_VERSION)/* $(@D) + rmdir $(@D)/ti-cgt-pru_$(TI_CGT_PRU_VERSION)/ +endef + +# Since this is largely prebuilt toolchain and likes to live in its +# own directory, put it in $(HOST_DIR)/share/ti-cgt-pru/. +# Packages wanting to use this toolchain need to use this path as TI's +# standard PRU_CGT path e.g. make PRU_CGT=$(TI_CGT_PRU_INSTALLDIR)... +TI_CGT_PRU_INSTALLDIR = $(HOST_DIR)/share/ti-cgt-pru + +define HOST_TI_CGT_PRU_INSTALL_CMDS + mkdir -p $(TI_CGT_PRU_INSTALLDIR) + cp -dpfr $(@D)/* $(TI_CGT_PRU_INSTALLDIR) +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/ti-gfx/0001-newclkapi.patch b/buildroot/package/ti-gfx/0001-newclkapi.patch new file mode 100644 index 0000000..69574c1 --- /dev/null +++ b/buildroot/package/ti-gfx/0001-newclkapi.patch @@ -0,0 +1,118 @@ +This patch adjusts the omap3630 portion of the powervr driver to use the new +clk kernel api. + +Signed-off-by: Spenser Gilliland +[yann.morin.1998@free.fr: rebased ontop of 5.01.00.01] +Signed-off-by: "Yann E. MORIN" +diff -durN ti-gfx-5_01_00_01.orig/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c ti-gfx-5_01_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c +--- ti-gfx-5_01_00_01.orig/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2013-12-23 15:44:20.000000000 +0100 ++++ ti-gfx-5_01_00_01/GFX_Linux_KM/services4/system/omap3630/sysutils_linux.c 2014-02-26 19:17:39.829571846 +0100 +@@ -182,6 +182,49 @@ + @Return PVRSRV_ERROR + + ******************************************************************************/ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) ++int clk_disable_unprepare(struct clk *clk) ++{ ++ return clk_disable(clk); ++} ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) ++int clk_disable_unprepare(struct clk *clk) ++{ ++ res = clk_disable(clk); ++ if (res < 0) ++ return res; ++ ++ res = clk_unprepare(clk); ++ if (ret < 0) ++ return res; ++ ++ return 0; ++} ++#endif ++ ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0) ++int clk_prepare_enable(struct clk *clk) ++{ ++ return clk_enable(clk); ++} ++#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) ++int clk_prepare_enable(struct clk *clk) ++{ ++ res = clk_prepare(clk); ++ if (ret < 0) ++ return res; ++ ++ res = clk_enable(clk); ++ if (res < 0) { ++ clk_unprepare(clk); ++ return res; ++ } ++ ++ return 0; ++} ++#endif ++ + PVRSRV_ERROR EnableSGXClocks(SYS_DATA *psSysData) + { + #if !defined(NO_HARDWARE) +@@ -198,7 +241,7 @@ + + #if !defined(PM_RUNTIME_SUPPORT) + PVR_DPF((PVR_DBG_MESSAGE, "EnableSGXClocks: Enabling SGX Clocks")); +- res=clk_enable(psSysSpecData->psSGX_FCK); ++ res=clk_prepare_enable(psSysSpecData->psSGX_FCK); + if (res < 0) + { + PVR_DPF((PVR_DBG_ERROR, "EnableSGXClocks: Couldn't enable SGX functional clock (%d)", res)); +@@ -324,7 +367,7 @@ + + PVR_DPF((PVR_DBG_MESSAGE, "DisableSGXClocks: Disabling SGX Clocks")); + #if !defined(PM_RUNTIME_SUPPORT) +- clk_disable(psSysSpecData->psSGX_FCK); ++ clk_disable_unprepare(psSysSpecData->psSGX_FCK); + #endif + SysDisableSGXInterrupts(psSysData); + +@@ -540,14 +583,14 @@ + rate = clk_get_rate(psSysSpecData->psGPT11_FCK); + PVR_TRACE(("GPTIMER11 clock is %dMHz", HZ_TO_MHZ(rate))); + +- res = clk_enable(psSysSpecData->psGPT11_FCK); ++ res = clk_prepare_enable(psSysSpecData->psGPT11_FCK); + if (res < 0) + { + PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 functional clock (%d)", res)); + goto ExitError; + } + +- res = clk_enable(psSysSpecData->psGPT11_ICK); ++ res = clk_prepare_enable(psSysSpecData->psGPT11_ICK); + if (res < 0) + { + PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 interface clock (%d)", res)); +@@ -610,9 +653,9 @@ + + ExitDisableGPT11ICK: + #if defined(PVR_OMAP4_TIMING_PRCM) +- clk_disable(psSysSpecData->psGPT11_ICK); ++ clk_disable_unprepare(psSysSpecData->psGPT11_ICK); + ExitDisableGPT11FCK: +- clk_disable(psSysSpecData->psGPT11_FCK); ++ clk_disable_unprepare(psSysSpecData->psGPT11_FCK); + ExitError: + #endif /* defined(PVR_OMAP4_TIMING_PRCM) */ + eError = PVRSRV_ERROR_CLOCK_REQUEST_FAILED; +@@ -664,9 +707,9 @@ + psSysSpecData->sTimerRegPhysBase.uiAddr = 0; + #endif + #if defined(PVR_OMAP4_TIMING_PRCM) +- clk_disable(psSysSpecData->psGPT11_ICK); ++ clk_disable_unprepare(psSysSpecData->psGPT11_ICK); + +- clk_disable(psSysSpecData->psGPT11_FCK); ++ clk_disable_unprepare(psSysSpecData->psGPT11_FCK); + #endif /* defined(PVR_OMAP4_TIMING_PRCM) */ + } + #endif /* PVR_OMAP_USE_DM_TIMER_API */ diff --git a/buildroot/package/ti-gfx/0002-fix-build-omaplfb-linux.patch b/buildroot/package/ti-gfx/0002-fix-build-omaplfb-linux.patch new file mode 100644 index 0000000..002d01c --- /dev/null +++ b/buildroot/package/ti-gfx/0002-fix-build-omaplfb-linux.patch @@ -0,0 +1,21 @@ +Since commit a73fdc647417699833f22d0f239affe22e062827 in the kernel, +omap_dss_device's 'output' is renamed 'src'. + +Fix build with at least es5.x selected (AM35xx). + +Signed-off-by: Hadrien Boutteville + +--- a/GFX_Linux_KM/services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c ++++ b/GFX_Linux_KM/services4/3rdparty/dc_omapfb3_linux/omaplfb_linux.c +@@ -176,8 +176,10 @@ + #define OMAP_DSS_DRIVER(drv, dev) struct omap_dss_driver *drv = (dev) != NULL ? (dev)->driver : NULL + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)) + #define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->manager : NULL +-#else ++#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)) + #define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->output->manager : NULL ++#else ++#define OMAP_DSS_MANAGER(man, dev) struct omap_overlay_manager *man = (dev) != NULL ? (dev)->src->manager : NULL + #endif + + #define WAIT_FOR_VSYNC(man) ((man)->wait_for_vsync) diff --git a/buildroot/package/ti-gfx/0003-km_install_modules.patch b/buildroot/package/ti-gfx/0003-km_install_modules.patch new file mode 100644 index 0000000..2cf6e81 --- /dev/null +++ b/buildroot/package/ti-gfx/0003-km_install_modules.patch @@ -0,0 +1,19 @@ +Patch to add modules_install target to the modules makefile. This makes +installation a little easier. + +Signed-off-by: Spenser Gilliland +---- +Index: ti-gfx-4_09_00_01/GFX_Linux_KM/Makefile +=================================================================== +--- ti-gfx-4_09_00_01.orig/GFX_Linux_KM/Makefile 2013-03-07 11:00:11.000000000 -0600 ++++ ti-gfx-4_09_00_01/GFX_Linux_KM/Makefile 2013-05-23 01:36:29.356676281 -0500 +@@ -479,6 +479,9 @@ + all: + $(MAKE) -C $(KERNELDIR) M=`pwd` $* + ++install: ++ $(MAKE) -C $(KERNELDIR) M=`pwd` modules_install ++ + clean: + @find . -name "*.o" -exec rm -r {} \; + @find . -name "*.ko" -exec rm -r {} \; diff --git a/buildroot/package/ti-gfx/Config.in b/buildroot/package/ti-gfx/Config.in new file mode 100644 index 0000000..76aabcb --- /dev/null +++ b/buildroot/package/ti-gfx/Config.in @@ -0,0 +1,84 @@ +config BR2_PACKAGE_TI_GFX + bool "ti-gfx" + depends on BR2_LINUX_KERNEL && BR2_TOOLCHAIN_USES_GLIBC && BR2_arm + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + select BR2_PACKAGE_HAS_POWERVR + select BR2_PACKAGE_FBSET if !BR2_PACKAGE_BUSYBOX # Runtime dependency only + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + Graphics libraries for TI boards using SGX acceleration. + + Supports OMAP35xx, DM37xx/AM37xx, DM816x, DM814x, AM335x and + AM43xx. + + For newer CPUs or kernels use the ti-sgx-{km,um} packages. + + http://downloads.ti.com/dsps/dsps_public_sw/gfxsdk/ + +if BR2_PACKAGE_TI_GFX + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "ti-gfx" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "ti-gfx" + +config BR2_PACKAGE_PROVIDES_POWERVR + default "ti-gfx" + +config BR2_PACKAGE_TI_GFX_DEBUG + bool "enable debug support" + help + Turns on debugging in the kernel module, install libraries + built with debugging enabled, installs various tests and + installs esrev script. + +config BR2_PACKAGE_TI_GFX_DEMOS + bool "install demos" + default y + help + Install the OGLES2ChameleonMan and OGLES2MagicLantern demos + +config BR2_PACKAGE_TI_GFX_EGLIMAGE + bool "install eglimage version of libraries" + help + Installs OpenGL libaries which support the eglimage api. + +choice + prompt "Target" + default BR2_PACKAGE_TI_GFX_ES3 + help + Select the SOC for which you would like to install + drivers. Please use the chart at + http://processors.wiki.ti.com/index.php/OMAP35x_Graphics_SDK_Getting_Started_Guide + +config BR2_PACKAGE_TI_GFX_ES3 + bool "es3.x (OMAP35xx, AM35xx Rev 3.1+)" + help + OMAP35xx, AM35xx Rev 3.1+ + +config BR2_PACKAGE_TI_GFX_ES5 + bool "es5.x (AM37xx, DM37xx)" + help + AM37xx, DM37xx + +config BR2_PACKAGE_TI_GFX_ES6 + bool "es6.x (AM387x, DMA814x, AM389x, DM816x)" + help + AM387x, DM814x, AM389x, DM816x + +config BR2_PACKAGE_TI_GFX_ES8 + bool "es8.x (AM335x)" + help + AM335x + +endchoice + +endif + +comment "ti-gfx needs a glibc toolchain and a Linux kernel to be built" + depends on BR2_arm + depends on !(BR2_LINUX_KERNEL && BR2_TOOLCHAIN_USES_GLIBC) diff --git a/buildroot/package/ti-gfx/S80ti-gfx b/buildroot/package/ti-gfx/S80ti-gfx new file mode 100644 index 0000000..fc5999a --- /dev/null +++ b/buildroot/package/ti-gfx/S80ti-gfx @@ -0,0 +1,53 @@ +#!/bin/sh + +start() { + echo "ti-gfx: starting pvr driver" + + BITSPERPIXEL="$(fbset | awk '/geom/ {print $6}')" + YRES="$(fbset | awk '/geom/ {print $3}')" + # Set RGBA ordering to something the drivers like + if [ "$BITSPERPIXEL" = "32" ] ; then + fbset -rgba 8/16,8/8,8/0,8/24 + fi + # Try to enable triple buffering when there's enough VRAM + fbset -vyres $(( YRES*3 )) + + modprobe pvrsrvkm + modprobe omaplfb + modprobe bufferclass_ti + + pvr_maj=$(awk '$2=="pvrsrvkm" { print $1; }' /proc/devices) + rm -f /dev/pvrsrvkm + + mknod /dev/pvrsrvkm c $pvr_maj 0 + chmod 600 /dev/pvrsrvkm + + if ! /usr/bin/pvrsrvctl --start --no-module; then + echo "ti-gfx: unable to start server" + fi +} + +stop() { + echo "ti-gfx: stopping pvr driver" + + rmmod bufferclass_ti + rmmod omaplfb + rmmod pvrsrvkm +} + +case "$1" in +start) + start +;; +stop) + stop +;; +restart) + stop + start +;; +*) + echo "ti-gfx: Please use start, stop, or restart." + exit 1 +;; +esac diff --git a/buildroot/package/ti-gfx/egl.pc b/buildroot/package/ti-gfx/egl.pc new file mode 100644 index 0000000..36ea413 --- /dev/null +++ b/buildroot/package/ti-gfx/egl.pc @@ -0,0 +1,11 @@ +prefix=/usr/ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: egl +Description: TI Graphics SDK implementation of EGL +Version: 1.9.2188537 +Requires: +Libs: -L${libdir} -lEGL -lGLESv2 -lIMGegl +Cflags: -I${includedir} diff --git a/buildroot/package/ti-gfx/esrev.sh b/buildroot/package/ti-gfx/esrev.sh new file mode 100644 index 0000000..6220d44 --- /dev/null +++ b/buildroot/package/ti-gfx/esrev.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +# Debug script to determine proper ES revision for the current board. The +# pvrsrvkm module must be insmoded before attempting to get the es rev. + +machine_id() { # return the machine ID + awk 'BEGIN { FS=": " } /Hardware/ \ + { gsub(" ", "_", $2); print tolower($2) } ' +Date: Fri, 30 Jun 2017 17:29:44 +0000 +Subject: [PATCH] * libtiff/tif_dirwrite.c: in + TIFFWriteDirectoryTagCheckedXXXX() functions associated with LONG8/SLONG8 + data type, replace assertion that the file is BigTIFF, by a non-fatal error. + Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2712 Reported by team + OWL337 + +[Peter: drop ChangeLog modification] +Signed-off-by: Peter Korsgaard +--- + libtiff/tif_dirwrite.c | 20 ++++++++++++++++---- + 1 file changed, 23 insertions(+), 4 deletions(-) + +diff --git a/libtiff/tif_dirwrite.c b/libtiff/tif_dirwrite.c +index 2967da58..8d6686ba 100644 +--- a/libtiff/tif_dirwrite.c ++++ b/libtiff/tif_dirwrite.c +@@ -2111,7 +2111,10 @@ TIFFWriteDirectoryTagCheckedLong8(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, ui + { + uint64 m; + assert(sizeof(uint64)==8); +- assert(tif->tif_flags&TIFF_BIGTIFF); ++ if( !(tif->tif_flags&TIFF_BIGTIFF) ) { ++ TIFFErrorExt(tif->tif_clientdata,"TIFFWriteDirectoryTagCheckedLong8","LONG8 not allowed for ClassicTIFF"); ++ return(0); ++ } + m=value; + if (tif->tif_flags&TIFF_SWAB) + TIFFSwabLong8(&m); +@@ -2124,7 +2127,10 @@ TIFFWriteDirectoryTagCheckedLong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* di + { + assert(count<0x20000000); + assert(sizeof(uint64)==8); +- assert(tif->tif_flags&TIFF_BIGTIFF); ++ if( !(tif->tif_flags&TIFF_BIGTIFF) ) { ++ TIFFErrorExt(tif->tif_clientdata,"TIFFWriteDirectoryTagCheckedLong8","LONG8 not allowed for ClassicTIFF"); ++ return(0); ++ } + if (tif->tif_flags&TIFF_SWAB) + TIFFSwabArrayOfLong8(value,count); + return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_LONG8,count,count*8,value)); +@@ -2136,7 +2142,10 @@ TIFFWriteDirectoryTagCheckedSlong8(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, u + { + int64 m; + assert(sizeof(int64)==8); +- assert(tif->tif_flags&TIFF_BIGTIFF); ++ if( !(tif->tif_flags&TIFF_BIGTIFF) ) { ++ TIFFErrorExt(tif->tif_clientdata,"TIFFWriteDirectoryTagCheckedLong8","SLONG8 not allowed for ClassicTIFF"); ++ return(0); ++ } + m=value; + if (tif->tif_flags&TIFF_SWAB) + TIFFSwabLong8((uint64*)(&m)); +@@ -2149,7 +2158,10 @@ TIFFWriteDirectoryTagCheckedSlong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* d + { + assert(count<0x20000000); + assert(sizeof(int64)==8); +- assert(tif->tif_flags&TIFF_BIGTIFF); ++ if( !(tif->tif_flags&TIFF_BIGTIFF) ) { ++ TIFFErrorExt(tif->tif_clientdata,"TIFFWriteDirectoryTagCheckedLong8","SLONG8 not allowed for ClassicTIFF"); ++ return(0); ++ } + if (tif->tif_flags&TIFF_SWAB) + TIFFSwabArrayOfLong8((uint64*)value,count); + return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SLONG8,count,count*8,value)); +-- +2.11.0 + diff --git a/buildroot/package/tiff/Config.in b/buildroot/package/tiff/Config.in new file mode 100644 index 0000000..f842c2e --- /dev/null +++ b/buildroot/package/tiff/Config.in @@ -0,0 +1,70 @@ +menuconfig BR2_PACKAGE_TIFF + bool "tiff" + help + Library for handling TIFF (Tag Image File Format) images. + + http://simplesystems.org/libtiff/ + +if BR2_PACKAGE_TIFF + +config BR2_PACKAGE_TIFF_CCITT + bool "CCITT Group 3 & 4 support" + default y + +config BR2_PACKAGE_TIFF_PACKBITS + bool "Macintosh PackBits algorithm" + default y + +config BR2_PACKAGE_TIFF_LZW + bool "LZW algorithm" + default y + +config BR2_PACKAGE_TIFF_THUNDER + bool "ThunderScan 4-bit RLE algorithm" + default y + +config BR2_PACKAGE_TIFF_NEXT + bool "NeXT 2-bit RLE algorithm" + default y + +config BR2_PACKAGE_TIFF_LOGLUV + bool "LogLuv high dynamic range encoding" + default y + +config BR2_PACKAGE_TIFF_MDI + bool "Microsoft Document Imaging" + default y + +config BR2_PACKAGE_TIFF_ZLIB + bool "Zlib usage (required for Deflate compression)" + default y + select BR2_PACKAGE_ZLIB + +config BR2_PACKAGE_TIFF_XZ + bool "XZ compression" + select BR2_PACKAGE_XZ + +config BR2_PACKAGE_TIFF_PIXARLOG + bool "Pixar log-format algorithm (requires Zlib)" + default y + select BR2_PACKAGE_TIFF_ZLIB + +config BR2_PACKAGE_TIFF_JPEG + bool "JPEG compression" + default y + select BR2_PACKAGE_JPEG + +config BR2_PACKAGE_TIFF_OLD_JPEG + bool "Old JPEG decompression" + default y + +config BR2_PACKAGE_TIFF_JBIG + bool "JBIG compression" + default y + +config BR2_PACKAGE_TIFF_UTILITIES + bool "tiff utilities" + help + Install all tiff utilities. + +endif diff --git a/buildroot/package/tiff/tiff.hash b/buildroot/package/tiff/tiff.hash new file mode 100644 index 0000000..516cb06 --- /dev/null +++ b/buildroot/package/tiff/tiff.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 59d7a5a8ccd92059913f246877db95a2918e6c04fb9d43fd74e5c3390dac2910 tiff-4.0.8.tar.gz diff --git a/buildroot/package/tiff/tiff.mk b/buildroot/package/tiff/tiff.mk new file mode 100644 index 0000000..405cb92 --- /dev/null +++ b/buildroot/package/tiff/tiff.mk @@ -0,0 +1,92 @@ +################################################################################ +# +# tiff +# +################################################################################ + +TIFF_VERSION = 4.0.8 +TIFF_SITE = http://download.osgeo.org/libtiff +TIFF_LICENSE = tiff license +TIFF_LICENSE_FILES = COPYRIGHT +TIFF_INSTALL_STAGING = YES +TIFF_CONF_OPTS = \ + --disable-cxx \ + --without-x + +TIFF_DEPENDENCIES = host-pkgconf + +HOST_TIFF_CONF_OPTS = \ + --disable-cxx \ + --without-x \ + --disable-zlib \ + --disable-lzma \ + --disable-jpeg +HOST_TIFF_DEPENDENCIES = host-pkgconf + +ifneq ($(BR2_PACKAGE_TIFF_CCITT),y) +TIFF_CONF_OPTS += --disable-ccitt +endif + +ifneq ($(BR2_PACKAGE_TIFF_PACKBITS),y) +TIFF_CONF_OPTS += --disable-packbits +endif + +ifneq ($(BR2_PACKAGE_TIFF_LZW),y) +TIFF_CONF_OPTS += --disable-lzw +endif + +ifneq ($(BR2_PACKAGE_TIFF_THUNDER),y) +TIFF_CONF_OPTS += --disable-thunder +endif + +ifneq ($(BR2_PACKAGE_TIFF_NEXT),y) +TIFF_CONF_OPTS += --disable-next +endif + +ifneq ($(BR2_PACKAGE_TIFF_LOGLUV),y) +TIFF_CONF_OPTS += --disable-logluv +endif + +ifneq ($(BR2_PACKAGE_TIFF_MDI),y) +TIFF_CONF_OPTS += --disable-mdi +endif + +ifneq ($(BR2_PACKAGE_TIFF_ZLIB),y) +TIFF_CONF_OPTS += --disable-zlib +else +TIFF_DEPENDENCIES += zlib +endif + +ifneq ($(BR2_PACKAGE_TIFF_XZ),y) +TIFF_CONF_OPTS += --disable-lzma +else +TIFF_DEPENDENCIES += xz +endif + +ifneq ($(BR2_PACKAGE_TIFF_PIXARLOG),y) +TIFF_CONF_OPTS += --disable-pixarlog +endif + +ifneq ($(BR2_PACKAGE_TIFF_JPEG),y) +TIFF_CONF_OPTS += --disable-jpeg +else +TIFF_DEPENDENCIES += jpeg +endif + +ifneq ($(BR2_PACKAGE_TIFF_OLD_JPEG),y) +TIFF_CONF_OPTS += --disable-old-jpeg +endif + +ifneq ($(BR2_PACKAGE_TIFF_JBIG),y) +TIFF_CONF_OPTS += --disable-jbig +endif + +TIFF_SUBDIRS = port libtiff +ifeq ($(BR2_PACKAGE_TIFF_UTILITIES),y) +TIFF_SUBDIRS += tools +endif + +TIFF_MAKE = $(MAKE) SUBDIRS="$(TIFF_SUBDIRS)" + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/time/Config.in b/buildroot/package/time/Config.in new file mode 100644 index 0000000..40275cf --- /dev/null +++ b/buildroot/package/time/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_TIME + bool "time" + depends on BR2_USE_MMU # fork() + # See https://savannah.gnu.org/bugs/index.php?48000 + depends on !BR2_STATIC_LIBS + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + The GNU time utility. + + http://savannah.gnu.org/projects/time/ + +comment "time needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/time/time.hash b/buildroot/package/time/time.hash new file mode 100644 index 0000000..7d395bf --- /dev/null +++ b/buildroot/package/time/time.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8a2f540155961a35ba9b84aec5e77e3ae36c74cecb4484db455960601b7a2e1b time-1.8.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/time/time.mk b/buildroot/package/time/time.mk new file mode 100644 index 0000000..c238ee6 --- /dev/null +++ b/buildroot/package/time/time.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# time +# +################################################################################ + +TIME_VERSION = 1.8 +TIME_SITE = $(BR2_GNU_MIRROR)/time +TIME_CONF_ENV = ac_cv_func_wait3=yes +TIME_LICENSE = GPL-3.0+ +TIME_LICENSE_FILES = COPYING + +# time uses an old version of automake that does not support +# installing in DESTDIR. +define TIME_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/time $(TARGET_DIR)/usr/bin/time +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/tinc/Config.in b/buildroot/package/tinc/Config.in new file mode 100644 index 0000000..837f556 --- /dev/null +++ b/buildroot/package/tinc/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_TINC + bool "tinc" + depends on !BR2_STATIC_LIBS # tinc requires libdl for OpenSSL + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LZO + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + tinc is a Virtual Private Network (VPN) daemon that uses + tunnelling and encryption to create a secure private network + between hosts on the Internet. + + http://www.tinc-vpn.org/ + +comment "tinc needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/tinc/tinc.hash b/buildroot/package/tinc/tinc.hash new file mode 100644 index 0000000..b0cdde8 --- /dev/null +++ b/buildroot/package/tinc/tinc.hash @@ -0,0 +1,4 @@ +# Locally calculated after checking pgp signature +sha256 7f6f5dc6444bc651ac635c81f4745bcce581bbd1d45ed60cbdc4ee11bebb10f4 tinc-1.0.33.tar.gz +sha256 10618781fe68ee0958d627f9f4b279b55eaff6c852f7742bbef64dc470c0077c COPYING +sha256 9bf76a8aa304d807df20bf3d221c21d259764be63e39b58f299b80ba3ac14b5b COPYING.README diff --git a/buildroot/package/tinc/tinc.mk b/buildroot/package/tinc/tinc.mk new file mode 100644 index 0000000..0027853 --- /dev/null +++ b/buildroot/package/tinc/tinc.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# tinc +# +################################################################################ + +TINC_VERSION = 1.0.33 +TINC_SITE = http://www.tinc-vpn.org/packages +TINC_DEPENDENCIES = lzo openssl zlib +TINC_LICENSE = GPL-2.0+ with OpenSSL exception +TINC_LICENSE_FILES = COPYING COPYING.README +TINC_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=c99" + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +TINC_CONF_ENV += \ + ax_cv_check_cflags___fPIE=no \ + ax_cv_check_ldflags___pie=no +endif + +ifeq ($(BR2_INIT_SYSTEMD),y) +TINC_DEPENDENCIES += systemd +TINC_CONF_OPTS += --with-systemdsystemunitdir=/usr/lib/systemd/system +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/tinyalsa/0001-disable-doxygen-usage.patch b/buildroot/package/tinyalsa/0001-disable-doxygen-usage.patch new file mode 100644 index 0000000..ed939fb --- /dev/null +++ b/buildroot/package/tinyalsa/0001-disable-doxygen-usage.patch @@ -0,0 +1,35 @@ +Disable doxygen usage + +In order to avoid a dependency on doxygen on the build machine, this +patch adjusts the main Makefile to not build and install the +documentation. + +[Vincent: tweak patch for 1.1.1 version] + +Signed-off-by: Thomas Petazzoni +Signed-off-by: Vicente Olivert Riera + +diff -rup a/Makefile b/Makefile +--- a/Makefile 2017-05-24 05:23:57.000000000 +0100 ++++ b/Makefile 2017-05-25 10:35:20.781747053 +0100 +@@ -11,14 +11,12 @@ export MANDIR ?= $(PREFIX)/share/man + all: + $(MAKE) -C src + $(MAKE) -C utils +- $(MAKE) -C doxygen + $(MAKE) -C examples + + .PHONY: clean + clean: + $(MAKE) -C src clean + $(MAKE) -C utils clean +- $(MAKE) -C doxygen clean + $(MAKE) -C examples clean + + .PHONY: install +@@ -30,5 +28,4 @@ install: + install include/tinyalsa/version.h $(DESTDIR)$(INCDIR)/ + $(MAKE) -C src install + $(MAKE) -C utils install +- $(MAKE) -C doxygen install + diff --git a/buildroot/package/tinyalsa/0002-interval.h-add-missing-header.patch b/buildroot/package/tinyalsa/0002-interval.h-add-missing-header.patch new file mode 100644 index 0000000..c043145 --- /dev/null +++ b/buildroot/package/tinyalsa/0002-interval.h-add-missing-header.patch @@ -0,0 +1,36 @@ +From 685e530d8a0063134642371eaacd01fee2f62d85 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 2 Jun 2017 12:19:03 +0300 +Subject: [PATCH] interval.h: add missing header + +The ssize_t type requires the unistd.h header. This fixes build with musl +libc: + +In file included from ../include/tinyalsa/limits.h:32:0, + from limits.c:1: +../include/tinyalsa/interval.h:38:2: error: unknown type name 'ssize_t' + ssize_t max; + ^ + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/tinyalsa/tinyalsa/pull/98 + + include/tinyalsa/interval.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/tinyalsa/interval.h b/include/tinyalsa/interval.h +index 3f6f3dce5d90..068571df5a63 100644 +--- a/include/tinyalsa/interval.h ++++ b/include/tinyalsa/interval.h +@@ -30,6 +30,7 @@ + #define TINYALSA_INTERVAL_H + + #include ++#include + + /** A closed range signed interval. */ + +-- +2.11.0 + diff --git a/buildroot/package/tinyalsa/Config.in b/buildroot/package/tinyalsa/Config.in new file mode 100644 index 0000000..d9ce22c --- /dev/null +++ b/buildroot/package/tinyalsa/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_TINYALSA + bool "tinyalsa" + depends on !BR2_STATIC_LIBS + help + a small library to interface with ALSA in the Linux kernel + + The aims are: + + - Provide a basic pcm and mixer API + - If it's not absolutely needed, don't add it to the API + - Avoid supporting complex and unnecessary operations that + could be dealt with at a higher level + + https://github.com/tinyalsa/tinyalsa + +comment "tinyalsa needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/tinyalsa/tinyalsa.hash b/buildroot/package/tinyalsa/tinyalsa.hash new file mode 100644 index 0000000..f9be664 --- /dev/null +++ b/buildroot/package/tinyalsa/tinyalsa.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 d92b438cea348ae316c4b2cbf367b4f01ed821a947e6a34d813624e9e3c936c1 tinyalsa-1.1.1.tar.gz diff --git a/buildroot/package/tinyalsa/tinyalsa.mk b/buildroot/package/tinyalsa/tinyalsa.mk new file mode 100644 index 0000000..bd9d9a0 --- /dev/null +++ b/buildroot/package/tinyalsa/tinyalsa.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# tinyalsa +# +################################################################################ + +TINYALSA_VERSION = 1.1.1 +TINYALSA_SITE = $(call github,tinyalsa,tinyalsa,$(TINYALSA_VERSION)) +TINYALSA_LICENSE = BSD-3-Clause +TINYALSA_LICENSE_FILES = NOTICE +TINYALSA_INSTALL_STAGING = YES + +define TINYALSA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) +endef + +define TINYALSA_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + -C $(@D) \ + PREFIX="/usr" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + DESTDIR="$(STAGING_DIR)" install +endef + +define TINYALSA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) \ + -C $(@D) \ + PREFIX="/usr" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/tinycbor/Config.in b/buildroot/package/tinycbor/Config.in new file mode 100644 index 0000000..41f0b5f --- /dev/null +++ b/buildroot/package/tinycbor/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_TINYCBOR + bool "tinycbor" + help + Concise Binary Object Representation (CBOR) Library + + https://github.com/01org/tinycbor diff --git a/buildroot/package/tinycbor/tinycbor.hash b/buildroot/package/tinycbor/tinycbor.hash new file mode 100644 index 0000000..affc7a6 --- /dev/null +++ b/buildroot/package/tinycbor/tinycbor.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 37a06c618ccddd7edc3747277425fcd38fa71eab37c7aaf0b03818a49950da81 tinycbor-v0.4.2.tar.gz +sha256 3c6ba0b5bfa7830505301ffb336a17b0748e0d61c4d34216e9dc98f10e40395e LICENSE diff --git a/buildroot/package/tinycbor/tinycbor.mk b/buildroot/package/tinycbor/tinycbor.mk new file mode 100644 index 0000000..b1848b5 --- /dev/null +++ b/buildroot/package/tinycbor/tinycbor.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# tinycbor +# +################################################################################ + +TINYCBOR_VERSION = v0.4.2 +TINYCBOR_SITE = $(call github,intel,tinycbor,$(TINYCBOR_VERSION)) +TINYCBOR_LICENSE = MIT +TINYCBOR_LICENSE_FILES = LICENSE + +TINYCBOR_DEPENDENCIES = host-pkgconf +TINYCBOR_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_CJSON),y) +TINYCBOR_DEPENDENCIES += cjson +endif + +TINYCBOR_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) V=1 + +# disabled parallel build because of build failures while +# producing the .config file +define TINYCBOR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) $(TINYCBOR_MAKE_OPTS) -C $(@D) +endef + +define TINYCBOR_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TINYCBOR_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(STAGING_DIR) prefix=/usr install +endef + +define TINYCBOR_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TINYCBOR_MAKE_OPTS) -C $(@D) \ + DESTDIR=$(TARGET_DIR) prefix=/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/tinydtls/0001-Update-Makefile.in-to-allow-cross-compilation.patch b/buildroot/package/tinydtls/0001-Update-Makefile.in-to-allow-cross-compilation.patch new file mode 100644 index 0000000..5e91f2e --- /dev/null +++ b/buildroot/package/tinydtls/0001-Update-Makefile.in-to-allow-cross-compilation.patch @@ -0,0 +1,170 @@ +From a6f312dfb4497d5e72664c4772a8b122e25b81d8 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 26 Jul 2016 09:09:53 +0200 +Subject: [PATCH] Update Makefile.in to allow cross-compilation + +Use CC, CPP and DESTDIR environment variables passed to configure in Makefile.in files +Fix definition of LIBS and LDFLAGS (LDFLAGS was set to @LIBS@) + +Signed-off-by: Fabrice Fontaine +--- + Makefile.in | 13 ++++++++----- + aes/Makefile.in | 7 +++++-- + doc/Makefile.in | 4 ++-- + ecc/Makefile.in | 7 +++++-- + sha2/Makefile.in | 7 +++++-- + tests/Makefile.in | 4 +++- + 6 files changed, 28 insertions(+), 14 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 38cc665..7dcd424 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -40,7 +40,9 @@ OBJECTS:= $(patsubst %.c, %.o, $(SOURCES)) $(SUB_OBJECTS) + HEADERS:=dtls.h hmac.h dtls_debug.h dtls_config.h uthash.h numeric.h crypto.h global.h ccm.h \ + netq.h alert.h utlist.h prng.h peer.h state.h dtls_time.h session.h \ + tinydtls.h ++CC:=@CC@ + CFLAGS:=-Wall -pedantic -std=c99 @CFLAGS@ ++CPP:=@CPP@ + CPPFLAGS:=@CPPFLAGS@ -DDTLS_CHECK_CONTENTTYPE + SUBDIRS:=tests doc platform-specific sha2 aes ecc + DISTSUBDIRS:=$(SUBDIRS) +@@ -48,7 +50,8 @@ DISTDIR=$(top_builddir)/$(package) + FILES:=Makefile.in configure configure.in dtls_config.h.in tinydtls.h.in \ + Makefile.tinydtls $(SOURCES) $(HEADERS) + LIB:=libtinydtls.a +-LDFLAGS:=@LIBS@ ++LDFLAGS:=@LDFLAGS@ ++LIBS:=@LIBS@ + ARFLAGS:=cru + doc:=doc + +@@ -100,10 +103,10 @@ dist: $(FILES) $(DISTSUBDIRS) + tar czf $(package).tar.gz $(DISTDIR) + + install: $(LIB) $(HEADERS) $(SUBDIRS) +- test -d $(libdir) || mkdir -p $(libdir) +- test -d $(includedir) || mkdir -p $(includedir) +- $(install) $(LIB) $(libdir)/ +- $(install) $(HEADERS) $(includedir)/ ++ test -d $(DESTDIR)$(libdir) || mkdir -p $(DESTDIR)$(libdir) ++ test -d $(DESTDIR)$(includedir) || mkdir -p $(DESTDIR)$(includedir) ++ $(install) $(LIB) $(DESTDIR)$(libdir)/ ++ $(install) $(HEADERS) $(DESTDIR)$(includedir)/ + for dir in $(SUBDIRS); do \ + $(MAKE) -C $$dir install="$(install)" includedir=$(includedir) install; \ + done +diff --git a/aes/Makefile.in b/aes/Makefile.in +index 7c9f6ef..9ff7799 100644 +--- a/aes/Makefile.in ++++ b/aes/Makefile.in +@@ -28,8 +28,11 @@ top_srcdir:= @top_srcdir@ + SOURCES:= rijndael.c + HEADERS:= rijndael.h + OBJECTS:= $(patsubst %.c, %.o, $(SOURCES)) ++CPP=@CPP@ + CPPFLAGS=@CPPFLAGS@ ++CC=@CC@ + CFLAGS=-Wall -std=c99 -pedantic @CFLAGS@ ++LDFLAGS=@LDFLAGS@ + LDLIBS=@LIBS@ + FILES:=Makefile.in $(SOURCES) $(HEADERS) + DISTDIR=$(top_builddir)/@PACKAGE_TARNAME@-@PACKAGE_VERSION@ +@@ -60,8 +63,8 @@ dist: $(FILES) + cp -p $(FILES) $(DISTDIR)/aes + + install: $(HEADERS) +- test -d $(includedir)/aes || mkdir -p $(includedir)/aes +- $(install) $(HEADERS) $(includedir)/aes ++ test -d $(DESTDIR)$(includedir)/aes || mkdir -p $(DESTDIR)$(includedir)/aes ++ $(install) $(HEADERS) $(DESTDIR)$(includedir)/aes + + .gitignore: + echo "core\n*~\n*.[oa]\n*.gz\n*.cap\n$(PROGRAM)\n$(DISTDIR)\n.gitignore" >$@ +diff --git a/doc/Makefile.in b/doc/Makefile.in +index a07101e..5ab0a35 100644 +--- a/doc/Makefile.in ++++ b/doc/Makefile.in +@@ -32,5 +32,5 @@ dist: doc + cp -r $(FILES) $(DISTDIR)/doc + + install: $(doc) html +- test -d $(htmldir) || mkdir -p $(htmldir) +- cp -r html/* $(htmldir) ++ test -d $(DESTDIR)$(htmldir) || mkdir -p $(DESTDIR)$(htmldir) ++ cp -r html/* $(DESTDIR)$(htmldir) +diff --git a/ecc/Makefile.in b/ecc/Makefile.in +index 2ba17a1..2086d4f 100644 +--- a/ecc/Makefile.in ++++ b/ecc/Makefile.in +@@ -36,8 +36,11 @@ include Makefile.contiki + else + ECC_OBJECTS:= $(patsubst %.c, %.o, $(ECC_SOURCES)) ecc_test.o + PROGRAMS:= testecc testfield ++CPP=@CPP@ + CPPFLAGS=@CPPFLAGS@ ++CC=@CC@ + CFLAGS=-Wall -std=c99 -pedantic @CFLAGS@ -DTEST_INCLUDE ++LDFLAGS=@LDFLAGS@ + LDLIBS=@LIBS@ + + .PHONY: all dirs clean install distclean .gitignore doc +@@ -74,8 +77,8 @@ dist: $(FILES) + cp -p $(FILES) $(DISTDIR)/ecc + + install: $(HEADERS) +- test -d $(includedir)/ecc || mkdir -p $(includedir)/ecc +- $(install) $(HEADERS) $(includedir)/ecc ++ test -d $(DESTDIR)$(includedir)/ecc || mkdir -p $(DESTDIR)$(includedir)/ecc ++ $(install) $(ECC_HEADERS) $(DESTDIR)$(includedir)/ecc + + .gitignore: + echo "core\n*~\n*.[oa]\n*.gz\n*.cap\n$(PROGRAM)\n$(DISTDIR)\n.gitignore" >$@ +diff --git a/sha2/Makefile.in b/sha2/Makefile.in +index 9f19314..69f8793 100644 +--- a/sha2/Makefile.in ++++ b/sha2/Makefile.in +@@ -28,8 +28,11 @@ top_srcdir:= @top_srcdir@ + SOURCES:= sha2.c + HEADERS:=sha2.h + OBJECTS:= $(patsubst %.c, %.o, $(SOURCES)) ++CPP=@CPP@ + CPPFLAGS=@CPPFLAGS@ -I$(top_srcdir) ++CC=@CC@ + CFLAGS=-Wall -std=c99 -pedantic @CFLAGS@ ++LDFLAGS=@LDFLAGS@ + LDLIBS=@LIBS@ + FILES:=Makefile.in $(SOURCES) $(HEADERS) README sha2prog.c sha2speed.c sha2test.pl + DISTDIR=$(top_builddir)/@PACKAGE_TARNAME@-@PACKAGE_VERSION@ +@@ -62,8 +65,8 @@ dist: $(FILES) + cp -pr testvectors $(DISTDIR)/sha2/testvectors + + install: $(HEADERS) +- test -d $(includedir)/sha2 || mkdir -p $(includedir)/sha2 +- $(install) $(HEADERS) $(includedir)/sha2 ++ test -d $(DESTDIR)$(includedir)/sha2 || mkdir -p $(DESTDIR)$(includedir)/sha2 ++ $(install) $(HEADERS) $(DESTDIR)$(includedir)/sha2 + + .gitignore: + echo "core\n*~\n*.[oa]\n*.gz\n*.cap\n$(PROGRAM)\n$(DISTDIR)\n.gitignore" >$@ +diff --git a/tests/Makefile.in b/tests/Makefile.in +index a8a2ed0..b45f440 100644 +--- a/tests/Makefile.in ++++ b/tests/Makefile.in +@@ -32,9 +32,11 @@ SOURCES:= dtls-server.c ccm-test.c prf-test.c \ + OBJECTS:= $(patsubst %.c, %.o, $(SOURCES)) + PROGRAMS:= $(patsubst %.c, %, $(SOURCES)) + HEADERS:= ++CC:=@CC@ + CFLAGS:=-Wall @CFLAGS@ ++CPP:=@CPP@ + CPPFLAGS:=-I$(top_srcdir) @CPPFLAGS@ +-LDFLAGS:=-L$(top_builddir) ++LDFLAGS:=-L$(top_builddir) @LDFLAGS@ + LDLIBS:=-ltinydtls @LIBS@ + DISTDIR=$(top_builddir)/@PACKAGE_TARNAME@-@PACKAGE_VERSION@ + FILES:=Makefile.in $(SOURCES) ccm-testdata.c #cbc_aes128-testdata.c +-- +2.7.4 + diff --git a/buildroot/package/tinydtls/0002-Fix-compilation-of-tests-directory.patch b/buildroot/package/tinydtls/0002-Fix-compilation-of-tests-directory.patch new file mode 100644 index 0000000..0ab579c --- /dev/null +++ b/buildroot/package/tinydtls/0002-Fix-compilation-of-tests-directory.patch @@ -0,0 +1,31 @@ +From c629a108f5d03cd365c0ba71143ad507f6cd97f0 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 28 Jul 2016 08:36:06 +0200 +Subject: [PATCH] Fix compilation of tests directory + +binaries in tests subdirectory depends on libtinydtls so add $(LIB) dependency +for dirs target in Makefile.in + +Signed-off-by: Fabrice Fontaine +--- + Makefile.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile.in b/Makefile.in +index 7dcd424..c493705 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -68,8 +68,8 @@ check: + echo top_builddir: $(top_builddir) + $(MAKE) -C tests check + +-dirs: $(SUBDIRS) +- for dir in $^; do \ ++dirs: $(LIB) $(SUBDIRS) ++ for dir in $(SUBDIRS); do \ + $(MAKE) -C $$dir ; \ + done + +-- +2.7.4 + diff --git a/buildroot/package/tinydtls/Config.in b/buildroot/package/tinydtls/Config.in new file mode 100644 index 0000000..2f90eb2 --- /dev/null +++ b/buildroot/package/tinydtls/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_TINYDTLS + bool "tinydtls" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + tinydtls is a library for Datagram Transport Layer Security + (DTLS) covering both the client and the server state + machine. It is implemented in C and provides support for + the mandatory cipher suites specified in CoAP. + + https://sourceforge.net/projects/tinydtls + +comment "tinydtls needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/tinydtls/tinydtls.hash b/buildroot/package/tinydtls/tinydtls.hash new file mode 100644 index 0000000..66644df --- /dev/null +++ b/buildroot/package/tinydtls/tinydtls.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 ccf6d8fbae03fb2e0ba32878ed8e57d8b4f73538b1064df90a3e764da5fac010 tinydtls-0.8.2.tar.gz +sha256 65fbf31c3551633e7dcc051fac80f2c1a73b0b077af9ed564d726155dfc40513 tinydtls.h diff --git a/buildroot/package/tinydtls/tinydtls.mk b/buildroot/package/tinydtls/tinydtls.mk new file mode 100644 index 0000000..fe25001 --- /dev/null +++ b/buildroot/package/tinydtls/tinydtls.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# tinydtls +# +################################################################################ + +TINYDTLS_REL = r5 +TINYDTLS_VERSION = 0.8.2 +TINYDTLS_SITE = http://downloads.sourceforge.net/project/tinydtls/$(TINYDTLS_REL) +TINYDTLS_LICENSE = MIT +TINYDTLS_LICENSE_FILES = tinydtls.h +TINYDTLS_INSTALL_STAGING = YES +TINYDTLS_STRIP_COMPONENTS = 2 +# use inttypes.h data types instead of u_intXX_t for musl compatibility +TINYDTLS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -DSHA2_USE_INTTYPES_H" + +$(eval $(autotools-package)) diff --git a/buildroot/package/tinyhttpd/0001-misc-fixes.patch b/buildroot/package/tinyhttpd/0001-misc-fixes.patch new file mode 100644 index 0000000..05d6e50 --- /dev/null +++ b/buildroot/package/tinyhttpd/0001-misc-fixes.patch @@ -0,0 +1,80 @@ +diff -ur tinyhttpd-0.1.0/httpd.c tinyhttpd-0.1.0-patched/httpd.c +--- tinyhttpd-0.1.0/httpd.c 2001-04-21 19:13:13.000000000 -0500 ++++ tinyhttpd-0.1.0-patched/httpd.c 2007-07-02 09:19:27.000000000 -0500 +@@ -4,14 +4,6 @@ + * CSE 4344 (Network concepts), Prof. Zeigler + * University of Texas at Arlington + */ +-/* This program compiles for Sparc Solaris 2.6. +- * To compile for Linux: +- * 1) Comment out the #include line. +- * 2) Comment out the line that defines the variable newthread. +- * 3) Comment out the two lines that run pthread_create(). +- * 4) Uncomment the line that runs accept_request(). +- * 5) Remove -lsocket from the Makefile. +- */ + #include + #include + #include +@@ -22,7 +14,6 @@ + #include + #include + #include +-#include + #include + #include + +@@ -30,7 +21,6 @@ + + #define SERVER_STRING "Server: jdbhttpd/0.1.0\r\n" + +-void accept_request(int); + void bad_request(int); + void cat(int, FILE *); + void cannot_execute(int); +@@ -102,7 +92,7 @@ + } + } + +- sprintf(path, "htdocs%s", url); ++ sprintf(path, "/var/www%s", url); + if (path[strlen(path) - 1] == '/') + strcat(path, "index.html"); + if (stat(path, &st) == -1) { +@@ -475,11 +465,10 @@ + int main(void) + { + int server_sock = -1; +- u_short port = 0; ++ u_short port = 80; + int client_sock = -1; + struct sockaddr_in client_name; + int client_name_len = sizeof(client_name); +- pthread_t newthread; + + server_sock = startup(&port); + printf("httpd running on port %d\n", port); +@@ -491,9 +480,7 @@ + &client_name_len); + if (client_sock == -1) + error_die("accept"); +- /* accept_request(client_sock); */ +- if (pthread_create(&newthread , NULL, accept_request, client_sock) != 0) +- perror("pthread_create"); ++ accept_request(client_sock); + } + + close(server_sock); +diff -ur tinyhttpd-0.1.0/Makefile tinyhttpd-0.1.0-patched/Makefile +--- tinyhttpd-0.1.0/Makefile 2001-04-21 17:03:39.000000000 -0500 ++++ tinyhttpd-0.1.0-patched/Makefile 2007-07-02 10:29:41.000000000 -0500 +@@ -1,7 +1,7 @@ + all: httpd + + httpd: httpd.c +- gcc -W -Wall -lsocket -lpthread -o httpd httpd.c ++ $(CC) $(CFLAGS) $(LDFLAGS) -W -Wall -o httpd httpd.c + + clean: +- rm httpd ++ rm -f httpd diff --git a/buildroot/package/tinyhttpd/Config.in b/buildroot/package/tinyhttpd/Config.in new file mode 100644 index 0000000..f648bcd --- /dev/null +++ b/buildroot/package/tinyhttpd/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_TINYHTTPD + bool "tinyhttpd" + depends on BR2_USE_MMU # fork() + help + A relatively simple webserver written as a school + project. It is exceedingly simple, threaded and handles + basic CGI scripts. + + http://sourceforge.net/projects/tinyhttpd/ diff --git a/buildroot/package/tinyhttpd/S85tinyhttpd b/buildroot/package/tinyhttpd/S85tinyhttpd new file mode 100755 index 0000000..fb512a0 --- /dev/null +++ b/buildroot/package/tinyhttpd/S85tinyhttpd @@ -0,0 +1,33 @@ +#! /bin/sh + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +NAME=tinyhttpd + +test -x /usr/sbin/$NAME || exit 0 +mkdir -p /var/www + +case "$1" in + start) + printf "Starting $NAME: " + $NAME > /dev/null & + echo "done" + ;; + stop) + printf "Stopping $NAME: " + killall -9 $NAME + echo "done" + ;; + restart) + printf "Restarting $NAME: " + killall -9 $NAME + sleep 1 + $NAME > /dev/null & + echo "done" + ;; + *) + echo "Usage: /etc/init.d/S85tinyhttpd {start|stop|restart}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/buildroot/package/tinyhttpd/tinyhttpd.hash b/buildroot/package/tinyhttpd/tinyhttpd.hash new file mode 100644 index 0000000..73255d5 --- /dev/null +++ b/buildroot/package/tinyhttpd/tinyhttpd.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 56609b82869c80ba71b2a2af166a0bcaffe21e7412f4594e04b9a5abf733435a tinyhttpd-0.1.0.tar.gz diff --git a/buildroot/package/tinyhttpd/tinyhttpd.mk b/buildroot/package/tinyhttpd/tinyhttpd.mk new file mode 100644 index 0000000..058f6bd --- /dev/null +++ b/buildroot/package/tinyhttpd/tinyhttpd.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# tinyhttpd +# +################################################################################ + +TINYHTTPD_VERSION = 0.1.0 +TINYHTTPD_SITE = http://downloads.sourceforge.net/project/tinyhttpd/tinyhttpd%20source/tinyhttpd%20$(TINYHTTPD_VERSION) +TINYHTTPD_LICENSE = GPL +TINYHTTPD_LICENSE_FILES = README + +define TINYHTTPD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" +endef + +define TINYHTTPD_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/httpd $(TARGET_DIR)/usr/sbin/tinyhttpd + mkdir -p $(TARGET_DIR)/var/www +endef + +define TINYHTTPD_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/tinyhttpd/S85tinyhttpd \ + $(TARGET_DIR)/etc/init.d/S85tinyhttpd +endef + +define TINYHTTPD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/tinyhttpd/tinyhttpd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/tinyhttpd.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/tinyhttpd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/tinyhttpd.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/tinyhttpd/tinyhttpd.service b/buildroot/package/tinyhttpd/tinyhttpd.service new file mode 100644 index 0000000..0ae5bac --- /dev/null +++ b/buildroot/package/tinyhttpd/tinyhttpd.service @@ -0,0 +1,10 @@ +[Unit] +Description=Tiny HTTP daemon +After=network.target + +[Service] +ExecStart=/usr/sbin/tinyhttpd +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/tinymembench/0001-arm-fix-build-on-Thumb-only-architectures.patch b/buildroot/package/tinymembench/0001-arm-fix-build-on-Thumb-only-architectures.patch new file mode 100644 index 0000000..88559ec --- /dev/null +++ b/buildroot/package/tinymembench/0001-arm-fix-build-on-Thumb-only-architectures.patch @@ -0,0 +1,47 @@ +From 034a3552e9700c6d424bd706db106f5bce1f5a5e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 11 Nov 2016 21:49:39 +0100 +Subject: [PATCH] arm: fix build on Thumb-only architectures + +Building tinymembench for ARM Cortex-M currently fails, because the +arm-neon.S file contains ARM code that doesn't build on Thumb-only +architectures. To account for this and fix the build for Cortex-M, +this patch adjusts the compile time condition to also verify that the +architecture supports the ARM instruction set, by testing the +__ARM_ARCH_ISA_ARM compiler define. + +Signed-off-by: Thomas Petazzoni +--- + arm-neon.S | 2 +- + asm-opt.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arm-neon.S b/arm-neon.S +index 4db78ce..19c30ad 100644 +--- a/arm-neon.S ++++ b/arm-neon.S +@@ -21,7 +21,7 @@ + * DEALINGS IN THE SOFTWARE. + */ + +-#ifdef __arm__ ++#if defined(__arm__) && defined(__ARM_ARCH_ISA_ARM) + + .text + .fpu neon +diff --git a/asm-opt.c b/asm-opt.c +index 9da4596..eba1183 100644 +--- a/asm-opt.c ++++ b/asm-opt.c +@@ -202,7 +202,7 @@ bench_info *get_asm_framebuffer_benchmarks(void) + return empty; + } + +-#elif defined(__arm__) ++#elif defined(__arm__) && defined(__ARM_ARCH_ISA_ARM) + + #include "arm-neon.h" + +-- +2.7.4 + diff --git a/buildroot/package/tinymembench/Config.in b/buildroot/package/tinymembench/Config.in new file mode 100644 index 0000000..8f6e1a2 --- /dev/null +++ b/buildroot/package/tinymembench/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_TINYMEMBENCH + bool "tinymembench" + depends on !BR2_MIPS_NABI32 && !BR2_MIPS_NABI64 + help + Tinymembench is a simple memory benchmark program, which + tries to measure the peak bandwidth of sequential memory + accesses and the latency of random memory accesses. + Bandwidth is measured by running different assembly code for + the aligned memory blocks and attempting different prefetch + strategies. + + https://github.com/ssvb/tinymembench diff --git a/buildroot/package/tinymembench/tinymembench.hash b/buildroot/package/tinymembench/tinymembench.hash new file mode 100644 index 0000000..813a1df --- /dev/null +++ b/buildroot/package/tinymembench/tinymembench.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e8cfcf0817eb8430f736426bc7557273765cef0e8002a17cca51645114e723b7 tinymembench-v0.3.tar.gz diff --git a/buildroot/package/tinymembench/tinymembench.mk b/buildroot/package/tinymembench/tinymembench.mk new file mode 100644 index 0000000..ab479d6 --- /dev/null +++ b/buildroot/package/tinymembench/tinymembench.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# tinymembench +# +################################################################################ + +TINYMEMBENCH_VERSION = v0.3 +TINYMEMBENCH_SITE = $(call github,ssvb,tinymembench,$(TINYMEMBENCH_VERSION)) +TINYMEMBENCH_LICENSE = MIT +TINYMEMBENCH_LICENSE_FILES = main.c + +define TINYMEMBENCH_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define TINYMEMBENCH_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/tinymembench \ + $(TARGET_DIR)/usr/bin/tinymembench +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/tinyxml/Config.in b/buildroot/package/tinyxml/Config.in new file mode 100644 index 0000000..061ff67 --- /dev/null +++ b/buildroot/package/tinyxml/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_TINYXML + bool "tinyxml" + depends on BR2_INSTALL_LIBSTDCPP + help + TinyXML is a simple, small, C++ XML parser that can be + easily integrating into other programs. + + https://github.com/leethomason/tinyxml2 + +comment "tinyxml needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/tinyxml/tinyxml.hash b/buildroot/package/tinyxml/tinyxml.hash new file mode 100644 index 0000000..6aa37d9 --- /dev/null +++ b/buildroot/package/tinyxml/tinyxml.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 8164c9ad48b9028667768a584d62f7760cfbfb90d0dd6214ad174403058da10c tinyxml-2.6.2_2.tar.gz diff --git a/buildroot/package/tinyxml/tinyxml.mk b/buildroot/package/tinyxml/tinyxml.mk new file mode 100644 index 0000000..1528051 --- /dev/null +++ b/buildroot/package/tinyxml/tinyxml.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# tinyxml +# +################################################################################ + +TINYXML_VERSION = 2.6.2_2 +TINYXML_SITE = http://mirrors.xbmc.org/build-deps/sources +# AUTORECONF is needed because the XBMC's version of TinyXML contains a +# configure.ac which is not present in mainline. +TINYXML_AUTORECONF = YES +TINYXML_INSTALL_STAGING = YES +TINYXML_LICENSE = Zlib +TINYXML_LICENSE_FILES = README + +$(eval $(autotools-package)) diff --git a/buildroot/package/tinyxml2/Config.in b/buildroot/package/tinyxml2/Config.in new file mode 100644 index 0000000..2f57501 --- /dev/null +++ b/buildroot/package/tinyxml2/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_TINYXML2 + bool "tinyxml2" + depends on BR2_INSTALL_LIBSTDCPP + help + TinyXML-2 is a simple, small, efficient, C++ XML parser that + can be easily integrating into other programs. + + http://www.grinninglizard.com/tinyxml2/index.html + +comment "tinyxml2 needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/tinyxml2/tinyxml2.hash b/buildroot/package/tinyxml2/tinyxml2.hash new file mode 100644 index 0000000..e5e4d23 --- /dev/null +++ b/buildroot/package/tinyxml2/tinyxml2.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 14b38ef25cc136d71339ceeafb4856bb638d486614103453eccd323849267f20 tinyxml2-4.0.1.tar.gz diff --git a/buildroot/package/tinyxml2/tinyxml2.mk b/buildroot/package/tinyxml2/tinyxml2.mk new file mode 100644 index 0000000..e289ca9 --- /dev/null +++ b/buildroot/package/tinyxml2/tinyxml2.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# tinyxml2 +# +################################################################################ + +TINYXML2_VERSION = 4.0.1 +TINYXML2_SITE = $(call github,leethomason,tinyxml2,$(TINYXML2_VERSION)) +TINYXML2_LICENSE = Zlib +TINYXML2_LICENSE_FILES = readme.md +TINYXML2_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +TINYXML2_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/tmux/Config.in b/buildroot/package/tmux/Config.in new file mode 100644 index 0000000..756f38a --- /dev/null +++ b/buildroot/package/tmux/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_TMUX + bool "tmux" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # mbtowc() + depends on BR2_ENABLE_LOCALE # runtime + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_NCURSES + help + tmux is a terminal multiplexer, it enables a number of + terminals (or windows) to be accessed and controlled from a + single terminal. + + NOTE: tmux needs a working UTF-8 locale (BR2_GENERATE_LOCALE) + + https://tmux.github.io/ + +comment "tmux needs a toolchain w/ wchar, locale" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_ENABLE_LOCALE diff --git a/buildroot/package/tmux/tmux.hash b/buildroot/package/tmux/tmux.hash new file mode 100644 index 0000000..752bbb4 --- /dev/null +++ b/buildroot/package/tmux/tmux.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 b17cd170a94d7b58c0698752e1f4f263ab6dc47425230df7e53a6435cc7cd7e8 tmux-2.6.tar.gz +sha256 94e2b1feb1202d3308cc7ab7ec42278d24f10562394bdf269f44649327c8198f README diff --git a/buildroot/package/tmux/tmux.mk b/buildroot/package/tmux/tmux.mk new file mode 100644 index 0000000..6e03d01 --- /dev/null +++ b/buildroot/package/tmux/tmux.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# tmux +# +################################################################################ + +TMUX_VERSION = 2.6 +TMUX_SITE = https://github.com/tmux/tmux/releases/download/$(TMUX_VERSION) +TMUX_LICENSE = ISC +TMUX_LICENSE_FILES = README +TMUX_DEPENDENCIES = libevent ncurses host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/tn5250/0001-ssldir.patch b/buildroot/package/tn5250/0001-ssldir.patch new file mode 100644 index 0000000..6fc78de --- /dev/null +++ b/buildroot/package/tn5250/0001-ssldir.patch @@ -0,0 +1,17 @@ +Value is assigned to $with_ssl_dir but used from $with_ssl which is wrong. +Fix configure since it's a one-liner and avoid an autoreconf. + +Signed-off-by: Gustavo Zacarias + +diff -Nura tn5250-0.17.4.orig/configure tn5250-0.17.4/configure +--- tn5250-0.17.4.orig/configure 2014-09-10 08:33:15.689519554 -0300 ++++ tn5250-0.17.4/configure 2014-09-10 08:33:47.428613117 -0300 +@@ -23258,7 +23258,7 @@ + if test "${with_ssl_dir+set}" = set; then + withval=$with_ssl_dir; + if test "$with_ssl_dir" != "no"; then +- checksslinclude "$with_ssl" ++ checksslinclude "$with_ssl_dir" + else + for topdir in /usr/local /usr /usr/pkg /usr/lib /var/ssl /opt; do + for subdir in $topdir $topdir/openssl $topdir/ssl; do diff --git a/buildroot/package/tn5250/0002-Allow-building-against-OpenSSL-without-SSLv2_SSLv3.patch b/buildroot/package/tn5250/0002-Allow-building-against-OpenSSL-without-SSLv2_SSLv3.patch new file mode 100644 index 0000000..67f0fa6 --- /dev/null +++ b/buildroot/package/tn5250/0002-Allow-building-against-OpenSSL-without-SSLv2_SSLv3.patch @@ -0,0 +1,32 @@ +$OpenBSD: patch-lib5250_sslstream_c,v 1.1 2015/10/07 16:09:04 jca Exp $ + +Allow building against OpenSSL without SSLv2/SSLv3 support. + +Download from: +http://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/net/tn5250/patches/patch-lib5250_sslstream_c + +Signed-off-by: Peter Korsgaard +--- a/lib5250/sslstream.c.orig Fri Nov 21 09:12:21 2008 ++++ b/lib5250/sslstream.c Tue Oct 6 21:32:29 2015 +@@ -368,13 +368,19 @@ int tn5250_ssl_stream_init (Tn5250Stream *This) + methstr[4] = '\0'; + } + ++#ifndef OPENSSL_NO_SSL2 + if (!strcmp(methstr, "ssl2")) { + meth = SSLv2_client_method(); + TN5250_LOG(("SSL Method = SSLv2_client_method()\n")); +- } else if (!strcmp(methstr, "ssl3")) { ++ } else ++#endif ++#ifndef OPENSSL_NO_SSL3 ++ if (!strcmp(methstr, "ssl3")) { + meth = SSLv3_client_method(); + TN5250_LOG(("SSL Method = SSLv3_client_method()\n")); +- } else { ++ } else ++#endif ++ { + meth = SSLv23_client_method(); + TN5250_LOG(("SSL Method = SSLv23_client_method()\n")); + } diff --git a/buildroot/package/tn5250/Config.in b/buildroot/package/tn5250/Config.in new file mode 100644 index 0000000..01be40b --- /dev/null +++ b/buildroot/package/tn5250/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_TN5250 + bool "tn5250" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + Telnet client that emulates 5250 terminals and printers. + + http://tn5250.sourceforge.net/ diff --git a/buildroot/package/tn5250/tn5250.hash b/buildroot/package/tn5250/tn5250.hash new file mode 100644 index 0000000..ae65bea --- /dev/null +++ b/buildroot/package/tn5250/tn5250.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 354237d400dc46af887cb3ffa4ed1f2c371f5b8bee8be046a683a4ac9db4f9c5 tn5250-0.17.4.tar.gz diff --git a/buildroot/package/tn5250/tn5250.mk b/buildroot/package/tn5250/tn5250.mk new file mode 100644 index 0000000..4c457a5 --- /dev/null +++ b/buildroot/package/tn5250/tn5250.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# tn5250 +# +################################################################################ + +TN5250_VERSION = 0.17.4 +TN5250_SITE = http://downloads.sourceforge.net/project/tn5250/tn5250/$(TN5250_VERSION) +TN5250_MAKE_OPTS = CPPFLAGS="" +TN5250_DEPENDENCIES = ncurses +TN5250_LICENSE = LGPL-2.1+ +TN5250_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +TN5250_CONF_OPTS += --with-ssl-dir=$(STAGING_DIR)/usr +TN5250_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs openssl`" +TN5250_DEPENDENCIES += openssl host-pkgconf +else +TN5250_CONF_OPTS += --without-ssl +endif + +define TN5250_INSTALL_FIXES + rm -f $(TARGET_DIR)/usr/bin/5250keys + rm -f $(TARGET_DIR)/usr/bin/xt5250 +endef + +TN5250_POST_INSTALL_TARGET_HOOKS += TN5250_INSTALL_FIXES + +$(eval $(autotools-package)) diff --git a/buildroot/package/tor/0001-openssl-libz.patch b/buildroot/package/tor/0001-openssl-libz.patch new file mode 100644 index 0000000..9d3cf6e --- /dev/null +++ b/buildroot/package/tor/0001-openssl-libz.patch @@ -0,0 +1,129 @@ +Adjust link order of libz to solve bug with static linking +and remove host paths when looking for openssl. + +[Vincent: + - Adapt the patch to make it apply on the new version.] +[Bernd: rebased for tor-0.2.7.6, 0.2.8.10, 0.2.9.9 & 0.3.1.7] + +Signed-off-by: Bernd Kuhls +Signed-off-by: Vicente Olivert Riera + +diff -uNr tor-0.3.1.7.org/configure.ac tor-0.3.1.7/configure.ac +--- tor-0.3.1.7.org/configure.ac 2017-09-15 15:34:06.000000000 +0200 ++++ tor-0.3.1.7/configure.ac 2017-09-19 19:40:17.090538467 +0200 +@@ -709,11 +709,11 @@ + fi + ]) + +-TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto $TOR_LIB_GDI], ++TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto -lz $TOR_LIB_GDI], + [#include ], + [void RAND_add(const void *buf, int num, double entropy);], + [RAND_add((void*)0,0,0);], [], +- [/usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/athena /opt/openssl]) ++ []) + + dnl XXXX check for OPENSSL_VERSION_NUMBER == SSLeay() + +diff -uNr tor-0.3.1.7.org/src/or/include.am tor-0.3.1.7/src/or/include.am +--- tor-0.3.1.7.org/src/or/include.am 2017-06-19 17:56:51.000000000 +0200 ++++ tor-0.3.1.7/src/or/include.am 2017-09-19 19:41:02.015861546 +0200 +@@ -122,7 +122,7 @@ + src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ + src/common/libor-event.a src/trunnel/libor-trunnel.a \ + src/trace/libor-trace.a \ +- @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ + @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@ \ + @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \ + $(rust_ldadd) +diff -uNr tor-0.3.1.7.org/src/test/include.am tor-0.3.1.7/src/test/include.am +--- tor-0.3.1.7.org/src/test/include.am 2017-08-29 17:01:19.000000000 +0200 ++++ tor-0.3.1.7/src/test/include.am 2017-09-19 19:42:39.103903406 +0200 +@@ -206,8 +206,8 @@ + src/common/libor-event-testing.a \ + src/trunnel/libor-trunnel-testing.a \ + src/trace/libor-trace.a \ +- @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ + @TOR_SYSTEMD_LIBS@ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \ + $(rust_ldadd) + +@@ -231,8 +231,8 @@ + src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ + src/common/libor-event.a src/trunnel/libor-trunnel.a \ + src/trace/libor-trace.a \ +- @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ + @TOR_SYSTEMD_LIBS@ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \ + $(rust_ldadd) + +@@ -244,8 +244,8 @@ + src/common/libor-crypto-testing.a $(LIBKECCAK_TINY) $(LIBDONNA) \ + src/common/libor-event-testing.a \ + src/trace/libor-trace.a \ +- @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ + @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \ + $(rust_ldadd) + +@@ -256,8 +256,8 @@ + src/common/libor-ctime-testing.a \ + src/common/libor-event-testing.a \ + src/common/libor-crypto-testing.a $(LIBKECCAK_TINY) $(LIBDONNA) \ +- @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ + @TOR_LZMA_LIBS@ \ + $(rust_ldadd) + src_test_test_timers_LDFLAGS = $(src_test_test_LDFLAGS) +@@ -286,8 +286,8 @@ + src/common/libor-ctime.a \ + src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ + src/trace/libor-trace.a \ +- @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ ++ @TOR_LIB_MATH@ \ ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ + @TOR_LZMA_LIBS@ \ + $(rust_ldadd) + src_test_test_ntor_cl_AM_CPPFLAGS = \ +@@ -298,8 +298,8 @@ + src_test_test_hs_ntor_cl_LDADD = src/or/libtor.a src/common/libor.a \ + src/common/libor-ctime.a \ + src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ +- @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ ++ @TOR_LIB_MATH@ \ ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ + src_test_test_hs_ntor_cl_AM_CPPFLAGS = \ + -I"$(top_srcdir)/src/or" + +diff -uNr tor-0.3.1.7.org/src/tools/include.am tor-0.3.1.7/src/tools/include.am +--- tor-0.3.1.7.org/src/tools/include.am 2017-06-19 17:56:51.000000000 +0200 ++++ tor-0.3.1.7/src/tools/include.am 2017-09-19 19:43:08.880223260 +0200 +@@ -26,7 +26,7 @@ + src/common/libor-ctime.a \ + $(LIBKECCAK_TINY) \ + $(LIBDONNA) \ +- @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ + @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ + $(rust_ldadd) + +@@ -40,7 +40,7 @@ + src/common/libor-ctime-testing.a \ + $(LIBKECCAK_TINY) \ + $(LIBDONNA) \ +- @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ + @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ + endif + diff --git a/buildroot/package/tor/Config.in b/buildroot/package/tor/Config.in new file mode 100644 index 0000000..5200926 --- /dev/null +++ b/buildroot/package/tor/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_TOR + bool "tor" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_LIBEVENT + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + Tor is free software and an open network that helps you + defend against traffic analysis, a form of network + surveillance that threatens personal freedom and privacy, + confidential business activities and relationships, and + state security. + + https://www.torproject.org + +comment "tor needs a toolchain w/ NPTL" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/tor/tor.hash b/buildroot/package/tor/tor.hash new file mode 100644 index 0000000..db946ee --- /dev/null +++ b/buildroot/package/tor/tor.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 c0e1a71e8e079ddd7951f846bcbd79d5e716b602faa5b890c70762fe95cd04e0 tor-0.3.1.10.tar.gz +sha256 f9a4f724d8037711dde7d3f1d17094fb7d211545b3a3bbb1b03e769e13ca5608 LICENSE diff --git a/buildroot/package/tor/tor.mk b/buildroot/package/tor/tor.mk new file mode 100644 index 0000000..ddf912f --- /dev/null +++ b/buildroot/package/tor/tor.mk @@ -0,0 +1,62 @@ +################################################################################ +# +# tor +# +################################################################################ + +TOR_VERSION = 0.3.1.10 +TOR_SITE = https://dist.torproject.org +TOR_LICENSE = BSD-3-Clause +TOR_LICENSE_FILES = LICENSE +TOR_DEPENDENCIES = libevent openssl zlib +TOR_AUTORECONF = YES + +TOR_CONF_OPTS = \ + --disable-gcc-hardening \ + --disable-unittests \ + --with-libevent-dir=$(STAGING_DIR)/usr \ + --with-openssl-dir=$(STAGING_DIR)/usr \ + --with-zlib-dir=$(STAGING_DIR)/usr + +ifeq ($(BR2_STATIC_LIBS),y) +TOR_CONF_OPTS += \ + --enable-static-libevent \ + --enable-static-openssl \ + --enable-static-tor \ + --enable-static-zlib +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +TOR_DEPENDENCIES += libcap +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +TOR_CONF_OPTS += --enable-lzma +TOR_DEPENDENCIES += host-pkgconf xz +else +TOR_CONF_OPTS += --disable-lzma +endif + +ifeq ($(BR2_arm)$(BR2_armeb)$(BR2_i386)$(BR2_x86_64)$(BR2_PACKAGE_LIBSECCOMP),yy) +TOR_CONF_OPTS += --enable-seccomp +TOR_DEPENDENCIES += libseccomp +else +TOR_CONF_OPTS += --disable-seccomp +endif + +# uses gnu extensions +TOR_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' + +define TOR_INSTALL_CONF + $(INSTALL) -D -m 644 $(@D)/src/config/torrc.minimal \ + $(TARGET_DIR)/etc/tor/torrc +endef + +TOR_POST_INSTALL_TARGET_HOOKS += TOR_INSTALL_CONF + +define TOR_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/contrib/dist/tor.service \ + $(TARGET_DIR)/usr/lib/systemd/system/tor.service +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/tovid/0001-manpage.patch b/buildroot/package/tovid/0001-manpage.patch new file mode 100644 index 0000000..21669c9 --- /dev/null +++ b/buildroot/package/tovid/0001-manpage.patch @@ -0,0 +1,25 @@ +setup.py: disable man page to kill txt2tags SVN checkout dependency + +Signed-off-by: Steve Kenton + ++diff -pruN tovid-3534.ori/setup.py tovid-3534/setup.py +--- tovid-3534.ori/setup.py 2013-04-14 09:52:08.000000000 -0500 ++++ tovid-3534/setup.py 2015-03-21 09:39:14.880173176 -0500 +@@ -186,7 +186,7 @@ class BuildTovidInit (Command): + + # Build tovid-init with regular 'build' command + build.sub_commands.append(('build_tovid_init', None)) +-build.sub_commands.append(('build_docs', None)) ++#build.sub_commands.append(('build_docs', None)) + + # The actual setup + setup( +@@ -244,8 +244,6 @@ setup( + 'src/tovid.ini', + ]), + # Manual page +- ('share/man/man1', +- ['docs/man/tovid.1']), + # Desktop shortcut + ('share/applications', + ['tovidgui.desktop', diff --git a/buildroot/package/tovid/Config.in b/buildroot/package/tovid/Config.in new file mode 100644 index 0000000..a22dca8 --- /dev/null +++ b/buildroot/package/tovid/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_TOVID + bool "tovid" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # mplayer + depends on !BR2_TOOLCHAIN_USES_MUSL # procps-ng + # The below dependencies are runtime dependencies only + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # procps_ng + select BR2_PACKAGE_DVDAUTHOR + select BR2_PACKAGE_DVDRW_TOOLS + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_IMAGEMAGICK + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_MJPEGTOOLS + select BR2_PACKAGE_MPLAYER + select BR2_PACKAGE_PROCPS_NG # pgrep and pkill + select BR2_PACKAGE_SOX + help + The tovid suite, also known simply as tovid, is a collection + of shell and Python scripts for creating DVDs and + (S)VCDs. It is pronounced "to vid" (because it converts to + video disc formats). + + http://tovid.wikia.com/wiki/Installing_tovid + +comment "tovid needs a glibc or uclibc toolchain w/ threads, C++, wchar" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_USE_WCHAR \ + || BR2_TOOLCHAIN_USES_MUSL + +comment "tovid depends on python or python3" + depends on !BR2_PACKAGE_PYTHON && !BR2_PACKAGE_PYTHON3 + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS diff --git a/buildroot/package/tovid/tovid.hash b/buildroot/package/tovid/tovid.hash new file mode 100644 index 0000000..0bd7668 --- /dev/null +++ b/buildroot/package/tovid/tovid.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3193d081a7aa8e00f946b7514066f1fb7647f533ab1ebcc36b5ced927b0a1ab5 tovid-0.35.2.tar.gz diff --git a/buildroot/package/tovid/tovid.mk b/buildroot/package/tovid/tovid.mk new file mode 100644 index 0000000..c904b98 --- /dev/null +++ b/buildroot/package/tovid/tovid.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# tovid +# +################################################################################ + +TOVID_VERSION = 0.35.2 +TOVID_SITE = https://github.com/tovid-suite/tovid/releases/download/$(TOVID_VERSION) +TOVID_LICENSE = GPL-2.0+ +TOVID_LICENSE_FILES = COPYING +TOVID_SETUP_TYPE = distutils + +$(eval $(python-package)) diff --git a/buildroot/package/tpm-tools/Config.in b/buildroot/package/tpm-tools/Config.in new file mode 100644 index 0000000..e115687 --- /dev/null +++ b/buildroot/package/tpm-tools/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_TPM_TOOLS + bool "tpm-tools" + depends on BR2_TOOLCHAIN_HAS_THREADS # trousers + depends on !BR2_STATIC_LIBS # trousers + depends on !BR2_arc # trousers + select BR2_PACKAGE_TROUSERS + select BR2_PACKAGE_OPENSSL + help + Tools to manage and diagnose a TPM + + http://trousers.sourceforge.net/ + +comment "tpm-tools needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on !BR2_arc diff --git a/buildroot/package/tpm-tools/tpm-tools.hash b/buildroot/package/tpm-tools/tpm-tools.hash new file mode 100644 index 0000000..a2da230 --- /dev/null +++ b/buildroot/package/tpm-tools/tpm-tools.hash @@ -0,0 +1,7 @@ +# http://sourceforge.net/projects/trousers/files/tpm-tools/1.3.9.1/ +sha1 c35cb031c6b5220dd1c8a03995654fdd12aa3031 tpm-tools-1.3.9.1.tar.gz +md5 1532293aa632a0eaa7e60df87c779855 tpm-tools-1.3.9.1.tar.gz + +# Locally calculated +sha256 9cb714e2650826e2e932f65bc0ba9d61b927dc5fea47f2c2a2b64f0fdfcbfa68 tpm-tools-1.3.9.1.tar.gz +sha256 7b47225a5b77cb7825efc6a4d7e0ac57864c790542cf92f5080ec2bf310c00e5 LICENSE diff --git a/buildroot/package/tpm-tools/tpm-tools.mk b/buildroot/package/tpm-tools/tpm-tools.mk new file mode 100644 index 0000000..b673825 --- /dev/null +++ b/buildroot/package/tpm-tools/tpm-tools.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# tpm-tools +# +################################################################################ + +TPM_TOOLS_VERSION = 1.3.9.1 +TPM_TOOLS_SITE = http://downloads.sourceforge.net/project/trousers/tpm-tools/$(TPM_TOOLS_VERSION) +TPM_TOOLS_LICENSE = Common Public License Version 1.0 +TPM_TOOLS_LICENSE_FILES = LICENSE +TPM_TOOLS_DEPENDENCIES = trousers openssl $(TARGET_NLS_DEPENDENCIES) + +TPM_TOOLS_CONF_OPTS = --disable-pkcs11-support + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +TPM_TOOLS_CONF_ENV += LIBS='-liconv' +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/trace-cmd/0001-trace-listen-add-missing-header.patch b/buildroot/package/trace-cmd/0001-trace-listen-add-missing-header.patch new file mode 100644 index 0000000..350e523 --- /dev/null +++ b/buildroot/package/trace-cmd/0001-trace-listen-add-missing-header.patch @@ -0,0 +1,38 @@ +From c68c868b573acc73e144312326750be2ed96632f Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 29 Jun 2017 14:43:19 +0300 +Subject: [PATCH] trace-listen: add missing header +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The PATH_MAX macro requires the limits.h header. This fixes build with musl +libc: + +.../trace-cmd-trace-cmd-v2.6.1/trace-listen.c: In function ‘make_pid_name’: +.../trace-cmd-trace-cmd-v2.6.1/trace-listen.c:167:16: error: ‘PATH_MAX’ undeclared (first use in this function) + snprintf(buf, PATH_MAX, VAR_RUN_DIR "/trace-cmd-net.pid"); + ^~~~~~~~ + +Signed-off-by: Baruch Siach +--- +Upstream status: https://lkml.org/lkml/2017/6/29/286 + + trace-listen.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/trace-listen.c b/trace-listen.c +index 17ff9d8c160c..838d6bcf3649 100644 +--- a/trace-listen.c ++++ b/trace-listen.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + #include "trace-local.h" + #include "trace-msg.h" +-- +2.11.0 + diff --git a/buildroot/package/trace-cmd/Config.in b/buildroot/package/trace-cmd/Config.in new file mode 100644 index 0000000..574541c --- /dev/null +++ b/buildroot/package/trace-cmd/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_TRACE_CMD + bool "trace-cmd" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen() + help + Command line reader for ftrace. + + To use this profiling tool, you should enable ftrace in your + kernel configuration. This command collect traces on your + target. You can analyse these traces on the target or on + the host via the gui "kernel shark" + + http://git.kernel.org/cgit/linux/kernel/git/rostedt/trace-cmd.git + +comment "trace-cmd needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/trace-cmd/trace-cmd.hash b/buildroot/package/trace-cmd/trace-cmd.hash new file mode 100644 index 0000000..5bf4154 --- /dev/null +++ b/buildroot/package/trace-cmd/trace-cmd.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f088534808274f6233fe15130791238fb14ce9bf6e7234f9b3fe6b5a42a1245d trace-cmd-trace-cmd-v2.6.1.tar.gz diff --git a/buildroot/package/trace-cmd/trace-cmd.mk b/buildroot/package/trace-cmd/trace-cmd.mk new file mode 100644 index 0000000..0dc1456 --- /dev/null +++ b/buildroot/package/trace-cmd/trace-cmd.mk @@ -0,0 +1,53 @@ +################################################################################ +# +# trace-cmd +# +################################################################################ + +TRACE_CMD_VERSION = trace-cmd-v2.6.1 +TRACE_CMD_SITE = $(BR2_KERNEL_MIRROR)/scm/linux/kernel/git/rostedt/trace-cmd.git +TRACE_CMD_SITE_METHOD = git +TRACE_CMD_INSTALL_STAGING = YES +TRACE_CMD_LICENSE = GPL-2.0, LGPL-2.1 +TRACE_CMD_LICENSE_FILES = COPYING COPYING.LIB + +TRACE_CMD_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_AUDIT),y) +TRACE_CMD_DEPENDENCIES += audit +endif + +ifeq ($(BR2_PACKAGE_PYTHON),y) +TRACE_CMD_DEPENDENCIES += python host-swig +TRACE_CMD_MAKE_OPTS = PYTHON_VERS=python +else ifeq ($(BR2_PACKAGE_PYTHON3),y) +TRACE_CMD_DEPENDENCIES += python3 host-swig +TRACE_CMD_MAKE_OPTS = PYTHON_VERS=python3 +else +TRACE_CMD_MAKE_OPTS += NO_PYTHON=1 +endif + +# trace-cmd already defines _LARGEFILE64_SOURCE when necessary, +# redefining it on the command line causes build problems. +TRACE_CMD_CFLAGS = $(filter-out -D_LARGEFILE64_SOURCE,$(TARGET_CFLAGS)) + +# trace-cmd use CPPFLAGS to add some extra flags. +# But like for CFLAGS, $(TARGET_CPPFLAGS) contains _LARGEFILE64_SOURCE +# that causes build problems. +TRACE_CMD_CPPFLAGS = $(filter-out -D_LARGEFILE64_SOURCE,$(TARGET_CPPFLAGS)) + +define TRACE_CMD_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TRACE_CMD_CFLAGS)" \ + CPPFLAGS="$(TRACE_CMD_CPPFLAGS)" \ + $(TRACE_CMD_MAKE_OPTS) \ + -C $(@D) all +endef + +define TRACE_CMD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/trace-cmd $(TARGET_DIR)/usr/bin/trace-cmd + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/lib/trace-cmd/plugins + $(INSTALL) -D -m 0755 $(@D)/plugin_*.so $(TARGET_DIR)/usr/lib/trace-cmd/plugins +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/traceroute/Config.in b/buildroot/package/traceroute/Config.in new file mode 100644 index 0000000..42ae5a3 --- /dev/null +++ b/buildroot/package/traceroute/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_TRACEROUTE + bool "traceroute" + help + A new modern implementation of the traceroute(8) utility for + Linux systems. It tracks the route packets taken from an IP + network on their way to a given host. + + http://traceroute.sourceforge.net/ diff --git a/buildroot/package/traceroute/traceroute.hash b/buildroot/package/traceroute/traceroute.hash new file mode 100644 index 0000000..b952548 --- /dev/null +++ b/buildroot/package/traceroute/traceroute.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 3669d22a34d3f38ed50caba18cd525ba55c5c00d5465f2d20d7472e5d81603b6 traceroute-2.1.0.tar.gz + +# Hash for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/buildroot/package/traceroute/traceroute.mk b/buildroot/package/traceroute/traceroute.mk new file mode 100644 index 0000000..d01c62d --- /dev/null +++ b/buildroot/package/traceroute/traceroute.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# traceroute +# +################################################################################ + +TRACEROUTE_VERSION = 2.1.0 +TRACEROUTE_SITE = http://downloads.sourceforge.net/traceroute/traceroute/traceroute-$(TRACEROUTE_VERSION) + +TRACEROUTE_LICENSE = GPL-2.0+, LGPL-2.1+ +TRACEROUTE_LICENSE_FILES = COPYING COPYING.LIB + +# Prefer full-featured traceroute over busybox's version +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +TRACEROUTE_DEPENDENCIES += busybox +endif + +define TRACEROUTE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" -C $(@D) +endef + +define TRACEROUTE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) prefix=/usr install \ + INSTALL=$(INSTALL) -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/transmission/0001-fix-utypes.patch b/buildroot/package/transmission/0001-fix-utypes.patch new file mode 100644 index 0000000..96403a6 --- /dev/null +++ b/buildroot/package/transmission/0001-fix-utypes.patch @@ -0,0 +1,30 @@ +Fix build error "conflicting types for 'UTP_Write'" + +Fetch from: http://www.adminsehow.com/2012/10/how-to-install-transmission-2-71-on-debian-6-0-squeeze/ + +The corresponding upstream bug report (unfixed) can be found here: +https://trac.transmissionbt.com/ticket/5232 + +Signed-off-by: Bernd Kuhls + +--- transmission-2.82.org/third-party/libutp/utypes.h 2013-08-09 04:47:43.000000000 +0200 ++++ transmission-2.82/third-party/libutp/utypes.h 2014-01-02 20:17:18.000000000 +0100 +@@ -35,8 +35,15 @@ + typedef const char * cstr; + typedef char * str; + +-#ifndef __cplusplus +-typedef uint8 bool; +-#endif ++//#ifndef __cplusplus ++//typedef uint8 bool; ++//#endif ++#ifndef __cplusplus ++#ifdef HAVE_STDBOOL_H ++#include ++#else ++typedef uint8 bool; ++#endif ++#endif + + #endif //__UTYPES_H__ diff --git a/buildroot/package/transmission/0002-musl-missing-header.patch b/buildroot/package/transmission/0002-musl-missing-header.patch new file mode 100644 index 0000000..ebb74cb --- /dev/null +++ b/buildroot/package/transmission/0002-musl-missing-header.patch @@ -0,0 +1,36 @@ +Fix musl build + +Downloaded from +https://cgit.gentoo.org/proj/musl.git/tree/net-p2p/transmission/files/transmission-2.84-musl-missing-header.patch + +Signed-off-by: Bernd Kuhls + + +libtransmission/transmission.h: add missing + +transmission.h and several files including it, like bitfield.c and fdlimits.h +make reference to ssize_t, off_t and other types defined in but +never include the header. By including in transmission.h, the +required type definitions are propagated to all files that need them. + +Not including on glibc and uClibc systems does not pose a problem +because of the way the headers stack in those C Standard Libraries, but on musl +excluding leads to compile time failure. + +For the POSIX specs, see + +http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html + +Signed-of-by: Anthony G. Basile + +diff -Naur transmission-2.84.orig/libtransmission/transmission.h transmission-2.84/libtransmission/transmission.h +--- transmission-2.84.orig/libtransmission/transmission.h 2014-07-01 13:09:01.682910744 -0400 ++++ transmission-2.84/libtransmission/transmission.h 2015-07-19 03:11:07.379219181 -0400 +@@ -28,6 +28,7 @@ + + #include /* uintN_t */ + #include /* time_t */ ++#include + + #ifdef WIN32 + #define __USE_MINGW_ANSI_STDIO 1 diff --git a/buildroot/package/transmission/0003-miniupnpc-cross.patch b/buildroot/package/transmission/0003-miniupnpc-cross.patch new file mode 100644 index 0000000..5037c2e --- /dev/null +++ b/buildroot/package/transmission/0003-miniupnpc-cross.patch @@ -0,0 +1,31 @@ +Fix libminiupnpc version detection + +Problem is known upstream: https://trac.transmissionbt.com/ticket/6140 + +For buildroot we know the libminiupnpc version so we hard-code 2.0. + +Signed-off-by: Bernd Kuhls + +diff -uNr transmission-2.92.org/configure.ac transmission-2.92/configure.ac +--- transmission-2.92.org/configure.ac 2016-03-06 21:23:45.336198393 +0100 ++++ transmission-2.92/configure.ac 2016-07-02 21:48:13.452385686 +0200 +@@ -386,18 +386,7 @@ + dnl MINIUPNPC_API_VERSION and we won't have to figure + dnl it out on our own + if test "x$upnp_version" = "xunknown" ; then +- AC_RUN_IFELSE( +- [AC_LANG_PROGRAM( +- [#include +- #include ], +- [#ifdef MINIUPNPC_API_VERSION +- return EXIT_SUCCESS; +- #else +- return EXIT_FAILURE; +- #endif] +- )], +- [upnp_version=">= 1.7"] +- ) ++ upnp_version="2.0" + fi + + dnl Or maybe it's miniupnp 1.6 diff --git a/buildroot/package/transmission/0004-fix-utp-include.patch b/buildroot/package/transmission/0004-fix-utp-include.patch new file mode 100644 index 0000000..db8b5ab --- /dev/null +++ b/buildroot/package/transmission/0004-fix-utp-include.patch @@ -0,0 +1,46 @@ +Fix compilation when using system libminiupnpc with libutp disabled + +If transmission uses its own copy of libminiupnpc in third-party/ then +the configure script adds that path to CFLAGS: +https://trac.transmissionbt.com/browser/trunk/configure.ac#L455 + +This path is also added if transmission uses its own copy of libutp: +https://trac.transmissionbt.com/browser/trunk/configure.ac#L349 + +But if a system-provided libminiupnpc is used and utp-support is +disabled using --disable-utp the result is a build error, detected by +buildroot autobuilders: +http://autobuild.buildroot.net/results/b79/b79e51140cb0320554a58ce59dcb33f53cd9211a/build-end.log + +net.c:40:24: fatal error: libutp/utp.h: No such file or directory + +Patch proposed by Yann E. MORIN: +http://lists.busybox.net/pipermail/buildroot/2016-July/167896.html + +Patch sent upstream: https://trac.transmissionbt.com/ticket/6163 + +Signed-off-by: Bernd Kuhls + +diff -uNr transmission-2.92.org/configure.ac transmission-2.92/configure.ac +--- transmission-2.92.org/configure.ac 2016-03-06 21:23:45.336198393 +0100 ++++ transmission-2.92/configure.ac 2016-07-31 12:13:40.921660078 +0200 +@@ -358,6 +358,10 @@ + else + AC_MSG_ERROR("Unable to build uTP support -- C++ compiler not found") + fi ++else ++ # For the system libminiupnpc with UTC disabled, ++ # point to our bundled UTP headers ++ LIBUTP_CFLAGS="-I\$(top_srcdir)/third-party/" + fi + AC_SUBST(LIBUTP_CFLAGS) + AC_SUBST(LIBUTP_LIBS) +@@ -457,7 +461,7 @@ + LIBUPNP_LIBS_QT="\$\${TRANSMISSION_TOP}/third-party/miniupnp/libminiupnp.a" + else + AC_DEFINE([SYSTEM_MINIUPNP]) +- LIBUPNP_CFLAGS="" ++ LIBUPNP_CFLAGS="${LIBUTP_CFLAGS}" + LIBUPNP_LIBS="-lminiupnpc" + LIBUPNP_LIBS_QT="-lminiupnpc" + fi diff --git a/buildroot/package/transmission/0005-uClibc-ng-since-1.0.18-has-sys-quota.h-synced-with-G.patch b/buildroot/package/transmission/0005-uClibc-ng-since-1.0.18-has-sys-quota.h-synced-with-G.patch new file mode 100644 index 0000000..91a962a --- /dev/null +++ b/buildroot/package/transmission/0005-uClibc-ng-since-1.0.18-has-sys-quota.h-synced-with-G.patch @@ -0,0 +1,29 @@ +From 8682fe1bad44acc06154003ca9c9163b917bf4e3 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Thu, 29 Sep 2016 19:52:49 +0200 +Subject: [PATCH] uClibc-ng since 1.0.18 has sys/quota.h synced with GNU libc + +Signed-off-by: Waldemar Brodkorb + +Pull Request: +https://github.com/transmission/transmission/pull/42 +--- + libtransmission/platform-quota.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libtransmission/platform-quota.c b/libtransmission/platform-quota.c +index 58c518a..57377ef 100644 +--- a/libtransmission/platform-quota.c ++++ b/libtransmission/platform-quota.c +@@ -284,7 +284,7 @@ getquota (const char * device) + spaceused = (int64_t) dq.dqb_curblocks >> 1; + #elif defined(__APPLE__) + spaceused = (int64_t) dq.dqb_curbytes; +-#elif defined(__UCLIBC__) ++#elif defined(__UCLIBC__) && (__UCLIBC_MAJOR__ == 0 || (__UCLIBC_MAJOR__ == 1 && __UCLIBC_SUBLEVEL__ <= 17)) + spaceused = (int64_t) btodb(dq.dqb_curblocks); + #elif defined(__sun) || (defined(_LINUX_QUOTA_VERSION) && _LINUX_QUOTA_VERSION < 2) + spaceused = (int64_t) dq.dqb_curblocks >> 1; +-- +2.1.4 + diff --git a/buildroot/package/transmission/0006-libsystemd.patch b/buildroot/package/transmission/0006-libsystemd.patch new file mode 100644 index 0000000..b32aff2 --- /dev/null +++ b/buildroot/package/transmission/0006-libsystemd.patch @@ -0,0 +1,133 @@ +From 0862099d0bf5a3ec8b2e9d538458d612897741a2 Mon Sep 17 00:00:00 2001 +From: Mike Gelfand +Date: Sat, 23 Apr 2016 16:13:25 +0000 +Subject: [PATCH] #5921: Use libsystemd instead of libsystemd-daemon (original + patches by Sandro Tosi and Mike Gilbert) + +In systemd v209, released over two years ago, the various libsystemd-* +libraries (libsystemd-journal.so, libsystemd-login.so, libsystem-daemon.so, +libsystemd-id128.so) were merged into a single libsystemd.so library to +reduce code duplication and avoid cyclic dependencies. + +Downloaded from upstream commit: +https://github.com/transmission/transmission/commit/0862099d0bf5a3ec8b2e9d538458d612897741a2 + +Signed-off-by: Bernd Kuhls +--- + CMakeLists.txt | 4 ++-- + configure.ac | 16 ++++++++-------- + daemon/CMakeLists.txt | 8 ++++---- + daemon/Makefile.am | 4 ++-- + daemon/daemon.c | 2 +- + 5 files changed, 17 insertions(+), 17 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8b324dc..356fc2f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -398,9 +398,9 @@ endif() + if(WITH_SYSTEMD) + tr_get_required_flag(WITH_SYSTEMD SYSTEMD_IS_REQUIRED) + +- pkg_check_modules(SYSTEMD_DAEMON ${SYSTEMD_IS_REQUIRED} libsystemd-daemon) ++ pkg_check_modules(SYSTEMD ${SYSTEMD_IS_REQUIRED} libsystemd) + +- tr_fixup_auto_option(WITH_SYSTEMD SYSTEMD_DAEMON_FOUND SYSTEMD_IS_REQUIRED) ++ tr_fixup_auto_option(WITH_SYSTEMD SYSTEMD_FOUND SYSTEMD_IS_REQUIRED) + endif() + + include_directories(${CMAKE_BINARY_DIR}) +diff --git a/configure.ac b/configure.ac +index 92e4372..b64f2a3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -240,15 +240,15 @@ dnl + dnl file monitoring for the daemon + + # Check whether to enable systemd startup notification. +-# This requires libsystemd-daemon. +-AC_ARG_WITH([systemd-daemon], AS_HELP_STRING([--with-systemd-daemon], ++# This requires libsystemd. ++AC_ARG_WITH([systemd], AS_HELP_STRING([--with-systemd], + [Add support for systemd startup notification (default is autodetected)]), +- [USE_SYSTEMD_DAEMON=$withval], [USE_SYSTEMD_DAEMON=auto]) +-AS_IF([test "x$USE_SYSTEMD_DAEMON" != "xno"], [ +- PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon], +- [AC_DEFINE(USE_SYSTEMD_DAEMON,1,[Use systemd startup notification])], +- [AS_IF([test "x$USE_SYSTEMD_DAEMON" = "xyes"], +- [AC_MSG_ERROR([systemd startup notification support requested, but libsystemd-daemon not found.])] ++ [USE_SYSTEMD=$withval], [USE_SYSTEMD=auto]) ++AS_IF([test "x$USE_SYSTEMD" != "xno"], [ ++ PKG_CHECK_MODULES([SYSTEMD], [libsystemd], ++ [AC_DEFINE(USE_SYSTEMD,1,[Use systemd startup notification])], ++ [AS_IF([test "x$USE_SYSTEMD" = "xyes"], ++ [AC_MSG_ERROR([systemd startup notification support requested, but libsystemd not found.])] + )] + ) + ]) +diff --git a/daemon/CMakeLists.txt b/daemon/CMakeLists.txt +index e8f8b34..8ec3b95 100644 +--- a/daemon/CMakeLists.txt ++++ b/daemon/CMakeLists.txt +@@ -1,7 +1,7 @@ + project(trdaemon) + + if(WITH_SYSTEMD) +- add_definitions(-DUSE_SYSTEMD_DAEMON) ++ add_definitions(-DUSE_SYSTEMD) + endif() + + include_directories( +@@ -37,14 +37,14 @@ add_executable(${TR_NAME}-daemon + ${${PROJECT_NAME}_WIN32_RC_FILE}) + + set_target_properties(${TR_NAME}-daemon PROPERTIES +- COMPILE_FLAGS "${SYSTEMD_DAEMON_CFLAGS}" +- LINK_FLAGS "${SYSTEMD_DAEMON_LDFLAGS}" ++ COMPILE_FLAGS "${SYSTEMD_CFLAGS}" ++ LINK_FLAGS "${SYSTEMD_LDFLAGS}" + ) + + target_link_libraries(${TR_NAME}-daemon + ${TR_NAME} + ${EVENT2_LIBRARIES} +- ${SYSTEMD_DAEMON_LIBRARIES} ++ ${SYSTEMD_LIBRARIES} + ) + + tr_win32_app_info(${PROJECT_NAME}_remote_WIN32_RC_FILE +diff --git a/daemon/Makefile.am b/daemon/Makefile.am +index 677f765..34d7076 100644 +--- a/daemon/Makefile.am ++++ b/daemon/Makefile.am +@@ -3,7 +3,7 @@ AM_CPPFLAGS = -I@top_srcdir@ -DEMBEDDED + AM_CFLAGS = \ + @LIBEVENT_CFLAGS@ \ + @LIBCURL_CFLAGS@ \ +- @SYSTEMD_DAEMON_CFLAGS@ \ ++ @SYSTEMD_CFLAGS@ \ + @ZLIB_CFLAGS@ \ + @PTHREAD_CFLAGS@ + +@@ -29,7 +29,7 @@ LDADD = \ + @LIBCURL_LIBS@ \ + @CRYPTO_LIBS@ \ + @INTLLIBS@ \ +- @SYSTEMD_DAEMON_LIBS@ \ ++ @SYSTEMD_LIBS@ \ + @ZLIB_LIBS@ \ + @PTHREAD_LIBS@ \ + ${LIBM} +diff --git a/daemon/daemon.c b/daemon/daemon.c +index 40ac5a6..62ac715 100644 +--- a/daemon/daemon.c ++++ b/daemon/daemon.c +@@ -33,7 +33,7 @@ + #include + #include + +-#ifdef USE_SYSTEMD_DAEMON ++#ifdef USE_SYSTEMD + #include + #else + static void sd_notify (int status UNUSED, const char * str UNUSED) { } diff --git a/buildroot/package/transmission/Config.in b/buildroot/package/transmission/Config.in new file mode 100644 index 0000000..dac4d1b --- /dev/null +++ b/buildroot/package/transmission/Config.in @@ -0,0 +1,47 @@ +config BR2_PACKAGE_TRANSMISSION + bool "transmission" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_ZLIB + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBEVENT + help + Transmission is a cross-platform BitTorrent client. + + http://www.transmissionbt.com/ + +if BR2_PACKAGE_TRANSMISSION + +config BR2_PACKAGE_TRANSMISSION_UTP + bool "Transmission uTP support" + depends on BR2_INSTALL_LIBSTDCPP + help + Install support for uTorrent Transport Protocol + +comment "uTP needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_TRANSMISSION_CLI + bool "transmission-cli" + help + Install transmission command line interface. + +config BR2_PACKAGE_TRANSMISSION_DAEMON + bool "transmission-daemon" + help + Install transmission daemon. + +config BR2_PACKAGE_TRANSMISSION_GTK + bool "transmission-gtk" + depends on BR2_PACKAGE_LIBGTK3 && BR2_SYSTEM_ENABLE_NLS + help + Install transmission GTK-based GUI interface. + +comment "transmission-gtk needs NLS enabled" + depends on BR2_PACKAGE_LIBGTK3 && !BR2_SYSTEM_ENABLE_NLS +endif + +comment "transmission needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/transmission/S92transmission b/buildroot/package/transmission/S92transmission new file mode 100644 index 0000000..29d7cd5 --- /dev/null +++ b/buildroot/package/transmission/S92transmission @@ -0,0 +1,156 @@ +#!/bin/sh + +# Original Author: Lennart A. Jtte, based on Rob Howell's script +# Modified by Maarten Van Coile & others (on IRC) + +# Changes for buildroot: +# USERNAME points to 'default' in standard installation +# TODO: set logfile with --logfile option + +# Do NOT "set -e" + +# +# ----- CONFIGURATION ----- +# +# For the default location Transmission uses, visit: +# http://trac.transmissionbt.com/wiki/ConfigFiles +# For a guide on how set the preferences, visit: +# http://trac.transmissionbt.com/wiki/EditConfigFiles +# For the available environement variables, visit: +# http://trac.transmissionbt.com/wiki/EnvironmentVariables +# +# The name of the user that should run Transmission. +# It's RECOMENDED to run Transmission in it's own user, +# by default, this is set to 'transmission'. +# For the sake of security you shouldn't set a password +# on this user +USERNAME=transmission + + +# ----- *ADVANCED* CONFIGURATION ----- +# Only change these options if you know what you are doing! +# +# The folder where Transmission stores the config & web files. +# ONLY change this you have it at a non-default location +#TRANSMISSION_HOME="/var/config/transmission-daemon" +#TRANSMISSION_WEB_HOME="/usr/share/transmission/web" +# +# The arguments passed on to transmission-daemon. +# ONLY change this you need to, otherwise use the +# settings file as per above. +#TRANSMISSION_ARGS="" + + +# ----- END OF CONFIGURATION ----- +# +# PATH should only include /usr/* if it runs after the mountnfs.sh script. +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +DESC="bittorrent client" +NAME=transmission-daemon +DAEMON=$(which $NAME) +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +[ -f /etc/default/rcS ] && . /etc/default/rcS + +# +# Function that starts the daemon/service +# + +start() +{ + # Export the configuration/web directory, if set + if [ -n "$TRANSMISSION_HOME" ]; then + export TRANSMISSION_HOME + fi + if [ -n "$TRANSMISSION_WEB_HOME" ]; then + export TRANSMISSION_WEB_HOME + fi + + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \ + --exec $DAEMON --background --test -- -f $TRANSMISSION_ARGS > /dev/null \ + || return 1 + start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \ + --exec $DAEMON --background -- -f $TRANSMISSION_ARGS \ + || return 2 +} + +# +# Function that stops the daemon/service +# +stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/10/KILL/5 --pidfile $PIDFILE --name $NAME + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + # If the above conditions are not satisfied then add some other code + # that waits for the process to drop all resources that could be + # needed by services started subsequently. A last resort is to + # sleep for some time. + + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + + return "$RETVAL" +} + +case "$1" in + start) + echo "Starting $DESC" "$NAME..." + start + case "$?" in + 0|1) echo " Starting $DESC $NAME succeeded" ;; + *) echo " Starting $DESC $NAME failed" ;; + esac + ;; + stop) + echo "Stopping $DESC $NAME..." + stop + case "$?" in + 0|1) echo " Stopping $DESC $NAME succeeded" ;; + *) echo " Stopping $DESC $NAME failed" ;; + esac + ;; + restart|force-reload) + # + # If the "reload" option is implemented then remove the + # 'force-reload' alias + # + echo "Restarting $DESC $NAME..." + stop + case "$?" in + 0|1) + start + case "$?" in + 0|1) echo " Restarting $DESC $NAME succeeded" ;; + *) echo " Restarting $DESC $NAME failed: couldn't start $NAME" ;; + esac + ;; + *) + echo " Restarting $DESC $NAME failed: couldn't stop $NAME" ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + exit 3 + ;; +esac diff --git a/buildroot/package/transmission/transmission.hash b/buildroot/package/transmission/transmission.hash new file mode 100644 index 0000000..4c1c3f9 --- /dev/null +++ b/buildroot/package/transmission/transmission.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8815920e0a4499bcdadbbe89a4115092dab42ce5199f71ff9a926cfd12b9b90b transmission-2.93.tar.xz +sha256 20801783bf59e27d03ed6aab625b32a34e221ae95bf801db87827c8023398495 COPYING diff --git a/buildroot/package/transmission/transmission.mk b/buildroot/package/transmission/transmission.mk new file mode 100644 index 0000000..65add0d --- /dev/null +++ b/buildroot/package/transmission/transmission.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# transmission +# +################################################################################ + +TRANSMISSION_VERSION = 2.93 +TRANSMISSION_SITE = https://github.com/transmission/transmission-releases/raw/master +TRANSMISSION_SOURCE = transmission-$(TRANSMISSION_VERSION).tar.xz +TRANSMISSION_DEPENDENCIES = \ + host-pkgconf \ + host-intltool \ + libcurl \ + libevent \ + openssl \ + zlib +TRANSMISSION_AUTORECONF = YES +TRANSMISSION_CONF_OPTS = \ + --without-inotify \ + --enable-lightweight +TRANSMISSION_LICENSE = GPL-2.0 or GPL-3.0 with OpenSSL exception +TRANSMISSION_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBMINIUPNPC),y) +TRANSMISSION_DEPENDENCIES += libminiupnpc +endif + +ifeq ($(BR2_PACKAGE_LIBNATPMP),y) +TRANSMISSION_DEPENDENCIES += libnatpmp +TRANSMISSION_CONF_OPTS += --enable-external-natpmp +else +TRANSMISSION_CONF_OPTS += --disable-external-natpmp +endif + +ifeq ($(BR2_PACKAGE_TRANSMISSION_UTP),y) +TRANSMISSION_CONF_OPTS += --enable-utp +else +TRANSMISSION_CONF_OPTS += --disable-utp +endif + +ifeq ($(BR2_PACKAGE_TRANSMISSION_CLI),y) +TRANSMISSION_CONF_OPTS += --enable-cli +else +TRANSMISSION_CONF_OPTS += --disable-cli +endif + +ifeq ($(BR2_PACKAGE_TRANSMISSION_DAEMON),y) +TRANSMISSION_CONF_OPTS += --enable-daemon + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +TRANSMISSION_DEPENDENCIES += systemd +TRANSMISSION_CONF_OPTS += --with-systemd +else +TRANSMISSION_CONF_OPTS += --without-systemd +endif + +define TRANSMISSION_USERS + transmission -1 transmission -1 * /var/lib/transmission - transmission Transmission Daemon +endef + +define TRANSMISSION_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/transmission/S92transmission \ + $(TARGET_DIR)/etc/init.d/S92transmission +endef + +define TRANSMISSION_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 $(@D)/daemon/transmission-daemon.service \ + $(TARGET_DIR)/usr/lib/systemd/system/transmission-daemon.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -fs ../../../../usr/lib/systemd/system/transmission-daemon.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/transmission-daemon.service +endef + +else +TRANSMISSION_CONF_OPTS += --disable-daemon +endif + +ifeq ($(BR2_PACKAGE_TRANSMISSION_GTK),y) +TRANSMISSION_CONF_OPTS += --with-gtk +TRANSMISSION_DEPENDENCIES += libgtk3 +else +TRANSMISSION_CONF_OPTS += --without-gtk +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/tree/Config.in b/buildroot/package/tree/Config.in new file mode 100644 index 0000000..234995f --- /dev/null +++ b/buildroot/package/tree/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_TREE + bool "tree" + depends on BR2_USE_WCHAR + help + Tree is a recursive directory listing command that produces + a depth indented listing of files, which is colorized ala + dircolors if the LS_COLORS environment variable is set and + output is to tty. + + http://mama.indstate.edu/users/ice/tree/ + +comment "tree needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/tree/tree.hash b/buildroot/package/tree/tree.hash new file mode 100644 index 0000000..ab79df8 --- /dev/null +++ b/buildroot/package/tree/tree.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6957c20e82561ac4231638996e74f4cfa4e6faabc5a2f511f0b4e3940e8f7b12 tree-1.7.0.tgz diff --git a/buildroot/package/tree/tree.mk b/buildroot/package/tree/tree.mk new file mode 100644 index 0000000..34b6c60 --- /dev/null +++ b/buildroot/package/tree/tree.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# tree +# +################################################################################ + +TREE_VERSION = 1.7.0 +TREE_SOURCE = tree-$(TREE_VERSION).tgz +TREE_SITE = http://mama.indstate.edu/users/ice/tree/src +TREE_LICENSE = GPL-2.0+ +TREE_LICENSE_FILES = LICENSE + +define TREE_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define TREE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/tree $(TARGET_DIR)/usr/bin/tree +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/tremor/Config.in b/buildroot/package/tremor/Config.in new file mode 100644 index 0000000..ec7b8f8 --- /dev/null +++ b/buildroot/package/tremor/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_TREMOR + bool "tremor (fixed point vorbis decoder)" + select BR2_PACKAGE_LIBOGG + help + Tremor is a fixed point implementation of an Ogg Vorbis + decoder. It provides a decoding API similar to libvorbis, + but gives much better performance on systems without a + floating-point unit. + + https://wiki.xiph.org/Tremor diff --git a/buildroot/package/tremor/tremor.hash b/buildroot/package/tremor/tremor.hash new file mode 100644 index 0000000..89661a6 --- /dev/null +++ b/buildroot/package/tremor/tremor.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ba94cfdf886399c550f76908285bfa9e322f24085de6f1810c2abea565c13a15 tremor-7c30a66346199f3f09017a09567c6c8a3a0eedc8.tar.gz +sha256 d2ab5758336489da61c12cc5bb757da5339c4ae9001f9bb0562b4370249af814 COPYING diff --git a/buildroot/package/tremor/tremor.mk b/buildroot/package/tremor/tremor.mk new file mode 100644 index 0000000..835fe36 --- /dev/null +++ b/buildroot/package/tremor/tremor.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# tremor +# +################################################################################ + +TREMOR_VERSION = 7c30a66346199f3f09017a09567c6c8a3a0eedc8 +TREMOR_SITE = https://git.xiph.org/tremor.git +TREMOR_SITE_METHOD = git +TREMOR_LICENSE = BSD-3-Clause +TREMOR_LICENSE_FILES = COPYING + +TREMOR_AUTORECONF = YES +TREMOR_INSTALL_STAGING = YES +TREMOR_DEPENDENCIES = libogg + +# tremor has ARM assembly code that cannot be compiled in Thumb2 mode, +# so we must force the traditional ARM mode. +# However, some ARM architectures like ARNv7-M only supports Thumb +# instructions, but the tremor build configuration enables ARM assembly +# code unconditionally for all arm triplets by defining _ARM_ASSEM_. +# We are overriding this by undefining this macro for the ARM +# architectures not supporting ARM instructions. +ifeq ($(BR2_arm),y) +ifeq ($(BR2_ARM_CPU_HAS_ARM),y) +TREMOR_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -marm" +else +TREMOR_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -U_ARM_ASSEM_" +endif +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/triggerhappy/Config.in b/buildroot/package/triggerhappy/Config.in new file mode 100644 index 0000000..a7864b3 --- /dev/null +++ b/buildroot/package/triggerhappy/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_TRIGGERHAPPY + bool "triggerhappy" + depends on BR2_USE_MMU # fork() + help + Triggerhappy is a hotkey daemon developed with small and + embedded systems in mind, e.g. linux based routers. It + attaches to the input device files and interprets the event + data received and executes scripts configured in its + configuration. + + https://github.com/wertarbyte/triggerhappy diff --git a/buildroot/package/triggerhappy/S10triggerhappy b/buildroot/package/triggerhappy/S10triggerhappy new file mode 100755 index 0000000..3253e91 --- /dev/null +++ b/buildroot/package/triggerhappy/S10triggerhappy @@ -0,0 +1,40 @@ +#!/bin/sh + +NAME=thd +DAEMON=/usr/sbin/$NAME +PIDFILE=/var/run/$NAME.pid +DAEMON_ARGS="--daemon --triggers /etc/triggerhappy/triggers.d --socket /var/run/thd.socket --pidfile $PIDFILE --user nobody /dev/input/event*" + +# Sanity checks +test -x $DAEMON || exit 0 + +[ -r /etc/default/triggerhappy ] && . /etc/default/triggerhappy + +start() { + printf "Starting $NAME: " + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \ + && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping $NAME: " + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + sleep 1 + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/triggerhappy/triggerhappy.hash b/buildroot/package/triggerhappy/triggerhappy.hash new file mode 100644 index 0000000..5a1d767 --- /dev/null +++ b/buildroot/package/triggerhappy/triggerhappy.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 1b3221963b9adca26eacc5442d8c2422cf2072f8adde1dbd691a69b37a583fb1 triggerhappy-b822888066129350e51ad79f1cf307fa38dae4f7.tar.gz diff --git a/buildroot/package/triggerhappy/triggerhappy.mk b/buildroot/package/triggerhappy/triggerhappy.mk new file mode 100644 index 0000000..4c39ab5 --- /dev/null +++ b/buildroot/package/triggerhappy/triggerhappy.mk @@ -0,0 +1,45 @@ +################################################################################ +# +# triggerhappy +# +################################################################################ + +TRIGGERHAPPY_VERSION = b822888066129350e51ad79f1cf307fa38dae4f7 +TRIGGERHAPPY_SITE = $(call github,wertarbyte,triggerhappy,$(TRIGGERHAPPY_VERSION)) +TRIGGERHAPPY_LICENSE = GPL-3.0+ +TRIGGERHAPPY_LICENSE_FILES = COPYING +TRIGGERHAPPY_DEPENDENCIES = host-pkgconf + +define TRIGGERHAPPY_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) PKGCONFIG="$(PKG_CONFIG_HOST_BINARY)" \ + -C $(@D) thd th-cmd +endef + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +define TRIGGERHAPPY_INSTALL_UDEV_RULE + $(INSTALL) -D -m 0644 $(@D)/udev/triggerhappy-udev.rules \ + $(TARGET_DIR)/lib/udev/rules.d/triggerhappy.rules +endef +endif + +define TRIGGERHAPPY_INSTALL_TARGET_CMDS + $(INSTALL) -d $(TARGET_DIR)/etc/triggerhappy/triggers.d + $(INSTALL) -D -m 0755 $(@D)/thd $(TARGET_DIR)/usr/sbin/thd + $(INSTALL) -D -m 0755 $(@D)/th-cmd $(TARGET_DIR)/usr/sbin/th-cmd + $(TRIGGERHAPPY_INSTALL_UDEV_RULE) +endef + +define TRIGGERHAPPY_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/triggerhappy/S10triggerhappy \ + $(TARGET_DIR)/etc/init.d/S10triggerhappy +endef + +define TRIGGERHAPPY_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 package/triggerhappy/triggerhappy.service \ + $(TARGET_DIR)/usr/lib/systemd/system/triggerhappy.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/triggerhappy.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/triggerhappy.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/triggerhappy/triggerhappy.service b/buildroot/package/triggerhappy/triggerhappy.service new file mode 100644 index 0000000..8431afe --- /dev/null +++ b/buildroot/package/triggerhappy/triggerhappy.service @@ -0,0 +1,9 @@ +[Unit] +Description=Triggerhappy daemon + +[Service] +ExecStart=/usr/sbin/thd --triggers /etc/triggerhappy/triggers.d --socket /var/run/thd.socket --user nobody --deviceglob /dev/input/event* +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/buildroot/package/trinity/0001-compat-handle-removed-autofs-macros.patch b/buildroot/package/trinity/0001-compat-handle-removed-autofs-macros.patch new file mode 100644 index 0000000..e3c6ee3 --- /dev/null +++ b/buildroot/package/trinity/0001-compat-handle-removed-autofs-macros.patch @@ -0,0 +1,61 @@ +From e4f31d5a1ce65974c2a6b2e6e1a2b16fffc51518 Mon Sep 17 00:00:00 2001 +From: Jiri Slaby +Date: Tue, 28 Nov 2017 10:15:22 +0100 +Subject: [PATCH] compat: handle removed autofs macros + +In file included from ioctls/autofs.c:4:0: +ioctls/autofs.c:241:8: error: 'AUTOFS_IOC_EXPIRE_INDIRECT' undeclared here (not in a function); did you mean 'AUTOFS_IOC_EXPIRE_CMD'? + IOCTL(AUTOFS_IOC_EXPIRE_INDIRECT), + ^ +include/ioctls.h:53:15: note: in definition of macro 'IOCTL' + { .request = _request, .name = #_request, } + ^~~~~~~~ +ioctls/autofs.c:242:8: error: 'AUTOFS_IOC_EXPIRE_DIRECT' undeclared here (not in a function); did you mean 'AUTOFS_IOC_EXPIRE_INDIRECT'? + IOCTL(AUTOFS_IOC_EXPIRE_DIRECT), + ^ +include/ioctls.h:53:15: note: in definition of macro 'IOCTL' + { .request = _request, .name = #_request, } + ^~~~~~~~ + +Define them as AUTOFS_IOC_EXPIRE_MULTI as they used to be. + +Signed-off-by: Jiri Slaby +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit e4f31d5a1ce + + include/compat.h | 8 ++++++++ + ioctls/autofs.c | 1 + + 2 files changed, 9 insertions(+) + +diff --git a/include/compat.h b/include/compat.h +index 10065ceca5f6..fc9a1b95ac4c 100644 +--- a/include/compat.h ++++ b/include/compat.h +@@ -1209,3 +1209,11 @@ struct kvm_get_htab_fd { + #ifndef SO_IP_SET + #define SO_IP_SET 83 + #endif ++ ++/* linux/auto_fs4.h */ ++#ifndef AUTOFS_IOC_EXPIRE_INDIRECT ++#define AUTOFS_IOC_EXPIRE_INDIRECT AUTOFS_IOC_EXPIRE_MULTI ++#endif ++#ifndef AUTOFS_IOC_EXPIRE_DIRECT ++#define AUTOFS_IOC_EXPIRE_DIRECT AUTOFS_IOC_EXPIRE_MULTI ++#endif +diff --git a/ioctls/autofs.c b/ioctls/autofs.c +index 04a3eb811326..a39ccccc056b 100644 +--- a/ioctls/autofs.c ++++ b/ioctls/autofs.c +@@ -8,6 +8,7 @@ + #include "shm.h" + #include "syscall.h" + #include "utils.h" ++#include "compat.h" + + /* include/linux/auto_dev-ioctl.h */ + /* +-- +2.15.0 + diff --git a/buildroot/package/trinity/Config.in b/buildroot/package/trinity/Config.in new file mode 100644 index 0000000..31a9305 --- /dev/null +++ b/buildroot/package/trinity/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_TRINITY_ARCH_SUPPORTS + bool + default y + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # __sync_val_compare_and_swap_4 + depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \ + BR2_mips || BR2_mipsel || BR2_powerpc || BR2_powerpc64 || \ + BR2_powerpc64le || BR2_sparc || BR2_x86_64 + +config BR2_PACKAGE_TRINITY + bool "trinity" + depends on BR2_PACKAGE_TRINITY_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # IPV6_UNICAST_IF + help + A Linux System call fuzz tester + + http://codemonkey.org.uk/projects/trinity/ + +comment "trinity needs a toolchain w/ headers >= 3.4" + depends on BR2_PACKAGE_TRINITY_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 diff --git a/buildroot/package/trinity/trinity.hash b/buildroot/package/trinity/trinity.hash new file mode 100644 index 0000000..2000653 --- /dev/null +++ b/buildroot/package/trinity/trinity.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 8cadc4221660b7accc4728311ce1a130ac9b9d1f3b04e35508ba0cc80d9c3f94 trinity-1.8.tar.xz +sha256 35e3fc68c89fd7b8f72fd910b521cb3292f859e9181f3c26bd0df84d144bc1d4 COPYING diff --git a/buildroot/package/trinity/trinity.mk b/buildroot/package/trinity/trinity.mk new file mode 100644 index 0000000..b75c469 --- /dev/null +++ b/buildroot/package/trinity/trinity.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# trinity +# +################################################################################ + +TRINITY_VERSION = 1.8 +TRINITY_SITE = http://codemonkey.org.uk/projects/trinity +TRINITY_SOURCE = trinity-$(TRINITY_VERSION).tar.xz +TRINITY_LICENSE = GPL-2.0 +TRINITY_LICENSE_FILES = COPYING + +define TRINITY_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure) +endef + +define TRINITY_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define TRINITY_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR)/usr install +endef + +# Install helper scripts +define TRINITY_INSTALL_HELPER_SCRIPTS + mkdir -p $(TARGET_DIR)/usr/libexec/trinity + cp -p $(@D)/scripts/* $(TARGET_DIR)/usr/libexec/trinity/ +endef +TRINITY_POST_INSTALL_TARGET_HOOKS += TRINITY_INSTALL_HELPER_SCRIPTS + +$(eval $(generic-package)) diff --git a/buildroot/package/trousers/0001-Remove-inline-for-read_data-and-write_data.patch b/buildroot/package/trousers/0001-Remove-inline-for-read_data-and-write_data.patch new file mode 100644 index 0000000..b0db70b --- /dev/null +++ b/buildroot/package/trousers/0001-Remove-inline-for-read_data-and-write_data.patch @@ -0,0 +1,94 @@ +From f03c7987c234a81f7e4274b26bab07318357a2a5 Mon Sep 17 00:00:00 2001 +From: Sergio Prado +Date: Fri, 25 Dec 2015 20:09:21 -0200 +Subject: [PATCH] Remove inline for read_data and write_data + +read_data and write_data functions are declared with inline, but +their definition is not in a .h file. This is causing errors when +linking: + +tcsps.c:(.text+0x4ac): undefined reference to `read_data' +tcsps.c:(.text+0x1888): undefined reference to `write_data' +... + +Partial backport of upstream commit +3297fcdf5ac0df868778e976b8b59e35542c1ee2. + +Signed-off-by: Sergio Prado +--- + src/include/tcsps.h | 5 ----- + src/tcs/ps/ps_utils.c | 8 -------- + src/tspi/ps/ps_utils.c | 4 ++-- + 3 files changed, 2 insertions(+), 15 deletions(-) + +diff --git a/src/include/tcsps.h b/src/include/tcsps.h +index 87542965877d..dcd5db469822 100644 +--- a/src/include/tcsps.h ++++ b/src/include/tcsps.h +@@ -23,13 +23,8 @@ int get_file(); + int put_file(int); + void close_file(int); + void ps_destroy(); +-#ifdef SOLARIS + TSS_RESULT read_data(int, void *, UINT32); + TSS_RESULT write_data(int, void *, UINT32); +-#else +-inline TSS_RESULT read_data(int, void *, UINT32); +-inline TSS_RESULT write_data(int, void *, UINT32); +-#endif + int write_key_init(int, UINT32, UINT32, UINT32); + TSS_RESULT cache_key(UINT32, UINT16, TSS_UUID *, TSS_UUID *, UINT16, UINT32, UINT32); + TSS_RESULT UnloadBlob_KEY_PS(UINT16 *, BYTE *, TSS_KEY *); +diff --git a/src/tcs/ps/ps_utils.c b/src/tcs/ps/ps_utils.c +index 2e7f502b9599..35ac89f8fc12 100644 +--- a/src/tcs/ps/ps_utils.c ++++ b/src/tcs/ps/ps_utils.c +@@ -42,11 +42,7 @@ + struct key_disk_cache *key_disk_cache_head = NULL; + + +-#ifdef SOLARIS + TSS_RESULT +-#else +-inline TSS_RESULT +-#endif + read_data(int fd, void *data, UINT32 size) + { + int rc; +@@ -64,11 +60,7 @@ read_data(int fd, void *data, UINT32 size) + } + + +-#ifdef SOLARIS + TSS_RESULT +-#else +-inline TSS_RESULT +-#endif + write_data(int fd, void *data, UINT32 size) + { + int rc; +diff --git a/src/tspi/ps/ps_utils.c b/src/tspi/ps/ps_utils.c +index aac40a147314..83259141d375 100644 +--- a/src/tspi/ps/ps_utils.c ++++ b/src/tspi/ps/ps_utils.c +@@ -22,7 +22,7 @@ + #include "tspps.h" + #include "tsplog.h" + +-inline TSS_RESULT ++TSS_RESULT + read_data(int fd, void *data, UINT32 size) + { + int rc; +@@ -39,7 +39,7 @@ read_data(int fd, void *data, UINT32 size) + return TSS_SUCCESS; + } + +-inline TSS_RESULT ++TSS_RESULT + write_data(int fd, void *data, UINT32 size) + { + int rc; +-- +1.9.1 + diff --git a/buildroot/package/trousers/0002-Check-if-the-compiler-understands-pie-and-relro-options.patch b/buildroot/package/trousers/0002-Check-if-the-compiler-understands-pie-and-relro-options.patch new file mode 100644 index 0000000..3275b76 --- /dev/null +++ b/buildroot/package/trousers/0002-Check-if-the-compiler-understands-pie-and-relro-options.patch @@ -0,0 +1,215 @@ +From 9abda1bb380bdbef1affaec381742ced394ca118 Mon Sep 17 00:00:00 2001 +From: Lada Trimasova +Date: Mon, 18 Jan 2016 15:58:19 +0300 +Subject: [PATCH] Check if the compiler understands pie and relro options + +-pie and -fpie enable the building of position-independent +executables, and -Wl,-z,relro turns on read-only relocation support in gcc. +Add checks to ensure that the compiler and linker understand these options. + +Signed-off-by: Lada Trimasova +--- + configure.in | 5 +++ + m4/ax_check_compile_flag.m4 | 72 ++++++++++++++++++++++++++++++++++++ + m4/ax_check_link_flag.m4 | 71 +++++++++++++++++++++++++++++++++++ + src/tcsd/Makefile.am | 4 +- + 4 files changed, 150 insertions(+), 2 deletions(-) + create mode 100644 m4/ax_check_compile_flag.m4 + create mode 100644 m4/ax_check_link_flag.m4 + +diff --git a/configure.in b/configure.in +index add23dc..9603353 100644 +--- a/configure.in ++++ b/configure.in +@@ -12,6 +12,7 @@ TSS_VER_MINOR=3 + # compute $target + AC_CANONICAL_TARGET + AM_INIT_AUTOMAKE([foreign 1.6]) ++AC_CONFIG_MACRO_DIR([m4]) + + # Debugging support + AC_ARG_ENABLE([debug], +@@ -383,6 +384,10 @@ elif test x"${prefix}" = x"NONE"; then + localstatedir="/usr/local/var" + fi + ++AX_CHECK_COMPILE_FLAG([-fPIE -DPIE], [PIE_CFLAGS="-fPIE -DPIE"]) ++AX_CHECK_LINK_FLAG([-pie], [PIE_LDFLAGS="$PIE_LDFLAGS -pie"]) ++AX_CHECK_LINK_FLAG([-Wl,-z,relro], [LDFLAGS="$LDFLAGS -Wl,-z,relro"]) ++ + AC_OUTPUT(dist/tcsd.conf \ + dist/fedora/trousers.spec \ + dist/trousers.spec \ +diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4 +new file mode 100644 +index 0000000..c3a8d69 +--- /dev/null ++++ b/m4/ax_check_compile_flag.m4 +@@ -0,0 +1,72 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) ++# ++# DESCRIPTION ++# ++# Check whether the given FLAG works with the current language's compiler ++# or gives an error. (Warnings, however, are ignored) ++# ++# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on ++# success/failure. ++# ++# If EXTRA-FLAGS is defined, it is added to the current language's default ++# flags (e.g. CFLAGS) when the check is done. The check is thus made with ++# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to ++# force the compiler to issue an error when a bad flag is given. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this ++# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# 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 3 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, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 2 ++ ++AC_DEFUN([AX_CHECK_COMPILE_FLAG], ++[AC_PREREQ(2.59)dnl for _AC_LANG_PREFIX ++AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl ++AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ ++ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS ++ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" ++ AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], ++ [AS_VAR_SET(CACHEVAR,[yes])], ++ [AS_VAR_SET(CACHEVAR,[no])]) ++ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) ++AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], ++ [m4_default([$2], :)], ++ [m4_default([$3], :)]) ++AS_VAR_POPDEF([CACHEVAR])dnl ++])dnl AX_CHECK_COMPILE_FLAGS +diff --git a/m4/ax_check_link_flag.m4 b/m4/ax_check_link_flag.m4 +new file mode 100644 +index 0000000..e2d0d36 +--- /dev/null ++++ b/m4/ax_check_link_flag.m4 +@@ -0,0 +1,71 @@ ++# =========================================================================== ++# http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS]) ++# ++# DESCRIPTION ++# ++# Check whether the given FLAG works with the linker or gives an error. ++# (Warnings, however, are ignored) ++# ++# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on ++# success/failure. ++# ++# If EXTRA-FLAGS is defined, it is added to the linker's default flags ++# when the check is done. The check is thus made with the flags: "LDFLAGS ++# EXTRA-FLAGS FLAG". This can for example be used to force the linker to ++# issue an error when a bad flag is given. ++# ++# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this ++# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG. ++# ++# LICENSE ++# ++# Copyright (c) 2008 Guido U. Draheim ++# Copyright (c) 2011 Maarten Bosmans ++# ++# 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 3 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, see . ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 2 ++ ++AC_DEFUN([AX_CHECK_LINK_FLAG], ++[AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl ++AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [ ++ ax_check_save_flags=$LDFLAGS ++ LDFLAGS="$LDFLAGS $4 $1" ++ AC_LINK_IFELSE([AC_LANG_PROGRAM()], ++ [AS_VAR_SET(CACHEVAR,[yes])], ++ [AS_VAR_SET(CACHEVAR,[no])]) ++ LDFLAGS=$ax_check_save_flags]) ++AS_IF([test x"AS_VAR_GET(CACHEVAR)" = xyes], ++ [m4_default([$2], :)], ++ [m4_default([$3], :)]) ++AS_VAR_POPDEF([CACHEVAR])dnl ++])dnl AX_CHECK_LINK_FLAGS +diff --git a/src/tcsd/Makefile.am b/src/tcsd/Makefile.am +index 2210734..6640ab2 100644 +--- a/src/tcsd/Makefile.am ++++ b/src/tcsd/Makefile.am +@@ -1,8 +1,8 @@ + sbin_PROGRAMS=tcsd + +-tcsd_CFLAGS=-DAPPID=\"TCSD\" -DVAR_PREFIX=\"@localstatedir@\" -DETC_PREFIX=\"@sysconfdir@\" -I${top_srcdir}/src/include -fPIE -DPIE ++tcsd_CFLAGS=-DAPPID=\"TCSD\" -DVAR_PREFIX=\"@localstatedir@\" -DETC_PREFIX=\"@sysconfdir@\" -I${top_srcdir}/src/include $(PIE_CFLAGS) + tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a ${top_builddir}/src/tddl/libtddl.a -lpthread @CRYPTOLIB@ +-tcsd_LDFLAGS=-pie -Wl,-z,relro -Wl,-z,now ++tcsd_LDFLAGS=$(PIE_LDFLAGS) $(RELRO_LDFLAGS) + + tcsd_SOURCES=svrside.c tcsd_conf.c tcsd_threads.c platform.c + +-- +2.5.0 + diff --git a/buildroot/package/trousers/0003-tsp_tcsi_param-include-limits.h-to-fix-musl-build.patch b/buildroot/package/trousers/0003-tsp_tcsi_param-include-limits.h-to-fix-musl-build.patch new file mode 100644 index 0000000..f88e47a --- /dev/null +++ b/buildroot/package/trousers/0003-tsp_tcsi_param-include-limits.h-to-fix-musl-build.patch @@ -0,0 +1,29 @@ +From 66bbe0a87818a1e3c721780dc33b2d81fdf4a774 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 21 Aug 2016 23:32:10 +0200 +Subject: [PATCH] tsp_tcsi_param: include limits.h to fix musl build + +The musl libc doesn't provide , use +instead. + +Signed-off-by: Romain Naour +--- + src/tspi/tsp_tcsi_param.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/tspi/tsp_tcsi_param.c b/src/tspi/tsp_tcsi_param.c +index 670f86f..8f2b4e4 100644 +--- a/src/tspi/tsp_tcsi_param.c ++++ b/src/tspi/tsp_tcsi_param.c +@@ -11,7 +11,7 @@ + #include + #include + #include +-#include ++#include + #include "trousers/tss.h" + #include "trousers/trousers.h" + #include "trousers_types.h" +-- +2.5.5 + diff --git a/buildroot/package/trousers/0004-Check-that-getpwent_r-is-available-before-using-it.patch b/buildroot/package/trousers/0004-Check-that-getpwent_r-is-available-before-using-it.patch new file mode 100644 index 0000000..7014ad7 --- /dev/null +++ b/buildroot/package/trousers/0004-Check-that-getpwent_r-is-available-before-using-it.patch @@ -0,0 +1,80 @@ +From 9e42c405f30d2b52d019598436ea346ef8586f43 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?No=C3=A9=20Rubinstein?= +Date: Wed, 24 Aug 2016 18:55:25 +0200 +Subject: [PATCH] Check that getpwent_r is available before using it + +This fixes building trousers with musl + +Signed-off-by: Noé Rubinstein +--- + configure.in | 4 ++++ + src/tspi/ps/tspps.c | 10 +++++----- + 2 files changed, 9 insertions(+), 5 deletions(-) + +diff --git a/configure.in b/configure.in +index fd3f5f1..e3d7acf 100644 +--- a/configure.in ++++ b/configure.in +@@ -145,6 +145,10 @@ else + AC_MSG_ERROR(["gtk", "openssl" and "none" are the only supported gui options for trousers]) + fi + ++# Look for getpwent_r. If it is not found, getpwent will be used instead, with ++# an additional mutex. ++AC_CHECK_FUNC(getpwent_r, [AC_DEFINE(HAVE_GETPWENT_R)]) ++ + # + # The default port that the TCS daemon listens on + # +diff --git a/src/tspi/ps/tspps.c b/src/tspi/ps/tspps.c +index c6f9c3d..9d00d2a 100644 +--- a/src/tspi/ps/tspps.c ++++ b/src/tspi/ps/tspps.c +@@ -45,7 +45,7 @@ + + static int user_ps_fd = -1; + static MUTEX_DECLARE_INIT(user_ps_lock); +-#if (defined (__FreeBSD__) || defined (__OpenBSD__)) ++#ifndef HAVE_GETPWENT_R + static MUTEX_DECLARE_INIT(user_ps_path); + #endif + static struct flock fl; +@@ -60,7 +60,7 @@ get_user_ps_path(char **file) + TSS_RESULT result; + char *file_name = NULL, *home_dir = NULL; + struct passwd *pwp; +-#if (defined (__linux) || defined (linux) || defined(__GLIBC__)) ++#ifdef HAVE_GETPWENT_R + struct passwd pw; + #endif + struct stat stat_buf; +@@ -72,7 +72,7 @@ get_user_ps_path(char **file) + *file = strdup(file_name); + return (*file) ? TSS_SUCCESS : TSPERR(TSS_E_OUTOFMEMORY); + } +-#if (defined (__FreeBSD__) || defined (__OpenBSD__)) ++#ifndef HAVE_GETPWENT_R + MUTEX_LOCK(user_ps_path); + #endif + +@@ -90,7 +90,7 @@ get_user_ps_path(char **file) + #else + setpwent(); + while (1) { +-#if (defined (__linux) || defined (linux) || defined(__GLIBC__)) ++#ifdef HAVE_GETPWENT_R + rc = getpwent_r(&pw, buf, PASSWD_BUFSIZE, &pwp); + if (rc) { + LogDebugFn("USER PS: Error getting path to home directory: getpwent_r: %s", +@@ -99,7 +99,7 @@ get_user_ps_path(char **file) + return TSPERR(TSS_E_INTERNAL_ERROR); + } + +-#elif (defined (__FreeBSD__) || defined (__OpenBSD__)) ++#else + if ((pwp = getpwent()) == NULL) { + LogDebugFn("USER PS: Error getting path to home directory: getpwent: %s", + strerror(rc)); +-- +2.1.4 + diff --git a/buildroot/package/trousers/Config.in b/buildroot/package/trousers/Config.in new file mode 100644 index 0000000..7a14706 --- /dev/null +++ b/buildroot/package/trousers/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_TROUSERS + bool "trousers" + depends on BR2_TOOLCHAIN_HAS_THREADS + # doesn't build properly in static only configurations + depends on !BR2_STATIC_LIBS + # ARC toolchain issue + depends on !BR2_arc + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + The open-source TCG Software Stack (TSS). + + This library enables the use of a Trusted Platform Module + that complies with the TPM specification, version 1.2. It + implements the TSS specification, version 1.2. + + http://trousers.sourceforge.net/ + +comment "trousers needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS + depends on !BR2_arc diff --git a/buildroot/package/trousers/trousers.hash b/buildroot/package/trousers/trousers.hash new file mode 100644 index 0000000..997cfa9 --- /dev/null +++ b/buildroot/package/trousers/trousers.hash @@ -0,0 +1,3 @@ +# http://sourceforge.net/projects/trousers/files/trousers/0.3.13/ +sha1 d23f1a3df4febffc4174f5cca7d1c54230477bb2 trousers-0.3.13.tar.gz +md5 ad508f97b406f6e48cd90e85d78e7ca8 trousers-0.3.13.tar.gz diff --git a/buildroot/package/trousers/trousers.mk b/buildroot/package/trousers/trousers.mk new file mode 100644 index 0000000..e49c2ac --- /dev/null +++ b/buildroot/package/trousers/trousers.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# trousers +# +################################################################################ + +TROUSERS_VERSION = 0.3.13 +TROUSERS_SITE = http://downloads.sourceforge.net/project/trousers/trousers/$(TROUSERS_VERSION) +TROUSERS_LICENSE = BSD-3-Clause +TROUSERS_LICENSE_FILES = LICENSE +TROUSERS_INSTALL_STAGING = YES +# Need autoreconf because of a patch touching configure.in and Makefile.am +TROUSERS_AUTORECONF = YES +TROUSERS_DEPENDENCIES = host-pkgconf openssl + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +TROUSERS_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_arc770d)$(BR2_arc750d),y) +TROUSERS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mno-compact-casesi" +endif + +# The TrouSerS build system attempts to create the tss user and group +# on the host system. Disable the user checking feature as a +# workaround. +TROUSERS_CONF_OPTS += --disable-usercheck + +ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) +TROUSERS_CONF_ENV += \ + ax_cv_check_cflags___fPIE__DPIE=no \ + ax_cv_check_ldflags___pie=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/ts4900-fpga/Config.in b/buildroot/package/ts4900-fpga/Config.in new file mode 100644 index 0000000..7aa94e2 --- /dev/null +++ b/buildroot/package/ts4900-fpga/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_TS4900_FPGA + bool "ts4900-fpga" + depends on BR2_arm + help + TS-4900's FPGA implements clocks, UART MUX, and GPIOs. One + of these GPIOs is used to enable the wifi module. + + It is loaded by U-Boot during the boot sequence, the default + U-boot script expects to find it in the /boot folder. + + http://wiki.embeddedarm.com/wiki/TS-4900#FPGA_Changelog diff --git a/buildroot/package/ts4900-fpga/ts4900-fpga.hash b/buildroot/package/ts4900-fpga/ts4900-fpga.hash new file mode 100644 index 0000000..2147aeb --- /dev/null +++ b/buildroot/package/ts4900-fpga/ts4900-fpga.hash @@ -0,0 +1,5 @@ +# From ftp://ftp.embeddedarm.com/ts-socket-macrocontrollers/ts-4900-linux/fpga/ts4900-fpga-20150930.bin.md5 +md5 bf93c03ef914cf008287c8cd60781cc8 ts4900-fpga-20150930.bin + +# Locally calculated +sha256 242ac6a90bea9a95c937ea8952cdc9b02f543cea24a0359bed66a408a6dd8bf9 ts4900-fpga-20150930.bin diff --git a/buildroot/package/ts4900-fpga/ts4900-fpga.mk b/buildroot/package/ts4900-fpga/ts4900-fpga.mk new file mode 100644 index 0000000..ed951b8 --- /dev/null +++ b/buildroot/package/ts4900-fpga/ts4900-fpga.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ts4900-fpga +# +################################################################################ + +TS4900_FPGA_VERSION = 20150930 +TS4900_FPGA_SOURCE = ts4900-fpga-$(TS4900_FPGA_VERSION).bin +TS4900_FPGA_SITE = ftp://ftp.embeddedarm.com/ts-socket-macrocontrollers/ts-4900-linux/fpga +# No license file provided, Yocto recipe from the vendor claims MIT. +# https://github.com/embeddedarm/meta-ts/blob/f31860f1204b64f765a5380d3b93a2cf18234f90/recipes-extras/ts4900-fpga/ts4900-fpga.bb#L6 + +define TS4900_FPGA_EXTRACT_CMDS + cp $(DL_DIR)/$(TS4900_FPGA_SOURCE) $(@D) +endef + +define TS4900_FPGA_INSTALL_TARGET_CMDS + $(INSTALL) -m 0644 -D $(@D)/$(TS4900_FPGA_SOURCE) $(TARGET_DIR)/boot/ts4900-fpga.bin +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/tslib/Config.in b/buildroot/package/tslib/Config.in new file mode 100644 index 0000000..a2e1e7f --- /dev/null +++ b/buildroot/package/tslib/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_TSLIB + bool "tslib" + help + Tslib is a filtering layer for touchscreen panel events. + + http://tslib.org diff --git a/buildroot/package/tslib/tslib.hash b/buildroot/package/tslib/tslib.hash new file mode 100644 index 0000000..f0c6ff8 --- /dev/null +++ b/buildroot/package/tslib/tslib.hash @@ -0,0 +1,5 @@ +# https://github.com/kergoth/tslib/releases/download/1.15/tslib-1.15.tar.xz.sha256 +sha256 7ce48807cab655076d71a1ceef3ed0ab8a25df98074981d4a8fd1477ee5f710c tslib-1.15.tar.xz + +# Locally computed +sha256 9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9 COPYING diff --git a/buildroot/package/tslib/tslib.mk b/buildroot/package/tslib/tslib.mk new file mode 100644 index 0000000..3ba94d2 --- /dev/null +++ b/buildroot/package/tslib/tslib.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# tslib +# +################################################################################ + +TSLIB_VERSION = 1.15 +TSLIB_SITE = https://github.com/kergoth/tslib/releases/download/$(TSLIB_VERSION) +TSLIB_SOURCE = tslib-$(TSLIB_VERSION).tar.xz +TSLIB_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) +TSLIB_LICENSE_FILES = COPYING + +TSLIB_INSTALL_STAGING = YES +TSLIB_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LDFLAGS=-L$(STAGING_DIR)/usr/lib install + +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6),) +TSLIB_CONF_OPTS += --disable-tools +endif + +ifeq ($(BR2_STATIC_LIBS),y) +TSLIB_CONF_OPTS += \ + --enable-input=static \ + --enable-linear=static \ + --enable-median=static \ + --enable-pthres=static \ + --enable-iir=static \ + --enable-dejitter=static \ + --enable-debounce=static \ + --enable-skip=static \ + --enable-lowpass=static \ + --enable-invert=static +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/tstools/0001-build-get-along-with-buildroot.patch b/buildroot/package/tstools/0001-build-get-along-with-buildroot.patch new file mode 100644 index 0000000..1e7a748 --- /dev/null +++ b/buildroot/package/tstools/0001-build-get-along-with-buildroot.patch @@ -0,0 +1,40 @@ +From 44f80bce0914d4d9c5e7486c7cdb521ba637b324 Mon Sep 17 00:00:00 2001 +From: Tzu-Jung Lee +Date: Fri, 19 Jul 2013 22:45:18 +0800 +Subject: [PATCH] build: get along with buildroot + +Signed-off-by: Tzu-Jung Lee +--- + Makefile | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/Makefile b/Makefile +index 2c3568e..98bb994 100644 +--- a/Makefile ++++ b/Makefile +@@ -34,12 +34,6 @@ SHELL = /bin/sh + .SUFFIXES: + .SUFFIXES: .c .o + +-ifdef CROSS_COMPILE +-CC = $(CROSS_COMPILE)gcc +-else +-CC = gcc +-endif +- + # Use WARN=1 periodically to get too many warnings... + ifdef WARN + WARNING_FLAGS = -Wall -W -Wfloat-equal -Wundef -Wshadow -Wpointer-arith -Wcast-qual -Wconversion -Wmissing-prototypes -Wmissing-declarations -Wunreachable-code -Winline +@@ -452,3 +446,9 @@ test_lists: $(BINDIR)/test_nal_unit_list $(BINDIR)/test_es_unit_list + @echo +++ Testing ES unit lists + $(BINDIR)/test_es_unit_list + @echo +++ Test succeeded ++ ++.PHONY: install ++install: ++ @for i in $(PROGS); do \ ++ cp -f $$i $(DESTDIR)/usr/bin/; \ ++ done +-- +1.8.3.2 + diff --git a/buildroot/package/tstools/Config.in b/buildroot/package/tstools/Config.in new file mode 100644 index 0000000..0c55bde --- /dev/null +++ b/buildroot/package/tstools/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_TSTOOLS + bool "tstools" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + help + This is a set of cross-platform command line tools for + working with MPEG data. + + The emphasis is on relatively simple tools which concentrate + on MPEG (H.264 and H.262) data packaged according to H.222 + (i.e., TS or PS), with a particular interest in checking for + conformance. + + Transport Stream (TS) is typically used for distribution of + cable and satellite data. Program Stream (PS) is typically + used to store data on DVDs. + + https://github.com/kynesim/tstools/ + +comment "tstools needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/tstools/tstools.hash b/buildroot/package/tstools/tstools.hash new file mode 100644 index 0000000..9b0f1c7 --- /dev/null +++ b/buildroot/package/tstools/tstools.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3d2b2375e2874933f9aa59d4f25bb6b334747219eb0d7a076974e61222d59bf6 tstools-08f6be304040e7b84760ac3920bcff4a563b6cd2.tar.gz diff --git a/buildroot/package/tstools/tstools.mk b/buildroot/package/tstools/tstools.mk new file mode 100644 index 0000000..99f7ca9 --- /dev/null +++ b/buildroot/package/tstools/tstools.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# tstools +# +################################################################################ + +# No releases or tags yet. Use the latest commit ID from master branch. +TSTOOLS_VERSION = 08f6be304040e7b84760ac3920bcff4a563b6cd2 +TSTOOLS_SITE = $(call github,kynesim,tstools,$(TSTOOLS_VERSION)) +# tstools upstream doesn't contain any license file so far. See: +# https://github.com/kynesim/tstools/issues/32 +TSTOOLS_LICENSE = MPL-1.1 +TSTOOLS_LICENSE_FILES = + +define TSTOOLS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) LD="$(TARGET_CC)" $(TARGET_MAKE_ENV) \ + $(MAKE1) -C $(@D) +endef + +define TSTOOLS_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/tunctl/Config.in b/buildroot/package/tunctl/Config.in new file mode 100644 index 0000000..26eed4c --- /dev/null +++ b/buildroot/package/tunctl/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_TUNCTL + bool "tunctl" + help + Tunctl is a tool for controlling the TUN/TAP driver in Linux. + + https://sourceforge.net/projects/tunctl/ diff --git a/buildroot/package/tunctl/tunctl.hash b/buildroot/package/tunctl/tunctl.hash new file mode 100644 index 0000000..d3aaeec --- /dev/null +++ b/buildroot/package/tunctl/tunctl.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 aa2a6c4cc6bfacb11e0d9f62334a6638a0d435475c61230116f00b6af8b14fff tunctl-1.5.tar.gz diff --git a/buildroot/package/tunctl/tunctl.mk b/buildroot/package/tunctl/tunctl.mk new file mode 100644 index 0000000..0d7b88d --- /dev/null +++ b/buildroot/package/tunctl/tunctl.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# tunctl +# +################################################################################ + +TUNCTL_VERSION = 1.5 +TUNCTL_SITE = http://downloads.sourceforge.net/project/tunctl/tunctl/$(TUNCTL_VERSION) + +TUNCTL_LICENSE = GPL-2.0 +TUNCTL_LICENSE_FILES = tunctl.c + +define TUNCTL_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) tunctl +endef + +define TUNCTL_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/tunctl $(TARGET_DIR)/usr/sbin/tunctl +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/turbolua/Config.in b/buildroot/package/turbolua/Config.in new file mode 100644 index 0000000..34f66ef --- /dev/null +++ b/buildroot/package/turbolua/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_TURBOLUA + bool "turbolua" + depends on BR2_PACKAGE_LUAJIT + help + Turbo.lua is a framework built for LuaJIT 2 to simplify the + task of building fast and scalable network applications. It + uses a event-driven, non-blocking, no thread design to deliver + excellent performance and minimal footprint to high-load + applications while also providing excellent support for + embedded uses. The toolkit can be used for HTTP REST API’s, + traditional dynamic web pages through templating, open + connections like WebSockets, or just as high level building + blocks for native speed network applications. + + http://www.turbolua.org + +comment "turbolua needs LuaJIT" + depends on !BR2_PACKAGE_LUAJIT diff --git a/buildroot/package/turbolua/turbolua.hash b/buildroot/package/turbolua/turbolua.hash new file mode 100644 index 0000000..c2a6044 --- /dev/null +++ b/buildroot/package/turbolua/turbolua.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a2c30534706fb475545b17a017c63479e93e5e9bf1f5ed88c0db22bb4ea7b4b1 turbolua-v2.1.2.tar.gz diff --git a/buildroot/package/turbolua/turbolua.mk b/buildroot/package/turbolua/turbolua.mk new file mode 100644 index 0000000..49a5559 --- /dev/null +++ b/buildroot/package/turbolua/turbolua.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# turbolua +# +################################################################################ + +TURBOLUA_VERSION = v2.1.2 +TURBOLUA_SITE = $(call github,kernelsauce,turbo,$(TURBOLUA_VERSION)) +TURBOLUA_DEPENDENCIES = luajit +TURBOLUA_LICENSE = Apache-2.0 +TURBOLUA_LICENSE_FILES = LICENSE + +TURBOLUA_MAKE_OPTS = \ + $(TARGET_CONFIGURE_OPTS) \ + LUAJIT_VERSION="$(LUAJIT_VERSION)" + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +TURBOLUA_MAKE_OPTS += SSL=openssl +TURBOLUA_DEPENDENCIES += openssl +else +TURBOLUA_MAKE_OPTS += SSL=none +endif + +define TURBOLUA_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TURBOLUA_MAKE_OPTS) -C $(@D) all +endef + +define TURBOLUA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TURBOLUA_MAKE_OPTS) LDCONFIG=true \ + PREFIX="$(TARGET_DIR)/usr" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/tvheadend/0001-no-check_config.patch b/buildroot/package/tvheadend/0001-no-check_config.patch new file mode 100644 index 0000000..361ebcd --- /dev/null +++ b/buildroot/package/tvheadend/0001-no-check_config.patch @@ -0,0 +1,23 @@ +Makefile: do not use check_config + +test(1) only uses the second to compare two files dates. +test(1) also does a strict comparison wrt. dates. + +But, on very fast systems, the configure and .config.mk +files may be created in the same second, and so would lead +to a false comparison of the files' dates. + +Signed-off-by: "Yann E. MORIN" + +diff -durN tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3.orig/Makefile tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3/Makefile +--- tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3.orig/Makefile 2014-03-09 14:47:43.780025330 +0100 ++++ tvheadend-c84bc2b72b462ef2dbed305f3fd0bb3fa5046fc3/Makefile 2014-03-09 14:48:40.836539093 +0100 +@@ -566,7 +566,7 @@ + $(ROOTDIR)/configure $(CONFIGURE_ARGS) + + # Binary +-${PROG}: .config.mk make_webui $(OBJS) ++${PROG}: make_webui $(OBJS) + $(pCC) -o $@ $(OBJS) $(CFLAGS) $(LDFLAGS) + + # Object diff --git a/buildroot/package/tvheadend/0002-sbuf-fix-uclibc-compilation-error.patch b/buildroot/package/tvheadend/0002-sbuf-fix-uclibc-compilation-error.patch new file mode 100644 index 0000000..deed9f9 --- /dev/null +++ b/buildroot/package/tvheadend/0002-sbuf-fix-uclibc-compilation-error.patch @@ -0,0 +1,33 @@ +From b16ad4d258409fbd6acf843d62a7a84f621e3b70 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Mon, 18 Dec 2017 20:52:06 +0100 +Subject: [PATCH] sbuf: fix uclibc compilation error + +Fixes build error + +tvheadend-e06ffd87beff16103c47d6fa542df2374fca6fd3/src/sbuf.h:77:1: + error: unknown type name 'ssize_t'; did you mean 'size_t'? + ssize_t sbuf_read(sbuf_t *sb, int fd); + +Patch sent upstream: https://github.com/tvheadend/tvheadend/pull/1062 + +Signed-off-by: Bernd Kuhls +--- + src/sbuf.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/sbuf.h b/src/sbuf.h +index 78aa546b3..d5aa53042 100644 +--- a/src/sbuf.h ++++ b/src/sbuf.h +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + /** + * Simple dynamically growing buffer +-- +2.11.0 + diff --git a/buildroot/package/tvheadend/Config.in b/buildroot/package/tvheadend/Config.in new file mode 100644 index 0000000..de37b61 --- /dev/null +++ b/buildroot/package/tvheadend/Config.in @@ -0,0 +1,45 @@ +comment "tvheadend needs a toolchain w/ NPTL, headers >= 3.2, dynamic library" + depends on !BR2_microblazeel + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 || BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + +config BR2_PACKAGE_TVHEADEND + bool "tvheadend" + depends on !BR2_microblazeel # assertion failure in binutils + depends on !BR2_STATIC_LIBS # dladdr() + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_DTV_SCAN_TABLES + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + select BR2_PACKAGE_OPENSSL + help + + Tvheadend is a TV streaming server for Linux supporting + DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, and Analog video + (V4L) as input sources. + + https://www.lonelycoder.com/redmine/projects/tvheadend/ + + Note: + - on first run, tvheadend will start in wizard mode; the + webUI is available on port 9981. + - if you want Avahi support, you'll need to enable: + Avahi, D-Bus, libdaemon + +if BR2_PACKAGE_TVHEADEND + +config BR2_PACKAGE_TVHEADEND_TRANSCODING + bool "transcoding support" + depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_FFMPEG_AVRESAMPLE + select BR2_PACKAGE_FFMPEG_GPL # needed for x264 support + select BR2_PACKAGE_FFMPEG_SWSCALE + select BR2_PACKAGE_LIBVPX if !BR2_bfin # libvpx + select BR2_PACKAGE_X264 + help + Enable transcoding support. + +endif diff --git a/buildroot/package/tvheadend/S99tvheadend b/buildroot/package/tvheadend/S99tvheadend new file mode 100644 index 0000000..65669ce --- /dev/null +++ b/buildroot/package/tvheadend/S99tvheadend @@ -0,0 +1,59 @@ +#! /bin/sh +# tvheadend startup script inspired by the Debian one in the package + +# Author: Yann E. MORIN + +PATH=/usr/sbin:/usr/bin:/sbin:/bin +NAME=tvheadend +DAEMON=/usr/bin/$NAME +PIDFILE=/var/run/$NAME.pid + +[ -f "${DAEMON}" -a -x "${DAEMON}" ] || exit 0 + +# Read configuration variable file if it is present +[ -r "/etc/default/${NAME}" ] && . "/etc/default/${NAME}" + +ARGS="-f" +[ -z "${TVH_USER}" ] || ARGS="${ARGS} -u ${TVH_USER}" +[ -z "${TVH_GROUP}" ] || ARGS="${ARGS} -g ${TVH_GROUP}" +[ -z "${TVH_ADAPTERS}" ] || ARGS="${ARGS} -a ${TVH_ADAPTERS}" +[ -z "${TVH_HTTP_PORT}" ] || ARGS="${ARGS} -w ${TVH_HTTP_PORT}" +[ -z "${TVH_HTSP_PORT}" ] || ARGS="${ARGS} -e ${TVH_HTSP_PORT}" +[ "${TVH_DEBUG}" = "1" ] && ARGS="${ARGS} -s" + +# If first run, start in wizard mode +if [ -z "$(ls -1 /home/tvheadend/.hts/tvheadend/accesscontrol/ 2>/dev/null)" ]; then + ARGS="${ARGS} -C" +fi + +case "$1" in + start) + printf "Starting TVHeadend daemon: " + if start-stop-daemon -S -q -p ${PIDFILE} -m --exec "${DAEMON}" -- ${ARGS}; then + printf "OK\n" + else + printf "failed\n" + fi + ;; + stop) + printf "Stopping TVHeadend daemon: " + start-stop-daemon -K -q -p ${PIDFILE} -s TERM + sleep 2 + if start-stop-daemon -K -q -p ${PIDFILE} -t; then + printf "failed, killing: " + start-stop-daemon -K -q -p ${PIDFILE} -s KILL -o + fi + printf "OK\n" + ;; + restart|force-reload) + "${0}" stop + sleep 2 + "${0}" start + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +: diff --git a/buildroot/package/tvheadend/etc.default.tvheadend b/buildroot/package/tvheadend/etc.default.tvheadend new file mode 100644 index 0000000..253f832 --- /dev/null +++ b/buildroot/package/tvheadend/etc.default.tvheadend @@ -0,0 +1,6 @@ +TVH_USER=tvheadend +TVH_GROUP=tvheadend +#TVH_ADAPTERS= +#TVH_HTTP_PORT=9981 +#TVH_HTSP_PORT=9982 +#TVH_DEBUG=1 diff --git a/buildroot/package/tvheadend/tvheadend.hash b/buildroot/package/tvheadend/tvheadend.hash new file mode 100644 index 0000000..4e890a8 --- /dev/null +++ b/buildroot/package/tvheadend/tvheadend.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 32f96937a3ffa72b5bdbfde9a5f9f9535f88e94e44864d4c8c6a152985c16569 tvheadend-e06ffd87beff16103c47d6fa542df2374fca6fd3.tar.gz +sha256 54dc3cbc00bf126bcba43e2af7f3ad1dc00f335985da1409fa943c7b7256d942 LICENSE.md diff --git a/buildroot/package/tvheadend/tvheadend.mk b/buildroot/package/tvheadend/tvheadend.mk new file mode 100644 index 0000000..45ea7bf --- /dev/null +++ b/buildroot/package/tvheadend/tvheadend.mk @@ -0,0 +1,170 @@ +################################################################################ +# +# tvheadend +# +################################################################################ + +TVHEADEND_VERSION = e06ffd87beff16103c47d6fa542df2374fca6fd3 +TVHEADEND_SITE = $(call github,tvheadend,tvheadend,$(TVHEADEND_VERSION)) +TVHEADEND_LICENSE = GPL-3.0+ +TVHEADEND_LICENSE_FILES = LICENSE.md +TVHEADEND_DEPENDENCIES = \ + host-gettext \ + host-pkgconf \ + host-pngquant \ + $(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python) \ + openssl + +ifeq ($(BR2_PACKAGE_AVAHI),y) +TVHEADEND_DEPENDENCIES += avahi +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +TVHEADEND_DEPENDENCIES += dbus +TVHEADEND_CONF_OPTS += --enable-dbus-1 +else +TVHEADEND_CONF_OPTS += --disable-dbus-1 +endif + +ifeq ($(BR2_PACKAGE_TVHEADEND_TRANSCODING),y) +TVHEADEND_CONF_OPTS += --enable-libav --enable-libx264 +TVHEADEND_DEPENDENCIES += ffmpeg x264 +ifeq ($(BR2_PACKAGE_LIBVA)$(BR2_PACKAGE_XORG7),yy) +TVHEADEND_CONF_OPTS += --enable-vaapi +TVHEADEND_DEPENDENCIES += libva +else +TVHEADEND_CONF_OPTS += --disable-vaapi +endif +ifeq ($(BR2_PACKAGE_OPUS),y) +TVHEADEND_CONF_OPTS += --enable-libopus +TVHEADEND_DEPENDENCIES += opus +else +TVHEADEND_CONF_OPTS += --disable-libopus +endif +ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) +TVHEADEND_CONF_OPTS += --enable-omx +TVHEADEND_DEPENDENCIES += rpi-userland +else +TVHEADEND_CONF_OPTS += --disable-omx +endif +ifeq ($(BR2_PACKAGE_X265),y) +TVHEADEND_CONF_OPTS += --enable-libx265 +TVHEADEND_DEPENDENCIES += x265 +else +TVHEADEND_CONF_OPTS += --disable-libx265 +endif +else +TVHEADEND_CONF_OPTS += \ + --disable-libav \ + --disable-libopus \ + --disable-omx \ + --disable-vaapi \ + --disable-libx264 \ + --disable-libx265 +endif + +ifeq ($(BR2_PACKAGE_LIBDVBCSA),y) +TVHEADEND_DEPENDENCIES += libdvbcsa +TVHEADEND_CONF_OPTS += --enable-dvbcsa +else +TVHEADEND_CONF_OPTS += --disable-dvbcsa +endif + +ifeq ($(BR2_PACKAGE_LIBHDHOMERUN),y) +TVHEADEND_DEPENDENCIES += libhdhomerun +TVHEADEND_CONF_OPTS += --enable-hdhomerun_client +else +TVHEADEND_CONF_OPTS += --disable-hdhomerun_client +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +TVHEADEND_DEPENDENCIES += libiconv +endif + +TVHEADEND_CFLAGS = $(TARGET_CFLAGS) +ifeq ($(BR2_PACKAGE_LIBURIPARSER),y) +TVHEADEND_DEPENDENCIES += liburiparser +TVHEADEND_CFLAGS += $(if $(BR2_USE_WCHAR),,-DURI_NO_UNICODE) +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +TVHEADEND_DEPENDENCIES += pcre +TVHEADEND_CONF_OPTS += --enable-pcre +else +TVHEADEND_CONF_OPTS += --disable-pcre +endif + +TVHEADEND_DEPENDENCIES += dtv-scan-tables + +# The tvheadend build system expects the transponder data to be present inside +# its source tree. To prevent a download initiated by the build system just +# copy the data files in the right place and add the corresponding stamp file. +define TVHEADEND_INSTALL_DTV_SCAN_TABLES + $(INSTALL) -d $(@D)/data/dvb-scan + cp -r $(TARGET_DIR)/usr/share/dvb/* $(@D)/data/dvb-scan/ + touch $(@D)/data/dvb-scan/.stamp +endef +TVHEADEND_PRE_CONFIGURE_HOOKS += TVHEADEND_INSTALL_DTV_SCAN_TABLES + +define TVHEADEND_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + CFLAGS="$(TVHEADEND_CFLAGS)" \ + ./configure \ + --prefix=/usr \ + --arch="$(ARCH)" \ + --cpu="$(BR2_GCC_TARGET_CPU)" \ + --nowerror \ + --python="$(HOST_DIR)/bin/python" \ + --enable-dvbscan \ + --enable-bundle \ + --enable-pngquant \ + --disable-ffmpeg_static \ + --disable-hdhomerun_static \ + $(TVHEADEND_CONF_OPTS) \ + ) +endef + +define TVHEADEND_FIX_PNGQUANT_PATH + $(SED) "s%^pngquant_bin =.*%pngquant_bin = '$(HOST_DIR)/bin/pngquant'%" \ + $(@D)/support/mkbundle +endef +TVHEADEND_POST_CONFIGURE_HOOKS += TVHEADEND_FIX_PNGQUANT_PATH + +define TVHEADEND_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define TVHEADEND_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +# Remove documentation and source files that are not needed because we +# use the bundled web interface version. +define TVHEADEND_CLEAN_SHARE + rm -rf $(TARGET_DIR)/usr/share/tvheadend/docs + rm -rf $(TARGET_DIR)/usr/share/tvheadend/src +endef + +TVHEADEND_POST_INSTALL_TARGET_HOOKS += TVHEADEND_CLEAN_SHARE + +#---------------------------------------------------------------------------- +# To run tvheadend, we need: +# - a startup script, and its config file +# - a non-root user to run as, and a home for it that is not accessible +# to the other users (because there will be crendentials in there) + +define TVHEADEND_INSTALL_INIT_SYSV + $(INSTALL) -D package/tvheadend/etc.default.tvheadend $(TARGET_DIR)/etc/default/tvheadend + $(INSTALL) -D package/tvheadend/S99tvheadend $(TARGET_DIR)/etc/init.d/S99tvheadend +endef + +define TVHEADEND_USERS + tvheadend -1 tvheadend -1 * /home/tvheadend - video TVHeadend daemon +endef +define TVHEADEND_PERMISSIONS + /home/tvheadend r 0700 tvheadend tvheadend - - - - - +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/twolame/Config.in b/buildroot/package/twolame/Config.in new file mode 100644 index 0000000..95b148b --- /dev/null +++ b/buildroot/package/twolame/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_TWOLAME + bool "twolame" + select BR2_PACKAGE_LIBSNDFILE + help + TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder + based on tooLAME by Mike Cheng, which in turn is based upon + the ISO dist10 code and portions of LAME. + + http://www.twolame.org/ diff --git a/buildroot/package/twolame/twolame.hash b/buildroot/package/twolame/twolame.hash new file mode 100644 index 0000000..647655b --- /dev/null +++ b/buildroot/package/twolame/twolame.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 98f332f48951f47f23f70fd0379463aff7d7fb26f07e1e24e42ddef22cc6112a twolame-0.3.13.tar.gz diff --git a/buildroot/package/twolame/twolame.mk b/buildroot/package/twolame/twolame.mk new file mode 100644 index 0000000..d5628d1 --- /dev/null +++ b/buildroot/package/twolame/twolame.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# twolame +# +################################################################################ + +TWOLAME_VERSION = 0.3.13 +TWOLAME_SITE = http://downloads.sourceforge.net/project/twolame/twolame/$(TWOLAME_VERSION) +TWOLAME_DEPENDENCIES = host-pkgconf libsndfile +TWOLAME_INSTALL_STAGING = YES +TWOLAME_LICENSE = LGPL-2.1+ +TWOLAME_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/tz/Config.in b/buildroot/package/tz/Config.in new file mode 100644 index 0000000..943dc5c --- /dev/null +++ b/buildroot/package/tz/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_TZ + bool + help + Timezone info for uClibc. diff --git a/buildroot/package/tz/tz.mk b/buildroot/package/tz/tz.mk new file mode 100644 index 0000000..1e79704 --- /dev/null +++ b/buildroot/package/tz/tz.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# tz +# +################################################################################ + +TZ_DEPENDENCIES = host-tzdata host-tzdump +TZ_LICENSE = Public domain + +TZ_LOCALTIME = $(call qstrip,$(BR2_TARGET_LOCALTIME)) + +define TZ_BUILD_CMDS + (cd $(HOST_DIR)/share/zoneinfo/posix/; \ + for i in $$(find . -type f); do \ + mkdir -p $(@D)/output/$$(dirname $$i); \ + $(TZDUMP) -p . -q $${i#./} | sed '1d' > $(@D)/output/$$i; \ + done \ + ) +endef + +define TZ_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(HOST_DIR)/share/zoneinfo/zone.tab \ + $(TARGET_DIR)/usr/share/zoneinfo/zone.tab + $(INSTALL) -D -m 0644 $(HOST_DIR)/share/zoneinfo/iso3166.tab \ + $(TARGET_DIR)/usr/share/zoneinfo/iso3166.tab + mkdir -p $(TARGET_DIR)/usr/share/zoneinfo/uclibc + cp -a $(@D)/output/* $(TARGET_DIR)/usr/share/zoneinfo/uclibc + if [ ! -f $(TARGET_DIR)/usr/share/zoneinfo/uclibc/$(TZ_LOCALTIME) ]; then \ + printf "Error: '%s' is not a valid timezone, check your BR2_TARGET_LOCALTIME setting\n" \ + "$(TZ_LOCALTIME)"; \ + exit 1; \ + fi + ln -sf ../usr/share/zoneinfo/uclibc/$(TZ_LOCALTIME) $(TARGET_DIR)/etc/TZ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/tzdata/Config.in b/buildroot/package/tzdata/Config.in new file mode 100644 index 0000000..1e6cc0f --- /dev/null +++ b/buildroot/package/tzdata/Config.in @@ -0,0 +1,9 @@ +# This package is not meant to be user-visible. +# It gets selected by BR2_TARGET_TZ in system/Config.in + +config BR2_PACKAGE_TZDATA + bool + help + Time zone database + + http://www.iana.org/time-zones/repository/tz-link.html diff --git a/buildroot/package/tzdata/tzdata.hash b/buildroot/package/tzdata/tzdata.hash new file mode 100644 index 0000000..cfcd49e --- /dev/null +++ b/buildroot/package/tzdata/tzdata.hash @@ -0,0 +1,2 @@ +# From http://mm.icann.org/pipermail/tz-announce/2018-January/000048.html +sha512 0575c87c9ffcde7b7f62b0df928d8a0e8d93f832b5ef7227b3d8431686f851f1fd5372c7e768f2979830352433b31df7f3979a00c28ea3973a3a0987ebbfb835 tzdata2018c.tar.gz diff --git a/buildroot/package/tzdata/tzdata.mk b/buildroot/package/tzdata/tzdata.mk new file mode 100644 index 0000000..28323e8 --- /dev/null +++ b/buildroot/package/tzdata/tzdata.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# tzdata +# +################################################################################ + +TZDATA_VERSION = 2018c +TZDATA_SOURCE = tzdata$(TZDATA_VERSION).tar.gz +TZDATA_SITE = http://www.iana.org/time-zones/repository/releases +TZDATA_STRIP_COMPONENTS = 0 +TZDATA_DEPENDENCIES = host-tzdata +HOST_TZDATA_DEPENDENCIES = host-zic +TZDATA_LICENSE = Public domain + +# Take care when re-ordering this list since this might break zone +# dependencies +TZDATA_DEFAULT_ZONELIST = \ + africa antarctica asia australasia europe northamerica \ + southamerica pacificnew etcetera backward systemv factory + +ifeq ($(call qstrip,$(BR2_TARGET_TZ_ZONELIST)),default) +TZDATA_ZONELIST = $(TZDATA_DEFAULT_ZONELIST) +else +TZDATA_ZONELIST = $(call qstrip,$(BR2_TARGET_TZ_ZONELIST)) +endif + +TZDATA_LOCALTIME = $(call qstrip,$(BR2_TARGET_LOCALTIME)) + +# No need to extract for target, we're using the host-installed files +TZDATA_EXTRACT_CMDS = + +define TZDATA_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/share/zoneinfo + cp -a $(HOST_DIR)/share/zoneinfo/* $(TARGET_DIR)/usr/share/zoneinfo + cd $(TARGET_DIR)/usr/share/zoneinfo; \ + for zone in posix/*; do \ + ln -sfn "$${zone}" "$${zone##*/}"; \ + done + if [ ! -f $(TARGET_DIR)/usr/share/zoneinfo/$(TZDATA_LOCALTIME) ]; then \ + printf "Error: '%s' is not a valid timezone, check your BR2_TARGET_LOCALTIME setting\n" \ + "$(TZDATA_LOCALTIME)"; \ + exit 1; \ + fi + ln -sf ../usr/share/zoneinfo/$(TZDATA_LOCALTIME) $(TARGET_DIR)/etc/localtime + echo "$(TZDATA_LOCALTIME)" >$(TARGET_DIR)/etc/timezone +endef + +define HOST_TZDATA_BUILD_CMDS + (cd $(@D); \ + for zone in $(TZDATA_ZONELIST); do \ + $(ZIC) -d _output/posix -y yearistype.sh $$zone || exit 1; \ + $(ZIC) -d _output/right -L leapseconds -y yearistype.sh $$zone || exit 1; \ + done; \ + ) +endef + +define HOST_TZDATA_INSTALL_CMDS + $(INSTALL) -d -m 0755 $(HOST_DIR)/share/zoneinfo + cp -a $(@D)/_output/* $(@D)/*.tab $(HOST_DIR)/share/zoneinfo +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/tzdump/tzdump.hash b/buildroot/package/tzdump/tzdump.hash new file mode 100644 index 0000000..71114e0 --- /dev/null +++ b/buildroot/package/tzdump/tzdump.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 403f22f9c3007a051f9dbccff48b396b8e04eb1afcc8d779e6b3d9b6d971e1fe tzdump-65a10105564801094b18c3fcacf4dde4c44e4ab8.tar.gz diff --git a/buildroot/package/tzdump/tzdump.mk b/buildroot/package/tzdump/tzdump.mk new file mode 100644 index 0000000..baad978 --- /dev/null +++ b/buildroot/package/tzdump/tzdump.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# tzdump +# +################################################################################ + +TZDUMP_VERSION = 65a10105564801094b18c3fcacf4dde4c44e4ab8 +TZDUMP_SITE = $(call github,alexandrebelloni,tzdump,$(TZDUMP_VERSION)) +HOST_TZDUMP_DEPENDENCIES = host-zic + +define HOST_TZDUMP_BUILD_CMDS + cd $(@D) && $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o tzdump tzdump.c +endef + +define HOST_TZDUMP_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/tzdump $(HOST_DIR)/sbin/tzdump +endef + +$(eval $(host-generic-package)) + +TZDUMP = $(HOST_DIR)/sbin/tzdump diff --git a/buildroot/package/uboot-tools/0001-drop-configh-from-tools.patch b/buildroot/package/uboot-tools/0001-drop-configh-from-tools.patch new file mode 100644 index 0000000..f19cebe --- /dev/null +++ b/buildroot/package/uboot-tools/0001-drop-configh-from-tools.patch @@ -0,0 +1,47 @@ +From 216832de3bc3e6ef093305c6d07f464f7606f2d6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Tue, 4 Aug 2015 22:13:20 +0200 +Subject: [PATCH] drop configh from tools +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +We need to build u-boot tools without a board configuration for the target. +fw_env just uses config.h to define the default environment of the created +image, so it really isn't mandatory. + +Signed-off-by: Gustavo Zacarias +[Jörg Krause: update for version 2015.07] +Signed-off-by: Jörg Krause +[Romain: update for version 2017.05 + after commit 9d80b49a671c9922931adcd823aab0ed319a42d1] +Signed-off-by: Romain Naour +--- + tools/env/fw_env_private.h | 11 ----------- + 1 file changed, 11 deletions(-) + +diff --git a/tools/env/fw_env_private.h b/tools/env/fw_env_private.h +index 0c27da0..e550463 100644 +--- a/tools/env/fw_env_private.h ++++ b/tools/env/fw_env_private.h +@@ -5,17 +5,6 @@ + * SPDX-License-Identifier: GPL-2.0+ + */ + +-/* Pull in the current config to define the default environment */ +-#include +- +-#ifndef __ASSEMBLY__ +-#define __ASSEMBLY__ /* get only #defines from config.h */ +-#include +-#undef __ASSEMBLY__ +-#else +-#include +-#endif +- + /* + * To build the utility with the static configuration + * comment out the next line. +-- +2.9.4 + diff --git a/buildroot/package/uboot-tools/0002-tools-only-in-no-dot-config-targets.patch b/buildroot/package/uboot-tools/0002-tools-only-in-no-dot-config-targets.patch new file mode 100644 index 0000000..c201bf7 --- /dev/null +++ b/buildroot/package/uboot-tools/0002-tools-only-in-no-dot-config-targets.patch @@ -0,0 +1,42 @@ +From b8110293d70c4f43035dfd6a0904d342be6a08e0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Sun, 1 Feb 2015 21:53:47 +0100 +Subject: [PATCH] tools only in no dot config targets +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Revert upstream commit c7ad5cbb1ef2c33883f0fa7d0455095004fd306d: + + Makefile: drop "tools-only" from no-dot-config-targets + +This indirectly pulls in a build-dependency on libssl-dev used for FIT +image support, and possibly GPL/OpenSSL licensing incompatibility +issues. + +Based on Debian patch from u-boot-tools: +http://ftp.de.debian.org/debian/pool/main/u/u-boot/u-boot_2014.10+dfsg1-2.1.debian.tar.xz + +Signed-off-by: Jörg Krause +[fabio: adapt it to 2016.09] +Signed-off-by: Fabio Estevam +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1cf15ce..75e85eb 100644 +--- a/Makefile ++++ b/Makefile +@@ -425,7 +425,7 @@ timestamp_h := include/generated/timestamp_autogenerated.h + + no-dot-config-targets := clean clobber mrproper distclean \ + help %docs check% coccicheck \ +- ubootversion backup tests ++ ubootversion backup tests tools-only + + config-targets := 0 + mixed-targets := 0 +-- +2.7.4 + diff --git a/buildroot/package/uboot-tools/0003-Make-FIT-support-really-optional.patch b/buildroot/package/uboot-tools/0003-Make-FIT-support-really-optional.patch new file mode 100644 index 0000000..8853198 --- /dev/null +++ b/buildroot/package/uboot-tools/0003-Make-FIT-support-really-optional.patch @@ -0,0 +1,96 @@ +From d9d7d7cf8b27516d45c66daa1bf0a18c878c4e33 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sun, 8 May 2016 11:11:39 -0300 +Subject: [PATCH] Make FIT support really optional + +Due to some mistakes in the source code, it was not possible to really +turn FIT support off. This commit fixes the problem by means of the +following changes: + +- Enclose "bootm_host_load_image" and "bootm_host_load_images" between + checks for CONFIG_FIT_SIGNATURE, in common/bootm.c. + +- Enclose the declaration of "bootm_host_load_images" between checks for + CONFIG_FIT_SIGNATURE, in common/bootm.h. + +- Condition the compilation and linking of fit_common.o fit_image.o + image-host.o common/image-fit.o to CONFIG_FIT=y, in tools/Makefile. + +Signed-off-by: Carlos Santos +[fabio: adapt for 2016.07] +Signed-off-by: Fabio Estevam +[Ricardo: fix conditional compilation and linking of the files mentioned above +for 2016.07] +Signed-off-by: Ricardo Martincoski +--- + common/bootm.c | 2 ++ + include/bootm.h | 2 ++ + tools/Makefile | 6 ++---- + 3 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/common/bootm.c b/common/bootm.c +index 2431019..7e1adc8 100644 +--- a/common/bootm.c ++++ b/common/bootm.c +@@ -901,6 +901,7 @@ void memmove_wd(void *to, void *from, size_t len, ulong chunksz) + memmove(to, from, len); + } + ++#if defined(CONFIG_FIT_SIGNATURE) + static int bootm_host_load_image(const void *fit, int req_image_type) + { + const char *fit_uname_config = NULL; +@@ -965,5 +966,6 @@ int bootm_host_load_images(const void *fit, int cfg_noffset) + /* Return the first error we found */ + return err; + } ++#endif + + #endif /* ndef USE_HOSTCC */ +diff --git a/include/bootm.h b/include/bootm.h +index 4981377..94d62a1 100644 +--- a/include/bootm.h ++++ b/include/bootm.h +@@ -41,7 +41,9 @@ void lynxkdi_boot(image_header_t *hdr); + + boot_os_fn *bootm_os_get_boot_func(int os); + ++#if defined(CONFIG_FIT_SIGNATURE) + int bootm_host_load_images(const void *fit, int cfg_noffset); ++#endif + + int boot_selected_os(int argc, char * const argv[], int state, + bootm_headers_t *images, boot_os_fn *boot_fn); +diff --git a/tools/Makefile b/tools/Makefile +index f72294a..ccf5120 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -54,6 +54,7 @@ mkenvimage-objs := mkenvimage.o os_support.o lib/crc32.o + hostprogs-y += dumpimage mkimage + hostprogs-$(CONFIG_FIT_SIGNATURE) += fit_info fit_check_sign + ++FIT_OBJS-$(CONFIG_FIT) := fit_common.o fit_image.o image-host.o common/image-fit.o + FIT_SIG_OBJS-$(CONFIG_FIT_SIGNATURE) := common/image-sig.o + # Flattened device tree objects + LIBFDT_OBJS := $(addprefix lib/libfdt/, \ +@@ -68,16 +69,13 @@ ROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rksd.o rkspi.o + # common objs for dumpimage and mkimage + dumpimage-mkimage-objs := aisimage.o \ + atmelimage.o \ ++ $(FIT_OBJS-y) \ + $(FIT_SIG_OBJS-y) \ + common/bootm.o \ + lib/crc32.o \ + default_image.o \ + lib/fdtdec_common.o \ + lib/fdtdec.o \ +- fit_common.o \ +- fit_image.o \ +- common/image-fit.o \ +- image-host.o \ + common/image.o \ + imagetool.o \ + imximage.o \ +-- +2.9.1 + diff --git a/buildroot/package/uboot-tools/0004-tools-Include-U-Boot-libfdt-headers-from-their-actua.patch b/buildroot/package/uboot-tools/0004-tools-Include-U-Boot-libfdt-headers-from-their-actua.patch new file mode 100644 index 0000000..9f18342 --- /dev/null +++ b/buildroot/package/uboot-tools/0004-tools-Include-U-Boot-libfdt-headers-from-their-actua.patch @@ -0,0 +1,33 @@ +From e0d20dc1521e74b82dbd69be53a048847798a90a Mon Sep 17 00:00:00 2001 +From: Paul Kocialkowski +Date: Fri, 2 Mar 2018 23:13:42 +0100 +Subject: [PATCH] tools: Include U-Boot libfdt headers from their actual path + +There are no headers for libfdt in lib/libfdt, as they are instead +located in scripts/dtc/libfdt. Specifying lib/libfdt for headers +inclusion in host tools results in using the system libfdt headers, +which is not what we want. Change this to the proper path. + +Signed-off-by: Paul Kocialkowski +[Backport from upstream commit e0d20dc1521e74b82dbd69be53a048847798a90a] +Signed-off-by: Thomas Petazzoni +--- + tools/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/Makefile b/tools/Makefile +index d3387fad69..f38f68ee47 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -244,7 +244,7 @@ endif # !LOGO_BMP + # + HOST_EXTRACFLAGS += -include $(srctree)/include/compiler.h \ + $(patsubst -I%,-idirafter%, $(filter -I%, $(UBOOTINCLUDE))) \ +- -I$(srctree)/lib/libfdt \ ++ -I$(srctree)/scripts/dtc/libfdt \ + -I$(srctree)/tools \ + -DUSE_HOSTCC \ + -D__KERNEL_STRICT_NAMES \ +-- +2.14.3 + diff --git a/buildroot/package/uboot-tools/Config.in b/buildroot/package/uboot-tools/Config.in new file mode 100644 index 0000000..63a058e --- /dev/null +++ b/buildroot/package/uboot-tools/Config.in @@ -0,0 +1,87 @@ +config BR2_PACKAGE_UBOOT_TOOLS + bool "u-boot tools" + help + Companion tools for Das U-Boot bootloader. + + http://www.denx.de/wiki/U-Boot/WebHome + +if BR2_PACKAGE_UBOOT_TOOLS + +config BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT + bool "Flattened Image Tree (FIT) support" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_DTC + select BR2_PACKAGE_DTC_PROGRAMS + help + Enables support for Flattened Image Tree (FIT). + + This option allows to boot the new uImage structure, + Flattened Image Tree. FIT is formally a FDT, which can include + images of various types (kernel, FDT blob, ramdisk, etc.) + in a single blob. To boot this new uImage structure, + pass the address of the blob to the "bootm" command. + +comment "u-boot tools FIT support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +if BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT + +config BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT + bool "FIT signature verification support" + select BR2_PACKAGE_OPENSSL + help + Enables support for FIT Signature Verification. + + Flat Image Trees (FIT) supports hashing of images so that + these hashes can be checked on loading. This protects + against corruption of the image. However it does not prevent + the substitution of one image for another. + + The signature feature allows the hash to be signed with a + private key such that it can be verified using a public key + later. Provided that the private key is kept secret and the + public key is stored in a non-volatile place, any image can + be verified in this way. + + Enabling this option pulls in a dependency on libssl and + libcrypto, and possibly GPL/OpenSSL licensing + incompatibility issues. + +endif + +config BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE + bool "mkimage" + help + Install the mkimage tool on the target system + + The mkimage tool from Das U-Boot bootloader, which allows + generation of U-Boot images in various formats. + +config BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE + bool "mkenvimage" + help + Install the mkenvimage tool on the target system + + The mkenvimage tool from Das U-Boot bootloader, which allows + generation of a valid binary environment image from a text + file describing the key=value pairs of the environment. + +config BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV + bool "fw_printenv" + default y + help + Install the fw_printenv / fw_setenv tools on the target system + + The fw_printenv and fw_setenv tools from Das U-Boot + bootloader, which allows access to the U-Boot environment + from Linux. + +config BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE + bool "dumpimage" + help + Install the dumpimage tool on the target system + + The dumpimage tool from Das U-Boot bootloader, which allows + extraction of data from U-Boot images. + +endif diff --git a/buildroot/package/uboot-tools/Config.in.host b/buildroot/package/uboot-tools/Config.in.host new file mode 100644 index 0000000..52a4c2e --- /dev/null +++ b/buildroot/package/uboot-tools/Config.in.host @@ -0,0 +1,42 @@ +config BR2_PACKAGE_HOST_UBOOT_TOOLS + bool "host u-boot tools" + help + Companion tools for Das U-Boot bootloader. + + http://www.denx.de/wiki/U-Boot/WebHome + +if BR2_PACKAGE_HOST_UBOOT_TOOLS + +config BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT + bool "Flattened Image Tree (FIT) support" + select BR2_PACKAGE_HOST_DTC + help + Enables support for Flattened Image Tree (FIT). + + This option allows to boot the new uImage structure, + Flattened Image Tree. FIT is formally a FDT, which can include + images of various types (kernel, FDT blob, ramdisk, etc.) + in a single blob. To boot this new uImage structure, + pass the address of the blob to the "bootm" command. + +if BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT + +config BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT + bool "FIT signature verification support" + help + Enables support for FIT Signature Verification. + + Flat Image Trees (FIT) supports hashing of images so that + these hashes can be checked on loading. This protects + against corruption of the image. However it does not prevent + the substitution of one image for another. + + The signature feature allows the hash to be signed with a + private key such that it can be verified using a public key + later. Provided that the private key is kept secret and the + public key is stored in a non-volatile place, any image can + be verified in this way. + +endif + +endif diff --git a/buildroot/package/uboot-tools/uboot-tools.hash b/buildroot/package/uboot-tools/uboot-tools.hash new file mode 100644 index 0000000..9425df3 --- /dev/null +++ b/buildroot/package/uboot-tools/uboot-tools.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 938f597394b33e82e5af8c98bd5ea1a238f61892aabef36384adbf7ca5b52dda u-boot-2018.01.tar.bz2 diff --git a/buildroot/package/uboot-tools/uboot-tools.mk b/buildroot/package/uboot-tools/uboot-tools.mk new file mode 100644 index 0000000..cc57ce8 --- /dev/null +++ b/buildroot/package/uboot-tools/uboot-tools.mk @@ -0,0 +1,125 @@ +################################################################################ +# +# uboot-tools +# +################################################################################ + +UBOOT_TOOLS_VERSION = 2018.01 +UBOOT_TOOLS_SOURCE = u-boot-$(UBOOT_TOOLS_VERSION).tar.bz2 +UBOOT_TOOLS_SITE = ftp://ftp.denx.de/pub/u-boot +UBOOT_TOOLS_LICENSE = GPL-2.0+ +UBOOT_TOOLS_LICENSE_FILES = Licenses/gpl-2.0.txt +UBOOT_TOOLS_INSTALL_STAGING = YES + +define UBOOT_TOOLS_CONFIGURE_CMDS + mkdir -p $(@D)/include/config + touch $(@D)/include/config/auto.conf +endef + +UBOOT_TOOLS_MAKE_OPTS = CROSS_COMPILE="$(TARGET_CROSS)" \ + CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ + STRIP=$(TARGET_STRIP) + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SUPPORT),y) +UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y CONFIG_MKIMAGE_DTC_PATH=dtc +UBOOT_TOOLS_DEPENDENCIES += dtc +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y) +UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y +UBOOT_TOOLS_DEPENDENCIES += openssl host-pkgconf +endif + +define UBOOT_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \ + CROSS_BUILD_TOOLS=y tools-only + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(UBOOT_TOOLS_MAKE_OPTS) \ + envtools no-dot-config-targets=envtools +endef + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE),y) +define UBOOT_TOOLS_INSTALL_MKIMAGE + $(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(TARGET_DIR)/usr/bin/mkimage +endef +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE),y) +define UBOOT_TOOLS_INSTALL_MKENVIMAGE + $(INSTALL) -m 0755 -D $(@D)/tools/mkenvimage $(TARGET_DIR)/usr/bin/mkenvimage +endef +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV),y) +define UBOOT_TOOLS_INSTALL_FWPRINTENV + $(INSTALL) -m 0755 -D $(@D)/tools/env/fw_printenv $(TARGET_DIR)/usr/sbin/fw_printenv + ln -sf fw_printenv $(TARGET_DIR)/usr/sbin/fw_setenv +endef +endif + +ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_DUMPIMAGE),y) +define UBOOT_TOOLS_INSTALL_DUMPIMAGE + $(INSTALL) -m 0755 -D $(@D)/tools/dumpimage $(TARGET_DIR)/usr/sbin/dumpimage +endef +endif + +define UBOOT_TOOLS_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0755 $(@D)/tools/env/lib.a $(STAGING_DIR)/usr/lib/libubootenv.a + $(INSTALL) -D -m 0644 $(@D)/tools/env/fw_env.h $(STAGING_DIR)/usr/include/fw_env.h +endef + +define UBOOT_TOOLS_INSTALL_TARGET_CMDS + $(UBOOT_TOOLS_INSTALL_MKIMAGE) + $(UBOOT_TOOLS_INSTALL_MKENVIMAGE) + $(UBOOT_TOOLS_INSTALL_FWPRINTENV) + $(UBOOT_TOOLS_INSTALL_DUMPIMAGE) +endef + +define HOST_UBOOT_TOOLS_CONFIGURE_CMDS + mkdir -p $(@D)/include/config + touch $(@D)/include/config/auto.conf +endef + +HOST_UBOOT_TOOLS_MAKE_OPTS = HOSTCC="$(HOSTCC)" \ + HOSTCFLAGS="$(HOST_CFLAGS)" \ + HOSTLDFLAGS="$(HOST_LDFLAGS)" + +ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT),y) +HOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT=y CONFIG_MKIMAGE_DTC_PATH=dtc +HOST_UBOOT_TOOLS_DEPENDENCIES += host-dtc +endif + +ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT),y) +HOST_UBOOT_TOOLS_MAKE_OPTS += CONFIG_FIT_SIGNATURE=y +HOST_UBOOT_TOOLS_DEPENDENCIES += host-openssl +endif + +define HOST_UBOOT_TOOLS_BUILD_CMDS + $(MAKE1) -C $(@D) $(HOST_UBOOT_TOOLS_MAKE_OPTS) tools-only +endef + +define HOST_UBOOT_TOOLS_INSTALL_CMDS + $(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(HOST_DIR)/bin/mkimage + $(INSTALL) -m 0755 -D $(@D)/tools/mkenvimage $(HOST_DIR)/bin/mkenvimage + $(INSTALL) -m 0755 -D $(@D)/tools/dumpimage $(HOST_DIR)/bin/dumpimage +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) + +# Convenience variables for other mk files that make use of mkimage + +MKIMAGE = $(HOST_DIR)/bin/mkimage + +# mkimage supports arm blackfin m68k microblaze mips mips64 nios2 powerpc ppc sh sparc sparc64 x86 +# KERNEL_ARCH can be arm64 arc arm blackfin m68k microblaze mips nios2 powerpc sh sparc i386 x86_64 xtensa +# For arm64, arc, xtensa we'll just keep KERNEL_ARCH +# For mips64, we'll just keep mips +# For i386 and x86_64, we need to convert +ifeq ($(KERNEL_ARCH),x86_64) +MKIMAGE_ARCH = x86 +else ifeq ($(KERNEL_ARCH),i386) +MKIMAGE_ARCH = x86 +else +MKIMAGE_ARCH = $(KERNEL_ARCH) +endif diff --git a/buildroot/package/ubus/0001-Install-server-and-client-examples.patch b/buildroot/package/ubus/0001-Install-server-and-client-examples.patch new file mode 100644 index 0000000..5c985d8 --- /dev/null +++ b/buildroot/package/ubus/0001-Install-server-and-client-examples.patch @@ -0,0 +1,28 @@ +From aa4aea68a9d2a38fabb5ae8e5a0d05dfd7bcf907 Mon Sep 17 00:00:00 2001 +From: Rahul Jain +Date: Fri, 24 Mar 2017 18:03:24 +0530 +Subject: [PATCH] Install server and client examples + +Signed-off-by: Sergio Prado +Signed-off-by: Rahul Jain +[Rahul Jain: rebase the patch on latest version] +--- + examples/CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt +index 81f9997..38f153f 100644 +--- a/examples/CMakeLists.txt ++++ b/examples/CMakeLists.txt +@@ -9,4 +9,8 @@ IF (BUILD_EXAMPLES) + + ADD_EXECUTABLE(client client.c count.c) + TARGET_LINK_LIBRARIES(client ubus ${ubox_library}) ++ ++ INSTALL(TARGETS server client ++ RUNTIME DESTINATION sbin ++ ) + ENDIF() +-- +2.6.2 + diff --git a/buildroot/package/ubus/Config.in b/buildroot/package/ubus/Config.in new file mode 100644 index 0000000..28bf8e9 --- /dev/null +++ b/buildroot/package/ubus/Config.in @@ -0,0 +1,31 @@ +comment "ubus needs a toolchain w/ dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_UBUS + bool "ubus" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + depends on !BR2_STATIC_LIBS # libubox + select BR2_PACKAGE_LIBUBOX + select BR2_PACKAGE_JSON_C + help + IPC/RPC bus that allows communication between processes. + + It consists of few parts including a daemon (ubusd), a + library (libubus) and a command line interface + (ubus). Although created for the OpenWRT project, it can be + used as a general IPC/RPC mechanism in other projects. + + * Select BR2_PACKAGE_LUA_5_1 if you want to have Lua + support. + + https://wiki.openwrt.org/doc/techref/ubus + +if BR2_PACKAGE_UBUS + +config BR2_PACKAGE_UBUS_EXAMPLES + bool "build and install ubus examples" + help + Build and install client and server ubus examples. + +endif diff --git a/buildroot/package/ubus/ubus.hash b/buildroot/package/ubus/ubus.hash new file mode 100644 index 0000000..0829734 --- /dev/null +++ b/buildroot/package/ubus/ubus.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 93ef2612853641ca8d16d07527115c72ed03f8eaa1c727a01b069a4e814247c0 ubus-34c6e818e431cc53478a0f7c7c1eca07d194d692.tar.gz diff --git a/buildroot/package/ubus/ubus.mk b/buildroot/package/ubus/ubus.mk new file mode 100644 index 0000000..5fb57ea --- /dev/null +++ b/buildroot/package/ubus/ubus.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# ubus +# +################################################################################ + +UBUS_VERSION = 34c6e818e431cc53478a0f7c7c1eca07d194d692 +UBUS_SITE = git://git.openwrt.org/project/ubus.git + +UBUS_LICENSE = LGPL-2.1 +UBUS_LICENSE_FILES = ubusd_acl.h + +UBUS_INSTALL_STAGING = YES + +UBUS_DEPENDENCIES = json-c libubox + +# package only compiles with Lua 5.1 +ifeq ($(BR2_PACKAGE_LUA_5_1),y) +UBUS_DEPENDENCIES += lua +UBUS_CONF_OPTS += -DBUILD_LUA=ON \ + -DLUA_CFLAGS=-I$(STAGING_DIR)/usr/include \ + -DLUAPATH=/usr/lib/lua/$(LUAINTERPRETER_ABIVER) +else +UBUS_CONF_OPTS += -DBUILD_LUA=OFF +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +UBUS_DEPENDENCIES += systemd +UBUS_CONF_OPTS += -DENABLE_SYSTEMD=ON +else +UBUS_CONF_OPTS += -DENABLE_SYSTEMD=OFF +endif + +ifeq ($(BR2_PACKAGE_UBUS_EXAMPLES),y) +UBUS_CONF_OPTS += -DBUILD_EXAMPLES=ON +else +UBUS_CONF_OPTS += -DBUILD_EXAMPLES=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/uccp420wlan/Config.in b/buildroot/package/uccp420wlan/Config.in new file mode 100644 index 0000000..ef6a9db --- /dev/null +++ b/buildroot/package/uccp420wlan/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_UCCP420WLAN + bool "uccp420wlan" + depends on BR2_LINUX_KERNEL + help + SoftMAC (mac80211) based WiFi driver for Imagination's + Explorer RPU uccp420. This supports Dual Band WiFi with + 2.4GHz - 2x2 b/g/n 40MHz, 5GHz - 2x2 a/n/11ac 80MHz modes + + Used in creator ci40 board. + + This module needs a Linux kernel >= v4.2. + + https://github.com/CreatorDev/uccp420wlan + +comment "uccp420wlan needs a Linux kernel >= 4.2 to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/uccp420wlan/uccp420wlan.hash b/buildroot/package/uccp420wlan/uccp420wlan.hash new file mode 100644 index 0000000..41f60a4 --- /dev/null +++ b/buildroot/package/uccp420wlan/uccp420wlan.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 1d4de62fc842dbab739708cf0d9ebce270fcdf63c1c13ac676cbc253acdaa3bb uccp420wlan-v6.9.1.tar.gz diff --git a/buildroot/package/uccp420wlan/uccp420wlan.mk b/buildroot/package/uccp420wlan/uccp420wlan.mk new file mode 100644 index 0000000..bd89e07 --- /dev/null +++ b/buildroot/package/uccp420wlan/uccp420wlan.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# uccp420wlan +# +################################################################################ + +UCCP420WLAN_VERSION = v6.9.1 +UCCP420WLAN_SITE = $(call github,CreatorDev,uccp420wlan,$(UCCP420WLAN_VERSION)) +UCCP420WLAN_LICENSE = GPL-2.0 (kernel module), proprietary (firmware blob) +UCCP420WLAN_LICENSE_FILES = COPYING firmware/LICENSE.imagination + +define UCCP420WLAN_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware/img/uccp420wlan + cp $(@D)/firmware/*.ldr $(TARGET_DIR)/lib/firmware/img/uccp420wlan +endef + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/ucl/ucl.hash b/buildroot/package/ucl/ucl.hash new file mode 100644 index 0000000..6b1f41e --- /dev/null +++ b/buildroot/package/ucl/ucl.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b865299ffd45d73412293369c9754b07637680e5c826915f097577cd27350348 ucl-1.03.tar.gz diff --git a/buildroot/package/ucl/ucl.mk b/buildroot/package/ucl/ucl.mk new file mode 100644 index 0000000..aac068e --- /dev/null +++ b/buildroot/package/ucl/ucl.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# ucl +# +################################################################################ + +UCL_VERSION = 1.03 +UCL_SITE = http://www.oberhumer.com/opensource/ucl/download +UCL_LICENSE = GPL-2.0+ +UCL_LICENSE_FILES = COPYING + +# Fix ACC conformance test failure for host gcc 6.x +HOST_UCL_CONF_ENV += CPPFLAGS="$(HOST_CPPFLAGS) -std=iso9899:1990" + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/uclibc-ng-test/0001-misc-tst-syscall6-fix-build-with-musl-and-older-kenr.patch b/buildroot/package/uclibc-ng-test/0001-misc-tst-syscall6-fix-build-with-musl-and-older-kenr.patch new file mode 100644 index 0000000..ca43326 --- /dev/null +++ b/buildroot/package/uclibc-ng-test/0001-misc-tst-syscall6-fix-build-with-musl-and-older-kenr.patch @@ -0,0 +1,45 @@ +From 9a09c89fdd0e0cebec48d1bb7bc187bf92ae361c Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 13 Mar 2018 12:58:59 +0200 +Subject: [PATCH] misc/tst-syscall6: fix build with musl and older kenrel + headers + +The RWF_DSYNC and RWF_HIPRI macros were introduced in kernel version 4.6 +with the preadv2/pwritev2 system calls. musl libc provides its own +syscall definitions, even when the kernel headers are older. This leads +to the following build failure: + +tst-syscall6.c: In function 'main': +tst-syscall6.c:32:48: error: 'RWF_DSYNC' undeclared (first use in this function) + nio = syscall(SYS_pwritev2, fd, iov, 2, 0, 0, RWF_DSYNC); + ^~~~~~~~~ +tst-syscall6.c:32:48: note: each undeclared identifier is reported only once for each function it appears in +tst-syscall6.c:42:58: error: 'RWF_HIPRI' undeclared (first use in this function) + nio = syscall(SYS_preadv2, fd, iov, 1, strlen(str0), 0, RWF_HIPRI); + ^~~~~~~~~ + +Make the code depend also on RWF_HIPRI to fix this failure. + +Signed-off-by: Baruch Siach +--- +Upstream status: patch sent to Waldemar Brodkorb + + test/misc/tst-syscall6.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/misc/tst-syscall6.c b/test/misc/tst-syscall6.c +index fa51c275e4a5..9ad2ddac2b8f 100644 +--- a/test/misc/tst-syscall6.c ++++ b/test/misc/tst-syscall6.c +@@ -9,7 +9,7 @@ + + int main() + { +-#if defined SYS_preadv2 && defined SYS_pwritev2 ++#if defined SYS_preadv2 && defined SYS_pwritev2 && defined RWF_HIPRI + char tmp[] = "/tmp/tst-preadv2-XXXXXX"; + int fd; + struct iovec iov[2]; +-- +2.16.1 + diff --git a/buildroot/package/uclibc-ng-test/Config.in b/buildroot/package/uclibc-ng-test/Config.in new file mode 100644 index 0000000..0f093d1 --- /dev/null +++ b/buildroot/package/uclibc-ng-test/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_UCLIBC_NG_TEST + bool "uclibc-ng-test" + help + Enabling this option will compile and install the uClibc-ng + test suite. This is useful if you want to check if the + uClibc-ng library is working for your architecture and/or + help developing uClibc-ng. + + The test suite will be installed into + /usr/lib/uclibc-ng-test directory. To run the test suite + enter the /usr/lib/uclibc-ng-test/test directory and type + "sh uclibcng-testrunner.sh". + + See the /usr/lib/uclibc-ng-test/test/README for additional + information. + + This is not needed at all for normal builds, so you can + safely say no if you do not plan to dig into your C library. + + The tests can also be used for GNU libc or musl. + + http://www.uclibc-ng.org diff --git a/buildroot/package/uclibc-ng-test/uclibc-ng-test.mk b/buildroot/package/uclibc-ng-test/uclibc-ng-test.mk new file mode 100644 index 0000000..0e6433c --- /dev/null +++ b/buildroot/package/uclibc-ng-test/uclibc-ng-test.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# uclibc-ng-test +# +################################################################################ + +UCLIBC_NG_TEST_VERSION = c6d62cbc60504c7f6867b486248b0ef7cc2da554 +UCLIBC_NG_TEST_SITE = git://uclibc-ng.org/git/uclibc-ng-test +UCLIBC_NG_TEST_LICENSE = LGPL-2.1+ +UCLIBC_NG_TEST_LICENSE_FILES = COPYING.LIB + +# the math tests are recently synced from glibc and need more adaption before +# regular testing is possible +UCLIBC_NG_TEST_MAKE_ENV += NO_MATH=1 + +# locale tests are not compatible with musl, yet +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +UCLIBC_NG_TEST_MAKE_ENV += NO_LOCALE=1 +endif +ifeq ($(BR2_USE_WCHAR),) +UCLIBC_NG_TEST_MAKE_ENV += NO_WCHAR=1 +endif +ifeq ($(BR2_ENABLE_LOCALE),) +UCLIBC_NG_TEST_MAKE_ENV += NO_LOCALE=1 +endif +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +UCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_THREADS=1 +endif +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),) +UCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_NPTL=1 +endif +# most NPTL/TLS tests use dlopen +ifeq ($(BR2_STATIC_LIBS),y) +UCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_NPTL=1 NO_DL=1 +endif + +# to execute tests in a deterministic order, call test_gen separately +define UCLIBC_NG_TEST_BUILD_CMDS + $(TARGET_MAKE_ENV) $(UCLIBC_NG_TEST_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" \ + UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ + UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \ + test_compile + $(TARGET_MAKE_ENV) $(UCLIBC_NG_TEST_MAKE_ENV) $(MAKE1) -C $(@D) \ + CC="$(TARGET_CC)" \ + UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \ + test_gen +endef + +define UCLIBC_NG_TEST_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/uclibc/0001-aarch64-sys-ucontext.h-include-bits-sigcontext.h.patch b/buildroot/package/uclibc/0001-aarch64-sys-ucontext.h-include-bits-sigcontext.h.patch new file mode 100644 index 0000000..0a1fdf6 --- /dev/null +++ b/buildroot/package/uclibc/0001-aarch64-sys-ucontext.h-include-bits-sigcontext.h.patch @@ -0,0 +1,49 @@ +From 1c27982bb8a007bb1a6a29db8e6efb1f40975879 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sun, 28 Jan 2018 13:59:30 +0100 +Subject: [PATCH 1/1] aarch64/sys/ucontext.h: include bits/sigcontext.h + +Fixes a buildroot build error with ffmpeg + +In file included from /home/bernd/buildroot/output/host/aarch64-buildroot-linux-uclibc/sysroot/usr/include/signal.h:329:0, + from fftools/ffmpeg.h:26, + from fftools/ffmpeg_opt.c:23: +/home/bernd/buildroot/output/host/aarch64-buildroot-linux-uclibc/sysroot/usr/include/sys/ucontext.h:52:16: + error: field 'uc_mcontext' has incomplete type + mcontext_t uc_mcontext; + ^~~~~~~~~~~ + +using this defconfig: + +BR2_aarch64=y +BR2_PACKAGE_FFMPEG=y + +sys/ucontext.h for other archs already include bits/sigcontext.h, +on aarch64 this is needed as well. + +Patch sent upstream: +https://mailman.uclibc-ng.org/pipermail/devel/2018-January/001622.html + +Signed-off-by: Bernd Kuhls +--- + libc/sysdeps/linux/aarch64/sys/ucontext.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/libc/sysdeps/linux/aarch64/sys/ucontext.h b/libc/sysdeps/linux/aarch64/sys/ucontext.h +index d17458896..dc7303b54 100644 +--- a/libc/sysdeps/linux/aarch64/sys/ucontext.h ++++ b/libc/sysdeps/linux/aarch64/sys/ucontext.h +@@ -26,6 +26,10 @@ + + #include + ++/* We need the signal context definitions even if they are not used ++ included in . */ ++#include ++ + typedef elf_greg_t greg_t; + + /* Container for all general registers. */ +-- +2.11.0 + diff --git a/buildroot/package/uclibc/Config.in b/buildroot/package/uclibc/Config.in new file mode 100644 index 0000000..0e24b25 --- /dev/null +++ b/buildroot/package/uclibc/Config.in @@ -0,0 +1,160 @@ +if BR2_TOOLCHAIN_BUILDROOT_UCLIBC + +comment "uClibc Options" + +config BR2_PACKAGE_UCLIBC + bool + default y + select BR2_PACKAGE_LINUX_HEADERS + +config BR2_UCLIBC_CONFIG + string "uClibc configuration file to use?" + default "package/uclibc/uClibc-ng.config" + help + Some people may wish to use their own modified uClibc + configuration file and will specify their config file + location with this option. See also docs/README in this + package. If unsure, use the default. + +config BR2_UCLIBC_CONFIG_FRAGMENT_FILES + string "Additional uClibc configuration fragment files" + help + A space-separated list of configuration fragment files, that + will be merged to the main uClibc configuration file. + +config BR2_TOOLCHAIN_BUILDROOT_WCHAR + bool "Enable WCHAR support" + select BR2_USE_WCHAR + help + Enable this option if you want your toolchain to support + wide characters (i.e characters longer than 8 bits, needed + for locale support). + +config BR2_TOOLCHAIN_BUILDROOT_LOCALE + bool "Enable toolchain locale/i18n support" + select BR2_TOOLCHAIN_BUILDROOT_WCHAR + select BR2_ENABLE_LOCALE + select BR2_NEEDS_HOST_UTF8_LOCALE + help + Enable this option if you want your toolchain to support + localization and internationalization. + +choice + prompt "Thread library implementation" + help + Use this option to select the thread library implementation + that should be used in your toolchain. + +config BR2_PTHREADS_NATIVE + bool "Native POSIX Threading (NPTL)" + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + +config BR2_PTHREADS + bool "linuxthreads" + depends on BR2_bfin || BR2_m68k || BR2_microblaze || BR2_or1k || BR2_arm || BR2_armeb || BR2_xtensa + select BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PTHREADS_NONE + bool "none" + +endchoice + +config BR2_PTHREAD_DEBUG + bool "Thread library debugging" + depends on BR2_PTHREADS || BR2_PTHREADS_NATIVE + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + help + Build the thread library with debugging enabled. + +config BR2_TOOLCHAIN_BUILDROOT_USE_SSP + bool "Enable stack protection support" + select BR2_TOOLCHAIN_HAS_SSP + help + Enable stack smashing protection support using GCCs + -fstack-protector-all option in uClibc. + + See + http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt + for details. + +config BR2_UCLIBC_INSTALL_UTILS + bool "Compile and install uClibc utilities" + default y + help + Enabling this option will compile and install the getconf, + ldconfig and ldd uClibc utilities for the target. + + You can save ~32 KiB in target space by disabling them since + they're normally not needed. + +# Mapping from the Buildroot architecture configuration options to the +# uClibc architecture names. +config BR2_UCLIBC_TARGET_ARCH + string + default "arc" if BR2_arcle || BR2_arceb + default "arm" if BR2_arm || BR2_armeb + default "bfin" if BR2_bfin + default "m68k" if BR2_m68k + default "microblaze" if BR2_microblaze + default "mips" if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default "or1k" if BR2_or1k + default "powerpc" if BR2_powerpc + default "sh" if BR2_sh + default "sparc" if BR2_sparc + default "xtensa" if BR2_xtensa + default "i386" if BR2_i386 + default "x86_64" if BR2_x86_64 + +config BR2_UCLIBC_ARC_TYPE + string + default "ARC_CPU_700" if BR2_arc750d + default "ARC_CPU_700" if BR2_arc770d + default "ARC_CPU_HS" if BR2_archs38 + depends on BR2_UCLIBC_TARGET_ARCH = "arc" + +config BR2_UCLIBC_MIPS_ABI + string + default "O32" if BR2_MIPS_OABI32 + default "N32" if BR2_MIPS_NABI32 + default "N64" if BR2_MIPS_NABI64 + depends on BR2_UCLIBC_TARGET_ARCH = "mips" + +config BR2_UCLIBC_MIPS_NAN + string + default "LEGACY" if BR2_MIPS_NAN_LEGACY + default "2008" if BR2_MIPS_NAN_2008 + depends on BR2_UCLIBC_TARGET_ARCH = "mips" + +config BR2_UCLIBC_SH_TYPE + string + default "SH2A" if BR2_sh2a + default "SH4" if BR2_sh4 || BR2_sh4eb + depends on BR2_UCLIBC_TARGET_ARCH = "sh" + +config BR2_UCLIBC_SPARC_TYPE + string + default "V7" if BR2_sparc_v7 || BR2_sparc_sparchfleon || BR2_sparc_sparcsfleon + default "V8" if BR2_sparc_v8 || BR2_sparc_sparchfleonv8 || BR2_sparc_sparcsfleonv8 + depends on BR2_UCLIBC_TARGET_ARCH = "sparc" + +config BR2_UCLIBC_POWERPC_TYPE + string + default "CLASSIC" if !BR2_powerpc_8540 && !BR2_powerpc_8548 + default "E500" if BR2_powerpc_8540 || BR2_powerpc_8548 + depends on BR2_UCLIBC_TARGET_ARCH = "powerpc" + +config BR2_UCLIBC_X86_TYPE + string + default "486" if BR2_x86_i486 + default "586" if BR2_x86_i586 + default "586MMX" if BR2_x86_pentium_mmx + default "686" if BR2_x86_i686 || BR2_x86_pentiumpro + default "PENTIUMII" if BR2_x86_pentium2 + default "PENTIUMIII" if BR2_x86_pentium3 + default "PENTIUM4" if BR2_x86_pentium4 || BR2_x86_pentium_m || \ + BR2_x86_nocona || BR2_x86_core2 || BR2_x86_corei7 + depends on BR2_UCLIBC_TARGET_ARCH = "i386" + +endif # BR2_TOOLCHAIN_BUILDROOT_UCLIBC diff --git a/buildroot/package/uclibc/uClibc-ng.config b/buildroot/package/uclibc/uClibc-ng.config new file mode 100644 index 0000000..5beb2bd --- /dev/null +++ b/buildroot/package/uclibc/uClibc-ng.config @@ -0,0 +1,42 @@ +DO_C99_MATH=y +DO_XSI_MATH=y +KERNEL_HEADERS="/usr/src/linux/include" +# LDSO_CACHE_SUPPORT is not set +# UCLIBC_STATIC_LDCONFIG is not set +LDSO_RUNPATH=y +LDSO_RUNPATH_OF_EXECUTABLE=y +UCLIBC_HAS_UTMPX=y +UCLIBC_HAS_UTMP=y +UCLIBC_SUSV2_LEGACY=y +UCLIBC_SUSV3_LEGACY=y +UCLIBC_HAS_CONTEXT_FUNCS=y +UCLIBC_SUSV4_LEGACY=y +UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y +UCLIBC_HAS_GETPT=y +UCLIBC_HAS_LIBUTIL=y +UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y +UCLIBC_HAS_SHA256_CRYPT_IMPL=y +UCLIBC_HAS_SHA512_CRYPT_IMPL=y +UCLIBC_USE_NETLINK=y +UCLIBC_SUPPORT_AI_ADDRCONFIG=y +UCLIBC_HAS_RESOLVER_SUPPORT=y +UCLIBC_HAS_LIBRESOLV_STUB=y +UCLIBC_HAS_LIBNSL_STUB=y +UCLIBC_HAS_CTYPE_CHECKED=y +UCLIBC_HAS_LIBINTL=y +UCLIBC_HAS_HEXADECIMAL_FLOATS=y +UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y +UCLIBC_HAS_STDIO_GETC_MACRO=y +UCLIBC_HAS_STDIO_PUTC_MACRO=y +UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y +UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y +UCLIBC_HAS_PRINTF_M_SPEC=y +UCLIBC_HAS_WORDEXP=y +UCLIBC_HAS_NFTW=y +UCLIBC_HAS_FTW=y +UCLIBC_HAS_GNU_GLOB=y +RUNTIME_PREFIX="/" +DEVEL_PREFIX="/usr/" +UCLIBC_HAS_SSP=y +UCLIBC_BUILD_NOW=y +# DOSTRIP is not set diff --git a/buildroot/package/uclibc/uclibc.hash b/buildroot/package/uclibc/uclibc.hash new file mode 100644 index 0000000..0a15683 --- /dev/null +++ b/buildroot/package/uclibc/uclibc.hash @@ -0,0 +1,2 @@ +# From https://uclibc-ng.org/ +sha256 a1504ddc34a29cc9bfd1f5a7419c4b63bb510d9e2faed81618d1b596ceb0a5a9 uClibc-ng-1.0.28.tar.xz diff --git a/buildroot/package/uclibc/uclibc.mk b/buildroot/package/uclibc/uclibc.mk new file mode 100644 index 0000000..c5b0c6b --- /dev/null +++ b/buildroot/package/uclibc/uclibc.mk @@ -0,0 +1,481 @@ +################################################################################ +# +# uclibc +# +################################################################################ + +UCLIBC_VERSION = 1.0.28 +UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz +UCLIBC_SITE = http://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) +UCLIBC_LICENSE = LGPL-2.1+ +UCLIBC_LICENSE_FILES = COPYING.LIB +UCLIBC_INSTALL_STAGING = YES + +define UCLIBC_HELP_CMDS + @echo ' uclibc-menuconfig - Run uClibc menuconfig' +endef + +# uclibc is part of the toolchain so disable the toolchain dependency +UCLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO + +# Before uClibc is configured, we must have the first stage +# cross-compiler and the kernel headers +UCLIBC_DEPENDENCIES = host-gcc-initial linux-headers + +# specifying UCLIBC_CONFIG_FILE on the command-line overrides the .config +# setting. +ifndef UCLIBC_CONFIG_FILE +UCLIBC_CONFIG_FILE = $(call qstrip,$(BR2_UCLIBC_CONFIG)) +endif + +UCLIBC_KCONFIG_FILE = $(UCLIBC_CONFIG_FILE) +UCLIBC_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_UCLIBC_CONFIG_FRAGMENT_FILES)) + +UCLIBC_KCONFIG_OPTS = \ + $(UCLIBC_MAKE_FLAGS) \ + PREFIX=$(STAGING_DIR) \ + DEVEL_PREFIX=/usr/ \ + RUNTIME_PREFIX=$(STAGING_DIR)/ + +UCLIBC_TARGET_ARCH = $(call qstrip,$(BR2_UCLIBC_TARGET_ARCH)) + +UCLIBC_GENERATE_LOCALES = $(call qstrip,$(BR2_GENERATE_LOCALE)) + +ifeq ($(UCLIBC_GENERATE_LOCALES),) +# We need at least one locale +UCLIBC_LOCALES = en_US +else +# Strip out the encoding part of locale names, if any +UCLIBC_LOCALES = \ + $(foreach locale,$(UCLIBC_GENERATE_LOCALES),\ + $(firstword $(subst .,$(space),$(locale)))) +endif + +# noMMU binary formats +ifeq ($(BR2_BINFMT_FDPIC),y) +define UCLIBC_BINFMT_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config) +endef +endif +ifeq ($(BR2_BINFMT_FLAT_ONE),y) +define UCLIBC_BINFMT_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config) +endef +endif +ifeq ($(BR2_BINFMT_FLAT_SEP_DATA),y) +define UCLIBC_BINFMT_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config) +endef +endif +ifeq ($(BR2_BINFMT_FLAT_SHARED),y) +define UCLIBC_BINFMT_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config) +endef +endif + +# +# ARC definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),arc) +UCLIBC_ARC_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_ARC_TYPE)) +define UCLIBC_ARC_TYPE_CONFIG + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARC_TYPE),$(@D)/.config) +endef + +UCLIBC_ARC_PAGE_SIZE = CONFIG_ARC_PAGE_SIZE_$(call qstrip,$(BR2_ARC_PAGE_SIZE)) +define UCLIBC_ARC_PAGE_SIZE_CONFIG + $(SED) '/CONFIG_ARC_PAGE_SIZE_*/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARC_PAGE_SIZE),$(@D)/.config) +endef + +ifeq ($(BR2_ARC_ATOMIC_EXT),) +define UCLIBC_ARC_ATOMICS_CONFIG + $(call KCONFIG_DISABLE_OPT,CONFIG_ARC_HAS_ATOMICS,$(@D)/.config) +endef +endif + +endif # arc + +# +# ARM definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),arm) +define UCLIBC_ARM_ABI_CONFIG + $(SED) '/CONFIG_ARM_.ABI/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,CONFIG_ARM_EABI,$(@D)/.config) +endef + +ifeq ($(BR2_BINFMT_FLAT),y) +define UCLIBC_ARM_BINFMT_FLAT + $(call KCONFIG_DISABLE_OPT,DOPIC,$(@D)/.config) +endef +endif + +# context functions are written with ARM instructions. Therefore, if +# we are using a Thumb2-only platform (i.e, Cortex-M), they must be +# disabled. Thumb1 platforms are not a problem, since they all also +# support the ARM instructions. +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB2):$(BR2_ARM_CPU_HAS_ARM),y:) +define UCLIBC_ARM_NO_CONTEXT_FUNCS + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_CONTEXT_FUNCS,$(@D)/.config) +endef +endif + +endif # arm + +# +# m68k/coldfire definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),m68k) + +# disable DOPIC for flat without separate data +ifeq ($(BR2_BINFMT_FLAT_ONE),y) +define UCLIBC_M68K_BINFMT_FLAT + $(call KCONFIG_DISABLE_OPT,DOPIC,$(@D)/.config) +endef +endif + +endif # m68k/coldfire + +# +# MIPS definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),mips) +UCLIBC_MIPS_ABI = CONFIG_MIPS_$(call qstrip,$(BR2_UCLIBC_MIPS_ABI))_ABI +define UCLIBC_MIPS_ABI_CONFIG + $(SED) '/CONFIG_MIPS_[NO].._ABI/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_ABI),$(@D)/.config) +endef + +UCLIBC_MIPS_NAN = CONFIG_MIPS_NAN_$(call qstrip,$(BR2_UCLIBC_MIPS_NAN)) +define UCLIBC_MIPS_NAN_CONFIG + $(SED) '/CONFIG_MIPS_NAN_.*/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_NAN),$(@D)/.config) +endef +endif # mips + +# +# SH definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),sh) +UCLIBC_SH_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_SH_TYPE)) +define UCLIBC_SH_TYPE_CONFIG + $(SED) '/CONFIG_SH[234A]*/d' $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_SH_TYPE),$(@D)/.config) +endef +endif # sh + +# +# SPARC definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),sparc) +UCLIBC_SPARC_TYPE = CONFIG_SPARC_$(call qstrip,$(BR2_UCLIBC_SPARC_TYPE)) +define UCLIBC_SPARC_TYPE_CONFIG + $(SED) 's/^\(CONFIG_[^_]*[_]*SPARC[^=]*\)=.*/# \1 is not set/g' \ + $(@D)/.config + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_SPARC_TYPE),$(@D)/.config) +endef +endif # sparc + +# +# PowerPC definitions +# + +ifeq ($(UCLIBC_TARGET_ARCH),powerpc) +UCLIBC_POWERPC_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_POWERPC_TYPE)) +define UCLIBC_POWERPC_TYPE_CONFIG + $(call KCONFIG_DISABLE_OPT,CONFIG_GENERIC,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,CONFIG_E500,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_POWERPC_TYPE),$(@D)/.config) +endef +endif # powerpc + +# +# x86 definitions +# +ifeq ($(UCLIBC_TARGET_ARCH),i386) +UCLIBC_X86_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_X86_TYPE)) +define UCLIBC_X86_TYPE_CONFIG + $(call KCONFIG_ENABLE_OPT,$(UCLIBC_X86_TYPE),$(@D)/.config) +endef +endif + +# +# Debug +# +ifeq ($(BR2_ENABLE_DEBUG),y) +define UCLIBC_DEBUG_CONFIG + $(call KCONFIG_ENABLE_OPT,DODEBUG,$(@D)/.config) +endef +endif + +# +# Endianness +# + +ifeq ($(call qstrip,$(BR2_ENDIAN)),BIG) +define UCLIBC_ENDIAN_CONFIG + $(call KCONFIG_ENABLE_OPT,ARCH_BIG_ENDIAN,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,ARCH_WANTS_BIG_ENDIAN,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,ARCH_LITTLE_ENDIAN,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,ARCH_WANTS_LITTLE_ENDIAN,$(@D)/.config) +endef +else +define UCLIBC_ENDIAN_CONFIG + $(call KCONFIG_ENABLE_OPT,ARCH_LITTLE_ENDIAN,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,ARCH_WANTS_LITTLE_ENDIAN,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,ARCH_BIG_ENDIAN,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,ARCH_WANTS_BIG_ENDIAN,$(@D)/.config) +endef +endif + +# +# MMU +# + +ifeq ($(BR2_USE_MMU),y) +define UCLIBC_MMU_CONFIG + $(call KCONFIG_ENABLE_OPT,ARCH_HAS_MMU,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,ARCH_USE_MMU,$(@D)/.config) +endef +else +define UCLIBC_MMU_CONFIG + $(call KCONFIG_DISABLE_OPT,ARCH_HAS_MMU,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,ARCH_USE_MMU,$(@D)/.config) +endef +endif + +# +# IPv6 +# + +UCLIBC_IPV6_CONFIG = $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_IPV6,$(@D)/.config) + +# +# soft-float +# + +ifeq ($(BR2_SOFT_FLOAT),y) +define UCLIBC_FLOAT_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_FPU,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FLOATS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,DO_C99_MATH,$(@D)/.config) +endef +else +define UCLIBC_FLOAT_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FPU,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FLOATS,$(@D)/.config) +endef +endif + +# +# SSP +# +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_USE_SSP),y) +define UCLIBC_SSP_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_SSP,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_BUILD_SSP,$(@D)/.config) +endef +else +define UCLIBC_SSP_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_SSP,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_BUILD_SSP,$(@D)/.config) +endef +endif + +# +# Threads +# +ifeq ($(BR2_PTHREADS_NONE),y) +define UCLIBC_THREAD_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LINUXTHREADS,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config) +endef +else ifeq ($(BR2_PTHREADS),y) +define UCLIBC_THREAD_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LINUXTHREADS,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config) +endef +else ifeq ($(BR2_PTHREADS_NATIVE),y) +define UCLIBC_THREAD_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LINUXTHREADS,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config) +endef +endif + +# +# Thread debug +# + +ifeq ($(BR2_PTHREAD_DEBUG),y) +UCLIBC_THREAD_DEBUG_CONFIG = $(call KCONFIG_ENABLE_OPT,PTHREADS_DEBUG_SUPPORT,$(@D)/.config) +else +UCLIBC_THREAD_DEBUG_CONFIG = $(call KCONFIG_DISABLE_OPT,PTHREADS_DEBUG_SUPPORT,$(@D)/.config) +endif + +# +# Locale +# + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_LOCALE),y) +define UCLIBC_LOCALE_CONFIG + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LOCALE,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_BUILD_ALL_LOCALE,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_BUILD_MINIMAL_LOCALE,$(@D)/.config) + $(call KCONFIG_SET_OPT,UCLIBC_BUILD_MINIMAL_LOCALES,"$(UCLIBC_LOCALES)",$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_PREGENERATED_LOCALE_DATA,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,DOWNLOAD_PREGENERATED_LOCALE_DATA,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_XLOCALE,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_GLIBC_DIGIT_GROUPING,$(@D)/.config) +endef +else +define UCLIBC_LOCALE_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LOCALE,$(@D)/.config) +endef +endif + +# +# wchar +# + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y) +UCLIBC_WCHAR_CONFIG = $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_WCHAR,$(@D)/.config) +else +UCLIBC_WCHAR_CONFIG = $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_WCHAR,$(@D)/.config) +endif + +# +# static/shared libs +# + +ifeq ($(BR2_STATIC_LIBS),y) +UCLIBC_SHARED_LIBS_CONFIG = $(call KCONFIG_DISABLE_OPT,HAVE_SHARED,$(@D)/.config) +else +UCLIBC_SHARED_LIBS_CONFIG = $(call KCONFIG_ENABLE_OPT,HAVE_SHARED,$(@D)/.config) +endif + +# +# Commands +# + +UCLIBC_MAKE_FLAGS = \ + ARCH="$(UCLIBC_TARGET_ARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + UCLIBC_EXTRA_CFLAGS="$(UCLIBC_EXTRA_CFLAGS) $(TARGET_ABI)" \ + HOSTCC="$(HOSTCC)" + +define UCLIBC_KCONFIG_FIXUP_CMDS + $(call KCONFIG_SET_OPT,CROSS_COMPILER_PREFIX,"$(TARGET_CROSS)",$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,TARGET_$(UCLIBC_TARGET_ARCH),$(@D)/.config) + $(call KCONFIG_SET_OPT,TARGET_ARCH,"$(UCLIBC_TARGET_ARCH)",$(@D)/.config) + $(call KCONFIG_SET_OPT,KERNEL_HEADERS,"$(LINUX_HEADERS_DIR)/usr/include",$(@D)/.config) + $(call KCONFIG_SET_OPT,RUNTIME_PREFIX,"/",$(@D)/.config) + $(call KCONFIG_SET_OPT,DEVEL_PREFIX,"/usr",$(@D)/.config) + $(call KCONFIG_SET_OPT,SHARED_LIB_LOADER_PREFIX,"/lib",$(@D)/.config) + $(UCLIBC_MMU_CONFIG) + $(UCLIBC_BINFMT_CONFIG) + $(UCLIBC_ARC_TYPE_CONFIG) + $(UCLIBC_ARC_PAGE_SIZE_CONFIG) + $(UCLIBC_ARC_ATOMICS_CONFIG) + $(UCLIBC_ARM_ABI_CONFIG) + $(UCLIBC_ARM_BINFMT_FLAT) + $(UCLIBC_ARM_NO_CONTEXT_FUNCS) + $(UCLIBC_M68K_BINFMT_FLAT) + $(UCLIBC_MIPS_ABI_CONFIG) + $(UCLIBC_MIPS_NAN_CONFIG) + $(UCLIBC_SH_TYPE_CONFIG) + $(UCLIBC_SPARC_TYPE_CONFIG) + $(UCLIBC_POWERPC_TYPE_CONFIG) + $(UCLIBC_X86_TYPE_CONFIG) + $(UCLIBC_DEBUG_CONFIG) + $(UCLIBC_ENDIAN_CONFIG) + $(UCLIBC_LARGEFILE_CONFIG) + $(UCLIBC_IPV6_CONFIG) + $(UCLIBC_FLOAT_CONFIG) + $(UCLIBC_SSP_CONFIG) + $(UCLIBC_THREAD_CONFIG) + $(UCLIBC_THREAD_DEBUG_CONFIG) + $(UCLIBC_LOCALE_CONFIG) + $(UCLIBC_WCHAR_CONFIG) + $(UCLIBC_SHARED_LIBS_CONFIG) +endef + +define UCLIBC_BUILD_CMDS + $(MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS) headers + $(MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS) + $(MAKE) -C $(@D)/utils \ + PREFIX=$(HOST_DIR) \ + HOSTCC="$(HOSTCC)" hostutils +endef + +ifeq ($(BR2_UCLIBC_INSTALL_UTILS),y) +define UCLIBC_INSTALL_UTILS_TARGET + $(MAKE1) -C $(@D) \ + CC="$(TARGET_CC)" CPP="$(TARGET_CPP)" LD="$(TARGET_LD)" \ + ARCH="$(UCLIBC_TARGET_ARCH)" \ + PREFIX=$(TARGET_DIR) \ + utils install_utils +endef +endif + +define UCLIBC_INSTALL_TARGET_CMDS + $(MAKE1) -C $(@D) \ + $(UCLIBC_MAKE_FLAGS) \ + PREFIX=$(TARGET_DIR) \ + DEVEL_PREFIX=/usr/ \ + RUNTIME_PREFIX=/ \ + install_runtime + $(UCLIBC_INSTALL_UTILS_TARGET) + $(UCLIBC_INSTALL_LDSO_SYMLINKS) +endef + +# STATIC has no ld* tools, only getconf +ifeq ($(BR2_STATIC_LIBS),) +define UCLIBC_INSTALL_UTILS_STAGING + $(INSTALL) -D -m 0755 $(@D)/utils/ldd.host $(HOST_DIR)/bin/ldd + ln -sf ldd $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-ldd + $(INSTALL) -D -m 0755 $(@D)/utils/ldconfig.host $(HOST_DIR)/bin/ldconfig + ln -sf ldconfig $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-ldconfig +endef +endif + +define UCLIBC_INSTALL_STAGING_CMDS + $(MAKE1) -C $(@D) \ + $(UCLIBC_MAKE_FLAGS) \ + PREFIX=$(STAGING_DIR) \ + DEVEL_PREFIX=/usr/ \ + RUNTIME_PREFIX=/ \ + install_runtime install_dev + $(UCLIBC_INSTALL_UTILS_STAGING) +endef + +# Checks to give errors that the user can understand +# Must be before we call to kconfig-package +ifeq ($(BR2_PACKAGE_UCLIBC)$(BR_BUILDING),yy) +ifeq ($(call qstrip,$(BR2_UCLIBC_CONFIG)),) +$(error No uClibc configuration file specified, check your BR2_UCLIBC_CONFIG setting) +endif +endif + +$(eval $(kconfig-package)) diff --git a/buildroot/package/udev/Config.in b/buildroot/package/udev/Config.in new file mode 100644 index 0000000..814a625 --- /dev/null +++ b/buildroot/package/udev/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_HAS_UDEV + bool + +config BR2_PACKAGE_PROVIDES_UDEV + string + depends on BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/udev/udev.mk b/buildroot/package/udev/udev.mk new file mode 100644 index 0000000..cc4a6e3 --- /dev/null +++ b/buildroot/package/udev/udev.mk @@ -0,0 +1,7 @@ +################################################################################ +# +# udev +# +################################################################################ + +$(eval $(virtual-package)) diff --git a/buildroot/package/udisks/0001-fix-build-with-newer-glibc-versions.patch b/buildroot/package/udisks/0001-fix-build-with-newer-glibc-versions.patch new file mode 100644 index 0000000..336fc44 --- /dev/null +++ b/buildroot/package/udisks/0001-fix-build-with-newer-glibc-versions.patch @@ -0,0 +1,29 @@ +Fix build with newer glibc versions + +This patch has been backported from upstream: + +http://cgit.freedesktop.org/udisks/commit/?h=udisks1&id=9829152b12a8924d2e091a00133ed1a3a7ba75c0 + +Signed-off-by: Vicente Olivert Riera + +From 9829152b12a8924d2e091a00133ed1a3a7ba75c0 Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev +Date: Fri, 29 May 2015 21:09:39 -0400 +Subject: fix build with newer glibc versions + +https://bugs.freedesktop.org/show_bug.cgi?id=90778 + +diff --git a/src/helpers/job-drive-detach.c b/src/helpers/job-drive-detach.c +index eeafcab..d122a1f 100644 +--- a/src/helpers/job-drive-detach.c ++++ b/src/helpers/job-drive-detach.c +@@ -18,6 +18,7 @@ + * + */ + ++#include + #include + #include + #include +-- +cgit v0.10.2 diff --git a/buildroot/package/udisks/0002-Fix-systemd-service-file.patch b/buildroot/package/udisks/0002-Fix-systemd-service-file.patch new file mode 100644 index 0000000..ea347ae --- /dev/null +++ b/buildroot/package/udisks/0002-Fix-systemd-service-file.patch @@ -0,0 +1,33 @@ +From bf8b4362cef24a6f747e4329305a4939c8f585d1 Mon Sep 17 00:00:00 2001 +From: David King +Date: Thu, 2 Jul 2015 13:49:22 +0100 +Subject: [PATCH] Fix systemd service file + +udisks-daemon is installed to $(libexecdir), not $(prefix)/lib/udisks. + +https://bugzilla.redhat.com/show_bug.cgi?id=1238664 +https://bugs.freedesktop.org/show_bug.cgi?id=91191 + +[This patch has been backported from upstream: +https://cgit.freedesktop.org/udisks/commit/?h=udisks1&id=bf8b4362cef24a6f747e4329305a4939c8f585d1] +Signed-off-by: Pieterjan Camerlynck +--- + data/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/Makefile.am b/data/Makefile.am +index 411ea0f..08af5f4 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -31,7 +31,7 @@ systemdservicedir = $(systemdsystemunitdir) + systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) + + $(systemdservice_DATA): $(systemdservice_in_files) Makefile +- @sed -e "s|\@libexecdir\@|$(prefix)/lib/udisks|" $< > $@ ++ @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@ + endif + + udevrulesdir = $(slashlibdir)/udev/rules.d +-- +2.7.4 + diff --git a/buildroot/package/udisks/Config.in b/buildroot/package/udisks/Config.in new file mode 100644 index 0000000..6573cda --- /dev/null +++ b/buildroot/package/udisks/Config.in @@ -0,0 +1,46 @@ +config BR2_PACKAGE_UDISKS + bool "udisks" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus-glib -> glib2 + depends on BR2_USE_MMU # lvm2 + depends on !BR2_STATIC_LIBS # lvm2 + depends on !BR2_TOOLCHAIN_USES_MUSL # lvm2 + depends on BR2_USE_WCHAR # dbus-glib -> glib2 + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_SG3_UTILS + select BR2_PACKAGE_POLKIT + select BR2_PACKAGE_PARTED + select BR2_PACKAGE_LVM2 + select BR2_PACKAGE_LIBATASMART + select BR2_PACKAGE_LIBGUDEV + help + The udisks project provides + + o A storage daemon that implements well-defined D-Bus + interfaces that can be used to query and manipulate + storage devices. + + o a command-line tool, udisks(1), that can be used to query + and use the daemon + + http://www.freedesktop.org/wiki/Software/udisks + +if BR2_PACKAGE_UDISKS + +config BR2_PACKAGE_UDISKS_LVM2 + bool "lvm2 support" + select BR2_PACKAGE_LVM2_APP_LIBRARY + help + Enable LVM2 support + +endif + +comment "udisks needs udev /dev management" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV + +comment "udisks needs a glibc or uClibc toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/udisks/udisks.hash b/buildroot/package/udisks/udisks.hash new file mode 100644 index 0000000..7ad4326 --- /dev/null +++ b/buildroot/package/udisks/udisks.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 f2ec82eb0ea7e01dc299b5b29b3c18cdf861236ec43dcff66b3552b4b31c6f71 udisks-1.0.5.tar.gz diff --git a/buildroot/package/udisks/udisks.mk b/buildroot/package/udisks/udisks.mk new file mode 100644 index 0000000..fe8932a --- /dev/null +++ b/buildroot/package/udisks/udisks.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# udisks +# +################################################################################ + +UDISKS_VERSION = 1.0.5 +UDISKS_SITE = http://hal.freedesktop.org/releases +UDISKS_LICENSE = GPL-2.0+ +UDISKS_LICENSE_FILES = COPYING +# For 0002-Fix-systemd-service-file.patch +UDISKS_AUTORECONF = YES + +UDISKS_DEPENDENCIES = \ + sg3_utils \ + host-pkgconf \ + udev \ + dbus \ + dbus-glib \ + polkit \ + parted \ + lvm2 \ + libatasmart \ + libgudev + +UDISKS_CONF_OPTS = --disable-remote-access --disable-man-pages + +ifeq ($(BR2_PACKAGE_UDISKS_LVM2),y) +UDISKS_CONF_OPTS += --enable-lvm2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/udpcast/0001-select-h.patch b/buildroot/package/udpcast/0001-select-h.patch new file mode 100644 index 0000000..9a8cfc9 --- /dev/null +++ b/buildroot/package/udpcast/0001-select-h.patch @@ -0,0 +1,11 @@ +--- udpcast-20120424/console.h 2005-12-22 22:59:18.000000000 +0000 ++++ udpcast-20120424.mod/console.h 2013-05-22 22:22:19.835474140 +0100 +@@ -6,6 +6,8 @@ + #include + #endif /* __MINGW32__ */ + ++#include ++ + #define prepareConsole udpc_prepareConsole + #define getConsoleFd udpc_getConsoleFd + #define restoreConsole udpc_restoreConsole diff --git a/buildroot/package/udpcast/Config.in b/buildroot/package/udpcast/Config.in new file mode 100644 index 0000000..ef94b30 --- /dev/null +++ b/buildroot/package/udpcast/Config.in @@ -0,0 +1,27 @@ +comment "udpcast needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_UDPCAST + bool "udpcast" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + help + A multicast protocol implementation which happens to + be very handy for imaging drives over the network. + + http://www.udpcast.linux.lu/ + +if BR2_PACKAGE_UDPCAST + +config BR2_PACKAGE_UDPCAST_SENDER + bool "sender" + help + The udpcast transmitter. + +config BR2_PACKAGE_UDPCAST_RECEIVER + bool "receiver" + help + The udpcast receiver. + +endif diff --git a/buildroot/package/udpcast/udpcast.hash b/buildroot/package/udpcast/udpcast.hash new file mode 100644 index 0000000..133e1db --- /dev/null +++ b/buildroot/package/udpcast/udpcast.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 ce9090ef80b6035a744a9b5ac335e61c99baa92c39ff53277266fbfcb836445a udpcast-20120424.tar.gz diff --git a/buildroot/package/udpcast/udpcast.mk b/buildroot/package/udpcast/udpcast.mk new file mode 100644 index 0000000..e9116d2 --- /dev/null +++ b/buildroot/package/udpcast/udpcast.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# udpcast +# +################################################################################ + +UDPCAST_VERSION = 20120424 +UDPCAST_SITE = http://www.udpcast.linux.lu/download +UDPCAST_DEPENDENCIES = host-m4 +UDPCAST_LICENSE = BSD-2-Clause, GPL-2.0+ +UDPCAST_LICENSE_FILES = COPYING + +define UDPCAST_REMOVE_UDP_SENDER + rm -f $(TARGET_DIR)/usr/sbin/udp-sender + rm -f $(TARGET_DIR)/usr/sbin/udp-sender.1 +endef + +ifneq ($(BR2_PACKAGE_UDPCAST_SENDER),y) +UDPCAST_POST_INSTALL_TARGET_HOOKS += UDPCAST_REMOVE_UDP_SENDER +endif + +define UDPCAST_REMOVE_UDP_RECEIVER + rm -f $(TARGET_DIR)/usr/sbin/udp-receiver + rm -f $(TARGET_DIR)/usr/sbin/udp-receiver.1 +endef + +ifneq ($(BR2_PACKAGE_UDPCAST_RECEIVER),y) +UDPCAST_POST_INSTALL_TARGET_HOOKS += UDPCAST_REMOVE_UDP_RECEIVER +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/udpxy/Config.in b/buildroot/package/udpxy/Config.in new file mode 100644 index 0000000..f442a2f --- /dev/null +++ b/buildroot/package/udpxy/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_UDPXY + bool "udpxy" + depends on BR2_USE_MMU + help + udpxy is a UDP-to-HTTP multicast traffic relay daemon: it + forwards UDP traffic from a given multicast subscription to + the requesting HTTP client. + + http://www.udpxy.com/ diff --git a/buildroot/package/udpxy/udpxy.hash b/buildroot/package/udpxy/udpxy.hash new file mode 100644 index 0000000..4042a41 --- /dev/null +++ b/buildroot/package/udpxy/udpxy.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 6ce33b1d14a1aeab4bd2566aca112e41943df4d002a7678d9a715108e6b714bd udpxy.1.0.23-9-prod.tar.gz diff --git a/buildroot/package/udpxy/udpxy.mk b/buildroot/package/udpxy/udpxy.mk new file mode 100644 index 0000000..2246794 --- /dev/null +++ b/buildroot/package/udpxy/udpxy.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# udpxy +# +################################################################################ + +UDPXY_VERSION = 1.0.23-9-prod +UDPXY_SOURCE = udpxy.$(UDPXY_VERSION).tar.gz +UDPXY_SITE = http://www.udpxy.com/download/1_23 +UDPXY_LICENSE = GPL-3.0+ +UDPXY_LICENSE_FILES = README + +define UDPXY_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define UDPXY_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr \ + -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/uemacs/01-clear-ixon-termios-flag.patch b/buildroot/package/uemacs/01-clear-ixon-termios-flag.patch new file mode 100644 index 0000000..dde7642 --- /dev/null +++ b/buildroot/package/uemacs/01-clear-ixon-termios-flag.patch @@ -0,0 +1,29 @@ +[PATCH] clear ixon termios flag on initialization + +Otherwise ctrl-S/Q gets intercepted by the tty layer instead of +handled by uemacs. + +Signed-off-by: Peter Korsgaard +diff --git a/posix.c b/posix.c +index 97edd9f052b1..352c4712b689 100644 +--- a/posix.c ++++ b/posix.c +@@ -53,17 +53,17 @@ void ttopen(void) + /* + * base new settings on old ones - don't change things + * we don't know about + */ + ntermios = otermios; + + /* raw CR/NL etc input handling, but keep ISTRIP if we're on a 7-bit line */ + ntermios.c_iflag &= ~(IGNBRK | BRKINT | IGNPAR | PARMRK +- | INPCK | INLCR | IGNCR | ICRNL); ++ | INPCK | INLCR | IGNCR | ICRNL | IXON); + + /* raw CR/NR etc output handling */ + ntermios.c_oflag &= + ~(OPOST | ONLCR | OLCUC | OCRNL | ONOCR | ONLRET); + + /* No signal handling, no echo etc */ + ntermios.c_lflag &= ~(ISIG | ICANON | XCASE | ECHO | ECHOE | ECHOK + | ECHONL | NOFLSH | TOSTOP | ECHOCTL | diff --git a/buildroot/package/uemacs/02-skip-xcase-termios-flag.patch b/buildroot/package/uemacs/02-skip-xcase-termios-flag.patch new file mode 100644 index 0000000..2cc5357 --- /dev/null +++ b/buildroot/package/uemacs/02-skip-xcase-termios-flag.patch @@ -0,0 +1,16 @@ +From termios(3): "XCASE (not in POSIX; not supported under Linux)". +musl does not define it, and even if defined it's a no-op. + +Signed-off-by: Alex Suykov + +--- a/posix.c ++++ b/posix.c +@@ -65,7 +65,7 @@ + ~(OPOST | ONLCR | OLCUC | OCRNL | ONOCR | ONLRET); + + /* No signal handling, no echo etc */ +- ntermios.c_lflag &= ~(ISIG | ICANON | XCASE | ECHO | ECHOE | ECHOK ++ ntermios.c_lflag &= ~(ISIG | ICANON | ECHO | ECHOE | ECHOK + | ECHONL | NOFLSH | TOSTOP | ECHOCTL | + ECHOPRT | ECHOKE | FLUSHO | PENDIN | IEXTEN); + diff --git a/buildroot/package/uemacs/Config.in b/buildroot/package/uemacs/Config.in new file mode 100644 index 0000000..cfe9805 --- /dev/null +++ b/buildroot/package/uemacs/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_UEMACS + bool "uemacs" + select BR2_PACKAGE_NCURSES + help + A small emacs. + + https://git.kernel.org/cgit/editors/uemacs/uemacs.git/ diff --git a/buildroot/package/uemacs/uemacs.hash b/buildroot/package/uemacs/uemacs.hash new file mode 100644 index 0000000..a88be88 --- /dev/null +++ b/buildroot/package/uemacs/uemacs.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 c6772ccb519f89731ac927c6bd229617fa4a488b966251e9147a03f998c39960 uemacs-8841922689769960fa074fbb053cb8507f2f3ed9.tar.gz diff --git a/buildroot/package/uemacs/uemacs.mk b/buildroot/package/uemacs/uemacs.mk new file mode 100644 index 0000000..19fda12 --- /dev/null +++ b/buildroot/package/uemacs/uemacs.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# uemacs +# +################################################################################ + +UEMACS_VERSION = 8841922689769960fa074fbb053cb8507f2f3ed9 +UEMACS_SITE = $(BR2_KERNEL_MIRROR)/scm/editors/uemacs/uemacs.git +UEMACS_SITE_METHOD = git +UEMACS_DEPENDENCIES = ncurses + +define UEMACS_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + CC="$(TARGET_CC)" DEFINES="-DAUTOCONF -DPOSIX -DUSG" \ + CFLAGS+="$(TARGET_CFLAGS) " LIBS="$(TARGET_CFLAGS) -lncurses" +endef + +define UEMACS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/em $(TARGET_DIR)/usr/bin/em +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/uhttpd/0001-Remove-Werror.patch b/buildroot/package/uhttpd/0001-Remove-Werror.patch new file mode 100644 index 0000000..67028cf --- /dev/null +++ b/buildroot/package/uhttpd/0001-Remove-Werror.patch @@ -0,0 +1,33 @@ +From ac52380eeca27e1e2e7eb5fb9d39059dbe58b919 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 7 Dec 2016 22:48:27 +0100 +Subject: [PATCH] Remove -Werror + +-Werror might cause build failures with newer versions of gcc or C + libraries, not tested by upstream, for example: + + # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" + ^ +cc1: all warnings being treated as errors + +Signed-off-by: Thomas Petazzoni +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7ae8ba4..825342f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -5,7 +5,7 @@ PROJECT(uhttpd C) + INCLUDE (CheckFunctionExists) + + SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") +-ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -Os -Wall -Werror -Wmissing-declarations --std=gnu99 -g3) ++ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64 -Os -Wall -Wmissing-declarations --std=gnu99 -g3) + + OPTION(TLS_SUPPORT "TLS support" ON) + OPTION(LUA_SUPPORT "Lua support" ON) +-- +2.7.4 + diff --git a/buildroot/package/uhttpd/0002-Fix-TCP_FASTOPEN-related-compile-error.patch b/buildroot/package/uhttpd/0002-Fix-TCP_FASTOPEN-related-compile-error.patch new file mode 100644 index 0000000..fb3ff54 --- /dev/null +++ b/buildroot/package/uhttpd/0002-Fix-TCP_FASTOPEN-related-compile-error.patch @@ -0,0 +1,30 @@ +From adbab70d3602d77736781be344cfdc5508cb0600 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 3 Apr 2017 19:22:30 +0200 +Subject: [PATCH] Fix TCP_FASTOPEN related compile error. + +Signed-off-by: Peter Seiderer +--- + listen.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/listen.c b/listen.c +index 2a54888..4dabe34 100644 +--- a/listen.c ++++ b/listen.c +@@ -96,6 +96,12 @@ static void listener_cb(struct uloop_fd *fd, unsigned int events) + uh_block_listener(l); + } + ++#ifdef linux ++#ifndef TCP_FASTOPEN ++#define TCP_FASTOPEN 23 ++#endif ++#endif ++ + void uh_setup_listeners(void) + { + struct listener *l; +-- +2.11.0 + diff --git a/buildroot/package/uhttpd/Config.in b/buildroot/package/uhttpd/Config.in new file mode 100644 index 0000000..8d5d8be --- /dev/null +++ b/buildroot/package/uhttpd/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_UHTTPD + bool "uhttpd" + depends on !BR2_STATIC_LIBS # dlopen() + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBUBOX + select BR2_PACKAGE_JSON_C + help + uHTTPd is a tiny single threaded HTTP server with TLS, CGI + and Lua support. It is intended as a drop-in replacement for + the Busybox HTTP daemon. + + https://wiki.openwrt.org/doc/howto/http.uhttpd + +comment "uhttpd needs a toolchain w/ dynamic library" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/uhttpd/uhttpd.hash b/buildroot/package/uhttpd/uhttpd.hash new file mode 100644 index 0000000..7e09f18 --- /dev/null +++ b/buildroot/package/uhttpd/uhttpd.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9325c95c9bb1c51bf135700a65738884fa9cd548ff8166c8b61fdbf99825cd6d uhttpd-a8bf9c00842224edb394e79909053f7628ee6a82.tar.gz diff --git a/buildroot/package/uhttpd/uhttpd.mk b/buildroot/package/uhttpd/uhttpd.mk new file mode 100644 index 0000000..cc7649d --- /dev/null +++ b/buildroot/package/uhttpd/uhttpd.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# uhttpd +# +################################################################################ + +UHTTPD_VERSION = a8bf9c00842224edb394e79909053f7628ee6a82 +UHTTPD_SITE = http://git.openwrt.org/project/uhttpd.git +UHTTPD_SITE_METHOD = git +UHTTPD_LICENSE = ISC +UHTTPD_LICENSE_FILES = uhttpd.h +UHTTPD_DEPENDENCIES = libubox json-c + +ifeq ($(BR2_PACKAGE_LUA_5_1),y) +UHTTPD_DEPENDENCIES += lua +UHTTPD_CONF_OPTS += -DLUA_SUPPORT=ON +else +UHTTPD_CONF_OPTS += -DLUA_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_USTREAM_SSL),y) +UHTTPD_DEPENDENCIES += ustream-ssl +UHTTPD_CONF_OPTS += -DTLS_SUPPORT=ON +else +UHTTPD_CONF_OPTS += -DTLS_SUPPORT=OFF +endif + +ifeq ($(BR2_PACKAGE_UBUS),y) +UHTTPD_DEPENDENCIES += ubus +UHTTPD_CONF_OPTS += -DUBUS_SUPPORT=ON +else +UHTTPD_CONF_OPTS += -DUBUS_SUPPORT=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/uhubctl/Config.in b/buildroot/package/uhubctl/Config.in new file mode 100644 index 0000000..c000b5a --- /dev/null +++ b/buildroot/package/uhubctl/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_UHUBCTL + bool "uhubctl" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Control USB power per-port on smart USB hubs. + + https://github.com/mvp/uhubctl + +comment "uhubctl needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/uhubctl/uhubctl.hash b/buildroot/package/uhubctl/uhubctl.hash new file mode 100644 index 0000000..6afee90 --- /dev/null +++ b/buildroot/package/uhubctl/uhubctl.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 dfc85571ad86a071bf7a0db7cadf97a870e628777e47176520de6866b4f042b6 uhubctl-047bb1e392efd3e0ea5d5caf351e20761e12cd44.tar.gz diff --git a/buildroot/package/uhubctl/uhubctl.mk b/buildroot/package/uhubctl/uhubctl.mk new file mode 100644 index 0000000..7484500 --- /dev/null +++ b/buildroot/package/uhubctl/uhubctl.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# uhubctl +# +################################################################################ + +UHUBCTL_VERSION = 047bb1e392efd3e0ea5d5caf351e20761e12cd44 +UHUBCTL_SITE = $(call github,mvp,uhubctl,$(UHUBCTL_VERSION)) +UHUBCTL_LICENSE = GPL-2.0 +UHUBCTL_LICENSE_FILES = LICENSE +UHUBCTL_DEPENDENCIES = libusb + +define UHUBCTL_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +define UHUBCTL_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) DESTDIR=$(TARGET_DIR) \ + $(MAKE) -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ulogd/0001-ulogd-Use-dev-null-as-dummy-logfile-when-logging-to-.patch b/buildroot/package/ulogd/0001-ulogd-Use-dev-null-as-dummy-logfile-when-logging-to-.patch new file mode 100644 index 0000000..c7b284a --- /dev/null +++ b/buildroot/package/ulogd/0001-ulogd-Use-dev-null-as-dummy-logfile-when-logging-to-.patch @@ -0,0 +1,70 @@ +From 8a6ddd1cb2b55c234f1a97f7e5d996f24f46b6f8 Mon Sep 17 00:00:00 2001 +From: Felix Janda +Date: Sat, 16 May 2015 17:43:23 +0200 +Subject: [PATCH] ulogd: Use /dev/null as dummy logfile when logging to + syslog + +Fixes compilation error with musl libc: + +ulogd.c:86:13: error: storage size of 'syslog_dummy' isn't known + static FILE syslog_dummy; + +Signed-off-by: Felix Janda +[Rahul Bedarkar: Backported from https://git.netfilter.org/ulogd2/commit/?id=8a6ddd1cb2b55c234f1a97f7e5d996f24f46b6f8] +Signed-off-by: Rahul Bedarkar +--- + src/ulogd.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/ulogd.c b/src/ulogd.c +index e7cde39..958c30a 100644 +--- a/src/ulogd.c ++++ b/src/ulogd.c +@@ -83,7 +83,7 @@ static char *ulogd_logfile = NULL; + static const char *ulogd_configfile = ULOGD_CONFIGFILE; + static const char *ulogd_pidfile = NULL; + static int ulogd_pidfile_fd = -1; +-static FILE syslog_dummy; ++static FILE *syslog_dummy; + + static int info_mode = 0; + +@@ -427,7 +427,7 @@ void __ulogd_log(int level, char *file, int line, const char *format, ...) + if (level < loglevel_ce.u.value) + return; + +- if (logfile == &syslog_dummy) { ++ if (logfile == syslog_dummy) { + /* FIXME: this omits the 'file' string */ + va_start(ap, format); + vsyslog(ulogd2syslog_level(level), format, ap); +@@ -950,7 +950,7 @@ static int logfile_open(const char *name) + logfile = stdout; + } else if (!strcmp(name, "syslog")) { + openlog("ulogd", LOG_PID, LOG_DAEMON); +- logfile = &syslog_dummy; ++ logfile = syslog_dummy = fopen("/dev/null", "w"); + } else { + logfile = fopen(ulogd_logfile, "a"); + if (!logfile) { +@@ -1240,7 +1240,7 @@ static void sigterm_handler(int signal) + unload_plugins(); + #endif + +- if (logfile != NULL && logfile != stdout && logfile != &syslog_dummy) { ++ if (logfile != NULL && logfile != stdout) { + fclose(logfile); + logfile = NULL; + } +@@ -1262,7 +1262,7 @@ static void signal_handler(int signal) + switch (signal) { + case SIGHUP: + /* reopen logfile */ +- if (logfile != stdout && logfile != &syslog_dummy) { ++ if (logfile != stdout && logfile != syslog_dummy) { + fclose(logfile); + logfile = fopen(ulogd_logfile, "a"); + if (!logfile) { +-- +2.6.2 + diff --git a/buildroot/package/ulogd/0002-Define-_GNU_SOURCE-to-get-members-of-tcphdr.patch b/buildroot/package/ulogd/0002-Define-_GNU_SOURCE-to-get-members-of-tcphdr.patch new file mode 100644 index 0000000..0fbef83 --- /dev/null +++ b/buildroot/package/ulogd/0002-Define-_GNU_SOURCE-to-get-members-of-tcphdr.patch @@ -0,0 +1,44 @@ +From 89263555143e3c0125320ca565b41805f27460c9 Mon Sep 17 00:00:00 2001 +From: Felix Janda +Date: Sat, 16 May 2015 15:44:32 +0200 +Subject: [PATCH] Define _GNU_SOURCE to get members of tcphdr + +The source uses linux names for members of tcphdr. For example +"source" instead of "th_sport", ... musl libc's headers need +_GNU_SOURCE defined in order to expose these. + +Signed-off-by: Felix Janda +[Rahul Bedarkar: Backported from https://git.netfilter.org/ulogd2/commit/?id=89263555143e3c0125320ca565b41805f27460c9] +Signed-off-by: Rahul Bedarkar +--- + filter/raw2packet/ulogd_raw2packet_BASE.c | 1 + + filter/ulogd_filter_PWSNIFF.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/filter/raw2packet/ulogd_raw2packet_BASE.c b/filter/raw2packet/ulogd_raw2packet_BASE.c +index c9d5227..ad894fc 100644 +--- a/filter/raw2packet/ulogd_raw2packet_BASE.c ++++ b/filter/raw2packet/ulogd_raw2packet_BASE.c +@@ -35,6 +35,7 @@ + #include + #include + #include ++#define _GNU_SOURCE + #include + #include + #include +diff --git a/filter/ulogd_filter_PWSNIFF.c b/filter/ulogd_filter_PWSNIFF.c +index 5169eee..a3e2b42 100644 +--- a/filter/ulogd_filter_PWSNIFF.c ++++ b/filter/ulogd_filter_PWSNIFF.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#define _GNU_SOURCE + #include + #include + +-- +2.6.2 + diff --git a/buildroot/package/ulogd/0003-Use-stdint-types-everywhere.patch b/buildroot/package/ulogd/0003-Use-stdint-types-everywhere.patch new file mode 100644 index 0000000..66408d6 --- /dev/null +++ b/buildroot/package/ulogd/0003-Use-stdint-types-everywhere.patch @@ -0,0 +1,792 @@ +From c9337b31f756cae85299c8275b21088ce02885e2 Mon Sep 17 00:00:00 2001 +From: Felix Janda +Date: Wed, 24 Jun 2015 19:53:34 +0200 +Subject: [PATCH] Use stdint types everywhere + +Signed-off-by: Felix Janda +[Rahul Bedarkar: + - backported from https://git.netfilter.org/ulogd2/commit/?id=c9337b31f756cae85299c8275b21088ce02885e2 + - remove hunk for output/ulogd_output_IPFIX.c as file doesn't exist in version we use] +Signed-off-by: Rahul Bedarkar +--- + filter/raw2packet/ulogd_raw2packet_BASE.c | 35 +++++++++++++------------- + filter/ulogd_filter_HWHDR.c | 6 ++--- + filter/ulogd_filter_IP2HBIN.c | 4 +-- + filter/ulogd_filter_IP2STR.c | 2 +- + filter/ulogd_filter_MARK.c | 4 +-- + filter/ulogd_filter_PWSNIFF.c | 4 +-- + include/libipulog/libipulog.h | 7 +++--- + include/ulogd/addr.h | 4 ++- + include/ulogd/conffile.h | 10 ++++---- + include/ulogd/ipfix_protocol.h | 38 +++++++++++++++------------- + include/ulogd/ulogd.h | 42 +++++++++++++++---------------- + input/packet/ulogd_inppkt_NFLOG.c | 16 ++++++------ + input/packet/ulogd_inppkt_UNIXSOCK.c | 34 ++++++++++++------------- + libipulog/libipulog.c | 8 +++--- + output/mysql/ulogd_output_MYSQL.c | 2 +- + output/ulogd_output_IPFIX.c | 20 +++++++-------- + src/addr.c | 4 +-- + util/db.c | 2 +- + util/printpkt.c | 6 ++--- + 19 files changed, 126 insertions(+), 122 deletions(-) + +diff --git a/filter/raw2packet/ulogd_raw2packet_BASE.c b/filter/raw2packet/ulogd_raw2packet_BASE.c +index ad894fc..8a6180c 100644 +--- a/filter/raw2packet/ulogd_raw2packet_BASE.c ++++ b/filter/raw2packet/ulogd_raw2packet_BASE.c +@@ -44,6 +44,7 @@ + #include + #include + #include ++#include + + enum input_keys { + INKEY_RAW_PCKT, +@@ -538,7 +539,7 @@ static struct ulogd_key iphdr_rets[] = { + ***********************************************************************/ + + static int _interp_tcp(struct ulogd_pluginstance *pi, struct tcphdr *tcph, +- u_int32_t len) ++ uint32_t len) + { + struct ulogd_key *ret = pi->output.keys; + +@@ -573,7 +574,7 @@ static int _interp_tcp(struct ulogd_pluginstance *pi, struct tcphdr *tcph, + ***********************************************************************/ + + static int _interp_udp(struct ulogd_pluginstance *pi, struct udphdr *udph, +- u_int32_t len) ++ uint32_t len) + + { + struct ulogd_key *ret = pi->output.keys; +@@ -602,7 +603,7 @@ typedef struct sctphdr { + } __attribute__((packed)) sctp_sctphdr_t; + + static int _interp_sctp(struct ulogd_pluginstance *pi, struct sctphdr *sctph, +- u_int32_t len) ++ uint32_t len) + + { + struct ulogd_key *ret = pi->output.keys; +@@ -625,7 +626,7 @@ static int _interp_sctp(struct ulogd_pluginstance *pi, struct sctphdr *sctph, + ***********************************************************************/ + + static int _interp_icmp(struct ulogd_pluginstance *pi, struct icmphdr *icmph, +- u_int32_t len) ++ uint32_t len) + { + struct ulogd_key *ret = pi->output.keys; + +@@ -663,7 +664,7 @@ static int _interp_icmp(struct ulogd_pluginstance *pi, struct icmphdr *icmph, + ***********************************************************************/ + + static int _interp_icmpv6(struct ulogd_pluginstance *pi, struct icmp6_hdr *icmph, +- u_int32_t len) ++ uint32_t len) + { + struct ulogd_key *ret = pi->output.keys; + +@@ -691,7 +692,7 @@ static int _interp_icmpv6(struct ulogd_pluginstance *pi, struct icmp6_hdr *icmph + * IPSEC HEADER + ***********************************************************************/ + static int _interp_ahesp(struct ulogd_pluginstance *pi, void *protoh, +- u_int32_t len) ++ uint32_t len) + { + #if 0 + struct ulogd_key *ret = pi->output.keys; +@@ -711,14 +712,14 @@ static int _interp_ahesp(struct ulogd_pluginstance *pi, void *protoh, + * IP HEADER + ***********************************************************************/ + +-static int _interp_iphdr(struct ulogd_pluginstance *pi, u_int32_t len) ++static int _interp_iphdr(struct ulogd_pluginstance *pi, uint32_t len) + { + struct ulogd_key *ret = pi->output.keys; + struct iphdr *iph = + ikey_get_ptr(&pi->input.keys[INKEY_RAW_PCKT]); +- void *nexthdr = (u_int32_t *)iph + iph->ihl; ++ void *nexthdr = (uint32_t *)iph + iph->ihl; + +- if (len < sizeof(struct iphdr) || len <= (u_int32_t)(iph->ihl * 4)) ++ if (len < sizeof(struct iphdr) || len <= (uint32_t)(iph->ihl * 4)) + return ULOGD_IRET_OK; + len -= iph->ihl * 4; + +@@ -759,7 +760,7 @@ static int _interp_iphdr(struct ulogd_pluginstance *pi, u_int32_t len) + * IPv6 HEADER + ***********************************************************************/ + +-static int ip6_ext_hdr(u_int8_t nexthdr) ++static int ip6_ext_hdr(uint8_t nexthdr) + { + switch (nexthdr) { + case IPPROTO_HOPOPTS: +@@ -774,12 +775,12 @@ static int ip6_ext_hdr(u_int8_t nexthdr) + } + } + +-static int _interp_ipv6hdr(struct ulogd_pluginstance *pi, u_int32_t len) ++static int _interp_ipv6hdr(struct ulogd_pluginstance *pi, uint32_t len) + { + struct ulogd_key *ret = pi->output.keys; + struct ip6_hdr *ipv6h = ikey_get_ptr(&pi->input.keys[INKEY_RAW_PCKT]); + unsigned int ptr, hdrlen = 0; +- u_int8_t curhdr; ++ uint8_t curhdr; + int fragment = 0; + + if (len < sizeof(struct ip6_hdr)) +@@ -889,7 +890,7 @@ out: + /*********************************************************************** + * ARP HEADER + ***********************************************************************/ +-static int _interp_arp(struct ulogd_pluginstance *pi, u_int32_t len) ++static int _interp_arp(struct ulogd_pluginstance *pi, uint32_t len) + { + struct ulogd_key *ret = pi->output.keys; + const struct ether_arp *arph = +@@ -914,9 +915,9 @@ static int _interp_arp(struct ulogd_pluginstance *pi, u_int32_t len) + * ETHER HEADER + ***********************************************************************/ + +-static int _interp_bridge(struct ulogd_pluginstance *pi, u_int32_t len) ++static int _interp_bridge(struct ulogd_pluginstance *pi, uint32_t len) + { +- const u_int16_t proto = ++ const uint16_t proto = + ikey_get_u16(&pi->input.keys[INKEY_OOB_PROTOCOL]); + + switch (proto) { +@@ -938,8 +939,8 @@ static int _interp_bridge(struct ulogd_pluginstance *pi, u_int32_t len) + + static int _interp_pkt(struct ulogd_pluginstance *pi) + { +- u_int32_t len = ikey_get_u32(&pi->input.keys[INKEY_RAW_PCKTLEN]); +- u_int8_t family = ikey_get_u8(&pi->input.keys[INKEY_OOB_FAMILY]); ++ uint32_t len = ikey_get_u32(&pi->input.keys[INKEY_RAW_PCKTLEN]); ++ uint8_t family = ikey_get_u8(&pi->input.keys[INKEY_OOB_FAMILY]); + struct ulogd_key *ret = pi->output.keys; + + okey_set_u16(&ret[KEY_OOB_PROTOCOL], +diff --git a/filter/ulogd_filter_HWHDR.c b/filter/ulogd_filter_HWHDR.c +index 3b095c9..10c95c4 100644 +--- a/filter/ulogd_filter_HWHDR.c ++++ b/filter/ulogd_filter_HWHDR.c +@@ -143,10 +143,10 @@ static void *hwhdr_get_daddr(struct ulogd_key *inp) + return ikey_get_ptr(&inp[KEY_RAW_MAC]); + } + +-static u_int16_t hwhdr_get_len(struct ulogd_key *inp) ++static uint16_t hwhdr_get_len(struct ulogd_key *inp) + { + void *len = ikey_get_ptr(&inp[KEY_RAW_MAC]) + 2 * ETH_ALEN; +- return ntohs(*(u_int16_t *) len); ++ return ntohs(*(uint16_t *) len); + } + static int parse_ethernet(struct ulogd_key *ret, struct ulogd_key *inp) + { +@@ -171,7 +171,7 @@ static int interp_mac2str(struct ulogd_pluginstance *pi) + { + struct ulogd_key *ret = pi->output.keys; + struct ulogd_key *inp = pi->input.keys; +- u_int16_t type = 0; ++ uint16_t type = 0; + + if (pp_is_valid(inp, KEY_OOB_PROTOCOL)) + okey_set_u16(&ret[KEY_MAC_PROTOCOL], +diff --git a/filter/ulogd_filter_IP2HBIN.c b/filter/ulogd_filter_IP2HBIN.c +index 4fd3ff1..087e824 100644 +--- a/filter/ulogd_filter_IP2HBIN.c ++++ b/filter/ulogd_filter_IP2HBIN.c +@@ -116,8 +116,8 @@ static int interp_ip2hbin(struct ulogd_pluginstance *pi) + { + struct ulogd_key *ret = pi->output.keys; + struct ulogd_key *inp = pi->input.keys; +- u_int8_t family = ikey_get_u8(&inp[KEY_OOB_FAMILY]); +- u_int8_t convfamily = family; ++ uint8_t family = ikey_get_u8(&inp[KEY_OOB_FAMILY]); ++ uint8_t convfamily = family; + int i; + + switch (family) { +diff --git a/filter/ulogd_filter_IP2STR.c b/filter/ulogd_filter_IP2STR.c +index 732e1ef..66324b0 100644 +--- a/filter/ulogd_filter_IP2STR.c ++++ b/filter/ulogd_filter_IP2STR.c +@@ -168,7 +168,7 @@ static int ip2str(struct ulogd_key *inp, int index, int oindex) + } + + switch (convfamily) { +- u_int32_t ip; ++ uint32_t ip; + case AF_INET6: + inet_ntop(AF_INET6, + ikey_get_u128(&inp[index]), +diff --git a/filter/ulogd_filter_MARK.c b/filter/ulogd_filter_MARK.c +index 7807f63..149725d 100644 +--- a/filter/ulogd_filter_MARK.c ++++ b/filter/ulogd_filter_MARK.c +@@ -73,14 +73,14 @@ static int interp_mark(struct ulogd_pluginstance *pi) + if (pp_is_valid(inp, KEY_CT_MARK)) { + if ((ikey_get_u32(&inp[KEY_CT_MARK]) & + pi->config_kset->ces[MARK_MASK].u.value) != +- (u_int32_t) pi->config_kset->ces[MARK_MARK].u.value ++ (uint32_t) pi->config_kset->ces[MARK_MARK].u.value + ) { + return ULOGD_IRET_STOP; + } + } else if (pp_is_valid(inp, KEY_OOB_MARK)) { + if ((ikey_get_u32(&inp[KEY_OOB_MARK]) & + pi->config_kset->ces[MARK_MASK].u.value) != +- (u_int32_t) pi->config_kset->ces[MARK_MARK].u.value ++ (uint32_t) pi->config_kset->ces[MARK_MARK].u.value + ) { + return ULOGD_IRET_STOP; + } +diff --git a/filter/ulogd_filter_PWSNIFF.c b/filter/ulogd_filter_PWSNIFF.c +index a3e2b42..934ff0e 100644 +--- a/filter/ulogd_filter_PWSNIFF.c ++++ b/filter/ulogd_filter_PWSNIFF.c +@@ -39,7 +39,7 @@ + #define PORT_POP3 110 + #define PORT_FTP 21 + +-static u_int16_t pwsniff_ports[] = { ++static uint16_t pwsniff_ports[] = { + PORT_POP3, + PORT_FTP, + /* feel free to include any other ports here, provided that their +@@ -72,7 +72,7 @@ static int interp_pwsniff(struct ulogd_pluginstance *pi) + return ULOGD_IRET_STOP; + + iph = (struct iphdr *) pi->input.keys[0].u.value.ptr; +- protoh = (u_int32_t *)iph + iph->ihl; ++ protoh = (uint32_t *)iph + iph->ihl; + tcph = protoh; + tcplen = ntohs(iph->tot_len) - iph->ihl * 4; + +diff --git a/include/libipulog/libipulog.h b/include/libipulog/libipulog.h +index b3c9616..21b4315 100644 +--- a/include/libipulog/libipulog.h ++++ b/include/libipulog/libipulog.h +@@ -4,10 +4,9 @@ + #include + #include + #include +-#include + #include + #include +-#include ++#include + #include + #include + #include +@@ -20,9 +19,9 @@ + struct ipulog_handle; + extern int ipulog_errno; + +-u_int32_t ipulog_group2gmask(u_int32_t group); ++uint32_t ipulog_group2gmask(uint32_t group); + +-struct ipulog_handle *ipulog_create_handle(u_int32_t gmask, u_int32_t rmem); ++struct ipulog_handle *ipulog_create_handle(uint32_t gmask, uint32_t rmem); + + void ipulog_destroy_handle(struct ipulog_handle *h); + +diff --git a/include/ulogd/addr.h b/include/ulogd/addr.h +index b4432e3..2259b6c 100644 +--- a/include/ulogd/addr.h ++++ b/include/ulogd/addr.h +@@ -8,7 +8,9 @@ + #ifndef _ADDR_H + #define _ADDR_H + +-u_int32_t ulogd_bits2netmask(int bits); ++#include ++ ++uint32_t ulogd_bits2netmask(int bits); + void ulogd_ipv6_cidr2mask_host(uint8_t cidr, uint32_t *res); + void ulogd_ipv6_addr2addr_host(uint32_t *addr, uint32_t *res); + +diff --git a/include/ulogd/conffile.h b/include/ulogd/conffile.h +index 69a6f70..1f3d563 100644 +--- a/include/ulogd/conffile.h ++++ b/include/ulogd/conffile.h +@@ -7,7 +7,7 @@ + #ifndef _CONFFILE_H + #define _CONFFILE_H + +-#include ++#include + + /* errors returned by config functions */ + enum { +@@ -45,10 +45,10 @@ enum { + + struct config_entry { + char key[CONFIG_KEY_LEN]; /* name of config directive */ +- u_int8_t type; /* type; see above */ +- u_int8_t options; /* options; see above */ +- u_int8_t hit; /* found? */ +- u_int8_t flag; /* tune setup of option */ ++ uint8_t type; /* type; see above */ ++ uint8_t options; /* options; see above */ ++ uint8_t hit; /* found? */ ++ uint8_t flag; /* tune setup of option */ + union { + char string[CONFIG_VAL_STRING_LEN]; + int value; +diff --git a/include/ulogd/ipfix_protocol.h b/include/ulogd/ipfix_protocol.h +index 5d7e46a..aef47f0 100644 +--- a/include/ulogd/ipfix_protocol.h ++++ b/include/ulogd/ipfix_protocol.h +@@ -1,6 +1,8 @@ + #ifndef _IPFIX_PROTOCOL_H + #define _IPFIX_PROTOCOL_H + ++#include ++ + /* This header file defines structures for the IPFIX protocol in accordance with + * draft-ietf-ipfix-protocol-19.txt */ + +@@ -11,29 +13,29 @@ + + /* Section 3.1 */ + struct ipfix_msg_hdr { +- u_int16_t version; +- u_int16_t length; +- u_int32_t export_time; +- u_int32_t seq; +- u_int32_t source_id; ++ uint16_t version; ++ uint16_t length; ++ uint32_t export_time; ++ uint32_t seq; ++ uint32_t source_id; + }; + + /* Section 3.4.1 */ + struct ipfix_templ_rec_hdr { +- u_int16_t templ_id; +- u_int16_t field_count; ++ uint16_t templ_id; ++ uint16_t field_count; + }; + + /* Section 3.2 */ + struct ipfix_ietf_field { +- u_int16_t type; +- u_int16_t length; ++ uint16_t type; ++ uint16_t length; + }; + + struct ipfix_vendor_field { +- u_int16_t type; +- u_int16_t length; +- u_int32_t enterprise_num; ++ uint16_t type; ++ uint16_t length; ++ uint32_t enterprise_num; + }; + + /* Information Element Identifiers as of draft-ietf-ipfix-info-11.txt */ +@@ -219,13 +221,13 @@ enum { + /* Information elements of the netfilter vendor id */ + enum { + IPFIX_NF_rawpacket = 1, /* pointer */ +- IPFIX_NF_rawpacket_length = 2, /* u_int32_t */ ++ IPFIX_NF_rawpacket_length = 2, /* uint32_t */ + IPFIX_NF_prefix = 3, /* string */ +- IPFIX_NF_mark = 4, /* u_int32_t */ +- IPFIX_NF_hook = 5, /* u_int8_t */ +- IPFIX_NF_conntrack_id = 6, /* u_int32_t */ +- IPFIX_NF_seq_local = 7, /* u_int32_t */ +- IPFIX_NF_seq_global = 8, /* u_int32_t */ ++ IPFIX_NF_mark = 4, /* uint32_t */ ++ IPFIX_NF_hook = 5, /* uint8_t */ ++ IPFIX_NF_conntrack_id = 6, /* uint32_t */ ++ IPFIX_NF_seq_local = 7, /* uint32_t */ ++ IPFIX_NF_seq_global = 8, /* uint32_t */ + }; + + #endif +diff --git a/include/ulogd/ulogd.h b/include/ulogd/ulogd.h +index cf26a15..2e38195 100644 +--- a/include/ulogd/ulogd.h ++++ b/include/ulogd/ulogd.h +@@ -85,17 +85,17 @@ enum ulogd_dtype { + /* structure describing an input / output parameter of a plugin */ + struct ulogd_key { + /* length of the returned value (only for lengthed types */ +- u_int32_t len; ++ uint32_t len; + /* type of the returned value (ULOGD_DTYPE_...) */ +- u_int16_t type; ++ uint16_t type; + /* flags (i.e. free, ...) */ +- u_int16_t flags; ++ uint16_t flags; + /* name of this key */ + char name[ULOGD_MAX_KEYLEN+1]; + /* IETF IPFIX attribute ID */ + struct { +- u_int32_t vendor; +- u_int16_t field_id; ++ uint32_t vendor; ++ uint16_t field_id; + } ipfix; + + /* Store field name for Common Information Model */ +@@ -104,12 +104,12 @@ struct ulogd_key { + union { + /* and finally the returned value */ + union { +- u_int8_t b; +- u_int8_t ui8; +- u_int16_t ui16; +- u_int32_t ui32; +- u_int64_t ui64; +- u_int32_t ui128[4]; ++ uint8_t b; ++ uint8_t ui8; ++ uint16_t ui16; ++ uint32_t ui32; ++ uint64_t ui64; ++ uint32_t ui128[4]; + int8_t i8; + int16_t i16; + int32_t i32; +@@ -130,31 +130,31 @@ struct ulogd_keyset { + unsigned int type; + }; + +-static inline void okey_set_b(struct ulogd_key *key, u_int8_t value) ++static inline void okey_set_b(struct ulogd_key *key, uint8_t value) + { + key->u.value.b = value; + key->flags |= ULOGD_RETF_VALID; + } + +-static inline void okey_set_u8(struct ulogd_key *key, u_int8_t value) ++static inline void okey_set_u8(struct ulogd_key *key, uint8_t value) + { + key->u.value.ui8 = value; + key->flags |= ULOGD_RETF_VALID; + } + +-static inline void okey_set_u16(struct ulogd_key *key, u_int16_t value) ++static inline void okey_set_u16(struct ulogd_key *key, uint16_t value) + { + key->u.value.ui16 = value; + key->flags |= ULOGD_RETF_VALID; + } + +-static inline void okey_set_u32(struct ulogd_key *key, u_int32_t value) ++static inline void okey_set_u32(struct ulogd_key *key, uint32_t value) + { + key->u.value.ui32 = value; + key->flags |= ULOGD_RETF_VALID; + } + +-static inline void okey_set_u64(struct ulogd_key *key, u_int64_t value) ++static inline void okey_set_u64(struct ulogd_key *key, uint64_t value) + { + key->u.value.ui64 = value; + key->flags |= ULOGD_RETF_VALID; +@@ -172,22 +172,22 @@ static inline void okey_set_ptr(struct ulogd_key *key, void *value) + key->flags |= ULOGD_RETF_VALID; + } + +-static inline u_int8_t ikey_get_u8(struct ulogd_key *key) ++static inline uint8_t ikey_get_u8(struct ulogd_key *key) + { + return key->u.source->u.value.ui8; + } + +-static inline u_int16_t ikey_get_u16(struct ulogd_key *key) ++static inline uint16_t ikey_get_u16(struct ulogd_key *key) + { + return key->u.source->u.value.ui16; + } + +-static inline u_int32_t ikey_get_u32(struct ulogd_key *key) ++static inline uint32_t ikey_get_u32(struct ulogd_key *key) + { + return key->u.source->u.value.ui32; + } + +-static inline u_int64_t ikey_get_u64(struct ulogd_key *key) ++static inline uint64_t ikey_get_u64(struct ulogd_key *key) + { + return key->u.source->u.value.ui64; + } +@@ -292,7 +292,7 @@ void ulogd_propagate_results(struct ulogd_pluginstance *pi); + void ulogd_register_plugin(struct ulogd_plugin *me); + + /* allocate a new ulogd_key */ +-struct ulogd_key *alloc_ret(const u_int16_t type, const char*); ++struct ulogd_key *alloc_ret(const uint16_t type, const char*); + + /* write a message to the daemons' logfile */ + void __ulogd_log(int level, char *file, int line, const char *message, ...); +diff --git a/input/packet/ulogd_inppkt_NFLOG.c b/input/packet/ulogd_inppkt_NFLOG.c +index 6196626..a367959 100644 +--- a/input/packet/ulogd_inppkt_NFLOG.c ++++ b/input/packet/ulogd_inppkt_NFLOG.c +@@ -315,7 +315,7 @@ static struct ulogd_key output_keys[] = { + }; + + static inline int +-interp_packet(struct ulogd_pluginstance *upi, u_int8_t pf_family, ++interp_packet(struct ulogd_pluginstance *upi, uint8_t pf_family, + struct nflog_data *ldata) + { + struct ulogd_key *ret = upi->output.keys; +@@ -326,12 +326,12 @@ interp_packet(struct ulogd_pluginstance *upi, u_int8_t pf_family, + int payload_len = nflog_get_payload(ldata, &payload); + char *prefix = nflog_get_prefix(ldata); + struct timeval ts; +- u_int32_t mark = nflog_get_nfmark(ldata); +- u_int32_t indev = nflog_get_indev(ldata); +- u_int32_t outdev = nflog_get_outdev(ldata); +- u_int32_t seq; +- u_int32_t uid; +- u_int32_t gid; ++ uint32_t mark = nflog_get_nfmark(ldata); ++ uint32_t indev = nflog_get_indev(ldata); ++ uint32_t outdev = nflog_get_outdev(ldata); ++ uint32_t seq; ++ uint32_t uid; ++ uint32_t gid; + + okey_set_u8(&ret[NFLOG_KEY_OOB_FAMILY], + pf_family); +@@ -493,7 +493,7 @@ static int configure(struct ulogd_pluginstance *upi, + return 0; + } + +-static int become_system_logging(struct ulogd_pluginstance *upi, u_int8_t pf) ++static int become_system_logging(struct ulogd_pluginstance *upi, uint8_t pf) + { + struct nflog_input *ui = (struct nflog_input *) upi->private; + +diff --git a/input/packet/ulogd_inppkt_UNIXSOCK.c b/input/packet/ulogd_inppkt_UNIXSOCK.c +index e4009f3..39944bf 100644 +--- a/input/packet/ulogd_inppkt_UNIXSOCK.c ++++ b/input/packet/ulogd_inppkt_UNIXSOCK.c +@@ -336,10 +336,10 @@ enum ulogd2_option_type { + ULOGD2_OPT_PREFIX, /* log prefix (string) */ + ULOGD2_OPT_OOB_IN, /* input device (string) */ + ULOGD2_OPT_OOB_OUT, /* output device (string) */ +- ULOGD2_OPT_OOB_TIME_SEC, /* packet arrival time (u_int32_t) */ ++ ULOGD2_OPT_OOB_TIME_SEC, /* packet arrival time (uint32_t) */ + + ULOGD2_OPT_USER=200, /* user name (string) */ +- ULOGD2_OPT_USERID, /* user id (u_int32_t) */ ++ ULOGD2_OPT_USERID, /* user id (uint32_t) */ + ULOGD2_OPT_OSNAME, /* OS name (string) */ + ULOGD2_OPT_OSREL, /* OS release (string) */ + ULOGD2_OPT_OSVERS, /* OS version (string) */ +@@ -367,15 +367,15 @@ struct ulogd_unixsock_option_t { + #define USOCK_ALIGNTO 8 + #define USOCK_ALIGN(len) ( ((len)+USOCK_ALIGNTO-1) & ~(USOCK_ALIGNTO-1) ) + +-static int handle_packet(struct ulogd_pluginstance *upi, struct ulogd_unixsock_packet_t *pkt, u_int16_t total_len) ++static int handle_packet(struct ulogd_pluginstance *upi, struct ulogd_unixsock_packet_t *pkt, uint16_t total_len) + { + char *data = NULL; + struct iphdr *ip; + struct ulogd_key *ret = upi->output.keys; +- u_int8_t oob_family; +- u_int16_t payload_len; +- u_int32_t option_number; +- u_int32_t option_length; ++ uint8_t oob_family; ++ uint16_t payload_len; ++ uint32_t option_number; ++ uint32_t option_length; + char *buf; + struct ulogd_unixsock_option_t *option; + int new_offset; +@@ -398,7 +398,7 @@ static int handle_packet(struct ulogd_pluginstance *upi, struct ulogd_unixsock_p + okey_set_u32(&ret[UNIXSOCK_KEY_RAW_PCKTLEN], payload_len); + + /* options */ +- if (total_len > payload_len + sizeof(u_int16_t)) { ++ if (total_len > payload_len + sizeof(uint16_t)) { + /* option starts at the next aligned address after the payload */ + new_offset = USOCK_ALIGN(payload_len); + options_start = (void*)ip + new_offset; +@@ -431,13 +431,13 @@ static int handle_packet(struct ulogd_pluginstance *upi, struct ulogd_unixsock_p + okey_set_ptr(&ret[UNIXSOCK_KEY_OOB_OUT], buf); + break; + case ULOGD2_OPT_OOB_TIME_SEC: +- okey_set_u32(&ret[UNIXSOCK_KEY_OOB_TIME_SEC], *(u_int32_t*)buf); ++ okey_set_u32(&ret[UNIXSOCK_KEY_OOB_TIME_SEC], *(uint32_t*)buf); + break; + case ULOGD2_OPT_USER: + okey_set_ptr(&ret[UNIXSOCK_KEY_NUFW_USER_NAME], buf); + break; + case ULOGD2_OPT_USERID: +- okey_set_u32(&ret[UNIXSOCK_KEY_NUFW_USER_ID], *(u_int32_t*)buf); ++ okey_set_u32(&ret[UNIXSOCK_KEY_NUFW_USER_ID], *(uint32_t*)buf); + break; + case ULOGD2_OPT_OSNAME: + okey_set_ptr(&ret[UNIXSOCK_KEY_NUFW_OS_NAME], buf); +@@ -452,7 +452,7 @@ static int handle_packet(struct ulogd_pluginstance *upi, struct ulogd_unixsock_p + okey_set_ptr(&ret[UNIXSOCK_KEY_NUFW_APP_NAME], buf); + break; + case ULOGD2_OPT_STATE: +- okey_set_u8(&ret[UNIXSOCK_KEY_RAW_LABEL], *(u_int8_t*)buf); ++ okey_set_u8(&ret[UNIXSOCK_KEY_RAW_LABEL], *(uint8_t*)buf); + break; + default: + ulogd_log(ULOGD_NOTICE, +@@ -595,8 +595,8 @@ static int unixsock_instance_read_cb(int fd, unsigned int what, void *param) + struct ulogd_pluginstance *upi = param; + struct unixsock_input *ui = (struct unixsock_input*)upi->private; + int len; +- u_int16_t needed_len; +- u_int32_t packet_sig; ++ uint16_t needed_len; ++ uint32_t packet_sig; + struct ulogd_unixsock_packet_t *unixsock_packet; + + char buf[4096]; +@@ -642,7 +642,7 @@ static int unixsock_instance_read_cb(int fd, unsigned int what, void *param) + + needed_len = ntohs(unixsock_packet->total_size); + +- if (ui->unixsock_buf_avail >= needed_len + sizeof(u_int32_t)) { ++ if (ui->unixsock_buf_avail >= needed_len + sizeof(uint32_t)) { + ulogd_log(ULOGD_DEBUG, + " We have enough data (%d bytes required), handling packet\n", + needed_len); +@@ -651,11 +651,11 @@ static int unixsock_instance_read_cb(int fd, unsigned int what, void *param) + return -1; + } + /* consume data */ +- ui->unixsock_buf_avail -= (sizeof(u_int32_t) + needed_len); ++ ui->unixsock_buf_avail -= (sizeof(uint32_t) + needed_len); + if (ui->unixsock_buf_avail > 0) { + /* we need to shift data .. */ + memmove(ui->unixsock_buf, +- ui->unixsock_buf + (sizeof(u_int32_t) + needed_len) , ++ ui->unixsock_buf + (sizeof(uint32_t) + needed_len) , + ui->unixsock_buf_avail); + } else { + /* input buffer is empty, do not loop */ +@@ -664,7 +664,7 @@ static int unixsock_instance_read_cb(int fd, unsigned int what, void *param) + + } else { + ulogd_log(ULOGD_DEBUG, " We have %d bytes, but need %d. Requesting more\n", +- ui->unixsock_buf_avail, needed_len + sizeof(u_int32_t)); ++ ui->unixsock_buf_avail, needed_len + sizeof(uint32_t)); + return 0; + } + +diff --git a/libipulog/libipulog.c b/libipulog/libipulog.c +index ab28bb4..b49f7f2 100644 +--- a/libipulog/libipulog.c ++++ b/libipulog/libipulog.c +@@ -33,7 +33,7 @@ + struct ipulog_handle + { + int fd; +- u_int8_t blocking; ++ uint8_t blocking; + struct sockaddr_nl local; + struct sockaddr_nl peer; + struct nlmsghdr* last_nlhdr; +@@ -112,7 +112,7 @@ char *ipulog_strerror(int errcode) + } + + /* convert a netlink group (1-32) to a group_mask suitable for create_handle */ +-u_int32_t ipulog_group2gmask(u_int32_t group) ++uint32_t ipulog_group2gmask(uint32_t group) + { + if (group < 1 || group > 32) + { +@@ -123,8 +123,8 @@ u_int32_t ipulog_group2gmask(u_int32_t group) + } + + /* create a ipulog handle for the reception of packets sent to gmask */ +-struct ipulog_handle *ipulog_create_handle(u_int32_t gmask, +- u_int32_t rcvbufsize) ++struct ipulog_handle *ipulog_create_handle(uint32_t gmask, ++ uint32_t rcvbufsize) + { + struct ipulog_handle *h; + int status; +diff --git a/output/mysql/ulogd_output_MYSQL.c b/output/mysql/ulogd_output_MYSQL.c +index 0a1ebfc..643320c 100644 +--- a/output/mysql/ulogd_output_MYSQL.c ++++ b/output/mysql/ulogd_output_MYSQL.c +@@ -174,7 +174,7 @@ static int open_db_mysql(struct ulogd_pluginstance *upi) + struct mysql_instance *mi = (struct mysql_instance *) upi->private; + unsigned int connect_timeout = timeout_ce(upi->config_kset).u.value; + char *server = host_ce(upi->config_kset).u.string; +- u_int16_t port = port_ce(upi->config_kset).u.value; ++ uint16_t port = port_ce(upi->config_kset).u.value; + char *user = user_ce(upi->config_kset).u.string; + char *pass = pass_ce(upi->config_kset).u.string; + char *db = db_ce(upi->config_kset).u.string; +diff --git a/src/addr.c b/src/addr.c +index 2672fab..41435dc 100644 +--- a/src/addr.c ++++ b/src/addr.c +@@ -22,9 +22,9 @@ + #include + #include + +-u_int32_t ulogd_bits2netmask(int bits) ++uint32_t ulogd_bits2netmask(int bits) + { +- u_int32_t netmask, bm; ++ uint32_t netmask, bm; + + if (bits >= 32 || bits < 0) + return(~0); +diff --git a/util/db.c b/util/db.c +index 24966a5..c9aec41 100644 +--- a/util/db.c ++++ b/util/db.c +@@ -362,7 +362,7 @@ static void __format_query_db(struct ulogd_pluginstance *upi, char *start) + sprintf(stmt_ins, "%u,", res->u.value.ui16); + break; + case ULOGD_RET_IPADDR: +- /* fallthrough when logging IP as u_int32_t */ ++ /* fallthrough when logging IP as uint32_t */ + case ULOGD_RET_UINT32: + sprintf(stmt_ins, "%u,", res->u.value.ui32); + break; +diff --git a/util/printpkt.c b/util/printpkt.c +index eb6cfbf..69a47ca 100644 +--- a/util/printpkt.c ++++ b/util/printpkt.c +@@ -199,7 +199,7 @@ static int printpkt_ipv4(struct ulogd_key *res, char *buf) + { + char *buf_cur = buf; + char tmp[INET_ADDRSTRLEN]; +- u_int32_t paddr; ++ uint32_t paddr; + + if (pp_is_valid(res, KEY_IP_SADDR)) + buf_cur += sprintf(buf_cur, "SRC=%s ", +@@ -363,8 +363,8 @@ static int printpkt_ipv6(struct ulogd_key *res, char *buf) + int printpkt_arp(struct ulogd_key *res, char *buf) + { + char *buf_cur = buf; +- u_int16_t code = 0; +- u_int8_t *mac; ++ uint16_t code = 0; ++ uint8_t *mac; + + if (pp_is_valid(res, KEY_ARP_SPA)) + buf_cur += sprintf(buf_cur, "SRC=%s ", +-- +2.6.2 + diff --git a/buildroot/package/ulogd/Config.in b/buildroot/package/ulogd/Config.in new file mode 100644 index 0000000..e0e1999 --- /dev/null +++ b/buildroot/package/ulogd/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_ULOGD + bool "ulogd" + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU + select BR2_PACKAGE_LIBMNL + select BR2_PACKAGE_LIBNETFILTER_ACCT + select BR2_PACKAGE_LIBNETFILTER_CONNTRACK + select BR2_PACKAGE_LIBNETFILTER_LOG + select BR2_PACKAGE_LIBNFNETLINK + help + ulogd is a userspace logging daemon for netfilter/iptables + related logging. + + http://www.netfilter.org/projects/ulogd/ + +comment "ulogd needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/buildroot/package/ulogd/ulogd.hash b/buildroot/package/ulogd/ulogd.hash new file mode 100644 index 0000000..16186c1 --- /dev/null +++ b/buildroot/package/ulogd/ulogd.hash @@ -0,0 +1,3 @@ +# From ftp://ftp.netfilter.org/pub/ulogd/ulogd-2.0.5.tar.bz2.{md5sum,sha1sum} +md5 f0f8fe1371fa28b5e06cb16aaa0111dd ulogd-2.0.5.tar.bz2 +sha1 828db7849d6788674ecf36b178f107c20e9ac1f0 ulogd-2.0.5.tar.bz2 diff --git a/buildroot/package/ulogd/ulogd.mk b/buildroot/package/ulogd/ulogd.mk new file mode 100644 index 0000000..5b0e558 --- /dev/null +++ b/buildroot/package/ulogd/ulogd.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# ulogd +# +################################################################################ + +ULOGD_VERSION = 2.0.5 +ULOGD_SOURCE = ulogd-$(ULOGD_VERSION).tar.bz2 +ULOGD_SITE = http://www.netfilter.org/projects/ulogd/files +ULOGD_CONF_OPTS = --with-dbi=no --with-pgsql=no +ULOGD_DEPENDENCIES = host-pkgconf \ + libmnl libnetfilter_acct libnetfilter_conntrack libnetfilter_log \ + libnfnetlink +ULOGD_LICENSE = GPL-2.0 +ULOGD_LICENSE_FILES = COPYING + +# DB backends need threads +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +ifeq ($(BR2_PACKAGE_MYSQL),y) +ULOGD_CONF_OPTS += --with-mysql=$(STAGING_DIR)/usr +ULOGD_DEPENDENCIES += mysql +else +ULOGD_CONF_OPTS += --with-mysql=no +endif +ifeq ($(BR2_PACKAGE_SQLITE),y) +ULOGD_DEPENDENCIES += sqlite +endif +else +ULOGD_CONF_OPTS += --with-mysql=no --without-sqlite +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +ULOGD_CONF_OPTS += --with-pcap +ULOGD_DEPENDENCIES += libpcap +else +ULOGD_CONF_OPTS += --without-pcap +endif + +ifeq ($(BR2_PACKAGE_JANSSON),y) +ULOGD_CONF_OPTS += --with-jansson +ULOGD_DEPENDENCIES += jansson +else +ULOGD_CONF_OPTS += --without-jansson +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/unionfs/0001-include-asm-ioctl.h-for-_IOC_SIZE.patch b/buildroot/package/unionfs/0001-include-asm-ioctl.h-for-_IOC_SIZE.patch new file mode 100644 index 0000000..f3d8fa1 --- /dev/null +++ b/buildroot/package/unionfs/0001-include-asm-ioctl.h-for-_IOC_SIZE.patch @@ -0,0 +1,26 @@ +From d33635fe940ff898e026d3fb77446e52f8f2bd3f Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Thu, 16 Feb 2017 14:59:30 -0300 +Subject: [PATCH] include asm/ioctl.h for _IOC_SIZE + +Signed-off-by: Gustavo Zacarias +--- + src/unionfs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/unionfs.c b/src/unionfs.c +index 5aed5ce..f6cd368 100644 +--- a/src/unionfs.c ++++ b/src/unionfs.c +@@ -32,7 +32,7 @@ + #include + #include + #include +-#include ++#include + + #ifdef linux + #include +-- +2.10.2 + diff --git a/buildroot/package/unionfs/Config.in b/buildroot/package/unionfs/Config.in new file mode 100644 index 0000000..fe03b95 --- /dev/null +++ b/buildroot/package/unionfs/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_UNIONFS + bool "unionfs (FUSE)" + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + depends on BR2_USE_MMU # libfuse + depends on !BR2_STATIC_LIBS # libfuse + select BR2_PACKAGE_LIBFUSE + help + A userspace unionfs implementation. + + https://github.com/rpodgorny/unionfs-fuse + +comment "unionfs needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/unionfs/unionfs.hash b/buildroot/package/unionfs/unionfs.hash new file mode 100644 index 0000000..fcc1d58 --- /dev/null +++ b/buildroot/package/unionfs/unionfs.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 f24d7dd64c678cefacbebf2727b61e3127b8ecb6bb9176d7117dd31503455643 unionfs-2.0.tar.gz +sha256 976ca25b7706911f1a6e981c0fd236b607f497aa0b23d407825b0aad41f7c896 0001-include-asm-ioctl.h-for-_IOC_SIZE.patch diff --git a/buildroot/package/unionfs/unionfs.mk b/buildroot/package/unionfs/unionfs.mk new file mode 100644 index 0000000..e8b2953 --- /dev/null +++ b/buildroot/package/unionfs/unionfs.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# unionfs +# +################################################################################ + +UNIONFS_VERSION = 2.0 +UNIONFS_SITE = $(call github,rpodgorny,unionfs-fuse,v$(UNIONFS_VERSION)) +UNIONFS_DEPENDENCIES = libfuse host-pkgconf +UNIONFS_LICENSE = BSD-3-Clause +UNIONFS_LICENSE_FILES = LICENSE + +$(eval $(cmake-package)) diff --git a/buildroot/package/unixodbc/0001-fix-nopthread.patch b/buildroot/package/unixodbc/0001-fix-nopthread.patch new file mode 100644 index 0000000..45933e5 --- /dev/null +++ b/buildroot/package/unixodbc/0001-fix-nopthread.patch @@ -0,0 +1,39 @@ +Fix pthread detection + +configure.in always calls AC_CHECK_COMP_OPT(pthread) which succeeds with the +toolchain used although it does not contain thread support: + +checking for mutex_lock in -lthread ... no +checking for pthread_mutex_lock in -lpthread... no +checking for pthread_mutex_lock in -lc... no +checking if compiler accepts -pthread... yes +checking for pthread_mutex_lock in -lc... no +checking for pthread_mutex_lock in -lpthread... no + +This positive configure check leads to + + CFLAGS="$CFLAGS -pthread" + +in ./configure, line 15757 which causes a compilation bug +/home/br/br4/output/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/4.8.3/../../../../arm-buildroot-linux-uclibcgnueab + +using this defconfig +http://autobuild.buildroot.net/results/e86/e86e97ff7887f1bdc6bf913498392ff50f56ea88/defconfig + +This patch disables the freebsd-only code path. Patching configure directly +prevents the need for autoreconf. + +Signed-off-by: Bernd Kuhls + +diff -uNr unixODBC-2.3.2.org/configure unixODBC-2.3.2/configure +--- unixODBC-2.3.2.org/configure 2013-10-08 10:56:03.000000000 +0200 ++++ unixODBC-2.3.2/configure 2015-03-13 21:19:59.210429211 +0100 +@@ -15746,7 +15746,7 @@ + + fi + +- if test "x$gotthread" = "xno"; then ++ if test "x$gotthread" = "xnot_needed_for_buildroot"; then + if test "x$ac_cv_c_compiler_gnu" = "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler accepts -pthread" >&5 + $as_echo_n "checking if compiler accepts -pthread... " >&6; } diff --git a/buildroot/package/unixodbc/Config.in b/buildroot/package/unixodbc/Config.in new file mode 100644 index 0000000..d5434d1 --- /dev/null +++ b/buildroot/package/unixodbc/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_UNIXODBC + bool "unixodbc" + help + The unixODBC Project goals are to develop and promote + unixODBC to be the definitive standard for ODBC on non MS + Windows platforms. + + http://www.unixodbc.org diff --git a/buildroot/package/unixodbc/unixodbc.hash b/buildroot/package/unixodbc/unixodbc.hash new file mode 100644 index 0000000..e99169c --- /dev/null +++ b/buildroot/package/unixodbc/unixodbc.hash @@ -0,0 +1,4 @@ +# From ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz.md5 +md5 bd25d261ca1808c947cb687e2034be81 unixODBC-2.3.4.tar.gz +# Locally computed +sha256 2e1509a96bb18d248bf08ead0d74804957304ff7c6f8b2e5965309c632421e39 unixODBC-2.3.4.tar.gz diff --git a/buildroot/package/unixodbc/unixodbc.mk b/buildroot/package/unixodbc/unixodbc.mk new file mode 100644 index 0000000..d4aa02e --- /dev/null +++ b/buildroot/package/unixodbc/unixodbc.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# unixodbc +# +################################################################################ + +UNIXODBC_VERSION = 2.3.4 +UNIXODBC_SOURCE = unixODBC-$(UNIXODBC_VERSION).tar.gz +UNIXODBC_SITE = ftp://ftp.unixodbc.org/pub/unixODBC +UNIXODBC_INSTALL_STAGING = YES +UNIXODBC_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (programs) +UNIXODBC_LICENSE_FILES = COPYING exe/COPYING + +UNIXODBC_CONF_OPTS = --enable-drivers --enable-driver-conf + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +UNIXODBC_CONF_OPTS += --enable-iconv +UNIXODBC_DEPENDENCIES += libiconv +else +UNIXODBC_CONF_OPTS += --disable-iconv +endif + +ifeq ($(BR2_PACKAGE_LIBTOOL),y) +UNIXODBC_CONF_OPTS += --without-included-ltdl +UNIXODBC_DEPENDENCIES += libtool +else +UNIXODBC_CONF_OPTS += --with-included-ltdl +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +UNIXODBC_CONF_OPTS += --enable-readline +UNIXODBC_DEPENDENCIES += readline +else +UNIXODBC_CONF_OPTS += --disable-readline +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/unrar/Config.in b/buildroot/package/unrar/Config.in new file mode 100644 index 0000000..29696c3 --- /dev/null +++ b/buildroot/package/unrar/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_UNRAR + bool "unrar" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_WCHAR + help + RAR file uncompressor. + + http://www.rarlab.com/rar_add.htm + +comment "unrar needs a toolchain w/ C++, wchar, threads" + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP \ + || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/unrar/unrar.hash b/buildroot/package/unrar/unrar.hash new file mode 100644 index 0000000..81688d7 --- /dev/null +++ b/buildroot/package/unrar/unrar.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 9b66e4353a9944bc140eb2a919ff99482dd548f858f5e296d809e8f7cdb2fcf4 unrarsrc-5.5.8.tar.gz +sha256 6ecc1687808b7d66b24f874755abfed7464d9751ed0001cd4e8e5d9bf397ff8a license.txt diff --git a/buildroot/package/unrar/unrar.mk b/buildroot/package/unrar/unrar.mk new file mode 100644 index 0000000..d6c97df --- /dev/null +++ b/buildroot/package/unrar/unrar.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# unrar +# +################################################################################ + +UNRAR_VERSION = 5.5.8 +UNRAR_SOURCE = unrarsrc-$(UNRAR_VERSION).tar.gz +UNRAR_SITE = http://www.rarlab.com/rar +UNRAR_LICENSE = unrar +UNRAR_LICENSE_FILES = license.txt + +define UNRAR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CXX="$(TARGET_CXX)" STRIP="/bin/true" \ + CXXFLAGS="$(TARGET_CXXFLAGS) -pthread" \ + LDFLAGS="$(TARGET_LDFLAGS) -pthread" -C $(@D) +endef + +define UNRAR_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/unscd/Config.in b/buildroot/package/unscd/Config.in new file mode 100644 index 0000000..23cc5a4 --- /dev/null +++ b/buildroot/package/unscd/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_UNSCD + bool "unscd" + depends on BR2_TOOLCHAIN_USES_GLIBC + help + Micro Name Service Caching Daemon + + A daemon which handles passwd, group and host lookups for + running programs and caches the results for the next query. + You only need this package if you are using slow Name Services + like LDAP, NIS or NIS+. + + This particular NSCD is a complete rewrite of the GNU glibc + nscd which is a single threaded server process which offloads + all NSS lookups to worker children; cache hits are handled by + the parent, and only cache misses start worker children, + making the parent immune to resource leaks, hangs, and crashes + in NSS libraries. + + It should mostly be a drop-in replacement for existing + installs using nscd. + + http://busybox.net/~vda/unscd + +comment "unscd needs a glibc toolchain" + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/unscd/S46unscd b/buildroot/package/unscd/S46unscd new file mode 100644 index 0000000..6a51eec --- /dev/null +++ b/buildroot/package/unscd/S46unscd @@ -0,0 +1,25 @@ +#!/bin/sh + +NAME="nscd" +DAEMON="/usr/sbin/${NAME}" +PID_F="/var/run/nscd/${NAME}.pid" + +case "$1" in +start) + printf "Starting ${NAME}: " + start-stop-daemon -S -p ${PID_F} -x ${DAEMON} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +stop) + printf "Stopping ${NAME}: " + start-stop-daemon -K -p ${PID_F} + [ $? -eq 0 ] && echo "OK" || echo "FAIL" + ;; +restart|reload) + $0 stop + $0 start + ;; +*) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac diff --git a/buildroot/package/unscd/nscd.conf b/buildroot/package/unscd/nscd.conf new file mode 100644 index 0000000..3eb08ab --- /dev/null +++ b/buildroot/package/unscd/nscd.conf @@ -0,0 +1,33 @@ +# /etc/nscd.conf +# +# An example Name Service Cache config file. This file is needed by nscd. +# +server-user unscd +debug-level 0 + +enable-cache passwd yes +positive-time-to-live passwd 600 +negative-time-to-live passwd 20 +suggested-size passwd 1001 +check-files passwd yes + +enable-cache group yes +positive-time-to-live group 3600 +negative-time-to-live group 60 +suggested-size group 1001 +check-files group yes + +# hosts caching is broken with gethostby* calls, hence is now disabled +# by default. Specifically, the caching does not obey DNS TTLs, and +# thus could lead to problems if the positive-time-to-live is +# significantly larger than the actual TTL. +# +# You should really use a caching nameserver instead of nscd for this +# sort of request. However, you can easily re-enable this by default. +enable-cache hosts no +positive-time-to-live hosts 3600 +negative-time-to-live hosts 20 +suggested-size hosts 1001 +check-files hosts yes + +# unscd does not support services caching diff --git a/buildroot/package/unscd/unscd.hash b/buildroot/package/unscd/unscd.hash new file mode 100644 index 0000000..ab8ffdc --- /dev/null +++ b/buildroot/package/unscd/unscd.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 4c1f83dcd120469fceef749050cb29fa666fa4666bd308dfe92e933a4c200d55 nscd-0.52.c diff --git a/buildroot/package/unscd/unscd.mk b/buildroot/package/unscd/unscd.mk new file mode 100644 index 0000000..f0eb5d6 --- /dev/null +++ b/buildroot/package/unscd/unscd.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# unscd +# +################################################################################ + +UNSCD_VERSION = 0.52 +UNSCD_SOURCE = nscd-$(UNSCD_VERSION).c +UNSCD_SITE = http://busybox.net/~vda/unscd +UNSCD_LICENSE = GPL-2.0 +UNSCD_LICENSE_FILES = $(UNSCD_SOURCE) + +define UNSCD_EXTRACT_CMDS + cp $(DL_DIR)/$($(PKG)_SOURCE) $(@D)/ +endef + +define UNSCD_BUILD_CMDS + cd $(@D); \ + $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -o nscd $(UNSCD_SOURCE) +endef + +define UNSCD_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -D $(@D)/nscd $(TARGET_DIR)/usr/sbin/nscd + $(INSTALL) -m 600 -D package/unscd/nscd.conf $(TARGET_DIR)/etc/nscd.conf +endef + +define UNSCD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/unscd/S46unscd \ + $(TARGET_DIR)/etc/init.d/S46unscd +endef + +define UNSCD_USERS + unscd -1 unscd -1 * - - - unscd user +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/unzip/0001-Add-a-CMakeFile.txt-to-ease-cross-compilation.patch b/buildroot/package/unzip/0001-Add-a-CMakeFile.txt-to-ease-cross-compilation.patch new file mode 100644 index 0000000..cbc58e4 --- /dev/null +++ b/buildroot/package/unzip/0001-Add-a-CMakeFile.txt-to-ease-cross-compilation.patch @@ -0,0 +1,53 @@ +From 992a497e9c5c421d3931e02a01e9d7c159f27135 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli +Date: Thu, 26 Nov 2015 12:49:10 +0100 +Subject: [PATCH] Add a CMakeFile.txt to ease cross-compilation + +Info-ZIP's UnZip 6.0 has a complex, hand-crafted Makefile with a +companion configure script which try to support an extremely wide +range of UNIX-like operating systems. The result is an overly complex +mass of code that does not support cross-compilation in several ways. + +Zip 3.0 has a similar build system, and has as many as 6 patches in +Buildroot to cross-compile [0]. UnZip fails at building even with +these patches adapted and a few more on top of them. + +Instead of tweaking and fixing a huge and complex build system, skip +it entirely and add a pretty simple CMakeLists.txt that cross-compiles +smoothly using CMake. It also preserves all of the Buildroot-provided +build options and flags as the original Makefile does. + +[0] http://git.buildroot.net/buildroot/tree/package/infozip?id=2015.11-rc3 + +Signed-off-by: Luca Ceresoli +--- + CMakeLists.txt | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + create mode 100644 CMakeLists.txt + +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 0000000..27951b4 +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,17 @@ ++cmake_minimum_required(VERSION 2.8) ++INCLUDE(CheckFunctionExists) ++ ++project(unzip C) ++ ++CHECK_FUNCTION_EXISTS(lchmod HAVE_LCHMOD) ++if(NOT HAVE_LCHMOD) ++add_definitions("-DNO_LCHMOD") ++endif() ++ ++set(UNZIP_SOURCES unzip.c crc32.c crypt.c envargs.c explode.c ++ extract.c fileio.c globals.c inflate.c list.c match.c process.c ++ ttyio.c ubz2err.c unreduce.c unshrink.c zipinfo.c unix/unix.c) ++ ++include_directories(.) ++add_executable(unzip ${UNZIP_SOURCES}) ++install(TARGETS unzip DESTINATION bin) +-- +1.9.1 + diff --git a/buildroot/package/unzip/Config.in b/buildroot/package/unzip/Config.in new file mode 100644 index 0000000..da6902e --- /dev/null +++ b/buildroot/package/unzip/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_UNZIP + bool "unzip" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + UnZip is an extraction utility for archives compressed in + .zip format (also called "zipfiles"). Although highly + compatible both with PKWARE's PKZIP and PKUNZIP utilities + for MS-DOS and with Info-ZIP's own Zip program, our primary + objectives have been portability and non-MSDOS + functionality. + + http://www.info-zip.org/UnZip.html diff --git a/buildroot/package/unzip/unzip.hash b/buildroot/package/unzip/unzip.hash new file mode 100644 index 0000000..a138cc2 --- /dev/null +++ b/buildroot/package/unzip/unzip.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37 unzip60.tgz diff --git a/buildroot/package/unzip/unzip.mk b/buildroot/package/unzip/unzip.mk new file mode 100644 index 0000000..7d48d25 --- /dev/null +++ b/buildroot/package/unzip/unzip.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# unzip +# +################################################################################ + +UNZIP_VERSION = 60 +UNZIP_SOURCE = unzip$(UNZIP_VERSION).tgz +UNZIP_SITE = ftp://ftp.info-zip.org/pub/infozip/src +# take precedence over busybox implementation +UNZIP_DEPENDENCIES = $(if $(BR2_PACKAGE_BUSYBOX),busybox) +UNZIP_LICENSE = Info-ZIP +UNZIP_LICENSE_FILES = LICENSE + +$(eval $(cmake-package)) diff --git a/buildroot/package/upmpdcli/Config.in b/buildroot/package/upmpdcli/Config.in new file mode 100644 index 0000000..cf85a79 --- /dev/null +++ b/buildroot/package/upmpdcli/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_UPMPDCLI + bool "upmpdcli" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # libupnpp, libmicrohttpd + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # C++11, libupnpp + select BR2_PACKAGE_JSONCPP + select BR2_PACKAGE_LIBMICROHTTPD + select BR2_PACKAGE_LIBMPDCLIENT + select BR2_PACKAGE_LIBUPNPP + help + upmpdcli is a UPnP Media Renderer front-end for MPD, the Music + Player Daemon. It supports UPnP gapless track transitions and + the OpenHome ohMedia services. + + http://www.lesbonscomptes.com/upmpdcli/ + +comment "upmpdcli needs a toolchain w/ C++, threads, gcc >= 4.9" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/buildroot/package/upmpdcli/S99upmpdcli b/buildroot/package/upmpdcli/S99upmpdcli new file mode 100644 index 0000000..71d19a5 --- /dev/null +++ b/buildroot/package/upmpdcli/S99upmpdcli @@ -0,0 +1,40 @@ +#!/bin/sh + +NAME=upmpdcli +DAEMON=/usr/bin/$NAME +CONFFILE=/etc/$NAME.conf +PIDFILE=/var/run/$NAME.pid +DAEMON_ARGS="-D -c $CONFFILE" + +# Sanity checks +test -f $DAEMON || exit 0 + +start() { + printf "Starting $NAME: " + start-stop-daemon --start --quiet --background --exec $DAEMON \ + -- $DAEMON_ARGS \ + && echo "OK" || echo "FAIL" +} + +stop() { + printf "Stopping $NAME: " + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + && echo "OK" || echo "FAIL" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + sleep 1 + start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/package/upmpdcli/upmpdcli.hash b/buildroot/package/upmpdcli/upmpdcli.hash new file mode 100644 index 0000000..e497352 --- /dev/null +++ b/buildroot/package/upmpdcli/upmpdcli.hash @@ -0,0 +1,5 @@ +# From http://www.lesbonscomptes.com/upmpdcli/downloads/upmpdcli-1.2.15.tar.gz.sha256: +sha256 93d2b9cfd6cb8643c5a23d4115b44622d76c71abe15db9bb8d5b4d83f4d9b49c upmpdcli-1.2.15.tar.gz + +# Hash for license file: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/upmpdcli/upmpdcli.mk b/buildroot/package/upmpdcli/upmpdcli.mk new file mode 100644 index 0000000..ad41f85 --- /dev/null +++ b/buildroot/package/upmpdcli/upmpdcli.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# upmpdcli +# +################################################################################ + +UPMPDCLI_VERSION = 1.2.15 +UPMPDCLI_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads +UPMPDCLI_LICENSE = GPL-2.0+ +UPMPDCLI_LICENSE_FILES = COPYING +UPMPDCLI_DEPENDENCIES = host-pkgconf libmpdclient libupnpp libmicrohttpd jsoncpp + +# Upmpdcli only runs if user upmpdcli exists +define UPMPDCLI_USERS + upmpdcli -1 upmpdcli -1 * - - audio Upmpdcli MPD UPnP Renderer Front-End +endef + +define UPMPDCLI_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 package/upmpdcli/S99upmpdcli $(TARGET_DIR)/etc/init.d/S99upmpdcli +endef + +define UPMPDCLI_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 644 $(@D)/systemd/upmpdcli.service \ + $(TARGET_DIR)/usr/lib/systemd/system/upmpdcli.service + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/upmpdcli.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/upmpdcli.service +endef + +define UPMPDCLI_INSTALL_CONF_FILE + $(INSTALL) -D -m 0755 $(@D)/src/upmpdcli.conf-dist $(TARGET_DIR)/etc/upmpdcli.conf +endef + +UPMPDCLI_POST_INSTALL_TARGET_HOOKS += UPMPDCLI_INSTALL_CONF_FILE + +$(eval $(autotools-package)) diff --git a/buildroot/package/upower/0001-daemon-fix-get_critical_action.patch b/buildroot/package/upower/0001-daemon-fix-get_critical_action.patch new file mode 100644 index 0000000..02fc55c --- /dev/null +++ b/buildroot/package/upower/0001-daemon-fix-get_critical_action.patch @@ -0,0 +1,34 @@ +From 28cee8e2845b094488c337c4ecfa84ada0b6be60 Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Tue, 23 Feb 2016 09:51:07 +0100 +Subject: [PATCH] daemon: fix get_critical_action() + +Fix copy&paste error from e7e9156f that called the wrong _complete_ function +for up_daemon_get_critical_action(). + +https://bugs.freedesktop.org/show_bug.cgi?id=94262 + +[rebase on 0.99.4] +Signed-off-by: Romain Naour +--- + src/up-daemon.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/up-daemon.c b/src/up-daemon.c +index be14cbe..e95f904 100644 +--- a/src/up-daemon.c ++++ b/src/up-daemon.c +@@ -435,8 +435,8 @@ up_daemon_get_critical_action (UpExportedDaemon *skeleton, + GDBusMethodInvocation *invocation, + UpDaemon *daemon) + { +- up_exported_daemon_complete_get_display_device (skeleton, invocation, +- up_backend_get_critical_action (daemon->priv->backend)); ++ up_exported_daemon_complete_get_critical_action (skeleton, invocation, ++ up_backend_get_critical_action (daemon->priv->backend)); + return TRUE; + } + +-- +2.9.3 + diff --git a/buildroot/package/upower/Config.in b/buildroot/package/upower/Config.in new file mode 100644 index 0000000..e564384 --- /dev/null +++ b/buildroot/package/upower/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_UPOWER + bool "upower" + depends on BR2_PACKAGE_HAS_UDEV + depends on BR2_TOOLCHAIN_HAS_THREADS # libgudev, libusb + depends on BR2_USE_MMU # libgudev + depends on BR2_USE_WCHAR # libgudev + select BR2_PACKAGE_LIBGUDEV + select BR2_PACKAGE_LIBUSB + help + UPower is an abstraction for enumerating power devices, + listening to device events and querying history and + statistics. Any application or service on the system can + access the org.freedesktop.UPower service via the system + message bus. + + Note: upowerd require CONFIG_TIMER_STATS enabled in the + Linux kernel. + + https://upower.freedesktop.org/ + +comment "upower needs udev /dev management" + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_HAS_UDEV + +comment "upower needs a toolchain w/ threads, wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/upower/upower.hash b/buildroot/package/upower/upower.hash new file mode 100644 index 0000000..0df67b4 --- /dev/null +++ b/buildroot/package/upower/upower.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9ca325a6ccef505529b268ebbbd9becd0ce65a65f6ac7ee31e2e5b17648037b0 upower-0.99.4.tar.xz diff --git a/buildroot/package/upower/upower.mk b/buildroot/package/upower/upower.mk new file mode 100644 index 0000000..79dc5e8 --- /dev/null +++ b/buildroot/package/upower/upower.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# upower +# +################################################################################ + +UPOWER_VERSION = 0.99.4 +UPOWER_SOURCE = upower-$(UPOWER_VERSION).tar.xz +UPOWER_SITE = https://upower.freedesktop.org/releases +UPOWER_LICENSE = GPL-2.0+ +UPOWER_LICENSE_FILES = COPYING + +# libupower-glib.so +UPOWER_INSTALL_STAGING = YES + +UPOWER_DEPENDENCIES = \ + host-intltool \ + host-pkgconf \ + libgudev \ + libusb \ + udev + +UPOWER_CONF_OPTS = --disable-man-pages --disable-tests + +$(eval $(autotools-package)) diff --git a/buildroot/package/upx/upx.hash b/buildroot/package/upx/upx.hash new file mode 100644 index 0000000..bfcf932 --- /dev/null +++ b/buildroot/package/upx/upx.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 527ce757429841f51675352b1f9f6fc8ad97b18002080d7bf8672c466d8c6a3c upx-3.91-src.tar.bz2 diff --git a/buildroot/package/upx/upx.mk b/buildroot/package/upx/upx.mk new file mode 100644 index 0000000..1fe7162 --- /dev/null +++ b/buildroot/package/upx/upx.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# upx +# +################################################################################ + +UPX_VERSION = 3.91 +UPX_SITE = http://upx.sourceforge.net/download +UPX_SOURCE = upx-$(UPX_VERSION)-src.tar.bz2 +UPX_LICENSE = GPL-2.0+ +UPX_LICENSE_FILES = COPYING + +HOST_UPX_DEPENDENCIES = host-ucl host-zlib + +# We need to specify all, otherwise the default target only prints a message +# stating to "please choose a target for 'make'"... :-( +define HOST_UPX_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) CPPFLAGS="$(HOST_CPPFLAGS)" \ + LDFLAGS="$(HOST_LDFLAGS)" UPX_UCLDIR=$(HOST_DIR) \ + CXXFLAGS_WERROR= \ + -C $(@D) all +endef + +# UPX has no install procedure, so install it manually. +define HOST_UPX_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/src/upx.out $(HOST_DIR)/bin/upx +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/urg/0001-select-h.patch b/buildroot/package/urg/0001-select-h.patch new file mode 100644 index 0000000..1d09bb5 --- /dev/null +++ b/buildroot/package/urg/0001-select-h.patch @@ -0,0 +1,39 @@ +From 08c7ebec7c58fbc9c1cc0542863b34119c75c91f Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Thu, 15 Sep 2016 06:19:57 +0200 +Subject: [PATCH] Serial driver: add missing header to C and C++ serial driver + +Fixes: + http://autobuild.buildroot.net/results/cd7/cd76699188d2ee99b5f2d32b6a797de0d832a192/ + +Signed-off-by: Samuel Martin +--- + src/c/connection/serial_ctrl_lin.c | 1 + + src/cpp/connection/SerialDevice_lin.cpp | 1 + + 2 files changed, 2 insertions(+) + +Index: b/src/c/connection/serial_ctrl_lin.c +=================================================================== +--- a/src/c/connection/serial_ctrl_lin.c ++++ b/src/c/connection/serial_ctrl_lin.c +@@ -18,6 +18,7 @@ + #include + #include + ++#include + //#include + + enum { +Index: b/src/cpp/connection/SerialDevice_lin.cpp +=================================================================== +--- a/src/cpp/connection/SerialDevice_lin.cpp ++++ b/src/cpp/connection/SerialDevice_lin.cpp +@@ -13,7 +13,7 @@ + #include + #include + #include +- ++#include + + class RawSerialDevice + { diff --git a/buildroot/package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch b/buildroot/package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch new file mode 100644 index 0000000..e3db898 --- /dev/null +++ b/buildroot/package/urg/0002-urg-gcc6-fix-narrowing-conversion.patch @@ -0,0 +1,99 @@ +urg: fix 'narrowing conversion' with gcc6 + +Fixes: + http://autobuild.buildroot.net/results/d0c/d0cd11163753db69a14c02e941dbda40e5f98bba/ + +Signed-off-by: Samuel Martin + +--- a/src/cpp/urg/ScipHandler.cpp 2016-09-11 16:11:16.083995214 +0200 ++++ b/src/cpp/urg/ScipHandler.cpp 2016-09-11 16:11:24.380832543 +0200 +@@ -120,7 +120,7 @@ struct ScipHandler::pImpl + + // QT ̔s + int return_code = -1; +- char qt_expected_response[] = { 0, -1 }; ++ char qt_expected_response[] = { 0, (char)-1 }; + // return_code g߁AsetLaserOutput() p QT 𑗐M + if (response(return_code, "QT\n", qt_expected_response)) { + laser_state_ = LaserOff; +@@ -139,7 +139,7 @@ struct ScipHandler::pImpl + + } else if (return_code == Scip11Response) { + // SCIP1.1 vgȐꍇ̂݁ASCIP2.0 𑗐M +- char scip20_expected_response[] = { 0, -1 }; ++ char scip20_expected_response[] = { 0, (char)-1 }; + if (! response(return_code, "SCIP2.0\n", scip20_expected_response)) { + error_message_ = + "SCIP1.1 protocol is not supported. Please update URG firmware, or reconnect after a few seconds because sensor is booting."; +@@ -150,7 +150,7 @@ struct ScipHandler::pImpl + + } else if (return_code == 0xE) { + // TM [hƂ݂ȂATM2 𔭍s +- char tm2_expected_response[] = { 0, -1 }; ++ char tm2_expected_response[] = { 0, (char)-1 }; + if (response(return_code, "TM2\n", tm2_expected_response)) { + laser_state_ = LaserOff; + return changeBothBaudrate(baudrate); +@@ -202,7 +202,7 @@ struct ScipHandler::pImpl + snprintf(send_buffer, 10, "SS%06ld\n", baudrate); + int return_code = -1; + // !!! ɐݒΏۂ̃{[[gȀꍇ̖߂l ss_expected... ɒlj +- char ss_expected_response[] = { 0, 0x3, 0x4, 0xf, -1 }; ++ char ss_expected_response[] = { 0, 0x3, 0x4, 0xf, (char)-1 }; + if (! response(return_code, send_buffer, ss_expected_response)) { + error_message_ = "Baudrate change fail."; + return false; +@@ -216,7 +216,7 @@ struct ScipHandler::pImpl + { + // PP ̑Mƃf[^̎M + int return_code = -1; +- char pp_expected_response[] = { 0, -1 }; ++ char pp_expected_response[] = { 0, (char)-1 }; + vector lines; + if (! response(return_code, "PP\n", pp_expected_response, &lines)) { + error_message_ = "PP fail."; +@@ -356,7 +356,7 @@ struct ScipHandler::pImpl + + if (on) { + int return_code = -1; +- char expected_response[] = { 0, -1 }; ++ char expected_response[] = { 0, (char)-1 }; + if (! response(return_code, "BM\n", expected_response)) { + error_message_ = "BM fail."; + return false; +@@ -369,7 +369,7 @@ struct ScipHandler::pImpl + if (! mx_capturing_) { + // 邽߂ QT ł́A҂‚ׂ + int return_code = -1; +- char qt_expected_response[] = { 0, -1 }; ++ char qt_expected_response[] = { 0, (char)-1 }; + if (! response(return_code, "QT\n", qt_expected_response)) { + return false; + } +@@ -777,7 +777,7 @@ bool ScipHandler::loadParameter(RangeSen + bool ScipHandler::versionLines(vector& lines) + { + int return_code = -1; +- char expected_response[] = { 0, -1 }; ++ char expected_response[] = { 0, (char)-1 }; + if (! pimpl->response(return_code, "VV\n", expected_response, &lines)) { + return false; + } +@@ -792,7 +792,7 @@ bool ScipHandler::setRawTimestampMode(bo + + // TM0 or TM2 ̑M + int return_code = -1; +- char expected_response[] = { 0, -1 }; ++ char expected_response[] = { 0, (char)-1 }; + if (! pimpl->response(return_code, send_command, expected_response)) { + pimpl->error_message_ = (on) ? "TM0 fail." : "TM2 fail."; + return false; +@@ -809,7 +809,7 @@ bool ScipHandler::rawTimestamp(int* time + { + // TM1 ̒lԂ + int return_code = -1; +- char expected_response[] = { 0, -1 }; ++ char expected_response[] = { 0, (char)-1 }; + vector lines; + if (! pimpl->response(return_code, "TM1\n", expected_response, &lines)) { + pimpl->error_message_ = "TM1 fail."; diff --git a/buildroot/package/urg/Config.in b/buildroot/package/urg/Config.in new file mode 100644 index 0000000..c602624 --- /dev/null +++ b/buildroot/package/urg/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_URG + bool "urg" + depends on BR2_INSTALL_LIBSTDCPP + help + Library to control Hokuyo's URG series sensors. + + https://sourceforge.net/p/urgnetwork/wiki/Home/ + +comment "urg needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/urg/urg.hash b/buildroot/package/urg/urg.hash new file mode 100644 index 0000000..f2c5f14 --- /dev/null +++ b/buildroot/package/urg/urg.hash @@ -0,0 +1,6 @@ +# from http://pkgs.fedoraproject.org/repo/pkgs/urg/urg-0.8.18.zip/ +md5 93f90d2ccc36e784407c5282ef6bd2cb urg-0.8.18.zip +# Locally calculated +sha256 b2cab7e539c90c60fc99a2350a42b5d5390ff952b694b196c3cbb54623cfee7f urg-0.8.18.zip +# License files, locally calculated +sha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1 COPYING diff --git a/buildroot/package/urg/urg.mk b/buildroot/package/urg/urg.mk new file mode 100644 index 0000000..966627f --- /dev/null +++ b/buildroot/package/urg/urg.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# urg +# +################################################################################ + +URG_VERSION = 0.8.18 +URG_SITE = http://pkgs.fedoraproject.org/repo/pkgs/urg/urg-0.8.18.zip/md5/93f90d2ccc36e784407c5282ef6bd2cb +URG_SOURCE = urg-$(URG_VERSION).zip +URG_LICENSE = LGPL-3.0 +URG_LICENSE_FILES = COPYING + +URG_INSTALL_STAGING = YES + +ifeq ($(BR2_PACKAGE_SDL)$(BR2_PACKAGE_SDL_NET),yy) +URG_DEPENDENCIES += sdl sdl_net +URG_CONF_OPTS += \ + --with-sdl-prefix=$(STAGING_DIR)/usr \ + --with-sdl-exec-prefix=$(STAGING_DIR)/usr +else +URG_CONF_OPTS = --without-sdl +URG_CONF_ENV += ac_cv_path_SDL_CONFIG="" +endif + +URG_CONFIG_SCRIPTS = c_urg-config urg-config + +define URG_EXTRACT_CMDS + $(UNZIP) -d $(BUILD_DIR) $(DL_DIR)/$(URG_SOURCE) +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/usb_modeswitch/0001-Makefile-allow-extra-configure-flags-to-be-passed-to.patch b/buildroot/package/usb_modeswitch/0001-Makefile-allow-extra-configure-flags-to-be-passed-to.patch new file mode 100644 index 0000000..9e1e681 --- /dev/null +++ b/buildroot/package/usb_modeswitch/0001-Makefile-allow-extra-configure-flags-to-be-passed-to.patch @@ -0,0 +1,29 @@ +From 1309df373c882f27f476130b06746a6d1e1a0f85 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Fri, 3 Nov 2017 23:21:44 +0100 +Subject: [PATCH] Makefile: allow extra configure flags to be passed to jimtcl + on the make command line + +E.G. to pass --host / --build for cross compilation. + +Signed-off-by: Peter Korsgaard +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index a151e2a..94dabd9 100644 +--- a/Makefile ++++ b/Makefile +@@ -19,7 +19,7 @@ TCL ?= $(HOST_TCL) + else + TCL ?= /usr/bin/tclsh + endif +-JIM_CONFIGURE_OPTS = --disable-lineedit \ ++override JIM_CONFIGURE_OPTS += --disable-lineedit \ + --with-out-jim-ext="stdlib posix load signal syslog" --prefix=/usr + + .PHONY: clean install install-common uninstall \ +-- +2.11.0 + diff --git a/buildroot/package/usb_modeswitch/Config.in b/buildroot/package/usb_modeswitch/Config.in new file mode 100644 index 0000000..f709a55 --- /dev/null +++ b/buildroot/package/usb_modeswitch/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_USB_MODESWITCH + bool "usb_modeswitch" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + Some USB devices such as 3G/4G broadband modems power-up + in mass storage mode to provide access to drivers + for the device's application mode. usb_modeswitch + changes the mode of such devices from the initial power-up + mode to the application mode. + Specific configuration data for each device model is required. + + usb_modeswitch can be used with the usb_modeswitch_data + package and eudev/systemd for automatic mode switching + when devices are connected. + + For more information search the Internet for "Virtual CD-ROM + switching utility". + + http://www.draisberghof.de/usb_modeswitch/ + +comment "usb_modeswitch needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/usb_modeswitch/usb_modeswitch.hash b/buildroot/package/usb_modeswitch/usb_modeswitch.hash new file mode 100644 index 0000000..b202e63 --- /dev/null +++ b/buildroot/package/usb_modeswitch/usb_modeswitch.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 31c0be280d49a99ec3dc0be3325bef320d9c04b50714ef0ce1e36a614d687633 usb-modeswitch-2.5.0.tar.bz2 diff --git a/buildroot/package/usb_modeswitch/usb_modeswitch.mk b/buildroot/package/usb_modeswitch/usb_modeswitch.mk new file mode 100644 index 0000000..8dd712f --- /dev/null +++ b/buildroot/package/usb_modeswitch/usb_modeswitch.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# usb_modeswitch +# +################################################################################ + +USB_MODESWITCH_VERSION = 2.5.0 +USB_MODESWITCH_SOURCE = usb-modeswitch-$(USB_MODESWITCH_VERSION).tar.bz2 +USB_MODESWITCH_SITE = http://www.draisberghof.de/usb_modeswitch +USB_MODESWITCH_DEPENDENCIES = libusb +USB_MODESWITCH_LICENSE = GPL-2.0+ +USB_MODESWITCH_LICENSE_FILES = COPYING + +USB_MODESWITCH_BUILD_TARGETS = static +USB_MODESWITCH_INSTALL_TARGETS = install-static + +ifeq ($(BR2_PACKAGE_TCL)$(BR2_PACKAGE_TCL_SHLIB_ONLY),y) +USB_MODESWITCH_DEPENDENCIES += tcl +USB_MODESWITCH_BUILD_TARGETS = script +USB_MODESWITCH_INSTALL_TARGETS = install-script +endif + +# build system of embedded jimtcl doesn't use autotools, but does use +# an old version of gnuconfig which doesn't know all the architectures +# supported by Buildroot, so update config.guess / config.sub like we +# do in pkg-autotools.mk +USB_MODESWITCH_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK + +define USB_MODESWITCH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(if $(BR2_INSTALL_LIBSTDCPP),,CXX=false) \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE -Wall -I." \ + JIM_CONFIGURE_OPTS="--host=$(GNU_TARGET_NAME) --build=$(GNU_HOST_NAME)" \ + -C $(@D) $(USB_MODESWITCH_BUILD_TARGETS) +endef + +define USB_MODESWITCH_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + DESTDIR=$(TARGET_DIR) \ + -C $(@D) $(USB_MODESWITCH_INSTALL_TARGETS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/usb_modeswitch_data/Config.in b/buildroot/package/usb_modeswitch_data/Config.in new file mode 100644 index 0000000..95b2a07 --- /dev/null +++ b/buildroot/package/usb_modeswitch_data/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_USB_MODESWITCH_DATA + bool "usb_modeswitch_data" + depends on BR2_TOOLCHAIN_HAS_THREADS # usb_modeswitch -> libusb + select BR2_PACKAGE_USB_MODESWITCH + help + USB mode switch data + Contains udev rules and events to allow usb_modeswitch to + function automatically + + http://www.draisberghof.de/usb_modeswitch/ + +comment "usb_modeswitch_data needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.hash b/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.hash new file mode 100644 index 0000000..e19fcac --- /dev/null +++ b/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 e2dcfd9d28928d8d8f03381571a23442b3c50d48d343bc40a1a07d01662738d1 usb-modeswitch-data-20170205.tar.bz2 diff --git a/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.mk b/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.mk new file mode 100644 index 0000000..4f634cd --- /dev/null +++ b/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# usb_modeswitch_data +# +################################################################################ + +USB_MODESWITCH_DATA_VERSION = 20170205 +USB_MODESWITCH_DATA_SOURCE = usb-modeswitch-data-$(USB_MODESWITCH_DATA_VERSION).tar.bz2 +USB_MODESWITCH_DATA_SITE = http://www.draisberghof.de/usb_modeswitch +USB_MODESWITCH_DATA_DEPENDENCIES = usb_modeswitch +USB_MODESWITCH_DATA_LICENSE = GPL-2.0+ +USB_MODESWITCH_DATA_LICENSE_FILES = COPYING + +# Nothing to build, it is a pure data package + +define USB_MODESWITCH_DATA_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/usbmount/0001-rules-fix.patch b/buildroot/package/usbmount/0001-rules-fix.patch new file mode 100644 index 0000000..c71b613 --- /dev/null +++ b/buildroot/package/usbmount/0001-rules-fix.patch @@ -0,0 +1,19 @@ +Signed-off-by: Yegor Yefremov +--- + usbmount.rules | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: b/usbmount.rules +=================================================================== +--- a/usbmount.rules ++++ b/usbmount.rules +@@ -1,7 +1,7 @@ + # Rules for USBmount -*- conf -*- + + KERNEL=="sd*", DRIVERS=="sbp2", ACTION=="add", RUN+="/usr/share/usbmount/usbmount add" +-KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/usr/share/usbmount/usbmount add" +-KERNEL=="ub*", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/usr/share/usbmount/usbmount add" ++KERNEL=="sd*", SUBSYSTEM=="block", ACTION=="add", RUN+="/usr/share/usbmount/usbmount add" ++KERNEL=="ub*", SUBSYSTEM=="block", ACTION=="add", RUN+="/usr/share/usbmount/usbmount add" + KERNEL=="sd*", ACTION=="remove", RUN+="/usr/share/usbmount/usbmount remove" + KERNEL=="ub*", ACTION=="remove", RUN+="/usr/share/usbmount/usbmount remove" diff --git a/buildroot/package/usbmount/0002-use-udev-environment-instead-of-blkid.patch b/buildroot/package/usbmount/0002-use-udev-environment-instead-of-blkid.patch new file mode 100644 index 0000000..27928b5 --- /dev/null +++ b/buildroot/package/usbmount/0002-use-udev-environment-instead-of-blkid.patch @@ -0,0 +1,71 @@ +udev can provide all the values that usbmount determined using the +blkid binary. This patch drops use of blkid in favor of using the +environment variables set by udev. Thus it removes the dependency +on blkid from usbmount. + +Signed-off-by: Sven Neumann +--- usbmount-0.0.22/usbmount.orig 2013-06-18 14:44:40.143096147 +0200 ++++ usbmount-0.0.22/usbmount 2013-06-19 16:13:09.882434896 +0200 +@@ -59,11 +59,6 @@ + exit 0 + fi + +-if [ ! -x /sbin/blkid ]; then +- log err "cannot execute /sbin/blkid" +- exit 1 +-fi +- + # Per Policy 9.3.2, directories under /var/run have to be created + # after every reboot. + if [ ! -e /var/run/usbmount ]; then +@@ -83,15 +78,7 @@ + trap '( lockfile-remove /var/run/usbmount/.mount )' 0 + log debug "acquired lock /var/run/usbmount/.mount.lock" + +- # Grab device information from device and "divide it" +- # FIXME: improvement: implement mounting by label (notice that labels +- # can contain spaces, which makes things a little bit less comfortable). +- DEVINFO=$(/sbin/blkid -p $DEVNAME) +- FSTYPE=$(echo "$DEVINFO" | sed 's/.*[[:blank:]]TYPE="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;') +- UUID=$(echo "$DEVINFO" | sed 's/.*[[:blank:]]UUID="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;') +- USAGE=$(echo "$DEVINFO" | sed 's/.*[[:blank:]]USAGE="\([^"]*\)".*/\1/g; s/[[:blank:]]*//g;') +- +- if ! echo $USAGE | egrep -q "(filesystem|disklabel)"; then ++ if ! echo $ID_FS_USAGE | egrep -q "(filesystem|disklabel)"; then + log info "$DEVNAME does not contain a filesystem or disklabel" + exit 1 + fi +@@ -101,14 +88,14 @@ + log info "executing command: mount $DEVNAME" + mount $DEVNAME || log err "mount by DEVNAME with $DEVNAME wasn't successful; return code $?" + +- elif grep -q "^[[:blank:]]*UUID=$UUID" /etc/fstab; then +- log info "executing command: mount -U $UUID" +- mount -U $UUID || log err "mount by UUID with $UUID wasn't successful; return code $?" ++ elif grep -q "^[[:blank:]]*UUID=$ID_FS_UUID" /etc/fstab; then ++ log info "executing command: mount -U $ID_FS_UUID" ++ mount -U $ID_FS_UUID || log err "mount by UUID with $ID_FS_UUID wasn't successful; return code $?" + + else +- log debug "$DEVNAME contains filesystem type $FSTYPE" ++ log debug "$DEVNAME contains filesystem type $ID_FS_TYPE" + +- fstype=$FSTYPE ++ fstype=$ID_FS_TYPE + # Test if the filesystem type is in the list of filesystem + # types to mount. + if in_list "$fstype" "$FILESYSTEMS"; then +@@ -176,11 +163,13 @@ + + # Run hook scripts; ignore errors. + export UM_DEVICE="$DEVNAME" ++ export UM_UUID="$ID_FS_UUID" + export UM_MOUNTPOINT="$mountpoint" + export UM_FILESYSTEM="$fstype" + export UM_MOUNTOPTIONS="$options" + export UM_VENDOR="$vendor" + export UM_MODEL="$model" ++ export UM_LABEL="$ID_FS_LABEL" + log info "executing command: run-parts /etc/usbmount/mount.d" + run-parts /etc/usbmount/mount.d || : + else diff --git a/buildroot/package/usbmount/Config.in b/buildroot/package/usbmount/Config.in new file mode 100644 index 0000000..f87bd91 --- /dev/null +++ b/buildroot/package/usbmount/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_USBMOUNT + bool "usbmount" + depends on BR2_PACKAGE_HAS_UDEV + select BR2_PACKAGE_LOCKFILE_PROGS + help + The usbmount package automatically mounts USB mass storage + devices when they are plugged in, and unmounts them when + they are removed. + + http://usbmount.alioth.debian.org/ + +comment "usbmount requires udev to be enabled" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/usbmount/usbmount.hash b/buildroot/package/usbmount/usbmount.hash new file mode 100644 index 0000000..4a5c7f2 --- /dev/null +++ b/buildroot/package/usbmount/usbmount.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/u/usbmount/usbmount_0.0.22.dsc +sha256 a2b8581534b6c92f0376d202639dbc28862d3834dac64c35bde752f84975527d usbmount_0.0.22.tar.gz diff --git a/buildroot/package/usbmount/usbmount.mk b/buildroot/package/usbmount/usbmount.mk new file mode 100644 index 0000000..538602f --- /dev/null +++ b/buildroot/package/usbmount/usbmount.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# usbmount +# +################################################################################ + +USBMOUNT_VERSION = 0.0.22 +USBMOUNT_SOURCE = usbmount_$(USBMOUNT_VERSION).tar.gz +USBMOUNT_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/u/usbmount +USBMOUNT_DEPENDENCIES = udev lockfile-progs +USBMOUNT_LICENSE = BSD-2-Clause +USBMOUNT_LICENSE_FILES = debian/copyright + +define USBMOUNT_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/usbmount $(TARGET_DIR)/usr/share/usbmount/usbmount + + $(INSTALL) -m 0755 -D $(@D)/00_create_model_symlink \ + $(TARGET_DIR)/etc/usbmount/mount.d/00_create_model_symlink + $(INSTALL) -m 0755 -D $(@D)/00_remove_model_symlink \ + $(TARGET_DIR)/etc/usbmount/umount.d/00_remove_model_symlink + + $(INSTALL) -m 0644 -D $(@D)/usbmount.rules $(TARGET_DIR)/lib/udev/rules.d/usbmount.rules + $(INSTALL) -m 0644 -D $(@D)/usbmount.conf $(TARGET_DIR)/etc/usbmount/usbmount.conf + + mkdir -p $(addprefix $(TARGET_DIR)/media/usb,0 1 2 3 4 5 6 7) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/usbredir/Config.in b/buildroot/package/usbredir/Config.in new file mode 100644 index 0000000..78b0bff --- /dev/null +++ b/buildroot/package/usbredir/Config.in @@ -0,0 +1,30 @@ +comment "usbredir needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_USBREDIR + bool "usbredir" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + select BR2_PACKAGE_LIBUSB + help + usbredir is the name of a network protocol for sending usb + device traffic over a network connection. It is also the + name of the software package offering a parsing library, a + usbredirhost library and several utilities implementing this + protocol. + + Note: only the library is installed, not the utilities. Say + 'y' below if you want the server too. + + http://www.spice-space.org/page/UsbRedir + +if BR2_PACKAGE_USBREDIR + +config BR2_PACKAGE_USBREDIR_SERVER + bool "usbredirserver on target" + help + If you want to serve usbredir requests on your target, say + 'y' here to have the usbredir server on the target. + + Note: the server is not required to use the library. + +endif diff --git a/buildroot/package/usbredir/usbredir.hash b/buildroot/package/usbredir/usbredir.hash new file mode 100644 index 0000000..9ba1177 --- /dev/null +++ b/buildroot/package/usbredir/usbredir.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 407e9e27a1369f01264d5501ffbe88935ddd7d5de675f5835db05dc9c9ac56f3 usbredir-0.7.1.tar.bz2 diff --git a/buildroot/package/usbredir/usbredir.mk b/buildroot/package/usbredir/usbredir.mk new file mode 100644 index 0000000..02cd47c --- /dev/null +++ b/buildroot/package/usbredir/usbredir.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# usbredir +# +################################################################################ + +USBREDIR_VERSION = 0.7.1 +USBREDIR_SOURCE = usbredir-$(USBREDIR_VERSION).tar.bz2 +USBREDIR_SITE = http://spice-space.org/download/usbredir +USBREDIR_LICENSE = LGPL-2.1+ (libraries) +USBREDIR_LICENSE_FILES = COPYING.LIB +USBREDIR_INSTALL_STAGING = YES +USBREDIR_DEPENDENCIES = host-pkgconf libusb + +ifeq ($(BR2_PACKAGE_USBREDIR_SERVER),y) + +USBREDIR_LICENSE := $(USBREDIR_LICENSE), GPL-2.0+ (program) +USBREDIR_LICENSE_FILES += COPYING + +else # BR2_PACKAGE_USBREDIR_SERVER != y + +define USBREDIR_POST_INSTALL_TARGET_RM_SERVER + rm -f $(TARGET_DIR)/usr/sbin/usbredirserver +endef +USBREDIR_POST_INSTALL_TARGET_HOOKS += USBREDIR_POST_INSTALL_TARGET_RM_SERVER + +endif # BR2_PACKAGE_USBREDIR_SERVER + +$(eval $(autotools-package)) diff --git a/buildroot/package/usbutils/Config.in b/buildroot/package/usbutils/Config.in new file mode 100644 index 0000000..923853a --- /dev/null +++ b/buildroot/package/usbutils/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_USBUTILS + bool "usbutils" + depends on BR2_TOOLCHAIN_HAS_THREADS # libusb + depends on BR2_PACKAGE_HAS_UDEV # needs hwdb + select BR2_PACKAGE_LIBUSB + help + USB enumeration utilities + + http://linux-usb.sourceforge.net/ + +comment "usbutils needs udev /dev management and toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/usbutils/usbutils.hash b/buildroot/package/usbutils/usbutils.hash new file mode 100644 index 0000000..4e55c9b --- /dev/null +++ b/buildroot/package/usbutils/usbutils.hash @@ -0,0 +1,2 @@ +# From https://www.kernel.org/pub/linux/utils/usb/usbutils/sha256sums.asc +sha256 8bbff0e54cb5f65a52be4feb9162fc0b022a97eb841b44784f7a89a9ea567160 usbutils-009.tar.xz diff --git a/buildroot/package/usbutils/usbutils.mk b/buildroot/package/usbutils/usbutils.mk new file mode 100644 index 0000000..84702eb --- /dev/null +++ b/buildroot/package/usbutils/usbutils.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# usbutils +# +################################################################################ + +USBUTILS_VERSION = 009 +USBUTILS_SOURCE = usbutils-$(USBUTILS_VERSION).tar.xz +USBUTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/usb/usbutils +USBUTILS_DEPENDENCIES = host-pkgconf libusb udev +USBUTILS_LICENSE = GPL-2.0+ +USBUTILS_LICENSE_FILES = COPYING + +# Build after busybox since it's got a lightweight lsusb +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +USBUTILS_DEPENDENCIES += busybox +endif + +# Nice lsusb.py script only if there's python +ifeq ($(BR2_PACKAGE_PYTHON),) +define USBUTILS_REMOVE_PYTHON + rm -f $(TARGET_DIR)/usr/bin/lsusb.py +endef + +USBUTILS_POST_INSTALL_TARGET_HOOKS += USBUTILS_REMOVE_PYTHON +endif + +define USBUTILS_TARGET_CLEANUP + rm -f $(TARGET_DIR)/usr/bin/usb-devices +endef + +USBUTILS_POST_INSTALL_TARGET_HOOKS += USBUTILS_TARGET_CLEANUP + +$(eval $(autotools-package)) diff --git a/buildroot/package/ushare/0001-compile-fixes.patch b/buildroot/package/ushare/0001-compile-fixes.patch new file mode 100644 index 0000000..cfdf5e3 --- /dev/null +++ b/buildroot/package/ushare/0001-compile-fixes.patch @@ -0,0 +1,206 @@ +Patch nixed from OpenWRT svn to fix build breakage. + +Signed-off-by: Gustavo Zacarias + +--- a/src/cds.c ++++ b/src/cds.c +@@ -20,6 +20,8 @@ + */ + + #include ++#include ++#include + #include + #include + +--- a/src/http.c ++++ b/src/http.c +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -77,8 +78,7 @@ set_info_file (struct File_Info *info, c + info->content_type = ixmlCloneDOMString (content_type); + } + +-static int +-http_get_info (const char *filename, struct File_Info *info) ++int http_get_info (const char *filename, struct File_Info *info) + { + extern struct ushare_t *ut; + struct upnp_entry_t *entry = NULL; +@@ -197,8 +197,7 @@ get_file_memory (const char *fullpath, c + return ((UpnpWebFileHandle) file); + } + +-static UpnpWebFileHandle +-http_open (const char *filename, enum UpnpOpenFileMode mode) ++UpnpWebFileHandle http_open (const char *filename, enum UpnpOpenFileMode mode) + { + extern struct ushare_t *ut; + struct upnp_entry_t *entry = NULL; +@@ -251,8 +250,7 @@ http_open (const char *filename, enum Up + return ((UpnpWebFileHandle) file); + } + +-static int +-http_read (UpnpWebFileHandle fh, char *buf, size_t buflen) ++int http_read (UpnpWebFileHandle fh, char *buf, size_t buflen) + { + struct web_file_t *file = (struct web_file_t *) fh; + ssize_t len = -1; +@@ -286,8 +284,7 @@ http_read (UpnpWebFileHandle fh, char *b + return len; + } + +-static int +-http_write (UpnpWebFileHandle fh __attribute__((unused)), ++int http_write (UpnpWebFileHandle fh __attribute__((unused)), + char *buf __attribute__((unused)), + size_t buflen __attribute__((unused))) + { +@@ -296,8 +293,7 @@ http_write (UpnpWebFileHandle fh __attri + return 0; + } + +-static int +-http_seek (UpnpWebFileHandle fh, off_t offset, int origin) ++int http_seek (UpnpWebFileHandle fh, off_t offset, int origin) + { + struct web_file_t *file = (struct web_file_t *) fh; + off_t newpos = -1; +@@ -371,8 +367,7 @@ http_seek (UpnpWebFileHandle fh, off_t o + return 0; + } + +-static int +-http_close (UpnpWebFileHandle fh) ++int http_close (UpnpWebFileHandle fh) + { + struct web_file_t *file = (struct web_file_t *) fh; + +@@ -402,13 +397,3 @@ http_close (UpnpWebFileHandle fh) + + return 0; + } +- +-struct UpnpVirtualDirCallbacks virtual_dir_callbacks = +- { +- http_get_info, +- http_open, +- http_read, +- http_write, +- http_seek, +- http_close +- }; +--- a/src/http.h ++++ b/src/http.h +@@ -25,6 +25,18 @@ + #include + #include + +-struct UpnpVirtualDirCallbacks virtual_dir_callbacks; ++int http_get_info (const char *filename, struct File_Info *info); ++ ++UpnpWebFileHandle http_open (const char *filename, enum UpnpOpenFileMode mode); ++ ++int http_read (UpnpWebFileHandle fh, char *buf, size_t buflen); ++ ++int http_seek (UpnpWebFileHandle fh, off_t offset, int origin); ++ ++int http_write (UpnpWebFileHandle fh __attribute__((unused)), ++ char *buf __attribute__((unused)), ++ size_t buflen __attribute__((unused))); ++ ++int http_close (UpnpWebFileHandle fh); + + #endif /* _HTTP_H_ */ +--- a/src/ushare.c ++++ b/src/ushare.c +@@ -188,7 +188,7 @@ handle_action_request (struct Upnp_Actio + if (strcmp (request->DevUDN + 5, ut->udn)) + return; + +- ip = request->CtrlPtIPAddr.s_addr; ++ ip = (*(struct sockaddr_in *)&request->CtrlPtIPAddr).sin_addr.s_addr; + ip = ntohl (ip); + sprintf (val, "%d.%d.%d.%d", + (ip >> 24) & 0xFF, (ip >> 16) & 0xFF, (ip >> 8) & 0xFF, ip & 0xFF); +@@ -348,13 +348,23 @@ init_upnp (struct ushare_t *ut) + + UpnpEnableWebserver (TRUE); + +- res = UpnpSetVirtualDirCallbacks (&virtual_dir_callbacks); +- if (res != UPNP_E_SUCCESS) +- { +- log_error (_("Cannot set virtual directory callbacks\n")); +- free (description); +- return -1; +- } ++#define upnp_set_callback(cb, func) \ ++ do { \ ++ res = UpnpVirtualDir_set_##cb##Callback(func); \ ++ if (res != UPNP_E_SUCCESS) \ ++ { \ ++ log_error (_("Cannot set virtual directory callbacks\n")); \ ++ free (description); \ ++ return -1; \ ++ } \ ++ } while(0) ++ ++ upnp_set_callback(GetInfo, http_get_info); ++ upnp_set_callback(Open, http_open); ++ upnp_set_callback(Read, http_read); ++ upnp_set_callback(Seek, http_seek); ++ upnp_set_callback(Write, http_write); ++ upnp_set_callback(Close, http_close); + + res = UpnpAddVirtualDir (VIRTUAL_DIR); + if (res != UPNP_E_SUCCESS) +--- a/src/cms.c ++++ b/src/cms.c +@@ -20,6 +20,8 @@ + */ + + #include ++#include ++#include + #include + #include + +--- a/src/mime.c ++++ b/src/mime.c +@@ -20,6 +20,7 @@ + */ + + #include ++#include + #include + + #include "mime.h" +--- a/src/presentation.c ++++ b/src/presentation.c +@@ -19,6 +19,8 @@ + */ + + #include ++#include ++#include + + #if HAVE_LANGINFO_CODESET + # include +--- a/src/services.c ++++ b/src/services.c +@@ -20,6 +20,8 @@ + */ + + #include ++#include ++#include + #include + #include + diff --git a/buildroot/package/ushare/0002-ushare-fix-building-with-gcc-5.x.patch b/buildroot/package/ushare/0002-ushare-fix-building-with-gcc-5.x.patch new file mode 100644 index 0000000..abef81f --- /dev/null +++ b/buildroot/package/ushare/0002-ushare-fix-building-with-gcc-5.x.patch @@ -0,0 +1,49 @@ +From 6abc52190accc8d8b17455420e234a1d7dc7ba55 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Mon, 16 Nov 2015 23:15:27 +0100 +Subject: [PATCH] ushare: fix building with gcc 5.x + +GCC5 defaults to -std=gnu11, which has different semantics for inline than +previous versions: + +https://gcc.gnu.org/gcc-5/porting_to.html + +Which causes linker issues when display_headers() and start_log() are +referenced from other files. There's no real reason why these needs to be +inline, so just drop the keyword. + +Signed-off-by: Peter Korsgaard +--- + src/trace.c | 2 +- + src/ushare.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/trace.c b/src/trace.c +index 50729ef..4e314ef 100644 +--- a/src/trace.c ++++ b/src/trace.c +@@ -57,7 +57,7 @@ print_log (log_level level, const char *format, ...) + va_end (va); + } + +-inline void ++void + start_log (void) + { + openlog (PACKAGE_NAME, LOG_PID, LOG_DAEMON); +diff --git a/src/ushare.c b/src/ushare.c +index b64451e..af46e78 100644 +--- a/src/ushare.c ++++ b/src/ushare.c +@@ -496,7 +496,7 @@ reload_config (int s __attribute__ ((unused))) + } + } + +-inline void ++void + display_headers (void) + { + printf (_("%s (version %s), a lightweight UPnP A/V and DLNA Media Server.\n"), +-- +2.1.4 + diff --git a/buildroot/package/ushare/0003-ushare-c-include-config-h-before-checking-for-CONFIG-NLS.patch b/buildroot/package/ushare/0003-ushare-c-include-config-h-before-checking-for-CONFIG-NLS.patch new file mode 100644 index 0000000..e97c3de --- /dev/null +++ b/buildroot/package/ushare/0003-ushare-c-include-config-h-before-checking-for-CONFIG-NLS.patch @@ -0,0 +1,42 @@ +ushare.c: include config.h before checking for CONFIG_NLS + +When NLS support is enabled, we get following build errors: + + ushare.c: In function 'setup_i18n': + ushare.c:745:3: warning: implicit declaration of function 'setlocale' [-Wimplicit-function-declaration] + setlocale (LC_ALL, ""); + ^ + ushare.c:745:14: error: 'LC_ALL' undeclared (first use in this function) + setlocale (LC_ALL, ""); + ^ + ushare.c:745:14: note: each undeclared identifier is reported only once for each function it appears in + make[2]: *** [ushare.o] Error 1 + +When NLS support is enabled, configure script creates macro in config.h. +We check for CONFIG_NLS before including config.h which results in above +build errors as locale.h doesn't get included. + +This patch fixes above build error by including config.h before we check for +CONFIG_NLS. + +This build error is detected by Buildroot autobuilder +http://autobuild.buildroot.net/results/19d/19d67dd43e5a313c77e4be97ecb9811ffa52f797/ + +Signed-off-by: Rahul Bedarkar + +--- ushare-1.1a/src/ushare.c.old 2016-09-20 19:04:00.915239326 +0530 ++++ ushare-1.1a/src/ushare.c 2016-09-20 19:04:24.707239276 +0530 +@@ -56,11 +56,12 @@ + #include + #include + ++#include "config.h" ++ + #if (defined(HAVE_SETLOCALE) && defined(CONFIG_NLS)) + # include + #endif + +-#include "config.h" + #include "ushare.h" + #include "services.h" + #include "http.h" diff --git a/buildroot/package/ushare/Config.in b/buildroot/package/ushare/Config.in new file mode 100644 index 0000000..2dcd773 --- /dev/null +++ b/buildroot/package/ushare/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_USHARE + bool "ushare" + depends on BR2_TOOLCHAIN_HAS_THREADS # libupnp + # ushare has a completely custom configure script that does + # broken things with library ordering, which breaks static + # linking. + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBUPNP + help + uShare is a UPnP (TM) A/V & DLNA Media Server. + It implements the server component that provides UPnP media + devices with information on available multimedia files. + + http://ushare.geexbox.org/ + +comment "ushare needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/ushare/ushare.hash b/buildroot/package/ushare/ushare.hash new file mode 100644 index 0000000..77f0f0f --- /dev/null +++ b/buildroot/package/ushare/ushare.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 7b9b85c79968d4f4560f02a99e33c6a33ff58f9d41d8faea79e31cce2ee78665 ushare-1.1a.tar.bz2 diff --git a/buildroot/package/ushare/ushare.mk b/buildroot/package/ushare/ushare.mk new file mode 100644 index 0000000..bb194f6 --- /dev/null +++ b/buildroot/package/ushare/ushare.mk @@ -0,0 +1,44 @@ +################################################################################ +# +# ushare +# +################################################################################ + +USHARE_VERSION = 1.1a +USHARE_SOURCE = ushare-$(USHARE_VERSION).tar.bz2 +USHARE_SITE = http://ushare.geexbox.org/releases +USHARE_DEPENDENCIES = host-pkgconf libupnp $(TARGET_NLS_DEPENDENCIES) +USHARE_LICENSE = GPL-2.0+ +USHARE_LICENSE_FILES = COPYING +USHARE_LDFLAGS = $(TARGET_NLS_LIBS) + +USHARE_CONF_OPTS = \ + --prefix=/usr \ + --cross-compile \ + --cross-prefix="$(TARGET_CROSS)" \ + --sysconfdir=/etc \ + --disable-strip + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),) +USHARE_CONF_OPTS += --disable-nls +endif + +define USHARE_CONFIGURE_CMDS + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) \ + ./configure \ + $(USHARE_CONF_OPTS) \ + ) +endef + +define USHARE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) LDFLAGS="$(TARGET_LDFLAGS) $(USHARE_LDFLAGS)" -C $(@D) +endef + +define USHARE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + rm -f $(TARGET_DIR)/etc/init.d/ushare +endef + +# Even though configure is called it's not autoconf +$(eval $(generic-package)) diff --git a/buildroot/package/ussp-push/0001-fix-build-against-bluez-4.patch b/buildroot/package/ussp-push/0001-fix-build-against-bluez-4.patch new file mode 100644 index 0000000..0694bfb --- /dev/null +++ b/buildroot/package/ussp-push/0001-fix-build-against-bluez-4.patch @@ -0,0 +1,15 @@ +Fix build against bluez4. + +Signed-off-by: Samuel Martin + +--- ussp-push-0.11.orig/src/obex_socket.c 2012-11-01 09:58:51.049538708 +0100 ++++ ussp-push-0.11/src/obex_socket.c 2012-11-01 12:10:10.719506951 +0100 +@@ -197,7 +197,7 @@ static int bt_sock_name2bth(int devid, c + for (i = 0; i < niinf; i++) { + char devname[128]; + +- if (hci_remote_name(dd, &piinf[i].bdaddr, sizeof(devname) - 1, ++ if (hci_read_remote_name(dd, &piinf[i].bdaddr, sizeof(devname) - 1, + devname, 100000) >= 0) { + if (strcasecmp(devname, btname) == 0) { + *btaddr = piinf[i].bdaddr; diff --git a/buildroot/package/ussp-push/0002-fix-build-again-obex-bluez.patch b/buildroot/package/ussp-push/0002-fix-build-again-obex-bluez.patch new file mode 100644 index 0000000..e98fe6e --- /dev/null +++ b/buildroot/package/ussp-push/0002-fix-build-again-obex-bluez.patch @@ -0,0 +1,28 @@ +From 2d732026044d8e6cd16465ee87a73ac9692c021b Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Fri, 3 Nov 2017 09:04:12 +0100 +Subject: [PATCH] fix build again obex/bluez + +[fetch from debian source: http://http.debian.net/debian/pool/main/u/ussp-push/ussp-push_0.11-4.debian.tar.xz] + +Signed-off-by: Samuel Martin +--- + src/obex_main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/obex_main.c b/src/obex_main.c +index a7126e6..6233d7e 100644 +--- a/src/obex_main.c ++++ b/src/obex_main.c +@@ -197,7 +197,7 @@ obex_t *__obex_connect(int devid, void *addr, int timeout, int *err) + *err = -1; + return NULL; + } +- if (!(handle = OBEX_Init(OBEX_TRANS_CUST, obex_event, 0))) { ++ if (!(handle = OBEX_Init(OBEX_TRANS_CUSTOM, obex_event, 0))) { + BTERROR("OBEX_Init failed: %s\n", strerror(errno)); + obex_free(gt); + *err = -1; +-- +2.15.0 + diff --git a/buildroot/package/ussp-push/0003-add-OBEX_CharToUnicode.patch b/buildroot/package/ussp-push/0003-add-OBEX_CharToUnicode.patch new file mode 100644 index 0000000..a660b55 --- /dev/null +++ b/buildroot/package/ussp-push/0003-add-OBEX_CharToUnicode.patch @@ -0,0 +1,47 @@ +From eafac77d76d2a23c191a56f715d6c4afc0800da8 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Fri, 3 Nov 2017 09:10:01 +0100 +Subject: [PATCH] add OBEX_CharToUnicode + +[fetch from debian source: http://http.debian.net/debian/pool/main/u/ussp-push/ussp-push_0.11-4.debian.tar.xz] + +Signed-off-by: Samuel Martin +--- + src/obex_main.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/src/obex_main.c b/src/obex_main.c +index 6233d7e..971cc37 100644 +--- a/src/obex_main.c ++++ b/src/obex_main.c +@@ -84,7 +84,27 @@ void request_done(obex_t * handle, obex_object_t * object, int obex_cmd, int obe + + int bt_debug; + ++static int OBEX_CharToUnicode(uint8_t *uc, const uint8_t *c, int size) ++{ ++ int len, n; ++ ++ if (uc == NULL || c == NULL) ++ return -1; ++ ++ len = n = strlen((char *) c); ++ if (n*2+2 > size) ++ return -1; ++ ++ uc[n*2+1] = 0; ++ uc[n*2] = 0; + ++ while (n--) { ++ uc[n*2+1] = c[n]; ++ uc[n*2] = 0; ++ } ++ ++ return (len * 2) + 2; ++} + + /* + * These two functions are from affix/profiles/obex/obex_io.c +-- +2.15.0 + diff --git a/buildroot/package/ussp-push/Config.in b/buildroot/package/ussp-push/Config.in new file mode 100644 index 0000000..aefec85 --- /dev/null +++ b/buildroot/package/ussp-push/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_USSP_PUSH + bool "ussp-push" + depends on !BR2_STATIC_LIBS # bluez_utils + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2 + depends on BR2_USE_MMU # dbus + select BR2_PACKAGE_OPENOBEX + select BR2_PACKAGE_BLUEZ_UTILS + help + ussp-push is an OBEX object pusher for Linux, using the BlueZ + BlueTooth stack. + + http://www.xmailserver.org/ussp-push.html + +comment "ussp-push needs a toolchain w/ wchar, threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/ussp-push/ussp-push.hash b/buildroot/package/ussp-push/ussp-push.hash new file mode 100644 index 0000000..36c79cf --- /dev/null +++ b/buildroot/package/ussp-push/ussp-push.hash @@ -0,0 +1,4 @@ +# Locally calculated +sha256 bb2748eaed6164812555b4a1e186c4f2820c5ef9ce30f12d7aac28a452719bbd ussp-push-0.11.tar.gz +# License files, locally calculated +sha256 204d8eff92f95aac4df6c8122bc1505f468f3a901e5a4cc08940e0ede1938994 COPYING diff --git a/buildroot/package/ussp-push/ussp-push.mk b/buildroot/package/ussp-push/ussp-push.mk new file mode 100644 index 0000000..0c45c29 --- /dev/null +++ b/buildroot/package/ussp-push/ussp-push.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# ussp-push +# +################################################################################ + +USSP_PUSH_VERSION = 0.11 +USSP_PUSH_SITE = http://www.xmailserver.org +USSP_PUSH_LICENSE = GPL-2.0+ +USSP_PUSH_LICENSE_FILES = COPYING + +USSP_PUSH_DEPENDENCIES = bluez_utils openobex + +$(eval $(autotools-package)) diff --git a/buildroot/package/ustr/Config.in b/buildroot/package/ustr/Config.in new file mode 100644 index 0000000..9d6561c --- /dev/null +++ b/buildroot/package/ustr/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_USTR + bool "ustr" + # unconditionally builds a shared library + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL # broken vsnprintf detection + help + A small, safe string library. + + http://www.and.org/ustr/ + +comment "ustr needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/ustr/ustr.hash b/buildroot/package/ustr/ustr.hash new file mode 100644 index 0000000..878c607 --- /dev/null +++ b/buildroot/package/ustr/ustr.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 3daf6eae9f78de1e872c0b2b83cce35515b94d4bb8a074e48f331fd99e1fc2c4 ustr-1.0.4.tar.bz2 +# From http://debian.gtisc.gatech.edu/debian/pool/main/u/ustr/ustr_1.0.4-6.dsc +sha256 75aa6be2c70eba632ac63078e55ecb4b5a45e6624501a8ed6d81b9a2014d149e ustr_1.0.4-6.debian.tar.xz diff --git a/buildroot/package/ustr/ustr.mk b/buildroot/package/ustr/ustr.mk new file mode 100644 index 0000000..8346adb --- /dev/null +++ b/buildroot/package/ustr/ustr.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# ustr +# +################################################################################ + +# When bumping the version to a new upstream release, be sure to remove +# the ldconfig hack, below. +USTR_VERSION = 1.0.4 +USTR_SOURCE = ustr-$(USTR_VERSION).tar.bz2 +USTR_SITE = http://www.and.org/ustr/$(USTR_VERSION) +USTR_LICENSE = BSD-2-Clause, MIT, LGPL-2.0+ +USTR_LICENSE_FILES = LICENSE LICENSE_BSD LICENSE_LGPL LICENSE_MIT +USTR_AUTORECONF = YES +USTR_PATCH = \ + http://snapshot.debian.org/archive/debian/20180131T223129Z/pool/main/u/ustr/ustr_$(USTR_VERSION)-6.debian.tar.xz + +USTR_INSTALL_STAGING = YES + +# ustr only builds the static library by default, but the default +# install rule will install both the static and the shared libraries, +# which means the shared one is build during the install step. :-( +# +# We can however instruct ustr to build both at build time, by adding +# 'all-shared' to the default 'all' rule. +USTR_MAKE_OPTS = all all-shared + +USTR_CONF_OPTS += LDCONFIG=/bin/true +HOST_USTR_CONF_OPTS += LDCONFIG=/bin/true + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/ustream-ssl/Config.in b/buildroot/package/ustream-ssl/Config.in new file mode 100644 index 0000000..540e436 --- /dev/null +++ b/buildroot/package/ustream-ssl/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_USTREAM_SSL + bool "ustream-ssl" + depends on !BR2_STATIC_LIBS #libubox + select BR2_PACKAGE_LIBUBOX + select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_MBEDTLS + help + ustream SSL wrapper + + https://git.openwrt.org/?p=project/ustream-ssl.git;a=summary + +comment "ustream-ssl needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/ustream-ssl/ustream-ssl.mk b/buildroot/package/ustream-ssl/ustream-ssl.mk new file mode 100644 index 0000000..9b10788 --- /dev/null +++ b/buildroot/package/ustream-ssl/ustream-ssl.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ustream-ssl +# +################################################################################ + +USTREAM_SSL_VERSION = 45ac93088bc6f2d8ef3b0512d8e1ddfd9c4ee9e5 +USTREAM_SSL_SITE = git://git.openwrt.org/project/ustream-ssl.git +USTREAM_SSL_LICENSE = ISC +USTREAM_SSL_LICENSE_FILES = ustream-ssl.h +USTREAM_SSL_INSTALL_STAGING = YES +USTREAM_SSL_DEPENDENCIES = libubox + +ifeq ($(BR2_PACKAGE_MBEDTLS),y) +USTREAM_SSL_DEPENDENCIES += mbedtls +USTREAM_SSL_CONF_OPTS += -DMBEDTLS=ON +else +USTREAM_SSL_DEPENDENCIES += openssl +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/util-linux/0001-docs-add-ISC-licence.patch b/buildroot/package/util-linux/0001-docs-add-ISC-licence.patch new file mode 100644 index 0000000..aea7b97 --- /dev/null +++ b/buildroot/package/util-linux/0001-docs-add-ISC-licence.patch @@ -0,0 +1,38 @@ +From a9e4662d26b10789b28282d7e77ab189ef34cf5c Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sun, 14 Jan 2018 16:39:31 -0200 +Subject: [PATCH] docs: add ISC licence + +Save the top 21 lines of sys-utils/rfkill.c as COPYING.ISC. This is +useful for Linux distributions an integration tools like Buildroot, +to collect detailed legal information for each package. + +[kzak@redhat.com: - remove C-comments and rfkill header] + +Signed-off-by: Carlos Santos +Signed-off-by: Karel Zak +--- + Documentation/licenses/COPYING.ISC | 11 +++++++++++ + 1 file changed, 11 insertions(+) + create mode 100644 Documentation/licenses/COPYING.ISC + +diff --git a/Documentation/licenses/COPYING.ISC b/Documentation/licenses/COPYING.ISC +new file mode 100644 +index 000000000..8351a30e3 +--- /dev/null ++++ b/Documentation/licenses/COPYING.ISC +@@ -0,0 +1,11 @@ ++Permission to use, copy, modify, and/or distribute this software for any ++purpose with or without fee is hereby granted, provided that the above ++copyright notice and this permission notice appear in all copies. ++ ++THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-- +2.14.3 + diff --git a/buildroot/package/util-linux/0002-lib-randutils-Do-not-block-on-getrandom.patch b/buildroot/package/util-linux/0002-lib-randutils-Do-not-block-on-getrandom.patch new file mode 100644 index 0000000..79fa577 --- /dev/null +++ b/buildroot/package/util-linux/0002-lib-randutils-Do-not-block-on-getrandom.patch @@ -0,0 +1,52 @@ +From a9cf659e0508c1f56813a7d74c64f67bbc962538 Mon Sep 17 00:00:00 2001 +From: Carlo Caione +Date: Mon, 19 Mar 2018 10:31:07 +0000 +Subject: [PATCH] lib/randutils: Do not block on getrandom() + +In Endless we have hit a problem when using 'sfdisk' on the really first +boot to automatically expand the rootfs partition. On this platform +'sfdisk' is blocking on getrandom() because not enough random bytes are +available. This is an ARM platform without a hwrng. + +We fix this passing GRND_NONBLOCK to getrandom(). 'sfdisk' will use the +best entropy it has available and fallback only as necessary. + +Signed-off-by: Carlo Caione +Signed-off-by: Peter Korsgaard +--- + lib/randutils.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/lib/randutils.c b/lib/randutils.c +index e1c4059e1..02c3d9eb0 100644 +--- a/lib/randutils.c ++++ b/lib/randutils.c +@@ -36,6 +36,8 @@ + + #if !defined(HAVE_GETRANDOM) && defined(SYS_getrandom) + /* libc without function, but we have syscal */ ++#define GRND_NONBLOCK 0x01 ++#define GRND_RANDOM 0x02 + static int getrandom(void *buf, size_t buflen, unsigned int flags) + { + return (syscall(SYS_getrandom, buf, buflen, flags)); +@@ -104,13 +106,15 @@ void random_get_bytes(void *buf, size_t nbytes) + int x; + + errno = 0; +- x = getrandom(cp, n, 0); ++ x = getrandom(cp, n, GRND_NONBLOCK); + if (x > 0) { /* success */ + n -= x; + cp += x; + lose_counter = 0; + } else if (errno == ENOSYS) /* kernel without getrandom() */ + break; ++ else if (errno == EAGAIN) ++ break; + else if (lose_counter++ > 16) /* entropy problem? */ + break; + } +-- +2.11.0 + diff --git a/buildroot/package/util-linux/0003-lib-randutils-don-t-break-on-EAGAIN-use-usleep.patch b/buildroot/package/util-linux/0003-lib-randutils-don-t-break-on-EAGAIN-use-usleep.patch new file mode 100644 index 0000000..a48f12f --- /dev/null +++ b/buildroot/package/util-linux/0003-lib-randutils-don-t-break-on-EAGAIN-use-usleep.patch @@ -0,0 +1,71 @@ +From edc1c90cb972fdca1f66be5a8e2b0706bd2a4949 Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Tue, 20 Mar 2018 14:17:24 +0100 +Subject: [PATCH] lib/randutils: don't break on EAGAIN, use usleep() + +The current code uses lose_counter to make more attempts to read +random numbers. It seems better to wait a moment between attempts to +avoid busy loop (we do the same in all-io.h). + +The worst case is 1 second delay for all random_get_bytes() on systems +with uninitialized entropy pool -- for example you call sfdisk (MBR Id +or GPT UUIDs) on very first boot, etc. In this case it will use libc +rand() as a fallback solution. + +Note that we do not use random numbers for security sensitive things +like keys or so. It's used for random based UUIDs etc. + +Addresses: https://github.com/karelzak/util-linux/pull/603 +Signed-off-by: Karel Zak +Signed-off-by: Peter Korsgaard +--- + lib/randutils.c | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +diff --git a/lib/randutils.c b/lib/randutils.c +index 02c3d9eb0..de4279530 100644 +--- a/lib/randutils.c ++++ b/lib/randutils.c +@@ -95,6 +95,9 @@ int random_get_fd(void) + * Use /dev/urandom if possible, and if not, + * use glibc pseudo-random functions. + */ ++#define UL_RAND_READ_ATTEMPTS 8 ++#define UL_RAND_READ_DELAY 125000 /* microseconds */ ++ + void random_get_bytes(void *buf, size_t nbytes) + { + unsigned char *cp = (unsigned char *)buf; +@@ -111,11 +114,14 @@ void random_get_bytes(void *buf, size_t nbytes) + n -= x; + cp += x; + lose_counter = 0; +- } else if (errno == ENOSYS) /* kernel without getrandom() */ +- break; +- else if (errno == EAGAIN) ++ ++ } else if (errno == ENOSYS) { /* kernel without getrandom() */ + break; +- else if (lose_counter++ > 16) /* entropy problem? */ ++ ++ } else if (errno == EAGAIN && lose_counter < UL_RAND_READ_ATTEMPTS) { ++ xusleep(UL_RAND_READ_DELAY); /* no etropy, wait and try again */ ++ lose_counter++; ++ } else + break; + } + +@@ -134,8 +140,9 @@ void random_get_bytes(void *buf, size_t nbytes) + while (n > 0) { + ssize_t x = read(fd, cp, n); + if (x <= 0) { +- if (lose_counter++ > 16) ++ if (lose_counter++ > UL_RAND_READ_ATTEMPTS) + break; ++ xusleep(UL_RAND_READ_DELAY); + continue; + } + n -= x; +-- +2.11.0 + diff --git a/buildroot/package/util-linux/Config.in b/buildroot/package/util-linux/Config.in new file mode 100644 index 0000000..5f0a35c --- /dev/null +++ b/buildroot/package/util-linux/Config.in @@ -0,0 +1,424 @@ +menuconfig BR2_PACKAGE_UTIL_LINUX + bool "util-linux" + help + Various useful/essential linux libraries and utilities. + + Things like mkfs, mkswap, swapon, fdisk, mount, dmesg, etc... + + http://www.kernel.org/pub/linux/utils/util-linux/ + +if BR2_PACKAGE_UTIL_LINUX + +config BR2_PACKAGE_UTIL_LINUX_LIBBLKID + bool "libblkid" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Install libblkid. + +config BR2_PACKAGE_UTIL_LINUX_LIBFDISK + bool "libfdisk" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Install libfdisk. + +config BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + bool "libmount" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + Install libmount. + +config BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + bool "libsmartcols" + depends on BR2_USE_MMU # fork() + help + Install libsmartcols. + +config BR2_PACKAGE_UTIL_LINUX_LIBUUID + bool "libuuid" + help + Install libuuid. + +config BR2_PACKAGE_UTIL_LINUX_BINARIES + bool "basic set" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBFDISK + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Install the basic set of util-linux binaries. + + blkdiscard, blkid, blockdev, chcpu, col, colcrt, colrm, + column, ctrlaltdel, dmesg, fdisk, fincore, findfs, findmnt, + flock, fsfreeze, fstrim, getopt, hexdump, ipcmk, isosize, + ldattach, look, lsblk, lscpu, lsipc, lslocks, lsns, mcookie, + mkfs, mkswap, namei, prlimit, readprofile, renice, rev, + rtcwake, script, scriptreplay, setarch, setsid, sfdisk, + swaplabel, swapoff, swapon, uuidgen, uuidparse, whereis, + wipefs + + The setarch utility also installs architecture-specific + symlinks like linux32, linux64, uname26, i386 and x86_64. + +config BR2_PACKAGE_UTIL_LINUX_AGETTY + bool "agetty" + depends on BR2_USE_MMU # fork() + help + Alternative linux getty + +config BR2_PACKAGE_UTIL_LINUX_BFS + bool "bfs" + help + SCO bfs filesystem support + +config BR2_PACKAGE_UTIL_LINUX_CAL + bool "cal" + help + Display a calendar, or some part of it + +config BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH + bool "chfn/chsh" + depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam + depends on BR2_USE_MMU # linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Change login shell, real user name and information + +comment "chfn/chsh needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_UTIL_LINUX_CHMEM + bool "chmem" + help + Sets a particular size or range of memory online or offline + +config BR2_PACKAGE_UTIL_LINUX_CRAMFS + bool "cramfs utilities" + select BR2_PACKAGE_ZLIB + help + Utilities for compressed ROM file system (fsck.cramfs, + mkfs.cramfs) + +config BR2_PACKAGE_UTIL_LINUX_EJECT + bool "eject" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Eject removable media + +config BR2_PACKAGE_UTIL_LINUX_FALLOCATE + bool "fallocate" + help + Preallocate space to a file + +config BR2_PACKAGE_UTIL_LINUX_FDFORMAT + bool "fdformat" + help + Low-level format a floppy disk + +config BR2_PACKAGE_UTIL_LINUX_FSCK + bool "fsck" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Check and repair a linux filesystem + +config BR2_PACKAGE_UTIL_LINUX_HWCLOCK + bool "hwclock" + help + Query or set the hardware clock (RTC) + +config BR2_PACKAGE_UTIL_LINUX_IPCRM + bool "ipcrm" + help + Remove certain IPC resources + +config BR2_PACKAGE_UTIL_LINUX_IPCS + bool "ipcs" + help + Show information on IPC facilities + +config BR2_PACKAGE_UTIL_LINUX_KILL + bool "kill" + help + Send a signal to a process + +config BR2_PACKAGE_UTIL_LINUX_LAST + bool "last" + help + Show a listing of last logged in users + +config BR2_PACKAGE_UTIL_LINUX_LINE + bool "line" + help + Read one line + +config BR2_PACKAGE_UTIL_LINUX_LOGGER + bool "logger" + help + Enter messages into the system log + +config BR2_PACKAGE_UTIL_LINUX_LOGIN + bool "login" + depends on BR2_ENABLE_LOCALE # linux-pam + depends on BR2_USE_WCHAR # linux-pam + depends on !BR2_STATIC_LIBS # linux-pam + depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam + depends on BR2_USE_MMU # fork(), linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Begin a session on the system + +comment "login needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_UTIL_LINUX_LOSETUP + bool "losetup" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + Set up and control loop devices + +config BR2_PACKAGE_UTIL_LINUX_LSLOGINS + bool "lslogins" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + Display information about known users in the system + +config BR2_PACKAGE_UTIL_LINUX_LSMEM + bool "lsmem" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + List the ranges of available memory with their online status + +config BR2_PACKAGE_UTIL_LINUX_MESG + bool "mesg" + help + Control write access to your terminal + +config BR2_PACKAGE_UTIL_LINUX_MINIX + bool "minix" + help + Minix filesystem support + +config BR2_PACKAGE_UTIL_LINUX_MORE + bool "more" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + File perusal filter for crt viewing + +config BR2_PACKAGE_UTIL_LINUX_MOUNT + bool "mount/umount" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Mount/unmount filesystems + +config BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT + bool "mountpoint" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + See if a directory is a mountpoint + +config BR2_PACKAGE_UTIL_LINUX_NEWGRP + bool "newgrp" + help + Log in to a new group + +config BR2_PACKAGE_UTIL_LINUX_NOLOGIN + bool "nologin" + help + Politely refuse a login + +config BR2_PACKAGE_UTIL_LINUX_NSENTER + bool "nsenter" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + help + Enter the namespaces of another process + +comment "nsenter needs a toolchain w/ headers >= 3.0" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + +config BR2_PACKAGE_UTIL_LINUX_PG + bool "pg" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_NCURSES + help + Browse pagewise through text files + +config BR2_PACKAGE_UTIL_LINUX_PARTX + bool "partition utilities" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + Partition utilities (addpart, delpart, partx) + +config BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT + bool "pivot_root" + help + Change the root filesystem + +config BR2_PACKAGE_UTIL_LINUX_RAW + bool "raw" + help + Build a linux raw character device + +config BR2_PACKAGE_UTIL_LINUX_RENAME + bool "rename" + help + Rename files + +config BR2_PACKAGE_UTIL_LINUX_RFKILL + bool "rfkill" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + Tool for enabling and disabling wireless devices. This new + implementation is based upon, and backward compatible with, + the original rfkill from Johannes Berg and Marcel Holtmann. + +config BR2_PACKAGE_UTIL_LINUX_RUNUSER + bool "runuser" + depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam + depends on BR2_USE_MMU # fork(), linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Run a command with substitute user and group ID (does not need + to ask for a password, because it may be executed by the root + user only) + +comment "runuser needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS + bool "scheduling utilities" + help + Scheduling utilities (chrt, ionice, taskset) + +config BR2_PACKAGE_UTIL_LINUX_SETPRIV + bool "setpriv" + select BR2_PACKAGE_LIBCAP_NG + help + Run a program with different Linux privilege settings + +config BR2_PACKAGE_UTIL_LINUX_SETTERM + bool "setterm" + select BR2_PACKAGE_NCURSES + help + Set terminal attributes + +config BR2_PACKAGE_UTIL_LINUX_SU + bool "su" + depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR) # linux-pam + depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam + depends on BR2_USE_MMU # fork(), linux-pam + select BR2_PACKAGE_LINUX_PAM + help + Run a command with substitute user and group ID + +comment "su needs a uClibc or glibc toolchain w/ wchar, locale, dynamic library" + depends on !(BR2_ENABLE_LOCALE && BR2_USE_WCHAR) \ + || BR2_STATIC_LIBS || BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_UTIL_LINUX_SULOGIN + bool "sulogin" + depends on BR2_USE_MMU # fork() + help + Single-user login + +config BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT + bool "switch_root" + depends on BR2_USE_MMU # fork() + help + Switch to another filesystem as the root of the mount tree + +config BR2_PACKAGE_UTIL_LINUX_TUNELP + bool "tunelp" + select BR2_PACKAGE_NCURSES + help + Set various parameters for the lp device + +config BR2_PACKAGE_UTIL_LINUX_UL + bool "ul" + select BR2_PACKAGE_NCURSES + help + Do underlining + +config BR2_PACKAGE_UTIL_LINUX_UNSHARE + bool "unshare" + depends on BR2_USE_MMU # fork() + help + Run program with some namespaces unshared from parent + +config BR2_PACKAGE_UTIL_LINUX_UTMPDUMP + bool "utmpdump" + help + Dump UTMP and WTMP files in raw format + +config BR2_PACKAGE_UTIL_LINUX_UUIDD + bool "uuidd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + UUID generation daemon + +config BR2_PACKAGE_UTIL_LINUX_VIPW + bool "vipw" + depends on BR2_USE_MMU # fork() + help + Edit the password, group, shadow-password or shadow-group file + +config BR2_PACKAGE_UTIL_LINUX_WALL + bool "wall" + depends on BR2_USE_MMU # fork() + help + Send a message to everybody's terminal + +config BR2_PACKAGE_UTIL_LINUX_WDCTL + bool "wdctl" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + Shows hardware watchdog status + +config BR2_PACKAGE_UTIL_LINUX_WRITE + bool "write" + help + Send a message to another user + +config BR2_PACKAGE_UTIL_LINUX_ZRAMCTL + bool "zramctl" + depends on BR2_USE_MMU # libsmartcols + select BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS + help + Set up and control zram devices + +endif diff --git a/buildroot/package/util-linux/Config.in.host b/buildroot/package/util-linux/Config.in.host new file mode 100644 index 0000000..f73dc43 --- /dev/null +++ b/buildroot/package/util-linux/Config.in.host @@ -0,0 +1,8 @@ +config BR2_PACKAGE_HOST_UTIL_LINUX + bool "host util-linux" + help + Various useful/essential linux libraries and utilities. + + Things like mkfs, mkswap, swapon, fdisk, mount, dmesg, etc... + + http://www.kernel.org/pub/linux/utils/util-linux/ diff --git a/buildroot/package/util-linux/su.pam b/buildroot/package/util-linux/su.pam new file mode 100644 index 0000000..84b1860 --- /dev/null +++ b/buildroot/package/util-linux/su.pam @@ -0,0 +1,15 @@ +auth sufficient pam_rootok.so +auth required pam_wheel.so use_uid +auth required pam_env.so +auth required pam_unix.so nullok + +account required pam_unix.so + +password required pam_unix.so nullok + +# session required pam_selinux.so close +session required pam_limits.so +session required pam_env.so +session required pam_unix.so +session optional pam_lastlog.so +# session required pam_selinux.so open diff --git a/buildroot/package/util-linux/util-linux.hash b/buildroot/package/util-linux/util-linux.hash new file mode 100644 index 0000000..068bb45 --- /dev/null +++ b/buildroot/package/util-linux/util-linux.hash @@ -0,0 +1,9 @@ +# From https://www.kernel.org/pub/linux/utils/util-linux/v2.31/sha256sums.asc +sha256 1a51b16fa9cd51d26ef9ab52d2f1de12403b810fc8252bf7d478df91b3cddf11 util-linux-2.31.1.tar.xz +# License files, locally calculated +sha256 1e4b65802b0df8115395c697029d03339f983d451a473a08643309c684410d9a README.licensing +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Documentation/licenses/COPYING.GPLv2 +sha256 ba7640f00d93e72e92b94b9d71f25ec53bac2f1682f5c4adcccb0018359f60f8 Documentation/licenses/COPYING.UCB +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 Documentation/licenses/COPYING.LGPLv2.1 +sha256 9b718a9460fed5952466421235bc79eb49d4e9eacc920d7a9dd6285ab8fd6c6d Documentation/licenses/COPYING.BSD-3 +sha256 e53348ce276358e9997014071c5294b36a18c4b34f32f00ee57b9acce0aafd63 Documentation/licenses/COPYING.ISC diff --git a/buildroot/package/util-linux/util-linux.mk b/buildroot/package/util-linux/util-linux.mk new file mode 100644 index 0000000..72a6d18 --- /dev/null +++ b/buildroot/package/util-linux/util-linux.mk @@ -0,0 +1,262 @@ +################################################################################ +# +# util-linux +# +################################################################################ + +UTIL_LINUX_VERSION_MAJOR = 2.31 +UTIL_LINUX_VERSION_MINOR = 1 +UTIL_LINUX_VERSION = $(UTIL_LINUX_VERSION_MAJOR).$(UTIL_LINUX_VERSION_MINOR) +UTIL_LINUX_SOURCE = util-linux-$(UTIL_LINUX_VERSION).tar.xz +UTIL_LINUX_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/util-linux/v$(UTIL_LINUX_VERSION_MAJOR) + +# README.licensing claims that some files are GPL-2.0 only, but this is not true. +# Some files are GPL-3.0+ but only in tests. rfkill uses an ISC-style license. +UTIL_LINUX_LICENSE = GPL-2.0+, BSD-4-Clause, LGPL-2.1+ (libblkid, libfdisk, libmount), BSD-3-Clause (libuuid) ISC (rfkill) +UTIL_LINUX_LICENSE_FILES = README.licensing Documentation/licenses/COPYING.GPLv2 Documentation/licenses/COPYING.UCB Documentation/licenses/COPYING.LGPLv2.1 Documentation/licenses/COPYING.BSD-3 Documentation/licenses/COPYING.ISC +UTIL_LINUX_INSTALL_STAGING = YES +UTIL_LINUX_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) +# uClibc needs NTP_LEGACY for sys/timex.h -> ntp_gettime() support +# (used in logger.c), and the common default is N. +UTIL_LINUX_CONF_ENV = scanf_cv_type_modifier=no \ + $(if $(BR2_TOOLCHAIN_USES_UCLIBC),ac_cv_header_sys_timex_h=no) +UTIL_LINUX_CONF_OPTS += \ + --disable-rpath \ + --disable-makeinstall-chown +UTIL_LINUX_LIBS = $(TARGET_NLS_LIBS) + +# system depends on util-linux so we enable systemd support +# (which needs systemd to be installed) +UTIL_LINUX_CONF_OPTS += \ + --without-systemd \ + --with-systemdsystemunitdir=no + +HOST_UTIL_LINUX_DEPENDENCIES = host-pkgconf + +# We also don't want the host-python dependency +HOST_UTIL_LINUX_CONF_OPTS = --without-python + +# If both util-linux and busybox are selected, make certain util-linux +# wins the fight over who gets to have their utils actually installed +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +UTIL_LINUX_DEPENDENCIES += busybox +endif + +# Prevent the installation from attempting to move shared libraries from +# ${usrlib_execdir} (/usr/lib) to ${libdir} (/lib), since both paths are +# the same when merged usr is in use. +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +UTIL_LINUX_CONF_OPTS += --bindir=/usr/bin --sbindir=/usr/sbin --libdir=/usr/lib +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +UTIL_LINUX_DEPENDENCIES += ncurses +ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) +UTIL_LINUX_CONF_OPTS += --with-ncursesw +UTIL_LINUX_CONF_ENV += NCURSESW6_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) +else +UTIL_LINUX_CONF_OPTS += --without-ncursesw --with-ncurses --disable-widechar +UTIL_LINUX_CONF_ENV += NCURSES6_CONFIG=$(STAGING_DIR)/usr/bin/$(NCURSES_CONFIG_SCRIPTS) +endif +else +ifeq ($(BR2_USE_WCHAR),y) +UTIL_LINUX_CONF_OPTS += --enable-widechar +else +UTIL_LINUX_CONF_OPTS += --disable-widechar +endif +UTIL_LINUX_CONF_OPTS += --without-ncursesw --without-ncurses +endif + +ifeq ($(BR2_PACKAGE_LIBCAP_NG),y) +UTIL_LINUX_DEPENDENCIES += libcap-ng +endif + +# Unfortunately, the util-linux does LIBS="" at the end of its +# configure script. So we have to pass the proper LIBS value when +# calling the configure script to make configure tests pass properly, +# and then pass it again at build time. +UTIL_LINUX_CONF_ENV += LIBS="$(UTIL_LINUX_LIBS)" +UTIL_LINUX_MAKE_OPTS += LIBS="$(UTIL_LINUX_LIBS)" + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +UTIL_LINUX_DEPENDENCIES += libselinux +UTIL_LINUX_CONF_OPTS += --with-selinux +define UTIL_LINUX_SELINUX_PAMFILES_TWEAK + $(foreach f,su su-l, + $(SED) 's/^# \(.*pam_selinux.so.*\)$$/\1/' \ + $(TARGET_DIR)/etc/pam.d/$(f) + ) +endef +else +UTIL_LINUX_CONF_OPTS += --without-selinux +endif + +# Used by cramfs utils +UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib) + +# Used by login-utils +UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_LINUX_PAM),linux-pam) + +# Disable/Enable utilities +UTIL_LINUX_CONF_OPTS += \ + $(if $(BR2_PACKAGE_UTIL_LINUX_BINARIES),--enable-all-programs,--disable-all-programs) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_AGETTY),--enable-agetty,--disable-agetty) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_BFS),--enable-bfs,--disable-bfs) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_CAL),--enable-cal,--disable-cal) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH),--enable-chfn-chsh,--disable-chfn-chsh) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_CHMEM),--enable-chmem,--disable-chmem) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_CRAMFS),--enable-cramfs,--disable-cramfs) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_EJECT),--enable-eject,--disable-eject) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_FALLOCATE),--enable-fallocate,--disable-fallocate) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_FDFORMAT),--enable-fdformat,--disable-fdformat) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_FSCK),--enable-fsck,--disable-fsck) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_HWCLOCK),--enable-hwclock,--disable-hwclock) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_IPCRM),--enable-ipcrm,--disable-ipcrm) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_IPCS),--enable-ipcs,--disable-ipcs) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_KILL),--enable-kill,--disable-kill) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LAST),--enable-last,--disable-last) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),--enable-libblkid,--disable-libblkid) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LIBFDISK),--enable-libfdisk,--disable-libfdisk) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),--enable-libmount,--disable-libmount) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS),--enable-libsmartcols,--disable-libsmartcols) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LIBUUID),--enable-libuuid,--disable-libuuid) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LINE),--enable-line,--disable-line) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LOGGER),--enable-logger,--disable-logger) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LOGIN),--enable-login,--disable-login) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LOSETUP),--enable-losetup,--disable-losetup) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LSLOGINS),--enable-lslogins,--disable-lslogins) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_LSMEM),--enable-lsmem,--disable-lsmem) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_MESG),--enable-mesg,--disable-mesg) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_MINIX),--enable-minix,--disable-minix) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_MORE),--enable-more,--disable-more) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_MOUNT),--enable-mount,--disable-mount) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT),--enable-mountpoint,--disable-mountpoint) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_NEWGRP),--enable-newgrp,--disable-newgrp) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_NOLOGIN),--enable-nologin,--disable-nologin) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_NSENTER),--enable-nsenter,--disable-nsenter) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_PARTX),--enable-partx,--disable-partx) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_PG),--enable-pg,--disable-pg) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT),--enable-pivot_root,--disable-pivot_root) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_RAW),--enable-raw,--disable-raw) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_RENAME),--enable-rename,--disable-rename) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_RFKILL),--enable-rfkill,--disable-rfkill) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_RUNUSER),--enable-runuser,--disable-runuser) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS),--enable-schedutils,--disable-schedutils) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SETPRIV),--enable-setpriv,--disable-setpriv) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SETTERM),--enable-setterm,--disable-setterm) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SU),--enable-su,--disable-su) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SULOGIN),--enable-sulogin,--disable-sulogin) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT),--enable-switch_root,--disable-switch_root) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_TUNELP),--enable-tunelp,--disable-tunelp) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_UL),--enable-ul,--disable-ul) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_UNSHARE),--enable-unshare,--disable-unshare) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_UTMPDUMP),--enable-utmpdump,--disable-utmpdump) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_UUIDD),--enable-uuidd,--disable-uuidd) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_VIPW),--enable-vipw,--disable-vipw) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_WALL),--enable-wall,--disable-wall) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_WDCTL),--enable-wdctl,--disable-wdctl) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_WRITE),--enable-write,--disable-write) \ + $(if $(BR2_PACKAGE_UTIL_LINUX_ZRAMCTL),--enable-zramctl,--disable-zramctl) + +# In the host version of util-linux, we only require libuuid and +# libmount (plus libblkid as an indirect dependency of libmount). +# So disable all of the programs, unless BR2_PACKAGE_HOST_UTIL_LINUX is set + +HOST_UTIL_LINUX_CONF_OPTS += \ + --enable-libblkid \ + --enable-libmount \ + --enable-libuuid \ + --without-ncurses \ + --without-ncursesw \ + --without-tinfo + +ifeq ($(BR2_PACKAGE_HOST_UTIL_LINUX),y) +HOST_UTIL_LINUX_CONF_OPTS += --disable-makeinstall-chown +# disable commands that have ncurses dependency, as well as +# other ones that are useless on the host +HOST_UTIL_LINUX_CONF_OPTS += \ + --disable-agetty \ + --disable-chfn-chsh \ + --disable-chmem \ + --disable-login \ + --disable-lslogins \ + --disable-mesg \ + --disable-more \ + --disable-newgrp \ + --disable-nologin \ + --disable-nsenter \ + --disable-pg \ + --disable-rfkill \ + --disable-schedutils \ + --disable-setpriv \ + --disable-setterm \ + --disable-su \ + --disable-sulogin \ + --disable-tunelp \ + --disable-ul \ + --disable-unshare \ + --disable-uuidd \ + --disable-vipw \ + --disable-wall \ + --disable-wdctl \ + --disable-write \ + --disable-zramctl +# Used by cramfs utils +HOST_UTIL_LINUX_DEPENDENCIES += host-zlib +else +HOST_UTIL_LINUX_CONF_OPTS += --disable-all-programs +endif + +# Install libmount Python bindings +ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),y) +UTIL_LINUX_CONF_OPTS += --with-python +UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_PYTHON),python,python3) +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y) +UTIL_LINUX_CONF_OPTS += --enable-pylibmount +else +UTIL_LINUX_CONF_OPTS += --disable-pylibmount +endif +else +UTIL_LINUX_CONF_OPTS += --without-python +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +UTIL_LINUX_CONF_OPTS += --with-readline +UTIL_LINUX_LIBS += $(if $(BR2_STATIC_LIBS),-lcurses) +UTIL_LINUX_DEPENDENCIES += readline +else +UTIL_LINUX_CONF_OPTS += --without-readline +endif + +ifeq ($(BR2_PACKAGE_AUDIT),y) +UTIL_LINUX_CONF_OPTS += --with-audit +UTIL_LINUX_DEPENDENCIES += audit +else +UTIL_LINUX_CONF_OPTS += --without-audit +endif + +# Install PAM configuration files +ifeq ($(BR2_PACKAGE_UTIL_LINUX_SU)$(BR2_PACKAGE_LINUX_PAM),yy) +define UTIL_LINUX_INSTALL_PAMFILES + $(INSTALL) -m 0644 package/util-linux/su.pam \ + $(TARGET_DIR)/etc/pam.d/su + $(INSTALL) -m 0644 package/util-linux/su.pam \ + $(TARGET_DIR)/etc/pam.d/su-l + $(UTIL_LINUX_SELINUX_PAMFILES_TWEAK) +endef +UTIL_LINUX_POST_INSTALL_TARGET_HOOKS += UTIL_LINUX_INSTALL_PAMFILES +endif + +# Install agetty->getty symlink to avoid breakage when there's no busybox +ifeq ($(BR2_PACKAGE_UTIL_LINUX_AGETTY),y) +ifeq ($(BR2_PACKAGE_BUSYBOX),) +define UTIL_LINUX_GETTY_SYMLINK + ln -sf agetty $(TARGET_DIR)/sbin/getty +endef +endif +endif + +UTIL_LINUX_POST_INSTALL_TARGET_HOOKS += UTIL_LINUX_GETTY_SYMLINK + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/ux500-firmware/Config.in b/buildroot/package/ux500-firmware/Config.in new file mode 100644 index 0000000..1c18237 --- /dev/null +++ b/buildroot/package/ux500-firmware/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_UX500_FIRMWARE + bool "ux500-firmware" + help + This package provides various binary firmware files (closed + binary blobs) for the Azurewave AW-NH580 combo module (wifi, + bt, gps). + + https://launchpad.net/~igloocommunity-maintainers/+archive/snowball/+files/ diff --git a/buildroot/package/ux500-firmware/ux500-firmware.hash b/buildroot/package/ux500-firmware/ux500-firmware.hash new file mode 100644 index 0000000..1028cc0 --- /dev/null +++ b/buildroot/package/ux500-firmware/ux500-firmware.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 81633274a9157c076e5e09b5addd81fbcef504b829fc801041cea50eea774bcd ux500-firmware_1.1.3-6linaro1.tar.gz diff --git a/buildroot/package/ux500-firmware/ux500-firmware.mk b/buildroot/package/ux500-firmware/ux500-firmware.mk new file mode 100644 index 0000000..428ed34 --- /dev/null +++ b/buildroot/package/ux500-firmware/ux500-firmware.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# ux500-firmware +# +################################################################################ + +UX500_FIRMWARE_VERSION = 1.1.3-6 +UX500_FIRMWARE_SOURCE = ux500-firmware_$(UX500_FIRMWARE_VERSION)linaro1.tar.gz +UX500_FIRMWARE_SITE = https://launchpad.net/~igloocommunity-maintainers/+archive/snowball/+files +UX500_FIRMWARE_LICENSE = Snowball click-wrap license +UX500_FIRMWARE_LICENSE_FILES = license.txt +UX500_FIRMWARE_REDISTRIBUTE = NO + +# The CG2900 linux driver has to load firmware named CG29XX_* but the firmware +# filenames contained in this package are CG2900_* hence the code below +define UX500_FIRMWARE_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install + for f in $(TARGET_DIR)/lib/firmware/CG2900* ; do \ + mv $$f $${f/CG2900/CG29XX}; \ + done +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/v4l2grab/Config.in b/buildroot/package/v4l2grab/Config.in new file mode 100644 index 0000000..ec3a7a8 --- /dev/null +++ b/buildroot/package/v4l2grab/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_V4L2GRAB + bool "v4l2grab" + depends on BR2_TOOLCHAIN_HAS_THREADS # libv4l + depends on BR2_USE_MMU # libv4l + depends on !BR2_STATIC_LIBS # libv4l + depends on BR2_INSTALL_LIBSTDCPP # libv4l + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # libv4l + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBV4L + help + Utility for grabbing JPEGs form V4L2 devices. This tool is + similar to v4l2grab available from libv4l contrib directory, + but provides additional features such as JPEG output. + + http://www.twam.info/software/v4l2grab-grabbing-jpegs-from-v4l2-devices + +comment "v4l2grab needs a toolchain w/ threads, dynamic library, C++ and headers >= 3.0" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/buildroot/package/v4l2grab/v4l2grab.hash b/buildroot/package/v4l2grab/v4l2grab.hash new file mode 100644 index 0000000..a59c8af --- /dev/null +++ b/buildroot/package/v4l2grab/v4l2grab.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9a8d0d1ca5ac9fb9f66e00300bb3265d156cf1cb67eb30f6e6637c83b0b507a1 v4l2grab-f8d8844d52387b3db7b8736f5e86156d9374f781.tar.gz diff --git a/buildroot/package/v4l2grab/v4l2grab.mk b/buildroot/package/v4l2grab/v4l2grab.mk new file mode 100644 index 0000000..68efe27 --- /dev/null +++ b/buildroot/package/v4l2grab/v4l2grab.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# v4l2grab +# +################################################################################ + +V4L2GRAB_VERSION = f8d8844d52387b3db7b8736f5e86156d9374f781 +V4L2GRAB_SITE = $(call github,twam,v4l2grab,$(V4L2GRAB_VERSION)) +V4L2GRAB_LICENSE = GPL-2.0+ +V4L2GRAB_LICENSE_FILES = LICENSE.md +# Fetched from github, no pre-generated configure script provided +V4L2GRAB_AUTORECONF = YES +V4L2GRAB_DEPENDENCIES = jpeg libv4l + +$(eval $(autotools-package)) diff --git a/buildroot/package/v4l2loopback/Config.in b/buildroot/package/v4l2loopback/Config.in new file mode 100644 index 0000000..d8ca31e --- /dev/null +++ b/buildroot/package/v4l2loopback/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_V4L2LOOPBACK + bool "v4l2loopback" + depends on BR2_LINUX_KERNEL + help + This module allows you to create "virtual video devices". + Normal (v4l2) applications will read these devices as if + they were ordinary video devices, but the video will not be + read from e.g. a capture card but instead it is generated by + another application. + + https://github.com/umlaeute/v4l2loopback + +if BR2_PACKAGE_V4L2LOOPBACK + +config BR2_PACKAGE_V4L2LOOPBACK_UTILS + bool "utils" + depends on BR2_USE_MMU # bash + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash + select BR2_PACKAGE_BASH # runtime dependency + select BR2_PACKAGE_SUDO # runtime dependency + help + Install applications to interact with v4l2-loopback devices + ("virtual video devices"). Currently there is only a single + command line utility: v4l2loopback-ctl: tool to set + framerate, format and timeout image. + +endif + +comment "v4l2loopback needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/v4l2loopback/v4l2loopback.hash b/buildroot/package/v4l2loopback/v4l2loopback.hash new file mode 100644 index 0000000..2b69fd7 --- /dev/null +++ b/buildroot/package/v4l2loopback/v4l2loopback.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 9bb1e8d544019bead20813877415ae974fbc22f87c69772984a4abac433f36dd v4l2loopback-v0.10.0.tar.gz diff --git a/buildroot/package/v4l2loopback/v4l2loopback.mk b/buildroot/package/v4l2loopback/v4l2loopback.mk new file mode 100644 index 0000000..669f8fc --- /dev/null +++ b/buildroot/package/v4l2loopback/v4l2loopback.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# v4l2loopback +# +################################################################################ + +V4L2LOOPBACK_VERSION = v0.10.0 +V4L2LOOPBACK_SITE = $(call github,umlaeute,v4l2loopback,$(V4L2LOOPBACK_VERSION)) +V4L2LOOPBACK_LICENSE = GPL-2.0+ +V4L2LOOPBACK_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_V4L2LOOPBACK_UTILS),y) +define V4L2LOOPBACK_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/utils/v4l2loopback-ctl $(TARGET_DIR)/usr/bin/v4l2loopback-ctl +endef +endif + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/vala/0001-dont-add-dirty-to-valac-version.patch b/buildroot/package/vala/0001-dont-add-dirty-to-valac-version.patch new file mode 100644 index 0000000..a2a0623 --- /dev/null +++ b/buildroot/package/vala/0001-dont-add-dirty-to-valac-version.patch @@ -0,0 +1,25 @@ +valac: don't append -dirty to version + +Don't append -dirty to the valac version number if the Buildroot Git +tree has uncommited changes. + +The patched script is meant for the valac developers, but it also +activates if you build valac in a subdirectory of a Git tree (e.g. +as is commonly done in Buildroot). + +The effect is that valac gets built as being version x.y.z-dirty, which +breaks programs (such as Midori) that explicitly check for valac-x.y.z. + +Signed-off-by: Simon Dawson +diff -Nur a/build-aux/git-version-gen b/build-aux/git-version-gen +--- a/build-aux/git-version-gen 2010-08-15 12:49:03.000000000 +0100 ++++ b/build-aux/git-version-gen 2012-05-14 10:17:19.977204570 +0100 +@@ -135,7 +135,7 @@ + *) # Append the suffix only if there isn't one already. + case $v in + *-dirty) ;; +- *) v="$v-dirty" ;; ++ #*) v="$v-dirty" ;; + esac ;; + esac + diff --git a/buildroot/package/vala/vala-wrapper b/buildroot/package/vala/vala-wrapper new file mode 100644 index 0000000..ae2f7ca --- /dev/null +++ b/buildroot/package/vala/vala-wrapper @@ -0,0 +1,2 @@ +#!/bin/sh +$0-@VALA_VERSION@ --vapidir=${STAGING_DIR}/usr/share/vala/vapi --girdir=${STAGING_DIR}/usr/share/gir-1.0 $@ diff --git a/buildroot/package/vala/vala.hash b/buildroot/package/vala/vala.hash new file mode 100644 index 0000000..48212b2 --- /dev/null +++ b/buildroot/package/vala/vala.hash @@ -0,0 +1,2 @@ +# From https://download.gnome.org/sources/vala/0.34/vala-0.34.7.sha256sum +sha256 1b2cb14f377d4c41fa3a86d3d01b93017015ce91b6714a85f27346073b4034fa vala-0.34.7.tar.xz diff --git a/buildroot/package/vala/vala.mk b/buildroot/package/vala/vala.mk new file mode 100644 index 0000000..ad0a565 --- /dev/null +++ b/buildroot/package/vala/vala.mk @@ -0,0 +1,32 @@ +################################################################################ +# +# vala +# +################################################################################ + +VALA_VERSION_MAJOR = 0.34 +VALA_VERSION = $(VALA_VERSION_MAJOR).7 +VALA_SITE = http://download.gnome.org/sources/vala/$(VALA_VERSION_MAJOR) +VALA_SOURCE = vala-$(VALA_VERSION).tar.xz +VALA_LICENSE = LGPL-2.1+ +VALA_LICENSE_FILES = COPYING + +HOST_VALA_DEPENDENCIES = host-bison host-flex host-libglib2 +# Yes, the autoconf script understands ':' as "xsltproc is not +# available". +HOST_VALA_CONF_ENV = ac_cv_path_XSLTPROC=: + +# We wrap vala & valac to point to the proper gir and vapi data dirs +# Otherwise we'll get host directory data which isn't enough +define HOST_VALA_INSTALL_WRAPPER + $(INSTALL) -D -m 0755 package/vala/vala-wrapper \ + $(HOST_DIR)/bin/vala + $(INSTALL) -D -m 0755 package/vala/vala-wrapper \ + $(HOST_DIR)/bin/valac + $(SED) 's,@VALA_VERSION@,$(VALA_VERSION_MAJOR),' \ + $(HOST_DIR)/bin/vala \ + $(HOST_DIR)/bin/valac +endef +HOST_VALA_POST_INSTALL_HOOKS += HOST_VALA_INSTALL_WRAPPER + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/valgrind/0001-workaround-SIGSEGV-on-PPC.patch b/buildroot/package/valgrind/0001-workaround-SIGSEGV-on-PPC.patch new file mode 100644 index 0000000..8a6003c --- /dev/null +++ b/buildroot/package/valgrind/0001-workaround-SIGSEGV-on-PPC.patch @@ -0,0 +1,32 @@ +From ff29b837f21a69c79289c3a87b03f8c23e05616e Mon Sep 17 00:00:00 2001 +From: Pierre Habouzit +Date: Tue, 10 May 2011 23:11:45 +0200 +Subject: [PATCH] workaround SIGSEGV on PPC. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Pierre Habouzit +Signed-off-by: Jérôme Pouiller +--- + coregrind/m_machine.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c +index 6110c93..298a00e 100644 +--- a/coregrind/m_machine.c ++++ b/coregrind/m_machine.c +@@ -27,6 +27,10 @@ + The GNU General Public License is contained in the file COPYING. + */ + ++#ifdef __powerpc__ ++# pragma GCC optimize ("-O0") ++#endif ++ + #include "pub_core_basics.h" + #include "pub_core_vki.h" + #include "pub_core_threadstate.h" +-- +2.1.4 + diff --git a/buildroot/package/valgrind/0002-Define-PTRACE_GETSIGINFO-on-PowerPC-when-not-availab.patch b/buildroot/package/valgrind/0002-Define-PTRACE_GETSIGINFO-on-PowerPC-when-not-availab.patch new file mode 100644 index 0000000..44adfc4 --- /dev/null +++ b/buildroot/package/valgrind/0002-Define-PTRACE_GETSIGINFO-on-PowerPC-when-not-availab.patch @@ -0,0 +1,37 @@ +From 7311686d6286972ff97cc18b2416a4cdd7fc5c7e Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 31 Oct 2015 12:15:24 +0100 +Subject: [PATCH] Define PTRACE_GETSIGINFO on PowerPC when not available + +uClibc 0.9.33.2 does not define PTRACE_GETSIGINFO in PowerPC. Even +though Buildroot has a uClibc patch doing that, it doesn't solve the +case of external uClibc toolchain from other sources (such as +Crosstool-NG). Therefore, this patch modifies Valgrind to define +PTRACE_GETSIGINFO on PowerPC to the right value, when such definition +is not available from the C library. + +Signed-off-by: Thomas Petazzoni +--- + coregrind/vgdb-invoker-ptrace.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/coregrind/vgdb-invoker-ptrace.c b/coregrind/vgdb-invoker-ptrace.c +index d65f59a..bdefac2 100644 +--- a/coregrind/vgdb-invoker-ptrace.c ++++ b/coregrind/vgdb-invoker-ptrace.c +@@ -72,6 +72,12 @@ + # endif + #endif + ++#if defined(__powerpc__) ++# ifndef PTRACE_GETSIGINFO ++# define PTRACE_GETSIGINFO 0x4202 ++# endif ++#endif ++ + // 32-bit or 64-bit wide, depending on primary architecture. + typedef Addr CORE_ADDR; + typedef Addr PTRACE_XFER_TYPE; +-- +2.1.4 + diff --git a/buildroot/package/valgrind/0004-Fixes-for-musl-libc.patch b/buildroot/package/valgrind/0004-Fixes-for-musl-libc.patch new file mode 100644 index 0000000..d543728 --- /dev/null +++ b/buildroot/package/valgrind/0004-Fixes-for-musl-libc.patch @@ -0,0 +1,99 @@ +From 50859f3577418cc42f76e1319e699202a615bbe1 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Sat, 31 Oct 2015 19:45:04 +0100 +Subject: [PATCH] Fixes for musl libc. + +- add musl libc detection (prevents configure error) +- adjust preload and symbol names (based on the OpenWrt + patch, see [1]) + +[1] https://dev.openwrt.org/browser/trunk/package/devel/valgrind/patches/200-musl_fix.patch?rev=46302 + +Signed-off-by: Peter Seiderer +--- + configure.ac | 16 ++++++++++++++-- + coregrind/vg_preloaded.c | 2 +- + include/pub_tool_redir.h | 9 ++++++++- + 3 files changed, 23 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 8ab7f9b..e865bf5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1009,6 +1009,13 @@ if test x$VGCONF_PLATFORM_PRI_CAPS = xX86_SOLARIS \ + GLIBC_VERSION="solaris" + fi + ++# GLIBC_VERSION is empty if a musl libc is used, so use the toolchain tuple ++# in this case. ++if test x$GLIBC_VERSION = x; then ++ if $CC -dumpmachine | grep -q musl; then ++ GLIBC_VERSION=musl ++ fi ++fi + + AC_MSG_CHECKING([the glibc version]) + +@@ -1064,10 +1071,15 @@ case "${GLIBC_VERSION}" in + # DEFAULT_SUPP set in host_os switch-case above. + # No other suppression file is used. + ;; ++ musl) ++ AC_MSG_RESULT(Musl) ++ AC_DEFINE([MUSL_LIBC], 1, [Define to 1 if you're using Musl libc]) ++ # no DEFAULT_SUPP file yet for musl libc. ++ ;; + 2.0|2.1|*) + AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}]) +- AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later,]) +- AC_MSG_ERROR([Darwin libc, Bionic libc or Solaris libc]) ++ AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later, uClibc,]) ++ AC_MSG_ERROR([musl libc, Darwin libc, Bionic libc or Solaris libc]) + ;; + esac + +diff --git a/coregrind/vg_preloaded.c b/coregrind/vg_preloaded.c +index 2ea7a7a..7b51aba 100644 +--- a/coregrind/vg_preloaded.c ++++ b/coregrind/vg_preloaded.c +@@ -56,7 +56,7 @@ + void VG_NOTIFY_ON_LOAD(freeres)( void ); + void VG_NOTIFY_ON_LOAD(freeres)( void ) + { +-# if !defined(__UCLIBC__) \ ++# if !defined(__UCLIBC__) && !defined(MUSL_LIBC) \ + && !defined(VGPV_arm_linux_android) \ + && !defined(VGPV_x86_linux_android) \ + && !defined(VGPV_mips32_linux_android) \ +diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h +index bac00d7..babcf9a 100644 +--- a/include/pub_tool_redir.h ++++ b/include/pub_tool_redir.h +@@ -242,8 +242,11 @@ + /* --- Soname of the standard C library. --- */ + + #if defined(VGO_linux) || defined(VGO_solaris) ++# if defined(MUSL_LIBC) ++# define VG_Z_LIBC_SONAME libcZdZa // libc.* ++#else + # define VG_Z_LIBC_SONAME libcZdsoZa // libc.so* +- ++#endif + #elif defined(VGO_darwin) && (DARWIN_VERS <= DARWIN_10_6) + # define VG_Z_LIBC_SONAME libSystemZdZaZddylib // libSystem.*.dylib + +@@ -274,7 +277,11 @@ + /* --- Soname of the pthreads library. --- */ + + #if defined(VGO_linux) ++# if defined(MUSL_LIBC) ++# define VG_Z_LIBPTHREAD_SONAME libcZdZa // libc.* ++#else + # define VG_Z_LIBPTHREAD_SONAME libpthreadZdsoZd0 // libpthread.so.0 ++#endif + #elif defined(VGO_darwin) + # define VG_Z_LIBPTHREAD_SONAME libSystemZdZaZddylib // libSystem.*.dylib + #elif defined(VGO_solaris) +-- +2.1.4 + diff --git a/buildroot/package/valgrind/Config.in b/buildroot/package/valgrind/Config.in new file mode 100644 index 0000000..75b779d --- /dev/null +++ b/buildroot/package/valgrind/Config.in @@ -0,0 +1,86 @@ +config BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS + bool + default y if BR2_ARM_CPU_ARMV7A + default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + default y if BR2_i386 || BR2_x86_64 + default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le + depends on !BR2_MIPS_SOFT_FLOAT + +comment "valgrind needs a toolchain w/ dynamic library" + depends on BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_VALGRIND + bool "valgrind" + depends on BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS + depends on !BR2_STATIC_LIBS + help + Tool for debugging and profiling Linux programs. + + http://valgrind.org/ + +if BR2_PACKAGE_VALGRIND + +config BR2_PACKAGE_VALGRIND_MEMCHECK + bool "Memcheck: a memory error detector" + default y + help + This option allows to install the Memcheck tool + +config BR2_PACKAGE_VALGRIND_CACHEGRIND + bool "Cachegrind: a cache and branch-prediction profiler" + default y + help + This option allows to install the Cachegrind tool + +config BR2_PACKAGE_VALGRIND_CALLGRIND + bool "Callgrind: a call-graph generating cache and branch prediction profiler" + default y + help + This option allows to install the Callgrind tool + +config BR2_PACKAGE_VALGRIND_HELGRIND + bool "Helgrind: a thread error detector" + default y + help + This option allows to install the Helgrind tool + +config BR2_PACKAGE_VALGRIND_DRD + bool "DRD: a thread error detector" + default y + help + This option allows to install the DRD tool + +config BR2_PACKAGE_VALGRIND_MASSIF + bool "Massif: a heap profiler" + default y + help + This option allows to install the Massif tool + +config BR2_PACKAGE_VALGRIND_DHAT + bool "DHAT: a dynamic heap analysis tool" + default y + help + This option allows to install the DHAT tool + +config BR2_PACKAGE_VALGRIND_SGCHECK + bool "SGCheck: an experimental stack and global array overrun detector" + help + This option allows to install the SGCheck tool + +config BR2_PACKAGE_VALGRIND_BBV + bool "BBV: an experimental basic block vector generation tool" + help + This option allows to install the BBV tool + +config BR2_PACKAGE_VALGRIND_LACKEY + bool "Lackey: an example tool" + help + This option allows to install the Lackey tool + +config BR2_PACKAGE_VALGRIND_NULGRIND + bool "Nulgrind: the minimal Valgrind tool" + help + This option allows to install the Nulgrind tool + +endif diff --git a/buildroot/package/valgrind/uclibc.supp b/buildroot/package/valgrind/uclibc.supp new file mode 100644 index 0000000..179d27b --- /dev/null +++ b/buildroot/package/valgrind/uclibc.supp @@ -0,0 +1,212 @@ +{ + + Memcheck:Addr1 + fun:_dl_strdup + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_malloc + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Cond + fun:_dl_get_ready_to_run + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_get_ready_to_run + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_get_ready_to_run + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_get_ready_to_run + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_add_elf_hash_table + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_add_elf_hash_table + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_add_elf_hash_table + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_check_if_named_library_is_loaded + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_check_if_named_library_is_loaded + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_check_hashed_files + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_check_hashed_files + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_load_elf_shared_library + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_load_elf_shared_library + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_load_elf_shared_library + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_load_shared_library + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr1 + fun:_dl_find_hash + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_find_hash + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_fixup + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_fixup + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_linux_resolve + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_linux_resolver + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + fun:_dl_parse_lazy_relocation_information + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr2 + obj:/lib/ld-uClibc* + fun:_dl_parse_lazy_relocation_information +} +{ + + Memcheck:Addr4 + fun:_dl_parse_lazy_relocation_information + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + obj:/lib/ld-uClibc* + obj:/lib/ld-uClibc* + fun:_dl_parse_lazy_relocation_information +} +{ + + Memcheck:Addr4 + obj:/lib/ld-uClibc* + fun:_dl_parse_lazy_relocation_information +} +{ + + Memcheck:Addr2 + obj:/lib/ld-uClibc* + fun:_dl_parse_relocation_information +} +{ + + Memcheck:Addr2 + fun:_dl_parse_relocation_information + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + fun:_dl_parse_relocation_information + obj:/lib/ld-uClibc* +} +{ + + Memcheck:Addr4 + obj:/lib/ld-uClibc* + fun:_dl_parse_relocation_information +} +{ + + Memcheck:Addr4 + obj:/lib/ld-uClibc* + obj:/lib/ld-uClibc* + fun:_dl_parse_relocation_information +} +{ + + Memcheck:Addr2 + obj:/lib/ld-uClibc-0.9.27.so + fun:* +} +{ + + Memcheck:Addr4 + obj:/lib/ld-uClibc-0.9.27.so + fun:* +} diff --git a/buildroot/package/valgrind/valgrind.hash b/buildroot/package/valgrind/valgrind.hash new file mode 100644 index 0000000..5d7da19 --- /dev/null +++ b/buildroot/package/valgrind/valgrind.hash @@ -0,0 +1,2 @@ +# From http://valgrind.org/downloads/current.html +md5 6eb03c0c10ea917013a7622e483d61bb valgrind-3.12.0.tar.bz2 diff --git a/buildroot/package/valgrind/valgrind.mk b/buildroot/package/valgrind/valgrind.mk new file mode 100644 index 0000000..32aeb97 --- /dev/null +++ b/buildroot/package/valgrind/valgrind.mk @@ -0,0 +1,153 @@ +################################################################################ +# +# valgrind +# +################################################################################ + +VALGRIND_VERSION = 3.12.0 +VALGRIND_SITE = http://valgrind.org/downloads +VALGRIND_SOURCE = valgrind-$(VALGRIND_VERSION).tar.bz2 +VALGRIND_LICENSE = GPL-2.0, GFDL-1.2 +VALGRIND_LICENSE_FILES = COPYING COPYING.DOCS +VALGRIND_CONF_OPTS = \ + --disable-ubsan \ + --without-mpicc +VALGRIND_INSTALL_STAGING = YES + +# patch 0004-Fixes-for-musl-libc.patch touching configure.ac +VALGRIND_AUTORECONF = YES + +# Valgrind must be compiled with no stack protection, so forcefully +# pass -fno-stack-protector to override what Buildroot may have in +# TARGET_CFLAGS if BR2_SSP_* support is enabled. +VALGRIND_CFLAGS = \ + $(TARGET_CFLAGS) \ + -fno-stack-protector + +# When Valgrind detects a 32-bit MIPS architecture, it forcibly adds +# -march=mips32 to CFLAGS; when it detects a 64-bit MIPS architecture, +# it forcibly adds -march=mips64. This causes Valgrind to be built +# always for the first ISA revision level (R1), even when the user has +# configured Buildroot for the second ISA revision level (R2). +# +# Override the CFLAGS variable (which Valgrind appends to its CFLAGS) +# and pass the right -march option, so they take precedence over +# Valgrind's wrongfully detected value. +ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) +VALGRIND_CFLAGS += -march=$(BR2_GCC_TARGET_ARCH) +endif + +VALGRIND_CONF_ENV = CFLAGS="$(VALGRIND_CFLAGS)" + +# On ARM, Valgrind only supports ARMv7, and uses the arch part of the +# host tuple to determine whether it's being built for ARMv7 or +# not. Therefore, we adjust the host tuple to specify we're on +# ARMv7. The valgrind package is guaranteed, through Config.in, to +# only be selected on ARMv7-A platforms. +ifeq ($(BR2_ARM_CPU_ARMV7A),y) +VALGRIND_CONF_OPTS += \ + --host=$(patsubst arm-%,armv7-%,$(GNU_TARGET_NAME)) +endif + +define VALGRIND_INSTALL_UCLIBC_SUPP + $(INSTALL) -D -m 0644 package/valgrind/uclibc.supp $(TARGET_DIR)/usr/lib/valgrind/uclibc.supp +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_INSTALL_UCLIBC_SUPP + +ifeq ($(BR2_PACKAGE_VALGRIND_MEMCHECK),) +define VALGRIND_REMOVE_MEMCHECK + rm -f $(TARGET_DIR)/usr/lib/valgrind/*memcheck* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_MEMCHECK +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_CACHEGRIND),) +define VALGRIND_REMOVE_CACHEGRIND + rm -f $(TARGET_DIR)/usr/lib/valgrind/*cachegrind* + for i in cg_annotate cg_diff cg_merge; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_CACHEGRIND +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_CALLGRIND),) +define VALGRIND_REMOVE_CALLGRIND + rm -f $(TARGET_DIR)/usr/lib/valgrind/*callgrind* + for i in callgrind_annotate callgrind_control ; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_CALLGRIND +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_HELGRIND),) +define VALGRIND_REMOVE_HELGRIND + rm -f $(TARGET_DIR)/usr/lib/valgrind/*helgrind* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_HELGRIND +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_DRD),) +define VALGRIND_REMOVE_DRD + rm -f $(TARGET_DIR)/usr/lib/valgrind/*drd* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_DRD +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_MASSIF),) +define VALGRIND_REMOVE_MASSIF + rm -f $(TARGET_DIR)/usr/lib/valgrind/*massif* + rm -f $(TARGET_DIR)/usr/bin/ms_script +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_MASSIF +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_DHAT),) +define VALGRIND_REMOVE_DHAT + rm -f $(TARGET_DIR)/usr/lib/valgrind/*dhat* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_DHAT +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_SGCHECK),) +define VALGRIND_REMOVE_SGCHECK + rm -f $(TARGET_DIR)/usr/lib/valgrind/*sgcheck* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_SGCHECK +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_BBV),) +define VALGRIND_REMOVE_BBV + rm -f $(TARGET_DIR)/usr/lib/valgrind/*bbv* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_BBV +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_LACKEY),) +define VALGRIND_REMOVE_LACKEY + rm -f $(TARGET_DIR)/usr/lib/valgrind/*lackey* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_LACKEY +endif + +ifeq ($(BR2_PACKAGE_VALGRIND_NULGRIND),) +define VALGRIND_REMOVE_NULGRIND + rm -f $(TARGET_DIR)/usr/lib/valgrind/*none* +endef + +VALGRIND_POST_INSTALL_TARGET_HOOKS += VALGRIND_REMOVE_NULGRIND +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/valijson/Config.in b/buildroot/package/valijson/Config.in new file mode 100644 index 0000000..10721b3 --- /dev/null +++ b/buildroot/package/valijson/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_VALIJSON + bool "valijson" + depends on BR2_USE_WCHAR + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_REGEX + help + Valijson is a header-only JSON Schema Validation library for + C++. Valijson provides a simple validation API that allows + you load JSON Schemas, and validate documents loaded by one + of several supported parser libraries like boost, jsoncpp, + rapidjson and picoJSON. + + https://github.com/tristanpenman/valijson + +comment "valijson needs a toolchain w/ C++, threads, wchar support" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/valijson/valijson.hash b/buildroot/package/valijson/valijson.hash new file mode 100644 index 0000000..79b3fb7 --- /dev/null +++ b/buildroot/package/valijson/valijson.hash @@ -0,0 +1,2 @@ +# Locally Computed: +sha256 f2346e995bd95c6b86b0b9e9dd228fe134d529565fa86db764c48496805dd9bc valijson-424b706f990a9eb96dfc19cc8e54f2cd6ce5e186.tar.gz diff --git a/buildroot/package/valijson/valijson.mk b/buildroot/package/valijson/valijson.mk new file mode 100644 index 0000000..71bd6a8 --- /dev/null +++ b/buildroot/package/valijson/valijson.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# valijson +# +################################################################################ + +VALIJSON_VERSION = 424b706f990a9eb96dfc19cc8e54f2cd6ce5e186 +VALIJSON_SITE = $(call github,tristanpenman,valijson,$(VALIJSON_VERSION)) +VALIJSON_LICENSE = BSD-2-Clause +VALIJSON_LICENSE_FILES = LICENSE +VALIJSON_INSTALL_STAGING = YES +VALIJSON_INSTALL_TARGET = NO +VALIJSON_DEPENDENCIES = boost +VALIJSON_CONF_OPTS = -DINSTALL_HEADERS=TRUE + +$(eval $(cmake-package)) diff --git a/buildroot/package/vboot-utils/0001-Add-missing-definition-of-MTD_CHAR_MAJOR.patch b/buildroot/package/vboot-utils/0001-Add-missing-definition-of-MTD_CHAR_MAJOR.patch new file mode 100644 index 0000000..42410c8 --- /dev/null +++ b/buildroot/package/vboot-utils/0001-Add-missing-definition-of-MTD_CHAR_MAJOR.patch @@ -0,0 +1,30 @@ +From 1438211660e700b2c9505863aae1cc957236b7c8 Mon Sep 17 00:00:00 2001 +From: Alex Suykov +Date: Thu, 21 Jan 2016 21:59:46 +0100 +Subject: [PATCH] Add missing definition of MTD_CHAR_MAJOR + +This definition missing from for kernels <= 3.13 + +Signed-off-by: Alex Suykov +--- + cgpt/cgpt_wrapper.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/cgpt/cgpt_wrapper.c b/cgpt/cgpt_wrapper.c +index dcfaab9..4d07aad 100644 +--- a/cgpt/cgpt_wrapper.c ++++ b/cgpt/cgpt_wrapper.c +@@ -25,6 +25,10 @@ + #include "cgpt_nor.h" + #include "cryptolib.h" + ++#ifndef MTD_CHAR_MAJOR ++#define MTD_CHAR_MAJOR 90 ++#endif ++ + // Check if cmdline |argv| has "-D". "-D" signifies that GPT structs are stored + // off device, and hence we should not wrap around cgpt. + static bool has_dash_D(int argc, const char *const argv[]) { +-- +2.6.4 + diff --git a/buildroot/package/vboot-utils/0002-Add-missing-header-include-for-ssize_t.patch b/buildroot/package/vboot-utils/0002-Add-missing-header-include-for-ssize_t.patch new file mode 100644 index 0000000..4d559ea --- /dev/null +++ b/buildroot/package/vboot-utils/0002-Add-missing-header-include-for-ssize_t.patch @@ -0,0 +1,27 @@ +From b6bed8d4e9453bc74ba021c8c17e20c3b5964c37 Mon Sep 17 00:00:00 2001 +From: Alex Suykov +Date: Thu, 21 Jan 2016 22:00:34 +0100 +Subject: [PATCH] Add missing header include for ssize_t + +The code uses ssize_t which is usually defined in . + +Signed-off-by: Alex Suykov +--- + host/lib/fmap.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/host/lib/fmap.c b/host/lib/fmap.c +index c95338d..e3db826 100644 +--- a/host/lib/fmap.c ++++ b/host/lib/fmap.c +@@ -6,6 +6,7 @@ + + #include + #include ++#include + + #include "fmap.h" + +-- +2.6.4 + diff --git a/buildroot/package/vboot-utils/0003-Avoid-RSA-type-redefinition.patch b/buildroot/package/vboot-utils/0003-Avoid-RSA-type-redefinition.patch new file mode 100644 index 0000000..86374ca --- /dev/null +++ b/buildroot/package/vboot-utils/0003-Avoid-RSA-type-redefinition.patch @@ -0,0 +1,44 @@ +From 593407d2b3ea3b871d55ec399671e48c84b900a7 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 21 Jan 2016 22:01:37 +0100 +Subject: [PATCH] Avoid RSA type redefinition + +The host_key.h headers does: + + typedef struct rsa_st RSA; + +But this type definition is already done by the OpenSSL headers. + +While such a type redefinition is legal with recent gcc versions, it +doesn't build with older gcc versions such as gcc 4.4. + +To work around this problem, we instead use a forward declaration of +"struct rsa_st", and change the only place where the RSA type was used +by "struct rsa_st". + +Signed-off-by: Thomas Petazzoni +--- + host/lib/include/host_key.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/host/lib/include/host_key.h b/host/lib/include/host_key.h +index 9f98ccc..c2d01a5 100644 +--- a/host/lib/include/host_key.h ++++ b/host/lib/include/host_key.h +@@ -12,11 +12,11 @@ + #include "vboot_struct.h" + + +-typedef struct rsa_st RSA; ++struct rsa_st; + + /* Private key data */ + typedef struct VbPrivateKey { +- RSA* rsa_private_key; /* Private key data */ ++ struct rsa_rt* rsa_private_key; /* Private key data */ + uint64_t algorithm; /* Algorithm to use when signing */ + } VbPrivateKey; + +-- +2.6.4 + diff --git a/buildroot/package/vboot-utils/0004-Disable-static-futility.patch b/buildroot/package/vboot-utils/0004-Disable-static-futility.patch new file mode 100644 index 0000000..649d316 --- /dev/null +++ b/buildroot/package/vboot-utils/0004-Disable-static-futility.patch @@ -0,0 +1,30 @@ +The package attempts to build a statically-linked host binary, futility_s, +which is not used anywhere in buildroot but may be causing build failures +if the build host lacks static libc. + +Signed-off-by: Alex Suykov + +--- a/Makefile ++++ b/Makefile +@@ -1079,7 +1079,7 @@ + # new Firmware Utility + + .PHONY: futil +-futil: ${FUTIL_STATIC_BIN} ${FUTIL_BIN} ++futil: ${FUTIL_BIN} + + ${FUTIL_STATIC_BIN}: ${FUTIL_STATIC_OBJS} ${UTILLIB} + @${PRINTF} " LD $(subst ${BUILD}/,,$@)\n" +@@ -1091,10 +1091,10 @@ + ${Q}${LD} -o $@ ${CFLAGS} ${LDFLAGS} $^ ${LDLIBS} + + .PHONY: futil_install +-futil_install: ${FUTIL_BIN} ${FUTIL_STATIC_BIN} ++futil_install: ${FUTIL_BIN} + @${PRINTF} " INSTALL futility\n" + ${Q}mkdir -p ${UB_DIR} +- ${Q}${INSTALL} -t ${UB_DIR} ${FUTIL_BIN} ${FUTIL_STATIC_BIN} ++ ${Q}${INSTALL} -t ${UB_DIR} ${FUTIL_BIN} + ${Q}for prog in ${FUTIL_SYMLINKS}; do \ + ln -sf futility "${UB_DIR}/$$prog"; done + diff --git a/buildroot/package/vboot-utils/Config.in.host b/buildroot/package/vboot-utils/Config.in.host new file mode 100644 index 0000000..aa0caef --- /dev/null +++ b/buildroot/package/vboot-utils/Config.in.host @@ -0,0 +1,7 @@ +config BR2_PACKAGE_HOST_VBOOT_UTILS + bool "host vboot utils" + select BR2_PACKAGE_HOST_UTIL_LINUX + help + Chromium OS verified boot utilities: futility and cgpt. + + https://www.chromium.org/chromium-os/chromiumos-design-docs/verified-boot diff --git a/buildroot/package/vboot-utils/vboot-utils.hash b/buildroot/package/vboot-utils/vboot-utils.hash new file mode 100644 index 0000000..4ff6c39 --- /dev/null +++ b/buildroot/package/vboot-utils/vboot-utils.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d95b64b1f1de4a3ffa5c2e446d7c8e92aa197aee10de24206b2ea2deb5a8b947 vboot-utils-bbdd62f9b030db7ad8eef789aaf58a7ff9a25656.tar.gz diff --git a/buildroot/package/vboot-utils/vboot-utils.mk b/buildroot/package/vboot-utils/vboot-utils.mk new file mode 100644 index 0000000..3f63f45 --- /dev/null +++ b/buildroot/package/vboot-utils/vboot-utils.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# vboot-utils +# +################################################################################ + +VBOOT_UTILS_VERSION = bbdd62f9b030db7ad8eef789aaf58a7ff9a25656 +VBOOT_UTILS_SITE = https://chromium.googlesource.com/chromiumos/platform/vboot_reference +VBOOT_UTILS_SITE_METHOD = git +VBOOT_UTILS_LICENSE = BSD-3-Clause +VBOOT_UTILS_LICENSE_FILES = LICENSE + +HOST_VBOOT_UTILS_DEPENDENCIES = host-openssl host-util-linux host-pkgconf + +# vboot_reference contains code that goes into bootloaders, +# utilities intended for the target system, and a bunch of scripts +# for Chromium OS build system. Most of that does not make sense +# in a buildroot host-package. +# +# We only need futility for signing images, the keys, and cgpt for boot +# media partitioning. +# +# make target for futility is "futil". +# +# The value of ARCH is only relevant for crossystem (a target tool) and +# does not affect futil or cgpt in any way as long as it is one of the +# supported targets. + +define HOST_VBOOT_UTILS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + CC="$(HOSTCC)" \ + CFLAGS="$(HOST_CFLAGS) -D_LARGEFILE64_SOURCE -D_GNU_SOURCE" \ + LDFLAGS="$(HOST_LDFLAGS)" \ + ARCH=arm \ + futil cgpt +endef + +define HOST_VBOOT_UTILS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) \ + futil_install cgpt_install devkeys_install +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/vde2/0001-no-cxx.patch b/buildroot/package/vde2/0001-no-cxx.patch new file mode 100644 index 0000000..67cefa2 --- /dev/null +++ b/buildroot/package/vde2/0001-no-cxx.patch @@ -0,0 +1,22 @@ +configure: do not test for CXX, it's not needed + +There is no C++ source file, so no reason to require a C++ compiler. + +Reported-by: Peter Korsgaard +Signed-off-by: "Yann E. MORIN" + +--- +Patch sent upstream +( not yet in archives, awaits moderator approval... :-/ ) + +diff -durN vde2-2.3.2.orig/configure.ac vde2-2.3.2/configure.ac +--- vde2-2.3.2.orig/configure.ac 2011-11-23 17:41:19.000000000 +0100 ++++ vde2-2.3.2/configure.ac 2012-12-14 21:56:47.146319686 +0100 +@@ -11,7 +11,6 @@ + AC_CONFIG_LIBOBJ_DIR(src/common) + + # Checks for programs. +-AC_PROG_CXX + AC_PROG_CC + AC_PROG_INSTALL + AC_PROG_LN_S diff --git a/buildroot/package/vde2/0002-fstp-Add-static-to-inline-functions.patch b/buildroot/package/vde2/0002-fstp-Add-static-to-inline-functions.patch new file mode 100644 index 0000000..0dbe083 --- /dev/null +++ b/buildroot/package/vde2/0002-fstp-Add-static-to-inline-functions.patch @@ -0,0 +1,44 @@ +From 67bc8443ac7e8144a78d84dee30a5cac3b5c99a4 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 27 Aug 2017 23:56:05 +0200 +Subject: [PATCH] fstp: Add static to inline functions + +From [1] +"This is needed to avoid a link error where the inline functions appear +missing at link time. +From c99 standard inline function should either be declared static or +have an extern instance in a c file for linking. +This fix is necessary to build with gcc 7; for some reason it was not +trigerred before." + +[1] https://git.buildroot.net/buildroot/commit/?id=21133ada326c87627f7bdee4493d8086587c3cca + +Signed-off-by: Romain Naour +--- + src/vde_switch/fstp.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/vde_switch/fstp.c b/src/vde_switch/fstp.c +index aab7324..b1e7ee8 100644 +--- a/src/vde_switch/fstp.c ++++ b/src/vde_switch/fstp.c +@@ -30,14 +30,14 @@ static int numports; + #ifdef FSTP + #include + /*********************** sending macro used by FSTP & Core ******************/ +-void inline ltonstring(unsigned long l,unsigned char *s) { ++static void inline ltonstring(unsigned long l,unsigned char *s) { + s[3]=l; l>>=8; + s[2]=l; l>>=8; + s[1]=l; l>>=8; + s[0]=l; + } + +-unsigned long inline nstringtol(unsigned char *s) { ++static unsigned long inline nstringtol(unsigned char *s) { + return (s[0]<<24)+(s[1]<<16)+(s[2]<<8)+s[3]; + } + +-- +2.9.5 + diff --git a/buildroot/package/vde2/Config.in b/buildroot/package/vde2/Config.in new file mode 100644 index 0000000..f640a4a --- /dev/null +++ b/buildroot/package/vde2/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_VDE2 + bool "vde2" + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS # dlopen() + help + VDE is an ethernet compliant virtual network that can be + spawned over a set of physical computers over the Internet. + VDE is part of the virtualsquare project. + + http://vde.sourceforge.net/ + +comment "vde2 needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/vde2/vde2.hash b/buildroot/package/vde2/vde2.hash new file mode 100644 index 0000000..a56a1bb --- /dev/null +++ b/buildroot/package/vde2/vde2.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 cbea9b7e03097f87a6b5e98b07890d2275848f1fe4b9fcda77b8994148bc9542 vde2-2.3.2.tar.bz2 diff --git a/buildroot/package/vde2/vde2.mk b/buildroot/package/vde2/vde2.mk new file mode 100644 index 0000000..e2ec124 --- /dev/null +++ b/buildroot/package/vde2/vde2.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# vde2 +# +################################################################################ + +VDE2_VERSION = 2.3.2 +VDE2_SOURCE = vde2-$(VDE2_VERSION).tar.bz2 +VDE2_SITE = http://downloads.sourceforge.net/project/vde/vde2/$(VDE2_VERSION) +VDE2_LICENSE = GPL-2.0+, LGPL-2.1+, BSD-3-Clause +VDE2_LICENSE_FILES = COPYING COPYING.libvdeplug COPYING.slirpvde +VDE2_INSTALL_STAGING = YES + +# We touch configure.ac, so we need to autoreconf +VDE2_AUTORECONF = YES + +# Reasons for enabling/disabling stuff: +# - tuntap is enabled in the hope we're using a recent-enough toolchain +# that does have if_tun.h (virtually everything these days) +# - kvde_switch is disabled because it requires a patched kernel +# - cryptcab is disabled to not depend on openSSL +# - python is disabled to not depend on Python +# - pcap is disabled to not depend on libpcap +# - profiling is disabled because we do not want to debug/profile +# +# Note: disabled features can be added with corresponding dependencies +# in future commits. +VDE2_CONF_OPTS = \ + --disable-cryptcab \ + --disable-experimental \ + --disable-kernel-switch \ + --disable-pcap \ + --disable-profile \ + --disable-python \ + --enable-tuntap + +# Package does not build in parallel due to improper make rules +VDE2_MAKE = $(MAKE1) + +HOST_VDE2_CONF_OPTS = \ + --disable-cryptcab \ + --disable-experimental \ + --disable-kernel-switch \ + --disable-pcap \ + --disable-profile \ + --disable-python \ + --enable-tuntap + +HOST_VDE2_MAKE = $(MAKE1) + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/vdr-plugin-vnsiserver/Config.in b/buildroot/package/vdr-plugin-vnsiserver/Config.in new file mode 100644 index 0000000..0a0ab8d --- /dev/null +++ b/buildroot/package/vdr-plugin-vnsiserver/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_VDR_PLUGIN_VNSISERVER + bool "vdr-plugin-vnsiserver" + depends on BR2_PACKAGE_VDR + help + VDR plugin to handle KODI clients. + The vdr-plugin-vnsiserver is able to handle serveral KODI + clients connecting via the VNSI addon. + + https://github.com/FernetMenta/vdr-plugin-vnsiserver diff --git a/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash b/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash new file mode 100644 index 0000000..97cb4b4 --- /dev/null +++ b/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 f8170b4d6f983e7b5b5110e0432ff46355998e170f66459588170cc320717f7f vdr-plugin-vnsiserver-v1.5.2.tar.gz diff --git a/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk b/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk new file mode 100644 index 0000000..a25a99d --- /dev/null +++ b/buildroot/package/vdr-plugin-vnsiserver/vdr-plugin-vnsiserver.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# vdr-plugin-vnsiserver +# +################################################################################ + +VDR_PLUGIN_VNSISERVER_VERSION = v1.5.2 +VDR_PLUGIN_VNSISERVER_SITE = $(call github,FernetMenta,vdr-plugin-vnsiserver,$(VDR_PLUGIN_VNSISERVER_VERSION)) +VDR_PLUGIN_VNSISERVER_LICENSE = GPL-2.0+ +VDR_PLUGIN_VNSISERVER_LICENSE_FILES = COPYING +VDR_PLUGIN_VNSISERVER_DEPENDENCIES = vdr + +VDR_PLUGIN_VNSISERVER_CXXFLAGS = CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11 -fPIC" + +define VDR_PLUGIN_VNSISERVER_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + $(VDR_PLUGIN_VNSISERVER_CXXFLAGS) +endef + +define VDR_PLUGIN_VNSISERVER_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + install DESTDIR=$(TARGET_DIR) LIBDIR=/usr/lib/vdr +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/vdr/0001-getloadavg.patch b/buildroot/package/vdr/0001-getloadavg.patch new file mode 100644 index 0000000..3937c83 --- /dev/null +++ b/buildroot/package/vdr/0001-getloadavg.patch @@ -0,0 +1,55 @@ +Fix compilation with uClibc + +Ported from +https://github.com/stschake/buildroot-grasshopper/blob/master/package/torsmo/torsmo-0.18-uclibc-getloadavg.patch + +Signed-off-by: Bernd Kuhls + +diff -uwNr vdr-2.3.1.org/skinlcars.c vdr-2.3.1/skinlcars.c +--- vdr-2.3.1.org/skinlcars.c 2015-09-01 12:07:07.000000000 +0200 ++++ vdr-2.3.1/skinlcars.c 2016-07-31 21:00:11.000000000 +0200 +@@ -1099,6 +1099,44 @@ + } + } + ++/* uclibc and dietlibc do not have this junk -ReneR */ ++#if defined (__UCLIBC__) || defined (__dietlibc__) ++static int getloadavg (double loadavg[], int nelem) ++{ ++ int fd; ++ ++ fd = open ("/proc/loadavg", O_RDONLY); ++ if (fd < 0) ++ return -1; ++ else ++ { ++ char buf[65], *p; ++ ssize_t nread; ++ int i; ++ ++ nread = read (fd, buf, sizeof buf - 1); ++ close (fd); ++ if (nread <= 0) ++ return -1; ++ buf[nread - 1] = '\0'; ++ ++ if (nelem > 3) ++ nelem = 3; ++ p = buf; ++ for (i = 0; i < nelem; ++i) ++ { ++ char *endp; ++ loadavg[i] = strtod (p, &endp); ++ if (endp == p) ++ return -1; ++ p = endp; ++ } ++ ++ return i; ++ } ++} ++#endif ++ + void cSkinLCARSDisplayMenu::DrawLoad(void) + { + if (yb04) { diff --git a/buildroot/package/vdr/0002-libjpeg.patch b/buildroot/package/vdr/0002-libjpeg.patch new file mode 100644 index 0000000..dbd1f12 --- /dev/null +++ b/buildroot/package/vdr/0002-libjpeg.patch @@ -0,0 +1,40 @@ +Fix compilation with libjpeg + +Patch inspired by upstream board: +http://www.vdr-portal.de/board16-video-disk-recorder/board4-vdr-installation/p1189959-vdr-2-05-mit-libjpeg-9a-kommt-nicht-aus/#post1189959 + +Signed-off-by: Bernd Kuhls + +diff -uNr vdr-2.3.1.org/tools.c vdr-2.3.1/tools.c +--- vdr-2.3.1.org/tools.c 2015-09-10 15:17:55.000000000 +0200 ++++ vdr-2.3.1/tools.c 2016-08-01 06:37:44.000000000 +0200 +@@ -1254,15 +1254,15 @@ + } + else { + esyslog("ERROR: out of memory"); +- return false; ++ return FALSE; + } + if (jcd->mem) { + cinfo->dest->next_output_byte = jcd->mem + Used; + cinfo->dest->free_in_buffer = jcd->size - Used; +- return true; ++ return TRUE; + } + } +- return false; ++ return FALSE; + } + + static void JpegCompressTermDestination(j_compress_ptr cinfo) +@@ -1307,8 +1307,8 @@ + cinfo.in_color_space = JCS_RGB; + + jpeg_set_defaults(&cinfo); +- jpeg_set_quality(&cinfo, Quality, true); +- jpeg_start_compress(&cinfo, true); ++ jpeg_set_quality(&cinfo, Quality, TRUE); ++ jpeg_start_compress(&cinfo, TRUE); + + int rs = Width * 3; + JSAMPROW rp[Height]; diff --git a/buildroot/package/vdr/Config.in b/buildroot/package/vdr/Config.in new file mode 100644 index 0000000..65117f5 --- /dev/null +++ b/buildroot/package/vdr/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_VDR + bool "vdr" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + depends on !BR2_TOOLCHAIN_USES_MUSL # _nl_msg_cat_cntr + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBCAP + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + This project describes how to build your own digital + satellite receiver and Video Disk Recorder. + + http://www.tvdr.de + +comment "vdr needs a glibc or uClibc toolchain w/ C++, dynamic library, NPTL, wchar, headers >= 3.9" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + BR2_TOOLCHAIN_USES_MUSL || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 diff --git a/buildroot/package/vdr/vdr.hash b/buildroot/package/vdr/vdr.hash new file mode 100644 index 0000000..2ced98d --- /dev/null +++ b/buildroot/package/vdr/vdr.hash @@ -0,0 +1,4 @@ +# From https://www.linuxtv.org/pipermail/vdr/2017-May/029263.html +md5 01fabef4d20ec01f11d53354d99a9642 vdr-2.3.5.tar.bz2 +# Locally computed +sha256 323fd01e4f8daef24bbdcb906023d18c998a204a22de110d1cb0089532e818b5 vdr-2.3.5.tar.bz2 diff --git a/buildroot/package/vdr/vdr.mk b/buildroot/package/vdr/vdr.mk new file mode 100644 index 0000000..242c579 --- /dev/null +++ b/buildroot/package/vdr/vdr.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# vdr +# +################################################################################ + +VDR_VERSION = 2.3.5 +VDR_SOURCE = vdr-$(VDR_VERSION).tar.bz2 +VDR_SITE = ftp://ftp.tvdr.de/vdr/Developer +VDR_LICENSE = GPL-2.0+ +VDR_LICENSE_FILES = COPYING +VDR_INSTALL_STAGING = YES +VDR_DEPENDENCIES = \ + freetype \ + fontconfig \ + jpeg \ + libcap \ + $(TARGET_NLS_DEPENDENCIES) + +VDR_INCLUDE_DIRS = -I$(STAGING_DIR)/usr/include/freetype2 +VDR_MAKE_FLAGS = \ + NO_KBD=yes \ + PLUGINLIBDIR=/usr/lib/vdr \ + PREFIX=/usr \ + VIDEODIR=/var/lib/vdr +VDR_LDFLAGS = $(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y) +VDR_DEPENDENCIES += libfribidi +VDR_INCLUDE_DIRS += -I$(STAGING_DIR)/usr/include/fribidi +VDR_LDFLAGS += -lfribidi +VDR_MAKE_FLAGS += BIDI=1 +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +VDR_DEPENDENCIES += libiconv +VDR_LDFLAGS += -liconv +endif + +VDR_MAKE_ENV = \ + INCLUDES="$(VDR_INCLUDE_DIRS)" \ + LDFLAGS="$(VDR_LDFLAGS)" \ + $(VDR_MAKE_FLAGS) + +define VDR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(VDR_MAKE_ENV) \ + vdr vdr.pc include-dir +endef + +define VDR_INSTALL_STAGING_CMDS + $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(VDR_MAKE_ENV) \ + DESTDIR=$(STAGING_DIR) \ + install-dirs install-bin install-conf install-includes \ + install-pc +endef + +define VDR_INSTALL_TARGET_CMDS + $(MAKE1) $(TARGET_CONFIGURE_OPTS) -C $(@D) $(VDR_MAKE_ENV) \ + DESTDIR=$(TARGET_DIR) \ + install-dirs install-bin install-conf +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/vim/Config.in b/buildroot/package/vim/Config.in new file mode 100644 index 0000000..1469be8 --- /dev/null +++ b/buildroot/package/vim/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_VIM + bool "vim" + depends on BR2_USE_MMU # uses fork() + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + help + VIM Text editor + + http://www.vim.org/ + +if BR2_PACKAGE_VIM + +config BR2_PACKAGE_VIM_RUNTIME + bool "install runtime" + default y + help + Install VIM runtime (syntax highlighing + macros). + This option adds about 11MB of data to /usr/share/ + +endif + +comment "vim needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR + depends on BR2_USE_MMU + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/vim/vim.hash b/buildroot/package/vim/vim.hash new file mode 100644 index 0000000..28c6b97 --- /dev/null +++ b/buildroot/package/vim/vim.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 6fbe0ec1228f951ba598b48ac8033f41ca4934cc34689a6008685e7c26477ae2 vim-v8.0.0329.tar.gz diff --git a/buildroot/package/vim/vim.mk b/buildroot/package/vim/vim.mk new file mode 100644 index 0000000..5ee8898 --- /dev/null +++ b/buildroot/package/vim/vim.mk @@ -0,0 +1,81 @@ +################################################################################ +# +# vim +# +################################################################################ + +VIM_VERSION = v8.0.0329 +VIM_SITE = $(call github,vim,vim,$(VIM_VERSION)) +# Win over busybox vi since vim is more feature-rich +VIM_DEPENDENCIES = \ + ncurses $(TARGET_NLS_DEPENDENCIES) \ + $(if $(BR2_PACKAGE_BUSYBOX),busybox) +VIM_SUBDIR = src +VIM_CONF_ENV = \ + vim_cv_toupper_broken=no \ + vim_cv_terminfo=yes \ + vim_cv_tty_group=world \ + vim_cv_tty_mode=0620 \ + vim_cv_getcwd_broken=no \ + vim_cv_stat_ignores_slash=yes \ + vim_cv_memmove_handles_overlap=yes \ + ac_cv_sizeof_int=4 \ + ac_cv_small_wchar_t=no +# GUI/X11 headers leak from the host so forcibly disable them +VIM_CONF_OPTS = --with-tlib=ncurses --enable-gui=no --without-x +VIM_LICENSE = Charityware +VIM_LICENSE_FILES = README.txt + +ifeq ($(BR2_PACKAGE_ACL),y) +VIM_CONF_OPTS += --enable-acl +VIM_DEPENDENCIES += acl +else +VIM_CONF_OPTS += --disable-acl +endif + +ifeq ($(BR2_PACKAGE_GPM),y) +VIM_CONF_OPTS += --enable-gpm +VIM_DEPENDENCIES += gpm +else +VIM_CONF_OPTS += --disable-gpm +endif + +ifeq ($(BR2_PACKAGE_LIBSELINUX),y) +VIM_CONF_OPTS += --enable-selinux +VIM_DEPENDENCIES += libselinux +else +VIM_CONF_OPTS += --disable-selinux +endif + +define VIM_INSTALL_TARGET_CMDS + cd $(@D)/src; \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installvimbin; \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installtools; \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installlinks +endef + +define VIM_INSTALL_RUNTIME_CMDS + cd $(@D)/src; \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installrtbase; \ + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) installmacros +endef + +define VIM_REMOVE_DOCS + $(RM) -rf $(TARGET_DIR)/usr/share/vim/vim*/doc/ +endef + +# Avoid oopses with vipw/vigr, lack of $EDITOR and 'vi' command expectation +define VIM_INSTALL_VI_SYMLINK + ln -sf /usr/bin/vim $(TARGET_DIR)/bin/vi +endef +VIM_POST_INSTALL_TARGET_HOOKS += VIM_INSTALL_VI_SYMLINK + +ifeq ($(BR2_PACKAGE_VIM_RUNTIME),y) +VIM_POST_INSTALL_TARGET_HOOKS += VIM_INSTALL_RUNTIME_CMDS +VIM_POST_INSTALL_TARGET_HOOKS += VIM_REMOVE_DOCS +endif + +HOST_VIM_DEPENDENCIES = host-ncurses + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/vlc/0001-vlc-static.patch b/buildroot/package/vlc/0001-vlc-static.patch new file mode 100644 index 0000000..f9aa079 --- /dev/null +++ b/buildroot/package/vlc/0001-vlc-static.patch @@ -0,0 +1,24 @@ +diff -uNr vlc-2.1.5.org/bin/Makefile.am vlc-2.1.5/bin/Makefile.am +--- vlc-2.1.5.org/bin/Makefile.am 2013-12-03 10:12:34.000000000 +0100 ++++ vlc-2.1.5/bin/Makefile.am 2014-08-03 12:30:06.722154518 +0200 +@@ -1,7 +1,7 @@ + # Building vlc + # + bin_PROGRAMS = vlc +-noinst_PROGRAMS = vlc-static ++noinst_PROGRAMS = + noinst_DATA = + vlclib_PROGRAMS = vlc-cache-gen + EXTRA_PROGRAMS = vlc-wrapper +diff -uNr vlc-2.1.5.org/Makefile.am vlc-2.1.5/Makefile.am +--- vlc-2.1.5.org/Makefile.am 2014-02-14 18:40:50.000000000 +0100 ++++ vlc-2.1.5/Makefile.am 2014-08-03 12:29:52.059010766 +0200 +@@ -932,7 +932,7 @@ + cd lib && $(MAKE) $(AM_MAKEFLAGS) libvlc.la + + core: libvlc vlc$(EXEEXT) +- cd bin && $(MAKE) $(AM_MAKEFLAGS) vlc$(EXEEXT) vlc-static$(EXEEXT) ++ cd bin && $(MAKE) $(AM_MAKEFLAGS) vlc$(EXEEXT) + + doc: + cd doc && $(MAKE) $(AM_MAKEFLAGS) doc diff --git a/buildroot/package/vlc/0002-configure.ac-add-check-for-libgcrypt-config-program.patch b/buildroot/package/vlc/0002-configure.ac-add-check-for-libgcrypt-config-program.patch new file mode 100644 index 0000000..e9a7315 --- /dev/null +++ b/buildroot/package/vlc/0002-configure.ac-add-check-for-libgcrypt-config-program.patch @@ -0,0 +1,43 @@ +From 88bf3313850bc7f0e6db21daee2b8d8e607b7bb4 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sat, 8 Feb 2014 14:33:27 +0100 +Subject: [PATCH] configure.ac: add check for libgcrypt-config program + +This allows to override the default libgcrypt-config location (which is +useful when cross-compiling), instead of using the one from the host +system. + +Signed-off-by: Samuel Martin +[yann.morin.1998@free.fr: adapt from 2.1.6 to 2.2.0; fix quoting in + AC_PATH_PROG] +Signed-off-by: "Yann E. MORIN" +--- + configure.ac | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 02fb8aa..5a2267b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -4020,16 +4020,17 @@ + AC_ARG_ENABLE(libgcrypt, + [ --disable-libgcrypt gcrypt support (default enabled)]) + AS_IF([test "${enable_libgcrypt}" != "no"], [ ++ AC_PATH_PROG([GCRYPT_CONFIG],[libgcrypt-config],[libgcrypt-config]) + AC_CHECK_DECL([GCRYCTL_SET_THREAD_CBS], [ +- libgcrypt-config --version >/dev/null || \ ++ ${GCRYPT_CONFIG} --version >/dev/null || \ + AC_MSG_ERROR([gcrypt.h present but libgcrypt-config could not be found]) + AC_CHECK_LIB(gcrypt, gcry_control, [ + have_libgcrypt="yes" +- GCRYPT_CFLAGS="`libgcrypt-config --cflags`" +- GCRYPT_LIBS="`libgcrypt-config --libs`" ++ GCRYPT_CFLAGS="`${GCRYPT_CONFIG} --cflags`" ++ GCRYPT_LIBS="`${GCRYPT_CONFIG} --libs`" + ], [ + AC_MSG_ERROR([libgcrypt not found. Install libgcrypt or pass --disable-libgcrypt.]) +- ], [`libgcrypt-config --libs`]) ++ ], [`${GCRYPT_CONFIG} --libs`]) + ], [ + AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or pass --disable-libgcrypt.]) + ], [#include ] diff --git a/buildroot/package/vlc/0003-automake-add-subdir-objects-option.patch b/buildroot/package/vlc/0003-automake-add-subdir-objects-option.patch new file mode 100644 index 0000000..cea6a38 --- /dev/null +++ b/buildroot/package/vlc/0003-automake-add-subdir-objects-option.patch @@ -0,0 +1,22 @@ +automake: add subdir-objects option + +Our version of automake warns if this option is enabled and source files +in subdirectories are used. + +It doesn't really seems to have a noticable effect on the build, but it +does remove a lot of annoying warnings. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) + +diff -Nrup vlc-2.1.2.orig/configure.ac vlc-2.1.2/configure.ac +--- vlc-2.1.2.orig/configure.ac 2014-02-27 00:22:19.512944952 +0100 ++++ vlc-2.1.2/configure.ac 2014-02-27 00:24:21.360940651 +0100 +@@ -24,7 +24,7 @@ AC_CANONICAL_BUILD + AC_CANONICAL_HOST + AC_PRESERVE_HELP_ORDER + +-AM_INIT_AUTOMAKE(tar-ustar color-tests foreign) ++AM_INIT_AUTOMAKE(tar-ustar color-tests foreign subdir-objects) + AC_CONFIG_HEADERS([config.h]) + + # Disable with "./configure --disable-silent-rules" or "make V=1" diff --git a/buildroot/package/vlc/0004-implicit-function-declaration.patch b/buildroot/package/vlc/0004-implicit-function-declaration.patch new file mode 100644 index 0000000..515453d --- /dev/null +++ b/buildroot/package/vlc/0004-implicit-function-declaration.patch @@ -0,0 +1,20 @@ +Fix compile warning being treated as error: + +codec/svg.c: In function 'DecodeBlock': +codec/svg.c:240:5: error: implicit declaration of function 'rsvg_handle_render_cairo' [-Werror=implicit-function-declaration] +cc1: some warnings being treated as errors + +Signed-off-by: Bernd Kuhls + +diff -uNr vlc-2.2.1.org/configure.ac vlc-2.2.1/configure.ac +--- vlc-2.2.1.org/configure.ac 2015-04-13 09:57:54.000000000 +0200 ++++ vlc-2.2.1/configure.ac 2015-04-24 20:54:35.349039010 +0200 +@@ -864,7 +864,7 @@ + dnl Compiler warnings + dnl + +-RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var error-implicit-function-declaration]) ++RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var]) + RDC_PROG_CC_FLAGS([-pipe]) + AC_LANG_PUSH([C++]) + RDC_PROG_CXX_WFLAGS([all extra sign-compare undef pointer-arith volatile-register-var]) diff --git a/buildroot/package/vlc/0005-libvorbisidec.patch b/buildroot/package/vlc/0005-libvorbisidec.patch new file mode 100644 index 0000000..155e069 --- /dev/null +++ b/buildroot/package/vlc/0005-libvorbisidec.patch @@ -0,0 +1,18 @@ +Fixes linking error with tremor due to wrong library name + +Downloaded from Gentoo package +https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-video/vlc/files/vlc-2.1.0-fix-libtremor-libs.patch?view=markup + +Signed-off-by: Bernd Kuhls + +--- a/modules/codec/Makefile.am ++++ b/modules/codec/Makefile.am +@@ -215,7 +215,7 @@ + libtremor_plugin_la_SOURCES = codec/vorbis.c + libtremor_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -DMODULE_NAME_IS_tremor + libtremor_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)' +-libtremor_plugin_la_LIBADD = -lvorbisdec -logg ++libtremor_plugin_la_LIBADD = $(VORBIS_LIBS) $(OGG_LIBS) + EXTRA_LTLIBRARIES += libtremor_plugin.la + codec_LTLIBRARIES += $(LTLIBtremor) + diff --git a/buildroot/package/vlc/0006-qt-x11.patch b/buildroot/package/vlc/0006-qt-x11.patch new file mode 100644 index 0000000..316a31f --- /dev/null +++ b/buildroot/package/vlc/0006-qt-x11.patch @@ -0,0 +1,16 @@ +libX11 is an optional dependency for the qt4 module + +Signed-off-by: Bernd Kuhls + +diff -uNr vlc-2.2.1.org/modules/gui/qt4/Makefile.am vlc-2.2.1/modules/gui/qt4/Makefile.am +--- vlc-2.2.1.org/modules/gui/qt4/Makefile.am 2014-11-29 12:34:15.000000000 +0100 ++++ vlc-2.2.1/modules/gui/qt4/Makefile.am 2015-04-27 18:53:36.968611490 +0200 +@@ -22,7 +22,7 @@ + if HAVE_WIN32 + libqt4_plugin_la_LIBADD += -lole32 -lcomctl32 -luuid + else +-libqt4_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIB) -lX11 ++libqt4_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIB) + endif + endif + if HAVE_DARWIN diff --git a/buildroot/package/vlc/0007-strerror.patch b/buildroot/package/vlc/0007-strerror.patch new file mode 100644 index 0000000..e9f3141 --- /dev/null +++ b/buildroot/package/vlc/0007-strerror.patch @@ -0,0 +1,43 @@ +Fix compile error + + CCLD vlc +/home/br/br3/output/build/vlc-2.2.1/src/.libs/libvlccore.so: undefined reference to `strerror_l' + +Code for #else condition was taken from +http://patches.osdyson.org/patch/series/view/vlc/2.2.0~rc2-1+dyson2/dyson.patch + +Signed-off-by: Bernd Kuhls + +diff -uNr vlc-2.2.1.org/configure.ac vlc-2.2.1/configure.ac +--- vlc-2.2.1.org/configure.ac 2015-04-13 09:57:54.000000000 +0200 ++++ vlc-2.2.1/configure.ac 2015-05-02 16:13:22.800448380 +0200 +@@ -534,7 +534,7 @@ + + dnl Check for usual libc functions + AC_CHECK_DECLS([nanosleep],,,[#include ]) +-AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r isatty lstat memalign mmap open_memstream openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp strptime uselocale]) ++AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r isatty lstat memalign mmap open_memstream openat pread posix_fadvise posix_madvise setlocale strerror_l stricmp strnicmp strptime uselocale]) + AC_REPLACE_FUNCS([atof atoll dirfd fdopendir flockfile fsync getdelim getpid gmtime_r lldiv localtime_r nrand48 poll posix_memalign rewind setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strsep strtof strtok_r strtoll swab tdestroy strverscmp]) + AC_CHECK_FUNCS(fdatasync,, + [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.]) +diff -uNr vlc-2.2.1.org/src/posix/error.c vlc-2.2.1/src/posix/error.c +--- vlc-2.2.1.org/src/posix/error.c 2014-08-14 09:20:04.000000000 +0200 ++++ vlc-2.2.1/src/posix/error.c 2015-05-02 16:25:24.075378369 +0200 +@@ -31,6 +31,7 @@ + + static const char *vlc_strerror_l(int errnum, const char *lname) + { ++#ifdef HAVE_STRERROR_L + int saved_errno = errno; + locale_t loc = newlocale(LC_MESSAGES_MASK, lname, (locale_t)0); + +@@ -51,6 +52,9 @@ + const char *buf = strerror_l(errnum, loc); + + freelocale(loc); ++#else ++ const char *buf = strerror(errnum); ++#endif + return buf; + } + diff --git a/buildroot/package/vlc/0008-fix-fallback-code-and-add-required-realtime-library.patch b/buildroot/package/vlc/0008-fix-fallback-code-and-add-required-realtime-library.patch new file mode 100644 index 0000000..43f197a --- /dev/null +++ b/buildroot/package/vlc/0008-fix-fallback-code-and-add-required-realtime-library.patch @@ -0,0 +1,40 @@ +From 381bcb7cb03bb602351a323daf3b69b2d4f45e77 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Fri, 26 Aug 2016 15:11:25 +0200 +Subject: [PATCH] fix fallback code and add required realtime library to link + command + +Signed-off-by: Waldemar Brodkorb +--- + configure.ac | 1 + + src/posix/thread.c | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index cb1de25..018c11c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -121,6 +121,7 @@ case "${host_os}" in + ;; + linux*) + SYS=linux ++ AC_CHECK_LIB([rt], [posix_spawnp], [VLC_ADD_LIBS([libvlccore],[-lrt])], [], []) + ;; + bsdi*) + SYS=bsdi +diff --git a/src/posix/thread.c b/src/posix/thread.c +index 07fa71e..8b8595f 100644 +--- a/src/posix/thread.c ++++ b/src/posix/thread.c +@@ -85,7 +85,7 @@ static clockid_t vlc_clock_id; + + static void vlc_clock_setup_once (void) + { +-# if (_POSIX_MONOTONIC_CLOCK == 0) ++# if (_POSIX_MONOTONIC_CLOCK == 0) && (_POSIX_CLOCK_SELECTION > 0) + long val = sysconf (_SC_MONOTONIC_CLOCK); + assert (val != 0); + vlc_clock_id = (val < 0) ? CLOCK_REALTIME : CLOCK_MONOTONIC; +-- +2.1.4 + diff --git a/buildroot/package/vlc/0009-ffmpeg-3.0.patch b/buildroot/package/vlc/0009-ffmpeg-3.0.patch new file mode 100644 index 0000000..892c625 --- /dev/null +++ b/buildroot/package/vlc/0009-ffmpeg-3.0.patch @@ -0,0 +1,283 @@ +Changes for ffmpeg 3.0 + +This file is a copy of debian/patches/04_ffmpeg-3.0.diff, to be found in +http://www.deb-multimedia.org/pool/main/v/vlc-dmo/vlc-dmo_2.2.4.orig.tar.gz + +Signed-off-by: Bernd Kuhls + +--- a/configure.ac ++++ b/configure.ac +@@ -2324,7 +2324,7 @@ AC_ARG_ENABLE(avcodec, + AS_IF([test "${enable_avcodec}" != "no"], [ + PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 53.34.0 libavutil >= 51.22.0], [ + PKG_CHECK_EXISTS([libavutil < 55],, [ +- AC_MSG_ERROR([libavutil versions 55 and later are not supported.]) ++ AC_MSG_WARN([libavutil versions 55 and later are not supported.]) + ]) + VLC_SAVE_FLAGS + CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}" +@@ -2334,7 +2334,7 @@ AS_IF([test "${enable_avcodec}" != "no"] + VLC_RESTORE_FLAGS + have_avcodec="yes" + ],[ +- AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.]) ++ AC_MSG_WARN([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.]) + ]) + ], [ + have_avcodec="no" +@@ -2383,7 +2383,7 @@ AS_IF([test "${have_vaapi}" = "yes" -a " + case "${avfork}" in + ffmpeg) + PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ +- AC_MSG_ERROR([VA API requires FFmpeg libavcodec < 57.10 or libav.]) ++ AC_MSG_WARN([VA API requires FFmpeg libavcodec < 57.10 or libav.]) + ]) + ;; + esac +@@ -2417,7 +2417,7 @@ AS_IF([test "${enable_dxva2}" != "no"], + case "${avfork}" in + ffmpeg) + PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ +- AC_MSG_ERROR([DXVA2 requires FFmpeg libavcodec < 57.10 or libav.]) ++ AC_MSG_WARN([DXVA2 requires FFmpeg libavcodec < 57.10 or libav.]) + ]) + ;; + esac +@@ -2509,7 +2509,7 @@ AS_IF([test "${enable_avformat}" != "no" + ]) + VLC_RESTORE_FLAGS + ],[ +- AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.]) ++ AC_MSG_WARN([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.]) + ]) + ]) + AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"]) +@@ -2538,7 +2538,7 @@ then + ]) + VLC_RESTORE_FLAGS + ],[ +- AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.]) ++ AC_MSG_WARN([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.]) + ]) + fi + +@@ -3181,7 +3181,7 @@ AS_IF([test "${have_vdpau}" = "yes" -a " + libav) av_vdpau_ver="55.26.0" ;; + ffmpeg) av_vdpau_ver="55.42.100" + PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ +- AC_MSG_ERROR([VDPAU requires FFmpeg libavcodec < 57.10 or libav.]) ++ AC_MSG_WARN([VDPAU requires FFmpeg libavcodec < 57.10 or libav.]) + ]) + ;; + esac +--- a/modules/codec/avcodec/audio.c ++++ b/modules/codec/avcodec/audio.c +@@ -39,7 +39,7 @@ + #include + #include + +-#include ++#include + + #include "avcodec.h" + +--- a/modules/codec/avcodec/video.c ++++ b/modules/codec/avcodec/video.c +@@ -108,8 +108,8 @@ static int lavc_GetFrame(struct AVCodecC + static int ffmpeg_GetFrameBuf ( struct AVCodecContext *, AVFrame * ); + static void ffmpeg_ReleaseFrameBuf( struct AVCodecContext *, AVFrame * ); + #endif +-static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *, +- const enum PixelFormat * ); ++static enum AVPixelFormat ffmpeg_GetFormat( AVCodecContext *, ++ const enum AVPixelFormat * ); + + static uint32_t ffmpeg_CodecTag( vlc_fourcc_t fcc ) + { +@@ -234,7 +234,7 @@ int InitVideoDec( decoder_t *p_dec, AVCo + p_sys->p_codec = p_codec; + p_sys->i_codec_id = i_codec_id; + p_sys->psz_namecodec = psz_namecodec; +- p_sys->p_ff_pic = avcodec_alloc_frame(); ++ p_sys->p_ff_pic = av_frame_alloc(); + p_sys->b_delayed_open = true; + p_sys->p_va = NULL; + vlc_sem_init( &p_sys->sem_mt, 0 ); +@@ -446,7 +446,7 @@ int InitVideoDec( decoder_t *p_dec, AVCo + if( ffmpeg_OpenCodec( p_dec ) < 0 ) + { + msg_Err( p_dec, "cannot open codec (%s)", p_sys->psz_namecodec ); +- avcodec_free_frame( &p_sys->p_ff_pic ); ++ av_frame_free( &p_sys->p_ff_pic ); + vlc_sem_destroy( &p_sys->sem_mt ); + free( p_sys ); + return VLC_EGENERIC; +@@ -826,7 +826,7 @@ void EndVideoDec( decoder_t *p_dec ) + wait_mt( p_sys ); + + if( p_sys->p_ff_pic ) +- avcodec_free_frame( &p_sys->p_ff_pic ); ++ av_frame_free( &p_sys->p_ff_pic ); + + if( p_sys->p_va ) + vlc_va_Delete( p_sys->p_va ); +@@ -1313,8 +1313,8 @@ static void ffmpeg_ReleaseFrameBuf( stru + } + #endif + +-static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *p_context, +- const enum PixelFormat *pi_fmt ) ++static enum AVPixelFormat ffmpeg_GetFormat( AVCodecContext *p_context, ++ const enum AVPixelFormat *pi_fmt ) + { + decoder_t *p_dec = p_context->opaque; + decoder_sys_t *p_sys = p_dec->p_sys; +--- a/modules/codec/avcodec/encoder.c ++++ b/modules/codec/avcodec/encoder.c +@@ -41,7 +41,7 @@ + #include + + #include +-#include ++#include + + #include "avcodec.h" + #include "avcommon.h" +@@ -311,7 +311,7 @@ int OpenEncoder( vlc_object_t *p_this ) + else if( !GetFfmpegCodec( p_enc->fmt_out.i_codec, &i_cat, &i_codec_id, + &psz_namecodec ) ) + { +- if( FindFfmpegChroma( p_enc->fmt_out.i_codec ) == PIX_FMT_NONE ) ++ if( FindFfmpegChroma( p_enc->fmt_out.i_codec ) == AV_PIX_FMT_NONE ) + return VLC_EGENERIC; /* handed chroma output */ + + i_cat = VIDEO_ES; +@@ -555,7 +555,7 @@ int OpenEncoder( vlc_object_t *p_this ) + + if( p_codec->pix_fmts ) + { +- const enum PixelFormat *p = p_codec->pix_fmts; ++ const enum AVPixelFormat *p = p_codec->pix_fmts; + for( ; *p != -1; p++ ) + { + if( *p == p_context->pix_fmt ) break; +@@ -1017,7 +1017,7 @@ errmsg: + } + } + +- p_sys->frame = avcodec_alloc_frame(); ++ p_sys->frame = av_frame_alloc(); + if( !p_sys->frame ) + { + goto error; +@@ -1048,7 +1048,7 @@ static void vlc_av_packet_Release(block_ + { + vlc_av_packet_t *b = (void *) block; + +- av_free_packet(&b->packet); ++ av_packet_unref(&b->packet); + free(b); + } + +@@ -1088,7 +1088,7 @@ static block_t *EncodeVideo( encoder_t * + AVFrame *frame = NULL; + if( likely(p_pict) ) { + frame = p_sys->frame; +- avcodec_get_frame_defaults( frame ); ++ av_frame_unref( frame ); + for( i_plane = 0; i_plane < p_pict->i_planes; i_plane++ ) + { + p_sys->frame->data[i_plane] = p_pict->p[i_plane].p_pixels; +@@ -1188,7 +1188,7 @@ static block_t *EncodeVideo( encoder_t * + av_pkt.duration / p_sys->p_context->time_base.den, p_sys->p_context ); + if( unlikely(p_block == NULL) ) + { +- av_free_packet( &av_pkt ); ++ av_packet_unref( &av_pkt ); + return NULL; + } + +@@ -1329,7 +1329,7 @@ static block_t *handle_delay_buffer( enc + //How much we need to copy from new packet + const int leftover = leftover_samples * p_sys->p_context->channels * p_sys->i_sample_bytes; + +- avcodec_get_frame_defaults( p_sys->frame ); ++ av_frame_unref( p_sys->frame ); + p_sys->frame->format = p_sys->p_context->sample_fmt; + p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay; + +@@ -1451,7 +1451,7 @@ static block_t *EncodeAudio( encoder_t * + while( ( p_aout_buf->i_nb_samples >= p_sys->i_frame_size ) || + ( p_sys->b_variable && p_aout_buf->i_nb_samples ) ) + { +- avcodec_get_frame_defaults( p_sys->frame ); ++ av_frame_unref( p_sys->frame ); + if( p_sys->b_variable ) + p_sys->frame->nb_samples = p_aout_buf->i_nb_samples; + else +@@ -1514,7 +1514,7 @@ void CloseEncoder( vlc_object_t *p_this + encoder_t *p_enc = (encoder_t *)p_this; + encoder_sys_t *p_sys = p_enc->p_sys; + +- /*FIXME: we should use avcodec_free_frame, but we don't require so new avcodec that has it*/ ++ /*FIXME: we should use av_frame_free, but we don't require so new avcodec that has it*/ + av_freep( &p_sys->frame ); + + vlc_avcodec_lock(); +--- a/modules/demux/avformat/demux.c ++++ b/modules/demux/avformat/demux.c +@@ -734,14 +734,14 @@ static int Demux( demux_t *p_demux ) + } + if( pkt.stream_index < 0 || pkt.stream_index >= p_sys->i_tk ) + { +- av_free_packet( &pkt ); ++ av_packet_unref( &pkt ); + return 1; + } + const AVStream *p_stream = p_sys->ic->streams[pkt.stream_index]; + if( p_stream->time_base.den <= 0 ) + { + msg_Warn( p_demux, "Invalid time base for the stream %d", pkt.stream_index ); +- av_free_packet( &pkt ); ++ av_packet_unref( &pkt ); + return 1; + } + if( p_stream->codec->codec_id == AV_CODEC_ID_SSA ) +@@ -749,7 +749,7 @@ static int Demux( demux_t *p_demux ) + p_frame = BuildSsaFrame( &pkt, p_sys->i_ssa_order++ ); + if( !p_frame ) + { +- av_free_packet( &pkt ); ++ av_packet_unref( &pkt ); + return 1; + } + } +@@ -757,7 +757,7 @@ static int Demux( demux_t *p_demux ) + { + if( ( p_frame = block_Alloc( pkt.size ) ) == NULL ) + { +- av_free_packet( &pkt ); ++ av_packet_unref( &pkt ); + return 0; + } + memcpy( p_frame->p_buffer, pkt.data, pkt.size ); +@@ -838,7 +838,7 @@ static int Demux( demux_t *p_demux ) + else + block_Release( p_frame ); + +- av_free_packet( &pkt ); ++ av_packet_unref( &pkt ); + return 1; + } + +--- a/modules/codec/avcodec/vaapi.c ++++ b/modules/codec/avcodec/vaapi.c +@@ -595,7 +595,7 @@ static int Create( vlc_va_t *p_va, AVCod + return err; + + /* Only VLD supported */ +- p_va->pix_fmt = PIX_FMT_VAAPI_VLD; ++ p_va->pix_fmt = AV_PIX_FMT_VAAPI_VLD; + p_va->setup = Setup; + p_va->get = Get; + p_va->release = Release; diff --git a/buildroot/package/vlc/0010-static-assert.patch b/buildroot/package/vlc/0010-static-assert.patch new file mode 100644 index 0000000..87fd56b --- /dev/null +++ b/buildroot/package/vlc/0010-static-assert.patch @@ -0,0 +1,25 @@ +From: Thomas Guillem +Date: Thu, 30 Apr 2015 13:29:50 +0000 (+0200) +Subject: Fix build when using C99 and C++11 +X-Git-Url: http://git.videolan.org/?p=vlc.git;a=commitdiff_plain;h=51ce6cdaf598754e617900994c1943c6cba6d604 + +Fix build when using C99 and C++11 + +Indeed, C99 doesn't have static_assert and C++11 has it. + +Signed-off-by: Bernd Kuhls +--- + +diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h +index b949d24..ee168d7 100644 +--- a/include/vlc_fixups.h ++++ b/include/vlc_fixups.h +@@ -239,7 +239,7 @@ static inline locale_t newlocale(int mask, const char * locale, locale_t base) + } + #endif + +-#if !defined (HAVE_STATIC_ASSERT) ++#if !defined (HAVE_STATIC_ASSERT) && !defined(__cpp_static_assert) + # define _Static_assert(x, s) ((void) sizeof (struct { unsigned:-!(x); })) + # define static_assert _Static_assert + #endif diff --git a/buildroot/package/vlc/0011-static-assert.patch b/buildroot/package/vlc/0011-static-assert.patch new file mode 100644 index 0000000..3ce23e1 --- /dev/null +++ b/buildroot/package/vlc/0011-static-assert.patch @@ -0,0 +1,28 @@ +From: Thomas Guillem +Date: Mon, 14 Dec 2015 09:08:25 +0000 (+0100) +Subject: compat: fix static_assert +X-Git-Url: http://git.videolan.org/?p=vlc.git;a=commitdiff_plain;h=6faf9066670db6e0d241ead6a3926b2d9cc6a041 + +compat: fix static_assert + +It was not possible to use it outside of functions. + +Signed-off-by: Rémi Denis-Courmont +Signed-off-by: Bernd Kuhls +--- + +diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h +index 213d3f3..bd798d0 100644 +--- a/include/vlc_fixups.h ++++ b/include/vlc_fixups.h +@@ -273,7 +273,9 @@ static inline locale_t newlocale(int mask, const char * locale, locale_t base) + #endif + + #if !defined (HAVE_STATIC_ASSERT) && !defined(__cpp_static_assert) +-# define _Static_assert(x, s) ((void) sizeof (struct { unsigned:-!(x); })) ++# define STATIC_ASSERT_CONCAT_(a, b) a##b ++# define STATIC_ASSERT_CONCAT(a, b) STATIC_ASSERT_CONCAT_(a, b) ++# define _Static_assert(x, s) extern char STATIC_ASSERT_CONCAT(static_assert_, __LINE__)[sizeof(struct { unsigned:-!(x); })] + # define static_assert _Static_assert + #endif + diff --git a/buildroot/package/vlc/0012-Fix-build-with-libupnp-above-1.6.23.patch b/buildroot/package/vlc/0012-Fix-build-with-libupnp-above-1.6.23.patch new file mode 100644 index 0000000..8490cbd --- /dev/null +++ b/buildroot/package/vlc/0012-Fix-build-with-libupnp-above-1.6.23.patch @@ -0,0 +1,64 @@ +From 0c8d631f4f9fa24f1bbd56a4dbe9d6f1e2360685 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 17 Dec 2017 12:26:33 +0100 +Subject: [PATCH] Fix build with libupnp above 1.6.23 + +Starting from this release, libupnp has its own compat functions, +backport patch from mainstream: +https://github.com/videolan/vlc/commit/f9c5a343f1a8cad9c2c153f9c05e4e7201675a43#diff-2e66eb8b4fb06845a6426bd4a541d2f7 + +Move UpnpEventPtr declaration in upnp.hpp as done in: +https://github.com/videolan/vlc/commit/3eb4e03512f45c1fa27c7f9a6759e8e7d3905720#diff-ac39568c5e5e1c68776a93dfe0b3c1e6 + +Signed-off-by: Fabrice Fontaine +--- + modules/services_discovery/upnp.cpp | 5 +---- + modules/services_discovery/upnp.hpp | 6 ++++++ + 2 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/modules/services_discovery/upnp.cpp b/modules/services_discovery/upnp.cpp +index 9b6ed8727a..cf846602b8 100644 +--- a/modules/services_discovery/upnp.cpp ++++ b/modules/services_discovery/upnp.cpp +@@ -40,11 +40,10 @@ + #include + #include + +-#if UPNP_VERSION < 10800 ++#if UPNP_VERSION < 10623 + /* + * Compat functions and typedefs for libupnp prior to 1.8 + */ +-typedef void* UpnpEventPtr; + typedef Upnp_Discovery UpnpDiscovery; + typedef Upnp_Action_Complete UpnpActionComplete; + typedef Upnp_Event UpnpEvent; +@@ -74,8 +73,6 @@ static const char* UpnpEventSubscribe_get_SID_cstr( const UpnpEventSubscribe* p_ + { + return p_s->Sid; + } +-#else +-typedef const void* UpnpEventPtr; + #endif + + /* +diff --git a/modules/services_discovery/upnp.hpp b/modules/services_discovery/upnp.hpp +index 23fe4db9ab..c369a04da6 100644 +--- a/modules/services_discovery/upnp.hpp ++++ b/modules/services_discovery/upnp.hpp +@@ -33,6 +33,12 @@ + + #include + ++#if UPNP_VERSION < 10800 ++typedef void* UpnpEventPtr; ++#else ++typedef const void* UpnpEventPtr; ++#endif ++ + // Classes + class Container; + +-- +2.14.1 + diff --git a/buildroot/package/vlc/Config.in b/buildroot/package/vlc/Config.in new file mode 100644 index 0000000..166e7d2 --- /dev/null +++ b/buildroot/package/vlc/Config.in @@ -0,0 +1,38 @@ +if BR2_PACKAGE_VLC +comment "vlc is known not to work in all configurations" +comment "If you can fix it, please inform buildroot@buildroot.org" +endif + +config BR2_PACKAGE_VLC + bool "vlc" + depends on BR2_USE_MMU # fork() + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + select BR2_PACKAGE_LIBVORBIS if BR2_PACKAGE_OPUS + select BR2_PACKAGE_VLC_OPENCV_BACKEND if BR2_PACKAGE_OPENCV + select BR2_PACKAGE_VLC_OPENCV3_BACKEND if BR2_PACKAGE_OPENCV3 + select BR2_PACKAGE_ZLIB if BR2_PACKAGE_TAGLIB + help + VLC is a free and open source cross-platform multimedia player + and framework that plays most multimedia files as well as DVD, + Audio CD, VCD, and various streaming protocols. + + http://www.videolan.org/vlc/ + +config BR2_PACKAGE_VLC_OPENCV_BACKEND + bool + select BR2_PACKAGE_OPENCV_LIB_IMGPROC + select BR2_PACKAGE_OPENCV_LIB_OBJDETECT + +config BR2_PACKAGE_VLC_OPENCV3_BACKEND + bool + select BR2_PACKAGE_OPENCV3_LIB_IMGPROC + select BR2_PACKAGE_OPENCV3_LIB_OBJDETECT + +comment "vlc needs a toolchain w/ C++, dynamic library, wchar, threads, headers >= 3.7" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 diff --git a/buildroot/package/vlc/vlc.hash b/buildroot/package/vlc/vlc.hash new file mode 100644 index 0000000..02b70ef --- /dev/null +++ b/buildroot/package/vlc/vlc.hash @@ -0,0 +1,8 @@ +# From http://download.videolan.org/pub/videolan/vlc/2.2.8/vlc-2.2.8.tar.xz.sha256 +sha256 9bf046848fb56d93518881b39099b8288ee005d5ba0ddf705b6f6643b8d562ec vlc-2.2.8.tar.xz +# From http://download.videolan.org/pub/videolan/vlc/2.2.8/vlc-2.2.8.tar.xz.sha1 +sha1 b960ec5bdb9a51da285430fc68962927ccc87187 vlc-2.2.8.tar.xz +# From http://download.videolan.org/pub/videolan/vlc/2.2.8/vlc-2.2.8.tar.xz.md5 +md5 b721fddf65aaf64eeee5629aa9bf7c9e vlc-2.2.8.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/buildroot/package/vlc/vlc.mk b/buildroot/package/vlc/vlc.mk new file mode 100644 index 0000000..56bfdce --- /dev/null +++ b/buildroot/package/vlc/vlc.mk @@ -0,0 +1,430 @@ +################################################################################ +# +# vlc +# +################################################################################ + +VLC_VERSION = 2.2.8 +VLC_SITE = https://get.videolan.org/vlc/$(VLC_VERSION) +VLC_SOURCE = vlc-$(VLC_VERSION).tar.xz +VLC_LICENSE = GPL-2.0+, LGPL-2.1+ +VLC_LICENSE_FILES = COPYING COPYING.LIB +VLC_DEPENDENCIES = host-pkgconf +VLC_AUTORECONF = YES + +# Install vlc libraries in staging. +VLC_INSTALL_STAGING = YES + +# gcc bug internal compiler error: in merge_overlapping_regs, at +# regrename.c:304. This bug is fixed since gcc 6. +ifeq ($(BR2_microblaze):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:) +VLC_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O0" +VLC_CONF_OPTS += --disable-optimizations +endif + +# VLC defines two autoconf functions which are also defined by our own pkg.m4 +# from pkgconf. Unfortunately, they are defined in a different way: VLC adds +# --enable- options, but pkg.m4 adds --with- options. To make sure we use +# VLC's definition, rename these two functions. +define VLC_OVERRIDE_PKG_M4 + $(SED) 's/PKG_WITH_MODULES/VLC_PKG_WITH_MODULES/g' \ + -e 's/PKG_HAVE_WITH_MODULES/VLC_PKG_HAVE_WITH_MODULES/g' \ + $(@D)/configure.ac $(@D)/m4/with_pkg.m4 +endef +VLC_POST_PATCH_HOOKS += VLC_OVERRIDE_PKG_M4 + +VLC_CONF_OPTS += \ + --disable-gles1 \ + --disable-a52 \ + --disable-shout \ + --disable-twolame \ + --disable-dca \ + --disable-schroedinger \ + --disable-fluidsynth \ + --disable-zvbi \ + --disable-kate \ + --disable-caca \ + --disable-jack \ + --disable-samplerate \ + --disable-chromaprint \ + --disable-goom \ + --disable-projectm \ + --disable-vsxu \ + --disable-mtp \ + --disable-mmal-codec \ + --disable-mmal-vout \ + --disable-dvdnav \ + --disable-vpx \ + --disable-jpeg \ + --disable-x262 \ + --disable-x265 \ + --disable-mfx \ + --disable-vdpau \ + --disable-addonmanagermodules \ + --enable-run-as-root + +# Uses __atomic_fetch_add_4 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +VLC_CONF_ENV += LIBS="-latomic" +endif + +# Building static and shared doesn't work, so force static off. +ifeq ($(BR2_STATIC_LIBS),) +VLC_CONF_OPTS += --disable-static +endif + +ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) +VLC_CONF_OPTS += --enable-altivec +else +VLC_CONF_OPTS += --disable-altivec +endif + +ifeq ($(BR2_X86_CPU_HAS_SSE),y) +VLC_CONF_OPTS += --enable-sse +else +VLC_CONF_OPTS += --disable-sse +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +VLC_CONF_OPTS += --enable-alsa +VLC_DEPENDENCIES += alsa-lib +else +VLC_CONF_OPTS += --disable-alsa +endif + +# bonjour support needs avahi-client, which needs avahi-daemon and dbus +ifeq ($(BR2_PACKAGE_AVAHI)$(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yyy) +VLC_CONF_OPTS += --enable-bonjour +VLC_DEPENDENCIES += avahi dbus +else +VLC_CONF_OPTS += --disable-bonjour +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +VLC_CONF_OPTS += --enable-dbus +VLC_DEPENDENCIES += dbus +else +VLC_CONF_OPTS += --disable-dbus +endif + +ifeq ($(BR2_PACKAGE_DIRECTFB),y) +VLC_CONF_OPTS += --enable-directfb +VLC_CONF_ENV += ac_cv_path_DIRECTFB_CONFIG=$(STAGING_DIR)/usr/bin/directfb-config +VLC_DEPENDENCIES += directfb +else +VLC_CONF_OPTS += --disable-directfb +endif + +ifeq ($(BR2_PACKAGE_FAAD2),y) +VLC_CONF_OPTS += --enable-faad +VLC_DEPENDENCIES += faad2 +else +VLC_CONF_OPTS += --disable-faad +endif + +ifeq ($(BR2_PACKAGE_FFMPEG),y) +VLC_CONF_OPTS += --enable-avcodec +VLC_DEPENDENCIES += ffmpeg +else +VLC_CONF_OPTS += --disable-avcodec +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y) +VLC_CONF_OPTS += --enable-postproc +else +VLC_CONF_OPTS += --disable-postproc +endif + +ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y) +VLC_CONF_OPTS += --enable-swscale +else +VLC_CONF_OPTS += --disable-swscale +endif + +ifeq ($(BR2_PACKAGE_FLAC),y) +VLC_CONF_OPTS += --enable-flac +VLC_DEPENDENCIES += flac +else +VLC_CONF_OPTS += --disable-flac +endif + +ifeq ($(BR2_PACKAGE_FREERDP),y) +VLC_DEPENDENCIES += freerdp +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +VLC_DEPENDENCIES += libgl +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +VLC_CONF_OPTS += --enable-gles2 +VLC_DEPENDENCIES += libgles +else +VLC_CONF_OPTS += --disable-gles2 +endif + +ifeq ($(BR2_PACKAGE_OPENCV)$(BR2_PACKAGE_OPENCV3),y) +VLC_CONF_OPTS += --enable-opencv +ifeq ($(BR2_PACKAGE_OPENCV),y) +VLC_DEPENDENCIES += opencv +else +VLC_DEPENDENCIES += opencv3 +endif +else +VLC_CONF_OPTS += --disable-opencv +endif + +ifeq ($(BR2_PACKAGE_OPUS),y) +VLC_CONF_OPTS += --enable-opus +VLC_DEPENDENCIES += libvorbis opus +else +VLC_CONF_OPTS += --disable-opus +endif + +ifeq ($(BR2_PACKAGE_LIBASS),y) +VLC_CONF_OPTS += --enable-libass +VLC_DEPENDENCIES += libass +else +VLC_CONF_OPTS += --disable-libass +endif + +ifeq ($(BR2_PACKAGE_LIBBLURAY),y) +VLC_CONF_OPTS += --enable-bluray +VLC_DEPENDENCIES += libbluray +else +VLC_CONF_OPTS += --disable-bluray +endif + +ifeq ($(BR2_PACKAGE_LIBCDDB),y) +VLC_CONF_OPTS += --enable-libcddb +VLC_DEPENDENCIES += libcddb +else +VLC_CONF_OPTS += --disable-libcddb +endif + +ifeq ($(BR2_PACKAGE_LIBDVBPSI),y) +VLC_CONF_OPTS += --enable-dvbpsi +VLC_DEPENDENCIES += libdvbpsi +else +VLC_CONF_OPTS += --disable-dvbpsi +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +VLC_CONF_OPTS += --enable-libgcrypt +VLC_DEPENDENCIES += libgcrypt +VLC_CONF_ENV += \ + GCRYPT_CONFIG="$(STAGING_DIR)/usr/bin/libgcrypt-config" +else +VLC_CONF_OPTS += --disable-libgcrypt +endif + +ifeq ($(BR2_PACKAGE_LIBMAD),y) +VLC_CONF_OPTS += --enable-mad +VLC_DEPENDENCIES += libmad +else +VLC_CONF_OPTS += --disable-mad +endif + +ifeq ($(BR2_PACKAGE_LIBMATROSKA),y) +VLC_CONF_OPTS += --enable-mkv +VLC_DEPENDENCIES += libmatroska +else +VLC_CONF_OPTS += --disable-mkv +endif + +ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) +VLC_CONF_OPTS += --enable-mod +VLC_DEPENDENCIES += libmodplug +else +VLC_CONF_OPTS += --disable-mod +endif + +ifeq ($(BR2_PACKAGE_LIBMPEG2),y) +VLC_CONF_OPTS += --enable-libmpeg2 +VLC_DEPENDENCIES += libmpeg2 +else +VLC_CONF_OPTS += --disable-libmpeg2 +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +VLC_CONF_OPTS += --enable-png +VLC_DEPENDENCIES += libpng +else +VLC_CONF_OPTS += --disable-png +endif + +ifeq ($(BR2_PACKAGE_LIBRSVG),y) +VLC_CONF_OPTS += --enable-svg --enable-svgdec +VLC_DEPENDENCIES += librsvg +else +VLC_CONF_OPTS += --disable-svg --disable-svgdec +endif + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +VLC_CONF_OPTS += --enable-sftp +VLC_DEPENDENCIES += libssh2 +else +VLC_CONF_OPTS += --disable-sftp +endif + +ifeq ($(BR2_PACKAGE_LIBSIDPLAY2),y) +VLC_CONF_OPTS += --enable-sid +VLC_DEPENDENCIES += libsidplay2 +else +VLC_CONF_OPTS += --disable-sid +endif + +ifeq ($(BR2_PACKAGE_LIBTHEORA),y) +VLC_CONF_OPTS += --enable-theora +VLC_DEPENDENCIES += libtheora +else +VLC_CONF_OPTS += --disable-theora +endif + +ifeq ($(BR2_PACKAGE_LIBUPNP)$(BR2_PACKAGE_LIBUPNP18),y) +VLC_CONF_OPTS += --enable-upnp +VLC_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBUPNP),libupnp,libupnp18) +else +VLC_CONF_OPTS += --disable-upnp +endif + +ifeq ($(BR2_PACKAGE_LIBVNCSERVER),y) +VLC_CONF_OPTS += --enable-vnc +VLC_DEPENDENCIES += libvncserver +else +VLC_CONF_OPTS += --disable-vnc +endif + +ifeq ($(BR2_PACKAGE_LIBVORBIS),y) +VLC_CONF_OPTS += --enable-vorbis +VLC_DEPENDENCIES += libvorbis +else +VLC_CONF_OPTS += --disable-vorbis +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +VLC_CONF_OPTS += --enable-v4l2 +VLC_DEPENDENCIES += libv4l +else +VLC_CONF_OPTS += --disable-v4l2 +endif + +ifeq ($(BR2_PACKAGE_LIBXCB),y) +VLC_CONF_OPTS += --enable-xcb +VLC_DEPENDENCIES += libxcb +else +VLC_CONF_OPTS += --disable-xcb +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +VLC_CONF_OPTS += --enable-libxml2 +VLC_DEPENDENCIES += libxml2 +else +VLC_CONF_OPTS += --disable-libxml2 +endif + +ifeq ($(BR2_PACKAGE_LIVE555),y) +VLC_CONF_OPTS += --enable-live555 +VLC_DEPENDENCIES += live555 +VLC_CONF_ENV += \ + LIVE555_CFLAGS="\ + -I$(STAGING_DIR)/usr/include/BasicUsageEnvironment \ + -I$(STAGING_DIR)/usr/include/groupsock \ + -I$(STAGING_DIR)/usr/include/liveMedia \ + -I$(STAGING_DIR)/usr/include/UsageEnvironment \ + " \ + LIVE555_LIBS="-L$(STAGING_DIR)/usr/lib -lliveMedia" +else +VLC_CONF_OPTS += --disable-live555 +endif + +ifeq ($(BR2_PACKAGE_LUA),y) +VLC_CONF_OPTS += --enable-lua +VLC_DEPENDENCIES += lua host-lua +else +VLC_CONF_OPTS += --disable-lua +endif + +ifeq ($(BR2_PACKAGE_MINIZIP),y) +VLC_DEPENDENCIES += minizip +endif + +ifeq ($(BR2_PACKAGE_MUSEPACK),y) +VLC_CONF_OPTS += --enable-mpc +VLC_DEPENDENCIES += musepack +else +VLC_CONF_OPTS += --disable-mpc +endif + +ifeq ($(BR2_PACKAGE_QT_GUI_MODULE),y) +VLC_CONF_OPTS += --enable-qt +VLC_CONF_ENV += \ + ac_cv_path_MOC=$(HOST_DIR)/bin/moc \ + ac_cv_path_RCC=$(HOST_DIR)/bin/rcc \ + ac_cv_path_UIC=$(HOST_DIR)/bin/uic +VLC_DEPENDENCIES += qt +else +VLC_CONF_OPTS += --disable-qt +endif + +ifeq ($(BR2_PACKAGE_SDL_X11),y) +VLC_CONF_OPTS += --enable-sdl +VLC_DEPENDENCIES += sdl +else +VLC_CONF_OPTS += --disable-sdl +endif + +ifeq ($(BR2_PACKAGE_SDL_IMAGE),y) +VLC_CONF_OPTS += --enable-sdl-image +VLC_DEPENDENCIES += sdl_image +else +VLC_CONF_OPTS += --disable-sdl-image +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +VLC_CONF_OPTS += --enable-speex +VLC_DEPENDENCIES += speex +else +VLC_CONF_OPTS += --disable-speex +endif + +ifeq ($(BR2_PACKAGE_TAGLIB),y) +VLC_CONF_OPTS += --enable-taglib +VLC_DEPENDENCIES += taglib +else +VLC_CONF_OPTS += --disable-taglib +endif + +ifeq ($(BR2_PACKAGE_TREMOR),y) +VLC_CONF_OPTS += --enable-tremor +VLC_DEPENDENCIES += tremor +else +VLC_CONF_OPTS += --disable-tremor +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +VLC_CONF_OPTS += --enable-udev +VLC_DEPENDENCIES += udev +else +VLC_CONF_OPTS += --disable-udev +endif + +ifeq ($(BR2_PACKAGE_XCB_UTIL_KEYSYMS),y) +VLC_CONF_OPTS += --enable-xcb +VLC_DEPENDENCIES += xcb-util-keysyms +else +VLC_CONF_OPTS += --disable-xcb +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +VLC_CONF_OPTS += --with-x +VLC_DEPENDENCIES += xlib_libX11 +else +VLC_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +VLC_DEPENDENCIES += zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/vnstat/Config.in b/buildroot/package/vnstat/Config.in new file mode 100644 index 0000000..bb68c14 --- /dev/null +++ b/buildroot/package/vnstat/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_VNSTAT + bool "vnstat" + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # mbstowcs() + help + vnStat is a console-based network traffic monitor that keeps a + log of network traffic for the selected interface(s). It uses + the network interface statistics provided by the kernel as + information source. This means that vnStat won't actually be + sniffing any traffic and also ensures light use of system + resources. + + http://humdi.net/vnstat + +comment "vnstat needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/vnstat/vnstat.hash b/buildroot/package/vnstat/vnstat.hash new file mode 100644 index 0000000..1f51529 --- /dev/null +++ b/buildroot/package/vnstat/vnstat.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 18e4c53576ca9e1ef2f0e063a6d83b0c44e3b1cf008560d658745df5c9aa7971 vnstat-1.17.tar.gz diff --git a/buildroot/package/vnstat/vnstat.mk b/buildroot/package/vnstat/vnstat.mk new file mode 100644 index 0000000..18fb319 --- /dev/null +++ b/buildroot/package/vnstat/vnstat.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# vnstat +# +################################################################################ + +VNSTAT_VERSION = 1.17 +VNSTAT_SITE = http://humdi.net/vnstat +VNSTAT_LICENSE = GPL-2.0 +VNSTAT_LICENSE_FILES = COPYING +VNSTAT_DEPENDENCIES = host-pkgconf + +ifeq ($(BR2_PACKAGE_GD)$(BR2_PACKAGE_LIBPNG),yy) +VNSTAT_DEPENDENCIES += gd +VNSTAT_CONF_OPTS = --enable-image-output +else +VNSTAT_CONF_OPTS = --disable-image-output +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/vo-aacenc/Config.in b/buildroot/package/vo-aacenc/Config.in new file mode 100644 index 0000000..b5487dc --- /dev/null +++ b/buildroot/package/vo-aacenc/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_VO_AACENC + bool "vo-aacenc" + help + This library contains an encoder implementation of the + Advanced Audio Coding (AAC) audio codec. The library is + based on a codec implementation by VisualOn as part of the + Stagefright framework from the Google Android project. + + http://sourceforge.net/projects/opencore-amr/ diff --git a/buildroot/package/vo-aacenc/vo-aacenc.hash b/buildroot/package/vo-aacenc/vo-aacenc.hash new file mode 100644 index 0000000..822f842 --- /dev/null +++ b/buildroot/package/vo-aacenc/vo-aacenc.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 e51a7477a359f18df7c4f82d195dab4e14e7414cbd48cf79cc195fc446850f36 vo-aacenc-0.1.3.tar.gz diff --git a/buildroot/package/vo-aacenc/vo-aacenc.mk b/buildroot/package/vo-aacenc/vo-aacenc.mk new file mode 100644 index 0000000..ecdd584 --- /dev/null +++ b/buildroot/package/vo-aacenc/vo-aacenc.mk @@ -0,0 +1,46 @@ +################################################################################ +# +# vo-aacenc +# +################################################################################ + +VO_AACENC_VERSION = 0.1.3 +VO_AACENC_SITE = http://downloads.sourceforge.net/project/opencore-amr/vo-aacenc +VO_AACENC_LICENSE = Apache-2.0 +VO_AACENC_LICENSE_FILES = COPYING +VO_AACENC_INSTALL_STAGING = YES + +VO_AACENC_CFLAGS = $(TARGET_CFLAGS) + +# arm specific asm optimizations +ifeq ($(BR2_arm),y) + +ifeq ($(BR2_ARM_CPU_HAS_ARM),y) +# vo-aacenc has ARM assembly code that cannot be compiled in Thumb2 +# mode, so we must force the traditional ARM mode. +VO_AACENC_CFLAGS += -marm + +ifeq ($(BR2_ARM_CPU_HAS_NEON),y) +VO_AACENC_CONF_OPTS += --enable-armv7neon +# mfpu=neon needed to assemble neon code +VO_AACENC_CFLAGS += -mfpu=neon +else +VO_AACENC_CONF_OPTS += --disable-armv7neon + +ifeq ($(BR2_ARM_CPU_ARMV4),) +VO_AACENC_CONF_OPTS += --enable-armv5e +else +VO_AACENC_CONF_OPTS += --disable-armv5e +endif + +endif # !neon + +else +VO_AACENC_CONF_OPTS += --disable-armv7neon --disable-armv5e +endif # has-arm +endif # arm + +VO_AACENC_CONF_ENV = \ + CFLAGS="$(VO_AACENC_CFLAGS)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/vorbis-tools/0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch b/buildroot/package/vorbis-tools/0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch new file mode 100644 index 0000000..6df6786 --- /dev/null +++ b/buildroot/package/vorbis-tools/0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch @@ -0,0 +1,37 @@ +Fix CVE-2015-6749 - invalid AIFF file causes alloca() buffer overflow. +See https://trac.xiph.org/ticket/2212 +Status: upstream + +Signed-off-by: Gustavo Zacarias + +diff --git a/oggenc/audio.c b/oggenc/audio.c +index 477da8c..4921fb9 100644 +--- a/oggenc/audio.c ++++ b/oggenc/audio.c +@@ -245,8 +245,8 @@ static int aiff_permute_matrix[6][6] = + int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen) + { + int aifc; /* AIFC or AIFF? */ +- unsigned int len; +- unsigned char *buffer; ++ unsigned int len, readlen; ++ unsigned char buffer[22]; + unsigned char buf2[8]; + aiff_fmt format; + aifffile *aiff = malloc(sizeof(aifffile)); +@@ -269,9 +269,9 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen) + return 0; /* Weird common chunk */ + } + +- buffer = alloca(len); +- +- if(fread(buffer,1,len,in) < len) ++ readlen = len < sizeof(buffer) ? len : sizeof(buffer); ++ if(fread(buffer,1,readlen,in) < readlen || ++ (len > readlen && !seek_forward(in, len-readlen))) + { + fprintf(stderr, _("Warning: Unexpected EOF in reading AIFF header\n")); + return 0; +-- +2.5.0 + diff --git a/buildroot/package/vorbis-tools/Config.in b/buildroot/package/vorbis-tools/Config.in new file mode 100644 index 0000000..6092e01 --- /dev/null +++ b/buildroot/package/vorbis-tools/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_VORBIS_TOOLS + bool "vorbis-tools" + select BR2_PACKAGE_LIBAO + select BR2_PACKAGE_LIBOGG + select BR2_PACKAGE_LIBVORBIS + select BR2_PACKAGE_LIBCURL + help + Standalone player, encoder and decoder for Ogg format files. + + Works also as a streaming player. + + http://www.vorbis.com/ diff --git a/buildroot/package/vorbis-tools/vorbis-tools.hash b/buildroot/package/vorbis-tools/vorbis-tools.hash new file mode 100644 index 0000000..8f40eda --- /dev/null +++ b/buildroot/package/vorbis-tools/vorbis-tools.hash @@ -0,0 +1,2 @@ +# From http://downloads.xiph.org/releases/vorbis/SHA256SUMS +sha256 a389395baa43f8e5a796c99daf62397e435a7e73531c9f44d9084055a05d22bc vorbis-tools-1.4.0.tar.gz diff --git a/buildroot/package/vorbis-tools/vorbis-tools.mk b/buildroot/package/vorbis-tools/vorbis-tools.mk new file mode 100644 index 0000000..1bec1e2 --- /dev/null +++ b/buildroot/package/vorbis-tools/vorbis-tools.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# vorbis-tools +# +################################################################################ + +VORBIS_TOOLS_VERSION = 1.4.0 +VORBIS_TOOLS_SITE = http://downloads.xiph.org/releases/vorbis +VORBIS_TOOLS_LICENSE = GPL-2.0 +VORBIS_TOOLS_LICENSE_FILES = COPYING +VORBIS_TOOLS_DEPENDENCIES = libao libogg libvorbis libcurl +VORBIS_TOOLS_CONF_OPTS = --program-transform-name='' +# ogg123 calls math functions but forgets to link with libm +VORBIS_TOOLS_CONF_ENV = LIBS=-lm + +ifeq ($(BR2_PACKAGE_FLAC),y) +VORBIS_TOOLS_DEPENDENCIES += flac +endif + +ifeq ($(BR2_PACKAGE_SPEEX),y) +VORBIS_TOOLS_DEPENDENCIES += speex +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/vpnc/0001-Makefile-allow-to-override-the-PREFIX-variable.patch b/buildroot/package/vpnc/0001-Makefile-allow-to-override-the-PREFIX-variable.patch new file mode 100644 index 0000000..49909ad --- /dev/null +++ b/buildroot/package/vpnc/0001-Makefile-allow-to-override-the-PREFIX-variable.patch @@ -0,0 +1,31 @@ +From 7314d232f8e85879d8f4c311ced44ee5b21fb239 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:26:27 +0100 +Subject: [PATCH] Makefile: allow to override the PREFIX variable + +Some people may not want to install in /usr/local, so this commit +makes it possible to override the PREFIX variable from the make +command line. + +Signed-off-by: Thomas Petazzoni +--- + + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 69f5aca..f9a6781 100644 +--- a/Makefile ++++ b/Makefile +@@ -20,7 +20,7 @@ + # $Id$ + + DESTDIR= +-PREFIX=/usr/local ++PREFIX?=/usr/local + ETCDIR=/etc/vpnc + BINDIR=$(PREFIX)/bin + SBINDIR=$(PREFIX)/sbin +-- +2.6.4 + diff --git a/buildroot/package/vpnc/0002-Makefile-allow-to-override-the-version.patch b/buildroot/package/vpnc/0002-Makefile-allow-to-override-the-version.patch new file mode 100644 index 0000000..9d0bae3 --- /dev/null +++ b/buildroot/package/vpnc/0002-Makefile-allow-to-override-the-version.patch @@ -0,0 +1,41 @@ +From 8b035de4867db4fb8da41298224d92bf5b18e86f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:27:30 +0100 +Subject: [PATCH] Makefile: allow to override the version + +The mk-version script makes the assumption that the build process runs +from a SVN checkout or a Git clone of the vpnc source code. However, +this is not always the case, for example when you are building from a +tarball, but inside a larger project that is versioned with Git. + +This is typically the case when building vpnc under a tool like +Buildroot, or potentially other embedded Linux build system: the build +system tool itself is versioned in Git, downloads tarballs of software +components and builds them. + +In order to support such situations, this commit adjusts the Makefile +to allow the VERSION variable to be overriden from the make command +line. + +Signed-off-by: Thomas Petazzoni +--- + + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index f9a6781..e80ef17 100644 +--- a/Makefile ++++ b/Makefile +@@ -57,7 +57,7 @@ OBJS = $(addsuffix .o,$(basename $(SRCS))) + CRYPTO_OBJS = $(addsuffix .o,$(basename $(CRYPTO_SRCS))) + BINOBJS = $(addsuffix .o,$(BINS)) + BINSRCS = $(addsuffix .c,$(BINS)) +-VERSION := $(shell sh mk-version) ++VERSION ?= $(shell sh mk-version) + RELEASE_VERSION := $(shell cat VERSION) + + CC ?= gcc +-- +2.6.4 + diff --git a/buildroot/package/vpnc/0003-Makefile-allow-passing-custom-CFLAGS-CPPFLAGS.patch b/buildroot/package/vpnc/0003-Makefile-allow-passing-custom-CFLAGS-CPPFLAGS.patch new file mode 100644 index 0000000..c232206 --- /dev/null +++ b/buildroot/package/vpnc/0003-Makefile-allow-passing-custom-CFLAGS-CPPFLAGS.patch @@ -0,0 +1,45 @@ +From 014a8e04a0fa775b2ade78e5f7655a1453375884 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:31:12 +0100 +Subject: [PATCH] Makefile: allow passing custom CFLAGS/CPPFLAGS + +vpnc's Makefile specifies some CFLAGS and CPPFLAGS value, but it may +be needed to pass additional custom flags on the make command line. To +make this possible, we switch from a plain += operator to the +"override ... +=" operator. + +Signed-off-by: Thomas Petazzoni +--- + + Makefile | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index e80ef17..7ac225a 100644 +--- a/Makefile ++++ b/Makefile +@@ -62,9 +62,9 @@ RELEASE_VERSION := $(shell cat VERSION) + + CC ?= gcc + CFLAGS ?= -O3 -g +-CFLAGS += -W -Wall -Wmissing-declarations -Wwrite-strings +-CFLAGS += $(shell libgcrypt-config --cflags) $(CRYPTO_CFLAGS) +-CPPFLAGS += -DVERSION=\"$(VERSION)\" ++override CFLAGS += -W -Wall -Wmissing-declarations -Wwrite-strings ++override CFLAGS += $(shell libgcrypt-config --cflags) $(CRYPTO_CFLAGS) ++override CPPFLAGS += -DVERSION=\"$(VERSION)\" + LDFLAGS ?= -g + LIBS += $(shell libgcrypt-config --libs) $(CRYPTO_LDADD) + +@@ -73,7 +73,7 @@ LIBS += -lnsl -lresolv -lsocket + endif + ifneq (,$(findstring Apple,$(shell $(CC) --version))) + # enabled in FSF GCC, disabled by default in Apple GCC +-CFLAGS += -fstrict-aliasing -freorder-blocks -fsched-interblock ++override CFLAGS += -fstrict-aliasing -freorder-blocks -fsched-interblock + endif + + all : $(BINS) vpnc.8 +-- +2.6.4 + diff --git a/buildroot/package/vpnc/0004-Makefile-provide-an-option-to-not-build-manpages.patch b/buildroot/package/vpnc/0004-Makefile-provide-an-option-to-not-build-manpages.patch new file mode 100644 index 0000000..f767a59 --- /dev/null +++ b/buildroot/package/vpnc/0004-Makefile-provide-an-option-to-not-build-manpages.patch @@ -0,0 +1,57 @@ +From 3c16d0b7bf809a56affd6e1a4c0998027968b91a Mon Sep 17 00:00:00 2001 +From: Ulf Samuelsson +Date: Mon, 8 Feb 2016 23:03:48 +0100 +Subject: [PATCH] Makefile: provide an option to not build manpages + +The process of generating the vpnc.8 man page consists in running the +vpnc tool itself, and parse its --long-help output. While this is +perfectly fine when building natively, it fails completely when +cross-compiling: the vpnc binary that was built cannot be executed on +the build machine. + +In order to support such situations with minimal changes, this patch +adjusts the Makefile to make it understand a MANS variable. By +default, it's defined to "vpnc.8", which means the manpage continues +to be built as usual. However, if it's overriden to be empty, then no +manpage is built. + +Signed-off-by: Thomas Petazzoni +--- + + Makefile | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 7ac225a..ea2cd41 100644 +--- a/Makefile ++++ b/Makefile +@@ -54,6 +54,7 @@ endif + SRCS = sysdep.c vpnc-debug.c isakmp-pkt.c tunip.c config.c dh.c math_group.c supp.c decrypt-utils.c crypto.c $(CRYPTO_SRCS) + BINS = vpnc cisco-decrypt test-crypto + OBJS = $(addsuffix .o,$(basename $(SRCS))) ++MANS ?= vpnc.8 + CRYPTO_OBJS = $(addsuffix .o,$(basename $(CRYPTO_SRCS))) + BINOBJS = $(addsuffix .o,$(BINS)) + BINSRCS = $(addsuffix .c,$(BINS)) +@@ -76,7 +77,7 @@ ifneq (,$(findstring Apple,$(shell $(CC) --version))) + override CFLAGS += -fstrict-aliasing -freorder-blocks -fsched-interblock + endif + +-all : $(BINS) vpnc.8 ++all : $(BINS) $(MANS) + + vpnc : $(OBJS) vpnc.o + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) +@@ -136,7 +137,9 @@ install-common: all + install -m600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf + install -m755 vpnc-disconnect $(DESTDIR)$(SBINDIR) + install -m755 pcf2vpnc $(DESTDIR)$(BINDIR) ++ifneq ($(MANS),) + install -m644 vpnc.8 $(DESTDIR)$(MANDIR)/man8 ++endif + install -m644 pcf2vpnc.1 $(DESTDIR)$(MANDIR)/man1 + install -m644 cisco-decrypt.1 $(DESTDIR)$(MANDIR)/man1 + install -m644 COPYING $(DESTDIR)$(DOCDIR) +-- +2.6.4 + diff --git a/buildroot/package/vpnc/0005-Makefile-allow-passing-a-custom-path-to-libgcrypt-co.patch b/buildroot/package/vpnc/0005-Makefile-allow-passing-a-custom-path-to-libgcrypt-co.patch new file mode 100644 index 0000000..8623907 --- /dev/null +++ b/buildroot/package/vpnc/0005-Makefile-allow-passing-a-custom-path-to-libgcrypt-co.patch @@ -0,0 +1,40 @@ +From 6180ca780e3a792bd632d8899c2b35991822c93d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 8 Feb 2016 23:32:57 +0100 +Subject: [PATCH] Makefile: allow passing a custom path to libgcrypt-config + +The libgcrypt-config program may not be in the PATH, so this patch +adjusts the Makefile so that it understands a LIBGCRYPT_CONFIG +variable. By default, its value is libgcrypt-config so that the +behavior is unchanged. + +Signed-off-by: Thomas Petazzoni +--- + + Makefile | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index ea2cd41..649ddfb 100644 +--- a/Makefile ++++ b/Makefile +@@ -61,13 +61,14 @@ BINSRCS = $(addsuffix .c,$(BINS)) + VERSION ?= $(shell sh mk-version) + RELEASE_VERSION := $(shell cat VERSION) + ++LIBGCRYPT_CONFIG ?= libgcrypt-config + CC ?= gcc + CFLAGS ?= -O3 -g + override CFLAGS += -W -Wall -Wmissing-declarations -Wwrite-strings +-override CFLAGS += $(shell libgcrypt-config --cflags) $(CRYPTO_CFLAGS) ++override CFLAGS += $(shell $(LIBGCRYPT_CONFIG) --cflags) $(CRYPTO_CFLAGS) + override CPPFLAGS += -DVERSION=\"$(VERSION)\" + LDFLAGS ?= -g +-LIBS += $(shell libgcrypt-config --libs) $(CRYPTO_LDADD) ++LIBS += $(shell $(LIBGCRYPT_CONFIG) --libs) $(CRYPTO_LDADD) + + ifeq ($(shell uname -s), SunOS) + LIBS += -lnsl -lresolv -lsocket +-- +2.6.4 + diff --git a/buildroot/package/vpnc/0006-config.c-Replace-deprecated-SUSv3-functions-with-POS.patch b/buildroot/package/vpnc/0006-config.c-Replace-deprecated-SUSv3-functions-with-POS.patch new file mode 100644 index 0000000..5efe303 --- /dev/null +++ b/buildroot/package/vpnc/0006-config.c-Replace-deprecated-SUSv3-functions-with-POS.patch @@ -0,0 +1,36 @@ +From 627a45d88acf236cb36326919e4a2fa975c688bd Mon Sep 17 00:00:00 2001 +From: Bernhard Reutner-Fischer +Date: Mon, 8 Feb 2016 23:05:23 +0100 +Subject: [PATCH] config.c: Replace deprecated SUSv3 functions with POSIX + equivalents + +Replace the deprecated SUSv3 function index() by its POSIX equivalent +strchr(). This is necessary to successfully build vpnc with uClibc, +when SUSv3 compatibility functions are not compiled in. + +Patch originally from Bernhard Reutner-Fischer +. + +Signed-off-by: Thomas Petazzoni +--- + + config.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/config.c b/config.c +index 57778e3..11b363b 100644 +--- a/config.c ++++ b/config.c +@@ -657,8 +657,7 @@ static const struct config_names_s { + static char *get_config_filename(const char *name, int add_dot_conf) + { + char *realname; +- +- asprintf(&realname, "%s%s%s", index(name, '/') ? "" : "/etc/vpnc/", name, add_dot_conf ? ".conf" : ""); ++ asprintf(&realname, "%s%s%s", strchr(name, '/') ? "" : "/etc/vpnc/", name, add_dot_conf ? ".conf" : ""); + return realname; + } + +-- +2.6.4 + diff --git a/buildroot/package/vpnc/0007-sysdep.h-don-t-assume-error.h-is-available-on-all-Li.patch b/buildroot/package/vpnc/0007-sysdep.h-don-t-assume-error.h-is-available-on-all-Li.patch new file mode 100644 index 0000000..41c6191 --- /dev/null +++ b/buildroot/package/vpnc/0007-sysdep.h-don-t-assume-error.h-is-available-on-all-Li.patch @@ -0,0 +1,52 @@ +From 7f41ef32c8c887ee23ca83da4dfd7a4f27e01186 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:09:51 +0100 +Subject: [PATCH] sysdep.h: don't assume is available on all Linux + platforms + +The current logic in sysdep.h assumes that whenever you have __linux__ +or __GLIBC__ defined, then functionality is +available. However, the functionality is a glibc-ism, not +available in more standard-conformant C libraries such as the musl C +library. With musl, __linux__ is defined (but of course not +__GLIBC__). With the current logic, sysdep.h assumes that is +available, which isn't the case. + +This patch therefore changes the logic to only use when +__GLIBC__ is defined. It fixes the following build error: + +In file included from tunip.c:87:0: +sysdep.h:41:19: fatal error: error.h: No such file or directory + #include + +Original patch from +http://git.alpinelinux.org/cgit/aports/tree/testing/vpnc/working.patch. + +Signed-off-by: Thomas Petazzoni +--- + sysdep.h | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/sysdep.h b/sysdep.h +index 137bf6d..fb65b31 100644 +--- a/sysdep.h ++++ b/sysdep.h +@@ -38,11 +38,14 @@ int tun_get_hwaddr(int fd, char *dev, uint8_t *hwaddr); + + /***************************************************************************/ + #if defined(__linux__) || defined(__GLIBC__) ++ ++#ifdef __GLIBC__ + #include ++#define HAVE_ERROR 1 ++#endif + + #define HAVE_VASPRINTF 1 + #define HAVE_ASPRINTF 1 +-#define HAVE_ERROR 1 + #define HAVE_UNSETENV 1 + #define HAVE_SETENV 1 + #endif +-- +2.6.4 + diff --git a/buildroot/package/vpnc/0008-sysdep.c-don-t-include-linux-if_tun.h-on-Linux.patch b/buildroot/package/vpnc/0008-sysdep.c-don-t-include-linux-if_tun.h-on-Linux.patch new file mode 100644 index 0000000..a4cfe11 --- /dev/null +++ b/buildroot/package/vpnc/0008-sysdep.c-don-t-include-linux-if_tun.h-on-Linux.patch @@ -0,0 +1,54 @@ +From 2e2eab070384834036c1458c669070ed17d81dbe Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:15:36 +0100 +Subject: [PATCH] sysdep.c: don't include on Linux +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Including in sysdep.c is not necessary since sysdep.h +already includes . And this is actually +potentially harmful since both files redefine the same 'struct +ethhdr', causing the following build failure with the musl C library: + +In file included from sysdep.h:28:0, + from sysdep.c:71: +.../buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/netinet/if_ether.h:96:8: error: redefinition of ‘struct ethhdr’ + struct ethhdr { + ^ +In file included from .../buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/if_tun.h:20:0, + from sysdep.c:62: +.../buildroot/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/if_ether.h:138:8: note: originally defined here + struct ethhdr { + ^ + +Original patch from: +http://git.alpinelinux.org/cgit/aports/tree/testing/vpnc/working.patch + +Signed-off-by: Thomas Petazzoni +--- + sysdep.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/sysdep.c b/sysdep.c +index d8f181d..f83543d 100644 +--- a/sysdep.c ++++ b/sysdep.c +@@ -58,13 +58,11 @@ + + #if defined(__DragonFly__) + #include +-#elif defined(__linux__) +-#include + #elif defined(__APPLE__) + /* no header for tun */ + #elif defined(__CYGWIN__) + #include "tap-win32.h" +-#else ++#elif !defined(__linux__) + #include + #endif + +-- +2.6.4 + diff --git a/buildroot/package/vpnc/0009-config.c-add-missing-sys-ttydefaults.h-include.patch b/buildroot/package/vpnc/0009-config.c-add-missing-sys-ttydefaults.h-include.patch new file mode 100644 index 0000000..bce552e --- /dev/null +++ b/buildroot/package/vpnc/0009-config.c-add-missing-sys-ttydefaults.h-include.patch @@ -0,0 +1,36 @@ +From 17277915af703a4767de791916621d8f59aef516 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 10 Feb 2016 23:21:26 +0100 +Subject: [PATCH] config.c: add missing include +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This include is needed to get the definition of CEOT, otherwise the +build fails with: + +config.c: In function ‘vpnc_getline’: +config.c:145:25: error: ‘CEOT’ undeclared (first use in this function) + if (llen == 0 && c == CEOT) + ^ + +Signed-off-by: Thomas Petazzoni +--- + config.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/config.c b/config.c +index 11b363b..f47a534 100644 +--- a/config.c ++++ b/config.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + #include + +-- +2.6.4 + diff --git a/buildroot/package/vpnc/Config.in b/buildroot/package/vpnc/Config.in new file mode 100644 index 0000000..6455b0d --- /dev/null +++ b/buildroot/package/vpnc/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_VPNC + bool "vpnc" + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + depends on !BR2_STATIC_LIBS # gnutls + depends on BR2_USE_MMU # fork() + depends on BR2_USE_WCHAR # gnutls + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBGPG_ERROR + select BR2_PACKAGE_GNUTLS + help + Client for Cisco VPN concentrator + 3000 Series VPN Concentrator + IOS Routers + PIX/ASA Zecurity Appliances + Juniper/Netscreen + + http://www.unix-ag.uni-kl.de/~massar/vpnc + +comment "vpnc needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS diff --git a/buildroot/package/vpnc/vpnc.hash b/buildroot/package/vpnc/vpnc.hash new file mode 100644 index 0000000..98a9847 --- /dev/null +++ b/buildroot/package/vpnc/vpnc.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 c10a5c2c0813198ca2404dd36db380cdb6395b46338123b341775095cf61521d vpnc-b1243d29e0c00312ead038b04a2cf5e2fa31d740.tar.gz diff --git a/buildroot/package/vpnc/vpnc.mk b/buildroot/package/vpnc/vpnc.mk new file mode 100644 index 0000000..81cd830 --- /dev/null +++ b/buildroot/package/vpnc/vpnc.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# vpnc +# +################################################################################ + +VPNC_VERSION = b1243d29e0c00312ead038b04a2cf5e2fa31d740 +VPNC_SITE = $(call github,ndpgroup,vpnc,$(VPNC_VERSION)) +VPNC_LICENSE = GPL-2.0+ +VPNC_LICENSE_FILES = COPYING + +VPNC_DEPENDENCIES = libgcrypt libgpg-error gnutls host-pkgconf + +define VPNC_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ + $(TARGET_CONFIGURE_OPTS) \ + LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config \ + VERSION=$(VPNC_VERSION) MANS= +endef + +define VPNC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install $(TARGET_CONFIGURE_OPTS) \ + VERSION=$(VPNC_VERSION) MANS= \ + DESTDIR="$(TARGET_DIR)" PREFIX=/usr +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/vsftpd/0001-utmpx-builddef.patch b/buildroot/package/vsftpd/0001-utmpx-builddef.patch new file mode 100644 index 0000000..07bf13c --- /dev/null +++ b/buildroot/package/vsftpd/0001-utmpx-builddef.patch @@ -0,0 +1,49 @@ +Add build option to disable utmpx update code + +On some embedded systems the libc may have utmpx support, but the +feature would be redundant. So add a build switch to disable utmpx +updating, similar to compiling on systems without utmpx support. + +Signed-off-by: Maarten ter Huurne + +diff -ru vsftpd-3.0.2.orig/builddefs.h vsftpd-3.0.2/builddefs.h +--- vsftpd-3.0.2.orig/builddefs.h 2012-04-05 05:24:56.000000000 +0200 ++++ vsftpd-3.0.2/builddefs.h 2014-09-16 14:23:36.128003245 +0200 +@@ -4,6 +4,7 @@ + #undef VSF_BUILD_TCPWRAPPERS + #define VSF_BUILD_PAM + #undef VSF_BUILD_SSL ++#define VSF_BUILD_UTMPX + + #endif /* VSF_BUILDDEFS_H */ + +diff -ru vsftpd-3.0.2.orig/sysdeputil.c vsftpd-3.0.2/sysdeputil.c +--- vsftpd-3.0.2.orig/sysdeputil.c 2012-09-16 06:18:04.000000000 +0200 ++++ vsftpd-3.0.2/sysdeputil.c 2014-09-16 14:26:42.686887724 +0200 +@@ -1158,7 +1158,7 @@ + + #endif /* !VSF_SYSDEP_NEED_OLD_FD_PASSING */ + +-#ifndef VSF_SYSDEP_HAVE_UTMPX ++#if !defined(VSF_BUILD_UTMPX) || !defined(VSF_SYSDEP_HAVE_UTMPX) + + void + vsf_insert_uwtmp(const struct mystr* p_user_str, +@@ -1173,7 +1173,7 @@ + { + } + +-#else /* !VSF_SYSDEP_HAVE_UTMPX */ ++#else /* !VSF_BUILD_UTMPX || !VSF_SYSDEP_HAVE_UTMPX */ + + /* IMHO, the pam_unix module REALLY should be doing this in its SM component */ + /* Statics */ +@@ -1238,7 +1238,7 @@ + updwtmpx(WTMPX_FILE, &s_utent); + } + +-#endif /* !VSF_SYSDEP_HAVE_UTMPX */ ++#endif /* !VSF_BUILD_UTMPX || !VSF_SYSDEP_HAVE_UTMPX */ + + void + vsf_set_die_if_parent_dies() diff --git a/buildroot/package/vsftpd/0003-fix-CVE-2015-1419.patch b/buildroot/package/vsftpd/0003-fix-CVE-2015-1419.patch new file mode 100644 index 0000000..95ad017 --- /dev/null +++ b/buildroot/package/vsftpd/0003-fix-CVE-2015-1419.patch @@ -0,0 +1,102 @@ +Fix CVE-2015-1419 - config option deny_file is not handled correctly. +From SUSE: https://bugzilla.suse.com/show_bug.cgi?id=915522 + +Signed-off-by: Gustavo Zacarias + +Index: vsftpd-3.0.2/ls.c +=================================================================== +--- vsftpd-3.0.2.orig/ls.c ++++ vsftpd-3.0.2/ls.c +@@ -7,6 +7,7 @@ + * Would you believe, code to handle directory listing. + */ + ++#include + #include "ls.h" + #include "access.h" + #include "defs.h" +@@ -243,11 +244,42 @@ vsf_filename_passes_filter(const struct + struct mystr temp_str = INIT_MYSTR; + struct mystr brace_list_str = INIT_MYSTR; + struct mystr new_filter_str = INIT_MYSTR; ++ struct mystr normalize_filename_str = INIT_MYSTR; ++ const char *normname; ++ const char *path; + int ret = 0; + char last_token = 0; + int must_match_at_current_pos = 1; ++ + str_copy(&filter_remain_str, p_filter_str); +- str_copy(&name_remain_str, p_filename_str); ++ ++ /* normalize filepath */ ++ path = str_strdup(p_filename_str); ++ normname = realpath(path, NULL); ++ if (normname == NULL) ++ goto out; ++ str_alloc_text(&normalize_filename_str, normname); ++ ++ if (!str_isempty (&filter_remain_str) && !str_isempty(&normalize_filename_str)) { ++ if (str_get_char_at(p_filter_str, 0) == '/') { ++ if (str_get_char_at(&normalize_filename_str, 0) != '/') { ++ str_getcwd (&name_remain_str); ++ ++ if (str_getlen(&name_remain_str) > 1) /* cwd != root dir */ ++ str_append_char (&name_remain_str, '/'); ++ ++ str_append_str (&name_remain_str, &normalize_filename_str); ++ } ++ else ++ str_copy (&name_remain_str, &normalize_filename_str); ++ } else { ++ if (str_get_char_at(p_filter_str, 0) != '{') ++ str_basename (&name_remain_str, &normalize_filename_str); ++ else ++ str_copy (&name_remain_str, &normalize_filename_str); ++ } ++ } else ++ str_copy(&name_remain_str, &normalize_filename_str); + + while (!str_isempty(&filter_remain_str) && *iters < VSFTP_MATCHITERS_MAX) + { +@@ -360,6 +392,9 @@ vsf_filename_passes_filter(const struct + ret = 0; + } + out: ++ free(normname); ++ free(path); ++ str_free(&normalize_filename_str); + str_free(&filter_remain_str); + str_free(&name_remain_str); + str_free(&temp_str); +Index: vsftpd-3.0.2/str.c +=================================================================== +--- vsftpd-3.0.2.orig/str.c ++++ vsftpd-3.0.2/str.c +@@ -770,3 +770,14 @@ str_replace_unprintable(struct mystr* p_ + } + } + ++void ++str_basename (struct mystr* d_str, const struct mystr* path) ++{ ++ static struct mystr tmp; ++ ++ str_copy (&tmp, path); ++ str_split_char_reverse(&tmp, d_str, '/'); ++ ++ if (str_isempty(d_str)) ++ str_copy (d_str, path); ++} +Index: vsftpd-3.0.2/str.h +=================================================================== +--- vsftpd-3.0.2.orig/str.h ++++ vsftpd-3.0.2/str.h +@@ -101,6 +101,7 @@ void str_replace_unprintable(struct myst + int str_atoi(const struct mystr* p_str); + filesize_t str_a_to_filesize_t(const struct mystr* p_str); + unsigned int str_octal_to_uint(const struct mystr* p_str); ++void str_basename (struct mystr* d_str, const struct mystr* path); + + /* PURPOSE: Extract a line of text (delimited by \n or EOF) from a string + * buffer, starting at character position 'p_pos'. The extracted line will diff --git a/buildroot/package/vsftpd/Config.in b/buildroot/package/vsftpd/Config.in new file mode 100644 index 0000000..464d6f2 --- /dev/null +++ b/buildroot/package/vsftpd/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_VSFTPD + bool "vsftpd" + depends on BR2_USE_MMU # fork() + help + vsftpd is an ftp daemon written with security in mind. + http://vsftpd.beasts.org/ + +if BR2_PACKAGE_VSFTPD + +config BR2_PACKAGE_VSFTPD_UTMPX + bool "log vsftpd access to utmpx" + # musl 1.1.4 has an empty utmpx implementation and no WTMPX_FILE + depends on !BR2_TOOLCHAIN_USES_MUSL + help + Enable logging of vsftpd access to utmpx. + Note that Buildroot does not generate utmpx by default. + +endif diff --git a/buildroot/package/vsftpd/S70vsftpd b/buildroot/package/vsftpd/S70vsftpd new file mode 100755 index 0000000..38bcfd4 --- /dev/null +++ b/buildroot/package/vsftpd/S70vsftpd @@ -0,0 +1,33 @@ +#! /bin/sh + +set -e + +DESC="vsftpd" +NAME=vsftpd +DAEMON=/usr/sbin/$NAME + +case "$1" in + start) + printf "Starting $DESC: " + start-stop-daemon -S -b -x $NAME + echo "OK" + ;; + stop) + printf "Stopping $DESC: " + start-stop-daemon -K -x $NAME + echo "OK" + ;; + restart|force-reload) + echo "Restarting $DESC: " + $0 stop + sleep 1 + $0 start + echo "" + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/buildroot/package/vsftpd/vsftpd.hash b/buildroot/package/vsftpd/vsftpd.hash new file mode 100644 index 0000000..a0cd55b --- /dev/null +++ b/buildroot/package/vsftpd/vsftpd.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 9d4d2bf6e6e2884852ba4e69e157a2cecd68c5a7635d66a3a8cf8d898c955ef7 vsftpd-3.0.3.tar.gz diff --git a/buildroot/package/vsftpd/vsftpd.mk b/buildroot/package/vsftpd/vsftpd.mk new file mode 100644 index 0000000..2f86d91 --- /dev/null +++ b/buildroot/package/vsftpd/vsftpd.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# vsftpd +# +################################################################################ + +VSFTPD_VERSION = 3.0.3 +VSFTPD_SITE = https://security.appspot.com/downloads +VSFTPD_LIBS = -lcrypt +VSFTPD_LICENSE = GPL-2.0 +VSFTPD_LICENSE_FILES = COPYING + +define VSFTPD_DISABLE_UTMPX + $(SED) 's/.*VSF_BUILD_UTMPX/#undef VSF_BUILD_UTMPX/' $(@D)/builddefs.h +endef + +define VSFTPD_ENABLE_SSL + $(SED) 's/.*VSF_BUILD_SSL/#define VSF_BUILD_SSL/' $(@D)/builddefs.h +endef + +ifeq ($(BR2_PACKAGE_VSFTPD_UTMPX),) +VSFTPD_POST_CONFIGURE_HOOKS += VSFTPD_DISABLE_UTMPX +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +VSFTPD_DEPENDENCIES += openssl host-pkgconf +VSFTPD_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto` +VSFTPD_POST_CONFIGURE_HOOKS += VSFTPD_ENABLE_SSL +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +VSFTPD_DEPENDENCIES += libcap +VSFTPD_LIBS += -lcap +endif + +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +VSFTPD_DEPENDENCIES += linux-pam +VSFTPD_LIBS += -lpam +endif + +define VSFTPD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" LIBS="$(VSFTPD_LIBS)" -C $(@D) +endef + +define VSFTPD_USERS + ftp -1 ftp -1 * /home/ftp - - Anonymous FTP User +endef + +define VSFTPD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/vsftpd/S70vsftpd $(TARGET_DIR)/etc/init.d/S70vsftpd +endef + +# vsftpd won't work if the jail directory is writable, it has to be +# readable only otherwise you get the following error: +# 500 OOPS: vsftpd: refusing to run with writable root inside chroot() +# That's why we have to adjust the permissions of /home/ftp +define VSFTPD_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 755 $(@D)/vsftpd $(TARGET_DIR)/usr/sbin/vsftpd + test -f $(TARGET_DIR)/etc/vsftpd.conf || \ + $(INSTALL) -D -m 644 $(@D)/vsftpd.conf \ + $(TARGET_DIR)/etc/vsftpd.conf + $(INSTALL) -d -m 700 $(TARGET_DIR)/usr/share/empty + $(INSTALL) -d -m 555 $(TARGET_DIR)/home/ftp +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/vtun/0001-fix-installation.patch b/buildroot/package/vtun/0001-fix-installation.patch new file mode 100644 index 0000000..d9659fa --- /dev/null +++ b/buildroot/package/vtun/0001-fix-installation.patch @@ -0,0 +1,44 @@ +Makefile.in: fix installation steps + +Not sure what the reason for that patch is, but originally added by Ulf +Samuelsson , when upgrading from 2.6.x to 3.0.2. + +yann.morin.1998@free.fr: the initial commit in the Buildroot tree had the +SoB by Ulf, but it was not explicitly reproduced here in the patch; so I +added it here directly in the patch. + +Somewhat-signed-off-by: Ulf Samuelsson +Signed-off-by: "Yann E. MORIN" +diff -durN vtun-3.0.3.orig/Makefile.in vtun-3.0.3/Makefile.in +--- vtun-3.0.3.orig/Makefile.in 2012-07-09 06:55:38.000000000 +0200 ++++ vtun-3.0.3/Makefile.in 2013-02-16 23:28:47.034036869 +0100 +@@ -28,7 +28,7 @@ + LEXFLAGS = -t + + INSTALL = @INSTALL@ +-INSTALL_OWNER = -o root -g 0 ++INSTALL_OWNER = + + prefix = @prefix@ + exec_prefix = @exec_prefix@ +@@ -89,16 +89,15 @@ + + install_config: + $(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(ETC_DIR) +- if [ ! -f $(ETC_DIR)/vtund.conf ]; then \ +- $(INSTALL) -m 600 $(INSTALL_OWNER) vtund.conf $(DESTDIR)$(ETC_DIR); \ +- fi ++ $(INSTALL) -m 600 $(INSTALL_OWNER) vtund.conf $(DESTDIR)$(ETC_DIR); ++ $(INSTALL) -m 600 $(INSTALL_OWNER) scripts/vtund-start.conf $(DESTDIR)$(ETC_DIR); + + install: vtund install_config install_man +- $(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(VAR_DIR)/run + $(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(STAT_DIR) + $(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(LOCK_DIR) + $(INSTALL) -d -m 755 $(INSTALL_OWNER) $(DESTDIR)$(SBIN_DIR) + $(INSTALL) -m 755 $(INSTALL_OWNER) vtund $(DESTDIR)$(SBIN_DIR) +- $(BIN_DIR)/strip $(DESTDIR)$(SBIN_DIR)/vtund ++ $(INSTALL) -m 755 -D $(INSTALL_OWNER) scripts/vtund.rc.debian \ ++ $(DESTDIR)$(ETC_DIR)/init.d/S90vtun + + # DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/buildroot/package/vtun/0002-fix-ssl-headers-checks.patch b/buildroot/package/vtun/0002-fix-ssl-headers-checks.patch new file mode 100644 index 0000000..765411a --- /dev/null +++ b/buildroot/package/vtun/0002-fix-ssl-headers-checks.patch @@ -0,0 +1,47 @@ +configure.in: do not hard-code search patch for SSL headers + +Do. Not. Do. That. It breaks cross-compilation. + +Also use the SSL headers dir to look for blowfish headers. + +Signed-off-by: "Yann E. MORIN" + +diff -durN vtun-3.0.3.orig/configure.in vtun-3.0.3/configure.in +--- vtun-3.0.3.orig/configure.in 2009-03-29 12:08:51.000000000 +0200 ++++ vtun-3.0.3/configure.in 2013-02-16 23:44:44.004339680 +0100 +@@ -166,7 +166,7 @@ + AC_MSG_RESULT() + AC_CHECKING( for md5 Library and Header files ... ) + AC_SEARCH_HEADERS(md5.h, +- $SSL_HDR_DIR /usr/include/openssl "" /usr/include /usr/include/ssl /usr/local/include /usr/local/ssl/include /usr/include/sys, ++ $SSL_HDR_DIR "" , + , + AC_MSG_ERROR( SSL headers not found. ) + ) +@@ -176,7 +176,7 @@ + AC_MSG_RESULT() + AC_CHECKING( for blowfish Library and Header files ... ) + AC_SEARCH_HEADERS(blowfish.h, +- $BLOWFISH_HDR_DIR /usr/include/ssl /usr/include/openssl /usr/include /usr/local/include /usr/local/ssl/include /usr/include/crypto, ++ $BLOWFISH_HDR_DIR $SSL_HDR_DIR, + AC_CHECK_LIB(crypto, BF_set_key, + [ + LIBS="$LIBS -lcrypto" +@@ -193,7 +193,7 @@ + AC_MSG_RESULT() + AC_CHECKING( for AES Library and Header files ... ) + AC_SEARCH_HEADERS(aes.h, +- $SSL_HDR_DIR /usr/include/ssl /usr/include/openssl /usr/include /usr/local/include /usr/local/ssl/include /usr/include/crypto, ++ $SSL_HDR_DIR , + AC_CHECK_LIB(crypto, AES_set_encrypt_key, + [ + AC_DEFINE(HAVE_SSL_AES) +@@ -208,7 +208,7 @@ + AC_MSG_RESULT() + AC_CHECKING( for EVP Library and Header files ... ) + AC_SEARCH_HEADERS(evp.h, +- $SSL_HDR_DIR /usr/include/ssl /usr/include/openssl /usr/include /usr/local/include /usr/local/ssl/include /usr/include/crypto, ++ $SSL_HDR_DIR , + AC_CHECK_LIB(crypto, EVP_EncryptInit, + [ + AC_DEFINE(HAVE_SSL_EVP) diff --git a/buildroot/package/vtun/0003-fixup-configure.in.patch b/buildroot/package/vtun/0003-fixup-configure.in.patch new file mode 100644 index 0000000..cb2ac67 --- /dev/null +++ b/buildroot/package/vtun/0003-fixup-configure.in.patch @@ -0,0 +1,92 @@ +configure.in: minimal syntax fixup for autoreconf + +This is the strictly minimal syntax fixups to make autoreconf happy... + +Signed-off-by: "Yann E. MORIN" + +--- +Note: configure.in is still full of incorrect syntax, but fixing it is +a task for another day, and would have to be upstreamed. But upstream +looks to be moribund at best, if not dead... :-( + +So, keep it for ourselves for now... Too bad, vtun is really helpfull. + +--- vtun-3.0.3.orig/configure.in 2013-02-16 23:54:52.582451817 +0100 ++++ vtun-3.0.3/configure.in 2013-02-17 00:03:13.640887353 +0100 +@@ -110,10 +110,10 @@ + AC_SEARCH_LIBS(nanosleep, rt posix4) + + dnl Check for setproctitle in libutil +-AC_SEARCH_LIBS(setproctitle, util bsd, AC_DEFINE(HAVE_SETPROC_TITLE) ) ++AC_SEARCH_LIBS(setproctitle, util bsd, AC_DEFINE([HAVE_SETPROC_TITLE],[],[Define to set title in /proc]) ) + + if test "$SHAPER" = "yes"; then +- AC_DEFINE(HAVE_SHAPER) ++ AC_DEFINE([HAVE_SHAPER],[],[Define to use shapper]) + fi + + if test "$ZLIB" = "yes"; then +@@ -121,7 +121,7 @@ + AC_CHECKING( for ZLIB Library and Header files ... ) + AC_CHECK_LIB(z, deflate, + LIBS="$LIBS -lz" +- AC_DEFINE(HAVE_ZLIB), ++ AC_DEFINE([HAVE_ZLIB],[],[Define to use ZLIB]), + AC_MSG_ERROR( Zlib library not found.) + ) + fi +@@ -148,7 +148,7 @@ + AC_CHECK_LIB($I, lzo1x_decompress, + [ + LIBS="$LIBS -l"$I +- AC_DEFINE(HAVE_LZO) ++ AC_DEFINE([HAVE_LZO],[],[Define to use LZO]) + havelzo=1 + ] + ) +@@ -180,8 +180,8 @@ + AC_CHECK_LIB(crypto, BF_set_key, + [ + LIBS="$LIBS -lcrypto" +- AC_DEFINE(HAVE_SSL) +- AC_DEFINE(HAVE_SSL_BLOWFISH) ++ AC_DEFINE([HAVE_SSL],[],[Define to use SSL]) ++ AC_DEFINE([HAVE_SSL_BLOWFISH],[],[Define to use blowfish]) + ], + AC_MSG_ERROR( SSL library not found. ) + ), +@@ -196,7 +196,7 @@ + $SSL_HDR_DIR , + AC_CHECK_LIB(crypto, AES_set_encrypt_key, + [ +- AC_DEFINE(HAVE_SSL_AES) ++ AC_DEFINE([HAVE_SSL_AES],[],[Define to use AES]) + ], + AC_MSG_ERROR( AES library not found. ) + ), +@@ -211,7 +211,7 @@ + $SSL_HDR_DIR , + AC_CHECK_LIB(crypto, EVP_EncryptInit, + [ +- AC_DEFINE(HAVE_SSL_EVP) ++ AC_DEFINE([HAVE_SSL_EVP],[],Define to use EVP) + ], + AC_MSG_ERROR( EVP library not found. ) + ), +@@ -220,7 +220,7 @@ + fi + + if test "$NATHACK" = "yes"; then +- AC_DEFINE(ENABLE_NAT_HACK) ++ AC_DEFINE([ENABLE_NAT_HACK],[],[Define to use NAT hack]) + fi + + if test "$SOCKS" = "yes"; then +@@ -274,6 +274,6 @@ + REL=`echo 'BRANCH-3_X' | tr -d '$: \-' | sed 's/^[A-Za-z]*//' | sed 's/\_/\./'` + changequote([,]) + +-AC_DEFINE_UNQUOTED(VTUN_VER, "$REL `date '+%m/%d/%Y'`") ++AC_DEFINE_UNQUOTED([VTUN_VER], ["$REL `date '+%m/%d/%Y'`"], [vtun version]) + + AC_OUTPUT(Makefile) diff --git a/buildroot/package/vtun/Config.in b/buildroot/package/vtun/Config.in new file mode 100644 index 0000000..bb8919c --- /dev/null +++ b/buildroot/package/vtun/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_VTUN + bool "vtun" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LZO + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_ZLIB + help + Tool for easily creating Virtual Tunnels over TCP/IP networks + with traffic shaping, compression, and encryption. + + It supports IP, PPP, SLIP, Ethernet and other tunnel types. + + NOTE: It uses start-stop-daemon in init script, so be sure + to enable that within busybox + + http://vtun.sourceforge.net/ diff --git a/buildroot/package/vtun/vtun.hash b/buildroot/package/vtun/vtun.hash new file mode 100644 index 0000000..baa6381 --- /dev/null +++ b/buildroot/package/vtun/vtun.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 69dcbe4f8c5ce7d91b4150a6309e536d03b61841169746ca5788413ac7edb9cb vtun-3.0.3.tar.gz diff --git a/buildroot/package/vtun/vtun.mk b/buildroot/package/vtun/vtun.mk new file mode 100644 index 0000000..9c46559 --- /dev/null +++ b/buildroot/package/vtun/vtun.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# vtun +# +################################################################################ + +VTUN_VERSION = 3.0.3 +VTUN_SITE = http://downloads.sourceforge.net/project/vtun/vtun/$(VTUN_VERSION) +VTUN_LICENSE = GPL-2.0+ with OpenSSL exception +VTUN_LICENSE_FILES = README.OpenSSL +VTUN_DEPENDENCIES = host-bison host-flex zlib lzo openssl +VTUN_AUTORECONF = YES + +VTUN_CONF_OPTS = \ + --with-ssl-headers=$(STAGING_DIR)/usr/include/openssl \ + --with-lzo-headers=$(STAGING_DIR)/usr/include/lzo \ + --with-lzo-lib=$(STAGING_DIR)/usr/lib + +# Assumes old-style gcc inline symbol visibility rules +VTUN_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu89" + +$(eval $(autotools-package)) diff --git a/buildroot/package/w_scan/0001-musl.patch b/buildroot/package/w_scan/0001-musl.patch new file mode 100644 index 0000000..46d6767 --- /dev/null +++ b/buildroot/package/w_scan/0001-musl.patch @@ -0,0 +1,26 @@ +Fix musl build + +Signed-off-by: Bernd Kuhls + +diff -uNr w_scan-20141122.org/descriptors.h w_scan-20141122/descriptors.h +--- w_scan-20141122.org/descriptors.h 2014-11-22 09:49:26.000000000 +0100 ++++ w_scan-20141122/descriptors.h 2016-01-24 14:05:21.000000000 +0100 +@@ -28,6 +28,7 @@ + #ifndef __DESCRIPTORS_H__ + #define __DESCRIPTORS_H__ + ++#include + #include "extended_frontend.h" + + /****************************************************************************** +diff -uNr w_scan-20141122.org/version.h w_scan-20141122/version.h +--- w_scan-20141122.org/version.h 2014-11-22 11:59:56.000000000 +0100 ++++ w_scan-20141122/version.h 2016-01-24 14:06:33.000000000 +0100 +@@ -1,6 +1,6 @@ + /* AUTOMATICALLY GENERATED - DO NOT EDIT MANUALLY */ + #ifndef W_SCAN_VERSION_H + #define W_SCAN_VERSION_H +-uint version=20170107; ++unsigned int version=20170107; + #endif + diff --git a/buildroot/package/w_scan/Config.in b/buildroot/package/w_scan/Config.in new file mode 100644 index 0000000..01dbbae --- /dev/null +++ b/buildroot/package/w_scan/Config.in @@ -0,0 +1,14 @@ +comment "w_scan needs a toolchain w/ headers >= 3.7" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + +config BR2_PACKAGE_W_SCAN + bool "w_scan" + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + w_scan is a small command line utility used to perform + frequency scans for DVB and ATSC transmissions. It is + capable of creating channels.conf files (in different output + formats !) as well as initial tuning data for scan. + + http://wirbel.htpc-forum.de/w_scan/index_en.html diff --git a/buildroot/package/w_scan/w_scan.hash b/buildroot/package/w_scan/w_scan.hash new file mode 100644 index 0000000..e04a084 --- /dev/null +++ b/buildroot/package/w_scan/w_scan.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 38e0f38a7bf06cff6d6ea01652ad4ee60da2cb0e937360468f936da785b46ffe w_scan-20170107.tar.bz2 diff --git a/buildroot/package/w_scan/w_scan.mk b/buildroot/package/w_scan/w_scan.mk new file mode 100644 index 0000000..c63f20c --- /dev/null +++ b/buildroot/package/w_scan/w_scan.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# w_scan +# +################################################################################ + +W_SCAN_VERSION = 20170107 +W_SCAN_SOURCE = w_scan-$(W_SCAN_VERSION).tar.bz2 +W_SCAN_SITE = http://wirbel.htpc-forum.de/w_scan +W_SCAN_LICENSE = GPL-2.0+ +W_SCAN_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +W_SCAN_DEPENDENCIES += libiconv +W_SCAN_CONF_ENV += LIBS=-liconv +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/waf/waf.hash b/buildroot/package/waf/waf.hash new file mode 100644 index 0000000..9d610b2 --- /dev/null +++ b/buildroot/package/waf/waf.hash @@ -0,0 +1,3 @@ +# Locally computed +sha1 33d170c738ed8c92dda2945b445272972f558244 waf-1.9.5 +sha256 101f14e0f47a6410c00b8feda094948516cd3989491c56eb8268907fcd164909 waf-1.9.5 diff --git a/buildroot/package/waf/waf.mk b/buildroot/package/waf/waf.mk new file mode 100644 index 0000000..e7ac891 --- /dev/null +++ b/buildroot/package/waf/waf.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# waf +# +################################################################################ + +WAF_VERSION = 1.9.5 +WAF_SOURCE = waf-$(WAF_VERSION) +WAF_SITE = https://waf.io/ + +define HOST_WAF_EXTRACT_CMDS + $(INSTALL) -D -m 0755 $(DL_DIR)/waf-$(WAF_VERSION) $(@D)/waf +endef + +define HOST_WAF_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/waf $(HOST_DIR)/bin/waf +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/wavemon/Config.in b/buildroot/package/wavemon/Config.in new file mode 100644 index 0000000..b72a617 --- /dev/null +++ b/buildroot/package/wavemon/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_WAVEMON + bool "wavemon" + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_LIBNL + help + wavemon is a wireless device monitoring application that + allows you to watch signal and noise levels, packet + statistics, device configuration and network parameters of + your wireless network hardware. + + Note that you need a Linux Kernel configuration with + wireless extensions or with wireless extensions + compatibility enabled. + + https://github.com/uoaerg/wavemon + +comment "wavemon needs a toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/wavemon/wavemon.hash b/buildroot/package/wavemon/wavemon.hash new file mode 100644 index 0000000..69bd2b4 --- /dev/null +++ b/buildroot/package/wavemon/wavemon.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 c9ea57da4f8161401bcaaca17b37bcdf16ffb88baad2370afed2e15a7f71af73 wavemon-v0.8.1.tar.gz diff --git a/buildroot/package/wavemon/wavemon.mk b/buildroot/package/wavemon/wavemon.mk new file mode 100644 index 0000000..e87ab7a --- /dev/null +++ b/buildroot/package/wavemon/wavemon.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# wavemon +# +################################################################################ + +WAVEMON_VERSION = v0.8.1 +WAVEMON_SITE = $(call github,uoaerg,wavemon,$(WAVEMON_VERSION)) +WAVEMON_LICENSE = GPL-3.0+ +WAVEMON_LICENSE_FILES = COPYING +WAVEMON_DEPENDENCIES = host-pkgconf libnl ncurses + +# Handwritten Makefile.in, automake isn't used +WAVEMON_MAKE_OPTS = CC="$(TARGET_CC)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/wavpack/0001-fix-Github-issue-19-new-dependency-on-wchar-t-by-removing.patch b/buildroot/package/wavpack/0001-fix-Github-issue-19-new-dependency-on-wchar-t-by-removing.patch new file mode 100644 index 0000000..e5faf91 --- /dev/null +++ b/buildroot/package/wavpack/0001-fix-Github-issue-19-new-dependency-on-wchar-t-by-removing.patch @@ -0,0 +1,70 @@ +From 876fc3f3907e871d0938ac6c8c5252f5f31abd1f Mon Sep 17 00:00:00 2001 +From: David Bryant +Date: Thu, 16 Feb 2017 17:11:12 -0800 +Subject: [PATCH] fix GitHub issue #19 (new dependency on wchar_t) by removing + dependency + +[Upstream commit: https://github.com/dbry/WavPack/commit/876fc3f3907e871d0938ac6c8c5252f5f31abd1f] +Signed-off-by: Thomas Petazzoni +--- + cli/import_id3.c | 10 +++++----- + cli/wvtag.c | 2 ++ + 2 files changed, 7 insertions(+), 5 deletions(-) + +diff --git a/cli/import_id3.c b/cli/import_id3.c +index 51e54ee..fc30aeb 100644 +--- a/cli/import_id3.c ++++ b/cli/import_id3.c +@@ -34,7 +34,7 @@ static struct { + + #define NUM_TEXT_TAG_ITEMS (sizeof (text_tag_table) / sizeof (text_tag_table [0])) + +-static int WideCharToUTF8 (const wchar_t *Wide, unsigned char *pUTF8, int len); ++static int WideCharToUTF8 (const uint16_t *Wide, unsigned char *pUTF8, int len); + static void Latin1ToUTF8 (void *string, int len); + + // Import specified ID3v2.3 tag. The WavPack context accepts the tag items, and can be +@@ -163,7 +163,7 @@ int ImportID3v2 (WavpackContext *wpc, unsigned char *tag_data, int tag_size, cha + } + else if (frame_body [0] == 1 && frame_size > 2 && frame_body [1] == 0xFF && frame_body [2] == 0xFE) { + int nchars = (frame_size - 3) / 2; +- wchar_t *wide_string = malloc ((nchars + 1) * sizeof (wchar_t)); ++ uint16_t *wide_string = malloc ((nchars + 1) * sizeof (uint16_t)); + unsigned char *fp = frame_body + 3; + + utf8_string = malloc ((nchars + 1) * 3); +@@ -297,9 +297,9 @@ int ImportID3v2 (WavpackContext *wpc, unsigned char *tag_data, int tag_size, cha + // may be less than the number of characters in the wide string if the buffer + // length is exceeded. + +-static int WideCharToUTF8 (const wchar_t *Wide, unsigned char *pUTF8, int len) ++static int WideCharToUTF8 (const uint16_t *Wide, unsigned char *pUTF8, int len) + { +- const wchar_t *pWide = Wide; ++ const uint16_t *pWide = Wide; + int outndx = 0; + + while (*pWide) { +@@ -335,7 +335,7 @@ static int WideCharToUTF8 (const wchar_t *Wide, unsigned char *pUTF8, int len) + static void Latin1ToUTF8 (void *string, int len) + { + int max_chars = (int) strlen (string); +- wchar_t *temp = (wchar_t *) malloc ((max_chars + 1) * 2); ++ uint16_t *temp = (uint16_t *) malloc ((max_chars + 1) * sizeof (uint16_t)); + + MultiByteToWideChar (28591, 0, string, -1, temp, max_chars + 1); + WideCharToUTF8 (temp, (unsigned char *) string, len); +diff --git a/cli/wvtag.c b/cli/wvtag.c +index 6e6512a..45e621e 100644 +--- a/cli/wvtag.c ++++ b/cli/wvtag.c +@@ -1344,7 +1344,9 @@ static void dump_UTF8_string (char *string, FILE *dst) + // resulting string will not fit in the specified buffer size then it is + // truncated. + ++#if defined (_WIN32) + static int UTF8ToWideChar (const unsigned char *pUTF8, wchar_t *pWide); ++#endif + + static void UTF8ToAnsi (char *string, int len) + { diff --git a/buildroot/package/wavpack/0002-issue-27-do-not-overwrite-stack-on-corrupt-RF64-file.patch b/buildroot/package/wavpack/0002-issue-27-do-not-overwrite-stack-on-corrupt-RF64-file.patch new file mode 100644 index 0000000..bda0099 --- /dev/null +++ b/buildroot/package/wavpack/0002-issue-27-do-not-overwrite-stack-on-corrupt-RF64-file.patch @@ -0,0 +1,118 @@ +From d5bf76b5a88d044a1be1d5656698e3ba737167e5 Mon Sep 17 00:00:00 2001 +From: David Bryant +Date: Sun, 4 Feb 2018 11:28:15 -0800 +Subject: [PATCH] issue #27, do not overwrite stack on corrupt RF64 file + +Fixes CVE-2018-6767 + +Signed-off-by: Peter Korsgaard +--- + cli/riff.c | 39 ++++++++++++++++++++++++++++++++------- + 1 file changed, 32 insertions(+), 7 deletions(-) + +diff --git a/cli/riff.c b/cli/riff.c +index 8b1af45..de98c1e 100644 +--- a/cli/riff.c ++++ b/cli/riff.c +@@ -42,6 +42,7 @@ typedef struct { + + #pragma pack(pop) + ++#define CS64ChunkFormat "4D" + #define DS64ChunkFormat "DDDL" + + #define WAVPACK_NO_ERROR 0 +@@ -101,13 +102,13 @@ int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack + + if (!strncmp (chunk_header.ckID, "ds64", 4)) { + if (chunk_header.ckSize < sizeof (DS64Chunk) || +- !DoReadFile (infile, &ds64_chunk, chunk_header.ckSize, &bcount) || +- bcount != chunk_header.ckSize) { ++ !DoReadFile (infile, &ds64_chunk, sizeof (DS64Chunk), &bcount) || ++ bcount != sizeof (DS64Chunk)) { + error_line ("%s is not a valid .WAV file!", infilename); + return WAVPACK_SOFT_ERROR; + } + else if (!(config->qmode & QMODE_NO_STORE_WRAPPER) && +- !WavpackAddWrapper (wpc, &ds64_chunk, chunk_header.ckSize)) { ++ !WavpackAddWrapper (wpc, &ds64_chunk, sizeof (DS64Chunk))) { + error_line ("%s", WavpackGetErrorMessage (wpc)); + return WAVPACK_SOFT_ERROR; + } +@@ -315,10 +316,11 @@ int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack + + int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples, int qmode) + { +- int do_rf64 = 0, write_junk = 1; ++ int do_rf64 = 0, write_junk = 1, table_length = 0; + ChunkHeader ds64hdr, datahdr, fmthdr; + RiffChunkHeader riffhdr; + DS64Chunk ds64_chunk; ++ CS64Chunk cs64_chunk; + JunkChunk junkchunk; + WaveHeader wavhdr; + uint32_t bcount; +@@ -380,6 +382,7 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples, + strncpy (riffhdr.formType, "WAVE", sizeof (riffhdr.formType)); + total_riff_bytes = sizeof (riffhdr) + wavhdrsize + sizeof (datahdr) + ((total_data_bytes + 1) & ~(int64_t)1); + if (do_rf64) total_riff_bytes += sizeof (ds64hdr) + sizeof (ds64_chunk); ++ total_riff_bytes += table_length * sizeof (CS64Chunk); + if (write_junk) total_riff_bytes += sizeof (junkchunk); + strncpy (fmthdr.ckID, "fmt ", sizeof (fmthdr.ckID)); + strncpy (datahdr.ckID, "data", sizeof (datahdr.ckID)); +@@ -394,11 +397,12 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples, + + if (do_rf64) { + strncpy (ds64hdr.ckID, "ds64", sizeof (ds64hdr.ckID)); +- ds64hdr.ckSize = sizeof (ds64_chunk); ++ ds64hdr.ckSize = sizeof (ds64_chunk) + (table_length * sizeof (CS64Chunk)); + CLEAR (ds64_chunk); + ds64_chunk.riffSize64 = total_riff_bytes; + ds64_chunk.dataSize64 = total_data_bytes; + ds64_chunk.sampleCount64 = total_samples; ++ ds64_chunk.tableLength = table_length; + riffhdr.ckSize = (uint32_t) -1; + datahdr.ckSize = (uint32_t) -1; + WavpackNativeToLittleEndian (&ds64hdr, ChunkHeaderFormat); +@@ -409,6 +413,14 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples, + datahdr.ckSize = (uint32_t) total_data_bytes; + } + ++ // this "table" is just a dummy placeholder for testing (normally not written) ++ ++ if (table_length) { ++ strncpy (cs64_chunk.ckID, "dmmy", sizeof (cs64_chunk.ckID)); ++ cs64_chunk.chunkSize64 = 12345678; ++ WavpackNativeToLittleEndian (&cs64_chunk, CS64ChunkFormat); ++ } ++ + // write the RIFF chunks up to just before the data starts + + WavpackNativeToLittleEndian (&riffhdr, ChunkHeaderFormat); +@@ -418,8 +430,21 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples, + + if (!DoWriteFile (outfile, &riffhdr, sizeof (riffhdr), &bcount) || bcount != sizeof (riffhdr) || + (do_rf64 && (!DoWriteFile (outfile, &ds64hdr, sizeof (ds64hdr), &bcount) || bcount != sizeof (ds64hdr))) || +- (do_rf64 && (!DoWriteFile (outfile, &ds64_chunk, sizeof (ds64_chunk), &bcount) || bcount != sizeof (ds64_chunk))) || +- (write_junk && (!DoWriteFile (outfile, &junkchunk, sizeof (junkchunk), &bcount) || bcount != sizeof (junkchunk))) || ++ (do_rf64 && (!DoWriteFile (outfile, &ds64_chunk, sizeof (ds64_chunk), &bcount) || bcount != sizeof (ds64_chunk)))) { ++ error_line ("can't write .WAV data, disk probably full!"); ++ return FALSE; ++ } ++ ++ // again, this is normally not written except for testing ++ ++ while (table_length--) ++ if (!DoWriteFile (outfile, &cs64_chunk, sizeof (cs64_chunk), &bcount) || bcount != sizeof (cs64_chunk)) { ++ error_line ("can't write .WAV data, disk probably full!"); ++ return FALSE; ++ } ++ ++ ++ if ((write_junk && (!DoWriteFile (outfile, &junkchunk, sizeof (junkchunk), &bcount) || bcount != sizeof (junkchunk))) || + !DoWriteFile (outfile, &fmthdr, sizeof (fmthdr), &bcount) || bcount != sizeof (fmthdr) || + !DoWriteFile (outfile, &wavhdr, wavhdrsize, &bcount) || bcount != wavhdrsize || + !DoWriteFile (outfile, &datahdr, sizeof (datahdr), &bcount) || bcount != sizeof (datahdr)) { +-- +2.11.0 + diff --git a/buildroot/package/wavpack/0003-issue-28-do-not-overwrite-heap-on-corrupt-DSDIFF-fil.patch b/buildroot/package/wavpack/0003-issue-28-do-not-overwrite-heap-on-corrupt-DSDIFF-fil.patch new file mode 100644 index 0000000..950877b --- /dev/null +++ b/buildroot/package/wavpack/0003-issue-28-do-not-overwrite-heap-on-corrupt-DSDIFF-fil.patch @@ -0,0 +1,38 @@ +From 36a24c7881427d2e1e4dc1cef58f19eee0d13aec Mon Sep 17 00:00:00 2001 +From: David Bryant +Date: Sat, 10 Feb 2018 16:01:39 -0800 +Subject: [PATCH] issue #28, do not overwrite heap on corrupt DSDIFF file + +Fixes CVE-2018-7253 + +Signed-off-by: Peter Korsgaard +--- + cli/dsdiff.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +diff --git a/cli/dsdiff.c b/cli/dsdiff.c +index 410dc1c..c016df9 100644 +--- a/cli/dsdiff.c ++++ b/cli/dsdiff.c +@@ -153,7 +153,17 @@ int ParseDsdiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa + error_line ("dsdiff file version = 0x%08x", version); + } + else if (!strncmp (dff_chunk_header.ckID, "PROP", 4)) { +- char *prop_chunk = malloc ((size_t) dff_chunk_header.ckDataSize); ++ char *prop_chunk; ++ ++ if (dff_chunk_header.ckDataSize < 4 || dff_chunk_header.ckDataSize > 1024) { ++ error_line ("%s is not a valid .DFF file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ if (debug_logging_mode) ++ error_line ("got PROP chunk of %d bytes total", (int) dff_chunk_header.ckDataSize); ++ ++ prop_chunk = malloc ((size_t) dff_chunk_header.ckDataSize); + + if (!DoReadFile (infile, prop_chunk, (uint32_t) dff_chunk_header.ckDataSize, &bcount) || + bcount != dff_chunk_header.ckDataSize) { +-- +2.11.0 + diff --git a/buildroot/package/wavpack/0004-issue-28-fix-buffer-overflows-and-bad-allocs-on-corr.patch b/buildroot/package/wavpack/0004-issue-28-fix-buffer-overflows-and-bad-allocs-on-corr.patch new file mode 100644 index 0000000..142e81f --- /dev/null +++ b/buildroot/package/wavpack/0004-issue-28-fix-buffer-overflows-and-bad-allocs-on-corr.patch @@ -0,0 +1,72 @@ +From 8e3fe45a7bac31d9a3b558ae0079e2d92a04799e Mon Sep 17 00:00:00 2001 +From: David Bryant +Date: Sun, 11 Feb 2018 16:37:47 -0800 +Subject: [PATCH] issue #28, fix buffer overflows and bad allocs on corrupt CAF + files + +Fixes CVE-2018-7254 + +Signed-off-by: Peter Korsgaard +--- + cli/caff.c | 30 +++++++++++++++++++++++------- + 1 file changed, 23 insertions(+), 7 deletions(-) + +diff --git a/cli/caff.c b/cli/caff.c +index ae57c4b..6248a71 100644 +--- a/cli/caff.c ++++ b/cli/caff.c +@@ -89,8 +89,8 @@ typedef struct + + #define CAFChannelDescriptionFormat "LLLLL" + +-static const char TMH_full [] = { 1,2,3,13,9,10,5,6,12,14,15,16,17,9,4,18,7,8,19,20,21 }; +-static const char TMH_std [] = { 1,2,3,11,8,9,5,6,10,12,13,14,15,7,4,16 }; ++static const char TMH_full [] = { 1,2,3,13,9,10,5,6,12,14,15,16,17,9,4,18,7,8,19,20,21,0 }; ++static const char TMH_std [] = { 1,2,3,11,8,9,5,6,10,12,13,14,15,7,4,16,0 }; + + static struct { + uint32_t mChannelLayoutTag; // Core Audio layout, 100 - 146 in high word, num channels in low word +@@ -274,10 +274,19 @@ int ParseCaffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack + } + } + else if (!strncmp (caf_chunk_header.mChunkType, "chan", 4)) { +- CAFChannelLayout *caf_channel_layout = malloc ((size_t) caf_chunk_header.mChunkSize); ++ CAFChannelLayout *caf_channel_layout; + +- if (caf_chunk_header.mChunkSize < sizeof (CAFChannelLayout) || +- !DoReadFile (infile, caf_channel_layout, (uint32_t) caf_chunk_header.mChunkSize, &bcount) || ++ if (caf_chunk_header.mChunkSize < sizeof (CAFChannelLayout) || caf_chunk_header.mChunkSize > 1024) { ++ error_line ("this .CAF file has an invalid 'chan' chunk!"); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ if (debug_logging_mode) ++ error_line ("'chan' chunk is %d bytes", (int) caf_chunk_header.mChunkSize); ++ ++ caf_channel_layout = malloc ((size_t) caf_chunk_header.mChunkSize); ++ ++ if (!DoReadFile (infile, caf_channel_layout, (uint32_t) caf_chunk_header.mChunkSize, &bcount) || + bcount != caf_chunk_header.mChunkSize) { + error_line ("%s is not a valid .CAF file!", infilename); + free (caf_channel_layout); +@@ -495,8 +504,15 @@ int ParseCaffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack + } + else { // just copy unknown chunks to output file + +- int bytes_to_copy = (uint32_t) caf_chunk_header.mChunkSize; +- char *buff = malloc (bytes_to_copy); ++ uint32_t bytes_to_copy = (uint32_t) caf_chunk_header.mChunkSize; ++ char *buff; ++ ++ if (caf_chunk_header.mChunkSize < 0 || caf_chunk_header.mChunkSize > 1048576) { ++ error_line ("%s is not a valid .CAF file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ buff = malloc (bytes_to_copy); + + if (debug_logging_mode) + error_line ("extra unknown chunk \"%c%c%c%c\" of %d bytes", +-- +2.11.0 + diff --git a/buildroot/package/wavpack/0005-issue-30-issue-31-issue-32-no-multiple-format-chunks.patch b/buildroot/package/wavpack/0005-issue-30-issue-31-issue-32-no-multiple-format-chunks.patch new file mode 100644 index 0000000..f837a0e --- /dev/null +++ b/buildroot/package/wavpack/0005-issue-30-issue-31-issue-32-no-multiple-format-chunks.patch @@ -0,0 +1,64 @@ +From 26cb47f99d481ad9b93eeff80d26e6b63bbd7e15 Mon Sep 17 00:00:00 2001 +From: David Bryant +Date: Tue, 24 Apr 2018 22:18:07 -0700 +Subject: [PATCH] issue #30 issue #31 issue #32: no multiple format chunks in + WAV or W64 + +Signed-off-by: Peter Korsgaard +--- + cli/riff.c | 7 ++++++- + cli/wave64.c | 6 ++++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/cli/riff.c b/cli/riff.c +index 7bddf63..5d6452e 100644 +--- a/cli/riff.c ++++ b/cli/riff.c +@@ -53,7 +53,7 @@ extern int debug_logging_mode; + + int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, WavpackContext *wpc, WavpackConfig *config) + { +- int is_rf64 = !strncmp (fourcc, "RF64", 4), got_ds64 = 0; ++ int is_rf64 = !strncmp (fourcc, "RF64", 4), got_ds64 = 0, format_chunk = 0; + int64_t total_samples = 0, infilesize; + RiffChunkHeader riff_chunk_header; + ChunkHeader chunk_header; +@@ -140,6 +140,11 @@ int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack + else if (!strncmp (chunk_header.ckID, "fmt ", 4)) { // if it's the format chunk, we want to get some info out of there and + int supported = TRUE, format; // make sure it's a .wav file we can handle + ++ if (format_chunk++) { ++ error_line ("%s is not a valid .WAV file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ + if (chunk_header.ckSize < 16 || chunk_header.ckSize > sizeof (WaveHeader) || + !DoReadFile (infile, &WaveHeader, chunk_header.ckSize, &bcount) || + bcount != chunk_header.ckSize) { +diff --git a/cli/wave64.c b/cli/wave64.c +index fa928a0..0388dc7 100644 +--- a/cli/wave64.c ++++ b/cli/wave64.c +@@ -53,6 +53,7 @@ int ParseWave64HeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa + Wave64ChunkHeader chunk_header; + Wave64FileHeader filehdr; + WaveHeader WaveHeader; ++ int format_chunk = 0; + uint32_t bcount; + + infilesize = DoGetFileSize (infile); +@@ -104,6 +105,11 @@ int ParseWave64HeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa + if (!memcmp (chunk_header.ckID, fmt_guid, sizeof (fmt_guid))) { + int supported = TRUE, format; + ++ if (format_chunk++) { ++ error_line ("%s is not a valid .W64 file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ + chunk_header.ckSize = (chunk_header.ckSize + 7) & ~7L; + + if (chunk_header.ckSize < 16 || chunk_header.ckSize > sizeof (WaveHeader) || +-- +2.11.0 + diff --git a/buildroot/package/wavpack/0006-issue-33-sanitize-size-of-unknown-chunks-before-mall.patch b/buildroot/package/wavpack/0006-issue-33-sanitize-size-of-unknown-chunks-before-mall.patch new file mode 100644 index 0000000..76ebce6 --- /dev/null +++ b/buildroot/package/wavpack/0006-issue-33-sanitize-size-of-unknown-chunks-before-mall.patch @@ -0,0 +1,75 @@ +From 6f8bb34c2993a48ab9afbe353e6d0cff7c8d821d Mon Sep 17 00:00:00 2001 +From: David Bryant +Date: Tue, 24 Apr 2018 17:27:01 -0700 +Subject: [PATCH] issue #33, sanitize size of unknown chunks before malloc() + +Signed-off-by: Peter Korsgaard +--- + cli/dsdiff.c | 9 ++++++++- + cli/riff.c | 9 ++++++++- + cli/wave64.c | 9 ++++++++- + 3 files changed, 24 insertions(+), 3 deletions(-) + +diff --git a/cli/dsdiff.c b/cli/dsdiff.c +index c016df9..fa56bbb 100644 +--- a/cli/dsdiff.c ++++ b/cli/dsdiff.c +@@ -279,7 +279,14 @@ int ParseDsdiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa + else { // just copy unknown chunks to output file + + int bytes_to_copy = (int)(((dff_chunk_header.ckDataSize) + 1) & ~(int64_t)1); +- char *buff = malloc (bytes_to_copy); ++ char *buff; ++ ++ if (bytes_to_copy < 0 || bytes_to_copy > 4194304) { ++ error_line ("%s is not a valid .DFF file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ buff = malloc (bytes_to_copy); + + if (debug_logging_mode) + error_line ("extra unknown chunk \"%c%c%c%c\" of %d bytes", +diff --git a/cli/riff.c b/cli/riff.c +index de98c1e..7bddf63 100644 +--- a/cli/riff.c ++++ b/cli/riff.c +@@ -286,7 +286,14 @@ int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack + else { // just copy unknown chunks to output file + + int bytes_to_copy = (chunk_header.ckSize + 1) & ~1L; +- char *buff = malloc (bytes_to_copy); ++ char *buff; ++ ++ if (bytes_to_copy < 0 || bytes_to_copy > 4194304) { ++ error_line ("%s is not a valid .WAV file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ buff = malloc (bytes_to_copy); + + if (debug_logging_mode) + error_line ("extra unknown chunk \"%c%c%c%c\" of %d bytes", +diff --git a/cli/wave64.c b/cli/wave64.c +index 591d640..fa928a0 100644 +--- a/cli/wave64.c ++++ b/cli/wave64.c +@@ -241,7 +241,14 @@ int ParseWave64HeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa + } + else { // just copy unknown chunks to output file + int bytes_to_copy = (chunk_header.ckSize + 7) & ~7L; +- char *buff = malloc (bytes_to_copy); ++ char *buff; ++ ++ if (bytes_to_copy < 0 || bytes_to_copy > 4194304) { ++ error_line ("%s is not a valid .W64 file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ buff = malloc (bytes_to_copy); + + if (debug_logging_mode) + error_line ("extra unknown chunk \"%c%c%c%c\" of %d bytes", +-- +2.11.0 + diff --git a/buildroot/package/wavpack/Config.in b/buildroot/package/wavpack/Config.in new file mode 100644 index 0000000..db7b893 --- /dev/null +++ b/buildroot/package/wavpack/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_WAVPACK + bool "wavpack" + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + WavPack is a completely open audio compression format + providing lossless, high-quality lossy, and a unique + hybrid compression mode. + + http://www.wavpack.com/ diff --git a/buildroot/package/wavpack/wavpack.hash b/buildroot/package/wavpack/wavpack.hash new file mode 100644 index 0000000..56ba7d8 --- /dev/null +++ b/buildroot/package/wavpack/wavpack.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 1939627d5358d1da62bc6158d63f7ed12905552f3a799c799ee90296a7612944 wavpack-5.1.0.tar.bz2 diff --git a/buildroot/package/wavpack/wavpack.mk b/buildroot/package/wavpack/wavpack.mk new file mode 100644 index 0000000..c23b127 --- /dev/null +++ b/buildroot/package/wavpack/wavpack.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# wavpack +# +################################################################################ + +WAVPACK_VERSION = 5.1.0 +WAVPACK_SITE = http://www.wavpack.com +WAVPACK_SOURCE = wavpack-$(WAVPACK_VERSION).tar.bz2 +WAVPACK_INSTALL_STAGING = YES +WAVPACK_DEPENDENCIES = $(if $(BR2_ENABLE_LOCALE),,libiconv) +WAVPACK_LICENSE = BSD-3-Clause +WAVPACK_LICENSE_FILES = COPYING + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +WAVPACK_CONF_OPTS += LIBS=-liconv +endif + +# WavPack "autodetects" CPU type to enable ASM code. However, the assembly code +# for ARM is written for ARMv7 only and building WavPack for an ARM-non-v7 +# architecture will fail. We explicitly enable ASM for the supported +# architectures x86, x64 and ARMv7 and disable it for all others. +ifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_ARM_CPU_ARMV7A),y) +WAVPACK_CONF_OPTS += --enable-asm +else +WAVPACK_CONF_OPTS += --disable-asm +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/wayland-protocols/Config.in b/buildroot/package/wayland-protocols/Config.in new file mode 100644 index 0000000..8b4dedf --- /dev/null +++ b/buildroot/package/wayland-protocols/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_WAYLAND_PROTOCOLS + bool "wayland-protocols" + # Not really... but useless otherwise + depends on BR2_PACKAGE_WAYLAND + help + Wayland protocols that adds functionality not available in + the Wayland core protocol. + + http://wayland.freedesktop.org/ diff --git a/buildroot/package/wayland-protocols/wayland-protocols.hash b/buildroot/package/wayland-protocols/wayland-protocols.hash new file mode 100644 index 0000000..d1d643c --- /dev/null +++ b/buildroot/package/wayland-protocols/wayland-protocols.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/wayland-devel/2017-December/036037.html +md5 ac83c4704003323b6bd5a1b91fb1be53 wayland-protocols-1.12.tar.xz +sha1 ac908e91c6c5e7802c0af48f55725ad683017e72 wayland-protocols-1.12.tar.xz +sha256 3b19e8a9e1e19474756a7069db23b90ca9b8ebb438448c6063b4a7fc89b7c8b2 wayland-protocols-1.12.tar.xz +sha256 f1a2b233e8a9a71c40f4aa885be08a0842ac85bb8588703c1dd7e6e6502e3124 COPYING diff --git a/buildroot/package/wayland-protocols/wayland-protocols.mk b/buildroot/package/wayland-protocols/wayland-protocols.mk new file mode 100644 index 0000000..0d23e9a --- /dev/null +++ b/buildroot/package/wayland-protocols/wayland-protocols.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# wayland-protocols +# +################################################################################ + +WAYLAND_PROTOCOLS_VERSION = 1.12 +WAYLAND_PROTOCOLS_SITE = http://wayland.freedesktop.org/releases +WAYLAND_PROTOCOLS_SOURCE = wayland-protocols-$(WAYLAND_PROTOCOLS_VERSION).tar.xz +WAYLAND_PROTOCOLS_LICENSE = MIT +WAYLAND_PROTOCOLS_LICENSE_FILES = COPYING +WAYLAND_PROTOCOLS_INSTALL_STAGING = YES +WAYLAND_PROTOCOLS_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/wayland/0001-Support-architectures-with-non-empty-__USER_LABEL_PR.patch b/buildroot/package/wayland/0001-Support-architectures-with-non-empty-__USER_LABEL_PR.patch new file mode 100644 index 0000000..abefcff --- /dev/null +++ b/buildroot/package/wayland/0001-Support-architectures-with-non-empty-__USER_LABEL_PR.patch @@ -0,0 +1,57 @@ +From 0a337328411d5b3f37b169a83b6fee3f1726130f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 26 May 2016 15:57:33 +0200 +Subject: [PATCH] Support architectures with non-empty __USER_LABEL_PREFIX__ + +On some architectures (like Blackfin), a C symbol does not directly +match with assembly symbols. The C symbol references are in fact all +prefixed by a so-called "user label prefix". So when a symbol defined +in an assembly file needs to be referenced from C, this symbol should +be prefixed by the "user label prefix". + +This commit updates dtddata.S to take into account +__USER_LABEL_PREFIX__ when it exists. + +Signed-off-by: Thomas Petazzoni +--- + src/dtddata.S | 19 +++++++++++++------ + 1 file changed, 13 insertions(+), 6 deletions(-) + +diff --git a/src/dtddata.S b/src/dtddata.S +index ce51133..ad2a4db 100644 +--- a/src/dtddata.S ++++ b/src/dtddata.S +@@ -30,17 +30,24 @@ + + /* from: http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967#comment-348129 */ + ++#ifdef __USER_LABEL_PREFIX__ ++#define CONCAT1(a, b) CONCAT2(a, b) ++#define CONCAT2(a, b) a ## b ++#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) ++#else ++#endif ++ + .macro binfile name file + .p2align 2 +- .globl \name\()_begin +-\name\()_begin: ++ .globl SYM(\name\()_begin) ++SYM(\name\()_begin): + .incbin "\file" +-\name\()_end: ++SYM(\name\()_end): + .byte 0 + .p2align 2 +- .globl \name\()_len +-\name\()_len: +- .int (\name\()_end - \name\()_begin) ++ .globl SYM(\name\()_len) ++SYM(\name\()_len): ++ .int (SYM(\name\()_end) - SYM(\name\()_begin)) + .endm + + .section .rodata +-- +2.7.4 + diff --git a/buildroot/package/wayland/0002-configure-add-option-to-disable-tests.patch b/buildroot/package/wayland/0002-configure-add-option-to-disable-tests.patch new file mode 100644 index 0000000..8c67d9a --- /dev/null +++ b/buildroot/package/wayland/0002-configure-add-option-to-disable-tests.patch @@ -0,0 +1,68 @@ +From 33b025e04bf3fa94b74ea3325b3fd7c3f546bcb1 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 5 Mar 2017 10:06:02 +0100 +Subject: [PATCH] configure: add option to disable tests + +When building for a product, tests are not needed. + +Besides, one test requires a C++ compiler, which is not always +available. + +So, add an option to configure to disable building tests altogether. + +Signed-off-by: "Yann E. MORIN" +--- +Patch submitted upstream: +https://lists.freedesktop.org/archives/wayland-devel/2017-March/033359.html +--- + Makefile.am | 3 ++- + configure.ac | 8 ++++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index d0c8bd3..9c2541d 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -143,7 +143,7 @@ libwayland_cursor_la_CFLAGS = \ + -I$(top_srcdir)/src \ + -DICONDIR=\"$(ICONDIR)\" + +- ++if ENABLE_TESTS + built_test_programs = \ + array-test \ + client-test \ +@@ -258,6 +258,7 @@ os_wrappers_test_LDADD = libtest-runner.la + + exec_fd_leak_checker_SOURCES = tests/exec-fd-leak-checker.c + exec_fd_leak_checker_LDADD = libtest-runner.la ++endif + + EXTRA_DIST += tests/scanner-test.sh \ + tests/data/example.xml \ +diff --git a/configure.ac b/configure.ac +index b583bef..96a5575 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -87,10 +87,18 @@ AC_ARG_ENABLE([dtd-validation], + [], + [enable_dtd_validation=yes]) + ++AC_ARG_ENABLE([tests], ++ [AC_HELP_STRING([--disable-tests], ++ [Disable compilation of test programs])], ++ [], ++ [enable_tests=yes]) ++ + AM_CONDITIONAL(USE_HOST_SCANNER, test "x$with_host_scanner" = xyes) + + AM_CONDITIONAL(ENABLE_LIBRARIES, test "x$enable_libraries" = xyes) + ++AM_CONDITIONAL(ENABLE_TESTS, test "x$enable_tests" = "yes") ++ + AC_ARG_WITH(icondir, [ --with-icondir= Look for cursor icons here], + [ ICONDIR=$withval], + [ ICONDIR=${datadir}/icons]) +-- +2.7.4 + diff --git a/buildroot/package/wayland/Config.in b/buildroot/package/wayland/Config.in new file mode 100644 index 0000000..32718fc --- /dev/null +++ b/buildroot/package/wayland/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_WAYLAND + bool "wayland" + depends on !BR2_STATIC_LIBS # dlfcn.h + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_EXPAT + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_LIBXML2 + help + Wayland is a project to define a protocol for a compositor + to talk to its clients as well as a library implementation + of the protocol. + + http://wayland.freedesktop.org/ + +comment "wayland needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/wayland/wayland.hash b/buildroot/package/wayland/wayland.hash new file mode 100644 index 0000000..c46aca2 --- /dev/null +++ b/buildroot/package/wayland/wayland.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/wayland-devel/2017-August/034748.html +md5 0235f6075c32c3be61cff94fa0b9f108 wayland-1.14.0.tar.xz +sha1 53a443be3bafe73209bbc49ef2cb134ed16e0141 wayland-1.14.0.tar.xz +sha256 ed80cabc0961a759a42092e2c39aabfc1ec9a13c86c98bbe2b812f008da27ab8 wayland-1.14.0.tar.xz +sha512 bd38b2b8963d4d98d42c270e5d7dbff6323789a173b19b67a18258424fd8adee5021b282c9d7f6dad0bd25aa0160e76aecd8ed803d4eb25d911ef0a81cd713a5 wayland-1.14.0.tar.xz diff --git a/buildroot/package/wayland/wayland.mk b/buildroot/package/wayland/wayland.mk new file mode 100644 index 0000000..10710a8 --- /dev/null +++ b/buildroot/package/wayland/wayland.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# wayland +# +################################################################################ + +WAYLAND_VERSION = 1.14.0 +WAYLAND_SITE = http://wayland.freedesktop.org/releases +WAYLAND_SOURCE = wayland-$(WAYLAND_VERSION).tar.xz +WAYLAND_LICENSE = MIT +WAYLAND_LICENSE_FILES = COPYING +WAYLAND_INSTALL_STAGING = YES +WAYLAND_DEPENDENCIES = host-pkgconf host-wayland expat libffi libxml2 +HOST_WAYLAND_DEPENDENCIES = host-pkgconf host-expat host-libffi host-libxml2 + +# 0002-configure-add-option-to-disable-tests.patch +WAYLAND_AUTORECONF = YES + +# wayland-scanner is only needed for building, not on the target +WAYLAND_CONF_OPTS = --with-host-scanner --disable-tests +HOST_WAYLAND_CONF_OPTS = --disable-tests + +# Remove the DTD from the target, it's not needed at runtime +define WAYLAND_TARGET_CLEANUP + rm -rf $(TARGET_DIR)/usr/share/wayland +endef +WAYLAND_POST_INSTALL_TARGET_HOOKS += WAYLAND_TARGET_CLEANUP + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/waylandpp/Config.in b/buildroot/package/waylandpp/Config.in new file mode 100644 index 0000000..3d7362b --- /dev/null +++ b/buildroot/package/waylandpp/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_WAYLANDPP + bool "waylandpp" + depends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND + depends on BR2_HOST_GCC_AT_LEAST_4_9 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_PACKAGE_WAYLAND + help + Wayland C++ bindings + + https://github.com/NilsBrause/waylandpp + +comment "waylandpp needs an OpenGL-EGL/wayland backend, a toolchain w/ gcc >= 4.9, host gcc >= 4.9" + depends on BR2_PACKAGE_WAYLAND + depends on !BR2_PACKAGE_HAS_LIBEGL_WAYLAND || \ + !BR2_HOST_GCC_AT_LEAST_4_9 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 diff --git a/buildroot/package/waylandpp/waylandpp.hash b/buildroot/package/waylandpp/waylandpp.hash new file mode 100644 index 0000000..3a580bf --- /dev/null +++ b/buildroot/package/waylandpp/waylandpp.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 e0c9012f3a5fb69922d5ecabdfbef739f1e0db3e68048b3f63537468ad5c4acd waylandpp-0.2.2.tar.gz +sha256 49aa6d728fd13226952c9e3a5a9cae46379b2a501010064760172b5ce7cd94bb LICENSE +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 scanner/gpl-3.0.txt diff --git a/buildroot/package/waylandpp/waylandpp.mk b/buildroot/package/waylandpp/waylandpp.mk new file mode 100644 index 0000000..5c9c96b --- /dev/null +++ b/buildroot/package/waylandpp/waylandpp.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# waylandpp +# +################################################################################ + +WAYLANDPP_VERSION = 0.2.2 +WAYLANDPP_SITE = $(call github,NilsBrause,waylandpp,$(WAYLANDPP_VERSION)) +WAYLANDPP_LICENSE = MIT, GPL-3.0+ (wayland_scanner) +WAYLANDPP_LICENSE_FILES = LICENSE scanner/gpl-3.0.txt +WAYLANDPP_INSTALL_STAGING = YES +HOST_WAYLANDPP_DEPENDENCIES = host-pkgconf host-wayland +WAYLANDPP_DEPENDENCIES = libegl host-pkgconf wayland host-waylandpp + +# host variant of wayland-scanner++ is needed for building the target +# package +HOST_WAYLANDPP_CONF_OPTS = \ + -DBUILD_LIBRARIES=OFF \ + -DBUILD_SCANNER=ON + +WAYLANDPP_CONF_OPTS = \ + -DBUILD_LIBRARIES=ON \ + -DBUILD_SCANNER=OFF \ + -DWAYLAND_SCANNERPP=$(HOST_DIR)/bin/wayland-scanner++ + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/buildroot/package/webkitgtk/Config.in b/buildroot/package/webkitgtk/Config.in new file mode 100644 index 0000000..31794ed --- /dev/null +++ b/buildroot/package/webkitgtk/Config.in @@ -0,0 +1,93 @@ +config BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS + bool + # ARM needs BLX, so v5t+, BE completely untested so disabled + default y if BR2_arm && !BR2_ARM_CPU_ARMV4 + default y if BR2_i386 || BR2_x86_64 + # Disabled on MIPS big endian due to sigbus + default y if BR2_mipsel || BR2_mips64el + # Disabled on PowerPC pending runtime testing + # Disabled on SuperH because of segfault + depends on BR2_USE_MMU # libglib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt + +comment "webkitgtk needs libgtk3 and a glibc toolchain w/ C++, gcc >= 5, host gcc >= 4.8" + depends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS + depends on !BR2_PACKAGE_LIBGTK3 || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_5 + depends on BR2_USE_MMU + +config BR2_PACKAGE_WEBKITGTK + bool "webkitgtk" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_HOST_GCC_AT_LEAST_4_8 # icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_PACKAGE_LIBGTK3 + depends on BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_ENCHANT + select BR2_PACKAGE_HARFBUZZ + select BR2_PACKAGE_ICU + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBGCRYPT + select BR2_PACKAGE_LIBSECRET + select BR2_PACKAGE_LIBSOUP + select BR2_PACKAGE_LIBTASN1 + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_WEBP + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXRENDER if BR2_PACKAGE_LIBGTK3_X11 + select BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_LIBGTK3_X11 + help + WebKit is an open source, standards compliant web browser + engine. + + http://www.webkitgtk.org/ + +if BR2_PACKAGE_WEBKITGTK + +config BR2_PACKAGE_WEBKITGTK_HTTPS + bool "HTTPS support" + depends on !BR2_STATIC_LIBS # gnutls -> libsoup + select BR2_PACKAGE_CA_CERTIFICATES # runtime + select BR2_PACKAGE_LIBSOUP_SSL + help + Enable HTTPS protocol support. + +comment "webkitgtk https support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_WEBKITGTK_MULTIMEDIA + bool "multimedia support" + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_PLAYBACK + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME + select BR2_PACKAGE_GST1_PLUGINS_GOOD + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ISOMP4 + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP + select BR2_PACKAGE_GST1_LIBAV + help + This option pulls in all of the required dependencies + to enable multimedia (video/audio) support. + +config BR2_PACKAGE_WEBKITGTK_WEBDRIVER + bool "WebDriver support" + help + Enable support for WebDriver. This will build and install the + WebKitWebDriver program in the target. + +endif diff --git a/buildroot/package/webkitgtk/webkitgtk.hash b/buildroot/package/webkitgtk/webkitgtk.hash new file mode 100644 index 0000000..dd2b28d --- /dev/null +++ b/buildroot/package/webkitgtk/webkitgtk.hash @@ -0,0 +1,8 @@ +# From https://webkitgtk.org/releases/webkitgtk-2.18.6.tar.xz.sums +md5 c1a548595135ee75ad3bf2e18ac83112 webkitgtk-2.18.6.tar.xz +sha1 fb0daa85142cfe8822de518dfaa7bd5c3cdd6c23 webkitgtk-2.18.6.tar.xz +sha256 93912cc2f40f12e452be1ca4babdbdaac0ec4f828d441257a6b06c2963bbac3c webkitgtk-2.18.6.tar.xz + +# Hashes for license files: +sha256 0b5d3a7cc325942567373b0ecd757d07c132e0ebd7c97bfc63f7e1a76094edb4 Source/WebCore/LICENSE-APPLE +sha256 f2b3bd09663381deb99721109d22b47af1213bb43007a8b56a06c6375c8050ce Source/WebCore/LICENSE-LGPL-2.1 diff --git a/buildroot/package/webkitgtk/webkitgtk.mk b/buildroot/package/webkitgtk/webkitgtk.mk new file mode 100644 index 0000000..eb39664 --- /dev/null +++ b/buildroot/package/webkitgtk/webkitgtk.mk @@ -0,0 +1,99 @@ +################################################################################ +# +# webkitgtk +# +################################################################################ + +WEBKITGTK_VERSION = 2.18.6 +WEBKITGTK_SITE = http://www.webkitgtk.org/releases +WEBKITGTK_SOURCE = webkitgtk-$(WEBKITGTK_VERSION).tar.xz +WEBKITGTK_INSTALL_STAGING = YES +WEBKITGTK_LICENSE = LGPL-2.1+, BSD-2-Clause +WEBKITGTK_LICENSE_FILES = \ + Source/WebCore/LICENSE-APPLE \ + Source/WebCore/LICENSE-LGPL-2.1 +WEBKITGTK_DEPENDENCIES = host-ruby host-flex host-bison host-gperf \ + enchant harfbuzz icu jpeg libgcrypt libgtk3 libsecret libsoup \ + libtasn1 libxml2 libxslt sqlite webp +WEBKITGTK_CONF_OPTS = \ + -DENABLE_API_TESTS=OFF \ + -DENABLE_GEOLOCATION=OFF \ + -DENABLE_GTKDOC=OFF \ + -DENABLE_INTROSPECTION=OFF \ + -DENABLE_MINIBROWSER=ON \ + -DENABLE_SPELLCHECK=ON \ + -DPORT=GTK \ + -DUSE_LIBNOTIFY=OFF \ + -DUSE_LIBHYPHEN=OFF + +# ARM needs NEON for JIT +# i386 & x86_64 don't seem to have any special requirements +ifeq ($(BR2_ARM_CPU_HAS_NEON)$(BR2_i386)$(BR2_x86_64),y) +WEBKITGTK_CONF_OPTS += -DENABLE_JIT=ON +else +WEBKITGTK_CONF_OPTS += -DENABLE_JIT=OFF +endif + +ifeq ($(BR2_PACKAGE_WEBKITGTK_MULTIMEDIA),y) +WEBKITGTK_CONF_OPTS += \ + -DENABLE_VIDEO=ON \ + -DENABLE_WEB_AUDIO=ON +WEBKITGTK_DEPENDENCIES += gstreamer1 gst1-libav gst1-plugins-base gst1-plugins-good +else +# ENABLE_MEDIA_STREAM has to be explicitly disabled because there is a missing +# feature dependency in the WebKitGTK+ CMake files. This can be removed once +# https://bugs.webkit.org/show_bug.cgi?id=174940 makes it into a release. +WEBKITGTK_CONF_OPTS += \ + -DENABLE_VIDEO=OFF \ + -DENABLE_WEB_AUDIO=OFF \ + -DENABLE_MEDIA_STREAM=OFF +endif + +ifeq ($(BR2_PACKAGE_WEBKITGTK_WEBDRIVER),y) +WEBKITGTK_CONF_OPTS += -DENABLE_WEBDRIVER=ON +else +WEBKITGTK_CONF_OPTS += -DENABLE_WEBDRIVER=OFF +endif + +# Only one target platform can be built, assume X11 > Wayland + +# GTK3-X11 target gives OpenGL from newer libgtk3 versions +# Consider this better than EGL + maybe GLESv2 since both can't be built +# 2D CANVAS acceleration requires OpenGL proper with cairo-gl +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +WEBKITGTK_CONF_OPTS += \ + -DENABLE_ACCELERATED_2D_CANVAS=ON \ + -DENABLE_GLES2=OFF \ + -DENABLE_OPENGL=ON \ + -DENABLE_X11_TARGET=ON +WEBKITGTK_DEPENDENCIES += libgl \ + xlib_libXcomposite xlib_libXdamage xlib_libXrender xlib_libXt +# It can use libgtk2 for npapi plugins +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +WEBKITGTK_CONF_OPTS += -DENABLE_PLUGIN_PROCESS_GTK2=ON +WEBKITGTK_DEPENDENCIES += libgtk2 +else +WEBKITGTK_CONF_OPTS += -DENABLE_PLUGIN_PROCESS_GTK2=OFF +endif +else # !X11 +# GTK3-BROADWAY/WAYLAND needs at least EGL +WEBKITGTK_DEPENDENCIES += libegl +# GLESv2 support is optional though +ifeq ($(BR2_PACKAGE_HAS_LIBGLES),y) +WEBKITGTK_CONF_OPTS += \ + -DENABLE_GLES2=ON \ + -DENABLE_OPENGL=ON +WEBKITGTK_DEPENDENCIES += libgles +else +# Disable general OpenGL (shading) if there's no GLESv2 +WEBKITGTK_CONF_OPTS += \ + -DENABLE_GLES2=OFF \ + -DENABLE_OPENGL=OFF +endif +# We must explicitly state the wayland target +ifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y) +WEBKITGTK_CONF_OPTS += -DENABLE_WAYLAND_TARGET=ON +endif +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/webp/Config.in b/buildroot/package/webp/Config.in new file mode 100644 index 0000000..e8263a9 --- /dev/null +++ b/buildroot/package/webp/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_WEBP + bool "webp" + help + WebP is a new image format that provides lossless and lossy + compression for images on the web + + https://developers.google.com/speed/webp/ + +if BR2_PACKAGE_WEBP + +config BR2_PACKAGE_WEBP_DEMUX + bool "webpdemux" + help + Demux is a part of WebPMux for extraction and manipulation + of an extended format WebP file, which can have features + like color profile, metadata and animation. + +config BR2_PACKAGE_WEBP_MUX + bool "webpmux" + help + Mux is a part of WebPMux for creation and manipulation + of an extended format WebP file, which can have features + like color profile, metadata and animation. + +endif diff --git a/buildroot/package/webp/webp.hash b/buildroot/package/webp/webp.hash new file mode 100644 index 0000000..ffb63b8 --- /dev/null +++ b/buildroot/package/webp/webp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 06503c782d9f151baa325591c3579c68ed700ffc62d4f5a32feead0ff017d8ab libwebp-0.6.1.tar.gz +sha256 5aec868f669e384a22372a4e8a1a6cd7d44c64cd451f960ca69cc170d1e13acf COPYING diff --git a/buildroot/package/webp/webp.mk b/buildroot/package/webp/webp.mk new file mode 100644 index 0000000..f5ca342 --- /dev/null +++ b/buildroot/package/webp/webp.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# webp +# +################################################################################ + +WEBP_VERSION = 0.6.1 +WEBP_SOURCE = libwebp-$(WEBP_VERSION).tar.gz +WEBP_SITE = http://downloads.webmproject.org/releases/webp +WEBP_LICENSE = BSD-3-Clause +WEBP_LICENSE_FILES = COPYING +WEBP_INSTALL_STAGING = YES + +WEBP_CONF_OPTS += \ + --with-jpegincludedir=$(STAGING_DIR)/usr/include \ + --with-jpeglibdir=$(STAGING_DIR)/usr/lib \ + --with-tiffincludedir=$(STAGING_DIR)/usr/include \ + --with-tifflibdir=$(STAGING_DIR)/usr/lib + +ifeq ($(BR2_PACKAGE_WEBP_DEMUX),y) +WEBP_CONF_OPTS += --enable-libwebpdemux +else +WEBP_CONF_OPTS += --disable-libwebpdemux +endif + +ifeq ($(BR2_PACKAGE_WEBP_MUX),y) +WEBP_CONF_OPTS += --enable-libwebpmux +else +WEBP_CONF_OPTS += --disable-libwebpmux +endif + +ifeq ($(BR2_PACKAGE_GIFLIB),y) +WEBP_DEPENDENCIES += giflib +WEBP_CONF_OPTS += --enable-gif +else +WEBP_CONF_OPTS += --disable-gif +endif + +ifeq ($(BR2_PACKAGE_LIBFREEGLUT),y) +WEBP_DEPENDENCIES += libfreeglut +WEBP_CONF_OPTS += --enable-gl +else +WEBP_CONF_OPTS += --disable-gl +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +WEBP_DEPENDENCIES += libpng +WEBP_CONF_ENV += ac_cv_path_LIBPNG_CONFIG=$(STAGING_DIR)/usr/bin/libpng-config +else +WEBP_CONF_ENV += ac_cv_path_LIBPNG_CONFIG=/bin/false +endif + +WEBP_DEPENDENCIES += $(if $(BR2_PACKAGE_JPEG),jpeg) +WEBP_DEPENDENCIES += $(if $(BR2_PACKAGE_TIFF),tiff) + +$(eval $(autotools-package)) diff --git a/buildroot/package/webrtc-audio-processing/0001-configure.ac-fix-architecture-detection.patch b/buildroot/package/webrtc-audio-processing/0001-configure.ac-fix-architecture-detection.patch new file mode 100644 index 0000000..d0ea4bd --- /dev/null +++ b/buildroot/package/webrtc-audio-processing/0001-configure.ac-fix-architecture-detection.patch @@ -0,0 +1,84 @@ +From 233413841882608c6d5b98b6ce89fcb8a292db82 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 6 Aug 2016 10:22:34 +0200 +Subject: [PATCH] configure.ac: fix architecture detection + +The current architecture detection, based on the "host_cpu" part of the +tuple does not work properly for a number of reason: + + - The code assumes that if host_cpu starts with "arm" then ARM + instructions are available, which is incorrect. Indeed, Cortex-M + platforms can run Linux, they are ARM platforms (so host_cpu = arm), + but they don't support ARM instructions: they support only the + Thumb-2 instruction set. + + - The armv7 case is also not very useful, as it is not standard at all + to pass armv7 as host_cpu even if the host system is actually ARMv7 + based. + + - For the same reason, the armv8 case is not very useful: armv8 is + never used as the host_cpu part of a tuple. + +So, this commit moves away from a host_cpu based logic, and instead +tests using AC_CHECK_DECLS() the built-in definitions of the compiler: + + - If we have __ARM_ARCH_ISA_ARM defined, then it's an ARM processor + that supports the ARM instruction set (this allows to exclude Thumb-2 + only processors). + + - If we have __ARM_ARCH_7A__, then we have an ARMv7-A processor, and + we can enable the corresponding optimizations + + - Same for __i386__ and __x86_64__. + +Signed-off-by: Thomas Petazzoni +--- +Submitted upstream, under a slightly different form so that it applies +on master: + + https://lists.freedesktop.org/archives/pulseaudio-discuss/2016-August/026600.html +--- + configure.ac | 27 +++++++++------------------ + 1 file changed, 9 insertions(+), 18 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 6f9553b..836c6ad 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -55,24 +55,15 @@ AS_CASE(["${host}"], + ) + AC_SUBST(PLATFORM_CFLAGS) + +-AS_CASE(["${host_cpu}"], +- [i?86|x86_64], +- [ +- HAVE_X86=1 +- ], +- [armv7*|armv8*], +- [ +- HAVE_ARM=1 +- HAVE_ARMV7=1 +- ARCH_CFLAGS="-DWEBRTC_ARCH_ARM -DWEBRTC_ARCH_ARM_V7" +- ], +- [arm*], +- [ +- HAVE_ARM=1 +- ARCH_CFLAGS="-DWEBRTC_ARCH_ARM" +- ] +- # FIXME: Add MIPS support, see webrtc/BUILD.gn for defines +-) ++# Testing __ARM_ARCH_ISA_ARM since the code contains ARM instructions, ++# which don't work on Thumb-2 only platforms (ARMv7-M). ++AC_CHECK_DECLS([__ARM_ARCH_ISA_ARM], ++ [HAVE_ARM=1; ARCH_CFLAGS="${ARCH_CFLAGS} -DWEBRTC_ARCH_ARM"]) ++AC_CHECK_DECLS([__ARM_ARCH_7A__], ++ [HAVE_ARMV7=1; ARCH_CFLAGS="${ARCH_CFLAGS} -DWEBRTC_ARCH_ARM_V7"]) ++AC_CHECK_DECLS([__i386__], [HAVE_X86=1]) ++AC_CHECK_DECLS([__x86_64__], [HAVE_X86=1]) ++ + AM_CONDITIONAL(HAVE_X86, [test "x${HAVE_X86}" = "x1"]) + AM_CONDITIONAL(HAVE_ARM, [test "x${HAVE_ARM}" = "x1"]) + AM_CONDITIONAL(HAVE_ARMV7, [test "x${HAVE_ARMV7}" = "x1"]) +-- +2.7.4 + diff --git a/buildroot/package/webrtc-audio-processing/0002-Proper-detection-of-cxxabi.h-and-execinfo.h.patch b/buildroot/package/webrtc-audio-processing/0002-Proper-detection-of-cxxabi.h-and-execinfo.h.patch new file mode 100644 index 0000000..a0332db --- /dev/null +++ b/buildroot/package/webrtc-audio-processing/0002-Proper-detection-of-cxxabi.h-and-execinfo.h.patch @@ -0,0 +1,63 @@ +From b7a166acaddc4c78afa2b653e25114d9114699f3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 6 Aug 2016 11:24:50 +0200 +Subject: [PATCH] Proper detection of cxxabi.h and execinfo.h + +The current code in webrtc/base/checks.cc assumes that if __GLIBCXX__ is +defined and __UCLIBC__ is not defined, then both cxxabi.h and execinfo.h +will be available. + +Unfortunately, this is not correct with the musl C library: + + - It defines __GLIBCXX__ + - It does not define __UCLIBC__ (it's not uClibc after all!) + - But it also doesn't provide execinfo.h + +Therefore, in order to make things work properly, we switch to proper +autoconf checks for cxxabi.h and execinfo.h, and only use the backtrace +functionality if both are provided. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 2 ++ + webrtc/base/checks.cc | 4 ++-- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index acbb3e2..ff4c752 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -45,6 +45,8 @@ AC_SUBST(GNUSTL_CFLAGS) + # Borrowed from gst-plugins-bad + AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-]) + ++AC_CHECK_HEADERS([cxxabi.h execinfo.h]) ++ + # Based on gst-plugins-bad configure.ac and defines in + # /build/config/BUILDCONFIG.gn and + # webrtc/BUILD.gn +diff --git a/webrtc/base/checks.cc b/webrtc/base/checks.cc +index 49a31f2..05d23a6 100644 +--- a/webrtc/base/checks.cc ++++ b/webrtc/base/checks.cc +@@ -16,7 +16,7 @@ + #include + #include + +-#if defined(__GLIBCXX__) && !defined(__UCLIBC__) ++#if defined(HAVE_CXX_ABI_H) && defined(HAVE_EXECINFO_H) + #include + #include + #endif +@@ -55,7 +55,7 @@ void PrintError(const char* format, ...) { + // to get usable symbols on Linux. This is copied from V8. Chromium has a more + // advanced stace trace system; also more difficult to copy. + void DumpBacktrace() { +-#if defined(__GLIBCXX__) && !defined(__UCLIBC__) ++#if defined(HAVE_CXX_ABI_H) && defined(HAVE_EXECINFO_H) + void* trace[100]; + int size = backtrace(trace, sizeof(trace) / sizeof(*trace)); + char** symbols = backtrace_symbols(trace, size); +-- +2.7.4 + diff --git a/buildroot/package/webrtc-audio-processing/Config.in b/buildroot/package/webrtc-audio-processing/Config.in new file mode 100644 index 0000000..02715b0 --- /dev/null +++ b/buildroot/package/webrtc-audio-processing/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_i386 || BR2_x86_64 + +config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING + bool "webrtc-audio-processing" + depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + # pthread_condattr_setclock + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + help + AudioProcessing library based on Google's implementation of + WebRTC. + + http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/ + +comment "webrtc-audio-processing needs a toolchain w/ C++, NPTL, gcc >= 4.8" + depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 diff --git a/buildroot/package/webrtc-audio-processing/webrtc-audio-processing.hash b/buildroot/package/webrtc-audio-processing/webrtc-audio-processing.hash new file mode 100644 index 0000000..fe07119 --- /dev/null +++ b/buildroot/package/webrtc-audio-processing/webrtc-audio-processing.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 756e291d4f557d88cd50c4fe3b8454ec238362d22cedb3e6173240d90f0a80fa webrtc-audio-processing-0.3.tar.xz diff --git a/buildroot/package/webrtc-audio-processing/webrtc-audio-processing.mk b/buildroot/package/webrtc-audio-processing/webrtc-audio-processing.mk new file mode 100644 index 0000000..668e20d --- /dev/null +++ b/buildroot/package/webrtc-audio-processing/webrtc-audio-processing.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# webrtc-audio-processing +# +################################################################################ + +WEBRTC_AUDIO_PROCESSING_VERSION = 0.3 +WEBRTC_AUDIO_PROCESSING_SOURCE = webrtc-audio-processing-$(WEBRTC_AUDIO_PROCESSING_VERSION).tar.xz +WEBRTC_AUDIO_PROCESSING_SITE = http://freedesktop.org/software/pulseaudio/webrtc-audio-processing +WEBRTC_AUDIO_PROCESSING_INSTALL_STAGING = YES +WEBRTC_AUDIO_PROCESSING_LICENSE = BSD-3-Clause +WEBRTC_AUDIO_PROCESSING_LICENSE_FILES = COPYING +# 0001-configure.ac-fix-architecture-detection.patch +# 0002-Proper-detection-of-cxxabi.h-and-execinfo.h.patch +WEBRTC_AUDIO_PROCESSING_AUTORECONF = YES + +ifeq ($(BR2_SOFT_FLOAT),y) +WEBRTC_AUDIO_PROCESSING_CONF_OPTS += --with-ns-mode=fixed +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/weston/0001-os-compatibility-define-CLOCK_BOOTTIME-when-not-avai.patch b/buildroot/package/weston/0001-os-compatibility-define-CLOCK_BOOTTIME-when-not-avai.patch new file mode 100644 index 0000000..a7f2a34 --- /dev/null +++ b/buildroot/package/weston/0001-os-compatibility-define-CLOCK_BOOTTIME-when-not-avai.patch @@ -0,0 +1,41 @@ +From 66b71951f8ce66f02040f8814e1d89db34c34a87 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 22 Feb 2015 12:36:00 +0100 +Subject: [PATCH] os-compatibility: define CLOCK_BOOTTIME when not available + +CLOCK_BOOTTIME is supposed to be provided by the C library headers, +but uClibc 0.9.33.2 does not provide it. Instead of depending on an +uClibc patch, let's make Weston define it to the right value when not +already defined by the C library. + +Signed-off-by: Thomas Petazzoni +--- + shared/os-compatibility.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/shared/os-compatibility.h b/shared/os-compatibility.h +index 172bb7e..e369899 100644 +--- a/shared/os-compatibility.h ++++ b/shared/os-compatibility.h +@@ -26,6 +26,7 @@ + #include "config.h" + + #include ++#include + + #ifdef HAVE_EXECINFO_H + #include +@@ -37,6 +38,10 @@ backtrace(void **buffer, int size) + } + #endif + ++#ifndef CLOCK_BOOTTIME ++#define CLOCK_BOOTTIME 7 ++#endif ++ + int + os_socketpair_cloexec(int domain, int type, int protocol, int *sv); + +-- +2.1.0 + diff --git a/buildroot/package/weston/0002-shared-struct-timespec-is-in-time.h.patch b/buildroot/package/weston/0002-shared-struct-timespec-is-in-time.h.patch new file mode 100644 index 0000000..28476d3 --- /dev/null +++ b/buildroot/package/weston/0002-shared-struct-timespec-is-in-time.h.patch @@ -0,0 +1,44 @@ +From 47535b50c4178d62b848b3e9d3524e4f6282c815 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 1 Oct 2017 14:17:21 +0200 +Subject: [PATCH] shared: struct timespec is in time.h +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On the musl C library, tests/timespec-text.c does not build, with the +following error: + + In file included from tests/timespec-test.c:36:0: + ./shared/timespec-util.h:41:21: warning: ‘struct timespec’ declared + inside parameter list will not be visible outside of this definition + or declaration + timespec_sub(struct timespec *r, + ^~~~~~~~ + [...] + +Indeed, struct timespec is defined in time.h, so we must include it. + +Signed-off-by: "Yann E. MORIN" +--- +Upstream status: submitted + https://lists.freedesktop.org/archives/wayland-devel/2017-October/035306.html +--- + shared/timespec-util.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/shared/timespec-util.h b/shared/timespec-util.h +index 576b3e8f..34a120ae 100644 +--- a/shared/timespec-util.h ++++ b/shared/timespec-util.h +@@ -28,6 +28,7 @@ + + #include + #include ++#include + + #define NSEC_PER_SEC 1000000000 + +-- +2.11.0 + diff --git a/buildroot/package/weston/Config.in b/buildroot/package/weston/Config.in new file mode 100644 index 0000000..f874b0c --- /dev/null +++ b/buildroot/package/weston/Config.in @@ -0,0 +1,106 @@ +comment "weston needs udev and a toolchain w/ locale, threads, dynamic library, headers >= 3.0" + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 || BR2_STATIC_LIBS || \ + !BR2_ENABLE_LOCALE + +config BR2_PACKAGE_WESTON + bool "weston" + depends on BR2_ENABLE_LOCALE # libinput + depends on BR2_PACKAGE_HAS_UDEV + depends on !BR2_STATIC_LIBS # wayland + depends on BR2_TOOLCHAIN_HAS_THREADS # wayland + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + select BR2_PACKAGE_WAYLAND + select BR2_PACKAGE_WAYLAND_PROTOCOLS + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_PNG + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBINPUT + select BR2_PACKAGE_LIBDRM + # Runtime dependency + select BR2_PACKAGE_XKEYBOARD_CONFIG + # Make sure at least one compositor is selected. + select BR2_PACKAGE_WESTON_FBDEV if !BR2_PACKAGE_WESTON_HAS_COMPOSITOR + help + Weston is the reference implementation of a Wayland + compositor, and a useful compositor in its own right. + Weston has various backends that lets it run on Linux kernel + modesetting and evdev input as well as under X11. + + http://wayland.freedesktop.org/ + +if BR2_PACKAGE_WESTON + +# Helper to make sure at least one compositor is selected. +config BR2_PACKAGE_WESTON_HAS_COMPOSITOR + bool + +config BR2_PACKAGE_WESTON_DRM + bool "DRM compositor" + depends on BR2_PACKAGE_MESA3D_OPENGL_EGL + select BR2_PACKAGE_WESTON_HAS_COMPOSITOR + +# Uses libgbm from mesa3d +comment "DRM compositor needs an OpenGL EGL backend provided by mesa3d" + depends on !BR2_PACKAGE_MESA3D_OPENGL_EGL + +config BR2_PACKAGE_WESTON_FBDEV + bool "fbdev compositor" + +# FreeRDP needs threads and !static, already the case for weston +config BR2_PACKAGE_WESTON_RDP + bool "RDP compositor" + depends on BR2_USE_MMU # freerdp, libglib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_WCHAR # freerdp + depends on BR2_INSTALL_LIBSTDCPP # freerdp + select BR2_PACKAGE_FREERDP + select BR2_PACKAGE_WESTON_HAS_COMPOSITOR + help + This enables the RDP backend, which allows accessing weston + through the network with any RDP-compliant client. + + Please note that one must pass those options to weston for RDP + to be functional: + --rdp-tls-cert=/path/to/server.crt + --rdp-tls-key=/path/to/server.key + + By default, Buildroot installs such files in + /etc/freerdp/server/ so you may want to change them in a + post-build script or a rootfs overlay. + +comment "RDP compositor needs a toolchain w/ wchar, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_WESTON_X11 + bool "X11 compositor" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_WESTON_HAS_COMPOSITOR + +comment "X11 compositor needs X.org enabled" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_WESTON_XWAYLAND + bool "XWayland support" + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_LIBEPOXY + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXCURSOR + +comment "XWayland support needs libepoxy and X.org enabled" + depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_LIBEPOXY + +config BR2_PACKAGE_WESTON_DEMO_CLIENTS + bool "demo clients" + help + This enables the installation of Weston's demo clients. + +endif diff --git a/buildroot/package/weston/weston.hash b/buildroot/package/weston/weston.hash new file mode 100644 index 0000000..82c97b8 --- /dev/null +++ b/buildroot/package/weston/weston.hash @@ -0,0 +1,5 @@ +# From https://lists.freedesktop.org/archives/wayland-devel/2017-August/034749.html +md5 9c42a4c51a1b9f35d040fa9d45ada36d weston-3.0.0.tar.xz +sha1 0a75c2ee10f2453a073411157bb6ed029080669f weston-3.0.0.tar.xz +sha256 cde1d55e8dd70c3cbb3d1ec72f60e60000041579caa1d6a262bd9c35e93723a5 weston-3.0.0.tar.xz +sha512 b824c39f2a884f6d50d607613f447090621f684c96f7d905f25f6e500dabd03ecb2b1cd1030babc193c3417223cb220103abb792437e1a5ead7229a76b5c7a58 weston-3.0.0.tar.xz diff --git a/buildroot/package/weston/weston.mk b/buildroot/package/weston/weston.mk new file mode 100644 index 0000000..3d17a61 --- /dev/null +++ b/buildroot/package/weston/weston.mk @@ -0,0 +1,143 @@ +################################################################################ +# +# weston +# +################################################################################ + +WESTON_VERSION = 3.0.0 +WESTON_SITE = http://wayland.freedesktop.org/releases +WESTON_SOURCE = weston-$(WESTON_VERSION).tar.xz +WESTON_LICENSE = MIT +WESTON_LICENSE_FILES = COPYING + +WESTON_DEPENDENCIES = host-pkgconf wayland wayland-protocols \ + libxkbcommon pixman libpng jpeg udev cairo libinput libdrm \ + $(if $(BR2_PACKAGE_WEBP),webp) + +WESTON_CONF_OPTS = \ + --with-dtddir=$(STAGING_DIR)/usr/share/wayland \ + --disable-headless-compositor \ + --disable-colord \ + --disable-devdocs \ + --disable-setuid-install + +WESTON_MAKE_OPTS = \ + WAYLAND_PROTOCOLS_DATADIR=$(STAGING_DIR)/usr/share/wayland-protocols + +# Uses VIDIOC_EXPBUF, only available from 3.8+ +ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8),) +WESTON_CONF_OPTS += --disable-simple-dmabuf-v4l-client +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +WESTON_CONF_OPTS += --enable-dbus +WESTON_DEPENDENCIES += dbus +else +WESTON_CONF_OPTS += --disable-dbus +endif + +# weston-launch must be u+s root in order to work properly +ifeq ($(BR2_PACKAGE_LINUX_PAM),y) +define WESTON_PERMISSIONS + /usr/bin/weston-launch f 4755 0 0 - - - - - +endef +define WESTON_USERS + - - weston-launch -1 - - - - Weston launcher group +endef +WESTON_CONF_OPTS += --enable-weston-launch +WESTON_DEPENDENCIES += linux-pam +else +WESTON_CONF_OPTS += --disable-weston-launch +endif + +# Needs wayland-egl, which normally only mesa provides +ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL)$(BR2_PACKAGE_MESA3D_OPENGL_ES),yy) +WESTON_CONF_OPTS += --enable-egl +WESTON_DEPENDENCIES += libegl +else +WESTON_CONF_OPTS += \ + --disable-egl \ + --disable-simple-dmabuf-drm-client \ + --disable-simple-egl-clients +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +WESTON_DEPENDENCIES += libunwind +else +WESTON_CONF_OPTS += --disable-libunwind +endif + +ifeq ($(BR2_PACKAGE_WESTON_RDP),y) +WESTON_DEPENDENCIES += freerdp +WESTON_CONF_OPTS += --enable-rdp-compositor +else +WESTON_CONF_OPTS += --disable-rdp-compositor +endif + +ifeq ($(BR2_PACKAGE_WESTON_FBDEV),y) +WESTON_CONF_OPTS += \ + --enable-fbdev-compositor \ + WESTON_NATIVE_BACKEND=fbdev-backend.so +else +WESTON_CONF_OPTS += --disable-fbdev-compositor +endif + +ifeq ($(BR2_PACKAGE_WESTON_DRM),y) +WESTON_CONF_OPTS += \ + --enable-drm-compositor \ + WESTON_NATIVE_BACKEND=drm-backend.so +else +WESTON_CONF_OPTS += --disable-drm-compositor +endif + +ifeq ($(BR2_PACKAGE_WESTON_X11),y) +WESTON_CONF_OPTS += \ + --enable-x11-compositor \ + WESTON_NATIVE_BACKEND=x11-backend.so +WESTON_DEPENDENCIES += libxcb xlib_libX11 +else +WESTON_CONF_OPTS += --disable-x11-compositor +endif + +ifeq ($(BR2_PACKAGE_WESTON_XWAYLAND),y) +WESTON_CONF_OPTS += --enable-xwayland +WESTON_DEPENDENCIES += cairo libepoxy libxcb xlib_libX11 xlib_libXcursor +else +WESTON_CONF_OPTS += --disable-xwayland +endif + +ifeq ($(BR2_PACKAGE_LIBVA),y) +WESTON_CONF_OPTS += --enable-vaapi-recorder +WESTON_DEPENDENCIES += libva +else +WESTON_CONF_OPTS += --disable-vaapi-recorder +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +WESTON_CONF_OPTS += --enable-lcms +WESTON_DEPENDENCIES += lcms2 +else +WESTON_CONF_OPTS += --disable-lcms +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +WESTON_CONF_OPTS += --enable-systemd-login --enable-systemd-notify +WESTON_DEPENDENCIES += systemd +else +WESTON_CONF_OPTS += --disable-systemd-login --disable-systemd-notify +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +WESTON_CONF_OPTS += --enable-junit-xml +WESTON_DEPENDENCIES += libxml2 +else +WESTON_CONF_OPTS += --disable-junit-xml +endif + +ifeq ($(BR2_PACKAGE_WESTON_DEMO_CLIENTS),y) +WESTON_CONF_OPTS += --enable-demo-clients-install +else +WESTON_CONF_OPTS += --disable-demo-clients-install +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/wf111/Config.in b/buildroot/package/wf111/Config.in new file mode 100644 index 0000000..7b61ea1 --- /dev/null +++ b/buildroot/package/wf111/Config.in @@ -0,0 +1,25 @@ +config BR2_PACKAGE_WF111 + bool "wf111" + depends on BR2_LINUX_KERNEL + depends on BR2_ARM_CPU_ARMV5 || BR2_ARM_CPU_ARMV7A || BR2_i386 + # Binary tools are distributed alongside the driver, and are + # dynamically linked against the glibc. + depends on BR2_TOOLCHAIN_USES_GLIBC + help + Silicon Labs WF111 WiFi driver and utilities. + + Warning: CONFIG_WIRELESS_EXT and CONFIG_WEXT_PRIV must be + selected in the Linux kernel configuration. These are blind + options (i.e. not selectable directly) so they cannot be + enabled by a change in linux/linux.mk. There are two choices + to enable these options: + - By making them non blind, with a "WF111 support" + configuration entry that selects them, for example. + - By enabling another random WiFi driver that select them. + + https://www.silabs.com/products/wireless/wi-fi/wf111-bluegiga-module + +comment "wf111 needs a glibc toolchain" + depends on BR2_LINUX_KERNEL + depends on BR2_ARM_CPU_ARMV5 || BR2_ARM_CPU_ARMV7A || BR2_i386 + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/wf111/wf111.mk b/buildroot/package/wf111/wf111.mk new file mode 100644 index 0000000..7252633 --- /dev/null +++ b/buildroot/package/wf111/wf111.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# wf111 +# +################################################################################ + +WF111_VERSION = 5-2-2-r3 +WF111_SITE = https://www.silabs.com/documents/login/software +WF111_DEPENDENCIES = linux + +ifeq ($(BR2_ARM_CPU_ARMV7A),y) +WF111_SOURCE = wf111-linux-driver-$(WF111_VERSION)-armv7-a.tar.gz +else ifeq ($(BR2_ARM_CPU_ARMV5),y) +WF111_SOURCE = wf111-linux-driver-$(WF111_VERSION)-armv5te.tar.gz +else ifeq ($(BR2_i386),y) +WF111_SOURCE = wf111-linux-driver-$(WF111_VERSION)-x86.tar.gz +endif + +# Due to the stupidity of the package Makefile, we can't invoke +# separately the build step and the install step and get a correct +# behavior. So we do everything in the install step. +define WF111_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PWD=$(@D) \ + $(LINUX_MAKE_FLAGS) KDIR=$(LINUX_DIR) \ + OUTPUT=$(TARGET_DIR) install_static +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/wget/Config.in b/buildroot/package/wget/Config.in new file mode 100644 index 0000000..acb20f8 --- /dev/null +++ b/buildroot/package/wget/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_WGET + bool "wget" + # fork() + depends on BR2_USE_MMU + depends on BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Network utility to retrieve files from http, https and ftp. + + http://www.gnu.org/software/wget/ + +comment "wget needs a toolchain w/ wchar" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/wget/wget.hash b/buildroot/package/wget/wget.hash new file mode 100644 index 0000000..eee4a51 --- /dev/null +++ b/buildroot/package/wget/wget.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +# https://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.lz.sig +sha256 29fbe6f3d5408430c572a63fe32bd43d5860f32691173dfd84edc06869edca75 wget-1.19.5.tar.lz +# Locally calculated +sha256 e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b COPYING diff --git a/buildroot/package/wget/wget.mk b/buildroot/package/wget/wget.mk new file mode 100644 index 0000000..72a73cc --- /dev/null +++ b/buildroot/package/wget/wget.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# wget +# +################################################################################ + +WGET_VERSION = 1.19.5 +WGET_SOURCE = wget-$(WGET_VERSION).tar.lz +WGET_SITE = $(BR2_GNU_MIRROR)/wget +WGET_DEPENDENCIES = host-pkgconf +WGET_LICENSE = GPL-3.0+ +WGET_LICENSE_FILES = COPYING + +# Prefer full-blown wget over busybox +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +WGET_DEPENDENCIES += busybox +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +WGET_CONF_OPTS += --with-ssl=gnutls +WGET_DEPENDENCIES += gnutls +else ifeq ($(BR2_PACKAGE_OPENSSL),y) +WGET_CONF_OPTS += --with-ssl=openssl +WGET_DEPENDENCIES += openssl +else +WGET_CONF_OPTS += --without-ssl +endif + +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y) +WGET_DEPENDENCIES += util-linux +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +WGET_CONF_OPTS += --with-zlib +WGET_DEPENDENCIES += zlib +else +WGET_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/whetstone/Config.in b/buildroot/package/whetstone/Config.in new file mode 100644 index 0000000..7a68160 --- /dev/null +++ b/buildroot/package/whetstone/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_WHETSTONE + bool "whetstone" + help + C Converted Whetstone Double Precision Benchmark + + http://www.netlib.org/benchmark/ diff --git a/buildroot/package/whetstone/whetstone.hash b/buildroot/package/whetstone/whetstone.hash new file mode 100644 index 0000000..db9bbb4 --- /dev/null +++ b/buildroot/package/whetstone/whetstone.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 333e4ceca042c146f63eec605573d16ae8b07166cbc44a17bec1ea97c6f1efbf whetstone.c diff --git a/buildroot/package/whetstone/whetstone.mk b/buildroot/package/whetstone/whetstone.mk new file mode 100644 index 0000000..d9b4563 --- /dev/null +++ b/buildroot/package/whetstone/whetstone.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# whetstone +# +################################################################################ + +WHETSTONE_VERSION = 1.2 +WHETSTONE_SOURCE = whetstone.c +WHETSTONE_SITE = http://www.netlib.org/benchmark + +define WHETSTONE_EXTRACT_CMDS + cp $(DL_DIR)/$($(PKG)_SOURCE) $(@D)/ +endef + +define WHETSTONE_BUILD_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) LDLIBS="-lm" -C $(@D) whetstone +endef + +define WHETSTONE_INSTALL_TARGET_CMDS + $(INSTALL) -D $(@D)/whetstone $(TARGET_DIR)/usr/bin/whetstone +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/which/Config.in b/buildroot/package/which/Config.in new file mode 100644 index 0000000..0dc31b2 --- /dev/null +++ b/buildroot/package/which/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_WHICH + bool "which" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + The standard 'which' utility. + + http://carlowood.github.io/which/index.html diff --git a/buildroot/package/which/which.hash b/buildroot/package/which/which.hash new file mode 100644 index 0000000..fe649ab --- /dev/null +++ b/buildroot/package/which/which.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 f4a245b94124b377d8b49646bf421f9155d36aa7614b6ebf83705d3ffc76eaad which-2.21.tar.gz diff --git a/buildroot/package/which/which.mk b/buildroot/package/which/which.mk new file mode 100644 index 0000000..c96e893 --- /dev/null +++ b/buildroot/package/which/which.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# which +# +################################################################################ + +WHICH_VERSION = 2.21 +WHICH_SITE = $(BR2_GNU_MIRROR)/which +WHICH_LICENSE = GPL-3.0+ +WHICH_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/whois/Config.in b/buildroot/package/whois/Config.in new file mode 100644 index 0000000..d2a0302 --- /dev/null +++ b/buildroot/package/whois/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_WHOIS + bool "whois" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Improved whois client. + + https://github.com/rfc1036/whois diff --git a/buildroot/package/whois/whois.hash b/buildroot/package/whois/whois.hash new file mode 100644 index 0000000..29623b5 --- /dev/null +++ b/buildroot/package/whois/whois.hash @@ -0,0 +1,2 @@ +# From http://snapshot.debian.org/archive/debian/20170727T214450Z/pool/main/w/whois/whois_5.2.17.dsc +sha256 257585678f571e18964667b41dc6543fe9da6123ac95743660c9c3ae1eba9664 whois_5.2.17.tar.xz diff --git a/buildroot/package/whois/whois.mk b/buildroot/package/whois/whois.mk new file mode 100644 index 0000000..22117cf --- /dev/null +++ b/buildroot/package/whois/whois.mk @@ -0,0 +1,48 @@ +################################################################################ +# +# whois +# +################################################################################ + +WHOIS_VERSION = 5.2.17 +WHOIS_SITE = http://snapshot.debian.org/archive/debian/20170727T214450Z/pool/main/w/whois +WHOIS_SOURCE = whois_$(WHOIS_VERSION).tar.xz +# take precedence over busybox implementation +WHOIS_DEPENDENCIES = $(if $(BR2_PACKAGE_BUSYBOX),busybox) $(TARGET_NLS_DEPENDENCIES) +WHOIS_MAKE_ENV = $(TARGET_MAKE_ENV) +WHOIS_MAKE_OPTS = CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + LIBS="$(WHOIS_EXTRA_LIBS)" +WHOIS_LICENSE = GPL-2.0+ +WHOIS_LICENSE_FILES = COPYING +WHOIS_EXTRA_LIBS = $(TARGET_NLS_LIBS) + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +WHOIS_DEPENDENCIES += libiconv +WHOIS_EXTRA_LIBS += -liconv +WHOIS_MAKE_ENV += HAVE_ICONV=1 +endif + +ifeq ($(BR2_PACKAGE_LIBIDN),y) +WHOIS_DEPENDENCIES += libidn +WHOIS_MAKE_ENV += HAVE_LIBIDN=1 +endif + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),y) +WHOIS_BUILD_TARGETS = +WHOIS_INSTALL_TARGETS = install +else +WHOIS_BUILD_TARGETS = Makefile.depend whois mkpasswd +WHOIS_INSTALL_TARGETS = install-whois install-mkpasswd +endif + +define WHOIS_BUILD_CMDS + $(WHOIS_MAKE_ENV) $(MAKE) $(WHOIS_MAKE_OPTS) \ + $(WHOIS_BUILD_TARGETS) -C $(@D) +endef + +define WHOIS_INSTALL_TARGET_CMDS + $(WHOIS_MAKE_ENV) $(MAKE) $(WHOIS_MAKE_OPTS) \ + BASEDIR="$(TARGET_DIR)" $(WHOIS_INSTALL_TARGETS) -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/wilc1000-firmware/Config.in b/buildroot/package/wilc1000-firmware/Config.in new file mode 100644 index 0000000..df8a7a6 --- /dev/null +++ b/buildroot/package/wilc1000-firmware/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_WILC1000_FIRMWARE + bool "wilc1000-firmware" + help + Firmware for Atmel Wilc1000 wireless device + + https://github.com/linux4sc/wireless-firmware.git diff --git a/buildroot/package/wilc1000-firmware/wilc1000-firmware.hash b/buildroot/package/wilc1000-firmware/wilc1000-firmware.hash new file mode 100644 index 0000000..5344efe --- /dev/null +++ b/buildroot/package/wilc1000-firmware/wilc1000-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 a2e7a327dd545ba2051946f7613005cbde88fdd952afb8eecdd1dacda7e767d2 v14.1_Firmware.zip diff --git a/buildroot/package/wilc1000-firmware/wilc1000-firmware.mk b/buildroot/package/wilc1000-firmware/wilc1000-firmware.mk new file mode 100644 index 0000000..5dcf190 --- /dev/null +++ b/buildroot/package/wilc1000-firmware/wilc1000-firmware.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# wilc1000-firmware +# +################################################################################ + +WILC1000_FIRMWARE_VERSION = 14.1 +WILC1000_FIRMWARE_SITE = https://github.com/linux4sc/wireless-firmware/archive +WILC1000_FIRMWARE_SOURCE = v$(WILC1000_FIRMWARE_VERSION)_Firmware.zip + +WILC1000_FIRMWARE_LICENSE = PROPRIETARY + +define WILC1000_FIRMWARE_EXTRACT_CMDS + $(UNZIP) -d $(BUILD_DIR) $(DL_DIR)/$(WILC1000_FIRMWARE_SOURCE) + mv $(BUILD_DIR)/wireless-firmware-$(WILC1000_FIRMWARE_VERSION)_Firmware/* $(@D) + rmdir $(BUILD_DIR)/wireless-firmware-$(WILC1000_FIRMWARE_VERSION)_Firmware +endef + +define WILC1000_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(@D)/wilc1003_firmware.bin \ + $(TARGET_DIR)/lib/firmware/atmel/wilc1003_firmware.bin +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/wilink-bt-firmware/Config.in b/buildroot/package/wilink-bt-firmware/Config.in new file mode 100644 index 0000000..2668304 --- /dev/null +++ b/buildroot/package/wilink-bt-firmware/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_WILINK_BT_FIRMWARE + bool "wilink-bt-firmware" + help + Texas Instruments Wilink7 and Wilink8 (wl12xx/wl18xx) UART + attached Bluetooth firmware. + + https://github.com/TI-ECS/bt-firmware diff --git a/buildroot/package/wilink-bt-firmware/wilink-bt-firmware.hash b/buildroot/package/wilink-bt-firmware/wilink-bt-firmware.hash new file mode 100644 index 0000000..2cb6c88 --- /dev/null +++ b/buildroot/package/wilink-bt-firmware/wilink-bt-firmware.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 b99700f6d504d76878de83ac50f18a0270b6edd0b52a0458c60fc606ed3332f0 wilink-bt-firmware-169b2df5b968f0ede32ea9044859942fc220c435.tar.gz diff --git a/buildroot/package/wilink-bt-firmware/wilink-bt-firmware.mk b/buildroot/package/wilink-bt-firmware/wilink-bt-firmware.mk new file mode 100644 index 0000000..180a85e --- /dev/null +++ b/buildroot/package/wilink-bt-firmware/wilink-bt-firmware.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# wilink-bt-firmware +# +################################################################################ + +WILINK_BT_FIRMWARE_VERSION = 169b2df5b968f0ede32ea9044859942fc220c435 +WILINK_BT_FIRMWARE_SITE = $(call github,TI-ECS,bt-firmware,$(WILINK_BT_FIRMWARE_VERSION)) +WILINK_BT_FIRMWARE_LICENSE = PROPRIETARY +WILINK_BT_FIRMWARE_LICENSE_FILES = LICENCE + +define WILINK_BT_FIRMWARE_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware/ti-connectivity + cp $(@D)/TIInit_*.bts $(TARGET_DIR)/lib/firmware/ti-connectivity +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/wine/Config.in b/buildroot/package/wine/Config.in new file mode 100644 index 0000000..c674288 --- /dev/null +++ b/buildroot/package/wine/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_WINE + bool "wine" + depends on BR2_TOOLCHAIN_USES_GLIBC + # Wine only builds on certain architectures + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" || \ + BR2_HOSTARCH = "powerpc" || BR2_HOSTARCH = "arm" || \ + BR2_HOSTARCH = "aarch64" + # Wine has much CPU specific code and mostly makes sense on x86 + depends on BR2_i386 + help + Wine is a compatibility layer capable of running Windows + applications on Linux. Instead of simulating internal + Windows logic like a virtual machine or emulator, Wine + translates Windows API calls into POSIX calls on-the-fly, + eliminating the performance and memory penalties of other + methods. + + http://www.winehq.org + +comment "wine needs a glibc toolchain" + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_i386 + depends on !BR2_TOOLCHAIN_USES_GLIBC diff --git a/buildroot/package/wine/wine.hash b/buildroot/package/wine/wine.hash new file mode 100644 index 0000000..176e0ee --- /dev/null +++ b/buildroot/package/wine/wine.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 346a050aca5cd0d9978a655af11c30e68c201a58aea0c70d5e4c4f1b63c2fbec wine-3.0.tar.xz diff --git a/buildroot/package/wine/wine.mk b/buildroot/package/wine/wine.mk new file mode 100644 index 0000000..02c4c0f --- /dev/null +++ b/buildroot/package/wine/wine.mk @@ -0,0 +1,382 @@ +################################################################################ +# +# wine +# +################################################################################ + +WINE_VERSION = 3.0 +WINE_SOURCE = wine-$(WINE_VERSION).tar.xz +WINE_SITE = https://dl.winehq.org/wine/source/3.0 +WINE_LICENSE = LGPL-2.1+ +WINE_LICENSE_FILES = COPYING.LIB LICENSE +WINE_DEPENDENCIES = host-bison host-flex host-wine + +# Wine needs its own directory structure and tools for cross compiling +WINE_CONF_OPTS = \ + --with-wine-tools=../host-wine-$(WINE_VERSION) \ + --disable-tests \ + --disable-win64 \ + --without-capi \ + --without-coreaudio \ + --without-gettext \ + --without-gettextpo \ + --without-gphoto \ + --without-gsm \ + --without-hal \ + --without-krb5 \ + --without-opencl \ + --without-oss + +# Wine uses a wrapper around gcc, and uses the value of --host to +# construct the filename of the gcc to call. But for external +# toolchains, the GNU_TARGET_NAME tuple that we construct from our +# internal variables may differ from the actual gcc prefix for the +# external toolchains. So, we have to override whatever the gcc +# wrapper believes what the real gcc is named, and force the tuple of +# the external toolchain, not the one we compute in GNU_TARGET_NAME. +ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) +WINE_CONF_OPTS += TARGETFLAGS="-b $(TOOLCHAIN_EXTERNAL_PREFIX)" +endif + +ifeq ($(BR2_PACKAGE_ALSA_LIB)$(BR2_PACKAGE_ALSA_LIB_SEQ)$(BR2_PACKAGE_ALSA_LIB_RAWMIDI),yyy) +WINE_CONF_OPTS += --with-alsa +WINE_DEPENDENCIES += alsa-lib +else +WINE_CONF_OPTS += --without-alsa +endif + +ifeq ($(BR2_PACKAGE_CUPS),y) +WINE_CONF_OPTS += --with-cups +WINE_DEPENDENCIES += cups +WINE_CONF_ENV += CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config +else +WINE_CONF_OPTS += --without-cups +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +WINE_CONF_OPTS += --with-dbus +WINE_DEPENDENCIES += dbus +else +WINE_CONF_OPTS += --without-dbus +endif + +ifeq ($(BR2_PACKAGE_FONTCONFIG),y) +WINE_CONF_OPTS += --with-fontconfig +WINE_DEPENDENCIES += fontconfig +else +WINE_CONF_OPTS += --without-fontconfig +endif + +# To support freetype in wine we also need freetype in host-wine for the cross compiling tools +ifeq ($(BR2_PACKAGE_FREETYPE),y) +WINE_CONF_OPTS += --with-freetype +HOST_WINE_CONF_OPTS += --with-freetype +WINE_DEPENDENCIES += freetype +HOST_WINE_DEPENDENCIES += host-freetype +WINE_CONF_ENV += FREETYPE_CONFIG=$(STAGING_DIR)/usr/bin/freetype-config +else +WINE_CONF_OPTS += --without-freetype +HOST_WINE_CONF_OPTS += --without-freetype +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +WINE_CONF_OPTS += --with-gnutls +WINE_DEPENDENCIES += gnutls +else +WINE_CONF_OPTS += --without-gnutls +endif + +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) +WINE_CONF_OPTS += --with-gstreamer +WINE_DEPENDENCIES += gst1-plugins-base +else +WINE_CONF_OPTS += --without-gstreamer +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +WINE_CONF_OPTS += --with-jpeg +WINE_DEPENDENCIES += jpeg +else +WINE_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_LCMS2),y) +WINE_CONF_OPTS += --with-cms +WINE_DEPENDENCIES += lcms2 +else +WINE_CONF_OPTS += --without-cms +endif + +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y) +WINE_CONF_OPTS += --with-opengl +WINE_DEPENDENCIES += libgl +else +WINE_CONF_OPTS += --without-opengl +endif + +ifeq ($(BR2_PACKAGE_LIBGLU),y) +WINE_CONF_OPTS += --with-glu +WINE_DEPENDENCIES += libglu +else +WINE_CONF_OPTS += --without-glu +endif + +ifeq ($(BR2_PACKAGE_LIBPCAP),y) +WINE_CONF_OPTS += --with-pcap +WINE_DEPENDENCIES += libpcap +else +WINE_CONF_OPTS += --without-pcap +endif + +ifeq ($(BR2_PACKAGE_LIBPNG),y) +WINE_CONF_OPTS += --with-png +WINE_DEPENDENCIES += libpng +else +WINE_CONF_OPTS += --without-png +endif + +ifeq ($(BR2_PACKAGE_LIBV4L),y) +WINE_CONF_OPTS += --with-v4l +WINE_DEPENDENCIES += libv4l +else +WINE_CONF_OPTS += --without-v4l +endif + +ifeq ($(BR2_PACKAGE_LIBXML2),y) +WINE_CONF_OPTS += --with-xml +WINE_DEPENDENCIES += libxml2 +WINE_CONF_ENV += XML2_CONFIG=$(STAGING_DIR)/usr/bin/xml2-config +else +WINE_CONF_OPTS += --without-xml +endif + +ifeq ($(BR2_PACKAGE_LIBXSLT),y) +WINE_CONF_OPTS += --with-xslt +WINE_DEPENDENCIES += libxslt +WINE_CONF_ENV += XSLT_CONFIG=$(STAGING_DIR)/usr/bin/xslt-config +else +WINE_CONF_OPTS += --without-xslt +endif + +ifeq ($(BR2_PACKAGE_MPG123),y) +WINE_CONF_OPTS += --with-mpg123 +WINE_DEPENDENCIES += mpg123 +else +WINE_CONF_OPTS += --without-mpg123 +endif + +ifeq ($(BR2_PACKAGE_NCURSES),y) +WINE_CONF_OPTS += --with-curses +WINE_DEPENDENCIES += ncurses +else +WINE_CONF_OPTS += --without-curses +endif + +ifeq ($(BR2_PACKAGE_OPENAL),y) +WINE_CONF_OPTS += --with-openal +WINE_DEPENDENCIES += openal +else +WINE_CONF_OPTS += --without-openal +endif + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +WINE_CONF_OPTS += --with-ldap +WINE_DEPENDENCIES += openldap +else +WINE_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_MESA3D_OSMESA),y) +WINE_CONF_OPTS += --with-osmesa +WINE_DEPENDENCIES += mesa3d +else +WINE_CONF_OPTS += --without-osmesa +endif + +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y) +WINE_CONF_OPTS += --with-pulse +WINE_DEPENDENCIES += pulseaudio +else +WINE_CONF_OPTS += --without-pulse +endif + +ifeq ($(BR2_PACKAGE_SAMBA4),y) +WINE_CONF_OPTS += --with-netapi +WINE_DEPENDENCIES += samba4 +else +WINE_CONF_OPTS += --without-netapi +endif + +ifeq ($(BR2_PACKAGE_SANE_BACKENDS),y) +WINE_CONF_OPTS += --with-sane +WINE_DEPENDENCIES += sane-backends +WINE_CONF_ENV += SANE_CONFIG=$(STAGING_DIR)/usr/bin/sane-config +else +WINE_CONF_OPTS += --without-sane +endif + +ifeq ($(BR2_PACKAGE_TIFF),y) +WINE_CONF_OPTS += --with-tiff +WINE_DEPENDENCIES += tiff +else +WINE_CONF_OPTS += --without-tiff +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +WINE_CONF_OPTS += --with-udev +WINE_DEPENDENCIES += udev +else +WINE_CONF_OPTS += --without-udev +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y) +WINE_CONF_OPTS += --with-x +WINE_DEPENDENCIES += xlib_libX11 +else +WINE_CONF_OPTS += --without-x +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +WINE_CONF_OPTS += --with-xcomposite +WINE_DEPENDENCIES += xlib_libXcomposite +else +WINE_CONF_OPTS += --without-xcomposite +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) +WINE_CONF_OPTS += --with-xcursor +WINE_DEPENDENCIES += xlib_libXcursor +else +WINE_CONF_OPTS += --without-xcursor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y) +WINE_CONF_OPTS += --with-xshape --with-xshm +WINE_DEPENDENCIES += xlib_libXext +else +WINE_CONF_OPTS += --without-xshape --without-xshm +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXI),y) +WINE_CONF_OPTS += --with-xinput --with-xinput2 +WINE_DEPENDENCIES += xlib_libXi +else +WINE_CONF_OPTS += --without-xinput --without-xinput2 +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +WINE_CONF_OPTS += --with-xinerama +WINE_DEPENDENCIES += xlib_libXinerama +else +WINE_CONF_OPTS += --without-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +WINE_CONF_OPTS += --with-xrandr +WINE_DEPENDENCIES += xlib_libXrandr +else +WINE_CONF_OPTS += --without-xrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y) +WINE_CONF_OPTS += --with-xrender +WINE_DEPENDENCIES += xlib_libXrender +else +WINE_CONF_OPTS += --without-xrender +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86VM),y) +WINE_CONF_OPTS += --with-xxf86vm +WINE_DEPENDENCIES += xlib_libXxf86vm +else +WINE_CONF_OPTS += --without-xxf86vm +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +WINE_CONF_OPTS += --with-zlib +WINE_DEPENDENCIES += zlib +else +WINE_CONF_OPTS += --without-zlib +endif + +# host-gettext is essential for .po file support in host-wine wrc +HOST_WINE_DEPENDENCIES += host-gettext +HOST_WINE_CONF_OPTS += --with-gettext --with-gettextpo + +# Wine needs to enable 64-bit build tools on 64-bit host +ifeq ($(HOSTARCH),x86_64) +HOST_WINE_CONF_OPTS += --enable-win64 +endif + +# Wine only needs the host tools to be built, so cut-down the +# build time by building just what we need. +define HOST_WINE_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) \ + tools \ + tools/sfnt2fon \ + tools/widl \ + tools/winebuild \ + tools/winegcc \ + tools/wmc \ + tools/wrc +endef + +# Wine only needs its host variant to be built, not that it is +# installed, as it uses the tools from the build directory. But +# we have no way in Buildroot to state that a host package should +# not be installed. So, just provide an noop install command. +define HOST_WINE_INSTALL_CMDS + : +endef + +# We are focused on the cross compiling tools, disable everything else +HOST_WINE_CONF_OPTS += \ + --disable-tests \ + --disable-win16 \ + --without-alsa \ + --without-capi \ + --without-cms \ + --without-coreaudio \ + --without-cups \ + --without-curses \ + --without-dbus \ + --without-fontconfig \ + --without-gphoto \ + --without-glu \ + --without-gnutls \ + --without-gsm \ + --without-gstreamer \ + --without-hal \ + --without-jpeg \ + --without-krb5 \ + --without-ldap \ + --without-mpg123 \ + --without-netapi \ + --without-openal \ + --without-opencl \ + --without-opengl \ + --without-osmesa \ + --without-oss \ + --without-pcap \ + --without-pulse \ + --without-png \ + --without-sane \ + --without-tiff \ + --without-v4l \ + --without-x \ + --without-xcomposite \ + --without-xcursor \ + --without-xinerama \ + --without-xinput \ + --without-xinput2 \ + --without-xml \ + --without-xrandr \ + --without-xrender \ + --without-xshape \ + --without-xshm \ + --without-xslt \ + --without-xxf86vm \ + --without-zlib + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/wipe/0001-musl.patch b/buildroot/package/wipe/0001-musl.patch new file mode 100644 index 0000000..35b3af8 --- /dev/null +++ b/buildroot/package/wipe/0001-musl.patch @@ -0,0 +1,28 @@ +Fix musl build + +In file included from main.c:46:0: +rand.h:31:9: error: unknown type name ‘u_int32_t’ + typedef u_int32_t u_rand_t; + ^ +: recipe for target 'main.o' failed + +Patch sent upstream: https://sourceforge.net/p/wipe/patches/4/ + +Signed-off-by: Bernd Kuhls + +diff -uNr wipe-2.3.1.org/rand.h wipe-2.3.1/rand.h +--- wipe-2.3.1.org/rand.h 2003-12-03 04:01:02.000000000 +0100 ++++ wipe-2.3.1/rand.h 2016-01-31 21:39:54.000000000 +0100 +@@ -22,10 +22,9 @@ + + #ifdef HAVE_STDINT_H + # include "stdint.h" +-#else +-# ifndef LINUX ++#endif ++#if !defined(u_int32_t) + # define u_int32_t uint32_t +-# endif + #endif + + typedef u_int32_t u_rand_t; diff --git a/buildroot/package/wipe/Config.in b/buildroot/package/wipe/Config.in new file mode 100644 index 0000000..0241c13 --- /dev/null +++ b/buildroot/package/wipe/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_WIPE + bool "wipe" + help + Wipe is a little command for securely erasing files + from magnetic media. It compiles under various unix platforms. + + http://wipe.sourceforge.net diff --git a/buildroot/package/wipe/wipe.hash b/buildroot/package/wipe/wipe.hash new file mode 100644 index 0000000..9bde201 --- /dev/null +++ b/buildroot/package/wipe/wipe.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 463916370f9b35bb34419c2c0ae3dc4c0a471db32e8595afa1d14c0337b61aa0 wipe-2.3.1.tar.bz2 diff --git a/buildroot/package/wipe/wipe.mk b/buildroot/package/wipe/wipe.mk new file mode 100644 index 0000000..83a8c87 --- /dev/null +++ b/buildroot/package/wipe/wipe.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# wipe +# +################################################################################ + +WIPE_VERSION = 2.3.1 +WIPE_SITE = http://downloads.sourceforge.net/project/wipe/wipe/$(WIPE_VERSION) +WIPE_SOURCE = wipe-$(WIPE_VERSION).tar.bz2 +WIPE_LICENSE = GPL-2.0+ +WIPE_LICENSE_FILES = LICENSE + +define WIPE_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/wipe $(TARGET_DIR)/usr/bin/wipe +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/wireguard/Config.in b/buildroot/package/wireguard/Config.in new file mode 100644 index 0000000..fe92fd6 --- /dev/null +++ b/buildroot/package/wireguard/Config.in @@ -0,0 +1,23 @@ +config BR2_PACKAGE_WIREGUARD + bool "wireguard" + # kernel module requires 3.10+, userspace makes no sense without it + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + select BR2_PACKAGE_LIBMNL + help + WireGuard is an extremely simple yet fast and modern VPN + that utilizes state-of-the-art cryptography. It aims to be + faster, simpler, leaner, and more useful than IPSec, while + avoiding the massive headache. It intends to be considerably + more performant than OpenVPN. WireGuard is designed as a + general purpose VPN for running on embedded interfaces and + super computers alike, fit for many different + circumstances. Initially released for the Linux kernel, it + plans to be cross-platform and widely deployable. It is + currently under heavy development, but already it might be + regarded as the most secure, easiest to use, and simplest + VPN solution in the industry. + + https://www.wireguard.com + +comment "wireguard needs a toolchain w/ headers >= 3.10" + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 diff --git a/buildroot/package/wireguard/wireguard.hash b/buildroot/package/wireguard/wireguard.hash new file mode 100644 index 0000000..d0cd65a --- /dev/null +++ b/buildroot/package/wireguard/wireguard.hash @@ -0,0 +1,4 @@ +# From https://lists.zx2c4.com/pipermail/wireguard/2018-July/003112.html +sha256 5e38d554f7d1e3a64e3a5319ca1a3b790c84ed89c896586c490a93ac1f953a91 WireGuard-0.0.20180708.tar.xz +# Locally calculated +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/wireguard/wireguard.mk b/buildroot/package/wireguard/wireguard.mk new file mode 100644 index 0000000..cc8ad7c --- /dev/null +++ b/buildroot/package/wireguard/wireguard.mk @@ -0,0 +1,41 @@ +################################################################################ +# +# wireguard +# +################################################################################ + +WIREGUARD_VERSION = 0.0.20180708 +WIREGUARD_SITE = https://git.zx2c4.com/WireGuard/snapshot +WIREGUARD_SOURCE = WireGuard-$(WIREGUARD_VERSION).tar.xz +WIREGUARD_LICENSE = GPL-2.0 +WIREGUARD_LICENSE_FILES = COPYING +WIREGUARD_DEPENDENCIES = host-pkgconf libmnl + +ifeq ($(BR2_INIT_SYSTEMD),y) +WIREGUARD_MAKE_OPTS += WITH_SYSTEMDUNITS=yes +else +WIREGUARD_MAKE_OPTS += WITH_SYSTEMDUNITS=no +endif + +ifeq ($(BR2_PACKAGE_BASH),y) +WIREGUARD_MAKE_OPTS += WITH_BASHCOMPLETION=yes WITH_WGQUICK=yes +else +WIREGUARD_MAKE_OPTS += WITH_BASHCOMPLETION=no WITH_WGQUICK=no +endif + +define WIREGUARD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(WIREGUARD_MAKE_OPTS) \ + -C $(@D)/src/tools +endef + +define WIREGUARD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(WIREGUARD_MAKE_OPTS) \ + -C $(@D)/src/tools install DESTDIR=$(TARGET_DIR) +endef + +ifeq ($(BR2_LINUX_KERNEL),y) +WIREGUARD_MODULE_SUBDIRS = src +$(eval $(kernel-module)) +endif + +$(eval $(generic-package)) diff --git a/buildroot/package/wireless-regdb/Config.in b/buildroot/package/wireless-regdb/Config.in new file mode 100644 index 0000000..0c9896d --- /dev/null +++ b/buildroot/package/wireless-regdb/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_WIRELESS_REGDB + bool "wireless-regdb" + help + Wireless regulatory database. + + Wireless regulatory database for CRDA. The database lists the + allowed radio frequencies for each local jurisdiction. + + https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb diff --git a/buildroot/package/wireless-regdb/wireless-regdb.hash b/buildroot/package/wireless-regdb/wireless-regdb.hash new file mode 100644 index 0000000..65ae735 --- /dev/null +++ b/buildroot/package/wireless-regdb/wireless-regdb.hash @@ -0,0 +1,4 @@ +# From https://www.kernel.org/pub/software/network/wireless-regdb/sha256sums.asc +sha256 e1dfbc3b97771373077f430c3c05082fae883145b37db5b2cfd12c56676fbe7b wireless-regdb-2018.05.31.tar.xz +# Locally computed +sha256 678b0df753c86198fc496d1f1033429bbd57f101472132ee7eaaf9f5e0a7fae1 LICENSE diff --git a/buildroot/package/wireless-regdb/wireless-regdb.mk b/buildroot/package/wireless-regdb/wireless-regdb.mk new file mode 100644 index 0000000..829374e --- /dev/null +++ b/buildroot/package/wireless-regdb/wireless-regdb.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# wireless-regdb +# +################################################################################ + +WIRELESS_REGDB_VERSION = 2018.05.31 +WIRELESS_REGDB_SOURCE = wireless-regdb-$(WIRELESS_REGDB_VERSION).tar.xz +WIRELESS_REGDB_SITE = http://kernel.org/pub/software/network/wireless-regdb +WIRELESS_REGDB_LICENSE = ISC +WIRELESS_REGDB_LICENSE_FILES = LICENSE + +define WIRELESS_REGDB_INSTALL_TARGET_CMDS + $(INSTALL) -m 644 -D -T $(@D)/regulatory.bin \ + $(TARGET_DIR)/usr/lib/crda/regulatory.bin + $(INSTALL) -m 644 -D -T $(@D)/sforshee.key.pub.pem \ + $(TARGET_DIR)/etc/wireless-regdb/pubkeys/sforshee.key.pub.pem + $(INSTALL) -m 644 -D -T $(@D)/regulatory.db \ + $(TARGET_DIR)/lib/firmware/regulatory.db + $(INSTALL) -m 644 -D -T $(@D)/regulatory.db.p7s \ + $(TARGET_DIR)/lib/firmware/regulatory.db.p7s +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/wireless_tools/0001-remove-bzero.patch b/buildroot/package/wireless_tools/0001-remove-bzero.patch new file mode 100644 index 0000000..53ef588 --- /dev/null +++ b/buildroot/package/wireless_tools/0001-remove-bzero.patch @@ -0,0 +1,95 @@ +Switch all instances of deprecated bzero() to memset() equivalent. + +Signed-off-by: Gustavo Zacarias + +diff -Nura wireless_tools.30/ifrename.c wireless_tools.30-bzero/ifrename.c +--- wireless_tools.30/ifrename.c 2007-10-16 20:12:41.000000000 -0300 ++++ wireless_tools.30-bzero/ifrename.c 2014-06-11 09:52:59.623741119 -0300 +@@ -541,7 +541,7 @@ + victimname, autoname); + + /* Prepare request */ +- bzero(&ifr, sizeof(struct ifreq)); ++ memset(&ifr, 0, sizeof(struct ifreq)); + strncpy(ifr.ifr_name, victimname, IFNAMSIZ); + strncpy(ifr.ifr_newname, autoname, IFNAMSIZ); + +@@ -587,7 +587,7 @@ + } + + /* Prepare request */ +- bzero(&ifr, sizeof(struct ifreq)); ++ memset(&ifr, 0, sizeof(struct ifreq)); + strncpy(ifr.ifr_name, oldname, IFNAMSIZ); + strncpy(ifr.ifr_newname, newname, IFNAMSIZ); + +@@ -747,7 +747,7 @@ + int i; + + /* Get MAC address */ +- bzero(&ifr, sizeof(struct ifreq)); ++ memset(&ifr, 0, sizeof(struct ifreq)); + strncpy(ifr.ifr_name, ifname, IFNAMSIZ); + ret = ioctl(skfd, SIOCGIFHWADDR, &ifr); + if(ret < 0) +@@ -1040,8 +1040,8 @@ + return(0); + + /* Prepare request */ +- bzero(&ifr, sizeof(struct ifreq)); +- bzero(&drvinfo, sizeof(struct ethtool_drvinfo)); ++ memset(&ifr, 0, sizeof(struct ifreq)); ++ memset(&drvinfo, 0, sizeof(struct ethtool_drvinfo)); + strncpy(ifr.ifr_name, ifname, IFNAMSIZ); + drvinfo.cmd = ETHTOOL_GDRVINFO; + ifr.ifr_data = (caddr_t) &drvinfo; +@@ -1206,8 +1206,8 @@ + return(0); + + /* Prepare request */ +- bzero(&ifr, sizeof(struct ifreq)); +- bzero(&map, sizeof(struct ifmap)); ++ memset(&ifr, 0, sizeof(struct ifreq)); ++ memset(&map, 0, sizeof(struct ifmap)); + strncpy(ifr.ifr_name, ifname, IFNAMSIZ); + + /* Do it */ +@@ -2050,7 +2050,7 @@ + struct add_extra extrainfo; + + /* Reset the list of filters */ +- bzero(selector_active, sizeof(selector_active)); ++ memset(selector_active, 0, sizeof(selector_active)); + + /* Check filename */ + if(!strcmp(filename, "-")) +diff -Nura wireless_tools.30/iwlib.c wireless_tools.30-bzero/iwlib.c +--- wireless_tools.30/iwlib.c 2009-11-23 23:28:59.000000000 -0300 ++++ wireless_tools.30-bzero/iwlib.c 2014-06-11 09:50:20.611371384 -0300 +@@ -484,7 +484,7 @@ + union iw_range_raw * range_raw; + + /* Cleanup */ +- bzero(buffer, sizeof(buffer)); ++ memset(buffer, 0, sizeof(buffer)); + + wrq.u.data.pointer = (caddr_t) buffer; + wrq.u.data.length = sizeof(buffer); +@@ -513,7 +513,7 @@ + else + { + /* Zero unknown fields */ +- bzero((char *) range, sizeof(struct iw_range)); ++ memset((char *) range, 0, sizeof(struct iw_range)); + + /* Initial part unmoved */ + memcpy((char *) range, +@@ -3064,7 +3064,7 @@ + oldwscan->next = wscan; + + /* Reset it */ +- bzero(wscan, sizeof(struct wireless_scan)); ++ memset(wscan, 0, sizeof(struct wireless_scan)); + + /* Save cell identifier */ + wscan->has_ap_addr = 1; diff --git a/buildroot/package/wireless_tools/Config.in b/buildroot/package/wireless_tools/Config.in new file mode 100644 index 0000000..e33af25 --- /dev/null +++ b/buildroot/package/wireless_tools/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_WIRELESS_TOOLS + bool "wireless tools" + help + A collection of tools to configure wireless lan cards. + + http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html + +if BR2_PACKAGE_WIRELESS_TOOLS + +config BR2_PACKAGE_WIRELESS_TOOLS_LIB + bool "Install shared library" + depends on !BR2_STATIC_LIBS + help + The shared library of wireless tools + +endif diff --git a/buildroot/package/wireless_tools/wireless_tools.hash b/buildroot/package/wireless_tools/wireless_tools.hash new file mode 100644 index 0000000..587c977 --- /dev/null +++ b/buildroot/package/wireless_tools/wireless_tools.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 abd9c5c98abf1fdd11892ac2f8a56737544fe101e1be27c6241a564948f34c63 wireless_tools.30.pre9.tar.gz diff --git a/buildroot/package/wireless_tools/wireless_tools.mk b/buildroot/package/wireless_tools/wireless_tools.mk new file mode 100644 index 0000000..51320a9 --- /dev/null +++ b/buildroot/package/wireless_tools/wireless_tools.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# wireless_tools +# +################################################################################ + +WIRELESS_TOOLS_VERSION_MAJOR = 30 +WIRELESS_TOOLS_VERSION = $(WIRELESS_TOOLS_VERSION_MAJOR).pre9 +WIRELESS_TOOLS_SITE = http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux +WIRELESS_TOOLS_SOURCE = wireless_tools.$(WIRELESS_TOOLS_VERSION).tar.gz +WIRELESS_TOOLS_LICENSE = GPL-2.0 +WIRELESS_TOOLS_LICENSE_FILES = COPYING +WIRELESS_TOOLS_INSTALL_STAGING = YES + +WIRELESS_TOOLS_BUILD_TARGETS = iwmulticall +WIRELESS_TOOLS_INSTALL_TARGETS = install-iwmulticall + +ifeq ($(BR2_PACKAGE_WIRELESS_TOOLS_LIB),y) +WIRELESS_TOOLS_BUILD_TARGETS += libiw.so.$(WIRELESS_TOOLS_VERSION_MAJOR) +WIRELESS_TOOLS_INSTALL_TARGETS += install-dynamic + +define WIRELESS_TOOLS_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)" LDCONFIG=/bin/true \ + install-dynamic + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)/usr" install-hdr +endef + +endif + +define WIRELESS_TOOLS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC)" CFLAGS="$(TARGET_CFLAGS)" \ + $(WIRELESS_TOOLS_BUILD_TARGETS) +endef + +define WIRELESS_TOOLS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(TARGET_DIR)" LDCONFIG=/bin/true \ + $(WIRELESS_TOOLS_INSTALL_TARGETS) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/wireshark/0001-configure.ac-do-not-assume-broken-inet_pton-in-case-.patch b/buildroot/package/wireshark/0001-configure.ac-do-not-assume-broken-inet_pton-in-case-.patch new file mode 100644 index 0000000..1e44ad0 --- /dev/null +++ b/buildroot/package/wireshark/0001-configure.ac-do-not-assume-broken-inet_pton-in-case-.patch @@ -0,0 +1,35 @@ +From 25d313275e87dc236e86c0e713cad08ea64253f8 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Thu, 8 Sep 2016 10:58:34 +0100 +Subject: [PATCH] configure.ac: do not assume broken inet_pton in case of cross + compiling + +Patch configure.ac to not assume broken inet_pton in case of cross +compiling. + +[Vincent: adapt the patch for 2.2.0] + +Signed-off-by: Peter Seiderer +Signed-off-by: Vicente Olivert Riera +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index c43e366..9672831 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2373,8 +2373,8 @@ int main() + #endif + }], [AC_MSG_RESULT(ok); + have_inet_pton=yes], [AC_MSG_RESULT(broken); +-have_inet_pton=no], [AC_MSG_RESULT([cross compiling, assume it is broken]); +-have_inet_pton=no])], ++have_inet_pton=no], [AC_MSG_RESULT([cross compiling, assume it is broken... not here]); ++have_inet_pton=yes])], + have_inet_pton=no) + if test "$have_inet_pton" = no; then + AC_LIBOBJ(inet_pton) +-- +2.7.3 + diff --git a/buildroot/package/wireshark/0002-androiddump-add-missing-sys-time.h-header.patch b/buildroot/package/wireshark/0002-androiddump-add-missing-sys-time.h-header.patch new file mode 100644 index 0000000..ae11980 --- /dev/null +++ b/buildroot/package/wireshark/0002-androiddump-add-missing-sys-time.h-header.patch @@ -0,0 +1,35 @@ +From 1ab938e762ee6ebd3211c22ef25a7575e37791c4 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 29 Dec 2016 20:16:53 +0200 +Subject: [PATCH] androiddump: add missing sys/time.h header + +struct timeval requires sys/time.h. Fixes the following musl libc build error: + +androiddump.c: In function 'useSndTimeout': +androiddump.c:262:18: error: variable 'socket_timeout' has initializer but incomplete type + const struct timeval socket_timeout = { + ^ + +Change-Id: I52e204f32a012aabea2e54877e564576c072fe08 +Signed-off-by: Baruch Siach +--- +Upstream status: https://code.wireshark.org/review/19460 +--- + extcap/androiddump.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/extcap/androiddump.c b/extcap/androiddump.c +index 8287c4bb1a76..fab7c10e05cc 100644 +--- a/extcap/androiddump.c ++++ b/extcap/androiddump.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + + #ifdef HAVE_NETINET_IN_H + # include +-- +2.11.0 + diff --git a/buildroot/package/wireshark/Config.in b/buildroot/package/wireshark/Config.in new file mode 100644 index 0000000..4d5a215 --- /dev/null +++ b/buildroot/package/wireshark/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_WIRESHARK + bool "wireshark" + depends on BR2_USE_MMU # fork(), glib2 + depends on BR2_USE_WCHAR # glib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # glib2 + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBGLIB2 + help + Network traffic sniffer and protocol decoder. + + https://www.wireshark.org + +if BR2_PACKAGE_WIRESHARK + +config BR2_PACKAGE_WIRESHARK_QT + bool + default y + depends on BR2_PACKAGE_QT5BASE_WIDGETS + depends on BR2_PACKAGE_QT5TOOLS + select BR2_PACKAGE_QT5TOOLS_LINGUIST_TOOLS + +config BR2_PACKAGE_WIRESHARK_GUI + bool + default y if BR2_PACKAGE_LIBGTK2 + default y if BR2_PACKAGE_LIBGTK3 + default y if BR2_PACKAGE_WIRESHARK_QT + +endif # BR2_PACKAGE_WIRESHARK + +comment "wireshark needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/wireshark/wireshark.hash b/buildroot/package/wireshark/wireshark.hash new file mode 100644 index 0000000..4b9c646 --- /dev/null +++ b/buildroot/package/wireshark/wireshark.hash @@ -0,0 +1,4 @@ +# From: https://www.wireshark.org/download/src/all-versions/SIGNATURES-2.2.15.txt +sha256 d73583e9282d47c42b69fc3a1ac9cafb6047d1305f5027d4cf18e95922d11844 wireshark-2.2.15.tar.bz2 +# Locally calculated +sha256 7cdbed2b697efaa45576a033f1ac0e73cd045644a91c79bbf41d4a7d81dac7bf COPYING diff --git a/buildroot/package/wireshark/wireshark.mk b/buildroot/package/wireshark/wireshark.mk new file mode 100644 index 0000000..c9a4ef2 --- /dev/null +++ b/buildroot/package/wireshark/wireshark.mk @@ -0,0 +1,109 @@ +################################################################################ +# +# wireshark +# +################################################################################ + +WIRESHARK_VERSION = 2.2.15 +WIRESHARK_SOURCE = wireshark-$(WIRESHARK_VERSION).tar.bz2 +WIRESHARK_SITE = https://www.wireshark.org/download/src/all-versions +WIRESHARK_LICENSE = wireshark license +WIRESHARK_LICENSE_FILES = COPYING +WIRESHARK_DEPENDENCIES = host-pkgconf libpcap libglib2 +WIRESHARK_CONF_ENV = \ + PCAP_CONFIG=$(STAGING_DIR)/usr/bin/pcap-config + +# patch touching configure.ac +WIRESHARK_AUTORECONF = YES + +# wireshark adds -I$includedir to CFLAGS, causing host/target headers mixup. +# Work around it by pointing includedir at staging +WIRESHARK_CONF_OPTS = \ + --without-krb5 \ + --enable-static=no \ + --with-libsmi=no \ + --with-lua=no \ + --with-pcap=$(STAGING_DIR)/usr \ + --includedir=$(STAGING_DIR)/usr/include + +# wireshark GUI options +ifeq ($(BR2_PACKAGE_LIBGTK3),y) +WIRESHARK_CONF_OPTS += --with-gtk=3 +WIRESHARK_DEPENDENCIES += libgtk3 +else ifeq ($(BR2_PACKAGE_LIBGTK2),y) +WIRESHARK_CONF_OPTS += --with-gtk=2 +WIRESHARK_DEPENDENCIES += libgtk2 +else +WIRESHARK_CONF_OPTS += --with-gtk=no +endif + +# Qt4 needs accessibility, we don't support it +ifeq ($(BR2_PACKAGE_WIRESHARK_QT),y) +WIRESHARK_CONF_OPTS += --with-qt=5 +WIRESHARK_DEPENDENCIES += qt5base qt5tools +WIRESHARK_CONF_ENV += ac_cv_path_QTCHOOSER="" +# Seems it expects wrappers and passes a -qt=X parameter for version +WIRESHARK_MAKE_OPTS += \ + MOC="$(HOST_DIR)/bin/moc" \ + RCC="$(HOST_DIR)/bin/rcc" \ + UIC="$(HOST_DIR)/bin/uic" +else +WIRESHARK_CONF_OPTS += --with-qt=no +endif + +# No GUI at all +ifeq ($(BR2_PACKAGE_WIRESHARK_GUI),) +WIRESHARK_CONF_OPTS += --disable-wireshark +endif + +ifeq ($(BR2_PACKAGE_C_ARES),y) +WIRESHARK_CONF_OPTS += --with-c-ares=$(STAGING_DIR)/usr +WIRESHARK_DEPENDENCIES += c-ares +else +WIRESHARK_CONF_OPTS += --without-c-ares +endif + +ifeq ($(BR2_PACKAGE_GEOIP),y) +WIRESHARK_CONF_OPTS += --with-geoip=$(STAGING_DIR)/usr +WIRESHARK_DEPENDENCIES += geoip +else +WIRESHARK_CONF_OPTS += --without-geoip +endif + +ifeq ($(BR2_PACKAGE_GNUTLS),y) +WIRESHARK_CONF_OPTS += --with-gnutls=yes +WIRESHARK_DEPENDENCIES += gnutls +else +WIRESHARK_CONF_OPTS += --with-gnutls=no +endif + +ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +WIRESHARK_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config +WIRESHARK_CONF_OPTS += --with-gcrypt=yes +WIRESHARK_DEPENDENCIES += libgcrypt +else +WIRESHARK_CONF_OPTS += --with-gcrypt=no +endif + +ifeq ($(BR2_PACKAGE_LIBNL),y) +WIRESHARK_CONF_OPTS += --with-libnl +WIRESHARK_DEPENDENCIES += libnl +else +WIRESHARK_CONF_OPTS += --without-libnl +endif + +ifeq ($(BR2_PACKAGE_SBC),y) +WIRESHARK_CONF_OPTS += --with-sbc=yes +WIRESHARK_DEPENDENCIES += sbc +else +WIRESHARK_CONF_OPTS += --with-sbc=no +endif + +define WIRESHARK_REMOVE_DOCS + find $(TARGET_DIR)/usr/share/wireshark -name '*.txt' -print0 \ + -o -name '*.html' -print0 | xargs -0 rm -f +endef + +WIRESHARK_POST_INSTALL_TARGET_HOOKS += WIRESHARK_REMOVE_DOCS + +$(eval $(autotools-package)) diff --git a/buildroot/package/wiringpi/0001-Adjust-for-buildroot-build.patch b/buildroot/package/wiringpi/0001-Adjust-for-buildroot-build.patch new file mode 100644 index 0000000..520555c --- /dev/null +++ b/buildroot/package/wiringpi/0001-Adjust-for-buildroot-build.patch @@ -0,0 +1,127 @@ +From 17ffb0cb301d4bf6ef900c8698d716f68cb77360 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Wed, 2 Dec 2015 00:22:26 +0100 +Subject: [PATCH] Adjust for buildroot build. + + - enable CC override + - fix devLib/gpio include path for local build (without installing first) + - change CFLAGS from '=' to '+=' to honour buildroot given flags + - add linker name link for libwiringPiDev and libwiringPi for local linking + (without installing first) + - fix install linker name link (do not link with absolute path) + - add gpio-static linking target + +Signed-off-by: Peter Seiderer +--- + devLib/Makefile | 9 +++++---- + gpio/Makefile | 14 +++++++++----- + wiringPi/Makefile | 7 ++++--- + 3 files changed, 18 insertions(+), 12 deletions(-) + +diff --git a/devLib/Makefile b/devLib/Makefile +index cf665d6..3fb41e8 100644 +--- a/devLib/Makefile ++++ b/devLib/Makefile +@@ -36,10 +36,10 @@ DYNAMIC=libwiringPiDev.so.$(VERSION) + + #DEBUG = -g -O0 + DEBUG = -O2 +-CC = gcc +-INCLUDE = -I. ++CC ?= gcc ++INCLUDE = -I../wiringPi + DEFS = -D_GNU_SOURCE +-CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC ++CFLAGS += $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC + + LIBS = + +@@ -69,6 +69,7 @@ $(STATIC): $(OBJ) + $(DYNAMIC): $(OBJ) + $Q echo "[Link (Dynamic)]" + $Q $(CC) -shared -Wl,-soname,libwiringPiDev.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPiDev.so.$(VERSION) -lpthread $(OBJ) ++ $Q ln -sf libwiringPiDev.so.$(VERSION) libwiringPiDev.so + + .c.o: + $Q echo [Compile] $< +@@ -93,7 +94,7 @@ install: $(DYNAMIC) + $Q echo "[Install Dynamic Lib]" + $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib + $Q install -m 0755 libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) +- $Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) $(DESTDIR)/lib/libwiringPiDev.so ++ $Q ln -sf libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so + $Q $(LDCONFIG) + + .PHONY: install-static +diff --git a/gpio/Makefile b/gpio/Makefile +index f41a005..7095fa5 100644 +--- a/gpio/Makefile ++++ b/gpio/Makefile +@@ -32,11 +32,11 @@ endif + + #DEBUG = -g -O0 + DEBUG = -O2 +-CC = gcc +-INCLUDE = -I$(DESTDIR)$(PREFIX)/include +-CFLAGS = $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe ++CC ?= gcc ++INCLUDE = -I../wiringPi -I../devLib ++CFLAGS += $(DEBUG) -Wall -Wextra $(INCLUDE) -Winline -pipe + +-LDFLAGS = -L$(DESTDIR)$(PREFIX)/lib ++LDFLAGS = -L../wiringPi -L../devLib + LIBS = -lwiringPi -lwiringPiDev -lpthread -lrt -lm -lcrypt + + # May not need to alter anything below this line +@@ -52,9 +52,13 @@ version.h: ../VERSION + $Q echo Need to run newVersion above. + + gpio: $(OBJ) +- $Q echo [Link] ++ $Q echo "[Link (Dynamic)]" + $Q $(CC) -o $@ $(OBJ) $(LDFLAGS) $(LIBS) + ++gpio-static: $(OBJ) ++ $Q echo "[Link (Static)]" ++ $Q $(CC) -static -o gpio $(OBJ) ../wiringPi/libwiringPi.a ../devLib/libwiringPiDev.a -lpthread ++ + .c.o: + $Q echo [Compile] $< + $Q $(CC) -c $(CFLAGS) $< -o $@ +diff --git a/wiringPi/Makefile b/wiringPi/Makefile +index e1868b9..68c950e 100644 +--- a/wiringPi/Makefile ++++ b/wiringPi/Makefile +@@ -36,10 +36,10 @@ DYNAMIC=libwiringPi.so.$(VERSION) + + #DEBUG = -g -O0 + DEBUG = -O2 +-CC = gcc ++CC ?= gcc + INCLUDE = -I. + DEFS = -D_GNU_SOURCE +-CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC ++CFLAGS += $(DEBUG) $(DEFS) -Wformat=2 -Wall -Wextra -Winline $(INCLUDE) -pipe -fPIC + + LIBS = -lm -lpthread -lrt -lcrypt + +@@ -79,6 +79,7 @@ $(STATIC): $(OBJ) + $(DYNAMIC): $(OBJ) + $Q echo "[Link (Dynamic)]" + $Q $(CC) -shared -Wl,-soname,libwiringPi.so$(WIRINGPI_SONAME_SUFFIX) -o libwiringPi.so.$(VERSION) $(LIBS) $(OBJ) ++ $Q ln -sf libwiringPi.so.$(VERSION) libwiringPi.so + + .c.o: + $Q echo [Compile] $< +@@ -104,7 +105,7 @@ install: $(DYNAMIC) + $Q echo "[Install Dynamic Lib]" + $Q install -m 0755 -d $(DESTDIR)$(PREFIX)/lib + $Q install -m 0755 libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) +- $Q ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) $(DESTDIR)/lib/libwiringPi.so ++ $Q ln -sf libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so + $Q $(LDCONFIG) + + .PHONY: install-static +-- +2.11.0 + diff --git a/buildroot/package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch b/buildroot/package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch new file mode 100644 index 0000000..c9c4385 --- /dev/null +++ b/buildroot/package/wiringpi/0002-wiringPi-wiringSerial-fix-compile-for-missing-baud-d.patch @@ -0,0 +1,47 @@ +From 1e7a7a625ca20633062406ce525b19d168c356af Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 20 Mar 2017 20:51:20 +0100 +Subject: [PATCH] wiringPi/wiringSerial: fix compile for missing baud defines + +For sparc-buildroot-linux-uclibc/sysroot/usr/include/asm/termbits.h +containing: + + /* These have totally bogus values and nobody uses them + so far. Later on we'd have to use say 0x10000x and + adjust CBAUD constant and drivers accordingly. + #define B2500000 0x00001010 + #define B3000000 0x00001011 + #define B3500000 0x00001012 + #define B4000000 0x00001013 */ + +Signed-off-by: Peter Seiderer +--- + wiringPi/wiringSerial.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/wiringPi/wiringSerial.c b/wiringPi/wiringSerial.c +index e1587ad..4ac8d1e 100644 +--- a/wiringPi/wiringSerial.c ++++ b/wiringPi/wiringSerial.c +@@ -75,10 +75,18 @@ int serialOpen (const char *device, const int baud) + case 1152000: myBaud = B1152000 ; break ; + case 1500000: myBaud = B1500000 ; break ; + case 2000000: myBaud = B2000000 ; break ; ++#if defined(B2500000) + case 2500000: myBaud = B2500000 ; break ; ++#endif ++#if defined(B3000000) + case 3000000: myBaud = B3000000 ; break ; ++#endif ++#if defined(B3500000) + case 3500000: myBaud = B3500000 ; break ; ++#endif ++#if defined(B4000000) + case 4000000: myBaud = B4000000 ; break ; ++#endif + + default: + return -2 ; +-- +2.11.0 + diff --git a/buildroot/package/wiringpi/Config.in b/buildroot/package/wiringpi/Config.in new file mode 100644 index 0000000..2062a62 --- /dev/null +++ b/buildroot/package/wiringpi/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_WIRINGPI + bool "wiringpi" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + help + wiringPi libraries (and gpio command) + + http://wiringpi.com/ + +comment "wiringpi needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/wiringpi/wiringpi.hash b/buildroot/package/wiringpi/wiringpi.hash new file mode 100644 index 0000000..f4832e5 --- /dev/null +++ b/buildroot/package/wiringpi/wiringpi.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 4eae1d4f37f77534b1e2db4678a1003a5fd7ced4721c340527e3476d0bed1d9f wiringpi-96344ff7125182989f98d3be8d111952a8f74e15.tar.gz diff --git a/buildroot/package/wiringpi/wiringpi.mk b/buildroot/package/wiringpi/wiringpi.mk new file mode 100644 index 0000000..f2e9e24 --- /dev/null +++ b/buildroot/package/wiringpi/wiringpi.mk @@ -0,0 +1,47 @@ +################################################################################ +# +# wiringpi +# +################################################################################ + +# using git commit id instead of (wrong) 2.44 git tag (Bug 10391) +WIRINGPI_VERSION = 96344ff7125182989f98d3be8d111952a8f74e15 +WIRINGPI_SITE = git://git.drogon.net/wiringPi + +WIRINGPI_LICENSE = LGPL-3.0+ +WIRINGPI_LICENSE_FILES = COPYING.LESSER +WIRINGPI_INSTALL_STAGING = YES + +ifeq ($(BR2_STATIC_LIBS),y) +WIRINGPI_LIB_BUILD_TARGETS = static +WIRINGPI_LIB_INSTALL_TARGETS = install-static +WIRINGPI_BIN_BUILD_TARGETS = gpio-static +else ifeq ($(BR2_SHARED_LIBS),y) +WIRINGPI_LIB_BUILD_TARGETS = all +WIRINGPI_LIB_INSTALL_TARGETS = install +WIRINGPI_BIN_BUILD_TARGETS = all +else +WIRINGPI_LIB_BUILD_TARGETS = all static +WIRINGPI_LIB_INSTALL_TARGETS = install install-static +WIRINGPI_BIN_BUILD_TARGETS = all +endif + +define WIRINGPI_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/wiringPi $(WIRINGPI_LIB_BUILD_TARGETS) + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/devLib $(WIRINGPI_LIB_BUILD_TARGETS) + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/gpio $(WIRINGPI_BIN_BUILD_TARGETS) +endef + +define WIRINGPI_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/wiringPi $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(STAGING_DIR) PREFIX=/usr LDCONFIG=true + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/devLib $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(STAGING_DIR) PREFIX=/usr LDCONFIG=true +endef + +define WIRINGPI_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/wiringPi $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR) PREFIX=/usr LDCONFIG=true + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/devLib $(WIRINGPI_LIB_INSTALL_TARGETS) DESTDIR=$(TARGET_DIR) PREFIX=/usr LDCONFIG=true + $(INSTALL) -D -m 0755 $(@D)/gpio/gpio $(TARGET_DIR)/usr/bin/gpio + $(INSTALL) -D -m 0755 $(@D)/gpio/pintest $(TARGET_DIR)/usr/bin/pintest +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/wmctrl/Config.in b/buildroot/package/wmctrl/Config.in new file mode 100644 index 0000000..37a1f25 --- /dev/null +++ b/buildroot/package/wmctrl/Config.in @@ -0,0 +1,24 @@ +config BR2_PACKAGE_WMCTRL + bool "wmctrl" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_MMU # libglib2 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_LIBGLIB2 + help + Provides command line access to almost all the features + defined in the EWMH specification. It can be used, for + example, to get information about the window manager, to get + a detailed list of desktops and managed windows, to switch + and resize desktops, to make windows full-screen, + always-above or sticky, and to activate, close, move, + resize, maximize and minimize them. + + https://sites.google.com/site/tstyblo/wmctrl/ + +comment "wmctrl needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on BR2_PACKAGE_XORG7 + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/wmctrl/wmctrl.hash b/buildroot/package/wmctrl/wmctrl.hash new file mode 100644 index 0000000..a08c0e9 --- /dev/null +++ b/buildroot/package/wmctrl/wmctrl.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d78a1efdb62f18674298ad039c5cbdb1edb6e8e149bb3a8e3a01a4750aa3cca9 wmctrl-1.07.tar.gz diff --git a/buildroot/package/wmctrl/wmctrl.mk b/buildroot/package/wmctrl/wmctrl.mk new file mode 100644 index 0000000..36ad351 --- /dev/null +++ b/buildroot/package/wmctrl/wmctrl.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# wmctrl +# +################################################################################ + +WMCTRL_VERSION = 1.07 +WMCTRL_SITE = https://sites.google.com/site/tstyblo/wmctrl +WMCTRL_LICENSE = GPL-2.0+ +WMCTRL_LICENSE_FILES = COPYING + +WMCTRL_DEPENDENCIES = libglib2 xlib_libX11 xlib_libXmu + +WMCTRL_CONF_OPTS = \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib + +$(eval $(autotools-package)) diff --git a/buildroot/package/wolfssl/Config.in b/buildroot/package/wolfssl/Config.in new file mode 100644 index 0000000..3c6d68f --- /dev/null +++ b/buildroot/package/wolfssl/Config.in @@ -0,0 +1,27 @@ +config BR2_PACKAGE_WOLFSSL + bool "wolfssl" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + The wolfSSL embedded SSL library (formerly CyaSSL) is a + lightweight, portable, C-language-based SSL/TLS library + targeted at IoT, embedded, and RTOS environments primarily + because of its size, speed, and feature set. + + https://www.wolfssl.com/ + +if BR2_PACKAGE_WOLFSSL + +config BR2_PACKAGE_WOLFSSL_ALL + bool "enable all features, except SSLv3" + help + Enable all wolfSSL features, except SSL version 3.0 support. + +config BR2_PACKAGE_WOLFSSL_SSLV3 + bool "enable SSLv3" + help + Enable SSL version 3.0 support. + +endif + +comment "wolfssl needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/wolfssl/wolfssl.hash b/buildroot/package/wolfssl/wolfssl.hash new file mode 100644 index 0000000..204f2f0 --- /dev/null +++ b/buildroot/package/wolfssl/wolfssl.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 3bafeb0cb7eaff80002ba3f7cbb70023757bcc35fc4d82181945b143f1f927c6 v3.13.0-stable.tar.gz + +# Hash for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 74adaaef40b96c71378b6daa3feb8ccd4a1bfd9b76debf3f3f29cf3a0e86c9a0 LICENSING diff --git a/buildroot/package/wolfssl/wolfssl.mk b/buildroot/package/wolfssl/wolfssl.mk new file mode 100644 index 0000000..84073f3 --- /dev/null +++ b/buildroot/package/wolfssl/wolfssl.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# wolfssl +# +################################################################################ + +WOLFSSL_VERSION = 3.13.0 +WOLFSSL_SITE = https://github.com/wolfSSL/wolfssl/archive +WOLFSSL_SOURCE = v$(WOLFSSL_VERSION)-stable.tar.gz + +WOLFSSL_LICENSE = GPL-2.0 +WOLFSSL_LICENSE_FILES = COPYING LICENSING + +WOLFSSL_DEPENDENCIES = host-pkgconf + +# wolfssl's source code is released without a configure +# script, so we need autoreconf +WOLFSSL_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_WOLFSSL_ALL),y) +WOLFSSL_CONF_OPTS += --enable-all +else +WOLFSSL_CONF_OPTS += --disable-all +endif + +ifeq ($(BR2_PACKAGE_WOLFSSL_SSLV3),y) +WOLFSSL_CONF_OPTS += --enable-sslv3 +else +WOLFSSL_CONF_OPTS += --disable-sslv3 +endif + +# build fails when ARMv8 hardware acceleration is enabled +WOLFSSL_CONF_OPTS += --disable-armasm + +$(eval $(autotools-package)) diff --git a/buildroot/package/wpa_supplicant/Config.in b/buildroot/package/wpa_supplicant/Config.in new file mode 100644 index 0000000..58a074f --- /dev/null +++ b/buildroot/package/wpa_supplicant/Config.in @@ -0,0 +1,123 @@ +config BR2_PACKAGE_WPA_SUPPLICANT + bool "wpa_supplicant" + depends on BR2_USE_MMU # fork() + help + WPA supplicant for secure wireless networks + + http://w1.fi/wpa_supplicant/ + +if BR2_PACKAGE_WPA_SUPPLICANT + +config BR2_PACKAGE_WPA_SUPPLICANT_NL80211 + bool "Enable nl80211 support" + default y + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + Enable support for nl80211. This is the current wireless + API for Linux, supported by all wireless drivers in vanilla + Linux, but may not be supported by some out-of-tree Linux + wireless drivers. wpa_supplicant will still fall back to + using the Wireless Extensions (wext) API with these drivers. + + If this option is disabled, then only the deprecated wext + API will be supported, with far less features. Linux may + supports using wext with modern drivers using a + compatibility layer, but it must be enabled in the kernel + configuration. + +comment "nl80211 support needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT + bool "Enable AP mode" + depends on BR2_PACKAGE_WPA_SUPPLICANT_NL80211 + help + With this option enabled, wpa_supplicant can act as an + access point much like hostapd does with a limited feature + set. This links in parts of hostapd functionality into + wpa_supplicant, making it bigger but dispensing the need for + a separate hostapd binary in some applications hence being + smaller overall. + +config BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY + bool "Enable Wi-Fi Display" + depends on BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT + help + Enable support for Wi-Fi Display + +config BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING + bool "Enable mesh networking" + depends on BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_OPENSSL_FORCE_LIBOPENSSL + help + Enable support for open and secured mesh networking + (IEEE 802.11s) + +config BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN + bool "Enable autoscan" + help + Enable support for the autoscan feature (allow periodic scan) + +config BR2_PACKAGE_WPA_SUPPLICANT_EAP + bool "Enable EAP" + help + Enable support for EAP. + +config BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT + bool "Enable HS20" + help + Enable Hotspot 2.0 and IEEE 802.11u interworking + functionality. + +config BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG + bool "Enable syslog support" + help + Enable support for sending debug messages to syslog. + +config BR2_PACKAGE_WPA_SUPPLICANT_WPS + bool "Enable WPS" + help + Enable support for Wi-Fi Protected Setup (WPS). + +config BR2_PACKAGE_WPA_SUPPLICANT_CLI + bool "Install wpa_cli binary" + help + Install wpa_cli command line utility + +config BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO + bool "Install wpa_client shared library" + depends on !BR2_STATIC_LIBS + help + Install libwpa_client.so. + +comment "wpa_client library needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE + bool "Install wpa_passphrase binary" + help + Install wpa_passphrase command line utility. + +config BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD + bool "Enable support for old DBus control interface" + depends on BR2_PACKAGE_DBUS + help + Enable support for old DBus control interface + (fi.epitest.hostap.WPASupplicant). + +config BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW + bool "Enable support for new DBus control interface" + depends on BR2_PACKAGE_DBUS + help + Enable support for new DBus control interface + (fi.w1.wpa_supplicant1). + +config BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION + bool "Introspection support" + depends on BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW + help + Add introspection support for new DBus control interface. + +endif diff --git a/buildroot/package/wpa_supplicant/wpa_supplicant.conf b/buildroot/package/wpa_supplicant/wpa_supplicant.conf new file mode 100644 index 0000000..1994a6c --- /dev/null +++ b/buildroot/package/wpa_supplicant/wpa_supplicant.conf @@ -0,0 +1,6 @@ +ctrl_interface=/var/run/wpa_supplicant +ap_scan=1 + +network={ + key_mgmt=NONE +} diff --git a/buildroot/package/wpa_supplicant/wpa_supplicant.hash b/buildroot/package/wpa_supplicant/wpa_supplicant.hash new file mode 100644 index 0000000..65a6ae2 --- /dev/null +++ b/buildroot/package/wpa_supplicant/wpa_supplicant.hash @@ -0,0 +1,9 @@ +# Locally calculated +sha256 b4936d34c4e6cdd44954beba74296d964bc2c9668ecaa5255e499636fe2b1450 wpa_supplicant-2.6.tar.gz +sha256 529113cc81256c6178f3c1cf25dd8d3f33e6d770e4a180bd31c6ab7e4917f40b rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch +sha256 d86d47ab74170f3648b45b91bce780949ca92b09ab43df065178850ec0c335d7 rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch +sha256 d4535e36739a0cc7f3585e6bcba3c0bb8fc67cb3e729844e448c5dc751f47e81 rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch +sha256 793a54748161b5af430dd9de4a1988d19cb8e85ab29bc2340f886b0297cee20b rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch +sha256 596d4d3b63ea859ed7ea9791b3a21cb11b6173b04c0a14a2afa47edf1666afa6 rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch +sha256 c5a17af84aec2d88c56ce0da2d6945be398fe7cab5c0c340deb30973900c2736 rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch +sha256 c8840d857b9432f3b488113c85c1ff5d4a4b8d81078b7033388dae1e990843b1 rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch diff --git a/buildroot/package/wpa_supplicant/wpa_supplicant.mk b/buildroot/package/wpa_supplicant/wpa_supplicant.mk new file mode 100644 index 0000000..75ecbaa --- /dev/null +++ b/buildroot/package/wpa_supplicant/wpa_supplicant.mk @@ -0,0 +1,232 @@ +################################################################################ +# +# wpa_supplicant +# +################################################################################ + +WPA_SUPPLICANT_VERSION = 2.6 +WPA_SUPPLICANT_SITE = http://w1.fi/releases +WPA_SUPPLICANT_PATCH = \ + http://w1.fi/security/2017-1/rebased-v2.6-0001-hostapd-Avoid-key-reinstallation-in-FT-handshake.patch \ + http://w1.fi/security/2017-1/rebased-v2.6-0002-Prevent-reinstallation-of-an-already-in-use-group-ke.patch \ + http://w1.fi/security/2017-1/rebased-v2.6-0003-Extend-protection-of-GTK-IGTK-reinstallation-of-WNM-.patch \ + http://w1.fi/security/2017-1/rebased-v2.6-0004-Prevent-installation-of-an-all-zero-TK.patch \ + http://w1.fi/security/2017-1/rebased-v2.6-0006-TDLS-Reject-TPK-TK-reconfiguration.patch \ + http://w1.fi/security/2017-1/rebased-v2.6-0007-WNM-Ignore-WNM-Sleep-Mode-Response-without-pending-r.patch \ + http://w1.fi/security/2017-1/rebased-v2.6-0008-FT-Do-not-allow-multiple-Reassociation-Response-fram.patch +WPA_SUPPLICANT_LICENSE = BSD-3-Clause +WPA_SUPPLICANT_LICENSE_FILES = README +WPA_SUPPLICANT_CONFIG = $(WPA_SUPPLICANT_DIR)/wpa_supplicant/.config +WPA_SUPPLICANT_SUBDIR = wpa_supplicant +WPA_SUPPLICANT_DBUS_OLD_SERVICE = fi.epitest.hostap.WPASupplicant +WPA_SUPPLICANT_DBUS_NEW_SERVICE = fi.w1.wpa_supplicant1 +WPA_SUPPLICANT_CFLAGS = $(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/libnl3/ +WPA_SUPPLICANT_LDFLAGS = $(TARGET_LDFLAGS) + +# install the wpa_client library +WPA_SUPPLICANT_INSTALL_STAGING = YES + +WPA_SUPPLICANT_CONFIG_EDITS = + +# Add support for simple background scan +WPA_SUPPLICANT_CONFIG_SET = CONFIG_BGSCAN_SIMPLE + +WPA_SUPPLICANT_CONFIG_ENABLE = \ + CONFIG_IEEE80211AC \ + CONFIG_IEEE80211N \ + CONFIG_IEEE80211R \ + CONFIG_INTERNAL_LIBTOMMATH \ + CONFIG_DEBUG_FILE \ + CONFIG_MATCH_IFACE + +WPA_SUPPLICANT_CONFIG_DISABLE = \ + CONFIG_SMARTCARD + +# libnl-3 needs -lm (for rint) and -lpthread if linking statically +# And library order matters hence stick -lnl-3 first since it's appended +# in the wpa_supplicant Makefiles as in LIBS+=-lnl-3 ... thus failing +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_NL80211),y) +ifeq ($(BR2_STATIC_LIBS),y) +WPA_SUPPLICANT_LIBS += -lnl-3 -lm -lpthread +endif +WPA_SUPPLICANT_DEPENDENCIES += host-pkgconf libnl +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_LIBNL32 +else +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_DRIVER_NL80211 +endif + +# Trailing underscore on purpose to not enable CONFIG_EAPOL_TEST +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_EAP),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_EAP_ +# uses dlopen() +ifeq ($(BR2_STATIC_LIBS),y) +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_EAP_TNC +endif +else +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_EAP +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_HS20 \ + CONFIG_INTERWORKING +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT),y) +WPA_SUPPLICANT_CONFIG_ENABLE += \ + CONFIG_AP \ + CONFIG_P2P +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_WIFI_DISPLAY +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING),y) +WPA_SUPPLICANT_CONFIG_SET += CONFIG_MESH +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_IEEE80211W +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN),y) +WPA_SUPPLICANT_CONFIG_ENABLE += \ + CONFIG_AUTOSCAN_EXPONENTIAL \ + CONFIG_AUTOSCAN_PERIODIC +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPS),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_WPS +endif + +# Try to use openssl if it's already available +ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +WPA_SUPPLICANT_DEPENDENCIES += libopenssl +WPA_SUPPLICANT_LIBS += $(if $(BR2_STATIC_LIBS),-lcrypto -lz) +WPA_SUPPLICANT_CONFIG_EDITS += 's/\#\(CONFIG_TLS=openssl\)/\1/' +else +WPA_SUPPLICANT_CONFIG_DISABLE += CONFIG_EAP_PWD +WPA_SUPPLICANT_CONFIG_EDITS += 's/\#\(CONFIG_TLS=\).*/\1internal/' +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +WPA_SUPPLICANT_DEPENDENCIES += host-pkgconf dbus +WPA_SUPPLICANT_MAKE_ENV = \ + PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_CTRL_IFACE_DBUS= +define WPA_SUPPLICANT_INSTALL_DBUS_OLD + $(INSTALL) -m 0644 -D \ + $(@D)/wpa_supplicant/dbus/$(WPA_SUPPLICANT_DBUS_OLD_SERVICE).service \ + $(TARGET_DIR)/usr/share/dbus-1/system-services/$(WPA_SUPPLICANT_DBUS_OLD_SERVICE).service +endef +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_CTRL_IFACE_DBUS_NEW +define WPA_SUPPLICANT_INSTALL_DBUS_NEW + $(INSTALL) -m 0644 -D \ + $(@D)/wpa_supplicant/dbus/$(WPA_SUPPLICANT_DBUS_NEW_SERVICE).service \ + $(TARGET_DIR)/usr/share/dbus-1/system-services/$(WPA_SUPPLICANT_DBUS_NEW_SERVICE).service +endef +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_CTRL_IFACE_DBUS_INTRO +endif + +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG),y) +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_DEBUG_SYSLOG +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +WPA_SUPPLICANT_DEPENDENCIES += readline +WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_READLINE +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO),y) +WPA_SUPPLICANT_CONFIG_SET += CONFIG_BUILD_WPA_CLIENT_SO +define WPA_SUPPLICANT_INSTALL_WPA_CLIENT_SO + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/libwpa_client.so \ + $(TARGET_DIR)/usr/lib/libwpa_client.so + $(INSTALL) -m 0644 -D $(@D)/src/common/wpa_ctrl.h \ + $(TARGET_DIR)/usr/include/wpa_ctrl.h +endef +define WPA_SUPPLICANT_INSTALL_STAGING_WPA_CLIENT_SO + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/libwpa_client.so \ + $(STAGING_DIR)/usr/lib/libwpa_client.so + $(INSTALL) -m 0644 -D $(@D)/src/common/wpa_ctrl.h \ + $(STAGING_DIR)/usr/include/wpa_ctrl.h +endef +endif + +define WPA_SUPPLICANT_CONFIGURE_CMDS + cp $(@D)/wpa_supplicant/defconfig $(WPA_SUPPLICANT_CONFIG) + sed -i $(patsubst %,-e 's/^#\(%\)/\1/',$(WPA_SUPPLICANT_CONFIG_ENABLE)) \ + $(patsubst %,-e 's/^\(%\)/#\1/',$(WPA_SUPPLICANT_CONFIG_DISABLE)) \ + $(patsubst %,-e '1i%=y',$(WPA_SUPPLICANT_CONFIG_SET)) \ + $(patsubst %,-e %,$(WPA_SUPPLICANT_CONFIG_EDITS)) \ + $(WPA_SUPPLICANT_CONFIG) +endef + +# LIBS for wpa_supplicant, LIBS_c for wpa_cli, LIBS_p for wpa_passphrase +define WPA_SUPPLICANT_BUILD_CMDS + $(TARGET_MAKE_ENV) CFLAGS="$(WPA_SUPPLICANT_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" BINDIR=/usr/sbin \ + LIBS="$(WPA_SUPPLICANT_LIBS)" LIBS_c="$(WPA_SUPPLICANT_LIBS)" \ + LIBS_p="$(WPA_SUPPLICANT_LIBS)" \ + $(MAKE) CC="$(TARGET_CC)" -C $(@D)/$(WPA_SUPPLICANT_SUBDIR) +endef + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_CLI),y) +define WPA_SUPPLICANT_INSTALL_CLI + $(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_cli \ + $(TARGET_DIR)/usr/sbin/wpa_cli +endef +endif + +ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE),y) +define WPA_SUPPLICANT_INSTALL_PASSPHRASE + $(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_passphrase \ + $(TARGET_DIR)/usr/sbin/wpa_passphrase +endef +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +define WPA_SUPPLICANT_INSTALL_DBUS + $(INSTALL) -m 0644 -D \ + $(@D)/wpa_supplicant/dbus/dbus-wpa_supplicant.conf \ + $(TARGET_DIR)/etc/dbus-1/system.d/wpa_supplicant.conf + $(WPA_SUPPLICANT_INSTALL_DBUS_OLD) + $(WPA_SUPPLICANT_INSTALL_DBUS_NEW) +endef +endif + +define WPA_SUPPLICANT_INSTALL_STAGING_CMDS + $(WPA_SUPPLICANT_INSTALL_STAGING_WPA_CLIENT_SO) +endef + +define WPA_SUPPLICANT_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/wpa_supplicant \ + $(TARGET_DIR)/usr/sbin/wpa_supplicant + $(INSTALL) -m 644 -D package/wpa_supplicant/wpa_supplicant.conf \ + $(TARGET_DIR)/etc/wpa_supplicant.conf + $(WPA_SUPPLICANT_INSTALL_CLI) + $(WPA_SUPPLICANT_INSTALL_PASSPHRASE) + $(WPA_SUPPLICANT_INSTALL_DBUS) + $(WPA_SUPPLICANT_INSTALL_WPA_CLIENT_SO) +endef + +define WPA_SUPPLICANT_INSTALL_INIT_SYSTEMD + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant.service \ + $(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant.service + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant@.service + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant-nl80211@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant-nl80211@.service + $(INSTALL) -m 0644 -D $(@D)/$(WPA_SUPPLICANT_SUBDIR)/systemd/wpa_supplicant-wired@.service \ + $(TARGET_DIR)/usr/lib/systemd/system/wpa_supplicant-wired@.service +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/wpan-tools/0001-src-nl_extras.h-fix-compatibility-with-libnl-3.3.0.patch b/buildroot/package/wpan-tools/0001-src-nl_extras.h-fix-compatibility-with-libnl-3.3.0.patch new file mode 100644 index 0000000..8b881ad --- /dev/null +++ b/buildroot/package/wpan-tools/0001-src-nl_extras.h-fix-compatibility-with-libnl-3.3.0.patch @@ -0,0 +1,49 @@ +From bb522bd584f05e6658d5dba97f48ca018f46394c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 6 May 2017 14:36:08 +0200 +Subject: [PATCH] src/nl_extras.h: fix compatibility with libnl 3.3.0 + +nl_extras.h defines a set of nla_set_s*() functions if not provided by +libnl. They are provided by libnl since version 3.2.26. The test +(LIBNL_VER_MIC <= 26) was working fine while libnl was in the 3.2.x +series, but now that they have incremented the minor version, the +micro version was reset to 0, with the latest libnl version being +3.3.0. + +Due to this, the condition (LIBNL_VER_MIC <= 26) is true, and we get +redefinition errors because nl_extras.h redefines functions already +provided by libnl. + +This commit improves the condition so that nl_extras.h provides the +missing functions only if the minor version is < 2, or if minor is 2 +and micro is < 26. + +Signed-off-by: Thomas Petazzoni +--- + src/nl_extras.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/nl_extras.h b/src/nl_extras.h +index c4d1d14..37844f9 100644 +--- a/src/nl_extras.h ++++ b/src/nl_extras.h +@@ -1,7 +1,7 @@ + #ifndef __NL_EXTRAS_H + #define __NL_EXTRAS_H + +-#if LIBNL_VER_MIC <= 26 ++#if (LIBNL_VER_MIN < 2) || (LIBNL_VER_MIN == 2) && (LIBNL_VER_MIC <= 26) + + #ifndef NLA_S8 + +@@ -45,6 +45,6 @@ static inline int32_t nla_get_s32(struct nlattr *nla) + + #endif /* NLA_S64 */ + +-#endif /* LIBNL_VER_MIC */ ++#endif /* LIBNL_VER_* */ + + #endif /* __NL_EXTRAS_H */ +-- +2.7.4 + diff --git a/buildroot/package/wpan-tools/Config.in b/buildroot/package/wpan-tools/Config.in new file mode 100644 index 0000000..9e32742 --- /dev/null +++ b/buildroot/package/wpan-tools/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_WPAN_TOOLS + bool "wpan-tools" + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_LIBNL + help + Userspace tools for Linux IEEE 802.15.4 stack. + + http://wpan.cakelab.org/ + +comment "wpan-tools needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/wpan-tools/wpan-tools.hash b/buildroot/package/wpan-tools/wpan-tools.hash new file mode 100644 index 0000000..cfad89a --- /dev/null +++ b/buildroot/package/wpan-tools/wpan-tools.hash @@ -0,0 +1,4 @@ +# From http://wpan.cakelab.org/releases/md5sum +md5 91f0b640ff66910e977fab6525625624 wpan-tools-0.7.tar.xz +# Calculated based on the hash above +sha256 c16de9d7861c2d9b6a4436a0fac730f9f545ee290b92bc770c538ec6a3f22309 wpan-tools-0.7.tar.xz diff --git a/buildroot/package/wpan-tools/wpan-tools.mk b/buildroot/package/wpan-tools/wpan-tools.mk new file mode 100644 index 0000000..d5e43a9 --- /dev/null +++ b/buildroot/package/wpan-tools/wpan-tools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# wpan-tools +# +################################################################################ + +WPAN_TOOLS_VERSION = 0.7 +WPAN_TOOLS_SOURCE = wpan-tools-$(WPAN_TOOLS_VERSION).tar.xz +WPAN_TOOLS_SITE = http://wpan.cakelab.org/releases +WPAN_TOOLS_DEPENDENCIES = host-pkgconf libnl +WPAN_TOOLS_LICENSE = ISC +WPAN_TOOLS_LICENSE_FILES = COPYING + +$(eval $(autotools-package)) diff --git a/buildroot/package/wsapi-fcgi/Config.in b/buildroot/package/wsapi-fcgi/Config.in new file mode 100644 index 0000000..b4304a0 --- /dev/null +++ b/buildroot/package/wsapi-fcgi/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_WSAPI_FCGI + bool "wsapi-fcgi" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBFCGI + # Runtime dependency only + select BR2_PACKAGE_WSAPI + help + WSAPI is an API that abstracts the web server from Lua web + applications. This is the rock that contains the FCGI module + lfcgi. + + http://keplerproject.github.com/wsapi/ diff --git a/buildroot/package/wsapi-fcgi/wsapi-fcgi.hash b/buildroot/package/wsapi-fcgi/wsapi-fcgi.hash new file mode 100644 index 0000000..f82ce9c --- /dev/null +++ b/buildroot/package/wsapi-fcgi/wsapi-fcgi.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 73dc200889bc185953cd3a7c5350c998c090f901fcd10771273b7a63a3ffcdcf wsapi-fcgi-1.6.1-1.src.rock diff --git a/buildroot/package/wsapi-fcgi/wsapi-fcgi.mk b/buildroot/package/wsapi-fcgi/wsapi-fcgi.mk new file mode 100644 index 0000000..2b0e6b2 --- /dev/null +++ b/buildroot/package/wsapi-fcgi/wsapi-fcgi.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# wsapi-fcgi +# +################################################################################ + +WSAPI_FCGI_VERSION_MAJOR = 1.6.1 +WSAPI_FCGI_VERSION = $(WSAPI_FCGI_VERSION_MAJOR)-1 +WSAPI_FCGI_SUBDIR = wsapi-$(WSAPI_FCGI_VERSION_MAJOR) +WSAPI_FCGI_DEPENDENCIES = libfcgi +WSAPI_FCGI_LICENSE = MIT +WSAPI_FCGI_LICENSE_FILES = $(WSAPI_FCGI_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/buildroot/package/wsapi-xavante/Config.in b/buildroot/package/wsapi-xavante/Config.in new file mode 100644 index 0000000..3e494bb --- /dev/null +++ b/buildroot/package/wsapi-xavante/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_WSAPI_XAVANTE + bool "wsapi-xavante" + # Runtime dependencies + select BR2_PACKAGE_COXPCALL + select BR2_PACKAGE_RINGS + select BR2_PACKAGE_WSAPI + select BR2_PACKAGE_XAVANTE + help + WSAPI is an API that abstracts the web server from Lua web + applications. This is the rock that contains the Xavante + adapter and launcher. + + http://keplerproject.github.com/wsapi/ diff --git a/buildroot/package/wsapi-xavante/wsapi-xavante.hash b/buildroot/package/wsapi-xavante/wsapi-xavante.hash new file mode 100644 index 0000000..9e8132d --- /dev/null +++ b/buildroot/package/wsapi-xavante/wsapi-xavante.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 b30b171e3d4d6fd7e129f14576e1cfc5adf00c0780ef8350f2f9e6f1d4259346 wsapi-xavante-1.6.1-1.src.rock diff --git a/buildroot/package/wsapi-xavante/wsapi-xavante.mk b/buildroot/package/wsapi-xavante/wsapi-xavante.mk new file mode 100644 index 0000000..86f5dee --- /dev/null +++ b/buildroot/package/wsapi-xavante/wsapi-xavante.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# wsapi-xavante +# +################################################################################ + +WSAPI_XAVANTE_VERSION_MAJOR = 1.6.1 +WSAPI_XAVANTE_VERSION = $(WSAPI_XAVANTE_VERSION_MAJOR)-1 +WSAPI_XAVANTE_SUBDIR = wsapi-$(WSAPI_XAVANTE_VERSION_MAJOR) +WSAPI_XAVANTE_LICENSE = MIT +WSAPI_XAVANTE_LICENSE_FILES = $(WSAPI_XAVANTE_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/buildroot/package/wsapi/0001-Lua-5.3-compatibility.patch b/buildroot/package/wsapi/0001-Lua-5.3-compatibility.patch new file mode 100644 index 0000000..9165ef2 --- /dev/null +++ b/buildroot/package/wsapi/0001-Lua-5.3-compatibility.patch @@ -0,0 +1,41 @@ +From 2d824d2fce31b6a9cc60b2c3f215fbbf1d99c611 Mon Sep 17 00:00:00 2001 +From: mpeterv +Date: Thu, 3 Dec 2015 13:10:14 +0300 +Subject: [PATCH] Lua 5.3 compatibility + +Fetched from: https://github.com/keplerproject/wsapi/commit/2d824d2fce31b6a9cc60b2c3f215fbbf1d99c611 + +Signed-off-by: Francois Perrad +--- + src/wsapi/ringer.lua | 1 + + src/wsapi/util.lua | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/wsapi-1.6.1/src/wsapi/ringer.lua b/wsapi-1.6.1/src/wsapi/ringer.lua +index 58309f2..db7b68f 100644 +--- a/wsapi-1.6.1/src/wsapi/ringer.lua ++++ b/wsapi-1.6.1/src/wsapi/ringer.lua +@@ -5,6 +5,7 @@ local rings = require "rings" + local _M = {} + + local init = [==[ ++ local loadstring = loadstring or load + local app_name, bootstrap_code, is_file = ... + if bootstrap_code then + local bootstrap, err +diff --git a/wsapi-1.6.1/src/wsapi/util.lua b/wsapi-1.6.1/src/wsapi/util.lua +index 24d3cfe..34e5816 100644 +--- a/wsapi-1.6.1/src/wsapi/util.lua ++++ b/wsapi-1.6.1/src/wsapi/util.lua +@@ -174,7 +174,7 @@ function _M.make_env_post(pd, type, qs) + end + + function _M.loadfile(filename, env) +- if _VERSION == "Lua 5.2" then ++ if _VERSION ~= "Lua 5.1" then + return loadfile(filename, "bt", env) + else + local f, err = loadfile(filename) +-- +2.14.1 + diff --git a/buildroot/package/wsapi/Config.in b/buildroot/package/wsapi/Config.in new file mode 100644 index 0000000..348a040 --- /dev/null +++ b/buildroot/package/wsapi/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_WSAPI + bool "wsapi" + # Runtime dependency only + select BR2_PACKAGE_COXPCALL + select BR2_PACKAGE_LUAFILESYSTEM + select BR2_PACKAGE_RINGS + help + API that abstracts the web server from Lua web applications. + + http://keplerproject.github.com/wsapi/ diff --git a/buildroot/package/wsapi/wsapi.hash b/buildroot/package/wsapi/wsapi.hash new file mode 100644 index 0000000..3abbfc9 --- /dev/null +++ b/buildroot/package/wsapi/wsapi.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 f7f1b0ddc68c257965c42ac7155904d8ff7c2b7256f65ef1b82fda0039137d61 wsapi-1.6.1-1.src.rock diff --git a/buildroot/package/wsapi/wsapi.mk b/buildroot/package/wsapi/wsapi.mk new file mode 100644 index 0000000..64a2757 --- /dev/null +++ b/buildroot/package/wsapi/wsapi.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# wsapi +# +################################################################################ + +WSAPI_VERSION = 1.6.1-1 +WSAPI_LICENSE = MIT +WSAPI_LICENSE_FILES = $(WSAPI_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/buildroot/package/x11r7/Config.in b/buildroot/package/x11r7/Config.in new file mode 100644 index 0000000..ddceaa4 --- /dev/null +++ b/buildroot/package/x11r7/Config.in @@ -0,0 +1,275 @@ +menuconfig BR2_PACKAGE_XORG7 + bool "X.org X Window System" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # dlopen in xlib_libX11 + help + Support for X11R7 libraries, servers, drivers, and/or + applications in the target. + + http://xorg.freedesktop.org + +if BR2_PACKAGE_XORG7 + menu "X11R7 Servers" + source package/x11r7/xserver_xorg-server/Config.in + endmenu + menu "X11R7 Libraries" + source package/x11r7/libxcb/Config.in + source package/x11r7/xcb-util/Config.in + source package/x11r7/xcb-util-cursor/Config.in + source package/x11r7/xcb-util-image/Config.in + source package/x11r7/xcb-util-keysyms/Config.in + source package/x11r7/xcb-util-renderutil/Config.in + source package/x11r7/xcb-util-wm/Config.in + source package/x11r7/xlib_libFS/Config.in + source package/x11r7/xlib_libICE/Config.in + source package/x11r7/xlib_libSM/Config.in + source package/x11r7/xlib_libX11/Config.in + source package/x11r7/xlib_libXScrnSaver/Config.in + source package/x11r7/xlib_libXau/Config.in + source package/x11r7/xlib_libXaw/Config.in + source package/x11r7/xlib_libXcomposite/Config.in + source package/x11r7/xlib_libXcursor/Config.in + source package/x11r7/xlib_libXdamage/Config.in + source package/x11r7/xlib_libXdmcp/Config.in + source package/x11r7/xlib_libXext/Config.in + source package/x11r7/xlib_libXfixes/Config.in + source package/x11r7/xlib_libXfont/Config.in + source package/x11r7/xlib_libXfont2/Config.in + source package/x11r7/xlib_libXft/Config.in + source package/x11r7/xlib_libXi/Config.in + source package/x11r7/xlib_libXinerama/Config.in + source package/x11r7/xlib_libXmu/Config.in + source package/x11r7/xlib_libXpm/Config.in + source package/x11r7/xlib_libXrandr/Config.in + source package/x11r7/xlib_libXrender/Config.in + source package/x11r7/xlib_libXres/Config.in + source package/x11r7/xlib_libXt/Config.in + source package/x11r7/xlib_libXtst/Config.in + source package/x11r7/xlib_libXv/Config.in + source package/x11r7/xlib_libXvMC/Config.in + source package/x11r7/xlib_libXxf86dga/Config.in + source package/x11r7/xlib_libXxf86vm/Config.in + source package/x11r7/xlib_libdmx/Config.in + source package/x11r7/xlib_libfontenc/Config.in + source package/x11r7/xlib_libxkbfile/Config.in + source package/x11r7/xlib_libxshmfence/Config.in + source package/x11r7/xlib_xtrans/Config.in + endmenu + menu "X11R7 Applications" + source package/x11r7/xapp_appres/Config.in + source package/x11r7/xapp_bdftopcf/Config.in + source package/x11r7/xapp_beforelight/Config.in + source package/x11r7/xapp_bitmap/Config.in + source package/x11r7/xapp_editres/Config.in + source package/x11r7/xapp_fonttosfnt/Config.in + source package/x11r7/xapp_fslsfonts/Config.in + source package/x11r7/xapp_fstobdf/Config.in + source package/x11r7/xapp_iceauth/Config.in + source package/x11r7/xapp_ico/Config.in + source package/x11r7/xapp_listres/Config.in + source package/x11r7/xapp_luit/Config.in + source package/x11r7/xapp_mkfontdir/Config.in + source package/x11r7/xapp_mkfontscale/Config.in + source package/x11r7/xapp_oclock/Config.in + source package/x11r7/xapp_rgb/Config.in + source package/x11r7/xapp_rstart/Config.in + source package/x11r7/xapp_scripts/Config.in + source package/x11r7/xapp_sessreg/Config.in + source package/x11r7/xapp_setxkbmap/Config.in + source package/x11r7/xapp_showfont/Config.in + source package/x11r7/xapp_smproxy/Config.in + source package/x11r7/xapp_twm/Config.in + source package/x11r7/xapp_viewres/Config.in + source package/x11r7/xapp_x11perf/Config.in + source package/x11r7/xapp_xauth/Config.in + source package/x11r7/xapp_xbacklight/Config.in + source package/x11r7/xapp_xbiff/Config.in + source package/x11r7/xapp_xcalc/Config.in + source package/x11r7/xapp_xclipboard/Config.in + source package/x11r7/xapp_xclock/Config.in + source package/x11r7/xapp_xcmsdb/Config.in + source package/x11r7/xapp_xcompmgr/Config.in + source package/x11r7/xapp_xconsole/Config.in + source package/x11r7/xapp_xcursorgen/Config.in + source package/x11r7/xapp_xdbedizzy/Config.in + source package/x11r7/xapp_xditview/Config.in + source package/x11r7/xapp_xdm/Config.in + source package/x11r7/xapp_xdpyinfo/Config.in + source package/x11r7/xapp_xdriinfo/Config.in + source package/x11r7/xapp_xedit/Config.in + source package/x11r7/xapp_xev/Config.in + source package/x11r7/xapp_xeyes/Config.in + source package/x11r7/xapp_xf86dga/Config.in + source package/x11r7/xapp_xfd/Config.in + source package/x11r7/xapp_xfindproxy/Config.in + source package/x11r7/xapp_xfontsel/Config.in + source package/x11r7/xapp_xfs/Config.in + source package/x11r7/xapp_xfsinfo/Config.in + source package/x11r7/xapp_xgamma/Config.in + source package/x11r7/xapp_xgc/Config.in + source package/x11r7/xapp_xhost/Config.in + source package/x11r7/xapp_xinit/Config.in + source package/x11r7/xapp_xinput/Config.in + source package/x11r7/xapp_xinput-calibrator/Config.in + source package/x11r7/xapp_xkbcomp/Config.in + source package/x11r7/xapp_xkbevd/Config.in + source package/x11r7/xapp_xkbprint/Config.in + source package/x11r7/xapp_xkbutils/Config.in + source package/x11r7/xapp_xkill/Config.in + source package/x11r7/xapp_xload/Config.in + source package/x11r7/xapp_xlogo/Config.in + source package/x11r7/xapp_xlsatoms/Config.in + source package/x11r7/xapp_xlsclients/Config.in + source package/x11r7/xapp_xlsfonts/Config.in + source package/x11r7/xapp_xmag/Config.in + source package/x11r7/xapp_xman/Config.in + source package/x11r7/xapp_xmessage/Config.in + source package/x11r7/xapp_xmh/Config.in + source package/x11r7/xapp_xmodmap/Config.in + source package/x11r7/xapp_xmore/Config.in + source package/x11r7/xapp_xpr/Config.in + source package/x11r7/xapp_xprop/Config.in + source package/x11r7/xapp_xrandr/Config.in + source package/x11r7/xapp_xrdb/Config.in + source package/x11r7/xapp_xrefresh/Config.in + source package/x11r7/xapp_xset/Config.in + source package/x11r7/xapp_xsetmode/Config.in + source package/x11r7/xapp_xsetpointer/Config.in + source package/x11r7/xapp_xsetroot/Config.in + source package/x11r7/xapp_xsm/Config.in + source package/x11r7/xapp_xstdcmap/Config.in + source package/x11r7/xapp_xvidtune/Config.in + source package/x11r7/xapp_xvinfo/Config.in + source package/x11r7/xapp_xwd/Config.in + source package/x11r7/xapp_xwininfo/Config.in + source package/x11r7/xapp_xwud/Config.in + endmenu + if BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR + menu "X11R7 Drivers" + source package/x11r7/xdriver_xf86-input-evdev/Config.in + source package/x11r7/xdriver_xf86-input-joystick/Config.in + source package/x11r7/xdriver_xf86-input-keyboard/Config.in + source package/x11r7/xdriver_xf86-input-libinput/Config.in + source package/x11r7/xdriver_xf86-input-mouse/Config.in + source package/x11r7/xdriver_xf86-input-synaptics/Config.in + source package/x11r7/xdriver_xf86-input-tslib/Config.in + source package/x11r7/xdriver_xf86-input-vmmouse/Config.in + source package/x11r7/xdriver_xf86-video-amdgpu/Config.in + source package/x11r7/xdriver_xf86-video-ark/Config.in + source package/x11r7/xdriver_xf86-video-ast/Config.in + source package/x11r7/xdriver_xf86-video-ati/Config.in + source package/x11r7/xdriver_xf86-video-cirrus/Config.in + source package/x11r7/xdriver_xf86-video-dummy/Config.in + source package/x11r7/xdriver_xf86-video-fbdev/Config.in + source package/x11r7/xdriver_xf86-video-fbturbo/Config.in + source package/x11r7/xdriver_xf86-video-geode/Config.in + source package/x11r7/xdriver_xf86-video-glint/Config.in + source package/x11r7/xdriver_xf86-video-i128/Config.in + source package/x11r7/xdriver_xf86-video-imx/Config.in + source package/x11r7/xdriver_xf86-video-imx-viv/Config.in + source package/x11r7/xdriver_xf86-video-intel/Config.in + source package/x11r7/xdriver_xf86-video-mach64/Config.in + source package/x11r7/xdriver_xf86-video-mga/Config.in + source package/x11r7/xdriver_xf86-video-neomagic/Config.in + source package/x11r7/xdriver_xf86-video-nouveau/Config.in + source package/x11r7/xdriver_xf86-video-nv/Config.in + source package/x11r7/xdriver_xf86-video-openchrome/Config.in + source package/x11r7/xdriver_xf86-video-qxl/Config.in + source package/x11r7/xdriver_xf86-video-r128/Config.in + source package/x11r7/xdriver_xf86-video-savage/Config.in + source package/x11r7/xdriver_xf86-video-siliconmotion/Config.in + source package/x11r7/xdriver_xf86-video-sis/Config.in + source package/x11r7/xdriver_xf86-video-tdfx/Config.in + source package/x11r7/xdriver_xf86-video-tga/Config.in + source package/x11r7/xdriver_xf86-video-trident/Config.in + source package/x11r7/xdriver_xf86-video-vesa/Config.in + source package/x11r7/xdriver_xf86-video-vmware/Config.in + source package/x11r7/xdriver_xf86-video-voodoo/Config.in + endmenu + endif + menu "X11R7 Fonts" + source package/x11r7/xfont_font-util/Config.in + source package/x11r7/xfont_encodings/Config.in + source package/x11r7/xfont_font-adobe-100dpi/Config.in + source package/x11r7/xfont_font-adobe-75dpi/Config.in + source package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in + source package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in + source package/x11r7/xfont_font-adobe-utopia-type1/Config.in + source package/x11r7/xfont_font-alias/Config.in + source package/x11r7/xfont_font-arabic-misc/Config.in + source package/x11r7/xfont_font-bh-100dpi/Config.in + source package/x11r7/xfont_font-bh-75dpi/Config.in + source package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in + source package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in + source package/x11r7/xfont_font-bh-ttf/Config.in + source package/x11r7/xfont_font-bh-type1/Config.in + source package/x11r7/xfont_font-bitstream-100dpi/Config.in + source package/x11r7/xfont_font-bitstream-75dpi/Config.in + source package/x11r7/xfont_font-bitstream-type1/Config.in + source package/x11r7/xfont_font-cronyx-cyrillic/Config.in + source package/x11r7/xfont_font-cursor-misc/Config.in + source package/x11r7/xfont_font-daewoo-misc/Config.in + source package/x11r7/xfont_font-dec-misc/Config.in + source package/x11r7/xfont_font-ibm-type1/Config.in + source package/x11r7/xfont_font-isas-misc/Config.in + source package/x11r7/xfont_font-jis-misc/Config.in + source package/x11r7/xfont_font-micro-misc/Config.in + source package/x11r7/xfont_font-misc-cyrillic/Config.in + source package/x11r7/xfont_font-misc-ethiopic/Config.in + source package/x11r7/xfont_font-misc-meltho/Config.in + source package/x11r7/xfont_font-misc-misc/Config.in + source package/x11r7/xfont_font-mutt-misc/Config.in + source package/x11r7/xfont_font-schumacher-misc/Config.in + source package/x11r7/xfont_font-screen-cyrillic/Config.in + source package/x11r7/xfont_font-sony-misc/Config.in + source package/x11r7/xfont_font-sun-misc/Config.in + source package/x11r7/xfont_font-winitzki-cyrillic/Config.in + source package/x11r7/xfont_font-xfree86-type1/Config.in + endmenu + menu "X11R7 X protocols" + source package/x11r7/xcb-proto/Config.in + source package/x11r7/xproto_applewmproto/Config.in + source package/x11r7/xproto_bigreqsproto/Config.in + source package/x11r7/xproto_compositeproto/Config.in + source package/x11r7/xproto_damageproto/Config.in + source package/x11r7/xproto_dmxproto/Config.in + source package/x11r7/xproto_dri2proto/Config.in + source package/x11r7/xproto_dri3proto/Config.in + source package/x11r7/xproto_fixesproto/Config.in + source package/x11r7/xproto_fontcacheproto/Config.in + source package/x11r7/xproto_fontsproto/Config.in + source package/x11r7/xproto_glproto/Config.in + source package/x11r7/xproto_inputproto/Config.in + source package/x11r7/xproto_kbproto/Config.in + source package/x11r7/xproto_presentproto/Config.in + source package/x11r7/xproto_randrproto/Config.in + source package/x11r7/xproto_recordproto/Config.in + source package/x11r7/xproto_renderproto/Config.in + source package/x11r7/xproto_resourceproto/Config.in + source package/x11r7/xproto_scrnsaverproto/Config.in + source package/x11r7/xproto_videoproto/Config.in + source package/x11r7/xproto_windowswmproto/Config.in + source package/x11r7/xproto_xcmiscproto/Config.in + source package/x11r7/xproto_xextproto/Config.in + source package/x11r7/xproto_xf86bigfontproto/Config.in + source package/x11r7/xproto_xf86dgaproto/Config.in + source package/x11r7/xproto_xf86driproto/Config.in + source package/x11r7/xproto_xf86vidmodeproto/Config.in + source package/x11r7/xproto_xineramaproto/Config.in + source package/x11r7/xproto_xproto/Config.in + source package/x11r7/xproto_xproxymanagementprotocol/Config.in + endmenu + menu "X11R7 Utilities" + source package/x11r7/xutil_makedepend/Config.in + source package/x11r7/mcookie/Config.in + endmenu + menu "X11R7 Other data" + source package/x11r7/xdata_xbitmaps/Config.in + source package/x11r7/xdata_xcursor-themes/Config.in + source package/x11r7/xcursor-transparent-theme/Config.in + endmenu +endif + +comment "X.org needs a toolchain w/ wchar, threads, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/x11r7/libxcb/Config.in b/buildroot/package/x11r7/libxcb/Config.in new file mode 100644 index 0000000..7439741 --- /dev/null +++ b/buildroot/package/x11r7/libxcb/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_LIBXCB + bool "libxcb" + select BR2_PACKAGE_LIBPTHREAD_STUBS + select BR2_PACKAGE_XCB_PROTO + select BR2_PACKAGE_XLIB_LIBXDMCP + select BR2_PACKAGE_XLIB_LIBXAU + help + The X protocol C-language Binding (XCB) is a replacement for + Xlib featuring a small footprint, latency hiding, direct + access to the protocol, improved threading support, and + extensibility. + + http://xcb.freedesktop.org/ diff --git a/buildroot/package/x11r7/libxcb/libxcb.hash b/buildroot/package/x11r7/libxcb/libxcb.hash new file mode 100644 index 0000000..6df7d01 --- /dev/null +++ b/buildroot/package/x11r7/libxcb/libxcb.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-May/002694.html +sha256 4adfb1b7c67e99bc9c2ccb110b2f175686576d2f792c8a71b9c8b19014057b5b libxcb-1.12.tar.bz2 diff --git a/buildroot/package/x11r7/libxcb/libxcb.mk b/buildroot/package/x11r7/libxcb/libxcb.mk new file mode 100644 index 0000000..32edbb9 --- /dev/null +++ b/buildroot/package/x11r7/libxcb/libxcb.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# libxcb +# +################################################################################ + +LIBXCB_VERSION = 1.12 +LIBXCB_SOURCE = libxcb-$(LIBXCB_VERSION).tar.bz2 +LIBXCB_SITE = http://xcb.freedesktop.org/dist +LIBXCB_LICENSE = MIT +LIBXCB_LICENSE_FILES = COPYING + +LIBXCB_INSTALL_STAGING = YES + +LIBXCB_DEPENDENCIES = \ + host-libxslt libpthread-stubs xcb-proto xlib_libXdmcp xlib_libXau \ + host-xcb-proto host-python host-pkgconf +HOST_LIBXCB_DEPENDENCIES = \ + host-libxslt host-libpthread-stubs host-xcb-proto host-xlib_libXdmcp \ + host-xlib_libXau host-python host-pkgconf + +LIBXCB_CONF_OPTS = --with-doxygen=no +HOST_LIBXCB_CONF_OPTS = --with-doxygen=no + +# libxcb is not python3 friendly, so force the python interpreter +HOST_LIBXCB_CONF_OPTS += ac_cv_path_PYTHON=$(HOST_DIR)/bin/python2 +LIBXCB_CONF_OPTS += ac_cv_path_PYTHON=$(HOST_DIR)/bin/python2 + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/mcookie/Config.in b/buildroot/package/x11r7/mcookie/Config.in new file mode 100644 index 0000000..2e9cfc7 --- /dev/null +++ b/buildroot/package/x11r7/mcookie/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_MCOOKIE + bool "mcookie" + help + cookie generator for X server + + http://www.x.org diff --git a/buildroot/package/x11r7/mcookie/mcookie.c b/buildroot/package/x11r7/mcookie/mcookie.c new file mode 100644 index 0000000..3c38f6f --- /dev/null +++ b/buildroot/package/x11r7/mcookie/mcookie.c @@ -0,0 +1,425 @@ +/* mcookie.c -- Generates random numbers for xauth + * Created: Fri Feb 3 10:42:48 1995 by faith@cs.unc.edu + * Revised: Fri Mar 19 07:48:01 1999 by faith@acm.org + * Public Domain 1995, 1999 Rickard E. Faith (faith@acm.org) + * This program comes with ABSOLUTELY NO WARRANTY. + * + * $Id: mcookie.c,v 1.5 1997/07/06 00:13:06 aebr Exp $ + * + * This program gathers some random bits of data and used the MD5 + * message-digest algorithm to generate a 128-bit hexadecimal number for + * use with xauth(1). + * + * NOTE: Unless /dev/random is available, this program does not actually + * gather 128 bits of random information, so the magic cookie generated + * will be considerably easier to guess than one might expect. + * + * 1999-02-22 Arkadiusz Mikiewicz + * - added Native Language Support + * 1999-03-21 aeb: Added some fragments of code from Colin Plumb. + * + */ + +#include +#include +#include +#include +#include +#include + +#define BUFFERSIZE 4096 + + +#ifndef MD5_H +#define MD5_H + +#if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__) +typedef unsigned int uint32; +#else +typedef unsigned long uint32; +#endif + +struct MD5Context { + uint32 buf[4]; + uint32 bits[2]; + unsigned char in[64]; +}; + +void MD5Init(struct MD5Context *context); +void MD5Update(struct MD5Context *context, unsigned char const *buf, + unsigned len); +void MD5Final(unsigned char digest[16], struct MD5Context *context); +void MD5Transform(uint32 buf[4], uint32 const in[16]); + +/* + * This is needed to make RSAREF happy on some MS-DOS compilers. + */ +typedef struct MD5Context MD5_CTX; + +#endif /* !MD5_H */ + + + +/* + * This code implements the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5Context structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + */ +#include /* for memcpy() */ +#include + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define byteReverse(buf, len) /* Nothing */ +#else +void byteReverse(unsigned char *buf, unsigned longs); + +/* + * Note: this code is harmless on little-endian machines. + */ +void byteReverse(unsigned char *buf, unsigned longs) +{ + uint32 t; + do { + t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 | + ((unsigned) buf[1] << 8 | buf[0]); + *(uint32 *) buf = t; + buf += 4; + } while (--longs); +} +#endif + +/* + * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious + * initialization constants. + */ +void MD5Init(struct MD5Context *ctx) +{ + ctx->buf[0] = 0x67452301; + ctx->buf[1] = 0xefcdab89; + ctx->buf[2] = 0x98badcfe; + ctx->buf[3] = 0x10325476; + + ctx->bits[0] = 0; + ctx->bits[1] = 0; +} + +/* + * Update context to reflect the concatenation of another buffer full + * of bytes. + */ +void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len) +{ + uint32 t; + + /* Update bitcount */ + + t = ctx->bits[0]; + if ((ctx->bits[0] = t + ((uint32) len << 3)) < t) + ctx->bits[1]++; /* Carry from low to high */ + ctx->bits[1] += len >> 29; + + t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ + + /* Handle any leading odd-sized chunks */ + + if (t) { + unsigned char *p = (unsigned char *) ctx->in + t; + + t = 64 - t; + if (len < t) { + memcpy(p, buf, len); + return; + } + memcpy(p, buf, t); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32 *) ctx->in); + buf += t; + len -= t; + } + /* Process data in 64-byte chunks */ + + while (len >= 64) { + memcpy(ctx->in, buf, 64); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32 *) ctx->in); + buf += 64; + len -= 64; + } + + /* Handle any remaining bytes of data. */ + + memcpy(ctx->in, buf, len); +} + +/* + * Final wrapup - pad to 64-byte boundary with the bit pattern + * 1 0* (64-bit count of bits processed, MSB-first) + */ +void MD5Final(unsigned char digest[16], struct MD5Context *ctx) +{ + unsigned count; + unsigned char *p; + + /* Compute number of bytes mod 64 */ + count = (ctx->bits[0] >> 3) & 0x3F; + + /* Set the first char of padding to 0x80. This is safe since there is + always at least one byte free */ + p = ctx->in + count; + *p++ = 0x80; + + /* Bytes of padding needed to make 64 bytes */ + count = 64 - 1 - count; + + /* Pad out to 56 mod 64 */ + if (count < 8) { + /* Two lots of padding: Pad the first block to 64 bytes */ + memset(p, 0, count); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32 *) ctx->in); + + /* Now fill the next block with 56 bytes */ + memset(ctx->in, 0, 56); + } else { + /* Pad block to 56 bytes */ + memset(p, 0, count - 8); + } + byteReverse(ctx->in, 14); + + /* Append length in bits and transform */ + ((uint32 *) ctx->in)[14] = ctx->bits[0]; + ((uint32 *) ctx->in)[15] = ctx->bits[1]; + + MD5Transform(ctx->buf, (uint32 *) ctx->in); + byteReverse((unsigned char *) ctx->buf, 4); + memcpy(digest, ctx->buf, 16); + memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ +} + +/* The four core functions - F1 is optimized somewhat */ + +/* #define F1(x, y, z) (x & y | ~x & z) */ +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define F2(x, y, z) F1(z, x, y) +#define F3(x, y, z) (x ^ y ^ z) +#define F4(x, y, z) (y ^ (x | ~z)) + +/* This is the central step in the MD5 algorithm. */ +#define MD5STEP(f, w, x, y, z, data, s) \ + ( w += f(x, y, z) + data, w = w<>(32-s), w += x ) + +/* + * The core of the MD5 algorithm, this alters an existing MD5 hash to + * reflect the addition of 16 longwords of new data. MD5Update blocks + * the data and converts bytes into longwords for this routine. + */ +void MD5Transform(uint32 buf[4], uint32 const in[16]) +{ + register uint32 a, b, c, d; + + a = buf[0]; + b = buf[1]; + c = buf[2]; + d = buf[3]; + + MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); + MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); + MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); + MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); + MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); + MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); + MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); + MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); + MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); + MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); + MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); + MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); + MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); + MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); + MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); + MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); + + MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); + MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); + MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); + MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); + MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); + MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); + MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); + MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); + MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); + MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); + MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); + MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); + MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); + MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); + MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); + MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); + + MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); + MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); + MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); + MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); + MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); + MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); + MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); + MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); + MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); + MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); + MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); + MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); + MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); + MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); + MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); + MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); + + MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); + MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); + MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); + MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); + MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); + MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); + MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); + MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); + MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); + MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); + MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); + MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); + MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); + MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); + MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); + MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); + + buf[0] += a; + buf[1] += b; + buf[2] += c; + buf[3] += d; +} + + + + +struct rngs { + const char *path; + int minlength, maxlength; +} rngs[] = { + { "/dev/random", 16, 16 }, /* 16 bytes = 128 bits suffice */ + { "/proc/interrupts", 0, 0 }, + { "/proc/slabinfo", 0, 0 }, + { "/proc/stat", 0, 0 }, + { "/dev/urandom", 32, 64 }, +}; +#define RNGS (sizeof(rngs)/sizeof(struct rngs)) + +int Verbose = 0; + +/* The basic function to hash a file */ +static off_t +hash_file(struct MD5Context *ctx, int fd) +{ + off_t count = 0; + ssize_t r; + unsigned char buf[BUFFERSIZE]; + + while ((r = read(fd, buf, sizeof(buf))) > 0) { + MD5Update(ctx, buf, r); + count += r; + } + /* Separate files with a null byte */ + buf[0] = 0; + MD5Update(ctx, buf, 1); + return count; +} + +int main( int argc, char **argv ) +{ + int i; + struct MD5Context ctx; + unsigned char digest[16]; + unsigned char buf[BUFFERSIZE]; + int fd; + int c; + pid_t pid; + char *file = NULL; + int r; + struct timeval tv; + struct timezone tz; + + while ((c = getopt( argc, argv, "vf:" )) != -1) + switch (c) { + case 'v': ++Verbose; break; + case 'f': file = optarg; break; + } + + MD5Init( &ctx ); + + gettimeofday( &tv, &tz ); + MD5Update( &ctx, (unsigned char *)&tv, sizeof( tv ) ); + pid = getppid(); + MD5Update( &ctx, (unsigned char *)&pid, sizeof( pid )); + pid = getpid(); + MD5Update( &ctx, (unsigned char *)&pid, sizeof( pid )); + + if (file) { + int count = 0; + + if (file[0] == '-' && !file[1]) + fd = fileno(stdin); + else + fd = open( file, O_RDONLY ); + + if (fd < 0) { + fprintf( stderr, "Could not open %s\n", file ); + } else { + count = hash_file( &ctx, fd ); + if (Verbose) + fprintf( stderr, "Got %d bytes from %s\n", count, file ); + + if (file[0] != '-' || file[1]) close( fd ); + } + } + + for (i = 0; i < RNGS; i++) { + if ((fd = open( rngs[i].path, O_RDONLY|O_NONBLOCK )) >= 0) { + int count = sizeof(buf); + + if (rngs[i].maxlength && count > rngs[i].maxlength) + count = rngs[i].maxlength; + r = read( fd, buf, count ); + if (r > 0) + MD5Update( &ctx, buf, r ); + else + r = 0; + close( fd ); + if (Verbose) + fprintf( stderr, "Got %d bytes from %s\n", r, rngs[i].path ); + if (rngs[i].minlength && r >= rngs[i].minlength) + break; + } else if (Verbose) + fprintf( stderr, "Could not open %s\n", rngs[i].path ); + } + + MD5Final( digest, &ctx ); + for (i = 0; i < 16; i++) printf( "%02x", digest[i] ); + putchar ( '\n' ); + + /* + * The following is important for cases like disk full, so shell scripts + * can bomb out properly rather than think they succeeded. + */ + if (fflush(stdout) < 0 || fclose(stdout) < 0) + return 1; + + return 0; +} diff --git a/buildroot/package/x11r7/mcookie/mcookie.mk b/buildroot/package/x11r7/mcookie/mcookie.mk new file mode 100644 index 0000000..b14599d --- /dev/null +++ b/buildroot/package/x11r7/mcookie/mcookie.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# mcookie +# +################################################################################ + +MCOOKIE_LICENSE = Public Domain + +define MCOOKIE_EXTRACT_CMDS + cp package/x11r7/mcookie/mcookie.c $(@D)/ +endef + +define MCOOKIE_BUILD_CMDS + (cd $(@D); $(TARGET_CC) -Wall -Os -s mcookie.c -o mcookie) +endef + +define MCOOKIE_INSTALL_TARGET_CMDS + install -m 0755 -D $(@D)/mcookie $(TARGET_DIR)/usr/bin/mcookie +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/x11r7/x11r7.mk b/buildroot/package/x11r7/x11r7.mk new file mode 100644 index 0000000..85ecbc5 --- /dev/null +++ b/buildroot/package/x11r7/x11r7.mk @@ -0,0 +1 @@ +include $(sort $(wildcard package/x11r7/*/*.mk)) diff --git a/buildroot/package/x11r7/xapp_appres/Config.in b/buildroot/package/x11r7/xapp_appres/Config.in new file mode 100644 index 0000000..7574659 --- /dev/null +++ b/buildroot/package/x11r7/xapp_appres/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_APPRES + bool "appres" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXT + help + list X application resource database diff --git a/buildroot/package/x11r7/xapp_appres/xapp_appres.hash b/buildroot/package/x11r7/xapp_appres/xapp_appres.hash new file mode 100644 index 0000000..a1cbf0b --- /dev/null +++ b/buildroot/package/x11r7/xapp_appres/xapp_appres.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-May/002211.html +sha256 9f614e9427cd9641a4a801ed5055700afa410674c0b7aa186b86078f11b83e8d appres-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_appres/xapp_appres.mk b/buildroot/package/x11r7/xapp_appres/xapp_appres.mk new file mode 100644 index 0000000..b84d742 --- /dev/null +++ b/buildroot/package/x11r7/xapp_appres/xapp_appres.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_appres +# +################################################################################ + +XAPP_APPRES_VERSION = 1.0.4 +XAPP_APPRES_SOURCE = appres-$(XAPP_APPRES_VERSION).tar.bz2 +XAPP_APPRES_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_APPRES_LICENSE = MIT +XAPP_APPRES_LICENSE_FILES = COPYING +XAPP_APPRES_DEPENDENCIES = xlib_libX11 xlib_libXt + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_bdftopcf/Config.in b/buildroot/package/x11r7/xapp_bdftopcf/Config.in new file mode 100644 index 0000000..a9caffa --- /dev/null +++ b/buildroot/package/x11r7/xapp_bdftopcf/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_BDFTOPCF + bool "bdftopcf" + select BR2_PACKAGE_XLIB_LIBXFONT + help + X.Org bdftopcf application diff --git a/buildroot/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.hash b/buildroot/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.hash new file mode 100644 index 0000000..65973a5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-November/002821.html +md5 2a455d3c02390597feb9cefb3fe97a45 bdftopcf-1.1.tar.bz2 +sha1 48a783337a5aa49ebc102c9788ff0f43ea35c5c4 bdftopcf-1.1.tar.bz2 +sha256 4b4df05fc53f1e98993638d6f7e178d95b31745c4568cee407e167491fd311a2 bdftopcf-1.1.tar.bz2 +sha512 7b790e8d512ca2812ac889c156ef91c48798b4744a6857e5b17e0128764b5afa8c5426fe5de05a9819d64745116718db4221b3e657e3c2633465e87179c44bec bdftopcf-1.1.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.mk b/buildroot/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.mk new file mode 100644 index 0000000..7ee618d --- /dev/null +++ b/buildroot/package/x11r7/xapp_bdftopcf/xapp_bdftopcf.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xapp_bdftopcf +# +################################################################################ + +XAPP_BDFTOPCF_VERSION = 1.1 +XAPP_BDFTOPCF_SOURCE = bdftopcf-$(XAPP_BDFTOPCF_VERSION).tar.bz2 +XAPP_BDFTOPCF_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_BDFTOPCF_LICENSE = MIT +XAPP_BDFTOPCF_LICENSE_FILES = COPYING +XAPP_BDFTOPCF_DEPENDENCIES = xlib_libXfont +HOST_XAPP_BDFTOPCF_DEPENDENCIES = host-xlib_libXfont + +# needed for linking against libXfont +XAPP_BDFTOPCF_MAKE_OPTS += LIBS=-ldl + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xapp_beforelight/Config.in b/buildroot/package/x11r7/xapp_beforelight/Config.in new file mode 100644 index 0000000..3a11189 --- /dev/null +++ b/buildroot/package/x11r7/xapp_beforelight/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_BEFORELIGHT + bool "beforelight" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXT + help + screen saver diff --git a/buildroot/package/x11r7/xapp_beforelight/xapp_beforelight.hash b/buildroot/package/x11r7/xapp_beforelight/xapp_beforelight.hash new file mode 100644 index 0000000..3586b36 --- /dev/null +++ b/buildroot/package/x11r7/xapp_beforelight/xapp_beforelight.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-January/002131.html +sha256 8fcab6f15148ca680c0d3da8de7dcb41f8e6a076f442cf8bdcf272be9e348166 beforelight-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_beforelight/xapp_beforelight.mk b/buildroot/package/x11r7/xapp_beforelight/xapp_beforelight.mk new file mode 100644 index 0000000..b39fe78 --- /dev/null +++ b/buildroot/package/x11r7/xapp_beforelight/xapp_beforelight.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_beforelight +# +################################################################################ + +XAPP_BEFORELIGHT_VERSION = 1.0.5 +XAPP_BEFORELIGHT_SOURCE = beforelight-$(XAPP_BEFORELIGHT_VERSION).tar.bz2 +XAPP_BEFORELIGHT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_BEFORELIGHT_LICENSE = MIT +XAPP_BEFORELIGHT_LICENSE_FILES = COPYING +XAPP_BEFORELIGHT_DEPENDENCIES = xlib_libX11 xlib_libXScrnSaver xlib_libXaw xlib_libXt + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_bitmap/Config.in b/buildroot/package/x11r7/xapp_bitmap/Config.in new file mode 100644 index 0000000..e5bb5e8 --- /dev/null +++ b/buildroot/package/x11r7/xapp_bitmap/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_BITMAP + bool "bitmap" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XDATA_XBITMAPS + help + X.Org bitmap application diff --git a/buildroot/package/x11r7/xapp_bitmap/xapp_bitmap.hash b/buildroot/package/x11r7/xapp_bitmap/xapp_bitmap.hash new file mode 100644 index 0000000..cd64362 --- /dev/null +++ b/buildroot/package/x11r7/xapp_bitmap/xapp_bitmap.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-January/002518.html +sha256 806cdeb80f5466ba9121e8cc6c6af82d3e4b32ef1a57bc5a76c15887640ec35d bitmap-1.0.8.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_bitmap/xapp_bitmap.mk b/buildroot/package/x11r7/xapp_bitmap/xapp_bitmap.mk new file mode 100644 index 0000000..851af31 --- /dev/null +++ b/buildroot/package/x11r7/xapp_bitmap/xapp_bitmap.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_bitmap +# +################################################################################ + +XAPP_BITMAP_VERSION = 1.0.8 +XAPP_BITMAP_SOURCE = bitmap-$(XAPP_BITMAP_VERSION).tar.bz2 +XAPP_BITMAP_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_BITMAP_LICENSE = MIT +XAPP_BITMAP_LICENSE_FILES = COPYING +XAPP_BITMAP_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXmu xdata_xbitmaps + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_editres/Config.in b/buildroot/package/x11r7/xapp_editres/Config.in new file mode 100644 index 0000000..390ec48 --- /dev/null +++ b/buildroot/package/x11r7/xapp_editres/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_EDITRES + bool "editres" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXT + help + a dynamic resource editor for X Toolkit applications diff --git a/buildroot/package/x11r7/xapp_editres/xapp_editres.hash b/buildroot/package/x11r7/xapp_editres/xapp_editres.hash new file mode 100644 index 0000000..74fc98d --- /dev/null +++ b/buildroot/package/x11r7/xapp_editres/xapp_editres.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-January/002120.html +sha256 3b66d1240bde853872bbb341c4b8fb029094d0a5d21347a58831f15b162c4df0 editres-1.0.6.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_editres/xapp_editres.mk b/buildroot/package/x11r7/xapp_editres/xapp_editres.mk new file mode 100644 index 0000000..6cc4805 --- /dev/null +++ b/buildroot/package/x11r7/xapp_editres/xapp_editres.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_editres +# +################################################################################ + +XAPP_EDITRES_VERSION = 1.0.6 +XAPP_EDITRES_SOURCE = editres-$(XAPP_EDITRES_VERSION).tar.bz2 +XAPP_EDITRES_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_EDITRES_LICENSE = MIT +XAPP_EDITRES_LICENSE_FILES = COPYING +XAPP_EDITRES_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXmu xlib_libXt + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_fonttosfnt/Config.in b/buildroot/package/x11r7/xapp_fonttosfnt/Config.in new file mode 100644 index 0000000..eb35710 --- /dev/null +++ b/buildroot/package/x11r7/xapp_fonttosfnt/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_FONTTOSFNT + bool "fonttosfnt" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBFONTENC + help + X.Org fonttosfnt application diff --git a/buildroot/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.hash b/buildroot/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.hash new file mode 100644 index 0000000..e76c5c8 --- /dev/null +++ b/buildroot/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2008-May/000543.html +sha1 a609fba513947e5267c924f85774c0e44a076a7d fonttosfnt-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.mk b/buildroot/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.mk new file mode 100644 index 0000000..1571a3b --- /dev/null +++ b/buildroot/package/x11r7/xapp_fonttosfnt/xapp_fonttosfnt.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_fonttosfnt +# +################################################################################ + +XAPP_FONTTOSFNT_VERSION = 1.0.4 +XAPP_FONTTOSFNT_SOURCE = fonttosfnt-$(XAPP_FONTTOSFNT_VERSION).tar.bz2 +XAPP_FONTTOSFNT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_FONTTOSFNT_LICENSE = MIT +XAPP_FONTTOSFNT_LICENSE_FILES = COPYING +XAPP_FONTTOSFNT_DEPENDENCIES = freetype xlib_libX11 xlib_libfontenc + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_fslsfonts/Config.in b/buildroot/package/x11r7/xapp_fslsfonts/Config.in new file mode 100644 index 0000000..1917d61 --- /dev/null +++ b/buildroot/package/x11r7/xapp_fslsfonts/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_FSLSFONTS + bool "fslsfonts" + select BR2_PACKAGE_XLIB_LIBFS + select BR2_PACKAGE_XLIB_LIBX11 + help + list fonts served by X font server diff --git a/buildroot/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.hash b/buildroot/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.hash new file mode 100644 index 0000000..d1d2b65 --- /dev/null +++ b/buildroot/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2014-December/002510.html +sha256 f1ed55093356b78daec2678d22f52d42ec11fe88575562d734396962e626d7f6 fslsfonts-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.mk b/buildroot/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.mk new file mode 100644 index 0000000..27786a5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_fslsfonts/xapp_fslsfonts.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_fslsfonts +# +################################################################################ + +XAPP_FSLSFONTS_VERSION = 1.0.5 +XAPP_FSLSFONTS_SOURCE = fslsfonts-$(XAPP_FSLSFONTS_VERSION).tar.bz2 +XAPP_FSLSFONTS_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_FSLSFONTS_LICENSE = MIT +XAPP_FSLSFONTS_LICENSE_FILES = COPYING +XAPP_FSLSFONTS_DEPENDENCIES = xlib_libFS xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_fstobdf/Config.in b/buildroot/package/x11r7/xapp_fstobdf/Config.in new file mode 100644 index 0000000..0a1f62b --- /dev/null +++ b/buildroot/package/x11r7/xapp_fstobdf/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_FSTOBDF + bool "fstobdf" + select BR2_PACKAGE_XLIB_LIBFS + select BR2_PACKAGE_XLIB_LIBX11 + help + generate BDF font from X font server diff --git a/buildroot/package/x11r7/xapp_fstobdf/xapp_fstobdf.hash b/buildroot/package/x11r7/xapp_fstobdf/xapp_fstobdf.hash new file mode 100644 index 0000000..d12e8e5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_fstobdf/xapp_fstobdf.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2014-December/002511.html +sha256 66cf550326c993e7043f260a8ec4a533a3bf9d8f0e7397a6fe9cca803732e92e fstobdf-1.0.6.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_fstobdf/xapp_fstobdf.mk b/buildroot/package/x11r7/xapp_fstobdf/xapp_fstobdf.mk new file mode 100644 index 0000000..e897514 --- /dev/null +++ b/buildroot/package/x11r7/xapp_fstobdf/xapp_fstobdf.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_fstobdf +# +################################################################################ + +XAPP_FSTOBDF_VERSION = 1.0.6 +XAPP_FSTOBDF_SOURCE = fstobdf-$(XAPP_FSTOBDF_VERSION).tar.bz2 +XAPP_FSTOBDF_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_FSTOBDF_LICENSE = MIT +XAPP_FSTOBDF_LICENSE_FILES = COPYING +XAPP_FSTOBDF_DEPENDENCIES = xlib_libFS xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_iceauth/Config.in b/buildroot/package/x11r7/xapp_iceauth/Config.in new file mode 100644 index 0000000..ce2db98 --- /dev/null +++ b/buildroot/package/x11r7/xapp_iceauth/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_ICEAUTH + bool "iceauth" + select BR2_PACKAGE_XLIB_LIBICE + select BR2_PACKAGE_XLIB_LIBX11 + help + ICE authority file utility diff --git a/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.hash b/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.hash new file mode 100644 index 0000000..90c5f70 --- /dev/null +++ b/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-January/002519.html +sha256 1216af2dee99b318fcf8bf9a259915273bcb37a7f1e7859af4f15d0ebf6f3f0a iceauth-1.0.7.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.mk b/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.mk new file mode 100644 index 0000000..d30ff6f --- /dev/null +++ b/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_iceauth +# +################################################################################ + +XAPP_ICEAUTH_VERSION = 1.0.7 +XAPP_ICEAUTH_SOURCE = iceauth-$(XAPP_ICEAUTH_VERSION).tar.bz2 +XAPP_ICEAUTH_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_ICEAUTH_LICENSE = MIT +XAPP_ICEAUTH_LICENSE_FILES = COPYING +XAPP_ICEAUTH_DEPENDENCIES = xlib_libICE xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_ico/Config.in b/buildroot/package/x11r7/xapp_ico/Config.in new file mode 100644 index 0000000..892f2be --- /dev/null +++ b/buildroot/package/x11r7/xapp_ico/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_ICO + bool "ico" + select BR2_PACKAGE_XLIB_LIBX11 + help + animate an icosahedron or other polyhedron diff --git a/buildroot/package/x11r7/xapp_ico/xapp_ico.hash b/buildroot/package/x11r7/xapp_ico/xapp_ico.hash new file mode 100644 index 0000000..055e85e --- /dev/null +++ b/buildroot/package/x11r7/xapp_ico/xapp_ico.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-January/002135.html +sha256 2932767098f95ca129a0c7f0fecb0a18c789a79c1747f7423fdfe9f4e0c53590 ico-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_ico/xapp_ico.mk b/buildroot/package/x11r7/xapp_ico/xapp_ico.mk new file mode 100644 index 0000000..621d1e4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_ico/xapp_ico.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_ico +# +################################################################################ + +XAPP_ICO_VERSION = 1.0.4 +XAPP_ICO_SOURCE = ico-$(XAPP_ICO_VERSION).tar.bz2 +XAPP_ICO_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_ICO_LICENSE = MIT +XAPP_ICO_LICENSE_FILES = COPYING +XAPP_ICO_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_listres/Config.in b/buildroot/package/x11r7/xapp_listres/Config.in new file mode 100644 index 0000000..a3be6b3 --- /dev/null +++ b/buildroot/package/x11r7/xapp_listres/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_LISTRES + bool "listres" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXT + help + list resources in widgets diff --git a/buildroot/package/x11r7/xapp_listres/xapp_listres.hash b/buildroot/package/x11r7/xapp_listres/xapp_listres.hash new file mode 100644 index 0000000..ffc9f7e --- /dev/null +++ b/buildroot/package/x11r7/xapp_listres/xapp_listres.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2012-February/001838.html +sha256 c3d71e9a01650e3fd470189a749cd0202ef03d9e399350a7a7443d7595ed478e listres-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_listres/xapp_listres.mk b/buildroot/package/x11r7/xapp_listres/xapp_listres.mk new file mode 100644 index 0000000..88cdd4f --- /dev/null +++ b/buildroot/package/x11r7/xapp_listres/xapp_listres.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_listres +# +################################################################################ + +XAPP_LISTRES_VERSION = 1.0.3 +XAPP_LISTRES_SOURCE = listres-$(XAPP_LISTRES_VERSION).tar.bz2 +XAPP_LISTRES_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_LISTRES_LICENSE = MIT +XAPP_LISTRES_LICENSE_FILES = COPYING +XAPP_LISTRES_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXmu xlib_libXt + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_luit/0001-posix-openpt.patch b/buildroot/package/x11r7/xapp_luit/0001-posix-openpt.patch new file mode 100644 index 0000000..c8ff8e4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_luit/0001-posix-openpt.patch @@ -0,0 +1,19 @@ +Suggested workaround to build with recent gcc versions + +Upstream bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47792 + +Signed-off-by: Markos Chandras + +Index: xapp_luit-1.1.1/sys.c +=================================================================== +--- xapp_luit-1.1.1.orig/sys.c ++++ xapp_luit-1.1.1/sys.c +@@ -20,6 +20,8 @@ OUT OF OR IN CONNECTION WITH THE SOFTWAR + THE SOFTWARE. + */ + ++#define _XOPEN_SOURCE 600 ++ + #ifdef HAVE_CONFIG_H + # include "config.h" + #endif diff --git a/buildroot/package/x11r7/xapp_luit/Config.in b/buildroot/package/x11r7/xapp_luit/Config.in new file mode 100644 index 0000000..69da570 --- /dev/null +++ b/buildroot/package/x11r7/xapp_luit/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_LUIT + bool "luit" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBFONTENC + help + Locale and ISO 2022 support for Unicode terminals diff --git a/buildroot/package/x11r7/xapp_luit/xapp_luit.hash b/buildroot/package/x11r7/xapp_luit/xapp_luit.hash new file mode 100644 index 0000000..4763b0d --- /dev/null +++ b/buildroot/package/x11r7/xapp_luit/xapp_luit.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2012-March/001894.html +sha256 30b0e787cb07a0f504b70f1d6123930522111ce9d4276f6683a69b322b49c636 luit-1.1.1.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_luit/xapp_luit.mk b/buildroot/package/x11r7/xapp_luit/xapp_luit.mk new file mode 100644 index 0000000..d3217fe --- /dev/null +++ b/buildroot/package/x11r7/xapp_luit/xapp_luit.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_luit +# +################################################################################ + +XAPP_LUIT_VERSION = 1.1.1 +XAPP_LUIT_SOURCE = luit-$(XAPP_LUIT_VERSION).tar.bz2 +XAPP_LUIT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_LUIT_LICENSE = MIT +XAPP_LUIT_LICENSE_FILES = COPYING +XAPP_LUIT_DEPENDENCIES = xlib_libX11 xlib_libfontenc + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_mkfontdir/Config.in b/buildroot/package/x11r7/xapp_mkfontdir/Config.in new file mode 100644 index 0000000..155772d --- /dev/null +++ b/buildroot/package/x11r7/xapp_mkfontdir/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_MKFONTDIR + bool "mkfontdir" + select BR2_PACKAGE_XAPP_MKFONTSCALE + help + create an index of X font files in a directory diff --git a/buildroot/package/x11r7/xapp_mkfontdir/xapp_mkfontdir.hash b/buildroot/package/x11r7/xapp_mkfontdir/xapp_mkfontdir.hash new file mode 100644 index 0000000..7a218b9 --- /dev/null +++ b/buildroot/package/x11r7/xapp_mkfontdir/xapp_mkfontdir.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2012-February/001818.html +sha256 56d52a482df130484e51fd066d1b6eda7c2c02ddbc91fe6e2be1b9c4e7306530 mkfontdir-1.0.7.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_mkfontdir/xapp_mkfontdir.mk b/buildroot/package/x11r7/xapp_mkfontdir/xapp_mkfontdir.mk new file mode 100644 index 0000000..f2227bd --- /dev/null +++ b/buildroot/package/x11r7/xapp_mkfontdir/xapp_mkfontdir.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xapp_mkfontdir +# +################################################################################ + +XAPP_MKFONTDIR_VERSION = 1.0.7 +XAPP_MKFONTDIR_SOURCE = mkfontdir-$(XAPP_MKFONTDIR_VERSION).tar.bz2 +XAPP_MKFONTDIR_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_MKFONTDIR_LICENSE = MIT +XAPP_MKFONTDIR_LICENSE_FILES = COPYING +XAPP_MKFONTDIR_DEPENDENCIES = xapp_mkfontscale +HOST_XAPP_MKFONTDIR_DEPENDENCIES = host-xapp_mkfontscale + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xapp_mkfontscale/Config.in b/buildroot/package/x11r7/xapp_mkfontscale/Config.in new file mode 100644 index 0000000..540dd45 --- /dev/null +++ b/buildroot/package/x11r7/xapp_mkfontscale/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_MKFONTSCALE + bool "mkfontscale" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBFONTENC + help + create an index of scalable font files for X diff --git a/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash b/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash new file mode 100644 index 0000000..0cab2b2 --- /dev/null +++ b/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-January/002520.html +sha256 8c6d5228af885477b9aec60ca6f172578e7d2de42234357af62fb00439453f20 mkfontscale-1.1.2.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk b/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk new file mode 100644 index 0000000..d7abf6c --- /dev/null +++ b/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapp_mkfontscale +# +################################################################################ + +XAPP_MKFONTSCALE_VERSION = 1.1.2 +XAPP_MKFONTSCALE_SOURCE = mkfontscale-$(XAPP_MKFONTSCALE_VERSION).tar.bz2 +XAPP_MKFONTSCALE_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_MKFONTSCALE_LICENSE = MIT +XAPP_MKFONTSCALE_LICENSE_FILES = COPYING +XAPP_MKFONTSCALE_DEPENDENCIES = zlib freetype xlib_libfontenc xproto_xproto +HOST_XAPP_MKFONTSCALE_DEPENDENCIES = \ + host-zlib host-freetype host-xlib_libfontenc host-xproto_xproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xapp_oclock/Config.in b/buildroot/package/x11r7/xapp_oclock/Config.in new file mode 100644 index 0000000..00cd413 --- /dev/null +++ b/buildroot/package/x11r7/xapp_oclock/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_OCLOCK + bool "oclock" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXMU + help + round X clock diff --git a/buildroot/package/x11r7/xapp_oclock/xapp_oclock.hash b/buildroot/package/x11r7/xapp_oclock/xapp_oclock.hash new file mode 100644 index 0000000..ad54499 --- /dev/null +++ b/buildroot/package/x11r7/xapp_oclock/xapp_oclock.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2012-February/001820.html +sha256 54f5fb85f5828705683f457e559fb18753332db15ae82da561b0ae5a63915091 oclock-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_oclock/xapp_oclock.mk b/buildroot/package/x11r7/xapp_oclock/xapp_oclock.mk new file mode 100644 index 0000000..17d544c --- /dev/null +++ b/buildroot/package/x11r7/xapp_oclock/xapp_oclock.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xapp_oclock +# +################################################################################ + +XAPP_OCLOCK_VERSION = 1.0.3 +XAPP_OCLOCK_SOURCE = oclock-$(XAPP_OCLOCK_VERSION).tar.bz2 +XAPP_OCLOCK_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_OCLOCK_LICENSE = MIT +XAPP_OCLOCK_LICENSE_FILES = COPYING +XAPP_OCLOCK_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXmu + +ifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y) +XAPP_OCLOCK_CONF_OPTS += --with-xkb +XAPP_OCLOCK_DEPENDENCIES += xlib_libxkbfile +else +XAPP_OCLOCK_CONF_OPTS += --without-xkb +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_rgb/Config.in b/buildroot/package/x11r7/xapp_rgb/Config.in new file mode 100644 index 0000000..038b849 --- /dev/null +++ b/buildroot/package/x11r7/xapp_rgb/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_RGB + bool "rgb" + select BR2_PACKAGE_XPROTO_XPROTO + help + uncompile an rgb color-name database diff --git a/buildroot/package/x11r7/xapp_rgb/xapp_rgb.hash b/buildroot/package/x11r7/xapp_rgb/xapp_rgb.hash new file mode 100644 index 0000000..2b67bfc --- /dev/null +++ b/buildroot/package/x11r7/xapp_rgb/xapp_rgb.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2014-November/002494.html +sha256 bbca7c6aa59939b9f6a0fb9fff15dfd62176420ffd4ae30c8d92a6a125fbe6b0 rgb-1.0.6.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_rgb/xapp_rgb.mk b/buildroot/package/x11r7/xapp_rgb/xapp_rgb.mk new file mode 100644 index 0000000..82878ab --- /dev/null +++ b/buildroot/package/x11r7/xapp_rgb/xapp_rgb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_rgb +# +################################################################################ + +XAPP_RGB_VERSION = 1.0.6 +XAPP_RGB_SOURCE = rgb-$(XAPP_RGB_VERSION).tar.bz2 +XAPP_RGB_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_RGB_LICENSE = MIT +XAPP_RGB_LICENSE_FILES = COPYING +XAPP_RGB_DEPENDENCIES = xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_rstart/Config.in b/buildroot/package/x11r7/xapp_rstart/Config.in new file mode 100644 index 0000000..3c1d5a9 --- /dev/null +++ b/buildroot/package/x11r7/xapp_rstart/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_RSTART + bool "rstart" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + help + X.Org rstart application diff --git a/buildroot/package/x11r7/xapp_rstart/xapp_rstart.hash b/buildroot/package/x11r7/xapp_rstart/xapp_rstart.hash new file mode 100644 index 0000000..47b7353 --- /dev/null +++ b/buildroot/package/x11r7/xapp_rstart/xapp_rstart.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-February/002168.html +sha256 29134e9fdffc8d6ac6904c293b392ba6a493ce571fbd2015485b19a8e4d0ffeb rstart-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_rstart/xapp_rstart.mk b/buildroot/package/x11r7/xapp_rstart/xapp_rstart.mk new file mode 100644 index 0000000..2bcc292 --- /dev/null +++ b/buildroot/package/x11r7/xapp_rstart/xapp_rstart.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_rstart +# +################################################################################ + +XAPP_RSTART_VERSION = 1.0.5 +XAPP_RSTART_SOURCE = rstart-$(XAPP_RSTART_VERSION).tar.bz2 +XAPP_RSTART_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_RSTART_LICENSE = MIT +XAPP_RSTART_LICENSE_FILES = COPYING +XAPP_RSTART_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_scripts/Config.in b/buildroot/package/x11r7/xapp_scripts/Config.in new file mode 100644 index 0000000..691f0e2 --- /dev/null +++ b/buildroot/package/x11r7/xapp_scripts/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_SCRIPTS + bool "scripts" + select BR2_PACKAGE_XLIB_LIBX11 + help + start an X program on a remote machine diff --git a/buildroot/package/x11r7/xapp_scripts/xapp_scripts.hash b/buildroot/package/x11r7/xapp_scripts/xapp_scripts.hash new file mode 100644 index 0000000..79a4318 --- /dev/null +++ b/buildroot/package/x11r7/xapp_scripts/xapp_scripts.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 1b154b4359302ca499818c45396325aef9ff364d6ff4ce5c3769e4803994a136 scripts-1.0.1.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_scripts/xapp_scripts.mk b/buildroot/package/x11r7/xapp_scripts/xapp_scripts.mk new file mode 100644 index 0000000..5146db5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_scripts/xapp_scripts.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_scripts +# +################################################################################ + +XAPP_SCRIPTS_VERSION = 1.0.1 +XAPP_SCRIPTS_SOURCE = scripts-$(XAPP_SCRIPTS_VERSION).tar.bz2 +XAPP_SCRIPTS_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_SCRIPTS_LICENSE = MIT +XAPP_SCRIPTS_LICENSE_FILES = COPYING +XAPP_SCRIPTS_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_sessreg/0001-missing_path_wtmpx.patch b/buildroot/package/x11r7/xapp_sessreg/0001-missing_path_wtmpx.patch new file mode 100644 index 0000000..0be242c --- /dev/null +++ b/buildroot/package/x11r7/xapp_sessreg/0001-missing_path_wtmpx.patch @@ -0,0 +1,24 @@ +Fix missing defines _PATH_WTMPX/_PATH_UTMPX in musl + +Downloaded from +https://cgit.gentoo.org/proj/musl.git/tree/x11-apps/sessreg/files/sessreg-1.1.0-missing_path_wtmpx.patch + +Signed-off-by: Bernd Kuhls + +diff -Naur sessreg-1.1.0.orig/sessreg.h sessreg-1.1.0/sessreg.h +--- sessreg-1.1.0.orig/sessreg.h 2015-01-20 05:00:27.000000000 +0000 ++++ sessreg-1.1.0/sessreg.h 2016-02-23 11:54:42.057000000 +0000 +@@ -103,6 +103,13 @@ + # define TTYS_FILE "/etc/ttys" + #endif + ++#ifndef _PATH_WTMPX ++# define _PATH_WTMPX "/var/log/wtmp" ++#endif ++#ifndef _PATH_UTMPX ++# define _PATH_UTMPX "/var/log/utmp" ++#endif ++ + #ifndef WTMPX_FILE + # define WTMPX_FILE _PATH_WTMPX + #endif diff --git a/buildroot/package/x11r7/xapp_sessreg/Config.in b/buildroot/package/x11r7/xapp_sessreg/Config.in new file mode 100644 index 0000000..0796bc1 --- /dev/null +++ b/buildroot/package/x11r7/xapp_sessreg/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_SESSREG + bool "sessreg" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XPROTO_XPROTO + help + manage utmp/wtmp entries for non-init clients diff --git a/buildroot/package/x11r7/xapp_sessreg/xapp_sessreg.hash b/buildroot/package/x11r7/xapp_sessreg/xapp_sessreg.hash new file mode 100644 index 0000000..47495b2 --- /dev/null +++ b/buildroot/package/x11r7/xapp_sessreg/xapp_sessreg.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-February/002778.html +sha256 78a76ae3f3f6a26547a34630d1b740f42344848b5fb6d7c9c7f7da255e35a6e1 sessreg-1.1.1.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_sessreg/xapp_sessreg.mk b/buildroot/package/x11r7/xapp_sessreg/xapp_sessreg.mk new file mode 100644 index 0000000..c6e9463 --- /dev/null +++ b/buildroot/package/x11r7/xapp_sessreg/xapp_sessreg.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_sessreg +# +################################################################################ + +XAPP_SESSREG_VERSION = 1.1.1 +XAPP_SESSREG_SOURCE = sessreg-$(XAPP_SESSREG_VERSION).tar.bz2 +XAPP_SESSREG_SITE = https://xorg.freedesktop.org/archive/individual/app +XAPP_SESSREG_LICENSE = MIT +XAPP_SESSREG_LICENSE_FILES = COPYING +XAPP_SESSREG_DEPENDENCIES = xlib_libX11 xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_setxkbmap/Config.in b/buildroot/package/x11r7/xapp_setxkbmap/Config.in new file mode 100644 index 0000000..2b1389c --- /dev/null +++ b/buildroot/package/x11r7/xapp_setxkbmap/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_SETXKBMAP + bool "setxkbmap" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + Controls the keyboard layout of a running X server. diff --git a/buildroot/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.hash b/buildroot/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.hash new file mode 100644 index 0000000..bdc5f1c --- /dev/null +++ b/buildroot/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002563.html +sha256 a9ddb3963f263ba13f0ea105d8c45a531832140530217cc559587bb94f02d3e1 setxkbmap-1.3.1.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.mk b/buildroot/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.mk new file mode 100644 index 0000000..b923d60 --- /dev/null +++ b/buildroot/package/x11r7/xapp_setxkbmap/xapp_setxkbmap.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_setxkbmap +# +################################################################################ + +XAPP_SETXKBMAP_VERSION = 1.3.1 +XAPP_SETXKBMAP_SOURCE = setxkbmap-$(XAPP_SETXKBMAP_VERSION).tar.bz2 +XAPP_SETXKBMAP_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_SETXKBMAP_LICENSE = MIT +XAPP_SETXKBMAP_LICENSE_FILES = COPYING +XAPP_SETXKBMAP_DEPENDENCIES = xlib_libX11 xlib_libxkbfile + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_showfont/Config.in b/buildroot/package/x11r7/xapp_showfont/Config.in new file mode 100644 index 0000000..edfab3f --- /dev/null +++ b/buildroot/package/x11r7/xapp_showfont/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_SHOWFONT + bool "showfont" + select BR2_PACKAGE_XLIB_LIBFS + help + font dumper for X font server diff --git a/buildroot/package/x11r7/xapp_showfont/xapp_showfont.hash b/buildroot/package/x11r7/xapp_showfont/xapp_showfont.hash new file mode 100644 index 0000000..0fff9ce --- /dev/null +++ b/buildroot/package/x11r7/xapp_showfont/xapp_showfont.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2014-December/002513.html +sha256 e9735c1c530b8a52edfab7415cc0fd7f8d2889095114f4cb689a27476461ac89 showfont-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_showfont/xapp_showfont.mk b/buildroot/package/x11r7/xapp_showfont/xapp_showfont.mk new file mode 100644 index 0000000..c0b8c9a --- /dev/null +++ b/buildroot/package/x11r7/xapp_showfont/xapp_showfont.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_showfont +# +################################################################################ + +XAPP_SHOWFONT_VERSION = 1.0.5 +XAPP_SHOWFONT_SOURCE = showfont-$(XAPP_SHOWFONT_VERSION).tar.bz2 +XAPP_SHOWFONT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_SHOWFONT_LICENSE = MIT +XAPP_SHOWFONT_LICENSE_FILES = COPYING +XAPP_SHOWFONT_DEPENDENCIES = xlib_libFS + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_smproxy/Config.in b/buildroot/package/x11r7/xapp_smproxy/Config.in new file mode 100644 index 0000000..80ab984 --- /dev/null +++ b/buildroot/package/x11r7/xapp_smproxy/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_SMPROXY + bool "smproxy" + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXT + help + Session Manager Proxy diff --git a/buildroot/package/x11r7/xapp_smproxy/xapp_smproxy.hash b/buildroot/package/x11r7/xapp_smproxy/xapp_smproxy.hash new file mode 100644 index 0000000..7bb7bdb --- /dev/null +++ b/buildroot/package/x11r7/xapp_smproxy/xapp_smproxy.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002564.html +sha256 6cf19155a2752237f36dbf8bc4184465ea190d2652f887faccb4e2a6ebf77266 smproxy-1.0.6.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_smproxy/xapp_smproxy.mk b/buildroot/package/x11r7/xapp_smproxy/xapp_smproxy.mk new file mode 100644 index 0000000..f51c1ec --- /dev/null +++ b/buildroot/package/x11r7/xapp_smproxy/xapp_smproxy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_smproxy +# +################################################################################ + +XAPP_SMPROXY_VERSION = 1.0.6 +XAPP_SMPROXY_SOURCE = smproxy-$(XAPP_SMPROXY_VERSION).tar.bz2 +XAPP_SMPROXY_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_SMPROXY_LICENSE = MIT +XAPP_SMPROXY_LICENSE_FILES = COPYING +XAPP_SMPROXY_DEPENDENCIES = xlib_libXmu xlib_libXt + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_twm/Config.in b/buildroot/package/x11r7/xapp_twm/Config.in new file mode 100644 index 0000000..25bf800 --- /dev/null +++ b/buildroot/package/x11r7/xapp_twm/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_TWM + bool "twm" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXMU + help + No description available diff --git a/buildroot/package/x11r7/xapp_twm/xapp_twm.hash b/buildroot/package/x11r7/xapp_twm/xapp_twm.hash new file mode 100644 index 0000000..eecc5c4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_twm/xapp_twm.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002565.html +sha256 c575167ac33edf3bd1592f1bedfe0559debb128ed5fb4873c1278e3be166310a twm-1.0.9.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_twm/xapp_twm.mk b/buildroot/package/x11r7/xapp_twm/xapp_twm.mk new file mode 100644 index 0000000..1f576e1 --- /dev/null +++ b/buildroot/package/x11r7/xapp_twm/xapp_twm.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_twm +# +################################################################################ + +XAPP_TWM_VERSION = 1.0.9 +XAPP_TWM_SOURCE = twm-$(XAPP_TWM_VERSION).tar.bz2 +XAPP_TWM_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_TWM_LICENSE = MIT +XAPP_TWM_LICENSE_FILES = COPYING +XAPP_TWM_DEPENDENCIES = \ + host-bison xlib_libX11 xlib_libXext xlib_libXt xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_viewres/Config.in b/buildroot/package/x11r7/xapp_viewres/Config.in new file mode 100644 index 0000000..32827c8 --- /dev/null +++ b/buildroot/package/x11r7/xapp_viewres/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_VIEWRES + bool "viewres" + select BR2_PACKAGE_XLIB_LIBXAW + help + graphical class browser for Xt diff --git a/buildroot/package/x11r7/xapp_viewres/xapp_viewres.hash b/buildroot/package/x11r7/xapp_viewres/xapp_viewres.hash new file mode 100644 index 0000000..c45b1b2 --- /dev/null +++ b/buildroot/package/x11r7/xapp_viewres/xapp_viewres.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-January/002122.html +sha256 d9c11b44908d91926df8b33428ae04c86c85e4f8380e9b5e68326a651c872e59 viewres-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_viewres/xapp_viewres.mk b/buildroot/package/x11r7/xapp_viewres/xapp_viewres.mk new file mode 100644 index 0000000..3e1fd8d --- /dev/null +++ b/buildroot/package/x11r7/xapp_viewres/xapp_viewres.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_viewres +# +################################################################################ + +XAPP_VIEWRES_VERSION = 1.0.4 +XAPP_VIEWRES_SOURCE = viewres-$(XAPP_VIEWRES_VERSION).tar.bz2 +XAPP_VIEWRES_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_VIEWRES_LICENSE = MIT +XAPP_VIEWRES_LICENSE_FILES = COPYING +XAPP_VIEWRES_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_x11perf/Config.in b/buildroot/package/x11r7/xapp_x11perf/Config.in new file mode 100644 index 0000000..0f1eca8 --- /dev/null +++ b/buildroot/package/x11r7/xapp_x11perf/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_X11PERF + bool "x11perf" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXFT + help + summarize x11perf results diff --git a/buildroot/package/x11r7/xapp_x11perf/xapp_x11perf.hash b/buildroot/package/x11r7/xapp_x11perf/xapp_x11perf.hash new file mode 100644 index 0000000..8580993 --- /dev/null +++ b/buildroot/package/x11r7/xapp_x11perf/xapp_x11perf.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002566.html +sha256 e87098dec1947572d70c62697a7b70bde1ab5668237d4660080eade6bc096751 x11perf-1.6.0.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_x11perf/xapp_x11perf.mk b/buildroot/package/x11r7/xapp_x11perf/xapp_x11perf.mk new file mode 100644 index 0000000..8cba79d --- /dev/null +++ b/buildroot/package/x11r7/xapp_x11perf/xapp_x11perf.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_x11perf +# +################################################################################ + +XAPP_X11PERF_VERSION = 1.6.0 +XAPP_X11PERF_SOURCE = x11perf-$(XAPP_X11PERF_VERSION).tar.bz2 +XAPP_X11PERF_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_X11PERF_LICENSE = MIT +XAPP_X11PERF_LICENSE_FILES = COPYING +XAPP_X11PERF_DEPENDENCIES = xlib_libX11 xlib_libXmu xlib_libXft + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xauth/Config.in b/buildroot/package/x11r7/xapp_xauth/Config.in new file mode 100644 index 0000000..919fd50 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xauth/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XAUTH + bool "xauth" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAU + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXMU + help + X authority file utility diff --git a/buildroot/package/x11r7/xapp_xauth/xapp_xauth.hash b/buildroot/package/x11r7/xapp_xauth/xapp_xauth.hash new file mode 100644 index 0000000..f6987c1 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xauth/xapp_xauth.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002772.html +sha256 5afe42ce3cdf4f60520d1658d2b17face45c74050f39af45dccdc95e73fafc4d xauth-1.0.10.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xauth/xapp_xauth.mk b/buildroot/package/x11r7/xapp_xauth/xapp_xauth.mk new file mode 100644 index 0000000..80ac6a4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xauth/xapp_xauth.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xauth +# +################################################################################ + +XAPP_XAUTH_VERSION = 1.0.10 +XAPP_XAUTH_SOURCE = xauth-$(XAPP_XAUTH_VERSION).tar.bz2 +XAPP_XAUTH_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XAUTH_LICENSE = MIT +XAPP_XAUTH_LICENSE_FILES = COPYING +XAPP_XAUTH_DEPENDENCIES = xlib_libX11 xlib_libXau xlib_libXext xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xbacklight/Config.in b/buildroot/package/x11r7/xapp_xbacklight/Config.in new file mode 100644 index 0000000..5764056 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xbacklight/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XBACKLIGHT + bool "xbacklight" + select BR2_PACKAGE_XCB_UTIL + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXRENDER + help + xbacklight diff --git a/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash b/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash new file mode 100644 index 0000000..058c53f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-October/002331.html +sha256 17f6cf51a35eaa918abec36b7871d28b712c169312e22a0eaf1ffe8d6468362b xbacklight-1.2.1.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk b/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk new file mode 100644 index 0000000..88c4bc5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xbacklight +# +################################################################################ + +XAPP_XBACKLIGHT_VERSION = 1.2.1 +XAPP_XBACKLIGHT_SOURCE = xbacklight-$(XAPP_XBACKLIGHT_VERSION).tar.bz2 +XAPP_XBACKLIGHT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XBACKLIGHT_LICENSE = MIT +XAPP_XBACKLIGHT_LICENSE_FILES = COPYING +XAPP_XBACKLIGHT_DEPENDENCIES = xlib_libX11 xlib_libXrandr xlib_libXrender xcb-util + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xbiff/Config.in b/buildroot/package/x11r7/xapp_xbiff/Config.in new file mode 100644 index 0000000..ea4b58a --- /dev/null +++ b/buildroot/package/x11r7/xapp_xbiff/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XBIFF + bool "xbiff" + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XDATA_XBITMAPS + help + mailbox flag for X diff --git a/buildroot/package/x11r7/xapp_xbiff/xapp_xbiff.hash b/buildroot/package/x11r7/xapp_xbiff/xapp_xbiff.hash new file mode 100644 index 0000000..26bf0ae --- /dev/null +++ b/buildroot/package/x11r7/xapp_xbiff/xapp_xbiff.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2011-January/001595.html +sha1 17337a951264f0f96f6d03893f9dfd9cf8f12a5a xbiff-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xbiff/xapp_xbiff.mk b/buildroot/package/x11r7/xapp_xbiff/xapp_xbiff.mk new file mode 100644 index 0000000..73e0350 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xbiff/xapp_xbiff.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xbiff +# +################################################################################ + +XAPP_XBIFF_VERSION = 1.0.3 +XAPP_XBIFF_SOURCE = xbiff-$(XAPP_XBIFF_VERSION).tar.bz2 +XAPP_XBIFF_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XBIFF_LICENSE = MIT +XAPP_XBIFF_LICENSE_FILES = COPYING +XAPP_XBIFF_DEPENDENCIES = xlib_libXaw xdata_xbitmaps + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xcalc/Config.in b/buildroot/package/x11r7/xapp_xcalc/Config.in new file mode 100644 index 0000000..2552be0 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcalc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XCALC + bool "xcalc" + select BR2_PACKAGE_XLIB_LIBXAW + help + scientific calculator for X diff --git a/buildroot/package/x11r7/xapp_xcalc/xapp_xcalc.hash b/buildroot/package/x11r7/xapp_xcalc/xapp_xcalc.hash new file mode 100644 index 0000000..e796755 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcalc/xapp_xcalc.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-January/002523.html +sha256 2f73c7160c09dc32586ea07daa408ac897c0a16eaa98cad9f9e4ee98cd9057d8 xcalc-1.0.6.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xcalc/xapp_xcalc.mk b/buildroot/package/x11r7/xapp_xcalc/xapp_xcalc.mk new file mode 100644 index 0000000..58fbdf5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcalc/xapp_xcalc.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xcalc +# +################################################################################ + +XAPP_XCALC_VERSION = 1.0.6 +XAPP_XCALC_SOURCE = xcalc-$(XAPP_XCALC_VERSION).tar.bz2 +XAPP_XCALC_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XCALC_LICENSE = MIT +XAPP_XCALC_LICENSE_FILES = COPYING +XAPP_XCALC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-exec install-data +XAPP_XCALC_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xclipboard/Config.in b/buildroot/package/x11r7/xapp_xclipboard/Config.in new file mode 100644 index 0000000..941c219 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xclipboard/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XCLIPBOARD + bool "xclipboard" + select BR2_PACKAGE_XLIB_LIBXAW + help + interchange between cut buffer and selection diff --git a/buildroot/package/x11r7/xapp_xclipboard/xapp_xclipboard.hash b/buildroot/package/x11r7/xapp_xclipboard/xapp_xclipboard.hash new file mode 100644 index 0000000..682c1f3 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xclipboard/xapp_xclipboard.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-September/002299.html +sha256 9c0e0a1f4f1d49f73c6cf3ccd27b5ca0e18afc63679f1a1ee466b1d82446ebb5 xclipboard-1.1.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xclipboard/xapp_xclipboard.mk b/buildroot/package/x11r7/xapp_xclipboard/xapp_xclipboard.mk new file mode 100644 index 0000000..3620f75 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xclipboard/xapp_xclipboard.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xclipboard +# +################################################################################ + +XAPP_XCLIPBOARD_VERSION = 1.1.3 +XAPP_XCLIPBOARD_SOURCE = xclipboard-$(XAPP_XCLIPBOARD_VERSION).tar.bz2 +XAPP_XCLIPBOARD_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XCLIPBOARD_LICENSE = MIT +XAPP_XCLIPBOARD_LICENSE_FILES = COPYING +XAPP_XCLIPBOARD_DEPENDENCIES = xlib_libXaw xlib_libXmu xlib_libXt + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xclock/Config.in b/buildroot/package/x11r7/xapp_xclock/Config.in new file mode 100644 index 0000000..083a6d1 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xclock/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XAPP_XCLOCK + bool "xclock" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXFT + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + analog / digital clock for X diff --git a/buildroot/package/x11r7/xapp_xclock/xapp_xclock.hash b/buildroot/package/x11r7/xapp_xclock/xapp_xclock.hash new file mode 100644 index 0000000..1469077 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xclock/xapp_xclock.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-September/002310.html +sha256 23ceeca94e3e20a6c26a703ac7f789066d4517f8d2cb717ae7cb28a617d97dd0 xclock-1.0.7.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xclock/xapp_xclock.mk b/buildroot/package/x11r7/xapp_xclock/xapp_xclock.mk new file mode 100644 index 0000000..282d753 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xclock/xapp_xclock.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xclock +# +################################################################################ + +XAPP_XCLOCK_VERSION = 1.0.7 +XAPP_XCLOCK_SOURCE = xclock-$(XAPP_XCLOCK_VERSION).tar.bz2 +XAPP_XCLOCK_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XCLOCK_LICENSE = MIT +XAPP_XCLOCK_LICENSE_FILES = COPYING +XAPP_XCLOCK_DEPENDENCIES = xlib_libX11 xlib_libXaw xlib_libXft xlib_libXrender xlib_libxkbfile + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xcmsdb/Config.in b/buildroot/package/x11r7/xapp_xcmsdb/Config.in new file mode 100644 index 0000000..82c9da3 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcmsdb/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XCMSDB + bool "xcmsdb" + select BR2_PACKAGE_XLIB_LIBX11 + help + Device Color Characterization utility for X Color Management + System diff --git a/buildroot/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.hash b/buildroot/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.hash new file mode 100644 index 0000000..cc5bbcd --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002567.html +sha256 e5585361bb8b6a05bb814a8d0e444ee93e0f00180881d3070aff4571e97f67c6 xcmsdb-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.mk b/buildroot/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.mk new file mode 100644 index 0000000..3cccacc --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcmsdb/xapp_xcmsdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xcmsdb +# +################################################################################ + +XAPP_XCMSDB_VERSION = 1.0.5 +XAPP_XCMSDB_SOURCE = xcmsdb-$(XAPP_XCMSDB_VERSION).tar.bz2 +XAPP_XCMSDB_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XCMSDB_LICENSE = MIT +XAPP_XCMSDB_LICENSE_FILES = COPYING +XAPP_XCMSDB_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xcompmgr/Config.in b/buildroot/package/x11r7/xapp_xcompmgr/Config.in new file mode 100644 index 0000000..b46014d --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcompmgr/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XAPP_XCOMPMGR + bool "xcompmgr" + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXRENDER + help + xcompmgr is a sample compositing manager that enables basic + eye-candy effects. diff --git a/buildroot/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.hash b/buildroot/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.hash new file mode 100644 index 0000000..34c13c1 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002568.html +sha256 c8049b1a2531313be7469ba9b198d334f0b91cc01efc2b20b9afcb117e4d6892 xcompmgr-1.1.7.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.mk b/buildroot/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.mk new file mode 100644 index 0000000..918c1e5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcompmgr/xapp_xcompmgr.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xapp_xcompmgr +# +################################################################################ + +XAPP_XCOMPMGR_VERSION = 1.1.7 +XAPP_XCOMPMGR_SOURCE = xcompmgr-$(XAPP_XCOMPMGR_VERSION).tar.bz2 +XAPP_XCOMPMGR_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XCOMPMGR_LICENSE = MIT +XAPP_XCOMPMGR_LICENSE_FILES = COPYING +XAPP_XCOMPMGR_DEPENDENCIES = \ + xlib_libXcomposite \ + xlib_libXdamage \ + xlib_libXext \ + xlib_libXfixes \ + xlib_libXrender + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xconsole/Config.in b/buildroot/package/x11r7/xapp_xconsole/Config.in new file mode 100644 index 0000000..7baf4ff --- /dev/null +++ b/buildroot/package/x11r7/xapp_xconsole/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XAPP_XCONSOLE + bool "xconsole" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XLIB_LIBXMU + help + xconsole - monitor system console messages with X diff --git a/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.hash b/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.hash new file mode 100644 index 0000000..364cdbe --- /dev/null +++ b/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002774.html +sha256 d1144882df207378381bc83927906559defbf7b83a01d52c50ad44234c5851e0 xconsole-1.0.7.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.mk b/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.mk new file mode 100644 index 0000000..52656de --- /dev/null +++ b/buildroot/package/x11r7/xapp_xconsole/xapp_xconsole.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xapp_xconsole +# +################################################################################ + +XAPP_XCONSOLE_VERSION = 1.0.7 +XAPP_XCONSOLE_SOURCE = xconsole-$(XAPP_XCONSOLE_VERSION).tar.bz2 +XAPP_XCONSOLE_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XCONSOLE_LICENSE = MIT +XAPP_XCONSOLE_LICENSE_FILES = COPYING +XAPP_XCONSOLE_DEPENDENCIES = \ + xlib_libX11 xlib_libXaw xlib_libXt xproto_xproto \ + xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xcursorgen/Config.in b/buildroot/package/x11r7/xapp_xcursorgen/Config.in new file mode 100644 index 0000000..c47ec28 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcursorgen/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XCURSORGEN + bool "xcursorgen" + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXCURSOR + help + create an X cursor file from a collection of PNG images diff --git a/buildroot/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.hash b/buildroot/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.hash new file mode 100644 index 0000000..b98d449 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2014-May/002438.html +sha256 31c8910f54eb175a8a74a60e7662697467e21a8bf948220a6048a93924b3f66c xcursorgen-1.0.6.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.mk b/buildroot/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.mk new file mode 100644 index 0000000..4bee26b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xcursorgen/xapp_xcursorgen.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapp_xcursorgen +# +################################################################################ + +XAPP_XCURSORGEN_VERSION = 1.0.6 +XAPP_XCURSORGEN_SOURCE = xcursorgen-$(XAPP_XCURSORGEN_VERSION).tar.bz2 +XAPP_XCURSORGEN_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XCURSORGEN_LICENSE = MIT +XAPP_XCURSORGEN_LICENSE_FILES = COPYING +XAPP_XCURSORGEN_DEPENDENCIES = libpng xlib_libX11 xlib_libXcursor +HOST_XAPP_XCURSORGEN_DEPENDENCIES = \ + host-libpng host-xlib_libX11 host-xlib_libXcursor + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xdbedizzy/Config.in b/buildroot/package/x11r7/xapp_xdbedizzy/Config.in new file mode 100644 index 0000000..e4a5960 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdbedizzy/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XDBEDIZZY + bool "xdbedizzy" + select BR2_PACKAGE_XLIB_LIBXEXT + help + X.Org xdbedizzy application diff --git a/buildroot/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.hash b/buildroot/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.hash new file mode 100644 index 0000000..8fbe8b0 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2010-October/001514.html +sha1 281bee72116311e2d8393ae53ea832e9d267eded xdbedizzy-1.1.0.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.mk b/buildroot/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.mk new file mode 100644 index 0000000..72d04f8 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdbedizzy/xapp_xdbedizzy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xdbedizzy +# +################################################################################ + +XAPP_XDBEDIZZY_VERSION = 1.1.0 +XAPP_XDBEDIZZY_SOURCE = xdbedizzy-$(XAPP_XDBEDIZZY_VERSION).tar.bz2 +XAPP_XDBEDIZZY_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XDBEDIZZY_LICENSE = MIT +XAPP_XDBEDIZZY_LICENSE_FILES = COPYING +XAPP_XDBEDIZZY_DEPENDENCIES = xlib_libXext + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xditview/Config.in b/buildroot/package/x11r7/xapp_xditview/Config.in new file mode 100644 index 0000000..22944f7 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xditview/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XDITVIEW + bool "xditview" + select BR2_PACKAGE_XLIB_LIBXAW + help + display ditroff output diff --git a/buildroot/package/x11r7/xapp_xditview/xapp_xditview.hash b/buildroot/package/x11r7/xapp_xditview/xapp_xditview.hash new file mode 100644 index 0000000..c8c1a0c --- /dev/null +++ b/buildroot/package/x11r7/xapp_xditview/xapp_xditview.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002570.html +sha256 307f8df1bc3e90a7fba74dfe16840891c365abc027fbd556027eb057e5d1ff73 xditview-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xditview/xapp_xditview.mk b/buildroot/package/x11r7/xapp_xditview/xapp_xditview.mk new file mode 100644 index 0000000..4744c1f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xditview/xapp_xditview.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xditview +# +################################################################################ + +XAPP_XDITVIEW_VERSION = 1.0.4 +XAPP_XDITVIEW_SOURCE = xditview-$(XAPP_XDITVIEW_VERSION).tar.bz2 +XAPP_XDITVIEW_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XDITVIEW_LICENSE = MIT +XAPP_XDITVIEW_LICENSE_FILES = COPYING +XAPP_XDITVIEW_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xdm/Config.in b/buildroot/package/x11r7/xapp_xdm/Config.in new file mode 100644 index 0000000..6982970 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdm/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_XAPP_XDM + bool "xdm" + depends on BR2_USE_MMU # fork() + # Runtime dependency: can't start an X server unless there is one + depends on BR2_PACKAGE_XSERVER_XORG_SERVER + select BR2_PACKAGE_XAPP_SESSREG + select BR2_PACKAGE_XAPP_XRDB + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXDMCP + select BR2_PACKAGE_XLIB_LIBXINERAMA + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XPROTO_XINERAMAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org xdm application diff --git a/buildroot/package/x11r7/xapp_xdm/S99xdm b/buildroot/package/x11r7/xapp_xdm/S99xdm new file mode 100644 index 0000000..a2c0a1d --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdm/S99xdm @@ -0,0 +1,25 @@ +#!/bin/sh + +XDM_BIN=/usr/bin/xdm + +case "$1" in + start) + printf "Starting XDM: " + $XDM_BIN + echo "done" + ;; + stop) + echo "Stopping XDM" + killall -q xdm + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac + +exit 0 diff --git a/buildroot/package/x11r7/xapp_xdm/xapp_xdm.hash b/buildroot/package/x11r7/xapp_xdm/xapp_xdm.hash new file mode 100644 index 0000000..207d769 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdm/xapp_xdm.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2011-September/001737.html +sha256 d4da426ddea0124279a3f2e00a26db61944690628ee818a64df9d27352081c47 xdm-1.1.11.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xdm/xapp_xdm.mk b/buildroot/package/x11r7/xapp_xdm/xapp_xdm.mk new file mode 100644 index 0000000..8f846a8 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdm/xapp_xdm.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# xapp_xdm +# +################################################################################ + +XAPP_XDM_VERSION = 1.1.11 +XAPP_XDM_SOURCE = xdm-$(XAPP_XDM_VERSION).tar.bz2 +XAPP_XDM_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XDM_LICENSE = MIT +XAPP_XDM_LICENSE_FILES = COPYING +XAPP_XDM_CONF_ENV = ac_cv_file__dev_urandom=yes +XAPP_XDM_DEPENDENCIES = xapp_sessreg xapp_xrdb xlib_libX11 xlib_libXaw xlib_libXdmcp xlib_libXinerama xlib_libXt xproto_xineramaproto xproto_xproto +XAPP_XDM_CONF_OPTS = \ + --with-utmp-file=/var/adm/utmpx \ + --with-wtmp-file=/var/adm/wtmpx + +define XAPP_XDM_INSTALL_INIT_SYSV + $(INSTALL) -m 0755 -D package/x11r7/xapp_xdm/S99xdm \ + $(TARGET_DIR)/etc/init.d/S99xdm +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xdpyinfo/Config.in b/buildroot/package/x11r7/xapp_xdpyinfo/Config.in new file mode 100644 index 0000000..8527903 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdpyinfo/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XDPYINFO + bool "xdpyinfo" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXTST + help + display information utility for X diff --git a/buildroot/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.hash b/buildroot/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.hash new file mode 100644 index 0000000..7f9c4f5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002569.html +sha256 30238ed915619e06ceb41721e5f747d67320555cc38d459e954839c189ccaf51 xdpyinfo-1.3.2.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.mk b/buildroot/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.mk new file mode 100644 index 0000000..cf94f70 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdpyinfo/xapp_xdpyinfo.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# xapp_xdpyinfo +# +################################################################################ + +XAPP_XDPYINFO_VERSION = 1.3.2 +XAPP_XDPYINFO_SOURCE = xdpyinfo-$(XAPP_XDPYINFO_VERSION).tar.bz2 +XAPP_XDPYINFO_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XDPYINFO_LICENSE = MIT +XAPP_XDPYINFO_LICENSE_FILES = COPYING +XAPP_XDPYINFO_CONF_OPTS = --without-xf86misc # not in BR +XAPP_XDPYINFO_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXtst \ + $(if $(BR2_PACKAGE_XLIB_LIBXI),xlib_libXi) \ + $(if $(BR2_PACKAGE_XLIB_LIBXRENDER),xlib_libXrender) \ + $(if $(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),xlib_libXcomposite) \ + $(if $(BR2_PACKAGE_XLIB_LIBXXF86VM),xlib_libXxf86vm) + +ifeq ($(BR2_PACKAGE_XLIB_LIBXXF86DGA),y) +XAPP_XDPYINFO_DEPENDENCIES += xlib_libXxf86dga +else +XAPP_XDPYINFO_CONF_OPTS += --without-dga +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBDMX),y) +XAPP_XDPYINFO_DEPENDENCIES += xlib_libdmx +else +XAPP_XDPYINFO_CONF_OPTS += --without-dmx +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +XAPP_XDPYINFO_DEPENDENCIES += xlib_libXinerama +else +XAPP_XDPYINFO_CONF_OPTS += --without-xinerama +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xdriinfo/Config.in b/buildroot/package/x11r7/xapp_xdriinfo/Config.in new file mode 100644 index 0000000..2b204d9 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdriinfo/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XAPP_XDRIINFO + bool "xdriinfo" + depends on BR2_PACKAGE_HAS_LIBGL + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XPROTO_GLPROTO + help + query configuration information of DRI drivers + +comment "xdriinfo needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash b/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash new file mode 100644 index 0000000..264ec9a --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002570.html +sha256 4cba3766ef89557422062287248adeb933999071bad6f3ef9c0a478a3c680119 xdriinfo-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk b/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk new file mode 100644 index 0000000..ffab517 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xdriinfo +# +################################################################################ + +XAPP_XDRIINFO_VERSION = 1.0.5 +XAPP_XDRIINFO_SOURCE = xdriinfo-$(XAPP_XDRIINFO_VERSION).tar.bz2 +XAPP_XDRIINFO_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XDRIINFO_LICENSE = MIT +XAPP_XDRIINFO_LICENSE_FILES = COPYING +XAPP_XDRIINFO_DEPENDENCIES = libgl xlib_libX11 xproto_glproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xedit/Config.in b/buildroot/package/x11r7/xapp_xedit/Config.in new file mode 100644 index 0000000..876d541 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xedit/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XEDIT + bool "xedit" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXAW + help + simple text editor for X diff --git a/buildroot/package/x11r7/xapp_xedit/xapp_xedit.hash b/buildroot/package/x11r7/xapp_xedit/xapp_xedit.hash new file mode 100644 index 0000000..5aedfb7 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xedit/xapp_xedit.hash @@ -0,0 +1,3 @@ +# From http://lists.x.org/archives/xorg-announce/2015-February/002535.html +sha1 f37b5d0f8ec461955f0419dbb1890d8cf63d179d xedit-1.2.2.tar.bz2 +sha256 69aa42885dfc06332ca22eb01cc7187e49206e6d65b74113a8ee4cc345fc2927 xedit-1.2.2.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xedit/xapp_xedit.mk b/buildroot/package/x11r7/xapp_xedit/xapp_xedit.mk new file mode 100644 index 0000000..0f42e2c --- /dev/null +++ b/buildroot/package/x11r7/xapp_xedit/xapp_xedit.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xapp_xedit +# +################################################################################ + +XAPP_XEDIT_VERSION = 1.2.2 +XAPP_XEDIT_SOURCE = xedit-$(XAPP_XEDIT_VERSION).tar.bz2 +XAPP_XEDIT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XEDIT_LICENSE = MIT +XAPP_XEDIT_LICENSE_FILES = COPYING +XAPP_XEDIT_DEPENDENCIES = xlib_libXaw + +XAPP_XEDIT_CONF_OPTS = --disable-selective-werror + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xev/Config.in b/buildroot/package/x11r7/xapp_xev/Config.in new file mode 100644 index 0000000..864d642 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xev/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XEV + bool "xev" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXRANDR + help + print contents of X events diff --git a/buildroot/package/x11r7/xapp_xev/xapp_xev.hash b/buildroot/package/x11r7/xapp_xev/xapp_xev.hash new file mode 100644 index 0000000..4008eba --- /dev/null +++ b/buildroot/package/x11r7/xapp_xev/xapp_xev.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002572.html +sha256 d94ae62a6c1af56c2961d71f5782076ac4116f0fa4e401420ac7e0db33dc314f xev-1.2.2.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xev/xapp_xev.mk b/buildroot/package/x11r7/xapp_xev/xapp_xev.mk new file mode 100644 index 0000000..2a798db --- /dev/null +++ b/buildroot/package/x11r7/xapp_xev/xapp_xev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xev +# +################################################################################ + +XAPP_XEV_VERSION = 1.2.2 +XAPP_XEV_SOURCE = xev-$(XAPP_XEV_VERSION).tar.bz2 +XAPP_XEV_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XEV_LICENSE = MIT +XAPP_XEV_LICENSE_FILES = COPYING +XAPP_XEV_DEPENDENCIES = xlib_libX11 xlib_libXrandr + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xeyes/Config.in b/buildroot/package/x11r7/xapp_xeyes/Config.in new file mode 100644 index 0000000..5cf7f6c --- /dev/null +++ b/buildroot/package/x11r7/xapp_xeyes/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XAPP_XEYES + bool "xeyes" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXT + help + X.Org xeyes application diff --git a/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.hash b/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.hash new file mode 100644 index 0000000..02eb26b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2010-November/001552.html +sha1 efe6116d31a7f69e4fb6038613e52b0960b9b61c xeyes-1.1.1.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.mk b/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.mk new file mode 100644 index 0000000..07c1200 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xeyes +# +################################################################################ + +XAPP_XEYES_VERSION = 1.1.1 +XAPP_XEYES_SOURCE = xeyes-$(XAPP_XEYES_VERSION).tar.bz2 +XAPP_XEYES_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XEYES_LICENSE = MIT +XAPP_XEYES_LICENSE_FILES = COPYING +XAPP_XEYES_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXmu xlib_libXrender xlib_libXt + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xf86dga/Config.in b/buildroot/package/x11r7/xapp_xf86dga/Config.in new file mode 100644 index 0000000..5d81203 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xf86dga/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XF86DGA + bool "xf86dga" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXXF86DGA + help + test program for the XFree86-DGA extension diff --git a/buildroot/package/x11r7/xapp_xf86dga/xapp_xf86dga.hash b/buildroot/package/x11r7/xapp_xf86dga/xapp_xf86dga.hash new file mode 100644 index 0000000..b0c803e --- /dev/null +++ b/buildroot/package/x11r7/xapp_xf86dga/xapp_xf86dga.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2010-October/001515.html +sha1 030659e3728f5f7142e1cf727f147aceeabe4b9e xf86dga-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xf86dga/xapp_xf86dga.mk b/buildroot/package/x11r7/xapp_xf86dga/xapp_xf86dga.mk new file mode 100644 index 0000000..fe8e427 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xf86dga/xapp_xf86dga.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapp_xf86dga +# +################################################################################ + +XAPP_XF86DGA_VERSION = 1.0.3 +XAPP_XF86DGA_SOURCE = xf86dga-$(XAPP_XF86DGA_VERSION).tar.bz2 +XAPP_XF86DGA_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XF86DGA_LICENSE = MIT +XAPP_XF86DGA_LICENSE_FILES = COPYING +XAPP_XF86DGA_DEPENDENCIES = \ + host-pkgconf \ + xlib_libX11 \ + xlib_libXxf86dga + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xfd/Config.in b/buildroot/package/x11r7/xapp_xfd/Config.in new file mode 100644 index 0000000..f006b1e --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XFD + bool "xfd" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXFT + help + X.Org xfd application diff --git a/buildroot/package/x11r7/xapp_xfd/xapp_xfd.hash b/buildroot/package/x11r7/xapp_xfd/xapp_xfd.hash new file mode 100644 index 0000000..7b6824b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfd/xapp_xfd.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-July/002268.html +sha256 c1a32222fbb891e46f9a82ebab005bc5e54ce006a2586195ec9ea7ab308e2759 xfd-1.1.2.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xfd/xapp_xfd.mk b/buildroot/package/x11r7/xapp_xfd/xapp_xfd.mk new file mode 100644 index 0000000..e3c770b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfd/xapp_xfd.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xfd +# +################################################################################ + +XAPP_XFD_VERSION = 1.1.2 +XAPP_XFD_SOURCE = xfd-$(XAPP_XFD_VERSION).tar.bz2 +XAPP_XFD_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XFD_LICENSE = MIT +XAPP_XFD_LICENSE_FILES = COPYING +XAPP_XFD_DEPENDENCIES = freetype fontconfig xlib_libXaw xlib_libXft + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xfindproxy/Config.in b/buildroot/package/x11r7/xapp_xfindproxy/Config.in new file mode 100644 index 0000000..b186ab6 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfindproxy/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XAPP_XFINDPROXY + bool "xfindproxy" + select BR2_PACKAGE_XLIB_LIBICE + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XPROTO_XPROXYMANAGEMENTPROTOCOL + help + xfindproxy utilizes the Proxy Management Protocol to + communicate with a proxy manager to locate available X11 + proxy services. diff --git a/buildroot/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.hash b/buildroot/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.hash new file mode 100644 index 0000000..9263e46 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002573.html +sha256 5626bda27c7faa5cbe289a17f8552538fff08a96d542b85efdda1804ccf8a01f xfindproxy-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.mk b/buildroot/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.mk new file mode 100644 index 0000000..7662a90 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfindproxy/xapp_xfindproxy.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xapp_xfindproxy +# +################################################################################ + +XAPP_XFINDPROXY_VERSION = 1.0.4 +XAPP_XFINDPROXY_SOURCE = xfindproxy-$(XAPP_XFINDPROXY_VERSION).tar.bz2 +XAPP_XFINDPROXY_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XFINDPROXY_LICENSE = MIT +XAPP_XFINDPROXY_LICENSE_FILES = COPYING +XAPP_XFINDPROXY_DEPENDENCIES = \ + xlib_libICE \ + xlib_libXt \ + xproto_xproto \ + xproto_xproxymanagementprotocol + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xfontsel/Config.in b/buildroot/package/x11r7/xapp_xfontsel/Config.in new file mode 100644 index 0000000..0c6aa37 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfontsel/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XFONTSEL + bool "xfontsel" + select BR2_PACKAGE_XLIB_LIBXAW + help + point and click selection of X11 font names diff --git a/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash b/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash new file mode 100644 index 0000000..40f5523 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-May/002213.html +sha256 170d8550b96fb47b04db6181b947e6f6b8b97f4df5d691c351a278480cc931bf xfontsel-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk b/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk new file mode 100644 index 0000000..781b4d3 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xfontsel +# +################################################################################ + +XAPP_XFONTSEL_VERSION = 1.0.5 +XAPP_XFONTSEL_SOURCE = xfontsel-$(XAPP_XFONTSEL_VERSION).tar.bz2 +XAPP_XFONTSEL_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XFONTSEL_LICENSE = MIT +XAPP_XFONTSEL_LICENSE_FILES = COPYING +XAPP_XFONTSEL_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xfs/Config.in b/buildroot/package/x11r7/xapp_xfs/Config.in new file mode 100644 index 0000000..b708af8 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfs/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XFS + bool "xfs" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBFS + select BR2_PACKAGE_XLIB_LIBXFONT2 + select BR2_PACKAGE_XPROTO_FONTSPROTO + help + X font server diff --git a/buildroot/package/x11r7/xapp_xfs/xapp_xfs.hash b/buildroot/package/x11r7/xapp_xfs/xapp_xfs.hash new file mode 100644 index 0000000..27577ba --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfs/xapp_xfs.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-November/002826.html +md5 b4d2e644bfb35cae8858d2411501b07e xfs-1.2.0.tar.bz2 +sha1 00848fcc2915ed8b00e75ac311c4727327324f57 xfs-1.2.0.tar.bz2 +sha256 db2212115783498f8eeaaee1349461d6c4e9d2005e142bacd3a984fe57269860 xfs-1.2.0.tar.bz2 +sha512 557b08aa07919239ce345d60b288b886640200bb1a59649fc890c3ccaa8559cc6745189614e696ab1b390ec024b393be5493787b7b0d2b3545b342d743c2e0ef xfs-1.2.0.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xfs/xapp_xfs.mk b/buildroot/package/x11r7/xapp_xfs/xapp_xfs.mk new file mode 100644 index 0000000..f4fe35d --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfs/xapp_xfs.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xfs +# +################################################################################ + +XAPP_XFS_VERSION = 1.2.0 +XAPP_XFS_SOURCE = xfs-$(XAPP_XFS_VERSION).tar.bz2 +XAPP_XFS_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XFS_LICENSE = MIT +XAPP_XFS_LICENSE_FILES = COPYING +XAPP_XFS_DEPENDENCIES = xlib_libFS xlib_libXfont2 xproto_fontsproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xfsinfo/Config.in b/buildroot/package/x11r7/xapp_xfsinfo/Config.in new file mode 100644 index 0000000..84c8ac1 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfsinfo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XFSINFO + bool "xfsinfo" + select BR2_PACKAGE_XLIB_LIBFS + select BR2_PACKAGE_XLIB_LIBX11 + help + X font server information utility diff --git a/buildroot/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.hash b/buildroot/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.hash new file mode 100644 index 0000000..b1bcc0b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2014-December/002512.html +sha256 d38f4b6db4038f52ba1a09123ef497993194288454c0c13d16debe246f120d8f xfsinfo-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.mk b/buildroot/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.mk new file mode 100644 index 0000000..38d01e4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xfsinfo/xapp_xfsinfo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xfsinfo +# +################################################################################ + +XAPP_XFSINFO_VERSION = 1.0.5 +XAPP_XFSINFO_SOURCE = xfsinfo-$(XAPP_XFSINFO_VERSION).tar.bz2 +XAPP_XFSINFO_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XFSINFO_LICENSE = MIT +XAPP_XFSINFO_LICENSE_FILES = COPYING +XAPP_XFSINFO_DEPENDENCIES = xlib_libFS xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xgamma/Config.in b/buildroot/package/x11r7/xapp_xgamma/Config.in new file mode 100644 index 0000000..b20a784 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xgamma/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XGAMMA + bool "xgamma" + select BR2_PACKAGE_XLIB_LIBXXF86VM + help + Alter a monitor's gamma correction through the X server diff --git a/buildroot/package/x11r7/xapp_xgamma/xapp_xgamma.hash b/buildroot/package/x11r7/xapp_xgamma/xapp_xgamma.hash new file mode 100644 index 0000000..30480aa --- /dev/null +++ b/buildroot/package/x11r7/xapp_xgamma/xapp_xgamma.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002574.html +sha256 0ef1c35b5c18b1b22317f455c8df13c0a471a8efad63c89c98ae3ce8c2b222d3 xgamma-1.0.6.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xgamma/xapp_xgamma.mk b/buildroot/package/x11r7/xapp_xgamma/xapp_xgamma.mk new file mode 100644 index 0000000..a73a29e --- /dev/null +++ b/buildroot/package/x11r7/xapp_xgamma/xapp_xgamma.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xgamma +# +################################################################################ + +XAPP_XGAMMA_VERSION = 1.0.6 +XAPP_XGAMMA_SOURCE = xgamma-$(XAPP_XGAMMA_VERSION).tar.bz2 +XAPP_XGAMMA_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XGAMMA_LICENSE = MIT +XAPP_XGAMMA_LICENSE_FILES = COPYING +XAPP_XGAMMA_DEPENDENCIES = xlib_libXxf86vm + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xgc/Config.in b/buildroot/package/x11r7/xapp_xgc/Config.in new file mode 100644 index 0000000..98faba8 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xgc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XGC + bool "xgc" + select BR2_PACKAGE_XLIB_LIBXAW + help + X graphics demo diff --git a/buildroot/package/x11r7/xapp_xgc/xapp_xgc.hash b/buildroot/package/x11r7/xapp_xgc/xapp_xgc.hash new file mode 100644 index 0000000..7972a6f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xgc/xapp_xgc.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002575.html +sha256 14828d9bda358ad57efc0206bc416ee33ba542091edb186485cca5389adc2f5e xgc-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xgc/xapp_xgc.mk b/buildroot/package/x11r7/xapp_xgc/xapp_xgc.mk new file mode 100644 index 0000000..41d42c4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xgc/xapp_xgc.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xgc +# +################################################################################ + +XAPP_XGC_VERSION = 1.0.5 +XAPP_XGC_SOURCE = xgc-$(XAPP_XGC_VERSION).tar.bz2 +XAPP_XGC_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XGC_LICENSE = MIT +XAPP_XGC_LICENSE_FILES = COPYING +XAPP_XGC_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xhost/Config.in b/buildroot/package/x11r7/xapp_xhost/Config.in new file mode 100644 index 0000000..659b34d --- /dev/null +++ b/buildroot/package/x11r7/xapp_xhost/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XHOST + bool "xhost" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + Controls host and/or user access to a running X server. diff --git a/buildroot/package/x11r7/xapp_xhost/xapp_xhost.hash b/buildroot/package/x11r7/xapp_xhost/xapp_xhost.hash new file mode 100644 index 0000000..b714eb6 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xhost/xapp_xhost.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002576.html +sha256 93e619ee15471f576cfb30c663e18f5bc70aca577a63d2c2c03f006a7837c29a xhost-1.0.7.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xhost/xapp_xhost.mk b/buildroot/package/x11r7/xapp_xhost/xapp_xhost.mk new file mode 100644 index 0000000..a4bb16b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xhost/xapp_xhost.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xhost +# +################################################################################ + +XAPP_XHOST_VERSION = 1.0.7 +XAPP_XHOST_SOURCE = xhost-$(XAPP_XHOST_VERSION).tar.bz2 +XAPP_XHOST_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XHOST_LICENSE = MIT +XAPP_XHOST_LICENSE_FILES = COPYING +XAPP_XHOST_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xinit/Config.in b/buildroot/package/x11r7/xapp_xinit/Config.in new file mode 100644 index 0000000..d9fb1c5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xinit/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XAPP_XINIT + bool "xinit" + depends on BR2_USE_MMU # fork() + # Runtime dependency: can't start an X server unless there is one + depends on BR2_PACKAGE_XSERVER_XORG_SERVER + # Runtime dependency; mcookie is also in util-linux + select BR2_PACKAGE_MCOOKIE if !BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_XAPP_XAUTH + select BR2_PACKAGE_XLIB_LIBX11 + help + X Window System initializer diff --git a/buildroot/package/x11r7/xapp_xinit/xapp_xinit.hash b/buildroot/package/x11r7/xapp_xinit/xapp_xinit.hash new file mode 100644 index 0000000..f8bab91 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xinit/xapp_xinit.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2014-September/002477.html +sha256 75d88d7397a07e01db253163b7c7a00b249b3d30e99489f2734cac9a0c7902b3 xinit-1.3.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xinit/xapp_xinit.mk b/buildroot/package/x11r7/xapp_xinit/xapp_xinit.mk new file mode 100644 index 0000000..a796884 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xinit/xapp_xinit.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xinit +# +################################################################################ + +XAPP_XINIT_VERSION = 1.3.4 +XAPP_XINIT_SOURCE = xinit-$(XAPP_XINIT_VERSION).tar.bz2 +XAPP_XINIT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XINIT_DEPENDENCIES = xapp_xauth xlib_libX11 +XAPP_XINIT_LICENSE = MIT +XAPP_XINIT_LICENSE_FILES = COPYING +XAPP_XINIT_CONF_OPTS = MCOOKIE=/usr/bin/mcookie + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xinput-calibrator/Config.in b/buildroot/package/x11r7/xapp_xinput-calibrator/Config.in new file mode 100644 index 0000000..76fbcd4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xinput-calibrator/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_XAPP_XINPUT_CALIBRATOR + bool "xinput-calibrator" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXI + help + A generic touchscreen calibration program for X.Org. + + http://www.freedesktop.org/wiki/Software/xinput_calibrator + +comment "xinput-calibrator needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.hash b/buildroot/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.hash new file mode 100644 index 0000000..c2d439f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 baa4ddca49ec94c27ba4c715bfa26692fec1132103e927213c3169e475d3d971 xinput_calibrator-0.7.5.tar.gz diff --git a/buildroot/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.mk b/buildroot/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.mk new file mode 100644 index 0000000..974b83d --- /dev/null +++ b/buildroot/package/x11r7/xapp_xinput-calibrator/xapp_xinput-calibrator.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xinput-calibrator +# +################################################################################ + +XAPP_XINPUT_CALIBRATOR_VERSION = 0.7.5 +XAPP_XINPUT_CALIBRATOR_SOURCE = xinput_calibrator-$(XAPP_XINPUT_CALIBRATOR_VERSION).tar.gz +XAPP_XINPUT_CALIBRATOR_SITE = http://github.com/downloads/tias/xinput_calibrator +XAPP_XINPUT_CALIBRATOR_LICENSE = MIT +XAPP_XINPUT_CALIBRATOR_LICENSE_FILES = COPYING +XAPP_XINPUT_CALIBRATOR_DEPENDENCIES = xlib_libX11 xlib_libXi + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xinput/Config.in b/buildroot/package/x11r7/xapp_xinput/Config.in new file mode 100644 index 0000000..e438a45 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xinput/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XINPUT + bool "xinput" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXINERAMA + help + xinput diff --git a/buildroot/package/x11r7/xapp_xinput/xapp_xinput.hash b/buildroot/package/x11r7/xapp_xinput/xapp_xinput.hash new file mode 100644 index 0000000..724b2e2 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xinput/xapp_xinput.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-October/002643.html +sha256 3694d29b4180952fbf13c6d4e59541310cbb11eef5bf888ff3d8b7f4e3aee5c4 xinput-1.6.2.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xinput/xapp_xinput.mk b/buildroot/package/x11r7/xapp_xinput/xapp_xinput.mk new file mode 100644 index 0000000..aaa7a80 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xinput/xapp_xinput.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xinput +# +################################################################################ + +XAPP_XINPUT_VERSION = 1.6.2 +XAPP_XINPUT_SOURCE = xinput-$(XAPP_XINPUT_VERSION).tar.bz2 +XAPP_XINPUT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XINPUT_LICENSE = MIT +XAPP_XINPUT_LICENSE_FILES = COPYING +XAPP_XINPUT_DEPENDENCIES = xlib_libX11 xlib_libXi xlib_libXrandr xlib_libXinerama + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xkbcomp/Config.in b/buildroot/package/x11r7/xapp_xkbcomp/Config.in new file mode 100644 index 0000000..2b575b2 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbcomp/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XKBCOMP + bool "xkbcomp" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + compile XKB keyboard description diff --git a/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash b/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash new file mode 100644 index 0000000..4d0b5fe --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-May/002797.html +md5 cc22b232bc78a303371983e1b48794ab xkbcomp-1.4.0.tar.bz2 +sha1 9578a564ff8fcf96581fb52860828fbab8c67b4f xkbcomp-1.4.0.tar.bz2 +sha256 bc69c8748c03c5ad9afdc8dff9db11994dd871b614c65f8940516da6bf61ce6b xkbcomp-1.4.0.tar.bz2 +sha512 c96a63fc2d9a6ac17123297574966c45d0dcfd4ae3d4073ce863c7738d453f4c0a5f7a87c06efdec19f0b270207a7170fe1aa72a73ef1b50f95c7ca262f4882e xkbcomp-1.4.0.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk b/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk new file mode 100644 index 0000000..cc88561 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xapp_xkbcomp +# +################################################################################ + +XAPP_XKBCOMP_VERSION = 1.4.0 +XAPP_XKBCOMP_SOURCE = xkbcomp-$(XAPP_XKBCOMP_VERSION).tar.bz2 +XAPP_XKBCOMP_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XKBCOMP_LICENSE = MIT +XAPP_XKBCOMP_LICENSE_FILES = COPYING +XAPP_XKBCOMP_DEPENDENCIES = xlib_libX11 xlib_libxkbfile +HOST_XAPP_XKBCOMP_DEPENDENCIES = host-xlib_libX11 host-xlib_libxkbfile +XAPP_XKBCOMP_CONF_ENV = ac_cv_file___xkbparse_c=yes + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xkbevd/Config.in b/buildroot/package/x11r7/xapp_xkbevd/Config.in new file mode 100644 index 0000000..0cbb9e4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbevd/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XKBEVD + bool "xkbevd" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + XKB event daemon diff --git a/buildroot/package/x11r7/xapp_xkbevd/xapp_xkbevd.hash b/buildroot/package/x11r7/xapp_xkbevd/xapp_xkbevd.hash new file mode 100644 index 0000000..b350d29 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbevd/xapp_xkbevd.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002577.html +sha256 2430a2e5302a4cb4a5530c1df8cb3721a149bbf8eb377a2898921a145197f96a xkbevd-1.1.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xkbevd/xapp_xkbevd.mk b/buildroot/package/x11r7/xapp_xkbevd/xapp_xkbevd.mk new file mode 100644 index 0000000..7a9a8fb --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbevd/xapp_xkbevd.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xkbevd +# +################################################################################ + +XAPP_XKBEVD_VERSION = 1.1.4 +XAPP_XKBEVD_SOURCE = xkbevd-$(XAPP_XKBEVD_VERSION).tar.bz2 +XAPP_XKBEVD_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XKBEVD_LICENSE = MIT +XAPP_XKBEVD_LICENSE_FILES = COPYING +XAPP_XKBEVD_DEPENDENCIES = xlib_libxkbfile + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xkbprint/Config.in b/buildroot/package/x11r7/xapp_xkbprint/Config.in new file mode 100644 index 0000000..e7a4242 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbprint/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XKBPRINT + bool "xkbprint" + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + print an XKB keyboard description diff --git a/buildroot/package/x11r7/xapp_xkbprint/xapp_xkbprint.hash b/buildroot/package/x11r7/xapp_xkbprint/xapp_xkbprint.hash new file mode 100644 index 0000000..9ec83b6 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbprint/xapp_xkbprint.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002578.html +sha256 0b3faab8fefad03dfb7e866f634cf859822801de6b5fc6cf5e0a62857ed93e12 xkbprint-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xkbprint/xapp_xkbprint.mk b/buildroot/package/x11r7/xapp_xkbprint/xapp_xkbprint.mk new file mode 100644 index 0000000..5f2300f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbprint/xapp_xkbprint.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xkbprint +# +################################################################################ + +XAPP_XKBPRINT_VERSION = 1.0.4 +XAPP_XKBPRINT_SOURCE = xkbprint-$(XAPP_XKBPRINT_VERSION).tar.bz2 +XAPP_XKBPRINT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XKBPRINT_LICENSE = MIT +XAPP_XKBPRINT_LICENSE_FILES = COPYING +XAPP_XKBPRINT_DEPENDENCIES = xlib_libxkbfile + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xkbutils/Config.in b/buildroot/package/x11r7/xapp_xkbutils/Config.in new file mode 100644 index 0000000..22a819b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbutils/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XKBUTILS + bool "xkbutils" + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + X.Org xkbutils application diff --git a/buildroot/package/x11r7/xapp_xkbutils/xapp_xkbutils.hash b/buildroot/package/x11r7/xapp_xkbutils/xapp_xkbutils.hash new file mode 100644 index 0000000..6660304 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbutils/xapp_xkbutils.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-February/002162.html +sha256 d2a18ab90275e8bca028773c44264d2266dab70853db4321bdbc18da75148130 xkbutils-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xkbutils/xapp_xkbutils.mk b/buildroot/package/x11r7/xapp_xkbutils/xapp_xkbutils.mk new file mode 100644 index 0000000..96ca8a4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkbutils/xapp_xkbutils.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xkbutils +# +################################################################################ + +XAPP_XKBUTILS_VERSION = 1.0.4 +XAPP_XKBUTILS_SOURCE = xkbutils-$(XAPP_XKBUTILS_VERSION).tar.bz2 +XAPP_XKBUTILS_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XKBUTILS_LICENSE = MIT +XAPP_XKBUTILS_LICENSE_FILES = COPYING +XAPP_XKBUTILS_DEPENDENCIES = xlib_libXaw xlib_libxkbfile + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xkill/Config.in b/buildroot/package/x11r7/xapp_xkill/Config.in new file mode 100644 index 0000000..fcab92a --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkill/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XKILL + bool "xkill" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + kill a client by its X resource diff --git a/buildroot/package/x11r7/xapp_xkill/xapp_xkill.hash b/buildroot/package/x11r7/xapp_xkill/xapp_xkill.hash new file mode 100644 index 0000000..22c256d --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkill/xapp_xkill.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-September/002313.html +sha256 88ef2a304f32f24b255e879f03c1dcd3a2be3e71d5562205414f267d919f812e xkill-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xkill/xapp_xkill.mk b/buildroot/package/x11r7/xapp_xkill/xapp_xkill.mk new file mode 100644 index 0000000..76af1b9 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xkill/xapp_xkill.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xkill +# +################################################################################ + +XAPP_XKILL_VERSION = 1.0.4 +XAPP_XKILL_SOURCE = xkill-$(XAPP_XKILL_VERSION).tar.bz2 +XAPP_XKILL_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XKILL_LICENSE = MIT +XAPP_XKILL_LICENSE_FILES = COPYING +XAPP_XKILL_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xload/Config.in b/buildroot/package/x11r7/xapp_xload/Config.in new file mode 100644 index 0000000..25c79d2 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xload/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XLOAD + bool "xload" + select BR2_PACKAGE_XLIB_LIBXAW + help + system load average display for X diff --git a/buildroot/package/x11r7/xapp_xload/xapp_xload.hash b/buildroot/package/x11r7/xapp_xload/xapp_xload.hash new file mode 100644 index 0000000..418ce55 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xload/xapp_xload.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-August/002285.html +sha256 83f8e6260435f1df2e2e5036bb3325688b79f0b33069ef445eff5058d127e078 xload-1.1.2.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xload/xapp_xload.mk b/buildroot/package/x11r7/xapp_xload/xapp_xload.mk new file mode 100644 index 0000000..364d247 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xload/xapp_xload.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xapp_xload +# +################################################################################ + +XAPP_XLOAD_VERSION = 1.1.2 +XAPP_XLOAD_SOURCE = xload-$(XAPP_XLOAD_VERSION).tar.bz2 +XAPP_XLOAD_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XLOAD_LICENSE = MIT +XAPP_XLOAD_LICENSE_FILES = COPYING +XAPP_XLOAD_DEPENDENCIES = xlib_libXaw + +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +# musl doesn't have rwhod.h, but xload can replace it with stubs +XAPP_XLOAD_CONF_OPTS += CFLAGS="$(TARGET_CFLAGS) -DRLOADSTUB" +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xlogo/Config.in b/buildroot/package/x11r7/xapp_xlogo/Config.in new file mode 100644 index 0000000..aacb75f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlogo/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XLOGO + bool "xlogo" + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXFT + help + X Window System logo diff --git a/buildroot/package/x11r7/xapp_xlogo/xapp_xlogo.hash b/buildroot/package/x11r7/xapp_xlogo/xapp_xlogo.hash new file mode 100644 index 0000000..861cd59 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlogo/xapp_xlogo.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2012-March/001905.html +sha256 17af6f4fb73e7310e087fbfe5d773bab2b0d6f37a894ae5ee32de4693af6ba92 xlogo-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xlogo/xapp_xlogo.mk b/buildroot/package/x11r7/xapp_xlogo/xapp_xlogo.mk new file mode 100644 index 0000000..380acfc --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlogo/xapp_xlogo.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xapp_xlogo +# +################################################################################ + +XAPP_XLOGO_VERSION = 1.0.4 +XAPP_XLOGO_SOURCE = xlogo-$(XAPP_XLOGO_VERSION).tar.bz2 +XAPP_XLOGO_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XLOGO_LICENSE = MIT +XAPP_XLOGO_LICENSE_FILES = COPYING +XAPP_XLOGO_DEPENDENCIES = \ + xlib_libXaw xlib_libXrender \ + xlib_libXft host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xlsatoms/Config.in b/buildroot/package/x11r7/xapp_xlsatoms/Config.in new file mode 100644 index 0000000..2ad8484 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlsatoms/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XLSATOMS + bool "xlsatoms" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + list interned atoms defined on server diff --git a/buildroot/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.hash b/buildroot/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.hash new file mode 100644 index 0000000..58d0737 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002579.html +sha256 47e5dc7c3dbda6db2cf8c00cedac1722835c1550aa21cfdbc9ba83906694dea4 xlsatoms-1.1.2.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.mk b/buildroot/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.mk new file mode 100644 index 0000000..d6d9338 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlsatoms/xapp_xlsatoms.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xlsatoms +# +################################################################################ + +XAPP_XLSATOMS_VERSION = 1.1.2 +XAPP_XLSATOMS_SOURCE = xlsatoms-$(XAPP_XLSATOMS_VERSION).tar.bz2 +XAPP_XLSATOMS_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XLSATOMS_LICENSE = MIT +XAPP_XLSATOMS_LICENSE_FILES = COPYING +XAPP_XLSATOMS_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xlsclients/Config.in b/buildroot/package/x11r7/xapp_xlsclients/Config.in new file mode 100644 index 0000000..a934af4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlsclients/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XLSCLIENTS + bool "xlsclients" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL + help + X.Org xlsclients application diff --git a/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash b/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash new file mode 100644 index 0000000..e1cb80b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-September/002314.html +sha256 5d9666fcc6c3de210fc70d5a841a404955af709a616fde530fe4e8f7723e3d3d xlsclients-1.1.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk b/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk new file mode 100644 index 0000000..798dce0 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xlsclients +# +################################################################################ + +XAPP_XLSCLIENTS_VERSION = 1.1.3 +XAPP_XLSCLIENTS_SOURCE = xlsclients-$(XAPP_XLSCLIENTS_VERSION).tar.bz2 +XAPP_XLSCLIENTS_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XLSCLIENTS_LICENSE = MIT +XAPP_XLSCLIENTS_LICENSE_FILES = COPYING +XAPP_XLSCLIENTS_DEPENDENCIES = xlib_libX11 xlib_libXmu libxcb xcb-util + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xlsfonts/Config.in b/buildroot/package/x11r7/xapp_xlsfonts/Config.in new file mode 100644 index 0000000..dab61eb --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlsfonts/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XLSFONTS + bool "xlsfonts" + select BR2_PACKAGE_XLIB_LIBX11 + help + X.Org xlsfonts application diff --git a/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash b/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash new file mode 100644 index 0000000..f3a2603 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002580.html +sha256 40295bec35077cee93be2e4c26cc00268ed6ace779ae6e97766a866c1e3927fa xlsfonts-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk b/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk new file mode 100644 index 0000000..1c42a61 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xlsfonts +# +################################################################################ + +XAPP_XLSFONTS_VERSION = 1.0.5 +XAPP_XLSFONTS_SOURCE = xlsfonts-$(XAPP_XLSFONTS_VERSION).tar.bz2 +XAPP_XLSFONTS_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XLSFONTS_LICENSE = MIT +XAPP_XLSFONTS_LICENSE_FILES = COPYING +XAPP_XLSFONTS_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xmag/Config.in b/buildroot/package/x11r7/xapp_xmag/Config.in new file mode 100644 index 0000000..44d2c8e --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmag/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XMAG + bool "xmag" + select BR2_PACKAGE_XLIB_LIBXAW + help + X.Org xmag application diff --git a/buildroot/package/x11r7/xapp_xmag/xapp_xmag.hash b/buildroot/package/x11r7/xapp_xmag/xapp_xmag.hash new file mode 100644 index 0000000..ccfeb32 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmag/xapp_xmag.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002581.html +sha256 87a2bc23b251e2d8f8370d3283a4d6c8dac98a30cb5749a04336cdb55c14e161 xmag-1.0.6.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xmag/xapp_xmag.mk b/buildroot/package/x11r7/xapp_xmag/xapp_xmag.mk new file mode 100644 index 0000000..bfc60c3 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmag/xapp_xmag.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xmag +# +################################################################################ + +XAPP_XMAG_VERSION = 1.0.6 +XAPP_XMAG_SOURCE = xmag-$(XAPP_XMAG_VERSION).tar.bz2 +XAPP_XMAG_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XMAG_LICENSE = MIT +XAPP_XMAG_LICENSE_FILES = COPYING +XAPP_XMAG_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xman/Config.in b/buildroot/package/x11r7/xapp_xman/Config.in new file mode 100644 index 0000000..4f4f067 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xman/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XMAN + bool "xman" + select BR2_PACKAGE_XLIB_LIBXAW + help + Manual page display program for the X Window System diff --git a/buildroot/package/x11r7/xapp_xman/xapp_xman.hash b/buildroot/package/x11r7/xapp_xman/xapp_xman.hash new file mode 100644 index 0000000..00a4d85 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xman/xapp_xman.hash @@ -0,0 +1,3 @@ +# From http://lists.x.org/archives/xorg-announce/2015-March/002541.html +sha1 b64516dab2b1c407b28ce3822a98b93178e29f02 xman-1.1.4.tar.bz2 +sha256 b3fa9d2e3f3745c529eb0b6ee4f0e00d936457d11e5221b2efad06ff7c84df29 xman-1.1.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xman/xapp_xman.mk b/buildroot/package/x11r7/xapp_xman/xapp_xman.mk new file mode 100644 index 0000000..bca6bbf --- /dev/null +++ b/buildroot/package/x11r7/xapp_xman/xapp_xman.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xapp_xman +# +################################################################################ + +XAPP_XMAN_VERSION = 1.1.4 +XAPP_XMAN_SOURCE = xman-$(XAPP_XMAN_VERSION).tar.bz2 +XAPP_XMAN_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XMAN_LICENSE = MIT +XAPP_XMAN_LICENSE_FILES = COPYING +XAPP_XMAN_DEPENDENCIES = xlib_libXaw + +XAPP_XMAN_CONF_ENV = \ + ac_cv_file__etc_man_conf=no \ + ac_cv_file__etc_man_config=no \ + ac_cv_file__etc_manpath_config=no \ + ac_cv_file__usr_share_misc_man_conf=no + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xmessage/Config.in b/buildroot/package/x11r7/xapp_xmessage/Config.in new file mode 100644 index 0000000..e80562f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmessage/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XMESSAGE + bool "xmessage" + select BR2_PACKAGE_XLIB_LIBXAW + help + display a message or query in a window (X-based /bin/echo) diff --git a/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.hash b/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.hash new file mode 100644 index 0000000..5e1f199 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-January/002128.html +sha256 bcdf4b461c439bb3ade6e1e41c47d6218b912da8e9396b7ad70856db2f95ab68 xmessage-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.mk b/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.mk new file mode 100644 index 0000000..9c85563 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xmessage +# +################################################################################ + +XAPP_XMESSAGE_VERSION = 1.0.4 +XAPP_XMESSAGE_SOURCE = xmessage-$(XAPP_XMESSAGE_VERSION).tar.bz2 +XAPP_XMESSAGE_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XMESSAGE_LICENSE = MIT +XAPP_XMESSAGE_LICENSE_FILES = COPYING +XAPP_XMESSAGE_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xmh/Config.in b/buildroot/package/x11r7/xapp_xmh/Config.in new file mode 100644 index 0000000..4e86d0f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmh/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XMH + bool "xmh" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XDATA_XBITMAPS + help + send and read mail with an X interface to MH diff --git a/buildroot/package/x11r7/xapp_xmh/xapp_xmh.hash b/buildroot/package/x11r7/xapp_xmh/xapp_xmh.hash new file mode 100644 index 0000000..0358b3d --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmh/xapp_xmh.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002582.html +sha256 b92f4f912a5fb6346d52cc2b639aea087b347f3b2e4e1a4fc7a165b1345f5689 xmh-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xmh/xapp_xmh.mk b/buildroot/package/x11r7/xapp_xmh/xapp_xmh.mk new file mode 100644 index 0000000..c18bbfe --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmh/xapp_xmh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xmh +# +################################################################################ + +XAPP_XMH_VERSION = 1.0.3 +XAPP_XMH_SOURCE = xmh-$(XAPP_XMH_VERSION).tar.bz2 +XAPP_XMH_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XMH_LICENSE = MIT +XAPP_XMH_LICENSE_FILES = COPYING +XAPP_XMH_DEPENDENCIES = xlib_libXaw xdata_xbitmaps + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xmodmap/Config.in b/buildroot/package/x11r7/xapp_xmodmap/Config.in new file mode 100644 index 0000000..9be79ab --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmodmap/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XMODMAP + bool "xmodmap" + select BR2_PACKAGE_XLIB_LIBX11 + help + utility for modifying keymaps and pointer button mappings in X diff --git a/buildroot/package/x11r7/xapp_xmodmap/xapp_xmodmap.hash b/buildroot/package/x11r7/xapp_xmodmap/xapp_xmodmap.hash new file mode 100644 index 0000000..aad9815 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmodmap/xapp_xmodmap.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002583.html +sha256 b7b0e5cc5f10d0fb6d2d6ea4f00c77e8ac0e847cc5a73be94cd86139ac4ac478 xmodmap-1.0.9.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xmodmap/xapp_xmodmap.mk b/buildroot/package/x11r7/xapp_xmodmap/xapp_xmodmap.mk new file mode 100644 index 0000000..670bf9f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmodmap/xapp_xmodmap.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xmodmap +# +################################################################################ + +XAPP_XMODMAP_VERSION = 1.0.9 +XAPP_XMODMAP_SOURCE = xmodmap-$(XAPP_XMODMAP_VERSION).tar.bz2 +XAPP_XMODMAP_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XMODMAP_LICENSE = MIT +XAPP_XMODMAP_LICENSE_FILES = COPYING +XAPP_XMODMAP_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xmore/Config.in b/buildroot/package/x11r7/xapp_xmore/Config.in new file mode 100644 index 0000000..80c3950 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmore/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XMORE + bool "xmore" + select BR2_PACKAGE_XLIB_LIBXAW + help + plain text display program for the X Window System diff --git a/buildroot/package/x11r7/xapp_xmore/xapp_xmore.hash b/buildroot/package/x11r7/xapp_xmore/xapp_xmore.hash new file mode 100644 index 0000000..f2b7d1a --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmore/xapp_xmore.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2010-July/001360.html +sha1 7db4e5feb82d5d05038722d3af00d28e103bed18 xmore-1.0.2.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xmore/xapp_xmore.mk b/buildroot/package/x11r7/xapp_xmore/xapp_xmore.mk new file mode 100644 index 0000000..b0b0edf --- /dev/null +++ b/buildroot/package/x11r7/xapp_xmore/xapp_xmore.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xmore +# +################################################################################ + +XAPP_XMORE_VERSION = 1.0.2 +XAPP_XMORE_SOURCE = xmore-$(XAPP_XMORE_VERSION).tar.bz2 +XAPP_XMORE_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XMORE_LICENSE = MIT +XAPP_XMORE_LICENSE_FILES = COPYING +XAPP_XMORE_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xpr/Config.in b/buildroot/package/x11r7/xapp_xpr/Config.in new file mode 100644 index 0000000..0710d62 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xpr/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XPR + bool "xpr" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + X.Org xpr application diff --git a/buildroot/package/x11r7/xapp_xpr/xapp_xpr.hash b/buildroot/package/x11r7/xapp_xpr/xapp_xpr.hash new file mode 100644 index 0000000..eaab288 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xpr/xapp_xpr.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2012-March/001926.html +sha256 fed98df31eb93d3dca4688cb535aabad06be572e70ace3b1685679c18dd86cb5 xpr-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xpr/xapp_xpr.mk b/buildroot/package/x11r7/xapp_xpr/xapp_xpr.mk new file mode 100644 index 0000000..b2c4e04 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xpr/xapp_xpr.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xpr +# +################################################################################ + +XAPP_XPR_VERSION = 1.0.4 +XAPP_XPR_SOURCE = xpr-$(XAPP_XPR_VERSION).tar.bz2 +XAPP_XPR_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XPR_LICENSE = MIT +XAPP_XPR_LICENSE_FILES = COPYING +XAPP_XPR_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xprop/Config.in b/buildroot/package/x11r7/xapp_xprop/Config.in new file mode 100644 index 0000000..314e79f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xprop/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XPROP + bool "xprop" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + property displayer for X diff --git a/buildroot/package/x11r7/xapp_xprop/xapp_xprop.hash b/buildroot/package/x11r7/xapp_xprop/xapp_xprop.hash new file mode 100644 index 0000000..4758979 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xprop/xapp_xprop.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-August/002290.html +sha256 9bee88b1025865ad121f72d32576dd3027af1446774aa8300cce3c261d869bc6 xprop-1.2.2.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xprop/xapp_xprop.mk b/buildroot/package/x11r7/xapp_xprop/xapp_xprop.mk new file mode 100644 index 0000000..40a8577 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xprop/xapp_xprop.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xprop +# +################################################################################ + +XAPP_XPROP_VERSION = 1.2.2 +XAPP_XPROP_SOURCE = xprop-$(XAPP_XPROP_VERSION).tar.bz2 +XAPP_XPROP_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XPROP_LICENSE = MIT +XAPP_XPROP_LICENSE_FILES = COPYING +XAPP_XPROP_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xrandr/Config.in b/buildroot/package/x11r7/xapp_xrandr/Config.in new file mode 100644 index 0000000..fe9bd4e --- /dev/null +++ b/buildroot/package/x11r7/xapp_xrandr/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XRANDR + bool "xrandr" + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBX11 + help + primitive command line interface to RandR extension diff --git a/buildroot/package/x11r7/xapp_xrandr/xapp_xrandr.hash b/buildroot/package/x11r7/xapp_xrandr/xapp_xrandr.hash new file mode 100644 index 0000000..b1db30d --- /dev/null +++ b/buildroot/package/x11r7/xapp_xrandr/xapp_xrandr.hash @@ -0,0 +1,2 @@ +# From https://lists.freedesktop.org/archives/xorg-announce/2016-February/002677.html +sha256 c1cfd4e1d4d708c031d60801e527abc9b6d34b85f2ffa2cadd21f75ff38151cd xrandr-1.5.0.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xrandr/xapp_xrandr.mk b/buildroot/package/x11r7/xapp_xrandr/xapp_xrandr.mk new file mode 100644 index 0000000..583a501 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xrandr/xapp_xrandr.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xapp_xrandr +# +################################################################################ + +XAPP_XRANDR_VERSION = 1.5.0 +XAPP_XRANDR_SOURCE = xrandr-$(XAPP_XRANDR_VERSION).tar.bz2 +XAPP_XRANDR_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XRANDR_LICENSE = MIT +XAPP_XRANDR_LICENSE_FILES = COPYING +XAPP_XRANDR_DEPENDENCIES = xlib_libXrandr xlib_libX11 +XAPP_XRANDR_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xrdb/Config.in b/buildroot/package/x11r7/xapp_xrdb/Config.in new file mode 100644 index 0000000..8c07857 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xrdb/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XRDB + bool "xrdb" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + X server resource database utility diff --git a/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.hash b/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.hash new file mode 100644 index 0000000..4844a09 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-September/002316.html +sha256 73827b6bbfc9d27ca287d95a1224c306d7053cd7b8156641698d7dc541ca565b xrdb-1.1.0.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.mk b/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.mk new file mode 100644 index 0000000..f32afa4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xrdb +# +################################################################################ + +XAPP_XRDB_VERSION = 1.1.0 +XAPP_XRDB_SOURCE = xrdb-$(XAPP_XRDB_VERSION).tar.bz2 +XAPP_XRDB_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XRDB_LICENSE = MIT +XAPP_XRDB_LICENSE_FILES = COPYING +XAPP_XRDB_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xrefresh/Config.in b/buildroot/package/x11r7/xapp_xrefresh/Config.in new file mode 100644 index 0000000..16b1e50 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xrefresh/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XREFRESH + bool "xrefresh" + select BR2_PACKAGE_XLIB_LIBX11 + help + refresh all or part of an X screen diff --git a/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash b/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash new file mode 100644 index 0000000..6d5a53b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-May/002214.html +sha256 3213671b0a8a9d1e8d1d5d9e3fd86842c894dd9acc1be2560eda50bc1fb791d6 xrefresh-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk b/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk new file mode 100644 index 0000000..8403762 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xrefresh +# +################################################################################ + +XAPP_XREFRESH_VERSION = 1.0.5 +XAPP_XREFRESH_SOURCE = xrefresh-$(XAPP_XREFRESH_VERSION).tar.bz2 +XAPP_XREFRESH_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XREFRESH_LICENSE = MIT +XAPP_XREFRESH_LICENSE_FILES = COPYING +XAPP_XREFRESH_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xset/Config.in b/buildroot/package/x11r7/xapp_xset/Config.in new file mode 100644 index 0000000..71497ab --- /dev/null +++ b/buildroot/package/x11r7/xapp_xset/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XSET + bool "xset" + select BR2_PACKAGE_XLIB_LIBXMU + help + X.Org xset application diff --git a/buildroot/package/x11r7/xapp_xset/xapp_xset.hash b/buildroot/package/x11r7/xapp_xset/xapp_xset.hash new file mode 100644 index 0000000..f9ff392 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xset/xapp_xset.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-August/002291.html +sha256 4382f4fb29b88647e13f3b4bc29263134270747fc159cfc5f7e3af23588c8063 xset-1.2.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xset/xapp_xset.mk b/buildroot/package/x11r7/xapp_xset/xapp_xset.mk new file mode 100644 index 0000000..157cd22 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xset/xapp_xset.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xset +# +################################################################################ + +XAPP_XSET_VERSION = 1.2.3 +XAPP_XSET_SOURCE = xset-$(XAPP_XSET_VERSION).tar.bz2 +XAPP_XSET_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XSET_LICENSE = MIT +XAPP_XSET_LICENSE_FILES = COPYING +XAPP_XSET_DEPENDENCIES = xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xsetmode/Config.in b/buildroot/package/x11r7/xapp_xsetmode/Config.in new file mode 100644 index 0000000..a08e02d --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsetmode/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XSETMODE + bool "xsetmode" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXI + help + set the mode for an X Input device diff --git a/buildroot/package/x11r7/xapp_xsetmode/xapp_xsetmode.hash b/buildroot/package/x11r7/xapp_xsetmode/xapp_xsetmode.hash new file mode 100644 index 0000000..c393ad4 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsetmode/xapp_xsetmode.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 988b47cd922991c6e6adbce15dc386ac75690b61744b526c3af5a4eaa9afa0aa xsetmode-1.0.0.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xsetmode/xapp_xsetmode.mk b/buildroot/package/x11r7/xapp_xsetmode/xapp_xsetmode.mk new file mode 100644 index 0000000..c4599a9 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsetmode/xapp_xsetmode.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xsetmode +# +################################################################################ + +XAPP_XSETMODE_VERSION = 1.0.0 +XAPP_XSETMODE_SOURCE = xsetmode-$(XAPP_XSETMODE_VERSION).tar.bz2 +XAPP_XSETMODE_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XSETMODE_LICENSE = MIT +XAPP_XSETMODE_LICENSE_FILES = COPYING +XAPP_XSETMODE_DEPENDENCIES = xlib_libX11 xlib_libXi + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xsetpointer/Config.in b/buildroot/package/x11r7/xapp_xsetpointer/Config.in new file mode 100644 index 0000000..2b0b462 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsetpointer/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XSETPOINTER + bool "xsetpointer" + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXI + help + set an X Input device as the main pointer diff --git a/buildroot/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.hash b/buildroot/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.hash new file mode 100644 index 0000000..6e6a37e --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 7d65f450420b4f764dcf38e4ccee9d608b5a5874706e716cb861bfe2586b7d4a xsetpointer-1.0.0.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.mk b/buildroot/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.mk new file mode 100644 index 0000000..f56cdd5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsetpointer/xapp_xsetpointer.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xsetpointer +# +################################################################################ + +XAPP_XSETPOINTER_VERSION = 1.0.0 +XAPP_XSETPOINTER_SOURCE = xsetpointer-$(XAPP_XSETPOINTER_VERSION).tar.bz2 +XAPP_XSETPOINTER_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XSETPOINTER_LICENSE = MIT +XAPP_XSETPOINTER_LICENSE_FILES = COPYING +XAPP_XSETPOINTER_DEPENDENCIES = xproto_inputproto xlib_libX11 xlib_libXi + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xsetroot/Config.in b/buildroot/package/x11r7/xapp_xsetroot/Config.in new file mode 100644 index 0000000..a70df80 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsetroot/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XAPP_XSETROOT + bool "xsetroot" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XDATA_XBITMAPS + help + X.Org xsetroot application diff --git a/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash b/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash new file mode 100644 index 0000000..89a1abe --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-January/002149.html +sha256 ba215daaa78c415fce11b9e58c365d03bb602eaa5ea916578d76861a468cc3d9 xsetroot-1.1.1.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk b/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk new file mode 100644 index 0000000..9000867 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xsetroot +# +################################################################################ + +XAPP_XSETROOT_VERSION = 1.1.1 +XAPP_XSETROOT_SOURCE = xsetroot-$(XAPP_XSETROOT_VERSION).tar.bz2 +XAPP_XSETROOT_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XSETROOT_LICENSE = MIT +XAPP_XSETROOT_LICENSE_FILES = COPYING +XAPP_XSETROOT_DEPENDENCIES = xlib_libX11 xlib_libXmu xlib_libXcursor xdata_xbitmaps + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xsm/Config.in b/buildroot/package/x11r7/xapp_xsm/Config.in new file mode 100644 index 0000000..88f20cf --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsm/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XSM + bool "xsm" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXAW + help + X Session Manager diff --git a/buildroot/package/x11r7/xapp_xsm/xapp_xsm.hash b/buildroot/package/x11r7/xapp_xsm/xapp_xsm.hash new file mode 100644 index 0000000..aef9e55 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsm/xapp_xsm.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-February/002163.html +sha256 ad9dee2847a683841f73518a83014b0accae60e9eff7e96752a0dbc412867b4a xsm-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xsm/xapp_xsm.mk b/buildroot/package/x11r7/xapp_xsm/xapp_xsm.mk new file mode 100644 index 0000000..d4d2407 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xsm/xapp_xsm.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xsm +# +################################################################################ + +XAPP_XSM_VERSION = 1.0.3 +XAPP_XSM_SOURCE = xsm-$(XAPP_XSM_VERSION).tar.bz2 +XAPP_XSM_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XSM_LICENSE = MIT +XAPP_XSM_LICENSE_FILES = COPYING +XAPP_XSM_DEPENDENCIES = xlib_libXaw + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xstdcmap/Config.in b/buildroot/package/x11r7/xapp_xstdcmap/Config.in new file mode 100644 index 0000000..f15c36b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xstdcmap/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XSTDCMAP + bool "xstdcmap" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + X standard colormap utility diff --git a/buildroot/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.hash b/buildroot/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.hash new file mode 100644 index 0000000..6d8b35f --- /dev/null +++ b/buildroot/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-February/002164.html +sha256 f648e2b0cf16aa29856de998e2c7204be39dc1f8daeda9464d32288e0b580fc1 xstdcmap-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.mk b/buildroot/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.mk new file mode 100644 index 0000000..a4d6dc3 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xstdcmap/xapp_xstdcmap.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xstdcmap +# +################################################################################ + +XAPP_XSTDCMAP_VERSION = 1.0.3 +XAPP_XSTDCMAP_SOURCE = xstdcmap-$(XAPP_XSTDCMAP_VERSION).tar.bz2 +XAPP_XSTDCMAP_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XSTDCMAP_LICENSE = MIT +XAPP_XSTDCMAP_LICENSE_FILES = COPYING +XAPP_XSTDCMAP_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xvidtune/Config.in b/buildroot/package/x11r7/xapp_xvidtune/Config.in new file mode 100644 index 0000000..b1902cd --- /dev/null +++ b/buildroot/package/x11r7/xapp_xvidtune/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XVIDTUNE + bool "xvidtune" + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXXF86VM + help + video mode tuner for Xorg diff --git a/buildroot/package/x11r7/xapp_xvidtune/xapp_xvidtune.hash b/buildroot/package/x11r7/xapp_xvidtune/xapp_xvidtune.hash new file mode 100644 index 0000000..5c9e254 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xvidtune/xapp_xvidtune.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-January/002129.html +sha256 24e5e103933a04bfb2e1d18562619ed74031ab515e7343eb546bacdbcbeecf01 xvidtune-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xvidtune/xapp_xvidtune.mk b/buildroot/package/x11r7/xapp_xvidtune/xapp_xvidtune.mk new file mode 100644 index 0000000..d7c4d5b --- /dev/null +++ b/buildroot/package/x11r7/xapp_xvidtune/xapp_xvidtune.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xvidtune +# +################################################################################ + +XAPP_XVIDTUNE_VERSION = 1.0.3 +XAPP_XVIDTUNE_SOURCE = xvidtune-$(XAPP_XVIDTUNE_VERSION).tar.bz2 +XAPP_XVIDTUNE_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XVIDTUNE_LICENSE = MIT +XAPP_XVIDTUNE_LICENSE_FILES = COPYING +XAPP_XVIDTUNE_DEPENDENCIES = xlib_libXaw xlib_libXxf86vm + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xvinfo/Config.in b/buildroot/package/x11r7/xapp_xvinfo/Config.in new file mode 100644 index 0000000..2612c04 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xvinfo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XVINFO + bool "xvinfo" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXV + help + Print out X-Video extension adaptor information diff --git a/buildroot/package/x11r7/xapp_xvinfo/xapp_xvinfo.hash b/buildroot/package/x11r7/xapp_xvinfo/xapp_xvinfo.hash new file mode 100644 index 0000000..2077730 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xvinfo/xapp_xvinfo.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002596.html +sha256 9fba8b68daf53863e66d5004fa9c703fcecf69db4d151ea2d3d885d621e6e5eb xvinfo-1.1.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xvinfo/xapp_xvinfo.mk b/buildroot/package/x11r7/xapp_xvinfo/xapp_xvinfo.mk new file mode 100644 index 0000000..5b05a63 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xvinfo/xapp_xvinfo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xvinfo +# +################################################################################ + +XAPP_XVINFO_VERSION = 1.1.3 +XAPP_XVINFO_SOURCE = xvinfo-$(XAPP_XVINFO_VERSION).tar.bz2 +XAPP_XVINFO_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XVINFO_LICENSE = MIT +XAPP_XVINFO_LICENSE_FILES = COPYING +XAPP_XVINFO_DEPENDENCIES = xlib_libX11 xlib_libXv + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xwd/Config.in b/buildroot/package/x11r7/xapp_xwd/Config.in new file mode 100644 index 0000000..ada4820 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xwd/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XAPP_XWD + bool "xwd" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXKBFILE + select BR2_PACKAGE_XLIB_LIBXMU + help + dump an image of an X window diff --git a/buildroot/package/x11r7/xapp_xwd/xapp_xwd.hash b/buildroot/package/x11r7/xapp_xwd/xapp_xwd.hash new file mode 100644 index 0000000..1d9b4d5 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xwd/xapp_xwd.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-August/002292.html +sha256 3bb396a2268d78de4b1c3e5237a85f7849d3434e87b3cd1f4d57eef614227d79 xwd-1.0.6.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xwd/xapp_xwd.mk b/buildroot/package/x11r7/xapp_xwd/xapp_xwd.mk new file mode 100644 index 0000000..0cda34e --- /dev/null +++ b/buildroot/package/x11r7/xapp_xwd/xapp_xwd.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xwd +# +################################################################################ + +XAPP_XWD_VERSION = 1.0.6 +XAPP_XWD_SOURCE = xwd-$(XAPP_XWD_VERSION).tar.bz2 +XAPP_XWD_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XWD_LICENSE = MIT +XAPP_XWD_LICENSE_FILES = COPYING +XAPP_XWD_DEPENDENCIES = xlib_libX11 xlib_libXmu xlib_libxkbfile + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xwininfo/Config.in b/buildroot/package/x11r7/xapp_xwininfo/Config.in new file mode 100644 index 0000000..4e09570 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xwininfo/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XAPP_XWININFO + bool "xwininfo" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXMU + help + window information utility for X diff --git a/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash b/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash new file mode 100644 index 0000000..4b891a2 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-May/002215.html +sha256 218eb0ea95bd8de7903dfaa26423820c523ad1598be0751d2d8b6a2c23b23ff8 xwininfo-1.1.3.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk b/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk new file mode 100644 index 0000000..8ae5961 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xwininfo +# +################################################################################ + +XAPP_XWININFO_VERSION = 1.1.3 +XAPP_XWININFO_SOURCE = xwininfo-$(XAPP_XWININFO_VERSION).tar.bz2 +XAPP_XWININFO_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XWININFO_LICENSE = MIT +XAPP_XWININFO_LICENSE_FILES = COPYING +XAPP_XWININFO_DEPENDENCIES = xlib_libX11 xlib_libXmu + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xapp_xwud/Config.in b/buildroot/package/x11r7/xapp_xwud/Config.in new file mode 100644 index 0000000..cb8337e --- /dev/null +++ b/buildroot/package/x11r7/xapp_xwud/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XAPP_XWUD + bool "xwud" + select BR2_PACKAGE_XLIB_LIBX11 + help + image displayer for X diff --git a/buildroot/package/x11r7/xapp_xwud/xapp_xwud.hash b/buildroot/package/x11r7/xapp_xwud/xapp_xwud.hash new file mode 100644 index 0000000..44e9c60 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xwud/xapp_xwud.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2012-March/001927.html +sha256 d6b3a09ccfe750868e26bd2384900ab5ff0d434f7f40cd272a50eda8aaa1f8bd xwud-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xapp_xwud/xapp_xwud.mk b/buildroot/package/x11r7/xapp_xwud/xapp_xwud.mk new file mode 100644 index 0000000..60afd86 --- /dev/null +++ b/buildroot/package/x11r7/xapp_xwud/xapp_xwud.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xapp_xwud +# +################################################################################ + +XAPP_XWUD_VERSION = 1.0.4 +XAPP_XWUD_SOURCE = xwud-$(XAPP_XWUD_VERSION).tar.bz2 +XAPP_XWUD_SITE = http://xorg.freedesktop.org/releases/individual/app +XAPP_XWUD_LICENSE = MIT +XAPP_XWUD_LICENSE_FILES = COPYING +XAPP_XWUD_DEPENDENCIES = xlib_libX11 + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xcb-proto/0001-Make-whitespace-use-consistent.patch b/buildroot/package/x11r7/xcb-proto/0001-Make-whitespace-use-consistent.patch new file mode 100644 index 0000000..67adada --- /dev/null +++ b/buildroot/package/x11r7/xcb-proto/0001-Make-whitespace-use-consistent.patch @@ -0,0 +1,212 @@ +From ea7a3ac6c658164690e0febb55f4467cb9e0bcac Mon Sep 17 00:00:00 2001 +From: Thomas Klausner +Date: Thu, 19 May 2016 17:30:04 +0200 +Subject: [PATCH] Make whitespace use consistent. + +At least python-3.5.x complains about this forcefully. + +Signed-off-by: Thomas Klausner +Signed-off-by: Uli Schlachter +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + xcbgen/align.py | 96 ++++++++++++++++++++++++++++----------------------------- + 1 file changed, 48 insertions(+), 48 deletions(-) + +diff --git a/xcbgen/align.py b/xcbgen/align.py +index 5e31838..d4c12ee 100644 +--- a/xcbgen/align.py ++++ b/xcbgen/align.py +@@ -16,12 +16,12 @@ class Alignment(object): + return self.align == other.align and self.offset == other.offset + + def __str__(self): +- return "(align=%d, offset=%d)" % (self.align, self.offset) ++ return "(align=%d, offset=%d)" % (self.align, self.offset) + + @staticmethod + def for_primitive_type(size): +- # compute the required start_alignment based on the size of the type +- if size % 8 == 0: ++ # compute the required start_alignment based on the size of the type ++ if size % 8 == 0: + # do 8-byte primitives require 8-byte alignment in X11? + return Alignment(8,0) + elif size % 4 == 0: +@@ -33,7 +33,7 @@ class Alignment(object): + + + def align_after_fixed_size(self, size): +- new_offset = (self.offset + size) % self.align ++ new_offset = (self.offset + size) % self.align + return Alignment(self.align, new_offset) + + +@@ -41,7 +41,7 @@ class Alignment(object): + ''' + Assuming the given external_align, checks whether + self is fulfilled for all cases. +- Returns True if yes, False otherwise. ++ Returns True if yes, False otherwise. + ''' + if self.align == 1 and self.offset == 0: + # alignment 1 with offset 0 is always fulfilled +@@ -55,9 +55,9 @@ class Alignment(object): + # the external align guarantees less alignment -> not guaranteed + return False + +- if external_align.align % self.align != 0: ++ if external_align.align % self.align != 0: + # the external align cannot be divided by our align +- # -> not guaranteed ++ # -> not guaranteed + # (this can only happen if there are alignments that are not + # a power of 2, which is highly discouraged. But better be + # safe and check for it) +@@ -72,7 +72,7 @@ class Alignment(object): + + def combine_with(self, other): + # returns the alignment that is guaranteed when +- # both, self or other, can happen ++ # both, self or other, can happen + new_align = gcd(self.align, other.align) + new_offset_candidate1 = self.offset % new_align + new_offset_candidate2 = other.offset % new_align +@@ -83,8 +83,8 @@ class Alignment(object): + new_align = gcd(new_align, offset_diff) + new_offset_candidate1 = self.offset % new_align + new_offset_candidate2 = other.offset % new_align +- assert new_offset_candidate1 == new_offset_candidate2 +- new_offset = new_offset_candidate1 ++ assert new_offset_candidate1 == new_offset_candidate2 ++ new_offset = new_offset_candidate1 + # return the result + return Alignment(new_align, new_offset) + +@@ -92,44 +92,44 @@ class Alignment(object): + class AlignmentLog(object): + + def __init__(self): +- self.ok_list = [] +- self.fail_list = [] +- self.verbosity = 1 ++ self.ok_list = [] ++ self.fail_list = [] ++ self.verbosity = 1 + + def __str__(self): +- result = "" ++ result = "" + +- # output the OK-list +- for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list: +- stacksize = len(callstack) ++ # output the OK-list ++ for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list: ++ stacksize = len(callstack) + indent = ' ' * stacksize +- if self.ok_callstack_is_relevant(callstack): ++ if self.ok_callstack_is_relevant(callstack): + if field_name is None or field_name == "": +- result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n" +- % (indent, str(type_obj), indent, str(align_before), str(align_after))) +- else: +- result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n" +- % (indent, str(field_name), str(type_obj), +- indent, str(align_before), str(align_after))) ++ result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n" ++ % (indent, str(type_obj), indent, str(align_before), str(align_after))) ++ else: ++ result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n" ++ % (indent, str(field_name), str(type_obj), ++ indent, str(align_before), str(align_after))) + if self.verbosity >= 1: +- result += self.callstack_to_str(indent, callstack) ++ result += self.callstack_to_str(indent, callstack) + +- # output the fail-list +- for (align_before, field_name, type_obj, callstack, reason) in self.fail_list: +- stacksize = len(callstack) ++ # output the fail-list ++ for (align_before, field_name, type_obj, callstack, reason) in self.fail_list: ++ stacksize = len(callstack) + indent = ' ' * stacksize +- if field_name is None or field_name == "": +- result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n" +- % (indent, str(align_before), indent, str(type_obj), indent, reason)) +- else: +- result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n" +- % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason)) ++ if field_name is None or field_name == "": ++ result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n" ++ % (indent, str(align_before), indent, str(type_obj), indent, reason)) ++ else: ++ result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n" ++ % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason)) + + if self.verbosity >= 1: +- result += self.callstack_to_str(indent, callstack) ++ result += self.callstack_to_str(indent, callstack) + + +- return result ++ return result + + + def callstack_to_str(self, indent, callstack): +@@ -137,41 +137,41 @@ class AlignmentLog(object): + for stack_elem in callstack: + result += "\t %s%s\n" % (indent, str(stack_elem)) + result += "\t%s]\n" % indent +- return result ++ return result + + + def ok_callstack_is_relevant(self, ok_callstack): + # determine whether an ok callstack is relevant for logging +- if self.verbosity >= 2: +- return True ++ if self.verbosity >= 2: ++ return True + + # empty callstacks are always relevant +- if len(ok_callstack) == 0: ++ if len(ok_callstack) == 0: + return True + +- # check whether the ok_callstack is a subset or equal to a fail_callstack ++ # check whether the ok_callstack is a subset or equal to a fail_callstack + for (align_before, field_name, type_obj, fail_callstack, reason) in self.fail_list: + if len(ok_callstack) <= len(fail_callstack): + zipped = zip(ok_callstack, fail_callstack[:len(ok_callstack)]) +- is_subset = all([i == j for i, j in zipped]) +- if is_subset: ++ is_subset = all([i == j for i, j in zipped]) ++ if is_subset: + return True + + return False + + + def ok(self, align_before, field_name, type_obj, callstack, align_after): +- self.ok_list.append((align_before, field_name, type_obj, callstack, align_after)) ++ self.ok_list.append((align_before, field_name, type_obj, callstack, align_after)) + + def fail(self, align_before, field_name, type_obj, callstack, reason): +- self.fail_list.append((align_before, field_name, type_obj, callstack, reason)) ++ self.fail_list.append((align_before, field_name, type_obj, callstack, reason)) + + def append(self, other): +- self.ok_list.extend(other.ok_list) +- self.fail_list.extend(other.fail_list) ++ self.ok_list.extend(other.ok_list) ++ self.fail_list.extend(other.fail_list) + + def ok_count(self): +- return len(self.ok_list) ++ return len(self.ok_list) + + + +-- +2.8.1 + diff --git a/buildroot/package/x11r7/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch b/buildroot/package/x11r7/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch new file mode 100644 index 0000000..6fa5d48 --- /dev/null +++ b/buildroot/package/x11r7/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch @@ -0,0 +1,70 @@ +From bea5e1c85bdc0950913790364e18228f20395a3d Mon Sep 17 00:00:00 2001 +From: Thomas Klausner +Date: Thu, 19 May 2016 17:30:05 +0200 +Subject: print() is a function and needs parentheses. + +Fixes build with python-3.x. + +Signed-off-by: Thomas Klausner +Signed-off-by: Uli Schlachter +[yann.morin.1998@free.fr: backport from upstream] +Signed-off-by: "Yann E. MORIN" + +diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py +index c3b5758..b83b119 100644 +--- a/xcbgen/xtypes.py ++++ b/xcbgen/xtypes.py +@@ -501,7 +501,7 @@ class ComplexType(Type): + int(required_start_align_element.get('align', "4"), 0), + int(required_start_align_element.get('offset', "0"), 0)) + if verbose_align_log: +- print "Explicit start-align for %s: %s\n" % (self, self.required_start_align) ++ print ("Explicit start-align for %s: %s\n" % (self, self.required_start_align)) + + def resolve(self, module): + if self.resolved: +@@ -592,7 +592,7 @@ class ComplexType(Type): + if verbose_align_log: + print ("calc_required_start_align: %s has start-align %s" + % (str(self), str(self.required_start_align))) +- print "Details:\n" + str(log) ++ print ("Details:\n" + str(log)) + if self.required_start_align.offset != 0: + print (("WARNING: %s\n\thas start-align with non-zero offset: %s" + + "\n\tsuggest to add explicit definition with:" +@@ -619,12 +619,12 @@ class ComplexType(Type): + for offset in range(0,align): + align_candidate = Alignment(align, offset) + if verbose_align_log: +- print "trying %s for %s" % (str(align_candidate), str(self)) ++ print ("trying %s for %s" % (str(align_candidate), str(self))) + my_log = AlignmentLog() + if self.is_possible_start_align(align_candidate, callstack, my_log): + log.append(my_log) + if verbose_align_log: +- print "found start-align %s for %s" % (str(align_candidate), str(self)) ++ print ("found start-align %s for %s" % (str(align_candidate), str(self))) + return align_candidate + else: + my_ok_count = my_log.ok_count() +@@ -641,7 +641,7 @@ class ComplexType(Type): + # none of the candidates applies + # this type has illegal internal aligns for all possible start_aligns + if verbose_align_log: +- print "didn't find start-align for %s" % str(self) ++ print ("didn't find start-align for %s" % str(self)) + log.append(best_log) + return None + +@@ -900,7 +900,7 @@ class SwitchType(ComplexType): + # aux function for unchecked_get_alignment_after + def get_align_for_selected_case_field(self, case_field, start_align, callstack, log): + if verbose_align_log: +- print "get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field)) ++ print ("get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field))) + total_align = start_align + for field in self.bitcases: + my_callstack = callstack[:] +-- +cgit v0.10.2 + diff --git a/buildroot/package/x11r7/xcb-proto/Config.in b/buildroot/package/x11r7/xcb-proto/Config.in new file mode 100644 index 0000000..a4c9383 --- /dev/null +++ b/buildroot/package/x11r7/xcb-proto/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XCB_PROTO + bool "xcb-proto" + help + The protocol headers that define XCB. + + http://xcb.freedesktop.org/ diff --git a/buildroot/package/x11r7/xcb-proto/xcb-proto.hash b/buildroot/package/x11r7/xcb-proto/xcb-proto.hash new file mode 100644 index 0000000..3f43485 --- /dev/null +++ b/buildroot/package/x11r7/xcb-proto/xcb-proto.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-May/002693.html +sha256 5922aba4c664ab7899a29d92ea91a87aa4c1fc7eb5ee550325c3216c480a4906 xcb-proto-1.12.tar.bz2 diff --git a/buildroot/package/x11r7/xcb-proto/xcb-proto.mk b/buildroot/package/x11r7/xcb-proto/xcb-proto.mk new file mode 100644 index 0000000..84555d0 --- /dev/null +++ b/buildroot/package/x11r7/xcb-proto/xcb-proto.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# xcb-proto +# +################################################################################ + +XCB_PROTO_VERSION = 1.12 +XCB_PROTO_SOURCE = xcb-proto-$(XCB_PROTO_VERSION).tar.bz2 +XCB_PROTO_SITE = http://xcb.freedesktop.org/dist +XCB_PROTO_LICENSE = MIT +XCB_PROTO_LICENSE_FILES = COPYING + +XCB_PROTO_INSTALL_STAGING = YES + +XCB_PROTO_DEPENDENCIES = host-python +HOST_XCB_PROTO_DEPENDENCIES = host-python + +# xcbincludedir/pythondir is used by E.G. libxcb at build time to find the +# xml / python files, so ensure these expand to their full (host) paths +define XCB_PROTO_FIXUP_PC_FILE + $(SED) 's|^\(xcbincludedir=\)|\1$(STAGING_DIR)|' \ + -e 's|^\(pythondir=\)|\1$(STAGING_DIR)|' \ + $(STAGING_DIR)/usr/lib/pkgconfig/xcb-proto.pc +endef + +XCB_PROTO_POST_INSTALL_STAGING_HOOKS += XCB_PROTO_FIXUP_PC_FILE + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xcb-util-cursor/Config.in b/buildroot/package/x11r7/xcb-util-cursor/Config.in new file mode 100644 index 0000000..aa81615 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-cursor/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_XCB_UTIL_CURSOR + bool "xcb-util-cursor" + depends on BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL + select BR2_PACKAGE_XCB_UTIL_IMAGE + select BR2_PACKAGE_XCB_UTIL_RENDERUTIL + help + The XCB util modules provides a number of libraries which + sit on top of libxcb, the core X protocol library, and some + of the extension libraries. These experimental libraries + provide convenience functions and interfaces which make the + raw X protocol more usable. Some of the libraries also + provide client-side code which is not strictly part of the X + protocol but which have traditionally been provided by Xlib. + + XCB util-cursor module provides the following libraries: + - cursor: port of libxcursor + + http://xcb.freedesktop.org/ diff --git a/buildroot/package/x11r7/xcb-util-cursor/xcb-util-cursor.hash b/buildroot/package/x11r7/xcb-util-cursor/xcb-util-cursor.hash new file mode 100644 index 0000000..36f2258 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-cursor/xcb-util-cursor.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-May/002691.html +sha1 26562eb6d4151307f7b6a53453d360ecfc0563ac xcb-util-cursor-0.1.3.tar.bz2 diff --git a/buildroot/package/x11r7/xcb-util-cursor/xcb-util-cursor.mk b/buildroot/package/x11r7/xcb-util-cursor/xcb-util-cursor.mk new file mode 100644 index 0000000..07b37c5 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-cursor/xcb-util-cursor.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xcb-util-cursor +# +################################################################################ + +XCB_UTIL_CURSOR_VERSION = 0.1.3 +XCB_UTIL_CURSOR_SITE = http://xcb.freedesktop.org/dist +XCB_UTIL_CURSOR_SOURCE = xcb-util-cursor-$(XCB_UTIL_CURSOR_VERSION).tar.bz2 +XCB_UTIL_CURSOR_LICENSE = MIT +XCB_UTIL_CURSOR_LICENSE_FILES = COPYING +XCB_UTIL_CURSOR_INSTALL_STAGING = YES +XCB_UTIL_CURSOR_DEPENDENCIES = xcb-util xcb-util-image xcb-util-renderutil + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xcb-util-image/Config.in b/buildroot/package/x11r7/xcb-util-image/Config.in new file mode 100644 index 0000000..c8d7ef8 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-image/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_XCB_UTIL_IMAGE + bool "xcb-util-image" + select BR2_PACKAGE_XCB_UTIL + help + + The XCB util modules provides a number of libraries which + sit on top of libxcb, the core X protocol library, and some + of the extension libraries. These experimental libraries + provide convenience functions and interfaces which make the + raw X protocol more usable. Some of the libraries also + provide client-side code which is not strictly part of the X + protocol but which have traditionally been provided by Xlib. + + XCB util-image module provides the following library: + - image: Port of Xlib's XImage and XShmImage functions. + + http://xcb.freedesktop.org/ diff --git a/buildroot/package/x11r7/xcb-util-image/xcb-util-image.hash b/buildroot/package/x11r7/xcb-util-image/xcb-util-image.hash new file mode 100644 index 0000000..a9a2eaa --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-image/xcb-util-image.hash @@ -0,0 +1,4 @@ +# From http://lists.x.org/archives/xorg-announce/2014-October/002489.html +sha256 2db96a37d78831d643538dd1b595d7d712e04bdccf8896a5e18ce0f398ea2ffc xcb-util-image-0.4.0.tar.bz2 +# License file, locally calculated +sha256 19672c6153d8c4870abe734fa4dd2197481a311f4788d02ad729be07e116b26b COPYING diff --git a/buildroot/package/x11r7/xcb-util-image/xcb-util-image.mk b/buildroot/package/x11r7/xcb-util-image/xcb-util-image.mk new file mode 100644 index 0000000..8ddb0be --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-image/xcb-util-image.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xcb-util-image +# +################################################################################ + +XCB_UTIL_IMAGE_VERSION = 0.4.0 +XCB_UTIL_IMAGE_SITE = http://xcb.freedesktop.org/dist +XCB_UTIL_IMAGE_SOURCE = xcb-util-image-$(XCB_UTIL_IMAGE_VERSION).tar.bz2 +XCB_UTIL_IMAGE_INSTALL_STAGING = YES +XCB_UTIL_IMAGE_LICENSE = MIT +XCB_UTIL_IMAGE_LICENSE_FILES = COPYING +XCB_UTIL_IMAGE_DEPENDENCIES = xcb-util + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xcb-util-keysyms/Config.in b/buildroot/package/x11r7/xcb-util-keysyms/Config.in new file mode 100644 index 0000000..9ca2e0e --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-keysyms/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_XCB_UTIL_KEYSYMS + bool "xcb-util-keysyms" + select BR2_PACKAGE_LIBXCB + help + The XCB util modules provides a number of libraries which + sit on top of libxcb, the core X protocol library, and some + of the extension libraries. These experimental libraries + provide convenience functions and interfaces which make the + raw X protocol more usable. Some of the libraries also + provide client-side code which is not strictly part of the X + protocol but which have traditionally been provided by Xlib. + + XCB util-keysyms module provides the following library: + keysyms: Standard X key constants and conversion to/from + keycodes. + + http://xcb.freedesktop.org/ diff --git a/buildroot/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.hash b/buildroot/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.hash new file mode 100644 index 0000000..a25a263 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2014-October/002485.html +sha256 0ef8490ff1dede52b7de533158547f8b454b241aa3e4dcca369507f66f216dd9 xcb-util-keysyms-0.4.0.tar.bz2 diff --git a/buildroot/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.mk b/buildroot/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.mk new file mode 100644 index 0000000..9036b06 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-keysyms/xcb-util-keysyms.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xcb-util-keysyms +# +################################################################################ + +XCB_UTIL_KEYSYMS_VERSION = 0.4.0 +XCB_UTIL_KEYSYMS_SOURCE = xcb-util-keysyms-$(XCB_UTIL_KEYSYMS_VERSION).tar.bz2 +XCB_UTIL_KEYSYMS_SITE = http://xcb.freedesktop.org/dist + +# unfortunately, no license file +XCB_UTIL_KEYSYMS_LICENSE = MIT + +XCB_UTIL_KEYSYMS_INSTALL_STAGING = YES + +XCB_UTIL_KEYSYMS_DEPENDENCIES = host-pkgconf libxcb + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xcb-util-renderutil/Config.in b/buildroot/package/x11r7/xcb-util-renderutil/Config.in new file mode 100644 index 0000000..088bb18 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-renderutil/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_XCB_UTIL_RENDERUTIL + bool "xcb-util-renderutil" + depends on BR2_PACKAGE_LIBXCB # xcb-util + select BR2_PACKAGE_XCB_UTIL + help + The XCB util modules provides a number of libraries which + sit on top of libxcb, the core X protocol library, and some + of the extension libraries. These experimental libraries + provide convenience functions and interfaces which make the + raw X protocol more usable. Some of the libraries also + provide client-side code which is not strictly part of the X + protocol but which have traditionally been provided by Xlib. + + XCB util-renderutil module provides the following library: + - renderutil: Convenience functions for the Render + extension. + + http://xcb.freedesktop.org/ diff --git a/buildroot/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.hash b/buildroot/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.hash new file mode 100644 index 0000000..1a1ad3e --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2014-June/002446.html +sha256 c6e97e48fb1286d6394dddb1c1732f00227c70bd1bedb7d1acabefdd340bea5b xcb-util-renderutil-0.3.9.tar.bz2 diff --git a/buildroot/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.mk b/buildroot/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.mk new file mode 100644 index 0000000..9e6683b --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-renderutil/xcb-util-renderutil.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xcb-util-renderutil +# +################################################################################ + +XCB_UTIL_RENDERUTIL_VERSION = 0.3.9 +XCB_UTIL_RENDERUTIL_SITE = http://xcb.freedesktop.org/dist +XCB_UTIL_RENDERUTIL_SOURCE = xcb-util-renderutil-$(XCB_UTIL_RENDERUTIL_VERSION).tar.bz2 +XCB_UTIL_RENDERUTIL_LICENSE = MIT +XCB_UTIL_RENDERUTIL_LICENSE_FILES = COPYING +XCB_UTIL_RENDERUTIL_INSTALL_STAGING = YES +XCB_UTIL_RENDERUTIL_DEPENDENCIES = xcb-util + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xcb-util-wm/Config.in b/buildroot/package/x11r7/xcb-util-wm/Config.in new file mode 100644 index 0000000..2609600 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-wm/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_XCB_UTIL_WM + bool "xcb-util-wm" + select BR2_PACKAGE_LIBXCB + help + The XCB util modules provides a number of libraries which + sit on top of libxcb, the core X protocol library, and some + of the extension libraries. These experimental libraries + provide convenience functions and interfaces which make the + raw X protocol more usable. Some of the libraries also + provide client-side code which is not strictly part of the X + protocol but which have traditionally been provided by Xlib. + + XCB util-wm module provides the following libraries: + - ewmh: Both client and window-manager helpers for EWMH. + - icccm: Both client and window-manager helpers for ICCCM. + + http://xcb.freedesktop.org/ diff --git a/buildroot/package/x11r7/xcb-util-wm/xcb-util-wm.hash b/buildroot/package/x11r7/xcb-util-wm/xcb-util-wm.hash new file mode 100644 index 0000000..e31228f --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-wm/xcb-util-wm.hash @@ -0,0 +1,4 @@ +# From http://lists.x.org/archives/xorg-announce/2014-February/002401.html +sha256 28bf8179640eaa89276d2b0f1ce4285103d136be6c98262b6151aaee1d3c2a3f xcb-util-wm-0.4.1.tar.bz2 +# License file, locally calculated +sha256 12ab3559977a4b22ae3030b90c64a386e6ec51ab0e4eab1ff530f81a2639400a COPYING diff --git a/buildroot/package/x11r7/xcb-util-wm/xcb-util-wm.mk b/buildroot/package/x11r7/xcb-util-wm/xcb-util-wm.mk new file mode 100644 index 0000000..37df3fd --- /dev/null +++ b/buildroot/package/x11r7/xcb-util-wm/xcb-util-wm.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xcb-util-wm +# +################################################################################ + +XCB_UTIL_WM_VERSION = 0.4.1 +XCB_UTIL_WM_SITE = http://xcb.freedesktop.org/dist +XCB_UTIL_WM_SOURCE = xcb-util-wm-$(XCB_UTIL_WM_VERSION).tar.bz2 +XCB_UTIL_WM_INSTALL_STAGING = YES +XCB_UTIL_WM_LICENSE = MIT +XCB_UTIL_WM_LICENSE_FILES = COPYING +XCB_UTIL_WM_DEPENDENCIES = libxcb + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xcb-util/Config.in b/buildroot/package/x11r7/xcb-util/Config.in new file mode 100644 index 0000000..350afd0 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XCB_UTIL + bool "xcb-util" + depends on BR2_PACKAGE_LIBXCB + help + Libraries which sit on top of libxcb, the core X protocol + library, and some of the extension libraries. + + http://xcb.freedesktop.org/ diff --git a/buildroot/package/x11r7/xcb-util/xcb-util.hash b/buildroot/package/x11r7/xcb-util/xcb-util.hash new file mode 100644 index 0000000..a9b8be2 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util/xcb-util.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 c611259c0ab20fd76f79f48f4684843c18ea9c967eba78a45e8b3636315c18c4 xcb-util-0.3.9.tar.bz2 diff --git a/buildroot/package/x11r7/xcb-util/xcb-util.mk b/buildroot/package/x11r7/xcb-util/xcb-util.mk new file mode 100644 index 0000000..7b913e2 --- /dev/null +++ b/buildroot/package/x11r7/xcb-util/xcb-util.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xcb-util +# +################################################################################ + +XCB_UTIL_VERSION = 0.3.9 +XCB_UTIL_SOURCE = xcb-util-$(XCB_UTIL_VERSION).tar.bz2 +XCB_UTIL_SITE = http://xcb.freedesktop.org/dist + +# unfortunately, no license file +XCB_UTIL_LICENSE = MIT + +XCB_UTIL_INSTALL_STAGING = YES +XCB_UTIL_DEPENDENCIES = libxcb + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xcursor-transparent-theme/0001-fix-symlink.patch b/buildroot/package/x11r7/xcursor-transparent-theme/0001-fix-symlink.patch new file mode 100644 index 0000000..9cf351f --- /dev/null +++ b/buildroot/package/x11r7/xcursor-transparent-theme/0001-fix-symlink.patch @@ -0,0 +1,37 @@ +Do not symlink to a host directory + +The installation of xcursor-transparent-theme creates many symbolic +links to the 'transp' cursor file, but it does so using an absolute +directory, that happens to point to the installation location, which +is incorrect when cross-compiling. + +Also add the -f option so that the package can be reinstalled even if +it has already been installed. + +Signed-off-by: Thomas Petazzoni + +Index: b/cursors/Makefile.am +=================================================================== +--- a/cursors/Makefile.am ++++ b/cursors/Makefile.am +@@ -91,6 +91,6 @@ + $(INSTALL_DATA) $(CURSOR_REAL) $(DESTDIR)$(CURSOR_DIR)/ + for CURSOR in $(CURSOR_NAMES); do \ + echo '-- Installing cursor '$$CURSOR; \ +- ln -s $(DESTDIR)$(CURSOR_DIR)/transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \ ++ ln -sf transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \ + done + +Index: b/cursors/Makefile.in +=================================================================== +--- a/cursors/Makefile.in ++++ b/cursors/Makefile.in +@@ -177,7 +177,7 @@ + $(INSTALL_DATA) $(CURSOR_REAL) $(DESTDIR)$(CURSOR_DIR)/ + for CURSOR in $(CURSOR_NAMES); do \ + echo '-- Installing cursor '$$CURSOR; \ +- ln -s $(DESTDIR)$(CURSOR_DIR)/transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \ ++ ln -sf transp $(DESTDIR)$(CURSOR_DIR)/$$CURSOR; \ + done + + # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/buildroot/package/x11r7/xcursor-transparent-theme/Config.in b/buildroot/package/x11r7/xcursor-transparent-theme/Config.in new file mode 100644 index 0000000..8282db8 --- /dev/null +++ b/buildroot/package/x11r7/xcursor-transparent-theme/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XCURSOR_TRANSPARENT_THEME + bool "xcursor-transparent-theme" + select BR2_PACKAGE_XLIB_LIBXCURSOR + help + Completely transparent theme for hiding the X11 cursor. + + No upstream site. diff --git a/buildroot/package/x11r7/xcursor-transparent-theme/index.theme b/buildroot/package/x11r7/xcursor-transparent-theme/index.theme new file mode 100644 index 0000000..5300850 --- /dev/null +++ b/buildroot/package/x11r7/xcursor-transparent-theme/index.theme @@ -0,0 +1,2 @@ +[Icon Theme] +Inherits=xcursor-transparent diff --git a/buildroot/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.hash b/buildroot/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.hash new file mode 100644 index 0000000..19f0de2 --- /dev/null +++ b/buildroot/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 b26adf2d503d01299718390ae39dab4691a67220de09423be0364e9a060bf7e4 xcursor-transparent-theme-0.1.1.tar.gz diff --git a/buildroot/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.mk b/buildroot/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.mk new file mode 100644 index 0000000..ddcc6ac --- /dev/null +++ b/buildroot/package/x11r7/xcursor-transparent-theme/xcursor-transparent-theme.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xcursor-transparent-theme +# +################################################################################ + +XCURSOR_TRANSPARENT_THEME_VERSION = 0.1.1 +XCURSOR_TRANSPARENT_THEME_SITE = http://downloads.yoctoproject.org/releases/matchbox/utils +XCURSOR_TRANSPARENT_THEME_DEPENDENCIES = xlib_libXcursor host-xapp_xcursorgen +XCURSOR_TRANSPARENT_THEME_LICENSE = GPL-2.0 +XCURSOR_TRANSPARENT_THEME_LICENSE_FILES = COPYING + +define ICONS_DEFAULT_CONFIG_INSTALL + $(INSTALL) -m 0755 -D package/x11r7/xcursor-transparent-theme/index.theme \ + $(TARGET_DIR)/usr/share/icons/default/index.theme +endef + +XCURSOR_TRANSPARENT_THEME_POST_INSTALL_TARGET_HOOKS += ICONS_DEFAULT_CONFIG_INSTALL + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdata_xbitmaps/Config.in b/buildroot/package/x11r7/xdata_xbitmaps/Config.in new file mode 100644 index 0000000..2308cae --- /dev/null +++ b/buildroot/package/x11r7/xdata_xbitmaps/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XDATA_XBITMAPS + bool "xbitmaps" + help + No description available diff --git a/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash b/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash new file mode 100644 index 0000000..3e5fb32 --- /dev/null +++ b/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2010-December/001563.html +sha1 578afff7e4912192b524c25254cf7f54c16e57d8 xbitmaps-1.1.1.tar.bz2 diff --git a/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk b/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk new file mode 100644 index 0000000..9767f2c --- /dev/null +++ b/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xdata_xbitmaps +# +################################################################################ + +XDATA_XBITMAPS_VERSION = 1.1.1 +XDATA_XBITMAPS_SOURCE = xbitmaps-$(XDATA_XBITMAPS_VERSION).tar.bz2 +XDATA_XBITMAPS_SITE = http://xorg.freedesktop.org/releases/individual/data +XDATA_XBITMAPS_LICENSE = MIT +XDATA_XBITMAPS_LICENSE_FILES = COPYING + +XDATA_XBITMAPS_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdata_xcursor-themes/Config.in b/buildroot/package/x11r7/xdata_xcursor-themes/Config.in new file mode 100644 index 0000000..78d1020 --- /dev/null +++ b/buildroot/package/x11r7/xdata_xcursor-themes/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XDATA_XCURSOR_THEMES + bool "xdata_xcursor-themes" + select BR2_PACKAGE_XLIB_LIBXCURSOR + help + No description available diff --git a/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash b/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash new file mode 100644 index 0000000..e59c848 --- /dev/null +++ b/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-July/002271.html +sha256 e3fd2c05b9df0d88a3d1192c02143295744685f4f9a03db116e206698331bb86 xcursor-themes-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk b/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk new file mode 100644 index 0000000..a2987a0 --- /dev/null +++ b/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xdata_xcursor-themes +# +################################################################################ + +XDATA_XCURSOR_THEMES_VERSION = 1.0.4 +XDATA_XCURSOR_THEMES_SOURCE = xcursor-themes-$(XDATA_XCURSOR_THEMES_VERSION).tar.bz2 +XDATA_XCURSOR_THEMES_SITE = http://xorg.freedesktop.org/releases/individual/data +XDATA_XCURSOR_THEMES_LICENSE = MIT +XDATA_XCURSOR_THEMES_LICENSE_FILES = COPYING + +XDATA_XCURSOR_THEMES_INSTALL_STAGING = YES +XDATA_XCURSOR_THEMES_DEPENDENCIES = xlib_libXcursor host-xapp_xcursorgen + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch b/buildroot/package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 0000000..b342295 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-evdev/0001-build-get-rid-of-sdkdir.patch @@ -0,0 +1,87 @@ +From 1ad5e1593556f767150c2ca75176453bee4771e6 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 23 Oct 2016 22:00:10 +0200 +Subject: [PATCH] build: get rid of sdkdir + +Use of sdkdir causes problems during cross-compilation, where the full +path is then appended to the DESTDIR, leading to host paths being +appended in the target: + https://bugs.busybox.net/show_bug.cgi?id=8696 + +Other drivers (e.g. keyboard) got rid of sdkdir. Do the same. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 4 ---- + configure.ac | 9 --------- + include/Makefile.am | 5 ++++- + xorg-evdev.pc.in | 10 ++++++++-- + 4 files changed, 12 insertions(+), 16 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 1cc3ea6..1ae042a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -18,10 +18,6 @@ + # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +- +-# Provide an sdk location that is writable by the evdev module +-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg' +- + SUBDIRS = src man include + MAINTAINERCLEANFILES = ChangeLog INSTALL + +diff --git a/configure.ac b/configure.ac +index e4887a3..4adfa43 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -66,15 +66,6 @@ AC_ARG_WITH(xorg-conf-dir, + [xorgconfdir="$prefix/share/X11/xorg.conf.d"]) + AC_SUBST(xorgconfdir) + +-# X Server SDK location is required to install evdev header files +-# This location is also relayed in the xorg-evdev.pc file +-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server` +- +-# Workaround overriding sdkdir to be able to create a tarball when user has no +-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am +-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"]) +-AC_SUBST([sdkdir]) +- + DRIVER_NAME=evdev + AC_SUBST([DRIVER_NAME]) + +diff --git a/include/Makefile.am b/include/Makefile.am +index 0e3fc1b..afc96ed 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -1 +1,4 @@ +-sdk_HEADERS = evdev-properties.h ++# location formerly known as 'sdkdir': ++xorgincludedir = $(includedir)/xorg ++ ++xorginclude_HEADERS = evdev-properties.h +diff --git a/xorg-evdev.pc.in b/xorg-evdev.pc.in +index 20710a6..fcbf511 100644 +--- a/xorg-evdev.pc.in ++++ b/xorg-evdev.pc.in +@@ -1,6 +1,12 @@ +-sdkdir=@sdkdir@ ++prefix=@prefix@ ++exec_prefix=@exec_prefix@ ++libdir=@libdir@ ++includedir=@includedir@ ++datarootdir=@datarootdir@ ++moduledir=@moduledir@ ++sysconfigdir=@sysconfigdir@ + + Name: xorg-evdev + Description: X.Org evdev input driver. + Version: @PACKAGE_VERSION@ +-Cflags: -I${sdkdir} ++Cflags: -I${includedir}/xorg +-- +2.7.4 + diff --git a/buildroot/package/x11r7/xdriver_xf86-input-evdev/Config.in b/buildroot/package/x11r7/xdriver_xf86-input-evdev/Config.in new file mode 100644 index 0000000..70e950d --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-evdev/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV + bool "xf86-input-evdev" + depends on BR2_PACKAGE_HAS_UDEV # libudev is configure dependency + select BR2_PACKAGE_LIBEVDEV + select BR2_PACKAGE_MTDEV + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Generic Linux input driver + +comment "xf86-input-evdev requires udev to be enabled" + depends on !BR2_PACKAGE_HAS_UDEV diff --git a/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash b/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash new file mode 100644 index 0000000..bf9a2cd --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002767.html +sha256 9edaa6205baf6d2922cc4db3d8e54a7e7773b5f733b0ae90f6be7725f983b70d xf86-input-evdev-2.10.5.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk b/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk new file mode 100644 index 0000000..4933c42 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-evdev/xdriver_xf86-input-evdev.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# xdriver_xf86-input-evdev +# +################################################################################ + +XDRIVER_XF86_INPUT_EVDEV_VERSION = 2.10.5 +XDRIVER_XF86_INPUT_EVDEV_SOURCE = xf86-input-evdev-$(XDRIVER_XF86_INPUT_EVDEV_VERSION).tar.bz2 +XDRIVER_XF86_INPUT_EVDEV_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_INPUT_EVDEV_LICENSE = MIT +XDRIVER_XF86_INPUT_EVDEV_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_EVDEV_AUTORECONF = YES + +XDRIVER_XF86_INPUT_EVDEV_DEPENDENCIES = \ + host-pkgconf \ + libevdev \ + mtdev \ + xproto_inputproto \ + xserver_xorg-server \ + xproto_randrproto \ + xproto_xproto \ + udev + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch b/buildroot/package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 0000000..a611f15 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-joystick/0001-build-get-rid-of-sdkdir.patch @@ -0,0 +1,78 @@ +From 2826691dcd01f470d30dc8eb3bbd24a96cd3a93c Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 23 Oct 2016 22:29:29 +0200 +Subject: [PATCH] build: get rid of sdkdir + +Use of sdkdir causes problems during cross-compilation, where the full +path is then appended to the DESTDIR, leading to host paths being +appended in the target: + https://bugs.busybox.net/show_bug.cgi?id=8696 + +Other drivers (e.g. keyboard) got rid of sdkdir. Do the same. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 1 - + configure.ac | 9 --------- + include/Makefile.am | 5 ++++- + xorg-joystick.pc.in | 2 +- + 4 files changed, 5 insertions(+), 12 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 13946b8..c1567ae 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -18,7 +18,6 @@ + # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir=\$${includedir}/xorg + SUBDIRS = src man config include + MAINTAINERCLEANFILES = ChangeLog INSTALL + +diff --git a/configure.ac b/configure.ac +index b5834a5..44b9d27 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -66,15 +66,6 @@ AC_ARG_WITH(xorg-module-dir, + inputdir=${moduledir}/input + AC_SUBST(inputdir) + +-# Define a configure option for an alternate X Server SDK Headers +-# X Server SDK location is required to install joystick header files +-AC_ARG_WITH(sdkdir, +- AS_HELP_STRING([--with-sdkdir=], +- [Xorg X Server sdk headers (default is autodetected)]), +- [sdkdir="$withval"], +- [sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`]) +-AC_SUBST(sdkdir) +- + # Define a configure option to enable code debugging + AC_ARG_ENABLE(debug, AS_HELP_STRING([--disable-debug], + [Disable debugging code (default: enabled)]), +diff --git a/include/Makefile.am b/include/Makefile.am +index ed618c2..d656568 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -18,4 +18,7 @@ + # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-sdk_HEADERS = joystick-properties.h ++# Location formerly known as 'sdkdir' ++xorgincludedir = $(includedir)/xorg ++ ++xorginclude_HEADERS = joystick-properties.h +diff --git a/xorg-joystick.pc.in b/xorg-joystick.pc.in +index 76bb92f..a5972c7 100644 +--- a/xorg-joystick.pc.in ++++ b/xorg-joystick.pc.in +@@ -4,4 +4,4 @@ includedir=@includedir@ + Name: xorg-joystick + Description: X.Org joystick input driver. + Version: @PACKAGE_VERSION@ +-Cflags: -I${includedir} ++Cflags: -I${includedir}/xorg +-- +2.7.4 + diff --git a/buildroot/package/x11r7/xdriver_xf86-input-joystick/50-joystick.conf b/buildroot/package/x11r7/xdriver_xf86-input-joystick/50-joystick.conf new file mode 100644 index 0000000..95a295a --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-joystick/50-joystick.conf @@ -0,0 +1,6 @@ +Section "InputClass" + Identifier "joystick catchall" + MatchIsJoystick "on" + MatchDevicePath "/dev/input/event*" + Driver "joystick" +EndSection diff --git a/buildroot/package/x11r7/xdriver_xf86-input-joystick/Config.in b/buildroot/package/x11r7/xdriver_xf86-input-joystick/Config.in new file mode 100644 index 0000000..ff9f25f --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-joystick/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_JOYSTICK + bool "xf86-input-joystick" + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org driver for joystick input devices diff --git a/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash b/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash new file mode 100644 index 0000000..feec2d3 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-November/002742.html +sha256 9e7669ecf0f23b8e5dc39d5397cf28296f692aa4c0e4255f5e02816612c18eab xf86-input-joystick-1.6.3.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk b/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk new file mode 100644 index 0000000..5bc2a5c --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xdriver_xf86-input-joystick +# +################################################################################ + +XDRIVER_XF86_INPUT_JOYSTICK_VERSION = 1.6.3 +XDRIVER_XF86_INPUT_JOYSTICK_SOURCE = xf86-input-joystick-$(XDRIVER_XF86_INPUT_JOYSTICK_VERSION).tar.bz2 +XDRIVER_XF86_INPUT_JOYSTICK_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_INPUT_JOYSTICK_LICENSE = MIT +XDRIVER_XF86_INPUT_JOYSTICK_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_JOYSTICK_DEPENDENCIES = xserver_xorg-server xproto_inputproto xproto_randrproto xproto_xproto +XDRIVER_XF86_INPUT_JOYSTICK_AUTORECONF = YES + +define XDRIVER_XF86_INPUT_JOYSTICK_CONF + $(INSTALL) -m 0644 -D \ + $(XDRIVER_XF86_INPUT_JOYSTICK_PKGDIR)/50-joystick.conf \ + $(TARGET_DIR)/usr/share/X11/xorg.conf.d/50-joystick.conf +endef +XDRIVER_XF86_INPUT_JOYSTICK_POST_INSTALL_TARGET_HOOKS += XDRIVER_XF86_INPUT_JOYSTICK_CONF + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-input-keyboard/Config.in b/buildroot/package/x11r7/xdriver_xf86-input-keyboard/Config.in new file mode 100644 index 0000000..0a03524 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-keyboard/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD + bool "xf86-input-keyboard" + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XPROTO_KBPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Keyboard input driver diff --git a/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash b/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash new file mode 100644 index 0000000..eccfa74 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-November/002739.html +sha256 f7c900f21752683402992b288d5a2826de7a6c0c0abac2aadd7e8a409e170388 xf86-input-keyboard-1.9.0.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk b/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk new file mode 100644 index 0000000..01a6859 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xdriver_xf86-input-keyboard +# +################################################################################ + +XDRIVER_XF86_INPUT_KEYBOARD_VERSION = 1.9.0 +XDRIVER_XF86_INPUT_KEYBOARD_SOURCE = xf86-input-keyboard-$(XDRIVER_XF86_INPUT_KEYBOARD_VERSION).tar.bz2 +XDRIVER_XF86_INPUT_KEYBOARD_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_INPUT_KEYBOARD_LICENSE = MIT +XDRIVER_XF86_INPUT_KEYBOARD_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_KEYBOARD_DEPENDENCIES = xserver_xorg-server xproto_inputproto xproto_kbproto xproto_randrproto xproto_xproto +XDRIVER_XF86_INPUT_KEYBOARD_CONF_OPTS = --disable-selective-werror + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch b/buildroot/package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 0000000..2f9784c --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-libinput/0001-build-get-rid-of-sdkdir.patch @@ -0,0 +1,78 @@ +From 1b2cf6e6c2640e08166af36eee775542a45325af Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 23 Oct 2016 22:36:40 +0200 +Subject: [PATCH] build: get rid of sdkdir + +Use of sdkdir causes problems during cross-compilation, where the full +path is then appended to the DESTDIR, leading to host paths being +appended in the target: + https://bugs.busybox.net/show_bug.cgi?id=8696 + +Other drivers (e.g. keyboard) got rid of sdkdir. Do the same. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 2 -- + configure.ac | 8 -------- + include/Makefile.am | 4 +++- + xorg-libinput.pc.in | 5 +++-- + 4 files changed, 6 insertions(+), 13 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index a447d61..7aa5523 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -19,8 +19,6 @@ + # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg' +- + SUBDIRS = src include man test + MAINTAINERCLEANFILES = ChangeLog INSTALL + +diff --git a/configure.ac b/configure.ac +index 9894817..fe198cb 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -63,14 +63,6 @@ AC_ARG_WITH(xorg-conf-dir, + [xorgconfdir='${prefix}/share/X11/xorg.conf.d']) + AC_SUBST(xorgconfdir) + +-# X Server SDK location is required to install header files +-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server` +- +-# Workaround overriding sdkdir to be able to create a tarball when user has no +-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am +-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"]) +-AC_SUBST([sdkdir]) +- + DRIVER_NAME=libinput + AC_SUBST([DRIVER_NAME]) + +diff --git a/include/Makefile.am b/include/Makefile.am +index 0d52b9b..271ffac 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -1 +1,3 @@ +-sdk_HEADERS = libinput-properties.h ++# Location formerly known as 'sdkdir' ++xorgincludedir = $(includedir)/xorg ++xorginclude_HEADERS = libinput-properties.h +diff --git a/xorg-libinput.pc.in b/xorg-libinput.pc.in +index ff98189..9c0f506 100644 +--- a/xorg-libinput.pc.in ++++ b/xorg-libinput.pc.in +@@ -1,6 +1,7 @@ +-sdkdir=@sdkdir@ ++prefix=@prefix@ ++includedir=@includedir@ + + Name: xorg-libinput + Description: X.Org libinput input driver. + Version: @PACKAGE_VERSION@ +-Cflags: -I${sdkdir} ++Cflags: -I${includedir}/xorg +-- +2.7.4 + diff --git a/buildroot/package/x11r7/xdriver_xf86-input-libinput/Config.in b/buildroot/package/x11r7/xdriver_xf86-input-libinput/Config.in new file mode 100644 index 0000000..0f2db1b --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-libinput/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_LIBINPUT + bool "xf86-input-libinput" + depends on BR2_ENABLE_LOCALE # libinput + depends on BR2_PACKAGE_HAS_UDEV # libinput + select BR2_PACKAGE_LIBINPUT + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + This is an X driver based on libinput. It is a thin wrapper + around libinput, so while it does provide all features that + libinput supports it does little beyond. + +comment "xf86-input-libinput needs udev /dev management and a toolchain w/ locale" + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_ENABLE_LOCALE diff --git a/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash b/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash new file mode 100644 index 0000000..43b8f78 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-September/002807.html +md5 da47ef62eab1d0e922a8fa929ff81758 xf86-input-libinput-0.26.0.tar.bz2 +sha1 3f55b8a5d4ff51d4f0cfe3fe9ace66227193abd4 xf86-input-libinput-0.26.0.tar.bz2 +sha256 abca558fc2226f295691f1cf3412d4c0edeaa439f677ca25b5c9fab310d2387b xf86-input-libinput-0.26.0.tar.bz2 +sha512 b52a27e916f7e86576500ef2bc3ce640676f5a710543755865a723628c0e01a575989460853bac184ed696961e3f8fca72ecba8ad4625be8cd9e31f9a55f5e97 xf86-input-libinput-0.26.0.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk b/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk new file mode 100644 index 0000000..dab24b1 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xdriver_xf86-input-libinput +# +################################################################################ + +XDRIVER_XF86_INPUT_LIBINPUT_VERSION = 0.26.0 +XDRIVER_XF86_INPUT_LIBINPUT_SOURCE = xf86-input-libinput-$(XDRIVER_XF86_INPUT_LIBINPUT_VERSION).tar.bz2 +XDRIVER_XF86_INPUT_LIBINPUT_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_INPUT_LIBINPUT_LICENSE = MIT +XDRIVER_XF86_INPUT_LIBINPUT_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_LIBINPUT_DEPENDENCIES = libinput xserver_xorg-server xproto_inputproto xproto_xproto +XDRIVER_XF86_INPUT_LIBINPUT_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch b/buildroot/package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 0000000..d5f97f9 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-mouse/0001-build-get-rid-of-sdkdir.patch @@ -0,0 +1,81 @@ +From aef3d9bca4d77db833f71d50b1c84b16c69d7deb Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 23 Oct 2016 22:53:21 +0200 +Subject: [PATCH] build: get rid of sdkdir + +Use of sdkdir causes problems during cross-compilation, where the full +path is then appended to the DESTDIR, leading to host paths being +appended in the target: + https://bugs.busybox.net/show_bug.cgi?id=8696 + +Other drivers (e.g. keyboard) got rid of sdkdir. Do the same. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 3 --- + configure.ac | 10 ---------- + include/Makefile.am | 4 +++- + xorg-mouse.pc.in | 3 +-- + 4 files changed, 4 insertions(+), 16 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 7142485..efe66cb 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -34,9 +34,6 @@ ChangeLog: + + dist-hook: ChangeLog INSTALL + +-# Provide an sdk location that is writable by this module +-DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg' +- + if LINT + # Check source code with tools like lint & sparse + lint: +diff --git a/configure.ac b/configure.ac +index 15d9047..515681d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -60,16 +60,6 @@ AC_ARG_WITH(xorg-module-dir, + inputdir=${moduledir}/input + AC_SUBST(inputdir) + +-# X Server SDK location is required to install xf86-mouse-properties.h +-# This location is also relayed in the xorg-mouse.pc file +-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server` +- +-# Workaround overriding sdkdir to be able to create a tarball when user has no +-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am +-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"]) +-AC_SUBST([sdkdir]) +- +- + # Work out which OS mouse driver we need to build + case $host_os in + linux*) +diff --git a/include/Makefile.am b/include/Makefile.am +index 27ce0fb..2b85e4e 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -1 +1,3 @@ +-sdk_HEADERS = xf86-mouse-properties.h ++# Location formerly known as 'sdkdir' ++xorgincludedir = $(includedir)/xorg ++xorginclude_HEADERS = xf86-mouse-properties.h +diff --git a/xorg-mouse.pc.in b/xorg-mouse.pc.in +index 57df596..8355e61 100644 +--- a/xorg-mouse.pc.in ++++ b/xorg-mouse.pc.in +@@ -1,6 +1,7 @@ prefix=@prefix@ +-sdkdir=@sdkdir@ ++prefix=@prefix@ ++includedir=@includedir@ + + Name: xorg-mouse + Description: X.Org mouse input driver for non-evdev OS'es + Version: @PACKAGE_VERSION@ +-Cflags: -I${sdkdir} ++Cflags: -I${includedir}/xorg +-- +2.7.4 + diff --git a/buildroot/package/x11r7/xdriver_xf86-input-mouse/Config.in b/buildroot/package/x11r7/xdriver_xf86-input-mouse/Config.in new file mode 100644 index 0000000..20e1803 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-mouse/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE + bool "xf86-input-mouse" + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org driver for mouse input devices diff --git a/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash b/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash new file mode 100644 index 0000000..caba427 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-November/002740.html +sha256 f425d5b05c6ab412a27e0a1106bb83f9e2662b307210abbe48270892387f4b2f xf86-input-mouse-1.9.2.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk b/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk new file mode 100644 index 0000000..5bcbeb7 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xdriver_xf86-input-mouse +# +################################################################################ + +XDRIVER_XF86_INPUT_MOUSE_VERSION = 1.9.2 +XDRIVER_XF86_INPUT_MOUSE_SOURCE = xf86-input-mouse-$(XDRIVER_XF86_INPUT_MOUSE_VERSION).tar.bz2 +XDRIVER_XF86_INPUT_MOUSE_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_INPUT_MOUSE_LICENSE = MIT +XDRIVER_XF86_INPUT_MOUSE_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_MOUSE_DEPENDENCIES = xserver_xorg-server xproto_inputproto xproto_randrproto xproto_xproto +XDRIVER_XF86_INPUT_MOUSE_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch b/buildroot/package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch new file mode 100644 index 0000000..62950b0 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-synaptics/0001-build-get-rid-of-sdkdir.patch @@ -0,0 +1,88 @@ +From 231a35e99fee8aba23f18cce21dfb5fa8bef0c36 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 23 Oct 2016 23:07:33 +0200 +Subject: [PATCH] build: get rid of sdkdir + +Use of sdkdir causes problems during cross-compilation, where the full +path is then appended to the DESTDIR, leading to host paths being +appended in the target: + https://bugs.busybox.net/show_bug.cgi?id=8696 + +Other drivers (e.g. keyboard) got rid of sdkdir. Do the same. + +Signed-off-by: "Yann E. MORIN" +--- + Makefile.am | 1 - + configure.ac | 9 --------- + include/Makefile.am | 4 +++- + xorg-synaptics.pc.in | 5 +++-- + 4 files changed, 6 insertions(+), 13 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 678124c..c48c5c8 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -21,7 +21,6 @@ + # During distcheck, system locations (as provided by pkg-config) may + # not be writable; provide instead relative locations. + DISTCHECK_CONFIGURE_FLAGS = \ +- --with-sdkdir='$${includedir}/xorg' \ + --with-xorg-conf-dir='$${datadir}/X11/xorg.conf.d' + + SUBDIRS = include src man tools conf +diff --git a/configure.ac b/configure.ac +index 970dd5f..574353b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -55,11 +55,6 @@ XORG_DRIVER_CHECK_EXT(RANDR, randrproto) + # Obtain compiler/linker options for the Synaptics driver dependencies + PKG_CHECK_MODULES(XORG, [inputproto >= 2.1.99.3] [xorg-server >= 1.12] xproto inputproto $REQUIRED_MODULES) + +-# X Server SDK location is required to install Synaptics header files +-# This location is also relayed in the xorg-synaptics.pc file +-sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server` +-AC_SUBST([sdkdir]) +- + # ----------------------------------------------------------------------------- + # Configuration options + # ----------------------------------------------------------------------------- +@@ -154,10 +149,6 @@ if test "x$have_libxtst" = "xyes" ; then + fi + # ----------------------------------------------------------------------------- + +-# Workaround overriding sdkdir to be able to create a tarball when user has no +-# write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am +-AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"]) +- + AC_CONFIG_FILES([Makefile + src/Makefile + man/Makefile +diff --git a/include/Makefile.am b/include/Makefile.am +index 8234020..565868b 100644 +--- a/include/Makefile.am ++++ b/include/Makefile.am +@@ -18,4 +18,6 @@ + # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-sdk_HEADERS = synaptics-properties.h ++# Location formerly known as 'sdkdir' ++xorgincludedir = $(includedir)/xorg ++xorginclude_HEADERS = synaptics-properties.h +diff --git a/xorg-synaptics.pc.in b/xorg-synaptics.pc.in +index 159cfbf..68e0fbe 100644 +--- a/xorg-synaptics.pc.in ++++ b/xorg-synaptics.pc.in +@@ -1,6 +1,7 @@ +-sdkdir=@sdkdir@ ++prefix=@prefix@ ++includedir=@includedir@ + + Name: synaptics + Description: X.Org synaptics input driver. + Version: @PACKAGE_VERSION@ +-Cflags: -I${sdkdir} ++Cflags: -I${includedir}/xorg +-- +2.7.4 + diff --git a/buildroot/package/x11r7/xdriver_xf86-input-synaptics/Config.in b/buildroot/package/x11r7/xdriver_xf86-input-synaptics/Config.in new file mode 100644 index 0000000..ffe1a2a --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-synaptics/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_SYNAPTICS + bool "xf86-input-synaptics" + select BR2_PACKAGE_LIBEVDEV + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_MTDEV + help + X.Org driver for synaptics input devices diff --git a/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash b/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash new file mode 100644 index 0000000..2c31600 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-November/002744.html +sha256 afba3289d7a40217a19d90db98ce181772f9ca6d77e1898727b0afcf02073b5a xf86-input-synaptics-1.9.0.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk b/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk new file mode 100644 index 0000000..6bd9cc4 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xdriver_xf86-input-synaptics +# +################################################################################ + +XDRIVER_XF86_INPUT_SYNAPTICS_VERSION = 1.9.0 +XDRIVER_XF86_INPUT_SYNAPTICS_SOURCE = xf86-input-synaptics-$(XDRIVER_XF86_INPUT_SYNAPTICS_VERSION).tar.bz2 +XDRIVER_XF86_INPUT_SYNAPTICS_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_INPUT_SYNAPTICS_LICENSE = MIT +XDRIVER_XF86_INPUT_SYNAPTICS_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_SYNAPTICS_DEPENDENCIES = libevdev xserver_xorg-server xproto_inputproto xproto_randrproto xproto_xproto mtdev +XDRIVER_XF86_INPUT_SYNAPTICS_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-input-tslib/Config.in b/buildroot/package/x11r7/xdriver_xf86-input-tslib/Config.in new file mode 100644 index 0000000..4e77abc --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-tslib/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_TSLIB + bool "xf86-input-tslib" + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_TSLIB + help + Touch screen library input driver + + https://github.com/merge/xf86-input-tslib diff --git a/buildroot/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.hash b/buildroot/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.hash new file mode 100644 index 0000000..d2c1d8e --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.hash @@ -0,0 +1,5 @@ +# https://github.com/merge/xf86-input-tslib/releases/download/1.1.1/xf86-input-tslib-1.1.1.tar.bz2.sha256 +sha256 8b6a9f2ad73598a3619e66e252bd54b1792c4deba0213101fa4d272b5e9217ec xf86-input-tslib-1.1.1.tar.bz2 + +# Locally computed +sha256 edfc46c9b91499699fc54d39e986756a2dcce8a919c6066be177123441532856 COPYING diff --git a/buildroot/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.mk b/buildroot/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.mk new file mode 100644 index 0000000..bf0ee48 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-tslib/xdriver_xf86-input-tslib.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xdriver_xf86-input-tslib +# +################################################################################ + +XDRIVER_XF86_INPUT_TSLIB_VERSION = 1.1.1 +XDRIVER_XF86_INPUT_TSLIB_SOURCE = xf86-input-tslib-$(XDRIVER_XF86_INPUT_TSLIB_VERSION).tar.bz2 +XDRIVER_XF86_INPUT_TSLIB_SITE = https://github.com/merge/xf86-input-tslib/releases/download/$(XDRIVER_XF86_INPUT_TSLIB_VERSION) +XDRIVER_XF86_INPUT_TSLIB_LICENSE = MIT +XDRIVER_XF86_INPUT_TSLIB_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_TSLIB_DEPENDENCIES = \ + xproto_inputproto \ + xserver_xorg-server \ + xproto_randrproto \ + xproto_xproto \ + tslib + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/Config.in b/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/Config.in new file mode 100644 index 0000000..de989eb --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XDRIVER_XF86_INPUT_VMMOUSE + bool "xf86-input-vmmouse" + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + VMWare mouse input driver diff --git a/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.hash b/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.hash new file mode 100644 index 0000000..302b1cd --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-June/002616.html +sha256 0af558957ac1be1b2863712c2475de8f4d7f14921fd01ded2e2fde4921b19319 xf86-input-vmmouse-13.1.0.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.mk b/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.mk new file mode 100644 index 0000000..6e9cf8b --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-input-vmmouse/xdriver_xf86-input-vmmouse.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xdriver_xf86-input-vmmouse +# +################################################################################ + +XDRIVER_XF86_INPUT_VMMOUSE_VERSION = 13.1.0 +XDRIVER_XF86_INPUT_VMMOUSE_SOURCE = xf86-input-vmmouse-$(XDRIVER_XF86_INPUT_VMMOUSE_VERSION).tar.bz2 +XDRIVER_XF86_INPUT_VMMOUSE_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_INPUT_VMMOUSE_LICENSE = MIT +XDRIVER_XF86_INPUT_VMMOUSE_LICENSE_FILES = COPYING +XDRIVER_XF86_INPUT_VMMOUSE_DEPENDENCIES = xserver_xorg-server xproto_inputproto xproto_randrproto xproto_xproto + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +XDRIVER_XF86_INPUT_VMMOUSE_CONF_OPTS += --with-libudev +XDRIVER_XF86_INPUT_VMMOUSE_DEPENDENCIES += udev +else +XDRIVER_XF86_INPUT_VMMOUSE_CONF_OPTS += --without-libudev +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/Config.in new file mode 100644 index 0000000..968c5e7 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_AMDGPU + bool "xf86-video-amdgpu" + depends on BR2_PACKAGE_MESA3D_DRI_DRIVER + depends on BR2_PACKAGE_MESA3D_OPENGL_EGL # gbm + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_AMDGPU + select BR2_PACKAGE_LIBEPOXY + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XPROTO_DRI3PROTO + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_GLPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + AMD GPU video driver + +comment "xf86-video-amdgpu needs egl/opengl support from mesa3d" + depends on !BR2_PACKAGE_MESA3D_OPENGL_EGL || \ + !BR2_PACKAGE_MESA3D_DRI_DRIVER diff --git a/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash b/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash new file mode 100644 index 0000000..b5910f3 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-September/002805.html +md5 15a54f0a7870a57e3f611c9114924137 xf86-video-amdgpu-1.4.0.tar.bz2 +sha1 d9971cc6177095219a6687328aef25a72df3dd9d xf86-video-amdgpu-1.4.0.tar.bz2 +sha256 f8cac4bf3dd795b93cc337e5c0c62618026f597890a10d996f09c73eb88ba67c xf86-video-amdgpu-1.4.0.tar.bz2 +sha512 cae6417a45f6b981e007e080486083f1c38eaca58c6e331b04bbf46c86f23394742a722ae0d798d8dcad66879e99d90e57f04ae9ccb198f3ed26ec745878ccc2 xf86-video-amdgpu-1.4.0.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk b/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk new file mode 100644 index 0000000..50e5310 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# xdriver_xf86-video-amdgpu +# +################################################################################ + +XDRIVER_XF86_VIDEO_AMDGPU_VERSION = 1.4.0 +XDRIVER_XF86_VIDEO_AMDGPU_SOURCE = xf86-video-amdgpu-$(XDRIVER_XF86_VIDEO_AMDGPU_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_AMDGPU_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_AMDGPU_LICENSE = MIT +XDRIVER_XF86_VIDEO_AMDGPU_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_AMDGPU_DEPENDENCIES = \ + libdrm \ + xlib_libXcomposite \ + xproto_dri3proto \ + xproto_fontsproto \ + xproto_glproto \ + xproto_randrproto \ + xproto_videoproto \ + xproto_xextproto \ + xproto_xf86driproto \ + xproto_xproto \ + xserver_xorg-server + +# xdriver_xf86-video-amdgpu requires O_CLOEXEC +XDRIVER_XF86_VIDEO_AMDGPU_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ark/0001-mibstore.patch b/buildroot/package/x11r7/xdriver_xf86-video-ark/0001-mibstore.patch new file mode 100644 index 0000000..fa3e685 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-ark/0001-mibstore.patch @@ -0,0 +1,40 @@ +From 3a3eb72baec46f48e6cf15a834271c3d3386deac Mon Sep 17 00:00:00 2001 +From: Gaetan Nadon +Date: Tue, 17 Sep 2013 19:55:37 +0000 +Subject: Remove usage of mibstore.h (removed from server) + +The module had a compile error for this missing header file. + +Changes similar to vmware commit +23d87c92b7211cc5249eefe4ab3a2c7f370e279e + +Reviewed-by: Alex Deucher +Signed-off-by: Gaetan Nadon +--- +Fetch from: +http://cgit.freedesktop.org/xorg/driver/xf86-video-ark/commit/?id=3a3eb72baec46f48e6cf15a834271c3d3386deac + +Signed-off-by: Bernd Kuhls + +diff --git a/src/ark_driver.c b/src/ark_driver.c +index b7c287c..65cfe84 100644 +--- a/src/ark_driver.c ++++ b/src/ark_driver.c +@@ -39,7 +39,6 @@ + #include "compiler.h" + #include "mipointer.h" + #include "micmap.h" +-#include "mibstore.h" + #include "fb.h" + #include "ark.h" + +@@ -538,7 +537,6 @@ static Bool ARKScreenInit(SCREEN_INIT_ARGS_DECL) + + fbPictureInit (pScreen, 0, 0); + +- miInitializeBackingStore(pScreen); + xf86SetBackingStore(pScreen); + + if (!pARK->NoAccel) { +-- +cgit v0.9.0.2-2-gbebe diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ark/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-ark/Config.in new file mode 100644 index 0000000..cecedde --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-ark/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_ARK + bool "xf86-video-ark" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org driver for ark cards diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.hash b/buildroot/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.hash new file mode 100644 index 0000000..30953ef --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2012-July/002007.html +sha256 c690e046f34a393aac1c8d9616b4790e93cda60a460b00b9597d322175dbe51e xf86-video-ark-0.7.5.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.mk b/buildroot/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.mk new file mode 100644 index 0000000..c0b905b --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-ark/xdriver_xf86-video-ark.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-ark +# +################################################################################ + +XDRIVER_XF86_VIDEO_ARK_VERSION = 0.7.5 +XDRIVER_XF86_VIDEO_ARK_SOURCE = xf86-video-ark-$(XDRIVER_XF86_VIDEO_ARK_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_ARK_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_ARK_LICENSE = MIT +XDRIVER_XF86_VIDEO_ARK_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_ARK_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_xextproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ast/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-ast/Config.in new file mode 100644 index 0000000..5dfe95e --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-ast/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_AST + bool "xf86-video-ast" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + No description available diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.hash b/buildroot/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.hash new file mode 100644 index 0000000..cf877d5 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 1edbbc55d47d3fd71dec99b15c2483e22738c642623a0fb86ef4a81a9067a2de xf86-video-ast-1.1.5.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.mk b/buildroot/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.mk new file mode 100644 index 0000000..3c9eb91 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-ast/xdriver_xf86-video-ast.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-ast +# +################################################################################ + +XDRIVER_XF86_VIDEO_AST_VERSION = 1.1.5 +XDRIVER_XF86_VIDEO_AST_SOURCE = xf86-video-ast-$(XDRIVER_XF86_VIDEO_AST_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_AST_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_AST_LICENSE = MIT +XDRIVER_XF86_VIDEO_AST_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_AST_DEPENDENCIES = xproto_fontsproto xproto_xproto xserver_xorg-server + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ati/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-ati/Config.in new file mode 100644 index 0000000..00d91bd --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-ati/Config.in @@ -0,0 +1,20 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_ATI + bool "xf86-video-ati" + depends on BR2_PACKAGE_MESA3D + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_RADEON + select BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_GLPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + select BR2_PACKAGE_XPROTO_XINERAMAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + ATI video driver + +comment "xf86-video-ati needs mesa3d" + depends on !BR2_PACKAGE_MESA3D diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash b/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash new file mode 100644 index 0000000..117c574 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-September/002806.html +md5 0ff538f78ae82ccce384dadf7a705863 xf86-video-ati-7.10.0.tar.bz2 +sha1 38e535ecc8445c1b9464ac34db959337929887f7 xf86-video-ati-7.10.0.tar.bz2 +sha256 ee51d642e3105cb5424f02622dc2966b87b42d498bb34104a70fcf6d4a8f4e79 xf86-video-ati-7.10.0.tar.bz2 +sha512 1f2f4af1d299af62644693e6fbc47a5078c9bc5e7887a1ac217121ef2fd29d8c9f50a8d9be9ddb0887d0b49141bb33484f82c1313a472ad6867266b53b4a11ad xf86-video-ati-7.10.0.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk b/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk new file mode 100644 index 0000000..f8b8f70 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# xdriver_xf86-video-ati +# +################################################################################ + +XDRIVER_XF86_VIDEO_ATI_VERSION = 7.10.0 +XDRIVER_XF86_VIDEO_ATI_SOURCE = xf86-video-ati-$(XDRIVER_XF86_VIDEO_ATI_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_ATI_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_ATI_LICENSE = MIT +XDRIVER_XF86_VIDEO_ATI_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_ATI_DEPENDENCIES = \ + libdrm \ + xlib_libXcomposite \ + xproto_fontsproto \ + xproto_glproto \ + xproto_randrproto \ + xproto_videoproto \ + xproto_xextproto \ + xproto_xf86driproto \ + xproto_xineramaproto \ + xproto_xproto \ + xserver_xorg-server + +ifeq ($(BR2_PACKAGE_XPROTO_DRI3PROTO)$(BR2_PACKAGE_LIBEPOXY),yy) +XDRIVER_XF86_VIDEO_ATI_CONF_OPTS = --enable-glamor +else +XDRIVER_XF86_VIDEO_ATI_CONF_OPTS = --disable-glamor +endif + +# xdriver_xf86-video-ati requires O_CLOEXEC +XDRIVER_XF86_VIDEO_ATI_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-cirrus/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-cirrus/Config.in new file mode 100644 index 0000000..11c9df8 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-cirrus/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_CIRRUS + bool "xf86-video-cirrus" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Cirrus Logic video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.hash b/buildroot/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.hash new file mode 100644 index 0000000..86ef09e --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-May/002600.html +sha256 edc87b20a55259126b5239b5c1ef913419eab7ded0ed12ae9ae989460d7351ab xf86-video-cirrus-1.5.3.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.mk b/buildroot/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.mk new file mode 100644 index 0000000..78e8a9c --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-cirrus/xdriver_xf86-video-cirrus.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-cirrus +# +################################################################################ + +XDRIVER_XF86_VIDEO_CIRRUS_VERSION = 1.5.3 +XDRIVER_XF86_VIDEO_CIRRUS_SOURCE = xf86-video-cirrus-$(XDRIVER_XF86_VIDEO_CIRRUS_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_CIRRUS_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_CIRRUS_LICENSE = MIT +XDRIVER_XF86_VIDEO_CIRRUS_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_CIRRUS_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-dummy/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-dummy/Config.in new file mode 100644 index 0000000..00f7e1d --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-dummy/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_DUMMY + bool "xf86-video-dummy" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XF86DGAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org driver for dummy cards diff --git a/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash b/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash new file mode 100644 index 0000000..f26ddd4 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-December/002751.html +sha256 3712bb869307233491e4c570732d6073c0dc3d99adfdb9977396a3fdf84e95b9 xf86-video-dummy-0.3.8.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk b/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk new file mode 100644 index 0000000..fff1495 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-dummy/xdriver_xf86-video-dummy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-dummy +# +################################################################################ + +XDRIVER_XF86_VIDEO_DUMMY_VERSION = 0.3.8 +XDRIVER_XF86_VIDEO_DUMMY_SOURCE = xf86-video-dummy-$(XDRIVER_XF86_VIDEO_DUMMY_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_DUMMY_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_DUMMY_LICENSE = MIT +XDRIVER_XF86_VIDEO_DUMMY_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_DUMMY_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xf86dgaproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-fbdev/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-fbdev/Config.in new file mode 100644 index 0000000..9f7c540 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-fbdev/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV + bool "xf86-video-fbdev" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + video driver for framebuffer device diff --git a/buildroot/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.hash b/buildroot/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.hash new file mode 100644 index 0000000..0f34e51 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-September/002324.html +sha256 9dd4b326498223abbfdf786089a46ea3db4fa6bbd341308eb48a9e00bc3fd51b xf86-video-fbdev-0.4.4.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.mk b/buildroot/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.mk new file mode 100644 index 0000000..7d08c7d --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-fbdev/xdriver_xf86-video-fbdev.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-fbdev +# +################################################################################ + +XDRIVER_XF86_VIDEO_FBDEV_VERSION = 0.4.4 +XDRIVER_XF86_VIDEO_FBDEV_SOURCE = xf86-video-fbdev-$(XDRIVER_XF86_VIDEO_FBDEV_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_FBDEV_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_FBDEV_LICENSE = MIT +XDRIVER_XF86_VIDEO_FBDEV_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_FBDEV_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/0001-sunxi_x_g2d-drop-unused-dri2-include.patch b/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/0001-sunxi_x_g2d-drop-unused-dri2-include.patch new file mode 100644 index 0000000..8b4e817 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/0001-sunxi_x_g2d-drop-unused-dri2-include.patch @@ -0,0 +1,28 @@ +From 232c5b6924652f65ef5c047754e84b87b5fc6ac8 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Sat, 3 Oct 2015 19:01:38 +0200 +Subject: [PATCH] sunxi_x_g2d: drop unused dri2 include + +The driver doesn't use DRI for anything. + +[Upstream-status: submitted (https://github.com/ssvb/xf86-video-fbturbo/pull/45)] +Signed-off-by: Peter Korsgaard +--- + src/sunxi_x_g2d.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/sunxi_x_g2d.c b/src/sunxi_x_g2d.c +index d826027..8888abe 100644 +--- a/src/sunxi_x_g2d.c ++++ b/src/sunxi_x_g2d.c +@@ -31,7 +31,6 @@ + #include "xf86_OSproc.h" + #include "xf86.h" + #include "xf86drm.h" +-#include "dri2.h" + #include "damage.h" + #include "fb.h" + #include "gcstruct.h" +-- +2.1.4 + diff --git a/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/Config.in new file mode 100644 index 0000000..7825901 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO + bool "xf86-video-fbturbo" + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_XPROTO_DRI2PROTO if BR2_PACKAGE_LIBUMP + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + help + video driver, primarily optimized for the devices powered + by the Allwinner SoC (A10, A13, A20). It can use some of + the 2D/3D hardware acceleration features. + + https://github.com/ssvb/xf86-video-fbturbo diff --git a/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.hash b/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.hash new file mode 100644 index 0000000..0370216 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 10411686de0a9d8b2cde300b0d68e9f1d22e3611470d357ef3afc337f123ca0f xdriver_xf86-video-fbturbo-0.4.0.tar.gz diff --git a/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk b/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk new file mode 100644 index 0000000..15f4cd1 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-fbturbo/xdriver_xf86-video-fbturbo.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# xdriver_xf86-video-fbturbo +# +################################################################################ + +XDRIVER_XF86_VIDEO_FBTURBO_VERSION = 0.4.0 +XDRIVER_XF86_VIDEO_FBTURBO_SITE = $(call github,ssvb,xf86-video-fbturbo,$(XDRIVER_XF86_VIDEO_FBTURBO_VERSION)) +XDRIVER_XF86_VIDEO_FBTURBO_LICENSE = MIT +XDRIVER_XF86_VIDEO_FBTURBO_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES = \ + xserver_xorg-server \ + libdrm \ + pixman \ + xproto_fontsproto \ + xproto_randrproto \ + xproto_renderproto \ + xproto_videoproto \ + xproto_xproto \ + xproto_xf86driproto + +ifeq ($(BR2_PACKAGE_LIBPCIACCESS),y) +XDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES += libpciaccess +XDRIVER_XF86_VIDEO_FBTURBO_CONF_OPTS += --enable-pciaccess +else +XDRIVER_XF86_VIDEO_FBTURBO_CONF_OPTS += --disable-pciaccess +endif + +ifeq ($(BR2_PACKAGE_LIBUMP),y) +XDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES += libump +endif + +ifeq ($(BR2_PACKAGE_XPROTO_DRI2PROTO),y) +XDRIVER_XF86_VIDEO_FBTURBO_DEPENDENCIES += xproto_dri2proto +endif + +define XDRIVER_XF86_VIDEO_FBTURBO_INSTALL_CONF_FILE + $(INSTALL) -m 0644 -D $(@D)/xorg.conf $(TARGET_DIR)/etc/X11/xorg.conf +endef + +XDRIVER_XF86_VIDEO_FBTURBO_POST_INSTALL_TARGET_HOOKS += XDRIVER_XF86_VIDEO_FBTURBO_INSTALL_CONF_FILE + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-geode/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-geode/Config.in new file mode 100644 index 0000000..fe217b9 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-geode/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_GEODE + bool "xf86-video-geode" + depends on BR2_i386 + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + video driver for geode device diff --git a/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash b/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash new file mode 100644 index 0000000..8c567cb --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-December/002750.html +sha256 c6694c21ee3d9560f6e925925ef1d3818b1988e899b6a0592dbae597c87ac97e xf86-video-geode-2.11.19.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk b/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk new file mode 100644 index 0000000..9138abd --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-geode/xdriver_xf86-video-geode.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-geode +# +################################################################################ + +XDRIVER_XF86_VIDEO_GEODE_VERSION = 2.11.19 +XDRIVER_XF86_VIDEO_GEODE_SOURCE = xf86-video-geode-$(XDRIVER_XF86_VIDEO_GEODE_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_GEODE_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_GEODE_LICENSE = MIT +XDRIVER_XF86_VIDEO_GEODE_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_GEODE_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-glint/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-glint/Config.in new file mode 100644 index 0000000..acae30b --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-glint/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_GLINT + bool "xf86-video-glint" + depends on BR2_PACKAGE_MESA3D + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_GLPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DGAPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + GLINT/Permedia video driver + +comment "xf86-video-glint needs mesa3d" + depends on !BR2_PACKAGE_MESA3D diff --git a/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.hash b/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.hash new file mode 100644 index 0000000..f4e42bf --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002759.html +sha256 852833ab2ea9ce519195dfd061a6c7aa5945a093cdc19546d1e9e69df7d577d2 xf86-video-glint-1.2.9.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.mk b/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.mk new file mode 100644 index 0000000..52bc567 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-glint/xdriver_xf86-video-glint.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-glint +# +################################################################################ + +XDRIVER_XF86_VIDEO_GLINT_VERSION = 1.2.9 +XDRIVER_XF86_VIDEO_GLINT_SOURCE = xf86-video-glint-$(XDRIVER_XF86_VIDEO_GLINT_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_GLINT_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_GLINT_LICENSE = MIT +XDRIVER_XF86_VIDEO_GLINT_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_GLINT_DEPENDENCIES = xserver_xorg-server libdrm xproto_fontsproto xproto_glproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xf86dgaproto xproto_xf86driproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-i128/0001-mbstring.patch b/buildroot/package/x11r7/xdriver_xf86-video-i128/0001-mbstring.patch new file mode 100644 index 0000000..40bb1ea --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-i128/0001-mbstring.patch @@ -0,0 +1,35 @@ +From c87753733a6e1f85d1d037dced0b47ce0cf41658 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 25 Sep 2012 12:54:40 +0000 +Subject: Remove mibstore.h + +Signed-off-by: Adam Jackson +--- +Fetch from: +http://cgit.freedesktop.org/xorg/driver/xf86-video-i128/commit/?id=c87753733a6e1f85d1d037dced0b47ce0cf41658 + +Signed-off-by: Bernd Kuhls + +diff --git a/src/i128_driver.c b/src/i128_driver.c +index a0f08c0..51a4135 100644 +--- a/src/i128_driver.c ++++ b/src/i128_driver.c +@@ -50,8 +50,6 @@ + /* All drivers initialising the SW cursor need this */ + #include "mipointer.h" + +-/* All drivers implementing backing store need this */ +-#include "mibstore.h" + #include "micmap.h" + + #include "xf86DDC.h" +@@ -1556,7 +1554,6 @@ I128ScreenInit(SCREEN_INIT_ARGS_DECL) + return FALSE; + } + +- miInitializeBackingStore(pScreen); + xf86SetBackingStore(pScreen); + xf86SetSilkenMouse(pScreen); + +-- +cgit v0.9.0.2-2-gbebe diff --git a/buildroot/package/x11r7/xdriver_xf86-video-i128/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-i128/Config.in new file mode 100644 index 0000000..30b240c --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-i128/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_I128 + bool "xf86-video-i128" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Number 9 I128 video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.hash b/buildroot/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.hash new file mode 100644 index 0000000..9600c45 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2012-July/002012.html +sha256 f8827e4c988f90cf5a677554b30d61f0a07eb86d872478751cdc94dc17452b9c xf86-video-i128-1.3.6.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.mk b/buildroot/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.mk new file mode 100644 index 0000000..1bb760c --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-i128/xdriver_xf86-video-i128.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-i128 +# +################################################################################ + +XDRIVER_XF86_VIDEO_I128_VERSION = 1.3.6 +XDRIVER_XF86_VIDEO_I128_SOURCE = xf86-video-i128-$(XDRIVER_XF86_VIDEO_I128_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_I128_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_I128_LICENSE = MIT +XDRIVER_XF86_VIDEO_I128_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_I128_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/Config.in new file mode 100644 index 0000000..5a02573 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/Config.in @@ -0,0 +1,41 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV + bool "xf86-video-imx-viv" + depends on BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 + depends on BR2_PACKAGE_IMX_GPU_G2D + depends on BR2_TOOLCHAIN_HAS_SYNC_1 # mesa3d + select BR2_PACKAGE_MESA3D # Needed in order to compile xorg with glx/dri + select BR2_PACKAGE_MESA3D_DRI_DRIVER + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + help + X.Org driver for iMX6 GPU (Vivante) + + Notice EGL and GLes2 APIs are correctly supported. This + driver should also be able to provide Desktop OpenGL + implementation but, this feature seems broken since quite + some time. + + To use this driver, add correct configuration to your + /etc/X11/xorg.conf: + + Section "Device" + [...] + Driver "vivante" + Option "vivante_fbdev" "/dev/fbX" + EndSection + + Don't forget to load galcore.ko and create /dev/galcore + before using this driver (else, Xorg will exit with an + obscur message like "Segmentation fault at address 0xc"). + +comment "xf86-video-imx-viv depends on imx-gpu-viv with X11 output" + depends on BR2_arm + depends on !BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 + depends on BR2_TOOLCHAIN_HAS_SYNC_1 + +comment "xf86-video-imx-viv depends on imx-gpu-g2d" + depends on BR2_arm + depends on !BR2_PACKAGE_IMX_GPU_G2D + depends on BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 + depends on BR2_TOOLCHAIN_HAS_SYNC_1 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash b/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash new file mode 100644 index 0000000..be41cb0 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.hash @@ -0,0 +1 @@ +sha256 61b3a7a22f80d1cbc797c329615e1699f3906c9261de7eabcf0de2bf2399de55 xdriver_xf86-video-imx-viv-rel_imx_4.9.x_1.0.0_ga.tar.gz diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk b/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk new file mode 100644 index 0000000..222d74a --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx-viv/xdriver_xf86-video-imx-viv.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# xdriver_xf86-video-imx-viv +# +################################################################################ + +XDRIVER_XF86_VIDEO_IMX_VIV_VERSION = rel_imx_4.9.x_1.0.0_ga +XDRIVER_XF86_VIDEO_IMX_VIV_SITE = https://source.codeaurora.org/external/imx/xf86-video-imx-vivante +XDRIVER_XF86_VIDEO_IMX_VIV_SITE_METHOD = git +XDRIVER_XF86_VIDEO_IMX_VIV_DEPENDENCIES = imx-gpu-viv imx-gpu-g2d xserver_xorg-server \ + xproto_xproto xproto_xf86driproto libdrm +XDRIVER_XF86_VIDEO_IMX_VIV_LICENSE = MIT +XDRIVER_XF86_VIDEO_IMX_VIV_LICENSE_FILES = COPYING-MIT +XDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_STAGING = YES +XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD = $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D)/EXA/src -f makefile.linux + +define XDRIVER_XF86_VIDEO_IMX_VIV_BUILD_CMDS + $(XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD) sysroot=$(STAGING_DIR) \ + BUSID_HAS_NUMBER=1 BUILD_IN_YOCTO=1 XSERVER_GREATER_THAN_13=1 \ + CFLAGS="$(TARGET_CFLAGS)" +endef + +define XDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_STAGING_CMDS + $(XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD) prefix=$(STAGING_DIR)/usr install + $(INSTALL) -D -m 644 $(@D)/EXA/src/vivante_gal/vivante_priv.h \ + $(STAGING_DIR)/usr/include/vivante_priv.h + $(INSTALL) -D -m 644 $(@D)/EXA/src/vivante_gal/vivante_gal.h \ + $(STAGING_DIR)/usr/include/vivante_gal.h +endef + +define XDRIVER_XF86_VIDEO_IMX_VIV_INSTALL_TARGET_CMDS + $(XDRIVER_XF86_VIDEO_IMX_VIV_MAKE_CMD) prefix=$(TARGET_DIR)/usr install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx/0001-Update-to-newer-swap-macros.patch b/buildroot/package/x11r7/xdriver_xf86-video-imx/0001-Update-to-newer-swap-macros.patch new file mode 100644 index 0000000..05be6b3 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx/0001-Update-to-newer-swap-macros.patch @@ -0,0 +1,65 @@ +From fc7f191a1a0f290a4e808dd8f9bd58ba1dbd2be4 Mon Sep 17 00:00:00 2001 +From: Otavio Salvador +Date: Sat, 29 Dec 2012 18:00:36 -0200 +Subject: [PATCH 1/2] ext: Update to newer swap macros + +The swap macros now use an internal temporary variable so we need to +adapt the code according. + +Upstream-Status: Pending + +Signed-off-by: Otavio Salvador +--- + src/imx_ext.c | 16 ++++++---------- + 1 file changed, 6 insertions(+), 10 deletions(-) + +diff --git a/src/imx_ext.c b/src/imx_ext.c +index f12469a..710cba4 100644 +--- a/src/imx_ext.c ++++ b/src/imx_ext.c +@@ -57,8 +57,6 @@ void imxExtInit() + static int + Proc_IMX_EXT_GetPixmapPhysAddr(ClientPtr client) + { +- int n; +- + REQUEST(xIMX_EXT_GetPixmapPhysAddrReq); + REQUEST_SIZE_MATCH(xIMX_EXT_GetPixmapPhysAddrReq); + +@@ -96,10 +94,10 @@ Proc_IMX_EXT_GetPixmapPhysAddr(ClientPtr client) + /* Check if any reply values need byte swapping */ + if (client->swapped) { + +- swaps(&rep.sequenceNumber, n); +- swapl(&rep.length, n); +- swapl(&rep.pixmapPhysAddr, n); +- swapl(&rep.pixmapPitch, n); ++ swaps(&rep.sequenceNumber); ++ swapl(&rep.length); ++ swapl(&rep.pixmapPhysAddr); ++ swapl(&rep.pixmapPitch); + } + + /* Reply to client */ +@@ -123,16 +121,14 @@ Proc_IMX_EXT_Dispatch(ClientPtr client) + static int + SProc_IMX_EXT_GetPixmapPhysAddr(ClientPtr client) + { +- int n; +- + REQUEST(xIMX_EXT_GetPixmapPhysAddrReq); + + /* Swap request message length and verify it is correct. */ +- swaps(&stuff->length, n); ++ swaps(&stuff->length); + REQUEST_SIZE_MATCH(xIMX_EXT_GetPixmapPhysAddrReq); + + /* Swap remaining request message parameters. */ +- swapl(&stuff->pixmap, n); ++ swapl(&stuff->pixmap); + + return Proc_IMX_EXT_GetPixmapPhysAddr(client); + } +-- +1.7.10.4 + diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx/0002-Fix-error-unknown-type-name-uint.patch b/buildroot/package/x11r7/xdriver_xf86-video-imx/0002-Fix-error-unknown-type-name-uint.patch new file mode 100644 index 0000000..6a2fcdf --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx/0002-Fix-error-unknown-type-name-uint.patch @@ -0,0 +1,33 @@ +From ccdfce5e75ba707deacdd5808a8f3de8744848d0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= +Date: Tue, 5 Feb 2013 10:57:47 +0100 +Subject: [PATCH] Fix "error: unknown type name 'uint'" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In file included from imx_driver.c:33:0: +.../sysroots/imx53qsb/usr/src/kernel/include/linux/mxcfb.h:107:2: error: unknown type name 'uint' + +Upstream-Status: Pending + +Signed-off-by: Eric Bénard +--- + src/imx_driver.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/imx_driver.c b/src/imx_driver.c +index f4b3e38..4cf662d 100644 +--- a/src/imx_driver.c ++++ b/src/imx_driver.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + #include + +-- +1.7.10.4 + diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx/0003-support-glibc-2.20.patch b/buildroot/package/x11r7/xdriver_xf86-video-imx/0003-support-glibc-2.20.patch new file mode 100644 index 0000000..3b1b84d --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx/0003-support-glibc-2.20.patch @@ -0,0 +1,57 @@ +Fix build errors seen with glibc 2.20 + +/home/ubuntu/work/upstream/openembedded-core/build/tmp-glibc/sysroots/imx53qsb/usr/include/xorg/os.h:579:1: error: expected identifier or '(' before '__extension__' + strndup(const char *str, size_t n); + ^ + +Signed-off-by: Khem Raj +Upstream-Status: Pending +Index: xserver-xorg-video-imx-11.09.01/src/imx_accel.c +=================================================================== +--- xserver-xorg-video-imx-11.09.01.orig/src/imx_accel.c 2011-07-26 14:22:47.000000000 -0700 ++++ xserver-xorg-video-imx-11.09.01/src/imx_accel.c 2014-08-29 15:54:43.648070587 -0700 +@@ -21,6 +21,7 @@ + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ ++#include + + #include + #include "xf86.h" +Index: xserver-xorg-video-imx-11.09.01/src/imx_exa_offscreen.c +=================================================================== +--- xserver-xorg-video-imx-11.09.01.orig/src/imx_exa_offscreen.c 2014-08-29 15:26:31.992070587 -0700 ++++ xserver-xorg-video-imx-11.09.01/src/imx_exa_offscreen.c 2014-08-29 15:54:54.632070587 -0700 +@@ -53,7 +53,7 @@ + * When allocating, the contiguous block of areas with the minimum eviction + * cost is found and evicted in order to make room for the new allocation. + */ +- ++#include + + #include "xf86.h" + #include "exa.h" +Index: xserver-xorg-video-imx-11.09.01/src/imx_exa_z160.c +=================================================================== +--- xserver-xorg-video-imx-11.09.01.orig/src/imx_exa_z160.c 2014-08-29 15:26:31.992070587 -0700 ++++ xserver-xorg-video-imx-11.09.01/src/imx_exa_z160.c 2014-08-29 15:54:36.056070587 -0700 +@@ -21,6 +21,7 @@ + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ ++#include + + #include "xf86.h" + #include "xf86_OSproc.h" +Index: xserver-xorg-video-imx-11.09.01/src/imx_ext.c +=================================================================== +--- xserver-xorg-video-imx-11.09.01.orig/src/imx_ext.c 2014-08-29 15:26:32.064070587 -0700 ++++ xserver-xorg-video-imx-11.09.01/src/imx_ext.c 2014-08-29 15:55:18.048070587 -0700 +@@ -21,6 +21,7 @@ + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ ++#include + + #include + #include diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx/0004-Make-video-API-forward-and-backward-compatible.patch b/buildroot/package/x11r7/xdriver_xf86-video-imx/0004-Make-video-API-forward-and-backward-compatible.patch new file mode 100644 index 0000000..2ac6311 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx/0004-Make-video-API-forward-and-backward-compatible.patch @@ -0,0 +1,787 @@ +From 5216cb0f14414b5451f58df48a36c1c62c035276 Mon Sep 17 00:00:00 2001 +From: Otavio Salvador +Date: Sat, 29 Dec 2012 18:02:11 -0200 +Subject: [PATCH] Make video API forward and backward compatible + +This updates the video API in a forward and backward compatible way +using the "compat-api.h" as used in Xorg maintained drivers. + +Upstream-Status: Pending + +Signed-off-by: Otavio Salvador +--- + src/compat-api.h | 106 +++++++++++++++++++++++++++++++++++++++++++++++ + src/imx_display.c | 22 +++++----- + src/imx_display.h | 8 ++-- + src/imx_driver.c | 60 ++++++++++++++------------- + src/imx_exa_offscreen.c | 12 +++--- + src/imx_exa_z160.c | 53 ++++++++++++------------ + src/imx_xv_ipu.c | 4 +- + 7 files changed, 188 insertions(+), 77 deletions(-) + create mode 100644 src/compat-api.h + +diff --git a/src/compat-api.h b/src/compat-api.h +new file mode 100644 +index 0000000..73ac8a2 +--- /dev/null ++++ b/src/compat-api.h +@@ -0,0 +1,106 @@ ++/* ++ * Copyright 2012 Red Hat, Inc. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ * ++ * Author: Dave Airlie ++ */ ++ ++/* this file provides API compat between server post 1.13 and pre it, ++ it should be reused inside as many drivers as possible */ ++#ifndef COMPAT_API_H ++#define COMPAT_API_H ++ ++#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR ++#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum] ++#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p ++#endif ++ ++#ifndef XF86_HAS_SCRN_CONV ++#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum] ++#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex] ++#endif ++ ++#ifndef XF86_SCRN_INTERFACE ++ ++#define SCRN_ARG_TYPE int ++#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)] ++ ++#define SCREEN_ARG_TYPE int ++#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)] ++ ++#define SCREEN_INIT_ARGS_DECL int index, ScreenPtr pScreen, int argc, char **argv ++ ++#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask ++#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask ++ ++#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen ++#define CLOSE_SCREEN_ARGS scrnIndex, pScreen ++#define CLOSE_SCREEN_DECL_ScrnInfoPtr ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ ++#define FBDEVHWADJUSTFRAME_ARGS(x, y) scrnIndex, (x), (y), 0 ++ ++#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags ++ ++#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags ++ ++#define FREE_SCREEN_ARGS_DECL int arg, int flags ++#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0 ++ ++#define VT_FUNC_ARGS_DECL int arg, int flags ++#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags) ++ ++#define ENABLE_DISABLE_FB_ACCESS_ARGS(pScrn, b) pScrn->scrnIndex, b ++ ++#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex) ++#else ++#define SCRN_ARG_TYPE ScrnInfoPtr ++#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1) ++ ++#define SCREEN_ARG_TYPE ScreenPtr ++#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1) ++ ++#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv ++ ++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask ++#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask ++ ++#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen ++#define CLOSE_SCREEN_ARGS pScreen ++#define CLOSE_SCREEN_DECL_ScrnInfoPtr ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ++#define FBDEVHWADJUSTFRAME_ARGS(x, y) pScrn, (x), (y) ++ ++#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y ++#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode ++ ++#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg ++#define FREE_SCREEN_ARGS(x) (x) ++ ++#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg ++#define VT_FUNC_ARGS(flags) pScrn ++ ++#define ENABLE_DISABLE_FB_ACCESS_ARGS(pScrn, b) pScrn, b ++ ++#define XF86_ENABLEDISABLEFB_ARG(x) (x) ++ ++#endif ++ ++#endif +diff --git a/src/imx_display.c b/src/imx_display.c +index fcb8195..e2dc36a 100644 +--- a/src/imx_display.c ++++ b/src/imx_display.c +@@ -42,6 +42,8 @@ + #include "imx.h" + #include "imx_display.h" + ++#include "compat-api.h" ++ + #include + + #if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,7,6,0,0) +@@ -1373,19 +1375,19 @@ imxDisplayPreInit(ScrnInfoPtr pScrn) + Bool + imxDisplayStartScreenInit(int scrnIndex, ScreenPtr pScreen) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr fPtr = IMXPTR(pScrn); + + if (!xf86SetDesiredModes(pScrn)) { + +- xf86DrvMsg(scrnIndex, X_ERROR, "mode initialization failed\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "mode initialization failed\n"); + return FALSE; + } + + #if 0 + if (!fbdevHWModeInit(pScrn, pScrn->currentMode)) { + +- xf86DrvMsg(scrnIndex, X_ERROR, "mode initialization failed\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "mode initialization failed\n"); + return FALSE; + } + pScrn->displayWidth = +@@ -1463,29 +1465,29 @@ imxDisplayFinishScreenInit(int scrnIndex, ScreenPtr pScreen) + /* -------------------------------------------------------------------- */ + + Bool +-imxDisplaySwitchMode(int scrnIndex, DisplayModePtr mode, int flags) ++imxDisplaySwitchMode(SWITCH_MODE_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ SCRN_INFO_PTR(arg); + + return xf86SetSingleMode(pScrn, mode, RR_Rotate_0); + } + + void +-imxDisplayAdjustFrame(int scrnIndex, int x, int y, int flags) ++imxDisplayAdjustFrame(ADJUST_FRAME_ARGS_DECL) + { +-// fbdevHWAdjustFrame(scrnIndex, x, y, flags); ++// fbdevHWAdjustFrame(pScrn->scrnIndex, x, y, flags); + } + + Bool +-imxDisplayEnterVT(int scrnIndex, int flags) ++imxDisplayEnterVT(VT_FUNC_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ SCRN_INFO_PTR(arg); + + return xf86SetDesiredModes(pScrn); + } + + void +-imxDisplayLeaveVT(int scrnIndex, int flags) ++imxDisplayLeaveVT(VT_FUNC_ARGS_DECL) + { + } + +diff --git a/src/imx_display.h b/src/imx_display.h +index 4a5d5aa..3a3d43a 100644 +--- a/src/imx_display.h ++++ b/src/imx_display.h +@@ -59,16 +59,16 @@ imxDisplayValidMode(int scrnIndex, DisplayModePtr mode, + Bool verbose, int flags); + + extern Bool +-imxDisplaySwitchMode(int scrnIndex, DisplayModePtr mode, int flags); ++imxDisplaySwitchMode(SWITCH_MODE_ARGS_DECL); + + extern void +-imxDisplayAdjustFrame(int scrnIndex, int x, int y, int flags); ++imxDisplayAdjustFrame(ADJUST_FRAME_ARGS_DECL); + + extern Bool +-imxDisplayEnterVT(int scrnIndex, int flags); ++imxDisplayEnterVT(VT_FUNC_ARGS_DECL); + + extern void +-imxDisplayLeaveVT(int scrnIndex, int flags); ++imxDisplayLeaveVT(VT_FUNC_ARGS_DECL); + + extern Bool + imxDisplayChangeFrameBufferRotateEPDC(int scrnIndex, int fbRotate); +diff --git a/src/imx_driver.c b/src/imx_driver.c +index 178e36e..f4b3e38 100644 +--- a/src/imx_driver.c ++++ b/src/imx_driver.c +@@ -46,6 +46,8 @@ + #include "fb.h" + #include "fbdevhw.h" + ++#include "compat-api.h" ++ + #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6 + #include "xf86Resources.h" + #include "xf86RAC.h" +@@ -435,17 +437,17 @@ errorPreInit: + } + + static void +-imxFreeScreen(int scrnIndex, int flags) ++imxFreeScreen(FREE_SCREEN_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ SCRN_INFO_PTR(arg); + + imxFreeRec(pScrn); + } + + static Bool +-imxCloseScreen(int scrnIndex, ScreenPtr pScreen) ++imxCloseScreen(CLOSE_SCREEN_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ CLOSE_SCREEN_DECL_ScrnInfoPtr; + ImxPtr fPtr = IMXPTR(pScrn); + + fbdevHWRestore(pScrn); +@@ -453,7 +455,7 @@ imxCloseScreen(int scrnIndex, ScreenPtr pScreen) + pScrn->vtSema = FALSE; + + pScreen->CloseScreen = fPtr->saveCloseScreen; +- return (*pScreen->CloseScreen)(scrnIndex, pScreen); ++ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); + } + + static int +@@ -488,9 +490,9 @@ LCM(a, b) + } + + static Bool +-imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) ++imxScreenInit(SCREEN_INIT_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr fPtr = IMXPTR(pScrn); + VisualPtr visual; + int init_picture = 0; +@@ -514,7 +516,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + /* Map frame buffer memory */ + fPtr->fbMemoryBase = fbdevHWMapVidmem(pScrn); + if (NULL == fPtr->fbMemoryBase) { +- xf86DrvMsg(scrnIndex,X_ERROR,"mapping of video memory" ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"mapping of video memory" + " failed\n"); + return FALSE; + } +@@ -558,7 +560,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + const int fbOffsetScreen2 = + IMX_ALIGN(fbMaxScreenSize, fbMaxAlignOffset); + fPtr->fbMemoryScreenReserve = fbMaxScreenSize; +- xf86DrvMsg(scrnIndex, X_INFO, ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "reserve %d bytes of frame buffer for screen\n", + fPtr->fbMemoryScreenReserve); + fPtr->fbMemoryStart2 = NULL; +@@ -568,12 +570,12 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + + fPtr->fbMemoryScreenReserve += fbOffsetScreen2; + +- xf86DrvMsg(scrnIndex, X_INFO, ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "reserve same number of bytes for XRandR rotated screen at offset %d\n", + fbOffsetScreen2); + } + +- if (!imxDisplayStartScreenInit(scrnIndex, pScreen)) { ++ if (!imxDisplayStartScreenInit(pScrn->scrnIndex, pScreen)) { + + return FALSE; + } +@@ -582,7 +584,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + miClearVisualTypes(); + if (pScrn->bitsPerPixel > 8) { + if (!miSetVisualTypes(pScrn->depth, TrueColorMask, pScrn->rgbBits, TrueColor)) { +- xf86DrvMsg(scrnIndex,X_ERROR,"visual type setup failed" ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"visual type setup failed" + " for %d bits per pixel [1]\n", + pScrn->bitsPerPixel); + return FALSE; +@@ -591,14 +593,14 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + if (!miSetVisualTypes(pScrn->depth, + miGetDefaultVisualMask(pScrn->depth), + pScrn->rgbBits, pScrn->defaultVisual)) { +- xf86DrvMsg(scrnIndex,X_ERROR,"visual type setup failed" ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"visual type setup failed" + " for %d bits per pixel [2]\n", + pScrn->bitsPerPixel); + return FALSE; + } + } + if (!miSetPixmapDepths()) { +- xf86DrvMsg(scrnIndex,X_ERROR,"pixmap depth setup failed\n"); ++ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"pixmap depth setup failed\n"); + return FALSE; + } + +@@ -607,10 +609,10 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + has a padding which is independent from the depth (controlfb) */ + pScrn->displayWidth = fbdevHWGetLineLength(pScrn) / + (pScrn->bitsPerPixel / 8); +- xf86DrvMsg(scrnIndex, X_INFO, "displayWidth = %d\n", pScrn->displayWidth); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "displayWidth = %d\n", pScrn->displayWidth); + + if (pScrn->displayWidth != pScrn->virtualX) { +- xf86DrvMsg(scrnIndex, X_INFO, ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Pitch updated to %d after ModeInit\n", + pScrn->displayWidth); + } +@@ -633,7 +635,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + init_picture = 1; + break; + default: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: invalid number of bits per" + " pixel (%d) encountered in" + " imxScreenInit()\n", pScrn->bitsPerPixel); +@@ -644,7 +646,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + case FBDEVHW_INTERLEAVED_PLANES: + /* This should never happen ... + * we should check for this much much earlier ... */ +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: interleaved planes are not yet " + "supported by the imx driver\n"); + ret = FALSE; +@@ -652,20 +654,20 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + case FBDEVHW_TEXT: + /* This should never happen ... + * we should check for this much much earlier ... */ +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: text mode is not supported by the " + "imx driver\n"); + ret = FALSE; + break; + case FBDEVHW_VGA_PLANES: + /* Not supported yet */ +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: EGA/VGA Planes are not yet " + "supported by the imx driver\n"); + ret = FALSE; + break; + default: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: unrecognised hardware type (%d) " + "encountered in imxScreenInit()\n", type); + ret = FALSE; +@@ -699,7 +701,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + /* INIT ACCELERATION BEFORE INIT FOR BACKING STORE & SOFTWARE CURSOR */ + if (fPtr->useAccel) { + +- if (!imxExaZ160Setup(scrnIndex, pScreen)) { ++ if (!imxExaZ160Setup(pScrn->scrnIndex, pScreen)) { + + fPtr->useAccel = FALSE; + } +@@ -731,29 +733,29 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + /* XXX It would be simpler to use miCreateDefColormap() in all cases. */ + case FBDEVHW_PACKED_PIXELS: + if (!miCreateDefColormap(pScreen)) { +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: miCreateDefColormap failed " + "in imxScreenInit()\n"); + return FALSE; + } + break; + case FBDEVHW_INTERLEAVED_PLANES: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: interleaved planes are not yet " + "supported by the imx driver\n"); + return FALSE; + case FBDEVHW_TEXT: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: text mode is not supported by " + "the imx driver\n"); + return FALSE; + case FBDEVHW_VGA_PLANES: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: EGA/VGA planes are not yet " + "supported by the imx driver\n"); + return FALSE; + default: +- xf86DrvMsg(scrnIndex, X_ERROR, ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "internal error: unrecognised imx hardware type " + "(%d) encountered in imxScreenInit()\n", type); + return FALSE; +@@ -782,7 +784,7 @@ imxScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) + } + #endif + +- if (!imxDisplayFinishScreenInit(scrnIndex, pScreen)) { ++ if (!imxDisplayFinishScreenInit(pScrn->scrnIndex, pScreen)) { + return FALSE; + } + +@@ -810,7 +812,7 @@ IMXGetPixmapProperties( + } + + /* Access screen associated with this pixmap. */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Check if the screen associated with this pixmap has IMX driver. */ + if (0 != strcmp(IMX_DRIVER_NAME, pScrn->driverName)) { +diff --git a/src/imx_exa_offscreen.c b/src/imx_exa_offscreen.c +index 3a5c24d..0fbe2fc 100644 +--- a/src/imx_exa_offscreen.c ++++ b/src/imx_exa_offscreen.c +@@ -79,7 +79,7 @@ static void + imxExaOffscreenValidate (ScreenPtr pScreen) + { + /* Access the driver specific data. */ +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + ExaOffscreenArea *prev = 0, *area; +@@ -135,7 +135,7 @@ imxExaOffscreenMerge (ImxExaPtr imxExaPtr, ExaOffscreenArea *area) + ExaOffscreenArea * + imxExaOffscreenFree (ScreenPtr pScreen, ExaOffscreenArea *area) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + ExaOffscreenArea *next = area->next; +@@ -281,7 +281,7 @@ imxExaOffscreenAlloc (ScreenPtr pScreen, int size, int align, + pointer privData) + { + ExaOffscreenArea *area; +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + int real_size = 0, largest_avail = 0; +@@ -418,7 +418,7 @@ imxExaOffscreenSwapIn (ScreenPtr pScreen) + Bool + imxExaOffscreenInit (ScreenPtr pScreen) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + ExaOffscreenArea *area; +@@ -453,7 +453,7 @@ imxExaOffscreenInit (ScreenPtr pScreen) + void + imxExaOffscreenFini (ScreenPtr pScreen) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + ExaOffscreenArea *area; +@@ -472,7 +472,7 @@ imxExaOffscreenFini (ScreenPtr pScreen) + void + imxExaOffscreenSwapOut (ScreenPtr pScreen) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaPtr imxExaPtr = IMXEXAPTR(imxPtr); + +diff --git a/src/imx_exa_z160.c b/src/imx_exa_z160.c +index fb718e0..3d0bc96 100644 +--- a/src/imx_exa_z160.c ++++ b/src/imx_exa_z160.c +@@ -32,6 +32,7 @@ + #include + #include + ++#include "compat-api.h" + + /* Set if handles pixmap allocation and migration, i.e, EXA_HANDLES_PIXMAPS */ + #define IMX_EXA_ENABLE_HANDLES_PIXMAPS \ +@@ -299,7 +300,7 @@ imxExaZ160GetPixmapAddress(PixmapPtr pPixmap) + return fPixmapPtr->ptr; + #else + /* Access screen associated with this pixmap. */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -344,7 +345,7 @@ imxExaZ160GetPixmapProperties( + #else + + /* Access screen associated with this pixmap. */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Make sure pixmap is in framebuffer */ + if (!exaDrawableIsOffscreen(&(pPixmap->drawable))) { +@@ -856,7 +857,7 @@ imxExaZ160SyncIfBusyPixmap(PixmapPtr pPixmap) + { + /* Access screen associated with this pixmap. */ + ScreenPtr pScreen = pPixmap->drawable.pScreen; +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + + /* Access driver specific data for screen. */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -924,7 +925,7 @@ imxExaZ160CreatePixmap2(ScreenPtr pScreen, int width, int height, + } + + /* Access the driver specific data. */ +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr); + +@@ -1028,7 +1029,7 @@ imxExaZ160DestroyPixmap(ScreenPtr pScreen, void *driverPriv) + ImxExaPixmapPtr fPixmapPtr = (ImxExaPixmapPtr)driverPriv; + + /* Access the driver specific data. */ +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + ImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr); + +@@ -1068,7 +1069,7 @@ imxExaZ160ModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, + } + + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1194,7 +1195,7 @@ imxExaZ160TrackBusyPixmap(ImxExaZ160Ptr fPtr, PixmapPtr pPixmap) + static void + imxExaZ160WaitMarker(ScreenPtr pScreen, int marker) + { +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + + /* Access driver specific data associated with the screen. */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1249,7 +1250,7 @@ imxExaZ160PrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg) + } + + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1352,7 +1353,7 @@ static void + imxExaZ160Solid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2) + { + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1423,7 +1424,7 @@ static void + imxExaZ160DoneSolid(PixmapPtr pPixmap) + { + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmap->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1485,7 +1486,7 @@ imxExaZ160PrepareCopy( + } + + /* Access the screen associated with this pixmap. */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1599,7 +1600,7 @@ static void + imxExaZ160Copy(PixmapPtr pPixmapDst, int srcX, int srcY, int dstX, int dstY, int width, int height) + { + /* Access screen associated with dst pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1661,7 +1662,7 @@ static void + imxExaZ160DoneCopy(PixmapPtr pPixmapDst) + { + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -1770,7 +1771,7 @@ imxExaZ160CheckComposite(int op, PicturePtr pPictureSrc, PicturePtr pPictureMask + } + + /* Access screen associated with dst pixmap (same screen as for src pixmap). */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Check the number of entities, and fail if it isn't one. */ + if (pScrn->numEntities != 1) { +@@ -1987,7 +1988,7 @@ imxExaZ160PrepareComposite( + { + /* Access screen associated with dst pixmap. */ + /* Should be same screen as for src pixmap. */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* NOTE - many preconditions already verified in CheckComposite. */ + +@@ -2196,7 +2197,7 @@ imxExaZ160Composite( + int height) + { + /* Access screen associated with dst pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -2275,7 +2276,7 @@ static void + imxExaZ160DoneComposite(PixmapPtr pPixmapDst) + { + /* Access screen associated with this pixmap */ +- ScrnInfoPtr pScrn = xf86Screens[pPixmapDst->drawable.pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pPixmapDst->drawable.pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -2323,7 +2324,7 @@ imxExaZ160UploadToScreen( + + /* Access screen associated with this pixmap */ + ScreenPtr pScreen = pPixmapDst->drawable.pScreen; +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -2381,7 +2382,7 @@ imxExaZ160DownloadFromScreen( + + /* Access screen associated with this pixmap */ + ScreenPtr pScreen = pPixmapSrc->drawable.pScreen; +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + + /* Access driver specific data */ + ImxPtr imxPtr = IMXPTR(pScrn); +@@ -2412,9 +2413,9 @@ imxExaZ160DownloadFromScreen( + } + + Bool +-imxExaZ160CloseScreen(int scrnIndex, ScreenPtr pScreen) ++imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS_DECL) + { +- ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; ++ CLOSE_SCREEN_DECL_ScrnInfoPtr; + ImxPtr imxPtr = IMXPTR(pScrn); + + ImxExaZ160Ptr fPtr = IMXEXAZ160PTR(imxPtr); +@@ -2504,7 +2505,7 @@ imxExaZ160CloseScreen(int scrnIndex, ScreenPtr pScreen) + /* Install our CloseScreen function so that it gets called. */ + if (NULL != pScreen->CloseScreen) { + +- return (*pScreen->CloseScreen)(scrnIndex, pScreen); ++ return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); + } + + return TRUE; +@@ -2514,7 +2515,7 @@ Bool + imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen) + { + /* Access the screen info and then private data structures. */ +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); + ImxPtr imxPtr = IMXPTR(pScrn); + + /* Private data structure must not already be in use. */ +@@ -2582,7 +2583,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen) + + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Initialize Z160 interfaces failed.\n"); +- imxExaZ160CloseScreen(scrnIndex, pScreen); ++ imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS); + return FALSE; + } + +@@ -2592,7 +2593,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen) + + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Allocate EXA driver structure.\n"); +- imxExaZ160CloseScreen(scrnIndex, pScreen); ++ imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS); + return FALSE; + } + +@@ -2657,7 +2658,7 @@ imxExaZ160Setup(int scrnIndex, ScreenPtr pScreen) + if (!exaDriverInit(pScreen, exaDriverPtr)) { + + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "EXA initialization failed.\n"); +- imxExaZ160CloseScreen(scrnIndex, pScreen); ++ imxExaZ160CloseScreen(CLOSE_SCREEN_ARGS); + return FALSE; + } + fPtr->imxExaRec.exaDriverPtr = exaDriverPtr; +diff --git a/src/imx_xv_ipu.c b/src/imx_xv_ipu.c +index a517742..fc8a827 100644 +--- a/src/imx_xv_ipu.c ++++ b/src/imx_xv_ipu.c +@@ -398,7 +398,7 @@ xf86XVFillKeyHelper1 (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes) + xRectangle *rects; + GCPtr gc; + +- if(!xf86Screens[pScreen->myNum]->vtSema) return; ++ if(!xf86ScreenToScrn(pScreen)->vtSema) return; + + gc = GetScratchGC(root->depth, pScreen); + pval[0] = key; +@@ -771,7 +771,7 @@ MXXVInitializeAdaptor + XF86VideoAdaptorPtr **pppAdaptor + ) + { +- ScreenPtr pScreen = screenInfo.screens[pScreenInfo->scrnIndex]; ++ ScreenPtr pScreen = xf86ScrnToScreen(pScreenInfo); + XF86VideoAdaptorPtr *ppAdaptor = NULL; + IMXPtr fPtr = IMXPTR(pScreenInfo); + int nAdaptor; +-- +1.7.10.4 + diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx/0005-xf86-video-imxfb-fix-m4-hardcodded-paths.patch b/buildroot/package/x11r7/xdriver_xf86-video-imx/0005-xf86-video-imxfb-fix-m4-hardcodded-paths.patch new file mode 100644 index 0000000..64af773 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx/0005-xf86-video-imxfb-fix-m4-hardcodded-paths.patch @@ -0,0 +1,53 @@ +From 5b348e7be67957f4be6fcfa4942128c04f6db905 Mon Sep 17 00:00:00 2001 +From: Adrian Alonso +Date: Thu, 4 Aug 2011 14:24:26 -0500 +Subject: [PATCH] xf86-video-imxfb: fix m4 hardcodded paths + +* Fix m4 macros lookup location; remove /usr/share/aclocal path + +Signed-off-by: Adrian Alonso +--- + Makefile.am | 2 +- + Makefile.in | 2 +- + configure.ac | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index 6752256..e205657 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -20,4 +20,4 @@ + + AUTOMAKE_OPTIONS = foreign + SUBDIRS = src +-ACLOCAL_AMFLAGS = -I /usr/share/aclocal ++ACLOCAL_AMFLAGS = -I m4 +diff --git a/Makefile.in b/Makefile.in +index 5c0ba0e..f829db7 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -243,7 +243,7 @@ top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ + AUTOMAKE_OPTIONS = foreign + SUBDIRS = src +-ACLOCAL_AMFLAGS = -I /usr/share/aclocal ++ACLOCAL_AMFLAGS = -I m4 + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +diff --git a/configure.ac b/configure.ac +index a1ac73b..0078b86 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -29,7 +29,7 @@ AC_INIT([xf86-video-imx], + AC_CONFIG_SRCDIR([Makefile.am]) + AM_CONFIG_HEADER([config.h]) + AC_CONFIG_AUX_DIR(.) +-AC_CONFIG_MACRO_DIR([/usr/share/aclocal]) ++AC_CONFIG_MACRO_DIR([m4]) + + AM_INIT_AUTOMAKE([dist-bzip2]) + +-- +1.7.4.1 + diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx/0006-xserver-1.14-compat.patch b/buildroot/package/x11r7/xdriver_xf86-video-imx/0006-xserver-1.14-compat.patch new file mode 100644 index 0000000..14ccbbf --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx/0006-xserver-1.14-compat.patch @@ -0,0 +1,34 @@ +Fix building using new Xorg 1.14 + +mibstore functions are no longer supported. This patch removes them +from this driver, following the pattern in +http://patches.openembedded.org/patch/46133/ + +This checkin shows when/where the changes to the X server were made +that deleted the header mibstore.h and mentions the reasons. +http://lists.x.org/archives/xorg-devel/2012-September/033575.html + +Upstream-Status: Pending + +Signed-off-by: Otavio Salvador + +Index: xserver-xorg-video-imx-11.09.01/src/imx_driver.c +=================================================================== +--- xserver-xorg-video-imx-11.09.01.orig/src/imx_driver.c ++++ xserver-xorg-video-imx-11.09.01/src/imx_driver.c +@@ -37,7 +37,6 @@ + #include "xf86_OSproc.h" + + #include "mipointer.h" +-#include "mibstore.h" + #include "micmap.h" + #include "colormapst.h" + #include "xf86cmap.h" +@@ -722,7 +721,6 @@ imxScreenInit(SCREEN_INIT_ARGS_DECL) + /* Initialize for X extensions. */ + imxExtInit(); + +- miInitializeBackingStore(pScreen); + xf86SetBackingStore(pScreen); + + /* software cursor */ diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-imx/Config.in new file mode 100644 index 0000000..398d49e --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx/Config.in @@ -0,0 +1,32 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX + bool "xf86-video-imx" + depends on BR2_ARM_EABI # libz160 + depends on BR2_TOOLCHAIN_USES_GLIBC # libz160 + depends on BR2_LINUX_KERNEL # linux/mxcfb.h + depends on BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11 + select BR2_PACKAGE_LIBZ160 + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XF86DGAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org driver for iMX5 GPU + + To use this driver, add the correct configuration to your + /etc/X11/xorg.conf, as follows: + + Section "Device" + [...] + Driver "imx" + Option "fbdev" "/dev/fb0" + EndSection + +comment "xf86-video-imx needs an EABI toolchain w/ glibc" + depends on BR2_arm + depends on !BR2_ARM_EABI || !BR2_TOOLCHAIN_USES_GLIBC + +comment "xf86-video-imx needs gpu-amd-bin-mx51 with X11 output and a Linux kernel to be built" + depends on BR2_arm + depends on !BR2_LINUX_KERNEL || !BR2_PACKAGE_GPU_AMD_BIN_MX51_OUTPUT_X11 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.hash b/buildroot/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.hash new file mode 100644 index 0000000..e2a36c5 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 d7d85e9f13c6dd58addab89847f3a8a67f6382a54135c7978c9a95368af024d4 xserver-xorg-video-imx-11.09.01.tar.gz diff --git a/buildroot/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.mk b/buildroot/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.mk new file mode 100644 index 0000000..5684a6d --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-imx/xdriver_xf86-video-imx.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xdriver_xf86-video-imx +# +################################################################################ + +XDRIVER_XF86_VIDEO_IMX_VERSION = 11.09.01 +XDRIVER_XF86_VIDEO_IMX_SOURCE = xserver-xorg-video-imx-$(XDRIVER_XF86_VIDEO_IMX_VERSION).tar.gz +XDRIVER_XF86_VIDEO_IMX_SITE = $(FREESCALE_IMX_SITE) +XDRIVER_XF86_VIDEO_IMX_DEPENDENCIES = linux libz160 xserver_xorg-server \ + xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto \ + xproto_xf86dgaproto xproto_xproto +XDRIVER_XF86_VIDEO_IMX_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_DIR)/include" + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-intel/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-intel/Config.in new file mode 100644 index 0000000..dc2fabf --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-intel/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_INTEL + bool "xf86-video-intel" + depends on (BR2_i386 || BR2_x86_64) + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_INTEL + select BR2_PACKAGE_XLIB_LIBXRANDR + help + Intel video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk b/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk new file mode 100644 index 0000000..6debdd0 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk @@ -0,0 +1,52 @@ +################################################################################ +# +# xdriver_xf86-video-intel +# +################################################################################ + +XDRIVER_XF86_VIDEO_INTEL_VERSION = b57abe20e81f4b8e4dd203b6a9eda7ff441bc8ce +XDRIVER_XF86_VIDEO_INTEL_SITE = git://anongit.freedesktop.org/xorg/driver/xf86-video-intel +XDRIVER_XF86_VIDEO_INTEL_LICENSE = MIT +XDRIVER_XF86_VIDEO_INTEL_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_INTEL_AUTORECONF = YES + +# -D_GNU_SOURCE fixes a getline-related compile error in src/sna/kgem.c +# We force -O2 regardless of the optimization level chosen by the user, +# as compiling this package is known to be broken with -Os. +XDRIVER_XF86_VIDEO_INTEL_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE -O2" + +XDRIVER_XF86_VIDEO_INTEL_CONF_OPTS = \ + --disable-xvmc \ + --enable-sna \ + --disable-xaa \ + --disable-dga \ + --disable-async-swap + +XDRIVER_XF86_VIDEO_INTEL_DEPENDENCIES = \ + libdrm \ + libpciaccess \ + xlib_libXrandr \ + xproto_fontsproto \ + xproto_xproto \ + xserver_xorg-server + +# X.org server support for DRI depends on a Mesa3D DRI driver +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y) +XDRIVER_XF86_VIDEO_INTEL_CONF_OPTS += --enable-dri --enable-dri1 +# quote from configure.ac: "UXA doesn't build without DRI2 headers" +ifeq ($(BR2_PACKAGE_XPROTO_DRI2PROTO),y) +XDRIVER_XF86_VIDEO_INTEL_CONF_OPTS += --enable-dri2 --enable-uxa +else +XDRIVER_XF86_VIDEO_INTEL_CONF_OPTS += --disable-dri2 --disable-uxa +endif +ifeq ($(BR2_PACKAGE_XPROTO_DRI3PROTO),y) +XDRIVER_XF86_VIDEO_INTEL_CONF_OPTS += --enable-dri3 +else +XDRIVER_XF86_VIDEO_INTEL_CONF_OPTS += --disable-dri3 +endif +else +XDRIVER_XF86_VIDEO_INTEL_CONF_OPTS += --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-mach64/0001-cross-compile.patch b/buildroot/package/x11r7/xdriver_xf86-video-mach64/0001-cross-compile.patch new file mode 100644 index 0000000..d276176 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-mach64/0001-cross-compile.patch @@ -0,0 +1,27 @@ +--- a/configure.ac 2008-06-23 10:39:28.000000000 -0400 ++++ b/configure.ac 2008-06-23 10:40:46.000000000 -0400 +@@ -85,14 +85,20 @@ sdkdir=$(pkg-config --variable=sdkdir xo + AC_HEADER_STDC + + if test "$DRI" != no; then +- AC_CHECK_FILE([${sdkdir}/dri.h], ++ if test "$cross_compiling" = "no" ; then ++ AC_CHECK_FILE([${sdkdir}/dri.h], + [have_dri_h="yes"], [have_dri_h="no"]) +- AC_CHECK_FILE([${sdkdir}/sarea.h], ++ AC_CHECK_FILE([${sdkdir}/sarea.h], + [have_sarea_h="yes"], [have_sarea_h="no"]) +- AC_CHECK_FILE([${sdkdir}/dristruct.h], ++ AC_CHECK_FILE([${sdkdir}/dristruct.h], + [have_dristruct_h="yes"], [have_dristruct_h="no"]) +- AC_CHECK_FILE([${sdkdir}/damage.h], ++ AC_CHECK_FILE([${sdkdir}/damage.h], + [have_damage_h="yes"], [have_damage_h="no"]) ++ else ++ have_dri_h="yes" ++ have_sarea_h="yes" ++ have_dristruct_h="yes" ++ fi + fi + + AC_MSG_CHECKING([whether to include DRI support]) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-mach64/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-mach64/Config.in new file mode 100644 index 0000000..82de826 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-mach64/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_MACH64 + bool "xf86-video-mach64" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + mach64 video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.hash b/buildroot/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.hash new file mode 100644 index 0000000..43a7fa7 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-May/002599.html +sha256 3e98985b6e044189efd42342862208f472881c25debf22230a1d54a96d71b41f xf86-video-mach64-6.9.5.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.mk b/buildroot/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.mk new file mode 100644 index 0000000..5990360 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-mach64/xdriver_xf86-video-mach64.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xdriver_xf86-video-mach64 +# +################################################################################ + +XDRIVER_XF86_VIDEO_MACH64_VERSION = 6.9.5 +XDRIVER_XF86_VIDEO_MACH64_SOURCE = xf86-video-mach64-$(XDRIVER_XF86_VIDEO_MACH64_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_MACH64_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_MACH64_LICENSE = MIT +XDRIVER_XF86_VIDEO_MACH64_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_MACH64_AUTORECONF = YES +XDRIVER_XF86_VIDEO_MACH64_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_xextproto xproto_xproto + +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),) +XDRIVER_XF86_VIDEO_MACH64_CONF_OPTS = --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-mga/0001-misc-fixes.patch b/buildroot/package/x11r7/xdriver_xf86-video-mga/0001-misc-fixes.patch new file mode 100644 index 0000000..5707bd1 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-mga/0001-misc-fixes.patch @@ -0,0 +1,21 @@ +--- xf86-video-mga-1.4.9/configure.ac.orig 2007-06-10 11:55:24.000000000 +0200 ++++ xf86-video-mga-1.4.9/configure.ac 2007-06-10 12:00:37.000000000 +0200 +@@ -77,12 +77,18 @@ + AC_HEADER_STDC + + if test "x$DRI" != xno; then ++ if test "$cross_compiling" = no; then + AC_CHECK_FILE([${sdkdir}/dri.h], + [have_dri_h="yes"], [have_dri_h="no"]) + AC_CHECK_FILE([${sdkdir}/sarea.h], + [have_sarea_h="yes"], [have_sarea_h="no"]) + AC_CHECK_FILE([${sdkdir}/dristruct.h], + [have_dristruct_h="yes"], [have_dristruct_h="no"]) ++ else ++ have_dri_h="yes" ++ have_sarea_h="yes" ++ have_dristruct_h="yes" ++ fi + fi + + AC_MSG_CHECKING([whether to include DRI support]) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-mga/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-mga/Config.in new file mode 100644 index 0000000..a504ec0 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-mga/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_MGA + bool "xf86-video-mga" + depends on BR2_PACKAGE_MESA3D + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_GLPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Matrox video driver + +comment "xf86-video-mga needs mesa3d" + depends on !BR2_PACKAGE_MESA3D diff --git a/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash b/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash new file mode 100644 index 0000000..0187e6f --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002765.html +sha256 b663cd8e6364f7c4e2637b9fcab9861d0e3971518c73b00d213f6545a1289422 xf86-video-mga-1.6.5.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk b/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk new file mode 100644 index 0000000..065a68e --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-mga/xdriver_xf86-video-mga.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xdriver_xf86-video-mga +# +################################################################################ + +XDRIVER_XF86_VIDEO_MGA_VERSION = 1.6.5 +XDRIVER_XF86_VIDEO_MGA_SOURCE = xf86-video-mga-$(XDRIVER_XF86_VIDEO_MGA_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_MGA_SITE = http://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_MGA_LICENSE = MIT +XDRIVER_XF86_VIDEO_MGA_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_MGA_AUTORECONF = YES +XDRIVER_XF86_VIDEO_MGA_DEPENDENCIES = xserver_xorg-server libdrm xproto_fontsproto xproto_glproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xf86driproto xproto_xproto + +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),) +XDRIVER_XF86_VIDEO_MGA_CONF_OPTS = --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-neomagic/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-neomagic/Config.in new file mode 100644 index 0000000..f8c8c47 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-neomagic/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_NEOMAGIC + bool "xf86-video-neomagic" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DGAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Neomagic video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.hash b/buildroot/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.hash new file mode 100644 index 0000000..fc83066 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-May/002602.html +sha256 72f89396b10527549337cb72a7eafb1194cf140144f9236a94ad2becdf140bf2 xf86-video-neomagic-1.2.9.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.mk b/buildroot/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.mk new file mode 100644 index 0000000..cfd5536 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-neomagic/xdriver_xf86-video-neomagic.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-neomagic +# +################################################################################ + +XDRIVER_XF86_VIDEO_NEOMAGIC_VERSION = 1.2.9 +XDRIVER_XF86_VIDEO_NEOMAGIC_SOURCE = xf86-video-neomagic-$(XDRIVER_XF86_VIDEO_NEOMAGIC_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_NEOMAGIC_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_NEOMAGIC_LICENSE = MIT +XDRIVER_XF86_VIDEO_NEOMAGIC_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_NEOMAGIC_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xf86dgaproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-nouveau/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-nouveau/Config.in new file mode 100644 index 0000000..7e756e2 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-nouveau/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_NOUVEAU + bool "xf86-video-nouveau" + depends on BR2_PACKAGE_MESA3D + select BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_LIBDRM_NOUVEAU + select BR2_PACKAGE_XPROTO_DRI2PROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + help + Nouveau video driver + + http://nouveau.freedesktop.org + +comment "xf86-video-nouveau needs mesa3d" + depends on !BR2_PACKAGE_MESA3D diff --git a/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash b/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash new file mode 100644 index 0000000..5b69e4e --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.hash @@ -0,0 +1,4 @@ +# From https://lists.x.org/archives/xorg-announce/2017-April/002796.html +md5 717203cb87029cddcbccf7398f9ad8c3 xf86-video-nouveau-1.0.15.tar.bz2 +sha1 ed699a59ea509550f60019eef1e092ed0ccdea08 xf86-video-nouveau-1.0.15.tar.bz2 +sha256 aede10fd395610a328697adca3434fb14e9afbd79911d6c8545cfa2c0e541d4c xf86-video-nouveau-1.0.15.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk b/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk new file mode 100644 index 0000000..e3969a2 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-nouveau/xdriver_xf86-video-nouveau.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# xdriver_xf86-video-nouveau +# +################################################################################ + +XDRIVER_XF86_VIDEO_NOUVEAU_VERSION = 1.0.15 +XDRIVER_XF86_VIDEO_NOUVEAU_SOURCE = xf86-video-nouveau-$(XDRIVER_XF86_VIDEO_NOUVEAU_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_NOUVEAU_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_NOUVEAU_LICENSE = MIT +XDRIVER_XF86_VIDEO_NOUVEAU_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_NOUVEAU_DEPENDENCIES = \ + host-pkgconf \ + libdrm \ + xproto_dri2proto \ + xproto_randrproto \ + xproto_renderproto \ + xproto_videoproto \ + xproto_xextproto \ + xserver_xorg-server + +# xdriver_xf86-video-nouveau requires O_CLOEXEC +XDRIVER_XF86_VIDEO_NOUVEAU_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-nv/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-nv/Config.in new file mode 100644 index 0000000..8898f56 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-nv/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_NV + bool "xf86-video-nv" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + NVIDIA video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash b/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash new file mode 100644 index 0000000..fe91307 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002761.html +sha256 1f98649e6ff0e8214b9d5dcac661f1d004be8e73823d8247b9c7025fd81db32d xf86-video-nv-2.1.21.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk b/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk new file mode 100644 index 0000000..430ce4a --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-nv/xdriver_xf86-video-nv.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-nv +# +################################################################################ + +XDRIVER_XF86_VIDEO_NV_VERSION = 2.1.21 +XDRIVER_XF86_VIDEO_NV_SOURCE = xf86-video-nv-$(XDRIVER_XF86_VIDEO_NV_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_NV_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_NV_LICENSE = MIT +XDRIVER_XF86_VIDEO_NV_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_NV_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-openchrome/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-openchrome/Config.in new file mode 100644 index 0000000..02723ec --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-openchrome/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_OPENCHROME + bool "xf86-video-openchrome" + depends on BR2_PACKAGE_MESA3D_DRI_DRIVER + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE + select BR2_PACKAGE_XLIB_LIBXVMC + select BR2_PACKAGE_XPROTO_GLPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Openchrome, A free and Open Source video driver for the + VIA/S3G UniChrome and UniChrome Pro graphics chipsets. + + https://www.freedesktop.org/wiki/Openchrome/ + +comment "xf86-video-openchrome needs a DRI driver from mesa3d" + depends on !BR2_PACKAGE_MESA3D_DRI_DRIVER diff --git a/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash b/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash new file mode 100644 index 0000000..2d29fae --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash @@ -0,0 +1,2 @@ +# From https://lists.freedesktop.org/archives/openchrome-devel/2016-July/002890.html +sha1 9c7ad349de6dd350252ccda8da56fa1e2a6afa32 xf86-video-openchrome-0.5.0.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk b/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk new file mode 100644 index 0000000..9ab032b --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# xdriver_xf86-video-openchrome +# +################################################################################ + +XDRIVER_XF86_VIDEO_OPENCHROME_VERSION = 0.5.0 +XDRIVER_XF86_VIDEO_OPENCHROME_SOURCE = xf86-video-openchrome-$(XDRIVER_XF86_VIDEO_OPENCHROME_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_OPENCHROME_SITE = http://xorg.freedesktop.org/archive/individual/driver +XDRIVER_XF86_VIDEO_OPENCHROME_LICENSE = MIT +XDRIVER_XF86_VIDEO_OPENCHROME_LICENSE_FILES = COPYING + +XDRIVER_XF86_VIDEO_OPENCHROME_DEPENDENCIES = \ + xserver_xorg-server \ + libdrm \ + xlib_libX11 \ + xlib_libXcomposite \ + xlib_libXvMC \ + xproto_fontsproto \ + xproto_glproto \ + xproto_randrproto \ + xproto_renderproto \ + xproto_xextproto \ + xproto_xf86driproto \ + xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-qxl/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-qxl/Config.in new file mode 100644 index 0000000..967ecaf --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-qxl/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_QXL + bool "xf86-video-qxl" + depends on (BR2_i386 || BR2_x86_64) + select BR2_PACKAGE_LIBDRM if BR2_PACKAGE_HAS_UDEV # for KMS + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_SPICE_PROTOCOL + select BR2_PACKAGE_XLIB_LIBXFONT2 if !BR2_PACKAGE_XLIB_LIBXFONT + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + QEMU QXL paravirt video driver + + http://www.spice-space.org/page/XorgQXL diff --git a/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash b/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash new file mode 100644 index 0000000..7a09821 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-December/002753.html +sha256 b18682e04503c6326f7bf7190f3ee50a3d4d69758a2a3cc9af102a6b3f114c92 xf86-video-qxl-0.1.5.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk b/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk new file mode 100644 index 0000000..f410f8e --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk @@ -0,0 +1,38 @@ +################################################################################ +# +# xdriver_xf86-video-qxl +# +################################################################################ + +XDRIVER_XF86_VIDEO_QXL_VERSION = 0.1.5 +XDRIVER_XF86_VIDEO_QXL_SOURCE = xf86-video-qxl-$(XDRIVER_XF86_VIDEO_QXL_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_QXL_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_QXL_LICENSE = MIT +XDRIVER_XF86_VIDEO_QXL_LICENSE_FILES = COPYING + +XDRIVER_XF86_VIDEO_QXL_CONF_OPTS = \ + --enable-xspice=no + +XDRIVER_XF86_VIDEO_QXL_DEPENDENCIES = \ + libpciaccess \ + spice-protocol \ + xproto_fontsproto \ + xproto_xproto \ + xserver_xorg-server + +# configure doesn't look for drm headers in the appropiate place, so help it +# libdrm is only useful with udev for KMS +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +XDRIVER_XF86_VIDEO_QXL_CONF_ENV += REQUIRED_MODULES=libdrm +XDRIVER_XF86_VIDEO_QXL_DEPENDENCIES += libdrm +else +XDRIVER_XF86_VIDEO_QXL_CONF_OPTS += --disable-kms +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFONT2),y) +XDRIVER_XF86_VIDEO_QXL_DEPENDENCIES += xlib_libXfont2 +else +XDRIVER_XF86_VIDEO_QXL_DEPENDENCIES += xlib_libXfont +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-r128/0001-cross-compile.patch b/buildroot/package/x11r7/xdriver_xf86-video-r128/0001-cross-compile.patch new file mode 100644 index 0000000..7b2ebd4 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-r128/0001-cross-compile.patch @@ -0,0 +1,50 @@ +Fix cross-compile + +Original patch for DRI +http://git.buildroot.net/buildroot/commit/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128-cross-compile.patch?id=c0726391523da6a17ffa8e62681ffa0cc895da8e + +Signed-off-by: Paulius Zaleckas +(Added exa.h fix) +Signed-off-by: Bernd Kuhls + +--- a/configure.ac 2008-06-23 10:39:28.000000000 -0400 ++++ b/configure.ac 2008-06-23 10:40:46.000000000 -0400 +@@ -85,14 +85,20 @@ sdkdir=$(pkg-config --variable=sdkdir xo + AC_HEADER_STDC + + if test "$DRI" != no; then +- AC_CHECK_FILE([${sdkdir}/dri.h], ++ if test "$cross_compiling" = "no" ; then ++ AC_CHECK_FILE([${sdkdir}/dri.h], + [have_dri_h="yes"], [have_dri_h="no"]) +- AC_CHECK_FILE([${sdkdir}/sarea.h], ++ AC_CHECK_FILE([${sdkdir}/sarea.h], + [have_sarea_h="yes"], [have_sarea_h="no"]) +- AC_CHECK_FILE([${sdkdir}/dristruct.h], ++ AC_CHECK_FILE([${sdkdir}/dristruct.h], + [have_dristruct_h="yes"], [have_dristruct_h="no"]) +- AC_CHECK_FILE([${sdkdir}/damage.h], ++ AC_CHECK_FILE([${sdkdir}/damage.h], + [have_damage_h="yes"], [have_damage_h="no"]) ++ else ++ have_dri_h="yes" ++ have_sarea_h="yes" ++ have_dristruct_h="yes" ++ fi + fi + + AC_MSG_CHECKING([whether to include DRI support]) +@@ -121,7 +127,12 @@ + AC_MSG_CHECKING([whether to enable EXA support]) + if test "x$EXA" = xyes; then + AC_MSG_RESULT(yes) +- AC_CHECK_FILE(${sdkdir}/exa.h, [have_exa_h="yes"], [have_exa_h="no"]) ++ if test "$cross_compiling" = "no" ; then ++ AC_CHECK_FILE(${sdkdir}/exa.h, ++ [have_exa_h="yes"], [have_exa_h="no"]) ++ else ++ have_exa_h="yes" ++ fi + else + AC_MSG_RESULT(no) + fi diff --git a/buildroot/package/x11r7/xdriver_xf86-video-r128/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-r128/Config.in new file mode 100644 index 0000000..22ba493 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-r128/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_R128 + bool "xf86-video-r128" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + R128 video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash b/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash new file mode 100644 index 0000000..b6d8bd8 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002764.html +sha256 84da21517f3af7617fdf341e84ccb22444d6cdab1647e4808fa631528b9a77de xf86-video-r128-6.10.2.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk b/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk new file mode 100644 index 0000000..344b484 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-r128/xdriver_xf86-video-r128.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xdriver_xf86-video-r128 +# +################################################################################ + +XDRIVER_XF86_VIDEO_R128_VERSION = 6.10.2 +XDRIVER_XF86_VIDEO_R128_SOURCE = xf86-video-r128-$(XDRIVER_XF86_VIDEO_R128_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_R128_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_R128_LICENSE = MIT +XDRIVER_XF86_VIDEO_R128_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_R128_AUTORECONF = YES +XDRIVER_XF86_VIDEO_R128_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_xextproto xproto_xproto + +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),) +XDRIVER_XF86_VIDEO_R128_CONF_OPTS = --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-savage/0001-cross-compile.patch b/buildroot/package/x11r7/xdriver_xf86-video-savage/0001-cross-compile.patch new file mode 100644 index 0000000..b9c296b --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-savage/0001-cross-compile.patch @@ -0,0 +1,27 @@ +--- a/configure.ac 2008-05-21 16:04:23.000000000 -0400 ++++ b/configure.ac 2008-06-23 11:41:50.000000000 -0400 +@@ -68,12 +68,18 @@ sdkdir=$(pkg-config --variable=sdkdir xo + AC_HEADER_STDC + + if test "$DRI" != no; then +- AC_CHECK_FILE([${sdkdir}/dri.h], +- [have_dri_h="yes"], [have_dri_h="no"]) +- AC_CHECK_FILE([${sdkdir}/sarea.h], +- [have_sarea_h="yes"], [have_sarea_h="no"]) +- AC_CHECK_FILE([${sdkdir}/dristruct.h], +- [have_dristruct_h="yes"], [have_dristruct_h="no"]) ++ if test "$cross_compiling" = "no" ; then ++ AC_CHECK_FILE([${sdkdir}/dri.h], ++ [have_dri_h="yes"], [have_dri_h="no"]) ++ AC_CHECK_FILE([${sdkdir}/sarea.h], ++ [have_sarea_h="yes"], [have_sarea_h="no"]) ++ AC_CHECK_FILE([${sdkdir}/dristruct.h], ++ [have_dristruct_h="yes"], [have_dristruct_h="no"]) ++ else ++ have_dri_h="yes" ++ have_sarea_h="yes" ++ have_dristruct_h="yes" ++ fi + fi + + AC_MSG_CHECKING([whether to include DRI support]) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-savage/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-savage/Config.in new file mode 100644 index 0000000..77dde87 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-savage/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_SAVAGE + bool "xf86-video-savage" + depends on BR2_PACKAGE_MESA3D + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + S3 Savage video driver + +comment "xf86-video-savage needs mesa3d" + depends on !BR2_PACKAGE_MESA3D diff --git a/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash b/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash new file mode 100644 index 0000000..4f15535 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002760.html +sha256 2c93c4db1f71e725dda0caee5821253129d4b52d7aa0fd720593e7769bceec86 xf86-video-savage-2.3.9.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk b/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk new file mode 100644 index 0000000..ae1dea3 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-savage/xdriver_xf86-video-savage.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xdriver_xf86-video-savage +# +################################################################################ + +XDRIVER_XF86_VIDEO_SAVAGE_VERSION = 2.3.9 +XDRIVER_XF86_VIDEO_SAVAGE_SOURCE = xf86-video-savage-$(XDRIVER_XF86_VIDEO_SAVAGE_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_SAVAGE_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_SAVAGE_LICENSE = MIT +XDRIVER_XF86_VIDEO_SAVAGE_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_SAVAGE_AUTORECONF = YES +XDRIVER_XF86_VIDEO_SAVAGE_DEPENDENCIES = xserver_xorg-server libdrm xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xf86driproto xproto_xproto + +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),) +XDRIVER_XF86_VIDEO_SAVAGE_CONF_OPTS = --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/Config.in new file mode 100644 index 0000000..727004a --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_SILICONMOTION + bool "xf86-video-siliconmotion" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Silicon Motion video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash b/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash new file mode 100644 index 0000000..819698c --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002763.html +sha256 d0f3c691e71108d27a061beb62bf78b36ec35bd755905692734dd68cfb3359bc xf86-video-siliconmotion-1.7.9.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk b/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk new file mode 100644 index 0000000..53b19f9 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-siliconmotion/xdriver_xf86-video-siliconmotion.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xdriver_xf86-video-siliconmotion +# +################################################################################ + +XDRIVER_XF86_VIDEO_SILICONMOTION_VERSION = 1.7.9 +XDRIVER_XF86_VIDEO_SILICONMOTION_SOURCE = xf86-video-siliconmotion-$(XDRIVER_XF86_VIDEO_SILICONMOTION_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_SILICONMOTION_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_SILICONMOTION_LICENSE = MIT +XDRIVER_XF86_VIDEO_SILICONMOTION_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_SILICONMOTION_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xproto + +XDRIVER_XF86_VIDEO_SILICONMOTION_CONF_OPTS = --disable-selective-werror + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-sis/0001-cross.patch b/buildroot/package/x11r7/xdriver_xf86-video-sis/0001-cross.patch new file mode 100644 index 0000000..9e06480 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-sis/0001-cross.patch @@ -0,0 +1,21 @@ +--- xf86-video-sis-0.9.3/configure.ac.orig 2007-06-10 21:00:29.000000000 +0200 ++++ xf86-video-sis-0.9.3/configure.ac 2007-06-10 21:00:45.000000000 +0200 +@@ -71,12 +71,18 @@ + AC_HEADER_STDC + + if test "$DRI" != no; then ++ if test "$cross_compiling" = "no" ; then + AC_CHECK_FILE([${sdkdir}/dri.h], + [have_dri_h="yes"], [have_dri_h="no"]) + AC_CHECK_FILE([${sdkdir}/sarea.h], + [have_sarea_h="yes"], [have_sarea_h="no"]) + AC_CHECK_FILE([${sdkdir}/dristruct.h], + [have_dristruct_h="yes"], [have_dristruct_h="no"]) ++ else ++ have_dri_h="yes" ++ have_sarea_h="yes" ++ have_dristruct_h="yes" ++ fi + fi + + AC_MSG_CHECKING([whether to include DRI support]) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-sis/0003-xi.patch b/buildroot/package/x11r7/xdriver_xf86-video-sis/0003-xi.patch new file mode 100644 index 0000000..7905248 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-sis/0003-xi.patch @@ -0,0 +1,24 @@ +Fetch from: +https://projects.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/xf86-video-sis&id=7aaa7a9786ce5654df877311909244e0a6c42fd1 + +Signed-off-by: Bernd Kuhls + +--- xf86-video-sis-0.10.7/src/sis_driver.c 2013-03-10 13:57:50.000000000 +0100 ++++ xf86-video-sis-0.10.7/src/sis_driver.c.new 2013-03-10 13:54:48.645203559 +0100 +@@ -9378,7 +9378,15 @@ + } + if(doit) { + sigstate = xf86BlockSIGIO(); +-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 15 ++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 18 ++ { ++ double dx = x, dy = y; ++ miPointerSetPosition(inputInfo.pointer, Absolute, &dx, &dy, ++ NULL, NULL); ++ x = (int)dx; ++ y = (int)dy; ++ } ++#elif GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 15 + { + double dx = x, dy = y; + miPointerSetPosition(inputInfo.pointer, Absolute, &dx, &dy); diff --git a/buildroot/package/x11r7/xdriver_xf86-video-sis/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-sis/Config.in new file mode 100644 index 0000000..3c86bd4 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-sis/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_SIS + bool "xf86-video-sis" + depends on BR2_PACKAGE_MESA3D + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DGAPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + select BR2_PACKAGE_XPROTO_XINERAMAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + SiS and XGI video driver + +comment "xf86-video-sis needs mesa3d" + depends on !BR2_PACKAGE_MESA3D diff --git a/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash b/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash new file mode 100644 index 0000000..98ea8b1 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002756.html +sha256 5226b7407c601afa32d6cbf155f9182da95d92cdc89c1f83471e1927e552c10d xf86-video-sis-0.10.9.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk b/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk new file mode 100644 index 0000000..833246e --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-sis/xdriver_xf86-video-sis.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xdriver_xf86-video-sis +# +################################################################################ + +XDRIVER_XF86_VIDEO_SIS_VERSION = 0.10.9 +XDRIVER_XF86_VIDEO_SIS_SOURCE = xf86-video-sis-$(XDRIVER_XF86_VIDEO_SIS_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_SIS_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_SIS_LICENSE = MIT +XDRIVER_XF86_VIDEO_SIS_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_SIS_AUTORECONF = YES +XDRIVER_XF86_VIDEO_SIS_DEPENDENCIES = xserver_xorg-server libdrm xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xf86dgaproto xproto_xf86driproto xproto_xineramaproto xproto_xproto + +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),) +XDRIVER_XF86_VIDEO_SIS_CONF_OPTS += --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-tdfx/0001-cross.patch b/buildroot/package/x11r7/xdriver_xf86-video-tdfx/0001-cross.patch new file mode 100644 index 0000000..e53591b --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-tdfx/0001-cross.patch @@ -0,0 +1,24 @@ +--- xf86-video-tdfx-1.3.0/configure.ac.orig 2007-06-10 21:01:54.000000000 +0200 ++++ xf86-video-tdfx-1.3.0/configure.ac 2007-06-10 21:02:06.000000000 +0200 +@@ -67,13 +67,20 @@ + # Checks for header files. + AC_HEADER_STDC + +-if test "$DRI" != no; then ++if test "x$DRI" != xno; then ++ if test "$cross_compiling" = "no" ; then + AC_CHECK_FILE([${sdkdir}/dri.h], + [have_dri_h="yes"], [have_dri_h="no"]) + AC_CHECK_FILE([${sdkdir}/sarea.h], + [have_sarea_h="yes"], [have_sarea_h="no"]) + AC_CHECK_FILE([${sdkdir}/dristruct.h], + [have_dristruct_h="yes"], [have_dristruct_h="no"]) ++ AC_CHECK_HEADER ++ else ++ have_dri_h="yes" ++ have_sarea_h="yes" ++ have_dristruct_h="yes" ++ fi + fi + + AC_MSG_CHECKING([whether to include DRI support]) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-tdfx/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-tdfx/Config.in new file mode 100644 index 0000000..96a69ba --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-tdfx/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_TDFX + bool "xf86-video-tdfx" + depends on BR2_PACKAGE_MESA3D + select BR2_PACKAGE_LIBDRM + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DRIPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + 3Dfx video driver + +comment "xf86-video-tdfx needs mesa3d" + depends on !BR2_PACKAGE_MESA3D diff --git a/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash b/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash new file mode 100644 index 0000000..8488559 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002755.html +sha256 4cf48ee14ead52b23493c3dce5032496fd68bf1d000170bb138730497e212a42 xf86-video-tdfx-1.4.7.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk b/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk new file mode 100644 index 0000000..471e6cf --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-tdfx/xdriver_xf86-video-tdfx.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# xdriver_xf86-video-tdfx +# +################################################################################ + +XDRIVER_XF86_VIDEO_TDFX_VERSION = 1.4.7 +XDRIVER_XF86_VIDEO_TDFX_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_TDFX_SOURCE = xf86-video-tdfx-$(XDRIVER_XF86_VIDEO_TDFX_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_TDFX_LICENSE = MIT +XDRIVER_XF86_VIDEO_TDFX_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_TDFX_AUTORECONF = YES +XDRIVER_XF86_VIDEO_TDFX_DEPENDENCIES = \ + libdrm \ + xproto_fontsproto \ + xproto_randrproto \ + xproto_renderproto \ + xproto_videoproto \ + xproto_xextproto \ + xproto_xf86driproto \ + xproto_xproto \ + xserver_xorg-server + +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),) +XDRIVER_XF86_VIDEO_TDFX_CONF_OPTS = --disable-dri +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-tga/0001-mibstore.patch b/buildroot/package/x11r7/xdriver_xf86-video-tga/0001-mibstore.patch new file mode 100644 index 0000000..07bcd04 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-tga/0001-mibstore.patch @@ -0,0 +1,47 @@ +From b7022db0559cd1b6cd3eb6b5abf6896a607b478d Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 25 Sep 2012 12:55:00 +0000 +Subject: Remove mibstore.h + +Signed-off-by: Adam Jackson +--- +Fetch from: +http://cgit.freedesktop.org/xorg/driver/xf86-video-tga/commit/?id=b7022db0559cd1b6cd3eb6b5abf6896a607b478d + +Signed-off-by: Bernd Kuhls + +diff --git a/src/tga_accel.c b/src/tga_accel.c +index 35af1a4..b414df5 100644 +--- a/src/tga_accel.c ++++ b/src/tga_accel.c +@@ -37,7 +37,6 @@ + #include "xf86cmap.h" + #include "mipointer.h" + +-#include "mibstore.h" + #include "miline.h" + + #include "tga_regs.h" +diff --git a/src/tga_driver.c b/src/tga_driver.c +index dd4f3e6..90d2660 100644 +--- a/src/tga_driver.c ++++ b/src/tga_driver.c +@@ -46,8 +46,6 @@ + + /* software cursor */ + #include "mipointer.h" +-/* backing store */ +-#include "mibstore.h" + + /* #include "mibank.h" */ + /* colormap manipulation */ +@@ -1451,7 +1449,6 @@ TGAScreenInit(SCREEN_INIT_ARGS_DECL) + + fbPictureInit (pScreen, 0, 0); + +- miInitializeBackingStore(pScreen); + xf86SetBackingStore(pScreen); + xf86SetSilkenMouse(pScreen); + +-- +cgit v0.9.0.2-2-gbebe diff --git a/buildroot/package/x11r7/xdriver_xf86-video-tga/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-tga/Config.in new file mode 100644 index 0000000..9d03db3 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-tga/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_TGA + bool "xf86-video-tga" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DGAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org driver for tga cards diff --git a/buildroot/package/x11r7/xdriver_xf86-video-tga/xdriver_xf86-video-tga.hash b/buildroot/package/x11r7/xdriver_xf86-video-tga/xdriver_xf86-video-tga.hash new file mode 100644 index 0000000..a32fdc7 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-tga/xdriver_xf86-video-tga.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2012-July/002025.html +sha256 2023818000200eb50a59476e36d59b07a361b110e73b1d9cc526beb669306131 xf86-video-tga-1.2.2.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-tga/xdriver_xf86-video-tga.mk b/buildroot/package/x11r7/xdriver_xf86-video-tga/xdriver_xf86-video-tga.mk new file mode 100644 index 0000000..8af5ac8 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-tga/xdriver_xf86-video-tga.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-tga +# +################################################################################ + +XDRIVER_XF86_VIDEO_TGA_VERSION = 1.2.2 +XDRIVER_XF86_VIDEO_TGA_SOURCE = xf86-video-tga-$(XDRIVER_XF86_VIDEO_TGA_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_TGA_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_TGA_LICENSE = MIT +XDRIVER_XF86_VIDEO_TGA_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_TGA_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xf86dgaproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-trident/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-trident/Config.in new file mode 100644 index 0000000..15ac3ea --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-trident/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_TRIDENT + bool "xf86-video-trident" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DGAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Trident video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash b/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash new file mode 100644 index 0000000..04a559a --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002762.html +sha256 9e5119d974c3e2221994542d35e3a0b3426a441869ddd6dd08a84f324856ac3f xf86-video-trident-1.3.8.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk b/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk new file mode 100644 index 0000000..727744c --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-trident/xdriver_xf86-video-trident.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-trident +# +################################################################################ + +XDRIVER_XF86_VIDEO_TRIDENT_VERSION = 1.3.8 +XDRIVER_XF86_VIDEO_TRIDENT_SOURCE = xf86-video-trident-$(XDRIVER_XF86_VIDEO_TRIDENT_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_TRIDENT_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_TRIDENT_LICENSE = MIT +XDRIVER_XF86_VIDEO_TRIDENT_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_TRIDENT_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_videoproto xproto_xextproto xproto_xf86dgaproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-vesa/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-vesa/Config.in new file mode 100644 index 0000000..98f4347 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-vesa/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_VESA + bool "xf86-video-vesa" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Generic VESA video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash b/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash new file mode 100644 index 0000000..84c0b08 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-June/002615.html +sha256 7bddf4d879dd6f67088ecb203a31e12334aab980174bd0909930a21f32e251c1 xf86-video-vesa-2.3.4.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk b/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk new file mode 100644 index 0000000..1184821 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-vesa +# +################################################################################ + +XDRIVER_XF86_VIDEO_VESA_VERSION = 2.3.4 +XDRIVER_XF86_VIDEO_VESA_SOURCE = xf86-video-vesa-$(XDRIVER_XF86_VIDEO_VESA_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_VESA_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_VESA_LICENSE = MIT +XDRIVER_XF86_VIDEO_VESA_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_VESA_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_xextproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-vmware/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-vmware/Config.in new file mode 100644 index 0000000..a3382d7 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-vmware/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_VMWARE + bool "xf86-video-vmware" + depends on BR2_PACKAGE_MESA3D + depends on BR2_i386 || BR2_x86_64 + select BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XINERAMAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + VMware SVGA video driver + +comment "xf86-video-vmware needs mesa3d" + depends on !BR2_PACKAGE_MESA3D diff --git a/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash b/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash new file mode 100644 index 0000000..8d948a7 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-November/002743.html +sha256 e2f7f7101fba7f53b268e7a25908babbf155b3984fb5268b3d244eb6c11bf62b xf86-video-vmware-13.2.1.tar.bz2 diff --git a/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk b/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk new file mode 100644 index 0000000..1b2066d --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# xdriver_xf86-video-vmware +# +################################################################################ + +XDRIVER_XF86_VIDEO_VMWARE_VERSION = 13.2.1 +XDRIVER_XF86_VIDEO_VMWARE_SOURCE = xf86-video-vmware-$(XDRIVER_XF86_VIDEO_VMWARE_VERSION).tar.bz2 +XDRIVER_XF86_VIDEO_VMWARE_SITE = http://xorg.freedesktop.org/releases/individual/driver +XDRIVER_XF86_VIDEO_VMWARE_LICENSE = MIT +XDRIVER_XF86_VIDEO_VMWARE_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_VMWARE_DEPENDENCIES = mesa3d xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_xextproto xproto_xineramaproto xproto_xproto + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +XDRIVER_XF86_VIDEO_VMWARE_CONF_OPTS += --with-libudev +XDRIVER_XF86_VIDEO_VMWARE_DEPENDENCIES += udev +else +XDRIVER_XF86_VIDEO_VMWARE_CONF_OPTS += --without-libudev +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xdriver_xf86-video-voodoo/Config.in b/buildroot/package/x11r7/xdriver_xf86-video-voodoo/Config.in new file mode 100644 index 0000000..f531676 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-voodoo/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XDRIVER_XF86_VIDEO_VOODOO + bool "xf86-video-voodoo" + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86DGAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + Voodoo video driver diff --git a/buildroot/package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.mk b/buildroot/package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.mk new file mode 100644 index 0000000..e1ef0c6 --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-voodoo/xdriver_xf86-video-voodoo.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# xdriver_xf86-video-voodoo +# +################################################################################ + +XDRIVER_XF86_VIDEO_VOODOO_VERSION = 9172ae566a0e85313fc80ab62b4455393eefe593 +XDRIVER_XF86_VIDEO_VOODOO_SITE = git://anongit.freedesktop.org/xorg/driver/xf86-video-voodoo +XDRIVER_XF86_VIDEO_VOODOO_LICENSE = MIT +XDRIVER_XF86_VIDEO_VOODOO_LICENSE_FILES = COPYING +XDRIVER_XF86_VIDEO_VOODOO_AUTORECONF = YES +XDRIVER_XF86_VIDEO_VOODOO_DEPENDENCIES = xserver_xorg-server xproto_fontsproto xproto_randrproto xproto_renderproto xproto_xextproto xproto_xf86dgaproto xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_encodings/Config.in b/buildroot/package/x11r7/xfont_encodings/Config.in new file mode 100644 index 0000000..d771ffb --- /dev/null +++ b/buildroot/package/x11r7/xfont_encodings/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_ENCODINGS + bool "encodings" + select BR2_PACKAGE_XUTIL_UTIL_MACROS + help + No description available diff --git a/buildroot/package/x11r7/xfont_encodings/xfont_encodings.hash b/buildroot/package/x11r7/xfont_encodings/xfont_encodings.hash new file mode 100644 index 0000000..56c1ad2 --- /dev/null +++ b/buildroot/package/x11r7/xfont_encodings/xfont_encodings.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2010-October/001466.html +sha1 24ace2470403f85a0d393769204029bd8247992a encodings-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_encodings/xfont_encodings.mk b/buildroot/package/x11r7/xfont_encodings/xfont_encodings.mk new file mode 100644 index 0000000..9c5c9f3 --- /dev/null +++ b/buildroot/package/x11r7/xfont_encodings/xfont_encodings.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xfont_encodings +# +################################################################################ + +XFONT_ENCODINGS_VERSION = 1.0.4 +XFONT_ENCODINGS_SOURCE = encodings-$(XFONT_ENCODINGS_VERSION).tar.bz2 +XFONT_ENCODINGS_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_ENCODINGS_LICENSE = Public Domain +XFONT_ENCODINGS_LICENSE_FILES = COPYING + +XFONT_ENCODINGS_DEPENDENCIES = host-xapp_mkfontscale host-pkgconf xutil_util-macros +HOST_XFONT_ENCODINGS_DEPENDENCIES = \ + host-xapp_mkfontscale host-pkgconf host-xutil_util-macros + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-adobe-100dpi/Config.in b/buildroot/package/x11r7/xfont_font-adobe-100dpi/Config.in new file mode 100644 index 0000000..766c06e --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-100dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ADOBE_100DPI + bool "font-adobe-100dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.hash b/buildroot/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.hash new file mode 100644 index 0000000..04809f5 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 b2c08433eab5cb202470aa9f779efefce8d9cab2534f34f3aa4a31d05671c054 font-adobe-100dpi-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.mk b/buildroot/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.mk new file mode 100644 index 0000000..9f01838 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-100dpi/xfont_font-adobe-100dpi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-adobe-100dpi +# +################################################################################ + +XFONT_FONT_ADOBE_100DPI_VERSION = 1.0.3 +XFONT_FONT_ADOBE_100DPI_SOURCE = font-adobe-100dpi-$(XFONT_FONT_ADOBE_100DPI_VERSION).tar.bz2 +XFONT_FONT_ADOBE_100DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_ADOBE_100DPI_LICENSE = MIT +XFONT_FONT_ADOBE_100DPI_LICENSE_FILES = COPYING + +XFONT_FONT_ADOBE_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ADOBE_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ADOBE_100DPI_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-adobe-75dpi/Config.in b/buildroot/package/x11r7/xfont_font-adobe-75dpi/Config.in new file mode 100644 index 0000000..1d79f41 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-75dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ADOBE_75DPI + bool "font-adobe-75dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.hash b/buildroot/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.hash new file mode 100644 index 0000000..abd48d6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 c6024a1e4a1e65f413f994dd08b734efd393ce0a502eb465deb77b9a36db4d09 font-adobe-75dpi-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.mk b/buildroot/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.mk new file mode 100644 index 0000000..1a8af2b --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-75dpi/xfont_font-adobe-75dpi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-adobe-75dpi +# +################################################################################ + +XFONT_FONT_ADOBE_75DPI_VERSION = 1.0.3 +XFONT_FONT_ADOBE_75DPI_SOURCE = font-adobe-75dpi-$(XFONT_FONT_ADOBE_75DPI_VERSION).tar.bz2 +XFONT_FONT_ADOBE_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_ADOBE_75DPI_LICENSE = MIT +XFONT_FONT_ADOBE_75DPI_LICENSE_FILES = COPYING + +XFONT_FONT_ADOBE_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ADOBE_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ADOBE_75DPI_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in b/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in new file mode 100644 index 0000000..a31ee5d --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_100DPI + bool "font-adobe-utopia-100dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.hash b/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.hash new file mode 100644 index 0000000..f20f4a7 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 d16f5e3f227cc6dd07a160a71f443559682dbc35f1c056a5385085aaec4fada5 font-adobe-utopia-100dpi-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.mk b/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.mk new file mode 100644 index 0000000..4ff89f6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-utopia-100dpi/xfont_font-adobe-utopia-100dpi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-adobe-utopia-100dpi +# +################################################################################ + +XFONT_FONT_ADOBE_UTOPIA_100DPI_VERSION = 1.0.4 +XFONT_FONT_ADOBE_UTOPIA_100DPI_SOURCE = font-adobe-utopia-100dpi-$(XFONT_FONT_ADOBE_UTOPIA_100DPI_VERSION).tar.bz2 +XFONT_FONT_ADOBE_UTOPIA_100DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_ADOBE_UTOPIA_100DPI_LICENSE = Adobe License (no modification allowed) +XFONT_FONT_ADOBE_UTOPIA_100DPI_LICENSE_FILES = COPYING + +XFONT_FONT_ADOBE_UTOPIA_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ADOBE_UTOPIA_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ADOBE_UTOPIA_100DPI_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in b/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in new file mode 100644 index 0000000..2279723 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_75DPI + bool "font-adobe-utopia-75dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.hash b/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.hash new file mode 100644 index 0000000..1a60af6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 8732719c61f3661c8bad63804ebfd54fc7de21ab848e9a26a19b1778ef8b5c94 font-adobe-utopia-75dpi-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.mk b/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.mk new file mode 100644 index 0000000..61005f7 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-utopia-75dpi/xfont_font-adobe-utopia-75dpi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-adobe-utopia-75dpi +# +################################################################################ + +XFONT_FONT_ADOBE_UTOPIA_75DPI_VERSION = 1.0.4 +XFONT_FONT_ADOBE_UTOPIA_75DPI_SOURCE = font-adobe-utopia-75dpi-$(XFONT_FONT_ADOBE_UTOPIA_75DPI_VERSION).tar.bz2 +XFONT_FONT_ADOBE_UTOPIA_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_ADOBE_UTOPIA_75DPI_LICENSE = Adobe License (no modification allowed) +XFONT_FONT_ADOBE_UTOPIA_75DPI_LICENSE_FILES = COPYING + +XFONT_FONT_ADOBE_UTOPIA_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ADOBE_UTOPIA_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ADOBE_UTOPIA_75DPI_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/Config.in b/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/Config.in new file mode 100644 index 0000000..60b631e --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_TYPE1 + bool "font-adobe-utopia-type1" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.hash b/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.hash new file mode 100644 index 0000000..4da2a4f --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 979435105f897a70f8993fa02c8362160b0513366c2ab896965416f96dbb8077 font-adobe-utopia-type1-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.mk b/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.mk new file mode 100644 index 0000000..9264eaf --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-adobe-utopia-type1/xfont_font-adobe-utopia-type1.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-adobe-utopia-type1 +# +################################################################################ + +XFONT_FONT_ADOBE_UTOPIA_TYPE1_VERSION = 1.0.4 +XFONT_FONT_ADOBE_UTOPIA_TYPE1_SOURCE = font-adobe-utopia-type1-$(XFONT_FONT_ADOBE_UTOPIA_TYPE1_VERSION).tar.bz2 +XFONT_FONT_ADOBE_UTOPIA_TYPE1_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_ADOBE_UTOPIA_TYPE1_LICENSE = Adobe License (no modification allowed) +XFONT_FONT_ADOBE_UTOPIA_TYPE1_LICENSE_FILES = COPYING + +XFONT_FONT_ADOBE_UTOPIA_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ADOBE_UTOPIA_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ADOBE_UTOPIA_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-alias/Config.in b/buildroot/package/x11r7/xfont_font-alias/Config.in new file mode 100644 index 0000000..b30e222 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-alias/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ALIAS + bool "font-alias" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-alias/xfont_font-alias.hash b/buildroot/package/x11r7/xfont_font-alias/xfont_font-alias.hash new file mode 100644 index 0000000..7f1efe8 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-alias/xfont_font-alias.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 8b453b2aae1cfa8090009ca037037b8c5e333550651d5a158b7264ce1d472c9a font-alias-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-alias/xfont_font-alias.mk b/buildroot/package/x11r7/xfont_font-alias/xfont_font-alias.mk new file mode 100644 index 0000000..f6b3008 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-alias/xfont_font-alias.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-alias +# +################################################################################ + +XFONT_FONT_ALIAS_VERSION = 1.0.3 +XFONT_FONT_ALIAS_SOURCE = font-alias-$(XFONT_FONT_ALIAS_VERSION).tar.bz2 +XFONT_FONT_ALIAS_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_ALIAS_LICENSE = MIT +XFONT_FONT_ALIAS_LICENSE_FILES = COPYING + +XFONT_FONT_ALIAS_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ALIAS_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ALIAS_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-arabic-misc/Config.in b/buildroot/package/x11r7/xfont_font-arabic-misc/Config.in new file mode 100644 index 0000000..1ec5090 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-arabic-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ARABIC_MISC + bool "font-arabic-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.hash b/buildroot/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.hash new file mode 100644 index 0000000..0395003 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 505d9b12a7093389e67a925dfda6346bde26d114c67f0cdca7aeda6e5d3344f4 font-arabic-misc-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.mk b/buildroot/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.mk new file mode 100644 index 0000000..0043a00 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-arabic-misc/xfont_font-arabic-misc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-arabic-misc +# +################################################################################ + +XFONT_FONT_ARABIC_MISC_VERSION = 1.0.3 +XFONT_FONT_ARABIC_MISC_SOURCE = font-arabic-misc-$(XFONT_FONT_ARABIC_MISC_VERSION).tar.bz2 +XFONT_FONT_ARABIC_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_ARABIC_MISC_LICENSE = MIT +XFONT_FONT_ARABIC_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_ARABIC_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ARABIC_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ARABIC_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-bh-100dpi/Config.in b/buildroot/package/x11r7/xfont_font-bh-100dpi/Config.in new file mode 100644 index 0000000..3bfb0b8 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-100dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_100DPI + bool "font-bh-100dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.hash b/buildroot/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.hash new file mode 100644 index 0000000..3a9d4c7 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 23c07162708e4b79eb33095c8bfa62c783717a9431254bbf44863734ea239481 font-bh-100dpi-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.mk b/buildroot/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.mk new file mode 100644 index 0000000..9197272 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-100dpi/xfont_font-bh-100dpi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bh-100dpi +# +################################################################################ + +XFONT_FONT_BH_100DPI_VERSION = 1.0.3 +XFONT_FONT_BH_100DPI_SOURCE = font-bh-100dpi-$(XFONT_FONT_BH_100DPI_VERSION).tar.bz2 +XFONT_FONT_BH_100DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_BH_100DPI_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_100DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BH_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_100DPI_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-bh-75dpi/Config.in b/buildroot/package/x11r7/xfont_font-bh-75dpi/Config.in new file mode 100644 index 0000000..0fe93bb --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-75dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_75DPI + bool "font-bh-75dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.hash b/buildroot/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.hash new file mode 100644 index 0000000..ee24538 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 3486aa51ac92c646a448fe899c5c3dae0024b1fef724d5100d52640d1cac721c font-bh-75dpi-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.mk b/buildroot/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.mk new file mode 100644 index 0000000..62bee42 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-75dpi/xfont_font-bh-75dpi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bh-75dpi +# +################################################################################ + +XFONT_FONT_BH_75DPI_VERSION = 1.0.3 +XFONT_FONT_BH_75DPI_SOURCE = font-bh-75dpi-$(XFONT_FONT_BH_75DPI_VERSION).tar.bz2 +XFONT_FONT_BH_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_BH_75DPI_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_75DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BH_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_75DPI_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in new file mode 100644 index 0000000..0005cc1 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI + bool "font-bh-lucidatypewriter-100dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.hash b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.hash new file mode 100644 index 0000000..6e9c7e3 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 62a83363c2536095fda49d260d21e0847675676e4e3415054064cbdffa641fbb font-bh-lucidatypewriter-100dpi-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.mk b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.mk new file mode 100644 index 0000000..0f039a1 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-100dpi/xfont_font-bh-lucidatypewriter-100dpi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bh-lucidatypewriter-100dpi +# +################################################################################ + +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_VERSION = 1.0.3 +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_SOURCE = font-bh-lucidatypewriter-100dpi-$(XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_VERSION).tar.bz2 +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in new file mode 100644 index 0000000..60dfb95 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI + bool "font-bh-lucidatypewriter-75dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.hash b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.hash new file mode 100644 index 0000000..374b8f6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 4ac16afbe205480cc5572e2977ea63488c543d05be0ea8e5a94c845a6eebcb31 font-bh-lucidatypewriter-75dpi-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.mk b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.mk new file mode 100644 index 0000000..892f9ee --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-lucidatypewriter-75dpi/xfont_font-bh-lucidatypewriter-75dpi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bh-lucidatypewriter-75dpi +# +################################################################################ + +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_VERSION = 1.0.3 +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_SOURCE = font-bh-lucidatypewriter-75dpi-$(XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_VERSION).tar.bz2 +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-bh-ttf/Config.in b/buildroot/package/x11r7/xfont_font-bh-ttf/Config.in new file mode 100644 index 0000000..d747989 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-ttf/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_TTF + bool "font-bh-ttf" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.hash b/buildroot/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.hash new file mode 100644 index 0000000..8df8e4b --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2010-November/001537.html +sha1 f42ebd527096011040a312e0f9cdf78d64177419 font-bh-ttf-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.mk b/buildroot/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.mk new file mode 100644 index 0000000..f4fcde9 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-ttf/xfont_font-bh-ttf.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bh-ttf +# +################################################################################ + +XFONT_FONT_BH_TTF_VERSION = 1.0.3 +XFONT_FONT_BH_TTF_SOURCE = font-bh-ttf-$(XFONT_FONT_BH_TTF_VERSION).tar.bz2 +XFONT_FONT_BH_TTF_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_BH_TTF_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_TTF_LICENSE_FILES = COPYING + +XFONT_FONT_BH_TTF_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_TTF_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_TTF_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-bh-type1/Config.in b/buildroot/package/x11r7/xfont_font-bh-type1/Config.in new file mode 100644 index 0000000..0a3ab18 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-type1/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BH_TYPE1 + bool "font-bh-type1" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.hash b/buildroot/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.hash new file mode 100644 index 0000000..89303db --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 761455a297486f3927a85d919b5c948d1d324181d4bea6c95d542504b68a63c1 font-bh-type1-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.mk b/buildroot/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.mk new file mode 100644 index 0000000..f5e6e89 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bh-type1/xfont_font-bh-type1.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bh-type1 +# +################################################################################ + +XFONT_FONT_BH_TYPE1_VERSION = 1.0.3 +XFONT_FONT_BH_TYPE1_SOURCE = font-bh-type1-$(XFONT_FONT_BH_TYPE1_VERSION).tar.bz2 +XFONT_FONT_BH_TYPE1_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_BH_TYPE1_LICENSE = Bigelow & Holmes License (no modification) +XFONT_FONT_BH_TYPE1_LICENSE_FILES = COPYING + +XFONT_FONT_BH_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BH_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BH_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-bitstream-100dpi/Config.in b/buildroot/package/x11r7/xfont_font-bitstream-100dpi/Config.in new file mode 100644 index 0000000..5363fae --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bitstream-100dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BITSTREAM_100DPI + bool "font-bitstream-100dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.hash b/buildroot/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.hash new file mode 100644 index 0000000..09186ae --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 ebe0d7444e3d7c8da7642055ac2206f0190ee060700d99cd876f8fc9964cb6ce font-bitstream-100dpi-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.mk b/buildroot/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.mk new file mode 100644 index 0000000..931058f --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bitstream-100dpi/xfont_font-bitstream-100dpi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bitstream-100dpi +# +################################################################################ + +XFONT_FONT_BITSTREAM_100DPI_VERSION = 1.0.3 +XFONT_FONT_BITSTREAM_100DPI_SOURCE = font-bitstream-100dpi-$(XFONT_FONT_BITSTREAM_100DPI_VERSION).tar.bz2 +XFONT_FONT_BITSTREAM_100DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_BITSTREAM_100DPI_LICENSE = MIT +XFONT_FONT_BITSTREAM_100DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BITSTREAM_100DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BITSTREAM_100DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BITSTREAM_100DPI_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-bitstream-75dpi/Config.in b/buildroot/package/x11r7/xfont_font-bitstream-75dpi/Config.in new file mode 100644 index 0000000..34a4a19 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bitstream-75dpi/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BITSTREAM_75DPI + bool "font-bitstream-75dpi" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.hash b/buildroot/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.hash new file mode 100644 index 0000000..7ec8894 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 ba3f5e4610c07bd5859881660753ec6d75d179f26fc967aa776dbb3d5d5cf48e font-bitstream-75dpi-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.mk b/buildroot/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.mk new file mode 100644 index 0000000..9e77524 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bitstream-75dpi/xfont_font-bitstream-75dpi.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bitstream-75dpi +# +################################################################################ + +XFONT_FONT_BITSTREAM_75DPI_VERSION = 1.0.3 +XFONT_FONT_BITSTREAM_75DPI_SOURCE = font-bitstream-75dpi-$(XFONT_FONT_BITSTREAM_75DPI_VERSION).tar.bz2 +XFONT_FONT_BITSTREAM_75DPI_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_BITSTREAM_75DPI_LICENSE = MIT +XFONT_FONT_BITSTREAM_75DPI_LICENSE_FILES = COPYING + +XFONT_FONT_BITSTREAM_75DPI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BITSTREAM_75DPI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BITSTREAM_75DPI_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-bitstream-type1/Config.in b/buildroot/package/x11r7/xfont_font-bitstream-type1/Config.in new file mode 100644 index 0000000..c8cbc90 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bitstream-type1/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_BITSTREAM_TYPE1 + bool "font-bitstream-type1" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.hash b/buildroot/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.hash new file mode 100644 index 0000000..7e958b3 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 c6ea0569adad2c577f140328dc3302e729cb1b1ea90cd0025caf380625f8a688 font-bitstream-type1-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.mk b/buildroot/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.mk new file mode 100644 index 0000000..a4d4f73 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-bitstream-type1/xfont_font-bitstream-type1.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-bitstream-type1 +# +################################################################################ + +XFONT_FONT_BITSTREAM_TYPE1_VERSION = 1.0.3 +XFONT_FONT_BITSTREAM_TYPE1_SOURCE = font-bitstream-type1-$(XFONT_FONT_BITSTREAM_TYPE1_VERSION).tar.bz2 +XFONT_FONT_BITSTREAM_TYPE1_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_BITSTREAM_TYPE1_LICENSE = MIT +XFONT_FONT_BITSTREAM_TYPE1_LICENSE_FILES = COPYING + +XFONT_FONT_BITSTREAM_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_BITSTREAM_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_BITSTREAM_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/Config.in b/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/Config.in new file mode 100644 index 0000000..e92ab83 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_CRONYX_CYRILLIC + bool "font-cronyx-cyrillic" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.hash b/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.hash new file mode 100644 index 0000000..7fc295f --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 6e8631936157677c77ba032b5c7b1fb3cb2ee872dbcea0444f12cd602cd9212a font-cronyx-cyrillic-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.mk b/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.mk new file mode 100644 index 0000000..83ded01 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-cronyx-cyrillic/xfont_font-cronyx-cyrillic.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-cronyx-cyrillic +# +################################################################################ + +XFONT_FONT_CRONYX_CYRILLIC_VERSION = 1.0.3 +XFONT_FONT_CRONYX_CYRILLIC_SOURCE = font-cronyx-cyrillic-$(XFONT_FONT_CRONYX_CYRILLIC_VERSION).tar.bz2 +XFONT_FONT_CRONYX_CYRILLIC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_CRONYX_CYRILLIC_LICENSE = MIT +XFONT_FONT_CRONYX_CYRILLIC_LICENSE_FILES = COPYING + +XFONT_FONT_CRONYX_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_CRONYX_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_CRONYX_CYRILLIC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-cursor-misc/Config.in b/buildroot/package/x11r7/xfont_font-cursor-misc/Config.in new file mode 100644 index 0000000..0e10da6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-cursor-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_CURSOR_MISC + bool "font-cursor-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.hash b/buildroot/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.hash new file mode 100644 index 0000000..90a032b --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 17363eb35eece2e08144da5f060c70103b59d0972b4f4d77fd84c9a7a2dba635 font-cursor-misc-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.mk b/buildroot/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.mk new file mode 100644 index 0000000..00867a6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-cursor-misc/xfont_font-cursor-misc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-cursor-misc +# +################################################################################ + +XFONT_FONT_CURSOR_MISC_VERSION = 1.0.3 +XFONT_FONT_CURSOR_MISC_SOURCE = font-cursor-misc-$(XFONT_FONT_CURSOR_MISC_VERSION).tar.bz2 +XFONT_FONT_CURSOR_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_CURSOR_MISC_LICENSE = unencumbered +XFONT_FONT_CURSOR_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_CURSOR_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_CURSOR_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_CURSOR_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-daewoo-misc/Config.in b/buildroot/package/x11r7/xfont_font-daewoo-misc/Config.in new file mode 100644 index 0000000..cffe81d --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-daewoo-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_DAEWOO_MISC + bool "font-daewoo-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.hash b/buildroot/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.hash new file mode 100644 index 0000000..1b4ebe9 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 bc65de70bee12698caa95b523d3b652c056347e17b68cc8b5d6bbdff235c4be8 font-daewoo-misc-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.mk b/buildroot/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.mk new file mode 100644 index 0000000..f33088e --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-daewoo-misc/xfont_font-daewoo-misc.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xfont_font-daewoo-misc +# +################################################################################ + +XFONT_FONT_DAEWOO_MISC_VERSION = 1.0.3 +XFONT_FONT_DAEWOO_MISC_SOURCE = font-daewoo-misc-$(XFONT_FONT_DAEWOO_MISC_VERSION).tar.bz2 +XFONT_FONT_DAEWOO_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_DAEWOO_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_DAEWOO_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_DAEWOO_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_DAEWOO_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-dec-misc/Config.in b/buildroot/package/x11r7/xfont_font-dec-misc/Config.in new file mode 100644 index 0000000..a926d9f --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-dec-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_DEC_MISC + bool "font-dec-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.hash b/buildroot/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.hash new file mode 100644 index 0000000..50c6136 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 e19ddf8b5f8de914d81675358fdfe37762e9ce524887cc983adef34f2850ff7b font-dec-misc-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.mk b/buildroot/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.mk new file mode 100644 index 0000000..fd7e286 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-dec-misc/xfont_font-dec-misc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-dec-misc +# +################################################################################ + +XFONT_FONT_DEC_MISC_VERSION = 1.0.3 +XFONT_FONT_DEC_MISC_SOURCE = font-dec-misc-$(XFONT_FONT_DEC_MISC_VERSION).tar.bz2 +XFONT_FONT_DEC_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_DEC_MISC_LICENSE = MIT +XFONT_FONT_DEC_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_DEC_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_DEC_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_DEC_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-ibm-type1/Config.in b/buildroot/package/x11r7/xfont_font-ibm-type1/Config.in new file mode 100644 index 0000000..d4ac1ae --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-ibm-type1/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_IBM_TYPE1 + bool "font-ibm-type1" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.hash b/buildroot/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.hash new file mode 100644 index 0000000..11aa890 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 fddb28d3db5a07f4b4ca15388488a9680a10e1367a18f358f903b2a608a5d2df font-ibm-type1-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.mk b/buildroot/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.mk new file mode 100644 index 0000000..045a6bf --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-ibm-type1/xfont_font-ibm-type1.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-ibm-type1 +# +################################################################################ + +XFONT_FONT_IBM_TYPE1_VERSION = 1.0.3 +XFONT_FONT_IBM_TYPE1_SOURCE = font-ibm-type1-$(XFONT_FONT_IBM_TYPE1_VERSION).tar.bz2 +XFONT_FONT_IBM_TYPE1_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_IBM_TYPE1_LICENSE = IBM/MIT X Consortium Courier Typefont agreement (no modification) +XFONT_FONT_IBM_TYPE1_LICENSE_FILES = COPYING + +XFONT_FONT_IBM_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_IBM_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_IBM_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-isas-misc/Config.in b/buildroot/package/x11r7/xfont_font-isas-misc/Config.in new file mode 100644 index 0000000..4dddaf7 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-isas-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_ISAS_MISC + bool "font-isas-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.hash b/buildroot/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.hash new file mode 100644 index 0000000..35324d4 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 5824ab4b485951107dd245b8f7717d2822f1a6dbf6cea98f1ac7f49905c0a867 font-isas-misc-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.mk b/buildroot/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.mk new file mode 100644 index 0000000..7ca1388 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-isas-misc/xfont_font-isas-misc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-isas-misc +# +################################################################################ + +XFONT_FONT_ISAS_MISC_VERSION = 1.0.3 +XFONT_FONT_ISAS_MISC_SOURCE = font-isas-misc-$(XFONT_FONT_ISAS_MISC_VERSION).tar.bz2 +XFONT_FONT_ISAS_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_ISAS_MISC_LICENSE = MIT +XFONT_FONT_ISAS_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_ISAS_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_ISAS_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_ISAS_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-jis-misc/Config.in b/buildroot/package/x11r7/xfont_font-jis-misc/Config.in new file mode 100644 index 0000000..1874ad8 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-jis-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_JIS_MISC + bool "font-jis-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.hash b/buildroot/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.hash new file mode 100644 index 0000000..c39db36 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 2b18ce10b367ebafe95a17de799b6db9a24e2337188d124adaf68af05b1fac65 font-jis-misc-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.mk b/buildroot/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.mk new file mode 100644 index 0000000..12cf8c8 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-jis-misc/xfont_font-jis-misc.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xfont_font-jis-misc +# +################################################################################ + +XFONT_FONT_JIS_MISC_VERSION = 1.0.3 +XFONT_FONT_JIS_MISC_SOURCE = font-jis-misc-$(XFONT_FONT_JIS_MISC_VERSION).tar.bz2 +XFONT_FONT_JIS_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_JIS_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_JIS_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_JIS_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_JIS_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-micro-misc/Config.in b/buildroot/package/x11r7/xfont_font-micro-misc/Config.in new file mode 100644 index 0000000..2062e16 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-micro-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MICRO_MISC + bool "font-micro-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.hash b/buildroot/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.hash new file mode 100644 index 0000000..223ca0f --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 9a3381c10f32d9511f0ad4179df395914c50779103c16cddf7017f5220ed8db6 font-micro-misc-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.mk b/buildroot/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.mk new file mode 100644 index 0000000..ea119b6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-micro-misc/xfont_font-micro-misc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-micro-misc +# +################################################################################ + +XFONT_FONT_MICRO_MISC_VERSION = 1.0.3 +XFONT_FONT_MICRO_MISC_SOURCE = font-micro-misc-$(XFONT_FONT_MICRO_MISC_VERSION).tar.bz2 +XFONT_FONT_MICRO_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_MICRO_MISC_LICENSE = Public Domain +XFONT_FONT_MICRO_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_MICRO_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MICRO_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MICRO_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-misc-cyrillic/Config.in b/buildroot/package/x11r7/xfont_font-misc-cyrillic/Config.in new file mode 100644 index 0000000..58702c1 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-cyrillic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC + bool "font-misc-cyrillic" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.hash b/buildroot/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.hash new file mode 100644 index 0000000..1627112 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 e40fe3e3323c62b738550795457ad555c70c008aa91b5912dfd46f8e745f5e60 font-misc-cyrillic-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.mk b/buildroot/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.mk new file mode 100644 index 0000000..d72f988 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-cyrillic/xfont_font-misc-cyrillic.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-misc-cyrillic +# +################################################################################ + +XFONT_FONT_MISC_CYRILLIC_VERSION = 1.0.3 +XFONT_FONT_MISC_CYRILLIC_SOURCE = font-misc-cyrillic-$(XFONT_FONT_MISC_CYRILLIC_VERSION).tar.bz2 +XFONT_FONT_MISC_CYRILLIC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_MISC_CYRILLIC_LICENSE = MIT / Public Domain +XFONT_FONT_MISC_CYRILLIC_LICENSE_FILES = COPYING + +XFONT_FONT_MISC_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MISC_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MISC_CYRILLIC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-misc-ethiopic/Config.in b/buildroot/package/x11r7/xfont_font-misc-ethiopic/Config.in new file mode 100644 index 0000000..af62ddc --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-ethiopic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MISC_ETHIOPIC + bool "font-misc-ethiopic" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.hash b/buildroot/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.hash new file mode 100644 index 0000000..c75816a --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 53cb1fd83afdbe7939c0eac34003676ee0e6023216892d98054db90b703c98a5 font-misc-ethiopic-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.mk b/buildroot/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.mk new file mode 100644 index 0000000..8214040 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-ethiopic/xfont_font-misc-ethiopic.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-misc-ethiopic +# +################################################################################ + +XFONT_FONT_MISC_ETHIOPIC_VERSION = 1.0.3 +XFONT_FONT_MISC_ETHIOPIC_SOURCE = font-misc-ethiopic-$(XFONT_FONT_MISC_ETHIOPIC_VERSION).tar.bz2 +XFONT_FONT_MISC_ETHIOPIC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_MISC_ETHIOPIC_LICENSE = MIT +XFONT_FONT_MISC_ETHIOPIC_LICENSE_FILES = COPYING + +XFONT_FONT_MISC_ETHIOPIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MISC_ETHIOPIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MISC_ETHIOPIC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-misc-meltho/Config.in b/buildroot/package/x11r7/xfont_font-misc-meltho/Config.in new file mode 100644 index 0000000..dd2d87d --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-meltho/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MISC_MELTHO + bool "font-misc-meltho" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.hash b/buildroot/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.hash new file mode 100644 index 0000000..7a7ca92 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 3721323f13855cf7ca609115a1f7b182491e9b2b9c6e01eb1a2c7f8edd480791 font-misc-meltho-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.mk b/buildroot/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.mk new file mode 100644 index 0000000..1b801df --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-meltho/xfont_font-misc-meltho.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-misc-meltho +# +################################################################################ + +XFONT_FONT_MISC_MELTHO_VERSION = 1.0.3 +XFONT_FONT_MISC_MELTHO_SOURCE = font-misc-meltho-$(XFONT_FONT_MISC_MELTHO_VERSION).tar.bz2 +XFONT_FONT_MISC_MELTHO_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_MISC_MELTHO_LICENSE = Meltho License +XFONT_FONT_MISC_MELTHO_LICENSE_FILES = COPYING + +XFONT_FONT_MISC_MELTHO_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MISC_MELTHO_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MISC_MELTHO_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-misc-misc/Config.in b/buildroot/package/x11r7/xfont_font-misc-misc/Config.in new file mode 100644 index 0000000..fc379a6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MISC_MISC + bool "font-misc-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.hash b/buildroot/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.hash new file mode 100644 index 0000000..fc4ae58 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 b8e77940e4e1769dc47ef1805918d8c9be37c708735832a07204258bacc11794 font-misc-misc-1.1.2.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.mk b/buildroot/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.mk new file mode 100644 index 0000000..f9e1ba6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-misc-misc/xfont_font-misc-misc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-misc-misc +# +################################################################################ + +XFONT_FONT_MISC_MISC_VERSION = 1.1.2 +XFONT_FONT_MISC_MISC_SOURCE = font-misc-misc-$(XFONT_FONT_MISC_MISC_VERSION).tar.bz2 +XFONT_FONT_MISC_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_MISC_MISC_LICENSE = Public Domain +XFONT_FONT_MISC_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_MISC_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MISC_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MISC_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-mutt-misc/Config.in b/buildroot/package/x11r7/xfont_font-mutt-misc/Config.in new file mode 100644 index 0000000..563dc9f --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-mutt-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_MUTT_MISC + bool "font-mutt-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.hash b/buildroot/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.hash new file mode 100644 index 0000000..45a6fc1 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 bd5f7adb34367c197773a9801df5bce7b019664941900b2a31fbfe1ff2830f8f font-mutt-misc-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.mk b/buildroot/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.mk new file mode 100644 index 0000000..1312e37 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-mutt-misc/xfont_font-mutt-misc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-mutt-misc +# +################################################################################ + +XFONT_FONT_MUTT_MISC_VERSION = 1.0.3 +XFONT_FONT_MUTT_MISC_SOURCE = font-mutt-misc-$(XFONT_FONT_MUTT_MISC_VERSION).tar.bz2 +XFONT_FONT_MUTT_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_MUTT_MISC_LICENSE = MIT +XFONT_FONT_MUTT_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_MUTT_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_MUTT_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_MUTT_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-schumacher-misc/Config.in b/buildroot/package/x11r7/xfont_font-schumacher-misc/Config.in new file mode 100644 index 0000000..e30940a --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-schumacher-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_SCHUMACHER_MISC + bool "font-schumacher-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.hash b/buildroot/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.hash new file mode 100644 index 0000000..6da0963 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 e444028656e0767e2eddc6d9aca462b16a2be75a47244dbc199b2c44eca87e5a font-schumacher-misc-1.1.2.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.mk b/buildroot/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.mk new file mode 100644 index 0000000..65256ad --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-schumacher-misc/xfont_font-schumacher-misc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-schumacher-misc +# +################################################################################ + +XFONT_FONT_SCHUMACHER_MISC_VERSION = 1.1.2 +XFONT_FONT_SCHUMACHER_MISC_SOURCE = font-schumacher-misc-$(XFONT_FONT_SCHUMACHER_MISC_VERSION).tar.bz2 +XFONT_FONT_SCHUMACHER_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_SCHUMACHER_MISC_LICENSE = MIT +XFONT_FONT_SCHUMACHER_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_SCHUMACHER_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_SCHUMACHER_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_SCHUMACHER_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-screen-cyrillic/Config.in b/buildroot/package/x11r7/xfont_font-screen-cyrillic/Config.in new file mode 100644 index 0000000..67f4ae6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-screen-cyrillic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_SCREEN_CYRILLIC + bool "font-screen-cyrillic" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.hash b/buildroot/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.hash new file mode 100644 index 0000000..0de78d8 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.hash @@ -0,0 +1,2 @@ +# From http://www.x.org/archive/current/src/everything/CHECKSUMS +sha256 824231e8dffe15299454e47259f29d98001c9cf8ad3d6b5171399e4d71705e79 font-screen-cyrillic-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.mk b/buildroot/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.mk new file mode 100644 index 0000000..5687fd6 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-screen-cyrillic/xfont_font-screen-cyrillic.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-screen-cyrillic +# +################################################################################ + +XFONT_FONT_SCREEN_CYRILLIC_VERSION = 1.0.4 +XFONT_FONT_SCREEN_CYRILLIC_SOURCE = font-screen-cyrillic-$(XFONT_FONT_SCREEN_CYRILLIC_VERSION).tar.bz2 +XFONT_FONT_SCREEN_CYRILLIC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_SCREEN_CYRILLIC_LICENSE = MIT +XFONT_FONT_SCREEN_CYRILLIC_LICENSE_FILES = COPYING + +XFONT_FONT_SCREEN_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_SCREEN_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_SCREEN_CYRILLIC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-sony-misc/Config.in b/buildroot/package/x11r7/xfont_font-sony-misc/Config.in new file mode 100644 index 0000000..df558c4 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-sony-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_SONY_MISC + bool "font-sony-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.hash b/buildroot/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.hash new file mode 100644 index 0000000..aef4b6f --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.hash @@ -0,0 +1,2 @@ +# From http://www.x.org/archive/current/src/everything/CHECKSUMS +sha256 2043a326ba347c9da5ca1e9bc363e2521c3ea40b43b1f9662d333efd4867cff5 font-sony-misc-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.mk b/buildroot/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.mk new file mode 100644 index 0000000..f13fca5 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-sony-misc/xfont_font-sony-misc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-sony-misc +# +################################################################################ + +XFONT_FONT_SONY_MISC_VERSION = 1.0.3 +XFONT_FONT_SONY_MISC_SOURCE = font-sony-misc-$(XFONT_FONT_SONY_MISC_VERSION).tar.bz2 +XFONT_FONT_SONY_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_SONY_MISC_LICENSE = MIT +XFONT_FONT_SONY_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_SONY_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_SONY_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_SONY_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-sun-misc/Config.in b/buildroot/package/x11r7/xfont_font-sun-misc/Config.in new file mode 100644 index 0000000..accc764 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-sun-misc/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_SUN_MISC + bool "font-sun-misc" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.hash b/buildroot/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.hash new file mode 100644 index 0000000..9d36978 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.hash @@ -0,0 +1,2 @@ +# From http://www.x.org/archive/current/src/everything/CHECKSUMS +sha256 481f4fcbbf7005658b080b3cf342c8c76de752e77f47958b2b383de73266d2e0 font-sun-misc-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.mk b/buildroot/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.mk new file mode 100644 index 0000000..4b1a06c --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-sun-misc/xfont_font-sun-misc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-sun-misc +# +################################################################################ + +XFONT_FONT_SUN_MISC_VERSION = 1.0.3 +XFONT_FONT_SUN_MISC_SOURCE = font-sun-misc-$(XFONT_FONT_SUN_MISC_VERSION).tar.bz2 +XFONT_FONT_SUN_MISC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_SUN_MISC_LICENSE = MIT +XFONT_FONT_SUN_MISC_LICENSE_FILES = COPYING + +XFONT_FONT_SUN_MISC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_SUN_MISC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_SUN_MISC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-util/Config.in b/buildroot/package/x11r7/xfont_font-util/Config.in new file mode 100644 index 0000000..4edeffd --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-util/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XFONT_FONT_UTIL + bool "font-util" + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-util/xfont_font-util.hash b/buildroot/package/x11r7/xfont_font-util/xfont_font-util.hash new file mode 100644 index 0000000..04ada91 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-util/xfont_font-util.hash @@ -0,0 +1,3 @@ +# From http://lists.x.org/archives/xorg-announce/2015-March/002546.html +sha1 0b16add3637c64b0bbaf1dd223b71b0421100c20 font-util-1.3.1.tar.bz2 +sha256 aa7ebdb0715106dd255082f2310dbaa2cd7e225957c2a77d719720c7cc92b921 font-util-1.3.1.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-util/xfont_font-util.mk b/buildroot/package/x11r7/xfont_font-util/xfont_font-util.mk new file mode 100644 index 0000000..89b138b --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-util/xfont_font-util.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xfont_font-util +# +################################################################################ + +XFONT_FONT_UTIL_VERSION = 1.3.1 +XFONT_FONT_UTIL_SOURCE = font-util-$(XFONT_FONT_UTIL_VERSION).tar.bz2 +XFONT_FONT_UTIL_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_UTIL_LICENSE = MIT/BSD-2-Clause +XFONT_FONT_UTIL_LICENSE_FILES = COPYING + +XFONT_FONT_UTIL_DEPENDENCIES = host-pkgconf +HOST_XFONT_FONT_UTIL_DEPENDENCIES = host-pkgconf +XFONT_FONT_UTIL_INSTALL_STAGING = YES +XFONT_FONT_UTIL_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/Config.in b/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/Config.in new file mode 100644 index 0000000..ccfb080 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_WINITZKI_CYRILLIC + bool "font-winitzki-cyrillic" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.hash b/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.hash new file mode 100644 index 0000000..89fbda9 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.hash @@ -0,0 +1,2 @@ +# From http://www.x.org/archive/current/src/everything/CHECKSUMS +sha256 abd13b63d02fcaec488686c23683e5cf640b43bd32f8ca22eeae6f84df0a36a0 font-winitzki-cyrillic-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.mk b/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.mk new file mode 100644 index 0000000..f894522 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-winitzki-cyrillic/xfont_font-winitzki-cyrillic.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-winitzki-cyrillic +# +################################################################################ + +XFONT_FONT_WINITZKI_CYRILLIC_VERSION = 1.0.3 +XFONT_FONT_WINITZKI_CYRILLIC_SOURCE = font-winitzki-cyrillic-$(XFONT_FONT_WINITZKI_CYRILLIC_VERSION).tar.bz2 +XFONT_FONT_WINITZKI_CYRILLIC_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_WINITZKI_CYRILLIC_LICENSE = Public Domain +XFONT_FONT_WINITZKI_CYRILLIC_LICENSE_FILES = COPYING + +XFONT_FONT_WINITZKI_CYRILLIC_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_WINITZKI_CYRILLIC_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_WINITZKI_CYRILLIC_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xfont_font-xfree86-type1/Config.in b/buildroot/package/x11r7/xfont_font-xfree86-type1/Config.in new file mode 100644 index 0000000..1a897b2 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-xfree86-type1/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XFONT_FONT_XFREE86_TYPE1 + bool "font-xfree86-type1" + select BR2_PACKAGE_XFONT_FONT_UTIL + help + No description available diff --git a/buildroot/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.hash b/buildroot/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.hash new file mode 100644 index 0000000..38be53b --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.hash @@ -0,0 +1,2 @@ +# From http://www.x.org/archive/current/src/everything/CHECKSUMS +sha256 caebf42aec7be7f3bd40e0f232d6f34881b853dc84acfcdf7458358701fbe34a font-xfree86-type1-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.mk b/buildroot/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.mk new file mode 100644 index 0000000..5aced63 --- /dev/null +++ b/buildroot/package/x11r7/xfont_font-xfree86-type1/xfont_font-xfree86-type1.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xfont_font-xfree86-type1 +# +################################################################################ + +XFONT_FONT_XFREE86_TYPE1_VERSION = 1.0.4 +XFONT_FONT_XFREE86_TYPE1_SOURCE = font-xfree86-type1-$(XFONT_FONT_XFREE86_TYPE1_VERSION).tar.bz2 +XFONT_FONT_XFREE86_TYPE1_SITE = http://xorg.freedesktop.org/releases/individual/font +XFONT_FONT_XFREE86_TYPE1_LICENSE = MIT +XFONT_FONT_XFREE86_TYPE1_LICENSE_FILES = COPYING + +XFONT_FONT_XFREE86_TYPE1_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install +XFONT_FONT_XFREE86_TYPE1_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) MKFONTSCALE=$(HOST_DIR)/bin/mkfontscale MKFONTDIR=$(HOST_DIR)/bin/mkfontdir install-data +XFONT_FONT_XFREE86_TYPE1_DEPENDENCIES = xfont_font-util host-xfont_font-util host-xapp_mkfontscale host-xapp_mkfontdir host-xapp_bdftopcf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xkeyboard-config/Config.in b/buildroot/package/x11r7/xkeyboard-config/Config.in new file mode 100644 index 0000000..5d1d6a7 --- /dev/null +++ b/buildroot/package/x11r7/xkeyboard-config/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XKEYBOARD_CONFIG + bool "xkeyboard-config" + # Runtime dependencies + select BR2_PACKAGE_XAPP_XKBCOMP if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XPROTO_XPROTO if BR2_PACKAGE_XORG7 + help + keyboard configuration database for X + + http://xlibs.freedesktop.org/xkbdesc diff --git a/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash b/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash new file mode 100644 index 0000000..a0f781d --- /dev/null +++ b/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash @@ -0,0 +1,4 @@ +# From https://lists.x.org/archives/xorg-announce/2017-October/002811.html +md5 eb61fb3fd419e817df572b0c8d94a883 xkeyboard-config-2.22.tar.bz2 +sha1 1e252098685afc3e802c98f3fd70d683654a13ab xkeyboard-config-2.22.tar.bz2 +sha256 deaec9989fbc443358b43864437b7b6d39caff07890a4a8055105ce9fcaa59bd xkeyboard-config-2.22.tar.bz2 diff --git a/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk b/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk new file mode 100644 index 0000000..ae88db7 --- /dev/null +++ b/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xkeyboard-config +# +################################################################################ + +XKEYBOARD_CONFIG_VERSION = 2.22 +XKEYBOARD_CONFIG_SOURCE = xkeyboard-config-$(XKEYBOARD_CONFIG_VERSION).tar.bz2 +XKEYBOARD_CONFIG_SITE = http://www.x.org/releases/individual/data/xkeyboard-config +XKEYBOARD_CONFIG_LICENSE = MIT +XKEYBOARD_CONFIG_LICENSE_FILES = COPYING + +XKEYBOARD_CONFIG_CONF_OPTS = --disable-runtime-deps +XKEYBOARD_CONFIG_DEPENDENCIES = host-gettext host-intltool host-xapp_xkbcomp + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libFS/Config.in b/buildroot/package/x11r7/xlib_libFS/Config.in new file mode 100644 index 0000000..0c8a729 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libFS/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBFS + bool "libFS" + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XPROTO_FONTSPROTO + help + X.Org FS library diff --git a/buildroot/package/x11r7/xlib_libFS/xlib_libFS.hash b/buildroot/package/x11r7/xlib_libFS/xlib_libFS.hash new file mode 100644 index 0000000..786d147 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libFS/xlib_libFS.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002588.html +sha256 2e9d4c07026a7401d4fa4ffae86e6ac7fec83f50f3268fa85f52718e479dc4f3 libFS-1.0.7.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libFS/xlib_libFS.mk b/buildroot/package/x11r7/xlib_libFS/xlib_libFS.mk new file mode 100644 index 0000000..a3c58b9 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libFS/xlib_libFS.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libFS +# +################################################################################ + +XLIB_LIBFS_VERSION = 1.0.7 +XLIB_LIBFS_SOURCE = libFS-$(XLIB_LIBFS_VERSION).tar.bz2 +XLIB_LIBFS_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBFS_LICENSE = MIT +XLIB_LIBFS_LICENSE_FILES = COPYING +XLIB_LIBFS_INSTALL_STAGING = YES +XLIB_LIBFS_DEPENDENCIES = xlib_xtrans xproto_xproto xproto_fontsproto host-pkgconf +XLIB_LIBFS_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libICE/Config.in b/buildroot/package/x11r7/xlib_libICE/Config.in new file mode 100644 index 0000000..d63f935 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libICE/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBICE + bool "libICE" + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org ICE library diff --git a/buildroot/package/x11r7/xlib_libICE/xlib_libICE.hash b/buildroot/package/x11r7/xlib_libICE/xlib_libICE.hash new file mode 100644 index 0000000..1b006ce --- /dev/null +++ b/buildroot/package/x11r7/xlib_libICE/xlib_libICE.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/pipermail/xorg/2014-June/056671.html +sha256 8f7032f2c1c64352b5423f6b48a8ebdc339cc63064af34d66a6c9aa79759e202 libICE-1.0.9.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libICE/xlib_libICE.mk b/buildroot/package/x11r7/xlib_libICE/xlib_libICE.mk new file mode 100644 index 0000000..e2a4e7d --- /dev/null +++ b/buildroot/package/x11r7/xlib_libICE/xlib_libICE.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libICE +# +################################################################################ + +XLIB_LIBICE_VERSION = 1.0.9 +XLIB_LIBICE_SOURCE = libICE-$(XLIB_LIBICE_VERSION).tar.bz2 +XLIB_LIBICE_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBICE_LICENSE = MIT +XLIB_LIBICE_LICENSE_FILES = COPYING +XLIB_LIBICE_INSTALL_STAGING = YES +XLIB_LIBICE_DEPENDENCIES = xlib_xtrans xproto_xproto host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libSM/Config.in b/buildroot/package/x11r7/xlib_libSM/Config.in new file mode 100644 index 0000000..ef83b53 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libSM/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBSM + bool "libSM" + select BR2_PACKAGE_XLIB_LIBICE + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org SM library diff --git a/buildroot/package/x11r7/xlib_libSM/xlib_libSM.hash b/buildroot/package/x11r7/xlib_libSM/xlib_libSM.hash new file mode 100644 index 0000000..79dc25c --- /dev/null +++ b/buildroot/package/x11r7/xlib_libSM/xlib_libSM.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/archives/xorg/2013-September/056013.html +sha256 0baca8c9f5d934450a70896c4ad38d06475521255ca63b717a6510fdb6e287bd libSM-1.2.2.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libSM/xlib_libSM.mk b/buildroot/package/x11r7/xlib_libSM/xlib_libSM.mk new file mode 100644 index 0000000..30640bd --- /dev/null +++ b/buildroot/package/x11r7/xlib_libSM/xlib_libSM.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libSM +# +################################################################################ + +XLIB_LIBSM_VERSION = 1.2.2 +XLIB_LIBSM_SOURCE = libSM-$(XLIB_LIBSM_VERSION).tar.bz2 +XLIB_LIBSM_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBSM_LICENSE = MIT +XLIB_LIBSM_LICENSE_FILES = COPYING +XLIB_LIBSM_INSTALL_STAGING = YES +XLIB_LIBSM_DEPENDENCIES = xlib_libICE xlib_xtrans xproto_xproto +XLIB_LIBSM_CONF_OPTS = --without-libuuid + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libX11/Config.in b/buildroot/package/x11r7/xlib_libX11/Config.in new file mode 100644 index 0000000..3ad8d00 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libX11/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_XLIB_LIBX11 + bool "libX11" + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XUTIL_UTIL_MACROS + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XLIB_LIBXAU + select BR2_PACKAGE_XLIB_LIBXDMCP + select BR2_PACKAGE_XPROTO_KBPROTO + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO + help + X.Org X11 library diff --git a/buildroot/package/x11r7/xlib_libX11/xlib_libX11.hash b/buildroot/package/x11r7/xlib_libX11/xlib_libX11.hash new file mode 100644 index 0000000..b1a87b1 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libX11/xlib_libX11.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-February/002777.html +sha256 4d3890db2ba225ba8c55ca63c6409c1ebb078a2806de59fb16342768ae63435d libX11-1.6.5.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libX11/xlib_libX11.mk b/buildroot/package/x11r7/xlib_libX11/xlib_libX11.mk new file mode 100644 index 0000000..64344da --- /dev/null +++ b/buildroot/package/x11r7/xlib_libX11/xlib_libX11.mk @@ -0,0 +1,61 @@ +################################################################################ +# +# xlib_libX11 +# +################################################################################ + +XLIB_LIBX11_VERSION = 1.6.5 +XLIB_LIBX11_SOURCE = libX11-$(XLIB_LIBX11_VERSION).tar.bz2 +XLIB_LIBX11_SITE = https://xorg.freedesktop.org/archive/individual/lib +XLIB_LIBX11_LICENSE = MIT +XLIB_LIBX11_LICENSE_FILES = COPYING +XLIB_LIBX11_INSTALL_STAGING = YES +XLIB_LIBX11_DEPENDENCIES = \ + libxcb \ + xutil_util-macros \ + xlib_xtrans \ + xlib_libXau \ + xlib_libXdmcp \ + xproto_kbproto \ + xproto_xproto \ + xproto_xextproto \ + xproto_inputproto \ + xproto_xf86bigfontproto \ + host-xproto_xproto + +HOST_XLIB_LIBX11_DEPENDENCIES = \ + host-libxcb \ + host-xutil_util-macros \ + host-xlib_xtrans \ + host-xlib_libXau \ + host-xlib_libXdmcp \ + host-xproto_kbproto \ + host-xproto_xproto \ + host-xproto_xextproto \ + host-xproto_inputproto \ + host-xproto_xf86bigfontproto + +XLIB_LIBX11_CONF_OPTS = \ + --disable-malloc0returnsnull \ + --with-xcb \ + --disable-specs \ + --without-perl + +HOST_XLIB_LIBX11_CONF_OPTS = \ + --disable-specs \ + --without-perl + +# src/util/makekeys is executed at build time to generate ks_tables.h, so +# it should get compiled for the host. The libX11 makefile unfortunately +# doesn't have X11_CFLAGS_FOR_BUILD so this doesn't work. For buildroot, +# we know the X11 includes are in $(HOST_DIR)/include, which are already +# in the CFLAGS_FOR_BUILD, so we can just remove the X11_CFLAGS +define XLIB_LIBX11_DISABLE_MAKEKEYS_X11_CFLAGS + $(SED) '/X11_CFLAGS/d' $(@D)/src/util/Makefile* +endef + +XLIB_LIBX11_POST_PATCH_HOOKS += XLIB_LIBX11_DISABLE_MAKEKEYS_X11_CFLAGS +HOST_XLIB_LIBX11_POST_PATCH_HOOKS += XLIB_LIBX11_DISABLE_MAKEKEYS_X11_CFLAGS + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXScrnSaver/Config.in b/buildroot/package/x11r7/xlib_libXScrnSaver/Config.in new file mode 100644 index 0000000..5df9a00 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXScrnSaver/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBXSCRNSAVER + bool "libXScrnSaver" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XPROTO_SCRNSAVERPROTO + help + X.Org XScrnSaver library diff --git a/buildroot/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.hash b/buildroot/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.hash new file mode 100644 index 0000000..d5340ba --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/pipermail/xorg/2012-March/054015.html +sha256 8ff1efa7341c7f34bcf9b17c89648d6325ddaae22e3904e091794e0b4426ce1d libXScrnSaver-1.2.2.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.mk b/buildroot/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.mk new file mode 100644 index 0000000..f22ee98 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXScrnSaver/xlib_libXScrnSaver.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXScrnSaver +# +################################################################################ + +XLIB_LIBXSCRNSAVER_VERSION = 1.2.2 +XLIB_LIBXSCRNSAVER_SOURCE = libXScrnSaver-$(XLIB_LIBXSCRNSAVER_VERSION).tar.bz2 +XLIB_LIBXSCRNSAVER_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXSCRNSAVER_LICENSE = MIT +XLIB_LIBXSCRNSAVER_LICENSE_FILES = COPYING +XLIB_LIBXSCRNSAVER_INSTALL_STAGING = YES +XLIB_LIBXSCRNSAVER_DEPENDENCIES = xlib_libX11 xlib_libXext xproto_scrnsaverproto +XLIB_LIBXSCRNSAVER_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXau/Config.in b/buildroot/package/x11r7/xlib_libXau/Config.in new file mode 100644 index 0000000..a220f01 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXau/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXAU + bool "libXau" + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XUTIL_UTIL_MACROS + help + X.Org Xau library diff --git a/buildroot/package/x11r7/xlib_libXau/xlib_libXau.hash b/buildroot/package/x11r7/xlib_libXau/xlib_libXau.hash new file mode 100644 index 0000000..b6c8de7 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXau/xlib_libXau.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/archives/xorg/2013-May/055728.html +sha256 fdd477320aeb5cdd67272838722d6b7d544887dfe7de46e1e7cc0c27c2bea4f2 libXau-1.0.8.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXau/xlib_libXau.mk b/buildroot/package/x11r7/xlib_libXau/xlib_libXau.mk new file mode 100644 index 0000000..1c50cb2 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXau/xlib_libXau.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# xlib_libXau +# +################################################################################ + +XLIB_LIBXAU_VERSION = 1.0.8 +XLIB_LIBXAU_SOURCE = libXau-$(XLIB_LIBXAU_VERSION).tar.bz2 +XLIB_LIBXAU_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXAU_LICENSE = MIT +XLIB_LIBXAU_LICENSE_FILES = COPYING +XLIB_LIBXAU_INSTALL_STAGING = YES +XLIB_LIBXAU_DEPENDENCIES = host-pkgconf xutil_util-macros xproto_xproto +HOST_XLIB_LIBXAU_DEPENDENCIES = \ + host-pkgconf host-xutil_util-macros host-xproto_xproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXaw/Config.in b/buildroot/package/x11r7/xlib_libXaw/Config.in new file mode 100644 index 0000000..3695bb6 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXaw/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XLIB_LIBXAW + bool "libXaw" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXPM + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xaw library diff --git a/buildroot/package/x11r7/xlib_libXaw/xlib_libXaw.hash b/buildroot/package/x11r7/xlib_libXaw/xlib_libXaw.hash new file mode 100644 index 0000000..a948e8f --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXaw/xlib_libXaw.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002591.html +sha256 8ef8067312571292ccc2bbe94c41109dcf022ea5a4ec71656a83d8cce9edb0cd libXaw-1.0.13.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXaw/xlib_libXaw.mk b/buildroot/package/x11r7/xlib_libXaw/xlib_libXaw.mk new file mode 100644 index 0000000..d78adff --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXaw/xlib_libXaw.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libXaw +# +################################################################################ + +XLIB_LIBXAW_VERSION = 1.0.13 +XLIB_LIBXAW_SOURCE = libXaw-$(XLIB_LIBXAW_VERSION).tar.bz2 +XLIB_LIBXAW_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXAW_LICENSE = MIT +XLIB_LIBXAW_LICENSE_FILES = COPYING +XLIB_LIBXAW_INSTALL_STAGING = YES +XLIB_LIBXAW_DEPENDENCIES = xlib_libX11 xlib_libXt xlib_libXmu xlib_libXpm xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXcomposite/Config.in b/buildroot/package/x11r7/xlib_libXcomposite/Config.in new file mode 100644 index 0000000..14da977 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXcomposite/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XLIB_LIBXCOMPOSITE + bool "libXcomposite" + select BR2_PACKAGE_XPROTO_COMPOSITEPROTO + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xcomposite library diff --git a/buildroot/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.hash b/buildroot/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.hash new file mode 100644 index 0000000..b0c3211 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/archives/xorg/2013-January/055221.html +sha256 ede250cd207d8bee4a338265c3007d7a68d5aca791b6ac41af18e9a2aeb34178 libXcomposite-0.4.4.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.mk b/buildroot/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.mk new file mode 100644 index 0000000..f0e59cb --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXcomposite/xlib_libXcomposite.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libXcomposite +# +################################################################################ + +XLIB_LIBXCOMPOSITE_VERSION = 0.4.4 +XLIB_LIBXCOMPOSITE_SOURCE = libXcomposite-$(XLIB_LIBXCOMPOSITE_VERSION).tar.bz2 +XLIB_LIBXCOMPOSITE_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXCOMPOSITE_LICENSE = MIT +XLIB_LIBXCOMPOSITE_LICENSE_FILES = COPYING +XLIB_LIBXCOMPOSITE_INSTALL_STAGING = YES +XLIB_LIBXCOMPOSITE_DEPENDENCIES = xproto_compositeproto xlib_libX11 xlib_libXext xlib_libXfixes xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXcursor/Config.in b/buildroot/package/x11r7/xlib_libXcursor/Config.in new file mode 100644 index 0000000..6519cc7 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXcursor/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXCURSOR + bool "libXcursor" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xcursor library diff --git a/buildroot/package/x11r7/xlib_libXcursor/xlib_libXcursor.hash b/buildroot/package/x11r7/xlib_libXcursor/xlib_libXcursor.hash new file mode 100644 index 0000000..7da9eb8 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXcursor/xlib_libXcursor.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-November/002823.html +md5 58fe3514e1e7135cf364101e714d1a14 libXcursor-1.1.15.tar.bz2 +sha1 3e19f991f244b7fa31566adce7ead078424296cf libXcursor-1.1.15.tar.bz2 +sha256 294e670dd37cd23995e69aae626629d4a2dfe5708851bbc13d032401b7a3df6b libXcursor-1.1.15.tar.bz2 +sha512 53ad0fa2afd7b4cf1108b560e44ea71abdf5c55a18df243d7123942513589c927f5c105395f790d8769959e0129db54264e6aac7efd51a5f1aec270379b1f2f5 libXcursor-1.1.15.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXcursor/xlib_libXcursor.mk b/buildroot/package/x11r7/xlib_libXcursor/xlib_libXcursor.mk new file mode 100644 index 0000000..b27aa65 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXcursor/xlib_libXcursor.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xlib_libXcursor +# +################################################################################ + +XLIB_LIBXCURSOR_VERSION = 1.1.15 +XLIB_LIBXCURSOR_SOURCE = libXcursor-$(XLIB_LIBXCURSOR_VERSION).tar.bz2 +XLIB_LIBXCURSOR_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXCURSOR_LICENSE = MIT +XLIB_LIBXCURSOR_LICENSE_FILES = COPYING +XLIB_LIBXCURSOR_INSTALL_STAGING = YES +XLIB_LIBXCURSOR_DEPENDENCIES = xlib_libX11 xlib_libXfixes xlib_libXrender xproto_xproto +HOST_XLIB_LIBXCURSOR_DEPENDENCIES = \ + host-xlib_libX11 host-xlib_libXfixes host-xlib_libXrender \ + host-xproto_xproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXdamage/Config.in b/buildroot/package/x11r7/xlib_libXdamage/Config.in new file mode 100644 index 0000000..2427486 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXdamage/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXDAMAGE + bool "libXdamage" + select BR2_PACKAGE_XPROTO_DAMAGEPROTO + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xdamage library diff --git a/buildroot/package/x11r7/xlib_libXdamage/xlib_libXdamage.hash b/buildroot/package/x11r7/xlib_libXdamage/xlib_libXdamage.hash new file mode 100644 index 0000000..343cbf4 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXdamage/xlib_libXdamage.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/archives/xorg/2013-January/055220.html +sha256 7c3fe7c657e83547f4822bfde30a90d84524efb56365448768409b77f05355ad libXdamage-1.1.4.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXdamage/xlib_libXdamage.mk b/buildroot/package/x11r7/xlib_libXdamage/xlib_libXdamage.mk new file mode 100644 index 0000000..9f982ee --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXdamage/xlib_libXdamage.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libXdamage +# +################################################################################ + +XLIB_LIBXDAMAGE_VERSION = 1.1.4 +XLIB_LIBXDAMAGE_SOURCE = libXdamage-$(XLIB_LIBXDAMAGE_VERSION).tar.bz2 +XLIB_LIBXDAMAGE_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXDAMAGE_LICENSE = MIT +XLIB_LIBXDAMAGE_LICENSE_FILES = COPYING +XLIB_LIBXDAMAGE_INSTALL_STAGING = YES +XLIB_LIBXDAMAGE_DEPENDENCIES = xproto_damageproto xlib_libX11 xlib_libXfixes xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXdmcp/Config.in b/buildroot/package/x11r7/xlib_libXdmcp/Config.in new file mode 100644 index 0000000..218ff15 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXdmcp/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXDMCP + bool "libXdmcp" + select BR2_PACKAGE_XUTIL_UTIL_MACROS + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xdmcp library diff --git a/buildroot/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.hash b/buildroot/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.hash new file mode 100644 index 0000000..6b50cb1 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-March/002554.html +sha256 81fe09867918fff258296e1e1e159f0dc639cb30d201c53519f25ab73af4e4e2 libXdmcp-1.1.2.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.mk b/buildroot/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.mk new file mode 100644 index 0000000..ec1b861 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXdmcp/xlib_libXdmcp.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xlib_libXdmcp +# +################################################################################ + +XLIB_LIBXDMCP_VERSION = 1.1.2 +XLIB_LIBXDMCP_SOURCE = libXdmcp-$(XLIB_LIBXDMCP_VERSION).tar.bz2 +XLIB_LIBXDMCP_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXDMCP_LICENSE = MIT +XLIB_LIBXDMCP_LICENSE_FILES = COPYING +XLIB_LIBXDMCP_INSTALL_STAGING = YES +XLIB_LIBXDMCP_DEPENDENCIES = xutil_util-macros xproto_xproto +HOST_XLIB_LIBXDMCP_DEPENDENCIES = host-xutil_util-macros host-xproto_xproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXext/Config.in b/buildroot/package/x11r7/xlib_libXext/Config.in new file mode 100644 index 0000000..823a165 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXext/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBXEXT + bool "libXext" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xext library diff --git a/buildroot/package/x11r7/xlib_libXext/xlib_libXext.hash b/buildroot/package/x11r7/xlib_libXext/xlib_libXext.hash new file mode 100644 index 0000000..45b7544 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXext/xlib_libXext.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/pipermail/xorg/2014-July/056771.html +sha256 b518d4d332231f313371fdefac59e3776f4f0823bcb23cf7c7305bfb57b16e35 libXext-1.3.3.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXext/xlib_libXext.mk b/buildroot/package/x11r7/xlib_libXext/xlib_libXext.mk new file mode 100644 index 0000000..211c853 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXext/xlib_libXext.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXext +# +################################################################################ + +XLIB_LIBXEXT_VERSION = 1.3.3 +XLIB_LIBXEXT_SOURCE = libXext-$(XLIB_LIBXEXT_VERSION).tar.bz2 +XLIB_LIBXEXT_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXEXT_LICENSE = MIT +XLIB_LIBXEXT_LICENSE_FILES = COPYING +XLIB_LIBXEXT_INSTALL_STAGING = YES +XLIB_LIBXEXT_DEPENDENCIES = xlib_libX11 xproto_xextproto xproto_xproto +XLIB_LIBXEXT_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXfixes/Config.in b/buildroot/package/x11r7/xlib_libXfixes/Config.in new file mode 100644 index 0000000..9bbabb2 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXfixes/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXFIXES + bool "libXfixes" + select BR2_PACKAGE_XPROTO_FIXESPROTO + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xfixes library diff --git a/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash b/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash new file mode 100644 index 0000000..d96e5c6 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-October/002722.html +sha256 de1cd33aff226e08cefd0e6759341c2c8e8c9faf8ce9ac6ec38d43e287b22ad6 libXfixes-5.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk b/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk new file mode 100644 index 0000000..b7d835b --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXfixes/xlib_libXfixes.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# xlib_libXfixes +# +################################################################################ + +XLIB_LIBXFIXES_VERSION = 5.0.3 +XLIB_LIBXFIXES_SOURCE = libXfixes-$(XLIB_LIBXFIXES_VERSION).tar.bz2 +XLIB_LIBXFIXES_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXFIXES_LICENSE = MIT +XLIB_LIBXFIXES_LICENSE_FILES = COPYING +XLIB_LIBXFIXES_INSTALL_STAGING = YES +XLIB_LIBXFIXES_DEPENDENCIES = xproto_fixesproto xlib_libX11 xproto_xextproto xproto_xproto +HOST_XLIB_LIBXFIXES_DEPENDENCIES = \ + host-xproto_fixesproto host-xlib_libX11 host-xproto_xextproto \ + host-xproto_xproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXfont/Config.in b/buildroot/package/x11r7/xlib_libXfont/Config.in new file mode 100644 index 0000000..cc1da0e --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXfont/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XLIB_LIBXFONT + bool "libXfont" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBFONTENC + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XFONT_ENCODINGS + help + X.Org Xfont library diff --git a/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.hash b/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.hash new file mode 100644 index 0000000..ea04348 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-November/002825.html +md5 16eaf156edd79b68038b6a7c44aa9e9b libXfont-1.5.4.tar.bz2 +sha1 9db050f63b9c4cb19e0dbb40575558ccb95719ca libXfont-1.5.4.tar.bz2 +sha256 1a7f7490774c87f2052d146d1e0e64518d32e6848184a18654e8d0bb57883242 libXfont-1.5.4.tar.bz2 +sha512 864edbaff45c44bd92bc4b06275c73fdf584a9b88bc523a297d4c75c01ca253f438463e929af70d753ddecfa648bb0b9bcf0ec72267db9f2b1704f7afa906cb3 libXfont-1.5.4.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.mk b/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.mk new file mode 100644 index 0000000..30163ee --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXfont/xlib_libXfont.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# xlib_libXfont +# +################################################################################ + +XLIB_LIBXFONT_VERSION = 1.5.4 +XLIB_LIBXFONT_SOURCE = libXfont-$(XLIB_LIBXFONT_VERSION).tar.bz2 +XLIB_LIBXFONT_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXFONT_LICENSE = MIT +XLIB_LIBXFONT_LICENSE_FILES = COPYING +XLIB_LIBXFONT_AUTORECONF = YES +XLIB_LIBXFONT_INSTALL_STAGING = YES + +XLIB_LIBXFONT_DEPENDENCIES = freetype xlib_libfontenc xlib_xtrans xproto_fontsproto xproto_xproto xfont_encodings + +HOST_XLIB_LIBXFONT_DEPENDENCIES = \ + host-freetype host-xlib_libfontenc host-xlib_xtrans \ + host-xproto_fontsproto host-xproto_xproto host-xfont_encodings + +XLIB_LIBXFONT_CONF_OPTS = --disable-devel-docs +HOST_XLIB_LIBXFONT_CONF_OPTS = --disable-devel-docs + +ifeq ($(BR2_microblaze),y) +# The microblaze toolchains don't define the __ELF__ preprocessor +# symbol even though they do use the elf format. LibXfont checks for +# this symbol to know if weak symbols are supported, and otherwise +# falls back to emulation code using dlopen - Causing linker issues +# for stuff using libXfont. +# Work around it by defining the symbol here as well. +XLIB_LIBXFONT_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D__ELF__" +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXfont2/Config.in b/buildroot/package/x11r7/xlib_libXfont2/Config.in new file mode 100644 index 0000000..6cba465 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXfont2/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XLIB_LIBXFONT2 + bool "libXfont2" + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBFONTENC + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XFONT_ENCODINGS + help + X.Org Xfont library diff --git a/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash b/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash new file mode 100644 index 0000000..1816b4b --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-November/002824.html +md5 b7ca87dfafeb5205b28a1e91ac3efe85 libXfont2-2.0.3.tar.bz2 +sha1 1110f1ad4061d9e8131ecb941757480e3e32bca0 libXfont2-2.0.3.tar.bz2 +sha256 0e8ab7fd737ccdfe87e1f02b55f221f0bd4503a1c5f28be4ed6a54586bac9c4e libXfont2-2.0.3.tar.bz2 +sha512 648b664e2aa58cbc7366a1b05873aa06bd4a38060f64085783043388244af8ceced77b29a22c3ac8b6d34cd226e093bbbcc785ea1748ea65720fe7ea05b4b44b libXfont2-2.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk b/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk new file mode 100644 index 0000000..3f1bdee --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXfont2/xlib_libXfont2.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# xlib_libXfont2 +# +################################################################################ + +XLIB_LIBXFONT2_VERSION = 2.0.3 +XLIB_LIBXFONT2_SOURCE = libXfont2-$(XLIB_LIBXFONT2_VERSION).tar.bz2 +XLIB_LIBXFONT2_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXFONT2_LICENSE = MIT +XLIB_LIBXFONT2_LICENSE_FILES = COPYING +XLIB_LIBXFONT2_INSTALL_STAGING = YES +XLIB_LIBXFONT2_DEPENDENCIES = \ + freetype \ + xlib_libfontenc \ + xlib_xtrans \ + xproto_fontsproto \ + xproto_xproto \ + xfont_encodings + +HOST_XLIB_LIBXFONT2_DEPENDENCIES = \ + host-freetype \ + host-xlib_libfontenc \ + host-xlib_xtrans \ + host-xproto_fontsproto \ + host-xproto_xproto \ + host-xfont_encodings + +XLIB_LIBXFONT2_CONF_OPTS = --disable-devel-docs +HOST_XLIB_LIBXFONT2_CONF_OPTS = --disable-devel-docs + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXft/Config.in b/buildroot/package/x11r7/xlib_libXft/Config.in new file mode 100644 index 0000000..6eef170 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXft/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XLIB_LIBXFT + bool "libXft" + select BR2_PACKAGE_FONTCONFIG + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xft library diff --git a/buildroot/package/x11r7/xlib_libXft/xlib_libXft.hash b/buildroot/package/x11r7/xlib_libXft/xlib_libXft.hash new file mode 100644 index 0000000..6eacf06 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXft/xlib_libXft.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/pipermail/xorg/2014-June/056668.html +sha256 f5a3c824761df351ca91827ac221090943ef28b248573486050de89f4bfcdc4c libXft-2.3.2.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXft/xlib_libXft.mk b/buildroot/package/x11r7/xlib_libXft/xlib_libXft.mk new file mode 100644 index 0000000..de9b470 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXft/xlib_libXft.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXft +# +################################################################################ + +XLIB_LIBXFT_VERSION = 2.3.2 +XLIB_LIBXFT_SOURCE = libXft-$(XLIB_LIBXFT_VERSION).tar.bz2 +XLIB_LIBXFT_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXFT_LICENSE = MIT +XLIB_LIBXFT_LICENSE_FILES = COPYING +XLIB_LIBXFT_AUTORECONF = YES +XLIB_LIBXFT_INSTALL_STAGING = YES +XLIB_LIBXFT_DEPENDENCIES = fontconfig freetype xlib_libX11 xlib_libXext xlib_libXrender xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXi/Config.in b/buildroot/package/x11r7/xlib_libXi/Config.in new file mode 100644 index 0000000..3ae22d6 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXi/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XLIB_LIBXI + bool "libXi" + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + help + X.Org Xi library diff --git a/buildroot/package/x11r7/xlib_libXi/xlib_libXi.hash b/buildroot/package/x11r7/xlib_libXi/xlib_libXi.hash new file mode 100644 index 0000000..9f2c3e3 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXi/xlib_libXi.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002768.html +sha256 c2e6b8ff84f9448386c1b5510a5cf5a16d788f76db018194dacdc200180faf45 libXi-1.7.9.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXi/xlib_libXi.mk b/buildroot/package/x11r7/xlib_libXi/xlib_libXi.mk new file mode 100644 index 0000000..d593c1e --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXi/xlib_libXi.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# xlib_libXi +# +################################################################################ + +XLIB_LIBXI_VERSION = 1.7.9 +XLIB_LIBXI_SOURCE = libXi-$(XLIB_LIBXI_VERSION).tar.bz2 +XLIB_LIBXI_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXI_LICENSE = MIT +XLIB_LIBXI_LICENSE_FILES = COPYING +XLIB_LIBXI_INSTALL_STAGING = YES +XLIB_LIBXI_DEPENDENCIES = \ + host-pkgconf \ + xproto_inputproto \ + xproto_xproto \ + xlib_libX11 \ + xlib_libXext \ + xlib_libXfixes + +XLIB_LIBXI_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXinerama/Config.in b/buildroot/package/x11r7/xlib_libXinerama/Config.in new file mode 100644 index 0000000..5a79b4e --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXinerama/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBXINERAMA + bool "libXinerama" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XPROTO_XINERAMAPROTO + help + X.Org Xinerama library diff --git a/buildroot/package/x11r7/xlib_libXinerama/xlib_libXinerama.hash b/buildroot/package/x11r7/xlib_libXinerama/xlib_libXinerama.hash new file mode 100644 index 0000000..6dfd777 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXinerama/xlib_libXinerama.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-May/002231.html +sha256 7a45699f1773095a3f821e491cbd5e10c887c5a5fce5d8d3fced15c2ff7698e2 libXinerama-1.1.3.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXinerama/xlib_libXinerama.mk b/buildroot/package/x11r7/xlib_libXinerama/xlib_libXinerama.mk new file mode 100644 index 0000000..ee8bf55 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXinerama/xlib_libXinerama.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXinerama +# +################################################################################ + +XLIB_LIBXINERAMA_VERSION = 1.1.3 +XLIB_LIBXINERAMA_SOURCE = libXinerama-$(XLIB_LIBXINERAMA_VERSION).tar.bz2 +XLIB_LIBXINERAMA_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXINERAMA_LICENSE = MIT +XLIB_LIBXINERAMA_LICENSE_FILES = COPYING +XLIB_LIBXINERAMA_INSTALL_STAGING = YES +XLIB_LIBXINERAMA_DEPENDENCIES = xlib_libX11 xlib_libXext xproto_xineramaproto +XLIB_LIBXINERAMA_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXmu/Config.in b/buildroot/package/x11r7/xlib_libXmu/Config.in new file mode 100644 index 0000000..ed239dc --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXmu/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXMU + bool "libXmu" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xmu library diff --git a/buildroot/package/x11r7/xlib_libXmu/xlib_libXmu.hash b/buildroot/package/x11r7/xlib_libXmu/xlib_libXmu.hash new file mode 100644 index 0000000..2c96d96 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXmu/xlib_libXmu.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/archives/xorg/2013-September/056009.html +sha256 756edc7c383254eef8b4e1b733c3bf1dc061b523c9f9833ac7058378b8349d0b libXmu-1.1.2.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXmu/xlib_libXmu.mk b/buildroot/package/x11r7/xlib_libXmu/xlib_libXmu.mk new file mode 100644 index 0000000..261f871 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXmu/xlib_libXmu.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libXmu +# +################################################################################ + +XLIB_LIBXMU_VERSION = 1.1.2 +XLIB_LIBXMU_SOURCE = libXmu-$(XLIB_LIBXMU_VERSION).tar.bz2 +XLIB_LIBXMU_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXMU_LICENSE = MIT +XLIB_LIBXMU_LICENSE_FILES = COPYING +XLIB_LIBXMU_INSTALL_STAGING = YES +XLIB_LIBXMU_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXt xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXpm/0001-fork-check.patch b/buildroot/package/x11r7/xlib_libXpm/0001-fork-check.patch new file mode 100644 index 0000000..fb4fb7d --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXpm/0001-fork-check.patch @@ -0,0 +1,21 @@ +Allow usage when fork() is not available + +When fork() is not available, we need to define NO_ZPIPE so that +libXpm doesn't try to fork/exec to use a pipe to uncompress compressed +.xpm files. There is obviously a loss of functionality, but loading +uncompressed .xpm files should continue to work. + +Signed-off-by: Thomas Petazzoni + +Index: b/configure.ac +=================================================================== +--- a/configure.ac ++++ b/configure.ac +@@ -22,6 +22,7 @@ + + # Checks for library functions + AC_CHECK_FUNCS([strlcat]) ++AC_CHECK_FUNC([fork],[], AC_DEFINE(NO_ZPIPE)) + + # Obtain compiler/linker options for dependencies + PKG_CHECK_MODULES(XPM, xproto x11) diff --git a/buildroot/package/x11r7/xlib_libXpm/Config.in b/buildroot/package/x11r7/xlib_libXpm/Config.in new file mode 100644 index 0000000..528498c --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXpm/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXPM + bool "libXpm" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xpm library diff --git a/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.hash b/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.hash new file mode 100644 index 0000000..d94a902 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-December/002752.html +sha256 fd6a6de3da48de8d1bb738ab6be4ad67f7cb0986c39bd3f7d51dd24f7854bdec libXpm-3.5.12.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.mk b/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.mk new file mode 100644 index 0000000..09f897e --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXpm/xlib_libXpm.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# xlib_libXpm +# +################################################################################ + +XLIB_LIBXPM_VERSION = 3.5.12 +XLIB_LIBXPM_SOURCE = libXpm-$(XLIB_LIBXPM_VERSION).tar.bz2 +XLIB_LIBXPM_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXPM_LICENSE = MIT +XLIB_LIBXPM_LICENSE_FILES = COPYING +XLIB_LIBXPM_INSTALL_STAGING = YES +# we patch configure.ac +XLIB_LIBXPM_AUTORECONF = YES +XLIB_LIBXPM_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXt xproto_xproto \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) \ + $(TARGET_NLS_DEPENDENCIES) + +ifeq ($(BR2_SYSTEM_ENABLE_NLS),) +XLIB_LIBXPM_CONF_ENV = ac_cv_search_gettext=no +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXrandr/Config.in b/buildroot/package/x11r7/xlib_libXrandr/Config.in new file mode 100644 index 0000000..3b3ebd5 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXrandr/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XLIB_LIBXRANDR + bool "libXrandr" + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xrandr library diff --git a/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash b/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash new file mode 100644 index 0000000..84a50cb --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-October/002724.html +sha256 1ff9e7fa0e4adea912b16a5f0cfa7c1d35b0dcda0e216831f7715c8a3abcf51a libXrandr-1.5.1.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk b/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk new file mode 100644 index 0000000..0fd298c --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXrandr/xlib_libXrandr.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXrandr +# +################################################################################ + +XLIB_LIBXRANDR_VERSION = 1.5.1 +XLIB_LIBXRANDR_SOURCE = libXrandr-$(XLIB_LIBXRANDR_VERSION).tar.bz2 +XLIB_LIBXRANDR_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXRANDR_LICENSE = MIT +XLIB_LIBXRANDR_LICENSE_FILES = COPYING +XLIB_LIBXRANDR_INSTALL_STAGING = YES +XLIB_LIBXRANDR_DEPENDENCIES = xproto_randrproto xlib_libX11 xlib_libXext xlib_libXrender xproto_renderproto xproto_xproto +XLIB_LIBXRANDR_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXrender/Config.in b/buildroot/package/x11r7/xlib_libXrender/Config.in new file mode 100644 index 0000000..c723e4d --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXrender/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBXRENDER + bool "libXrender" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xrender library diff --git a/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.hash b/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.hash new file mode 100644 index 0000000..bbc5b89 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-October/002725.html +sha256 c06d5979f86e64cabbde57c223938db0b939dff49fdb5a793a1d3d0396650949 libXrender-0.9.10.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.mk b/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.mk new file mode 100644 index 0000000..6134c45 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXrender/xlib_libXrender.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xlib_libXrender +# +################################################################################ + +XLIB_LIBXRENDER_VERSION = 0.9.10 +XLIB_LIBXRENDER_SOURCE = libXrender-$(XLIB_LIBXRENDER_VERSION).tar.bz2 +XLIB_LIBXRENDER_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXRENDER_LICENSE = MIT +XLIB_LIBXRENDER_LICENSE_FILES = COPYING +XLIB_LIBXRENDER_INSTALL_STAGING = YES +XLIB_LIBXRENDER_DEPENDENCIES = xlib_libX11 xproto_renderproto xproto_xproto +HOST_XLIB_LIBXRENDER_DEPENDENCIES = \ + host-xlib_libX11 host-xproto_renderproto host-xproto_xproto + +XLIB_LIBXRENDER_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXres/Config.in b/buildroot/package/x11r7/xlib_libXres/Config.in new file mode 100644 index 0000000..39abbbf --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXres/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXRES + bool "libXres" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XPROTO_RESOURCEPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org XRes library diff --git a/buildroot/package/x11r7/xlib_libXres/xlib_libXres.hash b/buildroot/package/x11r7/xlib_libXres/xlib_libXres.hash new file mode 100644 index 0000000..12a0351 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXres/xlib_libXres.hash @@ -0,0 +1,5 @@ +# From https://lists.x.org/archives/xorg-announce/2017-October/002812.html +md5 5d6d443d1abc8e1f6fc1c57fb27729bb libXres-1.2.0.tar.bz2 +sha1 b6996ab05460a3b7311f02da23ddf117a5442fd9 libXres-1.2.0.tar.bz2 +sha256 ff75c1643488e64a7cfbced27486f0f944801319c84c18d3bd3da6bf28c812d4 libXres-1.2.0.tar.bz2 +sha512 8eb5a36b1f030eb4e27e676cc4befcc073da66a7bce2b39089314e1facb629d13b087bb53ca2c95fe5291857da7ff9f80c6ab28fb3e245eeb9e0344937900172 libXres-1.2.0.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXres/xlib_libXres.mk b/buildroot/package/x11r7/xlib_libXres/xlib_libXres.mk new file mode 100644 index 0000000..0075e8f --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXres/xlib_libXres.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXres +# +################################################################################ + +XLIB_LIBXRES_VERSION = 1.2.0 +XLIB_LIBXRES_SOURCE = libXres-$(XLIB_LIBXRES_VERSION).tar.bz2 +XLIB_LIBXRES_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXRES_LICENSE = MIT +XLIB_LIBXRES_LICENSE_FILES = COPYING +XLIB_LIBXRES_INSTALL_STAGING = YES +XLIB_LIBXRES_DEPENDENCIES = xlib_libX11 xlib_libXext xproto_resourceproto xproto_xproto +XLIB_LIBXRES_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXt/0001-util-don-t-link-makestrs-with-target-cflags.patch b/buildroot/package/x11r7/xlib_libXt/0001-util-don-t-link-makestrs-with-target-cflags.patch new file mode 100644 index 0000000..ccc684f --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXt/0001-util-don-t-link-makestrs-with-target-cflags.patch @@ -0,0 +1,33 @@ +From 3f064076c783914cafdff028db303681dae4291d Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 15 Nov 2012 18:31:53 +0100 +Subject: [PATCH] libXt: util: don't link makestrs with target cflags + +The line: + +AM_CFLAGS = $(XT_CFLAGS) + +in util/Makefile.am is wrong because it adds target cflags to the +compilation of makestrs, which is built for the build machine, which +leads to build failures when cross-compiling. + +Signed-off-by: Thomas Petazzoni +--- + util/Makefile.am | 1 - + util/makestrs.c | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/util/Makefile.am b/util/Makefile.am +index dedfa6b..cc6f3fc 100644 +--- a/util/Makefile.am ++++ b/util/Makefile.am +@@ -10,7 +10,6 @@ EXTRA_DIST = \ + StrDefs.ht \ + string.list + +-AM_CFLAGS = $(XT_CFLAGS) + makestrs_SOURCES = makestrs.c + + +-- +1.7.9.5 diff --git a/buildroot/package/x11r7/xlib_libXt/Config.in b/buildroot/package/x11r7/xlib_libXt/Config.in new file mode 100644 index 0000000..6557e20 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXt/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XLIB_LIBXT + bool "libXt" + select BR2_PACKAGE_XLIB_LIBSM + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XPROTO_KBPROTO + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XCB_PROTO + select BR2_PACKAGE_LIBXCB + help + X.Org Xt library diff --git a/buildroot/package/x11r7/xlib_libXt/xlib_libXt.hash b/buildroot/package/x11r7/xlib_libXt/xlib_libXt.hash new file mode 100644 index 0000000..751c370 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXt/xlib_libXt.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002594.html +sha256 46eeb6be780211fdd98c5109286618f6707712235fdd19df4ce1e6954f349f1a libXt-1.1.5.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXt/xlib_libXt.mk b/buildroot/package/x11r7/xlib_libXt/xlib_libXt.mk new file mode 100644 index 0000000..4715ac6 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXt/xlib_libXt.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xlib_libXt +# +################################################################################ + +XLIB_LIBXT_VERSION = 1.1.5 +XLIB_LIBXT_SOURCE = libXt-$(XLIB_LIBXT_VERSION).tar.bz2 +XLIB_LIBXT_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXT_LICENSE = MIT +XLIB_LIBXT_LICENSE_FILES = COPYING +XLIB_LIBXT_INSTALL_STAGING = YES +XLIB_LIBXT_DEPENDENCIES = xlib_libSM xlib_libX11 xproto_kbproto xproto_xproto xcb-proto libxcb host-xproto_xproto +XLIB_LIBXT_CONF_OPTS = --disable-malloc0returnsnull --disable-install-makestrs +XLIB_LIBXT_AUTORECONF = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXtst/Config.in b/buildroot/package/x11r7/xlib_libXtst/Config.in new file mode 100644 index 0000000..8853bde --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXtst/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXTST + bool "libXtst" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XPROTO_RECORDPROTO + help + X.Org Xtst library diff --git a/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.hash b/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.hash new file mode 100644 index 0000000..7e55a75 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-October/002726.html +sha256 4655498a1b8e844e3d6f21f3b2c4e2b571effb5fd83199d428a6ba7ea4bf5204 libXtst-1.2.3.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.mk b/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.mk new file mode 100644 index 0000000..d71290a --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXtst/xlib_libXtst.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xlib_libXtst +# +################################################################################ + +XLIB_LIBXTST_VERSION = 1.2.3 +XLIB_LIBXTST_SOURCE = libXtst-$(XLIB_LIBXTST_VERSION).tar.bz2 +XLIB_LIBXTST_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXTST_LICENSE = MIT +XLIB_LIBXTST_LICENSE_FILES = COPYING +XLIB_LIBXTST_INSTALL_STAGING = YES + +XLIB_LIBXTST_DEPENDENCIES = \ + xlib_libX11 \ + xlib_libXext \ + xlib_libXi \ + xproto_recordproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXv/Config.in b/buildroot/package/x11r7/xlib_libXv/Config.in new file mode 100644 index 0000000..90f07f3 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXv/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXV + bool "libXv" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xv library diff --git a/buildroot/package/x11r7/xlib_libXv/xlib_libXv.hash b/buildroot/package/x11r7/xlib_libXv/xlib_libXv.hash new file mode 100644 index 0000000..4cb26ea --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXv/xlib_libXv.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-October/002727.html +sha256 d26c13eac99ac4504c532e8e76a1c8e4bd526471eb8a0a4ff2a88db60cb0b088 libXv-1.0.11.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXv/xlib_libXv.mk b/buildroot/package/x11r7/xlib_libXv/xlib_libXv.mk new file mode 100644 index 0000000..0e02439 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXv/xlib_libXv.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXv +# +################################################################################ + +XLIB_LIBXV_VERSION = 1.0.11 +XLIB_LIBXV_SOURCE = libXv-$(XLIB_LIBXV_VERSION).tar.bz2 +XLIB_LIBXV_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXV_LICENSE = ISC-like +XLIB_LIBXV_LICENSE_FILES = COPYING +XLIB_LIBXV_INSTALL_STAGING = YES +XLIB_LIBXV_DEPENDENCIES = xlib_libX11 xlib_libXext xproto_videoproto xproto_xproto +XLIB_LIBXV_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXvMC/Config.in b/buildroot/package/x11r7/xlib_libXvMC/Config.in new file mode 100644 index 0000000..90c0e74 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXvMC/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XLIB_LIBXVMC + bool "libXvMC" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXV + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org XvMC library diff --git a/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash b/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash new file mode 100644 index 0000000..380c811 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-October/002728.html +sha256 e501a079b5dfaef0897c56152770c77e05e362065cec58910289aa567277ee2e libXvMC-1.0.10.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk b/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk new file mode 100644 index 0000000..cb39c29 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXvMC/xlib_libXvMC.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXvMC +# +################################################################################ + +XLIB_LIBXVMC_VERSION = 1.0.10 +XLIB_LIBXVMC_SOURCE = libXvMC-$(XLIB_LIBXVMC_VERSION).tar.bz2 +XLIB_LIBXVMC_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXVMC_LICENSE = MIT +XLIB_LIBXVMC_LICENSE_FILES = COPYING +XLIB_LIBXVMC_INSTALL_STAGING = YES +XLIB_LIBXVMC_DEPENDENCIES = xlib_libX11 xlib_libXext xlib_libXv xproto_videoproto xproto_xproto +XLIB_LIBXVMC_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXxf86dga/Config.in b/buildroot/package/x11r7/xlib_libXxf86dga/Config.in new file mode 100644 index 0000000..8276b71 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXxf86dga/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XLIB_LIBXXF86DGA + bool "libXxf86dga" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XPROTO_XF86DGAPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xxf86dga library diff --git a/buildroot/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.hash b/buildroot/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.hash new file mode 100644 index 0000000..29560b7 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2013-May/002235.html +sha256 8eecd4b6c1df9a3704c04733c2f4fa93ef469b55028af5510b25818e2456c77e libXxf86dga-1.1.4.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.mk b/buildroot/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.mk new file mode 100644 index 0000000..eea756b --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXxf86dga/xlib_libXxf86dga.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXxf86dga +# +################################################################################ + +XLIB_LIBXXF86DGA_VERSION = 1.1.4 +XLIB_LIBXXF86DGA_SOURCE = libXxf86dga-$(XLIB_LIBXXF86DGA_VERSION).tar.bz2 +XLIB_LIBXXF86DGA_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXXF86DGA_LICENSE = MIT +XLIB_LIBXXF86DGA_LICENSE_FILES = COPYING +XLIB_LIBXXF86DGA_INSTALL_STAGING = YES +XLIB_LIBXXF86DGA_DEPENDENCIES = xlib_libX11 xlib_libXext xproto_xf86dgaproto xproto_xproto +XLIB_LIBXXF86DGA_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libXxf86vm/Config.in b/buildroot/package/x11r7/xlib_libXxf86vm/Config.in new file mode 100644 index 0000000..9e32188 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXxf86vm/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XLIB_LIBXXF86VM + bool "libXxf86vm" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org Xxf86vm library diff --git a/buildroot/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.hash b/buildroot/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.hash new file mode 100644 index 0000000..cece6b5 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.hash @@ -0,0 +1,3 @@ +# From http://lists.x.org/archives/xorg-announce/2015-February/002539.html +sha1 78ef18ca2be157131899e01c62679e247409a13f libXxf86vm-1.1.4.tar.bz2 +sha256 afee27f93c5f31c0ad582852c0fb36d50e4de7cd585fcf655e278a633d85cd57 libXxf86vm-1.1.4.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.mk b/buildroot/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.mk new file mode 100644 index 0000000..f650fe4 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libXxf86vm/xlib_libXxf86vm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libXxf86vm +# +################################################################################ + +XLIB_LIBXXF86VM_VERSION = 1.1.4 +XLIB_LIBXXF86VM_SOURCE = libXxf86vm-$(XLIB_LIBXXF86VM_VERSION).tar.bz2 +XLIB_LIBXXF86VM_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXXF86VM_LICENSE = MIT +XLIB_LIBXXF86VM_LICENSE_FILES = COPYING +XLIB_LIBXXF86VM_INSTALL_STAGING = YES +XLIB_LIBXXF86VM_DEPENDENCIES = xlib_libX11 xlib_libXext xproto_xf86vidmodeproto xproto_xproto +XLIB_LIBXXF86VM_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libdmx/Config.in b/buildroot/package/x11r7/xlib_libdmx/Config.in new file mode 100644 index 0000000..879f689 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libdmx/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XLIB_LIBDMX + bool "libdmx" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XPROTO_DMXPROTO + help + X.Org dmx library diff --git a/buildroot/package/x11r7/xlib_libdmx/xlib_libdmx.hash b/buildroot/package/x11r7/xlib_libdmx/xlib_libdmx.hash new file mode 100644 index 0000000..9f71535 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libdmx/xlib_libdmx.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/archives/xorg-announce/2013-May/002225.html +sha256 c97da36d2e56a2d7b6e4f896241785acc95e97eb9557465fd66ba2a155a7b201 libdmx-1.1.3.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libdmx/xlib_libdmx.mk b/buildroot/package/x11r7/xlib_libdmx/xlib_libdmx.mk new file mode 100644 index 0000000..fbe3067 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libdmx/xlib_libdmx.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xlib_libdmx +# +################################################################################ + +XLIB_LIBDMX_VERSION = 1.1.3 +XLIB_LIBDMX_SOURCE = libdmx-$(XLIB_LIBDMX_VERSION).tar.bz2 +XLIB_LIBDMX_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBDMX_LICENSE = MIT +XLIB_LIBDMX_LICENSE_FILES = COPYING +XLIB_LIBDMX_INSTALL_STAGING = YES +XLIB_LIBDMX_DEPENDENCIES = xlib_libX11 xlib_libXext xproto_dmxproto +XLIB_LIBDMX_CONF_OPTS = --disable-malloc0returnsnull + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libfontenc/Config.in b/buildroot/package/x11r7/xlib_libfontenc/Config.in new file mode 100644 index 0000000..d25e96a --- /dev/null +++ b/buildroot/package/x11r7/xlib_libfontenc/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBFONTENC + bool "libfontenc" + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_ZLIB + help + X.Org fontenc library diff --git a/buildroot/package/x11r7/xlib_libfontenc/xlib_libfontenc.hash b/buildroot/package/x11r7/xlib_libfontenc/xlib_libfontenc.hash new file mode 100644 index 0000000..251a1d6 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libfontenc/xlib_libfontenc.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002589.html +sha256 70588930e6fc9542ff38e0884778fbc6e6febf21adbab92fd8f524fe60aefd21 libfontenc-1.1.3.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libfontenc/xlib_libfontenc.mk b/buildroot/package/x11r7/xlib_libfontenc/xlib_libfontenc.mk new file mode 100644 index 0000000..e2c4c6e --- /dev/null +++ b/buildroot/package/x11r7/xlib_libfontenc/xlib_libfontenc.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xlib_libfontenc +# +################################################################################ + +XLIB_LIBFONTENC_VERSION = 1.1.3 +XLIB_LIBFONTENC_SOURCE = libfontenc-$(XLIB_LIBFONTENC_VERSION).tar.bz2 +XLIB_LIBFONTENC_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBFONTENC_LICENSE = MIT +XLIB_LIBFONTENC_LICENSE_FILES = COPYING +XLIB_LIBFONTENC_INSTALL_STAGING = YES +XLIB_LIBFONTENC_DEPENDENCIES = zlib xproto_xproto +HOST_XLIB_LIBFONTENC_DEPENDENCIES = host-zlib host-xproto_xproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libxkbfile/Config.in b/buildroot/package/x11r7/xlib_libxkbfile/Config.in new file mode 100644 index 0000000..ccd35fa --- /dev/null +++ b/buildroot/package/x11r7/xlib_libxkbfile/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXKBFILE + bool "libxkbfile" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XPROTO_KBPROTO + help + X.Org xkbfile library diff --git a/buildroot/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.hash b/buildroot/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.hash new file mode 100644 index 0000000..759b2ae --- /dev/null +++ b/buildroot/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002592.html +sha256 51817e0530961975d9513b773960b4edd275f7d5c72293d5a151ed4f42aeb16a libxkbfile-1.0.9.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.mk b/buildroot/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.mk new file mode 100644 index 0000000..c69d731 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libxkbfile/xlib_libxkbfile.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xlib_libxkbfile +# +################################################################################ + +XLIB_LIBXKBFILE_VERSION = 1.0.9 +XLIB_LIBXKBFILE_SOURCE = libxkbfile-$(XLIB_LIBXKBFILE_VERSION).tar.bz2 +XLIB_LIBXKBFILE_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXKBFILE_LICENSE = MIT +XLIB_LIBXKBFILE_LICENSE_FILES = COPYING +XLIB_LIBXKBFILE_INSTALL_STAGING = YES +XLIB_LIBXKBFILE_DEPENDENCIES = xlib_libX11 xproto_kbproto +HOST_XLIB_LIBXKBFILE_DEPENDENCIES = host-xlib_libX11 host-xproto_kbproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xlib_libxshmfence/Config.in b/buildroot/package/x11r7/xlib_libxshmfence/Config.in new file mode 100644 index 0000000..d4e87b3 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libxshmfence/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XLIB_LIBXSHMFENCE + bool "libxshmfence" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + select BR2_PACKAGE_XPROTO_XPROTO + help + X.Org shmfence library diff --git a/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash b/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash new file mode 100644 index 0000000..05eb071 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-January/002515.html +sha256 d21b2d1fd78c1efbe1f2c16dae1cb23f8fd231dcf891465b8debe636a9054b0c libxshmfence-1.2.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk b/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk new file mode 100644 index 0000000..3a2f326 --- /dev/null +++ b/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_libxshmfence +# +################################################################################ + +XLIB_LIBXSHMFENCE_VERSION = 1.2 +XLIB_LIBXSHMFENCE_SOURCE = libxshmfence-$(XLIB_LIBXSHMFENCE_VERSION).tar.bz2 +XLIB_LIBXSHMFENCE_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_LIBXSHMFENCE_LICENSE = MIT +XLIB_LIBXSHMFENCE_LICENSE_FILES = COPYING +XLIB_LIBXSHMFENCE_INSTALL_STAGING = YES +XLIB_LIBXSHMFENCE_DEPENDENCIES = host-pkgconf xproto_xproto + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xlib_xtrans/Config.in b/buildroot/package/x11r7/xlib_xtrans/Config.in new file mode 100644 index 0000000..7c8bae7 --- /dev/null +++ b/buildroot/package/x11r7/xlib_xtrans/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XLIB_XTRANS + bool "xtrans" + help + X.Org xtrans library diff --git a/buildroot/package/x11r7/xlib_xtrans/xlib_xtrans.hash b/buildroot/package/x11r7/xlib_xtrans/xlib_xtrans.hash new file mode 100644 index 0000000..26c69a0 --- /dev/null +++ b/buildroot/package/x11r7/xlib_xtrans/xlib_xtrans.hash @@ -0,0 +1,3 @@ +# From http://lists.x.org/archives/xorg-announce/2014-September/002481.html +sha1 2d3ae1839d841f568bc481c6116af7d2a9f9ba59 xtrans-1.3.5.tar.bz2 +sha256 adbd3b36932ce4c062cd10f57d78a156ba98d618bdb6f50664da327502bc8301 xtrans-1.3.5.tar.bz2 diff --git a/buildroot/package/x11r7/xlib_xtrans/xlib_xtrans.mk b/buildroot/package/x11r7/xlib_xtrans/xlib_xtrans.mk new file mode 100644 index 0000000..40f613c --- /dev/null +++ b/buildroot/package/x11r7/xlib_xtrans/xlib_xtrans.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xlib_xtrans +# +################################################################################ + +XLIB_XTRANS_VERSION = 1.3.5 +XLIB_XTRANS_SOURCE = xtrans-$(XLIB_XTRANS_VERSION).tar.bz2 +XLIB_XTRANS_SITE = http://xorg.freedesktop.org/releases/individual/lib +XLIB_XTRANS_LICENSE = MIT +XLIB_XTRANS_LICENSE_FILES = COPYING +XLIB_XTRANS_INSTALL_STAGING = YES + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_applewmproto/Config.in b/buildroot/package/x11r7/xproto_applewmproto/Config.in new file mode 100644 index 0000000..51a5fd5 --- /dev/null +++ b/buildroot/package/x11r7/xproto_applewmproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_APPLEWMPROTO + bool "applewmproto" + help + No description available diff --git a/buildroot/package/x11r7/xproto_applewmproto/xproto_applewmproto.hash b/buildroot/package/x11r7/xproto_applewmproto/xproto_applewmproto.hash new file mode 100644 index 0000000..695de3c --- /dev/null +++ b/buildroot/package/x11r7/xproto_applewmproto/xproto_applewmproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/1371 +md5 c1d50749c3ac5215a1a9425818e856c1 applewmproto-1.4.2.tar.bz2 +sha1 71dd2374e745a7db7ae0e94410e55ba721683d10 applewmproto-1.4.2.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_applewmproto/xproto_applewmproto.mk b/buildroot/package/x11r7/xproto_applewmproto/xproto_applewmproto.mk new file mode 100644 index 0000000..998d0aa --- /dev/null +++ b/buildroot/package/x11r7/xproto_applewmproto/xproto_applewmproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_applewmproto +# +################################################################################ + +XPROTO_APPLEWMPROTO_VERSION = 1.4.2 +XPROTO_APPLEWMPROTO_SOURCE = applewmproto-$(XPROTO_APPLEWMPROTO_VERSION).tar.bz2 +XPROTO_APPLEWMPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_APPLEWMPROTO_LICENSE = MIT +XPROTO_APPLEWMPROTO_LICENSE_FILES = COPYING +XPROTO_APPLEWMPROTO_INSTALL_STAGING = YES +XPROTO_APPLEWMPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_bigreqsproto/Config.in b/buildroot/package/x11r7/xproto_bigreqsproto/Config.in new file mode 100644 index 0000000..c431ef2 --- /dev/null +++ b/buildroot/package/x11r7/xproto_bigreqsproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_BIGREQSPROTO + bool "bigreqsproto" + help + X.Org BigReqs protocol headers diff --git a/buildroot/package/x11r7/xproto_bigreqsproto/xproto_bigreqsproto.hash b/buildroot/package/x11r7/xproto_bigreqsproto/xproto_bigreqsproto.hash new file mode 100644 index 0000000..7d70dca --- /dev/null +++ b/buildroot/package/x11r7/xproto_bigreqsproto/xproto_bigreqsproto.hash @@ -0,0 +1,2 @@ +# From http://www.x.org/archive/current/src/everything/CHECKSUMS +sha256 462116ab44e41d8121bfde947321950370b285a5316612b8fce8334d50751b1e bigreqsproto-1.1.2.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_bigreqsproto/xproto_bigreqsproto.mk b/buildroot/package/x11r7/xproto_bigreqsproto/xproto_bigreqsproto.mk new file mode 100644 index 0000000..bca5a3c --- /dev/null +++ b/buildroot/package/x11r7/xproto_bigreqsproto/xproto_bigreqsproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_bigreqsproto +# +################################################################################ + +XPROTO_BIGREQSPROTO_VERSION = 1.1.2 +XPROTO_BIGREQSPROTO_SOURCE = bigreqsproto-$(XPROTO_BIGREQSPROTO_VERSION).tar.bz2 +XPROTO_BIGREQSPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_BIGREQSPROTO_LICENSE = MIT +XPROTO_BIGREQSPROTO_LICENSE_FILES = COPYING +XPROTO_BIGREQSPROTO_INSTALL_STAGING = YES +XPROTO_BIGREQSPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_compositeproto/Config.in b/buildroot/package/x11r7/xproto_compositeproto/Config.in new file mode 100644 index 0000000..136900a --- /dev/null +++ b/buildroot/package/x11r7/xproto_compositeproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_COMPOSITEPROTO + bool "compositeproto" + help + X.Org Composite protocol headers diff --git a/buildroot/package/x11r7/xproto_compositeproto/xproto_compositeproto.hash b/buildroot/package/x11r7/xproto_compositeproto/xproto_compositeproto.hash new file mode 100644 index 0000000..c6ef73c --- /dev/null +++ b/buildroot/package/x11r7/xproto_compositeproto/xproto_compositeproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/1193 +md5 98482f65ba1e74a08bf5b056a4031ef0 compositeproto-0.4.2.tar.bz2 +sha1 aa7b5abcfd5bbfad7cb681ce89dc1d6e381e3044 compositeproto-0.4.2.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_compositeproto/xproto_compositeproto.mk b/buildroot/package/x11r7/xproto_compositeproto/xproto_compositeproto.mk new file mode 100644 index 0000000..2161358 --- /dev/null +++ b/buildroot/package/x11r7/xproto_compositeproto/xproto_compositeproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_compositeproto +# +################################################################################ + +XPROTO_COMPOSITEPROTO_VERSION = 0.4.2 +XPROTO_COMPOSITEPROTO_SOURCE = compositeproto-$(XPROTO_COMPOSITEPROTO_VERSION).tar.bz2 +XPROTO_COMPOSITEPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_COMPOSITEPROTO_LICENSE = MIT +XPROTO_COMPOSITEPROTO_LICENSE_FILES = COPYING +XPROTO_COMPOSITEPROTO_INSTALL_STAGING = YES +XPROTO_COMPOSITEPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_damageproto/Config.in b/buildroot/package/x11r7/xproto_damageproto/Config.in new file mode 100644 index 0000000..068ed2b --- /dev/null +++ b/buildroot/package/x11r7/xproto_damageproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_DAMAGEPROTO + bool "damageproto" + help + X.Org Damage protocol headers diff --git a/buildroot/package/x11r7/xproto_damageproto/xproto_damageproto.hash b/buildroot/package/x11r7/xproto_damageproto/xproto_damageproto.hash new file mode 100644 index 0000000..e5064b6 --- /dev/null +++ b/buildroot/package/x11r7/xproto_damageproto/xproto_damageproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/1194 +md5 998e5904764b82642cc63d97b4ba9e95 damageproto-1.2.1.tar.bz2 +sha1 bd0f0f4dc8f37eaabd9279d10fe2889710507358 damageproto-1.2.1.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_damageproto/xproto_damageproto.mk b/buildroot/package/x11r7/xproto_damageproto/xproto_damageproto.mk new file mode 100644 index 0000000..0311ea4 --- /dev/null +++ b/buildroot/package/x11r7/xproto_damageproto/xproto_damageproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_damageproto +# +################################################################################ + +XPROTO_DAMAGEPROTO_VERSION = 1.2.1 +XPROTO_DAMAGEPROTO_SOURCE = damageproto-$(XPROTO_DAMAGEPROTO_VERSION).tar.bz2 +XPROTO_DAMAGEPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_DAMAGEPROTO_LICENSE = MIT +XPROTO_DAMAGEPROTO_LICENSE_FILES = COPYING +XPROTO_DAMAGEPROTO_INSTALL_STAGING = YES +XPROTO_DAMAGEPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_dmxproto/Config.in b/buildroot/package/x11r7/xproto_dmxproto/Config.in new file mode 100644 index 0000000..dc048b1 --- /dev/null +++ b/buildroot/package/x11r7/xproto_dmxproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_DMXPROTO + bool "dmxproto" + help + X.Org DMX protocol headers diff --git a/buildroot/package/x11r7/xproto_dmxproto/xproto_dmxproto.hash b/buildroot/package/x11r7/xproto_dmxproto/xproto_dmxproto.hash new file mode 100644 index 0000000..041f580 --- /dev/null +++ b/buildroot/package/x11r7/xproto_dmxproto/xproto_dmxproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/1306 +md5 4ee175bbd44d05c34d43bb129be5098a dmxproto-2.3.1.tar.bz2 +sha1 3b8b273b8ef3d8dbab998df9ec1dddf99edf4d91 dmxproto-2.3.1.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_dmxproto/xproto_dmxproto.mk b/buildroot/package/x11r7/xproto_dmxproto/xproto_dmxproto.mk new file mode 100644 index 0000000..4cc795c --- /dev/null +++ b/buildroot/package/x11r7/xproto_dmxproto/xproto_dmxproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_dmxproto +# +################################################################################ + +XPROTO_DMXPROTO_VERSION = 2.3.1 +XPROTO_DMXPROTO_SOURCE = dmxproto-$(XPROTO_DMXPROTO_VERSION).tar.bz2 +XPROTO_DMXPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_DMXPROTO_LICENSE = MIT +XPROTO_DMXPROTO_LICENSE_FILES = COPYING +XPROTO_DMXPROTO_INSTALL_STAGING = YES +XPROTO_DMXPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_dri2proto/Config.in b/buildroot/package/x11r7/xproto_dri2proto/Config.in new file mode 100644 index 0000000..3fe5aa1 --- /dev/null +++ b/buildroot/package/x11r7/xproto_dri2proto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_DRI2PROTO + bool "dri2proto" + help + X.Org DRI2 protocol headers diff --git a/buildroot/package/x11r7/xproto_dri2proto/xproto_dri2proto.hash b/buildroot/package/x11r7/xproto_dri2proto/xproto_dri2proto.hash new file mode 100644 index 0000000..e3ea0bc --- /dev/null +++ b/buildroot/package/x11r7/xproto_dri2proto/xproto_dri2proto.hash @@ -0,0 +1,2 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/1731 +sha256 f9b55476def44fc7c459b2537d17dbc731e36ed5d416af7ca0b1e2e676f8aa04 dri2proto-2.8.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_dri2proto/xproto_dri2proto.mk b/buildroot/package/x11r7/xproto_dri2proto/xproto_dri2proto.mk new file mode 100644 index 0000000..e4ed7d8 --- /dev/null +++ b/buildroot/package/x11r7/xproto_dri2proto/xproto_dri2proto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_dri2proto +# +################################################################################ + +XPROTO_DRI2PROTO_VERSION = 2.8 +XPROTO_DRI2PROTO_SOURCE = dri2proto-$(XPROTO_DRI2PROTO_VERSION).tar.bz2 +XPROTO_DRI2PROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_DRI2PROTO_LICENSE = MIT +XPROTO_DRI2PROTO_LICENSE_FILES = COPYING +XPROTO_DRI2PROTO_INSTALL_STAGING = YES +XPROTO_DRI2PROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_dri3proto/Config.in b/buildroot/package/x11r7/xproto_dri3proto/Config.in new file mode 100644 index 0000000..eead7d4 --- /dev/null +++ b/buildroot/package/x11r7/xproto_dri3proto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_DRI3PROTO + bool "dri3proto" + help + X.Org DRI3 protocol headers diff --git a/buildroot/package/x11r7/xproto_dri3proto/xproto_dri3proto.hash b/buildroot/package/x11r7/xproto_dri3proto/xproto_dri3proto.hash new file mode 100644 index 0000000..6e1da4d --- /dev/null +++ b/buildroot/package/x11r7/xproto_dri3proto/xproto_dri3proto.hash @@ -0,0 +1,2 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/2079 +sha256 01be49d70200518b9a6b297131f6cc71f4ea2de17436896af153226a774fc074 dri3proto-1.0.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_dri3proto/xproto_dri3proto.mk b/buildroot/package/x11r7/xproto_dri3proto/xproto_dri3proto.mk new file mode 100644 index 0000000..bdbff74 --- /dev/null +++ b/buildroot/package/x11r7/xproto_dri3proto/xproto_dri3proto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_dri3proto +# +################################################################################ + +XPROTO_DRI3PROTO_VERSION = 1.0 +XPROTO_DRI3PROTO_SOURCE = dri3proto-$(XPROTO_DRI3PROTO_VERSION).tar.bz2 +XPROTO_DRI3PROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_DRI3PROTO_LICENSE = MIT +XPROTO_DRI3PROTO_INSTALL_STAGING = YES +# this package does not contain any binary files +XPROTO_DRI3PROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_fixesproto/Config.in b/buildroot/package/x11r7/xproto_fixesproto/Config.in new file mode 100644 index 0000000..d419fa1 --- /dev/null +++ b/buildroot/package/x11r7/xproto_fixesproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_FIXESPROTO + bool "fixesproto" + help + X.Org Fixes protocol headers diff --git a/buildroot/package/x11r7/xproto_fixesproto/xproto_fixesproto.hash b/buildroot/package/x11r7/xproto_fixesproto/xproto_fixesproto.hash new file mode 100644 index 0000000..d19f392 --- /dev/null +++ b/buildroot/package/x11r7/xproto_fixesproto/xproto_fixesproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/1352 +md5 e7431ab84d37b2678af71e29355e101d fixesproto-5.0.tar.bz2 +sha1 ab605af5da8c98c0c2f8b2c578fed7c864ee996a fixesproto-5.0.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_fixesproto/xproto_fixesproto.mk b/buildroot/package/x11r7/xproto_fixesproto/xproto_fixesproto.mk new file mode 100644 index 0000000..55212b2 --- /dev/null +++ b/buildroot/package/x11r7/xproto_fixesproto/xproto_fixesproto.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xproto_fixesproto +# +################################################################################ + +XPROTO_FIXESPROTO_VERSION = 5.0 +XPROTO_FIXESPROTO_SOURCE = fixesproto-$(XPROTO_FIXESPROTO_VERSION).tar.bz2 +XPROTO_FIXESPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_FIXESPROTO_LICENSE = MIT +XPROTO_FIXESPROTO_LICENSE_FILES = COPYING +XPROTO_FIXESPROTO_INSTALL_STAGING = YES +XPROTO_FIXESPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_fontcacheproto/Config.in b/buildroot/package/x11r7/xproto_fontcacheproto/Config.in new file mode 100644 index 0000000..daa6c7f --- /dev/null +++ b/buildroot/package/x11r7/xproto_fontcacheproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_FONTCACHEPROTO + bool "fontcacheproto" + help + X.Org Fontcache protocol headers diff --git a/buildroot/package/x11r7/xproto_fontcacheproto/xproto_fontcacheproto.hash b/buildroot/package/x11r7/xproto_fontcacheproto/xproto_fontcacheproto.hash new file mode 100644 index 0000000..7363e22 --- /dev/null +++ b/buildroot/package/x11r7/xproto_fontcacheproto/xproto_fontcacheproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/834 +md5 a8a50e5e995bfacb0359575faf7f6906 fontcacheproto-0.1.3.tar.bz2 +sha1 07f6ab3e1e1efe71c51f50e95851d93d2a1de773 fontcacheproto-0.1.3.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_fontcacheproto/xproto_fontcacheproto.mk b/buildroot/package/x11r7/xproto_fontcacheproto/xproto_fontcacheproto.mk new file mode 100644 index 0000000..0cb205a --- /dev/null +++ b/buildroot/package/x11r7/xproto_fontcacheproto/xproto_fontcacheproto.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xproto_fontcacheproto +# +################################################################################ + +XPROTO_FONTCACHEPROTO_VERSION = 0.1.3 +XPROTO_FONTCACHEPROTO_SOURCE = fontcacheproto-$(XPROTO_FONTCACHEPROTO_VERSION).tar.bz2 +XPROTO_FONTCACHEPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_FONTCACHEPROTO_LICENSE = MIT +XPROTO_FONTCACHEPROTO_LICENSE_FILES = COPYING +XPROTO_FONTCACHEPROTO_INSTALL_STAGING = YES +XPROTO_FONTCACHEPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_fontsproto/Config.in b/buildroot/package/x11r7/xproto_fontsproto/Config.in new file mode 100644 index 0000000..b00220c --- /dev/null +++ b/buildroot/package/x11r7/xproto_fontsproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_FONTSPROTO + bool "fontsproto" + help + X.Org Fonts protocol headers diff --git a/buildroot/package/x11r7/xproto_fontsproto/xproto_fontsproto.hash b/buildroot/package/x11r7/xproto_fontsproto/xproto_fontsproto.hash new file mode 100644 index 0000000..6a21058 --- /dev/null +++ b/buildroot/package/x11r7/xproto_fontsproto/xproto_fontsproto.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/archives/xorg/2014-April/056540.html +sha256 259046b0dd9130825c4a4c479ba3591d6d0f17a33f54e294b56478729a6e5ab8 fontsproto-2.1.3.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_fontsproto/xproto_fontsproto.mk b/buildroot/package/x11r7/xproto_fontsproto/xproto_fontsproto.mk new file mode 100644 index 0000000..b4e6d6a --- /dev/null +++ b/buildroot/package/x11r7/xproto_fontsproto/xproto_fontsproto.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xproto_fontsproto +# +################################################################################ + +XPROTO_FONTSPROTO_VERSION = 2.1.3 +XPROTO_FONTSPROTO_SOURCE = fontsproto-$(XPROTO_FONTSPROTO_VERSION).tar.bz2 +XPROTO_FONTSPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_FONTSPROTO_LICENSE = MIT +XPROTO_FONTSPROTO_LICENSE_FILES = COPYING +XPROTO_FONTSPROTO_INSTALL_STAGING = YES +XPROTO_FONTSPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_glproto/Config.in b/buildroot/package/x11r7/xproto_glproto/Config.in new file mode 100644 index 0000000..28ceb9c --- /dev/null +++ b/buildroot/package/x11r7/xproto_glproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_GLPROTO + bool "glproto" + help + X.Org GL protocol headers diff --git a/buildroot/package/x11r7/xproto_glproto/xproto_glproto.hash b/buildroot/package/x11r7/xproto_glproto/xproto_glproto.hash new file mode 100644 index 0000000..fce6a22 --- /dev/null +++ b/buildroot/package/x11r7/xproto_glproto/xproto_glproto.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 adaa94bded310a2bfcbb9deb4d751d965fcfe6fb3a2f6d242e2df2d6589dbe40 glproto-1.4.17.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_glproto/xproto_glproto.mk b/buildroot/package/x11r7/xproto_glproto/xproto_glproto.mk new file mode 100644 index 0000000..ccfc6de --- /dev/null +++ b/buildroot/package/x11r7/xproto_glproto/xproto_glproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_glproto +# +################################################################################ + +XPROTO_GLPROTO_VERSION = 1.4.17 +XPROTO_GLPROTO_SOURCE = glproto-$(XPROTO_GLPROTO_VERSION).tar.bz2 +XPROTO_GLPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_GLPROTO_LICENSE = MIT +XPROTO_GLPROTO_LICENSE_FILES = COPYING +XPROTO_GLPROTO_INSTALL_STAGING = YES +XPROTO_GLPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_inputproto/Config.in b/buildroot/package/x11r7/xproto_inputproto/Config.in new file mode 100644 index 0000000..fcccb26 --- /dev/null +++ b/buildroot/package/x11r7/xproto_inputproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_INPUTPROTO + bool "inputproto" + help + X.Org Input protocol headers diff --git a/buildroot/package/x11r7/xproto_inputproto/xproto_inputproto.hash b/buildroot/package/x11r7/xproto_inputproto/xproto_inputproto.hash new file mode 100644 index 0000000..4ecdddc --- /dev/null +++ b/buildroot/package/x11r7/xproto_inputproto/xproto_inputproto.hash @@ -0,0 +1,2 @@ +# From https://lists.freedesktop.org/archives/xorg-announce/2016-April/002682.html +sha256 893a6af55733262058a27b38eeb1edc733669f01d404e8581b167f03c03ef31d inputproto-2.3.2.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_inputproto/xproto_inputproto.mk b/buildroot/package/x11r7/xproto_inputproto/xproto_inputproto.mk new file mode 100644 index 0000000..20169b5 --- /dev/null +++ b/buildroot/package/x11r7/xproto_inputproto/xproto_inputproto.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xproto_inputproto +# +################################################################################ + +XPROTO_INPUTPROTO_VERSION = 2.3.2 +XPROTO_INPUTPROTO_SOURCE = inputproto-$(XPROTO_INPUTPROTO_VERSION).tar.bz2 +XPROTO_INPUTPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_INPUTPROTO_LICENSE = MIT +XPROTO_INPUTPROTO_LICENSE_FILES = COPYING +XPROTO_INPUTPROTO_INSTALL_STAGING = YES +XPROTO_INPUTPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_kbproto/Config.in b/buildroot/package/x11r7/xproto_kbproto/Config.in new file mode 100644 index 0000000..ce568d7 --- /dev/null +++ b/buildroot/package/x11r7/xproto_kbproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_KBPROTO + bool "kbproto" + help + X.Org KB protocol headers diff --git a/buildroot/package/x11r7/xproto_kbproto/xproto_kbproto.hash b/buildroot/package/x11r7/xproto_kbproto/xproto_kbproto.hash new file mode 100644 index 0000000..c98e595 --- /dev/null +++ b/buildroot/package/x11r7/xproto_kbproto/xproto_kbproto.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2015-April/002595.html +sha256 f882210b76376e3fa006b11dbd890e56ec0942bc56e65d1249ff4af86f90b857 kbproto-1.0.7.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_kbproto/xproto_kbproto.mk b/buildroot/package/x11r7/xproto_kbproto/xproto_kbproto.mk new file mode 100644 index 0000000..b6c818f --- /dev/null +++ b/buildroot/package/x11r7/xproto_kbproto/xproto_kbproto.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xproto_kbproto +# +################################################################################ + +XPROTO_KBPROTO_VERSION = 1.0.7 +XPROTO_KBPROTO_SOURCE = kbproto-$(XPROTO_KBPROTO_VERSION).tar.bz2 +XPROTO_KBPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_KBPROTO_LICENSE = MIT +XPROTO_KBPROTO_LICENSE_FILES = COPYING +XPROTO_KBPROTO_INSTALL_STAGING = YES +XPROTO_KBPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_presentproto/Config.in b/buildroot/package/x11r7/xproto_presentproto/Config.in new file mode 100644 index 0000000..586008d --- /dev/null +++ b/buildroot/package/x11r7/xproto_presentproto/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_XPROTO_PRESENTPROTO + bool "presentproto" + select BR2_PACKAGE_XUTIL_UTIL_MACROS + help + X.Org Present extension headers diff --git a/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.hash b/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.hash new file mode 100644 index 0000000..aa45d91 --- /dev/null +++ b/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002770.html +sha256 f69b23a8869f78a5898aaf53938b829c8165e597cda34f06024d43ee1e6d26b9 presentproto-1.1.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.mk b/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.mk new file mode 100644 index 0000000..0097b9c --- /dev/null +++ b/buildroot/package/x11r7/xproto_presentproto/xproto_presentproto.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xproto_presentproto +# +################################################################################ + +XPROTO_PRESENTPROTO_VERSION = 1.1 +XPROTO_PRESENTPROTO_SOURCE = presentproto-$(XPROTO_PRESENTPROTO_VERSION).tar.bz2 +XPROTO_PRESENTPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_PRESENTPROTO_LICENSE = MIT +XPROTO_PRESENTPROTO_LICENSE_FILES = presentproto.h +XPROTO_PRESENTPROTO_DEPENDENCIES = host-pkgconf xutil_util-macros +XPROTO_PRESENTPROTO_INSTALL_STAGING = YES +XPROTO_PRESENTPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_randrproto/Config.in b/buildroot/package/x11r7/xproto_randrproto/Config.in new file mode 100644 index 0000000..097ec8f --- /dev/null +++ b/buildroot/package/x11r7/xproto_randrproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_RANDRPROTO + bool "randrproto" + help + X.Org Randr protocol headers diff --git a/buildroot/package/x11r7/xproto_randrproto/xproto_randrproto.hash b/buildroot/package/x11r7/xproto_randrproto/xproto_randrproto.hash new file mode 100644 index 0000000..c71df7f --- /dev/null +++ b/buildroot/package/x11r7/xproto_randrproto/xproto_randrproto.hash @@ -0,0 +1,3 @@ +# From http://lists.x.org/archives/xorg-announce/2015-May/002605.html +sha1 bc420745dc4af011988e9dcabdadf8829cbc2374 randrproto-1.5.0.tar.bz2 +sha256 4c675533e79cd730997d232c8894b6692174dce58d3e207021b8f860be498468 randrproto-1.5.0.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_randrproto/xproto_randrproto.mk b/buildroot/package/x11r7/xproto_randrproto/xproto_randrproto.mk new file mode 100644 index 0000000..f6c4878 --- /dev/null +++ b/buildroot/package/x11r7/xproto_randrproto/xproto_randrproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_randrproto +# +################################################################################ + +XPROTO_RANDRPROTO_VERSION = 1.5.0 +XPROTO_RANDRPROTO_SOURCE = randrproto-$(XPROTO_RANDRPROTO_VERSION).tar.bz2 +XPROTO_RANDRPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_RANDRPROTO_LICENSE = MIT +XPROTO_RANDRPROTO_LICENSE_FILES = COPYING +XPROTO_RANDRPROTO_INSTALL_STAGING = YES +XPROTO_RANDRPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_recordproto/Config.in b/buildroot/package/x11r7/xproto_recordproto/Config.in new file mode 100644 index 0000000..9fd5b88 --- /dev/null +++ b/buildroot/package/x11r7/xproto_recordproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_RECORDPROTO + bool "recordproto" + help + X.Org Record protocol headers diff --git a/buildroot/package/x11r7/xproto_recordproto/xproto_recordproto.hash b/buildroot/package/x11r7/xproto_recordproto/xproto_recordproto.hash new file mode 100644 index 0000000..bc03f8c --- /dev/null +++ b/buildroot/package/x11r7/xproto_recordproto/xproto_recordproto.hash @@ -0,0 +1,2 @@ +# From http://www.x.org/archive/current/src/everything/CHECKSUMS +sha256 a777548d2e92aa259f1528de3c4a36d15e07a4650d0976573a8e2ff5437e7370 recordproto-1.14.2.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_recordproto/xproto_recordproto.mk b/buildroot/package/x11r7/xproto_recordproto/xproto_recordproto.mk new file mode 100644 index 0000000..2d2ccea --- /dev/null +++ b/buildroot/package/x11r7/xproto_recordproto/xproto_recordproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_recordproto +# +################################################################################ + +XPROTO_RECORDPROTO_VERSION = 1.14.2 +XPROTO_RECORDPROTO_SOURCE = recordproto-$(XPROTO_RECORDPROTO_VERSION).tar.bz2 +XPROTO_RECORDPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_RECORDPROTO_LICENSE = MIT +XPROTO_RECORDPROTO_LICENSE_FILES = COPYING +XPROTO_RECORDPROTO_INSTALL_STAGING = YES +XPROTO_RECORDPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_renderproto/Config.in b/buildroot/package/x11r7/xproto_renderproto/Config.in new file mode 100644 index 0000000..5b5806f --- /dev/null +++ b/buildroot/package/x11r7/xproto_renderproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_RENDERPROTO + bool "renderproto" + help + X.Org Render protocol headers diff --git a/buildroot/package/x11r7/xproto_renderproto/xproto_renderproto.hash b/buildroot/package/x11r7/xproto_renderproto/xproto_renderproto.hash new file mode 100644 index 0000000..92763da --- /dev/null +++ b/buildroot/package/x11r7/xproto_renderproto/xproto_renderproto.hash @@ -0,0 +1,2 @@ +# From http://www.x.org/archive/current/src/everything/CHECKSUMS +sha256 06735a5b92b20759204e4751ecd6064a2ad8a6246bb65b3078b862a00def2537 renderproto-0.11.1.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_renderproto/xproto_renderproto.mk b/buildroot/package/x11r7/xproto_renderproto/xproto_renderproto.mk new file mode 100644 index 0000000..41a8445 --- /dev/null +++ b/buildroot/package/x11r7/xproto_renderproto/xproto_renderproto.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xproto_renderproto +# +################################################################################ + +XPROTO_RENDERPROTO_VERSION = 0.11.1 +XPROTO_RENDERPROTO_SOURCE = renderproto-$(XPROTO_RENDERPROTO_VERSION).tar.bz2 +XPROTO_RENDERPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_RENDERPROTO_LICENSE = MIT +XPROTO_RENDERPROTO_LICENSE_FILES = COPYING +XPROTO_RENDERPROTO_INSTALL_STAGING = YES +XPROTO_RENDERPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_resourceproto/Config.in b/buildroot/package/x11r7/xproto_resourceproto/Config.in new file mode 100644 index 0000000..4aec708 --- /dev/null +++ b/buildroot/package/x11r7/xproto_resourceproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_RESOURCEPROTO + bool "resourceproto" + help + X.Org Resource protocol headers diff --git a/buildroot/package/x11r7/xproto_resourceproto/xproto_resourceproto.hash b/buildroot/package/x11r7/xproto_resourceproto/xproto_resourceproto.hash new file mode 100644 index 0000000..5ceb1c0 --- /dev/null +++ b/buildroot/package/x11r7/xproto_resourceproto/xproto_resourceproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/1404 +md5 cfdb57dae221b71b2703f8e2980eaaf4 resourceproto-1.2.0.tar.bz2 +sha1 9ff9bb9243b0474330959dc3853973523c9dd9ce resourceproto-1.2.0.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_resourceproto/xproto_resourceproto.mk b/buildroot/package/x11r7/xproto_resourceproto/xproto_resourceproto.mk new file mode 100644 index 0000000..960ca13 --- /dev/null +++ b/buildroot/package/x11r7/xproto_resourceproto/xproto_resourceproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_resourceproto +# +################################################################################ + +XPROTO_RESOURCEPROTO_VERSION = 1.2.0 +XPROTO_RESOURCEPROTO_SOURCE = resourceproto-$(XPROTO_RESOURCEPROTO_VERSION).tar.bz2 +XPROTO_RESOURCEPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_RESOURCEPROTO_LICENSE = MIT +XPROTO_RESOURCEPROTO_LICENSE_FILES = COPYING +XPROTO_RESOURCEPROTO_INSTALL_STAGING = YES +XPROTO_RESOURCEPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_scrnsaverproto/Config.in b/buildroot/package/x11r7/xproto_scrnsaverproto/Config.in new file mode 100644 index 0000000..83176a0 --- /dev/null +++ b/buildroot/package/x11r7/xproto_scrnsaverproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_SCRNSAVERPROTO + bool "scrnsaverproto" + help + X.Org ScrnSaver protocol headers diff --git a/buildroot/package/x11r7/xproto_scrnsaverproto/xproto_scrnsaverproto.hash b/buildroot/package/x11r7/xproto_scrnsaverproto/xproto_scrnsaverproto.hash new file mode 100644 index 0000000..36c1036 --- /dev/null +++ b/buildroot/package/x11r7/xproto_scrnsaverproto/xproto_scrnsaverproto.hash @@ -0,0 +1,2 @@ +# From http://www.x.org/archive/current/src/everything/CHECKSUMS +sha256 8bb70a8da164930cceaeb4c74180291660533ad3cc45377b30a795d1b85bcd65 scrnsaverproto-1.2.2.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_scrnsaverproto/xproto_scrnsaverproto.mk b/buildroot/package/x11r7/xproto_scrnsaverproto/xproto_scrnsaverproto.mk new file mode 100644 index 0000000..57047cf --- /dev/null +++ b/buildroot/package/x11r7/xproto_scrnsaverproto/xproto_scrnsaverproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_scrnsaverproto +# +################################################################################ + +XPROTO_SCRNSAVERPROTO_VERSION = 1.2.2 +XPROTO_SCRNSAVERPROTO_SOURCE = scrnsaverproto-$(XPROTO_SCRNSAVERPROTO_VERSION).tar.bz2 +XPROTO_SCRNSAVERPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_SCRNSAVERPROTO_LICENSE = MIT +XPROTO_SCRNSAVERPROTO_LICENSE_FILES = COPYING +XPROTO_SCRNSAVERPROTO_INSTALL_STAGING = YES +XPROTO_SCRNSAVERPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_videoproto/Config.in b/buildroot/package/x11r7/xproto_videoproto/Config.in new file mode 100644 index 0000000..271c78f --- /dev/null +++ b/buildroot/package/x11r7/xproto_videoproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_VIDEOPROTO + bool "videoproto" + help + X.Org Video protocol headers diff --git a/buildroot/package/x11r7/xproto_videoproto/xproto_videoproto.hash b/buildroot/package/x11r7/xproto_videoproto/xproto_videoproto.hash new file mode 100644 index 0000000..471a0a3 --- /dev/null +++ b/buildroot/package/x11r7/xproto_videoproto/xproto_videoproto.hash @@ -0,0 +1,2 @@ +# From https://lists.freedesktop.org/archives/xorg-announce/2016-March/002680.html +sha256 c7803889fd08e6fcaf7b68cc394fb038b2325d1f315e571a6954577e07cca702 videoproto-2.3.3.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_videoproto/xproto_videoproto.mk b/buildroot/package/x11r7/xproto_videoproto/xproto_videoproto.mk new file mode 100644 index 0000000..896398f --- /dev/null +++ b/buildroot/package/x11r7/xproto_videoproto/xproto_videoproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_videoproto +# +################################################################################ + +XPROTO_VIDEOPROTO_VERSION = 2.3.3 +XPROTO_VIDEOPROTO_SOURCE = videoproto-$(XPROTO_VIDEOPROTO_VERSION).tar.bz2 +XPROTO_VIDEOPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_VIDEOPROTO_LICENSE = MIT +XPROTO_VIDEOPROTO_LICENSE_FILES = COPYING +XPROTO_VIDEOPROTO_INSTALL_STAGING = YES +XPROTO_VIDEOPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_windowswmproto/Config.in b/buildroot/package/x11r7/xproto_windowswmproto/Config.in new file mode 100644 index 0000000..d1a36ac --- /dev/null +++ b/buildroot/package/x11r7/xproto_windowswmproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_WINDOWSWMPROTO + bool "windowswmproto" + help + No description available diff --git a/buildroot/package/x11r7/xproto_windowswmproto/xproto_windowswmproto.hash b/buildroot/package/x11r7/xproto_windowswmproto/xproto_windowswmproto.hash new file mode 100644 index 0000000..eb96c5f --- /dev/null +++ b/buildroot/package/x11r7/xproto_windowswmproto/xproto_windowswmproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/835 +md5 e74b2ff3172a6117f2a62b655ef99064 windowswmproto-1.0.4.tar.bz2 +sha1 1c9b522c66325f08bb989700b4b31911b6ae60ae windowswmproto-1.0.4.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_windowswmproto/xproto_windowswmproto.mk b/buildroot/package/x11r7/xproto_windowswmproto/xproto_windowswmproto.mk new file mode 100644 index 0000000..067bccf --- /dev/null +++ b/buildroot/package/x11r7/xproto_windowswmproto/xproto_windowswmproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_windowswmproto +# +################################################################################ + +XPROTO_WINDOWSWMPROTO_VERSION = 1.0.4 +XPROTO_WINDOWSWMPROTO_SOURCE = windowswmproto-$(XPROTO_WINDOWSWMPROTO_VERSION).tar.bz2 +XPROTO_WINDOWSWMPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_WINDOWSWMPROTO_LICENSE = MIT +XPROTO_WINDOWSWMPROTO_LICENSE_FILES = COPYING +XPROTO_WINDOWSWMPROTO_INSTALL_STAGING = YES +XPROTO_WINDOWSWMPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_xcmiscproto/Config.in b/buildroot/package/x11r7/xproto_xcmiscproto/Config.in new file mode 100644 index 0000000..f7ba153 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xcmiscproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_XCMISCPROTO + bool "xcmiscproto" + help + X.Org XCMisc protocol headers diff --git a/buildroot/package/x11r7/xproto_xcmiscproto/xproto_xcmiscproto.hash b/buildroot/package/x11r7/xproto_xcmiscproto/xproto_xcmiscproto.hash new file mode 100644 index 0000000..08eb58b --- /dev/null +++ b/buildroot/package/x11r7/xproto_xcmiscproto/xproto_xcmiscproto.hash @@ -0,0 +1,2 @@ +# From http://www.x.org/archive/current/src/everything/CHECKSUMS +sha256 b13236869372256c36db79ae39d54214172677fb79e9cdc555dceec80bd9d2df xcmiscproto-1.2.2.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_xcmiscproto/xproto_xcmiscproto.mk b/buildroot/package/x11r7/xproto_xcmiscproto/xproto_xcmiscproto.mk new file mode 100644 index 0000000..3bef2e9 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xcmiscproto/xproto_xcmiscproto.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xproto_xcmiscproto +# +################################################################################ + +XPROTO_XCMISCPROTO_VERSION = 1.2.2 +XPROTO_XCMISCPROTO_SOURCE = xcmiscproto-$(XPROTO_XCMISCPROTO_VERSION).tar.bz2 +XPROTO_XCMISCPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_XCMISCPROTO_LICENSE = MIT +XPROTO_XCMISCPROTO_LICENSE_FILES = COPYING +XPROTO_XCMISCPROTO_INSTALL_STAGING = YES +XPROTO_XCMISCPROTO_CONF_OPTS = --disable-specs +HOST_XPROTO_XCMISCPROTO_CONF_OPTS = --disable-specs + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_xextproto/Config.in b/buildroot/package/x11r7/xproto_xextproto/Config.in new file mode 100644 index 0000000..d80d76c --- /dev/null +++ b/buildroot/package/x11r7/xproto_xextproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_XEXTPROTO + bool "xextproto" + help + X.Org XExt protocol headers diff --git a/buildroot/package/x11r7/xproto_xextproto/xproto_xextproto.hash b/buildroot/package/x11r7/xproto_xextproto/xproto_xextproto.hash new file mode 100644 index 0000000..258c4ec --- /dev/null +++ b/buildroot/package/x11r7/xproto_xextproto/xproto_xextproto.hash @@ -0,0 +1,2 @@ +# From http://lists.freedesktop.org/pipermail/xorg/2013-December/056256.html +sha256 f3f4b23ac8db9c3a9e0d8edb591713f3d70ef9c3b175970dd8823dfc92aa5bb0 xextproto-7.3.0.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_xextproto/xproto_xextproto.mk b/buildroot/package/x11r7/xproto_xextproto/xproto_xextproto.mk new file mode 100644 index 0000000..c17dd93 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xextproto/xproto_xextproto.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xproto_xextproto +# +################################################################################ + +XPROTO_XEXTPROTO_VERSION = 7.3.0 +XPROTO_XEXTPROTO_SOURCE = xextproto-$(XPROTO_XEXTPROTO_VERSION).tar.bz2 +XPROTO_XEXTPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_XEXTPROTO_LICENSE = MIT +XPROTO_XEXTPROTO_LICENSE_FILES = COPYING +XPROTO_XEXTPROTO_INSTALL_STAGING = YES +XPROTO_XEXTPROTO_CONF_OPTS = --disable-specs +HOST_XPROTO_XEXTPROTO_CONF_OPTS = --disable-specs + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_xf86bigfontproto/Config.in b/buildroot/package/x11r7/xproto_xf86bigfontproto/Config.in new file mode 100644 index 0000000..7af30d0 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86bigfontproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO + bool "xf86bigfontproto" + help + X.Org XF86BigFont protocol headers diff --git a/buildroot/package/x11r7/xproto_xf86bigfontproto/xproto_xf86bigfontproto.hash b/buildroot/package/x11r7/xproto_xf86bigfontproto/xproto_xf86bigfontproto.hash new file mode 100644 index 0000000..b0ab8ae --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86bigfontproto/xproto_xf86bigfontproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/734 +md5 120e226ede5a4687b25dd357cc9b8efe xf86bigfontproto-1.2.0.tar.bz2 +sha1 312a2ea708b257520c1af4393b69d73a393a478f xf86bigfontproto-1.2.0.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_xf86bigfontproto/xproto_xf86bigfontproto.mk b/buildroot/package/x11r7/xproto_xf86bigfontproto/xproto_xf86bigfontproto.mk new file mode 100644 index 0000000..f88f5ec --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86bigfontproto/xproto_xf86bigfontproto.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xproto_xf86bigfontproto +# +################################################################################ + +XPROTO_XF86BIGFONTPROTO_VERSION = 1.2.0 +XPROTO_XF86BIGFONTPROTO_SOURCE = xf86bigfontproto-$(XPROTO_XF86BIGFONTPROTO_VERSION).tar.bz2 +XPROTO_XF86BIGFONTPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_XF86BIGFONTPROTO_LICENSE = MIT +XPROTO_XF86BIGFONTPROTO_LICENSE_FILES = COPYING +XPROTO_XF86BIGFONTPROTO_INSTALL_STAGING = YES +XPROTO_XF86BIGFONTPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_xf86dgaproto/Config.in b/buildroot/package/x11r7/xproto_xf86dgaproto/Config.in new file mode 100644 index 0000000..7561b8a --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86dgaproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_XF86DGAPROTO + bool "xf86dgaproto" + help + X.Org XF86DGA protocol headers diff --git a/buildroot/package/x11r7/xproto_xf86dgaproto/xproto_xf86dgaproto.hash b/buildroot/package/x11r7/xproto_xf86dgaproto/xproto_xf86dgaproto.hash new file mode 100644 index 0000000..36284fc --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86dgaproto/xproto_xf86dgaproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/817 +md5 a036dc2fcbf052ec10621fd48b68dbb1 xf86dgaproto-2.1.tar.bz2 +sha1 97a06120e7195c968875e8ba42e82c90ab54948b xf86dgaproto-2.1.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_xf86dgaproto/xproto_xf86dgaproto.mk b/buildroot/package/x11r7/xproto_xf86dgaproto/xproto_xf86dgaproto.mk new file mode 100644 index 0000000..d671bf0 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86dgaproto/xproto_xf86dgaproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_xf86dgaproto +# +################################################################################ + +XPROTO_XF86DGAPROTO_VERSION = 2.1 +XPROTO_XF86DGAPROTO_SOURCE = xf86dgaproto-$(XPROTO_XF86DGAPROTO_VERSION).tar.bz2 +XPROTO_XF86DGAPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_XF86DGAPROTO_LICENSE = MIT +XPROTO_XF86DGAPROTO_LICENSE_FILES = COPYING +XPROTO_XF86DGAPROTO_INSTALL_STAGING = YES +XPROTO_XF86DGAPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_xf86driproto/Config.in b/buildroot/package/x11r7/xproto_xf86driproto/Config.in new file mode 100644 index 0000000..8aeac87 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86driproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_XF86DRIPROTO + bool "xf86driproto" + help + X.Org XF86DRI protocol headers diff --git a/buildroot/package/x11r7/xproto_xf86driproto/xproto_xf86driproto.hash b/buildroot/package/x11r7/xproto_xf86driproto/xproto_xf86driproto.hash new file mode 100644 index 0000000..85d4bfc --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86driproto/xproto_xf86driproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/1310 +md5 1d716d0dac3b664e5ee20c69d34bc10e xf86driproto-2.1.1.tar.bz2 +sha1 23e861f40ba0f0cbbfd7db7ba2ef623762ffca17 xf86driproto-2.1.1.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_xf86driproto/xproto_xf86driproto.mk b/buildroot/package/x11r7/xproto_xf86driproto/xproto_xf86driproto.mk new file mode 100644 index 0000000..e6bb0f1 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86driproto/xproto_xf86driproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_xf86driproto +# +################################################################################ + +XPROTO_XF86DRIPROTO_VERSION = 2.1.1 +XPROTO_XF86DRIPROTO_SOURCE = xf86driproto-$(XPROTO_XF86DRIPROTO_VERSION).tar.bz2 +XPROTO_XF86DRIPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_XF86DRIPROTO_LICENSE = MIT +XPROTO_XF86DRIPROTO_LICENSE_FILES = COPYING +XPROTO_XF86DRIPROTO_INSTALL_STAGING = YES +XPROTO_XF86DRIPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_xf86vidmodeproto/Config.in b/buildroot/package/x11r7/xproto_xf86vidmodeproto/Config.in new file mode 100644 index 0000000..395c175 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86vidmodeproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO + bool "xf86vidmodeproto" + help + X.Org XF86VidMode protocol headers diff --git a/buildroot/package/x11r7/xproto_xf86vidmodeproto/xproto_xf86vidmodeproto.hash b/buildroot/package/x11r7/xproto_xf86vidmodeproto/xproto_xf86vidmodeproto.hash new file mode 100644 index 0000000..d80749b --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86vidmodeproto/xproto_xf86vidmodeproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/1311 +md5 e793ecefeaecfeabd1aed6a01095174e xf86vidmodeproto-2.3.1.tar.bz2 +sha1 11d54c3210887631ea71e8f8030a77692e964fc4 xf86vidmodeproto-2.3.1.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_xf86vidmodeproto/xproto_xf86vidmodeproto.mk b/buildroot/package/x11r7/xproto_xf86vidmodeproto/xproto_xf86vidmodeproto.mk new file mode 100644 index 0000000..4163798 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xf86vidmodeproto/xproto_xf86vidmodeproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_xf86vidmodeproto +# +################################################################################ + +XPROTO_XF86VIDMODEPROTO_VERSION = 2.3.1 +XPROTO_XF86VIDMODEPROTO_SOURCE = xf86vidmodeproto-$(XPROTO_XF86VIDMODEPROTO_VERSION).tar.bz2 +XPROTO_XF86VIDMODEPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_XF86VIDMODEPROTO_LICENSE = MIT +XPROTO_XF86VIDMODEPROTO_LICENSE_FILES = COPYING +XPROTO_XF86VIDMODEPROTO_INSTALL_STAGING = YES +XPROTO_XF86VIDMODEPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_xineramaproto/Config.in b/buildroot/package/x11r7/xproto_xineramaproto/Config.in new file mode 100644 index 0000000..12c8e05 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xineramaproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_XINERAMAPROTO + bool "xineramaproto" + help + X.Org Xinerama protocol headers diff --git a/buildroot/package/x11r7/xproto_xineramaproto/xproto_xineramaproto.hash b/buildroot/package/x11r7/xproto_xineramaproto/xproto_xineramaproto.hash new file mode 100644 index 0000000..162c994 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xineramaproto/xproto_xineramaproto.hash @@ -0,0 +1,3 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/1312 +md5 9959fe0bfb22a0e7260433b8d199590a xineramaproto-1.2.1.tar.bz2 +sha1 818bffc16139d6e3de4344c83f00c495d3536753 xineramaproto-1.2.1.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_xineramaproto/xproto_xineramaproto.mk b/buildroot/package/x11r7/xproto_xineramaproto/xproto_xineramaproto.mk new file mode 100644 index 0000000..4c9ae11 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xineramaproto/xproto_xineramaproto.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_xineramaproto +# +################################################################################ + +XPROTO_XINERAMAPROTO_VERSION = 1.2.1 +XPROTO_XINERAMAPROTO_SOURCE = xineramaproto-$(XPROTO_XINERAMAPROTO_VERSION).tar.bz2 +XPROTO_XINERAMAPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_XINERAMAPROTO_LICENSE = MIT +XPROTO_XINERAMAPROTO_LICENSE_FILES = COPYING +XPROTO_XINERAMAPROTO_INSTALL_STAGING = YES +XPROTO_XINERAMAPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xproto_xproto/Config.in b/buildroot/package/x11r7/xproto_xproto/Config.in new file mode 100644 index 0000000..a5f88ef --- /dev/null +++ b/buildroot/package/x11r7/xproto_xproto/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XPROTO_XPROTO + bool "xproto" + help + X.Org xproto protocol headers diff --git a/buildroot/package/x11r7/xproto_xproto/xproto_xproto.hash b/buildroot/package/x11r7/xproto_xproto/xproto_xproto.hash new file mode 100644 index 0000000..4b77d25 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xproto/xproto_xproto.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2016-September/002713.html +sha256 c6f9747da0bd3a95f86b17fb8dd5e717c8f3ab7f0ece3ba1b247899ec1ef7747 xproto-7.0.31.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_xproto/xproto_xproto.mk b/buildroot/package/x11r7/xproto_xproto/xproto_xproto.mk new file mode 100644 index 0000000..76f9d32 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xproto/xproto_xproto.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# xproto_xproto +# +################################################################################ + +XPROTO_XPROTO_VERSION = 7.0.31 +XPROTO_XPROTO_SOURCE = xproto-$(XPROTO_XPROTO_VERSION).tar.bz2 +XPROTO_XPROTO_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_XPROTO_LICENSE = MIT +XPROTO_XPROTO_LICENSE_FILES = COPYING +XPROTO_XPROTO_INSTALL_STAGING = YES +XPROTO_XPROTO_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11r7/xproto_xproxymanagementprotocol/Config.in b/buildroot/package/x11r7/xproto_xproxymanagementprotocol/Config.in new file mode 100644 index 0000000..bb31f03 --- /dev/null +++ b/buildroot/package/x11r7/xproto_xproxymanagementprotocol/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_XPROTO_XPROXYMANAGEMENTPROTOCOL + bool "xproxymanagementprotocol" + help + The Proxy Management Protocol is an ICE based protocol that + provides a way for application servers to easily locate + proxy services available to them. diff --git a/buildroot/package/x11r7/xproto_xproxymanagementprotocol/xproto_xproxymanagementprotocol.hash b/buildroot/package/x11r7/xproto_xproxymanagementprotocol/xproto_xproxymanagementprotocol.hash new file mode 100644 index 0000000..27a9dfa --- /dev/null +++ b/buildroot/package/x11r7/xproto_xproxymanagementprotocol/xproto_xproxymanagementprotocol.hash @@ -0,0 +1,2 @@ +# From http://lists.x.org/archives/xorg-announce/2009-October/001150.html +sha1 4abb036371670ecc25d32e48b3277fe203ae5203 xproxymanagementprotocol-1.0.3.tar.bz2 diff --git a/buildroot/package/x11r7/xproto_xproxymanagementprotocol/xproto_xproxymanagementprotocol.mk b/buildroot/package/x11r7/xproto_xproxymanagementprotocol/xproto_xproxymanagementprotocol.mk new file mode 100644 index 0000000..a48269a --- /dev/null +++ b/buildroot/package/x11r7/xproto_xproxymanagementprotocol/xproto_xproxymanagementprotocol.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# xproto_xproxymanagementprotocol +# +################################################################################ + +XPROTO_XPROXYMANAGEMENTPROTOCOL_VERSION = 1.0.3 +XPROTO_XPROXYMANAGEMENTPROTOCOL_SOURCE = xproxymanagementprotocol-$(XPROTO_XPROXYMANAGEMENTPROTOCOL_VERSION).tar.bz2 +XPROTO_XPROXYMANAGEMENTPROTOCOL_SITE = http://xorg.freedesktop.org/releases/individual/proto +XPROTO_XPROXYMANAGEMENTPROTOCOL_LICENSE = MIT +XPROTO_XPROXYMANAGEMENTPROTOCOL_LICENSE_FILES = COPYING +XPROTO_XPROXYMANAGEMENTPROTOCOL_INSTALL_STAGING = YES +XPROTO_XPROXYMANAGEMENTPROTOCOL_INSTALL_TARGET = NO + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0001-sdksyms-gcc5.patch b/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0001-sdksyms-gcc5.patch new file mode 100644 index 0000000..ad544aa --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0001-sdksyms-gcc5.patch @@ -0,0 +1,50 @@ +From 21b896939c5bb242f3aacc37baf12379e43254b6 Mon Sep 17 00:00:00 2001 +From: Egbert Eich +Date: Tue, 3 Mar 2015 16:27:05 +0100 +Subject: symbols: Fix sdksyms.sh to cope with gcc5 + +Gcc5 adds additional lines stating line numbers before and +after __attribute__() which need to be skipped. + +Downloaded from upstream commit +https://cgit.freedesktop.org/xorg/xserver/commit/hw/xfree86/sdksyms.sh?id=21b896939c5bb242f3aacc37baf12379e43254b6 + +Signed-off-by: Bernd Kuhls +Signed-off-by: Egbert Eich +Tested-by: Daniel Stone +Signed-off-by: Peter Hutterer + +diff --git a/hw/xfree86/sdksyms.sh b/hw/xfree86/sdksyms.sh +index 2305073..05ac410 100755 +--- a/hw/xfree86/sdksyms.sh ++++ b/hw/xfree86/sdksyms.sh +@@ -350,13 +350,25 @@ BEGIN { + if (sdk) { + n = 3; + ++ # skip line numbers GCC 5 adds before __attribute__ ++ while ($n == "" || $0 ~ /^# [0-9]+ "/) { ++ getline; ++ n = 1; ++ } ++ + # skip attribute, if any + while ($n ~ /^(__attribute__|__global)/ || + # skip modifiers, if any + $n ~ /^\*?(unsigned|const|volatile|struct|_X_EXPORT)$/ || + # skip pointer +- $n ~ /^[a-zA-Z0-9_]*\*$/) ++ $n ~ /^[a-zA-Z0-9_]*\*$/) { + n++; ++ # skip line numbers GCC 5 adds after __attribute__ ++ while ($n == "" || $0 ~ /^# [0-9]+ "/) { ++ getline; ++ n = 1; ++ } ++ } + + # type specifier may not be set, as in + # extern _X_EXPORT unsigned name(...) +-- +cgit v0.10.2 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0002-Xi-Zero-target-buffer-in-SProcXSendExtensionEvent.patch b/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0002-Xi-Zero-target-buffer-in-SProcXSendExtensionEvent.patch new file mode 100644 index 0000000..c15dc9f --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0002-Xi-Zero-target-buffer-in-SProcXSendExtensionEvent.patch @@ -0,0 +1,39 @@ +From 05442de962d3dc624f79fc1a00eca3ffc5489ced Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:39 +0300 +Subject: [PATCH] Xi: Zero target buffer in SProcXSendExtensionEvent. + +Make sure that the xEvent eventT is initialized with zeros, the same way as +in SProcSendEvent. + +Some event swapping functions do not overwrite all 32 bytes of xEvent +structure, for example XSecurityAuthorizationRevoked. Two cooperating +clients, one swapped and the other not, can send +XSecurityAuthorizationRevoked event to each other to retrieve old stack data +from X server. This can be potentialy misused to go around ASLR or +stack-protector. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer +Signed-off-by: Peter Korsgaard +--- + Xi/sendexev.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 11d82029f..1cf118ab6 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -78,7 +78,7 @@ SProcXSendExtensionEvent(ClientPtr client) + { + CARD32 *p; + int i; +- xEvent eventT; ++ xEvent eventT = { .u.u.type = 0 }; + xEvent *eventP; + EventSwapPtr proc; + +-- +2.11.0 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0003-dix-Disallow-GenericEvent-in-SendEvent-request.patch b/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0003-dix-Disallow-GenericEvent-in-SendEvent-request.patch new file mode 100644 index 0000000..12da5f5 --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0003-dix-Disallow-GenericEvent-in-SendEvent-request.patch @@ -0,0 +1,71 @@ +From 215f894965df5fb0bb45b107d84524e700d2073c Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:40 +0300 +Subject: [PATCH] dix: Disallow GenericEvent in SendEvent request. + +The SendEvent request holds xEvent which is exactly 32 bytes long, no more, +no less. Both ProcSendEvent and SProcSendEvent verify that the received data +exactly match the request size. However nothing stops the client from passing +in event with xEvent::type = GenericEvent and any value of +xGenericEvent::length. + +In the case of ProcSendEvent, the event will be eventually passed to +WriteEventsToClient which will see that it is Generic event and copy the +arbitrary length from the receive buffer (and possibly past it) and send it to +the other client. This allows clients to copy unitialized heap memory out of X +server or to crash it. + +In case of SProcSendEvent, it will attempt to swap the incoming event by +calling a swapping function from the EventSwapVector array. The swapped event +is written to target buffer, which in this case is local xEvent variable. The +xEvent variable is 32 bytes long, but the swapping functions for GenericEvents +expect that the target buffer has size matching the size of the source +GenericEvent. This allows clients to cause stack buffer overflows. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer +Signed-off-by: Peter Korsgaard +--- + dix/events.c | 6 ++++++ + dix/swapreq.c | 7 +++++++ + 2 files changed, 13 insertions(+) + +diff --git a/dix/events.c b/dix/events.c +index 3e3a01ef9..d3a33ea3f 100644 +--- a/dix/events.c ++++ b/dix/events.c +@@ -5366,6 +5366,12 @@ ProcSendEvent(ClientPtr client) + client->errorValue = stuff->event.u.u.type; + return BadValue; + } ++ /* Generic events can have variable size, but SendEvent request holds ++ exactly 32B of event data. */ ++ if (stuff->event.u.u.type == GenericEvent) { ++ client->errorValue = stuff->event.u.u.type; ++ return BadValue; ++ } + if (stuff->event.u.u.type == ClientMessage && + stuff->event.u.u.detail != 8 && + stuff->event.u.u.detail != 16 && stuff->event.u.u.detail != 32) { +diff --git a/dix/swapreq.c b/dix/swapreq.c +index 719e9b81c..67850593b 100644 +--- a/dix/swapreq.c ++++ b/dix/swapreq.c +@@ -292,6 +292,13 @@ SProcSendEvent(ClientPtr client) + swapl(&stuff->destination); + swapl(&stuff->eventMask); + ++ /* Generic events can have variable size, but SendEvent request holds ++ exactly 32B of event data. */ ++ if (stuff->event.u.u.type == GenericEvent) { ++ client->errorValue = stuff->event.u.u.type; ++ return BadValue; ++ } ++ + /* Swap event */ + proc = EventSwapVector[stuff->event.u.u.type & 0177]; + if (!proc || proc == NotImplemented) /* no swapping proc; invalid event type? */ +-- +2.11.0 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0004-Xi-Verify-all-events-in-ProcXSendExtensionEvent.patch b/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0004-Xi-Verify-all-events-in-ProcXSendExtensionEvent.patch new file mode 100644 index 0000000..2e65100 --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0004-Xi-Verify-all-events-in-ProcXSendExtensionEvent.patch @@ -0,0 +1,50 @@ +From 8caed4df36b1f802b4992edcfd282cbeeec35d9d Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:41 +0300 +Subject: [PATCH] Xi: Verify all events in ProcXSendExtensionEvent. + +The requirement is that events have type in range +EXTENSION_EVENT_BASE..lastEvent, but it was tested +only for first event of all. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer +Signed-off-by: Peter Korsgaard +--- + Xi/sendexev.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 1cf118ab6..5e63bfcca 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -117,7 +117,7 @@ SProcXSendExtensionEvent(ClientPtr client) + int + ProcXSendExtensionEvent(ClientPtr client) + { +- int ret; ++ int ret, i; + DeviceIntPtr dev; + xEvent *first; + XEventClass *list; +@@ -141,10 +141,12 @@ ProcXSendExtensionEvent(ClientPtr client) + /* The client's event type must be one defined by an extension. */ + + first = ((xEvent *) &stuff[1]); +- if (!((EXTENSION_EVENT_BASE <= first->u.u.type) && +- (first->u.u.type < lastEvent))) { +- client->errorValue = first->u.u.type; +- return BadValue; ++ for (i = 0; i < stuff->num_events; i++) { ++ if (!((EXTENSION_EVENT_BASE <= first[i].u.u.type) && ++ (first[i].u.u.type < lastEvent))) { ++ client->errorValue = first[i].u.u.type; ++ return BadValue; ++ } + } + + list = (XEventClass *) (first + stuff->num_events); +-- +2.11.0 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0005-Xi-Do-not-try-to-swap-GenericEvent.patch b/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0005-Xi-Do-not-try-to-swap-GenericEvent.patch new file mode 100644 index 0000000..871e762 --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.14.7/0005-Xi-Do-not-try-to-swap-GenericEvent.patch @@ -0,0 +1,45 @@ +From ba336b24052122b136486961c82deac76bbde455 Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:42 +0300 +Subject: [PATCH] Xi: Do not try to swap GenericEvent. + +The SProcXSendExtensionEvent must not attempt to swap GenericEvent because +it is assuming that the event has fixed size and gives the swapping function +xEvent-sized buffer. + +A GenericEvent would be later rejected by ProcXSendExtensionEvent anyway. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer +Signed-off-by: Peter Korsgaard +--- + Xi/sendexev.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 5e63bfcca..5c2e0fc56 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -95,9 +95,17 @@ SProcXSendExtensionEvent(ClientPtr client) + + eventP = (xEvent *) &stuff[1]; + for (i = 0; i < stuff->num_events; i++, eventP++) { ++ if (eventP->u.u.type == GenericEvent) { ++ client->errorValue = eventP->u.u.type; ++ return BadValue; ++ } ++ + proc = EventSwapVector[eventP->u.u.type & 0177]; +- if (proc == NotImplemented) /* no swapping proc; invalid event type? */ ++ /* no swapping proc; invalid event type? */ ++ if (proc == NotImplemented) { ++ client->errorValue = eventP->u.u.type; + return BadValue; ++ } + (*proc) (eventP, &eventT); + *eventP = eventT; + } +-- +2.11.0 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0001-modesettings-needs-dri2.patch b/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0001-modesettings-needs-dri2.patch new file mode 100644 index 0000000..4ef95ef --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0001-modesettings-needs-dri2.patch @@ -0,0 +1,19 @@ +Kernel modesettings support also depends on dri2, see +http://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/drivers/modesetting/Makefile.am#n46 + +Patch sent upstream: https://bugs.freedesktop.org/show_bug.cgi?id=91584 + +Signed-off-by: Bernd Kuhls + +diff -uNr xorg-server-1.17.2.org/configure.ac xorg-server-1.17.2/configure.ac +--- xorg-server-1.17.2.org/configure.ac 2015-06-16 17:42:40.000000000 +0200 ++++ xorg-server-1.17.2/configure.ac 2015-08-08 10:44:59.702382624 +0200 +@@ -2036,7 +2036,7 @@ + XORG_SYS_LIBS="$XORG_SYS_LIBS $XORG_MODULES_LIBS" + fi + +- if test "x$DRM" = xyes; then ++ if test "x$DRM" = xyes -a "x$DRI2" = xyes; then + dnl 2.4.46 is required for cursor hotspot support. + PKG_CHECK_EXISTS(libdrm >= 2.4.46) + XORG_DRIVER_MODESETTING=yes diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0002-Xi-Zero-target-buffer-in-SProcXSendExtensionEvent.patch b/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0002-Xi-Zero-target-buffer-in-SProcXSendExtensionEvent.patch new file mode 100644 index 0000000..c15dc9f --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0002-Xi-Zero-target-buffer-in-SProcXSendExtensionEvent.patch @@ -0,0 +1,39 @@ +From 05442de962d3dc624f79fc1a00eca3ffc5489ced Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:39 +0300 +Subject: [PATCH] Xi: Zero target buffer in SProcXSendExtensionEvent. + +Make sure that the xEvent eventT is initialized with zeros, the same way as +in SProcSendEvent. + +Some event swapping functions do not overwrite all 32 bytes of xEvent +structure, for example XSecurityAuthorizationRevoked. Two cooperating +clients, one swapped and the other not, can send +XSecurityAuthorizationRevoked event to each other to retrieve old stack data +from X server. This can be potentialy misused to go around ASLR or +stack-protector. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer +Signed-off-by: Peter Korsgaard +--- + Xi/sendexev.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 11d82029f..1cf118ab6 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -78,7 +78,7 @@ SProcXSendExtensionEvent(ClientPtr client) + { + CARD32 *p; + int i; +- xEvent eventT; ++ xEvent eventT = { .u.u.type = 0 }; + xEvent *eventP; + EventSwapPtr proc; + +-- +2.11.0 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0003-dix-Disallow-GenericEvent-in-SendEvent-request.patch b/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0003-dix-Disallow-GenericEvent-in-SendEvent-request.patch new file mode 100644 index 0000000..12da5f5 --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0003-dix-Disallow-GenericEvent-in-SendEvent-request.patch @@ -0,0 +1,71 @@ +From 215f894965df5fb0bb45b107d84524e700d2073c Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:40 +0300 +Subject: [PATCH] dix: Disallow GenericEvent in SendEvent request. + +The SendEvent request holds xEvent which is exactly 32 bytes long, no more, +no less. Both ProcSendEvent and SProcSendEvent verify that the received data +exactly match the request size. However nothing stops the client from passing +in event with xEvent::type = GenericEvent and any value of +xGenericEvent::length. + +In the case of ProcSendEvent, the event will be eventually passed to +WriteEventsToClient which will see that it is Generic event and copy the +arbitrary length from the receive buffer (and possibly past it) and send it to +the other client. This allows clients to copy unitialized heap memory out of X +server or to crash it. + +In case of SProcSendEvent, it will attempt to swap the incoming event by +calling a swapping function from the EventSwapVector array. The swapped event +is written to target buffer, which in this case is local xEvent variable. The +xEvent variable is 32 bytes long, but the swapping functions for GenericEvents +expect that the target buffer has size matching the size of the source +GenericEvent. This allows clients to cause stack buffer overflows. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer +Signed-off-by: Peter Korsgaard +--- + dix/events.c | 6 ++++++ + dix/swapreq.c | 7 +++++++ + 2 files changed, 13 insertions(+) + +diff --git a/dix/events.c b/dix/events.c +index 3e3a01ef9..d3a33ea3f 100644 +--- a/dix/events.c ++++ b/dix/events.c +@@ -5366,6 +5366,12 @@ ProcSendEvent(ClientPtr client) + client->errorValue = stuff->event.u.u.type; + return BadValue; + } ++ /* Generic events can have variable size, but SendEvent request holds ++ exactly 32B of event data. */ ++ if (stuff->event.u.u.type == GenericEvent) { ++ client->errorValue = stuff->event.u.u.type; ++ return BadValue; ++ } + if (stuff->event.u.u.type == ClientMessage && + stuff->event.u.u.detail != 8 && + stuff->event.u.u.detail != 16 && stuff->event.u.u.detail != 32) { +diff --git a/dix/swapreq.c b/dix/swapreq.c +index 719e9b81c..67850593b 100644 +--- a/dix/swapreq.c ++++ b/dix/swapreq.c +@@ -292,6 +292,13 @@ SProcSendEvent(ClientPtr client) + swapl(&stuff->destination); + swapl(&stuff->eventMask); + ++ /* Generic events can have variable size, but SendEvent request holds ++ exactly 32B of event data. */ ++ if (stuff->event.u.u.type == GenericEvent) { ++ client->errorValue = stuff->event.u.u.type; ++ return BadValue; ++ } ++ + /* Swap event */ + proc = EventSwapVector[stuff->event.u.u.type & 0177]; + if (!proc || proc == NotImplemented) /* no swapping proc; invalid event type? */ +-- +2.11.0 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0004-Xi-Verify-all-events-in-ProcXSendExtensionEvent.patch b/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0004-Xi-Verify-all-events-in-ProcXSendExtensionEvent.patch new file mode 100644 index 0000000..2e65100 --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0004-Xi-Verify-all-events-in-ProcXSendExtensionEvent.patch @@ -0,0 +1,50 @@ +From 8caed4df36b1f802b4992edcfd282cbeeec35d9d Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:41 +0300 +Subject: [PATCH] Xi: Verify all events in ProcXSendExtensionEvent. + +The requirement is that events have type in range +EXTENSION_EVENT_BASE..lastEvent, but it was tested +only for first event of all. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer +Signed-off-by: Peter Korsgaard +--- + Xi/sendexev.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 1cf118ab6..5e63bfcca 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -117,7 +117,7 @@ SProcXSendExtensionEvent(ClientPtr client) + int + ProcXSendExtensionEvent(ClientPtr client) + { +- int ret; ++ int ret, i; + DeviceIntPtr dev; + xEvent *first; + XEventClass *list; +@@ -141,10 +141,12 @@ ProcXSendExtensionEvent(ClientPtr client) + /* The client's event type must be one defined by an extension. */ + + first = ((xEvent *) &stuff[1]); +- if (!((EXTENSION_EVENT_BASE <= first->u.u.type) && +- (first->u.u.type < lastEvent))) { +- client->errorValue = first->u.u.type; +- return BadValue; ++ for (i = 0; i < stuff->num_events; i++) { ++ if (!((EXTENSION_EVENT_BASE <= first[i].u.u.type) && ++ (first[i].u.u.type < lastEvent))) { ++ client->errorValue = first[i].u.u.type; ++ return BadValue; ++ } + } + + list = (XEventClass *) (first + stuff->num_events); +-- +2.11.0 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0005-Xi-Do-not-try-to-swap-GenericEvent.patch b/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0005-Xi-Do-not-try-to-swap-GenericEvent.patch new file mode 100644 index 0000000..871e762 --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.17.4/0005-Xi-Do-not-try-to-swap-GenericEvent.patch @@ -0,0 +1,45 @@ +From ba336b24052122b136486961c82deac76bbde455 Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Wed, 24 May 2017 15:54:42 +0300 +Subject: [PATCH] Xi: Do not try to swap GenericEvent. + +The SProcXSendExtensionEvent must not attempt to swap GenericEvent because +it is assuming that the event has fixed size and gives the swapping function +xEvent-sized buffer. + +A GenericEvent would be later rejected by ProcXSendExtensionEvent anyway. + +Signed-off-by: Michal Srb +Reviewed-by: Peter Hutterer +Signed-off-by: Peter Hutterer +Signed-off-by: Peter Korsgaard +--- + Xi/sendexev.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/Xi/sendexev.c b/Xi/sendexev.c +index 5e63bfcca..5c2e0fc56 100644 +--- a/Xi/sendexev.c ++++ b/Xi/sendexev.c +@@ -95,9 +95,17 @@ SProcXSendExtensionEvent(ClientPtr client) + + eventP = (xEvent *) &stuff[1]; + for (i = 0; i < stuff->num_events; i++, eventP++) { ++ if (eventP->u.u.type == GenericEvent) { ++ client->errorValue = eventP->u.u.type; ++ return BadValue; ++ } ++ + proc = EventSwapVector[eventP->u.u.type & 0177]; +- if (proc == NotImplemented) /* no swapping proc; invalid event type? */ ++ /* no swapping proc; invalid event type? */ ++ if (proc == NotImplemented) { ++ client->errorValue = eventP->u.u.type; + return BadValue; ++ } + (*proc) (eventP, &eventT); + *eventP = eventT; + } +-- +2.11.0 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0001-modesettings-needs-dri2.patch b/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0001-modesettings-needs-dri2.patch new file mode 100644 index 0000000..4ef95ef --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0001-modesettings-needs-dri2.patch @@ -0,0 +1,19 @@ +Kernel modesettings support also depends on dri2, see +http://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/drivers/modesetting/Makefile.am#n46 + +Patch sent upstream: https://bugs.freedesktop.org/show_bug.cgi?id=91584 + +Signed-off-by: Bernd Kuhls + +diff -uNr xorg-server-1.17.2.org/configure.ac xorg-server-1.17.2/configure.ac +--- xorg-server-1.17.2.org/configure.ac 2015-06-16 17:42:40.000000000 +0200 ++++ xorg-server-1.17.2/configure.ac 2015-08-08 10:44:59.702382624 +0200 +@@ -2036,7 +2036,7 @@ + XORG_SYS_LIBS="$XORG_SYS_LIBS $XORG_MODULES_LIBS" + fi + +- if test "x$DRM" = xyes; then ++ if test "x$DRM" = xyes -a "x$DRI2" = xyes; then + dnl 2.4.46 is required for cursor hotspot support. + PKG_CHECK_EXISTS(libdrm >= 2.4.46) + XORG_DRIVER_MODESETTING=yes diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch b/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch new file mode 100644 index 0000000..c5f04bf --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0002-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch @@ -0,0 +1,66 @@ +Discover monotonic clock using compile-time check + +monotonic clock check does not work when cross-compiling. + +Upstream-Status: Denied [Does not work on OpenBSD] +Signed-off-by: Jussi Kukkonen + + + +Original patch follows: + +When xorg-xserver is being cross-compiled, there is currently no way +for us to detect whether the monotonic clock is available on the +target system, because we aren't able to run a test program on the host +system. Currently, in this situation, we default to not use the +monotonic clock. One problem with this situation is that the user will +be treated as idle when the date is updated. + +To fix this situation, we now use a compile-time check to detect whether the +monotonic clock is available. This check can run just fine when we are +cross-compiling. + +Signed-off-by: David James + +Downloaded from +https://github.com/openembedded/openembedded-core/blob/master/meta/recipes-graphics/xorg-xserver/xserver-xorg/0001-configure.ac-Fix-check-for-CLOCK_MONOTONIC.patch + +Signed-off-by: Bernd Kuhls +--- + configure.ac | 17 +++++++---------- + 1 file changed, 7 insertions(+), 10 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f7ab48c..26e85cd 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1048,19 +1048,16 @@ if ! test "x$have_clock_gettime" = xno; then + CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L" + fi + +- AC_RUN_IFELSE([AC_LANG_SOURCE([ ++ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ + #include +- +-int main(int argc, char *argv[[]]) { +- struct timespec tp; +- +- if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0) ++#include ++int main() { ++#if !(defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0 && defined(CLOCK_MONOTONIC)) ++ #error No monotonic clock ++#endif + return 0; +- else +- return 1; + } +- ])], [MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no], +- [MONOTONIC_CLOCK="cross compiling"]) ++]])],[MONOTONIC_CLOCK=yes], [MONOTONIC_CLOCK=no]) + + LIBS="$LIBS_SAVE" + CPPFLAGS="$CPPFLAGS_SAVE" +-- +2.1.4 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0003-Remove-check-for-useSIGIO-option.patch b/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0003-Remove-check-for-useSIGIO-option.patch new file mode 100644 index 0000000..d4f0cca --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0003-Remove-check-for-useSIGIO-option.patch @@ -0,0 +1,53 @@ +From cf407b16cd65ad6e26a9c8e5984e163409a5c0f7 Mon Sep 17 00:00:00 2001 +From: Prabhu Sundararaj +Date: Mon, 30 Jan 2017 16:32:06 -0600 +Subject: [PATCH] Remove check for useSIGIO option + +Original patch follows: +Commit 6a5a4e60373c1386b311b2a8bb666c32d68a9d99 removes the configure of useSIGIO +option. + +As the xfree86 SIGIO support is reworked to use internal versions of OsBlockSIGIO +and OsReleaseSIGIO. + +No longer the check for useSIGIO is needed + +Upstream-Status: Pending + +Signed-off-by: Prabhu Sundararaj + +Downloaded from +https://github.com/openembedded/openembedded-core/blob/master/meta/recipes-graphics/xorg-xserver/xserver-xorg/0003-Remove-check-for-useSIGIO-option.patch + +Signed-off-by: Mylène Josserand +--- + hw/xfree86/os-support/shared/sigio.c | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c +index 884a71c..be76498 100644 +--- a/hw/xfree86/os-support/shared/sigio.c ++++ b/hw/xfree86/os-support/shared/sigio.c +@@ -185,9 +185,6 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure) + int i; + int installed = FALSE; + +- if (!xf86Info.useSIGIO) +- return 0; +- + for (i = 0; i < MAX_FUNCS; i++) { + if (!xf86SigIOFuncs[i].f) { + if (xf86IsPipe(fd)) +@@ -256,9 +253,6 @@ xf86RemoveSIGIOHandler(int fd) + int max; + int ret; + +- if (!xf86Info.useSIGIO) +- return 0; +- + max = 0; + ret = 0; + for (i = 0; i < MAX_FUNCS; i++) { +-- +2.7.4 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0004-glx-Only-include-compositeext.h-if-COMPOSITE-is-supp.patch b/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0004-glx-Only-include-compositeext.h-if-COMPOSITE-is-supp.patch new file mode 100644 index 0000000..93be91a --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/1.19.6/0004-glx-Only-include-compositeext.h-if-COMPOSITE-is-supp.patch @@ -0,0 +1,31 @@ +From d16133e3e293fe16b291114d344fbd5a61d5ed65 Mon Sep 17 00:00:00 2001 +From: Jeremy Huddleston Sequoia +Date: Thu, 20 Jul 2017 19:48:26 -0700 +Subject: [PATCH] glx: Only include compositeext.h if COMPOSITE is + supported + +Regressed-in: ea483af99a6351323afe00a0b630cd63310efdb1 +Signed-off-by: Jeremy Huddleston Sequoia +Signed-off-by: Bernd Kuhls +--- + glx/glxscreens.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/glx/glxscreens.c b/glx/glxscreens.c +index 78e0aaff9..609661274 100644 +--- a/glx/glxscreens.c ++++ b/glx/glxscreens.c +@@ -43,7 +43,10 @@ + #include "glxutil.h" + #include "glxext.h" + #include "protocol-versions.h" ++ ++#ifdef COMPOSITE + #include "compositeext.h" ++#endif + + static DevPrivateKeyRec glxScreenPrivateKeyRec; + +-- +2.11.0 + diff --git a/buildroot/package/x11r7/xserver_xorg-server/Config.in b/buildroot/package/x11r7/xserver_xorg-server/Config.in new file mode 100644 index 0000000..3107e2c --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/Config.in @@ -0,0 +1,183 @@ +comment "xorg-server needs a glibc or uClibc toolchain" + depends on BR2_arm && BR2_TOOLCHAIN_USES_MUSL + +config BR2_PACKAGE_XSERVER_XORG_SERVER + bool "xorg-server" + depends on BR2_USE_MMU # fork() + # xserver uses inb/outb on arm, which aren't available with musl + depends on !(BR2_arm && BR2_TOOLCHAIN_USES_MUSL) + # We need a SHA1 implementation. If either openssl or + # libgcrypt are already part of the build, we'll use one of + # them, otherwise, use the small libsha1 library. + select BR2_PACKAGE_LIBSHA1 if (!BR2_PACKAGE_OPENSSL && !BR2_PACKAGE_LIBGCRYPT) + select BR2_PACKAGE_MCOOKIE + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_XFONT_FONT_ALIAS if !BR2_PACKAGE_XSERVER_XORG_SERVER_BUILTIN_FONTS + select BR2_PACKAGE_XFONT_FONT_MISC_MISC if !BR2_PACKAGE_XSERVER_XORG_SERVER_BUILTIN_FONTS + select BR2_PACKAGE_XFONT_FONT_CURSOR_MISC if !BR2_PACKAGE_XSERVER_XORG_SERVER_BUILTIN_FONTS + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAU + select BR2_PACKAGE_XLIB_LIBXCURSOR + select BR2_PACKAGE_XLIB_LIBXDAMAGE + select BR2_PACKAGE_XLIB_LIBXDMCP + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXFIXES + select BR2_PACKAGE_XLIB_LIBXFT + select BR2_PACKAGE_XLIB_LIBXI + select BR2_PACKAGE_XLIB_LIBXINERAMA + select BR2_PACKAGE_XLIB_LIBXRANDR + select BR2_PACKAGE_XLIB_LIBXRENDER + select BR2_PACKAGE_XLIB_LIBXRES + select BR2_PACKAGE_XLIB_LIBXXF86VM + select BR2_PACKAGE_XLIB_LIBXKBFILE + select BR2_PACKAGE_XLIB_XTRANS + select BR2_PACKAGE_XDATA_XBITMAPS + select BR2_PACKAGE_XPROTO_BIGREQSPROTO + select BR2_PACKAGE_XPROTO_COMPOSITEPROTO + select BR2_PACKAGE_XPROTO_DAMAGEPROTO + select BR2_PACKAGE_XPROTO_FIXESPROTO + select BR2_PACKAGE_XPROTO_FONTSPROTO + select BR2_PACKAGE_XPROTO_GLPROTO + select BR2_PACKAGE_XPROTO_INPUTPROTO + select BR2_PACKAGE_XPROTO_KBPROTO + select BR2_PACKAGE_XPROTO_RANDRPROTO + select BR2_PACKAGE_XPROTO_RENDERPROTO + select BR2_PACKAGE_XPROTO_RESOURCEPROTO + select BR2_PACKAGE_XPROTO_VIDEOPROTO + select BR2_PACKAGE_XPROTO_XCMISCPROTO + select BR2_PACKAGE_XPROTO_XEXTPROTO + select BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO + select BR2_PACKAGE_XPROTO_XF86DGAPROTO + select BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO + select BR2_PACKAGE_XPROTO_XPROTO + select BR2_PACKAGE_XUTIL_UTIL_MACROS + select BR2_PACKAGE_XKEYBOARD_CONFIG + select BR2_PACKAGE_XPROTO_DRI2PROTO if BR2_PACKAGE_SYSTEMD + help + X.Org X server + + http://xorg.freedesktop.org + +if BR2_PACKAGE_XSERVER_XORG_SERVER + +config BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_14 + bool + +config BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19 + bool + +config BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_23 + bool + +config BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI + int + default 14 if BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_14 + default 19 if BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19 + default 23 if BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_23 + +choice + bool "X Window System server version" + +config BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_19 + bool "1.19.6" + select BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_23 + select BR2_PACKAGE_XLIB_LIBXFONT2 + select BR2_PACKAGE_XPROTO_PRESENTPROTO + +config BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_17 + bool "1.17.4" + select BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_19 + select BR2_PACKAGE_XLIB_LIBXFONT + select BR2_PACKAGE_XPROTO_PRESENTPROTO + +config BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_14 + bool "1.14.7" + select BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_14 + select BR2_PACKAGE_XLIB_LIBXFONT + +endchoice + +config BR2_PACKAGE_XSERVER_XORG_SERVER_VERSION + string + default "1.19.6" if BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_19 + default "1.17.4" if BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_17 + default "1.14.7" if BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_14 + +choice + prompt "X Window System server type" + help + Select the X Window System server to use + +config BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR + bool "Modular X.org" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBDRM if (BR2_PACKAGE_XPROTO_XF86DRIPROTO || \ + BR2_PACKAGE_XPROTO_DRI2PROTO) + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_XLIB_LIBXSHMFENCE if \ + (BR2_PACKAGE_XPROTO_DRI3PROTO && BR2_TOOLCHAIN_HAS_SYNC_4) + help + This variant of the X.org server is the full-blown variant, + as used by desktop GNU/Linux distributions. The drivers (for + input and graphics) are built separately from the X.org + server (see the xdriver* packages). + +comment "Modular X.org needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP + +config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE + bool "KDrive / TinyX" + help + This variant of the X.org server is a lightweight version + intended for embedded systems. The drivers (for input and + graphics) are built into the server. It is generally used + directly on top of the Linux framebuffer without DRM or + video card specific drivers. + +endchoice + +config BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX + bool "Enable AIGLX Extension" + # AIGLX Extension removed in 1.19.0 + depends on BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_14 || BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_17 + help + Enable/Use AIGLX extension. + +if BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE + +config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_EVDEV + bool "Enable KDrive/TinyX evdev input driver" + help + Enable evdev input driver in KDrive. This allows KDrive to + use input devices that are integrated in the Linux input + subsystem, i.e have a /dev/input/eventX device file. This is + most likely the input driver you want to use. + + This driver can then be enabled by running the X server + using: + + Xfbdev -keybd evdev,,device=/dev/input/eventX + -mouse evdev,,device=/dev/input/eventY + +config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_KBD + bool "Enable KDrive/TinyX kbd input driver" + help + Enable kbd input driver in KDrive. It uses the console + keyboard as input device. + +config BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_MOUSE + bool "Enable KDrive/TinyX mouse input driver" + help + Enable mouse input driver in KDrive. It supports PS/2 mice + and serial port mice. + +endif + +comment "Optional Servers" + +config BR2_PACKAGE_XSERVER_XORG_SERVER_XVFB + bool "Xvfb server" + help + Virtual frame buffer X server. + +endif diff --git a/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash b/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash new file mode 100644 index 0000000..10285ab --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.hash @@ -0,0 +1,10 @@ +# From http://lists.x.org/archives/xorg-announce/2014-June/002440.html +sha1 7a95765e56b124758fcd7b609589e65b8870880b xorg-server-1.14.7.tar.bz2 +sha256 fcf66fa6ad86227613d2d3e8ae13ded297e2a1e947e9060a083eaf80d323451f xorg-server-1.14.7.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2015-October/002650.html +sha256 0c4b45c116a812a996eb432d8508cf26c2ec8c3916ff2a50781796882f8d6457 xorg-server-1.17.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2017-December/002830.html +md5 3e47777ff034a331aed2322b078694a8 xorg-server-1.19.6.tar.bz2 +sha1 2dd560ac49bdbda7f67166546af43541fabf517f xorg-server-1.19.6.tar.bz2 +sha256 a732502f1db000cf36a376cd0c010ffdbf32ecdd7f1fa08ba7f5bdf9601cc197 xorg-server-1.19.6.tar.bz2 +sha512 38519a8d0af9dd034045fc346959496dd718fa59b6188307974797a1cd9c349deb54987f6232ea8396baf810dcc710c0ff191f76ed2186cae4d44921b3680412 xorg-server-1.19.6.tar.bz2 diff --git a/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk b/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk new file mode 100644 index 0000000..45a2c81 --- /dev/null +++ b/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk @@ -0,0 +1,261 @@ +################################################################################ +# +# xserver_xorg-server +# +################################################################################ + +XSERVER_XORG_SERVER_VERSION = $(call qstrip,$(BR2_PACKAGE_XSERVER_XORG_SERVER_VERSION)) +XSERVER_XORG_SERVER_SOURCE = xorg-server-$(XSERVER_XORG_SERVER_VERSION).tar.bz2 +XSERVER_XORG_SERVER_SITE = https://xorg.freedesktop.org/archive/individual/xserver +XSERVER_XORG_SERVER_LICENSE = MIT +XSERVER_XORG_SERVER_LICENSE_FILES = COPYING +XSERVER_XORG_SERVER_INSTALL_STAGING = YES +# xfont_font-util is needed only for autoreconf +XSERVER_XORG_SERVER_AUTORECONF = YES +XSERVER_XORG_SERVER_DEPENDENCIES = \ + xfont_font-util \ + xutil_util-macros \ + xlib_libX11 \ + xlib_libXau \ + xlib_libXdmcp \ + xlib_libXext \ + xlib_libXfixes \ + xlib_libXi \ + xlib_libXrender \ + xlib_libXres \ + xlib_libXft \ + xlib_libXcursor \ + xlib_libXinerama \ + xlib_libXrandr \ + xlib_libXdamage \ + xlib_libXxf86vm \ + xlib_libxkbfile \ + xlib_xtrans \ + xdata_xbitmaps \ + xproto_bigreqsproto \ + xproto_compositeproto \ + xproto_damageproto \ + xproto_fixesproto \ + xproto_fontsproto \ + xproto_glproto \ + xproto_inputproto \ + xproto_kbproto \ + xproto_randrproto \ + xproto_renderproto \ + xproto_resourceproto \ + xproto_videoproto \ + xproto_xcmiscproto \ + xproto_xextproto \ + xproto_xf86bigfontproto \ + xproto_xf86dgaproto \ + xproto_xf86vidmodeproto \ + xproto_xproto \ + xkeyboard-config \ + pixman \ + mcookie \ + host-pkgconf + +# We force -O2 regardless of the optimization level chosen by the +# user, as the X.org server is known to trigger some compiler bugs at +# -Os on several architectures. +XSERVER_XORG_SERVER_CONF_OPTS = \ + --disable-config-hal \ + --disable-xnest \ + --disable-xephyr \ + --disable-dmx \ + --with-builder-addr=buildroot@buildroot.org \ + CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/pixman-1 -O2" \ + --with-fontrootdir=/usr/share/fonts/X11/ \ + --$(if $(BR2_PACKAGE_XSERVER_XORG_SERVER_XVFB),en,dis)able-xvfb + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +XSERVER_XORG_SERVER_CONF_OPTS += \ + --with-systemd-daemon \ + --enable-systemd-logind +XSERVER_XORG_SERVER_DEPENDENCIES += \ + systemd \ + xproto_dri2proto +else +XSERVER_XORG_SERVER_CONF_OPTS += \ + --without-systemd-daemon \ + --disable-systemd-logind +endif + +# Xwayland support needs libdrm, libepoxy, wayland and libxcomposite +ifeq ($(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_LIBEPOXY)$(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_WAYLAND_PROTOCOLS)$(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),yyyyy) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-xwayland +XSERVER_XORG_SERVER_DEPENDENCIES += libdrm libepoxy wayland wayland-protocols xlib_libXcomposite +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-xwayland +endif + +# Present protocol only required for xserver 1.15+, but does not matter if +# enabled for older versions as they don't use it (not even optionally). +ifeq ($(BR2_PACKAGE_XPROTO_PRESENTPROTO),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xproto_presentproto +endif + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR),y) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-xorg +XSERVER_XORG_SERVER_DEPENDENCIES += libpciaccess +ifeq ($(BR2_PACKAGE_LIBDRM),y) +XSERVER_XORG_SERVER_DEPENDENCIES += libdrm +XSERVER_XORG_SERVER_CONF_OPTS += --enable-libdrm +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-libdrm +endif +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-xorg +endif + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE),y) +XSERVER_XORG_SERVER_CONF_OPTS += \ + --enable-kdrive \ + --enable-xfbdev \ + --disable-glx \ + --disable-dri \ + --disable-xsdl +define XSERVER_CREATE_X_SYMLINK + ln -f -s Xfbdev $(TARGET_DIR)/usr/bin/X +endef +XSERVER_XORG_SERVER_POST_INSTALL_TARGET_HOOKS += XSERVER_CREATE_X_SYMLINK + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_EVDEV),y) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-kdrive-evdev +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-kdrive-evdev +endif + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_KBD),y) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-kdrive-kbd +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-kdrive-kbd +endif + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_MOUSE),y) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-kdrive-mouse +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-kdrive-mouse +endif + +else # modular +XSERVER_XORG_SERVER_CONF_OPTS += --disable-kdrive --disable-xfbdev +endif + +ifeq ($(BR2_PACKAGE_MESA3D_DRI_DRIVER),y) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri --enable-glx +XSERVER_XORG_SERVER_DEPENDENCIES += mesa3d xproto_xf86driproto +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-dri --disable-glx +endif + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX),y) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-aiglx +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-aiglx +endif + +# Optional packages +ifeq ($(BR2_PACKAGE_TSLIB),y) +XSERVER_XORG_SERVER_DEPENDENCIES += tslib +XSERVER_XORG_SERVER_CONF_OPTS += --enable-tslib LDFLAGS="-lts" +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +XSERVER_XORG_SERVER_DEPENDENCIES += udev +XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-udev +# udev kms support depends on libdrm and dri2 +ifeq ($(BR2_PACKAGE_LIBDRM)$(BR2_PACKAGE_XPROTO_DRI2PROTO),yy) +XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-udev-kms +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-config-udev-kms +endif +endif + +ifeq ($(BR2_PACKAGE_DBUS),y) +XSERVER_XORG_SERVER_DEPENDENCIES += dbus +XSERVER_XORG_SERVER_CONF_OPTS += --enable-config-dbus +endif + +ifeq ($(BR2_PACKAGE_FREETYPE),y) +XSERVER_XORG_SERVER_DEPENDENCIES += freetype +endif + +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +XSERVER_XORG_SERVER_DEPENDENCIES += libunwind +XSERVER_XORG_SERVER_CONF_OPTS += --enable-libunwind +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-libunwind +endif + +ifeq ($(BR2_PACKAGE_XPROTO_RECORDPROTO),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xproto_recordproto +XSERVER_XORG_SERVER_CONF_OPTS += --enable-record +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-record +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFONT2),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libXfont2 +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFONT),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libXfont +endif + +ifneq ($(BR2_PACKAGE_XLIB_LIBXVMC),y) +XSERVER_XORG_SERVER_CONF_OPTS += --disable-xvmc +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libXcomposite +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-composite +endif + +ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR),y) +ifeq ($(BR2_PACKAGE_XPROTO_DRI2PROTO),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xproto_dri2proto +XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri2 +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-dri2 +endif +ifeq ($(BR2_PACKAGE_XLIB_LIBXSHMFENCE)$(BR2_PACKAGE_XPROTO_DRI3PROTO),yy) +XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libxshmfence xproto_dri3proto +XSERVER_XORG_SERVER_CONF_OPTS += --enable-dri3 +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGL)$(BR2_PACKAGE_LIBEPOXY),yyy) +XSERVER_XORG_SERVER_DEPENDENCIES += libepoxy +XSERVER_XORG_SERVER_CONF_OPTS += --enable-glamor +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-glamor +endif +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-dri3 --disable-glamor +endif +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-dri2 --disable-dri3 --disable-glamor +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXSCRNSAVER),y) +XSERVER_XORG_SERVER_DEPENDENCIES += xlib_libXScrnSaver +XSERVER_XORG_SERVER_CONF_OPTS += --enable-screensaver +else +XSERVER_XORG_SERVER_CONF_OPTS += --disable-screensaver +endif + +ifneq ($(BR2_PACKAGE_XLIB_LIBDMX),y) +XSERVER_XORG_SERVER_CONF_OPTS += --disable-dmx +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +XSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libcrypto +XSERVER_XORG_SERVER_DEPENDENCIES += openssl +else ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) +XSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libgcrypt +XSERVER_XORG_SERVER_DEPENDENCIES += libgcrypt +else +XSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libsha1 +XSERVER_XORG_SERVER_DEPENDENCIES += libsha1 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xutil_makedepend/Config.in b/buildroot/package/x11r7/xutil_makedepend/Config.in new file mode 100644 index 0000000..0b091b0 --- /dev/null +++ b/buildroot/package/x11r7/xutil_makedepend/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XUTIL_MAKEDEPEND + bool "makedepend" + help + No description available diff --git a/buildroot/package/x11r7/xutil_makedepend/xutil_makedepend.hash b/buildroot/package/x11r7/xutil_makedepend/xutil_makedepend.hash new file mode 100644 index 0000000..5965511 --- /dev/null +++ b/buildroot/package/x11r7/xutil_makedepend/xutil_makedepend.hash @@ -0,0 +1,2 @@ +# From http://article.gmane.org/gmane.comp.freedesktop.xorg.announce/2007 +sha256 f7a80575f3724ac3d9b19eaeab802892ece7e4b0061dd6425b4b789353e25425 makedepend-1.0.5.tar.bz2 diff --git a/buildroot/package/x11r7/xutil_makedepend/xutil_makedepend.mk b/buildroot/package/x11r7/xutil_makedepend/xutil_makedepend.mk new file mode 100644 index 0000000..6fd3c1a --- /dev/null +++ b/buildroot/package/x11r7/xutil_makedepend/xutil_makedepend.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xutil_makedepend +# +################################################################################ + +XUTIL_MAKEDEPEND_VERSION = 1.0.5 +XUTIL_MAKEDEPEND_SOURCE = makedepend-$(XUTIL_MAKEDEPEND_VERSION).tar.bz2 +XUTIL_MAKEDEPEND_SITE = http://xorg.freedesktop.org/releases/individual/util +XUTIL_MAKEDEPEND_LICENSE = MIT +XUTIL_MAKEDEPEND_LICENSE_FILES = COPYING + +XUTIL_MAKEDEPEND_DEPENDENCIES = xproto_xproto +HOST_XUTIL_MAKEDEPEND_DEPENDENCIES = host-xproto_xproto + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch b/buildroot/package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch new file mode 100644 index 0000000..31b5cfe --- /dev/null +++ b/buildroot/package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch @@ -0,0 +1,27 @@ +From d6919c0be7f531b20cbfcb9929d697ac3c132c40 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20K=C4=99pie=C5=84?= +Date: Wed, 12 Oct 2016 15:17:51 +0200 +Subject: [PATCH] Fix compiler detection when using + --without-{crypt,crypto,ssl} + +(cherry picked from commit d6919c0be7f531b20cbfcb9929d697ac3c132c40) +Signed-off-by: Romain Naour +--- + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure.ac b/configure.ac +index 55724bc..bdfff94 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -5,6 +5,7 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + AM_CONFIG_HEADER(config.h) + AC_CONFIG_MACRO_DIR([m4]) + ++AC_PROG_CC + AC_PROG_SED + + # some OS's need both -lssl and -lcrypto on link line: +-- +2.9.3 + diff --git a/buildroot/package/x11vnc/Config.in b/buildroot/package/x11vnc/Config.in new file mode 100644 index 0000000..9e91a11 --- /dev/null +++ b/buildroot/package/x11vnc/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_X11VNC + bool "x11vnc" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + depends on !BR2_nios2 # libvncserver + select BR2_PACKAGE_LIBVNCSERVER + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXTST + help + VNC server for X11 display + + http://www.karlrunge.com/x11vnc/ diff --git a/buildroot/package/x11vnc/x11vnc.hash b/buildroot/package/x11vnc/x11vnc.hash new file mode 100644 index 0000000..3cdbfa1 --- /dev/null +++ b/buildroot/package/x11vnc/x11vnc.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 45f87c5e4382988c73e8c7891ac2bfb45d8f9ce1196ae06651c84636684ea143 x11vnc-0.9.14.tar.gz diff --git a/buildroot/package/x11vnc/x11vnc.mk b/buildroot/package/x11vnc/x11vnc.mk new file mode 100644 index 0000000..f1f4da2 --- /dev/null +++ b/buildroot/package/x11vnc/x11vnc.mk @@ -0,0 +1,67 @@ +################################################################################ +# +# x11vnc +# +################################################################################ + +X11VNC_VERSION = 0.9.14 +X11VNC_SITE = $(call github,LibVNC,x11vnc,$(X11VNC_VERSION)) +# sdl support is not used in x11vnc, but host include / library search paths +# leak in if host has sdl-config +X11VNC_CONF_OPTS = --without-sdl +X11VNC_DEPENDENCIES = xlib_libXt xlib_libXext xlib_libXtst libvncserver +X11VNC_LICENSE = GPL-2.0+ +X11VNC_LICENSE_FILES = COPYING + +# Source coming from github, no configure included +X11VNC_AUTORECONF = YES + +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy) +X11VNC_DEPENDENCIES += avahi dbus +else +X11VNC_CONF_OPTS += --without-avahi +endif + +ifeq ($(BR2_PACKAGE_JPEG),y) +X11VNC_DEPENDENCIES += jpeg +else +X11VNC_CONF_OPTS += --without-jpeg +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +X11VNC_DEPENDENCIES += openssl +else +X11VNC_CONF_OPTS += --without-ssl --without-crypto +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +X11VNC_DEPENDENCIES += xlib_libXinerama +else +X11VNC_CONF_OPTS += --without-xinerama +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) +X11VNC_DEPENDENCIES += xlib_libXrandr +else +X11VNC_CONF_OPTS += --without-xrandr +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) +X11VNC_DEPENDENCIES += xlib_libXfixes +else +X11VNC_CONF_OPTS += --without-xfixes +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) +X11VNC_DEPENDENCIES += xlib_libXdamage +else +X11VNC_CONF_OPTS += --without-xdamage +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +X11VNC_DEPENDENCIES += zlib +else +X11VNC_CONF_OPTS += --without-zlib +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/x264/Config.in b/buildroot/package/x264/Config.in new file mode 100644 index 0000000..be3ab3f --- /dev/null +++ b/buildroot/package/x264/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_X264 + bool "x264" + help + x264 is a free software library and application for + encoding video streams into the H.264/MPEG-4 AVC + compression format, and is released under the terms + of the GNU GPL. + + https://www.videolan.org/developers/x264.html + +if BR2_PACKAGE_X264 + +config BR2_PACKAGE_X264_CLI + bool "CLI" + help + Command-line tool to encode video streams into the + H.264/MPEG-4 AVC compression format. + +endif diff --git a/buildroot/package/x264/x264.hash b/buildroot/package/x264/x264.hash new file mode 100644 index 0000000..f0e9f1b --- /dev/null +++ b/buildroot/package/x264/x264.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 986863122b0b3ac2c1fa27c6e3932c3490b84287335fa162bca020aa815aa695 x264-ba24899b0bf23345921da022f7a51e0c57dbe73d.tar.gz diff --git a/buildroot/package/x264/x264.mk b/buildroot/package/x264/x264.mk new file mode 100644 index 0000000..e14077a --- /dev/null +++ b/buildroot/package/x264/x264.mk @@ -0,0 +1,69 @@ +################################################################################ +# +# x264 +# +################################################################################ + +X264_VERSION = ba24899b0bf23345921da022f7a51e0c57dbe73d +X264_SITE = git://git.videolan.org/x264.git +X264_LICENSE = GPL-2.0+ +X264_DEPENDENCIES = host-pkgconf +X264_LICENSE_FILES = COPYING +X264_INSTALL_STAGING = YES +X264_CONF_OPTS = --disable-avs --disable-lavf --disable-swscale + +ifeq ($(BR2_i386)$(BR2_x86_64),y) +# nasm needed for assembly files +X264_DEPENDENCIES += host-nasm +X264_CONF_ENV += AS="$(HOST_DIR)/bin/nasm" +else ifeq ($(BR2_ARM_CPU_ARMV7A)$(BR2_aarch64),y) +# We need to pass gcc as AS, because the ARM assembly files have to be +# preprocessed +X264_CONF_ENV += AS="$(TARGET_CC)" +else +X264_CONF_OPTS += --disable-asm +endif + +ifeq ($(BR2_STATIC_LIBS),) +X264_CONF_OPTS += --enable-pic --enable-shared +endif + +ifeq ($(BR2_PACKAGE_X264_CLI),) +X264_CONF_OPTS += --disable-cli +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) +X264_CONF_OPTS += --disable-thread +endif + +# Even though the configure script is not generated by autoconf, x264 +# uses config.sub/config.guess, so we want up-to-date versions of +# them. +X264_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK + +# the configure script is not generated by autoconf +define X264_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) $(X264_CONF_ENV) ./configure \ + --prefix=/usr \ + --host="$(GNU_TARGET_NAME)" \ + --cross-prefix="$(TARGET_CROSS)" \ + --disable-ffms \ + --enable-static \ + --disable-opencl \ + $(X264_CONF_OPTS) \ + ) +endef + +define X264_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define X264_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(STAGING_DIR)" -C $(@D) install +endef + +define X264_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)" -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/x265/0001-fix-gcc-options.patch b/buildroot/package/x265/0001-fix-gcc-options.patch new file mode 100644 index 0000000..8151821 --- /dev/null +++ b/buildroot/package/x265/0001-fix-gcc-options.patch @@ -0,0 +1,52 @@ +# HG changeset patch +# User Bertrand Jacquin +# Date 1444431941 -3600 +# Node ID 5c6d2a6f2f9a0534933cc999b3845be4344e1af0 +# Parent b6156a08b1def3584647f26096866c1a0c11e54a +build: Disable -march selection from CMakeLists.txt + +x32 arch as defined on https://sites.google.com/site/x32abi is neither +X86 nor X64, then forcing -march=i686 leads to build failure as wrong +-march is used. + +Forcing -march, -mfloat-abi and -mfpu for ARM is also wrong + +As a global sanity sake, disable all forced -march in CMakeLists + +Backported from upstream pull request: +https://bitbucket.org/multicoreware/x265/pull-requests/21 + +Signed-off-by: Bernd Kuhls + +diff -r 58dddcf01b7d source/CMakeLists.txt +--- a/source/CMakeLists.txt Mon Jan 23 09:50:33 2017 +0530 ++++ b/source/CMakeLists.txt Mon Jan 23 21:03:10 2017 +0100 +@@ -194,28 +194,6 @@ + if(NATIVE_BUILD) + if(INTEL_CXX) + add_definitions(-xhost) +- else() +- add_definitions(-march=native) +- endif() +- elseif(X86 AND NOT X64) +- string(FIND "${CMAKE_CXX_FLAGS}" "-march" marchPos) +- if(marchPos LESS "0") +- add_definitions(-march=i686) +- if(WIN32 AND NOT INTEL_CXX AND NOT CLANG AND +- CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0 AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0) +- add_definitions(-mpreferred-stack-boundary=2) +- endif() +- endif() +- endif() +- if(ARM AND CROSS_COMPILE_ARM) +- set(ARM_ARGS -march=armv6 -mfloat-abi=soft -mfpu=vfp -marm -fPIC) +- elseif(ARM) +- find_package(Neon) +- if(CPU_HAS_NEON) +- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC) +- add_definitions(-DHAVE_NEON) +- else() +- set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm) + endif() + endif() + add_definitions(${ARM_ARGS}) diff --git a/buildroot/package/x265/Config.in b/buildroot/package/x265/Config.in new file mode 100644 index 0000000..cc39d6c --- /dev/null +++ b/buildroot/package/x265/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_X265 + bool "x265" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # dlfcn + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + help + x265 is an open source free software and library for + encoding video using the High Efficiency Video Coding + (HEVC/H.265) standard. x265 is offered under either the GNU + General Public License (GPL) 2 license or a commercial + license, similar to the x264 project. + + http://x265.org + +if BR2_PACKAGE_X265 + +config BR2_PACKAGE_X265_CLI + bool "CLI" + help + Command-line tool to encode video streams into the + H.265/HEVC compression format. + +endif + +comment "x265 needs a toolchain w/ C++, threads, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 diff --git a/buildroot/package/x265/x265.hash b/buildroot/package/x265/x265.hash new file mode 100644 index 0000000..3e44b03 --- /dev/null +++ b/buildroot/package/x265/x265.hash @@ -0,0 +1,2 @@ +# Locally generated +sha256 2e53259b504a7edb9b21b9800163b1ff4c90e60c74e23e7001d423c69c5d3d17 x265_2.5.tar.gz diff --git a/buildroot/package/x265/x265.mk b/buildroot/package/x265/x265.mk new file mode 100644 index 0000000..ae570e6 --- /dev/null +++ b/buildroot/package/x265/x265.mk @@ -0,0 +1,37 @@ +################################################################################ +# +# x265 +# +################################################################################ + +X265_VERSION = 2.5 +X265_SOURCE = x265_$(X265_VERSION).tar.gz +X265_SITE = https://bitbucket.org/multicoreware/x265/downloads +X265_LICENSE = GPL-2.0+ +X265_LICENSE_FILES = COPYING +X265_SUBDIR = source +X265_INSTALL_STAGING = YES + +ifeq ($(BR2_i386)$(BR2_x86_64),y) +X265_DEPENDENCIES += host-yasm +endif + +# disable altivec, it has build issues +# https://bitbucket.org/multicoreware/x265/issues/320/ +ifeq ($(BR2_powerpc64)$(BR2_powerpc64le),y) +X265_CONF_OPTS += -DENABLE_ALTIVEC=OFF +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +X265_CONF_OPTS += -DENABLE_SHARED=ON -DENABLE_PIC=ON +else +X265_CONF_OPTS += -DENABLE_SHARED=OFF +endif + +ifeq ($(BR2_PACKAGE_X265_CLI),y) +X265_CONF_OPTS += -DENABLE_CLI=ON +else +X265_CONF_OPTS += -DENABLE_CLI=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/xavante/Config.in b/buildroot/package/xavante/Config.in new file mode 100644 index 0000000..d66ca1f --- /dev/null +++ b/buildroot/package/xavante/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_XAVANTE + bool "xavante" + # Runtime dependency only + select BR2_PACKAGE_COPAS + select BR2_PACKAGE_LUAFILESYSTEM + select BR2_PACKAGE_LUASOCKET + help + Xavante is a Lua HTTP 1.1 Web server that uses a modular + architecture based on URI mapped handlers. Xavante currently + offers a file handler, a redirect handler and a WSAPI handler. + Those are used for general files, URI remapping and WSAPI + applications respectively. + + http://keplerproject.github.com/xavante/ diff --git a/buildroot/package/xavante/xavante.hash b/buildroot/package/xavante/xavante.hash new file mode 100644 index 0000000..09b2a22 --- /dev/null +++ b/buildroot/package/xavante/xavante.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 67c738f981e7d65d18c717f3acac59a37f95d5139c00fb0de5d3167262025273 xavante-2.4.0-1.src.rock diff --git a/buildroot/package/xavante/xavante.mk b/buildroot/package/xavante/xavante.mk new file mode 100644 index 0000000..d962e7b --- /dev/null +++ b/buildroot/package/xavante/xavante.mk @@ -0,0 +1,11 @@ +################################################################################ +# +# xavante +# +################################################################################ + +XAVANTE_VERSION = 2.4.0-1 +XAVANTE_LICENSE = MIT +XAVANTE_LICENSE_FILES = $(XAVANTE_SUBDIR)/doc/us/license.html + +$(eval $(luarocks-package)) diff --git a/buildroot/package/xdotool/Config.in b/buildroot/package/xdotool/Config.in new file mode 100644 index 0000000..4fb8a49 --- /dev/null +++ b/buildroot/package/xdotool/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_XDOTOOL + bool "xdotool" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_XLIB_LIBXTST + select BR2_PACKAGE_XLIB_LIBXINERAMA + select BR2_PACKAGE_LIBXKBCOMMON + select BR2_PACKAGE_XLIB_LIBX11 + help + Command-line X11 automation tool + + http://www.semicomplete.com/projects/xdotool diff --git a/buildroot/package/xdotool/xdotool.hash b/buildroot/package/xdotool/xdotool.hash new file mode 100644 index 0000000..f8adcd5 --- /dev/null +++ b/buildroot/package/xdotool/xdotool.hash @@ -0,0 +1,2 @@ +# locally computed hash +sha256 b097ef0e3897d1a24e3f45f0faed58329742d3d9434b9b46eb97eb1040f999bf xdotool-v3.20150503.1.tar.gz diff --git a/buildroot/package/xdotool/xdotool.mk b/buildroot/package/xdotool/xdotool.mk new file mode 100644 index 0000000..c18885c --- /dev/null +++ b/buildroot/package/xdotool/xdotool.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# xdotool +# +################################################################################ + +XDOTOOL_VERSION = v3.20150503.1 +XDOTOOL_SITE = $(call github,jordansissel,xdotool,$(XDOTOOL_VERSION)) +XDOTOOL_LICENSE = BSD-3-Clause +XDOTOOL_LICENSE_FILES = COPYRIGHT +XDOTOOL_DEPENDENCIES = xlib_libXtst xlib_libXinerama libxkbcommon xlib_libX11 + +define XDOTOOL_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) +endef + +# Avoid 'install' target to skip 'post-install' which runs ldconfig on host +define XDOTOOL_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ + pre-install installlib installprog installheader \ + PREFIX="$(TARGET_DIR)/usr" +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/xen/0001-xen-Rules.mk-fix-build-with-CFLAGS-from-environment.patch b/buildroot/package/xen/0001-xen-Rules.mk-fix-build-with-CFLAGS-from-environment.patch new file mode 100644 index 0000000..0d4e581 --- /dev/null +++ b/buildroot/package/xen/0001-xen-Rules.mk-fix-build-with-CFLAGS-from-environment.patch @@ -0,0 +1,36 @@ +From 2a310549aaeaba05f640ade43488bb893101ce4a Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sat, 29 Oct 2016 16:35:26 +0200 +Subject: [PATCH] xen/Rules.mk: fix build with CFLAGS from environment + +When CFLAGS are passed from the environment, the first-level make +invocation will append -D__OBJECT_FILE__ to it, then call a second +make invocation, that will have those new CFLAGS in its environment, +but will also append -D__OBJECT_FILE__ to those. + +Then, the compiler fails because __OBEJECT_FILE__ is defined twice. + +Just undefine it before defining it again, as a *workaround* to this +issue. + +Signed-off-by: "Yann E. MORIN" +--- + xen/Rules.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xen/Rules.mk b/xen/Rules.mk +index a9fda71..09ccbfa 100644 +--- a/xen/Rules.mk ++++ b/xen/Rules.mk +@@ -49,7 +49,7 @@ ALL_OBJS-$(CONFIG_CRYPTO) += $(BASEDIR)/crypto/built_in.o + CFLAGS += -nostdinc -fno-builtin -fno-common + CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith + CFLAGS += -pipe -g -D__XEN__ -include $(BASEDIR)/include/xen/config.h +-CFLAGS += '-D__OBJECT_FILE__="$@"' ++CFLAGS += -U__OBJECT_FILE__ '-D__OBJECT_FILE__="$@"' + + ifneq ($(clang),y) + # Clang doesn't understand this command line argument, and doesn't appear to +-- +2.7.4 + diff --git a/buildroot/package/xen/0002-9pfs-include-linux-limits.h-for-XATTR_SIZE_MAX.patch b/buildroot/package/xen/0002-9pfs-include-linux-limits.h-for-XATTR_SIZE_MAX.patch new file mode 100644 index 0000000..b681b94 --- /dev/null +++ b/buildroot/package/xen/0002-9pfs-include-linux-limits.h-for-XATTR_SIZE_MAX.patch @@ -0,0 +1,43 @@ +Message-Id: <07010a2ad79559c412949f0005dbe3cb03d8416e.1498504812.git.ps@pks.im> +From: Patrick Steinhardt +Date: Mon, 26 Jun 2017 21:20:45 +0200 +Subject: [PATCH] 9pfs: include for XATTR_SIZE_MAX + +The function `v9fs_xattrcreate` makes use of the define `XATTR_SIZE_MAX` +to reject attempts of creating xattrs with an invalid size, which is +defined in . On glibc-based systems, this header is +indirectly included via , , +, but on other platforms this is not guaranteed due +to not being part of the POSIX standard. One examples are systems based +on musl libc, which do not include the indirectly, +which leads to `XATTR_SIZE_MAX` being undefined. + +Fix this error by directly include . As the 9P fs code +is being Linux-based either way, we can simply do so without breaking +other platforms. This enables building 9pfs on musl-based systems. + +Signed-off-by: Patrick Steinhardt +[ Changes by AF + - Apply to the QEMU tree inside of Xen +] +Signed-off-by: Alistair Francis +--- +Upstream Status: Pending review and acceptance + + tools/qemu-xen/hw/9pfs/9p.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tools/qemu-xen/hw/9pfs/9p.c b/tools/qemu-xen/hw/9pfs/9p.c +index 96d2683348..48cd558e96 100644 +--- a/tools/qemu-xen/hw/9pfs/9p.c ++++ b/tools/qemu-xen/hw/9pfs/9p.c +@@ -13,6 +13,7 @@ + + #include "qemu/osdep.h" + #include ++#include + #include "hw/virtio/virtio.h" + #include "qapi/error.h" + #include "qemu/error-report.h" +-- +2.13.2 diff --git a/buildroot/package/xen/0003-memfd-fix-configure-test.patch b/buildroot/package/xen/0003-memfd-fix-configure-test.patch new file mode 100644 index 0000000..95cb49b --- /dev/null +++ b/buildroot/package/xen/0003-memfd-fix-configure-test.patch @@ -0,0 +1,62 @@ +From 75e5b70e6b5dcc4f2219992d7cffa462aa406af0 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini +Date: Tue, 28 Nov 2017 11:51:27 +0100 +Subject: [PATCH] memfd: fix configure test +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Recent glibc added memfd_create in sys/mman.h. This conflicts with +the definition in util/memfd.c: + + /builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration + +Fix the configure test, and remove the sys/memfd.h inclusion since the +file actually does not exist---it is a typo in the memfd_create(2) man +page. + +Cc: Marc-André Lureau +Signed-off-by: Paolo Bonzini +Signed-off-by: Baruch Siach +[ Changes by AF: + - Port the patch to the qemu-xen tree +] +Signed-off-by: Alistair Francis +--- +Upstream status: commit 75e5b70e6b5 + + configure | 2 +- + util/memfd.c | 4 +--- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/configure b/configure +index 9c8aa5a98bd4..99ccc1725ace 100755 +--- a/tools/qemu-xen/configure ++++ b/tools/qemu-xen/configure +@@ -3923,7 +3923,7 @@ fi + # check if memfd is supported + memfd=no + cat > $TMPC << EOF +-#include ++#include + + int main(void) + { +diff --git a/util/memfd.c b/util/memfd.c +index 4571d1aba866..412e94a405fc 100644 +--- a/tools/qemu-xen/util/memfd.c ++++ b/tools/qemu-xen/util/memfd.c +@@ -31,9 +31,7 @@ + + #include "qemu/memfd.h" + +-#ifdef CONFIG_MEMFD +-#include +-#elif defined CONFIG_LINUX ++#if defined CONFIG_LINUX && !defined CONFIG_MEMFD + #include + #include + +-- +2.16.2 + diff --git a/buildroot/package/xen/Config.in b/buildroot/package/xen/Config.in new file mode 100644 index 0000000..819af37 --- /dev/null +++ b/buildroot/package/xen/Config.in @@ -0,0 +1,44 @@ +config BR2_PACKAGE_XEN + bool "xen" + # needs "dmb" on ARM, so ARM >= v7 + depends on BR2_ARM_CPU_ARMV7A || BR2_aarch64 + select BR2_PACKAGE_XEN_HYPERVISOR if !BR2_PACKAGE_XEN_TOOLS + help + This package builds the Xen hypervisor and toolstack. + + http://www.xenproject.org/ + +if BR2_PACKAGE_XEN + +config BR2_PACKAGE_XEN_HYPERVISOR + bool "Xen hypervisor" + help + The Xen binaries are avaliable in /usr/lib/xen/ See + http://wiki.xenproject.org/wiki/Getting_Started for using + the Xen hypervisor. + +config BR2_PACKAGE_XEN_TOOLS + bool "Xen tools" + depends on !BR2_STATIC_LIBS # dtc (libfdt) + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2 + depends on BR2_USE_WCHAR # libglib2 + select BR2_PACKAGE_DTC + select BR2_PACKAGE_LIBAIO + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_PIXMAN + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_YAJL + select BR2_PACKAGE_ARGP_STANDALONE if !BR2_TOOLCHAIN_USES_GLIBC + help + The Xen tools can be accessed by the xl command. + +comment "xen tools need a toolchain w/ wchar, threads, dynamic library" + depends on BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS + +endif diff --git a/buildroot/package/xen/xen.hash b/buildroot/package/xen/xen.hash new file mode 100644 index 0000000..5daebd4 --- /dev/null +++ b/buildroot/package/xen/xen.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 570d654f357d4085accdf752989c1cbc33e2075feac8fcc505d68bdb81b1a0cf xen-4.10.1.tar.gz +sha256 dba0d79260259c013c52e5d4daeaea564a2fbb9ff7fc6778c377a401ec3898de COPYING diff --git a/buildroot/package/xen/xen.mk b/buildroot/package/xen/xen.mk new file mode 100644 index 0000000..29699cf --- /dev/null +++ b/buildroot/package/xen/xen.mk @@ -0,0 +1,60 @@ +################################################################################ +# +# Xen +# +################################################################################ + +XEN_VERSION = 4.10.1 +XEN_SITE = https://downloads.xenproject.org/release/xen/$(XEN_VERSION) +XEN_LICENSE = GPL-2.0 +XEN_LICENSE_FILES = COPYING +XEN_DEPENDENCIES = host-acpica host-python + +# Calculate XEN_ARCH +ifeq ($(ARCH),aarch64) +XEN_ARCH = arm64 +else ifeq ($(ARCH),arm) +XEN_ARCH = arm32 +endif + +XEN_CONF_OPTS = \ + --disable-ocamltools \ + --with-initddir=/etc/init.d + +XEN_CONF_ENV = PYTHON=$(HOST_DIR)/bin/python2 +XEN_MAKE_ENV = \ + XEN_TARGET_ARCH=$(XEN_ARCH) \ + CROSS_COMPILE=$(TARGET_CROSS) \ + HOST_EXTRACFLAGS="-Wno-error" \ + $(TARGET_CONFIGURE_OPTS) + +ifeq ($(BR2_PACKAGE_XEN_HYPERVISOR),y) +XEN_MAKE_OPTS += dist-xen +XEN_INSTALL_IMAGES = YES +define XEN_INSTALL_IMAGES_CMDS + cp $(@D)/xen/xen $(BINARIES_DIR) +endef +else +XEN_CONF_OPTS += --disable-xen +endif + +ifeq ($(BR2_PACKAGE_XEN_TOOLS),y) +XEN_DEPENDENCIES += dtc libaio libglib2 ncurses openssl pixman util-linux yajl +ifeq ($(BR2_PACKAGE_ARGP_STANDALONE),y) +XEN_DEPENDENCIES += argp-standalone +endif +XEN_INSTALL_TARGET_OPTS += DESTDIR=$(TARGET_DIR) install-tools +XEN_MAKE_OPTS += dist-tools +XEN_CONF_OPTS += --with-extra-qemuu-configure-args="--disable-sdl" + +define XEN_INSTALL_INIT_SYSV + mv $(TARGET_DIR)/etc/init.d/xencommons $(TARGET_DIR)/etc/init.d/S50xencommons + mv $(TARGET_DIR)/etc/init.d/xen-watchdog $(TARGET_DIR)/etc/init.d/S50xen-watchdog + mv $(TARGET_DIR)/etc/init.d/xendomains $(TARGET_DIR)/etc/init.d/S60xendomains +endef +else +XEN_INSTALL_TARGET = NO +XEN_CONF_OPTS += --disable-tools +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/xenomai/Config.in b/buildroot/package/xenomai/Config.in new file mode 100644 index 0000000..e0118c1 --- /dev/null +++ b/buildroot/package/xenomai/Config.in @@ -0,0 +1,192 @@ +config BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS + bool + default y + depends on BR2_i386 || BR2_x86_64 || (BR2_arm && !BR2_ARM_CPU_ARMV7M) || \ + BR2_bfin || BR2_powerpc + +comment "xenomai needs an glibc or uClibc toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL + depends on BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS + +config BR2_PACKAGE_XENOMAI + bool "Xenomai Userspace" + depends on BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + # uses , __WORDSIZE and bits/local_lim.h + depends on !BR2_TOOLCHAIN_USES_MUSL + help + Real-Time Framework for Linux + http://www.xenomai.org + + Xenomai is split in two parts: a kernel part and an + userspace part. + + This package contains the userspace part, which consists + mainly in libraries to write userspace real-time programs + that interact with the in-kernel Xenomai real-time core. + + For those libraries to work, you need a Xenomai-enabled + kernel. This is possible in two ways: + - if you compile your kernel with Buildroot, you need to go + to Linux Kernel -> Linux Kernel Extensions to enable the + Xenomai extension. + - if you compile your kernel outside of Buildroot, you need + to make sure that it is Xenomai-enabled. + + Finally, if you are using a static /dev, make sure to + uncomment the Xenomai entries listed in + target/generic/device_table_dev.txt. + +if BR2_PACKAGE_XENOMAI + +config BR2_PACKAGE_XENOMAI_VERSION + string "Custom Xenomai version" + help + Manually select Xenomai version. If left empty, the default + version will be used. + + Make sure that the selected version has a patch for your + selected Linux kernel. If it does not, download and select + a patch manually with + BR2_LINUX_KERNEL_EXT_XENOMAI_ADEOS_PATCH, in the Linux + Kernel -> Linux Kernel Extensions menu. + +choice + prompt "Xenomai core" + default BR2_PACKAGE_XENOMAI_MERCURY + help + Select the Xenomai core: dual kernel (Cobalt) + or native Linux Kernel (Mercury). + +config BR2_PACKAGE_XENOMAI_MERCURY + bool "Mercury" + depends on !BR2_LINUX_KERNEL_EXT_XENOMAI + help + Select Mercury core for the Xenomai userspace. + You want to use it if you have the native Linux Kernel. + +config BR2_PACKAGE_XENOMAI_COBALT + bool "Cobalt" + help + Select Cobalt core (dual kernel) for the Xenomai + userspace. Use this if you use a Xenomai-patched + Linux kernel. + + If you want to use Cobalt core, your kernel must have + the Adeos and Xenomai patches applied to it. You can + add these through the BR2_LINUX_KERNEL_EXT_XENOMAI option + in the Linux Kernel Extensions menu. +endchoice + +config BR2_PACKAGE_XENOMAI_ENABLE_SMP + bool "Enable SMP support" + default y + help + This option enables SMP support in Xenomai userspace. + + If this option is turned on while no SMP support is enabled + in the kernel, things will still work. However, if SMP is + enabled in the kernel but this option is not turned on, + Xenomai applications will complain with: + + feature mismatch: missing="smp/nosmp" + + Please refer to this troubleshooting guide for more + information: + + http://xenomai.org/troubleshooting-a-dual-kernel-configuration/#feature_mismatch_missing8221smpnosmp8221 + +config BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY + bool "Enable registry" + depends on !BR2_STATIC_LIBS # libfuse + depends on BR2_TOOLCHAIN_HAS_THREADS # libfuse + depends on BR2_USE_MMU # libfuse + select BR2_PACKAGE_LIBFUSE + help + Xenomai APIs can export their internal state through a + pseudo-filesystem, whose files may be read to obtain + information about the existing real-time objects, such as + tasks, semaphores, message queues and so on. + +comment "registry needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY_PATH + string "Custom registry root path" + depends on BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY + help + Specify the root path of the registry here. + To use the Xenomai default (currently: /var/run/xenomai), + leave this option empty. + +config BR2_PACKAGE_XENOMAI_ADDITIONAL_CONF_OPTS + string "Additional configure options" + help + Specify any additional options to pass to the configure + script here. See Xenomai documentation for details. + +config BR2_PACKAGE_XENOMAI_TESTSUITE + bool "Install testsuite" + help + This option allows to install the Xenomai test programs. + +config BR2_PACKAGE_XENOMAI_RTCAN + bool "RTCan utilities" + help + This option allows to install the Xenomai RT-CAN utilities. + +config BR2_PACKAGE_XENOMAI_ANALOGY + bool "Analogy libs and utils" + help + This option allows to install the Xenomai Analogy utilities + and libraries + +menu "Skin selection" + +config BR2_PACKAGE_XENOMAI_NATIVE_SKIN + bool "Alchemy (native) skin" + default y + help + This option allows to install the Alchemy Xenomai skin, + previously called 'native' + +config BR2_PACKAGE_XENOMAI_POSIX_SKIN + bool "POSIX skin" + default y + help + This option allows to install the POSIX Xenomai skin + +config BR2_PACKAGE_XENOMAI_PSOS_SKIN + bool "pSOS skin" + help + This option allows to install the pSOS Xenomai skin + +config BR2_PACKAGE_XENOMAI_RTAI_SKIN + bool "RTAI skin" + help + This option allows to install the RTAI Xenomai skin + +config BR2_PACKAGE_XENOMAI_SMOKEY_SKIN + bool "Smokey skin" + help + This option allows to install the Smokey Xenomai skin + +config BR2_PACKAGE_XENOMAI_UITRON_SKIN + bool "uITRON skin" + help + This option allows to install the uITRON Xenomai skin + +config BR2_PACKAGE_XENOMAI_VRTX_SKIN + bool "VRTX skin" + help + This option allows to install the VRTX Xenomai skin + +config BR2_PACKAGE_XENOMAI_VXWORKS_SKIN + bool "VxWorks skin" + help + This option allows to install the VxWorks Xenomai skin + +endmenu + +endif diff --git a/buildroot/package/xenomai/xenomai.hash b/buildroot/package/xenomai/xenomai.hash new file mode 100644 index 0000000..c36badb --- /dev/null +++ b/buildroot/package/xenomai/xenomai.hash @@ -0,0 +1,2 @@ +# Locally computed; +sha256 2c0dd3f0e36e4a10f97e0028989bb873e80f4d1ce212ac55fd3b28857c464f94 xenomai-3.0.6.tar.bz2 diff --git a/buildroot/package/xenomai/xenomai.mk b/buildroot/package/xenomai/xenomai.mk new file mode 100644 index 0000000..6bf08ed --- /dev/null +++ b/buildroot/package/xenomai/xenomai.mk @@ -0,0 +1,158 @@ +################################################################################ +# +# xenomai +# +################################################################################ + +XENOMAI_VERSION = $(call qstrip,$(BR2_PACKAGE_XENOMAI_VERSION)) +ifeq ($(XENOMAI_VERSION),) +XENOMAI_VERSION = 3.0.6 +else +BR_NO_CHECK_HASH_FOR += $(XENOMAI_SOURCE) +endif + +XENOMAI_SITE = http://xenomai.org/downloads/xenomai/stable +XENOMAI_SOURCE = xenomai-$(XENOMAI_VERSION).tar.bz2 +XENOMAI_LICENSE = GPL-2.0+ with exception (headers), LGPL-2.1+ (libraries), GPL-2.0+ (kernel), GFDL-1.2+ (docs), GPL-2.0 (ipipe patch, can driver) +# GFDL is not included but refers to gnu.org +XENOMAI_LICENSE_FILES = debian/copyright include/COPYING kernel/cobalt/COPYING \ + kernel/cobalt/posix/COPYING kernel/cobalt/rtdm/COPYING \ + lib/alchemy/COPYING lib/analogy/COPYING \ + lib/boilerplate/iniparser/LICENSE lib/boilerplate/COPYING \ + lib/cobalt/COPYING lib/copperplate/COPYING lib/psos/COPYING \ + lib/smokey/COPYING lib/trank/COPYING lib/vxworks/COPYING + +XENOMAI_DEPENDENCIES = host-pkgconf + +# 0002-boilerplate-build-obstack-support-conditionally.patch +XENOMAI_AUTORECONF = YES + +XENOMAI_INSTALL_STAGING = YES +XENOMAI_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install-user +XENOMAI_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) install-user + +XENOMAI_CONF_OPTS += --includedir=/usr/include/xenomai/ --disable-doc-install + +ifeq ($(BR2_PACKAGE_XENOMAI_MERCURY),y) +XENOMAI_CONF_OPTS += --with-core=mercury +else +XENOMAI_CONF_OPTS += --with-core=cobalt +endif + +ifeq ($(BR2_PACKAGE_XENOMAI_ENABLE_SMP),y) +XENOMAI_CONF_OPTS += --enable-smp +else +XENOMAI_CONF_OPTS += --disable-smp +endif + +ifeq ($(BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY),y) +XENOMAI_DEPENDENCIES += libfuse +XENOMAI_REGISTRY_PATH = $(call qstrip,$(BR2_PACKAGE_XENOMAI_ENABLE_REGISTRY_PATH)) +ifeq ($(XENOMAI_REGISTRY_PATH),) +XENOMAI_CONF_OPTS += --enable-registry +else +XENOMAI_CONF_OPTS += --enable-registry=$(XENOMAI_REGISTRY_PATH) +endif +else +XENOMAI_CONF_OPTS += --disable-registry +endif + +XENOMAI_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_XENOMAI_ADDITIONAL_CONF_OPTS)) + +# Some of these files may be desired by some users -- at that point specific +# config options need to be added to keep a particular set. +define XENOMAI_REMOVE_UNNEEDED_FILES + for i in xeno xeno-config xeno-info wrap-link.sh ; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done + for i in autotune corectl hdb rtnet nomaccfg rtcfg rtifconfig \ + rtiwconfig rtping rtroute tdmacfg rtps slackspot version; do \ + rm -f $(TARGET_DIR)/usr/sbin/$$i ; \ + done +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_UNNEEDED_FILES + +ifeq ($(BR2_PACKAGE_XENOMAI_TESTSUITE),) +define XENOMAI_REMOVE_TESTSUITE + rm -rf $(TARGET_DIR)/usr/share/xenomai/ + for i in clocktest gpiotest latency spitest switchtest \ + xeno-test-run-wrapper dohell xeno-test-run xeno-test ; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done + rm -rf $(TARGET_DIR)/usr/demo/ +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_TESTSUITE +endif + +ifeq ($(BR2_PACKAGE_XENOMAI_RTCAN),) +define XENOMAI_REMOVE_RTCAN_PROGS + for i in rtcanrecv rtcansend ; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done + rm -f $(TARGET_DIR)/usr/sbin/rtcanconfig +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_RTCAN_PROGS +endif + +ifeq ($(BR2_PACKAGE_XENOMAI_ANALOGY),) +define XENOMAI_REMOVE_ANALOGY + for i in cmd_read cmd_write cmd_bits insn_read insn_write insn_bits \ + wf_generate ; do \ + rm -f $(TARGET_DIR)/usr/bin/$$i ; \ + done + for i in analogy_config analogy_calibrate ; do \ + rm -f $(TARGET_DIR)/usr/sbin/$$i ; \ + done + rm -f $(TARGET_DIR)/usr/lib/libanalogy.* +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_ANALOGY +endif + +XENOMAI_REMOVE_SKIN_LIST += $(if $(BR2_PACKAGE_XENOMAI_NATIVE_SKIN),,alchemy) +XENOMAI_REMOVE_SKIN_LIST += $(if $(BR2_PACKAGE_XENOMAI_POSIX_SKIN),,posix) +XENOMAI_REMOVE_SKIN_LIST += $(if $(BR2_PACKAGE_XENOMAI_PSOS_SKIN),,psos) +XENOMAI_REMOVE_SKIN_LIST += $(if $(BR2_PACKAGE_XENOMAI_RTAI_SKIN),,rtai) +XENOMAI_REMOVE_SKIN_LIST += $(if $(BR2_PACKAGE_XENOMAI_SMOKEY_SKIN),,smokey) +XENOMAI_REMOVE_SKIN_LIST += $(if $(BR2_PACKAGE_XENOMAI_UITRON_SKIN),,uitron) +XENOMAI_REMOVE_SKIN_LIST += $(if $(BR2_PACKAGE_XENOMAI_VXWORKS_SKIN),,vxworks) +XENOMAI_REMOVE_SKIN_LIST += $(if $(BR2_PACKAGE_XENOMAI_VRTX_SKIN),,vrtx) + +define XENOMAI_REMOVE_SKINS + for i in $(XENOMAI_REMOVE_SKIN_LIST) ; do \ + rm -f $(TARGET_DIR)/usr/lib/lib$$i.* ; \ + if [ $$i == "posix" ] ; then \ + rm -f $(TARGET_DIR)/usr/lib/posix.wrappers ; \ + fi ; \ + if [ $$i == "smokey" ] ; then \ + rm -f $(TARGET_DIR)/usr/bin/smokey* ; \ + fi ; \ + done +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_REMOVE_SKINS + +define XENOMAI_DEVICES + /dev/rtheap c 666 0 0 10 254 0 0 - + /dev/rtscope c 666 0 0 10 253 0 0 - + /dev/rtp c 666 0 0 150 0 0 1 32 +endef + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +XENOMAI_DEPENDENCIES += udev + +define XENOMAI_INSTALL_UDEV_RULES + if test -d $(TARGET_DIR)/etc/udev/rules.d ; then \ + for f in $(@D)/kernel/cobalt/udev/*.rules ; do \ + cp $$f $(TARGET_DIR)/etc/udev/rules.d/ || exit 1 ; \ + done ; \ + fi; +endef + +XENOMAI_POST_INSTALL_TARGET_HOOKS += XENOMAI_INSTALL_UDEV_RULES +endif # udev + +$(eval $(autotools-package)) diff --git a/buildroot/package/xerces/0001-fix-CVE-2017-12627.patch b/buildroot/package/xerces/0001-fix-CVE-2017-12627.patch new file mode 100644 index 0000000..010be7e --- /dev/null +++ b/buildroot/package/xerces/0001-fix-CVE-2017-12627.patch @@ -0,0 +1,22 @@ +XMLString: Don't call catString if relativePath is null + +https://xerces.apache.org/xerces-c/secadv/CVE-2017-12627.txt + +Upstream status: svn revision 1819998 + +Signed-off-by: Baruch Siach + +--- trunk/src/xercesc/util/PlatformUtils.cpp 2018/01/03 18:58:30 1819997 ++++ trunk/src/xercesc/util/PlatformUtils.cpp 2018/01/03 18:59:30 1819998 +@@ -920,7 +920,10 @@ + + XMLString::subString(tmpBuf, basePath, 0, (basePtr - basePath + 1), manager); + tmpBuf[basePtr - basePath + 1] = 0; +- XMLString::catString(tmpBuf, relativePath); ++ if (relativePath) ++ { ++ XMLString::catString(tmpBuf, relativePath); ++ } + + removeDotSlash(tmpBuf, manager); + diff --git a/buildroot/package/xerces/Config.in b/buildroot/package/xerces/Config.in new file mode 100644 index 0000000..8d55a5c --- /dev/null +++ b/buildroot/package/xerces/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XERCES + bool "xerces-c++" + depends on BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR + help + Xerces-C++ is a validating XML parser written in portable C++. + + http://xml.apache.org/xerces-c/ + +comment "xerces-c++ needs a toolchain w/ C++, wchar" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR) diff --git a/buildroot/package/xerces/xerces.hash b/buildroot/package/xerces/xerces.hash new file mode 100644 index 0000000..c621f5c --- /dev/null +++ b/buildroot/package/xerces/xerces.hash @@ -0,0 +1,2 @@ +# From http://www.apache.org/dist/xerces/c/3/sources/xerces-c-3.1.4.tar.xz.sha256 +sha256 9973cc79481803f8b6652c52faf5195d963f50d209d4f681ec97e2aa014b6241 xerces-c-3.1.4.tar.xz diff --git a/buildroot/package/xerces/xerces.mk b/buildroot/package/xerces/xerces.mk new file mode 100644 index 0000000..a25641f --- /dev/null +++ b/buildroot/package/xerces/xerces.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# xerces +# +################################################################################ + +XERCES_VERSION = 3.1.4 +XERCES_SOURCE = xerces-c-$(XERCES_VERSION).tar.xz +XERCES_SITE = http://archive.apache.org/dist/xerces/c/3/sources +XERCES_LICENSE = Apache-2.0 +XERCES_LICENSE_FILES = LICENSE +XERCES_INSTALL_STAGING = YES +XERCES_CONF_OPTS = \ + --disable-threads \ + --with-gnu-ld + +define XERCES_DISABLE_SAMPLES + $(SED) 's/ samples//' $(@D)/Makefile.in +endef + +XERCES_POST_PATCH_HOOKS += XERCES_DISABLE_SAMPLES + +ifeq ($(BR2_PACKAGE_ICU),y) +XERCES_CONF_OPTS += --with-icu=$(STAGING_DIR)/usr +XERCES_DEPENDENCIES += icu +else +XERCES_CONF_OPTS += --without-icu +endif + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +XERCES_CONF_ENV += LIBS=-liconv +XERCES_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_LIBCURL),y) +XERCES_CONF_OPTS += --enable-netaccessor-curl --with-curl=$(STAGING_DIR)/usr/lib +XERCES_DEPENDENCIES += libcurl +else +XERCES_CONF_OPTS += --disable-network +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch b/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch new file mode 100644 index 0000000..2bb0b7d --- /dev/null +++ b/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch @@ -0,0 +1,33 @@ +From 770902a0a29fb4ac62358f7eacb3a83d0d9af1c7 Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Wed, 25 Nov 2015 10:50:00 +0000 +Subject: [PATCH] mdrestore: do not do dynamic linking of libtool libraries + +As explained in commit ece49daeff1a3cad765e106d678c608925c9d768, use +-static-libtool-libs instead of -static to allow fallback to the dynamic +linking for libuuid only. Otherwise the build will fail like this: + +ld: attempted static link of dynamic object `/usr/lib/libuuid.so' + +Signed-off-by: Vicente Olivert Riera +[Sent upstream: https://www.spinics.net/lists/xfs/msg36149.html] +--- + mdrestore/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mdrestore/Makefile b/mdrestore/Makefile +index 5171306..1b34a0e 100644 +--- a/mdrestore/Makefile ++++ b/mdrestore/Makefile +@@ -10,7 +10,7 @@ CFILES = xfs_mdrestore.c + + LLDLIBS = $(LIBXFS) $(LIBRT) $(LIBPTHREAD) $(LIBUUID) + LTDEPENDENCIES = $(LIBXFS) +-LLDFLAGS = -static ++LLDFLAGS = -static-libtool-libs + + default: depend $(LTCOMMAND) + +-- +2.7.4 + diff --git a/buildroot/package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch b/buildroot/package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch new file mode 100644 index 0000000..372a530 --- /dev/null +++ b/buildroot/package/xfsprogs/0002-libxfs-do-not-try-to-run-the-crc32selftest.patch @@ -0,0 +1,42 @@ +From 3a77dfc54271059dcac305384bf6ace34fe1f3d3 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 18 Dec 2016 15:37:27 +0100 +Subject: [PATCH] libxfs: do not try to run the crc32selftest + +Even though the crc32selftest is natively compiled (because it is to be +executed), it fails in cross-compilation as the host may lack the +required headers, like uuid/uuid.h (e.g. in a minimal environment). + +Moreover, running the crc32selftest natively is completely wrong, +because it passing on the host does not mean it would still pass n the +target (because endianness or bitness or alignment differences). + +So, just disable running the crc32selftest altogether. + +Note that there's a remaining bug-in-hiding, because the crc32 table +generator is natively built, but with the target CFLAGS. + +Signed-off-by: "Yann E. MORIN" +--- + libxfs/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libxfs/Makefile b/libxfs/Makefile +index 62608bd..e021625 100644 +--- a/libxfs/Makefile ++++ b/libxfs/Makefile +@@ -112,9 +112,9 @@ LTLIBS = $(LIBPTHREAD) $(LIBRT) + # don't try linking xfs_repair with a debug libxfs. + DEBUG = -DNDEBUG + +-LDIRT = gen_crc32table crc32table.h crc32selftest ++LDIRT = gen_crc32table crc32table.h + +-default: crc32selftest ltdepend $(LTLIBRARY) ++default: ltdepend $(LTLIBRARY) + + crc32table.h: gen_crc32table.c + @echo " [CC] gen_crc32table" +-- +2.7.4 + diff --git a/buildroot/package/xfsprogs/Config.in b/buildroot/package/xfsprogs/Config.in new file mode 100644 index 0000000..024cde9 --- /dev/null +++ b/buildroot/package/xfsprogs/Config.in @@ -0,0 +1,15 @@ +comment "xfsprogs needs a toolchain w/ threads" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_XFSPROGS + bool "xfsprogs" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + The XFS file system utilities and libraries + + http://xfs.org diff --git a/buildroot/package/xfsprogs/xfsprogs.hash b/buildroot/package/xfsprogs/xfsprogs.hash new file mode 100644 index 0000000..886a8f1 --- /dev/null +++ b/buildroot/package/xfsprogs/xfsprogs.hash @@ -0,0 +1,3 @@ +# From https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/sha256sums.asc +sha256 b1b710b268bc95d6f45eca06e1262c29eb38865a19cd4404e48ba446e043b7ec xfsprogs-4.14.0.tar.xz +sha256 ee304b1b1da08b261f1d1f31d229fc70d2d0c552c7429e9e84c0fac878d94209 doc/COPYING diff --git a/buildroot/package/xfsprogs/xfsprogs.mk b/buildroot/package/xfsprogs/xfsprogs.mk new file mode 100644 index 0000000..e6e8493 --- /dev/null +++ b/buildroot/package/xfsprogs/xfsprogs.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# xfsprogs +# +################################################################################ + +XFSPROGS_VERSION = 4.14.0 +XFSPROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/fs/xfs/xfsprogs +XFSPROGS_SOURCE = xfsprogs-$(XFSPROGS_VERSION).tar.xz +XFSPROGS_LICENSE = GPL-2.0, GPL-2.0+, LGPL-2.1 (libhandle, few headers) +XFSPROGS_LICENSE_FILES = doc/COPYING + +XFSPROGS_DEPENDENCIES = util-linux + +XFSPROGS_CONF_ENV = ac_cv_header_aio_h=yes ac_cv_lib_rt_lio_listio=yes +XFSPROGS_CONF_OPTS = \ + --enable-lib64=no \ + --enable-gettext=no \ + INSTALL_USER=root \ + INSTALL_GROUP=root \ + --enable-static + +XFSPROGS_INSTALL_TARGET_OPTS = DIST_ROOT=$(TARGET_DIR) install + +$(eval $(autotools-package)) diff --git a/buildroot/package/xinetd/0001-ar.patch b/buildroot/package/xinetd/0001-ar.patch new file mode 100644 index 0000000..566f2f7 --- /dev/null +++ b/buildroot/package/xinetd/0001-ar.patch @@ -0,0 +1,74 @@ +This patch changes all of the hard-coded invocations of "ar" to $(AR), to +support a cross-compilation toolchain. + +The content of this patch was copied from the OpenWrt project: +https://dev.openwrt.org/browser/packages/net/xinetd/patches/001-ar.patch + +Signed-off-by: Danomi Manchego + +--- a/libs/src/misc/Makefile.in ++++ b/libs/src/misc/Makefile.in +@@ -62,7 +62,7 @@ + + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + install: $(LIBNAME) +--- a/libs/src/portable/Makefile.in ++++ b/libs/src/portable/Makefile.in +@@ -57,7 +57,7 @@ + + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + install: $(LIBNAME) +--- a/libs/src/pset/Makefile.in ++++ b/libs/src/pset/Makefile.in +@@ -53,7 +53,7 @@ + mv $(LIBNAME) $(LIBDIR)/optimized + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + install: $(LIBNAME) +--- a/libs/src/sio/Makefile.in ++++ b/libs/src/sio/Makefile.in +@@ -52,7 +52,7 @@ + $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)/optimized + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + install: $(LIBNAME) +--- a/libs/src/str/Makefile.in ++++ b/libs/src/str/Makefile.in +@@ -63,7 +63,7 @@ + $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)-O + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + LINT_IGNORE=possible pointer alignment|RCSid unused +--- a/libs/src/xlog/Makefile.in ++++ b/libs/src/xlog/Makefile.in +@@ -58,7 +58,7 @@ + $(INSTALL) $(FMODE) $(LIBNAME) $(LIBDIR)/optimized + + $(LIBNAME): $(OBJECTS) +- ar r $@ $? ++ $(AR) r $@ $? + $(RANLIB) $@ + + install: $(LIBNAME) diff --git a/buildroot/package/xinetd/0002-destdir.patch b/buildroot/package/xinetd/0002-destdir.patch new file mode 100644 index 0000000..7a323eb --- /dev/null +++ b/buildroot/package/xinetd/0002-destdir.patch @@ -0,0 +1,55 @@ +This patch adds $(DESTDIR) to xinetd's installation paths, to support +installation to a cross-compiled RFS area. + +The content of this patch was inspired by the OpenWrt project: +https://dev.openwrt.org/browser/packages/net/xinetd/patches/002-destdir.patch + +Signed-off-by: Danomi Manchego + +diff -urN xinetd-2.3.15.ORIG/Makefile.in xinetd-2.3.15/Makefile.in +--- xinetd-2.3.15.ORIG/Makefile.in 2007-09-20 13:01:52.000000000 -0400 ++++ xinetd-2.3.15/Makefile.in 2012-06-18 10:20:00.540864388 -0400 +@@ -75,27 +75,27 @@ + + install: build + for i in $(DAEMONDIR) $(BINDIR) $(MANDIR)/man5 $(MANDIR)/man8 ; do \ +- test -d $$i || mkdir -p $$i ; done +- $(INSTALL_CMD) -m 755 xinetd/xinetd $(DAEMONDIR) +- $(INSTALL_CMD) -m 755 xinetd/itox $(DAEMONDIR) +- $(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DAEMONDIR) +- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(MANDIR)/man5/xinetd.conf.5 +- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(MANDIR)/man8/xinetd.log.8 +- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(MANDIR)/man8/xinetd.8 +- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(MANDIR)/man8/itox.8 +- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(MANDIR)/man8/xconv.pl.8 ++ test -d $(DESTDIR)$$i || mkdir -p $(DESTDIR)$$i ; done ++ $(INSTALL_CMD) -m 755 xinetd/xinetd $(DESTDIR)$(DAEMONDIR) ++ $(INSTALL_CMD) -m 755 xinetd/itox $(DESTDIR)$(DAEMONDIR) ++ $(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DESTDIR)$(DAEMONDIR) ++ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(DESTDIR)$(MANDIR)/man5/xinetd.conf.5 ++ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(DESTDIR)$(MANDIR)/man8/xinetd.log.8 ++ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(DESTDIR)$(MANDIR)/man8/xinetd.8 ++ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(DESTDIR)$(MANDIR)/man8/itox.8 ++ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(DESTDIR)$(MANDIR)/man8/xconv.pl.8 + @echo "You must put your xinetd.conf in /etc/xinetd.conf" + @echo "There is a sample config file in xinetd/sample.conf and you can" + @echo "use xconv.pl to convert your old inetd.conf file to an xinetd format" + + uninstall: +- rm -f $(DAEMONDIR)/xinetd +- rm -f $(DAEMONDIR)/itox +- rm -f $(DAEMONDIR)/xconv.pl +- rm -f $(MANDIR)/man5/xinetd.conf.5 +- rm -f $(MANDIR)/man8/xinetd.log.8 +- rm -f $(MANDIR)/man8/xinetd.8 +- rm -f $(MANDIR)/man8/itox.8 ++ rm -f $(DESTDIR)$(DAEMONDIR)/xinetd ++ rm -f $(DESTDIR)$(DAEMONDIR)/itox ++ rm -f $(DESTDIR)$(DAEMONDIR)/xconv.pl ++ rm -f $(DESTDIR)$(MANDIR)/man5/xinetd.conf.5 ++ rm -f $(DESTDIR)$(MANDIR)/man8/xinetd.log.8 ++ rm -f $(DESTDIR)$(MANDIR)/man8/xinetd.8 ++ rm -f $(DESTDIR)$(MANDIR)/man8/itox.8 + + distclean: clean + rm -f config.cache config.log Makefile config.status xinetd/itox diff --git a/buildroot/package/xinetd/0003-rpc-fix.patch b/buildroot/package/xinetd/0003-rpc-fix.patch new file mode 100644 index 0000000..6c32b72 --- /dev/null +++ b/buildroot/package/xinetd/0003-rpc-fix.patch @@ -0,0 +1,26 @@ +This patch fixes compiling xinetd without RPC support. + +The content of this patch was copied from the OpenWrt project: +https://dev.openwrt.org/browser/packages/net/xinetd/patches/003-rpc_fix.patch + +Signed-off-by: Danomi Manchego + +--- a/xinetd/confparse.c ++++ b/xinetd/confparse.c +@@ -745,7 +745,7 @@ static status_e check_entry( struct serv + } + } + +-/* #ifndef NO_RPC */ ++#ifndef NO_RPC + #if defined(HAVE_RPC_RPCENT_H) || defined(HAVE_NETDB_H) + if ( SC_IS_RPC( scp ) && !SC_IS_UNLISTED( scp ) ) + { +@@ -759,6 +759,7 @@ static status_e check_entry( struct serv + SC_RPCDATA( scp )->rd_program_number = rep->r_number ; + } + else ++#endif + #endif /* ! NO_RPC */ + { + if ( !SC_IS_UNLISTED( scp ) ) diff --git a/buildroot/package/xinetd/0004-configure-rlim_t.patch b/buildroot/package/xinetd/0004-configure-rlim_t.patch new file mode 100644 index 0000000..e1cb48a --- /dev/null +++ b/buildroot/package/xinetd/0004-configure-rlim_t.patch @@ -0,0 +1,18 @@ +Have the configure script look for rlim_t in + +That's where POSIX says it should be. Some libcs will include its +definition via as well, but musl doesn't. + +Signed-off-by: Maarten ter Huurne + +--- xinetd-2.3.15.orig/configure 2007-09-20 16:58:27.000000000 +0200 ++++ xinetd-2.3.15/configure 2014-09-16 17:20:22.787665449 +0200 +@@ -7909,7 +7909,7 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include + #if STDC_HEADERS + #include + #endif diff --git a/buildroot/package/xinetd/Config.in b/buildroot/package/xinetd/Config.in new file mode 100644 index 0000000..3bf3043 --- /dev/null +++ b/buildroot/package/xinetd/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_XINETD + bool "xinetd" + depends on BR2_USE_MMU # fork() + help + xinetd is a secure replacement for inetd. It was originally + written by panos@cs.colorado.edu. + + http://www.xinetd.org diff --git a/buildroot/package/xinetd/xinetd.hash b/buildroot/package/xinetd/xinetd.hash new file mode 100644 index 0000000..0514366 --- /dev/null +++ b/buildroot/package/xinetd/xinetd.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 620b25f4ab4d72fdf32b13797156ea40df2049f1c07e640177e5fec544e9a94c xinetd-xinetd-2-3-15.tar.gz diff --git a/buildroot/package/xinetd/xinetd.mk b/buildroot/package/xinetd/xinetd.mk new file mode 100644 index 0000000..9818512 --- /dev/null +++ b/buildroot/package/xinetd/xinetd.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# xinetd +# +################################################################################ + +XINETD_VERSION = xinetd-2-3-15 +XINETD_SITE = $(call github,xinetd-org,xinetd,$(XINETD_VERSION)) +XINETD_LICENSE = xinetd license +XINETD_LICENSE_FILES = COPYRIGHT + +XINETD_CFLAGS = $(TARGET_CFLAGS) + +# Three cases here: +# 1. We have libtirpc, use it by passing special flags +# 2. We have native RPC support, use it, no need to pass special +# flags (so this case 2 is implicit and not visible below) +# 3. We don't have RPC support, pass -DNO_RPC to disable it +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +XINETD_DEPENDENCIES += libtirpc host-pkgconf +XINETD_CFLAGS += "`$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`" +XINETD_LIBS += "`$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`" +else ifeq ($(BR2_TOOLCHAIN_HAS_NATIVE_RPC),) +XINETD_CFLAGS += -DNO_RPC +endif + +XINETD_CONF_ENV += \ + CFLAGS="$(XINETD_CFLAGS)" \ + LIBS="$(XINETD_LIBS)" + +XINETD_MAKE_OPTS = AR="$(TARGET_AR)" + +$(eval $(autotools-package)) diff --git a/buildroot/package/xl2tp/0001-legacy.patch b/buildroot/package/xl2tp/0001-legacy.patch new file mode 100644 index 0000000..5279fd7 --- /dev/null +++ b/buildroot/package/xl2tp/0001-legacy.patch @@ -0,0 +1,17 @@ +Replace SUSV3-specific functions index, bcopy, bzero and bcmp by their +POSIX variants. + +--- l2tpd-0.70-pre20031121.oorig/osport.h 2004-07-08 22:47:52.000000000 +0200 ++++ l2tpd-0.70-pre20031121/osport.h 2006-12-28 15:32:50.000000000 +0100 +@@ -37,4 +37,11 @@ + + #endif /* defined(SOLARIS) */ + ++#if defined __UCLIBC__ && !defined UCLIBC_SUSV3_LEGACY_MACROS ++# define index(x, y) strchr(x, y) ++# define bcopy(S1, S2, LEN) ((void)memmove(S2, S1, LEN)) ++# define bzero(S1, LEN) ((void)memset(S1, 0, LEN)) ++# define bcmp(S1,S2,LEN) ((memcmp(S2, S1, LEN)==0)?0:1) ++#endif /* defined __UCLIBC__ && !defined UCLIBC_SUSV3_LEGACY_MACROS */ ++ + #endif /* _OSPORT_H_ */ diff --git a/buildroot/package/xl2tp/Config.in b/buildroot/package/xl2tp/Config.in new file mode 100644 index 0000000..7e2d2f6 --- /dev/null +++ b/buildroot/package/xl2tp/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_XL2TP + bool "xl2tp" + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBPCAP + help + Layer 2 Tunnelling Protocol (RFC2661). + + xl2tpd is an open source implementation of the L2TP tunneling + protocol. xl2tpd is forked from l2tpd and is maintained by + Xelerance Corporation. + + http://www.xelerance.com/software/xl2tpd/ diff --git a/buildroot/package/xl2tp/xl2tp.hash b/buildroot/package/xl2tp/xl2tp.hash new file mode 100644 index 0000000..152d615 --- /dev/null +++ b/buildroot/package/xl2tp/xl2tp.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 1164b574e93a44c2a2e76c0c68d8d60437bd884a6c964d9c68be1556278e3d2d xl2tp-v1.3.8.tar.gz diff --git a/buildroot/package/xl2tp/xl2tp.mk b/buildroot/package/xl2tp/xl2tp.mk new file mode 100644 index 0000000..eee5c04 --- /dev/null +++ b/buildroot/package/xl2tp/xl2tp.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# xl2tp +# +################################################################################ + +XL2TP_VERSION = v1.3.8 +XL2TP_SITE = $(call github,xelerance,xl2tpd,$(XL2TP_VERSION)) +XL2TP_DEPENDENCIES = libpcap +XL2TP_LICENSE = GPL-2.0 +XL2TP_LICENSE_FILES = LICENSE + +ifeq ($(BR2_STATIC_LIBS),y) +XL2TP_LDLIBS = LDLIBS="`$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs`" +endif + +define XL2TP_BUILD_CMDS + $(SED) 's/ -O2 //' $(@D)/Makefile + $(TARGET_CONFIGURE_OPTS) $(MAKE) $(XL2TP_LDLIBS) -C $(@D) +endef + +define XL2TP_INSTALL_TARGET_CMDS + $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/xl2tp/xl2tpd b/buildroot/package/xl2tp/xl2tpd new file mode 100755 index 0000000..36c12a2 --- /dev/null +++ b/buildroot/package/xl2tp/xl2tpd @@ -0,0 +1,27 @@ +#!/bin/sh +# +PATH=/bin:/usr/bin:/sbin:/usr/sbin +DAEMON=/usr/sbin/xl2tpd +PIDFILE=/var/run/xl2tpd.pid + +test -f $DAEMON || exit 0 + +case "$1" in + start) + start-stop-daemon -S -p $PIDFILE -x $DAEMON -- -D & + ;; + stop) + start-stop-daemon -K -p $PIDFILE -x $DAEMON + ;; + restart|force-reload) + start-stop-daemon -K -p $PIDFILE -x $DAEMON + sleep 1 + start-stop-daemon -S -p $PIDFILE -x $DAEMON + ;; + *) + echo "Usage: /etc/init.d/xl2tdp {start|stop|restart|force-reload}" + exit 1 + ;; +esac + +exit 0 diff --git a/buildroot/package/xmlstarlet/Config.in b/buildroot/package/xmlstarlet/Config.in new file mode 100644 index 0000000..99762b8 --- /dev/null +++ b/buildroot/package/xmlstarlet/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_XMLSTARLET + bool "xmlstarlet" + select BR2_PACKAGE_LIBXML2 + select BR2_PACKAGE_LIBXSLT + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + Command Line XML Toolkit + + http://xmlstar.sourceforge.net/ diff --git a/buildroot/package/xmlstarlet/xmlstarlet.hash b/buildroot/package/xmlstarlet/xmlstarlet.hash new file mode 100644 index 0000000..ca9aecf --- /dev/null +++ b/buildroot/package/xmlstarlet/xmlstarlet.hash @@ -0,0 +1,3 @@ +# From https://sourceforge.net/projects/xmlstar/files/xmlstarlet/1.6.1/ +sha1 87bb104f546caca71b9540807c5b2738944cb219 xmlstarlet-1.6.1.tar.gz +md5 f3c5dfa3b1a2ee06cd57c255cc8b70a0 xmlstarlet-1.6.1.tar.gz diff --git a/buildroot/package/xmlstarlet/xmlstarlet.mk b/buildroot/package/xmlstarlet/xmlstarlet.mk new file mode 100644 index 0000000..1d748dc --- /dev/null +++ b/buildroot/package/xmlstarlet/xmlstarlet.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# xmlstarlet +# +################################################################################ + +XMLSTARLET_VERSION = 1.6.1 +XMLSTARLET_SITE = http://downloads.sourceforge.net/project/xmlstar/xmlstarlet/$(XMLSTARLET_VERSION) +XMLSTARLET_LICENSE = MIT +XMLSTARLET_LICENSE_FILES = COPYING + +XMLSTARLET_DEPENDENCIES += libxml2 libxslt \ + $(if $(BR2_PACKAGE_LIBICONV),libiconv) + +XMLSTARLET_CONF_OPTS += \ + --with-libxml-prefix=$(STAGING_DIR)/usr \ + --with-libxslt-prefix=$(STAGING_DIR)/usr \ + --with-libiconv-prefix=$(STAGING_DIR)/usr + +ifeq ($(BR2_STATIC_LIBS),y) +XMLSTARLET_CONF_OPTS += --enable-static-libs +XMLSTARLET_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libxml-2.0 libexslt`" +else +XMLSTARLET_CONF_OPTS += --disable-static-libs +endif + +HOST_XMLSTARLET_DEPENDENCIES += host-libxml2 host-libxslt + +HOST_XMLSTARLET_CONF_OPTS += \ + --with-libxml-prefix=$(HOST_DIR)/usr \ + --with-libxslt-prefix=$(HOST_DIR)/usr + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/xorriso/Config.in b/buildroot/package/xorriso/Config.in new file mode 100644 index 0000000..60b2642 --- /dev/null +++ b/buildroot/package/xorriso/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_XORRISO + bool "xorriso" + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # fork() + select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE + help + xorriso copies file objects from POSIX compliant + filesystems into Rock Ridge enhanced ISO 9660 filesystems + and allows session-wise manipulation of such filesystems. + It can load the management information of existing ISO + images and it writes the session results to optical media + or to filesystem objects. + + Vice versa xorriso is able to copy file objects out of ISO + 9660 filesystems. + + https://www.gnu.org/software/xorriso + +comment "xorriso needs a toolchain w/ wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/xorriso/Config.in.host b/buildroot/package/xorriso/Config.in.host new file mode 100644 index 0000000..2baa043 --- /dev/null +++ b/buildroot/package/xorriso/Config.in.host @@ -0,0 +1,14 @@ +config BR2_PACKAGE_HOST_XORRISO + bool "host xorriso" + help + xorriso copies file objects from POSIX compliant + filesystems into Rock Ridge enhanced ISO 9660 filesystems + and allows session-wise manipulation of such filesystems. + It can load the management information of existing ISO + images and it writes the session results to optical media + or to filesystem objects. + + Vice versa xorriso is able to copy file objects out of ISO + 9660 filesystems. + + https://www.gnu.org/software/xorriso diff --git a/buildroot/package/xorriso/xorriso.hash b/buildroot/package/xorriso/xorriso.hash new file mode 100644 index 0000000..f1ee9d6 --- /dev/null +++ b/buildroot/package/xorriso/xorriso.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 526f728c7eee6f8c4b69fbf391789e6c80806197c2861cf5922cf7cfe1035784 xorriso-1.4.6.tar.gz diff --git a/buildroot/package/xorriso/xorriso.mk b/buildroot/package/xorriso/xorriso.mk new file mode 100644 index 0000000..1f09591 --- /dev/null +++ b/buildroot/package/xorriso/xorriso.mk @@ -0,0 +1,71 @@ +################################################################################ +# +# xorriso +# +################################################################################ + +XORRISO_VERSION = 1.4.6 +XORRISO_SITE = $(BR2_GNU_MIRROR)/xorriso +XORRISO_LICENSE = GPL-3.0+ +XORRISO_LICENSE_FILES = COPYING COPYRIGHT +# Disable everything until we actually need those features, and add the correct +# host libraries +HOST_XORRISO_CONF_OPTS = \ + --disable-zlib \ + --disable-bzip2 \ + --disable-libcdio \ + --disable-libreadline \ + --disable-libedit \ + --disable-libacl + +# libcdio doesn't make sense for Linux +# http://lists.gnu.org/archive/html/bug-xorriso/2017-04/msg00004.html +XORRISO_CONF_OPTS = --disable-libcdio + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +XORRISO_DEPENDENCIES += libiconv +endif + +ifeq ($(BR2_PACKAGE_READLINE),y) +XORRISO_DEPENDENCIES += readline +XORRISO_CONF_OPTS += --enable-libreadline +else +XORRISO_CONF_OPTS += --disable-libreadline +endif + +ifeq ($(BR2_PACKAGE_ACL),y) +XORRISO_DEPENDENCIES += acl +XORRISO_CONF_OPTS += --enable-libacl +else +XORRISO_CONF_OPTS += --disable-libacl +endif + +ifeq ($(BR2_PACKAGE_ATTR),y) +XORRISO_DEPENDENCIES += attr +XORRISO_CONF_OPTS += --enable-xattr +else +XORRISO_CONF_OPTS += --disable-xattr +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +XORRISO_DEPENDENCIES += zlib +XORRISO_CONF_OPTS += --enable-zlib +else +XORRISO_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_BZIP2),y) +XORRISO_DEPENDENCIES += bzip2 +XORRISO_CONF_OPTS += --enable-libbz2 +else +XORRISO_CONF_OPTS += --disable-libbz2 +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +XORRISO_CONF_OPTS += --enable-jtethreads +else +XORRISO_CONF_OPTS += --disable-jtethreads +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/xr819-xradio/Config.in b/buildroot/package/xr819-xradio/Config.in new file mode 100644 index 0000000..9d7fa4b --- /dev/null +++ b/buildroot/package/xr819-xradio/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_XR819_XRADIO + bool "xr819-xradio" + depends on BR2_LINUX_KERNEL + help + Wireless driver for SDIO WiFi chip XR819 + + https://github.com/fifteenhex/xradio + +comment "xr819-xradio driver needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/xr819-xradio/xr819-xradio.hash b/buildroot/package/xr819-xradio/xr819-xradio.hash new file mode 100644 index 0000000..341747c --- /dev/null +++ b/buildroot/package/xr819-xradio/xr819-xradio.hash @@ -0,0 +1,4 @@ +# Locally computed +sha256 7b78fc61d13a428a0d8a3d8dcffaa604d23b5a17c6e8e86d2e5e8372dcd17672 xr819-xradio-33f4b1c25eff0d9db7cbac19f36b130da9857f37.tar.gz +# Locally computed +sha256 db296f2f7f35bca3a174efb0eb392b3b17bd94b341851429a3dff411b1c2fc73 LICENSE diff --git a/buildroot/package/xr819-xradio/xr819-xradio.mk b/buildroot/package/xr819-xradio/xr819-xradio.mk new file mode 100644 index 0000000..edf423b --- /dev/null +++ b/buildroot/package/xr819-xradio/xr819-xradio.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# xr819-xradio +# +################################################################################ + +XR819_XRADIO_VERSION = 33f4b1c25eff0d9db7cbac19f36b130da9857f37 +XR819_XRADIO_SITE = $(call github,fifteenhex,xradio,$(XR819_XRADIO_VERSION)) +XR819_XRADIO_LICENSE = GPL-2.0 +XR819_XRADIO_LICENSE_FILES = LICENSE + +$(eval $(kernel-module)) +$(eval $(generic-package)) diff --git a/buildroot/package/xscreensaver/0001-fix-cross-compile-ansi-c-bailout.patch b/buildroot/package/xscreensaver/0001-fix-cross-compile-ansi-c-bailout.patch new file mode 100644 index 0000000..6da9419 --- /dev/null +++ b/buildroot/package/xscreensaver/0001-fix-cross-compile-ansi-c-bailout.patch @@ -0,0 +1,19 @@ +The configure bails out when cross-compiling, because it is over-cautious +about ANSI support in the C compiler. Work around this by disabling the +bail-out code. + +[Peter: updated for 5.32] +Signed-off-by: Simon Dawson +Signed-off-by: Peter Korsgaard + +diff -Nurp a/configure b/configure +--- a/configure 2013-07-16 10:23:32.000000000 +0100 ++++ b/configure 2013-09-22 14:50:07.186953454 +0100 +@@ -4374,7 +4374,6 @@ $as_echo "Solaris: adding -D__EXTENSIONS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler works on ANSI C" >&5 + $as_echo_n "checking whether the compiler works on ANSI C... " >&6; } + if test "$cross_compiling" = yes; then : +- as_fn_error $? "Couldn't build even a trivial ANSI C program: check CC." "$LINENO" 5 + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ diff --git a/buildroot/package/xscreensaver/Config.in b/buildroot/package/xscreensaver/Config.in new file mode 100644 index 0000000..efb8d1a --- /dev/null +++ b/buildroot/package/xscreensaver/Config.in @@ -0,0 +1,30 @@ +config BR2_PACKAGE_XSCREENSAVER + bool "xscreensaver" + depends on BR2_PACKAGE_XORG7 + depends on BR2_INSTALL_LIBSTDCPP # libgtk2 -> pango + depends on BR2_TOOLCHAIN_HAS_THREADS # libgtk2 -> glib2 + depends on BR2_USE_WCHAR # libgtk2 -> glib2 + depends on BR2_USE_MMU # libgtk2 -> glib2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz + select BR2_PACKAGE_LIBGTK2 + select BR2_PACKAGE_LIBGLADE + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXT + help + XScreenSaver is the standard screen saver collection shipped + on most Linux and Unix systems running the X11 Window + System. + + On X11 systems, XScreenSaver is two things: it is both a + large collection of screen savers; and it is also the + framework for blanking and locking the screen. + + http://www.jwz.org/xscreensaver/ + +comment "xscreensaver needs a toolchain w/ wchar, C++, threads" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_USE_WCHAR diff --git a/buildroot/package/xscreensaver/xscreensaver.hash b/buildroot/package/xscreensaver/xscreensaver.hash new file mode 100644 index 0000000..48bc2b1 --- /dev/null +++ b/buildroot/package/xscreensaver/xscreensaver.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 6b8b5238047f1613d99149bb02d5ed3384675f3ce74a0a8ba25290bd61abc06c xscreensaver-5.36.tar.gz diff --git a/buildroot/package/xscreensaver/xscreensaver.mk b/buildroot/package/xscreensaver/xscreensaver.mk new file mode 100644 index 0000000..34b1163 --- /dev/null +++ b/buildroot/package/xscreensaver/xscreensaver.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# xscreensaver +# +################################################################################ + +XSCREENSAVER_VERSION = 5.36 +XSCREENSAVER_SITE = https://www.jwz.org/xscreensaver + +# N.B. GPL-2.0+ code (in the hacks/glx subdirectory) is not currently built. +XSCREENSAVER_LICENSE = MIT-like, GPL-2.0+ +XSCREENSAVER_LICENSE_FILES = hacks/screenhack.h hacks/glx/chessmodels.h + +XSCREENSAVER_DEPENDENCIES = jpeg libglade libgtk2 xlib_libX11 xlib_libXt \ + $(TARGET_NLS_DEPENDENCIES) host-intltool + +# otherwise we end up with host include/library dirs passed to the +# compiler/linker +XSCREENSAVER_CONF_OPTS = \ + --includedir=$(STAGING_DIR)/usr/include \ + --libdir=$(STAGING_DIR)/usr/lib + +XSCREENSAVER_INSTALL_TARGET_OPTS = install_prefix="$(TARGET_DIR)" install + +$(eval $(autotools-package)) diff --git a/buildroot/package/xtables-addons/Config.in b/buildroot/package/xtables-addons/Config.in new file mode 100644 index 0000000..39fafe7 --- /dev/null +++ b/buildroot/package/xtables-addons/Config.in @@ -0,0 +1,19 @@ +comment "xtables-addons needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL + +comment "xtables-addons needs a toolchain w/ dynamic library, threads" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_XTABLES_ADDONS + bool "xtables-addons" + depends on BR2_LINUX_KERNEL + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS # extensions are .so + select BR2_PACKAGE_IPTABLES + select BR2_LINUX_NEEDS_MODULES # not using kernel-module infra + help + Xtables-addons is the successor to patch-o-matic(-ng). + Likewise, it contains extensions that were not, or are not + yet, accepted in the main kernel/iptables packages. + + http://xtables-addons.sourceforge.net/ diff --git a/buildroot/package/xtables-addons/xtables-addons.hash b/buildroot/package/xtables-addons/xtables-addons.hash new file mode 100644 index 0000000..9aa9c0e --- /dev/null +++ b/buildroot/package/xtables-addons/xtables-addons.hash @@ -0,0 +1,4 @@ +# From https://sourceforge.net/projects/xtables-addons/files/Xtables-addons/ +sha1 70ace437ec84d9ec1970505cecf270ed0cbd273e xtables-addons-2.12.tar.xz +# Calculated based on the hash above +sha256 c4865aa1c64c5ff173ff7b5d69425466c71f0f9b5eb5299c52c68bdcd46fa63b xtables-addons-2.12.tar.xz diff --git a/buildroot/package/xtables-addons/xtables-addons.mk b/buildroot/package/xtables-addons/xtables-addons.mk new file mode 100644 index 0000000..5c3be16 --- /dev/null +++ b/buildroot/package/xtables-addons/xtables-addons.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# xtables-addons +# +################################################################################ + +XTABLES_ADDONS_VERSION = 2.12 +XTABLES_ADDONS_SOURCE = xtables-addons-$(XTABLES_ADDONS_VERSION).tar.xz +XTABLES_ADDONS_SITE = http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons +XTABLES_ADDONS_DEPENDENCIES = iptables linux host-pkgconf +XTABLES_ADDONS_LICENSE = GPL-2.0+ +XTABLES_ADDONS_LICENSE_FILES = LICENSE + +XTABLES_ADDONS_CONF_OPTS = \ + --with-kbuild="$(LINUX_DIR)" \ + --with-xtables="$(STAGING_DIR)/usr" \ + --with-xtlibdir="/usr/lib/xtables" + +# geoip helpers need perl with modules and unzip so disable +define XTABLES_DISABLE_GEOIP_HELPERS + $(SED) 's/ geoip//' $(@D)/Makefile.in +endef +XTABLES_ADDONS_POST_PATCH_HOOKS += XTABLES_DISABLE_GEOIP_HELPERS + +define XTABLES_ADDONS_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) +endef + +define XTABLES_ADDONS_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) DESTDIR="$(TARGET_DIR)" install +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/xterm/Config.in b/buildroot/package/xterm/Config.in new file mode 100644 index 0000000..f3bc450 --- /dev/null +++ b/buildroot/package/xterm/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_XTERM + bool "xterm" + depends on BR2_PACKAGE_XORG7 + depends on BR2_USE_MMU # fork() + # ARC toolchain issue + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC + select BR2_PACKAGE_NCURSES + select BR2_PACKAGE_XLIB_LIBXAW + help + xterm terminal emulator + + http://invisible-island.net/xterm/ diff --git a/buildroot/package/xterm/xterm.hash b/buildroot/package/xterm/xterm.hash new file mode 100644 index 0000000..bbd0e11 --- /dev/null +++ b/buildroot/package/xterm/xterm.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 66fb2f6c35b342148f549c276b12a3aa3fb408e27ab6360ddec513e14376150b xterm-327.tgz diff --git a/buildroot/package/xterm/xterm.mk b/buildroot/package/xterm/xterm.mk new file mode 100644 index 0000000..201280f --- /dev/null +++ b/buildroot/package/xterm/xterm.mk @@ -0,0 +1,35 @@ +################################################################################ +# +# xterm +# +################################################################################ + +XTERM_VERSION = 327 +XTERM_SOURCE = xterm-$(XTERM_VERSION).tgz +XTERM_SITE = http://invisible-mirror.net/archives/xterm +XTERM_DEPENDENCIES = ncurses xlib_libXaw host-pkgconf +XTERM_LICENSE = MIT +XTERM_LICENSE_FILES = version.c +XTERM_CONF_OPTS = --enable-256-color \ + --x-includes=$(STAGING_DIR)/usr/include \ + --x-libraries=$(STAGING_DIR)/usr/lib + +# Avoid freetype2 path poisoning by imake +XTERM_CONF_ENV = ac_cv_path_IMAKE="" + +ifeq ($(BR2_PACKAGE_XLIB_LIBXFT),y) +XTERM_DEPENDENCIES += xlib_libXft +XTERM_CONF_OPTS += --enable-freetype \ + --with-freetype-config=auto +else +XTERM_CONF_OPTS += --disable-freetype +endif + +ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) +XTERM_DEPENDENCIES += xlib_libXinerama +XTERM_CONF_OPTS += --with-xinerama +else +XTERM_CONF_OPTS += --without-xinerama +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/xutil_util-macros/Config.in b/buildroot/package/xutil_util-macros/Config.in new file mode 100644 index 0000000..10b1a59 --- /dev/null +++ b/buildroot/package/xutil_util-macros/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_XUTIL_UTIL_MACROS + bool "util-macros" + help + No description available diff --git a/buildroot/package/xutil_util-macros/xutil_util-macros.hash b/buildroot/package/xutil_util-macros/xutil_util-macros.hash new file mode 100644 index 0000000..0f0509a --- /dev/null +++ b/buildroot/package/xutil_util-macros/xutil_util-macros.hash @@ -0,0 +1,2 @@ +# From https://lists.x.org/archives/xorg-announce/2017-January/002773.html +sha256 18d459400558f4ea99527bc9786c033965a3db45bf4c6a32eefdc07aa9e306a6 util-macros-1.19.1.tar.bz2 diff --git a/buildroot/package/xutil_util-macros/xutil_util-macros.mk b/buildroot/package/xutil_util-macros/xutil_util-macros.mk new file mode 100644 index 0000000..d01b3e0 --- /dev/null +++ b/buildroot/package/xutil_util-macros/xutil_util-macros.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# xutil_util-macros +# +################################################################################ + +XUTIL_UTIL_MACROS_VERSION = 1.19.1 +XUTIL_UTIL_MACROS_SOURCE = util-macros-$(XUTIL_UTIL_MACROS_VERSION).tar.bz2 +XUTIL_UTIL_MACROS_SITE = http://xorg.freedesktop.org/releases/individual/util +XUTIL_UTIL_MACROS_LICENSE = MIT +XUTIL_UTIL_MACROS_LICENSE_FILES = COPYING + +XUTIL_UTIL_MACROS_INSTALL_STAGING = YES +XUTIL_UTIL_MACROS_INSTALL_TARGET = NO + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/xvisor/Config.in b/buildroot/package/xvisor/Config.in new file mode 100644 index 0000000..eb7475b --- /dev/null +++ b/buildroot/package/xvisor/Config.in @@ -0,0 +1,68 @@ +config BR2_PACKAGE_XVISOR_ARCH_SUPPORTS + bool + default y + depends on BR2_USE_MMU + depends on BR2_arm || BR2_aarch64 || BR2_x86_64 + depends on !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV7M + +menuconfig BR2_PACKAGE_XVISOR + bool "xvisor" + depends on BR2_PACKAGE_XVISOR_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Xvisor is an open-source type-1 hypervisor, which aims at + providing a monolithic, light-weight, portable, and flexible + virtualization solution. + + http://www.xhypervisor.org/ + +if BR2_PACKAGE_XVISOR + +choice + prompt "Xvisor configuration" + default BR2_PACKAGE_XVISOR_USE_DEFCONFIG + +config BR2_PACKAGE_XVISOR_USE_DEFCONFIG + bool "Using an in-tree defconfig file" + +config BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG + bool "Using a custom (def)config file" + +endchoice + +config BR2_PACKAGE_XVISOR_DEFCONFIG + string "Defconfig name" + default "generic-v5" if BR2_ARM_CPU_ARMV5 + default "generic-v6" if BR2_ARM_CPU_ARMV6 + default "generic-v7" if BR2_ARM_CPU_ARMV7A + default "generic-v8" if BR2_aarch64 + default "x86_64_generic" if BR2_x86_64 + depends on BR2_PACKAGE_XVISOR_USE_DEFCONFIG + help + Name of the Xvisor defconfig file to use, without the + trailing -defconfig. The defconfig is located in + arch//configs in the source tree. + +config BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE + string "Configuration file path" + depends on BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG + help + Path to the Xvisor configuration file + +config BR2_PACKAGE_XVISOR_CREATE_UBOOT_IMAGE + bool "Create U-Boot image of Xvisor" + depends on BR2_arm + select BR2_PACKAGE_HOST_UBOOT_TOOLS + help + Create an image file of Xvisor loadable from Das U-Boot. + +config BR2_PACKAGE_XVISOR_BUILD_TEST_DTB + bool "Build test device-tree blobs" + help + Build test device-tree blobs for popular boards. + +endif + +comment "xvisor needs a toolchain w/ gcc >= 4.9" + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + depends on BR2_PACKAGE_XVISOR_ARCH_SUPPORTS diff --git a/buildroot/package/xvisor/xvisor.hash b/buildroot/package/xvisor/xvisor.hash new file mode 100644 index 0000000..c170fdb --- /dev/null +++ b/buildroot/package/xvisor/xvisor.hash @@ -0,0 +1,2 @@ +# Locally generated +sha256 29b3b830380dde4f596611abd34487fb753e120ce462dbb0056f3025b88ef14f xvisor-0.2.9.tar.gz diff --git a/buildroot/package/xvisor/xvisor.mk b/buildroot/package/xvisor/xvisor.mk new file mode 100644 index 0000000..f75175a --- /dev/null +++ b/buildroot/package/xvisor/xvisor.mk @@ -0,0 +1,85 @@ +################################################################################ +# +# xvisor +# +################################################################################ + +XVISOR_VERSION = 0.2.9 +XVISOR_SITE = http://www.xhypervisor.org/tarball +XVISOR_LICENSE = GPL-2.0+ +XVISOR_LICENSE_FILES = COPYING +XVISOR_INSTALL_IMAGES = YES +XVISOR_INSTALL_TARGET = NO +XVISOR_DEPENDENCIES = host-bison host-flex + +XVISOR_MAKE_TARGETS = all + +ifeq ($(BR2_PACKAGE_XVISOR_BUILD_TEST_DTB),y) +XVISOR_MAKE_TARGETS += dtbs +endif + +XVISOR_KCONFIG_DOTCONFIG = build/openconf/.config + +ifeq ($(BR2_PACKAGE_XVISOR_USE_DEFCONFIG),y) +XVISOR_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_PACKAGE_XVISOR_DEFCONFIG))-defconfig +else ifeq ($(BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG),y) +XVISOR_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE)) +endif +XVISOR_KCONFIG_EDITORS = menuconfig + +ifeq ($(BR2_x86_64),y) +XVISOR_ARCH = x86 +else ifeq ($(BR2_arm)$(BR2_aarch64),y) +XVISOR_ARCH = arm +endif + +ifeq ($(BR2_PACKAGE_XVISOR)$(BR_BUILDING),yy) +ifeq ($(XVISOR_ARCH),) +$(error "Architecture not supported by XVisor") +endif +endif + +XVISOR_MAKE_ENV = \ + ARCH=$(XVISOR_ARCH) \ + CROSS_COMPILE=$(TARGET_CROSS) + +XVISOR_MAKE_OPTS = $(if $(VERBOSE),VERBOSE=1) + +define XVISOR_BUILD_CMDS + $(TARGET_MAKE_ENV) $(XVISOR_MAKE_ENV) $(MAKE) $(XVISOR_MAKE_OPTS) \ + -C $(@D) $(XVISOR_MAKE_TARGETS) +endef + +define XVISOR_INSTALL_IMAGES_CMDS + $(INSTALL) -m 0644 -D $(@D)/build/vmm.bin $(BINARIES_DIR)/vmm.bin +endef + +ifeq ($(BR2_PACKAGE_XVISOR_CREATE_UBOOT_IMAGE),y) +XVISOR_DEPENDENCIES += host-uboot-tools +define XVISOR_CREATE_UBOOT_IMAGE + $(MKIMAGE) -A $(MKIMAGE_ARCH) -O linux -T kernel -C none \ + -a 0x00008000 -e 0x00008000 \ + -n Xvisor -d $(BINARIES_DIR)/vmm.bin $(BINARIES_DIR)/uvmm.bin +endef +endif + +XVISOR_POST_INSTALL_IMAGES_HOOKS += XVISOR_CREATE_UBOOT_IMAGE + +# Checks to give errors that the user can understand +ifeq ($(BR_BUILDING),y) + +ifeq ($(BR2_PACKAGE_XVISOR_USE_DEFCONFIG),y) +ifeq ($(call qstrip,$(BR2_PACKAGE_XVISOR_DEFCONFIG)),) +$(error No Xvisor defconfig name specified, check your BR2_PACKAGE_XVISOR_DEFCONFIG setting) +endif +endif + +ifeq ($(BR2_PACKAGE_XVISOR_USE_CUSTOM_CONFIG),y) +ifeq ($(BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE),) +$(error No Xvisor configuration file specified, check your BR2_PACKAGE_XVISOR_CUSTOM_CONFIG_FILE setting) +endif +endif + +endif + +$(eval $(kconfig-package)) diff --git a/buildroot/package/xvkbd/0001-makefile.patch b/buildroot/package/xvkbd/0001-makefile.patch new file mode 100644 index 0000000..a8f6577 --- /dev/null +++ b/buildroot/package/xvkbd/0001-makefile.patch @@ -0,0 +1,2400 @@ +--- a/Makefile 2008-03-04 06:14:55.425005441 -0500 ++++ b/Makefile 2008-03-05 08:40:50.000000000 -0500 +@@ -0,0 +1,2397 @@ ++# Makefile generated by imake - do not edit! ++# $Xorg: imake.c,v 1.6 2001/02/09 02:03:15 xorgcvs Exp $ ++ ++# ---------------------------------------------------------------------- ++# Makefile generated from "Imake.tmpl" and ++# $Xorg: Imake.tmpl,v 1.4 2000/08/17 19:41:46 cpqbld Exp $ ++# $XdotOrg: util/cf/Imake.tmpl,v 1.17 2006/04/15 15:55:25 herrb Exp $ ++# ++# ++# ++# ++# $XFree86: xc/config/cf/Imake.tmpl,v 3.155 2003/12/24 18:58:41 dickey Exp $ ++# ---------------------------------------------------------------------- ++ ++all:: ++ ++.SUFFIXES: .i ++ ++# $XdotOrg: util/cf/Imake.cf,v 1.12 2005/11/08 06:33:24 jkj Exp $ ++# $Xorg: Imake.cf,v 1.4 2000/08/17 19:41:45 cpqbld Exp $ ++ ++# $XFree86: xc/config/cf/Imake.cf,v 3.88 2003/12/16 21:30:21 herrb Exp $ ++ ++# Keep cpp from replacing path elements containing i486/i586/i686 ++ ++# ----------------------------------------------------------------------- ++# site-specific configuration parameters that need to come before ++# the platform-specific parameters - edit site.def to change ++ ++# site: $TOG: site.sample /main/r64_final/1 1998/02/05 16:28:49 kaleb $ ++ ++# site: $XFree86: xc/config/cf/site.def,v 3.24 2000/06/25 20:17:29 dawes Exp $ ++ ++# $XFree86: xc/config/cf/xf86site.def,v 3.186 2003/06/25 18:06:22 eich Exp $ ++ ++# ---------------------------------------------------------------------- ++# platform-specific configuration parameters - edit linux.cf to change ++ ++# $XdotOrg: util/cf/linux.cf,v 1.31 2005/10/21 19:10:27 ajax Exp $ ++# platform: $Xorg: linux.cf,v 1.3 2000/08/17 19:41:47 cpqbld Exp $ ++ ++# platform: $XFree86: xc/config/cf/linux.cf,v 3.220 2003/12/30 22:38:33 tsi Exp $ ++ ++# operating system: Linux 2.6.23.8-63.fc8 i686 [ELF] (2.6.23) ++# libc: (6.7.0) ++# binutils: (217) ++ ++# $Xorg: lnxLib.rules,v 1.3 2000/08/17 19:41:47 cpqbld Exp $ ++# $XFree86: xc/config/cf/lnxLib.rules,v 3.52 2003/10/31 20:49:03 herrb Exp $ ++ ++# $XdotOrg: util/cf/xorg.cf,v 1.53 2005/10/03 16:08:44 alanc Exp $ ++ ++# $Xorg: xfree86.cf,v 1.4 2000/08/17 19:41:49 cpqbld Exp $ ++ ++XORG_VERSION_CURRENT = (((6) * 10000000) + ((8) * 100000) + ((99) * 1000) + 903) ++RELEASE_VERSION = RELEASE-1 ++ ++AFB_DEFS = -DUSE_AFB ++ ++DRIVERSDKDIR = $(USRLIBDIR)/Server ++DRIVERSDKMODULEDIR = $(USRLIBDIR)/Server/modules ++DRIVERSDKINCLUDEDIR = $(USRLIBDIR)/Server/include ++ ++ XF86SRC = $(SERVERSRC)/hw/xfree86 ++ XF86COMSRC = $(XF86SRC)/common ++ XF86PARSERSRC = $(XF86SRC)/parser ++ XF86OSSRC = $(XF86SRC)/os-support ++ XF86DRIVERSRC = $(XF86SRC)/drivers ++ DRIVERSRC = $(XF86DRIVERSRC) ++ ++ XFREE86DOCDIR = $(DOCDIR) ++ XFREE86PSDOCDIR = $(DOCPSDIR) ++ XFREE86PDFDOCDIR = $(DOCPDFDIR) ++ XFREE86HTMLDOCDIR = $(DOCHTMLDIR) ++XFREE86JAPANESEDOCDIR = $(DOCDIR)/Japanese ++ ++# $Xorg: xf86.rules,v 1.3 2000/08/17 19:41:48 cpqbld Exp $ ++ ++# $XFree86: xc/config/cf/xf86.rules,v 3.34tsi Exp $ ++ ++# ---------------------------------------------------------------------- ++# site-specific configuration parameters that go after ++# the platform-specific parameters - edit site.def to change ++ ++# site: $TOG: site.sample /main/r64_final/1 1998/02/05 16:28:49 kaleb $ ++ ++# site: $XFree86: xc/config/cf/site.def,v 3.24 2000/06/25 20:17:29 dawes Exp $ ++ ++# --------------------------------------------------------------------- ++# Imake rules for building libraries, programs, scripts, and data files ++# rules: $Xorg: Imake.rules,v 1.3 2000/08/17 19:41:46 cpqbld Exp $ ++# rules: $XdotOrg: util/cf/Imake.rules,v 1.11 2005/11/08 06:33:24 jkj Exp $ ++# ++# ++# ++# ++# rules: $XFree86: xc/config/cf/Imake.rules,v 3.128 2003/11/15 03:25:17 dawes Exp $ ++ ++.PHONY: all interfaces install install.man install.lib install.sdk depend includes cleandir ++ ++ _NULLCMD_ = @ echo -n ++ ++X_BYTE_ORDER = X_LITTLE_ENDIAN ++ ++GLIDE2INCDIR = ++ ++GLIDE3INCDIR = ++ ++GLIDE3LIBNAME = ++ ++TKLIBNAME = ++ ++TKLIBDIR = ++ ++TCLLIBNAME = ++ ++TCLIBDIR = ++ ++ PATHSEP = / ++ SHELL = /bin/sh -e ++ ++ TOP = . ++ CURRENT_DIR = . ++ ++ IMAKE = imake ++ DEPEND = gccmakedep ++ MKDIRHIER = mkdir -p ++ REVPATH = revpath ++ EXPORTLISTGEN = ++ RMAN = RmanCmd ++ RMANBASENAME = rman ++ RMANOPTIONS = RmanOptions ++ CONFIGSRC = $(TOP)/config ++ IMAKESRC = $(CONFIGSRC)/imake ++ DEPENDSRC = $(CONFIGSRC)/util ++ ++ INCROOT = /usr/include ++ USRLIBDIR = /usr/lib ++ VARDIR = /var ++ VARLIBDIR = $(VARDIR)/lib ++ SYSTEMUSRLIBDIR = /usr/lib ++ SYSTEMUSRINCDIR = /usr/include ++ SHLIBDIR = /usr/lib ++ LINTLIBDIR = $(USRLIBDIR)/lint ++ MANPATH = /usr/share/man ++ MANSOURCEPATH = $(MANPATH)/man ++ MANDIR = $(MANSOURCEPATH)1 ++ LIBMANDIR = $(MANSOURCEPATH)3 ++ FILEMANDIR = $(MANSOURCEPATH)5 ++ MISCMANDIR = $(MANSOURCEPATH)$(MISCMANSUFFIX) ++ DRIVERMANDIR = $(MANSOURCEPATH)$(DRIVERMANSUFFIX) ++ LOGDIRECTORY = $(VARDIR)/log ++ ++ VARRUNDIR = $(VARDIR)/run ++ ++ VARDBDIR = $(VARDIR)/lib ++ ++ AR = ar clq ++ ++# Nice try but useless: make will inherit BOOTSTRAPCFLAGS ++# from top Makefile ++ BOOTSTRAPCFLAGS = ++ ++ CC = gcc -m32 ++ AS = gcc -m32 -c -x assembler ++ ++.SUFFIXES: .cc ++ ++ CXX = c++ -m32 ++ ++ CXXFILT = c++filt ++ ++ CXXLIB = -lstdc++ ++ ++ CXXDEBUGFLAGS = -O2 -fno-strength-reduce -fno-strict-aliasing ++CXXDEPENDINCLUDES = ++ CXXEXTRA_DEFINES = ++CXXEXTRA_INCLUDES = ++ CXXSTD_DEFINES = -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(CXXPROJECT_DEFINES) ++ CXXOPTIONS = ++ CXXINCLUDES = $(INCLUDES) $(TOP_INCLUDES) $(CXXEXTRA_INCLUDES) ++ CXXDEFINES = $(CXXINCLUDES) $(CXXSTD_DEFINES) $(THREADS_CXXDEFINES) $(DEFINES) $(CXXEXTRA_DEFINES) ++ CXXFLAGS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES) ++ ++ COMPRESS = compress ++ GZIPCMD = gzip ++ ++ CPP = cpp $(STD_CPP_DEFINES) ++ RAWCPP = cpp -undef $(STD_CPP_OPTIONS) ++ PREPROCESSCMD = gcc -m32 -E $(STD_CPP_DEFINES) ++ ++ INSTALL = install ++ INSTALLFLAGS = -c ++ ++ LD = gcc -m32 -nostdlib ++ ++ LEX = flex -l ++ M4 = m4 ++ M4FLAGS = ++ LEXLIB = -lfl ++ YACC = bison -y ++ CCYACC = bison -y ++ ++ LINT = lint ++ ++ LINTLIBFLAG = -C ++ LINTOPTS = -axz ++ LN = ln -s ++ MAKE = make ++ MV = mv -f ++ CP = cp ++ ++ RANLIB = ranlib ++ ++ RANLIBINSTFLAGS = ++ ++ RM = rm -f ++ PERL = perl ++ PERLOPTS = ++ PERLENVSETUP = env LC_ALL=C ++ MANSUFFIX = 1x ++ LIBMANSUFFIX = 3x ++ FILEMANSUFFIX = 5x ++ MISCMANSUFFIX = 7 ++ DRIVERMANSUFFIX = 4 ++ ADMINMANSUFFIX = 8 ++ MANSRCSUFFIX = man ++ MANNEWSUFFIX = _man ++ MANDEFS = -D__apploaddir__=$(XAPPLOADDIR) -D__appmansuffix__=$(MANSUFFIX) -D__filemansuffix__=$(FILEMANSUFFIX) -D__libmansuffix__=$(LIBMANSUFFIX) -D__miscmansuffix__=$(MISCMANSUFFIX) -D__drivermansuffix__=$(DRIVERMANSUFFIX) -D__adminmansuffix__=$(ADMINMANSUFFIX) -D__projectroot__=$(PROJECTROOT) -D__xconfigfile__=$(XCONFIGFILE) -D__xconfigdir__=$(XCONFIGDIR) -D__xlogfile__=$(XLOGFILE) -D__xservername__=$(XSERVERNAME) $(XORGMANDEFS) $(VENDORMANDEFS) ++ ++ COMPRESSMANCMD = gzip -n ++ ++ TROFF = groff -Tps ++ NROFF = nroff ++ ++ MSMACROS = -ms ++ MANMACROS = -man ++ TBL = tbl ++ EQN = eqn ++ NEQN = neqn ++ COL = col ++ COLFLAGS = -b ++ ++ MODCC = gcc -m32 ++ ++ MODCPP = cpp ++ MODCFLAGS = $(CFLAGS) ++ MODAS = gcc -m32 -c -x assembler ++ MODASFLAGS = ++ ++ MODLD = gcc -m32 -nostdlib ++ ++ MODLDFLAGS = ++MODLDCOMBINEFLAGS = -r ++ MODAR = ar clq ++ ++ MODRANLIB = ranlib ++ ++ STD_INCLUDES = ++ STD_CPP_OPTIONS = -traditional ++ STD_CPP_DEFINES = -traditional -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(PROJECT_DEFINES) ++ STD_DEFINES = -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(PROJECT_DEFINES) ++ EXTRA_LOAD_FLAGS = ++ EXTRA_LDOPTIONS = ++ EXTRA_LIBRARIES = ++ TAGS = ctags ++ ++ PARALLELMFLAGS = ++ ++ SHAREDCODEDEF = ++ SHLIBDEF = ++ ++ SHLIBLDFLAGS = -shared $(SHLIBGLOBALSFLAGS) ++ ++ NOSTDLIB = -nostdlib ++ POSTNOSTDLIB = -Wl,-Bstatic -lgcc -Wl,-Bdynamic ++ ++ PICFLAGS = -fPIC ++ ++ CXXPICFLAGS = -fPIC ++ ++ PROTO_DEFINES = -DFUNCPROTO=15 -DNARROWPROTO ++ ++ INSTPGMFLAGS = ++ ++ INSTBINFLAGS = -m 0755 ++ INSTUIDFLAGS = -m 4711 ++ INSTLIBFLAGS = -m 0644 ++ INSTINCFLAGS = -m 0444 ++ INSTMANFLAGS = -m 0444 ++ INSTDATFLAGS = -m 0444 ++ INSTKMEMFLAGS = -m 4711 ++ ++ PROJECTROOT = /usr ++ ++ CDEBUGFLAGS = -O2 -fno-strength-reduce -fno-strict-aliasing ++ CCOPTIONS = ++ ++ ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(INSTALLED_INCLUDES) $(STD_INCLUDES) ++ ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(MODULE_DEFINES) $(DEFINES) $(EXTRA_DEFINES) ++ CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(THREADS_CFLAGS) $(MODULE_CFLAGS) $(ALLDEFINES) ++ LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES) $(DEPEND_DEFINES) ++ LDPRELIB = -L$(USRLIBDIR) $(INSTALLED_LIBS) ++ LDPOSTLIB = ++ LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_LDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS) ++ CXXLDOPTIONS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_CXXLDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS) ++ ++ LDLIBS = $(LDPOSTLIBS) $(THREADS_LIBS) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) ++ ++ CCLINK = $(CC) ++ ++ CXXLINK = $(CXX) ++ ++ LDSTRIPFLAGS = -x ++ LDCOMBINEFLAGS = -r ++ DEPENDFLAGS = ++ DEPEND_DEFINES = ++ ++# Not sure this belongs here ++ TKLIBDIR = ++ TKINCDIR = ++ TKLIBNAME = ++ TKLIBRARY = -L$(TKLIBDIR) -l$(TKLIBNAME) ++ TCLLIBDIR = ++ TCLINCDIR = ++ TCLLIBNAME = ++ TCLLIBRARY = -L$(TCLLIBDIR) -l$(TCLLIBNAME) ++ ++ MACROFILE = linux.cf ++ RM_CMD = $(RM) ++ ++ IMAKE_DEFINES = ++ IMAKE_WARNINGS = -Wundef ++ ++ IRULESRC = $(CONFIGDIR) ++ IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES) $(IMAKE_WARNINGS) ++ ++ ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/X11.tmpl $(IRULESRC)/site.def $(IRULESRC)/$(MACROFILE) $(IRULESRC)/xfree86.cf $(IRULESRC)/xf86.rules $(IRULESRC)/xorgsite.def $(IRULESRC)/host.def $(EXTRA_ICONFIGFILES) ++ ++# $Xorg: X11.rules,v 1.4 2000/08/17 19:41:46 cpqbld Exp $ ++ ++# $XFree86: xc/config/cf/X11.rules,v 1.6 2001/01/17 16:22:31 dawes Exp $ ++ ++# ---------------------------------------------------------------------- ++# X Window System Build Parameters and Rules ++# $XdotOrg: util/cf/X11.tmpl,v 1.54 2006/04/15 15:55:25 herrb Exp $ ++# $Xorg: X11.tmpl,v 1.6 2000/08/17 19:41:46 cpqbld Exp $ ++# ++# ++# ++# ++# $XFree86: xc/config/cf/X11.tmpl,v 1.248 2004/02/16 04:07:37 dawes Exp $ ++ ++XORGRELSTRING = `echo 6 8 99 903 | sed -e 's/ /./g' -e 's/^/Version\\\ /'` ++ XORGMANNAME = X Version 11 ++ ++STICKY_DEFINES = -DHAS_STICKY_DIR_BIT ++ ++FCHOWN_DEFINES = -DHAS_FCHOWN ++ ++# ----------------------------------------------------------------------- ++# X Window System make variables; these need to be coordinated with rules ++ ++ XTOP = $(TOP) ++ BINDIR = /usr/bin ++ BUILDINCROOT = $(TOP)/exports ++ BUILDINCDIR = $(BUILDINCROOT)/include ++ BUILDINCTOP = ../.. ++ BUILDLIBDIR = $(TOP)/exports/lib ++ BUILDLIBTOP = ../.. ++ BUILDBINDIR = $(TOP)/exports/bin ++ BUILDBINTOP = ../.. ++ BUILDMODULEDIR = $(BUILDLIBDIR)/modules ++ BUILDI18NDIR = $(BUILDLIBDIR)/locale ++ BUILDMODULETOP = $(BUILDLIBTOP)/.. ++ XBUILDINCROOT = $(XTOP)/exports ++ XBUILDINCDIR = $(XBUILDINCROOT)/include/X11 ++ XBUILDINCTOP = ../../.. ++ XBUILDBINDIR = $(XBUILDINCROOT)/bin ++ INCDIR = $(INCROOT) ++ ADMDIR = /usr/adm ++ LIBDIR = /usr/lib/X11 ++ SHAREDIR = /usr/share/X11 ++ LIBEXECDIR = /usr/libexec ++ MODULEDIR = $(USRLIBDIR)/modules ++ TOP_X_INCLUDES = ++ XBINDIR = $(PROJECTROOT)/bin ++ ++ INSTSRCDIR = /usr/src ++ ++ ETCX11DIR = /etc/X11 ++ ++ CONFDIR = $(ETCX11DIR) ++ ++ DOCDIR = $(LIBDIR)/doc ++ DOCHTMLDIR = $(DOCDIR)/html ++ DOCPSDIR = $(DOCDIR)/PostScript ++ DOCPDFDIR = $(DOCDIR)/PDF ++ FONTDIR = $(LIBDIR)/fonts ++ ENCODINGSDIR = $(LIBDIR)/fonts/encodings ++ XINITDIR = $(LIBDIR)/xinit ++ XDMDIR = $(LIBDIR)/xdm ++ XDMVARDIR = $(VARLIBDIR)/xdm ++ TWMDIR = $(LIBDIR)/twm ++ XSMDIR = $(LIBDIR)/xsm ++ NLSDIR = $(LIBDIR)/nls ++ XLOCALEDIR = $(LIBDIR)/locale ++ LBXPROXYDIR = $(LIBDIR)/lbxproxy ++ PROXYMANAGERDIR = $(LIBDIR)/proxymngr ++ XPRINTDIR = $(LIBDIR)/xserver ++ XAPPLOADDIR = /usr/share/X11/app-defaults ++ FONTCFLAGS = -t ++ ++ INSTAPPFLAGS = $(INSTDATFLAGS) ++ ++ RGB = $(XBINDIR)/rgb ++ FONTC = $(XBINDIR)/bdftopcf ++ MKFONTSCALE = $(XBINDIR)/mkfontscale ++ MKFONTDIR = $(XBINDIR)/mkfontdir ++ MKHTMLINDEX = $(XBINDIR)/mkhtmlindex ++ UCS2ANY = $(XBINDIR)/ucs2any ++ BDFTRUNCATE = $(XBINDIR)/bdftruncate ++ UCSMAPPREFIX = $(FONTDIR)/util/map- ++ XCURSORGEN = $(XBINDIR)/xcursorgen ++ ++ HTMLINDEXCMD = HtmlIndexCmd ++ ++ DOCUTILSRC = $(XTOP)/doc/util ++ CLIENTSRC = $(TOP)/clients ++ DEMOSRC = $(TOP)/demos ++ XDOCMACROS = $(DOCUTILSRC)/macros.t ++ XIDXMACROS = $(DOCUTILSRC)/indexmacros.t ++ PROGRAMSRC = $(TOP)/programs ++ LIBSRC = $(XTOP)/lib ++ FONTSRC = $(XTOP)/fonts ++ ENCODINGSSRC = $(FONTSRC)/encodings ++ INCLUDESRC = $(BUILDINCROOT)/include ++ XINCLUDESRC = $(INCLUDESRC)/X11 ++ SERVERSRC = $(XTOP)/programs/Xserver ++ CONTRIBSRC = $(XTOP)/../contrib ++ UNSUPPORTEDSRC = $(XTOP)/unsupported ++ DOCSRC = $(XTOP)/doc ++ RGBSRC = $(XTOP)/programs/rgb ++ BDFTOPCFSRC = $(PROGRAMSRC)/bdftopcf ++ MKFONTDIRSRC = $(PROGRAMSRC)/mkfontdir ++ FONTSERVERSRC = $(PROGRAMSRC)/xfs ++ FONTINCSRC = $(XTOP)/include/fonts ++ EXTINCSRC = $(XTOP)/include/extensions ++ FTSOURCEDIR = FreeTypeSrcDir ++ DRMSRCDIR = $(TOP)/extras/drm ++ MESASRCDIR = $(TOP)/extras/Mesa ++ OGLSAMPLESRCDIR = $(TOP)/extras/ogl-sample ++ PSWRAPSRC = $(XTOP)/config/pswrap ++ TRANSCOMMSRC = $(LIBSRC)/xtrans ++ TRANS_INCLUDES = -I$(TRANSCOMMSRC) ++ CONNECTION_FLAGS = -DUNIXCONN -DTCPCONN $(STICKY_DEFINES) $(FCHOWN_DEFINES) -DIPv6 ++XTRANS_FAILDEFINES = -DFAIL_HARD ++ ++ VENDORMANNAME = X.Org ++ VENDORMANVERSION = `echo 6 8 99 903 | sed -e 's/ /./g' -e 's/^/Version\\\ /'` ++ XORGMANDEFS = -D__xorgversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" ++ VENDORMANDEFS = -D__vendorversion__="$(VENDORMANVERSION) $(VENDORMANNAME)" ++ VENDORNAME = The X.Org Foundation ++ VENDORNAMESHORT = X.Org ++ ++ VENDORWEBSUPPORT = http://wiki.X.Org ++ ++VENDORSUPPORTDEFS = -D__VENDORDWEBSUPPORT__='"$(VENDORWEBSUPPORT)"' ++ ++ XKBDEFRULES = xorg ++ XKBDEFRULESDEFS = -D__XKBDEFRULES__='"$(XKBDEFRULES)"' ++ ++ XCONFIGFILE = xorg.conf ++ XCONFIGDIR = $(LIBDIR) ++ XLOGFILE = Xorg ++ XSERVERNAME = Xorg ++ ++ XENVLIBDIR = $(USRLIBDIR) ++ CLIENTENVSETUP = LD_LIBRARY_PATH=$(XENVLIBDIR) XLOCALEDIR=$(BUILDLIBDIR)/locale ++ ++# $Xorg: lnxLib.tmpl,v 1.3 2000/08/17 19:41:47 cpqbld Exp $ ++# $XFree86: xc/config/cf/lnxLib.tmpl,v 3.19 2003/10/15 22:47:48 herrb Exp $ ++ ++ XLIBSRC = $(LIBSRC)/X11 ++ ++SOXLIBREV = 6.2 ++DEPXONLYLIB = ++XONLYLIB = -lX11 ++ ++LINTXONLY = $(LINTLIBDIR)/llib-lX11.ln ++ ++ DEPXLIBONLY = $(DEPXONLYLIB) ++ XLIBONLY = $(XONLYLIB) ++ LINTXONLYLIB = $(LINTXONLY) ++ ++ XEXTLIBSRC = $(LIBSRC)/Xext ++ ++SOXEXTREV = 6.4 ++DEPEXTENSIONLIB = ++EXTENSIONLIB = -lXext ++ ++LINTEXTENSION = $(LINTLIBDIR)/llib-lXext.ln ++ ++LINTEXTENSIONLIB = $(LINTEXTENSION) ++ DEPXLIB = $(DEPEXTENSIONLIB) $(DEPXONLYLIB) ++ XLIB = $(EXTENSIONLIB) $(XONLYLIB) ++ LINTXLIB = $(LINTXONLYLIB) ++ ++ XSSLIBSRC = $(LIBSRC)/Xss ++ ++SOXSSREV = 1.0 ++DEPXSSLIB = ++XSSLIB = -lXss ++ ++LINTXSS = $(LINTLIBDIR)/llib-lXss.ln ++ ++ XXF86MISCLIBSRC = $(LIBSRC)/Xxf86misc ++ ++SOXXF86MISCREV = 1.1 ++DEPXXF86MISCLIB = ++XXF86MISCLIB = -lXxf86misc ++ ++LINTXXF86MISC = $(LINTLIBDIR)/llib-lXxf86misc.ln ++ ++ XXF86VMLIBSRC = $(LIBSRC)/Xxf86vm ++ ++SOXXF86VMREV = 1.0 ++DEPXXF86VMLIB = ++XXF86VMLIB = -lXxf86vm ++ ++LINTXXF86VM = $(LINTLIBDIR)/llib-lXxf86vm.ln ++ ++ XXF86DGALIBSRC = $(LIBSRC)/Xxf86dga ++ ++SOXXF86DGAREV = 1.0 ++DEPXXF86DGALIB = ++XXF86DGALIB = -lXxf86dga ++ ++LINTXXF86DGA = $(LINTLIBDIR)/llib-lXxf86dga.ln ++ ++ XXF86RUSHLIBSRC = $(LIBSRC)/Xxf86rush ++ ++SOXXF86RUSHREV = 1.0 ++DEPXXF86RUSHLIB = ++XXF86RUSHLIB = -lXxf86rush ++ ++LINTXXF86RUSH = $(LINTLIBDIR)/llib-lXxf86rush.ln ++ ++ XVLIBSRC = $(LIBSRC)/Xv ++ ++SOXVREV = 1.0 ++DEPXVLIB = ++XVLIB = -lXv ++ ++LINTXV = $(LINTLIBDIR)/llib-lXv.ln ++ ++ XVMCLIBSRC = $(LIBSRC)/XvMC ++ ++SOXVMCREV = 1.0 ++DEPXVMCLIB = ++XVMCLIB = -lXvMC ++ ++LINTXVMC = $(LINTLIBDIR)/llib-lXvMC.ln ++ ++ XINERAMALIBSRC = $(LIBSRC)/Xinerama ++ ++SOXINERAMAREV = 1.0 ++DEPXINERAMALIB = ++XINERAMALIB = -lXinerama ++ ++LINTXINERAMA = $(LINTLIBDIR)/llib-lXinerama.ln ++ ++ XRESLIBSRC = $(LIBSRC)/XRes ++ ++SOXRESREV = 1.0 ++DEPXRESLIB = ++XRESLIB = -lXRes ++ ++LINTXRES = $(LINTLIBDIR)/llib-lXRes.ln ++ ++ DMXLIBSRC = $(LIBSRC)/dmx ++ ++DEPDMXLIB = $(USRLIBDIR)/libdmx.a ++DMXLIB = -ldmx ++ ++LINTDMX = $(LINTLIBDIR)/llib-ldmx.ln ++ ++ DPSLIBSRC = $(LIBSRC)/dps ++ ++DEPDPSLIB = $(USRLIBDIR)/libdps.a ++DPSLIB = -ldps ++ ++LINTDPS = $(LINTLIBDIR)/llib-ldps.ln ++ ++ DPSTKLIBSRC = $(LIBSRC)/dpstk ++ ++DEPDPSTKLIB = $(USRLIBDIR)/libdpstk.a ++DPSTKLIB = -ldpstk ++ ++LINTDPSTK = $(LINTLIBDIR)/llib-ldpstk.ln ++ ++ PSRESLIBSRC = $(LIBSRC)/psres ++ ++DEPPSRESLIB = $(USRLIBDIR)/libpsres.a ++PSRESLIB = -lpsres ++ ++LINTPSRES = $(LINTLIBDIR)/llib-lpsres.ln ++ ++ GLULIBSRC = $(LIBSRC)/GLU ++ ++SOGLUREV = 1.3 ++DEPGLULIB = ++GLULIB = -lGLU ++ ++LINTGLU = $(LINTLIBDIR)/llib-lGLU.ln ++ ++ GLXLIBSRC = $(LIBSRC)/GL ++ ++SOGLREV = 1.2 ++DEPGLXLIB = ++GLXLIB = -lGL ++ ++LINTGLX = $(LINTLIBDIR)/llib-lGL.ln ++ ++ GLWIDGETSRC = $(LIBSRC)/GLw ++ ++SOGLWREV = 1.0 ++DEPGLWLIB = ++GLWLIB = -lGLw ++ ++LINTGLW = $(LINTLIBDIR)/llib-lGLw.ln ++ ++ XRENDERLIBSRC = $(LIBSRC)/Xrender ++ ++SOXRENDERREV = 1.2.2 ++DEPXRENDERLIB = ++XRENDERLIB = -lXrender ++ ++LINTXRENDER = $(LINTLIBDIR)/llib-lXrender.ln ++ ++ XRANDRLIBSRC = $(LIBSRC)/Xrandr ++ ++SOXRANDRREV = 2.0 ++DEPXRANDRLIB = ++XRANDRLIB = -lXrandr ++ ++LINTXRANDR = $(LINTLIBDIR)/llib-lXrandr.ln ++ ++ XFIXESLIBSRC = $(LIBSRC)/Xfixes ++ ++SOXFIXESREV = 3.0 ++DEPXFIXESLIB = ++XFIXESLIB = -lXfixes ++ ++LINTXFIXES = $(LINTLIBDIR)/llib-lXfixes.ln ++ ++ XDAMAGELIBSRC = $(LIBSRC)/Xdamage ++ ++SOXDAMAGEREV = 1.0 ++DEPXDAMAGELIB = ++XDAMAGELIB = -lXdamage ++ ++LINTXDAMAGE = $(LINTLIBDIR)/llib-lXdamage.ln ++ ++XCOMPOSITELIBSRC = $(LIBSRC)/Xcomposite ++ ++SOXCOMPOSITEREV = 1.0 ++DEPXCOMPOSITELIB = ++XCOMPOSITELIB = -lXcomposite ++ ++LINTXCOMPOSITE = $(LINTLIBDIR)/llib-lXcomposite.ln ++ ++XEVIELIBSRC = $(LIBSRC)/Xevie ++ ++SOXEVIEREV = 1.0 ++DEPXEVIELIB = ++XEVIELIB = -lXevie ++ ++LINTXEVIE = $(LINTLIBDIR)/llib-lXevie.ln ++ ++ XCURSORLIBSRC = $(LIBSRC)/Xcursor ++ ++SOXCURSORREV = 1.0.2 ++DEPXCURSORLIB = ++XCURSORLIB = -lXcursor ++ ++LINTXCURSOR = $(LINTLIBDIR)/llib-lXcursor.ln ++ ++ APPLEWMLIBSRC = $(LIBSRC)/apple ++ ++DEPAPPLEWMLIB = $(USRLIBDIR)/libAppleWM.a ++APPLEWMLIB = -lAppleWM ++ ++LINTAPPLEWM = $(LINTLIBDIR)/llib-lAppleWM.ln ++ ++ WINDOWSWMLIBSRC = $(LIBSRC)/windows ++ ++DEPWINDOWSWMLIB = $(USRLIBDIR)/libWindowsWM.a ++WINDOWSWMLIB = -lWindowsWM ++ ++LINTWINDOWSWM = $(LINTLIBDIR)/llib-lWindowsWM.ln ++ ++ XFONTCACHELIBSRC = $(LIBSRC)/Xfontcache ++ ++SOXFONTCACHEREV = 1.2 ++DEPXFONTCACHELIB = ++XFONTCACHELIB = -lXfontcache ++ ++LINTXFONTCACHE = $(LINTLIBDIR)/llib-lXfontcache.ln ++ ++ XAUTHSRC = $(LIBSRC)/Xau ++ ++SOXAUTHREV = 6.0 ++DEPXAUTHLIB = ++XAUTHLIB = -lXau ++ ++LINTXAUTH = $(LINTLIBDIR)/llib-lXau.ln ++ ++ XDMCPLIBSRC = $(LIBSRC)/Xdmcp ++ ++SOXDMCPREV = 6.0 ++DEPXDMCPLIB = ++XDMCPLIB = -lXdmcp ++ ++LINTXDMCP = $(LINTLIBDIR)/llib-lXdmcp.ln ++ ++ XMUSRC = $(LIBSRC)/Xmu ++ ++SOXMUREV = 6.2 ++DEPXMULIB = ++XMULIB = -lXmu ++ ++LINTXMU = $(LINTLIBDIR)/llib-lXmu.ln ++ ++ XMUUSRC = $(LIBSRC)/Xmuu ++ ++SOXMUUREV = 1.0 ++DEPXMUULIB = ++XMUULIB = -lXmuu ++ ++LINTXMUU = $(LINTLIBDIR)/llib-lXmuu.ln ++ ++ OLDXLIBSRC = $(LIBSRC)/oldX ++ ++DEPOLDXLIB = $(USRLIBDIR)/liboldX.a ++OLDXLIB = -loldX ++ ++LINTOLDX = $(LINTLIBDIR)/llib-loldX.ln ++ ++ XPLIBSRC = $(LIBSRC)/Xp ++ ++SOXPREV = 6.2 ++DEPXPLIB = ++XPLIB = -lXp ++ ++LINTXP = $(LINTLIBDIR)/llib-lXp.ln ++ ++ TOOLKITSRC = $(LIBSRC)/Xt ++ ++SOXTREV = 6.0 ++DEPXTOOLONLYLIB = ++XTOOLONLYLIB = -lXt ++ ++LINTXTOOLONLY = $(LINTLIBDIR)/llib-lXt.ln ++ ++ DEPXTOOLLIB = $(DEPXTOOLONLYLIB) $(DEPSMLIB) $(DEPICELIB) ++ XTOOLLIB = $(XTOOLONLYLIB) $(SMLIB) $(ICELIB) ++ LINTXTOOLLIB = $(LINTXTOOLONLYLIB) ++ ++ XALIBSRC = $(LIBSRC)/Xa ++ ++SOXAREV = 1.0 ++DEPXALIB = ++XALIB = -lXa ++ ++LINTXA = $(LINTLIBDIR)/llib-lXa.ln ++ ++ AWIDGETSRC = $(LIBSRC)/Xaw ++ ++SOXAWREV = 8.0 ++DEPXAWLIB = ++XAWLIB = -lXaw ++ ++LINTXAW = $(LINTLIBDIR)/llib-lXaw.ln ++ ++ AWIDGET7SRC = $(LIBSRC)/Xaw7 ++ ++SOXAW7REV = 7.0 ++DEPXAW7LIB = ++XAW7LIB = -lXaw ++ ++LINTXAW7 = $(LINTLIBDIR)/llib-lXaw.ln ++ ++ AWIDGET6SRC = $(LIBSRC)/Xaw6 ++ ++SOXAW6REV = 6.1 ++DEPXAW6LIB = ++XAW6LIB = -lXaw ++ ++LINTXAW6 = $(LINTLIBDIR)/llib-lXaw.ln ++ ++ XILIBSRC = $(LIBSRC)/Xi ++ ++SOXINPUTREV = 6.0 ++DEPXILIB = ++XILIB = -lXi ++ ++LINTXI = $(LINTLIBDIR)/llib-lXi.ln ++ ++ XTESTLIBSRC = $(LIBSRC)/Xtst ++ ++SOXTESTREV = 6.1 ++DEPXTESTLIB = ++XTESTLIB = -lXtst ++ ++LINTXTEST = $(LINTLIBDIR)/llib-lXtst.ln ++ ++DEPXBSDLIB = $(USRLIBDIR)/libXbsd.a ++XBSDLIB = -lXbsd ++ ++LINTXBSD = $(LINTLIBDIR)/llib-lXbsd.ln ++ ++ ICESRC = $(LIBSRC)/ICE ++ ++SOICEREV = 6.4 ++DEPICELIB = ++ICELIB = -lICE ++ ++LINTICE = $(LINTLIBDIR)/llib-lICE.ln ++ ++ SMSRC = $(LIBSRC)/SM ++ ++SOSMREV = 6.0 ++DEPSMLIB = ++SMLIB = -lSM ++ ++LINTSM = $(LINTLIBDIR)/llib-lSM.ln ++ ++ XKEYSRC = $(LIBSRC)/Xkey ++ ++SOXKEYREV = 6.0 ++DEPXKEYLIB = ++XKEYLIB = -lXkey ++ ++LINTXKEY = $(LINTLIBDIR)/llib-lXkey.ln ++ ++ FSLIBSRC = $(LIBSRC)/FS ++ ++SOFSREV = 6.0 ++DEPFSLIB = ++FSLIB = -lFS ++ ++LINTFS = $(LINTLIBDIR)/llib-lFS.ln ++ ++ FONTLIBSRC = $(LIBSRC)/font ++ ++SOFONTREV = 1.5 ++DEPFONTLIB = ++FONTLIB = -L$(FREETYPELIBDIR) -L$(FONTLIBSRC) -lXfont ++ ++LINTXFONT = $(LINTLIBDIR)/llib-lXfont.ln ++# ++SOFONTREV = 1.5 ++DEPXFONTLIB = ++XFONTLIB = -lXfont ++ ++LINTXFONT = $(LINTLIBDIR)/llib-lXfont.ln ++ ++ FONTSTUBLIBSRC = $(FONTLIBSRC)/stubs ++ ++DEPFONTSTUBLIB = $(USRLIBDIR)/libfntstubs.a ++FONTSTUBLIB = -lfntstubs ++ ++LINTFONTSTUB = $(LINTLIBDIR)/llib-lfntstubs.ln ++ DEPFONTLIB = $(DEPXFONTLIB) $(DEPFONTSTUBLIB) ++ FONTLIB = $(XFONTLIB) $(FONTSTUBLIB) $(FREETYPE2LIB) ++ ++ FONTENCLIBSRC = $(LIBSRC)/fontenc ++ ++SOFONTENCREV = 1.0 ++DEPXFONTENCLIB = ++XFONTENCLIB = -lfontenc ++ ++LINTXFONTENC = $(LINTLIBDIR)/llib-lfontenc.ln ++ ++ XPMLIBSRC = $(LIBSRC)/Xpm ++ ++SOXPMREV = 4.11 ++DEPXPMLIB = ++XPMLIB = -lXpm ++ ++LINTXPM = $(LINTLIBDIR)/llib-lXpm.ln ++ ++FREETYPE2DIR = /usr ++FREETYPE2LIBDIR = /usr/lib ++FREETYPE2INCDIR = /usr/include ++ ++FREETYPE2LIB = -lfreetype ++ ++FREETYPE2INCLUDES = -I$(FREETYPE2INCDIR)/freetype2 -I$(FREETYPE2INCDIR)/freetype2/config ++ ++FREETYPE2DEFINES = -DFREETYPE2 ++ ++ EXPATLIBSRC = $(LIBSRC)/expat ++ ++SOEXPATREV = 0.4 ++DEPEXPATLIB = ++EXPATLIB = -lexpat ++ ++LINTEXPAT = $(LINTLIBDIR)/llib-lexpat.ln ++ ++EXPATDIR = /usr ++EXPATLIBDIR = /usr/lib ++EXPATINCDIR = /usr/include ++ ++EXPATINCLUDES = ++ ++EXPATLIB = -lexpat ++ ++EXPATDEFINES = -DEXPAT ++ ++ XFT1LIBSRC = $(LIBSRC)/Xft1 ++ ++SOXFT1REV = 1.1 ++DEPXFT1LIB = ++XFT1LIB = -lXft ++ ++LINTXFT1 = $(LINTLIBDIR)/llib-lXft.ln ++ ++ XFTLIBSRC = $(LIBSRC)/Xft ++ ++SOXFTREV = 2.1.2 ++DEPXFTLIB = ++XFTLIB = -lXft ++ ++LINTXFT = $(LINTLIBDIR)/llib-lXft.ln ++ ++ FONTCONFIGLIBSRC = $(LIBSRC)/fontconfig ++ ++SOFONTCONFIGREV = 1.0.4 ++DEPFONTCONFIGLIB = ++FONTCONFIGLIB = -lfontconfig ++ ++LINTFONTCONFIG = $(LINTLIBDIR)/llib-lfontconfig.ln ++ ++FONTCONFIGINCDIR=$(INCDIR) ++ ++FONTCONFIGINCLUDES = -I$(FONTCONFIGINCDIR) ++ ++FCCACHE = $(BINDIR)/fc-cache ++ ++FONTCONFIGDEFINES = -DFONTCONFIG ++ ++XFTINCLUDES=$(FONTCONFIGINCLUDES) $(FREETYPE2INCLUDES) ++ ++LIBPNGINCDIR = /usr/include ++ ++LIBPNGINC= ++ ++LIBPNGDIR = /usr ++LIBPNGLIBDIR = /usr/lib ++LIBPNGINCDIR = /usr/include ++ ++LIBPNGLIB = -lpng ++ ++ XKBFILELIBSRC = $(LIBSRC)/xkbfile ++ ++SOXKBFILEREV = 1.0 ++DEPXKBFILELIB = ++XKBFILELIB = -lxkbfile ++ ++LINTXKBFILE = $(LINTLIBDIR)/llib-lxkbfile.ln ++ ++ XKBCOMPCMD = $(XBINDIR)/xkbcomp ++ ++ XKBUILIBSRC = $(LIBSRC)/xkbui ++ ++SOXKBUIREV = 1.0 ++DEPXKBUILIB = ++XKBUILIB = -lxkbui ++ ++LINTXKBUI = $(LINTLIBDIR)/llib-lxkbui.ln ++ ++EXTRAXAWREQS = ++ ++EXTRAXAWCLIENTDEPLIBS = ++ ++EXTRAXAWCLIENTLIBS = ++ ++ XTRAPLIBSRC = $(LIBSRC)/XTrap ++ ++SOXTRAPREV = 6.4 ++DEPXTRAPLIB = ++XTRAPLIB = -lXTrap ++ ++LINTXTRAP = $(LINTLIBDIR)/llib-lXTrap.ln ++ ++ DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB) ++ ++ DEPLIBS1 = $(DEPLIBS) ++ DEPLIBS2 = $(DEPLIBS) ++ DEPLIBS3 = $(DEPLIBS) ++ DEPLIBS4 = $(DEPLIBS) ++ DEPLIBS5 = $(DEPLIBS) ++ DEPLIBS6 = $(DEPLIBS) ++ DEPLIBS7 = $(DEPLIBS) ++ DEPLIBS8 = $(DEPLIBS) ++ DEPLIBS9 = $(DEPLIBS) ++ DEPLIBS10 = $(DEPLIBS) ++ ++ FCPRELOADPATTERN = libfontconfig.so.? ++ ++ XFTPRELOADPATTERN = libXft.so.? ++ XRENDERPRELOADPATTERN = libXrender.so.? ++ XFONTPRELOADPATTERN = libXfont*.so.? ++ ++XMULIBONLY = -lXmu ++XMULIB = $(XMULIBONLY) $(XTOOLLIB) $(XLIB) ++ ++ CONFIGDIR = /usr/share/X11/config ++ ++ USRLIBDIRPATH = $(USRLIBDIR) ++ LDPRELIBS = -L$(USRLIBDIR) $(INSTALLED_LIBS) ++ LDPOSTLIBS = ++ TOP_INCLUDES = -I$(INCROOT) $(TOP_X_INCLUDES) ++ PROJECT_DEFINES = ++ VENDOR_DEFINES = -DXVENDORNAME='"$(VENDORNAME)"' -DXVENDORNAMESHORT='"$(VENDORNAMESHORT)"' ++ ++CXXPROJECT_DEFINES = ++ ++# ---------------------------------------------------------------------- ++# start of Imakefile ++ ++# Remove the next line if you want genuine Xaw instead of Xaw3d ++ ++# Remove the next line if you don't want to enable XTEST support ++ ++# Remove the next line if you want to disable internationalization ++ ++SRCS = xvkbd.c findwidget.c ++OBJS = xvkbd.o findwidget.o ++DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXPMLIB) $(EXTRAXAWCLIENTDEPLIBS) $(DEPXLIB) ++SYS_LIBRARIES = $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(EXTRAXAWCLIENTLIBS) $(XLIB) ++ ++D_XTEST = -DUSE_XTEST ++SYS_LIBRARIES = $(XAWLIB) $(XMULIBONLY) $(XTOOLLIB) $(XPMLIB) $(EXTRAXAWCLIENTLIBS) $(XLIB) -lXtst ++ ++D_I18N = -DUSE_I18N ++ ++DEFINES = $(D_XAW3D) $(D_XTEST) $(D_I18N) ++ ++xvkbd.o: xvkbd.c resources.h XVkbd-common.h ++ $(RM) $@ ++ $(CC) -c $(CFLAGS) $*.c ++ ++ PROGRAM = xvkbd ++ ++all:: xvkbd ++ ++xvkbd: $(OBJS) $(DEPLIBS) ++ $(RM) $@ ++ $(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(LOCAL_LIBRARIES) $(LDLIBS) $(EXTRA_LOAD_FLAGS) ++ ++install:: xvkbd ++ @if [ -d $(DESTDIR)$(BINDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(BINDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(BINDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(BINDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTPGMFLAGS) xvkbd $(DESTDIR)$(BINDIR)/xvkbd ++ ++all:: xvkbd.$(MANNEWSUFFIX) ++ ++xvkbd.$(MANNEWSUFFIX): xvkbd.$(MANSRCSUFFIX) ++ $(RM) $@ ++ if test -z "$(PREPROCESSMANPAGES)" ; then \ ++ cd `dirname xvkbd` && \ ++ $(LN) `basename xvkbd.$(MANSRCSUFFIX)` `basename $@`; \ ++ else \ ++ $(RAWCPP) $(MANDEFS) $(EXTRAMANDEFS) \ ++ < xvkbd.$(MANSRCSUFFIX) | sed -e '/^# *[0-9][0-9]* *.*$$/d' -e '/^#line *[0-9][0-9]* *.*$$/d' -e '/^[ ]*XCOMM$$/s/XCOMM/#/' -e '/^[ ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/#/' -e '/^[ ]*XHASH/s/XHASH/#/' -e '/\@\@$$/s/\@\@$$/\\/' >$@; \ ++ fi ++ ++cleandir:: ++ $(RM) xvkbd.$(MANNEWSUFFIX) ++ ++install.man:: xvkbd.$(MANNEWSUFFIX) ++ @if [ -d $(DESTDIR)$(MANDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(MANDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(MANDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(MANDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTMANFLAGS) xvkbd.$(MANNEWSUFFIX) $(DESTDIR)$(MANDIR)/xvkbd.$(MANSUFFIX) ++ ++depend:: ++ $(DEPEND) $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS) ++ ++lint: ++ $(LINT) $(LINTFLAGS) $(SRCS) $(LINTLIBS) ++lint1: ++ $(LINT) $(LINTFLAGS) $(FILE) $(LINTLIBS) ++ ++cleandir:: ++ $(RM) xvkbd ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-belgian.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-belgian.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-belgian ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-common.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-common.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-common ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-danish.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-danish.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-danish ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-fitaly.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-fitaly.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-fitaly ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-french.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-french.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-french ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-french2.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-french2.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-french2 ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-german.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-german.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-german ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-greek.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-greek.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-greek ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-hebrew.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-hebrew.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-hebrew ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-icelandic.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-icelandic.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-icelandic ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-italian.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-italian.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-italian ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-jisx6002.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-jisx6002.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-jisx6002 ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-jisx6004.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-jisx6004.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-jisx6004 ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-korean.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-korean.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-korean ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-latin1.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-latin1.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-latin1 ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-norwegian.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-norwegian.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-norwegian ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-portuguese.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-portuguese.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-portuguese ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-slovene.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-slovene.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-slovene ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-small.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-small.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-small ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-spanish.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-spanish.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-spanish ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-swedish.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-swedish.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-swedish ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-swissgerman.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-swissgerman.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-swissgerman ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-turkish.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-turkish.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-turkish ++ ++install:: ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ $(RM) $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ fi ++ @if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(LIBDIR)/. ]; then \ ++ (set -x; rm -f $(DESTDIR)$(LIBDIR)/.); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(LIBDIR)/.); \ ++ fi ++ @if [ -d $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(CONFDIR)/app-defaults ]; then \ ++ (set -x; rm -f $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(CONFDIR)/app-defaults); \ ++ fi ++ @for flag in ${MAKEFLAGS} ''; do \ ++ case "$$flag" in *=*) ;; --*) ;; *[i]*) set +e;; esac; done; \ ++ if [ -d $(DESTDIR)$(LIBDIR)/. ]; then \ ++ RELPATH=`echo $(LIBDIR)/. | \ ++ sed -e 's:^/::' -e 's:[^/.][^/]*:..:'g -e 's:/\.$$::'`; \ ++ cd $(DESTDIR)$(LIBDIR)/.; \ ++ if [ -d app-defaults -a ! -h app-defaults ]; then \ ++ (cd app-defaults; tar cf - . | \ ++ (cd $(DESTDIR)$(CONFDIR)/app-defaults; \ ++ tar xf -; exit 0); exit 0); \ ++ fi; \ ++ $(RM) -r app-defaults; \ ++ $(LN) $${RELPATH}$(CONFDIR)/app-defaults .; \ ++ fi ++ ++install:: XVkbd-uk.ad ++ @if [ -d $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ set +x; \ ++ else \ ++ if [ -h $(DESTDIR)$(XAPPLOADDIR) ]; then \ ++ (set -x; rm -f $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi; \ ++ (set -x; $(MKDIRHIER) $(DESTDIR)$(XAPPLOADDIR)); \ ++ fi ++ $(INSTALL) $(INSTALLFLAGS) $(INSTAPPFLAGS) XVkbd-uk.ad $(DESTDIR)$(XAPPLOADDIR)/XVkbd-uk ++ ++# ============================ ++# These rules are only for me ++ ++_distclean: cleandir ++ -rm Makefile ++ ++XVkbd-common.h: XVkbd-common.ad ++ -which ad2c > /dev/null && ad2c XVkbd-common.ad > XVkbd-common.h ++ ++HTML = $(HOME)/public_html/homepage3.nifty.com/xvkbd/index.html ++_readme: ++ -[ -f $(HTML) ] && html2man $(HTML) > xvkbd.man ++ ( echo ".pl 10000"; echo ".ll 75"; echo ".hy 0"; echo ".ad l" ) | cat - xvkbd.man | groff -Tascii -man | sed 's/.//g' | head -9000 | cat -s | tail +3 > README ++ ++# ============================ ++ ++# ---------------------------------------------------------------------- ++# common rules for all Makefiles - do not edit ++ ++.c.i: ++ $(RM) $@ ++ $(CC) -E $(CFLAGS) $(_NOOP_) $*.c > $@ ++ ++.SUFFIXES: .ii ++ ++.cc.ii: ++ $(RM) $@ ++ $(CC) -E $(CFLAGS) $(_NOOP_) $*.cc > $@ ++ ++.SUFFIXES: .s ++ ++.c.s: ++ $(RM) $@ ++ $(CC) -S $(CFLAGS) $(_NOOP_) $*.c ++ ++.cc.s: ++ $(RM) $@ ++ $(CC) -S $(CFLAGS) $(_NOOP_) $*.cc ++ ++emptyrule:: ++ ++cleandir:: ++ $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut "#"* ++ ++Makefile:: ++ -@if [ -f Makefile ]; then set -x; \ ++ $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \ ++ else exit 0; fi ++ $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR) ++ ++tags:: ++ $(TAGS) -w *.[ch] ++ $(TAGS) -xw *.[ch] > TAGS ++ ++man_keywords:: ++ ++html_index:: ++ ++clean:: cleandir ++ ++distclean:: cleandir ++ ++# ---------------------------------------------------------------------- ++# empty rules for directories that do not have SUBDIRS - do not edit ++ ++install:: ++ @echo "install in $(CURRENT_DIR) done" ++ ++install.man:: ++ @echo "install.man in $(CURRENT_DIR) done" ++ ++install.sdk:: ++ @echo "install.sdk in $(CURRENT_DIR) done" ++ ++Makefiles:: ++ ++includes:: ++ ++depend:: ++ ++distclean:: ++ $(RM) Makefile Makefile.dep ++ ++# ---------------------------------------------------------------------- ++# dependencies generated by makedepend ++ diff --git a/buildroot/package/xvkbd/Config.in b/buildroot/package/xvkbd/Config.in new file mode 100644 index 0000000..464a6ef --- /dev/null +++ b/buildroot/package/xvkbd/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_XVKBD + bool "xvkbd" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBICE + select BR2_PACKAGE_XLIB_LIBSM + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXAW + select BR2_PACKAGE_XLIB_LIBXEXT + select BR2_PACKAGE_XLIB_LIBXMU + select BR2_PACKAGE_XLIB_LIBXPM + select BR2_PACKAGE_XLIB_LIBXT + select BR2_PACKAGE_XLIB_LIBXTST + help + on-screen keyboard for X + + http://t-sato.in.coocan.jp/xvkbd diff --git a/buildroot/package/xvkbd/xvkbd.hash b/buildroot/package/xvkbd/xvkbd.hash new file mode 100644 index 0000000..18148e5 --- /dev/null +++ b/buildroot/package/xvkbd/xvkbd.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 895f768269820e7c0379b0daac3687bda0c670d192ebb7e61e5613a5939ec90b xvkbd-3.7.tar.gz diff --git a/buildroot/package/xvkbd/xvkbd.mk b/buildroot/package/xvkbd/xvkbd.mk new file mode 100644 index 0000000..132d7e1 --- /dev/null +++ b/buildroot/package/xvkbd/xvkbd.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# xvkbd +# +################################################################################ + +XVKBD_VERSION = 3.7 +XVKBD_SITE = http://t-sato.in.coocan.jp/xvkbd +XVKBD_LICENSE = GPL-2.0+ +XVKBD_LICENSE_FILES = README + +# Passing USRLIBDIR ensures that the stupid Makefile doesn't add +# /usr/lib to the library search path. +define XVKBD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) \ + USRLIBDIR="$(STAGING_DIR)/usr/lib" +endef + +define XVKBD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +XVKBD_DEPENDENCIES = \ + xlib_libICE \ + xlib_libSM \ + xlib_libX11 \ + xlib_libXaw \ + xlib_libXext \ + xlib_libXmu \ + xlib_libXpm \ + xlib_libXt \ + xlib_libXtst + +$(eval $(generic-package)) diff --git a/buildroot/package/xxhash/Config.in b/buildroot/package/xxhash/Config.in new file mode 100644 index 0000000..f2cccda --- /dev/null +++ b/buildroot/package/xxhash/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XXHASH + bool "xxhash" + help + xxHash is an extremely fast hash algorithm, running at RAM + speed limits. + + https://github.com/Cyan4973/xxHash diff --git a/buildroot/package/xxhash/xxhash.hash b/buildroot/package/xxhash/xxhash.hash new file mode 100644 index 0000000..31081c0 --- /dev/null +++ b/buildroot/package/xxhash/xxhash.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 9743539ed787ea9bd5bb348265cebdd5adcbf820ad329bf44c28bc69ab4c7cd8 xxhash-r40.tar.gz diff --git a/buildroot/package/xxhash/xxhash.mk b/buildroot/package/xxhash/xxhash.mk new file mode 100644 index 0000000..7e04066 --- /dev/null +++ b/buildroot/package/xxhash/xxhash.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xxhash +# +################################################################################ + +XXHASH_VERSION = r40 +XXHASH_SITE = $(call github,Cyan4973,xxHash,$(XXHASH_VERSION)) +XXHASH_LICENSE = BSD-2-Clause, GPL-2.0+ +XXHASH_LICENSE_FILES = LICENSE xxhsum.c + +define XXHASH_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) xxhsum +endef + +define XXHASH_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/xxhsum $(TARGET_DIR)/usr/bin/xxhsum +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/xz/Config.in b/buildroot/package/xz/Config.in new file mode 100644 index 0000000..70c7266 --- /dev/null +++ b/buildroot/package/xz/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_XZ + bool "xz-utils" + help + XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm + compression format, which provides memory-hungry but + powerful compression (often better than bzip2) and fast, + easy decompression. + + This package provides the command line tools for working + with XZ compression, including xz, unxz, xzcat, xzgrep, and + so on. They can also handle the older LZMA format, and if + invoked via appropriate symlinks will emulate the behavior + of the commands in the lzma package. + + http://tukaani.org/xz/ diff --git a/buildroot/package/xz/xz.hash b/buildroot/package/xz/xz.hash new file mode 100644 index 0000000..20a4a47 --- /dev/null +++ b/buildroot/package/xz/xz.hash @@ -0,0 +1,2 @@ +# Locally calculated after checking pgp signature +sha256 fd9ca16de1052aac899ad3495ad20dfa906c27b4a5070102a2ec35ca3a4740c1 xz-5.2.3.tar.bz2 diff --git a/buildroot/package/xz/xz.mk b/buildroot/package/xz/xz.mk new file mode 100644 index 0000000..e8116f2 --- /dev/null +++ b/buildroot/package/xz/xz.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# xz +# +################################################################################ + +XZ_VERSION = 5.2.3 +XZ_SOURCE = xz-$(XZ_VERSION).tar.bz2 +XZ_SITE = http://tukaani.org/xz +XZ_INSTALL_STAGING = YES +XZ_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' +XZ_LICENSE = GPL-2.0+, GPL-3.0+, LGPL-2.1+ +XZ_LICENSE_FILES = COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +XZ_CONF_OPTS = --enable-threads +else +XZ_CONF_OPTS = --disable-threads +endif + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/yad/Config.in b/buildroot/package/yad/Config.in new file mode 100644 index 0000000..300525e --- /dev/null +++ b/buildroot/package/yad/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_YAD + bool "yad" + depends on BR2_PACKAGE_XORG7 + depends on BR2_PACKAGE_LIBGTK2 || BR2_PACKAGE_LIBGTK3_X11 + help + YAD (yet another dialog) is a tool for create graphical + dialogs from shell scripts. + + http://sourceforge.net/projects/yad-dialog/ + +comment "yad needs libgtk2 or libgtk3 w/ X11 backend" + depends on BR2_PACKAGE_XORG7 + depends on !BR2_PACKAGE_LIBGTK2 && !BR2_PACKAGE_LIBGTK3_X11 diff --git a/buildroot/package/yad/yad.hash b/buildroot/package/yad/yad.hash new file mode 100644 index 0000000..1839282 --- /dev/null +++ b/buildroot/package/yad/yad.hash @@ -0,0 +1,3 @@ +# From http://sourceforge.net/projects/yad-dialog/files/ +md5 4e24888712be1e95fd3cea815f19c6cb yad-0.33.1.tar.xz +sha1 b39977128678ca67bf4649929510f729c9cf1e67 yad-0.33.1.tar.xz diff --git a/buildroot/package/yad/yad.mk b/buildroot/package/yad/yad.mk new file mode 100644 index 0000000..d674316 --- /dev/null +++ b/buildroot/package/yad/yad.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# yad +# +################################################################################ + +YAD_VERSION = 0.33.1 +YAD_SOURCE = yad-$(YAD_VERSION).tar.xz +YAD_SITE = http://sourceforge.net/projects/yad-dialog/files +YAD_LICENSE = GPL-3.0 +YAD_LICENSE_FILES = COPYING +YAD_DEPENDENCIES = host-intltool host-pkgconf +YAD_CONF_OPTS = --enable-html=no + +ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) +YAD_DEPENDENCIES += libgtk3 +YAD_CONF_OPTS += --with-gtk=gtk3 +else +YAD_DEPENDENCIES += libgtk2 +YAD_CONF_OPTS += --with-gtk=gtk2 +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/yaffs2utils/yaffs2utils.hash b/buildroot/package/yaffs2utils/yaffs2utils.hash new file mode 100644 index 0000000..4e5846e --- /dev/null +++ b/buildroot/package/yaffs2utils/yaffs2utils.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 9b0912bf683eb839b6e57c9255c83894c3b700d16489a49d319c54c1abf8f6d7 0.2.9.tar.gz diff --git a/buildroot/package/yaffs2utils/yaffs2utils.mk b/buildroot/package/yaffs2utils/yaffs2utils.mk new file mode 100644 index 0000000..c2a87ea --- /dev/null +++ b/buildroot/package/yaffs2utils/yaffs2utils.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# yaffs2utils +# +################################################################################ + +YAFFS2UTILS_VERSION = 0.2.9 +YAFFS2UTILS_SOURCE = $(YAFFS2UTILS_VERSION).tar.gz +YAFFS2UTILS_SITE = https://yaffs2utils.googlecode.com/files +YAFFS2UTILS_LICENSE = GPL-2.0 +YAFFS2UTILS_LICENSE_FILES = COPYING + +define HOST_YAFFS2UTILS_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define HOST_YAFFS2UTILS_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) INSTALLDIR=$(HOST_DIR)/bin install +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/yajl/0001-Let-the-shared-and-the-static-library-have-the-same-.patch b/buildroot/package/yajl/0001-Let-the-shared-and-the-static-library-have-the-same-.patch new file mode 100644 index 0000000..0023a1d --- /dev/null +++ b/buildroot/package/yajl/0001-Let-the-shared-and-the-static-library-have-the-same-.patch @@ -0,0 +1,34 @@ +From b08fe001e3d3f3564ef298e62342f07080807f7a Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Wed, 28 Oct 2015 15:45:10 +0000 +Subject: [PATCH] Let the shared and the static library have the same name +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The will be differentiated by the extension (.so or .a). + +Fetched from: +https://github.com/vriera/yajl/commit/6d09f11b8fd358cab0e31b965327e64a599f9ce9 + +Signed-off-by: Vicente Olivert Riera +Signed-off-by: Jörg Krause +--- + src/CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 99cf9e9..1a900d3 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -36,6 +36,7 @@ SET (shareDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/share/pkgconfig) + SET(LIBRARY_OUTPUT_PATH ${libDir}) + + ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS}) ++SET_TARGET_PROPERTIES(yajl_s PROPERTIES OUTPUT_NAME yajl) + + ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS}) + +-- +2.8.0 + diff --git a/buildroot/package/yajl/0002-cmake-disable-shared-library-build-when-BUILD_SHARED.patch b/buildroot/package/yajl/0002-cmake-disable-shared-library-build-when-BUILD_SHARED.patch new file mode 100644 index 0000000..53decca --- /dev/null +++ b/buildroot/package/yajl/0002-cmake-disable-shared-library-build-when-BUILD_SHARED.patch @@ -0,0 +1,49 @@ +From b3cddf92adacfe5ca40574afb3e323cc7cdebc5c Mon Sep 17 00:00:00 2001 +From: Maxime Hadjinlian +Date: Tue, 2 Feb 2016 15:46:09 +0100 +Subject: [PATCH] cmake: Add shared library conditonnal build + +When BUILD_SHARED_LIBS is off, you don't want to build the shared +library. + +Signed-off-by: Samuel Martin +--- + src/CMakeLists.txt | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 99cf9e9..9e9c77d 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -37,6 +37,7 @@ SET(LIBRARY_OUTPUT_PATH ${libDir}) + + ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS}) + ++IF(BUILD_SHARED_LIBS) + ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS}) + + #### setup shared library version number +@@ -51,6 +52,7 @@ IF(APPLE) + SET_TARGET_PROPERTIES(yajl PROPERTIES + INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib") + ENDIF(APPLE) ++ENDIF(BUILD_SHARED_LIBS) + + #### build up an sdk as a post build step + +@@ -77,10 +79,12 @@ INCLUDE_DIRECTORIES(${incDir}/..) + + # at build time you may specify the cmake variable LIB_SUFFIX to handle + # 64-bit systems which use 'lib64' ++IF(BUILD_SHARED_LIBS) + INSTALL(TARGETS yajl + RUNTIME DESTINATION lib${LIB_SUFFIX} + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX}) ++ENDIF(BUILD_SHARED_LIBS) + INSTALL(TARGETS yajl_s ARCHIVE DESTINATION lib${LIB_SUFFIX}) + INSTALL(FILES ${PUB_HDRS} DESTINATION include/yajl) + INSTALL(FILES ${incDir}/yajl_version.h DESTINATION include/yajl) +-- +2.7.0 + diff --git a/buildroot/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch b/buildroot/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch new file mode 100644 index 0000000..d3c91f2 --- /dev/null +++ b/buildroot/package/yajl/0003-Link-with-shared-libyajl-in-a-shared-build.patch @@ -0,0 +1,127 @@ +From 425b25993ef58d07aa18c5d4938876a90e22c47a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Sat, 9 Apr 2016 23:24:27 +0200 +Subject: [PATCH] Link with shared libyajl in a shared build +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Building yajl in a static context fails in a parallel build: + +[ 21%] Linking C executable gen-extra-close +[ 26%] Building C object src/CMakeFiles/yajl_s.dir/yajl_buf.c.o +/home/test/autobuild/instance-3/output/host/opt/ext-toolchain/bfin-uclinux/bfin-uclinux/bin/ld.real: cannot find -lyajl + +Fix this issue by linking against the shared libyail in a shared build. Apply +this fix also to all other build targets who are linking against the library. + +Upstream status: Pending +https://github.com/lloyd/yajl/pull/187 + +[Update: align with commit 302563539dacb284576a443401cdfd061eb2e1e8 and remove + linking with libm from test/api/CMakeLists.txt] +Signed-off-by: Jörg Krause +--- + example/CMakeLists.txt | 7 ++++++- + perf/CMakeLists.txt | 6 +++++- + reformatter/CMakeLists.txt | 6 +++++- + test/api/CMakeLists.txt | 6 +++++- + test/parsing/CMakeLists.txt | 6 +++++- + verify/CMakeLists.txt | 6 +++++- + 6 files changed, 31 insertions(+), 6 deletions(-) + +diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt +index 0a7f622..8cfcef8 100644 +--- a/example/CMakeLists.txt ++++ b/example/CMakeLists.txt +@@ -20,4 +20,9 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) + + ADD_EXECUTABLE(parse_config ${SRCS}) + +-TARGET_LINK_LIBRARIES(parse_config yajl_s) ++IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(parse_config yajl) ++ELSE() ++ TARGET_LINK_LIBRARIES(parse_config yajl_s) ++ENDIF() ++ +diff --git a/perf/CMakeLists.txt b/perf/CMakeLists.txt +index b438d7a..40ba363 100644 +--- a/perf/CMakeLists.txt ++++ b/perf/CMakeLists.txt +@@ -20,4 +20,8 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) + + ADD_EXECUTABLE(perftest ${SRCS}) + +-TARGET_LINK_LIBRARIES(perftest yajl_s) ++IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(perftest yajl) ++ELSE() ++ TARGET_LINK_LIBRARIES(perftest yajl_s) ++ENDIF() +diff --git a/reformatter/CMakeLists.txt b/reformatter/CMakeLists.txt +index 52a9bee..7629094 100644 +--- a/reformatter/CMakeLists.txt ++++ b/reformatter/CMakeLists.txt +@@ -26,7 +26,11 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) + + ADD_EXECUTABLE(json_reformat ${SRCS}) + +-TARGET_LINK_LIBRARIES(json_reformat yajl_s) ++IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(json_reformat yajl) ++ELSE() ++ TARGET_LINK_LIBRARIES(json_reformat yajl_s) ++ENDIF() + + # In some environments, we must explicitly link libm (like qnx, + # thanks @shahbag) +diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt +index cd65a54..0c9debf 100644 +--- a/test/api/CMakeLists.txt ++++ b/test/api/CMakeLists.txt +@@ -21,5 +21,9 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/lib) + FOREACH (test ${TESTS}) + GET_FILENAME_COMPONENT(testProg ${test} NAME_WE) + ADD_EXECUTABLE(${testProg} ${test}) +- TARGET_LINK_LIBRARIES(${testProg} yajl) ++ IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(${testProg} yajl) ++ ELSE() ++ TARGET_LINK_LIBRARIES(${testProg} yajl_s) ++ ENDIF() + ENDFOREACH() +diff --git a/test/parsing/CMakeLists.txt b/test/parsing/CMakeLists.txt +index c22a388..285f048 100644 +--- a/test/parsing/CMakeLists.txt ++++ b/test/parsing/CMakeLists.txt +@@ -20,4 +20,8 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../../${YAJL_DIST_NAME}/lib) + + ADD_EXECUTABLE(yajl_test ${SRCS}) + +-TARGET_LINK_LIBRARIES(yajl_test yajl_s) ++IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(yajl_test yajl) ++ELSE() ++ TARGET_LINK_LIBRARIES(yajl_test yajl_s) ++ENDIF() +diff --git a/verify/CMakeLists.txt b/verify/CMakeLists.txt +index 967fca1..06cb2dc 100644 +--- a/verify/CMakeLists.txt ++++ b/verify/CMakeLists.txt +@@ -26,7 +26,11 @@ LINK_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib) + + ADD_EXECUTABLE(json_verify ${SRCS}) + +-TARGET_LINK_LIBRARIES(json_verify yajl_s) ++IF(BUILD_SHARED_LIBS) ++ TARGET_LINK_LIBRARIES(json_verify yajl) ++ELSE() ++ TARGET_LINK_LIBRARIES(json_verify yajl_s) ++ENDIF() + + # copy in the binary + GET_TARGET_PROPERTY(binPath json_verify LOCATION) +-- +2.8.0 + diff --git a/buildroot/package/yajl/0004-Link-libyajl-_s-with-libm-when-isnan-is-not-brought-.patch b/buildroot/package/yajl/0004-Link-libyajl-_s-with-libm-when-isnan-is-not-brought-.patch new file mode 100644 index 0000000..71cf295 --- /dev/null +++ b/buildroot/package/yajl/0004-Link-libyajl-_s-with-libm-when-isnan-is-not-brought-.patch @@ -0,0 +1,64 @@ +From b47f6a50925efb8c8707b1faed5561a4b66ffdb1 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 24 Apr 2016 18:45:27 +0200 +Subject: [PATCH] Link libyajl{,_s} with libm when isnan is not brought by the + libc + +Check whether isnan is provided by the libc library, otherwise make sure +yajl libraries are link against libm. + +Note that setting libm as PUBLIC link libraries enable the transitivity +[1, 2]; therefore it will be automatically passed to target linking +against libyajl{,_s}. + +This patch also makes sure the link libraries will appear in the yajl.pc +file. + +[1] https://cmake.org/cmake/help/v3.5/command/target_link_libraries.html +[2] https://cmake.org/cmake/help/v3.5/manual/cmake-buildsystem.7.html#target-usage-requirements + +Signed-off-by: Samuel Martin +--- + src/CMakeLists.txt | 10 ++++++++++ + src/yajl.pc.cmake | 2 +- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index b487bfd..a88698f 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -35,11 +35,21 @@ SET (shareDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/share/pkgconfig) + # set the output path for libraries + SET(LIBRARY_OUTPUT_PATH ${libDir}) + ++SET(yajl_lib_link) ++INCLUDE(CheckLibraryExists) ++CHECK_LIBRARY_EXISTS(c isnan "" HAVE_LIBC_ISNAN) ++ ++IF(NOT HAVE_LIBC_ISNAN) ++ LIST(APPEND yajl_lib_link "-lm") ++ENDIF(NOT HAVE_LIBC_ISNAN) ++ + ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS}) + SET_TARGET_PROPERTIES(yajl_s PROPERTIES OUTPUT_NAME yajl) ++TARGET_LINK_LIBRARIES(yajl_s PUBLIC ${yajl_lib_link}) + + IF(BUILD_SHARED_LIBS) + ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS}) ++TARGET_LINK_LIBRARIES(yajl PUBLIC ${yajl_lib_link}) + + #### setup shared library version number + SET_TARGET_PROPERTIES(yajl PROPERTIES +diff --git a/src/yajl.pc.cmake b/src/yajl.pc.cmake +index 6eaca14..4681dd4 100644 +--- a/src/yajl.pc.cmake ++++ b/src/yajl.pc.cmake +@@ -6,4 +6,4 @@ Name: Yet Another JSON Library + Description: A Portable JSON parsing and serialization library in ANSI C + Version: ${YAJL_MAJOR}.${YAJL_MINOR}.${YAJL_MICRO} + Cflags: -I${dollar}{includedir} +-Libs: -L${dollar}{libdir} -lyajl ++Libs: -L${dollar}{libdir} -lyajl ${yajl_lib_link} +-- +2.8.0 + diff --git a/buildroot/package/yajl/Config.in b/buildroot/package/yajl/Config.in new file mode 100644 index 0000000..be2c133 --- /dev/null +++ b/buildroot/package/yajl/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_YAJL + bool "yajl" + help + Yet Another JSON Library. YAJL is a small event-driven + (SAX-style) JSON parser written in ANSI C, and a small + validating JSON generator. + + http://lloyd.github.com/yajl/ diff --git a/buildroot/package/yajl/yajl.hash b/buildroot/package/yajl/yajl.hash new file mode 100644 index 0000000..ed4a050 --- /dev/null +++ b/buildroot/package/yajl/yajl.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 3fb73364a5a30efe615046d07e6db9d09fd2b41c763c5f7d3bfb121cd5c5ac5a yajl-2.1.0.tar.gz diff --git a/buildroot/package/yajl/yajl.mk b/buildroot/package/yajl/yajl.mk new file mode 100644 index 0000000..1fb16f5 --- /dev/null +++ b/buildroot/package/yajl/yajl.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# yajl +# +################################################################################ + +YAJL_VERSION = 2.1.0 +YAJL_SITE = $(call github,lloyd,yajl,$(YAJL_VERSION)) +YAJL_INSTALL_STAGING = YES +YAJL_LICENSE = ISC +YAJL_LICENSE_FILES = COPYING + +$(eval $(cmake-package)) diff --git a/buildroot/package/yaml-cpp/Config.in b/buildroot/package/yaml-cpp/Config.in new file mode 100644 index 0000000..6d34f42 --- /dev/null +++ b/buildroot/package/yaml-cpp/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_YAML_CPP + bool "yaml-cpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR # boost + select BR2_PACKAGE_BOOST + help + yaml-cpp is a YAML parser and emitter in C++ matching + the YAML 1.2 spec. + + https://github.com/jbeder/yaml-cpp + +comment "yaml-cpp needs a toolchain w/ C++, threads, wchar" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/yaml-cpp/yaml-cpp.hash b/buildroot/package/yaml-cpp/yaml-cpp.hash new file mode 100644 index 0000000..7d67537 --- /dev/null +++ b/buildroot/package/yaml-cpp/yaml-cpp.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 6fb92f6f5925e0af918ffbb90acf19b7b88706ebcd40fc186b7caa76609b6350 yaml-cpp-0.5.2.tar.gz diff --git a/buildroot/package/yaml-cpp/yaml-cpp.mk b/buildroot/package/yaml-cpp/yaml-cpp.mk new file mode 100644 index 0000000..6a01b02 --- /dev/null +++ b/buildroot/package/yaml-cpp/yaml-cpp.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# yaml-cpp +# +################################################################################ + +YAML_CPP_VERSION = 0.5.2 +YAML_CPP_SITE = $(call github,jbeder,yaml-cpp,release-$(YAML_CPP_VERSION)) +YAML_CPP_INSTALL_STAGING = YES +YAML_CPP_LICENSE = MIT +YAML_CPP_LICENSE_FILES = license.txt + +YAML_CPP_DEPENDENCIES = boost + +# Disable testing and parse tools +YAML_CPP_CONF_OPTS += -DYAML_CPP_BUILD_TOOLS=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/yasm/Config.in b/buildroot/package/yasm/Config.in new file mode 100644 index 0000000..2dc25aa --- /dev/null +++ b/buildroot/package/yasm/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_YASM + bool "yasm" + depends on BR2_i386 || BR2_x86_64 + help + Yasm is a complete rewrite of the NASM-2.10.01 assembler. + It supports the x86 and AMD64 instruction sets, accepts NASM + and GAS assembler syntaxes and outputs binary, ELF32 and ELF64 + object formats. + + http://www.tortall.net/projects/yasm/ diff --git a/buildroot/package/yasm/yasm.hash b/buildroot/package/yasm/yasm.hash new file mode 100644 index 0000000..016c15b --- /dev/null +++ b/buildroot/package/yasm/yasm.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f yasm-1.3.0.tar.gz diff --git a/buildroot/package/yasm/yasm.mk b/buildroot/package/yasm/yasm.mk new file mode 100644 index 0000000..b294bd3 --- /dev/null +++ b/buildroot/package/yasm/yasm.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# yasm +# +################################################################################ + +YASM_VERSION = 1.3.0 +YASM_SITE = http://www.tortall.net/projects/yasm/releases +YASM_LICENSE = BSD-2-Clause, BSD-3-Clause, Artistic, GPL-2.0, LGPL-2.0 +YASM_LICENSE_FILES = COPYING BSD.txt Artistic.txt GNU_GPL-2.0 GNU_LGPL-2.0 + +# This sed prevents it compiling 2 programs (vsyasm and ytasm) +# that are only of use on Microsoft Windows. +define YASM_PRE_CONFIGURE_FIXUP + $(SED) 's#) ytasm.*#)#' $(@D)/Makefile.in +endef + +YASM_PRE_CONFIGURE_HOOKS += YASM_PRE_CONFIGURE_FIXUP +HOST_YASM_PRE_CONFIGURE_HOOKS += YASM_PRE_CONFIGURE_FIXUP + +$(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/yavta/Config.in b/buildroot/package/yavta/Config.in new file mode 100644 index 0000000..6a42a94 --- /dev/null +++ b/buildroot/package/yavta/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_YAVTA + bool "yavta" + help + Yet Another V4L2 Test Application + + http://git.ideasonboard.org/yavta.git diff --git a/buildroot/package/yavta/yavta.mk b/buildroot/package/yavta/yavta.mk new file mode 100644 index 0000000..4e3d76e --- /dev/null +++ b/buildroot/package/yavta/yavta.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# yavta +# +################################################################################ + +YAVTA_VERSION = 82ff2efdb9787737b9f21b6f4759f077c827b238 +YAVTA_SITE = git://git.ideasonboard.org/yavta.git +YAVTA_LICENSE = GPL-2.0+ +YAVTA_LICENSE_FILES = COPYING.GPL + +define YAVTA_BUILD_CMDS + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define YAVTA_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -D $(@D)/yavta $(TARGET_DIR)/usr/bin/yavta +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ympd/0002-only-c-language.patch b/buildroot/package/ympd/0002-only-c-language.patch new file mode 100644 index 0000000..df5734c --- /dev/null +++ b/buildroot/package/ympd/0002-only-c-language.patch @@ -0,0 +1,21 @@ +ympd is implemented only in C + +By default, CMake assumes that the project is using both C and C++. By +explicitly passing 'C' as argument of the project() macro, we tell +CMake that only C is used, which prevents CMake from checking if a C++ +compiler exists. + +Signed-off-by: Thomas Petazzoni + +Index: b/CMakeLists.txt +=================================================================== +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,6 @@ + cmake_minimum_required(VERSION 2.6) + +-project (ympd) ++project (ympd C) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/") + set(CPACK_PACKAGE_VERSION_MAJOR "1") + set(CPACK_PACKAGE_VERSION_MINOR "2") diff --git a/buildroot/package/ympd/Config.in b/buildroot/package/ympd/Config.in new file mode 100644 index 0000000..39b3a86 --- /dev/null +++ b/buildroot/package/ympd/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_YMPD + bool "ympd" + depends on BR2_USE_MMU # fork() + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBMPDCLIENT + help + ympd, a standalone MPD Web GUI written in C, utilizing + Websockets and Bootstrap/JS + +comment "ympd needs a toolchain w/ threads, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/ympd/ympd.hash b/buildroot/package/ympd/ympd.hash new file mode 100644 index 0000000..7483083 --- /dev/null +++ b/buildroot/package/ympd/ympd.hash @@ -0,0 +1,2 @@ +# locally computed +sha256 092c26c51166d1d1f025cd06742981783dea7e42bfe4f73f10c4418fc003de94 ympd-v1.2.3.tar.gz diff --git a/buildroot/package/ympd/ympd.mk b/buildroot/package/ympd/ympd.mk new file mode 100644 index 0000000..a50aee0 --- /dev/null +++ b/buildroot/package/ympd/ympd.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# ympd +# +################################################################################ + +YMPD_VERSION = v1.2.3 +YMPD_SITE = $(call github,notandy,ympd,$(YMPD_VERSION)) +YMPD_LICENSE = GPL-2.0 +YMPD_LICENSE_FILES = LICENSE +YMPD_DEPENDENCIES = libmpdclient + +define YMPD_MAKE_HOST_TOOL + $(HOSTCC) $(HOST_CFLAGS) $(@D)/htdocs/mkdata.c -o $(@D)/mkdata +endef + +YMPD_PRE_BUILD_HOOKS += YMPD_MAKE_HOST_TOOL + +YMPD_CONF_OPTS += -DMKDATA_EXE=$(@D)/mkdata + +$(eval $(cmake-package)) diff --git a/buildroot/package/zbar/0001-Fix-autoreconf-by-reducing-the-warning-error-checkin.patch b/buildroot/package/zbar/0001-Fix-autoreconf-by-reducing-the-warning-error-checkin.patch new file mode 100644 index 0000000..57fbeb1 --- /dev/null +++ b/buildroot/package/zbar/0001-Fix-autoreconf-by-reducing-the-warning-error-checkin.patch @@ -0,0 +1,26 @@ +From e593d6529cff515d94d80a24b5f3a953fd46004c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 19 Dec 2015 18:56:36 +0100 +Subject: [PATCH] Fix autoreconf by reducing the warning/error checking + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 256aedb..e0b6046 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -3,7 +3,7 @@ AC_PREREQ([2.61]) + AC_INIT([zbar], [0.10], [spadix@users.sourceforge.net]) + AC_CONFIG_AUX_DIR(config) + AC_CONFIG_MACRO_DIR(config) +-AM_INIT_AUTOMAKE([1.10 -Wall -Werror foreign subdir-objects std-options dist-bzip2]) ++AM_INIT_AUTOMAKE([1.10 foreign subdir-objects std-options dist-bzip2]) + AC_CONFIG_HEADERS([include/config.h]) + AC_CONFIG_SRCDIR(zbar/scanner.c) + LT_PREREQ([2.2]) +-- +2.6.4 + diff --git a/buildroot/package/zbar/0002-Fix-function-protoype-to-be-compatible-with-recent-l.patch b/buildroot/package/zbar/0002-Fix-function-protoype-to-be-compatible-with-recent-l.patch new file mode 100644 index 0000000..82dd4e9 --- /dev/null +++ b/buildroot/package/zbar/0002-Fix-function-protoype-to-be-compatible-with-recent-l.patch @@ -0,0 +1,27 @@ +From 5dc8322b4f9a3de29b3da70b69e16356a2a1764c Mon Sep 17 00:00:00 2001 +From: Viacheslav Volkov +Date: Sat, 19 Dec 2015 19:07:09 +0100 +Subject: [PATCH] Fix function protoype to be compatible with recent libjpeg + +Signed-off-by: Viacheslav Volkov +Signed-off-by: Thomas Petazzoni +--- + zbar/jpeg.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/zbar/jpeg.c b/zbar/jpeg.c +index 972bfea..fdd1619 100644 +--- a/zbar/jpeg.c ++++ b/zbar/jpeg.c +@@ -68,7 +68,7 @@ void init_source (j_decompress_ptr cinfo) + cinfo->src->bytes_in_buffer = img->datalen; + } + +-int fill_input_buffer (j_decompress_ptr cinfo) ++boolean fill_input_buffer (j_decompress_ptr cinfo) + { + /* buffer underrun error case */ + cinfo->src->next_input_byte = fake_eoi; +-- +2.6.4 + diff --git a/buildroot/package/zbar/0003-Disable-building-documentation.patch b/buildroot/package/zbar/0003-Disable-building-documentation.patch new file mode 100644 index 0000000..729f926 --- /dev/null +++ b/buildroot/package/zbar/0003-Disable-building-documentation.patch @@ -0,0 +1,27 @@ +From 58027d5bb0492142a5b72ded772d3a1be9fa8d87 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 20 Dec 2015 12:05:57 +0100 +Subject: [PATCH] Disable building documentation + +The documentation requires xmlto, and we don't need it in Buildroot. + +Signed-off-by: Thomas Petazzoni +--- + Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index e18499a..db4411f 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -45,7 +45,6 @@ if HAVE_NPAPI + include $(srcdir)/plugin/Makefile.am.inc + endif + include $(srcdir)/test/Makefile.am.inc +-include $(srcdir)/doc/Makefile.am.inc + + EXTRA_DIST += zbar.ico zbar.nsi + +-- +2.6.4 + diff --git a/buildroot/package/zbar/0004-Wrap-logical-not-operations-into-parentheses.patch b/buildroot/package/zbar/0004-Wrap-logical-not-operations-into-parentheses.patch new file mode 100644 index 0000000..6d39b1b --- /dev/null +++ b/buildroot/package/zbar/0004-Wrap-logical-not-operations-into-parentheses.patch @@ -0,0 +1,80 @@ +From 7e69cdc8dfdf07701ba551985ee49d48e64d730f Mon Sep 17 00:00:00 2001 +From: Vicente Olivert Riera +Date: Mon, 25 Jan 2016 11:58:59 +0000 +Subject: [PATCH] Wrap logical not operations into parentheses + +Otherwise it fails like this: + +zbar/decoder/ean.c: In function 'ean_part_end4': +zbar/decoder/ean.c:297:13: error: logical not is only applied to the +left hand side of comparison [-Werror=logical-not-parentheses] + if(!par == fwd) { + +This patch has been sent upstream as a pull request: + + https://github.com/ZBar/ZBar/pull/9 + +Signed-off-by: Vicente Olivert Riera +--- + zbar/decoder/ean.c | 4 ++-- + zbar/qrcode/qrdec.c | 8 ++++---- + 2 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/zbar/decoder/ean.c b/zbar/decoder/ean.c +index c20f538..41d1493 100644 +--- a/zbar/decoder/ean.c ++++ b/zbar/decoder/ean.c +@@ -294,7 +294,7 @@ static inline zbar_symbol_type_t ean_part_end4 (ean_pass_t *pass, + /* invalid parity combination */ + return(ZBAR_NONE); + +- if(!par == fwd) { ++ if((!par) == fwd) { + /* reverse sampled digits */ + unsigned char tmp = pass->raw[1]; + pass->state |= STATE_REV; +@@ -380,7 +380,7 @@ static inline zbar_symbol_type_t ean_part_end7 (ean_decoder_t *ean, + /* invalid parity combination */ + return(ZBAR_NONE); + +- if(!par == fwd) { ++ if((!par) == fwd) { + unsigned char i; + pass->state |= STATE_REV; + /* reverse sampled digits */ +diff --git a/zbar/qrcode/qrdec.c b/zbar/qrcode/qrdec.c +index d8fa802..5d3d265 100644 +--- a/zbar/qrcode/qrdec.c ++++ b/zbar/qrcode/qrdec.c +@@ -1219,8 +1219,8 @@ static int qr_finder_quick_crossing_check(const unsigned char *_img, + _x1<0||_x1>=_width||_y1<0||_y1>=_height){ + return -1; + } +- if(!_img[_y0*_width+_x0]!=_v||!_img[_y1*_width+_x1]!=_v)return 1; +- if(!_img[(_y0+_y1>>1)*_width+(_x0+_x1>>1)]==_v)return -1; ++ if((!_img[_y0*_width+_x0])!=_v||(!_img[_y1*_width+_x1])!=_v)return 1; ++ if((!_img[(_y0+_y1>>1)*_width+(_x0+_x1>>1)])==_v)return -1; + return 0; + } + +@@ -1261,7 +1261,7 @@ static int qr_finder_locate_crossing(const unsigned char *_img, + x0[1-steep]+=step[1-steep]; + err-=dx[steep]; + } +- if(!_img[x0[1]*_width+x0[0]]!=_v)break; ++ if((!_img[x0[1]*_width+x0[0]])!=_v)break; + } + /*Find the last crossing from _v to !_v.*/ + err=0; +@@ -1273,7 +1273,7 @@ static int qr_finder_locate_crossing(const unsigned char *_img, + x1[1-steep]-=step[1-steep]; + err-=dx[steep]; + } +- if(!_img[x1[1]*_width+x1[0]]!=_v)break; ++ if((!_img[x1[1]*_width+x1[0]])!=_v)break; + } + /*Return the midpoint of the _v segment.*/ + _p[0]=(x0[0]+x1[0]+1<>1; +-- +2.4.10 + diff --git a/buildroot/package/zbar/Config.in b/buildroot/package/zbar/Config.in new file mode 100644 index 0000000..05c9b76 --- /dev/null +++ b/buildroot/package/zbar/Config.in @@ -0,0 +1,17 @@ +config BR2_PACKAGE_ZBAR + bool "zbar" + depends on BR2_TOOLCHAIN_HAS_THREADS # libv4l + depends on BR2_USE_MMU # libv4l + depends on BR2_INSTALL_LIBSTDCPP # libv4l + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 # libv4l + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBV4L + help + QR and barcode scanner + + http://zbar.sourceforge.net/ + +comment "zbar needs a toolchain w/ threads, C++ and headers >= 3.0" + depends on BR2_USE_MMU + depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 diff --git a/buildroot/package/zbar/zbar.hash b/buildroot/package/zbar/zbar.hash new file mode 100644 index 0000000..54441a8 --- /dev/null +++ b/buildroot/package/zbar/zbar.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 38f8535a3c4c526ecaa968a992efcbf7392623e68db45dc2f181d4c9d3002d69 zbar-854a5d97059e395807091ac4d80c53f7968abb8f.tar.gz diff --git a/buildroot/package/zbar/zbar.mk b/buildroot/package/zbar/zbar.mk new file mode 100644 index 0000000..c8fc899 --- /dev/null +++ b/buildroot/package/zbar/zbar.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# zbar +# +################################################################################ + +# github have some additional commits for compiling with recent kernel +ZBAR_VERSION = 854a5d97059e395807091ac4d80c53f7968abb8f +ZBAR_SITE = $(call github,ZBar,Zbar,$(ZBAR_VERSION)) +ZBAR_LICENSE = LGPL-2.1+ +ZBAR_LICENSE_FILES = LICENSE +ZBAR_INSTALL_STAGING = YES +ZBAR_AUTORECONF = YES +ZBAR_DEPENDENCIES = libv4l jpeg +# add host-gettext for AM_ICONV macro +ZBAR_DEPENDENCIES += host-gettext +ZBAR_CONF_OPTS = \ + --without-imagemagick \ + --without-qt \ + --without-gtk \ + --without-python \ + --without-x + +$(eval $(autotools-package)) diff --git a/buildroot/package/zd1211-firmware/Config.in b/buildroot/package/zd1211-firmware/Config.in new file mode 100644 index 0000000..4469533 --- /dev/null +++ b/buildroot/package/zd1211-firmware/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_ZD1211_FIRMWARE + bool "zd1211-firmware" + help + Firmware for the ZyDAS ZD1211 / Atheros AR5007UG wifi devices. diff --git a/buildroot/package/zd1211-firmware/zd1211-firmware.hash b/buildroot/package/zd1211-firmware/zd1211-firmware.hash new file mode 100644 index 0000000..d26858b --- /dev/null +++ b/buildroot/package/zd1211-firmware/zd1211-firmware.hash @@ -0,0 +1,2 @@ +# Locally computed: +sha256 866308f6f59f7075f075d4959dff2ede47735c751251fecd1496df1ba4d338e1 zd1211-firmware-1.4.tar.bz2 diff --git a/buildroot/package/zd1211-firmware/zd1211-firmware.mk b/buildroot/package/zd1211-firmware/zd1211-firmware.mk new file mode 100644 index 0000000..860aa76 --- /dev/null +++ b/buildroot/package/zd1211-firmware/zd1211-firmware.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# zd1211-firmware +# +################################################################################ + +ZD1211_FIRMWARE_VERSION = 1.4 +ZD1211_FIRMWARE_SITE = http://downloads.sourceforge.net/project/zd1211/zd1211-firmware/$(ZD1211_FIRMWARE_VERSION) +ZD1211_FIRMWARE_SOURCE = zd1211-firmware-$(ZD1211_FIRMWARE_VERSION).tar.bz2 +ZD1211_FIRMWARE_LICENSE = GPL-2.0 +ZD1211_FIRMWARE_LICENSE_FILES = COPYING + +# Not all of the firmware files are used +define ZD1211_FIRMWARE_INSTALL_TARGET_CMDS + $(INSTALL) -d -m 0755 $(TARGET_DIR)/lib/firmware/zd1211/ + cp -dpf $(@D)/zd1211*{ub,uphr,ur} $(TARGET_DIR)/lib/firmware/zd1211 +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/zeromq/0001-acinclude.m4-make-kernel-specific-flags-cacheable.patch b/buildroot/package/zeromq/0001-acinclude.m4-make-kernel-specific-flags-cacheable.patch new file mode 100644 index 0000000..ff225d3 --- /dev/null +++ b/buildroot/package/zeromq/0001-acinclude.m4-make-kernel-specific-flags-cacheable.patch @@ -0,0 +1,199 @@ +commit 9daf6dd7c4947ce74ca729de5c3cfe8cbc304702 +Author: Lionel Orry +Date: Fri Feb 6 15:11:07 2015 +0100 + + acinclude.m4: make kernel-specific flags cacheable + + Specifically when cross-compiling, one can be willing to force these + variable values using the environment of a config.cache file. This + commit makes this possible. + + The affected variables are: + + * libzmq_cv_sock_cloexec + * libzmq_cv_so_keepalive + * libzmq_cv_tcp_keepcnt + * libzmq_cv_tcp_keepidle + * libzmq_cv_tcp_keepintvl + * libzmq_cv_tcp_keepalive + + Signed-off-by: Lionel Orry + +diff --git a/acinclude.m4 b/acinclude.m4 +index 4bbd19e..456740d 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -586,8 +586,8 @@ dnl # LIBZMQ_CHECK_SOCK_CLOEXEC([action-if-found], [action-if-not-found]) + dnl # Check if SOCK_CLOEXEC is supported # + dnl ################################################################################ + AC_DEFUN([LIBZMQ_CHECK_SOCK_CLOEXEC], [{ +- AC_MSG_CHECKING(whether SOCK_CLOEXEC is supported) +- AC_TRY_RUN([/* SOCK_CLOEXEC test */ ++ AC_CACHE_CHECK([whether SOCK_CLOEXEC is supported], [libzmq_cv_sock_cloexec], ++ [AC_TRY_RUN([/* SOCK_CLOEXEC test */ + #include + #include + +@@ -596,11 +596,13 @@ int main (int argc, char *argv []) + int s = socket (PF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0); + return (s == -1); + } +- ], +- [AC_MSG_RESULT(yes) ; libzmq_cv_sock_cloexec="yes" ; $1], +- [AC_MSG_RESULT(no) ; libzmq_cv_sock_cloexec="no" ; $2], +- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_sock_cloexec="no"] ++ ], ++ [libzmq_cv_sock_cloexec="yes"], ++ [libzmq_cv_sock_cloexec="no"], ++ [libzmq_cv_sock_cloexec="not during cross-compile"] ++ )] + ) ++ AS_IF([test "x$libzmq_cv_sock_cloexec" = "xyes"], [$1], [$2]) + }]) + + dnl ################################################################################ +@@ -628,8 +630,8 @@ dnl # LIBZMQ_CHECK_SO_KEEPALIVE([action-if-found], [action-if-not-found]) + dnl # Check if SO_KEEPALIVE is supported # + dnl ################################################################################ + AC_DEFUN([LIBZMQ_CHECK_SO_KEEPALIVE], [{ +- AC_MSG_CHECKING(whether SO_KEEPALIVE is supported) +- AC_TRY_RUN([/* SO_KEEPALIVE test */ ++ AC_CACHE_CHECK([whether SO_KEEPALIVE is supported], [libzmq_cv_so_keepalive], ++ [AC_TRY_RUN([/* SO_KEEPALIVE test */ + #include + #include + +@@ -641,11 +643,13 @@ int main (int argc, char *argv []) + ((rc = setsockopt (s, SOL_SOCKET, SO_KEEPALIVE, (char*) &opt, sizeof (int))) == -1) + ); + } +- ], +- [AC_MSG_RESULT(yes) ; libzmq_cv_so_keepalive="yes" ; $1], +- [AC_MSG_RESULT(no) ; libzmq_cv_so_keepalive="no" ; $2], +- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_so_keepalive="no"] ++ ], ++ [libzmq_cv_so_keepalive="yes"], ++ [libzmq_cv_so_keepalive="no"], ++ [libzmq_cv_so_keepalive="not during cross-compile"] ++ )] + ) ++ AS_IF([test "x$libzmq_cv_so_keepalive" = "xyes"], [$1], [$2]) + }]) + + dnl ################################################################################ +@@ -653,8 +657,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPCNT([action-if-found], [action-if-not-found]) + dnl # Check if TCP_KEEPCNT is supported # + dnl ################################################################################ + AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPCNT], [{ +- AC_MSG_CHECKING(whether TCP_KEEPCNT is supported) +- AC_TRY_RUN([/* TCP_KEEPCNT test */ ++ AC_CACHE_CHECK([whether TCP_KEEPCNT is supported], [libzmq_cv_tcp_keepcnt], ++ [AC_TRY_RUN([/* TCP_KEEPCNT test */ + #include + #include + #include +@@ -669,11 +673,13 @@ int main (int argc, char *argv []) + ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPCNT, (char*) &opt, sizeof (int))) == -1) + ); + } +- ], +- [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepcnt="yes" ; $1], +- [AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepcnt="no" ; $2], +- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepcnt="no"] ++ ], ++ [libzmq_cv_tcp_keepcnt="yes"], ++ [libzmq_cv_tcp_keepcnt="no"], ++ [libzmq_cv_tcp_keepcnt="not during cross-compile"] ++ )] + ) ++ AS_IF([test "x$libzmq_cv_tcp_keepcnt" = "xyes"], [$1], [$2]) + }]) + + dnl ################################################################################ +@@ -681,8 +687,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPIDLE([action-if-found], [action-if-not-found]) + dnl # Check if TCP_KEEPIDLE is supported # + dnl ################################################################################ + AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPIDLE], [{ +- AC_MSG_CHECKING(whether TCP_KEEPIDLE is supported) +- AC_TRY_RUN([/* TCP_KEEPIDLE test */ ++ AC_CACHE_CHECK([whether TCP_KEEPIDLE is supported], [libzmq_cv_tcp_keepidle], ++ [AC_TRY_RUN([/* TCP_KEEPIDLE test */ + #include + #include + #include +@@ -697,11 +703,13 @@ int main (int argc, char *argv []) + ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPIDLE, (char*) &opt, sizeof (int))) == -1) + ); + } +- ], +- [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepidle="yes" ; $1], +- [AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepidle="no" ; $2], +- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepidle="no"] ++ ], ++ [libzmq_cv_tcp_keepidle="yes"], ++ [libzmq_cv_tcp_keepidle="no"], ++ [libzmq_cv_tcp_keepidle="not during cross-compile"] ++ )] + ) ++ AS_IF([test "x$libzmq_cv_tcp_keepidle" = "xyes"], [$1], [$2]) + }]) + + dnl ################################################################################ +@@ -709,8 +717,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPINTVL([action-if-found], [action-if-not-found]) + dnl # Check if TCP_KEEPINTVL is supported # + dnl ################################################################################ + AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPINTVL], [{ +- AC_MSG_CHECKING(whether TCP_KEEPINTVL is supported) +- AC_TRY_RUN([/* TCP_KEEPINTVL test */ ++ AC_CACHE_CHECK([whether TCP_KEEPINTVL is supported], [libzmq_cv_tcp_keepintvl], ++ [AC_TRY_RUN([/* TCP_KEEPINTVL test */ + #include + #include + #include +@@ -725,11 +733,13 @@ int main (int argc, char *argv []) + ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPINTVL, (char*) &opt, sizeof (int))) == -1) + ); + } +- ], +- [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepintvl="yes" ; $1], +- [AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepintvl="no" ; $2], +- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepintvl="no"] ++ ], ++ [libzmq_cv_tcp_keepintvl="yes"], ++ [libzmq_cv_tcp_keepintvl="no"], ++ [libzmq_cv_tcp_keepintvl="not during cross-compile"] ++ )] + ) ++ AS_IF([test "x$libzmq_cv_tcp_keepintvl" = "xyes"], [$1], [$2]) + }]) + + dnl ################################################################################ +@@ -737,8 +747,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPALIVE([action-if-found], [action-if-not-found]) + dnl # Check if TCP_KEEPALIVE is supported # + dnl ################################################################################ + AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPALIVE], [{ +- AC_MSG_CHECKING(whether TCP_KEEPALIVE is supported) +- AC_TRY_RUN([/* TCP_KEEPALIVE test */ ++ AC_CACHE_CHECK([whether TCP_KEEPALIVE is supported], [libzmq_cv_tcp_keepalive], ++ [AC_TRY_RUN([/* TCP_KEEPALIVE test */ + #include + #include + #include +@@ -753,11 +763,13 @@ int main (int argc, char *argv []) + ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPALIVE, (char*) &opt, sizeof (int))) == -1) + ); + } +- ], +- [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepalive="yes" ; $1], +- [AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepalive="no" ; $2], +- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepalive="no"] ++ ], ++ [libzmq_cv_tcp_keepalive="yes"], ++ [libzmq_cv_tcp_keepalive="no"], ++ [libzmq_cv_tcp_keepalive="not during cross-compile"] ++ )] + ) ++ AS_IF([test "x$libzmq_cv_tcp_keepalive" = "xyes"], [$1], [$2]) + }]) + + dnl ################################################################################ diff --git a/buildroot/package/zeromq/0002-libzmq-Fix-pkg-config-files-for-static-linking.patch b/buildroot/package/zeromq/0002-libzmq-Fix-pkg-config-files-for-static-linking.patch new file mode 100644 index 0000000..11acec2 --- /dev/null +++ b/buildroot/package/zeromq/0002-libzmq-Fix-pkg-config-files-for-static-linking.patch @@ -0,0 +1,29 @@ +From e89577d30c278fba0f9e40266ceb6fb2821907d5 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Wed, 13 May 2015 08:01:34 +0200 +Subject: [PATCH] libzmq: Fix pkg-config files for static linking + +Libzmq uses C++ standard library features, so users of it should link +against that as well when statically linking. + +Add it to Libs.private so users using pkg-config automatically gets the +correct linker flags. + +Signed-off-by: Peter Korsgaard +--- + src/libzmq.pc.in | 1 + + 1 file changed, 1 insertions(+) + +diff --git a/src/libzmq.pc.in b/src/libzmq.pc.in +index ba155a3..52a39f7 100644 +--- a/src/libzmq.pc.in ++++ b/src/libzmq.pc.in +@@ -7,4 +7,5 @@ Name: libzmq + Description: 0MQ c++ library + Version: @VERSION@ + Libs: -L${libdir} -lzmq ++Libs.private: -lstdc++ + Cflags: -I${includedir} +-- +2.1.4 + diff --git a/buildroot/package/zeromq/Config.in b/buildroot/package/zeromq/Config.in new file mode 100644 index 0000000..69be9f0 --- /dev/null +++ b/buildroot/package/zeromq/Config.in @@ -0,0 +1,55 @@ +comment "zeromq needs a toolchain w/ C++, threads" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) + +config BR2_PACKAGE_ZEROMQ + bool "zeromq" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBUUID + help + ØMQ (ZeroMQ, 0MQ, zmq) looks like an embeddable networking + library but acts like a concurrency framework. It gives you + sockets that carry whole messages across various transports + like in-process, inter- process, TCP, and multicast. You can + connect sockets N-to-N with patterns like fanout, pub-sub, + task distribution, and request-reply. It's fast enough to + be the fabric for clustered products. Its asynchronous I/O + model gives you scalable multicore applications, built as + asynchronous message-processing tasks. It has a score of + language APIs and runs on most operating systems. + + ØMQ is from iMatix and is LGPL open source. + + http://www.zeromq.org/ + +if BR2_PACKAGE_ZEROMQ + +comment "norm support needs a toolchain w/ dynamic library" + depends on BR2_STATIC_LIBS + +config BR2_PACKAGE_ZEROMQ_NORM + bool "NORM support" + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_NORM + help + Add support for NACK-Oriented Reliable Multicast (RFC 5740) + protocol. + +comment "PGM/EPGM support needs a toolchain w/ wchar" + depends on BR2_TOOLCHAIN_HAS_SYNC_2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR + +config BR2_PACKAGE_ZEROMQ_PGM + bool "PGM/EPGM support" + depends on BR2_TOOLCHAIN_HAS_SYNC_2 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_WCHAR # openpgm + select BR2_PACKAGE_OPENPGM + help + Add support for Pragmatic General Multicast protocol (RFC + 3208) implemented either over raw IP packets or UDP + datagrams (encapsulated PGM). + +endif diff --git a/buildroot/package/zeromq/zeromq.hash b/buildroot/package/zeromq/zeromq.hash new file mode 100644 index 0000000..486656e --- /dev/null +++ b/buildroot/package/zeromq/zeromq.hash @@ -0,0 +1,4 @@ +# From https://github.com/zeromq/zeromq4-1/releases +sha1 b956df8c6f77c174683b51fbee67f99c94945651 zeromq-4.1.6.tar.gz +# Calculated based on the hash above +sha256 02ebf60a43011e770799336365bcbce2eb85569e9b5f52aa0d8cc04672438a0a zeromq-4.1.6.tar.gz diff --git a/buildroot/package/zeromq/zeromq.mk b/buildroot/package/zeromq/zeromq.mk new file mode 100644 index 0000000..caf5643 --- /dev/null +++ b/buildroot/package/zeromq/zeromq.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# zeromq +# +################################################################################ + +ZEROMQ_VERSION = 4.1.6 +ZEROMQ_SITE = https://github.com/zeromq/zeromq4-1/releases/download/v$(ZEROMQ_VERSION) +ZEROMQ_INSTALL_STAGING = YES +ZEROMQ_DEPENDENCIES = util-linux +ZEROMQ_CONF_OPTS = --without-documentation +ZEROMQ_LICENSE = LGPL-3.0+ with exceptions +ZEROMQ_LICENSE_FILES = COPYING COPYING.LESSER +# For 0001-acinclude.m4-make-kernel-specific-flags-cacheable.patch +ZEROMQ_AUTORECONF = YES + +# Assume these flags are always available. It is true, at least for +# SOCK_CLOEXEC, since linux v2.6.27. +# Note: the flag TCP_KEEPALIVE is NOT available so we do not include it. +ZEROMQ_CONF_ENV = libzmq_cv_sock_cloexec=yes \ + libzmq_cv_so_keepalive=yes \ + libzmq_cv_tcp_keepcnt=yes \ + libzmq_cv_tcp_keepidle=yes \ + libzmq_cv_tcp_keepintvl=yes + +# Only tools/curve_keygen.c needs this, but it doesn't hurt to pass it +# for the rest of the build as well (which automatically includes stdc++). +ifeq ($(BR2_STATIC_LIBS),y) +ZEROMQ_CONF_OPTS += LIBS=-lstdc++ +endif + +ifeq ($(BR2_PACKAGE_ZEROMQ_NORM),y) +ZEROMQ_CONF_OPTS += --with-norm +ZEROMQ_DEPENDENCIES += norm +else +ZEROMQ_CONF_OPTS += --without-norm +endif + +ifeq ($(BR2_PACKAGE_ZEROMQ_PGM),y) +ZEROMQ_DEPENDENCIES += host-pkgconf openpgm +ZEROMQ_CONF_OPTS += --with-pgm +else +ZEROMQ_CONF_OPTS += --without-pgm +endif + +# ZeroMQ uses libsodium if it's available. +ifeq ($(BR2_PACKAGE_LIBSODIUM),y) +ZEROMQ_DEPENDENCIES += libsodium +ZEROMQ_CONF_OPTS += --with-libsodium="$(STAGING_DIR)/usr" +else +ZEROMQ_CONF_OPTS += --without-libsodium +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/zic/0001-remove-dependency-check-on-version-file.patch b/buildroot/package/zic/0001-remove-dependency-check-on-version-file.patch new file mode 100644 index 0000000..f4b2590 --- /dev/null +++ b/buildroot/package/zic/0001-remove-dependency-check-on-version-file.patch @@ -0,0 +1,32 @@ +From 4ad8932f93c490d15586b1def3863e9580e6eceb Mon Sep 17 00:00:00 2001 +From: Martin Bark +Date: Sat, 3 Dec 2016 13:51:50 +0000 +Subject: [PATCH] remove dependency check on version file + +$(VERSION_DEPS) includes dependencies from tzdata meaning applications +such as zic can't build from tzcode on their own. Remove the dependency +to $(VERSION_DEPS) since it is not necessary to check for version updates +in released code. This solves building zic from tzcode without needing +tzdata. + +Signed-off-by: Martin Bark +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 1b714a8..00d2c09 100644 +--- a/Makefile ++++ b/Makefile +@@ -437,7 +437,7 @@ INSTALL: ALL install date.1 + cp date $(DESTDIR)$(BINDIR)/. + cp -f date.1 $(DESTDIR)$(MANDIR)/man1/. + +-version: $(VERSION_DEPS) ++version: + { (type git) >/dev/null 2>&1 && \ + V=`git describe --match '[0-9][0-9][0-9][0-9][a-z]*' \ + --abbrev=7 --dirty` || \ +-- +2.7.4 + diff --git a/buildroot/package/zic/zic.hash b/buildroot/package/zic/zic.hash new file mode 100644 index 0000000..df578fe --- /dev/null +++ b/buildroot/package/zic/zic.hash @@ -0,0 +1,2 @@ +# From http://mm.icann.org/pipermail/tz-announce/2018-January/000048.html +sha512 21988e876479e38661d41ea4c7b5218ba14b979739d7ba8d49a2d343bb9f37c654056ab21c046a6652715f012e4ca33c4aa109b1ec3ac5d0244dd3a7ea9ed6d2 tzcode2018c.tar.gz diff --git a/buildroot/package/zic/zic.mk b/buildroot/package/zic/zic.mk new file mode 100644 index 0000000..aba8bc5 --- /dev/null +++ b/buildroot/package/zic/zic.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# zic +# +################################################################################ + +ZIC_VERSION = 2018c +ZIC_SOURCE = tzcode$(ZIC_VERSION).tar.gz +ZIC_SITE = http://www.iana.org/time-zones/repository/releases +ZIC_STRIP_COMPONENTS = 0 +ZIC_LICENSE = Public domain + +define HOST_ZIC_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) zic +endef + +define HOST_ZIC_INSTALL_CMDS + $(INSTALL) -D -m 755 $(@D)/zic $(HOST_DIR)/sbin/zic + $(INSTALL) -D -m 644 $(@D)/tzfile.h $(HOST_DIR)/include/tzfile.h +endef + +$(eval $(host-generic-package)) + +ZIC = $(HOST_DIR)/sbin/zic diff --git a/buildroot/package/zip/0001-configure-Remove-Check-C-compiler-type-optimization-.patch b/buildroot/package/zip/0001-configure-Remove-Check-C-compiler-type-optimization-.patch new file mode 100644 index 0000000..591b178 --- /dev/null +++ b/buildroot/package/zip/0001-configure-Remove-Check-C-compiler-type-optimization-.patch @@ -0,0 +1,130 @@ +From 0f5e1658c05746b17f05a1bade263cad19b37e79 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 22 Jan 2015 15:20:25 +0100 +Subject: [PATCH 1/6] configure: Remove "Check C compiler type (optimization + options)" + +This test force optimization to -O3 +while it is already set in CFLAGS + +Signed-off-by: Romain Naour +--- + unix/configure | 98 ---------------------------------------------------------- + 1 file changed, 98 deletions(-) + +diff --git a/unix/configure b/unix/configure +index 73ba803..4185fee 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -22,108 +22,10 @@ LFLAGS1='' + LFLAGS2='' + LN="ln -s" + +-CFLAGS_OPT='' +- + # bzip2 + IZ_BZIP2=${3-} + CFLAGS_BZ='' + +- +-echo 'Check C compiler type (optimization options)' +-# Sun C? +-cat > conftest.c << _EOF_ +-int main() +-{ +-#ifndef __SUNPRO_C +- bad code +-#endif +- return 0; +-} +-_EOF_ +-$CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null +-if test $? -eq 0; then +- CFLAGS_OPT='-xO3' +- echo " Sun C ($CFLAGS_OPT)" +-else +- # Tru64 DEC/Compaq/HP C? +- cat > conftest.c << _EOF_ +-int main() +-{ +-#ifndef __DECC +- bad code +-#endif +- return 0; +-} +-_EOF_ +- $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null +- if test $? -eq 0; then +- CFLAGS_OPT='-O3' +- echo " DEC C ($CFLAGS_OPT)" +- else +- # HP-UX HP C? +- cat > conftest.c << _EOF_ +-int main() +-{ +-#ifdef __GNUC__ +- bad code +-#endif +-#ifndef __hpux +- bad code +-#endif +- return 0; +-} +-_EOF_ +- $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null +- if test $? -eq 0; then +- # HP-UX, not GCC. Lame bundled or real ANSI compiler? +- CFLAGS_OPT_TRY="+O3 +Onolimit" +- $CC $CFLAGS $CFLAGS_OPT_TRY -c conftest.c 2>&1 | \ +- grep '(Bundled)' > /dev/null +- if test $? -ne 0; then +- CFLAGS_OPT="$CFLAGS_OPT_TRY" +- echo " HP-UX ANSI C ($CFLAGS_OPT)" +- else +- echo ' HP-UX Bundled C (no opt)' +- fi +- else +- # GNU C? +- cat > conftest.c << _EOF_ +-int main() +-{ +-#ifndef __GNUC__ +- bad code +-#endif +- return 0; +-} +-_EOF_ +- $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null +- if test $? -eq 0; then +- CFLAGS_OPT='-O3' +- echo " GNU C ($CFLAGS_OPT)" +- # Special Mac OS X shared library "ld" option? +- if test ` uname -s 2> /dev/null ` = 'Darwin'; then +- lf='-Wl,-search_paths_first' +- $CC $CFLAGS $lf conftest.c > /dev/null 2>/dev/null +- if test $? -eq 0; then +- LFLAGS2="${LFLAGS2} ${lf}" +- fi +- rm -f conftest +- fi +- else +- CFLAGS_OPT='-O' +- echo " Other-unknown C ($CFLAGS_OPT)" +- fi +- fi +- fi +-fi +- +-# optimization flags +-if test -n "${CFLAGS_OPT}"; then +- CFLAGS="${CFLAGS} ${CFLAGS_OPT}" +- CFLAGS_BZ="${CFLAGS_BZ} ${CFLAGS_OPT}" +-fi +- +- + # bzip2 + + echo "Check bzip2 support" +-- +1.9.3 + diff --git a/buildroot/package/zip/0002-configure-Don-t-use-host-CPP.patch b/buildroot/package/zip/0002-configure-Don-t-use-host-CPP.patch new file mode 100644 index 0000000..8504912 --- /dev/null +++ b/buildroot/package/zip/0002-configure-Don-t-use-host-CPP.patch @@ -0,0 +1,37 @@ +From fc5c889131ff6270e1028cc7edd87e7f10a7da6d Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 22 Jan 2015 15:21:31 +0100 +Subject: [PATCH 2/6] configure: Don't use host CPP + +CPP is redefined if a cpp binary (/lib/cpp) is found on the host. + +Use the CPP="${CC} -E" allows to pass the following checks: +Check if we can use asm code (for -DASMV) +Check if compiler generates underlines (for -DASM_CRC) + +Signed-off-by: Romain Naour +--- + unix/configure | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/unix/configure b/unix/configure +index 4185fee..489009f 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -122,13 +122,6 @@ fi + echo Check for the C preprocessor + # on SVR4, cc -E does not produce correct assembler files. Need /lib/cpp. + CPP="${CC} -E" +-# solaris as(1) needs -P, maybe others as well ? +-[ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P" +-[ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp +-[ -f /lib/cpp ] && CPP=/lib/cpp +-[ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp +-[ -f /xenix ] && CPP="${CC} -E" +-[ -f /lynx.os ] && CPP="${CC} -E" + + echo "#include " > conftest.c + $CPP conftest.c >/dev/null 2>/dev/null || CPP="${CC} -E" +-- +1.9.3 + diff --git a/buildroot/package/zip/0003-Makefile-Use-CFLAGS-from-command-line.patch b/buildroot/package/zip/0003-Makefile-Use-CFLAGS-from-command-line.patch new file mode 100644 index 0000000..104b7e8 --- /dev/null +++ b/buildroot/package/zip/0003-Makefile-Use-CFLAGS-from-command-line.patch @@ -0,0 +1,30 @@ +From 93189390de7322da78bc5b807f4cadaff46393c9 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 22 Jan 2015 22:45:30 +0100 +Subject: [PATCH 3/6] Makefile: Use CFLAGS from command line + +Replace CFLAGS_NOOPT by CFLAGS when calling unix/configure script +to create 'flags' file which contains all variables used to build +zip binary. + +Signed-off-by: Romain Naour +--- + unix/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/unix/Makefile b/unix/Makefile +index abd0c44..db62368 100644 +--- a/unix/Makefile ++++ b/unix/Makefile +@@ -177,7 +177,7 @@ uninstall: + + + flags: unix/configure +- sh unix/configure "${CC}" "${CFLAGS_NOOPT}" "${IZ_BZIP2}" ++ sh unix/configure "${CC}" "${CFLAGS}" "${IZ_BZIP2}" + + # These symbols, when #defined using -D have these effects on compilation: + # ZMEM - includes C language versions of memset(), memcpy(), +-- +1.9.3 + diff --git a/buildroot/package/zip/0004-configure-use-LDFLAGS-from-command-line.patch b/buildroot/package/zip/0004-configure-use-LDFLAGS-from-command-line.patch new file mode 100644 index 0000000..35d3860 --- /dev/null +++ b/buildroot/package/zip/0004-configure-use-LDFLAGS-from-command-line.patch @@ -0,0 +1,35 @@ +From 5c58b8737dc9ccf9407f6725f6f07b764d6abb22 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Thu, 22 Jan 2015 23:47:55 +0100 +Subject: [PATCH 4/6] configure: use LDFLAGS from command line + +The bzip2 support may not enabled due to a build error +during the checking for bzip2 library. +The library path (-L) to bzip2 library is missing. + +Signed-off-by: Romain Naour +--- + unix/configure | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/unix/configure b/unix/configure +index 489009f..de9fd68 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -106,11 +106,11 @@ int main() + return 0; + } + _EOF_ +- $CC $CFLAGS -o conftest conftest.c -lbz2 > /dev/null 2>/dev/null ++ $CC $CFLAGS $LDFLAGS -o conftest conftest.c -lbz2 > /dev/null 2>/dev/null + if test $? -eq 0; then + echo "-- OS supports bzip2 - linking in bzip2" + CFLAGS="${CFLAGS} -DBZIP2_SUPPORT" +- LFLAGS2="${LFLAGS2} -lbz2" ++ LFLAGS2="${LFLAGS2} ${LDFLAGS} -lbz2" + else + echo "-- Either bzlib.h or libbz2.a not found - no bzip2" + fi +-- +1.9.3 + diff --git a/buildroot/package/zip/0005-unix-configure-remove-GID-UID-size-check.patch b/buildroot/package/zip/0005-unix-configure-remove-GID-UID-size-check.patch new file mode 100644 index 0000000..38d8d73 --- /dev/null +++ b/buildroot/package/zip/0005-unix-configure-remove-GID-UID-size-check.patch @@ -0,0 +1,85 @@ +From d8da4e5f0ebed000f880e60b6cca7c575f7ed1c7 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 23 Jan 2015 22:13:14 +0100 +Subject: [PATCH 5/6] unix/configure: remove GID/UID size check + +This check can't work for cross-compilation since it +try to run a target's binary on the host system. + +Reported-by: Richard Genoud +Signed-off-by: Romain Naour +--- + unix/configure | 57 --------------------------------------------------------- + 1 file changed, 57 deletions(-) + +diff --git a/unix/configure b/unix/configure +index de9fd68..7bfc9eb 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -237,63 +237,6 @@ _EOF_ + $CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null + [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_OFF_T" + +- +-echo Check size of UIDs and GIDs +-echo "(Now zip stores variable size UIDs/GIDs using a new extra field. This" +-echo " tests if this OS uses 16-bit UIDs/GIDs and so if the old 16-bit storage" +-echo " should also be used for backward compatibility.)" +-# Added 2008-04-15 CS +-cat > conftest.c << _EOF_ +-# define _LARGEFILE_SOURCE /* some OSes need this for fseeko */ +-# define _LARGEFILE64_SOURCE +-# define _FILE_OFFSET_BITS 64 /* select default interface as 64 bit */ +-# define _LARGE_FILES /* some OSes need this for 64-bit off_t */ +-#include +-#include +-#include +-#include +-int main() +-{ +- struct stat s; +- +- printf(" s.st_uid is %u bytes\n", sizeof(s.st_uid)); +- printf(" s.st_gid is %u bytes\n", sizeof(s.st_gid)); +- +- /* see if have 16-bit UID */ +- if (sizeof(s.st_uid) != 2) { +- return 1; +- } +- /* see if have 16-bit GID */ +- if (sizeof(s.st_gid) != 2) { +- return 2; +- } +- return 3; +-} +-_EOF_ +-# compile it +-$CC -o conftest conftest.c >/dev/null 2>/dev/null +-if [ $? -ne 0 ]; then +- echo -- UID/GID test failed on compile - disabling old 16-bit UID/GID support +- CFLAGS="${CFLAGS} -DUIDGID_NOT_16BIT" +-else +-# run it +- ./conftest +- r=$? +- if [ $r -eq 1 ]; then +- echo -- UID not 2 bytes - disabling old 16-bit UID/GID support +- CFLAGS="${CFLAGS} -DUIDGID_NOT_16BIT" +- elif [ $r -eq 2 ]; then +- echo -- GID not 2 bytes - disabling old 16-bit UID/GID support +- CFLAGS="${CFLAGS} -DUIDGID_NOT_16BIT" +- elif [ $r -eq 3 ]; then +- echo -- 16-bit UIDs and GIDs - keeping old 16-bit UID/GID support +- else +- echo -- test failed - conftest returned $r - disabling old 16-bit UID/GID support +- CFLAGS="${CFLAGS} -DUIDGID_NOT_16BIT" +- fi +-fi +- +- + # Now we set the 64-bit file environment and check the size of off_t + # Added 11/4/2003 EG + # Revised 8/12/2004 EG +-- +1.9.3 + diff --git a/buildroot/package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch b/buildroot/package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch new file mode 100644 index 0000000..a4e99db --- /dev/null +++ b/buildroot/package/zip/0006-unix-configure-borrow-the-LFS-test-from-autotools.patch @@ -0,0 +1,101 @@ +From fc392c939b9a18959482f588aff0afc29dd6d30a Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Fri, 23 Jan 2015 22:20:18 +0100 +Subject: [PATCH 6/6] unix/configure: borrow the LFS test from autotools. + +Infozip's LFS check can't work for cross-compilation +since it try to run a target's binary on the host system. + +Instead, use to LFS test used by autotools which is a +compilation test. +(see autotools/lib/autoconf/specific.m4) + +Reported-by: Richard Genoud +Signed-off-by: Romain Naour +--- + unix/configure | 51 ++++++++++++++++++--------------------------------- + 1 file changed, 18 insertions(+), 33 deletions(-) + +diff --git a/unix/configure b/unix/configure +index 7bfc9eb..588f269 100644 +--- a/unix/configure ++++ b/unix/configure +@@ -237,9 +237,8 @@ _EOF_ + $CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null + [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_OFF_T" + +-# Now we set the 64-bit file environment and check the size of off_t +-# Added 11/4/2003 EG +-# Revised 8/12/2004 EG ++# LFS check borrowed from autotools sources ++# lib/autoconf/specific.m4 + + echo Check for Large File Support + cat > conftest.c << _EOF_ +@@ -247,24 +246,22 @@ cat > conftest.c << _EOF_ + # define _LARGEFILE64_SOURCE + # define _FILE_OFFSET_BITS 64 /* select default interface as 64 bit */ + # define _LARGE_FILES /* some OSes need this for 64-bit off_t */ ++ + #include +-#include +-#include +-#include +-int main() ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () + { +- off_t offset; +- struct stat s; +- /* see if have 64-bit off_t */ +- if (sizeof(offset) < 8) +- return 1; +- printf(" off_t is %d bytes\n", sizeof(off_t)); +- /* see if have 64-bit stat */ +- if (sizeof(s.st_size) < 8) { +- printf(" s.st_size is %d bytes\n", sizeof(s.st_size)); +- return 2; +- } +- return 3; ++ ++ ; ++ return 0; + } + _EOF_ + # compile it +@@ -272,22 +269,10 @@ $CC -o conftest conftest.c >/dev/null 2>/dev/null + if [ $? -ne 0 ]; then + echo -- no Large File Support + else +-# run it +- ./conftest +- r=$? +- if [ $r -eq 1 ]; then +- echo -- no Large File Support - no 64-bit off_t +- elif [ $r -eq 2 ]; then +- echo -- no Large File Support - no 64-bit stat +- elif [ $r -eq 3 ]; then +- echo -- yes we have Large File Support! +- CFLAGS="${CFLAGS} -DLARGE_FILE_SUPPORT" +- else +- echo -- no Large File Support - conftest returned $r +- fi ++ echo -- yes we have Large File Support! ++ CFLAGS="${CFLAGS} -DLARGE_FILE_SUPPORT" + fi + +- + # Check for wide char for Unicode support + # Added 11/24/2005 EG + +-- +1.9.3 + diff --git a/buildroot/package/zip/Config.in b/buildroot/package/zip/Config.in new file mode 100644 index 0000000..4b6360a --- /dev/null +++ b/buildroot/package/zip/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ZIP + bool "zip" + help + Zip is a compression and file packaging/archive utility. + Although highly compatible both with PKWARE's PKZIP and + PKUNZIP utilities for MS-DOS and with Info-ZIP's own UnZip, + our primary objectives have been portability and + other-than-MSDOS functionality. + + http://infozip.sourceforge.net/Zip.html diff --git a/buildroot/package/zip/Config.in.host b/buildroot/package/zip/Config.in.host new file mode 100644 index 0000000..b14ce55 --- /dev/null +++ b/buildroot/package/zip/Config.in.host @@ -0,0 +1,10 @@ +config BR2_PACKAGE_HOST_ZIP + bool "host zip" + help + Zip is a compression and file packaging/archive utility. + Although highly compatible both with PKWARE's PKZIP and + PKUNZIP utilities for MS-DOS and with Info-ZIP's own UnZip, + our primary objectives have been portability and + other-than-MSDOS functionality. + + http://infozip.sourceforge.net/Zip.html diff --git a/buildroot/package/zip/zip.hash b/buildroot/package/zip/zip.hash new file mode 100644 index 0000000..782ae5e --- /dev/null +++ b/buildroot/package/zip/zip.hash @@ -0,0 +1,2 @@ +# Locally calculated from download (no sig, hash) +sha256 f0e8bb1f9b7eb0b01285495a2699df3a4b766784c1765a8f1aeedf63c0806369 zip30.tgz diff --git a/buildroot/package/zip/zip.mk b/buildroot/package/zip/zip.mk new file mode 100644 index 0000000..0bd3d3c --- /dev/null +++ b/buildroot/package/zip/zip.mk @@ -0,0 +1,54 @@ +################################################################################ +# +# zip +# +################################################################################ + +ZIP_VERSION = 30 +ZIP_SOURCE = zip$(ZIP_VERSION).tgz +ZIP_SITE = ftp://ftp.info-zip.org/pub/infozip/src +ZIP_LICENSE = Info-ZIP +ZIP_LICENSE_FILES = LICENSE + +ifeq ($(BR2_PACKAGE_BZIP2),y) +ZIP_DEPENDENCIES += bzip2 +endif + +# Infozip's default CFLAGS. +ZIP_CFLAGS = -I. -DUNIX + +# Disable the support of 16-bit UIDs/GIDs, the test in unix/configure was +# removed since it can't work for cross-compilation. +ZIP_CFLAGS += -DUIDGID_NOT_16BIT + +# infozip already defines _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE when +# necessary, redefining it on the command line causes some warnings. +ZIP_TARGET_CFLAGS = \ + $(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE,$(TARGET_CFLAGS)) + +define ZIP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ + CFLAGS="$(ZIP_TARGET_CFLAGS) $(ZIP_CFLAGS)" \ + AS="$(TARGET_CC) -c" \ + -f unix/Makefile generic +endef + +define ZIP_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \ + prefix=$(TARGET_DIR)/usr +endef + +define HOST_ZIP_BUILD_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \ + CFLAGS="$(HOST_CFLAGS) $(ZIP_CFLAGS)" \ + AS="$(HOSTCC) -c" \ + -f unix/Makefile generic +endef + +define HOST_ZIP_INSTALL_CMDS + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \ + prefix=$(HOST_DIR) +endef + +$(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/zisofs-tools/zisofs-tools.hash b/buildroot/package/zisofs-tools/zisofs-tools.hash new file mode 100644 index 0000000..d2f594c --- /dev/null +++ b/buildroot/package/zisofs-tools/zisofs-tools.hash @@ -0,0 +1,5 @@ +# From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit/cdrkit_1.1.11-3.dsc +sha256 d1c030756ecc182defee9fe885638c1785d35a2c2a297b4604c0e0dcc78e47da cdrkit_1.1.11.orig.tar.gz + +# Locally computed +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 3rd-party/zisofs_tools/COPYING diff --git a/buildroot/package/zisofs-tools/zisofs-tools.mk b/buildroot/package/zisofs-tools/zisofs-tools.mk new file mode 100644 index 0000000..fd8c371 --- /dev/null +++ b/buildroot/package/zisofs-tools/zisofs-tools.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# zisofs-tools +# +################################################################################ + +ZISOFS_TOOLS_VERSION = 1.1.11 +ZISOFS_TOOLS_SOURCE = cdrkit_$(ZISOFS_TOOLS_VERSION).orig.tar.gz +ZISOFS_TOOLS_SITE = http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/c/cdrkit +ZISOFS_TOOLS_LICENSE = GPL-2.0+ +ZISOFS_TOOLS_LICENSE_FILES = 3rd-party/zisofs_tools/COPYING +ZISOFS_TOOLS_SUBDIR = 3rd-party/zisofs_tools +HOST_ZISOFS_TOOLS_DEPENDENCIES = host-zlib + +$(eval $(host-autotools-package)) diff --git a/buildroot/package/zlib-ng/zlib-ng.hash b/buildroot/package/zlib-ng/zlib-ng.hash new file mode 100644 index 0000000..2e89a8d --- /dev/null +++ b/buildroot/package/zlib-ng/zlib-ng.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 2ec78c8c13530bffaebfc10be2f4695c47cf50fe2fbc2104606467703836fa0e zlib-ng-a17fefa147942edbf80ab22a16bcbc2419def12d.tar.gz +sha256 d3c80be055d94d798eaa786116e84fa0b010bc11420b5d2060d978ea77845436 LICENSE.md diff --git a/buildroot/package/zlib-ng/zlib-ng.mk b/buildroot/package/zlib-ng/zlib-ng.mk new file mode 100644 index 0000000..3d9651c --- /dev/null +++ b/buildroot/package/zlib-ng/zlib-ng.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# zlib-ng +# +################################################################################ + +ZLIB_NG_VERSION = a17fefa147942edbf80ab22a16bcbc2419def12d +ZLIB_NG_SITE = $(call github,mtl1979,zlib-ng,$(ZLIB_NG_VERSION)) +ZLIB_NG_LICENSE = Zlib +ZLIB_NG_LICENSE_FILES = LICENSE.md +ZLIB_NG_INSTALL_STAGING = YES +ZLIB_NG_PROVIDES = zlib + +# Build with zlib compatible API, gzFile support and optimizations on +ZLIB_NG_CONF_OPTS += -DZLIB_COMPAT=1 -DWITH_GZFILEOP=1 -DWITH_OPTIM=1 -DCC=$(TARGET_CC) + +# Enable NEON and ACLE on ARM +ifeq ($(BR2_arm),y) +ZLIB_NG_CONF_OPTS += -DWITH_ACLE=1 -DWITH_NEON=1 +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/zlib/Config.in b/buildroot/package/zlib/Config.in new file mode 100644 index 0000000..0f6179f --- /dev/null +++ b/buildroot/package/zlib/Config.in @@ -0,0 +1,55 @@ +config BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS + bool + default y if BR2_arm + default y if BR2_aarch64 + default y if BR2_i386 + default y if BR2_x86_64 + +config BR2_PACKAGE_ZLIB + bool "zlib support" + help + Select the desired Zlib library provider. + +if BR2_PACKAGE_ZLIB + +choice + prompt "zlib variant" + default BR2_PACKAGE_LIBZLIB + help + Select the desired Zlib library provider. + +config BR2_PACKAGE_LIBZLIB + bool "zlib" + select BR2_PACKAGE_HAS_ZLIB + help + Standard (de)compression library. Used by things like + gzip and libpng. + + http://www.zlib.net + +config BR2_PACKAGE_ZLIB_NG + bool "zlib-ng" + depends on BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS + select BR2_PACKAGE_HAS_ZLIB + help + Zlib replacement with optimizations for + "next generation" systems. + + https://github.com/mtl1979/zlib-ng/tree/renamelib + +endchoice + +config BR2_PACKAGE_HAS_ZLIB + bool + +config BR2_PACKAGE_PROVIDES_ZLIB + string + default "libzlib" if BR2_PACKAGE_LIBZLIB + default "zlib-ng" if BR2_PACKAGE_ZLIB_NG + +endif + +# ensure libzlib is used for the host variant +config BR2_PACKAGE_PROVIDES_HOST_ZLIB + string + default "host-libzlib" diff --git a/buildroot/package/zlib/zlib.mk b/buildroot/package/zlib/zlib.mk new file mode 100644 index 0000000..78f48ff --- /dev/null +++ b/buildroot/package/zlib/zlib.mk @@ -0,0 +1,8 @@ +################################################################################ +# +# zlib +# +################################################################################ + +$(eval $(virtual-package)) +$(eval $(host-virtual-package)) diff --git a/buildroot/package/zlog/0001-fix-compiling-on-Buildroot.patch b/buildroot/package/zlog/0001-fix-compiling-on-Buildroot.patch new file mode 100644 index 0000000..32aa7d6 --- /dev/null +++ b/buildroot/package/zlog/0001-fix-compiling-on-Buildroot.patch @@ -0,0 +1,32 @@ +From a9f6a55bdb29a2bebc96a68ab53077906c25a9df Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Wed, 22 Jan 2014 15:04:42 +0100 +Subject: [PATCH] Fix compiling on Buildroot + +Buildroot always specifies -D_LARGEFILE_SOURCE, -D_LARGEFILE64_SOURCE, +-D_FILE_OFFSET_BITS=64, so define them only if they are not already +defined. + +Signed-off-by: Yegor Yefremov +--- + src/fmacros.h | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/src/fmacros.h b/src/fmacros.h +index fa37948..059dfeb 100644 +--- a/src/fmacros.h ++++ b/src/fmacros.h +@@ -14,7 +14,11 @@ + #define _XOPEN_SOURCE + #endif + ++#ifndef _LARGEFILE_SOURCE + #define _LARGEFILE_SOURCE ++#endif ++#ifndef _FILE_OFFSET_BITS + #define _FILE_OFFSET_BITS 64 ++#endif + + #endif +-- +1.7.7 diff --git a/buildroot/package/zlog/0002-compile-Remove-Werror-and-avoid-build-failures-becau.patch b/buildroot/package/zlog/0002-compile-Remove-Werror-and-avoid-build-failures-becau.patch new file mode 100644 index 0000000..0f1b912 --- /dev/null +++ b/buildroot/package/zlog/0002-compile-Remove-Werror-and-avoid-build-failures-becau.patch @@ -0,0 +1,38 @@ +From 4a08c9e07fa8b7a1d6a76b927ea97e3eaa784845 Mon Sep 17 00:00:00 2001 +From: Ezequiel Garcia +Date: Sun, 26 Oct 2014 16:16:25 -0300 +Subject: [PATCH] compile: Remove -Werror and avoid build failures because of + warnings + +Using -Werror on production is a bad idea, as otherwise harmless warnings +get treated as errors breaking builds. This is currently the case with +Nios-II architecture toolchain, warning about a deprecated macro: + +../usr/nios2-buildroot-linux-gnu/sysroot/usr/include/features.h:148:3: +error: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Werror=cpp] + # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" + +Instead of trying to fix the macro, let's fix the real issue here, +and remove -Werror. + +Signed-off-by: Ezequiel Garcia +--- + src/makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/makefile b/src/makefile +index 294dc08..4ac4c43 100644 +--- a/src/makefile ++++ b/src/makefile +@@ -32,7 +32,7 @@ ZLOG_MINOR=2 + # Fallback to gcc when $CC is not in $PATH. + CC:=$(shell sh -c 'type $(CC) >/dev/null 2>/dev/null && echo $(CC) || echo gcc') + OPTIMIZATION?=-O2 +-WARNINGS=-Wall -Werror -Wstrict-prototypes -fwrapv ++WARNINGS=-Wall -Wstrict-prototypes -fwrapv + DEBUG?= -g -ggdb + REAL_CFLAGS=$(OPTIMIZATION) -fPIC -pthread $(CFLAGS) $(WARNINGS) $(DEBUG) + REAL_LDFLAGS=$(LDFLAGS) -pthread +-- +2.1.0 + diff --git a/buildroot/package/zlog/Config.in b/buildroot/package/zlog/Config.in new file mode 100644 index 0000000..cf86a26 --- /dev/null +++ b/buildroot/package/zlog/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ZLOG + bool "zlog" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_STATIC_LIBS + help + zlog is a reliable, high-performance, thread safe, flexible, + clear-model, pure C logging library. + + https://github.com/HardySimpson/zlog + +comment "zlog needs a toolchain w/ threads, dynamic library" + depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/zlog/zlog.hash b/buildroot/package/zlog/zlog.hash new file mode 100644 index 0000000..1de23c9 --- /dev/null +++ b/buildroot/package/zlog/zlog.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 d3afb1f0ce67df29f759da74235949370ac2818faf242f3f674cb48f9f4c57d3 zlog-6ddb9bbf3ff0123e701bf60996f351576ebe9c00.tar.gz diff --git a/buildroot/package/zlog/zlog.mk b/buildroot/package/zlog/zlog.mk new file mode 100644 index 0000000..8e005e4 --- /dev/null +++ b/buildroot/package/zlog/zlog.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# zlog +# +################################################################################ + +ZLOG_VERSION = 6ddb9bbf3ff0123e701bf60996f351576ebe9c00 +ZLOG_SITE = $(call github,HardySimpson,zlog,$(ZLOG_VERSION)) +ZLOG_LICENSE = LGPL-2.1 +ZLOG_LICENSE_FILES = COPYING +ZLOG_INSTALL_STAGING = YES + +define ZLOG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE1) CC="$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS)" \ + -C $(@D) all +endef + +define ZLOG_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(STAGING_DIR)/usr -C $(@D) install +endef + +define ZLOG_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch b/buildroot/package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch new file mode 100644 index 0000000..70caee8 --- /dev/null +++ b/buildroot/package/zmqpp/0001-Allow-building-shared-or-static-library-only.patch @@ -0,0 +1,83 @@ +From 02ad67e60ef698ee47f6ee53b36e5b89c2fd71e7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Wed, 24 Feb 2016 10:07:11 -0300 +Subject: [PATCH 1/2] Allow building shared or static library only +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +[Gustavo: update for 4.1.2] + +Signed-off-by: Jörg Krause +Signed-off-by: Gustavo Zacarias +--- + Makefile | 19 +++++++++++++++---- + 1 file changed, 15 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 9df5996..86c8fac 100644 +--- a/Makefile ++++ b/Makefile +@@ -79,6 +79,8 @@ ifeq ($(UNAME_S),Darwin) + endif + + ++BUILD_SHARED ?= yes ++ + CONFIG_FLAGS = + ifeq ($(CONFIG),debug) + CONFIG_FLAGS = -g -fno-inline -ftemplate-depth-1000 +@@ -93,13 +95,22 @@ ifneq (,$(findstring $(CONFIG),release loadtest)) + CONFIG_FLAGS = -O3 -funroll-loops -ffast-math -finline-functions -fomit-frame-pointer -DNO_DEBUG_LOG -DNO_TRACE_LOG -DNDEBUG + endif + +-COMMON_FLAGS = -MMD -std=c++11 -pipe -Wall -fPIC \ ++COMMON_FLAGS = -MMD -std=c++11 -pipe -Wall \ + -DBUILD_ENV=$(CONFIG) \ + -DBUILD_DATESTAMP='$(APP_DATESTAMP)' \ + -DBUILD_LIBRARY_NAME='"$(LIBRARY_NAME)"' \ + -DBUILD_CLIENT_NAME='"$(CLIENT_TARGET)"' \ + -I$(SRC_PATH) $(CUSTOM_INCLUDE_PATH) + ++ifeq ($(BUILD_SHARED),yes) ++COMMON_FLAGS += -fPIC ++LIBRARY_TARGETS += $(LIBRARY_SHARED) ++endif ++ ++ifeq ($(BUILD_STATIC),yes) ++LIBRARY_TARGETS += $(LIBRARY_ARCHIVE) ++endif ++ + COMMON_LIBS = -lzmq + + LIBRARY_LIBS = +@@ -147,10 +158,11 @@ install: + mkdir -p $(INCLUDEDIR)/$(LIBRARY_DIR) + mkdir -p $(LIBDIR) + install -m 644 $(ALL_LIBRARY_INCLUDES) $(INCLUDEDIR)/$(LIBRARY_DIR) ++ifeq ($(BUILD_SHARED),yes) + install -m 755 $(BUILD_PATH)/$(LIBRARY_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_FULL_VERSION_SHARED) +- install -m 755 $(BUILD_PATH)/$(LIBRARY_ARCHIVE) $(LIBDIR)/$(LIBRARY_ARCHIVE) + ln -sf $(LIBRARY_FULL_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_VERSION_SHARED) + ln -sf $(LIBRARY_FULL_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_SHARED) ++endif + if [ -f $(BUILD_PATH)/$(CLIENT_TARGET) ]; then install -m 755 $(BUILD_PATH)/$(CLIENT_TARGET) $(BINDIR); fi + $(LDCONFIG) + @echo "use make installcheck to test the install" +@@ -172,7 +184,7 @@ clean: + + client: $(CLIENT_TARGET) + +-library: $(LIBRARY_SHARED) $(LIBRARY_ARCHIVE) ++library: $(LIBRARY_TARGETS) + + # + # BUILD Targets +@@ -211,4 +223,3 @@ test: $(TESTS_TARGET) + $(OBJECT_PATH)/%.o: $(SRC_PATH)/%.cpp + -mkdir -p $(dir $@) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(COMMON_FLAGS) $(CONFIG_FLAGS) -c -o $@ $< +- +-- +2.4.10 + diff --git a/buildroot/package/zmqpp/0002-Install-static-library-for-static-builds.patch b/buildroot/package/zmqpp/0002-Install-static-library-for-static-builds.patch new file mode 100644 index 0000000..402f85e --- /dev/null +++ b/buildroot/package/zmqpp/0002-Install-static-library-for-static-builds.patch @@ -0,0 +1,33 @@ +From 283676e2e8f15bedca20c3d94caeecfdebe11ffd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Krause?= +Date: Mon, 23 Nov 2015 22:53:09 +0100 +Subject: [PATCH 2/2] Install static library for static builds +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +[Gustavo: update for 4.1.2] + +Signed-off-by: Jörg Krause +Signed-off-by: Gustavo Zacarias +--- + Makefile | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/Makefile b/Makefile +index 86c8fac..fbaff63 100644 +--- a/Makefile ++++ b/Makefile +@@ -163,6 +163,9 @@ ifeq ($(BUILD_SHARED),yes) + ln -sf $(LIBRARY_FULL_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_VERSION_SHARED) + ln -sf $(LIBRARY_FULL_VERSION_SHARED) $(LIBDIR)/$(LIBRARY_SHARED) + endif ++ifeq ($(BUILD_STATIC),yes) ++ install -m 755 $(BUILD_PATH)/$(LIBRARY_ARCHIVE) $(LIBDIR)/$(LIBRARY_ARCHIVE) ++endif + if [ -f $(BUILD_PATH)/$(CLIENT_TARGET) ]; then install -m 755 $(BUILD_PATH)/$(CLIENT_TARGET) $(BINDIR); fi + $(LDCONFIG) + @echo "use make installcheck to test the install" +-- +2.4.10 + diff --git a/buildroot/package/zmqpp/Config.in b/buildroot/package/zmqpp/Config.in new file mode 100644 index 0000000..8dad80e --- /dev/null +++ b/buildroot/package/zmqpp/Config.in @@ -0,0 +1,37 @@ +config BR2_PACKAGE_ZMQPP + bool "zmqpp" + # c++1x support + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + select BR2_PACKAGE_ZEROMQ + help + C++ binding for zeromq (ZeroMQ, 0MQ, zmq). + + This C++ binding is a 'high-level' library that hides most + of the C-style interface core zeromq provides. + + http://github.com/benjamg/zmqpp + +comment "zmqpp needs a toolchain w/ C++, threads, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + +if BR2_PACKAGE_ZMQPP + +config BR2_PACKAGE_ZMQPP_CLIENT + bool "zmqpp client" + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_THREADS # boost + depends on BR2_USE_WCHAR # boost + select BR2_PACKAGE_BOOST + select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS + help + Build and install the zmqpp client, a command line tool that + can be used to listen or send to zeromq sockets. + +comment "zmqpp client needs a toolchain w/ dynamic library, threads, wchar" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_USE_WCHAR + +endif diff --git a/buildroot/package/zmqpp/zmqpp.hash b/buildroot/package/zmqpp/zmqpp.hash new file mode 100644 index 0000000..63c6a34 --- /dev/null +++ b/buildroot/package/zmqpp/zmqpp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 831ad02df64034268d910c30f9fb1b1e631ad810182951af9d7d622650831eb5 zmqpp-4.1.2.tar.gz diff --git a/buildroot/package/zmqpp/zmqpp.mk b/buildroot/package/zmqpp/zmqpp.mk new file mode 100644 index 0000000..e57f7de --- /dev/null +++ b/buildroot/package/zmqpp/zmqpp.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# zmqpp +# +################################################################################ + +ZMQPP_VERSION = 4.1.2 +ZMQPP_SITE = $(call github,zeromq,zmqpp,$(ZMQPP_VERSION)) +ZMQPP_INSTALL_STAGING = YES +ZMQPP_DEPENDENCIES = zeromq +ZMQPP_LICENSE = MPL-2.0 +ZMQPP_LICENSE_FILES = LICENSE +ZMQPP_MAKE_OPTS = LD="$(TARGET_CXX)" BUILD_PATH=./build PREFIX=/usr +ZMQPP_LDFLAGS = $(TARGET_LDFLAGS) -lpthread +ZMQPP_CONFIG = $(if $(BR2_ENABLE_DEBUG),debug,release) + +# gcc bug internal compiler error: in merge_overlapping_regs, at +# regrename.c:304. This bug is fixed since gcc 6. +# By setting CONFIG to empty, all optimizations such as -funroll-loops +# -ffast-math -finline-functions -fomit-frame-pointer are disabled +ifeq ($(BR2_or1k):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:) +ZMQPP_CONFIG = +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) +ZMQPP_LDFLAGS += -latomic +endif + +ifeq ($(BR2_PACKAGE_ZMQPP_CLIENT),y) +ZMQPP_DEPENDENCIES += boost +endif + +ifeq ($(BR2_STATIC_LIBS),y) +ZMQPP_MAKE_OPTS += BUILD_STATIC=yes BUILD_SHARED=no +else ifeq ($(BR2_SHARED_STATIC_LIBS),y) +ZMQPP_MAKE_OPTS += BUILD_STATIC=yes BUILD_SHARED=yes +else ifeq ($(BR2_SHARED_LIBS),y) +ZMQPP_MAKE_OPTS += BUILD_STATIC=no BUILD_SHARED=yes +endif + +define ZMQPP_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + CONFIG=$(ZMQPP_CONFIG) LDFLAGS="$(ZMQPP_LDFLAGS)" \ + $(ZMQPP_MAKE_OPTS) $(if $(BR2_PACKAGE_ZMQPP_CLIENT),client,library) -C $(@D) +endef + +define ZMQPP_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 -d $(TARGET_DIR)/usr/include/zmqpp + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(ZMQPP_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install -C $(@D) +endef + +define ZMQPP_INSTALL_STAGING_CMDS + $(INSTALL) -m 0755 -d $(STAGING_DIR)/usr/include/zmqpp + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(ZMQPP_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install -C $(@D) +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/znc/0001-Add-time.h-includes-where-appropiate.patch b/buildroot/package/znc/0001-Add-time.h-includes-where-appropiate.patch new file mode 100644 index 0000000..c8ba6d4 --- /dev/null +++ b/buildroot/package/znc/0001-Add-time.h-includes-where-appropiate.patch @@ -0,0 +1,194 @@ +From 9a51195e916f14a36c2a2a809f2393e5ed2424a3 Mon Sep 17 00:00:00 2001 +From: Gustavo Zacarias +Date: Thu, 6 Aug 2015 11:20:54 -0300 +Subject: [PATCH] Add includes where appropiate + +Signed-off-by: Gustavo Zacarias +--- + modules/adminlog.cpp | 1 + + modules/ctcpflood.cpp | 1 + + modules/flooddetach.cpp | 1 + + modules/lastseen.cpp | 1 + + modules/log.cpp | 1 + + modules/simple_away.cpp | 1 + + src/Buffer.cpp | 1 + + src/FileUtils.cpp | 1 + + src/IRCSock.cpp | 1 + + src/User.cpp | 1 + + src/WebModules.cpp | 1 + + src/ZNCDebug.cpp | 1 + + src/main.cpp | 1 + + src/znc.cpp | 1 + + 14 files changed, 14 insertions(+) + +diff --git a/modules/adminlog.cpp b/modules/adminlog.cpp +index d08369e..1636799 100644 +--- a/modules/adminlog.cpp ++++ b/modules/adminlog.cpp +@@ -20,6 +20,7 @@ + #include + + #include ++#include + + class CAdminLogMod : public CModule { + public: +diff --git a/modules/ctcpflood.cpp b/modules/ctcpflood.cpp +index 7697ef8..c105ef7 100644 +--- a/modules/ctcpflood.cpp ++++ b/modules/ctcpflood.cpp +@@ -16,6 +16,7 @@ + + #include + #include ++#include + + class CCtcpFloodMod : public CModule { + public: +diff --git a/modules/flooddetach.cpp b/modules/flooddetach.cpp +index 9c41734..cd88bd2 100644 +--- a/modules/flooddetach.cpp ++++ b/modules/flooddetach.cpp +@@ -16,6 +16,7 @@ + + #include + #include ++#include + + using std::map; + +diff --git a/modules/lastseen.cpp b/modules/lastseen.cpp +index 416a111..414310f 100644 +--- a/modules/lastseen.cpp ++++ b/modules/lastseen.cpp +@@ -16,6 +16,7 @@ + + #include + #include ++#include + + using std::map; + using std::pair; +diff --git a/modules/log.cpp b/modules/log.cpp +index 2f3124a..e238bb1 100644 +--- a/modules/log.cpp ++++ b/modules/log.cpp +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + #include + + using std::vector; +diff --git a/modules/simple_away.cpp b/modules/simple_away.cpp +index 57d6e7a..2f73b0a 100644 +--- a/modules/simple_away.cpp ++++ b/modules/simple_away.cpp +@@ -16,6 +16,7 @@ + + #include + #include ++#include + + #define SIMPLE_AWAY_DEFAULT_REASON "Auto away at %s" + #define SIMPLE_AWAY_DEFAULT_TIME 60 +diff --git a/src/Buffer.cpp b/src/Buffer.cpp +index 4715f76..dc14642 100644 +--- a/src/Buffer.cpp ++++ b/src/Buffer.cpp +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + + CBufLine::CBufLine(const CString& sFormat, const CString& sText, const timeval* ts) : m_sFormat(sFormat), m_sText(sText), m_time() { + if (ts == nullptr) +diff --git a/src/FileUtils.cpp b/src/FileUtils.cpp +index d358aa4..92218f3 100644 +--- a/src/FileUtils.cpp ++++ b/src/FileUtils.cpp +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + #ifndef HAVE_LSTAT + # define lstat(a, b) stat(a, b) +diff --git a/src/IRCSock.cpp b/src/IRCSock.cpp +index 738b5bf..c97b8fe 100644 +--- a/src/IRCSock.cpp ++++ b/src/IRCSock.cpp +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + using std::set; + using std::vector; +diff --git a/src/User.cpp b/src/User.cpp +index f3b5b91..580b52d 100644 +--- a/src/User.cpp ++++ b/src/User.cpp +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + #include + + using std::vector; +diff --git a/src/WebModules.cpp b/src/WebModules.cpp +index 832a2e1..74e56de 100644 +--- a/src/WebModules.cpp ++++ b/src/WebModules.cpp +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include + #include + +diff --git a/src/ZNCDebug.cpp b/src/ZNCDebug.cpp +index 6e36b57..be2f77f 100644 +--- a/src/ZNCDebug.cpp ++++ b/src/ZNCDebug.cpp +@@ -18,6 +18,7 @@ + #include + #include + #include ++#include + + bool CDebug::stdoutIsTTY = true; + bool CDebug::debug = +diff --git a/src/main.cpp b/src/main.cpp +index 465e1a0..cbe72bf 100644 +--- a/src/main.cpp ++++ b/src/main.cpp +@@ -16,6 +16,7 @@ + + #include + #include ++#include + + #if defined(HAVE_LIBSSL) && defined(HAVE_PTHREAD) + #include +diff --git a/src/znc.cpp b/src/znc.cpp +index 624b92c..4c1ffcd 100644 +--- a/src/znc.cpp ++++ b/src/znc.cpp +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + +-- +2.4.6 + diff --git a/buildroot/package/znc/0002-csocket-timeh.patch b/buildroot/package/znc/0002-csocket-timeh.patch new file mode 100644 index 0000000..cbd435f --- /dev/null +++ b/buildroot/package/znc/0002-csocket-timeh.patch @@ -0,0 +1,19 @@ +Include time.h since time_t is used. + +Status: not upstream, seems to be fixed in newer CSocket versions in a +different way but it hasn't been updated/bundled in znc yet. + +Signed-off-by: Gustavo Zacarias + +diff -Nura znc-1.6.1.orig/src/Csocket.cpp znc-1.6.1.cs/src/Csocket.cpp +--- znc-1.6.1.orig/src/Csocket.cpp 2015-08-06 10:14:45.256246307 -0300 ++++ znc-1.6.1.cs/src/Csocket.cpp 2015-08-06 10:27:25.380446888 -0300 +@@ -54,6 +54,8 @@ + #include + #endif /* HAVE_ICU */ + ++#include ++ + #include + + #define CS_SRANDBUFFER 128 diff --git a/buildroot/package/znc/Config.in b/buildroot/package/znc/Config.in new file mode 100644 index 0000000..154d4b0 --- /dev/null +++ b/buildroot/package/znc/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_ZNC + bool "znc" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU # fork() + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + help + Advanced IRC bouncer + + http://www.znc.in + +comment "znc needs a toolchain w/ C++, dynamic library, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + depends on BR2_USE_MMU diff --git a/buildroot/package/znc/znc.hash b/buildroot/package/znc/znc.hash new file mode 100644 index 0000000..b242933 --- /dev/null +++ b/buildroot/package/znc/znc.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 2f0225d49c53a01f8d94feea4619a6fe92857792bb3401a4eb1edd65f0342aca znc-1.6.5.tar.gz diff --git a/buildroot/package/znc/znc.mk b/buildroot/package/znc/znc.mk new file mode 100644 index 0000000..5783200 --- /dev/null +++ b/buildroot/package/znc/znc.mk @@ -0,0 +1,42 @@ +################################################################################ +# +# znc +# +################################################################################ + +ZNC_VERSION = 1.6.5 +ZNC_SITE = http://znc.in/releases +ZNC_LICENSE = Apache-2.0 +ZNC_LICENSE_FILES = LICENSE +ZNC_DEPENDENCIES = host-pkgconf +ZNC_CONF_OPTS = --disable-perl + +ifeq ($(BR2_PACKAGE_ICU),y) +ZNC_DEPENDENCIES += icu +ZNC_CONF_OPTS += --enable-charset +else +ZNC_CONF_OPTS += --disable-charset +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +ZNC_DEPENDENCIES += openssl +ZNC_CONF_OPTS += --enable-openssl +else +ZNC_CONF_OPTS += --disable-openssl +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ZNC_DEPENDENCIES += zlib +ZNC_CONF_OPTS += --enable-zlib +else +ZNC_CONF_OPTS += --disable-zlib +endif + +ifeq ($(BR2_PACKAGE_PYTHON3),y) +ZNC_DEPENDENCIES += python3 host-swig +ZNC_CONF_OPTS += --enable-python=python3 +else +ZNC_CONF_OPTS += --disable-python +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/zsh/Config.in b/buildroot/package/zsh/Config.in new file mode 100644 index 0000000..2e9daac --- /dev/null +++ b/buildroot/package/zsh/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ZSH + bool "zsh" + depends on BR2_USE_MMU # fork() + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_NCURSES + help + zsh is a shell designed for interactive use, although it is + also a powerful scripting language. Many of the useful + features of bash, ksh, and tcsh were incorporated into zsh; + many original features were added. + + http://www.zsh.org/ diff --git a/buildroot/package/zsh/zsh.hash b/buildroot/package/zsh/zsh.hash new file mode 100644 index 0000000..0770d8e --- /dev/null +++ b/buildroot/package/zsh/zsh.hash @@ -0,0 +1,7 @@ +# From http://www.zsh.org/pub/MD5SUM +md5 dfe156fd69b0d8d1745ecf6d6e02e047 zsh-5.4.2.tar.gz +# Calculated based on the hash above and after checking signature +# http://www.zsh.org/pub/zsh-5.4.2.tar.gz.asc +sha256 957bcdb2c57f64c02f673693ea5a7518ef24b6557aeb3a4ce222cefa6d74acc9 zsh-5.4.2.tar.gz +# Locally calculated +sha256 d06fdf3ef9b1ec69d6b9e170b0a9516fbad3523261ff1668bde3bfea6e0ef5f5 LICENCE diff --git a/buildroot/package/zsh/zsh.mk b/buildroot/package/zsh/zsh.mk new file mode 100644 index 0000000..bfd0a1a --- /dev/null +++ b/buildroot/package/zsh/zsh.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# zsh +# +################################################################################ + +ZSH_VERSION = 5.4.2 +ZSH_SITE = http://www.zsh.org/pub +ZSH_DEPENDENCIES = ncurses +ZSH_CONF_OPTS = --bindir=/bin +ZSH_CONF_ENV = zsh_cv_sys_nis=no zsh_cv_sys_nis_plus=no +ZSH_LICENSE = MIT-like +ZSH_LICENSE_FILES = LICENCE + +ifeq ($(BR2_PACKAGE_GDBM),y) +ZSH_CONF_OPTS += --enable-gdbm +ZSH_DEPENDENCIES += gdbm +else +ZSH_CONF_OPTS += --disable-gdbm +endif + +ifeq ($(BR2_PACKAGE_LIBCAP),y) +ZSH_CONF_OPTS += --enable-cap +ZSH_DEPENDENCIES += libcap +else +ZSH_CONF_OPTS += --disable-cap +endif + +ifeq ($(BR2_PACKAGE_PCRE),y) +ZSH_CONF_OPTS += --enable-pcre +ZSH_CONF_ENV += ac_cv_prog_PCRECONF=$(STAGING_DIR)/usr/bin/pcre-config +ZSH_DEPENDENCIES += pcre +else +ZSH_CONF_OPTS += --disable-pcre +endif + +# Remove versioned zsh-x.y.z binary taking up space +define ZSH_TARGET_INSTALL_FIXUPS + rm -f $(TARGET_DIR)/bin/zsh-$(ZSH_VERSION) +endef +ZSH_POST_INSTALL_TARGET_HOOKS += ZSH_TARGET_INSTALL_FIXUPS + +$(eval $(autotools-package)) diff --git a/buildroot/package/zstd/Config.in b/buildroot/package/zstd/Config.in new file mode 100644 index 0000000..9fa70c6 --- /dev/null +++ b/buildroot/package/zstd/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_ZSTD + bool "zstd" + help + Zstandard, or zstd as short version, is a fast lossless + compression algorithm, targeting real-time compression + scenarios at zlib-level and better compression ratios + + The selection of other packages will enable some features: + xz, lz4 and/or zlib will enable support for corresponding + compression formats + + https://facebook.github.io/zstd diff --git a/buildroot/package/zstd/zstd.hash b/buildroot/package/zstd/zstd.hash new file mode 100644 index 0000000..51e5fc2 --- /dev/null +++ b/buildroot/package/zstd/zstd.hash @@ -0,0 +1,6 @@ +# Locally computed +sha256 a77c47153ee7de02626c5b2a097005786b71688be61e9fb81806a011f90b297b zstd-v1.3.3.tar.gz + +# License files (locally computed as well) +sha256 2c1a7fa704df8f3a606f6fc010b8b5aaebf403f3aeec339a12048f1ba7331a0b LICENSE +sha256 f9c375a1be4a41f7b70301dd83c91cb89e41567478859b77eef375a52d782505 COPYING diff --git a/buildroot/package/zstd/zstd.mk b/buildroot/package/zstd/zstd.mk new file mode 100644 index 0000000..c0fa880 --- /dev/null +++ b/buildroot/package/zstd/zstd.mk @@ -0,0 +1,49 @@ +################################################################################ +# +# zstd +# +################################################################################ + +ZSTD_VERSION = v1.3.3 +ZSTD_SITE = $(call github,facebook,zstd,$(ZSTD_VERSION)) +ZSTD_LICENSE = BSD-3-Clause or GPL-2.0 +ZSTD_LICENSE_FILES = LICENSE COPYING + +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +ZSTD_OPTS += HAVE_THREAD=1 +else +ZSTD_OPTS += HAVE_THREAD=0 +endif + +ifeq ($(BR2_PACKAGE_ZLIB),y) +ZSTD_DEPENDENCIES += zlib +ZSTD_OPTS += HAVE_ZLIB=1 +else +ZSTD_OPTS += HAVE_ZLIB=0 +endif + +ifeq ($(BR2_PACKAGE_XZ),y) +ZSTD_DEPENDENCIES += xz +ZSTD_OPTS += HAVE_LZMA=1 +else +ZSTD_OPTS += HAVE_LZMA=0 +endif + +ifeq ($(BR2_PACKAGE_LZ4),y) +ZSTD_DEPENDENCIES += lz4 +ZSTD_OPTS += HAVE_LZ4=1 +else +ZSTD_OPTS += HAVE_LZ4=0 +endif + +define ZSTD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ + -C $(@D) zstd +endef + +define ZSTD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ + DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D)/programs install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/zxing-cpp/Config.in b/buildroot/package/zxing-cpp/Config.in new file mode 100644 index 0000000..c110921 --- /dev/null +++ b/buildroot/package/zxing-cpp/Config.in @@ -0,0 +1,14 @@ +comment "zxing-cpp needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS + +config BR2_PACKAGE_ZXING_CPP + bool "zxing-cpp" + depends on !BR2_STATIC_LIBS + depends on BR2_INSTALL_LIBSTDCPP + help + ZXing-cpp (pronounced "zebra crossing") is an open-source, + multi-format 1D/2D barcode image processing library + implemented in Java, with ports to other languages. This + compiles the C++ port. + + https://github.com/glassechidna/zxing-cpp diff --git a/buildroot/package/zxing-cpp/zxing-cpp.hash b/buildroot/package/zxing-cpp/zxing-cpp.hash new file mode 100644 index 0000000..4625fbf --- /dev/null +++ b/buildroot/package/zxing-cpp/zxing-cpp.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 643c931a35c363109cd38c5a1526505b75f57c0634907cb7b6bc24f6f48eb32b zxing-cpp-0db7f855135222becff193671faae79c083424b6.tar.gz diff --git a/buildroot/package/zxing-cpp/zxing-cpp.mk b/buildroot/package/zxing-cpp/zxing-cpp.mk new file mode 100644 index 0000000..7113ae2 --- /dev/null +++ b/buildroot/package/zxing-cpp/zxing-cpp.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# zxing-cpp +# +################################################################################ + +ZXING_CPP_VERSION = 0db7f855135222becff193671faae79c083424b6 +ZXING_CPP_SITE = $(call github,glassechidna,zxing-cpp,$(ZXING_CPP_VERSION)) +ZXING_CPP_LICENSE = Apache-2.0 +ZXING_CPP_LICENSE_FILES = COPYING +ZXING_CPP_INSTALL_STAGING = YES +ZXING_CPP_SUPPORTS_IN_SOURCE_BUILD = NO + +ifeq ($(BR2_PACKAGE_LIBICONV),y) +ZXING_CPP_DEPENDENCIES += libiconv +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/zynq-boot-bin/zynq-boot-bin.hash b/buildroot/package/zynq-boot-bin/zynq-boot-bin.hash new file mode 100644 index 0000000..0bc23de --- /dev/null +++ b/buildroot/package/zynq-boot-bin/zynq-boot-bin.hash @@ -0,0 +1,2 @@ +# From https://raw.githubusercontent.com/Xilinx/u-boot-xlnx +sha1 940331ee02b0007099effa61e382fe7ea4174054 zynq-boot-bin.py diff --git a/buildroot/package/zynq-boot-bin/zynq-boot-bin.mk b/buildroot/package/zynq-boot-bin/zynq-boot-bin.mk new file mode 100644 index 0000000..3648c63 --- /dev/null +++ b/buildroot/package/zynq-boot-bin/zynq-boot-bin.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# zynq-boot-bin +# +################################################################################ + +ZYNQ_BOOT_BIN_VERSION = xilinx-v2015.1 +ZYNQ_BOOT_BIN_SOURCE = zynq-boot-bin.py +ZYNQ_BOOT_BIN_SITE = https://raw.githubusercontent.com/Xilinx/u-boot-xlnx/$(ZYNQ_BOOT_BIN_VERSION)/tools +ZYNQ_BOOT_BIN_LICENSE = GPL-3.0+ + +HOST_ZYNQ_BOOT_BIN_DEPENDENCIES = host-python + +define HOST_ZYNQ_BOOT_BIN_EXTRACT_CMDS + cp $(DL_DIR)/$(ZYNQ_BOOT_BIN_SOURCE) $(@D) +endef + +define HOST_ZYNQ_BOOT_BIN_INSTALL_CMDS + $(INSTALL) -D -m 0755 $(@D)/$(ZYNQ_BOOT_BIN_SOURCE) $(HOST_DIR)/bin/$(ZYNQ_BOOT_BIN_SOURCE) +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/zyre/Config.in b/buildroot/package/zyre/Config.in new file mode 100644 index 0000000..21a0884 --- /dev/null +++ b/buildroot/package/zyre/Config.in @@ -0,0 +1,16 @@ +config BR2_PACKAGE_ZYRE + bool "zyre" + depends on BR2_INSTALL_LIBSTDCPP # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on BR2_USE_MMU # czmq + select BR2_PACKAGE_CZMQ + select BR2_PACKAGE_ZEROMQ + help + An open-source framework for proximity-based peer-to-peer + applications. + + http://zyre.org + +comment "zyre needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/buildroot/package/zyre/zyre.hash b/buildroot/package/zyre/zyre.hash new file mode 100644 index 0000000..5b38b80 --- /dev/null +++ b/buildroot/package/zyre/zyre.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 0ce8328a2b9fe46aafc4627fc4ebd4d815f4d9f7d9708088459306c87bf5fb4b zyre-1d949e4bf79b694ea883c325f5813e87ddc2a687.tar.gz diff --git a/buildroot/package/zyre/zyre.mk b/buildroot/package/zyre/zyre.mk new file mode 100644 index 0000000..baaa57f --- /dev/null +++ b/buildroot/package/zyre/zyre.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# zyre +# +################################################################################ + +ZYRE_VERSION = 1d949e4bf79b694ea883c325f5813e87ddc2a687 +ZYRE_SITE = $(call github,zeromq,zyre,$(ZYRE_VERSION)) +ZYRE_LICENSE = MPL-2.0 +ZYRE_LICENSE_FILES = LICENSE +ZYRE_INSTALL_STAGING = YES +ZYRE_DEPENDENCIES = czmq zeromq host-pkgconf +ZYRE_AUTORECONF = YES +ZYRE_CONF_OPTS = --without-docs + +define ZYRE_CREATE_CONFIG_DIR + mkdir -p $(@D)/config +endef + +ZYRE_POST_PATCH_HOOKS += ZYRE_CREATE_CONFIG_DIR + +$(eval $(autotools-package)) diff --git a/buildroot/support/config-fragments/autobuild/armv5-ctng-linux-gnueabi.config b/buildroot/support/config-fragments/autobuild/armv5-ctng-linux-gnueabi.config new file mode 100644 index 0000000..c2f4cb6 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/armv5-ctng-linux-gnueabi.config @@ -0,0 +1,10 @@ +BR2_arm=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/armv5-ctng-linux-gnueabi.tar.xz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="armv5-ctng-linux-gnueabi" +BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/armv7-ctng-linux-gnueabihf.config b/buildroot/support/config-fragments/autobuild/armv7-ctng-linux-gnueabihf.config new file mode 100644 index 0000000..60ec952 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/armv7-ctng-linux-gnueabihf.config @@ -0,0 +1,13 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_NEON=y +BR2_ARM_ENABLE_VFP=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/armv7-ctng-linux-gnueabihf.tar.xz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="armv7-ctng-linux-gnueabihf" +BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-aarch64-glibc.config b/buildroot/support/config-fragments/autobuild/br-aarch64-glibc.config new file mode 100644 index 0000000..af1cbf8 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-aarch64-glibc.config @@ -0,0 +1,9 @@ +BR2_aarch64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-aarch64-glibc-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arc-full-internal.config b/buildroot/support/config-fragments/autobuild/br-arc-full-internal.config new file mode 100644 index 0000000..4755c9e --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arc-full-internal.config @@ -0,0 +1,3 @@ +BR2_arcle=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arc-internal-glibc.config b/buildroot/support/config-fragments/autobuild/br-arc-internal-glibc.config new file mode 100644 index 0000000..b9d6857 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arc-internal-glibc.config @@ -0,0 +1,4 @@ +BR2_arcle=y +BR2_archs38=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arcle-hs38.config b/buildroot/support/config-fragments/autobuild/br-arcle-hs38.config new file mode 100644 index 0000000..be4f535 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arcle-hs38.config @@ -0,0 +1,11 @@ +BR2_arcle=y +BR2_archs38=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arcle-hs38-full-2017.11-rc2-15-g9d544fe.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_7=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-basic.config b/buildroot/support/config-fragments/autobuild/br-arm-basic.config new file mode 100644 index 0000000..a420284 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-basic.config @@ -0,0 +1,8 @@ +BR2_arm=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-basic-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set diff --git a/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config b/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config new file mode 100644 index 0000000..fea1564 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config @@ -0,0 +1,11 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_VFP=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-glibc-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_7=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-musl.config b/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-musl.config new file mode 100644 index 0000000..2db2aa0 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-musl.config @@ -0,0 +1,11 @@ +BR2_arm=y +BR2_cortex_a9=y +BR2_ARM_ENABLE_VFP=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-musl-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-cortex-m4-full.config b/buildroot/support/config-fragments/autobuild/br-arm-cortex-m4-full.config new file mode 100644 index 0000000..f60df91 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-cortex-m4-full.config @@ -0,0 +1,12 @@ +BR2_arm=y +BR2_cortex_m4=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-m4-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-full-nothread.config b/buildroot/support/config-fragments/autobuild/br-arm-full-nothread.config new file mode 100644 index 0000000..33034cf --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-full-nothread.config @@ -0,0 +1,11 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm11-full-nothread-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-full-static.config b/buildroot/support/config-fragments/autobuild/br-arm-full-static.config new file mode 100644 index 0000000..dd0a393 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-full-static.config @@ -0,0 +1,11 @@ +BR2_arm=y +BR2_STATIC_LIBS=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-static-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-full.config b/buildroot/support/config-fragments/autobuild/br-arm-full.config new file mode 100644 index 0000000..659d07c --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-full.config @@ -0,0 +1,10 @@ +BR2_arm=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-internal-full.config b/buildroot/support/config-fragments/autobuild/br-arm-internal-full.config new file mode 100644 index 0000000..b5f1006 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-internal-full.config @@ -0,0 +1,5 @@ +BR2_arm=y +BR2_ARM_EABI=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-internal-glibc.config b/buildroot/support/config-fragments/autobuild/br-arm-internal-glibc.config new file mode 100644 index 0000000..6b2566e --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-internal-glibc.config @@ -0,0 +1,4 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-internal-musl.config b/buildroot/support/config-fragments/autobuild/br-arm-internal-musl.config new file mode 100644 index 0000000..9278862 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-internal-musl.config @@ -0,0 +1,4 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_TOOLCHAIN_BUILDROOT_MUSL=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-bfin-full.config b/buildroot/support/config-fragments/autobuild/br-bfin-full.config new file mode 100644 index 0000000..eeefcef --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-bfin-full.config @@ -0,0 +1,12 @@ +BR2_bfin=y +BR2_bf512=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-bfin-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-i386-pentium-mmx-musl.config b/buildroot/support/config-fragments/autobuild/br-i386-pentium-mmx-musl.config new file mode 100644 index 0000000..b9041a7 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-i386-pentium-mmx-musl.config @@ -0,0 +1,10 @@ +BR2_x86_pentium_mmx=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-i386-pentium-mmx-musl-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_SSP is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-i386-pentium4-full.config b/buildroot/support/config-fragments/autobuild/br-i386-pentium4-full.config new file mode 100644 index 0000000..08eb21b --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-i386-pentium4-full.config @@ -0,0 +1,10 @@ +BR2_x86_pentium4=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-i386-pentium4-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-m68k-5208-full.config b/buildroot/support/config-fragments/autobuild/br-m68k-5208-full.config new file mode 100644 index 0000000..bf455e0 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-m68k-5208-full.config @@ -0,0 +1,11 @@ +BR2_m68k=y +BR2_m68k_cf5208=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-m68k-5208-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-m68k-68040-full.config b/buildroot/support/config-fragments/autobuild/br-m68k-68040-full.config new file mode 100644 index 0000000..0766ffc --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-m68k-68040-full.config @@ -0,0 +1,10 @@ +BR2_m68k=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-m68k-68040-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-microblazeel-full-internal.config b/buildroot/support/config-fragments/autobuild/br-microblazeel-full-internal.config new file mode 100644 index 0000000..0d2d7df --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-microblazeel-full-internal.config @@ -0,0 +1 @@ +BR2_microblazeel=y diff --git a/buildroot/support/config-fragments/autobuild/br-microblazeel-full.config b/buildroot/support/config-fragments/autobuild/br-microblazeel-full.config new file mode 100644 index 0000000..ea920f0 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-microblazeel-full.config @@ -0,0 +1,10 @@ +BR2_microblazeel=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-microblaze-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-mips32r6-el-hf-glibc.config b/buildroot/support/config-fragments/autobuild/br-mips32r6-el-hf-glibc.config new file mode 100644 index 0000000..237265b --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-mips32r6-el-hf-glibc.config @@ -0,0 +1,11 @@ +BR2_mipsel=y +BR2_mips_32r6=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips32r6-el-hf-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-mips64-n64-full.config b/buildroot/support/config-fragments/autobuild/br-mips64-n64-full.config new file mode 100644 index 0000000..f8a67f2 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-mips64-n64-full.config @@ -0,0 +1,10 @@ +BR2_mips64el=y +BR2_MIPS_NABI64=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips64-n64-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_5=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config b/buildroot/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config new file mode 100644 index 0000000..b0e9236 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config @@ -0,0 +1,12 @@ +BR2_mips64el=y +BR2_mips_64r6=y +BR2_MIPS_NABI64=y +# BR2_MIPS_SOFT_FLOAT is not set +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips64r6-n64-el-hf-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-mipsel-o32-full.config b/buildroot/support/config-fragments/autobuild/br-mipsel-o32-full.config new file mode 100644 index 0000000..e608b42 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-mipsel-o32-full.config @@ -0,0 +1,10 @@ +BR2_mipsel=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mipsel-o32-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-nios2-glibc.config b/buildroot/support/config-fragments/autobuild/br-nios2-glibc.config new file mode 100644 index 0000000..52b9f7f --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-nios2-glibc.config @@ -0,0 +1,10 @@ +BR2_nios2=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-nios2-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_SSP is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-openrisc-uclibc.config b/buildroot/support/config-fragments/autobuild/br-openrisc-uclibc.config new file mode 100644 index 0000000..3a4f0b6 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-openrisc-uclibc.config @@ -0,0 +1,10 @@ +BR2_or1k=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-openrisc-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_5=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config b/buildroot/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config new file mode 100644 index 0000000..63cffef --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config @@ -0,0 +1,10 @@ +BR2_powerpc=y +BR2_powerpc_603e=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-powerpc-603e-basic-cpp-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-powerpc-e500mc-full.config b/buildroot/support/config-fragments/autobuild/br-powerpc-e500mc-full.config new file mode 100644 index 0000000..83b4c09 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-powerpc-e500mc-full.config @@ -0,0 +1,11 @@ +BR2_powerpc=y +BR2_powerpc_e500mc=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-powerpc-e500mc-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-powerpc-internal-full.config b/buildroot/support/config-fragments/autobuild/br-powerpc-internal-full.config new file mode 100644 index 0000000..61b3e7a --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-powerpc-internal-full.config @@ -0,0 +1,4 @@ +BR2_powerpc=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_WCHAR=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config b/buildroot/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config new file mode 100644 index 0000000..99ab169 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config @@ -0,0 +1,9 @@ +BR2_powerpc64=y +BR2_powerpc_power7=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-powerpc64-power7-glibc-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-powerpc64le-power8-glibc.config b/buildroot/support/config-fragments/autobuild/br-powerpc64le-power8-glibc.config new file mode 100644 index 0000000..12e3e8f --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-powerpc64le-power8-glibc.config @@ -0,0 +1,9 @@ +BR2_powerpc64le=y +BR2_powerpc_power8=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-powerpc64le-power8-glibc-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-sh4-full.config b/buildroot/support/config-fragments/autobuild/br-sh4-full.config new file mode 100644 index 0000000..884fbc7 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-sh4-full.config @@ -0,0 +1,10 @@ +BR2_sh=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sh4-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-sparc-uclibc.config b/buildroot/support/config-fragments/autobuild/br-sparc-uclibc.config new file mode 100644 index 0000000..19bce35 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-sparc-uclibc.config @@ -0,0 +1,9 @@ +BR2_sparc=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sparc-uclibc-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-sparc64-glibc.config b/buildroot/support/config-fragments/autobuild/br-sparc64-glibc.config new file mode 100644 index 0000000..093de54 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-sparc64-glibc.config @@ -0,0 +1,8 @@ +BR2_sparc64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sparc64-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-x86-64-core2-full.config b/buildroot/support/config-fragments/autobuild/br-x86-64-core2-full.config new file mode 100644 index 0000000..c1ccddb --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-x86-64-core2-full.config @@ -0,0 +1,11 @@ +BR2_x86_64=y +BR2_x86_core2=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-x86-64-core2-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-x86-64-musl.config b/buildroot/support/config-fragments/autobuild/br-x86-64-musl.config new file mode 100644 index 0000000..6ee19ab --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-x86-64-musl.config @@ -0,0 +1,10 @@ +BR2_x86_64=y +BR2_x86_atom=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-x86-64-musl-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-xtensa-full-internal.config b/buildroot/support/config-fragments/autobuild/br-xtensa-full-internal.config new file mode 100644 index 0000000..89e81d4 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-xtensa-full-internal.config @@ -0,0 +1,3 @@ +BR2_xtensa=y +BR2_TOOLCHAIN_BUILDROOT_LOCALE=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-xtensa-full.config b/buildroot/support/config-fragments/autobuild/br-xtensa-full.config new file mode 100644 index 0000000..23e2b8b --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-xtensa-full.config @@ -0,0 +1,9 @@ +BR2_xtensa=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-xtensa-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_GCC_6=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_LOCALE=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/i686-ctng-linux-gnu.config b/buildroot/support/config-fragments/autobuild/i686-ctng-linux-gnu.config new file mode 100644 index 0000000..9a96112 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/i686-ctng-linux-gnu.config @@ -0,0 +1,10 @@ +BR2_x86_i686=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/i686-ctng-linux-gnu.tar.xz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="i686-ctng-linux-gnu" +BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/linaro-aarch64.config b/buildroot/support/config-fragments/autobuild/linaro-aarch64.config new file mode 100644 index 0000000..f65f78a --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/linaro-aarch64.config @@ -0,0 +1,3 @@ +BR2_aarch64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y diff --git a/buildroot/support/config-fragments/autobuild/linaro-arm.config b/buildroot/support/config-fragments/autobuild/linaro-arm.config new file mode 100644 index 0000000..d72e19b --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/linaro-arm.config @@ -0,0 +1,5 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_ARM_EABIHF=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y diff --git a/buildroot/support/config-fragments/autobuild/mips64el-ctng_n32-linux-gnu.config b/buildroot/support/config-fragments/autobuild/mips64el-ctng_n32-linux-gnu.config new file mode 100644 index 0000000..cf33ea2 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/mips64el-ctng_n32-linux-gnu.config @@ -0,0 +1,9 @@ +BR2_mips64el=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mips64el-ctng_n32-linux-gnu.tar.xz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="mips64el-ctng_n32-linux-gnu" +BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/mips64el-ctng_n64-linux-gnu.config b/buildroot/support/config-fragments/autobuild/mips64el-ctng_n64-linux-gnu.config new file mode 100644 index 0000000..942a1b1 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/mips64el-ctng_n64-linux-gnu.config @@ -0,0 +1,11 @@ +BR2_mips64el=y +BR2_MIPS_NABI64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mips64el-ctng_n64-linux-gnu.tar.xz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="mips64el-ctng_n64-linux-gnu" +BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/powerpc-ctng_e500v2-linux-gnuspe.config b/buildroot/support/config-fragments/autobuild/powerpc-ctng_e500v2-linux-gnuspe.config new file mode 100644 index 0000000..e82d3fb --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/powerpc-ctng_e500v2-linux-gnuspe.config @@ -0,0 +1,11 @@ +BR2_powerpc=y +BR2_powerpc_8548=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/powerpc-ctng_e500v2-linux-gnuspe.tar.xz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="powerpc-ctng_e500v2-linux-gnuspe" +BR2_TOOLCHAIN_EXTERNAL_GCC_4_7=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/sourcery-arm-armv4t.config b/buildroot/support/config-fragments/autobuild/sourcery-arm-armv4t.config new file mode 100644 index 0000000..4c0e01f --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/sourcery-arm-armv4t.config @@ -0,0 +1,4 @@ +BR2_arm=y +BR2_arm920t=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y diff --git a/buildroot/support/config-fragments/autobuild/sourcery-arm-thumb2.config b/buildroot/support/config-fragments/autobuild/sourcery-arm-thumb2.config new file mode 100644 index 0000000..e726757 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/sourcery-arm-thumb2.config @@ -0,0 +1,7 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_ARM_EABI=y +BR2_ARM_INSTRUCTIONS_THUMB2=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y +BR2_TARGET_OPTIMIZATION="" diff --git a/buildroot/support/config-fragments/autobuild/sourcery-arm.config b/buildroot/support/config-fragments/autobuild/sourcery-arm.config new file mode 100644 index 0000000..8ade464 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/sourcery-arm.config @@ -0,0 +1,3 @@ +BR2_arm=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y diff --git a/buildroot/support/config-fragments/autobuild/sourcery-mips.config b/buildroot/support/config-fragments/autobuild/sourcery-mips.config new file mode 100644 index 0000000..103e20b --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/sourcery-mips.config @@ -0,0 +1,4 @@ +BR2_mips=y +BR2_mips_32r2=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS=y diff --git a/buildroot/support/config-fragments/autobuild/sourcery-mips64.config b/buildroot/support/config-fragments/autobuild/sourcery-mips64.config new file mode 100644 index 0000000..77e3a85 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/sourcery-mips64.config @@ -0,0 +1,5 @@ +BR2_mips64el=y +BR2_mips_64r2=y +BR2_MIPS_NABI64=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS=y diff --git a/buildroot/support/config-fragments/autobuild/sourcery-nios2.config b/buildroot/support/config-fragments/autobuild/sourcery-nios2.config new file mode 100644 index 0000000..d58407d --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/sourcery-nios2.config @@ -0,0 +1,3 @@ +BR2_nios2=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y diff --git a/buildroot/support/config-fragments/autobuild/sourcery-x86-64.config b/buildroot/support/config-fragments/autobuild/sourcery-x86-64.config new file mode 100644 index 0000000..6c7ad4c --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/sourcery-x86-64.config @@ -0,0 +1,4 @@ +BR2_x86_64=y +BR2_x86_steamroller=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64=y diff --git a/buildroot/support/config-fragments/autobuild/toolchain-configs.csv b/buildroot/support/config-fragments/autobuild/toolchain-configs.csv new file mode 100644 index 0000000..2010113 --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/toolchain-configs.csv @@ -0,0 +1,55 @@ +support/config-fragments/autobuild/armv5-ctng-linux-gnueabi.config,x86 +support/config-fragments/autobuild/armv7-ctng-linux-gnueabihf.config,x86 +support/config-fragments/autobuild/br-aarch64-glibc.config,x86_64 +support/config-fragments/autobuild/br-arc-full-internal.config,any +support/config-fragments/autobuild/br-arc-internal-glibc.config,any +support/config-fragments/autobuild/br-arcle-hs38.config,x86_64 +support/config-fragments/autobuild/br-arm-basic.config,x86_64 +support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config,x86_64 +support/config-fragments/autobuild/br-arm-cortex-a9-musl.config,x86_64 +support/config-fragments/autobuild/br-arm-cortex-m4-full.config,x86_64 +support/config-fragments/autobuild/br-arm-full.config,x86_64 +support/config-fragments/autobuild/br-arm-full-nothread.config,x86_64 +support/config-fragments/autobuild/br-arm-full-static.config,x86_64 +support/config-fragments/autobuild/br-arm-internal-full.config,any +support/config-fragments/autobuild/br-arm-internal-glibc.config,any +support/config-fragments/autobuild/br-arm-internal-musl.config,any +support/config-fragments/autobuild/br-bfin-full.config,x86_64 +support/config-fragments/autobuild/br-i386-pentium4-full.config,x86_64 +support/config-fragments/autobuild/br-i386-pentium-mmx-musl.config,x86_64 +support/config-fragments/autobuild/br-m68k-5208-full.config,x86_64 +support/config-fragments/autobuild/br-m68k-68040-full.config,x86_64 +support/config-fragments/autobuild/br-microblazeel-full.config,x86_64 +support/config-fragments/autobuild/br-microblazeel-full-internal.config,any +support/config-fragments/autobuild/br-mips64-n64-full.config,x86_64 +support/config-fragments/autobuild/br-mips32r6-el-hf-glibc.config,x86_64 +support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config,x86_64 +support/config-fragments/autobuild/br-mipsel-o32-full.config,x86_64 +support/config-fragments/autobuild/br-nios2-glibc.config,x86_64 +support/config-fragments/autobuild/br-openrisc-uclibc.config,x86_64 +support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config,x86_64 +support/config-fragments/autobuild/br-powerpc64le-power8-glibc.config,x86_64 +support/config-fragments/autobuild/br-powerpc64-power7-glibc.config,x86_64 +support/config-fragments/autobuild/br-powerpc-e500mc-full.config,x86_64 +support/config-fragments/autobuild/br-powerpc-internal-full.config,any +support/config-fragments/autobuild/br-sh4-full.config,x86_64 +support/config-fragments/autobuild/br-sparc-uclibc.config,x86_64 +support/config-fragments/autobuild/br-sparc64-glibc.config,x86_64 +support/config-fragments/autobuild/br-x86-64-core2-full.config,x86_64 +support/config-fragments/autobuild/br-x86-64-musl.config,x86_64 +support/config-fragments/autobuild/br-xtensa-full.config,x86_64 +support/config-fragments/autobuild/br-xtensa-full-internal.config,any +support/config-fragments/autobuild/i686-ctng-linux-gnu.config,x86 +support/config-fragments/autobuild/linaro-aarch64.config,x86 +support/config-fragments/autobuild/linaro-arm.config,x86 +support/config-fragments/autobuild/mips64el-ctng_n32-linux-gnu.config,x86 +support/config-fragments/autobuild/mips64el-ctng_n64-linux-gnu.config,x86 +support/config-fragments/autobuild/powerpc-ctng_e500v2-linux-gnuspe.config,x86 +support/config-fragments/autobuild/sourcery-arm-armv4t.config,x86 +support/config-fragments/autobuild/sourcery-arm.config,x86 +support/config-fragments/autobuild/sourcery-arm-thumb2.config,x86 +support/config-fragments/autobuild/sourcery-mips64.config,x86 +support/config-fragments/autobuild/sourcery-mips.config,x86 +support/config-fragments/autobuild/sourcery-nios2.config,x86 +support/config-fragments/autobuild/sourcery-x86-64.config,x86 +support/config-fragments/autobuild/x86_64-ctng_locales-linux-gnu.config,x86 diff --git a/buildroot/support/config-fragments/autobuild/x86_64-ctng_locales-linux-gnu.config b/buildroot/support/config-fragments/autobuild/x86_64-ctng_locales-linux-gnu.config new file mode 100644 index 0000000..435034b --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/x86_64-ctng_locales-linux-gnu.config @@ -0,0 +1,11 @@ +BR2_x86_64=y +BR2_x86_corei7=y +BR2_TOOLCHAIN_EXTERNAL=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y +BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/x86_64-ctng_locales-linux-gnu.tar.xz" +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="x86_64-ctng_locales-linux-gnu" +BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9=y +BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/minimal.config b/buildroot/support/config-fragments/minimal.config new file mode 100644 index 0000000..71344e2 --- /dev/null +++ b/buildroot/support/config-fragments/minimal.config @@ -0,0 +1,8 @@ +# This config fragment disables Buildroot options that are turned on by +# default, in order to arrive at minimal build time. +BR2_INIT_NONE=y +BR2_SYSTEM_BIN_SH_NONE=y +# BR2_PACKAGE_BUSYBOX is not set +# BR2_TARGET_ROOTFS_TAR is not set +BR2_COMPILER_PARANOID_UNSAFE_PATH=y +BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y diff --git a/buildroot/support/dependencies/check-host-asciidoc.sh b/buildroot/support/dependencies/check-host-asciidoc.sh new file mode 100755 index 0000000..fc5fcba --- /dev/null +++ b/buildroot/support/dependencies/check-host-asciidoc.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +candidate="$1" #ignored + +asciidoc=`which asciidoc` +if [ ! -x "$asciidoc" ]; then + # echo nothing: no suitable asciidoc found + exit 1 +fi + +# Output of 'asciidoc --version' examples: +# asciidoc 8.6.7 +version=`$asciidoc --version | cut -d\ -f2` +major=`echo "$version" | cut -d. -f1` +minor=`echo "$version" | cut -d. -f2` +bugfix=`echo "$version" | cut -d. -f3` + +# To generate the manual, we need asciidoc >= 8.6.3 +major_min=8 +minor_min=6 +bugfix_min=3 +if [ $major -gt $major_min ]; then + echo $asciidoc +else + if [ $major -eq $major_min -a $minor -ge $minor_min ]; then + echo $asciidoc + else + if [ $major -eq $major_min -a $minor -eq $minor_min \ + -a $bugfix -ge $bugfix_min ]; then + echo $asciidoc + else + # echo nothing: no suitable asciidoc found + exit 1 + fi + fi +fi diff --git a/buildroot/support/dependencies/check-host-cmake.mk b/buildroot/support/dependencies/check-host-cmake.mk new file mode 100644 index 0000000..4300e6f --- /dev/null +++ b/buildroot/support/dependencies/check-host-cmake.mk @@ -0,0 +1,19 @@ +# Versions before 3.0 are affected by the bug described in +# https://git.busybox.net/buildroot/commit/?id=ef2c1970e4bff3be3992014070392b0e6bc28bd2 +# and fixed in upstream CMake in version 3.0: +# https://cmake.org/gitweb?p=cmake.git;h=e8b8b37ef6fef094940d3384df5a1d421b9fa568 +# +# Set this to either 3.0 or higher, depending on the highest minimum +# version required by any of the packages bundled in Buildroot. If a +# package is bumped or a new one added, and it requires a higher +# version, our cmake infra will catch it and whine. +# +BR2_CMAKE_VERSION_MIN = 3.1 + +BR2_CMAKE_CANDIDATES ?= cmake cmake3 +BR2_CMAKE ?= $(call suitable-host-package,cmake,\ + $(BR2_CMAKE_VERSION_MIN) $(BR2_CMAKE_CANDIDATES)) +ifeq ($(BR2_CMAKE),) +BR2_CMAKE = $(HOST_DIR)/bin/cmake +BR2_CMAKE_HOST_DEPENDENCY = host-cmake +endif diff --git a/buildroot/support/dependencies/check-host-cmake.sh b/buildroot/support/dependencies/check-host-cmake.sh new file mode 100755 index 0000000..fadeae9 --- /dev/null +++ b/buildroot/support/dependencies/check-host-cmake.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +# prevent shift error +[ $# -lt 2 ] && exit 1 + +major_min="${1%.*}" +minor_min="${1#*.}" + +shift + +for candidate; do + + # Try to locate the candidate. Discard it if not located. + cmake=`which "${candidate}" 2>/dev/null` + [ -n "${cmake}" ] || continue + + # Extract version X.Y from versions in the form X.Y or X.Y.Z + # with X, Y and Z numbers with one or more digits each, e.g. + # 3.2 -> 3.2 + # 3.2.3 -> 3.2 + # 3.2.42 -> 3.2 + # 3.10 -> 3.10 + # 3.10.4 -> 3.10 + # 3.10.42 -> 3.10 + # Discard the candidate if no version can be obtained + version="$(${cmake} --version \ + |sed -r -e '/.* ([[:digit:]]+\.[[:digit:]]+).*$/!d;' \ + -e 's//\1/' + )" + [ -n "${version}" ] || continue + + major="${version%.*}" + minor="${version#*.}" + + if [ ${major} -gt ${major_min} ]; then + echo "${cmake}" + exit + elif [ ${major} -eq ${major_min} -a ${minor} -ge ${minor_min} ]; then + echo "${cmake}" + exit + fi +done + +# echo nothing: no suitable cmake found +exit 1 diff --git a/buildroot/support/dependencies/check-host-lzip.mk b/buildroot/support/dependencies/check-host-lzip.mk new file mode 100644 index 0000000..00cdd0a --- /dev/null +++ b/buildroot/support/dependencies/check-host-lzip.mk @@ -0,0 +1,5 @@ +ifeq (,$(call suitable-host-package,lzip,$(LZCAT))) +DEPENDENCIES_HOST_PREREQ += host-lzip +EXTRACTOR_DEPENDENCY_PRECHECKED_EXTENSIONS += .lz +LZCAT = $(HOST_DIR)/bin/lzip -d -c +endif diff --git a/buildroot/support/dependencies/check-host-lzip.sh b/buildroot/support/dependencies/check-host-lzip.sh new file mode 100755 index 0000000..4f8a2ba --- /dev/null +++ b/buildroot/support/dependencies/check-host-lzip.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +candidate="$1" + +lzip=`which $candidate 2>/dev/null` +if [ ! -x "$lzip" ]; then + lzip=`which lzip 2>/dev/null` + if [ ! -x "$lzip" ]; then + # echo nothing: no suitable lzip found + exit 1 + fi +fi + +echo $lzip diff --git a/buildroot/support/dependencies/check-host-tar.mk b/buildroot/support/dependencies/check-host-tar.mk new file mode 100644 index 0000000..ad0b32e --- /dev/null +++ b/buildroot/support/dependencies/check-host-tar.mk @@ -0,0 +1,6 @@ +TAR ?= tar + +ifeq (,$(call suitable-host-package,tar,$(TAR))) +DEPENDENCIES_HOST_PREREQ += host-tar +TAR = $(HOST_DIR)/bin/tar +endif diff --git a/buildroot/support/dependencies/check-host-tar.sh b/buildroot/support/dependencies/check-host-tar.sh new file mode 100755 index 0000000..0857307 --- /dev/null +++ b/buildroot/support/dependencies/check-host-tar.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +candidate="$1" + +tar=`which $candidate` +if [ ! -x "$tar" ]; then + tar=`which tar` + if [ ! -x "$tar" ]; then + # echo nothing: no suitable tar found + exit 1 + fi +fi + +# Output of 'tar --version' examples: +# tar (GNU tar) 1.15.1 +# tar (GNU tar) 1.25 +# bsdtar 2.8.3 - libarchive 2.8.3 +version=`$tar --version | head -n 1 | sed 's/^.*\s\([0-9]\+\.\S\+\).*$/\1/'` +major=`echo "$version" | cut -d. -f1` +minor=`echo "$version" | cut -d. -f2` +bugfix=`echo "$version" | cut -d. -f3` +version_bsd=`$tar --version | grep 'bsdtar'` +if [ ! -z "${version_bsd}" ] ; then + # mark as invalid version - not all command line options are available + major=0 + minor=0 +fi + +# Minimal version = 1.27 (previous versions do not correctly unpack archives +# containing hard-links if the --strip-components option is used or create +# different gnu long link headers for path elements > 100 characters). +major_min=1 +minor_min=27 + +# Maximal version = 1.29 (1.30 changed --numeric-owner output for +# filenames > 100 characters). This is really a fix for a bug in +# earlier tar versions regarding deterministic output so it is +# unlikely to be reverted in later versions. +major_max=1 +minor_max=29 + +if [ $major -lt $major_min -o $major -gt $major_max ]; then + # echo nothing: no suitable tar found + exit 1 +fi + +if [ $major -eq $major_min -a $minor -lt $minor_min ]; then + # echo nothing: no suitable tar found + exit 1 +fi + +if [ $major -eq $major_max -a $minor -gt $minor_max ]; then + # echo nothing: no suitable tar found + exit 1 +fi + +# valid +echo $tar diff --git a/buildroot/support/dependencies/check-host-xzcat.mk b/buildroot/support/dependencies/check-host-xzcat.mk new file mode 100644 index 0000000..9be75c7 --- /dev/null +++ b/buildroot/support/dependencies/check-host-xzcat.mk @@ -0,0 +1,8 @@ +# XZCAT is taken from BR2_XZCAT (defaults to 'xzcat') (see Makefile) +# If it is not present, build our own host-xzcat + +ifeq (,$(call suitable-host-package,xzcat,$(XZCAT))) +DEPENDENCIES_HOST_PREREQ += host-xz +EXTRACTOR_DEPENDENCY_PRECHECKED_EXTENSIONS += .xz .lzma +XZCAT = $(HOST_DIR)/bin/xzcat +endif diff --git a/buildroot/support/dependencies/check-host-xzcat.sh b/buildroot/support/dependencies/check-host-xzcat.sh new file mode 100755 index 0000000..10f1c45 --- /dev/null +++ b/buildroot/support/dependencies/check-host-xzcat.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +candidate="$1" + +xzcat=`which $candidate 2>/dev/null` +if [ ! -x "$xzcat" ]; then + xzcat=`which xzcat 2>/dev/null` + if [ ! -x "$xzcat" ]; then + # echo nothing: no suitable xzcat found + exit 1 + fi +fi + +echo $xzcat diff --git a/buildroot/support/dependencies/dependencies.mk b/buildroot/support/dependencies/dependencies.mk new file mode 100644 index 0000000..3fc2358 --- /dev/null +++ b/buildroot/support/dependencies/dependencies.mk @@ -0,0 +1,39 @@ +################################################################################ +# +# Check buildroot dependencies and bail out if the user's +# system is judged to be lacking.... +# +################################################################################ + +# suitable-host-pkg: calls check-host-$(1).sh shell script. Parameter (2) +# can be the candidate to be checked. If not present, the check-host-$(1).sh +# script should use 'which' to find a candidate. The script should return +# the path to the suitable host tool, or nothing if no suitable tool was found. +define suitable-host-package +$(shell support/dependencies/check-host-$(1).sh $(2)) +endef +# host utilities needs host-tar to extract the source code tarballs, so +# ensure check-host-tar.mk is included before the rest +include support/dependencies/check-host-tar.mk +-include $(sort $(filter-out %-tar.mk,$(wildcard support/dependencies/check-host-*.mk))) + +ifeq ($(BR2_CCACHE),y) +DEPENDENCIES_HOST_PREREQ += host-ccache +endif + +core-dependencies: + @MAKE="$(MAKE)" DL_TOOLS="$(sort $(DL_TOOLS_DEPENDENCIES))" \ + $(TOPDIR)/support/dependencies/dependencies.sh + +$(DEPENDENCIES_HOST_PREREQ): HOSTCC=$(HOSTCC_NOCCACHE) +$(DEPENDENCIES_HOST_PREREQ): HOSTCXX=$(HOSTCXX_NOCCACHE) +$(DEPENDENCIES_HOST_PREREQ): core-dependencies + +dependencies: core-dependencies $(DEPENDENCIES_HOST_PREREQ) + +################################################################################ +# +# Toplevel Makefile options +# +################################################################################ +.PHONY: dependencies core-dependencies diff --git a/buildroot/support/dependencies/dependencies.sh b/buildroot/support/dependencies/dependencies.sh new file mode 100755 index 0000000..c5f29d3 --- /dev/null +++ b/buildroot/support/dependencies/dependencies.sh @@ -0,0 +1,284 @@ +#!/bin/sh +# vi: set sw=4 ts=4: + +export LC_ALL=C + +# Verify that grep works +echo "WORKS" | grep "WORKS" >/dev/null 2>&1 +if test $? != 0 ; then + echo + echo "grep doesn't work" + exit 1 +fi + +# Sanity check for CWD in LD_LIBRARY_PATH +case ":${LD_LIBRARY_PATH:-unset}:" in +(*::*|*:.:*) + echo + echo "You seem to have the current working directory in your" + echo "LD_LIBRARY_PATH environment variable. This doesn't work." + exit 1 + ;; +esac + +# Sanity check for CWD in PATH. Having the current working directory +# in the PATH makes various packages (e.g. toolchain, coreutils...) +# build process break. +# PATH should not contain a newline, otherwise it fails in spectacular +# ways as soon as PATH is referenced in a package rule +# An empty PATH is technically possible, but in practice we would not +# even arrive here if that was the case. +case ":${PATH:-unset}:" in +(*::*|*:.:*) + echo + echo "You seem to have the current working directory in your" + echo "PATH environment variable. This doesn't work." + exit 1 + ;; +(*" +"*) printf "\n" + # Break the '\n' sequence, or a \n is printed (which is not what we want). + printf "Your PATH contains a newline (%sn) character.\n" "\\" + printf "This doesn't work. Fix you PATH.\n" + exit 1 + ;; +esac + +if test -n "$PERL_MM_OPT" ; then + echo + echo "You have PERL_MM_OPT defined because Perl local::lib" + echo "is installed on your system. Please unset this variable" + echo "before starting Buildroot, otherwise the compilation of" + echo "Perl related packages will fail" + exit 1 +fi + +check_prog_host() +{ + prog="$1" + if ! which $prog > /dev/null ; then + echo >&2 + echo "You must install '$prog' on your build machine" >&2 + exit 1 + fi +} + +# Verify that which is installed +check_prog_host "which" +# Verify that sed is installed +check_prog_host "sed" + +# 'file' must be present and must be exactly /usr/bin/file, +# otherwise libtool fails in incomprehensible ways. +check_prog_host "/usr/bin/file" + +# Check make +MAKE=$(which make 2> /dev/null) +if [ -z "$MAKE" ] ; then + echo + echo "You must install 'make' on your build machine"; + exit 1; +fi; +MAKE_VERSION=$($MAKE --version 2>&1 | sed -e 's/^.* \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q') +if [ -z "$MAKE_VERSION" ] ; then + echo + echo "You must install 'make' on your build machine"; + exit 1; +fi; +MAKE_MAJOR=$(echo $MAKE_VERSION | sed -e "s/\..*//g") +MAKE_MINOR=$(echo $MAKE_VERSION | sed -e "s/^$MAKE_MAJOR\.//g" -e "s/\..*//g" -e "s/[a-zA-Z].*//g") +if [ $MAKE_MAJOR -lt 3 ] || [ $MAKE_MAJOR -eq 3 -a $MAKE_MINOR -lt 81 ] ; then + echo + echo "You have make '$MAKE_VERSION' installed. GNU make >=3.81 is required" + exit 1; +fi; + +# Check host gcc +COMPILER=$(which $HOSTCC_NOCCACHE 2> /dev/null) +if [ -z "$COMPILER" ] ; then + COMPILER=$(which cc 2> /dev/null) +fi; +if [ -z "$COMPILER" ] ; then + echo + echo "You must install 'gcc' on your build machine"; + exit 1; +fi; + +COMPILER_VERSION=$($COMPILER -v 2>&1 | sed -n '/^gcc version/p' | + sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q') +if [ -z "$COMPILER_VERSION" ] ; then + echo + echo "You must install 'gcc' on your build machine"; + exit 1; +fi; +COMPILER_MAJOR=$(echo $COMPILER_VERSION | sed -e "s/\..*//g") +COMPILER_MINOR=$(echo $COMPILER_VERSION | sed -e "s/^$COMPILER_MAJOR\.//g" -e "s/\..*//g") +if [ $COMPILER_MAJOR -lt 3 -o $COMPILER_MAJOR -eq 2 -a $COMPILER_MINOR -lt 95 ] ; then + echo + echo "You have gcc '$COMPILER_VERSION' installed. gcc >= 2.95 is required" + exit 1; +fi; + +# check for host CXX +CXXCOMPILER=$(which $HOSTCXX_NOCCACHE 2> /dev/null) +if [ -z "$CXXCOMPILER" ] ; then + CXXCOMPILER=$(which c++ 2> /dev/null) +fi + +if [ -z "$CXXCOMPILER" ] ; then + echo + echo "You may have to install 'g++' on your build machine" +fi +if [ ! -z "$CXXCOMPILER" ] ; then + CXXCOMPILER_VERSION=$($CXXCOMPILER -v 2>&1 | sed -n '/^gcc version/p' | + sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q') + if [ -z "$CXXCOMPILER_VERSION" ] ; then + echo + echo "You may have to install 'g++' on your build machine" + fi +fi + +if [ -n "$CXXCOMPILER_VERSION" ] ; then + CXXCOMPILER_MAJOR=$(echo $CXXCOMPILER_VERSION | sed -e "s/\..*//g") + CXXCOMPILER_MINOR=$(echo $CXXCOMPILER_VERSION | sed -e "s/^$CXXCOMPILER_MAJOR\.//g" -e "s/\..*//g") + if [ $CXXCOMPILER_MAJOR -lt 3 -o $CXXCOMPILER_MAJOR -eq 2 -a $CXXCOMPILER_MINOR -lt 95 ] ; then + echo + echo "You have g++ '$CXXCOMPILER_VERSION' installed. g++ >= 2.95 is required" + exit 1 + fi +fi + +# Check bash +# We only check bash is available, setting SHELL appropriately is done +# in the top-level Makefile, and we mimick the same sequence here +if [ -n "${BASH}" ]; then : +elif [ -x /bin/bash ]; then : +elif [ -z "$( sh -c 'echo $BASH' )" ]; then + echo + echo "You must install 'bash' on your build machine" + exit 1 +fi + +# Check that a few mandatory programs are installed +missing_progs="no" +for prog in patch perl tar wget cpio python unzip rsync bc ${DL_TOOLS} ; do + if ! which $prog > /dev/null ; then + echo "You must install '$prog' on your build machine"; + missing_progs="yes" + if test $prog = "svn" ; then + echo " svn is usually part of the subversion package in your distribution" + elif test $prog = "hg" ; then + echo " hg is usually part of the mercurial package in your distribution" + elif test $prog = "zcat" ; then + echo " zcat is usually part of the gzip package in your distribution" + elif test $prog = "bzcat" ; then + echo " bzcat is usually part of the bzip2 package in your distribution" + fi + fi +done + +if test "${missing_progs}" = "yes" ; then + exit 1 +fi + +if grep ^BR2_NEEDS_HOST_UTF8_LOCALE=y $BR2_CONFIG > /dev/null; then + if ! which locale > /dev/null ; then + echo + echo "You need locale support on your build machine to build a toolchain supporting locales" + exit 1 ; + fi + if ! locale -a | grep -q -i -E 'utf-?8$' ; then + echo + echo "You need at least one UTF8 locale to build a toolchain supporting locales" + exit 1 ; + fi +fi + +if grep -q ^BR2_NEEDS_HOST_JAVA=y $BR2_CONFIG ; then + check_prog_host "java" + JAVA_GCJ=$(java -version 2>&1 | grep gcj) + if [ ! -z "$JAVA_GCJ" ] ; then + echo + echo "$JAVA_GCJ is not sufficient to compile your package selection." + echo "Please install an OpenJDK/IcedTea/Oracle Java." + exit 1 ; + fi +fi + +if grep -q ^BR2_NEEDS_HOST_JAVAC=y $BR2_CONFIG ; then + check_prog_host "javac" +fi + +if grep -q ^BR2_NEEDS_HOST_JAR=y $BR2_CONFIG ; then + check_prog_host "jar" +fi + +if grep -q ^BR2_HOSTARCH_NEEDS_IA32_LIBS=y $BR2_CONFIG ; then + if test ! -f /lib/ld-linux.so.2 ; then + echo + echo "Your Buildroot configuration uses pre-built tools for the x86 architecture," + echo "but your build machine uses the x86-64 architecture without the 32 bits compatibility" + echo "library." + echo "If you're running a Debian/Ubuntu distribution, install the libc6-i386," + echo "lib32stdc++6, and lib32z1 packages (or alternatively libc6:i386," + echo "libstdc++6:i386, and zlib1g:i386)." + echo "If you're running a RedHat/Fedora distribution, install the glibc.i686 and" + echo "zlib.i686 packages." + echo "For other distributions, refer to the documentation on how to install the 32 bits" + echo "compatibility libraries." + exit 1 + fi +fi + +if grep -q ^BR2_HOSTARCH_NEEDS_IA32_COMPILER=y $BR2_CONFIG ; then + if ! echo "int main(void) {}" | gcc -m32 -x c - -o /dev/null 2>/dev/null; then + echo + echo "Your Buildroot configuration needs a compiler capable of building 32 bits binaries." + echo "If you're running a Debian/Ubuntu distribution, install the gcc-multilib package." + echo "For other distributions, refer to their documentation." + exit 1 + fi + + if ! echo "int main(void) {}" | g++ -m32 -x c++ - -o /dev/null 2>/dev/null; then + echo + echo "Your Buildroot configuration needs a compiler capable of building 32 bits binaries." + echo "If you're running a Debian/Ubuntu distribution, install the g++-multilib package." + echo "For other distributions, refer to their documentation." + exit 1 + fi +fi + +# Check that the Perl installation is complete enough for Buildroot. +required_perl_modules="Data::Dumper" # Needed to build host-autoconf +required_perl_modules="$required_perl_modules ExtUtils::MakeMaker" # Used by host-libxml-parser-perl +required_perl_modules="$required_perl_modules Thread::Queue" # Used by host-automake + +if grep -q ^BR2_PACKAGE_MPV=y $BR2_CONFIG ; then + required_perl_modules="$required_perl_modules Math::BigInt" + required_perl_modules="$required_perl_modules Math::BigRat" +fi + +# This variable will keep the modules that are missing in your system. +missing_perl_modules="" + +for pm in $required_perl_modules ; do + if ! perl -e "require $pm" > /dev/null 2>&1 ; then + missing_perl_modules="$missing_perl_modules $pm" + fi +done + +if [ -n "$missing_perl_modules" ] ; then + echo "Your Perl installation is not complete enough; at least the following" + echo "modules are missing:" + echo + for pm in $missing_perl_modules ; do + printf "\t $pm\n" + done + echo + exit 1 +fi + +if ! python -c "import argparse" > /dev/null 2>&1 ; then + echo "Your Python installation is not complete enough: argparse module is missing" + exit 1 +fi diff --git a/buildroot/support/docker/Dockerfile b/buildroot/support/docker/Dockerfile new file mode 100644 index 0000000..ce3fdd9 --- /dev/null +++ b/buildroot/support/docker/Dockerfile @@ -0,0 +1,44 @@ +# This Dockerfile generates the docker image that gets used by Gitlab CI +# To build it (YYYYMMDD.HHMM is the current date and time in UTC): +# sudo docker build -t buildroot/base:YYYYMMDD.HHMM support/docker +# sudo docker push buildroot/base:YYYYMMDD.HHMM + +# We use a specific tag for the base image *and* the corresponding date +# for the repository., so do not forget to update the apt-sources.list +# file that is shipped next to this Dockerfile. +FROM debian:stretch-20171210 + +LABEL maintainer="Buildroot mailing list " \ + vendor="Buildroot" \ +description="Container with everything needed to run Buildroot" + +# Setup environment +ENV DEBIAN_FRONTEND noninteractive + +# This repository can be a bit slow at times. Don't panic... +COPY apt-sources.list /etc/apt/sources.list + +# The container has no package lists, so need to update first +RUN dpkg --add-architecture i386 && \ + apt-get update -y && \ + apt-get install -y --no-install-recommends \ + build-essential cmake libc6:i386 g++-multilib \ + bc ca-certificates file locales rsync \ + cvs bzr git mercurial subversion wget \ + cpio unzip \ + libncurses5-dev \ + python-nose2 python-pexpect qemu-system-arm qemu-system-x86 && \ + apt-get -y autoremove && \ + apt-get -y clean + +# To be able to generate a toolchain with locales, enable one UTF-8 locale +RUN sed -i 's/# \(en_US.UTF-8\)/\1/' /etc/locale.gen && \ + /usr/sbin/locale-gen + +RUN useradd -ms /bin/bash br-user && \ + chown -R br-user:br-user /home/br-user + +USER br-user +WORKDIR /home/br-user +ENV HOME /home/br-user +ENV LC_ALL en_US.UTF-8 diff --git a/buildroot/support/docker/apt-sources.list b/buildroot/support/docker/apt-sources.list new file mode 100644 index 0000000..789fb8f --- /dev/null +++ b/buildroot/support/docker/apt-sources.list @@ -0,0 +1,4 @@ +# Latest just before 20171210T000000Z: +deb [check-valid-until=no] http://snapshot.debian.org/archive/debian/20171209T220346Z/ stretch main +deb [check-valid-until=no] http://snapshot.debian.org/archive/debian/20171209T220346Z/ stretch-updates main +deb [check-valid-until=no] http://snapshot.debian.org/archive/debian-security/20171209T224618Z/ stretch/updates main diff --git a/buildroot/support/download/bzr b/buildroot/support/download/bzr new file mode 100755 index 0000000..75b7b41 --- /dev/null +++ b/buildroot/support/download/bzr @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for bzr, to be called from the download wrapper script +# +# Call it as: +# .../bzr [-q] OUT_FILE REPO_URL REV BASENAME +# +# Environment: +# BZR : the bzr command to call + + +verbose= +while getopts :q OPT; do + case "${OPT}" in + q) verbose=-q;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done +shift $((OPTIND-1)) + +output="${1}" +repo="${2}" +rev="${3}" +basename="${4}" + +shift 4 # Get rid of our options + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_bzr() { + eval ${BZR} "${@}" +} + +# --per-file-timestamps comes with bzr-2.2 (released August 2010), +# so only pass it if bzr is recent enough. We compute versions as: +# major*1000 + minor +bzr_min_version=2002 +bzr_version=$(($(bzr --version | + sed -r -n 's/^Bazaar \(bzr\) ([[:digit:]]+)\.([[:digit:]]+)\..*$/\1*1000+\2/p') + )) + +# If the version is recent enough, we can generate reproducible +# archives; otherwise, we just hope for the best (as it would +# be downloaded from the BR mirror if what we generate here does +# not match the hash we have for it). +if [ ${bzr_version} -ge ${bzr_min_version} ]; then + timestamp_opt="--per-file-timestamps" +fi + +_bzr export ${verbose} --root="'${basename}/'" --format=tgz \ + ${timestamp_opt} - "${@}" "'${repo}'" -r "'${rev}'" \ + >"${output}" diff --git a/buildroot/support/download/check-hash b/buildroot/support/download/check-hash new file mode 100755 index 0000000..fe9c105 --- /dev/null +++ b/buildroot/support/download/check-hash @@ -0,0 +1,111 @@ +#!/usr/bin/env bash +set -e + +# Helper to check a file matches its known hash +# Call it with: +# $1: the path of the file containing all the expected hashes +# $2: the full path to the temporary file that was downloaded, and +# that is to be checked +# $3: the final basename of the file, to which it will be ultimately +# saved as, to be able to match it to the corresponding hashes +# in the .hash file +# +# Exit codes: +# 0: the hash file exists and the file to check matches all its hashes, +# or the hash file does not exist +# 1: unknown command-line option +# 2: the hash file exists and the file to check does not match at least +# one of its hashes +# 3: the hash file exists and there was no hash to check the file against +# 4: the hash file exists and at least one hash type is unknown + +while getopts :q OPT; do + case "${OPT}" in + q) exec >/dev/null;; + \?) exit 1;; + esac +done +shift $((OPTIND-1)) + +h_file="${1}" +file="${2}" +base="${3}" + +# Bail early if no hash to check +if [ -z "${h_file}" ]; then + exit 0 +fi +# Does the hash-file exist? +if [ ! -f "${h_file}" ]; then + printf "WARNING: no hash file for %s\n" "${base}" >&2 + exit 0 +fi + +# Check one hash for a file +# $1: algo hash +# $2: known hash +# $3: file (full path) +check_one_hash() { + _h="${1}" + _known="${2}" + _file="${3}" + + # Note: md5 is supported, but undocumented on purpose. + # Note: sha3 is not supported, since there is currently no implementation + # (the NIST has yet to publish the parameters). + # Note: 'none' means there is explicitly no hash for that file. + case "${_h}" in + none) + return 0 + ;; + md5|sha1) ;; + sha224|sha256|sha384|sha512) ;; + *) # Unknown hash, exit with error + printf "ERROR: unknown hash '%s' for '%s'\n" \ + "${_h}" "${base}" >&2 + exit 4 + ;; + esac + + # Do the hashes match? + _hash=$( ${_h}sum "${_file}" |cut -d ' ' -f 1 ) + if [ "${_hash}" = "${_known}" ]; then + printf "%s: OK (%s: %s)\n" "${base}" "${_h}" "${_hash}" + return 0 + fi + + printf "ERROR: %s has wrong %s hash:\n" "${base}" "${_h}" >&2 + printf "ERROR: expected: %s\n" "${_known}" >&2 + printf "ERROR: got : %s\n" "${_hash}" >&2 + printf "ERROR: Incomplete download, or man-in-the-middle (MITM) attack\n" >&2 + + exit 2 +} + +# Do we know one or more hashes for that file? +nb_checks=0 +while read t h f; do + case "${t}" in + ''|'#'*) + # Skip comments and empty lines + continue + ;; + *) + if [ "${f}" = "${base}" ]; then + check_one_hash "${t}" "${h}" "${file}" + : $((nb_checks++)) + fi + ;; + esac +done <"${h_file}" + +if [ ${nb_checks} -eq 0 ]; then + case " ${BR_NO_CHECK_HASH_FOR} " in + *" ${base} "*) + # File explicitly has no hash + exit 0 + ;; + esac + printf "ERROR: No hash found for %s\n" "${base}" >&2 + exit 3 +fi diff --git a/buildroot/support/download/cp b/buildroot/support/download/cp new file mode 100755 index 0000000..0ee1f3b --- /dev/null +++ b/buildroot/support/download/cp @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for cp, to be called from the download wrapper script +# +# Call it as: +# .../cp [-q] OUT_FILE SRC_FILE +# +# Environment: +# LOCALFILES: the cp command to call + +# 'cp' usually does not print anything on its stdout, whereas the +# other download backends, even if not verbose, at least print some +# progress information. +# Make 'cp' verbose by default, so it behaves a bit like the others. +verbose=-v + +while getopts :q OPT; do + case "${OPT}" in + q) verbose=;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done +shift $((OPTIND-1)) + +output="${1}" +source="${2}" + +shift 2 # Get rid of our options + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_localfiles() { + eval ${LOCALFILES} "${@}" +} + +_localfiles ${verbose} "${@}""'${source}'" "'${output}'" diff --git a/buildroot/support/download/cvs b/buildroot/support/download/cvs new file mode 100755 index 0000000..50050ab --- /dev/null +++ b/buildroot/support/download/cvs @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for cvs, to be called from the download wrapper script +# +# Call it as: +# .../cvs [-q] OUT_FILE CVS_URL REV PKG_NAME BASENAME +# +# Environment: +# CVS : the cvs command to call + +verbose= +while getopts :q OPT; do + case "${OPT}" in + q) verbose=-Q;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done +shift $((OPTIND-1)) + +output="${1}" +repo="${2}" +rev="${3}" +rawname="${4}" +basename="${5}" + +shift 5 # Get rid of our options + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_cvs() { + eval ${CVS} "${@}" +} + +if [[ ${rev} =~ ^[0-9] ]]; then + # Date, because a tag or a branch cannot begin with a number + select="-D" +else + # Tag or branch + select="-r" +fi + +# The absence of an initial : on ${repo} means access method undefined +if [[ ! "${repo}" =~ ^: ]]; then + # defaults to anonymous pserver + repo=":pserver:anonymous@${repo}" +fi + +export TZ=UTC +_cvs ${verbose} -z3 -d"'${repo}'" \ + co "${@}" -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'" + +tar czf "${output}" "${basename}" diff --git a/buildroot/support/download/dl-wrapper b/buildroot/support/download/dl-wrapper new file mode 100755 index 0000000..f944b71 --- /dev/null +++ b/buildroot/support/download/dl-wrapper @@ -0,0 +1,197 @@ +#!/usr/bin/env bash + +# This script is a wrapper to the other download backends. +# Its role is to ensure atomicity when saving downloaded files +# back to BR2_DL_DIR, and not clutter BR2_DL_DIR with partial, +# failed downloads. +# +# Call it with -h to see some help. + +# To avoid cluttering BR2_DL_DIR, we download to a trashable +# location, namely in $(BUILD_DIR). +# Then, we move the downloaded file to a temporary file in the +# same directory as the final output file. +# This allows us to finally atomically rename it to its final +# name. +# If anything goes wrong, we just remove all the temporaries +# created so far. + +# We want to catch any unexpected failure, and exit immediately. +set -e + +main() { + local OPT OPTARG + local backend output hfile recurse quiet + + # Parse our options; anything after '--' is for the backend + while getopts :hb:o:H:rq OPT; do + case "${OPT}" in + h) help; exit 0;; + b) backend="${OPTARG}";; + o) output="${OPTARG}";; + H) hfile="${OPTARG}";; + r) recurse="-r";; + q) quiet="-q";; + :) error "option '%s' expects a mandatory argument\n" "${OPTARG}";; + \?) error "unknown option '%s'\n" "${OPTARG}";; + esac + done + # Forget our options, and keep only those for the backend + shift $((OPTIND-1)) + + if [ -z "${backend}" ]; then + error "no backend specified, use -b\n" + fi + if [ -z "${output}" ]; then + error "no output specified, use -o\n" + fi + + # If the output file already exists and: + # - there's no .hash file: do not download it again and exit promptly + # - matches all its hashes: do not download it again and exit promptly + # - fails at least one of its hashes: force a re-download + # - there's no hash (but a .hash file): consider it a hard error + if [ -e "${output}" ]; then + if support/download/check-hash ${quiet} "${hfile}" "${output}" "${output##*/}"; then + exit 0 + elif [ ${?} -ne 2 ]; then + # Do not remove the file, otherwise it might get re-downloaded + # from a later location (i.e. primary -> upstream -> mirror). + # Do not print a message, check-hash already did. + exit 1 + fi + rm -f "${output}" + warn "Re-downloading '%s'...\n" "${output##*/}" + fi + + # tmpd is a temporary directory in which backends may store intermediate + # by-products of the download. + # tmpf is the file in which the backends should put the downloaded content. + # tmpd is located in $(BUILD_DIR), so as not to clutter the (precious) + # $(BR2_DL_DIR) + # We let the backends create tmpf, so they are able to set whatever + # permission bits they want (although we're only really interested in + # the executable bit.) + tmpd="$(mktemp -d "${BUILD_DIR}/.${output##*/}.XXXXXX")" + tmpf="${tmpd}/output" + + # Helpers expect to run in a directory that is *really* trashable, so + # they are free to create whatever files and/or sub-dirs they might need. + # Doing the 'cd' here rather than in all backends is easier. + cd "${tmpd}" + + # If the backend fails, we can just remove the temporary directory to + # remove all the cruft it may have left behind. Then we just exit in + # error too. + if ! "${OLDPWD}/support/download/${backend}" ${quiet} ${recurse} "${tmpf}" "${@}"; then + rm -rf "${tmpd}" + exit 1 + fi + + # cd back to free the temp-dir, so we can remove it later + cd "${OLDPWD}" + + # Check if the downloaded file is sane, and matches the stored hashes + # for that file + if ! support/download/check-hash ${quiet} "${hfile}" "${tmpf}" "${output##*/}"; then + rm -rf "${tmpd}" + exit 1 + fi + + # tmp_output is in the same directory as the final output, so we can + # later move it atomically. + tmp_output="$(mktemp "${output}.XXXXXX")" + + # 'mktemp' creates files with 'go=-rwx', so the files are not accessible + # to users other than the one doing the download (and root, of course). + # This can be problematic when a shared BR2_DL_DIR is used by different + # users (e.g. on a build server), where all users may write to the shared + # location, since other users would not be allowed to read the files + # another user downloaded. + # So, we restore the 'go' access rights to a more sensible value, while + # still abiding by the current user's umask. We must do that before the + # final 'mv', so just do it now. + # Some backends (cp and scp) may create executable files, so we need to + # carry the executable bit if needed. + [ -x "${tmpf}" ] && new_mode=755 || new_mode=644 + new_mode=$(printf "%04o" $((0${new_mode} & ~0$(umask)))) + chmod ${new_mode} "${tmp_output}" + + # We must *not* unlink tmp_output, otherwise there is a small window + # during which another download process may create the same tmp_output + # name (very, very unlikely; but not impossible.) + # Using 'cp' is not reliable, since 'cp' may unlink the destination file + # if it is unable to open it with O_WRONLY|O_TRUNC; see: + # http://pubs.opengroup.org/onlinepubs/9699919799/utilities/cp.html + # Since the destination filesystem can be anything, it might not support + # O_TRUNC, so 'cp' would unlink it first. + # Use 'cat' and append-redirection '>>' to save to the final location, + # since that is the only way we can be 100% sure of the behaviour. + if ! cat "${tmpf}" >>"${tmp_output}"; then + rm -rf "${tmpd}" "${tmp_output}" + exit 1 + fi + rm -rf "${tmpd}" + + # tmp_output and output are on the same filesystem, so POSIX guarantees + # that 'mv' is atomic, because it then uses rename() that POSIX mandates + # to be atomic, see: + # http://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html + if ! mv -f "${tmp_output}" "${output}"; then + rm -f "${tmp_output}" + exit 1 + fi +} + +help() { + cat <<_EOF_ +NAME + ${my_name} - download wrapper for Buildroot + +SYNOPSIS + ${my_name} [OPTION]... -- [BACKEND OPTION]... + +DESCRIPTION + Wrapper script around different download mechanisms. Ensures that + concurrent downloads do not conflict, that partial downloads are + properly evicted without leaving temporary files, and that access + rights are maintained. + + -h This help text. + + -b BACKEND + Wrap the specified BACKEND. Known backends are: + bzr Bazaar + cp Local files + cvs Concurrent Versions System + git Git + hg Mercurial + scp Secure copy + svn Subversion + wget HTTP download + + -o FILE + Store the downloaded archive in FILE. + + -H FILE + Use FILE to read hashes from, and check them against the downloaded + archive. + + Exit status: + 0 if OK + !0 in case of error + +ENVIRONMENT + + BUILD_DIR + The path to Buildroot's build dir +_EOF_ +} + +trace() { local msg="${1}"; shift; printf "%s: ${msg}" "${my_name}" "${@}"; } +warn() { trace "${@}" >&2; } +errorN() { local ret="${1}"; shift; warn "${@}"; exit ${ret}; } +error() { errorN 1 "${@}"; } + +my_name="${0##*/}" +main "${@}" diff --git a/buildroot/support/download/git b/buildroot/support/download/git new file mode 100755 index 0000000..f590ff6 --- /dev/null +++ b/buildroot/support/download/git @@ -0,0 +1,104 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for git, to be called from the download wrapper script +# +# Call it as: +# .../git [-q] [-r] OUT_FILE REPO_URL CSET BASENAME +# +# -q Be quiet. +# -r Clone and archive sub-modules. +# +# Environment: +# GIT : the git command to call + +verbose= +recurse=0 +while getopts :qr OPT; do + case "${OPT}" in + q) verbose=-q; exec >/dev/null;; + r) recurse=1;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done +shift $((OPTIND-1)) + +output="${1}" +repo="${2}" +cset="${3}" +basename="${4}" + +shift 4 # Get rid of our options + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_git() { + eval ${GIT} "${@}" +} + +# Try a shallow clone, since it is faster than a full clone - but that only +# works if the version is a ref (tag or branch). Before trying to do a shallow +# clone we check if ${cset} is in the list provided by git ls-remote. If not +# we fall back on a full clone. +# +# Messages for the type of clone used are provided to ease debugging in case of +# problems +git_done=0 +if [ -n "$(_git ls-remote "'${repo}'" "'${cset}'" 2>&1)" ]; then + printf "Doing shallow clone\n" + if _git clone ${verbose} "${@}" --depth 1 -b "'${cset}'" "'${repo}'" "'${basename}'"; then + git_done=1 + else + printf "Shallow clone failed, falling back to doing a full clone\n" + fi +fi +if [ ${git_done} -eq 0 ]; then + printf "Doing full clone\n" + _git clone ${verbose} "${@}" "'${repo}'" "'${basename}'" +fi + +pushd "${basename}" >/dev/null + +# Try to get the special refs exposed by some forges (pull-requests for +# github, changes for gerrit...). There is no easy way to know whether +# the cset the user passed us is such a special ref or a tag or a sha1 +# or whatever else. We'll eventually fail at checking out that cset, +# below, if there is an issue anyway. Since most of the cset we're gonna +# have to clone are not such special refs, consign the output to oblivion +# so as not to alarm unsuspecting users, but still trace it as a warning. +if ! _git fetch origin "'${cset}:${cset}'" >/dev/null 2>&1; then + printf "Could not fetch special ref '%s'; assuming it is not special.\n" "${cset}" +fi + +# Checkout the required changeset, so that we can update the required +# submodules. +_git checkout -q "'${cset}'" + +# Get date of commit to generate a reproducible archive. +# %cD is RFC2822, so it's fully qualified, with TZ and all. +date="$( _git log -1 --pretty=format:%cD )" + +# There might be submodules, so fetch them. +if [ ${recurse} -eq 1 ]; then + _git submodule update --init --recursive +fi + +# We do not want the .git dir; we keep other .git files, in case they +# are the only files in their directory. +# The .git dir would generate non reproducible tarballs as it depends on +# the state of the remote server. It also would generate large tarballs +# (gigabytes for some linux trees) when a full clone took place. +rm -rf .git + +popd >/dev/null + +# Generate the archive, sort with the C locale so that it is reproducible +find "${basename}" -not -type d >"${basename}.list" +LC_ALL=C sort <"${basename}.list" >"${basename}.list.sorted" +# Create GNU-format tarballs, since that's the format of the tarballs on +# sources.buildroot.org and used in the *.hash files +tar cf - --numeric-owner --owner=0 --group=0 --mtime="${date}" --format=gnu \ + -T "${basename}.list.sorted" >"${output}.tar" +gzip -6 -n <"${output}.tar" >"${output}" diff --git a/buildroot/support/download/hg b/buildroot/support/download/hg new file mode 100755 index 0000000..3af0169 --- /dev/null +++ b/buildroot/support/download/hg @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for hg, to be called from the download wrapper script +# +# Call it as: +# .../hg [-q] OUT_FILE REPO_URL CSET BASENAME +# +# Environment: +# HG : the hg command to call + +verbose= +while getopts :q OPT; do + case "${OPT}" in + q) verbose=-q;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done +shift $((OPTIND-1)) + +output="${1}" +repo="${2}" +cset="${3}" +basename="${4}" + +shift 4 # Get rid of our options + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_hg() { + eval ${HG} "${@}" +} + +_hg clone ${verbose} "${@}" --noupdate "'${repo}'" "'${basename}'" + +_hg archive ${verbose} --repository "'${basename}'" --type tgz \ + --prefix "'${basename}'" --rev "'${cset}'" \ + - >"${output}" diff --git a/buildroot/support/download/scp b/buildroot/support/download/scp new file mode 100755 index 0000000..825fd41 --- /dev/null +++ b/buildroot/support/download/scp @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for scp, to be called from the download wrapper script +# +# Call it as: +# .../scp [-q] OUT_FILE SRC_URL +# +# Environment: +# SCP : the scp command to call + +verbose= +while getopts :q OPT; do + case "${OPT}" in + q) verbose=-q;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done +shift $((OPTIND-1)) + +output="${1}" +url="${2}" + +shift 2 # Get rid of our options + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_scp() { + eval ${SCP} "${@}" +} + +_scp ${verbose} "${@}" "'${url}'" "'${output}'" diff --git a/buildroot/support/download/svn b/buildroot/support/download/svn new file mode 100755 index 0000000..77abf3d --- /dev/null +++ b/buildroot/support/download/svn @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for svn, to be called from the download wrapper script +# +# Call it as: +# .../svn [-q] OUT_FILE REPO_URL REV BASNAME +# +# Environment: +# SVN : the svn command to call + +verbose= +while getopts :q OPT; do + case "${OPT}" in + q) verbose=-q;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done +shift $((OPTIND-1)) + +output="${1}" +repo="${2}" +rev="${3}" +basename="${4}" + +shift 4 # Get rid of our options + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_svn() { + eval ${SVN} "${@}" +} + +_svn export ${verbose} "${@}" "'${repo}@${rev}'" "'${basename}'" + +tar czf "${output}" "${basename}" diff --git a/buildroot/support/download/wget b/buildroot/support/download/wget new file mode 100755 index 0000000..768de90 --- /dev/null +++ b/buildroot/support/download/wget @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +# We want to catch any unexpected failure, and exit immediately +set -e + +# Download helper for wget, to be called from the download wrapper script +# +# Call it as: +# .../wget [-q] OUT_FILE URL +# +# Environment: +# WGET : the wget command to call + +verbose= +while getopts :q OPT; do + case "${OPT}" in + q) verbose=-q;; + \?) printf "unknown option '%s'\n" "${OPTARG}" >&2; exit 1;; + esac +done +shift $((OPTIND-1)) + +output="${1}" +url="${2}" + +shift 2 # Get rid of our options + +# Caller needs to single-quote its arguments to prevent them from +# being expanded a second time (in case there are spaces in them) +_wget() { + eval ${WGET} "${@}" +} + +_wget ${verbose} "${@}" -O "'${output}'" "'${url}'" diff --git a/buildroot/support/gnuconfig/README.buildroot b/buildroot/support/gnuconfig/README.buildroot new file mode 100644 index 0000000..a71ed93 --- /dev/null +++ b/buildroot/support/gnuconfig/README.buildroot @@ -0,0 +1,27 @@ +--- HOWTO --- +If your package uses config.guess and/or config.sub, then it probably +relies on the autotools as its build system. In this case, you should +use the autotools-package infrastructure, which will take care of updating +the config.guess and/or config.sub files appropriately. See the +Buildroot documentation for details about the autotools-package +infrastructure. + +If for some reason your package does not use the autotools-package +infrastructure, you can request the config.guess and/or config.sub +files of your package to be updated by using: + + $(call CONFIG_UPDATE,directory-of-your-package-sources) + +--- UPDATE --- +GNU config is now managed in git, so to update: + +# git clone git://git.savannah.gnu.org/config.git +# cp config/config.* . +# for p in $(ls patches/*.patch); do patch -p1 < $p; done +# rm -rf config + +Currently no patches are needed, but they may be needed again in the +future. + +The current Buildroot version is based on the Git commit +dafd8e767ec87b90aac62f0fcedd11944c84b50a of the config.git repository. diff --git a/buildroot/support/gnuconfig/config.guess b/buildroot/support/gnuconfig/config.guess new file mode 100755 index 0000000..c4bd827 --- /dev/null +++ b/buildroot/support/gnuconfig/config.guess @@ -0,0 +1,1456 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-05-15' + +# This file 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 3 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, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2016 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = hppa2.0w ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +cat >&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/buildroot/support/gnuconfig/config.sub b/buildroot/support/gnuconfig/config.sub new file mode 100755 index 0000000..6d86a1e --- /dev/null +++ b/buildroot/support/gnuconfig/config.sub @@ -0,0 +1,1815 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-05-10' + +# This file 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 3 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, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2016 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/buildroot/support/kconfig/.gitignore b/buildroot/support/kconfig/.gitignore new file mode 100644 index 0000000..2694c9a --- /dev/null +++ b/buildroot/support/kconfig/.gitignore @@ -0,0 +1,4 @@ +# +# Quilt is being used to handle the patch series +# +.pc diff --git a/buildroot/support/kconfig/Makefile b/buildroot/support/kconfig/Makefile new file mode 100644 index 0000000..af62023 --- /dev/null +++ b/buildroot/support/kconfig/Makefile @@ -0,0 +1,320 @@ +# =========================================================================== +# Kernel configuration targets +# These targets are used from top-level makefile + +PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config \ + localmodconfig localyesconfig + +ifdef KBUILD_KCONFIG +Kconfig := $(KBUILD_KCONFIG) +else +Kconfig := Kconfig +endif + +# We need this, in case the user has it in its environment +unexport CONFIG_ + +xconfig: $(obj)/qconf + $< $(Kconfig) + +gconfig: $(obj)/gconf + $< $(Kconfig) + +menuconfig: $(obj)/mconf + $< $(Kconfig) + +config: $(obj)/conf + $< --oldaskconfig $(Kconfig) + +nconfig: $(obj)/nconf + $< $(Kconfig) + +oldconfig: $(obj)/conf + $< --$@ $(Kconfig) + +silentoldconfig: $(obj)/conf + $(Q)mkdir -p include/generated + $< --$@ $(Kconfig) + +localyesconfig localmodconfig: $(obj)/streamline_config.pl $(obj)/conf + $(Q)mkdir -p include/generated + $(Q)perl $< --$@ $(srctree) $(Kconfig) > .tmp.config + $(Q)if [ -f .config ]; then \ + cmp -s .tmp.config .config || \ + (mv -f .config .config.old.1; \ + mv -f .tmp.config .config; \ + $(obj)/conf --silentoldconfig $(Kconfig); \ + mv -f .config.old.1 .config.old) \ + else \ + mv -f .tmp.config .config; \ + $(obj)/conf --silentoldconfig $(Kconfig); \ + fi + $(Q)rm -f .tmp.config + +# Create new linux.pot file +# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files +update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h + $(Q)echo " GEN config.pot" + $(Q)xgettext --default-domain=linux \ + --add-comments --keyword=_ --keyword=N_ \ + --from-code=UTF-8 \ + --files-from=$(srctree)/scripts/kconfig/POTFILES.in \ + --directory=$(srctree) --directory=$(objtree) \ + --output $(obj)/config.pot + $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot + $(Q)(for i in `ls $(srctree)/arch/*/Kconfig \ + $(srctree)/arch/*/um/Kconfig`; \ + do \ + echo " GEN $$i"; \ + $(obj)/kxgettext $$i \ + >> $(obj)/config.pot; \ + done ) + $(Q)echo " GEN linux.pot" + $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \ + --output $(obj)/linux.pot + $(Q)rm -f $(obj)/config.pot + +PHONY += allnoconfig allyesconfig allmodconfig alldefconfig randconfig + +allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(obj)/conf + $< --$@ $(Kconfig) + +PHONY += listnewconfig olddefconfig oldnoconfig savedefconfig defconfig + +listnewconfig olddefconfig: $(obj)/conf + $< --$@ $(Kconfig) + +# oldnoconfig is an alias of olddefconfig, because people already are dependent +# on its behavior(sets new symbols to their default value but not 'n') with the +# counter-intuitive name. +oldnoconfig: $(obj)/conf + $< --olddefconfig $(Kconfig) + +savedefconfig: $(obj)/conf + $< --$@=defconfig $(Kconfig) + +defconfig: $(obj)/conf +ifeq ($(KBUILD_DEFCONFIG),) + $< --defconfig $(Kconfig) +else + @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'" + $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig) +endif + +%_defconfig: $(obj)/conf + $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig) + +# Help text used by make help +help: + @echo ' config - Update current config utilising a line-oriented program' + @echo ' nconfig - Update current config utilising a ncurses menu based program' + @echo ' menuconfig - Update current config utilising a menu based program' + @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 ' localmodconfig - Update current config disabling modules not loaded' + @echo ' localyesconfig - Update current config converting local mods to core' + @echo ' silentoldconfig - Same as oldconfig, but quietly, additionally update deps' + @echo ' defconfig - New config with default from ARCH supplied defconfig' + @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' + @echo ' allnoconfig - New config where all options are answered with no' + @echo ' allyesconfig - New config where all options are accepted with yes' + @echo ' allmodconfig - New config selecting modules when possible' + @echo ' alldefconfig - New config with all symbols set to default' + @echo ' randconfig - New config with random answer to all options' + @echo ' listnewconfig - List new options' + @echo ' olddefconfig - Same as silentoldconfig but sets new symbols to their default value' + +# lxdialog stuff +check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh + +# Use recursively expanded variables so we do not call gcc unless +# we really need to do so. (Do not call gcc as part of make mrproper) +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) \ + -DLOCALE + +# =========================================================================== +# Shared Makefile for the various kconfig executables: +# conf: Used for defconfig, oldconfig and related targets +# nconf: Used for the nconfig target. +# Utilizes ncurses +# 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 +# gconf: Used for the gconfig target +# Based on GTK which needs to be installed to compile it +# object files used by all kconfig flavours + +lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o +lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o + +conf-objs := conf.o zconf.tab.o +mconf-objs := mconf.o zconf.tab.o $(lxdialog) +nconf-objs := nconf.o zconf.tab.o nconf.gui.o +kxgettext-objs := kxgettext.o zconf.tab.o +qconf-cxxobjs := qconf.o +qconf-objs := zconf.tab.o +gconf-objs := gconf.o zconf.tab.o + +hostprogs-y := conf + +ifeq ($(MAKECMDGOALS),nconf) + hostprogs-y += nconf +endif + +ifeq ($(MAKECMDGOALS),mconf) + hostprogs-y += mconf +endif + +ifeq ($(MAKECMDGOALS),update-po-config) + hostprogs-y += kxgettext +endif + +ifeq ($(MAKECMDGOALS),qconf) + qconf-target := 1 +endif +ifeq ($(MAKECMDGOALS),gconf) + gconf-target := 1 +endif + + +ifeq ($(qconf-target),1) + hostprogs-y += qconf +endif + +ifeq ($(gconf-target),1) + hostprogs-y += gconf +endif + +clean-files := qconf.moc .tmp_qtcheck .tmp_gtkcheck +clean-files += zconf.tab.c zconf.lex.c zconf.hash.c gconf.glade.h +clean-files += mconf qconf gconf nconf +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) $(HOSTLOADLIBES_mconf) + +always := dochecklxdialog + +# Add environment specific flags +HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)) + +# generated files seem to need this to find local include files +HOSTCFLAGS_zconf.lex.o := -I$(src) +HOSTCFLAGS_zconf.tab.o := -I$(src) + +LEX_PREFIX_zconf := zconf +YACC_PREFIX_zconf := zconf + +HOSTLOADLIBES_qconf = $(KC_QT_LIBS) +HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) + +HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0` +HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ + -Wno-missing-prototypes + +HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) + +HOSTLOADLIBES_nconf = $(shell \ + pkg-config --libs menuw panelw ncursesw 2>/dev/null \ + || pkg-config --libs menu panel ncurses 2>/dev/null \ + || echo "-lmenu -lpanel -lncurses" ) +$(obj)/qconf.o: $(obj)/.tmp_qtcheck + +ifeq ($(qconf-target),1) +$(obj)/.tmp_qtcheck: $(src)/Makefile +-include $(obj)/.tmp_qtcheck + +# QT needs some extra effort... +$(obj)/.tmp_qtcheck: + @set -e; echo " CHECK qt"; dir=""; pkg=""; \ + if ! pkg-config --exists QtCore 2> /dev/null; then \ + echo "* Unable to find the QT4 tool qmake. Trying to use QT3"; \ + pkg-config --exists qt 2> /dev/null && pkg=qt; \ + pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \ + if [ -n "$$pkg" ]; then \ + cflags="\$$(shell pkg-config $$pkg --cflags)"; \ + libs="\$$(shell pkg-config $$pkg --libs)"; \ + moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \ + dir="$$(pkg-config $$pkg --variable=prefix)"; \ + else \ + for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \ + if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \ + done; \ + if [ -z "$$dir" ]; then \ + echo >&2 "*"; \ + echo >&2 "* Unable to find any QT installation. Please make sure that"; \ + echo >&2 "* the QT4 or QT3 development package is correctly installed and"; \ + echo >&2 "* either qmake can be found or install pkg-config or set"; \ + echo >&2 "* the QTDIR environment variable to the correct location."; \ + echo >&2 "*"; \ + false; \ + fi; \ + libpath=$$dir/lib; lib=qt; osdir=""; \ + $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \ + osdir=x$$($(HOSTCXX) -print-multi-os-directory); \ + test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \ + test -f $$libpath/libqt-mt.so && lib=qt-mt; \ + cflags="-I$$dir/include"; \ + libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \ + moc="$$dir/bin/moc"; \ + fi; \ + if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \ + echo "*"; \ + echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \ + echo "*"; \ + moc="/usr/bin/moc"; \ + fi; \ + else \ + cflags="\$$(shell pkg-config QtCore QtGui Qt3Support --cflags)"; \ + libs="\$$(shell pkg-config QtCore QtGui Qt3Support --libs)"; \ + moc="\$$(shell pkg-config QtCore --variable=moc_location)"; \ + [ -n "$$moc" ] || moc="\$$(shell pkg-config QtCore --variable=prefix)/bin/moc"; \ + fi; \ + echo "KC_QT_CFLAGS=$$cflags" > $@; \ + echo "KC_QT_LIBS=$$libs" >> $@; \ + echo "KC_QT_MOC=$$moc" >> $@ +endif + +$(obj)/gconf.o: $(obj)/.tmp_gtkcheck + +ifeq ($(gconf-target),1) +-include $(obj)/.tmp_gtkcheck + +# GTK needs some extra effort, too... +$(obj)/.tmp_gtkcheck: + @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \ + if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \ + touch $@; \ + else \ + echo >&2 "*"; \ + echo >&2 "* GTK+ is present but version >= 2.0.0 is required."; \ + echo >&2 "*"; \ + false; \ + fi \ + else \ + echo >&2 "*"; \ + echo >&2 "* Unable to find the GTK+ installation. Please make sure that"; \ + echo >&2 "* the GTK+ 2.0 development package is correctly installed..."; \ + echo >&2 "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \ + echo >&2 "*"; \ + false; \ + fi +endif + +$(obj)/zconf.tab.o: $(obj)/zconf.lex.c $(obj)/zconf.hash.c + +$(obj)/qconf.o: $(obj)/qconf.moc + +$(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck + $(KC_QT_MOC) -i $< -o $@ + +# Extract gconf menu items for I18N support +$(obj)/gconf.glade.h: $(obj)/gconf.glade + $(Q)intltool-extract --type=gettext/glade --srcdir=$(srctree) \ + $(obj)/gconf.glade + diff --git a/buildroot/support/kconfig/Makefile.br b/buildroot/support/kconfig/Makefile.br new file mode 100644 index 0000000..41c5ce1 --- /dev/null +++ b/buildroot/support/kconfig/Makefile.br @@ -0,0 +1,53 @@ +src := . +top_srcdir=../../ +top_builddir=../../ +srctree := . +obj ?= . + +include Makefile +#HOSTCFLAGS+=-Dinline="" -include foo.h +-include $(obj)/.depend +$(obj)/.depend: $(wildcard *.h *.c) + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : + +__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 := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-objs)))) +host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))) + +HOST_EXTRACFLAGS += -I$(obj) -DCONFIG_=\"\" + +$(host-csingle): %: %.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ + +$(host-cmulti): %: $(host-cobjs) $(host-cshlib) + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + +$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) + $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ + +$(obj)/%.o: %.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ + +$(obj)/%.o: $(obj)/%.c + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ + +$(obj)/%.o: %.cc + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ + +$(obj)/%:: $(src)/%_shipped + $(Q)cat $< > $@ + +clean: + $(Q)rm -f $(addprefix $(obj)/,$(clean-files)) +distclean: clean + $(Q)rm -f $(addprefix $(obj)/,$(lxdialog) $(conf-objs) $(mconf-objs) $(kxgettext-objs) \ + $(hostprogs-y) $(qconf-cxxobjs) $(qconf-objs) $(gconf-objs) \ + mconf .depend) + +FORCE: +.PHONY: FORCE clean distclean diff --git a/buildroot/support/kconfig/POTFILES.in b/buildroot/support/kconfig/POTFILES.in new file mode 100644 index 0000000..9674573 --- /dev/null +++ b/buildroot/support/kconfig/POTFILES.in @@ -0,0 +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 diff --git a/buildroot/support/kconfig/README.buildroot b/buildroot/support/kconfig/README.buildroot new file mode 100644 index 0000000..62e3a11 --- /dev/null +++ b/buildroot/support/kconfig/README.buildroot @@ -0,0 +1,20 @@ +This is a copy of the kconfig code in the kernel (currently 3.13-rc5) tweaked +to suit Buildroot. + +To update: + cp -r /usr/src/linux/scripts/kconfig support/kconfig.new + cd support/kconfig.new + cp -a ../kconfig/patches ../kconfig/README.buildroot ../kconfig/.gitignore . + quilt push -a + # Fix any conflict + cd .. + rm -rf kconfig + mv kconfig.new kconfig + +Then verify the toplevel targets work: + config + defconfig + menuconfig + xconfig + gconfig + oldconfig diff --git a/buildroot/support/kconfig/check.sh b/buildroot/support/kconfig/check.sh new file mode 100755 index 0000000..854d9c7 --- /dev/null +++ b/buildroot/support/kconfig/check.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# Needed for systems without gettext +$* -x c -o /dev/null - > /dev/null 2>&1 << EOF +#include +int main() +{ + gettext(""); + return 0; +} +EOF +if [ ! "$?" -eq "0" ]; then + echo -DKBUILD_NO_NLS; +fi + diff --git a/buildroot/support/kconfig/conf.c b/buildroot/support/kconfig/conf.c new file mode 100644 index 0000000..553fc76 --- /dev/null +++ b/buildroot/support/kconfig/conf.c @@ -0,0 +1,717 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +static void conf(struct menu *menu); +static void check_conf(struct menu *menu); +static void xfgets(char *str, int size, FILE *in); + +enum input_mode { + oldaskconfig, + silentoldconfig, + oldconfig, + allnoconfig, + allyesconfig, + allmodconfig, + alldefconfig, + randconfig, + defconfig, + savedefconfig, + listnewconfig, + olddefconfig, +} input_mode = oldaskconfig; + +static int indent = 1; +static int tty_stdio; +static int valid_stdin = 1; +static int sync_kconfig; +static int conf_cnt; +static char line[128]; +static struct menu *rootEntry; + +static void print_help(struct menu *menu) +{ + struct gstr help = str_new(); + + menu_get_ext_help(menu, &help); + + printf("\n%s\n", str_get(&help)); + str_free(&help); +} + +static void strip(char *str) +{ + char *p = str; + int l; + + while ((isspace(*p))) + p++; + l = strlen(p); + if (p != str) + memmove(str, p, l + 1); + if (!l) + return; + p = str + l - 1; + while ((isspace(*p))) + *p-- = 0; +} + +static void check_stdin(void) +{ + if (!valid_stdin) { + printf(_("aborted!\n\n")); + printf(_("Console input/output is redirected. ")); + printf(_("Run 'make oldconfig' to update configuration.\n\n")); + exit(1); + } +} + +static int conf_askvalue(struct symbol *sym, const char *def) +{ + enum symbol_type type = sym_get_type(sym); + + if (!sym_has_value(sym)) + printf(_("(NEW) ")); + + line[0] = '\n'; + line[1] = 0; + + if (!sym_is_changable(sym)) { + printf("%s\n", def); + line[0] = '\n'; + line[1] = 0; + return 0; + } + + switch (input_mode) { + case oldconfig: + case silentoldconfig: + if (sym_has_value(sym)) { + printf("%s\n", def); + return 0; + } + check_stdin(); + /* fall through */ + case oldaskconfig: + fflush(stdout); + xfgets(line, 128, stdin); + if (!tty_stdio) + printf("\n"); + return 1; + default: + break; + } + + switch (type) { + case S_INT: + case S_HEX: + case S_STRING: + printf("%s\n", def); + return 1; + default: + ; + } + printf("%s", line); + return 1; +} + +static int conf_string(struct menu *menu) +{ + struct symbol *sym = menu->sym; + const char *def; + + while (1) { + printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + printf("(%s) ", sym->name); + def = sym_get_string_value(sym); + if (sym_get_string_value(sym)) + printf("[%s] ", def); + if (!conf_askvalue(sym, def)) + return 0; + switch (line[0]) { + case '\n': + break; + case '?': + /* print help */ + if (line[1] == '\n') { + print_help(menu); + def = NULL; + break; + } + /* fall through */ + default: + line[strlen(line)-1] = 0; + def = line; + } + if (def && sym_set_string_value(sym, def)) + return 0; + } +} + +static int conf_sym(struct menu *menu) +{ + struct symbol *sym = menu->sym; + tristate oldval, newval; + + while (1) { + printf("%*s%s ", indent - 1, "", _(menu->prompt->text)); + if (sym->name) + printf("(%s) ", sym->name); + putchar('['); + oldval = sym_get_tristate_value(sym); + switch (oldval) { + case no: + putchar('N'); + break; + case mod: + putchar('M'); + break; + case yes: + putchar('Y'); + break; + } + if (oldval != no && sym_tristate_within_range(sym, no)) + printf("/n"); + if (oldval != mod && sym_tristate_within_range(sym, mod)) + printf("/m"); + if (oldval != yes && sym_tristate_within_range(sym, yes)) + printf("/y"); + if (menu_has_help(menu)) + printf("/?"); + printf("] "); + if (!conf_askvalue(sym, sym_get_string_value(sym))) + return 0; + strip(line); + + switch (line[0]) { + case 'n': + case 'N': + newval = no; + if (!line[1] || !strcmp(&line[1], "o")) + break; + continue; + case 'm': + case 'M': + newval = mod; + if (!line[1]) + break; + continue; + case 'y': + case 'Y': + newval = yes; + if (!line[1] || !strcmp(&line[1], "es")) + break; + continue; + case 0: + newval = oldval; + break; + case '?': + goto help; + default: + continue; + } + if (sym_set_tristate_value(sym, newval)) + return 0; +help: + print_help(menu); + } +} + +static int conf_choice(struct menu *menu) +{ + struct symbol *sym, *def_sym; + struct menu *child; + bool is_new; + + sym = menu->sym; + is_new = !sym_has_value(sym); + if (sym_is_changable(sym)) { + conf_sym(menu); + sym_calc_value(sym); + switch (sym_get_tristate_value(sym)) { + case no: + return 1; + case mod: + return 0; + case yes: + break; + } + } else { + switch (sym_get_tristate_value(sym)) { + case no: + return 1; + case mod: + printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + return 0; + case yes: + break; + } + } + + while (1) { + int cnt, def; + + printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu))); + def_sym = sym_get_choice_value(sym); + cnt = def = 0; + line[0] = 0; + for (child = menu->list; child; child = child->next) { + if (!menu_is_visible(child)) + continue; + if (!child->sym) { + printf("%*c %s\n", indent, '*', _(menu_get_prompt(child))); + continue; + } + cnt++; + if (child->sym == def_sym) { + def = cnt; + printf("%*c", indent, '>'); + } else + printf("%*c", indent, ' '); + 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("\n"); + } + printf(_("%*schoice"), indent - 1, ""); + if (cnt == 1) { + printf("[1]: 1\n"); + goto conf_childs; + } + printf("[1-%d", cnt); + if (menu_has_help(menu)) + printf("?"); + printf("]: "); + switch (input_mode) { + case oldconfig: + case silentoldconfig: + if (!is_new) { + cnt = def; + printf("%d\n", cnt); + break; + } + check_stdin(); + /* fall through */ + case oldaskconfig: + fflush(stdout); + xfgets(line, 128, stdin); + strip(line); + if (line[0] == '?') { + print_help(menu); + continue; + } + if (!line[0]) + cnt = def; + else if (isdigit(line[0])) + cnt = atoi(line); + else + continue; + break; + default: + break; + } + + conf_childs: + for (child = menu->list; child; child = child->next) { + if (!child->sym || !menu_is_visible(child)) + continue; + if (!--cnt) + break; + } + if (!child) + continue; + if (line[0] && line[strlen(line) - 1] == '?') { + print_help(child); + continue; + } + sym_set_choice_value(sym, child->sym); + for (child = child->list; child; child = child->next) { + indent += 2; + conf(child); + indent -= 2; + } + return 1; + } +} + +static void conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + + if (!menu_is_visible(menu)) + return; + + sym = menu->sym; + prop = menu->prompt; + if (prop) { + const char *prompt; + + switch (prop->type) { + case P_MENU: + if ((input_mode == silentoldconfig || + input_mode == listnewconfig || + input_mode == olddefconfig) && + rootEntry != menu) { + check_conf(menu); + return; + } + /* fall through */ + case P_COMMENT: + prompt = menu_get_prompt(menu); + if (prompt) + printf("%*c\n%*c %s\n%*c\n", + indent, '*', + indent, '*', _(prompt), + indent, '*'); + default: + ; + } + } + + if (!sym) + goto conf_childs; + + if (sym_is_choice(sym)) { + conf_choice(menu); + if (sym->curr.tri != mod) + return; + goto conf_childs; + } + + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + conf_string(menu); + break; + default: + conf_sym(menu); + break; + } + +conf_childs: + if (sym) + indent += 2; + for (child = menu->list; child; child = child->next) + conf(child); + if (sym) + indent -= 2; +} + +static void check_conf(struct menu *menu) +{ + struct symbol *sym; + struct menu *child; + + if (!menu_is_visible(menu)) + return; + + sym = menu->sym; + if (sym && !sym_has_value(sym)) { + if (sym_is_changable(sym) || + (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) { + if (input_mode == listnewconfig) { + if (sym->name && !sym_is_choice_value(sym)) { + printf("%s%s\n", CONFIG_, sym->name); + } + } else if (input_mode != olddefconfig) { + if (!conf_cnt++) + printf(_("*\n* Restart config...\n*\n")); + rootEntry = menu_get_parent_menu(menu); + conf(rootEntry); + } + } + } + + for (child = menu->list; child; child = child->next) + check_conf(child); +} + +static struct option long_opts[] = { + {"oldaskconfig", no_argument, NULL, oldaskconfig}, + {"oldconfig", no_argument, NULL, oldconfig}, + {"silentoldconfig", no_argument, NULL, silentoldconfig}, + {"defconfig", optional_argument, NULL, defconfig}, + {"savedefconfig", required_argument, NULL, savedefconfig}, + {"allnoconfig", no_argument, NULL, allnoconfig}, + {"allyesconfig", no_argument, NULL, allyesconfig}, + {"allmodconfig", no_argument, NULL, allmodconfig}, + {"alldefconfig", no_argument, NULL, alldefconfig}, + {"randconfig", no_argument, NULL, randconfig}, + {"listnewconfig", no_argument, NULL, listnewconfig}, + {"olddefconfig", no_argument, NULL, olddefconfig}, + /* + * oldnoconfig is an alias of olddefconfig, because people already + * are dependent on its behavior(sets new symbols to their default + * value but not 'n') with the counter-intuitive name. + */ + {"oldnoconfig", no_argument, NULL, olddefconfig}, + {NULL, 0, NULL, 0} +}; + +static void conf_usage(const char *progname) +{ + + printf("Usage: %s [option] \n", progname); + printf("[option] is _one_ of the following:\n"); + printf(" --listnewconfig List new options\n"); + printf(" --oldaskconfig Start a new configuration using a line-oriented program\n"); + printf(" --oldconfig Update a configuration using a provided .config as base\n"); + printf(" --silentoldconfig Same as oldconfig, but quietly, additionally update deps\n"); + printf(" --olddefconfig Same as silentoldconfig but sets new symbols to their default value\n"); + printf(" --oldnoconfig An alias of olddefconfig\n"); + printf(" --defconfig New config with default defined in \n"); + printf(" --savedefconfig Save the minimal current configuration to \n"); + printf(" --allnoconfig New config where all options are answered with no\n"); + printf(" --allyesconfig New config where all options are answered with yes\n"); + printf(" --allmodconfig New config where all options are answered with mod\n"); + printf(" --alldefconfig New config with all symbols set to default\n"); + printf(" --randconfig New config with random answer to all options\n"); +} + +int main(int ac, char **av) +{ + const char *progname = av[0]; + int opt; + const char *name, *defconfig_file = NULL /* gcc uninit */; + struct stat tmpstat; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + tty_stdio = isatty(0) && isatty(1) && isatty(2); + + while ((opt = getopt_long(ac, av, "", long_opts, NULL)) != -1) { + input_mode = (enum input_mode)opt; + switch (opt) { + case silentoldconfig: + sync_kconfig = 1; + break; + case defconfig: + case savedefconfig: + defconfig_file = optarg; + break; + case randconfig: + { + struct timeval now; + unsigned int seed; + char *seed_env; + + /* + * 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)); + + seed_env = getenv("KCONFIG_SEED"); + if( seed_env && *seed_env ) { + char *endp; + int tmp = (int)strtol(seed_env, &endp, 0); + if (*endp == '\0') { + seed = tmp; + } + } + fprintf( stderr, "KCONFIG_SEED=0x%X\n", seed ); + srand(seed); + break; + } + case oldaskconfig: + case oldconfig: + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case listnewconfig: + case olddefconfig: + break; + case '?': + conf_usage(progname); + exit(1); + break; + } + } + if (ac == optind) { + printf(_("%s: Kconfig file missing\n"), av[0]); + conf_usage(progname); + exit(1); + } + name = av[optind]; + conf_parse(name); + if (sync_kconfig) { + name = conf_get_configname(); + if (stat(name, &tmpstat)) { + fprintf(stderr, _("***\n" + "*** Configuration file \"%s\" not found!\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 defconfig: + if (!defconfig_file) + defconfig_file = conf_get_default_confname(); + if (conf_read(defconfig_file)) { + printf(_("***\n" + "*** Can't find default configuration \"%s\"!\n" + "***\n"), defconfig_file); + exit(1); + } + break; + case savedefconfig: + case silentoldconfig: + case oldaskconfig: + case oldconfig: + case listnewconfig: + case olddefconfig: + conf_read(NULL); + break; + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case randconfig: + name = getenv("KCONFIG_ALLCONFIG"); + if (!name) + break; + if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { + if (conf_read_simple(name, S_DEF_USER)) { + fprintf(stderr, + _("*** Can't read seed configuration \"%s\"!\n"), + name); + exit(1); + } + break; + } + switch (input_mode) { + case allnoconfig: name = "allno.config"; break; + case allyesconfig: name = "allyes.config"; break; + case allmodconfig: name = "allmod.config"; break; + case alldefconfig: name = "alldef.config"; break; + case randconfig: name = "allrandom.config"; break; + default: break; + } + if (conf_read_simple(name, S_DEF_USER) && + conf_read_simple("all.config", S_DEF_USER)) { + fprintf(stderr, + _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), + name); + exit(1); + } + break; + default: + break; + } + + if (sync_kconfig) { + if (conf_get_changed()) { + name = getenv("KCONFIG_NOSILENTUPDATE"); + if (name && *name) { + fprintf(stderr, + _("\n*** The configuration requires explicit update.\n\n")); + return 1; + } + } + valid_stdin = tty_stdio; + } + + switch (input_mode) { + case allnoconfig: + conf_set_all_new_symbols(def_no); + break; + case allyesconfig: + conf_set_all_new_symbols(def_yes); + break; + case allmodconfig: + conf_set_all_new_symbols(def_mod); + break; + case alldefconfig: + conf_set_all_new_symbols(def_default); + break; + case randconfig: + /* Really nothing to do in this loop */ + while (conf_set_all_new_symbols(def_random)) ; + break; + case defconfig: + conf_set_all_new_symbols(def_default); + break; + case savedefconfig: + break; + case oldaskconfig: + rootEntry = &rootmenu; + conf(&rootmenu); + input_mode = silentoldconfig; + /* fall through */ + case oldconfig: + case listnewconfig: + case olddefconfig: + case silentoldconfig: + /* Update until a loop caused no more changes */ + do { + conf_cnt = 0; + check_conf(&rootmenu); + } while (conf_cnt && + (input_mode != listnewconfig && + input_mode != olddefconfig)); + 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 configuration.\n\n")); + exit(1); + } + if (conf_write_autoconf()) { + fprintf(stderr, _("\n*** Error during update of the configuration.\n\n")); + return 1; + } + } else if (input_mode == savedefconfig) { + if (conf_write_defconfig(defconfig_file)) { + fprintf(stderr, _("n*** Error while saving defconfig to: %s\n\n"), + defconfig_file); + return 1; + } + } else if (input_mode != listnewconfig) { + if (conf_write(NULL)) { + fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n")); + exit(1); + } + } + return 0; +} + +/* + * Helper function to facilitate fgets() by Jean Sacren. + */ +void xfgets(char *str, int size, FILE *in) +{ + if (fgets(str, size, in) == NULL) + fprintf(stderr, "\nError in reading or end of file.\n"); +} diff --git a/buildroot/support/kconfig/confdata.c b/buildroot/support/kconfig/confdata.c new file mode 100644 index 0000000..2371fa8 --- /dev/null +++ b/buildroot/support/kconfig/confdata.c @@ -0,0 +1,1272 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +static void conf_warning(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static void conf_message(const char *fmt, ...) + __attribute__ ((format (printf, 1, 2))); + +static const char *conf_filename; +static int conf_lineno, conf_warnings, conf_unsaved; + +const char conf_defname[] = ".defconfig"; + +static void conf_warning(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", conf_filename, conf_lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); + conf_warnings++; +} + +static void conf_default_message_callback(const char *fmt, va_list ap) +{ + printf("#\n# "); + vprintf(fmt, ap); + printf("\n#\n"); +} + +static void (*conf_message_callback) (const char *fmt, va_list ap) = + conf_default_message_callback; +void conf_set_message_callback(void (*fn) (const char *fmt, va_list ap)) +{ + conf_message_callback = fn; +} + +static void conf_message(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + if (conf_message_callback) + conf_message_callback(fmt, ap); +} + +const char *conf_get_configname(void) +{ + char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; +} + +const char *conf_get_autoconfig_name(void) +{ + return getenv("KCONFIG_AUTOCONFIG"); +} + +static char *conf_expand_value(const char *in) +{ + struct symbol *sym; + const char *src; + static char res_value[SYMBOL_MAXLENGTH]; + char *dst, name[SYMBOL_MAXLENGTH]; + + res_value[0] = 0; + dst = name; + while ((src = strchr(in, '$'))) { + strncat(res_value, in, src - in); + src++; + dst = name; + while (isalnum(*src) || *src == '_') + *dst++ = *src++; + *dst = 0; + sym = sym_lookup(name, 0); + sym_calc_value(sym); + strcat(res_value, sym_get_string_value(sym)); + in = src; + } + strcat(res_value, in); + + return res_value; +} + +char *conf_get_default_confname(void) +{ + struct stat buf; + static char fullname[PATH_MAX+1]; + char *env, *name; + + name = conf_expand_value(conf_defname); + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + if (!stat(fullname, &buf)) + return fullname; + } + return name; +} + +static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p) +{ + char *p2; + + switch (sym->type) { + case S_TRISTATE: + if (p[0] == 'm') { + sym->def[def].tri = mod; + sym->flags |= def_flags; + break; + } + /* fall through */ + case S_BOOLEAN: + if (p[0] == 'y') { + sym->def[def].tri = yes; + sym->flags |= def_flags; + break; + } + if (p[0] == 'n') { + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + } + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + case S_OTHER: + if (*p != '"') { + for (p2 = p; *p2 && !isspace(*p2); p2++) + ; + sym->type = S_STRING; + goto done; + } + /* fall through */ + case S_STRING: + if (*p++ != '"') + break; + for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) { + if (*p2 == '"') { + *p2 = 0; + break; + } + memmove(p2, p2 + 1, strlen(p2)); + } + if (!p2) { + if (def != S_DEF_AUTO) + conf_warning("invalid string found"); + return 1; + } + /* fall through */ + case S_INT: + case S_HEX: + done: + if (sym_string_valid(sym, p)) { + sym->def[def].val = strdup(p); + sym->flags |= def_flags; + } else { + if (def != S_DEF_AUTO) + conf_warning("symbol value '%s' invalid for %s", + p, sym->name); + return 1; + } + break; + default: + ; + } + return 0; +} + +#define LINE_GROWTH 16 +static int add_byte(int c, char **lineptr, size_t slen, size_t *n) +{ + char *nline; + size_t new_size = slen + 1; + if (new_size > *n) { + new_size += LINE_GROWTH - 1; + new_size *= 2; + nline = realloc(*lineptr, new_size); + if (!nline) + return -1; + + *lineptr = nline; + *n = new_size; + } + + (*lineptr)[slen] = c; + + return 0; +} + +static ssize_t compat_getline(char **lineptr, size_t *n, FILE *stream) +{ + char *line = *lineptr; + size_t slen = 0; + + for (;;) { + int c = getc(stream); + + switch (c) { + case '\n': + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + /* fall through */ + case EOF: + if (add_byte('\0', &line, slen, n) < 0) + goto e_out; + *lineptr = line; + if (slen == 0) + return -1; + return slen; + default: + if (add_byte(c, &line, slen, n) < 0) + goto e_out; + slen++; + } + } + +e_out: + line[slen-1] = '\0'; + *lineptr = line; + return -1; +} + +int conf_read_simple(const char *name, int def) +{ + FILE *in = NULL; + char *line = NULL; + size_t line_asize = 0; + char *p, *p2; + struct symbol *sym; + int i, def_flags; + + if (name) { + in = zconf_fopen(name); + } else { + struct property *prop; + + name = conf_get_configname(); + in = zconf_fopen(name); + if (in) + goto load; + sym_add_change_count(1); + if (!sym_defconfig_list) { + if (modules_sym) + sym_calc_value(modules_sym); + return 1; + } + + for_all_defaults(sym_defconfig_list, prop) { + if (expr_calc_value(prop->visible.expr) == no || + prop->expr->type != E_SYMBOL) + continue; + name = conf_expand_value(prop->expr->left.sym->name); + in = zconf_fopen(name); + if (in) { + conf_message(_("using defaults found in %s"), + name); + goto load; + } + } + } + if (!in) + return 1; + +load: + conf_filename = name; + conf_lineno = 0; + conf_warnings = 0; + conf_unsaved = 0; + + def_flags = SYMBOL_DEF << def; + for_all_symbols(i, sym) { + sym->flags |= SYMBOL_CHANGED; + sym->flags &= ~(def_flags|SYMBOL_VALID); + if (sym_is_choice(sym)) + sym->flags |= def_flags; + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + if (sym->def[def].val) + free(sym->def[def].val); + /* fall through */ + default: + sym->def[def].val = NULL; + sym->def[def].tri = no; + } + } + + while (compat_getline(&line, &line_asize, in) != -1) { + conf_lineno++; + sym = NULL; + if (line[0] == '#') { + if (memcmp(line + 2, CONFIG_, strlen(CONFIG_))) + continue; + p = strchr(line + 2 + strlen(CONFIG_), ' '); + if (!p) + continue; + *p++ = 0; + if (strncmp(p, "is not set", 10)) + continue; + if (def == S_DEF_USER) { + sym = sym_find(line + 2 + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + 2 + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_BOOLEAN; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + sym->def[def].tri = no; + sym->flags |= def_flags; + break; + default: + ; + } + } else if (memcmp(line, CONFIG_, strlen(CONFIG_)) == 0) { + p = strchr(line + strlen(CONFIG_), '='); + if (!p) + continue; + *p++ = 0; + p2 = strchr(p, '\n'); + if (p2) { + *p2-- = 0; + if (*p2 == '\r') + *p2 = 0; + } + if (def == S_DEF_USER) { + sym = sym_find(line + strlen(CONFIG_)); + if (!sym) { + sym_add_change_count(1); + goto setsym; + } + } else { + sym = sym_lookup(line + strlen(CONFIG_), 0); + if (sym->type == S_UNKNOWN) + sym->type = S_OTHER; + } + if (sym->flags & def_flags) { + conf_warning("override: reassigning to symbol %s", sym->name); + } + if (conf_set_sym_val(sym, def, def_flags, p)) + continue; + } else { + if (line[0] != '\r' && line[0] != '\n') + conf_warning("unexpected data"); + continue; + } +setsym: + if (sym && sym_is_choice_value(sym)) { + struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); + switch (sym->def[def].tri) { + case no: + break; + case mod: + if (cs->def[def].tri == yes) { + conf_warning("%s creates inconsistent choice state", sym->name); + cs->flags &= ~def_flags; + } + break; + case yes: + 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 = EXPR_OR(cs->def[def].tri, sym->def[def].tri); + } + } + free(line); + fclose(in); + + if (modules_sym) + sym_calc_value(modules_sym); + return 0; +} + +int conf_read(const char *name) +{ + struct symbol *sym; + int i; + + sym_set_change_count(0); + + if (conf_read_simple(name, S_DEF_USER)) + return 1; + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO)) + continue; + if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) { + /* check that calculated value agrees with saved value */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym)) + break; + if (!sym_is_choice(sym)) + continue; + /* fall through */ + default: + if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val)) + continue; + break; + } + } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE)) + /* no previous value and not saved */ + continue; + conf_unsaved++; + /* maybe print value in verbose mode... */ + } + + for_all_symbols(i, sym) { + if (sym_has_value(sym) && !sym_is_choice_value(sym)) { + /* Reset values of generates values, so they'll appear + * as new, if they should become visible, but that + * doesn't quite work if the Kconfig and the saved + * configuration disagree. + */ + if (sym->visible == no && !conf_unsaved) + sym->flags &= ~SYMBOL_DEF_USER; + switch (sym->type) { + case S_STRING: + case S_INT: + case S_HEX: + /* Reset a string value if it's out of range */ + if (sym_string_within_range(sym, sym->def[S_DEF_USER].val)) + break; + sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER); + conf_unsaved++; + break; + default: + break; + } + } + } + + sym_add_change_count(conf_warnings || conf_unsaved); + + return 0; +} + +/* + * Kconfig configuration printer + * + * This printer is used when generating the resulting configuration after + * kconfig invocation and `defconfig' files. Unset symbol might be omitted by + * passing a non-NULL argument to the printer. + * + */ +static void +kconfig_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (*value == 'n') { + bool skip_unset = (arg != NULL); + + if (!skip_unset) + fprintf(fp, "# %s%s is not set\n", + CONFIG_, sym->name); + return; + } + break; + default: + break; + } + + fprintf(fp, "%s%s=%s\n", CONFIG_, sym->name, value); +} + +static void +kconfig_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, "#"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } +} + +static struct conf_printer kconfig_printer_cb = +{ + .print_symbol = kconfig_print_symbol, + .print_comment = kconfig_print_comment, +}; + +/* + * Header printer + * + * This printer is used when generating the `include/generated/autoconf.h' file. + */ +static void +header_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: { + const char *suffix = ""; + + switch (*value) { + case 'n': + break; + case 'm': + suffix = "_MODULE"; + /* fall through */ + default: + fprintf(fp, "#define %s%s%s 1\n", + CONFIG_, sym->name, suffix); + } + break; + } + case S_HEX: { + const char *prefix = ""; + + if (value[0] != '0' || (value[1] != 'x' && value[1] != 'X')) + prefix = "0x"; + fprintf(fp, "#define %s%s %s%s\n", + CONFIG_, sym->name, prefix, value); + break; + } + case S_STRING: + case S_INT: + fprintf(fp, "#define %s%s %s\n", + CONFIG_, sym->name, value); + break; + default: + break; + } + +} + +static void +header_print_comment(FILE *fp, const char *value, void *arg) +{ + const char *p = value; + size_t l; + + fprintf(fp, "/*\n"); + for (;;) { + l = strcspn(p, "\n"); + fprintf(fp, " *"); + if (l) { + fprintf(fp, " "); + xfwrite(p, l, 1, fp); + p += l; + } + fprintf(fp, "\n"); + if (*p++ == '\0') + break; + } + fprintf(fp, " */\n"); +} + +static struct conf_printer header_printer_cb = +{ + .print_symbol = header_print_symbol, + .print_comment = header_print_comment, +}; + +/* + * Tristate printer + * + * This printer is used when generating the `include/config/tristate.conf' file. + */ +static void +tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) +{ + + if (sym->type == S_TRISTATE && *value != 'n') + fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); +} + +static struct conf_printer tristate_printer_cb = +{ + .print_symbol = tristate_print_symbol, + .print_comment = kconfig_print_comment, +}; + +static void conf_write_symbol(FILE *fp, struct symbol *sym, + struct conf_printer *printer, void *printer_arg) +{ + const char *str; + + switch (sym->type) { + case S_OTHER: + case S_UNKNOWN: + break; + case S_STRING: + str = sym_get_string_value(sym); + str = sym_escape_string_value(str); + printer->print_symbol(fp, sym, str, printer_arg); + free((void *)str); + break; + default: + str = sym_get_string_value(sym); + printer->print_symbol(fp, sym, str, printer_arg); + } +} + +static void +conf_write_heading(FILE *fp, struct conf_printer *printer, void *printer_arg) +{ + char buf[256]; + + snprintf(buf, sizeof(buf), + "\n" + "Automatically generated file; DO NOT EDIT.\n" + "%s\n", + rootmenu.prompt->text); + + printer->print_comment(fp, buf, printer_arg); +} + +/* + * Write out a minimal config. + * All values that has default values are skipped as this is redundant. + */ +int conf_write_defconfig(const char *filename) +{ + struct symbol *sym; + struct menu *menu; + FILE *out; + + out = fopen(filename, "w"); + if (!out) + return 1; + + sym_clear_all_valid(); + + /* Traverse all menus to find all relevant symbols */ + menu = rootmenu.list; + + while (menu != NULL) + { + sym = menu->sym; + if (sym == NULL) { + if (!menu_is_visible(menu)) + goto next_menu; + } else if (!sym_is_choice(sym)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next_menu; + sym->flags &= ~SYMBOL_WRITE; + /* If we cannot change the symbol - skip */ + if (!sym_is_changable(sym)) + goto next_menu; + /* If symbol equals to default value - skip */ + if (strcmp(sym_get_string_value(sym), sym_get_string_default(sym)) == 0) + goto next_menu; + + /* + * If symbol is a choice value and equals to the + * default for a choice - skip. + * But only if value is bool and equal to "y" and + * choice is not "optional". + * (If choice is "optional" then all values can be "n") + */ + if (sym_is_choice_value(sym)) { + struct symbol *cs; + struct symbol *ds; + + cs = prop_get_symbol(sym_get_choice_prop(sym)); + ds = sym_choice_default(cs); + if (!sym_is_optional(cs) && sym == ds) { + if ((sym->type == S_BOOLEAN) && + sym_get_tristate_value(sym) == yes) + goto next_menu; + } + } + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } +next_menu: + if (menu->list != NULL) { + menu = menu->list; + } + else if (menu->next != NULL) { + menu = menu->next; + } else { + while ((menu = menu->parent)) { + if (menu->next != NULL) { + menu = menu->next; + break; + } + } + } + } + fclose(out); + return 0; +} + +int conf_write(const char *name) +{ + FILE *out; + struct symbol *sym; + struct menu *menu; + const char *basename; + const char *str; + char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; + char *env; + + if (!name) + name = conf_get_configname(); + + dirname[0] = 0; + if (name && name[0]) { + struct stat st; + char *slash; + + if (!stat(name, &st) && S_ISDIR(st.st_mode)) { + strcpy(dirname, name); + strcat(dirname, "/"); + basename = conf_get_configname(); + } else if ((slash = strrchr(name, '/'))) { + int size = slash - name + 1; + memcpy(dirname, name, size); + dirname[size] = 0; + if (slash[1]) + basename = slash + 1; + else + basename = conf_get_configname(); + } else + basename = name; + } else + basename = conf_get_configname(); + + sprintf(newname, "%s%s", dirname, basename); + env = getenv("KCONFIG_OVERWRITECONFIG"); + if (!env || !*env) { + sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid()); + out = fopen(tmpname, "w"); + } else { + *tmpname = 0; + out = fopen(newname, "w"); + } + if (!out) + return 1; + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + if (!conf_get_changed()) + sym_clear_all_valid(); + + menu = rootmenu.list; + while (menu) { + sym = menu->sym; + if (!sym) { + if (!menu_is_visible(menu)) + goto next; + str = menu_get_prompt(menu); + fprintf(out, "\n" + "#\n" + "# %s\n" + "#\n", str); + } else if (!(sym->flags & SYMBOL_CHOICE)) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE)) + goto next; + sym->flags &= ~SYMBOL_WRITE; + + conf_write_symbol(out, sym, &kconfig_printer_cb, NULL); + } + +next: + if (menu->list) { + menu = menu->list; + continue; + } + if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->next) { + menu = menu->next; + break; + } + } + } + fclose(out); + + if (*tmpname) { + strcat(dirname, basename); + strcat(dirname, ".old"); + rename(newname, dirname); + if (rename(tmpname, newname)) + return 1; + } + + conf_message(_("configuration written to %s"), newname); + + sym_set_change_count(0); + + return 0; +} + +static int conf_split_config(void) +{ + const char *name; + char path[PATH_MAX+1]; + char *opwd, *dir, *_name; + char *s, *d, c; + struct symbol *sym; + struct stat sb; + int res, i, fd; + + name = conf_get_autoconfig_name(); + conf_read_simple(name, S_DEF_AUTO); + + opwd = malloc(256); + _name = strdup(name); + if (opwd == NULL || _name == NULL) + return 1; + opwd = getcwd(opwd, 256); + dir = dirname(_name); + if (dir == NULL) { + res = 1; + goto err; + } + if (chdir(dir)) { + res = 1; + goto err; + } + + res = 0; + for_all_symbols(i, sym) { + sym_calc_value(sym); + if ((sym->flags & SYMBOL_AUTO) || !sym->name) + continue; + if (sym->flags & SYMBOL_WRITE) { + if (sym->flags & SYMBOL_DEF_AUTO) { + /* + * symbol has old and new value, + * so compare them... + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == + sym->def[S_DEF_AUTO].tri) + continue; + break; + case S_STRING: + case S_HEX: + case S_INT: + if (!strcmp(sym_get_string_value(sym), + sym->def[S_DEF_AUTO].val)) + continue; + break; + default: + break; + } + } else { + /* + * If there is no old value, only 'no' (unset) + * is allowed as new value. + */ + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + if (sym_get_tristate_value(sym) == no) + continue; + break; + default: + break; + } + } + } else if (!(sym->flags & SYMBOL_DEF_AUTO)) + /* There is neither an old nor a new value. */ + continue; + /* else + * There is an old value, but no new value ('no' (unset) + * isn't saved in auto.conf, so the old value is always + * different from 'no'). + */ + + /* Replace all '_' and append ".h" */ + s = sym->name; + d = path; + while ((c = *s++)) { + c = tolower(c); + *d++ = (c == '_') ? '/' : c; + } + strcpy(d, ".h"); + + /* Assume directory path already exists. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + if (errno != ENOENT) { + res = 1; + break; + } + /* + * Create directory components, + * unless they exist already. + */ + d = path; + while ((d = strchr(d, '/'))) { + *d = 0; + if (stat(path, &sb) && mkdir(path, 0755)) { + res = 1; + goto out; + } + *d++ = '/'; + } + /* Try it again. */ + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd == -1) { + res = 1; + break; + } + } + close(fd); + } +out: + if (chdir(opwd)) + res = 1; +err: + free(opwd); + free(_name); + return res; +} + +int conf_write_autoconf(void) +{ + struct symbol *sym; + const char *name; + FILE *out, *tristate, *out_h; + int i; + char dir[PATH_MAX+1], buf[PATH_MAX+1]; + char *s; + + strcpy(dir, conf_get_configname()); + s = strrchr(dir, '/'); + if (s) + s[1] = 0; + else + dir[0] = 0; + + sym_clear_all_valid(); + + sprintf(buf, "%s.config.cmd", dir); + file_write_dep(buf); + + if (conf_split_config()) + return 1; + + sprintf(buf, "%s.tmpconfig", dir); + out = fopen(buf, "w"); + if (!out) + return 1; + + sprintf(buf, "%s.tmpconfig_tristate", dir); + tristate = fopen(buf, "w"); + if (!tristate) { + fclose(out); + return 1; + } + + sprintf(buf, "%s.tmpconfig.h", dir); + out_h = fopen(buf, "w"); + if (!out_h) { + fclose(out); + fclose(tristate); + return 1; + } + + conf_write_heading(out, &kconfig_printer_cb, NULL); + + conf_write_heading(tristate, &tristate_printer_cb, NULL); + + conf_write_heading(out_h, &header_printer_cb, NULL); + + for_all_symbols(i, sym) { + sym_calc_value(sym); + if (!(sym->flags & SYMBOL_WRITE) || !sym->name) + continue; + + /* write symbol to auto.conf, tristate and header files */ + conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); + + conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); + + conf_write_symbol(out_h, sym, &header_printer_cb, NULL); + } + fclose(out); + fclose(tristate); + fclose(out_h); + + name = getenv("KCONFIG_AUTOHEADER"); + if (!name) + name = "include/generated/autoconf.h"; + sprintf(buf, "%s.tmpconfig.h", dir); + if (rename(buf, name)) + return 1; + name = getenv("KCONFIG_TRISTATE"); + if (!name) + name = "include/config/tristate.conf"; + sprintf(buf, "%s.tmpconfig_tristate", dir); + if (rename(buf, name)) + return 1; + 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. + */ + sprintf(buf, "%s.tmpconfig", dir); + if (rename(buf, name)) + return 1; + + return 0; +} + +static int sym_change_count; +static void (*conf_changed_callback)(void); + +void sym_set_change_count(int count) +{ + int _sym_change_count = sym_change_count; + sym_change_count = count; + if (conf_changed_callback && + (bool)_sym_change_count != (bool)count) + conf_changed_callback(); +} + +void sym_add_change_count(int count) +{ + sym_set_change_count(count + sym_change_count); +} + +bool conf_get_changed(void) +{ + return sym_change_count; +} + +void conf_set_changed_callback(void (*fn)(void)) +{ + conf_changed_callback = fn; +} + +static bool randomize_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + int cnt, def; + + /* + * If choice is mod then we may have more items selected + * and if no then no-one. + * In both cases stop. + */ + if (csym->curr.tri != yes) + return false; + + 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; + } + sym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + sym->flags &= ~SYMBOL_VALID; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID); + + return true; +} + +void set_all_choice_values(struct symbol *csym) +{ + struct property *prop; + struct symbol *sym; + struct expr *e; + + prop = sym_get_choice_prop(csym); + + /* + * Set all non-assinged choice values to no + */ + expr_list_for_each_sym(prop->expr, e, sym) { + if (!sym_has_value(sym)) + sym->def[S_DEF_USER].tri = no; + } + csym->flags |= SYMBOL_DEF_USER; + /* clear VALID to get value calculated */ + csym->flags &= ~(SYMBOL_VALID | SYMBOL_NEED_SET_CHOICE_VALUES); +} + +bool conf_set_all_new_symbols(enum conf_def_mode mode) +{ + struct symbol *sym, *csym; + int i, cnt, pby, pty, ptm; /* pby: probability of boolean = y + * pty: probability of tristate = y + * ptm: probability of tristate = m + */ + + pby = 50; pty = ptm = 33; /* can't go as the default in switch-case + * below, otherwise gcc whines about + * -Wmaybe-uninitialized */ + if (mode == def_random) { + int n, p[3]; + char *env = getenv("KCONFIG_PROBABILITY"); + n = 0; + while( env && *env ) { + char *endp; + int tmp = strtol( env, &endp, 10 ); + if( tmp >= 0 && tmp <= 100 ) { + p[n++] = tmp; + } else { + errno = ERANGE; + perror( "KCONFIG_PROBABILITY" ); + exit( 1 ); + } + env = (*endp == ':') ? endp+1 : endp; + if( n >=3 ) { + break; + } + } + switch( n ) { + case 1: + pby = p[0]; ptm = pby/2; pty = pby-ptm; + break; + case 2: + pty = p[0]; ptm = p[1]; pby = pty + ptm; + break; + case 3: + pby = p[0]; pty = p[1]; ptm = p[2]; + break; + } + + if( pty+ptm > 100 ) { + errno = ERANGE; + perror( "KCONFIG_PROBABILITY" ); + exit( 1 ); + } + } + bool has_changed = false; + + for_all_symbols(i, sym) { + if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) + continue; + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + has_changed = true; + 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 = no; + cnt = rand() % 100; + if (sym->type == S_TRISTATE) { + if (cnt < pty) + sym->def[S_DEF_USER].tri = yes; + else if (cnt < (pty+ptm)) + sym->def[S_DEF_USER].tri = mod; + } else if (cnt < pby) + sym->def[S_DEF_USER].tri = yes; + break; + default: + continue; + } + if (!(sym_is_choice(sym) && mode == def_random)) + sym->flags |= SYMBOL_DEF_USER; + break; + default: + break; + } + + } + + sym_clear_all_valid(); + + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several + * choice symbols in one block. + * In this case we do nothing. + * If curr.tri equals yes then only one symbol can be + * selected in a choice block and we set it to yes, + * and the rest to no. + */ + if (mode != def_random) { + for_all_symbols(i, csym) { + if ((sym_is_choice(csym) && !sym_has_value(csym)) || + sym_is_choice_value(csym)) + csym->flags |= SYMBOL_NEED_SET_CHOICE_VALUES; + } + } + + for_all_symbols(i, csym) { + if (sym_has_value(csym) || !sym_is_choice(csym)) + continue; + + sym_calc_value(csym); + if (mode == def_random) + has_changed = randomize_choice_values(csym); + else { + set_all_choice_values(csym); + has_changed = true; + } + } + + return has_changed; +} diff --git a/buildroot/support/kconfig/expr.c b/buildroot/support/kconfig/expr.c new file mode 100644 index 0000000..d662652 --- /dev/null +++ b/buildroot/support/kconfig/expr.c @@ -0,0 +1,1168 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include + +#include "lkc.h" + +#define DEBUG_EXPR 0 + +struct expr *expr_alloc_symbol(struct symbol *sym) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = E_SYMBOL; + e->left.sym = sym; + return e; +} + +struct expr *expr_alloc_one(enum expr_type type, struct expr *ce) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = type; + e->left.expr = ce; + return e; +} + +struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = type; + e->left.expr = e1; + e->right.expr = e2; + return e; +} + +struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2) +{ + struct expr *e = xcalloc(1, sizeof(*e)); + e->type = type; + e->left.sym = s1; + e->right.sym = s2; + return e; +} + +struct expr *expr_alloc_and(struct expr *e1, struct expr *e2) +{ + if (!e1) + return e2; + return e2 ? expr_alloc_two(E_AND, e1, e2) : e1; +} + +struct expr *expr_alloc_or(struct expr *e1, struct expr *e2) +{ + if (!e1) + return e2; + return e2 ? expr_alloc_two(E_OR, e1, e2) : e1; +} + +struct expr *expr_copy(const struct expr *org) +{ + struct expr *e; + + if (!org) + return NULL; + + e = xmalloc(sizeof(*org)); + memcpy(e, org, sizeof(*org)); + switch (org->type) { + case E_SYMBOL: + e->left = org->left; + break; + case E_NOT: + e->left.expr = expr_copy(org->left.expr); + break; + case E_EQUAL: + case E_UNEQUAL: + e->left.sym = org->left.sym; + e->right.sym = org->right.sym; + break; + case E_AND: + case E_OR: + case E_LIST: + e->left.expr = expr_copy(org->left.expr); + e->right.expr = expr_copy(org->right.expr); + break; + default: + printf("can't copy type %d\n", e->type); + free(e); + e = NULL; + break; + } + + return e; +} + +void expr_free(struct expr *e) +{ + if (!e) + return; + + switch (e->type) { + case E_SYMBOL: + break; + case E_NOT: + expr_free(e->left.expr); + return; + case E_EQUAL: + case E_UNEQUAL: + break; + case E_OR: + case E_AND: + expr_free(e->left.expr); + expr_free(e->right.expr); + break; + default: + printf("how to free type %d?\n", e->type); + break; + } + free(e); +} + +static int trans_count; + +#define e1 (*ep1) +#define e2 (*ep2) + +static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2) +{ + if (e1->type == type) { + __expr_eliminate_eq(type, &e1->left.expr, &e2); + __expr_eliminate_eq(type, &e1->right.expr, &e2); + return; + } + if (e2->type == type) { + __expr_eliminate_eq(type, &e1, &e2->left.expr); + __expr_eliminate_eq(type, &e1, &e2->right.expr); + return; + } + if (e1->type == E_SYMBOL && e2->type == E_SYMBOL && + e1->left.sym == e2->left.sym && + (e1->left.sym == &symbol_yes || e1->left.sym == &symbol_no)) + return; + if (!expr_eq(e1, e2)) + return; + trans_count++; + expr_free(e1); expr_free(e2); + switch (type) { + case E_OR: + e1 = expr_alloc_symbol(&symbol_no); + e2 = expr_alloc_symbol(&symbol_no); + break; + case E_AND: + e1 = expr_alloc_symbol(&symbol_yes); + e2 = expr_alloc_symbol(&symbol_yes); + break; + default: + ; + } +} + +void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) +{ + if (!e1 || !e2) + return; + switch (e1->type) { + case E_OR: + case E_AND: + __expr_eliminate_eq(e1->type, ep1, ep2); + default: + ; + } + if (e1->type != e2->type) switch (e2->type) { + case E_OR: + case E_AND: + __expr_eliminate_eq(e2->type, ep1, ep2); + default: + ; + } + e1 = expr_eliminate_yn(e1); + e2 = expr_eliminate_yn(e2); +} + +#undef e1 +#undef e2 + +int expr_eq(struct expr *e1, struct expr *e2) +{ + int res, old_count; + + if (e1->type != e2->type) + return 0; + switch (e1->type) { + case E_EQUAL: + case E_UNEQUAL: + return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym; + case E_SYMBOL: + return e1->left.sym == e2->left.sym; + case E_NOT: + return expr_eq(e1->left.expr, e2->left.expr); + case E_AND: + case E_OR: + e1 = expr_copy(e1); + e2 = expr_copy(e2); + old_count = trans_count; + expr_eliminate_eq(&e1, &e2); + res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL && + e1->left.sym == e2->left.sym); + expr_free(e1); + expr_free(e2); + trans_count = old_count; + return res; + case E_LIST: + case E_RANGE: + case E_NONE: + /* panic */; + } + + if (DEBUG_EXPR) { + expr_fprint(e1, stdout); + printf(" = "); + expr_fprint(e2, stdout); + printf(" ?\n"); + } + + return 0; +} + +struct expr *expr_eliminate_yn(struct expr *e) +{ + struct expr *tmp; + + if (e) switch (e->type) { + case E_AND: + e->left.expr = expr_eliminate_yn(e->left.expr); + e->right.expr = expr_eliminate_yn(e->right.expr); + if (e->left.expr->type == E_SYMBOL) { + if (e->left.expr->left.sym == &symbol_no) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + e->right.expr = NULL; + return e; + } else if (e->left.expr->left.sym == &symbol_yes) { + free(e->left.expr); + tmp = e->right.expr; + *e = *(e->right.expr); + free(tmp); + return e; + } + } + if (e->right.expr->type == E_SYMBOL) { + if (e->right.expr->left.sym == &symbol_no) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + e->right.expr = NULL; + return e; + } else if (e->right.expr->left.sym == &symbol_yes) { + free(e->right.expr); + tmp = e->left.expr; + *e = *(e->left.expr); + free(tmp); + return e; + } + } + break; + case E_OR: + e->left.expr = expr_eliminate_yn(e->left.expr); + e->right.expr = expr_eliminate_yn(e->right.expr); + if (e->left.expr->type == E_SYMBOL) { + if (e->left.expr->left.sym == &symbol_no) { + free(e->left.expr); + tmp = e->right.expr; + *e = *(e->right.expr); + free(tmp); + return e; + } else if (e->left.expr->left.sym == &symbol_yes) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + e->right.expr = NULL; + return e; + } + } + if (e->right.expr->type == E_SYMBOL) { + if (e->right.expr->left.sym == &symbol_no) { + free(e->right.expr); + tmp = e->left.expr; + *e = *(e->left.expr); + free(tmp); + return e; + } else if (e->right.expr->left.sym == &symbol_yes) { + expr_free(e->left.expr); + expr_free(e->right.expr); + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + e->right.expr = NULL; + return e; + } + } + break; + default: + ; + } + return e; +} + +/* + * bool FOO!=n => FOO + */ +struct expr *expr_trans_bool(struct expr *e) +{ + if (!e) + return NULL; + switch (e->type) { + case E_AND: + case E_OR: + case E_NOT: + e->left.expr = expr_trans_bool(e->left.expr); + e->right.expr = expr_trans_bool(e->right.expr); + break; + case E_UNEQUAL: + // FOO!=n -> FOO + if (e->left.sym->type == S_TRISTATE) { + if (e->right.sym == &symbol_no) { + e->type = E_SYMBOL; + e->right.sym = NULL; + } + } + break; + default: + ; + } + return e; +} + +/* + * e1 || e2 -> ? + */ +static struct expr *expr_join_or(struct expr *e1, struct expr *e2) +{ + struct expr *tmp; + struct symbol *sym1, *sym2; + + if (expr_eq(e1, e2)) + return expr_copy(e1); + if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) + return NULL; + if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) + return NULL; + if (e1->type == E_NOT) { + tmp = e1->left.expr; + if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL) + return NULL; + sym1 = tmp->left.sym; + } else + sym1 = e1->left.sym; + if (e2->type == E_NOT) { + if (e2->left.expr->type != E_SYMBOL) + return NULL; + sym2 = e2->left.expr->left.sym; + } else + sym2 = e2->left.sym; + if (sym1 != sym2) + return NULL; + if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE) + return NULL; + if (sym1->type == S_TRISTATE) { + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || + (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) { + // (a='y') || (a='m') -> (a!='n') + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no); + } + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) { + // (a='y') || (a='n') -> (a!='m') + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod); + } + if (e1->type == E_EQUAL && e2->type == E_EQUAL && + ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) { + // (a='m') || (a='n') -> (a!='y') + return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes); + } + } + if (sym1->type == S_BOOLEAN && sym1 == sym2) { + if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) || + (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL)) + return expr_alloc_symbol(&symbol_yes); + } + + if (DEBUG_EXPR) { + printf("optimize ("); + expr_fprint(e1, stdout); + printf(") || ("); + expr_fprint(e2, stdout); + printf(")?\n"); + } + return NULL; +} + +static struct expr *expr_join_and(struct expr *e1, struct expr *e2) +{ + struct expr *tmp; + struct symbol *sym1, *sym2; + + if (expr_eq(e1, e2)) + return expr_copy(e1); + if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT) + return NULL; + if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT) + return NULL; + if (e1->type == E_NOT) { + tmp = e1->left.expr; + if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL) + return NULL; + sym1 = tmp->left.sym; + } else + sym1 = e1->left.sym; + if (e2->type == E_NOT) { + if (e2->left.expr->type != E_SYMBOL) + return NULL; + sym2 = e2->left.expr->left.sym; + } else + sym2 = e2->left.sym; + if (sym1 != sym2) + return NULL; + if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE) + return NULL; + + if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) || + (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes)) + // (a) && (a='y') -> (a='y') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no)) + // (a) && (a!='n') -> (a) + return expr_alloc_symbol(sym1); + + if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod)) + // (a) && (a!='m') -> (a='y') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if (sym1->type == S_TRISTATE) { + if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) { + // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' + sym2 = e1->right.sym; + if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) + return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) + : expr_alloc_symbol(&symbol_no); + } + if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) { + // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b' + sym2 = e2->right.sym; + if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST)) + return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2) + : expr_alloc_symbol(&symbol_no); + } + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) + // (a!='y') && (a!='n') -> (a='m') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod); + + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) || + (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) + // (a!='y') && (a!='m') -> (a='n') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_no); + + if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL && + ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) || + (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) + // (a!='m') && (a!='n') -> (a='m') + return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes); + + if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) || + (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) || + (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) || + (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes)) + return NULL; + } + + if (DEBUG_EXPR) { + printf("optimize ("); + expr_fprint(e1, stdout); + printf(") && ("); + expr_fprint(e2, stdout); + printf(")?\n"); + } + return NULL; +} + +static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2) +{ +#define e1 (*ep1) +#define e2 (*ep2) + struct expr *tmp; + + if (e1->type == type) { + expr_eliminate_dups1(type, &e1->left.expr, &e2); + expr_eliminate_dups1(type, &e1->right.expr, &e2); + return; + } + if (e2->type == type) { + expr_eliminate_dups1(type, &e1, &e2->left.expr); + expr_eliminate_dups1(type, &e1, &e2->right.expr); + return; + } + if (e1 == e2) + return; + + switch (e1->type) { + case E_OR: case E_AND: + expr_eliminate_dups1(e1->type, &e1, &e1); + default: + ; + } + + switch (type) { + case E_OR: + tmp = expr_join_or(e1, e2); + if (tmp) { + expr_free(e1); expr_free(e2); + e1 = expr_alloc_symbol(&symbol_no); + e2 = tmp; + trans_count++; + } + break; + case E_AND: + tmp = expr_join_and(e1, e2); + if (tmp) { + expr_free(e1); expr_free(e2); + e1 = expr_alloc_symbol(&symbol_yes); + e2 = tmp; + trans_count++; + } + break; + default: + ; + } +#undef e1 +#undef e2 +} + +static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2) +{ +#define e1 (*ep1) +#define e2 (*ep2) + struct expr *tmp, *tmp1, *tmp2; + + if (e1->type == type) { + expr_eliminate_dups2(type, &e1->left.expr, &e2); + expr_eliminate_dups2(type, &e1->right.expr, &e2); + return; + } + if (e2->type == type) { + expr_eliminate_dups2(type, &e1, &e2->left.expr); + expr_eliminate_dups2(type, &e1, &e2->right.expr); + } + if (e1 == e2) + return; + + switch (e1->type) { + case E_OR: + expr_eliminate_dups2(e1->type, &e1, &e1); + // (FOO || BAR) && (!FOO && !BAR) -> n + tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); + tmp2 = expr_copy(e2); + tmp = expr_extract_eq_and(&tmp1, &tmp2); + if (expr_is_yes(tmp1)) { + expr_free(e1); + e1 = expr_alloc_symbol(&symbol_no); + trans_count++; + } + expr_free(tmp2); + expr_free(tmp1); + expr_free(tmp); + break; + case E_AND: + expr_eliminate_dups2(e1->type, &e1, &e1); + // (FOO && BAR) || (!FOO || !BAR) -> y + tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1))); + tmp2 = expr_copy(e2); + tmp = expr_extract_eq_or(&tmp1, &tmp2); + if (expr_is_no(tmp1)) { + expr_free(e1); + e1 = expr_alloc_symbol(&symbol_yes); + trans_count++; + } + expr_free(tmp2); + expr_free(tmp1); + expr_free(tmp); + break; + default: + ; + } +#undef e1 +#undef e2 +} + +struct expr *expr_eliminate_dups(struct expr *e) +{ + int oldcount; + if (!e) + return e; + + oldcount = trans_count; + while (1) { + trans_count = 0; + switch (e->type) { + case E_OR: case E_AND: + expr_eliminate_dups1(e->type, &e, &e); + expr_eliminate_dups2(e->type, &e, &e); + default: + ; + } + if (!trans_count) + break; + e = expr_eliminate_yn(e); + } + trans_count = oldcount; + return e; +} + +struct expr *expr_transform(struct expr *e) +{ + struct expr *tmp; + + if (!e) + return NULL; + switch (e->type) { + case E_EQUAL: + case E_UNEQUAL: + case E_SYMBOL: + case E_LIST: + break; + default: + e->left.expr = expr_transform(e->left.expr); + e->right.expr = expr_transform(e->right.expr); + } + + switch (e->type) { + case E_EQUAL: + if (e->left.sym->type != S_BOOLEAN) + break; + if (e->right.sym == &symbol_no) { + e->type = E_NOT; + e->left.expr = expr_alloc_symbol(e->left.sym); + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_mod) { + printf("boolean symbol %s tested for 'm'? test forced to 'n'\n", e->left.sym->name); + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_yes) { + e->type = E_SYMBOL; + e->right.sym = NULL; + break; + } + break; + case E_UNEQUAL: + if (e->left.sym->type != S_BOOLEAN) + break; + if (e->right.sym == &symbol_no) { + e->type = E_SYMBOL; + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_mod) { + printf("boolean symbol %s tested for 'm'? test forced to 'y'\n", e->left.sym->name); + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + e->right.sym = NULL; + break; + } + if (e->right.sym == &symbol_yes) { + e->type = E_NOT; + e->left.expr = expr_alloc_symbol(e->left.sym); + e->right.sym = NULL; + break; + } + break; + case E_NOT: + switch (e->left.expr->type) { + case E_NOT: + // !!a -> a + tmp = e->left.expr->left.expr; + free(e->left.expr); + free(e); + e = tmp; + e = expr_transform(e); + break; + case E_EQUAL: + case E_UNEQUAL: + // !a='x' -> a!='x' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL; + break; + case E_OR: + // !(a || b) -> !a && !b + tmp = e->left.expr; + e->type = E_AND; + e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); + tmp->type = E_NOT; + tmp->right.expr = NULL; + e = expr_transform(e); + break; + case E_AND: + // !(a && b) -> !a || !b + tmp = e->left.expr; + e->type = E_OR; + e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr); + tmp->type = E_NOT; + tmp->right.expr = NULL; + e = expr_transform(e); + break; + case E_SYMBOL: + if (e->left.expr->left.sym == &symbol_yes) { + // !'y' -> 'n' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = E_SYMBOL; + e->left.sym = &symbol_no; + break; + } + if (e->left.expr->left.sym == &symbol_mod) { + // !'m' -> 'm' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = E_SYMBOL; + e->left.sym = &symbol_mod; + break; + } + if (e->left.expr->left.sym == &symbol_no) { + // !'n' -> 'y' + tmp = e->left.expr; + free(e); + e = tmp; + e->type = E_SYMBOL; + e->left.sym = &symbol_yes; + break; + } + break; + default: + ; + } + break; + default: + ; + } + return e; +} + +int expr_contains_symbol(struct expr *dep, struct symbol *sym) +{ + if (!dep) + return 0; + + switch (dep->type) { + case E_AND: + case E_OR: + return expr_contains_symbol(dep->left.expr, sym) || + expr_contains_symbol(dep->right.expr, sym); + case E_SYMBOL: + return dep->left.sym == sym; + case E_EQUAL: + case E_UNEQUAL: + return dep->left.sym == sym || + dep->right.sym == sym; + case E_NOT: + return expr_contains_symbol(dep->left.expr, sym); + default: + ; + } + return 0; +} + +bool expr_depends_symbol(struct expr *dep, struct symbol *sym) +{ + if (!dep) + return false; + + switch (dep->type) { + case E_AND: + return expr_depends_symbol(dep->left.expr, sym) || + expr_depends_symbol(dep->right.expr, sym); + case E_SYMBOL: + return dep->left.sym == sym; + case E_EQUAL: + if (dep->left.sym == sym) { + if (dep->right.sym == &symbol_yes || dep->right.sym == &symbol_mod) + return true; + } + break; + case E_UNEQUAL: + if (dep->left.sym == sym) { + if (dep->right.sym == &symbol_no) + return true; + } + break; + default: + ; + } + return false; +} + +struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2) +{ + struct expr *tmp = NULL; + expr_extract_eq(E_AND, &tmp, ep1, ep2); + if (tmp) { + *ep1 = expr_eliminate_yn(*ep1); + *ep2 = expr_eliminate_yn(*ep2); + } + return tmp; +} + +struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2) +{ + struct expr *tmp = NULL; + expr_extract_eq(E_OR, &tmp, ep1, ep2); + if (tmp) { + *ep1 = expr_eliminate_yn(*ep1); + *ep2 = expr_eliminate_yn(*ep2); + } + return tmp; +} + +void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2) +{ +#define e1 (*ep1) +#define e2 (*ep2) + if (e1->type == type) { + expr_extract_eq(type, ep, &e1->left.expr, &e2); + expr_extract_eq(type, ep, &e1->right.expr, &e2); + return; + } + if (e2->type == type) { + expr_extract_eq(type, ep, ep1, &e2->left.expr); + expr_extract_eq(type, ep, ep1, &e2->right.expr); + return; + } + if (expr_eq(e1, e2)) { + *ep = *ep ? expr_alloc_two(type, *ep, e1) : e1; + expr_free(e2); + if (type == E_AND) { + e1 = expr_alloc_symbol(&symbol_yes); + e2 = expr_alloc_symbol(&symbol_yes); + } else if (type == E_OR) { + e1 = expr_alloc_symbol(&symbol_no); + e2 = expr_alloc_symbol(&symbol_no); + } + } +#undef e1 +#undef e2 +} + +struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym) +{ + struct expr *e1, *e2; + + if (!e) { + e = expr_alloc_symbol(sym); + if (type == E_UNEQUAL) + e = expr_alloc_one(E_NOT, e); + return e; + } + switch (e->type) { + case E_AND: + e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); + e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); + if (sym == &symbol_yes) + e = expr_alloc_two(E_AND, e1, e2); + if (sym == &symbol_no) + e = expr_alloc_two(E_OR, e1, e2); + if (type == E_UNEQUAL) + e = expr_alloc_one(E_NOT, e); + return e; + case E_OR: + e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym); + e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym); + if (sym == &symbol_yes) + e = expr_alloc_two(E_OR, e1, e2); + if (sym == &symbol_no) + e = expr_alloc_two(E_AND, e1, e2); + if (type == E_UNEQUAL) + e = expr_alloc_one(E_NOT, e); + return e; + case E_NOT: + return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym); + case E_UNEQUAL: + case E_EQUAL: + if (type == E_EQUAL) { + if (sym == &symbol_yes) + return expr_copy(e); + if (sym == &symbol_mod) + return expr_alloc_symbol(&symbol_no); + if (sym == &symbol_no) + return expr_alloc_one(E_NOT, expr_copy(e)); + } else { + if (sym == &symbol_yes) + return expr_alloc_one(E_NOT, expr_copy(e)); + if (sym == &symbol_mod) + return expr_alloc_symbol(&symbol_yes); + if (sym == &symbol_no) + return expr_copy(e); + } + break; + case E_SYMBOL: + return expr_alloc_comp(type, e->left.sym, sym); + case E_LIST: + case E_RANGE: + case E_NONE: + /* panic */; + } + return NULL; +} + +tristate expr_calc_value(struct expr *e) +{ + tristate val1, val2; + const char *str1, *str2; + + if (!e) + return yes; + + switch (e->type) { + case E_SYMBOL: + sym_calc_value(e->left.sym); + return e->left.sym->curr.tri; + case E_AND: + val1 = expr_calc_value(e->left.expr); + val2 = expr_calc_value(e->right.expr); + return EXPR_AND(val1, val2); + case E_OR: + val1 = expr_calc_value(e->left.expr); + val2 = expr_calc_value(e->right.expr); + return EXPR_OR(val1, val2); + case E_NOT: + val1 = expr_calc_value(e->left.expr); + return EXPR_NOT(val1); + case E_EQUAL: + sym_calc_value(e->left.sym); + sym_calc_value(e->right.sym); + str1 = sym_get_string_value(e->left.sym); + str2 = sym_get_string_value(e->right.sym); + return !strcmp(str1, str2) ? yes : no; + case E_UNEQUAL: + sym_calc_value(e->left.sym); + sym_calc_value(e->right.sym); + str1 = sym_get_string_value(e->left.sym); + str2 = sym_get_string_value(e->right.sym); + return !strcmp(str1, str2) ? no : yes; + default: + printf("expr_calc_value: %d?\n", e->type); + return no; + } +} + +int expr_compare_type(enum expr_type t1, enum expr_type t2) +{ +#if 0 + return 1; +#else + if (t1 == t2) + return 0; + switch (t1) { + case E_EQUAL: + case E_UNEQUAL: + if (t2 == E_NOT) + return 1; + case E_NOT: + if (t2 == E_AND) + return 1; + case E_AND: + if (t2 == E_OR) + return 1; + case E_OR: + if (t2 == E_LIST) + return 1; + case E_LIST: + if (t2 == 0) + return 1; + default: + return -1; + } + printf("[%dgt%d?]", t1, t2); + return 0; +#endif +} + +static inline struct expr * +expr_get_leftmost_symbol(const struct expr *e) +{ + + if (e == NULL) + return NULL; + + while (e->type != E_SYMBOL) + e = e->left.expr; + + return expr_copy(e); +} + +/* + * Given expression `e1' and `e2', returns the leaf of the longest + * sub-expression of `e1' not containing 'e2. + */ +struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2) +{ + struct expr *ret; + + switch (e1->type) { + case E_OR: + return expr_alloc_and( + expr_simplify_unmet_dep(e1->left.expr, e2), + expr_simplify_unmet_dep(e1->right.expr, e2)); + case E_AND: { + struct expr *e; + e = expr_alloc_and(expr_copy(e1), expr_copy(e2)); + e = expr_eliminate_dups(e); + ret = (!expr_eq(e, e1)) ? e1 : NULL; + expr_free(e); + break; + } + default: + ret = e1; + break; + } + + return expr_get_leftmost_symbol(ret); +} + +void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken) +{ + if (!e) { + fn(data, NULL, "y"); + return; + } + + if (expr_compare_type(prevtoken, e->type) > 0) + fn(data, NULL, "("); + switch (e->type) { + case E_SYMBOL: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + break; + case E_NOT: + fn(data, NULL, "!"); + expr_print(e->left.expr, fn, data, E_NOT); + break; + case E_EQUAL: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + fn(data, NULL, "="); + fn(data, e->right.sym, e->right.sym->name); + break; + case E_UNEQUAL: + if (e->left.sym->name) + fn(data, e->left.sym, e->left.sym->name); + else + fn(data, NULL, ""); + fn(data, NULL, "!="); + fn(data, e->right.sym, e->right.sym->name); + break; + case E_OR: + expr_print(e->left.expr, fn, data, E_OR); + fn(data, NULL, " || "); + expr_print(e->right.expr, fn, data, E_OR); + break; + case E_AND: + expr_print(e->left.expr, fn, data, E_AND); + fn(data, NULL, " && "); + expr_print(e->right.expr, fn, data, E_AND); + break; + 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_LIST); + } + break; + case E_RANGE: + fn(data, NULL, "["); + fn(data, e->left.sym, e->left.sym->name); + fn(data, NULL, " "); + fn(data, e->right.sym, e->right.sym->name); + fn(data, NULL, "]"); + break; + default: + { + char buf[32]; + sprintf(buf, "", e->type); + fn(data, NULL, buf); + break; + } + } + if (expr_compare_type(prevtoken, e->type) > 0) + fn(data, NULL, ")"); +} + +static void expr_print_file_helper(void *data, struct symbol *sym, const char *str) +{ + xfwrite(str, strlen(str), 1, data); +} + +void expr_fprint(struct expr *e, FILE *out) +{ + expr_print(e, expr_print_file_helper, out, E_NONE); +} + +static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str) +{ + struct gstr *gs = (struct gstr*)data; + const char *sym_str = NULL; + + if (sym) + sym_str = sym_get_string_value(sym); + + if (gs->max_width) { + unsigned extra_length = strlen(str); + const char *last_cr = strrchr(gs->s, '\n'); + unsigned last_line_length; + + if (sym_str) + extra_length += 4 + strlen(sym_str); + + if (!last_cr) + last_cr = gs->s; + + last_line_length = strlen(gs->s) - (last_cr - gs->s); + + if ((last_line_length + extra_length) > gs->max_width) + str_append(gs, "\\\n"); + } + + str_append(gs, str); + if (sym && sym->type != S_UNKNOWN) + str_printf(gs, " [=%s]", sym_str); +} + +void expr_gstr_print(struct expr *e, struct gstr *gs) +{ + expr_print(e, expr_print_gstr_helper, gs, E_NONE); +} diff --git a/buildroot/support/kconfig/expr.h b/buildroot/support/kconfig/expr.h new file mode 100644 index 0000000..ba663e1 --- /dev/null +++ b/buildroot/support/kconfig/expr.h @@ -0,0 +1,238 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#ifndef EXPR_H +#define EXPR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "list.h" +#ifndef __cplusplus +#include +#endif + +struct file { + struct file *next; + struct file *parent; + const char *name; + int lineno; +}; + +typedef enum tristate { + no, mod, yes +} tristate; + +enum expr_type { + E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_LIST, E_SYMBOL, E_RANGE +}; + +union expr_data { + struct expr *expr; + struct symbol *sym; +}; + +struct expr { + enum expr_type type; + union expr_data left, right; +}; + +#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; + tristate tri; +}; + +struct symbol_value { + void *val; + tristate tri; +}; + +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, /* values read from auto.conf */ + S_DEF_DEF3, /* Reserved for UI usage */ + S_DEF_DEF4, /* Reserved for UI usage */ + S_DEF_COUNT +}; + +struct symbol { + struct symbol *next; + char *name; + enum symbol_type type; + struct symbol_value curr; + struct symbol_value def[S_DEF_COUNT]; + tristate visible; + int flags; + struct property *prop; + struct expr_value dir_dep; + struct expr_value rev_dep; +}; + +#define for_all_symbols(i, sym) for (i = 0; i < SYMBOL_HASHSIZE; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) + +#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 /* write symbol to file (KCONFIG_CONFIG) */ +#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 */ + +/* choice values need to be set before calculating this symbol value */ +#define SYMBOL_NEED_SET_CHOICE_VALUES 0x100000 + +#define SYMBOL_MAXLENGTH 256 +#define SYMBOL_HASHSIZE 9973 + +/* 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, /* 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 */ + P_SYMBOL, /* where a symbol is defined */ +}; + +struct property { + 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; /* 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) \ + for (st = sym->prop; st; st = st->next) \ + if (st->type == (tok)) +#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT) +#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE) +#define for_all_prompts(sym, st) \ + for (st = sym->prop; st; st = st->next) \ + if (st->text) + +struct menu { + struct menu *next; + struct menu *parent; + struct menu *list; + struct symbol *sym; + struct property *prompt; + struct expr *visibility; + struct expr *dep; + unsigned int flags; + char *help; + struct file *file; + int lineno; + void *data; +}; + +#define MENU_CHANGED 0x0001 +#define MENU_ROOT 0x0002 + +struct jump_key { + struct list_head entries; + size_t offset; + struct menu *target; + int index; +}; + +#define JUMP_NB 9 + +extern struct file *file_list; +extern struct file *current_file; +struct file *lookup_file(const char *name); + +extern struct symbol symbol_yes, symbol_no, symbol_mod; +extern struct symbol *modules_sym; +extern struct symbol *sym_defconfig_list; +extern int cdebug; +struct expr *expr_alloc_symbol(struct symbol *sym); +struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); +struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2); +struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2); +struct expr *expr_alloc_and(struct expr *e1, struct expr *e2); +struct expr *expr_alloc_or(struct expr *e1, struct expr *e2); +struct expr *expr_copy(const struct expr *org); +void expr_free(struct expr *e); +int expr_eq(struct expr *e1, struct expr *e2); +void expr_eliminate_eq(struct expr **ep1, struct expr **ep2); +tristate expr_calc_value(struct expr *e); +struct expr *expr_eliminate_yn(struct expr *e); +struct expr *expr_trans_bool(struct expr *e); +struct expr *expr_eliminate_dups(struct expr *e); +struct expr *expr_transform(struct expr *e); +int expr_contains_symbol(struct expr *dep, struct symbol *sym); +bool expr_depends_symbol(struct expr *dep, struct symbol *sym); +struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2); +struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2); +void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2); +struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym); +struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2); + +void expr_fprint(struct expr *e, FILE *out); +struct gstr; /* forward */ +void expr_gstr_print(struct expr *e, struct gstr *gs); + +static inline int expr_is_yes(struct expr *e) +{ + return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes); +} + +static inline int expr_is_no(struct expr *e) +{ + return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no); +} + +#ifdef __cplusplus +} +#endif + +#endif /* EXPR_H */ diff --git a/buildroot/support/kconfig/foo.h b/buildroot/support/kconfig/foo.h new file mode 100644 index 0000000..b9cfdf8 --- /dev/null +++ b/buildroot/support/kconfig/foo.h @@ -0,0 +1,12 @@ +#ifndef __KCONFIG_FOO_H +#define __KCONFIG_FOO_H + +#ifndef __APPLE__ +#include +#endif +#include + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif +#endif /* __KCONFIG_FOO_H */ diff --git a/buildroot/support/kconfig/gconf.c b/buildroot/support/kconfig/gconf.c new file mode 100644 index 0000000..7cbe68e --- /dev/null +++ b/buildroot/support/kconfig/gconf.c @@ -0,0 +1,1542 @@ +/* Hey EMACS -*- linux-c -*- */ +/* + * + * Copyright (C) 2002-2003 Romain Lievin + * Released under the terms of the GNU GPL v2.0. + * + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "lkc.h" +#include "images.c" + +#include +#include +#include +#include + +#include +#include +#include +#include + +//#define DEBUG + +enum { + SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW +}; + +enum { + OPT_NORMAL, OPT_ALL, OPT_PROMPT +}; + +static gint view_mode = FULL_VIEW; +static gboolean show_name = TRUE; +static gboolean show_range = TRUE; +static gboolean show_value = TRUE; +static gboolean resizeable = FALSE; +static int opt_mode = OPT_NORMAL; + +GtkWidget *main_wnd = NULL; +GtkWidget *tree1_w = NULL; // left frame +GtkWidget *tree2_w = NULL; // right frame +GtkWidget *text_w = NULL; +GtkWidget *hpaned = NULL; +GtkWidget *vpaned = NULL; +GtkWidget *back_btn = NULL; +GtkWidget *save_btn = NULL; +GtkWidget *save_menu_item = NULL; + +GtkTextTag *tag1, *tag2; +GdkColor color; + +GtkTreeStore *tree1, *tree2, *tree; +GtkTreeModel *model1, *model2; +static GtkTreeIter *parents[256]; +static gint indent; + +static struct menu *current; // current node for SINGLE view +static struct menu *browsed; // browsed node for SPLIT view + +enum { + COL_OPTION, COL_NAME, COL_NO, COL_MOD, COL_YES, COL_VALUE, + COL_MENU, COL_COLOR, COL_EDIT, COL_PIXBUF, + COL_PIXVIS, COL_BTNVIS, COL_BTNACT, COL_BTNINC, COL_BTNRAD, + COL_NUMBER +}; + +static void display_list(void); +static void display_tree(struct menu *menu); +static void display_tree_part(void); +static void update_tree(struct menu *src, GtkTreeIter * dst); +static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row); +static gchar **fill_row(struct menu *menu); +static void conf_changed(void); + +/* Helping/Debugging Functions */ + +const char *dbg_sym_flags(int val) +{ + static char buf[256]; + + bzero(buf, 256); + + if (val & SYMBOL_CONST) + strcat(buf, "const/"); + if (val & SYMBOL_CHECK) + strcat(buf, "check/"); + if (val & SYMBOL_CHOICE) + strcat(buf, "choice/"); + if (val & SYMBOL_CHOICEVAL) + strcat(buf, "choiceval/"); + if (val & SYMBOL_VALID) + strcat(buf, "valid/"); + if (val & SYMBOL_OPTIONAL) + strcat(buf, "optional/"); + if (val & SYMBOL_WRITE) + strcat(buf, "write/"); + if (val & SYMBOL_CHANGED) + strcat(buf, "changed/"); + if (val & SYMBOL_AUTO) + strcat(buf, "auto/"); + + buf[strlen(buf) - 1] = '\0'; + + return buf; +} + +void replace_button_icon(GladeXML * xml, GdkDrawable * window, + GtkStyle * style, gchar * btn_name, gchar ** xpm) +{ + GdkPixmap *pixmap; + GdkBitmap *mask; + GtkToolButton *button; + GtkWidget *image; + + pixmap = gdk_pixmap_create_from_xpm_d(window, &mask, + &style->bg[GTK_STATE_NORMAL], + xpm); + + button = GTK_TOOL_BUTTON(glade_xml_get_widget(xml, btn_name)); + image = gtk_image_new_from_pixmap(pixmap, mask); + gtk_widget_show(image); + gtk_tool_button_set_icon_widget(button, image); +} + +/* Main Window Initialization */ +void init_main_window(const gchar * glade_file) +{ + GladeXML *xml; + GtkWidget *widget; + GtkTextBuffer *txtbuf; + GtkStyle *style; + + xml = glade_xml_new(glade_file, "window1", NULL); + if (!xml) + g_error(_("GUI loading failed !\n")); + glade_xml_signal_autoconnect(xml); + + main_wnd = glade_xml_get_widget(xml, "window1"); + hpaned = glade_xml_get_widget(xml, "hpaned1"); + vpaned = glade_xml_get_widget(xml, "vpaned1"); + tree1_w = glade_xml_get_widget(xml, "treeview1"); + tree2_w = glade_xml_get_widget(xml, "treeview2"); + text_w = glade_xml_get_widget(xml, "textview3"); + + back_btn = glade_xml_get_widget(xml, "button1"); + gtk_widget_set_sensitive(back_btn, FALSE); + + widget = glade_xml_get_widget(xml, "show_name1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_name); + + widget = glade_xml_get_widget(xml, "show_range1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_range); + + widget = glade_xml_get_widget(xml, "show_data1"); + gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, + show_value); + + save_btn = glade_xml_get_widget(xml, "button3"); + save_menu_item = glade_xml_get_widget(xml, "save1"); + conf_set_changed_callback(conf_changed); + + style = gtk_widget_get_style(main_wnd); + widget = glade_xml_get_widget(xml, "toolbar1"); + +#if 0 /* Use stock Gtk icons instead */ + replace_button_icon(xml, main_wnd->window, style, + "button1", (gchar **) xpm_back); + replace_button_icon(xml, main_wnd->window, style, + "button2", (gchar **) xpm_load); + replace_button_icon(xml, main_wnd->window, style, + "button3", (gchar **) xpm_save); +#endif + replace_button_icon(xml, main_wnd->window, style, + "button4", (gchar **) xpm_single_view); + replace_button_icon(xml, main_wnd->window, style, + "button5", (gchar **) xpm_split_view); + replace_button_icon(xml, main_wnd->window, style, + "button6", (gchar **) xpm_tree_view); + +#if 0 + switch (view_mode) { + case SINGLE_VIEW: + widget = glade_xml_get_widget(xml, "button4"); + g_signal_emit_by_name(widget, "clicked"); + break; + case SPLIT_VIEW: + widget = glade_xml_get_widget(xml, "button5"); + g_signal_emit_by_name(widget, "clicked"); + break; + case FULL_VIEW: + widget = glade_xml_get_widget(xml, "button6"); + g_signal_emit_by_name(widget, "clicked"); + break; + } +#endif + txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + tag1 = gtk_text_buffer_create_tag(txtbuf, "mytag1", + "foreground", "red", + "weight", PANGO_WEIGHT_BOLD, + NULL); + tag2 = gtk_text_buffer_create_tag(txtbuf, "mytag2", + /*"style", PANGO_STYLE_OBLIQUE, */ + NULL); + + gtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text); + + gtk_widget_show(main_wnd); +} + +void init_tree_model(void) +{ + gint i; + + tree = tree2 = gtk_tree_store_new(COL_NUMBER, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR, + G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); + model2 = GTK_TREE_MODEL(tree2); + + for (parents[0] = NULL, i = 1; i < 256; i++) + parents[i] = (GtkTreeIter *) g_malloc(sizeof(GtkTreeIter)); + + tree1 = gtk_tree_store_new(COL_NUMBER, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, GDK_TYPE_COLOR, + G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); + model1 = GTK_TREE_MODEL(tree1); +} + +void init_left_tree(void) +{ + GtkTreeView *view = GTK_TREE_VIEW(tree1_w); + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + GtkTreeViewColumn *column; + + gtk_tree_view_set_model(view, model1); + gtk_tree_view_set_headers_visible(view, TRUE); + gtk_tree_view_set_rules_hint(view, TRUE); + + column = gtk_tree_view_column_new(); + gtk_tree_view_append_column(view, column); + gtk_tree_view_column_set_title(column, _("Options")); + + renderer = gtk_cell_renderer_toggle_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "active", COL_BTNACT, + "inconsistent", COL_BTNINC, + "visible", COL_BTNVIS, + "radio", COL_BTNRAD, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "text", COL_OPTION, + "foreground-gdk", + COL_COLOR, NULL); + + sel = gtk_tree_view_get_selection(view); + gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE); + gtk_widget_realize(tree1_w); +} + +static void renderer_edited(GtkCellRendererText * cell, + const gchar * path_string, + const gchar * new_text, gpointer user_data); + +void init_right_tree(void) +{ + GtkTreeView *view = GTK_TREE_VIEW(tree2_w); + GtkCellRenderer *renderer; + GtkTreeSelection *sel; + GtkTreeViewColumn *column; + gint i; + + gtk_tree_view_set_model(view, model2); + gtk_tree_view_set_headers_visible(view, TRUE); + gtk_tree_view_set_rules_hint(view, TRUE); + + column = gtk_tree_view_column_new(); + gtk_tree_view_append_column(view, column); + gtk_tree_view_column_set_title(column, _("Options")); + + renderer = gtk_cell_renderer_pixbuf_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "pixbuf", COL_PIXBUF, + "visible", COL_PIXVIS, NULL); + renderer = gtk_cell_renderer_toggle_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "active", COL_BTNACT, + "inconsistent", COL_BTNINC, + "visible", COL_BTNVIS, + "radio", COL_BTNRAD, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column), + renderer, FALSE); + gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column), + renderer, + "text", COL_OPTION, + "foreground-gdk", + COL_COLOR, NULL); + + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + _("Name"), renderer, + "text", COL_NAME, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "N", renderer, + "text", COL_NO, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "M", renderer, + "text", COL_MOD, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + "Y", renderer, + "text", COL_YES, + "foreground-gdk", + COL_COLOR, NULL); + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(view, -1, + _("Value"), renderer, + "text", COL_VALUE, + "editable", + COL_EDIT, + "foreground-gdk", + COL_COLOR, NULL); + g_signal_connect(G_OBJECT(renderer), "edited", + G_CALLBACK(renderer_edited), NULL); + + column = gtk_tree_view_get_column(view, COL_NAME); + gtk_tree_view_column_set_visible(column, show_name); + column = gtk_tree_view_get_column(view, COL_NO); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_MOD); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_YES); + gtk_tree_view_column_set_visible(column, show_range); + column = gtk_tree_view_get_column(view, COL_VALUE); + gtk_tree_view_column_set_visible(column, show_value); + + if (resizeable) { + for (i = 0; i < COL_VALUE; i++) { + column = gtk_tree_view_get_column(view, i); + gtk_tree_view_column_set_resizable(column, TRUE); + } + } + + sel = gtk_tree_view_get_selection(view); + gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE); +} + + +/* Utility Functions */ + + +static void text_insert_help(struct menu *menu) +{ + GtkTextBuffer *buffer; + GtkTextIter start, end; + const char *prompt = _(menu_get_prompt(menu)); + struct gstr help = str_new(); + + menu_get_ext_help(menu, &help); + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + gtk_text_buffer_get_bounds(buffer, &start, &end); + gtk_text_buffer_delete(buffer, &start, &end); + gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15); + + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1, + NULL); + gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, str_get(&help), -1, tag2, + NULL); + str_free(&help); +} + + +static void text_insert_msg(const char *title, const char *message) +{ + GtkTextBuffer *buffer; + GtkTextIter start, end; + const char *msg = message; + + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w)); + gtk_text_buffer_get_bounds(buffer, &start, &end); + gtk_text_buffer_delete(buffer, &start, &end); + gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15); + + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, title, -1, tag1, + NULL); + gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2); + gtk_text_buffer_get_end_iter(buffer, &end); + gtk_text_buffer_insert_with_tags(buffer, &end, msg, -1, tag2, + NULL); +} + + +/* Main Windows Callbacks */ + +void on_save_activate(GtkMenuItem * menuitem, gpointer user_data); +gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event, + gpointer user_data) +{ + GtkWidget *dialog, *label; + gint result; + + if (!conf_get_changed()) + return FALSE; + + dialog = gtk_dialog_new_with_buttons(_("Warning !"), + GTK_WINDOW(main_wnd), + (GtkDialogFlags) + (GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT), + GTK_STOCK_OK, + GTK_RESPONSE_YES, + GTK_STOCK_NO, + GTK_RESPONSE_NO, + GTK_STOCK_CANCEL, + GTK_RESPONSE_CANCEL, NULL); + gtk_dialog_set_default_response(GTK_DIALOG(dialog), + GTK_RESPONSE_CANCEL); + + label = gtk_label_new(_("\nSave configuration ?\n")); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + gtk_widget_show(label); + + result = gtk_dialog_run(GTK_DIALOG(dialog)); + switch (result) { + case GTK_RESPONSE_YES: + on_save_activate(NULL, NULL); + return FALSE; + case GTK_RESPONSE_NO: + return FALSE; + case GTK_RESPONSE_CANCEL: + case GTK_RESPONSE_DELETE_EVENT: + default: + gtk_widget_destroy(dialog); + return TRUE; + } + + return FALSE; +} + + +void on_window1_destroy(GtkObject * object, gpointer user_data) +{ + gtk_main_quit(); +} + + +void +on_window1_size_request(GtkWidget * widget, + GtkRequisition * requisition, gpointer user_data) +{ + static gint old_h; + gint w, h; + + if (widget->window == NULL) + gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h); + else + gdk_window_get_size(widget->window, &w, &h); + + if (h == old_h) + return; + old_h = h; + + gtk_paned_set_position(GTK_PANED(vpaned), 2 * h / 3); +} + + +/* Menu & Toolbar Callbacks */ + + +static void +load_filename(GtkFileSelection * file_selector, gpointer user_data) +{ + const gchar *fn; + + fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION + (user_data)); + + if (conf_read(fn)) + text_insert_msg(_("Error"), _("Unable to load configuration !")); + else + display_tree(&rootmenu); +} + +void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *fs; + + fs = gtk_file_selection_new(_("Load file...")); + g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), + "clicked", + G_CALLBACK(load_filename), (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->ok_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->cancel_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + gtk_widget_show(fs); +} + + +void on_save_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + if (conf_write(NULL)) + text_insert_msg(_("Error"), _("Unable to save configuration !")); +} + + +static void +store_filename(GtkFileSelection * file_selector, gpointer user_data) +{ + const gchar *fn; + + fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION + (user_data)); + + if (conf_write(fn)) + text_insert_msg(_("Error"), _("Unable to save configuration !")); + + gtk_widget_destroy(GTK_WIDGET(user_data)); +} + +void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *fs; + + fs = gtk_file_selection_new(_("Save file as...")); + g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button), + "clicked", + G_CALLBACK(store_filename), (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->ok_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + g_signal_connect_swapped(GTK_OBJECT + (GTK_FILE_SELECTION(fs)->cancel_button), + "clicked", G_CALLBACK(gtk_widget_destroy), + (gpointer) fs); + gtk_widget_show(fs); +} + + +void on_quit1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + if (!on_window1_delete_event(NULL, NULL, NULL)) + gtk_widget_destroy(GTK_WIDGET(main_wnd)); +} + + +void on_show_name1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_name = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NAME); + if (col) + gtk_tree_view_column_set_visible(col, show_name); +} + + +void on_show_range1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_range = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NO); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_MOD); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_YES); + if (col) + gtk_tree_view_column_set_visible(col, show_range); + +} + + +void on_show_data1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkTreeViewColumn *col; + + show_value = GTK_CHECK_MENU_ITEM(menuitem)->active; + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_VALUE); + if (col) + gtk_tree_view_column_set_visible(col, show_value); +} + + +void +on_set_option_mode1_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_NORMAL; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void +on_set_option_mode2_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_ALL; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void +on_set_option_mode3_activate(GtkMenuItem *menuitem, gpointer user_data) +{ + opt_mode = OPT_PROMPT; + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); /* instead of update_tree to speed-up */ +} + + +void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *intro_text = _( + "Welcome to gkc, the GTK+ graphical configuration tool\n" + "For each option, a blank box indicates the feature is disabled, a\n" + "check indicates it is enabled, and a dot indicates that it is to\n" + "be compiled as a module. Clicking on the box will cycle through the three states.\n" + "\n" + "If you do not see an option (e.g., a device driver) that you\n" + "believe should be present, try turning on Show All Options\n" + "under the Options menu.\n" + "Although there is no cross reference yet to help you figure out\n" + "what other options must be enabled to support the option you\n" + "are interested in, you can still view the help of a grayed-out\n" + "option.\n" + "\n" + "Toggling Show Debug Info under the Options menu will show \n" + "the dependencies, which you can then match by examining other options."); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", intro_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *about_text = + _("gkc is copyright (c) 2002 Romain Lievin .\n" + "Based on the source code from Roman Zippel.\n"); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", about_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data) +{ + GtkWidget *dialog; + const gchar *license_text = + _("gkc is released under the terms of the GNU GPL v2.\n" + "For more information, please see the source code or\n" + "visit http://www.fsf.org/licenses/licenses.html\n"); + + dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CLOSE, "%s", license_text); + g_signal_connect_swapped(GTK_OBJECT(dialog), "response", + G_CALLBACK(gtk_widget_destroy), + GTK_OBJECT(dialog)); + gtk_widget_show_all(dialog); +} + + +void on_back_clicked(GtkButton * button, gpointer user_data) +{ + enum prop_type ptype; + + current = current->parent; + ptype = current->prompt ? current->prompt->type : P_UNKNOWN; + if (ptype != P_MENU) + current = current->parent; + display_tree_part(); + + if (current == &rootmenu) + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_load_clicked(GtkButton * button, gpointer user_data) +{ + on_load1_activate(NULL, user_data); +} + + +void on_single_clicked(GtkButton * button, gpointer user_data) +{ + view_mode = SINGLE_VIEW; + gtk_widget_hide(tree1_w); + current = &rootmenu; + display_tree_part(); +} + + +void on_split_clicked(GtkButton * button, gpointer user_data) +{ + gint w, h; + view_mode = SPLIT_VIEW; + gtk_widget_show(tree1_w); + gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h); + gtk_paned_set_position(GTK_PANED(hpaned), w / 2); + if (tree2) + gtk_tree_store_clear(tree2); + display_list(); + + /* Disable back btn, like in full mode. */ + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_full_clicked(GtkButton * button, gpointer user_data) +{ + view_mode = FULL_VIEW; + gtk_widget_hide(tree1_w); + if (tree2) + gtk_tree_store_clear(tree2); + display_tree(&rootmenu); + gtk_widget_set_sensitive(back_btn, FALSE); +} + + +void on_collapse_clicked(GtkButton * button, gpointer user_data) +{ + gtk_tree_view_collapse_all(GTK_TREE_VIEW(tree2_w)); +} + + +void on_expand_clicked(GtkButton * button, gpointer user_data) +{ + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); +} + + +/* CTree Callbacks */ + +/* Change hex/int/string value in the cell */ +static void renderer_edited(GtkCellRendererText * cell, + const gchar * path_string, + const gchar * new_text, gpointer user_data) +{ + GtkTreePath *path = gtk_tree_path_new_from_string(path_string); + GtkTreeIter iter; + const char *old_def, *new_def; + struct menu *menu; + struct symbol *sym; + + if (!gtk_tree_model_get_iter(model2, &iter, path)) + return; + + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + sym = menu->sym; + + gtk_tree_model_get(model2, &iter, COL_VALUE, &old_def, -1); + new_def = new_text; + + sym_set_string_value(sym, new_def); + + update_tree(&rootmenu, NULL); + + gtk_tree_path_free(path); +} + +/* Change the value of a symbol and update the tree */ +static void change_sym_value(struct menu *menu, gint col) +{ + struct symbol *sym = menu->sym; + tristate newval; + + if (!sym) + return; + + if (col == COL_NO) + newval = no; + else if (col == COL_MOD) + newval = mod; + else if (col == COL_YES) + newval = yes; + else + return; + + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + if (!sym_tristate_within_range(sym, newval)) + newval = yes; + sym_set_tristate_value(sym, newval); + if (view_mode == FULL_VIEW) + update_tree(&rootmenu, NULL); + else if (view_mode == SPLIT_VIEW) { + update_tree(browsed, NULL); + display_list(); + } + else if (view_mode == SINGLE_VIEW) + display_tree_part(); //fixme: keep exp/coll + break; + case S_INT: + case S_HEX: + case S_STRING: + default: + break; + } +} + +static void toggle_sym_value(struct menu *menu) +{ + if (!menu->sym) + return; + + sym_toggle_tristate_value(menu->sym); + if (view_mode == FULL_VIEW) + update_tree(&rootmenu, NULL); + else if (view_mode == SPLIT_VIEW) { + update_tree(browsed, NULL); + display_list(); + } + else if (view_mode == SINGLE_VIEW) + display_tree_part(); //fixme: keep exp/coll +} + +static gint column2index(GtkTreeViewColumn * column) +{ + gint i; + + for (i = 0; i < COL_NUMBER; i++) { + GtkTreeViewColumn *col; + + col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), i); + if (col == column) + return i; + } + + return -1; +} + + +/* User click: update choice (full) or goes down (single) */ +gboolean +on_treeview2_button_press_event(GtkWidget * widget, + GdkEventButton * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + gint col; + +#if GTK_CHECK_VERSION(2,1,4) // bug in ctree with earlier version of GTK + gint tx = (gint) event->x; + gint ty = (gint) event->y; + gint cx, cy; + + gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, + &cy); +#else + gtk_tree_view_get_cursor(view, &path, &column); +#endif + if (path == NULL) + return FALSE; + + if (!gtk_tree_model_get_iter(model2, &iter, path)) + return FALSE; + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + + col = column2index(column); + if (event->type == GDK_2BUTTON_PRESS) { + enum prop_type ptype; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + + if (ptype == P_MENU && view_mode != FULL_VIEW && col == COL_OPTION) { + // goes down into menu + current = menu; + display_tree_part(); + gtk_widget_set_sensitive(back_btn, TRUE); + } else if ((col == COL_OPTION)) { + toggle_sym_value(menu); + gtk_tree_view_expand_row(view, path, TRUE); + } + } else { + if (col == COL_VALUE) { + toggle_sym_value(menu); + gtk_tree_view_expand_row(view, path, TRUE); + } else if (col == COL_NO || col == COL_MOD + || col == COL_YES) { + change_sym_value(menu, col); + gtk_tree_view_expand_row(view, path, TRUE); + } + } + + return FALSE; +} + +/* Key pressed: update choice */ +gboolean +on_treeview2_key_press_event(GtkWidget * widget, + GdkEventKey * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + gint col; + + gtk_tree_view_get_cursor(view, &path, &column); + if (path == NULL) + return FALSE; + + if (event->keyval == GDK_space) { + if (gtk_tree_view_row_expanded(view, path)) + gtk_tree_view_collapse_row(view, path); + else + gtk_tree_view_expand_row(view, path, FALSE); + return TRUE; + } + if (event->keyval == GDK_KP_Enter) { + } + if (widget == tree1_w) + return FALSE; + + gtk_tree_model_get_iter(model2, &iter, path); + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + + if (!strcasecmp(event->string, "n")) + col = COL_NO; + else if (!strcasecmp(event->string, "m")) + col = COL_MOD; + else if (!strcasecmp(event->string, "y")) + col = COL_YES; + else + col = -1; + change_sym_value(menu, col); + + return FALSE; +} + + +/* Row selection changed: update help */ +void +on_treeview2_cursor_changed(GtkTreeView * treeview, gpointer user_data) +{ + GtkTreeSelection *selection; + GtkTreeIter iter; + struct menu *menu; + + selection = gtk_tree_view_get_selection(treeview); + if (gtk_tree_selection_get_selected(selection, &model2, &iter)) { + gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1); + text_insert_help(menu); + } +} + + +/* User click: display sub-tree in the right frame. */ +gboolean +on_treeview1_button_press_event(GtkWidget * widget, + GdkEventButton * event, gpointer user_data) +{ + GtkTreeView *view = GTK_TREE_VIEW(widget); + GtkTreePath *path; + GtkTreeViewColumn *column; + GtkTreeIter iter; + struct menu *menu; + + gint tx = (gint) event->x; + gint ty = (gint) event->y; + gint cx, cy; + + gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx, + &cy); + if (path == NULL) + return FALSE; + + gtk_tree_model_get_iter(model1, &iter, path); + gtk_tree_model_get(model1, &iter, COL_MENU, &menu, -1); + + if (event->type == GDK_2BUTTON_PRESS) { + toggle_sym_value(menu); + current = menu; + display_tree_part(); + } else { + browsed = menu; + display_tree_part(); + } + + gtk_widget_realize(tree2_w); + gtk_tree_view_set_cursor(view, path, NULL, FALSE); + gtk_widget_grab_focus(tree2_w); + + return FALSE; +} + + +/* Fill a row of strings */ +static gchar **fill_row(struct menu *menu) +{ + static gchar *row[COL_NUMBER]; + struct symbol *sym = menu->sym; + const char *def; + int stype; + tristate val; + enum prop_type ptype; + int i; + + for (i = COL_OPTION; i <= COL_COLOR; i++) + g_free(row[i]); + bzero(row, sizeof(row)); + + row[COL_OPTION] = + g_strdup_printf("%s %s", _(menu_get_prompt(menu)), + sym && !sym_has_value(sym) ? "(NEW)" : ""); + + if (opt_mode == OPT_ALL && !menu_is_visible(menu)) + row[COL_COLOR] = g_strdup("DarkGray"); + else if (opt_mode == OPT_PROMPT && + menu_has_prompt(menu) && !menu_is_visible(menu)) + row[COL_COLOR] = g_strdup("DarkGray"); + else + row[COL_COLOR] = g_strdup("Black"); + + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + switch (ptype) { + case P_MENU: + row[COL_PIXBUF] = (gchar *) xpm_menu; + if (view_mode == SINGLE_VIEW) + row[COL_PIXVIS] = GINT_TO_POINTER(TRUE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + case P_COMMENT: + row[COL_PIXBUF] = (gchar *) xpm_void; + row[COL_PIXVIS] = GINT_TO_POINTER(FALSE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + default: + row[COL_PIXBUF] = (gchar *) xpm_void; + row[COL_PIXVIS] = GINT_TO_POINTER(FALSE); + row[COL_BTNVIS] = GINT_TO_POINTER(TRUE); + break; + } + + if (!sym) + return row; + row[COL_NAME] = g_strdup(sym->name); + + sym_calc_value(sym); + sym->flags &= ~SYMBOL_CHANGED; + + if (sym_is_choice(sym)) { // parse childs for getting final value + struct menu *child; + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) + && child->sym == def_sym) + def_menu = child; + } + + if (def_menu) + row[COL_VALUE] = + g_strdup(_(menu_get_prompt(def_menu))); + } + if (sym->flags & SYMBOL_CHOICEVAL) + row[COL_BTNRAD] = GINT_TO_POINTER(TRUE); + + stype = sym_get_type(sym); + switch (stype) { + case S_BOOLEAN: + if (GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE) + row[COL_BTNVIS] = GINT_TO_POINTER(TRUE); + if (sym_is_choice(sym)) + break; + /* fall through */ + case S_TRISTATE: + val = sym_get_tristate_value(sym); + switch (val) { + case no: + row[COL_NO] = g_strdup("N"); + row[COL_VALUE] = g_strdup("N"); + row[COL_BTNACT] = GINT_TO_POINTER(FALSE); + row[COL_BTNINC] = GINT_TO_POINTER(FALSE); + break; + case mod: + row[COL_MOD] = g_strdup("M"); + row[COL_VALUE] = g_strdup("M"); + row[COL_BTNINC] = GINT_TO_POINTER(TRUE); + break; + case yes: + row[COL_YES] = g_strdup("Y"); + row[COL_VALUE] = g_strdup("Y"); + row[COL_BTNACT] = GINT_TO_POINTER(TRUE); + row[COL_BTNINC] = GINT_TO_POINTER(FALSE); + break; + } + + if (val != no && sym_tristate_within_range(sym, no)) + row[COL_NO] = g_strdup("_"); + if (val != mod && sym_tristate_within_range(sym, mod)) + row[COL_MOD] = g_strdup("_"); + if (val != yes && sym_tristate_within_range(sym, yes)) + row[COL_YES] = g_strdup("_"); + break; + case S_INT: + case S_HEX: + case S_STRING: + def = sym_get_string_value(sym); + row[COL_VALUE] = g_strdup(def); + row[COL_EDIT] = GINT_TO_POINTER(TRUE); + row[COL_BTNVIS] = GINT_TO_POINTER(FALSE); + break; + } + + return row; +} + + +/* Set the node content with a row of strings */ +static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row) +{ + GdkColor color; + gboolean success; + GdkPixbuf *pix; + + pix = gdk_pixbuf_new_from_xpm_data((const char **) + row[COL_PIXBUF]); + + gdk_color_parse(row[COL_COLOR], &color); + gdk_colormap_alloc_colors(gdk_colormap_get_system(), &color, 1, + FALSE, FALSE, &success); + + gtk_tree_store_set(tree, node, + COL_OPTION, row[COL_OPTION], + COL_NAME, row[COL_NAME], + COL_NO, row[COL_NO], + COL_MOD, row[COL_MOD], + COL_YES, row[COL_YES], + COL_VALUE, row[COL_VALUE], + COL_MENU, (gpointer) menu, + COL_COLOR, &color, + COL_EDIT, GPOINTER_TO_INT(row[COL_EDIT]), + COL_PIXBUF, pix, + COL_PIXVIS, GPOINTER_TO_INT(row[COL_PIXVIS]), + COL_BTNVIS, GPOINTER_TO_INT(row[COL_BTNVIS]), + COL_BTNACT, GPOINTER_TO_INT(row[COL_BTNACT]), + COL_BTNINC, GPOINTER_TO_INT(row[COL_BTNINC]), + COL_BTNRAD, GPOINTER_TO_INT(row[COL_BTNRAD]), + -1); + + g_object_unref(pix); +} + + +/* Add a node to the tree */ +static void place_node(struct menu *menu, char **row) +{ + GtkTreeIter *parent = parents[indent - 1]; + GtkTreeIter *node = parents[indent]; + + gtk_tree_store_append(tree, node, parent); + set_node(node, menu, row); +} + + +/* Find a node in the GTK+ tree */ +static GtkTreeIter found; + +/* + * Find a menu in the GtkTree starting at parent. + */ +GtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent, + struct menu *tofind) +{ + GtkTreeIter iter; + GtkTreeIter *child = &iter; + gboolean valid; + GtkTreeIter *ret; + + valid = gtk_tree_model_iter_children(model2, child, parent); + while (valid) { + struct menu *menu; + + gtk_tree_model_get(model2, child, 6, &menu, -1); + + if (menu == tofind) { + memcpy(&found, child, sizeof(GtkTreeIter)); + return &found; + } + + ret = gtktree_iter_find_node(child, tofind); + if (ret) + return ret; + + valid = gtk_tree_model_iter_next(model2, child); + } + + return NULL; +} + + +/* + * Update the tree by adding/removing entries + * Does not change other nodes + */ +static void update_tree(struct menu *src, GtkTreeIter * dst) +{ + struct menu *child1; + GtkTreeIter iter, tmp; + GtkTreeIter *child2 = &iter; + gboolean valid; + GtkTreeIter *sibling; + struct symbol *sym; + struct menu *menu1, *menu2; + + if (src == &rootmenu) + indent = 1; + + valid = gtk_tree_model_iter_children(model2, child2, dst); + for (child1 = src->list; child1; child1 = child1->next) { + + sym = child1->sym; + + reparse: + menu1 = child1; + if (valid) + gtk_tree_model_get(model2, child2, COL_MENU, + &menu2, -1); + else + menu2 = NULL; // force adding of a first child + +#ifdef DEBUG + printf("%*c%s | %s\n", indent, ' ', + menu1 ? menu_get_prompt(menu1) : "nil", + menu2 ? menu_get_prompt(menu2) : "nil"); +#endif + + if ((opt_mode == OPT_NORMAL && !menu_is_visible(child1)) || + (opt_mode == OPT_PROMPT && !menu_has_prompt(child1)) || + (opt_mode == OPT_ALL && !menu_get_prompt(child1))) { + + /* remove node */ + if (gtktree_iter_find_node(dst, menu1) != NULL) { + memcpy(&tmp, child2, sizeof(GtkTreeIter)); + valid = gtk_tree_model_iter_next(model2, + child2); + gtk_tree_store_remove(tree2, &tmp); + if (!valid) + return; /* next parent */ + else + goto reparse; /* next child */ + } else + continue; + } + + if (menu1 != menu2) { + if (gtktree_iter_find_node(dst, menu1) == NULL) { // add node + if (!valid && !menu2) + sibling = NULL; + else + sibling = child2; + gtk_tree_store_insert_before(tree2, + child2, + dst, sibling); + set_node(child2, menu1, fill_row(menu1)); + if (menu2 == NULL) + valid = TRUE; + } else { // remove node + memcpy(&tmp, child2, sizeof(GtkTreeIter)); + valid = gtk_tree_model_iter_next(model2, + child2); + gtk_tree_store_remove(tree2, &tmp); + if (!valid) + return; // next parent + else + goto reparse; // next child + } + } else if (sym && (sym->flags & SYMBOL_CHANGED)) { + set_node(child2, menu1, fill_row(menu1)); + } + + indent++; + update_tree(child1, child2); + indent--; + + valid = gtk_tree_model_iter_next(model2, child2); + } +} + + +/* Display the whole tree (single/split/full view) */ +static void display_tree(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + enum prop_type ptype; + + if (menu == &rootmenu) { + indent = 1; + current = &rootmenu; + } + + for (child = menu->list; child; child = child->next) { + prop = child->prompt; + sym = child->sym; + ptype = prop ? prop->type : P_UNKNOWN; + + if (sym) + sym->flags &= ~SYMBOL_CHANGED; + + if ((view_mode == SPLIT_VIEW) + && !(child->flags & MENU_ROOT) && (tree == tree1)) + continue; + + if ((view_mode == SPLIT_VIEW) && (child->flags & MENU_ROOT) + && (tree == tree2)) + continue; + + if ((opt_mode == OPT_NORMAL && menu_is_visible(child)) || + (opt_mode == OPT_PROMPT && menu_has_prompt(child)) || + (opt_mode == OPT_ALL && menu_get_prompt(child))) + place_node(child, fill_row(child)); +#ifdef DEBUG + printf("%*c%s: ", indent, ' ', menu_get_prompt(child)); + printf("%s", child->flags & MENU_ROOT ? "rootmenu | " : ""); + printf("%s", prop_get_type_name(ptype)); + printf(" | "); + if (sym) { + printf("%s", sym_type_name(sym->type)); + printf(" | "); + printf("%s", dbg_sym_flags(sym->flags)); + printf("\n"); + } else + printf("\n"); +#endif + if ((view_mode != FULL_VIEW) && (ptype == P_MENU) + && (tree == tree2)) + continue; +/* + if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT)) + || (view_mode == FULL_VIEW) + || (view_mode == SPLIT_VIEW))*/ + + /* Change paned position if the view is not in 'split mode' */ + if (view_mode == SINGLE_VIEW || view_mode == FULL_VIEW) { + gtk_paned_set_position(GTK_PANED(hpaned), 0); + } + + if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT)) + || (view_mode == FULL_VIEW) + || (view_mode == SPLIT_VIEW)) { + indent++; + display_tree(child); + indent--; + } + } +} + +/* Display a part of the tree starting at current node (single/split view) */ +static void display_tree_part(void) +{ + if (tree2) + gtk_tree_store_clear(tree2); + if (view_mode == SINGLE_VIEW) + display_tree(current); + else if (view_mode == SPLIT_VIEW) + display_tree(browsed); + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); +} + +/* Display the list in the left frame (split view) */ +static void display_list(void) +{ + if (tree1) + gtk_tree_store_clear(tree1); + + tree = tree1; + display_tree(&rootmenu); + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree1_w)); + tree = tree2; +} + +void fixup_rootmenu(struct menu *menu) +{ + struct menu *child; + static int menu_cnt = 0; + + menu->flags |= MENU_ROOT; + for (child = menu->list; child; child = child->next) { + if (child->prompt && child->prompt->type == P_MENU) { + menu_cnt++; + fixup_rootmenu(child); + menu_cnt--; + } else if (!menu_cnt) + fixup_rootmenu(child); + } +} + + +/* Main */ +int main(int ac, char *av[]) +{ + const char *name; + char *env; + gchar *glade_file; + + bindtextdomain(PACKAGE, LOCALEDIR); + bind_textdomain_codeset(PACKAGE, "UTF-8"); + textdomain(PACKAGE); + + /* GTK stuffs */ + gtk_set_locale(); + gtk_init(&ac, &av); + glade_init(); + + //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); + //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); + + /* Determine GUI path */ + env = getenv(SRCTREE); + if (env) + glade_file = g_strconcat(env, "/support/kconfig/gconf.glade", NULL); + else if (av[0][0] == '/') + glade_file = g_strconcat(av[0], ".glade", NULL); + else + glade_file = g_strconcat(g_get_current_dir(), "/", av[0], ".glade", NULL); + + /* Conf stuffs */ + if (ac > 1 && av[1][0] == '-') { + switch (av[1][1]) { + case 'a': + //showAll = 1; + break; + case 'h': + case '?': + printf("%s \n", av[0]); + exit(0); + } + name = av[2]; + } else + name = av[1]; + + conf_parse(name); + fixup_rootmenu(&rootmenu); + conf_read(NULL); + + /* Load the interface and connect signals */ + init_main_window(glade_file); + init_tree_model(); + init_left_tree(); + init_right_tree(); + + switch (view_mode) { + case SINGLE_VIEW: + display_tree_part(); + break; + case SPLIT_VIEW: + display_list(); + break; + case FULL_VIEW: + display_tree(&rootmenu); + break; + } + + gtk_main(); + + return 0; +} + +static void conf_changed(void) +{ + bool changed = conf_get_changed(); + gtk_widget_set_sensitive(save_btn, changed); + gtk_widget_set_sensitive(save_menu_item, changed); +} diff --git a/buildroot/support/kconfig/gconf.glade b/buildroot/support/kconfig/gconf.glade new file mode 100644 index 0000000..6cbc1bb --- /dev/null +++ b/buildroot/support/kconfig/gconf.glade @@ -0,0 +1,661 @@ + + + + + + True + Gtk Buildroot Configurator + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + 640 + 480 + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + + + + + + + True + False + 0 + + + + True + + + + True + _File + True + + + + + + + True + Load a config file + _Load + True + + + + + + True + gtk-open + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Save the config in .config + _Save + True + + + + + + True + gtk-save + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + Save the config in a file + Save _as + True + + + + + True + gtk-save-as + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + + + + + + True + _Quit + True + + + + + + True + gtk-quit + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + + True + _Options + True + + + + + + + True + Show name + Show _name + True + False + + + + + + + True + Show range (Y/M/N) + Show _range + True + False + + + + + + + True + Show value of the option + Show _data + True + False + + + + + + + True + + + + + + True + Show normal options + Show normal options + True + True + + + + + + + True + Show all options + Show all _options + True + False + set_option_mode1 + + + + + + + True + Show all options with prompts + Show all prompt options + True + False + set_option_mode1 + + + + + + + + + + + + True + _Help + True + + + + + + + True + _Introduction + True + + + + + + True + gtk-dialog-question + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _About + True + + + + + + True + gtk-properties + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + True + _License + True + + + + + True + gtk-justify-fill + 1 + 0.5 + 0.5 + 0 + 0 + + + + + + + + + + + 0 + False + False + + + + + + True + GTK_SHADOW_OUT + GTK_POS_LEFT + GTK_POS_TOP + + + + True + GTK_ORIENTATION_HORIZONTAL + GTK_TOOLBAR_BOTH + True + True + + + + True + Goes up of one level (single view) + Back + True + gtk-undo + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Load a config file + Load + True + gtk-open + True + True + False + + + + False + True + + + + + + True + Save a config file + Save + True + gtk-save + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Single view + Single + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + Split view + Split + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + Full view + Full + True + gtk-missing-image + True + True + False + + + + False + True + + + + + + True + True + True + False + + + + True + + + + + False + False + + + + + + True + Collapse the whole tree in the right frame + Collapse + True + gtk-remove + True + True + False + + + + False + True + + + + + + True + Expand the whole tree in the right frame + Expand + True + gtk-add + True + True + False + + + + False + True + + + + + + + 0 + False + False + + + + + + 1 + True + True + 0 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + False + + + + + + + + True + False + + + + + + True + True + 0 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + True + False + False + False + + + + + + + + True + False + + + + + + True + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + False + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_WORD + True + 0 + 0 + 0 + 0 + 0 + 0 + Sorry, no help available for this option yet. + + + + + True + True + + + + + True + True + + + + + 0 + True + True + + + + + + + diff --git a/buildroot/support/kconfig/images.c b/buildroot/support/kconfig/images.c new file mode 100644 index 0000000..d4f84bd --- /dev/null +++ b/buildroot/support/kconfig/images.c @@ -0,0 +1,326 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +static const char *xpm_load[] = { +"22 22 5 1", +". c None", +"# c #000000", +"c c #838100", +"a c #ffff00", +"b c #ffffff", +"......................", +"......................", +"......................", +"............####....#.", +"...........#....##.##.", +"..................###.", +".................####.", +".####...........#####.", +"#abab##########.......", +"#babababababab#.......", +"#ababababababa#.......", +"#babababababab#.......", +"#ababab###############", +"#babab##cccccccccccc##", +"#abab##cccccccccccc##.", +"#bab##cccccccccccc##..", +"#ab##cccccccccccc##...", +"#b##cccccccccccc##....", +"###cccccccccccc##.....", +"##cccccccccccc##......", +"###############.......", +"......................"}; + +static const char *xpm_save[] = { +"22 22 5 1", +". c None", +"# c #000000", +"a c #838100", +"b c #c5c2c5", +"c c #cdb6d5", +"......................", +".####################.", +".#aa#bbbbbbbbbbbb#bb#.", +".#aa#bbbbbbbbbbbb#bb#.", +".#aa#bbbbbbbbbcbb####.", +".#aa#bbbccbbbbbbb#aa#.", +".#aa#bbbccbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aa#bbbbbbbbbbbb#aa#.", +".#aaa############aaa#.", +".#aaaaaaaaaaaaaaaaaa#.", +".#aaaaaaaaaaaaaaaaaa#.", +".#aaa#############aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +".#aaa#########bbb#aa#.", +"..##################..", +"......................"}; + +static const char *xpm_back[] = { +"22 22 3 1", +". c None", +"# c #000083", +"a c #838183", +"......................", +"......................", +"......................", +"......................", +"......................", +"...........######a....", +"..#......##########...", +"..##...####......##a..", +"..###.###.........##..", +"..######..........##..", +"..#####...........##..", +"..######..........##..", +"..#######.........##..", +"..########.......##a..", +"...............a###...", +"...............###....", +"......................", +"......................", +"......................", +"......................", +"......................", +"......................"}; + +static const char *xpm_tree_view[] = { +"22 22 2 1", +". c None", +"# c #000000", +"......................", +"......................", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......########........", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......########........", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......#...............", +"......########........", +"......................", +"......................"}; + +static const char *xpm_single_view[] = { +"22 22 2 1", +". c None", +"# c #000000", +"......................", +"......................", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"..........#...........", +"......................", +"......................"}; + +static const char *xpm_split_view[] = { +"22 22 2 1", +". c None", +"# c #000000", +"......................", +"......................", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......#......#........", +"......................", +"......................"}; + +static const char *xpm_symbol_no[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_symbol_mod[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . . ", +" . .. . ", +" . .... . ", +" . .... . ", +" . .. . ", +" . . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_symbol_yes[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . . ", +" . . . ", +" . .. . ", +" . . .. . ", +" . .... . ", +" . .. . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_choice_no[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .... ", +" .. .. ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" . . ", +" .. .. ", +" .... ", +" "}; + +static const char *xpm_choice_yes[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .... ", +" .. .. ", +" . . ", +" . .. . ", +" . .... . ", +" . .... . ", +" . .. . ", +" . . ", +" .. .. ", +" .... ", +" "}; + +static const char *xpm_menu[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . .. . ", +" . .... . ", +" . ...... . ", +" . ...... . ", +" . .... . ", +" . .. . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_menu_inv[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" .......... ", +" .. ...... ", +" .. .... ", +" .. .. ", +" .. .. ", +" .. .... ", +" .. ...... ", +" .......... ", +" .......... ", +" "}; + +static const char *xpm_menuback[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" .......... ", +" . . ", +" . .. . ", +" . .... . ", +" . ...... . ", +" . ...... . ", +" . .... . ", +" . .. . ", +" . . ", +" .......... ", +" "}; + +static const char *xpm_void[] = { +"12 12 2 1", +" c white", +". c black", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/buildroot/support/kconfig/kxgettext.c b/buildroot/support/kconfig/kxgettext.c new file mode 100644 index 0000000..2858738 --- /dev/null +++ b/buildroot/support/kconfig/kxgettext.c @@ -0,0 +1,235 @@ +/* + * Arnaldo Carvalho de Melo , 2005 + * + * Released under the terms of the GNU GPL v2.0 + */ + +#include +#include + +#include "lkc.h" + +static char *escape(const char* text, char *bf, int len) +{ + char *bfp = bf; + int multiline = strchr(text, '\n') != NULL; + int eol = 0; + int textlen = strlen(text); + + if ((textlen > 0) && (text[textlen-1] == '\n')) + eol = 1; + + *bfp++ = '"'; + --len; + + if (multiline) { + *bfp++ = '"'; + *bfp++ = '\n'; + *bfp++ = '"'; + len -= 3; + } + + while (*text != '\0' && len > 1) { + if (*text == '"') + *bfp++ = '\\'; + else if (*text == '\n') { + *bfp++ = '\\'; + *bfp++ = 'n'; + *bfp++ = '"'; + *bfp++ = '\n'; + *bfp++ = '"'; + len -= 5; + ++text; + goto next; + } + else if (*text == '\\') { + *bfp++ = '\\'; + len--; + } + *bfp++ = *text++; +next: + --len; + } + + if (multiline && eol) + bfp -= 3; + + *bfp++ = '"'; + *bfp = '\0'; + + return bf; +} + +struct file_line { + struct file_line *next; + const char *file; + int lineno; +}; + +static struct file_line *file_line__new(const char *file, int lineno) +{ + struct file_line *self = malloc(sizeof(*self)); + + if (self == NULL) + goto out; + + self->file = file; + self->lineno = lineno; + self->next = NULL; +out: + return self; +} + +struct message { + const char *msg; + const char *option; + struct message *next; + struct file_line *files; +}; + +static struct message *message__list; + +static struct message *message__new(const char *msg, char *option, + const char *file, int lineno) +{ + struct message *self = malloc(sizeof(*self)); + + if (self == NULL) + goto out; + + self->files = file_line__new(file, lineno); + if (self->files == NULL) + goto out_fail; + + self->msg = strdup(msg); + if (self->msg == NULL) + goto out_fail_msg; + + self->option = option; + self->next = NULL; +out: + return self; +out_fail_msg: + free(self->files); +out_fail: + free(self); + self = NULL; + goto out; +} + +static struct message *mesage__find(const char *msg) +{ + struct message *m = message__list; + + while (m != NULL) { + if (strcmp(m->msg, msg) == 0) + break; + m = m->next; + } + + return m; +} + +static int message__add_file_line(struct message *self, const char *file, + int lineno) +{ + int rc = -1; + struct file_line *fl = file_line__new(file, lineno); + + if (fl == NULL) + goto out; + + fl->next = self->files; + self->files = fl; + rc = 0; +out: + return rc; +} + +static int message__add(const char *msg, char *option, const char *file, + int lineno) +{ + int rc = 0; + char bf[16384]; + char *escaped = escape(msg, bf, sizeof(bf)); + struct message *m = mesage__find(escaped); + + if (m != NULL) + rc = message__add_file_line(m, file, lineno); + else { + m = message__new(escaped, option, file, lineno); + + if (m != NULL) { + m->next = message__list; + message__list = m; + } else + rc = -1; + } + return rc; +} + +static void menu_build_message_list(struct menu *menu) +{ + struct menu *child; + + message__add(menu_get_prompt(menu), NULL, + menu->file == NULL ? "Root Menu" : menu->file->name, + menu->lineno); + + if (menu->sym != NULL && menu_has_help(menu)) + message__add(menu_get_help(menu), menu->sym->name, + menu->file == NULL ? "Root Menu" : menu->file->name, + menu->lineno); + + for (child = menu->list; child != NULL; child = child->next) + if (child->prompt != NULL) + menu_build_message_list(child); +} + +static void message__print_file_lineno(struct message *self) +{ + struct file_line *fl = self->files; + + putchar('\n'); + if (self->option != NULL) + printf("# %s:00000\n", self->option); + + printf("#: %s:%d", fl->file, fl->lineno); + fl = fl->next; + + while (fl != NULL) { + printf(", %s:%d", fl->file, fl->lineno); + fl = fl->next; + } + + putchar('\n'); +} + +static void message__print_gettext_msgid_msgstr(struct message *self) +{ + message__print_file_lineno(self); + + printf("msgid %s\n" + "msgstr \"\"\n", self->msg); +} + +static void menu__xgettext(void) +{ + struct message *m = message__list; + + while (m != NULL) { + /* skip empty lines ("") */ + if (strlen(m->msg) > sizeof("\"\"")) + message__print_gettext_msgid_msgstr(m); + m = m->next; + } +} + +int main(int ac, char **av) +{ + conf_parse(av[1]); + + menu_build_message_list(menu_get_root_menu(NULL)); + menu__xgettext(); + return 0; +} diff --git a/buildroot/support/kconfig/list.h b/buildroot/support/kconfig/list.h new file mode 100644 index 0000000..685d80e --- /dev/null +++ b/buildroot/support/kconfig/list.h @@ -0,0 +1,131 @@ +#ifndef LIST_H +#define LIST_H + +/* + * Copied from include/linux/... + */ + +#undef offsetof +#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) + +/** + * container_of - cast a member of a structure out to the containing structure + * @ptr: the pointer to the member. + * @type: the type of the container struct this is embedded in. + * @member: the name of the member within the struct. + * + */ +#define container_of(ptr, type, member) ({ \ + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) + + +struct list_head { + struct list_head *next, *prev; +}; + + +#define LIST_HEAD_INIT(name) { &(name), &(name) } + +#define LIST_HEAD(name) \ + struct list_head name = LIST_HEAD_INIT(name) + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_struct within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = list_entry(pos->member.next, typeof(*pos), member)) + +/** + * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry + * @pos: the type * to use as a loop cursor. + * @n: another type * to use as temporary storage + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member), \ + n = list_entry(pos->member.next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = list_entry(n->member.next, typeof(*n), member)) + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int list_empty(const struct list_head *head) +{ + return head->next == head; +} + +/* + * Insert a new entry between two known consecutive entries. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_add(struct list_head *_new, + struct list_head *prev, + struct list_head *next) +{ + next->prev = _new; + _new->next = next; + _new->prev = prev; + prev->next = _new; +} + +/** + * list_add_tail - add a new entry + * @new: new entry to be added + * @head: list head to add it before + * + * Insert a new entry before the specified head. + * This is useful for implementing queues. + */ +static inline void list_add_tail(struct list_head *_new, struct list_head *head) +{ + __list_add(_new, head->prev, head); +} + +/* + * Delete a list entry by making the prev/next entries + * point to each other. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_del(struct list_head *prev, struct list_head *next) +{ + next->prev = prev; + prev->next = next; +} + +#define LIST_POISON1 ((void *) 0x00100100) +#define LIST_POISON2 ((void *) 0x00200200) +/** + * list_del - deletes entry from list. + * @entry: the element to delete from the list. + * Note: list_empty() on entry does not return true after this, the entry is + * in an undefined state. + */ +static inline void list_del(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + entry->next = (struct list_head*)LIST_POISON1; + entry->prev = (struct list_head*)LIST_POISON2; +} +#endif diff --git a/buildroot/support/kconfig/lkc.h b/buildroot/support/kconfig/lkc.h new file mode 100644 index 0000000..09f4edf --- /dev/null +++ b/buildroot/support/kconfig/lkc.h @@ -0,0 +1,199 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#ifndef LKC_H +#define LKC_H + +#include "expr.h" + +#ifndef KBUILD_NO_NLS +# include +#else +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) {} +static inline char *bind_textdomain_codeset(const char *dn, char *c) { return c; } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define P(name,type,arg) extern type name arg +#include "lkc_proto.h" +#undef P + +#define SRCTREE "srctree" + +#ifndef PACKAGE +#define PACKAGE "linux" +#endif + +#define LOCALEDIR "/usr/share/locale" + +#define _(text) gettext(text) +#define N_(text) (text) + +#ifndef CONFIG_ +#define CONFIG_ "CONFIG_" +#endif +static inline const char *CONFIG_prefix(void) +{ + return getenv( "CONFIG_" ) ?: CONFIG_; +} +#undef CONFIG_ +#define CONFIG_ CONFIG_prefix() + +#define TF_COMMAND 0x0001 +#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; + int token; + unsigned int flags; + enum symbol_type stype; +}; + +extern int zconfdebug; + +int zconfparse(void); +void zconfdump(FILE *out); +void zconf_starthelp(void); +FILE *zconf_fopen(const char *name); +void zconf_initscan(const char *name); +void zconf_nextfile(const char *name); +int zconf_lineno(void); +const 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); +bool conf_set_all_new_symbols(enum conf_def_mode mode); +void set_all_choice_values(struct symbol *csym); + +struct conf_printer { + void (*print_symbol)(FILE *, struct symbol *, const char *, void *); + void (*print_comment)(FILE *, const char *, void *); +}; + +/* confdata.c and expr.c */ +static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) +{ + assert(len != 0); + + if (fwrite(str, len, count, out) != count) + fprintf(stderr, "Error in writing or end of file.\n"); +} + +/* 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); +void menu_end_entry(void); +void menu_add_dep(struct expr *dep); +void menu_add_visibility(struct expr *dep); +struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep); +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep); +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep); +void menu_add_option(int token, char *arg); +void menu_finalize(struct menu *parent); +void menu_set_type(int type); + +/* util.c */ +struct file *file_lookup(const char *name); +int file_write_dep(const char *name); +void *xmalloc(size_t size); +void *xcalloc(size_t nmemb, size_t size); + +struct gstr { + size_t len; + char *s; + /* + * when max_width is not zero long lines in string s (if any) get + * wrapped not to exceed the max_width value + */ + int max_width; +}; +struct gstr str_new(void); +struct gstr str_assign(const char *s); +void str_free(struct gstr *gs); +void str_append(struct gstr *gs, const char *s); +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); +void sym_set_changed(struct symbol *sym); +struct symbol *sym_choice_default(struct symbol *sym); +const char *sym_get_string_default(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) +{ + return sym->curr.tri; +} + + +static inline struct symbol *sym_get_choice_value(struct symbol *sym) +{ + return (struct symbol *)sym->curr.val; +} + +static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) +{ + return sym_set_tristate_value(chval, yes); +} + +static inline bool sym_is_choice(struct symbol *sym) +{ + return sym->flags & SYMBOL_CHOICE ? true : false; +} + +static inline bool sym_is_choice_value(struct symbol *sym) +{ + return sym->flags & SYMBOL_CHOICEVAL ? true : false; +} + +static inline bool sym_is_optional(struct symbol *sym) +{ + return sym->flags & SYMBOL_OPTIONAL ? true : false; +} + +static inline bool sym_has_value(struct symbol *sym) +{ + return sym->flags & SYMBOL_DEF_USER ? true : false; +} + +#ifdef __cplusplus +} +#endif + +#endif /* LKC_H */ diff --git a/buildroot/support/kconfig/lkc_proto.h b/buildroot/support/kconfig/lkc_proto.h new file mode 100644 index 0000000..ecdb965 --- /dev/null +++ b/buildroot/support/kconfig/lkc_proto.h @@ -0,0 +1,57 @@ +#include + +/* confdata.c */ +P(conf_parse,void,(const char *name)); +P(conf_read,int,(const char *name)); +P(conf_read_simple,int,(const char *name, int)); +P(conf_write_defconfig,int,(const char *name)); +P(conf_write,int,(const char *name)); +P(conf_write_autoconf,int,(void)); +P(conf_get_changed,bool,(void)); +P(conf_set_changed_callback, void,(void (*fn)(void))); +P(conf_set_message_callback, void,(void (*fn)(const char *fmt, va_list ap))); + +/* menu.c */ +P(rootmenu,struct menu,); + +P(menu_is_empty, bool, (struct menu *menu)); +P(menu_is_visible, bool, (struct menu *menu)); +P(menu_has_prompt, bool, (struct menu *menu)); +P(menu_get_prompt,const char *,(struct menu *menu)); +P(menu_get_root_menu,struct menu *,(struct menu *menu)); +P(menu_get_parent_menu,struct menu *,(struct menu *menu)); +P(menu_has_help,bool,(struct menu *menu)); +P(menu_get_help,const char *,(struct menu *menu)); +P(get_symbol_str, void, (struct gstr *r, struct symbol *sym, struct list_head + *head)); +P(get_relations_str, struct gstr, (struct symbol **sym_arr, struct list_head + *head)); +P(menu_get_ext_help,void,(struct menu *menu, struct gstr *help)); + +/* symbol.c */ +P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]); + +P(sym_lookup,struct symbol *,(const char *name, int flags)); +P(sym_find,struct symbol *,(const char *name)); +P(sym_expand_string_value,const char *,(const char *in)); +P(sym_escape_string_value, const char *,(const char *in)); +P(sym_re_search,struct symbol **,(const char *pattern)); +P(sym_type_name,const char *,(enum symbol_type type)); +P(sym_calc_value,void,(struct symbol *sym)); +P(sym_get_type,enum symbol_type,(struct symbol *sym)); +P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri)); +P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri)); +P(sym_toggle_tristate_value,tristate,(struct symbol *sym)); +P(sym_string_valid,bool,(struct symbol *sym, const char *newval)); +P(sym_string_within_range,bool,(struct symbol *sym, const char *str)); +P(sym_set_string_value,bool,(struct symbol *sym, const char *newval)); +P(sym_is_changable,bool,(struct symbol *sym)); +P(sym_get_choice_prop,struct property *,(struct symbol *sym)); +P(sym_get_default_prop,struct property *,(struct symbol *sym)); +P(sym_get_string_value,const char *,(struct symbol *sym)); + +P(prop_get_type_name,const char *,(enum prop_type type)); + +/* expr.c */ +P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2)); +P(expr_print,void,(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)); diff --git a/buildroot/support/kconfig/lxdialog/.gitignore b/buildroot/support/kconfig/lxdialog/.gitignore new file mode 100644 index 0000000..90b08ff --- /dev/null +++ b/buildroot/support/kconfig/lxdialog/.gitignore @@ -0,0 +1,4 @@ +# +# Generated files +# +lxdialog diff --git a/buildroot/support/kconfig/lxdialog/BIG.FAT.WARNING b/buildroot/support/kconfig/lxdialog/BIG.FAT.WARNING new file mode 100644 index 0000000..a8999d8 --- /dev/null +++ b/buildroot/support/kconfig/lxdialog/BIG.FAT.WARNING @@ -0,0 +1,4 @@ +This is NOT the official version of dialog. This version has been +significantly modified from the original. It is for use by the Linux +kernel configuration script. Please do not bother Savio Lam with +questions about this program. diff --git a/buildroot/support/kconfig/lxdialog/check-lxdialog.sh b/buildroot/support/kconfig/lxdialog/check-lxdialog.sh new file mode 100755 index 0000000..3ce0a23 --- /dev/null +++ b/buildroot/support/kconfig/lxdialog/check-lxdialog.sh @@ -0,0 +1,91 @@ +#!/bin/sh +# Check ncurses compatibility + +# What library to link +ldflags() +{ + pkg-config --libs ncursesw 2>/dev/null && exit + pkg-config --libs ncurses 2>/dev/null && exit + for ext in so a dll.a dylib ; do + for lib in ncursesw ncurses curses ; do + $cc -print-file-name=lib${lib}.${ext} | grep -q / + if [ $? -eq 0 ]; then + echo "-l${lib}" + exit + fi + done + done + exit 1 +} + +# Where is ncurses.h? +ccflags() +{ + if pkg-config --cflags ncursesw 2>/dev/null; then + echo '-DCURSES_LOC="" -DNCURSES_WIDECHAR=1' + elif pkg-config --cflags ncurses 2>/dev/null; then + echo '-DCURSES_LOC=""' + elif [ -f /usr/include/ncursesw/curses.h ]; then + echo '-I/usr/include/ncursesw -DCURSES_LOC=""' + echo ' -DNCURSES_WIDECHAR=1' + elif [ -f /usr/include/ncurses/ncurses.h ]; then + echo '-I/usr/include/ncurses -DCURSES_LOC=""' + elif [ -f /usr/include/ncurses/curses.h ]; then + echo '-I/usr/include/ncurses -DCURSES_LOC=""' + elif [ -f /usr/include/ncurses.h ]; then + echo '-DCURSES_LOC=""' + else + echo '-DCURSES_LOC=""' + fi +} + +# Temp file, try to clean up after us +tmp=$(mktemp) +trap "rm -f $tmp" 0 1 2 3 15 + +# Check if we can link to ncurses +check() { + $cc -x c - -o $tmp 2>/dev/null <<'EOF' +#include CURSES_LOC +main() {} +EOF + if [ $? != 0 ]; then + 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|-ccflags|-ldflags compiler options]\n" +} + +if [ $# -eq 0 ]; then + usage + exit 1 +fi + +cc="" +case "$1" in + "-check") + shift + cc="$@" + check + ;; + "-ccflags") + ccflags + ;; + "-ldflags") + shift + cc="$@" + ldflags + ;; + "*") + usage + exit 1 + ;; +esac diff --git a/buildroot/support/kconfig/lxdialog/checklist.c b/buildroot/support/kconfig/lxdialog/checklist.c new file mode 100644 index 0000000..3b15c08 --- /dev/null +++ b/buildroot/support/kconfig/lxdialog/checklist.c @@ -0,0 +1,332 @@ +/* + * checklist.c -- implements the checklist box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension + * Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +static int list_width, check_x, item_x; + +/* + * Print list item + */ +static void print_item(WINDOW * win, int choice, int selected) +{ + int i; + char *list_item = malloc(list_width + 1); + + strncpy(list_item, item_str(), list_width - item_x); + list_item[list_width - item_x] = '\0'; + + /* Clear 'residue' of last item */ + wattrset(win, dlg.menubox.atr); + wmove(win, choice, 0); + for (i = 0; i < list_width; i++) + waddch(win, ' '); + + wmove(win, choice, check_x); + wattrset(win, selected ? dlg.check_selected.atr + : dlg.check.atr); + 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, list_item[0]); + wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); + waddstr(win, list_item + 1); + if (selected) { + wmove(win, choice, check_x + 1); + wrefresh(win); + } + free(list_item); +} + +/* + * Print the scroll indicators. + */ +static void print_arrows(WINDOW * win, int choice, int item_no, int scroll, + int y, int x, int height) +{ + wmove(win, y, x); + + if (scroll > 0) { + wattrset(win, dlg.uarrow.atr); + waddch(win, ACS_UARROW); + waddstr(win, "(-)"); + } else { + wattrset(win, dlg.menubox.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + y = y + height + 1; + wmove(win, y, x); + + if ((height < item_no) && (scroll + choice < item_no - 1)) { + wattrset(win, dlg.darrow.atr); + waddch(win, ACS_DARROW); + waddstr(win, "(+)"); + } else { + wattrset(win, dlg.menubox_border.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } +} + +/* + * Display the termination buttons + */ +static void print_buttons(WINDOW * dialog, int height, int width, int selected) +{ + int x = width / 2 - 11; + int y = height - 2; + + 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); +} + +/* + * Display a dialog box with a list of options that can be turned on or off + * in the style of radiolist (only one option turned on at a time). + */ +int dialog_checklist(const char *title, const char *prompt, int height, + int width, int list_height) +{ + int i, x, y, box_x, box_y; + int key = 0, button = 0, choice = 0, scroll = 0, max_choice; + WINDOW *dialog, *list; + + /* which item to highlight */ + item_foreach() { + if (item_is_tag('X')) + choice = item_n(); + if (item_is_selected()) { + choice = item_n(); + break; + } + } + +do_resize: + if (getmaxy(stdscr) < (height + CHECKLIST_HEIGTH_MIN)) + return -ERRDISPLAYTOOSMALL; + if (getmaxx(stdscr) < (width + CHECKLIST_WIDTH_MIN)) + return -ERRDISPLAYTOOSMALL; + + max_choice = MIN(list_height, item_count()); + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + list_width = width - 6; + box_y = height - list_height - 5; + box_x = (width - list_width) / 2 - 1; + + /* create new window for the list */ + list = subwin(dialog, list_height, list_width, y + box_y + 1, + x + box_x + 1); + + keypad(list, TRUE); + + /* draw a box around the list items */ + draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2, + dlg.menubox_border.atr, dlg.menubox.atr); + + /* Find length of longest item in order to center checklist */ + check_x = 0; + item_foreach() + check_x = MAX(check_x, strlen(item_str()) + 4); + check_x = MIN(check_x, list_width); + + check_x = (list_width - check_x) / 2; + item_x = check_x + 4; + + if (choice >= list_height) { + scroll = choice - list_height + 1; + choice -= scroll; + } + + /* Print the list */ + for (i = 0; i < max_choice; i++) { + item_set(scroll + i); + print_item(list, i, i == choice); + } + + print_arrows(dialog, choice, item_count(), scroll, + box_y, box_x + check_x + 5, list_height); + + print_buttons(dialog, height, width, 0); + + wnoutrefresh(dialog); + wnoutrefresh(list); + doupdate(); + + while (key != KEY_ESC) { + key = wgetch(dialog); + + for (i = 0; i < max_choice; i++) { + item_set(i + scroll); + if (toupper(key) == toupper(item_str()[0])) + break; + } + + if (i < max_choice || key == KEY_UP || key == KEY_DOWN || + key == '+' || key == '-') { + if (key == KEY_UP || key == '-') { + if (!choice) { + if (!scroll) + continue; + /* Scroll list down */ + if (list_height > 1) { + /* De-highlight current first item */ + item_set(scroll); + print_item(list, 0, FALSE); + scrollok(list, TRUE); + wscrl(list, -1); + scrollok(list, FALSE); + } + scroll--; + item_set(scroll); + print_item(list, 0, TRUE); + print_arrows(dialog, choice, item_count(), + scroll, box_y, box_x + check_x + 5, list_height); + + wnoutrefresh(dialog); + wrefresh(list); + + continue; /* wait for another key press */ + } else + i = choice - 1; + } else if (key == KEY_DOWN || key == '+') { + if (choice == max_choice - 1) { + if (scroll + choice >= item_count() - 1) + continue; + /* Scroll list up */ + if (list_height > 1) { + /* De-highlight current last item before scrolling up */ + item_set(scroll + max_choice - 1); + print_item(list, + max_choice - 1, + FALSE); + scrollok(list, TRUE); + wscrl(list, 1); + scrollok(list, FALSE); + } + scroll++; + item_set(scroll + max_choice - 1); + print_item(list, max_choice - 1, TRUE); + + print_arrows(dialog, choice, item_count(), + scroll, box_y, box_x + check_x + 5, list_height); + + wnoutrefresh(dialog); + wrefresh(list); + + continue; /* wait for another key press */ + } else + i = choice + 1; + } + if (i != choice) { + /* De-highlight current item */ + item_set(scroll + choice); + print_item(list, choice, FALSE); + /* Highlight new item */ + choice = i; + item_set(scroll + choice); + print_item(list, choice, TRUE); + wnoutrefresh(dialog); + wrefresh(list); + } + continue; /* wait for another key press */ + } + switch (key) { + case 'H': + case 'h': + case '?': + button = 1; + /* fall-through */ + case 'S': + case 's': + case ' ': + case '\n': + item_foreach() + item_set_selected(0); + item_set(scroll + choice); + item_set_selected(1); + delwin(list); + delwin(dialog); + return button; + case TAB: + case KEY_LEFT: + case KEY_RIGHT: + button = ((key == KEY_LEFT ? --button : ++button) < 0) + ? 1 : (button > 1 ? 0 : button); + + print_buttons(dialog, height, width, button); + wrefresh(dialog); + break; + case 'X': + case 'x': + key = KEY_ESC; + break; + case KEY_ESC: + key = on_key_esc(dialog); + break; + case KEY_RESIZE: + delwin(list); + delwin(dialog); + on_key_resize(); + goto do_resize; + } + + /* Now, update everything... */ + doupdate(); + } + delwin(list); + delwin(dialog); + return key; /* ESC pressed */ +} diff --git a/buildroot/support/kconfig/lxdialog/dialog.h b/buildroot/support/kconfig/lxdialog/dialog.h new file mode 100644 index 0000000..b4343d3 --- /dev/null +++ b/buildroot/support/kconfig/lxdialog/dialog.h @@ -0,0 +1,257 @@ +/* + * dialog.h -- common declarations for all dialog modules + * + * AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#ifndef KBUILD_NO_NLS +# include +#else +# define gettext(Msgid) ((const char *) (Msgid)) +#endif + +#ifdef __sun__ +#define CURS_MACROS +#endif +#include CURSES_LOC + +/* + * Colors in ncurses 1.9.9e do not work properly since foreground and + * background colors are OR'd rather than separately masked. This version + * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible + * with standard curses. The simplest fix (to make this work with standard + * curses) uses the wbkgdset() function, not used in the original hack. + * Turn it off if we're building with 1.9.9e, since it just confuses things. + */ +#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE) +#define OLD_NCURSES 1 +#undef wbkgdset +#define wbkgdset(w,p) /*nothing */ +#else +#define OLD_NCURSES 0 +#endif + +#define TR(params) _tracef params + +#define KEY_ESC 27 +#define TAB 9 +#define MAX_LEN 2048 +#define BUF_SIZE (10*1024) +#define MIN(x,y) (x < y ? x : y) +#define MAX(x,y) (x > y ? x : y) + +#ifndef ACS_ULCORNER +#define ACS_ULCORNER '+' +#endif +#ifndef ACS_LLCORNER +#define ACS_LLCORNER '+' +#endif +#ifndef ACS_URCORNER +#define ACS_URCORNER '+' +#endif +#ifndef ACS_LRCORNER +#define ACS_LRCORNER '+' +#endif +#ifndef ACS_HLINE +#define ACS_HLINE '-' +#endif +#ifndef ACS_VLINE +#define ACS_VLINE '|' +#endif +#ifndef ACS_LTEE +#define ACS_LTEE '+' +#endif +#ifndef ACS_RTEE +#define ACS_RTEE '+' +#endif +#ifndef ACS_UARROW +#define ACS_UARROW '^' +#endif +#ifndef ACS_DARROW +#define ACS_DARROW 'v' +#endif + +/* error return codes */ +#define ERRDISPLAYTOOSMALL (KEY_MAX + 1) + +/* + * Color definitions + */ +struct dialog_color { + chtype atr; /* Color attribute */ + int fg; /* foreground */ + int bg; /* background */ + int hl; /* highlight this item */ +}; + +struct subtitle_list { + struct subtitle_list *next; + const char *text; +}; + +struct dialog_info { + const char *backtitle; + struct subtitle_list *subtitles; + struct dialog_color screen; + struct dialog_color shadow; + struct dialog_color dialog; + struct dialog_color title; + struct dialog_color border; + struct dialog_color button_active; + struct dialog_color button_inactive; + struct dialog_color button_key_active; + struct dialog_color button_key_inactive; + struct dialog_color button_label_active; + struct dialog_color button_label_inactive; + struct dialog_color inputbox; + struct dialog_color inputbox_border; + struct dialog_color searchbox; + struct dialog_color searchbox_title; + struct dialog_color searchbox_border; + struct dialog_color position_indicator; + struct dialog_color menubox; + struct dialog_color menubox_border; + struct dialog_color item; + struct dialog_color item_selected; + struct dialog_color tag; + struct dialog_color tag_selected; + struct dialog_color tag_key; + struct dialog_color tag_key_selected; + struct dialog_color check; + struct dialog_color check_selected; + struct dialog_color uarrow; + struct dialog_color darrow; +}; + +/* + * Global variables + */ +extern struct dialog_info dlg; +extern char dialog_input_result[]; +extern int saved_x, saved_y; /* Needed in signal handler in mconf.c */ + +/* + * Function prototypes + */ + +/* item list as used by checklist and menubox */ +void item_reset(void); +void item_make(const char *fmt, ...); +void item_add_str(const char *fmt, ...); +void item_set_tag(char tag); +void item_set_data(void *p); +void item_set_selected(int val); +int item_activate_selected(void); +void *item_data(void); +char item_tag(void); + +/* item list manipulation for lxdialog use */ +#define MAXITEMSTR 200 +struct dialog_item { + char str[MAXITEMSTR]; /* promtp displayed */ + char tag; + void *data; /* pointer to menu item - used by menubox+checklist */ + int selected; /* Set to 1 by dialog_*() function if selected. */ +}; + +/* list of lialog_items */ +struct dialog_list { + struct dialog_item node; + struct dialog_list *next; +}; + +extern struct dialog_list *item_cur; +extern struct dialog_list item_nil; +extern struct dialog_list *item_head; + +int item_count(void); +void item_set(int n); +int item_n(void); +const char *item_str(void); +int item_is_selected(void); +int item_is_tag(char tag); +#define item_foreach() \ + for (item_cur = item_head ? item_head: item_cur; \ + item_cur && (item_cur != &item_nil); item_cur = item_cur->next) + +/* generic key handlers */ +int on_key_esc(WINDOW *win); +int on_key_resize(void); + +/* minimum (re)size values */ +#define CHECKLIST_HEIGTH_MIN 6 /* For dialog_checklist() */ +#define CHECKLIST_WIDTH_MIN 6 +#define INPUTBOX_HEIGTH_MIN 2 /* For dialog_inputbox() */ +#define INPUTBOX_WIDTH_MIN 2 +#define MENUBOX_HEIGTH_MIN 15 /* For dialog_menu() */ +#define MENUBOX_WIDTH_MIN 65 +#define TEXTBOX_HEIGTH_MIN 8 /* For dialog_textbox() */ +#define TEXTBOX_WIDTH_MIN 8 +#define YESNO_HEIGTH_MIN 4 /* For dialog_yesno() */ +#define YESNO_WIDTH_MIN 4 +#define WINDOW_HEIGTH_MIN 19 /* For init_dialog() */ +#define WINDOW_WIDTH_MIN 80 + +int init_dialog(const char *backtitle); +void set_dialog_backtitle(const char *backtitle); +void set_dialog_subtitles(struct subtitle_list *subtitles); +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); +void print_button(WINDOW * win, const char *label, int y, int x, int selected); +void print_title(WINDOW *dialog, const char *title, int width); +void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box, + chtype border); +void draw_shadow(WINDOW * win, int y, int x, int height, int width); + +int first_alpha(const char *string, const char *exempt); +int dialog_yesno(const char *title, const char *prompt, int height, int width); +int dialog_msgbox(const char *title, const char *prompt, int height, + int width, int pause); + + +typedef void (*update_text_fn)(char *buf, size_t start, size_t end, void + *_data); +int dialog_textbox(const char *title, char *tbuf, int initial_height, + int initial_width, int *keys, int *_vscroll, int *_hscroll, + update_text_fn update_text, void *data); +int dialog_menu(const char *title, const char *prompt, + const void *selected, int *s_scroll); +int dialog_checklist(const char *title, const char *prompt, int height, + int width, int list_height); +int dialog_inputbox(const char *title, const char *prompt, int height, + int width, const char *init); + +/* + * This is the base for fictitious keys, which activate + * the buttons. + * + * Mouse-generated keys are the following: + * -- the first 32 are used as numbers, in addition to '0'-'9' + * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o') + * -- uppercase chars are used to invoke the button (M_EVENT + 'O') + */ +#define M_EVENT (KEY_MAX+1) diff --git a/buildroot/support/kconfig/lxdialog/inputbox.c b/buildroot/support/kconfig/lxdialog/inputbox.c new file mode 100644 index 0000000..447a582 --- /dev/null +++ b/buildroot/support/kconfig/lxdialog/inputbox.c @@ -0,0 +1,301 @@ +/* + * inputbox.c -- implements the input box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +char dialog_input_result[MAX_LEN + 1]; + +/* + * Print the termination buttons + */ +static void print_buttons(WINDOW * dialog, int height, int width, int selected) +{ + int x = width / 2 - 11; + int y = height - 2; + + 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); +} + +/* + * Display a dialog box for inputing a string + */ +int dialog_inputbox(const char *title, const char *prompt, int height, int width, + const char *init) +{ + int i, x, y, box_y, box_x, box_width; + int input_x = 0, key = 0, button = -1; + int show_x, len, pos; + char *instr = dialog_input_result; + WINDOW *dialog; + + if (!init) + instr[0] = '\0'; + else + strcpy(instr, init); + +do_resize: + if (getmaxy(stdscr) <= (height - INPUTBOX_HEIGTH_MIN)) + return -ERRDISPLAYTOOSMALL; + if (getmaxx(stdscr) <= (width - INPUTBOX_WIDTH_MIN)) + return -ERRDISPLAYTOOSMALL; + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + /* Draw the input field box */ + box_width = width - 6; + getyx(dialog, y, x); + box_y = y + 2; + box_x = (width - box_width) / 2; + draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2, + dlg.dialog.atr, dlg.border.atr); + + print_buttons(dialog, height, width, 0); + + /* Set up the initial value */ + wmove(dialog, box_y, box_x); + wattrset(dialog, dlg.inputbox.atr); + + len = strlen(instr); + pos = len; + + if (len >= box_width) { + show_x = len - box_width + 1; + input_x = box_width - 1; + for (i = 0; i < box_width - 1; i++) + waddch(dialog, instr[show_x + i]); + } else { + show_x = 0; + input_x = len; + waddstr(dialog, instr); + } + + wmove(dialog, box_y, box_x + input_x); + + wrefresh(dialog); + + while (key != KEY_ESC) { + key = wgetch(dialog); + + if (button == -1) { /* Input box selected */ + switch (key) { + case TAB: + case KEY_UP: + case KEY_DOWN: + break; + case KEY_BACKSPACE: + case 127: + if (pos) { + wattrset(dialog, dlg.inputbox.atr); + if (input_x == 0) { + show_x--; + } else + input_x--; + + if (pos < len) { + for (i = pos - 1; i < len; i++) { + instr[i] = instr[i+1]; + } + } + + pos--; + len--; + instr[len] = '\0'; + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, input_x + box_x); + wrefresh(dialog); + } + continue; + case KEY_LEFT: + if (pos > 0) { + if (input_x > 0) { + wmove(dialog, box_y, --input_x + box_x); + } else if (input_x == 0) { + show_x--; + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, box_x); + } + pos--; + } + continue; + case KEY_RIGHT: + if (pos < len) { + if (input_x < box_width - 1) { + wmove(dialog, box_y, ++input_x + box_x); + } else if (input_x == box_width - 1) { + show_x++; + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, input_x + box_x); + } + pos++; + } + continue; + default: + if (key < 0x100 && isprint(key)) { + if (len < MAX_LEN) { + wattrset(dialog, dlg.inputbox.atr); + if (pos < len) { + for (i = len; i > pos; i--) + instr[i] = instr[i-1]; + instr[pos] = key; + } else { + instr[len] = key; + } + pos++; + len++; + instr[len] = '\0'; + + if (input_x == box_width - 1) { + show_x++; + } else { + input_x++; + } + + wmove(dialog, box_y, box_x); + for (i = 0; i < box_width; i++) { + if (!instr[show_x + i]) { + waddch(dialog, ' '); + break; + } + waddch(dialog, instr[show_x + i]); + } + wmove(dialog, box_y, input_x + box_x); + wrefresh(dialog); + } else + flash(); /* Alarm user about overflow */ + continue; + } + } + } + switch (key) { + case 'O': + case 'o': + delwin(dialog); + return 0; + case 'H': + case 'h': + delwin(dialog); + return 1; + case KEY_UP: + case KEY_LEFT: + switch (button) { + case -1: + button = 1; /* Indicates "Help" button is selected */ + print_buttons(dialog, height, width, 1); + break; + case 0: + button = -1; /* Indicates input box is selected */ + print_buttons(dialog, height, width, 0); + wmove(dialog, box_y, box_x + input_x); + wrefresh(dialog); + break; + case 1: + button = 0; /* Indicates "OK" button is selected */ + print_buttons(dialog, height, width, 0); + break; + } + break; + case TAB: + case KEY_DOWN: + case KEY_RIGHT: + switch (button) { + case -1: + button = 0; /* Indicates "OK" button is selected */ + print_buttons(dialog, height, width, 0); + break; + case 0: + button = 1; /* Indicates "Help" button is selected */ + print_buttons(dialog, height, width, 1); + break; + case 1: + button = -1; /* Indicates input box is selected */ + print_buttons(dialog, height, width, 0); + wmove(dialog, box_y, box_x + input_x); + wrefresh(dialog); + break; + } + break; + case ' ': + case '\n': + delwin(dialog); + return (button == -1 ? 0 : button); + case 'X': + case 'x': + key = KEY_ESC; + break; + case KEY_ESC: + key = on_key_esc(dialog); + break; + case KEY_RESIZE: + delwin(dialog); + on_key_resize(); + goto do_resize; + } + } + + delwin(dialog); + return KEY_ESC; /* ESC pressed */ +} diff --git a/buildroot/support/kconfig/lxdialog/menubox.c b/buildroot/support/kconfig/lxdialog/menubox.c new file mode 100644 index 0000000..b0d0d69 --- /dev/null +++ b/buildroot/support/kconfig/lxdialog/menubox.c @@ -0,0 +1,437 @@ +/* + * menubox.c -- implements the menu box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* + * Changes by Clifford Wolf (god@clifford.at) + * + * [ 1998-06-13 ] + * + * *) A bugfix for the Page-Down problem + * + * *) Formerly when I used Page Down and Page Up, the cursor would be set + * to the first position in the menu box. Now lxdialog is a bit + * smarter and works more like other menu systems (just have a look at + * it). + * + * *) Formerly if I selected something my scrolling would be broken because + * lxdialog is re-invoked by the Menuconfig shell script, can't + * remember the last scrolling position, and just sets it so that the + * cursor is at the bottom of the box. Now it writes the temporary file + * lxdialog.scrltmp which contains this information. The file is + * deleted by lxdialog if the user leaves a submenu or enters a new + * one, but it would be nice if Menuconfig could make another "rm -f" + * just to be sure. Just try it out - you will recognise a difference! + * + * [ 1998-06-14 ] + * + * *) Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files + * and menus change their size on the fly. + * + * *) If for some reason the last scrolling position is not saved by + * lxdialog, it sets the scrolling so that the selected item is in the + * middle of the menu box, not at the bottom. + * + * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net) + * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus. + * This fixes a bug in Menuconfig where using ' ' to descend into menus + * would leave mis-synchronized lxdialog.scrltmp files lying around, + * fscanf would read in 'scroll', and eventually that value would get used. + */ + +#include "dialog.h" + +static int menu_width, item_x; + +/* + * Print menu item + */ +static void do_print_item(WINDOW * win, const char *item, int line_y, + int selected, int hotkey) +{ + int j; + char *menu_item = malloc(menu_width + 1); + + strncpy(menu_item, item, menu_width - item_x); + menu_item[menu_width - item_x] = '\0'; + j = first_alpha(menu_item, "YyNnMmHh"); + + /* Clear 'residue' of last item */ + wattrset(win, dlg.menubox.atr); + wmove(win, line_y, 0); +#if OLD_NCURSES + { + int i; + for (i = 0; i < menu_width; i++) + waddch(win, ' '); + } +#else + wclrtoeol(win); +#endif + wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr); + mvwaddstr(win, line_y, item_x, menu_item); + if (hotkey) { + wattrset(win, selected ? dlg.tag_key_selected.atr + : dlg.tag_key.atr); + mvwaddch(win, line_y, item_x + j, menu_item[j]); + } + if (selected) { + wmove(win, line_y, item_x + 1); + } + free(menu_item); + wrefresh(win); +} + +#define print_item(index, choice, selected) \ +do { \ + item_set(index); \ + do_print_item(menu, item_str(), choice, selected, !item_is_tag(':')); \ +} while (0) + +/* + * Print the scroll indicators. + */ +static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x, + int height) +{ + int cur_y, cur_x; + + getyx(win, cur_y, cur_x); + + wmove(win, y, x); + + if (scroll > 0) { + wattrset(win, dlg.uarrow.atr); + waddch(win, ACS_UARROW); + waddstr(win, "(-)"); + } else { + wattrset(win, dlg.menubox.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + y = y + height + 1; + wmove(win, y, x); + wrefresh(win); + + if ((height < item_no) && (scroll + height < item_no)) { + wattrset(win, dlg.darrow.atr); + waddch(win, ACS_DARROW); + waddstr(win, "(+)"); + } else { + wattrset(win, dlg.menubox_border.atr); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + waddch(win, ACS_HLINE); + } + + wmove(win, cur_y, cur_x); + wrefresh(win); +} + +/* + * Display the termination buttons. + */ +static void print_buttons(WINDOW * win, int height, int width, int selected) +{ + int x = width / 2 - 28; + int y = height - 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); + print_button(win, gettext(" Save "), y, x + 36, selected == 3); + print_button(win, gettext(" Load "), y, x + 48, selected == 4); + + wmove(win, y, x + 1 + 12 * selected); + wrefresh(win); +} + +/* scroll up n lines (n may be negative) */ +static void do_scroll(WINDOW *win, int *scroll, int n) +{ + /* Scroll menu up */ + scrollok(win, TRUE); + wscrl(win, n); + scrollok(win, FALSE); + *scroll = *scroll + n; + wrefresh(win); +} + +/* + * Display a menu for choosing among a number of options + */ +int dialog_menu(const char *title, const char *prompt, + const void *selected, int *s_scroll) +{ + int i, j, x, y, box_x, box_y; + int height, width, menu_height; + int key = 0, button = 0, scroll = 0, choice = 0; + int first_item = 0, max_choice; + WINDOW *dialog, *menu; + +do_resize: + height = getmaxy(stdscr); + width = getmaxx(stdscr); + if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN) + return -ERRDISPLAYTOOSMALL; + + height -= 4; + width -= 5; + menu_height = height - 10; + + max_choice = MIN(menu_height, item_count()); + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + wbkgdset(dialog, dlg.dialog.atr & A_COLOR); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + menu_width = width - 6; + box_y = height - menu_height - 5; + box_x = (width - menu_width) / 2 - 1; + + /* create new window for the menu */ + menu = subwin(dialog, menu_height, menu_width, + y + box_y + 1, x + box_x + 1); + keypad(menu, TRUE); + + /* draw a box around the menu items */ + draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2, + dlg.menubox_border.atr, dlg.menubox.atr); + + if (menu_width >= 80) + item_x = (menu_width - 70) / 2; + else + item_x = 4; + + /* Set choice to default item */ + item_foreach() + if (selected && (selected == item_data())) + choice = item_n(); + /* get the saved scroll info */ + scroll = *s_scroll; + if ((scroll <= choice) && (scroll + max_choice > choice) && + (scroll >= 0) && (scroll + max_choice <= item_count())) { + first_item = scroll; + choice = choice - scroll; + } else { + scroll = 0; + } + if ((choice >= max_choice)) { + if (choice >= item_count() - max_choice / 2) + scroll = first_item = item_count() - max_choice; + else + scroll = first_item = choice - max_choice / 2; + choice = choice - scroll; + } + + /* Print the menu */ + for (i = 0; i < max_choice; i++) { + print_item(first_item + i, i, i == choice); + } + + wnoutrefresh(menu); + + print_arrows(dialog, item_count(), scroll, + box_y, box_x + item_x + 1, menu_height); + + print_buttons(dialog, height, width, 0); + wmove(menu, choice, item_x + 1); + wrefresh(menu); + + while (key != KEY_ESC) { + key = wgetch(menu); + + if (key < 256 && isalpha(key)) + key = tolower(key); + + if (strchr("ynmh ", key)) + i = max_choice; + else { + for (i = choice + 1; i < max_choice; i++) { + item_set(scroll + i); + j = first_alpha(item_str(), "YyNnMmHh"); + if (key == tolower(item_str()[j])) + break; + } + if (i == max_choice) + for (i = 0; i < max_choice; i++) { + item_set(scroll + i); + j = first_alpha(item_str(), "YyNnMmHh"); + if (key == tolower(item_str()[j])) + break; + } + } + + if (item_count() != 0 && + (i < max_choice || + key == KEY_UP || key == KEY_DOWN || + key == '-' || key == '+' || + key == KEY_PPAGE || key == KEY_NPAGE)) { + /* Remove highligt of current item */ + print_item(scroll + choice, choice, FALSE); + + if (key == KEY_UP || key == '-') { + if (choice < 2 && scroll) { + /* Scroll menu down */ + do_scroll(menu, &scroll, -1); + + print_item(scroll, 0, FALSE); + } else + choice = MAX(choice - 1, 0); + + } else if (key == KEY_DOWN || key == '+') { + print_item(scroll+choice, choice, FALSE); + + if ((choice > max_choice - 3) && + (scroll + max_choice < item_count())) { + /* Scroll menu up */ + do_scroll(menu, &scroll, 1); + + print_item(scroll+max_choice - 1, + max_choice - 1, FALSE); + } else + choice = MIN(choice + 1, max_choice - 1); + + } else if (key == KEY_PPAGE) { + scrollok(menu, TRUE); + for (i = 0; (i < max_choice); i++) { + if (scroll > 0) { + do_scroll(menu, &scroll, -1); + print_item(scroll, 0, FALSE); + } else { + if (choice > 0) + choice--; + } + } + + } else if (key == KEY_NPAGE) { + for (i = 0; (i < max_choice); i++) { + if (scroll + max_choice < item_count()) { + do_scroll(menu, &scroll, 1); + print_item(scroll+max_choice-1, + max_choice - 1, FALSE); + } else { + if (choice + 1 < max_choice) + choice++; + } + } + } else + choice = i; + + print_item(scroll + choice, choice, TRUE); + + print_arrows(dialog, item_count(), scroll, + box_y, box_x + item_x + 1, menu_height); + + wnoutrefresh(dialog); + wrefresh(menu); + + continue; /* wait for another key press */ + } + + switch (key) { + case KEY_LEFT: + case TAB: + case KEY_RIGHT: + button = ((key == KEY_LEFT ? --button : ++button) < 0) + ? 4 : (button > 4 ? 0 : button); + + print_buttons(dialog, height, width, button); + wrefresh(menu); + break; + case ' ': + case 's': + case 'y': + case 'n': + case 'm': + case '/': + case 'h': + case '?': + case 'z': + case '\n': + /* save scroll info */ + *s_scroll = scroll; + delwin(menu); + delwin(dialog); + item_set(scroll + choice); + item_set_selected(1); + switch (key) { + case 'h': + case '?': + return 2; + case 's': + case 'y': + return 5; + case 'n': + return 6; + case 'm': + return 7; + case ' ': + return 8; + case '/': + return 9; + case 'z': + return 10; + case '\n': + return button; + } + return 0; + case 'e': + case 'x': + key = KEY_ESC; + break; + case KEY_ESC: + key = on_key_esc(menu); + break; + case KEY_RESIZE: + on_key_resize(); + delwin(menu); + delwin(dialog); + goto do_resize; + } + } + delwin(menu); + delwin(dialog); + return key; /* ESC pressed */ +} diff --git a/buildroot/support/kconfig/lxdialog/textbox.c b/buildroot/support/kconfig/lxdialog/textbox.c new file mode 100644 index 0000000..1773319 --- /dev/null +++ b/buildroot/support/kconfig/lxdialog/textbox.c @@ -0,0 +1,408 @@ +/* + * textbox.c -- implements the text box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +static void back_lines(int n); +static void print_page(WINDOW *win, int height, int width, update_text_fn + update_text, void *data); +static void print_line(WINDOW *win, int row, int width); +static char *get_line(void); +static void print_position(WINDOW * win); + +static int hscroll; +static int begin_reached, end_reached, page_length; +static char *buf; +static char *page; + +/* + * refresh window content + */ +static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw, + int cur_y, int cur_x, update_text_fn update_text, + void *data) +{ + print_page(box, boxh, boxw, update_text, data); + print_position(dialog); + wmove(dialog, cur_y, cur_x); /* Restore cursor position */ + wrefresh(dialog); +} + + +/* + * Display text from a file in a dialog box. + * + * keys is a null-terminated array + * update_text() may not add or remove any '\n' or '\0' in tbuf + */ +int dialog_textbox(const char *title, char *tbuf, int initial_height, + int initial_width, int *keys, int *_vscroll, int *_hscroll, + update_text_fn update_text, void *data) +{ + int i, x, y, cur_x, cur_y, key = 0; + int height, width, boxh, boxw; + WINDOW *dialog, *box; + bool done = false; + + begin_reached = 1; + end_reached = 0; + page_length = 0; + hscroll = 0; + buf = tbuf; + page = buf; /* page is pointer to start of page to be displayed */ + + if (_vscroll && *_vscroll) { + begin_reached = 0; + + for (i = 0; i < *_vscroll; i++) + get_line(); + } + if (_hscroll) + hscroll = *_hscroll; + +do_resize: + getmaxyx(stdscr, height, width); + if (height < TEXTBOX_HEIGTH_MIN || width < TEXTBOX_WIDTH_MIN) + return -ERRDISPLAYTOOSMALL; + if (initial_height != 0) + height = initial_height; + else + if (height > 4) + height -= 4; + else + height = 0; + if (initial_width != 0) + width = initial_width; + else + if (width > 5) + width -= 5; + else + width = 0; + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + /* Create window for box region, used for scrolling text */ + boxh = height - 4; + boxw = width - 2; + box = subwin(dialog, boxh, boxw, y + 1, x + 1); + wattrset(box, dlg.dialog.atr); + wbkgdset(box, dlg.dialog.atr & A_COLOR); + + keypad(box, TRUE); + + /* register the new window, along with its borders */ + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + wbkgdset(dialog, dlg.dialog.atr & A_COLOR); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE); + wnoutrefresh(dialog); + getyx(dialog, cur_y, cur_x); /* Save cursor position */ + + /* Print first page of text */ + attr_clear(box, boxh, boxw, dlg.dialog.atr); + refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x, update_text, + data); + + while (!done) { + key = wgetch(dialog); + switch (key) { + case 'E': /* Exit */ + case 'e': + case 'X': + case 'x': + case 'q': + case '\n': + done = true; + break; + case 'g': /* First page */ + case KEY_HOME: + if (!begin_reached) { + begin_reached = 1; + page = buf; + refresh_text_box(dialog, box, boxh, boxw, + cur_y, cur_x, update_text, + data); + } + break; + case 'G': /* Last page */ + case KEY_END: + + end_reached = 1; + /* point to last char in buf */ + page = buf + strlen(buf); + back_lines(boxh); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'K': /* Previous line */ + case 'k': + case KEY_UP: + if (begin_reached) + break; + + back_lines(page_length + 1); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'B': /* Previous page */ + case 'b': + case 'u': + case KEY_PPAGE: + if (begin_reached) + break; + back_lines(page_length + boxh); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'J': /* Next line */ + case 'j': + case KEY_DOWN: + if (end_reached) + break; + + back_lines(page_length - 1); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case KEY_NPAGE: /* Next page */ + case ' ': + case 'd': + if (end_reached) + break; + + begin_reached = 0; + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case '0': /* Beginning of line */ + case 'H': /* Scroll left */ + case 'h': + case KEY_LEFT: + if (hscroll <= 0) + break; + + if (key == '0') + hscroll = 0; + else + hscroll--; + /* Reprint current page to scroll horizontally */ + back_lines(page_length); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case 'L': /* Scroll right */ + case 'l': + case KEY_RIGHT: + if (hscroll >= MAX_LEN) + break; + hscroll++; + /* Reprint current page to scroll horizontally */ + back_lines(page_length); + refresh_text_box(dialog, box, boxh, boxw, cur_y, + cur_x, update_text, data); + break; + case KEY_ESC: + if (on_key_esc(dialog) == KEY_ESC) + done = true; + break; + case KEY_RESIZE: + back_lines(height); + delwin(box); + delwin(dialog); + on_key_resize(); + goto do_resize; + default: + for (i = 0; keys[i]; i++) { + if (key == keys[i]) { + done = true; + break; + } + } + } + } + delwin(box); + delwin(dialog); + if (_vscroll) { + const char *s; + + s = buf; + *_vscroll = 0; + back_lines(page_length); + while (s < page && (s = strchr(s, '\n'))) { + (*_vscroll)++; + s++; + } + } + if (_hscroll) + *_hscroll = hscroll; + return key; +} + +/* + * Go back 'n' lines in text. Called by dialog_textbox(). + * 'page' will be updated to point to the desired line in 'buf'. + */ +static void back_lines(int n) +{ + int i; + + begin_reached = 0; + /* Go back 'n' lines */ + for (i = 0; i < n; i++) { + if (*page == '\0') { + if (end_reached) { + end_reached = 0; + continue; + } + } + if (page == buf) { + begin_reached = 1; + return; + } + page--; + do { + if (page == buf) { + begin_reached = 1; + return; + } + page--; + } while (*page != '\n'); + page++; + } +} + +/* + * Print a new page of text. + */ +static void print_page(WINDOW *win, int height, int width, update_text_fn + update_text, void *data) +{ + int i, passed_end = 0; + + if (update_text) { + char *end; + + for (i = 0; i < height; i++) + get_line(); + end = page; + back_lines(height); + update_text(buf, page - buf, end - buf, data); + } + + page_length = 0; + for (i = 0; i < height; i++) { + print_line(win, i, width); + if (!passed_end) + page_length++; + if (end_reached && !passed_end) + passed_end = 1; + } + wnoutrefresh(win); +} + +/* + * Print a new line of text. + */ +static void print_line(WINDOW * win, int row, int width) +{ + char *line; + + line = get_line(); + line += MIN(strlen(line), hscroll); /* Scroll horizontally */ + wmove(win, row, 0); /* move cursor to correct line */ + waddch(win, ' '); + waddnstr(win, line, MIN(strlen(line), width - 2)); + + /* Clear 'residue' of previous line */ +#if OLD_NCURSES + { + int x = getcurx(win); + int i; + for (i = 0; i < width - x; i++) + waddch(win, ' '); + } +#else + wclrtoeol(win); +#endif +} + +/* + * Return current line of text. Called by dialog_textbox() and print_line(). + * 'page' should point to start of current line before calling, and will be + * updated to point to start of next line. + */ +static char *get_line(void) +{ + int i = 0; + static char line[MAX_LEN + 1]; + + end_reached = 0; + while (*page != '\n') { + if (*page == '\0') { + end_reached = 1; + break; + } else if (i < MAX_LEN) + line[i++] = *(page++); + else { + /* Truncate lines longer than MAX_LEN characters */ + if (i == MAX_LEN) + line[i++] = '\0'; + page++; + } + } + if (i <= MAX_LEN) + line[i] = '\0'; + if (!end_reached) + page++; /* move past '\n' */ + + return line; +} + +/* + * Print current position + */ +static void print_position(WINDOW * win) +{ + int percent; + + wattrset(win, dlg.position_indicator.atr); + wbkgdset(win, dlg.position_indicator.atr & A_COLOR); + percent = (page - buf) * 100 / strlen(buf); + wmove(win, getmaxy(win) - 3, getmaxx(win) - 9); + wprintw(win, "(%3d%%)", percent); +} diff --git a/buildroot/support/kconfig/lxdialog/util.c b/buildroot/support/kconfig/lxdialog/util.c new file mode 100644 index 0000000..58a8289 --- /dev/null +++ b/buildroot/support/kconfig/lxdialog/util.c @@ -0,0 +1,713 @@ +/* + * util.c + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include + +#include "dialog.h" + +/* Needed in signal handler in mconf.c */ +int saved_x, saved_y; + +struct dialog_info dlg; + +static void set_mono_theme(void) +{ + dlg.screen.atr = A_NORMAL; + dlg.shadow.atr = A_NORMAL; + dlg.dialog.atr = A_NORMAL; + dlg.title.atr = A_BOLD; + dlg.border.atr = A_NORMAL; + dlg.button_active.atr = A_REVERSE; + dlg.button_inactive.atr = A_DIM; + dlg.button_key_active.atr = A_REVERSE; + dlg.button_key_inactive.atr = A_BOLD; + dlg.button_label_active.atr = A_REVERSE; + dlg.button_label_inactive.atr = A_NORMAL; + dlg.inputbox.atr = A_NORMAL; + dlg.inputbox_border.atr = A_NORMAL; + dlg.searchbox.atr = A_NORMAL; + dlg.searchbox_title.atr = A_BOLD; + dlg.searchbox_border.atr = A_NORMAL; + dlg.position_indicator.atr = A_BOLD; + dlg.menubox.atr = A_NORMAL; + dlg.menubox_border.atr = A_NORMAL; + dlg.item.atr = A_NORMAL; + dlg.item_selected.atr = A_REVERSE; + dlg.tag.atr = A_BOLD; + dlg.tag_selected.atr = A_REVERSE; + dlg.tag_key.atr = A_BOLD; + dlg.tag_key_selected.atr = A_REVERSE; + dlg.check.atr = A_BOLD; + dlg.check_selected.atr = A_REVERSE; + dlg.uarrow.atr = A_BOLD; + dlg.darrow.atr = A_BOLD; +} + +#define DLG_COLOR(dialog, f, b, h) \ +do { \ + dlg.dialog.fg = (f); \ + dlg.dialog.bg = (b); \ + dlg.dialog.hl = (h); \ +} while (0) + +static void set_classic_theme(void) +{ + DLG_COLOR(screen, COLOR_CYAN, COLOR_BLUE, true); + DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, true); + DLG_COLOR(dialog, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(title, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(border, COLOR_WHITE, COLOR_WHITE, true); + DLG_COLOR(button_active, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(button_inactive, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(button_key_active, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_WHITE, false); + DLG_COLOR(button_label_active, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_WHITE, true); + DLG_COLOR(inputbox, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(inputbox_border, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(searchbox, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(searchbox_border, COLOR_WHITE, COLOR_WHITE, true); + DLG_COLOR(position_indicator, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(menubox, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(menubox_border, COLOR_WHITE, COLOR_WHITE, true); + DLG_COLOR(item, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(item_selected, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(tag, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(tag_key, COLOR_YELLOW, COLOR_WHITE, true); + DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(check, COLOR_BLACK, COLOR_WHITE, false); + DLG_COLOR(check_selected, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(uarrow, COLOR_GREEN, COLOR_WHITE, true); + DLG_COLOR(darrow, COLOR_GREEN, COLOR_WHITE, true); +} + +static void set_blackbg_theme(void) +{ + DLG_COLOR(screen, COLOR_RED, COLOR_BLACK, true); + DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, false); + DLG_COLOR(dialog, COLOR_WHITE, COLOR_BLACK, false); + DLG_COLOR(title, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(border, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(button_active, COLOR_YELLOW, COLOR_RED, false); + DLG_COLOR(button_inactive, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_RED, true); + DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_RED, false); + DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(inputbox, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(inputbox_border, COLOR_YELLOW, COLOR_BLACK, false); + + DLG_COLOR(searchbox, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_BLACK, true); + DLG_COLOR(searchbox_border, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(position_indicator, COLOR_RED, COLOR_BLACK, false); + + DLG_COLOR(menubox, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(menubox_border, COLOR_BLACK, COLOR_BLACK, true); + + DLG_COLOR(item, COLOR_WHITE, COLOR_BLACK, false); + DLG_COLOR(item_selected, COLOR_WHITE, COLOR_RED, false); + + DLG_COLOR(tag, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_RED, true); + DLG_COLOR(tag_key, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_RED, true); + + DLG_COLOR(check, COLOR_YELLOW, COLOR_BLACK, false); + DLG_COLOR(check_selected, COLOR_YELLOW, COLOR_RED, true); + + DLG_COLOR(uarrow, COLOR_RED, COLOR_BLACK, false); + DLG_COLOR(darrow, COLOR_RED, COLOR_BLACK, false); +} + +static void set_bluetitle_theme(void) +{ + set_classic_theme(); + DLG_COLOR(title, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_BLUE, true); + DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_BLUE, true); + DLG_COLOR(searchbox_title, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(position_indicator, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(tag, COLOR_BLUE, COLOR_WHITE, true); + DLG_COLOR(tag_key, COLOR_BLUE, COLOR_WHITE, true); + +} + +/* + * Select color theme + */ +static int set_theme(const char *theme) +{ + int use_color = 1; + if (!theme) + set_bluetitle_theme(); + else if (strcmp(theme, "classic") == 0) + set_classic_theme(); + else if (strcmp(theme, "bluetitle") == 0) + set_bluetitle_theme(); + else if (strcmp(theme, "blackbg") == 0) + set_blackbg_theme(); + else if (strcmp(theme, "mono") == 0) + use_color = 0; + + return use_color; +} + +static void init_one_color(struct dialog_color *color) +{ + static int pair = 0; + + pair++; + init_pair(pair, color->fg, color->bg); + if (color->hl) + color->atr = A_BOLD | COLOR_PAIR(pair); + else + color->atr = COLOR_PAIR(pair); +} + +static void init_dialog_colors(void) +{ + init_one_color(&dlg.screen); + init_one_color(&dlg.shadow); + init_one_color(&dlg.dialog); + init_one_color(&dlg.title); + init_one_color(&dlg.border); + init_one_color(&dlg.button_active); + init_one_color(&dlg.button_inactive); + init_one_color(&dlg.button_key_active); + init_one_color(&dlg.button_key_inactive); + init_one_color(&dlg.button_label_active); + init_one_color(&dlg.button_label_inactive); + init_one_color(&dlg.inputbox); + init_one_color(&dlg.inputbox_border); + init_one_color(&dlg.searchbox); + init_one_color(&dlg.searchbox_title); + init_one_color(&dlg.searchbox_border); + init_one_color(&dlg.position_indicator); + init_one_color(&dlg.menubox); + init_one_color(&dlg.menubox_border); + init_one_color(&dlg.item); + init_one_color(&dlg.item_selected); + init_one_color(&dlg.tag); + init_one_color(&dlg.tag_selected); + init_one_color(&dlg.tag_key); + init_one_color(&dlg.tag_key_selected); + init_one_color(&dlg.check); + init_one_color(&dlg.check_selected); + init_one_color(&dlg.uarrow); + init_one_color(&dlg.darrow); +} + +/* + * Setup for color display + */ +static void color_setup(const char *theme) +{ + int use_color; + + use_color = set_theme(theme); + if (use_color && has_colors()) { + start_color(); + init_dialog_colors(); + } else + set_mono_theme(); +} + +/* + * Set window to attribute 'attr' + */ +void attr_clear(WINDOW * win, int height, int width, chtype attr) +{ + int i, j; + + wattrset(win, attr); + for (i = 0; i < height; i++) { + wmove(win, i, 0); + for (j = 0; j < width; j++) + waddch(win, ' '); + } + touchwin(win); +} + +void dialog_clear(void) +{ + int lines, columns; + + lines = getmaxy(stdscr); + columns = getmaxx(stdscr); + + attr_clear(stdscr, lines, columns, dlg.screen.atr); + /* Display background title if it exists ... - SLH */ + if (dlg.backtitle != NULL) { + int i, len = 0, skip = 0; + struct subtitle_list *pos; + + wattrset(stdscr, dlg.screen.atr); + mvwaddstr(stdscr, 0, 1, (char *)dlg.backtitle); + + for (pos = dlg.subtitles; pos != NULL; pos = pos->next) { + /* 3 is for the arrow and spaces */ + len += strlen(pos->text) + 3; + } + + wmove(stdscr, 1, 1); + if (len > columns - 2) { + const char *ellipsis = "[...] "; + waddstr(stdscr, ellipsis); + skip = len - (columns - 2 - strlen(ellipsis)); + } + + for (pos = dlg.subtitles; pos != NULL; pos = pos->next) { + if (skip == 0) + waddch(stdscr, ACS_RARROW); + else + skip--; + + if (skip == 0) + waddch(stdscr, ' '); + else + skip--; + + if (skip < strlen(pos->text)) { + waddstr(stdscr, pos->text + skip); + skip = 0; + } else + skip -= strlen(pos->text); + + if (skip == 0) + waddch(stdscr, ' '); + else + skip--; + } + + for (i = len + 1; i < columns - 1; i++) + waddch(stdscr, ACS_HLINE); + } + wnoutrefresh(stdscr); +} + +/* + * Do some initialization for dialog + */ +int init_dialog(const char *backtitle) +{ + int height, width; + + initscr(); /* Init curses */ + + /* Get current cursor position for signal handler in mconf.c */ + getyx(stdscr, saved_y, saved_x); + + getmaxyx(stdscr, height, width); + if (height < WINDOW_HEIGTH_MIN || width < WINDOW_WIDTH_MIN) { + 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) +{ + dlg.backtitle = backtitle; +} + +void set_dialog_subtitles(struct subtitle_list *subtitles) +{ + dlg.subtitles = subtitles; +} + +/* + * End using dialog functions. + */ +void end_dialog(int x, int y) +{ + /* move cursor back to original position */ + move(y, x); + refresh(); + endwin(); +} + +/* Print the title of the dialog. Center the title and truncate + * tile if wider than dialog (- 2 chars). + **/ +void print_title(WINDOW *dialog, const char *title, int width) +{ + if (title) { + int tlen = MIN(width - 2, strlen(title)); + wattrset(dialog, dlg.title.atr); + mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' '); + mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen); + waddch(dialog, ' '); + } +} + +/* + * Print a string of text in a window, automatically wrap around to the + * next line if the string is too long to fit on one line. Newline + * characters '\n' are propperly processed. We start on a new line + * if there is no room for at least 4 nonblanks following a double-space. + */ +void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x) +{ + int newl, cur_x, cur_y; + int prompt_len, room, wlen; + char tempstr[MAX_LEN + 1], *word, *sp, *sp2, *newline_separator = 0; + + strcpy(tempstr, prompt); + + prompt_len = strlen(tempstr); + + if (prompt_len <= width - x * 2) { /* If prompt is short */ + wmove(win, y, (width - prompt_len) / 2); + waddstr(win, tempstr); + } else { + cur_x = x; + cur_y = y; + newl = 1; + word = tempstr; + while (word && *word) { + sp = strpbrk(word, "\n "); + if (sp && *sp == '\n') + newline_separator = sp; + + if (sp) + *sp++ = 0; + + /* Wrap to next line if either the word does not fit, + or it is the first word of a new sentence, and it is + short, and the next word does not fit. */ + room = width - cur_x; + wlen = strlen(word); + if (wlen > room || + (newl && wlen < 4 && sp + && wlen + 1 + strlen(sp) > room + && (!(sp2 = strpbrk(sp, "\n ")) + || wlen + 1 + (sp2 - sp) > room))) { + cur_y++; + cur_x = x; + } + wmove(win, cur_y, cur_x); + waddstr(win, word); + getyx(win, cur_y, cur_x); + + /* Move to the next line if the word separator was a newline */ + if (newline_separator) { + cur_y++; + cur_x = x; + newline_separator = 0; + } else + cur_x++; + + if (sp && *sp == ' ') { + cur_x++; /* double space */ + while (*++sp == ' ') ; + newl = 1; + } else + newl = 0; + word = sp; + } + } +} + +/* + * Print a button + */ +void print_button(WINDOW * win, const char *label, int y, int x, int selected) +{ + int i, temp; + + wmove(win, y, x); + wattrset(win, selected ? dlg.button_active.atr + : dlg.button_inactive.atr); + waddstr(win, "<"); + temp = strspn(label, " "); + label += temp; + wattrset(win, selected ? dlg.button_label_active.atr + : dlg.button_label_inactive.atr); + for (i = 0; i < temp; i++) + waddch(win, ' '); + wattrset(win, selected ? dlg.button_key_active.atr + : dlg.button_key_inactive.atr); + waddch(win, label[0]); + wattrset(win, selected ? dlg.button_label_active.atr + : dlg.button_label_inactive.atr); + waddstr(win, (char *)label + 1); + wattrset(win, selected ? dlg.button_active.atr + : dlg.button_inactive.atr); + waddstr(win, ">"); + wmove(win, y, x + temp + 1); +} + +/* + * Draw a rectangular box with line drawing characters + */ +void +draw_box(WINDOW * win, int y, int x, int height, int width, + chtype box, chtype border) +{ + int i, j; + + wattrset(win, 0); + for (i = 0; i < height; i++) { + wmove(win, y + i, x); + for (j = 0; j < width; j++) + if (!i && !j) + waddch(win, border | ACS_ULCORNER); + else if (i == height - 1 && !j) + waddch(win, border | ACS_LLCORNER); + else if (!i && j == width - 1) + waddch(win, box | ACS_URCORNER); + else if (i == height - 1 && j == width - 1) + waddch(win, box | ACS_LRCORNER); + else if (!i) + waddch(win, border | ACS_HLINE); + else if (i == height - 1) + waddch(win, box | ACS_HLINE); + else if (!j) + waddch(win, border | ACS_VLINE); + else if (j == width - 1) + waddch(win, box | ACS_VLINE); + else + waddch(win, box | ' '); + } +} + +/* + * Draw shadows along the right and bottom edge to give a more 3D look + * to the boxes + */ +void draw_shadow(WINDOW * win, int y, int x, int height, int width) +{ + int i; + + if (has_colors()) { /* Whether terminal supports color? */ + wattrset(win, dlg.shadow.atr); + wmove(win, y + height, x + 2); + for (i = 0; i < width; i++) + waddch(win, winch(win) & A_CHARTEXT); + for (i = y + 1; i < y + height + 1; i++) { + wmove(win, i, x + width); + waddch(win, winch(win) & A_CHARTEXT); + waddch(win, winch(win) & A_CHARTEXT); + } + wnoutrefresh(win); + } +} + +/* + * Return the position of the first alphabetic character in a string. + */ +int first_alpha(const char *string, const char *exempt) +{ + int i, in_paren = 0, c; + + for (i = 0; i < strlen(string); i++) { + c = tolower(string[i]); + + if (strchr("<[(", c)) + ++in_paren; + if (strchr(">])", c) && in_paren > 0) + --in_paren; + + if ((!in_paren) && isalpha(c) && strchr(exempt, c) == 0) + return i; + } + + return 0; +} + +/* + * ncurses uses ESC to detect escaped char sequences. This resutl in + * a small timeout before ESC is actually delivered to the application. + * lxdialog suggest which is correctly translated to two + * times esc. But then we need to ignore the second esc to avoid stepping + * out one menu too much. Filter away all escaped key sequences since + * keypad(FALSE) turn off ncurses support for escape sequences - and thats + * needed to make notimeout() do as expected. + */ +int on_key_esc(WINDOW *win) +{ + int key; + int key2; + int key3; + + nodelay(win, TRUE); + keypad(win, FALSE); + key = wgetch(win); + key2 = wgetch(win); + do { + key3 = wgetch(win); + } while (key3 != ERR); + nodelay(win, FALSE); + keypad(win, TRUE); + if (key == KEY_ESC && key2 == ERR) + return KEY_ESC; + else if (key != ERR && key != KEY_ESC && key2 == ERR) + ungetch(key); + + return -1; +} + +/* redraw screen in new size */ +int on_key_resize(void) +{ + dialog_clear(); + return KEY_RESIZE; +} + +struct dialog_list *item_cur; +struct dialog_list item_nil; +struct dialog_list *item_head; + +void item_reset(void) +{ + struct dialog_list *p, *next; + + for (p = item_head; p; p = next) { + next = p->next; + free(p); + } + item_head = NULL; + item_cur = &item_nil; +} + +void item_make(const char *fmt, ...) +{ + va_list ap; + struct dialog_list *p = malloc(sizeof(*p)); + + if (item_head) + item_cur->next = p; + else + item_head = p; + item_cur = p; + memset(p, 0, sizeof(*p)); + + va_start(ap, fmt); + vsnprintf(item_cur->node.str, sizeof(item_cur->node.str), fmt, ap); + va_end(ap); +} + +void item_add_str(const char *fmt, ...) +{ + va_list ap; + size_t avail; + + avail = sizeof(item_cur->node.str) - strlen(item_cur->node.str); + + va_start(ap, fmt); + vsnprintf(item_cur->node.str + strlen(item_cur->node.str), + avail, fmt, ap); + item_cur->node.str[sizeof(item_cur->node.str) - 1] = '\0'; + va_end(ap); +} + +void item_set_tag(char tag) +{ + item_cur->node.tag = tag; +} +void item_set_data(void *ptr) +{ + item_cur->node.data = ptr; +} + +void item_set_selected(int val) +{ + item_cur->node.selected = val; +} + +int item_activate_selected(void) +{ + item_foreach() + if (item_is_selected()) + return 1; + return 0; +} + +void *item_data(void) +{ + return item_cur->node.data; +} + +char item_tag(void) +{ + return item_cur->node.tag; +} + +int item_count(void) +{ + int n = 0; + struct dialog_list *p; + + for (p = item_head; p; p = p->next) + n++; + return n; +} + +void item_set(int n) +{ + int i = 0; + item_foreach() + if (i++ == n) + return; +} + +int item_n(void) +{ + int n = 0; + struct dialog_list *p; + + for (p = item_head; p; p = p->next) { + if (p == item_cur) + return n; + n++; + } + return 0; +} + +const char *item_str(void) +{ + return item_cur->node.str; +} + +int item_is_selected(void) +{ + return (item_cur->node.selected != 0); +} + +int item_is_tag(char tag) +{ + return (item_cur->node.tag == tag); +} diff --git a/buildroot/support/kconfig/lxdialog/yesno.c b/buildroot/support/kconfig/lxdialog/yesno.c new file mode 100644 index 0000000..676fb2f --- /dev/null +++ b/buildroot/support/kconfig/lxdialog/yesno.c @@ -0,0 +1,114 @@ +/* + * yesno.c -- implements the yes/no box + * + * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) + * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "dialog.h" + +/* + * Display termination buttons + */ +static void print_buttons(WINDOW * dialog, int height, int width, int selected) +{ + int x = width / 2 - 10; + int y = height - 2; + + 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); +} + +/* + * Display a dialog box with two buttons - Yes and No + */ +int dialog_yesno(const char *title, const char *prompt, int height, int width) +{ + int i, x, y, key = 0, button = 0; + WINDOW *dialog; + +do_resize: + if (getmaxy(stdscr) < (height + YESNO_HEIGTH_MIN)) + return -ERRDISPLAYTOOSMALL; + if (getmaxx(stdscr) < (width + YESNO_WIDTH_MIN)) + return -ERRDISPLAYTOOSMALL; + + /* center dialog box on screen */ + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; + + draw_shadow(stdscr, y, x, height, width); + + dialog = newwin(height, width, y, x); + keypad(dialog, TRUE); + + draw_box(dialog, 0, 0, height, width, + dlg.dialog.atr, dlg.border.atr); + wattrset(dialog, dlg.border.atr); + mvwaddch(dialog, height - 3, 0, ACS_LTEE); + for (i = 0; i < width - 2; i++) + waddch(dialog, ACS_HLINE); + wattrset(dialog, dlg.dialog.atr); + waddch(dialog, ACS_RTEE); + + print_title(dialog, title, width); + + wattrset(dialog, dlg.dialog.atr); + print_autowrap(dialog, prompt, width - 2, 1, 3); + + print_buttons(dialog, height, width, 0); + + while (key != KEY_ESC) { + key = wgetch(dialog); + switch (key) { + case 'Y': + case 'y': + delwin(dialog); + return 0; + case 'N': + case 'n': + delwin(dialog); + return 1; + + case TAB: + case KEY_LEFT: + case KEY_RIGHT: + button = ((key == KEY_LEFT ? --button : ++button) < 0) ? 1 : (button > 1 ? 0 : button); + + print_buttons(dialog, height, width, button); + wrefresh(dialog); + break; + case ' ': + case '\n': + delwin(dialog); + return button; + case KEY_ESC: + key = on_key_esc(dialog); + break; + case KEY_RESIZE: + delwin(dialog); + on_key_resize(); + goto do_resize; + } + } + + delwin(dialog); + return key; /* ESC pressed */ +} diff --git a/buildroot/support/kconfig/mconf.c b/buildroot/support/kconfig/mconf.c new file mode 100644 index 0000000..91c4df7 --- /dev/null +++ b/buildroot/support/kconfig/mconf.c @@ -0,0 +1,1037 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + * + * Introduced single menu mode (show all sub-menus in one large tree). + * 2002-11-06 Petr Baudis + * + * i18n, 2005, Arnaldo Carvalho de Melo + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "lkc.h" +#include "lxdialog/dialog.h" + +static const char mconf_readme[] = N_( +"Overview\n" +"--------\n" +"This interface lets you select features and parameters for the build.\n" +"Features can either be built-in, modularized, or ignored. Parameters\n" +"must be entered in as decimal or hexadecimal numbers or text.\n" +"\n" +"Menu items beginning with following braces represent features that\n" +" [ ] can be built in or removed\n" +" < > can be built in, modularized or removed\n" +" { } can be built in or modularized (selected by other feature)\n" +" - - are selected by other feature,\n" +"while *, M or whitespace inside braces means to build in, build as\n" +"a module or to exclude the feature respectively.\n" +"\n" +"To change any of these features, highlight it with the cursor\n" +"keys and press to build it in, to make it a module or\n" +" to remove it. You may also press the to cycle\n" +"through the available options (i.e. Y->N->M->Y).\n" +"\n" +"Some additional keyboard hints:\n" +"\n" +"Menus\n" +"----------\n" +"o Use the Up/Down arrow keys (cursor keys) to highlight the item you\n" +" wish to change or the submenu you wish to select and press .\n" +" Submenus are designated by \"--->\", empty ones by \"----\".\n" +"\n" +" Shortcut: Press the option's highlighted letter (hotkey).\n" +" Pressing a hotkey more than once will sequence\n" +" through all visible items which use that hotkey.\n" +"\n" +" You may also use the and keys to scroll\n" +" unseen options into view.\n" +"\n" +"o To exit a menu use the cursor keys to highlight the button\n" +" and press .\n" +"\n" +" Shortcut: Press or or if there is no hotkey\n" +" using those letters. You may press a single , but\n" +" there is a delayed response which you may find annoying.\n" +"\n" +" Also, the and cursor keys will cycle between and\n" +" \n" +"\n" +"\n" +"Data Entry\n" +"-----------\n" +"o Enter the requested information and press \n" +" If you are entering hexadecimal values, it is not necessary to\n" +" add the '0x' prefix to the entry.\n" +"\n" +"o For help, use the or cursor keys to highlight the help option\n" +" and press . You can try as well.\n" +"\n" +"\n" +"Text Box (Help Window)\n" +"--------\n" +"o Use the cursor keys to scroll up/down/left/right. The VI editor\n" +" keys h,j,k,l function here as do , , and for\n" +" those who are familiar with less and lynx.\n" +"\n" +"o Press , , , or to exit.\n" +"\n" +"\n" +"Alternate Configuration Files\n" +"-----------------------------\n" +"Menuconfig supports the use of alternate configuration files for\n" +"those who, for various reasons, find it necessary to switch\n" +"between different configurations.\n" +"\n" +"The button will let you save the current configuration to\n" +"a file of your choosing. Use the button to load a previously\n" +"saved alternate configuration.\n" +"\n" +"Even if you don't use alternate configuration files, but you find\n" +"during a Menuconfig session that you have completely messed up your\n" +"settings, you may use the button to restore your previously\n" +"saved settings from \".config\" without restarting Menuconfig.\n" +"\n" +"Other information\n" +"-----------------\n" +"If you use Menuconfig in an XTERM window, make sure you have your\n" +"$TERM variable set to point to an xterm definition which supports\n" +"color. Otherwise, Menuconfig will look rather bad. Menuconfig will\n" +"not display correctly in an RXVT window because rxvt displays only one\n" +"intensity of color, bright.\n" +"\n" +"Menuconfig will display larger menus on screens or xterms which are\n" +"set to display more than the standard 25 row by 80 column geometry.\n" +"In order for this to work, the \"stty size\" command must be able to\n" +"display the screen's current row and column geometry. I STRONGLY\n" +"RECOMMEND that you make sure you do NOT have the shell variables\n" +"LINES and COLUMNS exported into your environment. Some distributions\n" +"export those variables via /etc/profile. Some ncurses programs can\n" +"become confused when those variables (LINES & COLUMNS) don't reflect\n" +"the true screen size.\n" +"\n" +"Optional personality available\n" +"------------------------------\n" +"If you prefer to have all of the options listed in a single menu,\n" +"rather than the default multimenu hierarchy, run the menuconfig with\n" +"MENUCONFIG_MODE environment variable set to single_menu. Example:\n" +"\n" +"make MENUCONFIG_MODE=single_menu menuconfig\n" +"\n" +" will then unroll the appropriate category, or enfold it if it\n" +"is already unrolled.\n" +"\n" +"Note that this mode can eventually be a little more CPU expensive\n" +"(especially with a larger number of unrolled categories) than the\n" +"default mode.\n" +"\n" +"Different color themes available\n" +"--------------------------------\n" +"It is possible to select different color themes using the variable\n" +"MENUCONFIG_COLOR. To select a theme use:\n" +"\n" +"make MENUCONFIG_COLOR= menuconfig\n" +"\n" +"Available themes are\n" +" mono => selects colors suitable for monochrome displays\n" +" blackbg => selects a color scheme with black background\n" +" classic => theme with blue background. The classic look\n" +" bluetitle => an LCD friendly version of classic. (default)\n" +"\n"), +menu_instructions[] = N_( + "Arrow keys navigate the menu. " + " selects submenus ---> (or empty submenus ----). " + "Highlighted letters are hotkeys. " + "Pressing selects a feature, while excludes a feature. " + "Press to exit, for Help, for Search. " + "Legend: [*] feature is selected [ ] feature is excluded"), +radiolist_instructions[] = N_( + "Use the arrow keys to navigate this window or " + "press the hotkey of the item you wish to select " + "followed by the . " + "Press for additional information about this option."), +inputbox_instructions_int[] = N_( + "Please enter a decimal value. " + "Fractions will not be accepted. " + "Use the key to move from the input field to the buttons below it."), +inputbox_instructions_hex[] = N_( + "Please enter a hexadecimal value. " + "Use the key to move from the input field to the buttons below it."), +inputbox_instructions_string[] = N_( + "Please enter a string value. " + "Use the key to move from the input field to the buttons below it."), +setmod_text[] = N_( + "This feature depends on another which has been configured as a module.\n" + "As a result, this feature will be built as a module."), +load_config_text[] = N_( + "Enter the name of the configuration file you wish to load. " + "Accept the name shown to restore the configuration you " + "last retrieved. Leave blank to abort."), +load_config_help[] = N_( + "\n" + "For various reasons, one may wish to keep several different\n" + "configurations available on a single machine.\n" + "\n" + "If you have saved a previous configuration in a file other than the\n" + "default one, entering its name here will allow you to modify that\n" + "configuration.\n" + "\n" + "If you are uncertain, then you have probably never used alternate\n" + "configuration files. You should therefore leave this blank to abort.\n"), +save_config_text[] = N_( + "Enter a filename to which this configuration should be saved " + "as an alternate. Leave blank to abort."), +save_config_help[] = N_( + "\n" + "For various reasons, one may wish to keep different configurations\n" + "available on a single machine.\n" + "\n" + "Entering a file name here will allow you to later retrieve, modify\n" + "and use the current configuration as an alternate to whatever\n" + "configuration options you have selected at that time.\n" + "\n" + "If you are uncertain what all this means then you should probably\n" + "leave this blank.\n"), +search_help[] = N_( + "\n" + "Search for symbols and display their relations.\n" + "Regular expressions are allowed.\n" + "Example: search for \"^FOO\"\n" + "Result:\n" + "-----------------------------------------------------------------\n" + "Symbol: FOO [=m]\n" + "Type : tristate\n" + "Prompt: Foo bus is used to drive the bar HW\n" + " Location:\n" + " -> Bus options (PCI, PCMCIA, EISA, ISA)\n" + " -> PCI support (PCI [=y])\n" + "(1) -> PCI access mode ( [=y])\n" + " Defined at drivers/pci/Kconfig:47\n" + " Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" + " Selects: LIBCRC32\n" + " Selected by: BAR [=n]\n" + "-----------------------------------------------------------------\n" + "o The line 'Type:' shows the type of the configuration option for\n" + " this symbol (boolean, tristate, string, ...)\n" + "o The line 'Prompt:' shows the text used in the menu structure for\n" + " this symbol\n" + "o The 'Defined at' line tells at what file / line number the symbol\n" + " is defined\n" + "o The 'Depends on:' line tells what symbols need to be defined for\n" + " this symbol to be visible in the menu (selectable)\n" + "o The 'Location:' lines tells where in the menu structure this symbol\n" + " is located\n" + " A location followed by a [=y] indicates that this is a\n" + " selectable menu item - and the current value is displayed inside\n" + " brackets.\n" + " Press the key in the (#) prefix to jump directly to that\n" + " location. You will be returned to the current search results\n" + " after exiting this new menu.\n" + "o The 'Selects:' line tells what symbols will be automatically\n" + " selected if this symbol is selected (y or m)\n" + "o The 'Selected by' line tells what symbol has selected this symbol\n" + "\n" + "Only relevant lines are shown.\n" + "\n\n" + "Search examples:\n" + "Examples: USB => find all symbols containing USB\n" + " ^USB => find all symbols starting with USB\n" + " USB$ => find all symbols ending with USB\n" + "\n"); + +static int indent; +static struct menu *current_menu; +static int child_count; +static int single_menu_mode; +static int show_all_options; +static int save_and_exit; + +static void conf(struct menu *menu, struct menu *active_menu); +static void conf_choice(struct menu *menu); +static void conf_string(struct menu *menu); +static void conf_load(void); +static void conf_save(void); +static int show_textbox_ext(const char *title, char *text, int r, int c, + int *keys, int *vscroll, int *hscroll, + update_text_fn update_text, void *data); +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 char filename[PATH_MAX+1]; +static void set_config_filename(const char *config_filename) +{ + static char menu_backtitle[PATH_MAX+128]; + int size; + + size = snprintf(menu_backtitle, sizeof(menu_backtitle), + "%s - %s", config_filename, rootmenu.prompt->text); + if (size >= sizeof(menu_backtitle)) + menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + set_dialog_backtitle(menu_backtitle); + + size = snprintf(filename, sizeof(filename), "%s", config_filename); + if (size >= sizeof(filename)) + filename[sizeof(filename)-1] = '\0'; +} + +struct subtitle_part { + struct list_head entries; + const char *text; +}; +static LIST_HEAD(trail); + +static struct subtitle_list *subtitles; +static void set_subtitle(void) +{ + struct subtitle_part *sp; + struct subtitle_list *pos, *tmp; + + for (pos = subtitles; pos != NULL; pos = tmp) { + tmp = pos->next; + free(pos); + } + + subtitles = NULL; + list_for_each_entry(sp, &trail, entries) { + if (sp->text) { + if (pos) { + pos->next = xcalloc(sizeof(*pos), 1); + pos = pos->next; + } else { + subtitles = pos = xcalloc(sizeof(*pos), 1); + } + pos->text = sp->text; + } + } + + set_dialog_subtitles(subtitles); +} + +static void reset_subtitle(void) +{ + struct subtitle_list *pos, *tmp; + + for (pos = subtitles; pos != NULL; pos = tmp) { + tmp = pos->next; + free(pos); + } + subtitles = NULL; + set_dialog_subtitles(subtitles); +} + +struct search_data { + struct list_head *head; + struct menu **targets; + int *keys; +}; + +static void update_text(char *buf, size_t start, size_t end, void *_data) +{ + struct search_data *data = _data; + struct jump_key *pos; + int k = 0; + + list_for_each_entry(pos, data->head, entries) { + if (pos->offset >= start && pos->offset < end) { + char header[4]; + + if (k < JUMP_NB) { + int key = '0' + (pos->index % JUMP_NB) + 1; + + sprintf(header, "(%c)", key); + data->keys[k] = key; + data->targets[k] = pos->target; + k++; + } else { + sprintf(header, " "); + } + + memcpy(buf + pos->offset, header, sizeof(header) - 1); + } + } + data->keys[k] = 0; +} + +static void search_conf(void) +{ + struct symbol **sym_arr; + struct gstr res; + struct gstr title; + char *dialog_input; + int dres, vscroll = 0, hscroll = 0; + bool again; + struct gstr sttext; + struct subtitle_part stpart; + + title = str_new(); + str_printf( &title, _("Enter (sub)string or regexp to search for " + "(with or without \"%s\")"), CONFIG_); + +again: + dialog_clear(); + dres = dialog_inputbox(_("Search Configuration Parameter"), + str_get(&title), + 10, 75, ""); + switch (dres) { + case 0: + break; + case 1: + show_helptext(_("Search Configuration"), search_help); + goto again; + default: + str_free(&title); + return; + } + + /* strip the prefix if necessary */ + dialog_input = dialog_input_result; + if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0) + dialog_input += strlen(CONFIG_); + + sttext = str_new(); + str_printf(&sttext, "Search (%s)", dialog_input_result); + stpart.text = str_get(&sttext); + list_add_tail(&stpart.entries, &trail); + + sym_arr = sym_re_search(dialog_input); + do { + LIST_HEAD(head); + struct menu *targets[JUMP_NB]; + int keys[JUMP_NB + 1], i; + struct search_data data = { + .head = &head, + .targets = targets, + .keys = keys, + }; + struct jump_key *pos, *tmp; + + res = get_relations_str(sym_arr, &head); + set_subtitle(); + dres = show_textbox_ext(_("Search Results"), (char *) + str_get(&res), 0, 0, keys, &vscroll, + &hscroll, &update_text, (void *) + &data); + again = false; + for (i = 0; i < JUMP_NB && keys[i]; i++) + if (dres == keys[i]) { + conf(targets[i]->parent, targets[i]); + again = true; + } + str_free(&res); + list_for_each_entry_safe(pos, tmp, &head, entries) + free(pos); + } while (again); + free(sym_arr); + str_free(&title); + list_del(trail.prev); + str_free(&sttext); +} + +static void build_conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + int type, tmp, doint = 2; + tristate val; + char ch; + bool visible; + + /* + * note: menu_is_visible() has side effect that it will + * recalc the value of the symbol. + */ + visible = menu_is_visible(menu); + if (show_all_options && !menu_has_prompt(menu)) + return; + else if (!show_all_options && !visible) + return; + + sym = menu->sym; + prop = menu->prompt; + if (!sym) { + if (prop && menu != current_menu) { + const char *prompt = menu_get_prompt(menu); + switch (prop->type) { + case P_MENU: + child_count++; + prompt = _(prompt); + if (single_menu_mode) { + item_make("%s%*c%s", + menu->data ? "-->" : "++>", + indent + 1, ' ', prompt); + } else + item_make(" %*c%s %s", + indent + 1, ' ', prompt, + menu_is_empty(menu) ? "----" : "--->"); + item_set_tag('m'); + item_set_data(menu); + if (single_menu_mode && menu->data) + goto conf_childs; + return; + case P_COMMENT: + if (prompt) { + child_count++; + item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt)); + item_set_tag(':'); + item_set_data(menu); + } + break; + default: + if (prompt) { + child_count++; + item_make("---%*c%s", indent + 1, ' ', _(prompt)); + item_set_tag(':'); + item_set_data(menu); + } + } + } else + doint = 0; + goto conf_childs; + } + + type = sym_get_type(sym); + if (sym_is_choice(sym)) { + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + child_count++; + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) && child->sym == def_sym) + def_menu = child; + } + + val = sym_get_tristate_value(sym); + if (sym_is_changable(sym)) { + switch (type) { + case S_BOOLEAN: + item_make("[%c]", val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: ch = '*'; break; + case mod: ch = 'M'; break; + default: ch = ' '; break; + } + item_make("<%c>", ch); + break; + } + item_set_tag('t'); + item_set_data(menu); + } else { + item_make(" "); + item_set_tag(def_menu ? 't' : ':'); + item_set_data(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(" --->"); + if (def_menu->list) { + indent += 2; + build_conf(def_menu); + indent -= 2; + } + } + return; + } + } else { + if (menu == current_menu) { + item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu))); + item_set_tag(':'); + item_set_data(menu); + goto conf_childs; + } + child_count++; + val = sym_get_tristate_value(sym); + if (sym_is_choice_value(sym) && val == yes) { + item_make(" "); + item_set_tag(':'); + item_set_data(menu); + } else { + switch (type) { + case S_BOOLEAN: + if (sym_is_changable(sym)) + item_make("[%c]", val == no ? ' ' : '*'); + else + item_make("-%c-", val == no ? ' ' : '*'); + item_set_tag('t'); + item_set_data(menu); + break; + case S_TRISTATE: + switch (val) { + case yes: ch = '*'; break; + case mod: ch = 'M'; break; + default: ch = ' '; break; + } + if (sym_is_changable(sym)) { + if (sym->rev_dep.tri == mod) + item_make("{%c}", ch); + else + item_make("<%c>", ch); + } else + item_make("-%c-", ch); + item_set_tag('t'); + item_set_data(menu); + break; + default: + tmp = 2 + strlen(sym_get_string_value(sym)); /* () = 2 */ + item_make("(%s)", sym_get_string_value(sym)); + tmp = indent - tmp + 4; + if (tmp < 0) + tmp = 0; + item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + item_set_tag('s'); + item_set_data(menu); + goto conf_childs; + } + } + item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + if (menu->prompt->type == P_MENU) { + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); + return; + } + } + +conf_childs: + indent += doint; + for (child = menu->list; child; child = child->next) + build_conf(child); + indent -= doint; +} + +static void conf(struct menu *menu, struct menu *active_menu) +{ + struct menu *submenu; + const char *prompt = menu_get_prompt(menu); + struct subtitle_part stpart; + struct symbol *sym; + int res; + int s_scroll = 0; + + if (menu != &rootmenu) + stpart.text = menu_get_prompt(menu); + else + stpart.text = NULL; + list_add_tail(&stpart.entries, &trail); + + while (1) { + item_reset(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + set_subtitle(); + dialog_clear(); + res = dialog_menu(prompt ? _(prompt) : _("Main Menu"), + _(menu_instructions), + active_menu, &s_scroll); + if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL) + break; + if (item_count() != 0) { + if (!item_activate_selected()) + continue; + if (!item_tag()) + continue; + } + submenu = item_data(); + active_menu = item_data(); + if (submenu) + sym = submenu->sym; + else + sym = NULL; + + switch (res) { + case 0: + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = (void *) (long) !submenu->data; + else + conf(submenu, NULL); + break; + case 't': + if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt->type == P_MENU) + conf(submenu, NULL); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 2: + if (sym) + show_help(submenu); + else { + reset_subtitle(); + show_helptext(_("README"), _(mconf_readme)); + } + break; + case 3: + reset_subtitle(); + conf_save(); + break; + case 4: + reset_subtitle(); + conf_load(); + break; + case 5: + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + show_textbox(NULL, setmod_text, 6, 74); + } + break; + case 6: + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 7: + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + case 8: + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu, NULL); + break; + case 9: + search_conf(); + break; + case 10: + show_all_options = !show_all_options; + break; + } + } + + list_del(trail.prev); +} + +static int show_textbox_ext(const char *title, char *text, int r, int c, int + *keys, int *vscroll, int *hscroll, update_text_fn + update_text, void *data) +{ + dialog_clear(); + return dialog_textbox(title, text, r, c, keys, vscroll, hscroll, + update_text, data); +} + +static void show_textbox(const char *title, const char *text, int r, int c) +{ + show_textbox_ext(title, (char *) text, r, c, (int []) {0}, NULL, NULL, + NULL, NULL); +} + +static void show_helptext(const char *title, const char *text) +{ + show_textbox(title, text, 0, 0); +} + +static void conf_message_callback(const char *fmt, va_list ap) +{ + char buf[PATH_MAX+1]; + + vsnprintf(buf, sizeof(buf), fmt, ap); + if (save_and_exit) + printf("%s", buf); + else + show_textbox(NULL, buf, 6, 60); +} + +static void show_help(struct menu *menu) +{ + struct gstr help = str_new(); + + help.max_width = getmaxx(stdscr) - 10; + menu_get_ext_help(menu, &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)); + struct menu *child; + struct symbol *active; + + active = sym_get_choice_value(menu->sym); + while (1) { + int res; + int selected; + item_reset(); + + current_menu = menu; + for (child = menu->list; child; child = child->next) { + if (!menu_is_visible(child)) + continue; + 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); + if (child->sym == sym_get_choice_value(menu->sym)) + item_set_tag('X'); + } + dialog_clear(); + res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"), + _(radiolist_instructions), + MENUBOX_HEIGTH_MIN, + MENUBOX_WIDTH_MIN, + CHECKLIST_HEIGTH_MIN); + selected = item_activate_selected(); + switch (res) { + case 0: + if (selected) { + child = item_data(); + if (!child->sym) + break; + + sym_set_tristate_value(child->sym, yes); + } + return; + case 1: + if (selected) { + child = item_data(); + show_help(child); + active = child->sym; + } else + show_help(menu); + break; + case KEY_ESC: + return; + case -ERRDISPLAYTOOSMALL: + return; + } + } +} + +static void conf_string(struct menu *menu) +{ + const char *prompt = menu_get_prompt(menu); + + while (1) { + int res; + const char *heading; + + switch (sym_get_type(menu->sym)) { + case S_INT: + heading = _(inputbox_instructions_int); + break; + case S_HEX: + heading = _(inputbox_instructions_hex); + break; + case S_STRING: + heading = _(inputbox_instructions_string); + break; + default: + heading = _("Internal mconf error!"); + } + dialog_clear(); + res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"), + heading, 10, 75, + sym_get_string_value(menu->sym)); + switch (res) { + case 0: + if (sym_set_string_value(menu->sym, dialog_input_result)) + return; + show_textbox(NULL, _("You have made an invalid entry."), 5, 43); + break; + case 1: + show_help(menu); + break; + case KEY_ESC: + return; + } + } +} + +static void conf_load(void) +{ + + while (1) { + int res; + dialog_clear(); + res = dialog_inputbox(NULL, load_config_text, + 11, 55, filename); + switch(res) { + case 0: + if (!dialog_input_result[0]) + 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); + break; + case 1: + show_helptext(_("Load Alternate Configuration"), load_config_help); + break; + case KEY_ESC: + return; + } + } +} + +static void conf_save(void) +{ + while (1) { + int res; + dialog_clear(); + res = dialog_inputbox(NULL, save_config_text, + 11, 55, filename); + switch(res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_write(dialog_input_result)) { + set_config_filename(dialog_input_result); + return; + } + show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60); + break; + case 1: + show_helptext(_("Save Alternate Configuration"), save_config_help); + break; + case KEY_ESC: + return; + } + } +} + +static int handle_exit(void) +{ + int res; + + save_and_exit = 1; + reset_subtitle(); + dialog_clear(); + if (conf_get_changed()) + res = dialog_yesno(NULL, + _("Do you wish to save your new configuration?\n" + "(Press to continue Buildroot configuration.)"), + 6, 60); + else + res = -1; + + end_dialog(saved_x, saved_y); + + switch (res) { + case 0: + if (conf_write(filename)) { + fprintf(stderr, _("\n\n" + "Error while writing of the configuration.\n" + "Your configuration changes were NOT saved." + "\n\n")); + return 1; + } + /* fall through */ + case -1: + printf(_("\n\n" + "*** End of the configuration.\n" + "*** Execute 'make' to start the build or try 'make help'." + "\n\n")); + res = 0; + break; + default: + fprintf(stderr, _("\n\n" + "Your configuration changes were NOT saved." + "\n\n")); + if (res != KEY_ESC) + res = 0; + } + + return res; +} + +static void sig_handler(int signo) +{ + exit(handle_exit()); +} + +int main(int ac, char **av) +{ + char *mode; + int res; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + signal(SIGINT, sig_handler); + + conf_parse(av[1]); + conf_read(NULL); + + mode = getenv("MENUCONFIG_MODE"); + if (mode) { + if (!strcasecmp(mode, "single_menu")) + single_menu_mode = 1; + } + + 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()); + conf_set_message_callback(conf_message_callback); + do { + conf(&rootmenu, NULL); + res = handle_exit(); + } while (res == KEY_ESC); + + return res; +} + diff --git a/buildroot/support/kconfig/menu.c b/buildroot/support/kconfig/menu.c new file mode 100644 index 0000000..db1512a --- /dev/null +++ b/buildroot/support/kconfig/menu.c @@ -0,0 +1,694 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include + +#include "lkc.h" + +static const char nohelp_text[] = "There is no help available for this option."; + +struct menu rootmenu; +static struct menu **last_entry_ptr; + +struct file *file_list; +struct file *current_file; + +void menu_warn(struct menu *menu, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} + +static void prop_warn(struct property *prop, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} + +void _menu_init(void) +{ + current_entry = current_menu = &rootmenu; + last_entry_ptr = &rootmenu.list; +} + +void menu_add_entry(struct symbol *sym) +{ + struct menu *menu; + + menu = xmalloc(sizeof(*menu)); + memset(menu, 0, sizeof(*menu)); + menu->sym = sym; + menu->parent = current_menu; + menu->file = current_file; + menu->lineno = zconf_lineno(); + + *last_entry_ptr = menu; + last_entry_ptr = &menu->next; + current_entry = menu; + if (sym) + menu_add_symbol(P_SYMBOL, sym, NULL); +} + +void menu_end_entry(void) +{ +} + +struct menu *menu_add_menu(void) +{ + menu_end_entry(); + last_entry_ptr = ¤t_entry->list; + return current_menu = current_entry; +} + +void menu_end_menu(void) +{ + last_entry_ptr = ¤t_menu->next; + current_menu = current_menu->parent; +} + +static struct expr *menu_check_dep(struct expr *e) +{ + if (!e) + return e; + + switch (e->type) { + case E_NOT: + e->left.expr = menu_check_dep(e->left.expr); + break; + case E_OR: + case E_AND: + e->left.expr = menu_check_dep(e->left.expr); + e->right.expr = menu_check_dep(e->right.expr); + break; + case E_SYMBOL: + /* change 'm' into 'm' && MODULES */ + if (e->left.sym == &symbol_mod) + return expr_alloc_and(e, expr_alloc_symbol(modules_sym)); + break; + default: + break; + } + return e; +} + +void menu_add_dep(struct expr *dep) +{ + current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep)); +} + +void menu_set_type(int type) +{ + struct symbol *sym = current_entry->sym; + + if (sym->type == type) + return; + if (sym->type == S_UNKNOWN) { + sym->type = type; + return; + } + menu_warn(current_entry, + "ignoring type redefinition of '%s' from '%s' to '%s'", + sym->name ? sym->name : "", + sym_type_name(sym->type), sym_type_name(type)); +} + +struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep) +{ + struct property *prop = prop_alloc(type, current_entry->sym); + + prop->menu = current_entry; + prop->expr = expr; + prop->visible.expr = menu_check_dep(dep); + + if (prompt) { + if (isspace(*prompt)) { + prop_warn(prop, "leading whitespace ignored"); + while (isspace(*prompt)) + prompt++; + } + if (current_entry->prompt && current_entry != &rootmenu) + prop_warn(prop, "prompt redefined"); + + /* Apply all upper menus' visibilities to actual prompts. */ + if(type == P_PROMPT) { + struct menu *menu = current_entry; + + while ((menu = menu->parent) != NULL) { + struct expr *dup_expr; + + if (!menu->visibility) + continue; + /* + * Do not add a reference to the + * menu's visibility expression but + * use a copy of it. Otherwise the + * expression reduction functions + * will modify expressions that have + * multiple references which can + * cause unwanted side effects. + */ + dup_expr = expr_copy(menu->visibility); + + prop->visible.expr + = expr_alloc_and(prop->visible.expr, + dup_expr); + } + } + + current_entry->prompt = prop; + } + prop->text = prompt; + + return prop; +} + +struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep) +{ + return menu_add_prop(type, prompt, NULL, dep); +} + +void menu_add_visibility(struct expr *expr) +{ + current_entry->visibility = expr_alloc_and(current_entry->visibility, + expr); +} + +void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) +{ + menu_add_prop(type, NULL, expr, dep); +} + +void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep) +{ + menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep); +} + +void menu_add_option(int token, char *arg) +{ + switch (token) { + case T_OPT_MODULES: + if (modules_sym) + zconf_error("symbol '%s' redefines option 'modules'" + " already defined by symbol '%s'", + current_entry->sym->name, + modules_sym->name + ); + modules_sym = current_entry->sym; + break; + case T_OPT_DEFCONFIG_LIST: + if (!sym_defconfig_list) + sym_defconfig_list = current_entry->sym; + 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; + } +} + +static int menu_validate_number(struct symbol *sym, struct symbol *sym2) +{ + return sym2->type == S_INT || sym2->type == S_HEX || + (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name)); +} + +static void sym_check_prop(struct symbol *sym) +{ + struct property *prop; + struct symbol *sym2; + for (prop = sym->prop; prop; prop = prop->next) { + switch (prop->type) { + case P_DEFAULT: + if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) && + prop->expr->type != E_SYMBOL) + prop_warn(prop, + "default for config symbol '%s'" + " must be a single symbol", sym->name); + if (prop->expr->type != E_SYMBOL) + break; + sym2 = prop_get_symbol(prop); + if (sym->type == S_HEX || sym->type == S_INT) { + if (!menu_validate_number(sym, sym2)) + prop_warn(prop, + "'%s': number is invalid", + sym->name); + } + break; + case P_SELECT: + sym2 = prop_get_symbol(prop); + if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE) + prop_warn(prop, + "config symbol '%s' uses select, but is " + "not boolean or tristate", sym->name); + 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 " + "tristate type", sym2->name); + break; + case P_RANGE: + if (sym->type != S_INT && sym->type != S_HEX) + prop_warn(prop, "range is only allowed " + "for int or hex symbols"); + if (!menu_validate_number(sym, prop->expr->left.sym) || + !menu_validate_number(sym, prop->expr->right.sym)) + prop_warn(prop, "range is invalid"); + break; + default: + ; + } + } +} + +void menu_finalize(struct menu *parent) +{ + struct menu *menu, *last_menu; + struct symbol *sym; + struct property *prop; + struct expr *parentdep, *basedep, *dep, *dep2, **ep; + + sym = parent->sym; + if (parent->list) { + if (sym && sym_is_choice(sym)) { + 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; + else + parentdep = parent->dep; + + for (menu = parent->list; menu; menu = menu->next) { + basedep = expr_transform(menu->dep); + basedep = expr_alloc_and(expr_copy(parentdep), basedep); + basedep = expr_eliminate_dups(basedep); + menu->dep = basedep; + if (menu->sym) + prop = menu->sym->prop; + else + prop = menu->prompt; + for (; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + dep = expr_transform(prop->visible.expr); + dep = expr_alloc_and(expr_copy(basedep), dep); + dep = expr_eliminate_dups(dep); + if (menu->sym && menu->sym->type != S_TRISTATE) + dep = expr_trans_bool(dep); + prop->visible.expr = dep; + if (prop->type == P_SELECT) { + struct symbol *es = prop_get_symbol(prop); + es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr, + expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep))); + } + } + } + for (menu = parent->list; menu; menu = menu->next) + menu_finalize(menu); + } else if (sym) { + basedep = parent->prompt ? parent->prompt->visible.expr : NULL; + basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no); + basedep = expr_eliminate_dups(expr_transform(basedep)); + last_menu = NULL; + for (menu = parent->next; menu; menu = menu->next) { + dep = menu->prompt ? menu->prompt->visible.expr : menu->dep; + if (!expr_contains_symbol(dep, sym)) + break; + if (expr_depends_symbol(dep, sym)) + goto next; + dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no); + dep = expr_eliminate_dups(expr_transform(dep)); + dep2 = expr_copy(basedep); + expr_eliminate_eq(&dep, &dep2); + expr_free(dep); + if (!expr_is_yes(dep2)) { + expr_free(dep2); + break; + } + expr_free(dep2); + next: + menu_finalize(menu); + menu->parent = parent; + last_menu = menu; + } + if (last_menu) { + parent->list = parent->next; + parent->next = last_menu->next; + last_menu->next = NULL; + } + + sym->dir_dep.expr = expr_alloc_or(sym->dir_dep.expr, parent->dep); + } + for (menu = parent->list; menu; menu = menu->next) { + 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_DEFAULT) + prop_warn(prop, "defaults for choice " + "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); + } + } + 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_LIST, NULL); + (*ep)->right.sym = menu->sym; + } + if (menu->list && (!menu->prompt || !menu->prompt->text)) { + for (last_menu = menu->list; ; last_menu = last_menu->next) { + last_menu->parent = parent; + if (!last_menu->next) + break; + } + last_menu->next = menu->next; + menu->next = menu->list; + menu->list = NULL; + } + } + + if (sym && !(sym->flags & SYMBOL_WARNED)) { + if (sym->type == S_UNKNOWN) + menu_warn(parent, "config symbol defined without type"); + + if (sym_is_choice(sym) && !parent->prompt) + menu_warn(parent, "choice must have a prompt"); + + /* Check properties connected to this symbol */ + sym_check_prop(sym); + sym->flags |= SYMBOL_WARNED; + } + + if (sym && !sym_is_optional(sym) && parent->prompt) { + sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr, + expr_alloc_and(parent->prompt->visible.expr, + expr_alloc_symbol(&symbol_mod))); + } +} + +bool menu_has_prompt(struct menu *menu) +{ + if (!menu->prompt) + return false; + return true; +} + +/* + * Determine if a menu is empty. + * A menu is considered empty if it contains no or only + * invisible entries. + */ +bool menu_is_empty(struct menu *menu) +{ + struct menu *child; + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child)) + return(false); + } + return(true); +} + +bool menu_is_visible(struct menu *menu) +{ + struct menu *child; + struct symbol *sym; + tristate visible; + + if (!menu->prompt) + return false; + + if (menu->visibility) { + if (expr_calc_value(menu->visibility) == no) + return no; + } + + sym = menu->sym; + if (sym) { + sym_calc_value(sym); + visible = menu->prompt->visible.tri; + } else + visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr); + + if (visible != no) + return true; + + if (!sym || sym_get_tristate_value(menu->sym) == no) + return false; + + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child)) { + if (sym) + sym->flags |= SYMBOL_DEF_USER; + return true; + } + } + + return false; +} + +const char *menu_get_prompt(struct menu *menu) +{ + if (menu->prompt) + return menu->prompt->text; + else if (menu->sym) + return menu->sym->name; + return NULL; +} + +struct menu *menu_get_root_menu(struct menu *menu) +{ + return &rootmenu; +} + +struct menu *menu_get_parent_menu(struct menu *menu) +{ + enum prop_type type; + + for (; menu != &rootmenu; menu = menu->parent) { + type = menu->prompt ? menu->prompt->type : 0; + if (type == P_MENU) + break; + } + return menu; +} + +bool menu_has_help(struct menu *menu) +{ + return menu->help != NULL; +} + +const char *menu_get_help(struct menu *menu) +{ + if (menu->help) + return menu->help; + else + return ""; +} + +static void get_prompt_str(struct gstr *r, struct property *prop, + struct list_head *head) +{ + int i, j; + struct menu *submenu[8], *menu, *location = NULL; + struct jump_key *jump; + + str_printf(r, _("Prompt: %s\n"), _(prop->text)); + menu = prop->menu->parent; + for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent) { + bool accessible = menu_is_visible(menu); + + submenu[i++] = menu; + if (location == NULL && accessible) + location = menu; + } + if (head && location) { + jump = xmalloc(sizeof(struct jump_key)); + + if (menu_is_visible(prop->menu)) { + /* + * There is not enough room to put the hint at the + * beginning of the "Prompt" line. Put the hint on the + * last "Location" line even when it would belong on + * the former. + */ + jump->target = prop->menu; + } else + jump->target = location; + + if (list_empty(head)) + jump->index = 0; + else + jump->index = list_entry(head->prev, struct jump_key, + entries)->index + 1; + + list_add_tail(&jump->entries, head); + } + + if (i > 0) { + str_printf(r, _(" Location:\n")); + for (j = 4; --i >= 0; j += 2) { + menu = submenu[i]; + if (head && location && menu == location) + jump->offset = strlen(r->s); + str_printf(r, "%*c-> %s", j, ' ', + _(menu_get_prompt(menu))); + if (menu->sym) { + str_printf(r, " (%s [=%s])", menu->sym->name ? + menu->sym->name : _(""), + sym_get_string_value(menu->sym)); + } + str_append(r, "\n"); + } + } +} + +/* + * get property of type P_SYMBOL + */ +static struct property *get_symbol_prop(struct symbol *sym) +{ + struct property *prop = NULL; + + for_all_properties(sym, prop, P_SYMBOL) + break; + return prop; +} + +/* + * head is optional and may be NULL + */ +void get_symbol_str(struct gstr *r, struct symbol *sym, + struct list_head *head) +{ + bool hit; + struct property *prop; + + if (sym && sym->name) { + str_printf(r, "Symbol: %s [=%s]\n", sym->name, + sym_get_string_value(sym)); + str_printf(r, "Type : %s\n", sym_type_name(sym->type)); + if (sym->type == S_INT || sym->type == S_HEX) { + prop = sym_get_range_prop(sym); + if (prop) { + str_printf(r, "Range : "); + expr_gstr_print(prop->expr, r); + str_append(r, "\n"); + } + } + } + for_all_prompts(sym, prop) + get_prompt_str(r, prop, head); + + prop = get_symbol_prop(sym); + if (prop) { + 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: ")); + expr_gstr_print(prop->visible.expr, r); + str_append(r, "\n"); + } + } + + hit = false; + for_all_properties(sym, prop, P_SELECT) { + if (!hit) { + str_append(r, " Selects: "); + hit = true; + } else + str_printf(r, " && "); + expr_gstr_print(prop->expr, r); + } + if (hit) + str_append(r, "\n"); + if (sym->rev_dep.expr) { + str_append(r, _(" Selected by: ")); + expr_gstr_print(sym->rev_dep.expr, r); + str_append(r, "\n"); + } + str_append(r, "\n\n"); +} + +struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head) +{ + struct symbol *sym; + struct gstr res = str_new(); + int i; + + for (i = 0; sym_arr && (sym = sym_arr[i]); i++) + get_symbol_str(&res, sym, head); + if (!i) + str_append(&res, _("No matches found.\n")); + return res; +} + + +void menu_get_ext_help(struct menu *menu, struct gstr *help) +{ + struct symbol *sym = menu->sym; + const char *help_text = nohelp_text; + + if (menu_has_help(menu)) { + if (sym->name) + str_printf(help, "%s%s:\n\n", CONFIG_, sym->name); + help_text = menu_get_help(menu); + } + str_printf(help, "%s\n", _(help_text)); + if (sym) + get_symbol_str(help, sym, NULL); +} diff --git a/buildroot/support/kconfig/merge_config.sh b/buildroot/support/kconfig/merge_config.sh new file mode 100755 index 0000000..e1d7ffa --- /dev/null +++ b/buildroot/support/kconfig/merge_config.sh @@ -0,0 +1,156 @@ +#!/bin/sh +# merge_config.sh - Takes a list of config fragment values, and merges +# them one by one. Provides warnings on overridden values, and specified +# values that did not make it to the resulting .config file (due to missed +# dependencies or config symbol removal). +# +# Portions reused from kconf_check and generate_cfg: +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg +# +# Copyright (c) 2009-2010 Wind River Systems, Inc. +# Copyright 2011 Linaro +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. + +clean_up() { + rm -f $TMP_FILE + exit +} +trap clean_up HUP INT TERM + +usage() { + echo "Usage: $0 [OPTIONS] [CONFIG [...]]" + echo " -h display this help text" + echo " -m only merge the fragments, do not execute the make command" + echo " -n use allnoconfig instead of alldefconfig" + echo " -r list redundant entries when merging fragments" + echo " -O dir to put generated output files" + echo " -e colon-separated list of br2-external trees to use (optional)" +} + +MAKE=true +ALLTARGET=alldefconfig +WARNREDUN=false +OUTPUT=. + +while true; do + case $1 in + "-n") + ALLTARGET=allnoconfig + shift + continue + ;; + "-m") + MAKE=false + shift + continue + ;; + "-h") + usage + exit + ;; + "-r") + WARNREDUN=true + shift + continue + ;; + "-O") + if [ -d $2 ];then + OUTPUT=$(echo $2 | sed 's/\/*$//') + else + echo "output directory $2 does not exist" 1>&2 + exit 1 + fi + shift 2 + continue + ;; + "-e") + EXTERNAL_ARG="BR2_EXTERNAL=$2" + shift 2 + continue + ;; + *) + break + ;; + esac +done + +INITFILE=$1 +shift; + +MERGE_LIST=$* +SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" +TMP_FILE=$(mktemp -t .tmp.config.XXXXXXXXXX) + +echo "Using $INITFILE as base" +cat $INITFILE > $TMP_FILE + +# Merge files, printing warnings on overrided values +for MERGE_FILE in $MERGE_LIST ; do + echo "Merging $MERGE_FILE" + CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) + + for CFG in $CFG_LIST ; do + grep -q -w $CFG $TMP_FILE + if [ $? -eq 0 ] ; then + PREV_VAL=$(grep -w $CFG $TMP_FILE) + NEW_VAL=$(grep -w $CFG $MERGE_FILE) + if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then + echo Value of $CFG is redefined by fragment $MERGE_FILE: + echo Previous value: $PREV_VAL + echo New value: $NEW_VAL + echo + elif [ "$WARNREDUN" = "true" ]; then + echo Value of $CFG is redundant by fragment $MERGE_FILE: + fi + sed -i "/$CFG[ =]/d" $TMP_FILE + fi + done + cat $MERGE_FILE >> $TMP_FILE +done + +if [ "$MAKE" = "false" ]; then + cp $TMP_FILE $OUTPUT/.config + echo "#" + echo "# merged configuration written to $OUTPUT/.config (needs make)" + echo "#" + clean_up + exit +fi + +# If we have an output dir, setup the O= argument, otherwise leave +# it blank, since O=. will create an unnecessary ./source softlink +OUTPUT_ARG="" +if [ "$OUTPUT" != "." ] ; then + OUTPUT_ARG="O=$OUTPUT" +fi + + +# Use the merged file as the starting point for: +# alldefconfig: Fills in any missing symbols with Kconfig default +# allnoconfig: Fills in any missing symbols with # CONFIG_* is not set +make KCONFIG_ALLCONFIG=$TMP_FILE $EXTERNAL_ARG $OUTPUT_ARG $ALLTARGET + + +# Check all specified config values took (might have missed-dependency issues) +for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do + + REQUESTED_VAL=$(grep -w -e "$CFG" $TMP_FILE) + ACTUAL_VAL=$(grep -w -e "$CFG" $OUTPUT/.config) + if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then + echo "Value requested for $CFG not in final .config" + echo "Requested value: $REQUESTED_VAL" + echo "Actual value: $ACTUAL_VAL" + echo "" + fi +done + +clean_up diff --git a/buildroot/support/kconfig/nconf.c b/buildroot/support/kconfig/nconf.c new file mode 100644 index 0000000..4fbecd2 --- /dev/null +++ b/buildroot/support/kconfig/nconf.c @@ -0,0 +1,1557 @@ +/* + * Copyright (C) 2008 Nir Tzachar +#include + +#include "lkc.h" +#include "nconf.h" +#include + +static const char nconf_global_help[] = N_( +"Help windows\n" +"------------\n" +"o Global help: Unless in a data entry window, pressing will give \n" +" you the global help window, which you are just reading.\n" +"\n" +"o A short version of the global help is available by pressing .\n" +"\n" +"o Local help: To get help related to the current menu entry, use any\n" +" of , or if in a data entry window then press .\n" +"\n" +"\n" +"Menu entries\n" +"------------\n" +"This interface lets you select features and parameters for the kernel\n" +"build. Kernel features can either be built-in, modularized, or removed.\n" +"Parameters must be entered as text or decimal or hexadecimal numbers.\n" +"\n" +"Menu entries beginning with following braces represent features that\n" +" [ ] can be built in or removed\n" +" < > can be built in, modularized or removed\n" +" { } can be built in or modularized, are selected by another feature\n" +" - - are selected by another feature\n" +" XXX cannot be selected. Symbol Info tells you why.\n" +"*, M or whitespace inside braces means to build in, build as a module\n" +"or to exclude the feature respectively.\n" +"\n" +"To change any of these features, highlight it with the movement keys\n" +"listed below and press to build it in, to make it a module or\n" +" to remove it. You may press the key to cycle through the\n" +"available options.\n" +"\n" +"A trailing \"--->\" designates a submenu, a trailing \"----\" an\n" +"empty submenu.\n" +"\n" +"Menu navigation keys\n" +"----------------------------------------------------------------------\n" +"Linewise up \n" +"Linewise down \n" +"Pagewise up \n" +"Pagewise down \n" +"First entry \n" +"Last entry \n" +"Enter a submenu \n" +"Go back to parent menu \n" +"Close a help window \n" +"Close entry window, apply \n" +"Close entry window, forget \n" +"Start incremental, case-insensitive search for STRING in menu entries,\n" +" no regex support, STRING is displayed in upper left corner\n" +" STRING\n" +" Remove last character \n" +" Jump to next hit \n" +" Jump to previous hit \n" +"Exit menu search mode \n" +"Search for configuration variables with or without leading CONFIG_\n" +" RegExpr\n" +"Verbose search help \n" +"----------------------------------------------------------------------\n" +"\n" +"Unless in a data entry window, key <1> may be used instead of ,\n" +"<2> instead of , etc.\n" +"\n" +"\n" +"Radiolist (Choice list)\n" +"-----------------------\n" +"Use the movement keys listed above to select the option you wish to set\n" +"and press .\n" +"\n" +"\n" +"Data entry\n" +"----------\n" +"Enter the requested information and press . Hexadecimal values\n" +"may be entered without the \"0x\" prefix.\n" +"\n" +"\n" +"Text Box (Help Window)\n" +"----------------------\n" +"Use movement keys as listed in table above.\n" +"\n" +"Press any of to exit.\n" +"\n" +"\n" +"Alternate configuration files\n" +"-----------------------------\n" +"nconfig supports switching between different configurations.\n" +"Press to save your current configuration. Press and enter\n" +"a file name to load a previously saved configuration.\n" +"\n" +"\n" +"Terminal configuration\n" +"----------------------\n" +"If you use nconfig in a xterm window, make sure your TERM environment\n" +"variable specifies a terminal configuration which supports at least\n" +"16 colors. Otherwise nconfig will look rather bad.\n" +"\n" +"If the \"stty size\" command reports the current terminalsize correctly,\n" +"nconfig will adapt to sizes larger than the traditional 80x25 \"standard\"\n" +"and display longer menus properly.\n" +"\n" +"\n" +"Single menu mode\n" +"----------------\n" +"If you prefer to have all of the menu entries listed in a single menu,\n" +"rather than the default multimenu hierarchy, run nconfig with\n" +"NCONFIG_MODE environment variable set to single_menu. Example:\n" +"\n" +"make NCONFIG_MODE=single_menu nconfig\n" +"\n" +" will then unfold the appropriate category, or fold it if it\n" +"is already unfolded. Folded menu entries will be designated by a\n" +"leading \"++>\" and unfolded entries by a leading \"-->\".\n" +"\n" +"Note that this mode can eventually be a little more CPU expensive than\n" +"the default mode, especially with a larger number of unfolded submenus.\n" +"\n"), +menu_no_f_instructions[] = N_( +"Legend: [*] built-in [ ] excluded module < > module capable.\n" +"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" +"\n" +"Use the following keys to navigate the menus:\n" +"Move up or down with and .\n" +"Enter a submenu with or .\n" +"Exit a submenu to its parent menu with or .\n" +"Pressing includes, excludes, modularizes features.\n" +"Pressing cycles through the available options.\n" +"To search for menu entries press .\n" +" always leaves the current window.\n" +"\n" +"You do not have function keys support.\n" +"Press <1> instead of , <2> instead of , etc.\n" +"For verbose global help use key <1>.\n" +"For help related to the current menu entry press or .\n"), +menu_instructions[] = N_( +"Legend: [*] built-in [ ] excluded module < > module capable.\n" +"Submenus are designated by a trailing \"--->\", empty ones by \"----\".\n" +"\n" +"Use the following keys to navigate the menus:\n" +"Move up or down with or .\n" +"Enter a submenu with or .\n" +"Exit a submenu to its parent menu with or .\n" +"Pressing includes, excludes, modularizes features.\n" +"Pressing cycles through the available options.\n" +"To search for menu entries press .\n" +" always leaves the current window.\n" +"\n" +"Pressing <1> may be used instead of , <2> instead of , etc.\n" +"For verbose global help press .\n" +"For help related to the current menu entry press or .\n"), +radiolist_instructions[] = N_( +"Press , , or to navigate a radiolist, select\n" +"with .\n" +"For help related to the current entry press or .\n" +"For global help press .\n"), +inputbox_instructions_int[] = N_( +"Please enter a decimal value.\n" +"Fractions will not be accepted.\n" +"Press to apply, to cancel."), +inputbox_instructions_hex[] = N_( +"Please enter a hexadecimal value.\n" +"Press to apply, to cancel."), +inputbox_instructions_string[] = N_( +"Please enter a string value.\n" +"Press to apply, to cancel."), +setmod_text[] = N_( +"This feature depends on another feature which has been configured as a\n" +"module. As a result, the current feature will be built as a module too."), +load_config_text[] = N_( +"Enter the name of the configuration file you wish to load.\n" +"Accept the name shown to restore the configuration you last\n" +"retrieved. Leave empty to abort."), +load_config_help[] = N_( +"For various reasons, one may wish to keep several different\n" +"configurations available on a single machine.\n" +"\n" +"If you have saved a previous configuration in a file other than the\n" +"default one, entering its name here will allow you to load and modify\n" +"that configuration.\n" +"\n" +"Leave empty to abort.\n"), +save_config_text[] = N_( +"Enter a filename to which this configuration should be saved\n" +"as an alternate. Leave empty to abort."), +save_config_help[] = N_( +"For various reasons, one may wish to keep several different\n" +"configurations available on a single machine.\n" +"\n" +"Entering a file name here will allow you to later retrieve, modify\n" +"and use the current configuration as an alternate to whatever\n" +"configuration options you have selected at that time.\n" +"\n" +"Leave empty to abort.\n"), +search_help[] = N_( +"Search for symbols (configuration variable names CONFIG_*) and display\n" +"their relations. Regular expressions are supported.\n" +"Example: Search for \"^FOO\".\n" +"Result:\n" +"-----------------------------------------------------------------\n" +"Symbol: FOO [ = m]\n" +"Prompt: Foo bus is used to drive the bar HW\n" +"Defined at drivers/pci/Kconfig:47\n" +"Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n" +"Location:\n" +" -> Bus options (PCI, PCMCIA, EISA, ISA)\n" +" -> PCI support (PCI [ = y])\n" +" -> PCI access mode ( [ = y])\n" +"Selects: LIBCRC32\n" +"Selected by: BAR\n" +"-----------------------------------------------------------------\n" +"o The line 'Prompt:' shows the text displayed for this symbol in\n" +" the menu hierarchy.\n" +"o The 'Defined at' line tells at what file / line number the symbol is\n" +" defined.\n" +"o The 'Depends on:' line lists symbols that need to be defined for\n" +" this symbol to be visible and selectable in the menu.\n" +"o The 'Location:' lines tell, where in the menu structure this symbol\n" +" is located. A location followed by a [ = y] indicates that this is\n" +" a selectable menu item, and the current value is displayed inside\n" +" brackets.\n" +"o The 'Selects:' line tells, what symbol will be automatically selected\n" +" if this symbol is selected (y or m).\n" +"o The 'Selected by' line tells what symbol has selected this symbol.\n" +"\n" +"Only relevant lines are shown.\n" +"\n\n" +"Search examples:\n" +"USB => find all symbols containing USB\n" +"^USB => find all symbols starting with USB\n" +"USB$ => find all symbols ending with USB\n" +"\n"); + +struct mitem { + char str[256]; + char tag; + void *usrptr; + int is_visible; +}; + +#define MAX_MENU_ITEMS 4096 +static int show_all_items; +static int indent; +static struct menu *current_menu; +static int child_count; +static int single_menu_mode; +/* the window in which all information appears */ +static WINDOW *main_window; +/* the largest size of the menu window */ +static int mwin_max_lines; +static int mwin_max_cols; +/* the window in which we show option buttons */ +static MENU *curses_menu; +static ITEM *curses_menu_items[MAX_MENU_ITEMS]; +static struct mitem k_menu_items[MAX_MENU_ITEMS]; +static int items_num; +static int global_exit; +/* the currently selected button */ +const char *current_instructions = menu_instructions; + +static char *dialog_input_result; +static int dialog_input_result_len; + +static void conf(struct menu *menu); +static void conf_choice(struct menu *menu); +static void conf_string(struct menu *menu); +static void conf_load(void); +static void conf_save(void); +static void show_help(struct menu *menu); +static int do_exit(void); +static void setup_windows(void); +static void search_conf(void); + +typedef void (*function_key_handler_t)(int *key, struct menu *menu); +static void handle_f1(int *key, struct menu *current_item); +static void handle_f2(int *key, struct menu *current_item); +static void handle_f3(int *key, struct menu *current_item); +static void handle_f4(int *key, struct menu *current_item); +static void handle_f5(int *key, struct menu *current_item); +static void handle_f6(int *key, struct menu *current_item); +static void handle_f7(int *key, struct menu *current_item); +static void handle_f8(int *key, struct menu *current_item); +static void handle_f9(int *key, struct menu *current_item); + +struct function_keys { + const char *key_str; + const char *func; + function_key key; + function_key_handler_t handler; +}; + +static const int function_keys_num = 9; +struct function_keys function_keys[] = { + { + .key_str = "F1", + .func = "Help", + .key = F_HELP, + .handler = handle_f1, + }, + { + .key_str = "F2", + .func = "SymInfo", + .key = F_SYMBOL, + .handler = handle_f2, + }, + { + .key_str = "F3", + .func = "Help 2", + .key = F_INSTS, + .handler = handle_f3, + }, + { + .key_str = "F4", + .func = "ShowAll", + .key = F_CONF, + .handler = handle_f4, + }, + { + .key_str = "F5", + .func = "Back", + .key = F_BACK, + .handler = handle_f5, + }, + { + .key_str = "F6", + .func = "Save", + .key = F_SAVE, + .handler = handle_f6, + }, + { + .key_str = "F7", + .func = "Load", + .key = F_LOAD, + .handler = handle_f7, + }, + { + .key_str = "F8", + .func = "SymSearch", + .key = F_SEARCH, + .handler = handle_f8, + }, + { + .key_str = "F9", + .func = "Exit", + .key = F_EXIT, + .handler = handle_f9, + }, +}; + +static void print_function_line(void) +{ + int i; + int offset = 1; + const int skip = 1; + int lines = getmaxy(stdscr); + + for (i = 0; i < function_keys_num; i++) { + (void) wattrset(main_window, attributes[FUNCTION_HIGHLIGHT]); + mvwprintw(main_window, lines-3, offset, + "%s", + function_keys[i].key_str); + (void) wattrset(main_window, attributes[FUNCTION_TEXT]); + offset += strlen(function_keys[i].key_str); + mvwprintw(main_window, lines-3, + offset, "%s", + function_keys[i].func); + offset += strlen(function_keys[i].func) + skip; + } + (void) wattrset(main_window, attributes[NORMAL]); +} + +/* help */ +static void handle_f1(int *key, struct menu *current_item) +{ + show_scroll_win(main_window, + _("Global help"), _(nconf_global_help)); + return; +} + +/* symbole help */ +static void handle_f2(int *key, struct menu *current_item) +{ + show_help(current_item); + return; +} + +/* instructions */ +static void handle_f3(int *key, struct menu *current_item) +{ + show_scroll_win(main_window, + _("Short help"), + _(current_instructions)); + return; +} + +/* config */ +static void handle_f4(int *key, struct menu *current_item) +{ + int res = btn_dialog(main_window, + _("Show all symbols?"), + 2, + " ", + ""); + if (res == 0) + show_all_items = 1; + else if (res == 1) + show_all_items = 0; + + return; +} + +/* back */ +static void handle_f5(int *key, struct menu *current_item) +{ + *key = KEY_LEFT; + return; +} + +/* save */ +static void handle_f6(int *key, struct menu *current_item) +{ + conf_save(); + return; +} + +/* load */ +static void handle_f7(int *key, struct menu *current_item) +{ + conf_load(); + return; +} + +/* search */ +static void handle_f8(int *key, struct menu *current_item) +{ + search_conf(); + return; +} + +/* exit */ +static void handle_f9(int *key, struct menu *current_item) +{ + do_exit(); + return; +} + +/* return != 0 to indicate the key was handles */ +static int process_special_keys(int *key, struct menu *menu) +{ + int i; + + if (*key == KEY_RESIZE) { + setup_windows(); + return 1; + } + + for (i = 0; i < function_keys_num; i++) { + if (*key == KEY_F(function_keys[i].key) || + *key == '0' + function_keys[i].key){ + function_keys[i].handler(key, menu); + return 1; + } + } + + return 0; +} + +static void clean_items(void) +{ + int i; + for (i = 0; curses_menu_items[i]; i++) + free_item(curses_menu_items[i]); + bzero(curses_menu_items, sizeof(curses_menu_items)); + bzero(k_menu_items, sizeof(k_menu_items)); + items_num = 0; +} + +typedef enum {MATCH_TINKER_PATTERN_UP, MATCH_TINKER_PATTERN_DOWN, + FIND_NEXT_MATCH_DOWN, FIND_NEXT_MATCH_UP} match_f; + +/* return the index of the matched item, or -1 if no such item exists */ +static int get_mext_match(const char *match_str, match_f flag) +{ + int match_start = item_index(current_item(curses_menu)); + int index; + + if (flag == FIND_NEXT_MATCH_DOWN) + ++match_start; + else if (flag == FIND_NEXT_MATCH_UP) + --match_start; + + index = match_start; + index = (index + items_num) % items_num; + while (true) { + char *str = k_menu_items[index].str; + if (strcasestr(str, match_str) != 0) + return index; + if (flag == FIND_NEXT_MATCH_UP || + flag == MATCH_TINKER_PATTERN_UP) + --index; + else + ++index; + index = (index + items_num) % items_num; + if (index == match_start) + return -1; + } +} + +/* Make a new item. */ +static void item_make(struct menu *menu, char tag, const char *fmt, ...) +{ + va_list ap; + + if (items_num > MAX_MENU_ITEMS-1) + return; + + bzero(&k_menu_items[items_num], sizeof(k_menu_items[0])); + k_menu_items[items_num].tag = tag; + k_menu_items[items_num].usrptr = menu; + if (menu != NULL) + k_menu_items[items_num].is_visible = + menu_is_visible(menu); + else + k_menu_items[items_num].is_visible = 1; + + va_start(ap, fmt); + vsnprintf(k_menu_items[items_num].str, + sizeof(k_menu_items[items_num].str), + fmt, ap); + va_end(ap); + + if (!k_menu_items[items_num].is_visible) + memcpy(k_menu_items[items_num].str, "XXX", 3); + + curses_menu_items[items_num] = new_item( + k_menu_items[items_num].str, + k_menu_items[items_num].str); + set_item_userptr(curses_menu_items[items_num], + &k_menu_items[items_num]); + /* + if (!k_menu_items[items_num].is_visible) + item_opts_off(curses_menu_items[items_num], O_SELECTABLE); + */ + + items_num++; + curses_menu_items[items_num] = NULL; +} + +/* very hackish. adds a string to the last item added */ +static void item_add_str(const char *fmt, ...) +{ + va_list ap; + int index = items_num-1; + char new_str[256]; + char tmp_str[256]; + + if (index < 0) + return; + + va_start(ap, fmt); + vsnprintf(new_str, sizeof(new_str), fmt, ap); + va_end(ap); + snprintf(tmp_str, sizeof(tmp_str), "%s%s", + k_menu_items[index].str, new_str); + strncpy(k_menu_items[index].str, + tmp_str, + sizeof(k_menu_items[index].str)); + + free_item(curses_menu_items[index]); + curses_menu_items[index] = new_item( + k_menu_items[index].str, + k_menu_items[index].str); + set_item_userptr(curses_menu_items[index], + &k_menu_items[index]); +} + +/* get the tag of the currently selected item */ +static char item_tag(void) +{ + ITEM *cur; + struct mitem *mcur; + + cur = current_item(curses_menu); + if (cur == NULL) + return 0; + mcur = (struct mitem *) item_userptr(cur); + return mcur->tag; +} + +static int curses_item_index(void) +{ + return item_index(current_item(curses_menu)); +} + +static void *item_data(void) +{ + ITEM *cur; + struct mitem *mcur; + + cur = current_item(curses_menu); + if (!cur) + return NULL; + mcur = (struct mitem *) item_userptr(cur); + return mcur->usrptr; + +} + +static int item_is_tag(char tag) +{ + return item_tag() == tag; +} + +static char filename[PATH_MAX+1]; +static char menu_backtitle[PATH_MAX+128]; +static const char *set_config_filename(const char *config_filename) +{ + int size; + + size = snprintf(menu_backtitle, sizeof(menu_backtitle), + "%s - %s", config_filename, rootmenu.prompt->text); + if (size >= sizeof(menu_backtitle)) + menu_backtitle[sizeof(menu_backtitle)-1] = '\0'; + + size = snprintf(filename, sizeof(filename), "%s", config_filename); + if (size >= sizeof(filename)) + filename[sizeof(filename)-1] = '\0'; + return menu_backtitle; +} + +/* return = 0 means we are successful. + * -1 means go on doing what you were doing + */ +static int do_exit(void) +{ + int res; + if (!conf_get_changed()) { + global_exit = 1; + return 0; + } + res = btn_dialog(main_window, + _("Do you wish to save your new configuration?\n" + " to cancel and resume nconfig."), + 2, + " ", + ""); + if (res == KEY_EXIT) { + global_exit = 0; + return -1; + } + + /* if we got here, the user really wants to exit */ + switch (res) { + case 0: + res = conf_write(filename); + if (res) + btn_dialog( + main_window, + _("Error during writing of configuration.\n" + "Your configuration changes were NOT saved."), + 1, + ""); + break; + default: + btn_dialog( + main_window, + _("Your configuration changes were NOT saved."), + 1, + ""); + break; + } + global_exit = 1; + return 0; +} + + +static void search_conf(void) +{ + struct symbol **sym_arr; + struct gstr res; + struct gstr title; + char *dialog_input; + int dres; + + title = str_new(); + str_printf( &title, _("Enter (sub)string or regexp to search for " + "(with or without \"%s\")"), CONFIG_); + +again: + dres = dialog_inputbox(main_window, + _("Search Configuration Parameter"), + str_get(&title), + "", &dialog_input_result, &dialog_input_result_len); + switch (dres) { + case 0: + break; + case 1: + show_scroll_win(main_window, + _("Search Configuration"), search_help); + goto again; + default: + str_free(&title); + return; + } + + /* strip the prefix if necessary */ + dialog_input = dialog_input_result; + if (strncasecmp(dialog_input_result, CONFIG_, strlen(CONFIG_)) == 0) + dialog_input += strlen(CONFIG_); + + sym_arr = sym_re_search(dialog_input); + res = get_relations_str(sym_arr, NULL); + free(sym_arr); + show_scroll_win(main_window, + _("Search Results"), str_get(&res)); + str_free(&res); + str_free(&title); +} + + +static void build_conf(struct menu *menu) +{ + struct symbol *sym; + struct property *prop; + struct menu *child; + int type, tmp, doint = 2; + tristate val; + char ch; + + if (!menu || (!show_all_items && !menu_is_visible(menu))) + return; + + sym = menu->sym; + prop = menu->prompt; + if (!sym) { + if (prop && menu != current_menu) { + const char *prompt = menu_get_prompt(menu); + enum prop_type ptype; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + switch (ptype) { + case P_MENU: + child_count++; + prompt = _(prompt); + if (single_menu_mode) { + item_make(menu, 'm', + "%s%*c%s", + menu->data ? "-->" : "++>", + indent + 1, ' ', prompt); + } else + item_make(menu, 'm', + " %*c%s %s", + indent + 1, ' ', prompt, + menu_is_empty(menu) ? "----" : "--->"); + + if (single_menu_mode && menu->data) + goto conf_childs; + return; + case P_COMMENT: + if (prompt) { + child_count++; + item_make(menu, ':', + " %*c*** %s ***", + indent + 1, ' ', + _(prompt)); + } + break; + default: + if (prompt) { + child_count++; + item_make(menu, ':', "---%*c%s", + indent + 1, ' ', + _(prompt)); + } + } + } else + doint = 0; + goto conf_childs; + } + + type = sym_get_type(sym); + if (sym_is_choice(sym)) { + struct symbol *def_sym = sym_get_choice_value(sym); + struct menu *def_menu = NULL; + + child_count++; + for (child = menu->list; child; child = child->next) { + if (menu_is_visible(child) && child->sym == def_sym) + def_menu = child; + } + + val = sym_get_tristate_value(sym); + if (sym_is_changable(sym)) { + switch (type) { + case S_BOOLEAN: + item_make(menu, 't', "[%c]", + val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: + ch = '*'; + break; + case mod: + ch = 'M'; + break; + default: + ch = ' '; + break; + } + item_make(menu, 't', "<%c>", ch); + break; + } + } else { + item_make(menu, def_menu ? 't' : ':', " "); + } + + 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(" --->"); + if (def_menu->list) { + indent += 2; + build_conf(def_menu); + indent -= 2; + } + } + return; + } + } else { + if (menu == current_menu) { + item_make(menu, ':', + "---%*c%s", indent + 1, + ' ', _(menu_get_prompt(menu))); + goto conf_childs; + } + child_count++; + val = sym_get_tristate_value(sym); + if (sym_is_choice_value(sym) && val == yes) { + item_make(menu, ':', " "); + } else { + switch (type) { + case S_BOOLEAN: + if (sym_is_changable(sym)) + item_make(menu, 't', "[%c]", + val == no ? ' ' : '*'); + else + item_make(menu, 't', "-%c-", + val == no ? ' ' : '*'); + break; + case S_TRISTATE: + switch (val) { + case yes: + ch = '*'; + break; + case mod: + ch = 'M'; + break; + default: + ch = ' '; + break; + } + if (sym_is_changable(sym)) { + if (sym->rev_dep.tri == mod) + item_make(menu, + 't', "{%c}", ch); + else + item_make(menu, + 't', "<%c>", ch); + } else + item_make(menu, 't', "-%c-", ch); + break; + default: + tmp = 2 + strlen(sym_get_string_value(sym)); + item_make(menu, 's', " (%s)", + sym_get_string_value(sym)); + tmp = indent - tmp + 4; + if (tmp < 0) + tmp = 0; + item_add_str("%*c%s%s", tmp, ' ', + _(menu_get_prompt(menu)), + (sym_has_value(sym) || + !sym_is_changable(sym)) ? "" : + _(" (NEW)")); + goto conf_childs; + } + } + item_add_str("%*c%s%s", indent + 1, ' ', + _(menu_get_prompt(menu)), + (sym_has_value(sym) || !sym_is_changable(sym)) ? + "" : _(" (NEW)")); + if (menu->prompt && menu->prompt->type == P_MENU) { + item_add_str(" %s", menu_is_empty(menu) ? "----" : "--->"); + return; + } + } + +conf_childs: + indent += doint; + for (child = menu->list; child; child = child->next) + build_conf(child); + indent -= doint; +} + +static void reset_menu(void) +{ + unpost_menu(curses_menu); + clean_items(); +} + +/* adjust the menu to show this item. + * prefer not to scroll the menu if possible*/ +static void center_item(int selected_index, int *last_top_row) +{ + int toprow; + + set_top_row(curses_menu, *last_top_row); + toprow = top_row(curses_menu); + if (selected_index < toprow || + selected_index >= toprow+mwin_max_lines) { + toprow = max(selected_index-mwin_max_lines/2, 0); + if (toprow >= item_count(curses_menu)-mwin_max_lines) + toprow = item_count(curses_menu)-mwin_max_lines; + set_top_row(curses_menu, toprow); + } + set_current_item(curses_menu, + curses_menu_items[selected_index]); + *last_top_row = toprow; + post_menu(curses_menu); + refresh_all_windows(main_window); +} + +/* this function assumes reset_menu has been called before */ +static void show_menu(const char *prompt, const char *instructions, + int selected_index, int *last_top_row) +{ + int maxx, maxy; + WINDOW *menu_window; + + current_instructions = instructions; + + clear(); + (void) wattrset(main_window, attributes[NORMAL]); + print_in_middle(stdscr, 1, 0, getmaxx(stdscr), + menu_backtitle, + attributes[MAIN_HEADING]); + + (void) wattrset(main_window, attributes[MAIN_MENU_BOX]); + box(main_window, 0, 0); + (void) wattrset(main_window, attributes[MAIN_MENU_HEADING]); + mvwprintw(main_window, 0, 3, " %s ", prompt); + (void) wattrset(main_window, attributes[NORMAL]); + + set_menu_items(curses_menu, curses_menu_items); + + /* position the menu at the middle of the screen */ + scale_menu(curses_menu, &maxy, &maxx); + maxx = min(maxx, mwin_max_cols-2); + maxy = mwin_max_lines; + menu_window = derwin(main_window, + maxy, + maxx, + 2, + (mwin_max_cols-maxx)/2); + keypad(menu_window, TRUE); + set_menu_win(curses_menu, menu_window); + set_menu_sub(curses_menu, menu_window); + + /* must reassert this after changing items, otherwise returns to a + * default of 16 + */ + set_menu_format(curses_menu, maxy, 1); + center_item(selected_index, last_top_row); + set_menu_format(curses_menu, maxy, 1); + + print_function_line(); + + /* Post the menu */ + post_menu(curses_menu); + refresh_all_windows(main_window); +} + +static void adj_match_dir(match_f *match_direction) +{ + if (*match_direction == FIND_NEXT_MATCH_DOWN) + *match_direction = + MATCH_TINKER_PATTERN_DOWN; + else if (*match_direction == FIND_NEXT_MATCH_UP) + *match_direction = + MATCH_TINKER_PATTERN_UP; + /* else, do no change.. */ +} + +struct match_state +{ + int in_search; + match_f match_direction; + char pattern[256]; +}; + +/* Return 0 means I have handled the key. In such a case, ans should hold the + * item to center, or -1 otherwise. + * Else return -1 . + */ +static int do_match(int key, struct match_state *state, int *ans) +{ + char c = (char) key; + int terminate_search = 0; + *ans = -1; + if (key == '/' || (state->in_search && key == 27)) { + move(0, 0); + refresh(); + clrtoeol(); + state->in_search = 1-state->in_search; + bzero(state->pattern, sizeof(state->pattern)); + state->match_direction = MATCH_TINKER_PATTERN_DOWN; + return 0; + } else if (!state->in_search) + return 1; + + if (isalnum(c) || isgraph(c) || c == ' ') { + state->pattern[strlen(state->pattern)] = c; + state->pattern[strlen(state->pattern)] = '\0'; + adj_match_dir(&state->match_direction); + *ans = get_mext_match(state->pattern, + state->match_direction); + } else if (key == KEY_DOWN) { + state->match_direction = FIND_NEXT_MATCH_DOWN; + *ans = get_mext_match(state->pattern, + state->match_direction); + } else if (key == KEY_UP) { + state->match_direction = FIND_NEXT_MATCH_UP; + *ans = get_mext_match(state->pattern, + state->match_direction); + } else if (key == KEY_BACKSPACE || key == 127) { + state->pattern[strlen(state->pattern)-1] = '\0'; + adj_match_dir(&state->match_direction); + } else + terminate_search = 1; + + if (terminate_search) { + state->in_search = 0; + bzero(state->pattern, sizeof(state->pattern)); + move(0, 0); + refresh(); + clrtoeol(); + return -1; + } + return 0; +} + +static void conf(struct menu *menu) +{ + struct menu *submenu = 0; + const char *prompt = menu_get_prompt(menu); + struct symbol *sym; + int res; + int current_index = 0; + int last_top_row = 0; + struct match_state match_state = { + .in_search = 0, + .match_direction = MATCH_TINKER_PATTERN_DOWN, + .pattern = "", + }; + + while (!global_exit) { + reset_menu(); + current_menu = menu; + build_conf(menu); + if (!child_count) + break; + + show_menu(prompt ? _(prompt) : _("Main Menu"), + _(menu_instructions), + current_index, &last_top_row); + keypad((menu_win(curses_menu)), TRUE); + while (!global_exit) { + if (match_state.in_search) { + mvprintw(0, 0, + "searching: %s", match_state.pattern); + clrtoeol(); + } + refresh_all_windows(main_window); + res = wgetch(menu_win(curses_menu)); + if (!res) + break; + if (do_match(res, &match_state, ¤t_index) == 0) { + if (current_index != -1) + center_item(current_index, + &last_top_row); + continue; + } + if (process_special_keys(&res, + (struct menu *) item_data())) + break; + switch (res) { + case KEY_DOWN: + menu_driver(curses_menu, REQ_DOWN_ITEM); + break; + case KEY_UP: + menu_driver(curses_menu, REQ_UP_ITEM); + break; + case KEY_NPAGE: + menu_driver(curses_menu, REQ_SCR_DPAGE); + break; + case KEY_PPAGE: + menu_driver(curses_menu, REQ_SCR_UPAGE); + break; + case KEY_HOME: + menu_driver(curses_menu, REQ_FIRST_ITEM); + break; + case KEY_END: + menu_driver(curses_menu, REQ_LAST_ITEM); + break; + case 'h': + case '?': + show_help((struct menu *) item_data()); + break; + } + if (res == 10 || res == 27 || + res == 32 || res == 'n' || res == 'y' || + res == KEY_LEFT || res == KEY_RIGHT || + res == 'm') + break; + refresh_all_windows(main_window); + } + + refresh_all_windows(main_window); + /* if ESC or left*/ + if (res == 27 || (menu != &rootmenu && res == KEY_LEFT)) + break; + + /* remember location in the menu */ + last_top_row = top_row(curses_menu); + current_index = curses_item_index(); + + if (!item_tag()) + continue; + + submenu = (struct menu *) item_data(); + if (!submenu || !menu_is_visible(submenu)) + continue; + sym = submenu->sym; + + switch (res) { + case ' ': + if (item_is_tag('t')) + sym_toggle_tristate_value(sym); + else if (item_is_tag('m')) + conf(submenu); + break; + case KEY_RIGHT: + case 10: /* ENTER WAS PRESSED */ + switch (item_tag()) { + case 'm': + if (single_menu_mode) + submenu->data = + (void *) (long) !submenu->data; + else + conf(submenu); + break; + case 't': + if (sym_is_choice(sym) && + sym_get_tristate_value(sym) == yes) + conf_choice(submenu); + else if (submenu->prompt && + submenu->prompt->type == P_MENU) + conf(submenu); + else if (res == 10) + sym_toggle_tristate_value(sym); + break; + case 's': + conf_string(submenu); + break; + } + break; + case 'y': + if (item_is_tag('t')) { + if (sym_set_tristate_value(sym, yes)) + break; + if (sym_set_tristate_value(sym, mod)) + btn_dialog(main_window, setmod_text, 0); + } + break; + case 'n': + if (item_is_tag('t')) + sym_set_tristate_value(sym, no); + break; + case 'm': + if (item_is_tag('t')) + sym_set_tristate_value(sym, mod); + break; + } + } +} + +static void conf_message_callback(const char *fmt, va_list ap) +{ + char buf[1024]; + + vsnprintf(buf, sizeof(buf), fmt, ap); + btn_dialog(main_window, buf, 1, ""); +} + +static void show_help(struct menu *menu) +{ + struct gstr help; + + if (!menu) + return; + + help = str_new(); + menu_get_ext_help(menu, &help); + show_scroll_win(main_window, _(menu_get_prompt(menu)), str_get(&help)); + str_free(&help); +} + +static void conf_choice(struct menu *menu) +{ + const char *prompt = _(menu_get_prompt(menu)); + struct menu *child = 0; + struct symbol *active; + int selected_index = 0; + int last_top_row = 0; + int res, i = 0; + struct match_state match_state = { + .in_search = 0, + .match_direction = MATCH_TINKER_PATTERN_DOWN, + .pattern = "", + }; + + active = sym_get_choice_value(menu->sym); + /* this is mostly duplicated from the conf() function. */ + while (!global_exit) { + reset_menu(); + + for (i = 0, child = menu->list; child; child = child->next) { + if (!show_all_items && !menu_is_visible(child)) + continue; + + if (child->sym == sym_get_choice_value(menu->sym)) + item_make(child, ':', " %s", + _(menu_get_prompt(child))); + else if (child->sym) + item_make(child, ':', " %s", + _(menu_get_prompt(child))); + else + item_make(child, ':', "*** %s ***", + _(menu_get_prompt(child))); + + if (child->sym == active){ + last_top_row = top_row(curses_menu); + selected_index = i; + } + i++; + } + show_menu(prompt ? _(prompt) : _("Choice Menu"), + _(radiolist_instructions), + selected_index, + &last_top_row); + while (!global_exit) { + if (match_state.in_search) { + mvprintw(0, 0, "searching: %s", + match_state.pattern); + clrtoeol(); + } + refresh_all_windows(main_window); + res = wgetch(menu_win(curses_menu)); + if (!res) + break; + if (do_match(res, &match_state, &selected_index) == 0) { + if (selected_index != -1) + center_item(selected_index, + &last_top_row); + continue; + } + if (process_special_keys( + &res, + (struct menu *) item_data())) + break; + switch (res) { + case KEY_DOWN: + menu_driver(curses_menu, REQ_DOWN_ITEM); + break; + case KEY_UP: + menu_driver(curses_menu, REQ_UP_ITEM); + break; + case KEY_NPAGE: + menu_driver(curses_menu, REQ_SCR_DPAGE); + break; + case KEY_PPAGE: + menu_driver(curses_menu, REQ_SCR_UPAGE); + break; + case KEY_HOME: + menu_driver(curses_menu, REQ_FIRST_ITEM); + break; + case KEY_END: + menu_driver(curses_menu, REQ_LAST_ITEM); + break; + case 'h': + case '?': + show_help((struct menu *) item_data()); + break; + } + if (res == 10 || res == 27 || res == ' ' || + res == KEY_LEFT){ + break; + } + refresh_all_windows(main_window); + } + /* if ESC or left */ + if (res == 27 || res == KEY_LEFT) + break; + + child = item_data(); + if (!child || !menu_is_visible(child) || !child->sym) + continue; + switch (res) { + case ' ': + case 10: + case KEY_RIGHT: + sym_set_tristate_value(child->sym, yes); + return; + case 'h': + case '?': + show_help(child); + active = child->sym; + break; + case KEY_EXIT: + return; + } + } +} + +static void conf_string(struct menu *menu) +{ + const char *prompt = menu_get_prompt(menu); + + while (1) { + int res; + const char *heading; + + switch (sym_get_type(menu->sym)) { + case S_INT: + heading = _(inputbox_instructions_int); + break; + case S_HEX: + heading = _(inputbox_instructions_hex); + break; + case S_STRING: + heading = _(inputbox_instructions_string); + break; + default: + heading = _("Internal nconf error!"); + } + res = dialog_inputbox(main_window, + prompt ? _(prompt) : _("Main Menu"), + heading, + sym_get_string_value(menu->sym), + &dialog_input_result, + &dialog_input_result_len); + switch (res) { + case 0: + if (sym_set_string_value(menu->sym, + dialog_input_result)) + return; + btn_dialog(main_window, + _("You have made an invalid entry."), 0); + break; + case 1: + show_help(menu); + break; + case KEY_EXIT: + return; + } + } +} + +static void conf_load(void) +{ + while (1) { + int res; + res = dialog_inputbox(main_window, + NULL, load_config_text, + filename, + &dialog_input_result, + &dialog_input_result_len); + switch (res) { + case 0: + if (!dialog_input_result[0]) + return; + if (!conf_read(dialog_input_result)) { + set_config_filename(dialog_input_result); + sym_set_change_count(1); + return; + } + btn_dialog(main_window, _("File does not exist!"), 0); + break; + case 1: + show_scroll_win(main_window, + _("Load Alternate Configuration"), + load_config_help); + break; + case KEY_EXIT: + return; + } + } +} + +static void conf_save(void) +{ + while (1) { + int res; + res = dialog_inputbox(main_window, + NULL, save_config_text, + filename, + &dialog_input_result, + &dialog_input_result_len); + switch (res) { + case 0: + if (!dialog_input_result[0]) + return; + res = conf_write(dialog_input_result); + if (!res) { + set_config_filename(dialog_input_result); + return; + } + btn_dialog(main_window, _("Can't create file! " + "Probably a nonexistent directory."), + 1, ""); + break; + case 1: + show_scroll_win(main_window, + _("Save Alternate Configuration"), + save_config_help); + break; + case KEY_EXIT: + return; + } + } +} + +void setup_windows(void) +{ + int lines, columns; + + getmaxyx(stdscr, lines, columns); + + if (main_window != NULL) + delwin(main_window); + + /* set up the menu and menu window */ + main_window = newwin(lines-2, columns-2, 2, 1); + keypad(main_window, TRUE); + mwin_max_lines = lines-7; + mwin_max_cols = columns-6; + + /* panels order is from bottom to top */ + new_panel(main_window); +} + +int main(int ac, char **av) +{ + int lines, columns; + char *mode; + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + conf_parse(av[1]); + conf_read(NULL); + + mode = getenv("NCONFIG_MODE"); + if (mode) { + if (!strcasecmp(mode, "single_menu")) + single_menu_mode = 1; + } + + /* Initialize curses */ + initscr(); + /* set color theme */ + set_colors(); + + cbreak(); + noecho(); + keypad(stdscr, TRUE); + curs_set(0); + + getmaxyx(stdscr, lines, columns); + if (columns < 75 || lines < 20) { + endwin(); + printf("Your terminal should have at " + "least 20 lines and 75 columns\n"); + return 1; + } + + notimeout(stdscr, FALSE); +#if NCURSES_REENTRANT + set_escdelay(1); +#else + ESCDELAY = 1; +#endif + + /* set btns menu */ + curses_menu = new_menu(curses_menu_items); + menu_opts_off(curses_menu, O_SHOWDESC); + menu_opts_on(curses_menu, O_SHOWMATCH); + menu_opts_on(curses_menu, O_ONEVALUE); + menu_opts_on(curses_menu, O_NONCYCLIC); + menu_opts_on(curses_menu, O_IGNORECASE); + set_menu_mark(curses_menu, " "); + set_menu_fore(curses_menu, attributes[MAIN_MENU_FORE]); + set_menu_back(curses_menu, attributes[MAIN_MENU_BACK]); + set_menu_grey(curses_menu, attributes[MAIN_MENU_GREY]); + + set_config_filename(conf_get_configname()); + setup_windows(); + + /* check for KEY_FUNC(1) */ + if (has_key(KEY_F(1)) == FALSE) { + show_scroll_win(main_window, + _("Instructions"), + _(menu_no_f_instructions)); + } + + conf_set_message_callback(conf_message_callback); + /* do the work */ + while (!global_exit) { + conf(&rootmenu); + if (!global_exit && do_exit() == 0) + break; + } + /* ok, we are done */ + unpost_menu(curses_menu); + free_menu(curses_menu); + delwin(main_window); + clear(); + refresh(); + endwin(); + return 0; +} + diff --git a/buildroot/support/kconfig/nconf.gui.c b/buildroot/support/kconfig/nconf.gui.c new file mode 100644 index 0000000..8275f0e --- /dev/null +++ b/buildroot/support/kconfig/nconf.gui.c @@ -0,0 +1,656 @@ +/* + * Copyright (C) 2008 Nir Tzachar 0) + win_rows = msg_lines+4; + else + win_rows = msg_lines+2; + + win = newwin(win_rows, total_width+4, y, x); + keypad(win, TRUE); + menu_win = derwin(win, 1, btns_width, win_rows-2, + 1+(total_width+2-btns_width)/2); + menu = new_menu(btns); + msg_win = derwin(win, win_rows-2, msg_width, 1, + 1+(total_width+2-msg_width)/2); + + set_menu_fore(menu, attributes[DIALOG_MENU_FORE]); + set_menu_back(menu, attributes[DIALOG_MENU_BACK]); + + (void) wattrset(win, attributes[DIALOG_BOX]); + box(win, 0, 0); + + /* print message */ + (void) wattrset(msg_win, attributes[DIALOG_TEXT]); + fill_window(msg_win, msg); + + set_menu_win(menu, win); + set_menu_sub(menu, menu_win); + set_menu_format(menu, 1, btn_num); + menu_opts_off(menu, O_SHOWDESC); + menu_opts_off(menu, O_SHOWMATCH); + menu_opts_on(menu, O_ONEVALUE); + menu_opts_on(menu, O_NONCYCLIC); + set_menu_mark(menu, ""); + post_menu(menu); + + + touchwin(win); + refresh_all_windows(main_window); + while ((res = wgetch(win))) { + switch (res) { + case KEY_LEFT: + menu_driver(menu, REQ_LEFT_ITEM); + break; + case KEY_RIGHT: + menu_driver(menu, REQ_RIGHT_ITEM); + break; + case 10: /* ENTER */ + case 27: /* ESCAPE */ + case ' ': + case KEY_F(F_BACK): + case KEY_F(F_EXIT): + break; + } + touchwin(win); + refresh_all_windows(main_window); + + if (res == 10 || res == ' ') { + res = item_index(current_item(menu)); + break; + } else if (res == 27 || res == KEY_F(F_BACK) || + res == KEY_F(F_EXIT)) { + res = KEY_EXIT; + break; + } + } + + unpost_menu(menu); + free_menu(menu); + for (i = 0; i < btn_num; i++) + free_item(btns[i]); + + delwin(win); + return res; +} + +int dialog_inputbox(WINDOW *main_window, + const char *title, const char *prompt, + const char *init, char **resultp, int *result_len) +{ + int prompt_lines = 0; + int prompt_width = 0; + WINDOW *win; + WINDOW *prompt_win; + WINDOW *form_win; + PANEL *panel; + int i, x, y; + int res = -1; + int cursor_position = strlen(init); + int cursor_form_win; + char *result = *resultp; + + if (strlen(init)+1 > *result_len) { + *result_len = strlen(init)+1; + *resultp = result = realloc(result, *result_len); + } + + /* find the widest line of msg: */ + prompt_lines = get_line_no(prompt); + for (i = 0; i < prompt_lines; i++) { + const char *line = get_line(prompt, i); + int len = get_line_length(line); + prompt_width = max(prompt_width, len); + } + + if (title) + prompt_width = max(prompt_width, strlen(title)); + + /* place dialog in middle of screen */ + y = (getmaxy(stdscr)-(prompt_lines+4))/2; + x = (getmaxx(stdscr)-(prompt_width+4))/2; + + strncpy(result, init, *result_len); + + /* create the windows */ + win = newwin(prompt_lines+6, prompt_width+7, y, x); + prompt_win = derwin(win, prompt_lines+1, prompt_width, 2, 2); + form_win = derwin(win, 1, prompt_width, prompt_lines+3, 2); + keypad(form_win, TRUE); + + (void) wattrset(form_win, attributes[INPUT_FIELD]); + + (void) wattrset(win, attributes[INPUT_BOX]); + box(win, 0, 0); + (void) wattrset(win, attributes[INPUT_HEADING]); + if (title) + mvwprintw(win, 0, 3, "%s", title); + + /* print message */ + (void) wattrset(prompt_win, attributes[INPUT_TEXT]); + fill_window(prompt_win, prompt); + + mvwprintw(form_win, 0, 0, "%*s", prompt_width, " "); + cursor_form_win = min(cursor_position, prompt_width-1); + mvwprintw(form_win, 0, 0, "%s", + result + cursor_position-cursor_form_win); + + /* create panels */ + panel = new_panel(win); + + /* show the cursor */ + curs_set(1); + + touchwin(win); + refresh_all_windows(main_window); + while ((res = wgetch(form_win))) { + int len = strlen(result); + switch (res) { + case 10: /* ENTER */ + case 27: /* ESCAPE */ + case KEY_F(F_HELP): + case KEY_F(F_EXIT): + case KEY_F(F_BACK): + break; + case 127: + case KEY_BACKSPACE: + if (cursor_position > 0) { + memmove(&result[cursor_position-1], + &result[cursor_position], + len-cursor_position+1); + cursor_position--; + cursor_form_win--; + len--; + } + break; + case KEY_DC: + if (cursor_position >= 0 && cursor_position < len) { + memmove(&result[cursor_position], + &result[cursor_position+1], + len-cursor_position+1); + len--; + } + break; + case KEY_UP: + case KEY_RIGHT: + if (cursor_position < len) { + cursor_position++; + cursor_form_win++; + } + break; + case KEY_DOWN: + case KEY_LEFT: + if (cursor_position > 0) { + cursor_position--; + cursor_form_win--; + } + break; + case KEY_HOME: + cursor_position = 0; + cursor_form_win = 0; + break; + case KEY_END: + cursor_position = len; + cursor_form_win = min(cursor_position, prompt_width-1); + break; + default: + if ((isgraph(res) || isspace(res))) { + /* one for new char, one for '\0' */ + if (len+2 > *result_len) { + *result_len = len+2; + *resultp = result = realloc(result, + *result_len); + } + /* insert the char at the proper position */ + memmove(&result[cursor_position+1], + &result[cursor_position], + len-cursor_position+1); + result[cursor_position] = res; + cursor_position++; + cursor_form_win++; + len++; + } else { + mvprintw(0, 0, "unknown key: %d\n", res); + } + break; + } + if (cursor_form_win < 0) + cursor_form_win = 0; + else if (cursor_form_win > prompt_width-1) + cursor_form_win = prompt_width-1; + + wmove(form_win, 0, 0); + wclrtoeol(form_win); + mvwprintw(form_win, 0, 0, "%*s", prompt_width, " "); + mvwprintw(form_win, 0, 0, "%s", + result + cursor_position-cursor_form_win); + wmove(form_win, 0, cursor_form_win); + touchwin(win); + refresh_all_windows(main_window); + + if (res == 10) { + res = 0; + break; + } else if (res == 27 || res == KEY_F(F_BACK) || + res == KEY_F(F_EXIT)) { + res = KEY_EXIT; + break; + } else if (res == KEY_F(F_HELP)) { + res = 1; + break; + } + } + + /* hide the cursor */ + curs_set(0); + del_panel(panel); + delwin(prompt_win); + delwin(form_win); + delwin(win); + return res; +} + +/* refresh all windows in the correct order */ +void refresh_all_windows(WINDOW *main_window) +{ + update_panels(); + touchwin(main_window); + refresh(); +} + +/* layman's scrollable window... */ +void show_scroll_win(WINDOW *main_window, + const char *title, + const char *text) +{ + int res; + int total_lines = get_line_no(text); + int x, y, lines, columns; + int start_x = 0, start_y = 0; + int text_lines = 0, text_cols = 0; + int total_cols = 0; + int win_cols = 0; + int win_lines = 0; + int i = 0; + WINDOW *win; + WINDOW *pad; + PANEL *panel; + + getmaxyx(stdscr, lines, columns); + + /* find the widest line of msg: */ + total_lines = get_line_no(text); + for (i = 0; i < total_lines; i++) { + const char *line = get_line(text, i); + int len = get_line_length(line); + total_cols = max(total_cols, len+2); + } + + /* create the pad */ + pad = newpad(total_lines+10, total_cols+10); + (void) wattrset(pad, attributes[SCROLLWIN_TEXT]); + fill_window(pad, text); + + win_lines = min(total_lines+4, lines-2); + win_cols = min(total_cols+2, columns-2); + text_lines = max(win_lines-4, 0); + text_cols = max(win_cols-2, 0); + + /* place window in middle of screen */ + y = (lines-win_lines)/2; + x = (columns-win_cols)/2; + + win = newwin(win_lines, win_cols, y, x); + keypad(win, TRUE); + /* show the help in the help window, and show the help panel */ + (void) wattrset(win, attributes[SCROLLWIN_BOX]); + box(win, 0, 0); + (void) wattrset(win, attributes[SCROLLWIN_HEADING]); + mvwprintw(win, 0, 3, " %s ", title); + panel = new_panel(win); + + /* handle scrolling */ + do { + + copywin(pad, win, start_y, start_x, 2, 2, text_lines, + text_cols, 0); + print_in_middle(win, + text_lines+2, + 0, + text_cols, + "", + attributes[DIALOG_MENU_FORE]); + wrefresh(win); + + res = wgetch(win); + switch (res) { + case KEY_NPAGE: + case ' ': + case 'd': + start_y += text_lines-2; + break; + case KEY_PPAGE: + case 'u': + start_y -= text_lines+2; + break; + case KEY_HOME: + start_y = 0; + break; + case KEY_END: + start_y = total_lines-text_lines; + break; + case KEY_DOWN: + case 'j': + start_y++; + break; + case KEY_UP: + case 'k': + start_y--; + break; + case KEY_LEFT: + case 'h': + start_x--; + break; + case KEY_RIGHT: + case 'l': + start_x++; + break; + } + if (res == 10 || res == 27 || res == 'q' || + res == KEY_F(F_HELP) || res == KEY_F(F_BACK) || + res == KEY_F(F_EXIT)) + break; + if (start_y < 0) + start_y = 0; + if (start_y >= total_lines-text_lines) + start_y = total_lines-text_lines; + if (start_x < 0) + start_x = 0; + if (start_x >= total_cols-text_cols) + start_x = total_cols-text_cols; + } while (res); + + del_panel(panel); + delwin(win); + refresh_all_windows(main_window); +} diff --git a/buildroot/support/kconfig/nconf.h b/buildroot/support/kconfig/nconf.h new file mode 100644 index 0000000..0d52617 --- /dev/null +++ b/buildroot/support/kconfig/nconf.h @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2008 Nir Tzachar +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "ncurses.h" + +#define max(a, b) ({\ + typeof(a) _a = a;\ + typeof(b) _b = b;\ + _a > _b ? _a : _b; }) + +#define min(a, b) ({\ + typeof(a) _a = a;\ + typeof(b) _b = b;\ + _a < _b ? _a : _b; }) + +typedef enum { + NORMAL = 1, + MAIN_HEADING, + MAIN_MENU_BOX, + MAIN_MENU_FORE, + MAIN_MENU_BACK, + MAIN_MENU_GREY, + MAIN_MENU_HEADING, + SCROLLWIN_TEXT, + SCROLLWIN_HEADING, + SCROLLWIN_BOX, + DIALOG_TEXT, + DIALOG_MENU_FORE, + DIALOG_MENU_BACK, + DIALOG_BOX, + INPUT_BOX, + INPUT_HEADING, + INPUT_TEXT, + INPUT_FIELD, + FUNCTION_TEXT, + FUNCTION_HIGHLIGHT, + ATTR_MAX +} attributes_t; +extern attributes_t attributes[]; + +typedef enum { + F_HELP = 1, + F_SYMBOL = 2, + F_INSTS = 3, + F_CONF = 4, + F_BACK = 5, + F_SAVE = 6, + F_LOAD = 7, + F_SEARCH = 8, + F_EXIT = 9, +} function_key; + +void set_colors(void); + +/* this changes the windows attributes !!! */ +void print_in_middle(WINDOW *win, + int starty, + int startx, + int width, + const char *string, + chtype color); +int get_line_length(const char *line); +int get_line_no(const char *text); +const char *get_line(const char *text, int line_no); +void fill_window(WINDOW *win, const char *text); +int btn_dialog(WINDOW *main_window, const char *msg, int btn_num, ...); +int dialog_inputbox(WINDOW *main_window, + const char *title, const char *prompt, + const char *init, char **resultp, int *result_len); +void refresh_all_windows(WINDOW *main_window); +void show_scroll_win(WINDOW *main_window, + const char *title, + const char *text); diff --git a/buildroot/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch b/buildroot/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch new file mode 100644 index 0000000..e76198a --- /dev/null +++ b/buildroot/support/kconfig/patches/01-kconfig-kernel-to-buildroot.patch @@ -0,0 +1,107 @@ +--- + confdata.c | 4 ++-- + gconf.glade | 2 +- + mconf.c | 4 ++-- + zconf.tab.c_shipped | 2 +- + zconf.y | 2 +- + 5 files changed, 7 insertions(+), 7 deletions(-) + +Index: kconfig/gconf.glade +=================================================================== +--- kconfig.orig/gconf.glade 2013-12-27 22:14:32.395629843 +0100 ++++ kconfig/gconf.glade 2013-12-27 22:14:32.387630158 +0100 +@@ -4,7 +4,7 @@ + + + True +- Gtk Kernel Configurator ++ Gtk Buildroot Configurator + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False +Index: kconfig/mconf.c +=================================================================== +--- kconfig.orig/mconf.c 2013-12-27 22:14:32.395629843 +0100 ++++ kconfig/mconf.c 2013-12-27 22:14:42.179244153 +0100 +@@ -176,9 +176,9 @@ + "Arrow keys navigate the menu. " + " selects submenus ---> (or empty submenus ----). " + "Highlighted letters are hotkeys. " +- "Pressing includes, excludes, modularizes features. " ++ "Pressing selects a feature, while excludes a feature. " + "Press to exit, for Help, for Search. " +- "Legend: [*] built-in [ ] excluded module < > module capable"), ++ "Legend: [*] feature is selected [ ] feature is excluded"), + radiolist_instructions[] = N_( + "Use the arrow keys to navigate this window or " + "press the hotkey of the item you wish to select " +@@ -959,7 +959,7 @@ + if (conf_get_changed()) + res = dialog_yesno(NULL, + _("Do you wish to save your new configuration?\n" +- "(Press to continue kernel configuration.)"), ++ "(Press to continue Buildroot configuration.)"), + 6, 60); + else + res = -1; +Index: kconfig/zconf.tab.c_shipped +=================================================================== +--- kconfig.orig/zconf.tab.c_shipped 2013-12-27 22:14:32.395629843 +0100 ++++ kconfig/zconf.tab.c_shipped 2013-12-27 22:14:32.391630000 +0100 +@@ -2297,7 +2297,7 @@ + + sym_init(); + _menu_init(); +- rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL); ++ rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; +Index: kconfig/zconf.y +=================================================================== +--- kconfig.orig/zconf.y 2013-12-27 22:14:32.395629843 +0100 ++++ kconfig/zconf.y 2013-12-27 22:14:32.391630000 +0100 +@@ -493,7 +493,7 @@ + + sym_init(); + _menu_init(); +- rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL); ++ rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; +Index: kconfig/confdata.c +=================================================================== +--- kconfig.orig/confdata.c 2013-12-27 22:14:32.395629843 +0100 ++++ kconfig/confdata.c 2013-12-27 22:14:32.391630000 +0100 +@@ -25,7 +25,7 @@ + static const char *conf_filename; + static int conf_lineno, conf_warnings, conf_unsaved; + +-const char conf_defname[] = "arch/$ARCH/defconfig"; ++const char conf_defname[] = ".defconfig"; + + static void conf_warning(const char *fmt, ...) + { +@@ -63,7 +63,7 @@ + + const char *conf_get_configname(void) + { +- char *name = getenv("KCONFIG_CONFIG"); ++ char *name = getenv("BR2_CONFIG"); + + return name ? name : ".config"; + } +Index: kconfig/qconf.cc +=================================================================== +--- kconfig.orig/qconf.cc 2013-12-27 22:12:15.825013567 +0100 ++++ kconfig/qconf.cc 2013-12-27 22:14:57.826627300 +0100 +@@ -70,7 +70,7 @@ + } + + ConfigSettings::ConfigSettings() +- : QSettings("kernel.org", "qconf") ++ : QSettings("buildroot.org", "qconf") + { + } + diff --git a/buildroot/support/kconfig/patches/06-br-build-system-integration.patch b/buildroot/support/kconfig/patches/06-br-build-system-integration.patch new file mode 100644 index 0000000..3faa39e --- /dev/null +++ b/buildroot/support/kconfig/patches/06-br-build-system-integration.patch @@ -0,0 +1,35 @@ +--- + Makefile | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -159,11 +159,11 @@ + + hostprogs-y := conf + +-ifeq ($(MAKECMDGOALS),nconfig) ++ifeq ($(MAKECMDGOALS),nconf) + hostprogs-y += nconf + endif + +-ifeq ($(MAKECMDGOALS),menuconfig) ++ifeq ($(MAKECMDGOALS),mconf) + hostprogs-y += mconf + endif + +@@ -171,10 +171,10 @@ + hostprogs-y += kxgettext + endif + +-ifeq ($(MAKECMDGOALS),xconfig) ++ifeq ($(MAKECMDGOALS),qconf) + qconf-target := 1 + endif +-ifeq ($(MAKECMDGOALS),gconfig) ++ifeq ($(MAKECMDGOALS),gconf) + gconf-target := 1 + endif + diff --git a/buildroot/support/kconfig/patches/10-br-build-system.patch b/buildroot/support/kconfig/patches/10-br-build-system.patch new file mode 100644 index 0000000..be6fda0 --- /dev/null +++ b/buildroot/support/kconfig/patches/10-br-build-system.patch @@ -0,0 +1,80 @@ +--- + Makefile.br | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + foo.h | 12 ++++++++++++ + 2 files changed, 65 insertions(+) + +Index: b/Makefile.br +=================================================================== +--- /dev/null ++++ b/Makefile.br +@@ -0,0 +1,53 @@ ++src := . ++top_srcdir=../../ ++top_builddir=../../ ++srctree := . ++obj ?= . ++ ++include Makefile ++#HOSTCFLAGS+=-Dinline="" -include foo.h ++-include $(obj)/.depend ++$(obj)/.depend: $(wildcard *.h *.c) ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) -MM *.c > $@ 2>/dev/null || : ++ ++__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 := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-objs)))) ++host-cxxobjs := $(addprefix $(obj)/,$(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))) ++ ++HOST_EXTRACFLAGS += -I$(obj) -DCONFIG_=\"\" ++ ++$(host-csingle): %: %.c ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< -o $(obj)/$@ ++ ++$(host-cmulti): %: $(host-cobjs) $(host-cshlib) ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ ++$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib) ++ $(HOSTCXX) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) $(addprefix $(obj)/,$($(@F)-objs) $($(@F)-cxxobjs)) $(HOSTLOADLIBES_$(@F)) -o $(obj)/$@ ++ ++$(obj)/%.o: %.c ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ ++ ++$(obj)/%.o: $(obj)/%.c ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F)) -c $< -o $@ ++ ++$(obj)/%.o: %.cc ++ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$(@F)) -c $< -o $@ ++ ++$(obj)/%:: $(src)/%_shipped ++ $(Q)cat $< > $@ ++ ++clean: ++ $(Q)rm -f $(addprefix $(obj)/,$(clean-files)) ++distclean: clean ++ $(Q)rm -f $(addprefix $(obj)/,$(lxdialog) $(conf-objs) $(mconf-objs) $(kxgettext-objs) \ ++ $(hostprogs-y) $(qconf-cxxobjs) $(qconf-objs) $(gconf-objs) \ ++ mconf .depend) ++ ++FORCE: ++.PHONY: FORCE clean distclean +Index: b/foo.h +=================================================================== +--- /dev/null ++++ b/foo.h +@@ -0,0 +1,12 @@ ++#ifndef __KCONFIG_FOO_H ++#define __KCONFIG_FOO_H ++ ++#ifndef __APPLE__ ++#include ++#endif ++#include ++ ++#ifndef PATH_MAX ++#define PATH_MAX 1024 ++#endif ++#endif /* __KCONFIG_FOO_H */ diff --git a/buildroot/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch b/buildroot/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch new file mode 100644 index 0000000..b38af26 --- /dev/null +++ b/buildroot/support/kconfig/patches/11-use-mktemp-for-lxdialog.patch @@ -0,0 +1,17 @@ +--- + lxdialog/check-lxdialog.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: b/lxdialog/check-lxdialog.sh +=================================================================== +--- a/lxdialog/check-lxdialog.sh ++++ b/lxdialog/check-lxdialog.sh +@@ -36,7 +36,7 @@ + } + + # Temp file, try to clean up after us +-tmp=.lxdialog.tmp ++tmp=$(mktemp) + trap "rm -f $tmp" 0 1 2 3 15 + + # Check if we can link to ncurses diff --git a/buildroot/support/kconfig/patches/12-fix-glade-file-path.patch b/buildroot/support/kconfig/patches/12-fix-glade-file-path.patch new file mode 100644 index 0000000..a5777da --- /dev/null +++ b/buildroot/support/kconfig/patches/12-fix-glade-file-path.patch @@ -0,0 +1,17 @@ +--- + gconf.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: b/gconf.c +=================================================================== +--- a/gconf.c ++++ b/gconf.c +@@ -1486,7 +1486,7 @@ + /* Determine GUI path */ + env = getenv(SRCTREE); + if (env) +- glade_file = g_strconcat(env, "/scripts/kconfig/gconf.glade", NULL); ++ glade_file = g_strconcat(env, "/support/kconfig/gconf.glade", NULL); + else if (av[0][0] == '/') + glade_file = g_strconcat(av[0], ".glade", NULL); + else diff --git a/buildroot/support/kconfig/patches/14-support-out-of-tree-config.patch b/buildroot/support/kconfig/patches/14-support-out-of-tree-config.patch new file mode 100644 index 0000000..ec3134f --- /dev/null +++ b/buildroot/support/kconfig/patches/14-support-out-of-tree-config.patch @@ -0,0 +1,207 @@ +--- + conf.c | 1 + confdata.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++--------------- + util.c | 16 +++++++++++++-- + 3 files changed, 61 insertions(+), 18 deletions(-) + +Index: b/conf.c +=================================================================== +--- a/conf.c ++++ b/conf.c +@@ -558,7 +558,6 @@ + } + name = av[optind]; + conf_parse(name); +- //zconfdump(stdout); + if (sync_kconfig) { + name = conf_get_configname(); + if (stat(name, &tmpstat)) { +Index: b/confdata.c +=================================================================== +--- a/confdata.c ++++ b/confdata.c +@@ -13,6 +13,7 @@ + #include + #include + #include ++#include + + #include "lkc.h" + +@@ -70,9 +71,7 @@ + + const char *conf_get_autoconfig_name(void) + { +- char *name = getenv("KCONFIG_AUTOCONFIG"); +- +- return name ? name : "include/config/auto.conf"; ++ return getenv("KCONFIG_AUTOCONFIG"); + } + + static char *conf_expand_value(const char *in) +@@ -742,6 +741,9 @@ + char dirname[PATH_MAX+1], tmpname[PATH_MAX+1], newname[PATH_MAX+1]; + char *env; + ++ if (!name) ++ name = conf_get_configname(); ++ + dirname[0] = 0; + if (name && name[0]) { + struct stat st; +@@ -836,6 +838,7 @@ + { + const char *name; + char path[PATH_MAX+1]; ++ char *opwd, *dir, *_name; + char *s, *d, c; + struct symbol *sym; + struct stat sb; +@@ -844,8 +847,20 @@ + name = conf_get_autoconfig_name(); + conf_read_simple(name, S_DEF_AUTO); + +- if (chdir("include/config")) +- return 1; ++ opwd = malloc(256); ++ _name = strdup(name); ++ if (opwd == NULL || _name == NULL) ++ return 1; ++ opwd = getcwd(opwd, 256); ++ dir = dirname(_name); ++ if (dir == NULL) { ++ res = 1; ++ goto err; ++ } ++ if (chdir(dir)) { ++ res = 1; ++ goto err; ++ } + + res = 0; + for_all_symbols(i, sym) { +@@ -938,9 +953,11 @@ + close(fd); + } + out: +- if (chdir("../..")) +- return 1; +- ++ if (chdir(opwd)) ++ res = 1; ++err: ++ free(opwd); ++ free(_name); + return res; + } + +@@ -950,25 +967,38 @@ + const char *name; + FILE *out, *tristate, *out_h; + int i; ++ char dir[PATH_MAX+1], buf[PATH_MAX+1]; ++ char *s; ++ ++ strcpy(dir, conf_get_configname()); ++ s = strrchr(dir, '/'); ++ if (s) ++ s[1] = 0; ++ else ++ dir[0] = 0; + + sym_clear_all_valid(); + +- file_write_dep("include/config/auto.conf.cmd"); ++ sprintf(buf, "%s.config.cmd", dir); ++ file_write_dep(buf); + + if (conf_split_config()) + return 1; + +- out = fopen(".tmpconfig", "w"); ++ sprintf(buf, "%s.tmpconfig", dir); ++ out = fopen(buf, "w"); + if (!out) + return 1; + +- tristate = fopen(".tmpconfig_tristate", "w"); ++ sprintf(buf, "%s.tmpconfig_tristate", dir); ++ tristate = fopen(buf, "w"); + if (!tristate) { + fclose(out); + return 1; + } + +- out_h = fopen(".tmpconfig.h", "w"); ++ sprintf(buf, "%s.tmpconfig.h", dir); ++ out_h = fopen(buf, "w"); + if (!out_h) { + fclose(out); + fclose(tristate); +@@ -1000,19 +1030,22 @@ + name = getenv("KCONFIG_AUTOHEADER"); + if (!name) + name = "include/generated/autoconf.h"; +- if (rename(".tmpconfig.h", name)) ++ sprintf(buf, "%s.tmpconfig.h", dir); ++ if (rename(buf, name)) + return 1; + name = getenv("KCONFIG_TRISTATE"); + if (!name) + name = "include/config/tristate.conf"; +- if (rename(".tmpconfig_tristate", name)) ++ sprintf(buf, "%s.tmpconfig_tristate", dir); ++ if (rename(buf, name)) + return 1; + 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. + */ +- if (rename(".tmpconfig", name)) ++ sprintf(buf, "%s.tmpconfig", dir); ++ if (rename(buf, name)) + return 1; + + return 0; +Index: b/util.c +=================================================================== +--- a/util.c ++++ b/util.c +@@ -34,6 +34,8 @@ + /* write a dependency file as used by kbuild to track dependencies */ + int file_write_dep(const char *name) + { ++ char *str; ++ char buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1]; + struct symbol *sym, *env_sym; + struct expr *e; + struct file *file; +@@ -41,7 +43,16 @@ + + if (!name) + name = ".kconfig.d"; +- out = fopen("..config.tmp", "w"); ++ ++ strcpy(dir, conf_get_configname()); ++ str = strrchr(dir, '/'); ++ if (str) ++ str[1] = 0; ++ else ++ dir[0] = 0; ++ ++ sprintf(buf, "%s..config.tmp", dir); ++ out = fopen(buf, "w"); + if (!out) + return 1; + fprintf(out, "deps_config := \\\n"); +@@ -72,7 +83,8 @@ + + fprintf(out, "\n$(deps_config): ;\n"); + fclose(out); +- rename("..config.tmp", name); ++ sprintf(buf2, "%s%s", dir, name); ++ rename(buf, buf2); + return 0; + } + diff --git a/buildroot/support/kconfig/patches/15-fix-qconf-moc-rule.patch b/buildroot/support/kconfig/patches/15-fix-qconf-moc-rule.patch new file mode 100644 index 0000000..c1848d7 --- /dev/null +++ b/buildroot/support/kconfig/patches/15-fix-qconf-moc-rule.patch @@ -0,0 +1,24 @@ +Fix the rule that generates the .moc file + +The Linux kernel has a "cmd" make function, but we don't have it in +Buildroot, so we need to adjust this rule. + +Signed-off-by: Thomas Petazzoni + +Index: b/Makefile +=================================================================== +--- a/Makefile ++++ b/Makefile +@@ -309,11 +309,8 @@ + + $(obj)/qconf.o: $(obj)/qconf.moc + +-quiet_cmd_moc = MOC $@ +- cmd_moc = $(KC_QT_MOC) -i $< -o $@ +- + $(obj)/%.moc: $(src)/%.h $(obj)/.tmp_qtcheck +- $(call cmd,moc) ++ $(KC_QT_MOC) -i $< -o $@ + + # Extract gconf menu items for I18N support + $(obj)/gconf.glade.h: $(obj)/gconf.glade diff --git a/buildroot/support/kconfig/patches/16-fix-space-to-de-select-options.patch b/buildroot/support/kconfig/patches/16-fix-space-to-de-select-options.patch new file mode 100644 index 0000000..972d2de --- /dev/null +++ b/buildroot/support/kconfig/patches/16-fix-space-to-de-select-options.patch @@ -0,0 +1,41 @@ +commit 6faa447282fe90d42e0513af46c13f20b4b327d4 +Author: Yann E. MORIN +Date: Wed Nov 13 22:45:02 2013 +0100 + + support/kconfig: fix 'space' to (de)select options + + In case a menu has comment without letters/numbers (eg. characters + matching the regexp '^[^[:alpha:][:digit:]]+$', for example - or *), + hitting space will cycle through those comments, rather than + selecting/deselecting the currently-highlighted option. + + This is the behaviour of hitting any letter/digit: jump to the next + option which prompt starts with that letter. The only letters that + do not behave as such are 'y' 'm' and 'n'. Prompts that start with + one of those three letters are instead matched on the first letter + that is not 'y', 'm' or 'n'. + + Fix that by treating 'space' as we treat y/m/n, ie. as an action key, + not as shortcut to jump to prompt. + + Signed-off-by: "Yann E. MORIN" + Cc: Thomas Petazzoni + Cc: Peter Korsgaard + Cc: Samuel Martin + Cc: Thomas De Schampheleire + --- + Note: I'll be running this upstream soonish. + +diff --git a/support/kconfig/lxdialog/menubox.c b/support/kconfig/lxdialog/menubox.c +index 48d382e..6fc7e78 100644 +--- a/lxdialog/menubox.c ++++ b/lxdialog/menubox.c +@@ -285,7 +285,7 @@ do_resize: + if (key < 256 && isalpha(key)) + key = tolower(key); + +- if (strchr("ynmh", key)) ++ if (strchr("ynmh ", key)) + i = max_choice; + else { + for (i = choice + 1; i < max_choice; i++) { diff --git a/buildroot/support/kconfig/patches/17-kconfig-lxdialog-get-ncurses-CFLAGS-with-pkg-config.patch b/buildroot/support/kconfig/patches/17-kconfig-lxdialog-get-ncurses-CFLAGS-with-pkg-config.patch new file mode 100644 index 0000000..1eb48ef --- /dev/null +++ b/buildroot/support/kconfig/patches/17-kconfig-lxdialog-get-ncurses-CFLAGS-with-pkg-config.patch @@ -0,0 +1,50 @@ +From be8af2d54a66911693eddc556e4f7a866670082b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= +Date: Sun, 14 Sep 2014 12:57:50 +0200 +Subject: [PATCH] kconfig/lxdialog: get ncurses CFLAGS with pkg-config +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This makes "make menuconfig" also work on systems where ncurses is not +installed in a standard location (such as on NixOS). + +This patch changes ccflags() so that it tries pkg-config first, and only +if pkg-config fails does it go back to the fallback/manual checks. This +is the same algorithm that ldflags() already uses. + +Signed-off-by: Bjørn Forsman +Signed-off-by: Michal Marek +--- +[This patch is already applied upstream (is part of linux v3.18): +https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=be8af2d54a66911693eddc556e4f7a866670082b + +I'm adding this instead of doing a full upstream kconfig sync because +there was a conflict in one of the Buildroot kconfig patches (against +linux 3.18-rc1), which I was unable to resolve. Just drop this patch next time +Buildroot kconfig is synced against upstream. +] + + scripts/kconfig/lxdialog/check-lxdialog.sh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh +index 9d2a4c5..5075ebf 100755 +--- a/lxdialog/check-lxdialog.sh ++++ b/lxdialog/check-lxdialog.sh +@@ -21,7 +21,11 @@ ldflags() + # Where is ncurses.h? + ccflags() + { +- if [ -f /usr/include/ncursesw/curses.h ]; then ++ if pkg-config --cflags ncursesw 2>/dev/null; then ++ echo '-DCURSES_LOC="" -DNCURSES_WIDECHAR=1' ++ elif pkg-config --cflags ncurses 2>/dev/null; then ++ echo '-DCURSES_LOC=""' ++ elif [ -f /usr/include/ncursesw/curses.h ]; then + echo '-I/usr/include/ncursesw -DCURSES_LOC=""' + echo ' -DNCURSES_WIDECHAR=1' + elif [ -f /usr/include/ncurses/ncurses.h ]; then +-- +2.1.3 + diff --git a/buildroot/support/kconfig/patches/18-kconfig-nconfig-fix-multi-byte-UTF-handling.patch b/buildroot/support/kconfig/patches/18-kconfig-nconfig-fix-multi-byte-UTF-handling.patch new file mode 100644 index 0000000..3ca48d0 --- /dev/null +++ b/buildroot/support/kconfig/patches/18-kconfig-nconfig-fix-multi-byte-UTF-handling.patch @@ -0,0 +1,45 @@ +From 7285996aa0006d671bb01f0d35991d254b2b2b01 Mon Sep 17 00:00:00 2001 +From: Brian Norris +Date: Wed, 4 Jun 2014 00:52:31 -0700 +Subject: kconfig: nconfig: fix multi-byte UTF handling + +Currently, Kconfig descriptions that use multi-byte UTF-8 characters +(such as MTD_NAND_CAFE) will have their menu entries dropped from the +'make nconfig' ncurses menu, and all subsequent entries in the same +window will be omitted. This seems to be due to the ncurses 'menu' +library, which does not traditionally handle UTF-8 >8-bit characters +properly. + +The ncursesw library ('w' is for "wide") is written to handle these +UTF-8 characters, and is practically a drop-in replacement at the source +level. Use it by default, if available. + +Link: https://bugzilla.kernel.org/show_bug.cgi?id=43067 +Signed-off-by: Brian Norris +Cc: "Yann E. MORIN" +Cc: Martin Walch +Acked-by: Sam Ravnborg +Signed-off-by: Michal Marek +--- + scripts/kconfig/Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +(limited to 'scripts/kconfig/Makefile') + +diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile +index e7bf38e..c059385 100644 +--- a/scripts/kconfig/Makefile ++++ b/scripts/kconfig/Makefile +@@ -191,7 +191,8 @@ HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \ + HOSTLOADLIBES_mconf = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC)) + + HOSTLOADLIBES_nconf = $(shell \ +- pkg-config --libs menu panel ncurses 2>/dev/null \ ++ pkg-config --libs menuw panelw ncursesw 2>/dev/null \ ++ || pkg-config --libs menu panel ncurses 2>/dev/null \ + || echo "-lmenu -lpanel -lncurses" ) + $(obj)/qconf.o: $(obj)/.tmp_qtcheck + +-- +cgit v1.1 + diff --git a/buildroot/support/kconfig/patches/series b/buildroot/support/kconfig/patches/series new file mode 100644 index 0000000..1a53ba9 --- /dev/null +++ b/buildroot/support/kconfig/patches/series @@ -0,0 +1,10 @@ +01-kconfig-kernel-to-buildroot.patch +06-br-build-system-integration.patch +10-br-build-system.patch +11-use-mktemp-for-lxdialog.patch +12-fix-glade-file-path.patch +14-support-out-of-tree-config.patch +15-fix-qconf-moc-rule.patch +16-fix-space-to-de-select-options.patch +17-kconfig-lxdialog-get-ncurses-CFLAGS-with-pkg-config.patch +18-kconfig-nconfig-fix-multi-byte-UTF-handling.patch diff --git a/buildroot/support/kconfig/qconf.cc b/buildroot/support/kconfig/qconf.cc new file mode 100644 index 0000000..f630567 --- /dev/null +++ b/buildroot/support/kconfig/qconf.cc @@ -0,0 +1,1795 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include + +#if QT_VERSION < 0x040000 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "lkc.h" +#include "qconf.h" + +#include "qconf.moc" +#include "images.c" + +#ifdef _ +# undef _ +# define _ qgettext +#endif + +static QApplication *configApp; +static ConfigSettings *configSettings; + +Q3Action *ConfigMainWindow::saveAction; + +static inline QString qgettext(const char* str) +{ + return QString::fromLocal8Bit(gettext(str)); +} + +static inline QString qgettext(const QString& str) +{ + return QString::fromLocal8Bit(gettext(str.latin1())); +} + +ConfigSettings::ConfigSettings() + : QSettings("buildroot.org", "qconf") +{ +} + +/** + * Reads a list of integer values from the application settings. + */ +Q3ValueList ConfigSettings::readSizes(const QString& key, bool *ok) +{ + Q3ValueList result; + QStringList entryList = readListEntry(key, ok); + QStringList::Iterator it; + + for (it = entryList.begin(); it != entryList.end(); ++it) + result.push_back((*it).toInt()); + + return result; +} + +/** + * Writes a list of integer values to the application settings. + */ +bool ConfigSettings::writeSizes(const QString& key, const Q3ValueList& value) +{ + QStringList stringList; + Q3ValueList::ConstIterator it; + + for (it = value.begin(); it != value.end(); ++it) + stringList.push_back(QString::number(*it)); + return writeEntry(key, stringList); +} + + +/* + * set the new data + * TODO check the value + */ +void ConfigItem::okRename(int col) +{ + Parent::okRename(col); + sym_set_string_value(menu->sym, text(dataColIdx).latin1()); + listView()->updateList(this); +} + +/* + * update the displayed of a menu entry + */ +void ConfigItem::updateMenu(void) +{ + ConfigList* list; + struct symbol* sym; + struct property *prop; + QString prompt; + int type; + tristate expr; + + list = listView(); + if (goParent) { + setPixmap(promptColIdx, list->menuBackPix); + prompt = ".."; + goto set_prompt; + } + + sym = menu->sym; + prop = menu->prompt; + prompt = _(menu_get_prompt(menu)); + + if (prop) switch (prop->type) { + case P_MENU: + if (list->mode == singleMode || list->mode == symbolMode) { + /* a menuconfig entry is displayed differently + * depending whether it's at the view root or a child. + */ + if (sym && list->rootEntry == menu) + break; + setPixmap(promptColIdx, list->menuPix); + } else { + if (sym) + break; + setPixmap(promptColIdx, 0); + } + goto set_prompt; + case P_COMMENT: + setPixmap(promptColIdx, 0); + goto set_prompt; + default: + ; + } + if (!sym) + goto set_prompt; + + setText(nameColIdx, QString::fromLocal8Bit(sym->name)); + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + char ch; + + if (!sym_is_changable(sym) && list->optMode == normalOpt) { + setPixmap(promptColIdx, 0); + setText(noColIdx, QString::null); + setText(modColIdx, QString::null); + setText(yesColIdx, QString::null); + break; + } + expr = sym_get_tristate_value(sym); + switch (expr) { + case yes: + if (sym_is_choice_value(sym) && type == S_BOOLEAN) + setPixmap(promptColIdx, list->choiceYesPix); + else + setPixmap(promptColIdx, list->symbolYesPix); + setText(yesColIdx, "Y"); + ch = 'Y'; + break; + case mod: + setPixmap(promptColIdx, list->symbolModPix); + setText(modColIdx, "M"); + ch = 'M'; + break; + default: + if (sym_is_choice_value(sym) && type == S_BOOLEAN) + setPixmap(promptColIdx, list->choiceNoPix); + else + setPixmap(promptColIdx, list->symbolNoPix); + setText(noColIdx, "N"); + ch = 'N'; + break; + } + if (expr != no) + setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0); + if (expr != mod) + setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0); + if (expr != yes) + setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0); + + setText(dataColIdx, QChar(ch)); + break; + case S_INT: + case S_HEX: + case S_STRING: + const char* data; + + data = sym_get_string_value(sym); + + int i = list->mapIdx(dataColIdx); + if (i >= 0) + setRenameEnabled(i, TRUE); + setText(dataColIdx, data); + if (type == S_STRING) + prompt = QString("%1: %2").arg(prompt).arg(data); + else + prompt = QString("(%2) %1").arg(prompt).arg(data); + break; + } + if (!sym_has_value(sym) && visible) + prompt += _(" (NEW)"); +set_prompt: + setText(promptColIdx, prompt); +} + +void ConfigItem::testUpdateMenu(bool v) +{ + ConfigItem* i; + + visible = v; + if (!menu) + return; + + sym_calc_value(menu->sym); + if (menu->flags & MENU_CHANGED) { + /* the menu entry changed, so update all list items */ + menu->flags &= ~MENU_CHANGED; + for (i = (ConfigItem*)menu->data; i; i = i->nextItem) + i->updateMenu(); + } else if (listView()->updateAll) + updateMenu(); +} + +void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align) +{ + ConfigList* list = listView(); + + if (visible) { + if (isSelected() && !list->hasFocus() && list->mode == menuMode) + Parent::paintCell(p, list->inactivedColorGroup, column, width, align); + else + Parent::paintCell(p, cg, column, width, align); + } else + Parent::paintCell(p, list->disabledColorGroup, column, width, align); +} + +/* + * construct a menu entry + */ +void ConfigItem::init(void) +{ + if (menu) { + ConfigList* list = listView(); + nextItem = (ConfigItem*)menu->data; + menu->data = this; + + if (list->mode != fullMode) + setOpen(TRUE); + sym_calc_value(menu->sym); + } + updateMenu(); +} + +/* + * destruct a menu entry + */ +ConfigItem::~ConfigItem(void) +{ + if (menu) { + ConfigItem** ip = (ConfigItem**)&menu->data; + for (; *ip; ip = &(*ip)->nextItem) { + if (*ip == this) { + *ip = nextItem; + break; + } + } + } +} + +ConfigLineEdit::ConfigLineEdit(ConfigView* parent) + : Parent(parent) +{ + connect(this, SIGNAL(lostFocus()), SLOT(hide())); +} + +void ConfigLineEdit::show(ConfigItem* i) +{ + item = i; + if (sym_get_string_value(item->menu->sym)) + setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym))); + else + setText(QString::null); + Parent::show(); + setFocus(); +} + +void ConfigLineEdit::keyPressEvent(QKeyEvent* e) +{ + switch (e->key()) { + case Qt::Key_Escape: + break; + case Qt::Key_Return: + case Qt::Key_Enter: + sym_set_string_value(item->menu->sym, text().latin1()); + parent()->updateList(item); + break; + default: + Parent::keyPressEvent(e); + return; + } + e->accept(); + parent()->list->setFocus(); + hide(); +} + +ConfigList::ConfigList(ConfigView* p, const char *name) + : Parent(p, name), + updateAll(false), + symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no), + choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no), + menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void), + showName(false), showRange(false), showData(false), optMode(normalOpt), + rootEntry(0), headerPopup(0) +{ + int i; + + setSorting(-1); + setRootIsDecorated(TRUE); + disabledColorGroup = palette().active(); + disabledColorGroup.setColor(QColorGroup::Text, palette().disabled().text()); + inactivedColorGroup = palette().active(); + inactivedColorGroup.setColor(QColorGroup::Highlight, palette().disabled().highlight()); + + connect(this, SIGNAL(selectionChanged(void)), + SLOT(updateSelection(void))); + + if (name) { + configSettings->beginGroup(name); + showName = configSettings->readBoolEntry("/showName", false); + showRange = configSettings->readBoolEntry("/showRange", false); + showData = configSettings->readBoolEntry("/showData", false); + optMode = (enum optionMode)configSettings->readNumEntry("/optionMode", false); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } + + for (i = 0; i < colNr; i++) + colMap[i] = colRevMap[i] = -1; + addColumn(promptColIdx, _("Option")); + + reinit(); +} + +bool ConfigList::menuSkip(struct menu *menu) +{ + if (optMode == normalOpt && menu_is_visible(menu)) + return false; + if (optMode == promptOpt && menu_has_prompt(menu)) + return false; + if (optMode == allOpt) + return false; + return true; +} + +void ConfigList::reinit(void) +{ + removeColumn(dataColIdx); + removeColumn(yesColIdx); + removeColumn(modColIdx); + removeColumn(noColIdx); + removeColumn(nameColIdx); + + if (showName) + addColumn(nameColIdx, _("Name")); + if (showRange) { + addColumn(noColIdx, "N"); + addColumn(modColIdx, "M"); + addColumn(yesColIdx, "Y"); + } + if (showData) + addColumn(dataColIdx, _("Value")); + + updateListAll(); +} + +void ConfigList::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/showName", showName); + configSettings->writeEntry("/showRange", showRange); + configSettings->writeEntry("/showData", showData); + configSettings->writeEntry("/optionMode", (int)optMode); + configSettings->endGroup(); + } +} + +ConfigItem* ConfigList::findConfigItem(struct menu *menu) +{ + ConfigItem* item = (ConfigItem*)menu->data; + + for (; item; item = item->nextItem) { + if (this == item->listView()) + break; + } + + return item; +} + +void ConfigList::updateSelection(void) +{ + struct menu *menu; + enum prop_type type; + + ConfigItem* item = (ConfigItem*)selectedItem(); + if (!item) + return; + + menu = item->menu; + emit menuChanged(menu); + if (!menu) + return; + type = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (mode == menuMode && type == P_MENU) + emit menuSelected(menu); +} + +void ConfigList::updateList(ConfigItem* item) +{ + ConfigItem* last = 0; + + if (!rootEntry) { + if (mode != listMode) + goto update; + Q3ListViewItemIterator it(this); + ConfigItem* item; + + for (; it.current(); ++it) { + item = (ConfigItem*)it.current(); + if (!item->menu) + continue; + item->testUpdateMenu(menu_is_visible(item->menu)); + } + return; + } + + if (rootEntry != &rootmenu && (mode == singleMode || + (mode == symbolMode && rootEntry->parent != &rootmenu))) { + item = firstChild(); + if (!item) + item = new ConfigItem(this, 0, true); + last = item; + } + if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) && + rootEntry->sym && rootEntry->prompt) { + item = last ? last->nextSibling() : firstChild(); + if (!item) + item = new ConfigItem(this, last, rootEntry, true); + else + item->testUpdateMenu(true); + + updateMenuList(item, rootEntry); + triggerUpdate(); + return; + } +update: + updateMenuList(this, rootEntry); + triggerUpdate(); +} + +void ConfigList::setValue(ConfigItem* item, tristate val) +{ + struct symbol* sym; + int type; + tristate oldval; + + sym = item->menu ? item->menu->sym : 0; + if (!sym) + return; + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + oldval = sym_get_tristate_value(sym); + + if (!sym_set_tristate_value(sym, val)) + return; + if (oldval == no && item->menu->list) + item->setOpen(TRUE); + parent()->updateList(item); + break; + } +} + +void ConfigList::changeValue(ConfigItem* item) +{ + struct symbol* sym; + struct menu* menu; + int type, oldexpr, newexpr; + + menu = item->menu; + if (!menu) + return; + sym = menu->sym; + if (!sym) { + if (item->menu->list) + item->setOpen(!item->isOpen()); + return; + } + + type = sym_get_type(sym); + switch (type) { + case S_BOOLEAN: + case S_TRISTATE: + oldexpr = sym_get_tristate_value(sym); + newexpr = sym_toggle_tristate_value(sym); + if (item->menu->list) { + if (oldexpr == newexpr) + item->setOpen(!item->isOpen()); + else if (oldexpr == no) + item->setOpen(TRUE); + } + if (oldexpr != newexpr) + parent()->updateList(item); + break; + case S_INT: + case S_HEX: + case S_STRING: + if (colMap[dataColIdx] >= 0) + item->startRename(colMap[dataColIdx]); + else + parent()->lineEdit->show(item); + break; + } +} + +void ConfigList::setRootMenu(struct menu *menu) +{ + enum prop_type type; + + if (rootEntry == menu) + return; + type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (type != P_MENU) + return; + updateMenuList(this, 0); + rootEntry = menu; + updateListAll(); + setSelected(currentItem(), hasFocus()); + ensureItemVisible(currentItem()); +} + +void ConfigList::setParentMenu(void) +{ + ConfigItem* item; + struct menu *oldroot; + + oldroot = rootEntry; + if (rootEntry == &rootmenu) + return; + setRootMenu(menu_get_parent_menu(rootEntry->parent)); + + Q3ListViewItemIterator it(this); + for (; (item = (ConfigItem*)it.current()); it++) { + if (item->menu == oldroot) { + setCurrentItem(item); + ensureItemVisible(item); + break; + } + } +} + +/* + * update all the children of a menu entry + * removes/adds the entries from the parent widget as necessary + * + * parent: either the menu list widget or a menu entry widget + * menu: entry to be updated + */ +template +void ConfigList::updateMenuList(P* parent, struct menu* menu) +{ + struct menu* child; + ConfigItem* item; + ConfigItem* last; + bool visible; + enum prop_type type; + + if (!menu) { + while ((item = parent->firstChild())) + delete item; + return; + } + + last = parent->firstChild(); + if (last && !last->goParent) + last = 0; + for (child = menu->list; child; child = child->next) { + item = last ? last->nextSibling() : parent->firstChild(); + type = child->prompt ? child->prompt->type : P_UNKNOWN; + + switch (mode) { + case menuMode: + if (!(child->flags & MENU_ROOT)) + goto hide; + break; + case symbolMode: + if (child->flags & MENU_ROOT) + goto hide; + break; + default: + break; + } + + visible = menu_is_visible(child); + if (!menuSkip(child)) { + if (!child->sym && !child->list && !child->prompt) + continue; + if (!item || item->menu != child) + item = new ConfigItem(parent, last, child, visible); + else + item->testUpdateMenu(visible); + + if (mode == fullMode || mode == menuMode || type != P_MENU) + updateMenuList(item, child); + else + updateMenuList(item, 0); + last = item; + continue; + } + hide: + if (item && item->menu == child) { + last = parent->firstChild(); + if (last == item) + last = 0; + else while (last->nextSibling() != item) + last = last->nextSibling(); + delete item; + } + } +} + +void ConfigList::keyPressEvent(QKeyEvent* ev) +{ + Q3ListViewItem* i = currentItem(); + ConfigItem* item; + struct menu *menu; + enum prop_type type; + + if (ev->key() == Qt::Key_Escape && mode != fullMode && mode != listMode) { + emit parentSelected(); + ev->accept(); + return; + } + + if (!i) { + Parent::keyPressEvent(ev); + return; + } + item = (ConfigItem*)i; + + switch (ev->key()) { + case Qt::Key_Return: + case Qt::Key_Enter: + if (item->goParent) { + emit parentSelected(); + break; + } + menu = item->menu; + if (!menu) + break; + type = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (type == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) { + emit menuSelected(menu); + break; + } + case Qt::Key_Space: + changeValue(item); + break; + case Qt::Key_N: + setValue(item, no); + break; + case Qt::Key_M: + setValue(item, mod); + break; + case Qt::Key_Y: + setValue(item, yes); + break; + default: + Parent::keyPressEvent(ev); + return; + } + ev->accept(); +} + +void ConfigList::contentsMousePressEvent(QMouseEvent* e) +{ + //QPoint p(contentsToViewport(e->pos())); + //printf("contentsMousePressEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMousePressEvent(e); +} + +void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e) +{ + QPoint p(contentsToViewport(e->pos())); + ConfigItem* item = (ConfigItem*)itemAt(p); + struct menu *menu; + enum prop_type ptype; + const QPixmap* pm; + int idx, x; + + if (!item) + goto skip; + + menu = item->menu; + x = header()->offset() + p.x(); + idx = colRevMap[header()->sectionAt(x)]; + switch (idx) { + case promptColIdx: + pm = item->pixmap(promptColIdx); + if (pm) { + int off = header()->sectionPos(0) + itemMargin() + + treeStepSize() * (item->depth() + (rootIsDecorated() ? 1 : 0)); + if (x >= off && x < off + pm->width()) { + if (item->goParent) { + emit parentSelected(); + break; + } else if (!menu) + break; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && rootEntry != menu && + mode != fullMode && mode != menuMode) + emit menuSelected(menu); + else + changeValue(item); + } + } + break; + case noColIdx: + setValue(item, no); + break; + case modColIdx: + setValue(item, mod); + break; + case yesColIdx: + setValue(item, yes); + break; + case dataColIdx: + changeValue(item); + break; + } + +skip: + //printf("contentsMouseReleaseEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseReleaseEvent(e); +} + +void ConfigList::contentsMouseMoveEvent(QMouseEvent* e) +{ + //QPoint p(contentsToViewport(e->pos())); + //printf("contentsMouseMoveEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseMoveEvent(e); +} + +void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e) +{ + QPoint p(contentsToViewport(e->pos())); + ConfigItem* item = (ConfigItem*)itemAt(p); + struct menu *menu; + enum prop_type ptype; + + if (!item) + goto skip; + if (item->goParent) { + emit parentSelected(); + goto skip; + } + menu = item->menu; + if (!menu) + goto skip; + ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN; + if (ptype == P_MENU && (mode == singleMode || mode == symbolMode)) + emit menuSelected(menu); + else if (menu->sym) + changeValue(item); + +skip: + //printf("contentsMouseDoubleClickEvent: %d,%d\n", p.x(), p.y()); + Parent::contentsMouseDoubleClickEvent(e); +} + +void ConfigList::focusInEvent(QFocusEvent *e) +{ + struct menu *menu = NULL; + + Parent::focusInEvent(e); + + ConfigItem* item = (ConfigItem *)currentItem(); + if (item) { + setSelected(item, TRUE); + menu = item->menu; + } + emit gotFocus(menu); +} + +void ConfigList::contextMenuEvent(QContextMenuEvent *e) +{ + if (e->y() <= header()->geometry().bottom()) { + if (!headerPopup) { + Q3Action *action; + + headerPopup = new Q3PopupMenu(this); + action = new Q3Action(NULL, _("Show Name"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowName(bool))); + connect(parent(), SIGNAL(showNameChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showName); + action->addTo(headerPopup); + action = new Q3Action(NULL, _("Show Range"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowRange(bool))); + connect(parent(), SIGNAL(showRangeChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showRange); + action->addTo(headerPopup); + action = new Q3Action(NULL, _("Show Data"), 0, this); + action->setToggleAction(TRUE); + connect(action, SIGNAL(toggled(bool)), + parent(), SLOT(setShowData(bool))); + connect(parent(), SIGNAL(showDataChanged(bool)), + action, SLOT(setOn(bool))); + action->setOn(showData); + action->addTo(headerPopup); + } + headerPopup->exec(e->globalPos()); + e->accept(); + } else + e->ignore(); +} + +ConfigView*ConfigView::viewList; +QAction *ConfigView::showNormalAction; +QAction *ConfigView::showAllAction; +QAction *ConfigView::showPromptAction; + +ConfigView::ConfigView(QWidget* parent, const char *name) + : Parent(parent, name) +{ + list = new ConfigList(this, name); + lineEdit = new ConfigLineEdit(this); + lineEdit->hide(); + + this->nextView = viewList; + viewList = this; +} + +ConfigView::~ConfigView(void) +{ + ConfigView** vp; + + for (vp = &viewList; *vp; vp = &(*vp)->nextView) { + if (*vp == this) { + *vp = nextView; + break; + } + } +} + +void ConfigView::setOptionMode(QAction *act) +{ + if (act == showNormalAction) + list->optMode = normalOpt; + else if (act == showAllAction) + list->optMode = allOpt; + else + list->optMode = promptOpt; + + list->updateListAll(); +} + +void ConfigView::setShowName(bool b) +{ + if (list->showName != b) { + list->showName = b; + list->reinit(); + emit showNameChanged(b); + } +} + +void ConfigView::setShowRange(bool b) +{ + if (list->showRange != b) { + list->showRange = b; + list->reinit(); + emit showRangeChanged(b); + } +} + +void ConfigView::setShowData(bool b) +{ + if (list->showData != b) { + list->showData = b; + list->reinit(); + emit showDataChanged(b); + } +} + +void ConfigList::setAllOpen(bool open) +{ + Q3ListViewItemIterator it(this); + + for (; it.current(); it++) + it.current()->setOpen(open); +} + +void ConfigView::updateList(ConfigItem* item) +{ + ConfigView* v; + + for (v = viewList; v; v = v->nextView) + v->list->updateList(item); +} + +void ConfigView::updateListAll(void) +{ + ConfigView* v; + + for (v = viewList; v; v = v->nextView) + v->list->updateListAll(); +} + +ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name) + : Parent(parent, name), sym(0), _menu(0) +{ + if (name) { + configSettings->beginGroup(name); + _showDebug = configSettings->readBoolEntry("/showDebug", false); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } +} + +void ConfigInfoView::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/showDebug", showDebug()); + configSettings->endGroup(); + } +} + +void ConfigInfoView::setShowDebug(bool b) +{ + if (_showDebug != b) { + _showDebug = b; + if (_menu) + menuInfo(); + else if (sym) + symbolInfo(); + emit showDebugChanged(b); + } +} + +void ConfigInfoView::setInfo(struct menu *m) +{ + if (_menu == m) + return; + _menu = m; + sym = NULL; + if (!_menu) + clear(); + else + menuInfo(); +} + +void ConfigInfoView::symbolInfo(void) +{ + QString str; + + str += "Symbol: "; + str += print_filter(sym->name); + str += "

value: "; + str += print_filter(sym_get_string_value(sym)); + str += "
visibility: "; + str += sym->visible == yes ? "y" : sym->visible == mod ? "m" : "n"; + str += "
"; + str += debug_info(sym); + + setText(str); +} + +void ConfigInfoView::menuInfo(void) +{ + struct symbol* sym; + QString head, debug, help; + + sym = _menu->sym; + if (sym) { + if (_menu->prompt) { + head += ""; + head += print_filter(_(_menu->prompt->text)); + head += ""; + if (sym->name) { + head += " ("; + if (showDebug()) + head += QString().sprintf("", sym); + head += print_filter(sym->name); + if (showDebug()) + head += ""; + head += ")"; + } + } else if (sym->name) { + head += ""; + if (showDebug()) + head += QString().sprintf("", sym); + head += print_filter(sym->name); + if (showDebug()) + head += ""; + head += ""; + } + head += "

"; + + if (showDebug()) + debug = debug_info(sym); + + struct gstr help_gstr = str_new(); + menu_get_ext_help(_menu, &help_gstr); + help = print_filter(str_get(&help_gstr)); + str_free(&help_gstr); + } else if (_menu->prompt) { + head += ""; + head += print_filter(_(_menu->prompt->text)); + head += "

"; + if (showDebug()) { + if (_menu->prompt->visible.expr) { + debug += "  dep: "; + expr_print(_menu->prompt->visible.expr, expr_print_help, &debug, E_NONE); + debug += "

"; + } + } + } + if (showDebug()) + debug += QString().sprintf("defined at %s:%d

", _menu->file->name, _menu->lineno); + + setText(head + debug + help); +} + +QString ConfigInfoView::debug_info(struct symbol *sym) +{ + QString debug; + + debug += "type: "; + debug += print_filter(sym_type_name(sym->type)); + if (sym_is_choice(sym)) + debug += " (choice)"; + debug += "
"; + if (sym->rev_dep.expr) { + debug += "reverse dep: "; + expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + for (struct property *prop = sym->prop; prop; prop = prop->next) { + switch (prop->type) { + case P_PROMPT: + case P_MENU: + debug += QString().sprintf("prompt: ", prop->menu); + debug += print_filter(_(prop->text)); + debug += "
"; + break; + case P_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 += "
"; + break; + case P_CHOICE: + if (sym_is_choice(sym)) { + debug += "choice: "; + expr_print(prop->expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + break; + default: + debug += "unknown property: "; + debug += prop_get_type_name(prop->type); + debug += "
"; + } + if (prop->visible.expr) { + debug += "    dep: "; + expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE); + debug += "
"; + } + } + debug += "
"; + + return debug; +} + +QString ConfigInfoView::print_filter(const QString &str) +{ + QRegExp re("[<>&\"\\n]"); + QString res = str; + for (int i = 0; (i = res.find(re, i)) >= 0;) { + switch (res[i].latin1()) { + case '<': + res.replace(i, 1, "<"); + i += 4; + break; + case '>': + res.replace(i, 1, ">"); + i += 4; + break; + case '&': + res.replace(i, 1, "&"); + i += 5; + break; + case '"': + res.replace(i, 1, """); + i += 6; + break; + case '\n': + res.replace(i, 1, "
"); + i += 4; + break; + } + } + return res; +} + +void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str) +{ + QString* text = reinterpret_cast(data); + QString str2 = print_filter(str); + + if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) { + *text += QString().sprintf("", sym); + *text += str2; + *text += ""; + } else + *text += str2; +} + +Q3PopupMenu* ConfigInfoView::createPopupMenu(const QPoint& pos) +{ + Q3PopupMenu* popup = Parent::createPopupMenu(pos); + Q3Action* action = new Q3Action(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))); + action->setOn(showDebug()); + popup->insertSeparator(); + action->addTo(popup); + return popup; +} + +void ConfigInfoView::contentsContextMenuEvent(QContextMenuEvent *e) +{ + Parent::contentsContextMenuEvent(e); +} + +ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name) + : Parent(parent, name), result(NULL) +{ + setCaption("Search Config"); + + QVBoxLayout* layout1 = new QVBoxLayout(this, 11, 6); + QHBoxLayout* layout2 = new QHBoxLayout(0, 0, 6); + 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->setAutoDefault(FALSE); + connect(searchButton, SIGNAL(clicked()), SLOT(search())); + layout2->addWidget(searchButton); + layout1->addLayout(layout2); + + split = new QSplitter(this); + split->setOrientation(Qt::Vertical); + list = new ConfigView(split, name); + list->list->mode = listMode; + info = new ConfigInfoView(split, name); + connect(list->list, SIGNAL(menuChanged(struct menu *)), + info, SLOT(setInfo(struct menu *))); + connect(list->list, SIGNAL(menuChanged(struct menu *)), + parent, SLOT(setMenuLink(struct menu *))); + + layout1->addWidget(split); + + if (name) { + int x, y, width, height; + bool ok; + + configSettings->beginGroup(name); + width = configSettings->readNumEntry("/window width", parent->width() / 2); + height = configSettings->readNumEntry("/window height", parent->height() / 2); + resize(width, height); + x = configSettings->readNumEntry("/window x", 0, &ok); + if (ok) + y = configSettings->readNumEntry("/window y", 0, &ok); + if (ok) + move(x, y); + Q3ValueList sizes = configSettings->readSizes("/split", &ok); + if (ok) + split->setSizes(sizes); + configSettings->endGroup(); + connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings())); + } +} + +void ConfigSearchWindow::saveSettings(void) +{ + if (name()) { + configSettings->beginGroup(name()); + configSettings->writeEntry("/window x", pos().x()); + configSettings->writeEntry("/window y", pos().y()); + configSettings->writeEntry("/window width", size().width()); + configSettings->writeEntry("/window height", size().height()); + configSettings->writeSizes("/split", split->sizes()); + configSettings->endGroup(); + } +} + +void ConfigSearchWindow::search(void) +{ + struct symbol **p; + struct property *prop; + ConfigItem *lastItem = NULL; + + free(result); + list->list->clear(); + info->clear(); + + result = sym_re_search(editField->text().latin1()); + if (!result) + return; + for (p = result; *p; p++) { + for_all_prompts((*p), prop) + lastItem = new ConfigItem(list->list, lastItem, prop->menu, + menu_is_visible(prop->menu)); + } +} + +/* + * Construct the complete config widget + */ +ConfigMainWindow::ConfigMainWindow(void) + : searchWindow(0) +{ + QMenuBar* menu; + bool ok; + int x, y, width, height; + char title[256]; + + QDesktopWidget *d = configApp->desktop(); + snprintf(title, sizeof(title), "%s%s", + rootmenu.prompt->text, +#if QT_VERSION < 0x040000 + " (Qt3)" +#else + "" +#endif + ); + setCaption(title); + + width = configSettings->readNumEntry("/window width", d->width() - 64); + height = configSettings->readNumEntry("/window height", d->height() - 64); + resize(width, height); + x = configSettings->readNumEntry("/window x", 0, &ok); + if (ok) + y = configSettings->readNumEntry("/window y", 0, &ok); + if (ok) + move(x, y); + + split1 = new QSplitter(this); + split1->setOrientation(Qt::Horizontal); + setCentralWidget(split1); + + menuView = new ConfigView(split1, "menu"); + menuList = menuView->list; + + split2 = new QSplitter(split1); + split2->setOrientation(Qt::Vertical); + + // create config tree + configView = new ConfigView(split2, "config"); + configList = configView->list; + + helpText = new ConfigInfoView(split2, "help"); + helpText->setTextFormat(Qt::RichText); + + setTabOrder(configList, helpText); + configList->setFocus(); + + menu = menuBar(); + toolBar = new Q3ToolBar("Tools", this); + + backAction = new Q3Action("Back", QPixmap(xpm_back), _("Back"), 0, this); + connect(backAction, SIGNAL(activated()), SLOT(goBack())); + backAction->setEnabled(FALSE); + Q3Action *quitAction = new Q3Action("Quit", _("&Quit"), Qt::CTRL + Qt::Key_Q, this); + connect(quitAction, SIGNAL(activated()), SLOT(close())); + Q3Action *loadAction = new Q3Action("Load", QPixmap(xpm_load), _("&Load"), Qt::CTRL + Qt::Key_L, this); + connect(loadAction, SIGNAL(activated()), SLOT(loadConfig())); + saveAction = new Q3Action("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(); + Q3Action *saveAsAction = new Q3Action("Save As...", _("Save &As..."), 0, this); + connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs())); + Q3Action *searchAction = new Q3Action("Find", _("&Find"), Qt::CTRL + Qt::Key_F, this); + connect(searchAction, SIGNAL(activated()), SLOT(searchConfig())); + Q3Action *singleViewAction = new Q3Action("Single View", QPixmap(xpm_single_view), _("Single View"), 0, this); + connect(singleViewAction, SIGNAL(activated()), SLOT(showSingleView())); + Q3Action *splitViewAction = new Q3Action("Split View", QPixmap(xpm_split_view), _("Split View"), 0, this); + connect(splitViewAction, SIGNAL(activated()), SLOT(showSplitView())); + Q3Action *fullViewAction = new Q3Action("Full View", QPixmap(xpm_tree_view), _("Full View"), 0, this); + connect(fullViewAction, SIGNAL(activated()), SLOT(showFullView())); + + Q3Action *showNameAction = new Q3Action(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()); + Q3Action *showRangeAction = new Q3Action(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); + Q3Action *showDataAction = new Q3Action(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); + + QActionGroup *optGroup = new QActionGroup(this); + optGroup->setExclusive(TRUE); + connect(optGroup, SIGNAL(selected(QAction *)), configView, + SLOT(setOptionMode(QAction *))); + connect(optGroup, SIGNAL(selected(QAction *)), menuView, + SLOT(setOptionMode(QAction *))); + +#if QT_VERSION >= 0x040000 + configView->showNormalAction = new QAction(_("Show Normal Options"), optGroup); + configView->showAllAction = new QAction(_("Show All Options"), optGroup); + configView->showPromptAction = new QAction(_("Show Prompt Options"), optGroup); +#else + configView->showNormalAction = new QAction(_("Show Normal Options"), 0, optGroup); + configView->showAllAction = new QAction(_("Show All Options"), 0, optGroup); + configView->showPromptAction = new QAction(_("Show Prompt Options"), 0, optGroup); +#endif + configView->showNormalAction->setToggleAction(TRUE); + configView->showNormalAction->setOn(configList->optMode == normalOpt); + configView->showAllAction->setToggleAction(TRUE); + configView->showAllAction->setOn(configList->optMode == allOpt); + configView->showPromptAction->setToggleAction(TRUE); + configView->showPromptAction->setOn(configList->optMode == promptOpt); + + Q3Action *showDebugAction = new Q3Action(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()); + + Q3Action *showIntroAction = new Q3Action(NULL, _("Introduction"), 0, this); + connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro())); + Q3Action *showAboutAction = new Q3Action(NULL, _("About"), 0, this); + connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout())); + + // init tool bar + backAction->addTo(toolBar); + toolBar->addSeparator(); + loadAction->addTo(toolBar); + saveAction->addTo(toolBar); + toolBar->addSeparator(); + singleViewAction->addTo(toolBar); + splitViewAction->addTo(toolBar); + fullViewAction->addTo(toolBar); + + // create config menu + Q3PopupMenu* config = new Q3PopupMenu(this); + menu->insertItem(_("&File"), config); + loadAction->addTo(config); + saveAction->addTo(config); + saveAsAction->addTo(config); + config->insertSeparator(); + quitAction->addTo(config); + + // create edit menu + Q3PopupMenu* editMenu = new Q3PopupMenu(this); + menu->insertItem(_("&Edit"), editMenu); + searchAction->addTo(editMenu); + + // create options menu + Q3PopupMenu* optionMenu = new Q3PopupMenu(this); + menu->insertItem(_("&Option"), optionMenu); + showNameAction->addTo(optionMenu); + showRangeAction->addTo(optionMenu); + showDataAction->addTo(optionMenu); + optionMenu->insertSeparator(); + optGroup->addTo(optionMenu); + optionMenu->insertSeparator(); + + // create help menu + Q3PopupMenu* helpMenu = new Q3PopupMenu(this); + menu->insertSeparator(); + menu->insertItem(_("&Help"), helpMenu); + showIntroAction->addTo(helpMenu); + showAboutAction->addTo(helpMenu); + + connect(configList, SIGNAL(menuChanged(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(configList, SIGNAL(menuSelected(struct menu *)), + SLOT(changeMenu(struct menu *))); + connect(configList, SIGNAL(parentSelected()), + SLOT(goBack())); + connect(menuList, SIGNAL(menuChanged(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(menuSelected(struct menu *)), + SLOT(changeMenu(struct menu *))); + + connect(configList, SIGNAL(gotFocus(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(gotFocus(struct menu *)), + helpText, SLOT(setInfo(struct menu *))); + connect(menuList, SIGNAL(gotFocus(struct menu *)), + SLOT(listFocusChanged(void))); + connect(helpText, SIGNAL(menuSelected(struct menu *)), + SLOT(setMenuLink(struct menu *))); + + QString listMode = configSettings->readEntry("/listMode", "symbol"); + if (listMode == "single") + showSingleView(); + else if (listMode == "full") + showFullView(); + else /*if (listMode == "split")*/ + showSplitView(); + + // UI setup done, restore splitter positions + Q3ValueList sizes = configSettings->readSizes("/split1", &ok); + if (ok) + split1->setSizes(sizes); + + sizes = configSettings->readSizes("/split2", &ok); + if (ok) + split2->setSizes(sizes); +} + +void ConfigMainWindow::loadConfig(void) +{ + QString s = Q3FileDialog::getOpenFileName(conf_get_configname(), NULL, this); + if (s.isNull()) + return; + if (conf_read(QFile::encodeName(s))) + QMessageBox::information(this, "qconf", _("Unable to load configuration!")); + ConfigView::updateListAll(); +} + +bool ConfigMainWindow::saveConfig(void) +{ + if (conf_write(NULL)) { + QMessageBox::information(this, "qconf", _("Unable to save configuration!")); + return false; + } + return true; +} + +void ConfigMainWindow::saveConfigAs(void) +{ + QString s = Q3FileDialog::getSaveFileName(conf_get_configname(), NULL, this); + if (s.isNull()) + return; + saveConfig(); +} + +void ConfigMainWindow::searchConfig(void) +{ + if (!searchWindow) + searchWindow = new ConfigSearchWindow(this, "search"); + searchWindow->show(); +} + +void ConfigMainWindow::changeMenu(struct menu *menu) +{ + configList->setRootMenu(menu); + if (configList->rootEntry->parent == &rootmenu) + backAction->setEnabled(FALSE); + else + backAction->setEnabled(TRUE); +} + +void ConfigMainWindow::setMenuLink(struct menu *menu) +{ + struct menu *parent; + ConfigList* list = NULL; + ConfigItem* item; + + if (configList->menuSkip(menu)) + return; + + switch (configList->mode) { + case singleMode: + list = configList; + parent = menu_get_parent_menu(menu); + if (!parent) + return; + list->setRootMenu(parent); + break; + case symbolMode: + if (menu->flags & MENU_ROOT) { + configList->setRootMenu(menu); + configList->clearSelection(); + list = menuList; + } else { + list = configList; + parent = menu_get_parent_menu(menu->parent); + if (!parent) + return; + item = menuList->findConfigItem(parent); + if (item) { + menuList->setSelected(item, TRUE); + menuList->ensureItemVisible(item); + } + list->setRootMenu(parent); + } + break; + case fullMode: + list = configList; + break; + default: + break; + } + + if (list) { + item = list->findConfigItem(menu); + if (item) { + list->setSelected(item, TRUE); + list->ensureItemVisible(item); + list->setFocus(); + } + } +} + +void ConfigMainWindow::listFocusChanged(void) +{ + if (menuList->mode == menuMode) + configList->clearSelection(); +} + +void ConfigMainWindow::goBack(void) +{ + ConfigItem* item; + + configList->setParentMenu(); + if (configList->rootEntry == &rootmenu) + backAction->setEnabled(FALSE); + item = (ConfigItem*)menuList->selectedItem(); + while (item) { + if (item->menu == configList->rootEntry) { + menuList->setSelected(item, TRUE); + break; + } + item = (ConfigItem*)item->parent(); + } +} + +void ConfigMainWindow::showSingleView(void) +{ + menuView->hide(); + menuList->setRootMenu(0); + configList->mode = singleMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(TRUE); + configList->setFocus(); +} + +void ConfigMainWindow::showSplitView(void) +{ + configList->mode = symbolMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(TRUE); + configApp->processEvents(); + menuList->mode = menuMode; + menuList->setRootMenu(&rootmenu); + menuList->setAllOpen(TRUE); + menuView->show(); + menuList->setFocus(); +} + +void ConfigMainWindow::showFullView(void) +{ + menuView->hide(); + menuList->setRootMenu(0); + configList->mode = fullMode; + if (configList->rootEntry == &rootmenu) + configList->updateListAll(); + else + configList->setRootMenu(&rootmenu); + configList->setAllOpen(FALSE); + configList->setFocus(); +} + +/* + * ask for saving configuration before quitting + * TODO ask only when something changed + */ +void ConfigMainWindow::closeEvent(QCloseEvent* e) +{ + if (!conf_get_changed()) { + e->accept(); + return; + } + 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")); + switch (mb.exec()) { + case QMessageBox::Yes: + if (saveConfig()) + e->accept(); + else + e->ignore(); + break; + case QMessageBox::No: + e->accept(); + break; + case QMessageBox::Cancel: + e->ignore(); + break; + } +} + +void ConfigMainWindow::showIntro(void) +{ + static const QString str = _("Welcome to the qconf graphical configuration tool.\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" + "If you do not see an option (e.g., a device driver) that you believe\n" + "should be present, try turning on Show All Options under the Options menu.\n" + "Although there is no cross reference yet to help you figure out what other\n" + "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"); + + QMessageBox::information(this, "qconf", str); +} + +void ConfigMainWindow::showAbout(void) +{ + static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel .\n\n" + "Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n"); + + QMessageBox::information(this, "qconf", str); +} + +void ConfigMainWindow::saveSettings(void) +{ + configSettings->writeEntry("/window x", pos().x()); + configSettings->writeEntry("/window y", pos().y()); + configSettings->writeEntry("/window width", size().width()); + configSettings->writeEntry("/window height", size().height()); + + QString entry; + switch(configList->mode) { + case singleMode : + entry = "single"; + break; + + case symbolMode : + entry = "split"; + break; + + case fullMode : + entry = "full"; + break; + + default: + break; + } + configSettings->writeEntry("/listMode", entry); + + configSettings->writeSizes("/split1", split1->sizes()); + configSettings->writeSizes("/split2", split2->sizes()); +} + +void ConfigMainWindow::conf_changed(void) +{ + if (saveAction) + saveAction->setEnabled(conf_get_changed()); +} + +void fixup_rootmenu(struct menu *menu) +{ + struct menu *child; + static int menu_cnt = 0; + + menu->flags |= MENU_ROOT; + for (child = menu->list; child; child = child->next) { + if (child->prompt && child->prompt->type == P_MENU) { + menu_cnt++; + fixup_rootmenu(child); + menu_cnt--; + } else if (!menu_cnt) + fixup_rootmenu(child); + } +} + +static const char *progname; + +static void usage(void) +{ + printf(_("%s \n"), progname); + exit(0); +} + +int main(int ac, char** av) +{ + ConfigMainWindow* v; + const char *name; + + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + + progname = av[0]; + configApp = new QApplication(ac, av); + if (ac > 1 && av[1][0] == '-') { + switch (av[1][1]) { + case 'h': + case '?': + usage(); + } + name = av[2]; + } else + name = av[1]; + if (!name) + usage(); + + conf_parse(name); + fixup_rootmenu(&rootmenu); + conf_read(NULL); + //zconfdump(stdout); + + configSettings = new ConfigSettings(); + configSettings->beginGroup("/kconfig/qconf"); + v = new ConfigMainWindow(); + + //zconfdump(stdout); + configApp->setMainWidget(v); + configApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit())); + configApp->connect(configApp, SIGNAL(aboutToQuit()), v, SLOT(saveSettings())); + v->show(); + configApp->exec(); + + configSettings->endGroup(); + delete configSettings; + + return 0; +} diff --git a/buildroot/support/kconfig/qconf.h b/buildroot/support/kconfig/qconf.h new file mode 100644 index 0000000..bde0c6b --- /dev/null +++ b/buildroot/support/kconfig/qconf.h @@ -0,0 +1,338 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#if QT_VERSION < 0x040000 +#include +#else +#include +#endif +#include + +#if QT_VERSION < 0x040000 +#define Q3ValueList QValueList +#define Q3PopupMenu QPopupMenu +#define Q3ListView QListView +#define Q3ListViewItem QListViewItem +#define Q3VBox QVBox +#define Q3TextBrowser QTextBrowser +#define Q3MainWindow QMainWindow +#define Q3Action QAction +#define Q3ToolBar QToolBar +#define Q3ListViewItemIterator QListViewItemIterator +#define Q3FileDialog QFileDialog +#endif + +class ConfigView; +class ConfigList; +class ConfigItem; +class ConfigLineEdit; +class ConfigMainWindow; + +class ConfigSettings : public QSettings { +public: + ConfigSettings(); + Q3ValueList readSizes(const QString& key, bool *ok); + bool writeSizes(const QString& key, const Q3ValueList& value); +}; + +enum colIdx { + promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr +}; +enum listMode { + singleMode, menuMode, symbolMode, fullMode, listMode +}; +enum optionMode { + normalOpt = 0, allOpt, promptOpt +}; + +class ConfigList : public Q3ListView { + Q_OBJECT + typedef class Q3ListView Parent; +public: + ConfigList(ConfigView* p, const char *name = 0); + void reinit(void); + ConfigView* parent(void) const + { + return (ConfigView*)Parent::parent(); + } + ConfigItem* findConfigItem(struct menu *); + +protected: + void keyPressEvent(QKeyEvent *e); + void contentsMousePressEvent(QMouseEvent *e); + void contentsMouseReleaseEvent(QMouseEvent *e); + void contentsMouseMoveEvent(QMouseEvent *e); + void contentsMouseDoubleClickEvent(QMouseEvent *e); + void focusInEvent(QFocusEvent *e); + void contextMenuEvent(QContextMenuEvent *e); + +public slots: + void setRootMenu(struct menu *menu); + + void updateList(ConfigItem *item); + void setValue(ConfigItem* item, tristate val); + void changeValue(ConfigItem* item); + void updateSelection(void); + void saveSettings(void); +signals: + void menuChanged(struct menu *menu); + void menuSelected(struct menu *menu); + void parentSelected(void); + void gotFocus(struct menu *); + +public: + void updateListAll(void) + { + updateAll = true; + updateList(NULL); + updateAll = false; + } + ConfigList* listView() + { + return this; + } + ConfigItem* firstChild() const + { + return (ConfigItem *)Parent::firstChild(); + } + int mapIdx(colIdx idx) + { + return colMap[idx]; + } + void addColumn(colIdx idx, const QString& label) + { + colMap[idx] = Parent::addColumn(label); + colRevMap[colMap[idx]] = idx; + } + void removeColumn(colIdx idx) + { + int col = colMap[idx]; + if (col >= 0) { + Parent::removeColumn(col); + colRevMap[col] = colMap[idx] = -1; + } + } + void setAllOpen(bool open); + void setParentMenu(void); + + bool menuSkip(struct menu *); + + template + void updateMenuList(P*, struct menu*); + + bool updateAll; + + QPixmap symbolYesPix, symbolModPix, symbolNoPix; + QPixmap choiceYesPix, choiceNoPix; + QPixmap menuPix, menuInvPix, menuBackPix, voidPix; + + bool showName, showRange, showData; + enum listMode mode; + enum optionMode optMode; + struct menu *rootEntry; + QColorGroup disabledColorGroup; + QColorGroup inactivedColorGroup; + Q3PopupMenu* headerPopup; + +private: + int colMap[colNr]; + int colRevMap[colNr]; +}; + +class ConfigItem : public Q3ListViewItem { + typedef class Q3ListViewItem Parent; +public: + ConfigItem(Q3ListView *parent, ConfigItem *after, struct menu *m, bool v) + : Parent(parent, after), menu(m), visible(v), goParent(false) + { + init(); + } + ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v) + : Parent(parent, after), menu(m), visible(v), goParent(false) + { + init(); + } + ConfigItem(Q3ListView *parent, ConfigItem *after, bool v) + : Parent(parent, after), menu(0), visible(v), goParent(true) + { + init(); + } + ~ConfigItem(void); + void init(void); + void okRename(int col); + void updateMenu(void); + void testUpdateMenu(bool v); + ConfigList* listView() const + { + return (ConfigList*)Parent::listView(); + } + ConfigItem* firstChild() const + { + return (ConfigItem *)Parent::firstChild(); + } + ConfigItem* nextSibling() const + { + return (ConfigItem *)Parent::nextSibling(); + } + void setText(colIdx idx, const QString& text) + { + Parent::setText(listView()->mapIdx(idx), text); + } + QString text(colIdx idx) const + { + return Parent::text(listView()->mapIdx(idx)); + } + void setPixmap(colIdx idx, const QPixmap& pm) + { + Parent::setPixmap(listView()->mapIdx(idx), pm); + } + const QPixmap* pixmap(colIdx idx) const + { + return Parent::pixmap(listView()->mapIdx(idx)); + } + void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align); + + ConfigItem* nextItem; + struct menu *menu; + bool visible; + bool goParent; +}; + +class ConfigLineEdit : public QLineEdit { + Q_OBJECT + typedef class QLineEdit Parent; +public: + ConfigLineEdit(ConfigView* parent); + ConfigView* parent(void) const + { + return (ConfigView*)Parent::parent(); + } + void show(ConfigItem *i); + void keyPressEvent(QKeyEvent *e); + +public: + ConfigItem *item; +}; + +class ConfigView : public Q3VBox { + Q_OBJECT + typedef class Q3VBox Parent; +public: + ConfigView(QWidget* parent, const char *name = 0); + ~ConfigView(void); + static void updateList(ConfigItem* item); + static void updateListAll(void); + + bool showName(void) const { return list->showName; } + bool showRange(void) const { return list->showRange; } + bool showData(void) const { return list->showData; } +public slots: + void setShowName(bool); + void setShowRange(bool); + void setShowData(bool); + void setOptionMode(QAction *); +signals: + void showNameChanged(bool); + void showRangeChanged(bool); + void showDataChanged(bool); +public: + ConfigList* list; + ConfigLineEdit* lineEdit; + + static ConfigView* viewList; + ConfigView* nextView; + + static QAction *showNormalAction; + static QAction *showAllAction; + static QAction *showPromptAction; +}; + +class ConfigInfoView : public Q3TextBrowser { + Q_OBJECT + typedef class Q3TextBrowser Parent; +public: + ConfigInfoView(QWidget* parent, const char *name = 0); + bool showDebug(void) const { return _showDebug; } + +public slots: + void setInfo(struct menu *menu); + void saveSettings(void); + void setShowDebug(bool); + +signals: + void showDebugChanged(bool); + void menuSelected(struct menu *); + +protected: + void symbolInfo(void); + void menuInfo(void); + QString debug_info(struct symbol *sym); + static QString print_filter(const QString &str); + static void expr_print_help(void *data, struct symbol *sym, const char *str); + Q3PopupMenu* createPopupMenu(const QPoint& pos); + void contentsContextMenuEvent(QContextMenuEvent *e); + + struct symbol *sym; + struct menu *_menu; + bool _showDebug; +}; + +class ConfigSearchWindow : public QDialog { + Q_OBJECT + typedef class QDialog Parent; +public: + ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0); + +public slots: + void saveSettings(void); + void search(void); + +protected: + QLineEdit* editField; + QPushButton* searchButton; + QSplitter* split; + ConfigView* list; + ConfigInfoView* info; + + struct symbol **result; +}; + +class ConfigMainWindow : public Q3MainWindow { + Q_OBJECT + + static Q3Action *saveAction; + static void conf_changed(void); +public: + ConfigMainWindow(void); +public slots: + void changeMenu(struct menu *); + void setMenuLink(struct menu *); + void listFocusChanged(void); + void goBack(void); + void loadConfig(void); + bool saveConfig(void); + void saveConfigAs(void); + void searchConfig(void); + void showSingleView(void); + void showSplitView(void); + void showFullView(void); + void showIntro(void); + void showAbout(void); + void saveSettings(void); + +protected: + void closeEvent(QCloseEvent *e); + + ConfigSearchWindow *searchWindow; + ConfigView *menuView; + ConfigList *menuList; + ConfigView *configView; + ConfigList *configList; + ConfigInfoView *helpText; + Q3ToolBar *toolBar; + Q3Action *backAction; + QSplitter* split1; + QSplitter* split2; +}; diff --git a/buildroot/support/kconfig/streamline_config.pl b/buildroot/support/kconfig/streamline_config.pl new file mode 100644 index 0000000..4606cdf --- /dev/null +++ b/buildroot/support/kconfig/streamline_config.pl @@ -0,0 +1,640 @@ +#!/usr/bin/perl -w +# +# Copyright 2005-2009 - Steven Rostedt +# Licensed under the terms of the GNU GPL License version 2 +# +# It's simple enough to figure out how this works. +# If not, then you can ask me at stripconfig@goodmis.org +# +# What it does? +# +# If you have installed a Linux kernel from a distribution +# that turns on way too many modules than you need, and +# you only want the modules you use, then this program +# is perfect for you. +# +# It gives you the ability to turn off all the modules that are +# not loaded on your system. +# +# Howto: +# +# 1. Boot up the kernel that you want to stream line the config on. +# 2. Change directory to the directory holding the source of the +# kernel that you just booted. +# 3. Copy the configuraton file to this directory as .config +# 4. Have all your devices that you need modules for connected and +# operational (make sure that their corresponding modules are loaded) +# 5. Run this script redirecting the output to some other file +# like config_strip. +# 6. Back up your old config (if you want too). +# 7. copy the config_strip file to .config +# 8. Run "make oldconfig" +# +# Now your kernel is ready to be built with only the modules that +# are loaded. +# +# Here's what I did with my Debian distribution. +# +# cd /usr/src/linux-2.6.10 +# cp /boot/config-2.6.10-1-686-smp .config +# ~/bin/streamline_config > config_strip +# mv .config config_sav +# mv config_strip .config +# make oldconfig +# +use strict; +use Getopt::Long; + +# set the environment variable LOCALMODCONFIG_DEBUG to get +# debug output. +my $debugprint = 0; +$debugprint = 1 if (defined($ENV{LOCALMODCONFIG_DEBUG})); + +sub dprint { + return if (!$debugprint); + print STDERR @_; +} + +my $config = ".config"; + +my $uname = `uname -r`; +chomp $uname; + +my @searchconfigs = ( + { + "file" => ".config", + "exec" => "cat", + }, + { + "file" => "/proc/config.gz", + "exec" => "zcat", + }, + { + "file" => "/boot/config-$uname", + "exec" => "cat", + }, + { + "file" => "/boot/vmlinuz-$uname", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "vmlinux", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "/lib/modules/$uname/kernel/kernel/configs.ko", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "kernel/configs.ko", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, + { + "file" => "kernel/configs.o", + "exec" => "scripts/extract-ikconfig", + "test" => "scripts/extract-ikconfig", + }, +); + +sub read_config { + foreach my $conf (@searchconfigs) { + my $file = $conf->{"file"}; + + next if ( ! -f "$file"); + + if (defined($conf->{"test"})) { + `$conf->{"test"} $conf->{"file"} 2>/dev/null`; + next if ($?); + } + + my $exec = $conf->{"exec"}; + + print STDERR "using config: '$file'\n"; + + open(my $infile, '-|', "$exec $file") || die "Failed to run $exec $file"; + my @x = <$infile>; + close $infile; + return @x; + } + die "No config file found"; +} + +my @config_file = read_config; + +# Parse options +my $localmodconfig = 0; +my $localyesconfig = 0; + +GetOptions("localmodconfig" => \$localmodconfig, + "localyesconfig" => \$localyesconfig); + +# Get the build source and top level Kconfig file (passed in) +my $ksource = ($ARGV[0] ? $ARGV[0] : '.'); +my $kconfig = $ARGV[1]; +my $lsmod_file = $ENV{'LSMOD'}; + +my @makefiles = `find $ksource -name Makefile 2>/dev/null`; +chomp @makefiles; + +my %depends; +my %selects; +my %prompts; +my %objects; +my $var; +my $iflevel = 0; +my @ifdeps; + +# prevent recursion +my %read_kconfigs; + +sub read_kconfig { + my ($kconfig) = @_; + + my $state = "NONE"; + my $config; + + my $cont = 0; + my $line; + + my $source = "$ksource/$kconfig"; + my $last_source = ""; + + # Check for any environment variables used + while ($source =~ /\$(\w+)/ && $last_source ne $source) { + my $env = $1; + $last_source = $source; + $source =~ s/\$$env/$ENV{$env}/; + } + + open(my $kinfile, '<', $source) || die "Can't open $kconfig"; + while (<$kinfile>) { + chomp; + + # Make sure that lines ending with \ continue + if ($cont) { + $_ = $line . " " . $_; + } + + if (s/\\$//) { + $cont = 1; + $line = $_; + next; + } + + $cont = 0; + + # collect any Kconfig sources + if (/^source\s*"(.*)"/) { + my $kconfig = $1; + # prevent reading twice. + if (!defined($read_kconfigs{$kconfig})) { + $read_kconfigs{$kconfig} = 1; + read_kconfig($kconfig); + } + next; + } + + # configs found + if (/^\s*(menu)?config\s+(\S+)\s*$/) { + $state = "NEW"; + $config = $2; + + # Add depends for 'if' nesting + for (my $i = 0; $i < $iflevel; $i++) { + if ($i) { + $depends{$config} .= " " . $ifdeps[$i]; + } else { + $depends{$config} = $ifdeps[$i]; + } + $state = "DEP"; + } + + # collect the depends for the config + } elsif ($state eq "NEW" && /^\s*depends\s+on\s+(.*)$/) { + $state = "DEP"; + $depends{$config} = $1; + } elsif ($state eq "DEP" && /^\s*depends\s+on\s+(.*)$/) { + $depends{$config} .= " " . $1; + + # Get the configs that select this config + } elsif ($state ne "NONE" && /^\s*select\s+(\S+)/) { + my $conf = $1; + if (defined($selects{$conf})) { + $selects{$conf} .= " " . $config; + } else { + $selects{$conf} = $config; + } + + # configs without prompts must be selected + } elsif ($state ne "NONE" && /^\s*tristate\s\S/) { + # note if the config has a prompt + $prompts{$config} = 1; + + # Check for if statements + } elsif (/^if\s+(.*\S)\s*$/) { + my $deps = $1; + # remove beginning and ending non text + $deps =~ s/^[^a-zA-Z0-9_]*//; + $deps =~ s/[^a-zA-Z0-9_]*$//; + + my @deps = split /[^a-zA-Z0-9_]+/, $deps; + + $ifdeps[$iflevel++] = join ':', @deps; + + } elsif (/^endif/) { + + $iflevel-- if ($iflevel); + + # stop on "help" + } elsif (/^\s*help\s*$/) { + $state = "NONE"; + } + } + close($kinfile); +} + +if ($kconfig) { + read_kconfig($kconfig); +} + +# Makefiles can use variables to define their dependencies +sub convert_vars { + my ($line, %vars) = @_; + + my $process = ""; + + while ($line =~ s/^(.*?)(\$\((.*?)\))//) { + my $start = $1; + my $variable = $2; + my $var = $3; + + if (defined($vars{$var})) { + $process .= $start . $vars{$var}; + } else { + $process .= $start . $variable; + } + } + + $process .= $line; + + return $process; +} + +# Read all Makefiles to map the configs to the objects +foreach my $makefile (@makefiles) { + + my $line = ""; + my %make_vars; + + open(my $infile, '<', $makefile) || die "Can't open $makefile"; + while (<$infile>) { + # if this line ends with a backslash, continue + chomp; + if (/^(.*)\\$/) { + $line .= $1; + next; + } + + $line .= $_; + $_ = $line; + $line = ""; + + my $objs; + + # Convert variables in a line (could define configs) + $_ = convert_vars($_, %make_vars); + + # collect objects after obj-$(CONFIG_FOO_BAR) + if (/obj-\$\((CONFIG_[^\)]*)\)\s*[+:]?=\s*(.*)/) { + $var = $1; + $objs = $2; + + # check if variables are set + } elsif (/^\s*(\S+)\s*[:]?=\s*(.*\S)/) { + $make_vars{$1} = $2; + } + if (defined($objs)) { + foreach my $obj (split /\s+/,$objs) { + $obj =~ s/-/_/g; + if ($obj =~ /(.*)\.o$/) { + # Objects may be enabled by more than one config. + # Store configs in an array. + my @arr; + + if (defined($objects{$1})) { + @arr = @{$objects{$1}}; + } + + $arr[$#arr+1] = $var; + + # The objects have a hash mapping to a reference + # of an array of configs. + $objects{$1} = \@arr; + } + } + } + } + close($infile); +} + +my %modules; +my $linfile; + +if (defined($lsmod_file)) { + if ( ! -f $lsmod_file) { + if ( -f $ENV{'objtree'}."/".$lsmod_file) { + $lsmod_file = $ENV{'objtree'}."/".$lsmod_file; + } else { + die "$lsmod_file not found"; + } + } + + my $otype = ( -x $lsmod_file) ? '-|' : '<'; + open($linfile, $otype, $lsmod_file); + +} else { + + # see what modules are loaded on this system + my $lsmod; + + foreach my $dir ( ("/sbin", "/bin", "/usr/sbin", "/usr/bin") ) { + if ( -x "$dir/lsmod" ) { + $lsmod = "$dir/lsmod"; + last; + } +} + if (!defined($lsmod)) { + # try just the path + $lsmod = "lsmod"; + } + + open($linfile, '-|', $lsmod) || die "Can not call lsmod with $lsmod"; +} + +while (<$linfile>) { + next if (/^Module/); # Skip the first line. + if (/^(\S+)/) { + $modules{$1} = 1; + } +} +close ($linfile); + +# add to the configs hash all configs that are needed to enable +# a loaded module. This is a direct obj-${CONFIG_FOO} += bar.o +# where we know we need bar.o so we add FOO to the list. +my %configs; +foreach my $module (keys(%modules)) { + if (defined($objects{$module})) { + my @arr = @{$objects{$module}}; + foreach my $conf (@arr) { + $configs{$conf} = $module; + dprint "$conf added by direct ($module)\n"; + if ($debugprint) { + my $c=$conf; + $c =~ s/^CONFIG_//; + if (defined($depends{$c})) { + dprint " deps = $depends{$c}\n"; + } else { + dprint " no deps\n"; + } + } + } + } else { + # Most likely, someone has a custom (binary?) module loaded. + print STDERR "$module config not found!!\n"; + } +} + +# Read the current config, and see what is enabled. We want to +# ignore configs that we would not enable anyway. + +my %orig_configs; +my $valid = "A-Za-z_0-9"; + +foreach my $line (@config_file) { + $_ = $line; + + if (/(CONFIG_[$valid]*)=(m|y)/) { + $orig_configs{$1} = $2; + } +} + +my $repeat = 1; + +my $depconfig; + +# +# Note, we do not care about operands (like: &&, ||, !) we want to add any +# config that is in the depend list of another config. This script does +# not enable configs that are not already enabled. If we come across a +# config A that depends on !B, we can still add B to the list of depends +# to keep on. If A was on in the original config, B would not have been +# and B would not be turned on by this script. +# +sub parse_config_depends +{ + my ($p) = @_; + + while ($p =~ /[$valid]/) { + + if ($p =~ /^[^$valid]*([$valid]+)/) { + my $conf = "CONFIG_" . $1; + + $p =~ s/^[^$valid]*[$valid]+//; + + # We only need to process if the depend config is a module + if (!defined($orig_configs{$conf}) || !$orig_configs{conf} eq "m") { + next; + } + + if (!defined($configs{$conf})) { + # We must make sure that this config has its + # dependencies met. + $repeat = 1; # do again + dprint "$conf selected by depend $depconfig\n"; + $configs{$conf} = 1; + } + } else { + die "this should never happen"; + } + } +} + +# Select is treated a bit differently than depends. We call this +# when a config has no prompt and requires another config to be +# selected. We use to just select all configs that selected this +# config, but found that that can balloon into enabling hundreds +# of configs that we do not care about. +# +# The idea is we look at all the configs that select it. If one +# is already in our list of configs to enable, then there's nothing +# else to do. If there isn't, we pick the first config that was +# enabled in the orignal config and use that. +sub parse_config_selects +{ + my ($config, $p) = @_; + + my $next_config; + + while ($p =~ /[$valid]/) { + + if ($p =~ /^[^$valid]*([$valid]+)/) { + my $conf = "CONFIG_" . $1; + + $p =~ s/^[^$valid]*[$valid]+//; + + # Make sure that this config exists in the current .config file + if (!defined($orig_configs{$conf})) { + dprint "$conf not set for $config select\n"; + next; + } + + # Check if something other than a module selects this config + if (defined($orig_configs{$conf}) && $orig_configs{$conf} ne "m") { + dprint "$conf (non module) selects config, we are good\n"; + # we are good with this + return; + } + if (defined($configs{$conf})) { + dprint "$conf selects $config so we are good\n"; + # A set config selects this config, we are good + return; + } + # Set this config to be selected + if (!defined($next_config)) { + $next_config = $conf; + } + } else { + die "this should never happen"; + } + } + + # If no possible config selected this, then something happened. + if (!defined($next_config)) { + print STDERR "WARNING: $config is required, but nothing in the\n"; + print STDERR " current config selects it.\n"; + return; + } + + # If we are here, then we found no config that is set and + # selects this config. Repeat. + $repeat = 1; + # Make this config need to be selected + $configs{$next_config} = 1; + dprint "$next_config selected by select $config\n"; +} + +my %process_selects; + +# loop through all configs, select their dependencies. +sub loop_depend { + $repeat = 1; + + while ($repeat) { + $repeat = 0; + + forloop: + foreach my $config (keys %configs) { + + # If this config is not a module, we do not need to process it + if (defined($orig_configs{$config}) && $orig_configs{$config} ne "m") { + next forloop; + } + + $config =~ s/^CONFIG_//; + $depconfig = $config; + + if (defined($depends{$config})) { + # This config has dependencies. Make sure they are also included + parse_config_depends $depends{$config}; + } + + # If the config has no prompt, then we need to check if a config + # that is enabled selected it. Or if we need to enable one. + if (!defined($prompts{$config}) && defined($selects{$config})) { + $process_selects{$config} = 1; + } + } + } +} + +sub loop_select { + + foreach my $config (keys %process_selects) { + $config =~ s/^CONFIG_//; + + dprint "Process select $config\n"; + + # config has no prompt and must be selected. + parse_config_selects $config, $selects{$config}; + } +} + +while ($repeat) { + # Get the first set of configs and their dependencies. + loop_depend; + + $repeat = 0; + + # Now we need to see if we have to check selects; + loop_select; +} + +my %setconfigs; + +# Finally, read the .config file and turn off any module enabled that +# we could not find a reason to keep enabled. +foreach my $line (@config_file) { + $_ = $line; + + if (/CONFIG_IKCONFIG/) { + if (/# CONFIG_IKCONFIG is not set/) { + # enable IKCONFIG at least as a module + print "CONFIG_IKCONFIG=m\n"; + # don't ask about PROC + print "# CONFIG_IKCONFIG_PROC is not set\n"; + } else { + print; + } + next; + } + + if (/^(CONFIG.*)=(m|y)/) { + if (defined($configs{$1})) { + if ($localyesconfig) { + $setconfigs{$1} = 'y'; + print "$1=y\n"; + next; + } else { + $setconfigs{$1} = $2; + } + } elsif ($2 eq "m") { + print "# $1 is not set\n"; + next; + } + } + print; +} + +# Integrity check, make sure all modules that we want enabled do +# indeed have their configs set. +loop: +foreach my $module (keys(%modules)) { + if (defined($objects{$module})) { + my @arr = @{$objects{$module}}; + foreach my $conf (@arr) { + if (defined($setconfigs{$conf})) { + next loop; + } + } + print STDERR "module $module did not have configs"; + foreach my $conf (@arr) { + print STDERR " " , $conf; + } + print STDERR "\n"; + } +} diff --git a/buildroot/support/kconfig/symbol.c b/buildroot/support/kconfig/symbol.c new file mode 100644 index 0000000..7caabdb --- /dev/null +++ b/buildroot/support/kconfig/symbol.c @@ -0,0 +1,1373 @@ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" + +struct symbol symbol_yes = { + .name = "y", + .curr = { "y", yes }, + .flags = SYMBOL_CONST|SYMBOL_VALID, +}, symbol_mod = { + .name = "m", + .curr = { "m", mod }, + .flags = SYMBOL_CONST|SYMBOL_VALID, +}, symbol_no = { + .name = "n", + .curr = { "n", no }, + .flags = SYMBOL_CONST|SYMBOL_VALID, +}, symbol_empty = { + .name = "", + .curr = { "", no }, + .flags = SYMBOL_VALID, +}; + +struct symbol *sym_defconfig_list; +struct symbol *modules_sym; +tristate modules_val; + +struct expr *sym_env_list; + +static 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, SYMBOL_CONST)); +} + +void sym_init(void) +{ + struct symbol *sym; + struct utsname uts; + static bool inited = false; + + if (inited) + return; + inited = true; + + uname(&uts); + + sym = sym_lookup("UNAME_RELEASE", 0); + sym->type = S_STRING; + sym->flags |= SYMBOL_AUTO; + sym_add_default(sym, uts.release); +} + +enum symbol_type sym_get_type(struct symbol *sym) +{ + enum symbol_type type = sym->type; + + if (type == S_TRISTATE) { + if (sym_is_choice_value(sym) && sym->visible == yes) + type = S_BOOLEAN; + else if (modules_val == no) + type = S_BOOLEAN; + } + return type; +} + +const char *sym_type_name(enum symbol_type type) +{ + switch (type) { + case S_BOOLEAN: + return "boolean"; + case S_TRISTATE: + return "tristate"; + case S_INT: + return "integer"; + case S_HEX: + return "hex"; + case S_STRING: + return "string"; + case S_UNKNOWN: + return "unknown"; + case S_OTHER: + break; + } + return "???"; +} + +struct property *sym_get_choice_prop(struct symbol *sym) +{ + struct property *prop; + + for_all_choices(sym, prop) + return prop; + 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; + + for_all_defaults(sym, prop) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + if (prop->visible.tri != no) + return prop; + } + return NULL; +} + +static struct property *sym_get_range_prop(struct symbol *sym) +{ + struct property *prop; + + for_all_properties(sym, prop, P_RANGE) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + if (prop->visible.tri != no) + return prop; + } + return NULL; +} + +static long long sym_get_range_val(struct symbol *sym, int base) +{ + sym_calc_value(sym); + switch (sym->type) { + case S_INT: + base = 10; + break; + case S_HEX: + base = 16; + break; + default: + break; + } + return strtoll(sym->curr.val, NULL, base); +} + +static void sym_validate_range(struct symbol *sym) +{ + struct property *prop; + int base; + long long val, val2; + char str[64]; + + switch (sym->type) { + case S_INT: + base = 10; + break; + case S_HEX: + base = 16; + break; + default: + return; + } + prop = sym_get_range_prop(sym); + if (!prop) + return; + val = strtoll(sym->curr.val, NULL, base); + val2 = sym_get_range_val(prop->expr->left.sym, base); + if (val >= val2) { + val2 = sym_get_range_val(prop->expr->right.sym, base); + if (val <= val2) + return; + } + if (sym->type == S_INT) + sprintf(str, "%lld", val2); + else + sprintf(str, "0x%llx", val2); + sym->curr.val = strdup(str); +} + +static void sym_calc_visibility(struct symbol *sym) +{ + struct property *prop; + tristate tri; + + /* any prompt visible? */ + tri = no; + for_all_prompts(sym, prop) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + tri = EXPR_OR(tri, prop->visible.tri); + } + if (tri == mod && (sym->type != S_TRISTATE || modules_val == no)) + tri = yes; + if (sym->visible != tri) { + sym->visible = tri; + sym_set_changed(sym); + } + if (sym_is_choice_value(sym)) + return; + /* defaulting to "yes" if no explicit "depends on" are given */ + tri = yes; + if (sym->dir_dep.expr) + tri = expr_calc_value(sym->dir_dep.expr); + if (tri == mod) + tri = yes; + if (sym->dir_dep.tri != tri) { + sym->dir_dep.tri = tri; + sym_set_changed(sym); + } + tri = no; + if (sym->rev_dep.expr) + tri = expr_calc_value(sym->rev_dep.expr); + if (tri == mod && sym_get_type(sym) == S_BOOLEAN) + tri = yes; + if (sym->rev_dep.tri != tri) { + sym->rev_dep.tri = tri; + sym_set_changed(sym); + } +} + +/* + * Find the default symbol for a choice. + * First try the default values for the choice symbol + * Next locate the first visible choice value + * Return NULL if none was found + */ +struct symbol *sym_choice_default(struct symbol *sym) +{ + struct symbol *def_sym; + struct property *prop; + struct expr *e; + + /* any of the defaults visible? */ + for_all_defaults(sym, prop) { + prop->visible.tri = expr_calc_value(prop->visible.expr); + if (prop->visible.tri == no) + continue; + def_sym = prop_get_symbol(prop); + if (def_sym->visible != no) + return def_sym; + } + + /* just get the first visible value */ + prop = sym_get_choice_prop(sym); + expr_list_for_each_sym(prop->expr, e, def_sym) + if (def_sym->visible != no) + return def_sym; + + /* failed to locate any defaults */ + return NULL; +} + +static struct symbol *sym_calc_choice(struct symbol *sym) +{ + struct symbol *def_sym; + struct property *prop; + struct expr *e; + int flags; + + /* first calculate all choice values' visibilities */ + flags = sym->flags; + prop = sym_get_choice_prop(sym); + expr_list_for_each_sym(prop->expr, e, def_sym) { + sym_calc_visibility(def_sym); + if (def_sym->visible != no) + flags &= def_sym->flags; + } + + sym->flags &= flags | ~SYMBOL_DEF_USER; + + /* is the user choice visible? */ + def_sym = sym->def[S_DEF_USER].val; + if (def_sym && def_sym->visible != no) + return def_sym; + + def_sym = sym_choice_default(sym); + + if (def_sym == NULL) + /* no choice? reset tristate value */ + sym->curr.tri = no; + + return def_sym; +} + +void sym_calc_value(struct symbol *sym) +{ + struct symbol_value newval, oldval; + struct property *prop; + struct expr *e; + + if (!sym) + return; + + if (sym->flags & SYMBOL_VALID) + return; + + if (sym_is_choice_value(sym) && + sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) { + sym->flags &= ~SYMBOL_NEED_SET_CHOICE_VALUES; + prop = sym_get_choice_prop(sym); + sym_calc_value(prop_get_symbol(prop)); + } + + sym->flags |= SYMBOL_VALID; + + oldval = sym->curr; + + switch (sym->type) { + case S_INT: + case S_HEX: + case S_STRING: + newval = symbol_empty.curr; + break; + case S_BOOLEAN: + case S_TRISTATE: + newval = symbol_no.curr; + break; + default: + sym->curr.val = sym->name; + sym->curr.tri = no; + return; + } + if (!sym_is_choice_value(sym)) + sym->flags &= ~SYMBOL_WRITE; + + sym_calc_visibility(sym); + + /* set default if recursively called */ + sym->curr = newval; + + switch (sym_get_type(sym)) { + case S_BOOLEAN: + case S_TRISTATE: + 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 (sym->visible != no) { + /* if the symbol is visible use the user value + * if available, otherwise try the default value + */ + sym->flags |= SYMBOL_WRITE; + 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: + if (sym->dir_dep.tri == no && sym->rev_dep.tri != no) { + struct expr *e; + e = expr_simplify_unmet_dep(sym->rev_dep.expr, + sym->dir_dep.expr); + fprintf(stderr, "warning: ("); + expr_fprint(e, stderr); + fprintf(stderr, ") selects %s which has unmet direct dependencies (", + sym->name); + expr_fprint(sym->dir_dep.expr, stderr); + fprintf(stderr, ")\n"); + expr_free(e); + } + newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); + } + if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) + newval.tri = yes; + break; + case S_STRING: + case S_HEX: + case S_INT: + if (sym->visible != no) { + sym->flags |= SYMBOL_WRITE; + if (sym_has_value(sym)) { + newval.val = sym->def[S_DEF_USER].val; + break; + } + } + prop = sym_get_default_prop(sym); + if (prop) { + struct symbol *ds = prop_get_symbol(prop); + if (ds) { + sym->flags |= SYMBOL_WRITE; + sym_calc_value(ds); + newval.val = ds->curr.val; + } + } + break; + default: + ; + } + + sym->curr = newval; + if (sym_is_choice(sym) && newval.tri == yes) + sym->curr.val = sym_calc_choice(sym); + sym_validate_range(sym); + + if (memcmp(&oldval, &sym->curr, sizeof(oldval))) { + sym_set_changed(sym); + if (modules_sym == sym) { + sym_set_all_changed(); + modules_val = modules_sym->curr.tri; + } + } + + if (sym_is_choice(sym)) { + struct symbol *choice_sym; + + prop = sym_get_choice_prop(sym); + expr_list_for_each_sym(prop->expr, e, choice_sym) { + if ((sym->flags & SYMBOL_WRITE) && + choice_sym->visible != no) + choice_sym->flags |= SYMBOL_WRITE; + if (sym->flags & SYMBOL_CHANGED) + sym_set_changed(choice_sym); + } + } + + if (sym->flags & SYMBOL_AUTO) + sym->flags &= ~SYMBOL_WRITE; + + if (sym->flags & SYMBOL_NEED_SET_CHOICE_VALUES) + set_all_choice_values(sym); +} + +void sym_clear_all_valid(void) +{ + struct symbol *sym; + int i; + + for_all_symbols(i, sym) + sym->flags &= ~SYMBOL_VALID; + sym_add_change_count(1); + if (modules_sym) + sym_calc_value(modules_sym); +} + +void sym_set_changed(struct symbol *sym) +{ + struct property *prop; + + sym->flags |= SYMBOL_CHANGED; + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu) + prop->menu->flags |= MENU_CHANGED; + } +} + +void sym_set_all_changed(void) +{ + struct symbol *sym; + int i; + + for_all_symbols(i, sym) + sym_set_changed(sym); +} + +bool sym_tristate_within_range(struct symbol *sym, tristate val) +{ + int type = sym_get_type(sym); + + if (sym->visible == no) + return false; + + if (type != S_BOOLEAN && type != S_TRISTATE) + return false; + + if (type == S_BOOLEAN && val == mod) + return false; + if (sym->visible <= sym->rev_dep.tri) + return false; + if (sym_is_choice_value(sym) && sym->visible == yes) + return val == yes; + return val >= sym->rev_dep.tri && val <= sym->visible; +} + +bool sym_set_tristate_value(struct symbol *sym, tristate val) +{ + tristate oldval = sym_get_tristate_value(sym); + + if (oldval != val && !sym_tristate_within_range(sym, val)) + return false; + + if (!(sym->flags & SYMBOL_DEF_USER)) { + sym->flags |= SYMBOL_DEF_USER; + sym_set_changed(sym); + } + /* + * setting a choice value also resets the new flag of the choice + * symbol and all other choice values. + */ + if (sym_is_choice_value(sym) && val == yes) { + struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym)); + struct property *prop; + struct expr *e; + + cs->def[S_DEF_USER].val = sym; + cs->flags |= SYMBOL_DEF_USER; + prop = sym_get_choice_prop(cs); + for (e = prop->expr; e; e = e->left.expr) { + if (e->right.sym->visible != no) + e->right.sym->flags |= SYMBOL_DEF_USER; + } + } + + sym->def[S_DEF_USER].tri = val; + if (oldval != val) + sym_clear_all_valid(); + + return true; +} + +tristate sym_toggle_tristate_value(struct symbol *sym) +{ + tristate oldval, newval; + + oldval = newval = sym_get_tristate_value(sym); + do { + switch (newval) { + case no: + newval = mod; + break; + case mod: + newval = yes; + break; + case yes: + newval = no; + break; + } + if (sym_set_tristate_value(sym, newval)) + break; + } while (oldval != newval); + return newval; +} + +bool sym_string_valid(struct symbol *sym, const char *str) +{ + signed char ch; + + switch (sym->type) { + case S_STRING: + return true; + case S_INT: + ch = *str++; + if (ch == '-') + ch = *str++; + if (!isdigit(ch)) + return false; + if (ch == '0' && *str != 0) + return false; + while ((ch = *str++)) { + if (!isdigit(ch)) + return false; + } + return true; + case S_HEX: + if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) + str += 2; + ch = *str++; + do { + if (!isxdigit(ch)) + return false; + } while ((ch = *str++)); + return true; + case S_BOOLEAN: + case S_TRISTATE: + switch (str[0]) { + case 'y': case 'Y': + case 'm': case 'M': + case 'n': case 'N': + return true; + } + return false; + default: + return false; + } +} + +bool sym_string_within_range(struct symbol *sym, const char *str) +{ + struct property *prop; + long long val; + + switch (sym->type) { + case S_STRING: + return sym_string_valid(sym, str); + case S_INT: + if (!sym_string_valid(sym, str)) + return false; + prop = sym_get_range_prop(sym); + if (!prop) + return true; + val = strtoll(str, NULL, 10); + return val >= sym_get_range_val(prop->expr->left.sym, 10) && + val <= sym_get_range_val(prop->expr->right.sym, 10); + case S_HEX: + if (!sym_string_valid(sym, str)) + return false; + prop = sym_get_range_prop(sym); + if (!prop) + return true; + val = strtoll(str, NULL, 16); + return val >= sym_get_range_val(prop->expr->left.sym, 16) && + val <= sym_get_range_val(prop->expr->right.sym, 16); + case S_BOOLEAN: + case S_TRISTATE: + switch (str[0]) { + case 'y': case 'Y': + return sym_tristate_within_range(sym, yes); + case 'm': case 'M': + return sym_tristate_within_range(sym, mod); + case 'n': case 'N': + return sym_tristate_within_range(sym, no); + } + return false; + default: + return false; + } +} + +bool sym_set_string_value(struct symbol *sym, const char *newval) +{ + const char *oldval; + char *val; + int size; + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + switch (newval[0]) { + case 'y': case 'Y': + return sym_set_tristate_value(sym, yes); + case 'm': case 'M': + return sym_set_tristate_value(sym, mod); + case 'n': case 'N': + return sym_set_tristate_value(sym, no); + } + return false; + default: + ; + } + + if (!sym_string_within_range(sym, newval)) + return false; + + if (!(sym->flags & SYMBOL_DEF_USER)) { + sym->flags |= SYMBOL_DEF_USER; + sym_set_changed(sym); + } + + oldval = sym->def[S_DEF_USER].val; + size = strlen(newval) + 1; + if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) { + size += 2; + sym->def[S_DEF_USER].val = val = xmalloc(size); + *val++ = '0'; + *val++ = 'x'; + } else if (!oldval || strcmp(oldval, newval)) + sym->def[S_DEF_USER].val = val = xmalloc(size); + else + return true; + + strcpy(val, newval); + free((void *)oldval); + sym_clear_all_valid(); + + return true; +} + +/* + * Find the default value associated to a symbol. + * For tristate symbol handle the modules=n case + * in which case "m" becomes "y". + * If the symbol does not have any default then fallback + * to the fixed default values. + */ +const char *sym_get_string_default(struct symbol *sym) +{ + struct property *prop; + struct symbol *ds; + const char *str; + tristate val; + + sym_calc_visibility(sym); + sym_calc_value(modules_sym); + val = symbol_no.curr.tri; + str = symbol_empty.curr.val; + + /* If symbol has a default value look it up */ + prop = sym_get_default_prop(sym); + if (prop != NULL) { + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + /* The visibility may limit the value from yes => mod */ + val = EXPR_AND(expr_calc_value(prop->expr), prop->visible.tri); + break; + default: + /* + * The following fails to handle the situation + * where a default value is further limited by + * the valid range. + */ + ds = prop_get_symbol(prop); + if (ds != NULL) { + sym_calc_value(ds); + str = (const char *)ds->curr.val; + } + } + } + + /* Handle select statements */ + val = EXPR_OR(val, sym->rev_dep.tri); + + /* transpose mod to yes if modules are not enabled */ + if (val == mod) + if (!sym_is_choice_value(sym) && modules_sym->curr.tri == no) + val = yes; + + /* transpose mod to yes if type is bool */ + if (sym->type == S_BOOLEAN && val == mod) + val = yes; + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + switch (val) { + case no: return "n"; + case mod: return "m"; + case yes: return "y"; + } + case S_INT: + case S_HEX: + return str; + case S_STRING: + return str; + case S_OTHER: + case S_UNKNOWN: + break; + } + return ""; +} + +const char *sym_get_string_value(struct symbol *sym) +{ + tristate val; + + switch (sym->type) { + case S_BOOLEAN: + case S_TRISTATE: + val = sym_get_tristate_value(sym); + switch (val) { + case no: + return "n"; + case mod: + sym_calc_value(modules_sym); + return (modules_sym->curr.tri == no) ? "n" : "m"; + case yes: + return "y"; + } + break; + default: + ; + } + return (const char *)sym->curr.val; +} + +bool sym_is_changable(struct symbol *sym) +{ + return sym->visible > sym->rev_dep.tri; +} + +static unsigned strhash(const char *s) +{ + /* fnv32 hash */ + unsigned hash = 2166136261U; + for (; *s; s++) + hash = (hash ^ *s) * 0x01000193; + return hash; +} + +struct symbol *sym_lookup(const char *name, int flags) +{ + struct symbol *symbol; + char *new_name; + int hash; + + if (name) { + if (name[0] && !name[1]) { + switch (name[0]) { + case 'y': return &symbol_yes; + case 'm': return &symbol_mod; + case 'n': return &symbol_no; + } + } + hash = strhash(name) % SYMBOL_HASHSIZE; + + for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + if (symbol->name && + !strcmp(symbol->name, name) && + (flags ? symbol->flags & flags + : !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE)))) + return symbol; + } + new_name = strdup(name); + } else { + new_name = NULL; + hash = 0; + } + + symbol = xmalloc(sizeof(*symbol)); + memset(symbol, 0, sizeof(*symbol)); + symbol->name = new_name; + symbol->type = S_UNKNOWN; + symbol->flags |= flags; + + symbol->next = symbol_hash[hash]; + symbol_hash[hash] = symbol; + + return symbol; +} + +struct symbol *sym_find(const char *name) +{ + struct symbol *symbol = NULL; + int hash = 0; + + if (!name) + return NULL; + + if (name[0] && !name[1]) { + switch (name[0]) { + case 'y': return &symbol_yes; + case 'm': return &symbol_mod; + case 'n': return &symbol_no; + } + } + hash = strhash(name) % SYMBOL_HASHSIZE; + + for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { + if (symbol->name && + !strcmp(symbol->name, name) && + !(symbol->flags & SYMBOL_CONST)) + break; + } + + return symbol; +} + +/* + * Expand symbol's names embedded in the string given in argument. Symbols' + * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to + * the empty string. + */ +const char *sym_expand_string_value(const char *in) +{ + const char *src; + char *res; + size_t reslen; + + reslen = strlen(in) + 1; + res = xmalloc(reslen); + res[0] = '\0'; + + while ((src = strchr(in, '$'))) { + char *p, name[SYMBOL_MAXLENGTH]; + const char *symval = ""; + struct symbol *sym; + size_t newlen; + + strncat(res, in, src - in); + src++; + + p = name; + while (isalnum(*src) || *src == '_') + *p++ = *src++; + *p = '\0'; + + sym = sym_find(name); + if (sym != NULL) { + sym_calc_value(sym); + symval = sym_get_string_value(sym); + } + + newlen = strlen(res) + strlen(symval) + strlen(src) + 1; + if (newlen > reslen) { + reslen = newlen; + res = realloc(res, reslen); + } + + strcat(res, symval); + in = src; + } + strcat(res, in); + + return res; +} + +const char *sym_escape_string_value(const char *in) +{ + const char *p; + size_t reslen; + char *res; + size_t l; + + reslen = strlen(in) + strlen("\"\"") + 1; + + p = in; + for (;;) { + l = strcspn(p, "\"\\"); + p += l; + + if (p[0] == '\0') + break; + + reslen++; + p++; + } + + res = xmalloc(reslen); + res[0] = '\0'; + + strcat(res, "\""); + + p = in; + for (;;) { + l = strcspn(p, "\"\\"); + strncat(res, p, l); + p += l; + + if (p[0] == '\0') + break; + + strcat(res, "\\"); + strncat(res, p++, 1); + } + + strcat(res, "\""); + return res; +} + +struct sym_match { + struct symbol *sym; + off_t so, eo; +}; + +/* Compare matched symbols as thus: + * - first, symbols that match exactly + * - then, alphabetical sort + */ +static int sym_rel_comp(const void *sym1, const void *sym2) +{ + const struct sym_match *s1 = sym1; + const struct sym_match *s2 = sym2; + int exact1, exact2; + + /* Exact match: + * - if matched length on symbol s1 is the length of that symbol, + * then this symbol should come first; + * - if matched length on symbol s2 is the length of that symbol, + * then this symbol should come first. + * Note: since the search can be a regexp, both symbols may match + * exactly; if this is the case, we can't decide which comes first, + * and we fallback to sorting alphabetically. + */ + exact1 = (s1->eo - s1->so) == strlen(s1->sym->name); + exact2 = (s2->eo - s2->so) == strlen(s2->sym->name); + if (exact1 && !exact2) + return -1; + if (!exact1 && exact2) + return 1; + + /* As a fallback, sort symbols alphabetically */ + return strcmp(s1->sym->name, s2->sym->name); +} + +struct symbol **sym_re_search(const char *pattern) +{ + struct symbol *sym, **sym_arr = NULL; + struct sym_match *sym_match_arr = NULL; + int i, cnt, size; + regex_t re; + regmatch_t match[1]; + + cnt = size = 0; + /* Skip if empty */ + if (strlen(pattern) == 0) + return NULL; + if (regcomp(&re, pattern, REG_EXTENDED|REG_ICASE)) + return NULL; + + for_all_symbols(i, sym) { + if (sym->flags & SYMBOL_CONST || !sym->name) + continue; + if (regexec(&re, sym->name, 1, match, 0)) + continue; + if (cnt >= size) { + void *tmp; + size += 16; + tmp = realloc(sym_match_arr, size * sizeof(struct sym_match)); + if (!tmp) + goto sym_re_search_free; + sym_match_arr = tmp; + } + sym_calc_value(sym); + /* As regexec returned 0, we know we have a match, so + * we can use match[0].rm_[se]o without further checks + */ + sym_match_arr[cnt].so = match[0].rm_so; + sym_match_arr[cnt].eo = match[0].rm_eo; + sym_match_arr[cnt++].sym = sym; + } + if (sym_match_arr) { + qsort(sym_match_arr, cnt, sizeof(struct sym_match), sym_rel_comp); + sym_arr = malloc((cnt+1) * sizeof(struct symbol)); + if (!sym_arr) + goto sym_re_search_free; + for (i = 0; i < cnt; i++) + sym_arr[i] = sym_match_arr[i].sym; + sym_arr[cnt] = NULL; + } +sym_re_search_free: + /* sym_match_arr can be NULL if no match, but free(NULL) is OK */ + free(sym_match_arr); + regfree(&re); + + return sym_arr; +} + +/* + * When we check for recursive dependencies we use a stack to save + * current state so we can print out relevant info to user. + * The entries are located on the call stack so no need to free memory. + * Note insert() remove() must always match to properly clear the stack. + */ +static struct dep_stack { + struct dep_stack *prev, *next; + struct symbol *sym; + struct property *prop; + struct expr *expr; +} *check_top; + +static void dep_stack_insert(struct dep_stack *stack, struct symbol *sym) +{ + memset(stack, 0, sizeof(*stack)); + if (check_top) + check_top->next = stack; + stack->prev = check_top; + stack->sym = sym; + check_top = stack; +} + +static void dep_stack_remove(void) +{ + check_top = check_top->prev; + if (check_top) + check_top->next = NULL; +} + +/* + * Called when we have detected a recursive dependency. + * check_top point to the top of the stact so we use + * the ->prev pointer to locate the bottom of the stack. + */ +static void sym_check_print_recursive(struct symbol *last_sym) +{ + struct dep_stack *stack; + struct symbol *sym, *next_sym; + struct menu *menu = NULL; + struct property *prop; + struct dep_stack cv_stack; + + if (sym_is_choice_value(last_sym)) { + dep_stack_insert(&cv_stack, last_sym); + last_sym = prop_get_symbol(sym_get_choice_prop(last_sym)); + } + + for (stack = check_top; stack != NULL; stack = stack->prev) + if (stack->sym == last_sym) + break; + if (!stack) { + fprintf(stderr, "unexpected recursive dependency error\n"); + return; + } + + for (; stack; stack = stack->next) { + sym = stack->sym; + next_sym = stack->next ? stack->next->sym : last_sym; + prop = stack->prop; + if (prop == NULL) + prop = stack->sym->prop; + + /* for choice values find the menu entry (used below) */ + if (sym_is_choice(sym) || sym_is_choice_value(sym)) { + for (prop = sym->prop; prop; prop = prop->next) { + menu = prop->menu; + if (prop->menu) + break; + } + } + if (stack->sym == last_sym) + fprintf(stderr, "%s:%d:error: recursive dependency detected!\n", + prop->file->name, prop->lineno); + if (stack->expr) { + fprintf(stderr, "%s:%d:\tsymbol %s %s value contains %s\n", + prop->file->name, prop->lineno, + sym->name ? sym->name : "", + prop_get_type_name(prop->type), + next_sym->name ? next_sym->name : ""); + } else if (stack->prop) { + fprintf(stderr, "%s:%d:\tsymbol %s depends on %s\n", + prop->file->name, prop->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (sym_is_choice(sym)) { + fprintf(stderr, "%s:%d:\tchoice %s contains symbol %s\n", + menu->file->name, menu->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else if (sym_is_choice_value(sym)) { + fprintf(stderr, "%s:%d:\tsymbol %s is part of choice %s\n", + menu->file->name, menu->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } else { + fprintf(stderr, "%s:%d:\tsymbol %s is selected by %s\n", + prop->file->name, prop->lineno, + sym->name ? sym->name : "", + next_sym->name ? next_sym->name : ""); + } + } + + if (check_top == &cv_stack) + dep_stack_remove(); +} + +static struct symbol *sym_check_expr_deps(struct expr *e) +{ + struct symbol *sym; + + if (!e) + return NULL; + switch (e->type) { + case E_OR: + case E_AND: + sym = sym_check_expr_deps(e->left.expr); + if (sym) + return sym; + return sym_check_expr_deps(e->right.expr); + case E_NOT: + return sym_check_expr_deps(e->left.expr); + case E_EQUAL: + case E_UNEQUAL: + sym = sym_check_deps(e->left.sym); + if (sym) + return sym; + return sym_check_deps(e->right.sym); + case E_SYMBOL: + return sym_check_deps(e->left.sym); + default: + break; + } + printf("Oops! How to check %d?\n", e->type); + return NULL; +} + +/* return NULL when dependencies are OK */ +static struct symbol *sym_check_sym_deps(struct symbol *sym) +{ + struct symbol *sym2; + struct property *prop; + struct dep_stack stack; + + dep_stack_insert(&stack, sym); + + 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; + stack.prop = prop; + sym2 = sym_check_expr_deps(prop->visible.expr); + if (sym2) + break; + if (prop->type != P_DEFAULT || sym_is_choice(sym)) + continue; + stack.expr = prop->expr; + sym2 = sym_check_expr_deps(prop->expr); + if (sym2) + break; + stack.expr = NULL; + } + +out: + dep_stack_remove(); + + return sym2; +} + +static struct symbol *sym_check_choice_deps(struct symbol *choice) +{ + struct symbol *sym, *sym2; + struct property *prop; + struct expr *e; + struct dep_stack stack; + + dep_stack_insert(&stack, choice); + + 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) + 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; + + dep_stack_remove(); + + return sym2; +} + +struct symbol *sym_check_deps(struct symbol *sym) +{ + struct symbol *sym2; + struct property *prop; + + if (sym->flags & SYMBOL_CHECK) { + sym_check_print_recursive(sym); + return sym; + } + if (sym->flags & SYMBOL_CHECKED) + return NULL; + + if (sym_is_choice_value(sym)) { + struct dep_stack stack; + + /* for choice groups start the check with main choice symbol */ + dep_stack_insert(&stack, sym); + prop = sym_get_choice_prop(sym); + sym2 = sym_check_deps(prop_get_symbol(prop)); + dep_stack_remove(); + } 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; + } + + if (sym2 && sym2 == sym) + sym2 = NULL; + + return sym2; +} + +struct property *prop_alloc(enum prop_type type, struct symbol *sym) +{ + struct property *prop; + struct property **propp; + + prop = xmalloc(sizeof(*prop)); + memset(prop, 0, sizeof(*prop)); + prop->type = type; + prop->sym = sym; + prop->file = current_file; + prop->lineno = zconf_lineno(); + + /* append property to the prop list of symbol */ + if (sym) { + for (propp = &sym->prop; *propp; propp = &(*propp)->next) + ; + *propp = prop; + } + + return prop; +} + +struct symbol *prop_get_symbol(struct property *prop) +{ + if (prop->expr && (prop->expr->type == E_SYMBOL || + prop->expr->type == E_LIST)) + return prop->expr->left.sym; + return NULL; +} + +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: + return "menu"; + case P_DEFAULT: + return "default"; + case P_CHOICE: + return "choice"; + case P_SELECT: + return "select"; + case P_RANGE: + return "range"; + case P_SYMBOL: + return "symbol"; + case P_UNKNOWN: + break; + } + return "unknown"; +} + +static 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); +} diff --git a/buildroot/support/kconfig/util.c b/buildroot/support/kconfig/util.c new file mode 100644 index 0000000..60eb566 --- /dev/null +++ b/buildroot/support/kconfig/util.c @@ -0,0 +1,171 @@ +/* + * Copyright (C) 2002-2005 Roman Zippel + * Copyright (C) 2002-2005 Sam Ravnborg + * + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include "lkc.h" + +/* file already present in list? If not add it */ +struct file *file_lookup(const char *name) +{ + struct file *file; + const char *file_name = sym_expand_string_value(name); + + for (file = file_list; file; file = file->next) { + if (!strcmp(name, file->name)) { + free((void *)file_name); + return file; + } + } + + file = xmalloc(sizeof(*file)); + memset(file, 0, sizeof(*file)); + file->name = file_name; + file->next = file_list; + file_list = file; + return file; +} + +/* write a dependency file as used by kbuild to track dependencies */ +int file_write_dep(const char *name) +{ + char *str; + char buf[PATH_MAX+1], buf2[PATH_MAX+1], dir[PATH_MAX+1]; + struct symbol *sym, *env_sym; + struct expr *e; + struct file *file; + FILE *out; + + if (!name) + name = ".kconfig.d"; + + strcpy(dir, conf_get_configname()); + str = strrchr(dir, '/'); + if (str) + str[1] = 0; + else + dir[0] = 0; + + sprintf(buf, "%s..config.tmp", dir); + out = fopen(buf, "w"); + if (!out) + return 1; + fprintf(out, "deps_config := \\\n"); + for (file = file_list; file; file = file->next) { + if (file->next) + fprintf(out, "\t%s \\\n", file->name); + else + fprintf(out, "\t%s\n", file->name); + } + 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); + sprintf(buf2, "%s%s", dir, name); + rename(buf, buf2); + return 0; +} + + +/* Allocate initial growable string */ +struct gstr str_new(void) +{ + struct gstr gs; + gs.s = xmalloc(sizeof(char) * 64); + gs.len = 64; + gs.max_width = 0; + strcpy(gs.s, "\0"); + return gs; +} + +/* Allocate and assign growable string */ +struct gstr str_assign(const char *s) +{ + struct gstr gs; + gs.s = strdup(s); + gs.len = strlen(s) + 1; + gs.max_width = 0; + return gs; +} + +/* Free storage for growable string */ +void str_free(struct gstr *gs) +{ + if (gs->s) + free(gs->s); + gs->s = NULL; + gs->len = 0; +} + +/* Append to growable string */ +void str_append(struct gstr *gs, const char *s) +{ + size_t l; + if (s) { + l = strlen(gs->s) + strlen(s) + 1; + if (l > gs->len) { + gs->s = realloc(gs->s, l); + gs->len = l; + } + strcat(gs->s, s); + } +} + +/* Append printf formatted string to growable string */ +void str_printf(struct gstr *gs, const char *fmt, ...) +{ + va_list ap; + char s[10000]; /* big enough... */ + va_start(ap, fmt); + vsnprintf(s, sizeof(s), fmt, ap); + str_append(gs, s); + va_end(ap); +} + +/* Retrieve value of growable string */ +const char *str_get(struct gstr *gs) +{ + return gs->s; +} + +void *xmalloc(size_t size) +{ + void *p = malloc(size); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} + +void *xcalloc(size_t nmemb, size_t size) +{ + void *p = calloc(nmemb, size); + if (p) + return p; + fprintf(stderr, "Out of memory.\n"); + exit(1); +} + + diff --git a/buildroot/support/kconfig/zconf.gperf b/buildroot/support/kconfig/zconf.gperf new file mode 100644 index 0000000..f14ab41 --- /dev/null +++ b/buildroot/support/kconfig/zconf.gperf @@ -0,0 +1,47 @@ +%language=ANSI-C +%define hash-function-name kconf_id_hash +%define lookup-function-name kconf_id_lookup +%define string-pool-name kconf_id_strings +%compare-strncmp +%enum +%pic +%struct-type + +struct kconf_id; + +static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len); + +%% +mainmenu, T_MAINMENU, TF_COMMAND +menu, T_MENU, TF_COMMAND +endmenu, T_ENDMENU, TF_COMMAND +source, T_SOURCE, TF_COMMAND +choice, T_CHOICE, TF_COMMAND +endchoice, T_ENDCHOICE, TF_COMMAND +comment, T_COMMENT, TF_COMMAND +config, T_CONFIG, TF_COMMAND +menuconfig, T_MENUCONFIG, TF_COMMAND +help, T_HELP, TF_COMMAND +if, T_IF, TF_COMMAND|TF_PARAM +endif, T_ENDIF, TF_COMMAND +depends, T_DEPENDS, TF_COMMAND +optional, T_OPTIONAL, TF_COMMAND +default, T_DEFAULT, TF_COMMAND, S_UNKNOWN +prompt, T_PROMPT, TF_COMMAND +tristate, T_TYPE, TF_COMMAND, S_TRISTATE +def_tristate, T_DEFAULT, TF_COMMAND, S_TRISTATE +bool, T_TYPE, TF_COMMAND, S_BOOLEAN +boolean, T_TYPE, TF_COMMAND, S_BOOLEAN +def_bool, T_DEFAULT, TF_COMMAND, S_BOOLEAN +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 +range, T_RANGE, TF_COMMAND +visible, T_VISIBLE, 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 +%% diff --git a/buildroot/support/kconfig/zconf.hash.c_shipped b/buildroot/support/kconfig/zconf.hash.c_shipped new file mode 100644 index 0000000..40df000 --- /dev/null +++ b/buildroot/support/kconfig/zconf.hash.c_shipped @@ -0,0 +1,286 @@ +/* ANSI-C code produced by gperf version 3.0.4 */ +/* Command-line: gperf -t --output-file scripts/kconfig/zconf.hash.c_shipped -a -C -E -g -k '1,3,$' -p -t scripts/kconfig/zconf.gperf */ + +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ + && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ + && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ + && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ + && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ + && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ + && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ + && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ + && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ + && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ + && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ + && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ + && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ + && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ + && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ + && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ + && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ + && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ + && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ + && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ + && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ + && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ + && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) +/* The character set is not based on ISO-646. */ +#error "gperf generated tables don't work with this execution character set. Please report a bug to ." +#endif + +#line 10 "scripts/kconfig/zconf.gperf" +struct kconf_id; + +static const struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len); +/* maximum key range = 71, duplicates = 0 */ + +#ifdef __GNUC__ +__inline +#else +#ifdef __cplusplus +inline +#endif +#endif +static unsigned int +kconf_id_hash (register const char *str, register unsigned int len) +{ + static const unsigned char asso_values[] = + { + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 25, 25, + 0, 0, 0, 5, 0, 0, 73, 73, 5, 0, + 10, 5, 45, 73, 20, 20, 0, 15, 15, 73, + 20, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73 + }; + register int hval = len; + + switch (hval) + { + default: + hval += asso_values[(unsigned char)str[2]]; + /*FALLTHROUGH*/ + case 2: + case 1: + hval += asso_values[(unsigned char)str[0]]; + break; + } + return hval + asso_values[(unsigned char)str[len - 1]]; +} + +struct kconf_id_strings_t + { + char kconf_id_strings_str2[sizeof("if")]; + char kconf_id_strings_str3[sizeof("int")]; + char kconf_id_strings_str5[sizeof("endif")]; + char kconf_id_strings_str7[sizeof("default")]; + char kconf_id_strings_str8[sizeof("tristate")]; + char kconf_id_strings_str9[sizeof("endchoice")]; + char kconf_id_strings_str12[sizeof("def_tristate")]; + char kconf_id_strings_str13[sizeof("def_bool")]; + char kconf_id_strings_str14[sizeof("defconfig_list")]; + char kconf_id_strings_str17[sizeof("on")]; + char kconf_id_strings_str18[sizeof("optional")]; + char kconf_id_strings_str21[sizeof("option")]; + char kconf_id_strings_str22[sizeof("endmenu")]; + char kconf_id_strings_str23[sizeof("mainmenu")]; + char kconf_id_strings_str25[sizeof("menuconfig")]; + char kconf_id_strings_str27[sizeof("modules")]; + char kconf_id_strings_str29[sizeof("menu")]; + char kconf_id_strings_str31[sizeof("select")]; + char kconf_id_strings_str32[sizeof("comment")]; + char kconf_id_strings_str33[sizeof("env")]; + char kconf_id_strings_str35[sizeof("range")]; + char kconf_id_strings_str36[sizeof("choice")]; + char kconf_id_strings_str39[sizeof("bool")]; + char kconf_id_strings_str41[sizeof("source")]; + char kconf_id_strings_str42[sizeof("visible")]; + char kconf_id_strings_str43[sizeof("hex")]; + char kconf_id_strings_str46[sizeof("config")]; + char kconf_id_strings_str47[sizeof("boolean")]; + char kconf_id_strings_str51[sizeof("string")]; + char kconf_id_strings_str54[sizeof("help")]; + char kconf_id_strings_str56[sizeof("prompt")]; + char kconf_id_strings_str72[sizeof("depends")]; + }; +static const struct kconf_id_strings_t kconf_id_strings_contents = + { + "if", + "int", + "endif", + "default", + "tristate", + "endchoice", + "def_tristate", + "def_bool", + "defconfig_list", + "on", + "optional", + "option", + "endmenu", + "mainmenu", + "menuconfig", + "modules", + "menu", + "select", + "comment", + "env", + "range", + "choice", + "bool", + "source", + "visible", + "hex", + "config", + "boolean", + "string", + "help", + "prompt", + "depends" + }; +#define kconf_id_strings ((const char *) &kconf_id_strings_contents) +#ifdef __GNUC__ +__inline +#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif +#endif +const struct kconf_id * +kconf_id_lookup (register const char *str, register unsigned int len) +{ + enum + { + TOTAL_KEYWORDS = 32, + MIN_WORD_LENGTH = 2, + MAX_WORD_LENGTH = 14, + MIN_HASH_VALUE = 2, + MAX_HASH_VALUE = 72 + }; + + static const struct kconf_id wordlist[] = + { + {-1}, {-1}, +#line 25 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_IF, TF_COMMAND|TF_PARAM}, +#line 36 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_TYPE, TF_COMMAND, S_INT}, + {-1}, +#line 26 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND}, + {-1}, +#line 29 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_DEFAULT, TF_COMMAND, S_UNKNOWN}, +#line 31 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_TYPE, TF_COMMAND, S_TRISTATE}, +#line 20 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_ENDCHOICE, TF_COMMAND}, + {-1}, {-1}, +#line 32 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_TRISTATE}, +#line 35 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN}, +#line 45 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_OPT_DEFCONFIG_LIST,TF_OPTION}, + {-1}, {-1}, +#line 43 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_ON, TF_PARAM}, +#line 28 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_OPTIONAL, TF_COMMAND}, + {-1}, {-1}, +#line 42 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_OPTION, TF_COMMAND}, +#line 17 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_ENDMENU, TF_COMMAND}, +#line 15 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_MAINMENU, TF_COMMAND}, + {-1}, +#line 23 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str25, T_MENUCONFIG, TF_COMMAND}, + {-1}, +#line 44 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION}, + {-1}, +#line 16 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND}, + {-1}, +#line 39 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SELECT, TF_COMMAND}, +#line 21 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND}, +#line 46 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_OPT_ENV, TF_OPTION}, + {-1}, +#line 40 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_RANGE, TF_COMMAND}, +#line 19 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_CHOICE, TF_COMMAND}, + {-1}, {-1}, +#line 33 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str39, T_TYPE, TF_COMMAND, S_BOOLEAN}, + {-1}, +#line 18 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_SOURCE, TF_COMMAND}, +#line 41 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42, T_VISIBLE, TF_COMMAND}, +#line 37 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str43, T_TYPE, TF_COMMAND, S_HEX}, + {-1}, {-1}, +#line 22 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46, T_CONFIG, TF_COMMAND}, +#line 34 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47, T_TYPE, TF_COMMAND, S_BOOLEAN}, + {-1}, {-1}, {-1}, +#line 38 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str51, T_TYPE, TF_COMMAND, S_STRING}, + {-1}, {-1}, +#line 24 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str54, T_HELP, TF_COMMAND}, + {-1}, +#line 30 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str56, T_PROMPT, TF_COMMAND}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, + {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, +#line 27 "scripts/kconfig/zconf.gperf" + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str72, T_DEPENDS, TF_COMMAND} + }; + + if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) + { + register int key = kconf_id_hash (str, len); + + if (key <= MAX_HASH_VALUE && key >= 0) + { + register int o = wordlist[key].name; + if (o >= 0) + { + register const char *s = o + kconf_id_strings; + + if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0') + return &wordlist[key]; + } + } + } + return 0; +} +#line 47 "scripts/kconfig/zconf.gperf" + diff --git a/buildroot/support/kconfig/zconf.l b/buildroot/support/kconfig/zconf.l new file mode 100644 index 0000000..1a9f53e --- /dev/null +++ b/buildroot/support/kconfig/zconf.l @@ -0,0 +1,363 @@ +%option nostdinit noyywrap never-interactive full ecs +%option 8bit nodefault perf-report perf-report +%option noinput +%x COMMAND HELP STRING PARAM +%{ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define START_STRSIZE 16 + +static struct { + struct file *file; + int lineno; +} current_pos; + +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; +}; + +struct buffer *current_buf; + +static int last_ts, first_ts; + +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = realloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} +%} + +n [A-Za-z0-9_] + +%% + int str = 0; + int ts, i; + +[ \t]*#.*\n | +[ \t]*\n { + current_file->lineno++; + return T_EOL; +} +[ \t]*#.* + + +[ \t]+ { + BEGIN(COMMAND); +} + +. { + unput(yytext[0]); + BEGIN(COMMAND); +} + + +{ + {n}+ { + const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); + BEGIN(PARAM); + current_pos.file = current_file; + current_pos.lineno = current_file->lineno; + if (id && id->flags & TF_COMMAND) { + zconflval.id = id; + return id->token; + } + alloc_string(yytext, yyleng); + zconflval.string = text; + return T_WORD; + } + . + \n { + BEGIN(INITIAL); + current_file->lineno++; + return T_EOL; + } +} + +{ + "&&" return T_AND; + "||" return T_OR; + "(" return T_OPEN_PAREN; + ")" return T_CLOSE_PAREN; + "!" return T_NOT; + "=" return T_EQUAL; + "!=" return T_UNEQUAL; + \"|\' { + str = yytext[0]; + new_string(); + BEGIN(STRING); + } + \n BEGIN(INITIAL); current_file->lineno++; return T_EOL; + --- /* ignore */ + ({n}|[-/.])+ { + const struct kconf_id *id = kconf_id_lookup(yytext, yyleng); + if (id && id->flags & TF_PARAM) { + zconflval.id = id; + return id->token; + } + alloc_string(yytext, yyleng); + zconflval.string = text; + return T_WORD; + } + #.* /* comment */ + \\\n current_file->lineno++; + . + <> { + BEGIN(INITIAL); + } +} + +{ + [^'"\\\n]+/\n { + append_string(yytext, yyleng); + zconflval.string = text; + return T_WORD_QUOTE; + } + [^'"\\\n]+ { + append_string(yytext, yyleng); + } + \\.?/\n { + append_string(yytext + 1, yyleng - 1); + zconflval.string = text; + return T_WORD_QUOTE; + } + \\.? { + append_string(yytext + 1, yyleng - 1); + } + \'|\" { + if (str == yytext[0]) { + BEGIN(PARAM); + zconflval.string = text; + return T_WORD_QUOTE; + } else + append_string(yytext, 1); + } + \n { + printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); + current_file->lineno++; + BEGIN(INITIAL); + return T_EOL; + } + <> { + BEGIN(INITIAL); + } +} + +{ + [ \t]+ { + ts = 0; + for (i = 0; i < yyleng; i++) { + if (yytext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + [ \t]*\n/[^ \t\n] { + current_file->lineno++; + zconf_endhelp(); + return T_HELPTEXT; + } + [ \t]*\n { + current_file->lineno++; + 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; + } + <> { + zconf_endhelp(); + return T_HELPTEXT; + } +} + +<> { + if (current_file) { + zconf_endfile(); + return T_EOL; + } + fclose(yyin); + yyterminate(); +} + +%% +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + zconflval.string = text; + BEGIN(INITIAL); +} + + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + yyin = zconf_fopen(name); + if (!yyin) { + printf("can't find file %s\n", name); + exit(1); + } + + current_buf = xmalloc(sizeof(*current_buf)); + memset(current_buf, 0, sizeof(*current_buf)); + + current_file = file_lookup(name); + current_file->lineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct file *iter; + struct file *file = file_lookup(name); + struct buffer *buf = xmalloc(sizeof(*buf)); + memset(buf, 0, sizeof(*buf)); + + current_buf->state = YY_CURRENT_BUFFER; + yyin = zconf_fopen(file->name); + if (!yyin) { + printf("%s:%d: can't open file \"%s\"\n", + zconf_curname(), zconf_lineno(), file->name); + exit(1); + } + yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); + buf->parent = current_buf; + current_buf = buf; + + for (iter = current_file->parent; iter; iter = iter->parent ) { + if (!strcmp(current_file->name,iter->name) ) { + printf("%s:%d: recursive inclusion detected. " + "Inclusion path:\n current file : '%s'\n", + zconf_curname(), zconf_lineno(), + zconf_curname()); + iter = current_file->parent; + while (iter && \ + strcmp(iter->name,current_file->name)) { + printf(" included from: '%s:%d'\n", + iter->name, iter->lineno-1); + iter = iter->parent; + } + if (iter) + printf(" included from: '%s:%d'\n", + iter->name, iter->lineno+1); + exit(1); + } + } + file->lineno = 1; + file->parent = current_file; + current_file = file; +} + +static void zconf_endfile(void) +{ + struct buffer *parent; + + current_file = current_file->parent; + + parent = current_buf->parent; + if (parent) { + fclose(yyin); + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(parent->state); + } + free(current_buf); + current_buf = parent; +} + +int zconf_lineno(void) +{ + return current_pos.lineno; +} + +const char *zconf_curname(void) +{ + return current_pos.file ? current_pos.file->name : ""; +} diff --git a/buildroot/support/kconfig/zconf.lex.c_shipped b/buildroot/support/kconfig/zconf.lex.c_shipped new file mode 100644 index 0000000..a0521aa --- /dev/null +++ b/buildroot/support/kconfig/zconf.lex.c_shipped @@ -0,0 +1,2420 @@ + +#line 3 "scripts/kconfig/zconf.lex.c_shipped" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define yy_create_buffer zconf_create_buffer +#define yy_delete_buffer zconf_delete_buffer +#define yy_flex_debug zconf_flex_debug +#define yy_init_buffer zconf_init_buffer +#define yy_flush_buffer zconf_flush_buffer +#define yy_load_buffer_state zconf_load_buffer_state +#define yy_switch_to_buffer zconf_switch_to_buffer +#define yyin zconfin +#define yyleng zconfleng +#define yylex zconflex +#define yylineno zconflineno +#define yyout zconfout +#define yyrestart zconfrestart +#define yytext zconftext +#define yywrap zconfwrap +#define yyalloc zconfalloc +#define yyrealloc zconfrealloc +#define yyfree zconffree + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#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. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +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 +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE zconfrestart(zconfin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +extern int zconfleng; + +extern FILE *zconfin, *zconfout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up zconftext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up zconftext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via zconfrestart()), so that the user can continue scanning by + * just pointing zconfin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when zconftext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int zconfleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow zconfwrap()'s to do buffer switches + * instead of setting up a fresh zconfin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void zconfrestart (FILE *input_file ); +void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size ); +void zconf_delete_buffer (YY_BUFFER_STATE b ); +void zconf_flush_buffer (YY_BUFFER_STATE b ); +void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ); +void zconfpop_buffer_state (void ); + +static void zconfensure_buffer_stack (void ); +static void zconf_load_buffer_state (void ); +static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len ); + +void *zconfalloc (yy_size_t ); +void *zconfrealloc (void *,yy_size_t ); +void zconffree (void * ); + +#define yy_new_buffer zconf_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + zconfensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + zconfensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define zconfwrap(n) 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0; + +typedef int yy_state_type; + +extern int zconflineno; + +int zconflineno = 1; + +extern char *zconftext; +#define yytext_ptr zconftext +static yyconst flex_int16_t yy_nxt[][17] = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0 + }, + + { + 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12 + }, + + { + 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12 + }, + + { + 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 18, 16, 16, 16 + }, + + { + 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 18, 16, 16, 16 + + }, + + { + 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19 + }, + + { + 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19 + }, + + { + 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, + 22, 22, 22, 22, 22, 25, 22 + }, + + { + 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, + 22, 22, 22, 22, 22, 25, 22 + }, + + { + 11, 26, 26, 27, 28, 29, 30, 31, 29, 32, + 33, 34, 35, 35, 36, 37, 38 + + }, + + { + 11, 26, 26, 27, 28, 29, 30, 31, 29, 32, + 33, 34, 35, 35, 36, 37, 38 + }, + + { + -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, + -11, -11, -11, -11, -11, -11, -11 + }, + + { + 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, + -12, -12, -12, -12, -12, -12, -12 + }, + + { + 11, -13, 39, 40, -13, -13, 41, -13, -13, -13, + -13, -13, -13, -13, -13, -13, -13 + }, + + { + 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, + -14, -14, -14, -14, -14, -14, -14 + + }, + + { + 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42 + }, + + { + 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, + -16, -16, -16, -16, -16, -16, -16 + }, + + { + 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -17, -17, -17, -17, -17, -17, -17 + }, + + { + 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -18, -18, 44, -18, -18, -18 + }, + + { + 11, 45, 45, -19, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45 + + }, + + { + 11, -20, 46, 47, -20, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -20 + }, + + { + 11, 48, -21, -21, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48 + }, + + { + 11, 49, 49, 50, 49, -22, 49, 49, -22, 49, + 49, 49, 49, 49, 49, -22, 49 + }, + + { + 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23 + }, + + { + 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, + -24, -24, -24, -24, -24, -24, -24 + + }, + + { + 11, 51, 51, 52, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 51 + }, + + { + 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -26, -26, -26, -26, -26, -26, -26 + }, + + { + 11, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, -27 + }, + + { + 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -28, -28, -28, -28, 53, -28, -28 + }, + + { + 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -29, -29, -29, -29, -29, -29, -29 + + }, + + { + 11, 54, 54, -30, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54 + }, + + { + 11, -31, -31, -31, -31, -31, -31, 55, -31, -31, + -31, -31, -31, -31, -31, -31, -31 + }, + + { + 11, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -32, -32, -32, -32, -32, -32, -32 + }, + + { + 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, + -33, -33, -33, -33, -33, -33, -33 + }, + + { + 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, + -34, 56, 57, 57, -34, -34, -34 + + }, + + { + 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, + -35, 57, 57, 57, -35, -35, -35 + }, + + { + 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -36, -36, -36, -36, -36 + }, + + { + 11, -37, -37, 58, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37 + }, + + { + 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, + -38, -38, -38, -38, -38, -38, 59 + }, + + { + 11, -39, 39, 40, -39, -39, 41, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39 + + }, + + { + 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, -40, -40 + }, + + { + 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42 + }, + + { + 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, + 42, 42, 42, 42, 42, 42, 42 + }, + + { + 11, -43, -43, -43, -43, -43, -43, -43, -43, -43, + -43, -43, -43, -43, -43, -43, -43 + }, + + { + 11, -44, -44, -44, -44, -44, -44, -44, -44, -44, + -44, -44, -44, 44, -44, -44, -44 + + }, + + { + 11, 45, 45, -45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45 + }, + + { + 11, -46, 46, 47, -46, -46, -46, -46, -46, -46, + -46, -46, -46, -46, -46, -46, -46 + }, + + { + 11, 48, -47, -47, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48 + }, + + { + 11, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48 + }, + + { + 11, 49, 49, 50, 49, -49, 49, 49, -49, 49, + 49, 49, 49, 49, 49, -49, 49 + + }, + + { + 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50 + }, + + { + 11, -51, -51, 52, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51 + }, + + { + 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52 + }, + + { + 11, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53 + }, + + { + 11, 54, 54, -54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 54 + + }, + + { + 11, -55, -55, -55, -55, -55, -55, -55, -55, -55, + -55, -55, -55, -55, -55, -55, -55 + }, + + { + 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, 60, 57, 57, -56, -56, -56 + }, + + { + 11, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, 57, 57, 57, -57, -57, -57 + }, + + { + 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, -58 + }, + + { + 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, + -59, -59, -59, -59, -59, -59, -59 + + }, + + { + 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, 57, 57, 57, -60, -60, -60 + }, + + } ; + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up zconftext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + zconfleng = (size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 33 +#define YY_END_OF_BUFFER 34 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[61] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 5, 4, 2, 3, 7, 8, 6, 32, 29, + 31, 24, 28, 27, 26, 22, 17, 13, 16, 20, + 22, 11, 12, 19, 19, 14, 22, 22, 4, 2, + 3, 3, 1, 6, 32, 29, 31, 30, 24, 23, + 26, 25, 15, 20, 9, 19, 19, 21, 10, 18 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, + 10, 1, 1, 1, 11, 12, 12, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, + 14, 1, 1, 1, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 1, 15, 1, 1, 13, 1, 13, 13, 13, 13, + + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 1, 16, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +extern int zconf_flex_debug; +int zconf_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *zconftext; +#define YY_NO_INPUT 1 + +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define START_STRSIZE 16 + +static struct { + struct file *file; + int lineno; +} current_pos; + +static char *text; +static int text_size, text_asize; + +struct buffer { + struct buffer *parent; + YY_BUFFER_STATE state; +}; + +struct buffer *current_buf; + +static int last_ts, first_ts; + +static void zconf_endhelp(void); +static void zconf_endfile(void); + +static void new_string(void) +{ + text = xmalloc(START_STRSIZE); + text_asize = START_STRSIZE; + text_size = 0; + *text = 0; +} + +static void append_string(const char *str, int size) +{ + int new_size = text_size + size + 1; + if (new_size > text_asize) { + new_size += START_STRSIZE - 1; + new_size &= -START_STRSIZE; + text = realloc(text, new_size); + text_asize = new_size; + } + memcpy(text + text_size, str, size); + text_size += size; + text[text_size] = 0; +} + +static void alloc_string(const char *str, int size) +{ + text = xmalloc(size + 1); + memcpy(text, str, size); + text[size] = 0; +} + +#define INITIAL 0 +#define COMMAND 1 +#define HELP 2 +#define STRING 3 +#define PARAM 4 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +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. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int zconfwrap (void ); +#else +extern int zconfwrap (void ); +#endif +#endif + + static void yyunput (int c,char *buf_ptr ); + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( zconftext, zconfleng, 1, zconfout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + errno=0; \ + while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(zconfin); \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int zconflex (void); + +#define YY_DECL int zconflex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after zconftext and zconfleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + + int str = 0; + int ts, i; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! zconfin ) + zconfin = stdin; + + if ( ! zconfout ) + zconfout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + zconfensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + zconf_create_buffer(zconfin,YY_BUF_SIZE ); + } + + zconf_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of zconftext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) + ++yy_cp; + + yy_current_state = -yy_current_state; + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ +case 1: +/* rule 1 can match eol */ +case 2: +/* rule 2 can match eol */ +YY_RULE_SETUP +{ + current_file->lineno++; + return T_EOL; +} + YY_BREAK +case 3: +YY_RULE_SETUP + + YY_BREAK +case 4: +YY_RULE_SETUP +{ + BEGIN(COMMAND); +} + YY_BREAK +case 5: +YY_RULE_SETUP +{ + unput(zconftext[0]); + BEGIN(COMMAND); +} + YY_BREAK + +case 6: +YY_RULE_SETUP +{ + const struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng); + BEGIN(PARAM); + current_pos.file = current_file; + current_pos.lineno = current_file->lineno; + if (id && id->flags & TF_COMMAND) { + zconflval.id = id; + return id->token; + } + alloc_string(zconftext, zconfleng); + zconflval.string = text; + return T_WORD; + } + YY_BREAK +case 7: +YY_RULE_SETUP + + YY_BREAK +case 8: +/* rule 8 can match eol */ +YY_RULE_SETUP +{ + BEGIN(INITIAL); + current_file->lineno++; + return T_EOL; + } + YY_BREAK + +case 9: +YY_RULE_SETUP +return T_AND; + YY_BREAK +case 10: +YY_RULE_SETUP +return T_OR; + YY_BREAK +case 11: +YY_RULE_SETUP +return T_OPEN_PAREN; + YY_BREAK +case 12: +YY_RULE_SETUP +return T_CLOSE_PAREN; + YY_BREAK +case 13: +YY_RULE_SETUP +return T_NOT; + YY_BREAK +case 14: +YY_RULE_SETUP +return T_EQUAL; + YY_BREAK +case 15: +YY_RULE_SETUP +return T_UNEQUAL; + YY_BREAK +case 16: +YY_RULE_SETUP +{ + str = zconftext[0]; + new_string(); + BEGIN(STRING); + } + YY_BREAK +case 17: +/* rule 17 can match eol */ +YY_RULE_SETUP +BEGIN(INITIAL); current_file->lineno++; return T_EOL; + YY_BREAK +case 18: +YY_RULE_SETUP +/* ignore */ + YY_BREAK +case 19: +YY_RULE_SETUP +{ + const struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng); + if (id && id->flags & TF_PARAM) { + zconflval.id = id; + return id->token; + } + alloc_string(zconftext, zconfleng); + zconflval.string = text; + return T_WORD; + } + YY_BREAK +case 20: +YY_RULE_SETUP +/* comment */ + YY_BREAK +case 21: +/* rule 21 can match eol */ +YY_RULE_SETUP +current_file->lineno++; + YY_BREAK +case 22: +YY_RULE_SETUP + + YY_BREAK +case YY_STATE_EOF(PARAM): +{ + BEGIN(INITIAL); + } + YY_BREAK + +case 23: +/* rule 23 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up zconftext again */ +YY_RULE_SETUP +{ + append_string(zconftext, zconfleng); + zconflval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK +case 24: +YY_RULE_SETUP +{ + append_string(zconftext, zconfleng); + } + YY_BREAK +case 25: +/* rule 25 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up zconftext again */ +YY_RULE_SETUP +{ + append_string(zconftext + 1, zconfleng - 1); + zconflval.string = text; + return T_WORD_QUOTE; + } + YY_BREAK +case 26: +YY_RULE_SETUP +{ + append_string(zconftext + 1, zconfleng - 1); + } + YY_BREAK +case 27: +YY_RULE_SETUP +{ + if (str == zconftext[0]) { + BEGIN(PARAM); + zconflval.string = text; + return T_WORD_QUOTE; + } else + append_string(zconftext, 1); + } + YY_BREAK +case 28: +/* rule 28 can match eol */ +YY_RULE_SETUP +{ + printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); + current_file->lineno++; + BEGIN(INITIAL); + return T_EOL; + } + YY_BREAK +case YY_STATE_EOF(STRING): +{ + BEGIN(INITIAL); + } + YY_BREAK + +case 29: +YY_RULE_SETUP +{ + ts = 0; + for (i = 0; i < zconfleng; i++) { + if (zconftext[i] == '\t') + ts = (ts & ~7) + 8; + else + ts++; + } + last_ts = ts; + if (first_ts) { + if (ts < first_ts) { + zconf_endhelp(); + return T_HELPTEXT; + } + ts -= first_ts; + while (ts > 8) { + append_string(" ", 8); + ts -= 8; + } + append_string(" ", ts); + } + } + YY_BREAK +case 30: +/* rule 30 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up zconftext again */ +YY_RULE_SETUP +{ + current_file->lineno++; + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK +case 31: +/* rule 31 can match eol */ +YY_RULE_SETUP +{ + current_file->lineno++; + append_string("\n", 1); + } + YY_BREAK +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; + } + YY_BREAK +case YY_STATE_EOF(HELP): +{ + zconf_endhelp(); + return T_HELPTEXT; + } + YY_BREAK + +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(COMMAND): +{ + if (current_file) { + zconf_endfile(); + return T_EOL; + } + fclose(zconfin); + yyterminate(); +} + YY_BREAK +case 33: +YY_RULE_SETUP +YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed zconfin at a new source and called + * zconflex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( zconfwrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * zconftext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of zconflex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + zconfrestart(zconfin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + 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; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + + yy_current_state = yy_nxt[yy_current_state][1]; + yy_is_jam = (yy_current_state <= 0); + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up zconftext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + zconfrestart(zconfin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( zconfwrap( ) ) + return EOF; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve zconftext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void zconfrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + zconfensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + zconf_create_buffer(zconfin,YY_BUF_SIZE ); + } + + zconf_init_buffer(YY_CURRENT_BUFFER,input_file ); + zconf_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * zconfpop_buffer_state(); + * zconfpush_buffer_state(new_buffer); + */ + zconfensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + zconf_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (zconfwrap()) processing, but the only time this flag + * is looked at is after zconfwrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void zconf_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + zconf_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with zconf_create_buffer() + * + */ + void zconf_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + zconffree((void *) b->yy_ch_buf ); + + zconffree((void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a zconfrestart() or at EOF. + */ + static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + zconf_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then zconf_init_buffer was _probably_ + * called from zconfrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void zconf_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + zconf_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + zconfensure_buffer_stack(); + + /* This block is copied from zconf_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from zconf_switch_to_buffer. */ + zconf_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void zconfpop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + zconf_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + zconf_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void zconfensure_buffer_stack (void) +{ + int num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (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; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc + ((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*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + zconf_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to zconflex() will + * scan from a @e copy of @a str. + * @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 + * zconf_scan_bytes() instead. + */ +YY_BUFFER_STATE zconf_scan_string (yyconst char * yystr ) +{ + + return zconf_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE zconf_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) zconfalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = zconf_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up zconftext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + zconftext[zconfleng] = (yy_hold_char); \ + (yy_c_buf_p) = zconftext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + zconfleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int zconfget_lineno (void) +{ + + return zconflineno; +} + +/** Get the input stream. + * + */ +FILE *zconfget_in (void) +{ + return zconfin; +} + +/** Get the output stream. + * + */ +FILE *zconfget_out (void) +{ + return zconfout; +} + +/** Get the length of the current token. + * + */ +int zconfget_leng (void) +{ + return zconfleng; +} + +/** Get the current token. + * + */ + +char *zconfget_text (void) +{ + return zconftext; +} + +/** Set the current line number. + * @param line_number + * + */ +void zconfset_lineno (int line_number ) +{ + + zconflineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see zconf_switch_to_buffer + */ +void zconfset_in (FILE * in_str ) +{ + zconfin = in_str ; +} + +void zconfset_out (FILE * out_str ) +{ + zconfout = out_str ; +} + +int zconfget_debug (void) +{ + return zconf_flex_debug; +} + +void zconfset_debug (int bdebug ) +{ + zconf_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from zconflex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + zconfin = stdin; + zconfout = stdout; +#else + zconfin = (FILE *) 0; + zconfout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * zconflex_init() + */ + return 0; +} + +/* zconflex_destroy is for both reentrant and non-reentrant scanners. */ +int zconflex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + zconf_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + zconfpop_buffer_state(); + } + + /* Destroy the stack itself. */ + zconffree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * zconflex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *zconfalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *zconfrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void zconffree (void * ptr ) +{ + free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +void zconf_starthelp(void) +{ + new_string(); + last_ts = first_ts = 0; + BEGIN(HELP); +} + +static void zconf_endhelp(void) +{ + zconflval.string = text; + BEGIN(INITIAL); +} + +/* + * Try to open specified file with following names: + * ./name + * $(srctree)/name + * The latter is used when srctree is separate from objtree + * when compiling the kernel. + * Return NULL if file is not found. + */ +FILE *zconf_fopen(const char *name) +{ + char *env, fullname[PATH_MAX+1]; + FILE *f; + + f = fopen(name, "r"); + if (!f && name != NULL && name[0] != '/') { + env = getenv(SRCTREE); + if (env) { + sprintf(fullname, "%s/%s", env, name); + f = fopen(fullname, "r"); + } + } + return f; +} + +void zconf_initscan(const char *name) +{ + zconfin = zconf_fopen(name); + if (!zconfin) { + printf("can't find file %s\n", name); + exit(1); + } + + current_buf = xmalloc(sizeof(*current_buf)); + memset(current_buf, 0, sizeof(*current_buf)); + + current_file = file_lookup(name); + current_file->lineno = 1; +} + +void zconf_nextfile(const char *name) +{ + struct file *iter; + struct file *file = file_lookup(name); + struct buffer *buf = xmalloc(sizeof(*buf)); + memset(buf, 0, sizeof(*buf)); + + current_buf->state = YY_CURRENT_BUFFER; + zconfin = zconf_fopen(file->name); + if (!zconfin) { + printf("%s:%d: can't open file \"%s\"\n", + zconf_curname(), zconf_lineno(), file->name); + exit(1); + } + zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE)); + buf->parent = current_buf; + current_buf = buf; + + for (iter = current_file->parent; iter; iter = iter->parent ) { + if (!strcmp(current_file->name,iter->name) ) { + printf("%s:%d: recursive inclusion detected. " + "Inclusion path:\n current file : '%s'\n", + zconf_curname(), zconf_lineno(), + zconf_curname()); + iter = current_file->parent; + while (iter && \ + strcmp(iter->name,current_file->name)) { + printf(" included from: '%s:%d'\n", + iter->name, iter->lineno-1); + iter = iter->parent; + } + if (iter) + printf(" included from: '%s:%d'\n", + iter->name, iter->lineno+1); + exit(1); + } + } + file->lineno = 1; + file->parent = current_file; + current_file = file; +} + +static void zconf_endfile(void) +{ + struct buffer *parent; + + current_file = current_file->parent; + + parent = current_buf->parent; + if (parent) { + fclose(zconfin); + zconf_delete_buffer(YY_CURRENT_BUFFER); + zconf_switch_to_buffer(parent->state); + } + free(current_buf); + current_buf = parent; +} + +int zconf_lineno(void) +{ + return current_pos.lineno; +} + +const char *zconf_curname(void) +{ + return current_pos.file ? current_pos.file->name : ""; +} + diff --git a/buildroot/support/kconfig/zconf.tab.c_shipped b/buildroot/support/kconfig/zconf.tab.c_shipped new file mode 100644 index 0000000..f343030 --- /dev/null +++ b/buildroot/support/kconfig/zconf.tab.c_shipped @@ -0,0 +1,2538 @@ +/* A Bison parser, made by GNU Bison 2.5. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. + + 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 3 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, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.5" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse zconfparse +#define yylex zconflex +#define yyerror zconferror +#define yylval zconflval +#define yychar zconfchar +#define yydebug zconfdebug +#define yynerrs zconfnerrs + + +/* Copy the first part of user declarations. */ + + +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +extern int zconflex(void); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static void zconferror(const char *err); +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); + +struct symbol *symbol_hash[SYMBOL_HASHSIZE]; + +static struct menu *current_menu, *current_entry; + + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + T_MAINMENU = 258, + T_MENU = 259, + T_ENDMENU = 260, + T_SOURCE = 261, + T_CHOICE = 262, + T_ENDCHOICE = 263, + T_COMMENT = 264, + T_CONFIG = 265, + T_MENUCONFIG = 266, + T_HELP = 267, + T_HELPTEXT = 268, + T_IF = 269, + T_ENDIF = 270, + T_DEPENDS = 271, + T_OPTIONAL = 272, + T_PROMPT = 273, + T_TYPE = 274, + T_DEFAULT = 275, + T_SELECT = 276, + T_RANGE = 277, + T_VISIBLE = 278, + T_OPTION = 279, + T_ON = 280, + T_WORD = 281, + T_WORD_QUOTE = 282, + T_UNEQUAL = 283, + T_CLOSE_PAREN = 284, + T_OPEN_PAREN = 285, + T_EOL = 286, + T_OR = 287, + T_AND = 288, + T_EQUAL = 289, + T_NOT = 290 + }; +#endif + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ + + + char *string; + struct file *file; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + const struct kconf_id *id; + + + +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +/* Copy the second part of user declarations. */ + + +/* Include zconf.hash.c here so it can see the token constants. */ +#include "zconf.hash.c" + + + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 11 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 290 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 36 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 50 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 118 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 191 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 290 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 8, 11, 13, 14, 17, 20, + 23, 26, 31, 36, 40, 42, 44, 46, 48, 50, + 52, 54, 56, 58, 60, 62, 64, 66, 68, 72, + 75, 79, 82, 86, 89, 90, 93, 96, 99, 102, + 105, 108, 112, 117, 122, 127, 133, 137, 138, 142, + 143, 146, 150, 153, 155, 159, 160, 163, 166, 169, + 172, 175, 180, 184, 187, 192, 193, 196, 200, 202, + 206, 207, 210, 213, 216, 220, 224, 228, 230, 234, + 235, 238, 241, 244, 248, 252, 255, 258, 261, 262, + 265, 268, 271, 276, 277, 280, 283, 286, 287, 290, + 292, 294, 297, 300, 303, 305, 308, 309, 312, 314, + 318, 322, 326, 329, 333, 337, 339, 341, 342 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 37, 0, -1, 81, 38, -1, 38, -1, 63, 39, + -1, 39, -1, -1, 39, 41, -1, 39, 55, -1, + 39, 67, -1, 39, 80, -1, 39, 26, 1, 31, + -1, 39, 40, 1, 31, -1, 39, 1, 31, -1, + 16, -1, 18, -1, 19, -1, 21, -1, 17, -1, + 22, -1, 20, -1, 23, -1, 31, -1, 61, -1, + 71, -1, 44, -1, 46, -1, 69, -1, 26, 1, + 31, -1, 1, 31, -1, 10, 26, 31, -1, 43, + 47, -1, 11, 26, 31, -1, 45, 47, -1, -1, + 47, 48, -1, 47, 49, -1, 47, 75, -1, 47, + 73, -1, 47, 42, -1, 47, 31, -1, 19, 78, + 31, -1, 18, 79, 82, 31, -1, 20, 83, 82, + 31, -1, 21, 26, 82, 31, -1, 22, 84, 84, + 82, 31, -1, 24, 50, 31, -1, -1, 50, 26, + 51, -1, -1, 34, 79, -1, 7, 85, 31, -1, + 52, 56, -1, 80, -1, 53, 58, 54, -1, -1, + 56, 57, -1, 56, 75, -1, 56, 73, -1, 56, + 31, -1, 56, 42, -1, 18, 79, 82, 31, -1, + 19, 78, 31, -1, 17, 31, -1, 20, 26, 82, + 31, -1, -1, 58, 41, -1, 14, 83, 81, -1, + 80, -1, 59, 62, 60, -1, -1, 62, 41, -1, + 62, 67, -1, 62, 55, -1, 3, 79, 81, -1, + 4, 79, 31, -1, 64, 76, 74, -1, 80, -1, + 65, 68, 66, -1, -1, 68, 41, -1, 68, 67, + -1, 68, 55, -1, 6, 79, 31, -1, 9, 79, + 31, -1, 70, 74, -1, 12, 31, -1, 72, 13, + -1, -1, 74, 75, -1, 74, 31, -1, 74, 42, + -1, 16, 25, 83, 31, -1, -1, 76, 77, -1, + 76, 31, -1, 23, 82, -1, -1, 79, 82, -1, + 26, -1, 27, -1, 5, 31, -1, 8, 31, -1, + 15, 31, -1, 31, -1, 81, 31, -1, -1, 14, + 83, -1, 84, -1, 84, 34, 84, -1, 84, 28, + 84, -1, 30, 83, 29, -1, 35, 83, -1, 83, + 32, 83, -1, 83, 33, 83, -1, 26, -1, 27, + -1, -1, 26, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 103, 103, 103, 105, 105, 107, 109, 110, 111, + 112, 113, 114, 118, 122, 122, 122, 122, 122, 122, + 122, 122, 126, 127, 128, 129, 130, 131, 135, 136, + 142, 150, 156, 164, 174, 176, 177, 178, 179, 180, + 181, 184, 192, 198, 208, 214, 220, 223, 225, 236, + 237, 242, 251, 256, 264, 267, 269, 270, 271, 272, + 273, 276, 282, 293, 299, 309, 311, 316, 324, 332, + 335, 337, 338, 339, 344, 351, 358, 363, 371, 374, + 376, 377, 378, 381, 389, 396, 403, 409, 416, 418, + 419, 420, 423, 431, 433, 434, 437, 444, 446, 451, + 452, 455, 456, 457, 461, 462, 465, 466, 469, 470, + 471, 472, 473, 474, 475, 478, 479, 482, 483 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", + "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", + "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", + "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE", + "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", + "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", + "T_NOT", "$accept", "input", "start", "stmt_list", "option_name", + "common_stmt", "option_error", "config_entry_start", "config_stmt", + "menuconfig_entry_start", "menuconfig_stmt", "config_option_list", + "config_option", "symbol_option", "symbol_option_list", + "symbol_option_arg", "choice", "choice_entry", "choice_end", + "choice_stmt", "choice_option_list", "choice_option", "choice_block", + "if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu", + "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt", + "comment", "comment_stmt", "help_start", "help", "depends_list", + "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt", + "end", "nl", "if_expr", "expr", "symbol", "word_opt", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 36, 37, 37, 38, 38, 39, 39, 39, 39, + 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, + 40, 40, 41, 41, 41, 41, 41, 41, 42, 42, + 43, 44, 45, 46, 47, 47, 47, 47, 47, 47, + 47, 48, 48, 48, 48, 48, 49, 50, 50, 51, + 51, 52, 53, 54, 55, 56, 56, 56, 56, 56, + 56, 57, 57, 57, 57, 58, 58, 59, 60, 61, + 62, 62, 62, 62, 63, 64, 65, 66, 67, 68, + 68, 68, 68, 69, 70, 71, 72, 73, 74, 74, + 74, 74, 75, 76, 76, 76, 77, 78, 78, 79, + 79, 80, 80, 80, 81, 81, 82, 82, 83, 83, + 83, 83, 83, 83, 83, 84, 84, 85, 85 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 1, 2, 1, 0, 2, 2, 2, + 2, 4, 4, 3, 1, 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, 3, 2, 1, 3, 0, 2, 2, 2, 2, + 2, 4, 3, 2, 4, 0, 2, 3, 1, 3, + 0, 2, 2, 2, 3, 3, 3, 1, 3, 0, + 2, 2, 2, 3, 3, 2, 2, 2, 0, 2, + 2, 2, 4, 0, 2, 2, 2, 0, 2, 1, + 1, 2, 2, 2, 1, 2, 0, 2, 1, 3, + 3, 3, 2, 3, 3, 1, 1, 0, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 6, 0, 104, 0, 3, 0, 6, 6, 99, 100, + 0, 1, 0, 0, 0, 0, 117, 0, 0, 0, + 0, 0, 0, 14, 18, 15, 16, 20, 17, 19, + 21, 0, 22, 0, 7, 34, 25, 34, 26, 55, + 65, 8, 70, 23, 93, 79, 9, 27, 88, 24, + 10, 0, 105, 2, 74, 13, 0, 101, 0, 118, + 0, 102, 0, 0, 0, 115, 116, 0, 0, 0, + 108, 103, 0, 0, 0, 0, 0, 0, 0, 88, + 0, 0, 75, 83, 51, 84, 30, 32, 0, 112, + 0, 0, 67, 0, 0, 11, 12, 0, 0, 0, + 0, 97, 0, 0, 0, 47, 0, 40, 39, 35, + 36, 0, 38, 37, 0, 0, 97, 0, 59, 60, + 56, 58, 57, 66, 54, 53, 71, 73, 69, 72, + 68, 106, 95, 0, 94, 80, 82, 78, 81, 77, + 90, 91, 89, 111, 113, 114, 110, 109, 29, 86, + 0, 106, 0, 106, 106, 106, 0, 0, 0, 87, + 63, 106, 0, 106, 0, 96, 0, 0, 41, 98, + 0, 0, 106, 49, 46, 28, 0, 62, 0, 107, + 92, 42, 43, 44, 0, 0, 48, 61, 64, 45, + 50 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 3, 4, 5, 33, 34, 108, 35, 36, 37, + 38, 74, 109, 110, 157, 186, 39, 40, 124, 41, + 76, 120, 77, 42, 128, 43, 78, 6, 44, 45, + 137, 46, 80, 47, 48, 49, 111, 112, 81, 113, + 79, 134, 152, 153, 50, 7, 165, 69, 70, 60 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -90 +static const yytype_int16 yypact[] = +{ + 4, 42, -90, 96, -90, 111, -90, 15, -90, -90, + 75, -90, 82, 42, 104, 42, 110, 107, 42, 115, + 125, -4, 121, -90, -90, -90, -90, -90, -90, -90, + -90, 162, -90, 163, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, 139, -90, -90, 138, -90, 142, -90, 143, -90, + 152, -90, 164, 167, 168, -90, -90, -4, -4, 77, + -18, -90, 177, 185, 33, 71, 195, 247, 236, -2, + 236, 171, -90, -90, -90, -90, -90, -90, 41, -90, + -4, -4, 138, 97, 97, -90, -90, 186, 187, 194, + 42, 42, -4, 196, 97, -90, 219, -90, -90, -90, + -90, 210, -90, -90, 204, 42, 42, 199, -90, -90, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, 222, -90, 223, -90, -90, -90, -90, -90, -90, + -90, -90, -90, -90, 215, -90, -90, -90, -90, -90, + -4, 222, 228, 222, -5, 222, 97, 35, 229, -90, + -90, 222, 232, 222, -4, -90, 135, 233, -90, -90, + 234, 235, 222, 240, -90, -90, 237, -90, 239, -13, + -90, -90, -90, -90, 244, 42, -90, -90, -90, -90, + -90 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -90, -90, 269, 271, -90, 23, -70, -90, -90, -90, + -90, 243, -90, -90, -90, -90, -90, -90, -90, -48, + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + -90, -20, -90, -90, -90, -90, -90, 206, 205, -68, + -90, -90, 169, -1, 27, -7, 118, -66, -89, -90 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -86 +static const yytype_int16 yytable[] = +{ + 10, 88, 89, 54, 146, 147, 119, 1, 122, 164, + 93, 141, 56, 142, 58, 156, 94, 62, 1, 90, + 91, 131, 65, 66, 144, 145, 67, 90, 91, 132, + 127, 68, 136, -31, 97, 2, 154, -31, -31, -31, + -31, -31, -31, -31, -31, 98, 52, -31, -31, 99, + -31, 100, 101, 102, 103, 104, -31, 105, 129, 106, + 138, 173, 92, 141, 107, 142, 174, 172, 8, 9, + 143, -33, 97, 90, 91, -33, -33, -33, -33, -33, + -33, -33, -33, 98, 166, -33, -33, 99, -33, 100, + 101, 102, 103, 104, -33, 105, 11, 106, 179, 151, + 123, 126, 107, 135, 125, 130, 2, 139, 2, 90, + 91, -5, 12, 55, 161, 13, 14, 15, 16, 17, + 18, 19, 20, 65, 66, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 57, 59, 31, 61, -4, + 12, 63, 32, 13, 14, 15, 16, 17, 18, 19, + 20, 64, 71, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 72, 73, 31, 180, 90, 91, 52, + 32, -85, 97, 82, 83, -85, -85, -85, -85, -85, + -85, -85, -85, 84, 190, -85, -85, 99, -85, -85, + -85, -85, -85, -85, -85, 85, 97, 106, 86, 87, + -52, -52, 140, -52, -52, -52, -52, 98, 95, -52, + -52, 99, 114, 115, 116, 117, 96, 148, 149, 150, + 158, 106, 155, 159, 97, 163, 118, -76, -76, -76, + -76, -76, -76, -76, -76, 160, 164, -76, -76, 99, + 13, 14, 15, 16, 17, 18, 19, 20, 91, 106, + 21, 22, 14, 15, 140, 17, 18, 19, 20, 168, + 175, 21, 22, 177, 181, 182, 183, 32, 187, 167, + 188, 169, 170, 171, 185, 189, 53, 51, 32, 176, + 75, 178, 121, 0, 133, 162, 0, 0, 0, 0, + 184 +}; + +#define yypact_value_is_default(yystate) \ + ((yystate) == (-90)) + +#define yytable_value_is_error(yytable_value) \ + YYID (0) + +static const yytype_int16 yycheck[] = +{ + 1, 67, 68, 10, 93, 94, 76, 3, 76, 14, + 28, 81, 13, 81, 15, 104, 34, 18, 3, 32, + 33, 23, 26, 27, 90, 91, 30, 32, 33, 31, + 78, 35, 80, 0, 1, 31, 102, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 31, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 78, 26, + 80, 26, 69, 133, 31, 133, 31, 156, 26, 27, + 29, 0, 1, 32, 33, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 150, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 0, 26, 164, 100, + 77, 78, 31, 80, 77, 78, 31, 80, 31, 32, + 33, 0, 1, 31, 115, 4, 5, 6, 7, 8, + 9, 10, 11, 26, 27, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 31, 26, 26, 31, 0, + 1, 26, 31, 4, 5, 6, 7, 8, 9, 10, + 11, 26, 31, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 1, 1, 26, 31, 32, 33, 31, + 31, 0, 1, 31, 31, 4, 5, 6, 7, 8, + 9, 10, 11, 31, 185, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 31, 1, 26, 31, 31, + 5, 6, 31, 8, 9, 10, 11, 12, 31, 14, + 15, 16, 17, 18, 19, 20, 31, 31, 31, 25, + 1, 26, 26, 13, 1, 26, 31, 4, 5, 6, + 7, 8, 9, 10, 11, 31, 14, 14, 15, 16, + 4, 5, 6, 7, 8, 9, 10, 11, 33, 26, + 14, 15, 5, 6, 31, 8, 9, 10, 11, 31, + 31, 14, 15, 31, 31, 31, 31, 31, 31, 151, + 31, 153, 154, 155, 34, 31, 7, 6, 31, 161, + 37, 163, 76, -1, 79, 116, -1, -1, -1, -1, + 172 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 3, 31, 37, 38, 39, 63, 81, 26, 27, + 79, 0, 1, 4, 5, 6, 7, 8, 9, 10, + 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 26, 31, 40, 41, 43, 44, 45, 46, 52, + 53, 55, 59, 61, 64, 65, 67, 69, 70, 71, + 80, 39, 31, 38, 81, 31, 79, 31, 79, 26, + 85, 31, 79, 26, 26, 26, 27, 30, 35, 83, + 84, 31, 1, 1, 47, 47, 56, 58, 62, 76, + 68, 74, 31, 31, 31, 31, 31, 31, 83, 83, + 32, 33, 81, 28, 34, 31, 31, 1, 12, 16, + 18, 19, 20, 21, 22, 24, 26, 31, 42, 48, + 49, 72, 73, 75, 17, 18, 19, 20, 31, 42, + 57, 73, 75, 41, 54, 80, 41, 55, 60, 67, + 80, 23, 31, 74, 77, 41, 55, 66, 67, 80, + 31, 42, 75, 29, 83, 83, 84, 84, 31, 31, + 25, 79, 78, 79, 83, 26, 84, 50, 1, 13, + 31, 79, 78, 26, 14, 82, 83, 82, 31, 82, + 82, 82, 84, 26, 31, 31, 82, 31, 82, 83, + 31, 31, 31, 31, 82, 34, 51, 31, 31, 31, + 79 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ + +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* This macro is provided for backward compatibility. */ + +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = 0; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + case 53: /* "choice_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + case 59: /* "if_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + case 65: /* "menu_entry" */ + + { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno); + if (current_menu == (yyvaluep->menu)) + menu_end_menu(); +}; + + break; + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 10: + + { zconf_error("unexpected end statement"); } + break; + + case 11: + + { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); } + break; + + case 12: + + { + zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name); +} + break; + + case 13: + + { zconf_error("invalid statement"); } + break; + + case 28: + + { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); } + break; + + case 29: + + { zconf_error("invalid option"); } + break; + + case 30: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); +} + break; + + case 31: + + { + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +} + break; + + case 32: + + { + struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); +} + break; + + case 33: + + { + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +} + break; + + case 41: + + { + menu_set_type((yyvsp[(1) - (3)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (3)].id)->stype); +} + break; + + case 42: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +} + break; + + case 43: + + { + menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr)); + if ((yyvsp[(1) - (4)].id)->stype != S_UNKNOWN) + menu_set_type((yyvsp[(1) - (4)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (4)].id)->stype); +} + break; + + case 44: + + { + menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); +} + break; + + case 45: + + { + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr)); + printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); +} + break; + + case 48: + + { + const struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string))); + if (id && id->flags & TF_OPTION) + menu_add_option(id->token, (yyvsp[(3) - (3)].string)); + else + zconfprint("warning: ignoring unknown option %s", (yyvsp[(2) - (3)].string)); + free((yyvsp[(2) - (3)].string)); +} + break; + + case 49: + + { (yyval.string) = NULL; } + break; + + case 50: + + { (yyval.string) = (yyvsp[(2) - (2)].string); } + break; + + case 51: + + { + 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()); +} + break; + + case 52: + + { + (yyval.menu) = menu_add_menu(); +} + break; + + case 53: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 61: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +} + break; + + case 62: + + { + if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) { + menu_set_type((yyvsp[(1) - (3)].id)->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + (yyvsp[(1) - (3)].id)->stype); + } else + YYERROR; +} + break; + + case 63: + + { + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); +} + break; + + case 64: + + { + if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) { + menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:default\n", + zconf_curname(), zconf_lineno()); + } else + YYERROR; +} + break; + + case 67: + + { + printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + menu_add_entry(NULL); + menu_add_dep((yyvsp[(2) - (3)].expr)); + (yyval.menu) = menu_add_menu(); +} + break; + + case 68: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 74: + + { + menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL); +} + break; + + case 75: + + { + menu_add_entry(NULL); + menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); +} + break; + + case 76: + + { + (yyval.menu) = menu_add_menu(); +} + break; + + case 77: + + { + if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + } +} + break; + + case 83: + + { + printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); + zconf_nextfile((yyvsp[(2) - (3)].string)); +} + break; + + case 84: + + { + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, (yyvsp[(2) - (3)].string), NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); +} + break; + + case 85: + + { + menu_end_entry(); +} + break; + + case 86: + + { + printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + zconf_starthelp(); +} + break; + + case 87: + + { + current_entry->help = (yyvsp[(2) - (2)].string); +} + break; + + case 92: + + { + menu_add_dep((yyvsp[(3) - (4)].expr)); + printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); +} + break; + + case 96: + + { + menu_add_visibility((yyvsp[(2) - (2)].expr)); +} + break; + + case 98: + + { + menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr)); +} + break; + + case 101: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 102: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 103: + + { (yyval.id) = (yyvsp[(1) - (2)].id); } + break; + + case 106: + + { (yyval.expr) = NULL; } + break; + + case 107: + + { (yyval.expr) = (yyvsp[(2) - (2)].expr); } + break; + + case 108: + + { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); } + break; + + case 109: + + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } + break; + + case 110: + + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); } + break; + + case 111: + + { (yyval.expr) = (yyvsp[(2) - (3)].expr); } + break; + + case 112: + + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); } + break; + + case 113: + + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } + break; + + case 114: + + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); } + break; + + case 115: + + { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); } + break; + + case 116: + + { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); } + break; + + case 117: + + { (yyval.string) = NULL; } + break; + + + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined(yyoverflow) || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + + + + +void conf_parse(const char *name) +{ + struct symbol *sym; + int i; + + zconf_initscan(name); + + sym_init(); + _menu_init(); + rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; + zconfparse(); + if (zconfnerrs) + exit(1); + if (!modules_sym) + modules_sym = sym_find( "n" ); + + rootmenu.prompt->text = _(rootmenu.prompt->text); + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); + + menu_finalize(&rootmenu); + for_all_symbols(i, sym) { + if (sym_check_deps(sym)) + zconfnerrs++; + } + if (zconfnerrs) + exit(1); + sym_set_change_count(1); +} + +static const char *zconf_tokenname(int token) +{ + switch (token) { + case T_MENU: return "menu"; + case T_ENDMENU: return "endmenu"; + case T_CHOICE: return "choice"; + case T_ENDCHOICE: return "endchoice"; + case T_IF: return "if"; + case T_ENDIF: return "endif"; + case T_DEPENDS: return "depends"; + case T_VISIBLE: return "visible"; + } + return ""; +} + +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +{ + if (id->token != endtoken) { + zconf_error("unexpected '%s' within %s block", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + if (current_menu->file != current_file) { + zconf_error("'%s' in different file than '%s'", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->file->name, current_menu->lineno, + zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + zconfnerrs++; + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconferror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" boolean\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} + +#include "zconf.lex.c" +#include "util.c" +#include "confdata.c" +#include "expr.c" +#include "symbol.c" +#include "menu.c" + diff --git a/buildroot/support/kconfig/zconf.y b/buildroot/support/kconfig/zconf.y new file mode 100644 index 0000000..08ac041 --- /dev/null +++ b/buildroot/support/kconfig/zconf.y @@ -0,0 +1,733 @@ +%{ +/* + * Copyright (C) 2002 Roman Zippel + * Released under the terms of the GNU GPL v2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include "lkc.h" + +#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt) + +#define PRINTD 0x0001 +#define DEBUG_PARSE 0x0002 + +int cdebug = PRINTD; + +extern int zconflex(void); +static void zconfprint(const char *err, ...); +static void zconf_error(const char *err, ...); +static void zconferror(const char *err); +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken); + +struct symbol *symbol_hash[SYMBOL_HASHSIZE]; + +static struct menu *current_menu, *current_entry; + +%} +%expect 30 + +%union +{ + char *string; + struct file *file; + struct symbol *symbol; + struct expr *expr; + struct menu *menu; + const struct kconf_id *id; +} + +%token T_MAINMENU +%token T_MENU +%token T_ENDMENU +%token T_SOURCE +%token T_CHOICE +%token T_ENDCHOICE +%token T_COMMENT +%token T_CONFIG +%token T_MENUCONFIG +%token T_HELP +%token T_HELPTEXT +%token T_IF +%token T_ENDIF +%token T_DEPENDS +%token T_OPTIONAL +%token T_PROMPT +%token T_TYPE +%token T_DEFAULT +%token T_SELECT +%token T_RANGE +%token T_VISIBLE +%token T_OPTION +%token T_ON +%token T_WORD +%token T_WORD_QUOTE +%token T_UNEQUAL +%token T_CLOSE_PAREN +%token T_OPEN_PAREN +%token T_EOL + +%left T_OR +%left T_AND +%left T_EQUAL T_UNEQUAL +%nonassoc T_NOT + +%type prompt +%type symbol +%type expr +%type if_expr +%type end +%type option_name +%type if_entry menu_entry choice_entry +%type symbol_option_arg word_opt + +%destructor { + fprintf(stderr, "%s:%d: missing end statement for this entry\n", + $$->file->name, $$->lineno); + if (current_menu == $$) + menu_end_menu(); +} if_entry menu_entry choice_entry + +%{ +/* Include zconf.hash.c here so it can see the token constants. */ +#include "zconf.hash.c" +%} + +%% +input: nl start | start; + +start: mainmenu_stmt stmt_list | stmt_list; + +stmt_list: + /* empty */ + | stmt_list common_stmt + | stmt_list choice_stmt + | stmt_list menu_stmt + | stmt_list end { zconf_error("unexpected end statement"); } + | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } + | stmt_list option_name error T_EOL +{ + zconf_error("unexpected option \"%s\"", kconf_id_strings + $2->name); +} + | stmt_list error T_EOL { zconf_error("invalid statement"); } +; + +option_name: + T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE +; + +common_stmt: + T_EOL + | if_stmt + | comment_stmt + | config_stmt + | menuconfig_stmt + | source_stmt +; + +option_error: + T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); } + | error T_EOL { zconf_error("invalid option"); } +; + + +/* config/menuconfig entry */ + +config_entry_start: T_CONFIG T_WORD T_EOL +{ + struct symbol *sym = sym_lookup($2, 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2); +}; + +config_stmt: config_entry_start config_option_list +{ + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +}; + +menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL +{ + struct symbol *sym = sym_lookup($2, 0); + sym->flags |= SYMBOL_OPTIONAL; + menu_add_entry(sym); + printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2); +}; + +menuconfig_stmt: menuconfig_entry_start config_option_list +{ + if (current_entry->prompt) + current_entry->prompt->type = P_MENU; + else + zconfprint("warning: menuconfig statement without prompt"); + menu_end_entry(); + printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); +}; + +config_option_list: + /* empty */ + | config_option_list config_option + | config_option_list symbol_option + | config_option_list depends + | config_option_list help + | config_option_list option_error + | config_option_list T_EOL +; + +config_option: T_TYPE prompt_stmt_opt T_EOL +{ + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); +}; + +config_option: T_PROMPT prompt if_expr T_EOL +{ + menu_add_prompt(P_PROMPT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_DEFAULT expr if_expr T_EOL +{ + menu_add_expr(P_DEFAULT, $2, $3); + if ($1->stype != S_UNKNOWN) + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:default(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); +}; + +config_option: T_SELECT T_WORD if_expr T_EOL +{ + menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3); + printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno()); +}; + +config_option: T_RANGE symbol symbol if_expr T_EOL +{ + menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4); + printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno()); +}; + +symbol_option: T_OPTION symbol_option_list T_EOL +; + +symbol_option_list: + /* empty */ + | symbol_option_list T_WORD symbol_option_arg +{ + const struct kconf_id *id = kconf_id_lookup($2, strlen($2)); + if (id && id->flags & TF_OPTION) + menu_add_option(id->token, $3); + else + zconfprint("warning: ignoring unknown option %s", $2); + free($2); +}; + +symbol_option_arg: + /* empty */ { $$ = NULL; } + | T_EQUAL prompt { $$ = $2; } +; + +/* choice entry */ + +choice: T_CHOICE word_opt T_EOL +{ + 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()); +}; + +choice_entry: choice choice_option_list +{ + $$ = menu_add_menu(); +}; + +choice_end: end +{ + if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); + } +}; + +choice_stmt: choice_entry choice_block choice_end +; + +choice_option_list: + /* empty */ + | choice_option_list choice_option + | choice_option_list depends + | choice_option_list help + | choice_option_list T_EOL + | choice_option_list option_error +; + +choice_option: T_PROMPT prompt if_expr T_EOL +{ + menu_add_prompt(P_PROMPT, $2, $3); + printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); +}; + +choice_option: T_TYPE prompt_stmt_opt T_EOL +{ + if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) { + menu_set_type($1->stype); + printd(DEBUG_PARSE, "%s:%d:type(%u)\n", + zconf_curname(), zconf_lineno(), + $1->stype); + } else + YYERROR; +}; + +choice_option: T_OPTIONAL T_EOL +{ + current_entry->sym->flags |= SYMBOL_OPTIONAL; + printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); +}; + +choice_option: T_DEFAULT T_WORD if_expr T_EOL +{ + if ($1->stype == S_UNKNOWN) { + menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3); + printd(DEBUG_PARSE, "%s:%d:default\n", + zconf_curname(), zconf_lineno()); + } else + YYERROR; +}; + +choice_block: + /* empty */ + | choice_block common_stmt +; + +/* if entry */ + +if_entry: T_IF expr nl +{ + printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); + menu_add_entry(NULL); + menu_add_dep($2); + $$ = menu_add_menu(); +}; + +if_end: end +{ + if (zconf_endtoken($1, T_IF, T_ENDIF)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); + } +}; + +if_stmt: if_entry if_block if_end +; + +if_block: + /* empty */ + | if_block common_stmt + | if_block menu_stmt + | if_block choice_stmt +; + +/* mainmenu entry */ + +mainmenu_stmt: T_MAINMENU prompt nl +{ + menu_add_prompt(P_MENU, $2, NULL); +}; + +/* menu entry */ + +menu: T_MENU prompt T_EOL +{ + menu_add_entry(NULL); + menu_add_prompt(P_MENU, $2, NULL); + printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); +}; + +menu_entry: menu visibility_list depends_list +{ + $$ = menu_add_menu(); +}; + +menu_end: end +{ + if (zconf_endtoken($1, T_MENU, T_ENDMENU)) { + menu_end_menu(); + printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); + } +}; + +menu_stmt: menu_entry menu_block menu_end +; + +menu_block: + /* empty */ + | menu_block common_stmt + | menu_block menu_stmt + | menu_block choice_stmt +; + +source_stmt: T_SOURCE prompt T_EOL +{ + printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); + zconf_nextfile($2); +}; + +/* comment entry */ + +comment: T_COMMENT prompt T_EOL +{ + menu_add_entry(NULL); + menu_add_prompt(P_COMMENT, $2, NULL); + printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); +}; + +comment_stmt: comment depends_list +{ + menu_end_entry(); +}; + +/* help option */ + +help_start: T_HELP T_EOL +{ + printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); + zconf_starthelp(); +}; + +help: help_start T_HELPTEXT +{ + current_entry->help = $2; +}; + +/* depends option */ + +depends_list: + /* empty */ + | depends_list depends + | depends_list T_EOL + | depends_list option_error +; + +depends: T_DEPENDS T_ON expr T_EOL +{ + menu_add_dep($3); + printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); +}; + +/* visibility option */ + +visibility_list: + /* empty */ + | visibility_list visible + | visibility_list T_EOL +; + +visible: T_VISIBLE if_expr +{ + menu_add_visibility($2); +}; + +/* prompt statement */ + +prompt_stmt_opt: + /* empty */ + | prompt if_expr +{ + menu_add_prompt(P_PROMPT, $1, $2); +}; + +prompt: T_WORD + | T_WORD_QUOTE +; + +end: T_ENDMENU T_EOL { $$ = $1; } + | T_ENDCHOICE T_EOL { $$ = $1; } + | T_ENDIF T_EOL { $$ = $1; } +; + +nl: + T_EOL + | nl T_EOL +; + +if_expr: /* empty */ { $$ = NULL; } + | T_IF expr { $$ = $2; } +; + +expr: symbol { $$ = expr_alloc_symbol($1); } + | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); } + | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); } + | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; } + | T_NOT expr { $$ = expr_alloc_one(E_NOT, $2); } + | expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); } + | expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); } +; + +symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); } + | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); } +; + +word_opt: /* empty */ { $$ = NULL; } + | T_WORD + +%% + +void conf_parse(const char *name) +{ + struct symbol *sym; + int i; + + zconf_initscan(name); + + sym_init(); + _menu_init(); + rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL); + + if (getenv("ZCONF_DEBUG")) + zconfdebug = 1; + zconfparse(); + if (zconfnerrs) + exit(1); + if (!modules_sym) + modules_sym = sym_find( "n" ); + + rootmenu.prompt->text = _(rootmenu.prompt->text); + rootmenu.prompt->text = sym_expand_string_value(rootmenu.prompt->text); + + menu_finalize(&rootmenu); + for_all_symbols(i, sym) { + if (sym_check_deps(sym)) + zconfnerrs++; + } + if (zconfnerrs) + exit(1); + sym_set_change_count(1); +} + +static const char *zconf_tokenname(int token) +{ + switch (token) { + case T_MENU: return "menu"; + case T_ENDMENU: return "endmenu"; + case T_CHOICE: return "choice"; + case T_ENDCHOICE: return "endchoice"; + case T_IF: return "if"; + case T_ENDIF: return "endif"; + case T_DEPENDS: return "depends"; + case T_VISIBLE: return "visible"; + } + return ""; +} + +static bool zconf_endtoken(const struct kconf_id *id, int starttoken, int endtoken) +{ + if (id->token != endtoken) { + zconf_error("unexpected '%s' within %s block", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + if (current_menu->file != current_file) { + zconf_error("'%s' in different file than '%s'", + kconf_id_strings + id->name, zconf_tokenname(starttoken)); + fprintf(stderr, "%s:%d: location of the '%s'\n", + current_menu->file->name, current_menu->lineno, + zconf_tokenname(starttoken)); + zconfnerrs++; + return false; + } + return true; +} + +static void zconfprint(const char *err, ...) +{ + va_list ap; + + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconf_error(const char *err, ...) +{ + va_list ap; + + zconfnerrs++; + fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); + va_start(ap, err); + vfprintf(stderr, err, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static void zconferror(const char *err) +{ + fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err); +} + +static void print_quoted_string(FILE *out, const char *str) +{ + const char *p; + int len; + + putc('"', out); + while ((p = strchr(str, '"'))) { + len = p - str; + if (len) + fprintf(out, "%.*s", len, str); + fputs("\\\"", out); + str = p + 1; + } + fputs(str, out); + putc('"', out); +} + +static void print_symbol(FILE *out, struct menu *menu) +{ + struct symbol *sym = menu->sym; + struct property *prop; + + if (sym_is_choice(sym)) + fprintf(out, "\nchoice\n"); + else + fprintf(out, "\nconfig %s\n", sym->name); + switch (sym->type) { + case S_BOOLEAN: + fputs(" boolean\n", out); + break; + case S_TRISTATE: + fputs(" tristate\n", out); + break; + case S_STRING: + fputs(" string\n", out); + break; + case S_INT: + fputs(" integer\n", out); + break; + case S_HEX: + fputs(" hex\n", out); + break; + default: + fputs(" ???\n", out); + break; + } + for (prop = sym->prop; prop; prop = prop->next) { + if (prop->menu != menu) + continue; + switch (prop->type) { + case P_PROMPT: + fputs(" prompt ", out); + print_quoted_string(out, prop->text); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_DEFAULT: + fputs( " default ", out); + expr_fprint(prop->expr, out); + if (!expr_is_yes(prop->visible.expr)) { + fputs(" if ", out); + expr_fprint(prop->visible.expr, out); + } + fputc('\n', out); + break; + case P_CHOICE: + fputs(" #choice value\n", out); + break; + case P_SELECT: + fputs( " select ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_RANGE: + fputs( " range ", out); + expr_fprint(prop->expr, out); + fputc('\n', out); + break; + case P_MENU: + fputs( " menu ", out); + print_quoted_string(out, prop->text); + fputc('\n', out); + break; + default: + fprintf(out, " unknown prop %d!\n", prop->type); + break; + } + } + if (menu->help) { + int len = strlen(menu->help); + while (menu->help[--len] == '\n') + menu->help[len] = 0; + fprintf(out, " help\n%s\n", menu->help); + } +} + +void zconfdump(FILE *out) +{ + struct property *prop; + struct symbol *sym; + struct menu *menu; + + menu = rootmenu.list; + while (menu) { + if ((sym = menu->sym)) + print_symbol(out, menu); + else if ((prop = menu->prompt)) { + switch (prop->type) { + case P_COMMENT: + fputs("\ncomment ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + case P_MENU: + fputs("\nmenu ", out); + print_quoted_string(out, prop->text); + fputs("\n", out); + break; + default: + ; + } + if (!expr_is_yes(prop->visible.expr)) { + fputs(" depends ", out); + expr_fprint(prop->visible.expr, out); + fputc('\n', out); + } + } + + if (menu->list) + menu = menu->list; + else if (menu->next) + menu = menu->next; + else while ((menu = menu->parent)) { + if (menu->prompt && menu->prompt->type == P_MENU) + fputs("\nendmenu\n", out); + if (menu->next) { + menu = menu->next; + break; + } + } + } +} + +#include "zconf.lex.c" +#include "util.c" +#include "confdata.c" +#include "expr.c" +#include "symbol.c" +#include "menu.c" diff --git a/buildroot/support/legal-info/README.header b/buildroot/support/legal-info/README.header new file mode 100644 index 0000000..d3bdf71 --- /dev/null +++ b/buildroot/support/legal-info/README.header @@ -0,0 +1,31 @@ +Most of the packages that were used by Buildroot to produce the image files, +including Buildroot itself, have open-source licenses. It is your +responsibility to comply to the requirements of these licenses. +To make this easier for you, Buildroot collected in this directory some +material you may need to get it done. + +This material is composed of the following items. + * The scripts used to control compilation of the packages and the generation + of image files, i.e. the Buildroot sources. + Note: this has not been saved due to technical limitations, you must + collect it manually. + * The Buildroot configuration file; this has been saved in buildroot.config. + * The toolchain (cross-compiler and related tools) used to generate all the + compiled programs. + Note: this may have not been saved due to technical limitations, you may + need to collect it manually. + * The original source code for all packages; this has been saved in the + sources/ subdirectory (except for the non-redistributable packages, which + have not been saved). Patches that were applied are also saved, along + with a file named 'series' that lists the patches in the order they were + applied. Patches are under the same license as the files that they modify + in the original package. + Note: Buildroot applies additional patches to Libtool scripts of + autotools-based packages. These patches can be found under + support/libtool in the Buildroot source and, due to technical + limitations, are not saved with the package sources. You may need + to collect them manually. + * A manifest file listing the configured packages and related information. + * The license text of the packages; they have been saved in the licenses/ + subdirectory. + diff --git a/buildroot/support/legal-info/README.warnings-header b/buildroot/support/legal-info/README.warnings-header new file mode 100644 index 0000000..cd08290 --- /dev/null +++ b/buildroot/support/legal-info/README.warnings-header @@ -0,0 +1,4 @@ +Due to technical limitations or lack of license definition in the package +makefile, some of the material listed above could not been saved, as the +following list details. + diff --git a/buildroot/support/legal-info/buildroot.hash b/buildroot/support/legal-info/buildroot.hash new file mode 100644 index 0000000..1b62dbe --- /dev/null +++ b/buildroot/support/legal-info/buildroot.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 9755181e27175cb3510b4da8629caa406fb355a19aa8e7d55f06bf8ab33323c4 COPYING diff --git a/buildroot/support/libtool/buildroot-libtool-v1.5.patch b/buildroot/support/libtool/buildroot-libtool-v1.5.patch new file mode 100644 index 0000000..cdd9c5a --- /dev/null +++ b/buildroot/support/libtool/buildroot-libtool-v1.5.patch @@ -0,0 +1,91 @@ +--- a/ltmain.sh 2014-07-31 10:43:01.634568799 -0300 ++++ b/ltmain.sh 2014-07-31 10:44:14.032018999 -0300 +@@ -226,8 +226,9 @@ + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" +- $echo "$modename: specify a tag with \`--tag'" 1>&2 +- exit $EXIT_FAILURE ++ $echo "$modename: defaulting to \`CC'" ++ $echo "$modename: if this is not correct, specify a tag with \`--tag'" ++# exit $EXIT_FAILURE + # else + # $echo "$modename: using $tagname tagged configuration" + fi +@@ -247,6 +248,11 @@ + arg="$1" + shift + ++ # Make -static behave as -all-static ++ case $arg in ++ -static) arg="-all-static" ;; ++ esac ++ + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; +@@ -1238,7 +1244,8 @@ + prevarg="$arg" + + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" +@@ -2146,8 +2153,14 @@ + absdir="$abs_ladir" + libdir="$abs_ladir" + else +- dir="$libdir" +- absdir="$libdir" ++ # Adding 'libdir' from the .la file to our library search paths ++ # breaks crosscompilation horribly. We cheat here and don't add ++ # it, instead adding the path where we found the .la. -CL ++ dir="$abs_ladir" ++ absdir="$abs_ladir" ++ libdir="$abs_ladir" ++ #dir="$libdir" ++ #absdir="$libdir" + fi + else + dir="$ladir/$objdir" +@@ -2272,7 +2285,7 @@ + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" +- need_relink=yes ++ need_relink=no + fi + # This is a shared library + +@@ -5169,6 +5182,10 @@ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` +@@ -5487,10 +5504,13 @@ + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- if test "$inst_prefix_dir" = "$destdir"; then +- $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 +- exit $EXIT_FAILURE +- fi ++ # ++ # This breaks install into our staging area. -PB ++ # ++ # if test "$inst_prefix_dir" = "$destdir"; then ++ # $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 ++ # exit $EXIT_FAILURE ++ # fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. diff --git a/buildroot/support/libtool/buildroot-libtool-v2.2.patch b/buildroot/support/libtool/buildroot-libtool-v2.2.patch new file mode 100644 index 0000000..8bb7826 --- /dev/null +++ b/buildroot/support/libtool/buildroot-libtool-v2.2.patch @@ -0,0 +1,106 @@ +--- a/ltmain.sh 2010-06-09 15:08:53.000000000 +0200 ++++ b/ltmain.sh 2014-07-30 22:33:41.176710372 +0200 +@@ -1214,8 +1214,8 @@ + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then +- func_echo "unable to infer tagged configuration" +- func_fatal_error "specify a tag with \`--tag'" ++ func_echo "defaulting to \`CC'" ++ func_echo "if this is not correct, specify a tag with \`--tag'" + # else + # func_verbose "using $tagname tagged configuration" + fi +@@ -2239,8 +2239,11 @@ + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- test "$inst_prefix_dir" = "$destdir" && \ +- func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" ++ # ++ # This breaks install into our staging area. -PB ++ # ++ # test "$inst_prefix_dir" = "$destdir" && \ ++ # func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. +@@ -4429,7 +4432,8 @@ + ;; + -all-static | -static | -static-libtool-libs) + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi +@@ -4438,12 +4442,6 @@ + fi + prefer_static_libs=yes + ;; +- -static) +- if test -z "$pic_flag" && test -n "$link_static_flag"; then +- dlopen_self=$dlopen_self_static +- fi +- prefer_static_libs=built +- ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static +@@ -4726,7 +4724,8 @@ + prevarg="$arg" + + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" +@@ -4995,7 +4994,7 @@ + continue + ;; + +- -static | -static-libtool-libs) ++ -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects +@@ -5739,8 +5738,14 @@ + absdir="$abs_ladir" + libdir="$abs_ladir" + else +- dir="$libdir" +- absdir="$libdir" ++ # Adding 'libdir' from the .la file to our library search paths ++ # breaks crosscompilation horribly. We cheat here and don't add ++ # it, instead adding the path where we found the .la. -CL ++ dir="$abs_ladir" ++ absdir="$abs_ladir" ++ libdir="$abs_ladir" ++ #dir="$libdir" ++ #absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else +@@ -5891,7 +5896,7 @@ + *) + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" +- need_relink=yes ++ need_relink=no + fi + ;; + esac +@@ -8373,6 +8378,10 @@ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + func_basename "$deplib" diff --git a/buildroot/support/libtool/buildroot-libtool-v2.4.4.patch b/buildroot/support/libtool/buildroot-libtool-v2.4.4.patch new file mode 100644 index 0000000..bcdf30c --- /dev/null +++ b/buildroot/support/libtool/buildroot-libtool-v2.4.4.patch @@ -0,0 +1,95 @@ +Libtool fixes for cross-compilation, many past contributors/authors. +Update based on libtool-2.4.4, useful for 2.4.3 as well but not 2.4.2. + +Signed-off-by: Gustavo Zacarias + +--- a/ltmain.sh 2014-12-16 09:51:23.068441045 -0300 ++++ b/ltmain.sh 2014-12-16 09:57:10.509430339 -0300 +@@ -2687,8 +2687,8 @@ + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then +- func_echo "unable to infer tagged configuration" +- func_fatal_error "specify a tag with '--tag'" ++ func_echo "defaulting to \`CC'" ++ func_echo "if this is not correct, specify a tag with \`--tag'" + # else + # func_verbose "using $tagname tagged configuration" + fi +@@ -4277,8 +4277,12 @@ + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- test "$inst_prefix_dir" = "$destdir" && \ +- func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" ++ ++ # ++ # This breaks install into our staging area. -PB ++ # ++ #test "$inst_prefix_dir" = "$destdir" && \ ++ # func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. +@@ -6550,7 +6554,8 @@ + ;; + -all-static | -static | -static-libtool-libs) + case $arg in +- -all-static) ++ # Make -static behave like -all-static -GZ ++ -all-static | -static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi +@@ -6559,12 +6564,6 @@ + fi + prefer_static_libs=yes + ;; +- -static) +- if test -z "$pic_flag" && test -n "$link_static_flag"; then +- dlopen_self=$dlopen_self_static +- fi +- prefer_static_libs=built +- ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static +@@ -6858,7 +6857,8 @@ + prevarg=$arg + + case $arg in +- -all-static) ++ # Make -static behave like -all-static -GZ ++ -all-static | -static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" +@@ -7149,7 +7149,7 @@ + continue + ;; + +- -static | -static-libtool-libs) ++ -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects +@@ -8112,7 +8112,7 @@ + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" +- need_relink=yes ++ need_relink=no + fi + ;; + esac +@@ -10710,6 +10710,10 @@ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + func_basename "$deplib" diff --git a/buildroot/support/libtool/buildroot-libtool-v2.4.patch b/buildroot/support/libtool/buildroot-libtool-v2.4.patch new file mode 100644 index 0000000..f610b1b --- /dev/null +++ b/buildroot/support/libtool/buildroot-libtool-v2.4.patch @@ -0,0 +1,89 @@ +--- a/ltmain.sh 2014-07-30 22:21:24.664684143 +0200 ++++ b/ltmain.sh 2014-07-30 22:23:02.440687625 +0200 +@@ -1417,8 +1417,8 @@ + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then +- func_echo "unable to infer tagged configuration" +- func_fatal_error "specify a tag with \`--tag'" ++ func_echo "defaulting to \`CC'" ++ func_echo "if this is not correct, specify a tag with \`--tag'" + # else + # func_verbose "using $tagname tagged configuration" + fi +@@ -2963,8 +2963,11 @@ + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- test "$inst_prefix_dir" = "$destdir" && \ +- func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" ++ # ++ # This breaks install into our staging area. -PB ++ # ++ # test "$inst_prefix_dir" = "$destdir" && \ ++ # func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. +@@ -5176,7 +5179,8 @@ + ;; + -all-static | -static | -static-libtool-libs) + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi +@@ -5185,12 +5189,6 @@ + fi + prefer_static_libs=yes + ;; +- -static) +- if test -z "$pic_flag" && test -n "$link_static_flag"; then +- dlopen_self=$dlopen_self_static +- fi +- prefer_static_libs=built +- ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static +@@ -5473,7 +5471,8 @@ + prevarg="$arg" + + case $arg in +- -all-static) ++ # Make -static behave like -all-static ++ -all-static | -static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" +@@ -5754,7 +5753,7 @@ + continue + ;; + +- -static | -static-libtool-libs) ++ -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects +@@ -6697,7 +6696,7 @@ + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" +- need_relink=yes ++ need_relink=no + fi + ;; + esac +@@ -9275,6 +9274,10 @@ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + func_basename "$deplib" diff --git a/buildroot/support/misc/Buildroot.cmake b/buildroot/support/misc/Buildroot.cmake new file mode 100644 index 0000000..9f5f565 --- /dev/null +++ b/buildroot/support/misc/Buildroot.cmake @@ -0,0 +1,7 @@ +# Impersonate a Linux system. Afterall, that's what we are... +set(CMAKE_SYSTEM_NAME Linux) +include(Platform/Linux) + +# Override problematic settings, to avoid RPATH against host lib directories. +set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS FALSE) +set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE) diff --git a/buildroot/support/misc/Vagrantfile b/buildroot/support/misc/Vagrantfile new file mode 100644 index 0000000..54b45da --- /dev/null +++ b/buildroot/support/misc/Vagrantfile @@ -0,0 +1,60 @@ +################################################################################ +# +# Vagrantfile +# +################################################################################ + +# Buildroot version to use +RELEASE='2018.02' + +### Change here for more memory/cores ### +VM_MEMORY=2048 +VM_CORES=1 + +Vagrant.configure('2') do |config| + config.vm.box = 'bento/ubuntu-16.04' + + config.vm.provider :vmware_fusion do |v, override| + v.vmx['memsize'] = VM_MEMORY + v.vmx['numvcpus'] = VM_CORES + end + + config.vm.provider :virtualbox do |v, override| + v.memory = VM_MEMORY + v.cpus = VM_CORES + + required_plugins = %w( vagrant-vbguest ) + required_plugins.each do |plugin| + system "vagrant plugin install #{plugin}" unless Vagrant.has_plugin? plugin + end + end + + config.vm.provision 'shell' do |s| + s.inline = 'echo Setting up machine name' + + config.vm.provider :vmware_fusion do |v, override| + v.vmx['displayname'] = "Buildroot #{RELEASE}" + end + + config.vm.provider :virtualbox do |v, override| + v.name = "Buildroot #{RELEASE}" + end + end + + config.vm.provision 'shell', privileged: true, inline: + "sed -i 's|deb http://us.archive.ubuntu.com/ubuntu/|deb mirror://mirrors.ubuntu.com/mirrors.txt|g' /etc/apt/sources.list + dpkg --add-architecture i386 + apt-get -q update + apt-get purge -q -y snapd lxcfs lxd ubuntu-core-launcher snap-confine + apt-get -q -y install build-essential libncurses5-dev \ + git bzr cvs mercurial subversion libc6:i386 unzip bc + apt-get -q -y autoremove + apt-get -q -y clean + update-locale LC_ALL=C" + + config.vm.provision 'shell', privileged: false, inline: + "echo 'Downloading and extracting buildroot #{RELEASE}' + wget -q -c http://buildroot.org/downloads/buildroot-#{RELEASE}.tar.gz + tar axf buildroot-#{RELEASE}.tar.gz" + +end diff --git a/buildroot/support/misc/relocate-sdk.sh b/buildroot/support/misc/relocate-sdk.sh new file mode 100755 index 0000000..caabeaa --- /dev/null +++ b/buildroot/support/misc/relocate-sdk.sh @@ -0,0 +1,47 @@ +#!/bin/sh +# +if [ "$#" -ne 0 ]; then + echo "Run this script to relocate the buildroot SDK at that location" + exit 1 +fi + +LOCFILE="share/buildroot/sdk-location" +FILEPATH="$(readlink -f "$0")" +NEWPATH="$(dirname "${FILEPATH}")" + +cd "${NEWPATH}" +if [ ! -r "${LOCFILE}" ]; then + echo "Previous location of the buildroot SDK not found!" + exit 1 +fi +OLDPATH="$(cat "${LOCFILE}")" + +if [ "${NEWPATH}" = "${OLDPATH}" ]; then + echo "This buildroot SDK has already been relocated!" + exit 0 +fi + +# Check if the path substitution does work properly, e.g. a tree +# "/a/b/c" copied into "/a/b/c/a/b/c/" would not be allowed. +newpath="$(sed -e "s|${OLDPATH}|${NEWPATH}|g" "${LOCFILE}")" +if [ "${NEWPATH}" != "${newpath}" ]; then + echo "Something went wrong with substituting the path!" + echo "Please choose another location for your SDK!" + exit 1 +fi + +echo "Relocating the buildroot SDK from ${OLDPATH} to ${NEWPATH} ..." + +# Make sure file uses the right language +export LC_ALL=C +# Replace the old path with the new one in all text files +grep -lr "${OLDPATH}" . | while read -r FILE ; do + if file -b --mime-type "${FILE}" | grep -q '^text/' && [ "${FILE}" != "${LOCFILE}" ] + then + sed -i "s|${OLDPATH}|${NEWPATH}|g" "${FILE}" + fi +done + +# At the very end, we update the location file to not break the +# SDK if this script gets interruted. +sed -i "s|${OLDPATH}|${NEWPATH}|g" ${LOCFILE} diff --git a/buildroot/support/misc/target-dir-warning.txt b/buildroot/support/misc/target-dir-warning.txt new file mode 100644 index 0000000..94d2e0c --- /dev/null +++ b/buildroot/support/misc/target-dir-warning.txt @@ -0,0 +1,29 @@ +Warning! +======== + +This directory does *not* contain the root filesystem that you can use +on your embedded system. Since Buildroot does not run as root, it +cannot create device files and set the permissions and ownership of +files correctly in this directory to make it usable as a root +filesystem. + +For that reason, do *not* use the contents of this directory to mount +your root filesystem over NFS or copy the contents of this directory +to a SD card or USB key, thinking it will work as the root filesystem +for your embedded system. It will simply *not* work. + +Instead, if you need a usable root filesystem, please select one of +the filesystem image formats available in the Buildroot configuration +interface (make menuconfig or others) in the "Filesystem images" +sub-menu. If you want to get a filesystem image that you can easily +extract to your SD card or to some directory exposed through NFS, +please use the "tar the root filesystem" option. It will generate a +images/rootfs.tar image in your Buildroot output directory, which you +can extract as root: + + sudo tar -C /destination/of/extraction -xf images/rootfs.tar + +Those image files are created using the contents of the target/ +directory, but there is a post-processing step to create device files +and set ownership/permissions properly even if Buildroot does not run +as root. diff --git a/buildroot/support/misc/toolchainfile.cmake.in b/buildroot/support/misc/toolchainfile.cmake.in new file mode 100644 index 0000000..1f5d237 --- /dev/null +++ b/buildroot/support/misc/toolchainfile.cmake.in @@ -0,0 +1,68 @@ +# +# Automatically generated file; DO NOT EDIT. +# CMake toolchain file for Buildroot +# + +# In order to allow the toolchain to be relocated, we calculate the +# HOST_DIR based on this file's location: $(HOST_DIR)/share/buildroot +# and store it in RELOCATED_HOST_DIR. +# All the other variables that need to refer to HOST_DIR will use the +# RELOCATED_HOST_DIR variable. +string(REPLACE "/share/buildroot" "" RELOCATED_HOST_DIR ${CMAKE_CURRENT_LIST_DIR}) + +# Point cmake to the location where we have our custom modules, +# so that it can find our custom platform description. +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}) + +set(CMAKE_SYSTEM_NAME Buildroot) +set(CMAKE_SYSTEM_PROCESSOR @@CMAKE_SYSTEM_PROCESSOR@@) + +# Set the {C,CXX}FLAGS appended by CMake depending on the build type +# defined by Buildroot. CMake defaults these variables with -g and/or +# -O options, and they are appended at the end of the argument list, +# so the Buildroot options are overridden. Therefore these variables +# have to be cleared, so that the options passed in CMAKE_C_FLAGS do +# apply. +# +# Note: +# if the project forces some of these flag variables, Buildroot is +# screwed up and there is nothing Buildroot can do about that :( +set(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "Debug CFLAGS") +set(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "Debug CXXFLAGS") +set(CMAKE_C_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CFLAGS") +set(CMAKE_CXX_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CXXFLAGS") + +# Build type from the Buildroot configuration +set(CMAKE_BUILD_TYPE @@CMAKE_BUILD_TYPE@@ CACHE STRING "Buildroot build configuration") + +# Buildroot defaults flags. +# If you are using this toolchainfile.cmake file outside of Buildroot and +# want to customize the compiler/linker flags, then: +# * set them all on the cmake command line, e.g.: +# cmake -DCMAKE_C_FLAGS="@@TARGET_CFLAGS@@ -Dsome_custom_flag" ... +# * and make sure the project's CMake code extends them like this if needed: +# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Dsome_definitions") +set(CMAKE_C_FLAGS "@@TARGET_CFLAGS@@" CACHE STRING "Buildroot CFLAGS") +set(CMAKE_CXX_FLAGS "@@TARGET_CXXFLAGS@@" CACHE STRING "Buildroot CXXFLAGS") +set(CMAKE_EXE_LINKER_FLAGS "@@TARGET_LDFLAGS@@" CACHE STRING "Buildroot LDFLAGS for executables") + +set(CMAKE_INSTALL_SO_NO_EXE 0) + +set(CMAKE_PROGRAM_PATH "${RELOCATED_HOST_DIR}/bin") +set(CMAKE_SYSROOT "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@") +set(CMAKE_FIND_ROOT_PATH "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(ENV{PKG_CONFIG_SYSROOT_DIR} "${RELOCATED_HOST_DIR}/@@STAGING_SUBDIR@@") + +# This toolchain file can be used both inside and outside Buildroot. +set(CMAKE_C_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CC@@") +set(CMAKE_CXX_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_CXX@@") +if(@@TOOLCHAIN_HAS_FORTRAN@@) + set(CMAKE_Fortran_FLAGS_DEBUG "" CACHE STRING "Debug Fortran FLAGS") + set(CMAKE_Fortran_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release Fortran FLAGS") + set(CMAKE_Fortran_FLAGS "@@TARGET_FCFLAGS@@" CACHE STRING "Buildroot FCFLAGS") + set(CMAKE_Fortran_COMPILER "${RELOCATED_HOST_DIR}/@@TARGET_FC@@") +endif() diff --git a/buildroot/support/misc/utils.mk b/buildroot/support/misc/utils.mk new file mode 100644 index 0000000..c443193 --- /dev/null +++ b/buildroot/support/misc/utils.mk @@ -0,0 +1,115 @@ +################################################################################ +# +# This file contains various utility macros and variables used about +# everywhere in make constructs. +# +################################################################################ + +# Strip quotes and then whitespaces +qstrip = $(strip $(subst ",,$(1))) +#")) + +# Variables for use in Make constructs +comma := , +empty := +space := $(empty) $(empty) + +# Case conversion macros. This is inspired by the 'up' macro from gmsl +# (http://gmsl.sf.net). It is optimised very heavily because these macros +# are used a lot. It is about 5 times faster than forking a shell and tr. +# +# The caseconvert-helper creates a definition of the case conversion macro. +# After expansion by the outer $(eval ), the UPPERCASE macro is defined as: +# $(strip $(eval __tmp := $(1)) $(eval __tmp := $(subst a,A,$(__tmp))) ... ) +# In other words, every letter is substituted one by one. +# +# The caseconvert-helper allows us to create this definition out of the +# [FROM] and [TO] lists, so we don't need to write down every substition +# manually. The uses of $ and $$ quoting are chosen in order to do as +# much expansion as possible up-front. +# +# Note that it would be possible to conceive a slightly more optimal +# implementation that avoids the use of __tmp, but that would be even +# more unreadable and is not worth the effort. + +[FROM] := a b c d e f g h i j k l m n o p q r s t u v w x y z - . +[TO] := A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ _ + +define caseconvert-helper +$(1) = $$(strip \ + $$(eval __tmp := $$(1))\ + $(foreach c, $(2),\ + $$(eval __tmp := $$(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)),$$(__tmp))))\ + $$(__tmp)) +endef + +$(eval $(call caseconvert-helper,UPPERCASE,$(join $(addsuffix :,$([FROM])),$([TO])))) +$(eval $(call caseconvert-helper,LOWERCASE,$(join $(addsuffix :,$([TO])),$([FROM])))) + +# Reverse the orders of words in a list. Again, inspired by the gmsl +# 'reverse' macro. +reverse = $(if $(1),$(call reverse,$(wordlist 2,$(words $(1)),$(1))) $(firstword $(1))) + +# Sanitize macro cleans up generic strings so it can be used as a filename +# and in rules. Particularly useful for VCS version strings, that can contain +# slashes, colons (OK in filenames but not in rules), and spaces. +sanitize = $(subst $(space),_,$(subst :,_,$(subst /,_,$(strip $(1))))) + +# MESSAGE Macro -- display a message in bold type +MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)_NAME) $($(PKG)_VERSION) $(call qstrip,$(1))$(TERM_RESET)" +TERM_BOLD := $(shell tput smso 2>/dev/null) +TERM_RESET := $(shell tput rmso 2>/dev/null) + +# Utility functions for 'find' +# findfileclauses(filelist) => -name 'X' -o -name 'Y' +findfileclauses = $(call notfirstword,$(patsubst %,-o -name '%',$(1))) +# finddirclauses(base, dirlist) => -path 'base/dirX' -o -path 'base/dirY' +finddirclauses = $(call notfirstword,$(patsubst %,-o -path '$(1)/%',$(2))) + +# Miscellaneous utility functions +# notfirstword(wordlist): returns all but the first word in wordlist +notfirstword = $(wordlist 2,$(words $(1)),$(1)) + +# Needed for the foreach loops to loop over the list of hooks, so that +# each hook call is properly separated by a newline. +define sep + + +endef + +PERCENT = % +QUOTE = ' +# ' # Meh... syntax-highlighting + +# This macro properly escapes a command string, then prints it with printf: +# +# - first, backslash '\' are self-escaped, so that they do not escape +# the following char and so that printf properly outputs a backslash; +# +# - next, single quotes are escaped by closing an existing one, adding +# an escaped one, and re-openning a new one (see below for the reason); +# +# - then '%' signs are self-escaped so that the printf does not interpret +# them as a format specifier, in case the variable contains an actual +# printf with a format; +# +# - finally, $(sep) is replaced with the literal '\n' so that make does +# not break on the so-expanded variable, but so that the printf does +# correctly output an LF. +# +# Note: this must be escaped in this order to avoid over-escaping the +# previously escaped elements. +# +# Once everything has been escaped, it is passed between single quotes +# (that's why the single-quotes are escaped they way they are, above, +# and why the dollar sign is not escaped) to printf(1). A trailing +# newline is apended, too. +# +# Note: leading or trailing spaces are *not* stripped. +# +define PRINTF + printf '$(subst $(sep),\n,\ + $(subst $(PERCENT),$(PERCENT)$(PERCENT),\ + $(subst $(QUOTE),$(QUOTE)\$(QUOTE)$(QUOTE),\ + $(subst \,\\,$(1)))))\n' +endef diff --git a/buildroot/support/scripts/apply-patches.sh b/buildroot/support/scripts/apply-patches.sh new file mode 100755 index 0000000..66fef26 --- /dev/null +++ b/buildroot/support/scripts/apply-patches.sh @@ -0,0 +1,173 @@ +#!/usr/bin/env bash +# A little script I whipped up to make it easy to +# patch source trees and have sane error handling +# -Erik +# +# (c) 2002 Erik Andersen +# +# Parameters: +# - "-s", optional. Silent operation, don't print anything if there +# isn't any error. +# - the build directory, optional, default value is '.'. The place where are +# the package sources. +# - the patch directory, optional, default '../kernel-patches'. The place +# where are the scripts you want to apply. +# - other parameters are the patch name patterns, optional, default value is +# '*'. Pattern(s) describing the patch names you want to apply. +# +# The script will look recursively for patches from the patch directory. If a +# file named 'series' exists then the patches mentioned in it will be applied +# as plain patches, regardless of their file name. If no 'series' file exists, +# the script will look for file names matching pattern(s). If the name +# ends with '.tar.*', '.tbz2' or '.tgz', the file is considered as an archive +# and will be uncompressed into a directory named +# '.patches-name_of_the_archive-unpacked'. It's the turn of this directory to +# be scanned with '*' as pattern. Remember that scanning is recursive. Other +# files than series file and archives are considered as a patch. +# +# Once a patch is found, the script will try to apply it. If its name doesn't +# end with '.gz', '.bz', '.bz2', '.xz', '.zip', '.Z', '.diff*' or '.patch*', +# it will be skipped. If necessary, the patch will be uncompressed before being +# applied. The list of the patches applied is stored in '.applied_patches_list' +# file in the build directory. + +set -e + +silent= +if [ "$1" = "-s" ] ; then + # add option to be used by the patch tool + silent=-s + shift +fi + +# Set directories from arguments, or use defaults. +builddir=${1-.} +patchdir=${2-../kernel-patches} +shift 2 +patchpattern=${@-*} + +# use a well defined sorting order +export LC_COLLATE=C + +if [ ! -d "${builddir}" ] ; then + echo "Aborting. '${builddir}' is not a directory." + exit 1 +fi +if [ ! -d "${patchdir}" ] ; then + echo "Aborting. '${patchdir}' is not a directory." + exit 1 +fi + +# Remove any rejects present BEFORE patching - Because if there are +# any, even if patches are well applied, at the end it will complain +# about rejects in builddir. +find ${builddir}/ '(' -name '*.rej' -o -name '.*.rej' ')' -print0 | \ + xargs -0 -r rm -f + +function apply_patch { + path="${1%%/}" + patch="${2}" + case "${path}" in + /*) ;; + *) path="$PWD/${path}";; + esac + if [ "$3" ]; then + type="series"; uncomp="cat" + else + case "$patch" in + *.gz) + type="gzip"; uncomp="gunzip -dc"; ;; + *.bz) + type="bzip"; uncomp="bunzip -dc"; ;; + *.bz2) + type="bzip2"; uncomp="bunzip2 -dc"; ;; + *.xz) + type="xz"; uncomp="unxz -dc"; ;; + *.zip) + type="zip"; uncomp="unzip -d"; ;; + *.Z) + type="compress"; uncomp="uncompress -c"; ;; + *.diff*) + type="diff"; uncomp="cat"; ;; + *.patch*) + type="patch"; uncomp="cat"; ;; + *) + echo "Unsupported file type for ${path}/${patch}, skipping"; + return 0 + ;; + esac + fi + if [ -z "$silent" ] ; then + echo "" + echo "Applying $patch using ${type}: " + fi + if [ ! -e "${path}/$patch" ] ; then + echo "Error: missing patch file ${path}/$patch" + exit 1 + fi + existing="$(grep -E "/${patch}\$" ${builddir}/.applied_patches_list || true)" + if [ -n "${existing}" ]; then + echo "Error: duplicate filename '${patch}'" + echo "Conflicting files are:" + echo " already applied: ${existing}" + echo " to be applied : ${path}/${patch}" + exit 1 + fi + if grep -q "^rename from" ${path}/${patch} && \ + grep -q "^rename to" ${path}/${patch} ; then + echo "Error: patch contains some renames, not supported by old patch versions" + exit 1 + fi + echo "${path}/${patch}" >> ${builddir}/.applied_patches_list + ${uncomp} "${path}/$patch" | patch -g0 -p1 -E -d "${builddir}" -t -N $silent + if [ $? != 0 ] ; then + echo "Patch failed! Please fix ${patch}!" + exit 1 + fi +} + +function scan_patchdir { + local path=$1 + shift 1 + patches=${@-*} + + # If there is a series file, use it instead of using ls sort order + # to apply patches. Skip line starting with a dash. + if [ -e "${path}/series" ] ; then + # The format of a series file accepts a second field that is + # used to specify the number of directory components to strip + # when applying the patch, in the form -pN (N an integer >= 0) + # We assume this field to always be -p1 whether it is present + # or missing. + series_patches="`grep -Ev "^#" ${path}/series | cut -d ' ' -f1 2> /dev/null`" + for i in $series_patches; do + apply_patch "$path" "$i" series + done + else + for i in `cd $path; ls -d $patches 2> /dev/null` ; do + if [ -d "${path}/$i" ] ; then + scan_patchdir "${path}/$i" + elif echo "$i" | grep -q -E "\.tar(\..*)?$|\.tbz2?$|\.tgz$" ; then + unpackedarchivedir="$builddir/.patches-$(basename $i)-unpacked" + rm -rf "$unpackedarchivedir" 2> /dev/null + mkdir "$unpackedarchivedir" + tar -C "$unpackedarchivedir" -xaf "${path}/$i" + scan_patchdir "$unpackedarchivedir" + else + apply_patch "$path" "$i" + fi + done + fi +} + +touch ${builddir}/.applied_patches_list +scan_patchdir "$patchdir" "$patchpattern" + +# Check for rejects... +if [ "`find $builddir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ] ; then + echo "Aborting. Reject files found." + exit 1 +fi + +# Remove backup files +find $builddir/ '(' -name '*.orig' -o -name '.*.orig' ')' -exec rm -f {} \; diff --git a/buildroot/support/scripts/br2-external b/buildroot/support/scripts/br2-external new file mode 100755 index 0000000..00cb57d --- /dev/null +++ b/buildroot/support/scripts/br2-external @@ -0,0 +1,224 @@ +#!/usr/bin/env bash +set -e + +# This script must be able to run with bash-3.1, so it can't use +# associative arrays. Instead, it emulates them using 'eval'. It +# can however use indexed arrays, supported since at least bash-3.0. + +# The names of the br2-external trees, once validated. +declare -a BR2_EXT_NAMES + +# URL to manual for help in converting old br2-external trees. +# Escape '#' so that make does not consider it a comment. +MANUAL_URL='https://buildroot.org/manual.html\#br2-external-converting' + +main() { + local OPT OPTARG + local br2_ext ofile ofmt + + while getopts :hkmo: OPT; do + case "${OPT}" in + h) help; exit 0;; + o) ofile="${OPTARG}";; + k) ofmt="kconfig";; + m) ofmt="mk";; + :) error "option '%s' expects a mandatory argument\n" "${OPTARG}";; + \?) error "unknown option '%s'\n" "${OPTARG}";; + esac + done + # Forget options; keep only positional args + shift $((OPTIND-1)) + + case "${ofmt}" in + mk|kconfig) + ;; + *) error "no output format specified (-m/-k)\n";; + esac + if [ -z "${ofile}" ]; then + error "no output file specified (-o)\n" + fi + + exec >"${ofile}" + + # Trap any unexpected error to generate a meaningful error message + trap "error 'unexpected error while generating ${ofile}\n'" ERR + + do_validate ${@//:/ } + + do_${ofmt} +} + +# Validates the br2-external trees passed as arguments. Makes each of +# them canonical and store them in the global arrays BR2_EXT_NAMES +# and BR2_EXT_PATHS. +# +# Note: since this script is always first called from Makefile context +# to generate the Makefile fragment before it is called to generate the +# Kconfig snippet, we're sure that any error in do_validate will be +# interpreted in Makefile context. Going up to generating the Kconfig +# snippet means that there were no error. +# +do_validate() { + local br2_ext + + if [ ${#} -eq 0 ]; then + # No br2-external tree is valid + return + fi + + for br2_ext in "${@}"; do + do_validate_one "${br2_ext}" + done +} + +do_validate_one() { + local br2_ext="${1}" + local br2_name br2_desc n d + + if [ ! -d "${br2_ext}" ]; then + error "'%s': no such file or directory\n" "${br2_ext}" + fi + if [ ! -r "${br2_ext}" -o ! -x "${br2_ext}" ]; then + error "'%s': permission denied\n" "${br2_ext}" + fi + if [ ! -f "${br2_ext}/external.desc" ]; then + error "'%s': does not have a name (in 'external.desc'). See %s\n" \ + "${br2_ext}" "${MANUAL_URL}" + fi + br2_name="$(sed -r -e '/^name: +(.*)$/!d; s//\1/' "${br2_ext}/external.desc")" + if [ -z "${br2_name}" ]; then + error "'%s/external.desc': does not define the name\n" "${br2_ext}" + fi + # Only ASCII chars in [A-Za-z0-9_] are permitted + n="$(sed -r -e 's/[A-Za-z0-9_]//g' <<<"${br2_name}" )" + if [ -n "${n}" ]; then + # Escape '$' so that it gets printed + error "'%s': name '%s' contains invalid chars: '%s'\n" \ + "${br2_ext}" "${br2_name//\$/\$\$}" "${n//\$/\$\$}" + fi + eval d="\"\${BR2_EXT_PATHS_${br2_name}}\"" + if [ -n "${d}" ]; then + error "'%s': name '%s' is already used in '%s'\n" \ + "${br2_ext}" "${br2_name}" "${d}" + fi + br2_desc="$(sed -r -e '/^desc: +(.*)$/!d; s//\1/' "${br2_ext}/external.desc")" + if [ ! -f "${br2_ext}/external.mk" ]; then + error "'%s/external.mk': no such file or directory\n" "${br2_ext}" + fi + if [ ! -f "${br2_ext}/Config.in" ]; then + error "'%s/Config.in': no such file or directory\n" "${br2_ext}" + fi + + # Register this br2-external tree, use an absolute canonical path + br2_ext="$( cd "${br2_ext}"; pwd )" + BR2_EXT_NAMES+=( "${br2_name}" ) + eval BR2_EXT_PATHS_${br2_name}="\"\${br2_ext}\"" + eval BR2_EXT_DESCS_${br2_name}="\"\${br2_desc:-\${br2_name}}\"" +} + +# Generate the .mk snippet that defines makefile variables +# for the br2-external tree +do_mk() { + local br2_name br2_ext + + printf '#\n# Automatically generated file; DO NOT EDIT.\n#\n' + printf '\n' + + printf 'BR2_EXTERNAL ?=' + for br2_name in "${BR2_EXT_NAMES[@]}"; do + eval br2_ext="\"\${BR2_EXT_PATHS_${br2_name}}\"" + printf ' %s' "${br2_ext}" + done + printf '\n' + + printf 'BR2_EXTERNAL_NAMES = \n' + printf 'BR2_EXTERNAL_DIRS = \n' + printf 'BR2_EXTERNAL_MKS = \n' + + if [ ${#BR2_EXT_NAMES[@]} -eq 0 ]; then + printf '\n' + printf '# No br2-external tree defined.\n' + return + fi + + for br2_name in "${BR2_EXT_NAMES[@]}"; do + eval br2_desc="\"\${BR2_EXT_DESCS_${br2_name}}\"" + eval br2_ext="\"\${BR2_EXT_PATHS_${br2_name}}\"" + printf '\n' + printf 'BR2_EXTERNAL_NAMES += %s\n' "${br2_name}" + printf 'BR2_EXTERNAL_DIRS += %s\n' "${br2_ext}" + printf 'BR2_EXTERNAL_MKS += %s/external.mk\n' "${br2_ext}" + printf 'export BR2_EXTERNAL_%s_PATH = %s\n' "${br2_name}" "${br2_ext}" + printf 'export BR2_EXTERNAL_%s_DESC = %s\n' "${br2_name}" "${br2_desc}" + done +} + +# Generate the kconfig snippet for the br2-external tree. +do_kconfig() { + local br2_name br2_ext + + printf '#\n# Automatically generated file; DO NOT EDIT.\n#\n' + printf '\n' + + if [ ${#BR2_EXT_NAMES[@]} -eq 0 ]; then + printf '# No br2-external tree defined.\n' + return + fi + + printf 'menu "External options"\n' + printf '\n' + + for br2_name in "${BR2_EXT_NAMES[@]}"; do + eval br2_desc="\"\${BR2_EXT_DESCS_${br2_name}}\"" + eval br2_ext="\"\${BR2_EXT_PATHS_${br2_name}}\"" + if [ ${#BR2_EXT_NAMES[@]} -gt 1 ]; then + printf 'menu "%s"\n' "${br2_desc}" + fi + printf 'comment "%s (in %s)"\n' "${br2_desc}" "${br2_ext}" + printf 'config BR2_EXTERNAL_%s_PATH\n' "${br2_name}" + printf '\tstring\n' + printf '\tdefault "%s"\n' "${br2_ext}" + printf 'source "%s/Config.in"\n' "${br2_ext}" + if [ ${#BR2_EXT_NAMES[@]} -gt 1 ]; then + printf 'endmenu # %s\n' "${br2_name}" + fi + printf '\n' + done + + printf "endmenu # User-provided options\n" +} + +help() { + cat <<-_EOF_ + Usage: + ${my_name} <-m|-k> -o FILE PATH + + With -m, ${my_name} generates the makefile fragment that defines + variables related to the br2-external trees passed as positional + arguments. + + With -k, ${my_name} generates the kconfig snippet to include the + configuration options specified in the br2-external trees passed + as positional arguments. + + Using -k and -m together is not possible. The last one wins. + + Options: + -m Generate the makefile fragment. + + -k Generate the kconfig snippet. + + -o FILE + FILE in which to generate the kconfig snippet or makefile + fragment. + + Returns: + 0 If no error + !0 If any error + _EOF_ +} + +error() { local fmt="${1}"; shift; printf "BR2_EXTERNAL_ERROR = ${fmt}" "${@}"; exit 1; } + +my_name="${0##*/}" +main "${@}" diff --git a/buildroot/support/scripts/brpkgutil.py b/buildroot/support/scripts/brpkgutil.py new file mode 100644 index 0000000..4c99ae9 --- /dev/null +++ b/buildroot/support/scripts/brpkgutil.py @@ -0,0 +1,66 @@ +# Copyright (C) 2010-2013 Thomas Petazzoni + +import sys +import subprocess + + +# Execute the "make -show-version" command to get the version of a given +# list of packages, and return the version formatted as a Python dictionary. +def get_version(pkgs): + sys.stderr.write("Getting version for %s\n" % pkgs) + cmd = ["make", "-s", "--no-print-directory"] + for pkg in pkgs: + cmd.append("%s-show-version" % pkg) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) + output = p.communicate()[0] + if p.returncode != 0: + sys.stderr.write("Error getting version %s\n" % pkgs) + sys.exit(1) + output = output.split("\n") + if len(output) != len(pkgs) + 1: + sys.stderr.write("Error getting version\n") + sys.exit(1) + version = {} + for i in range(0, len(pkgs)): + pkg = pkgs[i] + version[pkg] = output[i] + return version + + +def _get_depends(pkgs, rule): + sys.stderr.write("Getting dependencies for %s\n" % pkgs) + cmd = ["make", "-s", "--no-print-directory"] + for pkg in pkgs: + cmd.append("%s-%s" % (pkg, rule)) + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) + output = p.communicate()[0] + if p.returncode != 0: + sys.stderr.write("Error getting dependencies %s\n" % pkgs) + sys.exit(1) + output = output.split("\n") + if len(output) != len(pkgs) + 1: + sys.stderr.write("Error getting dependencies\n") + sys.exit(1) + deps = {} + for i in range(0, len(pkgs)): + pkg = pkgs[i] + pkg_deps = output[i].split(" ") + if pkg_deps == ['']: + deps[pkg] = [] + else: + deps[pkg] = pkg_deps + return deps + + +# Execute the "make -show-depends" command to get the list of +# dependencies of a given list of packages, and return the list of +# dependencies formatted as a Python dictionary. +def get_depends(pkgs): + return _get_depends(pkgs, 'show-depends') + + +# Execute the "make -show-rdepends" command to get the list of +# reverse dependencies of a given list of packages, and return the +# list of dependencies formatted as a Python dictionary. +def get_rdepends(pkgs): + return _get_depends(pkgs, 'show-rdepends') diff --git a/buildroot/support/scripts/check-bin-arch b/buildroot/support/scripts/check-bin-arch new file mode 100755 index 0000000..7f97696 --- /dev/null +++ b/buildroot/support/scripts/check-bin-arch @@ -0,0 +1,88 @@ +#!/usr/bin/env bash + +# List of hardcoded paths that should be ignored, as they may +# contain binaries for an architecture different from the +# architecture of the target. +declare -a IGNORES=( + # Skip firmware files, they could be ELF files for other + # architectures + "/lib/firmware" + "/usr/lib/firmware" + + # Skip kernel modules + # When building a 32-bit userland on 64-bit architectures, the kernel + # and its modules may still be 64-bit. To keep the basic + # check-bin-arch logic simple, just skip this directory. + "/lib/modules" + "/usr/lib/modules" + + # Skip files in /usr/share, several packages (qemu, + # pru-software-support) legitimately install ELF binaries that + # are not for the target architecture + "/usr/share" +) + +while getopts p:l:r:a:i: OPT ; do + case "${OPT}" in + p) package="${OPTARG}";; + l) pkg_list="${OPTARG}";; + r) readelf="${OPTARG}";; + a) arch_name="${OPTARG}";; + i) + # Ensure we do have single '/' as separators, + # and that we have a leading and a trailing one. + pattern="$(sed -r -e 's:/+:/:g; s:^/*:/:; s:/*$:/:;' <<<"${OPTARG}")" + IGNORES+=("${pattern}") + ;; + :) error "option '%s' expects a mandatory argument\n" "${OPTARG}";; + \?) error "unknown option '%s'\n" "${OPTARG}";; + esac +done + +if test -z "${package}" -o -z "${pkg_list}" -o -z "${readelf}" -o -z "${arch_name}" ; then + echo "Usage: $0 -p -l -r -a [-i PATH ...]" + exit 1 +fi + +exitcode=0 + +# Only split on new lines, for filenames-with-spaces +IFS=" +" + +while read f; do + for ignore in "${IGNORES[@]}"; do + if [[ "${f}" =~ ^"${ignore}" ]]; then + continue 2 + fi + done + + # Skip symlinks. Some symlinks may have absolute paths as + # target, pointing to host binaries while we're building. + if [[ -L "${TARGET_DIR}/${f}" ]]; then + continue + fi + + # Get architecture using readelf. We pipe through 'head -1' so + # that when the file is a static library (.a), we only take + # into account the architecture of the first object file. + arch=$(LC_ALL=C ${readelf} -h "${TARGET_DIR}/${f}" 2>&1 | \ + sed -r -e '/^ Machine: +(.+)/!d; s//\1/;' | head -1) + + # If no architecture found, assume it was not an ELF file + if test "${arch}" = "" ; then + continue + fi + + # Architecture is correct + if test "${arch}" = "${arch_name}" ; then + continue + fi + + printf 'ERROR: architecture for "%s" is "%s", should be "%s"\n' \ + "${f}" "${arch}" "${arch_name}" + + exitcode=1 +done < <( sed -r -e "/^${package},\.(.+)$/!d; s//\1/;" ${pkg_list} ) + +exit ${exitcode} diff --git a/buildroot/support/scripts/check-host-rpath b/buildroot/support/scripts/check-host-rpath new file mode 100755 index 0000000..169628d --- /dev/null +++ b/buildroot/support/scripts/check-host-rpath @@ -0,0 +1,76 @@ +#!/usr/bin/env bash + +# This script scans $(HOST_DIR)/{bin,sbin} for all ELF files, and checks +# they have an RPATH to $(HOST_DIR)/lib if they need libraries from +# there. + +# Override the user's locale so we are sure we can parse the output of +# readelf(1) and file(1) +export LC_ALL=C + +main() { + local pkg="${1}" + local hostdir="${2}" + local file ret + + # Remove duplicate and trailing '/' for proper match + hostdir="$( sed -r -e 's:/+:/:g; s:/$::;' <<<"${hostdir}" )" + + ret=0 + while read file; do + is_elf "${file}" || continue + elf_needs_rpath "${file}" "${hostdir}" || continue + check_elf_has_rpath "${file}" "${hostdir}" && continue + if [ ${ret} -eq 0 ]; then + ret=1 + printf "***\n" + printf "*** ERROR: package %s installs executables without proper RPATH:\n" "${pkg}" + fi + printf "*** %s\n" "${file}" + done < <( find "${hostdir}"/{bin,sbin} -type f 2>/dev/null ) + + return ${ret} +} + +is_elf() { + local f="${1}" + + readelf -l "${f}" 2>/dev/null \ + |grep -E 'Requesting program interpreter:' >/dev/null 2>&1 +} + +elf_needs_rpath() { + local file="${1}" + local hostdir="${2}" + local lib + + while read lib; do + [ -e "${hostdir}/lib/${lib}" ] && return 0 + done < <( readelf -d "${file}" \ + |sed -r -e '/^.* \(NEEDED\) .*Shared library: \[(.+)\]$/!d;' \ + -e 's//\1/;' \ + ) + + return 1 +} + +check_elf_has_rpath() { + local file="${1}" + local hostdir="${2}" + local rpath dir + + while read rpath; do + for dir in ${rpath//:/ }; do + # Remove duplicate and trailing '/' for proper match + dir="$( sed -r -e 's:/+:/:g; s:/$::;' <<<"${dir}" )" + [ "${dir}" = "${hostdir}/lib" -o "${dir}" = "\$ORIGIN/../lib" ] && return 0 + done + done < <( readelf -d "${file}" \ + |sed -r -e '/.* \(R(UN)?PATH\) +Library r(un)?path: \[(.+)\]$/!d' \ + -e 's//\3/;' \ + ) + + return 1 +} + +main "${@}" diff --git a/buildroot/support/scripts/check-kernel-headers.sh b/buildroot/support/scripts/check-kernel-headers.sh new file mode 100755 index 0000000..a8cca78 --- /dev/null +++ b/buildroot/support/scripts/check-kernel-headers.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +SYSROOT="${1}" +# Make sure we have enough version components +HDR_VER="${2}.0.0" + +HDR_M="${HDR_VER%%.*}" +HDR_V="${HDR_VER#*.}" +HDR_m="${HDR_V%%.*}" + +EXEC="$(mktemp -t check-headers.XXXXXX)" + +# We do not want to account for the patch-level, since headers are +# not supposed to change for different patchlevels, so we mask it out. +# This only applies to kernels >= 3.0, but those are the only one +# we actually care about; we treat all 2.6.x kernels equally. +${HOSTCC} -imacros "${SYSROOT}/usr/include/linux/version.h" \ + -x c -o "${EXEC}" - <<_EOF_ +#include +#include + +int main(int argc __attribute__((unused)), + char** argv __attribute__((unused))) +{ + if((LINUX_VERSION_CODE & ~0xFF) + != KERNEL_VERSION(${HDR_M},${HDR_m},0)) + { + printf("Incorrect selection of kernel headers: "); + printf("expected %d.%d.x, got %d.%d.x\n", ${HDR_M}, ${HDR_m}, + ((LINUX_VERSION_CODE>>16) & 0xFF), + ((LINUX_VERSION_CODE>>8) & 0xFF)); + return 1; + } + return 0; +} +_EOF_ + +"${EXEC}" +ret=${?} +rm -f "${EXEC}" +exit ${ret} diff --git a/buildroot/support/scripts/check-uniq-files b/buildroot/support/scripts/check-uniq-files new file mode 100755 index 0000000..f110176 --- /dev/null +++ b/buildroot/support/scripts/check-uniq-files @@ -0,0 +1,49 @@ +#!/usr/bin/env python + +import sys +import csv +import argparse +from collections import defaultdict + +warn = 'Warning: {0} file "{1}" is touched by more than one package: {2}\n' + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('packages_file_list', nargs='*', + help='The packages-file-list to check from') + parser.add_argument('-t', '--type', metavar="TYPE", + help='Report as a TYPE file (TYPE is either target, staging, or host)') + + args = parser.parse_args() + + if not len(args.packages_file_list) == 1: + sys.stderr.write('No packages-file-list was provided.\n') + return False + + if args.type is None: + sys.stderr.write('No type was provided\n') + return False + + file_to_pkg = defaultdict(list) + with open(args.packages_file_list[0], 'rb') as pkg_file_list: + for line in pkg_file_list.readlines(): + pkg, _, file = line.rstrip(b'\n').partition(b',') + file_to_pkg[file].append(pkg) + + for file in file_to_pkg: + if len(file_to_pkg[file]) > 1: + # If possible, try to decode the binary strings with + # the default user's locale + try: + sys.stderr.write(warn.format(args.type, file.decode(), + [p.decode() for p in file_to_pkg[file]])) + except UnicodeDecodeError: + # ... but fallback to just dumping them raw if they + # contain non-representable chars + sys.stderr.write(warn.format(args.type, file, + file_to_pkg[file])) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/buildroot/support/scripts/eclipse-register-toolchain b/buildroot/support/scripts/eclipse-register-toolchain new file mode 100755 index 0000000..891d29e --- /dev/null +++ b/buildroot/support/scripts/eclipse-register-toolchain @@ -0,0 +1,76 @@ +#!/bin/sh + +# This script registers the toolchain of a Buildroot project into the +# Eclipse plugin. To do so, it adds a new line for the Buildroot +# toolchain into the $HOME/.buildroot-eclipse.toolchains file, which +# the Eclipse Buildroot plugin reads to discover automatically the +# available Buildroot toolchains on the system. +# +# This script should typically not be called manually. Instead, one +# should enable the BR2_ECLIPSE_REGISTER configuration option, which +# will lead Buildroot to automatically call this script with the +# appropriate arguments. +# +# Usage: +# eclipse-register-toolchain project-directory toolchain-prefix architecture +# +# project-directory is the absolute path to the Buildroot project +# output directory (which contains the host/, target/, build/, +# images/, etc. subdirectories). It should be an absolute and +# canonical path. +# +# toolchain-prefix is the prefix of the cross-compilation tools, i.e +# 'arm-linux-' if the cross-compiler executable is 'arm-linux-gcc'. +# +# architecture is the lower-cased name of the architecture targetted +# by the Buildroot project. + +if test $# -ne 3; then + echo "Invalid number of arguments." + echo "Usage: $0 project-directory toolchain-prefix architecture" + exit 1 +fi + +project_directory=$1 +toolchain_prefix=$2 +architecture=$3 + +if test ! -d ${project_directory} ; then + echo "Non-existing project directory ${project_directory}" + exit 1 +fi + +if test ! -d ${project_directory}/host ; then + echo "Your project directory does not look like a Buildroot output" + exit 1 +fi + +if test ! -e ${project_directory}/host/bin/${toolchain_prefix}gcc ; then + echo "Cannot find the cross-compiler in the project directory" + exit 1 +fi + +TOOLCHAIN_ECLIPSE_FILE=${HOME}/.buildroot-eclipse.toolchains + +# First, we remove all lines from the ${TOOLCHAIN_ECLISPE_FILE} that +# correspond to toolchains that no longer exist. +if test -f ${TOOLCHAIN_ECLIPSE_FILE} ; then + mv ${TOOLCHAIN_ECLIPSE_FILE} ${TOOLCHAIN_ECLIPSE_FILE}.tmp + cat ${TOOLCHAIN_ECLIPSE_FILE}.tmp | while read toolchain ; do + path=$(echo ${toolchain} | cut -f1 -d ':') + # Filter lines corresponding to still existing projects + echo "Testing ${path} ..." + if ! test -d ${path} ; then + continue + fi + # .. and the current project + if test ${path} = ${project_directory} ; then + continue + fi + echo ${toolchain} >> ${TOOLCHAIN_ECLIPSE_FILE} + done + rm ${TOOLCHAIN_ECLIPSE_FILE}.tmp +fi + +# Add the toolchain +echo "${project_directory}:${toolchain_prefix}:${architecture}" >> ${TOOLCHAIN_ECLIPSE_FILE} diff --git a/buildroot/support/scripts/expunge-gconv-modules b/buildroot/support/scripts/expunge-gconv-modules new file mode 100755 index 0000000..03012c1 --- /dev/null +++ b/buildroot/support/scripts/expunge-gconv-modules @@ -0,0 +1,59 @@ +#!/usr/bin/env bash + +# This script is used to generate a gconv-modules file that takes into +# account only the gconv modules installed by Buildroot. It receives +# on its standard input the original complete gconv-modules file from +# the toolchain, and as arguments the list of gconv modules that were +# actually installed, and writes on its standard output the new +# gconv-modules file. + +# The format of gconv-modules is precisely documented in the +# file itself. It consists of two different directives: +# module FROMSET TOSET FILENAME COST +# alias ALIAS REALNAME +# and that's what this script parses and generates. +# +# There are two kinds of 'module' directives: +# - the first defines conversion of a charset to/from INTERNAL representation +# - the second defines conversion of a charset to/from another charset +# we handle each with slightly different code, since the second never has +# associated aliases. + +gawk -v files="${1}" ' +$1 == "alias" { + aliases[$3] = aliases[$3] " " $2; +} +$1 == "module" && $2 != "INTERNAL" && $3 == "INTERNAL" { + file2internals[$4] = file2internals[$4] " " $2; + mod2cost[$2] = $5; +} +$1 == "module" && $2 != "INTERNAL" && $3 != "INTERNAL" { + file2cset[$4] = file2cset[$4] " " $2 ":" $3; + mod2cost[$2] = $5; +} + +END { + nb_files = split(files, all_files); + for(f = 1; f <= nb_files; f++) { + file = all_files[f]; + printf("# Modules and aliases for: %s\n", file); + nb_mods = split(file2internals[file], mods); + for(i = 1; i <= nb_mods; i++) { + nb_aliases = split(aliases[mods[i]], mod_aliases); + for(j = 1; j <= nb_aliases; j++) { + printf("alias\t%s\t%s\n", mod_aliases[j], mods[i]); + } + printf("module\t%s\t%s\t%s\t%d\n", mods[i], "INTERNAL", file, mod2cost[mods[i]]); + printf("module\t%s\t%s\t%s\t%d\n", "INTERNAL", mods[i], file, mod2cost[mods[i]]); + printf("\n" ); + } + printf("%s", nb_mods != 0 ? "\n" : ""); + nb_csets = split(file2cset[file], csets); + for(i = 1; i <= nb_csets; i++) { + split(csets[i], cs, ":"); + printf("module\t%s\t%s\t%s\t%d\n", cs[1], cs[2], file, mod2cost[cs[1]]); + } + printf("%s", nb_csets != 0 ? "\n\n" : ""); + } +} +' diff --git a/buildroot/support/scripts/fix-configure-powerpc64.sh b/buildroot/support/scripts/fix-configure-powerpc64.sh new file mode 100755 index 0000000..ff2b283 --- /dev/null +++ b/buildroot/support/scripts/fix-configure-powerpc64.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +# This is a script to find, and correct, a problem with old versions of +# configure that affect powerpc64 and powerpc64le. + +# The issue causes configure to incorrectly determine that shared library +# support is not present in the linker. This causes the package to build a +# static library rather than a dynamic one and although the build will succeed, +# it may cause packages that link with the static library it to fail due to +# undefined symbols. + +# This script searches for files named 'configure' that appear to have this +# issue (by searching for a known bad pattern) and patching them. + +set -e + +if [ $# -ne 1 ]; then + echo "Usage: $0 " + exit 2 +fi + +srcdir="$1" +files=$(cd "$srcdir" && find . -name configure \ +-exec grep -qF 'Generated by GNU Autoconf' {} \; \ +-exec grep -qF 'ppc*-*linux*|powerpc*-*linux*)' {} \; -print) + +# --ignore-whitespace is needed because some packages have included +# copies of configure scripts where tabs have been replaced with spaces. +for c in $files; do + patch --ignore-whitespace "$srcdir"/"$c" <<'EOF' +--- a/configure 2016-11-16 15:31:46.097447271 +1100 ++++ b/configure 2008-07-21 12:17:23.000000000 +1000 +@@ -4433,7 +4433,10 @@ + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; +- ppc*-*linux*|powerpc*-*linux*) ++ powerpcle-*linux*) ++ LD="${LD-ld} -m elf64lppc" ++ ;; ++ powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) +EOF +done + diff --git a/buildroot/support/scripts/fix-rpath b/buildroot/support/scripts/fix-rpath new file mode 100755 index 0000000..fa138ca --- /dev/null +++ b/buildroot/support/scripts/fix-rpath @@ -0,0 +1,147 @@ +#!/usr/bin/env bash + +# Copyright (C) 2016 Samuel Martin +# Copyright (C) 2017 Wolfgang Grandegger +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +usage() { + cat <&2 +Usage: ${0} TREE_KIND + +Description: + + This script scans a tree and sanitize ELF files' RPATH found in there. + + Sanitization behaves the same whatever the kind of the processed tree, + but the resulting RPATH differs. The rpath sanitization is done using + "patchelf --make-rpath-relative". + +Arguments: + + TREE_KIND Kind of tree to be processed. + Allowed values: host, target, staging + +Environment: + + PATCHELF patchelf program to use + (default: HOST_DIR/bin/patchelf) + + HOST_DIR host directory + STAGING_DIR staging directory + TARGET_DIR target directory + + TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR + (default HOST_DIR/opt/ext-toolchain) + +Returns: 0 if success or 1 in case of error + +EOF +} + +: ${PATCHELF:=${HOST_DIR}/bin/patchelf} + +# ELF files should not be in these sub-directories +HOST_EXCLUDEPATHS="/share/terminfo" +STAGING_EXCLUDEPATHS="/usr/include /usr/share/terminfo" +TARGET_EXCLUDEPATHS="/lib/firmware" + +main() { + local rootdir + local tree="${1}" + local find_args=( ) + local sanitize_extra_args=( ) + + if ! "${PATCHELF}" --version > /dev/null 2>&1; then + echo "Error: can't execute patchelf utility '${PATCHELF}'" + exit 1 + fi + + case "${tree}" in + host) + rootdir="${HOST_DIR}" + + # do not process the sysroot (only contains target binaries) + find_args+=( "-path" "${STAGING_DIR}" "-prune" "-o" ) + + # do not process the external toolchain installation directory to + # avoid breaking it. + test "${TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR}" != "" && \ + find_args+=( "-path" "${TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR}" "-prune" "-o" ) + + for excludepath in ${HOST_EXCLUDEPATHS}; do + find_args+=( "-path" "${HOST_DIR}""${excludepath}" "-prune" "-o" ) + done + + # do not process the patchelf binary but a copy to work-around "file in use" + find_args+=( "-path" "${PATCHELF}" "-prune" "-o" ) + cp "${PATCHELF}" "${PATCHELF}.__to_be_patched" + + # we always want $ORIGIN-based rpaths to make it relocatable. + sanitize_extra_args+=( "--relative-to-file" ) + ;; + + staging) + rootdir="${STAGING_DIR}" + + # ELF files should not be in these sub-directories + for excludepath in ${STAGING_EXCLUDEPATHS}; do + find_args+=( "-path" "${STAGING_DIR}""${excludepath}" "-prune" "-o" ) + done + + # should be like for the target tree below + sanitize_extra_args+=( "--no-standard-lib-dirs" ) + ;; + + target) + rootdir="${TARGET_DIR}" + + for excludepath in ${TARGET_EXCLUDEPATHS}; do + find_args+=( "-path" "${TARGET_DIR}""${excludepath}" "-prune" "-o" ) + done + + # we don't want $ORIGIN-based rpaths but absolute paths without rootdir. + # we also want to remove rpaths pointing to /lib or /usr/lib. + sanitize_extra_args+=( "--no-standard-lib-dirs" ) + ;; + + *) + usage + exit 1 + ;; + esac + + find_args+=( "-type" "f" "-print" ) + + while read file ; do + # check if it's an ELF file + if ${PATCHELF} --print-rpath "${file}" > /dev/null 2>&1; then + # make files writable if necessary + changed=$(chmod -c u+w "${file}") + # call patchelf to sanitize the rpath + ${PATCHELF} --make-rpath-relative "${rootdir}" ${sanitize_extra_args[@]} "${file}" + # restore the original permission + test "${changed}" != "" && chmod u-w "${file}" + fi + done < <(find "${rootdir}" ${find_args[@]}) + + # Restore patched patchelf utility + test "${tree}" = "host" && mv "${PATCHELF}.__to_be_patched" "${PATCHELF}" + + # ignore errors + return 0 +} + +main ${@} diff --git a/buildroot/support/scripts/genimage.sh b/buildroot/support/scripts/genimage.sh new file mode 100755 index 0000000..039b3fe --- /dev/null +++ b/buildroot/support/scripts/genimage.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +die() { + cat <&2 +Error: $@ + +Usage: ${0} -c GENIMAGE_CONFIG_FILE +EOF + exit 1 +} + +# Parse arguments and put into argument list of the script +opts="$(getopt -n "${0##*/}" -o c: -- "$@")" || exit $? +eval set -- "$opts" + +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +while true ; do + case "$1" in + -c) + GENIMAGE_CFG="${2}"; + shift 2 ;; + --) # Discard all non-option parameters + shift 1; + break ;; + *) + die "unknown option '${1}'" ;; + esac +done + +[ -n "${GENIMAGE_CFG}" ] || die "Missing argument" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" diff --git a/buildroot/support/scripts/graph-build-time b/buildroot/support/scripts/graph-build-time new file mode 100755 index 0000000..415d431 --- /dev/null +++ b/buildroot/support/scripts/graph-build-time @@ -0,0 +1,312 @@ +#!/usr/bin/env python + +# Copyright (C) 2011 by Thomas Petazzoni +# Copyright (C) 2013 by Yann E. MORIN +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# This script generates graphs of packages build time, from the timing +# data generated by Buildroot in the $(O)/build-time.log file. +# +# Example usage: +# +# cat $(O)/build-time.log | ./support/scripts/graph-build-time --type=histogram --output=foobar.pdf +# +# Three graph types are available : +# +# * histogram, which creates an histogram of the build time for each +# package, decomposed by each step (extract, patch, configure, +# etc.). The order in which the packages are shown is +# configurable: by package name, by build order, or by duration +# order. See the --order option. +# +# * pie-packages, which creates a pie chart of the build time of +# each package (without decomposition in steps). Packages that +# contributed to less than 1% of the overall build time are all +# grouped together in an "Other" entry. +# +# * pie-steps, which creates a pie chart of the time spent globally +# on each step (extract, patch, configure, etc...) +# +# The default is to generate an histogram ordered by package name. +# +# Requirements: +# +# * matplotlib (python-matplotlib on Debian/Ubuntu systems) +# * numpy (python-numpy on Debian/Ubuntu systems) +# * argparse (by default in Python 2.7, requires python-argparse if +# Python 2.6 is used) + +import sys + +try: + import matplotlib as mpl + import numpy +except ImportError: + sys.stderr.write("You need python-matplotlib and python-numpy to generate build graphs\n") + exit(1) + +# Use the Agg backend (which produces a PNG output, see +# http://matplotlib.org/faq/usage_faq.html#what-is-a-backend), +# otherwise an incorrect backend is used on some host machines). +# Note: matplotlib.use() must be called *before* matplotlib.pyplot. +mpl.use('Agg') + +import matplotlib.pyplot as plt # noqa: E402 +import matplotlib.font_manager as fm # noqa: E402 +import csv # noqa: E402 +import argparse # noqa: E402 + +steps = ['extract', 'patch', 'configure', 'build', + 'install-target', 'install-staging', 'install-images', + 'install-host'] + +default_colors = ['#e60004', '#009836', '#2e1d86', '#ffed00', + '#0068b5', '#f28e00', '#940084', '#97c000'] + +alternate_colors = ['#00e0e0', '#3f7f7f', '#ff0000', '#00c000', + '#0080ff', '#c000ff', '#00eeee', '#e0e000'] + + +class Package: + def __init__(self, name): + self.name = name + self.steps_duration = {} + self.steps_start = {} + self.steps_end = {} + + def add_step(self, step, state, time): + if state == "start": + self.steps_start[step] = time + else: + self.steps_end[step] = time + if step in self.steps_start and step in self.steps_end: + self.steps_duration[step] = self.steps_end[step] - self.steps_start[step] + + def get_duration(self, step=None): + if step is None: + duration = 0 + for step in list(self.steps_duration.keys()): + duration += self.steps_duration[step] + return duration + if step in self.steps_duration: + return self.steps_duration[step] + return 0 + + +# Generate an histogram of the time spent in each step of each +# package. +def pkg_histogram(data, output, order="build"): + n_pkgs = len(data) + ind = numpy.arange(n_pkgs) + + if order == "duration": + data = sorted(data, key=lambda p: p.get_duration(), reverse=True) + elif order == "name": + data = sorted(data, key=lambda p: p.name, reverse=False) + + # Prepare the vals array, containing one entry for each step + vals = [] + for step in steps: + val = [] + for p in data: + val.append(p.get_duration(step)) + vals.append(val) + + bottom = [0] * n_pkgs + legenditems = [] + + plt.figure() + + # Draw the bars, step by step + for i in range(0, len(vals)): + b = plt.bar(ind+0.1, vals[i], width=0.8, color=colors[i], bottom=bottom, linewidth=0.25) + legenditems.append(b[0]) + bottom = [bottom[j] + vals[i][j] for j in range(0, len(vals[i]))] + + # Draw the package names + plt.xticks(ind + .6, [p.name for p in data], rotation=-60, rotation_mode="anchor", fontsize=8, ha='left') + + # Adjust size of graph depending on the number of packages + # Ensure a minimal size twice as the default + # Magic Numbers do Magic Layout! + ratio = max(((n_pkgs + 10) / 48, 2)) + borders = 0.1 / ratio + sz = plt.gcf().get_figwidth() + plt.gcf().set_figwidth(sz * ratio) + + # Adjust space at borders, add more space for the + # package names at the bottom + plt.gcf().subplots_adjust(bottom=0.2, left=borders, right=1-borders) + + # Remove ticks in the graph for each package + axes = plt.gcf().gca() + for line in axes.get_xticklines(): + line.set_markersize(0) + + axes.set_ylabel('Time (seconds)') + + # Reduce size of legend text + leg_prop = fm.FontProperties(size=6) + + # Draw legend + plt.legend(legenditems, steps, prop=leg_prop) + + if order == "name": + plt.title('Build time of packages\n') + elif order == "build": + plt.title('Build time of packages, by build order\n') + elif order == "duration": + plt.title('Build time of packages, by duration order\n') + + # Save graph + plt.savefig(output) + + +# Generate a pie chart with the time spent building each package. +def pkg_pie_time_per_package(data, output): + # Compute total build duration + total = 0 + for p in data: + total += p.get_duration() + + # Build the list of labels and values, and filter the packages + # that account for less than 1% of the build time. + labels = [] + values = [] + other_value = 0 + for p in sorted(data, key=lambda p: p.get_duration()): + if p.get_duration() < (total * 0.01): + other_value += p.get_duration() + else: + labels.append(p.name) + values.append(p.get_duration()) + + labels.append('Other') + values.append(other_value) + + plt.figure() + + # Draw pie graph + patches, texts, autotexts = plt.pie(values, labels=labels, + autopct='%1.1f%%', shadow=True, + colors=colors) + + # Reduce text size + proptease = fm.FontProperties() + proptease.set_size('xx-small') + plt.setp(autotexts, fontproperties=proptease) + plt.setp(texts, fontproperties=proptease) + + plt.title('Build time per package') + plt.savefig(output) + + +# Generate a pie chart with a portion for the overall time spent in +# each step for all packages. +def pkg_pie_time_per_step(data, output): + steps_values = [] + for step in steps: + val = 0 + for p in data: + val += p.get_duration(step) + steps_values.append(val) + + plt.figure() + + # Draw pie graph + patches, texts, autotexts = plt.pie(steps_values, labels=steps, + autopct='%1.1f%%', shadow=True, + colors=colors) + + # Reduce text size + proptease = fm.FontProperties() + proptease.set_size('xx-small') + plt.setp(autotexts, fontproperties=proptease) + plt.setp(texts, fontproperties=proptease) + + plt.title('Build time per step') + plt.savefig(output) + + +# Parses the csv file passed on standard input and returns a list of +# Package objects, filed with the duration of each step and the total +# duration of the package. +def read_data(input_file): + if input_file is None: + input_file = sys.stdin + else: + input_file = open(input_file) + reader = csv.reader(input_file, delimiter=':') + pkgs = [] + + # Auxilliary function to find a package by name in the list. + def getpkg(name): + for p in pkgs: + if p.name == name: + return p + return None + + for row in reader: + time = int(row[0].strip()) + state = row[1].strip() + step = row[2].strip() + pkg = row[3].strip() + + p = getpkg(pkg) + if p is None: + p = Package(pkg) + pkgs.append(p) + + p.add_step(step, state, time) + + return pkgs + + +parser = argparse.ArgumentParser(description='Draw build time graphs') +parser.add_argument("--type", '-t', metavar="GRAPH_TYPE", + help="Type of graph (histogram, pie-packages, pie-steps)") +parser.add_argument("--order", '-O', metavar="GRAPH_ORDER", + help="Ordering of packages: build or duration (for histogram only)") +parser.add_argument("--alternate-colors", '-c', action="store_true", + help="Use alternate colour-scheme") +parser.add_argument("--input", '-i', metavar="INPUT", + help="Input file (usually $(O)/build/build-time.log)") +parser.add_argument("--output", '-o', metavar="OUTPUT", required=True, + help="Output file (.pdf or .png extension)") +args = parser.parse_args() + +d = read_data(args.input) + +if args.alternate_colors: + colors = alternate_colors +else: + colors = default_colors + +if args.type == "histogram" or args.type is None: + if args.order == "build" or args.order == "duration" or args.order == "name": + pkg_histogram(d, args.output, args.order) + elif args.order is None: + pkg_histogram(d, args.output, "name") + else: + sys.stderr.write("Unknown ordering: %s\n" % args.order) + exit(1) +elif args.type == "pie-packages": + pkg_pie_time_per_package(d, args.output) +elif args.type == "pie-steps": + pkg_pie_time_per_step(d, args.output) +else: + sys.stderr.write("Unknown type: %s\n" % args.type) + exit(1) diff --git a/buildroot/support/scripts/graph-depends b/buildroot/support/scripts/graph-depends new file mode 100755 index 0000000..85c9bf0 --- /dev/null +++ b/buildroot/support/scripts/graph-depends @@ -0,0 +1,413 @@ +#!/usr/bin/env python + +# Usage (the graphviz package must be installed in your distribution) +# ./support/scripts/graph-depends [-p package-name] > test.dot +# dot -Tpdf test.dot -o test.pdf +# +# With no arguments, graph-depends will draw a complete graph of +# dependencies for the current configuration. +# If '-p ' is specified, graph-depends will draw a graph +# of dependencies for the given package name. +# If '-d ' is specified, graph-depends will limit the depth of +# the dependency graph to 'depth' levels. +# +# Limitations +# +# * Some packages have dependencies that depend on the Buildroot +# configuration. For example, many packages have a dependency on +# openssl if openssl has been enabled. This tool will graph the +# dependencies as they are with the current Buildroot +# configuration. +# +# Copyright (C) 2010-2013 Thomas Petazzoni + +import sys +import subprocess +import argparse +from fnmatch import fnmatch + +import brpkgutil + +# Modes of operation: +MODE_FULL = 1 # draw full dependency graph for all selected packages +MODE_PKG = 2 # draw dependency graph for a given package +mode = 0 + +# Limit drawing the dependency graph to this depth. 0 means 'no limit'. +max_depth = 0 + +# Whether to draw the transitive dependencies +transitive = True + +parser = argparse.ArgumentParser(description="Graph packages dependencies") +parser.add_argument("--check-only", "-C", dest="check_only", action="store_true", default=False, + help="Only do the dependency checks (circular deps...)") +parser.add_argument("--outfile", "-o", metavar="OUT_FILE", dest="outfile", + help="File in which to generate the dot representation") +parser.add_argument("--package", '-p', metavar="PACKAGE", + help="Graph the dependencies of PACKAGE") +parser.add_argument("--depth", '-d', metavar="DEPTH", dest="depth", type=int, default=0, + help="Limit the dependency graph to DEPTH levels; 0 means no limit.") +parser.add_argument("--stop-on", "-s", metavar="PACKAGE", dest="stop_list", action="append", + help="Do not graph past this package (can be given multiple times)." + + " Can be a package name or a glob, " + + " 'virtual' to stop on virtual packages, or " + + "'host' to stop on host packages.") +parser.add_argument("--exclude", "-x", metavar="PACKAGE", dest="exclude_list", action="append", + help="Like --stop-on, but do not add PACKAGE to the graph.") +parser.add_argument("--colours", "-c", metavar="COLOR_LIST", dest="colours", + default="lightblue,grey,gainsboro", + help="Comma-separated list of the three colours to use" + + " to draw the top-level package, the target" + + " packages, and the host packages, in this order." + + " Defaults to: 'lightblue,grey,gainsboro'") +parser.add_argument("--transitive", dest="transitive", action='store_true', + default=False) +parser.add_argument("--no-transitive", dest="transitive", action='store_false', + help="Draw (do not draw) transitive dependencies") +parser.add_argument("--direct", dest="direct", action='store_true', default=True, + help="Draw direct dependencies (the default)") +parser.add_argument("--reverse", dest="direct", action='store_false', + help="Draw reverse dependencies") +args = parser.parse_args() + +check_only = args.check_only + +if args.outfile is None: + outfile = sys.stdout +else: + if check_only: + sys.stderr.write("don't specify outfile and check-only at the same time\n") + sys.exit(1) + outfile = open(args.outfile, "w") + +if args.package is None: + mode = MODE_FULL +else: + mode = MODE_PKG + rootpkg = args.package + +max_depth = args.depth + +if args.stop_list is None: + stop_list = [] +else: + stop_list = args.stop_list + +if args.exclude_list is None: + exclude_list = [] +else: + exclude_list = args.exclude_list + +transitive = args.transitive + +if args.direct: + get_depends_func = brpkgutil.get_depends + arrow_dir = "forward" +else: + if mode == MODE_FULL: + sys.stderr.write("--reverse needs a package\n") + sys.exit(1) + get_depends_func = brpkgutil.get_rdepends + arrow_dir = "back" + +# Get the colours: we need exactly three colours, +# so no need not split more than 4 +# We'll let 'dot' validate the colours... +colours = args.colours.split(',', 4) +if len(colours) != 3: + sys.stderr.write("Error: incorrect colour list '%s'\n" % args.colours) + sys.exit(1) +root_colour = colours[0] +target_colour = colours[1] +host_colour = colours[2] + +allpkgs = [] + + +# Execute the "make show-targets" command to get the list of the main +# Buildroot PACKAGES and return it formatted as a Python list. This +# list is used as the starting point for full dependency graphs +def get_targets(): + sys.stderr.write("Getting targets\n") + cmd = ["make", "-s", "--no-print-directory", "show-targets"] + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) + output = p.communicate()[0].strip() + if p.returncode != 0: + return None + if output == '': + return [] + return output.split(' ') + + +# Recursive function that builds the tree of dependencies for a given +# list of packages. The dependencies are built in a list called +# 'dependencies', which contains tuples of the form (pkg1 -> +# pkg2_on_which_pkg1_depends, pkg3 -> pkg4_on_which_pkg3_depends) and +# the function finally returns this list. +def get_all_depends(pkgs): + dependencies = [] + + # Filter the packages for which we already have the dependencies + filtered_pkgs = [] + for pkg in pkgs: + if pkg in allpkgs: + continue + filtered_pkgs.append(pkg) + allpkgs.append(pkg) + + if len(filtered_pkgs) == 0: + return [] + + depends = get_depends_func(filtered_pkgs) + + deps = set() + for pkg in filtered_pkgs: + pkg_deps = depends[pkg] + + # This package has no dependency. + if pkg_deps == []: + continue + + # Add dependencies to the list of dependencies + for dep in pkg_deps: + dependencies.append((pkg, dep)) + deps.add(dep) + + if len(deps) != 0: + newdeps = get_all_depends(deps) + if newdeps is not None: + dependencies += newdeps + + return dependencies + + +# The Graphviz "dot" utility doesn't like dashes in node names. So for +# node names, we strip all dashes. +def pkg_node_name(pkg): + return pkg.replace("-", "") + + +TARGET_EXCEPTIONS = [ + "target-finalize", + "target-post-image", +] + +# In full mode, start with the result of get_targets() to get the main +# targets and then use get_all_depends() for all targets +if mode == MODE_FULL: + targets = get_targets() + dependencies = [] + allpkgs.append('all') + filtered_targets = [] + for tg in targets: + # Skip uninteresting targets + if tg in TARGET_EXCEPTIONS: + continue + dependencies.append(('all', tg)) + filtered_targets.append(tg) + deps = get_all_depends(filtered_targets) + if deps is not None: + dependencies += deps + rootpkg = 'all' + +# In pkg mode, start directly with get_all_depends() on the requested +# package +elif mode == MODE_PKG: + dependencies = get_all_depends([rootpkg]) + +# Make the dependencies a dictionnary { 'pkg':[dep1, dep2, ...] } +dict_deps = {} +for dep in dependencies: + if dep[0] not in dict_deps: + dict_deps[dep[0]] = [] + dict_deps[dep[0]].append(dep[1]) + +# Basic cache for the results of the is_dep() function, in order to +# optimize the execution time. The cache is a dict of dict of boolean +# values. The key to the primary dict is "pkg", and the key of the +# sub-dicts is "pkg2". +is_dep_cache = {} + + +def is_dep_cache_insert(pkg, pkg2, val): + try: + is_dep_cache[pkg].update({pkg2: val}) + except KeyError: + is_dep_cache[pkg] = {pkg2: val} + + +# Retrieves from the cache whether pkg2 is a transitive dependency +# of pkg. +# Note: raises a KeyError exception if the dependency is not known. +def is_dep_cache_lookup(pkg, pkg2): + return is_dep_cache[pkg][pkg2] + + +# This function return True if pkg is a dependency (direct or +# transitive) of pkg2, dependencies being listed in the deps +# dictionary. Returns False otherwise. +# This is the un-cached version. +def is_dep_uncached(pkg, pkg2, deps): + try: + for p in deps[pkg2]: + if pkg == p: + return True + if is_dep(pkg, p, deps): + return True + except KeyError: + pass + return False + + +# See is_dep_uncached() above; this is the cached version. +def is_dep(pkg, pkg2, deps): + try: + return is_dep_cache_lookup(pkg, pkg2) + except KeyError: + val = is_dep_uncached(pkg, pkg2, deps) + is_dep_cache_insert(pkg, pkg2, val) + return val + + +# This function eliminates transitive dependencies; for example, given +# these dependency chain: A->{B,C} and B->{C}, the A->{C} dependency is +# already covered by B->{C}, so C is a transitive dependency of A, via B. +# The functions does: +# - for each dependency d[i] of the package pkg +# - if d[i] is a dependency of any of the other dependencies d[j] +# - do not keep d[i] +# - otherwise keep d[i] +def remove_transitive_deps(pkg, deps): + d = deps[pkg] + new_d = [] + for i in range(len(d)): + keep_me = True + for j in range(len(d)): + if j == i: + continue + if is_dep(d[i], d[j], deps): + keep_me = False + if keep_me: + new_d.append(d[i]) + return new_d + + +# This function removes the dependency on some 'mandatory' package, like the +# 'toolchain' package, or the 'skeleton' package +def remove_mandatory_deps(pkg, deps): + return [p for p in deps[pkg] if p not in ['toolchain', 'skeleton']] + + +# This function will check that there is no loop in the dependency chain +# As a side effect, it builds up the dependency cache. +def check_circular_deps(deps): + def recurse(pkg): + if pkg not in list(deps.keys()): + return + if pkg in not_loop: + return + not_loop.append(pkg) + chain.append(pkg) + for p in deps[pkg]: + if p in chain: + sys.stderr.write("\nRecursion detected for : %s\n" % (p)) + while True: + _p = chain.pop() + sys.stderr.write("which is a dependency of: %s\n" % (_p)) + if p == _p: + sys.exit(1) + recurse(p) + chain.pop() + + not_loop = [] + chain = [] + for pkg in list(deps.keys()): + recurse(pkg) + + +# This functions trims down the dependency list of all packages. +# It applies in sequence all the dependency-elimination methods. +def remove_extra_deps(deps): + for pkg in list(deps.keys()): + if not pkg == 'all': + deps[pkg] = remove_mandatory_deps(pkg, deps) + for pkg in list(deps.keys()): + if not transitive or pkg == 'all': + deps[pkg] = remove_transitive_deps(pkg, deps) + return deps + + +check_circular_deps(dict_deps) +if check_only: + sys.exit(0) + +dict_deps = remove_extra_deps(dict_deps) +dict_version = brpkgutil.get_version([pkg for pkg in allpkgs + if pkg != "all" and not pkg.startswith("root")]) + + +# Print the attributes of a node: label and fill-color +def print_attrs(pkg): + name = pkg_node_name(pkg) + if pkg == 'all': + label = 'ALL' + else: + label = pkg + if pkg == 'all' or (mode == MODE_PKG and pkg == rootpkg): + color = root_colour + else: + if pkg.startswith('host') \ + or pkg.startswith('toolchain') \ + or pkg.startswith('rootfs'): + color = host_colour + else: + color = target_colour + version = dict_version.get(pkg) + if version == "virtual": + outfile.write("%s [label = <%s>]\n" % (name, label)) + else: + outfile.write("%s [label = \"%s\"]\n" % (name, label)) + outfile.write("%s [color=%s,style=filled]\n" % (name, color)) + + +# Print the dependency graph of a package +def print_pkg_deps(depth, pkg): + if pkg in done_deps: + return + done_deps.append(pkg) + print_attrs(pkg) + if pkg not in dict_deps: + return + for p in stop_list: + if fnmatch(pkg, p): + return + if dict_version.get(pkg) == "virtual" and "virtual" in stop_list: + return + if pkg.startswith("host-") and "host" in stop_list: + return + if max_depth == 0 or depth < max_depth: + for d in dict_deps[pkg]: + if dict_version.get(d) == "virtual" \ + and "virtual" in exclude_list: + continue + if d.startswith("host-") \ + and "host" in exclude_list: + continue + add = True + for p in exclude_list: + if fnmatch(d, p): + add = False + break + if add: + outfile.write("%s -> %s [dir=%s]\n" % (pkg_node_name(pkg), pkg_node_name(d), arrow_dir)) + print_pkg_deps(depth + 1, d) + + +# Start printing the graph data +outfile.write("digraph G {\n") + +done_deps = [] +print_pkg_deps(0, rootpkg) + +outfile.write("}\n") diff --git a/buildroot/support/scripts/hardlink-or-copy b/buildroot/support/scripts/hardlink-or-copy new file mode 100755 index 0000000..a052318 --- /dev/null +++ b/buildroot/support/scripts/hardlink-or-copy @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# Try to hardlink a file into a directory, fallback to copy on failure. +# +# Hardlink-or-copy the source file in the first argument into the +# destination directory in the second argument, using the basename in +# the third argument as basename for the destination file. If the third +# argument is missing, use the basename of the source file as basename +# for the destination file. +# +# In either case, remove the destination prior to doing the +# hardlink-or-copy. +# +# Note that this is NOT an atomic operation. + +set -e + +main() { + local src_file="${1}" + local dst_dir="${2}" + local dst_file="${3}" + + if [ -n "${dst_file}" ]; then + dst_file="${dst_dir}/${dst_file}" + else + dst_file="${dst_dir}/${src_file##*/}" + fi + + mkdir -p "${dst_dir}" + rm -f "${dst_file}" + ln -f "${src_file}" "${dst_file}" 2>/dev/null \ + || cp -f "${src_file}" "${dst_file}" +} + +main "${@}" diff --git a/buildroot/support/scripts/mkmakefile b/buildroot/support/scripts/mkmakefile new file mode 100755 index 0000000..37162a3 --- /dev/null +++ b/buildroot/support/scripts/mkmakefile @@ -0,0 +1,45 @@ +#!/bin/sh +# Generates a small Makefile used in the root of the output +# directory, to allow make to be started from there. +# The Makefile also allow for more convenient build of external modules + +# Usage +# $1 - Kernel src directory +# $2 - Output directory + + +test ! -r $2/Makefile -o -O $2/Makefile || exit 0 +# Only overwrite automatically generated Makefiles +# (so we do not overwrite buildroot Makefile) +if test -e $2/Makefile && ! grep -q Automatically $2/Makefile +then + exit 0 +fi +echo " GEN $2/Makefile" + +cat << EOF > $2/Makefile +# Automatically generated by $0: don't edit + +lastword = \$(word \$(words \$(1)),\$(1)) +makedir := \$(dir \$(call lastword,\$(MAKEFILE_LIST))) + +MAKEARGS := -C $1 +MAKEARGS += O=\$(if \$(patsubst /%,,\$(makedir)),\$(CURDIR)/)\$(patsubst %/,%,\$(makedir)) + +MAKEFLAGS += --no-print-directory + +.PHONY: _all \$(MAKECMDGOALS) + +all := \$(filter-out Makefile,\$(MAKECMDGOALS)) + +_all: + umask 0022 && \$(MAKE) \$(MAKEARGS) \$(all) + +Makefile:; + +\$(all): _all + @: + +%/: _all + @: +EOF diff --git a/buildroot/support/scripts/mkusers b/buildroot/support/scripts/mkusers new file mode 100755 index 0000000..5bbec3e --- /dev/null +++ b/buildroot/support/scripts/mkusers @@ -0,0 +1,434 @@ +#!/usr/bin/env bash +set -e +myname="${0##*/}" + +#---------------------------------------------------------------------------- +# Configurable items +MIN_UID=1000 +MAX_UID=1999 +MIN_GID=1000 +MAX_GID=1999 +# No more is configurable below this point +#---------------------------------------------------------------------------- + +#---------------------------------------------------------------------------- +error() { + local fmt="${1}" + shift + + printf "%s: " "${myname}" >&2 + printf "${fmt}" "${@}" >&2 +} +fail() { + error "$@" + exit 1 +} + +#---------------------------------------------------------------------------- +if [ ${#} -ne 2 ]; then + fail "usage: %s USERS_TABLE TARGET_DIR\n" +fi +USERS_TABLE="${1}" +TARGET_DIR="${2}" +shift 2 +PASSWD="${TARGET_DIR}/etc/passwd" +SHADOW="${TARGET_DIR}/etc/shadow" +GROUP="${TARGET_DIR}/etc/group" +# /etc/gshadow is not part of the standard skeleton, so not everybody +# will have it, but some may have it, and its content must be in sync +# with /etc/group, so any use of gshadow must be conditional. +GSHADOW="${TARGET_DIR}/etc/gshadow" + +# We can't simply source ${BR2_CONFIG} as it may contains constructs +# such as: +# BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +# which when sourced from a shell script will eventually try to execute +# a command named 'CONFIG_DIR', which is plain wrong for virtually every +# systems out there. +# So, we have to scan that file instead. Sigh... :-( +PASSWD_METHOD="$( sed -r -e '/^BR2_TARGET_GENERIC_PASSWD_METHOD="(.*)"$/!d;' \ + -e 's//\1/;' \ + "${BR2_CONFIG}" \ + )" + +#---------------------------------------------------------------------------- +get_uid() { + local username="${1}" + + awk -F: -v username="${username}" \ + '$1 == username { printf( "%d\n", $3 ); }' "${PASSWD}" +} + +#---------------------------------------------------------------------------- +get_ugid() { + local username="${1}" + + awk -F: -v username="${username}" \ + '$1 == username { printf( "%d\n", $4 ); }' "${PASSWD}" +} + +#---------------------------------------------------------------------------- +get_gid() { + local group="${1}" + + awk -F: -v group="${group}" \ + '$1 == group { printf( "%d\n", $3 ); }' "${GROUP}" +} + +#---------------------------------------------------------------------------- +get_username() { + local uid="${1}" + + awk -F: -v uid="${uid}" \ + '$3 == uid { printf( "%s\n", $1 ); }' "${PASSWD}" +} + +#---------------------------------------------------------------------------- +get_group() { + local gid="${1}" + + awk -F: -v gid="${gid}" \ + '$3 == gid { printf( "%s\n", $1 ); }' "${GROUP}" +} + +#---------------------------------------------------------------------------- +get_ugroup() { + local username="${1}" + local ugid + + ugid="$( get_ugid "${username}" )" + if [ -n "${ugid}" ]; then + get_group "${ugid}" + fi +} + +#---------------------------------------------------------------------------- +# Sanity-check the new user/group: +# - check the gid is not already used for another group +# - check the group does not already exist with another gid +# - check the user does not already exist with another gid +# - check the uid is not already used for another user +# - check the user does not already exist with another uid +# - check the user does not already exist in another group +check_user_validity() { + local username="${1}" + local uid="${2}" + local group="${3}" + local gid="${4}" + local _uid _ugid _gid _username _group _ugroup + + _group="$( get_group "${gid}" )" + _gid="$( get_gid "${group}" )" + _ugid="$( get_ugid "${username}" )" + _username="$( get_username "${uid}" )" + _uid="$( get_uid "${username}" )" + _ugroup="$( get_ugroup "${username}" )" + + if [ "${username}" = "root" ]; then + fail "invalid username '%s\n'" "${username}" + fi + + if [ ${gid} -lt -1 -o ${gid} -eq 0 ]; then + fail "invalid gid '%d' for '%s'\n" ${gid} "${username}" + elif [ ${gid} -ne -1 ]; then + # check the gid is not already used for another group + if [ -n "${_group}" -a "${_group}" != "${group}" ]; then + fail "gid '%d' for '%s' is already used by group '%s'\n" \ + ${gid} "${username}" "${_group}" + fi + + # check the group does not already exists with another gid + # Need to split the check in two, otherwise '[' complains it + # is missing arguments when _gid is empty + if [ -n "${_gid}" ] && [ ${_gid} -ne ${gid} ]; then + fail "group '%s' for '%s' already exists with gid '%d' (wants '%d')\n" \ + "${group}" "${username}" ${_gid} ${gid} + fi + + # check the user does not already exists with another gid + # Need to split the check in two, otherwise '[' complains it + # is missing arguments when _ugid is empty + if [ -n "${_ugid}" ] && [ ${_ugid} -ne ${gid} ]; then + fail "user '%s' already exists with gid '%d' (wants '%d')\n" \ + "${username}" ${_ugid} ${gid} + fi + fi + + if [ ${uid} -lt -1 -o ${uid} -eq 0 ]; then + fail "invalid uid '%d' for '%s'\n" ${uid} "${username}" + elif [ ${uid} -ne -1 ]; then + # check the uid is not already used for another user + if [ -n "${_username}" -a "${_username}" != "${username}" ]; then + fail "uid '%d' for '%s' already used by user '%s'\n" \ + ${uid} "${username}" "${_username}" + fi + + # check the user does not already exists with another uid + # Need to split the check in two, otherwise '[' complains it + # is missing arguments when _uid is empty + if [ -n "${_uid}" ] && [ ${_uid} -ne ${uid} ]; then + fail "user '%s' already exists with uid '%d' (wants '%d')\n" \ + "${username}" ${_uid} ${uid} + fi + fi + + # check the user does not already exist in another group + if [ -n "${_ugroup}" -a "${_ugroup}" != "${group}" ]; then + fail "user '%s' already exists with group '%s' (wants '%s')\n" \ + "${username}" "${_ugroup}" "${group}" + fi + + return 0 +} + +#---------------------------------------------------------------------------- +# Generate a unique GID for given group. If the group already exists, +# then simply report its current GID. Otherwise, generate the lowest GID +# that is: +# - not 0 +# - comprised in [MIN_GID..MAX_GID] +# - not already used by a group +generate_gid() { + local group="${1}" + local gid + + gid="$( get_gid "${group}" )" + if [ -z "${gid}" ]; then + for(( gid=MIN_GID; gid<=MAX_GID; gid++ )); do + if [ -z "$( get_group "${gid}" )" ]; then + break + fi + done + if [ ${gid} -gt ${MAX_GID} ]; then + fail "can not allocate a GID for group '%s'\n" "${group}" + fi + fi + printf "%d\n" "${gid}" +} + +#---------------------------------------------------------------------------- +# Add a group; if it does already exist, remove it first +add_one_group() { + local group="${1}" + local gid="${2}" + local _f + + # Generate a new GID if needed + if [ ${gid} -eq -1 ]; then + gid="$( generate_gid "${group}" )" + fi + + # Remove any previous instance of this group, and re-add the new one + sed -i --follow-symlinks -e '/^'"${group}"':.*/d;' "${GROUP}" + printf "%s:x:%d:\n" "${group}" "${gid}" >>"${GROUP}" + + # Ditto for /etc/gshadow if it exists + if [ -f "${GSHADOW}" ]; then + sed -i --follow-symlinks -e '/^'"${group}"':.*/d;' "${GSHADOW}" + printf "%s:*::\n" "${group}" >>"${GSHADOW}" + fi +} + +#---------------------------------------------------------------------------- +# Generate a unique UID for given username. If the username already exists, +# then simply report its current UID. Otherwise, generate the lowest UID +# that is: +# - not 0 +# - comprised in [MIN_UID..MAX_UID] +# - not already used by a user +generate_uid() { + local username="${1}" + local uid + + uid="$( get_uid "${username}" )" + if [ -z "${uid}" ]; then + for(( uid=MIN_UID; uid<=MAX_UID; uid++ )); do + if [ -z "$( get_username "${uid}" )" ]; then + break + fi + done + if [ ${uid} -gt ${MAX_UID} ]; then + fail "can not allocate a UID for user '%s'\n" "${username}" + fi + fi + printf "%d\n" "${uid}" +} + +#---------------------------------------------------------------------------- +# Add given user to given group, if not already the case +add_user_to_group() { + local username="${1}" + local group="${2}" + local _f + + for _f in "${GROUP}" "${GSHADOW}"; do + [ -f "${_f}" ] || continue + sed -r -i --follow-symlinks \ + -e 's/^('"${group}"':.*:)(([^:]+,)?)'"${username}"'(,[^:]+*)?$/\1\2\4/;' \ + -e 's/^('"${group}"':.*)$/\1,'"${username}"'/;' \ + -e 's/,+/,/' \ + -e 's/:,/:/' \ + "${_f}" + done +} + +#---------------------------------------------------------------------------- +# Encode a password +encode_password() { + local passwd="${1}" + + mkpasswd -m "${PASSWD_METHOD}" "${passwd}" +} + +#---------------------------------------------------------------------------- +# Add a user; if it does already exist, remove it first +add_one_user() { + local username="${1}" + local uid="${2}" + local group="${3}" + local gid="${4}" + local passwd="${5}" + local home="${6}" + local shell="${7}" + local groups="${8}" + local comment="${9}" + local _f _group _home _shell _gid _passwd + + # First, sanity-check the user + check_user_validity "${username}" "${uid}" "${group}" "${gid}" + + # Generate a new UID if needed + if [ ${uid} -eq -1 ]; then + uid="$( generate_uid "${username}" )" + fi + + # Remove any previous instance of this user + for _f in "${PASSWD}" "${SHADOW}"; do + sed -r -i --follow-symlinks -e '/^'"${username}"':.*/d;' "${_f}" + done + + _gid="$( get_gid "${group}" )" + _shell="${shell}" + if [ "${shell}" = "-" ]; then + _shell="/bin/false" + fi + case "${home}" in + -) _home="/";; + /) fail "home can not explicitly be '/'\n";; + /*) _home="${home}";; + *) fail "home must be an absolute path\n";; + esac + case "${passwd}" in + -) + _passwd="" + ;; + !=*) + _passwd='!'"$( encode_password "${passwd#!=}" )" + ;; + =*) + _passwd="$( encode_password "${passwd#=}" )" + ;; + *) + _passwd="${passwd}" + ;; + esac + + printf "%s:x:%d:%d:%s:%s:%s\n" \ + "${username}" "${uid}" "${_gid}" \ + "${comment}" "${_home}" "${_shell}" \ + >>"${PASSWD}" + printf "%s:%s:::::::\n" \ + "${username}" "${_passwd}" \ + >>"${SHADOW}" + + # Add the user to its additional groups + if [ "${groups}" != "-" ]; then + for _group in ${groups//,/ }; do + add_user_to_group "${username}" "${_group}" + done + fi + + # If the user has a home, chown it + # (Note: stdout goes to the fakeroot-script) + if [ "${home}" != "-" ]; then + mkdir -p "${TARGET_DIR}/${home}" + printf "chown -h -R %d:%d '%s'\n" "${uid}" "${_gid}" "${TARGET_DIR}/${home}" + fi +} + +#---------------------------------------------------------------------------- +main() { + local username uid group gid passwd home shell groups comment + local line + local -a ENTRIES + + # Some sanity checks + if [ ${MIN_UID} -le 0 ]; then + fail "MIN_UID must be >0 (currently %d)\n" ${MIN_UID} + fi + if [ ${MIN_GID} -le 0 ]; then + fail "MIN_GID must be >0 (currently %d)\n" ${MIN_GID} + fi + + # Read in all the file in memory, exclude empty lines and comments + while read line; do + ENTRIES+=( "${line}" ) + done < <( sed -r -e 's/#.*//; /^[[:space:]]*$/d;' "${USERS_TABLE}" ) + + # We first create groups whose gid is not -1, and then we create groups + # whose gid is -1 (automatic), so that, if a group is defined both with + # a specified gid and an automatic gid, we ensure the specified gid is + # used, rather than a different automatic gid is computed. + + # First, create all the main groups which gid is *not* automatic + for line in "${ENTRIES[@]}"; do + read username uid group gid passwd home shell groups comment <<<"${line}" + [ ${gid} -ge 0 ] || continue # Automatic gid + add_one_group "${group}" "${gid}" + done + + # Then, create all the main groups which gid *is* automatic + for line in "${ENTRIES[@]}"; do + read username uid group gid passwd home shell groups comment <<<"${line}" + [ ${gid} -eq -1 ] || continue # Non-automatic gid + add_one_group "${group}" "${gid}" + done + + # Then, create all the additional groups + # If any additional group is already a main group, we should use + # the gid of that main group; otherwise, we can use any gid + for line in "${ENTRIES[@]}"; do + read username uid group gid passwd home shell groups comment <<<"${line}" + if [ "${groups}" != "-" ]; then + for g in ${groups//,/ }; do + add_one_group "${g}" -1 + done + fi + done + + # When adding users, we do as for groups, in case two packages create + # the same user, one with an automatic uid, the other with a specified + # uid, to ensure the specified uid is used, rather than an incompatible + # uid be generated. + + # Now, add users whose uid is *not* automatic + for line in "${ENTRIES[@]}"; do + read username uid group gid passwd home shell groups comment <<<"${line}" + [ "${username}" != "-" ] || continue # Magic string to skip user creation + [ ${uid} -ge 0 ] || continue # Automatic uid + add_one_user "${username}" "${uid}" "${group}" "${gid}" "${passwd}" \ + "${home}" "${shell}" "${groups}" "${comment}" + done + + # Finally, add users whose uid *is* automatic + for line in "${ENTRIES[@]}"; do + read username uid group gid passwd home shell groups comment <<<"${line}" + [ "${username}" != "-" ] || continue # Magic string to skip user creation + [ ${uid} -eq -1 ] || continue # Non-automatic uid + add_one_user "${username}" "${uid}" "${group}" "${gid}" "${passwd}" \ + "${home}" "${shell}" "${groups}" "${comment}" + done +} + +#---------------------------------------------------------------------------- +main "${@}" diff --git a/buildroot/support/scripts/pkg-stats b/buildroot/support/scripts/pkg-stats new file mode 100755 index 0000000..48a2cc2 --- /dev/null +++ b/buildroot/support/scripts/pkg-stats @@ -0,0 +1,455 @@ +#!/usr/bin/env bash + +# Copyright (C) 2009 by Thomas Petazzoni +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# This script generates an HTML file that contains a report about all +# Buildroot packages, their usage of the different package +# infrastructure and possible cleanup actions +# +# Run the script from the Buildroot toplevel directory: +# +# ./support/scripts/pkg-stats > /tmp/pkg.html +# + +echo " + + +Statistics of Buildroot packages + + +Results
+ +

+ + + + + + + + + + + + +" + +autotools_packages=0 +cmake_packages=0 +kconfig_packages=0 +luarocks_package=0 +perl_packages=0 +python_packages=0 +rebar_packages=0 +virtual_packages=0 +generic_packages=0 +waf_packages=0 +manual_packages=0 +packages_with_licence=0 +packages_without_licence=0 +packages_with_license_files=0 +packages_without_license_files=0 +packages_with_hash_file=0 +packages_without_hash_file=0 +total_patch_count=0 +cnt=0 + +for i in $(find boot/ linux/ package/ toolchain/ -name '*.mk' | sort) ; do + + if test \ + $i = "boot/common.mk" -o \ + $i = "linux/linux-ext-ev3dev-linux-drivers.mk" -o \ + $i = "linux/linux-ext-fbtft.mk" -o \ + $i = "linux/linux-ext-xenomai.mk" -o \ + $i = "linux/linux-ext-rtai.mk" -o \ + $i = "package/freescale-imx/freescale-imx.mk" -o \ + $i = "package/gcc/gcc.mk" -o \ + $i = "package/gstreamer/gstreamer.mk" -o \ + $i = "package/gstreamer1/gstreamer1.mk" -o \ + $i = "package/gtk2-themes/gtk2-themes.mk" -o \ + $i = "package/matchbox/matchbox.mk" -o \ + $i = "package/opengl/opengl.mk" -o \ + $i = "package/qt5/qt5.mk" -o \ + $i = "package/x11r7/x11r7.mk" -o \ + $i = "package/doc-asciidoc.mk" -o \ + $i = "package/pkg-autotools.mk" -o \ + $i = "package/pkg-cmake.mk" -o \ + $i = "package/pkg-kconfig.mk" -o \ + $i = "package/pkg-luarocks.mk" -o \ + $i = "package/pkg-perl.mk" -o \ + $i = "package/pkg-python.mk" -o \ + $i = "package/pkg-rebar.mk" -o \ + $i = "package/pkg-virtual.mk" -o \ + $i = "package/pkg-download.mk" -o \ + $i = "package/pkg-generic.mk" -o \ + $i = "package/pkg-waf.mk" -o \ + $i = "package/pkg-kernel-module.mk" -o \ + $i = "package/pkg-utils.mk" -o \ + $i = "package/nvidia-tegra23/nvidia-tegra23.mk" -o \ + $i = "toolchain/toolchain-external/pkg-toolchain-external.mk" -o \ + $i = "toolchain/toolchain-external/toolchain-external.mk" -o \ + $i = "toolchain/toolchain.mk" -o \ + $i = "toolchain/helpers.mk" -o \ + $i = "toolchain/toolchain-wrapper.mk" ; then + echo "skipping $i" 1>&2 + continue + fi + + cnt=$((cnt+1)) + + hashost=0 + hastarget=0 + infratype="" + + # Determine package infrastructure + if grep -E "\(host-autotools-package\)" $i > /dev/null ; then + infratype="autotools" + hashost=1 + fi + + if grep -E "\(autotools-package\)" $i > /dev/null ; then + infratype="autotools" + hastarget=1 + fi + + if grep -E "\(kconfig-package\)" $i > /dev/null ; then + infratype="kconfig" + hastarget=1 + fi + + if grep -E "\(host-luarocks-package\)" $i > /dev/null ; then + infratype="luarocks" + hashost=1 + fi + + if grep -E "\(luarocks-package\)" $i > /dev/null ; then + infratype="luarocks" + hastarget=1 + fi + + if grep -E "\(host-perl-package\)" $i > /dev/null ; then + infratype="perl" + hashost=1 + fi + + if grep -E "\(perl-package\)" $i > /dev/null ; then + infratype="perl" + hastarget=1 + fi + + if grep -E "\(host-python-package\)" $i > /dev/null ; then + infratype="python" + hashost=1 + fi + + if grep -E "\(python-package\)" $i > /dev/null ; then + infratype="python" + hastarget=1 + fi + + if grep -E "\(host-rebar-package\)" $i > /dev/null ; then + infratype="rebar" + hashost=1 + fi + + if grep -E "\(rebar-package\)" $i > /dev/null ; then + infratype="rebar" + hastarget=1 + fi + + if grep -E "\(host-virtual-package\)" $i > /dev/null ; then + infratype="virtual" + hashost=1 + fi + + if grep -E "\(virtual-package\)" $i > /dev/null ; then + infratype="virtual" + hastarget=1 + fi + + if grep -E "\(host-generic-package\)" $i > /dev/null ; then + infratype="generic" + hashost=1 + fi + + if grep -E "\(generic-package\)" $i > /dev/null ; then + infratype="generic" + hastarget=1 + fi + + if grep -E "\(host-cmake-package\)" $i > /dev/null ; then + infratype="cmake" + hashost=1 + fi + + if grep -E "\(cmake-package\)" $i > /dev/null ; then + infratype="cmake" + hastarget=1 + fi + + if grep -E "\(toolchain-external-package\)" $i > /dev/null ; then + infratype="toolchain-external" + hastarget=1 + fi + + if grep -E "\(waf-package\)" $i > /dev/null ; then + infratype="waf" + hastarget=1 + fi + + pkg=$(basename $i) + dir=$(dirname $i) + pkg=${pkg%.mk} + pkgvariable=$(echo ${pkg} | tr "a-z-" "A-Z_") + + + # Count packages per infrastructure + if [ -z ${infratype} ] ; then + infratype="manual" + manual_packages=$(($manual_packages+1)) + elif [ ${infratype} = "autotools" ]; then + autotools_packages=$(($autotools_packages+1)) + elif [ ${infratype} = "cmake" ]; then + cmake_packages=$(($cmake_packages+1)) + elif [ ${infratype} = "kconfig" ]; then + kconfig_packages=$(($kconfig_packages+1)) + elif [ ${infratype} = "luarocks" ]; then + luarocks_packages=$(($luarocks_packages+1)) + elif [ ${infratype} = "perl" ]; then + perl_packages=$(($perl_packages+1)) + elif [ ${infratype} = "python" ]; then + python_packages=$(($python_packages+1)) + elif [ ${infratype} = "rebar" ]; then + rebar_packages=$(($rebar_packages+1)) + elif [ ${infratype} = "virtual" ]; then + virtual_packages=$(($virtual_packages+1)) + elif [ ${infratype} = "generic" ]; then + generic_packages=$(($generic_packages+1)) + elif [ ${infratype} = "waf" ]; then + waf_packages=$(($waf_packages+1)) + fi + + if grep -qE "^${pkgvariable}_LICENSE[ ]*=" $i ; then + packages_with_license=$(($packages_with_license+1)) + license=1 + else + packages_without_license=$(($packages_without_license+1)) + license=0 + fi + + if grep -qE "^${pkgvariable}_LICENSE_FILES[ ]*=" $i ; then + packages_with_license_files=$(($packages_with_license_files+1)) + license_files=1 + else + packages_without_license_files=$(($packages_without_license_files+1)) + license_files=0 + fi + + if test -f ${dir}/${pkg}.hash; then + packages_with_hash_file=$(($packages_with_hash_file+1)) + hash_file=1 + else + packages_without_hash_file=$(($packages_without_hash_file+1)) + hash_file=0 + fi + + echo "" + + echo "" + echo "" + + package_dir=$(dirname $i) + patch_count=$(find ${package_dir} -name '*.patch' | wc -l) + total_patch_count=$(($total_patch_count+$patch_count)) + + if test $patch_count -lt 1 ; then + patch_count_class="nopatches" + elif test $patch_count -lt 5 ; then + patch_count_class="somepatches" + else + patch_count_class="lotsofpatches" + fi + + echo "" + + if [ ${infratype} = "manual" ] ; then + echo "" + else + echo "" + fi + + if [ ${license} -eq 0 ] ; then + echo "" + else + echo "" + fi + + if [ ${license_files} -eq 0 ] ; then + echo "" + else + echo "" + fi + + if [ ${hash_file} -eq 0 ] ; then + echo "" + else + echo "" + fi + + file_list=$(find ${package_dir} -name '*.mk' -o -name '*.in*' -o -name '*.hash') + nwarnings=$(./utils/check-package ${file_list} 2>&1 | sed '/\([0-9]*\) warnings generated/!d; s//\1/') + if [ ${nwarnings} -eq 0 ] ; then + echo "" + else + echo "" + fi + + echo "" + +done +echo "
IdPackagePatch countInfrastructureLicenseLicense filesHash fileWarnings
$cnt$i" + echo "$patch_count" + echo "manual" + echo "${infratype}
" + if [ ${hashost} -eq 1 -a ${hastarget} -eq 1 ]; then + echo "target + host" + elif [ ${hashost} -eq 1 ]; then + echo "host" + else + echo "target" + fi + echo "
NoYesNoYesNoYes${nwarnings}${nwarnings}
" + +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "" +echo "
Packages using the generic infrastructure$generic_packages
Packages using the cmake infrastructure$cmake_packages
Packages using the autotools infrastructure$autotools_packages
Packages using the luarocks infrastructure$luarocks_packages
Packages using the kconfig infrastructure$kconfig_packages
Packages using the perl infrastructure$perl_packages
Packages using the python infrastructure$python_packages
Packages using the rebar infrastructure$rebar_packages
Packages using the virtual infrastructure$virtual_packages
Packages using the waf infrastructure$waf_packages
Packages not using any infrastructure$manual_packages
Packages having license information$packages_with_license
Packages not having licence information$packages_without_license
Packages having license files information$packages_with_license_files
Packages not having licence files information$packages_without_license_files
Packages having hash file$packages_with_hash_file
Packages not having hash file$packages_without_hash_file
Number of patches in all packages$total_patch_count
TOTAL$cnt
" + +echo "
" +echo "Updated on $(LANG=C date), Git commit $(git log master -n 1 --pretty=format:%H)" +echo "" + +echo " +" +echo "" diff --git a/buildroot/support/scripts/pycompile.py b/buildroot/support/scripts/pycompile.py new file mode 100644 index 0000000..9192a70 --- /dev/null +++ b/buildroot/support/scripts/pycompile.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +'''Wrapper for python2 and python3 around compileall to raise exception +when a python byte code generation failed. + +Inspired from: + http://stackoverflow.com/questions/615632/how-to-detect-errors-from-compileall-compile-dir +''' +from __future__ import print_function +import sys +import py_compile +import compileall +import argparse + + +def check_for_errors(comparison): + '''Wrap comparison operator with code checking for PyCompileError. + If PyCompileError was raised, re-raise it again to abort execution, + otherwise perform comparison as expected. + ''' + def operator(self, other): + exc_type, value, traceback = sys.exc_info() + if exc_type is not None and issubclass(exc_type, + py_compile.PyCompileError): + print("Cannot compile %s" % value.file) + raise value + + return comparison(self, other) + + return operator + + +class ReportProblem(int): + '''Class that pretends to be an int() object but implements all of its + comparison operators such that it'd detect being called in + PyCompileError handling context and abort execution + ''' + VALUE = 1 + + def __new__(cls, *args, **kwargs): + return int.__new__(cls, ReportProblem.VALUE, **kwargs) + + @check_for_errors + def __lt__(self, other): + return ReportProblem.VALUE < other + + @check_for_errors + def __eq__(self, other): + return ReportProblem.VALUE == other + + def __ge__(self, other): + return not self < other + + def __gt__(self, other): + return not self < other and not self == other + + def __ne__(self, other): + return not self == other + + +parser = argparse.ArgumentParser(description='Compile Python source files in a directory tree.') +parser.add_argument("target", metavar='DIRECTORY', + help='Directory to scan') +parser.add_argument("--force", action='store_true', + help="Force compilation even if alread compiled") + +args = parser.parse_args() + +compileall.compile_dir(args.target, force=args.force, quiet=ReportProblem()) diff --git a/buildroot/support/scripts/setlocalversion b/buildroot/support/scripts/setlocalversion new file mode 100755 index 0000000..33cd605 --- /dev/null +++ b/buildroot/support/scripts/setlocalversion @@ -0,0 +1,82 @@ +#!/bin/sh +# +# This scripts adds local version information from the version +# control systems git, mercurial (hg) and subversion (svn). +# +# If something goes wrong, send a mail the kernel build mailinglist +# (see MAINTAINERS) and CC Nico Schottelius +# . +# +# + +usage() { + echo "Usage: $0 [srctree]" >&2 + exit 1 +} + +cd "${1:-.}" || usage + +# Check for git and a git repo. +if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then + + # If we are at a tagged commit (like "v2.6.30-rc6"), we ignore it, + # because this version is defined in the top level Makefile. + if [ -z "`git describe --exact-match 2>/dev/null`" ]; then + + # If we are past a tagged commit (like "v2.6.30-rc5-302-g72357d5"), + # we pretty print it. + if atag="`git describe 2>/dev/null`"; then + echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}' + + # If we don't have a tag at all we print -g{commitish}. + else + printf '%s%s' -g $head + fi + fi + + # Is this git on svn? + if git config --get svn-remote.svn.url >/dev/null; then + printf -- '-svn%s' "`git svn find-rev $head`" + fi + + # Update index only on r/w media + [ -w . ] && git update-index --refresh --unmerged > /dev/null + + # Check for uncommitted changes + if git diff-index --name-only HEAD | grep -v "^scripts/package" \ + | read dummy; then + printf '%s' -dirty + fi + + # All done with git + exit +fi + +# Check for mercurial and a mercurial repo. +if hgid=`hg id 2>/dev/null`; then + tag=`printf '%s' "$hgid" | cut -d' ' -f2 --only-delimited` + + # Do we have an untagged version? + if [ -z "$tag" -o "$tag" = tip ]; then + id=`printf '%s' "$hgid" | sed 's/[+ ].*//'` + printf '%s%s' -hg "$id" + fi + + # Are there uncommitted changes? + # These are represented by + after the changeset id. + case "$hgid" in + *+|*+\ *) printf '%s' -dirty ;; + esac + + # All done with mercurial + exit +fi + +# Check for svn and a svn repo. +if rev=`LC_ALL=C svn info 2>/dev/null | grep '^Last Changed Rev'`; then + rev=`echo $rev | awk '{print $NF}'` + printf -- '-svn%s' "$rev" + + # All done with svn + exit +fi diff --git a/buildroot/support/scripts/size-stats b/buildroot/support/scripts/size-stats new file mode 100755 index 0000000..deea92e --- /dev/null +++ b/buildroot/support/scripts/size-stats @@ -0,0 +1,240 @@ +#!/usr/bin/env python + +# Copyright (C) 2014 by Thomas Petazzoni + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import sys +import os +import os.path +import argparse +import csv +import collections + +try: + import matplotlib + matplotlib.use('Agg') + import matplotlib.font_manager as fm + import matplotlib.pyplot as plt +except ImportError: + sys.stderr.write("You need python-matplotlib to generate the size graph\n") + exit(1) + +colors = ['#e60004', '#009836', '#2e1d86', '#ffed00', + '#0068b5', '#f28e00', '#940084', '#97c000'] + + +# +# This function adds a new file to 'filesdict', after checking its +# size. The 'filesdict' contain the relative path of the file as the +# key, and as the value a tuple containing the name of the package to +# which the file belongs and the size of the file. +# +# filesdict: the dict to which the file is added +# relpath: relative path of the file +# fullpath: absolute path to the file +# pkg: package to which the file belongs +# +def add_file(filesdict, relpath, abspath, pkg): + if not os.path.exists(abspath): + return + if os.path.islink(abspath): + return + sz = os.stat(abspath).st_size + filesdict[relpath] = (pkg, sz) + + +# +# This function returns a dict where each key is the path of a file in +# the root filesystem, and the value is a tuple containing two +# elements: the name of the package to which this file belongs and the +# size of the file. +# +# builddir: path to the Buildroot output directory +# +def build_package_dict(builddir): + filesdict = {} + with open(os.path.join(builddir, "build", "packages-file-list.txt")) as filelistf: + for l in filelistf.readlines(): + pkg, fpath = l.split(",", 1) + # remove the initial './' in each file path + fpath = fpath.strip()[2:] + fullpath = os.path.join(builddir, "target", fpath) + add_file(filesdict, fpath, fullpath, pkg) + return filesdict + + +# +# This function builds a dictionary that contains the name of a +# package as key, and the size of the files installed by this package +# as the value. +# +# filesdict: dictionary with the name of the files as key, and as +# value a tuple containing the name of the package to which the files +# belongs, and the size of the file. As returned by +# build_package_dict. +# +# builddir: path to the Buildroot output directory +# +def build_package_size(filesdict, builddir): + pkgsize = collections.defaultdict(int) + + seeninodes = set() + for root, _, files in os.walk(os.path.join(builddir, "target")): + for f in files: + fpath = os.path.join(root, f) + if os.path.islink(fpath): + continue + + st = os.stat(fpath) + if st.st_ino in seeninodes: + # hard link + continue + else: + seeninodes.add(st.st_ino) + + frelpath = os.path.relpath(fpath, os.path.join(builddir, "target")) + if frelpath not in filesdict: + print("WARNING: %s is not part of any package" % frelpath) + pkg = "unknown" + else: + pkg = filesdict[frelpath][0] + + pkgsize[pkg] += st.st_size + + return pkgsize + + +# +# Given a dict returned by build_package_size(), this function +# generates a pie chart of the size installed by each package. +# +# pkgsize: dictionary with the name of the package as a key, and the +# size as the value, as returned by build_package_size. +# +# outputf: output file for the graph +# +def draw_graph(pkgsize, outputf): + total = sum(pkgsize.values()) + labels = [] + values = [] + other_value = 0 + for (p, sz) in sorted(pkgsize.items(), key=lambda x: x[1]): + if sz < (total * 0.01): + other_value += sz + else: + labels.append("%s (%d kB)" % (p, sz / 1000.)) + values.append(sz) + labels.append("Other (%d kB)" % (other_value / 1000.)) + values.append(other_value) + + plt.figure() + patches, texts, autotexts = plt.pie(values, labels=labels, + autopct='%1.1f%%', shadow=True, + colors=colors) + # Reduce text size + proptease = fm.FontProperties() + proptease.set_size('xx-small') + plt.setp(autotexts, fontproperties=proptease) + plt.setp(texts, fontproperties=proptease) + + plt.suptitle("Filesystem size per package", fontsize=18, y=.97) + plt.title("Total filesystem size: %d kB" % (total / 1000.), fontsize=10, y=.96) + plt.savefig(outputf) + + +# +# Generate a CSV file with statistics about the size of each file, its +# size contribution to the package and to the overall system. +# +# filesdict: dictionary with the name of the files as key, and as +# value a tuple containing the name of the package to which the files +# belongs, and the size of the file. As returned by +# build_package_dict. +# +# pkgsize: dictionary with the name of the package as a key, and the +# size as the value, as returned by build_package_size. +# +# outputf: output CSV file +# +def gen_files_csv(filesdict, pkgsizes, outputf): + total = 0 + for (p, sz) in pkgsizes.items(): + total += sz + with open(outputf, 'w') as csvfile: + wr = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL) + wr.writerow(["File name", + "Package name", + "File size", + "Package size", + "File size in package (%)", + "File size in system (%)"]) + for f, (pkgname, filesize) in filesdict.items(): + pkgsize = pkgsizes[pkgname] + + if pkgsize == 0: + percent_pkg = 0 + else: + percent_pkg = float(filesize) / pkgsize * 100 + + percent_total = float(filesize) / total * 100 + + wr.writerow([f, pkgname, filesize, pkgsize, + "%.1f" % percent_pkg, + "%.1f" % percent_total]) + + +# +# Generate a CSV file with statistics about the size of each package, +# and their size contribution to the overall system. +# +# pkgsize: dictionary with the name of the package as a key, and the +# size as the value, as returned by build_package_size. +# +# outputf: output CSV file +# +def gen_packages_csv(pkgsizes, outputf): + total = sum(pkgsizes.values()) + with open(outputf, 'w') as csvfile: + wr = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_MINIMAL) + wr.writerow(["Package name", "Package size", "Package size in system (%)"]) + for (pkg, size) in pkgsizes.items(): + wr.writerow([pkg, size, "%.1f" % (float(size) / total * 100)]) + + +parser = argparse.ArgumentParser(description='Draw size statistics graphs') + +parser.add_argument("--builddir", '-i', metavar="BUILDDIR", required=True, + help="Buildroot output directory") +parser.add_argument("--graph", '-g', metavar="GRAPH", + help="Graph output file (.pdf or .png extension)") +parser.add_argument("--file-size-csv", '-f', metavar="FILE_SIZE_CSV", + help="CSV output file with file size statistics") +parser.add_argument("--package-size-csv", '-p', metavar="PKG_SIZE_CSV", + help="CSV output file with package size statistics") +args = parser.parse_args() + +# Find out which package installed what files +pkgdict = build_package_dict(args.builddir) + +# Collect the size installed by each package +pkgsize = build_package_size(pkgdict, args.builddir) + +if args.graph: + draw_graph(pkgsize, args.graph) +if args.file_size_csv: + gen_files_csv(pkgdict, pkgsize, args.file_size_csv) +if args.package_size_csv: + gen_packages_csv(pkgsize, args.package_size_csv) diff --git a/buildroot/support/scripts/xorg-release b/buildroot/support/scripts/xorg-release new file mode 100755 index 0000000..c512038 --- /dev/null +++ b/buildroot/support/scripts/xorg-release @@ -0,0 +1,180 @@ +#!/usr/bin/env python + +# This script generates a report on the packaging status of X.org +# releases in Buildroot. It does so by downloading the list of +# tarballs that are part of a given X.org release, and compare that +# with the packages that are available in Buildroot. + +import BeautifulSoup +import re +import os +import urllib +from distutils.version import LooseVersion + +# This can be customized +XORG_VERSION = "X11R7.7" + +# Key names in dictionaries +XORG_VERSION_KEY = "xorg-version" +BR_VERSION_KEY = "br-version" +BR_NAME_KEY = "br-name" + +# Packages part of X.org releases that we do not want to package in +# Buildroot (old drivers for hardware unlikely to be used in embedded +# contexts). +XORG_EXCEPTIONS = [ + 'xf86-video-suncg6', + 'xf86-video-sunffb', +] + +# Get the list of tarballs of a X.org release, parse it, and return a +# dictionary of dictionaries, of the form: +# +# { : { XORG_VERSION_KEY: }, +# : { XORG_VERSION_KEY: }} +# +def get_xorg_release_pkgs(): + u = urllib.URLopener().open("http://www.x.org/releases/%s/src/everything/" % XORG_VERSION) + b = BeautifulSoup.BeautifulSoup() + b.feed(u.read()) + links = b.findAll("a") + packages = {} + r = re.compile("(.*)-([0-9\.]*).tar.bz2") + # We now have a list of all links. + for link in links: + href = link.get("href") + # Skip everything but tarballs + if not href.endswith(".tar.bz2"): + continue + # Separate the name and the version + groups = r.match(href) + if not groups: + continue + name = groups.group(1) + version = groups.group(2) + # Skip packages we don't want to hear about + if name in XORG_EXCEPTIONS: + continue + packages[name] = { XORG_VERSION_KEY : version } + return packages + +# Files and directories in package/x11r7/ that should be ignored in +# our processing. +BUILDROOT_EXCEPTIONS = [ + "mcookie", # Code is directly in package directory + "x11r7.mk", + "Config.in", + "xdriver_xf86-input-tslib", # From Pengutronix, not part of X.org releases +] + +# Prefixes of directories in package/x11r7/ that must be stripped +# before trying to match Buildroot package names with X.org tarball +# names. +BUILDROOT_PREFIXES = [ + "xapp", + "xdriver", + "xfont", + "xlib", + "xserver", + "xutil", + "xproto", +] + +# From a Buildroot package name, try to see if a prefix should be +# stripped from it. For example, passing "xapp_xlsfonts" as argument +# to this function will return "xlsfonts". +def buildroot_strip_prefix(dirname): + for prefix in BUILDROOT_PREFIXES: + if dirname.startswith(prefix + "_"): + return dirname[len(prefix) + 1:] + return dirname + +# From a Buildroot package name, parse its .mk file to find the +# Buildroot version of the package by looking at the _VERSION +# line. +def buildroot_get_version(dirname): + f = open(os.path.join("package", "x11r7", dirname, dirname + ".mk")) + r = re.compile("^([A-Z0-9_]*)_VERSION = ([0-9\.]*)$") + for l in f.readlines(): + m = r.match(l) + if m: + return m.group(2) + return None + +# Augment the information of the X.org list of packages (given as +# argument) by details about their packaging in Buildroot. Those +# details are found by looking at the contents of package/x11r7/. +def get_buildroot_pkgs(packages): + dirs = os.listdir(os.path.join(os.getcwd(), "package", "x11r7")) + for d in dirs: + # Skip exceptions + if d in BUILDROOT_EXCEPTIONS: + continue + pkgname = buildroot_strip_prefix(d) + version = buildroot_get_version(d) + if packages.has_key(pkgname): + # There is a X.org package of the same name, so we just + # add information to the existing dict entry. + packages[pkgname]['br-version'] = version + packages[pkgname]['br-name'] = d + else: + # There is no X.org package with this name, so we add a + # new dict entry. + packages[pkgname] = { BR_VERSION_KEY: version, + BR_NAME_KEY : d } + return packages + +def show_summary(packages): + FORMAT_STRING = "%40s | %15s | %15s | %-30s" + print FORMAT_STRING % ("Package name", "Vers in BR", "Vers in X.org", "Action") + print FORMAT_STRING % ("-" * 40, "-" * 15, "-" * 15, "-" * 30) + pkgs = packages.keys() + pkgs.sort() + total_pkgs = 0 + upgrade_pkgs = 0 + add_pkgs = 0 + remove_pkgs = 0 + nothing_todo_pkgs = 0 + for pkgname in pkgs: + pkg = packages[pkgname] + total_pkgs += 1 + if pkg.has_key(XORG_VERSION_KEY) and not pkg.has_key(BR_VERSION_KEY): + xorg_version = pkg[XORG_VERSION_KEY] + br_version = "N/A" + action = "Add to Buildroot" + add_pkgs += 1 + elif not pkg.has_key(XORG_VERSION_KEY) and pkg.has_key(BR_VERSION_KEY): + br_version = pkg[BR_VERSION_KEY] + xorg_version = "N/A" + action = "Remove from Buildroot" + remove_pkgs += 1 + elif LooseVersion(pkg[XORG_VERSION_KEY]) > LooseVersion(pkg[BR_VERSION_KEY]): + br_version = pkg[BR_VERSION_KEY] + xorg_version = pkg[XORG_VERSION_KEY] + action = "Upgrade" + upgrade_pkgs += 1 + elif LooseVersion(pkg[XORG_VERSION_KEY]) < LooseVersion(pkg[BR_VERSION_KEY]): + br_version = pkg[BR_VERSION_KEY] + xorg_version = pkg[XORG_VERSION_KEY] + action = "More recent" + nothing_todo_pkgs += 1 + else: + br_version = pkg[BR_VERSION_KEY] + xorg_version = pkg[XORG_VERSION_KEY] + action = "" + nothing_todo_pkgs += 1 + + print FORMAT_STRING % (pkgname, br_version.center(15), xorg_version.center(15), action) + print FORMAT_STRING % ("-" * 40, "-" * 15, "-" * 15, "-" * 30) + STAT_FORMAT_STRING = "%40s : %3d" + print STAT_FORMAT_STRING % ("Total number of packages", total_pkgs) + print STAT_FORMAT_STRING % ("Packages to upgrade", upgrade_pkgs) + print STAT_FORMAT_STRING % ("Packages to add", add_pkgs) + print STAT_FORMAT_STRING % ("Packages to remove", remove_pkgs) + print STAT_FORMAT_STRING % ("Packages with nothing to do", nothing_todo_pkgs) + +packages = get_xorg_release_pkgs() +packages = get_buildroot_pkgs(packages) +# print packages +show_summary(packages) + diff --git a/buildroot/support/testing/conf/grub2.cfg b/buildroot/support/testing/conf/grub2.cfg new file mode 100644 index 0000000..a982d0b --- /dev/null +++ b/buildroot/support/testing/conf/grub2.cfg @@ -0,0 +1,7 @@ +set default="0" +set timeout="1" + +menuentry "Buildroot" { + linux __KERNEL_PATH__ root=/dev/sr0 console=ttyS0,115200 + initrd __INITRD_PATH__ +} diff --git a/buildroot/support/testing/conf/isolinux.cfg b/buildroot/support/testing/conf/isolinux.cfg new file mode 100644 index 0000000..ba031a6 --- /dev/null +++ b/buildroot/support/testing/conf/isolinux.cfg @@ -0,0 +1,5 @@ +default 1 +label 1 + kernel __KERNEL_PATH__ + initrd __INITRD_PATH__ + append root=/dev/sr0 console=ttyS0,115200 diff --git a/buildroot/support/testing/conf/minimal-x86-qemu-kernel.config b/buildroot/support/testing/conf/minimal-x86-qemu-kernel.config new file mode 100644 index 0000000..cc8ee6a --- /dev/null +++ b/buildroot/support/testing/conf/minimal-x86-qemu-kernel.config @@ -0,0 +1,49 @@ +CONFIG_SYSVIPC=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_SMP=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_SCSI_VIRTIO=y +CONFIG_ATA=y +CONFIG_ATA_PIIX=y +CONFIG_NETDEVICES=y +CONFIG_VIRTIO_NET=y +CONFIG_NE2K_PCI=y +CONFIG_8139CP=y +CONFIG_INPUT_EVDEV=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_VIRTIO_CONSOLE=y +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_DRM=y +CONFIG_DRM_BOCHS=y +CONFIG_DRM_QXL=y +CONFIG_DRM_VIRTIO_GPU=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_INPUT=y +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_EXT4_FS=y +CONFIG_ISO9660_FS=y +CONFIG_ZISOFS=y +CONFIG_JOLIET=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y diff --git a/buildroot/support/testing/conf/unittest.cfg b/buildroot/support/testing/conf/unittest.cfg new file mode 100644 index 0000000..4f516fb --- /dev/null +++ b/buildroot/support/testing/conf/unittest.cfg @@ -0,0 +1,5 @@ +[unittest] +plugins = nose2.plugins.mp + +[multiprocess] +always-on = True diff --git a/buildroot/support/testing/infra/__init__.py b/buildroot/support/testing/infra/__init__.py new file mode 100644 index 0000000..b03e891 --- /dev/null +++ b/buildroot/support/testing/infra/__init__.py @@ -0,0 +1,97 @@ +import os +import re +import sys +import tempfile +import subprocess +from urllib2 import urlopen, HTTPError, URLError + +ARTIFACTS_URL = "http://autobuild.buildroot.net/artefacts/" + + +def open_log_file(builddir, stage, logtofile=True): + """ + Open a file for logging and return its handler. + If logtofile is True, returns sys.stdout. Otherwise opens a file + with a suitable name in the build directory. + """ + if logtofile: + fhandle = open("{}-{}.log".format(builddir, stage), 'a+') + else: + fhandle = sys.stdout + return fhandle + + +def filepath(relpath): + return os.path.join(os.getcwd(), "support/testing", relpath) + + +def download(dldir, filename): + finalpath = os.path.join(dldir, filename) + if os.path.exists(finalpath): + return finalpath + + if not os.path.exists(dldir): + os.makedirs(dldir) + + tmpfile = tempfile.mktemp(dir=dldir) + print "Downloading to {}".format(tmpfile) + + try: + url_fh = urlopen(os.path.join(ARTIFACTS_URL, filename)) + with open(tmpfile, "w+") as tmpfile_fh: + tmpfile_fh.write(url_fh.read()) + except (HTTPError, URLError), err: + os.unlink(tmpfile) + raise err + + print "Renaming from %s to %s" % (tmpfile, finalpath) + os.rename(tmpfile, finalpath) + return finalpath + + +def get_elf_arch_tag(builddir, prefix, fpath, tag): + """ + Runs the cross readelf on 'fpath', then extracts the value of tag 'tag'. + Example: + >>> get_elf_arch_tag('output', 'arm-none-linux-gnueabi-', + 'bin/busybox', 'Tag_CPU_arch') + v5TEJ + >>> + """ + cmd = ["host/bin/{}-readelf".format(prefix), + "-A", os.path.join("target", fpath)] + out = subprocess.check_output(cmd, cwd=builddir, env={"LANG": "C"}) + regexp = re.compile("^ {}: (.*)$".format(tag)) + for line in out.splitlines(): + m = regexp.match(line) + if not m: + continue + return m.group(1) + return None + + +def get_file_arch(builddir, prefix, fpath): + return get_elf_arch_tag(builddir, prefix, fpath, "Tag_CPU_arch") + + +def get_elf_prog_interpreter(builddir, prefix, fpath): + """ + Runs the cross readelf on 'fpath' to extract the program interpreter + name and returns it. + Example: + >>> get_elf_prog_interpreter('br-tests/TestExternalToolchainLinaroArm', + 'arm-linux-gnueabihf', + 'bin/busybox') + /lib/ld-linux-armhf.so.3 + >>> + """ + cmd = ["host/bin/{}-readelf".format(prefix), + "-l", os.path.join("target", fpath)] + out = subprocess.check_output(cmd, cwd=builddir, env={"LANG": "C"}) + regexp = re.compile("^ *\[Requesting program interpreter: (.*)\]$") + for line in out.splitlines(): + m = regexp.match(line) + if not m: + continue + return m.group(1) + return None diff --git a/buildroot/support/testing/infra/basetest.py b/buildroot/support/testing/infra/basetest.py new file mode 100644 index 0000000..7549226 --- /dev/null +++ b/buildroot/support/testing/infra/basetest.py @@ -0,0 +1,71 @@ +import unittest +import os +import datetime + +from infra.builder import Builder +from infra.emulator import Emulator + +BASIC_TOOLCHAIN_CONFIG = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.05-1078-g95b1dae.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y + BR2_TOOLCHAIN_EXTERNAL_LOCALE=y + # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set + BR2_TOOLCHAIN_EXTERNAL_CXX=y + """ + +MINIMAL_CONFIG = \ + """ + BR2_INIT_NONE=y + BR2_SYSTEM_BIN_SH_NONE=y + # BR2_PACKAGE_BUSYBOX is not set + # BR2_TARGET_ROOTFS_TAR is not set + """ + + +class BRTest(unittest.TestCase): + config = None + downloaddir = None + outputdir = None + logtofile = True + keepbuilds = False + jlevel = 0 + timeout_multiplier = 1 + + def __init__(self, names): + super(BRTest, self).__init__(names) + self.testname = self.__class__.__name__ + self.builddir = self.outputdir and os.path.join(self.outputdir, self.testname) + self.emulator = None + self.config += "\nBR2_JLEVEL={}\n".format(self.jlevel) + + def show_msg(self, msg): + print "{} {:40s} {}".format(datetime.datetime.now().strftime("%H:%M:%S"), + self.testname, msg) + + def setUp(self): + self.show_msg("Starting") + self.b = Builder(self.config, self.builddir, self.logtofile) + + if not self.keepbuilds: + self.b.delete() + + if not self.b.is_finished(): + self.show_msg("Building") + self.b.build() + self.show_msg("Building done") + + self.emulator = Emulator(self.builddir, self.downloaddir, + self.logtofile, self.timeout_multiplier) + + def tearDown(self): + self.show_msg("Cleaning up") + if self.emulator: + self.emulator.stop() + if self.b and not self.keepbuilds: + self.b.delete() diff --git a/buildroot/support/testing/infra/builder.py b/buildroot/support/testing/infra/builder.py new file mode 100644 index 0000000..7512339 --- /dev/null +++ b/buildroot/support/testing/infra/builder.py @@ -0,0 +1,49 @@ +import os +import shutil +import subprocess + +import infra + + +class Builder(object): + def __init__(self, config, builddir, logtofile): + self.config = '\n'.join([line.lstrip() for line in + config.splitlines()]) + '\n' + self.builddir = builddir + self.logfile = infra.open_log_file(builddir, "build", logtofile) + + def build(self): + if not os.path.isdir(self.builddir): + os.makedirs(self.builddir) + + config_file = os.path.join(self.builddir, ".config") + with open(config_file, "w+") as cf: + cf.write(self.config) + # dump the defconfig to the logfile for easy debugging + self.logfile.write("> start defconfig\n" + self.config + + "> end defconfig\n") + self.logfile.flush() + + cmd = ["make", + "O={}".format(self.builddir), + "olddefconfig"] + ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile) + if ret != 0: + raise SystemError("Cannot olddefconfig") + + cmd = ["make", "-C", self.builddir] + ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile) + if ret != 0: + raise SystemError("Build failed") + + open(self.stamp_path(), 'a').close() + + def stamp_path(self): + return os.path.join(self.builddir, "build-done") + + def is_finished(self): + return os.path.exists(self.stamp_path()) + + def delete(self): + if os.path.exists(self.builddir): + shutil.rmtree(self.builddir) diff --git a/buildroot/support/testing/infra/emulator.py b/buildroot/support/testing/infra/emulator.py new file mode 100644 index 0000000..802e89d --- /dev/null +++ b/buildroot/support/testing/infra/emulator.py @@ -0,0 +1,119 @@ +import pexpect + +import infra + + +class Emulator(object): + + def __init__(self, builddir, downloaddir, logtofile, timeout_multiplier): + self.qemu = None + self.downloaddir = downloaddir + self.logfile = infra.open_log_file(builddir, "run", logtofile) + # We use elastic runners on the cloud to runs our tests. Those runners + # can take a long time to run the emulator. Use a timeout multiplier + # when running the tests to avoid sporadic failures. + self.timeout_multiplier = timeout_multiplier + + # Start Qemu to boot the system + # + # arch: Qemu architecture to use + # + # kernel: path to the kernel image, or the special string + # 'builtin'. 'builtin' means a pre-built kernel image will be + # downloaded from ARTEFACTS_URL and suitable options are + # automatically passed to qemu and added to the kernel cmdline. So + # far only armv5, armv7 and i386 builtin kernels are available. + # If None, then no kernel is used, and we assume a bootable device + # will be specified. + # + # kernel_cmdline: array of kernel arguments to pass to Qemu -append option + # + # options: array of command line options to pass to Qemu + # + def boot(self, arch, kernel=None, kernel_cmdline=None, options=None): + if arch in ["armv7", "armv5"]: + qemu_arch = "arm" + else: + qemu_arch = arch + + qemu_cmd = ["qemu-system-{}".format(qemu_arch), + "-serial", "stdio", + "-display", "none"] + + if options: + qemu_cmd += options + + if kernel_cmdline is None: + kernel_cmdline = [] + + if kernel: + if kernel == "builtin": + if arch in ["armv7", "armv5"]: + kernel_cmdline.append("console=ttyAMA0") + + if arch == "armv7": + kernel = infra.download(self.downloaddir, + "kernel-vexpress") + dtb = infra.download(self.downloaddir, + "vexpress-v2p-ca9.dtb") + qemu_cmd += ["-dtb", dtb] + qemu_cmd += ["-M", "vexpress-a9"] + elif arch == "armv5": + kernel = infra.download(self.downloaddir, + "kernel-versatile") + qemu_cmd += ["-M", "versatilepb"] + + qemu_cmd += ["-kernel", kernel] + + if kernel_cmdline: + qemu_cmd += ["-append", " ".join(kernel_cmdline)] + + self.logfile.write("> starting qemu with '%s'\n" % " ".join(qemu_cmd)) + self.qemu = pexpect.spawn(qemu_cmd[0], qemu_cmd[1:], + timeout=5 * self.timeout_multiplier, + env={"QEMU_AUDIO_DRV": "none"}) + # We want only stdout into the log to avoid double echo + self.qemu.logfile_read = self.logfile + + # Wait for the login prompt to appear, and then login as root with + # the provided password, or no password if not specified. + def login(self, password=None): + # The login prompt can take some time to appear when running multiple + # instances in parallel, so set the timeout to a large value + index = self.qemu.expect(["buildroot login:", pexpect.TIMEOUT], + timeout=60 * self.timeout_multiplier) + if index != 0: + self.logfile.write("==> System does not boot") + raise SystemError("System does not boot") + + self.qemu.sendline("root") + if password: + self.qemu.expect("Password:") + self.qemu.sendline(password) + index = self.qemu.expect(["# ", pexpect.TIMEOUT]) + if index != 0: + raise SystemError("Cannot login") + self.run("dmesg -n 1") + + # Run the given 'cmd' with a 'timeout' on the target + # return a tuple (output, exit_code) + def run(self, cmd, timeout=-1): + self.qemu.sendline(cmd) + if timeout != -1: + timeout *= self.timeout_multiplier + self.qemu.expect("# ", timeout=timeout) + # Remove double carriage return from qemu stdout so str.splitlines() + # works as expected. + output = self.qemu.before.replace("\r\r", "\r").splitlines()[1:] + + self.qemu.sendline("echo $?") + self.qemu.expect("# ") + exit_code = self.qemu.before.splitlines()[2] + exit_code = int(exit_code) + + return output, exit_code + + def stop(self): + if self.qemu is None: + return + self.qemu.terminate(force=True) diff --git a/buildroot/support/testing/run-tests b/buildroot/support/testing/run-tests new file mode 100755 index 0000000..f8cee09 --- /dev/null +++ b/buildroot/support/testing/run-tests @@ -0,0 +1,123 @@ +#!/usr/bin/env python2 +import argparse +import sys +import os +import nose2 +import multiprocessing + +from infra.basetest import BRTest + + +def main(): + parser = argparse.ArgumentParser(description='Run Buildroot tests') + parser.add_argument('testname', nargs='*', + help='list of test cases to execute') + parser.add_argument('-l', '--list', action='store_true', + help='list of available test cases') + parser.add_argument('-a', '--all', action='store_true', + help='execute all test cases') + parser.add_argument('-s', '--stdout', action='store_true', + help='log everything to stdout') + parser.add_argument('-o', '--output', + help='output directory') + parser.add_argument('-d', '--download', + help='download directory') + parser.add_argument('-k', '--keep', + help='keep build directories', + action='store_true') + parser.add_argument('-t', '--testcases', type=int, default=1, + help='number of testcases to run simultaneously') + parser.add_argument('-j', '--jlevel', type=int, + help='BR2_JLEVEL to use for each testcase') + parser.add_argument('--timeout-multiplier', type=int, default=1, + help='increase timeouts (useful for slow machines)') + + args = parser.parse_args() + + script_path = os.path.realpath(__file__) + test_dir = os.path.dirname(script_path) + + if args.stdout: + BRTest.logtofile = False + + if args.list: + print "List of tests" + nose2.discover(argv=[script_path, + "-s", test_dir, + "-v", + "--collect-only"], + plugins=["nose2.plugins.collect"]) + return 0 + + if args.download is None: + args.download = os.getenv("BR2_DL_DIR") + if args.download is None: + print "Missing download directory, please use -d/--download" + print "" + parser.print_help() + return 1 + + BRTest.downloaddir = os.path.abspath(args.download) + os.putenv("BR2_DL_DIR", BRTest.downloaddir) + + if args.output is None: + print "Missing output directory, please use -o/--output" + print "" + parser.print_help() + return 1 + + if not os.path.exists(args.output): + os.mkdir(args.output) + + BRTest.outputdir = os.path.abspath(args.output) + + if args.all is False and len(args.testname) == 0: + print "No test selected" + print "" + parser.print_help() + return 1 + + BRTest.keepbuilds = args.keep + + if args.testcases != 1: + if args.testcases < 1: + print "Invalid number of testcases to run simultaneously" + print "" + parser.print_help() + return 1 + # same default BR2_JLEVEL as package/Makefile.in + br2_jlevel = 1 + multiprocessing.cpu_count() + each_testcase = br2_jlevel / args.testcases + if each_testcase < 1: + each_testcase = 1 + BRTest.jlevel = each_testcase + + if args.jlevel: + if args.jlevel < 0: + print "Invalid BR2_JLEVEL to use for each testcase" + print "" + parser.print_help() + return 1 + # the user can override the auto calculated value + BRTest.jlevel = args.jlevel + + if args.timeout_multiplier < 1: + print "Invalid multiplier for timeout values" + print "" + parser.print_help() + return 1 + BRTest.timeout_multiplier = args.timeout_multiplier + + nose2_args = ["-v", + "-N", str(args.testcases), + "-s", test_dir, + "-c", os.path.join(test_dir, "conf/unittest.cfg")] + + if len(args.testname) != 0: + nose2_args += args.testname + + nose2.discover(argv=nose2_args) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/buildroot/support/testing/tests/__init__.py b/buildroot/support/testing/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/support/testing/tests/boot/__init__.py b/buildroot/support/testing/tests/boot/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/support/testing/tests/boot/test_atf.py b/buildroot/support/testing/tests/boot/test_atf.py new file mode 100644 index 0000000..75cea01 --- /dev/null +++ b/buildroot/support/testing/tests/boot/test_atf.py @@ -0,0 +1,82 @@ +import infra.basetest + + +class TestATFVexpress(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/ARM-software/arm-trusted-firmware.git" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v1.5" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="juno" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y + BR2_TARGET_UBOOT=y + BR2_TARGET_UBOOT_BOARDNAME="vexpress_aemv8a_juno" + BR2_TARGET_UBOOT_CUSTOM_VERSION=y + BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.03" + BR2_TARGET_VEXPRESS_FIRMWARE=y + """ + + def test_run(self): + pass + + +class TestATFAllwinner(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/apritzel/arm-trusted-firmware.git" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="sun50iw1p1" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="aa75c8da415158a94b82a430b2b40000778e851f" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y + BR2_TARGET_UBOOT=y + BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y + BR2_TARGET_UBOOT_CUSTOM_VERSION=y + BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.09" + BR2_TARGET_UBOOT_BOARD_DEFCONFIG="bananapi_m64" + BR2_TARGET_UBOOT_NEEDS_DTC=y + BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y + BR2_TARGET_UBOOT_FORMAT_CUSTOM=y + BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb" + BR2_TARGET_UBOOT_SPL=y + BR2_TARGET_UBOOT_SPL_NAME="spl/sunxi-spl.bin" + """ + + def test_run(self): + pass + + +class TestATFMarvell(infra.basetest.BRTest): + config = \ + """ + BR2_aarch64=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/atf-marvell.git" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="43965481990fd92e9666cf9371a8cf478055ec7c" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" + BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y + BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES="USE_COHERENT_MEM=0" + BR2_TARGET_BINARIES_MARVELL=y + BR2_TARGET_BINARIES_MARVELL_8040=y + BR2_TARGET_MV_DDR_MARVELL=y + BR2_TARGET_UBOOT=y + BR2_TARGET_UBOOT_BOARDNAME="mvebu_mcbin-88f8040" + BR2_TARGET_UBOOT_CUSTOM_VERSION=y + BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.09" + BR2_TARGET_UBOOT_NEEDS_DTC=y + """ + + def test_run(self): + pass diff --git a/buildroot/support/testing/tests/core/__init__.py b/buildroot/support/testing/tests/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/support/testing/tests/core/post-build.sh b/buildroot/support/testing/tests/core/post-build.sh new file mode 100755 index 0000000..f3d0dbe --- /dev/null +++ b/buildroot/support/testing/tests/core/post-build.sh @@ -0,0 +1,12 @@ +#!/bin/sh +( +printf "arg1,%s\n" "${1}" +printf "arg2,%s\n" "${2}" +printf "arg3,%s\n" "${3}" +printf "TARGET_DIR,%s\n" "${TARGET_DIR}" +printf "BUILD_DIR,%s\n" "${BUILD_DIR}" +printf "HOST_DIR,%s\n" "${HOST_DIR}" +printf "STAGING_DIR,%s\n" "${STAGING_DIR}" +printf "BINARIES_DIR,%s\n" "${BINARIES_DIR}" +printf "BR2_CONFIG,%s\n" "${BR2_CONFIG}" +) > ${BUILD_DIR}/$(basename "${0}" .sh).log diff --git a/buildroot/support/testing/tests/core/post-fakeroot.sh b/buildroot/support/testing/tests/core/post-fakeroot.sh new file mode 120000 index 0000000..d680fcc --- /dev/null +++ b/buildroot/support/testing/tests/core/post-fakeroot.sh @@ -0,0 +1 @@ +post-build.sh \ No newline at end of file diff --git a/buildroot/support/testing/tests/core/post-image.sh b/buildroot/support/testing/tests/core/post-image.sh new file mode 120000 index 0000000..d680fcc --- /dev/null +++ b/buildroot/support/testing/tests/core/post-image.sh @@ -0,0 +1 @@ +post-build.sh \ No newline at end of file diff --git a/buildroot/support/testing/tests/core/rootfs-overlay1/test-file1 b/buildroot/support/testing/tests/core/rootfs-overlay1/test-file1 new file mode 100644 index 0000000..323fae0 --- /dev/null +++ b/buildroot/support/testing/tests/core/rootfs-overlay1/test-file1 @@ -0,0 +1 @@ +foobar diff --git a/buildroot/support/testing/tests/core/rootfs-overlay2/etc/test-file2 b/buildroot/support/testing/tests/core/rootfs-overlay2/etc/test-file2 new file mode 100644 index 0000000..34a3ec2 --- /dev/null +++ b/buildroot/support/testing/tests/core/rootfs-overlay2/etc/test-file2 @@ -0,0 +1 @@ +barfoo diff --git a/buildroot/support/testing/tests/core/test_post_scripts.py b/buildroot/support/testing/tests/core/test_post_scripts.py new file mode 100644 index 0000000..edb339d --- /dev/null +++ b/buildroot/support/testing/tests/core/test_post_scripts.py @@ -0,0 +1,45 @@ +import os +import csv + +import infra.basetest + + +class TestPostScripts(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_INIT_NONE=y + BR2_SYSTEM_BIN_SH_NONE=y + # BR2_PACKAGE_BUSYBOX is not set + BR2_ROOTFS_POST_BUILD_SCRIPT="{}" + BR2_ROOTFS_POST_FAKEROOT_SCRIPT="{}" + BR2_ROOTFS_POST_IMAGE_SCRIPT="{}" + BR2_ROOTFS_POST_SCRIPT_ARGS="foobar baz" + """.format(infra.filepath("tests/core/post-build.sh"), + infra.filepath("tests/core/post-fakeroot.sh"), + infra.filepath("tests/core/post-image.sh")) + + def check_post_log_file(self, path, what): + lines = {} + with open(path, 'rb') as csvfile: + r = csv.reader(csvfile, delimiter=',') + for row in r: + lines[row[0]] = row[1] + + self.assertEqual(lines["arg1"], os.path.join(self.builddir, what)) + self.assertEqual(lines["arg2"], "foobar") + self.assertEqual(lines["arg3"], "baz") + self.assertEqual(lines["TARGET_DIR"], os.path.join(self.builddir, "target")) + self.assertEqual(lines["BUILD_DIR"], os.path.join(self.builddir, "build")) + self.assertEqual(lines["HOST_DIR"], os.path.join(self.builddir, "host")) + staging = os.readlink(os.path.join(self.builddir, "staging")) + self.assertEqual(lines["STAGING_DIR"], staging) + self.assertEqual(lines["BINARIES_DIR"], os.path.join(self.builddir, "images")) + self.assertEqual(lines["BR2_CONFIG"], os.path.join(self.builddir, ".config")) + + def test_run(self): + f = os.path.join(self.builddir, "build", "post-build.log") + self.check_post_log_file(f, "target") + f = os.path.join(self.builddir, "build", "post-fakeroot.log") + self.check_post_log_file(f, "target") + f = os.path.join(self.builddir, "build", "post-image.log") + self.check_post_log_file(f, "images") diff --git a/buildroot/support/testing/tests/core/test_rootfs_overlay.py b/buildroot/support/testing/tests/core/test_rootfs_overlay.py new file mode 100644 index 0000000..fedd40d --- /dev/null +++ b/buildroot/support/testing/tests/core/test_rootfs_overlay.py @@ -0,0 +1,30 @@ +import os +import subprocess + +import infra.basetest + + +def compare_file(file1, file2): + return subprocess.call(["cmp", file1, file2]) + + +class TestRootfsOverlay(infra.basetest.BRTest): + + rootfs_overlay_path = infra.filepath("tests/core/rootfs-overlay") + + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_ROOTFS_OVERLAY="{0}1 {0}2" + """.format(rootfs_overlay_path) + + def test_run(self): + target_file = os.path.join(self.builddir, "target", "test-file1") + overlay_file = "{}1/test-file1".format(self.rootfs_overlay_path) + ret = compare_file(overlay_file, target_file) + self.assertEqual(ret, 0) + + target_file = os.path.join(self.builddir, "target", "etc", "test-file2") + overlay_file = "{}2/etc/test-file2".format(self.rootfs_overlay_path) + ret = compare_file(overlay_file, target_file) + self.assertEqual(ret, 0) diff --git a/buildroot/support/testing/tests/core/test_timezone.py b/buildroot/support/testing/tests/core/test_timezone.py new file mode 100644 index 0000000..050624e --- /dev/null +++ b/buildroot/support/testing/tests/core/test_timezone.py @@ -0,0 +1,72 @@ +import os + +import infra.basetest + + +def boot_armv5_cpio(emulator, builddir): + img = os.path.join(builddir, "images", "rootfs.cpio") + emulator.boot(arch="armv5", kernel="builtin", + options=["-initrd", img]) + emulator.login() + + +class TestNoTimezone(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + # BR2_TARGET_TZ_INFO is not set + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + boot_armv5_cpio(self.emulator, self.builddir) + tz, _ = self.emulator.run("TZ=UTC date +%Z") + self.assertEqual(tz[0].strip(), "UTC") + tz, _ = self.emulator.run("TZ=America/Los_Angeles date +%Z") + self.assertEqual(tz[0].strip(), "UTC") + + +class TestGlibcAllTimezone(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_TZ_INFO=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + boot_armv5_cpio(self.emulator, self.builddir) + tz, _ = self.emulator.run("date +%Z") + self.assertEqual(tz[0].strip(), "UTC") + tz, _ = self.emulator.run("TZ=UTC date +%Z") + self.assertEqual(tz[0].strip(), "UTC") + tz, _ = self.emulator.run("TZ=America/Los_Angeles date +%Z") + self.assertEqual(tz[0].strip(), "PST") + tz, _ = self.emulator.run("TZ=Europe/Paris date +%Z") + self.assertEqual(tz[0].strip(), "CET") + + +class TestGlibcNonDefaultLimitedTimezone(infra.basetest.BRTest): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_TZ_INFO=y + BR2_TARGET_TZ_ZONELIST="northamerica" + BR2_TARGET_LOCALTIME="America/New_York" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + boot_armv5_cpio(self.emulator, self.builddir) + tz, _ = self.emulator.run("date +%Z") + self.assertEqual(tz[0].strip(), "EST") + tz, _ = self.emulator.run("TZ=UTC date +%Z") + self.assertEqual(tz[0].strip(), "UTC") + tz, _ = self.emulator.run("TZ=America/Los_Angeles date +%Z") + self.assertEqual(tz[0].strip(), "PST") + tz, _ = self.emulator.run("TZ=Europe/Paris date +%Z") + self.assertEqual(tz[0].strip(), "Europe") diff --git a/buildroot/support/testing/tests/fs/__init__.py b/buildroot/support/testing/tests/fs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/support/testing/tests/fs/test_ext.py b/buildroot/support/testing/tests/fs/test_ext.py new file mode 100644 index 0000000..f5f9e9f --- /dev/null +++ b/buildroot/support/testing/tests/fs/test_ext.py @@ -0,0 +1,125 @@ +import os +import subprocess + +import infra.basetest + +VOLNAME_PROP = "Filesystem volume name" +REVISION_PROP = "Filesystem revision #" +FEATURES_PROP = "Filesystem features" +BLOCKCNT_PROP = "Block count" +INODECNT_PROP = "Inode count" +RESBLKCNT_PROP = "Reserved block count" + +CHECK_FS_TYPE_CMD = "mount | grep '/dev/root on / type {}'" + + +def dumpe2fs_run(builddir, image): + cmd = ["host/sbin/dumpe2fs", os.path.join("images", image)] + ret = subprocess.check_output(cmd, + stderr=open(os.devnull, "w"), + cwd=builddir, + env={"LANG": "C"}) + return ret.strip().splitlines() + + +def dumpe2fs_getprop(out, prop): + for line in out: + fields = line.split(": ") + if fields[0] == prop: + return fields[1].strip() + + +def boot_img_and_check_fs_type(emulator, builddir, fs_type): + img = os.path.join(builddir, "images", "rootfs.{}".format(fs_type)) + emulator.boot(arch="armv7", + kernel="builtin", + kernel_cmdline=["root=/dev/mmcblk0", + "rootfstype={}".format(fs_type)], + options=["-drive", "file={},if=sd".format(img)]) + emulator.login() + _, exit_code = emulator.run(CHECK_FS_TYPE_CMD.format(fs_type)) + return exit_code + + +class TestExt2(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_2r0=y + BR2_TARGET_ROOTFS_EXT2_LABEL="foobaz" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + out = dumpe2fs_run(self.builddir, "rootfs.ext2") + self.assertEqual(dumpe2fs_getprop(out, VOLNAME_PROP), "foobaz") + self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "0 (original)") + + exit_code = boot_img_and_check_fs_type(self.emulator, + self.builddir, "ext2") + self.assertEqual(exit_code, 0) + + +class TestExt2r1(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_2r1=y + BR2_TARGET_ROOTFS_EXT2_LABEL="foobar" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + out = dumpe2fs_run(self.builddir, "rootfs.ext2") + self.assertEqual(dumpe2fs_getprop(out, VOLNAME_PROP), "foobar") + self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "1 (dynamic)") + self.assertNotIn("has_journal", dumpe2fs_getprop(out, FEATURES_PROP)) + + exit_code = boot_img_and_check_fs_type(self.emulator, + self.builddir, "ext2") + self.assertEqual(exit_code, 0) + + +class TestExt3(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_3=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + out = dumpe2fs_run(self.builddir, "rootfs.ext3") + self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "1 (dynamic)") + self.assertIn("has_journal", dumpe2fs_getprop(out, FEATURES_PROP)) + self.assertNotIn("extent", dumpe2fs_getprop(out, FEATURES_PROP)) + + exit_code = boot_img_and_check_fs_type(self.emulator, + self.builddir, "ext3") + self.assertEqual(exit_code, 0) + + +class TestExt4(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + BR2_TARGET_ROOTFS_EXT2_4=y + BR2_TARGET_ROOTFS_EXT2_SIZE="16384" + BR2_TARGET_ROOTFS_EXT2_INODES=3000 + BR2_TARGET_ROOTFS_EXT2_RESBLKS=10 + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + out = dumpe2fs_run(self.builddir, "rootfs.ext4") + self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "1 (dynamic)") + self.assertEqual(dumpe2fs_getprop(out, BLOCKCNT_PROP), "16384") + # Yes there are 8 more inodes than requested + self.assertEqual(dumpe2fs_getprop(out, INODECNT_PROP), "3008") + self.assertEqual(dumpe2fs_getprop(out, RESBLKCNT_PROP), "1638") + self.assertIn("has_journal", dumpe2fs_getprop(out, FEATURES_PROP)) + self.assertIn("extent", dumpe2fs_getprop(out, FEATURES_PROP)) + + exit_code = boot_img_and_check_fs_type(self.emulator, + self.builddir, "ext4") + self.assertEqual(exit_code, 0) diff --git a/buildroot/support/testing/tests/fs/test_iso9660.py b/buildroot/support/testing/tests/fs/test_iso9660.py new file mode 100644 index 0000000..68f4840 --- /dev/null +++ b/buildroot/support/testing/tests/fs/test_iso9660.py @@ -0,0 +1,169 @@ +import os + +import infra.basetest + +BASIC_CONFIG = \ + """ + BR2_x86_pentium4=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-i386-pentium4-full-2017.05-1078-g95b1dae.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_6=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2=y + BR2_TOOLCHAIN_EXTERNAL_LOCALE=y + # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set + BR2_TOOLCHAIN_EXTERNAL_CXX=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11" + BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y + BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="{}" + # BR2_TARGET_ROOTFS_TAR is not set + """.format(infra.filepath("conf/minimal-x86-qemu-kernel.config")) + + +def test_mount_internal_external(emulator, builddir, internal=True): + img = os.path.join(builddir, "images", "rootfs.iso9660") + emulator.boot(arch="i386", options=["-cdrom", img]) + emulator.login() + + if internal: + cmd = "mount | grep 'rootfs on / type rootfs'" + else: + cmd = "mount | grep '/dev/root on / type iso9660'" + + _, exit_code = emulator.run(cmd) + return exit_code + + +def test_touch_file(emulator): + _, exit_code = emulator.run("touch test") + return exit_code + +# +# Grub 2 + + +class TestIso9660Grub2External(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_BOOT_PARTITION="cd" + BR2_TARGET_GRUB2_BUILTIN_MODULES="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660" + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + """.format(infra.filepath("conf/grub2.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=False) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 1) + + +class TestIso9660Grub2ExternalCompress(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set + BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_BOOT_PARTITION="cd" + BR2_TARGET_GRUB2_BUILTIN_MODULES="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660" + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + """.format(infra.filepath("conf/grub2.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=False) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 1) + + +class TestIso9660Grub2Internal(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + BR2_TARGET_ROOTFS_ISO9660_INITRD=y + BR2_TARGET_GRUB2=y + BR2_TARGET_GRUB2_BOOT_PARTITION="cd" + BR2_TARGET_GRUB2_BUILTIN_MODULES="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660" + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + """.format(infra.filepath("conf/grub2.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=True) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 0) + +# +# Syslinux + + +class TestIso9660SyslinuxExternal(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set + BR2_TARGET_ROOTFS_ISO9660_HYBRID=y + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + BR2_TARGET_SYSLINUX=y + """.format(infra.filepath("conf/isolinux.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=False) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 1) + + +class TestIso9660SyslinuxExternalCompress(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set + BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION=y + BR2_TARGET_ROOTFS_ISO9660_HYBRID=y + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + BR2_TARGET_SYSLINUX=y + """.format(infra.filepath("conf/isolinux.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=False) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 1) + + +class TestIso9660SyslinuxInternal(infra.basetest.BRTest): + config = BASIC_CONFIG + \ + """ + BR2_TARGET_ROOTFS_ISO9660=y + BR2_TARGET_ROOTFS_ISO9660_INITRD=y + BR2_TARGET_ROOTFS_ISO9660_HYBRID=y + BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}" + BR2_TARGET_SYSLINUX=y + """.format(infra.filepath("conf/isolinux.cfg")) + + def test_run(self): + exit_code = test_mount_internal_external(self.emulator, + self.builddir, internal=True) + self.assertEqual(exit_code, 0) + + exit_code = test_touch_file(self.emulator) + self.assertEqual(exit_code, 0) diff --git a/buildroot/support/testing/tests/fs/test_jffs2.py b/buildroot/support/testing/tests/fs/test_jffs2.py new file mode 100644 index 0000000..2ff5099 --- /dev/null +++ b/buildroot/support/testing/tests/fs/test_jffs2.py @@ -0,0 +1,47 @@ +import os +import subprocess + +import infra.basetest + + +def jffs2dump_find_file(files_list, fname): + for file_name in files_list: + file_name = file_name.strip() + if file_name.startswith("Dirent") and file_name.endswith(fname): + return True + return False + + +class TestJffs2(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_JFFS2=y + BR2_TARGET_ROOTFS_JFFS2_CUSTOM=y + BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE=0x80000 + BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y + BR2_TARGET_ROOTFS_JFFS2_PAD=y + BR2_TARGET_ROOTFS_JFFS2_PADSIZE=0x4000000 + # BR2_TARGET_ROOTFS_TAR is not set + """ + + # TODO: there are some scary JFFS2 messages when one starts to + # write files in the rootfs: "jffs2: Newly-erased block contained + # word 0x0 at offset 0x046c0000". To be investigated. + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.jffs2") + out = subprocess.check_output(["host/sbin/jffs2dump", "-c", img], + cwd=self.builddir, + env={"LANG": "C"}) + out = out.splitlines() + self.assertTrue(jffs2dump_find_file(out, "busybox")) + + self.emulator.boot(arch="armv7", + kernel="builtin", + kernel_cmdline=["root=/dev/mtdblock0", + "rootfstype=jffs2"], + options=["-drive", "file={},if=pflash".format(img)]) + self.emulator.login() + cmd = "mount | grep '/dev/root on / type jffs2'" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) diff --git a/buildroot/support/testing/tests/fs/test_squashfs.py b/buildroot/support/testing/tests/fs/test_squashfs.py new file mode 100644 index 0000000..066c054 --- /dev/null +++ b/buildroot/support/testing/tests/fs/test_squashfs.py @@ -0,0 +1,38 @@ +import os +import subprocess + +import infra.basetest + + +class TestSquashfs(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_SQUASHFS=y + # BR2_TARGET_ROOTFS_SQUASHFS4_GZIP is not set + BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + unsquashfs_cmd = ["host/bin/unsquashfs", "-s", "images/rootfs.squashfs"] + out = subprocess.check_output(unsquashfs_cmd, + cwd=self.builddir, + env={"LANG": "C"}) + out = out.splitlines() + self.assertEqual(out[0], + "Found a valid SQUASHFS 4:0 superblock on images/rootfs.squashfs.") + self.assertEqual(out[3], "Compression lz4") + + img = os.path.join(self.builddir, "images", "rootfs.squashfs") + subprocess.call(["truncate", "-s", "%1M", img]) + + self.emulator.boot(arch="armv7", + kernel="builtin", + kernel_cmdline=["root=/dev/mmcblk0", + "rootfstype=squashfs"], + options=["-drive", "file={},if=sd,format=raw".format(img)]) + self.emulator.login() + + cmd = "mount | grep '/dev/root on / type squashfs'" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) diff --git a/buildroot/support/testing/tests/fs/test_ubi.py b/buildroot/support/testing/tests/fs/test_ubi.py new file mode 100644 index 0000000..015d82f --- /dev/null +++ b/buildroot/support/testing/tests/fs/test_ubi.py @@ -0,0 +1,40 @@ +import subprocess +import os + +import infra.basetest + + +class TestUbi(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_UBIFS=y + BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x7ff80 + BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x1 + BR2_TARGET_ROOTFS_UBI=y + BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x80000 + BR2_TARGET_ROOTFS_UBI_SUBSIZE=1 + """ + + # TODO: if you boot Qemu twice on the same UBI image, it fails to + # attach the image the second time, with "ubi0 error: + # ubi_read_volume_table: the layout volume was not found". + # To be investigated. + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.ubi") + out = subprocess.check_output(["file", img], + cwd=self.builddir, + env={"LANG": "C"}) + out = out.splitlines() + + subprocess.call(["truncate", "-s 128M", img]) + + self.emulator.boot(arch="armv7", + kernel="builtin", + kernel_cmdline=["root=ubi0:rootfs", + "ubi.mtd=0", + "rootfstype=ubifs"], + options=["-drive", "file={},if=pflash".format(img)]) + self.emulator.login() + cmd = "mount | grep 'ubi0:rootfs on / type ubifs'" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) diff --git a/buildroot/support/testing/tests/fs/test_yaffs2.py b/buildroot/support/testing/tests/fs/test_yaffs2.py new file mode 100644 index 0000000..b60e90e --- /dev/null +++ b/buildroot/support/testing/tests/fs/test_yaffs2.py @@ -0,0 +1,15 @@ +import os + +import infra.basetest + + +class TestYaffs2(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + infra.basetest.MINIMAL_CONFIG + \ + """ + BR2_TARGET_ROOTFS_YAFFS2=y + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.yaffs2") + self.assertTrue(os.path.exists(img)) diff --git a/buildroot/support/testing/tests/init/__init__.py b/buildroot/support/testing/tests/init/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/support/testing/tests/init/base.py b/buildroot/support/testing/tests/init/base.py new file mode 100644 index 0000000..75cfbe9 --- /dev/null +++ b/buildroot/support/testing/tests/init/base.py @@ -0,0 +1,48 @@ +import os +import subprocess +import infra.basetest + + +class InitSystemBase(infra.basetest.BRTest): + + def start_emulator(self, fs_type, kernel=None, dtb=None, init=None): + img = os.path.join(self.builddir, "images", "rootfs.{}".format(fs_type)) + subprocess.call(["truncate", "-s", "%1M", img]) + + options = ["-drive", + "file={},if=sd,format=raw".format(img), + "-M", "vexpress-a9"] + + if kernel is None: + kernel = "builtin" + else: + kernel = os.path.join(self.builddir, "images", kernel) + options.extend(["-dtb", os.path.join(self.builddir, "images", + "{}.dtb".format(dtb))]) + + kernel_cmdline = ["root=/dev/mmcblk0", + "rootfstype={}".format(fs_type), + "rootwait", + "ro", + "console=ttyAMA0"] + + if init is not None: + kernel_cmdline.extend(["init={}".format(init)]) + + self.emulator.boot(arch="armv7", + kernel=kernel, + kernel_cmdline=kernel_cmdline, + options=options) + + if init is None: + self.emulator.login() + + def check_init(self, path): + cmd = "cmp /proc/1/exe {}".format(path) + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + + def check_network(self, interface, exitCode=0): + cmd = "ip addr show {} |grep inet".format(interface) + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, exitCode) diff --git a/buildroot/support/testing/tests/init/systemd-factory/var/foo/bar b/buildroot/support/testing/tests/init/systemd-factory/var/foo/bar new file mode 100644 index 0000000..323fae0 --- /dev/null +++ b/buildroot/support/testing/tests/init/systemd-factory/var/foo/bar @@ -0,0 +1 @@ +foobar diff --git a/buildroot/support/testing/tests/init/test_busybox.py b/buildroot/support/testing/tests/init/test_busybox.py new file mode 100644 index 0000000..3be4dea --- /dev/null +++ b/buildroot/support/testing/tests/init/test_busybox.py @@ -0,0 +1,64 @@ +import infra.basetest +from tests.init.base import InitSystemBase as InitSystemBase + + +class InitSystemBusyboxBase(InitSystemBase): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def check_init(self): + super(InitSystemBusyboxBase, self).check_init("/bin/busybox") + + +class TestInitSystemBusyboxRo(InitSystemBusyboxBase): + config = InitSystemBusyboxBase.config + \ + """ + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.start_emulator("squashfs") + self.check_init() + self.check_network("eth0", 1) + + +class TestInitSystemBusyboxRw(InitSystemBusyboxBase): + config = InitSystemBusyboxBase.config + \ + """ + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.start_emulator("ext2") + self.check_init() + self.check_network("eth0", 1) + + +class TestInitSystemBusyboxRoNet(InitSystemBusyboxBase): + config = InitSystemBusyboxBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.start_emulator("squashfs") + self.check_init() + self.check_network("eth0") + + +class TestInitSystemBusyboxRwNet(InitSystemBusyboxBase): + config = InitSystemBusyboxBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.start_emulator("ext2") + self.check_init() + self.check_network("eth0") diff --git a/buildroot/support/testing/tests/init/test_none.py b/buildroot/support/testing/tests/init/test_none.py new file mode 100644 index 0000000..5b9b4e4 --- /dev/null +++ b/buildroot/support/testing/tests/init/test_none.py @@ -0,0 +1,33 @@ +import pexpect + +import infra.basetest +from tests.init.base import InitSystemBase as InitSystemBase + + +class TestInitSystemNone(InitSystemBase): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_INIT_NONE=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.start_emulator(fs_type="squashfs", init="/bin/sh") + index = self.emulator.qemu.expect(["/bin/sh: can't access tty; job control turned off", pexpect.TIMEOUT], timeout=60) + if index != 0: + self.emulator.logfile.write("==> System does not boot") + raise SystemError("System does not boot") + index = self.emulator.qemu.expect(["#", pexpect.TIMEOUT], timeout=60) + if index != 0: + self.emulator.logfile.write("==> System does not boot") + raise SystemError("System does not boot") + + out, exit_code = self.emulator.run("sh -c 'echo $PPID'") + self.assertEqual(exit_code, 0) + self.assertEqual(out[0], "1") + + _, exit_code = self.emulator.run("mount -t proc none /proc") + self.assertEqual(exit_code, 0) + + self.check_init("/bin/sh") diff --git a/buildroot/support/testing/tests/init/test_systemd.py b/buildroot/support/testing/tests/init/test_systemd.py new file mode 100644 index 0000000..a324ba8 --- /dev/null +++ b/buildroot/support/testing/tests/init/test_systemd.py @@ -0,0 +1,159 @@ +import infra.basetest +from tests.init.base import InitSystemBase as InitSystemBase + + +class InitSystemSystemdBase(InitSystemBase): + config = \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_INIT_SYSTEMD=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_LINUX_KERNEL_DTS_SUPPORT=y + BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def check_init(self): + super(InitSystemSystemdBase, self).check_init("/lib/systemd/systemd") + + # Test all units are OK + output, _ = self.emulator.run("systemctl --no-pager --failed --no-legend") + self.assertEqual(len(output), 0) + + # Test we can reach the DBus daemon + _, exit_code = self.emulator.run("busctl --no-pager") + self.assertEqual(exit_code, 0) + + # Test we can read at least one line from the journal + output, _ = self.emulator.run("journalctl --no-pager --lines 1 --quiet") + self.assertEqual(len(output), 1) + + +class TestInitSystemSystemdRoNetworkd(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_ROOTFS_OVERLAY="{}" + BR2_TARGET_ROOTFS_SQUASHFS=y + """.format(infra.filepath("tests/init/systemd-factory")) + + def test_run(self): + self.start_emulator("squashfs", "zImage", "vexpress-v2p-ca9") + self.check_init() + self.check_network("eth0") + + # This one must be executed on the target, to check that + # the factory feature works as expected + out, exit_code = self.emulator.run("cat /var/foo/bar") + self.assertEqual(exit_code, 0) + self.assertEqual(out[0], "foobar") + + +class TestInitSystemSystemdRwNetworkd(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.start_emulator("ext2", "zImage", "vexpress-v2p-ca9") + self.check_init() + self.check_network("eth0") + + +class TestInitSystemSystemdRoIfupdown(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_PACKAGE_SYSTEMD_NETWORKD is not set + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.start_emulator("squashfs", "zImage", "vexpress-v2p-ca9") + self.check_init() + self.check_network("eth0") + + +class TestInitSystemSystemdRwIfupdown(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_PACKAGE_SYSTEMD_NETWORKD is not set + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.start_emulator("ext2", "zImage", "vexpress-v2p-ca9") + self.check_init() + self.check_network("eth0") + + +class TestInitSystemSystemdRoFull(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set + BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY=y + BR2_PACKAGE_SYSTEMD_BACKLIGHT=y + BR2_PACKAGE_SYSTEMD_BINFMT=y + BR2_PACKAGE_SYSTEMD_COREDUMP=y + BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y + BR2_PACKAGE_SYSTEMD_HIBERNATE=y + BR2_PACKAGE_SYSTEMD_IMPORTD=y + BR2_PACKAGE_SYSTEMD_LOCALED=y + BR2_PACKAGE_SYSTEMD_LOGIND=y + BR2_PACKAGE_SYSTEMD_MACHINED=y + BR2_PACKAGE_SYSTEMD_POLKIT=y + BR2_PACKAGE_SYSTEMD_QUOTACHECK=y + BR2_PACKAGE_SYSTEMD_RANDOMSEED=y + BR2_PACKAGE_SYSTEMD_RFKILL=y + BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT=y + BR2_PACKAGE_SYSTEMD_SYSUSERS=y + BR2_PACKAGE_SYSTEMD_VCONSOLE=y + BR2_TARGET_ROOTFS_SQUASHFS=y + """ + + def test_run(self): + self.start_emulator("squashfs", "zImage", "vexpress-v2p-ca9") + self.check_init() + self.check_network("eth0") + + +class TestInitSystemSystemdRwFull(InitSystemSystemdBase): + config = InitSystemSystemdBase.config + \ + """ + BR2_SYSTEM_DHCP="eth0" + BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY=y + BR2_PACKAGE_SYSTEMD_BACKLIGHT=y + BR2_PACKAGE_SYSTEMD_BINFMT=y + BR2_PACKAGE_SYSTEMD_COREDUMP=y + BR2_PACKAGE_SYSTEMD_FIRSTBOOT=y + BR2_PACKAGE_SYSTEMD_HIBERNATE=y + BR2_PACKAGE_SYSTEMD_IMPORTD=y + BR2_PACKAGE_SYSTEMD_LOCALED=y + BR2_PACKAGE_SYSTEMD_LOGIND=y + BR2_PACKAGE_SYSTEMD_MACHINED=y + BR2_PACKAGE_SYSTEMD_POLKIT=y + BR2_PACKAGE_SYSTEMD_QUOTACHECK=y + BR2_PACKAGE_SYSTEMD_RANDOMSEED=y + BR2_PACKAGE_SYSTEMD_RFKILL=y + BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT=y + BR2_PACKAGE_SYSTEMD_SYSUSERS=y + BR2_PACKAGE_SYSTEMD_VCONSOLE=y + BR2_TARGET_ROOTFS_EXT2=y + """ + + def test_run(self): + self.start_emulator("ext2", "zImage", "vexpress-v2p-ca9") + self.check_init() + self.check_network("eth0") diff --git a/buildroot/support/testing/tests/package/__init__.py b/buildroot/support/testing/tests/package/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/support/testing/tests/package/test_dropbear.py b/buildroot/support/testing/tests/package/test_dropbear.py new file mode 100644 index 0000000..8f7f1fe --- /dev/null +++ b/buildroot/support/testing/tests/package/test_dropbear.py @@ -0,0 +1,29 @@ +import os + +import infra.basetest + + +class TestDropbear(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_GENERIC_ROOT_PASSWD="testpwd" + BR2_SYSTEM_DHCP="eth0" + BR2_PACKAGE_DROPBEAR=y + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + def test_run(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img, + "-net", "nic", + "-net", "user,hostfwd=tcp::2222-:22"]) + self.emulator.login("testpwd") + cmd = "netstat -ltn 2>/dev/null | grep 0.0.0.0:22" + _, exit_code = self.emulator.run(cmd) + self.assertEqual(exit_code, 0) + # Would be useful to try to login through SSH here, through + # localhost:2222, though it is not easy to pass the ssh + # password on the command line. diff --git a/buildroot/support/testing/tests/package/test_ipython.py b/buildroot/support/testing/tests/package/test_ipython.py new file mode 100644 index 0000000..3b291d9 --- /dev/null +++ b/buildroot/support/testing/tests/package/test_ipython.py @@ -0,0 +1,36 @@ +from tests.package.test_python import TestPythonBase +# +# The following pythong tests are not being used here: +# +# - version_test: IPython does not support --version option +# +# - zlib_test: IPython does not return a non-zero code the way CPython +# does, so this test ends up being a false-negative + + +class TestIPythonPy2(TestPythonBase): + config = TestPythonBase.config + \ + """ + BR2_PACKAGE_PYTHON=y + BR2_PACKAGE_PYTHON_IPYTHON=y + """ + interpreter = "ipython" + + def test_run(self): + self.login() + self.math_floor_test(40) + self.libc_time_test(40) + + +class TestIPythonPy3(TestPythonBase): + config = TestPythonBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + BR2_PACKAGE_PYTHON_IPYTHON=y + """ + interpreter = "ipython" + + def test_run(self): + self.login() + self.math_floor_test(40) + self.libc_time_test(40) diff --git a/buildroot/support/testing/tests/package/test_python.py b/buildroot/support/testing/tests/package/test_python.py new file mode 100644 index 0000000..26cf499 --- /dev/null +++ b/buildroot/support/testing/tests/package/test_python.py @@ -0,0 +1,70 @@ +import os + +import infra.basetest + + +class TestPythonBase(infra.basetest.BRTest): + config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ + """ + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + interpreter = "python" + + def login(self): + cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", cpio_file]) + self.emulator.login() + + def version_test(self, version, timeout=-1): + cmd = self.interpreter + " --version 2>&1 | grep '^{}'".format(version) + _, exit_code = self.emulator.run(cmd, timeout) + self.assertEqual(exit_code, 0) + + def math_floor_test(self, timeout=-1): + cmd = self.interpreter + " -c 'import math; math.floor(12.3)'" + _, exit_code = self.emulator.run(cmd, timeout) + self.assertEqual(exit_code, 0) + + def libc_time_test(self, timeout=-1): + cmd = self.interpreter + " -c 'from __future__ import print_function;" + cmd += "import ctypes;" + cmd += "libc = ctypes.cdll.LoadLibrary(\"libc.so.1\");" + cmd += "print(libc.time(None))'" + _, exit_code = self.emulator.run(cmd, timeout) + self.assertEqual(exit_code, 0) + + def zlib_test(self, timeout=-1): + cmd = self.interpreter + " -c 'import zlib'" + _, exit_code = self.emulator.run(cmd, timeout) + self.assertEqual(exit_code, 1) + + +class TestPython2(TestPythonBase): + config = TestPythonBase.config + \ + """ + BR2_PACKAGE_PYTHON=y + """ + + def test_run(self): + self.login() + self.version_test("Python 2") + self.math_floor_test() + self.libc_time_test() + self.zlib_test() + + +class TestPython3(TestPythonBase): + config = TestPythonBase.config + \ + """ + BR2_PACKAGE_PYTHON3=y + """ + + def test_run(self): + self.login() + self.version_test("Python 3") + self.math_floor_test() + self.libc_time_test() + self.zlib_test() diff --git a/buildroot/support/testing/tests/package/test_rust.py b/buildroot/support/testing/tests/package/test_rust.py new file mode 100644 index 0000000..2dc814f --- /dev/null +++ b/buildroot/support/testing/tests/package/test_rust.py @@ -0,0 +1,114 @@ +import os +import tempfile +import subprocess +import shutil + +import infra.basetest + + +class TestRustBase(infra.basetest.BRTest): + + target = 'armv7-unknown-linux-gnueabihf' + crate = 'hello-world' + + def login(self): + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + def build_test_prog(self): + hostdir = os.path.join(self.builddir, 'host') + env = os.environ.copy() + env["USER"] = "br-user" + env["PATH"] = "{}:".format(os.path.join(hostdir, 'bin')) + env["PATH"] + env["CARGO_HOME"] = os.path.join(hostdir, 'usr', 'share', 'cargo') + env["RUST_TARGET_PATH"] = os.path.join(hostdir, 'etc', 'rustc') + cargo = os.path.join(hostdir, 'bin', 'cargo') + workdir = os.path.join(tempfile.mkdtemp(suffix='-br2-testing-rust'), + self.crate) + manifest = os.path.join(workdir, 'Cargo.toml') + prog = os.path.join(workdir, 'target', self.target, 'debug', self.crate) + + cmd = [cargo, 'init', '--bin', '--vcs', 'none', '-vv', workdir] + ret = subprocess.call(cmd, + stdout=self.b.logfile, + stderr=self.b.logfile, + env=env) + if ret != 0: + raise SystemError("Cargo init failed") + + cmd = [ + cargo, 'build', '-vv', '--target', self.target, + '--manifest-path', manifest + ] + ret = subprocess.call(cmd, + stdout=self.b.logfile, + stderr=self.b.logfile, + env=env) + if ret != 0: + raise SystemError("Cargo build failed") + + shutil.copy(prog, os.path.join(self.builddir, 'target', 'usr', 'bin')) + self.b.build() + shutil.rmtree(workdir) + + +class TestRustBin(TestRustBase): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_NEON=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_SYSTEM_DHCP="eth0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_LINUX_KERNEL_DTS_SUPPORT=y + BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_HOST_CARGO=y + BR2_PACKAGE_HOST_RUSTC=y + """ + + def test_run(self): + self.build_test_prog() + self.login() + _, exit_code = self.emulator.run(self.crate) + self.assertEqual(exit_code, 0) + + +class TestRust(TestRustBase): + config = \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_NEON=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" + BR2_SYSTEM_DHCP="eth0" + BR2_LINUX_KERNEL=y + BR2_LINUX_KERNEL_CUSTOM_VERSION=y + BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" + BR2_LINUX_KERNEL_DEFCONFIG="vexpress" + BR2_LINUX_KERNEL_DTS_SUPPORT=y + BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + BR2_PACKAGE_HOST_CARGO=y + BR2_PACKAGE_HOST_RUSTC=y + BR2_PACKAGE_HOST_RUST=y + """ + + def test_run(self): + self.build_test_prog() + self.login() + _, exit_code = self.emulator.run(self.crate) + self.assertEqual(exit_code, 0) diff --git a/buildroot/support/testing/tests/toolchain/__init__.py b/buildroot/support/testing/tests/toolchain/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/support/testing/tests/toolchain/test_external.py b/buildroot/support/testing/tests/toolchain/test_external.py new file mode 100644 index 0000000..881d2b0 --- /dev/null +++ b/buildroot/support/testing/tests/toolchain/test_external.py @@ -0,0 +1,252 @@ +import os +import infra + +BASIC_CONFIG = \ + """ + BR2_TARGET_ROOTFS_CPIO=y + # BR2_TARGET_ROOTFS_TAR is not set + """ + + +def has_broken_links(path): + for root, dirs, files in os.walk(path): + for f in files: + fpath = os.path.join(root, f) + if not os.path.exists(fpath): + return True + return False + + +class TestExternalToolchain(infra.basetest.BRTest): + def common_check(self): + # Check for broken symlinks + for d in ["lib", "usr/lib"]: + path = os.path.join(self.builddir, "staging", d) + self.assertFalse(has_broken_links(path)) + path = os.path.join(self.builddir, "target", d) + self.assertFalse(has_broken_links(path)) + + interp = infra.get_elf_prog_interpreter(self.builddir, + self.toolchain_prefix, + "bin/busybox") + interp_path = os.path.join(self.builddir, "target", interp[1:]) + self.assertTrue(os.path.exists(interp_path)) + + +class TestExternalToolchainSourceryArmv4(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_arm920t=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y + """ + toolchain_prefix = "arm-none-linux-gnueabi" + + def test_run(self): + TestExternalToolchain.common_check(self) + + # Check the architecture variant + arch = infra.get_file_arch(self.builddir, + self.toolchain_prefix, + "lib/libc.so.6") + self.assertEqual(arch, "v4T") + + # Check the sysroot symlink + symlink = os.path.join(self.builddir, "staging", "armv4t") + self.assertTrue(os.path.exists(symlink)) + self.assertEqual(os.readlink(symlink), "./") + + # Boot the system + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainSourceryArmv5(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y + """ + toolchain_prefix = "arm-none-linux-gnueabi" + + def test_run(self): + TestExternalToolchain.common_check(self) + + # Check the architecture variant + arch = infra.get_file_arch(self.builddir, + self.toolchain_prefix, + "lib/libc.so.6") + self.assertEqual(arch, "v5TE") + + # Boot the system + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv5", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainSourceryArmv7(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_cortex_a8=y + BR2_ARM_EABI=y + BR2_ARM_INSTRUCTIONS_THUMB2=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y + """ + toolchain_prefix = "arm-none-linux-gnueabi" + + def test_run(self): + TestExternalToolchain.common_check(self) + + # Check the architecture variant + arch = infra.get_file_arch(self.builddir, + self.toolchain_prefix, + "lib/libc.so.6") + self.assertEqual(arch, "v7") + isa = infra.get_elf_arch_tag(self.builddir, + self.toolchain_prefix, + "lib/libc.so.6", + "Tag_THUMB_ISA_use") + self.assertEqual(isa, "Thumb-2") + + # Check we have the sysroot symlink + symlink = os.path.join(self.builddir, "staging", "thumb2") + self.assertTrue(os.path.exists(symlink)) + self.assertEqual(os.readlink(symlink), "./") + + # Boot the system + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainLinaroArm(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_cortex_a8=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y + """ + toolchain_prefix = "arm-linux-gnueabihf" + + def test_run(self): + TestExternalToolchain.common_check(self) + + # Check the architecture variant + arch = infra.get_file_arch(self.builddir, + self.toolchain_prefix, + "lib/libc.so.6") + self.assertEqual(arch, "v7") + isa = infra.get_elf_arch_tag(self.builddir, + self.toolchain_prefix, + "lib/libc.so.6", + "Tag_THUMB_ISA_use") + self.assertEqual(isa, "Thumb-2") + + # Boot the system + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainBuildrootMusl(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-musl-2017.05-1078-g95b1dae.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_6=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y + BR2_TOOLCHAIN_EXTERNAL_CXX=y + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainCtngMusl(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_cortex_a9=y + BR2_ARM_ENABLE_VFP=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/arm-ctng-linux-musleabihf.tar.xz" + BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-ctng-linux-musleabihf" + BR2_TOOLCHAIN_EXTERNAL_GCC_7=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y + BR2_TOOLCHAIN_EXTERNAL_CXX=y + """ + toolchain_prefix = "arm-ctng-linux-musleabihf" + + def test_run(self): + TestExternalToolchain.common_check(self) + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainBuildrootuClibc(TestExternalToolchain): + config = BASIC_CONFIG + \ + """ + BR2_arm=y + BR2_TOOLCHAIN_EXTERNAL=y + BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y + BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y + BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.05-1078-g95b1dae.tar.bz2" + BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y + BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y + BR2_TOOLCHAIN_EXTERNAL_LOCALE=y + # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set + BR2_TOOLCHAIN_EXTERNAL_CXX=y + """ + toolchain_prefix = "arm-linux" + + def test_run(self): + TestExternalToolchain.common_check(self) + img = os.path.join(self.builddir, "images", "rootfs.cpio") + self.emulator.boot(arch="armv7", + kernel="builtin", + options=["-initrd", img]) + self.emulator.login() + + +class TestExternalToolchainCCache(TestExternalToolchainBuildrootuClibc): + extraconfig = \ + """ + BR2_CCACHE=y + BR2_CCACHE_DIR="{builddir}/ccache-dir" + """ + + def __init__(self, names): + super(TestExternalToolchainBuildrootuClibc, self).__init__(names) + self.config += self.extraconfig.format(builddir=self.builddir) diff --git a/buildroot/system/Config.in b/buildroot/system/Config.in new file mode 100644 index 0000000..d48cf8d --- /dev/null +++ b/buildroot/system/Config.in @@ -0,0 +1,596 @@ +menu "System configuration" + +# Note: usually, it is not possible to select a provider of a virtual +# package. But here we have an exception: there are only four providers +# and they only get selected by separate entries in this choice and +# under different, exclusive conditions. So this is a safe situation. +choice + prompt "Root FS skeleton" + +config BR2_ROOTFS_SKELETON_DEFAULT + bool "default target skeleton" + select BR2_PACKAGE_SKELETON_INIT_SYSV if BR2_INIT_SYSV + select BR2_PACKAGE_SKELETON_INIT_SYSV if BR2_INIT_BUSYBOX + select BR2_PACKAGE_SKELETON_INIT_SYSTEMD if BR2_INIT_SYSTEMD + select BR2_PACKAGE_SKELETON_INIT_NONE if BR2_INIT_NONE + help + Use default target skeleton + +config BR2_ROOTFS_SKELETON_CUSTOM + bool "custom target skeleton" + select BR2_PACKAGE_SKELETON_CUSTOM + help + Use custom target skeleton. + +endchoice + +if BR2_ROOTFS_SKELETON_CUSTOM + +config BR2_ROOTFS_SKELETON_CUSTOM_PATH + string "custom target skeleton path" + help + Path to custom target skeleton. + +# dummy config so merged /usr workarounds can also be activated for +# custom rootfs skeleton +config BR2_ROOTFS_MERGED_USR + +endif + +if BR2_ROOTFS_SKELETON_DEFAULT + +config BR2_TARGET_GENERIC_HOSTNAME + string "System hostname" + default "buildroot" + help + Select system hostname to be stored in /etc/hostname. + + Leave empty to not create /etc/hostname, or to keep the + one from a custom skeleton. + +config BR2_TARGET_GENERIC_ISSUE + string "System banner" + default "Welcome to Buildroot" + help + Select system banner (/etc/issue) to be displayed at login. + + Leave empty to not create /etc/issue, or to keep the + one from a custom skeleton. + +endif + +choice + bool "Passwords encoding" + default BR2_TARGET_GENERIC_PASSWD_MD5 + help + Choose the password encoding scheme to use when Buildroot + needs to encode a password (eg. the root password, below). + + Note: this is used at build-time, and *not* at runtime. + +config BR2_TARGET_GENERIC_PASSWD_MD5 + bool "md5" + help + Use MD5 to encode passwords. + + The default. Wildly available, and pretty good. + Although pretty strong, MD5 is now an old hash function, and + suffers from some weaknesses, which makes it susceptible to + brute-force attacks. + +config BR2_TARGET_GENERIC_PASSWD_SHA256 + bool "sha-256" + help + Use SHA256 to encode passwords. + + Very strong, but not ubiquitous, although available in glibc + for some time now. Choose only if you are sure your C library + understands SHA256 passwords. + +config BR2_TARGET_GENERIC_PASSWD_SHA512 + bool "sha-512" + help + Use SHA512 to encode passwords. + + Extremely strong, but not ubiquitous, although available in glibc + for some time now. Choose only if you are sure your C library + understands SHA512 passwords. + +endchoice # Passwd encoding + +config BR2_TARGET_GENERIC_PASSWD_METHOD + string + default "md5" if BR2_TARGET_GENERIC_PASSWD_MD5 + default "sha-256" if BR2_TARGET_GENERIC_PASSWD_SHA256 + default "sha-512" if BR2_TARGET_GENERIC_PASSWD_SHA512 + +choice + prompt "Init system" + default BR2_INIT_BUSYBOX + +config BR2_INIT_BUSYBOX + bool "BusyBox" + select BR2_PACKAGE_BUSYBOX + select BR2_PACKAGE_INITSCRIPTS + +config BR2_INIT_SYSV + bool "systemV" + depends on BR2_USE_MMU # sysvinit + select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # sysvinit + select BR2_PACKAGE_INITSCRIPTS + select BR2_PACKAGE_SYSVINIT + +# In Buildroot, we decided not to support a split-usr when systemd is +# used as an init system. This is a design decision, not a systemd +# issue. Thus the select is with BR2_INIT_SYSTEMD (below) rather than +# with BR2_PACKAGE_SYSTEMD. +config BR2_INIT_SYSTEMD + bool "systemd" + depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_USE_WCHAR + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_SSP + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + select BR2_ROOTFS_MERGED_USR + select BR2_PACKAGE_SYSTEMD + +comment "systemd needs a glibc toolchain, headers >= 3.10" + depends on !(BR2_TOOLCHAIN_USES_GLIBC \ + && BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10) + +config BR2_INIT_NONE + bool "None" + help + Buildroot will not install any init system. You will + have to provide your own, either with a new package + or with a rootfs-overlay. + +endchoice + +choice + prompt "/dev management" if !BR2_INIT_SYSTEMD + default BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS + +config BR2_ROOTFS_DEVICE_CREATION_STATIC + bool "Static using device table" + +config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS + bool "Dynamic using devtmpfs only" + +config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV + bool "Dynamic using devtmpfs + mdev" + select BR2_PACKAGE_BUSYBOX + +config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV + bool "Dynamic using devtmpfs + eudev" + depends on BR2_USE_WCHAR # eudev + depends on !BR2_STATIC_LIBS + depends on BR2_USE_MMU # eudev + select BR2_PACKAGE_EUDEV + +comment "eudev needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS + +endchoice + +comment "/dev management using udev (from systemd)" + depends on BR2_INIT_SYSTEMD + +config BR2_ROOTFS_DEVICE_TABLE + string "Path to the permission tables" + default "system/device_table.txt" + help + Specify a space-separated list of permission table locations, + that will be passed to the makedevs utility to assign + correct owners and permissions on various files in the + target filesystem. + + See package/makedevs/README for details on the usage and + syntax of these files. + +config BR2_ROOTFS_STATIC_DEVICE_TABLE + string "Path to the device tables" + default "system/device_table_dev.txt" + depends on BR2_ROOTFS_DEVICE_CREATION_STATIC + help + Specify a space-separated list of device table locations, + that will be passed to the makedevs utility to create all + the special device files under /dev. + + See package/makedevs/README for details on the usage and + syntax of these files. + +config BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES + bool "support extended attributes in device tables" + help + Support extended attributes handling in device tables + +if BR2_ROOTFS_SKELETON_DEFAULT + +config BR2_ROOTFS_MERGED_USR + bool "Use symlinks to /usr for /bin, /sbin and /lib" + help + If you say 'n' here, then /bin, /sbin and /lib and their + counterparts in /usr will be separate directories. This + is the historical UNIX way. In this case, /usr can be a + filesystem on a partition separate from / . + + If you say 'y' here, then /bin, /sbin and /lib will be symlinks + to their counterparts in /usr. In this case, /usr can not be a + separate filesystem. + +config BR2_TARGET_ENABLE_ROOT_LOGIN + bool "Enable root login with password" + default y + select BR2_PACKAGE_HOST_MKPASSWD if BR2_TARGET_GENERIC_ROOT_PASSWD != "" + help + Allow root to log in with a password. + + If not enabled, root will not be able to log in with a password. + However, if you have an ssh server and you add an ssh key, you + can still allow root to log in. Alternatively, you can use sudo + to become root. + +config BR2_TARGET_GENERIC_ROOT_PASSWD + string "Root password" + default "" + depends on BR2_TARGET_ENABLE_ROOT_LOGIN + help + Set the initial root password. + + If set to empty (the default), then no root password will be set, + and root will need no password to log in. + + If the password starts with any of $1$, $5$ or $6$, it is considered + to be already crypt-encoded with respectively md5, sha256 or sha512. + Any other value is taken to be a clear-text value, and is crypt-encoded + as per the "Passwords encoding" scheme, above. + + Note: "$" signs in the hashed password must be doubled. For example, + if the hashed password is "$1$longsalt$v35DIIeMo4yUfI23yditq0", + then you must enter it as "$$1$$longsalt$$v35DIIeMo4yUfI23yditq0" + (this is necessary otherwise make would attempt to interpret the $ + as a variable expansion). + + WARNING! WARNING! + The password appears as-is in the .config file, and may appear + in the build log! Avoid using a valuable password if either the + .config file or the build log may be distributed, or at the + very least use a strong cryptographic hash for your password! + +choice + bool "/bin/sh" + default BR2_SYSTEM_BIN_SH_DASH if !BR2_PACKAGE_BUSYBOX + help + Select which shell will provide /bin/sh. + +# busybox has shells that work on noMMU +config BR2_SYSTEM_BIN_SH_BUSYBOX + bool "busybox' default shell" + depends on BR2_PACKAGE_BUSYBOX + +config BR2_SYSTEM_BIN_SH_BASH + bool "bash" + depends on BR2_USE_MMU # bash + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_BASH + +config BR2_SYSTEM_BIN_SH_DASH + bool "dash" + depends on BR2_USE_MMU # dash + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_DASH + +config BR2_SYSTEM_BIN_SH_MKSH + bool "mksh" + depends on BR2_USE_MMU # mksh + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_MKSH + +config BR2_SYSTEM_BIN_SH_ZSH + bool "zsh" + depends on BR2_USE_MMU # zsh + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + select BR2_PACKAGE_ZSH + +comment "bash, dash, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS" + depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS && BR2_PACKAGE_BUSYBOX + +config BR2_SYSTEM_BIN_SH_NONE + bool "none" + +endchoice # /bin/sh + +config BR2_SYSTEM_BIN_SH + string + default "bash" if BR2_SYSTEM_BIN_SH_BASH + default "dash" if BR2_SYSTEM_BIN_SH_DASH + default "mksh" if BR2_SYSTEM_BIN_SH_MKSH + default "zsh" if BR2_SYSTEM_BIN_SH_ZSH + +menuconfig BR2_TARGET_GENERIC_GETTY + bool "Run a getty (login prompt) after boot" + default y + +if BR2_TARGET_GENERIC_GETTY +config BR2_TARGET_GENERIC_GETTY_PORT + string "TTY port" + default "console" + help + Specify a port to run a getty on. + +choice + prompt "Baudrate" + default BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP + help + Select a baudrate to use. + +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP + bool "keep kernel default" +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 + bool "9600" +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 + bool "19200" +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 + bool "38400" +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 + bool "57600" +config BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200 + bool "115200" +endchoice + +config BR2_TARGET_GENERIC_GETTY_BAUDRATE + string + default "0" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP + default "9600" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 + default "19200" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 + default "38400" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 + default "57600" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 + default "115200" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200 + +config BR2_TARGET_GENERIC_GETTY_TERM + string "TERM environment variable" + default "vt100" + # currently observed only by busybox and sysvinit + depends on BR2_INIT_BUSYBOX || BR2_INIT_SYSV + help + Specify a TERM type. + +config BR2_TARGET_GENERIC_GETTY_OPTIONS + string "other options to pass to getty" + default "" + # currently observed only by busybox and sysvinit + depends on BR2_INIT_BUSYBOX || BR2_INIT_SYSV + help + Any other flags you want to pass to getty, + Refer to getty --help for details. +endif + +config BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW + bool "remount root filesystem read-write during boot" + default y + help + The root filesystem is typically mounted read-only at boot. + By default, buildroot remounts it in read-write mode early during the + boot process. + Say no here if you would rather like your root filesystem to remain + read-only. + If unsure, say Y. + +config BR2_SYSTEM_DHCP + string "Network interface to configure through DHCP" + default "" + depends on BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN || BR2_PACKAGE_SYSTEMD_NETWORKD + help + Enter here the name of the network interface (E.G. eth0) to + automatically configure through DHCP at bootup. + + If left empty, no automatic DHCP requests will take place. + + For more complicated network setups use an overlay to overwrite + /etc/network/interfaces or add a networkd configuration file. + +comment "automatic network configuration via DHCP needs ifupdown or busybox or networkd" + depends on !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN || BR2_PACKAGE_SYSTEMD_NETWORKD) + +endif # BR2_ROOTFS_SKELETON_DEFAULT + +config BR2_ENABLE_LOCALE_PURGE + bool "Purge unwanted locales" + default y + help + Explicitly specify what locales to install on target. If N + then all locales supported by packages are installed. + +config BR2_ENABLE_LOCALE_WHITELIST + string "Locales to keep" + default "C en_US" + depends on BR2_ENABLE_LOCALE_PURGE + help + Whitespace seperated list of locales to allow on target. + Locales not listed here will be removed from the target. + See 'locale -a' on your host for a list of locales available + on your build host, or have a look in /usr/share/locale in + the target file system for available locales. + + Notice that listing a locale here doesn't guarantee that it + will be available on the target - That purely depends on the + support for that locale in the selected packages. + +config BR2_GENERATE_LOCALE + string "Generate locale data" + default "" + depends on \ + (BR2_TOOLCHAIN_BUILDROOT_UCLIBC && BR2_ENABLE_LOCALE) || \ + BR2_TOOLCHAIN_USES_GLIBC + help + Generate support for a list of locales. Locales can be + specified with or without encoding, when no encoding is + specified, UTF-8 is assumed. Examples of locales: en_US, + fr_FR.UTF-8. + +config BR2_SYSTEM_ENABLE_NLS + bool "Enable Native Language Support (NLS)" + depends on BR2_USE_WCHAR + # - glibc has built-in NLS support, but anyway doesn't + # support static linking + # - musl and uclibc support static linking, but they don't + # have built-in NLS support, which is provided by the + # libintl library from gettext. The fact that it is a + # separate library causes too many problems for static + # linking. + depends on !BR2_STATIC_LIBS + select BR2_PACKAGE_GETTEXT if !BR2_TOOLCHAIN_HAS_FULL_GETTEXT + help + This option will enable Native Language Support, which will + allow software packages to support translations. + +comment "NLS support needs a toolchain w/ wchar, dynamic library" + depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS + +config BR2_TARGET_TZ_INFO + bool "Install timezone info" + select BR2_PACKAGE_TZDATA if BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_TZDATA if BR2_TOOLCHAIN_USES_MUSL + select BR2_PACKAGE_TZ if BR2_TOOLCHAIN_USES_UCLIBC + help + Say 'y' here to install timezone info. + +if BR2_TARGET_TZ_INFO + +config BR2_TARGET_TZ_ZONELIST + string "timezone list" + default "default" + help + Space-separated list of time zones to compile. + + The value "default" includes all commonly used time zones. Note + that this set consumes around 5.5M for glibc and 2.1M for uClibc. + + The full list is the list of files in the time zone database source, + not including the build and .tab files. + +config BR2_TARGET_LOCALTIME + string "default local time" + default "Etc/UTC" + help + The time zone to install as the default local time, expressed as a + tzdata location, such as: + Etc/UTC (the default) + GMT + Europe/Paris + America/New_York + Pacific/Wallis + ... + +endif # BR2_TARGET_TZ_INFO + +config BR2_ROOTFS_USERS_TABLES + string "Path to the users tables" + help + Specify a space-separated list of users table locations, + that will be passed to the mkusers utility to create + users on the system, with home directory, password, etc. + + See manual for details on the usage and syntax of these files. + +config BR2_ROOTFS_OVERLAY + string "Root filesystem overlay directories" + default "" + help + Specify a list of directories that are copied over the target + root filesystem after the build has finished and before it is + packed into the selected filesystem images. + + They are copied as-is into the rootfs, excluding files ending with + ~ and .git, .svn and .hg directories. + +config BR2_ROOTFS_POST_BUILD_SCRIPT + string "Custom scripts to run before creating filesystem images" + default "" + help + Specify a space-separated list of scripts to be run after the build + has finished and before Buildroot starts packing the files into + selected filesystem images. + + This gives users the opportunity to do board-specific cleanups, + add-ons and the like, so the generated files can be used directly + without further processing. + + These scripts are called with the target directory name as first + argument. Make sure the exit code of those scripts are 0, otherwise + make will stop after calling them. + +config BR2_ROOTFS_POST_FAKEROOT_SCRIPT + string "Custom scripts to run inside the fakeroot environment" + default "" + help + Specify a space-separated list of scripts to be run at the end + of the fakeroot script right before the image(s) are actually + generated. + + This gives users the opportunity to do customisations of the + content of the rootfs, which would otherwise require root + rights. + + These scripts are called with the target directory name as + first argument. The build will fail on the first scripts that + exits with a non-zero exit code. + + Note that Buildroot already provides mechanisms to customise + the content of the rootfs: + + - BR2_ROOTFS_STATIC_DEVICE_TABLE + to create arbitrary entries statically in /dev + + - BR2_ROOTFS_DEVICE_TABLE + to set arbitrary permissions as well as extended attributes + (such as capabilities) on files and directories, + + - BR2_ROOTFS_USERS_TABLES: + to create arbitrary users and their home directories + + It is highly recommended to use those mechanisms if possible, + rather than using custom fakeroot scripts. + +config BR2_ROOTFS_POST_IMAGE_SCRIPT + string "Custom scripts to run after creating filesystem images" + default "" + help + Specify a space-separated list of scripts to be run after + the build has finished and after Buildroot has packed the + files into selected filesystem images. + + This can for example be used to call a tool building a + firmware image from different images generated by Buildroot, + or automatically extract the tarball root filesystem image + into some location exported by NFS, or any other custom + action. + + These scripts are called with the images directory name as + first argument. The script is executed from the main Buildroot + source directory as the current directory. + +config BR2_ROOTFS_POST_SCRIPT_ARGS + string "Extra arguments passed to custom scripts" + depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" \ + || BR2_ROOTFS_POST_FAKEROOT_SCRIPT != "" \ + || BR2_ROOTFS_POST_IMAGE_SCRIPT != "" + help + Pass these additional arguments to each post-build or post-image + scripts. + + Note that all the post-build and post-image scripts will be passed + the same set of arguments, you can not pass different arguments to + each script. + + Note also, as stated in their respective help text, that the first + argument to each post-build or post-image script is the target + directory / images directory. The arguments in this option will be + passed *after* those. + +endmenu diff --git a/buildroot/system/device_table.txt b/buildroot/system/device_table.txt new file mode 100644 index 0000000..dc1af51 --- /dev/null +++ b/buildroot/system/device_table.txt @@ -0,0 +1,21 @@ +# See package/makedevs/README for details +# +# This device table is used to assign proper ownership and permissions +# on various files. It doesn't create any device file, as it is used +# in both static device configurations (where /dev/ is static) and in +# dynamic configurations (where devtmpfs, mdev or udev are used). +# +# +/dev d 755 0 0 - - - - - +/tmp d 1777 0 0 - - - - - +/etc d 755 0 0 - - - - - +/root d 700 0 0 - - - - - +/var/www d 755 33 33 - - - - - +/etc/shadow f 600 0 0 - - - - - +/etc/passwd f 644 0 0 - - - - - +/etc/network/if-up.d d 755 0 0 - - - - - +/etc/network/if-pre-up.d d 755 0 0 - - - - - +/etc/network/if-down.d d 755 0 0 - - - - - +/etc/network/if-post-down.d d 755 0 0 - - - - - +# uncomment this to allow starting x as non-root +#/usr/X11R6/bin/Xfbdev f 4755 0 0 - - - - - diff --git a/buildroot/system/device_table_dev.txt b/buildroot/system/device_table_dev.txt new file mode 100644 index 0000000..4f0b637 --- /dev/null +++ b/buildroot/system/device_table_dev.txt @@ -0,0 +1,133 @@ +# See package/makedevs/README for details +# +# This device table is used only to create device files when a static +# device configuration is used (entries in /dev are static). +# +# + +# Normal system devices +/dev/mem c 640 0 0 1 1 0 0 - +/dev/kmem c 640 0 0 1 2 0 0 - +/dev/null c 666 0 0 1 3 0 0 - +/dev/zero c 666 0 0 1 5 0 0 - +/dev/random c 666 0 0 1 8 0 0 - +/dev/urandom c 666 0 0 1 9 0 0 - +/dev/ram b 640 0 0 1 1 0 0 - +/dev/ram b 640 0 0 1 0 0 1 4 +/dev/loop b 640 0 0 7 0 0 1 2 +/dev/rtc c 640 0 0 10 135 - - - +/dev/console c 666 0 0 5 1 - - - +/dev/tty c 666 0 0 5 0 - - - +/dev/tty c 666 0 0 4 0 0 1 8 +/dev/ttyp c 666 0 0 3 0 0 1 10 +/dev/ptyp c 666 0 0 2 0 0 1 10 +/dev/ptmx c 666 0 0 5 2 - - - +/dev/ttyP c 666 0 0 57 0 0 1 4 +/dev/ttyS c 666 0 0 4 64 0 1 4 +/dev/fb c 640 0 5 29 0 0 1 4 +#/dev/ttySA c 666 0 0 204 5 0 1 3 +/dev/psaux c 666 0 0 10 1 0 0 - +#/dev/ppp c 666 0 0 108 0 - - - +/dev/ttyAM c 666 0 0 204 16 0 1 3 +/dev/ttyCPM c 666 0 0 204 46 0 1 4 +/dev/ttyAMA c 666 0 0 204 64 0 1 4 +/dev/ttyBF c 666 0 0 204 64 0 1 2 +/dev/ttySAC c 666 0 0 204 64 0 1 4 +/dev/ttySC c 666 0 0 204 8 0 1 8 +/dev/ttyPSC c 666 0 0 204 148 0 1 4 +/dev/ttyUL c 666 0 0 204 187 0 1 4 +/dev/ttymxc c 666 0 0 207 16 0 1 4 +/dev/hvc c 640 0 0 229 0 0 1 4 + +# Input stuff +/dev/input d 755 0 0 - - - - - +/dev/input/mice c 640 0 0 13 63 0 0 - +/dev/input/mouse c 660 0 0 13 32 0 1 4 +/dev/input/event c 660 0 0 13 64 0 1 4 +#/dev/input/js c 660 0 0 13 0 0 1 4 + + +# MTD stuff +/dev/mtd c 640 0 0 90 0 0 2 4 +/dev/mtdblock b 640 0 0 31 0 0 1 4 + +#Tun/tap driver +/dev/net d 755 0 0 - - - - - +/dev/net/tun c 660 0 0 10 200 - - - + +# Audio stuff +#/dev/audio c 666 0 29 14 4 - - - +#/dev/audio1 c 666 0 29 14 20 - - - +#/dev/dsp c 666 0 29 14 3 - - - +#/dev/dsp1 c 666 0 29 14 19 - - - +#/dev/sndstat c 666 0 29 14 6 - - - + +# User-mode Linux stuff +#/dev/ubda b 640 0 0 98 0 0 0 - +#/dev/ubda b 640 0 0 98 1 1 1 15 + +# IDE Devices +/dev/hda b 640 0 0 3 0 0 0 - +/dev/hda b 640 0 0 3 1 1 1 15 +/dev/hdb b 640 0 0 3 64 0 0 - +/dev/hdb b 640 0 0 3 65 1 1 15 +#/dev/hdc b 640 0 0 22 0 0 0 - +#/dev/hdc b 640 0 0 22 1 1 1 15 +#/dev/hdd b 640 0 0 22 64 0 0 - +#/dev/hdd b 640 0 0 22 65 1 1 15 +#/dev/hde b 640 0 0 33 0 0 0 - +#/dev/hde b 640 0 0 33 1 1 1 15 +#/dev/hdf b 640 0 0 33 64 0 0 - +#/dev/hdf b 640 0 0 33 65 1 1 15 +#/dev/hdg b 640 0 0 34 0 0 0 - +#/dev/hdg b 640 0 0 34 1 1 1 15 +#/dev/hdh b 640 0 0 34 64 0 0 - +#/dev/hdh b 640 0 0 34 65 1 1 15 + +# SCSI Devices +/dev/sda b 640 0 0 8 0 0 0 - +/dev/sda b 640 0 0 8 1 1 1 15 +/dev/sdb b 640 0 0 8 16 0 0 - +/dev/sdb b 640 0 0 8 17 1 1 15 +#/dev/sdc b 640 0 0 8 32 0 0 - +#/dev/sdc b 640 0 0 8 33 1 1 15 +#/dev/sdd b 640 0 0 8 48 0 0 - +#/dev/sdd b 640 0 0 8 49 1 1 15 +#/dev/sde b 640 0 0 8 64 0 0 - +#/dev/sde b 640 0 0 8 65 1 1 15 +#/dev/sdf b 640 0 0 8 80 0 0 - +#/dev/sdf b 640 0 0 8 81 1 1 15 +#/dev/sdg b 640 0 0 8 96 0 0 - +#/dev/sdg b 640 0 0 8 97 1 1 15 +#/dev/sdh b 640 0 0 8 112 0 0 - +#/dev/sdh b 640 0 0 8 113 1 1 15 +#/dev/sg c 640 0 0 21 0 0 1 15 +#/dev/scd b 640 0 0 11 0 0 1 15 +#/dev/st c 640 0 0 9 0 0 1 8 +#/dev/nst c 640 0 0 9 128 0 1 8 +#/dev/st c 640 0 0 9 32 1 1 4 +#/dev/st c 640 0 0 9 64 1 1 4 +#/dev/st c 640 0 0 9 96 1 1 4 + +# USB block devices (ub driver) +/dev/uba b 640 0 0 180 0 0 0 - +/dev/uba b 640 0 0 180 1 1 1 6 +/dev/ubb b 640 0 0 180 8 0 0 - +/dev/ubb b 640 0 0 180 65 1 1 6 + +# Floppy disk devices +#/dev/fd b 640 0 0 2 0 0 1 2 +#/dev/fd0d360 b 640 0 0 2 4 0 0 - +#/dev/fd1d360 b 640 0 0 2 5 0 0 - +#/dev/fd0h1200 b 640 0 0 2 8 0 0 - +#/dev/fd1h1200 b 640 0 0 2 9 0 0 - +#/dev/fd0u1440 b 640 0 0 2 28 0 0 - +#/dev/fd1u1440 b 640 0 0 2 29 0 0 - +#/dev/fd0u2880 b 640 0 0 2 32 0 0 - +#/dev/fd1u2880 b 640 0 0 2 33 0 0 - + +# I2C device nodes +/dev/i2c- c 666 0 0 89 0 0 1 4 + +# v4l device nodes +/dev/video c 666 0 0 81 0 0 1 4 diff --git a/buildroot/system/skeleton/dev/.empty b/buildroot/system/skeleton/dev/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/etc/group b/buildroot/system/skeleton/etc/group new file mode 100644 index 0000000..76346b3 --- /dev/null +++ b/buildroot/system/skeleton/etc/group @@ -0,0 +1,26 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +kmem:x:9: +wheel:x:10:root +cdrom:x:11: +dialout:x:18: +floppy:x:19: +video:x:28: +audio:x:29: +tape:x:32: +www-data:x:33: +operator:x:37: +utmp:x:43: +plugdev:x:46: +staff:x:50: +lock:x:54: +netdev:x:82: +users:x:100: +nogroup:x:65534: diff --git a/buildroot/system/skeleton/etc/hosts b/buildroot/system/skeleton/etc/hosts new file mode 100644 index 0000000..ba712fe --- /dev/null +++ b/buildroot/system/skeleton/etc/hosts @@ -0,0 +1 @@ +127.0.0.1 localhost diff --git a/buildroot/system/skeleton/etc/mtab b/buildroot/system/skeleton/etc/mtab new file mode 120000 index 0000000..5c4677a --- /dev/null +++ b/buildroot/system/skeleton/etc/mtab @@ -0,0 +1 @@ +../proc/self/mounts \ No newline at end of file diff --git a/buildroot/system/skeleton/etc/passwd b/buildroot/system/skeleton/etc/passwd new file mode 100644 index 0000000..d8281d2 --- /dev/null +++ b/buildroot/system/skeleton/etc/passwd @@ -0,0 +1,9 @@ +root:x:0:0:root:/root:/bin/sh +daemon:x:1:1:daemon:/usr/sbin:/bin/false +bin:x:2:2:bin:/bin:/bin/false +sys:x:3:3:sys:/dev:/bin/false +sync:x:4:100:sync:/bin:/bin/sync +mail:x:8:8:mail:/var/spool/mail:/bin/false +www-data:x:33:33:www-data:/var/www:/bin/false +operator:x:37:37:Operator:/var:/bin/false +nobody:x:65534:65534:nobody:/home:/bin/false diff --git a/buildroot/system/skeleton/etc/profile b/buildroot/system/skeleton/etc/profile new file mode 100644 index 0000000..1255d23 --- /dev/null +++ b/buildroot/system/skeleton/etc/profile @@ -0,0 +1,20 @@ +export PATH=/bin:/sbin:/usr/bin:/usr/sbin + +if [ "$PS1" ]; then + if [ "`id -u`" -eq 0 ]; then + export PS1='# ' + else + export PS1='$ ' + fi +fi + +export PAGER='/bin/more' +export EDITOR='/bin/vi' + +# Source configuration files from /etc/profile.d +for i in /etc/profile.d/*.sh ; do + if [ -r "$i" ]; then + . $i + fi +done +unset i diff --git a/buildroot/system/skeleton/etc/profile.d/umask.sh b/buildroot/system/skeleton/etc/profile.d/umask.sh new file mode 100644 index 0000000..8e71ad5 --- /dev/null +++ b/buildroot/system/skeleton/etc/profile.d/umask.sh @@ -0,0 +1 @@ +umask 022 diff --git a/buildroot/system/skeleton/etc/protocols b/buildroot/system/skeleton/etc/protocols new file mode 100644 index 0000000..cfdd5ad --- /dev/null +++ b/buildroot/system/skeleton/etc/protocols @@ -0,0 +1,61 @@ +# Internet (IP) protocols +# +# Updated from http://www.iana.org/assignments/protocol-numbers and other +# sources. + +ip 0 IP # internet protocol, pseudo protocol number +hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883] +icmp 1 ICMP # internet control message protocol +igmp 2 IGMP # Internet Group Management +ggp 3 GGP # gateway-gateway protocol +ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'') +st 5 ST # ST datagram mode +tcp 6 TCP # transmission control protocol +egp 8 EGP # exterior gateway protocol +igp 9 IGP # any private interior gateway (Cisco) +pup 12 PUP # PARC universal packet protocol +udp 17 UDP # user datagram protocol +hmp 20 HMP # host monitoring protocol +xns-idp 22 XNS-IDP # Xerox NS IDP +rdp 27 RDP # "reliable datagram" protocol +iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4 [RFC905] +dccp 33 DCCP # Datagram Congestion Control Prot. [RFC4340] +xtp 36 XTP # Xpress Transfer Protocol +ddp 37 DDP # Datagram Delivery Protocol +idpr-cmtp 38 IDPR-CMTP # IDPR Control Message Transport +ipv6 41 IPv6 # Internet Protocol, version 6 +ipv6-route 43 IPv6-Route # Routing Header for IPv6 +ipv6-frag 44 IPv6-Frag # Fragment Header for IPv6 +idrp 45 IDRP # Inter-Domain Routing Protocol +rsvp 46 RSVP # Reservation Protocol +gre 47 GRE # General Routing Encapsulation +esp 50 IPSEC-ESP # Encap Security Payload [RFC2406] +ah 51 IPSEC-AH # Authentication Header [RFC2402] +skip 57 SKIP # SKIP +ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6 +ipv6-nonxt 59 IPv6-NoNxt # No Next Header for IPv6 +ipv6-opts 60 IPv6-Opts # Destination Options for IPv6 +rspf 73 RSPF CPHB # Radio Shortest Path First (officially CPHB) +vmtp 81 VMTP # Versatile Message Transport +eigrp 88 EIGRP # Enhanced Interior Routing Protocol (Cisco) +ospf 89 OSPFIGP # Open Shortest Path First IGP +ax.25 93 AX.25 # AX.25 frames +ipip 94 IPIP # IP-within-IP Encapsulation Protocol +etherip 97 ETHERIP # Ethernet-within-IP Encapsulation [RFC3378] +encap 98 ENCAP # Yet Another IP encapsulation [RFC1241] +# 99 # any private encryption scheme +pim 103 PIM # Protocol Independent Multicast +ipcomp 108 IPCOMP # IP Payload Compression Protocol +vrrp 112 VRRP # Virtual Router Redundancy Protocol [RFC5798] +l2tp 115 L2TP # Layer Two Tunneling Protocol [RFC2661] +isis 124 ISIS # IS-IS over IPv4 +sctp 132 SCTP # Stream Control Transmission Protocol +fc 133 FC # Fibre Channel +mobility-header 135 Mobility-Header # Mobility Support for IPv6 [RFC3775] +udplite 136 UDPLite # UDP-Lite [RFC3828] +mpls-in-ip 137 MPLS-in-IP # MPLS-in-IP [RFC4023] +manet 138 # MANET Protocols [RFC5498] +hip 139 HIP # Host Identity Protocol +shim6 140 Shim6 # Shim6 Protocol [RFC5533] +wesp 141 WESP # Wrapped Encapsulating Security Payload +rohc 142 ROHC # Robust Header Compression diff --git a/buildroot/system/skeleton/etc/resolv.conf b/buildroot/system/skeleton/etc/resolv.conf new file mode 120000 index 0000000..71f6f96 --- /dev/null +++ b/buildroot/system/skeleton/etc/resolv.conf @@ -0,0 +1 @@ +../tmp/resolv.conf \ No newline at end of file diff --git a/buildroot/system/skeleton/etc/services b/buildroot/system/skeleton/etc/services new file mode 100644 index 0000000..b287b63 --- /dev/null +++ b/buildroot/system/skeleton/etc/services @@ -0,0 +1,302 @@ +# /etc/services: +# $Id: services,v 1.1 2004/10/09 02:49:18 andersen Exp $ +# +# Network services, Internet style +# +# Note that it is presently the policy of IANA to assign a single well-known +# port number for both TCP and UDP; hence, most entries here have two entries +# even if the protocol doesn't support UDP operations. +# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports +# are included, only the more common ones. + +tcpmux 1/tcp # TCP port service multiplexer +echo 7/tcp +echo 7/udp +discard 9/tcp sink null +discard 9/udp sink null +systat 11/tcp users +daytime 13/tcp +daytime 13/udp +netstat 15/tcp +qotd 17/tcp quote +msp 18/tcp # message send protocol +msp 18/udp # message send protocol +chargen 19/tcp ttytst source +chargen 19/udp ttytst source +ftp-data 20/tcp +ftp 21/tcp +fsp 21/udp fspd +ssh 22/tcp # SSH Remote Login Protocol +ssh 22/udp # SSH Remote Login Protocol +telnet 23/tcp +# 24 - private +smtp 25/tcp mail +# 26 - unassigned +time 37/tcp timserver +time 37/udp timserver +rlp 39/udp resource # resource location +nameserver 42/tcp name # IEN 116 +whois 43/tcp nicname +re-mail-ck 50/tcp # Remote Mail Checking Protocol +re-mail-ck 50/udp # Remote Mail Checking Protocol +domain 53/tcp nameserver # name-domain server +domain 53/udp nameserver +mtp 57/tcp # deprecated +bootps 67/tcp # BOOTP server +bootps 67/udp +bootpc 68/tcp # BOOTP client +bootpc 68/udp +tftp 69/udp +gopher 70/tcp # Internet Gopher +gopher 70/udp +rje 77/tcp netrjs +finger 79/tcp +www 80/tcp http # WorldWideWeb HTTP +www 80/udp # HyperText Transfer Protocol +link 87/tcp ttylink +kerberos 88/tcp kerberos5 krb5 # Kerberos v5 +kerberos 88/udp kerberos5 krb5 # Kerberos v5 +supdup 95/tcp +# 100 - reserved +hostnames 101/tcp hostname # usually from sri-nic +iso-tsap 102/tcp tsap # part of ISODE. +csnet-ns 105/tcp cso-ns # also used by CSO name server +csnet-ns 105/udp cso-ns +# unfortunately the poppassd (Eudora) uses a port which has already +# been assigned to a different service. We list the poppassd as an +# alias here. This should work for programs asking for this service. +# (due to a bug in inetd the 3com-tsmux line is disabled) +#3com-tsmux 106/tcp poppassd +#3com-tsmux 106/udp poppassd +rtelnet 107/tcp # Remote Telnet +rtelnet 107/udp +pop-2 109/tcp postoffice # POP version 2 +pop-2 109/udp +pop-3 110/tcp # POP version 3 +pop-3 110/udp +sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP +sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP +auth 113/tcp authentication tap ident +sftp 115/tcp +uucp-path 117/tcp +nntp 119/tcp readnews untp # USENET News Transfer Protocol +ntp 123/tcp +ntp 123/udp # Network Time Protocol +netbios-ns 137/tcp # NETBIOS Name Service +netbios-ns 137/udp +netbios-dgm 138/tcp # NETBIOS Datagram Service +netbios-dgm 138/udp +netbios-ssn 139/tcp # NETBIOS session service +netbios-ssn 139/udp +imap2 143/tcp # Interim Mail Access Proto v2 +imap2 143/udp +snmp 161/udp # Simple Net Mgmt Proto +snmp-trap 162/udp snmptrap # Traps for SNMP +cmip-man 163/tcp # ISO mgmt over IP (CMOT) +cmip-man 163/udp +cmip-agent 164/tcp +cmip-agent 164/udp +xdmcp 177/tcp # X Display Mgr. Control Proto +xdmcp 177/udp +nextstep 178/tcp NeXTStep NextStep # NeXTStep window +nextstep 178/udp NeXTStep NextStep # server +bgp 179/tcp # Border Gateway Proto. +bgp 179/udp +prospero 191/tcp # Cliff Neuman's Prospero +prospero 191/udp +irc 194/tcp # Internet Relay Chat +irc 194/udp +smux 199/tcp # SNMP Unix Multiplexer +smux 199/udp +at-rtmp 201/tcp # AppleTalk routing +at-rtmp 201/udp +at-nbp 202/tcp # AppleTalk name binding +at-nbp 202/udp +at-echo 204/tcp # AppleTalk echo +at-echo 204/udp +at-zis 206/tcp # AppleTalk zone information +at-zis 206/udp +qmtp 209/tcp # The Quick Mail Transfer Protocol +qmtp 209/udp # The Quick Mail Transfer Protocol +z3950 210/tcp wais # NISO Z39.50 database +z3950 210/udp wais +ipx 213/tcp # IPX +ipx 213/udp +imap3 220/tcp # Interactive Mail Access +imap3 220/udp # Protocol v3 +ulistserv 372/tcp # UNIX Listserv +ulistserv 372/udp +https 443/tcp # MCom +https 443/udp # MCom +snpp 444/tcp # Simple Network Paging Protocol +snpp 444/udp # Simple Network Paging Protocol +saft 487/tcp # Simple Asynchronous File Transfer +saft 487/udp # Simple Asynchronous File Transfer +npmp-local 610/tcp dqs313_qmaster # npmp-local / DQS +npmp-local 610/udp dqs313_qmaster # npmp-local / DQS +npmp-gui 611/tcp dqs313_execd # npmp-gui / DQS +npmp-gui 611/udp dqs313_execd # npmp-gui / DQS +hmmp-ind 612/tcp dqs313_intercell# HMMP Indication / DQS +hmmp-ind 612/udp dqs313_intercell# HMMP Indication / DQS +# +# UNIX specific services +# +exec 512/tcp +biff 512/udp comsat +login 513/tcp +who 513/udp whod +shell 514/tcp cmd # no passwords used +syslog 514/udp +printer 515/tcp spooler # line printer spooler +talk 517/udp +ntalk 518/udp +route 520/udp router routed # RIP +timed 525/udp timeserver +tempo 526/tcp newdate +courier 530/tcp rpc +conference 531/tcp chat +netnews 532/tcp readnews +netwall 533/udp # -for emergency broadcasts +uucp 540/tcp uucpd # uucp daemon +afpovertcp 548/tcp # AFP over TCP +afpovertcp 548/udp # AFP over TCP +remotefs 556/tcp rfs_server rfs # Brunhoff remote filesystem +klogin 543/tcp # Kerberized `rlogin' (v5) +kshell 544/tcp krcmd # Kerberized `rsh' (v5) +kerberos-adm 749/tcp # Kerberos `kadmin' (v5) +# +webster 765/tcp # Network dictionary +webster 765/udp +# +# From ``Assigned Numbers'': +# +#> The Registered Ports are not controlled by the IANA and on most systems +#> can be used by ordinary user processes or programs executed by ordinary +#> users. +# +#> Ports are used in the TCP [45,106] to name the ends of logical +#> connections which carry long term conversations. For the purpose of +#> providing services to unknown callers, a service contact port is +#> defined. This list specifies the port used by the server process as its +#> contact port. While the IANA can not control uses of these ports it +#> does register or list uses of these ports as a convienence to the +#> community. +# +nfsdstatus 1110/tcp +nfsd-keepalive 1110/udp + +ingreslock 1524/tcp +ingreslock 1524/udp +prospero-np 1525/tcp # Prospero non-privileged +prospero-np 1525/udp +datametrics 1645/tcp old-radius # datametrics / old radius entry +datametrics 1645/udp old-radius # datametrics / old radius entry +sa-msg-port 1646/tcp old-radacct # sa-msg-port / old radacct entry +sa-msg-port 1646/udp old-radacct # sa-msg-port / old radacct entry +radius 1812/tcp # Radius +radius 1812/udp # Radius +radacct 1813/tcp # Radius Accounting +radacct 1813/udp # Radius Accounting +nfsd 2049/tcp nfs +nfsd 2049/udp nfs +cvspserver 2401/tcp # CVS client/server operations +cvspserver 2401/udp # CVS client/server operations +mysql 3306/tcp # MySQL +mysql 3306/udp # MySQL +rfe 5002/tcp # Radio Free Ethernet +rfe 5002/udp # Actually uses UDP only +cfengine 5308/tcp # CFengine +cfengine 5308/udp # CFengine +bbs 7000/tcp # BBS service +# +# +# Kerberos (Project Athena/MIT) services +# Note that these are for Kerberos v4, and are unofficial. Sites running +# v4 should uncomment these and comment out the v5 entries above. +# +kerberos4 750/udp kerberos-iv kdc # Kerberos (server) udp +kerberos4 750/tcp kerberos-iv kdc # Kerberos (server) tcp +kerberos_master 751/udp # Kerberos authentication +kerberos_master 751/tcp # Kerberos authentication +passwd_server 752/udp # Kerberos passwd server +krb_prop 754/tcp # Kerberos slave propagation +krbupdate 760/tcp kreg # Kerberos registration +kpasswd 761/tcp kpwd # Kerberos "passwd" +kpop 1109/tcp # Pop with Kerberos +knetd 2053/tcp # Kerberos de-multiplexor +zephyr-srv 2102/udp # Zephyr server +zephyr-clt 2103/udp # Zephyr serv-hm connection +zephyr-hm 2104/udp # Zephyr hostmanager +eklogin 2105/tcp # Kerberos encrypted rlogin +# +# Unofficial but necessary (for NetBSD) services +# +supfilesrv 871/tcp # SUP server +supfiledbg 1127/tcp # SUP debugging +# +# Datagram Delivery Protocol services +# +rtmp 1/ddp # Routing Table Maintenance Protocol +nbp 2/ddp # Name Binding Protocol +echo 4/ddp # AppleTalk Echo Protocol +zip 6/ddp # Zone Information Protocol +# +# Services added for the Debian GNU/Linux distribution +poppassd 106/tcp # Eudora +poppassd 106/udp # Eudora +mailq 174/tcp # Mailer transport queue for Zmailer +mailq 174/tcp # Mailer transport queue for Zmailer +omirr 808/tcp omirrd # online mirror +omirr 808/udp omirrd # online mirror +rmtcfg 1236/tcp # Gracilis Packeten remote config server +xtel 1313/tcp # french minitel +coda_opcons 1355/udp # Coda opcons (Coda fs) +coda_venus 1363/udp # Coda venus (Coda fs) +coda_auth 1357/udp # Coda auth (Coda fs) +coda_udpsrv 1359/udp # Coda udpsrv (Coda fs) +coda_filesrv 1361/udp # Coda filesrv (Coda fs) +codacon 1423/tcp venus.cmu # Coda Console (Coda fs) +coda_aux1 1431/tcp # coda auxiliary service (Coda fs) +coda_aux1 1431/udp # coda auxiliary service (Coda fs) +coda_aux2 1433/tcp # coda auxiliary service (Coda fs) +coda_aux2 1433/udp # coda auxiliary service (Coda fs) +coda_aux3 1435/tcp # coda auxiliary service (Coda fs) +coda_aux3 1435/udp # coda auxiliary service (Coda fs) +cfinger 2003/tcp # GNU Finger +afbackup 2988/tcp # Afbackup system +afbackup 2988/udp # Afbackup system +icp 3130/tcp # Internet Cache Protocol (Squid) +icp 3130/udp # Internet Cache Protocol (Squid) +postgres 5432/tcp # POSTGRES +postgres 5432/udp # POSTGRES +fax 4557/tcp # FAX transmission service (old) +hylafax 4559/tcp # HylaFAX client-server protocol (new) +noclog 5354/tcp # noclogd with TCP (nocol) +noclog 5354/udp # noclogd with UDP (nocol) +hostmon 5355/tcp # hostmon uses TCP (nocol) +hostmon 5355/udp # hostmon uses TCP (nocol) +ircd 6667/tcp # Internet Relay Chat +ircd 6667/udp # Internet Relay Chat +webcache 8080/tcp # WWW caching service +webcache 8080/udp # WWW caching service +tproxy 8081/tcp # Transparent Proxy +tproxy 8081/udp # Transparent Proxy +mandelspawn 9359/udp mandelbrot # network mandelbrot +amanda 10080/udp # amanda backup services +amandaidx 10082/tcp # amanda backup services +amidxtape 10083/tcp # amanda backup services +isdnlog 20011/tcp # isdn logging system +isdnlog 20011/udp # isdn logging system +vboxd 20012/tcp # voice box system +vboxd 20012/udp # voice box system +binkp 24554/tcp # Binkley +binkp 24554/udp # Binkley +asp 27374/tcp # Address Search Protocol +asp 27374/udp # Address Search Protocol +tfido 60177/tcp # Ifmail +tfido 60177/udp # Ifmail +fido 60179/tcp # Ifmail +fido 60179/udp # Ifmail + +# Local services + diff --git a/buildroot/system/skeleton/etc/shadow b/buildroot/system/skeleton/etc/shadow new file mode 100644 index 0000000..06778f1 --- /dev/null +++ b/buildroot/system/skeleton/etc/shadow @@ -0,0 +1,9 @@ +root::10933:0:99999:7::: +daemon:*:10933:0:99999:7::: +bin:*:10933:0:99999:7::: +sys:*:10933:0:99999:7::: +sync:*:10933:0:99999:7::: +mail:*:10933:0:99999:7::: +www-data:*:10933:0:99999:7::: +operator:*:10933:0:99999:7::: +nobody:*:10933:0:99999:7::: diff --git a/buildroot/system/skeleton/media/.empty b/buildroot/system/skeleton/media/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/mnt/.empty b/buildroot/system/skeleton/mnt/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/opt/.empty b/buildroot/system/skeleton/opt/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/proc/.empty b/buildroot/system/skeleton/proc/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/root/.empty b/buildroot/system/skeleton/root/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/run/.empty b/buildroot/system/skeleton/run/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/sys/.empty b/buildroot/system/skeleton/sys/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/tmp/.empty b/buildroot/system/skeleton/tmp/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/usr/bin/.empty b/buildroot/system/skeleton/usr/bin/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/usr/lib/.empty b/buildroot/system/skeleton/usr/lib/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/skeleton/usr/sbin/.empty b/buildroot/system/skeleton/usr/sbin/.empty new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/system/system.mk b/buildroot/system/system.mk new file mode 100644 index 0000000..ca6bf13 --- /dev/null +++ b/buildroot/system/system.mk @@ -0,0 +1,88 @@ +################################################################################ +# +# system-related variables and macros +# +################################################################################ + +# This file exists to define variables and macros that pertain to the system +# settings, like rsyncing a directory for skeletons, or the /lib vs. /usr/lib +# symlink handling. +# +# Some variables may be used as conditions in Makefile code, so they must be +# defined properly before they are used; this file is included early, before +# any package is. + +# - SYSTEM_USR_SYMLINKS_OR_DIRS +# create /lib, /bin and /sbin, either as directories or as symlinks to +# their /usr conterparts +# +# - SYSTEM_RSYNC +# rsync $(1) to $(2), with proper exclusions and rights +# +# - SYSTEM_LIB_SYMLINK +# create the appropriate /lib{32,64} symlinks +# +# - SYSTEM_GETTY_PORT +# - SYSTEM_GETTY_BAUDRATE +# - SYSTEM_GETTY_TERM +# - SYSTEM_GETTY_OPTIONS +# the un-quoted getty setting +# +# - SYSTEM_REMOUNT_ROOT_INITTAB +# set inittab to remount root read-write or read-only +# + +# This function handles the merged or non-merged /usr cases +ifeq ($(BR2_ROOTFS_MERGED_USR),y) +define SYSTEM_USR_SYMLINKS_OR_DIRS + ln -snf usr/bin $(1)/bin + ln -snf usr/sbin $(1)/sbin + ln -snf usr/lib $(1)/lib +endef +else +define SYSTEM_USR_SYMLINKS_OR_DIRS + $(INSTALL) -d -m 0755 $(1)/bin + $(INSTALL) -d -m 0755 $(1)/sbin + $(INSTALL) -d -m 0755 $(1)/lib +endef +endif + +# This function rsyncs the skeleton directory in $(1) to the destination +# in $(2), which should be either $(TARTGET_DIR) or $(STAGING_DIR) +define SYSTEM_RSYNC + rsync -a --ignore-times $(RSYNC_VCS_EXCLUSIONS) \ + --chmod=u=rwX,go=rX --exclude .empty --exclude '*~' \ + $(1)/ $(2)/ +endef + +# Make a symlink lib32->lib or lib64->lib as appropriate. +# MIPS64/n32 requires lib32 even though it's a 64-bit arch. +# $(1): base dir (either staging or target) +ifeq ($(BR2_ARCH_IS_64)$(BR2_MIPS_NABI32),y) +define SYSTEM_LIB_SYMLINK + ln -snf lib $(1)/lib64 + ln -snf lib $(1)/usr/lib64 +endef +else +define SYSTEM_LIB_SYMLINK + ln -snf lib $(1)/lib32 + ln -snf lib $(1)/usr/lib32 +endef +endif + +SYSTEM_GETTY_PORT = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT)) +SYSTEM_GETTY_BAUDRATE = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE)) +SYSTEM_GETTY_TERM = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_TERM)) +SYSTEM_GETTY_OPTIONS = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_OPTIONS)) + +ifeq ($(BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW),y) +# Find commented line, if any, and remove leading '#'s +define SYSTEM_REMOUNT_ROOT_INITTAB + $(SED) '/^#.*-o remount,rw \/$$/s~^#\+~~' $(TARGET_DIR)/etc/inittab +endef +else +# Find uncommented line, if any, and add a leading '#' +define SYSTEM_REMOUNT_ROOT_INITTAB + $(SED) '/^[^#].*-o remount,rw \/$$/s~^~#~' $(TARGET_DIR)/etc/inittab +endef +endif diff --git a/buildroot/toolchain/Config.in b/buildroot/toolchain/Config.in new file mode 100644 index 0000000..bf1166b --- /dev/null +++ b/buildroot/toolchain/Config.in @@ -0,0 +1,61 @@ +menu "Toolchain" + +# Invisible option that makes sure the toolchain package always gets +# built +config BR2_TOOLCHAIN + bool + default y + +# Should be selected for glibc or eglibc +config BR2_TOOLCHAIN_USES_GLIBC + bool + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_TOOLCHAIN_HAS_FULL_GETTEXT + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS + select BR2_TOOLCHAIN_SUPPORTS_PIE + +config BR2_TOOLCHAIN_USES_UCLIBC + bool + select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_m68k && !BR2_microblaze && !BR2_STATIC_LIBS + +config BR2_TOOLCHAIN_USES_MUSL + bool + select BR2_USE_WCHAR + select BR2_ENABLE_LOCALE + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS + +choice + prompt "Toolchain type" + help + Select whether to use the toolchain provided by buildroot + or an external toolchain. + + Some vendors provide toolchains in binary form, some in + source form. + +config BR2_TOOLCHAIN_BUILDROOT + bool "Buildroot toolchain" + select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS + depends on BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT + +config BR2_TOOLCHAIN_EXTERNAL + bool "External toolchain" + help + Select if you want to use an existing cross-compiling + toolchain. Buildroot can either download automatically a + toolchain, or use an already installed toolchain. + +endchoice + +source "toolchain/toolchain-buildroot/Config.in" +source "toolchain/toolchain-external/Config.in" +source "toolchain/toolchain-common.in" + +endmenu diff --git a/buildroot/toolchain/helpers.mk b/buildroot/toolchain/helpers.mk new file mode 100644 index 0000000..1792286 --- /dev/null +++ b/buildroot/toolchain/helpers.mk @@ -0,0 +1,486 @@ +# This Makefile fragment declares toolchain related helper functions. + +# The copy_toolchain_lib_root function copies a toolchain library and +# its symbolic links from the sysroot directory to the target +# directory. Note that this function is used both by the external +# toolchain logic, and the glibc package, so care must be taken when +# changing this function. +# +# $1: library name pattern (can include glob wildcards) +# +copy_toolchain_lib_root = \ + LIBPATTERN="$(strip $1)"; \ + LIBPATHS=`find $(STAGING_DIR)/ -name "$${LIBPATTERN}" 2>/dev/null` ; \ + for LIBPATH in $${LIBPATHS} ; do \ + while true ; do \ + LIBNAME=`basename $${LIBPATH}`; \ + DESTDIR=`echo $${LIBPATH} | sed "s,^$(STAGING_DIR)/,," | xargs dirname` ; \ + mkdir -p $(TARGET_DIR)/$${DESTDIR}; \ + rm -fr $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ + if test -h $${LIBPATH} ; then \ + cp -d $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ + LIBPATH="`readlink -f $${LIBPATH}`"; \ + elif test -f $${LIBPATH}; then \ + $(INSTALL) -D -m0755 $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \ + break ; \ + else \ + exit -1; \ + fi; \ + done; \ + done + +# +# Copy the full external toolchain sysroot directory to the staging +# dir. The operation of this function is rendered a little bit +# complicated by the support for multilib toolchains. +# +# We start by copying etc, 'lib', sbin, usr and usr/'lib' from the +# sysroot of the selected architecture variant (as pointed to by +# ARCH_SYSROOT_DIR). This allows to import into the staging directory +# the C library and companion libraries for the correct architecture +# variant. 'lib' may not be literally 'lib' but could be something else, +# e.g. lib32-fp (as determined by ARCH_LIB_DIR) and we only want to copy +# that lib directory and no other. When copying usr, we therefore need +# to be extra careful not to include usr/lib* but we _do_ want to +# include usr/libexec. +# We are selective in the directories we copy since other directories +# might exist for other architecture variants (on Codesourcery +# toolchain, the sysroot for the default architecture variant contains +# the armv4t and thumb2 subdirectories, which are the sysroot for the +# corresponding architecture variants), and we don't want to import +# them. +# +# If ARCH_LIB_DIR is not a singular directory component, e.g. +# 'lib32/octeon2', then symbolic links in ARCH_LIB_DIR and +# usr/ARCH_LIB_DIR may be broken because Buildroot will flatten the +# directory structure (e.g. lib32/octeon2/foo is actually stored in +# lib/foo). This is only relevant for links that contain one or more ../ +# components, as links to the current directory are always fine. +# We need to fix the broken links by removing the right amount of ../ +# dots from the link destination. +# Once the link destination is valid again, it can be simplified to +# remove the dependency on intermediate directory symlinks. +# +# It is possible that ARCH_LIB_DIR does not contain the dynamic loader +# (ld*.so or similar) because it (or the main symlink to it) normally +# resides in /lib while ARCH_LIB_DIR may be something else (e.g. lib64, +# lib/, ...). Therefore, copy the dynamic loader separately. +# +# Then, if the selected architecture variant is not the default one +# (i.e, if SYSROOT_DIR != ARCH_SYSROOT_DIR), then we : +# +# * Import the header files from the default architecture +# variant. Header files are typically shared between the sysroots +# for the different architecture variants. If we use the +# non-default one, header files were not copied by the previous +# step, so we copy them here from the sysroot of the default +# architecture variant. +# +# * Create a symbolic link that matches the name of the subdirectory +# for the architecture variant in the original sysroot. This is +# required as the compiler will by default look in +# sysroot_dir/arch_variant/ for libraries and headers, when the +# non-default architecture variant is used. Without this, the +# compiler fails to find libraries and headers. +# +# Some toolchains (i.e Linaro binary toolchains) store support +# libraries (libstdc++, libgcc_s) outside of the sysroot, so we simply +# copy all the libraries from the "support lib directory" into our +# sysroot. +# +# Note that the 'locale' directories are not copied. They are huge +# (400+MB) in CodeSourcery toolchains, and they are not really useful. +# +# $1: main sysroot directory of the toolchain +# $2: arch specific sysroot directory of the toolchain +# $3: arch specific subdirectory in the sysroot +# $4: directory of libraries ('lib', 'lib32' or 'lib64') +# $5: support lib directories (for toolchains storing libgcc_s, +# libstdc++ and other gcc support libraries outside of the +# sysroot) +copy_toolchain_sysroot = \ + SYSROOT_DIR="$(strip $1)"; \ + ARCH_SYSROOT_DIR="$(strip $2)"; \ + ARCH_SUBDIR="$(strip $3)"; \ + ARCH_LIB_DIR="$(strip $4)" ; \ + SUPPORT_LIB_DIR="$(strip $5)" ; \ + for i in etc $${ARCH_LIB_DIR} sbin usr usr/$${ARCH_LIB_DIR}; do \ + if [ ! -d $${ARCH_SYSROOT_DIR}/$$i ] ; then \ + continue ; \ + fi ; \ + if [ "$$i" = "usr" ]; then \ + rsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \ + --include '/libexec*/' --exclude '/lib*/' \ + $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ + else \ + rsync -au --chmod=u=rwX,go=rX --exclude 'locale/' \ + $${ARCH_SYSROOT_DIR}/$$i/ $(STAGING_DIR)/$$i/ ; \ + fi ; \ + done ; \ + for link in $$(find $(STAGING_DIR) -type l); do \ + target=$$(readlink $${link}) ; \ + if [ "$${target}" == "$${target\#/}" ] ; then \ + continue ; \ + fi ; \ + relpath="$(call relpath_prefix,$${target\#/})" ; \ + echo "Fixing symlink $${link} from $${target} to $${relpath}$${target\#/}" ; \ + ln -sf $${relpath}$${target\#/} $${link} ; \ + done ; \ + relpath="$(call relpath_prefix,$${ARCH_LIB_DIR})" ; \ + if [ "$${relpath}" != "" ]; then \ + for i in $$(find -H $(STAGING_DIR)/$${ARCH_LIB_DIR} $(STAGING_DIR)/usr/$${ARCH_LIB_DIR} -type l -xtype l); do \ + LINKTARGET=`readlink $$i` ; \ + NEWLINKTARGET=$${LINKTARGET\#$$relpath} ; \ + ln -sf $${NEWLINKTARGET} $$i ; \ + $(call simplify_symlink,$$i,$(STAGING_DIR)) ; \ + done ; \ + fi ; \ + if [ ! -e $(STAGING_DIR)/lib/ld*.so.* ]; then \ + if [ -e $${ARCH_SYSROOT_DIR}/lib/ld*.so.* ]; then \ + cp -a $${ARCH_SYSROOT_DIR}/lib/ld*.so.* $(STAGING_DIR)/lib/ ; \ + fi ; \ + fi ; \ + if [ `readlink -f $${SYSROOT_DIR}` != `readlink -f $${ARCH_SYSROOT_DIR}` ] ; then \ + if [ ! -d $${ARCH_SYSROOT_DIR}/usr/include ] ; then \ + cp -a $${SYSROOT_DIR}/usr/include $(STAGING_DIR)/usr ; \ + fi ; \ + mkdir -p `dirname $(STAGING_DIR)/$${ARCH_SUBDIR}` ; \ + relpath="$(call relpath_prefix,$${ARCH_SUBDIR})./" ; \ + ln -s $${relpath} $(STAGING_DIR)/$${ARCH_SUBDIR} ; \ + echo "Symlinking $(STAGING_DIR)/$${ARCH_SUBDIR} -> $${relpath}" ; \ + fi ; \ + if test -n "$${SUPPORT_LIB_DIR}" ; then \ + cp -a $${SUPPORT_LIB_DIR}/* $(STAGING_DIR)/lib/ ; \ + fi ; \ + find $(STAGING_DIR) -type d | xargs chmod 755 + +# +# Check the specified kernel headers version actually matches the +# version in the toolchain. +# +# $1: sysroot directory +# $2: kernel version string, in the form: X.Y +# +check_kernel_headers_version = \ + if ! support/scripts/check-kernel-headers.sh $(1) $(2); then \ + exit 1; \ + fi + +# +# Check the specific gcc version actually matches the version in the +# toolchain +# +# $1: path to gcc +# $2: expected gcc version +# +check_gcc_version = \ + expected_version="$(strip $2)" ; \ + if [ -z "$${expected_version}" ]; then \ + exit 0 ; \ + fi; \ + real_version=`$(1) -dumpversion` ; \ + if [[ ! "$${real_version}" =~ ^$${expected_version}\. ]] ; then \ + printf "Incorrect selection of gcc version: expected %s.x, got %s\n" \ + "$${expected_version}" "$${real_version}" ; \ + exit 1 ; \ + fi + +# +# Check the availability of a particular glibc feature. This function +# is used to check toolchain options that are always supported by +# glibc, so we simply check that the corresponding option is properly +# enabled. +# +# $1: Buildroot option name +# $2: feature description +# +check_glibc_feature = \ + if [ "$($(1))" != "y" ] ; then \ + echo "$(2) available in C library, please enable $(1)" ; \ + exit 1 ; \ + fi + +# +# Check the availability of RPC support in a glibc toolchain +# +# $1: sysroot directory +# +check_glibc_rpc_feature = \ + IS_IN_LIBC=`test -f $(1)/usr/include/rpc/rpc.h && echo y` ; \ + if [ "$(BR2_TOOLCHAIN_HAS_NATIVE_RPC)" != "y" -a "$${IS_IN_LIBC}" = "y" ] ; then \ + echo "RPC support available in C library, please enable BR2_TOOLCHAIN_EXTERNAL_INET_RPC" ; \ + exit 1 ; \ + fi ; \ + if [ "$(BR2_TOOLCHAIN_HAS_NATIVE_RPC)" = "y" -a "$${IS_IN_LIBC}" != "y" ] ; then \ + echo "RPC support not available in C library, please disable BR2_TOOLCHAIN_EXTERNAL_INET_RPC" ; \ + exit 1 ; \ + fi + +# +# Check the correctness of a glibc external toolchain configuration. +# 1. Check that the C library selected in Buildroot matches the one +# of the external toolchain +# 2. Check that all the C library-related features are enabled in the +# config, since glibc always supports all of them +# +# $1: sysroot directory +# +check_glibc = \ + SYSROOT_DIR="$(strip $1)"; \ + if test `find -L $${SYSROOT_DIR}/ -maxdepth 2 -name 'ld-linux*.so.*' -o -name 'ld.so.*' -o -name 'ld64.so.*' | wc -l` -eq 0 ; then \ + echo "Incorrect selection of the C library"; \ + exit -1; \ + fi; \ + $(call check_glibc_feature,BR2_USE_MMU,MMU support) ;\ + $(call check_glibc_rpc_feature,$${SYSROOT_DIR}) + +# +# Check that the selected C library really is musl +# +# $1: cross-gcc path +# $2: cross-readelf path +check_musl = \ + __CROSS_CC=$(strip $1) ; \ + __CROSS_READELF=$(strip $2) ; \ + echo 'void main(void) {}' | $${__CROSS_CC} -x c -o $(BUILD_DIR)/.br-toolchain-test.tmp - >/dev/null 2>&1; \ + if ! $${__CROSS_READELF} -l $(BUILD_DIR)/.br-toolchain-test.tmp 2> /dev/null | grep 'program interpreter: /lib/ld-musl' -q; then \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp*; \ + echo "Incorrect selection of the C library" ; \ + exit -1; \ + fi ; \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp* + +# +# Check the conformity of Buildroot configuration with regard to the +# uClibc configuration of the external toolchain, for a particular +# feature. +# +# If 'Buildroot option name' ($2) is empty it means the uClibc option +# is mandatory. +# +# $1: uClibc macro name +# $2: Buildroot option name +# $3: uClibc config file +# $4: feature description +# +check_uclibc_feature = \ + IS_IN_LIBC=`grep -q "\#define $(1) 1" $(3) && echo y` ; \ + if [ -z "$(2)" ] ; then \ + if [ "$${IS_IN_LIBC}" != "y" ] ; then \ + echo "$(4) not available in C library, toolchain unsuitable for Buildroot" ; \ + exit 1 ; \ + fi ; \ + else \ + if [ "$($(2))" != "y" -a "$${IS_IN_LIBC}" = "y" ] ; then \ + echo "$(4) available in C library, please enable $(2)" ; \ + exit 1 ; \ + fi ; \ + if [ "$($(2))" = "y" -a "$${IS_IN_LIBC}" != "y" ] ; then \ + echo "$(4) not available in C library, please disable $(2)" ; \ + exit 1 ; \ + fi ; \ + fi + +# +# Check the correctness of a uclibc external toolchain configuration +# 1. Check that the C library selected in Buildroot matches the one +# of the external toolchain +# 2. Check that the features enabled in the Buildroot configuration +# match the features available in the uClibc of the external +# toolchain +# +# $1: sysroot directory +# +check_uclibc = \ + SYSROOT_DIR="$(strip $1)"; \ + if ! test -f $${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; then \ + echo "Incorrect selection of the C library"; \ + exit -1; \ + fi; \ + UCLIBC_CONFIG_FILE=$${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; \ + $(call check_uclibc_feature,__ARCH_USE_MMU__,BR2_USE_MMU,$${UCLIBC_CONFIG_FILE},MMU support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_LFS__,,$${UCLIBC_CONFIG_FILE},Large file support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_IPV6__,,$${UCLIBC_CONFIG_FILE},IPv6 support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_RPC__,BR2_TOOLCHAIN_HAS_NATIVE_RPC,$${UCLIBC_CONFIG_FILE},RPC support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_LOCALE__,BR2_ENABLE_LOCALE,$${UCLIBC_CONFIG_FILE},Locale support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_WCHAR__,BR2_USE_WCHAR,$${UCLIBC_CONFIG_FILE},Wide char support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_THREADS__,BR2_TOOLCHAIN_HAS_THREADS,$${UCLIBC_CONFIG_FILE},Thread support) ;\ + $(call check_uclibc_feature,__PTHREADS_DEBUG_SUPPORT__,BR2_TOOLCHAIN_HAS_THREADS_DEBUG,$${UCLIBC_CONFIG_FILE},Thread debugging support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_THREADS_NATIVE__,BR2_TOOLCHAIN_HAS_THREADS_NPTL,$${UCLIBC_CONFIG_FILE},NPTL thread support) + +# +# Check that the Buildroot configuration of the ABI matches the +# configuration of the external toolchain. +# +# $1: cross-gcc path +# $2: cross-readelf path +# +check_arm_abi = \ + __CROSS_CC=$(strip $1) ; \ + EXT_TOOLCHAIN_TARGET=`LANG=C $${__CROSS_CC} -v 2>&1 | grep ^Target | cut -f2 -d ' '` ; \ + if ! echo $${EXT_TOOLCHAIN_TARGET} | grep -qE 'eabi(hf)?$$' ; then \ + echo "External toolchain uses the unsuported OABI" ; \ + exit 1 ; \ + fi ; \ + if ! echo 'int main(void) {}' | $${__CROSS_CC} -x c -o $(BUILD_DIR)/.br-toolchain-test.tmp - ; then \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp*; \ + abistr_$(BR2_ARM_EABI)='EABI'; \ + abistr_$(BR2_ARM_EABIHF)='EABIhf'; \ + echo "Incorrect ABI setting: $${abistr_y} selected, but toolchain is incompatible"; \ + exit 1 ; \ + fi ; \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp* + +# +# Check that the external toolchain supports C++ +# +# $1: cross-g++ path +# +check_cplusplus = \ + __CROSS_CXX=$(strip $1) ; \ + $${__CROSS_CXX} -v > /dev/null 2>&1 ; \ + if test $$? -ne 0 ; then \ + echo "C++ support is selected but is not available in external toolchain" ; \ + exit 1 ; \ + fi + +# +# +# Check that the external toolchain supports Fortran +# +# $1: cross-gfortran path +# +check_fortran = \ + __CROSS_FC=$(strip $1) ; \ + __o=$(BUILD_DIR)/.br-toolchain-test-fortran.tmp ; \ + printf 'program hello\n\tprint *, "Hello Fortran!\\n"\nend program hello\n' | \ + $${__CROSS_FC} -x f95 -o $${__o} - ; \ + if test $$? -ne 0 ; then \ + rm -f $${__o}* ; \ + echo "Fortran support is selected but is not available in external toolchain" ; \ + exit 1 ; \ + fi ; \ + rm -f $${__o}* \ + +# +# Check that the cross-compiler given in the configuration exists +# +# $1: cross-gcc path +# +check_cross_compiler_exists = \ + __CROSS_CC=$(strip $1) ; \ + $${__CROSS_CC} -v > /dev/null 2>&1 ; \ + if test $$? -ne 0 ; then \ + echo "Cannot execute cross-compiler '$${__CROSS_CC}'" ; \ + exit 1 ; \ + fi + +# +# Check for toolchains known not to work with Buildroot. +# - For the Angstrom toolchains, we check by looking at the vendor part of +# the host tuple. +# - Exclude distro-class toolchains which are not relocatable. +# - Exclude broken toolchains which return "libc.a" with -print-file-name. +# - Exclude toolchains which doesn't support --sysroot option. +# +# $1: cross-gcc path +# +check_unusable_toolchain = \ + __CROSS_CC=$(strip $1) ; \ + vendor=`$${__CROSS_CC} -dumpmachine | cut -f2 -d'-'` ; \ + if test "$${vendor}" = "angstrom" ; then \ + echo "Angstrom toolchains are not pure toolchains: they contain" ; \ + echo "many other libraries than just the C library, which makes" ; \ + echo "them unsuitable as external toolchains for build systems" ; \ + echo "such as Buildroot." ; \ + exit 1 ; \ + fi; \ + with_sysroot=`$${__CROSS_CC} -v 2>&1 |sed -r -e '/.* --with-sysroot=([^[:space:]]+)[[:space:]].*/!d; s//\1/'`; \ + if test "$${with_sysroot}" = "/" ; then \ + echo "Distribution toolchains are unsuitable for use by Buildroot," ; \ + echo "as they were configured in a way that makes them non-relocatable,"; \ + echo "and contain a lot of pre-built libraries that would conflict with"; \ + echo "the ones Buildroot wants to build."; \ + exit 1; \ + fi; \ + libc_a_path=`$${__CROSS_CC} -print-file-name=libc.a` ; \ + if test "$${libc_a_path}" = "libc.a" ; then \ + echo "Unable to detect the toolchain sysroot, Buildroot cannot use this toolchain." ; \ + exit 1 ; \ + fi ; \ + sysroot_dir="$(call toolchain_find_sysroot,$${__CROSS_CC})" ; \ + if test -z "$${sysroot_dir}" ; then \ + echo "External toolchain doesn't support --sysroot. Cannot use." ; \ + exit 1 ; \ + fi + +# +# Check if the toolchain has SSP (stack smashing protector) support +# +# $1: cross-gcc path +# +check_toolchain_ssp = \ + __CROSS_CC=$(strip $1) ; \ + __HAS_SSP=`echo 'void main(){}' | $${__CROSS_CC} -Werror -fstack-protector -x c - -o $(BUILD_DIR)/.br-toolchain-test.tmp >/dev/null 2>&1 && echo y` ; \ + if [ "$(BR2_TOOLCHAIN_HAS_SSP)" != "y" -a "$${__HAS_SSP}" = "y" ] ; then \ + echo "SSP support available in this toolchain, please enable BR2_TOOLCHAIN_EXTERNAL_HAS_SSP" ; \ + exit 1 ; \ + fi ; \ + if [ "$(BR2_TOOLCHAIN_HAS_SSP)" = "y" -a "$${__HAS_SSP}" != "y" ] ; then \ + echo "SSP support not available in this toolchain, please disable BR2_TOOLCHAIN_EXTERNAL_HAS_SSP" ; \ + exit 1 ; \ + fi ; \ + rm -f $(BUILD_DIR)/.br-toolchain-test.tmp* + +# +# Generate gdbinit file for use with Buildroot +# +gen_gdbinit_file = \ + mkdir -p $(STAGING_DIR)/usr/share/buildroot/ ; \ + echo "set sysroot $(STAGING_DIR)" > $(STAGING_DIR)/usr/share/buildroot/gdbinit + +# Given a path, determine the relative prefix (../) needed to return to the +# root level. Note that the last component is treated as a file component; use a +# trailing slash to force treating it as a directory. Examples: +# relpath_prefix(lib32) = "" +# relpath_prefix(lib32/octeon2) = "../" +# relpath_prefix(lib32/octeon2/) = "../../" +# +# $1: input path +define relpath_prefix +$$( \ + prefix="" ; \ + nbslashs=`printf $1 | sed 's%[^/]%%g' | wc -c` ; \ + for slash in `seq 1 $${nbslashs}` ; do \ + prefix=$${prefix}"../" ; \ + done ; \ + printf "$$prefix" ; \ +) +endef + +# Replace the destination of a symbolic link with a simpler version +# For example, +# usr/lib/libfoo.so -> ../../lib32/libfoo.so.1 +# becomes +# usr/lib/libfoo.so -> ../../lib/libfoo.so.1 +# since 'lib32' is a symlink to 'lib'. +# +# Likewise, +# usr/lib/octeon2/libbar.so -> ../../../lib32/octeon2/libbar.so.1 +# becomes +# usr/lib/octeon2/libbar.so -> ../../lib/libbar.so.1 +# assuming lib32->lib and lib/octeon2->lib. +# +# $1: symlink +# $2: base path +define simplify_symlink +( \ + FULL_SRC="$$(readlink -f $$(dirname $1))/$$(basename $1)" ; \ + FULL_DEST="$$(readlink -f $1)" ; \ + FULL_BASE="$$(readlink -f $2)" ; \ + REL_SRC="$${FULL_SRC#$${FULL_BASE}/}" ; \ + REL_DEST="$${FULL_DEST#$${FULL_BASE}/}" ; \ + DOTS="$(call relpath_prefix,$${REL_SRC})" ; \ + ln -sf "$${DOTS}$${REL_DEST}" "$${FULL_SRC}" ; \ +) +endef diff --git a/buildroot/toolchain/toolchain-buildroot/Config.in b/buildroot/toolchain/toolchain-buildroot/Config.in new file mode 100644 index 0000000..3f57629 --- /dev/null +++ b/buildroot/toolchain/toolchain-buildroot/Config.in @@ -0,0 +1,111 @@ +# Config entries for internal toolchain backend + +if BR2_TOOLCHAIN_BUILDROOT + +comment "Toolchain Buildroot Options" + +config BR2_TOOLCHAIN_BUILDROOT_VENDOR + string "custom toolchain vendor name" + default "buildroot" + help + This option allows to customize the "vendor" part of the + toolchain tuple, where the toolchain tuple has the form + ---. The default value, "buildroot", + is fine for most cases, except in very specific situations + where gcc might make different decisions based on the vendor + part of the tuple. The value "unknown" is not allowed, as the + cross-compiling toolchain might then be confused with the + native toolchain when the target and host architecture are + identical. The value can not be empty either. + + If you're not sure, just leave the default "buildroot" value. + +choice + prompt "C library" + default BR2_TOOLCHAIN_BUILDROOT_UCLIBC + default BR2_TOOLCHAIN_BUILDROOT_GLIBC if BR2_powerpc64 + +config BR2_TOOLCHAIN_BUILDROOT_UCLIBC + bool "uClibc-ng" + select BR2_TOOLCHAIN_USES_UCLIBC + depends on BR2_aarch64 || BR2_aarch64_be || BR2_arcle || BR2_arceb || \ + BR2_arm || BR2_armeb || \ + BR2_bfin || BR2_i386 || BR2_m68k || BR2_microblaze || \ + BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \ + BR2_or1k || BR2_powerpc || BR2_sh2a || BR2_sh4 || \ + BR2_sh4eb || BR2_sparc || BR2_xtensa || BR2_x86_64 + help + This option selects uClibc-ng as the C library for the + cross-compilation toolchain. + + http://uclibc-ng.org + +config BR2_TOOLCHAIN_BUILDROOT_GLIBC + bool "glibc" + depends on BR2_arm || BR2_armeb || BR2_aarch64 || \ + BR2_aarch64_be || BR2_i386 || BR2_mips || \ + BR2_mipsel || BR2_mips64 || BR2_mips64el|| \ + BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \ + BR2_sh || BR2_sparc64 || BR2_x86_64 || \ + BR2_microblaze || BR2_nios2 || BR2_archs38 + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || !BR2_powerpc64le + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 || !BR2_MIPS_NAN_2008 + depends on !BR2_powerpc_SPE + select BR2_TOOLCHAIN_USES_GLIBC + # our glibc.mk enables RPC support + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + help + This option selects glibc as the C library for the + cross-compilation toolchain. + + http://www.gnu.org/software/libc/ + +comment "glibc needs a toolchain w/ dynamic library, kernel headers >= 3.2" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + +# glibc >= 2.26 require kernel headers >= 3.10 on powerpc64le. +comment "glibc on powerpc64le needs a toolchain w/ headers >= 3.10" + depends on BR2_powerpc64le + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + +# Support for MIPS NAN2008 needs headers >= 4.5 +comment "glibc on MIPS w/ NAN2008 needs a toolchain w/ headers >= 4.5" + depends on BR2_MIPS_NAN_2008 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + +config BR2_TOOLCHAIN_BUILDROOT_MUSL + bool "musl" + depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \ + BR2_microblaze || BR2_mips || BR2_mipsel || BR2_mips64 || \ + BR2_mips64el || BR2_or1k || BR2_powerpc || BR2_powerpc64 || \ + BR2_powerpc64le || BR2_sh || BR2_x86_64 + depends on !BR2_powerpc_SPE # not supported, build breaks + # sh2 nommu is supported by musl, but we don't have support + # for it in Buildroot. + depends on BR2_USE_MMU + select BR2_TOOLCHAIN_USES_MUSL + help + This option selects musl as the C library for the + cross-compilation toolchain. + +endchoice + +config BR2_TOOLCHAIN_BUILDROOT_LIBC + string + default "uclibc" if BR2_TOOLCHAIN_BUILDROOT_UCLIBC + default "glibc" if BR2_TOOLCHAIN_BUILDROOT_GLIBC + default "musl" if BR2_TOOLCHAIN_BUILDROOT_MUSL + +source "package/linux-headers/Config.in.host" +source "package/linux-headers/Config.in" +source "package/musl/Config.in" +source "package/uclibc/Config.in" +source "package/glibc/Config.in" +source "package/binutils/Config.in.host" +source "package/gcc/Config.in.host" +source "package/elf2flt/Config.in.host" +endif diff --git a/buildroot/toolchain/toolchain-buildroot/toolchain-buildroot.mk b/buildroot/toolchain/toolchain-buildroot/toolchain-buildroot.mk new file mode 100644 index 0000000..b30cc33 --- /dev/null +++ b/buildroot/toolchain/toolchain-buildroot/toolchain-buildroot.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# toolchain-buildroot +# +################################################################################ + +BR_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC)) + +# Triggering the build of the host-gcc-final will automatically do the +# build of binutils, uClibc, kernel headers and all the intermediate +# gcc steps. + +TOOLCHAIN_BUILDROOT_DEPENDENCIES = host-gcc-final + +TOOLCHAIN_BUILDROOT_ADD_TOOLCHAIN_DEPENDENCY = NO + +$(eval $(virtual-package)) diff --git a/buildroot/toolchain/toolchain-common.in b/buildroot/toolchain/toolchain-common.in new file mode 100644 index 0000000..8941e0f --- /dev/null +++ b/buildroot/toolchain/toolchain-common.in @@ -0,0 +1,469 @@ +# Generic toolchain options + +# we want gdb config in the middle of both source and external +# toolchains, but mconf won't let us source the same file twice, +# so put it here instead +source "package/gdb/Config.in.host" + +comment "Toolchain Generic Options" + +# https://sourceware.org/bugzilla/show_bug.cgi?id=19615 +# Affect toolchains built with binutils 2.26 (fixed in binutils 2.26.1). +config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19615 + bool + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735 +# exception_ptr, nested_exception, and future from libstdc++ are not +# available for architectures not supporting always lock-free atomic +# ints before GCC 7 +config BR2_TOOLCHAIN_HAS_GCC_BUG_64735 + bool + default y if BR2_nios2 + default y if BR2_ARM_CPU_ARMV4 + default y if BR2_ARM_CPU_ARMV5 + default y if BR2_sparc_v8 + default y if BR2_m68k_cf5208 + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +config BR2_TOOLCHAIN_HAS_NATIVE_RPC + bool + +config BR2_USE_WCHAR + bool + +config BR2_ENABLE_LOCALE + bool + +config BR2_INSTALL_LIBSTDCPP + bool + +config BR2_TOOLCHAIN_HAS_FORTRAN + bool + +config BR2_TOOLCHAIN_HAS_THREADS + bool + +config BR2_TOOLCHAIN_HAS_THREADS_DEBUG + bool + +config BR2_TOOLCHAIN_HAS_THREADS_NPTL + bool + +config BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS + bool + +config BR2_TOOLCHAIN_HAS_SSP + bool + +config BR2_TOOLCHAIN_SUPPORTS_PIE + bool + +config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY + bool "Copy gconv libraries" + depends on BR2_TOOLCHAIN_USES_GLIBC + help + The gconv libraries are used to convert between different + character sets (charsets). + + Say 'y' if you need to store and/or display different charsets. + +config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST + string "Gconv libraries to copy" + depends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY + help + Set to the list of gconv libraries to copy. + Leave empty to copy all gconv libraries. + + Specify only the basename of the libraries, leave + out the .so extension. Eg.: + IBM850 ISO8859-15 UNICODE + + Note: the full set of gconv libs are ~8MiB (on ARM). + +# This boolean is true if the toolchain provides a built-in full +# featured gettext implementation (glibc), and false if only a stub +# gettext implementation is provided (uclibc, musl) +config BR2_TOOLCHAIN_HAS_FULL_GETTEXT + bool + +config BR2_USE_MMU + bool "Enable MMU support" if BR2_ARCH_HAS_MMU_OPTIONAL + default y if BR2_ARCH_HAS_MMU_OPTIONAL || BR2_ARCH_HAS_MMU_MANDATORY + help + If your target has a MMU, you should say Y here. If you + are unsure, just say Y. + +config BR2_TARGET_OPTIMIZATION + string "Target Optimizations" + default "" + help + Optimizations to use when building for the target host. + NOTE: gcc optimization level is defined in build options. + +config BR2_TARGET_LDFLAGS + string "Target linker options" + help + Extra options to pass to the linker when building for the target. + + Note that options with a '$' sign (eg. -Wl,-rpath='$ORIGIN/../lib') + are not supported. + +config BR2_ECLIPSE_REGISTER + bool "Register toolchain within Eclipse Buildroot plug-in" + help + This options tells Buildroot to generate the necessary + configuration files to make your toolchain appear within + Eclipse, through the Eclipse Buildroot plugin. + +# Options for packages to depend on, if they require at least a +# specific version of the kernel headers. +# Toolchains should choose the adequate option (ie. the highest +# version, not all of them). +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + bool + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 + +config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 + bool + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 + +# This order guarantees that the highest version is set, as kconfig +# stops affecting a value on the first matching default. +config BR2_TOOLCHAIN_HEADERS_AT_LEAST + string + default "4.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 + default "4.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 + default "4.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 + default "4.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + default "4.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 + default "4.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + default "4.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 + default "4.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + default "4.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + default "4.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + default "4.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + default "4.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + default "4.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + default "4.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 + default "4.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 + default "4.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + default "3.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + default "3.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + default "3.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 + default "3.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + default "3.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + default "3.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + default "3.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + default "3.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 + default "3.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + default "3.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + default "3.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + default "3.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + default "3.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + default "3.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + default "2.6" + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 + bool + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_5 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_6 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_TOOLCHAIN_GCC_AT_LEAST_7 + bool + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + +# This order guarantees that the highest version is set, as kconfig +# stops affecting a value on the first matching default. +config BR2_TOOLCHAIN_GCC_AT_LEAST + string + default "7" if BR2_TOOLCHAIN_GCC_AT_LEAST_7 + default "6" if BR2_TOOLCHAIN_GCC_AT_LEAST_6 + default "5" if BR2_TOOLCHAIN_GCC_AT_LEAST_5 + default "4.9" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + default "4.8" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + default "4.7" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + default "4.6" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + default "4.5" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + default "4.4" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + default "4.3" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_HAS_MNAN_OPTION + bool + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_HAS_SYNC_1 + bool + default y + depends on !BR2_bfin + depends on !BR2_m68k_cf + depends on !BR2_microblaze + depends on !BR2_sparc + depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT) + +config BR2_TOOLCHAIN_HAS_SYNC_2 + bool + default y if BR2_TOOLCHAIN_HAS_SYNC_1 + +config BR2_TOOLCHAIN_HAS_SYNC_4 + bool + default y + depends on !BR2_m68k_cf + depends on !BR2_sparc + depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT) + +# The availability of __sync for 8-byte types on ARM is somewhat +# complicated: +# +# - It appeared in gcc starting with gcc 4.7. +# +# - On ARMv7, there is no problem, it can be directly implemented in +# userspace. +# +# - On < ARMv7, it requires help from the kernel. Unfortunately, the +# libgcc code implementing 8-byte __sync with the help from the +# kernel calls __write() when a failure occurs, which is a function +# internal to glibc, not available in uClibc and musl. This means +# that the 8-byte __sync operations are not available on < ARMv7 +# with uClibc and musl. This problem was fixed as part of gcc +# PR68059, which was backported to the gcc 5 branch, but isn't yet +# part of any gcc 5.x release. +# +config BR2_TOOLCHAIN_ARM_HAS_SYNC_8 + bool + default y + depends on BR2_arm || BR2_armeb + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A + +# 8-byte intrinsics available on most x86 CPUs, except a few old ones +config BR2_TOOLCHAIN_X86_HAS_SYNC_8 + bool + default y + depends on BR2_i386 + depends on !BR2_x86_i486 + depends on !BR2_x86_c3 + depends on !BR2_x86_winchip_c6 + depends on !BR2_x86_winchip2 + +# 8-byte intrinsics available: +# - On all 64 bits architecture +# - On a certain combinations of ARM platforms +# - On certain x86 32 bits CPUs +config BR2_TOOLCHAIN_HAS_SYNC_8 + bool + default y if BR2_ARCH_IS_64 + default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8 + default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8 + +# libatomic is available since gcc 4.8, when thread support is +# enabled. Also, libatomic doesn't recognize "uclinux" as a valid OS +# part of the tuple, and is therefore not build on uclinux targets, +# which is why BR2_BINFMT_FLAT configurations are excluded. +config BR2_TOOLCHAIN_HAS_LIBATOMIC + bool + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \ + BR2_TOOLCHAIN_HAS_THREADS && \ + !BR2_BINFMT_FLAT + +# __atomic intrinsics are available: +# - with gcc 4.8, either through built-ins or libatomic, on all +# architectures. Since we don't want to separate the cases where +# libatomic is needed vs. not needed, we simplify thing and only +# support situations where libatomic is available, even if on some +# architectures libatomic is not strictly needed as all __atomic +# intrinsics might be built-in. The only case where libatomic is +# missing entirely is when the toolchain does not have support for +# threads. However, a package that does not need threads but still +# uses atomics is quite a corner case, which does not warrant the +# added complexity. +# - with gcc 4.7, libatomic did not exist, so only built-ins are +# available. This means that __atomic can only be used in a subset +# of the architectures +config BR2_TOOLCHAIN_HAS_ATOMIC + bool + default y if BR2_TOOLCHAIN_HAS_LIBATOMIC + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa + default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64 + +# - libquadmath is not needed/available on all architectures (but gcc +# correctly handles this already). +# - At least, libquadmath is available on: +# - i*86 +# - x86_64 +# - When available, libquadmath requires wchar support. +config BR2_TOOLCHAIN_HAS_LIBQUADMATH + bool + default y if BR2_i386 || BR2_x86_64 diff --git a/buildroot/toolchain/toolchain-external/Config.in b/buildroot/toolchain/toolchain-external/Config.in new file mode 100644 index 0000000..c4063b1 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/Config.in @@ -0,0 +1,143 @@ +if BR2_TOOLCHAIN_EXTERNAL + +comment "Toolchain External Options" + +choice + prompt "Toolchain" + +comment "glibc toolchains only available with shared lib support" + depends on BR2_STATIC_LIBS + +# Kept toolchains sorted by architecture in order to use some toolchain +# as default choice + +# Aarch64 (use Linaro toolchain by default) +source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in" +source "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in" + +# ARC +source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in" + +# ARM (use Linaro toolchain by default) +source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in" +source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in" + +# ARM big-endian +source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in" + +# MIPS (use codesourcery toolchain by default) +source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in" +source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in" +source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in" + +# NIOSII +source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in" + +# x86_64 +source "toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in" + +# Kept last, so it remains the non-default choice, unless there isn't +# any available toolchain profile for the currently selected +# architecture. +source "toolchain/toolchain-external/toolchain-external-custom/Config.in" + +endchoice + +choice + prompt "Toolchain origin" + # Keep compatibility with old defconfig files that are using + # custom toolchains, and which are therefore assuming that + # "preinstalled" in the default choice. + default BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED if BR2_TOOLCHAIN_EXTERNAL_CUSTOM + +config BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD + bool "Toolchain to be downloaded and installed" + help + Select this option if you want Buildroot to download and install the + toolchain. If you have selected a custom toolchain, specify the URL + in BR2_TOOLCHAIN_EXTERNAL_URL. + +config BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED + bool "Pre-installed toolchain" + help + Select this option if you want to use a pre-installed toolchain. + Specify the path to this toolchain in BR2_TOOLCHAIN_EXTERNAL_PATH. + +endchoice + +config BR2_TOOLCHAIN_EXTERNAL_PATH + string "Toolchain path" + default "" + depends on BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED + help + Path to where the external toolchain is installed. The + compiler itself is expected to be in the "bin" subdirectory + of this path. + + If empty, the compiler will be searched in $PATH. + +config BR2_TOOLCHAIN_EXTERNAL_GLIBC + bool + select BR2_TOOLCHAIN_USES_GLIBC + +config BR2_TOOLCHAIN_EXTERNAL_UCLIBC + bool + select BR2_TOOLCHAIN_USES_UCLIBC + +config BR2_TOOLCHAIN_EXTERNAL_MUSL + bool + select BR2_TOOLCHAIN_USES_MUSL + # Compatibility headers: cdefs.h, queue.h + select BR2_PACKAGE_MUSL_COMPAT_HEADERS + +# Make sure the virtual-package infra checks the provider +config BR2_PACKAGE_HAS_TOOLCHAIN_EXTERNAL + bool + default y + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + string + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + string + +# Kept toolchains sorted as in the choice above +# The toolchain Config.in.options must define +# BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL and BR2_TOOLCHAIN_EXTERNAL_PREFIX + +# Aarch64 +source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options" + +# ARC +source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options" + +# ARM +source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options" + +# ARM big-endian +source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options" + +# MIPS +source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options" +source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options" + +# NIOSII +source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options" + +# x86_64 +source "toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options" + +# Custom toolchains +source "toolchain/toolchain-external/toolchain-external-custom/Config.in.options" + +config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY + bool "Copy gdb server to the Target" + depends on BR2_TOOLCHAIN_EXTERNAL + help + Copy the gdbserver provided by the external toolchain to the + target. + +endif # BR2_TOOLCHAIN_EXTERNAL diff --git a/buildroot/toolchain/toolchain-external/pkg-toolchain-external.mk b/buildroot/toolchain/toolchain-external/pkg-toolchain-external.mk new file mode 100644 index 0000000..3bf9fac --- /dev/null +++ b/buildroot/toolchain/toolchain-external/pkg-toolchain-external.mk @@ -0,0 +1,592 @@ +################################################################################ +# External toolchain package infrastructure +# +# This package infrastructure implements the support for external +# toolchains, i.e toolchains that are available pre-built, ready to +# use. Such toolchain may either be readily available on the Web +# (Linaro, Sourcery CodeBench, from processor vendors) or may be built +# with tools like Crosstool-NG or Buildroot itself. So far, we have +# tested this with: +# +# * Toolchains generated by Crosstool-NG +# * Toolchains generated by Buildroot +# * Toolchains provided by Linaro for the ARM and AArch64 +# architectures +# * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM, +# MIPS, PowerPC, x86_64 and NIOS 2 architectures. For the MIPS +# toolchain, the -muclibc variant isn't supported yet, only the +# default glibc-based variant is. +# * Synopsys DesignWare toolchains for ARC cores +# +# The basic principle is the following +# +# 1. If the toolchain is not pre-installed, download and extract it +# in $(TOOLCHAIN_EXTERNAL_INSTALL_DIR). Otherwise, +# $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) points to were the toolchain has +# already been installed by the user. +# +# 2. For all external toolchains, perform some checks on the +# conformity between the toolchain configuration described in the +# Buildroot menuconfig system, and the real configuration of the +# external toolchain. This is for example important to make sure that +# the Buildroot configuration system knows whether the toolchain +# supports RPC, IPv6, locales, large files, etc. Unfortunately, these +# things cannot be detected automatically, since the value of these +# options (such as BR2_TOOLCHAIN_HAS_NATIVE_RPC) are needed at +# configuration time because these options are used as dependencies +# for other options. And at configuration time, we are not able to +# retrieve the external toolchain configuration. +# +# 3. Copy the libraries needed at runtime to the target directory, +# $(TARGET_DIR). Obviously, things such as the C library, the dynamic +# loader and a few other utility libraries are needed if dynamic +# applications are to be executed on the target system. +# +# 4. Copy the libraries and headers to the staging directory. This +# will allow all further calls to gcc to be made using --sysroot +# $(STAGING_DIR), which greatly simplifies the compilation of the +# packages when using external toolchains. So in the end, only the +# cross-compiler binaries remains external, all libraries and headers +# are imported into the Buildroot tree. +# +# 5. Build a toolchain wrapper which executes the external toolchain +# with a number of arguments (sysroot/march/mtune/..) hardcoded, +# so we're sure the correct configuration is always used and the +# toolchain behaves similar to an internal toolchain. +# This toolchain wrapper and symlinks are installed into +# $(HOST_DIR)/bin like for the internal toolchains, and the rest +# of Buildroot is handled identical for the 2 toolchain types. +################################################################################ + +# +# Definitions of where the toolchain can be found +# + +TOOLCHAIN_EXTERNAL_PREFIX = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX)) +TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR = $(HOST_DIR)/opt/ext-toolchain + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y) +TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) +else +TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH)) +endif + +ifeq ($(TOOLCHAIN_EXTERNAL_INSTALL_DIR),) +ifneq ($(TOOLCHAIN_EXTERNAL_PREFIX),) +# if no path set, figure it out from path +TOOLCHAIN_EXTERNAL_BIN := $(dir $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc)) +endif +else +TOOLCHAIN_EXTERNAL_BIN = $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/bin +endif + +# If this is a buildroot toolchain, it already has a wrapper which we want to +# bypass. Since this is only evaluated after it has been extracted, we can use +# $(wildcard ...) here. +TOOLCHAIN_EXTERNAL_SUFFIX = \ + $(if $(wildcard $(TOOLCHAIN_EXTERNAL_BIN)/*.br_real),.br_real) + +TOOLCHAIN_EXTERNAL_CROSS = $(TOOLCHAIN_EXTERNAL_BIN)/$(TOOLCHAIN_EXTERNAL_PREFIX)- +TOOLCHAIN_EXTERNAL_CC = $(TOOLCHAIN_EXTERNAL_CROSS)gcc$(TOOLCHAIN_EXTERNAL_SUFFIX) +TOOLCHAIN_EXTERNAL_CXX = $(TOOLCHAIN_EXTERNAL_CROSS)g++$(TOOLCHAIN_EXTERNAL_SUFFIX) +TOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX) +TOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf + +# Normal handling of downloaded toolchain tarball extraction. +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y) +# As a regular package, the toolchain gets extracted in $(@D), but +# since it's actually a fairly special package, we need it to be moved +# into TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR. +define TOOLCHAIN_EXTERNAL_MOVE + rm -rf $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) + mkdir -p $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR) + mv $(@D)/* $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)/ +endef +endif + +# +# Definitions of the list of libraries that should be copied to the target. +# + +TOOLCHAIN_EXTERNAL_LIBS += ld*.so* libgcc_s.so.* libatomic.so.* + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y) +TOOLCHAIN_EXTERNAL_LIBS += libc.so.* libcrypt.so.* libdl.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.* +ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) +TOOLCHAIN_EXTERNAL_LIBS += libpthread.so.* +ifneq ($(BR2_PACKAGE_GDB)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),) +TOOLCHAIN_EXTERNAL_LIBS += libthread_db.so.* +endif # gdbserver +endif # ! no threads +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y) +TOOLCHAIN_EXTERNAL_LIBS += libnss_files.so.* libnss_dns.so.* libmvec.so.* libanl.so.* +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y) +TOOLCHAIN_EXTERNAL_LIBS += libc.so +endif + +ifeq ($(BR2_INSTALL_LIBSTDCPP),y) +TOOLCHAIN_EXTERNAL_LIBS += libstdc++.so.* +endif + +ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y) +TOOLCHAIN_EXTERNAL_LIBS += libgfortran.so.* +# fortran needs quadmath on x86 and x86_64 +ifeq ($(BR2_TOOLCHAIN_HAS_LIBQUADMATH),y) +TOOLCHAIN_EXTERNAL_LIBS += libquadmath.so* +endif +endif + +TOOLCHAIN_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS)) + + +# +# Definition of the CFLAGS to use with the external toolchain, as well as the +# common toolchain wrapper build arguments +# +ifeq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),) +CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU)) +else +CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU)-$(BR2_GCC_TARGET_CPU_REVISION)) +endif +CC_TARGET_ARCH_ := $(call qstrip,$(BR2_GCC_TARGET_ARCH)) +CC_TARGET_ABI_ := $(call qstrip,$(BR2_GCC_TARGET_ABI)) +CC_TARGET_NAN_ := $(call qstrip,$(BR2_GCC_TARGET_NAN)) +CC_TARGET_FP32_MODE_ := $(call qstrip,$(BR2_GCC_TARGET_FP32_MODE)) +CC_TARGET_FPU_ := $(call qstrip,$(BR2_GCC_TARGET_FPU)) +CC_TARGET_FLOAT_ABI_ := $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) +CC_TARGET_MODE_ := $(call qstrip,$(BR2_GCC_TARGET_MODE)) + +# march/mtune/floating point mode needs to be passed to the external toolchain +# to select the right multilib variant +ifeq ($(BR2_x86_64),y) +TOOLCHAIN_EXTERNAL_CFLAGS += -m64 +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_64 +endif +ifneq ($(CC_TARGET_ARCH_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -march=$(CC_TARGET_ARCH_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARCH='"$(CC_TARGET_ARCH_)"' +endif +ifneq ($(CC_TARGET_CPU_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mcpu=$(CC_TARGET_CPU_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_CPU='"$(CC_TARGET_CPU_)"' +endif +ifneq ($(CC_TARGET_ABI_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(CC_TARGET_ABI_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ABI='"$(CC_TARGET_ABI_)"' +endif +ifeq ($(BR2_TOOLCHAIN_HAS_MNAN_OPTION),y) +ifneq ($(CC_TARGET_NAN_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mnan=$(CC_TARGET_NAN_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_NAN='"$(CC_TARGET_NAN_)"' +endif +endif +ifneq ($(CC_TARGET_FP32_MODE_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mfp$(CC_TARGET_FP32_MODE_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FP32_MODE='"$(CC_TARGET_FP32_MODE_)"' +endif +ifneq ($(CC_TARGET_FPU_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mfpu=$(CC_TARGET_FPU_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FPU='"$(CC_TARGET_FPU_)"' +endif +ifneq ($(CC_TARGET_FLOAT_ABI_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -mfloat-abi=$(CC_TARGET_FLOAT_ABI_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FLOAT_ABI='"$(CC_TARGET_FLOAT_ABI_)"' +endif +ifneq ($(CC_TARGET_MODE_),) +TOOLCHAIN_EXTERNAL_CFLAGS += -m$(CC_TARGET_MODE_) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MODE='"$(CC_TARGET_MODE_)"' +endif +ifeq ($(BR2_BINFMT_FLAT),y) +TOOLCHAIN_EXTERNAL_CFLAGS += -Wl,-elf2flt +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_BINFMT_FLAT +endif +ifeq ($(BR2_mipsel)$(BR2_mips64el),y) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_LITTLE_ENDIAN +TOOLCHAIN_EXTERNAL_CFLAGS += -EL +endif +ifeq ($(BR2_mips)$(BR2_mips64),y) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_BIG_ENDIAN +TOOLCHAIN_EXTERNAL_CFLAGS += -EB +endif +ifeq ($(BR2_arceb),y) +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARC_TARGET_BIG_ENDIAN +TOOLCHAIN_EXTERNAL_CFLAGS += -EB +endif + +TOOLCHAIN_EXTERNAL_CFLAGS += $(call qstrip,$(BR2_TARGET_OPTIMIZATION)) + +ifeq ($(BR2_SOFT_FLOAT),y) +TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_SOFTFLOAT=1 +endif + +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ + -DBR_CROSS_PATH_SUFFIX='"$(TOOLCHAIN_EXTERNAL_SUFFIX)"' + +ifeq ($(filter $(HOST_DIR)/%,$(TOOLCHAIN_EXTERNAL_BIN)),) +# TOOLCHAIN_EXTERNAL_BIN points outside HOST_DIR => absolute path +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ + -DBR_CROSS_PATH_ABS='"$(TOOLCHAIN_EXTERNAL_BIN)"' +else +# TOOLCHAIN_EXTERNAL_BIN points inside HOST_DIR => relative path +TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \ + -DBR_CROSS_PATH_REL='"$(TOOLCHAIN_EXTERNAL_BIN:$(HOST_DIR)/%=%)"' +endif + + +# +# The following functions creates the symbolic links needed to get the +# cross-compilation tools visible in $(HOST_DIR)/bin. Some of +# links are done directly to the corresponding tool in the external +# toolchain installation directory, while some other links are done to +# the toolchain wrapper (preprocessor, C, C++ and Fortran compiler) +# +# We skip gdb symlink when we are building our own gdb to prevent two +# gdb's in $(HOST_DIR)/bin. +# +# The LTO support in gcc creates wrappers for ar, ranlib and nm which load +# the lto plugin. These wrappers are called *-gcc-ar, *-gcc-ranlib, and +# *-gcc-nm and should be used instead of the real programs when -flto is +# used. However, we should not add the toolchain wrapper for them, and they +# match the *cc-* pattern. Therefore, an additional case is added for *-ar, +# *-ranlib and *-nm. +define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER + $(Q)cd $(HOST_DIR)/bin; \ + for i in $(TOOLCHAIN_EXTERNAL_CROSS)*; do \ + base=$${i##*/}; \ + case "$$base" in \ + *-ar|*-ranlib|*-nm) \ + ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \ + ;; \ + *cc|*cc-*|*++|*++-*|*cpp|*-gfortran) \ + ln -sf toolchain-wrapper $$base; \ + ;; \ + *gdb|*gdbtui) \ + if test "$(BR2_PACKAGE_HOST_GDB)" != "y"; then \ + ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \ + fi \ + ;; \ + *) \ + ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%..%') .; \ + ;; \ + esac; \ + done +endef + + +# Various utility functions used by the external toolchain package +# infrastructure. Those functions are mainly responsible for: +# +# - installation the toolchain libraries to $(TARGET_DIR) +# - copying the toolchain sysroot to $(STAGING_DIR) +# - installing a gdbinit file +# +# Details about sysroot directory selection. +# +# To find the sysroot directory, we use the trick of looking for the +# 'libc.a' file with the -print-file-name gcc option, and then +# mangling the path to find the base directory of the sysroot. +# +# Note that we do not use the -print-sysroot option, because it is +# only available since gcc 4.4.x, and we only recently dropped support +# for 4.2.x and 4.3.x. +# +# When doing this, we don't pass any option to gcc that could select a +# multilib variant (such as -march) as we want the "main" sysroot, +# which contains all variants of the C library in the case of multilib +# toolchains. We use the TARGET_CC_NO_SYSROOT variable, which is the +# path of the cross-compiler, without the --sysroot=$(STAGING_DIR), +# since what we want to find is the location of the original toolchain +# sysroot. This "main" sysroot directory is stored in SYSROOT_DIR. +# +# Then, multilib toolchains are a little bit more complicated, since +# they in fact have multiple sysroots, one for each variant supported +# by the toolchain. So we need to find the particular sysroot we're +# interested in. +# +# To do so, we ask the compiler where its sysroot is by passing all +# flags (including -march and al.), except the --sysroot flag since we +# want to the compiler to tell us where its original sysroot +# is. ARCH_SUBDIR will contain the subdirectory, in the main +# SYSROOT_DIR, that corresponds to the selected architecture +# variant. ARCH_SYSROOT_DIR will contain the full path to this +# location. +# +# One might wonder why we don't just bother with ARCH_SYSROOT_DIR. The +# fact is that in multilib toolchains, the header files are often only +# present in the main sysroot, and only the libraries are available in +# each variant-specific sysroot directory. + + +# toolchain_find_sysroot returns the sysroot location for the given +# compiler + flags. We need to handle cases where libc.a is in: +# +# - lib/ +# - usr/lib/ +# - lib32/ +# - lib64/ +# - lib32-fp/ (Cavium toolchain) +# - lib64-fp/ (Cavium toolchain) +# - usr/lib// (Linaro toolchain) +# +# And variations on these. +define toolchain_find_sysroot +$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:(usr/)?lib(32|64)?([^/]*)?/([^/]*/)?libc\.a::') +endef + +# Returns the lib subdirectory for the given compiler + flags (i.e +# typically lib32 or lib64 for some toolchains) +define toolchain_find_libdir +$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:.*/(usr/)?(lib(32|64)?([^/]*)?(/[^/]*)?)/libc.a:\2:') +endef + +# Returns the location of the libc.a file for the given compiler + flags +define toolchain_find_libc_a +$$(readlink -f $$(LANG=C $(1) -print-file-name=libc.a)) +endef + +# Integration of the toolchain into Buildroot: find the main sysroot +# and the variant-specific sysroot, then copy the needed libraries to +# the $(TARGET_DIR) and copy the whole sysroot (libraries and headers) +# to $(STAGING_DIR). +# +# Variables are defined as follows: +# +# SYSROOT_DIR: the main sysroot directory, deduced from the location of +# the libc.a file in the default multilib variant, by +# removing the usr/lib[32|64]/libc.a part of the path. +# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/ +# +# ARCH_SYSROOT_DIR: the sysroot of the selected multilib variant, +# deduced from the location of the libc.a file in the +# selected multilib variant (taking into account the +# CFLAGS), by removing usr/lib[32|64]/libc.a at the end +# of the path. +# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/ +# +# ARCH_LIB_DIR: 'lib', 'lib32' or 'lib64' depending on where libraries +# are stored. Deduced from the location of the libc.a file +# in the selected multilib variant, by looking at +# usr/lib??/libc.a. +# Ex: lib +# +# ARCH_SUBDIR: the relative location of the sysroot of the selected +# multilib variant compared to the main sysroot. +# Ex: mips16/soft-float/el +# +# SUPPORT_LIB_DIR: some toolchains, such as recent Linaro toolchains, +# store GCC support libraries (libstdc++, +# libgcc_s, etc.) outside of the sysroot. In +# this case, SUPPORT_LIB_DIR is set to a +# non-empty value, and points to the directory +# where these support libraries are +# available. Those libraries will be copied to +# our sysroot, and the directory will also be +# considered when searching libraries for copy +# to the target filesystem. +# +# Please be very careful to check the major toolchain sources: +# Buildroot, Crosstool-NG, CodeSourcery and Linaro +# before doing any modification on the below logic. + +ifeq ($(BR2_STATIC_LIBS),) +define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS + $(Q)$(call MESSAGE,"Copying external toolchain libraries to target...") + $(Q)for libpattern in $(TOOLCHAIN_EXTERNAL_LIBS); do \ + $(call copy_toolchain_lib_root,$$libpattern); \ + done +endef +endif + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),y) +define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER + $(Q)$(call MESSAGE,"Copying gdbserver") + $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ + ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ + gdbserver_found=0 ; \ + for d in $${ARCH_SYSROOT_DIR}/usr \ + $${ARCH_SYSROOT_DIR}/../debug-root/usr \ + $${ARCH_SYSROOT_DIR}/usr/$${ARCH_LIB_DIR} \ + $(TOOLCHAIN_EXTERNAL_INSTALL_DIR); do \ + if test -f $${d}/bin/gdbserver ; then \ + install -m 0755 -D $${d}/bin/gdbserver $(TARGET_DIR)/usr/bin/gdbserver ; \ + gdbserver_found=1 ; \ + break ; \ + fi ; \ + done ; \ + if [ $${gdbserver_found} -eq 0 ] ; then \ + echo "Could not find gdbserver in external toolchain" ; \ + exit 1 ; \ + fi +endef +endif + +define TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS + $(Q)SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC))" ; \ + ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ + ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ + SUPPORT_LIB_DIR="" ; \ + if test `find $${ARCH_SYSROOT_DIR} -name 'libstdc++.a' | wc -l` -eq 0 ; then \ + LIBSTDCPP_A_LOCATION=$$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libstdc++.a) ; \ + if [ -e "$${LIBSTDCPP_A_LOCATION}" ]; then \ + SUPPORT_LIB_DIR=`readlink -f $${LIBSTDCPP_A_LOCATION} | sed -r -e 's:libstdc\+\+\.a::'` ; \ + fi ; \ + fi ; \ + if [ "$${SYSROOT_DIR}" == "$${ARCH_SYSROOT_DIR}" ] ; then \ + ARCH_SUBDIR="" ; \ + elif [ "`dirname $${ARCH_SYSROOT_DIR}`" = "`dirname $${SYSROOT_DIR}`" ] ; then \ + SYSROOT_DIR_DIRNAME=`dirname $${SYSROOT_DIR}`/ ; \ + ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR_DIRNAME}(.*)/$$:\1:"` ; \ + else \ + ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR}(.*)/$$:\1:"` ; \ + fi ; \ + $(call MESSAGE,"Copying external toolchain sysroot to staging...") ; \ + $(call copy_toolchain_sysroot,$${SYSROOT_DIR},$${ARCH_SYSROOT_DIR},$${ARCH_SUBDIR},$${ARCH_LIB_DIR},$${SUPPORT_LIB_DIR}) +endef + +# Create a symlink from (usr/)$(ARCH_LIB_DIR) to lib. +# Note: the skeleton package additionally creates lib32->lib or lib64->lib +# (as appropriate) +# +# $1: destination directory (TARGET_DIR / STAGING_DIR) +create_lib_symlinks = \ + $(Q)DESTDIR="$(strip $1)" ; \ + ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \ + if [ ! -e "$${DESTDIR}/$${ARCH_LIB_DIR}" -a ! -e "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ]; then \ + relpath="$(call relpath_prefix,$${ARCH_LIB_DIR})" ; \ + ln -snf $${relpath}lib "$${DESTDIR}/$${ARCH_LIB_DIR}" ; \ + ln -snf $${relpath}lib "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ; \ + fi + +define TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK + $(call create_lib_symlinks,$(STAGING_DIR)) +endef + +define TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK + $(call create_lib_symlinks,$(TARGET_DIR)) +endef + +# +# Generate gdbinit file for use with Buildroot +# +define TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT + $(Q)if test -f $(TARGET_CROSS)gdb ; then \ + $(call MESSAGE,"Installing gdbinit"); \ + $(gen_gdbinit_file); \ + fi +endef + +# uClibc-ng dynamic loader is called ld-uClibc.so.1, but gcc is not +# patched specifically for uClibc-ng, so it continues to generate +# binaries that expect the dynamic loader to be named ld-uClibc.so.0, +# like with the original uClibc. Therefore, we create an additional +# symbolic link to make uClibc-ng systems work properly. +define TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO + $(Q)if test -e $(TARGET_DIR)/lib/ld-uClibc.so.1; then \ + ln -sf ld-uClibc.so.1 $(TARGET_DIR)/lib/ld-uClibc.so.0 ; \ + fi + $(Q)if test -e $(TARGET_DIR)/lib/ld64-uClibc.so.1; then \ + ln -sf ld64-uClibc.so.1 $(TARGET_DIR)/lib/ld64-uClibc.so.0 ; \ + fi +endef + + +################################################################################ +# inner-toolchain-external-package -- defines the generic installation rules +# for external toolchain packages +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including a HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the type (target or host) +################################################################################ +define inner-toolchain-external-package + +$(2)_INSTALL_STAGING = YES +$(2)_ADD_TOOLCHAIN_DEPENDENCY = NO + +# In fact, we don't need to download the toolchain, since it is already +# available on the system, so force the site and source to be empty so +# that nothing will be downloaded/extracted. +ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED),y) +$(2)_SITE = +$(2)_SOURCE = +endif + +ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y) +$(2)_EXCLUDES = usr/lib/locale/* + +$(2)_POST_EXTRACT_HOOKS += \ + TOOLCHAIN_EXTERNAL_MOVE +endif + +# Checks for an already installed toolchain: check the toolchain +# location, check that it is usable, and then verify that it +# matches the configuration provided in Buildroot: ABI, C++ support, +# kernel headers version, type of C library and all C library features. +define $(2)_CONFIGURE_CMDS + $$(Q)$$(call check_cross_compiler_exists,$$(TOOLCHAIN_EXTERNAL_CC)) + $$(Q)$$(call check_unusable_toolchain,$$(TOOLCHAIN_EXTERNAL_CC)) + $$(Q)SYSROOT_DIR="$$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC))" ; \ + $$(call check_kernel_headers_version,\ + $$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC)),\ + $$(call qstrip,$$(BR2_TOOLCHAIN_HEADERS_AT_LEAST))); \ + $$(call check_gcc_version,$$(TOOLCHAIN_EXTERNAL_CC),\ + $$(call qstrip,$$(BR2_TOOLCHAIN_GCC_AT_LEAST))); \ + if test "$$(BR2_arm)" = "y" ; then \ + $$(call check_arm_abi,\ + "$$(TOOLCHAIN_EXTERNAL_CC) $$(TOOLCHAIN_EXTERNAL_CFLAGS)") ; \ + fi ; \ + if test "$$(BR2_INSTALL_LIBSTDCPP)" = "y" ; then \ + $$(call check_cplusplus,$$(TOOLCHAIN_EXTERNAL_CXX)) ; \ + fi ; \ + if test "$$(BR2_TOOLCHAIN_HAS_FORTRAN)" = "y" ; then \ + $$(call check_fortran,$$(TOOLCHAIN_EXTERNAL_FC)) ; \ + fi ; \ + if test "$$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \ + $$(call check_uclibc,$$$${SYSROOT_DIR}) ; \ + elif test "$$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \ + $$(call check_musl,\ + "$$(TOOLCHAIN_EXTERNAL_CC) $$(TOOLCHAIN_EXTERNAL_CFLAGS)",\ + $$(TOOLCHAIN_EXTERNAL_READELF)) ; \ + else \ + $$(call check_glibc,$$$${SYSROOT_DIR}) ; \ + fi + $$(Q)$$(call check_toolchain_ssp,$$(TOOLCHAIN_EXTERNAL_CC)) +endef + +$(2)_TOOLCHAIN_WRAPPER_ARGS += $$(TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS) + +$(2)_BUILD_CMDS = $$(TOOLCHAIN_WRAPPER_BUILD) + +define $(2)_INSTALL_STAGING_CMDS + $$(TOOLCHAIN_WRAPPER_INSTALL) + $$(TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK) + $$(TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS) + $$(TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER) + $$(TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT) +endef + +# Even though we're installing things in both the staging, the host +# and the target directory, we do everything within the +# install-staging step, arbitrarily. +define $(2)_INSTALL_TARGET_CMDS + $$(TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK) + $$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS) + $$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER) + $$(TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO) +endef + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call inner-generic-package,$(1),$(2),$(3),$(4)) + +endef + +toolchain-external-package = $(call inner-toolchain-external-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in new file mode 100644 index 0000000..8b2eab0 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in @@ -0,0 +1,62 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS + bool "Codescape IMG GNU Linux Toolchain 2016.05" + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_MIPS_CPU_MIPS32R6 || (BR2_MIPS_CPU_MIPS64R6 && !BR2_MIPS_SOFT_FLOAT) + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_TOOLCHAIN_HAS_FORTRAN + help + Codescape IMG GNU Linux Toolchain 2016.05 for the MIPS + architecture, from Imagination Technologies. It uses gcc + 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel + headers 4.7. It has support for the following variants: + - MIPS32r6 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Disable 'Use soft-float' + - MIPS32r6 - Big-Endian, Soft-Float, 2008 NaN, o32 ABI + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Enable 'Use soft-float' + - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Disable 'Use soft-float' + - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Enable 'Use soft-float' + - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Disable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r6' Target Architecture Variant + Enable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n32 ABI + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n32' Target ABI + Disable 'Use soft-float' + - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n32 ABI + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n32' Target ABI + Disable 'Use soft-float' + - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n64 ABI + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n64' Target ABI + Disable 'Use soft-float' + - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n64 ABI + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r6' Target Architecture Variant + Select 'n64' Target ABI + Disable 'Use soft-float' diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options new file mode 100644 index 0000000..3eaa2a9 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "mips-img-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codescape-img-mips" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash new file mode 100644 index 0000000..6a12cfa --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash @@ -0,0 +1,4 @@ +# Codescape toolchains from Imagination Technologies +# From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-06/downloads.html +sha256 8d9cdf711dd402d7bf82883d425c221038fe8ce9d0c91a3f6b30939d9d55476c Codescape.GNU.Tools.Package.2016.05-06.for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz +sha256 6e2784d6df962fe4db7510c8a62ce3947b73f54207b10e18b52da59d1bc487bd Codescape.GNU.Tools.Package.2016.05-06.for.MIPS.IMG.Linux.CentOS-5.x86_64.tar.gz diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk new file mode 100644 index 0000000..49a7027 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# toolchain-external-codescape-img-mips +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION = 2016.05-06 +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION) +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STRIP_COMPONENTS = 2 + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION).for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz +else +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION).for.MIPS.IMG.Linux.CentOS-5.x86_64.tar.gz +endif + +# Special fixup for Codescape MIPS toolchains, that have bin- and +# sbin- directories. We create symlinks bin -> bin- and sbin +# -> sbin- so that the rest of Buildroot can find the toolchain +# tools in the appropriate location. +ifeq ($(BR2_MIPS_OABI32),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = o32 +else ifeq ($(BR2_MIPS_NABI32),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = n32 +else ifeq ($(BR2_MIPS_NABI64),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = n64 +endif + +define TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STAGING_FIXUPS + rmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin + ln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin + ln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin +endef + +# The Codescape toolchain uses a sysroot layout that places them +# side-by-side instead of nested like multilibs. A symlink is needed +# much like for the nested sysroots which are handled in +# copy_toolchain_sysroot but there is not enough information in there +# to determine whether the sysroot layout was nested or side-by-side. +# Add the symlink here for now. +define TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SYMLINK + $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))"; \ + ARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \ + ln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR} +endef + +TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_POST_INSTALL_STAGING_HOOKS += \ + TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STAGING_FIXUPS \ + TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SYMLINK + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in new file mode 100644 index 0000000..db191fd --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in @@ -0,0 +1,73 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS + bool "Codescape MTI GNU Linux Toolchain 2016.05" + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_MIPS_CPU_MIPS32R2 || (BR2_MIPS_CPU_MIPS64R2 && !BR2_MIPS_SOFT_FLOAT) || \ + BR2_MIPS_CPU_MIPS32R5 || (BR2_MIPS_CPU_MIPS64R5 && !BR2_MIPS_SOFT_FLOAT) + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + select BR2_TOOLCHAIN_HAS_FORTRAN + help + Codescape MTI GNU Linux Toolchain 2016.05 for the MIPS + architecture, from Imagination Technologies. It uses gcc + 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel + headers 4.7. It has support for the following variants: + - MIPS32r2 - Big-Endian, Hard-Float, Legacy NaN, o32 ABI + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Disable 'Use soft-float' + - MIPS32r2 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Disable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mnan=2008' + - MIPS32r2 - Big-Endian, Soft-Float, Legacy NaN, o32 ABI + Select 'MIPS (big endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Enable 'Use soft-float' + - MIPS32r2 - Little-Endian, Hard-Float, Legacy NaN, o32 ABI + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Disable 'Use soft-float' + - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Disable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mnan=2008' + - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Enable 'Use soft-float' + - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Enable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI, microMIPS + Select 'MIPS (little endian)' Target Architecture + Select 'mips 32r2' Target Architecture Variant + Disable 'Use soft-float' + Set BR2_TARGET_OPTIMIZATION to '-mmicromips' + - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n32 ABI + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n32' Target ABI + Disable 'Use soft-float' + - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n32 ABI + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n32' Target ABI + Disable 'Use soft-float' + - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n64 ABI + Select 'MIPS64 (big endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n64' Target ABI + Disable 'Use soft-float' + - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n64 ABI + Select 'MIPS64 (little endian)' Target Architecture + Select 'mips 64r2' Target Architecture Variant + Select 'n64' Target ABI + Disable 'Use soft-float' diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options new file mode 100644 index 0000000..464c9b8 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "mips-mti-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codescape-mti-mips" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash new file mode 100644 index 0000000..d31f998 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash @@ -0,0 +1,4 @@ +# Codescape toolchains from Imagination Technologies +# From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-06/downloads.html +sha256 3a7aba259beb05f0e3054b5a61a368a5085447f47361949a938ac9cc7de4227b Codescape.GNU.Tools.Package.2016.05-06.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz +sha256 a676a8b3647c8c651fb8935a75db8f00b79d36ec55676f7c05bac12b550788f7 Codescape.GNU.Tools.Package.2016.05-06.for.MIPS.MTI.Linux.CentOS-5.x86_64.tar.gz diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk new file mode 100644 index 0000000..d63a367 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk @@ -0,0 +1,51 @@ +################################################################################ +# +# toolchain-external-codescape-mti-mips +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION = 2016.05-06 +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION) +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STRIP_COMPONENTS = 2 + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION).for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz +else +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION).for.MIPS.MTI.Linux.CentOS-5.x86_64.tar.gz +endif + +# Special fixup for Codescape MIPS toolchains, that have bin- and +# sbin- directories. We create symlinks bin -> bin- and sbin +# -> sbin- so that the rest of Buildroot can find the toolchain +# tools in the appropriate location. +ifeq ($(BR2_MIPS_OABI32),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = o32 +else ifeq ($(BR2_MIPS_NABI32),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = n32 +else ifeq ($(BR2_MIPS_NABI64),y) +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = n64 +endif + +define TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STAGING_FIXUPS + rmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin + ln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin + ln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin +endef + +# The Codescape toolchain uses a sysroot layout that places them +# side-by-side instead of nested like multilibs. A symlink is needed +# much like for the nested sysroots which are handled in +# copy_toolchain_sysroot but there is not enough information in there +# to determine whether the sysroot layout was nested or side-by-side. +# Add the symlink here for now. +define TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SYMLINK + $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))"; \ + ARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \ + ln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR} +endef + +TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_POST_INSTALL_STAGING_HOOKS += \ + TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STAGING_FIXUPS \ + TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SYMLINK + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in new file mode 100644 index 0000000..24cbcff --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in @@ -0,0 +1,20 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 + bool "CodeSourcery AArch64 2014.11" + depends on BR2_aarch64 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + # a57/a53 and a72/a53 appeared in gcc-6 or were broken before + depends on !BR2_cortex_a57_a53 && !BR2_cortex_a72_a53 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + help + Sourcery CodeBench toolchain for the AArch64 architecture, + from Mentor Graphics. It uses gcc 4.9.1, binutils + 2.24.51.20140217, glibc 2.20, gdb 7.7.50 and kernel headers + 3.16.2. diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options new file mode 100644 index 0000000..1eab839 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "aarch64-amd-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-aarch64" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash new file mode 100644 index 0000000..f7d3f29 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 405aada821146755c5f2df566375c2a682456d6b8451ee47b88cf1a52b093676 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2 +sha256 3f50dd6ee433eb5b6992a1071b988e50379a738f54f58722bc60081613764716 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu.src.tar.bz2 diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk new file mode 100644 index 0000000..192763a --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# toolchain-external-codesourcery-aarch64 +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION = 2014.11-95 +TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_SOURCE = aarch64-amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_ACTUAL_SOURCE_TARBALL = aarch64-amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in new file mode 100644 index 0000000..50c5a20 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in @@ -0,0 +1,26 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64 + bool "Sourcery CodeBench AMD64 2016.11" + depends on BR2_x86_64 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_STATIC_LIBS + depends on BR2_x86_jaguar || BR2_x86_steamroller + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + select BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19615 # based-on binutils-2.26 + help + Sourcery CodeBench toolchain for the amd64 (x86_64) + architectures, from Mentor Graphics. It uses gcc 6.2, + binutils 2.26, glibc 2.24, gdb 7.11 and kernel headers + 4.7. It has support for the following variants: + - AMD Puma/Jaguar (family 16h), glibc + Default for x86_64, nothing special to do. + - AMD Steamroller (family 15h), glibc + Select a steamroller core. + No other architecture variants are supported since glibc + is optimized for one of these two baselines. diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options new file mode 100644 index 0000000..2ab2302 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64 + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "x86_64-amd-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-amd64" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash new file mode 100644 index 0000000..291e6a5 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a6c23837dd45a33866c60a2fd8d7af40520cd84ff1059abda797952d7ee0fafd amd-2016.11-19-x86_64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2 +sha256 d61ce0b5648ad63cca16fe233c82e7eaa6a3212a549d69a527e7a2d5350f7b4a amd-2016.11-19-x86_64-amd-linux-gnu.src.tar.bz2 diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk new file mode 100644 index 0000000..1697e5e --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk @@ -0,0 +1,12 @@ +################################################################################ +# +# toolchain-external-codesourcery-amd64 +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_VERSION = 2016.11-19 +TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_SOURCE = amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_ACTUAL_SOURCE_TARBALL = amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in new file mode 100644 index 0000000..bdbe2ac --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in @@ -0,0 +1,37 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM + bool "Sourcery CodeBench ARM 2014.05" + depends on BR2_arm + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_ARM_EABI + # Unsupported ARM cores + depends on !BR2_cortex_a12 && !BR2_cortex_a17 && !BR2_ARM_CPU_ARMV8A + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + help + Sourcery CodeBench toolchain for the ARM architecture, from + Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51, glibc + 2.18 and gdb 7.7.50, kernel headers 3.13. It has support + for the following variants: + - ARMv5TE, little endian, soft-float, glibc + Select ARM926T, ARM10T, XScale or another ARMv5 core + Select BR2_SOFT_FLOAT + - ARMv4T, little endian, soft-float, glibc + Select ARM720T, ARM920T, ARM922T or another ARMv4 core + Select BR2_SOFT_FLOAT + - ARMv7-A, Thumb 2, little endian, soft-float, glibc + Select Cortex-A8, Cortex-A9 or another ARMv7-A core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mthumb + +comment "Sourcery CodeBench toolchains available for the EABI ABI" + depends on BR2_arm + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + depends on !BR2_ARM_EABI + depends on !BR2_STATIC_LIBS diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options new file mode 100644 index 0000000..7f3654d --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "arm-none-linux-gnueabi" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-arm" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash new file mode 100644 index 0000000..535f4aa --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 39ee0e789034334ecc89af94e838e3a4815400ac5ff980f808f466b04778532e arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 +sha256 e16a5b1e41d7ff1e74161f9405182001bc8d1360d89564e73911032e6966cc0d arm-2014.05-29-arm-none-linux-gnueabi.src.tar.bz2 diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk new file mode 100644 index 0000000..f15a50c --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# toolchain-external-codesourcery-arm +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION = 2014.05-29 + +TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_SOURCE = arm-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_ACTUAL_SOURCE_TARBALL = arm-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in new file mode 100644 index 0000000..734f0e4 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in @@ -0,0 +1,95 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + bool "Sourcery CodeBench MIPS 2016.05" + depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el + depends on BR2_MIPS_CPU_MIPS32R2 || BR2_MIPS_CPU_MIPS64R2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + # Unsupported MIPS cores + depends on !BR2_mips_interaptiv + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_MIPS_NABI32 + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + select BR2_TOOLCHAIN_GCC_AT_LEAST_5 + help + Sourcery CodeBench toolchain for the MIPS architecture, from + Mentor Graphics. It uses gcc 5.3, binutils 2.25.51, glibc + 2.23, uClibc 0.9.30 and gdb 7.10.50, kernel headers 4.4.1. It + has support for the following variants: + - MIPS32r2 - Big-Endian, 2008 NaN, O32 + Select MIPS (big endian) core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mnan=2008 + - MIPS32r2 - Big-Endian, O32 + Select MIPS (big endian) core + Disable BR2_SOFT_FLOAT + - MIPS32r2 - Big-Endian, O32, MIPS16 + Select MIPS (big endian) core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 + - MIPS32r2 - Big-Endian, Soft-Float, O32 + Select MIPS (big endian) core + Select BR2_SOFT_FLOAT + - MIPS32r2 - Big-Endian, Soft-Float, O32, MIPS16 + Select MIPS (big endian) core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 + - MIPS32r2 - Little-Endian, 2008 NaN, O32 + Select MIPS (little endian) core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mnan=2008 + - MIPS32r2 - Little-Endian, O32 + Select MIPS (little endian) core + Disable BR2_SOFT_FLOAT + - MIPS32r2 - Little-Endian, O32, MIPS16 + Select MIPS (little endian) core + Disable BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 + - MIPS32r2 - Little-Endian, Soft-Float, O32 + Select MIPS (little endian) core + Select BR2_SOFT_FLOAT + - MIPS32r2 - Little-Endian, Soft-Float, O32, MIPS16 + Select MIPS (little endian) core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mips16 + - MIPS32r2 - Little-Endian, Soft-Float, O32, microMIPS + Select MIPS (little endian) core + Select BR2_SOFT_FLOAT + Set BR2_TARGET_OPTIMIZATION to -mmicromips + - MIPS32r2 - uClibc, Big-Endian, 2008 NaN, O32 + Not usable in Buildroot yet. + - MIPS32r2 - uClibc, Big-Endian, O32 + Not usable in Buildroot yet. + - MIPS32r2 - uClibc, Big-Endian, Soft-Float, O32 + Not usable in Buildroot yet. + - MIPS32r2 - uClibc, Little-Endian, 2008 NaN, O32 + Not usable in Buildroot yet. + - MIPS32r2 - uClibc, Little-Endian, O32 + Not usable in Buildroot yet. + - MIPS32r2 - uClibc, Little-Endian, Soft-Float, O32 + Not usable in Buildroot yet. + - MIPS64r2 - Big-Endian, N64 + Select MIPS64 (big endian) core + Select the n64 ABI + Disable BR2_SOFT_FLOAT + - MIPS64r2 - Big-Endian, Soft-Float, N64 + Select MIPS64 (big endian) core + Select the n64 ABI + Select BR2_SOFT_FLOAT + - MIPS64r2 - Little-Endian, N64 + Select MIPS64 (little endian) core + Select the n64 ABI + Disable BR2_SOFT_FLOAT + - MIPS64r2 - Little-Endian, Soft-Float, N64 + Select MIPS64 (little endian) core + Select the n64 ABI + Select BR2_SOFT_FLOAT + +comment "Sourcery CodeBench toolchains are only available for MIPS/MIPS64 o32 and n64" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + depends on BR2_MIPS_NABI32 + depends on !BR2_STATIC_LIBS diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options new file mode 100644 index 0000000..677cc67 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "mips-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-mips" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash new file mode 100644 index 0000000..2d80338 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 d354447c4c5160439dafd5464fa3a0266dd41e79f973477238e4f0215a6b5397 mips-2016.05-8-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2 +sha256 2658e55d5b71bba25d6f77e868e18b200ea5f75c8add7ed3a9266e716d9adfff mips-2016.05-8-mips-linux-gnu.src.tar.bz2 diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk new file mode 100644 index 0000000..94fbbff --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# toolchain-external-codesourcery-mips +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION = 2016.05-8 + +TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_SOURCE = mips-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_ACTUAL_SOURCE_TARBALL = mips-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in new file mode 100644 index 0000000..4ac9c95 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in @@ -0,0 +1,16 @@ +config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII + bool "Sourcery CodeBench Nios-II 2017.05" + depends on BR2_nios2 + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_HOSTARCH_NEEDS_IA32_LIBS + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + help + Sourcery CodeBench toolchain for the Nios-II architecture, + from Mentor Graphics. It uses gcc 6.3, binutils 2.26, + glibc 2.25, gdb 7.11 and kernel headers 4.7. diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options new file mode 100644 index 0000000..07cc5ed --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "nios2-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-codesourcery-niosII" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash new file mode 100644 index 0000000..3643f92 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash @@ -0,0 +1,6 @@ +# From https://sourcery.mentor.com/GNUToolchain/release3302 +md5 54b7f7056c2159f3a9ddeca8ca775ed1 sourceryg++-2017.05-4-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 +md5 529a7fecf33d0d113a446413b9d1e173 sourceryg++-2017.05-4-nios2-linux-gnu.src.tar.bz2 +# Locally calculated +sha256 3f0307da3c0770b7cc3ed4a845038e6e438d3e3a96ce880f9a86b3d35f948a07 sourceryg++-2017.05-4-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2 +sha256 6e65878d0453708ee19098d3d68985bda244938d35999f3859915a2f5574fa08 sourceryg++-2017.05-4-nios2-linux-gnu.src.tar.bz2 diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk new file mode 100644 index 0000000..dfa4ea4 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# toolchain-external-codesourcery-niosII +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2017.05-4 + +TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX) +TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2 +TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2 + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in new file mode 100644 index 0000000..a913feb --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in @@ -0,0 +1,5 @@ +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM + bool "Custom toolchain" + help + Use this option to use a custom toolchain pre-installed on + your system. diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in.options new file mode 100644 index 0000000..70c7d8e --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-custom/Config.in.options @@ -0,0 +1,392 @@ +if BR2_TOOLCHAIN_EXTERNAL_CUSTOM + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-custom" + +config BR2_TOOLCHAIN_EXTERNAL_URL + string "Toolchain URL" + depends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD + help + URL of the custom toolchain tarball to download and install. + +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX + string "Toolchain prefix" + default "$(ARCH)-linux" + +choice + bool "External toolchain gcc version" + default BR2_TOOLCHAIN_EXTERNAL_GCC_7 if BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + default BR2_TOOLCHAIN_EXTERNAL_GCC_6 if BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + default BR2_TOOLCHAIN_EXTERNAL_GCC_5 if BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + default BR2_TOOLCHAIN_EXTERNAL_GCC_4_9 if BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + default BR2_TOOLCHAIN_EXTERNAL_GCC_4_8 if BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + default BR2_TOOLCHAIN_EXTERNAL_GCC_4_3 + help + Set to the gcc version that is used by your external + toolchain. + +config BR2_TOOLCHAIN_EXTERNAL_GCC_7 + bool "7.x" + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_6 + bool "6.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + select BR2_TOOLCHAIN_GCC_AT_LEAST_6 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_5 + bool "5.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_6 + select BR2_TOOLCHAIN_GCC_AT_LEAST_5 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9 + bool "4.9.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_5 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8 + bool "4.8.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7 + bool "4.7.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6 + bool "4.6.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5 + bool "4.5.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4 + bool "4.4.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3 + bool "4.3.x" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_EXTERNAL_GCC_OLD + bool "older" + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8 + help + Use this option if your GCC version is older than any of the + above. + + Note that the Buildroot community doesn't do any testing with + such old toolchains. Some packages may fail to build in + surprising ways, or the generated root filesystem may not + work at all. Use such old toolchains at your own risk. + +endchoice + +choice + bool "External toolchain kernel headers series" + default BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD + help + Set to the kernel headers version that were used to build + this external toolchain. + + This is used to hide/show some packages that have strict + requirements on the version of kernel headers. + + If unsure what version your toolchain is using, you can look + at the value of LINUX_VERSION_CODE in linux/version.h in your + toolchain. The Linux version is M.m.p, with: + M = ( LINUX_VERSION_CODE >> 16 ) & 0xFF + m = ( LINUX_VERSION_CODE >> 8 ) & 0xFF + p = ( LINUX_VERSION_CODE >> 0 ) & 0xFF + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_15 + bool "4.15.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14 + bool "4.14.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13 + bool "4.13.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12 + bool "4.12.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_11 + bool "4.11.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10 + bool "4.10.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9 + bool "4.9.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8 + bool "4.8.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7 + bool "4.7.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6 + bool "4.6.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5 + bool "4.5.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4 + bool "4.4.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3 + bool "4.3.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2 + bool "4.2.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1 + bool "4.1.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0 + bool "4.0.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19 + bool "3.19.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18 + bool "3.18.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17 + bool "3.17.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16 + bool "3.16.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15 + bool "3.15.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14 + bool "3.14.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13 + bool "3.13.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12 + bool "3.12.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11 + bool "3.11.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10 + bool "3.10.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9 + bool "3.9.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8 + bool "3.8.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7 + bool "3.7.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6 + bool "3.6.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5 + bool "3.5.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4 + bool "3.4.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3 + bool "3.3.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2 + bool "3.2.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1 + bool "3.1.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0 + bool "3.0.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 + +config BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD + bool "2.6.x" + +endchoice + +choice + prompt "External toolchain C library" + default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC + +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC + bool "uClibc/uClibc-ng" + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + # For the time being, we assume that all custom external + # toolchains have shadow password support. + select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS + help + Select this option if your external toolchain uses the + uClibc (available from http://www.uclibc.org/) + or uClibc-ng (available from http://www.uclibc-ng.org) + C library. + +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC + bool "glibc/eglibc" + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Select this option if your external toolchain uses the GNU C + library (available from https://www.gnu.org/software/libc/) + or its variant the eglibc library (http://www.eglibc.org/). + + Note: eglibc is a variant of glibc that (among other things) + can be configured to exclude some of its features. Using a + toolchain with eglibc configured to exclude key features may + cause build failures to some packages. + +comment "(e)glibc only available with shared lib support" + depends on BR2_STATIC_LIBS + +config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL + bool "musl (experimental)" + select BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Select this option if your external toolchain uses the + 'musl' C library, available from http://www.musl-libc.org/. + +endchoice + +if BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC + +config BR2_TOOLCHAIN_EXTERNAL_WCHAR + bool "Toolchain has WCHAR support?" + select BR2_USE_WCHAR + help + Select this option if your external toolchain supports + WCHAR. If you don't know, leave the default value, Buildroot + will tell you if it's correct or not. + +config BR2_TOOLCHAIN_EXTERNAL_LOCALE + bool "Toolchain has locale support?" + select BR2_TOOLCHAIN_EXTERNAL_WCHAR + select BR2_ENABLE_LOCALE + help + Select this option if your external toolchain has locale + support. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + +config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS + bool "Toolchain has threads support?" + select BR2_TOOLCHAIN_HAS_THREADS + default y + help + Select this option if your external toolchain has thread + support. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + +if BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS + +config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG + bool "Toolchain has threads debugging support?" + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + default y + help + Select this option if your external toolchain has thread + debugging support. If you don't know, leave the default + value, Buildroot will tell you if it's correct or not. + +config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL + bool "Toolchain has NPTL threads support?" + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + default y + help + Select this option if your external toolchain uses the NPTL + (Native Posix Thread Library) implementation of Posix + threads. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + +endif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS + +endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC + +config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP + bool "Toolchain has SSP support?" + select BR2_TOOLCHAIN_HAS_SSP + default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC + default y if BR2_TOOLCHAIN_EXTERNAL_MUSL + help + Selection this option if your external toolchain has Stack + Smashing Protection support enabled. If you don't know, + leave the default value, Buildroot will tell you if it's + correct or not. + +config BR2_TOOLCHAIN_EXTERNAL_INET_RPC + bool "Toolchain has RPC support?" + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL + default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC + help + Select this option if your external toolchain supports + RPC. If you don't know, leave the default value, Buildroot + will tell you if it's correct or not. + +config BR2_TOOLCHAIN_EXTERNAL_CXX + bool "Toolchain has C++ support?" + select BR2_INSTALL_LIBSTDCPP + help + Select this option if your external toolchain has C++ + support. If you don't know, leave the default value, + Buildroot will tell you if it's correct or not. + +config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS + string "Extra toolchain libraries to be copied to target" + help + If your external toolchain provides extra libraries that + need to be copied to the target filesystem, enter them + here, separated by spaces. They will be copied to the + target's /lib directory. + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk b/buildroot/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk new file mode 100644 index 0000000..c4ae612 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# toolchain-external-custom +# +################################################################################ + +TOOLCHAIN_EXTERNAL_CUSTOM_SITE = $(patsubst %/,%,$(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))) +TOOLCHAIN_EXTERNAL_CUSTOM_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL))) + +ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CUSTOM),y) +# We can't check hashes for custom downloaded toolchains +BR_NO_CHECK_HASH_FOR += $(TOOLCHAIN_EXTERNAL_SOURCE) +endif + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in new file mode 100644 index 0000000..9134c27 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in @@ -0,0 +1,15 @@ +config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 + bool "Linaro AArch64 2017.11" + depends on BR2_aarch64 + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + select BR2_TOOLCHAIN_HAS_FORTRAN + help + Toolchain for the AArch64 architecture, from + http://www.linaro.org/engineering/armv8/ diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options new file mode 100644 index 0000000..099c6c0 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64 + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "aarch64-linux-gnu" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-linaro-aarch64" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash new file mode 100644 index 0000000..fb24f1b --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 3130033eaf18d7f7d775aa8ade1c7044683b0db6f332cae29cab7d1caaee97ed gcc-linaro-7.2.1-2017.11-i686_aarch64-linux-gnu.tar.xz +sha256 20181f828e1075f1a493947ff91e82dd578ce9f8638fbdfc39e24b62857d8f8d gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk new file mode 100644 index 0000000..93e0066 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# toolchain-external-linaro-aarch64 +# +################################################################################ + +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION = 2017.11 +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SITE = https://releases.linaro.org/components/toolchain/binaries/7.2-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)/aarch64-linux-gnu + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-7.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-i686_aarch64-linux-gnu.tar.xz +else +TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-7.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-x86_64_aarch64-linux-gnu.tar.xz +endif + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in new file mode 100644 index 0000000..d383273 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in @@ -0,0 +1,27 @@ +comment "Linaro toolchains available for Cortex-A + EABIhf" + depends on BR2_arm + depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF + depends on !BR2_STATIC_LIBS + +config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM + bool "Linaro ARM 2017.11" + depends on BR2_arm + depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_ARM_EABIHF + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + select BR2_TOOLCHAIN_HAS_FORTRAN + help + Linaro toolchain for the ARM architecture. It uses Linaro + GCC 2017.11 (based on gcc 7.2.1), Linaro GDB 2017.11 (based on + GDB 8.0), glibc 2.25, Binutils 2017.11 (based on 2.28). It + generates code that runs on all Cortex-A profile devices, + but tuned for the Cortex-A9. The code generated is Thumb 2, + with the hard floating point calling convention, and uses + the VFPv3-D16 FPU instructions. diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options new file mode 100644 index 0000000..dcbc659 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "arm-linux-gnueabihf" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-linaro-arm" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash new file mode 100644 index 0000000..352cbb2 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 72919a3a99d4e28309bc8b0e615f44c65824ef012de50db3ffe9a34776e6f510 gcc-linaro-7.2.1-2017.11-i686_arm-linux-gnueabihf.tar.xz +sha256 cee0087b1f1205b73996651b99acd3a926d136e71047048f1758ffcec69b1ca2 gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf.tar.xz diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk new file mode 100644 index 0000000..5437fe2 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# toolchain-external-linaro-arm +# +################################################################################ + +TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION = 2017.11 +TOOLCHAIN_EXTERNAL_LINARO_ARM_SITE = https://releases.linaro.org/components/toolchain/binaries/7.2-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)/arm-linux-gnueabihf + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-7.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-i686_arm-linux-gnueabihf.tar.xz +else +TOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-7.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-x86_64_arm-linux-gnueabihf.tar.xz +endif + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in new file mode 100644 index 0000000..a3dd3c9 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in @@ -0,0 +1,26 @@ +comment "Linaro toolchains available for Cortex-A + EABIhf" + depends on BR2_armeb + depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF + depends on !BR2_STATIC_LIBS + +config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB + bool "Linaro armeb 2017.11" + depends on BR2_armeb + depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A + depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" + depends on BR2_ARM_EABIHF + depends on !BR2_STATIC_LIBS + select BR2_TOOLCHAIN_EXTERNAL_GLIBC + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HAS_NATIVE_RPC + select BR2_INSTALL_LIBSTDCPP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + help + Linaro toolchain for the ARM big endian architecture. It + uses Linaro GCC 2017.11 (based on gcc 7.2.1), Linaro GDB + 2017.11 (based on GDB 8.0), glibc 2.25, Binutils 2017.11 + (based on 2.28). It generates code that runs on all Cortex-A + profile devices, but tuned for the Cortex-A9. The code + generated is Thumb 2, with the hard floating point calling + convention, and uses the VFPv3-D16 FPU instructions. diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options new file mode 100644 index 0000000..225e90f --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options @@ -0,0 +1,9 @@ +if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "armeb-linux-gnueabihf" + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-linaro-armeb" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash new file mode 100644 index 0000000..c61611c --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 1337734b61fa246ab20a371d2802d09ad80d7b17eb62327b3b69b9edfb6bc4a1 gcc-linaro-7.2.1-2017.11-i686_armeb-linux-gnueabihf.tar.xz +sha256 c313149b6ea14e31f643aeee39e1460ae4245b75c75befd042ff4b63a07971c0 gcc-linaro-7.2.1-2017.11-x86_64_armeb-linux-gnueabihf.tar.xz diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk new file mode 100644 index 0000000..1daa1c9 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# toolchain-external-linaro-armeb +# +################################################################################ + +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION = 2017.11 + +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SITE = https://releases.linaro.org/components/toolchain/binaries/7.2-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)/armeb-linux-gnueabihf + +ifeq ($(HOSTARCH),x86) +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-7.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-i686_armeb-linux-gnueabihf.tar.xz +else +TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-7.2.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-x86_64_armeb-linux-gnueabihf.tar.xz +endif + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in b/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in new file mode 100644 index 0000000..fefbb47 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in @@ -0,0 +1,18 @@ +config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC + bool "Synopsys ARC 2017.09 toolchain" + depends on BR2_arc + depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_7 + depends on BR2_HOSTARCH = "x86_64" + select BR2_TOOLCHAIN_EXTERNAL_UCLIBC + select BR2_INSTALL_LIBSTDCPP + select BR2_ENABLE_LOCALE + select BR2_USE_WCHAR + select BR2_TOOLCHAIN_HAS_THREADS + select BR2_TOOLCHAIN_HAS_THREADS_NPTL + select BR2_TOOLCHAIN_HAS_THREADS_DEBUG + select BR2_TOOLCHAIN_HAS_SSP + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 + select BR2_TOOLCHAIN_GCC_AT_LEAST_7 + help + Toolchain for the ARC cores, from + https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options b/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options new file mode 100644 index 0000000..ceb7dd0 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options @@ -0,0 +1,10 @@ +if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC + +config BR2_TOOLCHAIN_EXTERNAL_PREFIX + default "arc-linux" if BR2_arcle + default "arceb-linux" if BR2_arceb + +config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL + default "toolchain-external-synopsys-arc" + +endif diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash b/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash new file mode 100644 index 0000000..3479e18 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash @@ -0,0 +1,5 @@ +# From https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2017.09-release +sha256 ef74a7567a7341bc5e5d7bf6bcff64c2515be175d08a7def52df847583080ac2 arc_gnu_2017.09_prebuilt_uclibc_le_arc700_linux_install.tar.gz +sha256 8a7620dd7500641de40adb2ae490d90d53fcad01d13f77ba305fc00df32a26e3 arc_gnu_2017.09_prebuilt_uclibc_be_arc700_linux_install.tar.gz +sha256 ef7afba0da38cc08d863850f4987ebd16c71c8920c51990f490ad79389f102c1 arc_gnu_2017.09_prebuilt_uclibc_le_archs_linux_install.tar.gz +sha256 eab1d4872298008bd141104368ec0b7873af600a09704827f767ae57b067c874 arc_gnu_2017.09_prebuilt_uclibc_be_archs_linux_install.tar.gz diff --git a/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk b/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk new file mode 100644 index 0000000..d751934 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk @@ -0,0 +1,24 @@ +################################################################################ +# +# toolchain-external-synopsys-arc +# +################################################################################ + +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION = 2017.09 +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_SITE = https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/download/arc-$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION)-release + +ifeq ($(BR2_arc750d)$(BR2_arc770d),y) +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE = arc700 +else +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE = archs +endif + +ifeq ($(BR2_arcle),y) +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS = le +else +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS = be +endif + +TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_SOURCE = arc_gnu_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION)_prebuilt_uclibc_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS)_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE)_linux_install.tar.gz + +$(eval $(toolchain-external-package)) diff --git a/buildroot/toolchain/toolchain-external/toolchain-external.mk b/buildroot/toolchain/toolchain-external/toolchain-external.mk new file mode 100644 index 0000000..dd07884 --- /dev/null +++ b/buildroot/toolchain/toolchain-external/toolchain-external.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# toolchain-external +# +################################################################################ + +TOOLCHAIN_EXTERNAL_ADD_TOOLCHAIN_DEPENDENCY = NO + +# musl does not provide an implementation for sys/queue.h or sys/cdefs.h. +# So, add the musl-compat-headers package that will install those files, +# into the staging directory: +# sys/queue.h: header from NetBSD +# sys/cdefs.h: minimalist header bundled in Buildroot +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) +TOOLCHAIN_EXTERNAL_DEPENDENCIES += musl-compat-headers +endif + +$(eval $(virtual-package)) + +# Ensure the external-toolchain package has a prefix defined. +# This comes after the virtual-package definition, which checks the provider. +ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) +ifeq ($(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX)),) +$(error No prefix selected for external toolchain package $(BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL). Configuration error) +endif +endif + +include $(sort $(wildcard toolchain/toolchain-external/*/*.mk)) diff --git a/buildroot/toolchain/toolchain-wrapper.c b/buildroot/toolchain/toolchain-wrapper.c new file mode 100644 index 0000000..c5eb813 --- /dev/null +++ b/buildroot/toolchain/toolchain-wrapper.c @@ -0,0 +1,454 @@ +/** + * Buildroot wrapper for toolchains. This simply executes the real toolchain + * with a number of arguments (sysroot/arch/..) hardcoded, to ensure the + * toolchain uses the correct configuration. + * The hardcoded path arguments are defined relative to the actual location + * of the binary. + * + * (C) 2011 Peter Korsgaard + * (C) 2011 Daniel Nyström + * (C) 2012 Arnout Vandecappelle (Essensium/Mind) + * (C) 2013 Spenser Gilliland + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef BR_CCACHE +static char ccache_path[PATH_MAX]; +#endif +static char path[PATH_MAX]; +static char sysroot[PATH_MAX]; +/* As would be defined by gcc: + * https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html + * sizeof() on string literals includes the terminating \0. */ +static char _time_[sizeof("-D__TIME__=\"HH:MM:SS\"")]; +static char _date_[sizeof("-D__DATE__=\"MMM DD YYYY\"")]; + +/** + * GCC errors out with certain combinations of arguments (examples are + * -mfloat-abi={hard|soft} and -m{little|big}-endian), so we have to ensure + * that we only pass the predefined one to the real compiler if the inverse + * option isn't in the argument list. + * This specifies the worst case number of extra arguments we might pass + * Currently, we may have: + * -mfloat-abi= + * -march= + * -mcpu= + * -D__TIME__= + * -D__DATE__= + * -Wno-builtin-macro-redefined + */ +#define EXCLUSIVE_ARGS 6 + +static char *predef_args[] = { +#ifdef BR_CCACHE + ccache_path, +#endif + path, + "--sysroot", sysroot, +#ifdef BR_ABI + "-mabi=" BR_ABI, +#endif +#ifdef BR_NAN + "-mnan=" BR_NAN, +#endif +#ifdef BR_FPU + "-mfpu=" BR_FPU, +#endif +#ifdef BR_SOFTFLOAT + "-msoft-float", +#endif /* BR_SOFTFLOAT */ +#ifdef BR_MODE + "-m" BR_MODE, +#endif +#ifdef BR_64 + "-m64", +#endif +#ifdef BR_OMIT_LOCK_PREFIX + "-Wa,-momit-lock-prefix=yes", +#endif +#ifdef BR_NO_FUSED_MADD + "-mno-fused-madd", +#endif +#ifdef BR_FP_CONTRACT_OFF + "-ffp-contract=off", +#endif +#ifdef BR_BINFMT_FLAT + "-Wl,-elf2flt", +#endif +#ifdef BR_MIPS_TARGET_LITTLE_ENDIAN + "-EL", +#endif +#if defined(BR_MIPS_TARGET_BIG_ENDIAN) || defined(BR_ARC_TARGET_BIG_ENDIAN) + "-EB", +#endif +#ifdef BR_ADDITIONAL_CFLAGS + BR_ADDITIONAL_CFLAGS +#endif +}; + +/* A {string,length} tuple, to avoid computing strlen() on constants. + * - str must be a \0-terminated string + * - len does not account for the terminating '\0' + */ +struct str_len_s { + const char *str; + size_t len; +}; + +/* Define a {string,length} tuple. Takes an unquoted constant string as + * parameter. sizeof() on a string literal includes the terminating \0, + * but we don't want to count it. + */ +#define STR_LEN(s) { #s, sizeof(#s)-1 } + +/* List of paths considered unsafe for cross-compilation. + * + * An unsafe path is one that points to a directory with libraries or + * headers for the build machine, which are not suitable for the target. + */ +static const struct str_len_s unsafe_paths[] = { + STR_LEN(/lib), + STR_LEN(/usr/include), + STR_LEN(/usr/lib), + STR_LEN(/usr/local/include), + STR_LEN(/usr/local/lib), + { NULL, 0 }, +}; + +/* Unsafe options are options that specify a potentialy unsafe path, + * that will be checked by check_unsafe_path(), below. + */ +static const struct str_len_s unsafe_opts[] = { + STR_LEN(-I), + STR_LEN(-idirafter), + STR_LEN(-iquote), + STR_LEN(-isystem), + STR_LEN(-L), + { NULL, 0 }, +}; + +/* Check if path is unsafe for cross-compilation. Unsafe paths are those + * pointing to the standard native include or library paths. + * + * We print the arguments leading to the failure. For some options, gcc + * accepts the path to be concatenated to the argument (e.g. -I/foo/bar) + * or separated (e.g. -I /foo/bar). In the first case, we need only print + * the argument as it already contains the path (arg_has_path), while in + * the second case we need to print both (!arg_has_path). + * + * If paranoid, exit in error instead of just printing a warning. + */ +static void check_unsafe_path(const char *arg, + const char *path, + int paranoid, + int arg_has_path) +{ + const struct str_len_s *p; + + for (p=unsafe_paths; p->str; p++) { + if (strncmp(path, p->str, p->len)) + continue; + fprintf(stderr, + "%s: %s: unsafe header/library path used in cross-compilation: '%s%s%s'\n", + program_invocation_short_name, + paranoid ? "ERROR" : "WARNING", + arg, + arg_has_path ? "" : "' '", /* close single-quote, space, open single-quote */ + arg_has_path ? "" : path); /* so that arg and path are properly quoted. */ + if (paranoid) + exit(1); + } +} + +/* Returns false if SOURCE_DATE_EPOCH was not defined in the environment. + * + * Returns true if SOURCE_DATE_EPOCH is in the environment and represent + * a valid timestamp, in which case the timestamp is formatted into the + * global variables _date_ and _time_. + * + * Aborts if SOURCE_DATE_EPOCH was set in the environment but did not + * contain a valid timestamp. + * + * Valid values are defined in the spec: + * https://reproducible-builds.org/specs/source-date-epoch/ + * but we further restrict them to be positive or null. + */ +bool parse_source_date_epoch_from_env(void) +{ + char *epoch_env, *endptr; + time_t epoch; + struct tm epoch_tm; + + if ((epoch_env = getenv("SOURCE_DATE_EPOCH")) == NULL) + return false; + errno = 0; + epoch = (time_t) strtoll(epoch_env, &endptr, 10); + /* We just need to test if it is incorrect, but we do not + * care why it is incorrect. + */ + if ((errno != 0) || !*epoch_env || *endptr || (epoch < 0)) { + fprintf(stderr, "%s: invalid SOURCE_DATE_EPOCH='%s'\n", + program_invocation_short_name, + epoch_env); + exit(1); + } + tzset(); /* For localtime_r(), below. */ + if (localtime_r(&epoch, &epoch_tm) == NULL) { + fprintf(stderr, "%s: cannot parse SOURCE_DATE_EPOCH=%s\n", + program_invocation_short_name, + getenv("SOURCE_DATE_EPOCH")); + exit(1); + } + if (!strftime(_time_, sizeof(_time_), "-D__TIME__=\"%T\"", &epoch_tm)) { + fprintf(stderr, "%s: cannot set time from SOURCE_DATE_EPOCH=%s\n", + program_invocation_short_name, + getenv("SOURCE_DATE_EPOCH")); + exit(1); + } + if (!strftime(_date_, sizeof(_date_), "-D__DATE__=\"%b %e %Y\"", &epoch_tm)) { + fprintf(stderr, "%s: cannot set date from SOURCE_DATE_EPOCH=%s\n", + program_invocation_short_name, + getenv("SOURCE_DATE_EPOCH")); + exit(1); + } + return true; +} + +int main(int argc, char **argv) +{ + char **args, **cur, **exec_args; + char *relbasedir, *absbasedir; + char *progpath = argv[0]; + char *basename; + char *env_debug; + char *paranoid_wrapper; + int paranoid; + int ret, i, count = 0, debug; + + /* Calculate the relative paths */ + basename = strrchr(progpath, '/'); + if (basename) { + *basename = '\0'; + basename++; + relbasedir = malloc(strlen(progpath) + 7); + if (relbasedir == NULL) { + perror(__FILE__ ": malloc"); + return 2; + } + sprintf(relbasedir, "%s/..", argv[0]); + absbasedir = realpath(relbasedir, NULL); + } else { + basename = progpath; + absbasedir = malloc(PATH_MAX + 1); + ret = readlink("/proc/self/exe", absbasedir, PATH_MAX); + if (ret < 0) { + perror(__FILE__ ": readlink"); + return 2; + } + absbasedir[ret] = '\0'; + for (i = ret; i > 0; i--) { + if (absbasedir[i] == '/') { + absbasedir[i] = '\0'; + if (++count == 2) + break; + } + } + } + if (absbasedir == NULL) { + perror(__FILE__ ": realpath"); + return 2; + } + + /* Fill in the relative paths */ +#ifdef BR_CROSS_PATH_REL + ret = snprintf(path, sizeof(path), "%s/" BR_CROSS_PATH_REL "/%s" BR_CROSS_PATH_SUFFIX, absbasedir, basename); +#elif defined(BR_CROSS_PATH_ABS) + ret = snprintf(path, sizeof(path), BR_CROSS_PATH_ABS "/%s" BR_CROSS_PATH_SUFFIX, basename); +#else + ret = snprintf(path, sizeof(path), "%s/bin/%s" BR_CROSS_PATH_SUFFIX, absbasedir, basename); +#endif + if (ret >= sizeof(path)) { + perror(__FILE__ ": overflow"); + return 3; + } +#ifdef BR_CCACHE + ret = snprintf(ccache_path, sizeof(ccache_path), "%s/bin/ccache", absbasedir); + if (ret >= sizeof(ccache_path)) { + perror(__FILE__ ": overflow"); + return 3; + } +#endif + ret = snprintf(sysroot, sizeof(sysroot), "%s/" BR_SYSROOT, absbasedir); + if (ret >= sizeof(sysroot)) { + perror(__FILE__ ": overflow"); + return 3; + } + + cur = args = malloc(sizeof(predef_args) + + (sizeof(char *) * (argc + EXCLUSIVE_ARGS))); + if (args == NULL) { + perror(__FILE__ ": malloc"); + return 2; + } + + /* start with predefined args */ + memcpy(cur, predef_args, sizeof(predef_args)); + cur += sizeof(predef_args) / sizeof(predef_args[0]); + +#ifdef BR_FLOAT_ABI + /* add float abi if not overridden in args */ + for (i = 1; i < argc; i++) { + if (!strncmp(argv[i], "-mfloat-abi=", strlen("-mfloat-abi=")) || + !strcmp(argv[i], "-msoft-float") || + !strcmp(argv[i], "-mhard-float")) + break; + } + + if (i == argc) + *cur++ = "-mfloat-abi=" BR_FLOAT_ABI; +#endif + +#ifdef BR_FP32_MODE + /* add fp32 mode if soft-float is not args or hard-float overrides soft-float */ + int add_fp32_mode = 1; + for (i = 1; i < argc; i++) { + if (!strcmp(argv[i], "-msoft-float")) + add_fp32_mode = 0; + else if (!strcmp(argv[i], "-mhard-float")) + add_fp32_mode = 1; + } + + if (add_fp32_mode == 1) + *cur++ = "-mfp" BR_FP32_MODE; +#endif + +#if defined(BR_ARCH) || \ + defined(BR_CPU) + /* Add our -march/cpu flags, but only if none of + * -march/mtune/mcpu are already specified on the commandline + */ + for (i = 1; i < argc; i++) { + if (!strncmp(argv[i], "-march=", strlen("-march=")) || + !strncmp(argv[i], "-mtune=", strlen("-mtune=")) || + !strncmp(argv[i], "-mcpu=", strlen("-mcpu=" ))) + break; + } + if (i == argc) { +#ifdef BR_ARCH + *cur++ = "-march=" BR_ARCH; +#endif +#ifdef BR_CPU + *cur++ = "-mcpu=" BR_CPU; +#endif + } +#endif /* ARCH || CPU */ + + if (parse_source_date_epoch_from_env()) { + *cur++ = _time_; + *cur++ = _date_; + /* This has existed since gcc-4.4.0. */ + *cur++ = "-Wno-builtin-macro-redefined"; + } + + paranoid_wrapper = getenv("BR_COMPILER_PARANOID_UNSAFE_PATH"); + if (paranoid_wrapper && strlen(paranoid_wrapper) > 0) + paranoid = 1; + else + paranoid = 0; + + /* Check for unsafe library and header paths */ + for (i = 1; i < argc; i++) { + const struct str_len_s *opt; + for (opt=unsafe_opts; opt->str; opt++ ) { + /* Skip any non-unsafe option. */ + if (strncmp(argv[i], opt->str, opt->len)) + continue; + + /* Handle both cases: + * - path is a separate argument, + * - path is concatenated with option. + */ + if (argv[i][opt->len] == '\0') { + i++; + if (i == argc) + break; + check_unsafe_path(argv[i-1], argv[i], paranoid, 0); + } else + check_unsafe_path(argv[i], argv[i] + opt->len, paranoid, 1); + } + } + + /* append forward args */ + memcpy(cur, &argv[1], sizeof(char *) * (argc - 1)); + cur += argc - 1; + + /* finish with NULL termination */ + *cur = NULL; + + exec_args = args; +#ifdef BR_CCACHE + if (getenv("BR_NO_CCACHE")) + /* Skip the ccache call */ + exec_args++; +#endif + + /* Debug the wrapper to see actual arguments passed to + * the compiler: + * unset, empty, or 0: do not trace + * set to 1 : trace all arguments on a single line + * set to 2 : trace one argument per line + */ + if ((env_debug = getenv("BR2_DEBUG_WRAPPER"))) { + debug = atoi(env_debug); + if (debug > 0) { + fprintf(stderr, "Toolchain wrapper executing:"); +#ifdef BR_CCACHE_HASH + fprintf(stderr, "%sCCACHE_COMPILERCHECK='string:" BR_CCACHE_HASH "'", + (debug == 2) ? "\n " : " "); +#endif +#ifdef BR_CCACHE_BASEDIR + fprintf(stderr, "%sCCACHE_BASEDIR='" BR_CCACHE_BASEDIR "'", + (debug == 2) ? "\n " : " "); +#endif + for (i = 0; exec_args[i]; i++) + fprintf(stderr, "%s'%s'", + (debug == 2) ? "\n " : " ", exec_args[i]); + fprintf(stderr, "\n"); + } + } + +#ifdef BR_CCACHE_HASH + /* Allow compilercheck to be overridden through the environment */ + if (setenv("CCACHE_COMPILERCHECK", "string:" BR_CCACHE_HASH, 0)) { + perror(__FILE__ ": Failed to set CCACHE_COMPILERCHECK"); + return 3; + } +#endif +#ifdef BR_CCACHE_BASEDIR + /* Allow compilercheck to be overridden through the environment */ + if (setenv("CCACHE_BASEDIR", BR_CCACHE_BASEDIR, 0)) { + perror(__FILE__ ": Failed to set CCACHE_BASEDIR"); + return 3; + } +#endif + + if (execv(exec_args[0], exec_args)) + perror(path); + + free(args); + + return 2; +} diff --git a/buildroot/toolchain/toolchain-wrapper.mk b/buildroot/toolchain/toolchain-wrapper.mk new file mode 100644 index 0000000..6e95545 --- /dev/null +++ b/buildroot/toolchain/toolchain-wrapper.mk @@ -0,0 +1,54 @@ +# This file contains the definition of the toolchain wrapper build commands + +# We use --hash-style=both to increase the compatibility of the generated +# binary with older platforms, except for MIPS, where the only acceptable +# hash style is 'sysv' +ifeq ($(findstring mips,$(HOSTARCH)),mips) +TOOLCHAIN_WRAPPER_HASH_STYLE = sysv +else +TOOLCHAIN_WRAPPER_HASH_STYLE = both +endif + +TOOLCHAIN_WRAPPER_ARGS = $($(PKG)_TOOLCHAIN_WRAPPER_ARGS) +TOOLCHAIN_WRAPPER_ARGS += -DBR_SYSROOT='"$(STAGING_SUBDIR)"' + +# We create a list like '"-mfoo", "-mbar", "-mbarfoo"' so that each flag is a +# separate argument when used in execv() by the toolchain wrapper. +TOOLCHAIN_WRAPPER_OPTS = \ + $(foreach f,$(call qstrip,$(BR2_TARGET_OPTIMIZATION)),"$(f)"$(comma)) +TOOLCHAIN_WRAPPER_ARGS += -DBR_ADDITIONAL_CFLAGS='$(TOOLCHAIN_WRAPPER_OPTS)' + +ifeq ($(BR2_CCACHE),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE +endif + +ifeq ($(BR2_x86_x1000),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR_OMIT_LOCK_PREFIX +endif + +# Avoid FPU bug on XBurst CPUs +ifeq ($(BR2_mips_xburst),y) +# Before gcc 4.6, -mno-fused-madd was needed, after -ffp-contract is +# needed +ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_4_6),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR_FP_CONTRACT_OFF +else +TOOLCHAIN_WRAPPER_ARGS += -DBR_NO_FUSED_MADD +endif +endif + +ifeq ($(BR2_CCACHE_USE_BASEDIR),y) +TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_BASEDIR='"$(BASE_DIR)"' +endif + +define TOOLCHAIN_WRAPPER_BUILD + $(HOSTCC) $(HOST_CFLAGS) $(TOOLCHAIN_WRAPPER_ARGS) \ + -s -Wl,--hash-style=$(TOOLCHAIN_WRAPPER_HASH_STYLE) \ + toolchain/toolchain-wrapper.c \ + -o $(@D)/toolchain-wrapper +endef + +define TOOLCHAIN_WRAPPER_INSTALL + $(INSTALL) -D -m 0755 $(@D)/toolchain-wrapper \ + $(HOST_DIR)/bin/toolchain-wrapper +endef diff --git a/buildroot/toolchain/toolchain.mk b/buildroot/toolchain/toolchain.mk new file mode 100644 index 0000000..59fc905 --- /dev/null +++ b/buildroot/toolchain/toolchain.mk @@ -0,0 +1,56 @@ +# This file contains toolchain-related customisation of the content +# of the target/ directory. Those customisations are added to the +# TARGET_FINALIZE_HOOKS, to be applied just after all packages +# have been built. + +# Install default nsswitch.conf file if the skeleton doesn't provide it +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +define GLIBC_COPY_NSSWITCH_FILE + $(Q)if [ ! -f "$(TARGET_DIR)/etc/nsswitch.conf" ]; then \ + $(INSTALL) -D -m 0644 package/glibc/nsswitch.conf $(TARGET_DIR)/etc/nsswitch.conf ; \ + fi +endef +TOOLCHAIN_TARGET_FINALIZE_HOOKS += GLIBC_COPY_NSSWITCH_FILE +endif + +# Install the gconv modules +ifeq ($(BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY),y) +GCONV_LIBS = $(call qstrip,$(BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST)) +define COPY_GCONV_LIBS + $(Q)found_gconv=no; \ + for d in $(TOOLCHAIN_EXTERNAL_PREFIX) ''; do \ + [ -d "$(STAGING_DIR)/usr/lib/$${d}/gconv" ] || continue; \ + found_gconv=yes; \ + break; \ + done; \ + if [ "$${found_gconv}" = "no" ]; then \ + printf "Unable to find gconv modules\n" >&2; \ + exit 1; \ + fi; \ + if [ -z "$(GCONV_LIBS)" ]; then \ + $(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules \ + $(TARGET_DIR)/usr/lib/gconv/gconv-modules && \ + $(INSTALL) -m 0644 $(STAGING_DIR)/usr/lib/$${d}/gconv/*.so \ + $(TARGET_DIR)/usr/lib/gconv \ + || exit 1; \ + else \ + for l in $(GCONV_LIBS); do \ + $(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/$${l}.so \ + $(TARGET_DIR)/usr/lib/gconv/$${l}.so \ + || exit 1; \ + $(TARGET_READELF) -d $(STAGING_DIR)/usr/lib/$${d}/gconv/$${l}.so |\ + sort -u |\ + sed -e '/.*(NEEDED).*\[\(.*\.so\)\]$$/!d; s//\1/;' |\ + while read lib; do \ + $(INSTALL) -m 0644 -D $(STAGING_DIR)/usr/lib/$${d}/gconv/$${lib} \ + $(TARGET_DIR)/usr/lib/gconv/$${lib} \ + || exit 1; \ + done; \ + done; \ + ./support/scripts/expunge-gconv-modules "$(GCONV_LIBS)" \ + <$(STAGING_DIR)/usr/lib/$${d}/gconv/gconv-modules \ + >$(TARGET_DIR)/usr/lib/gconv/gconv-modules; \ + fi +endef +TOOLCHAIN_TARGET_FINALIZE_HOOKS += COPY_GCONV_LIBS +endif diff --git a/buildroot/toolchain/toolchain/toolchain.mk b/buildroot/toolchain/toolchain/toolchain.mk new file mode 100644 index 0000000..179c09e --- /dev/null +++ b/buildroot/toolchain/toolchain/toolchain.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# toolchain +# +################################################################################ + +ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) +TOOLCHAIN_DEPENDENCIES += toolchain-buildroot +else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) +TOOLCHAIN_DEPENDENCIES += toolchain-external +endif + +TOOLCHAIN_ADD_TOOLCHAIN_DEPENDENCY = NO + +# Apply a hack that Rick Felker suggested[1] to avoid conflicts between libc +# headers and kernel headers. This is needed for kernel headers older than +# 4.15. Kernel headers 4.15 and newer don't require __GLIBC__ to be defined. +# +# Augment the original suggestion with __USE_MISC since recent kernels +# (older than 4.15) require this glibc internal macro. Also, as musl defines +# IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO, add another macro to suppress +# them in the kernel header, and avoid macro/enum conflict. +# +# Kernel version 3.12 introduced the libc-compat.h header. +# +# [1] http://www.openwall.com/lists/musl/2015/10/08/2 +ifeq ($(BR2_TOOLCHAIN_USES_MUSL)$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12):$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15),yy:) +define TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK + $(SED) 's/^#if defined(__GLIBC__)$$/#if 1/' \ + $(STAGING_DIR)/usr/include/linux/libc-compat.h + $(SED) '1s/^/#define __USE_MISC\n/' \ + $(STAGING_DIR)/usr/include/linux/libc-compat.h + $(SED) '1s/^/#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0\n/' \ + $(STAGING_DIR)/usr/include/linux/libc-compat.h +endef +TOOLCHAIN_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK +TOOLCHAIN_INSTALL_STAGING = YES +endif + +$(eval $(virtual-package)) + +toolchain: $(HOST_DIR)/share/buildroot/toolchainfile.cmake +toolchain: $(HOST_DIR)/share/buildroot/Platform/Buildroot.cmake diff --git a/buildroot/utils/brmake b/buildroot/utils/brmake new file mode 100755 index 0000000..e30119d --- /dev/null +++ b/buildroot/utils/brmake @@ -0,0 +1,42 @@ +#!/bin/bash +# (C) 2016, "Yann E. MORIN" +# License: WTFPL, https://spdx.org/licenses/WTFPL.html + +main() { + local found ret start d h m mf + + if ! which unbuffer >/dev/null 2>&1; then + printf "you need to install 'unbuffer' (from package expect or expect-dev)\n" >&2 + exit 1 + fi + + start=${SECONDS} + + ( exec 2>&1; unbuffer make "${@}"; ) \ + > >( while read line; do + printf "%(%Y-%m-%dT%H:%M:%S)T %s\n" -1 "${line}" + done \ + |tee -a br.log \ + |grep --colour=never -E '>>>' + ) + ret=${?} + + d=$((SECONDS-start)) + printf "Done in " + h=$((d/3600)) + d=$((d%3600)) + [ ${h} -eq 0 ] || { printf "%dh " ${h}; mf="02"; } + m=$((d/60)) + d=$((d%60)) + [ ${m} -eq 0 ] || { printf "%${mf}dmin " ${m}; sf="02"; } + printf "%${sf}ds" ${d} + + if [ ${ret} -ne 0 ]; then + printf " (error code: %s)" ${ret} + fi + printf "\n" + + return ${ret} +} + +main "${@}" diff --git a/buildroot/utils/check-package b/buildroot/utils/check-package new file mode 100755 index 0000000..a87a74d --- /dev/null +++ b/buildroot/utils/check-package @@ -0,0 +1,144 @@ +#!/usr/bin/env python +# See utils/checkpackagelib/readme.txt before editing this file. + +from __future__ import print_function +import argparse +import inspect +import re +import sys + +import checkpackagelib.lib_config +import checkpackagelib.lib_hash +import checkpackagelib.lib_mk +import checkpackagelib.lib_patch + +VERBOSE_LEVEL_TO_SHOW_IGNORED_FILES = 3 +flags = None # Command line arguments. + + +def parse_args(): + parser = argparse.ArgumentParser() + + # Do not use argparse.FileType("r") here because only files with known + # format will be open based on the filename. + parser.add_argument("files", metavar="F", type=str, nargs="*", + help="list of files") + + parser.add_argument("--manual-url", action="store", + default="http://nightly.buildroot.org/", + help="default: %(default)s") + parser.add_argument("--verbose", "-v", action="count", default=0) + + # Now the debug options in the order they are processed. + parser.add_argument("--include-only", dest="include_list", action="append", + help="run only the specified functions (debug)") + parser.add_argument("--exclude", dest="exclude_list", action="append", + help="do not run the specified functions (debug)") + parser.add_argument("--dry-run", action="store_true", help="print the " + "functions that would be called for each file (debug)") + + return parser.parse_args() + + +CONFIG_IN_FILENAME = re.compile("/Config\.\S*$") +FILE_IS_FROM_A_PACKAGE = re.compile("package/[^/]*/") + + +def get_lib_from_filename(fname): + if FILE_IS_FROM_A_PACKAGE.search(fname) is None: + return None + if CONFIG_IN_FILENAME.search(fname): + return checkpackagelib.lib_config + if fname.endswith(".hash"): + return checkpackagelib.lib_hash + if fname.endswith(".mk"): + return checkpackagelib.lib_mk + if fname.endswith(".patch"): + return checkpackagelib.lib_patch + return None + + +def is_a_check_function(m): + if not inspect.isclass(m): + return False + # do not call the base class + if m.__name__.startswith("_"): + return False + if flags.include_list and m.__name__ not in flags.include_list: + return False + if flags.exclude_list and m.__name__ in flags.exclude_list: + return False + return True + + +def print_warnings(warnings): + # Avoid the need to use 'return []' at the end of every check function. + if warnings is None: + return 0 # No warning generated. + + for level, message in enumerate(warnings): + if flags.verbose >= level: + print(message.replace("\t", "< tab >").rstrip()) + return 1 # One more warning to count. + + +def check_file_using_lib(fname): + # Count number of warnings generated and lines processed. + nwarnings = 0 + nlines = 0 + + lib = get_lib_from_filename(fname) + if not lib: + if flags.verbose >= VERBOSE_LEVEL_TO_SHOW_IGNORED_FILES: + print("{}: ignored".format(fname)) + return nwarnings, nlines + classes = inspect.getmembers(lib, is_a_check_function) + + if flags.dry_run: + functions_to_run = [c[0] for c in classes] + print("{}: would run: {}".format(fname, functions_to_run)) + return nwarnings, nlines + + objects = [c[1](fname, flags.manual_url) for c in classes] + + for cf in objects: + nwarnings += print_warnings(cf.before()) + for lineno, text in enumerate(open(fname, "r").readlines()): + nlines += 1 + for cf in objects: + nwarnings += print_warnings(cf.check_line(lineno + 1, text)) + for cf in objects: + nwarnings += print_warnings(cf.after()) + + return nwarnings, nlines + + +def __main__(): + global flags + flags = parse_args() + + if len(flags.files) == 0: + print("No files to check style") + sys.exit(1) + + # Accumulate number of warnings generated and lines processed. + total_warnings = 0 + total_lines = 0 + + for fname in flags.files: + nwarnings, nlines = check_file_using_lib(fname) + total_warnings += nwarnings + total_lines += nlines + + # The warning messages are printed to stdout and can be post-processed + # (e.g. counted by 'wc'), so for stats use stderr. Wait all warnings are + # printed, for the case there are many of them, before printing stats. + sys.stdout.flush() + print("{} lines processed".format(total_lines), file=sys.stderr) + print("{} warnings generated".format(total_warnings), file=sys.stderr) + + if total_warnings > 0: + sys.exit(1) + + +__main__() diff --git a/buildroot/utils/checkpackagelib/__init__.py b/buildroot/utils/checkpackagelib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/buildroot/utils/checkpackagelib/base.py b/buildroot/utils/checkpackagelib/base.py new file mode 100644 index 0000000..fc09bec --- /dev/null +++ b/buildroot/utils/checkpackagelib/base.py @@ -0,0 +1,16 @@ +# See utils/checkpackagelib/readme.txt before editing this file. + + +class _CheckFunction(object): + def __init__(self, filename, url_to_manual): + self.filename = filename + self.url_to_manual = url_to_manual + + def before(self): + pass + + def check_line(self, lineno, text): + pass + + def after(self): + pass diff --git a/buildroot/utils/checkpackagelib/lib.py b/buildroot/utils/checkpackagelib/lib.py new file mode 100644 index 0000000..91f4ad4 --- /dev/null +++ b/buildroot/utils/checkpackagelib/lib.py @@ -0,0 +1,54 @@ +# See utils/checkpackagelib/readme.txt before editing this file. + +from base import _CheckFunction + + +class ConsecutiveEmptyLines(_CheckFunction): + def before(self): + self.lastline = "non empty" + + def check_line(self, lineno, text): + if text.strip() == "" == self.lastline.strip(): + return ["{}:{}: consecutive empty lines" + .format(self.filename, lineno)] + self.lastline = text + + +class EmptyLastLine(_CheckFunction): + def before(self): + self.lastlineno = 0 + self.lastline = "non empty" + + def check_line(self, lineno, text): + self.lastlineno = lineno + self.lastline = text + + def after(self): + if self.lastline.strip() == "": + return ["{}:{}: empty line at end of file" + .format(self.filename, self.lastlineno)] + + +class NewlineAtEof(_CheckFunction): + def before(self): + self.lastlineno = 0 + self.lastline = "\n" + + def check_line(self, lineno, text): + self.lastlineno = lineno + self.lastline = text + + def after(self): + if self.lastline == self.lastline.rstrip("\r\n"): + return ["{}:{}: missing newline at end of file" + .format(self.filename, self.lastlineno), + self.lastline] + + +class TrailingSpace(_CheckFunction): + def check_line(self, lineno, text): + line = text.rstrip("\r\n") + if line != line.rstrip(): + return ["{}:{}: line contains trailing whitespace" + .format(self.filename, lineno), + text] diff --git a/buildroot/utils/checkpackagelib/lib_config.py b/buildroot/utils/checkpackagelib/lib_config.py new file mode 100644 index 0000000..11d885f --- /dev/null +++ b/buildroot/utils/checkpackagelib/lib_config.py @@ -0,0 +1,137 @@ +# See utils/checkpackagelib/readme.txt before editing this file. +# Kconfig generates errors if someone introduces a typo like "boool" instead of +# "bool", so below check functions don't need to check for things already +# checked by running "make menuconfig". + +import re + +from base import _CheckFunction +from lib import ConsecutiveEmptyLines # noqa: F401 +from lib import EmptyLastLine # noqa: F401 +from lib import NewlineAtEof # noqa: F401 +from lib import TrailingSpace # noqa: F401 + + +def _empty_or_comment(text): + line = text.strip() + # ignore empty lines and comment lines indented or not + return line == "" or line.startswith("#") + + +def _part_of_help_text(text): + return text.startswith("\t ") + + +# used in more than one check +entries_that_should_not_be_indented = [ + "choice", "comment", "config", "endchoice", "endif", "endmenu", "if", + "menu", "menuconfig", "source"] + + +class AttributesOrder(_CheckFunction): + attributes_order_convention = { + "bool": 1, "prompt": 1, "string": 1, "default": 2, "depends": 3, + "select": 4, "help": 5} + + def before(self): + self.state = 0 + + def check_line(self, lineno, text): + if _empty_or_comment(text) or _part_of_help_text(text): + return + + attribute = text.split()[0] + + if attribute in entries_that_should_not_be_indented: + self.state = 0 + return + if attribute not in self.attributes_order_convention.keys(): + return + new_state = self.attributes_order_convention[attribute] + wrong_order = self.state > new_state + + # save to process next line + self.state = new_state + + if wrong_order: + return ["{}:{}: attributes order: type, default, depends on," + " select, help ({}#_config_files)" + .format(self.filename, lineno, self.url_to_manual), + text] + + +class HelpText(_CheckFunction): + HELP_TEXT_FORMAT = re.compile("^\t .{,62}$") + URL_ONLY = re.compile("^(http|https|git)://\S*$") + + def before(self): + self.help_text = False + + def check_line(self, lineno, text): + if _empty_or_comment(text): + return + + entry = text.split()[0] + + if entry in entries_that_should_not_be_indented: + self.help_text = False + return + if text.strip() == "help": + self.help_text = True + return + + if not self.help_text: + return + + if self.HELP_TEXT_FORMAT.match(text.rstrip()): + return + if self.URL_ONLY.match(text.strip()): + return + return ["{}:{}: help text: <2 spaces><62 chars>" + " ({}#writing-rules-config-in)" + .format(self.filename, lineno, self.url_to_manual), + text, + "\t " + "123456789 " * 6 + "12"] + + +class Indent(_CheckFunction): + ENDS_WITH_BACKSLASH = re.compile(r"^[^#].*\\$") + entries_that_should_be_indented = [ + "bool", "default", "depends", "help", "prompt", "select", "string"] + + def before(self): + self.backslash = False + + def check_line(self, lineno, text): + if _empty_or_comment(text) or _part_of_help_text(text): + self.backslash = False + return + + entry = text.split()[0] + + last_line_ends_in_backslash = self.backslash + + # calculate for next line + if self.ENDS_WITH_BACKSLASH.search(text): + self.backslash = True + else: + self.backslash = False + + if last_line_ends_in_backslash: + if text.startswith("\t"): + return + return ["{}:{}: continuation line should be indented using tabs" + .format(self.filename, lineno), + text] + + if entry in self.entries_that_should_be_indented: + if not text.startswith("\t{}".format(entry)): + return ["{}:{}: should be indented with one tab" + " ({}#_config_files)" + .format(self.filename, lineno, self.url_to_manual), + text] + elif entry in entries_that_should_not_be_indented: + if not text.startswith(entry): + return ["{}:{}: should not be indented" + .format(self.filename, lineno), + text] diff --git a/buildroot/utils/checkpackagelib/lib_hash.py b/buildroot/utils/checkpackagelib/lib_hash.py new file mode 100644 index 0000000..6d4cc9f --- /dev/null +++ b/buildroot/utils/checkpackagelib/lib_hash.py @@ -0,0 +1,55 @@ +# See utils/checkpackagelib/readme.txt before editing this file. +# The validity of the hashes itself is checked when building, so below check +# functions don't need to check for things already checked by running +# "make package-dirclean package-source". + +import re + +from base import _CheckFunction +from lib import ConsecutiveEmptyLines # noqa: F401 +from lib import EmptyLastLine # noqa: F401 +from lib import NewlineAtEof # noqa: F401 +from lib import TrailingSpace # noqa: F401 + + +def _empty_line_or_comment(text): + return text.strip() == "" or text.startswith("#") + + +class HashNumberOfFields(_CheckFunction): + def check_line(self, lineno, text): + if _empty_line_or_comment(text): + return + + fields = text.split() + if len(fields) != 3: + return ["{}:{}: expected three fields ({}#adding-packages-hash)" + .format(self.filename, lineno, self.url_to_manual), + text] + + +class HashType(_CheckFunction): + len_of_hash = {"md5": 32, "sha1": 40, "sha224": 56, "sha256": 64, + "sha384": 96, "sha512": 128} + + def check_line(self, lineno, text): + if _empty_line_or_comment(text): + return + + fields = text.split() + if len(fields) < 2: + return + + htype, hexa = fields[:2] + if htype == "none": + return + if htype not in self.len_of_hash.keys(): + return ["{}:{}: unexpected type of hash ({}#adding-packages-hash)" + .format(self.filename, lineno, self.url_to_manual), + text] + if not re.match("^[0-9A-Fa-f]{%s}$" % self.len_of_hash[htype], hexa): + return ["{}:{}: hash size does not match type " + "({}#adding-packages-hash)" + .format(self.filename, lineno, self.url_to_manual), + text, + "expected {} hex digits".format(self.len_of_hash[htype])] diff --git a/buildroot/utils/checkpackagelib/lib_mk.py b/buildroot/utils/checkpackagelib/lib_mk.py new file mode 100644 index 0000000..2df2e1a --- /dev/null +++ b/buildroot/utils/checkpackagelib/lib_mk.py @@ -0,0 +1,246 @@ +# See utils/checkpackagelib/readme.txt before editing this file. +# There are already dependency checks during the build, so below check +# functions don't need to check for things already checked by exploring the +# menu options using "make menuconfig" and by running "make" with appropriate +# packages enabled. + +import re + +from base import _CheckFunction +from lib import ConsecutiveEmptyLines # noqa: F401 +from lib import EmptyLastLine # noqa: F401 +from lib import NewlineAtEof # noqa: F401 +from lib import TrailingSpace # noqa: F401 + + +class Indent(_CheckFunction): + COMMENT = re.compile("^\s*#") + CONDITIONAL = re.compile("^\s*(ifeq|ifneq|endif)\s") + ENDS_WITH_BACKSLASH = re.compile(r"^[^#].*\\$") + END_DEFINE = re.compile("^\s*endef\s") + MAKEFILE_TARGET = re.compile("^[^# \t]+:\s") + START_DEFINE = re.compile("^\s*define\s") + + def before(self): + self.define = False + self.backslash = False + self.makefile_target = False + + def check_line(self, lineno, text): + if self.START_DEFINE.search(text): + self.define = True + return + if self.END_DEFINE.search(text): + self.define = False + return + + expect_tabs = False + if self.define or self.backslash or self.makefile_target: + expect_tabs = True + if self.CONDITIONAL.search(text): + expect_tabs = False + + # calculate for next line + if self.ENDS_WITH_BACKSLASH.search(text): + self.backslash = True + else: + self.backslash = False + + if self.MAKEFILE_TARGET.search(text): + self.makefile_target = True + return + if text.strip() == "": + self.makefile_target = False + return + + # comment can be indented or not inside define ... endef, so ignore it + if self.define and self.COMMENT.search(text): + return + + if expect_tabs: + if not text.startswith("\t"): + return ["{}:{}: expected indent with tabs" + .format(self.filename, lineno), + text] + else: + if text.startswith("\t"): + return ["{}:{}: unexpected indent with tabs" + .format(self.filename, lineno), + text] + + +class PackageHeader(_CheckFunction): + def before(self): + self.skip = False + + def check_line(self, lineno, text): + if self.skip or lineno > 6: + return + + if lineno in [1, 5]: + if lineno == 1 and text.startswith("include "): + self.skip = True + return + if text.rstrip() != "#" * 80: + return ["{}:{}: should be 80 hashes ({}#writing-rules-mk)" + .format(self.filename, lineno, self.url_to_manual), + text, + "#" * 80] + elif lineno in [2, 4]: + if text.rstrip() != "#": + return ["{}:{}: should be 1 hash ({}#writing-rules-mk)" + .format(self.filename, lineno, self.url_to_manual), + text] + elif lineno == 6: + if text.rstrip() != "": + return ["{}:{}: should be a blank line ({}#writing-rules-mk)" + .format(self.filename, lineno, self.url_to_manual), + text] + + +class RemoveDefaultPackageSourceVariable(_CheckFunction): + packages_that_may_contain_default_source = ["binutils", "gcc", "gdb"] + PACKAGE_NAME = re.compile("/([^/]+)\.mk") + + def before(self): + package = self.PACKAGE_NAME.search(self.filename).group(1) + package_upper = package.replace("-", "_").upper() + self.package = package + self.FIND_SOURCE = re.compile( + "^{}_SOURCE\s*=\s*{}-\$\({}_VERSION\)\.tar\.gz" + .format(package_upper, package, package_upper)) + + def check_line(self, lineno, text): + if self.FIND_SOURCE.search(text): + + if self.package in self.packages_that_may_contain_default_source: + return + + return ["{}:{}: remove default value of _SOURCE variable " + "({}#generic-package-reference)" + .format(self.filename, lineno, self.url_to_manual), + text] + + +class SpaceBeforeBackslash(_CheckFunction): + TAB_OR_MULTIPLE_SPACES_BEFORE_BACKSLASH = re.compile(r"^.*( |\t)\\$") + + def check_line(self, lineno, text): + if self.TAB_OR_MULTIPLE_SPACES_BEFORE_BACKSLASH.match(text.rstrip()): + return ["{}:{}: use only one space before backslash" + .format(self.filename, lineno), + text] + + +class TrailingBackslash(_CheckFunction): + ENDS_WITH_BACKSLASH = re.compile(r"^[^#].*\\$") + + def before(self): + self.backslash = False + + def check_line(self, lineno, text): + last_line_ends_in_backslash = self.backslash + + # calculate for next line + if self.ENDS_WITH_BACKSLASH.search(text): + self.backslash = True + self.lastline = text + return + self.backslash = False + + if last_line_ends_in_backslash and text.strip() == "": + return ["{}:{}: remove trailing backslash" + .format(self.filename, lineno - 1), + self.lastline] + + +class TypoInPackageVariable(_CheckFunction): + ALLOWED = re.compile("|".join([ + "ACLOCAL_DIR", + "ACLOCAL_HOST_DIR", + "BR_CCACHE_INITIAL_SETUP", + "BR_NO_CHECK_HASH_FOR", + "LINUX_POST_PATCH_HOOKS", + "LINUX_TOOLS", + "LUA_RUN", + "MKFS_JFFS2", + "MKIMAGE_ARCH", + "PKG_CONFIG_HOST_BINARY", + "TARGET_FINALIZE_HOOKS", + "XTENSA_CORE_NAME"])) + PACKAGE_NAME = re.compile("/([^/]+)\.mk") + VARIABLE = re.compile("^([A-Z0-9_]+_[A-Z0-9_]+)\s*(\+|)=") + + def before(self): + package = self.PACKAGE_NAME.search(self.filename).group(1) + package = package.replace("-", "_").upper() + # linux tools do not use LINUX_TOOL_ prefix for variables + package = package.replace("LINUX_TOOL_", "") + self.package = package + self.REGEX = re.compile("^(HOST_)?({}_[A-Z0-9_]+)".format(package)) + self.FIND_VIRTUAL = re.compile( + "^{}_PROVIDES\s*(\+|)=\s*(.*)".format(package)) + self.virtual = [] + + def check_line(self, lineno, text): + m = self.VARIABLE.search(text) + if m is None: + return + + variable = m.group(1) + + # allow to set variables for virtual package this package provides + v = self.FIND_VIRTUAL.search(text) + if v: + self.virtual += v.group(2).upper().split() + return + for virtual in self.virtual: + if variable.startswith("{}_".format(virtual)): + return + + if self.ALLOWED.match(variable): + return + if self.REGEX.search(text) is None: + return ["{}:{}: possible typo: {} -> *{}*" + .format(self.filename, lineno, variable, self.package), + text] + + +class UselessFlag(_CheckFunction): + DEFAULT_AUTOTOOLS_FLAG = re.compile("^.*{}".format("|".join([ + "_AUTORECONF\s*=\s*NO", + "_LIBTOOL_PATCH\s*=\s*YES"]))) + DEFAULT_GENERIC_FLAG = re.compile("^.*{}".format("|".join([ + "_INSTALL_IMAGES\s*=\s*NO", + "_INSTALL_REDISTRIBUTE\s*=\s*YES", + "_INSTALL_STAGING\s*=\s*NO", + "_INSTALL_TARGET\s*=\s*YES"]))) + END_CONDITIONAL = re.compile("^\s*(endif)") + START_CONDITIONAL = re.compile("^\s*(ifeq|ifneq)") + + def before(self): + self.conditional = 0 + + def check_line(self, lineno, text): + if self.START_CONDITIONAL.search(text): + self.conditional += 1 + return + if self.END_CONDITIONAL.search(text): + self.conditional -= 1 + return + + # allow non-default conditionally overridden by default + if self.conditional > 0: + return + + if self.DEFAULT_GENERIC_FLAG.search(text): + return ["{}:{}: useless default value ({}#" + "_infrastructure_for_packages_with_specific_build_systems)" + .format(self.filename, lineno, self.url_to_manual), + text] + + if self.DEFAULT_AUTOTOOLS_FLAG.search(text) and not text.lstrip().startswith("HOST_"): + return ["{}:{}: useless default value " + "({}#_infrastructure_for_autotools_based_packages)" + .format(self.filename, lineno, self.url_to_manual), + text] diff --git a/buildroot/utils/checkpackagelib/lib_patch.py b/buildroot/utils/checkpackagelib/lib_patch.py new file mode 100644 index 0000000..555621a --- /dev/null +++ b/buildroot/utils/checkpackagelib/lib_patch.py @@ -0,0 +1,61 @@ +# See utils/checkpackagelib/readme.txt before editing this file. +# The format of the patch files is tested during the build, so below check +# functions don't need to check for things already checked by running +# "make package-dirclean package-patch". + +import re + +from base import _CheckFunction +from lib import NewlineAtEof # noqa: F401 + + +class ApplyOrder(_CheckFunction): + APPLY_ORDER = re.compile("/\d{1,4}-[^/]*$") + + def before(self): + if not self.APPLY_ORDER.search(self.filename): + return ["{}:0: use name -.patch " + "({}#_providing_patches)" + .format(self.filename, self.url_to_manual)] + + +class NumberedSubject(_CheckFunction): + NUMBERED_PATCH = re.compile("Subject:\s*\[PATCH\s*\d+/\d+\]") + + def before(self): + self.git_patch = False + self.lineno = 0 + self.text = None + + def check_line(self, lineno, text): + if text.startswith("diff --git"): + self.git_patch = True + return + if self.NUMBERED_PATCH.search(text): + self.lineno = lineno + self.text = text + + def after(self): + if self.git_patch and self.text: + return ["{}:{}: generate your patches with 'git format-patch -N'" + .format(self.filename, self.lineno), + self.text] + + +class Sob(_CheckFunction): + SOB_ENTRY = re.compile("^Signed-off-by: .*$") + + def before(self): + self.found = False + + def check_line(self, lineno, text): + if self.found: + return + if self.SOB_ENTRY.search(text): + self.found = True + + def after(self): + if not self.found: + return ["{}:0: missing Signed-off-by in the header " + "({}#_format_and_licensing_of_the_package_patches)" + .format(self.filename, self.url_to_manual)] diff --git a/buildroot/utils/checkpackagelib/readme.txt b/buildroot/utils/checkpackagelib/readme.txt new file mode 100644 index 0000000..3bfe289 --- /dev/null +++ b/buildroot/utils/checkpackagelib/readme.txt @@ -0,0 +1,73 @@ +How the scripts are structured: +- check-package is the main engine, called by the user. + For each input file, this script decides which parser should be used and it + collects all classes declared in the library file and instantiates them. + The main engine opens the input files and it serves each raw line (including + newline!) to the method check_line() of every check object. + Two special methods before() and after() are used to call the initialization + of variables (for the case it needs to keep data across calls) and the + equivalent finalization (e.g. for the case a warning must be issued if some + pattern is not in the input file). +- base.py contains the base class for all check functions. +- lib.py contains the classes for common check functions. + Each check function is explicitly included in a given type-parsing library. + Do not include every single check function in this file, a class that will + only parse hash files should be implemented in the hash-parsing library. + When a warning must be issued, the check function returns an array of strings. + Each string is a warning message and is displayed if the corresponding verbose + level is active. When the script is called without --verbose only the first + warning in the returned array is printed; when called with --verbose both + first and second warnings are printed; when called with -vv until the third + warning is printed; an so on. + Helper functions can be defined and will not be called by the main script. +- lib_type.py contains check functions specific to files of this type. + +Some hints when changing this code: +- prefer O(n) algorithms, where n is the total number of lines in the files + processed. +- when there is no other reason for ordering, use alphabetical order (e.g. keep + the check functions in alphabetical order, keep the imports in alphabetical + order, and so on). +- keep in mind that for every class the method before() will be called before + any line is served to be checked by the method check_line(). A class that + checks the filename should only implement the method before(). A function that + needs to keep data across calls (e.g. keep the last line before the one being + processed) should initialize all variables using this method. +- keep in mind that for every class the method after() will be called after all + lines were served to be checked by the method check_line(). A class that + checks the absence of a pattern in the file will need to use this method. +- try to avoid false warnings. It's better to not issue a warning message to a + corner case than have too many false warnings. The second can make users stop + using the script. +- do not check spacing in the input line in every single function. Trailing + whitespace and wrong indentation should be checked by separate functions. +- avoid duplicate tests. Try to test only one thing in each function. +- in the warning message, include the url to a section from the manual, when + applicable. It potentially will make more people know the manual. +- use short sentences in the warning messages. A complete explanation can be + added to show when --verbose is used. +- when testing, verify the error message is displayed when the error pattern is + found, but also verify the error message is not displayed for few + well-formatted packages... there are many of these, just pick your favorite + as golden package that should not trigger any warning message. +- check the url displayed by the warning message works. + +Usage examples: +- to get a list of check functions that would be called without actually + calling them you can use the --dry-run option: +$ utils/check-package --dry-run package/yourfavorite/* + +- when you just added a new check function, e.g. Something, check how it behaves + for all current packages: +$ utils/check-package --include-only Something $(find package -type f) + +- the effective processing time (when the .pyc were already generated and all + files to be processed are cached in the RAM) should stay in the order of few + seconds: +$ utils/check-package $(find package -type f) >/dev/null ; \ + time utils/check-package $(find package -type f) >/dev/null + +- vim users can navigate the warnings (most editors probably have similar + function) since warnings are generated in the form 'path/file:line: warning': +$ find package/ -name 'Config.*' > filelist && vim -c \ + 'set makeprg=utils/check-package\ $(cat\ filelist)' -c make -c copen diff --git a/buildroot/utils/config b/buildroot/utils/config new file mode 100755 index 0000000..c5e2d72 --- /dev/null +++ b/buildroot/utils/config @@ -0,0 +1,206 @@ +#!/bin/bash +# Manipulate options in a .config file from the command line + +myname=${0##*/} + +# If no prefix forced, use the default BR2_ +BR2_PREFIX="${BR2_PREFIX-BR2_}" + +usage() { + cat >&2 <>"$FN" + fi +} + +undef_var() { + local name=$1 + + txt_delete "^$name=" "$FN" + txt_delete "^# $name is not set" "$FN" +} + +if [ "$1" = "--file" ]; then + FN="$2" + if [ "$FN" = "" ] ; then + usage + fi + shift 2 +else + FN=.config +fi + +if [ "$1" = "" ] ; then + usage +fi + +MUNGE_CASE=yes +while [ "$1" != "" ] ; do + CMD="$1" + shift + case "$CMD" in + --keep-case|-k) + MUNGE_CASE=no + continue + ;; + --package|-p) + BR2_PREFIX="BR2_PACKAGE_" + continue + ;; + --*-after|-E|-D|-M) + checkarg "$1" + A=$ARG + checkarg "$2" + B=$ARG + shift 2 + ;; + -*) + checkarg "$1" + shift + ;; + esac + case "$CMD" in + --enable|-e) + set_var "${BR2_PREFIX}$ARG" "${BR2_PREFIX}$ARG=y" + ;; + + --disable|-d) + set_var "${BR2_PREFIX}$ARG" "# ${BR2_PREFIX}$ARG is not set" + ;; + + --set-str) + # sed swallows one level of escaping, so we need double-escaping + set_var "${BR2_PREFIX}$ARG" "${BR2_PREFIX}$ARG=\"${1//\"/\\\\\"}\"" + shift + ;; + + --set-val) + set_var "${BR2_PREFIX}$ARG" "${BR2_PREFIX}$ARG=$1" + shift + ;; + --undefine|-u) + undef_var "${BR2_PREFIX}$ARG" + ;; + + --state|-s) + if grep -q "# ${BR2_PREFIX}$ARG is not set" $FN ; then + echo n + else + V="$(grep "^${BR2_PREFIX}$ARG=" $FN)" + if [ $? != 0 ] ; then + echo undef + else + V="${V/#${BR2_PREFIX}$ARG=/}" + V="${V/#\"/}" + V="${V/%\"/}" + V="${V//\\\"/\"}" + echo "${V}" + fi + fi + ;; + + --enable-after|-E) + set_var "${BR2_PREFIX}$B" "${BR2_PREFIX}$B=y" "${BR2_PREFIX}$A" + ;; + + --disable-after|-D) + set_var "${BR2_PREFIX}$B" "# ${BR2_PREFIX}$B is not set" "${BR2_PREFIX}$A" + ;; + + *) + usage + ;; + esac +done diff --git a/buildroot/utils/diffconfig b/buildroot/utils/diffconfig new file mode 100755 index 0000000..5862a62 --- /dev/null +++ b/buildroot/utils/diffconfig @@ -0,0 +1,136 @@ +#!/usr/bin/python +# +# diffconfig - a tool to compare .config files. +# +# originally written in 2006 by Matt Mackall +# (at least, this was in his bloatwatch source code) +# last worked on 2008 by Tim Bird for the Linux kernel +# Adapted to Buildroot 2017 by Marcus Folkesson +# + +import sys, os + +def usage(): + print("""Usage: diffconfig [-h] [-m] [ ] + +Diffconfig is a simple utility for comparing two .config files. +Using standard diff to compare .config files often includes extraneous and +distracting information. This utility produces sorted output with only the +changes in configuration values between the two files. + +Added and removed items are shown with a leading plus or minus, respectively. +Changed items show the old and new values on a single line. + +If -m is specified, then output will be in "merge" style, which has the +changed and new values in kernel config option format. + +If no config files are specified, .config and .config.old are used. + +Example usage: + $ diffconfig .config config-with-some-changes +-LINUX_KERNEL_INTREE_DTS_NAME "vexpress-v2p-ca9" + LINUX_KERNEL_DTS_SUPPORT y -> n + LINUX_KERNEL_USE_INTREE_DTS y -> n + PACKAGE_DFU_UTIL n -> y + PACKAGE_LIBUSB n -> y + TARGET_GENERIC_HOSTNAME "buildroot" -> "Tuxie" + TARGET_GENERIC_ISSUE "Welcome to Buildroot" -> "Welcome to CustomBoard" ++PACKAGE_LIBUSB_COMPAT n + +""") + sys.exit(0) + +# returns a dictionary of name/value pairs for config items in the file +def readconfig(config_file): + d = {} + for line in config_file: + line = line[:-1] + if line[:4] == "BR2_": + name, val = line[4:].split("=", 1) + d[name] = val + if line[-11:] == " is not set": + d[line[6:-11]] = "n" + return d + +def print_config(op, config, value, new_value): + global merge_style + + if merge_style: + if new_value: + if new_value=="n": + print("# BR2_%s is not set" % config) + else: + print("BR2_%s=%s" % (config, new_value)) + else: + if op=="-": + print("-%s %s" % (config, value)) + elif op=="+": + print("+%s %s" % (config, new_value)) + else: + print(" %s %s -> %s" % (config, value, new_value)) + +def main(): + global merge_style + + # parse command line args + if ("-h" in sys.argv or "--help" in sys.argv): + usage() + + merge_style = 0 + if "-m" in sys.argv: + merge_style = 1 + sys.argv.remove("-m") + + argc = len(sys.argv) + if not (argc==1 or argc == 3): + print("Error: incorrect number of arguments or unrecognized option") + usage() + + if argc == 1: + # if no filenames given, assume .config and .config.old + build_dir="" + if "KBUILD_OUTPUT" in os.environ: + build_dir = os.environ["KBUILD_OUTPUT"]+"/" + configa_filename = build_dir + ".config.old" + configb_filename = build_dir + ".config" + else: + configa_filename = sys.argv[1] + configb_filename = sys.argv[2] + + try: + a = readconfig(open(configa_filename)) + b = readconfig(open(configb_filename)) + except (IOError): + e = sys.exc_info()[1] + print("I/O error[%s]: %s\n" % (e.args[0],e.args[1])) + usage() + + # print items in a but not b (accumulate, sort and print) + old = [] + for config in a: + if config not in b: + old.append(config) + old.sort() + for config in old: + print_config("-", config, a[config], None) + del a[config] + + # print items that changed (accumulate, sort, and print) + changed = [] + for config in a: + if a[config] != b[config]: + changed.append(config) + else: + del b[config] + changed.sort() + for config in changed: + print_config("->", config, a[config], b[config]) + del b[config] + + # now print items in b but not in a + # (items from b that were in a were removed above) + new = sorted(b.keys()) + for config in new: + print_config("+", config, None, b[config]) + +main() diff --git a/buildroot/utils/genrandconfig b/buildroot/utils/genrandconfig new file mode 100755 index 0000000..8a6bdb6 --- /dev/null +++ b/buildroot/utils/genrandconfig @@ -0,0 +1,436 @@ +#!/usr/bin/env python + +# Copyright (C) 2014 by Thomas Petazzoni +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# This script generates a random configuration for testing Buildroot. + +from __future__ import print_function + +import contextlib +import csv +import os +from random import randint +import subprocess +import sys +from distutils.version import StrictVersion +import platform + +if sys.hexversion >= 0x3000000: + import urllib.request as _urllib +else: + import urllib2 as _urllib + + +def urlopen_closing(uri): + return contextlib.closing(_urllib.urlopen(uri)) + + +if sys.hexversion >= 0x3000000: + def decode_byte_list(bl): + return [b.decode() for b in bl] +else: + def decode_byte_list(e): + return e + + +class SystemInfo: + DEFAULT_NEEDED_PROGS = ["make", "git", "gcc", "timeout"] + DEFAULT_OPTIONAL_PROGS = ["bzr", "java", "javac", "jar"] + + def __init__(self): + self.needed_progs = list(self.__class__.DEFAULT_NEEDED_PROGS) + self.optional_progs = list(self.__class__.DEFAULT_OPTIONAL_PROGS) + self.progs = {} + + def find_prog(self, name, flags=os.X_OK, env=os.environ): + if not name or name[0] == os.sep: + raise ValueError(name) + + prog_path = env.get("PATH", None) + # for windows compatibility, we'd need to take PATHEXT into account + + if prog_path: + for prog_dir in filter(None, prog_path.split(os.pathsep)): + # os.join() not necessary: non-empty prog_dir + # and name[0] != os.sep + prog = prog_dir + os.sep + name + if os.access(prog, flags): + return prog + # -- + return None + + def has(self, prog): + """Checks whether a program is available. + Lazily evaluates missing entries. + + Returns: None if prog not found, else path to the program [evaluates + to True] + """ + try: + return self.progs[prog] + except KeyError: + pass + + have_it = self.find_prog(prog) + # java[c] needs special care + if have_it and prog in ('java', 'javac'): + with open(os.devnull, "w") as devnull: + if subprocess.call("%s -version | grep gcj" % prog, + shell=True, + stdout=devnull, stderr=devnull) != 1: + have_it = False + # -- + self.progs[prog] = have_it + return have_it + + def check_requirements(self): + """Checks program dependencies. + + Returns: True if all mandatory programs are present, else False. + """ + do_check_has_prog = self.has + + missing_requirements = False + for prog in self.needed_progs: + if not do_check_has_prog(prog): + print("ERROR: your system lacks the '%s' program" % prog) + missing_requirements = True + + # check optional programs here, + # else they'd get checked by each worker instance + for prog in self.optional_progs: + do_check_has_prog(prog) + + return not missing_requirements + + +def get_toolchain_configs(toolchains_csv, buildrootdir): + """Fetch and return the possible toolchain configurations + + This function returns an array of toolchain configurations. Each + toolchain configuration is itself an array of lines of the defconfig. + """ + + with open(toolchains_csv) as r: + # filter empty lines and comments + lines = [ t for t in r.readlines() if len(t.strip()) > 0 and t[0] != '#' ] + toolchains = decode_byte_list(lines) + configs = [] + + (_, _, _, _, hostarch) = os.uname() + # ~2015 distros report x86 when on a 32bit install + if hostarch == 'i686' or hostarch == 'i386' or hostarch == 'x86': + hostarch = 'x86' + + for row in csv.reader(toolchains): + config = {} + configfile = row[0] + config_hostarch = row[1] + keep = False + + # Keep all toolchain configs that work regardless of the host + # architecture + if config_hostarch == "any": + keep = True + + # Keep all toolchain configs that can work on the current host + # architecture + if hostarch == config_hostarch: + keep = True + + # Assume that x86 32 bits toolchains work on x86_64 build + # machines + if hostarch == 'x86_64' and config_hostarch == "x86": + keep = True + + if not keep: + continue + + if not os.path.isabs(configfile): + configfile = os.path.join(buildrootdir, configfile) + + with open(configfile) as r: + config = r.readlines() + configs.append(config) + return configs + + +def is_toolchain_usable(configfile, config): + """Check if the toolchain is actually usable.""" + + with open(configfile) as configf: + configlines = configf.readlines() + + # Check that the toolchain configuration is still present + for toolchainline in config: + if toolchainline not in configlines: + print("WARN: toolchain can't be used", file=sys.stderr) + print(" Missing: %s" % toolchainline.strip(), file=sys.stderr) + return False + + # The latest Linaro toolchains on x86-64 hosts requires glibc + # 2.14+ on the host. + if platform.machine() == 'x86_64': + if 'BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y\n' in configlines or \ + 'BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64=y\n' in configlines or \ + 'BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB=y\n' in configlines: + ldd_version_output = subprocess.check_output(['ldd', '--version']) + glibc_version = ldd_version_output.splitlines()[0].split()[-1] + if StrictVersion('2.14') > StrictVersion(glibc_version): + print("WARN: ignoring the Linaro ARM toolchains because too old host glibc", file=sys.stderr) + return False + + return True + + +def fixup_config(configfile): + """Finalize the configuration and reject any problematic combinations + + This function returns 'True' when the configuration has been + accepted, and 'False' when the configuration has not been accepted because + it is known to fail (in which case another random configuration will be + generated). + """ + + sysinfo = SystemInfo() + with open(configfile) as configf: + configlines = configf.readlines() + + if "BR2_NEEDS_HOST_JAVA=y\n" in configlines and not sysinfo.has("java"): + return False + if "BR2_NEEDS_HOST_JAVAC=y\n" in configlines and not sysinfo.has("javac"): + return False + if "BR2_NEEDS_HOST_JAR=y\n" in configlines and not sysinfo.has("jar"): + return False + # python-nfc needs bzr + if 'BR2_PACKAGE_PYTHON_NFC=y\n' in configlines and not sysinfo.has("bzr"): + return False + # The ctng toolchain is affected by PR58854 + if 'BR2_PACKAGE_LTTNG_TOOLS=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/armv5-ctng-linux-gnueabi.tar.xz"\n' in configlines: + return False + # The ctng toolchain tigger an assembler error with guile package when compiled with -Os (same issue as for CS ARM 2014.05-29) + if 'BR2_PACKAGE_GUILE=y\n' in configlines and \ + 'BR2_OPTIMIZE_S=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/armv5-ctng-linux-gnueabi.tar.xz"\n' in configlines: + return False + # The ctng toolchain is affected by PR58854 + if 'BR2_PACKAGE_LTTNG_TOOLS=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/armv6-ctng-linux-uclibcgnueabi.tar.xz"\n' in configlines: + return False + # The ctng toolchain is affected by PR58854 + if 'BR2_PACKAGE_LTTNG_TOOLS=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/armv7-ctng-linux-gnueabihf.tar.xz"\n' in configlines: + return False + # The ctng toolchain is affected by PR60155 + if 'BR2_PACKAGE_SDL=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/powerpc-ctng-linux-uclibc.tar.xz"\n' in configlines: + return False + # The ctng toolchain is affected by PR60155 + if 'BR2_PACKAGE_LIBMPEG2=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/powerpc-ctng-linux-uclibc.tar.xz"\n' in configlines: + return False + # This MIPS toolchain uses eglibc-2.18 which lacks SYS_getdents64 + if 'BR2_PACKAGE_STRONGSWAN=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mips64el-ctng_n64-linux-gnu.tar.xz"\n' in configlines: + return False + # This MIPS toolchain uses eglibc-2.18 which lacks SYS_getdents64 + if 'BR2_PACKAGE_PYTHON3=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mips64el-ctng_n64-linux-gnu.tar.xz"\n' in configlines: + return False + # libffi not available on sh2a and ARMv7-M, but propagating libffi + # arch dependencies in Buildroot is really too much work, so we + # handle this here. + if 'BR2_sh2a=y\n' in configlines and \ + 'BR2_PACKAGE_LIBFFI=y\n' in configlines: + return False + if 'BR2_ARM_CPU_ARMV7M=y\n' in configlines and \ + 'BR2_PACKAGE_LIBFFI=y\n' in configlines: + return False + if 'BR2_PACKAGE_SUNXI_BOARDS=y\n' in configlines: + configlines.remove('BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE=""\n') + configlines.append('BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE="a10/hackberry.fex"\n') + # This MIPS uClibc toolchain fails to build the gdb package + if 'BR2_PACKAGE_GDB=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mipsel-ctng-linux-uclibc.tar.xz"\n' in configlines: + return False + # This MIPS uClibc toolchain fails to build the rt-tests package + if 'BR2_PACKAGE_RT_TESTS=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mipsel-ctng-linux-uclibc.tar.xz"\n' in configlines: + return False + # This MIPS uClibc toolchain fails to build the civetweb package + if 'BR2_PACKAGE_CIVETWEB=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mipsel-ctng-linux-uclibc.tar.xz"\n' in configlines: + return False + # This MIPS ctng toolchain fails to build the python3 package + if 'BR2_PACKAGE_PYTHON3=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mips64el-ctng_n64-linux-gnu.tar.xz"\n' in configlines: + return False + # This MIPS uClibc toolchain fails to build the strace package + if 'BR2_PACKAGE_STRACE=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mipsel-ctng-linux-uclibc.tar.xz"\n' in configlines: + return False + # This MIPS uClibc toolchain fails to build the cdrkit package + if 'BR2_PACKAGE_CDRKIT=y\n' in configlines and \ + 'BR2_STATIC_LIBS=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mipsel-ctng-linux-uclibc.tar.xz"\n' in configlines: + return False + # uClibc vfork static linking issue + if 'BR2_PACKAGE_ALSA_LIB=y\n' in configlines and \ + 'BR2_STATIC_LIBS=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/i486-ctng-linux-uclibc.tar.xz"\n' in configlines: + return False + # This MIPS uClibc toolchain fails to build the weston package + if 'BR2_PACKAGE_WESTON=y\n' in configlines and \ + 'BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mipsel-ctng-linux-uclibc.tar.xz"\n' in configlines: + return False + # The cs nios2 2017.02 toolchain is affected by binutils PR19405 + if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ + 'BR2_PACKAGE_BOOST=y\n' in configlines: + return False + # The cs nios2 2017.02 toolchain is affected by binutils PR19405 + if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ + 'BR2_PACKAGE_QT5BASE_GUI=y\n' in configlines: + return False + # The cs nios2 2017.02 toolchain is affected by binutils PR19405 + if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ + 'BR2_PACKAGE_QT_GUI_MODULE=y\n' in configlines: + return False + # The cs nios2 2017.02 toolchain is affected by binutils PR19405 + if 'BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII=y\n' in configlines and \ + 'BR2_PACKAGE_FLANN=y\n' in configlines: + return False + # or1k affected by binutils PR21464 + if 'BR2_or1k=y\n' in configlines and \ + 'BR2_PACKAGE_QT_GUI_MODULE=y\n' in configlines: + return False + + with open(configfile, "w+") as configf: + configf.writelines(configlines) + + return True + + +def gen_config(args): + """Generate a new random configuration + + This function generates the configuration, by choosing a random + toolchain configuration and then generating a random selection of + packages. + """ + + # Select a random toolchain configuration + configs = get_toolchain_configs(args.toolchains_csv, args.buildrootdir) + + i = randint(0, len(configs) - 1) + toolchainconfig = configs[i] + + configlines = list(toolchainconfig) + + # Combine with the minimal configuration + minimalconfigfile = os.path.join(args.buildrootdir, + 'support/config-fragments/minimal.config') + with open(minimalconfigfile) as minimalf: + configlines += minimalf.readlines() + + # Allow hosts with old certificates to download over https + configlines.append("BR2_WGET=\"wget --passive-ftp -nd -t 3 --no-check-certificate\"") + + # Amend the configuration with a few things. + if randint(0, 20) == 0: + configlines.append("BR2_ENABLE_DEBUG=y\n") + if randint(0, 1) == 0: + configlines.append("BR2_INIT_BUSYBOX=y\n") + elif randint(0, 15) == 0: + configlines.append("BR2_INIT_SYSTEMD=y\n") + elif randint(0, 10) == 0: + configlines.append("BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y\n") + if randint(0, 20) == 0: + configlines.append("BR2_STATIC_LIBS=y\n") + if randint(0, 20) == 0: + configlines.append("BR2_PACKAGE_PYTHON_PY_ONLY=y\n") + + # Write out the configuration file + if not os.path.exists(args.outputdir): + os.makedirs(args.outputdir) + if args.outputdir == os.path.abspath(os.path.join(args.buildrootdir, "output")): + configfile = os.path.join(args.buildrootdir, ".config") + else: + configfile = os.path.join(args.outputdir, ".config") + with open(configfile, "w+") as configf: + configf.writelines(configlines) + + subprocess.check_call(["make", "O=%s" % args.outputdir, "-C", args.buildrootdir, + "olddefconfig"]) + + if not is_toolchain_usable(configfile, toolchainconfig): + return 2 + + # Now, generate the random selection of packages, and fixup + # things if needed. + # Safe-guard, in case we can not quickly come to a valid + # configuration: allow at most 100 (arbitrary) iterations. + bounded_loop = 100 + while True: + if bounded_loop == 0: + print("ERROR: cannot generate random configuration after 100 iterations", + file=sys.stderr) + return 1 + bounded_loop -= 1 + subprocess.check_call(["make", "O=%s" % args.outputdir, "-C", args.buildrootdir, + "KCONFIG_PROBABILITY=%d" % randint(1, 30), + "randpackageconfig"]) + + if fixup_config(configfile): + break + + subprocess.check_call(["make", "O=%s" % args.outputdir, "-C", args.buildrootdir, + "olddefconfig"]) + + subprocess.check_call(["make", "O=%s" % args.outputdir, "-C", args.buildrootdir, + "savedefconfig"]) + + return subprocess.call(["make", "O=%s" % args.outputdir, "-C", args.buildrootdir, + "core-dependencies"]) + + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser(description="Generate a random configuration") + parser.add_argument("--outputdir", "-o", + help="Output directory (relative to current directory)", + type=str, default='output') + parser.add_argument("--buildrootdir", "-b", + help="Buildroot directory (relative to current directory)", + type=str, default='.') + parser.add_argument("--toolchains-csv", + help="Path of the toolchain configuration file", + type=str, + default="support/config-fragments/autobuild/toolchain-configs.csv") + args = parser.parse_args() + + # We need the absolute path to use with O=, because the relative + # path to the output directory here is not relative to the + # Buildroot sources, but to the current directory. + args.outputdir = os.path.abspath(args.outputdir) + + try: + ret = gen_config(args) + except Exception as e: + print(str(e), file=sys.stderr) + parser.exit(1) + parser.exit(ret) diff --git a/buildroot/utils/get-developers b/buildroot/utils/get-developers new file mode 100755 index 0000000..f525ff2 --- /dev/null +++ b/buildroot/utils/get-developers @@ -0,0 +1,101 @@ +#!/usr/bin/env python + +import argparse +import getdeveloperlib +import sys +import os + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument('patches', metavar='P', type=argparse.FileType('r'), nargs='*', + help='list of patches (use - to read patches from stdin)') + parser.add_argument('-a', dest='architecture', action='store', + help='find developers in charge of this architecture') + parser.add_argument('-p', dest='package', action='store', + help='find developers in charge of this package') + parser.add_argument('-f', dest='files', nargs='*', + help='find developers in charge of these files') + parser.add_argument('-c', dest='check', action='store_const', + const=True, help='list files not handled by any developer') + return parser.parse_args() + + +def __main__(): + devs = getdeveloperlib.parse_developers() + if devs is None: + sys.exit(1) + args = parse_args() + + # Check that only one action is given + action = 0 + if args.architecture is not None: + action += 1 + if args.package is not None: + action += 1 + if args.files: + action += 1 + if args.check: + action += 1 + if len(args.patches) != 0: + action += 1 + if action > 1: + print("Cannot do more than one action") + return + if action == 0: + print("No action specified") + return + + # Handle the check action + if args.check: + files = getdeveloperlib.check_developers(devs) + for f in files: + print(f) + + # Handle the architecture action + if args.architecture is not None: + for dev in devs: + if args.architecture in dev.architectures: + print(dev.name) + return + + # Handle the package action + if args.package is not None: + for dev in devs: + if args.package in dev.packages: + print(dev.name) + return + + # Handle the files action + if args.files is not None: + args.files = [os.path.abspath(f) for f in args.files] + for dev in devs: + for devfile in dev.files: + commonfiles = [f for f in args.files if f.startswith(devfile)] + if commonfiles: + print(dev.name) + break + + # Handle the patches action + if len(args.patches) != 0: + (files, infras) = getdeveloperlib.analyze_patches(args.patches) + matching_devs = set() + for dev in devs: + # See if we have developers matching by package name + for f in files: + if dev.hasfile(f): + matching_devs.add(dev.name) + # See if we have developers matching by package infra + for i in infras: + if i in dev.infras: + matching_devs.add(dev.name) + + result = "--to buildroot@buildroot.org" + for dev in matching_devs: + result += " --cc \"%s\"" % dev + + if result != "": + print("git send-email %s" % result) + + +__main__() diff --git a/buildroot/utils/getdeveloperlib.py b/buildroot/utils/getdeveloperlib.py new file mode 100644 index 0000000..2c8d477 --- /dev/null +++ b/buildroot/utils/getdeveloperlib.py @@ -0,0 +1,210 @@ +import os +import re +import glob +import subprocess + +# +# Patch parsing functions +# + +FIND_INFRA_IN_PATCH = re.compile("^\+\$\(eval \$\((host-)?([^-]*)-package\)\)$") + + +def analyze_patch(patch): + """Parse one patch and return the list of files modified, added or + removed by the patch.""" + files = set() + infras = set() + for line in patch: + # If the patch is adding a package, find which infra it is + m = FIND_INFRA_IN_PATCH.match(line) + if m: + infras.add(m.group(2)) + if not line.startswith("+++ "): + continue + line.strip() + fname = line[line.find("/") + 1:].strip() + if fname == "dev/null": + continue + files.add(fname) + return (files, infras) + + +FIND_INFRA_IN_MK = re.compile("^\$\(eval \$\((host-)?([^-]*)-package\)\)$") + + +def fname_get_package_infra(fname): + """Checks whether the file name passed as argument is a Buildroot .mk + file describing a package, and find the infrastructure it's using.""" + if not fname.endswith(".mk"): + return None + + if not os.path.exists(fname): + return None + + with open(fname, "r") as f: + for line in f: + line = line.strip() + m = FIND_INFRA_IN_MK.match(line) + if m: + return m.group(2) + return None + + +def get_infras(files): + """Search in the list of files for .mk files, and collect the package + infrastructures used by those .mk files.""" + infras = set() + for fname in files: + infra = fname_get_package_infra(fname) + if infra: + infras.add(infra) + return infras + + +def analyze_patches(patches): + """Parse a list of patches and returns the list of files modified, + added or removed by the patches, as well as the list of package + infrastructures used by those patches (if any)""" + allfiles = set() + allinfras = set() + for patch in patches: + (files, infras) = analyze_patch(patch) + allfiles = allfiles | files + allinfras = allinfras | infras + allinfras = allinfras | get_infras(allfiles) + return (allfiles, allinfras) + + +# +# DEVELOPERS file parsing functions +# + +class Developer: + def __init__(self, name, files): + self.name = name + self.files = files + self.packages = parse_developer_packages(files) + self.architectures = parse_developer_architectures(files) + self.infras = parse_developer_infras(files) + + def hasfile(self, f): + f = os.path.abspath(f) + for fs in self.files: + if f.startswith(fs): + return True + return False + + +def parse_developer_packages(fnames): + """Given a list of file patterns, travel through the Buildroot source + tree to find which packages are implemented by those file + patterns, and return a list of those packages.""" + packages = set() + for fname in fnames: + for root, dirs, files in os.walk(fname): + for f in files: + path = os.path.join(root, f) + if fname_get_package_infra(path): + pkg = os.path.splitext(f)[0] + packages.add(pkg) + return packages + + +def parse_arches_from_config_in(fname): + """Given a path to an arch/Config.in.* file, parse it to get the list + of BR2_ARCH values for this architecture.""" + arches = set() + with open(fname, "r") as f: + parsing_arches = False + for line in f: + line = line.strip() + if line == "config BR2_ARCH": + parsing_arches = True + continue + if parsing_arches: + m = re.match("^\s*default \"([^\"]*)\".*", line) + if m: + arches.add(m.group(1)) + else: + parsing_arches = False + return arches + + +def parse_developer_architectures(fnames): + """Given a list of file names, find the ones starting by + 'arch/Config.in.', and use that to determine the architecture a + developer is working on.""" + arches = set() + for fname in fnames: + if not re.match("^.*/arch/Config\.in\..*$", fname): + continue + arches = arches | parse_arches_from_config_in(fname) + return arches + + +def parse_developer_infras(fnames): + infras = set() + for fname in fnames: + m = re.match("^package/pkg-([^.]*).mk$", fname) + if m: + infras.add(m.group(1)) + return infras + + +def parse_developers(basepath=None): + """Parse the DEVELOPERS file and return a list of Developer objects.""" + developers = [] + linen = 0 + if basepath is None: + basepath = os.getcwd() + with open(os.path.join(basepath, "DEVELOPERS"), "r") as f: + files = [] + name = None + for line in f: + line = line.strip() + if line.startswith("#"): + continue + elif line.startswith("N:"): + if name is not None or len(files) != 0: + print("Syntax error in DEVELOPERS file, line %d" % linen) + name = line[2:].strip() + elif line.startswith("F:"): + fname = line[2:].strip() + dev_files = glob.glob(os.path.join(basepath, fname)) + if len(dev_files) == 0: + print("WARNING: '%s' doesn't match any file" % fname) + files += dev_files + elif line == "": + if not name: + continue + developers.append(Developer(name, files)) + files = [] + name = None + else: + print("Syntax error in DEVELOPERS file, line %d: '%s'" % (linen, line)) + return None + linen += 1 + # handle last developer + if name is not None: + developers.append(Developer(name, files)) + return developers + + +def check_developers(developers, basepath=None): + """Look at the list of files versioned in Buildroot, and returns the + list of files that are not handled by any developer""" + if basepath is None: + basepath = os.getcwd() + cmd = ["git", "--git-dir", os.path.join(basepath, ".git"), "ls-files"] + files = subprocess.check_output(cmd).strip().split("\n") + unhandled_files = [] + for f in files: + handled = False + for d in developers: + if d.hasfile(os.path.join(basepath, f)): + handled = True + break + if not handled: + unhandled_files.append(f) + return unhandled_files diff --git a/buildroot/utils/readme.txt b/buildroot/utils/readme.txt new file mode 100644 index 0000000..3064ece --- /dev/null +++ b/buildroot/utils/readme.txt @@ -0,0 +1,45 @@ +This directory contains various useful scripts and tools for working +with Buildroot. You need not add this directory in your PATH to use +any of those tools, but you may do so if you want. + +brmake + a script that can be run instead of make, that prepends the date in + front of each line, redirects all of the build output to a file + ("'br.log' in the current directory), and just outputs the Buildroot + messages (those lines starting with >>>) on stdout. + Do not run this script for interactive configuration (e.g. menuconfig) + or on an unconfigured directory. The output is redirected so you will see + nothing. + +check-package + a script that checks the coding style of a package's Config.in and + .mk files, and also tests them for various types of typoes. + +genrandconfig + a script that generates a random configuration, used by the autobuilders + (http://autobuild.buildroot.org). It selects a random toolchain from + support/config-fragments/autobuild and randomly selects packages to build. + +get-developpers + a script to return the list of people interested in a specific part + of Buildroot, so they can be Cc:ed on a mail. Accepts a patch as + input, a package name or and architecture name. + +scancpan + a script to create a Buildroot package by scanning a CPAN module + description. + +scanpypi + a script to create a Buildroot package by scanning a PyPI package + description. + +size-stats-compare + a script to compare the rootfs size between two different Buildroot + configurations. This can be used to identify the size impact of + a specific option, of a set of specific options, or of an update + to a newer Buildroot version... + +test-pkg + a script that tests a specific package against a set of various + toolchains, with the goal to detect toolchain-related dependencies + (wchar, threads...) diff --git a/buildroot/utils/scancpan b/buildroot/utils/scancpan new file mode 100755 index 0000000..6d1cdc5 --- /dev/null +++ b/buildroot/utils/scancpan @@ -0,0 +1,864 @@ +#!/usr/bin/env perl + +# This chunk of stuff was generated by App::FatPacker. To find the original +# file's code, look for the end of this BEGIN block or the string 'FATPACK' +BEGIN { +my %fatpacked; + +$fatpacked{"MetaCPAN/API/Tiny.pm"} = <<'METACPAN_API_TINY'; + package MetaCPAN::API::Tiny; + { + $MetaCPAN::API::Tiny::VERSION = '1.131730'; + } + use strict; + use warnings; + # ABSTRACT: A Tiny API client for MetaCPAN + + use Carp; + use JSON::PP 'encode_json', 'decode_json'; + use HTTP::Tiny; + + + sub new { + my ($class, @args) = @_; + + $#_ % 2 == 0 + or croak 'Arguments must be provided as name/value pairs'; + + my %params = @args; + + die 'ua_args must be an array reference' + if $params{ua_args} && ref($params{ua_args}) ne 'ARRAY'; + + my $self = +{ + base_url => $params{base_url} || 'http://api.metacpan.org/v0', + ua => $params{ua} || HTTP::Tiny->new( + $params{ua_args} + ? @{$params{ua_args}} + : (agent => 'MetaCPAN::API::Tiny/' + . ($MetaCPAN::API::VERSION || 'xx'))), + }; + + return bless($self, $class); + } + + sub _build_extra_params { + my $self = shift; + + @_ % 2 == 0 + or croak 'Incorrect number of params, must be key/value'; + + my %extra = @_; + my $ua = $self->{ua}; + + foreach my $key (keys %extra) + { + # The implementation in HTTP::Tiny uses + instead of %20, fix that + $extra{$key} = $ua->_uri_escape($extra{$key}); + $extra{$key} =~ s/\+/%20/g; + } + + my $params = join '&', map { "$_=" . $extra{$_} } sort keys %extra; + + return $params; + } + + + # /source/{author}/{release}/{path} + sub source { + my $self = shift; + my %opts = @_ ? @_ : (); + my $url = ''; + my $error = "Provide 'author' and 'release' and 'path'"; + + %opts or croak $error; + + if ( + defined ( my $author = $opts{'author'} ) && + defined ( my $release = $opts{'release'} ) && + defined ( my $path = $opts{'path'} ) + ) { + $url = "source/$author/$release/$path"; + } else { + croak $error; + } + + $url = $self->{base_url} . "/$url"; + + my $result = $self->{ua}->get($url); + $result->{'success'} + or croak "Failed to fetch '$url': " . $result->{'reason'}; + + return $result->{'content'}; + } + + + # /release/{distribution} + # /release/{author}/{release} + sub release { + my $self = shift; + my %opts = @_ ? @_ : (); + my $url = ''; + my $error = "Either provide 'distribution', or 'author' and 'release', " . + "or 'search'"; + + %opts or croak $error; + + my %extra_opts = (); + + if ( defined ( my $dist = $opts{'distribution'} ) ) { + $url = "release/$dist"; + } elsif ( + defined ( my $author = $opts{'author'} ) && + defined ( my $release = $opts{'release'} ) + ) { + $url = "release/$author/$release"; + } elsif ( defined ( my $search_opts = $opts{'search'} ) ) { + ref $search_opts && ref $search_opts eq 'HASH' + or croak $error; + + %extra_opts = %{$search_opts}; + $url = 'release/_search'; + } else { + croak $error; + } + + return $self->fetch( $url, %extra_opts ); + } + + + # /pod/{module} + # /pod/{author}/{release}/{path} + sub pod { + my $self = shift; + my %opts = @_ ? @_ : (); + my $url = ''; + my $error = "Either provide 'module' or 'author and 'release' and 'path'"; + + %opts or croak $error; + + if ( defined ( my $module = $opts{'module'} ) ) { + $url = "pod/$module"; + } elsif ( + defined ( my $author = $opts{'author'} ) && + defined ( my $release = $opts{'release'} ) && + defined ( my $path = $opts{'path'} ) + ) { + $url = "pod/$author/$release/$path"; + } else { + croak $error; + } + + # check content-type + my %extra = (); + if ( defined ( my $type = $opts{'content-type'} ) ) { + $type =~ m{^ text/ (?: html|plain|x-pod|x-markdown ) $}x + or croak 'Incorrect content-type provided'; + + $extra{headers}{'content-type'} = $type; + } + + $url = $self->{base_url}. "/$url"; + + my $result = $self->{ua}->get( $url, \%extra ); + $result->{'success'} + or croak "Failed to fetch '$url': " . $result->{'reason'}; + + return $result->{'content'}; + } + + + # /module/{module} + sub module { + my $self = shift; + my $name = shift; + + $name or croak 'Please provide a module name'; + + return $self->fetch("module/$name"); + } + + + # file() is a synonym of module + sub file { goto &module } + + + # /author/{author} + sub author { + my $self = shift; + my ( $pause_id, $url, %extra_opts ); + + if ( @_ == 1 ) { + $url = 'author/' . shift; + } elsif ( @_ == 2 ) { + my %opts = @_; + + if ( defined $opts{'pauseid'} ) { + $url = "author/" . $opts{'pauseid'}; + } elsif ( defined $opts{'search'} ) { + my $search_opts = $opts{'search'}; + + ref $search_opts && ref $search_opts eq 'HASH' + or croak "'search' key must be hashref"; + + %extra_opts = %{$search_opts}; + $url = 'author/_search'; + } else { + croak 'Unknown option given'; + } + } else { + croak 'Please provide an author PAUSEID or a "search"'; + } + + return $self->fetch( $url, %extra_opts ); + } + + + + sub fetch { + my $self = shift; + my $url = shift; + my $extra = $self->_build_extra_params(@_); + my $base = $self->{base_url}; + my $req_url = $extra ? "$base/$url?$extra" : "$base/$url"; + + my $result = $self->{ua}->get($req_url); + return $self->_decode_result( $result, $req_url ); + } + + + sub post { + my $self = shift; + my $url = shift; + my $query = shift; + my $base = $self->{base_url}; + + defined $url + or croak 'First argument of URL must be provided'; + + ref $query and ref $query eq 'HASH' + or croak 'Second argument of query hashref must be provided'; + + my $query_json = encode_json( $query ); + my $result = $self->{ua}->request( + 'POST', + "$base/$url", + { + headers => { 'Content-Type' => 'application/json' }, + content => $query_json, + } + ); + + return $self->_decode_result( $result, $url, $query_json ); + } + + sub _decode_result { + my $self = shift; + my ( $result, $url, $original ) = @_; + my $decoded_result; + + ref $result and ref $result eq 'HASH' + or croak 'First argument must be hashref'; + + defined $url + or croak 'Second argument of a URL must be provided'; + + if ( defined ( my $success = $result->{'success'} ) ) { + my $reason = $result->{'reason'} || ''; + $reason .= ( defined $original ? " (request: $original)" : '' ); + + $success or croak "Failed to fetch '$url': $reason"; + } else { + croak 'Missing success in return value'; + } + + defined ( my $content = $result->{'content'} ) + or croak 'Missing content in return value'; + + eval { $decoded_result = decode_json $content; 1 } + or do { croak "Couldn't decode '$content': $@" }; + + return $decoded_result; + } + + 1; + + __END__ + + =pod + + =head1 NAME + + MetaCPAN::API::Tiny - A Tiny API client for MetaCPAN + + =head1 VERSION + + version 1.131730 + + =head1 DESCRIPTION + + This is the Tiny version of L. It implements a compatible API + with a few notable exceptions: + + =over 4 + + =item Attributes are direct hash access + + The attributes defined using Mo(o|u)se are now accessed via the blessed hash + directly. There are no accessors defined to access this elements. + + =item Exception handling + + Instead of using Try::Tiny, raw evals are used. This could potentially cause + issues, so just be aware. + + =item Testing + + Test::Fatal was replaced with an eval implementation of exception(). + Test::TinyMocker usage is retained, but may be absorbed since it is pure perl + + =back + + =head1 CLASS_METHODS + + =head2 new + + new is the constructor for MetaCPAN::API::Tiny. In the non-tiny version of this + module, this is provided via Any::Moose built from the attributes defined. In + the tiny version, we define our own constructor. It takes the same arguments + and provides similar checks to MetaCPAN::API with regards to arguments passed. + + =head1 PUBLIC_METHODS + + =head2 source + + my $source = $mcpan->source( + author => 'DOY', + release => 'Moose-2.0201', + path => 'lib/Moose.pm', + ); + + Searches MetaCPAN for a module or a specific release and returns the plain source. + + =head2 release + + my $result = $mcpan->release( distribution => 'Moose' ); + + # or + my $result = $mcpan->release( author => 'DOY', release => 'Moose-2.0001' ); + + Searches MetaCPAN for a dist. + + You can do complex searches using 'search' parameter: + + # example lifted from MetaCPAN docs + my $result = $mcpan->release( + search => { + author => "OALDERS AND ", + filter => "status:latest", + fields => "name", + size => 1, + }, + ); + + =head2 pod + + my $result = $mcpan->pod( module => 'Moose' ); + + # or + my $result = $mcpan->pod( + author => 'DOY', + release => 'Moose-2.0201', + path => 'lib/Moose.pm', + ); + + Searches MetaCPAN for a module or a specific release and returns the POD. + + =head2 module + + my $result = $mcpan->module('MetaCPAN::API'); + + Searches MetaCPAN and returns a module's ".pm" file. + + =head2 file + + A synonym of L + + =head2 author + + my $result1 = $mcpan->author('XSAWYERX'); + my $result2 = $mcpan->author( pauseid => 'XSAWYERX' ); + + Searches MetaCPAN for a specific author. + + You can do complex searches using 'search' parameter: + + # example lifted from MetaCPAN docs + my $result = $mcpan->author( + search => { + q => 'profile.name:twitter', + size => 1, + }, + ); + + =head2 fetch + + my $result = $mcpan->fetch('/release/distribution/Moose'); + + # with parameters + my $more = $mcpan->fetch( + '/release/distribution/Moose', + param => 'value', + ); + + This is a helper method for API implementations. It fetches a path from MetaCPAN, decodes the JSON from the content variable and returns it. + + You don't really need to use it, but you can in case you want to write your own extension implementation to MetaCPAN::API. + + It accepts an additional hash as "GET" parameters. + + =head2 post + + # /release&content={"query":{"match_all":{}},"filter":{"prefix":{"archive":"Cache-Cache-1.06"}}} + my $result = $mcpan->post( + 'release', + { + query => { match_all => {} }, + filter => { prefix => { archive => 'Cache-Cache-1.06' } }, + }, + ); + + The POST equivalent of the "fetch()" method. It gets the path and JSON request. + + =head1 THANKS + + Overall the tests and code were ripped directly from MetaCPAN::API and + tiny-fied. A big thanks to Sawyer X for writing the original module. + + =head1 AUTHOR + + Nicholas R. Perez + + =head1 COPYRIGHT AND LICENSE + + This software is copyright (c) 2013 by Nicholas R. Perez . + + This is free software; you can redistribute it and/or modify it under + the same terms as the Perl 5 programming language system itself. + + =cut +METACPAN_API_TINY + +s/^ //mg for values %fatpacked; + +unshift @INC, sub { + if (my $fat = $fatpacked{$_[1]}) { + if ($] < 5.008) { + return sub { + return 0 unless length $fat; + $fat =~ s/^([^\n]*\n?)//; + $_ = $1; + return 1; + }; + } + open my $fh, '<', \$fat + or die "FatPacker error loading $_[1] (could be a perl installation issue?)"; + return $fh; + } + return +}; + +} # END OF FATPACK CODE + + +use 5.010; +use strict; +use warnings; +use Fatal qw(open close); + +use Getopt::Long; +use Pod::Usage; +use File::Basename; +use Module::CoreList; +use HTTP::Tiny; +use Safe; +use MetaCPAN::API::Tiny; + +# Below, 5.026 should be aligned with the version of perl actually +# bundled in Buildroot: +die <<"MSG" if $] < 5.026; +This script needs a host perl with the same major version as Buildroot target perl. + +Your current host perl is: + $^X + version $] + +You may install a local one by running: + perlbrew install perl-5.26.0 +MSG + +my ($help, $man, $quiet, $force, $recommend, $test, $host); +my $target = 1; +GetOptions( 'help|?' => \$help, + 'man' => \$man, + 'quiet|q' => \$quiet, + 'force|f' => \$force, + 'host!' => \$host, + 'target!' => \$target, + 'recommend' => \$recommend, + 'test' => \$test +) or pod2usage(-exitval => 1); +pod2usage(-exitval => 0) if $help; +pod2usage(-exitval => 0, -verbose => 2) if $man; +pod2usage(-exitval => 1) if scalar @ARGV == 0; + +my %dist; # name -> metacpan data +my %need_target; # name -> 1 if target package is needed +my %need_host; # name -> 1 if host package is needed +my %need_dlopen; # name -> 1 if requires dynamic library +my %deps_build; # name -> list of host dependencies +my %deps_runtime; # name -> list of target dependencies +my %deps_optional; # name -> list of optional target dependencies +my %license_files; # name -> list of license files +my %checksum; # author -> list of checksum +my $mirror = 'http://cpan.metacpan.org'; # a CPAN mirror +my $mcpan = MetaCPAN::API::Tiny->new(base_url => 'http://fastapi.metacpan.org/v1'); +my $ua = HTTP::Tiny->new(); + +sub get_checksum { + my ($url) = @_; + my ($path) = $url =~ m|^[^:/?#]+://[^/?#]*([^?#]*)|; + my ($basename, $dirname) = fileparse( $path ); + unless ($checksum{$dirname}) { + my $url = $mirror . $dirname . q{CHECKSUMS}; + my $response = $ua->get($url); + $checksum{$dirname} = $response->{content}; + } + my $chksum = Safe->new->reval($checksum{$dirname}); + return $chksum->{$basename}, $basename; +} + +sub is_xs { + my ($manifest) = @_; + # This heuristic determines if a module is a native extension, by searching + # some file extension types in the MANIFEST of the distribution. + # It was inspired by http://deps.cpantesters.org/static/purity.html + return $manifest =~ m/\.(swg|xs|c|h|i)[\n\s]/; +} + +sub find_license_files { + my ($manifest) = @_; + my @license_files; + foreach (split /\n/, $manifest) { + next if m|/|; + push @license_files, $_ if m/(ARTISTIC|COPYING|COPYRIGHT|LICENSE)/i; + } + if (scalar @license_files == 0 && $manifest =~ m/(README)[\n\s]/i) { + @license_files = ($1); + } + return \@license_files; +} + +sub fetch { + my ($name, $need_target, $need_host, $top) = @_; + $need_target{$name} = $need_target if $need_target; + $need_host{$name} = $need_host if $need_host; + unless ($dist{$name} && !$top) { + say qq{fetch ${name}} unless $quiet; + my $result = $mcpan->release( distribution => $name ); + $dist{$name} = $result; + eval { + my $manifest = $mcpan->source( author => $result->{author}, + release => $name . q{-} . $result->{version}, + path => 'MANIFEST' ); + $need_dlopen{$name} = is_xs( $manifest ); + $license_files{$name} = find_license_files( $manifest ); + }; + if ($@) { + warn $@; + $license_files{$name} = []; + } + my %build = (); + my %runtime = (); + my %optional = (); + foreach my $dep (@{$result->{dependency}}) { + my $modname = ${$dep}{module}; + next if $modname eq q{perl}; + next if $modname =~ m|^Alien|; + next if $modname =~ m|^Win32|; + next if !($test && $top) && $modname =~ m|^Test|; + next if Module::CoreList::is_core( $modname, undef, $] ); + # we could use the host Module::CoreList data, because host perl and + # target perl have the same major version + next if ${$dep}{phase} eq q{develop}; + next if !($test && $top) && ${$dep}{phase} eq q{test}; + my $distname = $mcpan->module( $modname )->{distribution}; + if (${$dep}{phase} eq q{runtime}) { + if (${$dep}{relationship} eq q{requires}) { + $runtime{$distname} = 1; + } + else { + $optional{$distname} = 1 if $recommend && $top; + } + } + else { # configure, build + $build{$distname} = 1; + } + } + $deps_build{$name} = [keys %build]; + $deps_runtime{$name} = [keys %runtime]; + $deps_optional{$name} = [keys %optional]; + foreach my $distname (@{$deps_build{$name}}) { + fetch( $distname, 0, 1 ); + } + foreach my $distname (@{$deps_runtime{$name}}) { + fetch( $distname, $need_target, $need_host ); + $need_dlopen{$name} ||= $need_dlopen{$distname}; + } + foreach my $distname (@{$deps_optional{$name}}) { + fetch( $distname, $need_target, $need_host ); + } + } + return; +} + +foreach my $distname (@ARGV) { + # Command-line's distributions + fetch( $distname, !!$target, !!$host, 1 ); +} +say scalar keys %dist, q{ packages fetched.} unless $quiet; + +# Buildroot package name: lowercase +sub fsname { + my $name = shift; + $name =~ s|_|-|g; + return q{perl-} . lc $name; +} + +# Buildroot variable name: uppercase +sub brname { + my $name = shift; + $name =~ s|-|_|g; + return uc $name; +} + +while (my ($distname, $dist) = each %dist) { + my $fsname = fsname( $distname ); + my $dirname = q{package/} . $fsname; + my $cfgname = $dirname . q{/Config.in}; + my $mkname = $dirname . q{/} . $fsname . q{.mk}; + my $hashname = $dirname . q{/} . $fsname . q{.hash}; + my $brname = brname( $fsname ); + mkdir $dirname unless -d $dirname; + if ($need_target{$distname} && ($force || !-f $cfgname)) { + my $abstract = $dist->{abstract}; + my $homepage = $dist->{resources}->{homepage} || qq{https://metacpan.org/release/${distname}}; + say qq{write ${cfgname}} unless $quiet; + open my $fh, q{>}, $cfgname; + say {$fh} qq{config BR2_PACKAGE_${brname}}; + say {$fh} qq{\tbool "${fsname}"}; + say {$fh} qq{\tdepends on !BR2_STATIC_LIBS} if $need_dlopen{$distname}; + foreach my $dep (sort @{$deps_runtime{$distname}}) { + my $brdep = brname( fsname( $dep ) ); + say {$fh} qq{\tselect BR2_PACKAGE_${brdep}}; + } + say {$fh} qq{\thelp}; + say {$fh} qq{\t ${abstract}\n} if $abstract; + say {$fh} qq{\t ${homepage}}; + if ($need_dlopen{$distname}) { + say {$fh} qq{\ncomment "${fsname} needs a toolchain w/ dynamic library"}; + say {$fh} qq{\tdepends on BR2_STATIC_LIBS}; + } + close $fh; + } + if ($force || !-f $mkname) { + my $version = $dist->{version}; + my ($path) = $dist->{download_url} =~ m|^[^:/?#]+://[^/?#]*([^?#]*)|; + # this URL contains only the scheme, auth and path parts (but no query and fragment parts) + # the scheme is not used, because the job is done by the BR download infrastructure + # the auth part is not used, because we use $(BR2_CPAN_MIRROR) + my ($filename, $directories, $suffix) = fileparse( $path, q{tar.gz}, q{tgz} ); + $directories =~ s|/$||; + my $dependencies = join q{ }, map( { q{host-} . fsname( $_ ); } sort @{$deps_build{$distname}} ), + map( { fsname( $_ ); } sort @{$deps_runtime{$distname}} ); + my $host_dependencies = join q{ }, map { q{host-} . fsname( $_ ); } sort( @{$deps_build{$distname}}, + @{$deps_runtime{$distname}} ); + my $license = ref $dist->{license} eq 'ARRAY' + ? join q{ or }, @{$dist->{license}} + : $dist->{license}; + # BR requires license name as in http://spdx.org/licenses/ + $license =~ s|apache_2_0|Apache-2.0|; + $license =~ s|artistic_2|Artistic-2.0|; + $license =~ s|mit|MIT|; + $license =~ s|openssl|OpenSSL|; + $license =~ s|perl_5|Artistic or GPL-1.0+|; + my $license_files = join q{ }, @{$license_files{$distname}}; + say qq{write ${mkname}} unless $quiet; + open my $fh, q{>}, $mkname; + say {$fh} qq{################################################################################}; + say {$fh} qq{#}; + say {$fh} qq{# ${fsname}}; + say {$fh} qq{#}; + say {$fh} qq{################################################################################}; + say {$fh} qq{}; + say {$fh} qq{${brname}_VERSION = ${version}}; + say {$fh} qq{${brname}_SOURCE = ${distname}-\$(${brname}_VERSION).${suffix}}; + say {$fh} qq{${brname}_SITE = \$(BR2_CPAN_MIRROR)${directories}}; + say {$fh} qq{${brname}_DEPENDENCIES = ${dependencies}} if $need_target{$distname} && $dependencies; + say {$fh} qq{HOST_${brname}_DEPENDENCIES = ${host_dependencies}} if $need_host{$distname} && $host_dependencies; + say {$fh} qq{${brname}_LICENSE = ${license}} if $license && $license ne q{unknown}; + say {$fh} qq{${brname}_LICENSE_FILES = ${license_files}} if $license_files; + say {$fh} qq{}; + foreach (sort @{$deps_optional{$distname}}) { + next if grep { $_ eq $distname; } @{$deps_runtime{$_}}; # avoid cyclic dependencies + my $opt_brname = brname( $_ ); + my $opt_fsname = fsname( $_ ); + say {$fh} qq{ifeq (\$(BR2_PACKAGE_PERL_${opt_brname}),y)}; + say {$fh} qq{${brname}_DEPENDENCIES += ${opt_fsname}}; + say {$fh} qq{endif}; + say {$fh} qq{}; + } + say {$fh} qq{\$(eval \$(perl-package))} if $need_target{$distname}; + say {$fh} qq{\$(eval \$(host-perl-package))} if $need_host{$distname}; + close $fh; + } + if ($force || !-f $hashname) { + my ($checksum, $filename) = get_checksum($dist->{download_url}); + my $md5 = $checksum->{md5}; + my $sha256 = $checksum->{sha256}; + say qq{write ${hashname}} unless $quiet; + open my $fh, q{>}, $hashname; + say {$fh} qq{# retrieved by scancpan from ${mirror}/}; + say {$fh} qq{md5 ${md5} ${filename}}; + say {$fh} qq{sha256 ${sha256} ${filename}}; + close $fh; + } +} + +my %pkg; +my $cfgname = q{package/Config.in}; +if (-f $cfgname) { + open my $fh, q{<}, $cfgname; + while (<$fh>) { + chomp; + $pkg{$_} = 1 if m|package/perl-|; + } + close $fh; +} + +foreach my $distname (keys %need_target) { + my $fsname = fsname( $distname ); + $pkg{qq{\tsource "package/${fsname}/Config.in"}} = 1; +} + +say qq{${cfgname} must contain the following lines:}; +say join qq{\n}, sort keys %pkg; + +__END__ + +=head1 NAME + +utils/scancpan Try-Tiny Moo + +=head1 SYNOPSIS + +supports/scripts/scancpan [options] [distname ...] + + Options: + -help + -man + -quiet + -force + -target/-notarget + -host/-nohost + -recommend + -test + +=head1 OPTIONS + +=over 8 + +=item B<-help> + +Prints a brief help message and exits. + +=item B<-man> + +Prints the manual page and exits. + +=item B<-quiet> + +Executes without output + +=item B<-force> + +Forces the overwriting of existing files. + +=item B<-target/-notarget> + +Switches package generation for the target variant (the default is C<-target>). + +=item B<-host/-nohost> + +Switches package generation for the host variant (the default is C<-nohost>). + +=item B<-recommend> + +Adds I dependencies. + +=item B<-test> + +Adds dependencies for test. + +=back + +=head1 DESCRIPTION + +This script creates templates of the Buildroot package files for all the +Perl/CPAN distributions required by the specified distnames. The +dependencies and metadata are fetched from https://metacpan.org/. + +After running this script, it is necessary to check the generated files. +You have to manually add the license files (PERL_FOO_LICENSE_FILES variable). +For distributions that link against a target library, you have to add the +buildroot package name for that library to the DEPENDENCIES variable. + +See the Buildroot documentation for details on the usage of the Perl +infrastructure. + +The major version of the host perl must be aligned on the target one, +in order to work with the right CoreList data. + +=head1 LICENSE + +Copyright (C) 2013-2017 by Francois Perrad + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +This script is a part of Buildroot. + +This script requires the module C (version 1.131730) +which was included at the beginning of this file by the tool C. + +See L. + +See L. + +These both libraries are free software and may be distributed under the same +terms as perl itself. + +And perl may be distributed under the terms of Artistic v1 or GPL v1 license. + +=cut diff --git a/buildroot/utils/scanpypi b/buildroot/utils/scanpypi new file mode 100755 index 0000000..bc593e0 --- /dev/null +++ b/buildroot/utils/scanpypi @@ -0,0 +1,705 @@ +#!/usr/bin/env python2 +""" + +Utility for building Buildroot packages for existing PyPI packages + +Any package built by scanpypi should be manually checked for +errors. +""" +from __future__ import print_function +import argparse +import json +import urllib2 +import sys +import os +import shutil +import StringIO +import tarfile +import zipfile +import errno +import hashlib +import re +import textwrap +import tempfile +import imp +from functools import wraps + +BUF_SIZE = 65536 + +try: + import spdx_lookup as liclookup +except ImportError: + # spdx_lookup is not installed + print('spdx_lookup module is not installed. This can lead to an ' + 'inaccurate licence detection. Please install it via\n' + 'pip install spdx_lookup') + liclookup = None + + +def setup_decorator(func, method): + """ + Decorator for distutils.core.setup and setuptools.setup. + Puts the arguments with which setup is called as a dict + Add key 'method' which should be either 'setuptools' or 'distutils'. + + Keyword arguments: + func -- either setuptools.setup or distutils.core.setup + method -- either 'setuptools' or 'distutils' + """ + + @wraps(func) + def closure(*args, **kwargs): + # Any python packages calls its setup function to be installed. + # Argument 'name' of this setup function is the package's name + BuildrootPackage.setup_args[kwargs['name']] = kwargs + BuildrootPackage.setup_args[kwargs['name']]['method'] = method + return closure + +# monkey patch +import setuptools # noqa E402 +setuptools.setup = setup_decorator(setuptools.setup, 'setuptools') +import distutils # noqa E402 +distutils.core.setup = setup_decorator(setuptools.setup, 'distutils') + + +def find_file_upper_case(filenames, path='./'): + """ + List generator: + Recursively find files that matches one of the specified filenames. + Returns a relative path starting with path argument. + + Keyword arguments: + filenames -- List of filenames to be found + path -- Path to the directory to search + """ + for root, dirs, files in os.walk(path): + for file in files: + if file.upper() in filenames: + yield (os.path.join(root, file)) + + +def pkg_buildroot_name(pkg_name): + """ + Returns the Buildroot package name for the PyPI package pkg_name. + Remove all non alphanumeric characters except - + Also lowers the name and adds 'python-' suffix + + Keyword arguments: + pkg_name -- String to rename + """ + name = re.sub('[^\w-]', '', pkg_name.lower()) + prefix = 'python-' + pattern = re.compile('^(?!' + prefix + ')(.+?)$') + name = pattern.sub(r'python-\1', name) + return name + + +class DownloadFailed(Exception): + pass + + +class BuildrootPackage(): + """This class's methods are not meant to be used individually please + use them in the correct order: + + __init__ + + download_package + + extract_package + + load_module + + get_requirements + + create_package_mk + + create_hash_file + + create_config_in + + """ + setup_args = {} + + def __init__(self, real_name, pkg_folder): + self.real_name = real_name + self.buildroot_name = pkg_buildroot_name(self.real_name) + self.pkg_dir = os.path.join(pkg_folder, self.buildroot_name) + self.mk_name = self.buildroot_name.upper().replace('-', '_') + self.as_string = None + self.md5_sum = None + self.metadata = None + self.metadata_name = None + self.metadata_url = None + self.pkg_req = None + self.setup_metadata = None + self.tmp_extract = None + self.used_url = None + self.filename = None + self.url = None + self.version = None + self.license_files = [] + + def fetch_package_info(self): + """ + Fetch a package's metadata from the python package index + """ + self.metadata_url = 'https://pypi.org/pypi/{pkg}/json'.format( + pkg=self.real_name) + try: + pkg_json = urllib2.urlopen(self.metadata_url).read().decode() + except urllib2.HTTPError as error: + print('ERROR:', error.getcode(), error.msg, file=sys.stderr) + print('ERROR: Could not find package {pkg}.\n' + 'Check syntax inside the python package index:\n' + 'https://pypi.python.org/pypi/ ' + .format(pkg=self.real_name)) + raise + except urllib2.URLError: + print('ERROR: Could not find package {pkg}.\n' + 'Check syntax inside the python package index:\n' + 'https://pypi.python.org/pypi/ ' + .format(pkg=self.real_name)) + raise + self.metadata = json.loads(pkg_json) + self.version = self.metadata['info']['version'] + self.metadata_name = self.metadata['info']['name'] + + def download_package(self): + """ + Download a package using metadata from pypi + """ + try: + self.metadata['urls'][0]['filename'] + except IndexError: + print( + 'Non-conventional package, ', + 'please check carefully after creation') + self.metadata['urls'] = [{ + 'packagetype': 'sdist', + 'url': self.metadata['info']['download_url'], + 'digests': None}] + # In this case, we can't get the name of the downloaded file + # from the pypi api, so we need to find it, this should work + urlpath = urllib2.urlparse.urlparse( + self.metadata['info']['download_url']).path + # urlparse().path give something like + # /path/to/file-version.tar.gz + # We use basename to remove /path/to + self.metadata['urls'][0]['filename'] = os.path.basename(urlpath) + for download_url in self.metadata['urls']: + if 'bdist' in download_url['packagetype']: + continue + try: + print('Downloading package {pkg} from {url}...'.format( + pkg=self.real_name, url=download_url['url'])) + download = urllib2.urlopen(download_url['url']) + except urllib2.HTTPError as http_error: + download = http_error + else: + self.used_url = download_url + self.as_string = download.read() + if not download_url['digests']['md5']: + break + self.md5_sum = hashlib.md5(self.as_string).hexdigest() + if self.md5_sum == download_url['digests']['md5']: + break + else: + if download.__class__ == urllib2.HTTPError: + raise download + raise DownloadFailed('Failed to download package {pkg}' + .format(pkg=self.real_name)) + self.filename = self.used_url['filename'] + self.url = self.used_url['url'] + + def extract_package(self, tmp_path): + """ + Extract the package contents into a directrory + + Keyword arguments: + tmp_path -- directory where you want the package to be extracted + """ + as_file = StringIO.StringIO(self.as_string) + if self.filename[-3:] == 'zip': + with zipfile.ZipFile(as_file) as as_zipfile: + tmp_pkg = os.path.join(tmp_path, self.buildroot_name) + try: + os.makedirs(tmp_pkg) + except OSError as exception: + if exception.errno != errno.EEXIST: + print("ERROR: ", exception.message, file=sys.stderr) + return None, None + print('WARNING:', exception.message, file=sys.stderr) + print('Removing {pkg}...'.format(pkg=tmp_pkg)) + shutil.rmtree(tmp_pkg) + os.makedirs(tmp_pkg) + as_zipfile.extractall(tmp_pkg) + else: + with tarfile.open(fileobj=as_file) as as_tarfile: + tmp_pkg = os.path.join(tmp_path, self.buildroot_name) + try: + os.makedirs(tmp_pkg) + except OSError as exception: + if exception.errno != errno.EEXIST: + print("ERROR: ", exception.message, file=sys.stderr) + return None, None + print('WARNING:', exception.message, file=sys.stderr) + print('Removing {pkg}...'.format(pkg=tmp_pkg)) + shutil.rmtree(tmp_pkg) + os.makedirs(tmp_pkg) + as_tarfile.extractall(tmp_pkg) + + tmp_extract = '{folder}/{name}-{version}' + self.tmp_extract = tmp_extract.format( + folder=tmp_pkg, + name=self.metadata_name, + version=self.version) + + def load_setup(self): + """ + Loads the corresponding setup and store its metadata + """ + current_dir = os.getcwd() + os.chdir(self.tmp_extract) + sys.path.append(self.tmp_extract) + s_file, s_path, s_desc = imp.find_module('setup', [self.tmp_extract]) + setup = imp.load_module('setup', s_file, s_path, s_desc) + try: + self.setup_metadata = self.setup_args[self.metadata_name] + except KeyError: + # This means setup was not called which most likely mean that it is + # called through the if __name__ == '__main__' directive. + # In this case, we can only pray that it is called through a + # function called main() in setup.py. + setup.main() # Will raise AttributeError if not found + self.setup_metadata = self.setup_args[self.metadata_name] + # Here we must remove the module the hard way. + # We must do this because of a very specific case: if a package calls + # setup from the __main__ but does not come with a 'main()' function, + # for some reason setup.main() will successfully call the main + # function of a previous package... + sys.modules.pop('setup', None) + del setup + os.chdir(current_dir) + sys.path.remove(self.tmp_extract) + + def get_requirements(self, pkg_folder): + """ + Retrieve dependencies from the metadata found in the setup.py script of + a pypi package. + + Keyword Arguments: + pkg_folder -- location of the already created packages + """ + if 'install_requires' not in self.setup_metadata: + self.pkg_req = None + return set() + self.pkg_req = self.setup_metadata['install_requires'] + self.pkg_req = [re.sub('([-.\w]+).*', r'\1', req) + for req in self.pkg_req] + + # get rid of commented lines and also strip the package strings + self.pkg_req = [item.strip() for item in self.pkg_req + if len(item) > 0 and item[0] != '#'] + + req_not_found = self.pkg_req + self.pkg_req = map(pkg_buildroot_name, self.pkg_req) + pkg_tuples = zip(req_not_found, self.pkg_req) + # pkg_tuples is a list of tuples that looks like + # ('werkzeug','python-werkzeug') because I need both when checking if + # dependencies already exist or are already in the download list + req_not_found = set( + pkg[0] for pkg in pkg_tuples + if not os.path.isdir(pkg[1]) + ) + return req_not_found + + def __create_mk_header(self): + """ + Create the header of the .mk file + """ + header = ['#' * 80 + '\n'] + header.append('#\n') + header.append('# {name}\n'.format(name=self.buildroot_name)) + header.append('#\n') + header.append('#' * 80 + '\n') + header.append('\n') + return header + + def __create_mk_download_info(self): + """ + Create the lines refering to the download information of the + .mk file + """ + lines = [] + version_line = '{name}_VERSION = {version}\n'.format( + name=self.mk_name, + version=self.version) + lines.append(version_line) + + targz = self.filename.replace( + self.version, + '$({name}_VERSION)'.format(name=self.mk_name)) + targz_line = '{name}_SOURCE = {filename}\n'.format( + name=self.mk_name, + filename=targz) + lines.append(targz_line) + + if self.filename not in self.url: + # Sometimes the filename is in the url, sometimes it's not + site_url = self.url + else: + site_url = self.url[:self.url.find(self.filename)] + site_line = '{name}_SITE = {url}'.format(name=self.mk_name, + url=site_url) + site_line = site_line.rstrip('/') + '\n' + lines.append(site_line) + return lines + + def __create_mk_setup(self): + """ + Create the line refering to the setup method of the package of the + .mk file + + There are two things you can use to make an installer + for a python package: distutils or setuptools + distutils comes with python but does not support dependencies. + distutils is mostly still there for backward support. + setuptools is what smart people use, + but it is not shipped with python :( + """ + lines = [] + setup_type_line = '{name}_SETUP_TYPE = {method}\n'.format( + name=self.mk_name, + method=self.setup_metadata['method']) + lines.append(setup_type_line) + return lines + + def __get_license_names(self, license_files): + """ + Try to determine the related license name. + + There are two possibilities. Either the scripts tries to + get license name from package's metadata or, if spdx_lookup + package is available, the script compares license files with + SPDX database. + """ + license_line = '' + if liclookup is None: + license_dict = { + 'Apache Software License': 'Apache-2.0', + 'BSD License': 'BSD', + 'European Union Public Licence 1.0': 'EUPL-1.0', + 'European Union Public Licence 1.1': 'EUPL-1.1', + "GNU General Public License": "GPL", + "GNU General Public License v2": "GPL-2.0", + "GNU General Public License v2 or later": "GPL-2.0+", + "GNU General Public License v3": "GPL-3.0", + "GNU General Public License v3 or later": "GPL-3.0+", + "GNU Lesser General Public License v2": "LGPL-2.1", + "GNU Lesser General Public License v2 or later": "LGPL-2.1+", + "GNU Lesser General Public License v3": "LGPL-3.0", + "GNU Lesser General Public License v3 or later": "LGPL-3.0+", + "GNU Library or Lesser General Public License": "LGPL-2.0", + "ISC License": "ISC", + "MIT License": "MIT", + "Mozilla Public License 1.0": "MPL-1.0", + "Mozilla Public License 1.1": "MPL-1.1", + "Mozilla Public License 2.0": "MPL-2.0", + "Zope Public License": "ZPL" + } + regexp = re.compile('^License :* *.* *:+ (.*)( \(.*\))?$') + classifiers_licenses = [regexp.sub(r"\1", lic) + for lic in self.metadata['info']['classifiers'] + if regexp.match(lic)] + licenses = map(lambda x: license_dict[x] if x in license_dict else x, + classifiers_licenses) + if not len(licenses): + print('WARNING: License has been set to "{license}". It is most' + ' likely wrong, please change it if need be'.format( + license=', '.join(licenses))) + licenses = [self.metadata['info']['license']] + license_line = '{name}_LICENSE = {license}\n'.format( + name=self.mk_name, + license=', '.join(licenses)) + else: + license_names = [] + for license_file in license_files: + with open(license_file) as lic_file: + match = liclookup.match(lic_file.read()) + if match.confidence >= 90.0: + license_names.append(match.license.id) + + if len(license_names) > 0: + license_line = ('{name}_LICENSE =' + ' {names}\n'.format( + name=self.mk_name, + names=', '.join(license_names))) + + return license_line + + def __create_mk_license(self): + """ + Create the lines referring to the package's license informations of the + .mk file + + The license's files are found by searching the package (case insensitive) + for files named license, license.txt etc. If more than one license file + is found, the user is asked to select which ones he wants to use. + """ + lines = [] + + filenames = ['LICENCE', 'LICENSE', 'LICENSE.RST', 'LICENSE.TXT', + 'COPYING', 'COPYING.TXT'] + self.license_files = list(find_file_upper_case(filenames, self.tmp_extract)) + + lines.append(self.__get_license_names(self.license_files)) + + license_files = [license.replace(self.tmp_extract, '')[1:] + for license in self.license_files] + if len(license_files) > 0: + if len(license_files) > 1: + print('More than one file found for license:', + ', '.join(license_files)) + license_files = [filename + for index, filename in enumerate(license_files)] + license_file_line = ('{name}_LICENSE_FILES =' + ' {files}\n'.format( + name=self.mk_name, + files=' '.join(license_files))) + lines.append(license_file_line) + else: + print('WARNING: No license file found,' + ' please specify it manually afterwards') + license_file_line = '# No license file found\n' + + return lines + + def __create_mk_requirements(self): + """ + Create the lines referring to the dependencies of the of the + .mk file + + Keyword Arguments: + pkg_name -- name of the package + pkg_req -- dependencies of the package + """ + lines = [] + dependencies_line = ('{name}_DEPENDENCIES =' + ' {reqs}\n'.format( + name=self.mk_name, + reqs=' '.join(self.pkg_req))) + lines.append(dependencies_line) + return lines + + def create_package_mk(self): + """ + Create the lines corresponding to the .mk file + """ + pkg_mk = '{name}.mk'.format(name=self.buildroot_name) + path_to_mk = os.path.join(self.pkg_dir, pkg_mk) + print('Creating {file}...'.format(file=path_to_mk)) + lines = self.__create_mk_header() + lines += self.__create_mk_download_info() + lines += self.__create_mk_setup() + lines += self.__create_mk_license() + + lines.append('\n') + lines.append('$(eval $(python-package))') + lines.append('\n') + with open(path_to_mk, 'w') as mk_file: + mk_file.writelines(lines) + + def create_hash_file(self): + """ + Create the lines corresponding to the .hash files + """ + pkg_hash = '{name}.hash'.format(name=self.buildroot_name) + path_to_hash = os.path.join(self.pkg_dir, pkg_hash) + print('Creating {filename}...'.format(filename=path_to_hash)) + lines = [] + if self.used_url['digests']['md5'] and self.used_url['digests']['sha256']: + hash_header = '# md5, sha256 from {url}\n'.format( + url=self.metadata_url) + lines.append(hash_header) + hash_line = '{method}\t{digest} {filename}\n'.format( + method='md5', + digest=self.used_url['digests']['md5'], + filename=self.filename) + lines.append(hash_line) + hash_line = '{method}\t{digest} {filename}\n'.format( + method='sha256', + digest=self.used_url['digests']['sha256'], + filename=self.filename) + lines.append(hash_line) + + if self.license_files: + lines.append('# Locally computed sha256 checksums\n') + for license_file in self.license_files: + sha256 = hashlib.sha256() + with open(license_file, 'rb') as lic_f: + while True: + data = lic_f.read(BUF_SIZE) + if not data: + break + sha256.update(data) + hash_line = '{method}\t{digest} {filename}\n'.format( + method='sha256', + digest=sha256.hexdigest(), + filename=os.path.basename(license_file)) + lines.append(hash_line) + + with open(path_to_hash, 'w') as hash_file: + hash_file.writelines(lines) + + def create_config_in(self): + """ + Creates the Config.in file of a package + """ + path_to_config = os.path.join(self.pkg_dir, 'Config.in') + print('Creating {file}...'.format(file=path_to_config)) + lines = [] + config_line = 'config BR2_PACKAGE_{name}\n'.format( + name=self.mk_name) + lines.append(config_line) + + bool_line = '\tbool "{name}"\n'.format(name=self.buildroot_name) + lines.append(bool_line) + if self.pkg_req: + for dep in self.pkg_req: + dep_line = '\tselect BR2_PACKAGE_{req} # runtime\n'.format( + req=dep.upper().replace('-', '_')) + lines.append(dep_line) + + lines.append('\thelp\n') + + help_lines = textwrap.wrap(self.metadata['info']['summary'], + initial_indent='\t ', + subsequent_indent='\t ') + + # make sure a help text is terminated with a full stop + if help_lines[-1][-1] != '.': + help_lines[-1] += '.' + + # \t + two spaces is 3 char long + help_lines.append('') + help_lines.append('\t ' + self.metadata['info']['home_page']) + help_lines = map(lambda x: x + '\n', help_lines) + lines += help_lines + + with open(path_to_config, 'w') as config_file: + config_file.writelines(lines) + + +def main(): + # Building the parser + parser = argparse.ArgumentParser( + description="Creates buildroot packages from the metadata of " + "an existing PyPI packages and include it " + "in menuconfig") + parser.add_argument("packages", + help="list of packages to be created", + nargs='+') + parser.add_argument("-o", "--output", + help=""" + Output directory for packages. + Default is ./package + """, + default='./package') + + args = parser.parse_args() + packages = list(set(args.packages)) + + # tmp_path is where we'll extract the files later + tmp_prefix = 'scanpypi-' + pkg_folder = args.output + tmp_path = tempfile.mkdtemp(prefix=tmp_prefix) + try: + for real_pkg_name in packages: + package = BuildrootPackage(real_pkg_name, pkg_folder) + print('buildroot package name for {}:'.format(package.real_name), + package.buildroot_name) + # First we download the package + # Most of the info we need can only be found inside the package + print('Package:', package.buildroot_name) + print('Fetching package', package.real_name) + try: + package.fetch_package_info() + except (urllib2.URLError, urllib2.HTTPError): + continue + if package.metadata_name.lower() == 'setuptools': + # setuptools imports itself, that does not work very well + # with the monkey path at the begining + print('Error: setuptools cannot be built using scanPyPI') + continue + + try: + package.download_package() + except urllib2.HTTPError as error: + print('Error: {code} {reason}'.format(code=error.code, + reason=error.reason)) + print('Error downloading package :', package.buildroot_name) + print() + continue + + # extract the tarball + try: + package.extract_package(tmp_path) + except (tarfile.ReadError, zipfile.BadZipfile): + print('Error extracting package {}'.format(package.real_name)) + print() + continue + + # Loading the package install info from the package + try: + package.load_setup() + except ImportError as err: + if 'buildutils' in err.message: + print('This package needs buildutils') + else: + raise + continue + except AttributeError as error: + print('Error: Could not install package {pkg}: {error}'.format( + pkg=package.real_name, error=error)) + continue + + # Package requirement are an argument of the setup function + req_not_found = package.get_requirements(pkg_folder) + req_not_found = req_not_found.difference(packages) + + packages += req_not_found + if req_not_found: + print('Added packages \'{pkgs}\' as dependencies of {pkg}' + .format(pkgs=", ".join(req_not_found), + pkg=package.buildroot_name)) + print('Checking if package {name} already exists...'.format( + name=package.pkg_dir)) + try: + os.makedirs(package.pkg_dir) + except OSError as exception: + if exception.errno != errno.EEXIST: + print("ERROR: ", exception.message, file=sys.stderr) + continue + print('Error: Package {name} already exists' + .format(name=package.pkg_dir)) + del_pkg = raw_input( + 'Do you want to delete existing package ? [y/N]') + if del_pkg.lower() == 'y': + shutil.rmtree(package.pkg_dir) + os.makedirs(package.pkg_dir) + else: + continue + package.create_package_mk() + + package.create_hash_file() + + package.create_config_in() + print() + # printing an empty line for visual confort + finally: + shutil.rmtree(tmp_path) + + +if __name__ == "__main__": + main() diff --git a/buildroot/utils/size-stats-compare b/buildroot/utils/size-stats-compare new file mode 100755 index 0000000..e5a1ec3 --- /dev/null +++ b/buildroot/utils/size-stats-compare @@ -0,0 +1,127 @@ +#!/usr/bin/env python + +# Copyright (C) 2016 Thomas De Schampheleire + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# TODO (improvements) +# - support K,M,G size suffixes for threshold +# - output CSV file in addition to stdout reporting + +import csv +import argparse +import sys + +def read_file_size_csv(inputf, detail=None): + """Extract package or file sizes from CSV file into size dictionary""" + sizes = {} + reader = csv.reader(inputf) + + header = next(reader) + if (header[0] != 'File name' or header[1] != 'Package name' or + header[2] != 'File size' or header[3] != 'Package size'): + print(("Input file %s does not contain the expected header. Are you " + "sure this file corresponds to the file-size-stats.csv " + "file created by 'make graph-size'?") % inputf.name) + sys.exit(1) + + for row in reader: + if detail: + sizes[row[0]] = int(row[2]) + else: + sizes[row[1]] = int(row[3]) + + return sizes + +def compare_sizes(old, new): + """Return delta/added/removed dictionaries based on two input size + dictionaries""" + delta = {} + oldkeys = set(old.keys()) + newkeys = set(new.keys()) + + # packages/files in both + for entry in newkeys.intersection(oldkeys): + delta[entry] = ('', new[entry] - old[entry]) + # packages/files only in new + for entry in newkeys.difference(oldkeys): + delta[entry] = ('added', new[entry]) + # packages/files only in old + for entry in oldkeys.difference(newkeys): + delta[entry] = ('removed', -old[entry]) + + return delta + +def print_results(result, threshold): + """Print the given result dictionary sorted by size, ignoring any entries + below or equal to threshold""" + + from six import iteritems + list_result = list(iteritems(result)) + # result is a dictionary: name -> (flag, size difference) + # list_result is a list of tuples: (name, (flag, size difference)) + + for entry in sorted(list_result, key=lambda entry: entry[1][1]): + if threshold is not None and abs(entry[1][1]) <= threshold: + continue + print('%12s %7s %s' % (entry[1][1], entry[1][0], entry[0])) + + +# main ######################################################################### + +description = """ +Compare rootfs size between Buildroot compilations, for example after changing +configuration options or after switching to another Buildroot release. + +This script compares the file-size-stats.csv file generated by 'make graph-size' +with the corresponding file from another Buildroot compilation. +The size differences can be reported per package or per file. +Size differences smaller or equal than a given threshold can be ignored. +""" + +parser = argparse.ArgumentParser(description=description, + formatter_class=argparse.RawDescriptionHelpFormatter) + +parser.add_argument('-d', '--detail', action='store_true', + help='''report differences for individual files rather than + packages''') +parser.add_argument('-t', '--threshold', type=int, + help='''ignore size differences smaller or equal than this + value (bytes)''') +parser.add_argument('old_file_size_csv', type=argparse.FileType('r'), + metavar='old-file-size-stats.csv', + help="""old CSV file with file and package size statistics, + generated by 'make graph-size'""") +parser.add_argument('new_file_size_csv', type=argparse.FileType('r'), + metavar='new-file-size-stats.csv', + help='new CSV file with file and package size statistics') +args = parser.parse_args() + +if args.detail: + keyword = 'file' +else: + keyword = 'package' + +old_sizes = read_file_size_csv(args.old_file_size_csv, args.detail) +new_sizes = read_file_size_csv(args.new_file_size_csv, args.detail) + +delta = compare_sizes(old_sizes, new_sizes) + +print('Size difference per %s (bytes), threshold = %s' % (keyword, args.threshold)) +print(80*'-') +print_results(delta, args.threshold) +print(80*'-') +print_results({'TOTAL': ('', sum(new_sizes.values()) - sum(old_sizes.values()))}, + threshold=None) diff --git a/buildroot/utils/test-pkg b/buildroot/utils/test-pkg new file mode 100755 index 0000000..17d3756 --- /dev/null +++ b/buildroot/utils/test-pkg @@ -0,0 +1,195 @@ +#!/usr/bin/env bash +set -e + +TOOLCHAINS_CSV='support/config-fragments/autobuild/toolchain-configs.csv' + +main() { + local o O opts + local cfg dir pkg random toolchains_dir toolchain + local ret nb nb_skip nb_fail nb_legal nb_tc build_dir + local -a toolchains + + o='hc:d:p:r:t:' + O='help,config-snippet:build-dir:package:,random:,toolchains-dir:' + opts="$(getopt -n "${my_name}" -o "${o}" -l "${O}" -- "${@}")" + eval set -- "${opts}" + + random=0 + toolchains_csv="${TOOLCHAINS_CSV}" + while [ ${#} -gt 0 ]; do + case "${1}" in + (-h|--help) + help; exit 0 + ;; + (-c|--config-snippet) + cfg="${2}"; shift 2 + ;; + (-d|--build-dir) + dir="${2}"; shift 2 + ;; + (-p|--package) + pkg="${2}"; shift 2 + ;; + (-r|--random) + random="${2}"; shift 2 + ;; + (-t|--toolchains-csv) + toolchains_csv="${2}"; shift 2 + ;; + (--) + shift; break + ;; + esac + done + if [ -z "${cfg}" ]; then + printf "error: no config snippet specified\n" >&2; exit 1 + fi + if [ ! -e "${cfg}" ]; then + printf "error: %s: no such file\n" "${cfg}" >&2; exit 1 + fi + if [ -z "${dir}" ]; then + dir="${HOME}/br-test-pkg" + fi + + # Extract the URLs of the toolchains; drop internal toolchains + # E.g.: http://server/path/to/name.config,arch,libc + # --> http://server/path/to/name.config + toolchains=($(sed -r -e 's/,.*//; /internal/d; /^#/d; /^$/d;' "${toolchains_csv}" \ + |if [ ${random} -gt 0 ]; then \ + sort -R |head -n ${random} + else + cat + fi |sort + ) + ) + + nb_tc="${#toolchains[@]}" + if [ ${nb_tc} -eq 0 ]; then + printf "error: no toolchain found (networking issue?)\n" >&2; exit 1 + fi + + nb=0 + nb_skip=0 + nb_fail=0 + nb_legal=0 + for toolchainconfig in "${toolchains[@]}"; do + : $((nb++)) + toolchain="$(basename "${toolchainconfig}" .config)" + build_dir="${dir}/${toolchain}" + printf "%40s [%*d/%d]: " "${toolchain}" ${#nb_tc} ${nb} ${nb_tc} + build_one "${build_dir}" "${toolchainconfig}" "${cfg}" "${pkg}" && ret=0 || ret=${?} + case ${ret} in + (0) printf "OK\n";; + (1) : $((nb_skip++)); printf "SKIPPED\n";; + (2) : $((nb_fail++)); printf "FAILED\n";; + (3) : $((nb_legal++)); printf "FAILED\n";; + esac + done + + printf "%d builds, %d skipped, %d build failed, %d legal-info failed\n" \ + ${nb} ${nb_skip} ${nb_fail} ${nb_legal} +} + +build_one() { + local dir="${1}" + local toolchainconfig="${2}" + local cfg="${3}" + local pkg="${4}" + + mkdir -p "${dir}" + + support/kconfig/merge_config.sh -O "${dir}" \ + "${toolchainconfig}" "support/config-fragments/minimal.config" "${cfg}" \ + >> "${dir}/logfile" 2>&1 + # We want all the options from the snippet to be present as-is (set + # or not set) in the actual .config; if one of them is not, it means + # some dependency from the toolchain or arch is not available, in + # which case this config is untestable and we skip it. + # We don't care about the locale to sort in, as long as both sort are + # done in the same locale. + comm -23 <(sort "${cfg}") <(sort "${dir}/.config") >"${dir}/missing.config" + if [ -s "${dir}/missing.config" ]; then + return 1 + fi + # Remove file, it's empty anyway. + rm -f "${dir}/missing.config" + + if [ -n "${pkg}" ]; then + if ! make O="${dir}" "${pkg}-dirclean" >> "${dir}/logfile" 2>&1; then + return 2 + fi + fi + + # shellcheck disable=SC2086 + if ! make O="${dir}" ${pkg} >> "${dir}/logfile" 2>&1; then + return 2 + fi + + # legal-info done systematically, because some packages have different + # sources depending on the configuration (e.g. lua-5.2 vs. lua-5.3) + if ! make O="${dir}" legal-info >> "${dir}/logfile" 2>&1; then + return 3 + fi +} + +help() { + cat <<_EOF_ +test-pkg: test-build a package against various toolchains and architectures + +The supplied config snippet is appended to each toolchain config, the +resulting configuration is checked to ensure it still contains all options +specified in the snippet; if any is missing, the build is skipped, on the +assumption that the package under test requires a toolchain or architecture +feature that is missing. + +In case failures are noticed, you can fix the package and just re-run the +same command again; it will re-run the test where it failed. If you did +specify a package (with -p), the package build dir will be removed first. + +The list of toolchains is retrieved from ${TOOLCHAINS_CSV}. +Only the external toolchains are tried, because building a Buildroot toolchain +would take too long. An alternative toolchains CSV file can be specified with +the -t option. This file should have lines consisting of the path to the +toolchain config fragment and the required host architecture, separated by a +comma. The config fragments should contain only the toolchain and architecture +settings. + +Options: + + -h, --help + Print this help. + + -c CFG, --config-snippet CFG + Use the CFG file as the source for the config snippet. This file + should contain all the config options required to build a package. + + -d DIR, --build-dir DIR + Do the builds in directory DIR, one sub-dir per toolchain. + + -p PKG, --package PKG + Test-build the package PKG, by running 'make PKG'; if not specified, + just runs 'make'. + + -r N, --random N + Limit the tests to the N randomly selected toolchains, instead of + building with all toolchains. + + -t CSVFILE, --toolchains-csv CSVFILE + CSV file containing the paths to config fragments of toolchains to + try. If not specified, the toolchains in ${TOOLCHAINS_CSV} will be + used. + +Example: + + Testing libcec would require a config snippet that contains: + BR2_PACKAGE_LIBCEC=y + + Testing libcurl with openSSL support would require a snippet such as: + BR2_PACKAGE_OPENSSL=y + BR2_PACKAGE_LIBCURL=y + +_EOF_ +} + +my_name="${0##*/}" +main "${@}" diff --git a/rootfs/Makefile b/rootfs/Makefile new file mode 100644 index 0000000..b6f592c --- /dev/null +++ b/rootfs/Makefile @@ -0,0 +1,23 @@ + +lastword = $(word $(words $(1)),$(1)) +makedir := $(dir $(call lastword,$(MAKEFILE_LIST))) + +MAKEARGS := -C ../buildroot BR2_EXTERNAL_DIRS="../rootfs" +MAKEARGS += O=$(if $(patsubst /%,,$(makedir)),$(CURDIR)/)$(patsubst %/,%,$(makedir)) + +MAKEFLAGS += --no-print-directory + +.PHONY: all $(MAKECMDGOALS) + +all := $(filter-out Makefile,$(MAKECMDGOALS)) + +_all: + $(MAKE) $(MAKEARGS) $(all) + +Makefile:; + +$(all): _all + @: + +%/: _all + @: diff --git a/rootfs/board/common/post_build.sh b/rootfs/board/common/post_build.sh new file mode 100755 index 0000000..720d11f --- /dev/null +++ b/rootfs/board/common/post_build.sh @@ -0,0 +1,6 @@ +#! /bin/bash + +# Here, you can do something after build of rootfs is done but +# before the final images (i.e. rootfs.tar) are generated. +# See post_image.sh script for the latter. +# Note: you should have access to most BR variables here. diff --git a/rootfs/board/common/post_image.sh b/rootfs/board/common/post_image.sh new file mode 100755 index 0000000..468dce7 --- /dev/null +++ b/rootfs/board/common/post_image.sh @@ -0,0 +1,14 @@ +#! /bin/bash + +# Here, you can do something after the rootfs images has been +# generated. +# See post_build.sh script if you want to do something just before +# the images are generated. +# Note: you should have access to most BR variables here. + +# you can change the passed arguments in config +IMAGES_DIR=$1 +DST_DIR=$2 +AUTO_NFS=$3 + + diff --git a/rootfs/board/common/post_image.sh.save b/rootfs/board/common/post_image.sh.save new file mode 100755 index 0000000..48379a6 --- /dev/null +++ b/rootfs/board/common/post_image.sh.save @@ -0,0 +1,17 @@ +#! /bin/bash + +# Here, you can do something after the rootfs images has been +# generated. +# See post_build.sh script if you want to do something just before +# the images are generated. +# Note: you should have access to most BR variables here. + +# you can change the passed arguments in config +IMAGES_DIR=$1 +DST_DIR=$2 +AUTO_NFS=$3 + +# copy rootfs to EmbX root for conveniency +echo "Copying generated rootfs to '${DST_DIR}/rootfs.cpio'" +cp ../rootfs.cpio ${DST_DIR}/rootfs.cpio + diff --git a/rootfs/board/common/rootfs_overlay/etc/X11/xinit/xinitrc b/rootfs/board/common/rootfs_overlay/etc/X11/xinit/xinitrc new file mode 100644 index 0000000..b9e5564 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/X11/xinit/xinitrc @@ -0,0 +1,51 @@ +#!/bin/sh + +userresources=$HOME/.Xresources +usermodmap=$HOME/.Xmodmap +sysresources=/etc/X11/xinit/.Xresources +sysmodmap=/etc/X11/xinit/.Xmodmap + +# merge in defaults and keymaps + +if [ -f $sysresources ]; then + + + + + + + + xrdb -merge $sysresources + +fi + +if [ -f $sysmodmap ]; then + xmodmap $sysmodmap +fi + +if [ -f "$userresources" ]; then + + + + + + + + xrdb -merge "$userresources" + +fi + +if [ -f "$usermodmap" ]; then + xmodmap "$usermodmap" +fi + +# start some nice programs + +if [ -d /etc/X11/xinit/xinitrc.d ] ; then + for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do + [ -x "$f" ] && . "$f" + done + unset f +fi + +openbox-session diff --git a/rootfs/board/common/rootfs_overlay/etc/init.d/S01logging b/rootfs/board/common/rootfs_overlay/etc/init.d/S01logging new file mode 100755 index 0000000..fcb3e7d --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/init.d/S01logging @@ -0,0 +1,40 @@ +#!/bin/sh +# +# Start logging +# + +SYSLOGD_ARGS=-n +KLOGD_ARGS=-n +[ -r /etc/default/logging ] && . /etc/default/logging + +start() { + printf "Starting logging: " + start-stop-daemon -b -S -q -m -p /var/run/syslogd.pid --exec /sbin/syslogd -- $SYSLOGD_ARGS + start-stop-daemon -b -S -q -m -p /var/run/klogd.pid --exec /sbin/klogd -- $KLOGD_ARGS + echo "OK" +} + +stop() { + printf "Stopping logging: " + start-stop-daemon -K -q -p /var/run/syslogd.pid + start-stop-daemon -K -q -p /var/run/klogd.pid + echo "OK" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart|reload}" + exit 1 +esac + +exit $? diff --git a/rootfs/board/common/rootfs_overlay/etc/init.d/S10udev b/rootfs/board/common/rootfs_overlay/etc/init.d/S10udev new file mode 100755 index 0000000..1af041d --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/init.d/S10udev @@ -0,0 +1,50 @@ +#!/bin/sh +# +# udev This is a minimal non-LSB version of a UDEV startup script. It +# was derived by stripping down the udev-058 LSB version for use +# with buildroot on embedded hardware using Linux 2.6.34+ kernels. +# +# You may need to customize this for your system's resource limits +# (including startup time!) and administration. For example, if +# your early userspace has a custom initramfs or initrd you might +# need /dev much earlier; or without hotpluggable busses (like USB, +# PCMCIA, MMC/SD, and so on) your /dev might be static after boot. +# +# This script assumes your system boots right into the eventual root +# filesystem, and that init runs this udev script before any programs +# needing more device nodes than the bare-bones set -- /dev/console, +# /dev/zero, /dev/null -- that's needed to boot and run this script. +# + +# Check for missing binaries +UDEV_BIN=/sbin/udevd +test -x $UDEV_BIN || exit 5 + +# Check for config file and read it +UDEV_CONFIG=/etc/udev/udev.conf +test -r $UDEV_CONFIG || exit 6 +. $UDEV_CONFIG + +case "$1" in + start) + printf "Populating ${udev_root:-/dev} using udev: " + printf '\000\000\000\000' > /proc/sys/kernel/hotplug + $UDEV_BIN -d || (echo "FAIL" && exit 1) + udevadm trigger --type=subsystems --action=add + #udevadm trigger --type=devices --action=add + #udevadm settle --timeout=30 || echo "udevadm settle failed" + echo "done" + ;; + stop) + # Stop execution of events + udevadm control --stop-exec-queue + killall udevd + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; +esac + + +exit 0 diff --git a/rootfs/board/common/rootfs_overlay/etc/init.d/S20urandom b/rootfs/board/common/rootfs_overlay/etc/init.d/S20urandom new file mode 100755 index 0000000..cababe1 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/init.d/S20urandom @@ -0,0 +1,51 @@ +#! /bin/sh +# +# urandom This script saves the random seed between reboots. +# It is called from the boot, halt and reboot scripts. +# +# Version: @(#)urandom 1.33 22-Jun-1998 miquels@cistron.nl +# + +[ -c /dev/urandom ] || exit 0 +#. /etc/default/rcS + +case "$1" in + start|"") + # check for read only file system + if ! touch /etc/random-seed 2>/dev/null + then + echo "read-only file system detected...done" + exit + fi + if [ "$VERBOSE" != no ] + then + printf "Initializing random number generator... " + fi + # Load and then save 512 bytes, + # which is the size of the entropy pool + cat /etc/random-seed >/dev/urandom + rm -f /etc/random-seed + umask 077 + dd if=/dev/urandom of=/etc/random-seed count=1 \ + >/dev/null 2>&1 || echo "urandom start: failed." + umask 022 + [ "$VERBOSE" != no ] && echo "done." + ;; + stop) + if ! touch /etc/random-seed 2>/dev/null + then + exit + fi + # Carry a random seed from shut-down to start-up; + # see documentation in linux/drivers/char/random.c + [ "$VERBOSE" != no ] && printf "Saving random seed... " + umask 077 + dd if=/dev/urandom of=/etc/random-seed count=1 \ + >/dev/null 2>&1 || echo "urandom stop: failed." + [ "$VERBOSE" != no ] && echo "done." + ;; + *) + echo "Usage: urandom {start|stop}" >&2 + exit 1 + ;; +esac diff --git a/rootfs/board/common/rootfs_overlay/etc/init.d/S30dbus b/rootfs/board/common/rootfs_overlay/etc/init.d/S30dbus new file mode 100755 index 0000000..b4bcf9c --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/init.d/S30dbus @@ -0,0 +1,74 @@ +#!/bin/sh +# +# messagebus: The D-BUS systemwide message bus +# +# chkconfig: 345 97 03 +# description: This is a daemon which broadcasts notifications of system events \ +# and other messages. See http://www.freedesktop.org/software/dbus/ +# +# processname: dbus-daemon +# pidfile: /var/run/messagebus.pid +# + +# Sanity checks. +[ -x /usr/bin/dbus-daemon ] || exit 0 + +# Create needed directories. +[ -d /var/run/dbus ] || mkdir -p /var/run/dbus +[ -d /var/lock/subsys ] || mkdir -p /var/lock/subsys +[ -d /tmp/dbus ] || mkdir -p /tmp/dbus + +RETVAL=0 + +start() { + printf "Starting system message bus: " + + dbus-uuidgen --ensure + dbus-daemon --system + RETVAL=$? + echo "done" + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dbus-daemon +} + +stop() { + printf "Stopping system message bus: " + + ## we don't want to kill all the per-user $processname, we want + ## to use the pid file *only*; because we use the fake nonexistent + ## program name "$servicename" that should be safe-ish + killall dbus-daemon + RETVAL=$? + echo "done" + if [ $RETVAL -eq 0 ]; then + rm -f /var/lock/subsys/dbus-daemon + rm -f /var/run/messagebus.pid + fi +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + condrestart) + if [ -f /var/lock/subsys/$servicename ]; then + stop + start + fi + ;; + reload) + echo "Message bus can't reload its configuration, you have to restart it" + RETVAL=$? + ;; + *) + echo "Usage: $0 {start|stop|restart|condrestart|reload}" + ;; +esac +exit $RETVAL diff --git a/rootfs/board/common/rootfs_overlay/etc/init.d/S40network b/rootfs/board/common/rootfs_overlay/etc/init.d/S40network new file mode 100755 index 0000000..642c501 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/init.d/S40network @@ -0,0 +1,30 @@ +#!/bin/sh +# +# Start the network.... +# + +# Debian ifupdown needs the /run/network lock directory +mkdir -p /run/network + +case "$1" in + start) + printf "Starting network: " + /sbin/ifup -a + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + stop) + printf "Stopping network: " + /sbin/ifdown -a + [ $? = 0 ] && echo "OK" || echo "FAIL" + ;; + restart|reload) + "$0" stop + "$0" start + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac + +exit $? + diff --git a/rootfs/board/common/rootfs_overlay/etc/init.d/S50opencn b/rootfs/board/common/rootfs_overlay/etc/init.d/S50opencn new file mode 100755 index 0000000..21b2f44 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/init.d/S50opencn @@ -0,0 +1,57 @@ +#!/bin/sh + +OPENCN_CORE_DEV_MAJOR=100 +OPENCN_HAL_DEV_MAJOR=101 +OPENCN_STREAMER_DEV_MAJOR=102 +OPENCN_SAMPLER_DEV_MAJOR=103 +OPENCN_THREADS_DEV_MAJOR=104 +OPENCN_LCEC_DEV_MAJOR=105 +OPENCN_KINS_DEV_MAJOR=106 +OPENCN_LCCT_DEV_MAJOR=107 +OPENCN_FEEDOPT_DEV_MAJOR=108 + +case "$1" in + start) + echo -n "Creating OpenCN dev... " + mkdir /dev/opencn + mknod /dev/opencn/core c ${OPENCN_CORE_DEV_MAJOR} 0 + + mkdir /dev/opencn/hal + mknod /dev/opencn/hal/0 c ${OPENCN_HAL_DEV_MAJOR} 0 + + mkdir /dev/opencn/streamer + mknod /dev/opencn/streamer/0 c ${OPENCN_STREAMER_DEV_MAJOR} 0 + + mkdir /dev/opencn/sampler + mknod /dev/opencn/sampler/0 c ${OPENCN_SAMPLER_DEV_MAJOR} 0 + + mkdir /dev/opencn/threads + mknod /dev/opencn/threads/0 c ${OPENCN_THREADS_DEV_MAJOR} 0 + + mkdir /dev/opencn/lcec + mknod /dev/opencn/lcec/0 c ${OPENCN_LCEC_DEV_MAJOR} 0 + + mkdir /dev/opencn/kinematics + mknod /dev/opencn/kinematics/0 c ${OPENCN_KINS_DEV_MAJOR} 0 + + mkdir /dev/opencn/feedopt + mknod /dev/opencn/feedopt/0 c ${OPENCN_FEEDOPT_DEV_MAJOR} 0 + + mkdir /dev/opencn/lcct + mknod /dev/opencn/lcct/0 c ${OPENCN_LCCT_DEV_MAJOR} 0 + + echo "OK" + + echo -n "Logging into file (opencn debug)... " + /root/logfile + + ;; + stop) + ;; + restart|force-reload) + ;; + *) + ;; +esac + +exit 0 diff --git a/rootfs/board/common/rootfs_overlay/etc/init.d/rcK b/rootfs/board/common/rootfs_overlay/etc/init.d/rcK new file mode 100755 index 0000000..59e9c54 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/init.d/rcK @@ -0,0 +1,27 @@ +#!/bin/sh + + +# Stop all init scripts in /etc/init.d +# executing them in reversed numerical order. +# +for i in $(ls -r /etc/init.d/S??*) ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set stop + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i stop + ;; + esac +done + diff --git a/rootfs/board/common/rootfs_overlay/etc/init.d/rcS b/rootfs/board/common/rootfs_overlay/etc/init.d/rcS new file mode 100755 index 0000000..de41153 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/init.d/rcS @@ -0,0 +1,27 @@ +#!/bin/sh + + +# Start all init scripts in /etc/init.d +# executing them in numerical order. +# +for i in /etc/init.d/S??* ;do + + # Ignore dangling symlinks (if any). + [ ! -f "$i" ] && continue + + case "$i" in + *.sh) + # Source shell script for speed. + ( + trap - INT QUIT TSTP + set start + . $i + ) + ;; + *) + # No sh extension, so fork subprocess. + $i start + ;; + esac +done + diff --git a/rootfs/board/common/rootfs_overlay/etc/network/interfaces b/rootfs/board/common/rootfs_overlay/etc/network/interfaces new file mode 100755 index 0000000..db9e1db --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/network/interfaces @@ -0,0 +1,13 @@ +# interface file auto-generated by buildroot + +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static + address 192.168.53.15 + netmask 255.255.255.0 + network 192.168.53.0 + broadcast 192.168.53.255 + gateway 192.168.53.1 + dns-nameservers 8.8.8.8 diff --git a/rootfs/board/common/rootfs_overlay/etc/opkg.conf b/rootfs/board/common/rootfs_overlay/etc/opkg.conf new file mode 100755 index 0000000..fb2a112 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/opkg.conf @@ -0,0 +1,5 @@ +src packages http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable +dest root / +dest ram /tmp +lists_dir ext /var/opkg-lists +option overlay_root /overlay diff --git a/rootfs/board/common/rootfs_overlay/etc/profile b/rootfs/board/common/rootfs_overlay/etc/profile new file mode 100755 index 0000000..a509aa4 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/etc/profile @@ -0,0 +1,54 @@ +# ~/.bashrc: executed by bash(1) for non-login interactive shells. + +export PATH=\ +/bin:\ +/sbin:\ +/usr/bin:\ +/usr/sbin:\ +/usr/bin/X11:\ +/usr/local/bin:\ +/opt/bin + +# If running interactively, then: +if [ "$PS1" ]; then + + export PS1='\[\e[0;31m\]\h\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$\[\e[m\] \[\e[0;37m\]' + alias ll='/bin/ls --color=tty -laFh' + alias ls='/bin/ls --color=tty -F' + export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.png=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:'; + + export USER=`id -un` + export LOGNAME=$USER + export HOSTNAME=`/bin/hostname` + export HISTSIZE=1000 + export HISTFILESIZE=1000 + export PAGER='/bin/more ' + export EDITOR='/bin/vi' + export INPUTRC=/etc/inputrc + export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile + + ### Some aliases + alias ps2='ps facux ' + alias ps1='ps faxo "%U %t %p %a" ' + alias af='ps af' + alias cls='clear' + alias df='df -h' + alias indent='indent -bad -bap -bbo -nbc -br -brs -c33 -cd33 -ncdb -ce -ci4 -cli0 -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -i4 -ip0 -l75 -lp -npcs -npsl -nsc -nsob -nss -ts4 ' + #alias bc='bc -l' + alias minicom='minicom -c on' + alias calc='calc -Cd ' + alias bc='calc -Cd ' + alias opkg='opkg-cl -f /etc/opkg.conf' +fi; + +# Source configuration files from /etc/profile.d +for i in /etc/profile.d/*.sh ; do + if [ -r "$i" ]; then + . $i + fi +done + +export OMP_NUM_THREADS=3 +export OPENBLAS_NUM_THREADS=3 + +startx -- vt7 diff --git a/rootfs/board/common/rootfs_overlay/root/.Xdefaults b/rootfs/board/common/rootfs_overlay/root/.Xdefaults new file mode 100644 index 0000000..412c936 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/.Xdefaults @@ -0,0 +1,3 @@ +XTerm*Background: black +XTerm*Foreground: white +XTerm*saveLines: 10000 diff --git a/rootfs/board/common/rootfs_overlay/root/PieceDemoLinuxCNC_HV_V04.ngc b/rootfs/board/common/rootfs_overlay/root/PieceDemoLinuxCNC_HV_V04.ngc new file mode 100644 index 0000000..05db8fc --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/PieceDemoLinuxCNC_HV_V04.ngc @@ -0,0 +1,442 @@ +% +(PIECEDEMOLINUXCNC_HV_V03) +(MACHINE) +( MODEL M3) +( DESCRIPTION M3) +(T1 D=1. CR=0. - ZMIN=-1. - FLAT END MILL) +N10 G90 G94 G017 G91.1 +N15 G021 +(2D EBAUCHEPOCHE1) +N25 S45000 M3 +N30 G54 +G00 X6.8 Y1.85 Z2 +N45 G00 Z0.1 +N50 G01 Z-0.2 F500 +N55 G01 X7.94 Y0.33 F5000. +N60 G02 Y-0.33 I-0.44 J-0.33 +N65 G01 X0.52 Y-10.223 +N70 G02 X-0.52 I-0.52 J0.39 +N75 G01 X-4.19 Y-5.33 +N80 G02 Y5.33 I7.107 J5.33 +N85 G01 X-0.52 Y10.223 +N90 G02 X0.52 I0.52 J-0.39 +N95 G01 X6.8 Y1.85 +N100 G03 X6.924 Y1.846 I0.064 J0.048 +N105 G01 X7.167 Y2.132 +N110 G02 X7.214 Y2.159 I0.061 J-0.052 +N115 G01 X7.537 Y2.213 +N120 G03 X7.603 Y2.292 I-0.013 J0.079 +N125 G01 Y2.309 +N130 G03 X7.568 Y2.415 I-0.175 J0. +N135 G01 X1.904 Y9.967 +N140 G03 X1.764 Y10.037 I-0.14 J-0.105 +N145 G01 X1.694 +N150 G03 X1.554 Y9.756 I0. J-0.175 +N155 G01 X7.362 Y2.011 +N160 G03 X7.603 Y2.092 I0.107 J0.08 +N165 G01 Y2.292 +N170 G02 X7.765 Y2.629 I0.431 J0. +N175 G03 X7.813 Y3. I-0.168 J0.21 +N180 G01 X2.128 Y10.579 +N195 G01 X0. +N200 G03 X-0.6 Y10.283 I0. J-0.75 +N205 G01 X-4.27 Y5.39 +N210 G03 Y-5.39 I7.187 J-5.39 +N215 G01 X-0.6 Y-10.283 +N220 G03 X0.6 I0.6 J0.45 +N225 G01 X8.02 Y-0.39 +N230 G03 X8.15 Y0. I-0.52 J0.39 +N235 G01 Y2.547 +N245 G01 X7.813 Y3. +N250 G03 X7.659 Y2.976 I-0.07 J-0.053 +N255 G01 X7.526 Y2.592 +N265 G02 X7.503 Y2.552 I-0.084 J0.026 +N270 G01 X7.245 Y2.293 +N275 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.4 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N485 G01 Z-0.6 F500. +N490 G01 X7.94 Y0.33 F5000. +N495 G02 Y-0.33 I-0.44 J-0.33 +N500 G01 X0.52 Y-10.223 +N505 G02 X-0.52 I-0.52 J0.39 +N510 G01 X-4.19 Y-5.33 +N515 G02 Y5.33 I7.107 J5.33 +N520 G01 X-0.52 Y10.223 +N525 G02 X0.52 I0.52 J-0.39 +N530 G01 X6.8 Y1.85 +N535 G03 X6.924 Y1.846 I0.064 J0.048 +N540 G01 X7.167 Y2.132 +N545 G02 X7.214 Y2.159 I0.061 J-0.052 +N550 G01 X7.537 Y2.213 +N555 G03 X7.603 Y2.292 I-0.013 J0.079 +N560 G01 Y2.309 +N565 G03 X7.568 Y2.415 I-0.175 J0. +N570 G01 X1.904 Y9.967 +N575 G03 X1.764 Y10.037 I-0.14 J-0.105 +N580 G01 X1.694 +N585 G03 X1.554 Y9.756 I0. J-0.175 +N590 G01 X7.362 Y2.011 +N595 G03 X7.603 Y2.092 I0.107 J0.08 +N600 G01 Y2.292 +N605 G02 X7.765 Y2.629 I0.431 J0. +N610 G03 X7.813 Y3. I-0.168 J0.21 +N615 G01 X2.128 Y10.579 +N630 G01 X0. +N635 G03 X-0.6 Y10.283 I0. J-0.75 +N640 G01 X-4.27 Y5.39 +N645 G03 Y-5.39 I7.187 J-5.39 +N650 G01 X-0.6 Y-10.283 +N655 G03 X0.6 I0.6 J0.45 +N660 G01 X8.02 Y-0.39 +N665 G03 X8.15 Y0. I-0.52 J0.39 +N670 G01 Y2.547 +N680 G01 X7.813 Y3. +N685 G03 X7.659 Y2.976 I-0.07 J-0.053 +N690 G01 X7.526 Y2.592 +N700 G02 X7.503 Y2.552 I-0.084 J0.026 +N705 G01 X7.245 Y2.293 +N710 G03 X7.237 Y2.178 I0.062 J-0.062 +N715 G01 Z-0.8 F500. +N720 G01 X7.362 Y2.011 F5000. +N725 G03 X7.603 Y2.092 I0.107 J0.08 +N730 G01 Y2.309 +N735 G03 X7.568 Y2.415 I-0.175 J0. +N740 G01 X1.904 Y9.967 +N745 G03 X1.764 Y10.037 I-0.14 J-0.105 +N750 G01 X1.694 +N755 G03 X1.554 Y9.756 I0. J-0.175 +N760 G01 X7.237 Y2.178 +N765 G02 X7.529 Y1.621 I-1.57 J-1.178 +N770 G03 X8.15 Y1.722 I0.302 J0.101 +N775 G01 Y2.547 +N785 G01 X2.128 Y10.579 +N800 G01 X0. +N805 G03 X-0.6 Y10.283 I0. J-0.75 +N810 G01 X-4.27 Y5.39 +N815 G03 Y-5.39 I7.187 J-5.39 +N820 G01 X-0.6 Y-10.283 +N825 G03 X0.6 I0.6 J0.45 +N830 G01 X8.02 Y-0.39 +N835 G03 X8.15 Y0. I-0.52 J0.39 +N840 G01 Y1.722 +N850 G01 X6.8 Y1.855 +N865 G01 X7.94 Y0.33 +N870 G02 Y-0.33 I-0.44 J-0.33 +N875 G01 X0.52 Y-10.223 +N880 G02 X-0.52 I-0.52 J0.39 +N885 G01 X-4.19 Y-5.33 +N890 G02 Y5.33 I7.107 J5.33 +N895 G01 X-0.52 Y10.223 +N900 G02 X0.52 I0.52 J-0.39 +N905 G01 X6.798 Y1.852 +N920 G01 Z-0.9 F500. +N925 G01 X7.94 Y0.33 F5000. +N930 G02 Y-0.33 I-0.44 J-0.33 +N935 G01 X0.52 Y-10.223 +N940 G02 X-0.52 I-0.52 J0.39 +N945 G01 X-4.19 Y-5.33 +N950 G02 Y5.33 I7.107 J5.33 +N955 G01 X-0.52 Y10.223 +N960 G02 X0.52 I0.52 J-0.39 +N965 G01 X6.8 Y1.85 +N970 G03 X6.924 Y1.846 I0.064 J0.048 +N975 G01 X7.167 Y2.132 +N980 G02 X7.214 Y2.159 I0.061 J-0.052 +N985 G01 X7.537 Y2.213 +N990 G03 X7.603 Y2.292 I-0.013 J0.079 +N995 G01 Y2.309 +N1000 G03 X7.568 Y2.415 I-0.175 J0. +N1005 G01 X1.904 Y9.967 +N1010 G03 X1.764 Y10.037 I-0.14 J-0.105 +N1015 G01 X1.694 +N1020 G03 X1.554 Y9.756 I0. J-0.175 +N1025 G01 X7.362 Y2.011 +N1030 G03 X7.603 Y2.092 I0.107 J0.08 +N1035 G01 Y2.292 +N1040 G02 X7.765 Y2.629 I0.431 J0. +N1045 G03 X7.813 Y3. I-0.168 J0.21 +N1050 G01 X2.128 Y10.579 +N1065 G01 X0. +N1070 G03 X-0.6 Y10.283 I0. J-0.75 +N1075 G01 X-4.27 Y5.39 +N1080 G03 Y-5.39 I7.187 J-5.39 +N1085 G01 X-0.6 Y-10.283 +N1090 G03 X0.6 I0.6 J0.45 +N1095 G01 X8.02 Y-0.39 +N1100 G03 X8.15 Y0. I-0.52 J0.39 +N1105 G01 Y2.547 +N1115 G01 X7.813 Y3. +N1120 G00 Z2 +(2D SURFACAGE) +N1130 G00 X-0.012 Y0. +N1135 G00 Z0.1 +N1140 G01 Z-0.1 F500 +N1145 G03 X0.033 Y-0.51 I2.932 J0. F444. +N1150 G03 X0.311 Y-0.576 I0.154 J0.027 +N1155 G01 X0.602 Y-0.189 +N1160 G03 Y0.189 I-0.252 J0.189 +N1165 G01 X0.199 Y0.726 +N1170 G03 X0.073 Y0.7 I-0.057 J-0.043 +N1175 G03 X-0.012 Y0. I2.847 J-0.701 +N1180 G02 X-0.283 Y-0.43 I-0.476 J0. +N1185 G03 X-0.498 Y-0.891 I0.172 J-0.36 +N1190 G03 X-0.164 Y-1.72 I3.409 J0.891 +N1195 G03 X0.186 Y-1.744 I0.182 J0.102 +N1200 G01 X1.282 Y-0.282 +N1205 G03 Y0.282 I-0.376 J0.282 +N1210 G01 X0.155 Y1.785 +N1215 G03 X-0.137 Y1.768 I-0.14 J-0.105 +N1220 G03 X-0.498 Y-0.891 I3.048 J-1.768 +N1225 G02 X-0.653 Y-1.361 I-0.44 J-0.115 +N1230 G03 X-0.762 Y-1.844 I0.247 J-0.309 +N1235 G03 X-0.378 Y-2.471 I3.519 J1.725 +N1240 G02 X-0.282 Y-2.607 I-2.135 J-1.601 +N1245 G03 X-0.186 Y-2.744 I2.231 J1.465 +N1250 G03 X0.186 I0.186 J0.14 +N1255 G01 X2.032 Y-0.282 +N1260 G03 Y0.282 I-0.376 J0.282 +N1265 G01 X0.186 Y2.744 +N1270 G03 X-0.186 I-0.186 J-0.14 +N1275 G03 X-1.151 Y0.168 I3.912 J-2.934 +N1280 G03 X-0.762 Y-1.844 I3.908 J-0.288 +N1285 G02 X-0.816 Y-2.338 I-0.417 J-0.204 +N1290 G03 X-0.824 Y-2.834 I0.318 J-0.254 +N1295 G02 X-0.512 Y-3.28 I-7.275 J-5.427 +N1300 G03 X-0.186 Y-3.744 I7.586 J4.981 +N1305 G03 X0.186 I0.186 J0.14 +N1310 G01 X2.782 Y-0.282 +N1315 G03 Y0.282 I-0.376 J0.282 +N1320 G01 X0.186 Y3.744 +N1325 G03 X-0.186 I-0.186 J-0.14 +N1330 G03 X-0.512 Y3.28 I7.26 J-5.445 +N1335 G02 X-0.838 Y2.816 I-7.587 J4.982 +N1340 G03 Y-2.816 I3.754 J-2.816 +N1345 G02 X-0.824 Y-2.834 I-7.261 J-5.446 +N1350 G02 X-0.797 Y-3.371 I-0.386 J-0.288 +N1355 G03 X-0.782 Y-3.908 I0.426 J-0.256 +N1360 G02 X-0.748 Y-3.957 I-17.151 J-11.729 +N1365 G03 X-0.186 Y-4.744 I17.183 J11.679 +N1370 G03 X0.186 I0.186 J0.14 +N1375 G01 X3.532 Y-0.282 +N1380 G03 Y0.282 I-0.376 J0.282 +N1385 G01 X0.186 Y4.744 +N1390 G03 X-0.186 I-0.186 J-0.14 +N1395 G03 X-0.748 Y3.957 I16.621 J-12.466 +N1400 G02 X-1.31 Y3.17 I-17.184 J11.68 +N1405 G03 Y-3.17 I4.227 J-3.17 +N1410 G02 X-0.782 Y-3.908 I-16.622 J-12.467 +N1415 G02 X-0.769 Y-4.437 I-0.402 J-0.275 +N1420 G03 X-0.749 Y-4.967 I0.406 J-0.25 +N1425 G01 X-0.186 Y-5.744 +N1430 G03 X0.186 I0.186 J0.14 +N1435 G01 X4.282 Y-0.282 +N1440 G03 Y0.282 I-0.376 J0.282 +N1445 G01 X0.186 Y5.744 +N1450 G03 X-0.186 I-0.186 J-0.14 +N1455 G03 X-0.988 Y4.637 I33.214 J-24.91 +N1460 G02 X-1.79 Y3.53 I-34.019 J23.806 +N1465 G03 Y-3.53 I4.707 J-3.53 +N1470 G01 X-0.749 Y-4.967 +N1475 G02 X-0.727 Y-5.5 I-0.391 J-0.283 +N1480 G03 X-0.705 Y-6.034 I0.41 J-0.25 +N1485 G01 X-0.186 Y-6.744 +N1490 G03 X0.186 I0.186 J0.14 +N1495 G01 X5.032 Y-0.282 +N1500 G03 Y0.282 I-0.376 J0.282 +N1505 G01 X0.186 Y6.744 +N1510 G03 X-0.186 I-0.186 J-0.14 +N1515 G01 X-2.27 Y3.89 +N1520 G03 Y-3.89 I5.187 J-3.89 +N1525 G01 X-0.705 Y-6.034 +N1530 G02 X-0.681 Y-6.572 I-0.392 J-0.287 +N1535 G03 X-0.658 Y-7.11 I0.411 J-0.252 +N1540 G03 X-0.186 Y-7.744 I83.937 J61.965 +N1545 G03 X0.186 I0.186 J0.14 +N1550 G01 X5.782 Y-0.282 +N1555 G03 Y0.282 I-0.376 J0.282 +N1560 G01 X0.186 Y7.744 +N1565 G03 X-0.186 I-0.186 J-0.14 +N1570 G01 X-2.75 Y4.25 +N1575 G03 Y-4.25 I5.667 J-4.25 +N1580 G02 X-1.468 Y-5.997 I-83.479 J-62.609 +N1585 G03 X-0.658 Y-7.11 I84.747 J60.852 +N1590 G02 X-0.632 Y-7.645 I-0.388 J-0.287 +N1595 G03 X-0.607 Y-8.18 I0.412 J-0.249 +N1600 G03 X-0.186 Y-8.744 I117.544 J87.28 +N1605 G03 X0.186 I0.186 J0.14 +N1610 G01 X6.532 Y-0.282 +N1615 G03 Y0.282 I-0.376 J0.282 +N1620 G01 X0.186 Y8.744 +N1625 G03 X-0.186 I-0.186 J-0.14 +N1630 G01 X-3.23 Y4.61 +N1635 G03 Y-4.61 I6.147 J-4.61 +N1640 G02 X-1.708 Y-6.677 I-117.147 J-87.861 +N1645 G03 X-0.607 Y-8.18 I118.646 J85.777 +N1650 G02 X-0.577 Y-8.725 I-0.397 J-0.295 +N1655 G03 X-0.548 Y-9.27 I0.422 J-0.25 +N1660 G01 X-0.08 Y-9.893 +N1665 G03 X0.08 I0.08 J0.06 +N1670 G01 X7.5 Y0. +N1675 G01 X0.08 Y9.893 +N1680 G03 X-0.08 I-0.08 J-0.06 +N1685 G01 X-3.75 Y5. +N1690 G03 Y-5. I6.667 J-5. +N1695 G01 X-0.548 Y-9.27 +N1700 G00 Z2. +(2D FINITIONPOCHE1) +N1710 G00 X6.76 Y1.82 +N1715 G00 Z0.1 +N1720 G01 Z-1 F500 +N1725 G01 X7.9 Y0.3 F444. +N1730 G02 Y-0.3 I-0.4 J-0.3 +N1735 G01 X0.48 Y-10.193 +N1740 G02 X-0.48 I-0.48 J0.36 +N1745 G01 X-4.15 Y-5.3 +N1750 G02 Y5.3 I7.067 J5.3 +N1755 G01 X-0.48 Y10.193 +N1760 G02 X0.48 I0.48 J-0.36 +N1765 G01 X6.76 Y1.82 +N1775 G01 X7.198 Y2.149 +N1785 G01 X7.416 Y1.858 +N1790 G03 X7.652 Y1.936 I0.105 J0.079 +N1795 G01 Y2.307 +N1800 G03 X7.606 Y2.446 I-0.231 J0. +N1805 G01 X1.945 Y9.994 +N1810 G03 X1.761 Y10.086 I-0.184 J-0.138 +N1815 G01 X1.589 +N1820 G03 X1.451 Y9.811 I0. J-0.172 +N1825 G01 X7.198 Y2.149 +N1830 G02 X7.518 Y1.537 I-1.724 J-1.293 +N1835 G03 X8.2 Y1.648 I0.332 J0.111 +N1840 G01 Y2.567 +N1845 G01 X2.15 Y10.633 +N1850 G01 X0. +N1855 G03 X-0.64 Y10.313 I0. J-0.8 +N1860 G01 X-4.31 Y5.42 +N1865 G03 Y-5.42 I7.227 J-5.42 +N1870 G01 X-0.64 Y-10.313 +N1875 G03 X0.64 I0.64 J0.48 +N1880 G01 X8.06 Y-0.42 +N1885 G03 X8.2 Y0. I-0.56 J0.42 +N1890 G01 Y1.648 +N1895 G00 Z2. +(2D POCHES23) +N1905 G00 X0.295 Y-3. +N1910 G00 Z0.1 +N1915 G01 Z-0.2 F500 +N1920 G01 Y-2.94 F272. +N1925 G03 X0.06 Y-2.705 I-0.235 J0. +N1930 G01 X-0.06 +N1935 G03 X-0.295 Y-2.94 I0. J-0.235 +N1940 G01 Y-3.06 +N1945 G03 X-0.06 Y-3.295 I0.235 J0. +N1950 G01 X0.06 +N1955 G03 X0.295 Y-3.06 I0. J0.235 +N1960 G01 Y-3. +N1965 G02 X0.629 Y-2.635 I0.367 J0. +N1970 G03 X0.744 Y-2.153 I-0.023 J0.26 +N1975 G03 X0.576 Y-2.105 I-0.168 J-0.271 +N1980 G01 X-0.58 +N1985 G03 X-0.895 Y-2.42 I0. J-0.315 +N1990 G01 Y-3.576 +N1995 G03 X-0.576 Y-3.895 I0.319 J0. +N2000 G01 X0.576 +N2005 G03 X0.895 Y-3.576 I0. J0.319 +N2010 G01 Y-2.424 +N2015 G03 X0.744 Y-2.153 I-0.319 J0. +N2020 G02 X0.418 Y-1.777 I0.441 J0.711 +N2025 G03 X0.002 Y-1.505 I-0.416 J-0.182 +N2030 G01 X-1.18 +N2035 G03 X-1.495 Y-1.82 I0. J-0.315 +N2040 G01 Y-4.176 +N2045 G03 X-1.176 Y-4.495 I0.319 J0. +N2050 G01 X1.176 +N2055 G03 X1.495 Y-4.176 I0. J0.319 +N2060 G01 Y-1.824 +N2065 G03 X1.176 Y-1.505 I-0.319 J0. +N2070 G01 X0.002 +N2075 G02 X-0.452 Y-1.202 I0. J0.492 +N2080 G03 X-0.905 Y-0.9 I-0.454 J-0.189 +N2085 G01 X-2.1 +N2090 G01 Y-5.1 +N2095 G01 X2.1 +N2100 G01 Y-0.9 +N2105 G01 X-0.905 +N2110 G00 Z2. +N2115 G00 X0. Y3.295 +N2116 G00 Z0.1 +N2120 G01 Z-0.2 F500. +N2125 G01 X-0.06 F1000 +N2130 G03 X-0.295 Y3.06 I0. J-0.235 +N2135 G01 Y2.94 +N2140 G03 X-0.06 Y2.705 I0.235 J0. +N2145 G01 X0.06 +N2150 G03 X0.295 Y2.94 I0. J0.235 +N2155 G01 Y3.06 +N2160 G03 X0.06 Y3.295 I-0.235 J0. +N2165 G01 X0. +N2170 G02 X-0.365 Y3.629 I0. J0.367 +N2175 G03 X-0.847 Y3.744 I-0.26 J-0.023 +N2180 G03 X-0.895 Y3.576 I0.271 J-0.168 +N2185 G01 Y2.424 +N2190 G03 X-0.576 Y2.105 I0.319 J0. +N2195 G01 X0.576 +N2200 G03 X0.895 Y2.424 I0. J0.319 +N2205 G01 Y3.576 +N2210 G03 X0.576 Y3.895 I-0.319 J0. +N2215 G01 X-0.576 +N2220 G03 X-0.847 Y3.744 I0. J-0.319 +N2225 G02 X-1.223 Y3.418 I-0.711 J0.441 +N2230 G03 X-1.495 Y3.002 I0.182 J-0.416 +N2235 G01 Y1.824 +N2240 G03 X-1.176 Y1.505 I0.319 J0. +N2245 G01 X1.176 +N2250 G03 X1.495 Y1.824 I0. J0.319 +N2255 G01 Y4.176 +N2260 G03 X1.176 Y4.495 I-0.319 J0. +N2265 G01 X-1.176 +N2270 G03 X-1.495 Y4.176 I0. J-0.319 +N2275 G01 Y3.002 +N2280 G02 X-1.798 Y2.548 I-0.492 J0. +N2285 G03 X-2.1 Y2.095 I0.189 J-0.454 +N2290 G01 Y0.9 +N2295 G01 X2.1 +N2300 G01 Y5.1 +N2305 G01 X-2.1 +N2310 G01 Y2.095 +N2315 G00 Z2. +N2325 M9 +N2340 M30 +% diff --git a/rootfs/board/common/rootfs_overlay/root/PieceDemoLinuxCNC_HV_V05.ngc b/rootfs/board/common/rootfs_overlay/root/PieceDemoLinuxCNC_HV_V05.ngc new file mode 100644 index 0000000..94af61c --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/PieceDemoLinuxCNC_HV_V05.ngc @@ -0,0 +1,592 @@ +% +(PIECEDEMOLINUXCNC_HV_V03) +(MACHINE) +( MODEL M3) +( DESCRIPTION M3) +(T1 D=1. CR=0. - ZMIN=-1. - FLAT END MILL) +N10 G90 G94 G017 G91.1 +N15 G021 +(2D EBAUCHEPOCHE1) +N25 S45000 M3 +N30 G54 +G00 X6.8 Y1.85 Z2 +N45 G00 Z0.1 +N50 G01 Z-0.1 F500 +N55 G01 X7.94 Y0.33 F5000. +N60 G02 Y-0.33 I-0.44 J-0.33 +N65 G01 X0.52 Y-10.223 +N70 G02 X-0.52 I-0.52 J0.39 +N75 G01 X-4.19 Y-5.33 +N80 G02 Y5.33 I7.107 J5.33 +N85 G01 X-0.52 Y10.223 +N90 G02 X0.52 I0.52 J-0.39 +N95 G01 X6.8 Y1.85 +N100 G03 X6.924 Y1.846 I0.064 J0.048 +N105 G01 X7.167 Y2.132 +N110 G02 X7.214 Y2.159 I0.061 J-0.052 +N115 G01 X7.537 Y2.213 +N120 G03 X7.603 Y2.292 I-0.013 J0.079 +N125 G01 Y2.309 +N130 G03 X7.568 Y2.415 I-0.175 J0. +N135 G01 X1.904 Y9.967 +N140 G03 X1.764 Y10.037 I-0.14 J-0.105 +N145 G01 X1.694 +N150 G03 X1.554 Y9.756 I0. J-0.175 +N155 G01 X7.362 Y2.011 +N160 G03 X7.603 Y2.092 I0.107 J0.08 +N165 G01 Y2.292 +N170 G02 X7.765 Y2.629 I0.431 J0. +N175 G03 X7.813 Y3. I-0.168 J0.21 +N180 G01 X2.128 Y10.579 +N195 G01 X0. +N200 G03 X-0.6 Y10.283 I0. J-0.75 +N205 G01 X-4.27 Y5.39 +N210 G03 Y-5.39 I7.187 J-5.39 +N215 G01 X-0.6 Y-10.283 +N220 G03 X0.6 I0.6 J0.45 +N225 G01 X8.02 Y-0.39 +N230 G03 X8.15 Y0. I-0.52 J0.39 +N235 G01 Y2.547 +N245 G01 X7.813 Y3. +N250 G03 X7.659 Y2.976 I-0.07 J-0.053 +N255 G01 X7.526 Y2.592 +N265 G02 X7.503 Y2.552 I-0.084 J0.026 +N270 G01 X7.245 Y2.293 +N275 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.2 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N485 G01 Z-0.3 F500. +N490 G01 X7.94 Y0.33 F5000. +N495 G02 Y-0.33 I-0.44 J-0.33 +N500 G01 X0.52 Y-10.223 +N505 G02 X-0.52 I-0.52 J0.39 +N510 G01 X-4.19 Y-5.33 +N515 G02 Y5.33 I7.107 J5.33 +N520 G01 X-0.52 Y10.223 +N525 G02 X0.52 I0.52 J-0.39 +N530 G01 X6.8 Y1.85 +N535 G03 X6.924 Y1.846 I0.064 J0.048 +N540 G01 X7.167 Y2.132 +N545 G02 X7.214 Y2.159 I0.061 J-0.052 +N550 G01 X7.537 Y2.213 +N555 G03 X7.603 Y2.292 I-0.013 J0.079 +N560 G01 Y2.309 +N565 G03 X7.568 Y2.415 I-0.175 J0. +N570 G01 X1.904 Y9.967 +N575 G03 X1.764 Y10.037 I-0.14 J-0.105 +N580 G01 X1.694 +N585 G03 X1.554 Y9.756 I0. J-0.175 +N590 G01 X7.362 Y2.011 +N595 G03 X7.603 Y2.092 I0.107 J0.08 +N600 G01 Y2.292 +N605 G02 X7.765 Y2.629 I0.431 J0. +N610 G03 X7.813 Y3. I-0.168 J0.21 +N615 G01 X2.128 Y10.579 +N630 G01 X0. +N635 G03 X-0.6 Y10.283 I0. J-0.75 +N640 G01 X-4.27 Y5.39 +N645 G03 Y-5.39 I7.187 J-5.39 +N650 G01 X-0.6 Y-10.283 +N655 G03 X0.6 I0.6 J0.45 +N660 G01 X8.02 Y-0.39 +N665 G03 X8.15 Y0. I-0.52 J0.39 +N670 G01 Y2.547 +N680 G01 X7.813 Y3. +N685 G03 X7.659 Y2.976 I-0.07 J-0.053 +N690 G01 X7.526 Y2.592 +N700 G02 X7.503 Y2.552 I-0.084 J0.026 +N705 G01 X7.245 Y2.293 +N710 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.4 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N485 G01 Z-0.5 F500. +N490 G01 X7.94 Y0.33 F5000. +N495 G02 Y-0.33 I-0.44 J-0.33 +N500 G01 X0.52 Y-10.223 +N505 G02 X-0.52 I-0.52 J0.39 +N510 G01 X-4.19 Y-5.33 +N515 G02 Y5.33 I7.107 J5.33 +N520 G01 X-0.52 Y10.223 +N525 G02 X0.52 I0.52 J-0.39 +N530 G01 X6.8 Y1.85 +N535 G03 X6.924 Y1.846 I0.064 J0.048 +N540 G01 X7.167 Y2.132 +N545 G02 X7.214 Y2.159 I0.061 J-0.052 +N550 G01 X7.537 Y2.213 +N555 G03 X7.603 Y2.292 I-0.013 J0.079 +N560 G01 Y2.309 +N565 G03 X7.568 Y2.415 I-0.175 J0. +N570 G01 X1.904 Y9.967 +N575 G03 X1.764 Y10.037 I-0.14 J-0.105 +N580 G01 X1.694 +N585 G03 X1.554 Y9.756 I0. J-0.175 +N590 G01 X7.362 Y2.011 +N595 G03 X7.603 Y2.092 I0.107 J0.08 +N600 G01 Y2.292 +N605 G02 X7.765 Y2.629 I0.431 J0. +N610 G03 X7.813 Y3. I-0.168 J0.21 +N615 G01 X2.128 Y10.579 +N630 G01 X0. +N635 G03 X-0.6 Y10.283 I0. J-0.75 +N640 G01 X-4.27 Y5.39 +N645 G03 Y-5.39 I7.187 J-5.39 +N650 G01 X-0.6 Y-10.283 +N655 G03 X0.6 I0.6 J0.45 +N660 G01 X8.02 Y-0.39 +N665 G03 X8.15 Y0. I-0.52 J0.39 +N670 G01 Y2.547 +N680 G01 X7.813 Y3. +N685 G03 X7.659 Y2.976 I-0.07 J-0.053 +N690 G01 X7.526 Y2.592 +N700 G02 X7.503 Y2.552 I-0.084 J0.026 +N705 G01 X7.245 Y2.293 +N710 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.6 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N485 G01 Z-0.7 F500. +N490 G01 X7.94 Y0.33 F5000. +N495 G02 Y-0.33 I-0.44 J-0.33 +N500 G01 X0.52 Y-10.223 +N505 G02 X-0.52 I-0.52 J0.39 +N510 G01 X-4.19 Y-5.33 +N515 G02 Y5.33 I7.107 J5.33 +N520 G01 X-0.52 Y10.223 +N525 G02 X0.52 I0.52 J-0.39 +N530 G01 X6.8 Y1.85 +N535 G03 X6.924 Y1.846 I0.064 J0.048 +N540 G01 X7.167 Y2.132 +N545 G02 X7.214 Y2.159 I0.061 J-0.052 +N550 G01 X7.537 Y2.213 +N555 G03 X7.603 Y2.292 I-0.013 J0.079 +N560 G01 Y2.309 +N565 G03 X7.568 Y2.415 I-0.175 J0. +N570 G01 X1.904 Y9.967 +N575 G03 X1.764 Y10.037 I-0.14 J-0.105 +N580 G01 X1.694 +N585 G03 X1.554 Y9.756 I0. J-0.175 +N590 G01 X7.362 Y2.011 +N595 G03 X7.603 Y2.092 I0.107 J0.08 +N600 G01 Y2.292 +N605 G02 X7.765 Y2.629 I0.431 J0. +N610 G03 X7.813 Y3. I-0.168 J0.21 +N615 G01 X2.128 Y10.579 +N630 G01 X0. +N635 G03 X-0.6 Y10.283 I0. J-0.75 +N640 G01 X-4.27 Y5.39 +N645 G03 Y-5.39 I7.187 J-5.39 +N650 G01 X-0.6 Y-10.283 +N655 G03 X0.6 I0.6 J0.45 +N660 G01 X8.02 Y-0.39 +N665 G03 X8.15 Y0. I-0.52 J0.39 +N670 G01 Y2.547 +N680 G01 X7.813 Y3. +N685 G03 X7.659 Y2.976 I-0.07 J-0.053 +N690 G01 X7.526 Y2.592 +N700 G02 X7.503 Y2.552 I-0.084 J0.026 +N705 G01 X7.245 Y2.293 +N710 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.8 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N920 G01 Z-0.9 F500. +N925 G01 X7.94 Y0.33 F5000. +N930 G02 Y-0.33 I-0.44 J-0.33 +N935 G01 X0.52 Y-10.223 +N940 G02 X-0.52 I-0.52 J0.39 +N945 G01 X-4.19 Y-5.33 +N950 G02 Y5.33 I7.107 J5.33 +N955 G01 X-0.52 Y10.223 +N960 G02 X0.52 I0.52 J-0.39 +N965 G01 X6.8 Y1.85 +N970 G03 X6.924 Y1.846 I0.064 J0.048 +N975 G01 X7.167 Y2.132 +N980 G02 X7.214 Y2.159 I0.061 J-0.052 +N985 G01 X7.537 Y2.213 +N990 G03 X7.603 Y2.292 I-0.013 J0.079 +N995 G01 Y2.309 +N1000 G03 X7.568 Y2.415 I-0.175 J0. +N1005 G01 X1.904 Y9.967 +N1010 G03 X1.764 Y10.037 I-0.14 J-0.105 +N1015 G01 X1.694 +N1020 G03 X1.554 Y9.756 I0. J-0.175 +N1025 G01 X7.362 Y2.011 +N1030 G03 X7.603 Y2.092 I0.107 J0.08 +N1035 G01 Y2.292 +N1040 G02 X7.765 Y2.629 I0.431 J0. +N1045 G03 X7.813 Y3. I-0.168 J0.21 +N1050 G01 X2.128 Y10.579 +N1065 G01 X0. +N1070 G03 X-0.6 Y10.283 I0. J-0.75 +N1075 G01 X-4.27 Y5.39 +N1080 G03 Y-5.39 I7.187 J-5.39 +N1085 G01 X-0.6 Y-10.283 +N1090 G03 X0.6 I0.6 J0.45 +N1095 G01 X8.02 Y-0.39 +N1100 G03 X8.15 Y0. I-0.52 J0.39 +N1105 G01 Y2.547 +N1115 G01 X7.813 Y3. +N1120 G00 Z2 +(2D SURFACAGE) +N1130 G00 X-0.012 Y0. +N1135 G00 Z0.1 +N1140 G01 Z-0.1 F500 +N1145 G03 X0.033 Y-0.51 I2.932 J0. F444. +N1150 G03 X0.311 Y-0.576 I0.154 J0.027 +N1155 G01 X0.602 Y-0.189 +N1160 G03 Y0.189 I-0.252 J0.189 +N1165 G01 X0.199 Y0.726 +N1170 G03 X0.073 Y0.7 I-0.057 J-0.043 +N1175 G03 X-0.012 Y0. I2.847 J-0.701 +N1180 G02 X-0.283 Y-0.43 I-0.476 J0. +N1185 G03 X-0.498 Y-0.891 I0.172 J-0.36 +N1190 G03 X-0.164 Y-1.72 I3.409 J0.891 +N1195 G03 X0.186 Y-1.744 I0.182 J0.102 +N1200 G01 X1.282 Y-0.282 +N1205 G03 Y0.282 I-0.376 J0.282 +N1210 G01 X0.155 Y1.785 +N1215 G03 X-0.137 Y1.768 I-0.14 J-0.105 +N1220 G03 X-0.498 Y-0.891 I3.048 J-1.768 +N1225 G02 X-0.653 Y-1.361 I-0.44 J-0.115 +N1230 G03 X-0.762 Y-1.844 I0.247 J-0.309 +N1235 G03 X-0.378 Y-2.471 I3.519 J1.725 +N1240 G02 X-0.282 Y-2.607 I-2.135 J-1.601 +N1245 G03 X-0.186 Y-2.744 I2.231 J1.465 +N1250 G03 X0.186 I0.186 J0.14 +N1255 G01 X2.032 Y-0.282 +N1260 G03 Y0.282 I-0.376 J0.282 +N1265 G01 X0.186 Y2.744 +N1270 G03 X-0.186 I-0.186 J-0.14 +N1275 G03 X-1.151 Y0.168 I3.912 J-2.934 +N1280 G03 X-0.762 Y-1.844 I3.908 J-0.288 +N1285 G02 X-0.816 Y-2.338 I-0.417 J-0.204 +N1290 G03 X-0.824 Y-2.834 I0.318 J-0.254 +N1295 G02 X-0.512 Y-3.28 I-7.275 J-5.427 +N1300 G03 X-0.186 Y-3.744 I7.586 J4.981 +N1305 G03 X0.186 I0.186 J0.14 +N1310 G01 X2.782 Y-0.282 +N1315 G03 Y0.282 I-0.376 J0.282 +N1320 G01 X0.186 Y3.744 +N1325 G03 X-0.186 I-0.186 J-0.14 +N1330 G03 X-0.512 Y3.28 I7.26 J-5.445 +N1335 G02 X-0.838 Y2.816 I-7.587 J4.982 +N1340 G03 Y-2.816 I3.754 J-2.816 +N1345 G02 X-0.824 Y-2.834 I-7.261 J-5.446 +N1350 G02 X-0.797 Y-3.371 I-0.386 J-0.288 +N1355 G03 X-0.782 Y-3.908 I0.426 J-0.256 +N1360 G02 X-0.748 Y-3.957 I-17.151 J-11.729 +N1365 G03 X-0.186 Y-4.744 I17.183 J11.679 +N1370 G03 X0.186 I0.186 J0.14 +N1375 G01 X3.532 Y-0.282 +N1380 G03 Y0.282 I-0.376 J0.282 +N1385 G01 X0.186 Y4.744 +N1390 G03 X-0.186 I-0.186 J-0.14 +N1395 G03 X-0.748 Y3.957 I16.621 J-12.466 +N1400 G02 X-1.31 Y3.17 I-17.184 J11.68 +N1405 G03 Y-3.17 I4.227 J-3.17 +N1410 G02 X-0.782 Y-3.908 I-16.622 J-12.467 +N1415 G02 X-0.769 Y-4.437 I-0.402 J-0.275 +N1420 G03 X-0.749 Y-4.967 I0.406 J-0.25 +N1425 G01 X-0.186 Y-5.744 +N1430 G03 X0.186 I0.186 J0.14 +N1435 G01 X4.282 Y-0.282 +N1440 G03 Y0.282 I-0.376 J0.282 +N1445 G01 X0.186 Y5.744 +N1450 G03 X-0.186 I-0.186 J-0.14 +N1455 G03 X-0.988 Y4.637 I33.214 J-24.91 +N1460 G02 X-1.79 Y3.53 I-34.019 J23.806 +N1465 G03 Y-3.53 I4.707 J-3.53 +N1470 G01 X-0.749 Y-4.967 +N1475 G02 X-0.727 Y-5.5 I-0.391 J-0.283 +N1480 G03 X-0.705 Y-6.034 I0.41 J-0.25 +N1485 G01 X-0.186 Y-6.744 +N1490 G03 X0.186 I0.186 J0.14 +N1495 G01 X5.032 Y-0.282 +N1500 G03 Y0.282 I-0.376 J0.282 +N1505 G01 X0.186 Y6.744 +N1510 G03 X-0.186 I-0.186 J-0.14 +N1515 G01 X-2.27 Y3.89 +N1520 G03 Y-3.89 I5.187 J-3.89 +N1525 G01 X-0.705 Y-6.034 +N1530 G02 X-0.681 Y-6.572 I-0.392 J-0.287 +N1535 G03 X-0.658 Y-7.11 I0.411 J-0.252 +N1540 G03 X-0.186 Y-7.744 I83.937 J61.965 +N1545 G03 X0.186 I0.186 J0.14 +N1550 G01 X5.782 Y-0.282 +N1555 G03 Y0.282 I-0.376 J0.282 +N1560 G01 X0.186 Y7.744 +N1565 G03 X-0.186 I-0.186 J-0.14 +N1570 G01 X-2.75 Y4.25 +N1575 G03 Y-4.25 I5.667 J-4.25 +N1580 G02 X-1.468 Y-5.997 I-83.479 J-62.609 +N1585 G03 X-0.658 Y-7.11 I84.747 J60.852 +N1590 G02 X-0.632 Y-7.645 I-0.388 J-0.287 +N1595 G03 X-0.607 Y-8.18 I0.412 J-0.249 +N1600 G03 X-0.186 Y-8.744 I117.544 J87.28 +N1605 G03 X0.186 I0.186 J0.14 +N1610 G01 X6.532 Y-0.282 +N1615 G03 Y0.282 I-0.376 J0.282 +N1620 G01 X0.186 Y8.744 +N1625 G03 X-0.186 I-0.186 J-0.14 +N1630 G01 X-3.23 Y4.61 +N1635 G03 Y-4.61 I6.147 J-4.61 +N1640 G02 X-1.708 Y-6.677 I-117.147 J-87.861 +N1645 G03 X-0.607 Y-8.18 I118.646 J85.777 +N1650 G02 X-0.577 Y-8.725 I-0.397 J-0.295 +N1655 G03 X-0.548 Y-9.27 I0.422 J-0.25 +N1660 G01 X-0.08 Y-9.893 +N1665 G03 X0.08 I0.08 J0.06 +N1670 G01 X7.5 Y0. +N1675 G01 X0.08 Y9.893 +N1680 G03 X-0.08 I-0.08 J-0.06 +N1685 G01 X-3.75 Y5. +N1690 G03 Y-5. I6.667 J-5. +N1695 G01 X-0.548 Y-9.27 +N1700 G00 Z2. +(2D FINITIONPOCHE1) +N1710 G00 X6.76 Y1.82 +N1715 G00 Z0.1 +N1720 G01 Z-1 F500 +N1725 G01 X7.9 Y0.3 F444. +N1730 G02 Y-0.3 I-0.4 J-0.3 +N1735 G01 X0.48 Y-10.193 +N1740 G02 X-0.48 I-0.48 J0.36 +N1745 G01 X-4.15 Y-5.3 +N1750 G02 Y5.3 I7.067 J5.3 +N1755 G01 X-0.48 Y10.193 +N1760 G02 X0.48 I0.48 J-0.36 +N1765 G01 X6.76 Y1.82 +N1775 G01 X7.198 Y2.149 +N1785 G01 X7.416 Y1.858 +N1790 G03 X7.652 Y1.936 I0.105 J0.079 +N1795 G01 Y2.307 +N1800 G03 X7.606 Y2.446 I-0.231 J0. +N1805 G01 X1.945 Y9.994 +N1810 G03 X1.761 Y10.086 I-0.184 J-0.138 +N1815 G01 X1.589 +N1820 G03 X1.451 Y9.811 I0. J-0.172 +N1825 G01 X7.198 Y2.149 +N1830 G02 X7.518 Y1.537 I-1.724 J-1.293 +N1835 G03 X8.2 Y1.648 I0.332 J0.111 +N1840 G01 Y2.567 +N1845 G01 X2.15 Y10.633 +N1850 G01 X0. +N1855 G03 X-0.64 Y10.313 I0. J-0.8 +N1860 G01 X-4.31 Y5.42 +N1865 G03 Y-5.42 I7.227 J-5.42 +N1870 G01 X-0.64 Y-10.313 +N1875 G03 X0.64 I0.64 J0.48 +N1880 G01 X8.06 Y-0.42 +N1885 G03 X8.2 Y0. I-0.56 J0.42 +N1890 G01 Y1.648 +N1895 G00 Z2. +(2D POCHES23) +N1905 G00 X0.295 Y-3. +N1910 G00 Z0.1 +N1915 G01 Z-0.2 F500 +N1920 G01 Y-2.94 F272. +N1925 G03 X0.06 Y-2.705 I-0.235 J0. +N1930 G01 X-0.06 +N1935 G03 X-0.295 Y-2.94 I0. J-0.235 +N1940 G01 Y-3.06 +N1945 G03 X-0.06 Y-3.295 I0.235 J0. +N1950 G01 X0.06 +N1955 G03 X0.295 Y-3.06 I0. J0.235 +N1960 G01 Y-3. +N1965 G02 X0.629 Y-2.635 I0.367 J0. +N1970 G03 X0.744 Y-2.153 I-0.023 J0.26 +N1975 G03 X0.576 Y-2.105 I-0.168 J-0.271 +N1980 G01 X-0.58 +N1985 G03 X-0.895 Y-2.42 I0. J-0.315 +N1990 G01 Y-3.576 +N1995 G03 X-0.576 Y-3.895 I0.319 J0. +N2000 G01 X0.576 +N2005 G03 X0.895 Y-3.576 I0. J0.319 +N2010 G01 Y-2.424 +N2015 G03 X0.744 Y-2.153 I-0.319 J0. +N2020 G02 X0.418 Y-1.777 I0.441 J0.711 +N2025 G03 X0.002 Y-1.505 I-0.416 J-0.182 +N2030 G01 X-1.18 +N2035 G03 X-1.495 Y-1.82 I0. J-0.315 +N2040 G01 Y-4.176 +N2045 G03 X-1.176 Y-4.495 I0.319 J0. +N2050 G01 X1.176 +N2055 G03 X1.495 Y-4.176 I0. J0.319 +N2060 G01 Y-1.824 +N2065 G03 X1.176 Y-1.505 I-0.319 J0. +N2070 G01 X0.002 +N2075 G02 X-0.452 Y-1.202 I0. J0.492 +N2080 G03 X-0.905 Y-0.9 I-0.454 J-0.189 +N2085 G01 X-2.1 +N2090 G01 Y-5.1 +N2095 G01 X2.1 +N2100 G01 Y-0.9 +N2105 G01 X-0.905 +N2110 G00 Z2. +N2115 G00 X0. Y3.295 +N2116 G00 Z0.1 +N2120 G01 Z-0.2 F500. +N2125 G01 X-0.06 F1000 +N2130 G03 X-0.295 Y3.06 I0. J-0.235 +N2135 G01 Y2.94 +N2140 G03 X-0.06 Y2.705 I0.235 J0. +N2145 G01 X0.06 +N2150 G03 X0.295 Y2.94 I0. J0.235 +N2155 G01 Y3.06 +N2160 G03 X0.06 Y3.295 I-0.235 J0. +N2165 G01 X0. +N2170 G02 X-0.365 Y3.629 I0. J0.367 +N2175 G03 X-0.847 Y3.744 I-0.26 J-0.023 +N2180 G03 X-0.895 Y3.576 I0.271 J-0.168 +N2185 G01 Y2.424 +N2190 G03 X-0.576 Y2.105 I0.319 J0. +N2195 G01 X0.576 +N2200 G03 X0.895 Y2.424 I0. J0.319 +N2205 G01 Y3.576 +N2210 G03 X0.576 Y3.895 I-0.319 J0. +N2215 G01 X-0.576 +N2220 G03 X-0.847 Y3.744 I0. J-0.319 +N2225 G02 X-1.223 Y3.418 I-0.711 J0.441 +N2230 G03 X-1.495 Y3.002 I0.182 J-0.416 +N2235 G01 Y1.824 +N2240 G03 X-1.176 Y1.505 I0.319 J0. +N2245 G01 X1.176 +N2250 G03 X1.495 Y1.824 I0. J0.319 +N2255 G01 Y4.176 +N2260 G03 X1.176 Y4.495 I-0.319 J0. +N2265 G01 X-1.176 +N2270 G03 X-1.495 Y4.176 I0. J-0.319 +N2275 G01 Y3.002 +N2280 G02 X-1.798 Y2.548 I-0.492 J0. +N2285 G03 X-2.1 Y2.095 I0.189 J-0.454 +N2290 G01 Y0.9 +N2295 G01 X2.1 +N2300 G01 Y5.1 +N2305 G01 X-2.1 +N2310 G01 Y2.095 +N2315 G00 Z2. +N2325 M9 +N2340 M30 +% diff --git a/rootfs/board/common/rootfs_overlay/root/PocheCuivre.ngc b/rootfs/board/common/rootfs_overlay/root/PocheCuivre.ngc new file mode 100644 index 0000000..0003f0c --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/PocheCuivre.ngc @@ -0,0 +1,2021 @@ +% +(POCHECUIVRE) +(MACHINE) +( MODEL M3) +( DESCRIPTION M3) +(T1 D=1. CR=0. - ZMIN=-1. - FLAT END MILL) +N10 G90 G94 G017 G91.1 +N15 G021 +(2D POCKET2) +N25 S45000 M3 +N30 G54 +G00 X0. Y5.226 Z2 +N45 G00 Z0.1 +N50 G01 Z-0.2 F500 +N55 G01 X-0.051 +N60 G03 X-0.226 Y5.051 I0. J-0.175 +N65 G01 Y-5.051 +N70 G03 X-0.051 Y-5.226 I0.175 J0. +N75 G01 X0.051 +N80 G03 X0.226 Y-5.051 I0. J0.175 +N85 G01 Y5.051 +N90 G03 X0.051 Y5.226 I-0.175 J0. +N95 G01 X0. +N100 G02 X-0.283 Y5.47 I0. J0.286 +N105 G03 X-0.65 Y5.543 I-0.196 J-0.03 +N110 G03 X-0.695 Y5.38 I0.27 J-0.163 +N115 G01 Y-5.376 +N120 G03 X-0.376 Y-5.695 I0.319 J0. +N125 G01 X0.376 +N130 G03 X0.695 Y-5.376 I0. J0.319 +N135 G01 Y5.376 +N140 G03 X0.376 Y5.695 I-0.319 J0. +N145 G01 X-0.38 +N150 G03 X-0.65 Y5.543 I0. J-0.315 +N155 G02 X-1.023 Y5.216 I-0.699 J0.422 +N160 G03 X-1.295 Y4.802 I0.18 J-0.415 +N165 G01 Y-5.976 +N170 G03 X-0.976 Y-6.295 I0.319 J0. +N175 G01 X0.976 +N180 G03 X1.295 Y-5.976 I0. J0.319 +N185 G01 Y5.976 +N190 G03 X0.976 Y6.295 I-0.319 J0. +N195 G01 X-0.98 +N200 G03 X-1.295 Y5.98 I0. J-0.315 +N205 G01 Y4.802 +N210 G02 X-1.595 Y4.352 I-0.488 J0. +N215 G03 X-1.895 Y3.902 I0.188 J-0.45 +N220 G01 Y-6.576 +N225 G03 X-1.576 Y-6.895 I0.319 J0. +N230 G01 X1.576 +N235 G03 X1.895 Y-6.576 I0. J0.319 +N240 G01 Y6.576 +N245 G03 X1.576 Y6.895 I-0.319 J0. +N250 G01 X-1.58 +N255 G03 X-1.895 Y6.58 I0. J-0.315 +N260 G01 Y3.902 +N265 G02 X-2.195 Y3.452 I-0.487 J0. +N270 G03 X-2.495 Y3.002 I0.188 J-0.45 +N275 G01 Y-7.176 +N280 G03 X-2.176 Y-7.495 I0.319 J0. +N285 G01 X2.176 +N290 G03 X2.495 Y-7.176 I0. J0.319 +N295 G01 Y7.176 +N300 G03 X2.176 Y7.495 I-0.319 J0. +N305 G01 X-2.18 +N310 G03 X-2.495 Y7.18 I0. J-0.315 +N315 G01 Y3.002 +N320 G02 X-2.795 Y2.552 I-0.488 J0. +N325 G03 X-3.095 Y2.102 I0.188 J-0.45 +N330 G01 Y-7.776 +N335 G03 X-2.776 Y-8.095 I0.319 J0. +N340 G01 X2.776 +N345 G03 X3.095 Y-7.776 I0. J0.319 +N350 G01 Y7.776 +N355 G03 X2.776 Y8.095 I-0.319 J0. +N360 G01 X-2.78 +N365 G03 X-3.095 Y7.78 I0. J-0.315 +N370 G01 Y2.102 +N375 G02 X-3.395 Y1.652 I-0.487 J0. +N380 G03 X-3.695 Y1.202 I0.188 J-0.45 +N385 G01 Y-8.376 +N390 G03 X-3.376 Y-8.695 I0.319 J0. +N395 G01 X3.376 +N400 G03 X3.695 Y-8.376 I0. J0.319 +N405 G01 Y8.376 +N410 G03 X3.376 Y8.695 I-0.319 J0. +N415 G01 X-3.38 +N420 G03 X-3.695 Y8.38 I0. J-0.315 +N425 G01 Y1.202 +N430 G02 X-3.995 Y0.752 I-0.487 J0. +N435 G03 X-4.295 Y0.302 I0.188 J-0.45 +N440 G01 Y-8.976 +N445 G03 X-3.976 Y-9.295 I0.319 J0. +N450 G01 X3.976 +N455 G03 X4.295 Y-8.976 I0. J0.319 +N460 G01 Y8.976 +N465 G03 X3.976 Y9.295 I-0.319 J0. +N470 G01 X-3.98 +N475 G03 X-4.295 Y8.98 I0. J-0.315 +N480 G01 Y0.302 +N485 G02 X-4.595 Y-0.148 I-0.487 J0. +N490 G03 X-4.895 Y-0.598 I0.188 J-0.45 +N495 G01 Y-9.576 +N500 G03 X-4.576 Y-9.895 I0.319 J0. +N505 G01 X4.576 +N510 G03 X4.895 Y-9.576 I0. J0.319 +N515 G01 Y9.576 +N520 G03 X4.576 Y9.895 I-0.319 J0. +N525 G01 X-4.58 +N530 G03 X-4.895 Y9.58 I0. J-0.315 +N535 G01 Y-0.598 +N540 G02 X-5.195 Y-1.048 I-0.488 J0. +N545 G03 X-5.495 Y-1.498 I0.188 J-0.45 +N550 G01 Y-10.176 +N555 G03 X-5.176 Y-10.495 I0.319 J0. +N560 G01 X5.176 +N565 G03 X5.495 Y-10.176 I0. J0.319 +N570 G01 Y10.176 +N575 G03 X5.176 Y10.495 I-0.319 J0. +N580 G01 X-5.18 +N585 G03 X-5.495 Y10.18 I0. J-0.315 +N590 G01 Y-1.498 +N595 G02 X-5.795 Y-1.948 I-0.488 J0. +N600 G03 X-6.095 Y-2.398 I0.188 J-0.45 +N605 G01 Y-10.776 +N610 G03 X-5.776 Y-11.095 I0.319 J0. +N615 G01 X5.776 +N620 G03 X6.095 Y-10.776 I0. J0.319 +N625 G01 Y10.776 +N630 G03 X5.776 Y11.095 I-0.319 J0. +N635 G01 X-5.78 +N640 G03 X-6.095 Y10.78 I0. J-0.315 +N645 G01 Y-2.398 +N650 G02 X-6.395 Y-2.848 I-0.488 J0. +N655 G03 X-6.695 Y-3.298 I0.188 J-0.45 +N660 G01 Y-11.376 +N665 G03 X-6.376 Y-11.695 I0.319 J0. +N670 G01 X6.376 +N675 G03 X6.695 Y-11.376 I0. J0.319 +N680 G01 Y11.376 +N685 G03 X6.376 Y11.695 I-0.319 J0. +N690 G01 X-6.38 +N695 G03 X-6.695 Y11.38 I0. J-0.315 +N700 G01 Y-3.298 +N705 G02 X-6.995 Y-3.748 I-0.487 J0. +N710 G03 X-7.295 Y-4.198 I0.188 J-0.45 +N715 G01 Y-11.976 +N720 G03 X-6.976 Y-12.295 I0.319 J0. +N725 G01 X6.976 +N730 G03 X7.295 Y-11.976 I0. J0.319 +N735 G01 Y11.976 +N740 G03 X6.976 Y12.295 I-0.319 J0. +N745 G01 X-6.98 +N750 G03 X-7.295 Y11.98 I0. J-0.315 +N755 G01 Y-4.198 +N760 G02 X-7.595 Y-4.648 I-0.487 J0. +N765 G03 X-7.895 Y-5.098 I0.188 J-0.45 +N770 G01 Y-12.576 +N775 G03 X-7.576 Y-12.895 I0.319 J0. +N780 G01 X7.576 +N785 G03 X7.895 Y-12.576 I0. J0.319 +N790 G01 Y12.576 +N795 G03 X7.576 Y12.895 I-0.319 J0. +N800 G01 X-7.58 +N805 G03 X-7.895 Y12.58 I0. J-0.315 +N810 G01 Y-5.098 +N815 G02 X-8.195 Y-5.548 I-0.487 J0. +N820 G03 X-8.495 Y-5.998 I0.188 J-0.45 +N825 G01 Y-13.176 +N830 G03 X-8.176 Y-13.495 I0.319 J0. +N835 G01 X8.176 +N840 G03 X8.495 Y-13.176 I0. J0.319 +N845 G01 Y13.176 +N850 G03 X8.176 Y13.495 I-0.319 J0. +N855 G01 X-8.18 +N860 G03 X-8.495 Y13.18 I0. J-0.315 +N865 G01 Y-5.998 +N870 G02 X-8.795 Y-6.448 I-0.488 J0. +N875 G03 X-9.095 Y-6.898 I0.188 J-0.45 +N880 G01 Y-13.776 +N885 G03 X-8.776 Y-14.095 I0.319 J0. +N890 G01 X8.776 +N895 G03 X9.095 Y-13.776 I0. J0.319 +N900 G01 Y13.776 +N905 G03 X8.776 Y14.095 I-0.319 J0. +N910 G01 X-8.78 +N915 G03 X-9.095 Y13.78 I0. J-0.315 +N920 G01 Y-6.898 +N925 G02 X-9.395 Y-7.348 I-0.488 J0. +N930 G03 X-9.695 Y-7.798 I0.188 J-0.45 +N935 G01 Y-14.376 +N940 G03 X-9.376 Y-14.695 I0.319 J0. +N945 G01 X9.376 +N950 G03 X9.695 Y-14.376 I0. J0.319 +N955 G01 Y14.376 +N960 G03 X9.376 Y14.695 I-0.319 J0. +N965 G01 X-9.38 +N970 G03 X-9.695 Y14.38 I0. J-0.315 +N975 G01 Y-7.798 +N980 G02 X-9.995 Y-8.248 I-0.488 J0. +N985 G03 X-10.295 Y-8.698 I0.188 J-0.45 +N990 G01 Y-14.976 +N995 G03 X-9.976 Y-15.295 I0.319 J0. +N1000 G01 X9.976 +N1005 G03 X10.295 Y-14.976 I0. J0.319 +N1010 G01 Y14.976 +N1015 G03 X9.976 Y15.295 I-0.319 J0. +N1020 G01 X-9.98 +N1025 G03 X-10.295 Y14.98 I0. J-0.315 +N1030 G01 Y-8.698 +N1035 G02 X-10.595 Y-9.148 I-0.488 J0. +N1040 G03 X-10.895 Y-9.598 I0.188 J-0.45 +N1045 G01 Y-15.576 +N1050 G03 X-10.576 Y-15.895 I0.319 J0. +N1055 G01 X10.576 +N1060 G03 X10.895 Y-15.576 I0. J0.319 +N1065 G01 Y15.576 +N1070 G03 X10.576 Y15.895 I-0.319 J0. +N1075 G01 X-10.58 +N1080 G03 X-10.895 Y15.58 I0. J-0.315 +N1085 G01 Y-9.598 +N1090 G02 X-11.195 Y-10.048 I-0.487 J0. +N1095 G03 X-11.495 Y-10.498 I0.188 J-0.45 +N1100 G01 Y-16.176 +N1105 G03 X-11.176 Y-16.495 I0.319 J0. +N1110 G01 X11.176 +N1115 G03 X11.495 Y-16.176 I0. J0.319 +N1120 G01 Y16.176 +N1125 G03 X11.176 Y16.495 I-0.319 J0. +N1130 G01 X-11.18 +N1135 G03 X-11.495 Y16.18 I0. J-0.315 +N1140 G01 Y-10.498 +N1145 G02 X-11.795 Y-10.948 I-0.488 J0. +N1150 G03 X-12.095 Y-11.398 I0.188 J-0.45 +N1155 G01 Y-16.776 +N1160 G03 X-11.776 Y-17.095 I0.319 J0. +N1165 G01 X11.776 +N1170 G03 X12.095 Y-16.776 I0. J0.319 +N1175 G01 Y16.776 +N1180 G03 X11.776 Y17.095 I-0.319 J0. +N1185 G01 X-11.78 +N1190 G03 X-12.095 Y16.78 I0. J-0.315 +N1195 G01 Y-11.398 +N1200 G02 X-12.395 Y-11.848 I-0.488 J0. +N1205 G03 X-12.695 Y-12.298 I0.188 J-0.45 +N1210 G01 Y-17.376 +N1215 G03 X-12.376 Y-17.695 I0.319 J0. +N1220 G01 X12.376 +N1225 G03 X12.695 Y-17.376 I0. J0.319 +N1230 G01 Y17.376 +N1235 G03 X12.376 Y17.695 I-0.319 J0. +N1240 G01 X-12.38 +N1245 G03 X-12.695 Y17.38 I0. J-0.315 +N1250 G01 Y-12.298 +N1255 G02 X-12.995 Y-12.748 I-0.488 J0. +N1260 G03 X-13.295 Y-13.198 I0.188 J-0.45 +N1265 G01 Y-17.976 +N1270 G03 X-12.976 Y-18.295 I0.319 J0. +N1275 G01 X12.976 +N1280 G03 X13.295 Y-17.976 I0. J0.319 +N1285 G01 Y17.976 +N1290 G03 X12.976 Y18.295 I-0.319 J0. +N1295 G01 X-12.98 +N1300 G03 X-13.295 Y17.98 I0. J-0.315 +N1305 G01 Y-13.198 +N1310 G02 X-13.595 Y-13.648 I-0.488 J0. +N1315 G03 X-13.895 Y-14.098 I0.188 J-0.45 +N1320 G01 Y-18.576 +N1325 G03 X-13.576 Y-18.895 I0.319 J0. +N1330 G01 X13.576 +N1335 G03 X13.895 Y-18.576 I0. J0.319 +N1340 G01 Y18.576 +N1345 G03 X13.576 Y18.895 I-0.319 J0. +N1350 G01 X-13.58 +N1355 G03 X-13.895 Y18.58 I0. J-0.315 +N1360 G01 Y-14.098 +N1365 G02 X-14.195 Y-14.548 I-0.487 J0. +N1370 G03 X-14.495 Y-14.998 I0.188 J-0.45 +N1375 G01 Y-19.176 +N1380 G03 X-14.176 Y-19.495 I0.319 J0. +N1385 G01 X14.176 +N1390 G03 X14.495 Y-19.176 I0. J0.319 +N1395 G01 Y19.176 +N1400 G03 X14.176 Y19.495 I-0.319 J0. +N1405 G01 X-14.18 +N1410 G03 X-14.495 Y19.18 I0. J-0.315 +N1415 G01 Y-14.998 +N1420 G02 X-14.795 Y-15.448 I-0.488 J0. +N1425 G03 X-15.095 Y-15.898 I0.188 J-0.45 +N1430 G01 Y-19.776 +N1435 G03 X-14.776 Y-20.095 I0.319 J0. +N1440 G01 X14.776 +N1445 G03 X15.095 Y-19.776 I0. J0.319 +N1450 G01 Y19.776 +N1455 G03 X14.776 Y20.095 I-0.319 J0. +N1460 G01 X-14.78 +N1465 G03 X-15.095 Y19.78 I0. J-0.315 +N1470 G01 Y-15.898 +N1475 G02 X-15.395 Y-16.348 I-0.488 J0. +N1480 G03 X-15.695 Y-16.798 I0.188 J-0.45 +N1485 G01 Y-20.376 +N1490 G03 X-15.376 Y-20.695 I0.319 J0. +N1495 G01 X15.376 +N1500 G03 X15.695 Y-20.376 I0. J0.319 +N1505 G01 Y20.376 +N1510 G03 X15.376 Y20.695 I-0.319 J0. +N1515 G01 X-15.38 +N1520 G03 X-15.695 Y20.38 I0. J-0.315 +N1525 G01 Y-16.798 +N1530 G02 X-15.995 Y-17.248 I-0.488 J0. +N1535 G03 X-16.295 Y-17.698 I0.188 J-0.45 +N1540 G01 Y-20.976 +N1545 G03 X-15.976 Y-21.295 I0.319 J0. +N1550 G01 X15.976 +N1555 G03 X16.295 Y-20.976 I0. J0.319 +N1560 G01 Y20.976 +N1565 G03 X15.976 Y21.295 I-0.319 J0. +N1570 G01 X-15.98 +N1575 G03 X-16.295 Y20.98 I0. J-0.315 +N1580 G01 Y-17.698 +N1585 G02 X-16.595 Y-18.148 I-0.487 J0. +N1590 G03 X-16.895 Y-18.598 I0.188 J-0.45 +N1595 G01 Y-21.576 +N1600 G03 X-16.576 Y-21.895 I0.319 J0. +N1605 G01 X16.576 +N1610 G03 X16.895 Y-21.576 I0. J0.319 +N1615 G01 Y21.576 +N1620 G03 X16.576 Y21.895 I-0.319 J0. +N1625 G01 X-16.58 +N1630 G03 X-16.895 Y21.58 I0. J-0.315 +N1635 G01 Y-18.598 +N1640 G02 X-17.198 Y-19.052 I-0.492 J0. +N1645 G03 X-17.5 Y-19.506 I0.189 J-0.454 +N1650 G01 Y-22. +N1655 G03 X-17. Y-22.5 I0.5 J0. +N1660 G01 X17. +N1665 G03 X17.5 Y-22. I0. J0.5 +N1670 G01 Y22. +N1675 G03 X17. Y22.5 I-0.5 J0. +N1680 G01 X-17. +N1685 G03 X-17.5 Y22. I0. J-0.5 +N1690 G01 Y-19.506 +N1695 G03 X-16.712 Y-19.89 I0.487 J0. +N1700 G01 X-13.1 Y-17.065 +N1705 G03 X-12.981 Y-16.929 I-0.3 J0.384 +N1710 G01 X-0.115 Y4.806 +N1715 G01 X0.065 Y5.113 +N1720 G03 X0. Y5.226 I-0.065 J0.038 +N1725 G01 Z-0.4 +N1730 G01 X-0.051 +N1735 G03 X-0.226 Y5.051 I0. J-0.175 +N1740 G01 Y-5.051 +N1745 G03 X-0.051 Y-5.226 I0.175 J0. +N1750 G01 X0.051 +N1755 G03 X0.226 Y-5.051 I0. J0.175 +N1760 G01 Y5.051 +N1765 G03 X0.051 Y5.226 I-0.175 J0. +N1770 G01 X0. +N1775 G02 X-0.283 Y5.47 I0. J0.286 +N1780 G03 X-0.65 Y5.543 I-0.196 J-0.03 +N1785 G01 X-0.695 Y5.38 I0.27 J-0.163 +N1790 G01 Y-5.376 +N1795 G03 X-0.376 Y-5.695 I0.319 J0. +N1800 G01 X0.376 +N1805 G03 X0.695 Y-5.376 I0. J0.319 +N1810 G01 Y5.376 +N1815 G03 X0.376 Y5.695 I-0.319 J0. +N1820 G01 X-0.38 +N1825 G03 X-0.65 Y5.543 I0. J-0.315 +N1830 G02 X-1.023 Y5.216 I-0.699 J0.422 +N1835 G03 X-1.295 Y4.802 I0.18 J-0.415 +N1840 G01 Y-5.976 +N1845 G03 X-0.976 Y-6.295 I0.319 J0. +N1850 G01 X0.976 +N1855 G03 X1.295 Y-5.976 I0. J0.319 +N1860 G01 Y5.976 +N1865 G03 X0.976 Y6.295 I-0.319 J0. +N1870 G01 X-0.98 +N1875 G03 X-1.295 Y5.98 I0. J-0.315 +N1880 G01 Y4.802 +N1885 G02 X-1.595 Y4.352 I-0.488 J0. +N1890 G03 X-1.895 Y3.902 I0.188 J-0.45 +N1895 G01 Y-6.576 +N1900 G03 X-1.576 Y-6.895 I0.319 J0. +N1905 G01 X1.576 +N1910 G03 X1.895 Y-6.576 I0. J0.319 +N1915 G01 Y6.576 +N1920 G03 X1.576 Y6.895 I-0.319 J0. +N1925 G01 X-1.58 +N1930 G03 X-1.895 Y6.58 I0. J-0.315 +N1935 G01 Y3.902 +N1940 G02 X-2.195 Y3.452 I-0.487 J0. +N1945 G03 X-2.495 Y3.002 I0.188 J-0.45 +N1950 G01 Y-7.176 +N1955 G03 X-2.176 Y-7.495 I0.319 J0. +N1960 G01 X2.176 +N1965 G03 X2.495 Y-7.176 I0. J0.319 +N1970 G01 Y7.176 +N1975 G03 X2.176 Y7.495 I-0.319 J0. +N1980 G01 X-2.18 +N1985 G03 X-2.495 Y7.18 I0. J-0.315 +N1990 G01 Y3.002 +N1995 G02 X-2.795 Y2.552 I-0.488 J0. +N2000 G03 X-3.095 Y2.102 I0.188 J-0.45 +N2005 G01 Y-7.776 +N2010 G03 X-2.776 Y-8.095 I0.319 J0. +N2015 G01 X2.776 +N2020 G03 X3.095 Y-7.776 I0. J0.319 +N2025 G01 Y7.776 +N2030 G03 X2.776 Y8.095 I-0.319 J0. +N2035 G01 X-2.78 +N2040 G03 X-3.095 Y7.78 I0. J-0.315 +N2045 G01 Y2.102 +N2050 G02 X-3.395 Y1.652 I-0.487 J0. +N2055 G03 X-3.695 Y1.202 I0.188 J-0.45 +N2060 G01 Y-8.376 +N2065 G03 X-3.376 Y-8.695 I0.319 J0. +N2070 G01 X3.376 +N2075 G03 X3.695 Y-8.376 I0. J0.319 +N2080 G01 Y8.376 +N2085 G03 X3.376 Y8.695 I-0.319 J0. +N2090 G01 X-3.38 +N2095 G03 X-3.695 Y8.38 I0. J-0.315 +N2100 G01 Y1.202 +N2105 G02 X-3.995 Y0.752 I-0.487 J0. +N2110 G03 X-4.295 Y0.302 I0.188 J-0.45 +N2115 G01 Y-8.976 +N2120 G03 X-3.976 Y-9.295 I0.319 J0. +N2125 G01 X3.976 +N2130 G03 X4.295 Y-8.976 I0. J0.319 +N2135 G01 Y8.976 +N2140 G03 X3.976 Y9.295 I-0.319 J0. +N2145 G01 X-3.98 +N2150 G03 X-4.295 Y8.98 I0. J-0.315 +N2155 G01 Y0.302 +N2160 G02 X-4.595 Y-0.148 I-0.487 J0. +N2165 G03 X-4.895 Y-0.598 I0.188 J-0.45 +N2170 G01 Y-9.576 +N2175 G03 X-4.576 Y-9.895 I0.319 J0. +N2180 G01 X4.576 +N2185 G03 X4.895 Y-9.576 I0. J0.319 +N2190 G01 Y9.576 +N2195 G03 X4.576 Y9.895 I-0.319 J0. +N2200 G01 X-4.58 +N2205 G03 X-4.895 Y9.58 I0. J-0.315 +N2210 G01 Y-0.598 +N2215 G02 X-5.195 Y-1.048 I-0.488 J0. +N2220 G03 X-5.495 Y-1.498 I0.188 J-0.45 +N2225 G01 Y-10.176 +N2230 G03 X-5.176 Y-10.495 I0.319 J0. +N2235 G01 X5.176 +N2240 G03 X5.495 Y-10.176 I0. J0.319 +N2245 G01 Y10.176 +N2250 G03 X5.176 Y10.495 I-0.319 J0. +N2255 G01 X-5.18 +N2260 G03 X-5.495 Y10.18 I0. J-0.315 +N2265 G01 Y-1.498 +N2270 G02 X-5.795 Y-1.948 I-0.488 J0. +N2275 G03 X-6.095 Y-2.398 I0.188 J-0.45 +N2280 G01 Y-10.776 +N2285 G03 X-5.776 Y-11.095 I0.319 J0. +N2290 G01 X5.776 +N2295 G03 X6.095 Y-10.776 I0. J0.319 +N2300 G01 Y10.776 +N2305 G03 X5.776 Y11.095 I-0.319 J0. +N2310 G01 X-5.78 +N2315 G03 X-6.095 Y10.78 I0. J-0.315 +N2320 G01 Y-2.398 +N2325 G02 X-6.395 Y-2.848 I-0.488 J0. +N2330 G03 X-6.695 Y-3.298 I0.188 J-0.45 +N2335 G01 Y-11.376 +N2340 G03 X-6.376 Y-11.695 I0.319 J0. +N2345 G01 X6.376 +N2350 G03 X6.695 Y-11.376 I0. J0.319 +N2355 G01 Y11.376 +N2360 G03 X6.376 Y11.695 I-0.319 J0. +N2365 G01 X-6.38 +N2370 G03 X-6.695 Y11.38 I0. J-0.315 +N2375 G01 Y-3.298 +N2380 G02 X-6.995 Y-3.748 I-0.487 J0. +N2385 G03 X-7.295 Y-4.198 I0.188 J-0.45 +N2390 G01 Y-11.976 +N2395 G03 X-6.976 Y-12.295 I0.319 J0. +N2400 G01 X6.976 +N2405 G03 X7.295 Y-11.976 I0. J0.319 +N2410 G01 Y11.976 +N2415 G03 X6.976 Y12.295 I-0.319 J0. +N2420 G01 X-6.98 +N2425 G03 X-7.295 Y11.98 I0. J-0.315 +N2430 G01 Y-4.198 +N2435 G02 X-7.595 Y-4.648 I-0.487 J0. +N2440 G03 X-7.895 Y-5.098 I0.188 J-0.45 +N2445 G01 Y-12.576 +N2450 G03 X-7.576 Y-12.895 I0.319 J0. +N2455 G01 X7.576 +N2460 G03 X7.895 Y-12.576 I0. J0.319 +N2465 G01 Y12.576 +N2470 G03 X7.576 Y12.895 I-0.319 J0. +N2475 G01 X-7.58 +N2480 G03 X-7.895 Y12.58 I0. J-0.315 +N2485 G01 Y-5.098 +N2490 G02 X-8.195 Y-5.548 I-0.487 J0. +N2495 G03 X-8.495 Y-5.998 I0.188 J-0.45 +N2500 G01 Y-13.176 +N2505 G03 X-8.176 Y-13.495 I0.319 J0. +N2510 G01 X8.176 +N2515 G03 X8.495 Y-13.176 I0. J0.319 +N2520 G01 Y13.176 +N2525 G03 X8.176 Y13.495 I-0.319 J0. +N2530 G01 X-8.18 +N2535 G03 X-8.495 Y13.18 I0. J-0.315 +N2540 G01 Y-5.998 +N2545 G02 X-8.795 Y-6.448 I-0.488 J0. +N2550 G03 X-9.095 Y-6.898 I0.188 J-0.45 +N2555 G01 Y-13.776 +N2560 G03 X-8.776 Y-14.095 I0.319 J0. +N2565 G01 X8.776 +N2570 G03 X9.095 Y-13.776 I0. J0.319 +N2575 G01 Y13.776 +N2580 G03 X8.776 Y14.095 I-0.319 J0. +N2585 G01 X-8.78 +N2590 G03 X-9.095 Y13.78 I0. J-0.315 +N2595 G01 Y-6.898 +N2600 G02 X-9.395 Y-7.348 I-0.488 J0. +N2605 G03 X-9.695 Y-7.798 I0.188 J-0.45 +N2610 G01 Y-14.376 +N2615 G03 X-9.376 Y-14.695 I0.319 J0. +N2620 G01 X9.376 +N2625 G03 X9.695 Y-14.376 I0. J0.319 +N2630 G01 Y14.376 +N2635 G03 X9.376 Y14.695 I-0.319 J0. +N2640 G01 X-9.38 +N2645 G03 X-9.695 Y14.38 I0. J-0.315 +N2650 G01 Y-7.798 +N2655 G02 X-9.995 Y-8.248 I-0.488 J0. +N2660 G03 X-10.295 Y-8.698 I0.188 J-0.45 +N2665 G01 Y-14.976 +N2670 G03 X-9.976 Y-15.295 I0.319 J0. +N2675 G01 X9.976 +N2680 G03 X10.295 Y-14.976 I0. J0.319 +N2685 G01 Y14.976 +N2690 G03 X9.976 Y15.295 I-0.319 J0. +N2695 G01 X-9.98 +N2700 G03 X-10.295 Y14.98 I0. J-0.315 +N2705 G01 Y-8.698 +N2710 G02 X-10.595 Y-9.148 I-0.488 J0. +N2715 G03 X-10.895 Y-9.598 I0.188 J-0.45 +N2720 G01 Y-15.576 +N2725 G03 X-10.576 Y-15.895 I0.319 J0. +N2730 G01 X10.576 +N2735 G03 X10.895 Y-15.576 I0. J0.319 +N2740 G01 Y15.576 +N2745 G03 X10.576 Y15.895 I-0.319 J0. +N2750 G01 X-10.58 +N2755 G03 X-10.895 Y15.58 I0. J-0.315 +N2760 G01 Y-9.598 +N2765 G02 X-11.195 Y-10.048 I-0.487 J0. +N2770 G03 X-11.495 Y-10.498 I0.188 J-0.45 +N2775 G01 Y-16.176 +N2780 G03 X-11.176 Y-16.495 I0.319 J0. +N2785 G01 X11.176 +N2790 G03 X11.495 Y-16.176 I0. J0.319 +N2795 G01 Y16.176 +N2800 G03 X11.176 Y16.495 I-0.319 J0. +N2805 G01 X-11.18 +N2810 G03 X-11.495 Y16.18 I0. J-0.315 +N2815 G01 Y-10.498 +N2820 G02 X-11.795 Y-10.948 I-0.488 J0. +N2825 G03 X-12.095 Y-11.398 I0.188 J-0.45 +N2830 G01 Y-16.776 +N2835 G03 X-11.776 Y-17.095 I0.319 J0. +N2840 G01 X11.776 +N2845 G03 X12.095 Y-16.776 I0. J0.319 +N2850 G01 Y16.776 +N2855 G03 X11.776 Y17.095 I-0.319 J0. +N2860 G01 X-11.78 +N2865 G03 X-12.095 Y16.78 I0. J-0.315 +N2870 G01 Y-11.398 +N2875 G02 X-12.395 Y-11.848 I-0.488 J0. +N2880 G03 X-12.695 Y-12.298 I0.188 J-0.45 +N2885 G01 Y-17.376 +N2890 G03 X-12.376 Y-17.695 I0.319 J0. +N2895 G01 X12.376 +N2900 G03 X12.695 Y-17.376 I0. J0.319 +N2905 G01 Y17.376 +N2910 G03 X12.376 Y17.695 I-0.319 J0. +N2915 G01 X-12.38 +N2920 G03 X-12.695 Y17.38 I0. J-0.315 +N2925 G01 Y-12.298 +N2930 G02 X-12.995 Y-12.748 I-0.488 J0. +N2935 G03 X-13.295 Y-13.198 I0.188 J-0.45 +N2940 G01 Y-17.976 +N2945 G03 X-12.976 Y-18.295 I0.319 J0. +N2950 G01 X12.976 +N2955 G03 X13.295 Y-17.976 I0. J0.319 +N2960 G01 Y17.976 +N2965 G03 X12.976 Y18.295 I-0.319 J0. +N2970 G01 X-12.98 +N2975 G03 X-13.295 Y17.98 I0. J-0.315 +N2980 G01 Y-13.198 +N2985 G02 X-13.595 Y-13.648 I-0.488 J0. +N2990 G03 X-13.895 Y-14.098 I0.188 J-0.45 +N2995 G01 Y-18.576 +N3000 G03 X-13.576 Y-18.895 I0.319 J0. +N3005 G01 X13.576 +N3010 G03 X13.895 Y-18.576 I0. J0.319 +N3015 G01 Y18.576 +N3020 G03 X13.576 Y18.895 I-0.319 J0. +N3025 G01 X-13.58 +N3030 G03 X-13.895 Y18.58 I0. J-0.315 +N3035 G01 Y-14.098 +N3040 G02 X-14.195 Y-14.548 I-0.487 J0. +N3045 G03 X-14.495 Y-14.998 I0.188 J-0.45 +N3050 G01 Y-19.176 +N3055 G03 X-14.176 Y-19.495 I0.319 J0. +N3060 G01 X14.176 +N3065 G03 X14.495 Y-19.176 I0. J0.319 +N3070 G01 Y19.176 +N3075 G03 X14.176 Y19.495 I-0.319 J0. +N3080 G01 X-14.18 +N3085 G03 X-14.495 Y19.18 I0. J-0.315 +N3090 G01 Y-14.998 +N3095 G02 X-14.795 Y-15.448 I-0.488 J0. +N3100 G03 X-15.095 Y-15.898 I0.188 J-0.45 +N3105 G01 Y-19.776 +N3110 G03 X-14.776 Y-20.095 I0.319 J0. +N3115 G01 X14.776 +N3120 G03 X15.095 Y-19.776 I0. J0.319 +N3125 G01 Y19.776 +N3130 G03 X14.776 Y20.095 I-0.319 J0. +N3135 G01 X-14.78 +N3140 G03 X-15.095 Y19.78 I0. J-0.315 +N3145 G01 Y-15.898 +N3150 G02 X-15.395 Y-16.348 I-0.488 J0. +N3155 G03 X-15.695 Y-16.798 I0.188 J-0.45 +N3160 G01 Y-20.376 +N3165 G03 X-15.376 Y-20.695 I0.319 J0. +N3170 G01 X15.376 +N3175 G03 X15.695 Y-20.376 I0. J0.319 +N3180 G01 Y20.376 +N3185 G03 X15.376 Y20.695 I-0.319 J0. +N3190 G01 X-15.38 +N3195 G03 X-15.695 Y20.38 I0. J-0.315 +N3200 G01 Y-16.798 +N3205 G02 X-15.995 Y-17.248 I-0.488 J0. +N3210 G03 X-16.295 Y-17.698 I0.188 J-0.45 +N3215 G01 Y-20.976 +N3220 G03 X-15.976 Y-21.295 I0.319 J0. +N3225 G01 X15.976 +N3230 G03 X16.295 Y-20.976 I0. J0.319 +N3235 G01 Y20.976 +N3240 G03 X15.976 Y21.295 I-0.319 J0. +N3245 G01 X-15.98 +N3250 G03 X-16.295 Y20.98 I0. J-0.315 +N3255 G01 Y-17.698 +N3260 G02 X-16.595 Y-18.148 I-0.487 J0. +N3265 G03 X-16.895 Y-18.598 I0.188 J-0.45 +N3270 G01 Y-21.576 +N3275 G03 X-16.576 Y-21.895 I0.319 J0. +N3280 G01 X16.576 +N3285 G03 X16.895 Y-21.576 I0. J0.319 +N3290 G01 Y21.576 +N3295 G03 X16.576 Y21.895 I-0.319 J0. +N3300 G01 X-16.58 +N3305 G03 X-16.895 Y21.58 I0. J-0.315 +N3310 G01 Y-18.598 +N3315 G02 X-17.198 Y-19.052 I-0.492 J0. +N3320 G03 X-17.5 Y-19.506 I0.189 J-0.454 +N3325 G01 Y-22. +N3330 G03 X-17. Y-22.5 I0.5 J0. +N3335 G01 X17. +N3340 G03 X17.5 Y-22. I0. J0.5 +N3345 G01 Y22. +N3350 G03 X17. Y22.5 I-0.5 J0. +N3355 G01 X-17. +N3360 G03 X-17.5 Y22. I0. J-0.5 +N3365 G01 Y-19.506 +N3370 G03 X-16.712 Y-19.89 I0.487 J0. +N3375 G01 X-13.1 Y-17.065 +N3380 G03 X-12.981 Y-16.929 I-0.3 J0.384 +N3385 G01 X-0.115 Y4.806 +N3390 X0.065 Y5.113 +N3395 G03 X0. Y5.226 I-0.065 J0.038 +N3400 G01 Z-0.6 +N3405 G01 X-0.051 +N3410 G03 X-0.226 Y5.051 I0. J-0.175 +N3415 G01 Y-5.051 +N3420 G03 X-0.051 Y-5.226 I0.175 J0. +N3425 G01 X0.051 +N3430 G03 X0.226 Y-5.051 I0. J0.175 +N3435 G01 Y5.051 +N3440 G03 X0.051 Y5.226 I-0.175 J0. +N3445 G01 X0. +N3450 G02 X-0.283 Y5.47 I0. J0.286 +N3455 G03 X-0.65 Y5.543 I-0.196 J-0.03 +N3460 G01 X-0.695 Y5.38 I0.27 J-0.163 +N3465 G01 Y-5.376 +N3470 G03 X-0.376 Y-5.695 I0.319 J0. +N3475 G01 X0.376 +N3480 G03 X0.695 Y-5.376 I0. J0.319 +N3485 G01 Y5.376 +N3490 G03 X0.376 Y5.695 I-0.319 J0. +N3495 G01 X-0.38 +N3500 G03 X-0.65 Y5.543 I0. J-0.315 +N3505 G02 X-1.023 Y5.216 I-0.699 J0.422 +N3510 G03 X-1.295 Y4.802 I0.18 J-0.415 +N3515 G01 Y-5.976 +N3520 G03 X-0.976 Y-6.295 I0.319 J0. +N3525 G01 X0.976 +N3530 G03 X1.295 Y-5.976 I0. J0.319 +N3535 G01 Y5.976 +N3540 G03 X0.976 Y6.295 I-0.319 J0. +N3545 G01 X-0.98 +N3550 G03 X-1.295 Y5.98 I0. J-0.315 +N3555 G01 Y4.802 +N3560 G02 X-1.595 Y4.352 I-0.488 J0. +N3565 G03 X-1.895 Y3.902 I0.188 J-0.45 +N3570 G01 Y-6.576 +N3575 G03 X-1.576 Y-6.895 I0.319 J0. +N3580 G01 X1.576 +N3585 G03 X1.895 Y-6.576 I0. J0.319 +N3590 G01 Y6.576 +N3595 G03 X1.576 Y6.895 I-0.319 J0. +N3600 G01 X-1.58 +N3605 G03 X-1.895 Y6.58 I0. J-0.315 +N3610 G01 Y3.902 +N3615 G02 X-2.195 Y3.452 I-0.487 J0. +N3620 G03 X-2.495 Y3.002 I0.188 J-0.45 +N3625 G01 Y-7.176 +N3630 G03 X-2.176 Y-7.495 I0.319 J0. +N3635 G01 X2.176 +N3640 G03 X2.495 Y-7.176 I0. J0.319 +N3645 G01 Y7.176 +N3650 G03 X2.176 Y7.495 I-0.319 J0. +N3655 G01 X-2.18 +N3660 G03 X-2.495 Y7.18 I0. J-0.315 +N3665 G01 Y3.002 +N3670 G02 X-2.795 Y2.552 I-0.488 J0. +N3675 G03 X-3.095 Y2.102 I0.188 J-0.45 +N3680 G01 Y-7.776 +N3685 G03 X-2.776 Y-8.095 I0.319 J0. +N3690 G01 X2.776 +N3695 G03 X3.095 Y-7.776 I0. J0.319 +N3700 G01 Y7.776 +N3705 G03 X2.776 Y8.095 I-0.319 J0. +N3710 G01 X-2.78 +N3715 G03 X-3.095 Y7.78 I0. J-0.315 +N3720 G01 Y2.102 +N3725 G02 X-3.395 Y1.652 I-0.487 J0. +N3730 G03 X-3.695 Y1.202 I0.188 J-0.45 +N3735 G01 Y-8.376 +N3740 G03 X-3.376 Y-8.695 I0.319 J0. +N3745 G01 X3.376 +N3750 G03 X3.695 Y-8.376 I0. J0.319 +N3755 G01 Y8.376 +N3760 G03 X3.376 Y8.695 I-0.319 J0. +N3765 G01 X-3.38 +N3770 G03 X-3.695 Y8.38 I0. J-0.315 +N3775 G01 Y1.202 +N3780 G02 X-3.995 Y0.752 I-0.487 J0. +N3785 G03 X-4.295 Y0.302 I0.188 J-0.45 +N3790 G01 Y-8.976 +N3795 G03 X-3.976 Y-9.295 I0.319 J0. +N3800 G01 X3.976 +N3805 G03 X4.295 Y-8.976 I0. J0.319 +N3810 G01 Y8.976 +N3815 G03 X3.976 Y9.295 I-0.319 J0. +N3820 G01 X-3.98 +N3825 G03 X-4.295 Y8.98 I0. J-0.315 +N3830 G01 Y0.302 +N3835 G02 X-4.595 Y-0.148 I-0.487 J0. +N3840 G03 X-4.895 Y-0.598 I0.188 J-0.45 +N3845 G01 Y-9.576 +N3850 G03 X-4.576 Y-9.895 I0.319 J0. +N3855 G01 X4.576 +N3860 G03 X4.895 Y-9.576 I0. J0.319 +N3865 G01 Y9.576 +N3870 G03 X4.576 Y9.895 I-0.319 J0. +N3875 G01 X-4.58 +N3880 G03 X-4.895 Y9.58 I0. J-0.315 +N3885 G01 Y-0.598 +N3890 G02 X-5.195 Y-1.048 I-0.488 J0. +N3895 G03 X-5.495 Y-1.498 I0.188 J-0.45 +N3900 G01 Y-10.176 +N3905 G03 X-5.176 Y-10.495 I0.319 J0. +N3910 G01 X5.176 +N3915 G03 X5.495 Y-10.176 I0. J0.319 +N3920 G01 Y10.176 +N3925 G03 X5.176 Y10.495 I-0.319 J0. +N3930 G01 X-5.18 +N3935 G03 X-5.495 Y10.18 I0. J-0.315 +N3940 G01 Y-1.498 +N3945 G02 X-5.795 Y-1.948 I-0.488 J0. +N3950 G03 X-6.095 Y-2.398 I0.188 J-0.45 +N3955 G01 Y-10.776 +N3960 G03 X-5.776 Y-11.095 I0.319 J0. +N3965 G01 X5.776 +N3970 G03 X6.095 Y-10.776 I0. J0.319 +N3975 G01 Y10.776 +N3980 G03 X5.776 Y11.095 I-0.319 J0. +N3985 G01 X-5.78 +N3990 G03 X-6.095 Y10.78 I0. J-0.315 +N3995 G01 Y-2.398 +N4000 G02 X-6.395 Y-2.848 I-0.488 J0. +N4005 G03 X-6.695 Y-3.298 I0.188 J-0.45 +N4010 G01 Y-11.376 +N4015 G03 X-6.376 Y-11.695 I0.319 J0. +N4020 G01 X6.376 +N4025 G03 X6.695 Y-11.376 I0. J0.319 +N4030 G01 Y11.376 +N4035 G03 X6.376 Y11.695 I-0.319 J0. +N4040 G01 X-6.38 +N4045 G03 X-6.695 Y11.38 I0. J-0.315 +N4050 G01 Y-3.298 +N4055 G02 X-6.995 Y-3.748 I-0.487 J0. +N4060 G03 X-7.295 Y-4.198 I0.188 J-0.45 +N4065 G01 Y-11.976 +N4070 G03 X-6.976 Y-12.295 I0.319 J0. +N4075 G01 X6.976 +N4080 G03 X7.295 Y-11.976 I0. J0.319 +N4085 G01 Y11.976 +N4090 G03 X6.976 Y12.295 I-0.319 J0. +N4095 G01 X-6.98 +N4100 G03 X-7.295 Y11.98 I0. J-0.315 +N4105 G01 Y-4.198 +N4110 G02 X-7.595 Y-4.648 I-0.487 J0. +N4115 G03 X-7.895 Y-5.098 I0.188 J-0.45 +N4120 G01 Y-12.576 +N4125 G03 X-7.576 Y-12.895 I0.319 J0. +N4130 G01 X7.576 +N4135 G03 X7.895 Y-12.576 I0. J0.319 +N4140 G01 Y12.576 +N4145 G03 X7.576 Y12.895 I-0.319 J0. +N4150 G01 X-7.58 +N4155 G03 X-7.895 Y12.58 I0. J-0.315 +N4160 G01 Y-5.098 +N4165 G02 X-8.195 Y-5.548 I-0.487 J0. +N4170 G03 X-8.495 Y-5.998 I0.188 J-0.45 +N4175 G01 Y-13.176 +N4180 G03 X-8.176 Y-13.495 I0.319 J0. +N4185 G01 X8.176 +N4190 G03 X8.495 Y-13.176 I0. J0.319 +N4195 G01 Y13.176 +N4200 G03 X8.176 Y13.495 I-0.319 J0. +N4205 G01 X-8.18 +N4210 G03 X-8.495 Y13.18 I0. J-0.315 +N4215 G01 Y-5.998 +N4220 G02 X-8.795 Y-6.448 I-0.488 J0. +N4225 G03 X-9.095 Y-6.898 I0.188 J-0.45 +N4230 G01 Y-13.776 +N4235 G03 X-8.776 Y-14.095 I0.319 J0. +N4240 G01 X8.776 +N4245 G03 X9.095 Y-13.776 I0. J0.319 +N4250 G01 Y13.776 +N4255 G03 X8.776 Y14.095 I-0.319 J0. +N4260 G01 X-8.78 +N4265 G03 X-9.095 Y13.78 I0. J-0.315 +N4270 G01 Y-6.898 +N4275 G02 X-9.395 Y-7.348 I-0.488 J0. +N4280 G03 X-9.695 Y-7.798 I0.188 J-0.45 +N4285 G01 Y-14.376 +N4290 G03 X-9.376 Y-14.695 I0.319 J0. +N4295 G01 X9.376 +N4300 G03 X9.695 Y-14.376 I0. J0.319 +N4305 G01 Y14.376 +N4310 G03 X9.376 Y14.695 I-0.319 J0. +N4315 G01 X-9.38 +N4320 G03 X-9.695 Y14.38 I0. J-0.315 +N4325 G01 Y-7.798 +N4330 G02 X-9.995 Y-8.248 I-0.488 J0. +N4335 G03 X-10.295 Y-8.698 I0.188 J-0.45 +N4340 G01 Y-14.976 +N4345 G03 X-9.976 Y-15.295 I0.319 J0. +N4350 G01 X9.976 +N4355 G03 X10.295 Y-14.976 I0. J0.319 +N4360 G01 Y14.976 +N4365 G03 X9.976 Y15.295 I-0.319 J0. +N4370 G01 X-9.98 +N4375 G03 X-10.295 Y14.98 I0. J-0.315 +N4380 G01 Y-8.698 +N4385 G02 X-10.595 Y-9.148 I-0.488 J0. +N4390 G03 X-10.895 Y-9.598 I0.188 J-0.45 +N4395 G01 Y-15.576 +N4400 G03 X-10.576 Y-15.895 I0.319 J0. +N4405 G01 X10.576 +N4410 G03 X10.895 Y-15.576 I0. J0.319 +N4415 G01 Y15.576 +N4420 G03 X10.576 Y15.895 I-0.319 J0. +N4425 G01 X-10.58 +N4430 G03 X-10.895 Y15.58 I0. J-0.315 +N4435 G01 Y-9.598 +N4440 G02 X-11.195 Y-10.048 I-0.487 J0. +N4445 G03 X-11.495 Y-10.498 I0.188 J-0.45 +N4450 G01 Y-16.176 +N4455 G03 X-11.176 Y-16.495 I0.319 J0. +N4460 G01 X11.176 +N4465 G03 X11.495 Y-16.176 I0. J0.319 +N4470 G01 Y16.176 +N4475 G03 X11.176 Y16.495 I-0.319 J0. +N4480 G01 X-11.18 +N4485 G03 X-11.495 Y16.18 I0. J-0.315 +N4490 G01 Y-10.498 +N4495 G02 X-11.795 Y-10.948 I-0.488 J0. +N4500 G03 X-12.095 Y-11.398 I0.188 J-0.45 +N4505 G01 Y-16.776 +N4510 G03 X-11.776 Y-17.095 I0.319 J0. +N4515 G01 X11.776 +N4520 G03 X12.095 Y-16.776 I0. J0.319 +N4525 G01 Y16.776 +N4530 G03 X11.776 Y17.095 I-0.319 J0. +N4535 G01 X-11.78 +N4540 G03 X-12.095 Y16.78 I0. J-0.315 +N4545 G01 Y-11.398 +N4550 G02 X-12.395 Y-11.848 I-0.488 J0. +N4555 G03 X-12.695 Y-12.298 I0.188 J-0.45 +N4560 G01 Y-17.376 +N4565 G03 X-12.376 Y-17.695 I0.319 J0. +N4570 G01 X12.376 +N4575 G03 X12.695 Y-17.376 I0. J0.319 +N4580 G01 Y17.376 +N4585 G03 X12.376 Y17.695 I-0.319 J0. +N4590 G01 X-12.38 +N4595 G03 X-12.695 Y17.38 I0. J-0.315 +N4600 G01 Y-12.298 +N4605 G02 X-12.995 Y-12.748 I-0.488 J0. +N4610 G03 X-13.295 Y-13.198 I0.188 J-0.45 +N4615 G01 Y-17.976 +N4620 G03 X-12.976 Y-18.295 I0.319 J0. +N4625 G01 X12.976 +N4630 G03 X13.295 Y-17.976 I0. J0.319 +N4635 G01 Y17.976 +N4640 G03 X12.976 Y18.295 I-0.319 J0. +N4645 G01 X-12.98 +N4650 G03 X-13.295 Y17.98 I0. J-0.315 +N4655 G01 Y-13.198 +N4660 G02 X-13.595 Y-13.648 I-0.488 J0. +N4665 G03 X-13.895 Y-14.098 I0.188 J-0.45 +N4670 G01 Y-18.576 +N4675 G03 X-13.576 Y-18.895 I0.319 J0. +N4680 G01 X13.576 +N4685 G03 X13.895 Y-18.576 I0. J0.319 +N4690 G01 Y18.576 +N4695 G03 X13.576 Y18.895 I-0.319 J0. +N4700 G01 X-13.58 +N4705 G03 X-13.895 Y18.58 I0. J-0.315 +N4710 G01 Y-14.098 +N4715 G02 X-14.195 Y-14.548 I-0.487 J0. +N4720 G03 X-14.495 Y-14.998 I0.188 J-0.45 +N4725 G01 Y-19.176 +N4730 G03 X-14.176 Y-19.495 I0.319 J0. +N4735 G01 X14.176 +N4740 G03 X14.495 Y-19.176 I0. J0.319 +N4745 G01 Y19.176 +N4750 G03 X14.176 Y19.495 I-0.319 J0. +N4755 G01 X-14.18 +N4760 G03 X-14.495 Y19.18 I0. J-0.315 +N4765 G01 Y-14.998 +N4770 G02 X-14.795 Y-15.448 I-0.488 J0. +N4775 G03 X-15.095 Y-15.898 I0.188 J-0.45 +N4780 G01 Y-19.776 +N4785 G03 X-14.776 Y-20.095 I0.319 J0. +N4790 G01 X14.776 +N4795 G03 X15.095 Y-19.776 I0. J0.319 +N4800 G01 Y19.776 +N4805 G03 X14.776 Y20.095 I-0.319 J0. +N4810 G01 X-14.78 +N4815 G03 X-15.095 Y19.78 I0. J-0.315 +N4820 G01 Y-15.898 +N4825 G02 X-15.395 Y-16.348 I-0.488 J0. +N4830 G03 X-15.695 Y-16.798 I0.188 J-0.45 +N4835 G01 Y-20.376 +N4840 G03 X-15.376 Y-20.695 I0.319 J0. +N4845 G01 X15.376 +N4850 G03 X15.695 Y-20.376 I0. J0.319 +N4855 G01 Y20.376 +N4860 G03 X15.376 Y20.695 I-0.319 J0. +N4865 G01 X-15.38 +N4870 G03 X-15.695 Y20.38 I0. J-0.315 +N4875 G01 Y-16.798 +N4880 G02 X-15.995 Y-17.248 I-0.488 J0. +N4885 G03 X-16.295 Y-17.698 I0.188 J-0.45 +N4890 G01 Y-20.976 +N4895 G03 X-15.976 Y-21.295 I0.319 J0. +N4900 G01 X15.976 +N4905 G03 X16.295 Y-20.976 I0. J0.319 +N4910 G01 Y20.976 +N4915 G03 X15.976 Y21.295 I-0.319 J0. +N4920 G01 X-15.98 +N4925 G03 X-16.295 Y20.98 I0. J-0.315 +N4930 G01 Y-17.698 +N4935 G02 X-16.595 Y-18.148 I-0.487 J0. +N4940 G03 X-16.895 Y-18.598 I0.188 J-0.45 +N4945 G01 Y-21.576 +N4950 G03 X-16.576 Y-21.895 I0.319 J0. +N4955 G01 X16.576 +N4960 G03 X16.895 Y-21.576 I0. J0.319 +N4965 G01 Y21.576 +N4970 G03 X16.576 Y21.895 I-0.319 J0. +N4975 G01 X-16.58 +N4980 G03 X-16.895 Y21.58 I0. J-0.315 +N4985 G01 Y-18.598 +N4990 G02 X-17.198 Y-19.052 I-0.492 J0. +N4995 G03 X-17.5 Y-19.506 I0.189 J-0.454 +N5000 G01 Y-22. +N5005 G03 X-17. Y-22.5 I0.5 J0. +N5010 G01 X17. +N5015 G03 X17.5 Y-22. I0. J0.5 +N5020 G01 Y22. +N5025 G03 X17. Y22.5 I-0.5 J0. +N5030 G01 X-17. +N5035 G03 X-17.5 Y22. I0. J-0.5 +N5040 G01 Y-19.506 +N5045 G03 X-16.712 Y-19.89 I0.487 J0. +N5050 G01 X-13.1 Y-17.065 +N5055 G03 X-12.981 Y-16.929 I-0.3 J0.384 +N5060 G01 X-0.115 Y4.806 +N5065 G01 X0.065 Y5.113 +N5070 G03 X0. Y5.226 I-0.065 J0.038 +N5075 G01 Z-0.8 +N5080 G01 X-0.051 +N5085 G03 X-0.226 Y5.051 I0. J-0.175 +N5090 G01 Y-5.051 +N5095 G03 X-0.051 Y-5.226 I0.175 J0. +N5100 G01 X0.051 +N5105 G03 X0.226 Y-5.051 I0. J0.175 +N5110 G01 Y5.051 +N5115 G03 X0.051 Y5.226 I-0.175 J0. +N5120 G01 X0. +N5125 G02 X-0.283 Y5.47 I0. J0.286 +N5130 G03 X-0.65 Y5.543 I-0.196 J-0.03 +N5135 G03 X-0.695 Y5.38 I0.27 J-0.163 +N5140 G01 Y-5.376 +N5145 G03 X-0.376 Y-5.695 I0.319 J0. +N5150 G01 X0.376 +N5155 G03 X0.695 Y-5.376 I0. J0.319 +N5160 G01 Y5.376 +N5165 G03 X0.376 Y5.695 I-0.319 J0. +N5170 G01 X-0.38 +N5175 G03 X-0.65 Y5.543 I0. J-0.315 +N5180 G02 X-1.023 Y5.216 I-0.699 J0.422 +N5185 G03 X-1.295 Y4.802 I0.18 J-0.415 +N5190 G01 Y-5.976 +N5195 G03 X-0.976 Y-6.295 I0.319 J0. +N5200 G01 X0.976 +N5205 G03 X1.295 Y-5.976 I0. J0.319 +N5210 G01 Y5.976 +N5215 G03 X0.976 Y6.295 I-0.319 J0. +N5220 G01 X-0.98 +N5225 G03 X-1.295 Y5.98 I0. J-0.315 +N5230 G01 Y4.802 +N5235 G02 X-1.595 Y4.352 I-0.488 J0. +N5240 G03 X-1.895 Y3.902 I0.188 J-0.45 +N5245 G01 Y-6.576 +N5250 G03 X-1.576 Y-6.895 I0.319 J0. +N5255 G01 X1.576 +N5260 G03 X1.895 Y-6.576 I0. J0.319 +N5265 G01 Y6.576 +N5270 G03 X1.576 Y6.895 I-0.319 J0. +N5275 G01 X-1.58 +N5280 G03 X-1.895 Y6.58 I0. J-0.315 +N5285 G01 Y3.902 +N5290 G02 X-2.195 Y3.452 I-0.487 J0. +N5295 G03 X-2.495 Y3.002 I0.188 J-0.45 +N5300 G01 Y-7.176 +N5305 G03 X-2.176 Y-7.495 I0.319 J0. +N5310 G01 X2.176 +N5315 G03 X2.495 Y-7.176 I0. J0.319 +N5320 G01 Y7.176 +N5325 G03 X2.176 Y7.495 I-0.319 J0. +N5330 G01 X-2.18 +N5335 G03 X-2.495 Y7.18 I0. J-0.315 +N5340 G01 Y3.002 +N5345 G02 X-2.795 Y2.552 I-0.488 J0. +N5350 G03 X-3.095 Y2.102 I0.188 J-0.45 +N5355 G01 Y-7.776 +N5360 G03 X-2.776 Y-8.095 I0.319 J0. +N5365 G01 X2.776 +N5370 G03 X3.095 Y-7.776 I0. J0.319 +N5375 G01 Y7.776 +N5380 G03 X2.776 Y8.095 I-0.319 J0. +N5385 G01 X-2.78 +N5390 G03 X-3.095 Y7.78 I0. J-0.315 +N5395 G01 Y2.102 +N5400 G02 X-3.395 Y1.652 I-0.487 J0. +N5405 G03 X-3.695 Y1.202 I0.188 J-0.45 +N5410 G01 Y-8.376 +N5415 G03 X-3.376 Y-8.695 I0.319 J0. +N5420 G01 X3.376 +N5425 G03 X3.695 Y-8.376 I0. J0.319 +N5430 G01 Y8.376 +N5435 G03 X3.376 Y8.695 I-0.319 J0. +N5440 G01 X-3.38 +N5445 G03 X-3.695 Y8.38 I0. J-0.315 +N5450 G01 Y1.202 +N5455 G02 X-3.995 Y0.752 I-0.487 J0. +N5460 G03 X-4.295 Y0.302 I0.188 J-0.45 +N5465 G01 Y-8.976 +N5470 G03 X-3.976 Y-9.295 I0.319 J0. +N5475 G01 X3.976 +N5480 G03 X4.295 Y-8.976 I0. J0.319 +N5485 G01 Y8.976 +N5490 G03 X3.976 Y9.295 I-0.319 J0. +N5495 G01 X-3.98 +N5500 G03 X-4.295 Y8.98 I0. J-0.315 +N5505 G01 Y0.302 +N5510 G02 X-4.595 Y-0.148 I-0.487 J0. +N5515 G03 X-4.895 Y-0.598 I0.188 J-0.45 +N5520 G01 Y-9.576 +N5525 G03 X-4.576 Y-9.895 I0.319 J0. +N5530 G01 X4.576 +N5535 G03 X4.895 Y-9.576 I0. J0.319 +N5540 G01 Y9.576 +N5545 G03 X4.576 Y9.895 I-0.319 J0. +N5550 G01 X-4.58 +N5555 G03 X-4.895 Y9.58 I0. J-0.315 +N5560 G01 Y-0.598 +N5565 G02 X-5.195 Y-1.048 I-0.488 J0. +N5570 G03 X-5.495 Y-1.498 I0.188 J-0.45 +N5575 G01 Y-10.176 +N5580 G03 X-5.176 Y-10.495 I0.319 J0. +N5585 G01 X5.176 +N5590 G03 X5.495 Y-10.176 I0. J0.319 +N5595 G01 Y10.176 +N5600 G03 X5.176 Y10.495 I-0.319 J0. +N5605 G01 X-5.18 +N5610 G03 X-5.495 Y10.18 I0. J-0.315 +N5615 G01 Y-1.498 +N5620 G02 X-5.795 Y-1.948 I-0.488 J0. +N5625 G03 X-6.095 Y-2.398 I0.188 J-0.45 +N5630 G01 Y-10.776 +N5635 G03 X-5.776 Y-11.095 I0.319 J0. +N5640 G01 X5.776 +N5645 G03 X6.095 Y-10.776 I0. J0.319 +N5650 G01 Y10.776 +N5655 G03 X5.776 Y11.095 I-0.319 J0. +N5660 G01 X-5.78 +N5665 G03 X-6.095 Y10.78 I0. J-0.315 +N5670 G01 Y-2.398 +N5675 G02 X-6.395 Y-2.848 I-0.488 J0. +N5680 G03 X-6.695 Y-3.298 I0.188 J-0.45 +N5685 G01 Y-11.376 +N5690 G03 X-6.376 Y-11.695 I0.319 J0. +N5695 G01 X6.376 +N5700 G03 X6.695 Y-11.376 I0. J0.319 +N5705 G01 Y11.376 +N5710 G03 X6.376 Y11.695 I-0.319 J0. +N5715 G01 X-6.38 +N5720 G03 X-6.695 Y11.38 I0. J-0.315 +N5725 G01 Y-3.298 +N5730 G02 X-6.995 Y-3.748 I-0.487 J0. +N5735 G03 X-7.295 Y-4.198 I0.188 J-0.45 +N5740 G01 Y-11.976 +N5745 G03 X-6.976 Y-12.295 I0.319 J0. +N5750 G01 X6.976 +N5755 G03 X7.295 Y-11.976 I0. J0.319 +N5760 G01 Y11.976 +N5765 G03 X6.976 Y12.295 I-0.319 J0. +N5770 G01 X-6.98 +N5775 G03 X-7.295 Y11.98 I0. J-0.315 +N5780 G01 Y-4.198 +N5785 G02 X-7.595 Y-4.648 I-0.487 J0. +N5790 G03 X-7.895 Y-5.098 I0.188 J-0.45 +N5795 G01 Y-12.576 +N5800 G03 X-7.576 Y-12.895 I0.319 J0. +N5805 G01 X7.576 +N5810 G03 X7.895 Y-12.576 I0. J0.319 +N5815 G01 Y12.576 +N5820 G03 X7.576 Y12.895 I-0.319 J0. +N5825 G01 X-7.58 +N5830 G03 X-7.895 Y12.58 I0. J-0.315 +N5835 G01 Y-5.098 +N5840 G02 X-8.195 Y-5.548 I-0.487 J0. +N5845 G03 X-8.495 Y-5.998 I0.188 J-0.45 +N5850 G01 Y-13.176 +N5855 G03 X-8.176 Y-13.495 I0.319 J0. +N5860 G01 X8.176 +N5865 G03 X8.495 Y-13.176 I0. J0.319 +N5870 G01 Y13.176 +N5875 G03 X8.176 Y13.495 I-0.319 J0. +N5880 G01 X-8.18 +N5885 G03 X-8.495 Y13.18 I0. J-0.315 +N5890 G01 Y-5.998 +N5895 G02 X-8.795 Y-6.448 I-0.488 J0. +N5900 G03 X-9.095 Y-6.898 I0.188 J-0.45 +N5905 G01 Y-13.776 +N5910 G03 X-8.776 Y-14.095 I0.319 J0. +N5915 G01 X8.776 +N5920 G03 X9.095 Y-13.776 I0. J0.319 +N5925 G01 Y13.776 +N5930 G03 X8.776 Y14.095 I-0.319 J0. +N5935 G01 X-8.78 +N5940 G03 X-9.095 Y13.78 I0. J-0.315 +N5945 G01 Y-6.898 +N5950 G02 X-9.395 Y-7.348 I-0.488 J0. +N5955 G03 X-9.695 Y-7.798 I0.188 J-0.45 +N5960 G01 Y-14.376 +N5965 G03 X-9.376 Y-14.695 I0.319 J0. +N5970 G01 X9.376 +N5975 G03 X9.695 Y-14.376 I0. J0.319 +N5980 G01 Y14.376 +N5985 G03 X9.376 Y14.695 I-0.319 J0. +N5990 G01 X-9.38 +N5995 G03 X-9.695 Y14.38 I0. J-0.315 +N6000 G01 Y-7.798 +N6005 G02 X-9.995 Y-8.248 I-0.488 J0. +N6010 G03 X-10.295 Y-8.698 I0.188 J-0.45 +N6015 G01 Y-14.976 +N6020 G03 X-9.976 Y-15.295 I0.319 J0. +N6025 G01 X9.976 +N6030 G03 X10.295 Y-14.976 I0. J0.319 +N6035 G01 Y14.976 +N6040 G03 X9.976 Y15.295 I-0.319 J0. +N6045 G01 X-9.98 +N6050 G03 X-10.295 Y14.98 I0. J-0.315 +N6055 G01 Y-8.698 +N6060 G02 X-10.595 Y-9.148 I-0.488 J0. +N6065 G03 X-10.895 Y-9.598 I0.188 J-0.45 +N6070 G01 Y-15.576 +N6075 G03 X-10.576 Y-15.895 I0.319 J0. +N6080 G01 X10.576 +N6085 G03 X10.895 Y-15.576 I0. J0.319 +N6090 G01 Y15.576 +N6095 G03 X10.576 Y15.895 I-0.319 J0. +N6100 G01 X-10.58 +N6105 G03 X-10.895 Y15.58 I0. J-0.315 +N6110 G01 Y-9.598 +N6115 G02 X-11.195 Y-10.048 I-0.487 J0. +N6120 G03 X-11.495 Y-10.498 I0.188 J-0.45 +N6125 G01 Y-16.176 +N6130 G03 X-11.176 Y-16.495 I0.319 J0. +N6135 G01 X11.176 +N6140 G03 X11.495 Y-16.176 I0. J0.319 +N6145 G01 Y16.176 +N6150 G03 X11.176 Y16.495 I-0.319 J0. +N6155 G01 X-11.18 +N6160 G03 X-11.495 Y16.18 I0. J-0.315 +N6165 G01 Y-10.498 +N6170 G02 X-11.795 Y-10.948 I-0.488 J0. +N6175 G03 X-12.095 Y-11.398 I0.188 J-0.45 +N6180 G01 Y-16.776 +N6185 G03 X-11.776 Y-17.095 I0.319 J0. +N6190 G01 X11.776 +N6195 G03 X12.095 Y-16.776 I0. J0.319 +N6200 G01 Y16.776 +N6205 G03 X11.776 Y17.095 I-0.319 J0. +N6210 G01 X-11.78 +N6215 G03 X-12.095 Y16.78 I0. J-0.315 +N6220 G01 Y-11.398 +N6225 G02 X-12.395 Y-11.848 I-0.488 J0. +N6230 G03 X-12.695 Y-12.298 I0.188 J-0.45 +N6235 G01 Y-17.376 +N6240 G03 X-12.376 Y-17.695 I0.319 J0. +N6245 G01 X12.376 +N6250 G03 X12.695 Y-17.376 I0. J0.319 +N6255 G01 Y17.376 +N6260 G03 X12.376 Y17.695 I-0.319 J0. +N6265 G01 X-12.38 +N6270 G03 X-12.695 Y17.38 I0. J-0.315 +N6275 G01 Y-12.298 +N6280 G02 X-12.995 Y-12.748 I-0.488 J0. +N6285 G03 X-13.295 Y-13.198 I0.188 J-0.45 +N6290 G01 Y-17.976 +N6295 G03 X-12.976 Y-18.295 I0.319 J0. +N6300 G01 X12.976 +N6305 G03 X13.295 Y-17.976 I0. J0.319 +N6310 G01 Y17.976 +N6315 G03 X12.976 Y18.295 I-0.319 J0. +N6320 G01 X-12.98 +N6325 G03 X-13.295 Y17.98 I0. J-0.315 +N6330 G01 Y-13.198 +N6335 G02 X-13.595 Y-13.648 I-0.488 J0. +N6340 G03 X-13.895 Y-14.098 I0.188 J-0.45 +N6345 G01 Y-18.576 +N6350 G03 X-13.576 Y-18.895 I0.319 J0. +N6355 G01 X13.576 +N6360 G03 X13.895 Y-18.576 I0. J0.319 +N6365 G01 Y18.576 +N6370 G03 X13.576 Y18.895 I-0.319 J0. +N6375 G01 X-13.58 +N6380 G03 X-13.895 Y18.58 I0. J-0.315 +N6385 G01 Y-14.098 +N6390 G02 X-14.195 Y-14.548 I-0.487 J0. +N6395 G03 X-14.495 Y-14.998 I0.188 J-0.45 +N6400 G01 Y-19.176 +N6405 G03 X-14.176 Y-19.495 I0.319 J0. +N6410 G01 X14.176 +N6415 G03 X14.495 Y-19.176 I0. J0.319 +N6420 G01 Y19.176 +N6425 G03 X14.176 Y19.495 I-0.319 J0. +N6430 G01 X-14.18 +N6435 G03 X-14.495 Y19.18 I0. J-0.315 +N6440 G01 Y-14.998 +N6445 G02 X-14.795 Y-15.448 I-0.488 J0. +N6450 G03 X-15.095 Y-15.898 I0.188 J-0.45 +N6455 G01 Y-19.776 +N6460 G03 X-14.776 Y-20.095 I0.319 J0. +N6465 G01 X14.776 +N6470 G03 X15.095 Y-19.776 I0. J0.319 +N6475 G01 Y19.776 +N6480 G03 X14.776 Y20.095 I-0.319 J0. +N6485 G01 X-14.78 +N6490 G03 X-15.095 Y19.78 I0. J-0.315 +N6495 G01 Y-15.898 +N6500 G02 X-15.395 Y-16.348 I-0.488 J0. +N6505 G03 X-15.695 Y-16.798 I0.188 J-0.45 +N6510 G01 Y-20.376 +N6515 G03 X-15.376 Y-20.695 I0.319 J0. +N6520 G01 X15.376 +N6525 G03 X15.695 Y-20.376 I0. J0.319 +N6530 G01 Y20.376 +N6535 G03 X15.376 Y20.695 I-0.319 J0. +N6540 G01 X-15.38 +N6545 G03 X-15.695 Y20.38 I0. J-0.315 +N6550 G01 Y-16.798 +N6555 G02 X-15.995 Y-17.248 I-0.488 J0. +N6560 G03 X-16.295 Y-17.698 I0.188 J-0.45 +N6565 G01 Y-20.976 +N6570 G03 X-15.976 Y-21.295 I0.319 J0. +N6575 G01 X15.976 +N6580 G03 X16.295 Y-20.976 I0. J0.319 +N6585 G01 Y20.976 +N6590 G03 X15.976 Y21.295 I-0.319 J0. +N6595 G01 X-15.98 +N6600 G03 X-16.295 Y20.98 I0. J-0.315 +N6605 G01 Y-17.698 +N6610 G02 X-16.595 Y-18.148 I-0.487 J0. +N6615 G03 X-16.895 Y-18.598 I0.188 J-0.45 +N6620 G01 Y-21.576 +N6625 G03 X-16.576 Y-21.895 I0.319 J0. +N6630 G01 X16.576 +N6635 G03 X16.895 Y-21.576 I0. J0.319 +N6640 G01 Y21.576 +N6645 G03 X16.576 Y21.895 I-0.319 J0. +N6650 G01 X-16.58 +N6655 G03 X-16.895 Y21.58 I0. J-0.315 +N6660 G01 Y-18.598 +N6665 G02 X-17.198 Y-19.052 I-0.492 J0. +N6670 G03 X-17.5 Y-19.506 I0.189 J-0.454 +N6675 G01 Y-22. +N6680 G03 X-17. Y-22.5 I0.5 J0. +N6685 G01 X17. +N6690 G03 X17.5 Y-22. I0. J0.5 +N6695 G01 Y22. +N6700 G03 X17. Y22.5 I-0.5 J0. +N6705 G01 X-17. +N6710 G03 X-17.5 Y22. I0. J-0.5 +N6715 G01 Y-19.506 +N6720 G03 X-16.712 Y-19.89 I0.487 J0. +N6725 G01 X-13.1 Y-17.065 +N6730 G03 X-12.981 Y-16.929 I-0.3 J0.384 +N6735 G01 X-0.115 Y4.806 +N6740 G01 X0.065 Y5.113 +N6745 G03 X0. Y5.226 I-0.065 J0.038 +N6750 G01 Z-0.9 +N6755 G01 X-0.051 +N6760 G03 X-0.226 Y5.051 I0. J-0.175 +N6765 G01 Y-5.051 +N6770 G03 X-0.051 Y-5.226 I0.175 J0. +N6775 G01 X0.051 +N6780 G03 X0.226 Y-5.051 I0. J0.175 +N6785 G01 Y5.051 +N6790 G03 X0.051 Y5.226 I-0.175 J0. +N6795 G01 X0. +N6800 G02 X-0.283 Y5.47 I0. J0.286 +N6805 G03 X-0.65 Y5.543 I-0.196 J-0.03 +N6810 G03 X-0.695 Y5.38 I0.27 J-0.163 +N6815 G01 Y-5.376 +N6820 G03 X-0.376 Y-5.695 I0.319 J0. +N6825 G01 X0.376 +N6830 G03 X0.695 Y-5.376 I0. J0.319 +N6835 G01 Y5.376 +N6840 G03 X0.376 Y5.695 I-0.319 J0. +N6845 G01 X-0.38 +N6850 G03 X-0.65 Y5.543 I0. J-0.315 +N6855 G02 X-1.023 Y5.216 I-0.699 J0.422 +N6860 G03 X-1.295 Y4.802 I0.18 J-0.415 +N6865 G01 Y-5.976 +N6870 G03 X-0.976 Y-6.295 I0.319 J0. +N6875 G01 X0.976 +N6880 G03 X1.295 Y-5.976 I0. J0.319 +N6885 G01 Y5.976 +N6890 G03 X0.976 Y6.295 I-0.319 J0. +N6895 G01 X-0.98 +N6900 G03 X-1.295 Y5.98 I0. J-0.315 +N6905 G01 Y4.802 +N6910 G02 X-1.595 Y4.352 I-0.488 J0. +N6915 G03 X-1.895 Y3.902 I0.188 J-0.45 +N6920 G01 Y-6.576 +N6925 G03 X-1.576 Y-6.895 I0.319 J0. +N6930 G01 X1.576 +N6935 G03 X1.895 Y-6.576 I0. J0.319 +N6940 G01 Y6.576 +N6945 G03 X1.576 Y6.895 I-0.319 J0. +N6950 G01 X-1.58 +N6955 G03 X-1.895 Y6.58 I0. J-0.315 +N6960 G01 Y3.902 +N6965 G02 X-2.195 Y3.452 I-0.487 J0. +N6970 G03 X-2.495 Y3.002 I0.188 J-0.45 +N6975 G01 Y-7.176 +N6980 G03 X-2.176 Y-7.495 I0.319 J0. +N6985 G01 X2.176 +N6990 G03 X2.495 Y-7.176 I0. J0.319 +N6995 G01 Y7.176 +N7000 G03 X2.176 Y7.495 I-0.319 J0. +N7005 G01 X-2.18 +N7010 G03 X-2.495 Y7.18 I0. J-0.315 +N7015 G01 Y3.002 +N7020 G02 X-2.795 Y2.552 I-0.488 J0. +N7025 G03 X-3.095 Y2.102 I0.188 J-0.45 +N7030 G01 Y-7.776 +N7035 G03 X-2.776 Y-8.095 I0.319 J0. +N7040 G01 X2.776 +N7045 G03 X3.095 Y-7.776 I0. J0.319 +N7050 G01 Y7.776 +N7055 G03 X2.776 Y8.095 I-0.319 J0. +N7060 G01 X-2.78 +N7065 G03 X-3.095 Y7.78 I0. J-0.315 +N7070 G01 Y2.102 +N7075 G02 X-3.395 Y1.652 I-0.487 J0. +N7080 G03 X-3.695 Y1.202 I0.188 J-0.45 +N7085 G01 Y-8.376 +N7090 G03 X-3.376 Y-8.695 I0.319 J0. +N7095 G01 X3.376 +N7100 G03 X3.695 Y-8.376 I0. J0.319 +N7105 G01 Y8.376 +N7110 G03 X3.376 Y8.695 I-0.319 J0. +N7115 G01 X-3.38 +N7120 G03 X-3.695 Y8.38 I0. J-0.315 +N7125 G01 Y1.202 +N7130 G02 X-3.995 Y0.752 I-0.487 J0. +N7135 G03 X-4.295 Y0.302 I0.188 J-0.45 +N7140 G01 Y-8.976 +N7145 G03 X-3.976 Y-9.295 I0.319 J0. +N7150 G01 X3.976 +N7155 G03 X4.295 Y-8.976 I0. J0.319 +N7160 G01 Y8.976 +N7165 G03 X3.976 Y9.295 I-0.319 J0. +N7170 G01 X-3.98 +N7175 G03 X-4.295 Y8.98 I0. J-0.315 +N7180 G01 Y0.302 +N7185 G02 X-4.595 Y-0.148 I-0.487 J0. +N7190 G03 X-4.895 Y-0.598 I0.188 J-0.45 +N7195 G01 Y-9.576 +N7200 G03 X-4.576 Y-9.895 I0.319 J0. +N7205 G01 X4.576 +N7210 G03 X4.895 Y-9.576 I0. J0.319 +N7215 G01 Y9.576 +N7220 G03 X4.576 Y9.895 I-0.319 J0. +N7225 G01 X-4.58 +N7230 G03 X-4.895 Y9.58 I0. J-0.315 +N7235 G01 Y-0.598 +N7240 G02 X-5.195 Y-1.048 I-0.488 J0. +N7245 G03 X-5.495 Y-1.498 I0.188 J-0.45 +N7250 G01 Y-10.176 +N7255 G03 X-5.176 Y-10.495 I0.319 J0. +N7260 G01 X5.176 +N7265 G03 X5.495 Y-10.176 I0. J0.319 +N7270 G01 Y10.176 +N7275 G03 X5.176 Y10.495 I-0.319 J0. +N7280 G01 X-5.18 +N7285 G03 X-5.495 Y10.18 I0. J-0.315 +N7290 G01 Y-1.498 +N7295 G02 X-5.795 Y-1.948 I-0.488 J0. +N7300 G03 X-6.095 Y-2.398 I0.188 J-0.45 +N7305 G01 Y-10.776 +N7310 G03 X-5.776 Y-11.095 I0.319 J0. +N7315 G01 X5.776 +N7320 G03 X6.095 Y-10.776 I0. J0.319 +N7325 G01 Y10.776 +N7330 G03 X5.776 Y11.095 I-0.319 J0. +N7335 G01 X-5.78 +N7340 G03 X-6.095 Y10.78 I0. J-0.315 +N7345 G01 Y-2.398 +N7350 G02 X-6.395 Y-2.848 I-0.488 J0. +N7355 G03 X-6.695 Y-3.298 I0.188 J-0.45 +N7360 G01 Y-11.376 +N7365 G03 X-6.376 Y-11.695 I0.319 J0. +N7370 G01 X6.376 +N7375 G03 X6.695 Y-11.376 I0. J0.319 +N7380 G01 Y11.376 +N7385 G03 X6.376 Y11.695 I-0.319 J0. +N7390 G01 X-6.38 +N7395 G03 X-6.695 Y11.38 I0. J-0.315 +N7400 G01 Y-3.298 +N7405 G02 X-6.995 Y-3.748 I-0.487 J0. +N7410 G03 X-7.295 Y-4.198 I0.188 J-0.45 +N7415 G01 Y-11.976 +N7420 G03 X-6.976 Y-12.295 I0.319 J0. +N7425 G01 X6.976 +N7430 G03 X7.295 Y-11.976 I0. J0.319 +N7435 G01 Y11.976 +N7440 G03 X6.976 Y12.295 I-0.319 J0. +N7445 G01 X-6.98 +N7450 G03 X-7.295 Y11.98 I0. J-0.315 +N7455 G01 Y-4.198 +N7460 G02 X-7.595 Y-4.648 I-0.487 J0. +N7465 G03 X-7.895 Y-5.098 I0.188 J-0.45 +N7470 G01 Y-12.576 +N7475 G03 X-7.576 Y-12.895 I0.319 J0. +N7480 G01 X7.576 +N7485 G03 X7.895 Y-12.576 I0. J0.319 +N7490 G01 Y12.576 +N7495 G03 X7.576 Y12.895 I-0.319 J0. +N7500 G01 X-7.58 +N7505 G03 X-7.895 Y12.58 I0. J-0.315 +N7510 G01 Y-5.098 +N7515 G02 X-8.195 Y-5.548 I-0.487 J0. +N7520 G03 X-8.495 Y-5.998 I0.188 J-0.45 +N7525 G01 Y-13.176 +N7530 G03 X-8.176 Y-13.495 I0.319 J0. +N7535 G01 X8.176 +N7540 G03 X8.495 Y-13.176 I0. J0.319 +N7545 G01 Y13.176 +N7550 G03 X8.176 Y13.495 I-0.319 J0. +N7555 G01 X-8.18 +N7560 G03 X-8.495 Y13.18 I0. J-0.315 +N7565 G01 Y-5.998 +N7570 G02 X-8.795 Y-6.448 I-0.488 J0. +N7575 G03 X-9.095 Y-6.898 I0.188 J-0.45 +N7580 G01 Y-13.776 +N7585 G03 X-8.776 Y-14.095 I0.319 J0. +N7590 G01 X8.776 +N7595 G03 X9.095 Y-13.776 I0. J0.319 +N7600 G01 Y13.776 +N7605 G03 X8.776 Y14.095 I-0.319 J0. +N7610 G01 X-8.78 +N7615 G03 X-9.095 Y13.78 I0. J-0.315 +N7620 G01 Y-6.898 +N7625 G02 X-9.395 Y-7.348 I-0.488 J0. +N7630 G03 X-9.695 Y-7.798 I0.188 J-0.45 +N7635 G01 Y-14.376 +N7640 G03 X-9.376 Y-14.695 I0.319 J0. +N7645 G01 X9.376 +N7650 G03 X9.695 Y-14.376 I0. J0.319 +N7655 G01 Y14.376 +N7660 G03 X9.376 Y14.695 I-0.319 J0. +N7665 G01 X-9.38 +N7670 G03 X-9.695 Y14.38 I0. J-0.315 +N7675 G01 Y-7.798 +N7680 G02 X-9.995 Y-8.248 I-0.488 J0. +N7685 G03 X-10.295 Y-8.698 I0.188 J-0.45 +N7690 G01 Y-14.976 +N7695 G03 X-9.976 Y-15.295 I0.319 J0. +N7700 G01 X9.976 +N7705 G03 X10.295 Y-14.976 I0. J0.319 +N7710 G01 Y14.976 +N7715 G03 X9.976 Y15.295 I-0.319 J0. +N7720 G01 X-9.98 +N7725 G03 X-10.295 Y14.98 I0. J-0.315 +N7730 G01 Y-8.698 +N7735 G02 X-10.595 Y-9.148 I-0.488 J0. +N7740 G03 X-10.895 Y-9.598 I0.188 J-0.45 +N7745 G01 Y-15.576 +N7750 G03 X-10.576 Y-15.895 I0.319 J0. +N7755 G01 X10.576 +N7760 G03 X10.895 Y-15.576 I0. J0.319 +N7765 G01 Y15.576 +N7770 G03 X10.576 Y15.895 I-0.319 J0. +N7775 G01 X-10.58 +N7780 G03 X-10.895 Y15.58 I0. J-0.315 +N7785 G01 Y-9.598 +N7790 G02 X-11.195 Y-10.048 I-0.487 J0. +N7795 G03 X-11.495 Y-10.498 I0.188 J-0.45 +N7800 G01 Y-16.176 +N7805 G03 X-11.176 Y-16.495 I0.319 J0. +N7810 G01 X11.176 +N7815 G03 X11.495 Y-16.176 I0. J0.319 +N7820 G01 Y16.176 +N7825 G03 X11.176 Y16.495 I-0.319 J0. +N7830 G01 X-11.18 +N7835 G03 X-11.495 Y16.18 I0. J-0.315 +N7840 G01 Y-10.498 +N7845 G02 X-11.795 Y-10.948 I-0.488 J0. +N7850 G03 X-12.095 Y-11.398 I0.188 J-0.45 +N7855 G01 Y-16.776 +N7860 G03 X-11.776 Y-17.095 I0.319 J0. +N7865 G01 X11.776 +N7870 G03 X12.095 Y-16.776 I0. J0.319 +N7875 G01 Y16.776 +N7880 G03 X11.776 Y17.095 I-0.319 J0. +N7885 G01 X-11.78 +N7890 G03 X-12.095 Y16.78 I0. J-0.315 +N7895 G01 Y-11.398 +N7900 G02 X-12.395 Y-11.848 I-0.488 J0. +N7905 G03 X-12.695 Y-12.298 I0.188 J-0.45 +N7910 G01 Y-17.376 +N7915 G03 X-12.376 Y-17.695 I0.319 J0. +N7920 G01 X12.376 +N7925 G03 X12.695 Y-17.376 I0. J0.319 +N7930 G01 Y17.376 +N7935 G03 X12.376 Y17.695 I-0.319 J0. +N7940 G01 X-12.38 +N7945 G03 X-12.695 Y17.38 I0. J-0.315 +N7950 G01 Y-12.298 +N7955 G02 X-12.995 Y-12.748 I-0.488 J0. +N7960 G03 X-13.295 Y-13.198 I0.188 J-0.45 +N7965 G01 Y-17.976 +N7970 G03 X-12.976 Y-18.295 I0.319 J0. +N7975 G01 X12.976 +N7980 G03 X13.295 Y-17.976 I0. J0.319 +N7985 G01 Y17.976 +N7990 G03 X12.976 Y18.295 I-0.319 J0. +N7995 G01 X-12.98 +N8000 G03 X-13.295 Y17.98 I0. J-0.315 +N8005 G01 Y-13.198 +N8010 G02 X-13.595 Y-13.648 I-0.488 J0. +N8015 G03 X-13.895 Y-14.098 I0.188 J-0.45 +N8020 G01 Y-18.576 +N8025 G03 X-13.576 Y-18.895 I0.319 J0. +N8030 G01 X13.576 +N8035 G03 X13.895 Y-18.576 I0. J0.319 +N8040 G01 Y18.576 +N8045 G03 X13.576 Y18.895 I-0.319 J0. +N8050 G01 X-13.58 +N8055 G03 X-13.895 Y18.58 I0. J-0.315 +N8060 G01 Y-14.098 +N8065 G02 X-14.195 Y-14.548 I-0.487 J0. +N8070 G03 X-14.495 Y-14.998 I0.188 J-0.45 +N8075 G01 Y-19.176 +N8080 G03 X-14.176 Y-19.495 I0.319 J0. +N8085 G01 X14.176 +N8090 G03 X14.495 Y-19.176 I0. J0.319 +N8095 G01 Y19.176 +N8100 G03 X14.176 Y19.495 I-0.319 J0. +N8105 G01 X-14.18 +N8110 G03 X-14.495 Y19.18 I0. J-0.315 +N8115 G01 Y-14.998 +N8120 G02 X-14.795 Y-15.448 I-0.488 J0. +N8125 G03 X-15.095 Y-15.898 I0.188 J-0.45 +N8130 G01 Y-19.776 +N8135 G03 X-14.776 Y-20.095 I0.319 J0. +N8140 G01 X14.776 +N8145 G03 X15.095 Y-19.776 I0. J0.319 +N8150 G01 Y19.776 +N8155 G03 X14.776 Y20.095 I-0.319 J0. +N8160 G01 X-14.78 +N8165 G03 X-15.095 Y19.78 I0. J-0.315 +N8170 G01 Y-15.898 +N8175 G02 X-15.395 Y-16.348 I-0.488 J0. +N8180 G03 X-15.695 Y-16.798 I0.188 J-0.45 +N8185 G01 Y-20.376 +N8190 G03 X-15.376 Y-20.695 I0.319 J0. +N8195 G01 X15.376 +N8200 G03 X15.695 Y-20.376 I0. J0.319 +N8205 G01 Y20.376 +N8210 G03 X15.376 Y20.695 I-0.319 J0. +N8215 G01 X-15.38 +N8220 G03 X-15.695 Y20.38 I0. J-0.315 +N8225 G01 Y-16.798 +N8230 G02 X-15.995 Y-17.248 I-0.488 J0. +N8235 G03 X-16.295 Y-17.698 I0.188 J-0.45 +N8240 G01 Y-20.976 +N8245 G03 X-15.976 Y-21.295 I0.319 J0. +N8250 G01 X15.976 +N8255 G03 X16.295 Y-20.976 I0. J0.319 +N8260 G01 Y20.976 +N8265 G03 X15.976 Y21.295 I-0.319 J0. +N8270 G01 X-15.98 +N8275 G03 X-16.295 Y20.98 I0. J-0.315 +N8280 G01 Y-17.698 +N8285 G02 X-16.595 Y-18.148 I-0.487 J0. +N8290 G03 X-16.895 Y-18.598 I0.188 J-0.45 +N8295 G01 Y-21.576 +N8300 G03 X-16.576 Y-21.895 I0.319 J0. +N8305 G01 X16.576 +N8310 G03 X16.895 Y-21.576 I0. J0.319 +N8315 G01 Y21.576 +N8320 G03 X16.576 Y21.895 I-0.319 J0. +N8325 G01 X-16.58 +N8330 G03 X-16.895 Y21.58 I0. J-0.315 +N8335 G01 Y-18.598 +N8340 G02 X-17.198 Y-19.052 I-0.492 J0. +N8345 G03 X-17.5 Y-19.506 I0.189 J-0.454 +N8350 G01 Y-22. +N8355 G03 X-17. Y-22.5 I0.5 J0. +N8360 G01 X17. +N8365 G03 X17.5 Y-22. I0. J0.5 +N8370 G01 Y22. +N8375 G03 X17. Y22.5 I-0.5 J0. +N8380 G01 X-17. +N8385 G03 X-17.5 Y22. I0. J-0.5 +N8390 G01 Y-19.506 +N8395 G00 Z2.5 +(2D POCKET4) +N8405 G00 X0. Y5.226 +N8410 G00 Z0.1 +N8415 G01 Z-1. F500. +N8420 G01 X-0.051 F272. +N8425 G03 X-0.226 Y5.051 I0. J-0.175 +N8430 G01 Y-5.051 +N8435 G03 X-0.051 Y-5.226 I0.175 J0. +N8440 G01 X0.051 +N8445 G03 X0.226 Y-5.051 I0. J0.175 +N8450 G01 Y5.051 +N8455 G03 X0.051 Y5.226 I-0.175 J0. +N8460 G01 X0. +N8465 G02 X-0.283 Y5.47 I0. J0.286 +N8470 G03 X-0.65 Y5.543 I-0.196 J-0.03 +N8475 G03 X-0.695 Y5.38 I0.27 J-0.163 +N8480 G01 Y-5.376 +N8485 G03 X-0.376 Y-5.695 I0.319 J0. +N8490 G01 X0.376 +N8495 G03 X0.695 Y-5.376 I0. J0.319 +N8500 G01 Y5.376 +N8505 G03 X0.376 Y5.695 I-0.319 J0. +N8510 G01 X-0.38 +N8515 G03 X-0.65 Y5.543 I0. J-0.315 +N8520 G02 X-1.023 Y5.216 I-0.699 J0.422 +N8525 G03 X-1.295 Y4.802 I0.18 J-0.415 +N8530 G01 Y-5.976 +N8535 G03 X-0.976 Y-6.295 I0.319 J0. +N8540 G01 X0.976 +N8545 G03 X1.295 Y-5.976 I0. J0.319 +N8550 G01 Y5.976 +N8555 G03 X0.976 Y6.295 I-0.319 J0. +N8560 G01 X-0.98 +N8565 G03 X-1.295 Y5.98 I0. J-0.315 +N8570 G01 Y4.802 +N8575 G02 X-1.595 Y4.352 I-0.488 J0. +N8580 G03 X-1.895 Y3.902 I0.188 J-0.45 +N8585 G01 Y-6.576 +N8590 G03 X-1.576 Y-6.895 I0.319 J0. +N8595 G01 X1.576 +N8600 G03 X1.895 Y-6.576 I0. J0.319 +N8605 G01 Y6.576 +N8610 G03 X1.576 Y6.895 I-0.319 J0. +N8615 G01 X-1.58 +N8620 G03 X-1.895 Y6.58 I0. J-0.315 +N8625 G01 Y3.902 +N8630 G02 X-2.195 Y3.452 I-0.487 J0. +N8635 G03 X-2.495 Y3.002 I0.188 J-0.45 +N8640 G01 Y-7.176 +N8645 G03 X-2.176 Y-7.495 I0.319 J0. +N8650 G01 X2.176 +N8655 G03 X2.495 Y-7.176 I0. J0.319 +N8660 G01 Y7.176 +N8665 G03 X2.176 Y7.495 I-0.319 J0. +N8670 G01 X-2.18 +N8675 G03 X-2.495 Y7.18 I0. J-0.315 +N8680 G01 Y3.002 +N8685 G02 X-2.795 Y2.552 I-0.488 J0. +N8690 G03 X-3.095 Y2.102 I0.188 J-0.45 +N8695 G01 Y-7.776 +N8700 G03 X-2.776 Y-8.095 I0.319 J0. +N8705 G01 X2.776 +N8710 G03 X3.095 Y-7.776 I0. J0.319 +N8715 G01 Y7.776 +N8720 G03 X2.776 Y8.095 I-0.319 J0. +N8725 G01 X-2.78 +N8730 G03 X-3.095 Y7.78 I0. J-0.315 +N8735 G01 Y2.102 +N8740 G02 X-3.395 Y1.652 I-0.487 J0. +N8745 G03 X-3.695 Y1.202 I0.188 J-0.45 +N8750 G01 Y-8.376 +N8755 G03 X-3.376 Y-8.695 I0.319 J0. +N8760 G01 X3.376 +N8765 G03 X3.695 Y-8.376 I0. J0.319 +N8770 G01 Y8.376 +N8775 G03 X3.376 Y8.695 I-0.319 J0. +N8780 G01 X-3.38 +N8785 G03 X-3.695 Y8.38 I0. J-0.315 +N8790 G01 Y1.202 +N8795 G02 X-3.995 Y0.752 I-0.487 J0. +N8800 G03 X-4.295 Y0.302 I0.188 J-0.45 +N8805 G01 Y-8.976 +N8810 G03 X-3.976 Y-9.295 I0.319 J0. +N8815 G01 X3.976 +N8820 G03 X4.295 Y-8.976 I0. J0.319 +N8825 G01 Y8.976 +N8830 G03 X3.976 Y9.295 I-0.319 J0. +N8835 G01 X-3.98 +N8840 G03 X-4.295 Y8.98 I0. J-0.315 +N8845 G01 Y0.302 +N8850 G02 X-4.595 Y-0.148 I-0.487 J0. +N8855 G03 X-4.895 Y-0.598 I0.188 J-0.45 +N8860 G01 Y-9.576 +N8865 G03 X-4.576 Y-9.895 I0.319 J0. +N8870 G01 X4.576 +N8875 G03 X4.895 Y-9.576 I0. J0.319 +N8880 G01 Y9.576 +N8885 G03 X4.576 Y9.895 I-0.319 J0. +N8890 G01 X-4.58 +N8895 G03 X-4.895 Y9.58 I0. J-0.315 +N8900 G01 Y-0.598 +N8905 G02 X-5.195 Y-1.048 I-0.488 J0. +N8910 G03 X-5.495 Y-1.498 I0.188 J-0.45 +N8915 G01 Y-10.176 +N8920 G03 X-5.176 Y-10.495 I0.319 J0. +N8925 G01 X5.176 +N8930 G03 X5.495 Y-10.176 I0. J0.319 +N8935 G01 Y10.176 +N8940 G03 X5.176 Y10.495 I-0.319 J0. +N8945 G01 X-5.18 +N8950 G03 X-5.495 Y10.18 I0. J-0.315 +N8955 G01 Y-1.498 +N8960 G02 X-5.795 Y-1.948 I-0.488 J0. +N8965 G03 X-6.095 Y-2.398 I0.188 J-0.45 +N8970 G01 Y-10.776 +N8975 G03 X-5.776 Y-11.095 I0.319 J0. +N8980 G01 X5.776 +N8985 G03 X6.095 Y-10.776 I0. J0.319 +N8990 G01 Y10.776 +N8995 G03 X5.776 Y11.095 I-0.319 J0. +N9000 G01 X-5.78 +N9005 G03 X-6.095 Y10.78 I0. J-0.315 +N9010 G01 Y-2.398 +N9015 G02 X-6.395 Y-2.848 I-0.488 J0. +N9020 G03 X-6.695 Y-3.298 I0.188 J-0.45 +N9025 G01 Y-11.376 +N9030 G03 X-6.376 Y-11.695 I0.319 J0. +N9035 G01 X6.376 +N9040 G03 X6.695 Y-11.376 I0. J0.319 +N9045 G01 Y11.376 +N9050 G03 X6.376 Y11.695 I-0.319 J0. +N9055 G01 X-6.38 +N9060 G03 X-6.695 Y11.38 I0. J-0.315 +N9065 G01 Y-3.298 +N9070 G02 X-6.995 Y-3.748 I-0.487 J0. +N9075 G03 X-7.295 Y-4.198 I0.188 J-0.45 +N9080 G01 Y-11.976 +N9085 G03 X-6.976 Y-12.295 I0.319 J0. +N9090 G01 X6.976 +N9095 G03 X7.295 Y-11.976 I0. J0.319 +N9100 G01 Y11.976 +N9105 G03 X6.976 Y12.295 I-0.319 J0. +N9110 G01 X-6.98 +N9115 G03 X-7.295 Y11.98 I0. J-0.315 +N9120 G01 Y-4.198 +N9125 G02 X-7.595 Y-4.648 I-0.487 J0. +N9130 G03 X-7.895 Y-5.098 I0.188 J-0.45 +N9135 G01 Y-12.576 +N9140 G03 X-7.576 Y-12.895 I0.319 J0. +N9145 G01 X7.576 +N9150 G03 X7.895 Y-12.576 I0. J0.319 +N9155 G01 Y12.576 +N9160 G03 X7.576 Y12.895 I-0.319 J0. +N9165 G01 X-7.58 +N9170 G03 X-7.895 Y12.58 I0. J-0.315 +N9175 G01 Y-5.098 +N9180 G02 X-8.195 Y-5.548 I-0.487 J0. +N9185 G03 X-8.495 Y-5.998 I0.188 J-0.45 +N9190 G01 Y-13.176 +N9195 G03 X-8.176 Y-13.495 I0.319 J0. +N9200 G01 X8.176 +N9205 G03 X8.495 Y-13.176 I0. J0.319 +N9210 G01 Y13.176 +N9215 G03 X8.176 Y13.495 I-0.319 J0. +N9220 G01 X-8.18 +N9225 G03 X-8.495 Y13.18 I0. J-0.315 +N9230 G01 Y-5.998 +N9235 G02 X-8.795 Y-6.448 I-0.488 J0. +N9240 G03 X-9.095 Y-6.898 I0.188 J-0.45 +N9245 G01 Y-13.776 +N9250 G03 X-8.776 Y-14.095 I0.319 J0. +N9255 G01 X8.776 +N9260 G03 X9.095 Y-13.776 I0. J0.319 +N9265 G01 Y13.776 +N9270 G03 X8.776 Y14.095 I-0.319 J0. +N9275 G01 X-8.78 +N9280 G03 X-9.095 Y13.78 I0. J-0.315 +N9285 G01 Y-6.898 +N9290 G02 X-9.395 Y-7.348 I-0.488 J0. +N9295 G03 X-9.695 Y-7.798 I0.188 J-0.45 +N9300 G01 Y-14.376 +N9305 G03 X-9.376 Y-14.695 I0.319 J0. +N9310 G01 X9.376 +N9315 G03 X9.695 Y-14.376 I0. J0.319 +N9320 G01 Y14.376 +N9325 G03 X9.376 Y14.695 I-0.319 J0. +N9330 G01 X-9.38 +N9335 G03 X-9.695 Y14.38 I0. J-0.315 +N9340 G01 Y-7.798 +N9345 G02 X-9.995 Y-8.248 I-0.488 J0. +N9350 G03 X-10.295 Y-8.698 I0.188 J-0.45 +N9355 G01 Y-14.976 +N9360 G03 X-9.976 Y-15.295 I0.319 J0. +N9365 G01 X9.976 +N9370 G03 X10.295 Y-14.976 I0. J0.319 +N9375 G01 Y14.976 +N9380 G03 X9.976 Y15.295 I-0.319 J0. +N9385 G01 X-9.98 +N9390 G03 X-10.295 Y14.98 I0. J-0.315 +N9395 G01 Y-8.698 +N9400 G02 X-10.595 Y-9.148 I-0.488 J0. +N9405 G03 X-10.895 Y-9.598 I0.188 J-0.45 +N9410 G01 Y-15.576 +N9415 G03 X-10.576 Y-15.895 I0.319 J0. +N9420 G01 X10.576 +N9425 G03 X10.895 Y-15.576 I0. J0.319 +N9430 G01 Y15.576 +N9435 G03 X10.576 Y15.895 I-0.319 J0. +N9440 G01 X-10.58 +N9445 G03 X-10.895 Y15.58 I0. J-0.315 +N9450 G01 Y-9.598 +N9455 G02 X-11.195 Y-10.048 I-0.487 J0. +N9460 G03 X-11.495 Y-10.498 I0.188 J-0.45 +N9465 G01 Y-16.176 +N9470 G03 X-11.176 Y-16.495 I0.319 J0. +N9475 G01 X11.176 +N9480 G03 X11.495 Y-16.176 I0. J0.319 +N9485 G01 Y16.176 +N9490 G03 X11.176 Y16.495 I-0.319 J0. +N9495 G01 X-11.18 +N9500 G03 X-11.495 Y16.18 I0. J-0.315 +N9505 G01 Y-10.498 +N9510 G02 X-11.795 Y-10.948 I-0.488 J0. +N9515 G03 X-12.095 Y-11.398 I0.188 J-0.45 +N9520 G01 Y-16.776 +N9525 G03 X-11.776 Y-17.095 I0.319 J0. +N9530 G01 X11.776 +N9535 G03 X12.095 Y-16.776 I0. J0.319 +N9540 G01 Y16.776 +N9545 G03 X11.776 Y17.095 I-0.319 J0. +N9550 G01 X-11.78 +N9555 G03 X-12.095 Y16.78 I0. J-0.315 +N9560 G01 Y-11.398 +N9565 G02 X-12.395 Y-11.848 I-0.488 J0. +N9570 G03 X-12.695 Y-12.298 I0.188 J-0.45 +N9575 G01 Y-17.376 +N9580 G03 X-12.376 Y-17.695 I0.319 J0. +N9585 G01 X12.376 +N9590 G03 X12.695 Y-17.376 I0. J0.319 +N9595 G01 Y17.376 +N9600 G03 X12.376 Y17.695 I-0.319 J0. +N9605 G01 X-12.38 +N9610 G03 X-12.695 Y17.38 I0. J-0.315 +N9615 G01 Y-12.298 +N9620 G02 X-12.995 Y-12.748 I-0.488 J0. +N9625 G03 X-13.295 Y-13.198 I0.188 J-0.45 +N9630 G01 Y-17.976 +N9635 G03 X-12.976 Y-18.295 I0.319 J0. +N9640 G01 X12.976 +N9645 G03 X13.295 Y-17.976 I0. J0.319 +N9650 G01 Y17.976 +N9655 G03 X12.976 Y18.295 I-0.319 J0. +N9660 G01 X-12.98 +N9665 G03 X-13.295 Y17.98 I0. J-0.315 +N9670 G01 Y-13.198 +N9675 G02 X-13.595 Y-13.648 I-0.488 J0. +N9680 G03 X-13.895 Y-14.098 I0.188 J-0.45 +N9685 G01 Y-18.576 +N9690 G03 X-13.576 Y-18.895 I0.319 J0. +N9695 G01 X13.576 +N9700 G03 X13.895 Y-18.576 I0. J0.319 +N9705 G01 Y18.576 +N9710 G03 X13.576 Y18.895 I-0.319 J0. +N9715 G01 X-13.58 +N9720 G03 X-13.895 Y18.58 I0. J-0.315 +N9725 G01 Y-14.098 +N9730 G02 X-14.195 Y-14.548 I-0.487 J0. +N9735 G03 X-14.495 Y-14.998 I0.188 J-0.45 +N9740 G01 Y-19.176 +N9745 G03 X-14.176 Y-19.495 I0.319 J0. +N9750 G01 X14.176 +N9755 G03 X14.495 Y-19.176 I0. J0.319 +N9760 G01 Y19.176 +N9765 G03 X14.176 Y19.495 I-0.319 J0. +N9770 G01 X-14.18 +N9775 G03 X-14.495 Y19.18 I0. J-0.315 +N9780 G01 Y-14.998 +N9785 G02 X-14.795 Y-15.448 I-0.488 J0. +N9790 G03 X-15.095 Y-15.898 I0.188 J-0.45 +N9795 G01 Y-19.776 +N9800 G03 X-14.776 Y-20.095 I0.319 J0. +N9805 G01 X14.776 +N9810 G03 X15.095 Y-19.776 I0. J0.319 +N9815 G01 Y19.776 +N9820 G03 X14.776 Y20.095 I-0.319 J0. +N9825 G01 X-14.78 +N9830 G03 X-15.095 Y19.78 I0. J-0.315 +N9835 G01 Y-15.898 +N9840 G02 X-15.395 Y-16.348 I-0.488 J0. +N9845 G03 X-15.695 Y-16.798 I0.188 J-0.45 +N9850 G01 Y-20.376 +N9855 G03 X-15.376 Y-20.695 I0.319 J0. +N9860 G01 X15.376 +N9865 G03 X15.695 Y-20.376 I0. J0.319 +N9870 G01 Y20.376 +N9875 G03 X15.376 Y20.695 I-0.319 J0. +N9880 G01 X-15.38 +N9885 G03 X-15.695 Y20.38 I0. J-0.315 +N9890 G01 Y-16.798 +N9895 G02 X-15.995 Y-17.248 I-0.488 J0. +N9900 G03 X-16.295 Y-17.698 I0.188 J-0.45 +N9905 G01 Y-20.976 +N9910 G03 X-15.976 Y-21.295 I0.319 J0. +N9915 G01 X15.976 +N9920 G03 X16.295 Y-20.976 I0. J0.319 +N9925 G01 Y20.976 +N9930 G03 X15.976 Y21.295 I-0.319 J0. +N9935 G01 X-15.98 +N9940 G03 X-16.295 Y20.98 I0. J-0.315 +N9945 G01 Y-17.698 +N9950 G02 X-16.595 Y-18.148 I-0.487 J0. +N9955 G03 X-16.895 Y-18.598 I0.188 J-0.45 +N9960 G01 Y-21.576 +N9965 G03 X-16.576 Y-21.895 I0.319 J0. +N9970 G01 X16.576 +N9975 G03 X16.895 Y-21.576 I0. J0.319 +N9980 G01 Y21.576 +N9985 G03 X16.576 Y21.895 I-0.319 J0. +N9990 G01 X-16.58 +N9995 G03 X-16.895 Y21.58 I0. J-0.315 +N10000 G01 Y-18.598 +N10005 G02 X-17.198 Y-19.052 I-0.492 J0. +N10010 G03 X-17.5 Y-19.506 I0.189 J-0.454 +N10015 G01 Y-22. +N10020 G03 X-17. Y-22.5 I0.5 J0. +N10025 G01 X17. +N10030 G03 X17.5 Y-22. I0. J0.5 +N10035 G01 Y22. +N10040 G03 X17. Y22.5 I-0.5 J0. +N10045 G01 X-17. +N10050 G03 X-17.5 Y22. I0. J-0.5 +N10055 G01 Y-19.506 +N10060 G00 Z2.5 +N10070 M9 +N10075 G53 Z0. +N10080 G53 X0. Y0. +N10085 M30 +% diff --git a/rootfs/board/common/rootfs_overlay/root/anchor.ngc b/rootfs/board/common/rootfs_overlay/root/anchor.ngc new file mode 100644 index 0000000..e43d58f --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/anchor.ngc @@ -0,0 +1,44 @@ +(ISO 6983 code of anchor) +G10 L2 P1 X0 Y-18 +G17 G21 G40 G49 (Plan XY, mode mm, annulation de la compensation de rayon, et de longueur) +G64 P2.0 (Mode tajectoire continue avec tolérance 0.5 [mm]) +(G61.1) + +(M61 Q1) +F9000 +S75000 + +G00 X0 Y0 Z0 +M3 + +o103 repeat [1] + G02 X-13 Y13 I3.25 J16.25 + G01 X-14.95 Y11.05 + G01 Y18.2 + G01 X-9.1 Y16.9 + G01 X-11.05 Y15.61 + G03 X-1.95 Y5.85 I11.702 J1.788 + G01 Y22.75 + G01 X-8.45 + G01 Y26 + G01 X-1.95 + G01 Y29.25 + G02 X1.95 Y29.25 I1.95 J3.25 + G01 Y26 + G01 X8.45 + G01 Y22.75 + G01 X1.95 + G01 Y5.85 + G03 X11.05 Y15.61 I-2.602 J11.548 + G01 X9.1 Y16.9 + G01 X14.95 Y18.2 + G01 Y11.05 + G01 X13 Y13 + G02 X0 Y0 I-16.25 J3.25 +o103 endrepeat + +G10 L2 P0 X0 Y0 +G17 G21 G40 G49 +G00 X0 Y0 Z0 + +M2 diff --git a/rootfs/board/common/rootfs_overlay/root/arctest.ngc b/rootfs/board/common/rootfs_overlay/root/arctest.ngc new file mode 100644 index 0000000..053b8d0 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/arctest.ngc @@ -0,0 +1,7 @@ +(M61 Q1) +F600 +G0 X0 Y0 Z0 +G2 X-1 Y1 J1 +G3 X-2 Y0 I-1 + +M2 diff --git a/rootfs/board/common/rootfs_overlay/root/demo.ngc b/rootfs/board/common/rootfs_overlay/root/demo.ngc new file mode 100644 index 0000000..f87cefb --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/demo.ngc @@ -0,0 +1,444 @@ +% +(PIECEDEMOLINUXCNC) +(MACHINE) +( MODEL M3) +( DESCRIPTION M3) +(T1 D=1. CR=0. - ZMIN=-1. - FLAT END MILL) +N10 G90 G94 G017 G91.1 +N15 G021 +(2D SURFACAGE) +(N20 M61 Q1) +N25 S45000 M3 +N30 G54 +G00 X0.73 Y1.256 Z2. +N45 G00 Z0.1 +N50 G01 Z-0.1 F500 +N55 G02 X0.77 Y1.324 I2.215 J-1.269 F272. +N60 G02 X0.985 Y1.334 I0.111 J-0.068 +N65 G01 X1.032 Y1.272 +N70 G02 Y1.062 I-0.14 J-0.105 +N75 G01 X0.694 Y0.611 +N80 G02 X0.496 Y0.71 I-0.09 J0.067 +N85 G02 X0.73 Y1.256 I2.448 J-0.722 +N90 G03 X0.694 Y1.672 I-0.318 J0.182 +N95 G02 X0.699 Y2.089 I0.25 J0.206 +N100 G02 X1.061 Y2.077 I0.176 J-0.152 +N105 G01 X1.532 Y1.449 +N110 G02 Y0.885 I-0.376 J-0.282 +N115 G01 X0.272 Y-0.796 +N120 G02 X-0.021 Y-0.737 I-0.132 J0.099 +N125 G02 X0.016 Y0.75 I2.702 J0.677 +N130 G02 X0.699 Y2.089 I4.106 J-1.248 +N140 G03 X0.841 Y2.567 I-0.462 J0.398 +N145 G02 X1.303 Y2.755 I0.255 J0.034 +N150 G01 X2.282 Y1.449 +N155 G02 Y0.885 I-0.376 J-0.282 +N160 G01 X0.183 Y-1.914 +N165 G02 X-0.176 Y-1.897 I-0.174 J0.13 +N170 G02 X-0.691 Y0.163 I3.006 J1.845 +N175 G02 X0.042 Y2.156 I3.691 J-0.226 +N180 G03 X0.366 Y2.616 I-7.207 J5.406 +N185 G02 X0.689 Y3.077 I7.53 J-4.945 +N190 G02 X1.061 I0.186 J-0.14 +N195 G01 X1.303 Y2.755 +N200 G03 X1.813 Y2.575 I0.39 J0.293 +N205 G02 X2.323 Y2.395 I0.12 J-0.472 +N210 G01 X3.032 Y1.449 +N215 G02 Y0.885 I-0.376 J-0.282 +N220 G01 X0.186 Y-2.91 +N225 G02 X-0.186 I-0.186 J0.14 +N230 G02 X-0.32 Y-2.719 I2.989 J2.242 +N235 G03 X-0.454 Y-2.528 I-3.124 J-2.051 +N240 G02 X-1.282 Y-0.005 I3.311 J2.483 +N245 G02 X-0.43 Y2.51 I4.26 J-0.041 +N250 G03 X0.129 Y3.293 I-16.48 J12.36 +N255 G02 X0.689 Y4.077 I17.038 J-11.575 +N260 G02 X1.061 I0.186 J-0.14 +N265 G01 X2.323 Y2.395 +N270 G03 X2.833 Y2.215 I0.39 J0.293 +N275 G02 X3.343 Y2.035 I0.12 J-0.472 +N280 G01 X3.782 Y1.449 +N285 G02 Y0.885 I-0.376 J-0.282 +N290 G01 X0.186 Y-3.91 +N295 G02 X-0.186 I-0.186 J0.14 +N300 G02 X-0.55 Y-3.392 I8.114 J6.086 +N305 G03 X-0.914 Y-2.873 I-8.479 J-5.568 +N310 G02 X-0.91 Y2.87 I3.825 J2.869 +N315 G03 X-0.111 Y3.973 I-33.015 J24.761 +N320 G02 X0.689 Y5.077 I33.811 J-23.655 +N325 G02 X1.061 I0.186 J-0.14 +N330 G01 X3.343 Y2.035 +N335 G03 X3.855 Y1.861 I0.383 J0.287 +N340 G02 X4.362 Y1.674 I0.124 J-0.443 +N345 G02 X4.333 Y0.619 I-0.759 J-0.507 +N350 G01 X0.186 Y-4.91 +N355 G02 X-0.186 I-0.186 J0.14 +N360 G02 X-0.788 Y-4.07 I18.991 J14.244 +N365 G03 X-1.39 Y-3.23 I-19.595 J-13.405 +N370 G02 Y3.23 I4.307 J3.23 +N375 G01 X0.689 Y6.077 +N380 G02 X1.061 I0.186 J-0.14 +N385 G01 X4.333 Y1.714 +N390 G02 X4.362 Y1.674 I-0.73 J-0.548 +N395 G03 X4.793 Y1.48 I0.371 J0.248 +N400 G02 X5.15 Y1.169 I0.043 J-0.311 +N405 G02 X4.875 Y0.342 I-1.375 J-0.002 +N410 G01 X0.186 Y-5.91 +N415 G02 X-0.186 I-0.186 J0.14 +N420 G01 X-1.87 Y-3.59 +N425 G02 Y3.59 I4.787 J3.59 +N430 G01 X0.689 Y7.077 +N435 G02 X1.061 I0.186 J-0.14 +N440 G01 X4.875 Y1.991 +N445 G02 X5.15 Y1.169 I-1.1 J-0.825 +N450 G03 X5.408 Y0.737 I0.492 J0.001 +N455 G02 X5.544 Y0.253 I-0.167 J-0.308 +N460 G02 X5.429 Y0.081 I-1.562 J0.914 +N465 G01 X0.186 Y-6.91 +N470 G02 X-0.186 I-0.186 J0.14 +N475 G01 X-2.35 Y-3.95 +N480 G02 Y3.95 I5.267 J3.95 +N485 G01 X0.647 Y8.02 +N490 G02 X1.103 I0.228 J-0.171 +N495 G01 X5.429 Y2.253 +N500 G02 X5.544 Y0.253 I-1.448 J-1.086 +N505 G03 X5.548 Y-0.272 I0.442 J-0.258 +N510 G02 X5.522 Y-0.795 I-0.4 J-0.243 +N515 G01 X0.186 Y-7.91 +N520 G02 X-0.186 I-0.186 J0.14 +N525 G01 X-2.83 Y-4.31 +N530 G02 Y4.31 I5.747 J4.31 +N535 G01 X0.251 Y8.493 +N540 G02 X1.499 I0.624 J-0.468 +N545 G01 X6.026 Y2.457 +N550 G02 X6.395 Y1.35 I-1.477 J-1.108 +N555 G01 Y0.984 +N560 G02 X6.026 Y-0.124 I-1.846 J0. +N565 G01 X5.522 Y-0.795 +N570 G03 X5.492 Y-1.335 I0.39 J-0.293 +N575 G02 X5.462 Y-1.875 I-0.42 J-0.247 +N580 G01 X0.186 Y-8.91 +N585 G02 X-0.186 I-0.186 J0.14 +N590 G01 X-3.31 Y-4.67 +N595 G02 Y4.67 I6.227 J4.67 +N600 G03 X-1.688 Y6.87 I-132.859 J99.645 +N605 G02 X-0.066 Y9.07 I134.453 J-97.424 +N610 G02 X0.65 Y9.428 I0.716 J-0.537 +N615 G01 X1.1 +N620 G02 X1.816 Y9.07 I0. J-0.895 +N625 G01 X6.626 Y2.657 +N630 G02 X6.995 Y1.55 I-1.477 J-1.108 +N635 G01 Y0.784 +N640 G02 X6.626 Y-0.324 I-1.846 J0. +N645 G01 X5.462 Y-1.875 +N650 G03 X5.432 Y-2.415 I0.39 J-0.293 +N655 G02 X5.402 Y-2.955 I-0.42 J-0.247 +N660 G01 X0.252 Y-9.822 +N665 G02 X-0.252 I-0.252 J0.189 +N670 G02 X-2.021 Y-7.426 I157.679 J118.26 +N675 G03 X-3.79 Y-5.03 I-159.484 J-115.891 +N680 G02 Y5.03 I6.707 J5.03 +N685 G01 X-0.4 Y9.625 +N690 G02 X0.406 Y10.028 I0.806 J-0.605 +N695 G01 X1.4 +N700 G02 X2.116 Y9.67 I0. J-0.895 +N705 G01 X7.226 Y2.857 +N710 G02 X7.595 Y1.75 I-1.477 J-1.108 +N715 G01 Y0.587 +N720 G02 X7.224 Y-0.527 I-1.856 J0. +N725 G01 X5.402 Y-2.955 +N730 G03 X5.372 Y-3.5 I0.393 J-0.295 +N735 G02 X5.342 Y-4.044 I-0.424 J-0.25 +N740 G01 X0.64 Y-10.313 +N745 G02 X-0.64 I-0.64 J0.48 +N750 G01 X-4.31 Y-5.42 +N755 G02 Y5.42 I7.227 J5.42 +N760 G01 X-0.64 Y10.313 +N765 G02 X0. Y10.633 I0.64 J-0.48 +N770 G01 X2.15 +N775 G01 X8.2 Y2.567 +N780 G01 Y0. +N785 G02 X8.06 Y-0.42 I-0.7 J0. +N790 G01 X5.342 Y-4.044 +N795 G00 Z2. +(2D EBAUCHEPOCHE1) +N805 G00 X7.198 Y2.149 +N815 G00 Z0 +N820 G01 Z-0.3 F500. +N825 G01 X1.441 Y9.824 F5000. +N830 G02 X1.572 Y10.086 I0.131 J0.098 +N835 G01 X1.761 +N840 G02 X1.945 Y9.994 I0. J-0.231 +N845 G01 X7.606 Y2.446 +N850 G02 X7.652 Y2.307 I-0.184 J-0.138 +N855 G01 Y1.936 +N860 G02 X7.416 Y1.858 I-0.131 J0. +N865 G01 X7.198 Y2.149 +N870 G03 X6.733 Y2.313 I-0.356 J-0.267 +N875 G02 X6.267 Y2.477 I-0.11 J0.431 +N880 G01 X0.48 Y10.193 +N885 G03 X-0.48 I-0.48 J-0.36 +N890 G01 X-4.15 Y5.3 +N895 G03 Y-5.3 I7.067 J-5.3 +N900 G01 X-0.48 Y-10.193 +N905 G03 X0.48 I0.48 J0.36 +N910 G01 X7.9 Y-0.3 +N915 G03 Y0.3 I-0.4 J0.3 +N925 G01 X6.268 Y2.48 +N930 G01 X8.036 Y2.786 +N945 G01 X8.2 Y2.563 +N950 G01 Y0. +N955 G02 X8.06 Y-0.42 I-0.7 J0. +N960 G01 X0.64 Y-10.313 +N965 G02 X-0.64 I-0.64 J0.48 +N970 G01 X-4.31 Y-5.42 +N975 G02 Y5.42 I7.227 J5.42 +N980 G01 X-0.64 Y10.313 +N985 G02 X0. Y10.633 I0.64 J-0.48 +N995 G01 X2.153 Y10.629 +N1000 G01 X7.725 Y3.2 +N1005 G01 X8.036 Y2.786 +N1010 G02 X8.003 Y2.654 I-0.07 J-0.053 +N1015 G01 X7.633 Y2.477 +N1020 G03 X7.604 Y2.455 I0.038 J-0.079 +N1025 G01 X7.335 Y2.144 +N1030 G02 X7.198 Y2.149 I-0.066 J0.057 +N1035 G01 Z-0.5 F500. +N1040 G01 X1.441 Y9.824 F5000. +N1045 G02 X1.572 Y10.086 I0.131 J0.098 +N1050 G01 X1.761 +N1055 G02 X1.945 Y9.994 I0. J-0.231 +N1060 G01 X7.606 Y2.446 +N1065 G02 X7.652 Y2.307 I-0.184 J-0.138 +N1070 G01 Y1.936 +N1075 G02 X7.416 Y1.858 I-0.131 J0. +N1080 G01 X7.198 Y2.149 +N1085 G03 X6.733 Y2.313 I-0.356 J-0.267 +N1090 G02 X6.267 Y2.477 I-0.11 J0.431 +N1095 G01 X0.48 Y10.193 +N1100 G03 X-0.48 I-0.48 J-0.36 +N1105 G01 X-4.15 Y5.3 +N1110 G03 Y-5.3 I7.067 J-5.3 +N1115 G01 X-0.48 Y-10.193 +N1120 G03 X0.48 I0.48 J0.36 +N1125 G01 X7.9 Y-0.3 +N1130 G03 Y0.3 I-0.4 J0.3 +N1140 G01 X6.268 Y2.48 +N1145 G01 X8.036 Y2.786 +N1160 G01 X8.2 Y2.563 +N1165 G01 Y0. +N1170 G02 X8.06 Y-0.42 I-0.7 J0. +N1175 G01 X0.64 Y-10.313 +N1180 G02 X-0.64 I-0.64 J0.48 +N1185 G01 X-4.31 Y-5.42 +N1190 G02 Y5.42 I7.227 J5.42 +N1195 G01 X-0.64 Y10.313 +N1200 G02 X0. Y10.633 I0.64 J-0.48 +N1210 G01 X2.153 Y10.629 +N1215 G01 X7.725 Y3.2 +N1220 G01 X8.036 Y2.786 +N1225 G02 X8.003 Y2.654 I-0.07 J-0.053 +N1230 G01 X7.633 Y2.477 +N1235 G03 X7.604 Y2.455 I0.038 J-0.079 +N1240 G01 X7.335 Y2.144 +N1245 G02 X7.198 Y2.149 I-0.066 J0.057 +N1250 G01 Z-0.7 F500. +N1255 G01 X1.441 Y9.824 F5000. +N1260 G02 X1.572 Y10.086 I0.131 J0.098 +N1265 G01 X1.761 +N1270 G02 X1.945 Y9.994 I0. J-0.231 +N1275 G01 X7.606 Y2.446 +N1280 G02 X7.652 Y2.307 I-0.184 J-0.138 +N1285 G01 Y1.936 +N1290 G02 X7.416 Y1.858 I-0.131 J0. +N1295 G01 X7.198 Y2.149 +N1300 G03 X6.733 Y2.313 I-0.356 J-0.267 +N1305 G02 X6.267 Y2.477 I-0.11 J0.431 +N1310 G01 X0.48 Y10.193 +N1315 G03 X-0.48 I-0.48 J-0.36 +N1320 G01 X-4.15 Y5.3 +N1325 G03 Y-5.3 I7.067 J-5.3 +N1330 G01 X-0.48 Y-10.193 +N1335 G03 X0.48 I0.48 J0.36 +N1340 G01 X7.9 Y-0.3 +N1345 G03 Y0.3 I-0.4 J0.3 +N1355 G01 X6.268 Y2.48 +N1360 G01 X8.036 Y2.786 +N1375 G01 X8.2 Y2.563 +N1380 G01 Y0. +N1385 G02 X8.06 Y-0.42 I-0.7 J0. +N1390 G01 X0.64 Y-10.313 +N1395 G02 X-0.64 I-0.64 J0.48 +N1400 G01 X-4.31 Y-5.42 +N1405 G02 Y5.42 I7.227 J5.42 +N1410 G01 X-0.64 Y10.313 +N1415 G02 X0. Y10.633 I0.64 J-0.48 +N1425 G01 X2.153 Y10.629 +N1430 G01 X7.725 Y3.2 +N1435 G01 X8.036 Y2.786 +N1440 G02 X8.003 Y2.654 I-0.07 J-0.053 +N1445 G01 X7.633 Y2.477 +N1450 G03 X7.604 Y2.455 I0.038 J-0.079 +N1455 G01 X7.335 Y2.144 +N1460 G02 X7.198 Y2.149 I-0.066 J0.057 +N1465 G01 Z-0.9 F500. +N1470 G01 X1.441 Y9.824 F5000. +N1475 G02 X1.572 Y10.086 I0.131 J0.098 +N1480 G01 X1.761 +N1485 G02 X1.945 Y9.994 I0. J-0.231 +N1490 G01 X7.606 Y2.446 +N1495 G02 X7.652 Y2.307 I-0.184 J-0.138 +N1500 G01 Y1.936 +N1505 G02 X7.416 Y1.858 I-0.131 J0. +N1510 G01 X7.198 Y2.149 +N1515 G03 X6.733 Y2.313 I-0.356 J-0.267 +N1520 G02 X6.267 Y2.477 I-0.11 J0.431 +N1525 G01 X0.48 Y10.193 +N1530 G03 X-0.48 I-0.48 J-0.36 +N1535 G01 X-4.15 Y5.3 +N1540 G03 Y-5.3 I7.067 J-5.3 +N1545 G01 X-0.48 Y-10.193 +N1550 G03 X0.48 I0.48 J0.36 +N1555 G01 X7.9 Y-0.3 +N1560 G03 Y0.3 I-0.4 J0.3 +N1570 G01 X6.268 Y2.48 +N1575 G01 X8.036 Y2.786 +N1590 G01 X8.2 Y2.563 +N1595 G01 Y0. +N1600 G02 X8.06 Y-0.42 I-0.7 J0. +N1605 G01 X0.64 Y-10.313 +N1610 G02 X-0.64 I-0.64 J0.48 +N1615 G01 X-4.31 Y-5.42 +N1620 G02 Y5.42 I7.227 J5.42 +N1625 G01 X-0.64 Y10.313 +N1630 G02 X0. Y10.633 I0.64 J-0.48 +N1640 G01 X2.153 Y10.629 +N1645 G01 X7.725 Y3.2 +N1650 G01 X8.036 Y2.786 +N1655 G00 Z2. +(2D FINITIONPOCHE1) +N1665 G00 X7.198 Y2.149 +N1670 G00 Z0 +N1675 G01 Z-1. F500. +N1680 G01 X1.441 Y9.824 F272. +N1685 G02 X1.572 Y10.086 I0.131 J0.098 +N1690 G01 X1.761 +N1695 G02 X1.945 Y9.994 I0. J-0.231 +N1700 G01 X7.606 Y2.446 +N1705 G02 X7.652 Y2.307 I-0.184 J-0.138 +N1710 G01 Y1.936 +N1715 G02 X7.416 Y1.858 I-0.131 J0. +N1720 G01 X7.198 Y2.149 +N1725 G03 X6.733 Y2.313 I-0.356 J-0.267 +N1730 G02 X6.267 Y2.477 I-0.11 J0.431 +N1735 G01 X0.48 Y10.193 +N1740 G03 X-0.48 I-0.48 J-0.36 +N1745 G01 X-4.15 Y5.3 +N1750 G03 Y-5.3 I7.067 J-5.3 +N1755 G01 X-0.48 Y-10.193 +N1760 G03 X0.48 I0.48 J0.36 +N1765 G01 X7.9 Y-0.3 +N1770 G03 Y0.3 I-0.4 J0.3 +N1775 G01 X6.267 Y2.477 +N1785 G01 X6.946 Y2.986 +N1795 G01 X7.547 Y3.437 +N1800 G01 X8.2 Y2.567 +N1805 G01 Y0. +N1810 G02 X8.06 Y-0.42 I-0.7 J0. +N1815 G01 X0.64 Y-10.313 +N1820 G02 X-0.64 I-0.64 J0.48 +N1825 G01 X-4.31 Y-5.42 +N1830 G02 Y5.42 I7.227 J5.42 +N1835 G01 X-0.64 Y10.313 +N1840 G02 X0. Y10.633 I0.64 J-0.48 +N1845 G01 X2.15 +N1850 G01 X7.547 Y3.437 +N1855 G00 Z2. +(2D POCHES23) +N1865 G00 X0.295 Y-3. +N1870 G00 Z0 +N1875 G01 Z-0.3 F500. +N1880 G01 Y-3.06 F272. +N1885 G02 X0.06 Y-3.295 I-0.235 J0. +N1890 G01 X-0.06 +N1895 G02 X-0.295 Y-3.06 I0. J0.235 +N1900 G01 Y-2.94 +N1905 G02 X-0.06 Y-2.705 I0.235 J0. +N1910 G01 X0.06 +N1915 G02 X0.295 Y-2.94 I0. J-0.235 +N1920 G01 Y-3. +N1925 G03 X0.629 Y-3.365 I0.367 J0. +N1930 G02 X0.744 Y-3.847 I-0.023 J-0.26 +N1935 G02 X0.576 Y-3.895 I-0.168 J0.271 +N1940 G01 X-0.58 +N1945 G02 X-0.895 Y-3.58 I0. J0.315 +N1950 G01 Y-2.424 +N1955 G02 X-0.576 Y-2.105 I0.319 J0. +N1960 G01 X0.576 +N1965 G02 X0.895 Y-2.424 I0. J-0.319 +N1970 G01 Y-3.576 +N1975 G02 X0.744 Y-3.847 I-0.319 J0. +N1980 G03 X0.418 Y-4.223 I0.441 J-0.711 +N1985 G02 X0.002 Y-4.495 I-0.416 J0.182 +N1990 G01 X-1.18 +N1995 G02 X-1.495 Y-4.18 I0. J0.315 +N2000 G01 Y-1.824 +N2005 G02 X-1.176 Y-1.505 I0.319 J0. +N2010 G01 X1.176 +N2015 G02 X1.495 Y-1.824 I0. J-0.319 +N2020 G01 Y-4.176 +N2025 G02 X1.176 Y-4.495 I-0.319 J0. +N2030 G01 X0.002 +N2035 G03 X-0.452 Y-4.798 I0. J-0.492 +N2040 G02 X-0.905 Y-5.1 I-0.454 J0.189 +N2045 G01 X-2.1 +N2050 G01 Y-0.9 +N2055 G01 X2.1 +N2060 G01 Y-5.1 +N2065 G01 X-0.905 +N2070 G00 Z2. +N2075 G00 X0. Y2.705 +N2076 G00 Z0 +N2080 G01 Z-0.3 F500. +N2085 G01 X-0.06 F272. +N2090 G02 X-0.295 Y2.94 I0. J0.235 +N2095 G01 Y3.06 +N2100 G02 X-0.06 Y3.295 I0.235 J0. +N2105 G01 X0.06 +N2110 G02 X0.295 Y3.06 I0. J-0.235 +N2115 G01 Y2.94 +N2120 G02 X0.06 Y2.705 I-0.235 J0. +N2125 G01 X0. +N2130 G03 X-0.365 Y2.37 I0. J-0.367 +N2135 G02 X-0.848 Y2.254 I-0.26 J0.022 +N2140 G02 X-0.895 Y2.42 I0.268 J0.166 +N2145 G01 Y3.576 +N2150 G02 X-0.576 Y3.895 I0.319 J0. +N2155 G01 X0.576 +N2160 G02 X0.895 Y3.576 I0. J-0.319 +N2165 G01 Y2.424 +N2170 G02 X0.576 Y2.105 I-0.319 J0. +N2175 G01 X-0.58 +N2180 G02 X-0.848 Y2.254 I0. J0.315 +N2185 G03 X-1.223 Y2.58 I-0.71 J-0.44 +N2190 G02 X-1.495 Y2.995 I0.182 J0.416 +N2195 G01 Y4.176 +N2200 G02 X-1.176 Y4.495 I0.319 J0. +N2205 G01 X1.176 +N2210 G02 X1.495 Y4.176 I0. J-0.319 +N2215 G01 Y1.824 +N2220 G02 X1.176 Y1.505 I-0.319 J0. +N2225 G01 X-1.18 +N2230 G02 X-1.495 Y1.82 I0. J0.315 +N2235 G01 Y2.995 +N2240 G03 X-1.798 Y3.449 I-0.492 J0. +N2245 G02 X-2.1 Y3.903 I0.189 J0.454 +N2250 G01 Y5.1 +N2255 G01 X2.1 +N2260 G01 Y0.9 +N2265 G01 X-2.1 +N2270 G01 Y3.903 +N2275 G00 Z2. +N2285 M9 +N2300 M30 +% diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/PieceDemoLinuxCNC_HV_V05.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/PieceDemoLinuxCNC_HV_V05.ngc new file mode 100644 index 0000000..94af61c --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/PieceDemoLinuxCNC_HV_V05.ngc @@ -0,0 +1,592 @@ +% +(PIECEDEMOLINUXCNC_HV_V03) +(MACHINE) +( MODEL M3) +( DESCRIPTION M3) +(T1 D=1. CR=0. - ZMIN=-1. - FLAT END MILL) +N10 G90 G94 G017 G91.1 +N15 G021 +(2D EBAUCHEPOCHE1) +N25 S45000 M3 +N30 G54 +G00 X6.8 Y1.85 Z2 +N45 G00 Z0.1 +N50 G01 Z-0.1 F500 +N55 G01 X7.94 Y0.33 F5000. +N60 G02 Y-0.33 I-0.44 J-0.33 +N65 G01 X0.52 Y-10.223 +N70 G02 X-0.52 I-0.52 J0.39 +N75 G01 X-4.19 Y-5.33 +N80 G02 Y5.33 I7.107 J5.33 +N85 G01 X-0.52 Y10.223 +N90 G02 X0.52 I0.52 J-0.39 +N95 G01 X6.8 Y1.85 +N100 G03 X6.924 Y1.846 I0.064 J0.048 +N105 G01 X7.167 Y2.132 +N110 G02 X7.214 Y2.159 I0.061 J-0.052 +N115 G01 X7.537 Y2.213 +N120 G03 X7.603 Y2.292 I-0.013 J0.079 +N125 G01 Y2.309 +N130 G03 X7.568 Y2.415 I-0.175 J0. +N135 G01 X1.904 Y9.967 +N140 G03 X1.764 Y10.037 I-0.14 J-0.105 +N145 G01 X1.694 +N150 G03 X1.554 Y9.756 I0. J-0.175 +N155 G01 X7.362 Y2.011 +N160 G03 X7.603 Y2.092 I0.107 J0.08 +N165 G01 Y2.292 +N170 G02 X7.765 Y2.629 I0.431 J0. +N175 G03 X7.813 Y3. I-0.168 J0.21 +N180 G01 X2.128 Y10.579 +N195 G01 X0. +N200 G03 X-0.6 Y10.283 I0. J-0.75 +N205 G01 X-4.27 Y5.39 +N210 G03 Y-5.39 I7.187 J-5.39 +N215 G01 X-0.6 Y-10.283 +N220 G03 X0.6 I0.6 J0.45 +N225 G01 X8.02 Y-0.39 +N230 G03 X8.15 Y0. I-0.52 J0.39 +N235 G01 Y2.547 +N245 G01 X7.813 Y3. +N250 G03 X7.659 Y2.976 I-0.07 J-0.053 +N255 G01 X7.526 Y2.592 +N265 G02 X7.503 Y2.552 I-0.084 J0.026 +N270 G01 X7.245 Y2.293 +N275 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.2 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N485 G01 Z-0.3 F500. +N490 G01 X7.94 Y0.33 F5000. +N495 G02 Y-0.33 I-0.44 J-0.33 +N500 G01 X0.52 Y-10.223 +N505 G02 X-0.52 I-0.52 J0.39 +N510 G01 X-4.19 Y-5.33 +N515 G02 Y5.33 I7.107 J5.33 +N520 G01 X-0.52 Y10.223 +N525 G02 X0.52 I0.52 J-0.39 +N530 G01 X6.8 Y1.85 +N535 G03 X6.924 Y1.846 I0.064 J0.048 +N540 G01 X7.167 Y2.132 +N545 G02 X7.214 Y2.159 I0.061 J-0.052 +N550 G01 X7.537 Y2.213 +N555 G03 X7.603 Y2.292 I-0.013 J0.079 +N560 G01 Y2.309 +N565 G03 X7.568 Y2.415 I-0.175 J0. +N570 G01 X1.904 Y9.967 +N575 G03 X1.764 Y10.037 I-0.14 J-0.105 +N580 G01 X1.694 +N585 G03 X1.554 Y9.756 I0. J-0.175 +N590 G01 X7.362 Y2.011 +N595 G03 X7.603 Y2.092 I0.107 J0.08 +N600 G01 Y2.292 +N605 G02 X7.765 Y2.629 I0.431 J0. +N610 G03 X7.813 Y3. I-0.168 J0.21 +N615 G01 X2.128 Y10.579 +N630 G01 X0. +N635 G03 X-0.6 Y10.283 I0. J-0.75 +N640 G01 X-4.27 Y5.39 +N645 G03 Y-5.39 I7.187 J-5.39 +N650 G01 X-0.6 Y-10.283 +N655 G03 X0.6 I0.6 J0.45 +N660 G01 X8.02 Y-0.39 +N665 G03 X8.15 Y0. I-0.52 J0.39 +N670 G01 Y2.547 +N680 G01 X7.813 Y3. +N685 G03 X7.659 Y2.976 I-0.07 J-0.053 +N690 G01 X7.526 Y2.592 +N700 G02 X7.503 Y2.552 I-0.084 J0.026 +N705 G01 X7.245 Y2.293 +N710 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.4 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N485 G01 Z-0.5 F500. +N490 G01 X7.94 Y0.33 F5000. +N495 G02 Y-0.33 I-0.44 J-0.33 +N500 G01 X0.52 Y-10.223 +N505 G02 X-0.52 I-0.52 J0.39 +N510 G01 X-4.19 Y-5.33 +N515 G02 Y5.33 I7.107 J5.33 +N520 G01 X-0.52 Y10.223 +N525 G02 X0.52 I0.52 J-0.39 +N530 G01 X6.8 Y1.85 +N535 G03 X6.924 Y1.846 I0.064 J0.048 +N540 G01 X7.167 Y2.132 +N545 G02 X7.214 Y2.159 I0.061 J-0.052 +N550 G01 X7.537 Y2.213 +N555 G03 X7.603 Y2.292 I-0.013 J0.079 +N560 G01 Y2.309 +N565 G03 X7.568 Y2.415 I-0.175 J0. +N570 G01 X1.904 Y9.967 +N575 G03 X1.764 Y10.037 I-0.14 J-0.105 +N580 G01 X1.694 +N585 G03 X1.554 Y9.756 I0. J-0.175 +N590 G01 X7.362 Y2.011 +N595 G03 X7.603 Y2.092 I0.107 J0.08 +N600 G01 Y2.292 +N605 G02 X7.765 Y2.629 I0.431 J0. +N610 G03 X7.813 Y3. I-0.168 J0.21 +N615 G01 X2.128 Y10.579 +N630 G01 X0. +N635 G03 X-0.6 Y10.283 I0. J-0.75 +N640 G01 X-4.27 Y5.39 +N645 G03 Y-5.39 I7.187 J-5.39 +N650 G01 X-0.6 Y-10.283 +N655 G03 X0.6 I0.6 J0.45 +N660 G01 X8.02 Y-0.39 +N665 G03 X8.15 Y0. I-0.52 J0.39 +N670 G01 Y2.547 +N680 G01 X7.813 Y3. +N685 G03 X7.659 Y2.976 I-0.07 J-0.053 +N690 G01 X7.526 Y2.592 +N700 G02 X7.503 Y2.552 I-0.084 J0.026 +N705 G01 X7.245 Y2.293 +N710 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.6 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N485 G01 Z-0.7 F500. +N490 G01 X7.94 Y0.33 F5000. +N495 G02 Y-0.33 I-0.44 J-0.33 +N500 G01 X0.52 Y-10.223 +N505 G02 X-0.52 I-0.52 J0.39 +N510 G01 X-4.19 Y-5.33 +N515 G02 Y5.33 I7.107 J5.33 +N520 G01 X-0.52 Y10.223 +N525 G02 X0.52 I0.52 J-0.39 +N530 G01 X6.8 Y1.85 +N535 G03 X6.924 Y1.846 I0.064 J0.048 +N540 G01 X7.167 Y2.132 +N545 G02 X7.214 Y2.159 I0.061 J-0.052 +N550 G01 X7.537 Y2.213 +N555 G03 X7.603 Y2.292 I-0.013 J0.079 +N560 G01 Y2.309 +N565 G03 X7.568 Y2.415 I-0.175 J0. +N570 G01 X1.904 Y9.967 +N575 G03 X1.764 Y10.037 I-0.14 J-0.105 +N580 G01 X1.694 +N585 G03 X1.554 Y9.756 I0. J-0.175 +N590 G01 X7.362 Y2.011 +N595 G03 X7.603 Y2.092 I0.107 J0.08 +N600 G01 Y2.292 +N605 G02 X7.765 Y2.629 I0.431 J0. +N610 G03 X7.813 Y3. I-0.168 J0.21 +N615 G01 X2.128 Y10.579 +N630 G01 X0. +N635 G03 X-0.6 Y10.283 I0. J-0.75 +N640 G01 X-4.27 Y5.39 +N645 G03 Y-5.39 I7.187 J-5.39 +N650 G01 X-0.6 Y-10.283 +N655 G03 X0.6 I0.6 J0.45 +N660 G01 X8.02 Y-0.39 +N665 G03 X8.15 Y0. I-0.52 J0.39 +N670 G01 Y2.547 +N680 G01 X7.813 Y3. +N685 G03 X7.659 Y2.976 I-0.07 J-0.053 +N690 G01 X7.526 Y2.592 +N700 G02 X7.503 Y2.552 I-0.084 J0.026 +N705 G01 X7.245 Y2.293 +N710 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.8 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N920 G01 Z-0.9 F500. +N925 G01 X7.94 Y0.33 F5000. +N930 G02 Y-0.33 I-0.44 J-0.33 +N935 G01 X0.52 Y-10.223 +N940 G02 X-0.52 I-0.52 J0.39 +N945 G01 X-4.19 Y-5.33 +N950 G02 Y5.33 I7.107 J5.33 +N955 G01 X-0.52 Y10.223 +N960 G02 X0.52 I0.52 J-0.39 +N965 G01 X6.8 Y1.85 +N970 G03 X6.924 Y1.846 I0.064 J0.048 +N975 G01 X7.167 Y2.132 +N980 G02 X7.214 Y2.159 I0.061 J-0.052 +N985 G01 X7.537 Y2.213 +N990 G03 X7.603 Y2.292 I-0.013 J0.079 +N995 G01 Y2.309 +N1000 G03 X7.568 Y2.415 I-0.175 J0. +N1005 G01 X1.904 Y9.967 +N1010 G03 X1.764 Y10.037 I-0.14 J-0.105 +N1015 G01 X1.694 +N1020 G03 X1.554 Y9.756 I0. J-0.175 +N1025 G01 X7.362 Y2.011 +N1030 G03 X7.603 Y2.092 I0.107 J0.08 +N1035 G01 Y2.292 +N1040 G02 X7.765 Y2.629 I0.431 J0. +N1045 G03 X7.813 Y3. I-0.168 J0.21 +N1050 G01 X2.128 Y10.579 +N1065 G01 X0. +N1070 G03 X-0.6 Y10.283 I0. J-0.75 +N1075 G01 X-4.27 Y5.39 +N1080 G03 Y-5.39 I7.187 J-5.39 +N1085 G01 X-0.6 Y-10.283 +N1090 G03 X0.6 I0.6 J0.45 +N1095 G01 X8.02 Y-0.39 +N1100 G03 X8.15 Y0. I-0.52 J0.39 +N1105 G01 Y2.547 +N1115 G01 X7.813 Y3. +N1120 G00 Z2 +(2D SURFACAGE) +N1130 G00 X-0.012 Y0. +N1135 G00 Z0.1 +N1140 G01 Z-0.1 F500 +N1145 G03 X0.033 Y-0.51 I2.932 J0. F444. +N1150 G03 X0.311 Y-0.576 I0.154 J0.027 +N1155 G01 X0.602 Y-0.189 +N1160 G03 Y0.189 I-0.252 J0.189 +N1165 G01 X0.199 Y0.726 +N1170 G03 X0.073 Y0.7 I-0.057 J-0.043 +N1175 G03 X-0.012 Y0. I2.847 J-0.701 +N1180 G02 X-0.283 Y-0.43 I-0.476 J0. +N1185 G03 X-0.498 Y-0.891 I0.172 J-0.36 +N1190 G03 X-0.164 Y-1.72 I3.409 J0.891 +N1195 G03 X0.186 Y-1.744 I0.182 J0.102 +N1200 G01 X1.282 Y-0.282 +N1205 G03 Y0.282 I-0.376 J0.282 +N1210 G01 X0.155 Y1.785 +N1215 G03 X-0.137 Y1.768 I-0.14 J-0.105 +N1220 G03 X-0.498 Y-0.891 I3.048 J-1.768 +N1225 G02 X-0.653 Y-1.361 I-0.44 J-0.115 +N1230 G03 X-0.762 Y-1.844 I0.247 J-0.309 +N1235 G03 X-0.378 Y-2.471 I3.519 J1.725 +N1240 G02 X-0.282 Y-2.607 I-2.135 J-1.601 +N1245 G03 X-0.186 Y-2.744 I2.231 J1.465 +N1250 G03 X0.186 I0.186 J0.14 +N1255 G01 X2.032 Y-0.282 +N1260 G03 Y0.282 I-0.376 J0.282 +N1265 G01 X0.186 Y2.744 +N1270 G03 X-0.186 I-0.186 J-0.14 +N1275 G03 X-1.151 Y0.168 I3.912 J-2.934 +N1280 G03 X-0.762 Y-1.844 I3.908 J-0.288 +N1285 G02 X-0.816 Y-2.338 I-0.417 J-0.204 +N1290 G03 X-0.824 Y-2.834 I0.318 J-0.254 +N1295 G02 X-0.512 Y-3.28 I-7.275 J-5.427 +N1300 G03 X-0.186 Y-3.744 I7.586 J4.981 +N1305 G03 X0.186 I0.186 J0.14 +N1310 G01 X2.782 Y-0.282 +N1315 G03 Y0.282 I-0.376 J0.282 +N1320 G01 X0.186 Y3.744 +N1325 G03 X-0.186 I-0.186 J-0.14 +N1330 G03 X-0.512 Y3.28 I7.26 J-5.445 +N1335 G02 X-0.838 Y2.816 I-7.587 J4.982 +N1340 G03 Y-2.816 I3.754 J-2.816 +N1345 G02 X-0.824 Y-2.834 I-7.261 J-5.446 +N1350 G02 X-0.797 Y-3.371 I-0.386 J-0.288 +N1355 G03 X-0.782 Y-3.908 I0.426 J-0.256 +N1360 G02 X-0.748 Y-3.957 I-17.151 J-11.729 +N1365 G03 X-0.186 Y-4.744 I17.183 J11.679 +N1370 G03 X0.186 I0.186 J0.14 +N1375 G01 X3.532 Y-0.282 +N1380 G03 Y0.282 I-0.376 J0.282 +N1385 G01 X0.186 Y4.744 +N1390 G03 X-0.186 I-0.186 J-0.14 +N1395 G03 X-0.748 Y3.957 I16.621 J-12.466 +N1400 G02 X-1.31 Y3.17 I-17.184 J11.68 +N1405 G03 Y-3.17 I4.227 J-3.17 +N1410 G02 X-0.782 Y-3.908 I-16.622 J-12.467 +N1415 G02 X-0.769 Y-4.437 I-0.402 J-0.275 +N1420 G03 X-0.749 Y-4.967 I0.406 J-0.25 +N1425 G01 X-0.186 Y-5.744 +N1430 G03 X0.186 I0.186 J0.14 +N1435 G01 X4.282 Y-0.282 +N1440 G03 Y0.282 I-0.376 J0.282 +N1445 G01 X0.186 Y5.744 +N1450 G03 X-0.186 I-0.186 J-0.14 +N1455 G03 X-0.988 Y4.637 I33.214 J-24.91 +N1460 G02 X-1.79 Y3.53 I-34.019 J23.806 +N1465 G03 Y-3.53 I4.707 J-3.53 +N1470 G01 X-0.749 Y-4.967 +N1475 G02 X-0.727 Y-5.5 I-0.391 J-0.283 +N1480 G03 X-0.705 Y-6.034 I0.41 J-0.25 +N1485 G01 X-0.186 Y-6.744 +N1490 G03 X0.186 I0.186 J0.14 +N1495 G01 X5.032 Y-0.282 +N1500 G03 Y0.282 I-0.376 J0.282 +N1505 G01 X0.186 Y6.744 +N1510 G03 X-0.186 I-0.186 J-0.14 +N1515 G01 X-2.27 Y3.89 +N1520 G03 Y-3.89 I5.187 J-3.89 +N1525 G01 X-0.705 Y-6.034 +N1530 G02 X-0.681 Y-6.572 I-0.392 J-0.287 +N1535 G03 X-0.658 Y-7.11 I0.411 J-0.252 +N1540 G03 X-0.186 Y-7.744 I83.937 J61.965 +N1545 G03 X0.186 I0.186 J0.14 +N1550 G01 X5.782 Y-0.282 +N1555 G03 Y0.282 I-0.376 J0.282 +N1560 G01 X0.186 Y7.744 +N1565 G03 X-0.186 I-0.186 J-0.14 +N1570 G01 X-2.75 Y4.25 +N1575 G03 Y-4.25 I5.667 J-4.25 +N1580 G02 X-1.468 Y-5.997 I-83.479 J-62.609 +N1585 G03 X-0.658 Y-7.11 I84.747 J60.852 +N1590 G02 X-0.632 Y-7.645 I-0.388 J-0.287 +N1595 G03 X-0.607 Y-8.18 I0.412 J-0.249 +N1600 G03 X-0.186 Y-8.744 I117.544 J87.28 +N1605 G03 X0.186 I0.186 J0.14 +N1610 G01 X6.532 Y-0.282 +N1615 G03 Y0.282 I-0.376 J0.282 +N1620 G01 X0.186 Y8.744 +N1625 G03 X-0.186 I-0.186 J-0.14 +N1630 G01 X-3.23 Y4.61 +N1635 G03 Y-4.61 I6.147 J-4.61 +N1640 G02 X-1.708 Y-6.677 I-117.147 J-87.861 +N1645 G03 X-0.607 Y-8.18 I118.646 J85.777 +N1650 G02 X-0.577 Y-8.725 I-0.397 J-0.295 +N1655 G03 X-0.548 Y-9.27 I0.422 J-0.25 +N1660 G01 X-0.08 Y-9.893 +N1665 G03 X0.08 I0.08 J0.06 +N1670 G01 X7.5 Y0. +N1675 G01 X0.08 Y9.893 +N1680 G03 X-0.08 I-0.08 J-0.06 +N1685 G01 X-3.75 Y5. +N1690 G03 Y-5. I6.667 J-5. +N1695 G01 X-0.548 Y-9.27 +N1700 G00 Z2. +(2D FINITIONPOCHE1) +N1710 G00 X6.76 Y1.82 +N1715 G00 Z0.1 +N1720 G01 Z-1 F500 +N1725 G01 X7.9 Y0.3 F444. +N1730 G02 Y-0.3 I-0.4 J-0.3 +N1735 G01 X0.48 Y-10.193 +N1740 G02 X-0.48 I-0.48 J0.36 +N1745 G01 X-4.15 Y-5.3 +N1750 G02 Y5.3 I7.067 J5.3 +N1755 G01 X-0.48 Y10.193 +N1760 G02 X0.48 I0.48 J-0.36 +N1765 G01 X6.76 Y1.82 +N1775 G01 X7.198 Y2.149 +N1785 G01 X7.416 Y1.858 +N1790 G03 X7.652 Y1.936 I0.105 J0.079 +N1795 G01 Y2.307 +N1800 G03 X7.606 Y2.446 I-0.231 J0. +N1805 G01 X1.945 Y9.994 +N1810 G03 X1.761 Y10.086 I-0.184 J-0.138 +N1815 G01 X1.589 +N1820 G03 X1.451 Y9.811 I0. J-0.172 +N1825 G01 X7.198 Y2.149 +N1830 G02 X7.518 Y1.537 I-1.724 J-1.293 +N1835 G03 X8.2 Y1.648 I0.332 J0.111 +N1840 G01 Y2.567 +N1845 G01 X2.15 Y10.633 +N1850 G01 X0. +N1855 G03 X-0.64 Y10.313 I0. J-0.8 +N1860 G01 X-4.31 Y5.42 +N1865 G03 Y-5.42 I7.227 J-5.42 +N1870 G01 X-0.64 Y-10.313 +N1875 G03 X0.64 I0.64 J0.48 +N1880 G01 X8.06 Y-0.42 +N1885 G03 X8.2 Y0. I-0.56 J0.42 +N1890 G01 Y1.648 +N1895 G00 Z2. +(2D POCHES23) +N1905 G00 X0.295 Y-3. +N1910 G00 Z0.1 +N1915 G01 Z-0.2 F500 +N1920 G01 Y-2.94 F272. +N1925 G03 X0.06 Y-2.705 I-0.235 J0. +N1930 G01 X-0.06 +N1935 G03 X-0.295 Y-2.94 I0. J-0.235 +N1940 G01 Y-3.06 +N1945 G03 X-0.06 Y-3.295 I0.235 J0. +N1950 G01 X0.06 +N1955 G03 X0.295 Y-3.06 I0. J0.235 +N1960 G01 Y-3. +N1965 G02 X0.629 Y-2.635 I0.367 J0. +N1970 G03 X0.744 Y-2.153 I-0.023 J0.26 +N1975 G03 X0.576 Y-2.105 I-0.168 J-0.271 +N1980 G01 X-0.58 +N1985 G03 X-0.895 Y-2.42 I0. J-0.315 +N1990 G01 Y-3.576 +N1995 G03 X-0.576 Y-3.895 I0.319 J0. +N2000 G01 X0.576 +N2005 G03 X0.895 Y-3.576 I0. J0.319 +N2010 G01 Y-2.424 +N2015 G03 X0.744 Y-2.153 I-0.319 J0. +N2020 G02 X0.418 Y-1.777 I0.441 J0.711 +N2025 G03 X0.002 Y-1.505 I-0.416 J-0.182 +N2030 G01 X-1.18 +N2035 G03 X-1.495 Y-1.82 I0. J-0.315 +N2040 G01 Y-4.176 +N2045 G03 X-1.176 Y-4.495 I0.319 J0. +N2050 G01 X1.176 +N2055 G03 X1.495 Y-4.176 I0. J0.319 +N2060 G01 Y-1.824 +N2065 G03 X1.176 Y-1.505 I-0.319 J0. +N2070 G01 X0.002 +N2075 G02 X-0.452 Y-1.202 I0. J0.492 +N2080 G03 X-0.905 Y-0.9 I-0.454 J-0.189 +N2085 G01 X-2.1 +N2090 G01 Y-5.1 +N2095 G01 X2.1 +N2100 G01 Y-0.9 +N2105 G01 X-0.905 +N2110 G00 Z2. +N2115 G00 X0. Y3.295 +N2116 G00 Z0.1 +N2120 G01 Z-0.2 F500. +N2125 G01 X-0.06 F1000 +N2130 G03 X-0.295 Y3.06 I0. J-0.235 +N2135 G01 Y2.94 +N2140 G03 X-0.06 Y2.705 I0.235 J0. +N2145 G01 X0.06 +N2150 G03 X0.295 Y2.94 I0. J0.235 +N2155 G01 Y3.06 +N2160 G03 X0.06 Y3.295 I-0.235 J0. +N2165 G01 X0. +N2170 G02 X-0.365 Y3.629 I0. J0.367 +N2175 G03 X-0.847 Y3.744 I-0.26 J-0.023 +N2180 G03 X-0.895 Y3.576 I0.271 J-0.168 +N2185 G01 Y2.424 +N2190 G03 X-0.576 Y2.105 I0.319 J0. +N2195 G01 X0.576 +N2200 G03 X0.895 Y2.424 I0. J0.319 +N2205 G01 Y3.576 +N2210 G03 X0.576 Y3.895 I-0.319 J0. +N2215 G01 X-0.576 +N2220 G03 X-0.847 Y3.744 I0. J-0.319 +N2225 G02 X-1.223 Y3.418 I-0.711 J0.441 +N2230 G03 X-1.495 Y3.002 I0.182 J-0.416 +N2235 G01 Y1.824 +N2240 G03 X-1.176 Y1.505 I0.319 J0. +N2245 G01 X1.176 +N2250 G03 X1.495 Y1.824 I0. J0.319 +N2255 G01 Y4.176 +N2260 G03 X1.176 Y4.495 I-0.319 J0. +N2265 G01 X-1.176 +N2270 G03 X-1.495 Y4.176 I0. J-0.319 +N2275 G01 Y3.002 +N2280 G02 X-1.798 Y2.548 I-0.492 J0. +N2285 G03 X-2.1 Y2.095 I0.189 J-0.454 +N2290 G01 Y0.9 +N2295 G01 X2.1 +N2300 G01 Y5.1 +N2305 G01 X-2.1 +N2310 G01 Y2.095 +N2315 G00 Z2. +N2325 M9 +N2340 M30 +% diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/anchor.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/anchor.ngc new file mode 100644 index 0000000..e43d58f --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/anchor.ngc @@ -0,0 +1,44 @@ +(ISO 6983 code of anchor) +G10 L2 P1 X0 Y-18 +G17 G21 G40 G49 (Plan XY, mode mm, annulation de la compensation de rayon, et de longueur) +G64 P2.0 (Mode tajectoire continue avec tolérance 0.5 [mm]) +(G61.1) + +(M61 Q1) +F9000 +S75000 + +G00 X0 Y0 Z0 +M3 + +o103 repeat [1] + G02 X-13 Y13 I3.25 J16.25 + G01 X-14.95 Y11.05 + G01 Y18.2 + G01 X-9.1 Y16.9 + G01 X-11.05 Y15.61 + G03 X-1.95 Y5.85 I11.702 J1.788 + G01 Y22.75 + G01 X-8.45 + G01 Y26 + G01 X-1.95 + G01 Y29.25 + G02 X1.95 Y29.25 I1.95 J3.25 + G01 Y26 + G01 X8.45 + G01 Y22.75 + G01 X1.95 + G01 Y5.85 + G03 X11.05 Y15.61 I-2.602 J11.548 + G01 X9.1 Y16.9 + G01 X14.95 Y18.2 + G01 Y11.05 + G01 X13 Y13 + G02 X0 Y0 I-16.25 J3.25 +o103 endrepeat + +G10 L2 P0 X0 Y0 +G17 G21 G40 G49 +G00 X0 Y0 Z0 + +M2 diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/full/001_anchor.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/001_anchor.ngc new file mode 100644 index 0000000..e43d58f --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/001_anchor.ngc @@ -0,0 +1,44 @@ +(ISO 6983 code of anchor) +G10 L2 P1 X0 Y-18 +G17 G21 G40 G49 (Plan XY, mode mm, annulation de la compensation de rayon, et de longueur) +G64 P2.0 (Mode tajectoire continue avec tolérance 0.5 [mm]) +(G61.1) + +(M61 Q1) +F9000 +S75000 + +G00 X0 Y0 Z0 +M3 + +o103 repeat [1] + G02 X-13 Y13 I3.25 J16.25 + G01 X-14.95 Y11.05 + G01 Y18.2 + G01 X-9.1 Y16.9 + G01 X-11.05 Y15.61 + G03 X-1.95 Y5.85 I11.702 J1.788 + G01 Y22.75 + G01 X-8.45 + G01 Y26 + G01 X-1.95 + G01 Y29.25 + G02 X1.95 Y29.25 I1.95 J3.25 + G01 Y26 + G01 X8.45 + G01 Y22.75 + G01 X1.95 + G01 Y5.85 + G03 X11.05 Y15.61 I-2.602 J11.548 + G01 X9.1 Y16.9 + G01 X14.95 Y18.2 + G01 Y11.05 + G01 X13 Y13 + G02 X0 Y0 I-16.25 J3.25 +o103 endrepeat + +G10 L2 P0 X0 Y0 +G17 G21 G40 G49 +G00 X0 Y0 Z0 + +M2 diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/full/002_PieceDemoLinuxCNC_HV_V05.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/002_PieceDemoLinuxCNC_HV_V05.ngc new file mode 100644 index 0000000..94af61c --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/002_PieceDemoLinuxCNC_HV_V05.ngc @@ -0,0 +1,592 @@ +% +(PIECEDEMOLINUXCNC_HV_V03) +(MACHINE) +( MODEL M3) +( DESCRIPTION M3) +(T1 D=1. CR=0. - ZMIN=-1. - FLAT END MILL) +N10 G90 G94 G017 G91.1 +N15 G021 +(2D EBAUCHEPOCHE1) +N25 S45000 M3 +N30 G54 +G00 X6.8 Y1.85 Z2 +N45 G00 Z0.1 +N50 G01 Z-0.1 F500 +N55 G01 X7.94 Y0.33 F5000. +N60 G02 Y-0.33 I-0.44 J-0.33 +N65 G01 X0.52 Y-10.223 +N70 G02 X-0.52 I-0.52 J0.39 +N75 G01 X-4.19 Y-5.33 +N80 G02 Y5.33 I7.107 J5.33 +N85 G01 X-0.52 Y10.223 +N90 G02 X0.52 I0.52 J-0.39 +N95 G01 X6.8 Y1.85 +N100 G03 X6.924 Y1.846 I0.064 J0.048 +N105 G01 X7.167 Y2.132 +N110 G02 X7.214 Y2.159 I0.061 J-0.052 +N115 G01 X7.537 Y2.213 +N120 G03 X7.603 Y2.292 I-0.013 J0.079 +N125 G01 Y2.309 +N130 G03 X7.568 Y2.415 I-0.175 J0. +N135 G01 X1.904 Y9.967 +N140 G03 X1.764 Y10.037 I-0.14 J-0.105 +N145 G01 X1.694 +N150 G03 X1.554 Y9.756 I0. J-0.175 +N155 G01 X7.362 Y2.011 +N160 G03 X7.603 Y2.092 I0.107 J0.08 +N165 G01 Y2.292 +N170 G02 X7.765 Y2.629 I0.431 J0. +N175 G03 X7.813 Y3. I-0.168 J0.21 +N180 G01 X2.128 Y10.579 +N195 G01 X0. +N200 G03 X-0.6 Y10.283 I0. J-0.75 +N205 G01 X-4.27 Y5.39 +N210 G03 Y-5.39 I7.187 J-5.39 +N215 G01 X-0.6 Y-10.283 +N220 G03 X0.6 I0.6 J0.45 +N225 G01 X8.02 Y-0.39 +N230 G03 X8.15 Y0. I-0.52 J0.39 +N235 G01 Y2.547 +N245 G01 X7.813 Y3. +N250 G03 X7.659 Y2.976 I-0.07 J-0.053 +N255 G01 X7.526 Y2.592 +N265 G02 X7.503 Y2.552 I-0.084 J0.026 +N270 G01 X7.245 Y2.293 +N275 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.2 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N485 G01 Z-0.3 F500. +N490 G01 X7.94 Y0.33 F5000. +N495 G02 Y-0.33 I-0.44 J-0.33 +N500 G01 X0.52 Y-10.223 +N505 G02 X-0.52 I-0.52 J0.39 +N510 G01 X-4.19 Y-5.33 +N515 G02 Y5.33 I7.107 J5.33 +N520 G01 X-0.52 Y10.223 +N525 G02 X0.52 I0.52 J-0.39 +N530 G01 X6.8 Y1.85 +N535 G03 X6.924 Y1.846 I0.064 J0.048 +N540 G01 X7.167 Y2.132 +N545 G02 X7.214 Y2.159 I0.061 J-0.052 +N550 G01 X7.537 Y2.213 +N555 G03 X7.603 Y2.292 I-0.013 J0.079 +N560 G01 Y2.309 +N565 G03 X7.568 Y2.415 I-0.175 J0. +N570 G01 X1.904 Y9.967 +N575 G03 X1.764 Y10.037 I-0.14 J-0.105 +N580 G01 X1.694 +N585 G03 X1.554 Y9.756 I0. J-0.175 +N590 G01 X7.362 Y2.011 +N595 G03 X7.603 Y2.092 I0.107 J0.08 +N600 G01 Y2.292 +N605 G02 X7.765 Y2.629 I0.431 J0. +N610 G03 X7.813 Y3. I-0.168 J0.21 +N615 G01 X2.128 Y10.579 +N630 G01 X0. +N635 G03 X-0.6 Y10.283 I0. J-0.75 +N640 G01 X-4.27 Y5.39 +N645 G03 Y-5.39 I7.187 J-5.39 +N650 G01 X-0.6 Y-10.283 +N655 G03 X0.6 I0.6 J0.45 +N660 G01 X8.02 Y-0.39 +N665 G03 X8.15 Y0. I-0.52 J0.39 +N670 G01 Y2.547 +N680 G01 X7.813 Y3. +N685 G03 X7.659 Y2.976 I-0.07 J-0.053 +N690 G01 X7.526 Y2.592 +N700 G02 X7.503 Y2.552 I-0.084 J0.026 +N705 G01 X7.245 Y2.293 +N710 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.4 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N485 G01 Z-0.5 F500. +N490 G01 X7.94 Y0.33 F5000. +N495 G02 Y-0.33 I-0.44 J-0.33 +N500 G01 X0.52 Y-10.223 +N505 G02 X-0.52 I-0.52 J0.39 +N510 G01 X-4.19 Y-5.33 +N515 G02 Y5.33 I7.107 J5.33 +N520 G01 X-0.52 Y10.223 +N525 G02 X0.52 I0.52 J-0.39 +N530 G01 X6.8 Y1.85 +N535 G03 X6.924 Y1.846 I0.064 J0.048 +N540 G01 X7.167 Y2.132 +N545 G02 X7.214 Y2.159 I0.061 J-0.052 +N550 G01 X7.537 Y2.213 +N555 G03 X7.603 Y2.292 I-0.013 J0.079 +N560 G01 Y2.309 +N565 G03 X7.568 Y2.415 I-0.175 J0. +N570 G01 X1.904 Y9.967 +N575 G03 X1.764 Y10.037 I-0.14 J-0.105 +N580 G01 X1.694 +N585 G03 X1.554 Y9.756 I0. J-0.175 +N590 G01 X7.362 Y2.011 +N595 G03 X7.603 Y2.092 I0.107 J0.08 +N600 G01 Y2.292 +N605 G02 X7.765 Y2.629 I0.431 J0. +N610 G03 X7.813 Y3. I-0.168 J0.21 +N615 G01 X2.128 Y10.579 +N630 G01 X0. +N635 G03 X-0.6 Y10.283 I0. J-0.75 +N640 G01 X-4.27 Y5.39 +N645 G03 Y-5.39 I7.187 J-5.39 +N650 G01 X-0.6 Y-10.283 +N655 G03 X0.6 I0.6 J0.45 +N660 G01 X8.02 Y-0.39 +N665 G03 X8.15 Y0. I-0.52 J0.39 +N670 G01 Y2.547 +N680 G01 X7.813 Y3. +N685 G03 X7.659 Y2.976 I-0.07 J-0.053 +N690 G01 X7.526 Y2.592 +N700 G02 X7.503 Y2.552 I-0.084 J0.026 +N705 G01 X7.245 Y2.293 +N710 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.6 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N485 G01 Z-0.7 F500. +N490 G01 X7.94 Y0.33 F5000. +N495 G02 Y-0.33 I-0.44 J-0.33 +N500 G01 X0.52 Y-10.223 +N505 G02 X-0.52 I-0.52 J0.39 +N510 G01 X-4.19 Y-5.33 +N515 G02 Y5.33 I7.107 J5.33 +N520 G01 X-0.52 Y10.223 +N525 G02 X0.52 I0.52 J-0.39 +N530 G01 X6.8 Y1.85 +N535 G03 X6.924 Y1.846 I0.064 J0.048 +N540 G01 X7.167 Y2.132 +N545 G02 X7.214 Y2.159 I0.061 J-0.052 +N550 G01 X7.537 Y2.213 +N555 G03 X7.603 Y2.292 I-0.013 J0.079 +N560 G01 Y2.309 +N565 G03 X7.568 Y2.415 I-0.175 J0. +N570 G01 X1.904 Y9.967 +N575 G03 X1.764 Y10.037 I-0.14 J-0.105 +N580 G01 X1.694 +N585 G03 X1.554 Y9.756 I0. J-0.175 +N590 G01 X7.362 Y2.011 +N595 G03 X7.603 Y2.092 I0.107 J0.08 +N600 G01 Y2.292 +N605 G02 X7.765 Y2.629 I0.431 J0. +N610 G03 X7.813 Y3. I-0.168 J0.21 +N615 G01 X2.128 Y10.579 +N630 G01 X0. +N635 G03 X-0.6 Y10.283 I0. J-0.75 +N640 G01 X-4.27 Y5.39 +N645 G03 Y-5.39 I7.187 J-5.39 +N650 G01 X-0.6 Y-10.283 +N655 G03 X0.6 I0.6 J0.45 +N660 G01 X8.02 Y-0.39 +N665 G03 X8.15 Y0. I-0.52 J0.39 +N670 G01 Y2.547 +N680 G01 X7.813 Y3. +N685 G03 X7.659 Y2.976 I-0.07 J-0.053 +N690 G01 X7.526 Y2.592 +N700 G02 X7.503 Y2.552 I-0.084 J0.026 +N705 G01 X7.245 Y2.293 +N710 G03 X7.237 Y2.178 I0.062 J-0.062 +N280 G01 Z-0.8 F500. +N285 G01 X7.362 Y2.011 F5000. +N290 G03 X7.603 Y2.092 I0.107 J0.08 +N295 G01 Y2.309 +N300 G03 X7.568 Y2.415 I-0.175 J0. +N305 G01 X1.904 Y9.967 +N310 G03 X1.764 Y10.037 I-0.14 J-0.105 +N315 G01 X1.694 +N320 G03 X1.554 Y9.756 I0. J-0.175 +N325 G01 X7.237 Y2.178 +N330 G02 X7.529 Y1.621 I-1.57 J-1.178 +N335 G03 X8.15 Y1.722 I0.302 J0.101 +N340 G01 Y2.547 +N350 G01 X2.128 Y10.579 +N365 G01 X0. +N370 G03 X-0.6 Y10.283 I0. J-0.75 +N375 G01 X-4.27 Y5.39 +N380 G03 Y-5.39 I7.187 J-5.39 +N385 G01 X-0.6 Y-10.283 +N390 G03 X0.6 I0.6 J0.45 +N395 G01 X8.02 Y-0.39 +N400 G03 X8.15 Y0. I-0.52 J0.39 +N405 G01 Y1.722 +N415 G01 X6.8 Y1.855 +N430 G01 X7.94 Y0.33 +N435 G02 Y-0.33 I-0.44 J-0.33 +N440 G01 X0.52 Y-10.223 +N445 G02 X-0.52 I-0.52 J0.39 +N450 G01 X-4.19 Y-5.33 +N455 G02 Y5.33 I7.107 J5.33 +N460 G01 X-0.52 Y10.223 +N465 G02 X0.52 I0.52 J-0.39 +N470 G01 X6.798 Y1.852 +N920 G01 Z-0.9 F500. +N925 G01 X7.94 Y0.33 F5000. +N930 G02 Y-0.33 I-0.44 J-0.33 +N935 G01 X0.52 Y-10.223 +N940 G02 X-0.52 I-0.52 J0.39 +N945 G01 X-4.19 Y-5.33 +N950 G02 Y5.33 I7.107 J5.33 +N955 G01 X-0.52 Y10.223 +N960 G02 X0.52 I0.52 J-0.39 +N965 G01 X6.8 Y1.85 +N970 G03 X6.924 Y1.846 I0.064 J0.048 +N975 G01 X7.167 Y2.132 +N980 G02 X7.214 Y2.159 I0.061 J-0.052 +N985 G01 X7.537 Y2.213 +N990 G03 X7.603 Y2.292 I-0.013 J0.079 +N995 G01 Y2.309 +N1000 G03 X7.568 Y2.415 I-0.175 J0. +N1005 G01 X1.904 Y9.967 +N1010 G03 X1.764 Y10.037 I-0.14 J-0.105 +N1015 G01 X1.694 +N1020 G03 X1.554 Y9.756 I0. J-0.175 +N1025 G01 X7.362 Y2.011 +N1030 G03 X7.603 Y2.092 I0.107 J0.08 +N1035 G01 Y2.292 +N1040 G02 X7.765 Y2.629 I0.431 J0. +N1045 G03 X7.813 Y3. I-0.168 J0.21 +N1050 G01 X2.128 Y10.579 +N1065 G01 X0. +N1070 G03 X-0.6 Y10.283 I0. J-0.75 +N1075 G01 X-4.27 Y5.39 +N1080 G03 Y-5.39 I7.187 J-5.39 +N1085 G01 X-0.6 Y-10.283 +N1090 G03 X0.6 I0.6 J0.45 +N1095 G01 X8.02 Y-0.39 +N1100 G03 X8.15 Y0. I-0.52 J0.39 +N1105 G01 Y2.547 +N1115 G01 X7.813 Y3. +N1120 G00 Z2 +(2D SURFACAGE) +N1130 G00 X-0.012 Y0. +N1135 G00 Z0.1 +N1140 G01 Z-0.1 F500 +N1145 G03 X0.033 Y-0.51 I2.932 J0. F444. +N1150 G03 X0.311 Y-0.576 I0.154 J0.027 +N1155 G01 X0.602 Y-0.189 +N1160 G03 Y0.189 I-0.252 J0.189 +N1165 G01 X0.199 Y0.726 +N1170 G03 X0.073 Y0.7 I-0.057 J-0.043 +N1175 G03 X-0.012 Y0. I2.847 J-0.701 +N1180 G02 X-0.283 Y-0.43 I-0.476 J0. +N1185 G03 X-0.498 Y-0.891 I0.172 J-0.36 +N1190 G03 X-0.164 Y-1.72 I3.409 J0.891 +N1195 G03 X0.186 Y-1.744 I0.182 J0.102 +N1200 G01 X1.282 Y-0.282 +N1205 G03 Y0.282 I-0.376 J0.282 +N1210 G01 X0.155 Y1.785 +N1215 G03 X-0.137 Y1.768 I-0.14 J-0.105 +N1220 G03 X-0.498 Y-0.891 I3.048 J-1.768 +N1225 G02 X-0.653 Y-1.361 I-0.44 J-0.115 +N1230 G03 X-0.762 Y-1.844 I0.247 J-0.309 +N1235 G03 X-0.378 Y-2.471 I3.519 J1.725 +N1240 G02 X-0.282 Y-2.607 I-2.135 J-1.601 +N1245 G03 X-0.186 Y-2.744 I2.231 J1.465 +N1250 G03 X0.186 I0.186 J0.14 +N1255 G01 X2.032 Y-0.282 +N1260 G03 Y0.282 I-0.376 J0.282 +N1265 G01 X0.186 Y2.744 +N1270 G03 X-0.186 I-0.186 J-0.14 +N1275 G03 X-1.151 Y0.168 I3.912 J-2.934 +N1280 G03 X-0.762 Y-1.844 I3.908 J-0.288 +N1285 G02 X-0.816 Y-2.338 I-0.417 J-0.204 +N1290 G03 X-0.824 Y-2.834 I0.318 J-0.254 +N1295 G02 X-0.512 Y-3.28 I-7.275 J-5.427 +N1300 G03 X-0.186 Y-3.744 I7.586 J4.981 +N1305 G03 X0.186 I0.186 J0.14 +N1310 G01 X2.782 Y-0.282 +N1315 G03 Y0.282 I-0.376 J0.282 +N1320 G01 X0.186 Y3.744 +N1325 G03 X-0.186 I-0.186 J-0.14 +N1330 G03 X-0.512 Y3.28 I7.26 J-5.445 +N1335 G02 X-0.838 Y2.816 I-7.587 J4.982 +N1340 G03 Y-2.816 I3.754 J-2.816 +N1345 G02 X-0.824 Y-2.834 I-7.261 J-5.446 +N1350 G02 X-0.797 Y-3.371 I-0.386 J-0.288 +N1355 G03 X-0.782 Y-3.908 I0.426 J-0.256 +N1360 G02 X-0.748 Y-3.957 I-17.151 J-11.729 +N1365 G03 X-0.186 Y-4.744 I17.183 J11.679 +N1370 G03 X0.186 I0.186 J0.14 +N1375 G01 X3.532 Y-0.282 +N1380 G03 Y0.282 I-0.376 J0.282 +N1385 G01 X0.186 Y4.744 +N1390 G03 X-0.186 I-0.186 J-0.14 +N1395 G03 X-0.748 Y3.957 I16.621 J-12.466 +N1400 G02 X-1.31 Y3.17 I-17.184 J11.68 +N1405 G03 Y-3.17 I4.227 J-3.17 +N1410 G02 X-0.782 Y-3.908 I-16.622 J-12.467 +N1415 G02 X-0.769 Y-4.437 I-0.402 J-0.275 +N1420 G03 X-0.749 Y-4.967 I0.406 J-0.25 +N1425 G01 X-0.186 Y-5.744 +N1430 G03 X0.186 I0.186 J0.14 +N1435 G01 X4.282 Y-0.282 +N1440 G03 Y0.282 I-0.376 J0.282 +N1445 G01 X0.186 Y5.744 +N1450 G03 X-0.186 I-0.186 J-0.14 +N1455 G03 X-0.988 Y4.637 I33.214 J-24.91 +N1460 G02 X-1.79 Y3.53 I-34.019 J23.806 +N1465 G03 Y-3.53 I4.707 J-3.53 +N1470 G01 X-0.749 Y-4.967 +N1475 G02 X-0.727 Y-5.5 I-0.391 J-0.283 +N1480 G03 X-0.705 Y-6.034 I0.41 J-0.25 +N1485 G01 X-0.186 Y-6.744 +N1490 G03 X0.186 I0.186 J0.14 +N1495 G01 X5.032 Y-0.282 +N1500 G03 Y0.282 I-0.376 J0.282 +N1505 G01 X0.186 Y6.744 +N1510 G03 X-0.186 I-0.186 J-0.14 +N1515 G01 X-2.27 Y3.89 +N1520 G03 Y-3.89 I5.187 J-3.89 +N1525 G01 X-0.705 Y-6.034 +N1530 G02 X-0.681 Y-6.572 I-0.392 J-0.287 +N1535 G03 X-0.658 Y-7.11 I0.411 J-0.252 +N1540 G03 X-0.186 Y-7.744 I83.937 J61.965 +N1545 G03 X0.186 I0.186 J0.14 +N1550 G01 X5.782 Y-0.282 +N1555 G03 Y0.282 I-0.376 J0.282 +N1560 G01 X0.186 Y7.744 +N1565 G03 X-0.186 I-0.186 J-0.14 +N1570 G01 X-2.75 Y4.25 +N1575 G03 Y-4.25 I5.667 J-4.25 +N1580 G02 X-1.468 Y-5.997 I-83.479 J-62.609 +N1585 G03 X-0.658 Y-7.11 I84.747 J60.852 +N1590 G02 X-0.632 Y-7.645 I-0.388 J-0.287 +N1595 G03 X-0.607 Y-8.18 I0.412 J-0.249 +N1600 G03 X-0.186 Y-8.744 I117.544 J87.28 +N1605 G03 X0.186 I0.186 J0.14 +N1610 G01 X6.532 Y-0.282 +N1615 G03 Y0.282 I-0.376 J0.282 +N1620 G01 X0.186 Y8.744 +N1625 G03 X-0.186 I-0.186 J-0.14 +N1630 G01 X-3.23 Y4.61 +N1635 G03 Y-4.61 I6.147 J-4.61 +N1640 G02 X-1.708 Y-6.677 I-117.147 J-87.861 +N1645 G03 X-0.607 Y-8.18 I118.646 J85.777 +N1650 G02 X-0.577 Y-8.725 I-0.397 J-0.295 +N1655 G03 X-0.548 Y-9.27 I0.422 J-0.25 +N1660 G01 X-0.08 Y-9.893 +N1665 G03 X0.08 I0.08 J0.06 +N1670 G01 X7.5 Y0. +N1675 G01 X0.08 Y9.893 +N1680 G03 X-0.08 I-0.08 J-0.06 +N1685 G01 X-3.75 Y5. +N1690 G03 Y-5. I6.667 J-5. +N1695 G01 X-0.548 Y-9.27 +N1700 G00 Z2. +(2D FINITIONPOCHE1) +N1710 G00 X6.76 Y1.82 +N1715 G00 Z0.1 +N1720 G01 Z-1 F500 +N1725 G01 X7.9 Y0.3 F444. +N1730 G02 Y-0.3 I-0.4 J-0.3 +N1735 G01 X0.48 Y-10.193 +N1740 G02 X-0.48 I-0.48 J0.36 +N1745 G01 X-4.15 Y-5.3 +N1750 G02 Y5.3 I7.067 J5.3 +N1755 G01 X-0.48 Y10.193 +N1760 G02 X0.48 I0.48 J-0.36 +N1765 G01 X6.76 Y1.82 +N1775 G01 X7.198 Y2.149 +N1785 G01 X7.416 Y1.858 +N1790 G03 X7.652 Y1.936 I0.105 J0.079 +N1795 G01 Y2.307 +N1800 G03 X7.606 Y2.446 I-0.231 J0. +N1805 G01 X1.945 Y9.994 +N1810 G03 X1.761 Y10.086 I-0.184 J-0.138 +N1815 G01 X1.589 +N1820 G03 X1.451 Y9.811 I0. J-0.172 +N1825 G01 X7.198 Y2.149 +N1830 G02 X7.518 Y1.537 I-1.724 J-1.293 +N1835 G03 X8.2 Y1.648 I0.332 J0.111 +N1840 G01 Y2.567 +N1845 G01 X2.15 Y10.633 +N1850 G01 X0. +N1855 G03 X-0.64 Y10.313 I0. J-0.8 +N1860 G01 X-4.31 Y5.42 +N1865 G03 Y-5.42 I7.227 J-5.42 +N1870 G01 X-0.64 Y-10.313 +N1875 G03 X0.64 I0.64 J0.48 +N1880 G01 X8.06 Y-0.42 +N1885 G03 X8.2 Y0. I-0.56 J0.42 +N1890 G01 Y1.648 +N1895 G00 Z2. +(2D POCHES23) +N1905 G00 X0.295 Y-3. +N1910 G00 Z0.1 +N1915 G01 Z-0.2 F500 +N1920 G01 Y-2.94 F272. +N1925 G03 X0.06 Y-2.705 I-0.235 J0. +N1930 G01 X-0.06 +N1935 G03 X-0.295 Y-2.94 I0. J-0.235 +N1940 G01 Y-3.06 +N1945 G03 X-0.06 Y-3.295 I0.235 J0. +N1950 G01 X0.06 +N1955 G03 X0.295 Y-3.06 I0. J0.235 +N1960 G01 Y-3. +N1965 G02 X0.629 Y-2.635 I0.367 J0. +N1970 G03 X0.744 Y-2.153 I-0.023 J0.26 +N1975 G03 X0.576 Y-2.105 I-0.168 J-0.271 +N1980 G01 X-0.58 +N1985 G03 X-0.895 Y-2.42 I0. J-0.315 +N1990 G01 Y-3.576 +N1995 G03 X-0.576 Y-3.895 I0.319 J0. +N2000 G01 X0.576 +N2005 G03 X0.895 Y-3.576 I0. J0.319 +N2010 G01 Y-2.424 +N2015 G03 X0.744 Y-2.153 I-0.319 J0. +N2020 G02 X0.418 Y-1.777 I0.441 J0.711 +N2025 G03 X0.002 Y-1.505 I-0.416 J-0.182 +N2030 G01 X-1.18 +N2035 G03 X-1.495 Y-1.82 I0. J-0.315 +N2040 G01 Y-4.176 +N2045 G03 X-1.176 Y-4.495 I0.319 J0. +N2050 G01 X1.176 +N2055 G03 X1.495 Y-4.176 I0. J0.319 +N2060 G01 Y-1.824 +N2065 G03 X1.176 Y-1.505 I-0.319 J0. +N2070 G01 X0.002 +N2075 G02 X-0.452 Y-1.202 I0. J0.492 +N2080 G03 X-0.905 Y-0.9 I-0.454 J-0.189 +N2085 G01 X-2.1 +N2090 G01 Y-5.1 +N2095 G01 X2.1 +N2100 G01 Y-0.9 +N2105 G01 X-0.905 +N2110 G00 Z2. +N2115 G00 X0. Y3.295 +N2116 G00 Z0.1 +N2120 G01 Z-0.2 F500. +N2125 G01 X-0.06 F1000 +N2130 G03 X-0.295 Y3.06 I0. J-0.235 +N2135 G01 Y2.94 +N2140 G03 X-0.06 Y2.705 I0.235 J0. +N2145 G01 X0.06 +N2150 G03 X0.295 Y2.94 I0. J0.235 +N2155 G01 Y3.06 +N2160 G03 X0.06 Y3.295 I-0.235 J0. +N2165 G01 X0. +N2170 G02 X-0.365 Y3.629 I0. J0.367 +N2175 G03 X-0.847 Y3.744 I-0.26 J-0.023 +N2180 G03 X-0.895 Y3.576 I0.271 J-0.168 +N2185 G01 Y2.424 +N2190 G03 X-0.576 Y2.105 I0.319 J0. +N2195 G01 X0.576 +N2200 G03 X0.895 Y2.424 I0. J0.319 +N2205 G01 Y3.576 +N2210 G03 X0.576 Y3.895 I-0.319 J0. +N2215 G01 X-0.576 +N2220 G03 X-0.847 Y3.744 I0. J-0.319 +N2225 G02 X-1.223 Y3.418 I-0.711 J0.441 +N2230 G03 X-1.495 Y3.002 I0.182 J-0.416 +N2235 G01 Y1.824 +N2240 G03 X-1.176 Y1.505 I0.319 J0. +N2245 G01 X1.176 +N2250 G03 X1.495 Y1.824 I0. J0.319 +N2255 G01 Y4.176 +N2260 G03 X1.176 Y4.495 I-0.319 J0. +N2265 G01 X-1.176 +N2270 G03 X-1.495 Y4.176 I0. J-0.319 +N2275 G01 Y3.002 +N2280 G02 X-1.798 Y2.548 I-0.492 J0. +N2285 G03 X-2.1 Y2.095 I0.189 J-0.454 +N2290 G01 Y0.9 +N2295 G01 X2.1 +N2300 G01 Y5.1 +N2305 G01 X-2.1 +N2310 G01 Y2.095 +N2315 G00 Z2. +N2325 M9 +N2340 M30 +% diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/full/003_micro5_3axes_ebauche.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/003_micro5_3axes_ebauche.ngc new file mode 100644 index 0000000..ab90ac7 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/003_micro5_3axes_ebauche.ngc @@ -0,0 +1,43316 @@ +(----------- Tool list -----------) +;T01 R1. L+6.(T1 Fraise 2 tailles D 2) +(;---------------------------------) +G17 G90 ; Select plane XY, use absolute mode +G53 G01 Z+24 F1000 +G54 ; Select Coordinate System 1 +(; - T1 Fraise 2 tailles D 2) +G17 ; Select plane XY +(T1 M6) +S60000 M03 M08 +(; - Surfa�age.3) +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G01 X+45 Y-16.949 Z+4.55 B0. C0. F10000 +G01 Z-0.45 +G03 X+42 Y-19.949 I+0 J-3 +G01 Y-40 F12000 +G02 X+40 Y-42 I-2 J+0 +G01 X+0 +G02 X-2 Y-40 I+0 J+2 +G01 Y+0 +G02 X+0 Y+2 I+2 J+0 +G01 X+40 +G02 X+42 Y+0 I+0 J-2 +G01 Y-19.949 +G01 X+41.926 Y-20.023 +G01 X+41.773 +G01 X+41.7 Y-20.096 +G01 Y-40 +G02 X+40 Y-41.7 I-1.7 J+0 +G01 X+0 +G02 X-1.7 Y-40 I+0 J+1.7 +G01 Y+0 +G02 X+0 Y+1.7 I+1.7 J+0 +G01 X+40 +G02 X+41.7 Y+0 I+0 J-1.7 +G01 Y-19.949 +G01 X+41.626 Y-20.023 +G01 X+41.473 +G01 X+41.4 Y-20.096 +G01 Y-40 +G02 X+40 Y-41.4 I-1.4 J+0 +G01 X+0 +G02 X-1.4 Y-40 I+0 J+1.4 +G01 Y+0 +G02 X+0 Y+1.4 I+1.4 J+0 +G01 X+40 +G02 X+41.4 Y+0 I+0 J-1.4 +G01 Y-19.949 +G01 X+41.326 Y-20.023 +G01 X+41.173 +G01 X+41.1 Y-20.096 +G01 Y-40 +G02 X+40 Y-41.1 I-1.1 J+0 +G01 X+0 +G02 X-1.1 Y-40 I+0 J+1.1 +G01 Y+0 +G02 X+0 Y+1.1 I+1.1 J+0 +G01 X+40 +G02 X+41.1 Y+0 I+0 J-1.1 +G01 Y-19.949 +G01 X+41.026 Y-20.023 +G01 X+40.873 +G01 X+40.8 Y-20.096 +G01 Y-39.85 +G02 X+39.85 Y-40.8 I-0.95 J+0 +G01 X+0.15 +G02 X-0.8 Y-39.85 I+0 J+0.95 +G01 Y-0.15 +G02 X+0.15 Y+0.8 I+0.95 J+0 +G01 X+39.85 +G02 X+40.8 Y-0.15 I+0 J-0.95 +G01 Y-19.949 +G01 X+40.726 Y-20.023 +G01 X+40.573 +G01 X+40.5 Y-20.096 +G01 Y-39.55 +G02 X+39.55 Y-40.5 I-0.95 J+0 +G01 X+0.45 +G02 X-0.5 Y-39.55 I+0 J+0.95 +G01 Y-0.45 +G02 X+0.45 Y+0.5 I+0.95 J+0 +G01 X+39.55 +G02 X+40.5 Y-0.45 I+0 J-0.95 +G01 Y-19.949 +G01 X+40.426 Y-20.023 +G01 X+40.273 +G01 X+40.2 Y-20.096 +G01 Y-39.25 +G02 X+39.25 Y-40.2 I-0.95 J+0 +G01 X+0.75 +G02 X-0.2 Y-39.25 I+0 J+0.95 +G01 Y-0.75 +G02 X+0.75 Y+0.2 I+0.95 J+0 +G01 X+39.25 +G02 X+40.2 Y-0.75 I+0 J-0.95 +G01 Y-19.949 +G01 X+40.126 Y-20.023 +G01 X+39.973 +G01 X+39.9 Y-20.096 +G01 Y-38.95 +G02 X+38.95 Y-39.9 I-0.95 J+0 +G01 X+1.05 +G02 X+0.1 Y-38.95 I+0 J+0.95 +G01 Y-1.05 +G02 X+1.05 Y-0.1 I+0.95 J+0 +G01 X+38.95 +G02 X+39.9 Y-1.05 I+0 J-0.95 +G01 Y-19.949 +G01 X+39.826 Y-20.023 +G01 X+39.673 +G01 X+39.6 Y-20.096 +G01 Y-38.65 +G02 X+38.65 Y-39.6 I-0.95 J+0 +G01 X+1.35 +G02 X+0.4 Y-38.65 I+0 J+0.95 +G01 Y-1.35 +G02 X+1.35 Y-0.4 I+0.95 J+0 +G01 X+38.65 +G02 X+39.6 Y-1.35 I+0 J-0.95 +G01 Y-19.949 +G01 X+39.526 Y-20.023 +G01 X+39.373 +G01 X+39.3 Y-20.096 +G01 Y-38.35 +G02 X+38.35 Y-39.3 I-0.95 J+0 +G01 X+1.65 +G02 X+0.7 Y-38.35 I+0 J+0.95 +G01 Y-1.65 +G02 X+1.65 Y-0.7 I+0.95 J+0 +G01 X+38.35 +G02 X+39.3 Y-1.65 I+0 J-0.95 +G01 Y-19.949 +G01 X+39.226 Y-20.023 +G01 X+39.073 +G01 X+39 Y-20.096 +G01 Y-38.05 +G02 X+38.05 Y-39 I-0.95 J+0 +G01 X+1.95 +G02 X+1 Y-38.05 I+0 J+0.95 +G01 Y-1.95 +G02 X+1.95 Y-1 I+0.95 J+0 +G01 X+38.05 +G02 X+39 Y-1.95 I+0 J-0.95 +G01 Y-19.949 +G01 X+38.926 Y-20.023 +G01 X+38.773 +G01 X+38.7 Y-20.096 +G01 Y-37.75 +G02 X+37.75 Y-38.7 I-0.95 J+0 +G01 X+2.25 +G02 X+1.3 Y-37.75 I+0 J+0.95 +G01 Y-2.25 +G02 X+2.25 Y-1.3 I+0.95 J+0 +G01 X+37.75 +G02 X+38.7 Y-2.25 I+0 J-0.95 +G01 Y-19.949 +G01 X+38.626 Y-20.023 +G01 X+38.473 +G01 X+38.4 Y-20.096 +G01 Y-37.45 +G02 X+37.45 Y-38.4 I-0.95 J+0 +G01 X+2.55 +G02 X+1.6 Y-37.45 I+0 J+0.95 +G01 Y-2.55 +G02 X+2.55 Y-1.6 I+0.95 J+0 +G01 X+37.45 +G02 X+38.4 Y-2.55 I+0 J-0.95 +G01 Y-19.949 +G01 X+38.326 Y-20.023 +G01 X+38.173 +G01 X+38.1 Y-20.096 +G01 Y-37.15 +G02 X+37.15 Y-38.1 I-0.95 J+0 +G01 X+2.85 +G02 X+1.9 Y-37.15 I+0 J+0.95 +G01 Y-2.85 +G02 X+2.85 Y-1.9 I+0.95 J+0 +G01 X+37.15 +G02 X+38.1 Y-2.85 I+0 J-0.95 +G01 Y-19.949 +G01 X+38.026 Y-20.023 +G01 X+37.873 +G01 X+37.8 Y-20.096 +G01 Y-36.85 +G02 X+36.85 Y-37.8 I-0.95 J+0 +G01 X+3.15 +G02 X+2.2 Y-36.85 I+0 J+0.95 +G01 Y-3.15 +G02 X+3.15 Y-2.2 I+0.95 J+0 +G01 X+36.85 +G02 X+37.8 Y-3.15 I+0 J-0.95 +G01 Y-19.949 +G01 X+37.726 Y-20.023 +G01 X+37.573 +G01 X+37.5 Y-20.096 +G01 Y-36.55 +G02 X+36.55 Y-37.5 I-0.95 J+0 +G01 X+3.45 +G02 X+2.5 Y-36.55 I+0 J+0.95 +G01 Y-3.45 +G02 X+3.45 Y-2.5 I+0.95 J+0 +G01 X+36.55 +G02 X+37.5 Y-3.45 I+0 J-0.95 +G01 Y-19.949 +G01 X+37.426 Y-20.023 +G01 X+37.273 +G01 X+37.2 Y-20.096 +G01 Y-36.25 +G02 X+36.25 Y-37.2 I-0.95 J+0 +G01 X+3.75 +G02 X+2.8 Y-36.25 I+0 J+0.95 +G01 Y-3.75 +G02 X+3.75 Y-2.8 I+0.95 J+0 +G01 X+36.25 +G02 X+37.2 Y-3.75 I+0 J-0.95 +G01 Y-19.949 +G01 X+37.126 Y-20.023 +G01 X+36.973 +G01 X+36.9 Y-20.096 +G01 Y-35.95 +G02 X+35.95 Y-36.9 I-0.95 J+0 +G01 X+4.05 +G02 X+3.1 Y-35.95 I+0 J+0.95 +G01 Y-4.05 +G02 X+4.05 Y-3.1 I+0.95 J+0 +G01 X+35.95 +G02 X+36.9 Y-4.05 I+0 J-0.95 +G01 Y-19.949 +G01 X+36.826 Y-20.023 +G01 X+36.673 +G01 X+36.6 Y-20.096 +G01 Y-35.65 +G02 X+35.65 Y-36.6 I-0.95 J+0 +G01 X+4.35 +G02 X+3.4 Y-35.65 I+0 J+0.95 +G01 Y-4.35 +G02 X+4.35 Y-3.4 I+0.95 J+0 +G01 X+35.65 +G02 X+36.6 Y-4.35 I+0 J-0.95 +G01 Y-19.949 +G01 X+36.526 Y-20.023 +G01 X+36.373 +G01 X+36.3 Y-20.096 +G01 Y-35.35 +G02 X+35.35 Y-36.3 I-0.95 J+0 +G01 X+4.65 +G02 X+3.7 Y-35.35 I+0 J+0.95 +G01 Y-4.65 +G02 X+4.65 Y-3.7 I+0.95 J+0 +G01 X+35.35 +G02 X+36.3 Y-4.65 I+0 J-0.95 +G01 Y-19.949 +G01 X+36.226 Y-20.023 +G01 X+36.073 +G01 X+36 Y-20.096 +G01 Y-35.05 +G02 X+35.05 Y-36 I-0.95 J+0 +G01 X+4.95 +G02 X+4 Y-35.05 I+0 J+0.95 +G01 Y-4.95 +G02 X+4.95 Y-4 I+0.95 J+0 +G01 X+35.05 +G02 X+36 Y-4.95 I+0 J-0.95 +G01 Y-19.949 +G01 X+35.926 Y-20.023 +G01 X+35.773 +G01 X+35.7 Y-20.096 +G01 Y-34.75 +G02 X+34.75 Y-35.7 I-0.95 J+0 +G01 X+5.25 +G02 X+4.3 Y-34.75 I+0 J+0.95 +G01 Y-5.25 +G02 X+5.25 Y-4.3 I+0.95 J+0 +G01 X+34.75 +G02 X+35.7 Y-5.25 I+0 J-0.95 +G01 Y-19.949 +G01 X+35.626 Y-20.023 +G01 X+35.473 +G01 X+35.4 Y-20.096 +G01 Y-34.45 +G02 X+34.45 Y-35.4 I-0.95 J+0 +G01 X+5.55 +G02 X+4.6 Y-34.45 I+0 J+0.95 +G01 Y-5.55 +G02 X+5.55 Y-4.6 I+0.95 J+0 +G01 X+34.45 +G02 X+35.4 Y-5.55 I+0 J-0.95 +G01 Y-19.949 +G01 X+35.326 Y-20.023 +G01 X+35.173 +G01 X+35.1 Y-20.096 +G01 Y-34.15 +G02 X+34.15 Y-35.1 I-0.95 J+0 +G01 X+5.85 +G02 X+4.9 Y-34.15 I+0 J+0.95 +G01 Y-5.85 +G02 X+5.85 Y-4.9 I+0.95 J+0 +G01 X+34.15 +G02 X+35.1 Y-5.85 I+0 J-0.95 +G01 Y-19.949 +G01 X+35.026 Y-20.023 +G01 X+34.873 +G01 X+34.8 Y-20.096 +G01 Y-33.85 +G02 X+33.85 Y-34.8 I-0.95 J+0 +G01 X+6.15 +G02 X+5.2 Y-33.85 I+0 J+0.95 +G01 Y-6.15 +G02 X+6.15 Y-5.2 I+0.95 J+0 +G01 X+33.85 +G02 X+34.8 Y-6.15 I+0 J-0.95 +G01 Y-19.949 +G01 X+34.726 Y-20.023 +G01 X+34.573 +G01 X+34.5 Y-20.096 +G01 Y-33.55 +G02 X+33.55 Y-34.5 I-0.95 J+0 +G01 X+6.45 +G02 X+5.5 Y-33.55 I+0 J+0.95 +G01 Y-6.45 +G02 X+6.45 Y-5.5 I+0.95 J+0 +G01 X+33.55 +G02 X+34.5 Y-6.45 I+0 J-0.95 +G01 Y-19.949 +G01 X+34.426 Y-20.023 +G01 X+34.273 +G01 X+34.2 Y-20.096 +G01 Y-33.25 +G02 X+33.25 Y-34.2 I-0.95 J+0 +G01 X+6.75 +G02 X+5.8 Y-33.25 I+0 J+0.95 +G01 Y-6.75 +G02 X+6.75 Y-5.8 I+0.95 J+0 +G01 X+33.25 +G02 X+34.2 Y-6.75 I+0 J-0.95 +G01 Y-19.949 +G01 X+34.126 Y-20.023 +G01 X+33.973 +G01 X+33.9 Y-20.096 +G01 Y-32.95 +G02 X+32.95 Y-33.9 I-0.95 J+0 +G01 X+7.05 +G02 X+6.1 Y-32.95 I+0 J+0.95 +G01 Y-7.05 +G02 X+7.05 Y-6.1 I+0.95 J+0 +G01 X+32.95 +G02 X+33.9 Y-7.05 I+0 J-0.95 +G01 Y-19.949 +G01 X+33.826 Y-20.023 +G01 X+33.673 +G01 X+33.6 Y-20.096 +G01 Y-32.65 +G02 X+32.65 Y-33.6 I-0.95 J+0 +G01 X+7.35 +G02 X+6.4 Y-32.65 I+0 J+0.95 +G01 Y-7.35 +G02 X+7.35 Y-6.4 I+0.95 J+0 +G01 X+32.65 +G02 X+33.6 Y-7.35 I+0 J-0.95 +G01 Y-19.949 +G01 X+33.526 Y-20.023 +G01 X+33.373 +G01 X+33.3 Y-20.096 +G01 Y-32.35 +G02 X+32.35 Y-33.3 I-0.95 J+0 +G01 X+7.65 +G02 X+6.7 Y-32.35 I+0 J+0.95 +G01 Y-7.65 +G02 X+7.65 Y-6.7 I+0.95 J+0 +G01 X+32.35 +G02 X+33.3 Y-7.65 I+0 J-0.95 +G01 Y-19.949 +G01 X+33.226 Y-20.023 +G01 X+33.073 +G01 X+33 Y-20.096 +G01 Y-32.05 +G02 X+32.05 Y-33 I-0.95 J+0 +G01 X+7.95 +G02 X+7 Y-32.05 I+0 J+0.95 +G01 Y-7.95 +G02 X+7.95 Y-7 I+0.95 J+0 +G01 X+32.05 +G02 X+33 Y-7.95 I+0 J-0.95 +G01 Y-19.949 +G01 X+32.926 Y-20.023 +G01 X+32.773 +G01 X+32.7 Y-20.096 +G01 Y-31.75 +G02 X+31.75 Y-32.7 I-0.95 J+0 +G01 X+8.25 +G02 X+7.3 Y-31.75 I+0 J+0.95 +G01 Y-8.25 +G02 X+8.25 Y-7.3 I+0.95 J+0 +G01 X+31.75 +G02 X+32.7 Y-8.25 I+0 J-0.95 +G01 Y-19.949 +G01 X+32.626 Y-20.023 +G01 X+32.473 +G01 X+32.4 Y-20.096 +G01 Y-31.45 +G02 X+31.45 Y-32.4 I-0.95 J+0 +G01 X+8.55 +G02 X+7.6 Y-31.45 I+0 J+0.95 +G01 Y-8.55 +G02 X+8.55 Y-7.6 I+0.95 J+0 +G01 X+31.45 +G02 X+32.4 Y-8.55 I+0 J-0.95 +G01 Y-19.949 +G01 X+32.326 Y-20.023 +G01 X+32.173 +G01 X+32.1 Y-20.096 +G01 Y-31.15 +G02 X+31.15 Y-32.1 I-0.95 J+0 +G01 X+8.85 +G02 X+7.9 Y-31.15 I+0 J+0.95 +G01 Y-8.85 +G02 X+8.85 Y-7.9 I+0.95 J+0 +G01 X+31.15 +G02 X+32.1 Y-8.85 I+0 J-0.95 +G01 Y-19.949 +G01 X+32.026 Y-20.023 +G01 X+31.873 +G01 X+31.8 Y-20.096 +G01 Y-30.85 +G02 X+30.85 Y-31.8 I-0.95 J+0 +G01 X+9.15 +G02 X+8.2 Y-30.85 I+0 J+0.95 +G01 Y-9.15 +G02 X+9.15 Y-8.2 I+0.95 J+0 +G01 X+30.85 +G02 X+31.8 Y-9.15 I+0 J-0.95 +G01 Y-19.949 +G01 X+31.726 Y-20.023 +G01 X+31.573 +G01 X+31.5 Y-20.096 +G01 Y-30.55 +G02 X+30.55 Y-31.5 I-0.95 J+0 +G01 X+9.45 +G02 X+8.5 Y-30.55 I+0 J+0.95 +G01 Y-9.45 +G02 X+9.45 Y-8.5 I+0.95 J+0 +G01 X+30.55 +G02 X+31.5 Y-9.45 I+0 J-0.95 +G01 Y-19.949 +G01 X+31.426 Y-20.023 +G01 X+31.273 +G01 X+31.2 Y-20.096 +G01 Y-30.25 +G02 X+30.25 Y-31.2 I-0.95 J+0 +G01 X+9.75 +G02 X+8.8 Y-30.25 I+0 J+0.95 +G01 Y-9.75 +G02 X+9.75 Y-8.8 I+0.95 J+0 +G01 X+30.25 +G02 X+31.2 Y-9.75 I+0 J-0.95 +G01 Y-19.949 +G01 X+31.126 Y-20.023 +G01 X+30.973 +G01 X+30.9 Y-20.096 +G01 Y-29.95 +G02 X+29.95 Y-30.9 I-0.95 J+0 +G01 X+10.05 +G02 X+9.1 Y-29.95 I+0 J+0.95 +G01 Y-10.05 +G02 X+10.05 Y-9.1 I+0.95 J+0 +G01 X+29.95 +G02 X+30.9 Y-10.05 I+0 J-0.95 +G01 Y-19.949 +G01 X+30.826 Y-20.023 +G01 X+30.673 +G01 X+30.6 Y-20.096 +G01 Y-29.65 +G02 X+29.65 Y-30.6 I-0.95 J+0 +G01 X+10.35 +G02 X+9.4 Y-29.65 I+0 J+0.95 +G01 Y-10.35 +G02 X+10.35 Y-9.4 I+0.95 J+0 +G01 X+29.65 +G02 X+30.6 Y-10.35 I+0 J-0.95 +G01 Y-19.949 +G01 X+30.526 Y-20.023 +G01 X+30.373 +G01 X+30.3 Y-20.096 +G01 Y-29.35 +G02 X+29.35 Y-30.3 I-0.95 J+0 +G01 X+10.65 +G02 X+9.7 Y-29.35 I+0 J+0.95 +G01 Y-10.65 +G02 X+10.65 Y-9.7 I+0.95 J+0 +G01 X+29.35 +G02 X+30.3 Y-10.65 I+0 J-0.95 +G01 Y-19.949 +G01 X+30.226 Y-20.023 +G01 X+30.073 +G01 X+30 Y-20.096 +G01 Y-29.05 +G02 X+29.05 Y-30 I-0.95 J+0 +G01 X+10.95 +G02 X+10 Y-29.05 I+0 J+0.95 +G01 Y-10.95 +G02 X+10.95 Y-10 I+0.95 J+0 +G01 X+29.05 +G02 X+30 Y-10.95 I+0 J-0.95 +G01 Y-19.949 +G01 X+29.926 Y-20.023 +G01 X+29.773 +G01 X+29.7 Y-20.096 +G01 Y-28.75 +G02 X+28.75 Y-29.7 I-0.95 J+0 +G01 X+11.25 +G02 X+10.3 Y-28.75 I+0 J+0.95 +G01 Y-11.25 +G02 X+11.25 Y-10.3 I+0.95 J+0 +G01 X+28.75 +G02 X+29.7 Y-11.25 I+0 J-0.95 +G01 Y-19.949 +G01 X+29.626 Y-20.023 +G01 X+29.473 +G01 X+29.4 Y-20.096 +G01 Y-28.45 +G02 X+28.45 Y-29.4 I-0.95 J+0 +G01 X+11.55 +G02 X+10.6 Y-28.45 I+0 J+0.95 +G01 Y-11.55 +G02 X+11.55 Y-10.6 I+0.95 J+0 +G01 X+28.45 +G02 X+29.4 Y-11.55 I+0 J-0.95 +G01 Y-19.949 +G01 X+29.326 Y-20.023 +G01 X+29.173 +G01 X+29.1 Y-20.096 +G01 Y-28.15 +G02 X+28.15 Y-29.1 I-0.95 J+0 +G01 X+11.85 +G02 X+10.9 Y-28.15 I+0 J+0.95 +G01 Y-11.85 +G02 X+11.85 Y-10.9 I+0.95 J+0 +G01 X+28.15 +G02 X+29.1 Y-11.85 I+0 J-0.95 +G01 Y-19.949 +G01 X+29.026 Y-20.023 +G01 X+28.873 +G01 X+28.8 Y-20.096 +G01 Y-27.85 +G02 X+27.85 Y-28.8 I-0.95 J+0 +G01 X+12.15 +G02 X+11.2 Y-27.85 I+0 J+0.95 +G01 Y-12.15 +G02 X+12.15 Y-11.2 I+0.95 J+0 +G01 X+27.85 +G02 X+28.8 Y-12.15 I+0 J-0.95 +G01 Y-19.949 +G01 X+28.726 Y-20.023 +G01 X+28.573 +G01 X+28.5 Y-20.096 +G01 Y-27.55 +G02 X+27.55 Y-28.5 I-0.95 J+0 +G01 X+12.45 +G02 X+11.5 Y-27.55 I+0 J+0.95 +G01 Y-12.45 +G02 X+12.45 Y-11.5 I+0.95 J+0 +G01 X+27.55 +G02 X+28.5 Y-12.45 I+0 J-0.95 +G01 Y-19.949 +G01 X+28.426 Y-20.023 +G01 X+28.273 +G01 X+28.2 Y-20.096 +G01 Y-27.25 +G02 X+27.25 Y-28.2 I-0.95 J+0 +G01 X+12.75 +G02 X+11.8 Y-27.25 I+0 J+0.95 +G01 Y-12.75 +G02 X+12.75 Y-11.8 I+0.95 J+0 +G01 X+27.25 +G02 X+28.2 Y-12.75 I+0 J-0.95 +G01 Y-19.949 +G01 X+28.126 Y-20.023 +G01 X+27.973 +G01 X+27.9 Y-20.096 +G01 Y-26.95 +G02 X+26.95 Y-27.9 I-0.95 J+0 +G01 X+13.05 +G02 X+12.1 Y-26.95 I+0 J+0.95 +G01 Y-13.05 +G02 X+13.05 Y-12.1 I+0.95 J+0 +G01 X+26.95 +G02 X+27.9 Y-13.05 I+0 J-0.95 +G01 Y-19.949 +G01 X+27.826 Y-20.023 +G01 X+27.673 +G01 X+27.6 Y-20.096 +G01 Y-26.65 +G02 X+26.65 Y-27.6 I-0.95 J+0 +G01 X+13.35 +G02 X+12.4 Y-26.65 I+0 J+0.95 +G01 Y-13.35 +G02 X+13.35 Y-12.4 I+0.95 J+0 +G01 X+26.65 +G02 X+27.6 Y-13.35 I+0 J-0.95 +G01 Y-19.949 +G01 X+27.526 Y-20.023 +G01 X+27.373 +G01 X+27.3 Y-20.096 +G01 Y-26.35 +G02 X+26.35 Y-27.3 I-0.95 J+0 +G01 X+13.65 +G02 X+12.7 Y-26.35 I+0 J+0.95 +G01 Y-13.65 +G02 X+13.65 Y-12.7 I+0.95 J+0 +G01 X+26.35 +G02 X+27.3 Y-13.65 I+0 J-0.95 +G01 Y-19.949 +G01 X+27.226 Y-20.023 +G01 X+27.073 +G01 X+27 Y-20.096 +G01 Y-26.05 +G02 X+26.05 Y-27 I-0.95 J+0 +G01 X+13.95 +G02 X+13 Y-26.05 I+0 J+0.95 +G01 Y-13.95 +G02 X+13.95 Y-13 I+0.95 J+0 +G01 X+26.05 +G02 X+27 Y-13.95 I+0 J-0.95 +G01 Y-19.949 +G01 X+26.926 Y-20.023 +G01 X+26.773 +G01 X+26.7 Y-20.096 +G01 Y-25.75 +G02 X+25.75 Y-26.7 I-0.95 J+0 +G01 X+14.25 +G02 X+13.3 Y-25.75 I+0 J+0.95 +G01 Y-14.25 +G02 X+14.25 Y-13.3 I+0.95 J+0 +G01 X+25.75 +G02 X+26.7 Y-14.25 I+0 J-0.95 +G01 Y-19.949 +G01 X+26.626 Y-20.023 +G01 X+26.473 +G01 X+26.4 Y-20.096 +G01 Y-25.45 +G02 X+25.45 Y-26.4 I-0.95 J+0 +G01 X+14.55 +G02 X+13.6 Y-25.45 I+0 J+0.95 +G01 Y-14.55 +G02 X+14.55 Y-13.6 I+0.95 J+0 +G01 X+25.45 +G02 X+26.4 Y-14.55 I+0 J-0.95 +G01 Y-19.949 +G01 X+26.326 Y-20.023 +G01 X+26.173 +G01 X+26.1 Y-20.096 +G01 Y-25.15 +G02 X+25.15 Y-26.1 I-0.95 J+0 +G01 X+14.85 +G02 X+13.9 Y-25.15 I+0 J+0.95 +G01 Y-14.85 +G02 X+14.85 Y-13.9 I+0.95 J+0 +G01 X+25.15 +G02 X+26.1 Y-14.85 I+0 J-0.95 +G01 Y-19.949 +G01 X+26.026 Y-20.023 +G01 X+25.873 +G01 X+25.8 Y-20.096 +G01 Y-24.85 +G02 X+24.85 Y-25.8 I-0.95 J+0 +G01 X+15.15 +G02 X+14.2 Y-24.85 I+0 J+0.95 +G01 Y-15.15 +G02 X+15.15 Y-14.2 I+0.95 J+0 +G01 X+24.85 +G02 X+25.8 Y-15.15 I+0 J-0.95 +G01 Y-19.949 +G01 X+25.726 Y-20.023 +G01 X+25.573 +G01 X+25.5 Y-20.096 +G01 Y-24.55 +G02 X+24.55 Y-25.5 I-0.95 J+0 +G01 X+15.45 +G02 X+14.5 Y-24.55 I+0 J+0.95 +G01 Y-15.45 +G02 X+15.45 Y-14.5 I+0.95 J+0 +G01 X+24.55 +G02 X+25.5 Y-15.45 I+0 J-0.95 +G01 Y-19.949 +G01 X+25.426 Y-20.023 +G01 X+25.273 +G01 X+25.2 Y-20.096 +G01 Y-24.25 +G02 X+24.25 Y-25.2 I-0.95 J+0 +G01 X+15.75 +G02 X+14.8 Y-24.25 I+0 J+0.95 +G01 Y-15.75 +G02 X+15.75 Y-14.8 I+0.95 J+0 +G01 X+24.25 +G02 X+25.2 Y-15.75 I+0 J-0.95 +G01 Y-19.949 +G01 X+25.126 Y-20.023 +G01 X+24.973 +G01 X+24.9 Y-20.096 +G01 Y-23.95 +G02 X+23.95 Y-24.9 I-0.95 J+0 +G01 X+16.05 +G02 X+15.1 Y-23.95 I+0 J+0.95 +G01 Y-16.05 +G02 X+16.05 Y-15.1 I+0.95 J+0 +G01 X+23.95 +G02 X+24.9 Y-16.05 I+0 J-0.95 +G01 Y-19.949 +G01 X+24.826 Y-20.023 +G01 X+24.673 +G01 X+24.6 Y-20.096 +G01 Y-23.65 +G02 X+23.65 Y-24.6 I-0.95 J+0 +G01 X+16.35 +G02 X+15.4 Y-23.65 I+0 J+0.95 +G01 Y-16.35 +G02 X+16.35 Y-15.4 I+0.95 J+0 +G01 X+23.65 +G02 X+24.6 Y-16.35 I+0 J-0.95 +G01 Y-19.949 +G01 X+24.526 Y-20.023 +G01 X+24.373 +G01 X+24.3 Y-20.096 +G01 Y-23.35 +G02 X+23.35 Y-24.3 I-0.95 J+0 +G01 X+16.65 +G02 X+15.7 Y-23.35 I+0 J+0.95 +G01 Y-16.65 +G02 X+16.65 Y-15.7 I+0.95 J+0 +G01 X+23.35 +G02 X+24.3 Y-16.65 I+0 J-0.95 +G01 Y-19.949 +G01 X+24.226 Y-20.023 +G01 X+24.073 +G01 X+24 Y-20.096 +G01 Y-23.05 +G02 X+23.05 Y-24 I-0.95 J+0 +G01 X+16.95 +G02 X+16 Y-23.05 I+0 J+0.95 +G01 Y-16.95 +G02 X+16.95 Y-16 I+0.95 J+0 +G01 X+23.05 +G02 X+24 Y-16.95 I+0 J-0.95 +G01 Y-19.949 +G01 X+23.926 Y-20.023 +G01 X+23.773 +G01 X+23.7 Y-20.096 +G01 Y-22.75 +G02 X+22.75 Y-23.7 I-0.95 J+0 +G01 X+17.25 +G02 X+16.3 Y-22.75 I+0 J+0.95 +G01 Y-17.25 +G02 X+17.25 Y-16.3 I+0.95 J+0 +G01 X+22.75 +G02 X+23.7 Y-17.25 I+0 J-0.95 +G01 Y-19.949 +G01 X+23.626 Y-20.023 +G01 X+23.473 +G01 X+23.4 Y-20.096 +G01 Y-22.45 +G02 X+22.45 Y-23.4 I-0.95 J+0 +G01 X+17.55 +G02 X+16.6 Y-22.45 I+0 J+0.95 +G01 Y-17.55 +G02 X+17.55 Y-16.6 I+0.95 J+0 +G01 X+22.45 +G02 X+23.4 Y-17.55 I+0 J-0.95 +G01 Y-19.949 +G01 X+23.326 Y-20.023 +G01 X+23.173 +G01 X+23.1 Y-20.096 +G01 Y-22.15 +G02 X+22.15 Y-23.1 I-0.95 J+0 +G01 X+17.85 +G02 X+16.9 Y-22.15 I+0 J+0.95 +G01 Y-17.85 +G02 X+17.85 Y-16.9 I+0.95 J+0 +G01 X+22.15 +G02 X+23.1 Y-17.85 I+0 J-0.95 +G01 Y-19.949 +G01 X+22.789 Y-21.994 +G02 X+21.85 Y-22.8 I-0.939 J+0.144 +G01 X+18.15 +G02 X+17.2 Y-21.85 I+0 J+0.95 +G01 Y-18.15 +G02 X+18.15 Y-17.2 I+0.95 J+0 +G01 X+21.85 +G02 X+22.8 Y-18.15 I+0 J-0.95 +G01 Y-19.949 +G01 X+22.485 Y-21.717 +G02 X+21.55 Y-22.5 I-0.935 J+0.167 +G01 X+18.45 +G02 X+17.5 Y-21.55 I+0 J+0.95 +G01 Y-18.45 +G02 X+18.45 Y-17.5 I+0.95 J+0 +G01 X+21.55 +G02 X+22.5 Y-18.45 I+0 J-0.95 +G01 Y-19.949 +G01 X+22.178 Y-21.451 +G02 X+21.25 Y-22.2 I-0.928 J+0.201 +G01 X+18.75 +G02 X+17.8 Y-21.25 I+0 J+0.95 +G01 Y-18.75 +G02 X+18.75 Y-17.8 I+0.95 J+0 +G01 X+21.25 +G02 X+22.2 Y-18.75 I+0 J-0.95 +G01 Y-19.949 +G01 X+21.867 Y-21.198 +G02 X+20.95 Y-21.9 I-0.917 J+0.248 +G01 X+19.05 +G02 X+18.1 Y-20.95 I+0 J+0.95 +G01 Y-19.05 +G02 X+19.05 Y-18.1 I+0.95 J+0 +G01 X+20.95 +G02 X+21.9 Y-19.05 I+0 J-0.95 +G01 Y-19.949 +G01 X+21.545 Y-20.969 +G02 X+20.65 Y-21.6 I-0.895 J+0.319 +G01 X+19.35 +G02 X+18.4 Y-20.65 I+0 J+0.95 +G01 Y-19.35 +G02 X+19.35 Y-18.4 I+0.95 J+0 +G01 X+20.65 +G02 X+21.6 Y-19.35 I+0 J-0.95 +G01 Y-19.949 +G02 X+21.386 Y-20.635 I-1.204 J+0 +G01 X+20.894 Y-21.129 +G01 X+20.35 Y-21.3 +G01 X+19.65 +G02 X+18.7 Y-20.35 I+0 J+0.95 +G01 Y-19.65 +G02 X+19.65 Y-18.7 I+0.95 J+0 +G01 X+20.35 +G02 X+21.3 Y-19.65 I+0 J-0.95 +G01 Y-19.949 +G02 X+20.934 Y-20.668 I-0.89 J+0 +G01 X+20.268 Y-20.975 +G01 X+19.95 Y-21 +G02 X+19 Y-20.05 I+0 J+0.95 +G01 Y-19.95 +G02 X+19.95 Y-19 I+0.95 J+0 +G01 X+20.05 +G02 X+21 Y-19.95 I+0 J-0.95 +G01 X+20.957 Y-20.055 +G01 X+20.513 Y-20.506 +G02 X+20.05 Y-20.7 I-0.463 J+0.456 +G01 X+19.95 +G02 X+19.3 Y-20.05 I+0 J+0.65 +G01 Y-19.95 +G02 X+19.95 Y-19.3 I+0.65 J+0 +G01 X+20.05 +G02 X+20.7 Y-19.95 I+0 J-0.65 +G01 X+20.635 Y-20.073 +G01 X+20.248 Y-20.338 +G01 X+19.95 Y-20.4 +G02 X+19.6 Y-20.05 I+0 J+0.35 +G01 Y-19.95 +G02 X+19.95 Y-19.6 I+0.35 J+0 +G01 X+20.05 +G02 X+20.4 Y-19.95 I+0 J-0.35 +G01 X+20.248 Y-20.338 +G01 Z+1.55 F10000 +(#HSC OFF) +(#TRAFO OFF) +; - EB carre 45deg +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G00 X-0.331 Y+1.969 Z+4.01 +G00 Z-0.99 +G01 X+0 Y+1.95 F10000 +G01 X+40.391 Y+1.904 F12000 +G01 X+41.091 Y+1.609 +G01 X+41.624 Y+1.069 +G01 X+41.913 Y+0.359 +G01 X+41.949 Y+0.007 +G01 X+41.904 Y-40.391 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-1.091 Y-41.609 +G01 X-1.624 Y-41.069 +G01 X-1.913 Y-40.359 +G01 X-1.949 Y-40.007 +G01 X-1.904 Y+0.391 +G01 X-1.876 Y+0.487 +G01 X-1.806 Y+0.708 +G01 X-1.437 Y+1.298 +G01 X-1.035 Y+1.638 +G01 X-0.712 Y+1.803 +G01 X-0.235 Y+1.923 +G01 X+0 Y+1.939 +G01 X+40 Y+1.891 +G01 X+40.102 Y+1.886 +G01 X+40.533 Y+1.811 +G01 X+40.803 Y+1.709 +G01 X+41.106 Y+1.53 +G01 X+41.31 Y+1.359 +G01 X+41.561 Y+1.06 +G01 X+41.752 Y+0.7 +G01 X+41.826 Y+0.476 +G01 X+41.887 Y-0.556 +G01 X+41.879 Y-28.025 +G01 X+41.839 Y-40 +G01 X+41.828 Y-40.187 +G01 X+41.606 Y-40.887 +G01 X+41.537 Y-41.007 +G01 X+41.035 Y-41.513 +G01 X+40.699 Y-41.697 +G01 X+40.445 Y-41.78 +G01 X+39.321 Y-41.835 +G01 X+15 Y-41.865 +G01 X+0.185 Y-41.788 +G01 X-0.38 Y-41.744 +G01 X-0.595 Y-41.684 +G01 X-1.238 Y-41.278 +G01 X-1.581 Y-40.817 +G01 X-1.782 Y-39.579 +G01 X-1.835 Y-25.9 +G01 X-1.837 Y-15.247 +G01 X-1.744 Y-6.539 +G01 X-1.734 Y-0.009 +G01 X-1.69 Y+0.377 +G01 X-1.613 Y+0.63 +G01 X-1.284 Y+1.157 +G01 X-0.925 Y+1.461 +G01 X-0.637 Y+1.608 +G01 X-0.211 Y+1.716 +G01 X+0 Y+1.73 +G01 X+10.976 Y+1.764 +G01 X+22.407 Y+1.829 +G01 X+36.728 Y+1.673 +G01 X+40 Y+1.668 +G01 X+40.468 Y+1.598 +G01 X+40.707 Y+1.509 +G01 X+40.974 Y+1.351 +G01 X+41.155 Y+1.2 +G01 X+41.373 Y+0.94 +G01 X+41.604 Y+0.43 +G01 X+41.663 Y-0.679 +G01 X+41.698 Y-9.851 +G01 X+41.806 Y-21.42 +G01 X+41.609 Y-35.988 +G01 X+41.603 Y-40 +G01 X+41.593 Y-40.157 +G01 X+41.342 Y-40.859 +G01 X+40.904 Y-41.316 +G01 X+40.611 Y-41.477 +G01 X+40.391 Y-41.55 +G01 X+39.074 Y-41.598 +G01 X+30.926 Y-41.63 +G01 X+19.198 Y-41.78 +G01 X+4.383 Y-41.544 +G01 X+0.185 Y-41.537 +G01 X-0.324 Y-41.5 +G01 X-0.508 Y-41.448 +G01 X-1.061 Y-41.101 +G01 X-1.356 Y-40.707 +G01 X-1.531 Y-39.578 +G01 X-1.563 Y-31.42 +G01 X-1.753 Y-19.691 +G01 X-1.482 Y-6.539 +G01 X-1.471 Y-0.009 +G01 X-1.435 Y+0.318 +G01 X-1.369 Y+0.532 +G01 X-1.091 Y+0.978 +G01 X-0.787 Y+1.238 +G01 X-0.543 Y+1.363 +G01 X-0.181 Y+1.456 +G01 X+0 Y+1.468 +G01 X+8.226 Y+1.496 +G01 X+19.938 Y+1.724 +G01 X+28.15 Y+1.56 +G01 X+35 Y+1.414 +G01 X+40 Y+1.406 +G01 X+40.392 Y+1.347 +G01 X+40.594 Y+1.272 +G01 X+40.819 Y+1.139 +G01 X+40.971 Y+1.013 +G01 X+41.155 Y+0.795 +G01 X+41.35 Y+0.367 +G01 X+41.401 Y-0.926 +G01 X+41.432 Y-8.086 +G01 X+41.695 Y-19.691 +G01 X+41.569 Y-26.235 +G01 X+41.348 Y-34.753 +G01 X+41.34 Y-40 +G01 X+41.333 Y-40.128 +G01 X+41.124 Y-40.713 +G01 X+40.758 Y-41.098 +G01 X+40.513 Y-41.234 +G01 X+40.331 Y-41.295 +G01 X+38.457 Y-41.335 +G01 X+32.16 Y-41.365 +G01 X+20.556 Y-41.666 +G01 X+14.753 Y-41.559 +G01 X+5.37 Y-41.283 +G01 X+0.185 Y-41.275 +G01 X-0.265 Y-41.244 +G01 X-0.418 Y-41.202 +G01 X-0.876 Y-40.916 +G01 X-1.12 Y-40.592 +G01 X-1.27 Y-39.577 +G01 X-1.295 Y-32.407 +G01 X-1.636 Y-20.802 +G01 X-1.546 Y-15.494 +G01 X-1.219 Y-6.539 +G01 X-1.209 Y-0.009 +G01 X-1.179 Y+0.259 +G01 X-1.126 Y+0.434 +G01 X-0.899 Y+0.8 +G01 X-0.649 Y+1.015 +G01 X-0.453 Y+1.117 +G01 X-0.013 Y+1.204 +G01 X+7.476 Y+1.229 +G01 X+19.074 Y+1.606 +G01 X+24.151 Y+1.523 +G01 X+34.383 Y+1.152 +G01 X+40 Y+1.143 +G01 X+40.316 Y+1.096 +G01 X+40.476 Y+1.037 +G01 X+40.782 Y+0.828 +G01 X+40.937 Y+0.649 +G01 X+41.095 Y+0.305 +G01 X+41.138 Y-2.037 +G01 X+41.171 Y-7.593 +G01 X+41.576 Y-19.074 +G01 X+41.499 Y-23.889 +G01 X+41.087 Y-34.259 +G01 X+41.078 Y-40 +G01 X+41.063 Y-40.142 +G01 X+40.906 Y-40.568 +G01 X+40.617 Y-40.875 +G01 X+40.277 Y-41.034 +G01 X+32.407 Y-41.109 +G01 X+21.173 Y-41.544 +G01 X+16.481 Y-41.479 +G01 X+5.741 Y-41.021 +G01 X-0.202 Y-40.987 +G01 X-0.328 Y-40.956 +G01 X-0.69 Y-40.73 +G01 X-0.884 Y-40.478 +G01 X-1.008 Y-39.452 +G01 X-1.036 Y-32.654 +G01 X-1.513 Y-21.296 +G01 X-1.451 Y-16.605 +G01 X-0.957 Y-6.539 +G01 X-0.946 Y-0.014 +G01 X-0.883 Y+0.326 +G01 X-0.707 Y+0.622 +G01 X-0.511 Y+0.793 +G01 X-0.358 Y+0.873 +G01 X-0.013 Y+0.942 +G01 X+7.226 Y+0.967 +G01 X+18.58 Y+1.482 +G01 X+23.025 Y+1.433 +G01 X+34.136 Y+0.89 +G01 X+40 Y+0.881 +G01 X+40.353 Y+0.801 +G01 X+40.598 Y+0.641 +G01 X+40.719 Y+0.504 +G01 X+40.841 Y+0.242 +G01 X+40.91 Y-7.346 +G01 X+41.454 Y-18.704 +G01 X+41.405 Y-22.901 +G01 X+40.825 Y-34.136 +G01 X+40.815 Y-40 +G01 X+40.802 Y-40.112 +G01 X+40.688 Y-40.422 +G01 X+40.472 Y-40.657 +G01 X+40.217 Y-40.779 +G01 X+32.654 Y-40.847 +G01 X+21.543 Y-41.42 +G01 X+17.346 Y-41.383 +G01 X+5.864 Y-40.759 +G01 X-0.209 Y-40.706 +G01 X-0.505 Y-40.545 +G01 X-0.648 Y-40.364 +G01 X-0.747 Y-39.444 +G01 X-0.77 Y-32.901 +G01 X-1.387 Y-21.667 +G01 X-1.361 Y-17.593 +G01 X-0.694 Y-6.539 +G01 X-0.684 Y-0.014 +G01 X-0.639 Y+0.228 +G01 X-0.518 Y+0.438 +G01 X-0.271 Y+0.62 +G01 X-0.013 Y+0.68 +G01 X+7.226 Y+0.714 +G01 X+18.333 Y+1.357 +G01 X+22.407 Y+1.33 +G01 X+34.012 Y+0.628 +G01 X+39.983 Y+0.618 +G01 X+40.23 Y+0.566 +G01 X+40.489 Y+0.365 +G01 X+40.586 Y+0.178 +G01 X+40.643 Y-7.099 +G01 X+41.324 Y-18.21 +G01 X+41.313 Y-22.037 +G01 X+40.562 Y-34.012 +G01 X+40.553 Y-40 +G01 X+40.471 Y-40.276 +G01 X+40.326 Y-40.439 +G01 X+40.156 Y-40.525 +G01 X+32.901 Y-40.579 +G01 X+21.79 Y-41.294 +G01 X+17.963 Y-41.283 +G01 X+5.988 Y-40.497 +G01 X-0.124 Y-40.457 +G01 X-0.32 Y-40.36 +G01 X-0.411 Y-40.25 +G01 X-0.485 Y-39.198 +G01 X-0.515 Y-32.901 +G01 X-1.264 Y-21.79 +G01 X-1.252 Y-17.963 +G01 X-0.432 Y-6.539 +G01 X-0.422 Y-0.028 +G01 X-0.326 Y+0.243 +G01 X-0.177 Y+0.375 +G01 X-0.013 Y+0.419 +G01 X+6.976 Y+0.443 +G01 X+18.21 Y+1.234 +G01 X+21.79 Y+1.231 +G01 X+27.4 Y+0.842 +G01 X+33.889 Y+0.366 +G01 X+39.964 Y+0.356 +G01 X+40.226 Y+0.241 +G01 X+40.304 Y+0.144 +G01 X+40.351 Y-0.044 +G01 X+40.388 Y-7.099 +G01 X+41.204 Y-18.21 +G01 X+41.201 Y-21.79 +G01 X+40.826 Y-27.025 +G01 X+40.3 Y-33.889 +G01 X+40.29 Y-39.964 +G01 X+40.2 Y-40.178 +G01 X+40.113 Y-40.253 +G01 X+39.976 Y-40.29 +G01 X+32.901 Y-40.324 +G01 X+22.037 Y-41.164 +G01 X+18.58 Y-41.183 +G01 X+14.753 Y-40.931 +G01 X+6.111 Y-40.235 +G01 X-0.034 Y-40.211 +G01 X-0.133 Y-40.175 +G01 X-0.202 Y-40.05 +G01 X-0.26 Y-32.901 +G01 X-1.133 Y-22.037 +G01 X-1.157 Y-18.704 +G01 X-0.913 Y-15 +G01 X-0.17 Y-6.539 +G01 X-0.163 Y-0.057 +G01 X-0.125 Y+0.042 +G01 X+0.047 Y+0.162 +G01 X+6.976 Y+0.194 +G01 X+17.963 Y+1.109 +G01 X+21.296 Y+1.135 +G01 X+24.901 Y+0.894 +G01 X+33.889 Y+0.127 +G01 X+39.938 Y+0.121 +G01 X+40.044 Y+0.077 +G01 X+40.121 Y-0.062 +G01 X+40.163 Y-7.099 +G01 X+41.084 Y-17.84 +G01 X+41.12 Y-21.173 +G01 X+40.883 Y-24.753 +G01 X+40.085 Y-33.889 +G01 X+40.079 Y-39.929 +G01 X+39.93 Y-40.079 +G01 X+32.901 Y-40.122 +G01 X+22.16 Y-41.064 +G01 X+18.827 Y-41.101 +G01 X+15.494 Y-40.882 +G01 X+6.111 Y-40.043 +G01 X+0.123 Y-40.026 +G01 X-0.027 Y-39.877 +G01 X-0.081 Y-32.901 +G01 X-1.044 Y-22.16 +G01 X-1.082 Y-18.827 +G01 X-0.858 Y-15.494 +G01 X-0.002 Y-6.546 +G01 X+0.006 Y-0.247 +G01 X+0.05 Y-0.141 +G01 X+0.142 Y-0.05 +G01 X+0.247 Y-0.006 +G01 X+6.976 Y+0.028 +G01 X+17.84 Y+1.023 +G01 X+21.173 Y+1.062 +G01 X+24.401 Y+0.842 +G01 X+33.882 Y-0.046 +G01 X+39.798 Y-0.061 +G01 X+39.948 Y-0.21 +G01 X+39.994 Y-7.099 +G01 X+41.002 Y-17.84 +G01 X+41.041 Y-21.173 +G01 X+40.806 Y-24.506 +G01 X+39.908 Y-33.882 +G01 X+39.9 Y-39.751 +G01 X+39.751 Y-39.9 +G01 X+32.908 Y-39.948 +G01 X+22.16 Y-40.98 +G01 X+19.074 Y-41.026 +G01 X+15.988 Y-40.83 +G01 X+6.118 Y-39.861 +G01 X+0.296 Y-39.853 +G01 X+0.146 Y-39.704 +G01 X+0.123 Y-33.156 +G01 X-0.958 Y-22.16 +G01 X-1.006 Y-19.074 +G01 X-0.805 Y-15.988 +G01 X+0.186 Y-6.547 +G01 X+0.196 Y-0.371 +G01 X+0.24 Y-0.265 +G01 X+0.37 Y-0.195 +G01 X+6.969 Y-0.16 +G01 X+17.716 Y+0.924 +G01 X+20.802 Y+0.984 +G01 X+23.889 Y+0.787 +G01 X+33.758 Y-0.247 +G01 X+39.594 Y-0.257 +G01 X+39.744 Y-0.406 +G01 X+39.767 Y-6.844 +G01 X+40.903 Y-17.84 +G01 X+40.957 Y-20.802 +G01 X+40.754 Y-23.889 +G01 X+39.692 Y-33.758 +G01 X+39.682 Y-39.506 +G01 X+39.639 Y-39.612 +G01 X+39.506 Y-39.683 +G01 X+33.156 Y-39.707 +G01 X+22.167 Y-40.874 +G01 X+19.198 Y-40.93 +G01 X+16.111 Y-40.722 +G01 X+6.243 Y-39.631 +G01 X+0.528 Y-39.622 +G01 X+0.378 Y-39.472 +G01 X+0.353 Y-33.156 +G01 X-0.845 Y-22.167 +G01 X-0.902 Y-19.204 +G01 X-0.69 Y-16.111 +G01 X+0.429 Y-6.548 +G01 X+0.439 Y-0.618 +G01 X+0.483 Y-0.512 +G01 X+0.617 Y-0.439 +G01 X+6.969 Y-0.398 +G01 X+17.709 Y+0.809 +G01 X+20.679 Y+0.878 +G01 X+23.519 Y+0.698 +G01 X+33.757 Y-0.49 +G01 X+39.351 Y-0.5 +G01 X+39.5 Y-0.649 +G01 X+39.528 Y-6.843 +G01 X+40.772 Y-17.593 +G01 X+40.856 Y-20.425 +G01 X+40.68 Y-23.395 +G01 X+39.449 Y-33.757 +G01 X+39.439 Y-39.259 +G01 X+39.395 Y-39.365 +G01 X+39.259 Y-39.439 +G01 X+33.407 Y-39.437 +G01 X+22.414 Y-40.742 +G01 X+19.575 Y-40.829 +G01 X+16.605 Y-40.649 +G01 X+6.243 Y-39.388 +G01 X+0.772 Y-39.378 +G01 X+0.622 Y-39.228 +G01 X+0.623 Y-33.408 +G01 X-0.713 Y-22.414 +G01 X-0.802 Y-19.575 +G01 X-0.618 Y-16.605 +G01 X+0.672 Y-6.548 +G01 X+0.682 Y-0.864 +G01 X+0.726 Y-0.759 +G01 X+0.864 Y-0.682 +G01 X+6.719 Y-0.667 +G01 X+17.586 Y+0.685 +G01 X+20.425 Y+0.775 +G01 X+23.148 Y+0.614 +G01 X+33.756 Y-0.734 +G01 X+39.107 Y-0.743 +G01 X+39.257 Y-0.893 +G01 X+39.256 Y-6.592 +G01 X+40.656 Y-17.586 +G01 X+40.75 Y-20.302 +G01 X+40.596 Y-23.025 +G01 X+39.205 Y-33.756 +G01 X+39.196 Y-39.012 +G01 X+39.152 Y-39.118 +G01 X+39.012 Y-39.196 +G01 X+33.408 Y-39.195 +G01 X+22.414 Y-40.627 +G01 X+19.698 Y-40.723 +G01 X+16.975 Y-40.566 +G01 X+6.244 Y-39.145 +G01 X+1.015 Y-39.135 +G01 X+0.865 Y-38.985 +G01 X+0.866 Y-33.408 +G01 X-0.587 Y-22.538 +G01 X-0.696 Y-19.699 +G01 X-0.536 Y-16.975 +G01 X+0.916 Y-6.549 +G01 X+0.926 Y-1.111 +G01 X+0.97 Y-1.006 +G01 X+1.111 Y-0.926 +G01 X+6.718 Y-0.908 +G01 X+17.462 Y+0.558 +G01 X+20.301 Y+0.669 +G01 X+22.901 Y+0.519 +G01 X+33.755 Y-0.977 +G01 X+38.864 Y-0.987 +G01 X+39.013 Y-1.137 +G01 X+39.014 Y-6.591 +G01 X+40.529 Y-17.462 +G01 X+40.644 Y-20.055 +G01 X+40.514 Y-22.648 +G01 X+38.962 Y-33.755 +G01 X+38.952 Y-38.765 +G01 X+38.909 Y-38.871 +G01 X+38.765 Y-38.952 +G01 X+33.409 Y-38.953 +G01 X+22.538 Y-40.5 +G01 X+19.946 Y-40.618 +G01 X+17.352 Y-40.485 +G01 X+6.245 Y-38.901 +G01 X+1.258 Y-38.892 +G01 X+1.109 Y-38.742 +G01 X+1.108 Y-33.409 +G01 X-0.47 Y-22.538 +G01 X-0.591 Y-19.946 +G01 X-0.456 Y-17.353 +G01 X+1.159 Y-6.55 +G01 X+1.169 Y-1.358 +G01 X+1.213 Y-1.252 +G01 X+1.358 Y-1.169 +G01 X+6.718 Y-1.149 +G01 X+17.462 Y+0.441 +G01 X+20.054 Y+0.564 +G01 X+22.647 Y+0.426 +G01 X+33.755 Y-1.221 +G01 X+38.62 Y-1.23 +G01 X+38.77 Y-1.38 +G01 X+38.771 Y-6.59 +G01 X+40.412 Y-17.462 +G01 X+40.537 Y-19.931 +G01 X+40.422 Y-22.4 +G01 X+39.865 Y-26.235 +G01 X+38.719 Y-33.754 +G01 X+38.704 Y-38.56 +G01 X+38.554 Y-38.709 +G01 X+33.41 Y-38.711 +G01 X+22.538 Y-40.383 +G01 X+20.069 Y-40.511 +G01 X+17.6 Y-40.393 +G01 X+13.765 Y-39.826 +G01 X+6.246 Y-38.658 +G01 X+1.502 Y-38.648 +G01 X+1.352 Y-38.498 +G01 X+1.35 Y-33.41 +G01 X-0.354 Y-22.539 +G01 X-0.484 Y-20.069 +G01 X-0.364 Y-17.6 +G01 X+0.173 Y-14.012 +G01 X+1.402 Y-6.551 +G01 X+1.419 Y-1.562 +G01 X+1.57 Y-1.413 +G01 X+6.527 Y-1.42 +G01 X+17.338 Y+0.311 +G01 X+19.93 Y+0.457 +G01 X+22.4 Y+0.335 +G01 X+25.9 Y-0.197 +G01 X+33.754 Y-1.464 +G01 X+38.377 Y-1.473 +G01 X+38.527 Y-1.623 +G01 X+38.529 Y-6.589 +G01 X+40.282 Y-17.338 +G01 X+40.43 Y-19.93 +G01 X+40.306 Y-22.4 +G01 X+39.791 Y-25.741 +G01 X+38.475 Y-33.754 +G01 X+38.457 Y-38.316 +G01 X+38.307 Y-38.466 +G01 X+33.411 Y-38.468 +G01 X+22.662 Y-40.252 +G01 X+20.07 Y-40.403 +G01 X+17.6 Y-40.277 +G01 X+14.259 Y-39.753 +G01 X+6.552 Y-38.415 +G01 X+1.745 Y-38.405 +G01 X+1.595 Y-38.255 +G01 X+1.592 Y-33.411 +G01 X-0.223 Y-22.662 +G01 X-0.375 Y-20.316 +G01 X-0.285 Y-17.971 +G01 X+0.067 Y-15.494 +G01 X+1.646 Y-6.552 +G01 X+1.666 Y-1.805 +G01 X+1.816 Y-1.656 +G01 X+6.526 Y-1.663 +G01 X+17.338 Y+0.194 +G01 X+19.684 Y+0.348 +G01 X+22.029 Y+0.256 +G01 X+24.651 Y-0.128 +G01 X+33.448 Y-1.707 +G01 X+38.134 Y-1.717 +G01 X+38.283 Y-1.866 +G01 X+38.287 Y-6.589 +G01 X+40.164 Y-17.338 +G01 X+40.321 Y-19.683 +G01 X+40.228 Y-22.029 +G01 X+39.864 Y-24.506 +G01 X+38.232 Y-33.629 +G01 X+38.211 Y-38.073 +G01 X+38.061 Y-38.223 +G01 X+33.412 Y-38.226 +G01 X+22.662 Y-40.135 +G01 X+20.317 Y-40.294 +G01 X+17.971 Y-40.2 +G01 X+15.494 Y-39.83 +G01 X+6.553 Y-38.172 +G01 X+1.988 Y-38.162 +G01 X+1.838 Y-38.012 +G01 X+1.835 Y-33.412 +G01 X-0.105 Y-22.662 +G01 X-0.268 Y-20.317 +G01 X-0.171 Y-17.971 +G01 X+0.205 Y-15.494 +G01 X+1.889 Y-6.553 +G01 X+1.913 Y-2.049 +G01 X+2.063 Y-1.899 +G01 X+6.525 Y-1.906 +G01 X+17.337 Y+0.076 +G01 X+19.683 Y+0.241 +G01 X+22.029 Y+0.143 +G01 X+24.401 Y-0.219 +G01 X+33.447 Y-1.95 +G01 X+37.89 Y-1.96 +G01 X+38.04 Y-2.11 +G01 X+38.044 Y-6.588 +G01 X+40.046 Y-17.337 +G01 X+40.214 Y-19.683 +G01 X+40.115 Y-22.029 +G01 X+39.727 Y-24.506 +G01 X+37.989 Y-33.628 +G01 X+37.964 Y-37.83 +G01 X+37.814 Y-37.979 +G01 X+33.412 Y-37.984 +G01 X+22.663 Y-40.017 +G01 X+20.44 Y-40.185 +G01 X+18.218 Y-40.11 +G01 X+15.988 Y-39.79 +G01 X+6.553 Y-37.928 +G01 X+2.231 Y-37.918 +G01 X+2.082 Y-37.769 +G01 X+2.077 Y-33.413 +G01 X+0.012 Y-22.663 +G01 X-0.158 Y-20.44 +G01 X-0.082 Y-18.218 +G01 X+0.243 Y-15.988 +G01 X+2.132 Y-6.553 +G01 X+2.16 Y-2.292 +G01 X+2.31 Y-2.143 +G01 X+6.524 Y-2.149 +G01 X+17.337 Y-0.042 +G01 X+19.559 Y+0.131 +G01 X+21.781 Y+0.054 +G01 X+24.151 Y-0.304 +G01 X+33.446 Y-2.193 +G01 X+37.647 Y-2.203 +G01 X+37.797 Y-2.353 +G01 X+37.802 Y-6.587 +G01 X+39.929 Y-17.337 +G01 X+40.105 Y-19.559 +G01 X+40.026 Y-21.782 +G01 X+39.691 Y-24.012 +G01 X+37.746 Y-33.628 +G01 X+37.717 Y-37.587 +G01 X+37.567 Y-37.736 +G01 X+33.413 Y-37.742 +G01 X+22.663 Y-39.899 +G01 X+20.441 Y-40.078 +G01 X+18.219 Y-39.998 +G01 X+15.988 Y-39.659 +G01 X+6.554 Y-37.685 +G01 X+2.475 Y-37.675 +G01 X+2.325 Y-37.525 +G01 X+2.319 Y-33.413 +G01 X+0.13 Y-22.663 +G01 X-0.051 Y-20.441 +G01 X+0.03 Y-18.219 +G01 X+0.374 Y-15.988 +G01 X+2.376 Y-6.554 +G01 X+2.406 Y-2.535 +G01 X+2.557 Y-2.386 +G01 X+6.524 Y-2.392 +G01 X+17.337 Y-0.159 +G01 X+19.559 Y+0.024 +G01 X+21.781 Y-0.058 +G01 X+24.151 Y-0.437 +G01 X+33.445 Y-2.436 +G01 X+37.404 Y-2.446 +G01 X+37.554 Y-2.596 +G01 X+37.56 Y-6.586 +G01 X+39.811 Y-17.337 +G01 X+39.997 Y-19.559 +G01 X+39.914 Y-21.781 +G01 X+39.56 Y-24.012 +G01 X+37.502 Y-33.627 +G01 X+37.47 Y-37.344 +G01 X+37.321 Y-37.493 +G01 X+33.414 Y-37.499 +G01 X+22.663 Y-39.782 +G01 X+20.564 Y-39.967 +G01 X+18.465 Y-39.909 +G01 X+16.358 Y-39.606 +G01 X+6.555 Y-37.442 +G01 X+2.718 Y-37.432 +G01 X+2.568 Y-37.282 +G01 X+2.561 Y-33.414 +G01 X+0.248 Y-22.663 +G01 X+0.06 Y-20.564 +G01 X+0.119 Y-18.466 +G01 X+0.426 Y-16.358 +G01 X+2.619 Y-6.555 +G01 X+2.653 Y-2.777 +G01 X+2.803 Y-2.629 +G01 X+6.523 Y-2.634 +G01 X+17.337 Y-0.276 +G01 X+19.436 Y-0.086 +G01 X+21.534 Y-0.145 +G01 X+23.642 Y-0.456 +G01 X+33.445 Y-2.675 +G01 X+37.16 Y-2.684 +G01 X+37.266 Y-2.728 +G01 X+37.316 Y-2.84 +G01 X+37.323 Y-6.585 +G01 X+39.697 Y-17.336 +G01 X+39.89 Y-19.435 +G01 X+39.83 Y-21.534 +G01 X+39.515 Y-23.642 +G01 X+37.268 Y-33.626 +G01 X+37.259 Y-37.11 +G01 X+37.11 Y-37.259 +G01 X+33.415 Y-37.267 +G01 X+22.664 Y-39.67 +G01 X+20.565 Y-39.865 +G01 X+18.466 Y-39.804 +G01 X+16.358 Y-39.486 +G01 X+6.556 Y-37.213 +G01 X+2.963 Y-37.203 +G01 X+2.857 Y-37.159 +G01 X+2.797 Y-37.037 +G01 X+2.789 Y-33.415 +G01 X+0.358 Y-22.664 +G01 X+0.16 Y-20.565 +G01 X+0.221 Y-18.466 +G01 X+0.544 Y-16.358 +G01 X+2.843 Y-6.556 +G01 X+2.852 Y-3.002 +G01 X+3.003 Y-2.853 +G01 X+6.522 Y-2.858 +G01 X+17.336 Y-0.384 +G01 X+19.435 Y-0.184 +G01 X+21.534 Y-0.245 +G01 X+23.642 Y-0.571 +G01 X+33.444 Y-2.895 +G01 X+36.913 Y-2.904 +G01 X+37.019 Y-2.948 +G01 X+37.096 Y-3.087 +G01 X+37.105 Y-6.585 +G01 X+39.592 Y-17.336 +G01 X+39.794 Y-19.435 +G01 X+39.731 Y-21.534 +G01 X+39.402 Y-23.642 +G01 X+37.053 Y-33.625 +G01 X+37.045 Y-36.895 +G01 X+36.895 Y-37.045 +G01 X+33.416 Y-37.054 +G01 X+22.664 Y-39.567 +G01 X+20.565 Y-39.771 +G01 X+18.466 Y-39.708 +G01 X+16.358 Y-39.375 +G01 X+6.556 Y-37.002 +G01 X+3.156 Y-36.976 +G01 X+3.007 Y-36.827 +G01 X+2.997 Y-33.416 +G01 X+0.458 Y-22.664 +G01 X+0.252 Y-20.565 +G01 X+0.305 Y-18.59 +G01 X+0.623 Y-16.488 +G01 X+3.049 Y-6.557 +G01 X+3.058 Y-3.21 +G01 X+3.102 Y-3.104 +G01 X+3.21 Y-3.059 +G01 X+6.521 Y-3.063 +G01 X+17.336 Y-0.483 +G01 X+19.435 Y-0.275 +G01 X+21.534 Y-0.339 +G01 X+23.519 Y-0.651 +G01 X+33.443 Y-3.101 +G01 X+36.741 Y-3.11 +G01 X+36.89 Y-3.259 +G01 X+36.9 Y-6.584 +G01 X+39.449 Y-17.09 +G01 X+39.692 Y-19.188 +G01 X+39.669 Y-21.164 +G01 X+39.401 Y-23.14 +G01 X+36.847 Y-33.625 +G01 X+36.839 Y-36.666 +G01 X+36.795 Y-36.772 +G01 X+36.667 Y-36.839 +G01 X+33.416 Y-36.849 +G01 X+22.91 Y-39.424 +G01 X+20.935 Y-39.663 +G01 X+18.837 Y-39.646 +G01 X+16.86 Y-39.375 +G01 X+6.557 Y-36.796 +G01 X+3.363 Y-36.787 +G01 X+3.213 Y-36.638 +G01 X+3.202 Y-33.416 +G01 X+0.601 Y-22.91 +G01 X+0.36 Y-20.936 +G01 X+0.377 Y-18.837 +G01 X+0.65 Y-16.86 +G01 X+3.255 Y-6.557 +G01 X+3.271 Y-3.415 +G01 X+3.421 Y-3.265 +G01 X+6.52 Y-3.271 +G01 X+17.09 Y-0.629 +G01 X+19.064 Y-0.386 +G01 X+21.163 Y-0.403 +G01 X+23.14 Y-0.679 +G01 X+33.443 Y-3.316 +G01 X+36.525 Y-3.326 +G01 X+36.674 Y-3.475 +G01 X+36.684 Y-6.583 +G01 X+39.341 Y-17.09 +G01 X+39.587 Y-19.064 +G01 X+39.57 Y-21.163 +G01 X+39.29 Y-23.14 +G01 X+36.623 Y-33.5 +G01 X+36.606 Y-36.464 +G01 X+36.456 Y-36.614 +G01 X+33.417 Y-36.624 +G01 X+22.91 Y-39.311 +G01 X+20.936 Y-39.56 +G01 X+18.837 Y-39.543 +G01 X+16.86 Y-39.26 +G01 X+6.558 Y-36.563 +G01 X+3.597 Y-36.552 +G01 X+3.448 Y-36.403 +G01 X+3.437 Y-33.417 +G01 X+0.719 Y-22.91 +G01 X+0.467 Y-20.936 +G01 X+0.485 Y-18.837 +G01 X+0.771 Y-16.86 +G01 X+3.498 Y-6.558 +G01 X+3.518 Y-3.658 +G01 X+3.668 Y-3.509 +G01 X+6.52 Y-3.513 +G01 X+17.089 Y-0.749 +G01 X+19.064 Y-0.494 +G01 X+21.163 Y-0.512 +G01 X+23.14 Y-0.801 +G01 X+33.442 Y-3.559 +G01 X+36.281 Y-3.569 +G01 X+36.431 Y-3.719 +G01 X+36.442 Y-6.582 +G01 X+39.221 Y-17.089 +G01 X+39.479 Y-19.064 +G01 X+39.461 Y-21.162 +G01 X+39.169 Y-23.14 +G01 X+36.38 Y-33.5 +G01 X+36.359 Y-36.221 +G01 X+36.21 Y-36.37 +G01 X+33.418 Y-36.382 +G01 X+22.911 Y-39.191 +G01 X+20.936 Y-39.452 +G01 X+18.838 Y-39.434 +G01 X+16.861 Y-39.138 +G01 X+6.558 Y-36.319 +G01 X+3.841 Y-36.309 +G01 X+3.691 Y-36.16 +G01 X+3.679 Y-33.418 +G01 X+0.839 Y-22.911 +G01 X+0.575 Y-20.936 +G01 X+0.594 Y-18.838 +G01 X+0.892 Y-16.861 +G01 X+3.742 Y-6.558 +G01 X+3.764 Y-3.901 +G01 X+3.915 Y-3.752 +G01 X+6.519 Y-3.756 +G01 X+17.089 Y-0.868 +G01 X+19.064 Y-0.602 +G01 X+20.916 +G01 X+22.892 Y-0.87 +G01 X+27.4 Y-2.097 +G01 X+33.441 Y-3.802 +G01 X+36.038 Y-3.812 +G01 X+36.188 Y-3.962 +G01 X+36.2 Y-6.582 +G01 X+39.102 Y-17.089 +G01 X+39.371 Y-19.064 +G01 Y-20.916 +G01 X+39.1 Y-22.891 +G01 X+37.896 Y-27.275 +G01 X+36.137 Y-33.499 +G01 X+36.112 Y-35.979 +G01 X+35.963 Y-36.127 +G01 X+33.419 Y-36.139 +G01 X+22.911 Y-39.072 +G01 X+20.936 Y-39.344 +G01 X+19.084 Y-39.343 +G01 X+17.109 Y-39.07 +G01 X+12.975 Y-37.925 +G01 X+6.559 Y-36.076 +G01 X+4.084 Y-36.066 +G01 X+3.934 Y-35.917 +G01 X+3.921 Y-33.419 +G01 X+0.958 Y-22.911 +G01 X+0.684 Y-20.936 +G01 Y-19.084 +G01 X+0.959 Y-17.109 +G01 X+2.117 Y-12.975 +G01 X+3.985 Y-6.559 +G01 X+4.011 Y-4.144 +G01 X+4.161 Y-3.995 +G01 X+6.518 Y-3.999 +G01 X+17.089 Y-0.988 +G01 X+19.064 Y-0.711 +G01 X+20.915 +G01 X+22.891 Y-0.989 +G01 X+26.9 Y-2.122 +G01 X+33.44 Y-4.045 +G01 X+35.795 Y-4.056 +G01 X+35.945 Y-4.205 +G01 X+35.958 Y-6.581 +G01 X+38.982 Y-17.089 +G01 X+39.262 Y-19.064 +G01 Y-20.915 +G01 X+38.981 Y-22.891 +G01 X+37.874 Y-26.775 +G01 X+35.893 Y-33.498 +G01 X+35.866 Y-35.736 +G01 X+35.717 Y-35.884 +G01 X+33.419 Y-35.897 +G01 X+22.911 Y-38.952 +G01 X+20.937 Y-39.235 +G01 X+19.085 +G01 X+17.109 Y-38.951 +G01 X+13.225 Y-37.833 +G01 X+6.56 Y-35.833 +G01 X+4.327 Y-35.823 +G01 X+4.177 Y-35.674 +G01 X+4.163 Y-33.42 +G01 X+1.078 Y-22.912 +G01 X+0.792 Y-20.937 +G01 Y-19.085 +G01 X+1.079 Y-17.109 +G01 X+2.132 Y-13.475 +G01 X+4.228 Y-6.56 +G01 X+4.258 Y-4.387 +G01 X+4.408 Y-4.238 +G01 X+6.517 Y-4.242 +G01 X+17.088 Y-1.108 +G01 X+19.063 Y-0.819 +G01 X+20.915 +G01 X+22.891 Y-1.109 +G01 X+26.65 Y-2.211 +G01 X+33.44 Y-4.288 +G01 X+35.552 Y-4.299 +G01 X+35.702 Y-4.448 +G01 X+35.716 Y-6.58 +G01 X+38.862 Y-17.088 +G01 X+39.154 Y-19.063 +G01 Y-20.915 +G01 X+38.861 Y-22.891 +G01 X+37.787 Y-26.525 +G01 X+35.65 Y-33.498 +G01 X+35.619 Y-35.493 +G01 X+35.47 Y-35.641 +G01 X+33.42 Y-35.655 +G01 X+22.912 Y-38.832 +G01 X+20.937 Y-39.127 +G01 X+19.085 +G01 X+17.109 Y-38.831 +G01 X+13.725 Y-37.825 +G01 X+6.561 Y-35.59 +G01 X+4.57 Y-35.579 +G01 X+4.42 Y-35.431 +G01 X+4.405 Y-33.42 +G01 X+1.198 Y-22.912 +G01 X+0.9 Y-20.937 +G01 Y-19.085 +G01 X+1.199 Y-17.109 +G01 X+2.202 Y-13.765 +G01 X+4.471 Y-6.56 +G01 X+4.504 Y-4.629 +G01 X+4.654 Y-4.481 +G01 X+6.516 Y-4.485 +G01 X+17.088 Y-1.228 +G01 X+19.063 Y-0.927 +G01 X+20.915 +G01 X+22.891 Y-1.228 +G01 X+26.15 Y-2.215 +G01 X+33.439 Y-4.532 +G01 X+35.308 Y-4.542 +G01 X+35.414 Y-4.586 +G01 X+35.458 Y-4.691 +G01 X+35.474 Y-6.579 +G01 X+38.742 Y-17.088 +G01 X+39.046 Y-19.063 +G01 Y-20.914 +G01 X+38.742 Y-22.891 +G01 X+37.719 Y-26.235 +G01 X+35.407 Y-33.497 +G01 X+35.373 Y-35.251 +G01 X+35.224 Y-35.398 +G01 X+33.421 Y-35.413 +G01 X+23.035 Y-38.683 +G01 X+21.183 Y-38.998 +G01 X+19.455 Y-39.041 +G01 X+17.727 Y-38.842 +G01 X+15.741 Y-38.318 +G01 X+6.561 Y-35.347 +G01 X+4.815 Y-35.336 +G01 X+4.709 Y-35.292 +G01 X+4.663 Y-35.186 +G01 X+4.648 Y-33.421 +G01 X+1.347 Y-23.034 +G01 X+1.042 Y-21.307 +G01 X+0.981 Y-19.578 +G01 X+1.164 Y-17.85 +G01 X+1.635 Y-15.988 +G01 X+4.714 Y-6.561 +G01 X+4.751 Y-4.872 +G01 X+4.901 Y-4.724 +G01 X+6.515 Y-4.727 +G01 X+16.966 Y-1.376 +G01 X+18.693 Y-1.068 +G01 X+20.421 Y-1.006 +G01 X+22.15 Y-1.191 +G01 X+23.889 Y-1.626 +G01 X+33.438 Y-4.77 +G01 X+35.061 Y-4.78 +G01 X+35.167 Y-4.824 +G01 X+35.22 Y-4.938 +G01 X+35.237 Y-6.579 +G01 X+38.596 Y-16.966 +G01 X+38.906 Y-18.693 +G01 X+38.969 Y-20.421 +G01 X+38.782 Y-22.15 +G01 X+38.344 Y-23.889 +G01 X+35.174 Y-33.496 +G01 X+35.164 Y-35.015 +G01 X+35.015 Y-35.165 +G01 X+33.422 Y-35.181 +G01 X+23.035 Y-38.568 +G01 X+21.307 Y-38.881 +G01 X+19.579 Y-38.944 +G01 X+17.85 Y-38.756 +G01 X+16.111 Y-38.314 +G01 X+6.562 Y-35.118 +G01 X+5.062 Y-35.107 +G01 X+4.956 Y-35.063 +G01 X+4.892 Y-34.939 +G01 X+4.875 Y-33.422 +G01 X+1.46 Y-23.035 +G01 X+1.144 Y-21.307 +G01 X+1.081 Y-19.579 +G01 X+1.27 Y-17.85 +G01 X+1.716 Y-16.111 +G01 X+4.938 Y-6.562 +G01 X+4.948 Y-5.098 +G01 X+5.098 Y-4.949 +G01 X+6.515 Y-4.951 +G01 X+16.965 Y-1.486 +G01 X+18.693 Y-1.168 +G01 X+20.421 Y-1.104 +G01 X+22.15 Y-1.295 +G01 X+23.889 Y-1.744 +G01 X+33.438 Y-4.99 +G01 X+34.815 Y-5 +G01 X+34.92 Y-5.044 +G01 X+35.001 Y-5.184 +G01 X+35.018 Y-6.578 +G01 X+38.488 Y-16.965 +G01 X+38.808 Y-18.693 +G01 X+38.873 Y-20.421 +G01 X+38.681 Y-22.15 +G01 X+38.229 Y-23.889 +G01 X+34.959 Y-33.495 +G01 X+34.949 Y-34.8 +G01 X+34.801 Y-34.95 +G01 X+33.422 Y-34.967 +G01 X+23.035 Y-38.462 +G01 X+21.307 Y-38.785 +G01 X+19.579 Y-38.85 +G01 X+17.85 Y-38.657 +G01 X+16.111 Y-38.201 +G01 X+6.562 Y-34.907 +G01 X+5.249 Y-34.879 +G01 X+5.101 Y-34.731 +G01 X+5.084 Y-33.422 +G01 X+1.563 Y-23.035 +G01 X+1.238 Y-21.307 +G01 X+1.173 Y-19.579 +G01 X+1.368 Y-17.85 +G01 X+1.826 Y-16.111 +G01 X+5.144 Y-6.563 +G01 X+5.154 Y-5.309 +G01 X+5.198 Y-5.203 +G01 X+5.309 Y-5.154 +G01 X+6.514 Y-5.156 +G01 X+16.965 Y-1.589 +G01 X+18.693 Y-1.261 +G01 X+20.421 Y-1.195 +G01 X+22.15 Y-1.392 +G01 X+23.889 Y-1.854 +G01 X+33.437 Y-5.196 +G01 X+34.646 Y-5.206 +G01 X+34.796 Y-5.354 +G01 X+34.814 Y-6.578 +G01 X+38.386 Y-16.965 +G01 X+38.716 Y-18.693 +G01 X+38.782 Y-20.421 +G01 X+38.584 Y-22.149 +G01 X+38.119 Y-23.889 +G01 X+34.753 Y-33.495 +G01 X+34.743 Y-34.568 +G01 X+34.699 Y-34.673 +G01 X+34.569 Y-34.744 +G01 X+33.422 Y-34.762 +G01 X+23.035 Y-38.36 +G01 X+21.307 Y-38.692 +G01 X+19.579 Y-38.759 +G01 X+17.851 Y-38.56 +G01 X+16.111 Y-38.091 +G01 X+6.563 Y-34.702 +G01 X+5.457 Y-34.691 +G01 X+5.308 Y-34.544 +G01 X+5.289 Y-33.423 +G01 X+1.666 Y-23.035 +G01 X+1.331 Y-21.308 +G01 X+1.263 Y-19.58 +G01 X+1.464 Y-17.851 +G01 X+1.936 Y-16.111 +G01 X+5.35 Y-6.563 +G01 X+5.369 Y-5.509 +G01 X+5.519 Y-5.361 +G01 X+6.513 Y-5.362 +G01 X+16.965 Y-1.693 +G01 X+18.692 Y-1.356 +G01 X+20.42 Y-1.288 +G01 X+22.149 Y-1.491 +G01 X+23.889 Y-1.967 +G01 X+33.436 Y-5.411 +G01 X+34.43 Y-5.421 +G01 X+34.58 Y-5.568 +G01 X+34.599 Y-6.577 +G01 X+38.277 Y-16.965 +G01 X+38.617 Y-18.692 +G01 X+38.685 Y-20.42 +G01 X+38.481 Y-22.149 +G01 X+38.001 Y-23.889 +G01 X+34.528 Y-33.495 +G01 X+34.508 Y-34.373 +G01 X+34.361 Y-34.521 +G01 X+33.423 Y-34.538 +G01 X+23.035 Y-38.247 +G01 X+21.308 Y-38.589 +G01 X+19.58 Y-38.658 +G01 X+17.851 Y-38.452 +G01 X+16.111 Y-37.968 +G01 X+6.564 Y-34.468 +G01 X+5.691 Y-34.457 +G01 X+5.542 Y-34.31 +G01 X+5.523 Y-33.423 +G01 X+1.784 Y-23.035 +G01 X+1.438 Y-21.308 +G01 X+1.369 Y-19.58 +G01 X+1.576 Y-17.851 +G01 X+2.064 Y-16.111 +G01 X+5.593 Y-6.563 +G01 X+5.615 Y-5.751 +G01 X+5.765 Y-5.604 +G01 X+6.513 Y-5.605 +G01 X+16.965 Y-1.814 +G01 X+18.692 Y-1.465 +G01 X+20.42 Y-1.395 +G01 X+22.149 Y-1.604 +G01 X+23.889 Y-2.096 +G01 X+33.436 Y-5.654 +G01 X+34.188 Y-5.664 +G01 X+34.337 Y-5.811 +G01 X+34.357 Y-6.577 +G01 X+38.156 Y-16.965 +G01 X+38.507 Y-18.692 +G01 X+38.582 Y-20.297 +G01 X+38.391 Y-22.025 +G01 X+37.871 Y-23.889 +G01 X+34.285 Y-33.495 +G01 X+34.262 Y-34.132 +G01 X+34.116 Y-34.278 +G01 X+33.423 Y-34.296 +G01 X+23.035 Y-38.126 +G01 X+21.308 Y-38.48 +G01 X+19.703 Y-38.555 +G01 X+17.975 Y-38.363 +G01 X+16.111 Y-37.839 +G01 X+6.565 Y-34.225 +G01 X+5.934 Y-34.214 +G01 X+5.784 Y-34.068 +G01 X+5.765 Y-33.423 +G01 X+1.905 Y-23.036 +G01 X+1.548 Y-21.308 +G01 X+1.472 Y-19.703 +G01 X+1.665 Y-17.975 +G01 X+2.194 Y-16.111 +G01 X+5.837 Y-6.563 +G01 X+5.86 Y-5.993 +G01 X+6.01 Y-5.847 +G01 X+6.512 Y-5.848 +G01 X+16.965 Y-1.934 +G01 X+18.569 Y-1.591 +G01 X+20.296 Y-1.499 +G01 X+22.025 Y-1.693 +G01 X+23.883 Y-2.224 +G01 X+33.435 Y-5.897 +G01 X+33.945 Y-5.907 +G01 X+34.095 Y-6.052 +G01 X+34.114 Y-6.577 +G01 X+38.035 Y-16.964 +G01 X+38.398 Y-18.692 +G01 X+38.475 Y-20.297 +G01 X+38.278 Y-22.025 +G01 X+37.834 Y-23.635 +G01 X+34.041 Y-33.495 +G01 X+34.018 Y-33.893 +G01 X+33.874 Y-34.037 +G01 X+33.423 Y-34.054 +G01 X+23.036 Y-38.005 +G01 X+21.308 Y-38.37 +G01 X+19.704 Y-38.448 +G01 X+17.975 Y-38.25 +G01 X+16.365 Y-37.802 +G01 X+6.565 Y-33.982 +G01 X+6.176 Y-33.971 +G01 X+6.026 Y-33.828 +G01 X+6.007 Y-33.423 +G01 X+2.025 Y-23.036 +G01 X+1.657 Y-21.308 +G01 X+1.579 Y-19.704 +G01 X+1.778 Y-17.975 +G01 X+2.229 Y-16.365 +G01 X+6.08 Y-6.562 +G01 X+6.104 Y-6.233 +G01 X+6.254 Y-6.09 +G01 X+6.511 +G01 X+16.965 Y-2.055 +G01 X+18.568 Y-1.701 +G01 X+20.296 Y-1.606 +G01 X+22.025 Y-1.807 +G01 X+23.635 Y-2.261 +G01 X+33.434 Y-6.14 +G01 X+33.703 Y-6.151 +G01 X+33.809 Y-6.194 +G01 X+33.853 Y-6.291 +G01 X+33.872 Y-6.578 +G01 X+37.914 Y-16.964 +G01 X+38.288 Y-18.692 +G01 X+38.368 Y-20.296 +G01 X+38.165 Y-22.025 +G01 X+37.707 Y-23.635 +G01 X+33.797 Y-33.498 +G01 X+33.777 Y-33.66 +G01 X+33.637 Y-33.797 +G01 X+33.422 Y-33.811 +G01 X+23.036 Y-37.884 +G01 X+21.308 Y-38.261 +G01 X+19.704 Y-38.341 +G01 X+17.975 Y-38.137 +G01 X+16.365 Y-37.676 +G01 X+6.566 Y-33.739 +G01 X+6.42 Y-33.728 +G01 X+6.314 Y-33.684 +G01 X+6.267 Y-33.589 +G01 X+6.25 Y-33.419 +G01 X+2.146 Y-23.036 +G01 X+1.767 Y-21.308 +G01 X+1.686 Y-19.704 +G01 X+1.892 Y-17.975 +G01 X+2.356 Y-16.365 +G01 X+6.326 Y-6.558 +G01 X+6.491 Y-6.333 +G01 X+16.964 Y-2.174 +G01 X+18.568 Y-1.81 +G01 X+20.295 Y-1.711 +G01 X+22.025 Y-1.917 +G01 X+23.635 Y-2.385 +G01 X+33.426 Y-6.37 +G01 X+33.626 Y-6.584 +G01 X+37.8 Y-16.964 +G01 X+38.185 Y-18.691 +G01 X+38.267 Y-20.296 +G01 X+38.059 Y-22.025 +G01 X+37.588 Y-23.635 +G01 X+33.549 Y-33.491 +G01 X+33.441 Y-33.58 +G01 X+23.036 Y-37.774 +G01 X+21.309 Y-38.161 +G01 X+19.704 Y-38.244 +G01 X+17.975 Y-38.035 +G01 X+16.366 Y-37.562 +G01 X+6.545 Y-33.485 +G01 X+6.464 Y-33.403 +G01 X+2.251 Y-23.036 +G01 X+1.862 Y-21.309 +G01 X+1.779 Y-19.704 +G01 X+1.989 Y-17.975 +G01 X+2.465 Y-16.366 +G01 X+6.515 Y-6.597 +G01 X+6.597 Y-6.515 +G01 X+16.599 Y-2.394 +G01 X+18.323 Y-1.937 +G01 X+19.926 Y-1.791 +G01 X+21.529 Y-1.913 +G01 X+23.133 Y-2.305 +G01 X+33.387 Y-6.532 +G01 X+33.468 Y-6.613 +G01 X+37.597 Y-16.606 +G01 X+38.053 Y-18.326 +G01 X+38.199 Y-19.926 +G01 X+38.077 Y-21.526 +G01 X+37.685 Y-23.126 +G01 X+33.452 Y-33.37 +G01 X+33.37 Y-33.452 +G01 X+23.386 Y-37.588 +G01 X+21.67 Y-38.043 +G01 X+20.074 Y-38.189 +G01 X+18.478 Y-38.066 +G01 X+16.881 Y-37.676 +G01 X+6.646 Y-33.435 +G01 X+6.565 Y-33.354 +G01 X+2.422 Y-23.379 +G01 X+1.967 Y-21.666 +G01 X+1.821 Y-20.074 +G01 X+1.944 Y-18.481 +G01 X+2.333 Y-16.888 +G01 X+6.582 Y-6.663 +G01 X+6.663 Y-6.582 +G01 X+16.635 Y-2.439 +G01 X+18.341 Y-1.987 +G01 X+19.926 Y-1.843 +G01 X+21.512 Y-1.966 +G01 X+23.095 Y-2.356 +G01 X+33.285 Y-6.635 +G01 X+33.365 Y-6.715 +G01 X+37.531 Y-16.659 +G01 X+37.981 Y-18.352 +G01 X+38.124 Y-19.927 +G01 X+38.002 Y-21.501 +G01 X+37.614 Y-23.073 +G01 X+33.312 Y-33.233 +G01 X+33.233 Y-33.312 +G01 X+23.317 Y-37.502 +G01 X+21.636 Y-37.949 +G01 X+20.073 Y-38.091 +G01 X+18.51 Y-37.969 +G01 X+16.95 Y-37.584 +G01 X+6.82 Y-33.259 +G01 X+6.741 Y-33.18 +G01 X+2.528 Y-23.293 +G01 X+2.084 Y-21.625 +G01 X+1.942 Y-20.072 +G01 X+2.063 Y-18.521 +G01 X+2.446 Y-16.972 +G01 X+6.794 Y-6.872 +G01 X+6.872 Y-6.794 +G01 X+16.731 Y-2.558 +G01 X+18.387 Y-2.116 +G01 X+19.928 Y-1.975 +G01 X+21.469 Y-2.095 +G01 X+23.005 Y-2.476 +G01 X+33.075 Y-6.847 +G01 X+33.153 Y-6.925 +G01 X+37.412 Y-16.755 +G01 X+37.852 Y-18.398 +G01 X+37.992 Y-19.928 +G01 X+37.872 Y-21.458 +G01 X+37.494 Y-22.983 +G01 X+33.1 Y-33.023 +G01 X+33.023 Y-33.1 +G01 X+23.221 Y-37.382 +G01 X+21.59 Y-37.82 +G01 X+20.071 Y-37.959 +G01 X+18.553 Y-37.84 +G01 X+17.04 Y-37.464 +G01 X+7.03 Y-33.047 +G01 X+6.953 Y-32.97 +G01 X+2.648 Y-23.197 +G01 X+2.213 Y-21.578 +G01 X+2.074 Y-20.071 +G01 X+2.192 Y-18.563 +G01 X+2.567 Y-17.062 +G01 X+7.006 Y-7.082 +G01 X+7.082 Y-7.006 +G01 X+16.827 Y-2.678 +G01 X+18.433 Y-2.245 +G01 X+19.93 Y-2.107 +G01 X+21.426 Y-2.225 +G01 X+22.916 Y-2.597 +G01 X+32.865 Y-7.059 +G01 X+32.941 Y-7.135 +G01 X+37.293 Y-16.851 +G01 X+37.723 Y-18.445 +G01 X+37.86 Y-19.93 +G01 X+37.743 Y-21.415 +G01 X+37.373 Y-22.893 +G01 X+32.888 Y-32.813 +G01 X+32.813 Y-32.888 +G01 X+23.125 Y-37.263 +G01 X+21.544 Y-37.69 +G01 X+20.07 Y-37.827 +G01 X+18.596 Y-37.711 +G01 X+17.129 Y-37.343 +G01 X+7.239 Y-32.835 +G01 X+7.165 Y-32.761 +G01 X+3.382 Y-24.512 +G01 X+2.689 Y-22.877 +G01 X+2.322 Y-21.419 +G01 X+2.206 Y-19.957 +G01 X+2.341 Y-18.495 +G01 X+2.766 Y-16.928 +G01 X+7.218 Y-7.292 +G01 X+7.292 Y-7.218 +G01 X+9.599 Y-6.153 +G01 X+16.922 Y-2.797 +G01 X+18.59 Y-2.355 +G01 X+20.043 Y-2.239 +G01 X+21.494 Y-2.373 +G01 X+23.048 Y-2.795 +G01 X+32.656 Y-7.271 +G01 X+32.729 Y-7.344 +G01 X+33.969 Y-10.008 +G01 X+37.173 Y-16.946 +G01 X+37.612 Y-18.601 +G01 X+37.728 Y-20.043 +G01 X+37.595 Y-21.482 +G01 X+37.175 Y-23.024 +G01 X+32.676 Y-32.604 +G01 X+32.604 Y-32.676 +G01 X+28.264 Y-34.714 +G01 X+23.03 Y-37.143 +G01 X+21.388 Y-37.58 +G01 X+19.958 Y-37.695 +G01 X+18.529 Y-37.563 +G01 X+17 Y-37.145 +G01 X+7.449 Y-32.623 +G01 X+7.377 Y-32.551 +G01 X+4.872 Y-27.264 +G01 X+2.887 Y-23.006 +G01 X+2.452 Y-21.377 +G01 X+2.338 Y-19.958 +G01 X+2.47 Y-18.541 +G01 X+2.884 Y-17.025 +G01 X+7.431 Y-7.501 +G01 X+14.089 Y-4.281 +G01 X+17.019 Y-2.916 +G01 X+18.633 Y-2.485 +G01 X+20.041 Y-2.371 +G01 X+21.447 Y-2.502 +G01 X+22.951 Y-2.914 +G01 X+32.446 Y-7.484 +G01 X+35.512 Y-13.767 +G01 X+37.054 Y-17.043 +G01 X+37.483 Y-18.644 +G01 X+37.596 Y-20.041 +G01 X+37.466 Y-21.436 +G01 X+37.056 Y-22.927 +G01 X+32.463 Y-32.394 +G01 X+23.038 Y-36.985 +G01 X+21.558 Y-37.412 +G01 X+20.067 Y-37.563 +G01 X+18.576 Y-37.434 +G01 X+17.098 Y-37.027 +G01 X+7.659 Y-32.41 +G01 X+3.045 Y-23.013 +G01 X+2.62 Y-21.545 +G01 X+2.47 Y-20.067 +G01 X+2.599 Y-18.588 +G01 X+3.003 Y-17.122 +G01 X+7.643 Y-7.711 +G01 X+17.012 Y-3.074 +G01 X+18.467 Y-2.652 +G01 X+19.933 Y-2.503 +G01 X+21.4 Y-2.631 +G01 X+22.854 Y-3.032 +G01 X+32.236 Y-7.696 +G01 X+36.896 Y-17.037 +G01 X+37.316 Y-18.479 +G01 X+37.464 Y-19.934 +G01 X+37.337 Y-21.389 +G01 X+36.938 Y-22.829 +G01 X+32.251 Y-32.184 +G01 X+24.878 Y-35.923 +G01 X+22.837 Y-36.905 +G01 X+21.405 Y-37.303 +G01 X+19.963 Y-37.431 +G01 X+18.52 Y-37.285 +G01 X+17.093 Y-36.87 +G01 X+7.868 Y-32.198 +G01 X+3.99 Y-24.61 +G01 X+3.125 Y-22.812 +G01 X+2.729 Y-21.394 +G01 X+2.602 Y-19.963 +G01 X+2.747 Y-18.533 +G01 X+3.16 Y-17.118 +G01 X+7.855 Y-7.921 +G01 X+15.565 Y-3.949 +G01 X+17.212 Y-3.155 +G01 X+18.618 Y-2.761 +G01 X+20.036 Y-2.635 +G01 X+21.455 Y-2.779 +G01 X+22.857 Y-3.189 +G01 X+32.027 Y-7.908 +G01 X+35.945 Y-15.454 +G01 X+36.815 Y-17.236 +G01 X+37.206 Y-18.629 +G01 X+37.332 Y-20.036 +G01 X+37.189 Y-21.443 +G01 X+36.782 Y-22.831 +G01 X+32.038 Y-31.974 +G01 X+24.282 Y-36.034 +G01 X+22.74 Y-36.786 +G01 X+21.359 Y-37.174 +G01 X+19.964 Y-37.299 +G01 X+18.57 Y-37.157 +G01 X+17.194 Y-36.752 +G01 X+8.078 Y-31.985 +G01 X+3.997 Y-24.25 +G01 X+3.244 Y-22.716 +G01 X+2.858 Y-21.348 +G01 X+2.734 Y-19.965 +G01 X+2.875 Y-18.582 +G01 X+3.277 Y-17.219 +G01 X+8.068 Y-8.13 +G01 X+15.921 Y-3.955 +G01 X+17.308 Y-3.274 +G01 X+18.664 Y-2.89 +G01 X+20.035 Y-2.767 +G01 X+21.405 Y-2.908 +G01 X+22.756 Y-3.307 +G01 X+31.817 Y-8.121 +G01 X+35.939 Y-15.813 +G01 X+36.696 Y-17.332 +G01 X+37.077 Y-18.675 +G01 X+37.2 Y-20.034 +G01 X+37.06 Y-21.393 +G01 X+36.664 Y-22.731 +G01 X+31.826 Y-31.765 +G01 X+23.926 Y-36.032 +G01 X+22.644 Y-36.667 +G01 X+21.313 Y-37.045 +G01 X+19.966 Y-37.167 +G01 X+18.62 Y-37.028 +G01 X+17.295 Y-36.635 +G01 X+8.288 Y-31.773 +G01 X+3.999 Y-23.895 +G01 X+3.363 Y-22.62 +G01 X+2.987 Y-21.301 +G01 X+2.866 Y-19.967 +G01 X+3.004 Y-18.632 +G01 X+3.395 Y-17.32 +G01 X+8.28 Y-8.34 +G01 X+16.271 Y-3.956 +G01 X+17.405 Y-3.393 +G01 X+18.71 Y-3.02 +G01 X+20.033 Y-2.899 +G01 X+21.355 Y-3.036 +G01 X+22.655 Y-3.424 +G01 X+31.607 Y-8.333 +G01 X+36.504 Y-17.245 +G01 X+36.93 Y-18.628 +G01 X+37.068 Y-19.938 +G01 X+36.95 Y-21.249 +G01 X+36.546 Y-22.629 +G01 X+31.613 Y-31.555 +G01 X+22.729 Y-36.474 +G01 X+21.359 Y-36.897 +G01 X+20.061 Y-37.035 +G01 X+18.763 Y-36.918 +G01 X+17.396 Y-36.517 +G01 X+8.498 Y-31.56 +G01 X+3.555 Y-22.703 +G01 X+3.135 Y-21.347 +G01 X+2.998 Y-20.061 +G01 X+3.114 Y-18.774 +G01 X+3.512 Y-17.421 +G01 X+8.493 Y-8.55 +G01 X+17.323 Y-3.584 +G01 X+18.665 Y-3.167 +G01 X+19.94 Y-3.031 +G01 X+21.214 Y-3.146 +G01 X+22.553 Y-3.542 +G01 X+31.397 Y-8.546 +G01 X+36.386 Y-17.349 +G01 X+36.801 Y-18.678 +G01 X+36.936 Y-19.94 +G01 X+36.821 Y-21.203 +G01 X+36.429 Y-22.528 +G01 X+31.401 Y-31.345 +G01 X+22.626 Y-36.357 +G01 X+21.31 Y-36.769 +G01 X+20.06 Y-36.904 +G01 X+18.809 Y-36.789 +G01 X+17.497 Y-36.4 +G01 X+8.708 Y-31.348 +G01 X+3.672 Y-22.6 +G01 X+3.263 Y-21.297 +G01 X+3.129 Y-20.059 +G01 X+3.243 Y-18.821 +G01 X+3.63 Y-17.522 +G01 X+8.705 Y-8.76 +G01 X+17.426 Y-3.702 +G01 X+18.715 Y-3.296 +G01 X+19.941 Y-3.162 +G01 X+21.168 Y-3.275 +G01 X+22.453 Y-3.659 +G01 X+31.187 Y-8.759 +G01 X+36.269 Y-17.452 +G01 X+36.672 Y-18.728 +G01 X+36.805 Y-19.941 +G01 X+36.692 Y-21.156 +G01 X+36.311 Y-22.427 +G01 X+31.188 Y-31.135 +G01 X+22.522 Y-36.24 +G01 X+21.26 Y-36.64 +G01 X+20.058 Y-36.772 +G01 X+18.856 Y-36.66 +G01 X+17.598 Y-36.282 +G01 X+8.917 Y-31.135 +G01 X+3.86 Y-22.658 +G01 X+3.43 Y-21.417 +G01 X+3.262 Y-20.059 +G01 X+3.372 Y-18.867 +G01 X+3.747 Y-17.623 +G01 X+8.918 Y-8.97 +G01 X+17.279 Y-3.936 +G01 X+18.514 Y-3.483 +G01 X+19.772 Y-3.299 +G01 X+21.12 Y-3.404 +G01 X+22.352 Y-3.777 +G01 X+30.923 Y-8.938 +G01 X+36.082 Y-17.398 +G01 X+36.486 Y-18.53 +G01 X+36.668 Y-19.774 +G01 X+36.563 Y-21.108 +G01 X+36.194 Y-22.326 +G01 X+30.975 Y-30.925 +G01 X+22.574 Y-36.054 +G01 X+21.455 Y-36.454 +G01 X+20.224 Y-36.635 +G01 X+18.903 Y-36.531 +G01 X+17.699 Y-36.164 +G01 X+9.127 Y-30.922 +G01 X+3.975 Y-22.547 +G01 X+3.577 Y-21.44 +G01 X+3.398 Y-20.222 +G01 X+3.501 Y-18.915 +G01 X+3.865 Y-17.724 +G01 X+9.131 Y-9.18 +G01 X+17.393 Y-4.051 +G01 X+18.575 Y-3.61 +G01 X+19.78 Y-3.431 +G01 X+21.074 Y-3.533 +G01 X+22.251 Y-3.894 +G01 X+30.714 Y-9.15 +G01 X+35.967 Y-17.509 +G01 X+36.359 Y-18.591 +G01 X+36.536 Y-19.782 +G01 X+36.435 Y-21.062 +G01 X+36.076 Y-22.226 +G01 X+30.763 Y-30.715 +G01 X+22.463 Y-35.939 +G01 X+21.394 Y-36.327 +G01 X+20.216 Y-36.503 +G01 X+18.95 Y-36.402 +G01 X+17.8 Y-36.047 +G01 X+9.337 Y-30.71 +G01 X+4.09 Y-22.435 +G01 X+3.705 Y-21.379 +G01 X+3.529 Y-20.213 +G01 X+3.615 Y-19.039 +G01 X+3.982 Y-17.825 +G01 X+9.344 Y-9.39 +G01 X+17.507 Y-4.166 +G01 X+18.635 Y-3.737 +G01 X+19.789 Y-3.562 +G01 X+20.95 Y-3.647 +G01 X+22.149 Y-4.012 +G01 X+30.504 Y-9.362 +G01 X+35.852 Y-17.62 +G01 X+36.232 Y-18.651 +G01 X+36.405 Y-19.791 +G01 X+36.32 Y-20.94 +G01 X+35.959 Y-22.124 +G01 X+30.55 Y-30.505 +G01 X+22.352 Y-35.824 +G01 X+21.334 Y-36.2 +G01 X+20.207 Y-36.372 +G01 X+19.071 Y-36.288 +G01 X+17.901 Y-35.929 +G01 X+9.547 Y-30.497 +G01 X+4.205 Y-22.324 +G01 X+3.832 Y-21.319 +G01 X+3.661 Y-20.205 +G01 X+3.744 Y-19.082 +G01 X+4.1 Y-17.926 +G01 X+9.557 Y-9.6 +G01 X+17.621 Y-4.281 +G01 X+18.695 Y-3.864 +G01 X+19.797 Y-3.694 +G01 X+20.907 Y-3.777 +G01 X+22.049 Y-4.129 +G01 X+30.295 Y-9.574 +G01 X+35.737 Y-17.731 +G01 X+36.105 Y-18.711 +G01 X+36.273 Y-19.799 +G01 X+36.191 Y-20.896 +G01 X+35.841 Y-22.023 +G01 X+30.337 Y-30.295 +G01 X+22.241 Y-35.708 +G01 X+21.274 Y-36.073 +G01 X+20.199 Y-36.24 +G01 X+19.114 Y-36.159 +G01 X+18.002 Y-35.812 +G01 X+9.757 Y-30.284 +G01 X+4.32 Y-22.213 +G01 X+3.959 Y-21.259 +G01 X+3.793 Y-20.197 +G01 X+3.874 Y-19.125 +G01 X+4.217 Y-18.027 +G01 X+9.769 Y-9.809 +G01 X+17.735 Y-4.396 +G01 X+18.755 Y-3.991 +G01 X+19.806 Y-3.826 +G01 X+20.864 Y-3.906 +G01 X+21.948 Y-4.247 +G01 X+30.086 Y-9.787 +G01 X+35.622 Y-17.843 +G01 X+35.938 Y-18.636 +G01 X+36.14 Y-19.806 +G01 X+36.062 Y-20.853 +G01 X+35.724 Y-21.923 +G01 X+30.124 Y-30.085 +G01 X+22.129 Y-35.594 +G01 X+21.347 Y-35.907 +G01 X+20.191 Y-36.107 +G01 X+19.157 Y-36.029 +G01 X+18.103 Y-35.695 +G01 X+9.967 Y-30.071 +G01 X+4.435 Y-22.101 +G01 X+4.124 Y-21.33 +G01 X+3.929 Y-20.258 +G01 X+4.003 Y-19.169 +G01 X+4.335 Y-18.128 +G01 X+9.982 Y-10.019 +G01 X+17.85 Y-4.51 +G01 X+18.686 Y-4.156 +G01 X+19.745 Y-3.962 +G01 X+20.82 Y-4.035 +G01 X+21.847 Y-4.364 +G01 X+29.876 Y-9.999 +G01 X+35.507 Y-17.955 +G01 X+35.813 Y-18.704 +G01 X+36.005 Y-19.748 +G01 X+35.932 Y-20.81 +G01 X+35.606 Y-21.822 +G01 X+29.911 Y-29.875 +G01 X+22.017 Y-35.479 +G01 X+21.28 Y-35.781 +G01 X+20.249 Y-35.972 +G01 X+19.201 Y-35.9 +G01 X+18.203 Y-35.577 +G01 X+10.177 Y-29.858 +G01 X+4.55 Y-21.99 +G01 X+4.25 Y-21.263 +G01 X+4.061 Y-20.246 +G01 X+4.132 Y-19.212 +G01 X+4.452 Y-18.228 +G01 X+10.195 Y-10.229 +G01 X+17.966 Y-4.624 +G01 X+18.511 Y-4.366 +G01 X+19.564 Y-4.11 +G01 X+20.649 Y-4.141 +G01 X+21.745 Y-4.482 +G01 X+29.667 Y-10.211 +G01 X+35.393 Y-18.066 +G01 X+35.668 Y-18.711 +G01 X+35.869 Y-19.697 +G01 X+35.815 Y-20.704 +G01 X+35.489 Y-21.721 +G01 X+29.698 Y-29.665 +G01 X+21.906 Y-35.364 +G01 X+21.271 Y-35.636 +G01 X+20.3 Y-35.836 +G01 X+19.306 Y-35.783 +G01 X+18.305 Y-35.46 +G01 X+10.387 Y-29.645 +G01 X+4.665 Y-21.878 +G01 X+4.395 Y-21.253 +G01 X+4.197 Y-20.296 +G01 X+4.25 Y-19.316 +G01 X+4.57 Y-18.33 +G01 X+10.408 Y-10.44 +G01 X+18.081 Y-4.738 +G01 X+18.593 Y-4.489 +G01 X+19.586 Y-4.242 +G01 X+20.613 Y-4.271 +G01 X+21.645 Y-4.599 +G01 X+29.458 Y-10.424 +G01 X+35.278 Y-18.178 +G01 X+35.542 Y-18.782 +G01 X+35.737 Y-19.711 +G01 X+35.685 Y-20.664 +G01 X+35.372 Y-21.62 +G01 X+29.485 Y-29.455 +G01 X+21.794 Y-35.249 +G01 X+21.2 Y-35.511 +G01 X+20.285 Y-35.704 +G01 X+19.346 Y-35.653 +G01 X+18.405 Y-35.342 +G01 X+10.597 Y-29.432 +G01 X+4.779 Y-21.766 +G01 X+4.54 Y-21.237 +G01 X+4.329 Y-20.282 +G01 X+4.379 Y-19.356 +G01 X+4.687 Y-18.43 +G01 X+10.621 Y-10.65 +G01 X+18.195 Y-4.853 +G01 X+18.675 Y-4.612 +G01 X+19.608 Y-4.373 +G01 X+20.576 Y-4.401 +G01 X+21.544 Y-4.716 +G01 X+29.248 Y-10.636 +G01 X+35.163 Y-18.29 +G01 X+35.398 Y-18.8 +G01 X+35.605 Y-19.726 +G01 X+35.556 Y-20.624 +G01 X+35.254 Y-21.52 +G01 X+29.272 Y-29.245 +G01 X+21.682 Y-35.134 +G01 X+21.181 Y-35.367 +G01 X+20.271 Y-35.572 +G01 X+19.386 Y-35.523 +G01 X+18.506 Y-35.225 +G01 X+10.807 Y-29.219 +G01 X+4.894 Y-21.654 +G01 X+4.664 Y-21.163 +G01 X+4.461 Y-20.267 +G01 X+4.509 Y-19.396 +G01 X+4.805 Y-18.531 +G01 X+10.835 Y-10.86 +G01 X+18.309 Y-4.967 +G01 X+18.756 Y-4.736 +G01 X+19.629 Y-4.505 +G01 X+20.54 Y-4.532 +G01 X+21.444 Y-4.834 +G01 X+29.039 Y-10.849 +G01 X+35.049 Y-18.402 +G01 X+35.235 Y-18.778 +G01 X+35.462 Y-19.635 +G01 X+35.436 Y-20.531 +G01 X+35.137 Y-21.418 +G01 X+29.059 Y-29.035 +G01 X+21.57 Y-35.02 +G01 X+21.201 Y-35.204 +G01 X+20.36 Y-35.429 +G01 X+19.478 Y-35.403 +G01 X+18.607 Y-35.107 +G01 X+11.017 Y-29.005 +G01 X+5.009 Y-21.542 +G01 X+4.827 Y-21.181 +G01 X+4.603 Y-20.355 +G01 X+4.629 Y-19.488 +G01 X+4.922 Y-18.632 +G01 X+11.048 Y-11.07 +G01 X+18.424 Y-5.082 +G01 X+18.838 Y-4.859 +G01 X+19.651 Y-4.636 +G01 X+20.503 Y-4.662 +G01 X+21.343 Y-4.951 +G01 X+28.829 Y-11.061 +G01 X+34.934 Y-18.514 +G01 X+35.112 Y-18.86 +G01 X+35.331 Y-19.656 +G01 X+35.306 Y-20.494 +G01 X+35.019 Y-21.318 +G01 X+28.846 Y-28.825 +G01 X+21.457 Y-34.906 +G01 X+21.206 Y-35.042 +G01 X+20.387 Y-35.291 +G01 X+19.563 Y-35.282 +G01 X+18.75 Y-35.012 +G01 X+11.228 Y-28.792 +G01 X+5.123 Y-21.429 +G01 X+4.989 Y-21.184 +G01 X+4.742 Y-20.381 +G01 X+4.751 Y-19.571 +G01 X+5.018 Y-18.774 +G01 X+11.261 Y-11.28 +G01 X+18.54 Y-5.195 +G01 X+18.837 Y-5.021 +G01 X+19.625 Y-4.775 +G01 X+20.42 Y-4.783 +G01 X+21.201 Y-5.047 +G01 X+28.62 Y-11.274 +G01 X+34.82 Y-18.627 +G01 X+34.951 Y-18.861 +G01 X+35.192 Y-19.631 +G01 X+35.184 Y-20.412 +G01 X+34.923 Y-21.177 +G01 X+28.632 Y-28.615 +G01 X+21.345 Y-34.791 +G01 X+21.117 Y-34.92 +G01 X+20.362 Y-35.159 +G01 X+19.596 Y-35.151 +G01 X+18.847 Y-34.893 +G01 X+11.581 Y-28.703 +G01 X+5.237 Y-21.317 +G01 X+5.11 Y-21.095 +G01 X+4.874 Y-20.356 +G01 X+4.881 Y-19.605 +G01 X+5.136 Y-18.871 +G01 X+11.474 Y-11.49 +G01 X+18.655 Y-5.31 +G01 X+18.925 Y-5.142 +G01 X+19.65 Y-4.906 +G01 X+20.387 Y-4.914 +G01 X+21.105 Y-5.166 +G01 X+28.41 Y-11.486 +G01 X+34.706 Y-18.739 +G01 X+34.829 Y-18.949 +G01 X+35.061 Y-19.656 +G01 X+35.054 Y-20.379 +G01 X+34.805 Y-21.081 +G01 X+28.544 Y-28.263 +G01 X+21.231 Y-34.678 +G01 X+21.142 Y-34.733 +G01 X+20.461 Y-35.004 +G01 X+19.714 Y-35.034 +G01 X+18.945 Y-34.775 +G01 X+11.975 Y-28.656 +G01 X+5.35 Y-21.203 +G01 X+5.296 Y-21.116 +G01 X+5.029 Y-20.453 +G01 X+4.999 Y-19.72 +G01 X+5.217 Y-19.039 +G01 X+11.688 Y-11.701 +G01 X+18.816 Y-5.386 +G01 X+19.517 Y-5.071 +G01 X+20.233 Y-5.026 +G01 X+20.938 Y-5.247 +G01 X+28.015 Y-11.532 +G01 X+34.585 Y-18.845 +G01 X+34.886 Y-19.489 +G01 X+34.94 Y-20.226 +G01 X+34.723 Y-20.916 +G01 X+28.5 Y-27.87 +G01 X+21.127 Y-34.557 +G01 X+20.501 Y-34.854 +G01 X+19.78 Y-34.908 +G01 X+19.106 Y-34.693 +G01 X+12.181 Y-28.448 +G01 X+5.472 Y-21.099 +G01 X+5.179 Y-20.49 +G01 X+5.125 Y-19.785 +G01 X+5.337 Y-19.129 +G01 X+11.901 Y-11.911 +G01 X+18.929 Y-5.501 +G01 X+19.555 Y-5.202 +G01 X+20.209 Y-5.158 +G01 X+20.849 Y-5.367 +G01 X+27.631 Y-11.578 +G01 X+34.471 Y-18.957 +G01 X+34.756 Y-19.531 +G01 X+34.809 Y-20.203 +G01 X+34.603 Y-20.827 +G01 X+28.287 Y-27.669 +G01 X+21.015 Y-34.442 +G01 X+20.459 Y-34.723 +G01 X+19.803 Y-34.776 +G01 X+19.195 Y-34.572 +G01 X+12.565 Y-28.407 +G01 X+5.586 Y-20.987 +G01 X+5.31 Y-20.449 +G01 X+5.257 Y-19.809 +G01 X+5.458 Y-19.217 +G01 X+12.118 Y-12.118 +G01 X+18.993 Y-5.658 +G01 X+19.561 Y-5.344 +G01 X+20.152 Y-5.285 +G01 X+20.732 Y-5.472 +G01 X+27.246 Y-11.613 +G01 X+34.358 Y-19.071 +G01 X+34.606 Y-19.513 +G01 X+34.684 Y-20.113 +G01 X+34.498 Y-20.71 +G01 X+28.427 Y-27.101 +G01 X+20.901 Y-34.329 +G01 X+20.475 Y-34.573 +G01 X+19.891 Y-34.651 +G01 X+19.311 Y-34.468 +G01 X+12.949 Y-28.376 +G01 X+5.699 Y-20.873 +G01 X+5.459 Y-20.463 +G01 X+5.382 Y-19.895 +G01 X+5.548 Y-19.358 +G01 X+12.33 Y-12.33 +G01 X+19.11 Y-5.77 +G01 X+19.548 Y-5.494 +G01 X+20.101 Y-5.415 +G01 X+20.622 Y-5.578 +G01 X+26.339 Y-11.124 +G01 X+34.245 Y-19.185 +G01 X+34.455 Y-19.511 +G01 X+34.556 Y-20.039 +G01 X+34.419 Y-20.552 +G01 X+29.632 Y-25.479 +G01 X+20.787 Y-34.217 +G01 X+20.475 Y-34.422 +G01 X+19.964 Y-34.523 +G01 X+19.466 Y-34.387 +G01 X+18.131 Y-33.137 +G01 X+5.809 Y-20.756 +G01 X+5.644 Y-20.53 +G01 X+5.511 Y-20.024 +G01 X+5.643 Y-19.488 +G01 X+12.542 Y-12.542 +G01 X+19.248 Y-5.836 +G01 X+19.543 Y-5.629 +G01 X+20.027 Y-5.527 +G01 X+20.508 Y-5.659 +G01 X+34.164 Y-19.248 +G01 X+34.371 Y-19.543 +G01 X+34.473 Y-20.027 +G01 X+34.341 Y-20.508 +G01 X+20.752 Y-34.164 +G01 X+20.457 Y-34.371 +G01 X+19.973 Y-34.473 +G01 X+19.492 Y-34.341 +G01 X+5.834 Y-20.751 +G01 X+5.656 Y-20.512 +G01 X+5.527 Y-20.036 +G01 X+5.629 Y-19.552 +G01 X+12.542 Y-12.542 +G00 Z+4.745 +G00 X+0 Y+1.95 +G00 Z-0.255 +G01 Z-1.48 F10000 +G01 X+40.391 Y+1.904 F12000 +G01 X+41.091 Y+1.609 +G01 X+41.624 Y+1.069 +G01 X+41.913 Y+0.359 +G01 X+41.949 Y+0.007 +G01 X+41.904 Y-40.391 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-1.091 Y-41.609 +G01 X-1.624 Y-41.069 +G01 X-1.913 Y-40.359 +G01 X-1.949 Y-40.007 +G01 X-1.904 Y+0.391 +G01 X-1.876 Y+0.487 +G01 X-1.806 Y+0.708 +G01 X-1.437 Y+1.298 +G01 X-1.035 Y+1.638 +G01 X-0.712 Y+1.803 +G01 X-0.235 Y+1.923 +G01 X+0 Y+1.939 +G01 X+40 Y+1.891 +G01 X+40.102 Y+1.886 +G01 X+40.533 Y+1.811 +G01 X+40.803 Y+1.709 +G01 X+41.106 Y+1.53 +G01 X+41.31 Y+1.359 +G01 X+41.561 Y+1.06 +G01 X+41.752 Y+0.7 +G01 X+41.826 Y+0.476 +G01 X+41.887 Y-0.556 +G01 X+41.879 Y-28.025 +G01 X+41.839 Y-40 +G01 X+41.828 Y-40.187 +G01 X+41.606 Y-40.887 +G01 X+41.537 Y-41.007 +G01 X+41.035 Y-41.513 +G01 X+40.699 Y-41.697 +G01 X+40.445 Y-41.78 +G01 X+39.321 Y-41.835 +G01 X+15 Y-41.865 +G01 X+0.185 Y-41.788 +G01 X-0.38 Y-41.744 +G01 X-0.595 Y-41.684 +G01 X-1.238 Y-41.278 +G01 X-1.581 Y-40.817 +G01 X-1.782 Y-39.579 +G01 X-1.835 Y-25.9 +G01 X-1.837 Y-15.247 +G01 X-1.744 Y-6.539 +G01 X-1.734 Y-0.009 +G01 X-1.69 Y+0.377 +G01 X-1.613 Y+0.63 +G01 X-1.284 Y+1.157 +G01 X-0.925 Y+1.461 +G01 X-0.637 Y+1.608 +G01 X-0.211 Y+1.716 +G01 X+0 Y+1.73 +G01 X+10.976 Y+1.764 +G01 X+22.407 Y+1.829 +G01 X+36.728 Y+1.673 +G01 X+40 Y+1.668 +G01 X+40.468 Y+1.598 +G01 X+40.707 Y+1.509 +G01 X+40.974 Y+1.351 +G01 X+41.155 Y+1.2 +G01 X+41.373 Y+0.94 +G01 X+41.604 Y+0.43 +G01 X+41.663 Y-0.679 +G01 X+41.698 Y-9.851 +G01 X+41.806 Y-21.42 +G01 X+41.609 Y-35.988 +G01 X+41.603 Y-40 +G01 X+41.593 Y-40.157 +G01 X+41.342 Y-40.859 +G01 X+40.904 Y-41.316 +G01 X+40.611 Y-41.477 +G01 X+40.391 Y-41.55 +G01 X+39.074 Y-41.598 +G01 X+30.926 Y-41.63 +G01 X+19.198 Y-41.78 +G01 X+4.383 Y-41.544 +G01 X+0.185 Y-41.537 +G01 X-0.324 Y-41.5 +G01 X-0.508 Y-41.448 +G01 X-1.061 Y-41.101 +G01 X-1.356 Y-40.707 +G01 X-1.531 Y-39.578 +G01 X-1.563 Y-31.42 +G01 X-1.753 Y-19.691 +G01 X-1.482 Y-6.539 +G01 X-1.471 Y-0.009 +G01 X-1.435 Y+0.318 +G01 X-1.369 Y+0.532 +G01 X-1.091 Y+0.978 +G01 X-0.787 Y+1.238 +G01 X-0.543 Y+1.363 +G01 X-0.181 Y+1.456 +G01 X+0 Y+1.468 +G01 X+8.226 Y+1.496 +G01 X+19.938 Y+1.724 +G01 X+28.15 Y+1.56 +G01 X+35 Y+1.414 +G01 X+40 Y+1.406 +G01 X+40.392 Y+1.347 +G01 X+40.594 Y+1.272 +G01 X+40.819 Y+1.139 +G01 X+40.971 Y+1.013 +G01 X+41.155 Y+0.795 +G01 X+41.35 Y+0.367 +G01 X+41.401 Y-0.926 +G01 X+41.432 Y-8.086 +G01 X+41.695 Y-19.691 +G01 X+41.569 Y-26.235 +G01 X+41.348 Y-34.753 +G01 X+41.34 Y-40 +G01 X+41.333 Y-40.128 +G01 X+41.124 Y-40.713 +G01 X+40.758 Y-41.098 +G01 X+40.513 Y-41.234 +G01 X+40.331 Y-41.295 +G01 X+38.457 Y-41.335 +G01 X+32.16 Y-41.365 +G01 X+20.556 Y-41.666 +G01 X+14.753 Y-41.559 +G01 X+5.37 Y-41.283 +G01 X+0.185 Y-41.275 +G01 X-0.265 Y-41.244 +G01 X-0.418 Y-41.202 +G01 X-0.876 Y-40.916 +G01 X-1.12 Y-40.592 +G01 X-1.27 Y-39.577 +G01 X-1.295 Y-32.407 +G01 X-1.636 Y-20.802 +G01 X-1.546 Y-15.494 +G01 X-1.219 Y-6.539 +G01 X-1.209 Y-0.009 +G01 X-1.179 Y+0.259 +G01 X-1.126 Y+0.434 +G01 X-0.899 Y+0.8 +G01 X-0.649 Y+1.015 +G01 X-0.453 Y+1.117 +G01 X-0.013 Y+1.204 +G01 X+7.476 Y+1.229 +G01 X+19.074 Y+1.606 +G01 X+24.151 Y+1.523 +G01 X+34.383 Y+1.152 +G01 X+40 Y+1.143 +G01 X+40.316 Y+1.096 +G01 X+40.476 Y+1.037 +G01 X+40.782 Y+0.828 +G01 X+40.937 Y+0.649 +G01 X+41.095 Y+0.305 +G01 X+41.138 Y-2.037 +G01 X+41.171 Y-7.593 +G01 X+41.576 Y-19.074 +G01 X+41.499 Y-23.889 +G01 X+41.087 Y-34.259 +G01 X+41.078 Y-40 +G01 X+41.063 Y-40.142 +G01 X+40.906 Y-40.568 +G01 X+40.617 Y-40.875 +G01 X+40.277 Y-41.034 +G01 X+32.407 Y-41.109 +G01 X+21.173 Y-41.544 +G01 X+16.481 Y-41.479 +G01 X+5.741 Y-41.021 +G01 X-0.202 Y-40.987 +G01 X-0.328 Y-40.956 +G01 X-0.69 Y-40.73 +G01 X-0.884 Y-40.478 +G01 X-1.008 Y-39.452 +G01 X-1.036 Y-32.654 +G01 X-1.513 Y-21.296 +G01 X-1.451 Y-16.605 +G01 X-0.957 Y-6.539 +G01 X-0.946 Y-0.014 +G01 X-0.883 Y+0.326 +G01 X-0.707 Y+0.622 +G01 X-0.511 Y+0.793 +G01 X-0.358 Y+0.873 +G01 X-0.013 Y+0.942 +G01 X+7.226 Y+0.967 +G01 X+18.58 Y+1.482 +G01 X+23.025 Y+1.433 +G01 X+34.136 Y+0.89 +G01 X+40 Y+0.881 +G01 X+40.353 Y+0.801 +G01 X+40.598 Y+0.641 +G01 X+40.719 Y+0.504 +G01 X+40.841 Y+0.242 +G01 X+40.91 Y-7.346 +G01 X+41.454 Y-18.704 +G01 X+41.405 Y-22.901 +G01 X+40.825 Y-34.136 +G01 X+40.815 Y-40 +G01 X+40.802 Y-40.112 +G01 X+40.688 Y-40.422 +G01 X+40.472 Y-40.657 +G01 X+40.217 Y-40.779 +G01 X+32.654 Y-40.847 +G01 X+21.543 Y-41.42 +G01 X+17.346 Y-41.383 +G01 X+5.864 Y-40.759 +G01 X-0.209 Y-40.706 +G01 X-0.505 Y-40.545 +G01 X-0.648 Y-40.364 +G01 X-0.747 Y-39.444 +G01 X-0.77 Y-32.901 +G01 X-1.387 Y-21.667 +G01 X-1.361 Y-17.593 +G01 X-0.694 Y-6.539 +G01 X-0.684 Y-0.014 +G01 X-0.639 Y+0.228 +G01 X-0.518 Y+0.438 +G01 X-0.271 Y+0.62 +G01 X-0.013 Y+0.68 +G01 X+7.226 Y+0.714 +G01 X+18.333 Y+1.357 +G01 X+22.407 Y+1.33 +G01 X+34.012 Y+0.628 +G01 X+39.983 Y+0.618 +G01 X+40.23 Y+0.566 +G01 X+40.489 Y+0.365 +G01 X+40.586 Y+0.178 +G01 X+40.643 Y-7.099 +G01 X+41.324 Y-18.21 +G01 X+41.313 Y-22.037 +G01 X+40.562 Y-34.012 +G01 X+40.553 Y-40 +G01 X+40.471 Y-40.276 +G01 X+40.326 Y-40.439 +G01 X+40.156 Y-40.525 +G01 X+32.901 Y-40.579 +G01 X+21.79 Y-41.294 +G01 X+17.963 Y-41.283 +G01 X+5.988 Y-40.497 +G01 X-0.124 Y-40.457 +G01 X-0.32 Y-40.36 +G01 X-0.411 Y-40.25 +G01 X-0.485 Y-39.198 +G01 X-0.515 Y-32.901 +G01 X-1.264 Y-21.79 +G01 X-1.252 Y-17.963 +G01 X-0.432 Y-6.539 +G01 X-0.422 Y-0.028 +G01 X-0.326 Y+0.243 +G01 X-0.177 Y+0.375 +G01 X-0.013 Y+0.419 +G01 X+6.976 Y+0.443 +G01 X+18.21 Y+1.234 +G01 X+21.79 Y+1.231 +G01 X+27.4 Y+0.842 +G01 X+33.889 Y+0.366 +G01 X+39.964 Y+0.356 +G01 X+40.226 Y+0.241 +G01 X+40.304 Y+0.144 +G01 X+40.351 Y-0.044 +G01 X+40.388 Y-7.099 +G01 X+41.204 Y-18.21 +G01 X+41.201 Y-21.79 +G01 X+40.826 Y-27.025 +G01 X+40.3 Y-33.889 +G01 X+40.29 Y-39.964 +G01 X+40.2 Y-40.178 +G01 X+40.113 Y-40.253 +G01 X+39.976 Y-40.29 +G01 X+32.901 Y-40.324 +G01 X+22.037 Y-41.164 +G01 X+18.58 Y-41.183 +G01 X+14.753 Y-40.931 +G01 X+6.111 Y-40.235 +G01 X-0.034 Y-40.211 +G01 X-0.133 Y-40.175 +G01 X-0.202 Y-40.05 +G01 X-0.26 Y-32.901 +G01 X-1.133 Y-22.037 +G01 X-1.157 Y-18.704 +G01 X-0.913 Y-15 +G01 X-0.17 Y-6.539 +G01 X-0.163 Y-0.057 +G01 X-0.125 Y+0.042 +G01 X+0.047 Y+0.162 +G01 X+6.976 Y+0.194 +G01 X+17.963 Y+1.109 +G01 X+21.296 Y+1.135 +G01 X+24.901 Y+0.894 +G01 X+33.889 Y+0.127 +G01 X+39.938 Y+0.121 +G01 X+40.044 Y+0.077 +G01 X+40.121 Y-0.062 +G01 X+40.163 Y-7.099 +G01 X+41.084 Y-17.84 +G01 X+41.12 Y-21.173 +G01 X+40.883 Y-24.753 +G01 X+40.085 Y-33.889 +G01 X+40.079 Y-39.929 +G01 X+39.93 Y-40.079 +G01 X+32.901 Y-40.122 +G01 X+22.16 Y-41.064 +G01 X+18.827 Y-41.101 +G01 X+15.494 Y-40.882 +G01 X+6.111 Y-40.043 +G01 X+0.123 Y-40.026 +G01 X-0.027 Y-39.877 +G01 X-0.081 Y-32.901 +G01 X-1.044 Y-22.16 +G01 X-1.082 Y-18.827 +G01 X-0.858 Y-15.494 +G01 X-0.002 Y-6.546 +G01 X+0.006 Y-0.247 +G01 X+0.05 Y-0.141 +G01 X+0.142 Y-0.05 +G01 X+0.247 Y-0.006 +G01 X+6.976 Y+0.028 +G01 X+17.84 Y+1.023 +G01 X+21.173 Y+1.062 +G01 X+24.401 Y+0.842 +G01 X+33.882 Y-0.046 +G01 X+39.798 Y-0.061 +G01 X+39.948 Y-0.21 +G01 X+39.994 Y-7.099 +G01 X+41.002 Y-17.84 +G01 X+41.041 Y-21.173 +G01 X+40.806 Y-24.506 +G01 X+39.908 Y-33.882 +G01 X+39.9 Y-39.751 +G01 X+39.751 Y-39.9 +G01 X+32.908 Y-39.948 +G01 X+22.16 Y-40.98 +G01 X+19.074 Y-41.026 +G01 X+15.988 Y-40.83 +G01 X+6.118 Y-39.861 +G01 X+0.296 Y-39.853 +G01 X+0.146 Y-39.704 +G01 X+0.123 Y-33.156 +G01 X-0.958 Y-22.16 +G01 X-1.006 Y-19.074 +G01 X-0.805 Y-15.988 +G01 X+0.186 Y-6.547 +G01 X+0.196 Y-0.371 +G01 X+0.24 Y-0.265 +G01 X+0.37 Y-0.195 +G01 X+6.969 Y-0.16 +G01 X+17.716 Y+0.924 +G01 X+20.802 Y+0.984 +G01 X+23.889 Y+0.787 +G01 X+33.758 Y-0.247 +G01 X+39.594 Y-0.257 +G01 X+39.744 Y-0.406 +G01 X+39.767 Y-6.844 +G01 X+40.903 Y-17.84 +G01 X+40.957 Y-20.802 +G01 X+40.754 Y-23.889 +G01 X+39.692 Y-33.758 +G01 X+39.682 Y-39.506 +G01 X+39.639 Y-39.612 +G01 X+39.506 Y-39.683 +G01 X+33.156 Y-39.707 +G01 X+22.167 Y-40.874 +G01 X+19.198 Y-40.93 +G01 X+16.111 Y-40.722 +G01 X+6.243 Y-39.631 +G01 X+0.528 Y-39.622 +G01 X+0.378 Y-39.472 +G01 X+0.353 Y-33.156 +G01 X-0.845 Y-22.167 +G01 X-0.902 Y-19.204 +G01 X-0.69 Y-16.111 +G01 X+0.429 Y-6.548 +G01 X+0.439 Y-0.618 +G01 X+0.483 Y-0.512 +G01 X+0.617 Y-0.439 +G01 X+6.969 Y-0.398 +G01 X+17.709 Y+0.809 +G01 X+20.679 Y+0.878 +G01 X+23.519 Y+0.698 +G01 X+33.757 Y-0.49 +G01 X+39.351 Y-0.5 +G01 X+39.5 Y-0.649 +G01 X+39.528 Y-6.843 +G01 X+40.772 Y-17.593 +G01 X+40.856 Y-20.425 +G01 X+40.68 Y-23.395 +G01 X+39.449 Y-33.757 +G01 X+39.439 Y-39.259 +G01 X+39.395 Y-39.365 +G01 X+39.259 Y-39.439 +G01 X+33.407 Y-39.437 +G01 X+22.414 Y-40.742 +G01 X+19.575 Y-40.829 +G01 X+16.605 Y-40.649 +G01 X+6.243 Y-39.388 +G01 X+0.772 Y-39.378 +G01 X+0.622 Y-39.228 +G01 X+0.623 Y-33.408 +G01 X-0.713 Y-22.414 +G01 X-0.802 Y-19.575 +G01 X-0.618 Y-16.605 +G01 X+0.672 Y-6.548 +G01 X+0.682 Y-0.864 +G01 X+0.726 Y-0.759 +G01 X+0.864 Y-0.682 +G01 X+6.719 Y-0.667 +G01 X+17.586 Y+0.685 +G01 X+20.425 Y+0.775 +G01 X+23.148 Y+0.614 +G01 X+33.756 Y-0.734 +G01 X+39.107 Y-0.743 +G01 X+39.257 Y-0.893 +G01 X+39.256 Y-6.592 +G01 X+40.656 Y-17.586 +G01 X+40.75 Y-20.302 +G01 X+40.596 Y-23.025 +G01 X+39.205 Y-33.756 +G01 X+39.196 Y-39.012 +G01 X+39.152 Y-39.118 +G01 X+39.012 Y-39.196 +G01 X+33.408 Y-39.195 +G01 X+22.414 Y-40.627 +G01 X+19.698 Y-40.723 +G01 X+16.975 Y-40.566 +G01 X+6.244 Y-39.145 +G01 X+1.015 Y-39.135 +G01 X+0.865 Y-38.985 +G01 X+0.866 Y-33.408 +G01 X-0.587 Y-22.538 +G01 X-0.696 Y-19.699 +G01 X-0.536 Y-16.975 +G01 X+0.916 Y-6.549 +G01 X+0.926 Y-1.111 +G01 X+0.97 Y-1.006 +G01 X+1.111 Y-0.926 +G01 X+6.718 Y-0.908 +G01 X+17.462 Y+0.558 +G01 X+20.301 Y+0.669 +G01 X+22.901 Y+0.519 +G01 X+33.755 Y-0.977 +G01 X+38.864 Y-0.987 +G01 X+39.013 Y-1.137 +G01 X+39.014 Y-6.591 +G01 X+40.529 Y-17.462 +G01 X+40.644 Y-20.055 +G01 X+40.514 Y-22.648 +G01 X+38.962 Y-33.755 +G01 X+38.952 Y-38.765 +G01 X+38.909 Y-38.871 +G01 X+38.765 Y-38.952 +G01 X+33.409 Y-38.953 +G01 X+22.538 Y-40.5 +G01 X+19.946 Y-40.618 +G01 X+17.352 Y-40.485 +G01 X+6.245 Y-38.901 +G01 X+1.258 Y-38.892 +G01 X+1.109 Y-38.742 +G01 X+1.108 Y-33.409 +G01 X-0.47 Y-22.538 +G01 X-0.591 Y-19.946 +G01 X-0.456 Y-17.353 +G01 X+1.159 Y-6.55 +G01 X+1.169 Y-1.358 +G01 X+1.213 Y-1.252 +G01 X+1.358 Y-1.169 +G01 X+6.718 Y-1.149 +G01 X+17.462 Y+0.441 +G01 X+20.054 Y+0.564 +G01 X+22.647 Y+0.426 +G01 X+33.755 Y-1.221 +G01 X+38.62 Y-1.23 +G01 X+38.77 Y-1.38 +G01 X+38.771 Y-6.59 +G01 X+40.412 Y-17.462 +G01 X+40.537 Y-19.931 +G01 X+40.422 Y-22.4 +G01 X+39.865 Y-26.235 +G01 X+38.719 Y-33.754 +G01 X+38.704 Y-38.56 +G01 X+38.554 Y-38.709 +G01 X+33.41 Y-38.711 +G01 X+22.538 Y-40.383 +G01 X+20.069 Y-40.511 +G01 X+17.6 Y-40.393 +G01 X+13.765 Y-39.826 +G01 X+6.246 Y-38.658 +G01 X+1.502 Y-38.648 +G01 X+1.352 Y-38.498 +G01 X+1.35 Y-33.41 +G01 X-0.354 Y-22.539 +G01 X-0.484 Y-20.069 +G01 X-0.364 Y-17.6 +G01 X+0.173 Y-14.012 +G01 X+1.402 Y-6.551 +G01 X+1.419 Y-1.562 +G01 X+1.57 Y-1.413 +G01 X+6.527 Y-1.42 +G01 X+17.338 Y+0.311 +G01 X+19.93 Y+0.457 +G01 X+22.4 Y+0.335 +G01 X+25.9 Y-0.197 +G01 X+33.754 Y-1.464 +G01 X+38.377 Y-1.473 +G01 X+38.527 Y-1.623 +G01 X+38.529 Y-6.589 +G01 X+40.282 Y-17.338 +G01 X+40.43 Y-19.93 +G01 X+40.306 Y-22.4 +G01 X+39.791 Y-25.741 +G01 X+38.475 Y-33.754 +G01 X+38.457 Y-38.316 +G01 X+38.307 Y-38.466 +G01 X+33.411 Y-38.468 +G01 X+22.662 Y-40.252 +G01 X+20.07 Y-40.403 +G01 X+17.6 Y-40.277 +G01 X+14.259 Y-39.753 +G01 X+6.552 Y-38.415 +G01 X+1.745 Y-38.405 +G01 X+1.595 Y-38.255 +G01 X+1.592 Y-33.411 +G01 X-0.223 Y-22.662 +G01 X-0.375 Y-20.316 +G01 X-0.285 Y-17.971 +G01 X+0.067 Y-15.494 +G01 X+1.646 Y-6.552 +G01 X+1.666 Y-1.805 +G01 X+1.816 Y-1.656 +G01 X+6.526 Y-1.663 +G01 X+17.338 Y+0.194 +G01 X+19.684 Y+0.348 +G01 X+22.029 Y+0.256 +G01 X+24.651 Y-0.128 +G01 X+33.448 Y-1.707 +G01 X+38.134 Y-1.717 +G01 X+38.283 Y-1.866 +G01 X+38.287 Y-6.589 +G01 X+40.164 Y-17.338 +G01 X+40.321 Y-19.683 +G01 X+40.228 Y-22.029 +G01 X+39.864 Y-24.506 +G01 X+38.232 Y-33.629 +G01 X+38.211 Y-38.073 +G01 X+38.061 Y-38.223 +G01 X+33.412 Y-38.226 +G01 X+22.662 Y-40.135 +G01 X+20.317 Y-40.294 +G01 X+17.971 Y-40.2 +G01 X+15.494 Y-39.83 +G01 X+6.553 Y-38.172 +G01 X+1.988 Y-38.162 +G01 X+1.838 Y-38.012 +G01 X+1.835 Y-33.412 +G01 X-0.105 Y-22.662 +G01 X-0.268 Y-20.317 +G01 X-0.171 Y-17.971 +G01 X+0.205 Y-15.494 +G01 X+1.889 Y-6.553 +G01 X+1.913 Y-2.049 +G01 X+2.063 Y-1.899 +G01 X+6.525 Y-1.906 +G01 X+17.337 Y+0.076 +G01 X+19.683 Y+0.241 +G01 X+22.029 Y+0.143 +G01 X+24.401 Y-0.219 +G01 X+33.447 Y-1.95 +G01 X+37.89 Y-1.96 +G01 X+38.04 Y-2.11 +G01 X+38.044 Y-6.588 +G01 X+40.046 Y-17.337 +G01 X+40.214 Y-19.683 +G01 X+40.115 Y-22.029 +G01 X+39.727 Y-24.506 +G01 X+37.989 Y-33.628 +G01 X+37.964 Y-37.83 +G01 X+37.814 Y-37.979 +G01 X+33.412 Y-37.984 +G01 X+22.663 Y-40.017 +G01 X+20.44 Y-40.185 +G01 X+18.218 Y-40.11 +G01 X+15.988 Y-39.79 +G01 X+6.553 Y-37.928 +G01 X+2.231 Y-37.918 +G01 X+2.082 Y-37.769 +G01 X+2.077 Y-33.413 +G01 X+0.012 Y-22.663 +G01 X-0.158 Y-20.44 +G01 X-0.082 Y-18.218 +G01 X+0.243 Y-15.988 +G01 X+2.132 Y-6.553 +G01 X+2.16 Y-2.292 +G01 X+2.31 Y-2.143 +G01 X+6.524 Y-2.149 +G01 X+17.337 Y-0.042 +G01 X+19.559 Y+0.131 +G01 X+21.781 Y+0.054 +G01 X+24.151 Y-0.304 +G01 X+33.446 Y-2.193 +G01 X+37.647 Y-2.203 +G01 X+37.797 Y-2.353 +G01 X+37.802 Y-6.587 +G01 X+39.929 Y-17.337 +G01 X+40.105 Y-19.559 +G01 X+40.026 Y-21.782 +G01 X+39.691 Y-24.012 +G01 X+37.746 Y-33.628 +G01 X+37.717 Y-37.587 +G01 X+37.567 Y-37.736 +G01 X+33.413 Y-37.742 +G01 X+22.663 Y-39.899 +G01 X+20.441 Y-40.078 +G01 X+18.219 Y-39.998 +G01 X+15.988 Y-39.659 +G01 X+6.554 Y-37.685 +G01 X+2.475 Y-37.675 +G01 X+2.325 Y-37.525 +G01 X+2.319 Y-33.413 +G01 X+0.13 Y-22.663 +G01 X-0.051 Y-20.441 +G01 X+0.03 Y-18.219 +G01 X+0.374 Y-15.988 +G01 X+2.376 Y-6.554 +G01 X+2.406 Y-2.535 +G01 X+2.557 Y-2.386 +G01 X+6.524 Y-2.392 +G01 X+17.337 Y-0.159 +G01 X+19.559 Y+0.024 +G01 X+21.781 Y-0.058 +G01 X+24.151 Y-0.437 +G01 X+33.445 Y-2.436 +G01 X+37.404 Y-2.446 +G01 X+37.554 Y-2.596 +G01 X+37.56 Y-6.586 +G01 X+39.811 Y-17.337 +G01 X+39.997 Y-19.559 +G01 X+39.914 Y-21.781 +G01 X+39.56 Y-24.012 +G01 X+37.502 Y-33.627 +G01 X+37.47 Y-37.344 +G01 X+37.321 Y-37.493 +G01 X+33.414 Y-37.499 +G01 X+22.663 Y-39.782 +G01 X+20.564 Y-39.967 +G01 X+18.465 Y-39.909 +G01 X+16.358 Y-39.606 +G01 X+6.555 Y-37.442 +G01 X+2.718 Y-37.432 +G01 X+2.568 Y-37.282 +G01 X+2.561 Y-33.414 +G01 X+0.248 Y-22.663 +G01 X+0.06 Y-20.564 +G01 X+0.119 Y-18.466 +G01 X+0.426 Y-16.358 +G01 X+2.619 Y-6.555 +G01 X+2.653 Y-2.777 +G01 X+2.803 Y-2.629 +G01 X+6.523 Y-2.634 +G01 X+17.337 Y-0.276 +G01 X+19.436 Y-0.086 +G01 X+21.534 Y-0.145 +G01 X+23.642 Y-0.456 +G01 X+33.445 Y-2.675 +G01 X+37.16 Y-2.684 +G01 X+37.266 Y-2.728 +G01 X+37.316 Y-2.84 +G01 X+37.323 Y-6.585 +G01 X+39.697 Y-17.336 +G01 X+39.89 Y-19.435 +G01 X+39.83 Y-21.534 +G01 X+39.515 Y-23.642 +G01 X+37.268 Y-33.626 +G01 X+37.259 Y-37.11 +G01 X+37.11 Y-37.259 +G01 X+33.415 Y-37.267 +G01 X+22.664 Y-39.67 +G01 X+20.565 Y-39.865 +G01 X+18.466 Y-39.804 +G01 X+16.358 Y-39.486 +G01 X+6.556 Y-37.213 +G01 X+2.963 Y-37.203 +G01 X+2.857 Y-37.159 +G01 X+2.797 Y-37.037 +G01 X+2.789 Y-33.415 +G01 X+0.358 Y-22.664 +G01 X+0.16 Y-20.565 +G01 X+0.221 Y-18.466 +G01 X+0.544 Y-16.358 +G01 X+2.843 Y-6.556 +G01 X+2.852 Y-3.002 +G01 X+3.003 Y-2.853 +G01 X+6.522 Y-2.858 +G01 X+17.336 Y-0.384 +G01 X+19.435 Y-0.184 +G01 X+21.534 Y-0.245 +G01 X+23.642 Y-0.571 +G01 X+33.444 Y-2.895 +G01 X+36.913 Y-2.904 +G01 X+37.019 Y-2.948 +G01 X+37.096 Y-3.087 +G01 X+37.105 Y-6.585 +G01 X+39.592 Y-17.336 +G01 X+39.794 Y-19.435 +G01 X+39.731 Y-21.534 +G01 X+39.402 Y-23.642 +G01 X+37.053 Y-33.625 +G01 X+37.045 Y-36.895 +G01 X+36.895 Y-37.045 +G01 X+33.416 Y-37.054 +G01 X+22.664 Y-39.567 +G01 X+20.565 Y-39.771 +G01 X+18.466 Y-39.708 +G01 X+16.358 Y-39.375 +G01 X+6.556 Y-37.002 +G01 X+3.156 Y-36.976 +G01 X+3.007 Y-36.827 +G01 X+2.997 Y-33.416 +G01 X+0.458 Y-22.664 +G01 X+0.252 Y-20.565 +G01 X+0.305 Y-18.59 +G01 X+0.623 Y-16.488 +G01 X+3.049 Y-6.557 +G01 X+3.058 Y-3.21 +G01 X+3.102 Y-3.104 +G01 X+3.21 Y-3.059 +G01 X+6.521 Y-3.063 +G01 X+17.336 Y-0.483 +G01 X+19.435 Y-0.275 +G01 X+21.534 Y-0.339 +G01 X+23.519 Y-0.651 +G01 X+33.443 Y-3.101 +G01 X+36.741 Y-3.11 +G01 X+36.89 Y-3.259 +G01 X+36.9 Y-6.584 +G01 X+39.449 Y-17.09 +G01 X+39.692 Y-19.188 +G01 X+39.669 Y-21.164 +G01 X+39.401 Y-23.14 +G01 X+36.847 Y-33.625 +G01 X+36.839 Y-36.666 +G01 X+36.795 Y-36.772 +G01 X+36.667 Y-36.839 +G01 X+33.416 Y-36.849 +G01 X+22.91 Y-39.424 +G01 X+20.935 Y-39.663 +G01 X+18.837 Y-39.646 +G01 X+16.86 Y-39.375 +G01 X+6.557 Y-36.796 +G01 X+3.363 Y-36.787 +G01 X+3.213 Y-36.638 +G01 X+3.202 Y-33.416 +G01 X+0.601 Y-22.91 +G01 X+0.36 Y-20.936 +G01 X+0.377 Y-18.837 +G01 X+0.65 Y-16.86 +G01 X+3.255 Y-6.557 +G01 X+3.271 Y-3.415 +G01 X+3.421 Y-3.265 +G01 X+6.52 Y-3.271 +G01 X+17.09 Y-0.629 +G01 X+19.064 Y-0.386 +G01 X+21.163 Y-0.403 +G01 X+23.14 Y-0.679 +G01 X+33.443 Y-3.316 +G01 X+36.525 Y-3.326 +G01 X+36.674 Y-3.475 +G01 X+36.684 Y-6.583 +G01 X+39.341 Y-17.09 +G01 X+39.587 Y-19.064 +G01 X+39.57 Y-21.163 +G01 X+39.29 Y-23.14 +G01 X+36.623 Y-33.5 +G01 X+36.606 Y-36.464 +G01 X+36.456 Y-36.614 +G01 X+33.417 Y-36.624 +G01 X+22.91 Y-39.311 +G01 X+20.936 Y-39.56 +G01 X+18.837 Y-39.543 +G01 X+16.86 Y-39.26 +G01 X+6.558 Y-36.563 +G01 X+3.597 Y-36.552 +G01 X+3.448 Y-36.403 +G01 X+3.437 Y-33.417 +G01 X+0.719 Y-22.91 +G01 X+0.467 Y-20.936 +G01 X+0.485 Y-18.837 +G01 X+0.771 Y-16.86 +G01 X+3.498 Y-6.558 +G01 X+3.518 Y-3.658 +G01 X+3.668 Y-3.509 +G01 X+6.52 Y-3.513 +G01 X+17.089 Y-0.749 +G01 X+19.064 Y-0.494 +G01 X+21.163 Y-0.512 +G01 X+23.14 Y-0.801 +G01 X+33.442 Y-3.559 +G01 X+36.281 Y-3.569 +G01 X+36.431 Y-3.719 +G01 X+36.442 Y-6.582 +G01 X+39.221 Y-17.089 +G01 X+39.479 Y-19.064 +G01 X+39.461 Y-21.162 +G01 X+39.169 Y-23.14 +G01 X+36.38 Y-33.5 +G01 X+36.359 Y-36.221 +G01 X+36.21 Y-36.37 +G01 X+33.418 Y-36.382 +G01 X+22.911 Y-39.191 +G01 X+20.936 Y-39.452 +G01 X+18.838 Y-39.434 +G01 X+16.861 Y-39.138 +G01 X+6.558 Y-36.319 +G01 X+3.841 Y-36.309 +G01 X+3.691 Y-36.16 +G01 X+3.679 Y-33.418 +G01 X+0.839 Y-22.911 +G01 X+0.575 Y-20.936 +G01 X+0.594 Y-18.838 +G01 X+0.892 Y-16.861 +G01 X+3.742 Y-6.558 +G01 X+3.764 Y-3.901 +G01 X+3.915 Y-3.752 +G01 X+6.519 Y-3.756 +G01 X+17.089 Y-0.868 +G01 X+19.064 Y-0.602 +G01 X+20.916 +G01 X+22.892 Y-0.87 +G01 X+27.4 Y-2.097 +G01 X+33.441 Y-3.802 +G01 X+36.038 Y-3.812 +G01 X+36.188 Y-3.962 +G01 X+36.2 Y-6.582 +G01 X+39.102 Y-17.089 +G01 X+39.371 Y-19.064 +G01 Y-20.916 +G01 X+39.1 Y-22.891 +G01 X+37.896 Y-27.275 +G01 X+36.137 Y-33.499 +G01 X+36.112 Y-35.979 +G01 X+35.963 Y-36.127 +G01 X+33.419 Y-36.139 +G01 X+22.911 Y-39.072 +G01 X+20.936 Y-39.344 +G01 X+19.084 Y-39.343 +G01 X+17.109 Y-39.07 +G01 X+12.975 Y-37.925 +G01 X+6.559 Y-36.076 +G01 X+4.084 Y-36.066 +G01 X+3.934 Y-35.917 +G01 X+3.921 Y-33.419 +G01 X+0.958 Y-22.911 +G01 X+0.684 Y-20.936 +G01 Y-19.084 +G01 X+0.959 Y-17.109 +G01 X+2.117 Y-12.975 +G01 X+3.985 Y-6.559 +G01 X+4.011 Y-4.144 +G01 X+4.161 Y-3.995 +G01 X+6.518 Y-3.999 +G01 X+17.089 Y-0.988 +G01 X+19.064 Y-0.711 +G01 X+20.915 +G01 X+22.891 Y-0.989 +G01 X+26.9 Y-2.122 +G01 X+33.44 Y-4.045 +G01 X+35.795 Y-4.056 +G01 X+35.945 Y-4.205 +G01 X+35.958 Y-6.581 +G01 X+38.982 Y-17.089 +G01 X+39.262 Y-19.064 +G01 Y-20.915 +G01 X+38.981 Y-22.891 +G01 X+37.874 Y-26.775 +G01 X+35.893 Y-33.498 +G01 X+35.866 Y-35.736 +G01 X+35.717 Y-35.884 +G01 X+33.419 Y-35.897 +G01 X+22.911 Y-38.952 +G01 X+20.937 Y-39.235 +G01 X+19.085 +G01 X+17.109 Y-38.951 +G01 X+13.225 Y-37.833 +G01 X+6.56 Y-35.833 +G01 X+4.327 Y-35.823 +G01 X+4.177 Y-35.674 +G01 X+4.163 Y-33.42 +G01 X+1.078 Y-22.912 +G01 X+0.792 Y-20.937 +G01 Y-19.085 +G01 X+1.079 Y-17.109 +G01 X+2.132 Y-13.475 +G01 X+4.228 Y-6.56 +G01 X+4.258 Y-4.387 +G01 X+4.408 Y-4.238 +G01 X+6.517 Y-4.242 +G01 X+17.088 Y-1.108 +G01 X+19.063 Y-0.819 +G01 X+20.915 +G01 X+22.891 Y-1.109 +G01 X+26.65 Y-2.211 +G01 X+33.44 Y-4.288 +G01 X+35.552 Y-4.299 +G01 X+35.702 Y-4.448 +G01 X+35.716 Y-6.58 +G01 X+38.862 Y-17.088 +G01 X+39.154 Y-19.063 +G01 Y-20.915 +G01 X+38.861 Y-22.891 +G01 X+37.787 Y-26.525 +G01 X+35.65 Y-33.498 +G01 X+35.619 Y-35.493 +G01 X+35.47 Y-35.641 +G01 X+33.42 Y-35.655 +G01 X+22.912 Y-38.832 +G01 X+20.937 Y-39.127 +G01 X+19.085 +G01 X+17.109 Y-38.831 +G01 X+13.725 Y-37.825 +G01 X+6.561 Y-35.59 +G01 X+4.57 Y-35.579 +G01 X+4.42 Y-35.431 +G01 X+4.405 Y-33.42 +G01 X+1.198 Y-22.912 +G01 X+0.9 Y-20.937 +G01 Y-19.085 +G01 X+1.199 Y-17.109 +G01 X+2.202 Y-13.765 +G01 X+4.471 Y-6.56 +G01 X+4.504 Y-4.629 +G01 X+4.654 Y-4.481 +G01 X+6.516 Y-4.485 +G01 X+17.088 Y-1.228 +G01 X+19.063 Y-0.927 +G01 X+20.915 +G01 X+22.891 Y-1.228 +G01 X+26.15 Y-2.215 +G01 X+33.439 Y-4.532 +G01 X+35.308 Y-4.542 +G01 X+35.414 Y-4.586 +G01 X+35.458 Y-4.691 +G01 X+35.474 Y-6.579 +G01 X+38.742 Y-17.088 +G01 X+39.046 Y-19.063 +G01 Y-20.914 +G01 X+38.742 Y-22.891 +G01 X+37.719 Y-26.235 +G01 X+35.407 Y-33.497 +G01 X+35.373 Y-35.251 +G01 X+35.224 Y-35.398 +G01 X+33.421 Y-35.413 +G01 X+23.035 Y-38.683 +G01 X+21.183 Y-38.998 +G01 X+19.455 Y-39.041 +G01 X+17.727 Y-38.842 +G01 X+15.741 Y-38.318 +G01 X+6.561 Y-35.347 +G01 X+4.815 Y-35.336 +G01 X+4.709 Y-35.292 +G01 X+4.663 Y-35.186 +G01 X+4.648 Y-33.421 +G01 X+1.347 Y-23.034 +G01 X+1.042 Y-21.307 +G01 X+0.981 Y-19.578 +G01 X+1.164 Y-17.85 +G01 X+1.635 Y-15.988 +G01 X+4.714 Y-6.561 +G01 X+4.751 Y-4.872 +G01 X+4.901 Y-4.724 +G01 X+6.515 Y-4.727 +G01 X+16.966 Y-1.376 +G01 X+18.693 Y-1.068 +G01 X+20.421 Y-1.006 +G01 X+22.15 Y-1.191 +G01 X+23.889 Y-1.626 +G01 X+33.438 Y-4.77 +G01 X+35.061 Y-4.78 +G01 X+35.167 Y-4.824 +G01 X+35.22 Y-4.938 +G01 X+35.237 Y-6.579 +G01 X+38.596 Y-16.966 +G01 X+38.906 Y-18.693 +G01 X+38.969 Y-20.421 +G01 X+38.782 Y-22.15 +G01 X+38.344 Y-23.889 +G01 X+35.174 Y-33.496 +G01 X+35.164 Y-35.015 +G01 X+35.015 Y-35.165 +G01 X+33.422 Y-35.181 +G01 X+23.035 Y-38.568 +G01 X+21.307 Y-38.881 +G01 X+19.579 Y-38.944 +G01 X+17.85 Y-38.756 +G01 X+16.111 Y-38.314 +G01 X+6.562 Y-35.118 +G01 X+5.062 Y-35.107 +G01 X+4.956 Y-35.063 +G01 X+4.892 Y-34.939 +G01 X+4.875 Y-33.422 +G01 X+1.46 Y-23.035 +G01 X+1.144 Y-21.307 +G01 X+1.081 Y-19.579 +G01 X+1.27 Y-17.85 +G01 X+1.716 Y-16.111 +G01 X+4.938 Y-6.562 +G01 X+4.948 Y-5.098 +G01 X+5.098 Y-4.949 +G01 X+6.515 Y-4.951 +G01 X+16.965 Y-1.486 +G01 X+18.693 Y-1.168 +G01 X+20.421 Y-1.104 +G01 X+22.15 Y-1.295 +G01 X+23.889 Y-1.744 +G01 X+33.438 Y-4.99 +G01 X+34.815 Y-5 +G01 X+34.92 Y-5.044 +G01 X+35.001 Y-5.184 +G01 X+35.018 Y-6.578 +G01 X+38.488 Y-16.965 +G01 X+38.808 Y-18.693 +G01 X+38.873 Y-20.421 +G01 X+38.681 Y-22.15 +G01 X+38.229 Y-23.889 +G01 X+34.959 Y-33.495 +G01 X+34.949 Y-34.8 +G01 X+34.801 Y-34.95 +G01 X+33.422 Y-34.967 +G01 X+23.035 Y-38.462 +G01 X+21.307 Y-38.785 +G01 X+19.579 Y-38.85 +G01 X+17.85 Y-38.657 +G01 X+16.111 Y-38.201 +G01 X+6.562 Y-34.907 +G01 X+5.249 Y-34.879 +G01 X+5.101 Y-34.731 +G01 X+5.084 Y-33.422 +G01 X+1.563 Y-23.035 +G01 X+1.238 Y-21.307 +G01 X+1.173 Y-19.579 +G01 X+1.368 Y-17.85 +G01 X+1.826 Y-16.111 +G01 X+5.144 Y-6.563 +G01 X+5.154 Y-5.309 +G01 X+5.198 Y-5.203 +G01 X+5.309 Y-5.154 +G01 X+6.514 Y-5.156 +G01 X+16.965 Y-1.589 +G01 X+18.693 Y-1.261 +G01 X+20.421 Y-1.195 +G01 X+22.15 Y-1.392 +G01 X+23.889 Y-1.854 +G01 X+33.437 Y-5.196 +G01 X+34.646 Y-5.206 +G01 X+34.796 Y-5.354 +G01 X+34.814 Y-6.578 +G01 X+38.386 Y-16.965 +G01 X+38.716 Y-18.693 +G01 X+38.782 Y-20.421 +G01 X+38.584 Y-22.149 +G01 X+38.119 Y-23.889 +G01 X+34.753 Y-33.495 +G01 X+34.743 Y-34.568 +G01 X+34.699 Y-34.673 +G01 X+34.569 Y-34.744 +G01 X+33.422 Y-34.762 +G01 X+23.035 Y-38.36 +G01 X+21.307 Y-38.692 +G01 X+19.579 Y-38.759 +G01 X+17.851 Y-38.56 +G01 X+16.111 Y-38.091 +G01 X+6.563 Y-34.702 +G01 X+5.457 Y-34.691 +G01 X+5.308 Y-34.544 +G01 X+5.289 Y-33.423 +G01 X+1.666 Y-23.035 +G01 X+1.331 Y-21.308 +G01 X+1.263 Y-19.58 +G01 X+1.464 Y-17.851 +G01 X+1.936 Y-16.111 +G01 X+5.35 Y-6.563 +G01 X+5.369 Y-5.509 +G01 X+5.519 Y-5.361 +G01 X+6.513 Y-5.362 +G01 X+16.965 Y-1.693 +G01 X+18.692 Y-1.356 +G01 X+20.42 Y-1.288 +G01 X+22.149 Y-1.491 +G01 X+23.889 Y-1.967 +G01 X+33.436 Y-5.411 +G01 X+34.43 Y-5.421 +G01 X+34.58 Y-5.568 +G01 X+34.599 Y-6.577 +G01 X+38.277 Y-16.965 +G01 X+38.617 Y-18.692 +G01 X+38.685 Y-20.42 +G01 X+38.481 Y-22.149 +G01 X+38.001 Y-23.889 +G01 X+34.528 Y-33.495 +G01 X+34.508 Y-34.373 +G01 X+34.361 Y-34.521 +G01 X+33.423 Y-34.538 +G01 X+23.035 Y-38.247 +G01 X+21.308 Y-38.589 +G01 X+19.58 Y-38.658 +G01 X+17.851 Y-38.452 +G01 X+16.111 Y-37.968 +G01 X+6.564 Y-34.468 +G01 X+5.691 Y-34.457 +G01 X+5.542 Y-34.31 +G01 X+5.523 Y-33.423 +G01 X+1.784 Y-23.035 +G01 X+1.438 Y-21.308 +G01 X+1.369 Y-19.58 +G01 X+1.576 Y-17.851 +G01 X+2.064 Y-16.111 +G01 X+5.593 Y-6.563 +G01 X+5.615 Y-5.751 +G01 X+5.765 Y-5.604 +G01 X+6.513 Y-5.605 +G01 X+16.965 Y-1.814 +G01 X+18.692 Y-1.465 +G01 X+20.42 Y-1.395 +G01 X+22.149 Y-1.604 +G01 X+23.889 Y-2.096 +G01 X+33.436 Y-5.654 +G01 X+34.188 Y-5.664 +G01 X+34.337 Y-5.811 +G01 X+34.357 Y-6.577 +G01 X+38.156 Y-16.965 +G01 X+38.507 Y-18.692 +G01 X+38.582 Y-20.297 +G01 X+38.391 Y-22.025 +G01 X+37.871 Y-23.889 +G01 X+34.285 Y-33.495 +G01 X+34.262 Y-34.132 +G01 X+34.116 Y-34.278 +G01 X+33.423 Y-34.296 +G01 X+23.035 Y-38.126 +G01 X+21.308 Y-38.48 +G01 X+19.703 Y-38.555 +G01 X+17.975 Y-38.363 +G01 X+16.111 Y-37.839 +G01 X+6.565 Y-34.225 +G01 X+5.934 Y-34.214 +G01 X+5.784 Y-34.068 +G01 X+5.765 Y-33.423 +G01 X+1.905 Y-23.036 +G01 X+1.548 Y-21.308 +G01 X+1.472 Y-19.703 +G01 X+1.665 Y-17.975 +G01 X+2.194 Y-16.111 +G01 X+5.837 Y-6.563 +G01 X+5.86 Y-5.993 +G01 X+6.01 Y-5.847 +G01 X+6.512 Y-5.848 +G01 X+16.965 Y-1.934 +G01 X+18.569 Y-1.591 +G01 X+20.296 Y-1.499 +G01 X+22.025 Y-1.693 +G01 X+23.883 Y-2.224 +G01 X+33.435 Y-5.897 +G01 X+33.945 Y-5.907 +G01 X+34.095 Y-6.052 +G01 X+34.114 Y-6.577 +G01 X+38.035 Y-16.964 +G01 X+38.398 Y-18.692 +G01 X+38.475 Y-20.297 +G01 X+38.278 Y-22.025 +G01 X+37.834 Y-23.635 +G01 X+34.041 Y-33.495 +G01 X+34.018 Y-33.893 +G01 X+33.874 Y-34.037 +G01 X+33.423 Y-34.054 +G01 X+23.036 Y-38.005 +G01 X+21.308 Y-38.37 +G01 X+19.704 Y-38.448 +G01 X+17.975 Y-38.25 +G01 X+16.365 Y-37.802 +G01 X+6.565 Y-33.982 +G01 X+6.176 Y-33.971 +G01 X+6.026 Y-33.828 +G01 X+6.007 Y-33.423 +G01 X+2.025 Y-23.036 +G01 X+1.657 Y-21.308 +G01 X+1.579 Y-19.704 +G01 X+1.778 Y-17.975 +G01 X+2.229 Y-16.365 +G01 X+6.08 Y-6.562 +G01 X+6.104 Y-6.233 +G01 X+6.254 Y-6.09 +G01 X+6.511 +G01 X+16.965 Y-2.055 +G01 X+18.568 Y-1.701 +G01 X+20.296 Y-1.606 +G01 X+22.025 Y-1.807 +G01 X+23.635 Y-2.261 +G01 X+33.434 Y-6.14 +G01 X+33.703 Y-6.151 +G01 X+33.809 Y-6.194 +G01 X+33.853 Y-6.291 +G01 X+33.872 Y-6.578 +G01 X+37.914 Y-16.964 +G01 X+38.288 Y-18.692 +G01 X+38.368 Y-20.296 +G01 X+38.165 Y-22.025 +G01 X+37.707 Y-23.635 +G01 X+33.797 Y-33.498 +G01 X+33.777 Y-33.66 +G01 X+33.637 Y-33.797 +G01 X+33.422 Y-33.811 +G01 X+23.036 Y-37.884 +G01 X+21.308 Y-38.261 +G01 X+19.704 Y-38.341 +G01 X+17.975 Y-38.137 +G01 X+16.365 Y-37.676 +G01 X+6.566 Y-33.739 +G01 X+6.42 Y-33.728 +G01 X+6.314 Y-33.684 +G01 X+6.267 Y-33.589 +G01 X+6.25 Y-33.419 +G01 X+2.146 Y-23.036 +G01 X+1.767 Y-21.308 +G01 X+1.686 Y-19.704 +G01 X+1.892 Y-17.975 +G01 X+2.356 Y-16.365 +G01 X+6.326 Y-6.558 +G01 X+6.491 Y-6.333 +G01 X+16.964 Y-2.174 +G01 X+18.568 Y-1.81 +G01 X+20.295 Y-1.711 +G01 X+22.025 Y-1.917 +G01 X+23.635 Y-2.385 +G01 X+33.426 Y-6.37 +G01 X+33.626 Y-6.584 +G01 X+37.8 Y-16.964 +G01 X+38.185 Y-18.691 +G01 X+38.267 Y-20.296 +G01 X+38.059 Y-22.025 +G01 X+37.588 Y-23.635 +G01 X+33.549 Y-33.491 +G01 X+33.441 Y-33.58 +G01 X+23.036 Y-37.774 +G01 X+21.309 Y-38.161 +G01 X+19.704 Y-38.244 +G01 X+17.975 Y-38.035 +G01 X+16.366 Y-37.562 +G01 X+6.545 Y-33.485 +G01 X+6.464 Y-33.403 +G01 X+2.251 Y-23.036 +G01 X+1.862 Y-21.309 +G01 X+1.779 Y-19.704 +G01 X+1.989 Y-17.975 +G01 X+2.465 Y-16.366 +G01 X+6.515 Y-6.597 +G01 X+6.597 Y-6.515 +G01 X+16.599 Y-2.394 +G01 X+18.323 Y-1.937 +G01 X+19.926 Y-1.791 +G01 X+21.529 Y-1.913 +G01 X+23.133 Y-2.305 +G01 X+33.387 Y-6.532 +G01 X+33.468 Y-6.613 +G01 X+37.597 Y-16.606 +G01 X+38.053 Y-18.326 +G01 X+38.199 Y-19.926 +G01 X+38.077 Y-21.526 +G01 X+37.685 Y-23.126 +G01 X+33.452 Y-33.37 +G01 X+33.37 Y-33.452 +G01 X+23.386 Y-37.588 +G01 X+21.67 Y-38.043 +G01 X+20.074 Y-38.189 +G01 X+18.478 Y-38.066 +G01 X+16.881 Y-37.676 +G01 X+6.646 Y-33.435 +G01 X+6.565 Y-33.354 +G01 X+2.422 Y-23.379 +G01 X+1.967 Y-21.666 +G01 X+1.821 Y-20.074 +G01 X+1.944 Y-18.481 +G01 X+2.333 Y-16.888 +G01 X+6.582 Y-6.663 +G01 X+6.663 Y-6.582 +G01 X+16.635 Y-2.439 +G01 X+18.341 Y-1.987 +G01 X+19.926 Y-1.843 +G01 X+21.512 Y-1.966 +G01 X+23.095 Y-2.356 +G01 X+33.285 Y-6.635 +G01 X+33.365 Y-6.715 +G01 X+37.531 Y-16.659 +G01 X+37.981 Y-18.352 +G01 X+38.124 Y-19.927 +G01 X+38.002 Y-21.501 +G01 X+37.614 Y-23.073 +G01 X+33.312 Y-33.233 +G01 X+33.233 Y-33.312 +G01 X+23.317 Y-37.502 +G01 X+21.636 Y-37.949 +G01 X+20.073 Y-38.091 +G01 X+18.51 Y-37.969 +G01 X+16.95 Y-37.584 +G01 X+6.82 Y-33.259 +G01 X+6.741 Y-33.18 +G01 X+2.528 Y-23.293 +G01 X+2.084 Y-21.625 +G01 X+1.942 Y-20.072 +G01 X+2.063 Y-18.521 +G01 X+2.446 Y-16.972 +G01 X+6.794 Y-6.872 +G01 X+6.872 Y-6.794 +G01 X+16.731 Y-2.558 +G01 X+18.387 Y-2.116 +G01 X+19.928 Y-1.975 +G01 X+21.469 Y-2.095 +G01 X+23.005 Y-2.476 +G01 X+33.075 Y-6.847 +G01 X+33.153 Y-6.925 +G01 X+37.412 Y-16.755 +G01 X+37.852 Y-18.398 +G01 X+37.992 Y-19.928 +G01 X+37.872 Y-21.458 +G01 X+37.494 Y-22.983 +G01 X+33.1 Y-33.023 +G01 X+33.023 Y-33.1 +G01 X+23.221 Y-37.382 +G01 X+21.59 Y-37.82 +G01 X+20.071 Y-37.959 +G01 X+18.553 Y-37.84 +G01 X+17.04 Y-37.464 +G01 X+7.03 Y-33.047 +G01 X+6.953 Y-32.97 +G01 X+2.648 Y-23.197 +G01 X+2.213 Y-21.578 +G01 X+2.074 Y-20.071 +G01 X+2.192 Y-18.563 +G01 X+2.567 Y-17.062 +G01 X+7.006 Y-7.082 +G01 X+7.082 Y-7.006 +G01 X+16.827 Y-2.678 +G01 X+18.433 Y-2.245 +G01 X+19.93 Y-2.107 +G01 X+21.426 Y-2.225 +G01 X+22.916 Y-2.597 +G01 X+32.865 Y-7.059 +G01 X+32.941 Y-7.135 +G01 X+37.293 Y-16.851 +G01 X+37.723 Y-18.445 +G01 X+37.86 Y-19.93 +G01 X+37.743 Y-21.415 +G01 X+37.373 Y-22.893 +G01 X+32.888 Y-32.813 +G01 X+32.813 Y-32.888 +G01 X+23.125 Y-37.263 +G01 X+21.544 Y-37.69 +G01 X+20.07 Y-37.827 +G01 X+18.596 Y-37.711 +G01 X+17.129 Y-37.343 +G01 X+7.239 Y-32.835 +G01 X+7.165 Y-32.761 +G01 X+3.382 Y-24.512 +G01 X+2.689 Y-22.877 +G01 X+2.322 Y-21.419 +G01 X+2.206 Y-19.957 +G01 X+2.341 Y-18.495 +G01 X+2.766 Y-16.928 +G01 X+7.218 Y-7.292 +G01 X+7.292 Y-7.218 +G01 X+9.599 Y-6.153 +G01 X+16.922 Y-2.797 +G01 X+18.59 Y-2.355 +G01 X+20.043 Y-2.239 +G01 X+21.494 Y-2.373 +G01 X+23.048 Y-2.795 +G01 X+32.656 Y-7.271 +G01 X+32.729 Y-7.344 +G01 X+33.969 Y-10.008 +G01 X+37.173 Y-16.946 +G01 X+37.612 Y-18.601 +G01 X+37.728 Y-20.043 +G01 X+37.595 Y-21.482 +G01 X+37.175 Y-23.024 +G01 X+32.676 Y-32.604 +G01 X+32.604 Y-32.676 +G01 X+28.264 Y-34.714 +G01 X+23.03 Y-37.143 +G01 X+21.388 Y-37.58 +G01 X+19.958 Y-37.695 +G01 X+18.529 Y-37.563 +G01 X+17 Y-37.145 +G01 X+7.449 Y-32.623 +G01 X+7.377 Y-32.551 +G01 X+4.872 Y-27.264 +G01 X+2.887 Y-23.006 +G01 X+2.452 Y-21.377 +G01 X+2.338 Y-19.958 +G01 X+2.47 Y-18.541 +G01 X+2.884 Y-17.025 +G01 X+7.431 Y-7.501 +G01 X+14.089 Y-4.281 +G01 X+17.019 Y-2.916 +G01 X+18.633 Y-2.485 +G01 X+20.041 Y-2.371 +G01 X+21.447 Y-2.502 +G01 X+22.951 Y-2.914 +G01 X+32.446 Y-7.484 +G01 X+35.512 Y-13.767 +G01 X+37.054 Y-17.043 +G01 X+37.483 Y-18.644 +G01 X+37.596 Y-20.041 +G01 X+37.466 Y-21.436 +G01 X+37.056 Y-22.927 +G01 X+32.463 Y-32.394 +G01 X+23.038 Y-36.985 +G01 X+21.558 Y-37.412 +G01 X+20.067 Y-37.563 +G01 X+18.576 Y-37.434 +G01 X+17.098 Y-37.027 +G01 X+7.659 Y-32.41 +G01 X+3.045 Y-23.013 +G01 X+2.62 Y-21.545 +G01 X+2.47 Y-20.067 +G01 X+2.599 Y-18.588 +G01 X+3.003 Y-17.122 +G01 X+7.643 Y-7.711 +G01 X+17.012 Y-3.074 +G01 X+18.467 Y-2.652 +G01 X+19.933 Y-2.503 +G01 X+21.4 Y-2.631 +G01 X+22.854 Y-3.032 +G01 X+32.236 Y-7.696 +G01 X+36.896 Y-17.037 +G01 X+37.316 Y-18.479 +G01 X+37.464 Y-19.934 +G01 X+37.337 Y-21.389 +G01 X+36.938 Y-22.829 +G01 X+32.251 Y-32.184 +G01 X+24.878 Y-35.923 +G01 X+22.837 Y-36.905 +G01 X+21.405 Y-37.303 +G01 X+19.963 Y-37.431 +G01 X+18.52 Y-37.285 +G01 X+17.093 Y-36.87 +G01 X+7.868 Y-32.198 +G01 X+3.99 Y-24.61 +G01 X+3.125 Y-22.812 +G01 X+2.729 Y-21.394 +G01 X+2.602 Y-19.963 +G01 X+2.747 Y-18.533 +G01 X+3.16 Y-17.118 +G01 X+7.855 Y-7.921 +G01 X+15.565 Y-3.949 +G01 X+17.212 Y-3.155 +G01 X+18.618 Y-2.761 +G01 X+20.036 Y-2.635 +G01 X+21.455 Y-2.779 +G01 X+22.857 Y-3.189 +G01 X+32.027 Y-7.908 +G01 X+35.945 Y-15.454 +G01 X+36.815 Y-17.236 +G01 X+37.206 Y-18.629 +G01 X+37.332 Y-20.036 +G01 X+37.189 Y-21.443 +G01 X+36.782 Y-22.831 +G01 X+32.038 Y-31.974 +G01 X+24.282 Y-36.034 +G01 X+22.74 Y-36.786 +G01 X+21.359 Y-37.174 +G01 X+19.964 Y-37.299 +G01 X+18.57 Y-37.157 +G01 X+17.194 Y-36.752 +G01 X+8.078 Y-31.985 +G01 X+3.997 Y-24.25 +G01 X+3.244 Y-22.716 +G01 X+2.858 Y-21.348 +G01 X+2.734 Y-19.965 +G01 X+2.875 Y-18.582 +G01 X+3.277 Y-17.219 +G01 X+8.068 Y-8.13 +G01 X+15.921 Y-3.955 +G01 X+17.308 Y-3.274 +G01 X+18.664 Y-2.89 +G01 X+20.035 Y-2.767 +G01 X+21.405 Y-2.908 +G01 X+22.756 Y-3.307 +G01 X+31.817 Y-8.121 +G01 X+35.939 Y-15.813 +G01 X+36.696 Y-17.332 +G01 X+37.077 Y-18.675 +G01 X+37.2 Y-20.034 +G01 X+37.06 Y-21.393 +G01 X+36.664 Y-22.731 +G01 X+31.826 Y-31.765 +G01 X+23.926 Y-36.032 +G01 X+22.644 Y-36.667 +G01 X+21.313 Y-37.045 +G01 X+19.966 Y-37.167 +G01 X+18.62 Y-37.028 +G01 X+17.295 Y-36.635 +G01 X+8.288 Y-31.773 +G01 X+3.999 Y-23.895 +G01 X+3.363 Y-22.62 +G01 X+2.987 Y-21.301 +G01 X+2.866 Y-19.967 +G01 X+3.004 Y-18.632 +G01 X+3.395 Y-17.32 +G01 X+8.28 Y-8.34 +G01 X+16.271 Y-3.956 +G01 X+17.405 Y-3.393 +G01 X+18.71 Y-3.02 +G01 X+20.033 Y-2.899 +G01 X+21.355 Y-3.036 +G01 X+22.655 Y-3.424 +G01 X+31.607 Y-8.333 +G01 X+36.504 Y-17.245 +G01 X+36.93 Y-18.628 +G01 X+37.068 Y-19.938 +G01 X+36.95 Y-21.249 +G01 X+36.546 Y-22.629 +G01 X+31.613 Y-31.555 +G01 X+22.729 Y-36.474 +G01 X+21.359 Y-36.897 +G01 X+20.061 Y-37.035 +G01 X+18.763 Y-36.918 +G01 X+17.396 Y-36.517 +G01 X+8.498 Y-31.56 +G01 X+3.555 Y-22.703 +G01 X+3.135 Y-21.347 +G01 X+2.998 Y-20.061 +G01 X+3.114 Y-18.774 +G01 X+3.512 Y-17.421 +G01 X+8.493 Y-8.55 +G01 X+17.323 Y-3.584 +G01 X+18.665 Y-3.167 +G01 X+19.94 Y-3.031 +G01 X+21.214 Y-3.146 +G01 X+22.553 Y-3.542 +G01 X+31.397 Y-8.546 +G01 X+36.386 Y-17.349 +G01 X+36.801 Y-18.678 +G01 X+36.936 Y-19.94 +G01 X+36.821 Y-21.203 +G01 X+36.429 Y-22.528 +G01 X+31.401 Y-31.345 +G01 X+22.626 Y-36.357 +G01 X+21.31 Y-36.769 +G01 X+20.06 Y-36.904 +G01 X+18.809 Y-36.789 +G01 X+17.497 Y-36.4 +G01 X+8.708 Y-31.348 +G01 X+3.672 Y-22.6 +G01 X+3.263 Y-21.297 +G01 X+3.129 Y-20.059 +G01 X+3.243 Y-18.821 +G01 X+3.63 Y-17.522 +G01 X+8.705 Y-8.76 +G01 X+17.426 Y-3.702 +G01 X+18.715 Y-3.296 +G01 X+19.941 Y-3.162 +G01 X+21.168 Y-3.275 +G01 X+22.453 Y-3.659 +G01 X+31.187 Y-8.759 +G01 X+36.269 Y-17.452 +G01 X+36.672 Y-18.728 +G01 X+36.805 Y-19.941 +G01 X+36.692 Y-21.156 +G01 X+36.311 Y-22.427 +G01 X+31.188 Y-31.135 +G01 X+22.522 Y-36.24 +G01 X+21.26 Y-36.64 +G01 X+20.058 Y-36.772 +G01 X+18.856 Y-36.66 +G01 X+17.598 Y-36.282 +G01 X+8.917 Y-31.135 +G01 X+3.86 Y-22.658 +G01 X+3.43 Y-21.417 +G01 X+3.262 Y-20.059 +G01 X+3.372 Y-18.867 +G01 X+3.747 Y-17.623 +G01 X+8.918 Y-8.97 +G01 X+17.279 Y-3.936 +G01 X+18.514 Y-3.483 +G01 X+19.772 Y-3.299 +G01 X+21.12 Y-3.404 +G01 X+22.352 Y-3.777 +G01 X+30.923 Y-8.938 +G01 X+36.082 Y-17.398 +G01 X+36.486 Y-18.53 +G01 X+36.668 Y-19.774 +G01 X+36.563 Y-21.108 +G01 X+36.194 Y-22.326 +G01 X+30.975 Y-30.925 +G01 X+22.574 Y-36.054 +G01 X+21.455 Y-36.454 +G01 X+20.224 Y-36.635 +G01 X+18.903 Y-36.531 +G01 X+17.699 Y-36.164 +G01 X+9.127 Y-30.922 +G01 X+3.975 Y-22.547 +G01 X+3.577 Y-21.44 +G01 X+3.398 Y-20.222 +G01 X+3.501 Y-18.915 +G01 X+3.865 Y-17.724 +G01 X+9.131 Y-9.18 +G01 X+17.393 Y-4.051 +G01 X+18.575 Y-3.61 +G01 X+19.78 Y-3.431 +G01 X+21.074 Y-3.533 +G01 X+22.251 Y-3.894 +G01 X+30.714 Y-9.15 +G01 X+35.967 Y-17.509 +G01 X+36.359 Y-18.591 +G01 X+36.536 Y-19.782 +G01 X+36.435 Y-21.062 +G01 X+36.076 Y-22.226 +G01 X+30.763 Y-30.715 +G01 X+22.463 Y-35.939 +G01 X+21.394 Y-36.327 +G01 X+20.216 Y-36.503 +G01 X+18.95 Y-36.402 +G01 X+17.8 Y-36.047 +G01 X+9.337 Y-30.71 +G01 X+4.09 Y-22.435 +G01 X+3.705 Y-21.379 +G01 X+3.529 Y-20.213 +G01 X+3.615 Y-19.039 +G01 X+3.982 Y-17.825 +G01 X+9.344 Y-9.39 +G01 X+17.507 Y-4.166 +G01 X+18.635 Y-3.737 +G01 X+19.789 Y-3.562 +G01 X+20.95 Y-3.647 +G01 X+22.149 Y-4.012 +G01 X+30.504 Y-9.362 +G01 X+35.852 Y-17.62 +G01 X+36.232 Y-18.651 +G01 X+36.405 Y-19.791 +G01 X+36.32 Y-20.94 +G01 X+35.959 Y-22.124 +G01 X+30.55 Y-30.505 +G01 X+22.352 Y-35.824 +G01 X+21.334 Y-36.2 +G01 X+20.207 Y-36.372 +G01 X+19.071 Y-36.288 +G01 X+17.901 Y-35.929 +G01 X+9.547 Y-30.497 +G01 X+4.205 Y-22.324 +G01 X+3.832 Y-21.319 +G01 X+3.661 Y-20.205 +G01 X+3.744 Y-19.082 +G01 X+4.1 Y-17.926 +G01 X+9.557 Y-9.6 +G01 X+17.621 Y-4.281 +G01 X+18.695 Y-3.864 +G01 X+19.797 Y-3.694 +G01 X+20.907 Y-3.777 +G01 X+22.049 Y-4.129 +G01 X+30.295 Y-9.574 +G01 X+35.737 Y-17.731 +G01 X+36.105 Y-18.711 +G01 X+36.273 Y-19.799 +G01 X+36.191 Y-20.896 +G01 X+35.841 Y-22.023 +G01 X+30.337 Y-30.295 +G01 X+22.241 Y-35.708 +G01 X+21.274 Y-36.073 +G01 X+20.199 Y-36.24 +G01 X+19.114 Y-36.159 +G01 X+18.002 Y-35.812 +G01 X+9.757 Y-30.284 +G01 X+4.32 Y-22.213 +G01 X+3.959 Y-21.259 +G01 X+3.793 Y-20.197 +G01 X+3.874 Y-19.125 +G01 X+4.217 Y-18.027 +G01 X+9.769 Y-9.809 +G01 X+17.735 Y-4.396 +G01 X+18.755 Y-3.991 +G01 X+19.806 Y-3.826 +G01 X+20.864 Y-3.906 +G01 X+21.948 Y-4.247 +G01 X+30.086 Y-9.787 +G01 X+35.622 Y-17.843 +G01 X+35.938 Y-18.636 +G01 X+36.14 Y-19.806 +G01 X+36.062 Y-20.853 +G01 X+35.724 Y-21.923 +G01 X+30.124 Y-30.085 +G01 X+22.129 Y-35.594 +G01 X+21.347 Y-35.907 +G01 X+20.191 Y-36.107 +G01 X+19.157 Y-36.029 +G01 X+18.103 Y-35.695 +G01 X+9.967 Y-30.071 +G01 X+4.435 Y-22.101 +G01 X+4.124 Y-21.33 +G01 X+3.929 Y-20.258 +G01 X+4.003 Y-19.169 +G01 X+4.335 Y-18.128 +G01 X+9.982 Y-10.019 +G01 X+17.85 Y-4.51 +G01 X+18.686 Y-4.156 +G01 X+19.745 Y-3.962 +G01 X+20.82 Y-4.035 +G01 X+21.847 Y-4.364 +G01 X+29.876 Y-9.999 +G01 X+35.507 Y-17.955 +G01 X+35.813 Y-18.704 +G01 X+36.005 Y-19.748 +G01 X+35.932 Y-20.81 +G01 X+35.606 Y-21.822 +G01 X+29.911 Y-29.875 +G01 X+22.017 Y-35.479 +G01 X+21.28 Y-35.781 +G01 X+20.249 Y-35.972 +G01 X+19.201 Y-35.9 +G01 X+18.203 Y-35.577 +G01 X+10.177 Y-29.858 +G01 X+4.55 Y-21.99 +G01 X+4.25 Y-21.263 +G01 X+4.061 Y-20.246 +G01 X+4.132 Y-19.212 +G01 X+4.452 Y-18.228 +G01 X+10.195 Y-10.229 +G01 X+17.966 Y-4.624 +G01 X+18.511 Y-4.366 +G01 X+19.564 Y-4.11 +G01 X+20.649 Y-4.141 +G01 X+21.745 Y-4.482 +G01 X+29.667 Y-10.211 +G01 X+35.393 Y-18.066 +G01 X+35.668 Y-18.711 +G01 X+35.869 Y-19.697 +G01 X+35.815 Y-20.704 +G01 X+35.489 Y-21.721 +G01 X+29.698 Y-29.665 +G01 X+21.906 Y-35.364 +G01 X+21.271 Y-35.636 +G01 X+20.3 Y-35.836 +G01 X+19.306 Y-35.783 +G01 X+18.305 Y-35.46 +G01 X+10.387 Y-29.645 +G01 X+4.665 Y-21.878 +G01 X+4.395 Y-21.253 +G01 X+4.197 Y-20.296 +G01 X+4.25 Y-19.316 +G01 X+4.57 Y-18.33 +G01 X+10.408 Y-10.44 +G01 X+18.081 Y-4.738 +G01 X+18.593 Y-4.489 +G01 X+19.586 Y-4.242 +G01 X+20.613 Y-4.271 +G01 X+21.645 Y-4.599 +G01 X+29.458 Y-10.424 +G01 X+35.278 Y-18.178 +G01 X+35.542 Y-18.782 +G01 X+35.737 Y-19.711 +G01 X+35.685 Y-20.664 +G01 X+35.372 Y-21.62 +G01 X+29.485 Y-29.455 +G01 X+21.794 Y-35.249 +G01 X+21.2 Y-35.511 +G01 X+20.285 Y-35.704 +G01 X+19.346 Y-35.653 +G01 X+18.405 Y-35.342 +G01 X+10.597 Y-29.432 +G01 X+4.779 Y-21.766 +G01 X+4.54 Y-21.237 +G01 X+4.329 Y-20.282 +G01 X+4.379 Y-19.356 +G01 X+4.687 Y-18.43 +G01 X+10.621 Y-10.65 +G01 X+18.195 Y-4.853 +G01 X+18.675 Y-4.612 +G01 X+19.608 Y-4.373 +G01 X+20.576 Y-4.401 +G01 X+21.544 Y-4.716 +G01 X+29.248 Y-10.636 +G01 X+35.163 Y-18.29 +G01 X+35.398 Y-18.8 +G01 X+35.605 Y-19.726 +G01 X+35.556 Y-20.624 +G01 X+35.254 Y-21.52 +G01 X+29.272 Y-29.245 +G01 X+21.682 Y-35.134 +G01 X+21.181 Y-35.367 +G01 X+20.271 Y-35.572 +G01 X+19.386 Y-35.523 +G01 X+18.506 Y-35.225 +G01 X+10.807 Y-29.219 +G01 X+4.894 Y-21.654 +G01 X+4.664 Y-21.163 +G01 X+4.461 Y-20.267 +G01 X+4.509 Y-19.396 +G01 X+4.805 Y-18.531 +G01 X+10.835 Y-10.86 +G01 X+18.309 Y-4.967 +G01 X+18.756 Y-4.736 +G01 X+19.629 Y-4.505 +G01 X+20.54 Y-4.532 +G01 X+21.444 Y-4.834 +G01 X+29.039 Y-10.849 +G01 X+35.049 Y-18.402 +G01 X+35.235 Y-18.778 +G01 X+35.462 Y-19.635 +G01 X+35.436 Y-20.531 +G01 X+35.137 Y-21.418 +G01 X+29.059 Y-29.035 +G01 X+21.57 Y-35.02 +G01 X+21.201 Y-35.204 +G01 X+20.36 Y-35.429 +G01 X+19.478 Y-35.403 +G01 X+18.607 Y-35.107 +G01 X+11.017 Y-29.005 +G01 X+5.009 Y-21.542 +G01 X+4.827 Y-21.181 +G01 X+4.603 Y-20.355 +G01 X+4.629 Y-19.488 +G01 X+4.922 Y-18.632 +G01 X+11.048 Y-11.07 +G01 X+18.424 Y-5.082 +G01 X+18.838 Y-4.859 +G01 X+19.651 Y-4.636 +G01 X+20.503 Y-4.662 +G01 X+21.343 Y-4.951 +G01 X+28.829 Y-11.061 +G01 X+34.934 Y-18.514 +G01 X+35.112 Y-18.86 +G01 X+35.331 Y-19.656 +G01 X+35.306 Y-20.494 +G01 X+35.019 Y-21.318 +G01 X+28.846 Y-28.825 +G01 X+21.457 Y-34.906 +G01 X+21.206 Y-35.042 +G01 X+20.387 Y-35.291 +G01 X+19.563 Y-35.282 +G01 X+18.75 Y-35.012 +G01 X+11.228 Y-28.792 +G01 X+5.123 Y-21.429 +G01 X+4.989 Y-21.184 +G01 X+4.742 Y-20.381 +G01 X+4.751 Y-19.571 +G01 X+5.018 Y-18.774 +G01 X+11.261 Y-11.28 +G01 X+18.54 Y-5.195 +G01 X+18.837 Y-5.021 +G01 X+19.625 Y-4.775 +G01 X+20.42 Y-4.783 +G01 X+21.201 Y-5.047 +G01 X+28.62 Y-11.274 +G01 X+34.82 Y-18.627 +G01 X+34.951 Y-18.861 +G01 X+35.192 Y-19.631 +G01 X+35.184 Y-20.412 +G01 X+34.923 Y-21.177 +G01 X+28.632 Y-28.615 +G01 X+21.345 Y-34.791 +G01 X+21.117 Y-34.92 +G01 X+20.362 Y-35.159 +G01 X+19.596 Y-35.151 +G01 X+18.847 Y-34.893 +G01 X+11.581 Y-28.703 +G01 X+5.237 Y-21.317 +G01 X+5.11 Y-21.095 +G01 X+4.874 Y-20.356 +G01 X+4.881 Y-19.605 +G01 X+5.136 Y-18.871 +G01 X+11.474 Y-11.49 +G01 X+18.655 Y-5.31 +G01 X+18.925 Y-5.142 +G01 X+19.65 Y-4.906 +G01 X+20.387 Y-4.914 +G01 X+21.105 Y-5.166 +G01 X+28.41 Y-11.486 +G01 X+34.706 Y-18.739 +G01 X+34.829 Y-18.949 +G01 X+35.061 Y-19.656 +G01 X+35.054 Y-20.379 +G01 X+34.805 Y-21.081 +G01 X+28.544 Y-28.263 +G01 X+21.231 Y-34.678 +G01 X+21.142 Y-34.733 +G01 X+20.461 Y-35.004 +G01 X+19.714 Y-35.034 +G01 X+18.945 Y-34.775 +G01 X+11.975 Y-28.656 +G01 X+5.35 Y-21.203 +G01 X+5.296 Y-21.116 +G01 X+5.029 Y-20.453 +G01 X+4.999 Y-19.72 +G01 X+5.217 Y-19.039 +G01 X+11.688 Y-11.701 +G01 X+18.816 Y-5.386 +G01 X+19.517 Y-5.071 +G01 X+20.233 Y-5.026 +G01 X+20.938 Y-5.247 +G01 X+28.015 Y-11.532 +G01 X+34.585 Y-18.845 +G01 X+34.886 Y-19.489 +G01 X+34.94 Y-20.226 +G01 X+34.723 Y-20.916 +G01 X+28.5 Y-27.87 +G01 X+21.127 Y-34.557 +G01 X+20.501 Y-34.854 +G01 X+19.78 Y-34.908 +G01 X+19.106 Y-34.693 +G01 X+12.181 Y-28.448 +G01 X+5.472 Y-21.099 +G01 X+5.179 Y-20.49 +G01 X+5.125 Y-19.785 +G01 X+5.337 Y-19.129 +G01 X+11.901 Y-11.911 +G01 X+18.929 Y-5.501 +G01 X+19.555 Y-5.202 +G01 X+20.209 Y-5.158 +G01 X+20.849 Y-5.367 +G01 X+27.631 Y-11.578 +G01 X+34.471 Y-18.957 +G01 X+34.756 Y-19.531 +G01 X+34.809 Y-20.203 +G01 X+34.603 Y-20.827 +G01 X+28.287 Y-27.669 +G01 X+21.015 Y-34.442 +G01 X+20.459 Y-34.723 +G01 X+19.803 Y-34.776 +G01 X+19.195 Y-34.572 +G01 X+12.565 Y-28.407 +G01 X+5.586 Y-20.987 +G01 X+5.31 Y-20.449 +G01 X+5.257 Y-19.809 +G01 X+5.458 Y-19.217 +G01 X+12.118 Y-12.118 +G01 X+18.993 Y-5.658 +G01 X+19.561 Y-5.344 +G01 X+20.152 Y-5.285 +G01 X+20.732 Y-5.472 +G01 X+27.246 Y-11.613 +G01 X+34.358 Y-19.071 +G01 X+34.606 Y-19.513 +G01 X+34.684 Y-20.113 +G01 X+34.498 Y-20.71 +G01 X+28.427 Y-27.101 +G01 X+20.901 Y-34.329 +G01 X+20.475 Y-34.573 +G01 X+19.891 Y-34.651 +G01 X+19.311 Y-34.468 +G01 X+12.949 Y-28.376 +G01 X+5.699 Y-20.873 +G01 X+5.459 Y-20.463 +G01 X+5.382 Y-19.895 +G01 X+5.548 Y-19.358 +G01 X+12.33 Y-12.33 +G01 X+19.11 Y-5.77 +G01 X+19.548 Y-5.494 +G01 X+20.101 Y-5.415 +G01 X+20.622 Y-5.578 +G01 X+26.339 Y-11.124 +G01 X+34.245 Y-19.185 +G01 X+34.455 Y-19.511 +G01 X+34.556 Y-20.039 +G01 X+34.419 Y-20.552 +G01 X+29.632 Y-25.479 +G01 X+20.787 Y-34.217 +G01 X+20.475 Y-34.422 +G01 X+19.964 Y-34.523 +G01 X+19.466 Y-34.387 +G01 X+18.131 Y-33.137 +G01 X+5.809 Y-20.756 +G01 X+5.644 Y-20.53 +G01 X+5.511 Y-20.024 +G01 X+5.643 Y-19.488 +G01 X+12.542 Y-12.542 +G01 X+19.248 Y-5.836 +G01 X+19.543 Y-5.629 +G01 X+20.027 Y-5.527 +G01 X+20.508 Y-5.659 +G01 X+34.164 Y-19.248 +G01 X+34.371 Y-19.543 +G01 X+34.473 Y-20.027 +G01 X+34.341 Y-20.508 +G01 X+20.752 Y-34.164 +G01 X+20.457 Y-34.371 +G01 X+19.973 Y-34.473 +G01 X+19.492 Y-34.341 +G01 X+5.834 Y-20.751 +G01 X+5.656 Y-20.512 +G01 X+5.527 Y-20.036 +G01 X+5.629 Y-19.552 +G01 X+12.542 Y-12.542 +G00 Z+4.255 +G00 X+0 Y+1.95 +G00 Z-0.745 +G01 Z-1.97 F10000 +G01 X+40.391 Y+1.904 F12000 +G01 X+41.091 Y+1.609 +G01 X+41.624 Y+1.069 +G01 X+41.913 Y+0.359 +G01 X+41.949 Y+0.007 +G01 X+41.904 Y-40.391 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-1.091 Y-41.609 +G01 X-1.624 Y-41.069 +G01 X-1.913 Y-40.359 +G01 X-1.949 Y-40.007 +G01 X-1.904 Y+0.391 +G01 X-1.876 Y+0.487 +G01 X-1.806 Y+0.708 +G01 X-1.437 Y+1.298 +G01 X-1.035 Y+1.638 +G01 X-0.712 Y+1.803 +G01 X-0.235 Y+1.923 +G01 X+0 Y+1.939 +G01 X+40 Y+1.891 +G01 X+40.102 Y+1.886 +G01 X+40.533 Y+1.811 +G01 X+40.803 Y+1.709 +G01 X+41.106 Y+1.53 +G01 X+41.31 Y+1.359 +G01 X+41.561 Y+1.06 +G01 X+41.752 Y+0.7 +G01 X+41.826 Y+0.476 +G01 X+41.887 Y-0.556 +G01 X+41.879 Y-28.025 +G01 X+41.839 Y-40 +G01 X+41.828 Y-40.187 +G01 X+41.606 Y-40.887 +G01 X+41.537 Y-41.007 +G01 X+41.035 Y-41.513 +G01 X+40.699 Y-41.697 +G01 X+40.445 Y-41.78 +G01 X+39.321 Y-41.835 +G01 X+15 Y-41.865 +G01 X+0.185 Y-41.788 +G01 X-0.38 Y-41.744 +G01 X-0.595 Y-41.684 +G01 X-1.238 Y-41.278 +G01 X-1.581 Y-40.817 +G01 X-1.782 Y-39.579 +G01 X-1.835 Y-25.9 +G01 X-1.837 Y-15.247 +G01 X-1.744 Y-6.539 +G01 X-1.734 Y-0.009 +G01 X-1.69 Y+0.377 +G01 X-1.613 Y+0.63 +G01 X-1.284 Y+1.157 +G01 X-0.925 Y+1.461 +G01 X-0.637 Y+1.608 +G01 X-0.211 Y+1.716 +G01 X+0 Y+1.73 +G01 X+10.976 Y+1.764 +G01 X+22.407 Y+1.829 +G01 X+36.728 Y+1.673 +G01 X+40 Y+1.668 +G01 X+40.468 Y+1.598 +G01 X+40.707 Y+1.509 +G01 X+40.974 Y+1.351 +G01 X+41.155 Y+1.2 +G01 X+41.373 Y+0.94 +G01 X+41.604 Y+0.43 +G01 X+41.663 Y-0.679 +G01 X+41.698 Y-9.851 +G01 X+41.806 Y-21.42 +G01 X+41.609 Y-35.988 +G01 X+41.603 Y-40 +G01 X+41.593 Y-40.157 +G01 X+41.342 Y-40.859 +G01 X+40.904 Y-41.316 +G01 X+40.611 Y-41.477 +G01 X+40.391 Y-41.55 +G01 X+39.074 Y-41.598 +G01 X+30.926 Y-41.63 +G01 X+19.198 Y-41.78 +G01 X+4.383 Y-41.544 +G01 X+0.185 Y-41.537 +G01 X-0.324 Y-41.5 +G01 X-0.508 Y-41.448 +G01 X-1.061 Y-41.101 +G01 X-1.356 Y-40.707 +G01 X-1.531 Y-39.578 +G01 X-1.563 Y-31.42 +G01 X-1.753 Y-19.691 +G01 X-1.482 Y-6.539 +G01 X-1.471 Y-0.009 +G01 X-1.435 Y+0.318 +G01 X-1.369 Y+0.532 +G01 X-1.091 Y+0.978 +G01 X-0.787 Y+1.238 +G01 X-0.543 Y+1.363 +G01 X-0.181 Y+1.456 +G01 X+0 Y+1.468 +G01 X+8.226 Y+1.496 +G01 X+19.938 Y+1.724 +G01 X+28.15 Y+1.56 +G01 X+35 Y+1.414 +G01 X+40 Y+1.406 +G01 X+40.392 Y+1.347 +G01 X+40.594 Y+1.272 +G01 X+40.819 Y+1.139 +G01 X+40.971 Y+1.013 +G01 X+41.155 Y+0.795 +G01 X+41.35 Y+0.367 +G01 X+41.401 Y-0.926 +G01 X+41.432 Y-8.086 +G01 X+41.695 Y-19.691 +G01 X+41.569 Y-26.235 +G01 X+41.348 Y-34.753 +G01 X+41.34 Y-40 +G01 X+41.333 Y-40.128 +G01 X+41.124 Y-40.713 +G01 X+40.758 Y-41.098 +G01 X+40.513 Y-41.234 +G01 X+40.331 Y-41.295 +G01 X+38.457 Y-41.335 +G01 X+32.16 Y-41.365 +G01 X+20.556 Y-41.666 +G01 X+14.753 Y-41.559 +G01 X+5.37 Y-41.283 +G01 X+0.185 Y-41.275 +G01 X-0.265 Y-41.244 +G01 X-0.418 Y-41.202 +G01 X-0.876 Y-40.916 +G01 X-1.12 Y-40.592 +G01 X-1.27 Y-39.577 +G01 X-1.295 Y-32.407 +G01 X-1.636 Y-20.802 +G01 X-1.546 Y-15.494 +G01 X-1.219 Y-6.539 +G01 X-1.209 Y-0.009 +G01 X-1.179 Y+0.259 +G01 X-1.126 Y+0.434 +G01 X-0.899 Y+0.8 +G01 X-0.649 Y+1.015 +G01 X-0.453 Y+1.117 +G01 X-0.013 Y+1.204 +G01 X+7.476 Y+1.229 +G01 X+19.074 Y+1.606 +G01 X+24.151 Y+1.523 +G01 X+34.383 Y+1.152 +G01 X+40 Y+1.143 +G01 X+40.316 Y+1.096 +G01 X+40.476 Y+1.037 +G01 X+40.782 Y+0.828 +G01 X+40.937 Y+0.649 +G01 X+41.095 Y+0.305 +G01 X+41.138 Y-2.037 +G01 X+41.171 Y-7.593 +G01 X+41.576 Y-19.074 +G01 X+41.499 Y-23.889 +G01 X+41.087 Y-34.259 +G01 X+41.078 Y-40 +G01 X+41.063 Y-40.142 +G01 X+40.906 Y-40.568 +G01 X+40.617 Y-40.875 +G01 X+40.277 Y-41.034 +G01 X+32.407 Y-41.109 +G01 X+21.173 Y-41.544 +G01 X+16.481 Y-41.479 +G01 X+5.741 Y-41.021 +G01 X-0.202 Y-40.987 +G01 X-0.328 Y-40.956 +G01 X-0.69 Y-40.73 +G01 X-0.884 Y-40.478 +G01 X-1.008 Y-39.452 +G01 X-1.036 Y-32.654 +G01 X-1.513 Y-21.296 +G01 X-1.451 Y-16.605 +G01 X-0.957 Y-6.539 +G01 X-0.946 Y-0.014 +G01 X-0.883 Y+0.326 +G01 X-0.707 Y+0.622 +G01 X-0.511 Y+0.793 +G01 X-0.358 Y+0.873 +G01 X-0.013 Y+0.942 +G01 X+7.226 Y+0.967 +G01 X+18.58 Y+1.482 +G01 X+23.025 Y+1.433 +G01 X+34.136 Y+0.89 +G01 X+40 Y+0.881 +G01 X+40.353 Y+0.801 +G01 X+40.598 Y+0.641 +G01 X+40.719 Y+0.504 +G01 X+40.841 Y+0.242 +G01 X+40.91 Y-7.346 +G01 X+41.454 Y-18.704 +G01 X+41.405 Y-22.901 +G01 X+40.825 Y-34.136 +G01 X+40.815 Y-40 +G01 X+40.802 Y-40.112 +G01 X+40.688 Y-40.422 +G01 X+40.472 Y-40.657 +G01 X+40.217 Y-40.779 +G01 X+32.654 Y-40.847 +G01 X+21.543 Y-41.42 +G01 X+17.346 Y-41.383 +G01 X+5.864 Y-40.759 +G01 X-0.209 Y-40.706 +G01 X-0.505 Y-40.545 +G01 X-0.648 Y-40.364 +G01 X-0.747 Y-39.444 +G01 X-0.77 Y-32.901 +G01 X-1.387 Y-21.667 +G01 X-1.361 Y-17.593 +G01 X-0.694 Y-6.539 +G01 X-0.684 Y-0.014 +G01 X-0.639 Y+0.228 +G01 X-0.518 Y+0.438 +G01 X-0.271 Y+0.62 +G01 X-0.013 Y+0.68 +G01 X+7.226 Y+0.714 +G01 X+18.333 Y+1.357 +G01 X+22.407 Y+1.33 +G01 X+34.012 Y+0.628 +G01 X+39.983 Y+0.618 +G01 X+40.23 Y+0.566 +G01 X+40.489 Y+0.365 +G01 X+40.586 Y+0.178 +G01 X+40.643 Y-7.099 +G01 X+41.324 Y-18.21 +G01 X+41.313 Y-22.037 +G01 X+40.562 Y-34.012 +G01 X+40.553 Y-40 +G01 X+40.471 Y-40.276 +G01 X+40.326 Y-40.439 +G01 X+40.156 Y-40.525 +G01 X+32.901 Y-40.579 +G01 X+21.79 Y-41.294 +G01 X+17.963 Y-41.283 +G01 X+5.988 Y-40.497 +G01 X-0.124 Y-40.457 +G01 X-0.32 Y-40.36 +G01 X-0.411 Y-40.25 +G01 X-0.485 Y-39.198 +G01 X-0.515 Y-32.901 +G01 X-1.264 Y-21.79 +G01 X-1.252 Y-17.963 +G01 X-0.432 Y-6.539 +G01 X-0.422 Y-0.028 +G01 X-0.326 Y+0.243 +G01 X-0.177 Y+0.375 +G01 X-0.013 Y+0.419 +G01 X+6.976 Y+0.443 +G01 X+18.21 Y+1.234 +G01 X+21.79 Y+1.231 +G01 X+27.4 Y+0.842 +G01 X+33.889 Y+0.366 +G01 X+39.964 Y+0.356 +G01 X+40.226 Y+0.241 +G01 X+40.304 Y+0.144 +G01 X+40.351 Y-0.044 +G01 X+40.388 Y-7.099 +G01 X+41.204 Y-18.21 +G01 X+41.201 Y-21.79 +G01 X+40.826 Y-27.025 +G01 X+40.3 Y-33.889 +G01 X+40.29 Y-39.964 +G01 X+40.2 Y-40.178 +G01 X+40.113 Y-40.253 +G01 X+39.976 Y-40.29 +G01 X+32.901 Y-40.324 +G01 X+22.037 Y-41.164 +G01 X+18.58 Y-41.183 +G01 X+14.753 Y-40.931 +G01 X+6.111 Y-40.235 +G01 X-0.034 Y-40.211 +G01 X-0.133 Y-40.175 +G01 X-0.202 Y-40.05 +G01 X-0.26 Y-32.901 +G01 X-1.133 Y-22.037 +G01 X-1.157 Y-18.704 +G01 X-0.913 Y-15 +G01 X-0.17 Y-6.539 +G01 X-0.163 Y-0.057 +G01 X-0.125 Y+0.042 +G01 X+0.047 Y+0.162 +G01 X+6.976 Y+0.194 +G01 X+17.963 Y+1.109 +G01 X+21.296 Y+1.135 +G01 X+24.901 Y+0.894 +G01 X+33.889 Y+0.127 +G01 X+39.938 Y+0.121 +G01 X+40.044 Y+0.077 +G01 X+40.121 Y-0.062 +G01 X+40.163 Y-7.099 +G01 X+41.084 Y-17.84 +G01 X+41.12 Y-21.173 +G01 X+40.883 Y-24.753 +G01 X+40.085 Y-33.889 +G01 X+40.079 Y-39.929 +G01 X+39.93 Y-40.079 +G01 X+32.901 Y-40.122 +G01 X+22.16 Y-41.064 +G01 X+18.827 Y-41.101 +G01 X+15.494 Y-40.882 +G01 X+6.111 Y-40.043 +G01 X+0.123 Y-40.026 +G01 X-0.027 Y-39.877 +G01 X-0.081 Y-32.901 +G01 X-1.044 Y-22.16 +G01 X-1.082 Y-18.827 +G01 X-0.858 Y-15.494 +G01 X-0.002 Y-6.546 +G01 X+0.006 Y-0.247 +G01 X+0.05 Y-0.141 +G01 X+0.142 Y-0.05 +G01 X+0.247 Y-0.006 +G01 X+6.976 Y+0.028 +G01 X+17.84 Y+1.023 +G01 X+21.173 Y+1.062 +G01 X+24.401 Y+0.842 +G01 X+33.882 Y-0.046 +G01 X+39.798 Y-0.061 +G01 X+39.948 Y-0.21 +G01 X+39.994 Y-7.099 +G01 X+41.002 Y-17.84 +G01 X+41.041 Y-21.173 +G01 X+40.806 Y-24.506 +G01 X+39.908 Y-33.882 +G01 X+39.9 Y-39.751 +G01 X+39.751 Y-39.9 +G01 X+32.908 Y-39.948 +G01 X+22.16 Y-40.98 +G01 X+19.074 Y-41.026 +G01 X+15.988 Y-40.83 +G01 X+6.118 Y-39.861 +G01 X+0.296 Y-39.853 +G01 X+0.146 Y-39.704 +G01 X+0.123 Y-33.156 +G01 X-0.958 Y-22.16 +G01 X-1.006 Y-19.074 +G01 X-0.805 Y-15.988 +G01 X+0.186 Y-6.547 +G01 X+0.196 Y-0.371 +G01 X+0.24 Y-0.265 +G01 X+0.37 Y-0.195 +G01 X+6.969 Y-0.16 +G01 X+17.716 Y+0.924 +G01 X+20.802 Y+0.984 +G01 X+23.889 Y+0.787 +G01 X+33.758 Y-0.247 +G01 X+39.594 Y-0.257 +G01 X+39.744 Y-0.406 +G01 X+39.767 Y-6.844 +G01 X+40.903 Y-17.84 +G01 X+40.957 Y-20.802 +G01 X+40.754 Y-23.889 +G01 X+39.692 Y-33.758 +G01 X+39.682 Y-39.506 +G01 X+39.639 Y-39.612 +G01 X+39.506 Y-39.683 +G01 X+33.156 Y-39.707 +G01 X+22.167 Y-40.874 +G01 X+19.198 Y-40.93 +G01 X+16.111 Y-40.722 +G01 X+6.243 Y-39.631 +G01 X+0.528 Y-39.622 +G01 X+0.378 Y-39.472 +G01 X+0.353 Y-33.156 +G01 X-0.845 Y-22.167 +G01 X-0.902 Y-19.204 +G01 X-0.69 Y-16.111 +G01 X+0.429 Y-6.548 +G01 X+0.439 Y-0.618 +G01 X+0.483 Y-0.512 +G01 X+0.617 Y-0.439 +G01 X+6.969 Y-0.398 +G01 X+17.709 Y+0.809 +G01 X+20.679 Y+0.878 +G01 X+23.519 Y+0.698 +G01 X+33.757 Y-0.49 +G01 X+39.351 Y-0.5 +G01 X+39.5 Y-0.649 +G01 X+39.528 Y-6.843 +G01 X+40.772 Y-17.593 +G01 X+40.856 Y-20.425 +G01 X+40.68 Y-23.395 +G01 X+39.449 Y-33.757 +G01 X+39.439 Y-39.259 +G01 X+39.395 Y-39.365 +G01 X+39.259 Y-39.439 +G01 X+33.407 Y-39.437 +G01 X+22.414 Y-40.742 +G01 X+19.575 Y-40.829 +G01 X+16.605 Y-40.649 +G01 X+6.243 Y-39.388 +G01 X+0.772 Y-39.378 +G01 X+0.622 Y-39.228 +G01 X+0.623 Y-33.408 +G01 X-0.713 Y-22.414 +G01 X-0.802 Y-19.575 +G01 X-0.618 Y-16.605 +G01 X+0.672 Y-6.548 +G01 X+0.682 Y-0.864 +G01 X+0.726 Y-0.759 +G01 X+0.864 Y-0.682 +G01 X+6.719 Y-0.667 +G01 X+17.586 Y+0.685 +G01 X+20.425 Y+0.775 +G01 X+23.148 Y+0.614 +G01 X+33.756 Y-0.734 +G01 X+39.107 Y-0.743 +G01 X+39.257 Y-0.893 +G01 X+39.256 Y-6.592 +G01 X+40.656 Y-17.586 +G01 X+40.75 Y-20.302 +G01 X+40.596 Y-23.025 +G01 X+39.205 Y-33.756 +G01 X+39.196 Y-39.012 +G01 X+39.152 Y-39.118 +G01 X+39.012 Y-39.196 +G01 X+33.408 Y-39.195 +G01 X+22.414 Y-40.627 +G01 X+19.698 Y-40.723 +G01 X+16.975 Y-40.566 +G01 X+6.244 Y-39.145 +G01 X+1.015 Y-39.135 +G01 X+0.865 Y-38.985 +G01 X+0.866 Y-33.408 +G01 X-0.587 Y-22.538 +G01 X-0.696 Y-19.699 +G01 X-0.536 Y-16.975 +G01 X+0.916 Y-6.549 +G01 X+0.926 Y-1.111 +G01 X+0.97 Y-1.006 +G01 X+1.111 Y-0.926 +G01 X+6.718 Y-0.908 +G01 X+17.462 Y+0.558 +G01 X+20.301 Y+0.669 +G01 X+22.901 Y+0.519 +G01 X+33.755 Y-0.977 +G01 X+38.864 Y-0.987 +G01 X+39.013 Y-1.137 +G01 X+39.014 Y-6.591 +G01 X+40.529 Y-17.462 +G01 X+40.644 Y-20.055 +G01 X+40.514 Y-22.648 +G01 X+38.962 Y-33.755 +G01 X+38.952 Y-38.765 +G01 X+38.909 Y-38.871 +G01 X+38.765 Y-38.952 +G01 X+33.409 Y-38.953 +G01 X+22.538 Y-40.5 +G01 X+19.946 Y-40.618 +G01 X+17.352 Y-40.485 +G01 X+6.245 Y-38.901 +G01 X+1.258 Y-38.892 +G01 X+1.109 Y-38.742 +G01 X+1.108 Y-33.409 +G01 X-0.47 Y-22.538 +G01 X-0.591 Y-19.946 +G01 X-0.456 Y-17.353 +G01 X+1.159 Y-6.55 +G01 X+1.169 Y-1.358 +G01 X+1.213 Y-1.252 +G01 X+1.358 Y-1.169 +G01 X+6.718 Y-1.149 +G01 X+17.462 Y+0.441 +G01 X+20.054 Y+0.564 +G01 X+22.647 Y+0.426 +G01 X+33.755 Y-1.221 +G01 X+38.62 Y-1.23 +G01 X+38.77 Y-1.38 +G01 X+38.771 Y-6.59 +G01 X+40.412 Y-17.462 +G01 X+40.537 Y-19.931 +G01 X+40.422 Y-22.4 +G01 X+39.865 Y-26.235 +G01 X+38.719 Y-33.754 +G01 X+38.704 Y-38.56 +G01 X+38.554 Y-38.709 +G01 X+33.41 Y-38.711 +G01 X+22.538 Y-40.383 +G01 X+20.069 Y-40.511 +G01 X+17.6 Y-40.393 +G01 X+13.765 Y-39.826 +G01 X+6.246 Y-38.658 +G01 X+1.502 Y-38.648 +G01 X+1.352 Y-38.498 +G01 X+1.35 Y-33.41 +G01 X-0.354 Y-22.539 +G01 X-0.484 Y-20.069 +G01 X-0.364 Y-17.6 +G01 X+0.173 Y-14.012 +G01 X+1.402 Y-6.551 +G01 X+1.419 Y-1.562 +G01 X+1.57 Y-1.413 +G01 X+6.527 Y-1.42 +G01 X+17.338 Y+0.311 +G01 X+19.93 Y+0.457 +G01 X+22.4 Y+0.335 +G01 X+25.9 Y-0.197 +G01 X+33.754 Y-1.464 +G01 X+38.377 Y-1.473 +G01 X+38.527 Y-1.623 +G01 X+38.529 Y-6.589 +G01 X+40.282 Y-17.338 +G01 X+40.43 Y-19.93 +G01 X+40.306 Y-22.4 +G01 X+39.791 Y-25.741 +G01 X+38.475 Y-33.754 +G01 X+38.457 Y-38.316 +G01 X+38.307 Y-38.466 +G01 X+33.411 Y-38.468 +G01 X+22.662 Y-40.252 +G01 X+20.07 Y-40.403 +G01 X+17.6 Y-40.277 +G01 X+14.259 Y-39.753 +G01 X+6.552 Y-38.415 +G01 X+1.745 Y-38.405 +G01 X+1.595 Y-38.255 +G01 X+1.592 Y-33.411 +G01 X-0.223 Y-22.662 +G01 X-0.375 Y-20.316 +G01 X-0.285 Y-17.971 +G01 X+0.067 Y-15.494 +G01 X+1.646 Y-6.552 +G01 X+1.666 Y-1.805 +G01 X+1.816 Y-1.656 +G01 X+6.526 Y-1.663 +G01 X+17.338 Y+0.194 +G01 X+19.684 Y+0.348 +G01 X+22.029 Y+0.256 +G01 X+24.651 Y-0.128 +G01 X+33.448 Y-1.707 +G01 X+38.134 Y-1.717 +G01 X+38.283 Y-1.866 +G01 X+38.287 Y-6.589 +G01 X+40.164 Y-17.338 +G01 X+40.321 Y-19.683 +G01 X+40.228 Y-22.029 +G01 X+39.864 Y-24.506 +G01 X+38.232 Y-33.629 +G01 X+38.211 Y-38.073 +G01 X+38.061 Y-38.223 +G01 X+33.412 Y-38.226 +G01 X+22.662 Y-40.135 +G01 X+20.317 Y-40.294 +G01 X+17.971 Y-40.2 +G01 X+15.494 Y-39.83 +G01 X+6.553 Y-38.172 +G01 X+1.988 Y-38.162 +G01 X+1.838 Y-38.012 +G01 X+1.835 Y-33.412 +G01 X-0.105 Y-22.662 +G01 X-0.268 Y-20.317 +G01 X-0.171 Y-17.971 +G01 X+0.205 Y-15.494 +G01 X+1.889 Y-6.553 +G01 X+1.913 Y-2.049 +G01 X+2.063 Y-1.899 +G01 X+6.525 Y-1.906 +G01 X+17.337 Y+0.076 +G01 X+19.683 Y+0.241 +G01 X+22.029 Y+0.143 +G01 X+24.401 Y-0.219 +G01 X+33.447 Y-1.95 +G01 X+37.89 Y-1.96 +G01 X+38.04 Y-2.11 +G01 X+38.044 Y-6.588 +G01 X+40.046 Y-17.337 +G01 X+40.214 Y-19.683 +G01 X+40.115 Y-22.029 +G01 X+39.727 Y-24.506 +G01 X+37.989 Y-33.628 +G01 X+37.964 Y-37.83 +G01 X+37.814 Y-37.979 +G01 X+33.412 Y-37.984 +G01 X+22.663 Y-40.017 +G01 X+20.44 Y-40.185 +G01 X+18.218 Y-40.11 +G01 X+15.988 Y-39.79 +G01 X+6.553 Y-37.928 +G01 X+2.231 Y-37.918 +G01 X+2.082 Y-37.769 +G01 X+2.077 Y-33.413 +G01 X+0.012 Y-22.663 +G01 X-0.158 Y-20.44 +G01 X-0.082 Y-18.218 +G01 X+0.243 Y-15.988 +G01 X+2.132 Y-6.553 +G01 X+2.16 Y-2.292 +G01 X+2.31 Y-2.143 +G01 X+6.524 Y-2.149 +G01 X+17.337 Y-0.042 +G01 X+19.559 Y+0.131 +G01 X+21.781 Y+0.054 +G01 X+24.151 Y-0.304 +G01 X+33.446 Y-2.193 +G01 X+37.647 Y-2.203 +G01 X+37.797 Y-2.353 +G01 X+37.802 Y-6.587 +G01 X+39.929 Y-17.337 +G01 X+40.105 Y-19.559 +G01 X+40.026 Y-21.782 +G01 X+39.691 Y-24.012 +G01 X+37.746 Y-33.628 +G01 X+37.717 Y-37.587 +G01 X+37.567 Y-37.736 +G01 X+33.413 Y-37.742 +G01 X+22.663 Y-39.899 +G01 X+20.441 Y-40.078 +G01 X+18.219 Y-39.998 +G01 X+15.988 Y-39.659 +G01 X+6.554 Y-37.685 +G01 X+2.475 Y-37.675 +G01 X+2.325 Y-37.525 +G01 X+2.319 Y-33.413 +G01 X+0.13 Y-22.663 +G01 X-0.051 Y-20.441 +G01 X+0.03 Y-18.219 +G01 X+0.374 Y-15.988 +G01 X+2.376 Y-6.554 +G01 X+2.406 Y-2.535 +G01 X+2.557 Y-2.386 +G01 X+6.524 Y-2.392 +G01 X+17.337 Y-0.159 +G01 X+19.559 Y+0.024 +G01 X+21.781 Y-0.058 +G01 X+24.151 Y-0.437 +G01 X+33.445 Y-2.436 +G01 X+37.404 Y-2.446 +G01 X+37.554 Y-2.596 +G01 X+37.56 Y-6.586 +G01 X+39.811 Y-17.337 +G01 X+39.997 Y-19.559 +G01 X+39.914 Y-21.781 +G01 X+39.56 Y-24.012 +G01 X+37.502 Y-33.627 +G01 X+37.47 Y-37.344 +G01 X+37.321 Y-37.493 +G01 X+33.414 Y-37.499 +G01 X+22.663 Y-39.782 +G01 X+20.564 Y-39.967 +G01 X+18.465 Y-39.909 +G01 X+16.358 Y-39.606 +G01 X+6.555 Y-37.442 +G01 X+2.718 Y-37.432 +G01 X+2.568 Y-37.282 +G01 X+2.561 Y-33.414 +G01 X+0.248 Y-22.663 +G01 X+0.06 Y-20.564 +G01 X+0.119 Y-18.466 +G01 X+0.426 Y-16.358 +G01 X+2.619 Y-6.555 +G01 X+2.653 Y-2.777 +G01 X+2.803 Y-2.629 +G01 X+6.523 Y-2.634 +G01 X+17.337 Y-0.276 +G01 X+19.436 Y-0.086 +G01 X+21.534 Y-0.145 +G01 X+23.642 Y-0.456 +G01 X+33.445 Y-2.675 +G01 X+37.16 Y-2.684 +G01 X+37.266 Y-2.728 +G01 X+37.316 Y-2.84 +G01 X+37.323 Y-6.585 +G01 X+39.697 Y-17.336 +G01 X+39.89 Y-19.435 +G01 X+39.83 Y-21.534 +G01 X+39.515 Y-23.642 +G01 X+37.268 Y-33.626 +G01 X+37.259 Y-37.11 +G01 X+37.11 Y-37.259 +G01 X+33.415 Y-37.267 +G01 X+22.664 Y-39.67 +G01 X+20.565 Y-39.865 +G01 X+18.466 Y-39.804 +G01 X+16.358 Y-39.486 +G01 X+6.556 Y-37.213 +G01 X+2.963 Y-37.203 +G01 X+2.857 Y-37.159 +G01 X+2.797 Y-37.037 +G01 X+2.789 Y-33.415 +G01 X+0.358 Y-22.664 +G01 X+0.16 Y-20.565 +G01 X+0.221 Y-18.466 +G01 X+0.544 Y-16.358 +G01 X+2.843 Y-6.556 +G01 X+2.852 Y-3.002 +G01 X+3.003 Y-2.853 +G01 X+6.522 Y-2.858 +G01 X+17.336 Y-0.384 +G01 X+19.435 Y-0.184 +G01 X+21.534 Y-0.245 +G01 X+23.642 Y-0.571 +G01 X+33.444 Y-2.895 +G01 X+36.913 Y-2.904 +G01 X+37.019 Y-2.948 +G01 X+37.096 Y-3.087 +G01 X+37.105 Y-6.585 +G01 X+39.592 Y-17.336 +G01 X+39.794 Y-19.435 +G01 X+39.731 Y-21.534 +G01 X+39.402 Y-23.642 +G01 X+37.053 Y-33.625 +G01 X+37.045 Y-36.895 +G01 X+36.895 Y-37.045 +G01 X+33.416 Y-37.054 +G01 X+22.664 Y-39.567 +G01 X+20.565 Y-39.771 +G01 X+18.466 Y-39.708 +G01 X+16.358 Y-39.375 +G01 X+6.556 Y-37.002 +G01 X+3.156 Y-36.976 +G01 X+3.007 Y-36.827 +G01 X+2.997 Y-33.416 +G01 X+0.458 Y-22.664 +G01 X+0.252 Y-20.565 +G01 X+0.305 Y-18.59 +G01 X+0.623 Y-16.488 +G01 X+3.049 Y-6.557 +G01 X+3.058 Y-3.21 +G01 X+3.102 Y-3.104 +G01 X+3.21 Y-3.059 +G01 X+6.521 Y-3.063 +G01 X+17.336 Y-0.483 +G01 X+19.435 Y-0.275 +G01 X+21.534 Y-0.339 +G01 X+23.519 Y-0.651 +G01 X+33.443 Y-3.101 +G01 X+36.741 Y-3.11 +G01 X+36.89 Y-3.259 +G01 X+36.9 Y-6.584 +G01 X+39.449 Y-17.09 +G01 X+39.692 Y-19.188 +G01 X+39.669 Y-21.164 +G01 X+39.401 Y-23.14 +G01 X+36.847 Y-33.625 +G01 X+36.839 Y-36.666 +G01 X+36.795 Y-36.772 +G01 X+36.667 Y-36.839 +G01 X+33.416 Y-36.849 +G01 X+22.91 Y-39.424 +G01 X+20.935 Y-39.663 +G01 X+18.837 Y-39.646 +G01 X+16.86 Y-39.375 +G01 X+6.557 Y-36.796 +G01 X+3.363 Y-36.787 +G01 X+3.213 Y-36.638 +G01 X+3.202 Y-33.416 +G01 X+0.601 Y-22.91 +G01 X+0.36 Y-20.936 +G01 X+0.377 Y-18.837 +G01 X+0.65 Y-16.86 +G01 X+3.255 Y-6.557 +G01 X+3.271 Y-3.415 +G01 X+3.421 Y-3.265 +G01 X+6.52 Y-3.271 +G01 X+17.09 Y-0.629 +G01 X+19.064 Y-0.386 +G01 X+21.163 Y-0.403 +G01 X+23.14 Y-0.679 +G01 X+33.443 Y-3.316 +G01 X+36.525 Y-3.326 +G01 X+36.674 Y-3.475 +G01 X+36.684 Y-6.583 +G01 X+39.341 Y-17.09 +G01 X+39.587 Y-19.064 +G01 X+39.57 Y-21.163 +G01 X+39.29 Y-23.14 +G01 X+36.623 Y-33.5 +G01 X+36.606 Y-36.464 +G01 X+36.456 Y-36.614 +G01 X+33.417 Y-36.624 +G01 X+22.91 Y-39.311 +G01 X+20.936 Y-39.56 +G01 X+18.837 Y-39.543 +G01 X+16.86 Y-39.26 +G01 X+6.558 Y-36.563 +G01 X+3.597 Y-36.552 +G01 X+3.448 Y-36.403 +G01 X+3.437 Y-33.417 +G01 X+0.719 Y-22.91 +G01 X+0.467 Y-20.936 +G01 X+0.485 Y-18.837 +G01 X+0.771 Y-16.86 +G01 X+3.498 Y-6.558 +G01 X+3.518 Y-3.658 +G01 X+3.668 Y-3.509 +G01 X+6.52 Y-3.513 +G01 X+17.089 Y-0.749 +G01 X+19.064 Y-0.494 +G01 X+21.163 Y-0.512 +G01 X+23.14 Y-0.801 +G01 X+33.442 Y-3.559 +G01 X+36.281 Y-3.569 +G01 X+36.431 Y-3.719 +G01 X+36.442 Y-6.582 +G01 X+39.221 Y-17.089 +G01 X+39.479 Y-19.064 +G01 X+39.461 Y-21.162 +G01 X+39.169 Y-23.14 +G01 X+36.38 Y-33.5 +G01 X+36.359 Y-36.221 +G01 X+36.21 Y-36.37 +G01 X+33.418 Y-36.382 +G01 X+22.911 Y-39.191 +G01 X+20.936 Y-39.452 +G01 X+18.838 Y-39.434 +G01 X+16.861 Y-39.138 +G01 X+6.558 Y-36.319 +G01 X+3.841 Y-36.309 +G01 X+3.691 Y-36.16 +G01 X+3.679 Y-33.418 +G01 X+0.839 Y-22.911 +G01 X+0.575 Y-20.936 +G01 X+0.594 Y-18.838 +G01 X+0.892 Y-16.861 +G01 X+3.742 Y-6.558 +G01 X+3.764 Y-3.901 +G01 X+3.915 Y-3.752 +G01 X+6.519 Y-3.756 +G01 X+17.089 Y-0.868 +G01 X+19.064 Y-0.602 +G01 X+20.916 +G01 X+22.892 Y-0.87 +G01 X+27.4 Y-2.097 +G01 X+33.441 Y-3.802 +G01 X+36.038 Y-3.812 +G01 X+36.188 Y-3.962 +G01 X+36.2 Y-6.582 +G01 X+39.102 Y-17.089 +G01 X+39.371 Y-19.064 +G01 Y-20.916 +G01 X+39.1 Y-22.891 +G01 X+37.896 Y-27.275 +G01 X+36.137 Y-33.499 +G01 X+36.112 Y-35.979 +G01 X+35.963 Y-36.127 +G01 X+33.419 Y-36.139 +G01 X+22.911 Y-39.072 +G01 X+20.936 Y-39.344 +G01 X+19.084 Y-39.343 +G01 X+17.109 Y-39.07 +G01 X+12.975 Y-37.925 +G01 X+6.559 Y-36.076 +G01 X+4.084 Y-36.066 +G01 X+3.934 Y-35.917 +G01 X+3.921 Y-33.419 +G01 X+0.958 Y-22.911 +G01 X+0.684 Y-20.936 +G01 Y-19.084 +G01 X+0.959 Y-17.109 +G01 X+2.117 Y-12.975 +G01 X+3.985 Y-6.559 +G01 X+4.011 Y-4.144 +G01 X+4.161 Y-3.995 +G01 X+6.518 Y-3.999 +G01 X+17.089 Y-0.988 +G01 X+19.064 Y-0.711 +G01 X+20.915 +G01 X+22.891 Y-0.989 +G01 X+26.9 Y-2.122 +G01 X+33.44 Y-4.045 +G01 X+35.795 Y-4.056 +G01 X+35.945 Y-4.205 +G01 X+35.958 Y-6.581 +G01 X+38.982 Y-17.089 +G01 X+39.262 Y-19.064 +G01 Y-20.915 +G01 X+38.981 Y-22.891 +G01 X+37.874 Y-26.775 +G01 X+35.893 Y-33.498 +G01 X+35.866 Y-35.736 +G01 X+35.717 Y-35.884 +G01 X+33.419 Y-35.897 +G01 X+22.911 Y-38.952 +G01 X+20.937 Y-39.235 +G01 X+19.085 +G01 X+17.109 Y-38.951 +G01 X+13.225 Y-37.833 +G01 X+6.56 Y-35.833 +G01 X+4.327 Y-35.823 +G01 X+4.177 Y-35.674 +G01 X+4.163 Y-33.42 +G01 X+1.078 Y-22.912 +G01 X+0.792 Y-20.937 +G01 Y-19.085 +G01 X+1.079 Y-17.109 +G01 X+2.132 Y-13.475 +G01 X+4.228 Y-6.56 +G01 X+4.258 Y-4.387 +G01 X+4.408 Y-4.238 +G01 X+6.517 Y-4.242 +G01 X+17.088 Y-1.108 +G01 X+19.063 Y-0.819 +G01 X+20.915 +G01 X+22.891 Y-1.109 +G01 X+26.65 Y-2.211 +G01 X+33.44 Y-4.288 +G01 X+35.552 Y-4.299 +G01 X+35.702 Y-4.448 +G01 X+35.716 Y-6.58 +G01 X+38.862 Y-17.088 +G01 X+39.154 Y-19.063 +G01 Y-20.915 +G01 X+38.861 Y-22.891 +G01 X+37.787 Y-26.525 +G01 X+35.65 Y-33.498 +G01 X+35.619 Y-35.493 +G01 X+35.47 Y-35.641 +G01 X+33.42 Y-35.655 +G01 X+22.912 Y-38.832 +G01 X+20.937 Y-39.127 +G01 X+19.085 +G01 X+17.109 Y-38.831 +G01 X+13.725 Y-37.825 +G01 X+6.561 Y-35.59 +G01 X+4.57 Y-35.579 +G01 X+4.42 Y-35.431 +G01 X+4.405 Y-33.42 +G01 X+1.198 Y-22.912 +G01 X+0.9 Y-20.937 +G01 Y-19.085 +G01 X+1.199 Y-17.109 +G01 X+2.202 Y-13.765 +G01 X+4.471 Y-6.56 +G01 X+4.504 Y-4.629 +G01 X+4.654 Y-4.481 +G01 X+6.516 Y-4.485 +G01 X+17.088 Y-1.228 +G01 X+19.063 Y-0.927 +G01 X+20.915 +G01 X+22.891 Y-1.228 +G01 X+26.15 Y-2.215 +G01 X+33.439 Y-4.532 +G01 X+35.308 Y-4.542 +G01 X+35.414 Y-4.586 +G01 X+35.458 Y-4.691 +G01 X+35.474 Y-6.579 +G01 X+38.742 Y-17.088 +G01 X+39.046 Y-19.063 +G01 Y-20.914 +G01 X+38.742 Y-22.891 +G01 X+37.719 Y-26.235 +G01 X+35.407 Y-33.497 +G01 X+35.373 Y-35.251 +G01 X+35.224 Y-35.398 +G01 X+33.421 Y-35.413 +G01 X+23.035 Y-38.683 +G01 X+21.183 Y-38.998 +G01 X+19.455 Y-39.041 +G01 X+17.727 Y-38.842 +G01 X+15.741 Y-38.318 +G01 X+6.561 Y-35.347 +G01 X+4.815 Y-35.336 +G01 X+4.709 Y-35.292 +G01 X+4.663 Y-35.186 +G01 X+4.648 Y-33.421 +G01 X+1.347 Y-23.034 +G01 X+1.042 Y-21.307 +G01 X+0.981 Y-19.578 +G01 X+1.164 Y-17.85 +G01 X+1.635 Y-15.988 +G01 X+4.714 Y-6.561 +G01 X+4.751 Y-4.872 +G01 X+4.901 Y-4.724 +G01 X+6.515 Y-4.727 +G01 X+16.966 Y-1.376 +G01 X+18.693 Y-1.068 +G01 X+20.421 Y-1.006 +G01 X+22.15 Y-1.191 +G01 X+23.889 Y-1.626 +G01 X+33.438 Y-4.77 +G01 X+35.061 Y-4.78 +G01 X+35.167 Y-4.824 +G01 X+35.22 Y-4.938 +G01 X+35.237 Y-6.579 +G01 X+38.596 Y-16.966 +G01 X+38.906 Y-18.693 +G01 X+38.969 Y-20.421 +G01 X+38.782 Y-22.15 +G01 X+38.344 Y-23.889 +G01 X+35.174 Y-33.496 +G01 X+35.164 Y-35.015 +G01 X+35.015 Y-35.165 +G01 X+33.422 Y-35.181 +G01 X+23.035 Y-38.568 +G01 X+21.307 Y-38.881 +G01 X+19.579 Y-38.944 +G01 X+17.85 Y-38.756 +G01 X+16.111 Y-38.314 +G01 X+6.562 Y-35.118 +G01 X+5.062 Y-35.107 +G01 X+4.956 Y-35.063 +G01 X+4.892 Y-34.939 +G01 X+4.875 Y-33.422 +G01 X+1.46 Y-23.035 +G01 X+1.144 Y-21.307 +G01 X+1.081 Y-19.579 +G01 X+1.27 Y-17.85 +G01 X+1.716 Y-16.111 +G01 X+4.938 Y-6.562 +G01 X+4.948 Y-5.098 +G01 X+5.098 Y-4.949 +G01 X+6.515 Y-4.951 +G01 X+16.965 Y-1.486 +G01 X+18.693 Y-1.168 +G01 X+20.421 Y-1.104 +G01 X+22.15 Y-1.295 +G01 X+23.889 Y-1.744 +G01 X+33.438 Y-4.99 +G01 X+34.815 Y-5 +G01 X+34.92 Y-5.044 +G01 X+35.001 Y-5.184 +G01 X+35.018 Y-6.578 +G01 X+38.488 Y-16.965 +G01 X+38.808 Y-18.693 +G01 X+38.873 Y-20.421 +G01 X+38.681 Y-22.15 +G01 X+38.229 Y-23.889 +G01 X+34.959 Y-33.495 +G01 X+34.949 Y-34.8 +G01 X+34.801 Y-34.95 +G01 X+33.422 Y-34.967 +G01 X+23.035 Y-38.462 +G01 X+21.307 Y-38.785 +G01 X+19.579 Y-38.85 +G01 X+17.85 Y-38.657 +G01 X+16.111 Y-38.201 +G01 X+6.562 Y-34.907 +G01 X+5.249 Y-34.879 +G01 X+5.101 Y-34.731 +G01 X+5.084 Y-33.422 +G01 X+1.563 Y-23.035 +G01 X+1.238 Y-21.307 +G01 X+1.173 Y-19.579 +G01 X+1.368 Y-17.85 +G01 X+1.826 Y-16.111 +G01 X+5.144 Y-6.563 +G01 X+5.154 Y-5.309 +G01 X+5.198 Y-5.203 +G01 X+5.309 Y-5.154 +G01 X+6.514 Y-5.156 +G01 X+16.965 Y-1.589 +G01 X+18.693 Y-1.261 +G01 X+20.421 Y-1.195 +G01 X+22.15 Y-1.392 +G01 X+23.889 Y-1.854 +G01 X+33.437 Y-5.196 +G01 X+34.646 Y-5.206 +G01 X+34.796 Y-5.354 +G01 X+34.814 Y-6.578 +G01 X+38.386 Y-16.965 +G01 X+38.716 Y-18.693 +G01 X+38.782 Y-20.421 +G01 X+38.584 Y-22.149 +G01 X+38.119 Y-23.889 +G01 X+34.753 Y-33.495 +G01 X+34.743 Y-34.568 +G01 X+34.699 Y-34.673 +G01 X+34.569 Y-34.744 +G01 X+33.422 Y-34.762 +G01 X+23.035 Y-38.36 +G01 X+21.307 Y-38.692 +G01 X+19.579 Y-38.759 +G01 X+17.851 Y-38.56 +G01 X+16.111 Y-38.091 +G01 X+6.563 Y-34.702 +G01 X+5.457 Y-34.691 +G01 X+5.308 Y-34.544 +G01 X+5.289 Y-33.423 +G01 X+1.666 Y-23.035 +G01 X+1.331 Y-21.308 +G01 X+1.263 Y-19.58 +G01 X+1.464 Y-17.851 +G01 X+1.936 Y-16.111 +G01 X+5.35 Y-6.563 +G01 X+5.369 Y-5.509 +G01 X+5.519 Y-5.361 +G01 X+6.513 Y-5.362 +G01 X+16.965 Y-1.693 +G01 X+18.692 Y-1.356 +G01 X+20.42 Y-1.288 +G01 X+22.149 Y-1.491 +G01 X+23.889 Y-1.967 +G01 X+33.436 Y-5.411 +G01 X+34.43 Y-5.421 +G01 X+34.58 Y-5.568 +G01 X+34.599 Y-6.577 +G01 X+38.277 Y-16.965 +G01 X+38.617 Y-18.692 +G01 X+38.685 Y-20.42 +G01 X+38.481 Y-22.149 +G01 X+38.001 Y-23.889 +G01 X+34.528 Y-33.495 +G01 X+34.508 Y-34.373 +G01 X+34.361 Y-34.521 +G01 X+33.423 Y-34.538 +G01 X+23.035 Y-38.247 +G01 X+21.308 Y-38.589 +G01 X+19.58 Y-38.658 +G01 X+17.851 Y-38.452 +G01 X+16.111 Y-37.968 +G01 X+6.564 Y-34.468 +G01 X+5.691 Y-34.457 +G01 X+5.542 Y-34.31 +G01 X+5.523 Y-33.423 +G01 X+1.784 Y-23.035 +G01 X+1.438 Y-21.308 +G01 X+1.369 Y-19.58 +G01 X+1.576 Y-17.851 +G01 X+2.064 Y-16.111 +G01 X+5.593 Y-6.563 +G01 X+5.615 Y-5.751 +G01 X+5.765 Y-5.604 +G01 X+6.513 Y-5.605 +G01 X+16.965 Y-1.814 +G01 X+18.692 Y-1.465 +G01 X+20.42 Y-1.395 +G01 X+22.149 Y-1.604 +G01 X+23.889 Y-2.096 +G01 X+33.436 Y-5.654 +G01 X+34.188 Y-5.664 +G01 X+34.337 Y-5.811 +G01 X+34.357 Y-6.577 +G01 X+38.156 Y-16.965 +G01 X+38.507 Y-18.692 +G01 X+38.582 Y-20.297 +G01 X+38.391 Y-22.025 +G01 X+37.871 Y-23.889 +G01 X+34.285 Y-33.495 +G01 X+34.262 Y-34.132 +G01 X+34.116 Y-34.278 +G01 X+33.423 Y-34.296 +G01 X+23.035 Y-38.126 +G01 X+21.308 Y-38.48 +G01 X+19.703 Y-38.555 +G01 X+17.975 Y-38.363 +G01 X+16.111 Y-37.839 +G01 X+6.565 Y-34.225 +G01 X+5.934 Y-34.214 +G01 X+5.784 Y-34.068 +G01 X+5.765 Y-33.423 +G01 X+1.905 Y-23.036 +G01 X+1.548 Y-21.308 +G01 X+1.472 Y-19.703 +G01 X+1.665 Y-17.975 +G01 X+2.194 Y-16.111 +G01 X+5.837 Y-6.563 +G01 X+5.86 Y-5.993 +G01 X+6.01 Y-5.847 +G01 X+6.512 Y-5.848 +G01 X+16.965 Y-1.934 +G01 X+18.569 Y-1.591 +G01 X+20.296 Y-1.499 +G01 X+22.025 Y-1.693 +G01 X+23.883 Y-2.224 +G01 X+33.435 Y-5.897 +G01 X+33.945 Y-5.907 +G01 X+34.095 Y-6.052 +G01 X+34.114 Y-6.577 +G01 X+38.035 Y-16.964 +G01 X+38.398 Y-18.692 +G01 X+38.475 Y-20.297 +G01 X+38.278 Y-22.025 +G01 X+37.834 Y-23.635 +G01 X+34.041 Y-33.495 +G01 X+34.018 Y-33.893 +G01 X+33.874 Y-34.037 +G01 X+33.423 Y-34.054 +G01 X+23.036 Y-38.005 +G01 X+21.308 Y-38.37 +G01 X+19.704 Y-38.448 +G01 X+17.975 Y-38.25 +G01 X+16.365 Y-37.802 +G01 X+6.565 Y-33.982 +G01 X+6.176 Y-33.971 +G01 X+6.026 Y-33.828 +G01 X+6.007 Y-33.423 +G01 X+2.025 Y-23.036 +G01 X+1.657 Y-21.308 +G01 X+1.579 Y-19.704 +G01 X+1.778 Y-17.975 +G01 X+2.229 Y-16.365 +G01 X+6.08 Y-6.562 +G01 X+6.104 Y-6.233 +G01 X+6.254 Y-6.09 +G01 X+6.511 +G01 X+16.965 Y-2.055 +G01 X+18.568 Y-1.701 +G01 X+20.296 Y-1.606 +G01 X+22.025 Y-1.807 +G01 X+23.635 Y-2.261 +G01 X+33.434 Y-6.14 +G01 X+33.703 Y-6.151 +G01 X+33.809 Y-6.194 +G01 X+33.853 Y-6.291 +G01 X+33.872 Y-6.578 +G01 X+37.914 Y-16.964 +G01 X+38.288 Y-18.692 +G01 X+38.368 Y-20.296 +G01 X+38.165 Y-22.025 +G01 X+37.707 Y-23.635 +G01 X+33.797 Y-33.498 +G01 X+33.777 Y-33.66 +G01 X+33.637 Y-33.797 +G01 X+33.422 Y-33.811 +G01 X+23.036 Y-37.884 +G01 X+21.308 Y-38.261 +G01 X+19.704 Y-38.341 +G01 X+17.975 Y-38.137 +G01 X+16.365 Y-37.676 +G01 X+6.566 Y-33.739 +G01 X+6.42 Y-33.728 +G01 X+6.314 Y-33.684 +G01 X+6.267 Y-33.589 +G01 X+6.25 Y-33.419 +G01 X+2.146 Y-23.036 +G01 X+1.767 Y-21.308 +G01 X+1.686 Y-19.704 +G01 X+1.892 Y-17.975 +G01 X+2.356 Y-16.365 +G01 X+6.326 Y-6.558 +G01 X+6.491 Y-6.333 +G01 X+16.964 Y-2.174 +G01 X+18.568 Y-1.81 +G01 X+20.295 Y-1.711 +G01 X+22.025 Y-1.917 +G01 X+23.635 Y-2.385 +G01 X+33.426 Y-6.37 +G01 X+33.626 Y-6.584 +G01 X+37.8 Y-16.964 +G01 X+38.185 Y-18.691 +G01 X+38.267 Y-20.296 +G01 X+38.059 Y-22.025 +G01 X+37.588 Y-23.635 +G01 X+33.549 Y-33.491 +G01 X+33.441 Y-33.58 +G01 X+23.036 Y-37.774 +G01 X+21.309 Y-38.161 +G01 X+19.704 Y-38.244 +G01 X+17.975 Y-38.035 +G01 X+16.366 Y-37.562 +G01 X+6.545 Y-33.485 +G01 X+6.464 Y-33.403 +G01 X+2.251 Y-23.036 +G01 X+1.862 Y-21.309 +G01 X+1.779 Y-19.704 +G01 X+1.989 Y-17.975 +G01 X+2.465 Y-16.366 +G01 X+6.515 Y-6.597 +G01 X+6.597 Y-6.515 +G01 X+16.599 Y-2.394 +G01 X+18.323 Y-1.937 +G01 X+19.926 Y-1.791 +G01 X+21.529 Y-1.913 +G01 X+23.133 Y-2.305 +G01 X+33.387 Y-6.532 +G01 X+33.468 Y-6.613 +G01 X+37.597 Y-16.606 +G01 X+38.053 Y-18.326 +G01 X+38.199 Y-19.926 +G01 X+38.077 Y-21.526 +G01 X+37.685 Y-23.126 +G01 X+33.452 Y-33.37 +G01 X+33.37 Y-33.452 +G01 X+23.386 Y-37.588 +G01 X+21.67 Y-38.043 +G01 X+20.074 Y-38.189 +G01 X+18.478 Y-38.066 +G01 X+16.881 Y-37.676 +G01 X+6.646 Y-33.435 +G01 X+6.565 Y-33.354 +G01 X+2.422 Y-23.379 +G01 X+1.967 Y-21.666 +G01 X+1.821 Y-20.074 +G01 X+1.944 Y-18.481 +G01 X+2.333 Y-16.888 +G01 X+6.582 Y-6.663 +G01 X+6.663 Y-6.582 +G01 X+16.635 Y-2.439 +G01 X+18.341 Y-1.987 +G01 X+19.926 Y-1.843 +G01 X+21.512 Y-1.966 +G01 X+23.095 Y-2.356 +G01 X+33.285 Y-6.635 +G01 X+33.365 Y-6.715 +G01 X+37.531 Y-16.659 +G01 X+37.981 Y-18.352 +G01 X+38.124 Y-19.927 +G01 X+38.002 Y-21.501 +G01 X+37.614 Y-23.073 +G01 X+33.312 Y-33.233 +G01 X+33.233 Y-33.312 +G01 X+23.317 Y-37.502 +G01 X+21.636 Y-37.949 +G01 X+20.073 Y-38.091 +G01 X+18.51 Y-37.969 +G01 X+16.95 Y-37.584 +G01 X+6.82 Y-33.259 +G01 X+6.741 Y-33.18 +G01 X+2.528 Y-23.293 +G01 X+2.084 Y-21.625 +G01 X+1.942 Y-20.072 +G01 X+2.063 Y-18.521 +G01 X+2.446 Y-16.972 +G01 X+6.794 Y-6.872 +G01 X+6.872 Y-6.794 +G01 X+16.731 Y-2.558 +G01 X+18.387 Y-2.116 +G01 X+19.928 Y-1.975 +G01 X+21.469 Y-2.095 +G01 X+23.005 Y-2.476 +G01 X+33.075 Y-6.847 +G01 X+33.153 Y-6.925 +G01 X+37.412 Y-16.755 +G01 X+37.852 Y-18.398 +G01 X+37.992 Y-19.928 +G01 X+37.872 Y-21.458 +G01 X+37.494 Y-22.983 +G01 X+33.1 Y-33.023 +G01 X+33.023 Y-33.1 +G01 X+23.221 Y-37.382 +G01 X+21.59 Y-37.82 +G01 X+20.071 Y-37.959 +G01 X+18.553 Y-37.84 +G01 X+17.04 Y-37.464 +G01 X+7.03 Y-33.047 +G01 X+6.953 Y-32.97 +G01 X+2.648 Y-23.197 +G01 X+2.213 Y-21.578 +G01 X+2.074 Y-20.071 +G01 X+2.192 Y-18.563 +G01 X+2.567 Y-17.062 +G01 X+7.006 Y-7.082 +G01 X+7.082 Y-7.006 +G01 X+16.827 Y-2.678 +G01 X+18.433 Y-2.245 +G01 X+19.93 Y-2.107 +G01 X+21.426 Y-2.225 +G01 X+22.916 Y-2.597 +G01 X+32.865 Y-7.059 +G01 X+32.941 Y-7.135 +G01 X+37.293 Y-16.851 +G01 X+37.723 Y-18.445 +G01 X+37.86 Y-19.93 +G01 X+37.743 Y-21.415 +G01 X+37.373 Y-22.893 +G01 X+32.888 Y-32.813 +G01 X+32.813 Y-32.888 +G01 X+23.125 Y-37.263 +G01 X+21.544 Y-37.69 +G01 X+20.07 Y-37.827 +G01 X+18.596 Y-37.711 +G01 X+17.129 Y-37.343 +G01 X+7.239 Y-32.835 +G01 X+7.165 Y-32.761 +G01 X+3.382 Y-24.512 +G01 X+2.689 Y-22.877 +G01 X+2.322 Y-21.419 +G01 X+2.206 Y-19.957 +G01 X+2.341 Y-18.495 +G01 X+2.766 Y-16.928 +G01 X+7.218 Y-7.292 +G01 X+7.292 Y-7.218 +G01 X+9.599 Y-6.153 +G01 X+16.922 Y-2.797 +G01 X+18.59 Y-2.355 +G01 X+20.043 Y-2.239 +G01 X+21.494 Y-2.373 +G01 X+23.048 Y-2.795 +G01 X+32.656 Y-7.271 +G01 X+32.729 Y-7.344 +G01 X+33.969 Y-10.008 +G01 X+37.173 Y-16.946 +G01 X+37.612 Y-18.601 +G01 X+37.728 Y-20.043 +G01 X+37.595 Y-21.482 +G01 X+37.175 Y-23.024 +G01 X+32.676 Y-32.604 +G01 X+32.604 Y-32.676 +G01 X+28.264 Y-34.714 +G01 X+23.03 Y-37.143 +G01 X+21.388 Y-37.58 +G01 X+19.958 Y-37.695 +G01 X+18.529 Y-37.563 +G01 X+17 Y-37.145 +G01 X+7.449 Y-32.623 +G01 X+7.377 Y-32.551 +G01 X+4.872 Y-27.264 +G01 X+2.887 Y-23.006 +G01 X+2.452 Y-21.377 +G01 X+2.338 Y-19.958 +G01 X+2.47 Y-18.541 +G01 X+2.884 Y-17.025 +G01 X+7.431 Y-7.501 +G01 X+14.089 Y-4.281 +G01 X+17.019 Y-2.916 +G01 X+18.633 Y-2.485 +G01 X+20.041 Y-2.371 +G01 X+21.447 Y-2.502 +G01 X+22.951 Y-2.914 +G01 X+32.446 Y-7.484 +G01 X+35.512 Y-13.767 +G01 X+37.054 Y-17.043 +G01 X+37.483 Y-18.644 +G01 X+37.596 Y-20.041 +G01 X+37.466 Y-21.436 +G01 X+37.056 Y-22.927 +G01 X+32.463 Y-32.394 +G01 X+23.038 Y-36.985 +G01 X+21.558 Y-37.412 +G01 X+20.067 Y-37.563 +G01 X+18.576 Y-37.434 +G01 X+17.098 Y-37.027 +G01 X+7.659 Y-32.41 +G01 X+3.045 Y-23.013 +G01 X+2.62 Y-21.545 +G01 X+2.47 Y-20.067 +G01 X+2.599 Y-18.588 +G01 X+3.003 Y-17.122 +G01 X+7.643 Y-7.711 +G01 X+17.012 Y-3.074 +G01 X+18.467 Y-2.652 +G01 X+19.933 Y-2.503 +G01 X+21.4 Y-2.631 +G01 X+22.854 Y-3.032 +G01 X+32.236 Y-7.696 +G01 X+36.896 Y-17.037 +G01 X+37.316 Y-18.479 +G01 X+37.464 Y-19.934 +G01 X+37.337 Y-21.389 +G01 X+36.938 Y-22.829 +G01 X+32.251 Y-32.184 +G01 X+24.878 Y-35.923 +G01 X+22.837 Y-36.905 +G01 X+21.405 Y-37.303 +G01 X+19.963 Y-37.431 +G01 X+18.52 Y-37.285 +G01 X+17.093 Y-36.87 +G01 X+7.868 Y-32.198 +G01 X+3.99 Y-24.61 +G01 X+3.125 Y-22.812 +G01 X+2.729 Y-21.394 +G01 X+2.602 Y-19.963 +G01 X+2.747 Y-18.533 +G01 X+3.16 Y-17.118 +G01 X+7.855 Y-7.921 +G01 X+15.565 Y-3.949 +G01 X+17.212 Y-3.155 +G01 X+18.618 Y-2.761 +G01 X+20.036 Y-2.635 +G01 X+21.455 Y-2.779 +G01 X+22.857 Y-3.189 +G01 X+32.027 Y-7.908 +G01 X+35.945 Y-15.454 +G01 X+36.815 Y-17.236 +G01 X+37.206 Y-18.629 +G01 X+37.332 Y-20.036 +G01 X+37.189 Y-21.443 +G01 X+36.782 Y-22.831 +G01 X+32.038 Y-31.974 +G01 X+24.282 Y-36.034 +G01 X+22.74 Y-36.786 +G01 X+21.359 Y-37.174 +G01 X+19.964 Y-37.299 +G01 X+18.57 Y-37.157 +G01 X+17.194 Y-36.752 +G01 X+8.078 Y-31.985 +G01 X+3.997 Y-24.25 +G01 X+3.244 Y-22.716 +G01 X+2.858 Y-21.348 +G01 X+2.734 Y-19.965 +G01 X+2.875 Y-18.582 +G01 X+3.277 Y-17.219 +G01 X+8.068 Y-8.13 +G01 X+15.921 Y-3.955 +G01 X+17.308 Y-3.274 +G01 X+18.664 Y-2.89 +G01 X+20.035 Y-2.767 +G01 X+21.405 Y-2.908 +G01 X+22.756 Y-3.307 +G01 X+31.817 Y-8.121 +G01 X+35.939 Y-15.813 +G01 X+36.696 Y-17.332 +G01 X+37.077 Y-18.675 +G01 X+37.2 Y-20.034 +G01 X+37.06 Y-21.393 +G01 X+36.664 Y-22.731 +G01 X+31.826 Y-31.765 +G01 X+23.926 Y-36.032 +G01 X+22.644 Y-36.667 +G01 X+21.313 Y-37.045 +G01 X+19.966 Y-37.167 +G01 X+18.62 Y-37.028 +G01 X+17.295 Y-36.635 +G01 X+8.288 Y-31.773 +G01 X+3.999 Y-23.895 +G01 X+3.363 Y-22.62 +G01 X+2.987 Y-21.301 +G01 X+2.866 Y-19.967 +G01 X+3.004 Y-18.632 +G01 X+3.395 Y-17.32 +G01 X+8.28 Y-8.34 +G01 X+16.271 Y-3.956 +G01 X+17.405 Y-3.393 +G01 X+18.71 Y-3.02 +G01 X+20.033 Y-2.899 +G01 X+21.355 Y-3.036 +G01 X+22.655 Y-3.424 +G01 X+31.607 Y-8.333 +G01 X+36.504 Y-17.245 +G01 X+36.93 Y-18.628 +G01 X+37.068 Y-19.938 +G01 X+36.95 Y-21.249 +G01 X+36.546 Y-22.629 +G01 X+31.613 Y-31.555 +G01 X+22.729 Y-36.474 +G01 X+21.359 Y-36.897 +G01 X+20.061 Y-37.035 +G01 X+18.763 Y-36.918 +G01 X+17.396 Y-36.517 +G01 X+8.498 Y-31.56 +G01 X+3.555 Y-22.703 +G01 X+3.135 Y-21.347 +G01 X+2.998 Y-20.061 +G01 X+3.114 Y-18.774 +G01 X+3.512 Y-17.421 +G01 X+8.493 Y-8.55 +G01 X+17.323 Y-3.584 +G01 X+18.665 Y-3.167 +G01 X+19.94 Y-3.031 +G01 X+21.214 Y-3.146 +G01 X+22.553 Y-3.542 +G01 X+31.397 Y-8.546 +G01 X+36.386 Y-17.349 +G01 X+36.801 Y-18.678 +G01 X+36.936 Y-19.94 +G01 X+36.821 Y-21.203 +G01 X+36.429 Y-22.528 +G01 X+31.401 Y-31.345 +G01 X+22.626 Y-36.357 +G01 X+21.31 Y-36.769 +G01 X+20.06 Y-36.904 +G01 X+18.809 Y-36.789 +G01 X+17.497 Y-36.4 +G01 X+8.708 Y-31.348 +G01 X+3.672 Y-22.6 +G01 X+3.263 Y-21.297 +G01 X+3.129 Y-20.059 +G01 X+3.243 Y-18.821 +G01 X+3.63 Y-17.522 +G01 X+8.705 Y-8.76 +G01 X+17.426 Y-3.702 +G01 X+18.715 Y-3.296 +G01 X+19.941 Y-3.162 +G01 X+21.168 Y-3.275 +G01 X+22.453 Y-3.659 +G01 X+31.187 Y-8.759 +G01 X+36.269 Y-17.452 +G01 X+36.672 Y-18.728 +G01 X+36.805 Y-19.941 +G01 X+36.692 Y-21.156 +G01 X+36.311 Y-22.427 +G01 X+31.188 Y-31.135 +G01 X+22.522 Y-36.24 +G01 X+21.26 Y-36.64 +G01 X+20.058 Y-36.772 +G01 X+18.856 Y-36.66 +G01 X+17.598 Y-36.282 +G01 X+8.917 Y-31.135 +G01 X+3.86 Y-22.658 +G01 X+3.43 Y-21.417 +G01 X+3.262 Y-20.059 +G01 X+3.372 Y-18.867 +G01 X+3.747 Y-17.623 +G01 X+8.918 Y-8.97 +G01 X+17.279 Y-3.936 +G01 X+18.514 Y-3.483 +G01 X+19.772 Y-3.299 +G01 X+21.12 Y-3.404 +G01 X+22.352 Y-3.777 +G01 X+30.923 Y-8.938 +G01 X+36.082 Y-17.398 +G01 X+36.486 Y-18.53 +G01 X+36.668 Y-19.774 +G01 X+36.563 Y-21.108 +G01 X+36.194 Y-22.326 +G01 X+30.975 Y-30.925 +G01 X+22.574 Y-36.054 +G01 X+21.455 Y-36.454 +G01 X+20.224 Y-36.635 +G01 X+18.903 Y-36.531 +G01 X+17.699 Y-36.164 +G01 X+9.127 Y-30.922 +G01 X+3.975 Y-22.547 +G01 X+3.577 Y-21.44 +G01 X+3.398 Y-20.222 +G01 X+3.501 Y-18.915 +G01 X+3.865 Y-17.724 +G01 X+9.131 Y-9.18 +G01 X+17.393 Y-4.051 +G01 X+18.575 Y-3.61 +G01 X+19.78 Y-3.431 +G01 X+21.074 Y-3.533 +G01 X+22.251 Y-3.894 +G01 X+30.714 Y-9.15 +G01 X+35.967 Y-17.509 +G01 X+36.359 Y-18.591 +G01 X+36.536 Y-19.782 +G01 X+36.435 Y-21.062 +G01 X+36.076 Y-22.226 +G01 X+30.763 Y-30.715 +G01 X+22.463 Y-35.939 +G01 X+21.394 Y-36.327 +G01 X+20.216 Y-36.503 +G01 X+18.95 Y-36.402 +G01 X+17.8 Y-36.047 +G01 X+9.337 Y-30.71 +G01 X+4.09 Y-22.435 +G01 X+3.705 Y-21.379 +G01 X+3.529 Y-20.213 +G01 X+3.615 Y-19.039 +G01 X+3.982 Y-17.825 +G01 X+9.344 Y-9.39 +G01 X+17.507 Y-4.166 +G01 X+18.635 Y-3.737 +G01 X+19.789 Y-3.562 +G01 X+20.95 Y-3.647 +G01 X+22.149 Y-4.012 +G01 X+30.504 Y-9.362 +G01 X+35.852 Y-17.62 +G01 X+36.232 Y-18.651 +G01 X+36.405 Y-19.791 +G01 X+36.32 Y-20.94 +G01 X+35.959 Y-22.124 +G01 X+30.55 Y-30.505 +G01 X+22.352 Y-35.824 +G01 X+21.334 Y-36.2 +G01 X+20.207 Y-36.372 +G01 X+19.071 Y-36.288 +G01 X+17.901 Y-35.929 +G01 X+9.547 Y-30.497 +G01 X+4.205 Y-22.324 +G01 X+3.832 Y-21.319 +G01 X+3.661 Y-20.205 +G01 X+3.744 Y-19.082 +G01 X+4.1 Y-17.926 +G01 X+9.557 Y-9.6 +G01 X+17.621 Y-4.281 +G01 X+18.695 Y-3.864 +G01 X+19.797 Y-3.694 +G01 X+20.907 Y-3.777 +G01 X+22.049 Y-4.129 +G01 X+30.295 Y-9.574 +G01 X+35.737 Y-17.731 +G01 X+36.105 Y-18.711 +G01 X+36.273 Y-19.799 +G01 X+36.191 Y-20.896 +G01 X+35.841 Y-22.023 +G01 X+30.337 Y-30.295 +G01 X+22.241 Y-35.708 +G01 X+21.274 Y-36.073 +G01 X+20.199 Y-36.24 +G01 X+19.114 Y-36.159 +G01 X+18.002 Y-35.812 +G01 X+9.757 Y-30.284 +G01 X+4.32 Y-22.213 +G01 X+3.959 Y-21.259 +G01 X+3.793 Y-20.197 +G01 X+3.874 Y-19.125 +G01 X+4.217 Y-18.027 +G01 X+9.769 Y-9.809 +G01 X+17.735 Y-4.396 +G01 X+18.755 Y-3.991 +G01 X+19.806 Y-3.826 +G01 X+20.864 Y-3.906 +G01 X+21.948 Y-4.247 +G01 X+30.086 Y-9.787 +G01 X+35.622 Y-17.843 +G01 X+35.938 Y-18.636 +G01 X+36.14 Y-19.806 +G01 X+36.062 Y-20.853 +G01 X+35.724 Y-21.923 +G01 X+30.124 Y-30.085 +G01 X+22.129 Y-35.594 +G01 X+21.347 Y-35.907 +G01 X+20.191 Y-36.107 +G01 X+19.157 Y-36.029 +G01 X+18.103 Y-35.695 +G01 X+9.967 Y-30.071 +G01 X+4.435 Y-22.101 +G01 X+4.124 Y-21.33 +G01 X+3.929 Y-20.258 +G01 X+4.003 Y-19.169 +G01 X+4.335 Y-18.128 +G01 X+9.982 Y-10.019 +G01 X+17.85 Y-4.51 +G01 X+18.686 Y-4.156 +G01 X+19.745 Y-3.962 +G01 X+20.82 Y-4.035 +G01 X+21.847 Y-4.364 +G01 X+29.876 Y-9.999 +G01 X+35.507 Y-17.955 +G01 X+35.813 Y-18.704 +G01 X+36.005 Y-19.748 +G01 X+35.932 Y-20.81 +G01 X+35.606 Y-21.822 +G01 X+29.911 Y-29.875 +G01 X+22.017 Y-35.479 +G01 X+21.28 Y-35.781 +G01 X+20.249 Y-35.972 +G01 X+19.201 Y-35.9 +G01 X+18.203 Y-35.577 +G01 X+10.177 Y-29.858 +G01 X+4.55 Y-21.99 +G01 X+4.25 Y-21.263 +G01 X+4.061 Y-20.246 +G01 X+4.132 Y-19.212 +G01 X+4.452 Y-18.228 +G01 X+10.195 Y-10.229 +G01 X+17.966 Y-4.624 +G01 X+18.511 Y-4.366 +G01 X+19.564 Y-4.11 +G01 X+20.649 Y-4.141 +G01 X+21.745 Y-4.482 +G01 X+29.667 Y-10.211 +G01 X+35.393 Y-18.066 +G01 X+35.668 Y-18.711 +G01 X+35.869 Y-19.697 +G01 X+35.815 Y-20.704 +G01 X+35.489 Y-21.721 +G01 X+29.698 Y-29.665 +G01 X+21.906 Y-35.364 +G01 X+21.271 Y-35.636 +G01 X+20.3 Y-35.836 +G01 X+19.306 Y-35.783 +G01 X+18.305 Y-35.46 +G01 X+10.387 Y-29.645 +G01 X+4.665 Y-21.878 +G01 X+4.395 Y-21.253 +G01 X+4.197 Y-20.296 +G01 X+4.25 Y-19.316 +G01 X+4.57 Y-18.33 +G01 X+10.408 Y-10.44 +G01 X+18.081 Y-4.738 +G01 X+18.593 Y-4.489 +G01 X+19.586 Y-4.242 +G01 X+20.613 Y-4.271 +G01 X+21.645 Y-4.599 +G01 X+29.458 Y-10.424 +G01 X+35.278 Y-18.178 +G01 X+35.542 Y-18.782 +G01 X+35.737 Y-19.711 +G01 X+35.685 Y-20.664 +G01 X+35.372 Y-21.62 +G01 X+29.485 Y-29.455 +G01 X+21.794 Y-35.249 +G01 X+21.2 Y-35.511 +G01 X+20.285 Y-35.704 +G01 X+19.346 Y-35.653 +G01 X+18.405 Y-35.342 +G01 X+10.597 Y-29.432 +G01 X+4.779 Y-21.766 +G01 X+4.54 Y-21.237 +G01 X+4.329 Y-20.282 +G01 X+4.379 Y-19.356 +G01 X+4.687 Y-18.43 +G01 X+10.621 Y-10.65 +G01 X+18.195 Y-4.853 +G01 X+18.675 Y-4.612 +G01 X+19.608 Y-4.373 +G01 X+20.576 Y-4.401 +G01 X+21.544 Y-4.716 +G01 X+29.248 Y-10.636 +G01 X+35.163 Y-18.29 +G01 X+35.398 Y-18.8 +G01 X+35.605 Y-19.726 +G01 X+35.556 Y-20.624 +G01 X+35.254 Y-21.52 +G01 X+29.272 Y-29.245 +G01 X+21.682 Y-35.134 +G01 X+21.181 Y-35.367 +G01 X+20.271 Y-35.572 +G01 X+19.386 Y-35.523 +G01 X+18.506 Y-35.225 +G01 X+10.807 Y-29.219 +G01 X+4.894 Y-21.654 +G01 X+4.664 Y-21.163 +G01 X+4.461 Y-20.267 +G01 X+4.509 Y-19.396 +G01 X+4.805 Y-18.531 +G01 X+10.835 Y-10.86 +G01 X+18.309 Y-4.967 +G01 X+18.756 Y-4.736 +G01 X+19.629 Y-4.505 +G01 X+20.54 Y-4.532 +G01 X+21.444 Y-4.834 +G01 X+29.039 Y-10.849 +G01 X+35.049 Y-18.402 +G01 X+35.235 Y-18.778 +G01 X+35.462 Y-19.635 +G01 X+35.436 Y-20.531 +G01 X+35.137 Y-21.418 +G01 X+29.059 Y-29.035 +G01 X+21.57 Y-35.02 +G01 X+21.201 Y-35.204 +G01 X+20.36 Y-35.429 +G01 X+19.478 Y-35.403 +G01 X+18.607 Y-35.107 +G01 X+11.017 Y-29.005 +G01 X+5.009 Y-21.542 +G01 X+4.827 Y-21.181 +G01 X+4.603 Y-20.355 +G01 X+4.629 Y-19.488 +G01 X+4.922 Y-18.632 +G01 X+11.048 Y-11.07 +G01 X+18.424 Y-5.082 +G01 X+18.838 Y-4.859 +G01 X+19.651 Y-4.636 +G01 X+20.503 Y-4.662 +G01 X+21.343 Y-4.951 +G01 X+28.829 Y-11.061 +G01 X+34.934 Y-18.514 +G01 X+35.112 Y-18.86 +G01 X+35.331 Y-19.656 +G01 X+35.306 Y-20.494 +G01 X+35.019 Y-21.318 +G01 X+28.846 Y-28.825 +G01 X+21.457 Y-34.906 +G01 X+21.206 Y-35.042 +G01 X+20.387 Y-35.291 +G01 X+19.563 Y-35.282 +G01 X+18.75 Y-35.012 +G01 X+11.228 Y-28.792 +G01 X+5.123 Y-21.429 +G01 X+4.989 Y-21.184 +G01 X+4.742 Y-20.381 +G01 X+4.751 Y-19.571 +G01 X+5.018 Y-18.774 +G01 X+11.261 Y-11.28 +G01 X+18.54 Y-5.195 +G01 X+18.837 Y-5.021 +G01 X+19.625 Y-4.775 +G01 X+20.42 Y-4.783 +G01 X+21.201 Y-5.047 +G01 X+28.62 Y-11.274 +G01 X+34.82 Y-18.627 +G01 X+34.951 Y-18.861 +G01 X+35.192 Y-19.631 +G01 X+35.184 Y-20.412 +G01 X+34.923 Y-21.177 +G01 X+28.632 Y-28.615 +G01 X+21.345 Y-34.791 +G01 X+21.117 Y-34.92 +G01 X+20.362 Y-35.159 +G01 X+19.596 Y-35.151 +G01 X+18.847 Y-34.893 +G01 X+11.581 Y-28.703 +G01 X+5.237 Y-21.317 +G01 X+5.11 Y-21.095 +G01 X+4.874 Y-20.356 +G01 X+4.881 Y-19.605 +G01 X+5.136 Y-18.871 +G01 X+11.474 Y-11.49 +G01 X+18.655 Y-5.31 +G01 X+18.925 Y-5.142 +G01 X+19.65 Y-4.906 +G01 X+20.387 Y-4.914 +G01 X+21.105 Y-5.166 +G01 X+28.41 Y-11.486 +G01 X+34.706 Y-18.739 +G01 X+34.829 Y-18.949 +G01 X+35.061 Y-19.656 +G01 X+35.054 Y-20.379 +G01 X+34.805 Y-21.081 +G01 X+28.544 Y-28.263 +G01 X+21.231 Y-34.678 +G01 X+21.142 Y-34.733 +G01 X+20.461 Y-35.004 +G01 X+19.714 Y-35.034 +G01 X+18.945 Y-34.775 +G01 X+11.975 Y-28.656 +G01 X+5.35 Y-21.203 +G01 X+5.296 Y-21.116 +G01 X+5.029 Y-20.453 +G01 X+4.999 Y-19.72 +G01 X+5.217 Y-19.039 +G01 X+11.688 Y-11.701 +G01 X+18.816 Y-5.386 +G01 X+19.517 Y-5.071 +G01 X+20.233 Y-5.026 +G01 X+20.938 Y-5.247 +G01 X+28.015 Y-11.532 +G01 X+34.585 Y-18.845 +G01 X+34.886 Y-19.489 +G01 X+34.94 Y-20.226 +G01 X+34.723 Y-20.916 +G01 X+28.5 Y-27.87 +G01 X+21.127 Y-34.557 +G01 X+20.501 Y-34.854 +G01 X+19.78 Y-34.908 +G01 X+19.106 Y-34.693 +G01 X+12.181 Y-28.448 +G01 X+5.472 Y-21.099 +G01 X+5.179 Y-20.49 +G01 X+5.125 Y-19.785 +G01 X+5.337 Y-19.129 +G01 X+11.901 Y-11.911 +G01 X+18.929 Y-5.501 +G01 X+19.555 Y-5.202 +G01 X+20.209 Y-5.158 +G01 X+20.849 Y-5.367 +G01 X+27.631 Y-11.578 +G01 X+34.471 Y-18.957 +G01 X+34.756 Y-19.531 +G01 X+34.809 Y-20.203 +G01 X+34.603 Y-20.827 +G01 X+28.287 Y-27.669 +G01 X+21.015 Y-34.442 +G01 X+20.459 Y-34.723 +G01 X+19.803 Y-34.776 +G01 X+19.195 Y-34.572 +G01 X+12.565 Y-28.407 +G01 X+5.586 Y-20.987 +G01 X+5.31 Y-20.449 +G01 X+5.257 Y-19.809 +G01 X+5.458 Y-19.217 +G01 X+12.118 Y-12.118 +G01 X+18.993 Y-5.658 +G01 X+19.561 Y-5.344 +G01 X+20.152 Y-5.285 +G01 X+20.732 Y-5.472 +G01 X+27.246 Y-11.613 +G01 X+34.358 Y-19.071 +G01 X+34.606 Y-19.513 +G01 X+34.684 Y-20.113 +G01 X+34.498 Y-20.71 +G01 X+28.427 Y-27.101 +G01 X+20.901 Y-34.329 +G01 X+20.475 Y-34.573 +G01 X+19.891 Y-34.651 +G01 X+19.311 Y-34.468 +G01 X+12.949 Y-28.376 +G01 X+5.699 Y-20.873 +G01 X+5.459 Y-20.463 +G01 X+5.382 Y-19.895 +G01 X+5.548 Y-19.358 +G01 X+12.33 Y-12.33 +G01 X+19.11 Y-5.77 +G01 X+19.548 Y-5.494 +G01 X+20.101 Y-5.415 +G01 X+20.622 Y-5.578 +G01 X+26.339 Y-11.124 +G01 X+34.245 Y-19.185 +G01 X+34.455 Y-19.511 +G01 X+34.556 Y-20.039 +G01 X+34.419 Y-20.552 +G01 X+29.632 Y-25.479 +G01 X+20.787 Y-34.217 +G01 X+20.475 Y-34.422 +G01 X+19.964 Y-34.523 +G01 X+19.466 Y-34.387 +G01 X+18.131 Y-33.137 +G01 X+5.809 Y-20.756 +G01 X+5.644 Y-20.53 +G01 X+5.511 Y-20.024 +G01 X+5.643 Y-19.488 +G01 X+12.542 Y-12.542 +G01 X+19.248 Y-5.836 +G01 X+19.543 Y-5.629 +G01 X+20.027 Y-5.527 +G01 X+20.508 Y-5.659 +G01 X+34.164 Y-19.248 +G01 X+34.371 Y-19.543 +G01 X+34.473 Y-20.027 +G01 X+34.341 Y-20.508 +G01 X+20.752 Y-34.164 +G01 X+20.457 Y-34.371 +G01 X+19.973 Y-34.473 +G01 X+19.492 Y-34.341 +G01 X+5.834 Y-20.751 +G01 X+5.656 Y-20.512 +G01 X+5.527 Y-20.036 +G01 X+5.629 Y-19.552 +G01 X+12.542 Y-12.542 +G00 Z+3.765 +G00 X+0 Y+1.95 +G00 Z-1.235 +G01 Z-2.46 F10000 +G01 X+40.391 Y+1.904 F12000 +G01 X+41.091 Y+1.609 +G01 X+41.624 Y+1.069 +G01 X+41.913 Y+0.359 +G01 X+41.949 Y+0.007 +G01 X+41.904 Y-40.391 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-1.091 Y-41.609 +G01 X-1.624 Y-41.069 +G01 X-1.913 Y-40.359 +G01 X-1.949 Y-40.007 +G01 X-1.904 Y+0.391 +G01 X-1.876 Y+0.487 +G01 X-1.806 Y+0.708 +G01 X-1.437 Y+1.298 +G01 X-1.035 Y+1.638 +G01 X-0.712 Y+1.803 +G01 X-0.235 Y+1.923 +G01 X+0 Y+1.939 +G01 X+40 Y+1.891 +G01 X+40.102 Y+1.886 +G01 X+40.533 Y+1.811 +G01 X+40.803 Y+1.709 +G01 X+41.106 Y+1.53 +G01 X+41.31 Y+1.359 +G01 X+41.561 Y+1.06 +G01 X+41.752 Y+0.7 +G01 X+41.826 Y+0.476 +G01 X+41.887 Y-0.556 +G01 X+41.879 Y-28.025 +G01 X+41.839 Y-40 +G01 X+41.828 Y-40.187 +G01 X+41.606 Y-40.887 +G01 X+41.537 Y-41.007 +G01 X+41.035 Y-41.513 +G01 X+40.699 Y-41.697 +G01 X+40.445 Y-41.78 +G01 X+39.321 Y-41.835 +G01 X+15 Y-41.865 +G01 X+0.185 Y-41.788 +G01 X-0.38 Y-41.744 +G01 X-0.595 Y-41.684 +G01 X-1.238 Y-41.278 +G01 X-1.581 Y-40.817 +G01 X-1.782 Y-39.579 +G01 X-1.835 Y-25.9 +G01 X-1.837 Y-15.247 +G01 X-1.744 Y-6.539 +G01 X-1.734 Y-0.009 +G01 X-1.69 Y+0.377 +G01 X-1.613 Y+0.63 +G01 X-1.284 Y+1.157 +G01 X-0.925 Y+1.461 +G01 X-0.637 Y+1.608 +G01 X-0.211 Y+1.716 +G01 X+0 Y+1.73 +G01 X+10.976 Y+1.764 +G01 X+22.407 Y+1.829 +G01 X+36.728 Y+1.673 +G01 X+40 Y+1.668 +G01 X+40.468 Y+1.598 +G01 X+40.707 Y+1.509 +G01 X+40.974 Y+1.351 +G01 X+41.155 Y+1.2 +G01 X+41.373 Y+0.94 +G01 X+41.604 Y+0.43 +G01 X+41.663 Y-0.679 +G01 X+41.698 Y-9.851 +G01 X+41.806 Y-21.42 +G01 X+41.609 Y-35.988 +G01 X+41.603 Y-40 +G01 X+41.593 Y-40.157 +G01 X+41.342 Y-40.859 +G01 X+40.904 Y-41.316 +G01 X+40.611 Y-41.477 +G01 X+40.391 Y-41.55 +G01 X+39.074 Y-41.598 +G01 X+30.926 Y-41.63 +G01 X+19.198 Y-41.78 +G01 X+4.383 Y-41.544 +G01 X+0.185 Y-41.537 +G01 X-0.324 Y-41.5 +G01 X-0.508 Y-41.448 +G01 X-1.061 Y-41.101 +G01 X-1.356 Y-40.707 +G01 X-1.531 Y-39.578 +G01 X-1.563 Y-31.42 +G01 X-1.753 Y-19.691 +G01 X-1.482 Y-6.539 +G01 X-1.471 Y-0.009 +G01 X-1.435 Y+0.318 +G01 X-1.369 Y+0.532 +G01 X-1.091 Y+0.978 +G01 X-0.787 Y+1.238 +G01 X-0.543 Y+1.363 +G01 X-0.181 Y+1.456 +G01 X+0 Y+1.468 +G01 X+8.226 Y+1.496 +G01 X+19.938 Y+1.724 +G01 X+28.15 Y+1.56 +G01 X+35 Y+1.414 +G01 X+40 Y+1.406 +G01 X+40.392 Y+1.347 +G01 X+40.594 Y+1.272 +G01 X+40.819 Y+1.139 +G01 X+40.971 Y+1.013 +G01 X+41.155 Y+0.795 +G01 X+41.35 Y+0.367 +G01 X+41.401 Y-0.926 +G01 X+41.432 Y-8.086 +G01 X+41.695 Y-19.691 +G01 X+41.569 Y-26.235 +G01 X+41.348 Y-34.753 +G01 X+41.34 Y-40 +G01 X+41.333 Y-40.128 +G01 X+41.124 Y-40.713 +G01 X+40.758 Y-41.098 +G01 X+40.513 Y-41.234 +G01 X+40.331 Y-41.295 +G01 X+38.457 Y-41.335 +G01 X+32.16 Y-41.365 +G01 X+20.556 Y-41.666 +G01 X+14.753 Y-41.559 +G01 X+5.37 Y-41.283 +G01 X+0.185 Y-41.275 +G01 X-0.265 Y-41.244 +G01 X-0.418 Y-41.202 +G01 X-0.876 Y-40.916 +G01 X-1.12 Y-40.592 +G01 X-1.27 Y-39.577 +G01 X-1.295 Y-32.407 +G01 X-1.636 Y-20.802 +G01 X-1.546 Y-15.494 +G01 X-1.219 Y-6.539 +G01 X-1.209 Y-0.009 +G01 X-1.179 Y+0.259 +G01 X-1.126 Y+0.434 +G01 X-0.899 Y+0.8 +G01 X-0.649 Y+1.015 +G01 X-0.453 Y+1.117 +G01 X-0.013 Y+1.204 +G01 X+7.476 Y+1.229 +G01 X+19.074 Y+1.606 +G01 X+24.151 Y+1.523 +G01 X+34.383 Y+1.152 +G01 X+40 Y+1.143 +G01 X+40.316 Y+1.096 +G01 X+40.476 Y+1.037 +G01 X+40.782 Y+0.828 +G01 X+40.937 Y+0.649 +G01 X+41.095 Y+0.305 +G01 X+41.138 Y-2.037 +G01 X+41.171 Y-7.593 +G01 X+41.576 Y-19.074 +G01 X+41.499 Y-23.889 +G01 X+41.087 Y-34.259 +G01 X+41.078 Y-40 +G01 X+41.063 Y-40.142 +G01 X+40.906 Y-40.568 +G01 X+40.617 Y-40.875 +G01 X+40.277 Y-41.034 +G01 X+32.407 Y-41.109 +G01 X+21.173 Y-41.544 +G01 X+16.481 Y-41.479 +G01 X+5.741 Y-41.021 +G01 X-0.202 Y-40.987 +G01 X-0.328 Y-40.956 +G01 X-0.69 Y-40.73 +G01 X-0.884 Y-40.478 +G01 X-1.008 Y-39.452 +G01 X-1.036 Y-32.654 +G01 X-1.513 Y-21.296 +G01 X-1.451 Y-16.605 +G01 X-0.957 Y-6.539 +G01 X-0.946 Y-0.014 +G01 X-0.883 Y+0.326 +G01 X-0.707 Y+0.622 +G01 X-0.511 Y+0.793 +G01 X-0.358 Y+0.873 +G01 X-0.013 Y+0.942 +G01 X+7.226 Y+0.967 +G01 X+18.58 Y+1.482 +G01 X+23.025 Y+1.433 +G01 X+34.136 Y+0.89 +G01 X+40 Y+0.881 +G01 X+40.353 Y+0.801 +G01 X+40.598 Y+0.641 +G01 X+40.719 Y+0.504 +G01 X+40.841 Y+0.242 +G01 X+40.91 Y-7.346 +G01 X+41.454 Y-18.704 +G01 X+41.405 Y-22.901 +G01 X+40.825 Y-34.136 +G01 X+40.815 Y-40 +G01 X+40.802 Y-40.112 +G01 X+40.688 Y-40.422 +G01 X+40.472 Y-40.657 +G01 X+40.217 Y-40.779 +G01 X+32.654 Y-40.847 +G01 X+21.543 Y-41.42 +G01 X+17.346 Y-41.383 +G01 X+5.864 Y-40.759 +G01 X-0.209 Y-40.706 +G01 X-0.505 Y-40.545 +G01 X-0.648 Y-40.364 +G01 X-0.747 Y-39.444 +G01 X-0.77 Y-32.901 +G01 X-1.387 Y-21.667 +G01 X-1.361 Y-17.593 +G01 X-0.694 Y-6.539 +G01 X-0.684 Y-0.014 +G01 X-0.639 Y+0.228 +G01 X-0.518 Y+0.438 +G01 X-0.271 Y+0.62 +G01 X-0.013 Y+0.68 +G01 X+7.226 Y+0.714 +G01 X+18.333 Y+1.357 +G01 X+22.407 Y+1.33 +G01 X+34.012 Y+0.628 +G01 X+39.983 Y+0.618 +G01 X+40.23 Y+0.566 +G01 X+40.489 Y+0.365 +G01 X+40.586 Y+0.178 +G01 X+40.643 Y-7.099 +G01 X+41.324 Y-18.21 +G01 X+41.313 Y-22.037 +G01 X+40.562 Y-34.012 +G01 X+40.553 Y-40 +G01 X+40.471 Y-40.276 +G01 X+40.326 Y-40.439 +G01 X+40.156 Y-40.525 +G01 X+32.901 Y-40.579 +G01 X+21.79 Y-41.294 +G01 X+17.963 Y-41.283 +G01 X+5.988 Y-40.497 +G01 X-0.124 Y-40.457 +G01 X-0.32 Y-40.36 +G01 X-0.411 Y-40.25 +G01 X-0.485 Y-39.198 +G01 X-0.515 Y-32.901 +G01 X-1.264 Y-21.79 +G01 X-1.252 Y-17.963 +G01 X-0.432 Y-6.539 +G01 X-0.422 Y-0.028 +G01 X-0.326 Y+0.243 +G01 X-0.177 Y+0.375 +G01 X-0.013 Y+0.419 +G01 X+6.976 Y+0.443 +G01 X+18.21 Y+1.234 +G01 X+21.79 Y+1.231 +G01 X+27.4 Y+0.842 +G01 X+33.889 Y+0.366 +G01 X+39.964 Y+0.356 +G01 X+40.226 Y+0.241 +G01 X+40.304 Y+0.144 +G01 X+40.351 Y-0.044 +G01 X+40.388 Y-7.099 +G01 X+41.204 Y-18.21 +G01 X+41.201 Y-21.79 +G01 X+40.826 Y-27.025 +G01 X+40.3 Y-33.889 +G01 X+40.29 Y-39.964 +G01 X+40.2 Y-40.178 +G01 X+40.113 Y-40.253 +G01 X+39.976 Y-40.29 +G01 X+32.901 Y-40.324 +G01 X+22.037 Y-41.164 +G01 X+18.58 Y-41.183 +G01 X+14.753 Y-40.931 +G01 X+6.111 Y-40.235 +G01 X-0.034 Y-40.211 +G01 X-0.133 Y-40.175 +G01 X-0.202 Y-40.05 +G01 X-0.26 Y-32.901 +G01 X-1.133 Y-22.037 +G01 X-1.157 Y-18.704 +G01 X-0.913 Y-15 +G01 X-0.17 Y-6.539 +G01 X-0.163 Y-0.057 +G01 X-0.125 Y+0.042 +G01 X+0.047 Y+0.162 +G01 X+6.976 Y+0.194 +G01 X+17.963 Y+1.109 +G01 X+21.296 Y+1.135 +G01 X+24.901 Y+0.894 +G01 X+33.889 Y+0.127 +G01 X+39.938 Y+0.121 +G01 X+40.044 Y+0.077 +G01 X+40.121 Y-0.062 +G01 X+40.163 Y-7.099 +G01 X+41.084 Y-17.84 +G01 X+41.12 Y-21.173 +G01 X+40.883 Y-24.753 +G01 X+40.085 Y-33.889 +G01 X+40.079 Y-39.929 +G01 X+39.93 Y-40.079 +G01 X+32.901 Y-40.122 +G01 X+22.16 Y-41.064 +G01 X+18.827 Y-41.101 +G01 X+15.494 Y-40.882 +G01 X+6.111 Y-40.043 +G01 X+0.123 Y-40.026 +G01 X-0.027 Y-39.877 +G01 X-0.081 Y-32.901 +G01 X-1.044 Y-22.16 +G01 X-1.082 Y-18.827 +G01 X-0.858 Y-15.494 +G01 X-0.002 Y-6.546 +G01 X+0.006 Y-0.247 +G01 X+0.05 Y-0.141 +G01 X+0.142 Y-0.05 +G01 X+0.247 Y-0.006 +G01 X+6.976 Y+0.028 +G01 X+17.84 Y+1.023 +G01 X+21.173 Y+1.062 +G01 X+24.401 Y+0.842 +G01 X+33.882 Y-0.046 +G01 X+39.798 Y-0.061 +G01 X+39.948 Y-0.21 +G01 X+39.994 Y-7.099 +G01 X+41.002 Y-17.84 +G01 X+41.041 Y-21.173 +G01 X+40.806 Y-24.506 +G01 X+39.908 Y-33.882 +G01 X+39.9 Y-39.751 +G01 X+39.751 Y-39.9 +G01 X+32.908 Y-39.948 +G01 X+22.16 Y-40.98 +G01 X+19.074 Y-41.026 +G01 X+15.988 Y-40.83 +G01 X+6.118 Y-39.861 +G01 X+0.296 Y-39.853 +G01 X+0.146 Y-39.704 +G01 X+0.123 Y-33.156 +G01 X-0.958 Y-22.16 +G01 X-1.006 Y-19.074 +G01 X-0.805 Y-15.988 +G01 X+0.186 Y-6.547 +G01 X+0.196 Y-0.371 +G01 X+0.24 Y-0.265 +G01 X+0.37 Y-0.195 +G01 X+6.969 Y-0.16 +G01 X+17.716 Y+0.924 +G01 X+20.802 Y+0.984 +G01 X+23.889 Y+0.787 +G01 X+33.758 Y-0.247 +G01 X+39.594 Y-0.257 +G01 X+39.744 Y-0.406 +G01 X+39.767 Y-6.844 +G01 X+40.903 Y-17.84 +G01 X+40.957 Y-20.802 +G01 X+40.754 Y-23.889 +G01 X+39.692 Y-33.758 +G01 X+39.682 Y-39.506 +G01 X+39.639 Y-39.612 +G01 X+39.506 Y-39.683 +G01 X+33.156 Y-39.707 +G01 X+22.167 Y-40.874 +G01 X+19.198 Y-40.93 +G01 X+16.111 Y-40.722 +G01 X+6.243 Y-39.631 +G01 X+0.528 Y-39.622 +G01 X+0.378 Y-39.472 +G01 X+0.353 Y-33.156 +G01 X-0.845 Y-22.167 +G01 X-0.902 Y-19.204 +G01 X-0.69 Y-16.111 +G01 X+0.429 Y-6.548 +G01 X+0.439 Y-0.618 +G01 X+0.483 Y-0.512 +G01 X+0.617 Y-0.439 +G01 X+6.969 Y-0.398 +G01 X+17.709 Y+0.809 +G01 X+20.679 Y+0.878 +G01 X+23.519 Y+0.698 +G01 X+33.757 Y-0.49 +G01 X+39.351 Y-0.5 +G01 X+39.5 Y-0.649 +G01 X+39.528 Y-6.843 +G01 X+40.772 Y-17.593 +G01 X+40.856 Y-20.425 +G01 X+40.68 Y-23.395 +G01 X+39.449 Y-33.757 +G01 X+39.439 Y-39.259 +G01 X+39.395 Y-39.365 +G01 X+39.259 Y-39.439 +G01 X+33.407 Y-39.437 +G01 X+22.414 Y-40.742 +G01 X+19.575 Y-40.829 +G01 X+16.605 Y-40.649 +G01 X+6.243 Y-39.388 +G01 X+0.772 Y-39.378 +G01 X+0.622 Y-39.228 +G01 X+0.623 Y-33.408 +G01 X-0.713 Y-22.414 +G01 X-0.802 Y-19.575 +G01 X-0.618 Y-16.605 +G01 X+0.672 Y-6.548 +G01 X+0.682 Y-0.864 +G01 X+0.726 Y-0.759 +G01 X+0.864 Y-0.682 +G01 X+6.719 Y-0.667 +G01 X+17.586 Y+0.685 +G01 X+20.425 Y+0.775 +G01 X+23.148 Y+0.614 +G01 X+33.756 Y-0.734 +G01 X+39.107 Y-0.743 +G01 X+39.257 Y-0.893 +G01 X+39.256 Y-6.592 +G01 X+40.656 Y-17.586 +G01 X+40.75 Y-20.302 +G01 X+40.596 Y-23.025 +G01 X+39.205 Y-33.756 +G01 X+39.196 Y-39.012 +G01 X+39.152 Y-39.118 +G01 X+39.012 Y-39.196 +G01 X+33.408 Y-39.195 +G01 X+22.414 Y-40.627 +G01 X+19.698 Y-40.723 +G01 X+16.975 Y-40.566 +G01 X+6.244 Y-39.145 +G01 X+1.015 Y-39.135 +G01 X+0.865 Y-38.985 +G01 X+0.866 Y-33.408 +G01 X-0.587 Y-22.538 +G01 X-0.696 Y-19.699 +G01 X-0.536 Y-16.975 +G01 X+0.916 Y-6.549 +G01 X+0.926 Y-1.111 +G01 X+0.97 Y-1.006 +G01 X+1.111 Y-0.926 +G01 X+6.718 Y-0.908 +G01 X+17.462 Y+0.558 +G01 X+20.301 Y+0.669 +G01 X+22.901 Y+0.519 +G01 X+33.755 Y-0.977 +G01 X+38.864 Y-0.987 +G01 X+39.013 Y-1.137 +G01 X+39.014 Y-6.591 +G01 X+40.529 Y-17.462 +G01 X+40.644 Y-20.055 +G01 X+40.514 Y-22.648 +G01 X+38.962 Y-33.755 +G01 X+38.952 Y-38.765 +G01 X+38.909 Y-38.871 +G01 X+38.765 Y-38.952 +G01 X+33.409 Y-38.953 +G01 X+22.538 Y-40.5 +G01 X+19.946 Y-40.618 +G01 X+17.352 Y-40.485 +G01 X+6.245 Y-38.901 +G01 X+1.258 Y-38.892 +G01 X+1.109 Y-38.742 +G01 X+1.108 Y-33.409 +G01 X-0.47 Y-22.538 +G01 X-0.591 Y-19.946 +G01 X-0.456 Y-17.353 +G01 X+1.159 Y-6.55 +G01 X+1.169 Y-1.358 +G01 X+1.213 Y-1.252 +G01 X+1.358 Y-1.169 +G01 X+6.718 Y-1.149 +G01 X+17.462 Y+0.441 +G01 X+20.054 Y+0.564 +G01 X+22.647 Y+0.426 +G01 X+33.755 Y-1.221 +G01 X+38.62 Y-1.23 +G01 X+38.77 Y-1.38 +G01 X+38.771 Y-6.59 +G01 X+40.412 Y-17.462 +G01 X+40.537 Y-19.931 +G01 X+40.422 Y-22.4 +G01 X+39.865 Y-26.235 +G01 X+38.719 Y-33.754 +G01 X+38.704 Y-38.56 +G01 X+38.554 Y-38.709 +G01 X+33.41 Y-38.711 +G01 X+22.538 Y-40.383 +G01 X+20.069 Y-40.511 +G01 X+17.6 Y-40.393 +G01 X+13.765 Y-39.826 +G01 X+6.246 Y-38.658 +G01 X+1.502 Y-38.648 +G01 X+1.352 Y-38.498 +G01 X+1.35 Y-33.41 +G01 X-0.354 Y-22.539 +G01 X-0.484 Y-20.069 +G01 X-0.364 Y-17.6 +G01 X+0.173 Y-14.012 +G01 X+1.402 Y-6.551 +G01 X+1.419 Y-1.562 +G01 X+1.57 Y-1.413 +G01 X+6.527 Y-1.42 +G01 X+17.338 Y+0.311 +G01 X+19.93 Y+0.457 +G01 X+22.4 Y+0.335 +G01 X+25.9 Y-0.197 +G01 X+33.754 Y-1.464 +G01 X+38.377 Y-1.473 +G01 X+38.527 Y-1.623 +G01 X+38.529 Y-6.589 +G01 X+40.282 Y-17.338 +G01 X+40.43 Y-19.93 +G01 X+40.306 Y-22.4 +G01 X+39.791 Y-25.741 +G01 X+38.475 Y-33.754 +G01 X+38.457 Y-38.316 +G01 X+38.307 Y-38.466 +G01 X+33.411 Y-38.468 +G01 X+22.662 Y-40.252 +G01 X+20.07 Y-40.403 +G01 X+17.6 Y-40.277 +G01 X+14.259 Y-39.753 +G01 X+6.552 Y-38.415 +G01 X+1.745 Y-38.405 +G01 X+1.595 Y-38.255 +G01 X+1.592 Y-33.411 +G01 X-0.223 Y-22.662 +G01 X-0.375 Y-20.316 +G01 X-0.285 Y-17.971 +G01 X+0.067 Y-15.494 +G01 X+1.646 Y-6.552 +G01 X+1.666 Y-1.805 +G01 X+1.816 Y-1.656 +G01 X+6.526 Y-1.663 +G01 X+17.338 Y+0.194 +G01 X+19.684 Y+0.348 +G01 X+22.029 Y+0.256 +G01 X+24.651 Y-0.128 +G01 X+33.448 Y-1.707 +G01 X+38.134 Y-1.717 +G01 X+38.283 Y-1.866 +G01 X+38.287 Y-6.589 +G01 X+40.164 Y-17.338 +G01 X+40.321 Y-19.683 +G01 X+40.228 Y-22.029 +G01 X+39.864 Y-24.506 +G01 X+38.232 Y-33.629 +G01 X+38.211 Y-38.073 +G01 X+38.061 Y-38.223 +G01 X+33.412 Y-38.226 +G01 X+22.662 Y-40.135 +G01 X+20.317 Y-40.294 +G01 X+17.971 Y-40.2 +G01 X+15.494 Y-39.83 +G01 X+6.553 Y-38.172 +G01 X+1.988 Y-38.162 +G01 X+1.838 Y-38.012 +G01 X+1.835 Y-33.412 +G01 X-0.105 Y-22.662 +G01 X-0.268 Y-20.317 +G01 X-0.171 Y-17.971 +G01 X+0.205 Y-15.494 +G01 X+1.889 Y-6.553 +G01 X+1.913 Y-2.049 +G01 X+2.063 Y-1.899 +G01 X+6.525 Y-1.906 +G01 X+17.337 Y+0.076 +G01 X+19.683 Y+0.241 +G01 X+22.029 Y+0.143 +G01 X+24.401 Y-0.219 +G01 X+33.447 Y-1.95 +G01 X+37.89 Y-1.96 +G01 X+38.04 Y-2.11 +G01 X+38.044 Y-6.588 +G01 X+40.046 Y-17.337 +G01 X+40.214 Y-19.683 +G01 X+40.115 Y-22.029 +G01 X+39.727 Y-24.506 +G01 X+37.989 Y-33.628 +G01 X+37.964 Y-37.83 +G01 X+37.814 Y-37.979 +G01 X+33.412 Y-37.984 +G01 X+22.663 Y-40.017 +G01 X+20.44 Y-40.185 +G01 X+18.218 Y-40.11 +G01 X+15.988 Y-39.79 +G01 X+6.553 Y-37.928 +G01 X+2.231 Y-37.918 +G01 X+2.082 Y-37.769 +G01 X+2.077 Y-33.413 +G01 X+0.012 Y-22.663 +G01 X-0.158 Y-20.44 +G01 X-0.082 Y-18.218 +G01 X+0.243 Y-15.988 +G01 X+2.132 Y-6.553 +G01 X+2.16 Y-2.292 +G01 X+2.31 Y-2.143 +G01 X+6.524 Y-2.149 +G01 X+17.337 Y-0.042 +G01 X+19.559 Y+0.131 +G01 X+21.781 Y+0.054 +G01 X+24.151 Y-0.304 +G01 X+33.446 Y-2.193 +G01 X+37.647 Y-2.203 +G01 X+37.797 Y-2.353 +G01 X+37.802 Y-6.587 +G01 X+39.929 Y-17.337 +G01 X+40.105 Y-19.559 +G01 X+40.026 Y-21.782 +G01 X+39.691 Y-24.012 +G01 X+37.746 Y-33.628 +G01 X+37.717 Y-37.587 +G01 X+37.567 Y-37.736 +G01 X+33.413 Y-37.742 +G01 X+22.663 Y-39.899 +G01 X+20.441 Y-40.078 +G01 X+18.219 Y-39.998 +G01 X+15.988 Y-39.659 +G01 X+6.554 Y-37.685 +G01 X+2.475 Y-37.675 +G01 X+2.325 Y-37.525 +G01 X+2.319 Y-33.413 +G01 X+0.13 Y-22.663 +G01 X-0.051 Y-20.441 +G01 X+0.03 Y-18.219 +G01 X+0.374 Y-15.988 +G01 X+2.376 Y-6.554 +G01 X+2.406 Y-2.535 +G01 X+2.557 Y-2.386 +G01 X+6.524 Y-2.392 +G01 X+17.337 Y-0.159 +G01 X+19.559 Y+0.024 +G01 X+21.781 Y-0.058 +G01 X+24.151 Y-0.437 +G01 X+33.445 Y-2.436 +G01 X+37.404 Y-2.446 +G01 X+37.554 Y-2.596 +G01 X+37.56 Y-6.586 +G01 X+39.811 Y-17.337 +G01 X+39.997 Y-19.559 +G01 X+39.914 Y-21.781 +G01 X+39.56 Y-24.012 +G01 X+37.502 Y-33.627 +G01 X+37.47 Y-37.344 +G01 X+37.321 Y-37.493 +G01 X+33.414 Y-37.499 +G01 X+22.663 Y-39.782 +G01 X+20.564 Y-39.967 +G01 X+18.465 Y-39.909 +G01 X+16.358 Y-39.606 +G01 X+6.555 Y-37.442 +G01 X+2.718 Y-37.432 +G01 X+2.568 Y-37.282 +G01 X+2.561 Y-33.414 +G01 X+0.248 Y-22.663 +G01 X+0.06 Y-20.564 +G01 X+0.119 Y-18.466 +G01 X+0.426 Y-16.358 +G01 X+2.619 Y-6.555 +G01 X+2.653 Y-2.777 +G01 X+2.803 Y-2.629 +G01 X+6.523 Y-2.634 +G01 X+17.337 Y-0.276 +G01 X+19.436 Y-0.086 +G01 X+21.534 Y-0.145 +G01 X+23.642 Y-0.456 +G01 X+33.445 Y-2.675 +G01 X+37.16 Y-2.684 +G01 X+37.266 Y-2.728 +G01 X+37.316 Y-2.84 +G01 X+37.323 Y-6.585 +G01 X+39.697 Y-17.336 +G01 X+39.89 Y-19.435 +G01 X+39.83 Y-21.534 +G01 X+39.515 Y-23.642 +G01 X+37.268 Y-33.626 +G01 X+37.259 Y-37.11 +G01 X+37.11 Y-37.259 +G01 X+33.415 Y-37.267 +G01 X+22.664 Y-39.67 +G01 X+20.565 Y-39.865 +G01 X+18.466 Y-39.804 +G01 X+16.358 Y-39.486 +G01 X+6.556 Y-37.213 +G01 X+2.963 Y-37.203 +G01 X+2.857 Y-37.159 +G01 X+2.797 Y-37.037 +G01 X+2.789 Y-33.415 +G01 X+0.358 Y-22.664 +G01 X+0.16 Y-20.565 +G01 X+0.221 Y-18.466 +G01 X+0.544 Y-16.358 +G01 X+2.843 Y-6.556 +G01 X+2.852 Y-3.002 +G01 X+3.003 Y-2.853 +G01 X+6.522 Y-2.858 +G01 X+17.336 Y-0.384 +G01 X+19.435 Y-0.184 +G01 X+21.534 Y-0.245 +G01 X+23.642 Y-0.571 +G01 X+33.444 Y-2.895 +G01 X+36.913 Y-2.904 +G01 X+37.019 Y-2.948 +G01 X+37.096 Y-3.087 +G01 X+37.105 Y-6.585 +G01 X+39.592 Y-17.336 +G01 X+39.794 Y-19.435 +G01 X+39.731 Y-21.534 +G01 X+39.402 Y-23.642 +G01 X+37.053 Y-33.625 +G01 X+37.045 Y-36.895 +G01 X+36.895 Y-37.045 +G01 X+33.416 Y-37.054 +G01 X+22.664 Y-39.567 +G01 X+20.565 Y-39.771 +G01 X+18.466 Y-39.708 +G01 X+16.358 Y-39.375 +G01 X+6.556 Y-37.002 +G01 X+3.156 Y-36.976 +G01 X+3.007 Y-36.827 +G01 X+2.997 Y-33.416 +G01 X+0.458 Y-22.664 +G01 X+0.252 Y-20.565 +G01 X+0.305 Y-18.59 +G01 X+0.623 Y-16.488 +G01 X+3.049 Y-6.557 +G01 X+3.058 Y-3.21 +G01 X+3.102 Y-3.104 +G01 X+3.21 Y-3.059 +G01 X+6.521 Y-3.063 +G01 X+17.336 Y-0.483 +G01 X+19.435 Y-0.275 +G01 X+21.534 Y-0.339 +G01 X+23.519 Y-0.651 +G01 X+33.443 Y-3.101 +G01 X+36.741 Y-3.11 +G01 X+36.89 Y-3.259 +G01 X+36.9 Y-6.584 +G01 X+39.449 Y-17.09 +G01 X+39.692 Y-19.188 +G01 X+39.669 Y-21.164 +G01 X+39.401 Y-23.14 +G01 X+36.847 Y-33.625 +G01 X+36.839 Y-36.666 +G01 X+36.795 Y-36.772 +G01 X+36.667 Y-36.839 +G01 X+33.416 Y-36.849 +G01 X+22.91 Y-39.424 +G01 X+20.935 Y-39.663 +G01 X+18.837 Y-39.646 +G01 X+16.86 Y-39.375 +G01 X+6.557 Y-36.796 +G01 X+3.363 Y-36.787 +G01 X+3.213 Y-36.638 +G01 X+3.202 Y-33.416 +G01 X+0.601 Y-22.91 +G01 X+0.36 Y-20.936 +G01 X+0.377 Y-18.837 +G01 X+0.65 Y-16.86 +G01 X+3.255 Y-6.557 +G01 X+3.271 Y-3.415 +G01 X+3.421 Y-3.265 +G01 X+6.52 Y-3.271 +G01 X+17.09 Y-0.629 +G01 X+19.064 Y-0.386 +G01 X+21.163 Y-0.403 +G01 X+23.14 Y-0.679 +G01 X+33.443 Y-3.316 +G01 X+36.525 Y-3.326 +G01 X+36.674 Y-3.475 +G01 X+36.684 Y-6.583 +G01 X+39.341 Y-17.09 +G01 X+39.587 Y-19.064 +G01 X+39.57 Y-21.163 +G01 X+39.29 Y-23.14 +G01 X+36.623 Y-33.5 +G01 X+36.606 Y-36.464 +G01 X+36.456 Y-36.614 +G01 X+33.417 Y-36.624 +G01 X+22.91 Y-39.311 +G01 X+20.936 Y-39.56 +G01 X+18.837 Y-39.543 +G01 X+16.86 Y-39.26 +G01 X+6.558 Y-36.563 +G01 X+3.597 Y-36.552 +G01 X+3.448 Y-36.403 +G01 X+3.437 Y-33.417 +G01 X+0.719 Y-22.91 +G01 X+0.467 Y-20.936 +G01 X+0.485 Y-18.837 +G01 X+0.771 Y-16.86 +G01 X+3.498 Y-6.558 +G01 X+3.518 Y-3.658 +G01 X+3.668 Y-3.509 +G01 X+6.52 Y-3.513 +G01 X+17.089 Y-0.749 +G01 X+19.064 Y-0.494 +G01 X+21.163 Y-0.512 +G01 X+23.14 Y-0.801 +G01 X+33.442 Y-3.559 +G01 X+36.281 Y-3.569 +G01 X+36.431 Y-3.719 +G01 X+36.442 Y-6.582 +G01 X+39.221 Y-17.089 +G01 X+39.479 Y-19.064 +G01 X+39.461 Y-21.162 +G01 X+39.169 Y-23.14 +G01 X+36.38 Y-33.5 +G01 X+36.359 Y-36.221 +G01 X+36.21 Y-36.37 +G01 X+33.418 Y-36.382 +G01 X+22.911 Y-39.191 +G01 X+20.936 Y-39.452 +G01 X+18.838 Y-39.434 +G01 X+16.861 Y-39.138 +G01 X+6.558 Y-36.319 +G01 X+3.841 Y-36.309 +G01 X+3.691 Y-36.16 +G01 X+3.679 Y-33.418 +G01 X+0.839 Y-22.911 +G01 X+0.575 Y-20.936 +G01 X+0.594 Y-18.838 +G01 X+0.892 Y-16.861 +G01 X+3.742 Y-6.558 +G01 X+3.764 Y-3.901 +G01 X+3.915 Y-3.752 +G01 X+6.519 Y-3.756 +G01 X+17.089 Y-0.868 +G01 X+19.064 Y-0.602 +G01 X+20.916 +G01 X+22.892 Y-0.87 +G01 X+27.4 Y-2.097 +G01 X+33.441 Y-3.802 +G01 X+36.038 Y-3.812 +G01 X+36.188 Y-3.962 +G01 X+36.2 Y-6.582 +G01 X+39.102 Y-17.089 +G01 X+39.371 Y-19.064 +G01 Y-20.916 +G01 X+39.1 Y-22.891 +G01 X+37.896 Y-27.275 +G01 X+36.137 Y-33.499 +G01 X+36.112 Y-35.979 +G01 X+35.963 Y-36.127 +G01 X+33.419 Y-36.139 +G01 X+22.911 Y-39.072 +G01 X+20.936 Y-39.344 +G01 X+19.084 Y-39.343 +G01 X+17.109 Y-39.07 +G01 X+12.975 Y-37.925 +G01 X+6.559 Y-36.076 +G01 X+4.084 Y-36.066 +G01 X+3.934 Y-35.917 +G01 X+3.921 Y-33.419 +G01 X+0.958 Y-22.911 +G01 X+0.684 Y-20.936 +G01 Y-19.084 +G01 X+0.959 Y-17.109 +G01 X+2.117 Y-12.975 +G01 X+3.985 Y-6.559 +G01 X+4.011 Y-4.144 +G01 X+4.161 Y-3.995 +G01 X+6.518 Y-3.999 +G01 X+17.089 Y-0.988 +G01 X+19.064 Y-0.711 +G01 X+20.915 +G01 X+22.891 Y-0.989 +G01 X+26.9 Y-2.122 +G01 X+33.44 Y-4.045 +G01 X+35.795 Y-4.056 +G01 X+35.945 Y-4.205 +G01 X+35.958 Y-6.581 +G01 X+38.982 Y-17.089 +G01 X+39.262 Y-19.064 +G01 Y-20.915 +G01 X+38.981 Y-22.891 +G01 X+37.874 Y-26.775 +G01 X+35.893 Y-33.498 +G01 X+35.866 Y-35.736 +G01 X+35.717 Y-35.884 +G01 X+33.419 Y-35.897 +G01 X+22.911 Y-38.952 +G01 X+20.937 Y-39.235 +G01 X+19.085 +G01 X+17.109 Y-38.951 +G01 X+13.225 Y-37.833 +G01 X+6.56 Y-35.833 +G01 X+4.327 Y-35.823 +G01 X+4.177 Y-35.674 +G01 X+4.163 Y-33.42 +G01 X+1.078 Y-22.912 +G01 X+0.792 Y-20.937 +G01 Y-19.085 +G01 X+1.079 Y-17.109 +G01 X+2.132 Y-13.475 +G01 X+4.228 Y-6.56 +G01 X+4.258 Y-4.387 +G01 X+4.408 Y-4.238 +G01 X+6.517 Y-4.242 +G01 X+17.088 Y-1.108 +G01 X+19.063 Y-0.819 +G01 X+20.915 +G01 X+22.891 Y-1.109 +G01 X+26.65 Y-2.211 +G01 X+33.44 Y-4.288 +G01 X+35.552 Y-4.299 +G01 X+35.702 Y-4.448 +G01 X+35.716 Y-6.58 +G01 X+38.862 Y-17.088 +G01 X+39.154 Y-19.063 +G01 Y-20.915 +G01 X+38.861 Y-22.891 +G01 X+37.787 Y-26.525 +G01 X+35.65 Y-33.498 +G01 X+35.619 Y-35.493 +G01 X+35.47 Y-35.641 +G01 X+33.42 Y-35.655 +G01 X+22.912 Y-38.832 +G01 X+20.937 Y-39.127 +G01 X+19.085 +G01 X+17.109 Y-38.831 +G01 X+13.725 Y-37.825 +G01 X+6.561 Y-35.59 +G01 X+4.57 Y-35.579 +G01 X+4.42 Y-35.431 +G01 X+4.405 Y-33.42 +G01 X+1.198 Y-22.912 +G01 X+0.9 Y-20.937 +G01 Y-19.085 +G01 X+1.199 Y-17.109 +G01 X+2.202 Y-13.765 +G01 X+4.471 Y-6.56 +G01 X+4.504 Y-4.629 +G01 X+4.654 Y-4.481 +G01 X+6.516 Y-4.485 +G01 X+17.088 Y-1.228 +G01 X+19.063 Y-0.927 +G01 X+20.915 +G01 X+22.891 Y-1.228 +G01 X+26.15 Y-2.215 +G01 X+33.439 Y-4.532 +G01 X+35.308 Y-4.542 +G01 X+35.414 Y-4.586 +G01 X+35.458 Y-4.691 +G01 X+35.474 Y-6.579 +G01 X+38.742 Y-17.088 +G01 X+39.046 Y-19.063 +G01 Y-20.914 +G01 X+38.742 Y-22.891 +G01 X+37.719 Y-26.235 +G01 X+35.407 Y-33.497 +G01 X+35.373 Y-35.251 +G01 X+35.224 Y-35.398 +G01 X+33.421 Y-35.413 +G01 X+23.035 Y-38.683 +G01 X+21.183 Y-38.998 +G01 X+19.455 Y-39.041 +G01 X+17.727 Y-38.842 +G01 X+15.741 Y-38.318 +G01 X+6.561 Y-35.347 +G01 X+4.815 Y-35.336 +G01 X+4.709 Y-35.292 +G01 X+4.663 Y-35.186 +G01 X+4.648 Y-33.421 +G01 X+1.347 Y-23.034 +G01 X+1.042 Y-21.307 +G01 X+0.981 Y-19.578 +G01 X+1.164 Y-17.85 +G01 X+1.635 Y-15.988 +G01 X+4.714 Y-6.561 +G01 X+4.751 Y-4.872 +G01 X+4.901 Y-4.724 +G01 X+6.515 Y-4.727 +G01 X+16.966 Y-1.376 +G01 X+18.693 Y-1.068 +G01 X+20.421 Y-1.006 +G01 X+22.15 Y-1.191 +G01 X+23.889 Y-1.626 +G01 X+33.438 Y-4.77 +G01 X+35.061 Y-4.78 +G01 X+35.167 Y-4.824 +G01 X+35.22 Y-4.938 +G01 X+35.237 Y-6.579 +G01 X+38.596 Y-16.966 +G01 X+38.906 Y-18.693 +G01 X+38.969 Y-20.421 +G01 X+38.782 Y-22.15 +G01 X+38.344 Y-23.889 +G01 X+35.174 Y-33.496 +G01 X+35.164 Y-35.015 +G01 X+35.015 Y-35.165 +G01 X+33.422 Y-35.181 +G01 X+23.035 Y-38.568 +G01 X+21.307 Y-38.881 +G01 X+19.579 Y-38.944 +G01 X+17.85 Y-38.756 +G01 X+16.111 Y-38.314 +G01 X+6.562 Y-35.118 +G01 X+5.062 Y-35.107 +G01 X+4.956 Y-35.063 +G01 X+4.892 Y-34.939 +G01 X+4.875 Y-33.422 +G01 X+1.46 Y-23.035 +G01 X+1.144 Y-21.307 +G01 X+1.081 Y-19.579 +G01 X+1.27 Y-17.85 +G01 X+1.716 Y-16.111 +G01 X+4.938 Y-6.562 +G01 X+4.948 Y-5.098 +G01 X+5.098 Y-4.949 +G01 X+6.515 Y-4.951 +G01 X+16.965 Y-1.486 +G01 X+18.693 Y-1.168 +G01 X+20.421 Y-1.104 +G01 X+22.15 Y-1.295 +G01 X+23.889 Y-1.744 +G01 X+33.438 Y-4.99 +G01 X+34.815 Y-5 +G01 X+34.92 Y-5.044 +G01 X+35.001 Y-5.184 +G01 X+35.018 Y-6.578 +G01 X+38.488 Y-16.965 +G01 X+38.808 Y-18.693 +G01 X+38.873 Y-20.421 +G01 X+38.681 Y-22.15 +G01 X+38.229 Y-23.889 +G01 X+34.959 Y-33.495 +G01 X+34.949 Y-34.8 +G01 X+34.801 Y-34.95 +G01 X+33.422 Y-34.967 +G01 X+23.035 Y-38.462 +G01 X+21.307 Y-38.785 +G01 X+19.579 Y-38.85 +G01 X+17.85 Y-38.657 +G01 X+16.111 Y-38.201 +G01 X+6.562 Y-34.907 +G01 X+5.249 Y-34.879 +G01 X+5.101 Y-34.731 +G01 X+5.084 Y-33.422 +G01 X+1.563 Y-23.035 +G01 X+1.238 Y-21.307 +G01 X+1.173 Y-19.579 +G01 X+1.368 Y-17.85 +G01 X+1.826 Y-16.111 +G01 X+5.144 Y-6.563 +G01 X+5.154 Y-5.309 +G01 X+5.198 Y-5.203 +G01 X+5.309 Y-5.154 +G01 X+6.514 Y-5.156 +G01 X+16.965 Y-1.589 +G01 X+18.693 Y-1.261 +G01 X+20.421 Y-1.195 +G01 X+22.15 Y-1.392 +G01 X+23.889 Y-1.854 +G01 X+33.437 Y-5.196 +G01 X+34.646 Y-5.206 +G01 X+34.796 Y-5.354 +G01 X+34.814 Y-6.578 +G01 X+38.386 Y-16.965 +G01 X+38.716 Y-18.693 +G01 X+38.782 Y-20.421 +G01 X+38.584 Y-22.149 +G01 X+38.119 Y-23.889 +G01 X+34.753 Y-33.495 +G01 X+34.743 Y-34.568 +G01 X+34.699 Y-34.673 +G01 X+34.569 Y-34.744 +G01 X+33.422 Y-34.762 +G01 X+23.035 Y-38.36 +G01 X+21.307 Y-38.692 +G01 X+19.579 Y-38.759 +G01 X+17.851 Y-38.56 +G01 X+16.111 Y-38.091 +G01 X+6.563 Y-34.702 +G01 X+5.457 Y-34.691 +G01 X+5.308 Y-34.544 +G01 X+5.289 Y-33.423 +G01 X+1.666 Y-23.035 +G01 X+1.331 Y-21.308 +G01 X+1.263 Y-19.58 +G01 X+1.464 Y-17.851 +G01 X+1.936 Y-16.111 +G01 X+5.35 Y-6.563 +G01 X+5.369 Y-5.509 +G01 X+5.519 Y-5.361 +G01 X+6.513 Y-5.362 +G01 X+16.965 Y-1.693 +G01 X+18.692 Y-1.356 +G01 X+20.42 Y-1.288 +G01 X+22.149 Y-1.491 +G01 X+23.889 Y-1.967 +G01 X+33.436 Y-5.411 +G01 X+34.43 Y-5.421 +G01 X+34.58 Y-5.568 +G01 X+34.599 Y-6.577 +G01 X+38.277 Y-16.965 +G01 X+38.617 Y-18.692 +G01 X+38.685 Y-20.42 +G01 X+38.481 Y-22.149 +G01 X+38.001 Y-23.889 +G01 X+34.528 Y-33.495 +G01 X+34.508 Y-34.373 +G01 X+34.361 Y-34.521 +G01 X+33.423 Y-34.538 +G01 X+23.035 Y-38.247 +G01 X+21.308 Y-38.589 +G01 X+19.58 Y-38.658 +G01 X+17.851 Y-38.452 +G01 X+16.111 Y-37.968 +G01 X+6.564 Y-34.468 +G01 X+5.691 Y-34.457 +G01 X+5.542 Y-34.31 +G01 X+5.523 Y-33.423 +G01 X+1.784 Y-23.035 +G01 X+1.438 Y-21.308 +G01 X+1.369 Y-19.58 +G01 X+1.576 Y-17.851 +G01 X+2.064 Y-16.111 +G01 X+5.593 Y-6.563 +G01 X+5.615 Y-5.751 +G01 X+5.765 Y-5.604 +G01 X+6.513 Y-5.605 +G01 X+16.965 Y-1.814 +G01 X+18.692 Y-1.465 +G01 X+20.42 Y-1.395 +G01 X+22.149 Y-1.604 +G01 X+23.889 Y-2.096 +G01 X+33.436 Y-5.654 +G01 X+34.188 Y-5.664 +G01 X+34.337 Y-5.811 +G01 X+34.357 Y-6.577 +G01 X+38.156 Y-16.965 +G01 X+38.507 Y-18.692 +G01 X+38.582 Y-20.297 +G01 X+38.391 Y-22.025 +G01 X+37.871 Y-23.889 +G01 X+34.285 Y-33.495 +G01 X+34.262 Y-34.132 +G01 X+34.116 Y-34.278 +G01 X+33.423 Y-34.296 +G01 X+23.035 Y-38.126 +G01 X+21.308 Y-38.48 +G01 X+19.703 Y-38.555 +G01 X+17.975 Y-38.363 +G01 X+16.111 Y-37.839 +G01 X+6.565 Y-34.225 +G01 X+5.934 Y-34.214 +G01 X+5.784 Y-34.068 +G01 X+5.765 Y-33.423 +G01 X+1.905 Y-23.036 +G01 X+1.548 Y-21.308 +G01 X+1.472 Y-19.703 +G01 X+1.665 Y-17.975 +G01 X+2.194 Y-16.111 +G01 X+5.837 Y-6.563 +G01 X+5.86 Y-5.993 +G01 X+6.01 Y-5.847 +G01 X+6.512 Y-5.848 +G01 X+16.965 Y-1.934 +G01 X+18.569 Y-1.591 +G01 X+20.296 Y-1.499 +G01 X+22.025 Y-1.693 +G01 X+23.883 Y-2.224 +G01 X+33.435 Y-5.897 +G01 X+33.945 Y-5.907 +G01 X+34.095 Y-6.052 +G01 X+34.114 Y-6.577 +G01 X+38.035 Y-16.964 +G01 X+38.398 Y-18.692 +G01 X+38.475 Y-20.297 +G01 X+38.278 Y-22.025 +G01 X+37.834 Y-23.635 +G01 X+34.041 Y-33.495 +G01 X+34.018 Y-33.893 +G01 X+33.874 Y-34.037 +G01 X+33.423 Y-34.054 +G01 X+23.036 Y-38.005 +G01 X+21.308 Y-38.37 +G01 X+19.704 Y-38.448 +G01 X+17.975 Y-38.25 +G01 X+16.365 Y-37.802 +G01 X+6.565 Y-33.982 +G01 X+6.176 Y-33.971 +G01 X+6.026 Y-33.828 +G01 X+6.007 Y-33.423 +G01 X+2.025 Y-23.036 +G01 X+1.657 Y-21.308 +G01 X+1.579 Y-19.704 +G01 X+1.778 Y-17.975 +G01 X+2.229 Y-16.365 +G01 X+6.08 Y-6.562 +G01 X+6.104 Y-6.233 +G01 X+6.254 Y-6.09 +G01 X+6.511 +G01 X+16.965 Y-2.055 +G01 X+18.568 Y-1.701 +G01 X+20.296 Y-1.606 +G01 X+22.025 Y-1.807 +G01 X+23.635 Y-2.261 +G01 X+33.434 Y-6.14 +G01 X+33.703 Y-6.151 +G01 X+33.809 Y-6.194 +G01 X+33.853 Y-6.291 +G01 X+33.872 Y-6.578 +G01 X+37.914 Y-16.964 +G01 X+38.288 Y-18.692 +G01 X+38.368 Y-20.296 +G01 X+38.165 Y-22.025 +G01 X+37.707 Y-23.635 +G01 X+33.797 Y-33.498 +G01 X+33.777 Y-33.66 +G01 X+33.637 Y-33.797 +G01 X+33.422 Y-33.811 +G01 X+23.036 Y-37.884 +G01 X+21.308 Y-38.261 +G01 X+19.704 Y-38.341 +G01 X+17.975 Y-38.137 +G01 X+16.365 Y-37.676 +G01 X+6.566 Y-33.739 +G01 X+6.42 Y-33.728 +G01 X+6.314 Y-33.684 +G01 X+6.267 Y-33.589 +G01 X+6.25 Y-33.419 +G01 X+2.146 Y-23.036 +G01 X+1.767 Y-21.308 +G01 X+1.686 Y-19.704 +G01 X+1.892 Y-17.975 +G01 X+2.356 Y-16.365 +G01 X+6.326 Y-6.558 +G01 X+6.491 Y-6.333 +G01 X+16.964 Y-2.174 +G01 X+18.568 Y-1.81 +G01 X+20.295 Y-1.711 +G01 X+22.025 Y-1.917 +G01 X+23.635 Y-2.385 +G01 X+33.426 Y-6.37 +G01 X+33.626 Y-6.584 +G01 X+37.8 Y-16.964 +G01 X+38.185 Y-18.691 +G01 X+38.267 Y-20.296 +G01 X+38.059 Y-22.025 +G01 X+37.588 Y-23.635 +G01 X+33.549 Y-33.491 +G01 X+33.441 Y-33.58 +G01 X+23.036 Y-37.774 +G01 X+21.309 Y-38.161 +G01 X+19.704 Y-38.244 +G01 X+17.975 Y-38.035 +G01 X+16.366 Y-37.562 +G01 X+6.545 Y-33.485 +G01 X+6.464 Y-33.403 +G01 X+2.251 Y-23.036 +G01 X+1.862 Y-21.309 +G01 X+1.779 Y-19.704 +G01 X+1.989 Y-17.975 +G01 X+2.465 Y-16.366 +G01 X+6.515 Y-6.597 +G01 X+6.597 Y-6.515 +G01 X+16.599 Y-2.394 +G01 X+18.323 Y-1.937 +G01 X+19.926 Y-1.791 +G01 X+21.529 Y-1.913 +G01 X+23.133 Y-2.305 +G01 X+33.387 Y-6.532 +G01 X+33.468 Y-6.613 +G01 X+37.597 Y-16.606 +G01 X+38.053 Y-18.326 +G01 X+38.199 Y-19.926 +G01 X+38.077 Y-21.526 +G01 X+37.685 Y-23.126 +G01 X+33.452 Y-33.37 +G01 X+33.37 Y-33.452 +G01 X+23.386 Y-37.588 +G01 X+21.67 Y-38.043 +G01 X+20.074 Y-38.189 +G01 X+18.478 Y-38.066 +G01 X+16.881 Y-37.676 +G01 X+6.646 Y-33.435 +G01 X+6.565 Y-33.354 +G01 X+2.422 Y-23.379 +G01 X+1.967 Y-21.666 +G01 X+1.821 Y-20.074 +G01 X+1.944 Y-18.481 +G01 X+2.333 Y-16.888 +G01 X+6.582 Y-6.663 +G01 X+6.663 Y-6.582 +G01 X+16.635 Y-2.439 +G01 X+18.341 Y-1.987 +G01 X+19.926 Y-1.843 +G01 X+21.512 Y-1.966 +G01 X+23.095 Y-2.356 +G01 X+33.285 Y-6.635 +G01 X+33.365 Y-6.715 +G01 X+37.531 Y-16.659 +G01 X+37.981 Y-18.352 +G01 X+38.124 Y-19.927 +G01 X+38.002 Y-21.501 +G01 X+37.614 Y-23.073 +G01 X+33.312 Y-33.233 +G01 X+33.233 Y-33.312 +G01 X+23.317 Y-37.502 +G01 X+21.636 Y-37.949 +G01 X+20.073 Y-38.091 +G01 X+18.51 Y-37.969 +G01 X+16.95 Y-37.584 +G01 X+6.82 Y-33.259 +G01 X+6.741 Y-33.18 +G01 X+2.528 Y-23.293 +G01 X+2.084 Y-21.625 +G01 X+1.942 Y-20.072 +G01 X+2.063 Y-18.521 +G01 X+2.446 Y-16.972 +G01 X+6.794 Y-6.872 +G01 X+6.872 Y-6.794 +G01 X+16.731 Y-2.558 +G01 X+18.387 Y-2.116 +G01 X+19.928 Y-1.975 +G01 X+21.469 Y-2.095 +G01 X+23.005 Y-2.476 +G01 X+33.075 Y-6.847 +G01 X+33.153 Y-6.925 +G01 X+37.412 Y-16.755 +G01 X+37.852 Y-18.398 +G01 X+37.992 Y-19.928 +G01 X+37.872 Y-21.458 +G01 X+37.494 Y-22.983 +G01 X+33.1 Y-33.023 +G01 X+33.023 Y-33.1 +G01 X+23.221 Y-37.382 +G01 X+21.59 Y-37.82 +G01 X+20.071 Y-37.959 +G01 X+18.553 Y-37.84 +G01 X+17.04 Y-37.464 +G01 X+7.03 Y-33.047 +G01 X+6.953 Y-32.97 +G01 X+2.648 Y-23.197 +G01 X+2.213 Y-21.578 +G01 X+2.074 Y-20.071 +G01 X+2.192 Y-18.563 +G01 X+2.567 Y-17.062 +G01 X+7.006 Y-7.082 +G01 X+7.082 Y-7.006 +G01 X+16.827 Y-2.678 +G01 X+18.433 Y-2.245 +G01 X+19.93 Y-2.107 +G01 X+21.426 Y-2.225 +G01 X+22.916 Y-2.597 +G01 X+32.865 Y-7.059 +G01 X+32.941 Y-7.135 +G01 X+37.293 Y-16.851 +G01 X+37.723 Y-18.445 +G01 X+37.86 Y-19.93 +G01 X+37.743 Y-21.415 +G01 X+37.373 Y-22.893 +G01 X+32.888 Y-32.813 +G01 X+32.813 Y-32.888 +G01 X+23.125 Y-37.263 +G01 X+21.544 Y-37.69 +G01 X+20.07 Y-37.827 +G01 X+18.596 Y-37.711 +G01 X+17.129 Y-37.343 +G01 X+7.239 Y-32.835 +G01 X+7.165 Y-32.761 +G01 X+3.382 Y-24.512 +G01 X+2.689 Y-22.877 +G01 X+2.322 Y-21.419 +G01 X+2.206 Y-19.957 +G01 X+2.341 Y-18.495 +G01 X+2.766 Y-16.928 +G01 X+7.218 Y-7.292 +G01 X+7.292 Y-7.218 +G01 X+9.599 Y-6.153 +G01 X+16.922 Y-2.797 +G01 X+18.59 Y-2.355 +G01 X+20.043 Y-2.239 +G01 X+21.494 Y-2.373 +G01 X+23.048 Y-2.795 +G01 X+32.656 Y-7.271 +G01 X+32.729 Y-7.344 +G01 X+33.969 Y-10.008 +G01 X+37.173 Y-16.946 +G01 X+37.612 Y-18.601 +G01 X+37.728 Y-20.043 +G01 X+37.595 Y-21.482 +G01 X+37.175 Y-23.024 +G01 X+32.676 Y-32.604 +G01 X+32.604 Y-32.676 +G01 X+28.264 Y-34.714 +G01 X+23.03 Y-37.143 +G01 X+21.388 Y-37.58 +G01 X+19.958 Y-37.695 +G01 X+18.529 Y-37.563 +G01 X+17 Y-37.145 +G01 X+7.449 Y-32.623 +G01 X+7.377 Y-32.551 +G01 X+4.872 Y-27.264 +G01 X+2.887 Y-23.006 +G01 X+2.452 Y-21.377 +G01 X+2.338 Y-19.958 +G01 X+2.47 Y-18.541 +G01 X+2.884 Y-17.025 +G01 X+7.431 Y-7.501 +G01 X+14.089 Y-4.281 +G01 X+17.019 Y-2.916 +G01 X+18.633 Y-2.485 +G01 X+20.041 Y-2.371 +G01 X+21.447 Y-2.502 +G01 X+22.951 Y-2.914 +G01 X+32.446 Y-7.484 +G01 X+35.512 Y-13.767 +G01 X+37.054 Y-17.043 +G01 X+37.483 Y-18.644 +G01 X+37.596 Y-20.041 +G01 X+37.466 Y-21.436 +G01 X+37.056 Y-22.927 +G01 X+32.463 Y-32.394 +G01 X+23.038 Y-36.985 +G01 X+21.558 Y-37.412 +G01 X+20.067 Y-37.563 +G01 X+18.576 Y-37.434 +G01 X+17.098 Y-37.027 +G01 X+7.659 Y-32.41 +G01 X+3.045 Y-23.013 +G01 X+2.62 Y-21.545 +G01 X+2.47 Y-20.067 +G01 X+2.599 Y-18.588 +G01 X+3.003 Y-17.122 +G01 X+7.643 Y-7.711 +G01 X+17.012 Y-3.074 +G01 X+18.467 Y-2.652 +G01 X+19.933 Y-2.503 +G01 X+21.4 Y-2.631 +G01 X+22.854 Y-3.032 +G01 X+32.236 Y-7.696 +G01 X+36.896 Y-17.037 +G01 X+37.316 Y-18.479 +G01 X+37.464 Y-19.934 +G01 X+37.337 Y-21.389 +G01 X+36.938 Y-22.829 +G01 X+32.251 Y-32.184 +G01 X+24.878 Y-35.923 +G01 X+22.837 Y-36.905 +G01 X+21.405 Y-37.303 +G01 X+19.963 Y-37.431 +G01 X+18.52 Y-37.285 +G01 X+17.093 Y-36.87 +G01 X+7.868 Y-32.198 +G01 X+3.99 Y-24.61 +G01 X+3.125 Y-22.812 +G01 X+2.729 Y-21.394 +G01 X+2.602 Y-19.963 +G01 X+2.747 Y-18.533 +G01 X+3.16 Y-17.118 +G01 X+7.855 Y-7.921 +G01 X+15.565 Y-3.949 +G01 X+17.212 Y-3.155 +G01 X+18.618 Y-2.761 +G01 X+20.036 Y-2.635 +G01 X+21.455 Y-2.779 +G01 X+22.857 Y-3.189 +G01 X+32.027 Y-7.908 +G01 X+35.945 Y-15.454 +G01 X+36.815 Y-17.236 +G01 X+37.206 Y-18.629 +G01 X+37.332 Y-20.036 +G01 X+37.189 Y-21.443 +G01 X+36.782 Y-22.831 +G01 X+32.038 Y-31.974 +G01 X+24.282 Y-36.034 +G01 X+22.74 Y-36.786 +G01 X+21.359 Y-37.174 +G01 X+19.964 Y-37.299 +G01 X+18.57 Y-37.157 +G01 X+17.194 Y-36.752 +G01 X+8.078 Y-31.985 +G01 X+3.997 Y-24.25 +G01 X+3.244 Y-22.716 +G01 X+2.858 Y-21.348 +G01 X+2.734 Y-19.965 +G01 X+2.875 Y-18.582 +G01 X+3.277 Y-17.219 +G01 X+8.068 Y-8.13 +G01 X+15.921 Y-3.955 +G01 X+17.308 Y-3.274 +G01 X+18.664 Y-2.89 +G01 X+20.035 Y-2.767 +G01 X+21.405 Y-2.908 +G01 X+22.756 Y-3.307 +G01 X+31.817 Y-8.121 +G01 X+35.939 Y-15.813 +G01 X+36.696 Y-17.332 +G01 X+37.077 Y-18.675 +G01 X+37.2 Y-20.034 +G01 X+37.06 Y-21.393 +G01 X+36.664 Y-22.731 +G01 X+31.826 Y-31.765 +G01 X+23.926 Y-36.032 +G01 X+22.644 Y-36.667 +G01 X+21.313 Y-37.045 +G01 X+19.966 Y-37.167 +G01 X+18.62 Y-37.028 +G01 X+17.295 Y-36.635 +G01 X+8.288 Y-31.773 +G01 X+3.999 Y-23.895 +G01 X+3.363 Y-22.62 +G01 X+2.987 Y-21.301 +G01 X+2.866 Y-19.967 +G01 X+3.004 Y-18.632 +G01 X+3.395 Y-17.32 +G01 X+8.28 Y-8.34 +G01 X+16.271 Y-3.956 +G01 X+17.405 Y-3.393 +G01 X+18.71 Y-3.02 +G01 X+20.033 Y-2.899 +G01 X+21.355 Y-3.036 +G01 X+22.655 Y-3.424 +G01 X+31.607 Y-8.333 +G01 X+36.504 Y-17.245 +G01 X+36.93 Y-18.628 +G01 X+37.068 Y-19.938 +G01 X+36.95 Y-21.249 +G01 X+36.546 Y-22.629 +G01 X+31.613 Y-31.555 +G01 X+22.729 Y-36.474 +G01 X+21.359 Y-36.897 +G01 X+20.061 Y-37.035 +G01 X+18.763 Y-36.918 +G01 X+17.396 Y-36.517 +G01 X+8.498 Y-31.56 +G01 X+3.555 Y-22.703 +G01 X+3.135 Y-21.347 +G01 X+2.998 Y-20.061 +G01 X+3.114 Y-18.774 +G01 X+3.512 Y-17.421 +G01 X+8.493 Y-8.55 +G01 X+17.323 Y-3.584 +G01 X+18.665 Y-3.167 +G01 X+19.94 Y-3.031 +G01 X+21.214 Y-3.146 +G01 X+22.553 Y-3.542 +G01 X+31.397 Y-8.546 +G01 X+36.386 Y-17.349 +G01 X+36.801 Y-18.678 +G01 X+36.936 Y-19.94 +G01 X+36.821 Y-21.203 +G01 X+36.429 Y-22.528 +G01 X+31.401 Y-31.345 +G01 X+22.626 Y-36.357 +G01 X+21.31 Y-36.769 +G01 X+20.06 Y-36.904 +G01 X+18.809 Y-36.789 +G01 X+17.497 Y-36.4 +G01 X+8.708 Y-31.348 +G01 X+3.672 Y-22.6 +G01 X+3.263 Y-21.297 +G01 X+3.129 Y-20.059 +G01 X+3.243 Y-18.821 +G01 X+3.63 Y-17.522 +G01 X+8.705 Y-8.76 +G01 X+17.426 Y-3.702 +G01 X+18.715 Y-3.296 +G01 X+19.941 Y-3.162 +G01 X+21.168 Y-3.275 +G01 X+22.453 Y-3.659 +G01 X+31.187 Y-8.759 +G01 X+36.269 Y-17.452 +G01 X+36.672 Y-18.728 +G01 X+36.805 Y-19.941 +G01 X+36.692 Y-21.156 +G01 X+36.311 Y-22.427 +G01 X+31.188 Y-31.135 +G01 X+22.522 Y-36.24 +G01 X+21.26 Y-36.64 +G01 X+20.058 Y-36.772 +G01 X+18.856 Y-36.66 +G01 X+17.598 Y-36.282 +G01 X+8.917 Y-31.135 +G01 X+3.86 Y-22.658 +G01 X+3.43 Y-21.417 +G01 X+3.262 Y-20.059 +G01 X+3.372 Y-18.867 +G01 X+3.747 Y-17.623 +G01 X+8.918 Y-8.97 +G01 X+17.279 Y-3.936 +G01 X+18.514 Y-3.483 +G01 X+19.772 Y-3.299 +G01 X+21.12 Y-3.404 +G01 X+22.352 Y-3.777 +G01 X+30.923 Y-8.938 +G01 X+36.082 Y-17.398 +G01 X+36.486 Y-18.53 +G01 X+36.668 Y-19.774 +G01 X+36.563 Y-21.108 +G01 X+36.194 Y-22.326 +G01 X+30.975 Y-30.925 +G01 X+22.574 Y-36.054 +G01 X+21.455 Y-36.454 +G01 X+20.224 Y-36.635 +G01 X+18.903 Y-36.531 +G01 X+17.699 Y-36.164 +G01 X+9.127 Y-30.922 +G01 X+3.975 Y-22.547 +G01 X+3.577 Y-21.44 +G01 X+3.398 Y-20.222 +G01 X+3.501 Y-18.915 +G01 X+3.865 Y-17.724 +G01 X+9.131 Y-9.18 +G01 X+17.393 Y-4.051 +G01 X+18.575 Y-3.61 +G01 X+19.78 Y-3.431 +G01 X+21.074 Y-3.533 +G01 X+22.251 Y-3.894 +G01 X+30.714 Y-9.15 +G01 X+35.967 Y-17.509 +G01 X+36.359 Y-18.591 +G01 X+36.536 Y-19.782 +G01 X+36.435 Y-21.062 +G01 X+36.076 Y-22.226 +G01 X+30.763 Y-30.715 +G01 X+22.463 Y-35.939 +G01 X+21.394 Y-36.327 +G01 X+20.216 Y-36.503 +G01 X+18.95 Y-36.402 +G01 X+17.8 Y-36.047 +G01 X+9.337 Y-30.71 +G01 X+4.09 Y-22.435 +G01 X+3.705 Y-21.379 +G01 X+3.529 Y-20.213 +G01 X+3.615 Y-19.039 +G01 X+3.982 Y-17.825 +G01 X+9.344 Y-9.39 +G01 X+17.507 Y-4.166 +G01 X+18.635 Y-3.737 +G01 X+19.789 Y-3.562 +G01 X+20.95 Y-3.647 +G01 X+22.149 Y-4.012 +G01 X+30.504 Y-9.362 +G01 X+35.852 Y-17.62 +G01 X+36.232 Y-18.651 +G01 X+36.405 Y-19.791 +G01 X+36.32 Y-20.94 +G01 X+35.959 Y-22.124 +G01 X+30.55 Y-30.505 +G01 X+22.352 Y-35.824 +G01 X+21.334 Y-36.2 +G01 X+20.207 Y-36.372 +G01 X+19.071 Y-36.288 +G01 X+17.901 Y-35.929 +G01 X+9.547 Y-30.497 +G01 X+4.205 Y-22.324 +G01 X+3.832 Y-21.319 +G01 X+3.661 Y-20.205 +G01 X+3.744 Y-19.082 +G01 X+4.1 Y-17.926 +G01 X+9.557 Y-9.6 +G01 X+17.621 Y-4.281 +G01 X+18.695 Y-3.864 +G01 X+19.797 Y-3.694 +G01 X+20.907 Y-3.777 +G01 X+22.049 Y-4.129 +G01 X+30.295 Y-9.574 +G01 X+35.737 Y-17.731 +G01 X+36.105 Y-18.711 +G01 X+36.273 Y-19.799 +G01 X+36.191 Y-20.896 +G01 X+35.841 Y-22.023 +G01 X+30.337 Y-30.295 +G01 X+22.241 Y-35.708 +G01 X+21.274 Y-36.073 +G01 X+20.199 Y-36.24 +G01 X+19.114 Y-36.159 +G01 X+18.002 Y-35.812 +G01 X+9.757 Y-30.284 +G01 X+4.32 Y-22.213 +G01 X+3.959 Y-21.259 +G01 X+3.793 Y-20.197 +G01 X+3.874 Y-19.125 +G01 X+4.217 Y-18.027 +G01 X+9.769 Y-9.809 +G01 X+17.735 Y-4.396 +G01 X+18.755 Y-3.991 +G01 X+19.806 Y-3.826 +G01 X+20.864 Y-3.906 +G01 X+21.948 Y-4.247 +G01 X+30.086 Y-9.787 +G01 X+35.622 Y-17.843 +G01 X+35.938 Y-18.636 +G01 X+36.14 Y-19.806 +G01 X+36.062 Y-20.853 +G01 X+35.724 Y-21.923 +G01 X+30.124 Y-30.085 +G01 X+22.129 Y-35.594 +G01 X+21.347 Y-35.907 +G01 X+20.191 Y-36.107 +G01 X+19.157 Y-36.029 +G01 X+18.103 Y-35.695 +G01 X+9.967 Y-30.071 +G01 X+4.435 Y-22.101 +G01 X+4.124 Y-21.33 +G01 X+3.929 Y-20.258 +G01 X+4.003 Y-19.169 +G01 X+4.335 Y-18.128 +G01 X+9.982 Y-10.019 +G01 X+17.85 Y-4.51 +G01 X+18.686 Y-4.156 +G01 X+19.745 Y-3.962 +G01 X+20.82 Y-4.035 +G01 X+21.847 Y-4.364 +G01 X+29.876 Y-9.999 +G01 X+35.507 Y-17.955 +G01 X+35.813 Y-18.704 +G01 X+36.005 Y-19.748 +G01 X+35.932 Y-20.81 +G01 X+35.606 Y-21.822 +G01 X+29.911 Y-29.875 +G01 X+22.017 Y-35.479 +G01 X+21.28 Y-35.781 +G01 X+20.249 Y-35.972 +G01 X+19.201 Y-35.9 +G01 X+18.203 Y-35.577 +G01 X+10.177 Y-29.858 +G01 X+4.55 Y-21.99 +G01 X+4.25 Y-21.263 +G01 X+4.061 Y-20.246 +G01 X+4.132 Y-19.212 +G01 X+4.452 Y-18.228 +G01 X+10.195 Y-10.229 +G01 X+17.966 Y-4.624 +G01 X+18.511 Y-4.366 +G01 X+19.564 Y-4.11 +G01 X+20.649 Y-4.141 +G01 X+21.745 Y-4.482 +G01 X+29.667 Y-10.211 +G01 X+35.393 Y-18.066 +G01 X+35.668 Y-18.711 +G01 X+35.869 Y-19.697 +G01 X+35.815 Y-20.704 +G01 X+35.489 Y-21.721 +G01 X+29.698 Y-29.665 +G01 X+21.906 Y-35.364 +G01 X+21.271 Y-35.636 +G01 X+20.3 Y-35.836 +G01 X+19.306 Y-35.783 +G01 X+18.305 Y-35.46 +G01 X+10.387 Y-29.645 +G01 X+4.665 Y-21.878 +G01 X+4.395 Y-21.253 +G01 X+4.197 Y-20.296 +G01 X+4.25 Y-19.316 +G01 X+4.57 Y-18.33 +G01 X+10.408 Y-10.44 +G01 X+18.081 Y-4.738 +G01 X+18.593 Y-4.489 +G01 X+19.586 Y-4.242 +G01 X+20.613 Y-4.271 +G01 X+21.645 Y-4.599 +G01 X+29.458 Y-10.424 +G01 X+35.278 Y-18.178 +G01 X+35.542 Y-18.782 +G01 X+35.737 Y-19.711 +G01 X+35.685 Y-20.664 +G01 X+35.372 Y-21.62 +G01 X+29.485 Y-29.455 +G01 X+21.794 Y-35.249 +G01 X+21.2 Y-35.511 +G01 X+20.285 Y-35.704 +G01 X+19.346 Y-35.653 +G01 X+18.405 Y-35.342 +G01 X+10.597 Y-29.432 +G01 X+4.779 Y-21.766 +G01 X+4.54 Y-21.237 +G01 X+4.329 Y-20.282 +G01 X+4.379 Y-19.356 +G01 X+4.687 Y-18.43 +G01 X+10.621 Y-10.65 +G01 X+18.195 Y-4.853 +G01 X+18.675 Y-4.612 +G01 X+19.608 Y-4.373 +G01 X+20.576 Y-4.401 +G01 X+21.544 Y-4.716 +G01 X+29.248 Y-10.636 +G01 X+35.163 Y-18.29 +G01 X+35.398 Y-18.8 +G01 X+35.605 Y-19.726 +G01 X+35.556 Y-20.624 +G01 X+35.254 Y-21.52 +G01 X+29.272 Y-29.245 +G01 X+21.682 Y-35.134 +G01 X+21.181 Y-35.367 +G01 X+20.271 Y-35.572 +G01 X+19.386 Y-35.523 +G01 X+18.506 Y-35.225 +G01 X+10.807 Y-29.219 +G01 X+4.894 Y-21.654 +G01 X+4.664 Y-21.163 +G01 X+4.461 Y-20.267 +G01 X+4.509 Y-19.396 +G01 X+4.805 Y-18.531 +G01 X+10.835 Y-10.86 +G01 X+18.309 Y-4.967 +G01 X+18.756 Y-4.736 +G01 X+19.629 Y-4.505 +G01 X+20.54 Y-4.532 +G01 X+21.444 Y-4.834 +G01 X+29.039 Y-10.849 +G01 X+35.049 Y-18.402 +G01 X+35.235 Y-18.778 +G01 X+35.462 Y-19.635 +G01 X+35.436 Y-20.531 +G01 X+35.137 Y-21.418 +G01 X+29.059 Y-29.035 +G01 X+21.57 Y-35.02 +G01 X+21.201 Y-35.204 +G01 X+20.36 Y-35.429 +G01 X+19.478 Y-35.403 +G01 X+18.607 Y-35.107 +G01 X+11.017 Y-29.005 +G01 X+5.009 Y-21.542 +G01 X+4.827 Y-21.181 +G01 X+4.603 Y-20.355 +G01 X+4.629 Y-19.488 +G01 X+4.922 Y-18.632 +G01 X+11.048 Y-11.07 +G01 X+18.424 Y-5.082 +G01 X+18.838 Y-4.859 +G01 X+19.651 Y-4.636 +G01 X+20.503 Y-4.662 +G01 X+21.343 Y-4.951 +G01 X+28.829 Y-11.061 +G01 X+34.934 Y-18.514 +G01 X+35.112 Y-18.86 +G01 X+35.331 Y-19.656 +G01 X+35.306 Y-20.494 +G01 X+35.019 Y-21.318 +G01 X+28.846 Y-28.825 +G01 X+21.457 Y-34.906 +G01 X+21.206 Y-35.042 +G01 X+20.387 Y-35.291 +G01 X+19.563 Y-35.282 +G01 X+18.75 Y-35.012 +G01 X+11.228 Y-28.792 +G01 X+5.123 Y-21.429 +G01 X+4.989 Y-21.184 +G01 X+4.742 Y-20.381 +G01 X+4.751 Y-19.571 +G01 X+5.018 Y-18.774 +G01 X+11.261 Y-11.28 +G01 X+18.54 Y-5.195 +G01 X+18.837 Y-5.021 +G01 X+19.625 Y-4.775 +G01 X+20.42 Y-4.783 +G01 X+21.201 Y-5.047 +G01 X+28.62 Y-11.274 +G01 X+34.82 Y-18.627 +G01 X+34.951 Y-18.861 +G01 X+35.192 Y-19.631 +G01 X+35.184 Y-20.412 +G01 X+34.923 Y-21.177 +G01 X+28.632 Y-28.615 +G01 X+21.345 Y-34.791 +G01 X+21.117 Y-34.92 +G01 X+20.362 Y-35.159 +G01 X+19.596 Y-35.151 +G01 X+18.847 Y-34.893 +G01 X+11.581 Y-28.703 +G01 X+5.237 Y-21.317 +G01 X+5.11 Y-21.095 +G01 X+4.874 Y-20.356 +G01 X+4.881 Y-19.605 +G01 X+5.136 Y-18.871 +G01 X+11.474 Y-11.49 +G01 X+18.655 Y-5.31 +G01 X+18.925 Y-5.142 +G01 X+19.65 Y-4.906 +G01 X+20.387 Y-4.914 +G01 X+21.105 Y-5.166 +G01 X+28.41 Y-11.486 +G01 X+34.706 Y-18.739 +G01 X+34.829 Y-18.949 +G01 X+35.061 Y-19.656 +G01 X+35.054 Y-20.379 +G01 X+34.805 Y-21.081 +G01 X+28.544 Y-28.263 +G01 X+21.231 Y-34.678 +G01 X+21.142 Y-34.733 +G01 X+20.461 Y-35.004 +G01 X+19.714 Y-35.034 +G01 X+18.945 Y-34.775 +G01 X+11.975 Y-28.656 +G01 X+5.35 Y-21.203 +G01 X+5.296 Y-21.116 +G01 X+5.029 Y-20.453 +G01 X+4.999 Y-19.72 +G01 X+5.217 Y-19.039 +G01 X+11.688 Y-11.701 +G01 X+18.816 Y-5.386 +G01 X+19.517 Y-5.071 +G01 X+20.233 Y-5.026 +G01 X+20.938 Y-5.247 +G01 X+28.015 Y-11.532 +G01 X+34.585 Y-18.845 +G01 X+34.886 Y-19.489 +G01 X+34.94 Y-20.226 +G01 X+34.723 Y-20.916 +G01 X+28.5 Y-27.87 +G01 X+21.127 Y-34.557 +G01 X+20.501 Y-34.854 +G01 X+19.78 Y-34.908 +G01 X+19.106 Y-34.693 +G01 X+12.181 Y-28.448 +G01 X+5.472 Y-21.099 +G01 X+5.179 Y-20.49 +G01 X+5.125 Y-19.785 +G01 X+5.337 Y-19.129 +G01 X+11.901 Y-11.911 +G01 X+18.929 Y-5.501 +G01 X+19.555 Y-5.202 +G01 X+20.209 Y-5.158 +G01 X+20.849 Y-5.367 +G01 X+27.631 Y-11.578 +G01 X+34.471 Y-18.957 +G01 X+34.756 Y-19.531 +G01 X+34.809 Y-20.203 +G01 X+34.603 Y-20.827 +G01 X+28.287 Y-27.669 +G01 X+21.015 Y-34.442 +G01 X+20.459 Y-34.723 +G01 X+19.803 Y-34.776 +G01 X+19.195 Y-34.572 +G01 X+12.565 Y-28.407 +G01 X+5.586 Y-20.987 +G01 X+5.31 Y-20.449 +G01 X+5.257 Y-19.809 +G01 X+5.458 Y-19.217 +G01 X+12.118 Y-12.118 +G01 X+18.993 Y-5.658 +G01 X+19.561 Y-5.344 +G01 X+20.152 Y-5.285 +G01 X+20.732 Y-5.472 +G01 X+27.246 Y-11.613 +G01 X+34.358 Y-19.071 +G01 X+34.606 Y-19.513 +G01 X+34.684 Y-20.113 +G01 X+34.498 Y-20.71 +G01 X+28.427 Y-27.101 +G01 X+20.901 Y-34.329 +G01 X+20.475 Y-34.573 +G01 X+19.891 Y-34.651 +G01 X+19.311 Y-34.468 +G01 X+12.949 Y-28.376 +G01 X+5.699 Y-20.873 +G01 X+5.459 Y-20.463 +G01 X+5.382 Y-19.895 +G01 X+5.548 Y-19.358 +G01 X+12.33 Y-12.33 +G01 X+19.11 Y-5.77 +G01 X+19.548 Y-5.494 +G01 X+20.101 Y-5.415 +G01 X+20.622 Y-5.578 +G01 X+26.339 Y-11.124 +G01 X+34.245 Y-19.185 +G01 X+34.455 Y-19.511 +G01 X+34.556 Y-20.039 +G01 X+34.419 Y-20.552 +G01 X+29.632 Y-25.479 +G01 X+20.787 Y-34.217 +G01 X+20.475 Y-34.422 +G01 X+19.964 Y-34.523 +G01 X+19.466 Y-34.387 +G01 X+18.131 Y-33.137 +G01 X+5.809 Y-20.756 +G01 X+5.644 Y-20.53 +G01 X+5.511 Y-20.024 +G01 X+5.643 Y-19.488 +G01 X+12.542 Y-12.542 +G01 X+19.248 Y-5.836 +G01 X+19.543 Y-5.629 +G01 X+20.027 Y-5.527 +G01 X+20.508 Y-5.659 +G01 X+34.164 Y-19.248 +G01 X+34.371 Y-19.543 +G01 X+34.473 Y-20.027 +G01 X+34.341 Y-20.508 +G01 X+20.752 Y-34.164 +G01 X+20.457 Y-34.371 +G01 X+19.973 Y-34.473 +G01 X+19.492 Y-34.341 +G01 X+5.834 Y-20.751 +G01 X+5.656 Y-20.512 +G01 X+5.527 Y-20.036 +G01 X+5.629 Y-19.552 +G01 X+12.542 Y-12.542 +G00 Z+3.275 +G00 X+0 Y+1.95 +G00 Z-1.725 +G01 Z-2.95 F10000 +G01 X+40.391 Y+1.904 F12000 +G01 X+41.091 Y+1.609 +G01 X+41.624 Y+1.069 +G01 X+41.913 Y+0.359 +G01 X+41.949 Y+0.007 +G01 X+41.904 Y-40.391 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-1.091 Y-41.609 +G01 X-1.624 Y-41.069 +G01 X-1.913 Y-40.359 +G01 X-1.949 Y-40.007 +G01 X-1.904 Y+0.391 +G01 X-1.876 Y+0.487 +G01 X-1.806 Y+0.708 +G01 X-1.437 Y+1.298 +G01 X-1.035 Y+1.638 +G01 X-0.712 Y+1.803 +G01 X-0.235 Y+1.923 +G01 X+0 Y+1.939 +G01 X+40 Y+1.891 +G01 X+40.102 Y+1.886 +G01 X+40.533 Y+1.811 +G01 X+40.803 Y+1.709 +G01 X+41.106 Y+1.53 +G01 X+41.31 Y+1.359 +G01 X+41.561 Y+1.06 +G01 X+41.752 Y+0.7 +G01 X+41.826 Y+0.476 +G01 X+41.887 Y-0.556 +G01 X+41.879 Y-28.025 +G01 X+41.839 Y-40 +G01 X+41.828 Y-40.187 +G01 X+41.606 Y-40.887 +G01 X+41.537 Y-41.007 +G01 X+41.035 Y-41.513 +G01 X+40.699 Y-41.697 +G01 X+40.445 Y-41.78 +G01 X+39.321 Y-41.835 +G01 X+15 Y-41.865 +G01 X+0.185 Y-41.788 +G01 X-0.38 Y-41.744 +G01 X-0.595 Y-41.684 +G01 X-1.238 Y-41.278 +G01 X-1.581 Y-40.817 +G01 X-1.782 Y-39.579 +G01 X-1.835 Y-25.9 +G01 X-1.837 Y-15.247 +G01 X-1.744 Y-6.539 +G01 X-1.734 Y-0.009 +G01 X-1.69 Y+0.377 +G01 X-1.613 Y+0.63 +G01 X-1.284 Y+1.157 +G01 X-0.925 Y+1.461 +G01 X-0.637 Y+1.608 +G01 X-0.211 Y+1.716 +G01 X+0 Y+1.73 +G01 X+10.976 Y+1.764 +G01 X+22.407 Y+1.829 +G01 X+36.728 Y+1.673 +G01 X+40 Y+1.668 +G01 X+40.468 Y+1.598 +G01 X+40.707 Y+1.509 +G01 X+40.974 Y+1.351 +G01 X+41.155 Y+1.2 +G01 X+41.373 Y+0.94 +G01 X+41.604 Y+0.43 +G01 X+41.663 Y-0.679 +G01 X+41.698 Y-9.851 +G01 X+41.806 Y-21.42 +G01 X+41.609 Y-35.988 +G01 X+41.603 Y-40 +G01 X+41.593 Y-40.157 +G01 X+41.342 Y-40.859 +G01 X+40.904 Y-41.316 +G01 X+40.611 Y-41.477 +G01 X+40.391 Y-41.55 +G01 X+39.074 Y-41.598 +G01 X+30.926 Y-41.63 +G01 X+19.198 Y-41.78 +G01 X+4.383 Y-41.544 +G01 X+0.185 Y-41.537 +G01 X-0.324 Y-41.5 +G01 X-0.508 Y-41.448 +G01 X-1.061 Y-41.101 +G01 X-1.356 Y-40.707 +G01 X-1.531 Y-39.578 +G01 X-1.563 Y-31.42 +G01 X-1.753 Y-19.691 +G01 X-1.482 Y-6.539 +G01 X-1.471 Y-0.009 +G01 X-1.435 Y+0.318 +G01 X-1.369 Y+0.532 +G01 X-1.091 Y+0.978 +G01 X-0.787 Y+1.238 +G01 X-0.543 Y+1.363 +G01 X-0.181 Y+1.456 +G01 X+0 Y+1.468 +G01 X+8.226 Y+1.496 +G01 X+19.938 Y+1.724 +G01 X+28.15 Y+1.56 +G01 X+35 Y+1.414 +G01 X+40 Y+1.406 +G01 X+40.392 Y+1.347 +G01 X+40.594 Y+1.272 +G01 X+40.819 Y+1.139 +G01 X+40.971 Y+1.013 +G01 X+41.155 Y+0.795 +G01 X+41.35 Y+0.367 +G01 X+41.401 Y-0.926 +G01 X+41.432 Y-8.086 +G01 X+41.695 Y-19.691 +G01 X+41.569 Y-26.235 +G01 X+41.348 Y-34.753 +G01 X+41.34 Y-40 +G01 X+41.333 Y-40.128 +G01 X+41.124 Y-40.713 +G01 X+40.758 Y-41.098 +G01 X+40.513 Y-41.234 +G01 X+40.331 Y-41.295 +G01 X+38.457 Y-41.335 +G01 X+32.16 Y-41.365 +G01 X+20.556 Y-41.666 +G01 X+14.753 Y-41.559 +G01 X+5.37 Y-41.283 +G01 X+0.185 Y-41.275 +G01 X-0.265 Y-41.244 +G01 X-0.418 Y-41.202 +G01 X-0.876 Y-40.916 +G01 X-1.12 Y-40.592 +G01 X-1.27 Y-39.577 +G01 X-1.295 Y-32.407 +G01 X-1.636 Y-20.802 +G01 X-1.546 Y-15.494 +G01 X-1.219 Y-6.539 +G01 X-1.209 Y-0.009 +G01 X-1.179 Y+0.259 +G01 X-1.126 Y+0.434 +G01 X-0.899 Y+0.8 +G01 X-0.649 Y+1.015 +G01 X-0.453 Y+1.117 +G01 X-0.013 Y+1.204 +G01 X+7.476 Y+1.229 +G01 X+19.074 Y+1.606 +G01 X+24.151 Y+1.523 +G01 X+34.383 Y+1.152 +G01 X+40 Y+1.143 +G01 X+40.316 Y+1.096 +G01 X+40.476 Y+1.037 +G01 X+40.782 Y+0.828 +G01 X+40.937 Y+0.649 +G01 X+41.095 Y+0.305 +G01 X+41.138 Y-2.037 +G01 X+41.171 Y-7.593 +G01 X+41.576 Y-19.074 +G01 X+41.499 Y-23.889 +G01 X+41.087 Y-34.259 +G01 X+41.078 Y-40 +G01 X+41.063 Y-40.142 +G01 X+40.906 Y-40.568 +G01 X+40.617 Y-40.875 +G01 X+40.277 Y-41.034 +G01 X+32.407 Y-41.109 +G01 X+21.173 Y-41.544 +G01 X+16.481 Y-41.479 +G01 X+5.741 Y-41.021 +G01 X-0.202 Y-40.987 +G01 X-0.328 Y-40.956 +G01 X-0.69 Y-40.73 +G01 X-0.884 Y-40.478 +G01 X-1.008 Y-39.452 +G01 X-1.036 Y-32.654 +G01 X-1.513 Y-21.296 +G01 X-1.451 Y-16.605 +G01 X-0.957 Y-6.539 +G01 X-0.946 Y-0.014 +G01 X-0.883 Y+0.326 +G01 X-0.707 Y+0.622 +G01 X-0.511 Y+0.793 +G01 X-0.358 Y+0.873 +G01 X-0.013 Y+0.942 +G01 X+7.226 Y+0.967 +G01 X+18.58 Y+1.482 +G01 X+23.025 Y+1.433 +G01 X+34.136 Y+0.89 +G01 X+40 Y+0.881 +G01 X+40.353 Y+0.801 +G01 X+40.598 Y+0.641 +G01 X+40.719 Y+0.504 +G01 X+40.841 Y+0.242 +G01 X+40.91 Y-7.346 +G01 X+41.454 Y-18.704 +G01 X+41.405 Y-22.901 +G01 X+40.825 Y-34.136 +G01 X+40.815 Y-40 +G01 X+40.802 Y-40.112 +G01 X+40.688 Y-40.422 +G01 X+40.472 Y-40.657 +G01 X+40.217 Y-40.779 +G01 X+32.654 Y-40.847 +G01 X+21.543 Y-41.42 +G01 X+17.346 Y-41.383 +G01 X+5.864 Y-40.759 +G01 X-0.209 Y-40.706 +G01 X-0.505 Y-40.545 +G01 X-0.648 Y-40.364 +G01 X-0.747 Y-39.444 +G01 X-0.77 Y-32.901 +G01 X-1.387 Y-21.667 +G01 X-1.361 Y-17.593 +G01 X-0.694 Y-6.539 +G01 X-0.684 Y-0.014 +G01 X-0.639 Y+0.228 +G01 X-0.518 Y+0.438 +G01 X-0.271 Y+0.62 +G01 X-0.013 Y+0.68 +G01 X+7.226 Y+0.714 +G01 X+18.333 Y+1.357 +G01 X+22.407 Y+1.33 +G01 X+34.012 Y+0.628 +G01 X+39.983 Y+0.618 +G01 X+40.23 Y+0.566 +G01 X+40.489 Y+0.365 +G01 X+40.586 Y+0.178 +G01 X+40.643 Y-7.099 +G01 X+41.324 Y-18.21 +G01 X+41.313 Y-22.037 +G01 X+40.562 Y-34.012 +G01 X+40.553 Y-40 +G01 X+40.471 Y-40.276 +G01 X+40.326 Y-40.439 +G01 X+40.156 Y-40.525 +G01 X+32.901 Y-40.579 +G01 X+21.79 Y-41.294 +G01 X+17.963 Y-41.283 +G01 X+5.988 Y-40.497 +G01 X-0.124 Y-40.457 +G01 X-0.32 Y-40.36 +G01 X-0.411 Y-40.25 +G01 X-0.485 Y-39.198 +G01 X-0.515 Y-32.901 +G01 X-1.264 Y-21.79 +G01 X-1.252 Y-17.963 +G01 X-0.432 Y-6.539 +G01 X-0.422 Y-0.028 +G01 X-0.326 Y+0.243 +G01 X-0.177 Y+0.375 +G01 X-0.013 Y+0.419 +G01 X+6.976 Y+0.443 +G01 X+18.21 Y+1.234 +G01 X+21.79 Y+1.231 +G01 X+27.4 Y+0.842 +G01 X+33.889 Y+0.366 +G01 X+39.964 Y+0.356 +G01 X+40.226 Y+0.241 +G01 X+40.304 Y+0.144 +G01 X+40.351 Y-0.044 +G01 X+40.388 Y-7.099 +G01 X+41.204 Y-18.21 +G01 X+41.201 Y-21.79 +G01 X+40.826 Y-27.025 +G01 X+40.3 Y-33.889 +G01 X+40.29 Y-39.964 +G01 X+40.2 Y-40.178 +G01 X+40.113 Y-40.253 +G01 X+39.976 Y-40.29 +G01 X+32.901 Y-40.324 +G01 X+22.037 Y-41.164 +G01 X+18.58 Y-41.183 +G01 X+14.753 Y-40.931 +G01 X+6.111 Y-40.235 +G01 X-0.034 Y-40.211 +G01 X-0.133 Y-40.175 +G01 X-0.202 Y-40.05 +G01 X-0.26 Y-32.901 +G01 X-1.133 Y-22.037 +G01 X-1.157 Y-18.704 +G01 X-0.913 Y-15 +G01 X-0.17 Y-6.539 +G01 X-0.163 Y-0.057 +G01 X-0.125 Y+0.042 +G01 X+0.047 Y+0.162 +G01 X+6.976 Y+0.194 +G01 X+17.963 Y+1.109 +G01 X+21.296 Y+1.135 +G01 X+24.901 Y+0.894 +G01 X+33.889 Y+0.127 +G01 X+39.938 Y+0.121 +G01 X+40.044 Y+0.077 +G01 X+40.121 Y-0.062 +G01 X+40.163 Y-7.099 +G01 X+41.084 Y-17.84 +G01 X+41.12 Y-21.173 +G01 X+40.883 Y-24.753 +G01 X+40.085 Y-33.889 +G01 X+40.079 Y-39.929 +G01 X+39.93 Y-40.079 +G01 X+32.901 Y-40.122 +G01 X+22.16 Y-41.064 +G01 X+18.827 Y-41.101 +G01 X+15.494 Y-40.882 +G01 X+6.111 Y-40.043 +G01 X+0.123 Y-40.026 +G01 X-0.027 Y-39.877 +G01 X-0.081 Y-32.901 +G01 X-1.044 Y-22.16 +G01 X-1.082 Y-18.827 +G01 X-0.858 Y-15.494 +G01 X-0.002 Y-6.546 +G01 X+0.006 Y-0.247 +G01 X+0.05 Y-0.141 +G01 X+0.142 Y-0.05 +G01 X+0.247 Y-0.006 +G01 X+6.976 Y+0.028 +G01 X+17.84 Y+1.023 +G01 X+21.173 Y+1.062 +G01 X+24.401 Y+0.842 +G01 X+33.882 Y-0.046 +G01 X+39.798 Y-0.061 +G01 X+39.948 Y-0.21 +G01 X+39.994 Y-7.099 +G01 X+41.002 Y-17.84 +G01 X+41.041 Y-21.173 +G01 X+40.806 Y-24.506 +G01 X+39.908 Y-33.882 +G01 X+39.9 Y-39.751 +G01 X+39.751 Y-39.9 +G01 X+32.908 Y-39.948 +G01 X+22.16 Y-40.98 +G01 X+19.074 Y-41.026 +G01 X+15.988 Y-40.83 +G01 X+6.118 Y-39.861 +G01 X+0.296 Y-39.853 +G01 X+0.146 Y-39.704 +G01 X+0.123 Y-33.156 +G01 X-0.958 Y-22.16 +G01 X-1.006 Y-19.074 +G01 X-0.805 Y-15.988 +G01 X+0.186 Y-6.547 +G01 X+0.196 Y-0.371 +G01 X+0.24 Y-0.265 +G01 X+0.37 Y-0.195 +G01 X+6.969 Y-0.16 +G01 X+17.716 Y+0.924 +G01 X+20.802 Y+0.984 +G01 X+23.889 Y+0.787 +G01 X+33.758 Y-0.247 +G01 X+39.594 Y-0.257 +G01 X+39.744 Y-0.406 +G01 X+39.767 Y-6.844 +G01 X+40.903 Y-17.84 +G01 X+40.957 Y-20.802 +G01 X+40.754 Y-23.889 +G01 X+39.692 Y-33.758 +G01 X+39.682 Y-39.506 +G01 X+39.639 Y-39.612 +G01 X+39.506 Y-39.683 +G01 X+33.156 Y-39.707 +G01 X+22.167 Y-40.874 +G01 X+19.198 Y-40.93 +G01 X+16.111 Y-40.722 +G01 X+6.243 Y-39.631 +G01 X+0.528 Y-39.622 +G01 X+0.378 Y-39.472 +G01 X+0.353 Y-33.156 +G01 X-0.845 Y-22.167 +G01 X-0.902 Y-19.204 +G01 X-0.69 Y-16.111 +G01 X+0.429 Y-6.548 +G01 X+0.439 Y-0.618 +G01 X+0.483 Y-0.512 +G01 X+0.617 Y-0.439 +G01 X+6.969 Y-0.398 +G01 X+17.709 Y+0.809 +G01 X+20.679 Y+0.878 +G01 X+23.519 Y+0.698 +G01 X+33.757 Y-0.49 +G01 X+39.351 Y-0.5 +G01 X+39.5 Y-0.649 +G01 X+39.528 Y-6.843 +G01 X+40.772 Y-17.593 +G01 X+40.856 Y-20.425 +G01 X+40.68 Y-23.395 +G01 X+39.449 Y-33.757 +G01 X+39.439 Y-39.259 +G01 X+39.395 Y-39.365 +G01 X+39.259 Y-39.439 +G01 X+33.407 Y-39.437 +G01 X+22.414 Y-40.742 +G01 X+19.575 Y-40.829 +G01 X+16.605 Y-40.649 +G01 X+6.243 Y-39.388 +G01 X+0.772 Y-39.378 +G01 X+0.622 Y-39.228 +G01 X+0.623 Y-33.408 +G01 X-0.713 Y-22.414 +G01 X-0.802 Y-19.575 +G01 X-0.618 Y-16.605 +G01 X+0.672 Y-6.548 +G01 X+0.682 Y-0.864 +G01 X+0.726 Y-0.759 +G01 X+0.864 Y-0.682 +G01 X+6.719 Y-0.667 +G01 X+17.586 Y+0.685 +G01 X+20.425 Y+0.775 +G01 X+23.148 Y+0.614 +G01 X+33.756 Y-0.734 +G01 X+39.107 Y-0.743 +G01 X+39.257 Y-0.893 +G01 X+39.256 Y-6.592 +G01 X+40.656 Y-17.586 +G01 X+40.75 Y-20.302 +G01 X+40.596 Y-23.025 +G01 X+39.205 Y-33.756 +G01 X+39.196 Y-39.012 +G01 X+39.152 Y-39.118 +G01 X+39.012 Y-39.196 +G01 X+33.408 Y-39.195 +G01 X+22.414 Y-40.627 +G01 X+19.698 Y-40.723 +G01 X+16.975 Y-40.566 +G01 X+6.244 Y-39.145 +G01 X+1.015 Y-39.135 +G01 X+0.865 Y-38.985 +G01 X+0.866 Y-33.408 +G01 X-0.587 Y-22.538 +G01 X-0.696 Y-19.699 +G01 X-0.536 Y-16.975 +G01 X+0.916 Y-6.549 +G01 X+0.926 Y-1.111 +G01 X+0.97 Y-1.006 +G01 X+1.111 Y-0.926 +G01 X+6.718 Y-0.908 +G01 X+17.462 Y+0.558 +G01 X+20.301 Y+0.669 +G01 X+22.901 Y+0.519 +G01 X+33.755 Y-0.977 +G01 X+38.864 Y-0.987 +G01 X+39.013 Y-1.137 +G01 X+39.014 Y-6.591 +G01 X+40.529 Y-17.462 +G01 X+40.644 Y-20.055 +G01 X+40.514 Y-22.648 +G01 X+38.962 Y-33.755 +G01 X+38.952 Y-38.765 +G01 X+38.909 Y-38.871 +G01 X+38.765 Y-38.952 +G01 X+33.409 Y-38.953 +G01 X+22.538 Y-40.5 +G01 X+19.946 Y-40.618 +G01 X+17.352 Y-40.485 +G01 X+6.245 Y-38.901 +G01 X+1.258 Y-38.892 +G01 X+1.109 Y-38.742 +G01 X+1.108 Y-33.409 +G01 X-0.47 Y-22.538 +G01 X-0.591 Y-19.946 +G01 X-0.456 Y-17.353 +G01 X+1.159 Y-6.55 +G01 X+1.169 Y-1.358 +G01 X+1.213 Y-1.252 +G01 X+1.358 Y-1.169 +G01 X+6.718 Y-1.149 +G01 X+17.462 Y+0.441 +G01 X+20.054 Y+0.564 +G01 X+22.647 Y+0.426 +G01 X+33.755 Y-1.221 +G01 X+38.62 Y-1.23 +G01 X+38.77 Y-1.38 +G01 X+38.771 Y-6.59 +G01 X+40.412 Y-17.462 +G01 X+40.537 Y-19.931 +G01 X+40.422 Y-22.4 +G01 X+39.865 Y-26.235 +G01 X+38.719 Y-33.754 +G01 X+38.704 Y-38.56 +G01 X+38.554 Y-38.709 +G01 X+33.41 Y-38.711 +G01 X+22.538 Y-40.383 +G01 X+20.069 Y-40.511 +G01 X+17.6 Y-40.393 +G01 X+13.765 Y-39.826 +G01 X+6.246 Y-38.658 +G01 X+1.502 Y-38.648 +G01 X+1.352 Y-38.498 +G01 X+1.35 Y-33.41 +G01 X-0.354 Y-22.539 +G01 X-0.484 Y-20.069 +G01 X-0.364 Y-17.6 +G01 X+0.173 Y-14.012 +G01 X+1.402 Y-6.551 +G01 X+1.419 Y-1.562 +G01 X+1.57 Y-1.413 +G01 X+6.527 Y-1.42 +G01 X+17.338 Y+0.311 +G01 X+19.93 Y+0.457 +G01 X+22.4 Y+0.335 +G01 X+25.9 Y-0.197 +G01 X+33.754 Y-1.464 +G01 X+38.377 Y-1.473 +G01 X+38.527 Y-1.623 +G01 X+38.529 Y-6.589 +G01 X+40.282 Y-17.338 +G01 X+40.43 Y-19.93 +G01 X+40.306 Y-22.4 +G01 X+39.791 Y-25.741 +G01 X+38.475 Y-33.754 +G01 X+38.457 Y-38.316 +G01 X+38.307 Y-38.466 +G01 X+33.411 Y-38.468 +G01 X+22.662 Y-40.252 +G01 X+20.07 Y-40.403 +G01 X+17.6 Y-40.277 +G01 X+14.259 Y-39.753 +G01 X+6.552 Y-38.415 +G01 X+1.745 Y-38.405 +G01 X+1.595 Y-38.255 +G01 X+1.592 Y-33.411 +G01 X-0.223 Y-22.662 +G01 X-0.375 Y-20.316 +G01 X-0.285 Y-17.971 +G01 X+0.067 Y-15.494 +G01 X+1.646 Y-6.552 +G01 X+1.666 Y-1.805 +G01 X+1.816 Y-1.656 +G01 X+6.526 Y-1.663 +G01 X+17.338 Y+0.194 +G01 X+19.684 Y+0.348 +G01 X+22.029 Y+0.256 +G01 X+24.651 Y-0.128 +G01 X+33.448 Y-1.707 +G01 X+38.134 Y-1.717 +G01 X+38.283 Y-1.866 +G01 X+38.287 Y-6.589 +G01 X+40.164 Y-17.338 +G01 X+40.321 Y-19.683 +G01 X+40.228 Y-22.029 +G01 X+39.864 Y-24.506 +G01 X+38.232 Y-33.629 +G01 X+38.211 Y-38.073 +G01 X+38.061 Y-38.223 +G01 X+33.412 Y-38.226 +G01 X+22.662 Y-40.135 +G01 X+20.317 Y-40.294 +G01 X+17.971 Y-40.2 +G01 X+15.494 Y-39.83 +G01 X+6.553 Y-38.172 +G01 X+1.988 Y-38.162 +G01 X+1.838 Y-38.012 +G01 X+1.835 Y-33.412 +G01 X-0.105 Y-22.662 +G01 X-0.268 Y-20.317 +G01 X-0.171 Y-17.971 +G01 X+0.205 Y-15.494 +G01 X+1.889 Y-6.553 +G01 X+1.913 Y-2.049 +G01 X+2.063 Y-1.899 +G01 X+6.525 Y-1.906 +G01 X+17.337 Y+0.076 +G01 X+19.683 Y+0.241 +G01 X+22.029 Y+0.143 +G01 X+24.401 Y-0.219 +G01 X+33.447 Y-1.95 +G01 X+37.89 Y-1.96 +G01 X+38.04 Y-2.11 +G01 X+38.044 Y-6.588 +G01 X+40.046 Y-17.337 +G01 X+40.214 Y-19.683 +G01 X+40.115 Y-22.029 +G01 X+39.727 Y-24.506 +G01 X+37.989 Y-33.628 +G01 X+37.964 Y-37.83 +G01 X+37.814 Y-37.979 +G01 X+33.412 Y-37.984 +G01 X+22.663 Y-40.017 +G01 X+20.44 Y-40.185 +G01 X+18.218 Y-40.11 +G01 X+15.988 Y-39.79 +G01 X+6.553 Y-37.928 +G01 X+2.231 Y-37.918 +G01 X+2.082 Y-37.769 +G01 X+2.077 Y-33.413 +G01 X+0.012 Y-22.663 +G01 X-0.158 Y-20.44 +G01 X-0.082 Y-18.218 +G01 X+0.243 Y-15.988 +G01 X+2.132 Y-6.553 +G01 X+2.16 Y-2.292 +G01 X+2.31 Y-2.143 +G01 X+6.524 Y-2.149 +G01 X+17.337 Y-0.042 +G01 X+19.559 Y+0.131 +G01 X+21.781 Y+0.054 +G01 X+24.151 Y-0.304 +G01 X+33.446 Y-2.193 +G01 X+37.647 Y-2.203 +G01 X+37.797 Y-2.353 +G01 X+37.802 Y-6.587 +G01 X+39.929 Y-17.337 +G01 X+40.105 Y-19.559 +G01 X+40.026 Y-21.782 +G01 X+39.691 Y-24.012 +G01 X+37.746 Y-33.628 +G01 X+37.717 Y-37.587 +G01 X+37.567 Y-37.736 +G01 X+33.413 Y-37.742 +G01 X+22.663 Y-39.899 +G01 X+20.441 Y-40.078 +G01 X+18.219 Y-39.998 +G01 X+15.988 Y-39.659 +G01 X+6.554 Y-37.685 +G01 X+2.475 Y-37.675 +G01 X+2.325 Y-37.525 +G01 X+2.319 Y-33.413 +G01 X+0.13 Y-22.663 +G01 X-0.051 Y-20.441 +G01 X+0.03 Y-18.219 +G01 X+0.374 Y-15.988 +G01 X+2.376 Y-6.554 +G01 X+2.406 Y-2.535 +G01 X+2.557 Y-2.386 +G01 X+6.524 Y-2.392 +G01 X+17.337 Y-0.159 +G01 X+19.559 Y+0.024 +G01 X+21.781 Y-0.058 +G01 X+24.151 Y-0.437 +G01 X+33.445 Y-2.436 +G01 X+37.404 Y-2.446 +G01 X+37.554 Y-2.596 +G01 X+37.56 Y-6.586 +G01 X+39.811 Y-17.337 +G01 X+39.997 Y-19.559 +G01 X+39.914 Y-21.781 +G01 X+39.56 Y-24.012 +G01 X+37.502 Y-33.627 +G01 X+37.47 Y-37.344 +G01 X+37.321 Y-37.493 +G01 X+33.414 Y-37.499 +G01 X+22.663 Y-39.782 +G01 X+20.564 Y-39.967 +G01 X+18.465 Y-39.909 +G01 X+16.358 Y-39.606 +G01 X+6.555 Y-37.442 +G01 X+2.718 Y-37.432 +G01 X+2.568 Y-37.282 +G01 X+2.561 Y-33.414 +G01 X+0.248 Y-22.663 +G01 X+0.06 Y-20.564 +G01 X+0.119 Y-18.466 +G01 X+0.426 Y-16.358 +G01 X+2.619 Y-6.555 +G01 X+2.653 Y-2.777 +G01 X+2.803 Y-2.629 +G01 X+6.523 Y-2.634 +G01 X+17.337 Y-0.276 +G01 X+19.436 Y-0.086 +G01 X+21.534 Y-0.145 +G01 X+23.642 Y-0.456 +G01 X+33.445 Y-2.675 +G01 X+37.16 Y-2.684 +G01 X+37.266 Y-2.728 +G01 X+37.316 Y-2.84 +G01 X+37.323 Y-6.585 +G01 X+39.697 Y-17.336 +G01 X+39.89 Y-19.435 +G01 X+39.83 Y-21.534 +G01 X+39.515 Y-23.642 +G01 X+37.268 Y-33.626 +G01 X+37.259 Y-37.11 +G01 X+37.11 Y-37.259 +G01 X+33.415 Y-37.267 +G01 X+22.664 Y-39.67 +G01 X+20.565 Y-39.865 +G01 X+18.466 Y-39.804 +G01 X+16.358 Y-39.486 +G01 X+6.556 Y-37.213 +G01 X+2.963 Y-37.203 +G01 X+2.857 Y-37.159 +G01 X+2.797 Y-37.037 +G01 X+2.789 Y-33.415 +G01 X+0.358 Y-22.664 +G01 X+0.16 Y-20.565 +G01 X+0.221 Y-18.466 +G01 X+0.544 Y-16.358 +G01 X+2.843 Y-6.556 +G01 X+2.852 Y-3.002 +G01 X+3.003 Y-2.853 +G01 X+6.522 Y-2.858 +G01 X+17.336 Y-0.384 +G01 X+19.435 Y-0.184 +G01 X+21.534 Y-0.245 +G01 X+23.642 Y-0.571 +G01 X+33.444 Y-2.895 +G01 X+36.913 Y-2.904 +G01 X+37.019 Y-2.948 +G01 X+37.096 Y-3.087 +G01 X+37.105 Y-6.585 +G01 X+39.592 Y-17.336 +G01 X+39.794 Y-19.435 +G01 X+39.731 Y-21.534 +G01 X+39.402 Y-23.642 +G01 X+37.053 Y-33.625 +G01 X+37.045 Y-36.895 +G01 X+36.895 Y-37.045 +G01 X+33.416 Y-37.054 +G01 X+22.664 Y-39.567 +G01 X+20.565 Y-39.771 +G01 X+18.466 Y-39.708 +G01 X+16.358 Y-39.375 +G01 X+6.556 Y-37.002 +G01 X+3.156 Y-36.976 +G01 X+3.007 Y-36.827 +G01 X+2.997 Y-33.416 +G01 X+0.458 Y-22.664 +G01 X+0.252 Y-20.565 +G01 X+0.305 Y-18.59 +G01 X+0.623 Y-16.488 +G01 X+3.049 Y-6.557 +G01 X+3.058 Y-3.21 +G01 X+3.102 Y-3.104 +G01 X+3.21 Y-3.059 +G01 X+6.521 Y-3.063 +G01 X+17.336 Y-0.483 +G01 X+19.435 Y-0.275 +G01 X+21.534 Y-0.339 +G01 X+23.519 Y-0.651 +G01 X+33.443 Y-3.101 +G01 X+36.741 Y-3.11 +G01 X+36.89 Y-3.259 +G01 X+36.9 Y-6.584 +G01 X+39.449 Y-17.09 +G01 X+39.692 Y-19.188 +G01 X+39.669 Y-21.164 +G01 X+39.401 Y-23.14 +G01 X+36.847 Y-33.625 +G01 X+36.839 Y-36.666 +G01 X+36.795 Y-36.772 +G01 X+36.667 Y-36.839 +G01 X+33.416 Y-36.849 +G01 X+22.91 Y-39.424 +G01 X+20.935 Y-39.663 +G01 X+18.837 Y-39.646 +G01 X+16.86 Y-39.375 +G01 X+6.557 Y-36.796 +G01 X+3.363 Y-36.787 +G01 X+3.213 Y-36.638 +G01 X+3.202 Y-33.416 +G01 X+0.601 Y-22.91 +G01 X+0.36 Y-20.936 +G01 X+0.377 Y-18.837 +G01 X+0.65 Y-16.86 +G01 X+3.255 Y-6.557 +G01 X+3.271 Y-3.415 +G01 X+3.421 Y-3.265 +G01 X+6.52 Y-3.271 +G01 X+17.09 Y-0.629 +G01 X+19.064 Y-0.386 +G01 X+21.163 Y-0.403 +G01 X+23.14 Y-0.679 +G01 X+33.443 Y-3.316 +G01 X+36.525 Y-3.326 +G01 X+36.674 Y-3.475 +G01 X+36.684 Y-6.583 +G01 X+39.341 Y-17.09 +G01 X+39.587 Y-19.064 +G01 X+39.57 Y-21.163 +G01 X+39.29 Y-23.14 +G01 X+36.623 Y-33.5 +G01 X+36.606 Y-36.464 +G01 X+36.456 Y-36.614 +G01 X+33.417 Y-36.624 +G01 X+22.91 Y-39.311 +G01 X+20.936 Y-39.56 +G01 X+18.837 Y-39.543 +G01 X+16.86 Y-39.26 +G01 X+6.558 Y-36.563 +G01 X+3.597 Y-36.552 +G01 X+3.448 Y-36.403 +G01 X+3.437 Y-33.417 +G01 X+0.719 Y-22.91 +G01 X+0.467 Y-20.936 +G01 X+0.485 Y-18.837 +G01 X+0.771 Y-16.86 +G01 X+3.498 Y-6.558 +G01 X+3.518 Y-3.658 +G01 X+3.668 Y-3.509 +G01 X+6.52 Y-3.513 +G01 X+17.089 Y-0.749 +G01 X+19.064 Y-0.494 +G01 X+21.163 Y-0.512 +G01 X+23.14 Y-0.801 +G01 X+33.442 Y-3.559 +G01 X+36.281 Y-3.569 +G01 X+36.431 Y-3.719 +G01 X+36.442 Y-6.582 +G01 X+39.221 Y-17.089 +G01 X+39.479 Y-19.064 +G01 X+39.461 Y-21.162 +G01 X+39.169 Y-23.14 +G01 X+36.38 Y-33.5 +G01 X+36.359 Y-36.221 +G01 X+36.21 Y-36.37 +G01 X+33.418 Y-36.382 +G01 X+22.911 Y-39.191 +G01 X+20.936 Y-39.452 +G01 X+18.838 Y-39.434 +G01 X+16.861 Y-39.138 +G01 X+6.558 Y-36.319 +G01 X+3.841 Y-36.309 +G01 X+3.691 Y-36.16 +G01 X+3.679 Y-33.418 +G01 X+0.839 Y-22.911 +G01 X+0.575 Y-20.936 +G01 X+0.594 Y-18.838 +G01 X+0.892 Y-16.861 +G01 X+3.742 Y-6.558 +G01 X+3.764 Y-3.901 +G01 X+3.915 Y-3.752 +G01 X+6.519 Y-3.756 +G01 X+17.089 Y-0.868 +G01 X+19.064 Y-0.602 +G01 X+20.916 +G01 X+22.892 Y-0.87 +G01 X+27.4 Y-2.097 +G01 X+33.441 Y-3.802 +G01 X+36.038 Y-3.812 +G01 X+36.188 Y-3.962 +G01 X+36.2 Y-6.582 +G01 X+39.102 Y-17.089 +G01 X+39.371 Y-19.064 +G01 Y-20.916 +G01 X+39.1 Y-22.891 +G01 X+37.896 Y-27.275 +G01 X+36.137 Y-33.499 +G01 X+36.112 Y-35.979 +G01 X+35.963 Y-36.127 +G01 X+33.419 Y-36.139 +G01 X+22.911 Y-39.072 +G01 X+20.936 Y-39.344 +G01 X+19.084 Y-39.343 +G01 X+17.109 Y-39.07 +G01 X+12.975 Y-37.925 +G01 X+6.559 Y-36.076 +G01 X+4.084 Y-36.066 +G01 X+3.934 Y-35.917 +G01 X+3.921 Y-33.419 +G01 X+0.958 Y-22.911 +G01 X+0.684 Y-20.936 +G01 Y-19.084 +G01 X+0.959 Y-17.109 +G01 X+2.117 Y-12.975 +G01 X+3.985 Y-6.559 +G01 X+4.011 Y-4.144 +G01 X+4.161 Y-3.995 +G01 X+6.518 Y-3.999 +G01 X+17.089 Y-0.988 +G01 X+19.064 Y-0.711 +G01 X+20.915 +G01 X+22.891 Y-0.989 +G01 X+26.9 Y-2.122 +G01 X+33.44 Y-4.045 +G01 X+35.795 Y-4.056 +G01 X+35.945 Y-4.205 +G01 X+35.958 Y-6.581 +G01 X+38.982 Y-17.089 +G01 X+39.262 Y-19.064 +G01 Y-20.915 +G01 X+38.981 Y-22.891 +G01 X+37.874 Y-26.775 +G01 X+35.893 Y-33.498 +G01 X+35.866 Y-35.736 +G01 X+35.717 Y-35.884 +G01 X+33.419 Y-35.897 +G01 X+22.911 Y-38.952 +G01 X+20.937 Y-39.235 +G01 X+19.085 +G01 X+17.109 Y-38.951 +G01 X+13.225 Y-37.833 +G01 X+6.56 Y-35.833 +G01 X+4.327 Y-35.823 +G01 X+4.177 Y-35.674 +G01 X+4.163 Y-33.42 +G01 X+1.078 Y-22.912 +G01 X+0.792 Y-20.937 +G01 Y-19.085 +G01 X+1.079 Y-17.109 +G01 X+2.132 Y-13.475 +G01 X+4.228 Y-6.56 +G01 X+4.258 Y-4.387 +G01 X+4.408 Y-4.238 +G01 X+6.517 Y-4.242 +G01 X+17.088 Y-1.108 +G01 X+19.063 Y-0.819 +G01 X+20.915 +G01 X+22.891 Y-1.109 +G01 X+26.65 Y-2.211 +G01 X+33.44 Y-4.288 +G01 X+35.552 Y-4.299 +G01 X+35.702 Y-4.448 +G01 X+35.716 Y-6.58 +G01 X+38.862 Y-17.088 +G01 X+39.154 Y-19.063 +G01 Y-20.915 +G01 X+38.861 Y-22.891 +G01 X+37.787 Y-26.525 +G01 X+35.65 Y-33.498 +G01 X+35.619 Y-35.493 +G01 X+35.47 Y-35.641 +G01 X+33.42 Y-35.655 +G01 X+22.912 Y-38.832 +G01 X+20.937 Y-39.127 +G01 X+19.085 +G01 X+17.109 Y-38.831 +G01 X+13.725 Y-37.825 +G01 X+6.561 Y-35.59 +G01 X+4.57 Y-35.579 +G01 X+4.42 Y-35.431 +G01 X+4.405 Y-33.42 +G01 X+1.198 Y-22.912 +G01 X+0.9 Y-20.937 +G01 Y-19.085 +G01 X+1.199 Y-17.109 +G01 X+2.202 Y-13.765 +G01 X+4.471 Y-6.56 +G01 X+4.504 Y-4.629 +G01 X+4.654 Y-4.481 +G01 X+6.516 Y-4.485 +G01 X+17.088 Y-1.228 +G01 X+19.063 Y-0.927 +G01 X+20.915 +G01 X+22.891 Y-1.228 +G01 X+26.15 Y-2.215 +G01 X+33.439 Y-4.532 +G01 X+35.308 Y-4.542 +G01 X+35.414 Y-4.586 +G01 X+35.458 Y-4.691 +G01 X+35.474 Y-6.579 +G01 X+38.742 Y-17.088 +G01 X+39.046 Y-19.063 +G01 Y-20.914 +G01 X+38.742 Y-22.891 +G01 X+37.719 Y-26.235 +G01 X+35.407 Y-33.497 +G01 X+35.373 Y-35.251 +G01 X+35.224 Y-35.398 +G01 X+33.421 Y-35.413 +G01 X+23.035 Y-38.683 +G01 X+21.183 Y-38.998 +G01 X+19.455 Y-39.041 +G01 X+17.727 Y-38.842 +G01 X+15.741 Y-38.318 +G01 X+6.561 Y-35.347 +G01 X+4.815 Y-35.336 +G01 X+4.709 Y-35.292 +G01 X+4.663 Y-35.186 +G01 X+4.648 Y-33.421 +G01 X+1.347 Y-23.034 +G01 X+1.042 Y-21.307 +G01 X+0.981 Y-19.578 +G01 X+1.164 Y-17.85 +G01 X+1.635 Y-15.988 +G01 X+4.714 Y-6.561 +G01 X+4.751 Y-4.872 +G01 X+4.901 Y-4.724 +G01 X+6.515 Y-4.727 +G01 X+16.966 Y-1.376 +G01 X+18.693 Y-1.068 +G01 X+20.421 Y-1.006 +G01 X+22.15 Y-1.191 +G01 X+23.889 Y-1.626 +G01 X+33.438 Y-4.77 +G01 X+35.061 Y-4.78 +G01 X+35.167 Y-4.824 +G01 X+35.22 Y-4.938 +G01 X+35.237 Y-6.579 +G01 X+38.596 Y-16.966 +G01 X+38.906 Y-18.693 +G01 X+38.969 Y-20.421 +G01 X+38.782 Y-22.15 +G01 X+38.344 Y-23.889 +G01 X+35.174 Y-33.496 +G01 X+35.164 Y-35.015 +G01 X+35.015 Y-35.165 +G01 X+33.422 Y-35.181 +G01 X+23.035 Y-38.568 +G01 X+21.307 Y-38.881 +G01 X+19.579 Y-38.944 +G01 X+17.85 Y-38.756 +G01 X+16.111 Y-38.314 +G01 X+6.562 Y-35.118 +G01 X+5.062 Y-35.107 +G01 X+4.956 Y-35.063 +G01 X+4.892 Y-34.939 +G01 X+4.875 Y-33.422 +G01 X+1.46 Y-23.035 +G01 X+1.144 Y-21.307 +G01 X+1.081 Y-19.579 +G01 X+1.27 Y-17.85 +G01 X+1.716 Y-16.111 +G01 X+4.938 Y-6.562 +G01 X+4.948 Y-5.098 +G01 X+5.098 Y-4.949 +G01 X+6.515 Y-4.951 +G01 X+16.965 Y-1.486 +G01 X+18.693 Y-1.168 +G01 X+20.421 Y-1.104 +G01 X+22.15 Y-1.295 +G01 X+23.889 Y-1.744 +G01 X+33.438 Y-4.99 +G01 X+34.815 Y-5 +G01 X+34.92 Y-5.044 +G01 X+35.001 Y-5.184 +G01 X+35.018 Y-6.578 +G01 X+38.488 Y-16.965 +G01 X+38.808 Y-18.693 +G01 X+38.873 Y-20.421 +G01 X+38.681 Y-22.15 +G01 X+38.229 Y-23.889 +G01 X+34.959 Y-33.495 +G01 X+34.949 Y-34.8 +G01 X+34.801 Y-34.95 +G01 X+33.422 Y-34.967 +G01 X+23.035 Y-38.462 +G01 X+21.307 Y-38.785 +G01 X+19.579 Y-38.85 +G01 X+17.85 Y-38.657 +G01 X+16.111 Y-38.201 +G01 X+6.562 Y-34.907 +G01 X+5.249 Y-34.879 +G01 X+5.101 Y-34.731 +G01 X+5.084 Y-33.422 +G01 X+1.563 Y-23.035 +G01 X+1.238 Y-21.307 +G01 X+1.173 Y-19.579 +G01 X+1.368 Y-17.85 +G01 X+1.826 Y-16.111 +G01 X+5.144 Y-6.563 +G01 X+5.154 Y-5.309 +G01 X+5.198 Y-5.203 +G01 X+5.309 Y-5.154 +G01 X+6.514 Y-5.156 +G01 X+16.965 Y-1.589 +G01 X+18.693 Y-1.261 +G01 X+20.421 Y-1.195 +G01 X+22.15 Y-1.392 +G01 X+23.889 Y-1.854 +G01 X+33.437 Y-5.196 +G01 X+34.646 Y-5.206 +G01 X+34.796 Y-5.354 +G01 X+34.814 Y-6.578 +G01 X+38.386 Y-16.965 +G01 X+38.716 Y-18.693 +G01 X+38.782 Y-20.421 +G01 X+38.584 Y-22.149 +G01 X+38.119 Y-23.889 +G01 X+34.753 Y-33.495 +G01 X+34.743 Y-34.568 +G01 X+34.699 Y-34.673 +G01 X+34.569 Y-34.744 +G01 X+33.422 Y-34.762 +G01 X+23.035 Y-38.36 +G01 X+21.307 Y-38.692 +G01 X+19.579 Y-38.759 +G01 X+17.851 Y-38.56 +G01 X+16.111 Y-38.091 +G01 X+6.563 Y-34.702 +G01 X+5.457 Y-34.691 +G01 X+5.308 Y-34.544 +G01 X+5.289 Y-33.423 +G01 X+1.666 Y-23.035 +G01 X+1.331 Y-21.308 +G01 X+1.263 Y-19.58 +G01 X+1.464 Y-17.851 +G01 X+1.936 Y-16.111 +G01 X+5.35 Y-6.563 +G01 X+5.369 Y-5.509 +G01 X+5.519 Y-5.361 +G01 X+6.513 Y-5.362 +G01 X+16.965 Y-1.693 +G01 X+18.692 Y-1.356 +G01 X+20.42 Y-1.288 +G01 X+22.149 Y-1.491 +G01 X+23.889 Y-1.967 +G01 X+33.436 Y-5.411 +G01 X+34.43 Y-5.421 +G01 X+34.58 Y-5.568 +G01 X+34.599 Y-6.577 +G01 X+38.277 Y-16.965 +G01 X+38.617 Y-18.692 +G01 X+38.685 Y-20.42 +G01 X+38.481 Y-22.149 +G01 X+38.001 Y-23.889 +G01 X+34.528 Y-33.495 +G01 X+34.508 Y-34.373 +G01 X+34.361 Y-34.521 +G01 X+33.423 Y-34.538 +G01 X+23.035 Y-38.247 +G01 X+21.308 Y-38.589 +G01 X+19.58 Y-38.658 +G01 X+17.851 Y-38.452 +G01 X+16.111 Y-37.968 +G01 X+6.564 Y-34.468 +G01 X+5.691 Y-34.457 +G01 X+5.542 Y-34.31 +G01 X+5.523 Y-33.423 +G01 X+1.784 Y-23.035 +G01 X+1.438 Y-21.308 +G01 X+1.369 Y-19.58 +G01 X+1.576 Y-17.851 +G01 X+2.064 Y-16.111 +G01 X+5.593 Y-6.563 +G01 X+5.615 Y-5.751 +G01 X+5.765 Y-5.604 +G01 X+6.513 Y-5.605 +G01 X+16.965 Y-1.814 +G01 X+18.692 Y-1.465 +G01 X+20.42 Y-1.395 +G01 X+22.149 Y-1.604 +G01 X+23.889 Y-2.096 +G01 X+33.436 Y-5.654 +G01 X+34.188 Y-5.664 +G01 X+34.337 Y-5.811 +G01 X+34.357 Y-6.577 +G01 X+38.156 Y-16.965 +G01 X+38.507 Y-18.692 +G01 X+38.582 Y-20.297 +G01 X+38.391 Y-22.025 +G01 X+37.871 Y-23.889 +G01 X+34.285 Y-33.495 +G01 X+34.262 Y-34.132 +G01 X+34.116 Y-34.278 +G01 X+33.423 Y-34.296 +G01 X+23.035 Y-38.126 +G01 X+21.308 Y-38.48 +G01 X+19.703 Y-38.555 +G01 X+17.975 Y-38.363 +G01 X+16.111 Y-37.839 +G01 X+6.565 Y-34.225 +G01 X+5.934 Y-34.214 +G01 X+5.784 Y-34.068 +G01 X+5.765 Y-33.423 +G01 X+1.905 Y-23.036 +G01 X+1.548 Y-21.308 +G01 X+1.472 Y-19.703 +G01 X+1.665 Y-17.975 +G01 X+2.194 Y-16.111 +G01 X+5.837 Y-6.563 +G01 X+5.86 Y-5.993 +G01 X+6.01 Y-5.847 +G01 X+6.512 Y-5.848 +G01 X+16.965 Y-1.934 +G01 X+18.569 Y-1.591 +G01 X+20.296 Y-1.499 +G01 X+22.025 Y-1.693 +G01 X+23.883 Y-2.224 +G01 X+33.435 Y-5.897 +G01 X+33.945 Y-5.907 +G01 X+34.095 Y-6.052 +G01 X+34.114 Y-6.577 +G01 X+38.035 Y-16.964 +G01 X+38.398 Y-18.692 +G01 X+38.475 Y-20.297 +G01 X+38.278 Y-22.025 +G01 X+37.834 Y-23.635 +G01 X+34.041 Y-33.495 +G01 X+34.018 Y-33.893 +G01 X+33.874 Y-34.037 +G01 X+33.423 Y-34.054 +G01 X+23.036 Y-38.005 +G01 X+21.308 Y-38.37 +G01 X+19.704 Y-38.448 +G01 X+17.975 Y-38.25 +G01 X+16.365 Y-37.802 +G01 X+6.565 Y-33.982 +G01 X+6.176 Y-33.971 +G01 X+6.026 Y-33.828 +G01 X+6.007 Y-33.423 +G01 X+2.025 Y-23.036 +G01 X+1.657 Y-21.308 +G01 X+1.579 Y-19.704 +G01 X+1.778 Y-17.975 +G01 X+2.229 Y-16.365 +G01 X+6.08 Y-6.562 +G01 X+6.104 Y-6.233 +G01 X+6.254 Y-6.09 +G01 X+6.511 +G01 X+16.965 Y-2.055 +G01 X+18.568 Y-1.701 +G01 X+20.296 Y-1.606 +G01 X+22.025 Y-1.807 +G01 X+23.635 Y-2.261 +G01 X+33.434 Y-6.14 +G01 X+33.703 Y-6.151 +G01 X+33.809 Y-6.194 +G01 X+33.853 Y-6.291 +G01 X+33.872 Y-6.578 +G01 X+37.914 Y-16.964 +G01 X+38.288 Y-18.692 +G01 X+38.368 Y-20.296 +G01 X+38.165 Y-22.025 +G01 X+37.707 Y-23.635 +G01 X+33.797 Y-33.498 +G01 X+33.777 Y-33.66 +G01 X+33.637 Y-33.797 +G01 X+33.422 Y-33.811 +G01 X+23.036 Y-37.884 +G01 X+21.308 Y-38.261 +G01 X+19.704 Y-38.341 +G01 X+17.975 Y-38.137 +G01 X+16.365 Y-37.676 +G01 X+6.566 Y-33.739 +G01 X+6.42 Y-33.728 +G01 X+6.314 Y-33.684 +G01 X+6.267 Y-33.589 +G01 X+6.25 Y-33.419 +G01 X+2.146 Y-23.036 +G01 X+1.767 Y-21.308 +G01 X+1.686 Y-19.704 +G01 X+1.892 Y-17.975 +G01 X+2.356 Y-16.365 +G01 X+6.326 Y-6.558 +G01 X+6.491 Y-6.333 +G01 X+16.964 Y-2.174 +G01 X+18.568 Y-1.81 +G01 X+20.295 Y-1.711 +G01 X+22.025 Y-1.917 +G01 X+23.635 Y-2.385 +G01 X+33.426 Y-6.37 +G01 X+33.626 Y-6.584 +G01 X+37.8 Y-16.964 +G01 X+38.185 Y-18.691 +G01 X+38.267 Y-20.296 +G01 X+38.059 Y-22.025 +G01 X+37.588 Y-23.635 +G01 X+33.549 Y-33.491 +G01 X+33.441 Y-33.58 +G01 X+23.036 Y-37.774 +G01 X+21.309 Y-38.161 +G01 X+19.704 Y-38.244 +G01 X+17.975 Y-38.035 +G01 X+16.366 Y-37.562 +G01 X+6.545 Y-33.485 +G01 X+6.464 Y-33.403 +G01 X+2.251 Y-23.036 +G01 X+1.862 Y-21.309 +G01 X+1.779 Y-19.704 +G01 X+1.989 Y-17.975 +G01 X+2.465 Y-16.366 +G01 X+6.515 Y-6.597 +G01 X+6.597 Y-6.515 +G01 X+16.599 Y-2.394 +G01 X+18.323 Y-1.937 +G01 X+19.926 Y-1.791 +G01 X+21.529 Y-1.913 +G01 X+23.133 Y-2.305 +G01 X+33.387 Y-6.532 +G01 X+33.468 Y-6.613 +G01 X+37.597 Y-16.606 +G01 X+38.053 Y-18.326 +G01 X+38.199 Y-19.926 +G01 X+38.077 Y-21.526 +G01 X+37.685 Y-23.126 +G01 X+33.452 Y-33.37 +G01 X+33.37 Y-33.452 +G01 X+23.386 Y-37.588 +G01 X+21.67 Y-38.043 +G01 X+20.074 Y-38.189 +G01 X+18.478 Y-38.066 +G01 X+16.881 Y-37.676 +G01 X+6.646 Y-33.435 +G01 X+6.565 Y-33.354 +G01 X+2.422 Y-23.379 +G01 X+1.967 Y-21.666 +G01 X+1.821 Y-20.074 +G01 X+1.944 Y-18.481 +G01 X+2.333 Y-16.888 +G01 X+6.582 Y-6.663 +G01 X+6.663 Y-6.582 +G01 X+16.635 Y-2.439 +G01 X+18.341 Y-1.987 +G01 X+19.926 Y-1.843 +G01 X+21.512 Y-1.966 +G01 X+23.095 Y-2.356 +G01 X+33.285 Y-6.635 +G01 X+33.365 Y-6.715 +G01 X+37.531 Y-16.659 +G01 X+37.981 Y-18.352 +G01 X+38.124 Y-19.927 +G01 X+38.002 Y-21.501 +G01 X+37.614 Y-23.073 +G01 X+33.312 Y-33.233 +G01 X+33.233 Y-33.312 +G01 X+23.317 Y-37.502 +G01 X+21.636 Y-37.949 +G01 X+20.073 Y-38.091 +G01 X+18.51 Y-37.969 +G01 X+16.95 Y-37.584 +G01 X+6.82 Y-33.259 +G01 X+6.741 Y-33.18 +G01 X+2.528 Y-23.293 +G01 X+2.084 Y-21.625 +G01 X+1.942 Y-20.072 +G01 X+2.063 Y-18.521 +G01 X+2.446 Y-16.972 +G01 X+6.794 Y-6.872 +G01 X+6.872 Y-6.794 +G01 X+16.731 Y-2.558 +G01 X+18.387 Y-2.116 +G01 X+19.928 Y-1.975 +G01 X+21.469 Y-2.095 +G01 X+23.005 Y-2.476 +G01 X+33.075 Y-6.847 +G01 X+33.153 Y-6.925 +G01 X+37.412 Y-16.755 +G01 X+37.852 Y-18.398 +G01 X+37.992 Y-19.928 +G01 X+37.872 Y-21.458 +G01 X+37.494 Y-22.983 +G01 X+33.1 Y-33.023 +G01 X+33.023 Y-33.1 +G01 X+23.221 Y-37.382 +G01 X+21.59 Y-37.82 +G01 X+20.071 Y-37.959 +G01 X+18.553 Y-37.84 +G01 X+17.04 Y-37.464 +G01 X+7.03 Y-33.047 +G01 X+6.953 Y-32.97 +G01 X+2.648 Y-23.197 +G01 X+2.213 Y-21.578 +G01 X+2.074 Y-20.071 +G01 X+2.192 Y-18.563 +G01 X+2.567 Y-17.062 +G01 X+7.006 Y-7.082 +G01 X+7.082 Y-7.006 +G01 X+16.827 Y-2.678 +G01 X+18.433 Y-2.245 +G01 X+19.93 Y-2.107 +G01 X+21.426 Y-2.225 +G01 X+22.916 Y-2.597 +G01 X+32.865 Y-7.059 +G01 X+32.941 Y-7.135 +G01 X+37.293 Y-16.851 +G01 X+37.723 Y-18.445 +G01 X+37.86 Y-19.93 +G01 X+37.743 Y-21.415 +G01 X+37.373 Y-22.893 +G01 X+32.888 Y-32.813 +G01 X+32.813 Y-32.888 +G01 X+23.125 Y-37.263 +G01 X+21.544 Y-37.69 +G01 X+20.07 Y-37.827 +G01 X+18.596 Y-37.711 +G01 X+17.129 Y-37.343 +G01 X+7.239 Y-32.835 +G01 X+7.165 Y-32.761 +G01 X+3.382 Y-24.512 +G01 X+2.689 Y-22.877 +G01 X+2.322 Y-21.419 +G01 X+2.206 Y-19.957 +G01 X+2.341 Y-18.495 +G01 X+2.766 Y-16.928 +G01 X+7.218 Y-7.292 +G01 X+7.292 Y-7.218 +G01 X+9.599 Y-6.153 +G01 X+16.922 Y-2.797 +G01 X+18.59 Y-2.355 +G01 X+20.043 Y-2.239 +G01 X+21.494 Y-2.373 +G01 X+23.048 Y-2.795 +G01 X+32.656 Y-7.271 +G01 X+32.729 Y-7.344 +G01 X+33.969 Y-10.008 +G01 X+37.173 Y-16.946 +G01 X+37.612 Y-18.601 +G01 X+37.728 Y-20.043 +G01 X+37.595 Y-21.482 +G01 X+37.175 Y-23.024 +G01 X+32.676 Y-32.604 +G01 X+32.604 Y-32.676 +G01 X+28.264 Y-34.714 +G01 X+23.03 Y-37.143 +G01 X+21.388 Y-37.58 +G01 X+19.958 Y-37.695 +G01 X+18.529 Y-37.563 +G01 X+17 Y-37.145 +G01 X+7.449 Y-32.623 +G01 X+7.377 Y-32.551 +G01 X+4.872 Y-27.264 +G01 X+2.887 Y-23.006 +G01 X+2.452 Y-21.377 +G01 X+2.338 Y-19.958 +G01 X+2.47 Y-18.541 +G01 X+2.884 Y-17.025 +G01 X+7.431 Y-7.501 +G01 X+14.089 Y-4.281 +G01 X+17.019 Y-2.916 +G01 X+18.633 Y-2.485 +G01 X+20.041 Y-2.371 +G01 X+21.447 Y-2.502 +G01 X+22.951 Y-2.914 +G01 X+32.446 Y-7.484 +G01 X+35.512 Y-13.767 +G01 X+37.054 Y-17.043 +G01 X+37.483 Y-18.644 +G01 X+37.596 Y-20.041 +G01 X+37.466 Y-21.436 +G01 X+37.056 Y-22.927 +G01 X+32.463 Y-32.394 +G01 X+23.038 Y-36.985 +G01 X+21.558 Y-37.412 +G01 X+20.067 Y-37.563 +G01 X+18.576 Y-37.434 +G01 X+17.098 Y-37.027 +G01 X+7.659 Y-32.41 +G01 X+3.045 Y-23.013 +G01 X+2.62 Y-21.545 +G01 X+2.47 Y-20.067 +G01 X+2.599 Y-18.588 +G01 X+3.003 Y-17.122 +G01 X+7.643 Y-7.711 +G01 X+17.012 Y-3.074 +G01 X+18.467 Y-2.652 +G01 X+19.933 Y-2.503 +G01 X+21.4 Y-2.631 +G01 X+22.854 Y-3.032 +G01 X+32.236 Y-7.696 +G01 X+36.896 Y-17.037 +G01 X+37.316 Y-18.479 +G01 X+37.464 Y-19.934 +G01 X+37.337 Y-21.389 +G01 X+36.938 Y-22.829 +G01 X+32.251 Y-32.184 +G01 X+24.878 Y-35.923 +G01 X+22.837 Y-36.905 +G01 X+21.405 Y-37.303 +G01 X+19.963 Y-37.431 +G01 X+18.52 Y-37.285 +G01 X+17.093 Y-36.87 +G01 X+7.868 Y-32.198 +G01 X+3.99 Y-24.61 +G01 X+3.125 Y-22.812 +G01 X+2.729 Y-21.394 +G01 X+2.602 Y-19.963 +G01 X+2.747 Y-18.533 +G01 X+3.16 Y-17.118 +G01 X+7.855 Y-7.921 +G01 X+15.565 Y-3.949 +G01 X+17.212 Y-3.155 +G01 X+18.618 Y-2.761 +G01 X+20.036 Y-2.635 +G01 X+21.455 Y-2.779 +G01 X+22.857 Y-3.189 +G01 X+32.027 Y-7.908 +G01 X+35.945 Y-15.454 +G01 X+36.815 Y-17.236 +G01 X+37.206 Y-18.629 +G01 X+37.332 Y-20.036 +G01 X+37.189 Y-21.443 +G01 X+36.782 Y-22.831 +G01 X+32.038 Y-31.974 +G01 X+24.282 Y-36.034 +G01 X+22.74 Y-36.786 +G01 X+21.359 Y-37.174 +G01 X+19.964 Y-37.299 +G01 X+18.57 Y-37.157 +G01 X+17.194 Y-36.752 +G01 X+8.078 Y-31.985 +G01 X+3.997 Y-24.25 +G01 X+3.244 Y-22.716 +G01 X+2.858 Y-21.348 +G01 X+2.734 Y-19.965 +G01 X+2.875 Y-18.582 +G01 X+3.277 Y-17.219 +G01 X+8.068 Y-8.13 +G01 X+15.921 Y-3.955 +G01 X+17.308 Y-3.274 +G01 X+18.664 Y-2.89 +G01 X+20.035 Y-2.767 +G01 X+21.405 Y-2.908 +G01 X+22.756 Y-3.307 +G01 X+31.817 Y-8.121 +G01 X+35.939 Y-15.813 +G01 X+36.696 Y-17.332 +G01 X+37.077 Y-18.675 +G01 X+37.2 Y-20.034 +G01 X+37.06 Y-21.393 +G01 X+36.664 Y-22.731 +G01 X+31.826 Y-31.765 +G01 X+23.926 Y-36.032 +G01 X+22.644 Y-36.667 +G01 X+21.313 Y-37.045 +G01 X+19.966 Y-37.167 +G01 X+18.62 Y-37.028 +G01 X+17.295 Y-36.635 +G01 X+8.288 Y-31.773 +G01 X+3.999 Y-23.895 +G01 X+3.363 Y-22.62 +G01 X+2.987 Y-21.301 +G01 X+2.866 Y-19.967 +G01 X+3.004 Y-18.632 +G01 X+3.395 Y-17.32 +G01 X+8.28 Y-8.34 +G01 X+16.271 Y-3.956 +G01 X+17.405 Y-3.393 +G01 X+18.71 Y-3.02 +G01 X+20.033 Y-2.899 +G01 X+21.355 Y-3.036 +G01 X+22.655 Y-3.424 +G01 X+31.607 Y-8.333 +G01 X+36.504 Y-17.245 +G01 X+36.93 Y-18.628 +G01 X+37.068 Y-19.938 +G01 X+36.95 Y-21.249 +G01 X+36.546 Y-22.629 +G01 X+31.613 Y-31.555 +G01 X+22.729 Y-36.474 +G01 X+21.359 Y-36.897 +G01 X+20.061 Y-37.035 +G01 X+18.763 Y-36.918 +G01 X+17.396 Y-36.517 +G01 X+8.498 Y-31.56 +G01 X+3.555 Y-22.703 +G01 X+3.135 Y-21.347 +G01 X+2.998 Y-20.061 +G01 X+3.114 Y-18.774 +G01 X+3.512 Y-17.421 +G01 X+8.493 Y-8.55 +G01 X+17.323 Y-3.584 +G01 X+18.665 Y-3.167 +G01 X+19.94 Y-3.031 +G01 X+21.214 Y-3.146 +G01 X+22.553 Y-3.542 +G01 X+31.397 Y-8.546 +G01 X+36.386 Y-17.349 +G01 X+36.801 Y-18.678 +G01 X+36.936 Y-19.94 +G01 X+36.821 Y-21.203 +G01 X+36.429 Y-22.528 +G01 X+31.401 Y-31.345 +G01 X+22.626 Y-36.357 +G01 X+21.31 Y-36.769 +G01 X+20.06 Y-36.904 +G01 X+18.809 Y-36.789 +G01 X+17.497 Y-36.4 +G01 X+8.708 Y-31.348 +G01 X+3.672 Y-22.6 +G01 X+3.263 Y-21.297 +G01 X+3.129 Y-20.059 +G01 X+3.243 Y-18.821 +G01 X+3.63 Y-17.522 +G01 X+8.705 Y-8.76 +G01 X+17.426 Y-3.702 +G01 X+18.715 Y-3.296 +G01 X+19.941 Y-3.162 +G01 X+21.168 Y-3.275 +G01 X+22.453 Y-3.659 +G01 X+31.187 Y-8.759 +G01 X+36.269 Y-17.452 +G01 X+36.672 Y-18.728 +G01 X+36.805 Y-19.941 +G01 X+36.692 Y-21.156 +G01 X+36.311 Y-22.427 +G01 X+31.188 Y-31.135 +G01 X+22.522 Y-36.24 +G01 X+21.26 Y-36.64 +G01 X+20.058 Y-36.772 +G01 X+18.856 Y-36.66 +G01 X+17.598 Y-36.282 +G01 X+8.917 Y-31.135 +G01 X+3.86 Y-22.658 +G01 X+3.43 Y-21.417 +G01 X+3.262 Y-20.059 +G01 X+3.372 Y-18.867 +G01 X+3.747 Y-17.623 +G01 X+8.918 Y-8.97 +G01 X+17.279 Y-3.936 +G01 X+18.514 Y-3.483 +G01 X+19.772 Y-3.299 +G01 X+21.12 Y-3.404 +G01 X+22.352 Y-3.777 +G01 X+30.923 Y-8.938 +G01 X+36.082 Y-17.398 +G01 X+36.486 Y-18.53 +G01 X+36.668 Y-19.774 +G01 X+36.563 Y-21.108 +G01 X+36.194 Y-22.326 +G01 X+30.975 Y-30.925 +G01 X+22.574 Y-36.054 +G01 X+21.455 Y-36.454 +G01 X+20.224 Y-36.635 +G01 X+18.903 Y-36.531 +G01 X+17.699 Y-36.164 +G01 X+9.127 Y-30.922 +G01 X+3.975 Y-22.547 +G01 X+3.577 Y-21.44 +G01 X+3.398 Y-20.222 +G01 X+3.501 Y-18.915 +G01 X+3.865 Y-17.724 +G01 X+9.131 Y-9.18 +G01 X+17.393 Y-4.051 +G01 X+18.575 Y-3.61 +G01 X+19.78 Y-3.431 +G01 X+21.074 Y-3.533 +G01 X+22.251 Y-3.894 +G01 X+30.714 Y-9.15 +G01 X+35.967 Y-17.509 +G01 X+36.359 Y-18.591 +G01 X+36.536 Y-19.782 +G01 X+36.435 Y-21.062 +G01 X+36.076 Y-22.226 +G01 X+30.763 Y-30.715 +G01 X+22.463 Y-35.939 +G01 X+21.394 Y-36.327 +G01 X+20.216 Y-36.503 +G01 X+18.95 Y-36.402 +G01 X+17.8 Y-36.047 +G01 X+9.337 Y-30.71 +G01 X+4.09 Y-22.435 +G01 X+3.705 Y-21.379 +G01 X+3.529 Y-20.213 +G01 X+3.615 Y-19.039 +G01 X+3.982 Y-17.825 +G01 X+9.344 Y-9.39 +G01 X+17.507 Y-4.166 +G01 X+18.635 Y-3.737 +G01 X+19.789 Y-3.562 +G01 X+20.95 Y-3.647 +G01 X+22.149 Y-4.012 +G01 X+30.504 Y-9.362 +G01 X+35.852 Y-17.62 +G01 X+36.232 Y-18.651 +G01 X+36.405 Y-19.791 +G01 X+36.32 Y-20.94 +G01 X+35.959 Y-22.124 +G01 X+30.55 Y-30.505 +G01 X+22.352 Y-35.824 +G01 X+21.334 Y-36.2 +G01 X+20.207 Y-36.372 +G01 X+19.071 Y-36.288 +G01 X+17.901 Y-35.929 +G01 X+9.547 Y-30.497 +G01 X+4.205 Y-22.324 +G01 X+3.832 Y-21.319 +G01 X+3.661 Y-20.205 +G01 X+3.744 Y-19.082 +G01 X+4.1 Y-17.926 +G01 X+9.557 Y-9.6 +G01 X+17.621 Y-4.281 +G01 X+18.695 Y-3.864 +G01 X+19.797 Y-3.694 +G01 X+20.907 Y-3.777 +G01 X+22.049 Y-4.129 +G01 X+30.295 Y-9.574 +G01 X+35.737 Y-17.731 +G01 X+36.105 Y-18.711 +G01 X+36.273 Y-19.799 +G01 X+36.191 Y-20.896 +G01 X+35.841 Y-22.023 +G01 X+30.337 Y-30.295 +G01 X+22.241 Y-35.708 +G01 X+21.274 Y-36.073 +G01 X+20.199 Y-36.24 +G01 X+19.114 Y-36.159 +G01 X+18.002 Y-35.812 +G01 X+9.757 Y-30.284 +G01 X+4.32 Y-22.213 +G01 X+3.959 Y-21.259 +G01 X+3.793 Y-20.197 +G01 X+3.874 Y-19.125 +G01 X+4.217 Y-18.027 +G01 X+9.769 Y-9.809 +G01 X+17.735 Y-4.396 +G01 X+18.755 Y-3.991 +G01 X+19.806 Y-3.826 +G01 X+20.864 Y-3.906 +G01 X+21.948 Y-4.247 +G01 X+30.086 Y-9.787 +G01 X+35.622 Y-17.843 +G01 X+35.938 Y-18.636 +G01 X+36.14 Y-19.806 +G01 X+36.062 Y-20.853 +G01 X+35.724 Y-21.923 +G01 X+30.124 Y-30.085 +G01 X+22.129 Y-35.594 +G01 X+21.347 Y-35.907 +G01 X+20.191 Y-36.107 +G01 X+19.157 Y-36.029 +G01 X+18.103 Y-35.695 +G01 X+9.967 Y-30.071 +G01 X+4.435 Y-22.101 +G01 X+4.124 Y-21.33 +G01 X+3.929 Y-20.258 +G01 X+4.003 Y-19.169 +G01 X+4.335 Y-18.128 +G01 X+9.982 Y-10.019 +G01 X+17.85 Y-4.51 +G01 X+18.686 Y-4.156 +G01 X+19.745 Y-3.962 +G01 X+20.82 Y-4.035 +G01 X+21.847 Y-4.364 +G01 X+29.876 Y-9.999 +G01 X+35.507 Y-17.955 +G01 X+35.813 Y-18.704 +G01 X+36.005 Y-19.748 +G01 X+35.932 Y-20.81 +G01 X+35.606 Y-21.822 +G01 X+29.911 Y-29.875 +G01 X+22.017 Y-35.479 +G01 X+21.28 Y-35.781 +G01 X+20.249 Y-35.972 +G01 X+19.201 Y-35.9 +G01 X+18.203 Y-35.577 +G01 X+10.177 Y-29.858 +G01 X+4.55 Y-21.99 +G01 X+4.25 Y-21.263 +G01 X+4.061 Y-20.246 +G01 X+4.132 Y-19.212 +G01 X+4.452 Y-18.228 +G01 X+10.195 Y-10.229 +G01 X+17.966 Y-4.624 +G01 X+18.511 Y-4.366 +G01 X+19.564 Y-4.11 +G01 X+20.649 Y-4.141 +G01 X+21.745 Y-4.482 +G01 X+29.667 Y-10.211 +G01 X+35.393 Y-18.066 +G01 X+35.668 Y-18.711 +G01 X+35.869 Y-19.697 +G01 X+35.815 Y-20.704 +G01 X+35.489 Y-21.721 +G01 X+29.698 Y-29.665 +G01 X+21.906 Y-35.364 +G01 X+21.271 Y-35.636 +G01 X+20.3 Y-35.836 +G01 X+19.306 Y-35.783 +G01 X+18.305 Y-35.46 +G01 X+10.387 Y-29.645 +G01 X+4.665 Y-21.878 +G01 X+4.395 Y-21.253 +G01 X+4.197 Y-20.296 +G01 X+4.25 Y-19.316 +G01 X+4.57 Y-18.33 +G01 X+10.408 Y-10.44 +G01 X+18.081 Y-4.738 +G01 X+18.593 Y-4.489 +G01 X+19.586 Y-4.242 +G01 X+20.613 Y-4.271 +G01 X+21.645 Y-4.599 +G01 X+29.458 Y-10.424 +G01 X+35.278 Y-18.178 +G01 X+35.542 Y-18.782 +G01 X+35.737 Y-19.711 +G01 X+35.685 Y-20.664 +G01 X+35.372 Y-21.62 +G01 X+29.485 Y-29.455 +G01 X+21.794 Y-35.249 +G01 X+21.2 Y-35.511 +G01 X+20.285 Y-35.704 +G01 X+19.346 Y-35.653 +G01 X+18.405 Y-35.342 +G01 X+10.597 Y-29.432 +G01 X+4.779 Y-21.766 +G01 X+4.54 Y-21.237 +G01 X+4.329 Y-20.282 +G01 X+4.379 Y-19.356 +G01 X+4.687 Y-18.43 +G01 X+10.621 Y-10.65 +G01 X+18.195 Y-4.853 +G01 X+18.675 Y-4.612 +G01 X+19.608 Y-4.373 +G01 X+20.576 Y-4.401 +G01 X+21.544 Y-4.716 +G01 X+29.248 Y-10.636 +G01 X+35.163 Y-18.29 +G01 X+35.398 Y-18.8 +G01 X+35.605 Y-19.726 +G01 X+35.556 Y-20.624 +G01 X+35.254 Y-21.52 +G01 X+29.272 Y-29.245 +G01 X+21.682 Y-35.134 +G01 X+21.181 Y-35.367 +G01 X+20.271 Y-35.572 +G01 X+19.386 Y-35.523 +G01 X+18.506 Y-35.225 +G01 X+10.807 Y-29.219 +G01 X+4.894 Y-21.654 +G01 X+4.664 Y-21.163 +G01 X+4.461 Y-20.267 +G01 X+4.509 Y-19.396 +G01 X+4.805 Y-18.531 +G01 X+10.835 Y-10.86 +G01 X+18.309 Y-4.967 +G01 X+18.756 Y-4.736 +G01 X+19.629 Y-4.505 +G01 X+20.54 Y-4.532 +G01 X+21.444 Y-4.834 +G01 X+29.039 Y-10.849 +G01 X+35.049 Y-18.402 +G01 X+35.235 Y-18.778 +G01 X+35.462 Y-19.635 +G01 X+35.436 Y-20.531 +G01 X+35.137 Y-21.418 +G01 X+29.059 Y-29.035 +G01 X+21.57 Y-35.02 +G01 X+21.201 Y-35.204 +G01 X+20.36 Y-35.429 +G01 X+19.478 Y-35.403 +G01 X+18.607 Y-35.107 +G01 X+11.017 Y-29.005 +G01 X+5.009 Y-21.542 +G01 X+4.827 Y-21.181 +G01 X+4.603 Y-20.355 +G01 X+4.629 Y-19.488 +G01 X+4.922 Y-18.632 +G01 X+11.048 Y-11.07 +G01 X+18.424 Y-5.082 +G01 X+18.838 Y-4.859 +G01 X+19.651 Y-4.636 +G01 X+20.503 Y-4.662 +G01 X+21.343 Y-4.951 +G01 X+28.829 Y-11.061 +G01 X+34.934 Y-18.514 +G01 X+35.112 Y-18.86 +G01 X+35.331 Y-19.656 +G01 X+35.306 Y-20.494 +G01 X+35.019 Y-21.318 +G01 X+28.846 Y-28.825 +G01 X+21.457 Y-34.906 +G01 X+21.206 Y-35.042 +G01 X+20.387 Y-35.291 +G01 X+19.563 Y-35.282 +G01 X+18.75 Y-35.012 +G01 X+11.228 Y-28.792 +G01 X+5.123 Y-21.429 +G01 X+4.989 Y-21.184 +G01 X+4.742 Y-20.381 +G01 X+4.751 Y-19.571 +G01 X+5.018 Y-18.774 +G01 X+11.261 Y-11.28 +G01 X+18.54 Y-5.195 +G01 X+18.837 Y-5.021 +G01 X+19.625 Y-4.775 +G01 X+20.42 Y-4.783 +G01 X+21.201 Y-5.047 +G01 X+28.62 Y-11.274 +G01 X+34.82 Y-18.627 +G01 X+34.951 Y-18.861 +G01 X+35.192 Y-19.631 +G01 X+35.184 Y-20.412 +G01 X+34.923 Y-21.177 +G01 X+28.632 Y-28.615 +G01 X+21.345 Y-34.791 +G01 X+21.117 Y-34.92 +G01 X+20.362 Y-35.159 +G01 X+19.596 Y-35.151 +G01 X+18.847 Y-34.893 +G01 X+11.581 Y-28.703 +G01 X+5.237 Y-21.317 +G01 X+5.11 Y-21.095 +G01 X+4.874 Y-20.356 +G01 X+4.881 Y-19.605 +G01 X+5.136 Y-18.871 +G01 X+11.474 Y-11.49 +G01 X+18.655 Y-5.31 +G01 X+18.925 Y-5.142 +G01 X+19.65 Y-4.906 +G01 X+20.387 Y-4.914 +G01 X+21.105 Y-5.166 +G01 X+28.41 Y-11.486 +G01 X+34.706 Y-18.739 +G01 X+34.829 Y-18.949 +G01 X+35.061 Y-19.656 +G01 X+35.054 Y-20.379 +G01 X+34.805 Y-21.081 +G01 X+28.544 Y-28.263 +G01 X+21.231 Y-34.678 +G01 X+21.142 Y-34.733 +G01 X+20.461 Y-35.004 +G01 X+19.714 Y-35.034 +G01 X+18.945 Y-34.775 +G01 X+11.975 Y-28.656 +G01 X+5.35 Y-21.203 +G01 X+5.296 Y-21.116 +G01 X+5.029 Y-20.453 +G01 X+4.999 Y-19.72 +G01 X+5.217 Y-19.039 +G01 X+11.688 Y-11.701 +G01 X+18.816 Y-5.386 +G01 X+19.517 Y-5.071 +G01 X+20.233 Y-5.026 +G01 X+20.938 Y-5.247 +G01 X+28.015 Y-11.532 +G01 X+34.585 Y-18.845 +G01 X+34.886 Y-19.489 +G01 X+34.94 Y-20.226 +G01 X+34.723 Y-20.916 +G01 X+28.5 Y-27.87 +G01 X+21.127 Y-34.557 +G01 X+20.501 Y-34.854 +G01 X+19.78 Y-34.908 +G01 X+19.106 Y-34.693 +G01 X+12.181 Y-28.448 +G01 X+5.472 Y-21.099 +G01 X+5.179 Y-20.49 +G01 X+5.125 Y-19.785 +G01 X+5.337 Y-19.129 +G01 X+11.901 Y-11.911 +G01 X+18.929 Y-5.501 +G01 X+19.555 Y-5.202 +G01 X+20.209 Y-5.158 +G01 X+20.849 Y-5.367 +G01 X+27.631 Y-11.578 +G01 X+34.471 Y-18.957 +G01 X+34.756 Y-19.531 +G01 X+34.809 Y-20.203 +G01 X+34.603 Y-20.827 +G01 X+28.287 Y-27.669 +G01 X+21.015 Y-34.442 +G01 X+20.459 Y-34.723 +G01 X+19.803 Y-34.776 +G01 X+19.195 Y-34.572 +G01 X+12.565 Y-28.407 +G01 X+5.586 Y-20.987 +G01 X+5.31 Y-20.449 +G01 X+5.257 Y-19.809 +G01 X+5.458 Y-19.217 +G01 X+12.118 Y-12.118 +G01 X+18.993 Y-5.658 +G01 X+19.561 Y-5.344 +G01 X+20.152 Y-5.285 +G01 X+20.732 Y-5.472 +G01 X+27.246 Y-11.613 +G01 X+34.358 Y-19.071 +G01 X+34.606 Y-19.513 +G01 X+34.684 Y-20.113 +G01 X+34.498 Y-20.71 +G01 X+28.427 Y-27.101 +G01 X+20.901 Y-34.329 +G01 X+20.475 Y-34.573 +G01 X+19.891 Y-34.651 +G01 X+19.311 Y-34.468 +G01 X+12.949 Y-28.376 +G01 X+5.699 Y-20.873 +G01 X+5.459 Y-20.463 +G01 X+5.382 Y-19.895 +G01 X+5.548 Y-19.358 +G01 X+12.33 Y-12.33 +G01 X+19.11 Y-5.77 +G01 X+19.548 Y-5.494 +G01 X+20.101 Y-5.415 +G01 X+20.622 Y-5.578 +G01 X+26.339 Y-11.124 +G01 X+34.245 Y-19.185 +G01 X+34.455 Y-19.511 +G01 X+34.556 Y-20.039 +G01 X+34.419 Y-20.552 +G01 X+29.632 Y-25.479 +G01 X+20.787 Y-34.217 +G01 X+20.475 Y-34.422 +G01 X+19.964 Y-34.523 +G01 X+19.466 Y-34.387 +G01 X+18.131 Y-33.137 +G01 X+5.809 Y-20.756 +G01 X+5.644 Y-20.53 +G01 X+5.511 Y-20.024 +G01 X+5.643 Y-19.488 +G01 X+12.542 Y-12.542 +G01 X+19.248 Y-5.836 +G01 X+19.543 Y-5.629 +G01 X+20.027 Y-5.527 +G01 X+20.508 Y-5.659 +G01 X+34.164 Y-19.248 +G01 X+34.371 Y-19.543 +G01 X+34.473 Y-20.027 +G01 X+34.341 Y-20.508 +G01 X+20.752 Y-34.164 +G01 X+20.457 Y-34.371 +G01 X+19.973 Y-34.473 +G01 X+19.492 Y-34.341 +G01 X+5.834 Y-20.751 +G01 X+5.656 Y-20.512 +G01 X+5.527 Y-20.036 +G01 X+5.629 Y-19.552 +G01 X+12.542 Y-12.542 +G01 Z+2.05 F10000 +G00 Z+7.05 +(#HSC OFF) +(#TRAFO OFF) +; - EB cercle +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G00 X+41.969 Y+0.331 Z+1.51 +G00 Z-3.49 +G01 X+41.95 Y+0 F10000 +G01 X+41.904 Y-40.391 F12000 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-1.091 Y-41.609 +G01 X-1.624 Y-41.069 +G01 X-1.913 Y-40.359 +G01 X-1.949 Y-40.007 +G01 X-1.904 Y+0.391 +G01 X-1.609 Y+1.091 +G01 X-1.069 Y+1.624 +G01 X-0.359 Y+1.913 +G01 X-0.007 Y+1.949 +G01 X+40.391 Y+1.904 +G01 X+40.51 Y+1.87 +G01 X+40.856 Y+1.742 +G01 X+41.132 Y+1.576 +G01 X+41.362 Y+1.381 +G01 X+41.607 Y+1.086 +G01 X+41.73 Y+0.877 +G01 X+41.852 Y+0.574 +G01 X+41.938 Y+0.011 +G01 X+41.879 Y-40.085 +G01 X+41.808 Y-40.515 +G01 X+41.687 Y-40.829 +G01 X+41.527 Y-41.096 +G01 X+41.345 Y-41.311 +G01 X+40.57 Y-41.782 +G01 X+39.568 Y-41.878 +G01 X+8.827 Y-41.858 +G01 X+0 Y-41.821 +G01 X-0.105 Y-41.817 +G01 X-0.498 Y-41.749 +G01 X-0.802 Y-41.633 +G01 X-1.06 Y-41.478 +G01 X-1.276 Y-41.295 +G01 X-1.501 Y-41.024 +G01 X-1.748 Y-40.482 +G01 X-1.816 Y-39.321 +G01 X-1.839 Y-12.901 +G01 X-1.758 Y+0.079 +G01 X-1.691 Y+0.48 +G01 X-1.578 Y+0.775 +G01 X-1.429 Y+1.024 +G01 X-1.259 Y+1.225 +G01 X-0.536 Y+1.665 +G01 X+0.556 Y+1.756 +G01 X+24.506 Y+1.816 +G01 X+35.09 Y+1.706 +G01 X+40 Y+1.699 +G01 X+40.463 Y+1.632 +G01 X+40.747 Y+1.523 +G01 X+40.988 Y+1.379 +G01 X+41.19 Y+1.209 +G01 X+41.404 Y+0.95 +G01 X+41.512 Y+0.768 +G01 X+41.618 Y+0.504 +G01 X+41.694 Y+0.01 +G01 X+41.737 Y-8.827 +G01 X+41.782 Y-23.889 +G01 X+41.635 Y-38.704 +G01 X+41.631 Y-40.072 +G01 X+41.569 Y-40.445 +G01 X+41.465 Y-40.718 +G01 X+41.326 Y-40.949 +G01 X+41.17 Y-41.135 +G01 X+40.499 Y-41.543 +G01 X+39.444 Y-41.629 +G01 X+32.407 Y-41.667 +G01 X+18.704 Y-41.756 +G01 X+6.111 Y-41.603 +G01 X+0 Y-41.568 +G01 X-0.426 Y-41.506 +G01 X-0.689 Y-41.406 +G01 X-0.911 Y-41.273 +G01 X-1.097 Y-41.116 +G01 X-1.29 Y-40.884 +G01 X-1.503 Y-40.419 +G01 X-1.563 Y-39.198 +G01 X-1.602 Y-32.901 +G01 X-1.723 Y-20.432 +G01 X-1.6 Y-8.58 +G01 X-1.506 Y-2.778 +G01 X-1.5 Y+0.065 +G01 X-1.443 Y+0.408 +G01 X-1.347 Y+0.659 +G01 X-1.22 Y+0.872 +G01 X-1.077 Y+1.042 +G01 X-0.462 Y+1.417 +G01 X+0.556 Y+1.498 +G01 X+6.605 Y+1.533 +G01 X+18.333 Y+1.686 +G01 X+29.321 Y+1.593 +G01 X+35.09 Y+1.444 +G01 X+40 Y+1.436 +G01 X+40.389 Y+1.38 +G01 X+40.63 Y+1.289 +G01 X+40.834 Y+1.167 +G01 X+41.001 Y+1.026 +G01 X+41.272 Y+0.657 +G01 X+41.367 Y+0.428 +G01 X+41.432 Y+0.01 +G01 X+41.468 Y-6.39 +G01 X+41.647 Y-17.469 +G01 X+41.576 Y-27.84 +G01 X+41.376 Y-36.481 +G01 X+41.369 Y-40.059 +G01 X+41.318 Y-40.364 +G01 X+41.116 Y-40.789 +G01 X+40.984 Y-40.949 +G01 X+40.425 Y-41.292 +G01 X+39.444 Y-41.367 +G01 X+33.889 Y-41.399 +G01 X+23.642 Y-41.603 +G01 X+13.765 Y-41.562 +G01 X+3.519 Y-41.311 +G01 X+0 Y-41.305 +G01 X-0.352 Y-41.254 +G01 X-0.571 Y-41.171 +G01 X-0.757 Y-41.061 +G01 X-0.912 Y-40.93 +G01 X-1.072 Y-40.738 +G01 X-1.249 Y-40.354 +G01 X-1.3 Y-38.827 +G01 X-1.338 Y-33.889 +G01 X-1.563 Y-23.889 +G01 X-1.532 Y-14.383 +G01 X-1.257 Y-5.123 +G01 X-1.238 Y+0.052 +G01 X-1.191 Y+0.334 +G01 X-1.113 Y+0.542 +G01 X-1.008 Y+0.718 +G01 X-0.891 Y+0.857 +G01 X-0.388 Y+1.166 +G01 X+0.679 Y+1.235 +G01 X+5.864 Y+1.268 +G01 X+15.247 Y+1.515 +G01 X+24.259 Y+1.514 +G01 X+33.125 Y+1.269 +G01 X+35.09 Y+1.182 +G01 X+40 Y+1.174 +G01 X+40.315 Y+1.128 +G01 X+40.507 Y+1.056 +G01 X+40.809 Y+0.843 +G01 X+41.038 Y+0.539 +G01 X+41.116 Y+0.353 +G01 X+41.17 Y+0.01 +G01 X+41.206 Y-5.864 +G01 X+41.471 Y-14.877 +G01 X+41.484 Y-23.642 +G01 X+41.253 Y-32.168 +G01 X+41.115 Y-35.988 +G01 X+41.107 Y-40.045 +G01 X+41.067 Y-40.291 +G01 X+40.904 Y-40.634 +G01 X+40.799 Y-40.764 +G01 X+40.351 Y-41.04 +G01 X+39.198 Y-41.105 +G01 X+34.383 Y-41.133 +G01 X+25.864 Y-41.419 +G01 X+17.469 Y-41.46 +G01 X+9.074 Y-41.251 +G01 X+4.136 Y-41.049 +G01 X+0 Y-41.043 +G01 X-0.272 Y-41.004 +G01 X-0.589 Y-40.854 +G01 X-0.848 Y-40.596 +G01 X-0.995 Y-40.29 +G01 X-1.035 Y-36.975 +G01 X-1.082 Y-34.136 +G01 X-1.378 Y-25.864 +G01 X-1.427 Y-17.84 +G01 X-1.235 Y-9.938 +G01 X-0.983 Y-4.136 +G01 X-0.976 Y+0.038 +G01 X-0.941 Y+0.254 +G01 X-0.798 Y+0.557 +G01 X-0.706 Y+0.671 +G01 X-0.314 Y+0.914 +G01 X+1.049 Y+0.973 +G01 X+5.617 Y+1.007 +G01 X+13.634 Y+1.326 +G01 X+21.667 Y+1.395 +G01 X+29.321 Y+1.216 +G01 X+35.09 Y+0.919 +G01 X+40 Y+0.911 +G01 X+40.235 Y+0.878 +G01 X+40.519 Y+0.745 +G01 X+40.63 Y+0.656 +G01 X+40.803 Y+0.422 +G01 X+40.862 Y+0.286 +G01 X+40.908 Y-0.926 +G01 X+40.945 Y-5.617 +G01 X+41.28 Y-13.42 +G01 X+41.363 Y-20.955 +G01 X+41.203 Y-28.476 +G01 X+40.852 Y-35.741 +G01 X+40.844 Y-40.031 +G01 X+40.815 Y-40.217 +G01 X+40.692 Y-40.48 +G01 X+40.613 Y-40.579 +G01 X+40.277 Y-40.788 +G01 X+38.21 Y-40.841 +G01 X+34.383 Y-40.882 +G01 X+26.728 Y-41.234 +G01 X+19.246 Y-41.329 +G01 X+12.037 Y-41.178 +G01 X+4.91 Y-40.788 +G01 X+0.011 Y-40.78 +G01 X-0.196 Y-40.752 +G01 X-0.435 Y-40.642 +G01 X-0.63 Y-40.451 +G01 X-0.741 Y-40.224 +G01 X-0.819 Y-34.383 +G01 X-1.183 Y-27.022 +G01 X-1.295 Y-19.815 +G01 X-1.157 Y-12.654 +G01 X-0.775 Y-5.617 +G01 X-0.721 Y-3.889 +G01 X-0.686 Y+0.161 +G01 X-0.524 Y+0.472 +G01 X-0.24 Y+0.662 +G01 X+5.617 Y+0.756 +G01 X+12.751 Y+1.133 +G01 X+19.673 Y+1.259 +G01 X+26.58 Y+1.142 +G01 X+33.395 Y+0.784 +G01 X+35.09 Y+0.657 +G01 X+39.983 Y+0.649 +G01 X+40.261 Y+0.587 +G01 X+40.434 Y+0.477 +G01 X+40.6 Y+0.221 +G01 X+40.676 Y-5.37 +G01 X+41.079 Y-12.42 +G01 X+41.224 Y-19.246 +G01 X+41.119 Y-26.139 +G01 X+40.765 Y-32.901 +G01 X+40.595 Y-35.617 +G01 X+40.565 Y-40.125 +G01 X+40.435 Y-40.383 +G01 X+40.204 Y-40.542 +G01 X+34.63 Y-40.617 +G01 X+27.84 Y-41.029 +G01 X+21.181 Y-41.189 +G01 X+14.63 Y-41.107 +G01 X+8.086 Y-40.782 +G01 X+4.383 Y-40.534 +G01 X+0.024 Y-40.528 +G01 X-0.274 Y-40.438 +G01 X-0.42 Y-40.311 +G01 X-0.497 Y-40.161 +G01 X-0.558 Y-34.63 +G01 X-0.988 Y-27.84 +G01 X-1.155 Y-21.296 +G01 X-1.078 Y-14.877 +G01 X-0.749 Y-8.333 +G01 X-0.473 Y-4.383 +G01 X-0.448 Y+0.091 +G01 X-0.349 Y+0.297 +G01 X-0.169 Y+0.425 +G01 X+5.37 Y+0.499 +G01 X+11.79 Y+0.93 +G01 X+18.333 Y+1.119 +G01 X+24.753 Y+1.053 +G01 X+31.173 Y+0.734 +G01 X+35.09 Y+0.413 +G01 X+39.97 Y+0.405 +G01 X+40.24 Y+0.305 +G01 X+40.367 Y+0.151 +G01 X+40.439 Y-5.37 +G01 X+40.887 Y-11.79 +G01 X+41.081 Y-18.086 +G01 X+41.03 Y-24.259 +G01 X+40.726 Y-30.556 +G01 X+40.347 Y-35.494 +G01 X+40.304 Y-40.104 +G01 X+40.258 Y-40.215 +G01 X+40.132 Y-40.304 +G01 X+34.63 Y-40.375 +G01 X+28.21 Y-40.843 +G01 X+21.924 Y-41.045 +G01 X+15.741 Y-40.992 +G01 X+9.703 Y-40.694 +G01 X+4.506 Y-40.281 +G01 X+0.038 Y-40.274 +G01 X-0.182 Y-40.176 +G01 X-0.252 Y-40.097 +G01 X-0.311 Y-34.63 +G01 X-0.783 Y-28.476 +G01 X-1.002 Y-22.407 +G01 X-0.971 Y-16.358 +G01 X-0.695 Y-10.432 +G01 X-0.216 Y-4.506 +G01 X-0.169 Y+0.05 +G01 X-0.096 Y+0.178 +G01 X+5.37 Y+0.247 +G01 X+11.524 Y+0.738 +G01 X+17.469 Y+0.964 +G01 X+23.395 Y+0.94 +G01 X+29.321 Y+0.664 +G01 X+35.083 Y+0.151 +G01 X+39.876 Y+0.144 +G01 X+39.982 Y+0.101 +G01 X+40.101 Y-0.018 +G01 X+40.145 Y-0.123 +G01 X+40.187 Y-5.37 +G01 X+40.676 Y-11.186 +G01 X+40.922 Y-16.975 +G01 X+40.923 Y-22.781 +G01 X+40.682 Y-28.476 +G01 X+40.177 Y-34.383 +G01 X+40.098 Y-35.617 +G01 X+40.093 Y-39.876 +G01 X+40.049 Y-39.982 +G01 X+39.877 Y-40.093 +G01 X+34.63 Y-40.137 +G01 X+28.704 Y-40.648 +G01 X+22.781 Y-40.898 +G01 X+16.975 Y-40.888 +G01 X+11.296 Y-40.632 +G01 X+5.617 Y-40.128 +G01 X+4.383 Y-40.047 +G01 X+0.124 Y-40.041 +G01 X+0.018 Y-39.997 +G01 X-0.042 Y-39.877 +G01 X-0.087 Y-34.63 +G01 X-0.595 Y-28.951 +G01 X-0.856 Y-23.324 +G01 X-0.876 Y-17.761 +G01 X-0.652 Y-12.16 +G01 X-0.187 Y-6.605 +G01 X+0.004 Y-4.513 +G01 X+0.01 Y-0.159 +G01 X+0.159 Y-0.009 +G01 X+5.37 Y+0.037 +G01 X+11.049 Y+0.559 +G01 X+16.605 Y+0.826 +G01 X+22.16 Y+0.849 +G01 X+27.84 Y+0.618 +G01 X+33.395 Y+0.14 +G01 X+35.081 Y-0.055 +G01 X+39.753 Y-0.063 +G01 X+39.859 Y-0.106 +G01 X+39.938 Y-0.247 +G01 X+39.985 Y-5.37 +G01 X+40.514 Y-10.96 +G01 X+40.794 Y-16.605 +G01 X+40.817 Y-22.16 +G01 X+40.594 Y-27.593 +G01 X+40.113 Y-33.148 +G01 X+39.884 Y-35.487 +G01 X+39.877 Y-39.728 +G01 X+39.728 Y-39.877 +G01 X+34.636 Y-39.926 +G01 X+29.198 Y-40.459 +G01 X+23.642 Y-40.752 +G01 X+18.086 Y-40.788 +G01 X+12.654 Y-40.57 +G01 X+7.355 Y-40.115 +G01 X+4.514 Y-39.823 +G01 X+0.371 Y-39.816 +G01 X+0.265 Y-39.772 +G01 X+0.184 Y-39.63 +G01 X+0.134 Y-34.636 +G01 X-0.415 Y-29.198 +G01 X-0.71 Y-23.889 +G01 X-0.762 Y-18.618 +G01 X-0.564 Y-13.194 +G01 X-0.115 Y-7.84 +G01 X+0.238 Y-4.638 +G01 X+0.245 Y-0.395 +G01 X+0.395 Y-0.245 +G01 X+5.116 Y-0.224 +G01 X+10.556 Y+0.352 +G01 X+15.813 Y+0.664 +G01 X+21.049 Y+0.732 +G01 X+26.235 Y+0.559 +G01 X+31.42 Y+0.143 +G01 X+35.081 Y-0.298 +G01 X+39.506 Y-0.306 +G01 X+39.612 Y-0.35 +G01 X+39.694 Y-0.494 +G01 X+39.716 Y-5.116 +G01 X+40.298 Y-10.432 +G01 X+40.626 Y-15.741 +G01 X+40.7 Y-20.955 +G01 X+40.527 Y-26.139 +G01 X+40.107 Y-31.296 +G01 X+39.64 Y-35.362 +G01 X+39.633 Y-39.484 +G01 X+39.484 Y-39.633 +G01 X+34.885 Y-39.656 +G01 X+29.725 Y-40.239 +G01 X+24.507 Y-40.581 +G01 X+19.246 Y-40.669 +G01 X+14.012 Y-40.498 +G01 X+8.827 Y-40.072 +G01 X+4.638 Y-39.58 +G01 X+0.618 Y-39.572 +G01 X+0.512 Y-39.528 +G01 X+0.428 Y-39.382 +G01 X+0.435 Y-35.099 +G01 X-0.173 Y-29.951 +G01 X-0.535 Y-24.753 +G01 X-0.638 Y-19.568 +G01 X-0.482 Y-14.383 +G01 X-0.08 Y-9.353 +G01 X+0.481 Y-4.638 +G01 X+0.489 Y-0.639 +G01 X+0.639 Y-0.489 +G01 X+4.901 Y-0.496 +G01 X+9.938 Y+0.118 +G01 X+15 Y+0.487 +G01 X+20.185 Y+0.605 +G01 X+25.123 Y+0.472 +G01 X+30.062 Y+0.094 +G01 X+35.081 Y-0.542 +G01 X+39.301 Y-0.555 +G01 X+39.45 Y-0.705 +G01 X+39.444 Y-4.901 +G01 X+40.072 Y-9.938 +G01 X+40.445 Y-14.877 +G01 X+40.573 Y-19.815 +G01 X+40.454 Y-24.753 +G01 X+40.083 Y-29.725 +G01 X+39.467 Y-34.63 +G01 X+39.396 Y-35.494 +G01 X+39.39 Y-39.24 +G01 X+39.24 Y-39.39 +G01 X+35.1 Y-39.383 +G01 X+30.062 Y-40.027 +G01 X+25.123 Y-40.409 +G01 X+20.1 Y-40.54 +G01 X+15.247 Y-40.418 +G01 X+10.432 Y-40.054 +G01 X+5.617 Y-39.446 +G01 X+4.638 Y-39.336 +G01 X+0.821 Y-39.322 +G01 X+0.671 Y-39.171 +G01 X+0.678 Y-35.1 +G01 X+0.019 Y-30.062 +G01 X-0.372 Y-25.123 +G01 X-0.506 Y-20.327 +G01 X-0.395 Y-15.494 +G01 X-0.035 Y-10.679 +G01 X+0.575 Y-5.864 +G01 X+0.725 Y-4.639 +G01 X+0.732 Y-0.882 +G01 X+0.882 Y-0.732 +G01 X+4.9 Y-0.739 +G01 X+9.691 Y-0.091 +G01 X+14.623 Y+0.321 +G01 X+19.568 Y+0.473 +G01 X+24.506 Y+0.359 +G01 X+29.321 Y-0.009 +G01 X+34.136 Y-0.632 +G01 X+35.078 Y-0.785 +G01 X+39.058 Y-0.802 +G01 X+39.207 Y-0.952 +G01 X+39.201 Y-4.9 +G01 X+39.864 Y-9.703 +G01 X+40.285 Y-14.63 +G01 X+40.439 Y-19.473 +G01 X+40.339 Y-24.187 +G01 X+39.986 Y-28.951 +G01 X+39.388 Y-33.642 +G01 X+39.153 Y-35.36 +G01 X+39.147 Y-38.996 +G01 X+38.996 Y-39.146 +G01 X+35.101 Y-39.14 +G01 X+30.309 Y-39.817 +G01 X+25.617 Y-40.234 +G01 X+20.955 Y-40.403 +G01 X+16.358 Y-40.329 +G01 X+11.543 Y-39.992 +G01 X+6.875 Y-39.411 +G01 X+4.64 Y-39.093 +G01 X+1.064 Y-39.075 +G01 X+0.915 Y-38.925 +G01 X+0.921 Y-35.101 +G01 X+0.229 Y-30.309 +G01 X-0.197 Y-25.617 +G01 X-0.369 Y-20.955 +G01 X-0.294 Y-16.358 +G01 X+0.025 Y-11.79 +G01 X+0.608 Y-7.099 +G01 X+0.968 Y-4.64 +G01 X+0.975 Y-1.125 +G01 X+1.126 Y-0.976 +G01 X+4.899 Y-0.982 +G01 X+9.691 Y-0.275 +G01 X+14.383 Y+0.16 +G01 X+19.045 Y+0.336 +G01 X+23.642 Y+0.259 +G01 X+28.21 Y-0.067 +G01 X+32.901 Y-0.661 +G01 X+35.078 Y-1.028 +G01 X+38.814 Y-1.049 +G01 X+38.964 Y-1.199 +G01 X+38.958 Y-4.899 +G01 X+39.649 Y-9.444 +G01 X+40.098 Y-14.012 +G01 X+40.297 Y-18.618 +G01 X+40.24 Y-23.272 +G01 X+39.929 Y-27.84 +G01 X+39.362 Y-32.407 +G01 X+38.91 Y-35.359 +G01 X+38.903 Y-38.753 +G01 X+38.753 Y-38.903 +G01 X+35.102 Y-38.897 +G01 X+30.556 Y-39.602 +G01 X+25.864 Y-40.069 +G01 X+21.296 Y-40.266 +G01 X+16.605 Y-40.201 +G01 X+12.16 Y-39.888 +G01 X+7.593 Y-39.31 +G01 X+4.641 Y-38.849 +G01 X+1.307 Y-38.828 +G01 X+1.158 Y-38.678 +G01 X+1.164 Y-35.102 +G01 X+0.445 Y-30.556 +G01 X-0.011 Y-26.139 +G01 X-0.226 Y-21.667 +G01 X-0.19 Y-17.222 +G01 X+0.105 Y-12.654 +G01 X+0.665 Y-8.086 +G01 X+1.212 Y-4.641 +G01 X+1.219 Y-1.369 +G01 X+1.369 Y-1.219 +G01 X+4.898 Y-1.225 +G01 X+9.444 Y-0.491 +G01 X+13.861 Y-0.027 +G01 X+18.333 Y+0.192 +G01 X+22.778 Y+0.156 +G01 X+27.099 Y-0.122 +G01 X+31.667 Y-0.678 +G01 X+35.078 Y-1.272 +G01 X+38.571 Y-1.295 +G01 X+38.72 Y-1.446 +G01 X+38.715 Y-4.898 +G01 X+39.449 Y-9.353 +G01 X+39.928 Y-13.765 +G01 X+40.153 Y-18.086 +G01 X+40.135 Y-22.407 +G01 X+39.873 Y-26.728 +G01 X+39.365 Y-31.049 +G01 X+38.667 Y-35.359 +G01 X+38.66 Y-38.51 +G01 X+38.51 Y-38.66 +G01 X+35.103 Y-38.654 +G01 X+30.556 Y-39.416 +G01 X+26.139 Y-39.898 +G01 X+21.667 Y-40.125 +G01 X+17.222 Y-40.088 +G01 X+12.901 Y-39.8 +G01 X+8.58 Y-39.261 +G01 X+4.641 Y-38.606 +G01 X+1.55 Y-38.581 +G01 X+1.401 Y-38.431 +G01 X+1.407 Y-35.103 +G01 X+0.667 Y-30.802 +G01 X+0.168 Y-26.481 +G01 X-0.08 Y-22.16 +G01 X-0.076 Y-17.84 +G01 X+0.182 Y-13.519 +G01 X+0.713 Y-9.074 +G01 X+1.455 Y-4.642 +G01 X+1.462 Y-1.612 +G01 X+1.612 Y-1.462 +G01 X+4.897 Y-1.468 +G01 X+9.198 Y-0.714 +G01 X+13.519 Y-0.207 +G01 X+17.84 Y+0.046 +G01 X+22.16 Y+0.042 +G01 X+26.481 Y-0.22 +G01 X+30.647 Y-0.718 +G01 X+34.877 Y-1.472 +G01 X+35.075 Y-1.514 +G01 X+38.328 Y-1.542 +G01 X+38.477 Y-1.692 +G01 X+38.472 Y-4.897 +G01 X+39.262 Y-9.353 +G01 X+39.777 Y-13.765 +G01 X+40.019 Y-18.086 +G01 X+40 Y-22.407 +G01 X+39.719 Y-26.728 +G01 X+39.173 Y-31.049 +G01 X+38.423 Y-35.358 +G01 X+38.416 Y-38.267 +G01 X+38.266 Y-38.416 +G01 X+35.104 Y-38.411 +G01 X+30.802 Y-39.192 +G01 X+26.481 Y-39.717 +G01 X+22.16 Y-39.979 +G01 X+17.84 Y-39.975 +G01 X+13.519 Y-39.704 +G01 X+9.353 Y-39.188 +G01 X+5.123 Y-38.407 +G01 X+4.925 Y-38.364 +G01 X+1.794 Y-38.335 +G01 X+1.645 Y-38.184 +G01 X+1.65 Y-35.104 +G01 X+0.856 Y-30.802 +G01 X+0.321 Y-26.481 +G01 X+0.055 Y-22.16 +G01 X+0.059 Y-17.84 +G01 X+0.312 Y-13.765 +G01 X+0.806 Y-9.703 +G01 X+1.546 Y-5.617 +G01 X+1.697 Y-4.926 +G01 X+1.705 Y-1.855 +G01 X+1.856 Y-1.706 +G01 X+4.896 Y-1.711 +G01 X+9.198 Y-0.903 +G01 X+13.272 Y-0.383 +G01 X+17.469 Y-0.101 +G01 X+21.667 Y-0.078 +G01 X+25.701 Y-0.302 +G01 X+29.815 Y-0.779 +G01 X+33.889 Y-1.5 +G01 X+35.075 Y-1.758 +G01 X+38.085 Y-1.789 +G01 X+38.234 Y-1.939 +G01 X+38.229 Y-4.896 +G01 X+39.03 Y-9.074 +G01 X+39.57 Y-13.194 +G01 X+39.855 Y-17.222 +G01 X+39.897 Y-21.296 +G01 X+39.688 Y-25.377 +G01 X+39.23 Y-29.444 +G01 X+38.494 Y-33.642 +G01 X+38.181 Y-35.074 +G01 X+38.173 Y-38.023 +G01 X+38.023 Y-38.173 +G01 X+35.105 Y-38.168 +G01 X+30.802 Y-39.003 +G01 X+26.728 Y-39.54 +G01 X+22.531 Y-39.831 +G01 X+18.333 Y-39.855 +G01 X+14.299 Y-39.624 +G01 X+10.185 Y-39.131 +G01 X+6.111 Y-38.386 +G01 X+4.926 Y-38.12 +G01 X+2.037 Y-38.088 +G01 X+1.888 Y-37.938 +G01 X+1.893 Y-35.105 +G01 X+1.086 Y-31.049 +G01 X+0.53 Y-27.022 +G01 X+0.224 Y-23.025 +G01 X+0.165 Y-18.951 +G01 X+0.364 Y-14.877 +G01 X+0.84 Y-10.679 +G01 X+1.565 Y-6.605 +G01 X+1.94 Y-4.926 +G01 X+1.949 Y-2.099 +G01 X+1.993 Y-1.993 +G01 X+2.099 Y-1.949 +G01 X+4.895 Y-1.954 +G01 X+8.951 Y-1.134 +G01 X+12.978 Y-0.569 +G01 X+16.975 Y-0.258 +G01 X+21.049 Y-0.199 +G01 X+25.123 Y-0.4 +G01 X+29.04 Y-0.842 +G01 X+33.125 Y-1.563 +G01 X+35.075 Y-2.001 +G01 X+37.842 Y-2.035 +G01 X+37.991 Y-2.186 +G01 X+37.987 Y-4.895 +G01 X+38.841 Y-9.074 +G01 X+39.417 Y-13.194 +G01 X+39.72 Y-17.222 +G01 X+39.767 Y-21.181 +G01 X+39.566 Y-25.123 +G01 X+39.095 Y-29.198 +G01 X+38.382 Y-33.148 +G01 X+37.943 Y-35.074 +G01 X+37.935 Y-37.778 +G01 X+37.891 Y-37.883 +G01 X+37.777 Y-37.935 +G01 X+35.106 Y-37.931 +G01 X+31.049 Y-38.775 +G01 X+27.022 Y-39.357 +G01 X+23.025 Y-39.678 +G01 X+18.951 Y-39.739 +G01 X+14.877 Y-39.532 +G01 X+10.96 Y-39.078 +G01 X+7.099 Y-38.385 +G01 X+4.927 Y-37.886 +G01 X+2.271 Y-37.879 +G01 X+2.122 Y-37.729 +G01 X+2.126 Y-35.106 +G01 X+1.269 Y-31.049 +G01 X+0.679 Y-27.022 +G01 X+0.354 Y-23.025 +G01 X+0.292 Y-18.951 +G01 X+0.502 Y-14.877 +G01 X+0.962 Y-10.96 +G01 X+1.665 Y-7.099 +G01 X+2.17 Y-4.927 +G01 X+2.178 Y-2.346 +G01 X+2.222 Y-2.24 +G01 X+2.346 Y-2.178 +G01 X+4.894 Y-2.182 +G01 X+8.951 Y-1.313 +G01 X+12.978 Y-0.715 +G01 X+16.975 Y-0.385 +G01 X+21.049 Y-0.322 +G01 X+24.828 Y-0.511 +G01 X+28.704 Y-0.951 +G01 X+32.645 Y-1.659 +G01 X+35.073 Y-2.226 +G01 X+37.617 Y-2.233 +G01 X+37.767 Y-2.383 +G01 X+37.763 Y-4.894 +G01 X+38.62 Y-8.827 +G01 X+39.212 Y-12.654 +G01 X+39.565 Y-16.605 +G01 X+39.657 Y-20.432 +G01 X+39.503 Y-24.259 +G01 X+39.1 Y-28.086 +G01 X+38.449 Y-31.914 +G01 X+37.722 Y-35.073 +G01 X+37.715 Y-37.531 +G01 X+37.671 Y-37.636 +G01 X+37.53 Y-37.715 +G01 X+35.106 Y-37.712 +G01 X+31.049 Y-38.603 +G01 X+27.249 Y-39.189 +G01 X+23.395 Y-39.535 +G01 X+19.568 Y-39.629 +G01 X+15.741 Y-39.473 +G01 X+11.79 Y-39.048 +G01 X+7.84 Y-38.355 +G01 X+4.927 Y-37.671 +G01 X+2.486 Y-37.664 +G01 X+2.336 Y-37.514 +G01 X+2.34 Y-35.107 +G01 X+1.438 Y-31.049 +G01 X+0.844 Y-27.249 +G01 X+0.494 Y-23.395 +G01 X+0.399 Y-19.568 +G01 X+0.557 Y-15.741 +G01 X+0.987 Y-11.79 +G01 X+1.688 Y-7.84 +G01 X+2.381 Y-4.926 +G01 X+2.406 Y-2.537 +G01 X+2.556 Y-2.388 +G01 X+4.893 Y-2.391 +G01 X+8.704 Y-1.526 +G01 X+12.654 Y-0.889 +G01 X+16.605 Y-0.523 +G01 X+20.432 Y-0.427 +G01 X+24.259 Y-0.587 +G01 X+28.21 Y-1.022 +G01 X+32.16 Y-1.732 +G01 X+35.073 Y-2.432 +G01 X+37.407 Y-2.439 +G01 X+37.513 Y-2.483 +G01 X+37.561 Y-2.593 +G01 X+37.557 Y-4.893 +G01 X+38.457 Y-8.827 +G01 X+39.077 Y-12.654 +G01 X+39.432 Y-16.358 +G01 X+39.546 Y-20.1 +G01 X+39.41 Y-23.889 +G01 X+39.03 Y-27.593 +G01 X+38.406 Y-31.296 +G01 X+37.516 Y-35.073 +G01 X+37.509 Y-37.359 +G01 X+37.359 Y-37.509 +G01 X+35.107 Y-37.506 +G01 X+31.296 Y-38.392 +G01 X+27.346 Y-39.044 +G01 X+23.642 Y-39.403 +G01 X+19.815 Y-39.518 +G01 X+16.111 Y-39.38 +G01 X+12.42 Y-38.997 +G01 X+8.58 Y-38.34 +G01 X+4.927 Y-37.465 +G01 X+2.716 Y-37.458 +G01 X+2.61 Y-37.414 +G01 X+2.542 Y-37.283 +G01 X+2.546 Y-35.108 +G01 X+1.65 Y-31.296 +G01 X+1.023 Y-27.593 +G01 X+0.643 Y-23.889 +G01 X+0.51 Y-20.1 +G01 X+0.633 Y-16.358 +G01 X+1.004 Y-12.654 +G01 X+1.651 Y-8.827 +G01 X+2.532 Y-5.123 +G01 X+2.585 Y-4.93 +G01 X+2.594 Y-2.744 +G01 X+2.744 Y-2.594 +G01 X+4.892 Y-2.597 +G01 X+8.704 Y-1.691 +G01 X+12.407 Y-1.057 +G01 X+16.111 Y-0.672 +G01 X+19.9 Y-0.538 +G01 X+23.642 Y-0.662 +G01 X+27.346 Y-1.038 +G01 X+31.173 Y-1.692 +G01 X+34.877 Y-2.583 +G01 X+35.071 Y-2.637 +G01 X+37.205 Y-2.654 +G01 X+37.354 Y-2.804 +G01 X+37.351 Y-4.892 +G01 X+38.292 Y-8.827 +G01 X+38.941 Y-12.654 +G01 X+39.312 Y-16.358 +G01 X+39.431 Y-20.1 +G01 X+39.288 Y-23.889 +G01 X+38.889 Y-27.593 +G01 X+38.235 Y-31.296 +G01 X+37.301 Y-35.072 +G01 X+37.294 Y-37.144 +G01 X+37.143 Y-37.293 +G01 X+35.108 Y-37.29 +G01 X+31.296 Y-38.218 +G01 X+27.593 Y-38.867 +G01 X+23.889 Y-39.261 +G01 X+20.1 Y-39.398 +G01 X+16.358 Y-39.27 +G01 X+12.654 Y-38.884 +G01 X+8.827 Y-38.212 +G01 X+5.123 Y-37.297 +G01 X+4.93 Y-37.242 +G01 X+2.917 Y-37.223 +G01 X+2.768 Y-37.073 +G01 X+2.771 Y-35.108 +G01 X+1.831 Y-31.296 +G01 X+1.174 Y-27.593 +G01 X+0.774 Y-23.889 +G01 X+0.636 Y-20.327 +G01 X+0.747 Y-16.605 +G01 X+1.121 Y-12.901 +G01 X+1.784 Y-9.074 +G01 X+2.693 Y-5.37 +G01 X+2.819 Y-4.93 +G01 X+2.828 Y-2.978 +G01 X+2.979 Y-2.829 +G01 X+4.891 Y-2.832 +G01 X+8.704 Y-1.88 +G01 X+12.407 Y-1.214 +G01 X+16.111 Y-0.809 +G01 X+19.673 Y-0.669 +G01 X+23.395 Y-0.782 +G01 X+27.099 Y-1.161 +G01 X+30.647 Y-1.773 +G01 X+34.383 Y-2.682 +G01 X+35.07 Y-2.88 +G01 X+36.962 Y-2.9 +G01 X+37.111 Y-3.05 +G01 X+37.108 Y-4.891 +G01 X+38.046 Y-8.58 +G01 X+38.71 Y-12.16 +G01 X+39.127 Y-15.741 +G01 X+39.294 Y-19.246 +G01 X+39.221 Y-22.781 +G01 X+38.897 Y-26.366 +G01 X+38.321 Y-29.951 +G01 X+37.464 Y-33.642 +G01 X+37.059 Y-35.07 +G01 X+37.05 Y-36.9 +G01 X+36.9 Y-37.05 +G01 X+35.109 Y-37.047 +G01 X+31.296 Y-38.024 +G01 X+27.593 Y-38.706 +G01 X+23.889 Y-39.121 +G01 X+20.327 Y-39.265 +G01 X+16.605 Y-39.149 +G01 X+12.901 Y-38.761 +G01 X+9.353 Y-38.133 +G01 X+5.617 Y-37.201 +G01 X+4.93 Y-36.998 +G01 X+3.16 Y-36.977 +G01 X+3.011 Y-36.826 +G01 X+3.014 Y-35.109 +G01 X+2.025 Y-31.296 +G01 X+1.334 Y-27.593 +G01 X+0.914 Y-23.889 +G01 X+0.768 Y-20.327 +G01 X+0.885 Y-16.605 +G01 X+1.279 Y-12.901 +G01 X+1.914 Y-9.353 +G01 X+2.787 Y-5.864 +G01 X+3.062 Y-4.931 +G01 X+3.072 Y-3.222 +G01 X+3.222 Y-3.072 +G01 X+4.89 Y-3.075 +G01 X+8.418 Y-2.139 +G01 X+12.16 Y-1.412 +G01 X+15.741 Y-0.979 +G01 X+19.321 Y-0.804 +G01 X+22.778 Y-0.881 +G01 X+26.235 Y-1.2 +G01 X+29.815 Y-1.787 +G01 X+33.395 Y-2.635 +G01 X+35.07 Y-3.124 +G01 X+36.719 Y-3.147 +G01 X+36.868 Y-3.297 +G01 X+36.865 Y-4.89 +G01 X+37.85 Y-8.58 +G01 X+38.548 Y-12.16 +G01 X+38.986 Y-15.741 +G01 X+39.161 Y-19.246 +G01 X+39.085 Y-22.781 +G01 X+38.745 Y-26.366 +G01 X+38.14 Y-29.951 +G01 X+37.24 Y-33.642 +G01 X+36.816 Y-35.069 +G01 X+36.807 Y-36.657 +G01 X+36.657 Y-36.807 +G01 X+35.11 Y-36.804 +G01 X+31.582 Y-37.762 +G01 X+28.086 Y-38.467 +G01 X+24.507 Y-38.928 +G01 X+20.955 Y-39.125 +G01 X+17.469 Y-39.065 +G01 X+14.012 Y-38.756 +G01 X+10.432 Y-38.174 +G01 X+6.875 Y-37.329 +G01 X+4.93 Y-36.755 +G01 X+3.402 Y-36.73 +G01 X+3.254 Y-36.58 +G01 X+3.257 Y-35.11 +G01 X+2.287 Y-31.582 +G01 X+1.574 Y-28.086 +G01 X+1.108 Y-24.507 +G01 X+0.908 Y-20.955 +G01 X+0.969 Y-17.469 +G01 X+1.281 Y-14.012 +G01 X+1.871 Y-10.432 +G01 X+2.725 Y-6.875 +G01 X+3.306 Y-4.931 +G01 X+3.315 Y-3.465 +G01 X+3.465 Y-3.315 +G01 X+4.889 Y-3.318 +G01 X+8.418 Y-2.337 +G01 X+11.914 Y-1.616 +G01 X+15.493 Y-1.143 +G01 X+19.045 Y-0.942 +G01 X+22.531 Y-1.003 +G01 X+25.988 Y-1.319 +G01 X+29.568 Y-1.915 +G01 X+33.125 Y-2.779 +G01 X+35.07 Y-3.367 +G01 X+36.476 Y-3.393 +G01 X+36.624 Y-3.543 +G01 X+36.622 Y-4.889 +G01 X+37.593 Y-8.333 +G01 X+38.323 Y-11.79 +G01 X+38.79 Y-15.172 +G01 X+39.015 Y-18.618 +G01 X+38.982 Y-22.16 +G01 X+38.69 Y-25.617 +G01 X+38.116 Y-29.198 +G01 X+37.298 Y-32.654 +G01 X+36.572 Y-35.069 +G01 X+36.564 Y-36.414 +G01 X+36.414 Y-36.564 +G01 X+35.111 Y-36.561 +G01 X+31.582 Y-37.565 +G01 X+28.086 Y-38.303 +G01 X+24.507 Y-38.786 +G01 X+20.955 Y-38.992 +G01 X+17.469 Y-38.93 +G01 X+14.012 Y-38.606 +G01 X+10.432 Y-37.997 +G01 X+6.875 Y-37.112 +G01 X+4.93 Y-36.511 +G01 X+3.645 Y-36.484 +G01 X+3.498 Y-36.334 +G01 X+3.5 Y-35.111 +G01 X+2.485 Y-31.582 +G01 X+1.76 Y-28.21 +G01 X+1.274 Y-24.753 +G01 X+1.049 Y-21.296 +G01 X+1.085 Y-17.84 +G01 X+1.384 Y-14.383 +G01 X+1.94 Y-10.96 +G01 X+2.738 Y-7.593 +G01 X+3.549 Y-4.931 +G01 X+3.558 Y-3.708 +G01 X+3.708 Y-3.558 +G01 X+4.888 Y-3.561 +G01 X+8.418 Y-2.534 +G01 X+11.79 Y-1.801 +G01 X+15.247 Y-1.31 +G01 X+18.704 Y-1.082 +G01 X+22.16 Y-1.119 +G01 X+25.617 Y-1.421 +G01 X+29.04 Y-1.983 +G01 X+32.407 Y-2.79 +G01 X+35.07 Y-3.611 +G01 X+36.234 Y-3.639 +G01 X+36.381 Y-3.789 +G01 X+36.379 Y-4.888 +G01 X+37.395 Y-8.333 +G01 X+38.158 Y-11.79 +G01 X+38.646 Y-15.172 +G01 X+38.882 Y-18.618 +G01 X+38.858 Y-21.924 +G01 X+38.572 Y-25.377 +G01 X+38.042 Y-28.704 +G01 X+37.224 Y-32.168 +G01 X+36.329 Y-35.068 +G01 X+36.321 Y-36.171 +G01 X+36.17 Y-36.32 +G01 X+35.112 Y-36.318 +G01 X+31.582 Y-37.367 +G01 X+28.21 Y-38.116 +G01 X+24.753 Y-38.619 +G01 X+21.296 Y-38.851 +G01 X+17.84 Y-38.814 +G01 X+14.383 Y-38.505 +G01 X+10.96 Y-37.931 +G01 X+7.593 Y-37.106 +G01 X+4.93 Y-36.268 +G01 X+3.887 Y-36.238 +G01 X+3.741 Y-36.088 +G01 X+3.742 Y-35.112 +G01 X+2.682 Y-31.582 +G01 X+1.925 Y-28.21 +G01 X+1.417 Y-24.753 +G01 X+1.182 Y-21.296 +G01 X+1.22 Y-17.84 +G01 X+1.532 Y-14.383 +G01 X+2.112 Y-10.96 +G01 X+2.946 Y-7.593 +G01 X+3.793 Y-4.932 +G01 X+3.801 Y-3.951 +G01 X+3.952 Y-3.802 +G01 X+4.888 Y-3.803 +G01 X+8.418 Y-2.732 +G01 X+11.79 Y-1.967 +G01 X+15.247 Y-1.453 +G01 X+18.704 Y-1.215 +G01 X+22.16 Y-1.253 +G01 X+25.617 Y-1.569 +G01 X+29.04 Y-2.155 +G01 X+32.407 Y-2.998 +G01 X+35.07 Y-3.854 +G01 X+35.992 Y-3.885 +G01 X+36.138 Y-4.035 +G01 X+36.137 Y-4.887 +G01 X+37.197 Y-8.333 +G01 X+37.993 Y-11.79 +G01 X+38.502 Y-15.172 +G01 X+38.748 Y-18.618 +G01 X+38.724 Y-21.924 +G01 X+38.457 Y-25.123 +G01 X+37.919 Y-28.476 +G01 X+37.121 Y-31.809 +G01 X+36.086 Y-35.068 +G01 X+36.077 Y-35.926 +G01 X+36.033 Y-36.031 +G01 X+35.925 Y-36.077 +G01 X+35.113 Y-36.076 +G01 X+31.809 Y-37.108 +G01 X+28.476 Y-37.899 +G01 X+25.123 Y-38.432 +G01 X+21.924 Y-38.694 +G01 X+18.704 Y-38.716 +G01 X+15.494 Y-38.491 +G01 X+12.16 Y-38.001 +G01 X+8.827 Y-37.245 +G01 X+5.37 Y-36.181 +G01 X+4.932 Y-36.026 +G01 X+4.129 Y-35.992 +G01 X+3.984 Y-35.842 +G01 X+3.985 Y-35.113 +G01 X+2.942 Y-31.809 +G01 X+2.143 Y-28.476 +G01 X+1.604 Y-25.123 +G01 X+1.339 Y-21.924 +G01 X+1.318 Y-18.704 +G01 X+1.544 Y-15.494 +G01 X+2.04 Y-12.16 +G01 X+2.803 Y-8.827 +G01 X+3.878 Y-5.37 +G01 X+4.034 Y-4.934 +G01 X+4.045 Y-4.198 +G01 X+4.089 Y-4.092 +G01 X+4.198 Y-4.045 +G01 X+4.886 Y-4.046 +G01 X+8.191 Y-2.993 +G01 X+11.524 Y-2.185 +G01 X+14.877 Y-1.64 +G01 X+18.076 Y-1.373 +G01 X+21.296 Y-1.351 +G01 X+24.506 Y-1.58 +G01 X+27.84 Y-2.08 +G01 X+31.173 Y-2.852 +G01 X+34.383 Y-3.85 +G01 X+35.065 Y-4.095 +G01 X+35.745 Y-4.105 +G01 X+35.895 Y-4.255 +G01 X+35.894 Y-4.886 +G01 X+36.999 Y-8.333 +G01 X+37.778 Y-11.543 +G01 X+38.325 Y-14.877 +G01 X+38.596 Y-18.086 +G01 X+38.617 Y-21.296 +G01 X+38.386 Y-24.507 +G01 X+37.882 Y-27.84 +G01 X+37.137 Y-31.049 +G01 X+36.096 Y-34.383 +G01 X+35.849 Y-35.065 +G01 X+35.839 Y-35.679 +G01 X+35.795 Y-35.785 +G01 X+35.678 Y-35.839 +G01 X+35.114 Y-35.838 +G01 X+31.809 Y-36.912 +G01 X+28.476 Y-37.735 +G01 X+25.123 Y-38.291 +G01 X+21.924 Y-38.564 +G01 X+18.704 Y-38.586 +G01 X+15.494 Y-38.354 +G01 X+12.16 Y-37.844 +G01 X+8.827 Y-37.059 +G01 X+5.617 Y-36.043 +G01 X+4.935 Y-35.793 +G01 X+4.367 Y-35.783 +G01 X+4.218 Y-35.632 +G01 X+4.219 Y-35.114 +G01 X+3.134 Y-31.809 +G01 X+2.303 Y-28.476 +G01 X+1.742 Y-25.123 +G01 X+1.467 Y-21.924 +G01 X+1.444 Y-18.704 +G01 X+1.679 Y-15.494 +G01 X+2.193 Y-12.16 +G01 X+2.986 Y-8.827 +G01 X+4.011 Y-5.617 +G01 X+4.264 Y-4.935 +G01 X+4.274 Y-4.445 +G01 X+4.318 Y-4.339 +G01 X+4.445 Y-4.274 +G01 X+4.886 Y-4.275 +G01 X+8.191 Y-3.18 +G01 X+11.524 Y-2.342 +G01 X+14.877 Y-1.776 +G01 X+18.076 Y-1.498 +G01 X+21.296 Y-1.475 +G01 X+24.506 Y-1.712 +G01 X+27.84 Y-2.231 +G01 X+31.173 Y-3.031 +G01 X+34.383 Y-4.065 +G01 X+35.065 Y-4.32 +G01 X+35.521 Y-4.329 +G01 X+35.67 Y-4.48 +G01 Y-4.886 +G01 X+36.816 Y-8.333 +G01 X+37.625 Y-11.543 +G01 X+38.192 Y-14.877 +G01 X+38.473 Y-18.086 +G01 X+38.499 Y-21.181 +G01 X+38.257 Y-24.507 +G01 X+37.734 Y-27.84 +G01 X+36.963 Y-31.049 +G01 X+35.885 Y-34.383 +G01 X+35.629 Y-35.064 +G01 X+35.619 Y-35.432 +G01 X+35.575 Y-35.538 +G01 X+35.432 Y-35.619 +G01 X+35.115 Y-35.618 +G01 X+31.914 Y-36.701 +G01 X+28.704 Y-37.536 +G01 X+25.377 Y-38.127 +G01 X+22.16 Y-38.432 +G01 X+18.951 Y-38.474 +G01 X+15.741 Y-38.255 +G01 X+12.42 Y-37.75 +G01 X+9.074 Y-36.957 +G01 X+5.864 Y-35.926 +G01 X+4.935 Y-35.577 +G01 X+4.583 Y-35.568 +G01 X+4.433 Y-35.417 +G01 Y-35.115 +G01 X+3.342 Y-31.914 +G01 X+2.5 Y-28.704 +G01 X+1.904 Y-25.377 +G01 X+1.596 Y-22.16 +G01 X+1.554 Y-18.951 +G01 X+1.775 Y-15.741 +G01 X+2.284 Y-12.42 +G01 X+3.083 Y-9.074 +G01 X+4.123 Y-5.864 +G01 X+4.475 Y-4.932 +G01 X+4.499 Y-4.626 +G01 X+4.649 Y-4.484 +G01 X+4.885 Y-4.485 +G01 X+8.086 Y-3.384 +G01 X+11.296 Y-2.535 +G01 X+14.623 Y-1.935 +G01 X+17.84 Y-1.625 +G01 X+21.049 Y-1.582 +G01 X+24.259 Y-1.805 +G01 X+27.346 Y-2.271 +G01 X+30.556 Y-3.02 +G01 X+33.889 Y-4.081 +G01 X+35.064 Y-4.526 +G01 X+35.308 Y-4.535 +G01 X+35.414 Y-4.579 +G01 X+35.464 Y-4.692 +G01 Y-4.885 +G01 X+36.573 Y-8.086 +G01 X+37.429 Y-11.296 +G01 X+38.035 Y-14.63 +G01 X+38.342 Y-17.761 +G01 X+38.392 Y-20.955 +G01 X+38.173 Y-24.187 +G01 X+37.713 Y-27.249 +G01 X+37.008 Y-30.309 +G01 X+36.048 Y-33.395 +G01 X+35.423 Y-35.065 +G01 X+35.413 Y-35.263 +G01 X+35.263 Y-35.413 +G01 X+35.116 +G01 X+31.914 Y-36.531 +G01 X+28.704 Y-37.393 +G01 X+25.617 Y-37.969 +G01 X+22.531 Y-38.296 +G01 X+19.473 Y-38.373 +G01 X+16.358 Y-38.2 +G01 X+13.194 Y-37.762 +G01 X+9.938 Y-37.036 +G01 X+6.605 Y-36.002 +G01 X+4.936 Y-35.371 +G01 X+4.815 Y-35.362 +G01 X+4.709 Y-35.318 +G01 X+4.639 Y-35.185 +G01 X+4.63 Y-35.065 +G01 X+3.512 Y-31.914 +G01 X+2.643 Y-28.704 +G01 X+2.062 Y-25.617 +G01 X+1.733 Y-22.531 +G01 X+1.655 Y-19.473 +G01 X+1.83 Y-16.358 +G01 X+2.271 Y-13.194 +G01 X+3.002 Y-9.938 +G01 X+4.045 Y-6.605 +G01 X+4.68 Y-4.936 +G01 X+4.84 Y-4.69 +G01 X+8.086 Y-3.555 +G01 X+11.296 Y-2.679 +G01 X+14.383 Y-2.094 +G01 X+17.469 Y-1.761 +G01 X+20.527 Y-1.683 +G01 X+23.642 Y-1.859 +G01 X+26.806 Y-2.304 +G01 X+29.815 Y-2.976 +G01 X+32.901 Y-3.917 +G01 X+35.069 Y-4.734 +G01 X+35.259 Y-4.893 +G01 X+36.404 Y-8.086 +G01 X+37.261 Y-11.186 +G01 X+37.864 Y-14.299 +G01 X+38.212 Y-17.469 +G01 X+38.289 Y-20.679 +G01 X+38.115 Y-23.642 +G01 X+37.682 Y-26.728 +G01 X+37.016 Y-29.725 +G01 X+36.045 Y-32.901 +G01 X+35.228 Y-35.06 +G01 X+35.114 Y-35.193 +G01 X+31.914 Y-36.369 +G01 X+28.704 Y-37.258 +G01 X+25.617 Y-37.852 +G01 X+22.531 Y-38.189 +G01 X+19.473 Y-38.269 +G01 X+16.358 Y-38.091 +G01 X+13.194 Y-37.641 +G01 X+10.185 Y-36.961 +G01 X+7.099 Y-36.008 +G01 X+4.94 Y-35.186 +G01 X+4.849 Y-35.113 +G01 X+3.666 Y-31.914 +G01 X+2.771 Y-28.704 +G01 X+2.174 Y-25.617 +G01 X+1.835 Y-22.531 +G01 X+1.754 Y-19.473 +G01 X+1.933 Y-16.358 +G01 X+2.386 Y-13.194 +G01 X+3.07 Y-10.185 +G01 X+4.029 Y-7.099 +G01 X+4.885 Y-4.93 +G01 X+4.973 Y-4.845 +G01 X+8.086 Y-3.701 +G01 X+11.296 Y-2.801 +G01 X+14.383 Y-2.2 +G01 X+17.469 Y-1.858 +G01 X+20.527 Y-1.777 +G01 X+23.642 Y-1.958 +G01 X+26.806 Y-2.413 +G01 X+29.815 Y-3.101 +G01 X+32.901 Y-4.066 +G01 X+35.028 Y-4.886 +G01 X+35.114 Y-4.972 +G01 X+35.928 Y-7.102 +G01 X+36.886 Y-10.19 +G01 X+37.569 Y-13.198 +G01 X+38.019 Y-16.361 +G01 X+38.194 Y-19.473 +G01 X+38.107 Y-22.528 +G01 X+37.757 Y-25.609 +G01 X+37.144 Y-28.688 +G01 X+36.229 Y-31.885 +G01 X+35.067 Y-34.98 +G01 X+34.98 Y-35.068 +G01 X+32.616 Y-35.969 +G01 X+29.417 Y-36.942 +G01 X+26.348 Y-37.609 +G01 X+23.262 Y-38.018 +G01 X+20.326 Y-38.161 +G01 X+17.231 Y-38.052 +G01 X+14.32 Y-37.705 +G01 X+11.224 Y-37.076 +G01 X+8.147 Y-36.185 +G01 X+5.066 Y-35.021 +G01 X+4.979 Y-34.934 +G01 X+4.075 Y-32.581 +G01 X+3.1 Y-29.394 +G01 X+2.429 Y-26.334 +G01 X+2.019 Y-23.256 +G01 X+1.875 Y-20.325 +G01 X+1.985 Y-17.237 +G01 X+2.333 Y-14.332 +G01 X+2.965 Y-11.245 +G01 X+3.859 Y-8.179 +G01 X+5.025 Y-5.112 +G01 X+5.112 Y-5.025 +G01 X+7.454 Y-4.12 +G01 X+10.629 Y-3.141 +G01 X+13.68 Y-2.468 +G01 X+16.751 Y-2.055 +G01 X+19.676 Y-1.911 +G01 X+22.758 Y-2.021 +G01 X+25.656 Y-2.371 +G01 X+28.734 Y-3.005 +G01 X+31.789 Y-3.903 +G01 X+34.842 Y-5.072 +G01 X+34.929 Y-5.158 +G01 X+35.838 Y-7.499 +G01 X+36.784 Y-10.531 +G01 X+37.472 Y-13.58 +G01 X+37.895 Y-16.636 +G01 X+38.051 Y-19.572 +G01 X+37.959 Y-22.507 +G01 X+37.601 Y-25.56 +G01 X+36.977 Y-28.603 +G01 X+36.048 Y-31.752 +G01 X+34.875 Y-34.79 +G01 X+34.79 Y-34.875 +G01 X+32.47 Y-35.784 +G01 X+29.321 Y-36.769 +G01 X+26.29 Y-37.448 +G01 X+23.235 Y-37.864 +G01 X+20.323 Y-38.01 +G01 X+17.255 Y-37.898 +G01 X+14.372 Y-37.544 +G01 X+11.313 Y-36.902 +G01 X+8.284 Y-35.998 +G01 X+5.263 Y-34.822 +G01 X+5.178 Y-34.737 +G01 X+4.18 Y-32.189 +G01 X+3.214 Y-29.053 +G01 X+2.557 Y-26.051 +G01 X+2.155 Y-22.984 +G01 X+2.03 Y-20.099 +G01 X+2.143 Y-17.261 +G01 X+2.5 Y-14.386 +G01 X+3.144 Y-11.337 +G01 X+4.052 Y-8.321 +G01 X+5.231 Y-5.315 +G01 X+5.315 Y-5.231 +G01 X+7.85 Y-4.231 +G01 X+10.973 Y-3.261 +G01 X+13.964 Y-2.601 +G01 X+17.017 Y-2.198 +G01 X+19.901 Y-2.07 +G01 X+22.733 Y-2.185 +G01 X+25.6 Y-2.543 +G01 X+28.639 Y-3.191 +G01 X+31.642 Y-4.102 +G01 X+34.632 Y-5.284 +G01 X+34.716 Y-5.368 +G01 X+35.635 Y-7.659 +G01 X+36.594 Y-10.638 +G01 X+37.295 Y-13.645 +G01 X+37.727 Y-16.66 +G01 X+37.887 Y-19.576 +G01 X+37.794 Y-22.478 +G01 X+37.428 Y-25.498 +G01 X+36.791 Y-28.508 +G01 X+35.848 Y-31.606 +G01 X+34.663 Y-34.58 +G01 X+34.58 Y-34.663 +G01 X+32.072 Y-35.668 +G01 X+28.977 Y-36.645 +G01 X+26.012 Y-37.31 +G01 X+22.969 Y-37.719 +G01 X+20.098 Y-37.848 +G01 X+17.28 Y-37.732 +G01 X+14.428 Y-37.37 +G01 X+11.409 Y-36.716 +G01 X+8.431 Y-35.797 +G01 X+5.473 Y-34.61 +G01 X+5.39 Y-34.527 +G01 X+4.382 Y-32.033 +G01 X+3.402 Y-28.951 +G01 X+2.734 Y-25.997 +G01 X+2.323 Y-22.962 +G01 X+2.193 Y-20.098 +G01 X+2.309 Y-17.286 +G01 X+2.673 Y-14.448 +G01 X+3.331 Y-11.433 +G01 X+4.253 Y-8.468 +G01 X+5.443 Y-5.525 +G01 X+5.525 Y-5.443 +G01 X+8.006 Y-4.433 +G01 X+11.074 Y-3.449 +G01 X+14.019 Y-2.778 +G01 X+17.044 Y-2.364 +G01 X+19.902 Y-2.234 +G01 X+22.707 Y-2.351 +G01 X+25.538 Y-2.716 +G01 X+28.543 Y-3.378 +G01 X+31.496 Y-4.303 +G01 X+34.422 Y-5.496 +G01 X+34.504 Y-5.578 +G01 X+35.432 Y-7.82 +G01 X+36.404 Y-10.745 +G01 X+37.117 Y-13.704 +G01 X+37.56 Y-16.692 +G01 X+37.724 Y-19.573 +G01 X+37.628 Y-22.454 +G01 X+37.255 Y-25.443 +G01 X+36.606 Y-28.407 +G01 X+35.647 Y-31.459 +G01 X+34.451 Y-34.37 +G01 X+34.37 Y-34.451 +G01 X+31.916 Y-35.466 +G01 X+28.881 Y-36.455 +G01 X+25.951 Y-37.135 +G01 X+22.942 Y-37.553 +G01 X+20.104 Y-37.684 +G01 X+17.312 Y-37.567 +G01 X+14.49 Y-37.197 +G01 X+11.511 Y-36.531 +G01 X+8.578 Y-35.597 +G01 X+5.683 Y-34.398 +G01 X+5.602 Y-34.317 +G01 X+4.585 Y-31.877 +G01 X+3.592 Y-28.856 +G01 X+2.909 Y-25.936 +G01 X+2.489 Y-22.935 +G01 X+2.356 Y-20.104 +G01 X+2.475 Y-17.319 +G01 X+2.847 Y-14.504 +G01 X+3.516 Y-11.535 +G01 X+4.453 Y-8.615 +G01 X+5.655 Y-5.735 +G01 X+5.735 Y-5.655 +G01 X+8.162 Y-4.635 +G01 X+11.169 Y-3.639 +G01 X+14.079 Y-2.953 +G01 X+17.072 Y-2.531 +G01 X+19.896 Y-2.397 +G01 X+22.675 Y-2.516 +G01 X+25.482 Y-2.89 +G01 X+28.441 Y-3.563 +G01 X+31.349 Y-4.503 +G01 X+34.212 Y-5.708 +G01 X+34.292 Y-5.788 +G01 X+35.4 Y-8.43 +G01 X+36.355 Y-11.343 +G01 X+37.031 Y-14.239 +G01 X+37.428 Y-17.079 +G01 X+37.562 Y-19.815 +G01 X+37.442 Y-22.672 +G01 X+37.038 Y-25.624 +G01 X+36.355 Y-28.545 +G01 X+35.447 Y-31.312 +G01 X+34.239 Y-34.159 +G01 X+34.159 Y-34.239 +G01 X+31.54 Y-35.347 +G01 X+28.773 Y-36.269 +G01 X+25.89 Y-36.959 +G01 X+22.914 Y-37.386 +G01 X+20.103 Y-37.521 +G01 X+17.338 Y-37.401 +G01 X+14.546 Y-37.023 +G01 X+11.607 Y-36.344 +G01 X+8.725 Y-35.397 +G01 X+5.893 Y-34.186 +G01 X+5.814 Y-34.107 +G01 X+4.703 Y-31.502 +G01 X+3.779 Y-28.748 +G01 X+3.085 Y-25.875 +G01 X+2.655 Y-22.907 +G01 X+2.52 Y-20.103 +G01 X+2.641 Y-17.344 +G01 X+3.021 Y-14.56 +G01 X+3.703 Y-11.631 +G01 X+4.654 Y-8.761 +G01 X+5.867 Y-5.946 +G01 X+5.946 Y-5.867 +G01 X+8.536 Y-4.754 +G01 X+11.271 Y-3.828 +G01 X+14.14 Y-3.129 +G01 X+17.1 Y-2.697 +G01 X+19.897 Y-2.56 +G01 X+22.649 Y-2.682 +G01 X+25.426 Y-3.064 +G01 X+28.345 Y-3.749 +G01 X+31.202 Y-4.704 +G01 X+34.005 Y-5.921 +G01 X+34.081 Y-5.994 +G01 X+34.147 Y-6.134 +G01 X+35.37 Y-9.031 +G01 X+36.257 Y-11.755 +G01 X+36.921 Y-14.648 +G01 X+37.283 Y-17.342 +G01 X+37.399 Y-20.089 +G01 X+37.254 Y-22.878 +G01 X+36.863 Y-25.566 +G01 X+36.167 Y-28.447 +G01 X+35.246 Y-31.165 +G01 X+34.027 Y-33.949 +G01 X+33.949 Y-34.027 +G01 X+31.157 Y-35.236 +G01 X+28.45 Y-36.145 +G01 X+25.571 Y-36.834 +G01 X+22.886 Y-37.22 +G01 X+20.103 Y-37.358 +G01 X+17.363 Y-37.235 +G01 X+14.602 Y-36.849 +G01 X+11.703 Y-36.157 +G01 X+8.878 Y-35.198 +G01 X+6.103 Y-33.974 +G01 X+6.026 Y-33.897 +G01 X+4.815 Y-31.121 +G01 X+3.902 Y-28.426 +G01 X+3.21 Y-25.556 +G01 X+2.822 Y-22.879 +G01 X+2.683 Y-20.103 +G01 X+2.807 Y-17.37 +G01 X+3.195 Y-14.616 +G01 X+3.889 Y-11.727 +G01 X+4.852 Y-8.914 +G01 X+6.079 Y-6.156 +G01 X+6.156 Y-6.079 +G01 X+8.916 Y-4.865 +G01 X+11.599 Y-3.949 +G01 X+14.458 Y-3.254 +G01 X+17.128 Y-2.864 +G01 X+19.898 Y-2.724 +G01 X+22.624 Y-2.848 +G01 X+25.37 Y-3.238 +G01 X+28.248 Y-3.936 +G01 X+31.049 Y-4.902 +G01 X+33.795 Y-6.134 +G01 X+33.868 Y-6.204 +G01 X+33.936 Y-6.341 +G01 X+35.171 Y-9.173 +G01 X+36.07 Y-11.849 +G01 X+36.747 Y-14.703 +G01 X+37.117 Y-17.367 +G01 X+37.235 Y-20.088 +G01 X+37.088 Y-22.85 +G01 X+36.689 Y-25.508 +G01 X+35.98 Y-28.349 +G01 X+35.048 Y-31.012 +G01 X+33.813 Y-33.742 +G01 X+33.743 Y-33.815 +G01 X+33.393 Y-33.987 +G01 X+30.722 Y-35.147 +G01 X+27.919 Y-36.083 +G01 X+25.284 Y-36.704 +G01 X+22.63 Y-37.075 +G01 X+19.833 Y-37.194 +G01 X+17.088 Y-37.039 +G01 X+14.392 Y-36.622 +G01 X+11.799 Y-35.971 +G01 X+9.025 Y-34.998 +G01 X+6.31 Y-33.76 +G01 X+6.238 Y-33.691 +G01 X+6.066 Y-33.343 +G01 X+4.903 Y-30.687 +G01 X+3.963 Y-27.897 +G01 X+3.34 Y-25.27 +G01 X+2.967 Y-22.623 +G01 X+2.847 Y-19.833 +G01 X+3.003 Y-17.096 +G01 X+3.422 Y-14.407 +G01 X+4.076 Y-11.823 +G01 X+5.052 Y-9.061 +G01 X+6.293 Y-6.363 +G01 X+6.707 Y-6.118 +G01 X+9.348 Y-4.953 +G01 X+12.126 Y-4.01 +G01 X+14.744 Y-3.383 +G01 X+17.383 Y-3.008 +G01 X+20.166 Y-2.887 +G01 X+22.897 Y-3.045 +G01 X+25.579 Y-3.465 +G01 X+28.153 Y-4.122 +G01 X+30.902 Y-5.102 +G01 X+33.585 Y-6.346 +G01 X+33.829 Y-6.758 +G01 X+35.054 Y-9.526 +G01 X+35.949 Y-12.166 +G01 X+36.573 Y-14.757 +G01 X+36.951 Y-17.393 +G01 X+37.072 Y-20.087 +G01 X+36.922 Y-22.822 +G01 X+36.514 Y-25.45 +G01 X+35.793 Y-28.251 +G01 X+34.848 Y-30.865 +G01 X+33.601 Y-33.533 +G01 X+33.192 Y-33.776 +G01 X+30.582 Y-34.948 +G01 X+27.828 Y-35.898 +G01 X+25.229 Y-36.53 +G01 X+22.604 Y-36.909 +G01 X+19.835 Y-37.031 +G01 X+17.117 Y-36.872 +G01 X+14.451 Y-36.447 +G01 X+11.895 Y-35.784 +G01 X+9.172 Y-34.798 +G01 X+6.52 Y-33.548 +G01 X+6.172 Y-32.934 +G01 X+5.003 Y-30.298 +G01 X+4.079 Y-27.567 +G01 X+3.472 Y-24.995 +G01 X+3.111 Y-22.365 +G01 X+3.01 Y-19.835 +G01 X+3.169 Y-17.124 +G01 X+3.597 Y-14.466 +G01 X+4.262 Y-11.919 +G01 X+5.252 Y-9.208 +G01 X+6.505 Y-6.573 +G01 X+7.115 Y-6.225 +G01 X+9.736 Y-5.053 +G01 X+12.455 Y-4.125 +G01 X+15.018 Y-3.515 +G01 X+17.64 Y-3.152 +G01 X+20.165 Y-3.051 +G01 X+22.869 Y-3.211 +G01 X+25.519 Y-3.64 +G01 X+28.057 Y-4.309 +G01 X+30.755 Y-5.303 +G01 X+33.375 Y-6.558 +G01 X+33.825 Y-7.37 +G01 X+35.023 Y-10.09 +G01 X+35.892 Y-12.697 +G01 X+36.485 Y-15.262 +G01 X+36.835 Y-17.989 +G01 X+36.901 Y-20.623 +G01 X+36.716 Y-23.135 +G01 X+36.286 Y-25.642 +G01 X+35.606 Y-28.153 +G01 X+34.647 Y-30.718 +G01 X+33.389 Y-33.323 +G01 X+32.787 Y-33.67 +G01 X+30.196 Y-34.848 +G01 X+27.502 Y-35.783 +G01 X+24.956 Y-36.398 +G01 X+22.235 Y-36.775 +G01 X+19.519 Y-36.863 +G01 X+16.873 Y-36.674 +G01 X+14.288 Y-36.223 +G01 X+11.793 Y-35.533 +G01 X+9.318 Y-34.597 +G01 X+6.73 Y-33.336 +G01 X+6.279 Y-32.535 +G01 X+5.116 Y-29.951 +G01 X+4.231 Y-27.371 +G01 X+3.601 Y-24.713 +G01 X+3.266 Y-22.229 +G01 X+3.178 Y-19.521 +G01 X+3.368 Y-16.881 +G01 X+3.821 Y-14.303 +G01 X+4.513 Y-11.817 +G01 X+5.453 Y-9.355 +G01 X+6.717 Y-6.783 +G01 X+7.513 Y-6.332 +G01 X+10.082 Y-5.165 +G01 X+12.65 Y-4.277 +G01 X+15.299 Y-3.644 +G01 X+17.777 Y-3.308 +G01 X+20.478 Y-3.219 +G01 X+23.111 Y-3.41 +G01 X+25.681 Y-3.865 +G01 X+28.158 Y-4.56 +G01 X+30.608 Y-5.503 +G01 X+33.165 Y-6.77 +G01 X+33.719 Y-7.761 +G01 X+34.827 Y-10.219 +G01 X+35.709 Y-12.78 +G01 X+36.313 Y-15.311 +G01 X+36.67 Y-18.008 +G01 X+36.737 Y-20.617 +G01 X+36.548 Y-23.104 +G01 X+36.11 Y-25.581 +G01 X+35.419 Y-28.055 +G01 X+34.447 Y-30.572 +G01 X+33.177 Y-33.112 +G01 X+32.192 Y-33.667 +G01 X+29.644 Y-34.82 +G01 X+27.09 Y-35.695 +G01 X+24.565 Y-36.29 +G01 X+21.987 Y-36.629 +G01 X+19.524 Y-36.7 +G01 X+16.905 Y-36.507 +G01 X+14.35 Y-36.047 +G01 X+11.892 Y-35.346 +G01 X+9.465 Y-34.397 +G01 X+6.94 Y-33.124 +G01 X+6.385 Y-32.146 +G01 X+5.229 Y-29.613 +G01 X+4.351 Y-27.07 +G01 X+3.753 Y-24.553 +G01 X+3.413 Y-21.982 +G01 X+3.341 Y-19.525 +G01 X+3.535 Y-16.912 +G01 X+3.997 Y-14.365 +G01 X+4.701 Y-11.917 +G01 X+5.653 Y-9.502 +G01 X+6.93 Y-6.992 +G01 X+7.901 Y-6.437 +G01 X+10.419 Y-5.278 +G01 X+12.951 Y-4.397 +G01 X+15.459 Y-3.796 +G01 X+18.023 Y-3.454 +G01 X+20.474 Y-3.382 +G01 X+23.08 Y-3.577 +G01 X+25.619 Y-4.041 +G01 X+28.058 Y-4.748 +G01 X+30.461 Y-5.703 +G01 X+32.955 Y-6.983 +G01 X+33.625 Y-8.169 +G01 X+34.756 Y-10.657 +G01 X+35.623 Y-13.196 +G01 X+36.19 Y-15.625 +G01 X+36.505 Y-18.028 +G01 X+36.574 Y-20.61 +G01 X+36.381 Y-23.072 +G01 X+35.935 Y-25.52 +G01 X+35.232 Y-27.957 +G01 X+34.247 Y-30.425 +G01 X+32.964 Y-32.902 +G01 X+31.812 Y-33.56 +G01 X+29.312 Y-34.707 +G01 X+26.795 Y-35.574 +G01 X+24.298 Y-36.159 +G01 X+21.753 Y-36.48 +G01 X+19.323 Y-36.531 +G01 X+16.936 Y-36.339 +G01 X+14.412 Y-35.871 +G01 X+11.991 Y-35.158 +G01 X+9.612 Y-34.197 +G01 X+7.15 Y-32.911 +G01 X+6.492 Y-31.767 +G01 X+5.341 Y-29.282 +G01 X+4.471 Y-26.775 +G01 X+3.884 Y-24.286 +G01 X+3.561 Y-21.749 +G01 X+3.51 Y-19.325 +G01 X+3.702 Y-16.944 +G01 X+4.173 Y-14.428 +G01 X+4.889 Y-12.016 +G01 X+5.853 Y-9.649 +G01 X+7.142 Y-7.202 +G01 X+8.279 Y-6.544 +G01 X+10.749 Y-5.39 +G01 X+13.245 Y-4.516 +G01 X+15.725 Y-3.926 +G01 X+18.256 Y-3.603 +G01 X+20.673 Y-3.551 +G01 X+23.048 Y-3.744 +G01 X+25.557 Y-4.217 +G01 X+27.959 Y-4.935 +G01 X+30.314 Y-5.903 +G01 X+32.745 Y-7.195 +G01 X+33.418 Y-8.349 +G01 X+34.562 Y-10.78 +G01 X+35.441 Y-13.275 +G01 X+36.018 Y-15.671 +G01 X+36.34 Y-18.047 +G01 X+36.411 Y-20.604 +G01 X+36.214 Y-23.04 +G01 X+35.759 Y-25.459 +G01 X+35.044 Y-27.859 +G01 X+34.046 Y-30.278 +G01 X+32.752 Y-32.693 +G01 X+31.631 Y-33.353 +G01 X+29.189 Y-34.513 +G01 X+26.716 Y-35.393 +G01 X+24.252 Y-35.988 +G01 X+21.736 Y-36.315 +G01 X+19.33 Y-36.368 +G01 X+16.968 Y-36.172 +G01 X+14.474 Y-35.695 +G01 X+12.091 Y-34.971 +G01 X+9.759 Y-33.996 +G01 X+7.359 Y-32.699 +G01 X+6.699 Y-31.586 +G01 X+5.536 Y-29.159 +G01 X+4.653 Y-26.696 +G01 X+4.054 Y-24.241 +G01 X+3.726 Y-21.731 +G01 X+3.673 Y-19.332 +G01 X+3.87 Y-16.975 +G01 X+4.349 Y-14.49 +G01 X+5.076 Y-12.116 +G01 X+6.054 Y-9.796 +G01 X+7.355 Y-7.412 +G01 X+8.459 Y-6.751 +G01 X+10.872 Y-5.584 +G01 X+13.323 Y-4.698 +G01 X+15.77 Y-4.097 +G01 X+18.273 Y-3.767 +G01 X+20.666 Y-3.714 +G01 X+23.017 Y-3.911 +G01 X+25.495 Y-4.393 +G01 X+27.859 Y-5.123 +G01 X+30.167 Y-6.104 +G01 X+32.536 Y-7.408 +G01 X+33.21 Y-8.528 +G01 X+34.367 Y-10.903 +G01 X+35.26 Y-13.354 +G01 X+35.847 Y-15.717 +G01 X+36.175 Y-18.066 +G01 X+36.247 Y-20.598 +G01 X+36.047 Y-23.009 +G01 X+35.584 Y-25.397 +G01 X+34.857 Y-27.761 +G01 X+33.846 Y-30.131 +G01 X+32.539 Y-32.483 +G01 X+31.451 Y-33.146 +G01 X+29.067 Y-34.318 +G01 X+26.637 Y-35.211 +G01 X+24.207 Y-35.817 +G01 X+21.719 Y-36.151 +G01 X+19.337 Y-36.204 +G01 X+16.999 Y-36.005 +G01 X+14.537 Y-35.519 +G01 X+12.19 Y-34.783 +G01 X+9.906 Y-33.796 +G01 X+7.569 Y-32.486 +G01 X+6.906 Y-31.406 +G01 X+5.73 Y-29.036 +G01 X+4.834 Y-26.618 +G01 X+4.225 Y-24.196 +G01 X+3.891 Y-21.714 +G01 X+3.837 Y-19.339 +G01 X+4.037 Y-17.007 +G01 X+4.525 Y-14.552 +G01 X+5.264 Y-12.215 +G01 X+6.254 Y-9.943 +G01 X+7.567 Y-7.621 +G01 X+8.64 Y-6.958 +G01 X+10.995 Y-5.779 +G01 X+13.402 Y-4.879 +G01 X+15.815 Y-4.268 +G01 X+18.29 Y-3.932 +G01 X+20.659 Y-3.877 +G01 X+22.985 Y-4.079 +G01 X+25.432 Y-4.569 +G01 X+27.76 Y-5.31 +G01 X+30.021 Y-6.304 +G01 X+32.326 Y-7.62 +G01 X+33.003 Y-8.708 +G01 X+34.172 Y-11.026 +G01 X+35.079 Y-13.432 +G01 X+35.689 Y-15.827 +G01 X+36.028 Y-18.303 +G01 X+36.084 Y-20.592 +G01 X+35.88 Y-22.977 +G01 X+35.408 Y-25.336 +G01 X+34.67 Y-27.663 +G01 X+33.646 Y-29.984 +G01 X+32.327 Y-32.273 +G01 X+30.908 Y-33.143 +G01 X+28.555 Y-34.292 +G01 X+26.273 Y-35.118 +G01 X+23.95 Y-35.687 +G01 X+21.701 Y-35.986 +G01 X+19.344 Y-36.041 +G01 X+17.031 Y-35.838 +G01 X+14.599 Y-35.343 +G01 X+12.29 Y-34.596 +G01 X+10.053 Y-33.596 +G01 X+7.78 Y-32.274 +G01 X+6.613 Y-30.324 +G01 X+5.555 Y-28.038 +G01 X+4.799 Y-25.822 +G01 X+4.262 Y-23.407 +G01 X+4.013 Y-21.046 +G01 X+4.025 Y-18.794 +G01 X+4.281 Y-16.549 +G01 X+4.78 Y-14.325 +G01 X+5.539 Y-12.091 +G01 X+6.551 Y-9.905 +G01 X+7.779 Y-7.832 +G01 X+9.715 Y-6.664 +G01 X+11.988 Y-5.602 +G01 X+14.195 Y-4.844 +G01 X+16.602 Y-4.304 +G01 X+18.957 Y-4.054 +G01 X+21.203 Y-4.066 +G01 X+23.441 Y-4.323 +G01 X+25.658 Y-4.824 +G01 X+27.883 Y-5.586 +G01 X+30.057 Y-6.601 +G01 X+32.115 Y-7.832 +G01 X+33.382 Y-9.936 +G01 X+34.39 Y-12.112 +G01 X+35.147 Y-14.335 +G01 X+35.654 Y-16.611 +G01 X+35.9 Y-18.859 +G01 X+35.897 Y-21.124 +G01 X+35.646 Y-23.37 +G01 X+35.155 Y-25.56 +G01 X+34.406 Y-27.76 +G01 X+33.345 Y-30.025 +G01 X+32.114 Y-32.063 +G01 X+30.207 Y-33.235 +G01 X+27.96 Y-34.303 +G01 X+25.771 Y-35.067 +G01 X+23.38 Y-35.612 +G01 X+21.038 Y-35.864 +G01 X+18.804 Y-35.852 +G01 X+16.577 Y-35.593 +G01 X+14.375 Y-35.087 +G01 X+12.169 Y-34.319 +G01 X+10.019 Y-33.298 +G01 X+7.989 Y-32.061 +G01 X+6.722 Y-29.994 +G01 X+5.665 Y-27.74 +G01 X+4.919 Y-25.55 +G01 X+4.43 Y-23.371 +G01 X+4.177 Y-21.036 +G01 X+4.189 Y-18.807 +G01 X+4.449 Y-16.587 +G01 X+4.957 Y-14.392 +G01 X+5.728 Y-12.195 +G01 X+6.752 Y-10.056 +G01 X+7.992 Y-8.042 +G01 X+10.044 Y-6.772 +G01 X+12.285 Y-5.712 +G01 X+14.466 Y-4.963 +G01 X+16.638 Y-4.473 +G01 X+18.967 Y-4.218 +G01 X+21.19 Y-4.23 +G01 X+23.404 Y-4.492 +G01 X+25.592 Y-5.001 +G01 X+27.78 Y-5.775 +G01 X+29.906 Y-6.802 +G01 X+31.906 Y-8.045 +G01 X+33.181 Y-10.088 +G01 X+34.201 Y-12.215 +G01 X+34.993 Y-14.482 +G01 X+35.485 Y-16.647 +G01 X+35.736 Y-18.87 +G01 X+35.733 Y-21.113 +G01 X+35.477 Y-23.334 +G01 X+34.978 Y-25.495 +G01 X+34.218 Y-27.658 +G01 X+33.144 Y-29.873 +G01 X+31.902 Y-31.854 +G01 X+29.88 Y-33.127 +G01 X+27.664 Y-34.193 +G01 X+25.502 Y-34.949 +G01 X+23.344 Y-35.443 +G01 X+21.028 Y-35.7 +G01 X+18.816 Y-35.688 +G01 X+16.571 Y-35.416 +G01 X+14.441 Y-34.91 +G01 X+12.272 Y-34.13 +G01 X+10.17 Y-33.097 +G01 X+8.199 Y-31.848 +G01 X+6.924 Y-29.843 +G01 X+5.854 Y-27.639 +G01 X+5.096 Y-25.485 +G01 X+4.599 Y-23.335 +G01 X+4.341 Y-21.025 +G01 X+4.353 Y-18.82 +G01 X+4.626 Y-16.581 +G01 X+5.134 Y-14.458 +G01 X+5.917 Y-12.298 +G01 X+6.953 Y-10.208 +G01 X+8.205 Y-8.251 +G01 X+10.195 Y-6.974 +G01 X+12.387 Y-5.901 +G01 X+14.531 Y-5.14 +G01 X+16.674 Y-4.641 +G01 X+18.977 Y-4.382 +G01 X+21.177 Y-4.394 +G01 X+23.41 Y-4.668 +G01 X+25.526 Y-5.178 +G01 X+27.676 Y-5.964 +G01 X+29.754 Y-7.004 +G01 X+31.697 Y-8.258 +G01 X+32.979 Y-10.239 +G01 X+34.012 Y-12.318 +G01 X+34.816 Y-14.547 +G01 X+35.317 Y-16.684 +G01 X+35.572 Y-18.882 +G01 X+35.57 Y-21.101 +G01 X+35.309 Y-23.297 +G01 X+34.741 Y-25.628 +G01 X+33.948 Y-27.743 +G01 X+32.943 Y-29.722 +G01 X+31.689 Y-31.644 +G01 X+29.729 Y-32.925 +G01 X+27.563 Y-34.005 +G01 X+25.437 Y-34.772 +G01 X+23.308 Y-35.275 +G01 X+21.017 Y-35.536 +G01 X+18.829 Y-35.524 +G01 X+16.609 Y-35.248 +G01 X+14.508 Y-34.733 +G01 X+12.376 Y-33.942 +G01 X+10.322 Y-32.896 +G01 X+8.408 Y-31.635 +G01 X+7.125 Y-29.691 +G01 X+6.042 Y-27.537 +G01 X+5.273 Y-25.421 +G01 X+4.767 Y-23.299 +G01 X+4.505 Y-21.015 +G01 X+4.517 Y-18.832 +G01 X+4.794 Y-16.619 +G01 X+5.311 Y-14.524 +G01 X+6.106 Y-12.402 +G01 X+7.155 Y-10.36 +G01 X+8.42 Y-8.457 +G01 X+8.569 Y-8.337 +G01 X+10.523 Y-7.073 +G01 X+12.488 Y-6.089 +G01 X+14.596 Y-5.317 +G01 X+16.71 Y-4.81 +G01 X+18.988 Y-4.546 +G01 X+21.165 Y-4.558 +G01 X+23.372 Y-4.837 +G01 X+25.459 Y-5.356 +G01 X+27.572 Y-6.153 +G01 X+29.603 Y-7.205 +G01 X+31.491 Y-8.474 +G01 X+31.61 Y-8.621 +G01 X+32.876 Y-10.56 +G01 X+33.914 Y-12.631 +G01 X+34.697 Y-14.808 +G01 X+35.184 Y-16.924 +G01 X+35.419 Y-19.102 +G01 X+35.384 Y-21.401 +G01 X+35.093 Y-23.507 +G01 X+34.563 Y-25.56 +G01 X+33.759 Y-27.638 +G01 X+32.742 Y-29.57 +G01 X+31.473 Y-31.438 +G01 X+31.328 Y-31.558 +G01 X+29.403 Y-32.826 +G01 X+27.461 Y-33.816 +G01 X+25.372 Y-34.595 +G01 X+23.272 Y-35.106 +G01 X+21.007 Y-35.373 +G01 X+18.842 Y-35.36 +G01 X+16.647 Y-35.079 +G01 X+14.574 Y-34.556 +G01 X+12.48 Y-33.753 +G01 X+10.473 Y-32.695 +G01 X+8.614 Y-31.42 +G01 X+8.495 Y-31.276 +G01 X+7.224 Y-29.367 +G01 X+6.231 Y-27.435 +G01 X+5.45 Y-25.356 +G01 X+4.936 Y-23.262 +G01 X+4.668 Y-21.004 +G01 X+4.681 Y-18.845 +G01 X+4.963 Y-16.656 +G01 X+5.488 Y-14.591 +G01 X+6.294 Y-12.506 +G01 X+7.356 Y-10.511 +G01 X+8.634 Y-8.666 +G01 X+8.776 Y-8.548 +G01 X+10.67 Y-7.274 +G01 X+12.59 Y-6.278 +G01 X+14.66 Y-5.494 +G01 X+16.747 Y-4.978 +G01 X+18.998 Y-4.709 +G01 X+21.152 Y-4.722 +G01 X+23.334 Y-5.005 +G01 X+25.393 Y-5.533 +G01 X+27.468 Y-6.341 +G01 X+29.451 Y-7.406 +G01 X+31.281 Y-8.687 +G01 X+31.512 Y-8.977 +G01 X+32.774 Y-10.873 +G01 X+33.8 Y-12.898 +G01 X+34.521 Y-14.87 +G01 X+35.016 Y-16.958 +G01 X+35.256 Y-19.111 +G01 X+35.219 Y-21.386 +G01 X+34.924 Y-23.467 +G01 X+34.385 Y-25.492 +G01 X+33.569 Y-27.532 +G01 X+32.54 Y-29.419 +G01 X+31.26 Y-31.229 +G01 X+30.973 Y-31.459 +G01 X+29.187 Y-32.667 +G01 X+27.179 Y-33.709 +G01 X+25.217 Y-34.446 +G01 X+23.034 Y-34.974 +G01 X+20.996 Y-35.209 +G01 X+18.855 Y-35.196 +G01 X+16.685 Y-34.91 +G01 X+14.641 Y-34.379 +G01 X+12.583 Y-33.564 +G01 X+10.625 Y-32.493 +G01 X+8.824 Y-31.207 +G01 X+8.481 Y-30.775 +G01 X+7.292 Y-29 +G01 X+6.258 Y-26.974 +G01 X+5.544 Y-25.024 +G01 X+5.068 Y-23.025 +G01 X+4.832 Y-20.994 +G01 X+4.845 Y-18.858 +G01 X+5.132 Y-16.694 +G01 X+5.666 Y-14.657 +G01 X+6.483 Y-12.609 +G01 X+7.557 Y-10.663 +G01 X+8.847 Y-8.876 +G01 X+9.274 Y-8.533 +G01 X+11.035 Y-7.342 +G01 X+13.05 Y-6.305 +G01 X+14.991 Y-5.588 +G01 X+16.984 Y-5.11 +G01 X+19.009 Y-4.873 +G01 X+21.139 Y-4.886 +G01 X+23.296 Y-5.174 +G01 X+25.326 Y-5.71 +G01 X+27.365 Y-6.53 +G01 X+29.299 Y-7.607 +G01 X+31.072 Y-8.9 +G01 X+31.301 Y-9.178 +G01 X+32.574 Y-11.015 +G01 X+33.613 Y-12.993 +G01 X+34.345 Y-14.932 +G01 X+34.848 Y-16.992 +G01 X+35.092 Y-19.12 +G01 X+35.055 Y-21.371 +G01 X+34.755 Y-23.428 +G01 X+34.208 Y-25.423 +G01 X+33.38 Y-27.427 +G01 X+32.339 Y-29.267 +G01 X+31.047 Y-31.019 +G01 X+30.627 Y-31.362 +G01 X+28.894 Y-32.558 +G01 X+26.903 Y-33.602 +G01 X+24.979 Y-34.324 +G01 X+23 Y-34.806 +G01 X+20.986 Y-35.045 +G01 X+18.867 Y-35.032 +G01 X+16.764 Y-34.75 +G01 X+14.782 Y-34.227 +G01 X+12.886 Y-33.471 +G01 X+11.094 Y-32.495 +G01 X+9.289 Y-31.206 +G01 X+8.698 Y-30.587 +G01 X+7.492 Y-28.859 +G01 X+6.445 Y-26.879 +G01 X+5.72 Y-24.963 +G01 X+5.236 Y-22.991 +G01 X+4.996 Y-20.983 +G01 X+5.009 Y-18.87 +G01 X+5.292 Y-16.773 +G01 X+5.818 Y-14.798 +G01 X+6.576 Y-12.911 +G01 X+7.555 Y-11.129 +G01 X+8.847 Y-9.339 +G01 X+9.463 Y-8.751 +G01 X+11.176 Y-7.541 +G01 X+13.144 Y-6.491 +G01 X+15.052 Y-5.764 +G01 X+17.017 Y-5.278 +G01 X+19.019 Y-5.037 +G01 X+21.126 Y-5.05 +G01 X+23.258 Y-5.343 +G01 X+25.26 Y-5.887 +G01 X+27.261 Y-6.719 +G01 X+29.148 Y-7.808 +G01 X+30.863 Y-9.114 +G01 X+31.091 Y-9.38 +G01 X+32.375 Y-11.157 +G01 X+33.351 Y-12.929 +G01 X+34.108 Y-14.806 +G01 X+34.643 Y-16.828 +G01 X+34.917 Y-18.927 +G01 X+34.914 Y-21.053 +G01 X+34.635 Y-23.151 +G01 X+34.094 Y-25.168 +G01 X+33.277 Y-27.149 +G01 X+32.287 Y-28.89 +G01 X+31.047 Y-30.561 +G01 X+30.439 Y-31.145 +G01 X+28.754 Y-32.359 +G01 X+26.809 Y-33.416 +G01 X+24.918 Y-34.148 +G01 X+22.966 Y-34.638 +G01 X+20.976 Y-34.881 +G01 X+18.88 Y-34.868 +G01 X+16.76 Y-34.573 +G01 X+14.847 Y-34.05 +G01 X+12.985 Y-33.283 +G01 X+11.236 Y-32.296 +G01 X+9.489 Y-30.994 +G01 X+8.907 Y-30.389 +G01 X+7.691 Y-28.719 +G01 X+6.631 Y-26.785 +G01 X+5.895 Y-24.903 +G01 X+5.404 Y-22.957 +G01 X+5.16 Y-20.973 +G01 X+5.173 Y-18.883 +G01 X+5.469 Y-16.77 +G01 X+5.994 Y-14.864 +G01 X+6.764 Y-13.01 +G01 X+7.754 Y-11.272 +G01 X+9.058 Y-9.54 +G01 X+9.797 Y-8.846 +G01 X+11.498 Y-7.626 +G01 X+13.399 Y-6.604 +G01 X+15.321 Y-5.874 +G01 X+17.247 Y-5.41 +G01 X+19.213 Y-5.191 +G01 X+21.344 Y-5.232 +G01 X+23.415 Y-5.554 +G01 X+25.362 Y-6.125 +G01 X+27.158 Y-6.908 +G01 X+28.996 Y-8.01 +G01 X+30.654 Y-9.328 +G01 X+30.88 Y-9.582 +G01 X+32.175 Y-11.299 +G01 X+33.163 Y-13.028 +G01 X+33.931 Y-14.871 +G01 X+34.474 Y-16.864 +G01 X+34.753 Y-18.939 +G01 X+34.75 Y-21.041 +G01 X+34.467 Y-23.114 +G01 X+33.947 Y-25.017 +G01 X+33.173 Y-26.878 +G01 X+32.181 Y-28.605 +G01 X+30.951 Y-30.228 +G01 X+30.108 Y-31.049 +G01 X+28.434 Y-32.276 +G01 X+26.714 Y-33.229 +G01 X+24.857 Y-33.973 +G01 X+22.932 Y-34.47 +G01 X+20.965 Y-34.718 +G01 X+18.893 Y-34.704 +G01 X+16.798 Y-34.404 +G01 X+14.913 Y-33.873 +G01 X+13.085 Y-33.096 +G01 X+11.379 Y-32.097 +G01 X+9.821 Y-30.899 +G01 X+9.004 Y-30.06 +G01 X+7.774 Y-28.4 +G01 X+6.817 Y-26.691 +G01 X+6.071 Y-24.842 +G01 X+5.572 Y-22.924 +G01 X+5.323 Y-20.963 +G01 X+5.337 Y-18.896 +G01 X+5.638 Y-16.808 +G01 X+6.171 Y-14.929 +G01 X+6.951 Y-13.11 +G01 X+7.953 Y-11.414 +G01 X+9.154 Y-9.87 +G01 X+10.122 Y-8.942 +G01 X+11.788 Y-7.724 +G01 X+13.49 Y-6.789 +G01 X+15.379 Y-6.048 +G01 X+17.279 Y-5.577 +G01 X+19.222 Y-5.354 +G01 X+21.329 Y-5.396 +G01 X+23.374 Y-5.723 +G01 X+25.292 Y-6.302 +G01 X+27.218 Y-7.185 +G01 X+28.845 Y-8.211 +G01 X+30.444 Y-9.541 +G01 X+30.785 Y-9.912 +G01 X+31.976 Y-11.442 +G01 X+32.975 Y-13.127 +G01 X+33.754 Y-14.936 +G01 X+34.306 Y-16.9 +G01 X+34.589 Y-18.95 +G01 X+34.593 Y-20.937 +G01 X+34.338 Y-22.886 +G01 X+33.829 Y-24.787 +G01 X+33.07 Y-26.612 +G01 X+32.1 Y-28.29 +G01 X+30.856 Y-29.904 +G01 X+29.785 Y-30.953 +G01 X+28.147 Y-32.177 +G01 X+26.464 Y-33.119 +G01 X+24.593 Y-33.864 +G01 X+22.651 Y-34.349 +G01 X+20.774 Y-34.564 +G01 X+18.679 Y-34.521 +G01 X+16.646 Y-34.192 +G01 X+14.742 Y-33.609 +G01 X+12.835 Y-32.72 +G01 X+11.23 Y-31.688 +G01 X+9.768 Y-30.456 +G01 X+8.438 Y-28.921 +G01 X+7.363 Y-27.276 +G01 X+6.483 Y-25.423 +G01 X+5.888 Y-23.556 +G01 X+5.536 Y-21.542 +G01 X+5.464 Y-19.589 +G01 X+5.667 Y-17.555 +G01 X+6.152 Y-15.568 +G01 X+6.858 Y-13.771 +G01 X+7.848 Y-12.003 +G01 X+9.006 Y-10.466 +G01 X+10.307 Y-9.151 +G01 X+11.919 Y-7.921 +G01 X+13.581 Y-6.974 +G01 X+15.436 Y-6.223 +G01 X+17.405 Y-5.727 +G01 X+18.013 Y-5.661 +G01 X+18.12 Y-5.642 +G02 X+28.808 Y-8.506 I+1.88 J-14.358 +G01 X+30.24 Y-9.76 +G00 Z+2.245 +G00 X+41.95 Y+0 +G00 Z-2.755 +G01 Z-3.98 F10000 +G01 X+41.904 Y-40.391 F12000 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-1.091 Y-41.609 +G01 X-1.624 Y-41.069 +G01 X-1.913 Y-40.359 +G01 X-1.949 Y-40.007 +G01 X-1.904 Y+0.391 +G01 X-1.609 Y+1.091 +G01 X-1.069 Y+1.624 +G01 X-0.359 Y+1.913 +G01 X-0.007 Y+1.949 +G01 X+40.391 Y+1.904 +G01 X+40.51 Y+1.87 +G01 X+40.856 Y+1.742 +G01 X+41.132 Y+1.576 +G01 X+41.362 Y+1.381 +G01 X+41.607 Y+1.086 +G01 X+41.73 Y+0.877 +G01 X+41.852 Y+0.574 +G01 X+41.938 Y+0.011 +G01 X+41.879 Y-40.085 +G01 X+41.808 Y-40.515 +G01 X+41.687 Y-40.829 +G01 X+41.527 Y-41.096 +G01 X+41.345 Y-41.311 +G01 X+40.57 Y-41.782 +G01 X+39.568 Y-41.878 +G01 X+8.827 Y-41.858 +G01 X+0 Y-41.821 +G01 X-0.105 Y-41.817 +G01 X-0.498 Y-41.749 +G01 X-0.802 Y-41.633 +G01 X-1.06 Y-41.478 +G01 X-1.276 Y-41.295 +G01 X-1.501 Y-41.024 +G01 X-1.748 Y-40.482 +G01 X-1.816 Y-39.321 +G01 X-1.839 Y-12.901 +G01 X-1.758 Y+0.079 +G01 X-1.691 Y+0.48 +G01 X-1.578 Y+0.775 +G01 X-1.429 Y+1.024 +G01 X-1.259 Y+1.225 +G01 X-0.536 Y+1.665 +G01 X+0.556 Y+1.756 +G01 X+24.506 Y+1.816 +G01 X+35.09 Y+1.706 +G01 X+40 Y+1.699 +G01 X+40.463 Y+1.632 +G01 X+40.747 Y+1.523 +G01 X+40.988 Y+1.379 +G01 X+41.19 Y+1.209 +G01 X+41.404 Y+0.95 +G01 X+41.512 Y+0.768 +G01 X+41.618 Y+0.504 +G01 X+41.694 Y+0.01 +G01 X+41.737 Y-8.827 +G01 X+41.782 Y-23.889 +G01 X+41.635 Y-38.704 +G01 X+41.631 Y-40.072 +G01 X+41.569 Y-40.445 +G01 X+41.465 Y-40.718 +G01 X+41.326 Y-40.949 +G01 X+41.17 Y-41.135 +G01 X+40.499 Y-41.543 +G01 X+39.444 Y-41.629 +G01 X+32.407 Y-41.667 +G01 X+18.704 Y-41.756 +G01 X+6.111 Y-41.603 +G01 X+0 Y-41.568 +G01 X-0.426 Y-41.506 +G01 X-0.689 Y-41.406 +G01 X-0.911 Y-41.273 +G01 X-1.097 Y-41.116 +G01 X-1.29 Y-40.884 +G01 X-1.503 Y-40.419 +G01 X-1.563 Y-39.198 +G01 X-1.602 Y-32.901 +G01 X-1.723 Y-20.432 +G01 X-1.6 Y-8.58 +G01 X-1.506 Y-2.778 +G01 X-1.5 Y+0.065 +G01 X-1.443 Y+0.408 +G01 X-1.347 Y+0.659 +G01 X-1.22 Y+0.872 +G01 X-1.077 Y+1.042 +G01 X-0.462 Y+1.417 +G01 X+0.556 Y+1.498 +G01 X+6.605 Y+1.533 +G01 X+18.333 Y+1.686 +G01 X+29.321 Y+1.593 +G01 X+35.09 Y+1.444 +G01 X+40 Y+1.436 +G01 X+40.389 Y+1.38 +G01 X+40.63 Y+1.289 +G01 X+40.834 Y+1.167 +G01 X+41.001 Y+1.026 +G01 X+41.272 Y+0.657 +G01 X+41.367 Y+0.428 +G01 X+41.432 Y+0.01 +G01 X+41.468 Y-6.39 +G01 X+41.647 Y-17.469 +G01 X+41.576 Y-27.84 +G01 X+41.376 Y-36.481 +G01 X+41.369 Y-40.059 +G01 X+41.318 Y-40.364 +G01 X+41.116 Y-40.789 +G01 X+40.984 Y-40.949 +G01 X+40.425 Y-41.292 +G01 X+39.444 Y-41.367 +G01 X+33.889 Y-41.399 +G01 X+23.642 Y-41.603 +G01 X+13.765 Y-41.562 +G01 X+3.519 Y-41.311 +G01 X+0 Y-41.305 +G01 X-0.352 Y-41.254 +G01 X-0.571 Y-41.171 +G01 X-0.757 Y-41.061 +G01 X-0.912 Y-40.93 +G01 X-1.072 Y-40.738 +G01 X-1.249 Y-40.354 +G01 X-1.3 Y-38.827 +G01 X-1.338 Y-33.889 +G01 X-1.563 Y-23.889 +G01 X-1.532 Y-14.383 +G01 X-1.257 Y-5.123 +G01 X-1.238 Y+0.052 +G01 X-1.191 Y+0.334 +G01 X-1.113 Y+0.542 +G01 X-1.008 Y+0.718 +G01 X-0.891 Y+0.857 +G01 X-0.388 Y+1.166 +G01 X+0.679 Y+1.235 +G01 X+5.864 Y+1.268 +G01 X+15.247 Y+1.515 +G01 X+24.259 Y+1.514 +G01 X+33.125 Y+1.269 +G01 X+35.09 Y+1.182 +G01 X+40 Y+1.174 +G01 X+40.315 Y+1.128 +G01 X+40.507 Y+1.056 +G01 X+40.809 Y+0.843 +G01 X+41.038 Y+0.539 +G01 X+41.116 Y+0.353 +G01 X+41.17 Y+0.01 +G01 X+41.206 Y-5.864 +G01 X+41.471 Y-14.877 +G01 X+41.484 Y-23.642 +G01 X+41.253 Y-32.168 +G01 X+41.115 Y-35.988 +G01 X+41.107 Y-40.045 +G01 X+41.067 Y-40.291 +G01 X+40.904 Y-40.634 +G01 X+40.799 Y-40.764 +G01 X+40.351 Y-41.04 +G01 X+39.198 Y-41.105 +G01 X+34.383 Y-41.133 +G01 X+25.864 Y-41.419 +G01 X+17.469 Y-41.46 +G01 X+9.074 Y-41.251 +G01 X+4.136 Y-41.049 +G01 X+0 Y-41.043 +G01 X-0.272 Y-41.004 +G01 X-0.589 Y-40.854 +G01 X-0.848 Y-40.596 +G01 X-0.995 Y-40.29 +G01 X-1.035 Y-36.975 +G01 X-1.082 Y-34.136 +G01 X-1.378 Y-25.864 +G01 X-1.427 Y-17.84 +G01 X-1.235 Y-9.938 +G01 X-0.983 Y-4.136 +G01 X-0.976 Y+0.038 +G01 X-0.941 Y+0.254 +G01 X-0.798 Y+0.557 +G01 X-0.706 Y+0.671 +G01 X-0.314 Y+0.914 +G01 X+1.049 Y+0.973 +G01 X+5.617 Y+1.007 +G01 X+13.634 Y+1.326 +G01 X+21.667 Y+1.395 +G01 X+29.321 Y+1.216 +G01 X+35.09 Y+0.919 +G01 X+40 Y+0.911 +G01 X+40.235 Y+0.878 +G01 X+40.519 Y+0.745 +G01 X+40.63 Y+0.656 +G01 X+40.803 Y+0.422 +G01 X+40.862 Y+0.286 +G01 X+40.908 Y-0.926 +G01 X+40.945 Y-5.617 +G01 X+41.28 Y-13.42 +G01 X+41.363 Y-20.955 +G01 X+41.203 Y-28.476 +G01 X+40.852 Y-35.741 +G01 X+40.844 Y-40.031 +G01 X+40.815 Y-40.217 +G01 X+40.692 Y-40.48 +G01 X+40.613 Y-40.579 +G01 X+40.277 Y-40.788 +G01 X+38.21 Y-40.841 +G01 X+34.383 Y-40.882 +G01 X+26.728 Y-41.234 +G01 X+19.246 Y-41.329 +G01 X+12.037 Y-41.178 +G01 X+4.91 Y-40.788 +G01 X+0.011 Y-40.78 +G01 X-0.196 Y-40.752 +G01 X-0.435 Y-40.642 +G01 X-0.63 Y-40.451 +G01 X-0.741 Y-40.224 +G01 X-0.819 Y-34.383 +G01 X-1.183 Y-27.022 +G01 X-1.295 Y-19.815 +G01 X-1.157 Y-12.654 +G01 X-0.775 Y-5.617 +G01 X-0.721 Y-3.889 +G01 X-0.686 Y+0.161 +G01 X-0.524 Y+0.472 +G01 X-0.24 Y+0.662 +G01 X+5.617 Y+0.756 +G01 X+12.751 Y+1.133 +G01 X+19.673 Y+1.259 +G01 X+26.58 Y+1.142 +G01 X+33.395 Y+0.784 +G01 X+35.09 Y+0.657 +G01 X+39.983 Y+0.649 +G01 X+40.261 Y+0.587 +G01 X+40.434 Y+0.477 +G01 X+40.6 Y+0.221 +G01 X+40.676 Y-5.37 +G01 X+41.079 Y-12.42 +G01 X+41.224 Y-19.246 +G01 X+41.119 Y-26.139 +G01 X+40.765 Y-32.901 +G01 X+40.595 Y-35.617 +G01 X+40.565 Y-40.125 +G01 X+40.435 Y-40.383 +G01 X+40.204 Y-40.542 +G01 X+34.63 Y-40.617 +G01 X+27.84 Y-41.029 +G01 X+21.181 Y-41.189 +G01 X+14.63 Y-41.107 +G01 X+8.086 Y-40.782 +G01 X+4.383 Y-40.534 +G01 X+0.024 Y-40.528 +G01 X-0.274 Y-40.438 +G01 X-0.42 Y-40.311 +G01 X-0.497 Y-40.161 +G01 X-0.558 Y-34.63 +G01 X-0.988 Y-27.84 +G01 X-1.155 Y-21.296 +G01 X-1.078 Y-14.877 +G01 X-0.749 Y-8.333 +G01 X-0.473 Y-4.383 +G01 X-0.448 Y+0.091 +G01 X-0.349 Y+0.297 +G01 X-0.169 Y+0.425 +G01 X+5.37 Y+0.499 +G01 X+11.79 Y+0.93 +G01 X+18.333 Y+1.119 +G01 X+24.753 Y+1.053 +G01 X+31.173 Y+0.734 +G01 X+35.09 Y+0.413 +G01 X+39.97 Y+0.405 +G01 X+40.24 Y+0.305 +G01 X+40.367 Y+0.151 +G01 X+40.439 Y-5.37 +G01 X+40.887 Y-11.79 +G01 X+41.081 Y-18.086 +G01 X+41.03 Y-24.259 +G01 X+40.726 Y-30.556 +G01 X+40.347 Y-35.494 +G01 X+40.304 Y-40.104 +G01 X+40.258 Y-40.215 +G01 X+40.132 Y-40.304 +G01 X+34.63 Y-40.375 +G01 X+28.21 Y-40.843 +G01 X+21.924 Y-41.045 +G01 X+15.741 Y-40.992 +G01 X+9.703 Y-40.694 +G01 X+4.506 Y-40.281 +G01 X+0.038 Y-40.274 +G01 X-0.182 Y-40.176 +G01 X-0.252 Y-40.097 +G01 X-0.311 Y-34.63 +G01 X-0.783 Y-28.476 +G01 X-1.002 Y-22.407 +G01 X-0.971 Y-16.358 +G01 X-0.695 Y-10.432 +G01 X-0.216 Y-4.506 +G01 X-0.169 Y+0.05 +G01 X-0.096 Y+0.178 +G01 X+5.37 Y+0.247 +G01 X+11.524 Y+0.738 +G01 X+17.469 Y+0.964 +G01 X+23.395 Y+0.94 +G01 X+29.321 Y+0.664 +G01 X+35.083 Y+0.151 +G01 X+39.876 Y+0.144 +G01 X+39.982 Y+0.101 +G01 X+40.101 Y-0.018 +G01 X+40.145 Y-0.123 +G01 X+40.187 Y-5.37 +G01 X+40.676 Y-11.186 +G01 X+40.922 Y-16.975 +G01 X+40.923 Y-22.781 +G01 X+40.682 Y-28.476 +G01 X+40.177 Y-34.383 +G01 X+40.098 Y-35.617 +G01 X+40.093 Y-39.876 +G01 X+40.049 Y-39.982 +G01 X+39.877 Y-40.093 +G01 X+34.63 Y-40.137 +G01 X+28.704 Y-40.648 +G01 X+22.781 Y-40.898 +G01 X+16.975 Y-40.888 +G01 X+11.296 Y-40.632 +G01 X+5.617 Y-40.128 +G01 X+4.383 Y-40.047 +G01 X+0.124 Y-40.041 +G01 X+0.018 Y-39.997 +G01 X-0.042 Y-39.877 +G01 X-0.087 Y-34.63 +G01 X-0.595 Y-28.951 +G01 X-0.856 Y-23.324 +G01 X-0.876 Y-17.761 +G01 X-0.652 Y-12.16 +G01 X-0.187 Y-6.605 +G01 X+0.004 Y-4.513 +G01 X+0.01 Y-0.159 +G01 X+0.159 Y-0.009 +G01 X+5.37 Y+0.037 +G01 X+11.049 Y+0.559 +G01 X+16.605 Y+0.826 +G01 X+22.16 Y+0.849 +G01 X+27.84 Y+0.618 +G01 X+33.395 Y+0.14 +G01 X+35.081 Y-0.055 +G01 X+39.753 Y-0.063 +G01 X+39.859 Y-0.106 +G01 X+39.938 Y-0.247 +G01 X+39.985 Y-5.37 +G01 X+40.514 Y-10.96 +G01 X+40.794 Y-16.605 +G01 X+40.817 Y-22.16 +G01 X+40.594 Y-27.593 +G01 X+40.113 Y-33.148 +G01 X+39.884 Y-35.487 +G01 X+39.877 Y-39.728 +G01 X+39.728 Y-39.877 +G01 X+34.636 Y-39.926 +G01 X+29.198 Y-40.459 +G01 X+23.642 Y-40.752 +G01 X+18.086 Y-40.788 +G01 X+12.654 Y-40.57 +G01 X+7.355 Y-40.115 +G01 X+4.514 Y-39.823 +G01 X+0.371 Y-39.816 +G01 X+0.265 Y-39.772 +G01 X+0.184 Y-39.63 +G01 X+0.134 Y-34.636 +G01 X-0.415 Y-29.198 +G01 X-0.71 Y-23.889 +G01 X-0.762 Y-18.618 +G01 X-0.564 Y-13.194 +G01 X-0.115 Y-7.84 +G01 X+0.238 Y-4.638 +G01 X+0.245 Y-0.395 +G01 X+0.395 Y-0.245 +G01 X+5.116 Y-0.224 +G01 X+10.556 Y+0.352 +G01 X+15.813 Y+0.664 +G01 X+21.049 Y+0.732 +G01 X+26.235 Y+0.559 +G01 X+31.42 Y+0.143 +G01 X+35.081 Y-0.298 +G01 X+39.506 Y-0.306 +G01 X+39.612 Y-0.35 +G01 X+39.694 Y-0.494 +G01 X+39.716 Y-5.116 +G01 X+40.298 Y-10.432 +G01 X+40.626 Y-15.741 +G01 X+40.7 Y-20.955 +G01 X+40.527 Y-26.139 +G01 X+40.107 Y-31.296 +G01 X+39.64 Y-35.362 +G01 X+39.633 Y-39.484 +G01 X+39.484 Y-39.633 +G01 X+34.885 Y-39.656 +G01 X+29.725 Y-40.239 +G01 X+24.507 Y-40.581 +G01 X+19.246 Y-40.669 +G01 X+14.012 Y-40.498 +G01 X+8.827 Y-40.072 +G01 X+4.638 Y-39.58 +G01 X+0.618 Y-39.572 +G01 X+0.512 Y-39.528 +G01 X+0.428 Y-39.382 +G01 X+0.435 Y-35.099 +G01 X-0.173 Y-29.951 +G01 X-0.535 Y-24.753 +G01 X-0.638 Y-19.568 +G01 X-0.482 Y-14.383 +G01 X-0.08 Y-9.353 +G01 X+0.481 Y-4.638 +G01 X+0.489 Y-0.639 +G01 X+0.639 Y-0.489 +G01 X+4.901 Y-0.496 +G01 X+9.938 Y+0.118 +G01 X+15 Y+0.487 +G01 X+20.185 Y+0.605 +G01 X+25.123 Y+0.472 +G01 X+30.062 Y+0.094 +G01 X+35.081 Y-0.542 +G01 X+39.301 Y-0.555 +G01 X+39.45 Y-0.705 +G01 X+39.444 Y-4.901 +G01 X+40.072 Y-9.938 +G01 X+40.445 Y-14.877 +G01 X+40.573 Y-19.815 +G01 X+40.454 Y-24.753 +G01 X+40.083 Y-29.725 +G01 X+39.467 Y-34.63 +G01 X+39.396 Y-35.494 +G01 X+39.39 Y-39.24 +G01 X+39.24 Y-39.39 +G01 X+35.1 Y-39.383 +G01 X+30.062 Y-40.027 +G01 X+25.123 Y-40.409 +G01 X+20.1 Y-40.54 +G01 X+15.247 Y-40.418 +G01 X+10.432 Y-40.054 +G01 X+5.617 Y-39.446 +G01 X+4.638 Y-39.336 +G01 X+0.821 Y-39.322 +G01 X+0.671 Y-39.171 +G01 X+0.678 Y-35.1 +G01 X+0.019 Y-30.062 +G01 X-0.372 Y-25.123 +G01 X-0.506 Y-20.327 +G01 X-0.395 Y-15.494 +G01 X-0.035 Y-10.679 +G01 X+0.575 Y-5.864 +G01 X+0.725 Y-4.639 +G01 X+0.732 Y-0.882 +G01 X+0.882 Y-0.732 +G01 X+4.9 Y-0.739 +G01 X+9.691 Y-0.091 +G01 X+14.623 Y+0.321 +G01 X+19.568 Y+0.473 +G01 X+24.506 Y+0.359 +G01 X+29.321 Y-0.009 +G01 X+34.136 Y-0.632 +G01 X+35.078 Y-0.785 +G01 X+39.058 Y-0.802 +G01 X+39.207 Y-0.952 +G01 X+39.201 Y-4.9 +G01 X+39.864 Y-9.703 +G01 X+40.285 Y-14.63 +G01 X+40.439 Y-19.473 +G01 X+40.339 Y-24.187 +G01 X+39.986 Y-28.951 +G01 X+39.388 Y-33.642 +G01 X+39.153 Y-35.36 +G01 X+39.147 Y-38.996 +G01 X+38.996 Y-39.146 +G01 X+35.101 Y-39.14 +G01 X+30.309 Y-39.817 +G01 X+25.617 Y-40.234 +G01 X+20.955 Y-40.403 +G01 X+16.358 Y-40.329 +G01 X+11.543 Y-39.992 +G01 X+6.875 Y-39.411 +G01 X+4.64 Y-39.093 +G01 X+1.064 Y-39.075 +G01 X+0.915 Y-38.925 +G01 X+0.921 Y-35.101 +G01 X+0.229 Y-30.309 +G01 X-0.197 Y-25.617 +G01 X-0.369 Y-20.955 +G01 X-0.294 Y-16.358 +G01 X+0.025 Y-11.79 +G01 X+0.608 Y-7.099 +G01 X+0.968 Y-4.64 +G01 X+0.975 Y-1.125 +G01 X+1.126 Y-0.976 +G01 X+4.899 Y-0.982 +G01 X+9.691 Y-0.275 +G01 X+14.383 Y+0.16 +G01 X+19.045 Y+0.336 +G01 X+23.642 Y+0.259 +G01 X+28.21 Y-0.067 +G01 X+32.901 Y-0.661 +G01 X+35.078 Y-1.028 +G01 X+38.814 Y-1.049 +G01 X+38.964 Y-1.199 +G01 X+38.958 Y-4.899 +G01 X+39.649 Y-9.444 +G01 X+40.098 Y-14.012 +G01 X+40.297 Y-18.618 +G01 X+40.24 Y-23.272 +G01 X+39.929 Y-27.84 +G01 X+39.362 Y-32.407 +G01 X+38.91 Y-35.359 +G01 X+38.903 Y-38.753 +G01 X+38.753 Y-38.903 +G01 X+35.102 Y-38.897 +G01 X+30.556 Y-39.602 +G01 X+25.864 Y-40.069 +G01 X+21.296 Y-40.266 +G01 X+16.605 Y-40.201 +G01 X+12.16 Y-39.888 +G01 X+7.593 Y-39.31 +G01 X+4.641 Y-38.849 +G01 X+1.307 Y-38.828 +G01 X+1.158 Y-38.678 +G01 X+1.164 Y-35.102 +G01 X+0.445 Y-30.556 +G01 X-0.011 Y-26.139 +G01 X-0.226 Y-21.667 +G01 X-0.19 Y-17.222 +G01 X+0.105 Y-12.654 +G01 X+0.665 Y-8.086 +G01 X+1.212 Y-4.641 +G01 X+1.219 Y-1.369 +G01 X+1.369 Y-1.219 +G01 X+4.898 Y-1.225 +G01 X+9.444 Y-0.491 +G01 X+13.861 Y-0.027 +G01 X+18.333 Y+0.192 +G01 X+22.778 Y+0.156 +G01 X+27.099 Y-0.122 +G01 X+31.667 Y-0.678 +G01 X+35.078 Y-1.272 +G01 X+38.571 Y-1.295 +G01 X+38.72 Y-1.446 +G01 X+38.715 Y-4.898 +G01 X+39.449 Y-9.353 +G01 X+39.928 Y-13.765 +G01 X+40.153 Y-18.086 +G01 X+40.135 Y-22.407 +G01 X+39.873 Y-26.728 +G01 X+39.365 Y-31.049 +G01 X+38.667 Y-35.359 +G01 X+38.66 Y-38.51 +G01 X+38.51 Y-38.66 +G01 X+35.103 Y-38.654 +G01 X+30.556 Y-39.416 +G01 X+26.139 Y-39.898 +G01 X+21.667 Y-40.125 +G01 X+17.222 Y-40.088 +G01 X+12.901 Y-39.8 +G01 X+8.58 Y-39.261 +G01 X+4.641 Y-38.606 +G01 X+1.55 Y-38.581 +G01 X+1.401 Y-38.431 +G01 X+1.407 Y-35.103 +G01 X+0.667 Y-30.802 +G01 X+0.168 Y-26.481 +G01 X-0.08 Y-22.16 +G01 X-0.076 Y-17.84 +G01 X+0.182 Y-13.519 +G01 X+0.713 Y-9.074 +G01 X+1.455 Y-4.642 +G01 X+1.462 Y-1.612 +G01 X+1.612 Y-1.462 +G01 X+4.897 Y-1.468 +G01 X+9.198 Y-0.714 +G01 X+13.519 Y-0.207 +G01 X+17.84 Y+0.046 +G01 X+22.16 Y+0.042 +G01 X+26.481 Y-0.22 +G01 X+30.647 Y-0.718 +G01 X+34.877 Y-1.472 +G01 X+35.075 Y-1.514 +G01 X+38.328 Y-1.542 +G01 X+38.477 Y-1.692 +G01 X+38.472 Y-4.897 +G01 X+39.262 Y-9.353 +G01 X+39.777 Y-13.765 +G01 X+40.019 Y-18.086 +G01 X+40 Y-22.407 +G01 X+39.719 Y-26.728 +G01 X+39.173 Y-31.049 +G01 X+38.423 Y-35.358 +G01 X+38.416 Y-38.267 +G01 X+38.266 Y-38.416 +G01 X+35.104 Y-38.411 +G01 X+30.802 Y-39.192 +G01 X+26.481 Y-39.717 +G01 X+22.16 Y-39.979 +G01 X+17.84 Y-39.975 +G01 X+13.519 Y-39.704 +G01 X+9.353 Y-39.188 +G01 X+5.123 Y-38.407 +G01 X+4.925 Y-38.364 +G01 X+1.794 Y-38.335 +G01 X+1.645 Y-38.184 +G01 X+1.65 Y-35.104 +G01 X+0.856 Y-30.802 +G01 X+0.321 Y-26.481 +G01 X+0.055 Y-22.16 +G01 X+0.059 Y-17.84 +G01 X+0.312 Y-13.765 +G01 X+0.806 Y-9.703 +G01 X+1.546 Y-5.617 +G01 X+1.697 Y-4.926 +G01 X+1.705 Y-1.855 +G01 X+1.856 Y-1.706 +G01 X+4.896 Y-1.711 +G01 X+9.198 Y-0.903 +G01 X+13.272 Y-0.383 +G01 X+17.469 Y-0.101 +G01 X+21.667 Y-0.078 +G01 X+25.701 Y-0.302 +G01 X+29.815 Y-0.779 +G01 X+33.889 Y-1.5 +G01 X+35.075 Y-1.758 +G01 X+38.085 Y-1.789 +G01 X+38.234 Y-1.939 +G01 X+38.229 Y-4.896 +G01 X+39.03 Y-9.074 +G01 X+39.57 Y-13.194 +G01 X+39.855 Y-17.222 +G01 X+39.897 Y-21.296 +G01 X+39.688 Y-25.377 +G01 X+39.23 Y-29.444 +G01 X+38.494 Y-33.642 +G01 X+38.181 Y-35.074 +G01 X+38.173 Y-38.023 +G01 X+38.023 Y-38.173 +G01 X+35.105 Y-38.168 +G01 X+30.802 Y-39.003 +G01 X+26.728 Y-39.54 +G01 X+22.531 Y-39.831 +G01 X+18.333 Y-39.855 +G01 X+14.299 Y-39.624 +G01 X+10.185 Y-39.131 +G01 X+6.111 Y-38.386 +G01 X+4.926 Y-38.12 +G01 X+2.037 Y-38.088 +G01 X+1.888 Y-37.938 +G01 X+1.893 Y-35.105 +G01 X+1.086 Y-31.049 +G01 X+0.53 Y-27.022 +G01 X+0.224 Y-23.025 +G01 X+0.165 Y-18.951 +G01 X+0.364 Y-14.877 +G01 X+0.84 Y-10.679 +G01 X+1.565 Y-6.605 +G01 X+1.94 Y-4.926 +G01 X+1.949 Y-2.099 +G01 X+1.993 Y-1.993 +G01 X+2.099 Y-1.949 +G01 X+4.895 Y-1.954 +G01 X+8.951 Y-1.134 +G01 X+12.978 Y-0.569 +G01 X+16.975 Y-0.258 +G01 X+21.049 Y-0.199 +G01 X+25.123 Y-0.4 +G01 X+29.04 Y-0.842 +G01 X+33.125 Y-1.563 +G01 X+35.075 Y-2.001 +G01 X+37.842 Y-2.035 +G01 X+37.991 Y-2.186 +G01 X+37.987 Y-4.895 +G01 X+38.841 Y-9.074 +G01 X+39.417 Y-13.194 +G01 X+39.72 Y-17.222 +G01 X+39.767 Y-21.181 +G01 X+39.566 Y-25.123 +G01 X+39.095 Y-29.198 +G01 X+38.382 Y-33.148 +G01 X+37.943 Y-35.074 +G01 X+37.935 Y-37.778 +G01 X+37.891 Y-37.883 +G01 X+37.777 Y-37.935 +G01 X+35.106 Y-37.931 +G01 X+31.049 Y-38.775 +G01 X+27.022 Y-39.357 +G01 X+23.025 Y-39.678 +G01 X+18.951 Y-39.739 +G01 X+14.877 Y-39.532 +G01 X+10.96 Y-39.078 +G01 X+7.099 Y-38.385 +G01 X+4.927 Y-37.886 +G01 X+2.271 Y-37.879 +G01 X+2.122 Y-37.729 +G01 X+2.126 Y-35.106 +G01 X+1.269 Y-31.049 +G01 X+0.679 Y-27.022 +G01 X+0.354 Y-23.025 +G01 X+0.292 Y-18.951 +G01 X+0.502 Y-14.877 +G01 X+0.962 Y-10.96 +G01 X+1.665 Y-7.099 +G01 X+2.17 Y-4.927 +G01 X+2.178 Y-2.346 +G01 X+2.222 Y-2.24 +G01 X+2.346 Y-2.178 +G01 X+4.894 Y-2.182 +G01 X+8.951 Y-1.313 +G01 X+12.978 Y-0.715 +G01 X+16.975 Y-0.385 +G01 X+21.049 Y-0.322 +G01 X+24.828 Y-0.511 +G01 X+28.704 Y-0.951 +G01 X+32.645 Y-1.659 +G01 X+35.073 Y-2.226 +G01 X+37.617 Y-2.233 +G01 X+37.767 Y-2.383 +G01 X+37.763 Y-4.894 +G01 X+38.62 Y-8.827 +G01 X+39.212 Y-12.654 +G01 X+39.565 Y-16.605 +G01 X+39.657 Y-20.432 +G01 X+39.503 Y-24.259 +G01 X+39.1 Y-28.086 +G01 X+38.449 Y-31.914 +G01 X+37.722 Y-35.073 +G01 X+37.715 Y-37.531 +G01 X+37.671 Y-37.636 +G01 X+37.53 Y-37.715 +G01 X+35.106 Y-37.712 +G01 X+31.049 Y-38.603 +G01 X+27.249 Y-39.189 +G01 X+23.395 Y-39.535 +G01 X+19.568 Y-39.629 +G01 X+15.741 Y-39.473 +G01 X+11.79 Y-39.048 +G01 X+7.84 Y-38.355 +G01 X+4.927 Y-37.671 +G01 X+2.486 Y-37.664 +G01 X+2.336 Y-37.514 +G01 X+2.34 Y-35.107 +G01 X+1.438 Y-31.049 +G01 X+0.844 Y-27.249 +G01 X+0.494 Y-23.395 +G01 X+0.399 Y-19.568 +G01 X+0.557 Y-15.741 +G01 X+0.987 Y-11.79 +G01 X+1.688 Y-7.84 +G01 X+2.381 Y-4.926 +G01 X+2.406 Y-2.537 +G01 X+2.556 Y-2.388 +G01 X+4.893 Y-2.391 +G01 X+8.704 Y-1.526 +G01 X+12.654 Y-0.889 +G01 X+16.605 Y-0.523 +G01 X+20.432 Y-0.427 +G01 X+24.259 Y-0.587 +G01 X+28.21 Y-1.022 +G01 X+32.16 Y-1.732 +G01 X+35.073 Y-2.432 +G01 X+37.407 Y-2.439 +G01 X+37.513 Y-2.483 +G01 X+37.561 Y-2.593 +G01 X+37.557 Y-4.893 +G01 X+38.457 Y-8.827 +G01 X+39.077 Y-12.654 +G01 X+39.432 Y-16.358 +G01 X+39.546 Y-20.1 +G01 X+39.41 Y-23.889 +G01 X+39.03 Y-27.593 +G01 X+38.406 Y-31.296 +G01 X+37.516 Y-35.073 +G01 X+37.509 Y-37.359 +G01 X+37.359 Y-37.509 +G01 X+35.107 Y-37.506 +G01 X+31.296 Y-38.392 +G01 X+27.346 Y-39.044 +G01 X+23.642 Y-39.403 +G01 X+19.815 Y-39.518 +G01 X+16.111 Y-39.38 +G01 X+12.42 Y-38.997 +G01 X+8.58 Y-38.34 +G01 X+4.927 Y-37.465 +G01 X+2.716 Y-37.458 +G01 X+2.61 Y-37.414 +G01 X+2.542 Y-37.283 +G01 X+2.546 Y-35.108 +G01 X+1.65 Y-31.296 +G01 X+1.023 Y-27.593 +G01 X+0.643 Y-23.889 +G01 X+0.51 Y-20.1 +G01 X+0.633 Y-16.358 +G01 X+1.004 Y-12.654 +G01 X+1.651 Y-8.827 +G01 X+2.532 Y-5.123 +G01 X+2.585 Y-4.93 +G01 X+2.594 Y-2.744 +G01 X+2.744 Y-2.594 +G01 X+4.892 Y-2.597 +G01 X+8.704 Y-1.691 +G01 X+12.407 Y-1.057 +G01 X+16.111 Y-0.672 +G01 X+19.9 Y-0.538 +G01 X+23.642 Y-0.662 +G01 X+27.346 Y-1.038 +G01 X+31.173 Y-1.692 +G01 X+34.877 Y-2.583 +G01 X+35.071 Y-2.637 +G01 X+37.205 Y-2.654 +G01 X+37.354 Y-2.804 +G01 X+37.351 Y-4.892 +G01 X+38.292 Y-8.827 +G01 X+38.941 Y-12.654 +G01 X+39.312 Y-16.358 +G01 X+39.431 Y-20.1 +G01 X+39.288 Y-23.889 +G01 X+38.889 Y-27.593 +G01 X+38.235 Y-31.296 +G01 X+37.301 Y-35.072 +G01 X+37.294 Y-37.144 +G01 X+37.143 Y-37.293 +G01 X+35.108 Y-37.29 +G01 X+31.296 Y-38.218 +G01 X+27.593 Y-38.867 +G01 X+23.889 Y-39.261 +G01 X+20.1 Y-39.398 +G01 X+16.358 Y-39.27 +G01 X+12.654 Y-38.884 +G01 X+8.827 Y-38.212 +G01 X+5.123 Y-37.297 +G01 X+4.93 Y-37.242 +G01 X+2.917 Y-37.223 +G01 X+2.768 Y-37.073 +G01 X+2.771 Y-35.108 +G01 X+1.831 Y-31.296 +G01 X+1.174 Y-27.593 +G01 X+0.774 Y-23.889 +G01 X+0.636 Y-20.327 +G01 X+0.747 Y-16.605 +G01 X+1.121 Y-12.901 +G01 X+1.784 Y-9.074 +G01 X+2.693 Y-5.37 +G01 X+2.819 Y-4.93 +G01 X+2.828 Y-2.978 +G01 X+2.979 Y-2.829 +G01 X+4.891 Y-2.832 +G01 X+8.704 Y-1.88 +G01 X+12.407 Y-1.214 +G01 X+16.111 Y-0.809 +G01 X+19.673 Y-0.669 +G01 X+23.395 Y-0.782 +G01 X+27.099 Y-1.161 +G01 X+30.647 Y-1.773 +G01 X+34.383 Y-2.682 +G01 X+35.07 Y-2.88 +G01 X+36.962 Y-2.9 +G01 X+37.111 Y-3.05 +G01 X+37.108 Y-4.891 +G01 X+38.046 Y-8.58 +G01 X+38.71 Y-12.16 +G01 X+39.127 Y-15.741 +G01 X+39.294 Y-19.246 +G01 X+39.221 Y-22.781 +G01 X+38.897 Y-26.366 +G01 X+38.321 Y-29.951 +G01 X+37.464 Y-33.642 +G01 X+37.059 Y-35.07 +G01 X+37.05 Y-36.9 +G01 X+36.9 Y-37.05 +G01 X+35.109 Y-37.047 +G01 X+31.296 Y-38.024 +G01 X+27.593 Y-38.706 +G01 X+23.889 Y-39.121 +G01 X+20.327 Y-39.265 +G01 X+16.605 Y-39.149 +G01 X+12.901 Y-38.761 +G01 X+9.353 Y-38.133 +G01 X+5.617 Y-37.201 +G01 X+4.93 Y-36.998 +G01 X+3.16 Y-36.977 +G01 X+3.011 Y-36.826 +G01 X+3.014 Y-35.109 +G01 X+2.025 Y-31.296 +G01 X+1.334 Y-27.593 +G01 X+0.914 Y-23.889 +G01 X+0.768 Y-20.327 +G01 X+0.885 Y-16.605 +G01 X+1.279 Y-12.901 +G01 X+1.914 Y-9.353 +G01 X+2.787 Y-5.864 +G01 X+3.062 Y-4.931 +G01 X+3.072 Y-3.222 +G01 X+3.222 Y-3.072 +G01 X+4.89 Y-3.075 +G01 X+8.418 Y-2.139 +G01 X+12.16 Y-1.412 +G01 X+15.741 Y-0.979 +G01 X+19.321 Y-0.804 +G01 X+22.778 Y-0.881 +G01 X+26.235 Y-1.2 +G01 X+29.815 Y-1.787 +G01 X+33.395 Y-2.635 +G01 X+35.07 Y-3.124 +G01 X+36.719 Y-3.147 +G01 X+36.868 Y-3.297 +G01 X+36.865 Y-4.89 +G01 X+37.85 Y-8.58 +G01 X+38.548 Y-12.16 +G01 X+38.986 Y-15.741 +G01 X+39.161 Y-19.246 +G01 X+39.085 Y-22.781 +G01 X+38.745 Y-26.366 +G01 X+38.14 Y-29.951 +G01 X+37.24 Y-33.642 +G01 X+36.816 Y-35.069 +G01 X+36.807 Y-36.657 +G01 X+36.657 Y-36.807 +G01 X+35.11 Y-36.804 +G01 X+31.582 Y-37.762 +G01 X+28.086 Y-38.467 +G01 X+24.507 Y-38.928 +G01 X+20.955 Y-39.125 +G01 X+17.469 Y-39.065 +G01 X+14.012 Y-38.756 +G01 X+10.432 Y-38.174 +G01 X+6.875 Y-37.329 +G01 X+4.93 Y-36.755 +G01 X+3.402 Y-36.73 +G01 X+3.254 Y-36.58 +G01 X+3.257 Y-35.11 +G01 X+2.287 Y-31.582 +G01 X+1.574 Y-28.086 +G01 X+1.108 Y-24.507 +G01 X+0.908 Y-20.955 +G01 X+0.969 Y-17.469 +G01 X+1.281 Y-14.012 +G01 X+1.871 Y-10.432 +G01 X+2.725 Y-6.875 +G01 X+3.306 Y-4.931 +G01 X+3.315 Y-3.465 +G01 X+3.465 Y-3.315 +G01 X+4.889 Y-3.318 +G01 X+8.418 Y-2.337 +G01 X+11.914 Y-1.616 +G01 X+15.493 Y-1.143 +G01 X+19.045 Y-0.942 +G01 X+22.531 Y-1.003 +G01 X+25.988 Y-1.319 +G01 X+29.568 Y-1.915 +G01 X+33.125 Y-2.779 +G01 X+35.07 Y-3.367 +G01 X+36.476 Y-3.393 +G01 X+36.624 Y-3.543 +G01 X+36.622 Y-4.889 +G01 X+37.593 Y-8.333 +G01 X+38.323 Y-11.79 +G01 X+38.79 Y-15.172 +G01 X+39.015 Y-18.618 +G01 X+38.982 Y-22.16 +G01 X+38.69 Y-25.617 +G01 X+38.116 Y-29.198 +G01 X+37.298 Y-32.654 +G01 X+36.572 Y-35.069 +G01 X+36.564 Y-36.414 +G01 X+36.414 Y-36.564 +G01 X+35.111 Y-36.561 +G01 X+31.582 Y-37.565 +G01 X+28.086 Y-38.303 +G01 X+24.507 Y-38.786 +G01 X+20.955 Y-38.992 +G01 X+17.469 Y-38.93 +G01 X+14.012 Y-38.606 +G01 X+10.432 Y-37.997 +G01 X+6.875 Y-37.112 +G01 X+4.93 Y-36.511 +G01 X+3.645 Y-36.484 +G01 X+3.498 Y-36.334 +G01 X+3.5 Y-35.111 +G01 X+2.485 Y-31.582 +G01 X+1.76 Y-28.21 +G01 X+1.274 Y-24.753 +G01 X+1.049 Y-21.296 +G01 X+1.085 Y-17.84 +G01 X+1.384 Y-14.383 +G01 X+1.94 Y-10.96 +G01 X+2.738 Y-7.593 +G01 X+3.549 Y-4.931 +G01 X+3.558 Y-3.708 +G01 X+3.708 Y-3.558 +G01 X+4.888 Y-3.561 +G01 X+8.418 Y-2.534 +G01 X+11.79 Y-1.801 +G01 X+15.247 Y-1.31 +G01 X+18.704 Y-1.082 +G01 X+22.16 Y-1.119 +G01 X+25.617 Y-1.421 +G01 X+29.04 Y-1.983 +G01 X+32.407 Y-2.79 +G01 X+35.07 Y-3.611 +G01 X+36.234 Y-3.639 +G01 X+36.381 Y-3.789 +G01 X+36.379 Y-4.888 +G01 X+37.395 Y-8.333 +G01 X+38.158 Y-11.79 +G01 X+38.646 Y-15.172 +G01 X+38.882 Y-18.618 +G01 X+38.858 Y-21.924 +G01 X+38.572 Y-25.377 +G01 X+38.042 Y-28.704 +G01 X+37.224 Y-32.168 +G01 X+36.329 Y-35.068 +G01 X+36.321 Y-36.171 +G01 X+36.17 Y-36.32 +G01 X+35.112 Y-36.318 +G01 X+31.582 Y-37.367 +G01 X+28.21 Y-38.116 +G01 X+24.753 Y-38.619 +G01 X+21.296 Y-38.851 +G01 X+17.84 Y-38.814 +G01 X+14.383 Y-38.505 +G01 X+10.96 Y-37.931 +G01 X+7.593 Y-37.106 +G01 X+4.93 Y-36.268 +G01 X+3.887 Y-36.238 +G01 X+3.741 Y-36.088 +G01 X+3.742 Y-35.112 +G01 X+2.682 Y-31.582 +G01 X+1.925 Y-28.21 +G01 X+1.417 Y-24.753 +G01 X+1.182 Y-21.296 +G01 X+1.22 Y-17.84 +G01 X+1.532 Y-14.383 +G01 X+2.112 Y-10.96 +G01 X+2.946 Y-7.593 +G01 X+3.793 Y-4.932 +G01 X+3.801 Y-3.951 +G01 X+3.952 Y-3.802 +G01 X+4.888 Y-3.803 +G01 X+8.418 Y-2.732 +G01 X+11.79 Y-1.967 +G01 X+15.247 Y-1.453 +G01 X+18.704 Y-1.215 +G01 X+22.16 Y-1.253 +G01 X+25.617 Y-1.569 +G01 X+29.04 Y-2.155 +G01 X+32.407 Y-2.998 +G01 X+35.07 Y-3.854 +G01 X+35.992 Y-3.885 +G01 X+36.138 Y-4.035 +G01 X+36.137 Y-4.887 +G01 X+37.197 Y-8.333 +G01 X+37.993 Y-11.79 +G01 X+38.502 Y-15.172 +G01 X+38.748 Y-18.618 +G01 X+38.724 Y-21.924 +G01 X+38.457 Y-25.123 +G01 X+37.919 Y-28.476 +G01 X+37.121 Y-31.809 +G01 X+36.086 Y-35.068 +G01 X+36.077 Y-35.926 +G01 X+36.033 Y-36.031 +G01 X+35.925 Y-36.077 +G01 X+35.113 Y-36.076 +G01 X+31.809 Y-37.108 +G01 X+28.476 Y-37.899 +G01 X+25.123 Y-38.432 +G01 X+21.924 Y-38.694 +G01 X+18.704 Y-38.716 +G01 X+15.494 Y-38.491 +G01 X+12.16 Y-38.001 +G01 X+8.827 Y-37.245 +G01 X+5.37 Y-36.181 +G01 X+4.932 Y-36.026 +G01 X+4.129 Y-35.992 +G01 X+3.984 Y-35.842 +G01 X+3.985 Y-35.113 +G01 X+2.942 Y-31.809 +G01 X+2.143 Y-28.476 +G01 X+1.604 Y-25.123 +G01 X+1.339 Y-21.924 +G01 X+1.318 Y-18.704 +G01 X+1.544 Y-15.494 +G01 X+2.04 Y-12.16 +G01 X+2.803 Y-8.827 +G01 X+3.878 Y-5.37 +G01 X+4.034 Y-4.934 +G01 X+4.045 Y-4.198 +G01 X+4.089 Y-4.092 +G01 X+4.198 Y-4.045 +G01 X+4.886 Y-4.046 +G01 X+8.191 Y-2.993 +G01 X+11.524 Y-2.185 +G01 X+14.877 Y-1.64 +G01 X+18.076 Y-1.373 +G01 X+21.296 Y-1.351 +G01 X+24.506 Y-1.58 +G01 X+27.84 Y-2.08 +G01 X+31.173 Y-2.852 +G01 X+34.383 Y-3.85 +G01 X+35.065 Y-4.095 +G01 X+35.745 Y-4.105 +G01 X+35.895 Y-4.255 +G01 X+35.894 Y-4.886 +G01 X+36.999 Y-8.333 +G01 X+37.778 Y-11.543 +G01 X+38.325 Y-14.877 +G01 X+38.596 Y-18.086 +G01 X+38.617 Y-21.296 +G01 X+38.386 Y-24.507 +G01 X+37.882 Y-27.84 +G01 X+37.137 Y-31.049 +G01 X+36.096 Y-34.383 +G01 X+35.849 Y-35.065 +G01 X+35.839 Y-35.679 +G01 X+35.795 Y-35.785 +G01 X+35.678 Y-35.839 +G01 X+35.114 Y-35.838 +G01 X+31.809 Y-36.912 +G01 X+28.476 Y-37.735 +G01 X+25.123 Y-38.291 +G01 X+21.924 Y-38.564 +G01 X+18.704 Y-38.586 +G01 X+15.494 Y-38.354 +G01 X+12.16 Y-37.844 +G01 X+8.827 Y-37.059 +G01 X+5.617 Y-36.043 +G01 X+4.935 Y-35.793 +G01 X+4.367 Y-35.783 +G01 X+4.218 Y-35.632 +G01 X+4.219 Y-35.114 +G01 X+3.134 Y-31.809 +G01 X+2.303 Y-28.476 +G01 X+1.742 Y-25.123 +G01 X+1.467 Y-21.924 +G01 X+1.444 Y-18.704 +G01 X+1.679 Y-15.494 +G01 X+2.193 Y-12.16 +G01 X+2.986 Y-8.827 +G01 X+4.011 Y-5.617 +G01 X+4.264 Y-4.935 +G01 X+4.274 Y-4.445 +G01 X+4.318 Y-4.339 +G01 X+4.445 Y-4.274 +G01 X+4.886 Y-4.275 +G01 X+8.191 Y-3.18 +G01 X+11.524 Y-2.342 +G01 X+14.877 Y-1.776 +G01 X+18.076 Y-1.498 +G01 X+21.296 Y-1.475 +G01 X+24.506 Y-1.712 +G01 X+27.84 Y-2.231 +G01 X+31.173 Y-3.031 +G01 X+34.383 Y-4.065 +G01 X+35.065 Y-4.32 +G01 X+35.521 Y-4.329 +G01 X+35.67 Y-4.48 +G01 Y-4.886 +G01 X+36.816 Y-8.333 +G01 X+37.625 Y-11.543 +G01 X+38.192 Y-14.877 +G01 X+38.473 Y-18.086 +G01 X+38.499 Y-21.181 +G01 X+38.257 Y-24.507 +G01 X+37.734 Y-27.84 +G01 X+36.963 Y-31.049 +G01 X+35.885 Y-34.383 +G01 X+35.629 Y-35.064 +G01 X+35.619 Y-35.432 +G01 X+35.575 Y-35.538 +G01 X+35.432 Y-35.619 +G01 X+35.115 Y-35.618 +G01 X+31.914 Y-36.701 +G01 X+28.704 Y-37.536 +G01 X+25.377 Y-38.127 +G01 X+22.16 Y-38.432 +G01 X+18.951 Y-38.474 +G01 X+15.741 Y-38.255 +G01 X+12.42 Y-37.75 +G01 X+9.074 Y-36.957 +G01 X+5.864 Y-35.926 +G01 X+4.935 Y-35.577 +G01 X+4.583 Y-35.568 +G01 X+4.433 Y-35.417 +G01 Y-35.115 +G01 X+3.342 Y-31.914 +G01 X+2.5 Y-28.704 +G01 X+1.904 Y-25.377 +G01 X+1.596 Y-22.16 +G01 X+1.554 Y-18.951 +G01 X+1.775 Y-15.741 +G01 X+2.284 Y-12.42 +G01 X+3.083 Y-9.074 +G01 X+4.123 Y-5.864 +G01 X+4.475 Y-4.932 +G01 X+4.499 Y-4.626 +G01 X+4.649 Y-4.484 +G01 X+4.885 Y-4.485 +G01 X+8.086 Y-3.384 +G01 X+11.296 Y-2.535 +G01 X+14.623 Y-1.935 +G01 X+17.84 Y-1.625 +G01 X+21.049 Y-1.582 +G01 X+24.259 Y-1.805 +G01 X+27.346 Y-2.271 +G01 X+30.556 Y-3.02 +G01 X+33.889 Y-4.081 +G01 X+35.064 Y-4.526 +G01 X+35.308 Y-4.535 +G01 X+35.414 Y-4.579 +G01 X+35.464 Y-4.692 +G01 Y-4.885 +G01 X+36.573 Y-8.086 +G01 X+37.429 Y-11.296 +G01 X+38.035 Y-14.63 +G01 X+38.342 Y-17.761 +G01 X+38.392 Y-20.955 +G01 X+38.173 Y-24.187 +G01 X+37.713 Y-27.249 +G01 X+37.008 Y-30.309 +G01 X+36.048 Y-33.395 +G01 X+35.423 Y-35.065 +G01 X+35.413 Y-35.263 +G01 X+35.263 Y-35.413 +G01 X+35.116 +G01 X+31.914 Y-36.531 +G01 X+28.704 Y-37.393 +G01 X+25.617 Y-37.969 +G01 X+22.531 Y-38.296 +G01 X+19.473 Y-38.373 +G01 X+16.358 Y-38.2 +G01 X+13.194 Y-37.762 +G01 X+9.938 Y-37.036 +G01 X+6.605 Y-36.002 +G01 X+4.936 Y-35.371 +G01 X+4.815 Y-35.362 +G01 X+4.709 Y-35.318 +G01 X+4.639 Y-35.185 +G01 X+4.63 Y-35.065 +G01 X+3.512 Y-31.914 +G01 X+2.643 Y-28.704 +G01 X+2.062 Y-25.617 +G01 X+1.733 Y-22.531 +G01 X+1.655 Y-19.473 +G01 X+1.83 Y-16.358 +G01 X+2.271 Y-13.194 +G01 X+3.002 Y-9.938 +G01 X+4.045 Y-6.605 +G01 X+4.68 Y-4.936 +G01 X+4.84 Y-4.69 +G01 X+8.086 Y-3.555 +G01 X+11.296 Y-2.679 +G01 X+14.383 Y-2.094 +G01 X+17.469 Y-1.761 +G01 X+20.527 Y-1.683 +G01 X+23.642 Y-1.859 +G01 X+26.806 Y-2.304 +G01 X+29.815 Y-2.976 +G01 X+32.901 Y-3.917 +G01 X+35.069 Y-4.734 +G01 X+35.259 Y-4.893 +G01 X+36.404 Y-8.086 +G01 X+37.261 Y-11.186 +G01 X+37.864 Y-14.299 +G01 X+38.212 Y-17.469 +G01 X+38.289 Y-20.679 +G01 X+38.115 Y-23.642 +G01 X+37.682 Y-26.728 +G01 X+37.016 Y-29.725 +G01 X+36.045 Y-32.901 +G01 X+35.228 Y-35.06 +G01 X+35.114 Y-35.193 +G01 X+31.914 Y-36.369 +G01 X+28.704 Y-37.258 +G01 X+25.617 Y-37.852 +G01 X+22.531 Y-38.189 +G01 X+19.473 Y-38.269 +G01 X+16.358 Y-38.091 +G01 X+13.194 Y-37.641 +G01 X+10.185 Y-36.961 +G01 X+7.099 Y-36.008 +G01 X+4.94 Y-35.186 +G01 X+4.849 Y-35.113 +G01 X+3.666 Y-31.914 +G01 X+2.771 Y-28.704 +G01 X+2.174 Y-25.617 +G01 X+1.835 Y-22.531 +G01 X+1.754 Y-19.473 +G01 X+1.933 Y-16.358 +G01 X+2.386 Y-13.194 +G01 X+3.07 Y-10.185 +G01 X+4.029 Y-7.099 +G01 X+4.885 Y-4.93 +G01 X+4.973 Y-4.845 +G01 X+8.086 Y-3.701 +G01 X+11.296 Y-2.801 +G01 X+14.383 Y-2.2 +G01 X+17.469 Y-1.858 +G01 X+20.527 Y-1.777 +G01 X+23.642 Y-1.958 +G01 X+26.806 Y-2.413 +G01 X+29.815 Y-3.101 +G01 X+32.901 Y-4.066 +G01 X+35.028 Y-4.886 +G01 X+35.114 Y-4.972 +G01 X+35.928 Y-7.102 +G01 X+36.886 Y-10.19 +G01 X+37.569 Y-13.198 +G01 X+38.019 Y-16.361 +G01 X+38.194 Y-19.473 +G01 X+38.107 Y-22.528 +G01 X+37.757 Y-25.609 +G01 X+37.144 Y-28.688 +G01 X+36.229 Y-31.885 +G01 X+35.067 Y-34.98 +G01 X+34.98 Y-35.068 +G01 X+32.616 Y-35.969 +G01 X+29.417 Y-36.942 +G01 X+26.348 Y-37.609 +G01 X+23.262 Y-38.018 +G01 X+20.326 Y-38.161 +G01 X+17.231 Y-38.052 +G01 X+14.32 Y-37.705 +G01 X+11.224 Y-37.076 +G01 X+8.147 Y-36.185 +G01 X+5.066 Y-35.021 +G01 X+4.979 Y-34.934 +G01 X+4.075 Y-32.581 +G01 X+3.1 Y-29.394 +G01 X+2.429 Y-26.334 +G01 X+2.019 Y-23.256 +G01 X+1.875 Y-20.325 +G01 X+1.985 Y-17.237 +G01 X+2.333 Y-14.332 +G01 X+2.965 Y-11.245 +G01 X+3.859 Y-8.179 +G01 X+5.025 Y-5.112 +G01 X+5.112 Y-5.025 +G01 X+7.454 Y-4.12 +G01 X+10.629 Y-3.141 +G01 X+13.68 Y-2.468 +G01 X+16.751 Y-2.055 +G01 X+19.676 Y-1.911 +G01 X+22.758 Y-2.021 +G01 X+25.656 Y-2.371 +G01 X+28.734 Y-3.005 +G01 X+31.789 Y-3.903 +G01 X+34.842 Y-5.072 +G01 X+34.929 Y-5.158 +G01 X+35.838 Y-7.499 +G01 X+36.784 Y-10.531 +G01 X+37.472 Y-13.58 +G01 X+37.895 Y-16.636 +G01 X+38.051 Y-19.572 +G01 X+37.959 Y-22.507 +G01 X+37.601 Y-25.56 +G01 X+36.977 Y-28.603 +G01 X+36.048 Y-31.752 +G01 X+34.875 Y-34.79 +G01 X+34.79 Y-34.875 +G01 X+32.47 Y-35.784 +G01 X+29.321 Y-36.769 +G01 X+26.29 Y-37.448 +G01 X+23.235 Y-37.864 +G01 X+20.323 Y-38.01 +G01 X+17.255 Y-37.898 +G01 X+14.372 Y-37.544 +G01 X+11.313 Y-36.902 +G01 X+8.284 Y-35.998 +G01 X+5.263 Y-34.822 +G01 X+5.178 Y-34.737 +G01 X+4.18 Y-32.189 +G01 X+3.214 Y-29.053 +G01 X+2.557 Y-26.051 +G01 X+2.155 Y-22.984 +G01 X+2.03 Y-20.099 +G01 X+2.143 Y-17.261 +G01 X+2.5 Y-14.386 +G01 X+3.144 Y-11.337 +G01 X+4.052 Y-8.321 +G01 X+5.231 Y-5.315 +G01 X+5.315 Y-5.231 +G01 X+7.85 Y-4.231 +G01 X+10.973 Y-3.261 +G01 X+13.964 Y-2.601 +G01 X+17.017 Y-2.198 +G01 X+19.901 Y-2.07 +G01 X+22.733 Y-2.185 +G01 X+25.6 Y-2.543 +G01 X+28.639 Y-3.191 +G01 X+31.642 Y-4.102 +G01 X+34.632 Y-5.284 +G01 X+34.716 Y-5.368 +G01 X+35.635 Y-7.659 +G01 X+36.594 Y-10.638 +G01 X+37.295 Y-13.645 +G01 X+37.727 Y-16.66 +G01 X+37.887 Y-19.576 +G01 X+37.794 Y-22.478 +G01 X+37.428 Y-25.498 +G01 X+36.791 Y-28.508 +G01 X+35.848 Y-31.606 +G01 X+34.663 Y-34.58 +G01 X+34.58 Y-34.663 +G01 X+32.072 Y-35.668 +G01 X+28.977 Y-36.645 +G01 X+26.012 Y-37.31 +G01 X+22.969 Y-37.719 +G01 X+20.098 Y-37.848 +G01 X+17.28 Y-37.732 +G01 X+14.428 Y-37.37 +G01 X+11.409 Y-36.716 +G01 X+8.431 Y-35.797 +G01 X+5.473 Y-34.61 +G01 X+5.39 Y-34.527 +G01 X+4.382 Y-32.033 +G01 X+3.402 Y-28.951 +G01 X+2.734 Y-25.997 +G01 X+2.323 Y-22.962 +G01 X+2.193 Y-20.098 +G01 X+2.309 Y-17.286 +G01 X+2.673 Y-14.448 +G01 X+3.331 Y-11.433 +G01 X+4.253 Y-8.468 +G01 X+5.443 Y-5.525 +G01 X+5.525 Y-5.443 +G01 X+8.006 Y-4.433 +G01 X+11.074 Y-3.449 +G01 X+14.019 Y-2.778 +G01 X+17.044 Y-2.364 +G01 X+19.902 Y-2.234 +G01 X+22.707 Y-2.351 +G01 X+25.538 Y-2.716 +G01 X+28.543 Y-3.378 +G01 X+31.496 Y-4.303 +G01 X+34.422 Y-5.496 +G01 X+34.504 Y-5.578 +G01 X+35.432 Y-7.82 +G01 X+36.404 Y-10.745 +G01 X+37.117 Y-13.704 +G01 X+37.56 Y-16.692 +G01 X+37.724 Y-19.573 +G01 X+37.628 Y-22.454 +G01 X+37.255 Y-25.443 +G01 X+36.606 Y-28.407 +G01 X+35.647 Y-31.459 +G01 X+34.451 Y-34.37 +G01 X+34.37 Y-34.451 +G01 X+31.916 Y-35.466 +G01 X+28.881 Y-36.455 +G01 X+25.951 Y-37.135 +G01 X+22.942 Y-37.553 +G01 X+20.104 Y-37.684 +G01 X+17.312 Y-37.567 +G01 X+14.49 Y-37.197 +G01 X+11.511 Y-36.531 +G01 X+8.578 Y-35.597 +G01 X+5.683 Y-34.398 +G01 X+5.602 Y-34.317 +G01 X+4.585 Y-31.877 +G01 X+3.592 Y-28.856 +G01 X+2.909 Y-25.936 +G01 X+2.489 Y-22.935 +G01 X+2.356 Y-20.104 +G01 X+2.475 Y-17.319 +G01 X+2.847 Y-14.504 +G01 X+3.516 Y-11.535 +G01 X+4.453 Y-8.615 +G01 X+5.655 Y-5.735 +G01 X+5.735 Y-5.655 +G01 X+8.162 Y-4.635 +G01 X+11.169 Y-3.639 +G01 X+14.079 Y-2.953 +G01 X+17.072 Y-2.531 +G01 X+19.896 Y-2.397 +G01 X+22.675 Y-2.516 +G01 X+25.482 Y-2.89 +G01 X+28.441 Y-3.563 +G01 X+31.349 Y-4.503 +G01 X+34.212 Y-5.708 +G01 X+34.292 Y-5.788 +G01 X+35.4 Y-8.43 +G01 X+36.355 Y-11.343 +G01 X+37.031 Y-14.239 +G01 X+37.428 Y-17.079 +G01 X+37.562 Y-19.815 +G01 X+37.442 Y-22.672 +G01 X+37.038 Y-25.624 +G01 X+36.355 Y-28.545 +G01 X+35.447 Y-31.312 +G01 X+34.239 Y-34.159 +G01 X+34.159 Y-34.239 +G01 X+31.54 Y-35.347 +G01 X+28.773 Y-36.269 +G01 X+25.89 Y-36.959 +G01 X+22.914 Y-37.386 +G01 X+20.103 Y-37.521 +G01 X+17.338 Y-37.401 +G01 X+14.546 Y-37.023 +G01 X+11.607 Y-36.344 +G01 X+8.725 Y-35.397 +G01 X+5.893 Y-34.186 +G01 X+5.814 Y-34.107 +G01 X+4.703 Y-31.502 +G01 X+3.779 Y-28.748 +G01 X+3.085 Y-25.875 +G01 X+2.655 Y-22.907 +G01 X+2.52 Y-20.103 +G01 X+2.641 Y-17.344 +G01 X+3.021 Y-14.56 +G01 X+3.703 Y-11.631 +G01 X+4.654 Y-8.761 +G01 X+5.867 Y-5.946 +G01 X+5.946 Y-5.867 +G01 X+8.536 Y-4.754 +G01 X+11.271 Y-3.828 +G01 X+14.14 Y-3.129 +G01 X+17.1 Y-2.697 +G01 X+19.897 Y-2.56 +G01 X+22.649 Y-2.682 +G01 X+25.426 Y-3.064 +G01 X+28.345 Y-3.749 +G01 X+31.202 Y-4.704 +G01 X+34.005 Y-5.921 +G01 X+34.081 Y-5.994 +G01 X+34.147 Y-6.134 +G01 X+35.37 Y-9.031 +G01 X+36.257 Y-11.755 +G01 X+36.921 Y-14.648 +G01 X+37.283 Y-17.342 +G01 X+37.399 Y-20.089 +G01 X+37.254 Y-22.878 +G01 X+36.863 Y-25.566 +G01 X+36.167 Y-28.447 +G01 X+35.246 Y-31.165 +G01 X+34.027 Y-33.949 +G01 X+33.949 Y-34.027 +G01 X+31.157 Y-35.236 +G01 X+28.45 Y-36.145 +G01 X+25.571 Y-36.834 +G01 X+22.886 Y-37.22 +G01 X+20.103 Y-37.358 +G01 X+17.363 Y-37.235 +G01 X+14.602 Y-36.849 +G01 X+11.703 Y-36.157 +G01 X+8.878 Y-35.198 +G01 X+6.103 Y-33.974 +G01 X+6.026 Y-33.897 +G01 X+4.815 Y-31.121 +G01 X+3.902 Y-28.426 +G01 X+3.21 Y-25.556 +G01 X+2.822 Y-22.879 +G01 X+2.683 Y-20.103 +G01 X+2.807 Y-17.37 +G01 X+3.195 Y-14.616 +G01 X+3.889 Y-11.727 +G01 X+4.852 Y-8.914 +G01 X+6.079 Y-6.156 +G01 X+6.156 Y-6.079 +G01 X+8.916 Y-4.865 +G01 X+11.599 Y-3.949 +G01 X+14.458 Y-3.254 +G01 X+17.128 Y-2.864 +G01 X+19.898 Y-2.724 +G01 X+22.624 Y-2.848 +G01 X+25.37 Y-3.238 +G01 X+28.248 Y-3.936 +G01 X+31.049 Y-4.902 +G01 X+33.795 Y-6.134 +G01 X+33.868 Y-6.204 +G01 X+33.936 Y-6.341 +G01 X+35.171 Y-9.173 +G01 X+36.07 Y-11.849 +G01 X+36.747 Y-14.703 +G01 X+37.117 Y-17.367 +G01 X+37.235 Y-20.088 +G01 X+37.088 Y-22.85 +G01 X+36.689 Y-25.508 +G01 X+35.98 Y-28.349 +G01 X+35.048 Y-31.012 +G01 X+33.813 Y-33.742 +G01 X+33.743 Y-33.815 +G01 X+33.393 Y-33.987 +G01 X+30.722 Y-35.147 +G01 X+27.919 Y-36.083 +G01 X+25.284 Y-36.704 +G01 X+22.63 Y-37.075 +G01 X+19.833 Y-37.194 +G01 X+17.088 Y-37.039 +G01 X+14.392 Y-36.622 +G01 X+11.799 Y-35.971 +G01 X+9.025 Y-34.998 +G01 X+6.31 Y-33.76 +G01 X+6.238 Y-33.691 +G01 X+6.066 Y-33.343 +G01 X+4.903 Y-30.687 +G01 X+3.963 Y-27.897 +G01 X+3.34 Y-25.27 +G01 X+2.967 Y-22.623 +G01 X+2.847 Y-19.833 +G01 X+3.003 Y-17.096 +G01 X+3.422 Y-14.407 +G01 X+4.076 Y-11.823 +G01 X+5.052 Y-9.061 +G01 X+6.293 Y-6.363 +G01 X+6.707 Y-6.118 +G01 X+9.348 Y-4.953 +G01 X+12.126 Y-4.01 +G01 X+14.744 Y-3.383 +G01 X+17.383 Y-3.008 +G01 X+20.166 Y-2.887 +G01 X+22.897 Y-3.045 +G01 X+25.579 Y-3.465 +G01 X+28.153 Y-4.122 +G01 X+30.902 Y-5.102 +G01 X+33.585 Y-6.346 +G01 X+33.829 Y-6.758 +G01 X+35.054 Y-9.526 +G01 X+35.949 Y-12.166 +G01 X+36.573 Y-14.757 +G01 X+36.951 Y-17.393 +G01 X+37.072 Y-20.087 +G01 X+36.922 Y-22.822 +G01 X+36.514 Y-25.45 +G01 X+35.793 Y-28.251 +G01 X+34.848 Y-30.865 +G01 X+33.601 Y-33.533 +G01 X+33.192 Y-33.776 +G01 X+30.582 Y-34.948 +G01 X+27.828 Y-35.898 +G01 X+25.229 Y-36.53 +G01 X+22.604 Y-36.909 +G01 X+19.835 Y-37.031 +G01 X+17.117 Y-36.872 +G01 X+14.451 Y-36.447 +G01 X+11.895 Y-35.784 +G01 X+9.172 Y-34.798 +G01 X+6.52 Y-33.548 +G01 X+6.172 Y-32.934 +G01 X+5.003 Y-30.298 +G01 X+4.079 Y-27.567 +G01 X+3.472 Y-24.995 +G01 X+3.111 Y-22.365 +G01 X+3.01 Y-19.835 +G01 X+3.169 Y-17.124 +G01 X+3.597 Y-14.466 +G01 X+4.262 Y-11.919 +G01 X+5.252 Y-9.208 +G01 X+6.505 Y-6.573 +G01 X+7.115 Y-6.225 +G01 X+9.736 Y-5.053 +G01 X+12.455 Y-4.125 +G01 X+15.018 Y-3.515 +G01 X+17.64 Y-3.152 +G01 X+20.165 Y-3.051 +G01 X+22.869 Y-3.211 +G01 X+25.519 Y-3.64 +G01 X+28.057 Y-4.309 +G01 X+30.755 Y-5.303 +G01 X+33.375 Y-6.558 +G01 X+33.825 Y-7.37 +G01 X+35.023 Y-10.09 +G01 X+35.892 Y-12.697 +G01 X+36.485 Y-15.262 +G01 X+36.835 Y-17.989 +G01 X+36.901 Y-20.623 +G01 X+36.716 Y-23.135 +G01 X+36.286 Y-25.642 +G01 X+35.606 Y-28.153 +G01 X+34.647 Y-30.718 +G01 X+33.389 Y-33.323 +G01 X+32.787 Y-33.67 +G01 X+30.196 Y-34.848 +G01 X+27.502 Y-35.783 +G01 X+24.956 Y-36.398 +G01 X+22.235 Y-36.775 +G01 X+19.519 Y-36.863 +G01 X+16.873 Y-36.674 +G01 X+14.288 Y-36.223 +G01 X+11.793 Y-35.533 +G01 X+9.318 Y-34.597 +G01 X+6.73 Y-33.336 +G01 X+6.279 Y-32.535 +G01 X+5.116 Y-29.951 +G01 X+4.231 Y-27.371 +G01 X+3.601 Y-24.713 +G01 X+3.266 Y-22.229 +G01 X+3.178 Y-19.521 +G01 X+3.368 Y-16.881 +G01 X+3.821 Y-14.303 +G01 X+4.513 Y-11.817 +G01 X+5.453 Y-9.355 +G01 X+6.717 Y-6.783 +G01 X+7.513 Y-6.332 +G01 X+10.082 Y-5.165 +G01 X+12.65 Y-4.277 +G01 X+15.299 Y-3.644 +G01 X+17.777 Y-3.308 +G01 X+20.478 Y-3.219 +G01 X+23.111 Y-3.41 +G01 X+25.681 Y-3.865 +G01 X+28.158 Y-4.56 +G01 X+30.608 Y-5.503 +G01 X+33.165 Y-6.77 +G01 X+33.719 Y-7.761 +G01 X+34.827 Y-10.219 +G01 X+35.709 Y-12.78 +G01 X+36.313 Y-15.311 +G01 X+36.67 Y-18.008 +G01 X+36.737 Y-20.617 +G01 X+36.548 Y-23.104 +G01 X+36.11 Y-25.581 +G01 X+35.419 Y-28.055 +G01 X+34.447 Y-30.572 +G01 X+33.177 Y-33.112 +G01 X+32.192 Y-33.667 +G01 X+29.644 Y-34.82 +G01 X+27.09 Y-35.695 +G01 X+24.565 Y-36.29 +G01 X+21.987 Y-36.629 +G01 X+19.524 Y-36.7 +G01 X+16.905 Y-36.507 +G01 X+14.35 Y-36.047 +G01 X+11.892 Y-35.346 +G01 X+9.465 Y-34.397 +G01 X+6.94 Y-33.124 +G01 X+6.385 Y-32.146 +G01 X+5.229 Y-29.613 +G01 X+4.351 Y-27.07 +G01 X+3.753 Y-24.553 +G01 X+3.413 Y-21.982 +G01 X+3.341 Y-19.525 +G01 X+3.535 Y-16.912 +G01 X+3.997 Y-14.365 +G01 X+4.701 Y-11.917 +G01 X+5.653 Y-9.502 +G01 X+6.93 Y-6.992 +G01 X+7.901 Y-6.437 +G01 X+10.419 Y-5.278 +G01 X+12.951 Y-4.397 +G01 X+15.459 Y-3.796 +G01 X+18.023 Y-3.454 +G01 X+20.474 Y-3.382 +G01 X+23.08 Y-3.577 +G01 X+25.619 Y-4.041 +G01 X+28.058 Y-4.748 +G01 X+30.461 Y-5.703 +G01 X+32.955 Y-6.983 +G01 X+33.625 Y-8.169 +G01 X+34.756 Y-10.657 +G01 X+35.623 Y-13.196 +G01 X+36.19 Y-15.625 +G01 X+36.505 Y-18.028 +G01 X+36.574 Y-20.61 +G01 X+36.381 Y-23.072 +G01 X+35.935 Y-25.52 +G01 X+35.232 Y-27.957 +G01 X+34.247 Y-30.425 +G01 X+32.964 Y-32.902 +G01 X+31.812 Y-33.56 +G01 X+29.312 Y-34.707 +G01 X+26.795 Y-35.574 +G01 X+24.298 Y-36.159 +G01 X+21.753 Y-36.48 +G01 X+19.323 Y-36.531 +G01 X+16.936 Y-36.339 +G01 X+14.412 Y-35.871 +G01 X+11.991 Y-35.158 +G01 X+9.612 Y-34.197 +G01 X+7.15 Y-32.911 +G01 X+6.492 Y-31.767 +G01 X+5.341 Y-29.282 +G01 X+4.471 Y-26.775 +G01 X+3.884 Y-24.286 +G01 X+3.561 Y-21.749 +G01 X+3.51 Y-19.325 +G01 X+3.702 Y-16.944 +G01 X+4.173 Y-14.428 +G01 X+4.889 Y-12.016 +G01 X+5.853 Y-9.649 +G01 X+7.142 Y-7.202 +G01 X+8.279 Y-6.544 +G01 X+10.749 Y-5.39 +G01 X+13.245 Y-4.516 +G01 X+15.725 Y-3.926 +G01 X+18.256 Y-3.603 +G01 X+20.673 Y-3.551 +G01 X+23.048 Y-3.744 +G01 X+25.557 Y-4.217 +G01 X+27.959 Y-4.935 +G01 X+30.314 Y-5.903 +G01 X+32.745 Y-7.195 +G01 X+33.418 Y-8.349 +G01 X+34.562 Y-10.78 +G01 X+35.441 Y-13.275 +G01 X+36.018 Y-15.671 +G01 X+36.34 Y-18.047 +G01 X+36.411 Y-20.604 +G01 X+36.214 Y-23.04 +G01 X+35.759 Y-25.459 +G01 X+35.044 Y-27.859 +G01 X+34.046 Y-30.278 +G01 X+32.752 Y-32.693 +G01 X+31.631 Y-33.353 +G01 X+29.189 Y-34.513 +G01 X+26.716 Y-35.393 +G01 X+24.252 Y-35.988 +G01 X+21.736 Y-36.315 +G01 X+19.33 Y-36.368 +G01 X+16.968 Y-36.172 +G01 X+14.474 Y-35.695 +G01 X+12.091 Y-34.971 +G01 X+9.759 Y-33.996 +G01 X+7.359 Y-32.699 +G01 X+6.699 Y-31.586 +G01 X+5.536 Y-29.159 +G01 X+4.653 Y-26.696 +G01 X+4.054 Y-24.241 +G01 X+3.726 Y-21.731 +G01 X+3.673 Y-19.332 +G01 X+3.87 Y-16.975 +G01 X+4.349 Y-14.49 +G01 X+5.076 Y-12.116 +G01 X+6.054 Y-9.796 +G01 X+7.355 Y-7.412 +G01 X+8.459 Y-6.751 +G01 X+10.872 Y-5.584 +G01 X+13.323 Y-4.698 +G01 X+15.77 Y-4.097 +G01 X+18.273 Y-3.767 +G01 X+20.666 Y-3.714 +G01 X+23.017 Y-3.911 +G01 X+25.495 Y-4.393 +G01 X+27.859 Y-5.123 +G01 X+30.167 Y-6.104 +G01 X+32.536 Y-7.408 +G01 X+33.21 Y-8.528 +G01 X+34.367 Y-10.903 +G01 X+35.26 Y-13.354 +G01 X+35.847 Y-15.717 +G01 X+36.175 Y-18.066 +G01 X+36.247 Y-20.598 +G01 X+36.047 Y-23.009 +G01 X+35.584 Y-25.397 +G01 X+34.857 Y-27.761 +G01 X+33.846 Y-30.131 +G01 X+32.539 Y-32.483 +G01 X+31.451 Y-33.146 +G01 X+29.067 Y-34.318 +G01 X+26.637 Y-35.211 +G01 X+24.207 Y-35.817 +G01 X+21.719 Y-36.151 +G01 X+19.337 Y-36.204 +G01 X+16.999 Y-36.005 +G01 X+14.537 Y-35.519 +G01 X+12.19 Y-34.783 +G01 X+9.906 Y-33.796 +G01 X+7.569 Y-32.486 +G01 X+6.906 Y-31.406 +G01 X+5.73 Y-29.036 +G01 X+4.834 Y-26.618 +G01 X+4.225 Y-24.196 +G01 X+3.891 Y-21.714 +G01 X+3.837 Y-19.339 +G01 X+4.037 Y-17.007 +G01 X+4.525 Y-14.552 +G01 X+5.264 Y-12.215 +G01 X+6.254 Y-9.943 +G01 X+7.567 Y-7.621 +G01 X+8.64 Y-6.958 +G01 X+10.995 Y-5.779 +G01 X+13.402 Y-4.879 +G01 X+15.815 Y-4.268 +G01 X+18.29 Y-3.932 +G01 X+20.659 Y-3.877 +G01 X+22.985 Y-4.079 +G01 X+25.432 Y-4.569 +G01 X+27.76 Y-5.31 +G01 X+30.021 Y-6.304 +G01 X+32.326 Y-7.62 +G01 X+33.003 Y-8.708 +G01 X+34.172 Y-11.026 +G01 X+35.079 Y-13.432 +G01 X+35.689 Y-15.827 +G01 X+36.028 Y-18.303 +G01 X+36.084 Y-20.592 +G01 X+35.88 Y-22.977 +G01 X+35.408 Y-25.336 +G01 X+34.67 Y-27.663 +G01 X+33.646 Y-29.984 +G01 X+32.327 Y-32.273 +G01 X+30.908 Y-33.143 +G01 X+28.555 Y-34.292 +G01 X+26.273 Y-35.118 +G01 X+23.95 Y-35.687 +G01 X+21.701 Y-35.986 +G01 X+19.344 Y-36.041 +G01 X+17.031 Y-35.838 +G01 X+14.599 Y-35.343 +G01 X+12.29 Y-34.596 +G01 X+10.053 Y-33.596 +G01 X+7.78 Y-32.274 +G01 X+6.613 Y-30.324 +G01 X+5.555 Y-28.038 +G01 X+4.799 Y-25.822 +G01 X+4.262 Y-23.407 +G01 X+4.013 Y-21.046 +G01 X+4.025 Y-18.794 +G01 X+4.281 Y-16.549 +G01 X+4.78 Y-14.325 +G01 X+5.539 Y-12.091 +G01 X+6.551 Y-9.905 +G01 X+7.779 Y-7.832 +G01 X+9.715 Y-6.664 +G01 X+11.988 Y-5.602 +G01 X+14.195 Y-4.844 +G01 X+16.602 Y-4.304 +G01 X+18.957 Y-4.054 +G01 X+21.203 Y-4.066 +G01 X+23.441 Y-4.323 +G01 X+25.658 Y-4.824 +G01 X+27.883 Y-5.586 +G01 X+30.057 Y-6.601 +G01 X+32.115 Y-7.832 +G01 X+33.382 Y-9.936 +G01 X+34.39 Y-12.112 +G01 X+35.147 Y-14.335 +G01 X+35.654 Y-16.611 +G01 X+35.9 Y-18.859 +G01 X+35.897 Y-21.124 +G01 X+35.646 Y-23.37 +G01 X+35.155 Y-25.56 +G01 X+34.406 Y-27.76 +G01 X+33.345 Y-30.025 +G01 X+32.114 Y-32.063 +G01 X+30.207 Y-33.235 +G01 X+27.96 Y-34.303 +G01 X+25.771 Y-35.067 +G01 X+23.38 Y-35.612 +G01 X+21.038 Y-35.864 +G01 X+18.804 Y-35.852 +G01 X+16.577 Y-35.593 +G01 X+14.375 Y-35.087 +G01 X+12.169 Y-34.319 +G01 X+10.019 Y-33.298 +G01 X+7.989 Y-32.061 +G01 X+6.722 Y-29.994 +G01 X+5.665 Y-27.74 +G01 X+4.919 Y-25.55 +G01 X+4.43 Y-23.371 +G01 X+4.177 Y-21.036 +G01 X+4.189 Y-18.807 +G01 X+4.449 Y-16.587 +G01 X+4.957 Y-14.392 +G01 X+5.728 Y-12.195 +G01 X+6.752 Y-10.056 +G01 X+7.992 Y-8.042 +G01 X+10.044 Y-6.772 +G01 X+12.285 Y-5.712 +G01 X+14.466 Y-4.963 +G01 X+16.638 Y-4.473 +G01 X+18.967 Y-4.218 +G01 X+21.19 Y-4.23 +G01 X+23.404 Y-4.492 +G01 X+25.592 Y-5.001 +G01 X+27.78 Y-5.775 +G01 X+29.906 Y-6.802 +G01 X+31.906 Y-8.045 +G01 X+33.181 Y-10.088 +G01 X+34.201 Y-12.215 +G01 X+34.993 Y-14.482 +G01 X+35.485 Y-16.647 +G01 X+35.736 Y-18.87 +G01 X+35.733 Y-21.113 +G01 X+35.477 Y-23.334 +G01 X+34.978 Y-25.495 +G01 X+34.218 Y-27.658 +G01 X+33.144 Y-29.873 +G01 X+31.902 Y-31.854 +G01 X+29.88 Y-33.127 +G01 X+27.664 Y-34.193 +G01 X+25.502 Y-34.949 +G01 X+23.344 Y-35.443 +G01 X+21.028 Y-35.7 +G01 X+18.816 Y-35.688 +G01 X+16.571 Y-35.416 +G01 X+14.441 Y-34.91 +G01 X+12.272 Y-34.13 +G01 X+10.17 Y-33.097 +G01 X+8.199 Y-31.848 +G01 X+6.924 Y-29.843 +G01 X+5.854 Y-27.639 +G01 X+5.096 Y-25.485 +G01 X+4.599 Y-23.335 +G01 X+4.341 Y-21.025 +G01 X+4.353 Y-18.82 +G01 X+4.626 Y-16.581 +G01 X+5.134 Y-14.458 +G01 X+5.917 Y-12.298 +G01 X+6.953 Y-10.208 +G01 X+8.205 Y-8.251 +G01 X+10.195 Y-6.974 +G01 X+12.387 Y-5.901 +G01 X+14.531 Y-5.14 +G01 X+16.674 Y-4.641 +G01 X+18.977 Y-4.382 +G01 X+21.177 Y-4.394 +G01 X+23.41 Y-4.668 +G01 X+25.526 Y-5.178 +G01 X+27.676 Y-5.964 +G01 X+29.754 Y-7.004 +G01 X+31.697 Y-8.258 +G01 X+32.979 Y-10.239 +G01 X+34.012 Y-12.318 +G01 X+34.816 Y-14.547 +G01 X+35.317 Y-16.684 +G01 X+35.572 Y-18.882 +G01 X+35.57 Y-21.101 +G01 X+35.309 Y-23.297 +G01 X+34.741 Y-25.628 +G01 X+33.948 Y-27.743 +G01 X+32.943 Y-29.722 +G01 X+31.689 Y-31.644 +G01 X+29.729 Y-32.925 +G01 X+27.563 Y-34.005 +G01 X+25.437 Y-34.772 +G01 X+23.308 Y-35.275 +G01 X+21.017 Y-35.536 +G01 X+18.829 Y-35.524 +G01 X+16.609 Y-35.248 +G01 X+14.508 Y-34.733 +G01 X+12.376 Y-33.942 +G01 X+10.322 Y-32.896 +G01 X+8.408 Y-31.635 +G01 X+7.125 Y-29.691 +G01 X+6.042 Y-27.537 +G01 X+5.273 Y-25.421 +G01 X+4.767 Y-23.299 +G01 X+4.505 Y-21.015 +G01 X+4.517 Y-18.832 +G01 X+4.794 Y-16.619 +G01 X+5.311 Y-14.524 +G01 X+6.106 Y-12.402 +G01 X+7.155 Y-10.36 +G01 X+8.42 Y-8.457 +G01 X+8.569 Y-8.337 +G01 X+10.523 Y-7.073 +G01 X+12.488 Y-6.089 +G01 X+14.596 Y-5.317 +G01 X+16.71 Y-4.81 +G01 X+18.988 Y-4.546 +G01 X+21.165 Y-4.558 +G01 X+23.372 Y-4.837 +G01 X+25.459 Y-5.356 +G01 X+27.572 Y-6.153 +G01 X+29.603 Y-7.205 +G01 X+31.491 Y-8.474 +G01 X+31.61 Y-8.621 +G01 X+32.876 Y-10.56 +G01 X+33.914 Y-12.631 +G01 X+34.697 Y-14.808 +G01 X+35.184 Y-16.924 +G01 X+35.419 Y-19.102 +G01 X+35.384 Y-21.401 +G01 X+35.093 Y-23.507 +G01 X+34.563 Y-25.56 +G01 X+33.759 Y-27.638 +G01 X+32.742 Y-29.57 +G01 X+31.473 Y-31.438 +G01 X+31.328 Y-31.558 +G01 X+29.403 Y-32.826 +G01 X+27.461 Y-33.816 +G01 X+25.372 Y-34.595 +G01 X+23.272 Y-35.106 +G01 X+21.007 Y-35.373 +G01 X+18.842 Y-35.36 +G01 X+16.647 Y-35.079 +G01 X+14.574 Y-34.556 +G01 X+12.48 Y-33.753 +G01 X+10.473 Y-32.695 +G01 X+8.614 Y-31.42 +G01 X+8.495 Y-31.276 +G01 X+7.224 Y-29.367 +G01 X+6.231 Y-27.435 +G01 X+5.45 Y-25.356 +G01 X+4.936 Y-23.262 +G01 X+4.668 Y-21.004 +G01 X+4.681 Y-18.845 +G01 X+4.963 Y-16.656 +G01 X+5.488 Y-14.591 +G01 X+6.294 Y-12.506 +G01 X+7.356 Y-10.511 +G01 X+8.634 Y-8.666 +G01 X+8.776 Y-8.548 +G01 X+10.67 Y-7.274 +G01 X+12.59 Y-6.278 +G01 X+14.66 Y-5.494 +G01 X+16.747 Y-4.978 +G01 X+18.998 Y-4.709 +G01 X+21.152 Y-4.722 +G01 X+23.334 Y-5.005 +G01 X+25.393 Y-5.533 +G01 X+27.468 Y-6.341 +G01 X+29.451 Y-7.406 +G01 X+31.281 Y-8.687 +G01 X+31.512 Y-8.977 +G01 X+32.774 Y-10.873 +G01 X+33.8 Y-12.898 +G01 X+34.521 Y-14.87 +G01 X+35.016 Y-16.958 +G01 X+35.256 Y-19.111 +G01 X+35.219 Y-21.386 +G01 X+34.924 Y-23.467 +G01 X+34.385 Y-25.492 +G01 X+33.569 Y-27.532 +G01 X+32.54 Y-29.419 +G01 X+31.26 Y-31.229 +G01 X+30.973 Y-31.459 +G01 X+29.187 Y-32.667 +G01 X+27.179 Y-33.709 +G01 X+25.217 Y-34.446 +G01 X+23.034 Y-34.974 +G01 X+20.996 Y-35.209 +G01 X+18.855 Y-35.196 +G01 X+16.685 Y-34.91 +G01 X+14.641 Y-34.379 +G01 X+12.583 Y-33.564 +G01 X+10.625 Y-32.493 +G01 X+8.824 Y-31.207 +G01 X+8.481 Y-30.775 +G01 X+7.292 Y-29 +G01 X+6.258 Y-26.974 +G01 X+5.544 Y-25.024 +G01 X+5.068 Y-23.025 +G01 X+4.832 Y-20.994 +G01 X+4.845 Y-18.858 +G01 X+5.132 Y-16.694 +G01 X+5.666 Y-14.657 +G01 X+6.483 Y-12.609 +G01 X+7.557 Y-10.663 +G01 X+8.847 Y-8.876 +G01 X+9.274 Y-8.533 +G01 X+11.035 Y-7.342 +G01 X+13.05 Y-6.305 +G01 X+14.991 Y-5.588 +G01 X+16.984 Y-5.11 +G01 X+19.009 Y-4.873 +G01 X+21.139 Y-4.886 +G01 X+23.296 Y-5.174 +G01 X+25.326 Y-5.71 +G01 X+27.365 Y-6.53 +G01 X+29.299 Y-7.607 +G01 X+31.072 Y-8.9 +G01 X+31.301 Y-9.178 +G01 X+32.574 Y-11.015 +G01 X+33.613 Y-12.993 +G01 X+34.345 Y-14.932 +G01 X+34.848 Y-16.992 +G01 X+35.092 Y-19.12 +G01 X+35.055 Y-21.371 +G01 X+34.755 Y-23.428 +G01 X+34.208 Y-25.423 +G01 X+33.38 Y-27.427 +G01 X+32.339 Y-29.267 +G01 X+31.047 Y-31.019 +G01 X+30.627 Y-31.362 +G01 X+28.894 Y-32.558 +G01 X+26.903 Y-33.602 +G01 X+24.979 Y-34.324 +G01 X+23 Y-34.806 +G01 X+20.986 Y-35.045 +G01 X+18.867 Y-35.032 +G01 X+16.764 Y-34.75 +G01 X+14.782 Y-34.227 +G01 X+12.886 Y-33.471 +G01 X+11.094 Y-32.495 +G01 X+9.289 Y-31.206 +G01 X+8.698 Y-30.587 +G01 X+7.492 Y-28.859 +G01 X+6.445 Y-26.879 +G01 X+5.72 Y-24.963 +G01 X+5.236 Y-22.991 +G01 X+4.996 Y-20.983 +G01 X+5.009 Y-18.87 +G01 X+5.292 Y-16.773 +G01 X+5.818 Y-14.798 +G01 X+6.576 Y-12.911 +G01 X+7.555 Y-11.129 +G01 X+8.847 Y-9.339 +G01 X+9.463 Y-8.751 +G01 X+11.176 Y-7.541 +G01 X+13.144 Y-6.491 +G01 X+15.052 Y-5.764 +G01 X+17.017 Y-5.278 +G01 X+19.019 Y-5.037 +G01 X+21.126 Y-5.05 +G01 X+23.258 Y-5.343 +G01 X+25.26 Y-5.887 +G01 X+27.261 Y-6.719 +G01 X+29.148 Y-7.808 +G01 X+30.863 Y-9.114 +G01 X+31.091 Y-9.38 +G01 X+32.375 Y-11.157 +G01 X+33.351 Y-12.929 +G01 X+34.108 Y-14.806 +G01 X+34.643 Y-16.828 +G01 X+34.917 Y-18.927 +G01 X+34.914 Y-21.053 +G01 X+34.635 Y-23.151 +G01 X+34.094 Y-25.168 +G01 X+33.277 Y-27.149 +G01 X+32.287 Y-28.89 +G01 X+31.047 Y-30.561 +G01 X+30.439 Y-31.145 +G01 X+28.754 Y-32.359 +G01 X+26.809 Y-33.416 +G01 X+24.918 Y-34.148 +G01 X+22.966 Y-34.638 +G01 X+20.976 Y-34.881 +G01 X+18.88 Y-34.868 +G01 X+16.76 Y-34.573 +G01 X+14.847 Y-34.05 +G01 X+12.985 Y-33.283 +G01 X+11.236 Y-32.296 +G01 X+9.489 Y-30.994 +G01 X+8.907 Y-30.389 +G01 X+7.691 Y-28.719 +G01 X+6.631 Y-26.785 +G01 X+5.895 Y-24.903 +G01 X+5.404 Y-22.957 +G01 X+5.16 Y-20.973 +G01 X+5.173 Y-18.883 +G01 X+5.469 Y-16.77 +G01 X+5.994 Y-14.864 +G01 X+6.764 Y-13.01 +G01 X+7.754 Y-11.272 +G01 X+9.058 Y-9.54 +G01 X+9.797 Y-8.846 +G01 X+11.498 Y-7.626 +G01 X+13.399 Y-6.604 +G01 X+15.321 Y-5.874 +G01 X+17.247 Y-5.41 +G01 X+19.213 Y-5.191 +G01 X+21.344 Y-5.232 +G01 X+23.415 Y-5.554 +G01 X+25.362 Y-6.125 +G01 X+27.158 Y-6.908 +G01 X+28.996 Y-8.01 +G01 X+30.654 Y-9.328 +G01 X+30.88 Y-9.582 +G01 X+32.175 Y-11.299 +G01 X+33.163 Y-13.028 +G01 X+33.931 Y-14.871 +G01 X+34.474 Y-16.864 +G01 X+34.753 Y-18.939 +G01 X+34.75 Y-21.041 +G01 X+34.467 Y-23.114 +G01 X+33.947 Y-25.017 +G01 X+33.173 Y-26.878 +G01 X+32.181 Y-28.605 +G01 X+30.951 Y-30.228 +G01 X+30.108 Y-31.049 +G01 X+28.434 Y-32.276 +G01 X+26.714 Y-33.229 +G01 X+24.857 Y-33.973 +G01 X+22.932 Y-34.47 +G01 X+20.965 Y-34.718 +G01 X+18.893 Y-34.704 +G01 X+16.798 Y-34.404 +G01 X+14.913 Y-33.873 +G01 X+13.085 Y-33.096 +G01 X+11.379 Y-32.097 +G01 X+9.821 Y-30.899 +G01 X+9.004 Y-30.06 +G01 X+7.774 Y-28.4 +G01 X+6.817 Y-26.691 +G01 X+6.071 Y-24.842 +G01 X+5.572 Y-22.924 +G01 X+5.323 Y-20.963 +G01 X+5.337 Y-18.896 +G01 X+5.638 Y-16.808 +G01 X+6.171 Y-14.929 +G01 X+6.951 Y-13.11 +G01 X+7.953 Y-11.414 +G01 X+9.154 Y-9.87 +G01 X+10.122 Y-8.942 +G01 X+11.788 Y-7.724 +G01 X+13.49 Y-6.789 +G01 X+15.379 Y-6.048 +G01 X+17.279 Y-5.577 +G01 X+19.222 Y-5.354 +G01 X+21.329 Y-5.396 +G01 X+23.374 Y-5.723 +G01 X+25.292 Y-6.302 +G01 X+27.218 Y-7.185 +G01 X+28.845 Y-8.211 +G01 X+30.444 Y-9.541 +G01 X+30.785 Y-9.912 +G01 X+31.976 Y-11.442 +G01 X+32.975 Y-13.127 +G01 X+33.754 Y-14.936 +G01 X+34.306 Y-16.9 +G01 X+34.589 Y-18.95 +G01 X+34.593 Y-20.937 +G01 X+34.338 Y-22.886 +G01 X+33.829 Y-24.787 +G01 X+33.07 Y-26.612 +G01 X+32.1 Y-28.29 +G01 X+30.856 Y-29.904 +G01 X+29.785 Y-30.953 +G01 X+28.147 Y-32.177 +G01 X+26.464 Y-33.119 +G01 X+24.593 Y-33.864 +G01 X+22.651 Y-34.349 +G01 X+20.774 Y-34.564 +G01 X+18.679 Y-34.521 +G01 X+16.646 Y-34.192 +G01 X+14.742 Y-33.609 +G01 X+12.835 Y-32.72 +G01 X+11.23 Y-31.688 +G01 X+9.768 Y-30.456 +G01 X+8.438 Y-28.921 +G01 X+7.363 Y-27.276 +G01 X+6.483 Y-25.423 +G01 X+5.888 Y-23.556 +G01 X+5.536 Y-21.542 +G01 X+5.464 Y-19.589 +G01 X+5.667 Y-17.555 +G01 X+6.152 Y-15.568 +G01 X+6.858 Y-13.771 +G01 X+7.848 Y-12.003 +G01 X+9.006 Y-10.466 +G01 X+10.307 Y-9.151 +G01 X+11.919 Y-7.921 +G01 X+13.581 Y-6.974 +G01 X+15.436 Y-6.223 +G01 X+17.405 Y-5.727 +G01 X+18.013 Y-5.661 +G01 X+18.12 Y-5.642 +G02 X+28.808 Y-8.506 I+1.88 J-14.358 +G01 X+30.24 Y-9.76 +G00 Z+1.755 +G00 X+41.95 Y+0 +G00 Z-3.245 +G01 Z-4.47 F10000 +G01 X+41.904 Y-40.391 F12000 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-1.091 Y-41.609 +G01 X-1.624 Y-41.069 +G01 X-1.913 Y-40.359 +G01 X-1.949 Y-40.007 +G01 X-1.904 Y+0.391 +G01 X-1.609 Y+1.091 +G01 X-1.069 Y+1.624 +G01 X-0.359 Y+1.913 +G01 X-0.007 Y+1.949 +G01 X+40.391 Y+1.904 +G01 X+40.51 Y+1.87 +G01 X+40.856 Y+1.742 +G01 X+41.132 Y+1.576 +G01 X+41.362 Y+1.381 +G01 X+41.607 Y+1.086 +G01 X+41.73 Y+0.877 +G01 X+41.852 Y+0.574 +G01 X+41.938 Y+0.011 +G01 X+41.879 Y-40.085 +G01 X+41.808 Y-40.515 +G01 X+41.687 Y-40.829 +G01 X+41.527 Y-41.096 +G01 X+41.345 Y-41.311 +G01 X+40.57 Y-41.782 +G01 X+39.568 Y-41.878 +G01 X+8.827 Y-41.858 +G01 X+0 Y-41.821 +G01 X-0.105 Y-41.817 +G01 X-0.498 Y-41.749 +G01 X-0.802 Y-41.633 +G01 X-1.06 Y-41.478 +G01 X-1.276 Y-41.295 +G01 X-1.501 Y-41.024 +G01 X-1.748 Y-40.482 +G01 X-1.816 Y-39.321 +G01 X-1.839 Y-12.901 +G01 X-1.758 Y+0.079 +G01 X-1.691 Y+0.48 +G01 X-1.578 Y+0.775 +G01 X-1.429 Y+1.024 +G01 X-1.259 Y+1.225 +G01 X-0.536 Y+1.665 +G01 X+0.556 Y+1.756 +G01 X+24.506 Y+1.816 +G01 X+35.09 Y+1.706 +G01 X+40 Y+1.699 +G01 X+40.463 Y+1.632 +G01 X+40.747 Y+1.523 +G01 X+40.988 Y+1.379 +G01 X+41.19 Y+1.209 +G01 X+41.404 Y+0.95 +G01 X+41.512 Y+0.768 +G01 X+41.618 Y+0.504 +G01 X+41.694 Y+0.01 +G01 X+41.737 Y-8.827 +G01 X+41.782 Y-23.889 +G01 X+41.635 Y-38.704 +G01 X+41.631 Y-40.072 +G01 X+41.569 Y-40.445 +G01 X+41.465 Y-40.718 +G01 X+41.326 Y-40.949 +G01 X+41.17 Y-41.135 +G01 X+40.499 Y-41.543 +G01 X+39.444 Y-41.629 +G01 X+32.407 Y-41.667 +G01 X+18.704 Y-41.756 +G01 X+6.111 Y-41.603 +G01 X+0 Y-41.568 +G01 X-0.426 Y-41.506 +G01 X-0.689 Y-41.406 +G01 X-0.911 Y-41.273 +G01 X-1.097 Y-41.116 +G01 X-1.29 Y-40.884 +G01 X-1.503 Y-40.419 +G01 X-1.563 Y-39.198 +G01 X-1.602 Y-32.901 +G01 X-1.723 Y-20.432 +G01 X-1.6 Y-8.58 +G01 X-1.506 Y-2.778 +G01 X-1.5 Y+0.065 +G01 X-1.443 Y+0.408 +G01 X-1.347 Y+0.659 +G01 X-1.22 Y+0.872 +G01 X-1.077 Y+1.042 +G01 X-0.462 Y+1.417 +G01 X+0.556 Y+1.498 +G01 X+6.605 Y+1.533 +G01 X+18.333 Y+1.686 +G01 X+29.321 Y+1.593 +G01 X+35.09 Y+1.444 +G01 X+40 Y+1.436 +G01 X+40.389 Y+1.38 +G01 X+40.63 Y+1.289 +G01 X+40.834 Y+1.167 +G01 X+41.001 Y+1.026 +G01 X+41.272 Y+0.657 +G01 X+41.367 Y+0.428 +G01 X+41.432 Y+0.01 +G01 X+41.468 Y-6.39 +G01 X+41.647 Y-17.469 +G01 X+41.576 Y-27.84 +G01 X+41.376 Y-36.481 +G01 X+41.369 Y-40.059 +G01 X+41.318 Y-40.364 +G01 X+41.116 Y-40.789 +G01 X+40.984 Y-40.949 +G01 X+40.425 Y-41.292 +G01 X+39.444 Y-41.367 +G01 X+33.889 Y-41.399 +G01 X+23.642 Y-41.603 +G01 X+13.765 Y-41.562 +G01 X+3.519 Y-41.311 +G01 X+0 Y-41.305 +G01 X-0.352 Y-41.254 +G01 X-0.571 Y-41.171 +G01 X-0.757 Y-41.061 +G01 X-0.912 Y-40.93 +G01 X-1.072 Y-40.738 +G01 X-1.249 Y-40.354 +G01 X-1.3 Y-38.827 +G01 X-1.338 Y-33.889 +G01 X-1.563 Y-23.889 +G01 X-1.532 Y-14.383 +G01 X-1.257 Y-5.123 +G01 X-1.238 Y+0.052 +G01 X-1.191 Y+0.334 +G01 X-1.113 Y+0.542 +G01 X-1.008 Y+0.718 +G01 X-0.891 Y+0.857 +G01 X-0.388 Y+1.166 +G01 X+0.679 Y+1.235 +G01 X+5.864 Y+1.268 +G01 X+15.247 Y+1.515 +G01 X+24.259 Y+1.514 +G01 X+33.125 Y+1.269 +G01 X+35.09 Y+1.182 +G01 X+40 Y+1.174 +G01 X+40.315 Y+1.128 +G01 X+40.507 Y+1.056 +G01 X+40.809 Y+0.843 +G01 X+41.038 Y+0.539 +G01 X+41.116 Y+0.353 +G01 X+41.17 Y+0.01 +G01 X+41.206 Y-5.864 +G01 X+41.471 Y-14.877 +G01 X+41.484 Y-23.642 +G01 X+41.253 Y-32.168 +G01 X+41.115 Y-35.988 +G01 X+41.107 Y-40.045 +G01 X+41.067 Y-40.291 +G01 X+40.904 Y-40.634 +G01 X+40.799 Y-40.764 +G01 X+40.351 Y-41.04 +G01 X+39.198 Y-41.105 +G01 X+34.383 Y-41.133 +G01 X+25.864 Y-41.419 +G01 X+17.469 Y-41.46 +G01 X+9.074 Y-41.251 +G01 X+4.136 Y-41.049 +G01 X+0 Y-41.043 +G01 X-0.272 Y-41.004 +G01 X-0.589 Y-40.854 +G01 X-0.848 Y-40.596 +G01 X-0.995 Y-40.29 +G01 X-1.035 Y-36.975 +G01 X-1.082 Y-34.136 +G01 X-1.378 Y-25.864 +G01 X-1.427 Y-17.84 +G01 X-1.235 Y-9.938 +G01 X-0.983 Y-4.136 +G01 X-0.976 Y+0.038 +G01 X-0.941 Y+0.254 +G01 X-0.798 Y+0.557 +G01 X-0.706 Y+0.671 +G01 X-0.314 Y+0.914 +G01 X+1.049 Y+0.973 +G01 X+5.617 Y+1.007 +G01 X+13.634 Y+1.326 +G01 X+21.667 Y+1.395 +G01 X+29.321 Y+1.216 +G01 X+35.09 Y+0.919 +G01 X+40 Y+0.911 +G01 X+40.235 Y+0.878 +G01 X+40.519 Y+0.745 +G01 X+40.63 Y+0.656 +G01 X+40.803 Y+0.422 +G01 X+40.862 Y+0.286 +G01 X+40.908 Y-0.926 +G01 X+40.945 Y-5.617 +G01 X+41.28 Y-13.42 +G01 X+41.363 Y-20.955 +G01 X+41.203 Y-28.476 +G01 X+40.852 Y-35.741 +G01 X+40.844 Y-40.031 +G01 X+40.815 Y-40.217 +G01 X+40.692 Y-40.48 +G01 X+40.613 Y-40.579 +G01 X+40.277 Y-40.788 +G01 X+38.21 Y-40.841 +G01 X+34.383 Y-40.882 +G01 X+26.728 Y-41.234 +G01 X+19.246 Y-41.329 +G01 X+12.037 Y-41.178 +G01 X+4.91 Y-40.788 +G01 X+0.011 Y-40.78 +G01 X-0.196 Y-40.752 +G01 X-0.435 Y-40.642 +G01 X-0.63 Y-40.451 +G01 X-0.741 Y-40.224 +G01 X-0.819 Y-34.383 +G01 X-1.183 Y-27.022 +G01 X-1.295 Y-19.815 +G01 X-1.157 Y-12.654 +G01 X-0.775 Y-5.617 +G01 X-0.721 Y-3.889 +G01 X-0.686 Y+0.161 +G01 X-0.524 Y+0.472 +G01 X-0.24 Y+0.662 +G01 X+5.617 Y+0.756 +G01 X+12.751 Y+1.133 +G01 X+19.673 Y+1.259 +G01 X+26.58 Y+1.142 +G01 X+33.395 Y+0.784 +G01 X+35.09 Y+0.657 +G01 X+39.983 Y+0.649 +G01 X+40.261 Y+0.587 +G01 X+40.434 Y+0.477 +G01 X+40.6 Y+0.221 +G01 X+40.676 Y-5.37 +G01 X+41.079 Y-12.42 +G01 X+41.224 Y-19.246 +G01 X+41.119 Y-26.139 +G01 X+40.765 Y-32.901 +G01 X+40.595 Y-35.617 +G01 X+40.565 Y-40.125 +G01 X+40.435 Y-40.383 +G01 X+40.204 Y-40.542 +G01 X+34.63 Y-40.617 +G01 X+27.84 Y-41.029 +G01 X+21.181 Y-41.189 +G01 X+14.63 Y-41.107 +G01 X+8.086 Y-40.782 +G01 X+4.383 Y-40.534 +G01 X+0.024 Y-40.528 +G01 X-0.274 Y-40.438 +G01 X-0.42 Y-40.311 +G01 X-0.497 Y-40.161 +G01 X-0.558 Y-34.63 +G01 X-0.988 Y-27.84 +G01 X-1.155 Y-21.296 +G01 X-1.078 Y-14.877 +G01 X-0.749 Y-8.333 +G01 X-0.473 Y-4.383 +G01 X-0.448 Y+0.091 +G01 X-0.349 Y+0.297 +G01 X-0.169 Y+0.425 +G01 X+5.37 Y+0.499 +G01 X+11.79 Y+0.93 +G01 X+18.333 Y+1.119 +G01 X+24.753 Y+1.053 +G01 X+31.173 Y+0.734 +G01 X+35.09 Y+0.413 +G01 X+39.97 Y+0.405 +G01 X+40.24 Y+0.305 +G01 X+40.367 Y+0.151 +G01 X+40.439 Y-5.37 +G01 X+40.887 Y-11.79 +G01 X+41.081 Y-18.086 +G01 X+41.03 Y-24.259 +G01 X+40.726 Y-30.556 +G01 X+40.347 Y-35.494 +G01 X+40.304 Y-40.104 +G01 X+40.258 Y-40.215 +G01 X+40.132 Y-40.304 +G01 X+34.63 Y-40.375 +G01 X+28.21 Y-40.843 +G01 X+21.924 Y-41.045 +G01 X+15.741 Y-40.992 +G01 X+9.703 Y-40.694 +G01 X+4.506 Y-40.281 +G01 X+0.038 Y-40.274 +G01 X-0.182 Y-40.176 +G01 X-0.252 Y-40.097 +G01 X-0.311 Y-34.63 +G01 X-0.783 Y-28.476 +G01 X-1.002 Y-22.407 +G01 X-0.971 Y-16.358 +G01 X-0.695 Y-10.432 +G01 X-0.216 Y-4.506 +G01 X-0.169 Y+0.05 +G01 X-0.096 Y+0.178 +G01 X+5.37 Y+0.247 +G01 X+11.524 Y+0.738 +G01 X+17.469 Y+0.964 +G01 X+23.395 Y+0.94 +G01 X+29.321 Y+0.664 +G01 X+35.083 Y+0.151 +G01 X+39.876 Y+0.144 +G01 X+39.982 Y+0.101 +G01 X+40.101 Y-0.018 +G01 X+40.145 Y-0.123 +G01 X+40.187 Y-5.37 +G01 X+40.676 Y-11.186 +G01 X+40.922 Y-16.975 +G01 X+40.923 Y-22.781 +G01 X+40.682 Y-28.476 +G01 X+40.177 Y-34.383 +G01 X+40.098 Y-35.617 +G01 X+40.093 Y-39.876 +G01 X+40.049 Y-39.982 +G01 X+39.877 Y-40.093 +G01 X+34.63 Y-40.137 +G01 X+28.704 Y-40.648 +G01 X+22.781 Y-40.898 +G01 X+16.975 Y-40.888 +G01 X+11.296 Y-40.632 +G01 X+5.617 Y-40.128 +G01 X+4.383 Y-40.047 +G01 X+0.124 Y-40.041 +G01 X+0.018 Y-39.997 +G01 X-0.042 Y-39.877 +G01 X-0.087 Y-34.63 +G01 X-0.595 Y-28.951 +G01 X-0.856 Y-23.324 +G01 X-0.876 Y-17.761 +G01 X-0.652 Y-12.16 +G01 X-0.187 Y-6.605 +G01 X+0.004 Y-4.513 +G01 X+0.01 Y-0.159 +G01 X+0.159 Y-0.009 +G01 X+5.37 Y+0.037 +G01 X+11.049 Y+0.559 +G01 X+16.605 Y+0.826 +G01 X+22.16 Y+0.849 +G01 X+27.84 Y+0.618 +G01 X+33.395 Y+0.14 +G01 X+35.081 Y-0.055 +G01 X+39.753 Y-0.063 +G01 X+39.859 Y-0.106 +G01 X+39.938 Y-0.247 +G01 X+39.985 Y-5.37 +G01 X+40.514 Y-10.96 +G01 X+40.794 Y-16.605 +G01 X+40.817 Y-22.16 +G01 X+40.594 Y-27.593 +G01 X+40.113 Y-33.148 +G01 X+39.884 Y-35.487 +G01 X+39.877 Y-39.728 +G01 X+39.728 Y-39.877 +G01 X+34.636 Y-39.926 +G01 X+29.198 Y-40.459 +G01 X+23.642 Y-40.752 +G01 X+18.086 Y-40.788 +G01 X+12.654 Y-40.57 +G01 X+7.355 Y-40.115 +G01 X+4.514 Y-39.823 +G01 X+0.371 Y-39.816 +G01 X+0.265 Y-39.772 +G01 X+0.184 Y-39.63 +G01 X+0.134 Y-34.636 +G01 X-0.415 Y-29.198 +G01 X-0.71 Y-23.889 +G01 X-0.762 Y-18.618 +G01 X-0.564 Y-13.194 +G01 X-0.115 Y-7.84 +G01 X+0.238 Y-4.638 +G01 X+0.245 Y-0.395 +G01 X+0.395 Y-0.245 +G01 X+5.116 Y-0.224 +G01 X+10.556 Y+0.352 +G01 X+15.813 Y+0.664 +G01 X+21.049 Y+0.732 +G01 X+26.235 Y+0.559 +G01 X+31.42 Y+0.143 +G01 X+35.081 Y-0.298 +G01 X+39.506 Y-0.306 +G01 X+39.612 Y-0.35 +G01 X+39.694 Y-0.494 +G01 X+39.716 Y-5.116 +G01 X+40.298 Y-10.432 +G01 X+40.626 Y-15.741 +G01 X+40.7 Y-20.955 +G01 X+40.527 Y-26.139 +G01 X+40.107 Y-31.296 +G01 X+39.64 Y-35.362 +G01 X+39.633 Y-39.484 +G01 X+39.484 Y-39.633 +G01 X+34.885 Y-39.656 +G01 X+29.725 Y-40.239 +G01 X+24.507 Y-40.581 +G01 X+19.246 Y-40.669 +G01 X+14.012 Y-40.498 +G01 X+8.827 Y-40.072 +G01 X+4.638 Y-39.58 +G01 X+0.618 Y-39.572 +G01 X+0.512 Y-39.528 +G01 X+0.428 Y-39.382 +G01 X+0.435 Y-35.099 +G01 X-0.173 Y-29.951 +G01 X-0.535 Y-24.753 +G01 X-0.638 Y-19.568 +G01 X-0.482 Y-14.383 +G01 X-0.08 Y-9.353 +G01 X+0.481 Y-4.638 +G01 X+0.489 Y-0.639 +G01 X+0.639 Y-0.489 +G01 X+4.901 Y-0.496 +G01 X+9.938 Y+0.118 +G01 X+15 Y+0.487 +G01 X+20.185 Y+0.605 +G01 X+25.123 Y+0.472 +G01 X+30.062 Y+0.094 +G01 X+35.081 Y-0.542 +G01 X+39.301 Y-0.555 +G01 X+39.45 Y-0.705 +G01 X+39.444 Y-4.901 +G01 X+40.072 Y-9.938 +G01 X+40.445 Y-14.877 +G01 X+40.573 Y-19.815 +G01 X+40.454 Y-24.753 +G01 X+40.083 Y-29.725 +G01 X+39.467 Y-34.63 +G01 X+39.396 Y-35.494 +G01 X+39.39 Y-39.24 +G01 X+39.24 Y-39.39 +G01 X+35.1 Y-39.383 +G01 X+30.062 Y-40.027 +G01 X+25.123 Y-40.409 +G01 X+20.1 Y-40.54 +G01 X+15.247 Y-40.418 +G01 X+10.432 Y-40.054 +G01 X+5.617 Y-39.446 +G01 X+4.638 Y-39.336 +G01 X+0.821 Y-39.322 +G01 X+0.671 Y-39.171 +G01 X+0.678 Y-35.1 +G01 X+0.019 Y-30.062 +G01 X-0.372 Y-25.123 +G01 X-0.506 Y-20.327 +G01 X-0.395 Y-15.494 +G01 X-0.035 Y-10.679 +G01 X+0.575 Y-5.864 +G01 X+0.725 Y-4.639 +G01 X+0.732 Y-0.882 +G01 X+0.882 Y-0.732 +G01 X+4.9 Y-0.739 +G01 X+9.691 Y-0.091 +G01 X+14.623 Y+0.321 +G01 X+19.568 Y+0.473 +G01 X+24.506 Y+0.359 +G01 X+29.321 Y-0.009 +G01 X+34.136 Y-0.632 +G01 X+35.078 Y-0.785 +G01 X+39.058 Y-0.802 +G01 X+39.207 Y-0.952 +G01 X+39.201 Y-4.9 +G01 X+39.864 Y-9.703 +G01 X+40.285 Y-14.63 +G01 X+40.439 Y-19.473 +G01 X+40.339 Y-24.187 +G01 X+39.986 Y-28.951 +G01 X+39.388 Y-33.642 +G01 X+39.153 Y-35.36 +G01 X+39.147 Y-38.996 +G01 X+38.996 Y-39.146 +G01 X+35.101 Y-39.14 +G01 X+30.309 Y-39.817 +G01 X+25.617 Y-40.234 +G01 X+20.955 Y-40.403 +G01 X+16.358 Y-40.329 +G01 X+11.543 Y-39.992 +G01 X+6.875 Y-39.411 +G01 X+4.64 Y-39.093 +G01 X+1.064 Y-39.075 +G01 X+0.915 Y-38.925 +G01 X+0.921 Y-35.101 +G01 X+0.229 Y-30.309 +G01 X-0.197 Y-25.617 +G01 X-0.369 Y-20.955 +G01 X-0.294 Y-16.358 +G01 X+0.025 Y-11.79 +G01 X+0.608 Y-7.099 +G01 X+0.968 Y-4.64 +G01 X+0.975 Y-1.125 +G01 X+1.126 Y-0.976 +G01 X+4.899 Y-0.982 +G01 X+9.691 Y-0.275 +G01 X+14.383 Y+0.16 +G01 X+19.045 Y+0.336 +G01 X+23.642 Y+0.259 +G01 X+28.21 Y-0.067 +G01 X+32.901 Y-0.661 +G01 X+35.078 Y-1.028 +G01 X+38.814 Y-1.049 +G01 X+38.964 Y-1.199 +G01 X+38.958 Y-4.899 +G01 X+39.649 Y-9.444 +G01 X+40.098 Y-14.012 +G01 X+40.297 Y-18.618 +G01 X+40.24 Y-23.272 +G01 X+39.929 Y-27.84 +G01 X+39.362 Y-32.407 +G01 X+38.91 Y-35.359 +G01 X+38.903 Y-38.753 +G01 X+38.753 Y-38.903 +G01 X+35.102 Y-38.897 +G01 X+30.556 Y-39.602 +G01 X+25.864 Y-40.069 +G01 X+21.296 Y-40.266 +G01 X+16.605 Y-40.201 +G01 X+12.16 Y-39.888 +G01 X+7.593 Y-39.31 +G01 X+4.641 Y-38.849 +G01 X+1.307 Y-38.828 +G01 X+1.158 Y-38.678 +G01 X+1.164 Y-35.102 +G01 X+0.445 Y-30.556 +G01 X-0.011 Y-26.139 +G01 X-0.226 Y-21.667 +G01 X-0.19 Y-17.222 +G01 X+0.105 Y-12.654 +G01 X+0.665 Y-8.086 +G01 X+1.212 Y-4.641 +G01 X+1.219 Y-1.369 +G01 X+1.369 Y-1.219 +G01 X+4.898 Y-1.225 +G01 X+9.444 Y-0.491 +G01 X+13.861 Y-0.027 +G01 X+18.333 Y+0.192 +G01 X+22.778 Y+0.156 +G01 X+27.099 Y-0.122 +G01 X+31.667 Y-0.678 +G01 X+35.078 Y-1.272 +G01 X+38.571 Y-1.295 +G01 X+38.72 Y-1.446 +G01 X+38.715 Y-4.898 +G01 X+39.449 Y-9.353 +G01 X+39.928 Y-13.765 +G01 X+40.153 Y-18.086 +G01 X+40.135 Y-22.407 +G01 X+39.873 Y-26.728 +G01 X+39.365 Y-31.049 +G01 X+38.667 Y-35.359 +G01 X+38.66 Y-38.51 +G01 X+38.51 Y-38.66 +G01 X+35.103 Y-38.654 +G01 X+30.556 Y-39.416 +G01 X+26.139 Y-39.898 +G01 X+21.667 Y-40.125 +G01 X+17.222 Y-40.088 +G01 X+12.901 Y-39.8 +G01 X+8.58 Y-39.261 +G01 X+4.641 Y-38.606 +G01 X+1.55 Y-38.581 +G01 X+1.401 Y-38.431 +G01 X+1.407 Y-35.103 +G01 X+0.667 Y-30.802 +G01 X+0.168 Y-26.481 +G01 X-0.08 Y-22.16 +G01 X-0.076 Y-17.84 +G01 X+0.182 Y-13.519 +G01 X+0.713 Y-9.074 +G01 X+1.455 Y-4.642 +G01 X+1.462 Y-1.612 +G01 X+1.612 Y-1.462 +G01 X+4.897 Y-1.468 +G01 X+9.198 Y-0.714 +G01 X+13.519 Y-0.207 +G01 X+17.84 Y+0.046 +G01 X+22.16 Y+0.042 +G01 X+26.481 Y-0.22 +G01 X+30.647 Y-0.718 +G01 X+34.877 Y-1.472 +G01 X+35.075 Y-1.514 +G01 X+38.328 Y-1.542 +G01 X+38.477 Y-1.692 +G01 X+38.472 Y-4.897 +G01 X+39.262 Y-9.353 +G01 X+39.777 Y-13.765 +G01 X+40.019 Y-18.086 +G01 X+40 Y-22.407 +G01 X+39.719 Y-26.728 +G01 X+39.173 Y-31.049 +G01 X+38.423 Y-35.358 +G01 X+38.416 Y-38.267 +G01 X+38.266 Y-38.416 +G01 X+35.104 Y-38.411 +G01 X+30.802 Y-39.192 +G01 X+26.481 Y-39.717 +G01 X+22.16 Y-39.979 +G01 X+17.84 Y-39.975 +G01 X+13.519 Y-39.704 +G01 X+9.353 Y-39.188 +G01 X+5.123 Y-38.407 +G01 X+4.925 Y-38.364 +G01 X+1.794 Y-38.335 +G01 X+1.645 Y-38.184 +G01 X+1.65 Y-35.104 +G01 X+0.856 Y-30.802 +G01 X+0.321 Y-26.481 +G01 X+0.055 Y-22.16 +G01 X+0.059 Y-17.84 +G01 X+0.312 Y-13.765 +G01 X+0.806 Y-9.703 +G01 X+1.546 Y-5.617 +G01 X+1.697 Y-4.926 +G01 X+1.705 Y-1.855 +G01 X+1.856 Y-1.706 +G01 X+4.896 Y-1.711 +G01 X+9.198 Y-0.903 +G01 X+13.272 Y-0.383 +G01 X+17.469 Y-0.101 +G01 X+21.667 Y-0.078 +G01 X+25.701 Y-0.302 +G01 X+29.815 Y-0.779 +G01 X+33.889 Y-1.5 +G01 X+35.075 Y-1.758 +G01 X+38.085 Y-1.789 +G01 X+38.234 Y-1.939 +G01 X+38.229 Y-4.896 +G01 X+39.03 Y-9.074 +G01 X+39.57 Y-13.194 +G01 X+39.855 Y-17.222 +G01 X+39.897 Y-21.296 +G01 X+39.688 Y-25.377 +G01 X+39.23 Y-29.444 +G01 X+38.494 Y-33.642 +G01 X+38.181 Y-35.074 +G01 X+38.173 Y-38.023 +G01 X+38.023 Y-38.173 +G01 X+35.105 Y-38.168 +G01 X+30.802 Y-39.003 +G01 X+26.728 Y-39.54 +G01 X+22.531 Y-39.831 +G01 X+18.333 Y-39.855 +G01 X+14.299 Y-39.624 +G01 X+10.185 Y-39.131 +G01 X+6.111 Y-38.386 +G01 X+4.926 Y-38.12 +G01 X+2.037 Y-38.088 +G01 X+1.888 Y-37.938 +G01 X+1.893 Y-35.105 +G01 X+1.086 Y-31.049 +G01 X+0.53 Y-27.022 +G01 X+0.224 Y-23.025 +G01 X+0.165 Y-18.951 +G01 X+0.364 Y-14.877 +G01 X+0.84 Y-10.679 +G01 X+1.565 Y-6.605 +G01 X+1.94 Y-4.926 +G01 X+1.949 Y-2.099 +G01 X+1.993 Y-1.993 +G01 X+2.099 Y-1.949 +G01 X+4.895 Y-1.954 +G01 X+8.951 Y-1.134 +G01 X+12.978 Y-0.569 +G01 X+16.975 Y-0.258 +G01 X+21.049 Y-0.199 +G01 X+25.123 Y-0.4 +G01 X+29.04 Y-0.842 +G01 X+33.125 Y-1.563 +G01 X+35.075 Y-2.001 +G01 X+37.842 Y-2.035 +G01 X+37.991 Y-2.186 +G01 X+37.987 Y-4.895 +G01 X+38.841 Y-9.074 +G01 X+39.417 Y-13.194 +G01 X+39.72 Y-17.222 +G01 X+39.767 Y-21.181 +G01 X+39.566 Y-25.123 +G01 X+39.095 Y-29.198 +G01 X+38.382 Y-33.148 +G01 X+37.943 Y-35.074 +G01 X+37.935 Y-37.778 +G01 X+37.891 Y-37.883 +G01 X+37.777 Y-37.935 +G01 X+35.106 Y-37.931 +G01 X+31.049 Y-38.775 +G01 X+27.022 Y-39.357 +G01 X+23.025 Y-39.678 +G01 X+18.951 Y-39.739 +G01 X+14.877 Y-39.532 +G01 X+10.96 Y-39.078 +G01 X+7.099 Y-38.385 +G01 X+4.927 Y-37.886 +G01 X+2.271 Y-37.879 +G01 X+2.122 Y-37.729 +G01 X+2.126 Y-35.106 +G01 X+1.269 Y-31.049 +G01 X+0.679 Y-27.022 +G01 X+0.354 Y-23.025 +G01 X+0.292 Y-18.951 +G01 X+0.502 Y-14.877 +G01 X+0.962 Y-10.96 +G01 X+1.665 Y-7.099 +G01 X+2.17 Y-4.927 +G01 X+2.178 Y-2.346 +G01 X+2.222 Y-2.24 +G01 X+2.346 Y-2.178 +G01 X+4.894 Y-2.182 +G01 X+8.951 Y-1.313 +G01 X+12.978 Y-0.715 +G01 X+16.975 Y-0.385 +G01 X+21.049 Y-0.322 +G01 X+24.828 Y-0.511 +G01 X+28.704 Y-0.951 +G01 X+32.645 Y-1.659 +G01 X+35.073 Y-2.226 +G01 X+37.617 Y-2.233 +G01 X+37.767 Y-2.383 +G01 X+37.763 Y-4.894 +G01 X+38.62 Y-8.827 +G01 X+39.212 Y-12.654 +G01 X+39.565 Y-16.605 +G01 X+39.657 Y-20.432 +G01 X+39.503 Y-24.259 +G01 X+39.1 Y-28.086 +G01 X+38.449 Y-31.914 +G01 X+37.722 Y-35.073 +G01 X+37.715 Y-37.531 +G01 X+37.671 Y-37.636 +G01 X+37.53 Y-37.715 +G01 X+35.106 Y-37.712 +G01 X+31.049 Y-38.603 +G01 X+27.249 Y-39.189 +G01 X+23.395 Y-39.535 +G01 X+19.568 Y-39.629 +G01 X+15.741 Y-39.473 +G01 X+11.79 Y-39.048 +G01 X+7.84 Y-38.355 +G01 X+4.927 Y-37.671 +G01 X+2.486 Y-37.664 +G01 X+2.336 Y-37.514 +G01 X+2.34 Y-35.107 +G01 X+1.438 Y-31.049 +G01 X+0.844 Y-27.249 +G01 X+0.494 Y-23.395 +G01 X+0.399 Y-19.568 +G01 X+0.557 Y-15.741 +G01 X+0.987 Y-11.79 +G01 X+1.688 Y-7.84 +G01 X+2.381 Y-4.926 +G01 X+2.406 Y-2.537 +G01 X+2.556 Y-2.388 +G01 X+4.893 Y-2.391 +G01 X+8.704 Y-1.526 +G01 X+12.654 Y-0.889 +G01 X+16.605 Y-0.523 +G01 X+20.432 Y-0.427 +G01 X+24.259 Y-0.587 +G01 X+28.21 Y-1.022 +G01 X+32.16 Y-1.732 +G01 X+35.073 Y-2.432 +G01 X+37.407 Y-2.439 +G01 X+37.513 Y-2.483 +G01 X+37.561 Y-2.593 +G01 X+37.557 Y-4.893 +G01 X+38.457 Y-8.827 +G01 X+39.077 Y-12.654 +G01 X+39.432 Y-16.358 +G01 X+39.546 Y-20.1 +G01 X+39.41 Y-23.889 +G01 X+39.03 Y-27.593 +G01 X+38.406 Y-31.296 +G01 X+37.516 Y-35.073 +G01 X+37.509 Y-37.359 +G01 X+37.359 Y-37.509 +G01 X+35.107 Y-37.506 +G01 X+31.296 Y-38.392 +G01 X+27.346 Y-39.044 +G01 X+23.642 Y-39.403 +G01 X+19.815 Y-39.518 +G01 X+16.111 Y-39.38 +G01 X+12.42 Y-38.997 +G01 X+8.58 Y-38.34 +G01 X+4.927 Y-37.465 +G01 X+2.716 Y-37.458 +G01 X+2.61 Y-37.414 +G01 X+2.542 Y-37.283 +G01 X+2.546 Y-35.108 +G01 X+1.65 Y-31.296 +G01 X+1.023 Y-27.593 +G01 X+0.643 Y-23.889 +G01 X+0.51 Y-20.1 +G01 X+0.633 Y-16.358 +G01 X+1.004 Y-12.654 +G01 X+1.651 Y-8.827 +G01 X+2.532 Y-5.123 +G01 X+2.585 Y-4.93 +G01 X+2.594 Y-2.744 +G01 X+2.744 Y-2.594 +G01 X+4.892 Y-2.597 +G01 X+8.704 Y-1.691 +G01 X+12.407 Y-1.057 +G01 X+16.111 Y-0.672 +G01 X+19.9 Y-0.538 +G01 X+23.642 Y-0.662 +G01 X+27.346 Y-1.038 +G01 X+31.173 Y-1.692 +G01 X+34.877 Y-2.583 +G01 X+35.071 Y-2.637 +G01 X+37.205 Y-2.654 +G01 X+37.354 Y-2.804 +G01 X+37.351 Y-4.892 +G01 X+38.292 Y-8.827 +G01 X+38.941 Y-12.654 +G01 X+39.312 Y-16.358 +G01 X+39.431 Y-20.1 +G01 X+39.288 Y-23.889 +G01 X+38.889 Y-27.593 +G01 X+38.235 Y-31.296 +G01 X+37.301 Y-35.072 +G01 X+37.294 Y-37.144 +G01 X+37.143 Y-37.293 +G01 X+35.108 Y-37.29 +G01 X+31.296 Y-38.218 +G01 X+27.593 Y-38.867 +G01 X+23.889 Y-39.261 +G01 X+20.1 Y-39.398 +G01 X+16.358 Y-39.27 +G01 X+12.654 Y-38.884 +G01 X+8.827 Y-38.212 +G01 X+5.123 Y-37.297 +G01 X+4.93 Y-37.242 +G01 X+2.917 Y-37.223 +G01 X+2.768 Y-37.073 +G01 X+2.771 Y-35.108 +G01 X+1.831 Y-31.296 +G01 X+1.174 Y-27.593 +G01 X+0.774 Y-23.889 +G01 X+0.636 Y-20.327 +G01 X+0.747 Y-16.605 +G01 X+1.121 Y-12.901 +G01 X+1.784 Y-9.074 +G01 X+2.693 Y-5.37 +G01 X+2.819 Y-4.93 +G01 X+2.828 Y-2.978 +G01 X+2.979 Y-2.829 +G01 X+4.891 Y-2.832 +G01 X+8.704 Y-1.88 +G01 X+12.407 Y-1.214 +G01 X+16.111 Y-0.809 +G01 X+19.673 Y-0.669 +G01 X+23.395 Y-0.782 +G01 X+27.099 Y-1.161 +G01 X+30.647 Y-1.773 +G01 X+34.383 Y-2.682 +G01 X+35.07 Y-2.88 +G01 X+36.962 Y-2.9 +G01 X+37.111 Y-3.05 +G01 X+37.108 Y-4.891 +G01 X+38.046 Y-8.58 +G01 X+38.71 Y-12.16 +G01 X+39.127 Y-15.741 +G01 X+39.294 Y-19.246 +G01 X+39.221 Y-22.781 +G01 X+38.897 Y-26.366 +G01 X+38.321 Y-29.951 +G01 X+37.464 Y-33.642 +G01 X+37.059 Y-35.07 +G01 X+37.05 Y-36.9 +G01 X+36.9 Y-37.05 +G01 X+35.109 Y-37.047 +G01 X+31.296 Y-38.024 +G01 X+27.593 Y-38.706 +G01 X+23.889 Y-39.121 +G01 X+20.327 Y-39.265 +G01 X+16.605 Y-39.149 +G01 X+12.901 Y-38.761 +G01 X+9.353 Y-38.133 +G01 X+5.617 Y-37.201 +G01 X+4.93 Y-36.998 +G01 X+3.16 Y-36.977 +G01 X+3.011 Y-36.826 +G01 X+3.014 Y-35.109 +G01 X+2.025 Y-31.296 +G01 X+1.334 Y-27.593 +G01 X+0.914 Y-23.889 +G01 X+0.768 Y-20.327 +G01 X+0.885 Y-16.605 +G01 X+1.279 Y-12.901 +G01 X+1.914 Y-9.353 +G01 X+2.787 Y-5.864 +G01 X+3.062 Y-4.931 +G01 X+3.072 Y-3.222 +G01 X+3.222 Y-3.072 +G01 X+4.89 Y-3.075 +G01 X+8.418 Y-2.139 +G01 X+12.16 Y-1.412 +G01 X+15.741 Y-0.979 +G01 X+19.321 Y-0.804 +G01 X+22.778 Y-0.881 +G01 X+26.235 Y-1.2 +G01 X+29.815 Y-1.787 +G01 X+33.395 Y-2.635 +G01 X+35.07 Y-3.124 +G01 X+36.719 Y-3.147 +G01 X+36.868 Y-3.297 +G01 X+36.865 Y-4.89 +G01 X+37.85 Y-8.58 +G01 X+38.548 Y-12.16 +G01 X+38.986 Y-15.741 +G01 X+39.161 Y-19.246 +G01 X+39.085 Y-22.781 +G01 X+38.745 Y-26.366 +G01 X+38.14 Y-29.951 +G01 X+37.24 Y-33.642 +G01 X+36.816 Y-35.069 +G01 X+36.807 Y-36.657 +G01 X+36.657 Y-36.807 +G01 X+35.11 Y-36.804 +G01 X+31.582 Y-37.762 +G01 X+28.086 Y-38.467 +G01 X+24.507 Y-38.928 +G01 X+20.955 Y-39.125 +G01 X+17.469 Y-39.065 +G01 X+14.012 Y-38.756 +G01 X+10.432 Y-38.174 +G01 X+6.875 Y-37.329 +G01 X+4.93 Y-36.755 +G01 X+3.402 Y-36.73 +G01 X+3.254 Y-36.58 +G01 X+3.257 Y-35.11 +G01 X+2.287 Y-31.582 +G01 X+1.574 Y-28.086 +G01 X+1.108 Y-24.507 +G01 X+0.908 Y-20.955 +G01 X+0.969 Y-17.469 +G01 X+1.281 Y-14.012 +G01 X+1.871 Y-10.432 +G01 X+2.725 Y-6.875 +G01 X+3.306 Y-4.931 +G01 X+3.315 Y-3.465 +G01 X+3.465 Y-3.315 +G01 X+4.889 Y-3.318 +G01 X+8.418 Y-2.337 +G01 X+11.914 Y-1.616 +G01 X+15.493 Y-1.143 +G01 X+19.045 Y-0.942 +G01 X+22.531 Y-1.003 +G01 X+25.988 Y-1.319 +G01 X+29.568 Y-1.915 +G01 X+33.125 Y-2.779 +G01 X+35.07 Y-3.367 +G01 X+36.476 Y-3.393 +G01 X+36.624 Y-3.543 +G01 X+36.622 Y-4.889 +G01 X+37.593 Y-8.333 +G01 X+38.323 Y-11.79 +G01 X+38.79 Y-15.172 +G01 X+39.015 Y-18.618 +G01 X+38.982 Y-22.16 +G01 X+38.69 Y-25.617 +G01 X+38.116 Y-29.198 +G01 X+37.298 Y-32.654 +G01 X+36.572 Y-35.069 +G01 X+36.564 Y-36.414 +G01 X+36.414 Y-36.564 +G01 X+35.111 Y-36.561 +G01 X+31.582 Y-37.565 +G01 X+28.086 Y-38.303 +G01 X+24.507 Y-38.786 +G01 X+20.955 Y-38.992 +G01 X+17.469 Y-38.93 +G01 X+14.012 Y-38.606 +G01 X+10.432 Y-37.997 +G01 X+6.875 Y-37.112 +G01 X+4.93 Y-36.511 +G01 X+3.645 Y-36.484 +G01 X+3.498 Y-36.334 +G01 X+3.5 Y-35.111 +G01 X+2.485 Y-31.582 +G01 X+1.76 Y-28.21 +G01 X+1.274 Y-24.753 +G01 X+1.049 Y-21.296 +G01 X+1.085 Y-17.84 +G01 X+1.384 Y-14.383 +G01 X+1.94 Y-10.96 +G01 X+2.738 Y-7.593 +G01 X+3.549 Y-4.931 +G01 X+3.558 Y-3.708 +G01 X+3.708 Y-3.558 +G01 X+4.888 Y-3.561 +G01 X+8.418 Y-2.534 +G01 X+11.79 Y-1.801 +G01 X+15.247 Y-1.31 +G01 X+18.704 Y-1.082 +G01 X+22.16 Y-1.119 +G01 X+25.617 Y-1.421 +G01 X+29.04 Y-1.983 +G01 X+32.407 Y-2.79 +G01 X+35.07 Y-3.611 +G01 X+36.234 Y-3.639 +G01 X+36.381 Y-3.789 +G01 X+36.379 Y-4.888 +G01 X+37.395 Y-8.333 +G01 X+38.158 Y-11.79 +G01 X+38.646 Y-15.172 +G01 X+38.882 Y-18.618 +G01 X+38.858 Y-21.924 +G01 X+38.572 Y-25.377 +G01 X+38.042 Y-28.704 +G01 X+37.224 Y-32.168 +G01 X+36.329 Y-35.068 +G01 X+36.321 Y-36.171 +G01 X+36.17 Y-36.32 +G01 X+35.112 Y-36.318 +G01 X+31.582 Y-37.367 +G01 X+28.21 Y-38.116 +G01 X+24.753 Y-38.619 +G01 X+21.296 Y-38.851 +G01 X+17.84 Y-38.814 +G01 X+14.383 Y-38.505 +G01 X+10.96 Y-37.931 +G01 X+7.593 Y-37.106 +G01 X+4.93 Y-36.268 +G01 X+3.887 Y-36.238 +G01 X+3.741 Y-36.088 +G01 X+3.742 Y-35.112 +G01 X+2.682 Y-31.582 +G01 X+1.925 Y-28.21 +G01 X+1.417 Y-24.753 +G01 X+1.182 Y-21.296 +G01 X+1.22 Y-17.84 +G01 X+1.532 Y-14.383 +G01 X+2.112 Y-10.96 +G01 X+2.946 Y-7.593 +G01 X+3.793 Y-4.932 +G01 X+3.801 Y-3.951 +G01 X+3.952 Y-3.802 +G01 X+4.888 Y-3.803 +G01 X+8.418 Y-2.732 +G01 X+11.79 Y-1.967 +G01 X+15.247 Y-1.453 +G01 X+18.704 Y-1.215 +G01 X+22.16 Y-1.253 +G01 X+25.617 Y-1.569 +G01 X+29.04 Y-2.155 +G01 X+32.407 Y-2.998 +G01 X+35.07 Y-3.854 +G01 X+35.992 Y-3.885 +G01 X+36.138 Y-4.035 +G01 X+36.137 Y-4.887 +G01 X+37.197 Y-8.333 +G01 X+37.993 Y-11.79 +G01 X+38.502 Y-15.172 +G01 X+38.748 Y-18.618 +G01 X+38.724 Y-21.924 +G01 X+38.457 Y-25.123 +G01 X+37.919 Y-28.476 +G01 X+37.121 Y-31.809 +G01 X+36.086 Y-35.068 +G01 X+36.077 Y-35.926 +G01 X+36.033 Y-36.031 +G01 X+35.925 Y-36.077 +G01 X+35.113 Y-36.076 +G01 X+31.809 Y-37.108 +G01 X+28.476 Y-37.899 +G01 X+25.123 Y-38.432 +G01 X+21.924 Y-38.694 +G01 X+18.704 Y-38.716 +G01 X+15.494 Y-38.491 +G01 X+12.16 Y-38.001 +G01 X+8.827 Y-37.245 +G01 X+5.37 Y-36.181 +G01 X+4.932 Y-36.026 +G01 X+4.129 Y-35.992 +G01 X+3.984 Y-35.842 +G01 X+3.985 Y-35.113 +G01 X+2.942 Y-31.809 +G01 X+2.143 Y-28.476 +G01 X+1.604 Y-25.123 +G01 X+1.339 Y-21.924 +G01 X+1.318 Y-18.704 +G01 X+1.544 Y-15.494 +G01 X+2.04 Y-12.16 +G01 X+2.803 Y-8.827 +G01 X+3.878 Y-5.37 +G01 X+4.034 Y-4.934 +G01 X+4.045 Y-4.198 +G01 X+4.089 Y-4.092 +G01 X+4.198 Y-4.045 +G01 X+4.886 Y-4.046 +G01 X+8.191 Y-2.993 +G01 X+11.524 Y-2.185 +G01 X+14.877 Y-1.64 +G01 X+18.076 Y-1.373 +G01 X+21.296 Y-1.351 +G01 X+24.506 Y-1.58 +G01 X+27.84 Y-2.08 +G01 X+31.173 Y-2.852 +G01 X+34.383 Y-3.85 +G01 X+35.065 Y-4.095 +G01 X+35.745 Y-4.105 +G01 X+35.895 Y-4.255 +G01 X+35.894 Y-4.886 +G01 X+36.999 Y-8.333 +G01 X+37.778 Y-11.543 +G01 X+38.325 Y-14.877 +G01 X+38.596 Y-18.086 +G01 X+38.617 Y-21.296 +G01 X+38.386 Y-24.507 +G01 X+37.882 Y-27.84 +G01 X+37.137 Y-31.049 +G01 X+36.096 Y-34.383 +G01 X+35.849 Y-35.065 +G01 X+35.839 Y-35.679 +G01 X+35.795 Y-35.785 +G01 X+35.678 Y-35.839 +G01 X+35.114 Y-35.838 +G01 X+31.809 Y-36.912 +G01 X+28.476 Y-37.735 +G01 X+25.123 Y-38.291 +G01 X+21.924 Y-38.564 +G01 X+18.704 Y-38.586 +G01 X+15.494 Y-38.354 +G01 X+12.16 Y-37.844 +G01 X+8.827 Y-37.059 +G01 X+5.617 Y-36.043 +G01 X+4.935 Y-35.793 +G01 X+4.367 Y-35.783 +G01 X+4.218 Y-35.632 +G01 X+4.219 Y-35.114 +G01 X+3.134 Y-31.809 +G01 X+2.303 Y-28.476 +G01 X+1.742 Y-25.123 +G01 X+1.467 Y-21.924 +G01 X+1.444 Y-18.704 +G01 X+1.679 Y-15.494 +G01 X+2.193 Y-12.16 +G01 X+2.986 Y-8.827 +G01 X+4.011 Y-5.617 +G01 X+4.264 Y-4.935 +G01 X+4.274 Y-4.445 +G01 X+4.318 Y-4.339 +G01 X+4.445 Y-4.274 +G01 X+4.886 Y-4.275 +G01 X+8.191 Y-3.18 +G01 X+11.524 Y-2.342 +G01 X+14.877 Y-1.776 +G01 X+18.076 Y-1.498 +G01 X+21.296 Y-1.475 +G01 X+24.506 Y-1.712 +G01 X+27.84 Y-2.231 +G01 X+31.173 Y-3.031 +G01 X+34.383 Y-4.065 +G01 X+35.065 Y-4.32 +G01 X+35.521 Y-4.329 +G01 X+35.67 Y-4.48 +G01 Y-4.886 +G01 X+36.816 Y-8.333 +G01 X+37.625 Y-11.543 +G01 X+38.192 Y-14.877 +G01 X+38.473 Y-18.086 +G01 X+38.499 Y-21.181 +G01 X+38.257 Y-24.507 +G01 X+37.734 Y-27.84 +G01 X+36.963 Y-31.049 +G01 X+35.885 Y-34.383 +G01 X+35.629 Y-35.064 +G01 X+35.619 Y-35.432 +G01 X+35.575 Y-35.538 +G01 X+35.432 Y-35.619 +G01 X+35.115 Y-35.618 +G01 X+31.914 Y-36.701 +G01 X+28.704 Y-37.536 +G01 X+25.377 Y-38.127 +G01 X+22.16 Y-38.432 +G01 X+18.951 Y-38.474 +G01 X+15.741 Y-38.255 +G01 X+12.42 Y-37.75 +G01 X+9.074 Y-36.957 +G01 X+5.864 Y-35.926 +G01 X+4.935 Y-35.577 +G01 X+4.583 Y-35.568 +G01 X+4.433 Y-35.417 +G01 Y-35.115 +G01 X+3.342 Y-31.914 +G01 X+2.5 Y-28.704 +G01 X+1.904 Y-25.377 +G01 X+1.596 Y-22.16 +G01 X+1.554 Y-18.951 +G01 X+1.775 Y-15.741 +G01 X+2.284 Y-12.42 +G01 X+3.083 Y-9.074 +G01 X+4.123 Y-5.864 +G01 X+4.475 Y-4.932 +G01 X+4.499 Y-4.626 +G01 X+4.649 Y-4.484 +G01 X+4.885 Y-4.485 +G01 X+8.086 Y-3.384 +G01 X+11.296 Y-2.535 +G01 X+14.623 Y-1.935 +G01 X+17.84 Y-1.625 +G01 X+21.049 Y-1.582 +G01 X+24.259 Y-1.805 +G01 X+27.346 Y-2.271 +G01 X+30.556 Y-3.02 +G01 X+33.889 Y-4.081 +G01 X+35.064 Y-4.526 +G01 X+35.308 Y-4.535 +G01 X+35.414 Y-4.579 +G01 X+35.464 Y-4.692 +G01 Y-4.885 +G01 X+36.573 Y-8.086 +G01 X+37.429 Y-11.296 +G01 X+38.035 Y-14.63 +G01 X+38.342 Y-17.761 +G01 X+38.392 Y-20.955 +G01 X+38.173 Y-24.187 +G01 X+37.713 Y-27.249 +G01 X+37.008 Y-30.309 +G01 X+36.048 Y-33.395 +G01 X+35.423 Y-35.065 +G01 X+35.413 Y-35.263 +G01 X+35.263 Y-35.413 +G01 X+35.116 +G01 X+31.914 Y-36.531 +G01 X+28.704 Y-37.393 +G01 X+25.617 Y-37.969 +G01 X+22.531 Y-38.296 +G01 X+19.473 Y-38.373 +G01 X+16.358 Y-38.2 +G01 X+13.194 Y-37.762 +G01 X+9.938 Y-37.036 +G01 X+6.605 Y-36.002 +G01 X+4.936 Y-35.371 +G01 X+4.815 Y-35.362 +G01 X+4.709 Y-35.318 +G01 X+4.639 Y-35.185 +G01 X+4.63 Y-35.065 +G01 X+3.512 Y-31.914 +G01 X+2.643 Y-28.704 +G01 X+2.062 Y-25.617 +G01 X+1.733 Y-22.531 +G01 X+1.655 Y-19.473 +G01 X+1.83 Y-16.358 +G01 X+2.271 Y-13.194 +G01 X+3.002 Y-9.938 +G01 X+4.045 Y-6.605 +G01 X+4.68 Y-4.936 +G01 X+4.84 Y-4.69 +G01 X+8.086 Y-3.555 +G01 X+11.296 Y-2.679 +G01 X+14.383 Y-2.094 +G01 X+17.469 Y-1.761 +G01 X+20.527 Y-1.683 +G01 X+23.642 Y-1.859 +G01 X+26.806 Y-2.304 +G01 X+29.815 Y-2.976 +G01 X+32.901 Y-3.917 +G01 X+35.069 Y-4.734 +G01 X+35.259 Y-4.893 +G01 X+36.404 Y-8.086 +G01 X+37.261 Y-11.186 +G01 X+37.864 Y-14.299 +G01 X+38.212 Y-17.469 +G01 X+38.289 Y-20.679 +G01 X+38.115 Y-23.642 +G01 X+37.682 Y-26.728 +G01 X+37.016 Y-29.725 +G01 X+36.045 Y-32.901 +G01 X+35.228 Y-35.06 +G01 X+35.114 Y-35.193 +G01 X+31.914 Y-36.369 +G01 X+28.704 Y-37.258 +G01 X+25.617 Y-37.852 +G01 X+22.531 Y-38.189 +G01 X+19.473 Y-38.269 +G01 X+16.358 Y-38.091 +G01 X+13.194 Y-37.641 +G01 X+10.185 Y-36.961 +G01 X+7.099 Y-36.008 +G01 X+4.94 Y-35.186 +G01 X+4.849 Y-35.113 +G01 X+3.666 Y-31.914 +G01 X+2.771 Y-28.704 +G01 X+2.174 Y-25.617 +G01 X+1.835 Y-22.531 +G01 X+1.754 Y-19.473 +G01 X+1.933 Y-16.358 +G01 X+2.386 Y-13.194 +G01 X+3.07 Y-10.185 +G01 X+4.029 Y-7.099 +G01 X+4.885 Y-4.93 +G01 X+4.973 Y-4.845 +G01 X+8.086 Y-3.701 +G01 X+11.296 Y-2.801 +G01 X+14.383 Y-2.2 +G01 X+17.469 Y-1.858 +G01 X+20.527 Y-1.777 +G01 X+23.642 Y-1.958 +G01 X+26.806 Y-2.413 +G01 X+29.815 Y-3.101 +G01 X+32.901 Y-4.066 +G01 X+35.028 Y-4.886 +G01 X+35.114 Y-4.972 +G01 X+35.928 Y-7.102 +G01 X+36.886 Y-10.19 +G01 X+37.569 Y-13.198 +G01 X+38.019 Y-16.361 +G01 X+38.194 Y-19.473 +G01 X+38.107 Y-22.528 +G01 X+37.757 Y-25.609 +G01 X+37.144 Y-28.688 +G01 X+36.229 Y-31.885 +G01 X+35.067 Y-34.98 +G01 X+34.98 Y-35.068 +G01 X+32.616 Y-35.969 +G01 X+29.417 Y-36.942 +G01 X+26.348 Y-37.609 +G01 X+23.262 Y-38.018 +G01 X+20.326 Y-38.161 +G01 X+17.231 Y-38.052 +G01 X+14.32 Y-37.705 +G01 X+11.224 Y-37.076 +G01 X+8.147 Y-36.185 +G01 X+5.066 Y-35.021 +G01 X+4.979 Y-34.934 +G01 X+4.075 Y-32.581 +G01 X+3.1 Y-29.394 +G01 X+2.429 Y-26.334 +G01 X+2.019 Y-23.256 +G01 X+1.875 Y-20.325 +G01 X+1.985 Y-17.237 +G01 X+2.333 Y-14.332 +G01 X+2.965 Y-11.245 +G01 X+3.859 Y-8.179 +G01 X+5.025 Y-5.112 +G01 X+5.112 Y-5.025 +G01 X+7.454 Y-4.12 +G01 X+10.629 Y-3.141 +G01 X+13.68 Y-2.468 +G01 X+16.751 Y-2.055 +G01 X+19.676 Y-1.911 +G01 X+22.758 Y-2.021 +G01 X+25.656 Y-2.371 +G01 X+28.734 Y-3.005 +G01 X+31.789 Y-3.903 +G01 X+34.842 Y-5.072 +G01 X+34.929 Y-5.158 +G01 X+35.838 Y-7.499 +G01 X+36.784 Y-10.531 +G01 X+37.472 Y-13.58 +G01 X+37.895 Y-16.636 +G01 X+38.051 Y-19.572 +G01 X+37.959 Y-22.507 +G01 X+37.601 Y-25.56 +G01 X+36.977 Y-28.603 +G01 X+36.048 Y-31.752 +G01 X+34.875 Y-34.79 +G01 X+34.79 Y-34.875 +G01 X+32.47 Y-35.784 +G01 X+29.321 Y-36.769 +G01 X+26.29 Y-37.448 +G01 X+23.235 Y-37.864 +G01 X+20.323 Y-38.01 +G01 X+17.255 Y-37.898 +G01 X+14.372 Y-37.544 +G01 X+11.313 Y-36.902 +G01 X+8.284 Y-35.998 +G01 X+5.263 Y-34.822 +G01 X+5.178 Y-34.737 +G01 X+4.18 Y-32.189 +G01 X+3.214 Y-29.053 +G01 X+2.557 Y-26.051 +G01 X+2.155 Y-22.984 +G01 X+2.03 Y-20.099 +G01 X+2.143 Y-17.261 +G01 X+2.5 Y-14.386 +G01 X+3.144 Y-11.337 +G01 X+4.052 Y-8.321 +G01 X+5.231 Y-5.315 +G01 X+5.315 Y-5.231 +G01 X+7.85 Y-4.231 +G01 X+10.973 Y-3.261 +G01 X+13.964 Y-2.601 +G01 X+17.017 Y-2.198 +G01 X+19.901 Y-2.07 +G01 X+22.733 Y-2.185 +G01 X+25.6 Y-2.543 +G01 X+28.639 Y-3.191 +G01 X+31.642 Y-4.102 +G01 X+34.632 Y-5.284 +G01 X+34.716 Y-5.368 +G01 X+35.635 Y-7.659 +G01 X+36.594 Y-10.638 +G01 X+37.295 Y-13.645 +G01 X+37.727 Y-16.66 +G01 X+37.887 Y-19.576 +G01 X+37.794 Y-22.478 +G01 X+37.428 Y-25.498 +G01 X+36.791 Y-28.508 +G01 X+35.848 Y-31.606 +G01 X+34.663 Y-34.58 +G01 X+34.58 Y-34.663 +G01 X+32.072 Y-35.668 +G01 X+28.977 Y-36.645 +G01 X+26.012 Y-37.31 +G01 X+22.969 Y-37.719 +G01 X+20.098 Y-37.848 +G01 X+17.28 Y-37.732 +G01 X+14.428 Y-37.37 +G01 X+11.409 Y-36.716 +G01 X+8.431 Y-35.797 +G01 X+5.473 Y-34.61 +G01 X+5.39 Y-34.527 +G01 X+4.382 Y-32.033 +G01 X+3.402 Y-28.951 +G01 X+2.734 Y-25.997 +G01 X+2.323 Y-22.962 +G01 X+2.193 Y-20.098 +G01 X+2.309 Y-17.286 +G01 X+2.673 Y-14.448 +G01 X+3.331 Y-11.433 +G01 X+4.253 Y-8.468 +G01 X+5.443 Y-5.525 +G01 X+5.525 Y-5.443 +G01 X+8.006 Y-4.433 +G01 X+11.074 Y-3.449 +G01 X+14.019 Y-2.778 +G01 X+17.044 Y-2.364 +G01 X+19.902 Y-2.234 +G01 X+22.707 Y-2.351 +G01 X+25.538 Y-2.716 +G01 X+28.543 Y-3.378 +G01 X+31.496 Y-4.303 +G01 X+34.422 Y-5.496 +G01 X+34.504 Y-5.578 +G01 X+35.432 Y-7.82 +G01 X+36.404 Y-10.745 +G01 X+37.117 Y-13.704 +G01 X+37.56 Y-16.692 +G01 X+37.724 Y-19.573 +G01 X+37.628 Y-22.454 +G01 X+37.255 Y-25.443 +G01 X+36.606 Y-28.407 +G01 X+35.647 Y-31.459 +G01 X+34.451 Y-34.37 +G01 X+34.37 Y-34.451 +G01 X+31.916 Y-35.466 +G01 X+28.881 Y-36.455 +G01 X+25.951 Y-37.135 +G01 X+22.942 Y-37.553 +G01 X+20.104 Y-37.684 +G01 X+17.312 Y-37.567 +G01 X+14.49 Y-37.197 +G01 X+11.511 Y-36.531 +G01 X+8.578 Y-35.597 +G01 X+5.683 Y-34.398 +G01 X+5.602 Y-34.317 +G01 X+4.585 Y-31.877 +G01 X+3.592 Y-28.856 +G01 X+2.909 Y-25.936 +G01 X+2.489 Y-22.935 +G01 X+2.356 Y-20.104 +G01 X+2.475 Y-17.319 +G01 X+2.847 Y-14.504 +G01 X+3.516 Y-11.535 +G01 X+4.453 Y-8.615 +G01 X+5.655 Y-5.735 +G01 X+5.735 Y-5.655 +G01 X+8.162 Y-4.635 +G01 X+11.169 Y-3.639 +G01 X+14.079 Y-2.953 +G01 X+17.072 Y-2.531 +G01 X+19.896 Y-2.397 +G01 X+22.675 Y-2.516 +G01 X+25.482 Y-2.89 +G01 X+28.441 Y-3.563 +G01 X+31.349 Y-4.503 +G01 X+34.212 Y-5.708 +G01 X+34.292 Y-5.788 +G01 X+35.4 Y-8.43 +G01 X+36.355 Y-11.343 +G01 X+37.031 Y-14.239 +G01 X+37.428 Y-17.079 +G01 X+37.562 Y-19.815 +G01 X+37.442 Y-22.672 +G01 X+37.038 Y-25.624 +G01 X+36.355 Y-28.545 +G01 X+35.447 Y-31.312 +G01 X+34.239 Y-34.159 +G01 X+34.159 Y-34.239 +G01 X+31.54 Y-35.347 +G01 X+28.773 Y-36.269 +G01 X+25.89 Y-36.959 +G01 X+22.914 Y-37.386 +G01 X+20.103 Y-37.521 +G01 X+17.338 Y-37.401 +G01 X+14.546 Y-37.023 +G01 X+11.607 Y-36.344 +G01 X+8.725 Y-35.397 +G01 X+5.893 Y-34.186 +G01 X+5.814 Y-34.107 +G01 X+4.703 Y-31.502 +G01 X+3.779 Y-28.748 +G01 X+3.085 Y-25.875 +G01 X+2.655 Y-22.907 +G01 X+2.52 Y-20.103 +G01 X+2.641 Y-17.344 +G01 X+3.021 Y-14.56 +G01 X+3.703 Y-11.631 +G01 X+4.654 Y-8.761 +G01 X+5.867 Y-5.946 +G01 X+5.946 Y-5.867 +G01 X+8.536 Y-4.754 +G01 X+11.271 Y-3.828 +G01 X+14.14 Y-3.129 +G01 X+17.1 Y-2.697 +G01 X+19.897 Y-2.56 +G01 X+22.649 Y-2.682 +G01 X+25.426 Y-3.064 +G01 X+28.345 Y-3.749 +G01 X+31.202 Y-4.704 +G01 X+34.005 Y-5.921 +G01 X+34.081 Y-5.994 +G01 X+34.147 Y-6.134 +G01 X+35.37 Y-9.031 +G01 X+36.257 Y-11.755 +G01 X+36.921 Y-14.648 +G01 X+37.283 Y-17.342 +G01 X+37.399 Y-20.089 +G01 X+37.254 Y-22.878 +G01 X+36.863 Y-25.566 +G01 X+36.167 Y-28.447 +G01 X+35.246 Y-31.165 +G01 X+34.027 Y-33.949 +G01 X+33.949 Y-34.027 +G01 X+31.157 Y-35.236 +G01 X+28.45 Y-36.145 +G01 X+25.571 Y-36.834 +G01 X+22.886 Y-37.22 +G01 X+20.103 Y-37.358 +G01 X+17.363 Y-37.235 +G01 X+14.602 Y-36.849 +G01 X+11.703 Y-36.157 +G01 X+8.878 Y-35.198 +G01 X+6.103 Y-33.974 +G01 X+6.026 Y-33.897 +G01 X+4.815 Y-31.121 +G01 X+3.902 Y-28.426 +G01 X+3.21 Y-25.556 +G01 X+2.822 Y-22.879 +G01 X+2.683 Y-20.103 +G01 X+2.807 Y-17.37 +G01 X+3.195 Y-14.616 +G01 X+3.889 Y-11.727 +G01 X+4.852 Y-8.914 +G01 X+6.079 Y-6.156 +G01 X+6.156 Y-6.079 +G01 X+8.916 Y-4.865 +G01 X+11.599 Y-3.949 +G01 X+14.458 Y-3.254 +G01 X+17.128 Y-2.864 +G01 X+19.898 Y-2.724 +G01 X+22.624 Y-2.848 +G01 X+25.37 Y-3.238 +G01 X+28.248 Y-3.936 +G01 X+31.049 Y-4.902 +G01 X+33.795 Y-6.134 +G01 X+33.868 Y-6.204 +G01 X+33.936 Y-6.341 +G01 X+35.171 Y-9.173 +G01 X+36.07 Y-11.849 +G01 X+36.747 Y-14.703 +G01 X+37.117 Y-17.367 +G01 X+37.235 Y-20.088 +G01 X+37.088 Y-22.85 +G01 X+36.689 Y-25.508 +G01 X+35.98 Y-28.349 +G01 X+35.048 Y-31.012 +G01 X+33.813 Y-33.742 +G01 X+33.743 Y-33.815 +G01 X+33.393 Y-33.987 +G01 X+30.722 Y-35.147 +G01 X+27.919 Y-36.083 +G01 X+25.284 Y-36.704 +G01 X+22.63 Y-37.075 +G01 X+19.833 Y-37.194 +G01 X+17.088 Y-37.039 +G01 X+14.392 Y-36.622 +G01 X+11.799 Y-35.971 +G01 X+9.025 Y-34.998 +G01 X+6.31 Y-33.76 +G01 X+6.238 Y-33.691 +G01 X+6.066 Y-33.343 +G01 X+4.903 Y-30.687 +G01 X+3.963 Y-27.897 +G01 X+3.34 Y-25.27 +G01 X+2.967 Y-22.623 +G01 X+2.847 Y-19.833 +G01 X+3.003 Y-17.096 +G01 X+3.422 Y-14.407 +G01 X+4.076 Y-11.823 +G01 X+5.052 Y-9.061 +G01 X+6.293 Y-6.363 +G01 X+6.707 Y-6.118 +G01 X+9.348 Y-4.953 +G01 X+12.126 Y-4.01 +G01 X+14.744 Y-3.383 +G01 X+17.383 Y-3.008 +G01 X+20.166 Y-2.887 +G01 X+22.897 Y-3.045 +G01 X+25.579 Y-3.465 +G01 X+28.153 Y-4.122 +G01 X+30.902 Y-5.102 +G01 X+33.585 Y-6.346 +G01 X+33.829 Y-6.758 +G01 X+35.054 Y-9.526 +G01 X+35.949 Y-12.166 +G01 X+36.573 Y-14.757 +G01 X+36.951 Y-17.393 +G01 X+37.072 Y-20.087 +G01 X+36.922 Y-22.822 +G01 X+36.514 Y-25.45 +G01 X+35.793 Y-28.251 +G01 X+34.848 Y-30.865 +G01 X+33.601 Y-33.533 +G01 X+33.192 Y-33.776 +G01 X+30.582 Y-34.948 +G01 X+27.828 Y-35.898 +G01 X+25.229 Y-36.53 +G01 X+22.604 Y-36.909 +G01 X+19.835 Y-37.031 +G01 X+17.117 Y-36.872 +G01 X+14.451 Y-36.447 +G01 X+11.895 Y-35.784 +G01 X+9.172 Y-34.798 +G01 X+6.52 Y-33.548 +G01 X+6.172 Y-32.934 +G01 X+5.003 Y-30.298 +G01 X+4.079 Y-27.567 +G01 X+3.472 Y-24.995 +G01 X+3.111 Y-22.365 +G01 X+3.01 Y-19.835 +G01 X+3.169 Y-17.124 +G01 X+3.597 Y-14.466 +G01 X+4.262 Y-11.919 +G01 X+5.252 Y-9.208 +G01 X+6.505 Y-6.573 +G01 X+7.115 Y-6.225 +G01 X+9.736 Y-5.053 +G01 X+12.455 Y-4.125 +G01 X+15.018 Y-3.515 +G01 X+17.64 Y-3.152 +G01 X+20.165 Y-3.051 +G01 X+22.869 Y-3.211 +G01 X+25.519 Y-3.64 +G01 X+28.057 Y-4.309 +G01 X+30.755 Y-5.303 +G01 X+33.375 Y-6.558 +G01 X+33.825 Y-7.37 +G01 X+35.023 Y-10.09 +G01 X+35.892 Y-12.697 +G01 X+36.485 Y-15.262 +G01 X+36.835 Y-17.989 +G01 X+36.901 Y-20.623 +G01 X+36.716 Y-23.135 +G01 X+36.286 Y-25.642 +G01 X+35.606 Y-28.153 +G01 X+34.647 Y-30.718 +G01 X+33.389 Y-33.323 +G01 X+32.787 Y-33.67 +G01 X+30.196 Y-34.848 +G01 X+27.502 Y-35.783 +G01 X+24.956 Y-36.398 +G01 X+22.235 Y-36.775 +G01 X+19.519 Y-36.863 +G01 X+16.873 Y-36.674 +G01 X+14.288 Y-36.223 +G01 X+11.793 Y-35.533 +G01 X+9.318 Y-34.597 +G01 X+6.73 Y-33.336 +G01 X+6.279 Y-32.535 +G01 X+5.116 Y-29.951 +G01 X+4.231 Y-27.371 +G01 X+3.601 Y-24.713 +G01 X+3.266 Y-22.229 +G01 X+3.178 Y-19.521 +G01 X+3.368 Y-16.881 +G01 X+3.821 Y-14.303 +G01 X+4.513 Y-11.817 +G01 X+5.453 Y-9.355 +G01 X+6.717 Y-6.783 +G01 X+7.513 Y-6.332 +G01 X+10.082 Y-5.165 +G01 X+12.65 Y-4.277 +G01 X+15.299 Y-3.644 +G01 X+17.777 Y-3.308 +G01 X+20.478 Y-3.219 +G01 X+23.111 Y-3.41 +G01 X+25.681 Y-3.865 +G01 X+28.158 Y-4.56 +G01 X+30.608 Y-5.503 +G01 X+33.165 Y-6.77 +G01 X+33.719 Y-7.761 +G01 X+34.827 Y-10.219 +G01 X+35.709 Y-12.78 +G01 X+36.313 Y-15.311 +G01 X+36.67 Y-18.008 +G01 X+36.737 Y-20.617 +G01 X+36.548 Y-23.104 +G01 X+36.11 Y-25.581 +G01 X+35.419 Y-28.055 +G01 X+34.447 Y-30.572 +G01 X+33.177 Y-33.112 +G01 X+32.192 Y-33.667 +G01 X+29.644 Y-34.82 +G01 X+27.09 Y-35.695 +G01 X+24.565 Y-36.29 +G01 X+21.987 Y-36.629 +G01 X+19.524 Y-36.7 +G01 X+16.905 Y-36.507 +G01 X+14.35 Y-36.047 +G01 X+11.892 Y-35.346 +G01 X+9.465 Y-34.397 +G01 X+6.94 Y-33.124 +G01 X+6.385 Y-32.146 +G01 X+5.229 Y-29.613 +G01 X+4.351 Y-27.07 +G01 X+3.753 Y-24.553 +G01 X+3.413 Y-21.982 +G01 X+3.341 Y-19.525 +G01 X+3.535 Y-16.912 +G01 X+3.997 Y-14.365 +G01 X+4.701 Y-11.917 +G01 X+5.653 Y-9.502 +G01 X+6.93 Y-6.992 +G01 X+7.901 Y-6.437 +G01 X+10.419 Y-5.278 +G01 X+12.951 Y-4.397 +G01 X+15.459 Y-3.796 +G01 X+18.023 Y-3.454 +G01 X+20.474 Y-3.382 +G01 X+23.08 Y-3.577 +G01 X+25.619 Y-4.041 +G01 X+28.058 Y-4.748 +G01 X+30.461 Y-5.703 +G01 X+32.955 Y-6.983 +G01 X+33.625 Y-8.169 +G01 X+34.756 Y-10.657 +G01 X+35.623 Y-13.196 +G01 X+36.19 Y-15.625 +G01 X+36.505 Y-18.028 +G01 X+36.574 Y-20.61 +G01 X+36.381 Y-23.072 +G01 X+35.935 Y-25.52 +G01 X+35.232 Y-27.957 +G01 X+34.247 Y-30.425 +G01 X+32.964 Y-32.902 +G01 X+31.812 Y-33.56 +G01 X+29.312 Y-34.707 +G01 X+26.795 Y-35.574 +G01 X+24.298 Y-36.159 +G01 X+21.753 Y-36.48 +G01 X+19.323 Y-36.531 +G01 X+16.936 Y-36.339 +G01 X+14.412 Y-35.871 +G01 X+11.991 Y-35.158 +G01 X+9.612 Y-34.197 +G01 X+7.15 Y-32.911 +G01 X+6.492 Y-31.767 +G01 X+5.341 Y-29.282 +G01 X+4.471 Y-26.775 +G01 X+3.884 Y-24.286 +G01 X+3.561 Y-21.749 +G01 X+3.51 Y-19.325 +G01 X+3.702 Y-16.944 +G01 X+4.173 Y-14.428 +G01 X+4.889 Y-12.016 +G01 X+5.853 Y-9.649 +G01 X+7.142 Y-7.202 +G01 X+8.279 Y-6.544 +G01 X+10.749 Y-5.39 +G01 X+13.245 Y-4.516 +G01 X+15.725 Y-3.926 +G01 X+18.256 Y-3.603 +G01 X+20.673 Y-3.551 +G01 X+23.048 Y-3.744 +G01 X+25.557 Y-4.217 +G01 X+27.959 Y-4.935 +G01 X+30.314 Y-5.903 +G01 X+32.745 Y-7.195 +G01 X+33.418 Y-8.349 +G01 X+34.562 Y-10.78 +G01 X+35.441 Y-13.275 +G01 X+36.018 Y-15.671 +G01 X+36.34 Y-18.047 +G01 X+36.411 Y-20.604 +G01 X+36.214 Y-23.04 +G01 X+35.759 Y-25.459 +G01 X+35.044 Y-27.859 +G01 X+34.046 Y-30.278 +G01 X+32.752 Y-32.693 +G01 X+31.631 Y-33.353 +G01 X+29.189 Y-34.513 +G01 X+26.716 Y-35.393 +G01 X+24.252 Y-35.988 +G01 X+21.736 Y-36.315 +G01 X+19.33 Y-36.368 +G01 X+16.968 Y-36.172 +G01 X+14.474 Y-35.695 +G01 X+12.091 Y-34.971 +G01 X+9.759 Y-33.996 +G01 X+7.359 Y-32.699 +G01 X+6.699 Y-31.586 +G01 X+5.536 Y-29.159 +G01 X+4.653 Y-26.696 +G01 X+4.054 Y-24.241 +G01 X+3.726 Y-21.731 +G01 X+3.673 Y-19.332 +G01 X+3.87 Y-16.975 +G01 X+4.349 Y-14.49 +G01 X+5.076 Y-12.116 +G01 X+6.054 Y-9.796 +G01 X+7.355 Y-7.412 +G01 X+8.459 Y-6.751 +G01 X+10.872 Y-5.584 +G01 X+13.323 Y-4.698 +G01 X+15.77 Y-4.097 +G01 X+18.273 Y-3.767 +G01 X+20.666 Y-3.714 +G01 X+23.017 Y-3.911 +G01 X+25.495 Y-4.393 +G01 X+27.859 Y-5.123 +G01 X+30.167 Y-6.104 +G01 X+32.536 Y-7.408 +G01 X+33.21 Y-8.528 +G01 X+34.367 Y-10.903 +G01 X+35.26 Y-13.354 +G01 X+35.847 Y-15.717 +G01 X+36.175 Y-18.066 +G01 X+36.247 Y-20.598 +G01 X+36.047 Y-23.009 +G01 X+35.584 Y-25.397 +G01 X+34.857 Y-27.761 +G01 X+33.846 Y-30.131 +G01 X+32.539 Y-32.483 +G01 X+31.451 Y-33.146 +G01 X+29.067 Y-34.318 +G01 X+26.637 Y-35.211 +G01 X+24.207 Y-35.817 +G01 X+21.719 Y-36.151 +G01 X+19.337 Y-36.204 +G01 X+16.999 Y-36.005 +G01 X+14.537 Y-35.519 +G01 X+12.19 Y-34.783 +G01 X+9.906 Y-33.796 +G01 X+7.569 Y-32.486 +G01 X+6.906 Y-31.406 +G01 X+5.73 Y-29.036 +G01 X+4.834 Y-26.618 +G01 X+4.225 Y-24.196 +G01 X+3.891 Y-21.714 +G01 X+3.837 Y-19.339 +G01 X+4.037 Y-17.007 +G01 X+4.525 Y-14.552 +G01 X+5.264 Y-12.215 +G01 X+6.254 Y-9.943 +G01 X+7.567 Y-7.621 +G01 X+8.64 Y-6.958 +G01 X+10.995 Y-5.779 +G01 X+13.402 Y-4.879 +G01 X+15.815 Y-4.268 +G01 X+18.29 Y-3.932 +G01 X+20.659 Y-3.877 +G01 X+22.985 Y-4.079 +G01 X+25.432 Y-4.569 +G01 X+27.76 Y-5.31 +G01 X+30.021 Y-6.304 +G01 X+32.326 Y-7.62 +G01 X+33.003 Y-8.708 +G01 X+34.172 Y-11.026 +G01 X+35.079 Y-13.432 +G01 X+35.689 Y-15.827 +G01 X+36.028 Y-18.303 +G01 X+36.084 Y-20.592 +G01 X+35.88 Y-22.977 +G01 X+35.408 Y-25.336 +G01 X+34.67 Y-27.663 +G01 X+33.646 Y-29.984 +G01 X+32.327 Y-32.273 +G01 X+30.908 Y-33.143 +G01 X+28.555 Y-34.292 +G01 X+26.273 Y-35.118 +G01 X+23.95 Y-35.687 +G01 X+21.701 Y-35.986 +G01 X+19.344 Y-36.041 +G01 X+17.031 Y-35.838 +G01 X+14.599 Y-35.343 +G01 X+12.29 Y-34.596 +G01 X+10.053 Y-33.596 +G01 X+7.78 Y-32.274 +G01 X+6.613 Y-30.324 +G01 X+5.555 Y-28.038 +G01 X+4.799 Y-25.822 +G01 X+4.262 Y-23.407 +G01 X+4.013 Y-21.046 +G01 X+4.025 Y-18.794 +G01 X+4.281 Y-16.549 +G01 X+4.78 Y-14.325 +G01 X+5.539 Y-12.091 +G01 X+6.551 Y-9.905 +G01 X+7.779 Y-7.832 +G01 X+9.715 Y-6.664 +G01 X+11.988 Y-5.602 +G01 X+14.195 Y-4.844 +G01 X+16.602 Y-4.304 +G01 X+18.957 Y-4.054 +G01 X+21.203 Y-4.066 +G01 X+23.441 Y-4.323 +G01 X+25.658 Y-4.824 +G01 X+27.883 Y-5.586 +G01 X+30.057 Y-6.601 +G01 X+32.115 Y-7.832 +G01 X+33.382 Y-9.936 +G01 X+34.39 Y-12.112 +G01 X+35.147 Y-14.335 +G01 X+35.654 Y-16.611 +G01 X+35.9 Y-18.859 +G01 X+35.897 Y-21.124 +G01 X+35.646 Y-23.37 +G01 X+35.155 Y-25.56 +G01 X+34.406 Y-27.76 +G01 X+33.345 Y-30.025 +G01 X+32.114 Y-32.063 +G01 X+30.207 Y-33.235 +G01 X+27.96 Y-34.303 +G01 X+25.771 Y-35.067 +G01 X+23.38 Y-35.612 +G01 X+21.038 Y-35.864 +G01 X+18.804 Y-35.852 +G01 X+16.577 Y-35.593 +G01 X+14.375 Y-35.087 +G01 X+12.169 Y-34.319 +G01 X+10.019 Y-33.298 +G01 X+7.989 Y-32.061 +G01 X+6.722 Y-29.994 +G01 X+5.665 Y-27.74 +G01 X+4.919 Y-25.55 +G01 X+4.43 Y-23.371 +G01 X+4.177 Y-21.036 +G01 X+4.189 Y-18.807 +G01 X+4.449 Y-16.587 +G01 X+4.957 Y-14.392 +G01 X+5.728 Y-12.195 +G01 X+6.752 Y-10.056 +G01 X+7.992 Y-8.042 +G01 X+10.044 Y-6.772 +G01 X+12.285 Y-5.712 +G01 X+14.466 Y-4.963 +G01 X+16.638 Y-4.473 +G01 X+18.967 Y-4.218 +G01 X+21.19 Y-4.23 +G01 X+23.404 Y-4.492 +G01 X+25.592 Y-5.001 +G01 X+27.78 Y-5.775 +G01 X+29.906 Y-6.802 +G01 X+31.906 Y-8.045 +G01 X+33.181 Y-10.088 +G01 X+34.201 Y-12.215 +G01 X+34.993 Y-14.482 +G01 X+35.485 Y-16.647 +G01 X+35.736 Y-18.87 +G01 X+35.733 Y-21.113 +G01 X+35.477 Y-23.334 +G01 X+34.978 Y-25.495 +G01 X+34.218 Y-27.658 +G01 X+33.144 Y-29.873 +G01 X+31.902 Y-31.854 +G01 X+29.88 Y-33.127 +G01 X+27.664 Y-34.193 +G01 X+25.502 Y-34.949 +G01 X+23.344 Y-35.443 +G01 X+21.028 Y-35.7 +G01 X+18.816 Y-35.688 +G01 X+16.571 Y-35.416 +G01 X+14.441 Y-34.91 +G01 X+12.272 Y-34.13 +G01 X+10.17 Y-33.097 +G01 X+8.199 Y-31.848 +G01 X+6.924 Y-29.843 +G01 X+5.854 Y-27.639 +G01 X+5.096 Y-25.485 +G01 X+4.599 Y-23.335 +G01 X+4.341 Y-21.025 +G01 X+4.353 Y-18.82 +G01 X+4.626 Y-16.581 +G01 X+5.134 Y-14.458 +G01 X+5.917 Y-12.298 +G01 X+6.953 Y-10.208 +G01 X+8.205 Y-8.251 +G01 X+10.195 Y-6.974 +G01 X+12.387 Y-5.901 +G01 X+14.531 Y-5.14 +G01 X+16.674 Y-4.641 +G01 X+18.977 Y-4.382 +G01 X+21.177 Y-4.394 +G01 X+23.41 Y-4.668 +G01 X+25.526 Y-5.178 +G01 X+27.676 Y-5.964 +G01 X+29.754 Y-7.004 +G01 X+31.697 Y-8.258 +G01 X+32.979 Y-10.239 +G01 X+34.012 Y-12.318 +G01 X+34.816 Y-14.547 +G01 X+35.317 Y-16.684 +G01 X+35.572 Y-18.882 +G01 X+35.57 Y-21.101 +G01 X+35.309 Y-23.297 +G01 X+34.741 Y-25.628 +G01 X+33.948 Y-27.743 +G01 X+32.943 Y-29.722 +G01 X+31.689 Y-31.644 +G01 X+29.729 Y-32.925 +G01 X+27.563 Y-34.005 +G01 X+25.437 Y-34.772 +G01 X+23.308 Y-35.275 +G01 X+21.017 Y-35.536 +G01 X+18.829 Y-35.524 +G01 X+16.609 Y-35.248 +G01 X+14.508 Y-34.733 +G01 X+12.376 Y-33.942 +G01 X+10.322 Y-32.896 +G01 X+8.408 Y-31.635 +G01 X+7.125 Y-29.691 +G01 X+6.042 Y-27.537 +G01 X+5.273 Y-25.421 +G01 X+4.767 Y-23.299 +G01 X+4.505 Y-21.015 +G01 X+4.517 Y-18.832 +G01 X+4.794 Y-16.619 +G01 X+5.311 Y-14.524 +G01 X+6.106 Y-12.402 +G01 X+7.155 Y-10.36 +G01 X+8.42 Y-8.457 +G01 X+8.569 Y-8.337 +G01 X+10.523 Y-7.073 +G01 X+12.488 Y-6.089 +G01 X+14.596 Y-5.317 +G01 X+16.71 Y-4.81 +G01 X+18.988 Y-4.546 +G01 X+21.165 Y-4.558 +G01 X+23.372 Y-4.837 +G01 X+25.459 Y-5.356 +G01 X+27.572 Y-6.153 +G01 X+29.603 Y-7.205 +G01 X+31.491 Y-8.474 +G01 X+31.61 Y-8.621 +G01 X+32.876 Y-10.56 +G01 X+33.914 Y-12.631 +G01 X+34.697 Y-14.808 +G01 X+35.184 Y-16.924 +G01 X+35.419 Y-19.102 +G01 X+35.384 Y-21.401 +G01 X+35.093 Y-23.507 +G01 X+34.563 Y-25.56 +G01 X+33.759 Y-27.638 +G01 X+32.742 Y-29.57 +G01 X+31.473 Y-31.438 +G01 X+31.328 Y-31.558 +G01 X+29.403 Y-32.826 +G01 X+27.461 Y-33.816 +G01 X+25.372 Y-34.595 +G01 X+23.272 Y-35.106 +G01 X+21.007 Y-35.373 +G01 X+18.842 Y-35.36 +G01 X+16.647 Y-35.079 +G01 X+14.574 Y-34.556 +G01 X+12.48 Y-33.753 +G01 X+10.473 Y-32.695 +G01 X+8.614 Y-31.42 +G01 X+8.495 Y-31.276 +G01 X+7.224 Y-29.367 +G01 X+6.231 Y-27.435 +G01 X+5.45 Y-25.356 +G01 X+4.936 Y-23.262 +G01 X+4.668 Y-21.004 +G01 X+4.681 Y-18.845 +G01 X+4.963 Y-16.656 +G01 X+5.488 Y-14.591 +G01 X+6.294 Y-12.506 +G01 X+7.356 Y-10.511 +G01 X+8.634 Y-8.666 +G01 X+8.776 Y-8.548 +G01 X+10.67 Y-7.274 +G01 X+12.59 Y-6.278 +G01 X+14.66 Y-5.494 +G01 X+16.747 Y-4.978 +G01 X+18.998 Y-4.709 +G01 X+21.152 Y-4.722 +G01 X+23.334 Y-5.005 +G01 X+25.393 Y-5.533 +G01 X+27.468 Y-6.341 +G01 X+29.451 Y-7.406 +G01 X+31.281 Y-8.687 +G01 X+31.512 Y-8.977 +G01 X+32.774 Y-10.873 +G01 X+33.8 Y-12.898 +G01 X+34.521 Y-14.87 +G01 X+35.016 Y-16.958 +G01 X+35.256 Y-19.111 +G01 X+35.219 Y-21.386 +G01 X+34.924 Y-23.467 +G01 X+34.385 Y-25.492 +G01 X+33.569 Y-27.532 +G01 X+32.54 Y-29.419 +G01 X+31.26 Y-31.229 +G01 X+30.973 Y-31.459 +G01 X+29.187 Y-32.667 +G01 X+27.179 Y-33.709 +G01 X+25.217 Y-34.446 +G01 X+23.034 Y-34.974 +G01 X+20.996 Y-35.209 +G01 X+18.855 Y-35.196 +G01 X+16.685 Y-34.91 +G01 X+14.641 Y-34.379 +G01 X+12.583 Y-33.564 +G01 X+10.625 Y-32.493 +G01 X+8.824 Y-31.207 +G01 X+8.481 Y-30.775 +G01 X+7.292 Y-29 +G01 X+6.258 Y-26.974 +G01 X+5.544 Y-25.024 +G01 X+5.068 Y-23.025 +G01 X+4.832 Y-20.994 +G01 X+4.845 Y-18.858 +G01 X+5.132 Y-16.694 +G01 X+5.666 Y-14.657 +G01 X+6.483 Y-12.609 +G01 X+7.557 Y-10.663 +G01 X+8.847 Y-8.876 +G01 X+9.274 Y-8.533 +G01 X+11.035 Y-7.342 +G01 X+13.05 Y-6.305 +G01 X+14.991 Y-5.588 +G01 X+16.984 Y-5.11 +G01 X+19.009 Y-4.873 +G01 X+21.139 Y-4.886 +G01 X+23.296 Y-5.174 +G01 X+25.326 Y-5.71 +G01 X+27.365 Y-6.53 +G01 X+29.299 Y-7.607 +G01 X+31.072 Y-8.9 +G01 X+31.301 Y-9.178 +G01 X+32.574 Y-11.015 +G01 X+33.613 Y-12.993 +G01 X+34.345 Y-14.932 +G01 X+34.848 Y-16.992 +G01 X+35.092 Y-19.12 +G01 X+35.055 Y-21.371 +G01 X+34.755 Y-23.428 +G01 X+34.208 Y-25.423 +G01 X+33.38 Y-27.427 +G01 X+32.339 Y-29.267 +G01 X+31.047 Y-31.019 +G01 X+30.627 Y-31.362 +G01 X+28.894 Y-32.558 +G01 X+26.903 Y-33.602 +G01 X+24.979 Y-34.324 +G01 X+23 Y-34.806 +G01 X+20.986 Y-35.045 +G01 X+18.867 Y-35.032 +G01 X+16.764 Y-34.75 +G01 X+14.782 Y-34.227 +G01 X+12.886 Y-33.471 +G01 X+11.094 Y-32.495 +G01 X+9.289 Y-31.206 +G01 X+8.698 Y-30.587 +G01 X+7.492 Y-28.859 +G01 X+6.445 Y-26.879 +G01 X+5.72 Y-24.963 +G01 X+5.236 Y-22.991 +G01 X+4.996 Y-20.983 +G01 X+5.009 Y-18.87 +G01 X+5.292 Y-16.773 +G01 X+5.818 Y-14.798 +G01 X+6.576 Y-12.911 +G01 X+7.555 Y-11.129 +G01 X+8.847 Y-9.339 +G01 X+9.463 Y-8.751 +G01 X+11.176 Y-7.541 +G01 X+13.144 Y-6.491 +G01 X+15.052 Y-5.764 +G01 X+17.017 Y-5.278 +G01 X+19.019 Y-5.037 +G01 X+21.126 Y-5.05 +G01 X+23.258 Y-5.343 +G01 X+25.26 Y-5.887 +G01 X+27.261 Y-6.719 +G01 X+29.148 Y-7.808 +G01 X+30.863 Y-9.114 +G01 X+31.091 Y-9.38 +G01 X+32.375 Y-11.157 +G01 X+33.351 Y-12.929 +G01 X+34.108 Y-14.806 +G01 X+34.643 Y-16.828 +G01 X+34.917 Y-18.927 +G01 X+34.914 Y-21.053 +G01 X+34.635 Y-23.151 +G01 X+34.094 Y-25.168 +G01 X+33.277 Y-27.149 +G01 X+32.287 Y-28.89 +G01 X+31.047 Y-30.561 +G01 X+30.439 Y-31.145 +G01 X+28.754 Y-32.359 +G01 X+26.809 Y-33.416 +G01 X+24.918 Y-34.148 +G01 X+22.966 Y-34.638 +G01 X+20.976 Y-34.881 +G01 X+18.88 Y-34.868 +G01 X+16.76 Y-34.573 +G01 X+14.847 Y-34.05 +G01 X+12.985 Y-33.283 +G01 X+11.236 Y-32.296 +G01 X+9.489 Y-30.994 +G01 X+8.907 Y-30.389 +G01 X+7.691 Y-28.719 +G01 X+6.631 Y-26.785 +G01 X+5.895 Y-24.903 +G01 X+5.404 Y-22.957 +G01 X+5.16 Y-20.973 +G01 X+5.173 Y-18.883 +G01 X+5.469 Y-16.77 +G01 X+5.994 Y-14.864 +G01 X+6.764 Y-13.01 +G01 X+7.754 Y-11.272 +G01 X+9.058 Y-9.54 +G01 X+9.797 Y-8.846 +G01 X+11.498 Y-7.626 +G01 X+13.399 Y-6.604 +G01 X+15.321 Y-5.874 +G01 X+17.247 Y-5.41 +G01 X+19.213 Y-5.191 +G01 X+21.344 Y-5.232 +G01 X+23.415 Y-5.554 +G01 X+25.362 Y-6.125 +G01 X+27.158 Y-6.908 +G01 X+28.996 Y-8.01 +G01 X+30.654 Y-9.328 +G01 X+30.88 Y-9.582 +G01 X+32.175 Y-11.299 +G01 X+33.163 Y-13.028 +G01 X+33.931 Y-14.871 +G01 X+34.474 Y-16.864 +G01 X+34.753 Y-18.939 +G01 X+34.75 Y-21.041 +G01 X+34.467 Y-23.114 +G01 X+33.947 Y-25.017 +G01 X+33.173 Y-26.878 +G01 X+32.181 Y-28.605 +G01 X+30.951 Y-30.228 +G01 X+30.108 Y-31.049 +G01 X+28.434 Y-32.276 +G01 X+26.714 Y-33.229 +G01 X+24.857 Y-33.973 +G01 X+22.932 Y-34.47 +G01 X+20.965 Y-34.718 +G01 X+18.893 Y-34.704 +G01 X+16.798 Y-34.404 +G01 X+14.913 Y-33.873 +G01 X+13.085 Y-33.096 +G01 X+11.379 Y-32.097 +G01 X+9.821 Y-30.899 +G01 X+9.004 Y-30.06 +G01 X+7.774 Y-28.4 +G01 X+6.817 Y-26.691 +G01 X+6.071 Y-24.842 +G01 X+5.572 Y-22.924 +G01 X+5.323 Y-20.963 +G01 X+5.337 Y-18.896 +G01 X+5.638 Y-16.808 +G01 X+6.171 Y-14.929 +G01 X+6.951 Y-13.11 +G01 X+7.953 Y-11.414 +G01 X+9.154 Y-9.87 +G01 X+10.122 Y-8.942 +G01 X+11.788 Y-7.724 +G01 X+13.49 Y-6.789 +G01 X+15.379 Y-6.048 +G01 X+17.279 Y-5.577 +G01 X+19.222 Y-5.354 +G01 X+21.329 Y-5.396 +G01 X+23.374 Y-5.723 +G01 X+25.292 Y-6.302 +G01 X+27.218 Y-7.185 +G01 X+28.845 Y-8.211 +G01 X+30.444 Y-9.541 +G01 X+30.785 Y-9.912 +G01 X+31.976 Y-11.442 +G01 X+32.975 Y-13.127 +G01 X+33.754 Y-14.936 +G01 X+34.306 Y-16.9 +G01 X+34.589 Y-18.95 +G01 X+34.593 Y-20.937 +G01 X+34.338 Y-22.886 +G01 X+33.829 Y-24.787 +G01 X+33.07 Y-26.612 +G01 X+32.1 Y-28.29 +G01 X+30.856 Y-29.904 +G01 X+29.785 Y-30.953 +G01 X+28.147 Y-32.177 +G01 X+26.464 Y-33.119 +G01 X+24.593 Y-33.864 +G01 X+22.651 Y-34.349 +G01 X+20.774 Y-34.564 +G01 X+18.679 Y-34.521 +G01 X+16.646 Y-34.192 +G01 X+14.742 Y-33.609 +G01 X+12.835 Y-32.72 +G01 X+11.23 Y-31.688 +G01 X+9.768 Y-30.456 +G01 X+8.438 Y-28.921 +G01 X+7.363 Y-27.276 +G01 X+6.483 Y-25.423 +G01 X+5.888 Y-23.556 +G01 X+5.536 Y-21.542 +G01 X+5.464 Y-19.589 +G01 X+5.667 Y-17.555 +G01 X+6.152 Y-15.568 +G01 X+6.858 Y-13.771 +G01 X+7.848 Y-12.003 +G01 X+9.006 Y-10.466 +G01 X+10.307 Y-9.151 +G01 X+11.919 Y-7.921 +G01 X+13.581 Y-6.974 +G01 X+15.436 Y-6.223 +G01 X+17.405 Y-5.727 +G01 X+18.013 Y-5.661 +G01 X+18.12 Y-5.642 +G02 X+28.808 Y-8.506 I+1.88 J-14.358 +G01 X+30.24 Y-9.76 +G00 Z+1.265 +G00 X+41.95 Y+0 +G00 Z-3.735 +G01 Z-4.96 F10000 +G01 X+41.904 Y-40.391 F12000 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-1.091 Y-41.609 +G01 X-1.624 Y-41.069 +G01 X-1.913 Y-40.359 +G01 X-1.949 Y-40.007 +G01 X-1.904 Y+0.391 +G01 X-1.609 Y+1.091 +G01 X-1.069 Y+1.624 +G01 X-0.359 Y+1.913 +G01 X-0.007 Y+1.949 +G01 X+40.391 Y+1.904 +G01 X+40.51 Y+1.87 +G01 X+40.856 Y+1.742 +G01 X+41.132 Y+1.576 +G01 X+41.362 Y+1.381 +G01 X+41.607 Y+1.086 +G01 X+41.73 Y+0.877 +G01 X+41.852 Y+0.574 +G01 X+41.938 Y+0.011 +G01 X+41.879 Y-40.085 +G01 X+41.808 Y-40.515 +G01 X+41.687 Y-40.829 +G01 X+41.527 Y-41.096 +G01 X+41.345 Y-41.311 +G01 X+40.57 Y-41.782 +G01 X+39.568 Y-41.878 +G01 X+8.827 Y-41.858 +G01 X+0 Y-41.821 +G01 X-0.105 Y-41.817 +G01 X-0.498 Y-41.749 +G01 X-0.802 Y-41.633 +G01 X-1.06 Y-41.478 +G01 X-1.276 Y-41.295 +G01 X-1.501 Y-41.024 +G01 X-1.748 Y-40.482 +G01 X-1.816 Y-39.321 +G01 X-1.839 Y-12.901 +G01 X-1.758 Y+0.079 +G01 X-1.691 Y+0.48 +G01 X-1.578 Y+0.775 +G01 X-1.429 Y+1.024 +G01 X-1.259 Y+1.225 +G01 X-0.536 Y+1.665 +G01 X+0.556 Y+1.756 +G01 X+24.506 Y+1.816 +G01 X+35.09 Y+1.706 +G01 X+40 Y+1.699 +G01 X+40.463 Y+1.632 +G01 X+40.747 Y+1.523 +G01 X+40.988 Y+1.379 +G01 X+41.19 Y+1.209 +G01 X+41.404 Y+0.95 +G01 X+41.512 Y+0.768 +G01 X+41.618 Y+0.504 +G01 X+41.694 Y+0.01 +G01 X+41.737 Y-8.827 +G01 X+41.782 Y-23.889 +G01 X+41.635 Y-38.704 +G01 X+41.631 Y-40.072 +G01 X+41.569 Y-40.445 +G01 X+41.465 Y-40.718 +G01 X+41.326 Y-40.949 +G01 X+41.17 Y-41.135 +G01 X+40.499 Y-41.543 +G01 X+39.444 Y-41.629 +G01 X+32.407 Y-41.667 +G01 X+18.704 Y-41.756 +G01 X+6.111 Y-41.603 +G01 X+0 Y-41.568 +G01 X-0.426 Y-41.506 +G01 X-0.689 Y-41.406 +G01 X-0.911 Y-41.273 +G01 X-1.097 Y-41.116 +G01 X-1.29 Y-40.884 +G01 X-1.503 Y-40.419 +G01 X-1.563 Y-39.198 +G01 X-1.602 Y-32.901 +G01 X-1.723 Y-20.432 +G01 X-1.6 Y-8.58 +G01 X-1.506 Y-2.778 +G01 X-1.5 Y+0.065 +G01 X-1.443 Y+0.408 +G01 X-1.347 Y+0.659 +G01 X-1.22 Y+0.872 +G01 X-1.077 Y+1.042 +G01 X-0.462 Y+1.417 +G01 X+0.556 Y+1.498 +G01 X+6.605 Y+1.533 +G01 X+18.333 Y+1.686 +G01 X+29.321 Y+1.593 +G01 X+35.09 Y+1.444 +G01 X+40 Y+1.436 +G01 X+40.389 Y+1.38 +G01 X+40.63 Y+1.289 +G01 X+40.834 Y+1.167 +G01 X+41.001 Y+1.026 +G01 X+41.272 Y+0.657 +G01 X+41.367 Y+0.428 +G01 X+41.432 Y+0.01 +G01 X+41.468 Y-6.39 +G01 X+41.647 Y-17.469 +G01 X+41.576 Y-27.84 +G01 X+41.376 Y-36.481 +G01 X+41.369 Y-40.059 +G01 X+41.318 Y-40.364 +G01 X+41.116 Y-40.789 +G01 X+40.984 Y-40.949 +G01 X+40.425 Y-41.292 +G01 X+39.444 Y-41.367 +G01 X+33.889 Y-41.399 +G01 X+23.642 Y-41.603 +G01 X+13.765 Y-41.562 +G01 X+3.519 Y-41.311 +G01 X+0 Y-41.305 +G01 X-0.352 Y-41.254 +G01 X-0.571 Y-41.171 +G01 X-0.757 Y-41.061 +G01 X-0.912 Y-40.93 +G01 X-1.072 Y-40.738 +G01 X-1.249 Y-40.354 +G01 X-1.3 Y-38.827 +G01 X-1.338 Y-33.889 +G01 X-1.563 Y-23.889 +G01 X-1.532 Y-14.383 +G01 X-1.257 Y-5.123 +G01 X-1.238 Y+0.052 +G01 X-1.191 Y+0.334 +G01 X-1.113 Y+0.542 +G01 X-1.008 Y+0.718 +G01 X-0.891 Y+0.857 +G01 X-0.388 Y+1.166 +G01 X+0.679 Y+1.235 +G01 X+5.864 Y+1.268 +G01 X+15.247 Y+1.515 +G01 X+24.259 Y+1.514 +G01 X+33.125 Y+1.269 +G01 X+35.09 Y+1.182 +G01 X+40 Y+1.174 +G01 X+40.315 Y+1.128 +G01 X+40.507 Y+1.056 +G01 X+40.809 Y+0.843 +G01 X+41.038 Y+0.539 +G01 X+41.116 Y+0.353 +G01 X+41.17 Y+0.01 +G01 X+41.206 Y-5.864 +G01 X+41.471 Y-14.877 +G01 X+41.484 Y-23.642 +G01 X+41.253 Y-32.168 +G01 X+41.115 Y-35.988 +G01 X+41.107 Y-40.045 +G01 X+41.067 Y-40.291 +G01 X+40.904 Y-40.634 +G01 X+40.799 Y-40.764 +G01 X+40.351 Y-41.04 +G01 X+39.198 Y-41.105 +G01 X+34.383 Y-41.133 +G01 X+25.864 Y-41.419 +G01 X+17.469 Y-41.46 +G01 X+9.074 Y-41.251 +G01 X+4.136 Y-41.049 +G01 X+0 Y-41.043 +G01 X-0.272 Y-41.004 +G01 X-0.589 Y-40.854 +G01 X-0.848 Y-40.596 +G01 X-0.995 Y-40.29 +G01 X-1.035 Y-36.975 +G01 X-1.082 Y-34.136 +G01 X-1.378 Y-25.864 +G01 X-1.427 Y-17.84 +G01 X-1.235 Y-9.938 +G01 X-0.983 Y-4.136 +G01 X-0.976 Y+0.038 +G01 X-0.941 Y+0.254 +G01 X-0.798 Y+0.557 +G01 X-0.706 Y+0.671 +G01 X-0.314 Y+0.914 +G01 X+1.049 Y+0.973 +G01 X+5.617 Y+1.007 +G01 X+13.634 Y+1.326 +G01 X+21.667 Y+1.395 +G01 X+29.321 Y+1.216 +G01 X+35.09 Y+0.919 +G01 X+40 Y+0.911 +G01 X+40.235 Y+0.878 +G01 X+40.519 Y+0.745 +G01 X+40.63 Y+0.656 +G01 X+40.803 Y+0.422 +G01 X+40.862 Y+0.286 +G01 X+40.908 Y-0.926 +G01 X+40.945 Y-5.617 +G01 X+41.28 Y-13.42 +G01 X+41.363 Y-20.955 +G01 X+41.203 Y-28.476 +G01 X+40.852 Y-35.741 +G01 X+40.844 Y-40.031 +G01 X+40.815 Y-40.217 +G01 X+40.692 Y-40.48 +G01 X+40.613 Y-40.579 +G01 X+40.277 Y-40.788 +G01 X+38.21 Y-40.841 +G01 X+34.383 Y-40.882 +G01 X+26.728 Y-41.234 +G01 X+19.246 Y-41.329 +G01 X+12.037 Y-41.178 +G01 X+4.91 Y-40.788 +G01 X+0.011 Y-40.78 +G01 X-0.196 Y-40.752 +G01 X-0.435 Y-40.642 +G01 X-0.63 Y-40.451 +G01 X-0.741 Y-40.224 +G01 X-0.819 Y-34.383 +G01 X-1.183 Y-27.022 +G01 X-1.295 Y-19.815 +G01 X-1.157 Y-12.654 +G01 X-0.775 Y-5.617 +G01 X-0.721 Y-3.889 +G01 X-0.686 Y+0.161 +G01 X-0.524 Y+0.472 +G01 X-0.24 Y+0.662 +G01 X+5.617 Y+0.756 +G01 X+12.751 Y+1.133 +G01 X+19.673 Y+1.259 +G01 X+26.58 Y+1.142 +G01 X+33.395 Y+0.784 +G01 X+35.09 Y+0.657 +G01 X+39.983 Y+0.649 +G01 X+40.261 Y+0.587 +G01 X+40.434 Y+0.477 +G01 X+40.6 Y+0.221 +G01 X+40.676 Y-5.37 +G01 X+41.079 Y-12.42 +G01 X+41.224 Y-19.246 +G01 X+41.119 Y-26.139 +G01 X+40.765 Y-32.901 +G01 X+40.595 Y-35.617 +G01 X+40.565 Y-40.125 +G01 X+40.435 Y-40.383 +G01 X+40.204 Y-40.542 +G01 X+34.63 Y-40.617 +G01 X+27.84 Y-41.029 +G01 X+21.181 Y-41.189 +G01 X+14.63 Y-41.107 +G01 X+8.086 Y-40.782 +G01 X+4.383 Y-40.534 +G01 X+0.024 Y-40.528 +G01 X-0.274 Y-40.438 +G01 X-0.42 Y-40.311 +G01 X-0.497 Y-40.161 +G01 X-0.558 Y-34.63 +G01 X-0.988 Y-27.84 +G01 X-1.155 Y-21.296 +G01 X-1.078 Y-14.877 +G01 X-0.749 Y-8.333 +G01 X-0.473 Y-4.383 +G01 X-0.448 Y+0.091 +G01 X-0.349 Y+0.297 +G01 X-0.169 Y+0.425 +G01 X+5.37 Y+0.499 +G01 X+11.79 Y+0.93 +G01 X+18.333 Y+1.119 +G01 X+24.753 Y+1.053 +G01 X+31.173 Y+0.734 +G01 X+35.09 Y+0.413 +G01 X+39.97 Y+0.405 +G01 X+40.24 Y+0.305 +G01 X+40.367 Y+0.151 +G01 X+40.439 Y-5.37 +G01 X+40.887 Y-11.79 +G01 X+41.081 Y-18.086 +G01 X+41.03 Y-24.259 +G01 X+40.726 Y-30.556 +G01 X+40.347 Y-35.494 +G01 X+40.304 Y-40.104 +G01 X+40.258 Y-40.215 +G01 X+40.132 Y-40.304 +G01 X+34.63 Y-40.375 +G01 X+28.21 Y-40.843 +G01 X+21.924 Y-41.045 +G01 X+15.741 Y-40.992 +G01 X+9.703 Y-40.694 +G01 X+4.506 Y-40.281 +G01 X+0.038 Y-40.274 +G01 X-0.182 Y-40.176 +G01 X-0.252 Y-40.097 +G01 X-0.311 Y-34.63 +G01 X-0.783 Y-28.476 +G01 X-1.002 Y-22.407 +G01 X-0.971 Y-16.358 +G01 X-0.695 Y-10.432 +G01 X-0.216 Y-4.506 +G01 X-0.169 Y+0.05 +G01 X-0.096 Y+0.178 +G01 X+5.37 Y+0.247 +G01 X+11.524 Y+0.738 +G01 X+17.469 Y+0.964 +G01 X+23.395 Y+0.94 +G01 X+29.321 Y+0.664 +G01 X+35.083 Y+0.151 +G01 X+39.876 Y+0.144 +G01 X+39.982 Y+0.101 +G01 X+40.101 Y-0.018 +G01 X+40.145 Y-0.123 +G01 X+40.187 Y-5.37 +G01 X+40.676 Y-11.186 +G01 X+40.922 Y-16.975 +G01 X+40.923 Y-22.781 +G01 X+40.682 Y-28.476 +G01 X+40.177 Y-34.383 +G01 X+40.098 Y-35.617 +G01 X+40.093 Y-39.876 +G01 X+40.049 Y-39.982 +G01 X+39.877 Y-40.093 +G01 X+34.63 Y-40.137 +G01 X+28.704 Y-40.648 +G01 X+22.781 Y-40.898 +G01 X+16.975 Y-40.888 +G01 X+11.296 Y-40.632 +G01 X+5.617 Y-40.128 +G01 X+4.383 Y-40.047 +G01 X+0.124 Y-40.041 +G01 X+0.018 Y-39.997 +G01 X-0.042 Y-39.877 +G01 X-0.087 Y-34.63 +G01 X-0.595 Y-28.951 +G01 X-0.856 Y-23.324 +G01 X-0.876 Y-17.761 +G01 X-0.652 Y-12.16 +G01 X-0.187 Y-6.605 +G01 X+0.004 Y-4.513 +G01 X+0.01 Y-0.159 +G01 X+0.159 Y-0.009 +G01 X+5.37 Y+0.037 +G01 X+11.049 Y+0.559 +G01 X+16.605 Y+0.826 +G01 X+22.16 Y+0.849 +G01 X+27.84 Y+0.618 +G01 X+33.395 Y+0.14 +G01 X+35.081 Y-0.055 +G01 X+39.753 Y-0.063 +G01 X+39.859 Y-0.106 +G01 X+39.938 Y-0.247 +G01 X+39.985 Y-5.37 +G01 X+40.514 Y-10.96 +G01 X+40.794 Y-16.605 +G01 X+40.817 Y-22.16 +G01 X+40.594 Y-27.593 +G01 X+40.113 Y-33.148 +G01 X+39.884 Y-35.487 +G01 X+39.877 Y-39.728 +G01 X+39.728 Y-39.877 +G01 X+34.636 Y-39.926 +G01 X+29.198 Y-40.459 +G01 X+23.642 Y-40.752 +G01 X+18.086 Y-40.788 +G01 X+12.654 Y-40.57 +G01 X+7.355 Y-40.115 +G01 X+4.514 Y-39.823 +G01 X+0.371 Y-39.816 +G01 X+0.265 Y-39.772 +G01 X+0.184 Y-39.63 +G01 X+0.134 Y-34.636 +G01 X-0.415 Y-29.198 +G01 X-0.71 Y-23.889 +G01 X-0.762 Y-18.618 +G01 X-0.564 Y-13.194 +G01 X-0.115 Y-7.84 +G01 X+0.238 Y-4.638 +G01 X+0.245 Y-0.395 +G01 X+0.395 Y-0.245 +G01 X+5.116 Y-0.224 +G01 X+10.556 Y+0.352 +G01 X+15.813 Y+0.664 +G01 X+21.049 Y+0.732 +G01 X+26.235 Y+0.559 +G01 X+31.42 Y+0.143 +G01 X+35.081 Y-0.298 +G01 X+39.506 Y-0.306 +G01 X+39.612 Y-0.35 +G01 X+39.694 Y-0.494 +G01 X+39.716 Y-5.116 +G01 X+40.298 Y-10.432 +G01 X+40.626 Y-15.741 +G01 X+40.7 Y-20.955 +G01 X+40.527 Y-26.139 +G01 X+40.107 Y-31.296 +G01 X+39.64 Y-35.362 +G01 X+39.633 Y-39.484 +G01 X+39.484 Y-39.633 +G01 X+34.885 Y-39.656 +G01 X+29.725 Y-40.239 +G01 X+24.507 Y-40.581 +G01 X+19.246 Y-40.669 +G01 X+14.012 Y-40.498 +G01 X+8.827 Y-40.072 +G01 X+4.638 Y-39.58 +G01 X+0.618 Y-39.572 +G01 X+0.512 Y-39.528 +G01 X+0.428 Y-39.382 +G01 X+0.435 Y-35.099 +G01 X-0.173 Y-29.951 +G01 X-0.535 Y-24.753 +G01 X-0.638 Y-19.568 +G01 X-0.482 Y-14.383 +G01 X-0.08 Y-9.353 +G01 X+0.481 Y-4.638 +G01 X+0.489 Y-0.639 +G01 X+0.639 Y-0.489 +G01 X+4.901 Y-0.496 +G01 X+9.938 Y+0.118 +G01 X+15 Y+0.487 +G01 X+20.185 Y+0.605 +G01 X+25.123 Y+0.472 +G01 X+30.062 Y+0.094 +G01 X+35.081 Y-0.542 +G01 X+39.301 Y-0.555 +G01 X+39.45 Y-0.705 +G01 X+39.444 Y-4.901 +G01 X+40.072 Y-9.938 +G01 X+40.445 Y-14.877 +G01 X+40.573 Y-19.815 +G01 X+40.454 Y-24.753 +G01 X+40.083 Y-29.725 +G01 X+39.467 Y-34.63 +G01 X+39.396 Y-35.494 +G01 X+39.39 Y-39.24 +G01 X+39.24 Y-39.39 +G01 X+35.1 Y-39.383 +G01 X+30.062 Y-40.027 +G01 X+25.123 Y-40.409 +G01 X+20.1 Y-40.54 +G01 X+15.247 Y-40.418 +G01 X+10.432 Y-40.054 +G01 X+5.617 Y-39.446 +G01 X+4.638 Y-39.336 +G01 X+0.821 Y-39.322 +G01 X+0.671 Y-39.171 +G01 X+0.678 Y-35.1 +G01 X+0.019 Y-30.062 +G01 X-0.372 Y-25.123 +G01 X-0.506 Y-20.327 +G01 X-0.395 Y-15.494 +G01 X-0.035 Y-10.679 +G01 X+0.575 Y-5.864 +G01 X+0.725 Y-4.639 +G01 X+0.732 Y-0.882 +G01 X+0.882 Y-0.732 +G01 X+4.9 Y-0.739 +G01 X+9.691 Y-0.091 +G01 X+14.623 Y+0.321 +G01 X+19.568 Y+0.473 +G01 X+24.506 Y+0.359 +G01 X+29.321 Y-0.009 +G01 X+34.136 Y-0.632 +G01 X+35.078 Y-0.785 +G01 X+39.058 Y-0.802 +G01 X+39.207 Y-0.952 +G01 X+39.201 Y-4.9 +G01 X+39.864 Y-9.703 +G01 X+40.285 Y-14.63 +G01 X+40.439 Y-19.473 +G01 X+40.339 Y-24.187 +G01 X+39.986 Y-28.951 +G01 X+39.388 Y-33.642 +G01 X+39.153 Y-35.36 +G01 X+39.147 Y-38.996 +G01 X+38.996 Y-39.146 +G01 X+35.101 Y-39.14 +G01 X+30.309 Y-39.817 +G01 X+25.617 Y-40.234 +G01 X+20.955 Y-40.403 +G01 X+16.358 Y-40.329 +G01 X+11.543 Y-39.992 +G01 X+6.875 Y-39.411 +G01 X+4.64 Y-39.093 +G01 X+1.064 Y-39.075 +G01 X+0.915 Y-38.925 +G01 X+0.921 Y-35.101 +G01 X+0.229 Y-30.309 +G01 X-0.197 Y-25.617 +G01 X-0.369 Y-20.955 +G01 X-0.294 Y-16.358 +G01 X+0.025 Y-11.79 +G01 X+0.608 Y-7.099 +G01 X+0.968 Y-4.64 +G01 X+0.975 Y-1.125 +G01 X+1.126 Y-0.976 +G01 X+4.899 Y-0.982 +G01 X+9.691 Y-0.275 +G01 X+14.383 Y+0.16 +G01 X+19.045 Y+0.336 +G01 X+23.642 Y+0.259 +G01 X+28.21 Y-0.067 +G01 X+32.901 Y-0.661 +G01 X+35.078 Y-1.028 +G01 X+38.814 Y-1.049 +G01 X+38.964 Y-1.199 +G01 X+38.958 Y-4.899 +G01 X+39.649 Y-9.444 +G01 X+40.098 Y-14.012 +G01 X+40.297 Y-18.618 +G01 X+40.24 Y-23.272 +G01 X+39.929 Y-27.84 +G01 X+39.362 Y-32.407 +G01 X+38.91 Y-35.359 +G01 X+38.903 Y-38.753 +G01 X+38.753 Y-38.903 +G01 X+35.102 Y-38.897 +G01 X+30.556 Y-39.602 +G01 X+25.864 Y-40.069 +G01 X+21.296 Y-40.266 +G01 X+16.605 Y-40.201 +G01 X+12.16 Y-39.888 +G01 X+7.593 Y-39.31 +G01 X+4.641 Y-38.849 +G01 X+1.307 Y-38.828 +G01 X+1.158 Y-38.678 +G01 X+1.164 Y-35.102 +G01 X+0.445 Y-30.556 +G01 X-0.011 Y-26.139 +G01 X-0.226 Y-21.667 +G01 X-0.19 Y-17.222 +G01 X+0.105 Y-12.654 +G01 X+0.665 Y-8.086 +G01 X+1.212 Y-4.641 +G01 X+1.219 Y-1.369 +G01 X+1.369 Y-1.219 +G01 X+4.898 Y-1.225 +G01 X+9.444 Y-0.491 +G01 X+13.861 Y-0.027 +G01 X+18.333 Y+0.192 +G01 X+22.778 Y+0.156 +G01 X+27.099 Y-0.122 +G01 X+31.667 Y-0.678 +G01 X+35.078 Y-1.272 +G01 X+38.571 Y-1.295 +G01 X+38.72 Y-1.446 +G01 X+38.715 Y-4.898 +G01 X+39.449 Y-9.353 +G01 X+39.928 Y-13.765 +G01 X+40.153 Y-18.086 +G01 X+40.135 Y-22.407 +G01 X+39.873 Y-26.728 +G01 X+39.365 Y-31.049 +G01 X+38.667 Y-35.359 +G01 X+38.66 Y-38.51 +G01 X+38.51 Y-38.66 +G01 X+35.103 Y-38.654 +G01 X+30.556 Y-39.416 +G01 X+26.139 Y-39.898 +G01 X+21.667 Y-40.125 +G01 X+17.222 Y-40.088 +G01 X+12.901 Y-39.8 +G01 X+8.58 Y-39.261 +G01 X+4.641 Y-38.606 +G01 X+1.55 Y-38.581 +G01 X+1.401 Y-38.431 +G01 X+1.407 Y-35.103 +G01 X+0.667 Y-30.802 +G01 X+0.168 Y-26.481 +G01 X-0.08 Y-22.16 +G01 X-0.076 Y-17.84 +G01 X+0.182 Y-13.519 +G01 X+0.713 Y-9.074 +G01 X+1.455 Y-4.642 +G01 X+1.462 Y-1.612 +G01 X+1.612 Y-1.462 +G01 X+4.897 Y-1.468 +G01 X+9.198 Y-0.714 +G01 X+13.519 Y-0.207 +G01 X+17.84 Y+0.046 +G01 X+22.16 Y+0.042 +G01 X+26.481 Y-0.22 +G01 X+30.647 Y-0.718 +G01 X+34.877 Y-1.472 +G01 X+35.075 Y-1.514 +G01 X+38.328 Y-1.542 +G01 X+38.477 Y-1.692 +G01 X+38.472 Y-4.897 +G01 X+39.262 Y-9.353 +G01 X+39.777 Y-13.765 +G01 X+40.019 Y-18.086 +G01 X+40 Y-22.407 +G01 X+39.719 Y-26.728 +G01 X+39.173 Y-31.049 +G01 X+38.423 Y-35.358 +G01 X+38.416 Y-38.267 +G01 X+38.266 Y-38.416 +G01 X+35.104 Y-38.411 +G01 X+30.802 Y-39.192 +G01 X+26.481 Y-39.717 +G01 X+22.16 Y-39.979 +G01 X+17.84 Y-39.975 +G01 X+13.519 Y-39.704 +G01 X+9.353 Y-39.188 +G01 X+5.123 Y-38.407 +G01 X+4.925 Y-38.364 +G01 X+1.794 Y-38.335 +G01 X+1.645 Y-38.184 +G01 X+1.65 Y-35.104 +G01 X+0.856 Y-30.802 +G01 X+0.321 Y-26.481 +G01 X+0.055 Y-22.16 +G01 X+0.059 Y-17.84 +G01 X+0.312 Y-13.765 +G01 X+0.806 Y-9.703 +G01 X+1.546 Y-5.617 +G01 X+1.697 Y-4.926 +G01 X+1.705 Y-1.855 +G01 X+1.856 Y-1.706 +G01 X+4.896 Y-1.711 +G01 X+9.198 Y-0.903 +G01 X+13.272 Y-0.383 +G01 X+17.469 Y-0.101 +G01 X+21.667 Y-0.078 +G01 X+25.701 Y-0.302 +G01 X+29.815 Y-0.779 +G01 X+33.889 Y-1.5 +G01 X+35.075 Y-1.758 +G01 X+38.085 Y-1.789 +G01 X+38.234 Y-1.939 +G01 X+38.229 Y-4.896 +G01 X+39.03 Y-9.074 +G01 X+39.57 Y-13.194 +G01 X+39.855 Y-17.222 +G01 X+39.897 Y-21.296 +G01 X+39.688 Y-25.377 +G01 X+39.23 Y-29.444 +G01 X+38.494 Y-33.642 +G01 X+38.181 Y-35.074 +G01 X+38.173 Y-38.023 +G01 X+38.023 Y-38.173 +G01 X+35.105 Y-38.168 +G01 X+30.802 Y-39.003 +G01 X+26.728 Y-39.54 +G01 X+22.531 Y-39.831 +G01 X+18.333 Y-39.855 +G01 X+14.299 Y-39.624 +G01 X+10.185 Y-39.131 +G01 X+6.111 Y-38.386 +G01 X+4.926 Y-38.12 +G01 X+2.037 Y-38.088 +G01 X+1.888 Y-37.938 +G01 X+1.893 Y-35.105 +G01 X+1.086 Y-31.049 +G01 X+0.53 Y-27.022 +G01 X+0.224 Y-23.025 +G01 X+0.165 Y-18.951 +G01 X+0.364 Y-14.877 +G01 X+0.84 Y-10.679 +G01 X+1.565 Y-6.605 +G01 X+1.94 Y-4.926 +G01 X+1.949 Y-2.099 +G01 X+1.993 Y-1.993 +G01 X+2.099 Y-1.949 +G01 X+4.895 Y-1.954 +G01 X+8.951 Y-1.134 +G01 X+12.978 Y-0.569 +G01 X+16.975 Y-0.258 +G01 X+21.049 Y-0.199 +G01 X+25.123 Y-0.4 +G01 X+29.04 Y-0.842 +G01 X+33.125 Y-1.563 +G01 X+35.075 Y-2.001 +G01 X+37.842 Y-2.035 +G01 X+37.991 Y-2.186 +G01 X+37.987 Y-4.895 +G01 X+38.841 Y-9.074 +G01 X+39.417 Y-13.194 +G01 X+39.72 Y-17.222 +G01 X+39.767 Y-21.181 +G01 X+39.566 Y-25.123 +G01 X+39.095 Y-29.198 +G01 X+38.382 Y-33.148 +G01 X+37.943 Y-35.074 +G01 X+37.935 Y-37.778 +G01 X+37.891 Y-37.883 +G01 X+37.777 Y-37.935 +G01 X+35.106 Y-37.931 +G01 X+31.049 Y-38.775 +G01 X+27.022 Y-39.357 +G01 X+23.025 Y-39.678 +G01 X+18.951 Y-39.739 +G01 X+14.877 Y-39.532 +G01 X+10.96 Y-39.078 +G01 X+7.099 Y-38.385 +G01 X+4.927 Y-37.886 +G01 X+2.271 Y-37.879 +G01 X+2.122 Y-37.729 +G01 X+2.126 Y-35.106 +G01 X+1.269 Y-31.049 +G01 X+0.679 Y-27.022 +G01 X+0.354 Y-23.025 +G01 X+0.292 Y-18.951 +G01 X+0.502 Y-14.877 +G01 X+0.962 Y-10.96 +G01 X+1.665 Y-7.099 +G01 X+2.17 Y-4.927 +G01 X+2.178 Y-2.346 +G01 X+2.222 Y-2.24 +G01 X+2.346 Y-2.178 +G01 X+4.894 Y-2.182 +G01 X+8.951 Y-1.313 +G01 X+12.978 Y-0.715 +G01 X+16.975 Y-0.385 +G01 X+21.049 Y-0.322 +G01 X+24.828 Y-0.511 +G01 X+28.704 Y-0.951 +G01 X+32.645 Y-1.659 +G01 X+35.073 Y-2.226 +G01 X+37.617 Y-2.233 +G01 X+37.767 Y-2.383 +G01 X+37.763 Y-4.894 +G01 X+38.62 Y-8.827 +G01 X+39.212 Y-12.654 +G01 X+39.565 Y-16.605 +G01 X+39.657 Y-20.432 +G01 X+39.503 Y-24.259 +G01 X+39.1 Y-28.086 +G01 X+38.449 Y-31.914 +G01 X+37.722 Y-35.073 +G01 X+37.715 Y-37.531 +G01 X+37.671 Y-37.636 +G01 X+37.53 Y-37.715 +G01 X+35.106 Y-37.712 +G01 X+31.049 Y-38.603 +G01 X+27.249 Y-39.189 +G01 X+23.395 Y-39.535 +G01 X+19.568 Y-39.629 +G01 X+15.741 Y-39.473 +G01 X+11.79 Y-39.048 +G01 X+7.84 Y-38.355 +G01 X+4.927 Y-37.671 +G01 X+2.486 Y-37.664 +G01 X+2.336 Y-37.514 +G01 X+2.34 Y-35.107 +G01 X+1.438 Y-31.049 +G01 X+0.844 Y-27.249 +G01 X+0.494 Y-23.395 +G01 X+0.399 Y-19.568 +G01 X+0.557 Y-15.741 +G01 X+0.987 Y-11.79 +G01 X+1.688 Y-7.84 +G01 X+2.381 Y-4.926 +G01 X+2.406 Y-2.537 +G01 X+2.556 Y-2.388 +G01 X+4.893 Y-2.391 +G01 X+8.704 Y-1.526 +G01 X+12.654 Y-0.889 +G01 X+16.605 Y-0.523 +G01 X+20.432 Y-0.427 +G01 X+24.259 Y-0.587 +G01 X+28.21 Y-1.022 +G01 X+32.16 Y-1.732 +G01 X+35.073 Y-2.432 +G01 X+37.407 Y-2.439 +G01 X+37.513 Y-2.483 +G01 X+37.561 Y-2.593 +G01 X+37.557 Y-4.893 +G01 X+38.457 Y-8.827 +G01 X+39.077 Y-12.654 +G01 X+39.432 Y-16.358 +G01 X+39.546 Y-20.1 +G01 X+39.41 Y-23.889 +G01 X+39.03 Y-27.593 +G01 X+38.406 Y-31.296 +G01 X+37.516 Y-35.073 +G01 X+37.509 Y-37.359 +G01 X+37.359 Y-37.509 +G01 X+35.107 Y-37.506 +G01 X+31.296 Y-38.392 +G01 X+27.346 Y-39.044 +G01 X+23.642 Y-39.403 +G01 X+19.815 Y-39.518 +G01 X+16.111 Y-39.38 +G01 X+12.42 Y-38.997 +G01 X+8.58 Y-38.34 +G01 X+4.927 Y-37.465 +G01 X+2.716 Y-37.458 +G01 X+2.61 Y-37.414 +G01 X+2.542 Y-37.283 +G01 X+2.546 Y-35.108 +G01 X+1.65 Y-31.296 +G01 X+1.023 Y-27.593 +G01 X+0.643 Y-23.889 +G01 X+0.51 Y-20.1 +G01 X+0.633 Y-16.358 +G01 X+1.004 Y-12.654 +G01 X+1.651 Y-8.827 +G01 X+2.532 Y-5.123 +G01 X+2.585 Y-4.93 +G01 X+2.594 Y-2.744 +G01 X+2.744 Y-2.594 +G01 X+4.892 Y-2.597 +G01 X+8.704 Y-1.691 +G01 X+12.407 Y-1.057 +G01 X+16.111 Y-0.672 +G01 X+19.9 Y-0.538 +G01 X+23.642 Y-0.662 +G01 X+27.346 Y-1.038 +G01 X+31.173 Y-1.692 +G01 X+34.877 Y-2.583 +G01 X+35.071 Y-2.637 +G01 X+37.205 Y-2.654 +G01 X+37.354 Y-2.804 +G01 X+37.351 Y-4.892 +G01 X+38.292 Y-8.827 +G01 X+38.941 Y-12.654 +G01 X+39.312 Y-16.358 +G01 X+39.431 Y-20.1 +G01 X+39.288 Y-23.889 +G01 X+38.889 Y-27.593 +G01 X+38.235 Y-31.296 +G01 X+37.301 Y-35.072 +G01 X+37.294 Y-37.144 +G01 X+37.143 Y-37.293 +G01 X+35.108 Y-37.29 +G01 X+31.296 Y-38.218 +G01 X+27.593 Y-38.867 +G01 X+23.889 Y-39.261 +G01 X+20.1 Y-39.398 +G01 X+16.358 Y-39.27 +G01 X+12.654 Y-38.884 +G01 X+8.827 Y-38.212 +G01 X+5.123 Y-37.297 +G01 X+4.93 Y-37.242 +G01 X+2.917 Y-37.223 +G01 X+2.768 Y-37.073 +G01 X+2.771 Y-35.108 +G01 X+1.831 Y-31.296 +G01 X+1.174 Y-27.593 +G01 X+0.774 Y-23.889 +G01 X+0.636 Y-20.327 +G01 X+0.747 Y-16.605 +G01 X+1.121 Y-12.901 +G01 X+1.784 Y-9.074 +G01 X+2.693 Y-5.37 +G01 X+2.819 Y-4.93 +G01 X+2.828 Y-2.978 +G01 X+2.979 Y-2.829 +G01 X+4.891 Y-2.832 +G01 X+8.704 Y-1.88 +G01 X+12.407 Y-1.214 +G01 X+16.111 Y-0.809 +G01 X+19.673 Y-0.669 +G01 X+23.395 Y-0.782 +G01 X+27.099 Y-1.161 +G01 X+30.647 Y-1.773 +G01 X+34.383 Y-2.682 +G01 X+35.07 Y-2.88 +G01 X+36.962 Y-2.9 +G01 X+37.111 Y-3.05 +G01 X+37.108 Y-4.891 +G01 X+38.046 Y-8.58 +G01 X+38.71 Y-12.16 +G01 X+39.127 Y-15.741 +G01 X+39.294 Y-19.246 +G01 X+39.221 Y-22.781 +G01 X+38.897 Y-26.366 +G01 X+38.321 Y-29.951 +G01 X+37.464 Y-33.642 +G01 X+37.059 Y-35.07 +G01 X+37.05 Y-36.9 +G01 X+36.9 Y-37.05 +G01 X+35.109 Y-37.047 +G01 X+31.296 Y-38.024 +G01 X+27.593 Y-38.706 +G01 X+23.889 Y-39.121 +G01 X+20.327 Y-39.265 +G01 X+16.605 Y-39.149 +G01 X+12.901 Y-38.761 +G01 X+9.353 Y-38.133 +G01 X+5.617 Y-37.201 +G01 X+4.93 Y-36.998 +G01 X+3.16 Y-36.977 +G01 X+3.011 Y-36.826 +G01 X+3.014 Y-35.109 +G01 X+2.025 Y-31.296 +G01 X+1.334 Y-27.593 +G01 X+0.914 Y-23.889 +G01 X+0.768 Y-20.327 +G01 X+0.885 Y-16.605 +G01 X+1.279 Y-12.901 +G01 X+1.914 Y-9.353 +G01 X+2.787 Y-5.864 +G01 X+3.062 Y-4.931 +G01 X+3.072 Y-3.222 +G01 X+3.222 Y-3.072 +G01 X+4.89 Y-3.075 +G01 X+8.418 Y-2.139 +G01 X+12.16 Y-1.412 +G01 X+15.741 Y-0.979 +G01 X+19.321 Y-0.804 +G01 X+22.778 Y-0.881 +G01 X+26.235 Y-1.2 +G01 X+29.815 Y-1.787 +G01 X+33.395 Y-2.635 +G01 X+35.07 Y-3.124 +G01 X+36.719 Y-3.147 +G01 X+36.868 Y-3.297 +G01 X+36.865 Y-4.89 +G01 X+37.85 Y-8.58 +G01 X+38.548 Y-12.16 +G01 X+38.986 Y-15.741 +G01 X+39.161 Y-19.246 +G01 X+39.085 Y-22.781 +G01 X+38.745 Y-26.366 +G01 X+38.14 Y-29.951 +G01 X+37.24 Y-33.642 +G01 X+36.816 Y-35.069 +G01 X+36.807 Y-36.657 +G01 X+36.657 Y-36.807 +G01 X+35.11 Y-36.804 +G01 X+31.582 Y-37.762 +G01 X+28.086 Y-38.467 +G01 X+24.507 Y-38.928 +G01 X+20.955 Y-39.125 +G01 X+17.469 Y-39.065 +G01 X+14.012 Y-38.756 +G01 X+10.432 Y-38.174 +G01 X+6.875 Y-37.329 +G01 X+4.93 Y-36.755 +G01 X+3.402 Y-36.73 +G01 X+3.254 Y-36.58 +G01 X+3.257 Y-35.11 +G01 X+2.287 Y-31.582 +G01 X+1.574 Y-28.086 +G01 X+1.108 Y-24.507 +G01 X+0.908 Y-20.955 +G01 X+0.969 Y-17.469 +G01 X+1.281 Y-14.012 +G01 X+1.871 Y-10.432 +G01 X+2.725 Y-6.875 +G01 X+3.306 Y-4.931 +G01 X+3.315 Y-3.465 +G01 X+3.465 Y-3.315 +G01 X+4.889 Y-3.318 +G01 X+8.418 Y-2.337 +G01 X+11.914 Y-1.616 +G01 X+15.493 Y-1.143 +G01 X+19.045 Y-0.942 +G01 X+22.531 Y-1.003 +G01 X+25.988 Y-1.319 +G01 X+29.568 Y-1.915 +G01 X+33.125 Y-2.779 +G01 X+35.07 Y-3.367 +G01 X+36.476 Y-3.393 +G01 X+36.624 Y-3.543 +G01 X+36.622 Y-4.889 +G01 X+37.593 Y-8.333 +G01 X+38.323 Y-11.79 +G01 X+38.79 Y-15.172 +G01 X+39.015 Y-18.618 +G01 X+38.982 Y-22.16 +G01 X+38.69 Y-25.617 +G01 X+38.116 Y-29.198 +G01 X+37.298 Y-32.654 +G01 X+36.572 Y-35.069 +G01 X+36.564 Y-36.414 +G01 X+36.414 Y-36.564 +G01 X+35.111 Y-36.561 +G01 X+31.582 Y-37.565 +G01 X+28.086 Y-38.303 +G01 X+24.507 Y-38.786 +G01 X+20.955 Y-38.992 +G01 X+17.469 Y-38.93 +G01 X+14.012 Y-38.606 +G01 X+10.432 Y-37.997 +G01 X+6.875 Y-37.112 +G01 X+4.93 Y-36.511 +G01 X+3.645 Y-36.484 +G01 X+3.498 Y-36.334 +G01 X+3.5 Y-35.111 +G01 X+2.485 Y-31.582 +G01 X+1.76 Y-28.21 +G01 X+1.274 Y-24.753 +G01 X+1.049 Y-21.296 +G01 X+1.085 Y-17.84 +G01 X+1.384 Y-14.383 +G01 X+1.94 Y-10.96 +G01 X+2.738 Y-7.593 +G01 X+3.549 Y-4.931 +G01 X+3.558 Y-3.708 +G01 X+3.708 Y-3.558 +G01 X+4.888 Y-3.561 +G01 X+8.418 Y-2.534 +G01 X+11.79 Y-1.801 +G01 X+15.247 Y-1.31 +G01 X+18.704 Y-1.082 +G01 X+22.16 Y-1.119 +G01 X+25.617 Y-1.421 +G01 X+29.04 Y-1.983 +G01 X+32.407 Y-2.79 +G01 X+35.07 Y-3.611 +G01 X+36.234 Y-3.639 +G01 X+36.381 Y-3.789 +G01 X+36.379 Y-4.888 +G01 X+37.395 Y-8.333 +G01 X+38.158 Y-11.79 +G01 X+38.646 Y-15.172 +G01 X+38.882 Y-18.618 +G01 X+38.858 Y-21.924 +G01 X+38.572 Y-25.377 +G01 X+38.042 Y-28.704 +G01 X+37.224 Y-32.168 +G01 X+36.329 Y-35.068 +G01 X+36.321 Y-36.171 +G01 X+36.17 Y-36.32 +G01 X+35.112 Y-36.318 +G01 X+31.582 Y-37.367 +G01 X+28.21 Y-38.116 +G01 X+24.753 Y-38.619 +G01 X+21.296 Y-38.851 +G01 X+17.84 Y-38.814 +G01 X+14.383 Y-38.505 +G01 X+10.96 Y-37.931 +G01 X+7.593 Y-37.106 +G01 X+4.93 Y-36.268 +G01 X+3.887 Y-36.238 +G01 X+3.741 Y-36.088 +G01 X+3.742 Y-35.112 +G01 X+2.682 Y-31.582 +G01 X+1.925 Y-28.21 +G01 X+1.417 Y-24.753 +G01 X+1.182 Y-21.296 +G01 X+1.22 Y-17.84 +G01 X+1.532 Y-14.383 +G01 X+2.112 Y-10.96 +G01 X+2.946 Y-7.593 +G01 X+3.793 Y-4.932 +G01 X+3.801 Y-3.951 +G01 X+3.952 Y-3.802 +G01 X+4.888 Y-3.803 +G01 X+8.418 Y-2.732 +G01 X+11.79 Y-1.967 +G01 X+15.247 Y-1.453 +G01 X+18.704 Y-1.215 +G01 X+22.16 Y-1.253 +G01 X+25.617 Y-1.569 +G01 X+29.04 Y-2.155 +G01 X+32.407 Y-2.998 +G01 X+35.07 Y-3.854 +G01 X+35.992 Y-3.885 +G01 X+36.138 Y-4.035 +G01 X+36.137 Y-4.887 +G01 X+37.197 Y-8.333 +G01 X+37.993 Y-11.79 +G01 X+38.502 Y-15.172 +G01 X+38.748 Y-18.618 +G01 X+38.724 Y-21.924 +G01 X+38.457 Y-25.123 +G01 X+37.919 Y-28.476 +G01 X+37.121 Y-31.809 +G01 X+36.086 Y-35.068 +G01 X+36.077 Y-35.926 +G01 X+36.033 Y-36.031 +G01 X+35.925 Y-36.077 +G01 X+35.113 Y-36.076 +G01 X+31.809 Y-37.108 +G01 X+28.476 Y-37.899 +G01 X+25.123 Y-38.432 +G01 X+21.924 Y-38.694 +G01 X+18.704 Y-38.716 +G01 X+15.494 Y-38.491 +G01 X+12.16 Y-38.001 +G01 X+8.827 Y-37.245 +G01 X+5.37 Y-36.181 +G01 X+4.932 Y-36.026 +G01 X+4.129 Y-35.992 +G01 X+3.984 Y-35.842 +G01 X+3.985 Y-35.113 +G01 X+2.942 Y-31.809 +G01 X+2.143 Y-28.476 +G01 X+1.604 Y-25.123 +G01 X+1.339 Y-21.924 +G01 X+1.318 Y-18.704 +G01 X+1.544 Y-15.494 +G01 X+2.04 Y-12.16 +G01 X+2.803 Y-8.827 +G01 X+3.878 Y-5.37 +G01 X+4.034 Y-4.934 +G01 X+4.045 Y-4.198 +G01 X+4.089 Y-4.092 +G01 X+4.198 Y-4.045 +G01 X+4.886 Y-4.046 +G01 X+8.191 Y-2.993 +G01 X+11.524 Y-2.185 +G01 X+14.877 Y-1.64 +G01 X+18.076 Y-1.373 +G01 X+21.296 Y-1.351 +G01 X+24.506 Y-1.58 +G01 X+27.84 Y-2.08 +G01 X+31.173 Y-2.852 +G01 X+34.383 Y-3.85 +G01 X+35.065 Y-4.095 +G01 X+35.745 Y-4.105 +G01 X+35.895 Y-4.255 +G01 X+35.894 Y-4.886 +G01 X+36.999 Y-8.333 +G01 X+37.778 Y-11.543 +G01 X+38.325 Y-14.877 +G01 X+38.596 Y-18.086 +G01 X+38.617 Y-21.296 +G01 X+38.386 Y-24.507 +G01 X+37.882 Y-27.84 +G01 X+37.137 Y-31.049 +G01 X+36.096 Y-34.383 +G01 X+35.849 Y-35.065 +G01 X+35.839 Y-35.679 +G01 X+35.795 Y-35.785 +G01 X+35.678 Y-35.839 +G01 X+35.114 Y-35.838 +G01 X+31.809 Y-36.912 +G01 X+28.476 Y-37.735 +G01 X+25.123 Y-38.291 +G01 X+21.924 Y-38.564 +G01 X+18.704 Y-38.586 +G01 X+15.494 Y-38.354 +G01 X+12.16 Y-37.844 +G01 X+8.827 Y-37.059 +G01 X+5.617 Y-36.043 +G01 X+4.935 Y-35.793 +G01 X+4.367 Y-35.783 +G01 X+4.218 Y-35.632 +G01 X+4.219 Y-35.114 +G01 X+3.134 Y-31.809 +G01 X+2.303 Y-28.476 +G01 X+1.742 Y-25.123 +G01 X+1.467 Y-21.924 +G01 X+1.444 Y-18.704 +G01 X+1.679 Y-15.494 +G01 X+2.193 Y-12.16 +G01 X+2.986 Y-8.827 +G01 X+4.011 Y-5.617 +G01 X+4.264 Y-4.935 +G01 X+4.274 Y-4.445 +G01 X+4.318 Y-4.339 +G01 X+4.445 Y-4.274 +G01 X+4.886 Y-4.275 +G01 X+8.191 Y-3.18 +G01 X+11.524 Y-2.342 +G01 X+14.877 Y-1.776 +G01 X+18.076 Y-1.498 +G01 X+21.296 Y-1.475 +G01 X+24.506 Y-1.712 +G01 X+27.84 Y-2.231 +G01 X+31.173 Y-3.031 +G01 X+34.383 Y-4.065 +G01 X+35.065 Y-4.32 +G01 X+35.521 Y-4.329 +G01 X+35.67 Y-4.48 +G01 Y-4.886 +G01 X+36.816 Y-8.333 +G01 X+37.625 Y-11.543 +G01 X+38.192 Y-14.877 +G01 X+38.473 Y-18.086 +G01 X+38.499 Y-21.181 +G01 X+38.257 Y-24.507 +G01 X+37.734 Y-27.84 +G01 X+36.963 Y-31.049 +G01 X+35.885 Y-34.383 +G01 X+35.629 Y-35.064 +G01 X+35.619 Y-35.432 +G01 X+35.575 Y-35.538 +G01 X+35.432 Y-35.619 +G01 X+35.115 Y-35.618 +G01 X+31.914 Y-36.701 +G01 X+28.704 Y-37.536 +G01 X+25.377 Y-38.127 +G01 X+22.16 Y-38.432 +G01 X+18.951 Y-38.474 +G01 X+15.741 Y-38.255 +G01 X+12.42 Y-37.75 +G01 X+9.074 Y-36.957 +G01 X+5.864 Y-35.926 +G01 X+4.935 Y-35.577 +G01 X+4.583 Y-35.568 +G01 X+4.433 Y-35.417 +G01 Y-35.115 +G01 X+3.342 Y-31.914 +G01 X+2.5 Y-28.704 +G01 X+1.904 Y-25.377 +G01 X+1.596 Y-22.16 +G01 X+1.554 Y-18.951 +G01 X+1.775 Y-15.741 +G01 X+2.284 Y-12.42 +G01 X+3.083 Y-9.074 +G01 X+4.123 Y-5.864 +G01 X+4.475 Y-4.932 +G01 X+4.499 Y-4.626 +G01 X+4.649 Y-4.484 +G01 X+4.885 Y-4.485 +G01 X+8.086 Y-3.384 +G01 X+11.296 Y-2.535 +G01 X+14.623 Y-1.935 +G01 X+17.84 Y-1.625 +G01 X+21.049 Y-1.582 +G01 X+24.259 Y-1.805 +G01 X+27.346 Y-2.271 +G01 X+30.556 Y-3.02 +G01 X+33.889 Y-4.081 +G01 X+35.064 Y-4.526 +G01 X+35.308 Y-4.535 +G01 X+35.414 Y-4.579 +G01 X+35.464 Y-4.692 +G01 Y-4.885 +G01 X+36.573 Y-8.086 +G01 X+37.429 Y-11.296 +G01 X+38.035 Y-14.63 +G01 X+38.342 Y-17.761 +G01 X+38.392 Y-20.955 +G01 X+38.173 Y-24.187 +G01 X+37.713 Y-27.249 +G01 X+37.008 Y-30.309 +G01 X+36.048 Y-33.395 +G01 X+35.423 Y-35.065 +G01 X+35.413 Y-35.263 +G01 X+35.263 Y-35.413 +G01 X+35.116 +G01 X+31.914 Y-36.531 +G01 X+28.704 Y-37.393 +G01 X+25.617 Y-37.969 +G01 X+22.531 Y-38.296 +G01 X+19.473 Y-38.373 +G01 X+16.358 Y-38.2 +G01 X+13.194 Y-37.762 +G01 X+9.938 Y-37.036 +G01 X+6.605 Y-36.002 +G01 X+4.936 Y-35.371 +G01 X+4.815 Y-35.362 +G01 X+4.709 Y-35.318 +G01 X+4.639 Y-35.185 +G01 X+4.63 Y-35.065 +G01 X+3.512 Y-31.914 +G01 X+2.643 Y-28.704 +G01 X+2.062 Y-25.617 +G01 X+1.733 Y-22.531 +G01 X+1.655 Y-19.473 +G01 X+1.83 Y-16.358 +G01 X+2.271 Y-13.194 +G01 X+3.002 Y-9.938 +G01 X+4.045 Y-6.605 +G01 X+4.68 Y-4.936 +G01 X+4.84 Y-4.69 +G01 X+8.086 Y-3.555 +G01 X+11.296 Y-2.679 +G01 X+14.383 Y-2.094 +G01 X+17.469 Y-1.761 +G01 X+20.527 Y-1.683 +G01 X+23.642 Y-1.859 +G01 X+26.806 Y-2.304 +G01 X+29.815 Y-2.976 +G01 X+32.901 Y-3.917 +G01 X+35.069 Y-4.734 +G01 X+35.259 Y-4.893 +G01 X+36.404 Y-8.086 +G01 X+37.261 Y-11.186 +G01 X+37.864 Y-14.299 +G01 X+38.212 Y-17.469 +G01 X+38.289 Y-20.679 +G01 X+38.115 Y-23.642 +G01 X+37.682 Y-26.728 +G01 X+37.016 Y-29.725 +G01 X+36.045 Y-32.901 +G01 X+35.228 Y-35.06 +G01 X+35.114 Y-35.193 +G01 X+31.914 Y-36.369 +G01 X+28.704 Y-37.258 +G01 X+25.617 Y-37.852 +G01 X+22.531 Y-38.189 +G01 X+19.473 Y-38.269 +G01 X+16.358 Y-38.091 +G01 X+13.194 Y-37.641 +G01 X+10.185 Y-36.961 +G01 X+7.099 Y-36.008 +G01 X+4.94 Y-35.186 +G01 X+4.849 Y-35.113 +G01 X+3.666 Y-31.914 +G01 X+2.771 Y-28.704 +G01 X+2.174 Y-25.617 +G01 X+1.835 Y-22.531 +G01 X+1.754 Y-19.473 +G01 X+1.933 Y-16.358 +G01 X+2.386 Y-13.194 +G01 X+3.07 Y-10.185 +G01 X+4.029 Y-7.099 +G01 X+4.885 Y-4.93 +G01 X+4.973 Y-4.845 +G01 X+8.086 Y-3.701 +G01 X+11.296 Y-2.801 +G01 X+14.383 Y-2.2 +G01 X+17.469 Y-1.858 +G01 X+20.527 Y-1.777 +G01 X+23.642 Y-1.958 +G01 X+26.806 Y-2.413 +G01 X+29.815 Y-3.101 +G01 X+32.901 Y-4.066 +G01 X+35.028 Y-4.886 +G01 X+35.114 Y-4.972 +G01 X+35.928 Y-7.102 +G01 X+36.886 Y-10.19 +G01 X+37.569 Y-13.198 +G01 X+38.019 Y-16.361 +G01 X+38.194 Y-19.473 +G01 X+38.107 Y-22.528 +G01 X+37.757 Y-25.609 +G01 X+37.144 Y-28.688 +G01 X+36.229 Y-31.885 +G01 X+35.067 Y-34.98 +G01 X+34.98 Y-35.068 +G01 X+32.616 Y-35.969 +G01 X+29.417 Y-36.942 +G01 X+26.348 Y-37.609 +G01 X+23.262 Y-38.018 +G01 X+20.326 Y-38.161 +G01 X+17.231 Y-38.052 +G01 X+14.32 Y-37.705 +G01 X+11.224 Y-37.076 +G01 X+8.147 Y-36.185 +G01 X+5.066 Y-35.021 +G01 X+4.979 Y-34.934 +G01 X+4.075 Y-32.581 +G01 X+3.1 Y-29.394 +G01 X+2.429 Y-26.334 +G01 X+2.019 Y-23.256 +G01 X+1.875 Y-20.325 +G01 X+1.985 Y-17.237 +G01 X+2.333 Y-14.332 +G01 X+2.965 Y-11.245 +G01 X+3.859 Y-8.179 +G01 X+5.025 Y-5.112 +G01 X+5.112 Y-5.025 +G01 X+7.454 Y-4.12 +G01 X+10.629 Y-3.141 +G01 X+13.68 Y-2.468 +G01 X+16.751 Y-2.055 +G01 X+19.676 Y-1.911 +G01 X+22.758 Y-2.021 +G01 X+25.656 Y-2.371 +G01 X+28.734 Y-3.005 +G01 X+31.789 Y-3.903 +G01 X+34.842 Y-5.072 +G01 X+34.929 Y-5.158 +G01 X+35.838 Y-7.499 +G01 X+36.784 Y-10.531 +G01 X+37.472 Y-13.58 +G01 X+37.895 Y-16.636 +G01 X+38.051 Y-19.572 +G01 X+37.959 Y-22.507 +G01 X+37.601 Y-25.56 +G01 X+36.977 Y-28.603 +G01 X+36.048 Y-31.752 +G01 X+34.875 Y-34.79 +G01 X+34.79 Y-34.875 +G01 X+32.47 Y-35.784 +G01 X+29.321 Y-36.769 +G01 X+26.29 Y-37.448 +G01 X+23.235 Y-37.864 +G01 X+20.323 Y-38.01 +G01 X+17.255 Y-37.898 +G01 X+14.372 Y-37.544 +G01 X+11.313 Y-36.902 +G01 X+8.284 Y-35.998 +G01 X+5.263 Y-34.822 +G01 X+5.178 Y-34.737 +G01 X+4.18 Y-32.189 +G01 X+3.214 Y-29.053 +G01 X+2.557 Y-26.051 +G01 X+2.155 Y-22.984 +G01 X+2.03 Y-20.099 +G01 X+2.143 Y-17.261 +G01 X+2.5 Y-14.386 +G01 X+3.144 Y-11.337 +G01 X+4.052 Y-8.321 +G01 X+5.231 Y-5.315 +G01 X+5.315 Y-5.231 +G01 X+7.85 Y-4.231 +G01 X+10.973 Y-3.261 +G01 X+13.964 Y-2.601 +G01 X+17.017 Y-2.198 +G01 X+19.901 Y-2.07 +G01 X+22.733 Y-2.185 +G01 X+25.6 Y-2.543 +G01 X+28.639 Y-3.191 +G01 X+31.642 Y-4.102 +G01 X+34.632 Y-5.284 +G01 X+34.716 Y-5.368 +G01 X+35.635 Y-7.659 +G01 X+36.594 Y-10.638 +G01 X+37.295 Y-13.645 +G01 X+37.727 Y-16.66 +G01 X+37.887 Y-19.576 +G01 X+37.794 Y-22.478 +G01 X+37.428 Y-25.498 +G01 X+36.791 Y-28.508 +G01 X+35.848 Y-31.606 +G01 X+34.663 Y-34.58 +G01 X+34.58 Y-34.663 +G01 X+32.072 Y-35.668 +G01 X+28.977 Y-36.645 +G01 X+26.012 Y-37.31 +G01 X+22.969 Y-37.719 +G01 X+20.098 Y-37.848 +G01 X+17.28 Y-37.732 +G01 X+14.428 Y-37.37 +G01 X+11.409 Y-36.716 +G01 X+8.431 Y-35.797 +G01 X+5.473 Y-34.61 +G01 X+5.39 Y-34.527 +G01 X+4.382 Y-32.033 +G01 X+3.402 Y-28.951 +G01 X+2.734 Y-25.997 +G01 X+2.323 Y-22.962 +G01 X+2.193 Y-20.098 +G01 X+2.309 Y-17.286 +G01 X+2.673 Y-14.448 +G01 X+3.331 Y-11.433 +G01 X+4.253 Y-8.468 +G01 X+5.443 Y-5.525 +G01 X+5.525 Y-5.443 +G01 X+8.006 Y-4.433 +G01 X+11.074 Y-3.449 +G01 X+14.019 Y-2.778 +G01 X+17.044 Y-2.364 +G01 X+19.902 Y-2.234 +G01 X+22.707 Y-2.351 +G01 X+25.538 Y-2.716 +G01 X+28.543 Y-3.378 +G01 X+31.496 Y-4.303 +G01 X+34.422 Y-5.496 +G01 X+34.504 Y-5.578 +G01 X+35.432 Y-7.82 +G01 X+36.404 Y-10.745 +G01 X+37.117 Y-13.704 +G01 X+37.56 Y-16.692 +G01 X+37.724 Y-19.573 +G01 X+37.628 Y-22.454 +G01 X+37.255 Y-25.443 +G01 X+36.606 Y-28.407 +G01 X+35.647 Y-31.459 +G01 X+34.451 Y-34.37 +G01 X+34.37 Y-34.451 +G01 X+31.916 Y-35.466 +G01 X+28.881 Y-36.455 +G01 X+25.951 Y-37.135 +G01 X+22.942 Y-37.553 +G01 X+20.104 Y-37.684 +G01 X+17.312 Y-37.567 +G01 X+14.49 Y-37.197 +G01 X+11.511 Y-36.531 +G01 X+8.578 Y-35.597 +G01 X+5.683 Y-34.398 +G01 X+5.602 Y-34.317 +G01 X+4.585 Y-31.877 +G01 X+3.592 Y-28.856 +G01 X+2.909 Y-25.936 +G01 X+2.489 Y-22.935 +G01 X+2.356 Y-20.104 +G01 X+2.475 Y-17.319 +G01 X+2.847 Y-14.504 +G01 X+3.516 Y-11.535 +G01 X+4.453 Y-8.615 +G01 X+5.655 Y-5.735 +G01 X+5.735 Y-5.655 +G01 X+8.162 Y-4.635 +G01 X+11.169 Y-3.639 +G01 X+14.079 Y-2.953 +G01 X+17.072 Y-2.531 +G01 X+19.896 Y-2.397 +G01 X+22.675 Y-2.516 +G01 X+25.482 Y-2.89 +G01 X+28.441 Y-3.563 +G01 X+31.349 Y-4.503 +G01 X+34.212 Y-5.708 +G01 X+34.292 Y-5.788 +G01 X+35.4 Y-8.43 +G01 X+36.355 Y-11.343 +G01 X+37.031 Y-14.239 +G01 X+37.428 Y-17.079 +G01 X+37.562 Y-19.815 +G01 X+37.442 Y-22.672 +G01 X+37.038 Y-25.624 +G01 X+36.355 Y-28.545 +G01 X+35.447 Y-31.312 +G01 X+34.239 Y-34.159 +G01 X+34.159 Y-34.239 +G01 X+31.54 Y-35.347 +G01 X+28.773 Y-36.269 +G01 X+25.89 Y-36.959 +G01 X+22.914 Y-37.386 +G01 X+20.103 Y-37.521 +G01 X+17.338 Y-37.401 +G01 X+14.546 Y-37.023 +G01 X+11.607 Y-36.344 +G01 X+8.725 Y-35.397 +G01 X+5.893 Y-34.186 +G01 X+5.814 Y-34.107 +G01 X+4.703 Y-31.502 +G01 X+3.779 Y-28.748 +G01 X+3.085 Y-25.875 +G01 X+2.655 Y-22.907 +G01 X+2.52 Y-20.103 +G01 X+2.641 Y-17.344 +G01 X+3.021 Y-14.56 +G01 X+3.703 Y-11.631 +G01 X+4.654 Y-8.761 +G01 X+5.867 Y-5.946 +G01 X+5.946 Y-5.867 +G01 X+8.536 Y-4.754 +G01 X+11.271 Y-3.828 +G01 X+14.14 Y-3.129 +G01 X+17.1 Y-2.697 +G01 X+19.897 Y-2.56 +G01 X+22.649 Y-2.682 +G01 X+25.426 Y-3.064 +G01 X+28.345 Y-3.749 +G01 X+31.202 Y-4.704 +G01 X+34.005 Y-5.921 +G01 X+34.081 Y-5.994 +G01 X+34.147 Y-6.134 +G01 X+35.37 Y-9.031 +G01 X+36.257 Y-11.755 +G01 X+36.921 Y-14.648 +G01 X+37.283 Y-17.342 +G01 X+37.399 Y-20.089 +G01 X+37.254 Y-22.878 +G01 X+36.863 Y-25.566 +G01 X+36.167 Y-28.447 +G01 X+35.246 Y-31.165 +G01 X+34.027 Y-33.949 +G01 X+33.949 Y-34.027 +G01 X+31.157 Y-35.236 +G01 X+28.45 Y-36.145 +G01 X+25.571 Y-36.834 +G01 X+22.886 Y-37.22 +G01 X+20.103 Y-37.358 +G01 X+17.363 Y-37.235 +G01 X+14.602 Y-36.849 +G01 X+11.703 Y-36.157 +G01 X+8.878 Y-35.198 +G01 X+6.103 Y-33.974 +G01 X+6.026 Y-33.897 +G01 X+4.815 Y-31.121 +G01 X+3.902 Y-28.426 +G01 X+3.21 Y-25.556 +G01 X+2.822 Y-22.879 +G01 X+2.683 Y-20.103 +G01 X+2.807 Y-17.37 +G01 X+3.195 Y-14.616 +G01 X+3.889 Y-11.727 +G01 X+4.852 Y-8.914 +G01 X+6.079 Y-6.156 +G01 X+6.156 Y-6.079 +G01 X+8.916 Y-4.865 +G01 X+11.599 Y-3.949 +G01 X+14.458 Y-3.254 +G01 X+17.128 Y-2.864 +G01 X+19.898 Y-2.724 +G01 X+22.624 Y-2.848 +G01 X+25.37 Y-3.238 +G01 X+28.248 Y-3.936 +G01 X+31.049 Y-4.902 +G01 X+33.795 Y-6.134 +G01 X+33.868 Y-6.204 +G01 X+33.936 Y-6.341 +G01 X+35.171 Y-9.173 +G01 X+36.07 Y-11.849 +G01 X+36.747 Y-14.703 +G01 X+37.117 Y-17.367 +G01 X+37.235 Y-20.088 +G01 X+37.088 Y-22.85 +G01 X+36.689 Y-25.508 +G01 X+35.98 Y-28.349 +G01 X+35.048 Y-31.012 +G01 X+33.813 Y-33.742 +G01 X+33.743 Y-33.815 +G01 X+33.393 Y-33.987 +G01 X+30.722 Y-35.147 +G01 X+27.919 Y-36.083 +G01 X+25.284 Y-36.704 +G01 X+22.63 Y-37.075 +G01 X+19.833 Y-37.194 +G01 X+17.088 Y-37.039 +G01 X+14.392 Y-36.622 +G01 X+11.799 Y-35.971 +G01 X+9.025 Y-34.998 +G01 X+6.31 Y-33.76 +G01 X+6.238 Y-33.691 +G01 X+6.066 Y-33.343 +G01 X+4.903 Y-30.687 +G01 X+3.963 Y-27.897 +G01 X+3.34 Y-25.27 +G01 X+2.967 Y-22.623 +G01 X+2.847 Y-19.833 +G01 X+3.003 Y-17.096 +G01 X+3.422 Y-14.407 +G01 X+4.076 Y-11.823 +G01 X+5.052 Y-9.061 +G01 X+6.293 Y-6.363 +G01 X+6.707 Y-6.118 +G01 X+9.348 Y-4.953 +G01 X+12.126 Y-4.01 +G01 X+14.744 Y-3.383 +G01 X+17.383 Y-3.008 +G01 X+20.166 Y-2.887 +G01 X+22.897 Y-3.045 +G01 X+25.579 Y-3.465 +G01 X+28.153 Y-4.122 +G01 X+30.902 Y-5.102 +G01 X+33.585 Y-6.346 +G01 X+33.829 Y-6.758 +G01 X+35.054 Y-9.526 +G01 X+35.949 Y-12.166 +G01 X+36.573 Y-14.757 +G01 X+36.951 Y-17.393 +G01 X+37.072 Y-20.087 +G01 X+36.922 Y-22.822 +G01 X+36.514 Y-25.45 +G01 X+35.793 Y-28.251 +G01 X+34.848 Y-30.865 +G01 X+33.601 Y-33.533 +G01 X+33.192 Y-33.776 +G01 X+30.582 Y-34.948 +G01 X+27.828 Y-35.898 +G01 X+25.229 Y-36.53 +G01 X+22.604 Y-36.909 +G01 X+19.835 Y-37.031 +G01 X+17.117 Y-36.872 +G01 X+14.451 Y-36.447 +G01 X+11.895 Y-35.784 +G01 X+9.172 Y-34.798 +G01 X+6.52 Y-33.548 +G01 X+6.172 Y-32.934 +G01 X+5.003 Y-30.298 +G01 X+4.079 Y-27.567 +G01 X+3.472 Y-24.995 +G01 X+3.111 Y-22.365 +G01 X+3.01 Y-19.835 +G01 X+3.169 Y-17.124 +G01 X+3.597 Y-14.466 +G01 X+4.262 Y-11.919 +G01 X+5.252 Y-9.208 +G01 X+6.505 Y-6.573 +G01 X+7.115 Y-6.225 +G01 X+9.736 Y-5.053 +G01 X+12.455 Y-4.125 +G01 X+15.018 Y-3.515 +G01 X+17.64 Y-3.152 +G01 X+20.165 Y-3.051 +G01 X+22.869 Y-3.211 +G01 X+25.519 Y-3.64 +G01 X+28.057 Y-4.309 +G01 X+30.755 Y-5.303 +G01 X+33.375 Y-6.558 +G01 X+33.825 Y-7.37 +G01 X+35.023 Y-10.09 +G01 X+35.892 Y-12.697 +G01 X+36.485 Y-15.262 +G01 X+36.835 Y-17.989 +G01 X+36.901 Y-20.623 +G01 X+36.716 Y-23.135 +G01 X+36.286 Y-25.642 +G01 X+35.606 Y-28.153 +G01 X+34.647 Y-30.718 +G01 X+33.389 Y-33.323 +G01 X+32.787 Y-33.67 +G01 X+30.196 Y-34.848 +G01 X+27.502 Y-35.783 +G01 X+24.956 Y-36.398 +G01 X+22.235 Y-36.775 +G01 X+19.519 Y-36.863 +G01 X+16.873 Y-36.674 +G01 X+14.288 Y-36.223 +G01 X+11.793 Y-35.533 +G01 X+9.318 Y-34.597 +G01 X+6.73 Y-33.336 +G01 X+6.279 Y-32.535 +G01 X+5.116 Y-29.951 +G01 X+4.231 Y-27.371 +G01 X+3.601 Y-24.713 +G01 X+3.266 Y-22.229 +G01 X+3.178 Y-19.521 +G01 X+3.368 Y-16.881 +G01 X+3.821 Y-14.303 +G01 X+4.513 Y-11.817 +G01 X+5.453 Y-9.355 +G01 X+6.717 Y-6.783 +G01 X+7.513 Y-6.332 +G01 X+10.082 Y-5.165 +G01 X+12.65 Y-4.277 +G01 X+15.299 Y-3.644 +G01 X+17.777 Y-3.308 +G01 X+20.478 Y-3.219 +G01 X+23.111 Y-3.41 +G01 X+25.681 Y-3.865 +G01 X+28.158 Y-4.56 +G01 X+30.608 Y-5.503 +G01 X+33.165 Y-6.77 +G01 X+33.719 Y-7.761 +G01 X+34.827 Y-10.219 +G01 X+35.709 Y-12.78 +G01 X+36.313 Y-15.311 +G01 X+36.67 Y-18.008 +G01 X+36.737 Y-20.617 +G01 X+36.548 Y-23.104 +G01 X+36.11 Y-25.581 +G01 X+35.419 Y-28.055 +G01 X+34.447 Y-30.572 +G01 X+33.177 Y-33.112 +G01 X+32.192 Y-33.667 +G01 X+29.644 Y-34.82 +G01 X+27.09 Y-35.695 +G01 X+24.565 Y-36.29 +G01 X+21.987 Y-36.629 +G01 X+19.524 Y-36.7 +G01 X+16.905 Y-36.507 +G01 X+14.35 Y-36.047 +G01 X+11.892 Y-35.346 +G01 X+9.465 Y-34.397 +G01 X+6.94 Y-33.124 +G01 X+6.385 Y-32.146 +G01 X+5.229 Y-29.613 +G01 X+4.351 Y-27.07 +G01 X+3.753 Y-24.553 +G01 X+3.413 Y-21.982 +G01 X+3.341 Y-19.525 +G01 X+3.535 Y-16.912 +G01 X+3.997 Y-14.365 +G01 X+4.701 Y-11.917 +G01 X+5.653 Y-9.502 +G01 X+6.93 Y-6.992 +G01 X+7.901 Y-6.437 +G01 X+10.419 Y-5.278 +G01 X+12.951 Y-4.397 +G01 X+15.459 Y-3.796 +G01 X+18.023 Y-3.454 +G01 X+20.474 Y-3.382 +G01 X+23.08 Y-3.577 +G01 X+25.619 Y-4.041 +G01 X+28.058 Y-4.748 +G01 X+30.461 Y-5.703 +G01 X+32.955 Y-6.983 +G01 X+33.625 Y-8.169 +G01 X+34.756 Y-10.657 +G01 X+35.623 Y-13.196 +G01 X+36.19 Y-15.625 +G01 X+36.505 Y-18.028 +G01 X+36.574 Y-20.61 +G01 X+36.381 Y-23.072 +G01 X+35.935 Y-25.52 +G01 X+35.232 Y-27.957 +G01 X+34.247 Y-30.425 +G01 X+32.964 Y-32.902 +G01 X+31.812 Y-33.56 +G01 X+29.312 Y-34.707 +G01 X+26.795 Y-35.574 +G01 X+24.298 Y-36.159 +G01 X+21.753 Y-36.48 +G01 X+19.323 Y-36.531 +G01 X+16.936 Y-36.339 +G01 X+14.412 Y-35.871 +G01 X+11.991 Y-35.158 +G01 X+9.612 Y-34.197 +G01 X+7.15 Y-32.911 +G01 X+6.492 Y-31.767 +G01 X+5.341 Y-29.282 +G01 X+4.471 Y-26.775 +G01 X+3.884 Y-24.286 +G01 X+3.561 Y-21.749 +G01 X+3.51 Y-19.325 +G01 X+3.702 Y-16.944 +G01 X+4.173 Y-14.428 +G01 X+4.889 Y-12.016 +G01 X+5.853 Y-9.649 +G01 X+7.142 Y-7.202 +G01 X+8.279 Y-6.544 +G01 X+10.749 Y-5.39 +G01 X+13.245 Y-4.516 +G01 X+15.725 Y-3.926 +G01 X+18.256 Y-3.603 +G01 X+20.673 Y-3.551 +G01 X+23.048 Y-3.744 +G01 X+25.557 Y-4.217 +G01 X+27.959 Y-4.935 +G01 X+30.314 Y-5.903 +G01 X+32.745 Y-7.195 +G01 X+33.418 Y-8.349 +G01 X+34.562 Y-10.78 +G01 X+35.441 Y-13.275 +G01 X+36.018 Y-15.671 +G01 X+36.34 Y-18.047 +G01 X+36.411 Y-20.604 +G01 X+36.214 Y-23.04 +G01 X+35.759 Y-25.459 +G01 X+35.044 Y-27.859 +G01 X+34.046 Y-30.278 +G01 X+32.752 Y-32.693 +G01 X+31.631 Y-33.353 +G01 X+29.189 Y-34.513 +G01 X+26.716 Y-35.393 +G01 X+24.252 Y-35.988 +G01 X+21.736 Y-36.315 +G01 X+19.33 Y-36.368 +G01 X+16.968 Y-36.172 +G01 X+14.474 Y-35.695 +G01 X+12.091 Y-34.971 +G01 X+9.759 Y-33.996 +G01 X+7.359 Y-32.699 +G01 X+6.699 Y-31.586 +G01 X+5.536 Y-29.159 +G01 X+4.653 Y-26.696 +G01 X+4.054 Y-24.241 +G01 X+3.726 Y-21.731 +G01 X+3.673 Y-19.332 +G01 X+3.87 Y-16.975 +G01 X+4.349 Y-14.49 +G01 X+5.076 Y-12.116 +G01 X+6.054 Y-9.796 +G01 X+7.355 Y-7.412 +G01 X+8.459 Y-6.751 +G01 X+10.872 Y-5.584 +G01 X+13.323 Y-4.698 +G01 X+15.77 Y-4.097 +G01 X+18.273 Y-3.767 +G01 X+20.666 Y-3.714 +G01 X+23.017 Y-3.911 +G01 X+25.495 Y-4.393 +G01 X+27.859 Y-5.123 +G01 X+30.167 Y-6.104 +G01 X+32.536 Y-7.408 +G01 X+33.21 Y-8.528 +G01 X+34.367 Y-10.903 +G01 X+35.26 Y-13.354 +G01 X+35.847 Y-15.717 +G01 X+36.175 Y-18.066 +G01 X+36.247 Y-20.598 +G01 X+36.047 Y-23.009 +G01 X+35.584 Y-25.397 +G01 X+34.857 Y-27.761 +G01 X+33.846 Y-30.131 +G01 X+32.539 Y-32.483 +G01 X+31.451 Y-33.146 +G01 X+29.067 Y-34.318 +G01 X+26.637 Y-35.211 +G01 X+24.207 Y-35.817 +G01 X+21.719 Y-36.151 +G01 X+19.337 Y-36.204 +G01 X+16.999 Y-36.005 +G01 X+14.537 Y-35.519 +G01 X+12.19 Y-34.783 +G01 X+9.906 Y-33.796 +G01 X+7.569 Y-32.486 +G01 X+6.906 Y-31.406 +G01 X+5.73 Y-29.036 +G01 X+4.834 Y-26.618 +G01 X+4.225 Y-24.196 +G01 X+3.891 Y-21.714 +G01 X+3.837 Y-19.339 +G01 X+4.037 Y-17.007 +G01 X+4.525 Y-14.552 +G01 X+5.264 Y-12.215 +G01 X+6.254 Y-9.943 +G01 X+7.567 Y-7.621 +G01 X+8.64 Y-6.958 +G01 X+10.995 Y-5.779 +G01 X+13.402 Y-4.879 +G01 X+15.815 Y-4.268 +G01 X+18.29 Y-3.932 +G01 X+20.659 Y-3.877 +G01 X+22.985 Y-4.079 +G01 X+25.432 Y-4.569 +G01 X+27.76 Y-5.31 +G01 X+30.021 Y-6.304 +G01 X+32.326 Y-7.62 +G01 X+33.003 Y-8.708 +G01 X+34.172 Y-11.026 +G01 X+35.079 Y-13.432 +G01 X+35.689 Y-15.827 +G01 X+36.028 Y-18.303 +G01 X+36.084 Y-20.592 +G01 X+35.88 Y-22.977 +G01 X+35.408 Y-25.336 +G01 X+34.67 Y-27.663 +G01 X+33.646 Y-29.984 +G01 X+32.327 Y-32.273 +G01 X+30.908 Y-33.143 +G01 X+28.555 Y-34.292 +G01 X+26.273 Y-35.118 +G01 X+23.95 Y-35.687 +G01 X+21.701 Y-35.986 +G01 X+19.344 Y-36.041 +G01 X+17.031 Y-35.838 +G01 X+14.599 Y-35.343 +G01 X+12.29 Y-34.596 +G01 X+10.053 Y-33.596 +G01 X+7.78 Y-32.274 +G01 X+6.613 Y-30.324 +G01 X+5.555 Y-28.038 +G01 X+4.799 Y-25.822 +G01 X+4.262 Y-23.407 +G01 X+4.013 Y-21.046 +G01 X+4.025 Y-18.794 +G01 X+4.281 Y-16.549 +G01 X+4.78 Y-14.325 +G01 X+5.539 Y-12.091 +G01 X+6.551 Y-9.905 +G01 X+7.779 Y-7.832 +G01 X+9.715 Y-6.664 +G01 X+11.988 Y-5.602 +G01 X+14.195 Y-4.844 +G01 X+16.602 Y-4.304 +G01 X+18.957 Y-4.054 +G01 X+21.203 Y-4.066 +G01 X+23.441 Y-4.323 +G01 X+25.658 Y-4.824 +G01 X+27.883 Y-5.586 +G01 X+30.057 Y-6.601 +G01 X+32.115 Y-7.832 +G01 X+33.382 Y-9.936 +G01 X+34.39 Y-12.112 +G01 X+35.147 Y-14.335 +G01 X+35.654 Y-16.611 +G01 X+35.9 Y-18.859 +G01 X+35.897 Y-21.124 +G01 X+35.646 Y-23.37 +G01 X+35.155 Y-25.56 +G01 X+34.406 Y-27.76 +G01 X+33.345 Y-30.025 +G01 X+32.114 Y-32.063 +G01 X+30.207 Y-33.235 +G01 X+27.96 Y-34.303 +G01 X+25.771 Y-35.067 +G01 X+23.38 Y-35.612 +G01 X+21.038 Y-35.864 +G01 X+18.804 Y-35.852 +G01 X+16.577 Y-35.593 +G01 X+14.375 Y-35.087 +G01 X+12.169 Y-34.319 +G01 X+10.019 Y-33.298 +G01 X+7.989 Y-32.061 +G01 X+6.722 Y-29.994 +G01 X+5.665 Y-27.74 +G01 X+4.919 Y-25.55 +G01 X+4.43 Y-23.371 +G01 X+4.177 Y-21.036 +G01 X+4.189 Y-18.807 +G01 X+4.449 Y-16.587 +G01 X+4.957 Y-14.392 +G01 X+5.728 Y-12.195 +G01 X+6.752 Y-10.056 +G01 X+7.992 Y-8.042 +G01 X+10.044 Y-6.772 +G01 X+12.285 Y-5.712 +G01 X+14.466 Y-4.963 +G01 X+16.638 Y-4.473 +G01 X+18.967 Y-4.218 +G01 X+21.19 Y-4.23 +G01 X+23.404 Y-4.492 +G01 X+25.592 Y-5.001 +G01 X+27.78 Y-5.775 +G01 X+29.906 Y-6.802 +G01 X+31.906 Y-8.045 +G01 X+33.181 Y-10.088 +G01 X+34.201 Y-12.215 +G01 X+34.993 Y-14.482 +G01 X+35.485 Y-16.647 +G01 X+35.736 Y-18.87 +G01 X+35.733 Y-21.113 +G01 X+35.477 Y-23.334 +G01 X+34.978 Y-25.495 +G01 X+34.218 Y-27.658 +G01 X+33.144 Y-29.873 +G01 X+31.902 Y-31.854 +G01 X+29.88 Y-33.127 +G01 X+27.664 Y-34.193 +G01 X+25.502 Y-34.949 +G01 X+23.344 Y-35.443 +G01 X+21.028 Y-35.7 +G01 X+18.816 Y-35.688 +G01 X+16.571 Y-35.416 +G01 X+14.441 Y-34.91 +G01 X+12.272 Y-34.13 +G01 X+10.17 Y-33.097 +G01 X+8.199 Y-31.848 +G01 X+6.924 Y-29.843 +G01 X+5.854 Y-27.639 +G01 X+5.096 Y-25.485 +G01 X+4.599 Y-23.335 +G01 X+4.341 Y-21.025 +G01 X+4.353 Y-18.82 +G01 X+4.626 Y-16.581 +G01 X+5.134 Y-14.458 +G01 X+5.917 Y-12.298 +G01 X+6.953 Y-10.208 +G01 X+8.205 Y-8.251 +G01 X+10.195 Y-6.974 +G01 X+12.387 Y-5.901 +G01 X+14.531 Y-5.14 +G01 X+16.674 Y-4.641 +G01 X+18.977 Y-4.382 +G01 X+21.177 Y-4.394 +G01 X+23.41 Y-4.668 +G01 X+25.526 Y-5.178 +G01 X+27.676 Y-5.964 +G01 X+29.754 Y-7.004 +G01 X+31.697 Y-8.258 +G01 X+32.979 Y-10.239 +G01 X+34.012 Y-12.318 +G01 X+34.816 Y-14.547 +G01 X+35.317 Y-16.684 +G01 X+35.572 Y-18.882 +G01 X+35.57 Y-21.101 +G01 X+35.309 Y-23.297 +G01 X+34.741 Y-25.628 +G01 X+33.948 Y-27.743 +G01 X+32.943 Y-29.722 +G01 X+31.689 Y-31.644 +G01 X+29.729 Y-32.925 +G01 X+27.563 Y-34.005 +G01 X+25.437 Y-34.772 +G01 X+23.308 Y-35.275 +G01 X+21.017 Y-35.536 +G01 X+18.829 Y-35.524 +G01 X+16.609 Y-35.248 +G01 X+14.508 Y-34.733 +G01 X+12.376 Y-33.942 +G01 X+10.322 Y-32.896 +G01 X+8.408 Y-31.635 +G01 X+7.125 Y-29.691 +G01 X+6.042 Y-27.537 +G01 X+5.273 Y-25.421 +G01 X+4.767 Y-23.299 +G01 X+4.505 Y-21.015 +G01 X+4.517 Y-18.832 +G01 X+4.794 Y-16.619 +G01 X+5.311 Y-14.524 +G01 X+6.106 Y-12.402 +G01 X+7.155 Y-10.36 +G01 X+8.42 Y-8.457 +G01 X+8.569 Y-8.337 +G01 X+10.523 Y-7.073 +G01 X+12.488 Y-6.089 +G01 X+14.596 Y-5.317 +G01 X+16.71 Y-4.81 +G01 X+18.988 Y-4.546 +G01 X+21.165 Y-4.558 +G01 X+23.372 Y-4.837 +G01 X+25.459 Y-5.356 +G01 X+27.572 Y-6.153 +G01 X+29.603 Y-7.205 +G01 X+31.491 Y-8.474 +G01 X+31.61 Y-8.621 +G01 X+32.876 Y-10.56 +G01 X+33.914 Y-12.631 +G01 X+34.697 Y-14.808 +G01 X+35.184 Y-16.924 +G01 X+35.419 Y-19.102 +G01 X+35.384 Y-21.401 +G01 X+35.093 Y-23.507 +G01 X+34.563 Y-25.56 +G01 X+33.759 Y-27.638 +G01 X+32.742 Y-29.57 +G01 X+31.473 Y-31.438 +G01 X+31.328 Y-31.558 +G01 X+29.403 Y-32.826 +G01 X+27.461 Y-33.816 +G01 X+25.372 Y-34.595 +G01 X+23.272 Y-35.106 +G01 X+21.007 Y-35.373 +G01 X+18.842 Y-35.36 +G01 X+16.647 Y-35.079 +G01 X+14.574 Y-34.556 +G01 X+12.48 Y-33.753 +G01 X+10.473 Y-32.695 +G01 X+8.614 Y-31.42 +G01 X+8.495 Y-31.276 +G01 X+7.224 Y-29.367 +G01 X+6.231 Y-27.435 +G01 X+5.45 Y-25.356 +G01 X+4.936 Y-23.262 +G01 X+4.668 Y-21.004 +G01 X+4.681 Y-18.845 +G01 X+4.963 Y-16.656 +G01 X+5.488 Y-14.591 +G01 X+6.294 Y-12.506 +G01 X+7.356 Y-10.511 +G01 X+8.634 Y-8.666 +G01 X+8.776 Y-8.548 +G01 X+10.67 Y-7.274 +G01 X+12.59 Y-6.278 +G01 X+14.66 Y-5.494 +G01 X+16.747 Y-4.978 +G01 X+18.998 Y-4.709 +G01 X+21.152 Y-4.722 +G01 X+23.334 Y-5.005 +G01 X+25.393 Y-5.533 +G01 X+27.468 Y-6.341 +G01 X+29.451 Y-7.406 +G01 X+31.281 Y-8.687 +G01 X+31.512 Y-8.977 +G01 X+32.774 Y-10.873 +G01 X+33.8 Y-12.898 +G01 X+34.521 Y-14.87 +G01 X+35.016 Y-16.958 +G01 X+35.256 Y-19.111 +G01 X+35.219 Y-21.386 +G01 X+34.924 Y-23.467 +G01 X+34.385 Y-25.492 +G01 X+33.569 Y-27.532 +G01 X+32.54 Y-29.419 +G01 X+31.26 Y-31.229 +G01 X+30.973 Y-31.459 +G01 X+29.187 Y-32.667 +G01 X+27.179 Y-33.709 +G01 X+25.217 Y-34.446 +G01 X+23.034 Y-34.974 +G01 X+20.996 Y-35.209 +G01 X+18.855 Y-35.196 +G01 X+16.685 Y-34.91 +G01 X+14.641 Y-34.379 +G01 X+12.583 Y-33.564 +G01 X+10.625 Y-32.493 +G01 X+8.824 Y-31.207 +G01 X+8.481 Y-30.775 +G01 X+7.292 Y-29 +G01 X+6.258 Y-26.974 +G01 X+5.544 Y-25.024 +G01 X+5.068 Y-23.025 +G01 X+4.832 Y-20.994 +G01 X+4.845 Y-18.858 +G01 X+5.132 Y-16.694 +G01 X+5.666 Y-14.657 +G01 X+6.483 Y-12.609 +G01 X+7.557 Y-10.663 +G01 X+8.847 Y-8.876 +G01 X+9.274 Y-8.533 +G01 X+11.035 Y-7.342 +G01 X+13.05 Y-6.305 +G01 X+14.991 Y-5.588 +G01 X+16.984 Y-5.11 +G01 X+19.009 Y-4.873 +G01 X+21.139 Y-4.886 +G01 X+23.296 Y-5.174 +G01 X+25.326 Y-5.71 +G01 X+27.365 Y-6.53 +G01 X+29.299 Y-7.607 +G01 X+31.072 Y-8.9 +G01 X+31.301 Y-9.178 +G01 X+32.574 Y-11.015 +G01 X+33.613 Y-12.993 +G01 X+34.345 Y-14.932 +G01 X+34.848 Y-16.992 +G01 X+35.092 Y-19.12 +G01 X+35.055 Y-21.371 +G01 X+34.755 Y-23.428 +G01 X+34.208 Y-25.423 +G01 X+33.38 Y-27.427 +G01 X+32.339 Y-29.267 +G01 X+31.047 Y-31.019 +G01 X+30.627 Y-31.362 +G01 X+28.894 Y-32.558 +G01 X+26.903 Y-33.602 +G01 X+24.979 Y-34.324 +G01 X+23 Y-34.806 +G01 X+20.986 Y-35.045 +G01 X+18.867 Y-35.032 +G01 X+16.764 Y-34.75 +G01 X+14.782 Y-34.227 +G01 X+12.886 Y-33.471 +G01 X+11.094 Y-32.495 +G01 X+9.289 Y-31.206 +G01 X+8.698 Y-30.587 +G01 X+7.492 Y-28.859 +G01 X+6.445 Y-26.879 +G01 X+5.72 Y-24.963 +G01 X+5.236 Y-22.991 +G01 X+4.996 Y-20.983 +G01 X+5.009 Y-18.87 +G01 X+5.292 Y-16.773 +G01 X+5.818 Y-14.798 +G01 X+6.576 Y-12.911 +G01 X+7.555 Y-11.129 +G01 X+8.847 Y-9.339 +G01 X+9.463 Y-8.751 +G01 X+11.176 Y-7.541 +G01 X+13.144 Y-6.491 +G01 X+15.052 Y-5.764 +G01 X+17.017 Y-5.278 +G01 X+19.019 Y-5.037 +G01 X+21.126 Y-5.05 +G01 X+23.258 Y-5.343 +G01 X+25.26 Y-5.887 +G01 X+27.261 Y-6.719 +G01 X+29.148 Y-7.808 +G01 X+30.863 Y-9.114 +G01 X+31.091 Y-9.38 +G01 X+32.375 Y-11.157 +G01 X+33.351 Y-12.929 +G01 X+34.108 Y-14.806 +G01 X+34.643 Y-16.828 +G01 X+34.917 Y-18.927 +G01 X+34.914 Y-21.053 +G01 X+34.635 Y-23.151 +G01 X+34.094 Y-25.168 +G01 X+33.277 Y-27.149 +G01 X+32.287 Y-28.89 +G01 X+31.047 Y-30.561 +G01 X+30.439 Y-31.145 +G01 X+28.754 Y-32.359 +G01 X+26.809 Y-33.416 +G01 X+24.918 Y-34.148 +G01 X+22.966 Y-34.638 +G01 X+20.976 Y-34.881 +G01 X+18.88 Y-34.868 +G01 X+16.76 Y-34.573 +G01 X+14.847 Y-34.05 +G01 X+12.985 Y-33.283 +G01 X+11.236 Y-32.296 +G01 X+9.489 Y-30.994 +G01 X+8.907 Y-30.389 +G01 X+7.691 Y-28.719 +G01 X+6.631 Y-26.785 +G01 X+5.895 Y-24.903 +G01 X+5.404 Y-22.957 +G01 X+5.16 Y-20.973 +G01 X+5.173 Y-18.883 +G01 X+5.469 Y-16.77 +G01 X+5.994 Y-14.864 +G01 X+6.764 Y-13.01 +G01 X+7.754 Y-11.272 +G01 X+9.058 Y-9.54 +G01 X+9.797 Y-8.846 +G01 X+11.498 Y-7.626 +G01 X+13.399 Y-6.604 +G01 X+15.321 Y-5.874 +G01 X+17.247 Y-5.41 +G01 X+19.213 Y-5.191 +G01 X+21.344 Y-5.232 +G01 X+23.415 Y-5.554 +G01 X+25.362 Y-6.125 +G01 X+27.158 Y-6.908 +G01 X+28.996 Y-8.01 +G01 X+30.654 Y-9.328 +G01 X+30.88 Y-9.582 +G01 X+32.175 Y-11.299 +G01 X+33.163 Y-13.028 +G01 X+33.931 Y-14.871 +G01 X+34.474 Y-16.864 +G01 X+34.753 Y-18.939 +G01 X+34.75 Y-21.041 +G01 X+34.467 Y-23.114 +G01 X+33.947 Y-25.017 +G01 X+33.173 Y-26.878 +G01 X+32.181 Y-28.605 +G01 X+30.951 Y-30.228 +G01 X+30.108 Y-31.049 +G01 X+28.434 Y-32.276 +G01 X+26.714 Y-33.229 +G01 X+24.857 Y-33.973 +G01 X+22.932 Y-34.47 +G01 X+20.965 Y-34.718 +G01 X+18.893 Y-34.704 +G01 X+16.798 Y-34.404 +G01 X+14.913 Y-33.873 +G01 X+13.085 Y-33.096 +G01 X+11.379 Y-32.097 +G01 X+9.821 Y-30.899 +G01 X+9.004 Y-30.06 +G01 X+7.774 Y-28.4 +G01 X+6.817 Y-26.691 +G01 X+6.071 Y-24.842 +G01 X+5.572 Y-22.924 +G01 X+5.323 Y-20.963 +G01 X+5.337 Y-18.896 +G01 X+5.638 Y-16.808 +G01 X+6.171 Y-14.929 +G01 X+6.951 Y-13.11 +G01 X+7.953 Y-11.414 +G01 X+9.154 Y-9.87 +G01 X+10.122 Y-8.942 +G01 X+11.788 Y-7.724 +G01 X+13.49 Y-6.789 +G01 X+15.379 Y-6.048 +G01 X+17.279 Y-5.577 +G01 X+19.222 Y-5.354 +G01 X+21.329 Y-5.396 +G01 X+23.374 Y-5.723 +G01 X+25.292 Y-6.302 +G01 X+27.218 Y-7.185 +G01 X+28.845 Y-8.211 +G01 X+30.444 Y-9.541 +G01 X+30.785 Y-9.912 +G01 X+31.976 Y-11.442 +G01 X+32.975 Y-13.127 +G01 X+33.754 Y-14.936 +G01 X+34.306 Y-16.9 +G01 X+34.589 Y-18.95 +G01 X+34.593 Y-20.937 +G01 X+34.338 Y-22.886 +G01 X+33.829 Y-24.787 +G01 X+33.07 Y-26.612 +G01 X+32.1 Y-28.29 +G01 X+30.856 Y-29.904 +G01 X+29.785 Y-30.953 +G01 X+28.147 Y-32.177 +G01 X+26.464 Y-33.119 +G01 X+24.593 Y-33.864 +G01 X+22.651 Y-34.349 +G01 X+20.774 Y-34.564 +G01 X+18.679 Y-34.521 +G01 X+16.646 Y-34.192 +G01 X+14.742 Y-33.609 +G01 X+12.835 Y-32.72 +G01 X+11.23 Y-31.688 +G01 X+9.768 Y-30.456 +G01 X+8.438 Y-28.921 +G01 X+7.363 Y-27.276 +G01 X+6.483 Y-25.423 +G01 X+5.888 Y-23.556 +G01 X+5.536 Y-21.542 +G01 X+5.464 Y-19.589 +G01 X+5.667 Y-17.555 +G01 X+6.152 Y-15.568 +G01 X+6.858 Y-13.771 +G01 X+7.848 Y-12.003 +G01 X+9.006 Y-10.466 +G01 X+10.307 Y-9.151 +G01 X+11.919 Y-7.921 +G01 X+13.581 Y-6.974 +G01 X+15.436 Y-6.223 +G01 X+17.405 Y-5.727 +G01 X+18.013 Y-5.661 +G01 X+18.12 Y-5.642 +G02 X+28.808 Y-8.506 I+1.88 J-14.358 +G01 X+30.24 Y-9.76 +G00 Z+0.775 +G00 X+41.95 Y+0 +G00 Z-4.225 +G01 Z-5.45 F10000 +G01 X+41.904 Y-40.391 F12000 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-1.091 Y-41.609 +G01 X-1.624 Y-41.069 +G01 X-1.913 Y-40.359 +G01 X-1.949 Y-40.007 +G01 X-1.904 Y+0.391 +G01 X-1.609 Y+1.091 +G01 X-1.069 Y+1.624 +G01 X-0.359 Y+1.913 +G01 X-0.007 Y+1.949 +G01 X+40.391 Y+1.904 +G01 X+40.51 Y+1.87 +G01 X+40.856 Y+1.742 +G01 X+41.132 Y+1.576 +G01 X+41.362 Y+1.381 +G01 X+41.607 Y+1.086 +G01 X+41.73 Y+0.877 +G01 X+41.852 Y+0.574 +G01 X+41.938 Y+0.011 +G01 X+41.879 Y-40.085 +G01 X+41.808 Y-40.515 +G01 X+41.687 Y-40.829 +G01 X+41.527 Y-41.096 +G01 X+41.345 Y-41.311 +G01 X+40.57 Y-41.782 +G01 X+39.568 Y-41.878 +G01 X+8.827 Y-41.858 +G01 X+0 Y-41.821 +G01 X-0.105 Y-41.817 +G01 X-0.498 Y-41.749 +G01 X-0.802 Y-41.633 +G01 X-1.06 Y-41.478 +G01 X-1.276 Y-41.295 +G01 X-1.501 Y-41.024 +G01 X-1.748 Y-40.482 +G01 X-1.816 Y-39.321 +G01 X-1.839 Y-12.901 +G01 X-1.758 Y+0.079 +G01 X-1.691 Y+0.48 +G01 X-1.578 Y+0.775 +G01 X-1.429 Y+1.024 +G01 X-1.259 Y+1.225 +G01 X-0.536 Y+1.665 +G01 X+0.556 Y+1.756 +G01 X+24.506 Y+1.816 +G01 X+35.09 Y+1.706 +G01 X+40 Y+1.699 +G01 X+40.463 Y+1.632 +G01 X+40.747 Y+1.523 +G01 X+40.988 Y+1.379 +G01 X+41.19 Y+1.209 +G01 X+41.404 Y+0.95 +G01 X+41.512 Y+0.768 +G01 X+41.618 Y+0.504 +G01 X+41.694 Y+0.01 +G01 X+41.737 Y-8.827 +G01 X+41.782 Y-23.889 +G01 X+41.635 Y-38.704 +G01 X+41.631 Y-40.072 +G01 X+41.569 Y-40.445 +G01 X+41.465 Y-40.718 +G01 X+41.326 Y-40.949 +G01 X+41.17 Y-41.135 +G01 X+40.499 Y-41.543 +G01 X+39.444 Y-41.629 +G01 X+32.407 Y-41.667 +G01 X+18.704 Y-41.756 +G01 X+6.111 Y-41.603 +G01 X+0 Y-41.568 +G01 X-0.426 Y-41.506 +G01 X-0.689 Y-41.406 +G01 X-0.911 Y-41.273 +G01 X-1.097 Y-41.116 +G01 X-1.29 Y-40.884 +G01 X-1.503 Y-40.419 +G01 X-1.563 Y-39.198 +G01 X-1.602 Y-32.901 +G01 X-1.723 Y-20.432 +G01 X-1.6 Y-8.58 +G01 X-1.506 Y-2.778 +G01 X-1.5 Y+0.065 +G01 X-1.443 Y+0.408 +G01 X-1.347 Y+0.659 +G01 X-1.22 Y+0.872 +G01 X-1.077 Y+1.042 +G01 X-0.462 Y+1.417 +G01 X+0.556 Y+1.498 +G01 X+6.605 Y+1.533 +G01 X+18.333 Y+1.686 +G01 X+29.321 Y+1.593 +G01 X+35.09 Y+1.444 +G01 X+40 Y+1.436 +G01 X+40.389 Y+1.38 +G01 X+40.63 Y+1.289 +G01 X+40.834 Y+1.167 +G01 X+41.001 Y+1.026 +G01 X+41.272 Y+0.657 +G01 X+41.367 Y+0.428 +G01 X+41.432 Y+0.01 +G01 X+41.468 Y-6.39 +G01 X+41.647 Y-17.469 +G01 X+41.576 Y-27.84 +G01 X+41.376 Y-36.481 +G01 X+41.369 Y-40.059 +G01 X+41.318 Y-40.364 +G01 X+41.116 Y-40.789 +G01 X+40.984 Y-40.949 +G01 X+40.425 Y-41.292 +G01 X+39.444 Y-41.367 +G01 X+33.889 Y-41.399 +G01 X+23.642 Y-41.603 +G01 X+13.765 Y-41.562 +G01 X+3.519 Y-41.311 +G01 X+0 Y-41.305 +G01 X-0.352 Y-41.254 +G01 X-0.571 Y-41.171 +G01 X-0.757 Y-41.061 +G01 X-0.912 Y-40.93 +G01 X-1.072 Y-40.738 +G01 X-1.249 Y-40.354 +G01 X-1.3 Y-38.827 +G01 X-1.338 Y-33.889 +G01 X-1.563 Y-23.889 +G01 X-1.532 Y-14.383 +G01 X-1.257 Y-5.123 +G01 X-1.238 Y+0.052 +G01 X-1.191 Y+0.334 +G01 X-1.113 Y+0.542 +G01 X-1.008 Y+0.718 +G01 X-0.891 Y+0.857 +G01 X-0.388 Y+1.166 +G01 X+0.679 Y+1.235 +G01 X+5.864 Y+1.268 +G01 X+15.247 Y+1.515 +G01 X+24.259 Y+1.514 +G01 X+33.125 Y+1.269 +G01 X+35.09 Y+1.182 +G01 X+40 Y+1.174 +G01 X+40.315 Y+1.128 +G01 X+40.507 Y+1.056 +G01 X+40.809 Y+0.843 +G01 X+41.038 Y+0.539 +G01 X+41.116 Y+0.353 +G01 X+41.17 Y+0.01 +G01 X+41.206 Y-5.864 +G01 X+41.471 Y-14.877 +G01 X+41.484 Y-23.642 +G01 X+41.253 Y-32.168 +G01 X+41.115 Y-35.988 +G01 X+41.107 Y-40.045 +G01 X+41.067 Y-40.291 +G01 X+40.904 Y-40.634 +G01 X+40.799 Y-40.764 +G01 X+40.351 Y-41.04 +G01 X+39.198 Y-41.105 +G01 X+34.383 Y-41.133 +G01 X+25.864 Y-41.419 +G01 X+17.469 Y-41.46 +G01 X+9.074 Y-41.251 +G01 X+4.136 Y-41.049 +G01 X+0 Y-41.043 +G01 X-0.272 Y-41.004 +G01 X-0.589 Y-40.854 +G01 X-0.848 Y-40.596 +G01 X-0.995 Y-40.29 +G01 X-1.035 Y-36.975 +G01 X-1.082 Y-34.136 +G01 X-1.378 Y-25.864 +G01 X-1.427 Y-17.84 +G01 X-1.235 Y-9.938 +G01 X-0.983 Y-4.136 +G01 X-0.976 Y+0.038 +G01 X-0.941 Y+0.254 +G01 X-0.798 Y+0.557 +G01 X-0.706 Y+0.671 +G01 X-0.314 Y+0.914 +G01 X+1.049 Y+0.973 +G01 X+5.617 Y+1.007 +G01 X+13.634 Y+1.326 +G01 X+21.667 Y+1.395 +G01 X+29.321 Y+1.216 +G01 X+35.09 Y+0.919 +G01 X+40 Y+0.911 +G01 X+40.235 Y+0.878 +G01 X+40.519 Y+0.745 +G01 X+40.63 Y+0.656 +G01 X+40.803 Y+0.422 +G01 X+40.862 Y+0.286 +G01 X+40.908 Y-0.926 +G01 X+40.945 Y-5.617 +G01 X+41.28 Y-13.42 +G01 X+41.363 Y-20.955 +G01 X+41.203 Y-28.476 +G01 X+40.852 Y-35.741 +G01 X+40.844 Y-40.031 +G01 X+40.815 Y-40.217 +G01 X+40.692 Y-40.48 +G01 X+40.613 Y-40.579 +G01 X+40.277 Y-40.788 +G01 X+38.21 Y-40.841 +G01 X+34.383 Y-40.882 +G01 X+26.728 Y-41.234 +G01 X+19.246 Y-41.329 +G01 X+12.037 Y-41.178 +G01 X+4.91 Y-40.788 +G01 X+0.011 Y-40.78 +G01 X-0.196 Y-40.752 +G01 X-0.435 Y-40.642 +G01 X-0.63 Y-40.451 +G01 X-0.741 Y-40.224 +G01 X-0.819 Y-34.383 +G01 X-1.183 Y-27.022 +G01 X-1.295 Y-19.815 +G01 X-1.157 Y-12.654 +G01 X-0.775 Y-5.617 +G01 X-0.721 Y-3.889 +G01 X-0.686 Y+0.161 +G01 X-0.524 Y+0.472 +G01 X-0.24 Y+0.662 +G01 X+5.617 Y+0.756 +G01 X+12.751 Y+1.133 +G01 X+19.673 Y+1.259 +G01 X+26.58 Y+1.142 +G01 X+33.395 Y+0.784 +G01 X+35.09 Y+0.657 +G01 X+39.983 Y+0.649 +G01 X+40.261 Y+0.587 +G01 X+40.434 Y+0.477 +G01 X+40.6 Y+0.221 +G01 X+40.676 Y-5.37 +G01 X+41.079 Y-12.42 +G01 X+41.224 Y-19.246 +G01 X+41.119 Y-26.139 +G01 X+40.765 Y-32.901 +G01 X+40.595 Y-35.617 +G01 X+40.565 Y-40.125 +G01 X+40.435 Y-40.383 +G01 X+40.204 Y-40.542 +G01 X+34.63 Y-40.617 +G01 X+27.84 Y-41.029 +G01 X+21.181 Y-41.189 +G01 X+14.63 Y-41.107 +G01 X+8.086 Y-40.782 +G01 X+4.383 Y-40.534 +G01 X+0.024 Y-40.528 +G01 X-0.274 Y-40.438 +G01 X-0.42 Y-40.311 +G01 X-0.497 Y-40.161 +G01 X-0.558 Y-34.63 +G01 X-0.988 Y-27.84 +G01 X-1.155 Y-21.296 +G01 X-1.078 Y-14.877 +G01 X-0.749 Y-8.333 +G01 X-0.473 Y-4.383 +G01 X-0.448 Y+0.091 +G01 X-0.349 Y+0.297 +G01 X-0.169 Y+0.425 +G01 X+5.37 Y+0.499 +G01 X+11.79 Y+0.93 +G01 X+18.333 Y+1.119 +G01 X+24.753 Y+1.053 +G01 X+31.173 Y+0.734 +G01 X+35.09 Y+0.413 +G01 X+39.97 Y+0.405 +G01 X+40.24 Y+0.305 +G01 X+40.367 Y+0.151 +G01 X+40.439 Y-5.37 +G01 X+40.887 Y-11.79 +G01 X+41.081 Y-18.086 +G01 X+41.03 Y-24.259 +G01 X+40.726 Y-30.556 +G01 X+40.347 Y-35.494 +G01 X+40.304 Y-40.104 +G01 X+40.258 Y-40.215 +G01 X+40.132 Y-40.304 +G01 X+34.63 Y-40.375 +G01 X+28.21 Y-40.843 +G01 X+21.924 Y-41.045 +G01 X+15.741 Y-40.992 +G01 X+9.703 Y-40.694 +G01 X+4.506 Y-40.281 +G01 X+0.038 Y-40.274 +G01 X-0.182 Y-40.176 +G01 X-0.252 Y-40.097 +G01 X-0.311 Y-34.63 +G01 X-0.783 Y-28.476 +G01 X-1.002 Y-22.407 +G01 X-0.971 Y-16.358 +G01 X-0.695 Y-10.432 +G01 X-0.216 Y-4.506 +G01 X-0.169 Y+0.05 +G01 X-0.096 Y+0.178 +G01 X+5.37 Y+0.247 +G01 X+11.524 Y+0.738 +G01 X+17.469 Y+0.964 +G01 X+23.395 Y+0.94 +G01 X+29.321 Y+0.664 +G01 X+35.083 Y+0.151 +G01 X+39.876 Y+0.144 +G01 X+39.982 Y+0.101 +G01 X+40.101 Y-0.018 +G01 X+40.145 Y-0.123 +G01 X+40.187 Y-5.37 +G01 X+40.676 Y-11.186 +G01 X+40.922 Y-16.975 +G01 X+40.923 Y-22.781 +G01 X+40.682 Y-28.476 +G01 X+40.177 Y-34.383 +G01 X+40.098 Y-35.617 +G01 X+40.093 Y-39.876 +G01 X+40.049 Y-39.982 +G01 X+39.877 Y-40.093 +G01 X+34.63 Y-40.137 +G01 X+28.704 Y-40.648 +G01 X+22.781 Y-40.898 +G01 X+16.975 Y-40.888 +G01 X+11.296 Y-40.632 +G01 X+5.617 Y-40.128 +G01 X+4.383 Y-40.047 +G01 X+0.124 Y-40.041 +G01 X+0.018 Y-39.997 +G01 X-0.042 Y-39.877 +G01 X-0.087 Y-34.63 +G01 X-0.595 Y-28.951 +G01 X-0.856 Y-23.324 +G01 X-0.876 Y-17.761 +G01 X-0.652 Y-12.16 +G01 X-0.187 Y-6.605 +G01 X+0.004 Y-4.513 +G01 X+0.01 Y-0.159 +G01 X+0.159 Y-0.009 +G01 X+5.37 Y+0.037 +G01 X+11.049 Y+0.559 +G01 X+16.605 Y+0.826 +G01 X+22.16 Y+0.849 +G01 X+27.84 Y+0.618 +G01 X+33.395 Y+0.14 +G01 X+35.081 Y-0.055 +G01 X+39.753 Y-0.063 +G01 X+39.859 Y-0.106 +G01 X+39.938 Y-0.247 +G01 X+39.985 Y-5.37 +G01 X+40.514 Y-10.96 +G01 X+40.794 Y-16.605 +G01 X+40.817 Y-22.16 +G01 X+40.594 Y-27.593 +G01 X+40.113 Y-33.148 +G01 X+39.884 Y-35.487 +G01 X+39.877 Y-39.728 +G01 X+39.728 Y-39.877 +G01 X+34.636 Y-39.926 +G01 X+29.198 Y-40.459 +G01 X+23.642 Y-40.752 +G01 X+18.086 Y-40.788 +G01 X+12.654 Y-40.57 +G01 X+7.355 Y-40.115 +G01 X+4.514 Y-39.823 +G01 X+0.371 Y-39.816 +G01 X+0.265 Y-39.772 +G01 X+0.184 Y-39.63 +G01 X+0.134 Y-34.636 +G01 X-0.415 Y-29.198 +G01 X-0.71 Y-23.889 +G01 X-0.762 Y-18.618 +G01 X-0.564 Y-13.194 +G01 X-0.115 Y-7.84 +G01 X+0.238 Y-4.638 +G01 X+0.245 Y-0.395 +G01 X+0.395 Y-0.245 +G01 X+5.116 Y-0.224 +G01 X+10.556 Y+0.352 +G01 X+15.813 Y+0.664 +G01 X+21.049 Y+0.732 +G01 X+26.235 Y+0.559 +G01 X+31.42 Y+0.143 +G01 X+35.081 Y-0.298 +G01 X+39.506 Y-0.306 +G01 X+39.612 Y-0.35 +G01 X+39.694 Y-0.494 +G01 X+39.716 Y-5.116 +G01 X+40.298 Y-10.432 +G01 X+40.626 Y-15.741 +G01 X+40.7 Y-20.955 +G01 X+40.527 Y-26.139 +G01 X+40.107 Y-31.296 +G01 X+39.64 Y-35.362 +G01 X+39.633 Y-39.484 +G01 X+39.484 Y-39.633 +G01 X+34.885 Y-39.656 +G01 X+29.725 Y-40.239 +G01 X+24.507 Y-40.581 +G01 X+19.246 Y-40.669 +G01 X+14.012 Y-40.498 +G01 X+8.827 Y-40.072 +G01 X+4.638 Y-39.58 +G01 X+0.618 Y-39.572 +G01 X+0.512 Y-39.528 +G01 X+0.428 Y-39.382 +G01 X+0.435 Y-35.099 +G01 X-0.173 Y-29.951 +G01 X-0.535 Y-24.753 +G01 X-0.638 Y-19.568 +G01 X-0.482 Y-14.383 +G01 X-0.08 Y-9.353 +G01 X+0.481 Y-4.638 +G01 X+0.489 Y-0.639 +G01 X+0.639 Y-0.489 +G01 X+4.901 Y-0.496 +G01 X+9.938 Y+0.118 +G01 X+15 Y+0.487 +G01 X+20.185 Y+0.605 +G01 X+25.123 Y+0.472 +G01 X+30.062 Y+0.094 +G01 X+35.081 Y-0.542 +G01 X+39.301 Y-0.555 +G01 X+39.45 Y-0.705 +G01 X+39.444 Y-4.901 +G01 X+40.072 Y-9.938 +G01 X+40.445 Y-14.877 +G01 X+40.573 Y-19.815 +G01 X+40.454 Y-24.753 +G01 X+40.083 Y-29.725 +G01 X+39.467 Y-34.63 +G01 X+39.396 Y-35.494 +G01 X+39.39 Y-39.24 +G01 X+39.24 Y-39.39 +G01 X+35.1 Y-39.383 +G01 X+30.062 Y-40.027 +G01 X+25.123 Y-40.409 +G01 X+20.1 Y-40.54 +G01 X+15.247 Y-40.418 +G01 X+10.432 Y-40.054 +G01 X+5.617 Y-39.446 +G01 X+4.638 Y-39.336 +G01 X+0.821 Y-39.322 +G01 X+0.671 Y-39.171 +G01 X+0.678 Y-35.1 +G01 X+0.019 Y-30.062 +G01 X-0.372 Y-25.123 +G01 X-0.506 Y-20.327 +G01 X-0.395 Y-15.494 +G01 X-0.035 Y-10.679 +G01 X+0.575 Y-5.864 +G01 X+0.725 Y-4.639 +G01 X+0.732 Y-0.882 +G01 X+0.882 Y-0.732 +G01 X+4.9 Y-0.739 +G01 X+9.691 Y-0.091 +G01 X+14.623 Y+0.321 +G01 X+19.568 Y+0.473 +G01 X+24.506 Y+0.359 +G01 X+29.321 Y-0.009 +G01 X+34.136 Y-0.632 +G01 X+35.078 Y-0.785 +G01 X+39.058 Y-0.802 +G01 X+39.207 Y-0.952 +G01 X+39.201 Y-4.9 +G01 X+39.864 Y-9.703 +G01 X+40.285 Y-14.63 +G01 X+40.439 Y-19.473 +G01 X+40.339 Y-24.187 +G01 X+39.986 Y-28.951 +G01 X+39.388 Y-33.642 +G01 X+39.153 Y-35.36 +G01 X+39.147 Y-38.996 +G01 X+38.996 Y-39.146 +G01 X+35.101 Y-39.14 +G01 X+30.309 Y-39.817 +G01 X+25.617 Y-40.234 +G01 X+20.955 Y-40.403 +G01 X+16.358 Y-40.329 +G01 X+11.543 Y-39.992 +G01 X+6.875 Y-39.411 +G01 X+4.64 Y-39.093 +G01 X+1.064 Y-39.075 +G01 X+0.915 Y-38.925 +G01 X+0.921 Y-35.101 +G01 X+0.229 Y-30.309 +G01 X-0.197 Y-25.617 +G01 X-0.369 Y-20.955 +G01 X-0.294 Y-16.358 +G01 X+0.025 Y-11.79 +G01 X+0.608 Y-7.099 +G01 X+0.968 Y-4.64 +G01 X+0.975 Y-1.125 +G01 X+1.126 Y-0.976 +G01 X+4.899 Y-0.982 +G01 X+9.691 Y-0.275 +G01 X+14.383 Y+0.16 +G01 X+19.045 Y+0.336 +G01 X+23.642 Y+0.259 +G01 X+28.21 Y-0.067 +G01 X+32.901 Y-0.661 +G01 X+35.078 Y-1.028 +G01 X+38.814 Y-1.049 +G01 X+38.964 Y-1.199 +G01 X+38.958 Y-4.899 +G01 X+39.649 Y-9.444 +G01 X+40.098 Y-14.012 +G01 X+40.297 Y-18.618 +G01 X+40.24 Y-23.272 +G01 X+39.929 Y-27.84 +G01 X+39.362 Y-32.407 +G01 X+38.91 Y-35.359 +G01 X+38.903 Y-38.753 +G01 X+38.753 Y-38.903 +G01 X+35.102 Y-38.897 +G01 X+30.556 Y-39.602 +G01 X+25.864 Y-40.069 +G01 X+21.296 Y-40.266 +G01 X+16.605 Y-40.201 +G01 X+12.16 Y-39.888 +G01 X+7.593 Y-39.31 +G01 X+4.641 Y-38.849 +G01 X+1.307 Y-38.828 +G01 X+1.158 Y-38.678 +G01 X+1.164 Y-35.102 +G01 X+0.445 Y-30.556 +G01 X-0.011 Y-26.139 +G01 X-0.226 Y-21.667 +G01 X-0.19 Y-17.222 +G01 X+0.105 Y-12.654 +G01 X+0.665 Y-8.086 +G01 X+1.212 Y-4.641 +G01 X+1.219 Y-1.369 +G01 X+1.369 Y-1.219 +G01 X+4.898 Y-1.225 +G01 X+9.444 Y-0.491 +G01 X+13.861 Y-0.027 +G01 X+18.333 Y+0.192 +G01 X+22.778 Y+0.156 +G01 X+27.099 Y-0.122 +G01 X+31.667 Y-0.678 +G01 X+35.078 Y-1.272 +G01 X+38.571 Y-1.295 +G01 X+38.72 Y-1.446 +G01 X+38.715 Y-4.898 +G01 X+39.449 Y-9.353 +G01 X+39.928 Y-13.765 +G01 X+40.153 Y-18.086 +G01 X+40.135 Y-22.407 +G01 X+39.873 Y-26.728 +G01 X+39.365 Y-31.049 +G01 X+38.667 Y-35.359 +G01 X+38.66 Y-38.51 +G01 X+38.51 Y-38.66 +G01 X+35.103 Y-38.654 +G01 X+30.556 Y-39.416 +G01 X+26.139 Y-39.898 +G01 X+21.667 Y-40.125 +G01 X+17.222 Y-40.088 +G01 X+12.901 Y-39.8 +G01 X+8.58 Y-39.261 +G01 X+4.641 Y-38.606 +G01 X+1.55 Y-38.581 +G01 X+1.401 Y-38.431 +G01 X+1.407 Y-35.103 +G01 X+0.667 Y-30.802 +G01 X+0.168 Y-26.481 +G01 X-0.08 Y-22.16 +G01 X-0.076 Y-17.84 +G01 X+0.182 Y-13.519 +G01 X+0.713 Y-9.074 +G01 X+1.455 Y-4.642 +G01 X+1.462 Y-1.612 +G01 X+1.612 Y-1.462 +G01 X+4.897 Y-1.468 +G01 X+9.198 Y-0.714 +G01 X+13.519 Y-0.207 +G01 X+17.84 Y+0.046 +G01 X+22.16 Y+0.042 +G01 X+26.481 Y-0.22 +G01 X+30.647 Y-0.718 +G01 X+34.877 Y-1.472 +G01 X+35.075 Y-1.514 +G01 X+38.328 Y-1.542 +G01 X+38.477 Y-1.692 +G01 X+38.472 Y-4.897 +G01 X+39.262 Y-9.353 +G01 X+39.777 Y-13.765 +G01 X+40.019 Y-18.086 +G01 X+40 Y-22.407 +G01 X+39.719 Y-26.728 +G01 X+39.173 Y-31.049 +G01 X+38.423 Y-35.358 +G01 X+38.416 Y-38.267 +G01 X+38.266 Y-38.416 +G01 X+35.104 Y-38.411 +G01 X+30.802 Y-39.192 +G01 X+26.481 Y-39.717 +G01 X+22.16 Y-39.979 +G01 X+17.84 Y-39.975 +G01 X+13.519 Y-39.704 +G01 X+9.353 Y-39.188 +G01 X+5.123 Y-38.407 +G01 X+4.925 Y-38.364 +G01 X+1.794 Y-38.335 +G01 X+1.645 Y-38.184 +G01 X+1.65 Y-35.104 +G01 X+0.856 Y-30.802 +G01 X+0.321 Y-26.481 +G01 X+0.055 Y-22.16 +G01 X+0.059 Y-17.84 +G01 X+0.312 Y-13.765 +G01 X+0.806 Y-9.703 +G01 X+1.546 Y-5.617 +G01 X+1.697 Y-4.926 +G01 X+1.705 Y-1.855 +G01 X+1.856 Y-1.706 +G01 X+4.896 Y-1.711 +G01 X+9.198 Y-0.903 +G01 X+13.272 Y-0.383 +G01 X+17.469 Y-0.101 +G01 X+21.667 Y-0.078 +G01 X+25.701 Y-0.302 +G01 X+29.815 Y-0.779 +G01 X+33.889 Y-1.5 +G01 X+35.075 Y-1.758 +G01 X+38.085 Y-1.789 +G01 X+38.234 Y-1.939 +G01 X+38.229 Y-4.896 +G01 X+39.03 Y-9.074 +G01 X+39.57 Y-13.194 +G01 X+39.855 Y-17.222 +G01 X+39.897 Y-21.296 +G01 X+39.688 Y-25.377 +G01 X+39.23 Y-29.444 +G01 X+38.494 Y-33.642 +G01 X+38.181 Y-35.074 +G01 X+38.173 Y-38.023 +G01 X+38.023 Y-38.173 +G01 X+35.105 Y-38.168 +G01 X+30.802 Y-39.003 +G01 X+26.728 Y-39.54 +G01 X+22.531 Y-39.831 +G01 X+18.333 Y-39.855 +G01 X+14.299 Y-39.624 +G01 X+10.185 Y-39.131 +G01 X+6.111 Y-38.386 +G01 X+4.926 Y-38.12 +G01 X+2.037 Y-38.088 +G01 X+1.888 Y-37.938 +G01 X+1.893 Y-35.105 +G01 X+1.086 Y-31.049 +G01 X+0.53 Y-27.022 +G01 X+0.224 Y-23.025 +G01 X+0.165 Y-18.951 +G01 X+0.364 Y-14.877 +G01 X+0.84 Y-10.679 +G01 X+1.565 Y-6.605 +G01 X+1.94 Y-4.926 +G01 X+1.949 Y-2.099 +G01 X+1.993 Y-1.993 +G01 X+2.099 Y-1.949 +G01 X+4.895 Y-1.954 +G01 X+8.951 Y-1.134 +G01 X+12.978 Y-0.569 +G01 X+16.975 Y-0.258 +G01 X+21.049 Y-0.199 +G01 X+25.123 Y-0.4 +G01 X+29.04 Y-0.842 +G01 X+33.125 Y-1.563 +G01 X+35.075 Y-2.001 +G01 X+37.842 Y-2.035 +G01 X+37.991 Y-2.186 +G01 X+37.987 Y-4.895 +G01 X+38.841 Y-9.074 +G01 X+39.417 Y-13.194 +G01 X+39.72 Y-17.222 +G01 X+39.767 Y-21.181 +G01 X+39.566 Y-25.123 +G01 X+39.095 Y-29.198 +G01 X+38.382 Y-33.148 +G01 X+37.943 Y-35.074 +G01 X+37.935 Y-37.778 +G01 X+37.891 Y-37.883 +G01 X+37.777 Y-37.935 +G01 X+35.106 Y-37.931 +G01 X+31.049 Y-38.775 +G01 X+27.022 Y-39.357 +G01 X+23.025 Y-39.678 +G01 X+18.951 Y-39.739 +G01 X+14.877 Y-39.532 +G01 X+10.96 Y-39.078 +G01 X+7.099 Y-38.385 +G01 X+4.927 Y-37.886 +G01 X+2.271 Y-37.879 +G01 X+2.122 Y-37.729 +G01 X+2.126 Y-35.106 +G01 X+1.269 Y-31.049 +G01 X+0.679 Y-27.022 +G01 X+0.354 Y-23.025 +G01 X+0.292 Y-18.951 +G01 X+0.502 Y-14.877 +G01 X+0.962 Y-10.96 +G01 X+1.665 Y-7.099 +G01 X+2.17 Y-4.927 +G01 X+2.178 Y-2.346 +G01 X+2.222 Y-2.24 +G01 X+2.346 Y-2.178 +G01 X+4.894 Y-2.182 +G01 X+8.951 Y-1.313 +G01 X+12.978 Y-0.715 +G01 X+16.975 Y-0.385 +G01 X+21.049 Y-0.322 +G01 X+24.828 Y-0.511 +G01 X+28.704 Y-0.951 +G01 X+32.645 Y-1.659 +G01 X+35.073 Y-2.226 +G01 X+37.617 Y-2.233 +G01 X+37.767 Y-2.383 +G01 X+37.763 Y-4.894 +G01 X+38.62 Y-8.827 +G01 X+39.212 Y-12.654 +G01 X+39.565 Y-16.605 +G01 X+39.657 Y-20.432 +G01 X+39.503 Y-24.259 +G01 X+39.1 Y-28.086 +G01 X+38.449 Y-31.914 +G01 X+37.722 Y-35.073 +G01 X+37.715 Y-37.531 +G01 X+37.671 Y-37.636 +G01 X+37.53 Y-37.715 +G01 X+35.106 Y-37.712 +G01 X+31.049 Y-38.603 +G01 X+27.249 Y-39.189 +G01 X+23.395 Y-39.535 +G01 X+19.568 Y-39.629 +G01 X+15.741 Y-39.473 +G01 X+11.79 Y-39.048 +G01 X+7.84 Y-38.355 +G01 X+4.927 Y-37.671 +G01 X+2.486 Y-37.664 +G01 X+2.336 Y-37.514 +G01 X+2.34 Y-35.107 +G01 X+1.438 Y-31.049 +G01 X+0.844 Y-27.249 +G01 X+0.494 Y-23.395 +G01 X+0.399 Y-19.568 +G01 X+0.557 Y-15.741 +G01 X+0.987 Y-11.79 +G01 X+1.688 Y-7.84 +G01 X+2.381 Y-4.926 +G01 X+2.406 Y-2.537 +G01 X+2.556 Y-2.388 +G01 X+4.893 Y-2.391 +G01 X+8.704 Y-1.526 +G01 X+12.654 Y-0.889 +G01 X+16.605 Y-0.523 +G01 X+20.432 Y-0.427 +G01 X+24.259 Y-0.587 +G01 X+28.21 Y-1.022 +G01 X+32.16 Y-1.732 +G01 X+35.073 Y-2.432 +G01 X+37.407 Y-2.439 +G01 X+37.513 Y-2.483 +G01 X+37.561 Y-2.593 +G01 X+37.557 Y-4.893 +G01 X+38.457 Y-8.827 +G01 X+39.077 Y-12.654 +G01 X+39.432 Y-16.358 +G01 X+39.546 Y-20.1 +G01 X+39.41 Y-23.889 +G01 X+39.03 Y-27.593 +G01 X+38.406 Y-31.296 +G01 X+37.516 Y-35.073 +G01 X+37.509 Y-37.359 +G01 X+37.359 Y-37.509 +G01 X+35.107 Y-37.506 +G01 X+31.296 Y-38.392 +G01 X+27.346 Y-39.044 +G01 X+23.642 Y-39.403 +G01 X+19.815 Y-39.518 +G01 X+16.111 Y-39.38 +G01 X+12.42 Y-38.997 +G01 X+8.58 Y-38.34 +G01 X+4.927 Y-37.465 +G01 X+2.716 Y-37.458 +G01 X+2.61 Y-37.414 +G01 X+2.542 Y-37.283 +G01 X+2.546 Y-35.108 +G01 X+1.65 Y-31.296 +G01 X+1.023 Y-27.593 +G01 X+0.643 Y-23.889 +G01 X+0.51 Y-20.1 +G01 X+0.633 Y-16.358 +G01 X+1.004 Y-12.654 +G01 X+1.651 Y-8.827 +G01 X+2.532 Y-5.123 +G01 X+2.585 Y-4.93 +G01 X+2.594 Y-2.744 +G01 X+2.744 Y-2.594 +G01 X+4.892 Y-2.597 +G01 X+8.704 Y-1.691 +G01 X+12.407 Y-1.057 +G01 X+16.111 Y-0.672 +G01 X+19.9 Y-0.538 +G01 X+23.642 Y-0.662 +G01 X+27.346 Y-1.038 +G01 X+31.173 Y-1.692 +G01 X+34.877 Y-2.583 +G01 X+35.071 Y-2.637 +G01 X+37.205 Y-2.654 +G01 X+37.354 Y-2.804 +G01 X+37.351 Y-4.892 +G01 X+38.292 Y-8.827 +G01 X+38.941 Y-12.654 +G01 X+39.312 Y-16.358 +G01 X+39.431 Y-20.1 +G01 X+39.288 Y-23.889 +G01 X+38.889 Y-27.593 +G01 X+38.235 Y-31.296 +G01 X+37.301 Y-35.072 +G01 X+37.294 Y-37.144 +G01 X+37.143 Y-37.293 +G01 X+35.108 Y-37.29 +G01 X+31.296 Y-38.218 +G01 X+27.593 Y-38.867 +G01 X+23.889 Y-39.261 +G01 X+20.1 Y-39.398 +G01 X+16.358 Y-39.27 +G01 X+12.654 Y-38.884 +G01 X+8.827 Y-38.212 +G01 X+5.123 Y-37.297 +G01 X+4.93 Y-37.242 +G01 X+2.917 Y-37.223 +G01 X+2.768 Y-37.073 +G01 X+2.771 Y-35.108 +G01 X+1.831 Y-31.296 +G01 X+1.174 Y-27.593 +G01 X+0.774 Y-23.889 +G01 X+0.636 Y-20.327 +G01 X+0.747 Y-16.605 +G01 X+1.121 Y-12.901 +G01 X+1.784 Y-9.074 +G01 X+2.693 Y-5.37 +G01 X+2.819 Y-4.93 +G01 X+2.828 Y-2.978 +G01 X+2.979 Y-2.829 +G01 X+4.891 Y-2.832 +G01 X+8.704 Y-1.88 +G01 X+12.407 Y-1.214 +G01 X+16.111 Y-0.809 +G01 X+19.673 Y-0.669 +G01 X+23.395 Y-0.782 +G01 X+27.099 Y-1.161 +G01 X+30.647 Y-1.773 +G01 X+34.383 Y-2.682 +G01 X+35.07 Y-2.88 +G01 X+36.962 Y-2.9 +G01 X+37.111 Y-3.05 +G01 X+37.108 Y-4.891 +G01 X+38.046 Y-8.58 +G01 X+38.71 Y-12.16 +G01 X+39.127 Y-15.741 +G01 X+39.294 Y-19.246 +G01 X+39.221 Y-22.781 +G01 X+38.897 Y-26.366 +G01 X+38.321 Y-29.951 +G01 X+37.464 Y-33.642 +G01 X+37.059 Y-35.07 +G01 X+37.05 Y-36.9 +G01 X+36.9 Y-37.05 +G01 X+35.109 Y-37.047 +G01 X+31.296 Y-38.024 +G01 X+27.593 Y-38.706 +G01 X+23.889 Y-39.121 +G01 X+20.327 Y-39.265 +G01 X+16.605 Y-39.149 +G01 X+12.901 Y-38.761 +G01 X+9.353 Y-38.133 +G01 X+5.617 Y-37.201 +G01 X+4.93 Y-36.998 +G01 X+3.16 Y-36.977 +G01 X+3.011 Y-36.826 +G01 X+3.014 Y-35.109 +G01 X+2.025 Y-31.296 +G01 X+1.334 Y-27.593 +G01 X+0.914 Y-23.889 +G01 X+0.768 Y-20.327 +G01 X+0.885 Y-16.605 +G01 X+1.279 Y-12.901 +G01 X+1.914 Y-9.353 +G01 X+2.787 Y-5.864 +G01 X+3.062 Y-4.931 +G01 X+3.072 Y-3.222 +G01 X+3.222 Y-3.072 +G01 X+4.89 Y-3.075 +G01 X+8.418 Y-2.139 +G01 X+12.16 Y-1.412 +G01 X+15.741 Y-0.979 +G01 X+19.321 Y-0.804 +G01 X+22.778 Y-0.881 +G01 X+26.235 Y-1.2 +G01 X+29.815 Y-1.787 +G01 X+33.395 Y-2.635 +G01 X+35.07 Y-3.124 +G01 X+36.719 Y-3.147 +G01 X+36.868 Y-3.297 +G01 X+36.865 Y-4.89 +G01 X+37.85 Y-8.58 +G01 X+38.548 Y-12.16 +G01 X+38.986 Y-15.741 +G01 X+39.161 Y-19.246 +G01 X+39.085 Y-22.781 +G01 X+38.745 Y-26.366 +G01 X+38.14 Y-29.951 +G01 X+37.24 Y-33.642 +G01 X+36.816 Y-35.069 +G01 X+36.807 Y-36.657 +G01 X+36.657 Y-36.807 +G01 X+35.11 Y-36.804 +G01 X+31.582 Y-37.762 +G01 X+28.086 Y-38.467 +G01 X+24.507 Y-38.928 +G01 X+20.955 Y-39.125 +G01 X+17.469 Y-39.065 +G01 X+14.012 Y-38.756 +G01 X+10.432 Y-38.174 +G01 X+6.875 Y-37.329 +G01 X+4.93 Y-36.755 +G01 X+3.402 Y-36.73 +G01 X+3.254 Y-36.58 +G01 X+3.257 Y-35.11 +G01 X+2.287 Y-31.582 +G01 X+1.574 Y-28.086 +G01 X+1.108 Y-24.507 +G01 X+0.908 Y-20.955 +G01 X+0.969 Y-17.469 +G01 X+1.281 Y-14.012 +G01 X+1.871 Y-10.432 +G01 X+2.725 Y-6.875 +G01 X+3.306 Y-4.931 +G01 X+3.315 Y-3.465 +G01 X+3.465 Y-3.315 +G01 X+4.889 Y-3.318 +G01 X+8.418 Y-2.337 +G01 X+11.914 Y-1.616 +G01 X+15.493 Y-1.143 +G01 X+19.045 Y-0.942 +G01 X+22.531 Y-1.003 +G01 X+25.988 Y-1.319 +G01 X+29.568 Y-1.915 +G01 X+33.125 Y-2.779 +G01 X+35.07 Y-3.367 +G01 X+36.476 Y-3.393 +G01 X+36.624 Y-3.543 +G01 X+36.622 Y-4.889 +G01 X+37.593 Y-8.333 +G01 X+38.323 Y-11.79 +G01 X+38.79 Y-15.172 +G01 X+39.015 Y-18.618 +G01 X+38.982 Y-22.16 +G01 X+38.69 Y-25.617 +G01 X+38.116 Y-29.198 +G01 X+37.298 Y-32.654 +G01 X+36.572 Y-35.069 +G01 X+36.564 Y-36.414 +G01 X+36.414 Y-36.564 +G01 X+35.111 Y-36.561 +G01 X+31.582 Y-37.565 +G01 X+28.086 Y-38.303 +G01 X+24.507 Y-38.786 +G01 X+20.955 Y-38.992 +G01 X+17.469 Y-38.93 +G01 X+14.012 Y-38.606 +G01 X+10.432 Y-37.997 +G01 X+6.875 Y-37.112 +G01 X+4.93 Y-36.511 +G01 X+3.645 Y-36.484 +G01 X+3.498 Y-36.334 +G01 X+3.5 Y-35.111 +G01 X+2.485 Y-31.582 +G01 X+1.76 Y-28.21 +G01 X+1.274 Y-24.753 +G01 X+1.049 Y-21.296 +G01 X+1.085 Y-17.84 +G01 X+1.384 Y-14.383 +G01 X+1.94 Y-10.96 +G01 X+2.738 Y-7.593 +G01 X+3.549 Y-4.931 +G01 X+3.558 Y-3.708 +G01 X+3.708 Y-3.558 +G01 X+4.888 Y-3.561 +G01 X+8.418 Y-2.534 +G01 X+11.79 Y-1.801 +G01 X+15.247 Y-1.31 +G01 X+18.704 Y-1.082 +G01 X+22.16 Y-1.119 +G01 X+25.617 Y-1.421 +G01 X+29.04 Y-1.983 +G01 X+32.407 Y-2.79 +G01 X+35.07 Y-3.611 +G01 X+36.234 Y-3.639 +G01 X+36.381 Y-3.789 +G01 X+36.379 Y-4.888 +G01 X+37.395 Y-8.333 +G01 X+38.158 Y-11.79 +G01 X+38.646 Y-15.172 +G01 X+38.882 Y-18.618 +G01 X+38.858 Y-21.924 +G01 X+38.572 Y-25.377 +G01 X+38.042 Y-28.704 +G01 X+37.224 Y-32.168 +G01 X+36.329 Y-35.068 +G01 X+36.321 Y-36.171 +G01 X+36.17 Y-36.32 +G01 X+35.112 Y-36.318 +G01 X+31.582 Y-37.367 +G01 X+28.21 Y-38.116 +G01 X+24.753 Y-38.619 +G01 X+21.296 Y-38.851 +G01 X+17.84 Y-38.814 +G01 X+14.383 Y-38.505 +G01 X+10.96 Y-37.931 +G01 X+7.593 Y-37.106 +G01 X+4.93 Y-36.268 +G01 X+3.887 Y-36.238 +G01 X+3.741 Y-36.088 +G01 X+3.742 Y-35.112 +G01 X+2.682 Y-31.582 +G01 X+1.925 Y-28.21 +G01 X+1.417 Y-24.753 +G01 X+1.182 Y-21.296 +G01 X+1.22 Y-17.84 +G01 X+1.532 Y-14.383 +G01 X+2.112 Y-10.96 +G01 X+2.946 Y-7.593 +G01 X+3.793 Y-4.932 +G01 X+3.801 Y-3.951 +G01 X+3.952 Y-3.802 +G01 X+4.888 Y-3.803 +G01 X+8.418 Y-2.732 +G01 X+11.79 Y-1.967 +G01 X+15.247 Y-1.453 +G01 X+18.704 Y-1.215 +G01 X+22.16 Y-1.253 +G01 X+25.617 Y-1.569 +G01 X+29.04 Y-2.155 +G01 X+32.407 Y-2.998 +G01 X+35.07 Y-3.854 +G01 X+35.992 Y-3.885 +G01 X+36.138 Y-4.035 +G01 X+36.137 Y-4.887 +G01 X+37.197 Y-8.333 +G01 X+37.993 Y-11.79 +G01 X+38.502 Y-15.172 +G01 X+38.748 Y-18.618 +G01 X+38.724 Y-21.924 +G01 X+38.457 Y-25.123 +G01 X+37.919 Y-28.476 +G01 X+37.121 Y-31.809 +G01 X+36.086 Y-35.068 +G01 X+36.077 Y-35.926 +G01 X+36.033 Y-36.031 +G01 X+35.925 Y-36.077 +G01 X+35.113 Y-36.076 +G01 X+31.809 Y-37.108 +G01 X+28.476 Y-37.899 +G01 X+25.123 Y-38.432 +G01 X+21.924 Y-38.694 +G01 X+18.704 Y-38.716 +G01 X+15.494 Y-38.491 +G01 X+12.16 Y-38.001 +G01 X+8.827 Y-37.245 +G01 X+5.37 Y-36.181 +G01 X+4.932 Y-36.026 +G01 X+4.129 Y-35.992 +G01 X+3.984 Y-35.842 +G01 X+3.985 Y-35.113 +G01 X+2.942 Y-31.809 +G01 X+2.143 Y-28.476 +G01 X+1.604 Y-25.123 +G01 X+1.339 Y-21.924 +G01 X+1.318 Y-18.704 +G01 X+1.544 Y-15.494 +G01 X+2.04 Y-12.16 +G01 X+2.803 Y-8.827 +G01 X+3.878 Y-5.37 +G01 X+4.034 Y-4.934 +G01 X+4.045 Y-4.198 +G01 X+4.089 Y-4.092 +G01 X+4.198 Y-4.045 +G01 X+4.886 Y-4.046 +G01 X+8.191 Y-2.993 +G01 X+11.524 Y-2.185 +G01 X+14.877 Y-1.64 +G01 X+18.076 Y-1.373 +G01 X+21.296 Y-1.351 +G01 X+24.506 Y-1.58 +G01 X+27.84 Y-2.08 +G01 X+31.173 Y-2.852 +G01 X+34.383 Y-3.85 +G01 X+35.065 Y-4.095 +G01 X+35.745 Y-4.105 +G01 X+35.895 Y-4.255 +G01 X+35.894 Y-4.886 +G01 X+36.999 Y-8.333 +G01 X+37.778 Y-11.543 +G01 X+38.325 Y-14.877 +G01 X+38.596 Y-18.086 +G01 X+38.617 Y-21.296 +G01 X+38.386 Y-24.507 +G01 X+37.882 Y-27.84 +G01 X+37.137 Y-31.049 +G01 X+36.096 Y-34.383 +G01 X+35.849 Y-35.065 +G01 X+35.839 Y-35.679 +G01 X+35.795 Y-35.785 +G01 X+35.678 Y-35.839 +G01 X+35.114 Y-35.838 +G01 X+31.809 Y-36.912 +G01 X+28.476 Y-37.735 +G01 X+25.123 Y-38.291 +G01 X+21.924 Y-38.564 +G01 X+18.704 Y-38.586 +G01 X+15.494 Y-38.354 +G01 X+12.16 Y-37.844 +G01 X+8.827 Y-37.059 +G01 X+5.617 Y-36.043 +G01 X+4.935 Y-35.793 +G01 X+4.367 Y-35.783 +G01 X+4.218 Y-35.632 +G01 X+4.219 Y-35.114 +G01 X+3.134 Y-31.809 +G01 X+2.303 Y-28.476 +G01 X+1.742 Y-25.123 +G01 X+1.467 Y-21.924 +G01 X+1.444 Y-18.704 +G01 X+1.679 Y-15.494 +G01 X+2.193 Y-12.16 +G01 X+2.986 Y-8.827 +G01 X+4.011 Y-5.617 +G01 X+4.264 Y-4.935 +G01 X+4.274 Y-4.445 +G01 X+4.318 Y-4.339 +G01 X+4.445 Y-4.274 +G01 X+4.886 Y-4.275 +G01 X+8.191 Y-3.18 +G01 X+11.524 Y-2.342 +G01 X+14.877 Y-1.776 +G01 X+18.076 Y-1.498 +G01 X+21.296 Y-1.475 +G01 X+24.506 Y-1.712 +G01 X+27.84 Y-2.231 +G01 X+31.173 Y-3.031 +G01 X+34.383 Y-4.065 +G01 X+35.065 Y-4.32 +G01 X+35.521 Y-4.329 +G01 X+35.67 Y-4.48 +G01 Y-4.886 +G01 X+36.816 Y-8.333 +G01 X+37.625 Y-11.543 +G01 X+38.192 Y-14.877 +G01 X+38.473 Y-18.086 +G01 X+38.499 Y-21.181 +G01 X+38.257 Y-24.507 +G01 X+37.734 Y-27.84 +G01 X+36.963 Y-31.049 +G01 X+35.885 Y-34.383 +G01 X+35.629 Y-35.064 +G01 X+35.619 Y-35.432 +G01 X+35.575 Y-35.538 +G01 X+35.432 Y-35.619 +G01 X+35.115 Y-35.618 +G01 X+31.914 Y-36.701 +G01 X+28.704 Y-37.536 +G01 X+25.377 Y-38.127 +G01 X+22.16 Y-38.432 +G01 X+18.951 Y-38.474 +G01 X+15.741 Y-38.255 +G01 X+12.42 Y-37.75 +G01 X+9.074 Y-36.957 +G01 X+5.864 Y-35.926 +G01 X+4.935 Y-35.577 +G01 X+4.583 Y-35.568 +G01 X+4.433 Y-35.417 +G01 Y-35.115 +G01 X+3.342 Y-31.914 +G01 X+2.5 Y-28.704 +G01 X+1.904 Y-25.377 +G01 X+1.596 Y-22.16 +G01 X+1.554 Y-18.951 +G01 X+1.775 Y-15.741 +G01 X+2.284 Y-12.42 +G01 X+3.083 Y-9.074 +G01 X+4.123 Y-5.864 +G01 X+4.475 Y-4.932 +G01 X+4.499 Y-4.626 +G01 X+4.649 Y-4.484 +G01 X+4.885 Y-4.485 +G01 X+8.086 Y-3.384 +G01 X+11.296 Y-2.535 +G01 X+14.623 Y-1.935 +G01 X+17.84 Y-1.625 +G01 X+21.049 Y-1.582 +G01 X+24.259 Y-1.805 +G01 X+27.346 Y-2.271 +G01 X+30.556 Y-3.02 +G01 X+33.889 Y-4.081 +G01 X+35.064 Y-4.526 +G01 X+35.308 Y-4.535 +G01 X+35.414 Y-4.579 +G01 X+35.464 Y-4.692 +G01 Y-4.885 +G01 X+36.573 Y-8.086 +G01 X+37.429 Y-11.296 +G01 X+38.035 Y-14.63 +G01 X+38.342 Y-17.761 +G01 X+38.392 Y-20.955 +G01 X+38.173 Y-24.187 +G01 X+37.713 Y-27.249 +G01 X+37.008 Y-30.309 +G01 X+36.048 Y-33.395 +G01 X+35.423 Y-35.065 +G01 X+35.413 Y-35.263 +G01 X+35.263 Y-35.413 +G01 X+35.116 +G01 X+31.914 Y-36.531 +G01 X+28.704 Y-37.393 +G01 X+25.617 Y-37.969 +G01 X+22.531 Y-38.296 +G01 X+19.473 Y-38.373 +G01 X+16.358 Y-38.2 +G01 X+13.194 Y-37.762 +G01 X+9.938 Y-37.036 +G01 X+6.605 Y-36.002 +G01 X+4.936 Y-35.371 +G01 X+4.815 Y-35.362 +G01 X+4.709 Y-35.318 +G01 X+4.639 Y-35.185 +G01 X+4.63 Y-35.065 +G01 X+3.512 Y-31.914 +G01 X+2.643 Y-28.704 +G01 X+2.062 Y-25.617 +G01 X+1.733 Y-22.531 +G01 X+1.655 Y-19.473 +G01 X+1.83 Y-16.358 +G01 X+2.271 Y-13.194 +G01 X+3.002 Y-9.938 +G01 X+4.045 Y-6.605 +G01 X+4.68 Y-4.936 +G01 X+4.84 Y-4.69 +G01 X+8.086 Y-3.555 +G01 X+11.296 Y-2.679 +G01 X+14.383 Y-2.094 +G01 X+17.469 Y-1.761 +G01 X+20.527 Y-1.683 +G01 X+23.642 Y-1.859 +G01 X+26.806 Y-2.304 +G01 X+29.815 Y-2.976 +G01 X+32.901 Y-3.917 +G01 X+35.069 Y-4.734 +G01 X+35.259 Y-4.893 +G01 X+36.404 Y-8.086 +G01 X+37.261 Y-11.186 +G01 X+37.864 Y-14.299 +G01 X+38.212 Y-17.469 +G01 X+38.289 Y-20.679 +G01 X+38.115 Y-23.642 +G01 X+37.682 Y-26.728 +G01 X+37.016 Y-29.725 +G01 X+36.045 Y-32.901 +G01 X+35.228 Y-35.06 +G01 X+35.114 Y-35.193 +G01 X+31.914 Y-36.369 +G01 X+28.704 Y-37.258 +G01 X+25.617 Y-37.852 +G01 X+22.531 Y-38.189 +G01 X+19.473 Y-38.269 +G01 X+16.358 Y-38.091 +G01 X+13.194 Y-37.641 +G01 X+10.185 Y-36.961 +G01 X+7.099 Y-36.008 +G01 X+4.94 Y-35.186 +G01 X+4.849 Y-35.113 +G01 X+3.666 Y-31.914 +G01 X+2.771 Y-28.704 +G01 X+2.174 Y-25.617 +G01 X+1.835 Y-22.531 +G01 X+1.754 Y-19.473 +G01 X+1.933 Y-16.358 +G01 X+2.386 Y-13.194 +G01 X+3.07 Y-10.185 +G01 X+4.029 Y-7.099 +G01 X+4.885 Y-4.93 +G01 X+4.973 Y-4.845 +G01 X+8.086 Y-3.701 +G01 X+11.296 Y-2.801 +G01 X+14.383 Y-2.2 +G01 X+17.469 Y-1.858 +G01 X+20.527 Y-1.777 +G01 X+23.642 Y-1.958 +G01 X+26.806 Y-2.413 +G01 X+29.815 Y-3.101 +G01 X+32.901 Y-4.066 +G01 X+35.028 Y-4.886 +G01 X+35.114 Y-4.972 +G01 X+35.928 Y-7.102 +G01 X+36.886 Y-10.19 +G01 X+37.569 Y-13.198 +G01 X+38.019 Y-16.361 +G01 X+38.194 Y-19.473 +G01 X+38.107 Y-22.528 +G01 X+37.757 Y-25.609 +G01 X+37.144 Y-28.688 +G01 X+36.229 Y-31.885 +G01 X+35.067 Y-34.98 +G01 X+34.98 Y-35.068 +G01 X+32.616 Y-35.969 +G01 X+29.417 Y-36.942 +G01 X+26.348 Y-37.609 +G01 X+23.262 Y-38.018 +G01 X+20.326 Y-38.161 +G01 X+17.231 Y-38.052 +G01 X+14.32 Y-37.705 +G01 X+11.224 Y-37.076 +G01 X+8.147 Y-36.185 +G01 X+5.066 Y-35.021 +G01 X+4.979 Y-34.934 +G01 X+4.075 Y-32.581 +G01 X+3.1 Y-29.394 +G01 X+2.429 Y-26.334 +G01 X+2.019 Y-23.256 +G01 X+1.875 Y-20.325 +G01 X+1.985 Y-17.237 +G01 X+2.333 Y-14.332 +G01 X+2.965 Y-11.245 +G01 X+3.859 Y-8.179 +G01 X+5.025 Y-5.112 +G01 X+5.112 Y-5.025 +G01 X+7.454 Y-4.12 +G01 X+10.629 Y-3.141 +G01 X+13.68 Y-2.468 +G01 X+16.751 Y-2.055 +G01 X+19.676 Y-1.911 +G01 X+22.758 Y-2.021 +G01 X+25.656 Y-2.371 +G01 X+28.734 Y-3.005 +G01 X+31.789 Y-3.903 +G01 X+34.842 Y-5.072 +G01 X+34.929 Y-5.158 +G01 X+35.838 Y-7.499 +G01 X+36.784 Y-10.531 +G01 X+37.472 Y-13.58 +G01 X+37.895 Y-16.636 +G01 X+38.051 Y-19.572 +G01 X+37.959 Y-22.507 +G01 X+37.601 Y-25.56 +G01 X+36.977 Y-28.603 +G01 X+36.048 Y-31.752 +G01 X+34.875 Y-34.79 +G01 X+34.79 Y-34.875 +G01 X+32.47 Y-35.784 +G01 X+29.321 Y-36.769 +G01 X+26.29 Y-37.448 +G01 X+23.235 Y-37.864 +G01 X+20.323 Y-38.01 +G01 X+17.255 Y-37.898 +G01 X+14.372 Y-37.544 +G01 X+11.313 Y-36.902 +G01 X+8.284 Y-35.998 +G01 X+5.263 Y-34.822 +G01 X+5.178 Y-34.737 +G01 X+4.18 Y-32.189 +G01 X+3.214 Y-29.053 +G01 X+2.557 Y-26.051 +G01 X+2.155 Y-22.984 +G01 X+2.03 Y-20.099 +G01 X+2.143 Y-17.261 +G01 X+2.5 Y-14.386 +G01 X+3.144 Y-11.337 +G01 X+4.052 Y-8.321 +G01 X+5.231 Y-5.315 +G01 X+5.315 Y-5.231 +G01 X+7.85 Y-4.231 +G01 X+10.973 Y-3.261 +G01 X+13.964 Y-2.601 +G01 X+17.017 Y-2.198 +G01 X+19.901 Y-2.07 +G01 X+22.733 Y-2.185 +G01 X+25.6 Y-2.543 +G01 X+28.639 Y-3.191 +G01 X+31.642 Y-4.102 +G01 X+34.632 Y-5.284 +G01 X+34.716 Y-5.368 +G01 X+35.635 Y-7.659 +G01 X+36.594 Y-10.638 +G01 X+37.295 Y-13.645 +G01 X+37.727 Y-16.66 +G01 X+37.887 Y-19.576 +G01 X+37.794 Y-22.478 +G01 X+37.428 Y-25.498 +G01 X+36.791 Y-28.508 +G01 X+35.848 Y-31.606 +G01 X+34.663 Y-34.58 +G01 X+34.58 Y-34.663 +G01 X+32.072 Y-35.668 +G01 X+28.977 Y-36.645 +G01 X+26.012 Y-37.31 +G01 X+22.969 Y-37.719 +G01 X+20.098 Y-37.848 +G01 X+17.28 Y-37.732 +G01 X+14.428 Y-37.37 +G01 X+11.409 Y-36.716 +G01 X+8.431 Y-35.797 +G01 X+5.473 Y-34.61 +G01 X+5.39 Y-34.527 +G01 X+4.382 Y-32.033 +G01 X+3.402 Y-28.951 +G01 X+2.734 Y-25.997 +G01 X+2.323 Y-22.962 +G01 X+2.193 Y-20.098 +G01 X+2.309 Y-17.286 +G01 X+2.673 Y-14.448 +G01 X+3.331 Y-11.433 +G01 X+4.253 Y-8.468 +G01 X+5.443 Y-5.525 +G01 X+5.525 Y-5.443 +G01 X+8.006 Y-4.433 +G01 X+11.074 Y-3.449 +G01 X+14.019 Y-2.778 +G01 X+17.044 Y-2.364 +G01 X+19.902 Y-2.234 +G01 X+22.707 Y-2.351 +G01 X+25.538 Y-2.716 +G01 X+28.543 Y-3.378 +G01 X+31.496 Y-4.303 +G01 X+34.422 Y-5.496 +G01 X+34.504 Y-5.578 +G01 X+35.432 Y-7.82 +G01 X+36.404 Y-10.745 +G01 X+37.117 Y-13.704 +G01 X+37.56 Y-16.692 +G01 X+37.724 Y-19.573 +G01 X+37.628 Y-22.454 +G01 X+37.255 Y-25.443 +G01 X+36.606 Y-28.407 +G01 X+35.647 Y-31.459 +G01 X+34.451 Y-34.37 +G01 X+34.37 Y-34.451 +G01 X+31.916 Y-35.466 +G01 X+28.881 Y-36.455 +G01 X+25.951 Y-37.135 +G01 X+22.942 Y-37.553 +G01 X+20.104 Y-37.684 +G01 X+17.312 Y-37.567 +G01 X+14.49 Y-37.197 +G01 X+11.511 Y-36.531 +G01 X+8.578 Y-35.597 +G01 X+5.683 Y-34.398 +G01 X+5.602 Y-34.317 +G01 X+4.585 Y-31.877 +G01 X+3.592 Y-28.856 +G01 X+2.909 Y-25.936 +G01 X+2.489 Y-22.935 +G01 X+2.356 Y-20.104 +G01 X+2.475 Y-17.319 +G01 X+2.847 Y-14.504 +G01 X+3.516 Y-11.535 +G01 X+4.453 Y-8.615 +G01 X+5.655 Y-5.735 +G01 X+5.735 Y-5.655 +G01 X+8.162 Y-4.635 +G01 X+11.169 Y-3.639 +G01 X+14.079 Y-2.953 +G01 X+17.072 Y-2.531 +G01 X+19.896 Y-2.397 +G01 X+22.675 Y-2.516 +G01 X+25.482 Y-2.89 +G01 X+28.441 Y-3.563 +G01 X+31.349 Y-4.503 +G01 X+34.212 Y-5.708 +G01 X+34.292 Y-5.788 +G01 X+35.4 Y-8.43 +G01 X+36.355 Y-11.343 +G01 X+37.031 Y-14.239 +G01 X+37.428 Y-17.079 +G01 X+37.562 Y-19.815 +G01 X+37.442 Y-22.672 +G01 X+37.038 Y-25.624 +G01 X+36.355 Y-28.545 +G01 X+35.447 Y-31.312 +G01 X+34.239 Y-34.159 +G01 X+34.159 Y-34.239 +G01 X+31.54 Y-35.347 +G01 X+28.773 Y-36.269 +G01 X+25.89 Y-36.959 +G01 X+22.914 Y-37.386 +G01 X+20.103 Y-37.521 +G01 X+17.338 Y-37.401 +G01 X+14.546 Y-37.023 +G01 X+11.607 Y-36.344 +G01 X+8.725 Y-35.397 +G01 X+5.893 Y-34.186 +G01 X+5.814 Y-34.107 +G01 X+4.703 Y-31.502 +G01 X+3.779 Y-28.748 +G01 X+3.085 Y-25.875 +G01 X+2.655 Y-22.907 +G01 X+2.52 Y-20.103 +G01 X+2.641 Y-17.344 +G01 X+3.021 Y-14.56 +G01 X+3.703 Y-11.631 +G01 X+4.654 Y-8.761 +G01 X+5.867 Y-5.946 +G01 X+5.946 Y-5.867 +G01 X+8.536 Y-4.754 +G01 X+11.271 Y-3.828 +G01 X+14.14 Y-3.129 +G01 X+17.1 Y-2.697 +G01 X+19.897 Y-2.56 +G01 X+22.649 Y-2.682 +G01 X+25.426 Y-3.064 +G01 X+28.345 Y-3.749 +G01 X+31.202 Y-4.704 +G01 X+34.005 Y-5.921 +G01 X+34.081 Y-5.994 +G01 X+34.147 Y-6.134 +G01 X+35.37 Y-9.031 +G01 X+36.257 Y-11.755 +G01 X+36.921 Y-14.648 +G01 X+37.283 Y-17.342 +G01 X+37.399 Y-20.089 +G01 X+37.254 Y-22.878 +G01 X+36.863 Y-25.566 +G01 X+36.167 Y-28.447 +G01 X+35.246 Y-31.165 +G01 X+34.027 Y-33.949 +G01 X+33.949 Y-34.027 +G01 X+31.157 Y-35.236 +G01 X+28.45 Y-36.145 +G01 X+25.571 Y-36.834 +G01 X+22.886 Y-37.22 +G01 X+20.103 Y-37.358 +G01 X+17.363 Y-37.235 +G01 X+14.602 Y-36.849 +G01 X+11.703 Y-36.157 +G01 X+8.878 Y-35.198 +G01 X+6.103 Y-33.974 +G01 X+6.026 Y-33.897 +G01 X+4.815 Y-31.121 +G01 X+3.902 Y-28.426 +G01 X+3.21 Y-25.556 +G01 X+2.822 Y-22.879 +G01 X+2.683 Y-20.103 +G01 X+2.807 Y-17.37 +G01 X+3.195 Y-14.616 +G01 X+3.889 Y-11.727 +G01 X+4.852 Y-8.914 +G01 X+6.079 Y-6.156 +G01 X+6.156 Y-6.079 +G01 X+8.916 Y-4.865 +G01 X+11.599 Y-3.949 +G01 X+14.458 Y-3.254 +G01 X+17.128 Y-2.864 +G01 X+19.898 Y-2.724 +G01 X+22.624 Y-2.848 +G01 X+25.37 Y-3.238 +G01 X+28.248 Y-3.936 +G01 X+31.049 Y-4.902 +G01 X+33.795 Y-6.134 +G01 X+33.868 Y-6.204 +G01 X+33.936 Y-6.341 +G01 X+35.171 Y-9.173 +G01 X+36.07 Y-11.849 +G01 X+36.747 Y-14.703 +G01 X+37.117 Y-17.367 +G01 X+37.235 Y-20.088 +G01 X+37.088 Y-22.85 +G01 X+36.689 Y-25.508 +G01 X+35.98 Y-28.349 +G01 X+35.048 Y-31.012 +G01 X+33.813 Y-33.742 +G01 X+33.743 Y-33.815 +G01 X+33.393 Y-33.987 +G01 X+30.722 Y-35.147 +G01 X+27.919 Y-36.083 +G01 X+25.284 Y-36.704 +G01 X+22.63 Y-37.075 +G01 X+19.833 Y-37.194 +G01 X+17.088 Y-37.039 +G01 X+14.392 Y-36.622 +G01 X+11.799 Y-35.971 +G01 X+9.025 Y-34.998 +G01 X+6.31 Y-33.76 +G01 X+6.238 Y-33.691 +G01 X+6.066 Y-33.343 +G01 X+4.903 Y-30.687 +G01 X+3.963 Y-27.897 +G01 X+3.34 Y-25.27 +G01 X+2.967 Y-22.623 +G01 X+2.847 Y-19.833 +G01 X+3.003 Y-17.096 +G01 X+3.422 Y-14.407 +G01 X+4.076 Y-11.823 +G01 X+5.052 Y-9.061 +G01 X+6.293 Y-6.363 +G01 X+6.707 Y-6.118 +G01 X+9.348 Y-4.953 +G01 X+12.126 Y-4.01 +G01 X+14.744 Y-3.383 +G01 X+17.383 Y-3.008 +G01 X+20.166 Y-2.887 +G01 X+22.897 Y-3.045 +G01 X+25.579 Y-3.465 +G01 X+28.153 Y-4.122 +G01 X+30.902 Y-5.102 +G01 X+33.585 Y-6.346 +G01 X+33.829 Y-6.758 +G01 X+35.054 Y-9.526 +G01 X+35.949 Y-12.166 +G01 X+36.573 Y-14.757 +G01 X+36.951 Y-17.393 +G01 X+37.072 Y-20.087 +G01 X+36.922 Y-22.822 +G01 X+36.514 Y-25.45 +G01 X+35.793 Y-28.251 +G01 X+34.848 Y-30.865 +G01 X+33.601 Y-33.533 +G01 X+33.192 Y-33.776 +G01 X+30.582 Y-34.948 +G01 X+27.828 Y-35.898 +G01 X+25.229 Y-36.53 +G01 X+22.604 Y-36.909 +G01 X+19.835 Y-37.031 +G01 X+17.117 Y-36.872 +G01 X+14.451 Y-36.447 +G01 X+11.895 Y-35.784 +G01 X+9.172 Y-34.798 +G01 X+6.52 Y-33.548 +G01 X+6.172 Y-32.934 +G01 X+5.003 Y-30.298 +G01 X+4.079 Y-27.567 +G01 X+3.472 Y-24.995 +G01 X+3.111 Y-22.365 +G01 X+3.01 Y-19.835 +G01 X+3.169 Y-17.124 +G01 X+3.597 Y-14.466 +G01 X+4.262 Y-11.919 +G01 X+5.252 Y-9.208 +G01 X+6.505 Y-6.573 +G01 X+7.115 Y-6.225 +G01 X+9.736 Y-5.053 +G01 X+12.455 Y-4.125 +G01 X+15.018 Y-3.515 +G01 X+17.64 Y-3.152 +G01 X+20.165 Y-3.051 +G01 X+22.869 Y-3.211 +G01 X+25.519 Y-3.64 +G01 X+28.057 Y-4.309 +G01 X+30.755 Y-5.303 +G01 X+33.375 Y-6.558 +G01 X+33.825 Y-7.37 +G01 X+35.023 Y-10.09 +G01 X+35.892 Y-12.697 +G01 X+36.485 Y-15.262 +G01 X+36.835 Y-17.989 +G01 X+36.901 Y-20.623 +G01 X+36.716 Y-23.135 +G01 X+36.286 Y-25.642 +G01 X+35.606 Y-28.153 +G01 X+34.647 Y-30.718 +G01 X+33.389 Y-33.323 +G01 X+32.787 Y-33.67 +G01 X+30.196 Y-34.848 +G01 X+27.502 Y-35.783 +G01 X+24.956 Y-36.398 +G01 X+22.235 Y-36.775 +G01 X+19.519 Y-36.863 +G01 X+16.873 Y-36.674 +G01 X+14.288 Y-36.223 +G01 X+11.793 Y-35.533 +G01 X+9.318 Y-34.597 +G01 X+6.73 Y-33.336 +G01 X+6.279 Y-32.535 +G01 X+5.116 Y-29.951 +G01 X+4.231 Y-27.371 +G01 X+3.601 Y-24.713 +G01 X+3.266 Y-22.229 +G01 X+3.178 Y-19.521 +G01 X+3.368 Y-16.881 +G01 X+3.821 Y-14.303 +G01 X+4.513 Y-11.817 +G01 X+5.453 Y-9.355 +G01 X+6.717 Y-6.783 +G01 X+7.513 Y-6.332 +G01 X+10.082 Y-5.165 +G01 X+12.65 Y-4.277 +G01 X+15.299 Y-3.644 +G01 X+17.777 Y-3.308 +G01 X+20.478 Y-3.219 +G01 X+23.111 Y-3.41 +G01 X+25.681 Y-3.865 +G01 X+28.158 Y-4.56 +G01 X+30.608 Y-5.503 +G01 X+33.165 Y-6.77 +G01 X+33.719 Y-7.761 +G01 X+34.827 Y-10.219 +G01 X+35.709 Y-12.78 +G01 X+36.313 Y-15.311 +G01 X+36.67 Y-18.008 +G01 X+36.737 Y-20.617 +G01 X+36.548 Y-23.104 +G01 X+36.11 Y-25.581 +G01 X+35.419 Y-28.055 +G01 X+34.447 Y-30.572 +G01 X+33.177 Y-33.112 +G01 X+32.192 Y-33.667 +G01 X+29.644 Y-34.82 +G01 X+27.09 Y-35.695 +G01 X+24.565 Y-36.29 +G01 X+21.987 Y-36.629 +G01 X+19.524 Y-36.7 +G01 X+16.905 Y-36.507 +G01 X+14.35 Y-36.047 +G01 X+11.892 Y-35.346 +G01 X+9.465 Y-34.397 +G01 X+6.94 Y-33.124 +G01 X+6.385 Y-32.146 +G01 X+5.229 Y-29.613 +G01 X+4.351 Y-27.07 +G01 X+3.753 Y-24.553 +G01 X+3.413 Y-21.982 +G01 X+3.341 Y-19.525 +G01 X+3.535 Y-16.912 +G01 X+3.997 Y-14.365 +G01 X+4.701 Y-11.917 +G01 X+5.653 Y-9.502 +G01 X+6.93 Y-6.992 +G01 X+7.901 Y-6.437 +G01 X+10.419 Y-5.278 +G01 X+12.951 Y-4.397 +G01 X+15.459 Y-3.796 +G01 X+18.023 Y-3.454 +G01 X+20.474 Y-3.382 +G01 X+23.08 Y-3.577 +G01 X+25.619 Y-4.041 +G01 X+28.058 Y-4.748 +G01 X+30.461 Y-5.703 +G01 X+32.955 Y-6.983 +G01 X+33.625 Y-8.169 +G01 X+34.756 Y-10.657 +G01 X+35.623 Y-13.196 +G01 X+36.19 Y-15.625 +G01 X+36.505 Y-18.028 +G01 X+36.574 Y-20.61 +G01 X+36.381 Y-23.072 +G01 X+35.935 Y-25.52 +G01 X+35.232 Y-27.957 +G01 X+34.247 Y-30.425 +G01 X+32.964 Y-32.902 +G01 X+31.812 Y-33.56 +G01 X+29.312 Y-34.707 +G01 X+26.795 Y-35.574 +G01 X+24.298 Y-36.159 +G01 X+21.753 Y-36.48 +G01 X+19.323 Y-36.531 +G01 X+16.936 Y-36.339 +G01 X+14.412 Y-35.871 +G01 X+11.991 Y-35.158 +G01 X+9.612 Y-34.197 +G01 X+7.15 Y-32.911 +G01 X+6.492 Y-31.767 +G01 X+5.341 Y-29.282 +G01 X+4.471 Y-26.775 +G01 X+3.884 Y-24.286 +G01 X+3.561 Y-21.749 +G01 X+3.51 Y-19.325 +G01 X+3.702 Y-16.944 +G01 X+4.173 Y-14.428 +G01 X+4.889 Y-12.016 +G01 X+5.853 Y-9.649 +G01 X+7.142 Y-7.202 +G01 X+8.279 Y-6.544 +G01 X+10.749 Y-5.39 +G01 X+13.245 Y-4.516 +G01 X+15.725 Y-3.926 +G01 X+18.256 Y-3.603 +G01 X+20.673 Y-3.551 +G01 X+23.048 Y-3.744 +G01 X+25.557 Y-4.217 +G01 X+27.959 Y-4.935 +G01 X+30.314 Y-5.903 +G01 X+32.745 Y-7.195 +G01 X+33.418 Y-8.349 +G01 X+34.562 Y-10.78 +G01 X+35.441 Y-13.275 +G01 X+36.018 Y-15.671 +G01 X+36.34 Y-18.047 +G01 X+36.411 Y-20.604 +G01 X+36.214 Y-23.04 +G01 X+35.759 Y-25.459 +G01 X+35.044 Y-27.859 +G01 X+34.046 Y-30.278 +G01 X+32.752 Y-32.693 +G01 X+31.631 Y-33.353 +G01 X+29.189 Y-34.513 +G01 X+26.716 Y-35.393 +G01 X+24.252 Y-35.988 +G01 X+21.736 Y-36.315 +G01 X+19.33 Y-36.368 +G01 X+16.968 Y-36.172 +G01 X+14.474 Y-35.695 +G01 X+12.091 Y-34.971 +G01 X+9.759 Y-33.996 +G01 X+7.359 Y-32.699 +G01 X+6.699 Y-31.586 +G01 X+5.536 Y-29.159 +G01 X+4.653 Y-26.696 +G01 X+4.054 Y-24.241 +G01 X+3.726 Y-21.731 +G01 X+3.673 Y-19.332 +G01 X+3.87 Y-16.975 +G01 X+4.349 Y-14.49 +G01 X+5.076 Y-12.116 +G01 X+6.054 Y-9.796 +G01 X+7.355 Y-7.412 +G01 X+8.459 Y-6.751 +G01 X+10.872 Y-5.584 +G01 X+13.323 Y-4.698 +G01 X+15.77 Y-4.097 +G01 X+18.273 Y-3.767 +G01 X+20.666 Y-3.714 +G01 X+23.017 Y-3.911 +G01 X+25.495 Y-4.393 +G01 X+27.859 Y-5.123 +G01 X+30.167 Y-6.104 +G01 X+32.536 Y-7.408 +G01 X+33.21 Y-8.528 +G01 X+34.367 Y-10.903 +G01 X+35.26 Y-13.354 +G01 X+35.847 Y-15.717 +G01 X+36.175 Y-18.066 +G01 X+36.247 Y-20.598 +G01 X+36.047 Y-23.009 +G01 X+35.584 Y-25.397 +G01 X+34.857 Y-27.761 +G01 X+33.846 Y-30.131 +G01 X+32.539 Y-32.483 +G01 X+31.451 Y-33.146 +G01 X+29.067 Y-34.318 +G01 X+26.637 Y-35.211 +G01 X+24.207 Y-35.817 +G01 X+21.719 Y-36.151 +G01 X+19.337 Y-36.204 +G01 X+16.999 Y-36.005 +G01 X+14.537 Y-35.519 +G01 X+12.19 Y-34.783 +G01 X+9.906 Y-33.796 +G01 X+7.569 Y-32.486 +G01 X+6.906 Y-31.406 +G01 X+5.73 Y-29.036 +G01 X+4.834 Y-26.618 +G01 X+4.225 Y-24.196 +G01 X+3.891 Y-21.714 +G01 X+3.837 Y-19.339 +G01 X+4.037 Y-17.007 +G01 X+4.525 Y-14.552 +G01 X+5.264 Y-12.215 +G01 X+6.254 Y-9.943 +G01 X+7.567 Y-7.621 +G01 X+8.64 Y-6.958 +G01 X+10.995 Y-5.779 +G01 X+13.402 Y-4.879 +G01 X+15.815 Y-4.268 +G01 X+18.29 Y-3.932 +G01 X+20.659 Y-3.877 +G01 X+22.985 Y-4.079 +G01 X+25.432 Y-4.569 +G01 X+27.76 Y-5.31 +G01 X+30.021 Y-6.304 +G01 X+32.326 Y-7.62 +G01 X+33.003 Y-8.708 +G01 X+34.172 Y-11.026 +G01 X+35.079 Y-13.432 +G01 X+35.689 Y-15.827 +G01 X+36.028 Y-18.303 +G01 X+36.084 Y-20.592 +G01 X+35.88 Y-22.977 +G01 X+35.408 Y-25.336 +G01 X+34.67 Y-27.663 +G01 X+33.646 Y-29.984 +G01 X+32.327 Y-32.273 +G01 X+30.908 Y-33.143 +G01 X+28.555 Y-34.292 +G01 X+26.273 Y-35.118 +G01 X+23.95 Y-35.687 +G01 X+21.701 Y-35.986 +G01 X+19.344 Y-36.041 +G01 X+17.031 Y-35.838 +G01 X+14.599 Y-35.343 +G01 X+12.29 Y-34.596 +G01 X+10.053 Y-33.596 +G01 X+7.78 Y-32.274 +G01 X+6.613 Y-30.324 +G01 X+5.555 Y-28.038 +G01 X+4.799 Y-25.822 +G01 X+4.262 Y-23.407 +G01 X+4.013 Y-21.046 +G01 X+4.025 Y-18.794 +G01 X+4.281 Y-16.549 +G01 X+4.78 Y-14.325 +G01 X+5.539 Y-12.091 +G01 X+6.551 Y-9.905 +G01 X+7.779 Y-7.832 +G01 X+9.715 Y-6.664 +G01 X+11.988 Y-5.602 +G01 X+14.195 Y-4.844 +G01 X+16.602 Y-4.304 +G01 X+18.957 Y-4.054 +G01 X+21.203 Y-4.066 +G01 X+23.441 Y-4.323 +G01 X+25.658 Y-4.824 +G01 X+27.883 Y-5.586 +G01 X+30.057 Y-6.601 +G01 X+32.115 Y-7.832 +G01 X+33.382 Y-9.936 +G01 X+34.39 Y-12.112 +G01 X+35.147 Y-14.335 +G01 X+35.654 Y-16.611 +G01 X+35.9 Y-18.859 +G01 X+35.897 Y-21.124 +G01 X+35.646 Y-23.37 +G01 X+35.155 Y-25.56 +G01 X+34.406 Y-27.76 +G01 X+33.345 Y-30.025 +G01 X+32.114 Y-32.063 +G01 X+30.207 Y-33.235 +G01 X+27.96 Y-34.303 +G01 X+25.771 Y-35.067 +G01 X+23.38 Y-35.612 +G01 X+21.038 Y-35.864 +G01 X+18.804 Y-35.852 +G01 X+16.577 Y-35.593 +G01 X+14.375 Y-35.087 +G01 X+12.169 Y-34.319 +G01 X+10.019 Y-33.298 +G01 X+7.989 Y-32.061 +G01 X+6.722 Y-29.994 +G01 X+5.665 Y-27.74 +G01 X+4.919 Y-25.55 +G01 X+4.43 Y-23.371 +G01 X+4.177 Y-21.036 +G01 X+4.189 Y-18.807 +G01 X+4.449 Y-16.587 +G01 X+4.957 Y-14.392 +G01 X+5.728 Y-12.195 +G01 X+6.752 Y-10.056 +G01 X+7.992 Y-8.042 +G01 X+10.044 Y-6.772 +G01 X+12.285 Y-5.712 +G01 X+14.466 Y-4.963 +G01 X+16.638 Y-4.473 +G01 X+18.967 Y-4.218 +G01 X+21.19 Y-4.23 +G01 X+23.404 Y-4.492 +G01 X+25.592 Y-5.001 +G01 X+27.78 Y-5.775 +G01 X+29.906 Y-6.802 +G01 X+31.906 Y-8.045 +G01 X+33.181 Y-10.088 +G01 X+34.201 Y-12.215 +G01 X+34.993 Y-14.482 +G01 X+35.485 Y-16.647 +G01 X+35.736 Y-18.87 +G01 X+35.733 Y-21.113 +G01 X+35.477 Y-23.334 +G01 X+34.978 Y-25.495 +G01 X+34.218 Y-27.658 +G01 X+33.144 Y-29.873 +G01 X+31.902 Y-31.854 +G01 X+29.88 Y-33.127 +G01 X+27.664 Y-34.193 +G01 X+25.502 Y-34.949 +G01 X+23.344 Y-35.443 +G01 X+21.028 Y-35.7 +G01 X+18.816 Y-35.688 +G01 X+16.571 Y-35.416 +G01 X+14.441 Y-34.91 +G01 X+12.272 Y-34.13 +G01 X+10.17 Y-33.097 +G01 X+8.199 Y-31.848 +G01 X+6.924 Y-29.843 +G01 X+5.854 Y-27.639 +G01 X+5.096 Y-25.485 +G01 X+4.599 Y-23.335 +G01 X+4.341 Y-21.025 +G01 X+4.353 Y-18.82 +G01 X+4.626 Y-16.581 +G01 X+5.134 Y-14.458 +G01 X+5.917 Y-12.298 +G01 X+6.953 Y-10.208 +G01 X+8.205 Y-8.251 +G01 X+10.195 Y-6.974 +G01 X+12.387 Y-5.901 +G01 X+14.531 Y-5.14 +G01 X+16.674 Y-4.641 +G01 X+18.977 Y-4.382 +G01 X+21.177 Y-4.394 +G01 X+23.41 Y-4.668 +G01 X+25.526 Y-5.178 +G01 X+27.676 Y-5.964 +G01 X+29.754 Y-7.004 +G01 X+31.697 Y-8.258 +G01 X+32.979 Y-10.239 +G01 X+34.012 Y-12.318 +G01 X+34.816 Y-14.547 +G01 X+35.317 Y-16.684 +G01 X+35.572 Y-18.882 +G01 X+35.57 Y-21.101 +G01 X+35.309 Y-23.297 +G01 X+34.741 Y-25.628 +G01 X+33.948 Y-27.743 +G01 X+32.943 Y-29.722 +G01 X+31.689 Y-31.644 +G01 X+29.729 Y-32.925 +G01 X+27.563 Y-34.005 +G01 X+25.437 Y-34.772 +G01 X+23.308 Y-35.275 +G01 X+21.017 Y-35.536 +G01 X+18.829 Y-35.524 +G01 X+16.609 Y-35.248 +G01 X+14.508 Y-34.733 +G01 X+12.376 Y-33.942 +G01 X+10.322 Y-32.896 +G01 X+8.408 Y-31.635 +G01 X+7.125 Y-29.691 +G01 X+6.042 Y-27.537 +G01 X+5.273 Y-25.421 +G01 X+4.767 Y-23.299 +G01 X+4.505 Y-21.015 +G01 X+4.517 Y-18.832 +G01 X+4.794 Y-16.619 +G01 X+5.311 Y-14.524 +G01 X+6.106 Y-12.402 +G01 X+7.155 Y-10.36 +G01 X+8.42 Y-8.457 +G01 X+8.569 Y-8.337 +G01 X+10.523 Y-7.073 +G01 X+12.488 Y-6.089 +G01 X+14.596 Y-5.317 +G01 X+16.71 Y-4.81 +G01 X+18.988 Y-4.546 +G01 X+21.165 Y-4.558 +G01 X+23.372 Y-4.837 +G01 X+25.459 Y-5.356 +G01 X+27.572 Y-6.153 +G01 X+29.603 Y-7.205 +G01 X+31.491 Y-8.474 +G01 X+31.61 Y-8.621 +G01 X+32.876 Y-10.56 +G01 X+33.914 Y-12.631 +G01 X+34.697 Y-14.808 +G01 X+35.184 Y-16.924 +G01 X+35.419 Y-19.102 +G01 X+35.384 Y-21.401 +G01 X+35.093 Y-23.507 +G01 X+34.563 Y-25.56 +G01 X+33.759 Y-27.638 +G01 X+32.742 Y-29.57 +G01 X+31.473 Y-31.438 +G01 X+31.328 Y-31.558 +G01 X+29.403 Y-32.826 +G01 X+27.461 Y-33.816 +G01 X+25.372 Y-34.595 +G01 X+23.272 Y-35.106 +G01 X+21.007 Y-35.373 +G01 X+18.842 Y-35.36 +G01 X+16.647 Y-35.079 +G01 X+14.574 Y-34.556 +G01 X+12.48 Y-33.753 +G01 X+10.473 Y-32.695 +G01 X+8.614 Y-31.42 +G01 X+8.495 Y-31.276 +G01 X+7.224 Y-29.367 +G01 X+6.231 Y-27.435 +G01 X+5.45 Y-25.356 +G01 X+4.936 Y-23.262 +G01 X+4.668 Y-21.004 +G01 X+4.681 Y-18.845 +G01 X+4.963 Y-16.656 +G01 X+5.488 Y-14.591 +G01 X+6.294 Y-12.506 +G01 X+7.356 Y-10.511 +G01 X+8.634 Y-8.666 +G01 X+8.776 Y-8.548 +G01 X+10.67 Y-7.274 +G01 X+12.59 Y-6.278 +G01 X+14.66 Y-5.494 +G01 X+16.747 Y-4.978 +G01 X+18.998 Y-4.709 +G01 X+21.152 Y-4.722 +G01 X+23.334 Y-5.005 +G01 X+25.393 Y-5.533 +G01 X+27.468 Y-6.341 +G01 X+29.451 Y-7.406 +G01 X+31.281 Y-8.687 +G01 X+31.512 Y-8.977 +G01 X+32.774 Y-10.873 +G01 X+33.8 Y-12.898 +G01 X+34.521 Y-14.87 +G01 X+35.016 Y-16.958 +G01 X+35.256 Y-19.111 +G01 X+35.219 Y-21.386 +G01 X+34.924 Y-23.467 +G01 X+34.385 Y-25.492 +G01 X+33.569 Y-27.532 +G01 X+32.54 Y-29.419 +G01 X+31.26 Y-31.229 +G01 X+30.973 Y-31.459 +G01 X+29.187 Y-32.667 +G01 X+27.179 Y-33.709 +G01 X+25.217 Y-34.446 +G01 X+23.034 Y-34.974 +G01 X+20.996 Y-35.209 +G01 X+18.855 Y-35.196 +G01 X+16.685 Y-34.91 +G01 X+14.641 Y-34.379 +G01 X+12.583 Y-33.564 +G01 X+10.625 Y-32.493 +G01 X+8.824 Y-31.207 +G01 X+8.481 Y-30.775 +G01 X+7.292 Y-29 +G01 X+6.258 Y-26.974 +G01 X+5.544 Y-25.024 +G01 X+5.068 Y-23.025 +G01 X+4.832 Y-20.994 +G01 X+4.845 Y-18.858 +G01 X+5.132 Y-16.694 +G01 X+5.666 Y-14.657 +G01 X+6.483 Y-12.609 +G01 X+7.557 Y-10.663 +G01 X+8.847 Y-8.876 +G01 X+9.274 Y-8.533 +G01 X+11.035 Y-7.342 +G01 X+13.05 Y-6.305 +G01 X+14.991 Y-5.588 +G01 X+16.984 Y-5.11 +G01 X+19.009 Y-4.873 +G01 X+21.139 Y-4.886 +G01 X+23.296 Y-5.174 +G01 X+25.326 Y-5.71 +G01 X+27.365 Y-6.53 +G01 X+29.299 Y-7.607 +G01 X+31.072 Y-8.9 +G01 X+31.301 Y-9.178 +G01 X+32.574 Y-11.015 +G01 X+33.613 Y-12.993 +G01 X+34.345 Y-14.932 +G01 X+34.848 Y-16.992 +G01 X+35.092 Y-19.12 +G01 X+35.055 Y-21.371 +G01 X+34.755 Y-23.428 +G01 X+34.208 Y-25.423 +G01 X+33.38 Y-27.427 +G01 X+32.339 Y-29.267 +G01 X+31.047 Y-31.019 +G01 X+30.627 Y-31.362 +G01 X+28.894 Y-32.558 +G01 X+26.903 Y-33.602 +G01 X+24.979 Y-34.324 +G01 X+23 Y-34.806 +G01 X+20.986 Y-35.045 +G01 X+18.867 Y-35.032 +G01 X+16.764 Y-34.75 +G01 X+14.782 Y-34.227 +G01 X+12.886 Y-33.471 +G01 X+11.094 Y-32.495 +G01 X+9.289 Y-31.206 +G01 X+8.698 Y-30.587 +G01 X+7.492 Y-28.859 +G01 X+6.445 Y-26.879 +G01 X+5.72 Y-24.963 +G01 X+5.236 Y-22.991 +G01 X+4.996 Y-20.983 +G01 X+5.009 Y-18.87 +G01 X+5.292 Y-16.773 +G01 X+5.818 Y-14.798 +G01 X+6.576 Y-12.911 +G01 X+7.555 Y-11.129 +G01 X+8.847 Y-9.339 +G01 X+9.463 Y-8.751 +G01 X+11.176 Y-7.541 +G01 X+13.144 Y-6.491 +G01 X+15.052 Y-5.764 +G01 X+17.017 Y-5.278 +G01 X+19.019 Y-5.037 +G01 X+21.126 Y-5.05 +G01 X+23.258 Y-5.343 +G01 X+25.26 Y-5.887 +G01 X+27.261 Y-6.719 +G01 X+29.148 Y-7.808 +G01 X+30.863 Y-9.114 +G01 X+31.091 Y-9.38 +G01 X+32.375 Y-11.157 +G01 X+33.351 Y-12.929 +G01 X+34.108 Y-14.806 +G01 X+34.643 Y-16.828 +G01 X+34.917 Y-18.927 +G01 X+34.914 Y-21.053 +G01 X+34.635 Y-23.151 +G01 X+34.094 Y-25.168 +G01 X+33.277 Y-27.149 +G01 X+32.287 Y-28.89 +G01 X+31.047 Y-30.561 +G01 X+30.439 Y-31.145 +G01 X+28.754 Y-32.359 +G01 X+26.809 Y-33.416 +G01 X+24.918 Y-34.148 +G01 X+22.966 Y-34.638 +G01 X+20.976 Y-34.881 +G01 X+18.88 Y-34.868 +G01 X+16.76 Y-34.573 +G01 X+14.847 Y-34.05 +G01 X+12.985 Y-33.283 +G01 X+11.236 Y-32.296 +G01 X+9.489 Y-30.994 +G01 X+8.907 Y-30.389 +G01 X+7.691 Y-28.719 +G01 X+6.631 Y-26.785 +G01 X+5.895 Y-24.903 +G01 X+5.404 Y-22.957 +G01 X+5.16 Y-20.973 +G01 X+5.173 Y-18.883 +G01 X+5.469 Y-16.77 +G01 X+5.994 Y-14.864 +G01 X+6.764 Y-13.01 +G01 X+7.754 Y-11.272 +G01 X+9.058 Y-9.54 +G01 X+9.797 Y-8.846 +G01 X+11.498 Y-7.626 +G01 X+13.399 Y-6.604 +G01 X+15.321 Y-5.874 +G01 X+17.247 Y-5.41 +G01 X+19.213 Y-5.191 +G01 X+21.344 Y-5.232 +G01 X+23.415 Y-5.554 +G01 X+25.362 Y-6.125 +G01 X+27.158 Y-6.908 +G01 X+28.996 Y-8.01 +G01 X+30.654 Y-9.328 +G01 X+30.88 Y-9.582 +G01 X+32.175 Y-11.299 +G01 X+33.163 Y-13.028 +G01 X+33.931 Y-14.871 +G01 X+34.474 Y-16.864 +G01 X+34.753 Y-18.939 +G01 X+34.75 Y-21.041 +G01 X+34.467 Y-23.114 +G01 X+33.947 Y-25.017 +G01 X+33.173 Y-26.878 +G01 X+32.181 Y-28.605 +G01 X+30.951 Y-30.228 +G01 X+30.108 Y-31.049 +G01 X+28.434 Y-32.276 +G01 X+26.714 Y-33.229 +G01 X+24.857 Y-33.973 +G01 X+22.932 Y-34.47 +G01 X+20.965 Y-34.718 +G01 X+18.893 Y-34.704 +G01 X+16.798 Y-34.404 +G01 X+14.913 Y-33.873 +G01 X+13.085 Y-33.096 +G01 X+11.379 Y-32.097 +G01 X+9.821 Y-30.899 +G01 X+9.004 Y-30.06 +G01 X+7.774 Y-28.4 +G01 X+6.817 Y-26.691 +G01 X+6.071 Y-24.842 +G01 X+5.572 Y-22.924 +G01 X+5.323 Y-20.963 +G01 X+5.337 Y-18.896 +G01 X+5.638 Y-16.808 +G01 X+6.171 Y-14.929 +G01 X+6.951 Y-13.11 +G01 X+7.953 Y-11.414 +G01 X+9.154 Y-9.87 +G01 X+10.122 Y-8.942 +G01 X+11.788 Y-7.724 +G01 X+13.49 Y-6.789 +G01 X+15.379 Y-6.048 +G01 X+17.279 Y-5.577 +G01 X+19.222 Y-5.354 +G01 X+21.329 Y-5.396 +G01 X+23.374 Y-5.723 +G01 X+25.292 Y-6.302 +G01 X+27.218 Y-7.185 +G01 X+28.845 Y-8.211 +G01 X+30.444 Y-9.541 +G01 X+30.785 Y-9.912 +G01 X+31.976 Y-11.442 +G01 X+32.975 Y-13.127 +G01 X+33.754 Y-14.936 +G01 X+34.306 Y-16.9 +G01 X+34.589 Y-18.95 +G01 X+34.593 Y-20.937 +G01 X+34.338 Y-22.886 +G01 X+33.829 Y-24.787 +G01 X+33.07 Y-26.612 +G01 X+32.1 Y-28.29 +G01 X+30.856 Y-29.904 +G01 X+29.785 Y-30.953 +G01 X+28.147 Y-32.177 +G01 X+26.464 Y-33.119 +G01 X+24.593 Y-33.864 +G01 X+22.651 Y-34.349 +G01 X+20.774 Y-34.564 +G01 X+18.679 Y-34.521 +G01 X+16.646 Y-34.192 +G01 X+14.742 Y-33.609 +G01 X+12.835 Y-32.72 +G01 X+11.23 Y-31.688 +G01 X+9.768 Y-30.456 +G01 X+8.438 Y-28.921 +G01 X+7.363 Y-27.276 +G01 X+6.483 Y-25.423 +G01 X+5.888 Y-23.556 +G01 X+5.536 Y-21.542 +G01 X+5.464 Y-19.589 +G01 X+5.667 Y-17.555 +G01 X+6.152 Y-15.568 +G01 X+6.858 Y-13.771 +G01 X+7.848 Y-12.003 +G01 X+9.006 Y-10.466 +G01 X+10.307 Y-9.151 +G01 X+11.919 Y-7.921 +G01 X+13.581 Y-6.974 +G01 X+15.436 Y-6.223 +G01 X+17.405 Y-5.727 +G01 X+18.013 Y-5.661 +G01 X+18.12 Y-5.642 +G02 X+28.808 Y-8.506 I+1.88 J-14.358 +G01 X+30.24 Y-9.76 +G01 Z-0.45 F10000 +G00 Z+4.55 +(#HSC OFF) +(#TRAFO OFF) +; - EB carre avec rayon +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G00 X-1.969 Y-40.331 Z-0.99 +G00 Z-5.99 +G01 X-1.95 Y-40 F10000 +G01 X-1.904 Y+0.391 F12000 +G01 X-1.609 Y+1.091 +G01 X-1.069 Y+1.624 +G01 X-0.359 Y+1.913 +G01 X-0.007 Y+1.949 +G01 X+40.391 Y+1.904 +G01 X+41.091 Y+1.609 +G01 X+41.624 Y+1.069 +G01 X+41.913 Y+0.359 +G01 X+41.949 Y+0.007 +G01 X+41.904 Y-40.391 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-0.544 Y-41.85 +G01 X-0.685 Y-41.817 +G01 X-1.135 Y-41.576 +G01 X-1.361 Y-41.386 +G01 X-1.727 Y-40.885 +G01 X-1.862 Y-40.55 +G01 X-1.94 Y-40.01 +G01 X-1.886 Y+0 +G01 X-1.88 Y+0.112 +G01 X-1.761 Y+0.663 +G01 X-1.538 Y+1.083 +G01 X-0.831 Y+1.683 +G01 X-0.56 Y+1.796 +G01 X+0.302 Y+1.881 +G01 X+40.082 Y+1.812 +G01 X+40.496 Y+1.743 +G01 X+40.799 Y+1.627 +G01 X+41.056 Y+1.473 +G01 X+41.273 Y+1.29 +G01 X+41.45 Y+1.085 +G01 X+41.722 Y+0.547 +G01 X+41.81 Y-0.556 +G01 X+41.788 Y-36.481 +G01 X+41.765 Y-40 +G01 X+41.691 Y-40.496 +G01 X+41.596 Y-40.749 +G01 X+41.429 Y-41.031 +G01 X+41.255 Y-41.236 +G01 X+40.99 Y-41.456 +G01 X+40.667 Y-41.628 +G01 X+39.701 Y-41.759 +G01 X+6.177 Y-41.749 +G01 X+2.616 Y-41.688 +G01 X+0 Y-41.684 +G01 X-0.59 Y-41.573 +G01 X-0.981 Y-41.365 +G01 X-1.176 Y-41.201 +G01 X-1.493 Y-40.768 +G01 X-1.61 Y-40.478 +G01 X-1.679 Y-40.01 +G01 X-1.73 Y-26.235 +G01 X-1.668 Y-3.025 +G01 X-1.643 Y+0 +G01 X-1.535 Y+0.576 +G01 X-1.342 Y+0.941 +G01 X-0.727 Y+1.465 +G01 X-0.491 Y+1.564 +G01 X+0.309 Y+1.64 +G01 X+11.79 Y+1.683 +G01 X+35.37 Y+1.618 +G01 X+39.568 Y+1.554 +G01 X+40.068 Y+1.551 +G01 X+40.422 Y+1.492 +G01 X+40.682 Y+1.393 +G01 X+40.902 Y+1.261 +G01 X+41.088 Y+1.104 +G01 X+41.239 Y+0.931 +G01 X+41.471 Y+0.472 +G01 X+41.549 Y-0.556 +G01 X+41.603 Y-4.63 +G01 X+41.626 Y-18.457 +G01 X+41.563 Y-36.728 +G01 X+41.522 Y-40 +G01 X+41.459 Y-40.426 +G01 X+41.377 Y-40.645 +G01 X+41.234 Y-40.888 +G01 X+41.084 Y-41.065 +G01 X+40.855 Y-41.255 +G01 X+40.58 Y-41.402 +G01 X+39.575 Y-41.518 +G01 X+35.741 Y-41.575 +G01 X+5.247 Y-41.524 +G01 X+2.616 Y-41.426 +G01 X+0 Y-41.422 +G01 X-0.495 Y-41.329 +G01 X-0.826 Y-41.154 +G01 X-0.991 Y-41.016 +G01 X-1.259 Y-40.651 +G01 X-1.359 Y-40.406 +G01 X-1.418 Y-40.01 +G01 X-1.454 Y-36.481 +G01 X-1.538 Y-30.958 +G01 X-1.466 Y-3.642 +G01 X-1.402 Y-0.802 +G01 X-1.401 Y+0 +G01 X-1.309 Y+0.488 +G01 X-1.146 Y+0.798 +G01 X-0.623 Y+1.247 +G01 X-0.423 Y+1.332 +G01 X+0.432 Y+1.398 +G01 X+3.272 Y+1.441 +G01 X+8.58 Y+1.489 +G01 X+34.63 Y+1.421 +G01 X+38.333 Y+1.294 +G01 X+40.054 Y+1.289 +G01 X+40.348 Y+1.241 +G01 X+40.565 Y+1.159 +G01 X+40.748 Y+1.049 +G01 X+40.903 Y+0.919 +G01 X+41.028 Y+0.776 +G01 X+41.22 Y+0.398 +G01 X+41.287 Y-0.679 +G01 X+41.333 Y-3.519 +G01 X+41.44 Y-8.21 +G01 X+41.373 Y-35.988 +G01 X+41.282 Y-38.704 +G01 X+41.28 Y-40 +G01 X+41.227 Y-40.356 +G01 X+41.159 Y-40.54 +G01 X+41.042 Y-40.739 +G01 X+40.725 Y-41.049 +G01 X+40.492 Y-41.176 +G01 X+39.568 Y-41.277 +G01 X+36.975 Y-41.318 +G01 X+33.025 Y-41.392 +G01 X+5.741 Y-41.326 +G01 X+2.616 Y-41.164 +G01 X+0 Y-41.16 +G01 X-0.4 Y-41.085 +G01 X-0.671 Y-40.942 +G01 X-0.802 Y-40.835 +G01 X-1.089 Y-40.383 +G01 X-1.156 Y-40.01 +G01 X-1.19 Y-36.852 +G01 X-1.341 Y-32.407 +G01 X-1.273 Y-4.136 +G01 X-1.161 Y-1.543 +G01 X-1.159 Y+0 +G01 X-1.084 Y+0.4 +G01 X-0.95 Y+0.656 +G01 X-0.518 Y+1.028 +G01 X-0.355 Y+1.1 +G01 X+0.556 Y+1.156 +G01 X+2.901 Y+1.198 +G01 X+6.552 Y+1.294 +G01 X+34.259 Y+1.222 +G01 X+38.086 Y+1.032 +G01 X+40.041 Y+1.028 +G01 X+40.268 Y+0.991 +G01 X+40.588 Y+0.84 +G01 X+40.718 Y+0.734 +G01 X+40.817 Y+0.621 +G01 X+40.969 Y+0.324 +G01 X+41.025 Y-0.926 +G01 X+41.065 Y-3.148 +G01 X+41.238 Y-7.099 +G01 X+41.168 Y-35.864 +G01 X+41.04 Y-38.333 +G01 X+41.038 Y-40 +G01 X+40.996 Y-40.286 +G01 X+40.942 Y-40.43 +G01 X+40.745 Y-40.717 +G01 X+40.587 Y-40.853 +G01 X+40.405 Y-40.951 +G01 X+39.568 Y-41.035 +G01 X+37.222 Y-41.074 +G01 X+34.012 Y-41.196 +G01 X+5.988 Y-41.127 +G01 X+2.616 Y-40.902 +G01 X+0 Y-40.898 +G01 X-0.299 Y-40.842 +G01 X-0.605 Y-40.653 +G01 X-0.842 Y-40.28 +G01 X-0.893 Y-38.333 +G01 X-0.939 Y-36.852 +G01 X-1.135 Y-33.025 +G01 X-1.072 Y-4.383 +G01 X-0.915 Y-1.667 +G01 X-0.912 Y+0 +G01 X-0.854 Y+0.31 +G01 X-0.751 Y+0.511 +G01 X-0.412 Y+0.806 +G01 X-0.285 Y+0.863 +G01 X+0.926 Y+0.909 +G01 X+2.778 Y+0.954 +G01 X+5.864 Y+1.093 +G01 X+33.823 Y+1.023 +G01 X+37.346 Y+0.766 +G01 X+40.173 Y+0.727 +G01 X+40.514 Y+0.548 +G01 X+40.598 Y+0.461 +G01 X+40.709 Y+0.247 +G01 X+40.806 Y-3.148 +G01 X+41.022 Y-6.728 +G01 X+40.968 Y-35.494 +G01 X+40.785 Y-38.21 +G01 X+40.782 Y-39.983 +G01 X+40.714 Y-40.301 +G01 X+40.452 Y-40.629 +G01 X+40.313 Y-40.713 +G01 X+39.444 Y-40.78 +G01 X+37.346 Y-40.818 +G01 X+34.506 Y-40.983 +G01 X+6.235 Y-40.916 +G01 X+2.901 Y-40.656 +G01 X+2.625 Y-40.622 +G01 X+0.014 Y-40.617 +G01 X-0.195 Y-40.58 +G01 X-0.407 Y-40.455 +G01 X-0.573 Y-40.203 +G01 X-0.673 Y-36.852 +G01 X-0.912 Y-33.395 +G01 X-0.861 Y-4.506 +G01 X-0.66 Y-1.79 +G01 X-0.657 Y-0.014 +G01 X-0.616 Y+0.215 +G01 X-0.545 Y+0.361 +G01 X-0.302 Y+0.576 +G01 X-0.163 Y+0.629 +G01 X+2.654 Y+0.698 +G01 X+5.37 Y+0.879 +G01 X+33.642 Y+0.819 +G01 X+36.852 Y+0.559 +G01 X+37.84 Y+0.49 +G01 X+40.096 Y+0.467 +G01 X+40.322 Y+0.356 +G01 X+40.4 Y+0.27 +G01 X+40.45 Y+0.17 +G01 X+40.518 Y-2.901 +G01 X+40.791 Y-6.111 +G01 X+40.829 Y-11.438 +G01 X+40.759 Y-35.494 +G01 X+40.539 Y-38.21 +G01 X+40.536 Y-39.983 +G01 X+40.492 Y-40.194 +G01 X+40.316 Y-40.424 +G01 X+40.226 Y-40.482 +G01 X+38.704 Y-40.533 +G01 X+37.346 Y-40.581 +G01 X+34.753 Y-40.777 +G01 X+6.358 Y-40.717 +G01 X+3.272 Y-40.45 +G01 X+2.626 Y-40.361 +G01 X+0.03 Y-40.355 +G01 X-0.193 Y-40.275 +G01 X-0.275 Y-40.193 +G01 X-0.344 Y-40.027 +G01 X-0.39 Y-37.099 +G01 X-0.682 Y-34.012 +G01 X-0.731 Y-29.976 +G01 X-0.653 Y-4.513 +G01 X-0.414 Y-1.92 +G01 X-0.41 Y-0.014 +G01 X-0.387 Y+0.126 +G01 X-0.303 Y+0.261 +G01 X-0.156 Y+0.366 +G01 X+2.407 Y+0.426 +G01 X+4.869 Y+0.659 +G01 X+33.635 Y+0.608 +G01 X+36.728 Y+0.317 +G01 X+37.716 Y+0.219 +G01 X+40.055 Y+0.175 +G01 X+40.181 Y+0.102 +G01 X+40.253 Y-2.901 +G01 X+40.57 Y-5.981 +G01 X+40.626 Y-9.691 +G01 X+40.558 Y-35.239 +G01 X+40.307 Y-37.585 +G01 X+40.281 Y-39.965 +G01 X+40.189 Y-40.179 +G01 X+40.058 Y-40.261 +G01 X+37.599 Y-40.298 +G01 X+35.131 Y-40.55 +G01 X+6.612 Y-40.511 +G01 X+3.642 Y-40.238 +G01 X+2.627 Y-40.081 +G01 X+0.247 Y-40.075 +G01 X+0.141 Y-40.031 +G01 X-0.032 Y-39.858 +G01 X-0.076 Y-39.754 +G01 X-0.119 Y-37.106 +G01 X-0.446 Y-34.266 +G01 X-0.524 Y-31.203 +G01 X-0.46 Y-4.761 +G01 X-0.192 Y-2.415 +G01 X-0.165 Y-0.023 +G01 X-0.081 Y+0.125 +G01 X+0.029 Y+0.165 +G01 X+2.4 Y+0.185 +G01 X+4.745 Y+0.448 +G01 X+11.543 Y+0.479 +G01 X+33.388 Y+0.423 +G01 X+36.111 Y+0.171 +G01 X+37.708 Y-0.033 +G01 X+39.817 Y-0.06 +G01 X+39.965 Y-0.207 +G01 X+40.01 Y-2.893 +G01 X+40.347 Y-5.61 +G01 X+40.44 Y-8.457 +G01 X+40.373 Y-35.238 +G01 X+40.089 Y-37.584 +G01 X+40.062 Y-39.909 +G01 X+39.913 Y-40.058 +G01 X+37.601 Y-40.082 +G01 X+35.255 Y-40.361 +G01 X+29.892 Y-40.395 +G01 X+6.612 Y-40.336 +G01 X+3.889 Y-40.07 +G01 X+2.628 Y-39.856 +G01 X+0.299 Y-39.851 +G01 X+0.149 Y-39.701 +G01 X+0.152 Y-37.395 +G01 X-0.224 Y-34.76 +G01 X-0.357 Y-32.037 +G01 X-0.297 Y-4.885 +G01 X-0.035 Y-2.654 +G01 X+0.036 Y-1.914 +G01 X+0.06 Y-0.185 +G01 X+0.208 Y-0.037 +G01 X+2.399 Y-0.015 +G01 X+4.744 Y+0.279 +G01 X+9.321 Y+0.316 +G01 X+33.388 Y+0.257 +G01 X+35.988 Y-0.004 +G01 X+37.581 Y-0.247 +G01 X+39.6 Y-0.251 +G01 X+39.75 Y-0.4 +G01 X+39.778 Y-2.768 +G01 X+40.152 Y-5.363 +G01 X+40.279 Y-7.963 +G01 X+40.218 Y-35.114 +G01 X+39.944 Y-37.346 +G01 X+39.869 Y-38.079 +G01 X+39.867 Y-39.718 +G01 X+39.718 Y-39.868 +G01 X+37.602 Y-39.891 +G01 X+35.256 Y-40.199 +G01 X+31.118 Y-40.239 +G01 X+6.613 Y-40.177 +G01 X+4.012 Y-39.904 +G01 X+2.629 Y-39.651 +G01 X+0.504 Y-39.646 +G01 X+0.354 Y-39.496 +G01 X+0.357 Y-37.396 +G01 X-0.056 Y-34.761 +G01 X-0.202 Y-32.037 +G01 X-0.142 Y-4.886 +G01 X+0.121 Y-2.778 +G01 X+0.221 Y-2.047 +G01 X+0.224 Y-0.373 +G01 X+0.372 Y-0.223 +G01 X+2.398 Y-0.198 +G01 X+4.497 Y+0.105 +G01 X+7.042 Y+0.167 +G01 X+33.264 Y+0.111 +G01 X+35.741 Y-0.14 +G01 X+37.581 Y-0.443 +G01 X+39.382 Y-0.448 +G01 X+39.488 Y-0.492 +G01 X+39.553 Y-0.616 +G01 X+39.585 Y-2.767 +G01 X+39.979 Y-5.24 +G01 X+40.13 Y-7.716 +G01 X+40.07 Y-35.114 +G01 X+39.797 Y-37.222 +G01 X+39.693 Y-37.953 +G01 X+39.69 Y-39.506 +G01 X+39.646 Y-39.612 +G01 X+39.507 Y-39.69 +G01 X+37.603 Y-39.717 +G01 X+35.503 Y-40.031 +G01 X+33.025 Y-40.097 +G01 X+6.736 Y-40.04 +G01 X+4.259 Y-39.778 +G01 X+2.629 Y-39.464 +G01 X+0.69 Y-39.446 +G01 X+0.541 Y-39.295 +G01 X+0.544 Y-37.397 +G01 X+0.098 Y-34.761 +G01 X-0.059 Y-32.284 +G01 X+0.006 Y-4.886 +G01 X+0.29 Y-2.778 +G01 X+0.398 Y-2.048 +G01 X+0.401 Y-0.551 +G01 X+0.551 Y-0.401 +G01 X+2.26 Y-0.403 +G01 X+4.373 Y-0.058 +G01 X+6.552 Y+0.023 +G01 X+33.264 Y-0.039 +G01 X+35.741 Y-0.312 +G01 X+37.58 Y-0.64 +G01 X+39.208 Y-0.644 +G01 X+39.358 Y-0.791 +G01 X+39.391 Y-2.766 +G01 X+39.818 Y-5.239 +G01 X+39.979 Y-7.593 +G01 X+39.915 Y-35.113 +G01 X+39.644 Y-37.099 +G01 X+39.507 Y-37.951 +G01 X+39.504 Y-39.355 +G01 X+39.356 Y-39.505 +G01 X+37.604 Y-39.533 +G01 X+35.627 Y-39.861 +G01 X+33.519 Y-39.945 +G01 X+6.737 Y-39.882 +G01 X+4.39 Y-39.62 +G01 X+2.631 Y-39.258 +G01 X+0.896 Y-39.254 +G01 X+0.747 Y-39.103 +G01 X+0.749 Y-37.398 +G01 X+0.297 Y-35.008 +G01 X+0.103 Y-32.654 +G01 X+0.161 Y-4.887 +G01 X+0.467 Y-2.778 +G01 X+0.583 Y-2.049 +G01 X+0.587 Y-0.741 +G01 X+0.631 Y-0.635 +G01 X+0.741 Y-0.587 +G01 X+2.259 Y-0.588 +G01 X+4.373 Y-0.215 +G01 X+6.552 Y-0.128 +G01 X+33.263 Y-0.191 +G01 X+35.617 Y-0.462 +G01 X+37.579 Y-0.836 +G01 X+39.01 Y-0.84 +G01 X+39.16 Y-0.989 +G01 X+39.168 Y-2.64 +G01 X+39.625 Y-4.992 +G01 X+39.826 Y-7.346 +G01 X+39.767 Y-35.113 +G01 X+39.477 Y-37.099 +G01 X+39.33 Y-37.951 +G01 X+39.322 Y-39.178 +G01 X+39.172 Y-39.327 +G01 X+37.73 Y-39.328 +G01 X+35.751 Y-39.696 +G01 X+33.765 Y-39.801 +G01 X+6.737 Y-39.737 +G01 X+4.39 Y-39.458 +G01 X+2.632 Y-39.072 +G01 X+1.111 Y-39.066 +G01 X+1.006 Y-39.022 +G01 X+0.934 Y-38.888 +G01 X+0.936 Y-37.4 +G01 X+0.472 Y-35.131 +G01 X+0.256 Y-32.909 +G01 X+0.312 Y-4.887 +G01 X+0.585 Y-3.025 +G01 X+0.765 Y-2.05 +G01 X+0.768 Y-0.919 +G01 X+0.919 Y-0.769 +G01 X+2.257 Y-0.77 +G01 X+4.126 Y-0.402 +G01 X+5.988 Y-0.277 +G01 X+33.263 Y-0.348 +G01 X+35.617 Y-0.64 +G01 X+37.578 Y-1.041 +G01 X+38.765 Y-1.046 +G01 X+38.871 Y-1.09 +G01 X+38.954 Y-1.234 +G01 X+38.962 Y-2.639 +G01 X+39.433 Y-4.869 +G01 X+39.658 Y-7.091 +G01 X+39.602 Y-35.112 +G01 X+39.318 Y-36.975 +G01 X+39.132 Y-37.949 +G01 X+39.128 Y-38.978 +G01 X+38.978 Y-39.128 +G01 X+37.731 Y-39.129 +G01 X+35.874 Y-39.509 +G01 X+34.012 Y-39.638 +G01 X+6.738 Y-39.565 +G01 X+4.391 Y-39.264 +G01 X+2.632 Y-38.848 +G01 X+1.307 Y-38.829 +G01 X+1.158 Y-38.679 +G01 X+1.16 Y-37.401 +G01 X+0.672 Y-35.198 +G01 X+0.434 Y-33.033 +G01 X+0.488 Y-4.888 +G01 X+0.783 Y-3.025 +G01 X+0.976 Y-2.051 +G01 X+0.98 Y-1.13 +G01 X+1.13 Y-0.98 +G01 X+2.256 Y-0.982 +G01 X+4.126 Y-0.585 +G01 X+5.988 Y-0.45 +G01 X+33.262 Y-0.528 +G01 X+35.617 Y-0.842 +G01 X+37.578 Y-1.275 +G01 X+38.574 Y-1.294 +G01 X+38.721 Y-1.443 +G01 X+38.73 Y-2.638 +G01 X+39.237 Y-4.868 +G01 X+39.479 Y-7.091 +G01 X+39.438 Y-34.866 +G01 X+39.168 Y-36.728 +G01 X+38.912 Y-37.948 +G01 X+38.907 Y-38.757 +G01 X+38.758 Y-38.907 +G01 X+37.732 Y-38.909 +G01 X+35.875 Y-39.318 +G01 X+34.012 Y-39.458 +G01 X+6.738 Y-39.379 +G01 X+4.638 Y-39.103 +G01 X+2.632 Y-38.605 +G01 X+1.549 Y-38.583 +G01 X+1.401 Y-38.433 +G01 X+1.403 Y-37.402 +G01 X+0.886 Y-35.256 +G01 X+0.619 Y-33.034 +G01 X+0.655 Y-5.135 +G01 X+0.934 Y-3.272 +G01 X+1.201 Y-2.053 +G01 X+1.205 Y-1.358 +G01 X+1.249 Y-1.252 +G01 X+1.359 Y-1.205 +G01 X+2.254 Y-1.206 +G01 X+4.002 Y-0.798 +G01 X+5.734 Y-0.637 +G01 X+33.262 Y-0.715 +G01 X+35.363 Y-1.001 +G01 X+37.578 Y-1.518 +G01 X+38.332 Y-1.54 +G01 X+38.479 Y-1.688 +G01 X+38.488 Y-2.637 +G01 X+39.034 Y-4.868 +G01 X+39.288 Y-6.966 +G01 X+39.274 Y-34.497 +G01 X+39.045 Y-36.351 +G01 X+38.687 Y-37.947 +G01 X+38.683 Y-38.518 +G01 X+38.639 Y-38.624 +G01 X+38.518 Y-38.683 +G01 X+37.734 Y-38.685 +G01 X+35.998 Y-39.104 +G01 X+34.267 Y-39.271 +G01 X+6.985 Y-39.209 +G01 X+4.886 Y-38.944 +G01 X+2.778 Y-38.41 +G01 X+2.637 Y-38.364 +G01 X+1.79 Y-38.337 +G01 X+1.644 Y-38.187 +G01 X+1.645 Y-37.403 +G01 X+1.091 Y-35.256 +G01 X+0.805 Y-33.034 +G01 X+0.792 Y-15.75 +G01 X+0.838 Y-5.135 +G01 X+1.135 Y-3.281 +G01 X+1.418 Y-2.292 +G01 X+1.425 Y-1.605 +G01 X+1.469 Y-1.499 +G01 X+1.605 Y-1.425 +G01 X+2.253 Y-1.426 +G01 X+4.001 Y-0.989 +G01 X+5.733 Y-0.817 +G01 X+33.015 Y-0.877 +G01 X+34.991 Y-1.126 +G01 X+37.099 Y-1.661 +G01 X+37.451 Y-1.751 +G01 X+38.096 Y-1.756 +G01 X+38.245 Y-1.904 +G01 X+38.256 Y-2.636 +G01 X+38.838 Y-4.867 +G01 X+39.11 Y-6.966 +G01 X+39.13 Y-18.704 +G01 X+39.076 Y-34.864 +G01 X+38.77 Y-36.719 +G01 X+38.478 Y-37.709 +G01 X+38.46 Y-38.325 +G01 X+38.31 Y-38.472 +G01 X+37.735 Y-38.474 +G01 X+35.999 Y-38.921 +G01 X+34.267 Y-39.098 +G01 X+6.985 Y-39.037 +G01 X+5.009 Y-38.781 +G01 X+2.901 Y-38.23 +G01 X+2.639 Y-38.141 +G01 X+2.018 Y-38.132 +G01 X+1.868 Y-37.982 +G01 X+1.869 Y-37.405 +G01 X+1.306 Y-35.379 +G01 X+1.004 Y-33.404 +G01 X+0.943 Y-30.958 +G01 X+1.006 Y-5.136 +G01 X+1.321 Y-3.281 +G01 X+1.621 Y-2.293 +G01 X+1.628 Y-1.778 +G01 X+1.778 Y-1.628 +G01 X+2.252 Y-1.629 +G01 X+4.001 Y-1.165 +G01 X+5.733 Y-0.982 +G01 X+33.015 Y-1.042 +G01 X+34.99 Y-1.305 +G01 X+37.099 Y-1.87 +G01 X+37.45 Y-1.965 +G01 X+37.881 Y-1.971 +G01 X+38.031 Y-2.118 +G01 X+38.042 Y-2.635 +G01 X+38.607 Y-4.621 +G01 X+38.917 Y-6.595 +G01 X+38.98 Y-8.951 +G01 X+38.915 Y-34.865 +G01 X+38.655 Y-36.472 +G01 X+38.284 Y-37.707 +G01 X+38.277 Y-38.128 +G01 X+38.128 Y-38.277 +G01 X+37.736 Y-38.28 +G01 X+35.999 Y-38.752 +G01 X+34.391 Y-38.936 +G01 X+6.985 Y-38.88 +G01 X+5.01 Y-38.61 +G01 X+2.901 Y-38.029 +G01 X+2.64 Y-37.936 +G01 X+2.224 Y-37.926 +G01 X+2.074 Y-37.776 +G01 Y-37.406 +G01 X+1.481 Y-35.38 +G01 X+1.163 Y-33.405 +G01 X+1.098 Y-31.203 +G01 X+1.164 Y-5.136 +G01 X+1.431 Y-3.528 +G01 X+1.811 Y-2.294 +G01 X+1.818 Y-1.976 +G01 X+1.862 Y-1.87 +G01 X+1.976 Y-1.818 +G01 X+2.251 Y-1.819 +G01 X+3.878 Y-1.356 +G01 X+5.484 Y-1.147 +G01 X+33.014 Y-1.199 +G01 X+34.99 Y-1.476 +G01 X+37.099 Y-2.071 +G01 X+37.449 Y-2.171 +G01 X+37.654 Y-2.177 +G01 X+37.76 Y-2.22 +G01 X+37.826 Y-2.343 +G01 X+37.837 Y-2.635 +G01 X+38.431 Y-4.62 +G01 X+38.758 Y-6.595 +G01 X+38.825 Y-8.704 +G01 X+38.758 Y-34.864 +G01 X+38.484 Y-36.471 +G01 X+38.094 Y-37.706 +G01 X+38.087 Y-37.901 +G01 X+38.043 Y-38.007 +G01 X+37.902 Y-38.088 +G01 X+37.736 Y-38.091 +G01 X+36.122 Y-38.561 +G01 X+34.516 Y-38.775 +G01 X+6.986 Y-38.722 +G01 X+5.01 Y-38.439 +G01 X+2.901 Y-37.829 +G01 X+2.64 Y-37.73 +G01 X+2.427 Y-37.718 +G01 X+2.279 Y-37.568 +G01 Y-37.407 +G01 X+1.656 Y-35.38 +G01 X+1.321 Y-33.405 +G01 X+1.253 Y-31.203 +G01 X+1.321 Y-5.136 +G01 X+1.602 Y-3.529 +G01 X+2.003 Y-2.287 +G01 X+2.022 Y-2.142 +G01 X+2.172 Y-2.008 +G01 X+2.293 Y-2.002 +G01 X+3.877 Y-1.522 +G01 X+5.484 Y-1.303 +G01 X+33.014 Y-1.356 +G01 X+34.989 Y-1.647 +G01 X+37.099 Y-2.271 +G01 X+37.366 Y-2.375 +G01 X+37.492 Y-2.394 +G01 X+37.626 Y-2.534 +G01 X+37.632 Y-2.636 +G01 X+38.256 Y-4.62 +G01 X+38.599 Y-6.595 +G01 X+38.67 Y-8.704 +G01 X+38.6 Y-34.863 +G01 X+38.313 Y-36.471 +G01 X+37.904 Y-37.705 +G01 X+37.752 Y-37.9 +G01 X+36.123 Y-38.394 +G01 X+34.517 Y-38.619 +G01 X+6.986 Y-38.565 +G01 X+5.01 Y-38.268 +G01 X+3.148 Y-37.721 +G01 X+2.616 Y-37.515 +G01 X+2.485 Y-37.384 +G01 X+1.83 Y-35.38 +G01 X+1.478 Y-33.406 +G01 X+1.406 Y-31.203 +G01 X+1.465 Y-5.137 +G01 X+1.757 Y-3.529 +G01 X+2.17 Y-2.305 +G01 X+2.246 Y-2.207 +G01 X+3.877 Y-1.673 +G01 X+5.483 Y-1.443 +G01 X+32.891 Y-1.478 +G01 X+34.743 Y-1.734 +G01 X+36.722 Y-2.296 +G01 X+37.346 Y-2.536 +G01 X+37.45 Y-2.634 +G01 X+38.114 Y-4.62 +G01 X+38.471 Y-6.594 +G01 X+38.545 Y-8.704 +G01 X+38.496 Y-34.74 +G01 X+38.222 Y-36.346 +G01 X+37.753 Y-37.688 +G01 X+37.657 Y-37.781 +G01 X+36.123 Y-38.274 +G01 X+34.517 Y-38.507 +G01 X+7.109 Y-38.472 +G01 X+5.257 Y-38.212 +G01 X+3.278 Y-37.643 +G01 X+2.677 Y-37.408 +G01 X+2.592 Y-37.323 +G01 X+2.363 Y-36.735 +G01 X+1.795 Y-34.763 +G01 X+1.535 Y-32.911 +G01 X+1.527 Y-5.506 +G01 X+1.759 Y-3.908 +G01 X+2.256 Y-2.367 +G01 X+2.35 Y-2.272 +G01 X+3.638 Y-1.827 +G01 X+5.237 Y-1.549 +G01 X+31.296 Y-1.526 +G01 X+33.378 Y-1.601 +G01 X+35.345 Y-1.962 +G01 X+37.257 Y-2.605 +G01 X+37.346 Y-2.687 +G01 X+37.609 Y-3.285 +G01 X+38.176 Y-5.25 +G01 X+38.437 Y-7.093 +G01 X+38.445 Y-34.491 +G01 X+38.214 Y-36.079 +G01 X+37.715 Y-37.62 +G01 X+37.62 Y-37.715 +G01 X+36.346 Y-38.147 +G01 X+34.758 Y-38.423 +G01 X+8.552 Y-38.446 +G01 X+6.628 Y-38.371 +G01 X+4.671 Y-38.01 +G01 X+2.735 Y-37.354 +G01 X+2.643 Y-37.266 +G01 X+2.418 Y-36.689 +G01 X+1.855 Y-34.736 +G01 X+1.597 Y-32.903 +G01 X+1.622 Y-5.517 +G01 X+1.852 Y-3.954 +G01 X+2.342 Y-2.452 +G01 X+2.435 Y-2.357 +G01 X+3.692 Y-1.922 +G01 X+5.254 Y-1.651 +G01 X+31.296 Y-1.66 +G01 X+33.349 Y-1.737 +G01 X+35.269 Y-2.098 +G01 X+37.127 Y-2.737 +G01 X+37.215 Y-2.818 +G01 X+37.473 Y-3.4 +G01 X+38.033 Y-5.313 +G01 X+38.29 Y-7.113 +G01 X+38.265 Y-34.47 +G01 X+38.04 Y-35.992 +G01 X+37.556 Y-37.462 +G01 X+37.462 Y-37.557 +G01 X+36.363 Y-37.939 +G01 X+34.845 Y-38.226 +G01 X+8.552 Y-38.227 +G01 X+6.676 Y-38.15 +G01 X+4.794 Y-37.79 +G01 X+2.945 Y-37.142 +G01 X+2.855 Y-37.057 +G01 X+2.634 Y-36.507 +G01 X+2.079 Y-34.637 +G01 X+1.823 Y-32.872 +G01 X+1.848 Y-5.543 +G01 X+2.069 Y-4.062 +G01 X+2.538 Y-2.646 +G01 X+2.63 Y-2.552 +G01 X+3.7 Y-2.168 +G01 X+5.177 Y-1.887 +G01 X+31.296 Y-1.886 +G01 X+33.299 Y-1.963 +G01 X+35.144 Y-2.321 +G01 X+36.918 Y-2.949 +G01 X+37.005 Y-3.028 +G01 X+37.256 Y-3.581 +G01 X+37.809 Y-5.412 +G01 X+38.064 Y-7.144 +G01 X+38.039 Y-34.445 +G01 X+37.823 Y-35.884 +G01 X+37.36 Y-37.267 +G01 X+37.268 Y-37.361 +G01 X+36.236 Y-37.725 +G01 X+34.801 Y-38.001 +G01 X+8.552 Y-38 +G01 X+6.725 Y-37.924 +G01 X+4.918 Y-37.568 +G01 X+3.154 Y-36.93 +G01 X+3.067 Y-36.847 +G01 X+2.851 Y-36.326 +G01 X+2.303 Y-34.538 +G01 X+2.049 Y-32.84 +G01 X+2.074 Y-5.568 +G01 X+2.286 Y-4.17 +G01 X+2.734 Y-2.84 +G01 X+2.825 Y-2.747 +G01 X+3.827 Y-2.382 +G01 X+5.221 Y-2.111 +G01 X+31.296 Y-2.113 +G01 X+33.25 Y-2.189 +G01 X+35.02 Y-2.544 +G01 X+36.711 Y-3.161 +G01 X+36.795 Y-3.239 +G01 X+37.039 Y-3.763 +G01 X+37.584 Y-5.511 +G01 X+37.838 Y-7.175 +G01 X+37.819 Y-34.315 +G01 X+37.63 Y-35.671 +G01 X+37.164 Y-37.072 +G01 X+37.072 Y-37.165 +G01 X+36.109 Y-37.512 +G01 X+34.757 Y-37.776 +G01 X+8.552 Y-37.774 +G01 X+6.775 Y-37.698 +G01 X+5.042 Y-37.345 +G01 X+3.364 Y-36.719 +G01 X+3.278 Y-36.637 +G01 X+3.068 Y-36.144 +G01 X+2.528 Y-34.439 +G01 X+2.275 Y-32.809 +G01 X+2.294 Y-5.695 +G01 X+2.479 Y-4.38 +G01 X+2.93 Y-3.035 +G01 X+3.02 Y-2.942 +G01 X+3.954 Y-2.595 +G01 X+5.265 Y-2.336 +G01 X+31.296 Y-2.339 +G01 X+33.2 Y-2.415 +G01 X+34.896 Y-2.767 +G01 X+36.503 Y-3.373 +G01 X+36.585 Y-3.449 +G01 X+36.823 Y-3.944 +G01 X+37.36 Y-5.611 +G01 X+37.612 Y-7.206 +G01 X+37.593 Y-34.295 +G01 X+37.412 Y-35.569 +G01 X+36.968 Y-36.878 +G01 X+36.879 Y-36.97 +G01 X+36.176 Y-37.238 +G01 X+34.714 Y-37.551 +G01 X+8.552 Y-37.547 +G01 X+6.824 Y-37.472 +G01 X+5.166 Y-37.122 +G01 X+3.573 Y-36.507 +G01 X+3.49 Y-36.428 +G01 X+3.284 Y-35.963 +G01 X+2.752 Y-34.34 +G01 X+2.501 Y-32.778 +G01 X+2.517 Y-5.809 +G01 X+2.697 Y-4.482 +G01 X+3.126 Y-3.227 +G01 X+3.213 Y-3.137 +G01 X+3.894 Y-2.867 +G01 X+5.307 Y-2.561 +G01 X+31.296 Y-2.565 +G01 X+33.15 Y-2.641 +G01 X+34.772 Y-2.989 +G01 X+36.299 Y-3.587 +G01 X+36.375 Y-3.653 +G01 X+36.477 Y-3.833 +G01 X+37.083 Y-5.508 +G01 X+37.377 Y-7.133 +G01 X+37.37 Y-34.184 +G01 X+37.194 Y-35.467 +G01 X+36.772 Y-36.684 +G01 X+36.685 Y-36.774 +G01 X+36.035 Y-37.027 +G01 X+34.671 Y-37.327 +G01 X+8.552 Y-37.321 +G01 X+6.874 Y-37.246 +G01 X+5.29 Y-36.899 +G01 X+3.781 Y-36.295 +G01 X+3.702 Y-36.22 +G01 X+3.627 Y-36.063 +G01 X+3.028 Y-34.438 +G01 X+2.736 Y-32.849 +G01 X+2.743 Y-5.823 +G01 X+2.915 Y-4.584 +G01 X+3.322 Y-3.421 +G01 X+3.408 Y-3.332 +G01 X+4.035 Y-3.078 +G01 X+5.351 Y-2.786 +G01 X+31.296 Y-2.792 +G01 X+33.101 Y-2.867 +G01 X+34.648 Y-3.212 +G01 X+36.092 Y-3.799 +G01 X+36.263 Y-4.031 +G01 X+36.859 Y-5.617 +G01 X+37.151 Y-7.169 +G01 X+37.146 Y-34.086 +G01 X+36.996 Y-35.28 +G01 X+36.576 Y-36.489 +G01 X+36.49 Y-36.579 +G01 X+35.895 Y-36.817 +G01 X+34.627 Y-37.102 +G01 X+8.552 Y-37.094 +G01 X+6.924 Y-37.02 +G01 X+5.415 Y-36.677 +G01 X+3.99 Y-36.083 +G01 X+3.914 Y-36.011 +G01 X+3.841 Y-35.865 +G01 X+3.252 Y-34.329 +G01 X+2.962 Y-32.814 +G01 X+2.967 Y-5.918 +G01 X+3.114 Y-4.768 +G01 X+3.519 Y-3.615 +G01 X+3.603 Y-3.527 +G01 X+4.175 Y-3.289 +G01 X+5.395 Y-3.01 +G01 X+31.543 Y-3.019 +G01 X+33.052 Y-3.093 +G01 X+34.523 Y-3.435 +G01 X+35.884 Y-4.011 +G01 X+36.049 Y-4.23 +G01 X+36.636 Y-5.725 +G01 X+36.925 Y-7.204 +G01 X+36.92 Y-34.078 +G01 X+36.777 Y-35.185 +G01 X+36.38 Y-36.295 +G01 X+36.296 Y-36.383 +G01 X+35.754 Y-36.606 +G01 X+34.583 Y-36.877 +G01 X+8.552 Y-36.868 +G01 X+6.973 Y-36.794 +G01 X+5.539 Y-36.454 +G01 X+4.199 Y-35.871 +G01 X+4.055 Y-35.667 +G01 X+3.476 Y-34.221 +G01 X+3.188 Y-32.778 +G01 X+3.192 Y-6.002 +G01 X+3.333 Y-4.864 +G01 X+3.715 Y-3.808 +G01 X+3.797 Y-3.722 +G01 X+4.315 Y-3.5 +G01 X+5.439 Y-3.235 +G01 X+31.296 Y-3.245 +G01 X+32.913 Y-3.307 +G01 X+34.228 Y-3.601 +G01 X+35.676 Y-4.224 +G01 X+35.835 Y-4.428 +G01 X+36.411 Y-5.834 +G01 X+36.699 Y-7.239 +G01 X+36.694 Y-33.998 +G01 X+36.557 Y-35.089 +G01 X+36.184 Y-36.101 +G01 X+36.102 Y-36.187 +G01 X+35.614 Y-36.395 +G01 X+34.54 Y-36.652 +G01 X+8.552 Y-36.642 +G01 X+7.023 Y-36.568 +G01 X+5.663 Y-36.231 +G01 X+4.407 Y-35.659 +G01 X+4.269 Y-35.469 +G01 X+3.701 Y-34.112 +G01 X+3.414 Y-32.743 +G01 X+3.419 Y-6.242 +G01 X+3.536 Y-5.03 +G01 X+3.911 Y-4 +G01 X+3.989 Y-3.916 +G01 X+4.324 Y-3.762 +G01 X+5.34 Y-3.48 +G01 X+29.568 Y-3.468 +G01 X+32.696 Y-3.513 +G01 X+34.113 Y-3.824 +G01 X+35.469 Y-4.436 +G01 X+35.621 Y-4.627 +G01 X+36.187 Y-5.942 +G01 X+36.473 Y-7.275 +G01 X+36.468 Y-33.688 +G01 X+36.37 Y-34.859 +G01 X+35.987 Y-35.909 +G01 X+35.911 Y-35.992 +G01 X+35.724 Y-36.081 +G01 X+34.633 Y-36.407 +G01 X+8.552 Y-36.415 +G01 X+7.073 Y-36.342 +G01 X+5.788 Y-36.009 +G01 X+4.615 Y-35.447 +G01 X+4.484 Y-35.27 +G01 X+3.925 Y-34.003 +G01 X+3.64 Y-32.708 +G01 X+3.645 Y-6.242 +G01 X+3.756 Y-5.119 +G01 X+4.108 Y-4.192 +G01 X+4.182 Y-4.112 +G01 X+4.418 Y-3.995 +G01 X+5.395 Y-3.704 +G01 X+29.568 Y-3.695 +G01 X+32.66 Y-3.739 +G01 X+33.998 Y-4.048 +G01 X+35.263 Y-4.649 +G01 X+35.406 Y-4.825 +G01 X+35.963 Y-6.051 +G01 X+36.247 Y-7.31 +G01 X+36.242 Y-33.688 +G01 X+36.149 Y-34.776 +G01 X+35.791 Y-35.716 +G01 X+35.718 Y-35.796 +G01 X+35.557 Y-35.877 +G01 X+34.577 Y-36.183 +G01 X+8.797 Y-36.189 +G01 X+7.201 Y-36.128 +G01 X+5.985 Y-35.814 +G01 X+4.823 Y-35.234 +G01 X+4.698 Y-35.072 +G01 X+4.149 Y-33.895 +G01 X+3.866 Y-32.673 +G01 X+3.872 Y-6.242 +G01 X+3.962 Y-5.265 +G01 X+4.304 Y-4.385 +G01 X+4.375 Y-4.307 +G01 X+4.578 Y-4.201 +G01 X+5.451 Y-3.928 +G01 X+29.815 Y-3.922 +G01 X+32.624 Y-3.965 +G01 X+33.813 Y-4.245 +G01 X+34.944 Y-4.789 +G01 X+35.181 Y-5.016 +G01 X+35.739 Y-6.159 +G01 X+36.021 Y-7.345 +G01 X+36.015 Y-33.688 +G01 X+35.927 Y-34.692 +G01 X+35.595 Y-35.524 +G01 X+35.526 Y-35.6 +G01 X+35.39 Y-35.672 +G01 X+34.521 Y-35.959 +G01 X+8.797 Y-35.962 +G01 X+7.247 Y-35.901 +G01 X+6.105 Y-35.591 +G01 X+5.031 Y-35.021 +G01 X+4.912 Y-34.874 +G01 X+4.373 Y-33.787 +G01 X+4.092 Y-32.638 +G01 X+4.098 Y-6.481 +G01 X+4.171 Y-5.4 +G01 X+4.479 Y-4.613 +G01 X+4.688 Y-4.436 +G01 X+5.506 Y-4.153 +G01 X+32.47 Y-4.178 +G01 X+33.569 Y-4.42 +G01 X+34.635 Y-4.931 +G01 X+34.964 Y-5.214 +G01 X+35.514 Y-6.268 +G01 X+35.794 Y-7.38 +G01 X+35.789 Y-33.688 +G01 X+35.718 Y-34.562 +G01 X+35.422 Y-35.295 +G01 X+35.228 Y-35.462 +G01 X+34.466 Y-35.735 +G01 X+8.552 Y-35.736 +G01 X+7.292 Y-35.675 +G01 X+6.225 Y-35.368 +G01 X+5.237 Y-34.808 +G01 X+5.127 Y-34.676 +G01 X+4.598 Y-33.678 +G01 X+4.319 Y-32.603 +G01 X+4.324 Y-6.728 +G01 X+4.373 Y-5.567 +G01 X+4.678 Y-4.799 +G01 X+4.856 Y-4.64 +G01 X+5.561 Y-4.378 +G01 X+32.348 Y-4.395 +G01 X+33.405 Y-4.622 +G01 X+34.397 Y-5.112 +G01 X+34.751 Y-5.413 +G01 X+35.29 Y-6.376 +G01 X+35.568 Y-7.414 +G01 X+35.538 Y-34.276 +G01 X+35.281 Y-35.015 +G01 X+35.101 Y-35.225 +G01 X+34.412 Y-35.509 +G01 X+8.552 +G01 X+7.338 Y-35.449 +G01 X+6.345 Y-35.146 +G01 X+5.443 Y-34.594 +G01 X+5.342 Y-34.478 +G01 X+4.823 Y-33.57 +G01 X+4.545 Y-32.568 +G01 X+4.569 Y-5.784 +G01 X+4.784 Y-5.131 +G01 X+4.985 Y-4.879 +G01 X+5.616 Y-4.603 +G01 X+32.009 Y-4.605 +G01 X+33.01 Y-4.748 +G01 X+33.969 Y-5.166 +G01 X+34.536 Y-5.612 +G01 X+35.065 Y-6.484 +G01 X+35.342 Y-7.449 +G01 X+35.334 Y-34.023 +G01 X+35.192 Y-34.637 +G01 X+34.928 Y-35.015 +G01 X+34.357 Y-35.284 +G01 X+8.552 Y-35.283 +G01 X+7.384 Y-35.223 +G01 X+6.465 Y-34.923 +G01 X+5.649 Y-34.38 +G01 X+5.557 Y-34.28 +G01 X+5.048 Y-33.462 +G01 X+4.772 Y-32.534 +G01 X+4.778 Y-6.009 +G01 X+4.844 Y-5.6 +G01 X+5.113 Y-5.129 +G01 X+5.669 Y-4.831 +G01 X+32.008 Y-4.832 +G01 X+32.852 Y-4.949 +G01 X+33.673 Y-5.296 +G01 X+34.325 Y-5.812 +G01 X+34.84 Y-6.592 +G01 X+35.115 Y-7.484 +G01 X+35.109 Y-33.927 +G01 X+35.055 Y-34.327 +G01 X+34.792 Y-34.776 +G01 X+34.305 Y-35.055 +G01 X+8.552 Y-35.056 +G01 X+7.43 Y-34.997 +G01 X+6.559 Y-34.684 +G01 X+5.843 Y-34.157 +G00 Z-0.255 +G00 X-1.95 Y-40 +G00 Z-5.255 +G01 Z-6.48 F10000 +G01 X-1.904 Y+0.391 F12000 +G01 X-1.609 Y+1.091 +G01 X-1.069 Y+1.624 +G01 X-0.359 Y+1.913 +G01 X-0.007 Y+1.949 +G01 X+40.391 Y+1.904 +G01 X+41.091 Y+1.609 +G01 X+41.624 Y+1.069 +G01 X+41.913 Y+0.359 +G01 X+41.949 Y+0.007 +G01 X+41.904 Y-40.391 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-0.544 Y-41.85 +G01 X-0.685 Y-41.817 +G01 X-1.135 Y-41.576 +G01 X-1.361 Y-41.386 +G01 X-1.727 Y-40.885 +G01 X-1.862 Y-40.55 +G01 X-1.94 Y-40.01 +G01 X-1.886 Y+0 +G01 X-1.88 Y+0.112 +G01 X-1.761 Y+0.663 +G01 X-1.538 Y+1.083 +G01 X-0.831 Y+1.683 +G01 X-0.56 Y+1.796 +G01 X+0.302 Y+1.881 +G01 X+40.082 Y+1.812 +G01 X+40.496 Y+1.743 +G01 X+40.799 Y+1.627 +G01 X+41.056 Y+1.473 +G01 X+41.273 Y+1.29 +G01 X+41.45 Y+1.085 +G01 X+41.722 Y+0.547 +G01 X+41.81 Y-0.556 +G01 X+41.788 Y-36.481 +G01 X+41.765 Y-40 +G01 X+41.691 Y-40.496 +G01 X+41.596 Y-40.749 +G01 X+41.429 Y-41.031 +G01 X+41.255 Y-41.236 +G01 X+40.99 Y-41.456 +G01 X+40.667 Y-41.628 +G01 X+39.701 Y-41.759 +G01 X+6.177 Y-41.749 +G01 X+2.616 Y-41.688 +G01 X+0 Y-41.684 +G01 X-0.59 Y-41.573 +G01 X-0.981 Y-41.365 +G01 X-1.176 Y-41.201 +G01 X-1.493 Y-40.768 +G01 X-1.61 Y-40.478 +G01 X-1.679 Y-40.01 +G01 X-1.73 Y-26.235 +G01 X-1.668 Y-3.025 +G01 X-1.643 Y+0 +G01 X-1.535 Y+0.576 +G01 X-1.342 Y+0.941 +G01 X-0.727 Y+1.465 +G01 X-0.491 Y+1.564 +G01 X+0.309 Y+1.64 +G01 X+11.79 Y+1.683 +G01 X+35.37 Y+1.618 +G01 X+39.568 Y+1.554 +G01 X+40.068 Y+1.551 +G01 X+40.422 Y+1.492 +G01 X+40.682 Y+1.393 +G01 X+40.902 Y+1.261 +G01 X+41.088 Y+1.104 +G01 X+41.239 Y+0.931 +G01 X+41.471 Y+0.472 +G01 X+41.549 Y-0.556 +G01 X+41.603 Y-4.63 +G01 X+41.626 Y-18.457 +G01 X+41.563 Y-36.728 +G01 X+41.522 Y-40 +G01 X+41.459 Y-40.426 +G01 X+41.377 Y-40.645 +G01 X+41.234 Y-40.888 +G01 X+41.084 Y-41.065 +G01 X+40.855 Y-41.255 +G01 X+40.58 Y-41.402 +G01 X+39.575 Y-41.518 +G01 X+35.741 Y-41.575 +G01 X+5.247 Y-41.524 +G01 X+2.616 Y-41.426 +G01 X+0 Y-41.422 +G01 X-0.495 Y-41.329 +G01 X-0.826 Y-41.154 +G01 X-0.991 Y-41.016 +G01 X-1.259 Y-40.651 +G01 X-1.359 Y-40.406 +G01 X-1.418 Y-40.01 +G01 X-1.454 Y-36.481 +G01 X-1.538 Y-30.958 +G01 X-1.466 Y-3.642 +G01 X-1.402 Y-0.802 +G01 X-1.401 Y+0 +G01 X-1.309 Y+0.488 +G01 X-1.146 Y+0.798 +G01 X-0.623 Y+1.247 +G01 X-0.423 Y+1.332 +G01 X+0.432 Y+1.398 +G01 X+3.272 Y+1.441 +G01 X+8.58 Y+1.489 +G01 X+34.63 Y+1.421 +G01 X+38.333 Y+1.294 +G01 X+40.054 Y+1.289 +G01 X+40.348 Y+1.241 +G01 X+40.565 Y+1.159 +G01 X+40.748 Y+1.049 +G01 X+40.903 Y+0.919 +G01 X+41.028 Y+0.776 +G01 X+41.22 Y+0.398 +G01 X+41.287 Y-0.679 +G01 X+41.333 Y-3.519 +G01 X+41.44 Y-8.21 +G01 X+41.373 Y-35.988 +G01 X+41.282 Y-38.704 +G01 X+41.28 Y-40 +G01 X+41.227 Y-40.356 +G01 X+41.159 Y-40.54 +G01 X+41.042 Y-40.739 +G01 X+40.725 Y-41.049 +G01 X+40.492 Y-41.176 +G01 X+39.568 Y-41.277 +G01 X+36.975 Y-41.318 +G01 X+33.025 Y-41.392 +G01 X+5.741 Y-41.326 +G01 X+2.616 Y-41.164 +G01 X+0 Y-41.16 +G01 X-0.4 Y-41.085 +G01 X-0.671 Y-40.942 +G01 X-0.802 Y-40.835 +G01 X-1.089 Y-40.383 +G01 X-1.156 Y-40.01 +G01 X-1.19 Y-36.852 +G01 X-1.341 Y-32.407 +G01 X-1.273 Y-4.136 +G01 X-1.161 Y-1.543 +G01 X-1.159 Y+0 +G01 X-1.084 Y+0.4 +G01 X-0.95 Y+0.656 +G01 X-0.518 Y+1.028 +G01 X-0.355 Y+1.1 +G01 X+0.556 Y+1.156 +G01 X+2.901 Y+1.198 +G01 X+6.552 Y+1.294 +G01 X+34.259 Y+1.222 +G01 X+38.086 Y+1.032 +G01 X+40.041 Y+1.028 +G01 X+40.268 Y+0.991 +G01 X+40.588 Y+0.84 +G01 X+40.718 Y+0.734 +G01 X+40.817 Y+0.621 +G01 X+40.969 Y+0.324 +G01 X+41.025 Y-0.926 +G01 X+41.065 Y-3.148 +G01 X+41.238 Y-7.099 +G01 X+41.168 Y-35.864 +G01 X+41.04 Y-38.333 +G01 X+41.038 Y-40 +G01 X+40.996 Y-40.286 +G01 X+40.942 Y-40.43 +G01 X+40.745 Y-40.717 +G01 X+40.587 Y-40.853 +G01 X+40.405 Y-40.951 +G01 X+39.568 Y-41.035 +G01 X+37.222 Y-41.074 +G01 X+34.012 Y-41.196 +G01 X+5.988 Y-41.127 +G01 X+2.616 Y-40.902 +G01 X+0 Y-40.898 +G01 X-0.299 Y-40.842 +G01 X-0.605 Y-40.653 +G01 X-0.842 Y-40.28 +G01 X-0.893 Y-38.333 +G01 X-0.939 Y-36.852 +G01 X-1.135 Y-33.025 +G01 X-1.072 Y-4.383 +G01 X-0.915 Y-1.667 +G01 X-0.912 Y+0 +G01 X-0.854 Y+0.31 +G01 X-0.751 Y+0.511 +G01 X-0.412 Y+0.806 +G01 X-0.285 Y+0.863 +G01 X+0.926 Y+0.909 +G01 X+2.778 Y+0.954 +G01 X+5.864 Y+1.093 +G01 X+33.823 Y+1.023 +G01 X+37.346 Y+0.766 +G01 X+40.173 Y+0.727 +G01 X+40.514 Y+0.548 +G01 X+40.598 Y+0.461 +G01 X+40.709 Y+0.247 +G01 X+40.806 Y-3.148 +G01 X+41.022 Y-6.728 +G01 X+40.968 Y-35.494 +G01 X+40.785 Y-38.21 +G01 X+40.782 Y-39.983 +G01 X+40.714 Y-40.301 +G01 X+40.452 Y-40.629 +G01 X+40.313 Y-40.713 +G01 X+39.444 Y-40.78 +G01 X+37.346 Y-40.818 +G01 X+34.506 Y-40.983 +G01 X+6.235 Y-40.916 +G01 X+2.901 Y-40.656 +G01 X+2.625 Y-40.622 +G01 X+0.014 Y-40.617 +G01 X-0.195 Y-40.58 +G01 X-0.407 Y-40.455 +G01 X-0.573 Y-40.203 +G01 X-0.673 Y-36.852 +G01 X-0.912 Y-33.395 +G01 X-0.861 Y-4.506 +G01 X-0.66 Y-1.79 +G01 X-0.657 Y-0.014 +G01 X-0.616 Y+0.215 +G01 X-0.545 Y+0.361 +G01 X-0.302 Y+0.576 +G01 X-0.163 Y+0.629 +G01 X+2.654 Y+0.698 +G01 X+5.37 Y+0.879 +G01 X+33.642 Y+0.819 +G01 X+36.852 Y+0.559 +G01 X+37.84 Y+0.49 +G01 X+40.096 Y+0.467 +G01 X+40.322 Y+0.356 +G01 X+40.4 Y+0.27 +G01 X+40.45 Y+0.17 +G01 X+40.518 Y-2.901 +G01 X+40.791 Y-6.111 +G01 X+40.829 Y-11.438 +G01 X+40.759 Y-35.494 +G01 X+40.539 Y-38.21 +G01 X+40.536 Y-39.983 +G01 X+40.492 Y-40.194 +G01 X+40.316 Y-40.424 +G01 X+40.226 Y-40.482 +G01 X+38.704 Y-40.533 +G01 X+37.346 Y-40.581 +G01 X+34.753 Y-40.777 +G01 X+6.358 Y-40.717 +G01 X+3.272 Y-40.45 +G01 X+2.626 Y-40.361 +G01 X+0.03 Y-40.355 +G01 X-0.193 Y-40.275 +G01 X-0.275 Y-40.193 +G01 X-0.344 Y-40.027 +G01 X-0.39 Y-37.099 +G01 X-0.682 Y-34.012 +G01 X-0.731 Y-29.976 +G01 X-0.653 Y-4.513 +G01 X-0.414 Y-1.92 +G01 X-0.41 Y-0.014 +G01 X-0.387 Y+0.126 +G01 X-0.303 Y+0.261 +G01 X-0.156 Y+0.366 +G01 X+2.407 Y+0.426 +G01 X+4.869 Y+0.659 +G01 X+33.635 Y+0.608 +G01 X+36.728 Y+0.317 +G01 X+37.716 Y+0.219 +G01 X+40.055 Y+0.175 +G01 X+40.181 Y+0.102 +G01 X+40.253 Y-2.901 +G01 X+40.57 Y-5.981 +G01 X+40.626 Y-9.691 +G01 X+40.558 Y-35.239 +G01 X+40.307 Y-37.585 +G01 X+40.281 Y-39.965 +G01 X+40.189 Y-40.179 +G01 X+40.058 Y-40.261 +G01 X+37.599 Y-40.298 +G01 X+35.131 Y-40.55 +G01 X+6.612 Y-40.511 +G01 X+3.642 Y-40.238 +G01 X+2.627 Y-40.081 +G01 X+0.247 Y-40.075 +G01 X+0.141 Y-40.031 +G01 X-0.032 Y-39.858 +G01 X-0.076 Y-39.754 +G01 X-0.119 Y-37.106 +G01 X-0.446 Y-34.266 +G01 X-0.524 Y-31.203 +G01 X-0.46 Y-4.761 +G01 X-0.192 Y-2.415 +G01 X-0.165 Y-0.023 +G01 X-0.081 Y+0.125 +G01 X+0.029 Y+0.165 +G01 X+2.4 Y+0.185 +G01 X+4.745 Y+0.448 +G01 X+11.543 Y+0.479 +G01 X+33.388 Y+0.423 +G01 X+36.111 Y+0.171 +G01 X+37.708 Y-0.033 +G01 X+39.817 Y-0.06 +G01 X+39.965 Y-0.207 +G01 X+40.01 Y-2.893 +G01 X+40.347 Y-5.61 +G01 X+40.44 Y-8.457 +G01 X+40.373 Y-35.238 +G01 X+40.089 Y-37.584 +G01 X+40.062 Y-39.909 +G01 X+39.913 Y-40.058 +G01 X+37.601 Y-40.082 +G01 X+35.255 Y-40.361 +G01 X+29.892 Y-40.395 +G01 X+6.612 Y-40.336 +G01 X+3.889 Y-40.07 +G01 X+2.628 Y-39.856 +G01 X+0.299 Y-39.851 +G01 X+0.149 Y-39.701 +G01 X+0.152 Y-37.395 +G01 X-0.224 Y-34.76 +G01 X-0.357 Y-32.037 +G01 X-0.297 Y-4.885 +G01 X-0.035 Y-2.654 +G01 X+0.036 Y-1.914 +G01 X+0.06 Y-0.185 +G01 X+0.208 Y-0.037 +G01 X+2.399 Y-0.015 +G01 X+4.744 Y+0.279 +G01 X+9.321 Y+0.316 +G01 X+33.388 Y+0.257 +G01 X+35.988 Y-0.004 +G01 X+37.581 Y-0.247 +G01 X+39.6 Y-0.251 +G01 X+39.75 Y-0.4 +G01 X+39.778 Y-2.768 +G01 X+40.152 Y-5.363 +G01 X+40.279 Y-7.963 +G01 X+40.218 Y-35.114 +G01 X+39.944 Y-37.346 +G01 X+39.869 Y-38.079 +G01 X+39.867 Y-39.718 +G01 X+39.718 Y-39.868 +G01 X+37.602 Y-39.891 +G01 X+35.256 Y-40.199 +G01 X+31.118 Y-40.239 +G01 X+6.613 Y-40.177 +G01 X+4.012 Y-39.904 +G01 X+2.629 Y-39.651 +G01 X+0.504 Y-39.646 +G01 X+0.354 Y-39.496 +G01 X+0.357 Y-37.396 +G01 X-0.056 Y-34.761 +G01 X-0.202 Y-32.037 +G01 X-0.142 Y-4.886 +G01 X+0.121 Y-2.778 +G01 X+0.221 Y-2.047 +G01 X+0.224 Y-0.373 +G01 X+0.372 Y-0.223 +G01 X+2.398 Y-0.198 +G01 X+4.497 Y+0.105 +G01 X+7.042 Y+0.167 +G01 X+33.264 Y+0.111 +G01 X+35.741 Y-0.14 +G01 X+37.581 Y-0.443 +G01 X+39.382 Y-0.448 +G01 X+39.488 Y-0.492 +G01 X+39.553 Y-0.616 +G01 X+39.585 Y-2.767 +G01 X+39.979 Y-5.24 +G01 X+40.13 Y-7.716 +G01 X+40.07 Y-35.114 +G01 X+39.797 Y-37.222 +G01 X+39.693 Y-37.953 +G01 X+39.69 Y-39.506 +G01 X+39.646 Y-39.612 +G01 X+39.507 Y-39.69 +G01 X+37.603 Y-39.717 +G01 X+35.503 Y-40.031 +G01 X+33.025 Y-40.097 +G01 X+6.736 Y-40.04 +G01 X+4.259 Y-39.778 +G01 X+2.629 Y-39.464 +G01 X+0.69 Y-39.446 +G01 X+0.541 Y-39.295 +G01 X+0.544 Y-37.397 +G01 X+0.098 Y-34.761 +G01 X-0.059 Y-32.284 +G01 X+0.006 Y-4.886 +G01 X+0.29 Y-2.778 +G01 X+0.398 Y-2.048 +G01 X+0.401 Y-0.551 +G01 X+0.551 Y-0.401 +G01 X+2.26 Y-0.403 +G01 X+4.373 Y-0.058 +G01 X+6.552 Y+0.023 +G01 X+33.264 Y-0.039 +G01 X+35.741 Y-0.312 +G01 X+37.58 Y-0.64 +G01 X+39.208 Y-0.644 +G01 X+39.358 Y-0.791 +G01 X+39.391 Y-2.766 +G01 X+39.818 Y-5.239 +G01 X+39.979 Y-7.593 +G01 X+39.915 Y-35.113 +G01 X+39.644 Y-37.099 +G01 X+39.507 Y-37.951 +G01 X+39.504 Y-39.355 +G01 X+39.356 Y-39.505 +G01 X+37.604 Y-39.533 +G01 X+35.627 Y-39.861 +G01 X+33.519 Y-39.945 +G01 X+6.737 Y-39.882 +G01 X+4.39 Y-39.62 +G01 X+2.631 Y-39.258 +G01 X+0.896 Y-39.254 +G01 X+0.747 Y-39.103 +G01 X+0.749 Y-37.398 +G01 X+0.297 Y-35.008 +G01 X+0.103 Y-32.654 +G01 X+0.161 Y-4.887 +G01 X+0.467 Y-2.778 +G01 X+0.583 Y-2.049 +G01 X+0.587 Y-0.741 +G01 X+0.631 Y-0.635 +G01 X+0.741 Y-0.587 +G01 X+2.259 Y-0.588 +G01 X+4.373 Y-0.215 +G01 X+6.552 Y-0.128 +G01 X+33.263 Y-0.191 +G01 X+35.617 Y-0.462 +G01 X+37.579 Y-0.836 +G01 X+39.01 Y-0.84 +G01 X+39.16 Y-0.989 +G01 X+39.168 Y-2.64 +G01 X+39.625 Y-4.992 +G01 X+39.826 Y-7.346 +G01 X+39.767 Y-35.113 +G01 X+39.477 Y-37.099 +G01 X+39.33 Y-37.951 +G01 X+39.322 Y-39.178 +G01 X+39.172 Y-39.327 +G01 X+37.73 Y-39.328 +G01 X+35.751 Y-39.696 +G01 X+33.765 Y-39.801 +G01 X+6.737 Y-39.737 +G01 X+4.39 Y-39.458 +G01 X+2.632 Y-39.072 +G01 X+1.111 Y-39.066 +G01 X+1.006 Y-39.022 +G01 X+0.934 Y-38.888 +G01 X+0.936 Y-37.4 +G01 X+0.472 Y-35.131 +G01 X+0.256 Y-32.909 +G01 X+0.312 Y-4.887 +G01 X+0.585 Y-3.025 +G01 X+0.765 Y-2.05 +G01 X+0.768 Y-0.919 +G01 X+0.919 Y-0.769 +G01 X+2.257 Y-0.77 +G01 X+4.126 Y-0.402 +G01 X+5.988 Y-0.277 +G01 X+33.263 Y-0.348 +G01 X+35.617 Y-0.64 +G01 X+37.578 Y-1.041 +G01 X+38.765 Y-1.046 +G01 X+38.871 Y-1.09 +G01 X+38.954 Y-1.234 +G01 X+38.962 Y-2.639 +G01 X+39.433 Y-4.869 +G01 X+39.658 Y-7.091 +G01 X+39.602 Y-35.112 +G01 X+39.318 Y-36.975 +G01 X+39.132 Y-37.949 +G01 X+39.128 Y-38.978 +G01 X+38.978 Y-39.128 +G01 X+37.731 Y-39.129 +G01 X+35.874 Y-39.509 +G01 X+34.012 Y-39.638 +G01 X+6.738 Y-39.565 +G01 X+4.391 Y-39.264 +G01 X+2.632 Y-38.848 +G01 X+1.307 Y-38.829 +G01 X+1.158 Y-38.679 +G01 X+1.16 Y-37.401 +G01 X+0.672 Y-35.198 +G01 X+0.434 Y-33.033 +G01 X+0.488 Y-4.888 +G01 X+0.783 Y-3.025 +G01 X+0.976 Y-2.051 +G01 X+0.98 Y-1.13 +G01 X+1.13 Y-0.98 +G01 X+2.256 Y-0.982 +G01 X+4.126 Y-0.585 +G01 X+5.988 Y-0.45 +G01 X+33.262 Y-0.528 +G01 X+35.617 Y-0.842 +G01 X+37.578 Y-1.275 +G01 X+38.574 Y-1.294 +G01 X+38.721 Y-1.443 +G01 X+38.73 Y-2.638 +G01 X+39.237 Y-4.868 +G01 X+39.479 Y-7.091 +G01 X+39.438 Y-34.866 +G01 X+39.168 Y-36.728 +G01 X+38.912 Y-37.948 +G01 X+38.907 Y-38.757 +G01 X+38.758 Y-38.907 +G01 X+37.732 Y-38.909 +G01 X+35.875 Y-39.318 +G01 X+34.012 Y-39.458 +G01 X+6.738 Y-39.379 +G01 X+4.638 Y-39.103 +G01 X+2.632 Y-38.605 +G01 X+1.549 Y-38.583 +G01 X+1.401 Y-38.433 +G01 X+1.403 Y-37.402 +G01 X+0.886 Y-35.256 +G01 X+0.619 Y-33.034 +G01 X+0.655 Y-5.135 +G01 X+0.934 Y-3.272 +G01 X+1.201 Y-2.053 +G01 X+1.205 Y-1.358 +G01 X+1.249 Y-1.252 +G01 X+1.359 Y-1.205 +G01 X+2.254 Y-1.206 +G01 X+4.002 Y-0.798 +G01 X+5.734 Y-0.637 +G01 X+33.262 Y-0.715 +G01 X+35.363 Y-1.001 +G01 X+37.578 Y-1.518 +G01 X+38.332 Y-1.54 +G01 X+38.479 Y-1.688 +G01 X+38.488 Y-2.637 +G01 X+39.034 Y-4.868 +G01 X+39.288 Y-6.966 +G01 X+39.274 Y-34.497 +G01 X+39.045 Y-36.351 +G01 X+38.687 Y-37.947 +G01 X+38.683 Y-38.518 +G01 X+38.639 Y-38.624 +G01 X+38.518 Y-38.683 +G01 X+37.734 Y-38.685 +G01 X+35.998 Y-39.104 +G01 X+34.267 Y-39.271 +G01 X+6.985 Y-39.209 +G01 X+4.886 Y-38.944 +G01 X+2.778 Y-38.41 +G01 X+2.637 Y-38.364 +G01 X+1.79 Y-38.337 +G01 X+1.644 Y-38.187 +G01 X+1.645 Y-37.403 +G01 X+1.091 Y-35.256 +G01 X+0.805 Y-33.034 +G01 X+0.792 Y-15.75 +G01 X+0.838 Y-5.135 +G01 X+1.135 Y-3.281 +G01 X+1.418 Y-2.292 +G01 X+1.425 Y-1.605 +G01 X+1.469 Y-1.499 +G01 X+1.605 Y-1.425 +G01 X+2.253 Y-1.426 +G01 X+4.001 Y-0.989 +G01 X+5.733 Y-0.817 +G01 X+33.015 Y-0.877 +G01 X+34.991 Y-1.126 +G01 X+37.099 Y-1.661 +G01 X+37.451 Y-1.751 +G01 X+38.096 Y-1.756 +G01 X+38.245 Y-1.904 +G01 X+38.256 Y-2.636 +G01 X+38.838 Y-4.867 +G01 X+39.11 Y-6.966 +G01 X+39.13 Y-18.704 +G01 X+39.076 Y-34.864 +G01 X+38.77 Y-36.719 +G01 X+38.478 Y-37.709 +G01 X+38.46 Y-38.325 +G01 X+38.31 Y-38.472 +G01 X+37.735 Y-38.474 +G01 X+35.999 Y-38.921 +G01 X+34.267 Y-39.098 +G01 X+6.985 Y-39.037 +G01 X+5.009 Y-38.781 +G01 X+2.901 Y-38.23 +G01 X+2.639 Y-38.141 +G01 X+2.018 Y-38.132 +G01 X+1.868 Y-37.982 +G01 X+1.869 Y-37.405 +G01 X+1.306 Y-35.379 +G01 X+1.004 Y-33.404 +G01 X+0.943 Y-30.958 +G01 X+1.006 Y-5.136 +G01 X+1.321 Y-3.281 +G01 X+1.621 Y-2.293 +G01 X+1.628 Y-1.778 +G01 X+1.778 Y-1.628 +G01 X+2.252 Y-1.629 +G01 X+4.001 Y-1.165 +G01 X+5.733 Y-0.982 +G01 X+33.015 Y-1.042 +G01 X+34.99 Y-1.305 +G01 X+37.099 Y-1.87 +G01 X+37.45 Y-1.965 +G01 X+37.881 Y-1.971 +G01 X+38.031 Y-2.118 +G01 X+38.042 Y-2.635 +G01 X+38.607 Y-4.621 +G01 X+38.917 Y-6.595 +G01 X+38.98 Y-8.951 +G01 X+38.915 Y-34.865 +G01 X+38.655 Y-36.472 +G01 X+38.284 Y-37.707 +G01 X+38.277 Y-38.128 +G01 X+38.128 Y-38.277 +G01 X+37.736 Y-38.28 +G01 X+35.999 Y-38.752 +G01 X+34.391 Y-38.936 +G01 X+6.985 Y-38.88 +G01 X+5.01 Y-38.61 +G01 X+2.901 Y-38.029 +G01 X+2.64 Y-37.936 +G01 X+2.224 Y-37.926 +G01 X+2.074 Y-37.776 +G01 Y-37.406 +G01 X+1.481 Y-35.38 +G01 X+1.163 Y-33.405 +G01 X+1.098 Y-31.203 +G01 X+1.164 Y-5.136 +G01 X+1.431 Y-3.528 +G01 X+1.811 Y-2.294 +G01 X+1.818 Y-1.976 +G01 X+1.862 Y-1.87 +G01 X+1.976 Y-1.818 +G01 X+2.251 Y-1.819 +G01 X+3.878 Y-1.356 +G01 X+5.484 Y-1.147 +G01 X+33.014 Y-1.199 +G01 X+34.99 Y-1.476 +G01 X+37.099 Y-2.071 +G01 X+37.449 Y-2.171 +G01 X+37.654 Y-2.177 +G01 X+37.76 Y-2.22 +G01 X+37.826 Y-2.343 +G01 X+37.837 Y-2.635 +G01 X+38.431 Y-4.62 +G01 X+38.758 Y-6.595 +G01 X+38.825 Y-8.704 +G01 X+38.758 Y-34.864 +G01 X+38.484 Y-36.471 +G01 X+38.094 Y-37.706 +G01 X+38.087 Y-37.901 +G01 X+38.043 Y-38.007 +G01 X+37.902 Y-38.088 +G01 X+37.736 Y-38.091 +G01 X+36.122 Y-38.561 +G01 X+34.516 Y-38.775 +G01 X+6.986 Y-38.722 +G01 X+5.01 Y-38.439 +G01 X+2.901 Y-37.829 +G01 X+2.64 Y-37.73 +G01 X+2.427 Y-37.718 +G01 X+2.279 Y-37.568 +G01 Y-37.407 +G01 X+1.656 Y-35.38 +G01 X+1.321 Y-33.405 +G01 X+1.253 Y-31.203 +G01 X+1.321 Y-5.136 +G01 X+1.602 Y-3.529 +G01 X+2.003 Y-2.287 +G01 X+2.022 Y-2.142 +G01 X+2.172 Y-2.008 +G01 X+2.293 Y-2.002 +G01 X+3.877 Y-1.522 +G01 X+5.484 Y-1.303 +G01 X+33.014 Y-1.356 +G01 X+34.989 Y-1.647 +G01 X+37.099 Y-2.271 +G01 X+37.366 Y-2.375 +G01 X+37.492 Y-2.394 +G01 X+37.626 Y-2.534 +G01 X+37.632 Y-2.636 +G01 X+38.256 Y-4.62 +G01 X+38.599 Y-6.595 +G01 X+38.67 Y-8.704 +G01 X+38.6 Y-34.863 +G01 X+38.313 Y-36.471 +G01 X+37.904 Y-37.705 +G01 X+37.752 Y-37.9 +G01 X+36.123 Y-38.394 +G01 X+34.517 Y-38.619 +G01 X+6.986 Y-38.565 +G01 X+5.01 Y-38.268 +G01 X+3.148 Y-37.721 +G01 X+2.616 Y-37.515 +G01 X+2.485 Y-37.384 +G01 X+1.83 Y-35.38 +G01 X+1.478 Y-33.406 +G01 X+1.406 Y-31.203 +G01 X+1.465 Y-5.137 +G01 X+1.757 Y-3.529 +G01 X+2.17 Y-2.305 +G01 X+2.246 Y-2.207 +G01 X+3.877 Y-1.673 +G01 X+5.483 Y-1.443 +G01 X+32.891 Y-1.478 +G01 X+34.743 Y-1.734 +G01 X+36.722 Y-2.296 +G01 X+37.346 Y-2.536 +G01 X+37.45 Y-2.634 +G01 X+38.114 Y-4.62 +G01 X+38.471 Y-6.594 +G01 X+38.545 Y-8.704 +G01 X+38.496 Y-34.74 +G01 X+38.222 Y-36.346 +G01 X+37.753 Y-37.688 +G01 X+37.657 Y-37.781 +G01 X+36.123 Y-38.274 +G01 X+34.517 Y-38.507 +G01 X+7.109 Y-38.472 +G01 X+5.257 Y-38.212 +G01 X+3.278 Y-37.643 +G01 X+2.677 Y-37.408 +G01 X+2.592 Y-37.323 +G01 X+2.363 Y-36.735 +G01 X+1.795 Y-34.763 +G01 X+1.535 Y-32.911 +G01 X+1.527 Y-5.506 +G01 X+1.759 Y-3.908 +G01 X+2.256 Y-2.367 +G01 X+2.35 Y-2.272 +G01 X+3.638 Y-1.827 +G01 X+5.237 Y-1.549 +G01 X+31.296 Y-1.526 +G01 X+33.378 Y-1.601 +G01 X+35.345 Y-1.962 +G01 X+37.257 Y-2.605 +G01 X+37.346 Y-2.687 +G01 X+37.609 Y-3.285 +G01 X+38.176 Y-5.25 +G01 X+38.437 Y-7.093 +G01 X+38.445 Y-34.491 +G01 X+38.214 Y-36.079 +G01 X+37.715 Y-37.62 +G01 X+37.62 Y-37.715 +G01 X+36.346 Y-38.147 +G01 X+34.758 Y-38.423 +G01 X+8.552 Y-38.446 +G01 X+6.628 Y-38.371 +G01 X+4.671 Y-38.01 +G01 X+2.735 Y-37.354 +G01 X+2.643 Y-37.266 +G01 X+2.418 Y-36.689 +G01 X+1.855 Y-34.736 +G01 X+1.597 Y-32.903 +G01 X+1.622 Y-5.517 +G01 X+1.852 Y-3.954 +G01 X+2.342 Y-2.452 +G01 X+2.435 Y-2.357 +G01 X+3.692 Y-1.922 +G01 X+5.254 Y-1.651 +G01 X+31.296 Y-1.66 +G01 X+33.349 Y-1.737 +G01 X+35.269 Y-2.098 +G01 X+37.127 Y-2.737 +G01 X+37.215 Y-2.818 +G01 X+37.473 Y-3.4 +G01 X+38.033 Y-5.313 +G01 X+38.29 Y-7.113 +G01 X+38.265 Y-34.47 +G01 X+38.04 Y-35.992 +G01 X+37.556 Y-37.462 +G01 X+37.462 Y-37.557 +G01 X+36.363 Y-37.939 +G01 X+34.845 Y-38.226 +G01 X+8.552 Y-38.227 +G01 X+6.676 Y-38.15 +G01 X+4.794 Y-37.79 +G01 X+2.945 Y-37.142 +G01 X+2.855 Y-37.057 +G01 X+2.634 Y-36.507 +G01 X+2.079 Y-34.637 +G01 X+1.823 Y-32.872 +G01 X+1.848 Y-5.543 +G01 X+2.069 Y-4.062 +G01 X+2.538 Y-2.646 +G01 X+2.63 Y-2.552 +G01 X+3.7 Y-2.168 +G01 X+5.177 Y-1.887 +G01 X+31.296 Y-1.886 +G01 X+33.299 Y-1.963 +G01 X+35.144 Y-2.321 +G01 X+36.918 Y-2.949 +G01 X+37.005 Y-3.028 +G01 X+37.256 Y-3.581 +G01 X+37.809 Y-5.412 +G01 X+38.064 Y-7.144 +G01 X+38.039 Y-34.445 +G01 X+37.823 Y-35.884 +G01 X+37.36 Y-37.267 +G01 X+37.268 Y-37.361 +G01 X+36.236 Y-37.725 +G01 X+34.801 Y-38.001 +G01 X+8.552 Y-38 +G01 X+6.725 Y-37.924 +G01 X+4.918 Y-37.568 +G01 X+3.154 Y-36.93 +G01 X+3.067 Y-36.847 +G01 X+2.851 Y-36.326 +G01 X+2.303 Y-34.538 +G01 X+2.049 Y-32.84 +G01 X+2.074 Y-5.568 +G01 X+2.286 Y-4.17 +G01 X+2.734 Y-2.84 +G01 X+2.825 Y-2.747 +G01 X+3.827 Y-2.382 +G01 X+5.221 Y-2.111 +G01 X+31.296 Y-2.113 +G01 X+33.25 Y-2.189 +G01 X+35.02 Y-2.544 +G01 X+36.711 Y-3.161 +G01 X+36.795 Y-3.239 +G01 X+37.039 Y-3.763 +G01 X+37.584 Y-5.511 +G01 X+37.838 Y-7.175 +G01 X+37.819 Y-34.315 +G01 X+37.63 Y-35.671 +G01 X+37.164 Y-37.072 +G01 X+37.072 Y-37.165 +G01 X+36.109 Y-37.512 +G01 X+34.757 Y-37.776 +G01 X+8.552 Y-37.774 +G01 X+6.775 Y-37.698 +G01 X+5.042 Y-37.345 +G01 X+3.364 Y-36.719 +G01 X+3.278 Y-36.637 +G01 X+3.068 Y-36.144 +G01 X+2.528 Y-34.439 +G01 X+2.275 Y-32.809 +G01 X+2.294 Y-5.695 +G01 X+2.479 Y-4.38 +G01 X+2.93 Y-3.035 +G01 X+3.02 Y-2.942 +G01 X+3.954 Y-2.595 +G01 X+5.265 Y-2.336 +G01 X+31.296 Y-2.339 +G01 X+33.2 Y-2.415 +G01 X+34.896 Y-2.767 +G01 X+36.503 Y-3.373 +G01 X+36.585 Y-3.449 +G01 X+36.823 Y-3.944 +G01 X+37.36 Y-5.611 +G01 X+37.612 Y-7.206 +G01 X+37.593 Y-34.295 +G01 X+37.412 Y-35.569 +G01 X+36.968 Y-36.878 +G01 X+36.879 Y-36.97 +G01 X+36.176 Y-37.238 +G01 X+34.714 Y-37.551 +G01 X+8.552 Y-37.547 +G01 X+6.824 Y-37.472 +G01 X+5.166 Y-37.122 +G01 X+3.573 Y-36.507 +G01 X+3.49 Y-36.428 +G01 X+3.284 Y-35.963 +G01 X+2.752 Y-34.34 +G01 X+2.501 Y-32.778 +G01 X+2.517 Y-5.809 +G01 X+2.697 Y-4.482 +G01 X+3.126 Y-3.227 +G01 X+3.213 Y-3.137 +G01 X+3.894 Y-2.867 +G01 X+5.307 Y-2.561 +G01 X+31.296 Y-2.565 +G01 X+33.15 Y-2.641 +G01 X+34.772 Y-2.989 +G01 X+36.299 Y-3.587 +G01 X+36.375 Y-3.653 +G01 X+36.477 Y-3.833 +G01 X+37.083 Y-5.508 +G01 X+37.377 Y-7.133 +G01 X+37.37 Y-34.184 +G01 X+37.194 Y-35.467 +G01 X+36.772 Y-36.684 +G01 X+36.685 Y-36.774 +G01 X+36.035 Y-37.027 +G01 X+34.671 Y-37.327 +G01 X+8.552 Y-37.321 +G01 X+6.874 Y-37.246 +G01 X+5.29 Y-36.899 +G01 X+3.781 Y-36.295 +G01 X+3.702 Y-36.22 +G01 X+3.627 Y-36.063 +G01 X+3.028 Y-34.438 +G01 X+2.736 Y-32.849 +G01 X+2.743 Y-5.823 +G01 X+2.915 Y-4.584 +G01 X+3.322 Y-3.421 +G01 X+3.408 Y-3.332 +G01 X+4.035 Y-3.078 +G01 X+5.351 Y-2.786 +G01 X+31.296 Y-2.792 +G01 X+33.101 Y-2.867 +G01 X+34.648 Y-3.212 +G01 X+36.092 Y-3.799 +G01 X+36.263 Y-4.031 +G01 X+36.859 Y-5.617 +G01 X+37.151 Y-7.169 +G01 X+37.146 Y-34.086 +G01 X+36.996 Y-35.28 +G01 X+36.576 Y-36.489 +G01 X+36.49 Y-36.579 +G01 X+35.895 Y-36.817 +G01 X+34.627 Y-37.102 +G01 X+8.552 Y-37.094 +G01 X+6.924 Y-37.02 +G01 X+5.415 Y-36.677 +G01 X+3.99 Y-36.083 +G01 X+3.914 Y-36.011 +G01 X+3.841 Y-35.865 +G01 X+3.252 Y-34.329 +G01 X+2.962 Y-32.814 +G01 X+2.967 Y-5.918 +G01 X+3.114 Y-4.768 +G01 X+3.519 Y-3.615 +G01 X+3.603 Y-3.527 +G01 X+4.175 Y-3.289 +G01 X+5.395 Y-3.01 +G01 X+31.543 Y-3.019 +G01 X+33.052 Y-3.093 +G01 X+34.523 Y-3.435 +G01 X+35.884 Y-4.011 +G01 X+36.049 Y-4.23 +G01 X+36.636 Y-5.725 +G01 X+36.925 Y-7.204 +G01 X+36.92 Y-34.078 +G01 X+36.777 Y-35.185 +G01 X+36.38 Y-36.295 +G01 X+36.296 Y-36.383 +G01 X+35.754 Y-36.606 +G01 X+34.583 Y-36.877 +G01 X+8.552 Y-36.868 +G01 X+6.973 Y-36.794 +G01 X+5.539 Y-36.454 +G01 X+4.199 Y-35.871 +G01 X+4.055 Y-35.667 +G01 X+3.476 Y-34.221 +G01 X+3.188 Y-32.778 +G01 X+3.192 Y-6.002 +G01 X+3.333 Y-4.864 +G01 X+3.715 Y-3.808 +G01 X+3.797 Y-3.722 +G01 X+4.315 Y-3.5 +G01 X+5.439 Y-3.235 +G01 X+31.296 Y-3.245 +G01 X+32.913 Y-3.307 +G01 X+34.228 Y-3.601 +G01 X+35.676 Y-4.224 +G01 X+35.835 Y-4.428 +G01 X+36.411 Y-5.834 +G01 X+36.699 Y-7.239 +G01 X+36.694 Y-33.998 +G01 X+36.557 Y-35.089 +G01 X+36.184 Y-36.101 +G01 X+36.102 Y-36.187 +G01 X+35.614 Y-36.395 +G01 X+34.54 Y-36.652 +G01 X+8.552 Y-36.642 +G01 X+7.023 Y-36.568 +G01 X+5.663 Y-36.231 +G01 X+4.407 Y-35.659 +G01 X+4.269 Y-35.469 +G01 X+3.701 Y-34.112 +G01 X+3.414 Y-32.743 +G01 X+3.419 Y-6.242 +G01 X+3.536 Y-5.03 +G01 X+3.911 Y-4 +G01 X+3.989 Y-3.916 +G01 X+4.324 Y-3.762 +G01 X+5.34 Y-3.48 +G01 X+29.568 Y-3.468 +G01 X+32.696 Y-3.513 +G01 X+34.113 Y-3.824 +G01 X+35.469 Y-4.436 +G01 X+35.621 Y-4.627 +G01 X+36.187 Y-5.942 +G01 X+36.473 Y-7.275 +G01 X+36.468 Y-33.688 +G01 X+36.37 Y-34.859 +G01 X+35.987 Y-35.909 +G01 X+35.911 Y-35.992 +G01 X+35.724 Y-36.081 +G01 X+34.633 Y-36.407 +G01 X+8.552 Y-36.415 +G01 X+7.073 Y-36.342 +G01 X+5.788 Y-36.009 +G01 X+4.615 Y-35.447 +G01 X+4.484 Y-35.27 +G01 X+3.925 Y-34.003 +G01 X+3.64 Y-32.708 +G01 X+3.645 Y-6.242 +G01 X+3.756 Y-5.119 +G01 X+4.108 Y-4.192 +G01 X+4.182 Y-4.112 +G01 X+4.418 Y-3.995 +G01 X+5.395 Y-3.704 +G01 X+29.568 Y-3.695 +G01 X+32.66 Y-3.739 +G01 X+33.998 Y-4.048 +G01 X+35.263 Y-4.649 +G01 X+35.406 Y-4.825 +G01 X+35.963 Y-6.051 +G01 X+36.247 Y-7.31 +G01 X+36.242 Y-33.688 +G01 X+36.149 Y-34.776 +G01 X+35.791 Y-35.716 +G01 X+35.718 Y-35.796 +G01 X+35.557 Y-35.877 +G01 X+34.577 Y-36.183 +G01 X+8.797 Y-36.189 +G01 X+7.201 Y-36.128 +G01 X+5.985 Y-35.814 +G01 X+4.823 Y-35.234 +G01 X+4.698 Y-35.072 +G01 X+4.149 Y-33.895 +G01 X+3.866 Y-32.673 +G01 X+3.872 Y-6.242 +G01 X+3.962 Y-5.265 +G01 X+4.304 Y-4.385 +G01 X+4.375 Y-4.307 +G01 X+4.578 Y-4.201 +G01 X+5.451 Y-3.928 +G01 X+29.815 Y-3.922 +G01 X+32.624 Y-3.965 +G01 X+33.813 Y-4.245 +G01 X+34.944 Y-4.789 +G01 X+35.181 Y-5.016 +G01 X+35.739 Y-6.159 +G01 X+36.021 Y-7.345 +G01 X+36.015 Y-33.688 +G01 X+35.927 Y-34.692 +G01 X+35.595 Y-35.524 +G01 X+35.526 Y-35.6 +G01 X+35.39 Y-35.672 +G01 X+34.521 Y-35.959 +G01 X+8.797 Y-35.962 +G01 X+7.247 Y-35.901 +G01 X+6.105 Y-35.591 +G01 X+5.031 Y-35.021 +G01 X+4.912 Y-34.874 +G01 X+4.373 Y-33.787 +G01 X+4.092 Y-32.638 +G01 X+4.098 Y-6.481 +G01 X+4.171 Y-5.4 +G01 X+4.479 Y-4.613 +G01 X+4.688 Y-4.436 +G01 X+5.506 Y-4.153 +G01 X+32.47 Y-4.178 +G01 X+33.569 Y-4.42 +G01 X+34.635 Y-4.931 +G01 X+34.964 Y-5.214 +G01 X+35.514 Y-6.268 +G01 X+35.794 Y-7.38 +G01 X+35.789 Y-33.688 +G01 X+35.718 Y-34.562 +G01 X+35.422 Y-35.295 +G01 X+35.228 Y-35.462 +G01 X+34.466 Y-35.735 +G01 X+8.552 Y-35.736 +G01 X+7.292 Y-35.675 +G01 X+6.225 Y-35.368 +G01 X+5.237 Y-34.808 +G01 X+5.127 Y-34.676 +G01 X+4.598 Y-33.678 +G01 X+4.319 Y-32.603 +G01 X+4.324 Y-6.728 +G01 X+4.373 Y-5.567 +G01 X+4.678 Y-4.799 +G01 X+4.856 Y-4.64 +G01 X+5.561 Y-4.378 +G01 X+32.348 Y-4.395 +G01 X+33.405 Y-4.622 +G01 X+34.397 Y-5.112 +G01 X+34.751 Y-5.413 +G01 X+35.29 Y-6.376 +G01 X+35.568 Y-7.414 +G01 X+35.538 Y-34.276 +G01 X+35.281 Y-35.015 +G01 X+35.101 Y-35.225 +G01 X+34.412 Y-35.509 +G01 X+8.552 +G01 X+7.338 Y-35.449 +G01 X+6.345 Y-35.146 +G01 X+5.443 Y-34.594 +G01 X+5.342 Y-34.478 +G01 X+4.823 Y-33.57 +G01 X+4.545 Y-32.568 +G01 X+4.569 Y-5.784 +G01 X+4.784 Y-5.131 +G01 X+4.985 Y-4.879 +G01 X+5.616 Y-4.603 +G01 X+32.009 Y-4.605 +G01 X+33.01 Y-4.748 +G01 X+33.969 Y-5.166 +G01 X+34.536 Y-5.612 +G01 X+35.065 Y-6.484 +G01 X+35.342 Y-7.449 +G01 X+35.334 Y-34.023 +G01 X+35.192 Y-34.637 +G01 X+34.928 Y-35.015 +G01 X+34.357 Y-35.284 +G01 X+8.552 Y-35.283 +G01 X+7.384 Y-35.223 +G01 X+6.465 Y-34.923 +G01 X+5.649 Y-34.38 +G01 X+5.557 Y-34.28 +G01 X+5.048 Y-33.462 +G01 X+4.772 Y-32.534 +G01 X+4.778 Y-6.009 +G01 X+4.844 Y-5.6 +G01 X+5.113 Y-5.129 +G01 X+5.669 Y-4.831 +G01 X+32.008 Y-4.832 +G01 X+32.852 Y-4.949 +G01 X+33.673 Y-5.296 +G01 X+34.325 Y-5.812 +G01 X+34.84 Y-6.592 +G01 X+35.115 Y-7.484 +G01 X+35.109 Y-33.927 +G01 X+35.055 Y-34.327 +G01 X+34.792 Y-34.776 +G01 X+34.305 Y-35.055 +G01 X+8.552 Y-35.056 +G01 X+7.43 Y-34.997 +G01 X+6.559 Y-34.684 +G01 X+5.843 Y-34.157 +G00 Z-0.745 +G00 X-1.95 Y-40 +G00 Z-5.745 +G01 Z-6.97 F10000 +G01 X-1.904 Y+0.391 F12000 +G01 X-1.609 Y+1.091 +G01 X-1.069 Y+1.624 +G01 X-0.359 Y+1.913 +G01 X-0.007 Y+1.949 +G01 X+40.391 Y+1.904 +G01 X+41.091 Y+1.609 +G01 X+41.624 Y+1.069 +G01 X+41.913 Y+0.359 +G01 X+41.949 Y+0.007 +G01 X+41.904 Y-40.391 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-0.544 Y-41.85 +G01 X-0.685 Y-41.817 +G01 X-1.135 Y-41.576 +G01 X-1.361 Y-41.386 +G01 X-1.727 Y-40.885 +G01 X-1.862 Y-40.55 +G01 X-1.94 Y-40.01 +G01 X-1.886 Y+0 +G01 X-1.88 Y+0.112 +G01 X-1.761 Y+0.663 +G01 X-1.538 Y+1.083 +G01 X-0.831 Y+1.683 +G01 X-0.56 Y+1.796 +G01 X+0.302 Y+1.881 +G01 X+40.082 Y+1.812 +G01 X+40.496 Y+1.743 +G01 X+40.799 Y+1.627 +G01 X+41.056 Y+1.473 +G01 X+41.273 Y+1.29 +G01 X+41.45 Y+1.085 +G01 X+41.722 Y+0.547 +G01 X+41.81 Y-0.556 +G01 X+41.788 Y-36.481 +G01 X+41.765 Y-40 +G01 X+41.691 Y-40.496 +G01 X+41.596 Y-40.749 +G01 X+41.429 Y-41.031 +G01 X+41.255 Y-41.236 +G01 X+40.99 Y-41.456 +G01 X+40.667 Y-41.628 +G01 X+39.701 Y-41.759 +G01 X+6.177 Y-41.749 +G01 X+2.616 Y-41.688 +G01 X+0 Y-41.684 +G01 X-0.59 Y-41.573 +G01 X-0.981 Y-41.365 +G01 X-1.176 Y-41.201 +G01 X-1.493 Y-40.768 +G01 X-1.61 Y-40.478 +G01 X-1.679 Y-40.01 +G01 X-1.73 Y-26.235 +G01 X-1.668 Y-3.025 +G01 X-1.643 Y+0 +G01 X-1.535 Y+0.576 +G01 X-1.342 Y+0.941 +G01 X-0.727 Y+1.465 +G01 X-0.491 Y+1.564 +G01 X+0.309 Y+1.64 +G01 X+11.79 Y+1.683 +G01 X+35.37 Y+1.618 +G01 X+39.568 Y+1.554 +G01 X+40.068 Y+1.551 +G01 X+40.422 Y+1.492 +G01 X+40.682 Y+1.393 +G01 X+40.902 Y+1.261 +G01 X+41.088 Y+1.104 +G01 X+41.239 Y+0.931 +G01 X+41.471 Y+0.472 +G01 X+41.549 Y-0.556 +G01 X+41.603 Y-4.63 +G01 X+41.626 Y-18.457 +G01 X+41.563 Y-36.728 +G01 X+41.522 Y-40 +G01 X+41.459 Y-40.426 +G01 X+41.377 Y-40.645 +G01 X+41.234 Y-40.888 +G01 X+41.084 Y-41.065 +G01 X+40.855 Y-41.255 +G01 X+40.58 Y-41.402 +G01 X+39.575 Y-41.518 +G01 X+35.741 Y-41.575 +G01 X+5.247 Y-41.524 +G01 X+2.616 Y-41.426 +G01 X+0 Y-41.422 +G01 X-0.495 Y-41.329 +G01 X-0.826 Y-41.154 +G01 X-0.991 Y-41.016 +G01 X-1.259 Y-40.651 +G01 X-1.359 Y-40.406 +G01 X-1.418 Y-40.01 +G01 X-1.454 Y-36.481 +G01 X-1.538 Y-30.958 +G01 X-1.466 Y-3.642 +G01 X-1.402 Y-0.802 +G01 X-1.401 Y+0 +G01 X-1.309 Y+0.488 +G01 X-1.146 Y+0.798 +G01 X-0.623 Y+1.247 +G01 X-0.423 Y+1.332 +G01 X+0.432 Y+1.398 +G01 X+3.272 Y+1.441 +G01 X+8.58 Y+1.489 +G01 X+34.63 Y+1.421 +G01 X+38.333 Y+1.294 +G01 X+40.054 Y+1.289 +G01 X+40.348 Y+1.241 +G01 X+40.565 Y+1.159 +G01 X+40.748 Y+1.049 +G01 X+40.903 Y+0.919 +G01 X+41.028 Y+0.776 +G01 X+41.22 Y+0.398 +G01 X+41.287 Y-0.679 +G01 X+41.333 Y-3.519 +G01 X+41.44 Y-8.21 +G01 X+41.373 Y-35.988 +G01 X+41.282 Y-38.704 +G01 X+41.28 Y-40 +G01 X+41.227 Y-40.356 +G01 X+41.159 Y-40.54 +G01 X+41.042 Y-40.739 +G01 X+40.725 Y-41.049 +G01 X+40.492 Y-41.176 +G01 X+39.568 Y-41.277 +G01 X+36.975 Y-41.318 +G01 X+33.025 Y-41.392 +G01 X+5.741 Y-41.326 +G01 X+2.616 Y-41.164 +G01 X+0 Y-41.16 +G01 X-0.4 Y-41.085 +G01 X-0.671 Y-40.942 +G01 X-0.802 Y-40.835 +G01 X-1.089 Y-40.383 +G01 X-1.156 Y-40.01 +G01 X-1.19 Y-36.852 +G01 X-1.341 Y-32.407 +G01 X-1.273 Y-4.136 +G01 X-1.161 Y-1.543 +G01 X-1.159 Y+0 +G01 X-1.084 Y+0.4 +G01 X-0.95 Y+0.656 +G01 X-0.518 Y+1.028 +G01 X-0.355 Y+1.1 +G01 X+0.556 Y+1.156 +G01 X+2.901 Y+1.198 +G01 X+6.552 Y+1.294 +G01 X+34.259 Y+1.222 +G01 X+38.086 Y+1.032 +G01 X+40.041 Y+1.028 +G01 X+40.268 Y+0.991 +G01 X+40.588 Y+0.84 +G01 X+40.718 Y+0.734 +G01 X+40.817 Y+0.621 +G01 X+40.969 Y+0.324 +G01 X+41.025 Y-0.926 +G01 X+41.065 Y-3.148 +G01 X+41.238 Y-7.099 +G01 X+41.168 Y-35.864 +G01 X+41.04 Y-38.333 +G01 X+41.038 Y-40 +G01 X+40.996 Y-40.286 +G01 X+40.942 Y-40.43 +G01 X+40.745 Y-40.717 +G01 X+40.587 Y-40.853 +G01 X+40.405 Y-40.951 +G01 X+39.568 Y-41.035 +G01 X+37.222 Y-41.074 +G01 X+34.012 Y-41.196 +G01 X+5.988 Y-41.127 +G01 X+2.616 Y-40.902 +G01 X+0 Y-40.898 +G01 X-0.299 Y-40.842 +G01 X-0.605 Y-40.653 +G01 X-0.842 Y-40.28 +G01 X-0.893 Y-38.333 +G01 X-0.939 Y-36.852 +G01 X-1.135 Y-33.025 +G01 X-1.072 Y-4.383 +G01 X-0.915 Y-1.667 +G01 X-0.912 Y+0 +G01 X-0.854 Y+0.31 +G01 X-0.751 Y+0.511 +G01 X-0.412 Y+0.806 +G01 X-0.285 Y+0.863 +G01 X+0.926 Y+0.909 +G01 X+2.778 Y+0.954 +G01 X+5.864 Y+1.093 +G01 X+33.823 Y+1.023 +G01 X+37.346 Y+0.766 +G01 X+40.173 Y+0.727 +G01 X+40.514 Y+0.548 +G01 X+40.598 Y+0.461 +G01 X+40.709 Y+0.247 +G01 X+40.806 Y-3.148 +G01 X+41.022 Y-6.728 +G01 X+40.968 Y-35.494 +G01 X+40.785 Y-38.21 +G01 X+40.782 Y-39.983 +G01 X+40.714 Y-40.301 +G01 X+40.452 Y-40.629 +G01 X+40.313 Y-40.713 +G01 X+39.444 Y-40.78 +G01 X+37.346 Y-40.818 +G01 X+34.506 Y-40.983 +G01 X+6.235 Y-40.916 +G01 X+2.901 Y-40.656 +G01 X+2.625 Y-40.622 +G01 X+0.014 Y-40.617 +G01 X-0.195 Y-40.58 +G01 X-0.407 Y-40.455 +G01 X-0.573 Y-40.203 +G01 X-0.673 Y-36.852 +G01 X-0.912 Y-33.395 +G01 X-0.861 Y-4.506 +G01 X-0.66 Y-1.79 +G01 X-0.657 Y-0.014 +G01 X-0.616 Y+0.215 +G01 X-0.545 Y+0.361 +G01 X-0.302 Y+0.576 +G01 X-0.163 Y+0.629 +G01 X+2.654 Y+0.698 +G01 X+5.37 Y+0.879 +G01 X+33.642 Y+0.819 +G01 X+36.852 Y+0.559 +G01 X+37.84 Y+0.49 +G01 X+40.096 Y+0.467 +G01 X+40.322 Y+0.356 +G01 X+40.4 Y+0.27 +G01 X+40.45 Y+0.17 +G01 X+40.518 Y-2.901 +G01 X+40.791 Y-6.111 +G01 X+40.829 Y-11.438 +G01 X+40.759 Y-35.494 +G01 X+40.539 Y-38.21 +G01 X+40.536 Y-39.983 +G01 X+40.492 Y-40.194 +G01 X+40.316 Y-40.424 +G01 X+40.226 Y-40.482 +G01 X+38.704 Y-40.533 +G01 X+37.346 Y-40.581 +G01 X+34.753 Y-40.777 +G01 X+6.358 Y-40.717 +G01 X+3.272 Y-40.45 +G01 X+2.626 Y-40.361 +G01 X+0.03 Y-40.355 +G01 X-0.193 Y-40.275 +G01 X-0.275 Y-40.193 +G01 X-0.344 Y-40.027 +G01 X-0.39 Y-37.099 +G01 X-0.682 Y-34.012 +G01 X-0.731 Y-29.976 +G01 X-0.653 Y-4.513 +G01 X-0.414 Y-1.92 +G01 X-0.41 Y-0.014 +G01 X-0.387 Y+0.126 +G01 X-0.303 Y+0.261 +G01 X-0.156 Y+0.366 +G01 X+2.407 Y+0.426 +G01 X+4.869 Y+0.659 +G01 X+33.635 Y+0.608 +G01 X+36.728 Y+0.317 +G01 X+37.716 Y+0.219 +G01 X+40.055 Y+0.175 +G01 X+40.181 Y+0.102 +G01 X+40.253 Y-2.901 +G01 X+40.57 Y-5.981 +G01 X+40.626 Y-9.691 +G01 X+40.558 Y-35.239 +G01 X+40.307 Y-37.585 +G01 X+40.281 Y-39.965 +G01 X+40.189 Y-40.179 +G01 X+40.058 Y-40.261 +G01 X+37.599 Y-40.298 +G01 X+35.131 Y-40.55 +G01 X+6.612 Y-40.511 +G01 X+3.642 Y-40.238 +G01 X+2.627 Y-40.081 +G01 X+0.247 Y-40.075 +G01 X+0.141 Y-40.031 +G01 X-0.032 Y-39.858 +G01 X-0.076 Y-39.754 +G01 X-0.119 Y-37.106 +G01 X-0.446 Y-34.266 +G01 X-0.524 Y-31.203 +G01 X-0.46 Y-4.761 +G01 X-0.192 Y-2.415 +G01 X-0.165 Y-0.023 +G01 X-0.081 Y+0.125 +G01 X+0.029 Y+0.165 +G01 X+2.4 Y+0.185 +G01 X+4.745 Y+0.448 +G01 X+11.543 Y+0.479 +G01 X+33.388 Y+0.423 +G01 X+36.111 Y+0.171 +G01 X+37.708 Y-0.033 +G01 X+39.817 Y-0.06 +G01 X+39.965 Y-0.207 +G01 X+40.01 Y-2.893 +G01 X+40.347 Y-5.61 +G01 X+40.44 Y-8.457 +G01 X+40.373 Y-35.238 +G01 X+40.089 Y-37.584 +G01 X+40.062 Y-39.909 +G01 X+39.913 Y-40.058 +G01 X+37.601 Y-40.082 +G01 X+35.255 Y-40.361 +G01 X+29.892 Y-40.395 +G01 X+6.612 Y-40.336 +G01 X+3.889 Y-40.07 +G01 X+2.628 Y-39.856 +G01 X+0.299 Y-39.851 +G01 X+0.149 Y-39.701 +G01 X+0.152 Y-37.395 +G01 X-0.224 Y-34.76 +G01 X-0.357 Y-32.037 +G01 X-0.297 Y-4.885 +G01 X-0.035 Y-2.654 +G01 X+0.036 Y-1.914 +G01 X+0.06 Y-0.185 +G01 X+0.208 Y-0.037 +G01 X+2.399 Y-0.015 +G01 X+4.744 Y+0.279 +G01 X+9.321 Y+0.316 +G01 X+33.388 Y+0.257 +G01 X+35.988 Y-0.004 +G01 X+37.581 Y-0.247 +G01 X+39.6 Y-0.251 +G01 X+39.75 Y-0.4 +G01 X+39.778 Y-2.768 +G01 X+40.152 Y-5.363 +G01 X+40.279 Y-7.963 +G01 X+40.218 Y-35.114 +G01 X+39.944 Y-37.346 +G01 X+39.869 Y-38.079 +G01 X+39.867 Y-39.718 +G01 X+39.718 Y-39.868 +G01 X+37.602 Y-39.891 +G01 X+35.256 Y-40.199 +G01 X+31.118 Y-40.239 +G01 X+6.613 Y-40.177 +G01 X+4.012 Y-39.904 +G01 X+2.629 Y-39.651 +G01 X+0.504 Y-39.646 +G01 X+0.354 Y-39.496 +G01 X+0.357 Y-37.396 +G01 X-0.056 Y-34.761 +G01 X-0.202 Y-32.037 +G01 X-0.142 Y-4.886 +G01 X+0.121 Y-2.778 +G01 X+0.221 Y-2.047 +G01 X+0.224 Y-0.373 +G01 X+0.372 Y-0.223 +G01 X+2.398 Y-0.198 +G01 X+4.497 Y+0.105 +G01 X+7.042 Y+0.167 +G01 X+33.264 Y+0.111 +G01 X+35.741 Y-0.14 +G01 X+37.581 Y-0.443 +G01 X+39.382 Y-0.448 +G01 X+39.488 Y-0.492 +G01 X+39.553 Y-0.616 +G01 X+39.585 Y-2.767 +G01 X+39.979 Y-5.24 +G01 X+40.13 Y-7.716 +G01 X+40.07 Y-35.114 +G01 X+39.797 Y-37.222 +G01 X+39.693 Y-37.953 +G01 X+39.69 Y-39.506 +G01 X+39.646 Y-39.612 +G01 X+39.507 Y-39.69 +G01 X+37.603 Y-39.717 +G01 X+35.503 Y-40.031 +G01 X+33.025 Y-40.097 +G01 X+6.736 Y-40.04 +G01 X+4.259 Y-39.778 +G01 X+2.629 Y-39.464 +G01 X+0.69 Y-39.446 +G01 X+0.541 Y-39.295 +G01 X+0.544 Y-37.397 +G01 X+0.098 Y-34.761 +G01 X-0.059 Y-32.284 +G01 X+0.006 Y-4.886 +G01 X+0.29 Y-2.778 +G01 X+0.398 Y-2.048 +G01 X+0.401 Y-0.551 +G01 X+0.551 Y-0.401 +G01 X+2.26 Y-0.403 +G01 X+4.373 Y-0.058 +G01 X+6.552 Y+0.023 +G01 X+33.264 Y-0.039 +G01 X+35.741 Y-0.312 +G01 X+37.58 Y-0.64 +G01 X+39.208 Y-0.644 +G01 X+39.358 Y-0.791 +G01 X+39.391 Y-2.766 +G01 X+39.818 Y-5.239 +G01 X+39.979 Y-7.593 +G01 X+39.915 Y-35.113 +G01 X+39.644 Y-37.099 +G01 X+39.507 Y-37.951 +G01 X+39.504 Y-39.355 +G01 X+39.356 Y-39.505 +G01 X+37.604 Y-39.533 +G01 X+35.627 Y-39.861 +G01 X+33.519 Y-39.945 +G01 X+6.737 Y-39.882 +G01 X+4.39 Y-39.62 +G01 X+2.631 Y-39.258 +G01 X+0.896 Y-39.254 +G01 X+0.747 Y-39.103 +G01 X+0.749 Y-37.398 +G01 X+0.297 Y-35.008 +G01 X+0.103 Y-32.654 +G01 X+0.161 Y-4.887 +G01 X+0.467 Y-2.778 +G01 X+0.583 Y-2.049 +G01 X+0.587 Y-0.741 +G01 X+0.631 Y-0.635 +G01 X+0.741 Y-0.587 +G01 X+2.259 Y-0.588 +G01 X+4.373 Y-0.215 +G01 X+6.552 Y-0.128 +G01 X+33.263 Y-0.191 +G01 X+35.617 Y-0.462 +G01 X+37.579 Y-0.836 +G01 X+39.01 Y-0.84 +G01 X+39.16 Y-0.989 +G01 X+39.168 Y-2.64 +G01 X+39.625 Y-4.992 +G01 X+39.826 Y-7.346 +G01 X+39.767 Y-35.113 +G01 X+39.477 Y-37.099 +G01 X+39.33 Y-37.951 +G01 X+39.322 Y-39.178 +G01 X+39.172 Y-39.327 +G01 X+37.73 Y-39.328 +G01 X+35.751 Y-39.696 +G01 X+33.765 Y-39.801 +G01 X+6.737 Y-39.737 +G01 X+4.39 Y-39.458 +G01 X+2.632 Y-39.072 +G01 X+1.111 Y-39.066 +G01 X+1.006 Y-39.022 +G01 X+0.934 Y-38.888 +G01 X+0.936 Y-37.4 +G01 X+0.472 Y-35.131 +G01 X+0.256 Y-32.909 +G01 X+0.312 Y-4.887 +G01 X+0.585 Y-3.025 +G01 X+0.765 Y-2.05 +G01 X+0.768 Y-0.919 +G01 X+0.919 Y-0.769 +G01 X+2.257 Y-0.77 +G01 X+4.126 Y-0.402 +G01 X+5.988 Y-0.277 +G01 X+33.263 Y-0.348 +G01 X+35.617 Y-0.64 +G01 X+37.578 Y-1.041 +G01 X+38.765 Y-1.046 +G01 X+38.871 Y-1.09 +G01 X+38.954 Y-1.234 +G01 X+38.962 Y-2.639 +G01 X+39.433 Y-4.869 +G01 X+39.658 Y-7.091 +G01 X+39.602 Y-35.112 +G01 X+39.318 Y-36.975 +G01 X+39.132 Y-37.949 +G01 X+39.128 Y-38.978 +G01 X+38.978 Y-39.128 +G01 X+37.731 Y-39.129 +G01 X+35.874 Y-39.509 +G01 X+34.012 Y-39.638 +G01 X+6.738 Y-39.565 +G01 X+4.391 Y-39.264 +G01 X+2.632 Y-38.848 +G01 X+1.307 Y-38.829 +G01 X+1.158 Y-38.679 +G01 X+1.16 Y-37.401 +G01 X+0.672 Y-35.198 +G01 X+0.434 Y-33.033 +G01 X+0.488 Y-4.888 +G01 X+0.783 Y-3.025 +G01 X+0.976 Y-2.051 +G01 X+0.98 Y-1.13 +G01 X+1.13 Y-0.98 +G01 X+2.256 Y-0.982 +G01 X+4.126 Y-0.585 +G01 X+5.988 Y-0.45 +G01 X+33.262 Y-0.528 +G01 X+35.617 Y-0.842 +G01 X+37.578 Y-1.275 +G01 X+38.574 Y-1.294 +G01 X+38.721 Y-1.443 +G01 X+38.73 Y-2.638 +G01 X+39.237 Y-4.868 +G01 X+39.479 Y-7.091 +G01 X+39.438 Y-34.866 +G01 X+39.168 Y-36.728 +G01 X+38.912 Y-37.948 +G01 X+38.907 Y-38.757 +G01 X+38.758 Y-38.907 +G01 X+37.732 Y-38.909 +G01 X+35.875 Y-39.318 +G01 X+34.012 Y-39.458 +G01 X+6.738 Y-39.379 +G01 X+4.638 Y-39.103 +G01 X+2.632 Y-38.605 +G01 X+1.549 Y-38.583 +G01 X+1.401 Y-38.433 +G01 X+1.403 Y-37.402 +G01 X+0.886 Y-35.256 +G01 X+0.619 Y-33.034 +G01 X+0.655 Y-5.135 +G01 X+0.934 Y-3.272 +G01 X+1.201 Y-2.053 +G01 X+1.205 Y-1.358 +G01 X+1.249 Y-1.252 +G01 X+1.359 Y-1.205 +G01 X+2.254 Y-1.206 +G01 X+4.002 Y-0.798 +G01 X+5.734 Y-0.637 +G01 X+33.262 Y-0.715 +G01 X+35.363 Y-1.001 +G01 X+37.578 Y-1.518 +G01 X+38.332 Y-1.54 +G01 X+38.479 Y-1.688 +G01 X+38.488 Y-2.637 +G01 X+39.034 Y-4.868 +G01 X+39.288 Y-6.966 +G01 X+39.274 Y-34.497 +G01 X+39.045 Y-36.351 +G01 X+38.687 Y-37.947 +G01 X+38.683 Y-38.518 +G01 X+38.639 Y-38.624 +G01 X+38.518 Y-38.683 +G01 X+37.734 Y-38.685 +G01 X+35.998 Y-39.104 +G01 X+34.267 Y-39.271 +G01 X+6.985 Y-39.209 +G01 X+4.886 Y-38.944 +G01 X+2.778 Y-38.41 +G01 X+2.637 Y-38.364 +G01 X+1.79 Y-38.337 +G01 X+1.644 Y-38.187 +G01 X+1.645 Y-37.403 +G01 X+1.091 Y-35.256 +G01 X+0.805 Y-33.034 +G01 X+0.792 Y-15.75 +G01 X+0.838 Y-5.135 +G01 X+1.135 Y-3.281 +G01 X+1.418 Y-2.292 +G01 X+1.425 Y-1.605 +G01 X+1.469 Y-1.499 +G01 X+1.605 Y-1.425 +G01 X+2.253 Y-1.426 +G01 X+4.001 Y-0.989 +G01 X+5.733 Y-0.817 +G01 X+33.015 Y-0.877 +G01 X+34.991 Y-1.126 +G01 X+37.099 Y-1.661 +G01 X+37.451 Y-1.751 +G01 X+38.096 Y-1.756 +G01 X+38.245 Y-1.904 +G01 X+38.256 Y-2.636 +G01 X+38.838 Y-4.867 +G01 X+39.11 Y-6.966 +G01 X+39.13 Y-18.704 +G01 X+39.076 Y-34.864 +G01 X+38.77 Y-36.719 +G01 X+38.478 Y-37.709 +G01 X+38.46 Y-38.325 +G01 X+38.31 Y-38.472 +G01 X+37.735 Y-38.474 +G01 X+35.999 Y-38.921 +G01 X+34.267 Y-39.098 +G01 X+6.985 Y-39.037 +G01 X+5.009 Y-38.781 +G01 X+2.901 Y-38.23 +G01 X+2.639 Y-38.141 +G01 X+2.018 Y-38.132 +G01 X+1.868 Y-37.982 +G01 X+1.869 Y-37.405 +G01 X+1.306 Y-35.379 +G01 X+1.004 Y-33.404 +G01 X+0.943 Y-30.958 +G01 X+1.006 Y-5.136 +G01 X+1.321 Y-3.281 +G01 X+1.621 Y-2.293 +G01 X+1.628 Y-1.778 +G01 X+1.778 Y-1.628 +G01 X+2.252 Y-1.629 +G01 X+4.001 Y-1.165 +G01 X+5.733 Y-0.982 +G01 X+33.015 Y-1.042 +G01 X+34.99 Y-1.305 +G01 X+37.099 Y-1.87 +G01 X+37.45 Y-1.965 +G01 X+37.881 Y-1.971 +G01 X+38.031 Y-2.118 +G01 X+38.042 Y-2.635 +G01 X+38.607 Y-4.621 +G01 X+38.917 Y-6.595 +G01 X+38.98 Y-8.951 +G01 X+38.915 Y-34.865 +G01 X+38.655 Y-36.472 +G01 X+38.284 Y-37.707 +G01 X+38.277 Y-38.128 +G01 X+38.128 Y-38.277 +G01 X+37.736 Y-38.28 +G01 X+35.999 Y-38.752 +G01 X+34.391 Y-38.936 +G01 X+6.985 Y-38.88 +G01 X+5.01 Y-38.61 +G01 X+2.901 Y-38.029 +G01 X+2.64 Y-37.936 +G01 X+2.224 Y-37.926 +G01 X+2.074 Y-37.776 +G01 Y-37.406 +G01 X+1.481 Y-35.38 +G01 X+1.163 Y-33.405 +G01 X+1.098 Y-31.203 +G01 X+1.164 Y-5.136 +G01 X+1.431 Y-3.528 +G01 X+1.811 Y-2.294 +G01 X+1.818 Y-1.976 +G01 X+1.862 Y-1.87 +G01 X+1.976 Y-1.818 +G01 X+2.251 Y-1.819 +G01 X+3.878 Y-1.356 +G01 X+5.484 Y-1.147 +G01 X+33.014 Y-1.199 +G01 X+34.99 Y-1.476 +G01 X+37.099 Y-2.071 +G01 X+37.449 Y-2.171 +G01 X+37.654 Y-2.177 +G01 X+37.76 Y-2.22 +G01 X+37.826 Y-2.343 +G01 X+37.837 Y-2.635 +G01 X+38.431 Y-4.62 +G01 X+38.758 Y-6.595 +G01 X+38.825 Y-8.704 +G01 X+38.758 Y-34.864 +G01 X+38.484 Y-36.471 +G01 X+38.094 Y-37.706 +G01 X+38.087 Y-37.901 +G01 X+38.043 Y-38.007 +G01 X+37.902 Y-38.088 +G01 X+37.736 Y-38.091 +G01 X+36.122 Y-38.561 +G01 X+34.516 Y-38.775 +G01 X+6.986 Y-38.722 +G01 X+5.01 Y-38.439 +G01 X+2.901 Y-37.829 +G01 X+2.64 Y-37.73 +G01 X+2.427 Y-37.718 +G01 X+2.279 Y-37.568 +G01 Y-37.407 +G01 X+1.656 Y-35.38 +G01 X+1.321 Y-33.405 +G01 X+1.253 Y-31.203 +G01 X+1.321 Y-5.136 +G01 X+1.602 Y-3.529 +G01 X+2.003 Y-2.287 +G01 X+2.022 Y-2.142 +G01 X+2.172 Y-2.008 +G01 X+2.293 Y-2.002 +G01 X+3.877 Y-1.522 +G01 X+5.484 Y-1.303 +G01 X+33.014 Y-1.356 +G01 X+34.989 Y-1.647 +G01 X+37.099 Y-2.271 +G01 X+37.366 Y-2.375 +G01 X+37.492 Y-2.394 +G01 X+37.626 Y-2.534 +G01 X+37.632 Y-2.636 +G01 X+38.256 Y-4.62 +G01 X+38.599 Y-6.595 +G01 X+38.67 Y-8.704 +G01 X+38.6 Y-34.863 +G01 X+38.313 Y-36.471 +G01 X+37.904 Y-37.705 +G01 X+37.752 Y-37.9 +G01 X+36.123 Y-38.394 +G01 X+34.517 Y-38.619 +G01 X+6.986 Y-38.565 +G01 X+5.01 Y-38.268 +G01 X+3.148 Y-37.721 +G01 X+2.616 Y-37.515 +G01 X+2.485 Y-37.384 +G01 X+1.83 Y-35.38 +G01 X+1.478 Y-33.406 +G01 X+1.406 Y-31.203 +G01 X+1.465 Y-5.137 +G01 X+1.757 Y-3.529 +G01 X+2.17 Y-2.305 +G01 X+2.246 Y-2.207 +G01 X+3.877 Y-1.673 +G01 X+5.483 Y-1.443 +G01 X+32.891 Y-1.478 +G01 X+34.743 Y-1.734 +G01 X+36.722 Y-2.296 +G01 X+37.346 Y-2.536 +G01 X+37.45 Y-2.634 +G01 X+38.114 Y-4.62 +G01 X+38.471 Y-6.594 +G01 X+38.545 Y-8.704 +G01 X+38.496 Y-34.74 +G01 X+38.222 Y-36.346 +G01 X+37.753 Y-37.688 +G01 X+37.657 Y-37.781 +G01 X+36.123 Y-38.274 +G01 X+34.517 Y-38.507 +G01 X+7.109 Y-38.472 +G01 X+5.257 Y-38.212 +G01 X+3.278 Y-37.643 +G01 X+2.677 Y-37.408 +G01 X+2.592 Y-37.323 +G01 X+2.363 Y-36.735 +G01 X+1.795 Y-34.763 +G01 X+1.535 Y-32.911 +G01 X+1.527 Y-5.506 +G01 X+1.759 Y-3.908 +G01 X+2.256 Y-2.367 +G01 X+2.35 Y-2.272 +G01 X+3.638 Y-1.827 +G01 X+5.237 Y-1.549 +G01 X+31.296 Y-1.526 +G01 X+33.378 Y-1.601 +G01 X+35.345 Y-1.962 +G01 X+37.257 Y-2.605 +G01 X+37.346 Y-2.687 +G01 X+37.609 Y-3.285 +G01 X+38.176 Y-5.25 +G01 X+38.437 Y-7.093 +G01 X+38.445 Y-34.491 +G01 X+38.214 Y-36.079 +G01 X+37.715 Y-37.62 +G01 X+37.62 Y-37.715 +G01 X+36.346 Y-38.147 +G01 X+34.758 Y-38.423 +G01 X+8.552 Y-38.446 +G01 X+6.628 Y-38.371 +G01 X+4.671 Y-38.01 +G01 X+2.735 Y-37.354 +G01 X+2.643 Y-37.266 +G01 X+2.418 Y-36.689 +G01 X+1.855 Y-34.736 +G01 X+1.597 Y-32.903 +G01 X+1.622 Y-5.517 +G01 X+1.852 Y-3.954 +G01 X+2.342 Y-2.452 +G01 X+2.435 Y-2.357 +G01 X+3.692 Y-1.922 +G01 X+5.254 Y-1.651 +G01 X+31.296 Y-1.66 +G01 X+33.349 Y-1.737 +G01 X+35.269 Y-2.098 +G01 X+37.127 Y-2.737 +G01 X+37.215 Y-2.818 +G01 X+37.473 Y-3.4 +G01 X+38.033 Y-5.313 +G01 X+38.29 Y-7.113 +G01 X+38.265 Y-34.47 +G01 X+38.04 Y-35.992 +G01 X+37.556 Y-37.462 +G01 X+37.462 Y-37.557 +G01 X+36.363 Y-37.939 +G01 X+34.845 Y-38.226 +G01 X+8.552 Y-38.227 +G01 X+6.676 Y-38.15 +G01 X+4.794 Y-37.79 +G01 X+2.945 Y-37.142 +G01 X+2.855 Y-37.057 +G01 X+2.634 Y-36.507 +G01 X+2.079 Y-34.637 +G01 X+1.823 Y-32.872 +G01 X+1.848 Y-5.543 +G01 X+2.069 Y-4.062 +G01 X+2.538 Y-2.646 +G01 X+2.63 Y-2.552 +G01 X+3.7 Y-2.168 +G01 X+5.177 Y-1.887 +G01 X+31.296 Y-1.886 +G01 X+33.299 Y-1.963 +G01 X+35.144 Y-2.321 +G01 X+36.918 Y-2.949 +G01 X+37.005 Y-3.028 +G01 X+37.256 Y-3.581 +G01 X+37.809 Y-5.412 +G01 X+38.064 Y-7.144 +G01 X+38.039 Y-34.445 +G01 X+37.823 Y-35.884 +G01 X+37.36 Y-37.267 +G01 X+37.268 Y-37.361 +G01 X+36.236 Y-37.725 +G01 X+34.801 Y-38.001 +G01 X+8.552 Y-38 +G01 X+6.725 Y-37.924 +G01 X+4.918 Y-37.568 +G01 X+3.154 Y-36.93 +G01 X+3.067 Y-36.847 +G01 X+2.851 Y-36.326 +G01 X+2.303 Y-34.538 +G01 X+2.049 Y-32.84 +G01 X+2.074 Y-5.568 +G01 X+2.286 Y-4.17 +G01 X+2.734 Y-2.84 +G01 X+2.825 Y-2.747 +G01 X+3.827 Y-2.382 +G01 X+5.221 Y-2.111 +G01 X+31.296 Y-2.113 +G01 X+33.25 Y-2.189 +G01 X+35.02 Y-2.544 +G01 X+36.711 Y-3.161 +G01 X+36.795 Y-3.239 +G01 X+37.039 Y-3.763 +G01 X+37.584 Y-5.511 +G01 X+37.838 Y-7.175 +G01 X+37.819 Y-34.315 +G01 X+37.63 Y-35.671 +G01 X+37.164 Y-37.072 +G01 X+37.072 Y-37.165 +G01 X+36.109 Y-37.512 +G01 X+34.757 Y-37.776 +G01 X+8.552 Y-37.774 +G01 X+6.775 Y-37.698 +G01 X+5.042 Y-37.345 +G01 X+3.364 Y-36.719 +G01 X+3.278 Y-36.637 +G01 X+3.068 Y-36.144 +G01 X+2.528 Y-34.439 +G01 X+2.275 Y-32.809 +G01 X+2.294 Y-5.695 +G01 X+2.479 Y-4.38 +G01 X+2.93 Y-3.035 +G01 X+3.02 Y-2.942 +G01 X+3.954 Y-2.595 +G01 X+5.265 Y-2.336 +G01 X+31.296 Y-2.339 +G01 X+33.2 Y-2.415 +G01 X+34.896 Y-2.767 +G01 X+36.503 Y-3.373 +G01 X+36.585 Y-3.449 +G01 X+36.823 Y-3.944 +G01 X+37.36 Y-5.611 +G01 X+37.612 Y-7.206 +G01 X+37.593 Y-34.295 +G01 X+37.412 Y-35.569 +G01 X+36.968 Y-36.878 +G01 X+36.879 Y-36.97 +G01 X+36.176 Y-37.238 +G01 X+34.714 Y-37.551 +G01 X+8.552 Y-37.547 +G01 X+6.824 Y-37.472 +G01 X+5.166 Y-37.122 +G01 X+3.573 Y-36.507 +G01 X+3.49 Y-36.428 +G01 X+3.284 Y-35.963 +G01 X+2.752 Y-34.34 +G01 X+2.501 Y-32.778 +G01 X+2.517 Y-5.809 +G01 X+2.697 Y-4.482 +G01 X+3.126 Y-3.227 +G01 X+3.213 Y-3.137 +G01 X+3.894 Y-2.867 +G01 X+5.307 Y-2.561 +G01 X+31.296 Y-2.565 +G01 X+33.15 Y-2.641 +G01 X+34.772 Y-2.989 +G01 X+36.299 Y-3.587 +G01 X+36.375 Y-3.653 +G01 X+36.477 Y-3.833 +G01 X+37.083 Y-5.508 +G01 X+37.377 Y-7.133 +G01 X+37.37 Y-34.184 +G01 X+37.194 Y-35.467 +G01 X+36.772 Y-36.684 +G01 X+36.685 Y-36.774 +G01 X+36.035 Y-37.027 +G01 X+34.671 Y-37.327 +G01 X+8.552 Y-37.321 +G01 X+6.874 Y-37.246 +G01 X+5.29 Y-36.899 +G01 X+3.781 Y-36.295 +G01 X+3.702 Y-36.22 +G01 X+3.627 Y-36.063 +G01 X+3.028 Y-34.438 +G01 X+2.736 Y-32.849 +G01 X+2.743 Y-5.823 +G01 X+2.915 Y-4.584 +G01 X+3.322 Y-3.421 +G01 X+3.408 Y-3.332 +G01 X+4.035 Y-3.078 +G01 X+5.351 Y-2.786 +G01 X+31.296 Y-2.792 +G01 X+33.101 Y-2.867 +G01 X+34.648 Y-3.212 +G01 X+36.092 Y-3.799 +G01 X+36.263 Y-4.031 +G01 X+36.859 Y-5.617 +G01 X+37.151 Y-7.169 +G01 X+37.146 Y-34.086 +G01 X+36.996 Y-35.28 +G01 X+36.576 Y-36.489 +G01 X+36.49 Y-36.579 +G01 X+35.895 Y-36.817 +G01 X+34.627 Y-37.102 +G01 X+8.552 Y-37.094 +G01 X+6.924 Y-37.02 +G01 X+5.415 Y-36.677 +G01 X+3.99 Y-36.083 +G01 X+3.914 Y-36.011 +G01 X+3.841 Y-35.865 +G01 X+3.252 Y-34.329 +G01 X+2.962 Y-32.814 +G01 X+2.967 Y-5.918 +G01 X+3.114 Y-4.768 +G01 X+3.519 Y-3.615 +G01 X+3.603 Y-3.527 +G01 X+4.175 Y-3.289 +G01 X+5.395 Y-3.01 +G01 X+31.543 Y-3.019 +G01 X+33.052 Y-3.093 +G01 X+34.523 Y-3.435 +G01 X+35.884 Y-4.011 +G01 X+36.049 Y-4.23 +G01 X+36.636 Y-5.725 +G01 X+36.925 Y-7.204 +G01 X+36.92 Y-34.078 +G01 X+36.777 Y-35.185 +G01 X+36.38 Y-36.295 +G01 X+36.296 Y-36.383 +G01 X+35.754 Y-36.606 +G01 X+34.583 Y-36.877 +G01 X+8.552 Y-36.868 +G01 X+6.973 Y-36.794 +G01 X+5.539 Y-36.454 +G01 X+4.199 Y-35.871 +G01 X+4.055 Y-35.667 +G01 X+3.476 Y-34.221 +G01 X+3.188 Y-32.778 +G01 X+3.192 Y-6.002 +G01 X+3.333 Y-4.864 +G01 X+3.715 Y-3.808 +G01 X+3.797 Y-3.722 +G01 X+4.315 Y-3.5 +G01 X+5.439 Y-3.235 +G01 X+31.296 Y-3.245 +G01 X+32.913 Y-3.307 +G01 X+34.228 Y-3.601 +G01 X+35.676 Y-4.224 +G01 X+35.835 Y-4.428 +G01 X+36.411 Y-5.834 +G01 X+36.699 Y-7.239 +G01 X+36.694 Y-33.998 +G01 X+36.557 Y-35.089 +G01 X+36.184 Y-36.101 +G01 X+36.102 Y-36.187 +G01 X+35.614 Y-36.395 +G01 X+34.54 Y-36.652 +G01 X+8.552 Y-36.642 +G01 X+7.023 Y-36.568 +G01 X+5.663 Y-36.231 +G01 X+4.407 Y-35.659 +G01 X+4.269 Y-35.469 +G01 X+3.701 Y-34.112 +G01 X+3.414 Y-32.743 +G01 X+3.419 Y-6.242 +G01 X+3.536 Y-5.03 +G01 X+3.911 Y-4 +G01 X+3.989 Y-3.916 +G01 X+4.324 Y-3.762 +G01 X+5.34 Y-3.48 +G01 X+29.568 Y-3.468 +G01 X+32.696 Y-3.513 +G01 X+34.113 Y-3.824 +G01 X+35.469 Y-4.436 +G01 X+35.621 Y-4.627 +G01 X+36.187 Y-5.942 +G01 X+36.473 Y-7.275 +G01 X+36.468 Y-33.688 +G01 X+36.37 Y-34.859 +G01 X+35.987 Y-35.909 +G01 X+35.911 Y-35.992 +G01 X+35.724 Y-36.081 +G01 X+34.633 Y-36.407 +G01 X+8.552 Y-36.415 +G01 X+7.073 Y-36.342 +G01 X+5.788 Y-36.009 +G01 X+4.615 Y-35.447 +G01 X+4.484 Y-35.27 +G01 X+3.925 Y-34.003 +G01 X+3.64 Y-32.708 +G01 X+3.645 Y-6.242 +G01 X+3.756 Y-5.119 +G01 X+4.108 Y-4.192 +G01 X+4.182 Y-4.112 +G01 X+4.418 Y-3.995 +G01 X+5.395 Y-3.704 +G01 X+29.568 Y-3.695 +G01 X+32.66 Y-3.739 +G01 X+33.998 Y-4.048 +G01 X+35.263 Y-4.649 +G01 X+35.406 Y-4.825 +G01 X+35.963 Y-6.051 +G01 X+36.247 Y-7.31 +G01 X+36.242 Y-33.688 +G01 X+36.149 Y-34.776 +G01 X+35.791 Y-35.716 +G01 X+35.718 Y-35.796 +G01 X+35.557 Y-35.877 +G01 X+34.577 Y-36.183 +G01 X+8.797 Y-36.189 +G01 X+7.201 Y-36.128 +G01 X+5.985 Y-35.814 +G01 X+4.823 Y-35.234 +G01 X+4.698 Y-35.072 +G01 X+4.149 Y-33.895 +G01 X+3.866 Y-32.673 +G01 X+3.872 Y-6.242 +G01 X+3.962 Y-5.265 +G01 X+4.304 Y-4.385 +G01 X+4.375 Y-4.307 +G01 X+4.578 Y-4.201 +G01 X+5.451 Y-3.928 +G01 X+29.815 Y-3.922 +G01 X+32.624 Y-3.965 +G01 X+33.813 Y-4.245 +G01 X+34.944 Y-4.789 +G01 X+35.181 Y-5.016 +G01 X+35.739 Y-6.159 +G01 X+36.021 Y-7.345 +G01 X+36.015 Y-33.688 +G01 X+35.927 Y-34.692 +G01 X+35.595 Y-35.524 +G01 X+35.526 Y-35.6 +G01 X+35.39 Y-35.672 +G01 X+34.521 Y-35.959 +G01 X+8.797 Y-35.962 +G01 X+7.247 Y-35.901 +G01 X+6.105 Y-35.591 +G01 X+5.031 Y-35.021 +G01 X+4.912 Y-34.874 +G01 X+4.373 Y-33.787 +G01 X+4.092 Y-32.638 +G01 X+4.098 Y-6.481 +G01 X+4.171 Y-5.4 +G01 X+4.479 Y-4.613 +G01 X+4.688 Y-4.436 +G01 X+5.506 Y-4.153 +G01 X+32.47 Y-4.178 +G01 X+33.569 Y-4.42 +G01 X+34.635 Y-4.931 +G01 X+34.964 Y-5.214 +G01 X+35.514 Y-6.268 +G01 X+35.794 Y-7.38 +G01 X+35.789 Y-33.688 +G01 X+35.718 Y-34.562 +G01 X+35.422 Y-35.295 +G01 X+35.228 Y-35.462 +G01 X+34.466 Y-35.735 +G01 X+8.552 Y-35.736 +G01 X+7.292 Y-35.675 +G01 X+6.225 Y-35.368 +G01 X+5.237 Y-34.808 +G01 X+5.127 Y-34.676 +G01 X+4.598 Y-33.678 +G01 X+4.319 Y-32.603 +G01 X+4.324 Y-6.728 +G01 X+4.373 Y-5.567 +G01 X+4.678 Y-4.799 +G01 X+4.856 Y-4.64 +G01 X+5.561 Y-4.378 +G01 X+32.348 Y-4.395 +G01 X+33.405 Y-4.622 +G01 X+34.397 Y-5.112 +G01 X+34.751 Y-5.413 +G01 X+35.29 Y-6.376 +G01 X+35.568 Y-7.414 +G01 X+35.538 Y-34.276 +G01 X+35.281 Y-35.015 +G01 X+35.101 Y-35.225 +G01 X+34.412 Y-35.509 +G01 X+8.552 +G01 X+7.338 Y-35.449 +G01 X+6.345 Y-35.146 +G01 X+5.443 Y-34.594 +G01 X+5.342 Y-34.478 +G01 X+4.823 Y-33.57 +G01 X+4.545 Y-32.568 +G01 X+4.569 Y-5.784 +G01 X+4.784 Y-5.131 +G01 X+4.985 Y-4.879 +G01 X+5.616 Y-4.603 +G01 X+32.009 Y-4.605 +G01 X+33.01 Y-4.748 +G01 X+33.969 Y-5.166 +G01 X+34.536 Y-5.612 +G01 X+35.065 Y-6.484 +G01 X+35.342 Y-7.449 +G01 X+35.334 Y-34.023 +G01 X+35.192 Y-34.637 +G01 X+34.928 Y-35.015 +G01 X+34.357 Y-35.284 +G01 X+8.552 Y-35.283 +G01 X+7.384 Y-35.223 +G01 X+6.465 Y-34.923 +G01 X+5.649 Y-34.38 +G01 X+5.557 Y-34.28 +G01 X+5.048 Y-33.462 +G01 X+4.772 Y-32.534 +G01 X+4.778 Y-6.009 +G01 X+4.844 Y-5.6 +G01 X+5.113 Y-5.129 +G01 X+5.669 Y-4.831 +G01 X+32.008 Y-4.832 +G01 X+32.852 Y-4.949 +G01 X+33.673 Y-5.296 +G01 X+34.325 Y-5.812 +G01 X+34.84 Y-6.592 +G01 X+35.115 Y-7.484 +G01 X+35.109 Y-33.927 +G01 X+35.055 Y-34.327 +G01 X+34.792 Y-34.776 +G01 X+34.305 Y-35.055 +G01 X+8.552 Y-35.056 +G01 X+7.43 Y-34.997 +G01 X+6.559 Y-34.684 +G01 X+5.843 Y-34.157 +G00 Z-1.235 +G00 X-1.95 Y-40 +G00 Z-6.235 +G01 Z-7.46 F10000 +G01 X-1.904 Y+0.391 F12000 +G01 X-1.609 Y+1.091 +G01 X-1.069 Y+1.624 +G01 X-0.359 Y+1.913 +G01 X-0.007 Y+1.949 +G01 X+40.391 Y+1.904 +G01 X+41.091 Y+1.609 +G01 X+41.624 Y+1.069 +G01 X+41.913 Y+0.359 +G01 X+41.949 Y+0.007 +G01 X+41.904 Y-40.391 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-0.544 Y-41.85 +G01 X-0.685 Y-41.817 +G01 X-1.135 Y-41.576 +G01 X-1.361 Y-41.386 +G01 X-1.727 Y-40.885 +G01 X-1.862 Y-40.55 +G01 X-1.94 Y-40.01 +G01 X-1.886 Y+0 +G01 X-1.88 Y+0.112 +G01 X-1.761 Y+0.663 +G01 X-1.538 Y+1.083 +G01 X-0.831 Y+1.683 +G01 X-0.56 Y+1.796 +G01 X+0.302 Y+1.881 +G01 X+40.082 Y+1.812 +G01 X+40.496 Y+1.743 +G01 X+40.799 Y+1.627 +G01 X+41.056 Y+1.473 +G01 X+41.273 Y+1.29 +G01 X+41.45 Y+1.085 +G01 X+41.722 Y+0.547 +G01 X+41.81 Y-0.556 +G01 X+41.788 Y-36.481 +G01 X+41.765 Y-40 +G01 X+41.691 Y-40.496 +G01 X+41.596 Y-40.749 +G01 X+41.429 Y-41.031 +G01 X+41.255 Y-41.236 +G01 X+40.99 Y-41.456 +G01 X+40.667 Y-41.628 +G01 X+39.701 Y-41.759 +G01 X+6.177 Y-41.749 +G01 X+2.616 Y-41.688 +G01 X+0 Y-41.684 +G01 X-0.59 Y-41.573 +G01 X-0.981 Y-41.365 +G01 X-1.176 Y-41.201 +G01 X-1.493 Y-40.768 +G01 X-1.61 Y-40.478 +G01 X-1.679 Y-40.01 +G01 X-1.73 Y-26.235 +G01 X-1.668 Y-3.025 +G01 X-1.643 Y+0 +G01 X-1.535 Y+0.576 +G01 X-1.342 Y+0.941 +G01 X-0.727 Y+1.465 +G01 X-0.491 Y+1.564 +G01 X+0.309 Y+1.64 +G01 X+11.79 Y+1.683 +G01 X+35.37 Y+1.618 +G01 X+39.568 Y+1.554 +G01 X+40.068 Y+1.551 +G01 X+40.422 Y+1.492 +G01 X+40.682 Y+1.393 +G01 X+40.902 Y+1.261 +G01 X+41.088 Y+1.104 +G01 X+41.239 Y+0.931 +G01 X+41.471 Y+0.472 +G01 X+41.549 Y-0.556 +G01 X+41.603 Y-4.63 +G01 X+41.626 Y-18.457 +G01 X+41.563 Y-36.728 +G01 X+41.522 Y-40 +G01 X+41.459 Y-40.426 +G01 X+41.377 Y-40.645 +G01 X+41.234 Y-40.888 +G01 X+41.084 Y-41.065 +G01 X+40.855 Y-41.255 +G01 X+40.58 Y-41.402 +G01 X+39.575 Y-41.518 +G01 X+35.741 Y-41.575 +G01 X+5.247 Y-41.524 +G01 X+2.616 Y-41.426 +G01 X+0 Y-41.422 +G01 X-0.495 Y-41.329 +G01 X-0.826 Y-41.154 +G01 X-0.991 Y-41.016 +G01 X-1.259 Y-40.651 +G01 X-1.359 Y-40.406 +G01 X-1.418 Y-40.01 +G01 X-1.454 Y-36.481 +G01 X-1.538 Y-30.958 +G01 X-1.466 Y-3.642 +G01 X-1.402 Y-0.802 +G01 X-1.401 Y+0 +G01 X-1.309 Y+0.488 +G01 X-1.146 Y+0.798 +G01 X-0.623 Y+1.247 +G01 X-0.423 Y+1.332 +G01 X+0.432 Y+1.398 +G01 X+3.272 Y+1.441 +G01 X+8.58 Y+1.489 +G01 X+34.63 Y+1.421 +G01 X+38.333 Y+1.294 +G01 X+40.054 Y+1.289 +G01 X+40.348 Y+1.241 +G01 X+40.565 Y+1.159 +G01 X+40.748 Y+1.049 +G01 X+40.903 Y+0.919 +G01 X+41.028 Y+0.776 +G01 X+41.22 Y+0.398 +G01 X+41.287 Y-0.679 +G01 X+41.333 Y-3.519 +G01 X+41.44 Y-8.21 +G01 X+41.373 Y-35.988 +G01 X+41.282 Y-38.704 +G01 X+41.28 Y-40 +G01 X+41.227 Y-40.356 +G01 X+41.159 Y-40.54 +G01 X+41.042 Y-40.739 +G01 X+40.725 Y-41.049 +G01 X+40.492 Y-41.176 +G01 X+39.568 Y-41.277 +G01 X+36.975 Y-41.318 +G01 X+33.025 Y-41.392 +G01 X+5.741 Y-41.326 +G01 X+2.616 Y-41.164 +G01 X+0 Y-41.16 +G01 X-0.4 Y-41.085 +G01 X-0.671 Y-40.942 +G01 X-0.802 Y-40.835 +G01 X-1.089 Y-40.383 +G01 X-1.156 Y-40.01 +G01 X-1.19 Y-36.852 +G01 X-1.341 Y-32.407 +G01 X-1.273 Y-4.136 +G01 X-1.161 Y-1.543 +G01 X-1.159 Y+0 +G01 X-1.084 Y+0.4 +G01 X-0.95 Y+0.656 +G01 X-0.518 Y+1.028 +G01 X-0.355 Y+1.1 +G01 X+0.556 Y+1.156 +G01 X+2.901 Y+1.198 +G01 X+6.552 Y+1.294 +G01 X+34.259 Y+1.222 +G01 X+38.086 Y+1.032 +G01 X+40.041 Y+1.028 +G01 X+40.268 Y+0.991 +G01 X+40.588 Y+0.84 +G01 X+40.718 Y+0.734 +G01 X+40.817 Y+0.621 +G01 X+40.969 Y+0.324 +G01 X+41.025 Y-0.926 +G01 X+41.065 Y-3.148 +G01 X+41.238 Y-7.099 +G01 X+41.168 Y-35.864 +G01 X+41.04 Y-38.333 +G01 X+41.038 Y-40 +G01 X+40.996 Y-40.286 +G01 X+40.942 Y-40.43 +G01 X+40.745 Y-40.717 +G01 X+40.587 Y-40.853 +G01 X+40.405 Y-40.951 +G01 X+39.568 Y-41.035 +G01 X+37.222 Y-41.074 +G01 X+34.012 Y-41.196 +G01 X+5.988 Y-41.127 +G01 X+2.616 Y-40.902 +G01 X+0 Y-40.898 +G01 X-0.299 Y-40.842 +G01 X-0.605 Y-40.653 +G01 X-0.842 Y-40.28 +G01 X-0.893 Y-38.333 +G01 X-0.939 Y-36.852 +G01 X-1.135 Y-33.025 +G01 X-1.072 Y-4.383 +G01 X-0.915 Y-1.667 +G01 X-0.912 Y+0 +G01 X-0.854 Y+0.31 +G01 X-0.751 Y+0.511 +G01 X-0.412 Y+0.806 +G01 X-0.285 Y+0.863 +G01 X+0.926 Y+0.909 +G01 X+2.778 Y+0.954 +G01 X+5.864 Y+1.093 +G01 X+33.823 Y+1.023 +G01 X+37.346 Y+0.766 +G01 X+40.173 Y+0.727 +G01 X+40.514 Y+0.548 +G01 X+40.598 Y+0.461 +G01 X+40.709 Y+0.247 +G01 X+40.806 Y-3.148 +G01 X+41.022 Y-6.728 +G01 X+40.968 Y-35.494 +G01 X+40.785 Y-38.21 +G01 X+40.782 Y-39.983 +G01 X+40.714 Y-40.301 +G01 X+40.452 Y-40.629 +G01 X+40.313 Y-40.713 +G01 X+39.444 Y-40.78 +G01 X+37.346 Y-40.818 +G01 X+34.506 Y-40.983 +G01 X+6.235 Y-40.916 +G01 X+2.901 Y-40.656 +G01 X+2.625 Y-40.622 +G01 X+0.014 Y-40.617 +G01 X-0.195 Y-40.58 +G01 X-0.407 Y-40.455 +G01 X-0.573 Y-40.203 +G01 X-0.673 Y-36.852 +G01 X-0.912 Y-33.395 +G01 X-0.861 Y-4.506 +G01 X-0.66 Y-1.79 +G01 X-0.657 Y-0.014 +G01 X-0.616 Y+0.215 +G01 X-0.545 Y+0.361 +G01 X-0.302 Y+0.576 +G01 X-0.163 Y+0.629 +G01 X+2.654 Y+0.698 +G01 X+5.37 Y+0.879 +G01 X+33.642 Y+0.819 +G01 X+36.852 Y+0.559 +G01 X+37.84 Y+0.49 +G01 X+40.096 Y+0.467 +G01 X+40.322 Y+0.356 +G01 X+40.4 Y+0.27 +G01 X+40.45 Y+0.17 +G01 X+40.518 Y-2.901 +G01 X+40.791 Y-6.111 +G01 X+40.829 Y-11.438 +G01 X+40.759 Y-35.494 +G01 X+40.539 Y-38.21 +G01 X+40.536 Y-39.983 +G01 X+40.492 Y-40.194 +G01 X+40.316 Y-40.424 +G01 X+40.226 Y-40.482 +G01 X+38.704 Y-40.533 +G01 X+37.346 Y-40.581 +G01 X+34.753 Y-40.777 +G01 X+6.358 Y-40.717 +G01 X+3.272 Y-40.45 +G01 X+2.626 Y-40.361 +G01 X+0.03 Y-40.355 +G01 X-0.193 Y-40.275 +G01 X-0.275 Y-40.193 +G01 X-0.344 Y-40.027 +G01 X-0.39 Y-37.099 +G01 X-0.682 Y-34.012 +G01 X-0.731 Y-29.976 +G01 X-0.653 Y-4.513 +G01 X-0.414 Y-1.92 +G01 X-0.41 Y-0.014 +G01 X-0.387 Y+0.126 +G01 X-0.303 Y+0.261 +G01 X-0.156 Y+0.366 +G01 X+2.407 Y+0.426 +G01 X+4.869 Y+0.659 +G01 X+33.635 Y+0.608 +G01 X+36.728 Y+0.317 +G01 X+37.716 Y+0.219 +G01 X+40.055 Y+0.175 +G01 X+40.181 Y+0.102 +G01 X+40.253 Y-2.901 +G01 X+40.57 Y-5.981 +G01 X+40.626 Y-9.691 +G01 X+40.558 Y-35.239 +G01 X+40.307 Y-37.585 +G01 X+40.281 Y-39.965 +G01 X+40.189 Y-40.179 +G01 X+40.058 Y-40.261 +G01 X+37.599 Y-40.298 +G01 X+35.131 Y-40.55 +G01 X+6.612 Y-40.511 +G01 X+3.642 Y-40.238 +G01 X+2.627 Y-40.081 +G01 X+0.247 Y-40.075 +G01 X+0.141 Y-40.031 +G01 X-0.032 Y-39.858 +G01 X-0.076 Y-39.754 +G01 X-0.119 Y-37.106 +G01 X-0.446 Y-34.266 +G01 X-0.524 Y-31.203 +G01 X-0.46 Y-4.761 +G01 X-0.192 Y-2.415 +G01 X-0.165 Y-0.023 +G01 X-0.081 Y+0.125 +G01 X+0.029 Y+0.165 +G01 X+2.4 Y+0.185 +G01 X+4.745 Y+0.448 +G01 X+11.543 Y+0.479 +G01 X+33.388 Y+0.423 +G01 X+36.111 Y+0.171 +G01 X+37.708 Y-0.033 +G01 X+39.817 Y-0.06 +G01 X+39.965 Y-0.207 +G01 X+40.01 Y-2.893 +G01 X+40.347 Y-5.61 +G01 X+40.44 Y-8.457 +G01 X+40.373 Y-35.238 +G01 X+40.089 Y-37.584 +G01 X+40.062 Y-39.909 +G01 X+39.913 Y-40.058 +G01 X+37.601 Y-40.082 +G01 X+35.255 Y-40.361 +G01 X+29.892 Y-40.395 +G01 X+6.612 Y-40.336 +G01 X+3.889 Y-40.07 +G01 X+2.628 Y-39.856 +G01 X+0.299 Y-39.851 +G01 X+0.149 Y-39.701 +G01 X+0.152 Y-37.395 +G01 X-0.224 Y-34.76 +G01 X-0.357 Y-32.037 +G01 X-0.297 Y-4.885 +G01 X-0.035 Y-2.654 +G01 X+0.036 Y-1.914 +G01 X+0.06 Y-0.185 +G01 X+0.208 Y-0.037 +G01 X+2.399 Y-0.015 +G01 X+4.744 Y+0.279 +G01 X+9.321 Y+0.316 +G01 X+33.388 Y+0.257 +G01 X+35.988 Y-0.004 +G01 X+37.581 Y-0.247 +G01 X+39.6 Y-0.251 +G01 X+39.75 Y-0.4 +G01 X+39.778 Y-2.768 +G01 X+40.152 Y-5.363 +G01 X+40.279 Y-7.963 +G01 X+40.218 Y-35.114 +G01 X+39.944 Y-37.346 +G01 X+39.869 Y-38.079 +G01 X+39.867 Y-39.718 +G01 X+39.718 Y-39.868 +G01 X+37.602 Y-39.891 +G01 X+35.256 Y-40.199 +G01 X+31.118 Y-40.239 +G01 X+6.613 Y-40.177 +G01 X+4.012 Y-39.904 +G01 X+2.629 Y-39.651 +G01 X+0.504 Y-39.646 +G01 X+0.354 Y-39.496 +G01 X+0.357 Y-37.396 +G01 X-0.056 Y-34.761 +G01 X-0.202 Y-32.037 +G01 X-0.142 Y-4.886 +G01 X+0.121 Y-2.778 +G01 X+0.221 Y-2.047 +G01 X+0.224 Y-0.373 +G01 X+0.372 Y-0.223 +G01 X+2.398 Y-0.198 +G01 X+4.497 Y+0.105 +G01 X+7.042 Y+0.167 +G01 X+33.264 Y+0.111 +G01 X+35.741 Y-0.14 +G01 X+37.581 Y-0.443 +G01 X+39.382 Y-0.448 +G01 X+39.488 Y-0.492 +G01 X+39.553 Y-0.616 +G01 X+39.585 Y-2.767 +G01 X+39.979 Y-5.24 +G01 X+40.13 Y-7.716 +G01 X+40.07 Y-35.114 +G01 X+39.797 Y-37.222 +G01 X+39.693 Y-37.953 +G01 X+39.69 Y-39.506 +G01 X+39.646 Y-39.612 +G01 X+39.507 Y-39.69 +G01 X+37.603 Y-39.717 +G01 X+35.503 Y-40.031 +G01 X+33.025 Y-40.097 +G01 X+6.736 Y-40.04 +G01 X+4.259 Y-39.778 +G01 X+2.629 Y-39.464 +G01 X+0.69 Y-39.446 +G01 X+0.541 Y-39.295 +G01 X+0.544 Y-37.397 +G01 X+0.098 Y-34.761 +G01 X-0.059 Y-32.284 +G01 X+0.006 Y-4.886 +G01 X+0.29 Y-2.778 +G01 X+0.398 Y-2.048 +G01 X+0.401 Y-0.551 +G01 X+0.551 Y-0.401 +G01 X+2.26 Y-0.403 +G01 X+4.373 Y-0.058 +G01 X+6.552 Y+0.023 +G01 X+33.264 Y-0.039 +G01 X+35.741 Y-0.312 +G01 X+37.58 Y-0.64 +G01 X+39.208 Y-0.644 +G01 X+39.358 Y-0.791 +G01 X+39.391 Y-2.766 +G01 X+39.818 Y-5.239 +G01 X+39.979 Y-7.593 +G01 X+39.915 Y-35.113 +G01 X+39.644 Y-37.099 +G01 X+39.507 Y-37.951 +G01 X+39.504 Y-39.355 +G01 X+39.356 Y-39.505 +G01 X+37.604 Y-39.533 +G01 X+35.627 Y-39.861 +G01 X+33.519 Y-39.945 +G01 X+6.737 Y-39.882 +G01 X+4.39 Y-39.62 +G01 X+2.631 Y-39.258 +G01 X+0.896 Y-39.254 +G01 X+0.747 Y-39.103 +G01 X+0.749 Y-37.398 +G01 X+0.297 Y-35.008 +G01 X+0.103 Y-32.654 +G01 X+0.161 Y-4.887 +G01 X+0.467 Y-2.778 +G01 X+0.583 Y-2.049 +G01 X+0.587 Y-0.741 +G01 X+0.631 Y-0.635 +G01 X+0.741 Y-0.587 +G01 X+2.259 Y-0.588 +G01 X+4.373 Y-0.215 +G01 X+6.552 Y-0.128 +G01 X+33.263 Y-0.191 +G01 X+35.617 Y-0.462 +G01 X+37.579 Y-0.836 +G01 X+39.01 Y-0.84 +G01 X+39.16 Y-0.989 +G01 X+39.168 Y-2.64 +G01 X+39.625 Y-4.992 +G01 X+39.826 Y-7.346 +G01 X+39.767 Y-35.113 +G01 X+39.477 Y-37.099 +G01 X+39.33 Y-37.951 +G01 X+39.322 Y-39.178 +G01 X+39.172 Y-39.327 +G01 X+37.73 Y-39.328 +G01 X+35.751 Y-39.696 +G01 X+33.765 Y-39.801 +G01 X+6.737 Y-39.737 +G01 X+4.39 Y-39.458 +G01 X+2.632 Y-39.072 +G01 X+1.111 Y-39.066 +G01 X+1.006 Y-39.022 +G01 X+0.934 Y-38.888 +G01 X+0.936 Y-37.4 +G01 X+0.472 Y-35.131 +G01 X+0.256 Y-32.909 +G01 X+0.312 Y-4.887 +G01 X+0.585 Y-3.025 +G01 X+0.765 Y-2.05 +G01 X+0.768 Y-0.919 +G01 X+0.919 Y-0.769 +G01 X+2.257 Y-0.77 +G01 X+4.126 Y-0.402 +G01 X+5.988 Y-0.277 +G01 X+33.263 Y-0.348 +G01 X+35.617 Y-0.64 +G01 X+37.578 Y-1.041 +G01 X+38.765 Y-1.046 +G01 X+38.871 Y-1.09 +G01 X+38.954 Y-1.234 +G01 X+38.962 Y-2.639 +G01 X+39.433 Y-4.869 +G01 X+39.658 Y-7.091 +G01 X+39.602 Y-35.112 +G01 X+39.318 Y-36.975 +G01 X+39.132 Y-37.949 +G01 X+39.128 Y-38.978 +G01 X+38.978 Y-39.128 +G01 X+37.731 Y-39.129 +G01 X+35.874 Y-39.509 +G01 X+34.012 Y-39.638 +G01 X+6.738 Y-39.565 +G01 X+4.391 Y-39.264 +G01 X+2.632 Y-38.848 +G01 X+1.307 Y-38.829 +G01 X+1.158 Y-38.679 +G01 X+1.16 Y-37.401 +G01 X+0.672 Y-35.198 +G01 X+0.434 Y-33.033 +G01 X+0.488 Y-4.888 +G01 X+0.783 Y-3.025 +G01 X+0.976 Y-2.051 +G01 X+0.98 Y-1.13 +G01 X+1.13 Y-0.98 +G01 X+2.256 Y-0.982 +G01 X+4.126 Y-0.585 +G01 X+5.988 Y-0.45 +G01 X+33.262 Y-0.528 +G01 X+35.617 Y-0.842 +G01 X+37.578 Y-1.275 +G01 X+38.574 Y-1.294 +G01 X+38.721 Y-1.443 +G01 X+38.73 Y-2.638 +G01 X+39.237 Y-4.868 +G01 X+39.479 Y-7.091 +G01 X+39.438 Y-34.866 +G01 X+39.168 Y-36.728 +G01 X+38.912 Y-37.948 +G01 X+38.907 Y-38.757 +G01 X+38.758 Y-38.907 +G01 X+37.732 Y-38.909 +G01 X+35.875 Y-39.318 +G01 X+34.012 Y-39.458 +G01 X+6.738 Y-39.379 +G01 X+4.638 Y-39.103 +G01 X+2.632 Y-38.605 +G01 X+1.549 Y-38.583 +G01 X+1.401 Y-38.433 +G01 X+1.403 Y-37.402 +G01 X+0.886 Y-35.256 +G01 X+0.619 Y-33.034 +G01 X+0.655 Y-5.135 +G01 X+0.934 Y-3.272 +G01 X+1.201 Y-2.053 +G01 X+1.205 Y-1.358 +G01 X+1.249 Y-1.252 +G01 X+1.359 Y-1.205 +G01 X+2.254 Y-1.206 +G01 X+4.002 Y-0.798 +G01 X+5.734 Y-0.637 +G01 X+33.262 Y-0.715 +G01 X+35.363 Y-1.001 +G01 X+37.578 Y-1.518 +G01 X+38.332 Y-1.54 +G01 X+38.479 Y-1.688 +G01 X+38.488 Y-2.637 +G01 X+39.034 Y-4.868 +G01 X+39.288 Y-6.966 +G01 X+39.274 Y-34.497 +G01 X+39.045 Y-36.351 +G01 X+38.687 Y-37.947 +G01 X+38.683 Y-38.518 +G01 X+38.639 Y-38.624 +G01 X+38.518 Y-38.683 +G01 X+37.734 Y-38.685 +G01 X+35.998 Y-39.104 +G01 X+34.267 Y-39.271 +G01 X+6.985 Y-39.209 +G01 X+4.886 Y-38.944 +G01 X+2.778 Y-38.41 +G01 X+2.637 Y-38.364 +G01 X+1.79 Y-38.337 +G01 X+1.644 Y-38.187 +G01 X+1.645 Y-37.403 +G01 X+1.091 Y-35.256 +G01 X+0.805 Y-33.034 +G01 X+0.792 Y-15.75 +G01 X+0.838 Y-5.135 +G01 X+1.135 Y-3.281 +G01 X+1.418 Y-2.292 +G01 X+1.425 Y-1.605 +G01 X+1.469 Y-1.499 +G01 X+1.605 Y-1.425 +G01 X+2.253 Y-1.426 +G01 X+4.001 Y-0.989 +G01 X+5.733 Y-0.817 +G01 X+33.015 Y-0.877 +G01 X+34.991 Y-1.126 +G01 X+37.099 Y-1.661 +G01 X+37.451 Y-1.751 +G01 X+38.096 Y-1.756 +G01 X+38.245 Y-1.904 +G01 X+38.256 Y-2.636 +G01 X+38.838 Y-4.867 +G01 X+39.11 Y-6.966 +G01 X+39.13 Y-18.704 +G01 X+39.076 Y-34.864 +G01 X+38.77 Y-36.719 +G01 X+38.478 Y-37.709 +G01 X+38.46 Y-38.325 +G01 X+38.31 Y-38.472 +G01 X+37.735 Y-38.474 +G01 X+35.999 Y-38.921 +G01 X+34.267 Y-39.098 +G01 X+6.985 Y-39.037 +G01 X+5.009 Y-38.781 +G01 X+2.901 Y-38.23 +G01 X+2.639 Y-38.141 +G01 X+2.018 Y-38.132 +G01 X+1.868 Y-37.982 +G01 X+1.869 Y-37.405 +G01 X+1.306 Y-35.379 +G01 X+1.004 Y-33.404 +G01 X+0.943 Y-30.958 +G01 X+1.006 Y-5.136 +G01 X+1.321 Y-3.281 +G01 X+1.621 Y-2.293 +G01 X+1.628 Y-1.778 +G01 X+1.778 Y-1.628 +G01 X+2.252 Y-1.629 +G01 X+4.001 Y-1.165 +G01 X+5.733 Y-0.982 +G01 X+33.015 Y-1.042 +G01 X+34.99 Y-1.305 +G01 X+37.099 Y-1.87 +G01 X+37.45 Y-1.965 +G01 X+37.881 Y-1.971 +G01 X+38.031 Y-2.118 +G01 X+38.042 Y-2.635 +G01 X+38.607 Y-4.621 +G01 X+38.917 Y-6.595 +G01 X+38.98 Y-8.951 +G01 X+38.915 Y-34.865 +G01 X+38.655 Y-36.472 +G01 X+38.284 Y-37.707 +G01 X+38.277 Y-38.128 +G01 X+38.128 Y-38.277 +G01 X+37.736 Y-38.28 +G01 X+35.999 Y-38.752 +G01 X+34.391 Y-38.936 +G01 X+6.985 Y-38.88 +G01 X+5.01 Y-38.61 +G01 X+2.901 Y-38.029 +G01 X+2.64 Y-37.936 +G01 X+2.224 Y-37.926 +G01 X+2.074 Y-37.776 +G01 Y-37.406 +G01 X+1.481 Y-35.38 +G01 X+1.163 Y-33.405 +G01 X+1.098 Y-31.203 +G01 X+1.164 Y-5.136 +G01 X+1.431 Y-3.528 +G01 X+1.811 Y-2.294 +G01 X+1.818 Y-1.976 +G01 X+1.862 Y-1.87 +G01 X+1.976 Y-1.818 +G01 X+2.251 Y-1.819 +G01 X+3.878 Y-1.356 +G01 X+5.484 Y-1.147 +G01 X+33.014 Y-1.199 +G01 X+34.99 Y-1.476 +G01 X+37.099 Y-2.071 +G01 X+37.449 Y-2.171 +G01 X+37.654 Y-2.177 +G01 X+37.76 Y-2.22 +G01 X+37.826 Y-2.343 +G01 X+37.837 Y-2.635 +G01 X+38.431 Y-4.62 +G01 X+38.758 Y-6.595 +G01 X+38.825 Y-8.704 +G01 X+38.758 Y-34.864 +G01 X+38.484 Y-36.471 +G01 X+38.094 Y-37.706 +G01 X+38.087 Y-37.901 +G01 X+38.043 Y-38.007 +G01 X+37.902 Y-38.088 +G01 X+37.736 Y-38.091 +G01 X+36.122 Y-38.561 +G01 X+34.516 Y-38.775 +G01 X+6.986 Y-38.722 +G01 X+5.01 Y-38.439 +G01 X+2.901 Y-37.829 +G01 X+2.64 Y-37.73 +G01 X+2.427 Y-37.718 +G01 X+2.279 Y-37.568 +G01 Y-37.407 +G01 X+1.656 Y-35.38 +G01 X+1.321 Y-33.405 +G01 X+1.253 Y-31.203 +G01 X+1.321 Y-5.136 +G01 X+1.602 Y-3.529 +G01 X+2.003 Y-2.287 +G01 X+2.022 Y-2.142 +G01 X+2.172 Y-2.008 +G01 X+2.293 Y-2.002 +G01 X+3.877 Y-1.522 +G01 X+5.484 Y-1.303 +G01 X+33.014 Y-1.356 +G01 X+34.989 Y-1.647 +G01 X+37.099 Y-2.271 +G01 X+37.366 Y-2.375 +G01 X+37.492 Y-2.394 +G01 X+37.626 Y-2.534 +G01 X+37.632 Y-2.636 +G01 X+38.256 Y-4.62 +G01 X+38.599 Y-6.595 +G01 X+38.67 Y-8.704 +G01 X+38.6 Y-34.863 +G01 X+38.313 Y-36.471 +G01 X+37.904 Y-37.705 +G01 X+37.752 Y-37.9 +G01 X+36.123 Y-38.394 +G01 X+34.517 Y-38.619 +G01 X+6.986 Y-38.565 +G01 X+5.01 Y-38.268 +G01 X+3.148 Y-37.721 +G01 X+2.616 Y-37.515 +G01 X+2.485 Y-37.384 +G01 X+1.83 Y-35.38 +G01 X+1.478 Y-33.406 +G01 X+1.406 Y-31.203 +G01 X+1.465 Y-5.137 +G01 X+1.757 Y-3.529 +G01 X+2.17 Y-2.305 +G01 X+2.246 Y-2.207 +G01 X+3.877 Y-1.673 +G01 X+5.483 Y-1.443 +G01 X+32.891 Y-1.478 +G01 X+34.743 Y-1.734 +G01 X+36.722 Y-2.296 +G01 X+37.346 Y-2.536 +G01 X+37.45 Y-2.634 +G01 X+38.114 Y-4.62 +G01 X+38.471 Y-6.594 +G01 X+38.545 Y-8.704 +G01 X+38.496 Y-34.74 +G01 X+38.222 Y-36.346 +G01 X+37.753 Y-37.688 +G01 X+37.657 Y-37.781 +G01 X+36.123 Y-38.274 +G01 X+34.517 Y-38.507 +G01 X+7.109 Y-38.472 +G01 X+5.257 Y-38.212 +G01 X+3.278 Y-37.643 +G01 X+2.677 Y-37.408 +G01 X+2.592 Y-37.323 +G01 X+2.363 Y-36.735 +G01 X+1.795 Y-34.763 +G01 X+1.535 Y-32.911 +G01 X+1.527 Y-5.506 +G01 X+1.759 Y-3.908 +G01 X+2.256 Y-2.367 +G01 X+2.35 Y-2.272 +G01 X+3.638 Y-1.827 +G01 X+5.237 Y-1.549 +G01 X+31.296 Y-1.526 +G01 X+33.378 Y-1.601 +G01 X+35.345 Y-1.962 +G01 X+37.257 Y-2.605 +G01 X+37.346 Y-2.687 +G01 X+37.609 Y-3.285 +G01 X+38.176 Y-5.25 +G01 X+38.437 Y-7.093 +G01 X+38.445 Y-34.491 +G01 X+38.214 Y-36.079 +G01 X+37.715 Y-37.62 +G01 X+37.62 Y-37.715 +G01 X+36.346 Y-38.147 +G01 X+34.758 Y-38.423 +G01 X+8.552 Y-38.446 +G01 X+6.628 Y-38.371 +G01 X+4.671 Y-38.01 +G01 X+2.735 Y-37.354 +G01 X+2.643 Y-37.266 +G01 X+2.418 Y-36.689 +G01 X+1.855 Y-34.736 +G01 X+1.597 Y-32.903 +G01 X+1.622 Y-5.517 +G01 X+1.852 Y-3.954 +G01 X+2.342 Y-2.452 +G01 X+2.435 Y-2.357 +G01 X+3.692 Y-1.922 +G01 X+5.254 Y-1.651 +G01 X+31.296 Y-1.66 +G01 X+33.349 Y-1.737 +G01 X+35.269 Y-2.098 +G01 X+37.127 Y-2.737 +G01 X+37.215 Y-2.818 +G01 X+37.473 Y-3.4 +G01 X+38.033 Y-5.313 +G01 X+38.29 Y-7.113 +G01 X+38.265 Y-34.47 +G01 X+38.04 Y-35.992 +G01 X+37.556 Y-37.462 +G01 X+37.462 Y-37.557 +G01 X+36.363 Y-37.939 +G01 X+34.845 Y-38.226 +G01 X+8.552 Y-38.227 +G01 X+6.676 Y-38.15 +G01 X+4.794 Y-37.79 +G01 X+2.945 Y-37.142 +G01 X+2.855 Y-37.057 +G01 X+2.634 Y-36.507 +G01 X+2.079 Y-34.637 +G01 X+1.823 Y-32.872 +G01 X+1.848 Y-5.543 +G01 X+2.069 Y-4.062 +G01 X+2.538 Y-2.646 +G01 X+2.63 Y-2.552 +G01 X+3.7 Y-2.168 +G01 X+5.177 Y-1.887 +G01 X+31.296 Y-1.886 +G01 X+33.299 Y-1.963 +G01 X+35.144 Y-2.321 +G01 X+36.918 Y-2.949 +G01 X+37.005 Y-3.028 +G01 X+37.256 Y-3.581 +G01 X+37.809 Y-5.412 +G01 X+38.064 Y-7.144 +G01 X+38.039 Y-34.445 +G01 X+37.823 Y-35.884 +G01 X+37.36 Y-37.267 +G01 X+37.268 Y-37.361 +G01 X+36.236 Y-37.725 +G01 X+34.801 Y-38.001 +G01 X+8.552 Y-38 +G01 X+6.725 Y-37.924 +G01 X+4.918 Y-37.568 +G01 X+3.154 Y-36.93 +G01 X+3.067 Y-36.847 +G01 X+2.851 Y-36.326 +G01 X+2.303 Y-34.538 +G01 X+2.049 Y-32.84 +G01 X+2.074 Y-5.568 +G01 X+2.286 Y-4.17 +G01 X+2.734 Y-2.84 +G01 X+2.825 Y-2.747 +G01 X+3.827 Y-2.382 +G01 X+5.221 Y-2.111 +G01 X+31.296 Y-2.113 +G01 X+33.25 Y-2.189 +G01 X+35.02 Y-2.544 +G01 X+36.711 Y-3.161 +G01 X+36.795 Y-3.239 +G01 X+37.039 Y-3.763 +G01 X+37.584 Y-5.511 +G01 X+37.838 Y-7.175 +G01 X+37.819 Y-34.315 +G01 X+37.63 Y-35.671 +G01 X+37.164 Y-37.072 +G01 X+37.072 Y-37.165 +G01 X+36.109 Y-37.512 +G01 X+34.757 Y-37.776 +G01 X+8.552 Y-37.774 +G01 X+6.775 Y-37.698 +G01 X+5.042 Y-37.345 +G01 X+3.364 Y-36.719 +G01 X+3.278 Y-36.637 +G01 X+3.068 Y-36.144 +G01 X+2.528 Y-34.439 +G01 X+2.275 Y-32.809 +G01 X+2.294 Y-5.695 +G01 X+2.479 Y-4.38 +G01 X+2.93 Y-3.035 +G01 X+3.02 Y-2.942 +G01 X+3.954 Y-2.595 +G01 X+5.265 Y-2.336 +G01 X+31.296 Y-2.339 +G01 X+33.2 Y-2.415 +G01 X+34.896 Y-2.767 +G01 X+36.503 Y-3.373 +G01 X+36.585 Y-3.449 +G01 X+36.823 Y-3.944 +G01 X+37.36 Y-5.611 +G01 X+37.612 Y-7.206 +G01 X+37.593 Y-34.295 +G01 X+37.412 Y-35.569 +G01 X+36.968 Y-36.878 +G01 X+36.879 Y-36.97 +G01 X+36.176 Y-37.238 +G01 X+34.714 Y-37.551 +G01 X+8.552 Y-37.547 +G01 X+6.824 Y-37.472 +G01 X+5.166 Y-37.122 +G01 X+3.573 Y-36.507 +G01 X+3.49 Y-36.428 +G01 X+3.284 Y-35.963 +G01 X+2.752 Y-34.34 +G01 X+2.501 Y-32.778 +G01 X+2.517 Y-5.809 +G01 X+2.697 Y-4.482 +G01 X+3.126 Y-3.227 +G01 X+3.213 Y-3.137 +G01 X+3.894 Y-2.867 +G01 X+5.307 Y-2.561 +G01 X+31.296 Y-2.565 +G01 X+33.15 Y-2.641 +G01 X+34.772 Y-2.989 +G01 X+36.299 Y-3.587 +G01 X+36.375 Y-3.653 +G01 X+36.477 Y-3.833 +G01 X+37.083 Y-5.508 +G01 X+37.377 Y-7.133 +G01 X+37.37 Y-34.184 +G01 X+37.194 Y-35.467 +G01 X+36.772 Y-36.684 +G01 X+36.685 Y-36.774 +G01 X+36.035 Y-37.027 +G01 X+34.671 Y-37.327 +G01 X+8.552 Y-37.321 +G01 X+6.874 Y-37.246 +G01 X+5.29 Y-36.899 +G01 X+3.781 Y-36.295 +G01 X+3.702 Y-36.22 +G01 X+3.627 Y-36.063 +G01 X+3.028 Y-34.438 +G01 X+2.736 Y-32.849 +G01 X+2.743 Y-5.823 +G01 X+2.915 Y-4.584 +G01 X+3.322 Y-3.421 +G01 X+3.408 Y-3.332 +G01 X+4.035 Y-3.078 +G01 X+5.351 Y-2.786 +G01 X+31.296 Y-2.792 +G01 X+33.101 Y-2.867 +G01 X+34.648 Y-3.212 +G01 X+36.092 Y-3.799 +G01 X+36.263 Y-4.031 +G01 X+36.859 Y-5.617 +G01 X+37.151 Y-7.169 +G01 X+37.146 Y-34.086 +G01 X+36.996 Y-35.28 +G01 X+36.576 Y-36.489 +G01 X+36.49 Y-36.579 +G01 X+35.895 Y-36.817 +G01 X+34.627 Y-37.102 +G01 X+8.552 Y-37.094 +G01 X+6.924 Y-37.02 +G01 X+5.415 Y-36.677 +G01 X+3.99 Y-36.083 +G01 X+3.914 Y-36.011 +G01 X+3.841 Y-35.865 +G01 X+3.252 Y-34.329 +G01 X+2.962 Y-32.814 +G01 X+2.967 Y-5.918 +G01 X+3.114 Y-4.768 +G01 X+3.519 Y-3.615 +G01 X+3.603 Y-3.527 +G01 X+4.175 Y-3.289 +G01 X+5.395 Y-3.01 +G01 X+31.543 Y-3.019 +G01 X+33.052 Y-3.093 +G01 X+34.523 Y-3.435 +G01 X+35.884 Y-4.011 +G01 X+36.049 Y-4.23 +G01 X+36.636 Y-5.725 +G01 X+36.925 Y-7.204 +G01 X+36.92 Y-34.078 +G01 X+36.777 Y-35.185 +G01 X+36.38 Y-36.295 +G01 X+36.296 Y-36.383 +G01 X+35.754 Y-36.606 +G01 X+34.583 Y-36.877 +G01 X+8.552 Y-36.868 +G01 X+6.973 Y-36.794 +G01 X+5.539 Y-36.454 +G01 X+4.199 Y-35.871 +G01 X+4.055 Y-35.667 +G01 X+3.476 Y-34.221 +G01 X+3.188 Y-32.778 +G01 X+3.192 Y-6.002 +G01 X+3.333 Y-4.864 +G01 X+3.715 Y-3.808 +G01 X+3.797 Y-3.722 +G01 X+4.315 Y-3.5 +G01 X+5.439 Y-3.235 +G01 X+31.296 Y-3.245 +G01 X+32.913 Y-3.307 +G01 X+34.228 Y-3.601 +G01 X+35.676 Y-4.224 +G01 X+35.835 Y-4.428 +G01 X+36.411 Y-5.834 +G01 X+36.699 Y-7.239 +G01 X+36.694 Y-33.998 +G01 X+36.557 Y-35.089 +G01 X+36.184 Y-36.101 +G01 X+36.102 Y-36.187 +G01 X+35.614 Y-36.395 +G01 X+34.54 Y-36.652 +G01 X+8.552 Y-36.642 +G01 X+7.023 Y-36.568 +G01 X+5.663 Y-36.231 +G01 X+4.407 Y-35.659 +G01 X+4.269 Y-35.469 +G01 X+3.701 Y-34.112 +G01 X+3.414 Y-32.743 +G01 X+3.419 Y-6.242 +G01 X+3.536 Y-5.03 +G01 X+3.911 Y-4 +G01 X+3.989 Y-3.916 +G01 X+4.324 Y-3.762 +G01 X+5.34 Y-3.48 +G01 X+29.568 Y-3.468 +G01 X+32.696 Y-3.513 +G01 X+34.113 Y-3.824 +G01 X+35.469 Y-4.436 +G01 X+35.621 Y-4.627 +G01 X+36.187 Y-5.942 +G01 X+36.473 Y-7.275 +G01 X+36.468 Y-33.688 +G01 X+36.37 Y-34.859 +G01 X+35.987 Y-35.909 +G01 X+35.911 Y-35.992 +G01 X+35.724 Y-36.081 +G01 X+34.633 Y-36.407 +G01 X+8.552 Y-36.415 +G01 X+7.073 Y-36.342 +G01 X+5.788 Y-36.009 +G01 X+4.615 Y-35.447 +G01 X+4.484 Y-35.27 +G01 X+3.925 Y-34.003 +G01 X+3.64 Y-32.708 +G01 X+3.645 Y-6.242 +G01 X+3.756 Y-5.119 +G01 X+4.108 Y-4.192 +G01 X+4.182 Y-4.112 +G01 X+4.418 Y-3.995 +G01 X+5.395 Y-3.704 +G01 X+29.568 Y-3.695 +G01 X+32.66 Y-3.739 +G01 X+33.998 Y-4.048 +G01 X+35.263 Y-4.649 +G01 X+35.406 Y-4.825 +G01 X+35.963 Y-6.051 +G01 X+36.247 Y-7.31 +G01 X+36.242 Y-33.688 +G01 X+36.149 Y-34.776 +G01 X+35.791 Y-35.716 +G01 X+35.718 Y-35.796 +G01 X+35.557 Y-35.877 +G01 X+34.577 Y-36.183 +G01 X+8.797 Y-36.189 +G01 X+7.201 Y-36.128 +G01 X+5.985 Y-35.814 +G01 X+4.823 Y-35.234 +G01 X+4.698 Y-35.072 +G01 X+4.149 Y-33.895 +G01 X+3.866 Y-32.673 +G01 X+3.872 Y-6.242 +G01 X+3.962 Y-5.265 +G01 X+4.304 Y-4.385 +G01 X+4.375 Y-4.307 +G01 X+4.578 Y-4.201 +G01 X+5.451 Y-3.928 +G01 X+29.815 Y-3.922 +G01 X+32.624 Y-3.965 +G01 X+33.813 Y-4.245 +G01 X+34.944 Y-4.789 +G01 X+35.181 Y-5.016 +G01 X+35.739 Y-6.159 +G01 X+36.021 Y-7.345 +G01 X+36.015 Y-33.688 +G01 X+35.927 Y-34.692 +G01 X+35.595 Y-35.524 +G01 X+35.526 Y-35.6 +G01 X+35.39 Y-35.672 +G01 X+34.521 Y-35.959 +G01 X+8.797 Y-35.962 +G01 X+7.247 Y-35.901 +G01 X+6.105 Y-35.591 +G01 X+5.031 Y-35.021 +G01 X+4.912 Y-34.874 +G01 X+4.373 Y-33.787 +G01 X+4.092 Y-32.638 +G01 X+4.098 Y-6.481 +G01 X+4.171 Y-5.4 +G01 X+4.479 Y-4.613 +G01 X+4.688 Y-4.436 +G01 X+5.506 Y-4.153 +G01 X+32.47 Y-4.178 +G01 X+33.569 Y-4.42 +G01 X+34.635 Y-4.931 +G01 X+34.964 Y-5.214 +G01 X+35.514 Y-6.268 +G01 X+35.794 Y-7.38 +G01 X+35.789 Y-33.688 +G01 X+35.718 Y-34.562 +G01 X+35.422 Y-35.295 +G01 X+35.228 Y-35.462 +G01 X+34.466 Y-35.735 +G01 X+8.552 Y-35.736 +G01 X+7.292 Y-35.675 +G01 X+6.225 Y-35.368 +G01 X+5.237 Y-34.808 +G01 X+5.127 Y-34.676 +G01 X+4.598 Y-33.678 +G01 X+4.319 Y-32.603 +G01 X+4.324 Y-6.728 +G01 X+4.373 Y-5.567 +G01 X+4.678 Y-4.799 +G01 X+4.856 Y-4.64 +G01 X+5.561 Y-4.378 +G01 X+32.348 Y-4.395 +G01 X+33.405 Y-4.622 +G01 X+34.397 Y-5.112 +G01 X+34.751 Y-5.413 +G01 X+35.29 Y-6.376 +G01 X+35.568 Y-7.414 +G01 X+35.538 Y-34.276 +G01 X+35.281 Y-35.015 +G01 X+35.101 Y-35.225 +G01 X+34.412 Y-35.509 +G01 X+8.552 +G01 X+7.338 Y-35.449 +G01 X+6.345 Y-35.146 +G01 X+5.443 Y-34.594 +G01 X+5.342 Y-34.478 +G01 X+4.823 Y-33.57 +G01 X+4.545 Y-32.568 +G01 X+4.569 Y-5.784 +G01 X+4.784 Y-5.131 +G01 X+4.985 Y-4.879 +G01 X+5.616 Y-4.603 +G01 X+32.009 Y-4.605 +G01 X+33.01 Y-4.748 +G01 X+33.969 Y-5.166 +G01 X+34.536 Y-5.612 +G01 X+35.065 Y-6.484 +G01 X+35.342 Y-7.449 +G01 X+35.334 Y-34.023 +G01 X+35.192 Y-34.637 +G01 X+34.928 Y-35.015 +G01 X+34.357 Y-35.284 +G01 X+8.552 Y-35.283 +G01 X+7.384 Y-35.223 +G01 X+6.465 Y-34.923 +G01 X+5.649 Y-34.38 +G01 X+5.557 Y-34.28 +G01 X+5.048 Y-33.462 +G01 X+4.772 Y-32.534 +G01 X+4.778 Y-6.009 +G01 X+4.844 Y-5.6 +G01 X+5.113 Y-5.129 +G01 X+5.669 Y-4.831 +G01 X+32.008 Y-4.832 +G01 X+32.852 Y-4.949 +G01 X+33.673 Y-5.296 +G01 X+34.325 Y-5.812 +G01 X+34.84 Y-6.592 +G01 X+35.115 Y-7.484 +G01 X+35.109 Y-33.927 +G01 X+35.055 Y-34.327 +G01 X+34.792 Y-34.776 +G01 X+34.305 Y-35.055 +G01 X+8.552 Y-35.056 +G01 X+7.43 Y-34.997 +G01 X+6.559 Y-34.684 +G01 X+5.843 Y-34.157 +G00 Z-1.725 +G00 X-1.95 Y-40 +G00 Z-6.725 +G01 Z-7.95 F10000 +G01 X-1.904 Y+0.391 F12000 +G01 X-1.609 Y+1.091 +G01 X-1.069 Y+1.624 +G01 X-0.359 Y+1.913 +G01 X-0.007 Y+1.949 +G01 X+40.391 Y+1.904 +G01 X+41.091 Y+1.609 +G01 X+41.624 Y+1.069 +G01 X+41.913 Y+0.359 +G01 X+41.949 Y+0.007 +G01 X+41.904 Y-40.391 +G01 X+41.609 Y-41.091 +G01 X+41.069 Y-41.624 +G01 X+40.359 Y-41.913 +G01 X+40.007 Y-41.949 +G01 X-0.391 Y-41.904 +G01 X-0.544 Y-41.85 +G01 X-0.685 Y-41.817 +G01 X-1.135 Y-41.576 +G01 X-1.361 Y-41.386 +G01 X-1.727 Y-40.885 +G01 X-1.862 Y-40.55 +G01 X-1.94 Y-40.01 +G01 X-1.886 Y+0 +G01 X-1.88 Y+0.112 +G01 X-1.761 Y+0.663 +G01 X-1.538 Y+1.083 +G01 X-0.831 Y+1.683 +G01 X-0.56 Y+1.796 +G01 X+0.302 Y+1.881 +G01 X+40.082 Y+1.812 +G01 X+40.496 Y+1.743 +G01 X+40.799 Y+1.627 +G01 X+41.056 Y+1.473 +G01 X+41.273 Y+1.29 +G01 X+41.45 Y+1.085 +G01 X+41.722 Y+0.547 +G01 X+41.81 Y-0.556 +G01 X+41.788 Y-36.481 +G01 X+41.765 Y-40 +G01 X+41.691 Y-40.496 +G01 X+41.596 Y-40.749 +G01 X+41.429 Y-41.031 +G01 X+41.255 Y-41.236 +G01 X+40.99 Y-41.456 +G01 X+40.667 Y-41.628 +G01 X+39.701 Y-41.759 +G01 X+6.177 Y-41.749 +G01 X+2.616 Y-41.688 +G01 X+0 Y-41.684 +G01 X-0.59 Y-41.573 +G01 X-0.981 Y-41.365 +G01 X-1.176 Y-41.201 +G01 X-1.493 Y-40.768 +G01 X-1.61 Y-40.478 +G01 X-1.679 Y-40.01 +G01 X-1.73 Y-26.235 +G01 X-1.668 Y-3.025 +G01 X-1.643 Y+0 +G01 X-1.535 Y+0.576 +G01 X-1.342 Y+0.941 +G01 X-0.727 Y+1.465 +G01 X-0.491 Y+1.564 +G01 X+0.309 Y+1.64 +G01 X+11.79 Y+1.683 +G01 X+35.37 Y+1.618 +G01 X+39.568 Y+1.554 +G01 X+40.068 Y+1.551 +G01 X+40.422 Y+1.492 +G01 X+40.682 Y+1.393 +G01 X+40.902 Y+1.261 +G01 X+41.088 Y+1.104 +G01 X+41.239 Y+0.931 +G01 X+41.471 Y+0.472 +G01 X+41.549 Y-0.556 +G01 X+41.603 Y-4.63 +G01 X+41.626 Y-18.457 +G01 X+41.563 Y-36.728 +G01 X+41.522 Y-40 +G01 X+41.459 Y-40.426 +G01 X+41.377 Y-40.645 +G01 X+41.234 Y-40.888 +G01 X+41.084 Y-41.065 +G01 X+40.855 Y-41.255 +G01 X+40.58 Y-41.402 +G01 X+39.575 Y-41.518 +G01 X+35.741 Y-41.575 +G01 X+5.247 Y-41.524 +G01 X+2.616 Y-41.426 +G01 X+0 Y-41.422 +G01 X-0.495 Y-41.329 +G01 X-0.826 Y-41.154 +G01 X-0.991 Y-41.016 +G01 X-1.259 Y-40.651 +G01 X-1.359 Y-40.406 +G01 X-1.418 Y-40.01 +G01 X-1.454 Y-36.481 +G01 X-1.538 Y-30.958 +G01 X-1.466 Y-3.642 +G01 X-1.402 Y-0.802 +G01 X-1.401 Y+0 +G01 X-1.309 Y+0.488 +G01 X-1.146 Y+0.798 +G01 X-0.623 Y+1.247 +G01 X-0.423 Y+1.332 +G01 X+0.432 Y+1.398 +G01 X+3.272 Y+1.441 +G01 X+8.58 Y+1.489 +G01 X+34.63 Y+1.421 +G01 X+38.333 Y+1.294 +G01 X+40.054 Y+1.289 +G01 X+40.348 Y+1.241 +G01 X+40.565 Y+1.159 +G01 X+40.748 Y+1.049 +G01 X+40.903 Y+0.919 +G01 X+41.028 Y+0.776 +G01 X+41.22 Y+0.398 +G01 X+41.287 Y-0.679 +G01 X+41.333 Y-3.519 +G01 X+41.44 Y-8.21 +G01 X+41.373 Y-35.988 +G01 X+41.282 Y-38.704 +G01 X+41.28 Y-40 +G01 X+41.227 Y-40.356 +G01 X+41.159 Y-40.54 +G01 X+41.042 Y-40.739 +G01 X+40.725 Y-41.049 +G01 X+40.492 Y-41.176 +G01 X+39.568 Y-41.277 +G01 X+36.975 Y-41.318 +G01 X+33.025 Y-41.392 +G01 X+5.741 Y-41.326 +G01 X+2.616 Y-41.164 +G01 X+0 Y-41.16 +G01 X-0.4 Y-41.085 +G01 X-0.671 Y-40.942 +G01 X-0.802 Y-40.835 +G01 X-1.089 Y-40.383 +G01 X-1.156 Y-40.01 +G01 X-1.19 Y-36.852 +G01 X-1.341 Y-32.407 +G01 X-1.273 Y-4.136 +G01 X-1.161 Y-1.543 +G01 X-1.159 Y+0 +G01 X-1.084 Y+0.4 +G01 X-0.95 Y+0.656 +G01 X-0.518 Y+1.028 +G01 X-0.355 Y+1.1 +G01 X+0.556 Y+1.156 +G01 X+2.901 Y+1.198 +G01 X+6.552 Y+1.294 +G01 X+34.259 Y+1.222 +G01 X+38.086 Y+1.032 +G01 X+40.041 Y+1.028 +G01 X+40.268 Y+0.991 +G01 X+40.588 Y+0.84 +G01 X+40.718 Y+0.734 +G01 X+40.817 Y+0.621 +G01 X+40.969 Y+0.324 +G01 X+41.025 Y-0.926 +G01 X+41.065 Y-3.148 +G01 X+41.238 Y-7.099 +G01 X+41.168 Y-35.864 +G01 X+41.04 Y-38.333 +G01 X+41.038 Y-40 +G01 X+40.996 Y-40.286 +G01 X+40.942 Y-40.43 +G01 X+40.745 Y-40.717 +G01 X+40.587 Y-40.853 +G01 X+40.405 Y-40.951 +G01 X+39.568 Y-41.035 +G01 X+37.222 Y-41.074 +G01 X+34.012 Y-41.196 +G01 X+5.988 Y-41.127 +G01 X+2.616 Y-40.902 +G01 X+0 Y-40.898 +G01 X-0.299 Y-40.842 +G01 X-0.605 Y-40.653 +G01 X-0.842 Y-40.28 +G01 X-0.893 Y-38.333 +G01 X-0.939 Y-36.852 +G01 X-1.135 Y-33.025 +G01 X-1.072 Y-4.383 +G01 X-0.915 Y-1.667 +G01 X-0.912 Y+0 +G01 X-0.854 Y+0.31 +G01 X-0.751 Y+0.511 +G01 X-0.412 Y+0.806 +G01 X-0.285 Y+0.863 +G01 X+0.926 Y+0.909 +G01 X+2.778 Y+0.954 +G01 X+5.864 Y+1.093 +G01 X+33.823 Y+1.023 +G01 X+37.346 Y+0.766 +G01 X+40.173 Y+0.727 +G01 X+40.514 Y+0.548 +G01 X+40.598 Y+0.461 +G01 X+40.709 Y+0.247 +G01 X+40.806 Y-3.148 +G01 X+41.022 Y-6.728 +G01 X+40.968 Y-35.494 +G01 X+40.785 Y-38.21 +G01 X+40.782 Y-39.983 +G01 X+40.714 Y-40.301 +G01 X+40.452 Y-40.629 +G01 X+40.313 Y-40.713 +G01 X+39.444 Y-40.78 +G01 X+37.346 Y-40.818 +G01 X+34.506 Y-40.983 +G01 X+6.235 Y-40.916 +G01 X+2.901 Y-40.656 +G01 X+2.625 Y-40.622 +G01 X+0.014 Y-40.617 +G01 X-0.195 Y-40.58 +G01 X-0.407 Y-40.455 +G01 X-0.573 Y-40.203 +G01 X-0.673 Y-36.852 +G01 X-0.912 Y-33.395 +G01 X-0.861 Y-4.506 +G01 X-0.66 Y-1.79 +G01 X-0.657 Y-0.014 +G01 X-0.616 Y+0.215 +G01 X-0.545 Y+0.361 +G01 X-0.302 Y+0.576 +G01 X-0.163 Y+0.629 +G01 X+2.654 Y+0.698 +G01 X+5.37 Y+0.879 +G01 X+33.642 Y+0.819 +G01 X+36.852 Y+0.559 +G01 X+37.84 Y+0.49 +G01 X+40.096 Y+0.467 +G01 X+40.322 Y+0.356 +G01 X+40.4 Y+0.27 +G01 X+40.45 Y+0.17 +G01 X+40.518 Y-2.901 +G01 X+40.791 Y-6.111 +G01 X+40.829 Y-11.438 +G01 X+40.759 Y-35.494 +G01 X+40.539 Y-38.21 +G01 X+40.536 Y-39.983 +G01 X+40.492 Y-40.194 +G01 X+40.316 Y-40.424 +G01 X+40.226 Y-40.482 +G01 X+38.704 Y-40.533 +G01 X+37.346 Y-40.581 +G01 X+34.753 Y-40.777 +G01 X+6.358 Y-40.717 +G01 X+3.272 Y-40.45 +G01 X+2.626 Y-40.361 +G01 X+0.03 Y-40.355 +G01 X-0.193 Y-40.275 +G01 X-0.275 Y-40.193 +G01 X-0.344 Y-40.027 +G01 X-0.39 Y-37.099 +G01 X-0.682 Y-34.012 +G01 X-0.731 Y-29.976 +G01 X-0.653 Y-4.513 +G01 X-0.414 Y-1.92 +G01 X-0.41 Y-0.014 +G01 X-0.387 Y+0.126 +G01 X-0.303 Y+0.261 +G01 X-0.156 Y+0.366 +G01 X+2.407 Y+0.426 +G01 X+4.869 Y+0.659 +G01 X+33.635 Y+0.608 +G01 X+36.728 Y+0.317 +G01 X+37.716 Y+0.219 +G01 X+40.055 Y+0.175 +G01 X+40.181 Y+0.102 +G01 X+40.253 Y-2.901 +G01 X+40.57 Y-5.981 +G01 X+40.626 Y-9.691 +G01 X+40.558 Y-35.239 +G01 X+40.307 Y-37.585 +G01 X+40.281 Y-39.965 +G01 X+40.189 Y-40.179 +G01 X+40.058 Y-40.261 +G01 X+37.599 Y-40.298 +G01 X+35.131 Y-40.55 +G01 X+6.612 Y-40.511 +G01 X+3.642 Y-40.238 +G01 X+2.627 Y-40.081 +G01 X+0.247 Y-40.075 +G01 X+0.141 Y-40.031 +G01 X-0.032 Y-39.858 +G01 X-0.076 Y-39.754 +G01 X-0.119 Y-37.106 +G01 X-0.446 Y-34.266 +G01 X-0.524 Y-31.203 +G01 X-0.46 Y-4.761 +G01 X-0.192 Y-2.415 +G01 X-0.165 Y-0.023 +G01 X-0.081 Y+0.125 +G01 X+0.029 Y+0.165 +G01 X+2.4 Y+0.185 +G01 X+4.745 Y+0.448 +G01 X+11.543 Y+0.479 +G01 X+33.388 Y+0.423 +G01 X+36.111 Y+0.171 +G01 X+37.708 Y-0.033 +G01 X+39.817 Y-0.06 +G01 X+39.965 Y-0.207 +G01 X+40.01 Y-2.893 +G01 X+40.347 Y-5.61 +G01 X+40.44 Y-8.457 +G01 X+40.373 Y-35.238 +G01 X+40.089 Y-37.584 +G01 X+40.062 Y-39.909 +G01 X+39.913 Y-40.058 +G01 X+37.601 Y-40.082 +G01 X+35.255 Y-40.361 +G01 X+29.892 Y-40.395 +G01 X+6.612 Y-40.336 +G01 X+3.889 Y-40.07 +G01 X+2.628 Y-39.856 +G01 X+0.299 Y-39.851 +G01 X+0.149 Y-39.701 +G01 X+0.152 Y-37.395 +G01 X-0.224 Y-34.76 +G01 X-0.357 Y-32.037 +G01 X-0.297 Y-4.885 +G01 X-0.035 Y-2.654 +G01 X+0.036 Y-1.914 +G01 X+0.06 Y-0.185 +G01 X+0.208 Y-0.037 +G01 X+2.399 Y-0.015 +G01 X+4.744 Y+0.279 +G01 X+9.321 Y+0.316 +G01 X+33.388 Y+0.257 +G01 X+35.988 Y-0.004 +G01 X+37.581 Y-0.247 +G01 X+39.6 Y-0.251 +G01 X+39.75 Y-0.4 +G01 X+39.778 Y-2.768 +G01 X+40.152 Y-5.363 +G01 X+40.279 Y-7.963 +G01 X+40.218 Y-35.114 +G01 X+39.944 Y-37.346 +G01 X+39.869 Y-38.079 +G01 X+39.867 Y-39.718 +G01 X+39.718 Y-39.868 +G01 X+37.602 Y-39.891 +G01 X+35.256 Y-40.199 +G01 X+31.118 Y-40.239 +G01 X+6.613 Y-40.177 +G01 X+4.012 Y-39.904 +G01 X+2.629 Y-39.651 +G01 X+0.504 Y-39.646 +G01 X+0.354 Y-39.496 +G01 X+0.357 Y-37.396 +G01 X-0.056 Y-34.761 +G01 X-0.202 Y-32.037 +G01 X-0.142 Y-4.886 +G01 X+0.121 Y-2.778 +G01 X+0.221 Y-2.047 +G01 X+0.224 Y-0.373 +G01 X+0.372 Y-0.223 +G01 X+2.398 Y-0.198 +G01 X+4.497 Y+0.105 +G01 X+7.042 Y+0.167 +G01 X+33.264 Y+0.111 +G01 X+35.741 Y-0.14 +G01 X+37.581 Y-0.443 +G01 X+39.382 Y-0.448 +G01 X+39.488 Y-0.492 +G01 X+39.553 Y-0.616 +G01 X+39.585 Y-2.767 +G01 X+39.979 Y-5.24 +G01 X+40.13 Y-7.716 +G01 X+40.07 Y-35.114 +G01 X+39.797 Y-37.222 +G01 X+39.693 Y-37.953 +G01 X+39.69 Y-39.506 +G01 X+39.646 Y-39.612 +G01 X+39.507 Y-39.69 +G01 X+37.603 Y-39.717 +G01 X+35.503 Y-40.031 +G01 X+33.025 Y-40.097 +G01 X+6.736 Y-40.04 +G01 X+4.259 Y-39.778 +G01 X+2.629 Y-39.464 +G01 X+0.69 Y-39.446 +G01 X+0.541 Y-39.295 +G01 X+0.544 Y-37.397 +G01 X+0.098 Y-34.761 +G01 X-0.059 Y-32.284 +G01 X+0.006 Y-4.886 +G01 X+0.29 Y-2.778 +G01 X+0.398 Y-2.048 +G01 X+0.401 Y-0.551 +G01 X+0.551 Y-0.401 +G01 X+2.26 Y-0.403 +G01 X+4.373 Y-0.058 +G01 X+6.552 Y+0.023 +G01 X+33.264 Y-0.039 +G01 X+35.741 Y-0.312 +G01 X+37.58 Y-0.64 +G01 X+39.208 Y-0.644 +G01 X+39.358 Y-0.791 +G01 X+39.391 Y-2.766 +G01 X+39.818 Y-5.239 +G01 X+39.979 Y-7.593 +G01 X+39.915 Y-35.113 +G01 X+39.644 Y-37.099 +G01 X+39.507 Y-37.951 +G01 X+39.504 Y-39.355 +G01 X+39.356 Y-39.505 +G01 X+37.604 Y-39.533 +G01 X+35.627 Y-39.861 +G01 X+33.519 Y-39.945 +G01 X+6.737 Y-39.882 +G01 X+4.39 Y-39.62 +G01 X+2.631 Y-39.258 +G01 X+0.896 Y-39.254 +G01 X+0.747 Y-39.103 +G01 X+0.749 Y-37.398 +G01 X+0.297 Y-35.008 +G01 X+0.103 Y-32.654 +G01 X+0.161 Y-4.887 +G01 X+0.467 Y-2.778 +G01 X+0.583 Y-2.049 +G01 X+0.587 Y-0.741 +G01 X+0.631 Y-0.635 +G01 X+0.741 Y-0.587 +G01 X+2.259 Y-0.588 +G01 X+4.373 Y-0.215 +G01 X+6.552 Y-0.128 +G01 X+33.263 Y-0.191 +G01 X+35.617 Y-0.462 +G01 X+37.579 Y-0.836 +G01 X+39.01 Y-0.84 +G01 X+39.16 Y-0.989 +G01 X+39.168 Y-2.64 +G01 X+39.625 Y-4.992 +G01 X+39.826 Y-7.346 +G01 X+39.767 Y-35.113 +G01 X+39.477 Y-37.099 +G01 X+39.33 Y-37.951 +G01 X+39.322 Y-39.178 +G01 X+39.172 Y-39.327 +G01 X+37.73 Y-39.328 +G01 X+35.751 Y-39.696 +G01 X+33.765 Y-39.801 +G01 X+6.737 Y-39.737 +G01 X+4.39 Y-39.458 +G01 X+2.632 Y-39.072 +G01 X+1.111 Y-39.066 +G01 X+1.006 Y-39.022 +G01 X+0.934 Y-38.888 +G01 X+0.936 Y-37.4 +G01 X+0.472 Y-35.131 +G01 X+0.256 Y-32.909 +G01 X+0.312 Y-4.887 +G01 X+0.585 Y-3.025 +G01 X+0.765 Y-2.05 +G01 X+0.768 Y-0.919 +G01 X+0.919 Y-0.769 +G01 X+2.257 Y-0.77 +G01 X+4.126 Y-0.402 +G01 X+5.988 Y-0.277 +G01 X+33.263 Y-0.348 +G01 X+35.617 Y-0.64 +G01 X+37.578 Y-1.041 +G01 X+38.765 Y-1.046 +G01 X+38.871 Y-1.09 +G01 X+38.954 Y-1.234 +G01 X+38.962 Y-2.639 +G01 X+39.433 Y-4.869 +G01 X+39.658 Y-7.091 +G01 X+39.602 Y-35.112 +G01 X+39.318 Y-36.975 +G01 X+39.132 Y-37.949 +G01 X+39.128 Y-38.978 +G01 X+38.978 Y-39.128 +G01 X+37.731 Y-39.129 +G01 X+35.874 Y-39.509 +G01 X+34.012 Y-39.638 +G01 X+6.738 Y-39.565 +G01 X+4.391 Y-39.264 +G01 X+2.632 Y-38.848 +G01 X+1.307 Y-38.829 +G01 X+1.158 Y-38.679 +G01 X+1.16 Y-37.401 +G01 X+0.672 Y-35.198 +G01 X+0.434 Y-33.033 +G01 X+0.488 Y-4.888 +G01 X+0.783 Y-3.025 +G01 X+0.976 Y-2.051 +G01 X+0.98 Y-1.13 +G01 X+1.13 Y-0.98 +G01 X+2.256 Y-0.982 +G01 X+4.126 Y-0.585 +G01 X+5.988 Y-0.45 +G01 X+33.262 Y-0.528 +G01 X+35.617 Y-0.842 +G01 X+37.578 Y-1.275 +G01 X+38.574 Y-1.294 +G01 X+38.721 Y-1.443 +G01 X+38.73 Y-2.638 +G01 X+39.237 Y-4.868 +G01 X+39.479 Y-7.091 +G01 X+39.438 Y-34.866 +G01 X+39.168 Y-36.728 +G01 X+38.912 Y-37.948 +G01 X+38.907 Y-38.757 +G01 X+38.758 Y-38.907 +G01 X+37.732 Y-38.909 +G01 X+35.875 Y-39.318 +G01 X+34.012 Y-39.458 +G01 X+6.738 Y-39.379 +G01 X+4.638 Y-39.103 +G01 X+2.632 Y-38.605 +G01 X+1.549 Y-38.583 +G01 X+1.401 Y-38.433 +G01 X+1.403 Y-37.402 +G01 X+0.886 Y-35.256 +G01 X+0.619 Y-33.034 +G01 X+0.655 Y-5.135 +G01 X+0.934 Y-3.272 +G01 X+1.201 Y-2.053 +G01 X+1.205 Y-1.358 +G01 X+1.249 Y-1.252 +G01 X+1.359 Y-1.205 +G01 X+2.254 Y-1.206 +G01 X+4.002 Y-0.798 +G01 X+5.734 Y-0.637 +G01 X+33.262 Y-0.715 +G01 X+35.363 Y-1.001 +G01 X+37.578 Y-1.518 +G01 X+38.332 Y-1.54 +G01 X+38.479 Y-1.688 +G01 X+38.488 Y-2.637 +G01 X+39.034 Y-4.868 +G01 X+39.288 Y-6.966 +G01 X+39.274 Y-34.497 +G01 X+39.045 Y-36.351 +G01 X+38.687 Y-37.947 +G01 X+38.683 Y-38.518 +G01 X+38.639 Y-38.624 +G01 X+38.518 Y-38.683 +G01 X+37.734 Y-38.685 +G01 X+35.998 Y-39.104 +G01 X+34.267 Y-39.271 +G01 X+6.985 Y-39.209 +G01 X+4.886 Y-38.944 +G01 X+2.778 Y-38.41 +G01 X+2.637 Y-38.364 +G01 X+1.79 Y-38.337 +G01 X+1.644 Y-38.187 +G01 X+1.645 Y-37.403 +G01 X+1.091 Y-35.256 +G01 X+0.805 Y-33.034 +G01 X+0.792 Y-15.75 +G01 X+0.838 Y-5.135 +G01 X+1.135 Y-3.281 +G01 X+1.418 Y-2.292 +G01 X+1.425 Y-1.605 +G01 X+1.469 Y-1.499 +G01 X+1.605 Y-1.425 +G01 X+2.253 Y-1.426 +G01 X+4.001 Y-0.989 +G01 X+5.733 Y-0.817 +G01 X+33.015 Y-0.877 +G01 X+34.991 Y-1.126 +G01 X+37.099 Y-1.661 +G01 X+37.451 Y-1.751 +G01 X+38.096 Y-1.756 +G01 X+38.245 Y-1.904 +G01 X+38.256 Y-2.636 +G01 X+38.838 Y-4.867 +G01 X+39.11 Y-6.966 +G01 X+39.13 Y-18.704 +G01 X+39.076 Y-34.864 +G01 X+38.77 Y-36.719 +G01 X+38.478 Y-37.709 +G01 X+38.46 Y-38.325 +G01 X+38.31 Y-38.472 +G01 X+37.735 Y-38.474 +G01 X+35.999 Y-38.921 +G01 X+34.267 Y-39.098 +G01 X+6.985 Y-39.037 +G01 X+5.009 Y-38.781 +G01 X+2.901 Y-38.23 +G01 X+2.639 Y-38.141 +G01 X+2.018 Y-38.132 +G01 X+1.868 Y-37.982 +G01 X+1.869 Y-37.405 +G01 X+1.306 Y-35.379 +G01 X+1.004 Y-33.404 +G01 X+0.943 Y-30.958 +G01 X+1.006 Y-5.136 +G01 X+1.321 Y-3.281 +G01 X+1.621 Y-2.293 +G01 X+1.628 Y-1.778 +G01 X+1.778 Y-1.628 +G01 X+2.252 Y-1.629 +G01 X+4.001 Y-1.165 +G01 X+5.733 Y-0.982 +G01 X+33.015 Y-1.042 +G01 X+34.99 Y-1.305 +G01 X+37.099 Y-1.87 +G01 X+37.45 Y-1.965 +G01 X+37.881 Y-1.971 +G01 X+38.031 Y-2.118 +G01 X+38.042 Y-2.635 +G01 X+38.607 Y-4.621 +G01 X+38.917 Y-6.595 +G01 X+38.98 Y-8.951 +G01 X+38.915 Y-34.865 +G01 X+38.655 Y-36.472 +G01 X+38.284 Y-37.707 +G01 X+38.277 Y-38.128 +G01 X+38.128 Y-38.277 +G01 X+37.736 Y-38.28 +G01 X+35.999 Y-38.752 +G01 X+34.391 Y-38.936 +G01 X+6.985 Y-38.88 +G01 X+5.01 Y-38.61 +G01 X+2.901 Y-38.029 +G01 X+2.64 Y-37.936 +G01 X+2.224 Y-37.926 +G01 X+2.074 Y-37.776 +G01 Y-37.406 +G01 X+1.481 Y-35.38 +G01 X+1.163 Y-33.405 +G01 X+1.098 Y-31.203 +G01 X+1.164 Y-5.136 +G01 X+1.431 Y-3.528 +G01 X+1.811 Y-2.294 +G01 X+1.818 Y-1.976 +G01 X+1.862 Y-1.87 +G01 X+1.976 Y-1.818 +G01 X+2.251 Y-1.819 +G01 X+3.878 Y-1.356 +G01 X+5.484 Y-1.147 +G01 X+33.014 Y-1.199 +G01 X+34.99 Y-1.476 +G01 X+37.099 Y-2.071 +G01 X+37.449 Y-2.171 +G01 X+37.654 Y-2.177 +G01 X+37.76 Y-2.22 +G01 X+37.826 Y-2.343 +G01 X+37.837 Y-2.635 +G01 X+38.431 Y-4.62 +G01 X+38.758 Y-6.595 +G01 X+38.825 Y-8.704 +G01 X+38.758 Y-34.864 +G01 X+38.484 Y-36.471 +G01 X+38.094 Y-37.706 +G01 X+38.087 Y-37.901 +G01 X+38.043 Y-38.007 +G01 X+37.902 Y-38.088 +G01 X+37.736 Y-38.091 +G01 X+36.122 Y-38.561 +G01 X+34.516 Y-38.775 +G01 X+6.986 Y-38.722 +G01 X+5.01 Y-38.439 +G01 X+2.901 Y-37.829 +G01 X+2.64 Y-37.73 +G01 X+2.427 Y-37.718 +G01 X+2.279 Y-37.568 +G01 Y-37.407 +G01 X+1.656 Y-35.38 +G01 X+1.321 Y-33.405 +G01 X+1.253 Y-31.203 +G01 X+1.321 Y-5.136 +G01 X+1.602 Y-3.529 +G01 X+2.003 Y-2.287 +G01 X+2.022 Y-2.142 +G01 X+2.172 Y-2.008 +G01 X+2.293 Y-2.002 +G01 X+3.877 Y-1.522 +G01 X+5.484 Y-1.303 +G01 X+33.014 Y-1.356 +G01 X+34.989 Y-1.647 +G01 X+37.099 Y-2.271 +G01 X+37.366 Y-2.375 +G01 X+37.492 Y-2.394 +G01 X+37.626 Y-2.534 +G01 X+37.632 Y-2.636 +G01 X+38.256 Y-4.62 +G01 X+38.599 Y-6.595 +G01 X+38.67 Y-8.704 +G01 X+38.6 Y-34.863 +G01 X+38.313 Y-36.471 +G01 X+37.904 Y-37.705 +G01 X+37.752 Y-37.9 +G01 X+36.123 Y-38.394 +G01 X+34.517 Y-38.619 +G01 X+6.986 Y-38.565 +G01 X+5.01 Y-38.268 +G01 X+3.148 Y-37.721 +G01 X+2.616 Y-37.515 +G01 X+2.485 Y-37.384 +G01 X+1.83 Y-35.38 +G01 X+1.478 Y-33.406 +G01 X+1.406 Y-31.203 +G01 X+1.465 Y-5.137 +G01 X+1.757 Y-3.529 +G01 X+2.17 Y-2.305 +G01 X+2.246 Y-2.207 +G01 X+3.877 Y-1.673 +G01 X+5.483 Y-1.443 +G01 X+32.891 Y-1.478 +G01 X+34.743 Y-1.734 +G01 X+36.722 Y-2.296 +G01 X+37.346 Y-2.536 +G01 X+37.45 Y-2.634 +G01 X+38.114 Y-4.62 +G01 X+38.471 Y-6.594 +G01 X+38.545 Y-8.704 +G01 X+38.496 Y-34.74 +G01 X+38.222 Y-36.346 +G01 X+37.753 Y-37.688 +G01 X+37.657 Y-37.781 +G01 X+36.123 Y-38.274 +G01 X+34.517 Y-38.507 +G01 X+7.109 Y-38.472 +G01 X+5.257 Y-38.212 +G01 X+3.278 Y-37.643 +G01 X+2.677 Y-37.408 +G01 X+2.592 Y-37.323 +G01 X+2.363 Y-36.735 +G01 X+1.795 Y-34.763 +G01 X+1.535 Y-32.911 +G01 X+1.527 Y-5.506 +G01 X+1.759 Y-3.908 +G01 X+2.256 Y-2.367 +G01 X+2.35 Y-2.272 +G01 X+3.638 Y-1.827 +G01 X+5.237 Y-1.549 +G01 X+31.296 Y-1.526 +G01 X+33.378 Y-1.601 +G01 X+35.345 Y-1.962 +G01 X+37.257 Y-2.605 +G01 X+37.346 Y-2.687 +G01 X+37.609 Y-3.285 +G01 X+38.176 Y-5.25 +G01 X+38.437 Y-7.093 +G01 X+38.445 Y-34.491 +G01 X+38.214 Y-36.079 +G01 X+37.715 Y-37.62 +G01 X+37.62 Y-37.715 +G01 X+36.346 Y-38.147 +G01 X+34.758 Y-38.423 +G01 X+8.552 Y-38.446 +G01 X+6.628 Y-38.371 +G01 X+4.671 Y-38.01 +G01 X+2.735 Y-37.354 +G01 X+2.643 Y-37.266 +G01 X+2.418 Y-36.689 +G01 X+1.855 Y-34.736 +G01 X+1.597 Y-32.903 +G01 X+1.622 Y-5.517 +G01 X+1.852 Y-3.954 +G01 X+2.342 Y-2.452 +G01 X+2.435 Y-2.357 +G01 X+3.692 Y-1.922 +G01 X+5.254 Y-1.651 +G01 X+31.296 Y-1.66 +G01 X+33.349 Y-1.737 +G01 X+35.269 Y-2.098 +G01 X+37.127 Y-2.737 +G01 X+37.215 Y-2.818 +G01 X+37.473 Y-3.4 +G01 X+38.033 Y-5.313 +G01 X+38.29 Y-7.113 +G01 X+38.265 Y-34.47 +G01 X+38.04 Y-35.992 +G01 X+37.556 Y-37.462 +G01 X+37.462 Y-37.557 +G01 X+36.363 Y-37.939 +G01 X+34.845 Y-38.226 +G01 X+8.552 Y-38.227 +G01 X+6.676 Y-38.15 +G01 X+4.794 Y-37.79 +G01 X+2.945 Y-37.142 +G01 X+2.855 Y-37.057 +G01 X+2.634 Y-36.507 +G01 X+2.079 Y-34.637 +G01 X+1.823 Y-32.872 +G01 X+1.848 Y-5.543 +G01 X+2.069 Y-4.062 +G01 X+2.538 Y-2.646 +G01 X+2.63 Y-2.552 +G01 X+3.7 Y-2.168 +G01 X+5.177 Y-1.887 +G01 X+31.296 Y-1.886 +G01 X+33.299 Y-1.963 +G01 X+35.144 Y-2.321 +G01 X+36.918 Y-2.949 +G01 X+37.005 Y-3.028 +G01 X+37.256 Y-3.581 +G01 X+37.809 Y-5.412 +G01 X+38.064 Y-7.144 +G01 X+38.039 Y-34.445 +G01 X+37.823 Y-35.884 +G01 X+37.36 Y-37.267 +G01 X+37.268 Y-37.361 +G01 X+36.236 Y-37.725 +G01 X+34.801 Y-38.001 +G01 X+8.552 Y-38 +G01 X+6.725 Y-37.924 +G01 X+4.918 Y-37.568 +G01 X+3.154 Y-36.93 +G01 X+3.067 Y-36.847 +G01 X+2.851 Y-36.326 +G01 X+2.303 Y-34.538 +G01 X+2.049 Y-32.84 +G01 X+2.074 Y-5.568 +G01 X+2.286 Y-4.17 +G01 X+2.734 Y-2.84 +G01 X+2.825 Y-2.747 +G01 X+3.827 Y-2.382 +G01 X+5.221 Y-2.111 +G01 X+31.296 Y-2.113 +G01 X+33.25 Y-2.189 +G01 X+35.02 Y-2.544 +G01 X+36.711 Y-3.161 +G01 X+36.795 Y-3.239 +G01 X+37.039 Y-3.763 +G01 X+37.584 Y-5.511 +G01 X+37.838 Y-7.175 +G01 X+37.819 Y-34.315 +G01 X+37.63 Y-35.671 +G01 X+37.164 Y-37.072 +G01 X+37.072 Y-37.165 +G01 X+36.109 Y-37.512 +G01 X+34.757 Y-37.776 +G01 X+8.552 Y-37.774 +G01 X+6.775 Y-37.698 +G01 X+5.042 Y-37.345 +G01 X+3.364 Y-36.719 +G01 X+3.278 Y-36.637 +G01 X+3.068 Y-36.144 +G01 X+2.528 Y-34.439 +G01 X+2.275 Y-32.809 +G01 X+2.294 Y-5.695 +G01 X+2.479 Y-4.38 +G01 X+2.93 Y-3.035 +G01 X+3.02 Y-2.942 +G01 X+3.954 Y-2.595 +G01 X+5.265 Y-2.336 +G01 X+31.296 Y-2.339 +G01 X+33.2 Y-2.415 +G01 X+34.896 Y-2.767 +G01 X+36.503 Y-3.373 +G01 X+36.585 Y-3.449 +G01 X+36.823 Y-3.944 +G01 X+37.36 Y-5.611 +G01 X+37.612 Y-7.206 +G01 X+37.593 Y-34.295 +G01 X+37.412 Y-35.569 +G01 X+36.968 Y-36.878 +G01 X+36.879 Y-36.97 +G01 X+36.176 Y-37.238 +G01 X+34.714 Y-37.551 +G01 X+8.552 Y-37.547 +G01 X+6.824 Y-37.472 +G01 X+5.166 Y-37.122 +G01 X+3.573 Y-36.507 +G01 X+3.49 Y-36.428 +G01 X+3.284 Y-35.963 +G01 X+2.752 Y-34.34 +G01 X+2.501 Y-32.778 +G01 X+2.517 Y-5.809 +G01 X+2.697 Y-4.482 +G01 X+3.126 Y-3.227 +G01 X+3.213 Y-3.137 +G01 X+3.894 Y-2.867 +G01 X+5.307 Y-2.561 +G01 X+31.296 Y-2.565 +G01 X+33.15 Y-2.641 +G01 X+34.772 Y-2.989 +G01 X+36.299 Y-3.587 +G01 X+36.375 Y-3.653 +G01 X+36.477 Y-3.833 +G01 X+37.083 Y-5.508 +G01 X+37.377 Y-7.133 +G01 X+37.37 Y-34.184 +G01 X+37.194 Y-35.467 +G01 X+36.772 Y-36.684 +G01 X+36.685 Y-36.774 +G01 X+36.035 Y-37.027 +G01 X+34.671 Y-37.327 +G01 X+8.552 Y-37.321 +G01 X+6.874 Y-37.246 +G01 X+5.29 Y-36.899 +G01 X+3.781 Y-36.295 +G01 X+3.702 Y-36.22 +G01 X+3.627 Y-36.063 +G01 X+3.028 Y-34.438 +G01 X+2.736 Y-32.849 +G01 X+2.743 Y-5.823 +G01 X+2.915 Y-4.584 +G01 X+3.322 Y-3.421 +G01 X+3.408 Y-3.332 +G01 X+4.035 Y-3.078 +G01 X+5.351 Y-2.786 +G01 X+31.296 Y-2.792 +G01 X+33.101 Y-2.867 +G01 X+34.648 Y-3.212 +G01 X+36.092 Y-3.799 +G01 X+36.263 Y-4.031 +G01 X+36.859 Y-5.617 +G01 X+37.151 Y-7.169 +G01 X+37.146 Y-34.086 +G01 X+36.996 Y-35.28 +G01 X+36.576 Y-36.489 +G01 X+36.49 Y-36.579 +G01 X+35.895 Y-36.817 +G01 X+34.627 Y-37.102 +G01 X+8.552 Y-37.094 +G01 X+6.924 Y-37.02 +G01 X+5.415 Y-36.677 +G01 X+3.99 Y-36.083 +G01 X+3.914 Y-36.011 +G01 X+3.841 Y-35.865 +G01 X+3.252 Y-34.329 +G01 X+2.962 Y-32.814 +G01 X+2.967 Y-5.918 +G01 X+3.114 Y-4.768 +G01 X+3.519 Y-3.615 +G01 X+3.603 Y-3.527 +G01 X+4.175 Y-3.289 +G01 X+5.395 Y-3.01 +G01 X+31.543 Y-3.019 +G01 X+33.052 Y-3.093 +G01 X+34.523 Y-3.435 +G01 X+35.884 Y-4.011 +G01 X+36.049 Y-4.23 +G01 X+36.636 Y-5.725 +G01 X+36.925 Y-7.204 +G01 X+36.92 Y-34.078 +G01 X+36.777 Y-35.185 +G01 X+36.38 Y-36.295 +G01 X+36.296 Y-36.383 +G01 X+35.754 Y-36.606 +G01 X+34.583 Y-36.877 +G01 X+8.552 Y-36.868 +G01 X+6.973 Y-36.794 +G01 X+5.539 Y-36.454 +G01 X+4.199 Y-35.871 +G01 X+4.055 Y-35.667 +G01 X+3.476 Y-34.221 +G01 X+3.188 Y-32.778 +G01 X+3.192 Y-6.002 +G01 X+3.333 Y-4.864 +G01 X+3.715 Y-3.808 +G01 X+3.797 Y-3.722 +G01 X+4.315 Y-3.5 +G01 X+5.439 Y-3.235 +G01 X+31.296 Y-3.245 +G01 X+32.913 Y-3.307 +G01 X+34.228 Y-3.601 +G01 X+35.676 Y-4.224 +G01 X+35.835 Y-4.428 +G01 X+36.411 Y-5.834 +G01 X+36.699 Y-7.239 +G01 X+36.694 Y-33.998 +G01 X+36.557 Y-35.089 +G01 X+36.184 Y-36.101 +G01 X+36.102 Y-36.187 +G01 X+35.614 Y-36.395 +G01 X+34.54 Y-36.652 +G01 X+8.552 Y-36.642 +G01 X+7.023 Y-36.568 +G01 X+5.663 Y-36.231 +G01 X+4.407 Y-35.659 +G01 X+4.269 Y-35.469 +G01 X+3.701 Y-34.112 +G01 X+3.414 Y-32.743 +G01 X+3.419 Y-6.242 +G01 X+3.536 Y-5.03 +G01 X+3.911 Y-4 +G01 X+3.989 Y-3.916 +G01 X+4.324 Y-3.762 +G01 X+5.34 Y-3.48 +G01 X+29.568 Y-3.468 +G01 X+32.696 Y-3.513 +G01 X+34.113 Y-3.824 +G01 X+35.469 Y-4.436 +G01 X+35.621 Y-4.627 +G01 X+36.187 Y-5.942 +G01 X+36.473 Y-7.275 +G01 X+36.468 Y-33.688 +G01 X+36.37 Y-34.859 +G01 X+35.987 Y-35.909 +G01 X+35.911 Y-35.992 +G01 X+35.724 Y-36.081 +G01 X+34.633 Y-36.407 +G01 X+8.552 Y-36.415 +G01 X+7.073 Y-36.342 +G01 X+5.788 Y-36.009 +G01 X+4.615 Y-35.447 +G01 X+4.484 Y-35.27 +G01 X+3.925 Y-34.003 +G01 X+3.64 Y-32.708 +G01 X+3.645 Y-6.242 +G01 X+3.756 Y-5.119 +G01 X+4.108 Y-4.192 +G01 X+4.182 Y-4.112 +G01 X+4.418 Y-3.995 +G01 X+5.395 Y-3.704 +G01 X+29.568 Y-3.695 +G01 X+32.66 Y-3.739 +G01 X+33.998 Y-4.048 +G01 X+35.263 Y-4.649 +G01 X+35.406 Y-4.825 +G01 X+35.963 Y-6.051 +G01 X+36.247 Y-7.31 +G01 X+36.242 Y-33.688 +G01 X+36.149 Y-34.776 +G01 X+35.791 Y-35.716 +G01 X+35.718 Y-35.796 +G01 X+35.557 Y-35.877 +G01 X+34.577 Y-36.183 +G01 X+8.797 Y-36.189 +G01 X+7.201 Y-36.128 +G01 X+5.985 Y-35.814 +G01 X+4.823 Y-35.234 +G01 X+4.698 Y-35.072 +G01 X+4.149 Y-33.895 +G01 X+3.866 Y-32.673 +G01 X+3.872 Y-6.242 +G01 X+3.962 Y-5.265 +G01 X+4.304 Y-4.385 +G01 X+4.375 Y-4.307 +G01 X+4.578 Y-4.201 +G01 X+5.451 Y-3.928 +G01 X+29.815 Y-3.922 +G01 X+32.624 Y-3.965 +G01 X+33.813 Y-4.245 +G01 X+34.944 Y-4.789 +G01 X+35.181 Y-5.016 +G01 X+35.739 Y-6.159 +G01 X+36.021 Y-7.345 +G01 X+36.015 Y-33.688 +G01 X+35.927 Y-34.692 +G01 X+35.595 Y-35.524 +G01 X+35.526 Y-35.6 +G01 X+35.39 Y-35.672 +G01 X+34.521 Y-35.959 +G01 X+8.797 Y-35.962 +G01 X+7.247 Y-35.901 +G01 X+6.105 Y-35.591 +G01 X+5.031 Y-35.021 +G01 X+4.912 Y-34.874 +G01 X+4.373 Y-33.787 +G01 X+4.092 Y-32.638 +G01 X+4.098 Y-6.481 +G01 X+4.171 Y-5.4 +G01 X+4.479 Y-4.613 +G01 X+4.688 Y-4.436 +G01 X+5.506 Y-4.153 +G01 X+32.47 Y-4.178 +G01 X+33.569 Y-4.42 +G01 X+34.635 Y-4.931 +G01 X+34.964 Y-5.214 +G01 X+35.514 Y-6.268 +G01 X+35.794 Y-7.38 +G01 X+35.789 Y-33.688 +G01 X+35.718 Y-34.562 +G01 X+35.422 Y-35.295 +G01 X+35.228 Y-35.462 +G01 X+34.466 Y-35.735 +G01 X+8.552 Y-35.736 +G01 X+7.292 Y-35.675 +G01 X+6.225 Y-35.368 +G01 X+5.237 Y-34.808 +G01 X+5.127 Y-34.676 +G01 X+4.598 Y-33.678 +G01 X+4.319 Y-32.603 +G01 X+4.324 Y-6.728 +G01 X+4.373 Y-5.567 +G01 X+4.678 Y-4.799 +G01 X+4.856 Y-4.64 +G01 X+5.561 Y-4.378 +G01 X+32.348 Y-4.395 +G01 X+33.405 Y-4.622 +G01 X+34.397 Y-5.112 +G01 X+34.751 Y-5.413 +G01 X+35.29 Y-6.376 +G01 X+35.568 Y-7.414 +G01 X+35.538 Y-34.276 +G01 X+35.281 Y-35.015 +G01 X+35.101 Y-35.225 +G01 X+34.412 Y-35.509 +G01 X+8.552 +G01 X+7.338 Y-35.449 +G01 X+6.345 Y-35.146 +G01 X+5.443 Y-34.594 +G01 X+5.342 Y-34.478 +G01 X+4.823 Y-33.57 +G01 X+4.545 Y-32.568 +G01 X+4.569 Y-5.784 +G01 X+4.784 Y-5.131 +G01 X+4.985 Y-4.879 +G01 X+5.616 Y-4.603 +G01 X+32.009 Y-4.605 +G01 X+33.01 Y-4.748 +G01 X+33.969 Y-5.166 +G01 X+34.536 Y-5.612 +G01 X+35.065 Y-6.484 +G01 X+35.342 Y-7.449 +G01 X+35.334 Y-34.023 +G01 X+35.192 Y-34.637 +G01 X+34.928 Y-35.015 +G01 X+34.357 Y-35.284 +G01 X+8.552 Y-35.283 +G01 X+7.384 Y-35.223 +G01 X+6.465 Y-34.923 +G01 X+5.649 Y-34.38 +G01 X+5.557 Y-34.28 +G01 X+5.048 Y-33.462 +G01 X+4.772 Y-32.534 +G01 X+4.778 Y-6.009 +G01 X+4.844 Y-5.6 +G01 X+5.113 Y-5.129 +G01 X+5.669 Y-4.831 +G01 X+32.008 Y-4.832 +G01 X+32.852 Y-4.949 +G01 X+33.673 Y-5.296 +G01 X+34.325 Y-5.812 +G01 X+34.84 Y-6.592 +G01 X+35.115 Y-7.484 +G01 X+35.109 Y-33.927 +G01 X+35.055 Y-34.327 +G01 X+34.792 Y-34.776 +G01 X+34.305 Y-35.055 +G01 X+8.552 Y-35.056 +G01 X+7.43 Y-34.997 +G01 X+6.559 Y-34.684 +G01 X+5.843 Y-34.157 +G01 Z-2.95 F10000 +G00 Z+2.05 +(#HSC OFF) +(#TRAFO OFF) +; - EB diagonales +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G00 X-0.245 Y+5.926 Z+5.51 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2.121 Y+2.121 I+0.965 J-2.841 +G01 X-1.734 Y+0.979 F12000 +G02 X-0.979 Y+1.734 I+4.577 J-3.822 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-6.157 Y-0.579 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-1.983 Y+0.177 I+1.709 J+2.466 +G02 X-0.177 Y+1.983 I+5.885 J-4.079 F12000 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-6.131 Y-1.346 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-0.378 I+1.582 J+2.549 +G02 X+0.378 Y+2 I+6.262 J-3.884 F12000 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-6.068 Y-2.159 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-0.955 I+1.432 J+2.636 +G02 X+0.955 Y+2 I+6.472 J-3.517 F12000 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.971 Y-3.101 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-1.608 I+1.239 J+2.732 +G02 X+1.608 Y+2 I+6.601 J-2.993 F12000 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.791 Y-4.331 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-2.426 I+0.943 J+2.848 +G02 X+2.426 Y+2 I+6.616 J-2.19 F12000 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.392 Y-6.254 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-3.705 I+0.422 J+2.97 +G02 X+3.706 Y+2 I+6.648 J-0.943 F12000 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.201 Y-10.438 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-7.654 I+0.208 J+2.993 +G01 X-1.761 Y-4.225 F12000 +G02 X+4.223 Y+1.761 I+6.434 J-0.448 +G01 X+7.64 Y+2 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.201 Y-14.756 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-11.971 I+0.208 J+2.993 +G01 X-1.462 Y-4.246 F12000 +G02 X+4.244 Y+1.462 I+6.135 J-0.427 +G01 X+11.941 Y+2 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.201 Y-19.074 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-16.289 I+0.208 J+2.993 +G01 X-1.163 Y-4.267 F12000 +G02 X+4.265 Y+1.163 I+5.836 J-0.406 +G01 X+16.241 Y+2 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.201 Y-23.391 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-20.607 I+0.208 J+2.992 +G01 X-0.863 Y-4.288 F12000 +G02 X+4.286 Y+0.863 I+5.536 J-0.385 +G01 X+20.542 Y+2 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.201 Y-27.709 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-24.925 I+0.208 J+2.993 +G01 X-0.564 Y-4.308 F12000 +G02 X+4.307 Y+0.564 I+5.237 J-0.365 +G01 X+24.843 Y+2 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.201 Y-32.027 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-29.242 I+0.208 J+2.993 +G01 X-0.265 Y-4.329 F12000 +G02 X+4.328 Y+0.265 I+4.938 J-0.344 +G01 X+29.144 Y+2 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.201 Y-36.345 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-33.56 I+0.208 J+2.993 +G01 X+0.034 Y-4.35 F12000 +G02 X+4.349 Y-0.035 I+4.639 J-0.323 +G01 X+33.444 Y+2 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-5.201 Y-40.662 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-2 Y-37.878 I+0.208 J+2.992 +G01 X+0.334 Y-4.371 F12000 +G02 X+4.37 Y-0.334 I+4.339 J-0.302 +G01 X+37.745 Y+2 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-4.847 Y-43.757 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-1.847 Y-40.757 I+0 J+3 +G01 Y-40 F12000 +G01 X+0.633 Y-4.392 +G02 X+4.391 Y-0.633 I+4.04 J-0.281 +G01 X+39.717 Y+1.837 +G01 X+40.769 Y+1.842 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-4.547 Y-44.26 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-1.547 Y-41.26 I+0 J+3 +G01 Y-40 F12000 +G01 X+0.932 Y-4.413 +G02 X+4.412 Y-0.932 I+3.741 J-0.26 +G01 X+39.738 Y+1.538 +G01 X+41.265 Y+1.544 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-4.247 Y-44.559 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-1.247 Y-41.559 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.232 Y-4.433 +G02 X+4.433 Y-1.232 I+3.441 J-0.24 +G01 X+39.759 Y+1.239 +G01 X+41.561 Y+1.245 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-3.947 Y-44.753 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-0.947 Y-41.753 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.531 Y-4.454 +G02 X+4.453 Y-1.531 I+3.142 J-0.219 +G01 X+39.78 Y+0.939 +G01 X+41.753 Y+0.946 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-3.647 Y-44.882 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-0.647 Y-41.882 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.83 Y-4.475 +G02 X+4.474 Y-1.83 I+2.843 J-0.198 +G01 X+39.801 Y+0.64 +G01 X+41.883 Y+0.647 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-3.347 Y-44.96 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-0.347 Y-41.96 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.129 Y-4.496 +G02 X+4.495 Y-2.129 I+2.544 J-0.177 +G01 X+39.822 Y+0.341 +G01 X+41.96 Y+0.347 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-3.047 Y-44.995 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X-0.047 Y-41.995 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.429 Y-4.517 +G02 X+4.516 Y-2.429 I+2.244 J-0.156 +G01 X+39.843 Y+0.042 +G01 X+41.995 Y+0.047 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-2.747 Y-45 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X+0.253 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.728 Y-4.537 +G02 X+4.537 Y-2.728 I+1.945 J-0.136 +G01 X+39.864 Y-0.258 +G01 X+42 Y-0.253 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-2.447 Y-45 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X+0.553 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+3.027 Y-4.558 +G02 X+4.558 Y-3.027 I+1.646 J-0.115 +G01 X+39.885 Y-0.557 +G01 X+42 Y-0.553 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-2.147 Y-45 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X+0.853 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+3.327 Y-4.579 +G02 X+4.579 Y-3.327 I+1.346 J-0.094 +G01 X+39.906 Y-0.856 +G01 X+42 Y-0.853 +G01 Z-1.49 F10000 +G00 Z+5.51 +G00 X-1.847 Y-45 +G00 Z-1.49 +G01 Z-8.49 F10000 +G03 X+1.153 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.158 Y-39.964 +G01 X+1.155 Y-39.927 +G01 X+3.626 Y-4.6 +G02 X+4.6 Y-3.626 I+1.047 J-0.073 +G01 X+39.927 Y-1.155 +G01 X+39.963 Y-1.158 +G01 X+40 Y-1.153 +G01 X+42 +G01 Z-3.49 F10000 +G00 Z+3.51 +G00 X-0.245 Y+5.926 +G00 Z-3.98 +G01 Z-8.98 F10000 +G03 X-2.121 Y+2.121 I+0.965 J-2.841 +G01 X-1.734 Y+0.979 F12000 +G02 X-0.979 Y+1.734 I+4.577 J-3.822 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-6.157 Y-0.579 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-1.983 Y+0.177 I+1.709 J+2.466 +G02 X-0.177 Y+1.983 I+5.885 J-4.079 F12000 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-6.131 Y-1.346 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-0.378 I+1.582 J+2.549 +G02 X+0.378 Y+2 I+6.262 J-3.884 F12000 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-6.068 Y-2.159 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-0.955 I+1.432 J+2.636 +G02 X+0.955 Y+2 I+6.472 J-3.517 F12000 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.971 Y-3.101 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-1.608 I+1.239 J+2.732 +G02 X+1.608 Y+2 I+6.601 J-2.993 F12000 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.791 Y-4.331 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-2.426 I+0.943 J+2.848 +G02 X+2.426 Y+2 I+6.616 J-2.19 F12000 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.392 Y-6.254 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-3.705 I+0.422 J+2.97 +G02 X+3.706 Y+2 I+6.648 J-0.943 F12000 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.201 Y-10.438 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-7.654 I+0.208 J+2.993 +G01 X-1.761 Y-4.225 F12000 +G02 X+4.223 Y+1.761 I+6.434 J-0.448 +G01 X+7.64 Y+2 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.201 Y-14.756 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-11.971 I+0.208 J+2.993 +G01 X-1.462 Y-4.246 F12000 +G02 X+4.244 Y+1.462 I+6.135 J-0.427 +G01 X+11.941 Y+2 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.201 Y-19.074 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-16.289 I+0.208 J+2.993 +G01 X-1.163 Y-4.267 F12000 +G02 X+4.265 Y+1.163 I+5.836 J-0.406 +G01 X+16.241 Y+2 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.201 Y-23.391 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-20.607 I+0.208 J+2.992 +G01 X-0.863 Y-4.288 F12000 +G02 X+4.286 Y+0.863 I+5.536 J-0.385 +G01 X+20.542 Y+2 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.201 Y-27.709 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-24.925 I+0.208 J+2.993 +G01 X-0.564 Y-4.308 F12000 +G02 X+4.307 Y+0.564 I+5.237 J-0.365 +G01 X+24.843 Y+2 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.201 Y-32.027 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-29.242 I+0.208 J+2.993 +G01 X-0.265 Y-4.329 F12000 +G02 X+4.328 Y+0.265 I+4.938 J-0.344 +G01 X+29.144 Y+2 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.201 Y-36.345 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-33.56 I+0.208 J+2.993 +G01 X+0.034 Y-4.35 F12000 +G02 X+4.349 Y-0.035 I+4.639 J-0.323 +G01 X+33.444 Y+2 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-5.201 Y-40.662 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-2 Y-37.878 I+0.208 J+2.992 +G01 X+0.334 Y-4.371 F12000 +G02 X+4.37 Y-0.334 I+4.339 J-0.302 +G01 X+37.745 Y+2 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-4.847 Y-43.757 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-1.847 Y-40.757 I+0 J+3 +G01 Y-40 F12000 +G01 X+0.633 Y-4.392 +G02 X+4.391 Y-0.633 I+4.04 J-0.281 +G01 X+39.717 Y+1.837 +G01 X+40.769 Y+1.842 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-4.547 Y-44.26 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-1.547 Y-41.26 I+0 J+3 +G01 Y-40 F12000 +G01 X+0.932 Y-4.413 +G02 X+4.412 Y-0.932 I+3.741 J-0.26 +G01 X+39.738 Y+1.538 +G01 X+41.265 Y+1.544 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-4.247 Y-44.559 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-1.247 Y-41.559 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.232 Y-4.433 +G02 X+4.433 Y-1.232 I+3.441 J-0.24 +G01 X+39.759 Y+1.239 +G01 X+41.561 Y+1.245 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-3.947 Y-44.753 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-0.947 Y-41.753 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.531 Y-4.454 +G02 X+4.453 Y-1.531 I+3.142 J-0.219 +G01 X+39.78 Y+0.939 +G01 X+41.753 Y+0.946 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-3.647 Y-44.882 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-0.647 Y-41.882 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.83 Y-4.475 +G02 X+4.474 Y-1.83 I+2.843 J-0.198 +G01 X+39.801 Y+0.64 +G01 X+41.883 Y+0.647 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-3.347 Y-44.96 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-0.347 Y-41.96 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.129 Y-4.496 +G02 X+4.495 Y-2.129 I+2.544 J-0.177 +G01 X+39.822 Y+0.341 +G01 X+41.96 Y+0.347 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-3.047 Y-44.995 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X-0.047 Y-41.995 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.429 Y-4.517 +G02 X+4.516 Y-2.429 I+2.244 J-0.156 +G01 X+39.843 Y+0.042 +G01 X+41.995 Y+0.047 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-2.747 Y-45 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X+0.253 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.728 Y-4.537 +G02 X+4.537 Y-2.728 I+1.945 J-0.136 +G01 X+39.864 Y-0.258 +G01 X+42 Y-0.253 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-2.447 Y-45 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X+0.553 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+3.027 Y-4.558 +G02 X+4.558 Y-3.027 I+1.646 J-0.115 +G01 X+39.885 Y-0.557 +G01 X+42 Y-0.553 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-2.147 Y-45 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X+0.853 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+3.327 Y-4.579 +G02 X+4.579 Y-3.327 I+1.346 J-0.094 +G01 X+39.906 Y-0.856 +G01 X+42 Y-0.853 +G01 Z-1.98 F10000 +G00 Z+5.02 +G00 X-1.847 Y-45 +G00 Z-1.98 +G01 Z-8.98 F10000 +G03 X+1.153 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.158 Y-39.964 +G01 X+1.155 Y-39.927 +G01 X+3.626 Y-4.6 +G02 X+4.6 Y-3.626 I+1.047 J-0.073 +G01 X+39.927 Y-1.155 +G01 X+39.963 Y-1.158 +G01 X+40 Y-1.153 +G01 X+42 +G01 Z-3.98 F10000 +G00 Z+3.02 +G00 X-0.245 Y+5.926 +G00 Z-4.47 +G01 Z-9.47 F10000 +G03 X-2.121 Y+2.121 I+0.965 J-2.841 +G01 X-1.734 Y+0.979 F12000 +G02 X-0.979 Y+1.734 I+4.577 J-3.822 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-6.157 Y-0.579 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-1.983 Y+0.177 I+1.709 J+2.466 +G02 X-0.177 Y+1.983 I+5.885 J-4.079 F12000 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-6.131 Y-1.346 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-0.378 I+1.582 J+2.549 +G02 X+0.378 Y+2 I+6.262 J-3.884 F12000 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-6.068 Y-2.159 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-0.955 I+1.432 J+2.636 +G02 X+0.955 Y+2 I+6.472 J-3.517 F12000 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.971 Y-3.101 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-1.608 I+1.239 J+2.732 +G02 X+1.608 Y+2 I+6.601 J-2.993 F12000 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.791 Y-4.331 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-2.426 I+0.943 J+2.848 +G02 X+2.426 Y+2 I+6.616 J-2.19 F12000 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.392 Y-6.254 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-3.705 I+0.422 J+2.97 +G02 X+3.706 Y+2 I+6.648 J-0.943 F12000 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.201 Y-10.438 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-7.654 I+0.208 J+2.993 +G01 X-1.761 Y-4.225 F12000 +G02 X+4.223 Y+1.761 I+6.434 J-0.448 +G01 X+7.64 Y+2 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.201 Y-14.756 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-11.971 I+0.208 J+2.993 +G01 X-1.462 Y-4.246 F12000 +G02 X+4.244 Y+1.462 I+6.135 J-0.427 +G01 X+11.941 Y+2 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.201 Y-19.074 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-16.289 I+0.208 J+2.993 +G01 X-1.163 Y-4.267 F12000 +G02 X+4.265 Y+1.163 I+5.836 J-0.406 +G01 X+16.241 Y+2 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.201 Y-23.391 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-20.607 I+0.208 J+2.992 +G01 X-0.863 Y-4.288 F12000 +G02 X+4.286 Y+0.863 I+5.536 J-0.385 +G01 X+20.542 Y+2 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.201 Y-27.709 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-24.925 I+0.208 J+2.993 +G01 X-0.564 Y-4.308 F12000 +G02 X+4.307 Y+0.564 I+5.237 J-0.365 +G01 X+24.843 Y+2 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.201 Y-32.027 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-29.242 I+0.208 J+2.993 +G01 X-0.265 Y-4.329 F12000 +G02 X+4.328 Y+0.265 I+4.938 J-0.344 +G01 X+29.144 Y+2 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.201 Y-36.345 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-33.56 I+0.208 J+2.993 +G01 X+0.034 Y-4.35 F12000 +G02 X+4.349 Y-0.035 I+4.639 J-0.323 +G01 X+33.444 Y+2 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-5.201 Y-40.662 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-2 Y-37.878 I+0.208 J+2.992 +G01 X+0.334 Y-4.371 F12000 +G02 X+4.37 Y-0.334 I+4.339 J-0.302 +G01 X+37.745 Y+2 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-4.847 Y-43.757 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-1.847 Y-40.757 I+0 J+3 +G01 Y-40 F12000 +G01 X+0.633 Y-4.392 +G02 X+4.391 Y-0.633 I+4.04 J-0.281 +G01 X+39.717 Y+1.837 +G01 X+40.769 Y+1.842 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-4.547 Y-44.26 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-1.547 Y-41.26 I+0 J+3 +G01 Y-40 F12000 +G01 X+0.932 Y-4.413 +G02 X+4.412 Y-0.932 I+3.741 J-0.26 +G01 X+39.738 Y+1.538 +G01 X+41.265 Y+1.544 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-4.247 Y-44.559 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-1.247 Y-41.559 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.232 Y-4.433 +G02 X+4.433 Y-1.232 I+3.441 J-0.24 +G01 X+39.759 Y+1.239 +G01 X+41.561 Y+1.245 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-3.947 Y-44.753 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-0.947 Y-41.753 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.531 Y-4.454 +G02 X+4.453 Y-1.531 I+3.142 J-0.219 +G01 X+39.78 Y+0.939 +G01 X+41.753 Y+0.946 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-3.647 Y-44.882 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-0.647 Y-41.882 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.83 Y-4.475 +G02 X+4.474 Y-1.83 I+2.843 J-0.198 +G01 X+39.801 Y+0.64 +G01 X+41.883 Y+0.647 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-3.347 Y-44.96 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-0.347 Y-41.96 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.129 Y-4.496 +G02 X+4.495 Y-2.129 I+2.544 J-0.177 +G01 X+39.822 Y+0.341 +G01 X+41.96 Y+0.347 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-3.047 Y-44.995 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X-0.047 Y-41.995 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.429 Y-4.517 +G02 X+4.516 Y-2.429 I+2.244 J-0.156 +G01 X+39.843 Y+0.042 +G01 X+41.995 Y+0.047 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-2.747 Y-45 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X+0.253 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.728 Y-4.537 +G02 X+4.537 Y-2.728 I+1.945 J-0.136 +G01 X+39.864 Y-0.258 +G01 X+42 Y-0.253 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-2.447 Y-45 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X+0.553 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+3.027 Y-4.558 +G02 X+4.558 Y-3.027 I+1.646 J-0.115 +G01 X+39.885 Y-0.557 +G01 X+42 Y-0.553 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-2.147 Y-45 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X+0.853 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+3.327 Y-4.579 +G02 X+4.579 Y-3.327 I+1.346 J-0.094 +G01 X+39.906 Y-0.856 +G01 X+42 Y-0.853 +G01 Z-2.47 F10000 +G00 Z+4.53 +G00 X-1.847 Y-45 +G00 Z-2.47 +G01 Z-9.47 F10000 +G03 X+1.153 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.158 Y-39.964 +G01 X+1.155 Y-39.927 +G01 X+3.626 Y-4.6 +G02 X+4.6 Y-3.626 I+1.047 J-0.073 +G01 X+39.927 Y-1.155 +G01 X+39.963 Y-1.158 +G01 X+40 Y-1.153 +G01 X+42 +G01 Z-4.47 F10000 +G00 Z+2.53 +G00 X-0.245 Y+5.926 +G00 Z-4.96 +G01 Z-9.96 F10000 +G03 X-2.121 Y+2.121 I+0.965 J-2.841 +G01 X-1.734 Y+0.979 F12000 +G02 X-0.979 Y+1.734 I+4.577 J-3.822 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-6.157 Y-0.579 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-1.983 Y+0.177 I+1.709 J+2.466 +G02 X-0.177 Y+1.983 I+5.885 J-4.079 F12000 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-6.131 Y-1.346 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-0.378 I+1.582 J+2.549 +G02 X+0.378 Y+2 I+6.262 J-3.884 F12000 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-6.068 Y-2.159 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-0.955 I+1.432 J+2.636 +G02 X+0.955 Y+2 I+6.472 J-3.517 F12000 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.971 Y-3.101 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-1.608 I+1.239 J+2.732 +G02 X+1.608 Y+2 I+6.601 J-2.993 F12000 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.791 Y-4.331 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-2.426 I+0.943 J+2.848 +G02 X+2.426 Y+2 I+6.616 J-2.19 F12000 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.392 Y-6.254 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-3.705 I+0.422 J+2.97 +G02 X+3.706 Y+2 I+6.648 J-0.943 F12000 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.201 Y-10.438 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-7.654 I+0.208 J+2.993 +G01 X-1.761 Y-4.225 F12000 +G02 X+4.223 Y+1.761 I+6.434 J-0.448 +G01 X+7.64 Y+2 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.201 Y-14.756 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-11.971 I+0.208 J+2.993 +G01 X-1.462 Y-4.246 F12000 +G02 X+4.244 Y+1.462 I+6.135 J-0.427 +G01 X+11.941 Y+2 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.201 Y-19.074 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-16.289 I+0.208 J+2.993 +G01 X-1.163 Y-4.267 F12000 +G02 X+4.265 Y+1.163 I+5.836 J-0.406 +G01 X+16.241 Y+2 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.201 Y-23.391 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-20.607 I+0.208 J+2.992 +G01 X-0.863 Y-4.288 F12000 +G02 X+4.286 Y+0.863 I+5.536 J-0.385 +G01 X+20.542 Y+2 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.201 Y-27.709 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-24.925 I+0.208 J+2.993 +G01 X-0.564 Y-4.308 F12000 +G02 X+4.307 Y+0.564 I+5.237 J-0.365 +G01 X+24.843 Y+2 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.201 Y-32.027 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-29.242 I+0.208 J+2.993 +G01 X-0.265 Y-4.329 F12000 +G02 X+4.328 Y+0.265 I+4.938 J-0.344 +G01 X+29.144 Y+2 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.201 Y-36.345 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-33.56 I+0.208 J+2.993 +G01 X+0.034 Y-4.35 F12000 +G02 X+4.349 Y-0.035 I+4.639 J-0.323 +G01 X+33.444 Y+2 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-5.201 Y-40.662 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-2 Y-37.878 I+0.208 J+2.992 +G01 X+0.334 Y-4.371 F12000 +G02 X+4.37 Y-0.334 I+4.339 J-0.302 +G01 X+37.745 Y+2 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-4.847 Y-43.757 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-1.847 Y-40.757 I+0 J+3 +G01 Y-40 F12000 +G01 X+0.633 Y-4.392 +G02 X+4.391 Y-0.633 I+4.04 J-0.281 +G01 X+39.717 Y+1.837 +G01 X+40.769 Y+1.842 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-4.547 Y-44.26 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-1.547 Y-41.26 I+0 J+3 +G01 Y-40 F12000 +G01 X+0.932 Y-4.413 +G02 X+4.412 Y-0.932 I+3.741 J-0.26 +G01 X+39.738 Y+1.538 +G01 X+41.265 Y+1.544 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-4.247 Y-44.559 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-1.247 Y-41.559 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.232 Y-4.433 +G02 X+4.433 Y-1.232 I+3.441 J-0.24 +G01 X+39.759 Y+1.239 +G01 X+41.561 Y+1.245 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-3.947 Y-44.753 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-0.947 Y-41.753 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.531 Y-4.454 +G02 X+4.453 Y-1.531 I+3.142 J-0.219 +G01 X+39.78 Y+0.939 +G01 X+41.753 Y+0.946 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-3.647 Y-44.882 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-0.647 Y-41.882 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.83 Y-4.475 +G02 X+4.474 Y-1.83 I+2.843 J-0.198 +G01 X+39.801 Y+0.64 +G01 X+41.883 Y+0.647 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-3.347 Y-44.96 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-0.347 Y-41.96 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.129 Y-4.496 +G02 X+4.495 Y-2.129 I+2.544 J-0.177 +G01 X+39.822 Y+0.341 +G01 X+41.96 Y+0.347 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-3.047 Y-44.995 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X-0.047 Y-41.995 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.429 Y-4.517 +G02 X+4.516 Y-2.429 I+2.244 J-0.156 +G01 X+39.843 Y+0.042 +G01 X+41.995 Y+0.047 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-2.747 Y-45 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X+0.253 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.728 Y-4.537 +G02 X+4.537 Y-2.728 I+1.945 J-0.136 +G01 X+39.864 Y-0.258 +G01 X+42 Y-0.253 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-2.447 Y-45 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X+0.553 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+3.027 Y-4.558 +G02 X+4.558 Y-3.027 I+1.646 J-0.115 +G01 X+39.885 Y-0.557 +G01 X+42 Y-0.553 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-2.147 Y-45 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X+0.853 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+3.327 Y-4.579 +G02 X+4.579 Y-3.327 I+1.346 J-0.094 +G01 X+39.906 Y-0.856 +G01 X+42 Y-0.853 +G01 Z-2.96 F10000 +G00 Z+4.04 +G00 X-1.847 Y-45 +G00 Z-2.96 +G01 Z-9.96 F10000 +G03 X+1.153 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.158 Y-39.964 +G01 X+1.155 Y-39.927 +G01 X+3.626 Y-4.6 +G02 X+4.6 Y-3.626 I+1.047 J-0.073 +G01 X+39.927 Y-1.155 +G01 X+39.963 Y-1.158 +G01 X+40 Y-1.153 +G01 X+42 +G01 Z-4.96 F10000 +G00 Z+2.04 +G00 X-0.245 Y+5.926 +G00 Z-5.45 +G01 Z-10.45 F10000 +G03 X-2.121 Y+2.121 I+0.965 J-2.841 +G01 X-1.734 Y+0.979 F12000 +G02 X-0.979 Y+1.734 I+4.577 J-3.822 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-6.157 Y-0.579 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-1.983 Y+0.177 I+1.709 J+2.466 +G02 X-0.177 Y+1.983 I+5.885 J-4.079 F12000 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-6.131 Y-1.346 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-0.378 I+1.582 J+2.549 +G02 X+0.378 Y+2 I+6.262 J-3.884 F12000 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-6.068 Y-2.159 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-0.955 I+1.432 J+2.636 +G02 X+0.955 Y+2 I+6.472 J-3.517 F12000 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.971 Y-3.101 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-1.608 I+1.239 J+2.732 +G02 X+1.608 Y+2 I+6.601 J-2.993 F12000 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.791 Y-4.331 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-2.426 I+0.943 J+2.848 +G02 X+2.426 Y+2 I+6.616 J-2.19 F12000 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.392 Y-6.254 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-3.705 I+0.422 J+2.97 +G02 X+3.706 Y+2 I+6.648 J-0.943 F12000 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.201 Y-10.438 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-7.654 I+0.208 J+2.993 +G01 X-1.761 Y-4.225 F12000 +G02 X+4.223 Y+1.761 I+6.434 J-0.448 +G01 X+7.64 Y+2 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.201 Y-14.756 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-11.971 I+0.208 J+2.993 +G01 X-1.462 Y-4.246 F12000 +G02 X+4.244 Y+1.462 I+6.135 J-0.427 +G01 X+11.941 Y+2 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.201 Y-19.074 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-16.289 I+0.208 J+2.993 +G01 X-1.163 Y-4.267 F12000 +G02 X+4.265 Y+1.163 I+5.836 J-0.406 +G01 X+16.241 Y+2 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.201 Y-23.391 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-20.607 I+0.208 J+2.992 +G01 X-0.863 Y-4.288 F12000 +G02 X+4.286 Y+0.863 I+5.536 J-0.385 +G01 X+20.542 Y+2 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.201 Y-27.709 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-24.925 I+0.208 J+2.993 +G01 X-0.564 Y-4.308 F12000 +G02 X+4.307 Y+0.564 I+5.237 J-0.365 +G01 X+24.843 Y+2 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.201 Y-32.027 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-29.242 I+0.208 J+2.993 +G01 X-0.265 Y-4.329 F12000 +G02 X+4.328 Y+0.265 I+4.938 J-0.344 +G01 X+29.144 Y+2 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.201 Y-36.345 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-33.56 I+0.208 J+2.993 +G01 X+0.034 Y-4.35 F12000 +G02 X+4.349 Y-0.035 I+4.639 J-0.323 +G01 X+33.444 Y+2 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-5.201 Y-40.662 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-2 Y-37.878 I+0.208 J+2.992 +G01 X+0.334 Y-4.371 F12000 +G02 X+4.37 Y-0.334 I+4.339 J-0.302 +G01 X+37.745 Y+2 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-4.847 Y-43.757 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-1.847 Y-40.757 I+0 J+3 +G01 Y-40 F12000 +G01 X+0.633 Y-4.392 +G02 X+4.391 Y-0.633 I+4.04 J-0.281 +G01 X+39.717 Y+1.837 +G01 X+40.769 Y+1.842 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-4.547 Y-44.26 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-1.547 Y-41.26 I+0 J+3 +G01 Y-40 F12000 +G01 X+0.932 Y-4.413 +G02 X+4.412 Y-0.932 I+3.741 J-0.26 +G01 X+39.738 Y+1.538 +G01 X+41.265 Y+1.544 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-4.247 Y-44.559 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-1.247 Y-41.559 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.232 Y-4.433 +G02 X+4.433 Y-1.232 I+3.441 J-0.24 +G01 X+39.759 Y+1.239 +G01 X+41.561 Y+1.245 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-3.947 Y-44.753 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-0.947 Y-41.753 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.531 Y-4.454 +G02 X+4.453 Y-1.531 I+3.142 J-0.219 +G01 X+39.78 Y+0.939 +G01 X+41.753 Y+0.946 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-3.647 Y-44.882 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-0.647 Y-41.882 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.83 Y-4.475 +G02 X+4.474 Y-1.83 I+2.843 J-0.198 +G01 X+39.801 Y+0.64 +G01 X+41.883 Y+0.647 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-3.347 Y-44.96 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-0.347 Y-41.96 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.129 Y-4.496 +G02 X+4.495 Y-2.129 I+2.544 J-0.177 +G01 X+39.822 Y+0.341 +G01 X+41.96 Y+0.347 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-3.047 Y-44.995 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X-0.047 Y-41.995 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.429 Y-4.517 +G02 X+4.516 Y-2.429 I+2.244 J-0.156 +G01 X+39.843 Y+0.042 +G01 X+41.995 Y+0.047 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-2.747 Y-45 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X+0.253 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+2.728 Y-4.537 +G02 X+4.537 Y-2.728 I+1.945 J-0.136 +G01 X+39.864 Y-0.258 +G01 X+42 Y-0.253 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-2.447 Y-45 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X+0.553 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+3.027 Y-4.558 +G02 X+4.558 Y-3.027 I+1.646 J-0.115 +G01 X+39.885 Y-0.557 +G01 X+42 Y-0.553 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-2.147 Y-45 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X+0.853 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+3.327 Y-4.579 +G02 X+4.579 Y-3.327 I+1.346 J-0.094 +G01 X+39.906 Y-0.856 +G01 X+42 Y-0.853 +G01 Z-3.45 F10000 +G00 Z+3.55 +G00 X-1.847 Y-45 +G00 Z-3.45 +G01 Z-10.45 F10000 +G03 X+1.153 Y-42 I+0 J+3 +G01 Y-40 F12000 +G01 X+1.158 Y-39.964 +G01 X+1.155 Y-39.927 +G01 X+3.626 Y-4.6 +G02 X+4.6 Y-3.626 I+1.047 J-0.073 +G01 X+39.927 Y-1.155 +G01 X+39.963 Y-1.158 +G01 X+40 Y-1.153 +G01 X+42 +G01 Z-3.45 F10000 +G00 Z+3.55 +(#HSC OFF) +(#TRAFO OFF) +; - Surfa�age en spirale calotte +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G00 X+7.697 Y-31.139 Z+1.665 B19.324 C222.154 +G01 X+8.923 Y-30.029 Z-3.053 F20000 +G01 X+8.665 Y-29.744 Z-3.055 B19.33 C220.678 F20000 +G01 X+8.391 Y-29.408 Z-3.053 B19.325 C219.018 +G01 X+8.179 Y-29.147 Z-3.055 B19.33 C217.727 +G01 X+7.93 Y-28.808 Z-3.053 B19.325 C216.115 +G01 X+7.723 Y-28.526 Z-3.055 B19.33 C214.776 +G01 X+7.499 Y-28.185 Z-3.053 B19.325 C213.211 +G01 X+7.293 Y-27.87 Z-3.055 B19.33 C211.769 +G01 X+7.138 Y-27.605 Z-3.053 B19.324 C210.593 +G01 X+6.983 Y-27.34 Z-3.054 B19.326 C209.417 +G01 X+6.912 Y-27.219 Z-3.055 B19.331 C208.874 +G01 X+6.769 Y-26.945 Z-3.053 B19.324 C207.694 +G01 X+6.628 Y-26.671 Z-3.054 B19.326 C206.513 +G01 X+6.557 Y-26.536 Z-3.055 B19.331 C205.924 +G01 X+6.432 Y-26.26 Z-3.053 B19.325 C204.767 +G01 X+6.307 Y-25.985 Z-3.054 C203.61 +G01 X+6.239 Y-25.835 Z-3.055 B19.331 C202.973 +G01 X+6.13 Y-25.559 Z-3.053 B19.324 C201.84 +G01 X+6.022 Y-25.284 Z-3.054 B19.325 C200.707 +G01 X+5.957 Y-25.119 Z-3.055 B19.331 C200.022 +G01 X+5.864 Y-24.844 Z-3.053 B19.325 C198.913 +G01 X+5.772 Y-24.569 Z-3.054 C197.804 +G01 X+5.712 Y-24.389 Z-3.055 B19.331 C197.071 +G01 X+5.635 Y-24.116 Z-3.053 B19.325 C195.986 +G01 X+5.559 Y-23.842 Z-3.054 C194.9 +G01 X+5.505 Y-23.648 Z-3.055 B19.331 C194.12 +G01 X+5.444 Y-23.377 Z-3.053 B19.325 C193.059 +G01 X+5.383 Y-23.106 Z-3.054 C191.997 +G01 X+5.336 Y-22.897 Z-3.055 B19.331 C191.169 +G01 X+5.29 Y-22.629 Z-3.053 B19.325 C190.132 +G01 X+5.245 Y-22.362 B19.324 C189.094 +G01 X+5.206 Y-22.138 Z-3.055 B19.331 C188.219 +G01 X+5.175 Y-21.875 Z-3.053 B19.325 C187.205 +G01 X+5.144 Y-21.611 B19.324 C186.191 +G01 X+5.116 Y-21.374 Z-3.055 B19.331 C185.268 +G01 X+5.099 Y-21.115 Z-3.053 B19.325 C184.278 +G01 X+5.082 Y-20.857 B19.324 C183.288 +G01 X+5.065 Y-20.606 Z-3.055 B19.331 C182.317 +G01 X+5.061 Y-20.353 Z-3.054 B19.325 C181.351 +G01 X+5.058 Y-20.1 Z-3.053 B19.324 C180.384 +G01 X+5.054 Y-19.836 Z-3.055 B19.33 C179.366 +G01 X+5.063 Y-19.59 Z-3.054 B19.325 C178.424 +G01 X+5.072 Y-19.343 Z-3.053 B19.324 C177.481 +G01 X+5.082 Y-19.067 Z-3.055 B19.33 C176.415 +G01 X+5.103 Y-18.827 Z-3.054 B19.325 C175.497 +G01 X+5.124 Y-18.588 Z-3.053 B19.324 C174.578 +G01 X+5.15 Y-18.3 Z-3.055 B19.33 C173.464 +G01 X+5.182 Y-18.068 Z-3.054 B19.325 C172.57 +G01 X+5.215 Y-17.836 Z-3.053 B19.324 C171.675 +G01 X+5.257 Y-17.538 Z-3.055 B19.33 C170.514 +G01 X+5.3 Y-17.314 Z-3.054 B19.325 C169.643 +G01 X+5.344 Y-17.09 Z-3.053 B19.323 C168.771 +G01 X+5.403 Y-16.782 Z-3.055 B19.33 C167.563 +G01 X+5.51 Y-16.352 Z-3.053 B19.323 C165.868 +G01 X+5.588 Y-16.035 Z-3.055 B19.33 C164.612 +G01 X+5.713 Y-15.623 Z-3.053 B19.323 C162.965 +G01 X+5.812 Y-15.298 Z-3.055 B19.33 C161.661 +G01 X+5.953 Y-14.905 Z-3.053 B19.323 C160.062 +G01 X+6.072 Y-14.574 Z-3.055 B19.33 C158.71 +G01 X+6.23 Y-14.2 Z-3.053 B19.323 C157.159 +G01 X+6.37 Y-13.864 Z-3.055 B19.329 C155.759 +G01 X+6.487 Y-13.622 Z-3.053 B19.325 C154.728 +G01 X+6.603 Y-13.38 B19.326 C153.697 +G01 X+6.704 Y-13.171 Z-3.055 B19.329 C152.809 +G01 X+6.83 Y-12.94 Z-3.053 B19.325 C151.801 +G01 X+6.956 Y-12.709 B19.326 C150.793 +G01 X+7.073 Y-12.495 Z-3.055 B19.329 C149.866 +G01 X+7.208 Y-12.277 Z-3.053 B19.325 C148.878 +G01 X+7.342 Y-12.058 C147.89 +G01 X+7.477 Y-11.84 Z-3.055 B19.33 C146.913 +G01 X+7.619 Y-11.633 Z-3.054 B19.325 C145.95 +G01 X+7.761 Y-11.427 Z-3.053 C144.986 +G01 X+7.913 Y-11.206 Z-3.055 B19.33 C143.96 +G01 X+8.062 Y-11.012 Z-3.054 B19.325 C143.022 +G01 X+8.211 Y-10.818 Z-3.053 C142.083 +G01 X+8.382 Y-10.596 Z-3.055 B19.33 C141.007 +G01 X+8.536 Y-10.414 Z-3.054 B19.325 C140.093 +G01 X+8.691 Y-10.233 Z-3.053 C139.18 +G01 X+8.882 Y-10.01 Z-3.055 B19.33 C138.055 +G01 X+9.041 Y-9.841 Z-3.054 B19.325 C137.166 +G01 X+9.2 Y-9.673 Z-3.053 C136.276 +G01 X+9.411 Y-9.451 Z-3.055 B19.33 C135.104 +G01 X+9.737 Y-9.139 Z-3.053 B19.325 C133.373 +G01 X+9.968 Y-8.92 Z-3.055 B19.33 C132.153 +G01 X+10.301 Y-8.633 Z-3.053 B19.325 C130.469 +G01 X+10.551 Y-8.418 Z-3.055 B19.33 C129.202 +G01 X+10.889 Y-8.157 Z-3.053 B19.325 C127.566 +G01 X+11.16 Y-7.947 Z-3.055 B19.33 C126.251 +G01 X+11.5 Y-7.71 Z-3.053 B19.325 C124.663 +G01 X+11.81 Y-7.497 Z-3.055 B19.33 C123.22 +G01 X+12.071 Y-7.334 Z-3.053 B19.324 C122.044 +G01 X+12.333 Y-7.172 Z-3.054 B19.326 C120.868 +G01 X+12.446 Y-7.102 Z-3.055 B19.331 C120.35 +G01 X+12.719 Y-6.951 Z-3.053 B19.324 C119.158 +G01 X+12.992 Y-6.801 Z-3.054 B19.326 C117.965 +G01 X+13.12 Y-6.73 Z-3.055 B19.331 C117.399 +G01 X+13.395 Y-6.596 Z-3.053 B19.324 C116.231 +G01 X+13.67 Y-6.463 Z-3.054 B19.326 C115.062 +G01 X+13.813 Y-6.393 Z-3.055 B19.331 C114.448 +G01 X+14.088 Y-6.276 Z-3.053 B19.325 C113.303 +G01 X+14.364 Y-6.16 Z-3.054 C112.159 +G01 X+14.521 Y-6.093 Z-3.055 B19.331 C111.497 +G01 X+14.796 Y-5.992 Z-3.053 B19.324 C110.377 +G01 X+15.072 Y-5.892 Z-3.054 B19.325 C109.255 +G01 X+15.244 Y-5.829 Z-3.055 B19.331 C108.546 +G01 X+15.519 Y-5.745 Z-3.053 B19.325 C107.449 +G01 X+15.793 Y-5.661 Z-3.054 C106.352 +G01 X+15.98 Y-5.603 Z-3.055 B19.331 C105.596 +G01 X+16.252 Y-5.535 Z-3.053 B19.325 C104.522 +G01 X+16.525 Y-5.466 Z-3.054 C103.449 +G01 X+16.727 Y-5.416 Z-3.055 B19.331 C102.645 +G01 X+16.996 Y-5.362 Z-3.053 B19.325 C101.595 +G01 X+17.265 Y-5.309 B19.324 C100.546 +G01 X+17.482 Y-5.266 Z-3.055 B19.331 C99.694 +G01 X+17.747 Y-5.228 Z-3.053 B19.325 C98.668 +G01 X+18.013 Y-5.19 B19.324 C97.642 +G01 X+18.244 Y-5.156 Z-3.055 B19.331 C96.743 +G01 X+18.504 Y-5.132 Z-3.053 B19.325 C95.741 +G01 X+18.765 Y-5.108 B19.324 C94.739 +G01 X+19.01 Y-5.086 Z-3.055 B19.331 C93.792 +G01 X+19.266 Y-5.075 Z-3.053 B19.325 C92.814 +G01 X+19.521 Y-5.065 B19.324 C91.836 +G01 X+19.779 Y-5.054 Z-3.055 B19.331 C90.841 +G01 X+20.029 Y-5.057 Z-3.054 B19.325 C89.887 +G01 X+20.278 Y-5.06 Z-3.053 B19.324 C88.933 +G01 X+20.549 Y-5.063 Z-3.055 B19.33 C87.891 +G01 X+20.792 Y-5.078 Z-3.054 B19.325 C86.96 +G01 X+21.035 Y-5.093 Z-3.053 B19.324 C86.03 +G01 X+21.317 Y-5.111 Z-3.055 B19.33 C84.94 +G01 X+21.553 Y-5.138 Z-3.054 B19.325 C84.033 +G01 X+21.788 Y-5.165 Z-3.053 B19.324 C83.126 +G01 X+22.082 Y-5.198 Z-3.055 B19.33 C81.989 +G01 X+22.31 Y-5.236 Z-3.054 B19.325 C81.106 +G01 X+22.537 Y-5.275 Z-3.053 B19.324 C80.223 +G01 X+22.841 Y-5.325 Z-3.055 B19.33 C79.038 +G01 X+23.28 Y-5.422 Z-3.053 B19.323 C77.32 +G01 X+23.593 Y-5.491 Z-3.055 B19.33 C76.087 +G01 X+24.014 Y-5.607 Z-3.053 B19.323 C74.417 +G01 X+24.335 Y-5.695 Z-3.055 B19.33 C73.137 +G01 X+24.738 Y-5.829 Z-3.053 B19.323 C71.513 +G01 X+25.065 Y-5.937 Z-3.055 B19.33 C70.186 +G01 X+25.45 Y-6.087 Z-3.053 B19.323 C68.61 +G01 X+25.783 Y-6.217 Z-3.055 B19.33 C67.235 +G01 X+26.031 Y-6.328 Z-3.053 B19.325 C66.192 +G01 X+26.279 Y-6.44 Z-3.054 B19.326 C65.148 +G01 X+26.485 Y-6.533 Z-3.055 B19.329 C64.284 +G01 X+26.721 Y-6.654 Z-3.053 B19.325 C63.265 +G01 X+26.958 Y-6.775 B19.326 C62.245 +G01 X+27.169 Y-6.884 Z-3.055 B19.329 C61.352 +G01 X+27.394 Y-7.014 Z-3.053 B19.325 C60.347 +G01 X+27.619 Y-7.145 C59.342 +G01 X+27.835 Y-7.271 Z-3.055 B19.33 C58.39 +G01 X+28.047 Y-7.409 Z-3.054 B19.325 C57.414 +G01 X+28.26 Y-7.547 Z-3.053 C56.438 +G01 X+28.48 Y-7.691 Z-3.055 B19.33 C55.437 +G01 X+28.68 Y-7.836 Z-3.054 B19.325 C54.486 +G01 X+28.88 Y-7.982 Z-3.053 C53.535 +G01 X+29.102 Y-8.144 Z-3.055 B19.33 C52.483 +G01 X+29.29 Y-8.295 Z-3.054 B19.325 C51.557 +G01 X+29.477 Y-8.447 Z-3.053 C50.631 +G01 X+29.7 Y-8.628 Z-3.055 B19.33 C49.53 +G01 X+29.875 Y-8.785 Z-3.054 B19.325 C48.629 +G01 X+30.05 Y-8.942 Z-3.053 C47.728 +G01 X+30.273 Y-9.143 Z-3.055 B19.33 C46.579 +G01 X+30.435 Y-9.304 Z-3.054 B19.325 C45.702 +G01 X+30.597 Y-9.465 Z-3.053 C44.824 +G01 X+30.818 Y-9.686 Z-3.055 B19.33 C43.628 +G01 X+31.117 Y-10.016 Z-3.053 B19.325 C41.921 +G01 X+31.335 Y-10.256 Z-3.055 B19.33 C40.678 +G01 X+31.609 Y-10.592 Z-3.053 B19.325 C39.018 +G01 X+31.821 Y-10.853 Z-3.055 B19.33 C37.727 +G01 X+32.07 Y-11.192 Z-3.053 B19.325 C36.115 +G01 X+32.277 Y-11.473 Z-3.055 B19.33 C34.776 +G01 X+32.501 Y-11.814 Z-3.053 B19.325 C33.211 +G01 X+32.707 Y-12.129 Z-3.055 B19.33 C31.769 +G01 X+32.862 Y-12.395 Z-3.053 B19.324 C30.593 +G01 X+33.017 Y-12.66 Z-3.054 B19.326 C29.417 +G01 X+33.088 Y-12.781 Z-3.055 B19.331 C28.874 +G01 X+33.231 Y-13.055 Z-3.053 B19.324 C27.694 +G01 X+33.372 Y-13.329 Z-3.054 B19.326 C26.513 +G01 X+33.443 Y-13.464 Z-3.055 B19.331 C25.924 +G01 X+33.568 Y-13.739 Z-3.053 B19.325 C24.767 +G01 X+33.693 Y-14.015 Z-3.054 C23.61 +G01 X+33.761 Y-14.165 Z-3.055 B19.331 C22.973 +G01 X+33.87 Y-14.44 Z-3.053 B19.324 C21.84 +G01 X+33.978 Y-14.716 Z-3.054 B19.325 C20.707 +G01 X+34.043 Y-14.881 Z-3.055 B19.331 C20.022 +G01 X+34.136 Y-15.156 Z-3.053 B19.325 C18.913 +G01 X+34.228 Y-15.431 Z-3.054 C17.804 +G01 X+34.288 Y-15.611 Z-3.055 B19.331 C17.071 +G01 X+34.365 Y-15.884 Z-3.053 B19.325 C15.986 +G01 X+34.441 Y-16.157 Z-3.054 C14.9 +G01 X+34.495 Y-16.352 Z-3.055 B19.331 C14.12 +G01 X+34.556 Y-16.623 Z-3.053 B19.325 C13.059 +G01 X+34.617 Y-16.894 Z-3.054 C11.997 +G01 X+34.664 Y-17.103 Z-3.055 B19.331 C11.169 +G01 X+34.71 Y-17.371 Z-3.053 B19.325 C10.132 +G01 X+34.755 Y-17.638 B19.324 C9.094 +G01 X+34.794 Y-17.862 Z-3.055 B19.331 C8.219 +G01 X+34.825 Y-18.125 Z-3.053 B19.325 C7.205 +G01 X+34.856 Y-18.388 B19.324 C6.191 +G01 X+34.884 Y-18.626 Z-3.055 B19.331 C5.268 +G01 X+34.901 Y-18.885 Z-3.053 B19.325 C4.278 +G01 X+34.918 Y-19.143 B19.324 C3.288 +G01 X+34.935 Y-19.394 Z-3.055 B19.331 C2.317 +G01 X+34.939 Y-19.647 Z-3.054 B19.325 C1.351 +G01 X+34.942 Y-19.9 Z-3.053 B19.324 C0.384 +G01 X+34.946 Y-20.164 Z-3.055 B19.33 C359.366 +G01 X+34.937 Y-20.41 Z-3.054 B19.325 C358.424 +G01 X+34.928 Y-20.657 Z-3.053 B19.324 C357.481 +G01 X+34.918 Y-20.933 Z-3.055 B19.33 C356.415 +G01 X+34.897 Y-21.173 Z-3.054 B19.325 C355.497 +G01 X+34.876 Y-21.412 Z-3.053 B19.324 C354.578 +G01 X+34.85 Y-21.7 Z-3.055 B19.33 C353.464 +G01 X+34.818 Y-21.932 Z-3.054 B19.325 C352.57 +G01 X+34.785 Y-22.163 Z-3.053 B19.324 C351.675 +G01 X+34.743 Y-22.462 Z-3.055 B19.33 C350.514 +G01 X+34.7 Y-22.686 Z-3.054 B19.325 C349.643 +G01 X+34.656 Y-22.91 Z-3.053 B19.323 C348.771 +G01 X+34.597 Y-23.218 Z-3.055 B19.33 C347.563 +G01 X+34.49 Y-23.648 Z-3.053 B19.323 C345.868 +G01 X+34.412 Y-23.965 Z-3.055 B19.33 C344.612 +G01 X+34.287 Y-24.377 Z-3.053 B19.323 C342.965 +G01 X+34.188 Y-24.702 Z-3.055 B19.33 C341.661 +G01 X+34.047 Y-25.095 Z-3.053 B19.323 C340.062 +G01 X+33.928 Y-25.426 Z-3.055 B19.33 C338.71 +G01 X+33.771 Y-25.8 Z-3.053 B19.323 C337.159 +G01 X+33.63 Y-26.136 Z-3.055 B19.329 C335.759 +G01 X+33.513 Y-26.378 Z-3.053 B19.325 C334.728 +G01 X+33.397 Y-26.62 B19.326 C333.697 +G01 X+33.296 Y-26.829 Z-3.055 B19.329 C332.809 +G01 X+33.17 Y-27.06 Z-3.053 B19.325 C331.801 +G01 X+33.044 Y-27.29 B19.326 C330.793 +G01 X+32.927 Y-27.504 Z-3.055 B19.329 C329.866 +G01 X+32.792 Y-27.723 Z-3.053 B19.325 C328.878 +G01 X+32.658 Y-27.942 C327.89 +G01 X+32.523 Y-28.16 Z-3.055 B19.33 C326.913 +G01 X+32.381 Y-28.366 Z-3.054 B19.325 C325.95 +G01 X+32.239 Y-28.573 Z-3.053 C324.986 +G01 X+32.087 Y-28.794 Z-3.055 B19.33 C323.96 +G01 X+31.938 Y-28.988 Z-3.054 B19.325 C323.022 +G01 X+31.789 Y-29.181 Z-3.053 C322.083 +G01 X+31.618 Y-29.404 Z-3.055 B19.33 C321.007 +G01 X+31.464 Y-29.586 Z-3.054 B19.325 C320.093 +G01 X+31.309 Y-29.767 Z-3.053 C319.18 +G01 X+31.118 Y-29.99 Z-3.055 B19.33 C318.055 +G01 X+30.959 Y-30.159 Z-3.054 B19.325 C317.166 +G01 X+30.8 Y-30.327 Z-3.053 C316.276 +G01 X+30.589 Y-30.549 Z-3.055 B19.33 C315.104 +G01 X+30.263 Y-30.861 Z-3.053 B19.325 C313.373 +G01 X+30.032 Y-31.08 Z-3.055 B19.33 C312.153 +G01 X+29.699 Y-31.367 Z-3.053 B19.325 C310.469 +G01 X+29.449 Y-31.582 Z-3.055 B19.33 C309.202 +G01 X+29.111 Y-31.843 Z-3.053 B19.325 C307.566 +G01 X+28.84 Y-32.053 Z-3.055 B19.33 C306.251 +G01 X+28.5 Y-32.289 Z-3.053 B19.325 C304.663 +G01 X+28.19 Y-32.503 Z-3.055 B19.33 C303.22 +G01 X+27.929 Y-32.666 Z-3.053 B19.324 C302.044 +G01 X+27.667 Y-32.827 Z-3.054 B19.326 C300.868 +G01 X+27.554 Y-32.898 Z-3.055 B19.331 C300.35 +G01 X+27.281 Y-33.049 Z-3.053 B19.324 C299.158 +G01 X+27.008 Y-33.199 Z-3.054 B19.326 C297.965 +G01 X+26.88 Y-33.27 Z-3.055 B19.331 C297.399 +G01 X+26.605 Y-33.404 Z-3.053 B19.324 C296.231 +G01 X+26.33 Y-33.537 Z-3.054 B19.326 C295.062 +G01 X+26.187 Y-33.606 Z-3.055 B19.331 C294.448 +G01 X+25.912 Y-33.723 Z-3.053 B19.325 C293.303 +G01 X+25.636 Y-33.84 Z-3.054 C292.159 +G01 X+25.479 Y-33.907 Z-3.055 B19.331 C291.497 +G01 X+25.204 Y-34.007 Z-3.053 B19.324 C290.376 +G01 X+24.928 Y-34.108 Z-3.054 B19.325 C289.255 +G01 X+24.756 Y-34.17 Z-3.055 B19.331 C288.546 +G01 X+24.481 Y-34.255 Z-3.053 B19.325 C287.449 +G01 X+24.207 Y-34.339 Z-3.054 C286.352 +G01 X+24.02 Y-34.396 Z-3.055 B19.331 C285.596 +G01 X+23.748 Y-34.465 Z-3.053 B19.325 C284.522 +G01 X+23.475 Y-34.533 Z-3.054 C283.449 +G01 X+23.273 Y-34.584 Z-3.055 B19.331 C282.645 +G01 X+23.004 Y-34.638 Z-3.053 B19.325 C281.595 +G01 X+22.735 Y-34.691 B19.324 C280.546 +G01 X+22.518 Y-34.733 Z-3.055 B19.331 C279.694 +G01 X+22.253 Y-34.772 Z-3.053 B19.325 C278.668 +G01 X+21.987 Y-34.81 B19.324 C277.642 +G01 X+21.756 Y-34.844 Z-3.055 B19.331 C276.743 +G01 X+21.496 Y-34.868 Z-3.053 B19.325 C275.741 +G01 X+21.235 Y-34.892 B19.324 C274.739 +G01 X+20.99 Y-34.914 Z-3.055 B19.331 C273.792 +G01 X+20.734 Y-34.925 Z-3.053 B19.325 C272.814 +G01 X+20.479 Y-34.935 B19.324 C271.836 +G01 X+20.221 Y-34.945 Z-3.055 B19.331 C270.841 +G01 X+19.971 Y-34.943 Z-3.054 B19.325 C269.887 +G01 X+19.722 Y-34.94 Z-3.053 B19.324 C268.933 +G01 X+19.451 Y-34.937 Z-3.055 B19.33 C267.891 +G01 X+19.208 Y-34.922 Z-3.054 B19.325 C266.96 +G01 X+18.965 Y-34.907 Z-3.053 B19.324 C266.03 +G01 X+18.683 Y-34.889 Z-3.055 B19.33 C264.94 +G01 X+18.447 Y-34.862 Z-3.054 B19.325 C264.033 +G01 X+18.212 Y-34.835 Z-3.053 B19.324 C263.126 +G01 X+17.918 Y-34.801 Z-3.055 B19.33 C261.989 +G01 X+17.69 Y-34.764 Z-3.054 B19.325 C261.106 +G01 X+17.463 Y-34.725 Z-3.053 B19.324 C260.223 +G01 X+17.159 Y-34.675 Z-3.055 B19.33 C259.038 +G01 X+16.72 Y-34.578 Z-3.053 B19.323 C257.32 +G01 X+16.407 Y-34.509 Z-3.055 B19.33 C256.087 +G01 X+15.986 Y-34.393 Z-3.053 B19.323 C254.417 +G01 X+15.665 Y-34.305 Z-3.055 B19.33 C253.137 +G01 X+15.262 Y-34.171 Z-3.053 B19.323 C251.513 +G01 X+14.935 Y-34.063 Z-3.055 B19.33 C250.186 +G01 X+14.55 Y-33.913 Z-3.053 B19.323 C248.61 +G01 X+14.217 Y-33.783 Z-3.055 B19.33 C247.235 +G01 X+13.969 Y-33.672 Z-3.053 B19.325 C246.192 +G01 X+13.721 Y-33.56 Z-3.054 B19.326 C245.148 +G01 X+13.516 Y-33.467 Z-3.055 B19.329 C244.284 +G01 X+13.279 Y-33.346 Z-3.053 B19.325 C243.265 +G01 X+13.042 Y-33.224 B19.326 C242.245 +G01 X+12.831 Y-33.116 Z-3.055 B19.329 C241.352 +G01 X+12.606 Y-32.985 Z-3.053 B19.325 C240.347 +G01 X+12.381 Y-32.855 C239.342 +G01 X+12.165 Y-32.729 Z-3.055 B19.33 C238.39 +G01 X+11.953 Y-32.591 Z-3.054 B19.325 C237.414 +G01 X+11.74 Y-32.452 Z-3.053 C236.438 +G01 X+11.52 Y-32.309 Z-3.055 B19.33 C235.437 +G01 X+11.32 Y-32.164 Z-3.054 B19.325 C234.486 +G01 X+11.12 Y-32.018 Z-3.053 C233.534 +G01 X+10.898 Y-31.856 Z-3.055 B19.33 C232.483 +G01 X+10.71 Y-31.705 Z-3.054 B19.325 C231.557 +G01 X+10.523 Y-31.553 Z-3.053 C230.631 +G01 X+10.3 Y-31.372 Z-3.055 B19.33 C229.53 +G01 X+10.125 Y-31.215 Z-3.054 B19.325 C228.629 +G01 X+9.95 Y-31.058 Z-3.053 C227.728 +G01 X+9.727 Y-30.857 Z-3.055 B19.33 C226.579 +G01 X+9.565 Y-30.696 Z-3.054 B19.325 C225.702 +G01 X+9.403 Y-30.534 Z-3.053 C224.824 +G01 X+9.182 Y-30.314 Z-3.055 B19.33 C223.628 +G01 X+8.923 Y-30.029 Z-3.053 B19.324 C222.153 +G01 X+8.871 Y-29.96 Z-3.051 B19.314 C221.821 +G01 X+8.831 Y-29.883 Z-3.043 B19.284 C221.498 +G01 X+8.806 Y-29.8 Z-3.031 B19.236 C221.194 +G01 X+8.733 Y-29.465 Z-2.974 B19.018 C220.02 +G01 X+8.71 Y-29.39 Z-2.963 B18.976 C219.743 +G01 X+8.676 Y-29.319 Z-2.957 B18.951 C219.455 +G01 X+8.632 Y-29.255 Z-2.955 B18.943 C219.141 +G01 X+8.406 Y-28.978 Z-2.956 B18.949 C217.747 +G01 X+8.243 Y-28.756 Z-2.955 B18.942 C216.675 +G01 X+8.101 Y-28.563 B18.943 C215.734 +G01 X+7.959 Y-28.369 Z-2.956 B18.949 C214.794 +G01 X+7.814 Y-28.149 Z-2.955 B18.942 C213.772 +G01 X+7.679 Y-27.944 B18.943 C212.807 +G01 X+7.544 Y-27.738 Z-2.956 B18.949 C211.842 +G01 X+7.407 Y-27.505 Z-2.955 B18.943 C210.785 +G01 X+7.271 Y-27.272 B18.944 C209.727 +G01 X+7.162 Y-27.087 Z-2.956 B18.949 C208.89 +G01 X+7.04 Y-26.852 Z-2.955 B18.943 C207.857 +G01 X+6.919 Y-26.618 B18.944 C206.824 +G01 X+6.814 Y-26.417 Z-2.956 B18.949 C205.938 +G01 X+6.707 Y-26.182 Z-2.955 B18.944 C204.929 +G01 X+6.6 Y-25.946 C203.92 +G01 X+6.502 Y-25.729 Z-2.956 B18.949 C202.985 +G01 X+6.409 Y-25.495 Z-2.955 B18.944 C202.001 +G01 X+6.317 Y-25.26 B18.943 C201.016 +G01 X+6.225 Y-25.027 Z-2.956 B18.949 C200.033 +G01 X+6.133 Y-24.755 Z-2.955 B18.943 C198.919 +G01 X+6.042 Y-24.482 C197.804 +G01 X+5.984 Y-24.311 Z-2.956 B18.949 C197.081 +G01 X+5.908 Y-24.04 Z-2.955 B18.943 C195.991 +G01 X+5.833 Y-23.77 C194.901 +G01 X+5.781 Y-23.584 Z-2.956 B18.949 C194.129 +G01 X+5.72 Y-23.316 Z-2.955 B18.943 C193.063 +G01 X+5.66 Y-23.047 C191.997 +G01 X+5.615 Y-22.847 Z-2.956 B18.949 C191.178 +G01 X+5.569 Y-22.582 Z-2.955 B18.943 C190.136 +G01 X+5.524 Y-22.317 C189.094 +G01 X+5.488 Y-22.103 Z-2.956 B18.949 C188.228 +G01 X+5.456 Y-21.842 Z-2.955 B18.943 C187.21 +G01 X+5.426 Y-21.581 C186.191 +G01 X+5.399 Y-21.353 Z-2.956 B18.949 C185.278 +G01 X+5.381 Y-21.097 Z-2.955 B18.943 C184.283 +G01 X+5.364 Y-20.841 C183.288 +G01 X+5.348 Y-20.599 Z-2.956 B18.949 C182.329 +G01 X+5.344 Y-20.349 Z-2.955 B18.943 C181.356 +G01 X+5.341 Y-20.098 B18.942 C180.384 +G01 X+5.337 Y-19.844 Z-2.956 B18.949 C179.379 +G01 X+5.346 Y-19.6 Z-2.955 B18.943 C178.43 +G01 X+5.355 Y-19.356 B18.942 C177.481 +G01 X+5.364 Y-19.09 Z-2.956 B18.949 C176.429 +G01 X+5.385 Y-18.852 Z-2.955 B18.943 C175.503 +G01 X+5.406 Y-18.615 B18.942 C174.578 +G01 X+5.431 Y-18.338 Z-2.956 B18.949 C173.479 +G01 X+5.463 Y-18.107 Z-2.955 B18.943 C172.577 +G01 X+5.495 Y-17.877 B18.942 C171.675 +G01 X+5.536 Y-17.59 Z-2.956 B18.949 C170.529 +G01 X+5.621 Y-17.145 Z-2.955 B18.942 C168.771 +G01 X+5.679 Y-16.848 Z-2.956 B18.948 C167.579 +G01 X+5.784 Y-16.421 Z-2.955 B18.942 C165.868 +G01 X+5.86 Y-16.115 Z-2.956 B18.948 C164.629 +G01 X+5.984 Y-15.705 Z-2.955 B18.942 C162.965 +G01 X+6.079 Y-15.392 Z-2.956 B18.948 C161.679 +G01 X+6.22 Y-15.001 Z-2.955 B18.942 C160.062 +G01 X+6.334 Y-14.682 Z-2.956 B18.948 C158.729 +G01 X+6.49 Y-14.31 Z-2.955 B18.942 C157.159 +G01 X+6.626 Y-13.986 Z-2.956 B18.948 C155.779 +G01 X+6.796 Y-13.633 Z-2.955 B18.942 C154.255 +G01 X+6.954 Y-13.305 Z-2.956 B18.948 C152.829 +G01 X+7.135 Y-12.972 Z-2.955 B18.942 C151.352 +G01 X+7.316 Y-12.642 Z-2.956 B18.948 C149.889 +G01 X+7.508 Y-12.329 Z-2.955 B18.942 C148.449 +G01 X+7.711 Y-11.999 Z-2.956 B18.948 C146.937 +G01 X+7.912 Y-11.707 Z-2.955 B18.942 C145.546 +G01 X+8.139 Y-11.377 Z-2.956 B18.948 C143.984 +G01 X+8.348 Y-11.105 Z-2.955 B18.942 C142.642 +G01 X+8.599 Y-10.778 Z-2.956 B18.948 C141.032 +G01 X+8.813 Y-10.526 Z-2.955 B18.942 C139.739 +G01 X+9.089 Y-10.203 Z-2.956 B18.948 C138.08 +G01 X+9.308 Y-9.972 Z-2.955 B18.942 C136.836 +G01 X+9.608 Y-9.655 Z-2.956 B18.948 C135.127 +G01 X+9.829 Y-9.443 Z-2.955 B18.942 C133.933 +G01 X+10.154 Y-9.133 Z-2.956 B18.949 C132.175 +G01 X+10.377 Y-8.941 Z-2.955 B18.942 C131.03 +G01 X+10.552 Y-8.791 B18.943 C130.126 +G01 X+10.726 Y-8.641 Z-2.956 B18.949 C129.223 +G01 X+10.949 Y-8.468 Z-2.955 B18.942 C128.126 +G01 X+11.136 Y-8.323 B18.943 C127.198 +G01 X+11.323 Y-8.178 Z-2.956 B18.949 C126.271 +G01 X+11.545 Y-8.024 Z-2.955 B18.942 C125.223 +G01 X+11.744 Y-7.886 B18.943 C124.271 +G01 X+11.943 Y-7.747 Z-2.956 B18.949 C123.318 +G01 X+12.176 Y-7.603 Z-2.955 B18.943 C122.249 +G01 X+12.408 Y-7.459 B18.944 C121.179 +G01 X+12.585 Y-7.349 Z-2.956 B18.949 C120.366 +G01 X+12.819 Y-7.22 Z-2.955 B18.943 C119.321 +G01 X+13.053 Y-7.091 B18.944 C118.275 +G01 X+13.246 Y-6.984 Z-2.956 B18.949 C117.414 +G01 X+13.481 Y-6.869 Z-2.955 B18.944 C116.393 +G01 X+13.716 Y-6.755 C115.372 +G01 X+13.925 Y-6.654 Z-2.956 B18.949 C114.461 +G01 X+14.16 Y-6.554 Z-2.955 B18.944 C113.465 +G01 X+14.395 Y-6.454 B18.943 C112.468 +G01 X+14.62 Y-6.359 Z-2.956 B18.949 C111.509 +G01 X+14.854 Y-6.273 Z-2.955 B18.944 C110.537 +G01 X+15.088 Y-6.188 B18.943 C109.565 +G01 X+15.329 Y-6.1 Z-2.956 B18.949 C108.557 +G01 X+15.601 Y-6.016 Z-2.955 B18.943 C107.455 +G01 X+15.873 Y-5.933 C106.352 +G01 X+16.051 Y-5.878 Z-2.956 B18.949 C105.605 +G01 X+16.321 Y-5.809 Z-2.955 B18.943 C104.527 +G01 X+16.59 Y-5.742 C103.449 +G01 X+16.783 Y-5.693 Z-2.956 B18.949 C102.653 +G01 X+17.05 Y-5.64 Z-2.955 B18.943 C101.6 +G01 X+17.317 Y-5.588 C100.546 +G01 X+17.524 Y-5.546 Z-2.956 B18.949 C99.703 +G01 X+17.787 Y-5.508 Z-2.955 B18.943 C98.673 +G01 X+18.05 Y-5.47 C97.643 +G01 X+18.272 Y-5.438 Z-2.956 B18.949 C96.753 +G01 X+18.53 Y-5.414 Z-2.955 B18.943 C95.747 +G01 X+18.789 Y-5.39 C94.739 +G01 X+19.023 Y-5.369 Z-2.956 B18.949 C93.803 +G01 X+19.277 Y-5.358 Z-2.955 B18.943 C92.82 +G01 X+19.53 Y-5.348 B18.942 C91.836 +G01 X+19.778 Y-5.338 Z-2.956 B18.949 C90.854 +G01 X+20.026 Y-5.34 Z-2.955 B18.943 C89.893 +G01 X+20.273 Y-5.343 B18.942 C88.933 +G01 X+20.533 Y-5.346 Z-2.956 B18.949 C87.904 +G01 X+20.774 Y-5.36 Z-2.955 B18.943 C86.967 +G01 X+21.015 Y-5.376 B18.942 C86.03 +G01 X+21.287 Y-5.393 Z-2.956 B18.949 C84.954 +G01 X+21.521 Y-5.419 Z-2.955 B18.943 C84.04 +G01 X+21.754 Y-5.446 B18.942 C83.126 +G01 X+22.037 Y-5.478 Z-2.956 B18.949 C82.004 +G01 X+22.263 Y-5.516 Z-2.955 B18.943 C81.114 +G01 X+22.489 Y-5.554 B18.942 C80.223 +G01 X+22.782 Y-5.602 Z-2.956 B18.949 C79.054 +G01 X+23.218 Y-5.698 Z-2.955 B18.942 C77.32 +G01 X+23.519 Y-5.765 Z-2.956 B18.948 C76.104 +G01 X+23.938 Y-5.88 Z-2.955 B18.942 C74.417 +G01 X+24.247 Y-5.965 Z-2.956 B18.948 C73.154 +G01 X+24.648 Y-6.097 Z-2.955 B18.942 C71.513 +G01 X+24.964 Y-6.202 Z-2.956 B18.948 C70.204 +G01 X+25.346 Y-6.351 Z-2.955 B18.942 C68.61 +G01 X+25.668 Y-6.476 Z-2.956 B18.948 C67.254 +G01 X+26.031 Y-6.639 Z-2.955 B18.942 C65.707 +G01 X+26.357 Y-6.786 Z-2.956 B18.948 C64.304 +G01 X+26.7 Y-6.962 Z-2.955 B18.942 C62.804 +G01 X+27.03 Y-7.131 Z-2.956 B18.948 C61.352 +G01 X+27.352 Y-7.318 Z-2.955 B18.942 C59.9 +G01 X+27.682 Y-7.509 Z-2.956 B18.948 C58.413 +G01 X+27.984 Y-7.706 Z-2.955 B18.942 C56.997 +G01 X+28.315 Y-7.921 Z-2.956 B18.948 C55.46 +G01 X+28.597 Y-8.126 Z-2.955 B18.942 C54.094 +G01 X+28.925 Y-8.365 Z-2.956 B18.948 C52.508 +G01 X+29.187 Y-8.577 Z-2.955 B18.942 C51.191 +G01 X+29.513 Y-8.84 Z-2.956 B18.948 C49.556 +G01 X+29.754 Y-9.057 Z-2.955 B18.942 C48.288 +G01 X+30.074 Y-9.345 Z-2.956 B18.948 C46.604 +G01 X+30.296 Y-9.565 Z-2.955 B18.942 C45.384 +G01 X+30.61 Y-9.877 Z-2.956 B18.948 C43.651 +G01 X+30.811 Y-10.1 Z-2.955 B18.942 C42.481 +G01 X+30.964 Y-10.268 B18.943 C41.59 +G01 X+31.117 Y-10.437 Z-2.956 B18.949 C40.699 +G01 X+31.299 Y-10.66 Z-2.955 B18.942 C39.578 +G01 X+31.447 Y-10.841 B18.943 C38.662 +G01 X+31.594 Y-11.022 Z-2.956 B18.949 C37.747 +G01 X+31.757 Y-11.244 Z-2.955 B18.942 C36.675 +G01 X+31.899 Y-11.437 B18.943 C35.734 +G01 X+32.041 Y-11.631 Z-2.956 B18.949 C34.794 +G01 X+32.186 Y-11.851 Z-2.955 B18.942 C33.772 +G01 X+32.321 Y-12.056 B18.943 C32.807 +G01 X+32.456 Y-12.262 Z-2.956 B18.949 C31.842 +G01 X+32.593 Y-12.495 Z-2.955 B18.943 C30.785 +G01 X+32.729 Y-12.728 B18.944 C29.727 +G01 X+32.838 Y-12.913 Z-2.956 B18.949 C28.89 +G01 X+32.96 Y-13.147 Z-2.955 B18.943 C27.857 +G01 X+33.081 Y-13.382 B18.944 C26.824 +G01 X+33.186 Y-13.583 Z-2.956 B18.949 C25.938 +G01 X+33.293 Y-13.818 Z-2.955 B18.944 C24.929 +G01 X+33.4 Y-14.053 C23.92 +G01 X+33.498 Y-14.271 Z-2.956 B18.949 C22.985 +G01 X+33.591 Y-14.505 Z-2.955 B18.944 C22.001 +G01 X+33.683 Y-14.74 B18.943 C21.016 +G01 X+33.775 Y-14.973 Z-2.956 B18.949 C20.033 +G01 X+33.867 Y-15.245 Z-2.955 B18.943 C18.919 +G01 X+33.958 Y-15.517 C17.804 +G01 X+34.016 Y-15.689 Z-2.956 B18.949 C17.081 +G01 X+34.092 Y-15.959 Z-2.955 B18.943 C15.991 +G01 X+34.167 Y-16.23 C14.901 +G01 X+34.219 Y-16.416 Z-2.956 B18.949 C14.129 +G01 X+34.28 Y-16.684 Z-2.955 B18.943 C13.063 +G01 X+34.34 Y-16.953 C11.997 +G01 X+34.385 Y-17.153 Z-2.956 B18.949 C11.178 +G01 X+34.431 Y-17.418 Z-2.955 B18.943 C10.136 +G01 X+34.476 Y-17.683 C9.094 +G01 X+34.512 Y-17.897 Z-2.956 B18.949 C8.228 +G01 X+34.544 Y-18.158 Z-2.955 B18.943 C7.21 +G01 X+34.574 Y-18.419 C6.191 +G01 X+34.601 Y-18.647 Z-2.956 B18.949 C5.278 +G01 X+34.619 Y-18.903 Z-2.955 B18.943 C4.283 +G01 X+34.636 Y-19.159 C3.288 +G01 X+34.652 Y-19.4 Z-2.956 B18.949 C2.329 +G01 X+34.656 Y-19.651 Z-2.955 B18.943 C1.357 +G01 X+34.659 Y-19.902 B18.942 C0.384 +G01 X+34.663 Y-20.155 Z-2.956 B18.949 C359.379 +G01 X+34.654 Y-20.4 Z-2.955 B18.943 C358.43 +G01 X+34.645 Y-20.644 B18.942 C357.481 +G01 X+34.636 Y-20.91 Z-2.956 B18.949 C356.429 +G01 X+34.615 Y-21.148 Z-2.955 B18.943 C355.503 +G01 X+34.594 Y-21.385 B18.942 C354.578 +G01 X+34.569 Y-21.662 Z-2.956 B18.949 C353.479 +G01 X+34.537 Y-21.892 Z-2.955 B18.943 C352.577 +G01 X+34.505 Y-22.122 B18.942 C351.675 +G01 X+34.464 Y-22.41 Z-2.956 B18.949 C350.529 +G01 X+34.379 Y-22.854 Z-2.955 B18.942 C348.771 +G01 X+34.321 Y-23.152 Z-2.956 B18.948 C347.579 +G01 X+34.216 Y-23.579 Z-2.955 B18.942 C345.868 +G01 X+34.14 Y-23.885 Z-2.956 B18.948 C344.629 +G01 X+34.016 Y-24.294 Z-2.955 B18.942 C342.965 +G01 X+33.921 Y-24.607 Z-2.956 B18.948 C341.679 +G01 X+33.78 Y-24.999 Z-2.955 B18.942 C340.062 +G01 X+33.666 Y-25.318 Z-2.956 B18.948 C338.729 +G01 X+33.51 Y-25.69 Z-2.955 B18.942 C337.159 +G01 X+33.374 Y-26.014 Z-2.956 B18.948 C335.779 +G01 X+33.204 Y-26.367 Z-2.955 B18.942 C334.255 +G01 X+33.046 Y-26.695 Z-2.956 B18.948 C332.829 +G01 X+32.865 Y-27.028 Z-2.955 B18.942 C331.352 +G01 X+32.684 Y-27.358 Z-2.956 B18.948 C329.889 +G01 X+32.492 Y-27.67 Z-2.955 B18.942 C328.449 +G01 X+32.289 Y-28.001 Z-2.956 B18.948 C326.937 +G01 X+32.088 Y-28.293 Z-2.955 B18.942 C325.546 +G01 X+31.861 Y-28.623 Z-2.956 B18.948 C323.984 +G01 X+31.652 Y-28.895 Z-2.955 B18.942 C322.642 +G01 X+31.401 Y-29.222 Z-2.956 B18.948 C321.032 +G01 X+31.187 Y-29.474 Z-2.955 B18.942 C319.739 +G01 X+30.911 Y-29.797 Z-2.956 B18.948 C318.08 +G01 X+30.692 Y-30.028 Z-2.955 B18.942 C316.836 +G01 X+30.392 Y-30.345 Z-2.956 B18.948 C315.127 +G01 X+30.171 Y-30.557 Z-2.955 B18.942 C313.933 +G01 X+29.846 Y-30.867 Z-2.956 B18.949 C312.175 +G01 X+29.623 Y-31.058 Z-2.955 B18.942 C311.03 +G01 X+29.448 Y-31.209 B18.943 C310.126 +G01 X+29.274 Y-31.359 Z-2.956 B18.949 C309.223 +G01 X+29.051 Y-31.532 Z-2.955 B18.942 C308.126 +G01 X+28.864 Y-31.677 B18.943 C307.198 +G01 X+28.677 Y-31.821 Z-2.956 B18.949 C306.271 +G01 X+28.455 Y-31.975 Z-2.955 B18.942 C305.223 +G01 X+28.256 Y-32.114 B18.943 C304.271 +G01 X+28.057 Y-32.252 Z-2.956 B18.949 C303.318 +G01 X+27.824 Y-32.397 Z-2.955 B18.943 C302.249 +G01 X+27.592 Y-32.541 B18.944 C301.179 +G01 X+27.415 Y-32.651 Z-2.956 B18.949 C300.366 +G01 X+27.181 Y-32.78 Z-2.955 B18.943 C299.321 +G01 X+26.947 Y-32.909 B18.944 C298.275 +G01 X+26.754 Y-33.016 Z-2.956 B18.949 C297.414 +G01 X+26.519 Y-33.13 Z-2.955 B18.944 C296.393 +G01 X+26.284 Y-33.245 C295.372 +G01 X+26.075 Y-33.346 Z-2.956 B18.949 C294.461 +G01 X+25.84 Y-33.446 Z-2.955 B18.944 C293.465 +G01 X+25.605 Y-33.546 B18.943 C292.468 +G01 X+25.38 Y-33.641 Z-2.956 B18.949 C291.509 +G01 X+25.146 Y-33.727 Z-2.955 B18.944 C290.537 +G01 X+24.912 Y-33.812 B18.943 C289.565 +G01 X+24.671 Y-33.9 Z-2.956 B18.949 C288.557 +G01 X+24.399 Y-33.984 Z-2.955 B18.943 C287.455 +G01 X+24.127 Y-34.067 C286.352 +G01 X+23.949 Y-34.122 Z-2.956 B18.949 C285.605 +G01 X+23.679 Y-34.19 Z-2.955 B18.943 C284.527 +G01 X+23.41 Y-34.258 C283.449 +G01 X+23.217 Y-34.307 Z-2.956 B18.949 C282.653 +G01 X+22.95 Y-34.36 Z-2.955 B18.943 C281.6 +G01 X+22.683 Y-34.412 C280.546 +G01 X+22.476 Y-34.453 Z-2.956 B18.949 C279.703 +G01 X+22.213 Y-34.492 Z-2.955 B18.943 C278.673 +G01 X+21.95 Y-34.53 C277.643 +G01 X+21.728 Y-34.562 Z-2.956 B18.949 C276.753 +G01 X+21.47 Y-34.586 Z-2.955 B18.943 C275.746 +G01 X+21.211 Y-34.61 C274.739 +G01 X+20.977 Y-34.631 Z-2.956 B18.949 C273.803 +G01 X+20.723 Y-34.642 Z-2.955 B18.943 C272.82 +G01 X+20.47 Y-34.652 B18.942 C271.836 +G01 X+20.222 Y-34.662 Z-2.956 B18.949 C270.854 +G01 X+19.975 Y-34.66 Z-2.955 B18.943 C269.893 +G01 X+19.727 Y-34.657 B18.942 C268.933 +G01 X+19.467 Y-34.654 Z-2.956 B18.949 C267.904 +G01 X+19.226 Y-34.639 Z-2.955 B18.943 C266.967 +G01 X+18.985 Y-34.624 B18.942 C266.03 +G01 X+18.713 Y-34.607 Z-2.956 B18.949 C264.954 +G01 X+18.479 Y-34.581 Z-2.955 B18.943 C264.04 +G01 X+18.246 Y-34.554 B18.942 C263.126 +G01 X+17.963 Y-34.522 Z-2.956 B18.949 C262.004 +G01 X+17.737 Y-34.484 Z-2.955 B18.943 C261.114 +G01 X+17.511 Y-34.446 B18.942 C260.223 +G01 X+17.218 Y-34.398 Z-2.956 B18.949 C259.054 +G01 X+16.782 Y-34.302 Z-2.955 B18.942 C257.32 +G01 X+16.481 Y-34.235 Z-2.956 B18.948 C256.104 +G01 X+16.062 Y-34.12 Z-2.955 B18.942 C254.417 +G01 X+15.753 Y-34.035 Z-2.956 B18.948 C253.154 +G01 X+15.352 Y-33.903 Z-2.955 B18.942 C251.513 +G01 X+15.036 Y-33.798 Z-2.956 B18.948 C250.204 +G01 X+14.654 Y-33.649 Z-2.955 B18.942 C248.61 +G01 X+14.332 Y-33.524 Z-2.956 B18.948 C247.254 +G01 X+13.969 Y-33.361 Z-2.955 B18.942 C245.707 +G01 X+13.643 Y-33.214 Z-2.956 B18.948 C244.304 +G01 X+13.3 Y-33.038 Z-2.955 B18.942 C242.804 +G01 X+12.963 Y-32.865 Z-2.956 B18.948 C241.352 +G01 X+12.641 Y-32.678 Z-2.955 B18.942 C239.882 +G01 X+12.318 Y-32.491 Z-2.956 B18.948 C238.413 +G01 X+12.016 Y-32.294 Z-2.955 B18.942 C236.997 +G01 X+11.685 Y-32.079 Z-2.956 B18.948 C235.46 +G01 X+11.403 Y-31.873 Z-2.955 B18.942 C234.094 +G01 X+11.075 Y-31.635 Z-2.956 B18.948 C232.508 +G01 X+10.813 Y-31.423 Z-2.955 B18.942 C231.191 +G01 X+10.487 Y-31.16 Z-2.956 B18.948 C229.556 +G01 X+10.246 Y-30.943 Z-2.955 B18.942 C228.288 +G01 X+9.926 Y-30.655 Z-2.956 B18.948 C226.604 +G01 X+9.704 Y-30.435 Z-2.955 B18.942 C225.384 +G01 X+9.39 Y-30.123 Z-2.956 B18.949 C223.651 +G01 X+9.133 Y-29.839 Z-2.955 B18.943 C222.154 +G01 X+9.081 Y-29.77 Z-2.952 B18.932 C221.806 +G01 X+9.041 Y-29.692 Z-2.945 B18.902 C221.476 +G01 X+9.016 Y-29.609 Z-2.932 B18.854 C221.172 +G01 X+8.943 Y-29.274 Z-2.877 B18.637 C219.977 +G01 X+8.92 Y-29.199 Z-2.866 B18.595 C219.69 +G01 X+8.886 Y-29.128 Z-2.86 B18.57 C219.4 +G01 X+8.841 Y-29.064 Z-2.858 B18.563 C219.085 +G01 X+8.633 Y-28.809 Z-2.86 B18.568 C217.776 +G01 X+8.437 Y-28.543 Z-2.858 B18.562 C216.461 +G01 X+8.195 Y-28.212 Z-2.86 B18.568 C214.825 +G01 X+8.02 Y-27.946 Z-2.858 B18.562 C213.558 +G01 X+7.788 Y-27.593 Z-2.86 B18.568 C211.873 +G01 X+7.632 Y-27.329 Z-2.858 B18.562 C210.655 +G01 X+7.413 Y-26.955 Z-2.86 B18.568 C208.922 +G01 X+7.277 Y-26.693 Z-2.858 B18.562 C207.752 +G01 X+7.071 Y-26.298 Z-2.86 B18.568 C205.971 +G01 X+6.954 Y-26.041 Z-2.858 B18.562 C204.849 +G01 X+6.859 Y-25.832 B18.563 C203.934 +G01 X+6.764 Y-25.624 Z-2.86 B18.568 C203.019 +G01 X+6.665 Y-25.372 Z-2.858 B18.562 C201.946 +G01 X+6.579 Y-25.154 B18.563 C201.007 +G01 X+6.492 Y-24.935 Z-2.86 B18.568 C200.068 +G01 X+6.393 Y-24.64 Z-2.858 B18.562 C198.831 +G01 X+6.294 Y-24.345 Z-2.859 B18.565 C197.594 +G01 X+6.256 Y-24.233 Z-2.86 B18.568 C197.117 +G01 X+6.174 Y-23.939 Z-2.858 B18.563 C195.903 +G01 X+6.092 Y-23.645 Z-2.859 B18.564 C194.69 +G01 X+6.057 Y-23.52 Z-2.86 B18.568 C194.165 +G01 X+5.991 Y-23.228 Z-2.858 B18.563 C192.976 +G01 X+5.925 Y-22.936 Z-2.859 B18.564 C191.787 +G01 X+5.894 Y-22.797 Z-2.86 B18.568 C191.214 +G01 X+5.844 Y-22.508 Z-2.858 B18.563 C190.049 +G01 X+5.795 Y-22.219 Z-2.859 B18.564 C188.883 +G01 X+5.769 Y-22.067 Z-2.86 B18.568 C188.263 +G01 X+5.734 Y-21.782 Z-2.858 B18.563 C187.121 +G01 X+5.701 Y-21.497 Z-2.859 B18.564 C185.98 +G01 X+5.681 Y-21.332 Z-2.86 B18.568 C185.311 +G01 X+5.662 Y-21.051 Z-2.858 B18.563 C184.194 +G01 X+5.643 Y-20.771 Z-2.859 C183.076 +G01 X+5.631 Y-20.593 Z-2.86 B18.568 C182.36 +G01 X+5.627 Y-20.318 Z-2.858 B18.563 C181.266 +G01 X+5.623 Y-20.043 C180.173 +G01 X+5.62 Y-19.853 Z-2.86 B18.568 C179.409 +G01 X+5.629 Y-19.584 Z-2.858 B18.563 C178.339 +G01 X+5.639 Y-19.314 C177.269 +G01 X+5.647 Y-19.113 Z-2.86 B18.568 C176.457 +G01 X+5.669 Y-18.85 Z-2.858 B18.563 C175.412 +G01 X+5.693 Y-18.588 C174.366 +G01 X+5.711 Y-18.375 Z-2.86 B18.568 C173.506 +G01 X+5.747 Y-18.12 Z-2.858 B18.563 C172.484 +G01 X+5.783 Y-17.865 C171.463 +G01 X+5.814 Y-17.642 Z-2.86 B18.568 C170.555 +G01 X+5.861 Y-17.394 Z-2.858 B18.563 C169.557 +G01 X+5.909 Y-17.147 C168.559 +G01 X+5.954 Y-16.914 Z-2.86 B18.568 C167.603 +G01 X+6.013 Y-16.676 Z-2.858 B18.563 C166.63 +G01 X+6.072 Y-16.437 B18.562 C165.656 +G01 X+6.132 Y-16.195 Z-2.86 B18.568 C164.652 +G01 X+6.201 Y-15.966 Z-2.858 B18.563 C163.702 +G01 X+6.27 Y-15.737 B18.562 C162.752 +G01 X+6.346 Y-15.487 Z-2.86 B18.568 C161.701 +G01 X+6.425 Y-15.267 Z-2.858 B18.563 C160.775 +G01 X+6.504 Y-15.047 B18.562 C159.849 +G01 X+6.596 Y-14.79 Z-2.86 B18.567 C158.749 +G01 X+6.684 Y-14.579 Z-2.858 B18.563 C157.848 +G01 X+6.772 Y-14.369 B18.562 C156.946 +G01 X+6.882 Y-14.107 Z-2.86 B18.567 C155.798 +G01 X+7.074 Y-13.707 Z-2.858 B18.562 C154.042 +G01 X+7.203 Y-13.439 Z-2.86 B18.567 C152.849 +G01 X+7.41 Y-13.06 Z-2.858 B18.562 C151.139 +G01 X+7.558 Y-12.788 Z-2.86 B18.567 C149.901 +G01 X+7.778 Y-12.431 Z-2.858 B18.562 C148.236 +G01 X+7.946 Y-12.158 Z-2.86 B18.567 C146.959 +G01 X+8.177 Y-11.822 Z-2.858 B18.562 C145.332 +G01 X+8.365 Y-11.548 Z-2.86 B18.567 C144.008 +G01 X+8.606 Y-11.234 Z-2.858 B18.562 C142.429 +G01 X+8.827 Y-10.947 Z-2.86 B18.567 C140.985 +G01 X+9.065 Y-10.668 Z-2.858 B18.562 C139.526 +G01 X+9.296 Y-10.396 Z-2.86 B18.567 C138.105 +G01 X+9.551 Y-10.126 Z-2.858 B18.562 C136.623 +G01 X+9.804 Y-9.858 Z-2.86 B18.568 C135.154 +G01 X+10.065 Y-9.609 Z-2.858 B18.562 C133.719 +G01 X+10.34 Y-9.347 Z-2.86 B18.568 C132.203 +G01 X+10.604 Y-9.119 Z-2.858 B18.562 C130.816 +G01 X+10.901 Y-8.864 Z-2.86 B18.568 C129.251 +G01 X+11.167 Y-8.658 Z-2.858 B18.562 C127.913 +G01 X+11.487 Y-8.41 Z-2.86 B18.568 C126.3 +G01 X+11.753 Y-8.225 Z-2.858 B18.562 C125.01 +G01 X+12.095 Y-7.987 Z-2.86 B18.568 C123.349 +G01 X+12.36 Y-7.822 Z-2.858 B18.562 C122.107 +G01 X+12.723 Y-7.596 Z-2.86 B18.568 C120.398 +G01 X+12.986 Y-7.451 Z-2.858 B18.562 C119.204 +G01 X+13.372 Y-7.238 Z-2.86 B18.568 C117.446 +G01 X+13.631 Y-7.112 Z-2.858 B18.562 C116.3 +G01 X+13.834 Y-7.012 B18.563 C115.398 +G01 X+14.037 Y-6.914 Z-2.86 B18.568 C114.495 +G01 X+14.292 Y-6.805 Z-2.858 B18.562 C113.397 +G01 X+14.505 Y-6.714 B18.563 C112.47 +G01 X+14.719 Y-6.624 Z-2.86 B18.568 C111.543 +G01 X+15.014 Y-6.516 Z-2.858 B18.562 C110.295 +G01 X+15.309 Y-6.408 Z-2.859 B18.565 C109.046 +G01 X+15.415 Y-6.37 Z-2.86 B18.569 C108.592 +G01 X+15.709 Y-6.279 Z-2.858 B18.563 C107.367 +G01 X+16.003 Y-6.188 Z-2.859 B18.565 C106.142 +G01 X+16.122 Y-6.152 Z-2.86 B18.568 C105.641 +G01 X+16.415 Y-6.078 Z-2.858 B18.563 C104.44 +G01 X+16.708 Y-6.004 Z-2.859 B18.564 C103.239 +G01 X+16.84 Y-5.971 Z-2.86 B18.568 C102.69 +G01 X+17.131 Y-5.913 Z-2.858 B18.563 C101.512 +G01 X+17.421 Y-5.855 Z-2.859 B18.564 C100.335 +G01 X+17.567 Y-5.826 Z-2.86 B18.568 C99.738 +G01 X+17.854 Y-5.784 Z-2.858 B18.563 C98.585 +G01 X+18.141 Y-5.743 Z-2.859 B18.564 C97.432 +G01 X+18.3 Y-5.72 Z-2.86 B18.568 C96.787 +G01 X+18.583 Y-5.693 Z-2.858 B18.563 C95.658 +G01 X+18.866 Y-5.667 Z-2.859 B18.564 C94.528 +G01 X+19.037 Y-5.651 Z-2.86 B18.568 C93.836 +G01 X+19.315 Y-5.64 Z-2.858 B18.563 C92.73 +G01 X+19.593 Y-5.628 Z-2.859 C91.625 +G01 X+19.777 Y-5.621 Z-2.86 B18.568 C90.884 +G01 X+20.049 Y-5.623 Z-2.858 B18.563 C89.803 +G01 X+20.322 Y-5.626 C88.721 +G01 X+20.517 Y-5.628 Z-2.86 B18.568 C87.933 +G01 X+20.783 Y-5.645 Z-2.858 B18.563 C86.875 +G01 X+21.049 Y-5.661 C85.818 +G01 X+21.257 Y-5.674 Z-2.86 B18.568 C84.982 +G01 X+21.515 Y-5.703 Z-2.858 B18.563 C83.948 +G01 X+21.774 Y-5.733 C82.914 +G01 X+21.992 Y-5.758 Z-2.86 B18.568 C82.03 +G01 X+22.243 Y-5.799 Z-2.858 B18.563 C81.021 +G01 X+22.495 Y-5.841 C80.011 +G01 X+22.723 Y-5.879 Z-2.86 B18.568 C79.079 +G01 X+22.966 Y-5.932 Z-2.858 B18.563 C78.093 +G01 X+23.208 Y-5.986 C77.107 +G01 X+23.446 Y-6.038 Z-2.86 B18.568 C76.128 +G01 X+23.68 Y-6.102 Z-2.858 B18.563 C75.166 +G01 X+23.914 Y-6.167 B18.562 C74.204 +G01 X+24.16 Y-6.234 Z-2.86 B18.568 C73.176 +G01 X+24.385 Y-6.308 Z-2.858 B18.563 C72.239 +G01 X+24.61 Y-6.383 B18.562 C71.301 +G01 X+24.863 Y-6.467 Z-2.86 B18.567 C70.225 +G01 X+25.079 Y-6.55 Z-2.858 B18.563 C69.311 +G01 X+25.294 Y-6.634 B18.562 C68.397 +G01 X+25.554 Y-6.735 Z-2.86 B18.567 C67.274 +G01 X+25.964 Y-6.919 Z-2.858 B18.562 C65.494 +G01 X+26.229 Y-7.038 Z-2.86 B18.567 C64.324 +G01 X+26.619 Y-7.238 Z-2.858 B18.562 C62.591 +G01 X+26.888 Y-7.376 Z-2.86 B18.567 C61.352 +G01 X+27.257 Y-7.59 Z-2.858 B18.562 C59.687 +G01 X+27.529 Y-7.748 Z-2.86 B18.567 C58.435 +G01 X+27.876 Y-7.973 Z-2.858 B18.562 C56.784 +G01 X+28.15 Y-8.151 Z-2.86 B18.567 C55.484 +G01 X+28.475 Y-8.387 Z-2.858 B18.562 C53.881 +G01 X+28.749 Y-8.587 Z-2.86 B18.567 C52.532 +G01 X+29.052 Y-8.832 Z-2.858 B18.562 C50.977 +G01 X+29.334 Y-9.06 Z-2.86 B18.567 C49.533 +G01 X+29.606 Y-9.304 Z-2.858 B18.562 C48.074 +G01 X+29.876 Y-9.547 Z-2.86 B18.568 C46.63 +G01 X+30.136 Y-9.805 Z-2.858 B18.562 C45.171 +G01 X+30.401 Y-10.069 Z-2.86 B18.568 C43.678 +G01 X+30.639 Y-10.331 Z-2.858 B18.562 C42.268 +G01 X+30.898 Y-10.617 Z-2.86 B18.568 C40.727 +G01 X+31.115 Y-10.882 Z-2.858 B18.562 C39.365 +G01 X+31.367 Y-11.191 Z-2.86 B18.568 C37.776 +G01 X+31.563 Y-11.457 Z-2.858 B18.562 C36.461 +G01 X+31.805 Y-11.788 Z-2.86 B18.568 C34.825 +G01 X+31.98 Y-12.054 Z-2.858 B18.562 C33.558 +G01 X+32.213 Y-12.406 Z-2.86 B18.568 C31.873 +G01 X+32.368 Y-12.671 Z-2.858 B18.562 C30.655 +G01 X+32.587 Y-13.045 Z-2.86 B18.568 C28.922 +G01 X+32.723 Y-13.306 Z-2.858 B18.562 C27.752 +G01 X+32.929 Y-13.702 Z-2.86 B18.568 C25.971 +G01 X+33.046 Y-13.959 Z-2.858 B18.562 C24.849 +G01 X+33.141 Y-14.168 B18.563 C23.934 +G01 X+33.236 Y-14.376 Z-2.86 B18.568 C23.019 +G01 X+33.335 Y-14.628 Z-2.858 B18.562 C21.946 +G01 X+33.421 Y-14.846 B18.563 C21.007 +G01 X+33.508 Y-15.065 Z-2.86 B18.568 C20.068 +G01 X+33.607 Y-15.36 Z-2.858 B18.562 C18.831 +G01 X+33.706 Y-15.655 Z-2.859 B18.565 C17.594 +G01 X+33.744 Y-15.767 Z-2.86 B18.568 C17.117 +G01 X+33.826 Y-16.061 Z-2.858 B18.563 C15.904 +G01 X+33.908 Y-16.354 Z-2.859 B18.564 C14.69 +G01 X+33.943 Y-16.48 Z-2.86 B18.568 C14.165 +G01 X+34.009 Y-16.772 Z-2.858 B18.563 C12.976 +G01 X+34.075 Y-17.064 Z-2.859 B18.564 C11.787 +G01 X+34.106 Y-17.203 Z-2.86 B18.568 C11.214 +G01 X+34.156 Y-17.491 Z-2.858 B18.563 C10.049 +G01 X+34.205 Y-17.78 Z-2.859 B18.564 C8.883 +G01 X+34.231 Y-17.932 Z-2.86 B18.568 C8.263 +G01 X+34.266 Y-18.218 Z-2.858 B18.563 C7.121 +G01 X+34.299 Y-18.503 Z-2.859 B18.564 C5.98 +G01 X+34.319 Y-18.668 Z-2.86 B18.568 C5.311 +G01 X+34.338 Y-18.948 Z-2.858 B18.563 C4.194 +G01 X+34.357 Y-19.229 Z-2.859 C3.076 +G01 X+34.369 Y-19.407 Z-2.86 B18.568 C2.36 +G01 X+34.373 Y-19.682 Z-2.858 B18.563 C1.267 +G01 X+34.377 Y-19.957 C0.173 +G01 X+34.38 Y-20.147 Z-2.86 B18.568 C359.409 +G01 X+34.371 Y-20.416 Z-2.858 B18.563 C358.339 +G01 X+34.361 Y-20.686 C357.269 +G01 X+34.353 Y-20.887 Z-2.86 B18.568 C356.457 +G01 X+34.331 Y-21.15 Z-2.858 B18.563 C355.412 +G01 X+34.307 Y-21.412 C354.366 +G01 X+34.289 Y-21.625 Z-2.86 B18.568 C353.506 +G01 X+34.253 Y-21.88 Z-2.858 B18.563 C352.484 +G01 X+34.217 Y-22.135 C351.463 +G01 X+34.186 Y-22.358 Z-2.86 B18.568 C350.555 +G01 X+34.139 Y-22.605 Z-2.858 B18.563 C349.557 +G01 X+34.091 Y-22.852 C348.559 +G01 X+34.046 Y-23.085 Z-2.86 B18.568 C347.603 +G01 X+33.987 Y-23.324 Z-2.858 B18.563 C346.63 +G01 X+33.928 Y-23.562 B18.562 C345.656 +G01 X+33.868 Y-23.804 Z-2.86 B18.568 C344.652 +G01 X+33.799 Y-24.034 Z-2.858 B18.563 C343.702 +G01 X+33.73 Y-24.263 B18.562 C342.752 +G01 X+33.654 Y-24.513 Z-2.86 B18.568 C341.701 +G01 X+33.575 Y-24.733 Z-2.858 B18.563 C340.775 +G01 X+33.496 Y-24.953 B18.562 C339.849 +G01 X+33.404 Y-25.21 Z-2.86 B18.567 C338.749 +G01 X+33.316 Y-25.42 Z-2.858 B18.563 C337.848 +G01 X+33.228 Y-25.63 B18.562 C336.946 +G01 X+33.118 Y-25.893 Z-2.86 B18.567 C335.798 +G01 X+32.926 Y-26.293 Z-2.858 B18.562 C334.042 +G01 X+32.797 Y-26.561 Z-2.86 B18.567 C332.849 +G01 X+32.59 Y-26.94 Z-2.858 B18.562 C331.139 +G01 X+32.442 Y-27.212 Z-2.86 B18.567 C329.901 +G01 X+32.222 Y-27.569 Z-2.858 B18.562 C328.236 +G01 X+32.054 Y-27.842 Z-2.86 B18.567 C326.959 +G01 X+31.823 Y-28.178 Z-2.858 B18.562 C325.332 +G01 X+31.635 Y-28.452 Z-2.86 B18.567 C324.008 +G01 X+31.394 Y-28.766 Z-2.858 B18.562 C322.429 +G01 X+31.173 Y-29.053 Z-2.86 B18.567 C320.985 +G01 X+30.935 Y-29.332 Z-2.858 B18.562 C319.526 +G01 X+30.704 Y-29.603 Z-2.86 B18.567 C318.105 +G01 X+30.449 Y-29.874 Z-2.858 B18.562 C316.623 +G01 X+30.196 Y-30.142 Z-2.86 B18.568 C315.154 +G01 X+29.935 Y-30.39 Z-2.858 B18.562 C313.719 +G01 X+29.66 Y-30.653 Z-2.86 B18.568 C312.203 +G01 X+29.396 Y-30.88 Z-2.858 B18.562 C310.816 +G01 X+29.099 Y-31.136 Z-2.86 B18.568 C309.251 +G01 X+28.833 Y-31.342 Z-2.858 B18.562 C307.913 +G01 X+28.513 Y-31.59 Z-2.86 B18.568 C306.3 +G01 X+28.247 Y-31.775 Z-2.858 B18.562 C305.01 +G01 X+27.905 Y-32.013 Z-2.86 B18.568 C303.349 +G01 X+27.64 Y-32.178 Z-2.858 B18.562 C302.107 +G01 X+27.277 Y-32.404 Z-2.86 B18.568 C300.398 +G01 X+27.014 Y-32.549 Z-2.858 B18.562 C299.204 +G01 X+26.628 Y-32.762 Z-2.86 B18.568 C297.446 +G01 X+26.369 Y-32.888 Z-2.858 B18.562 C296.3 +G01 X+26.166 Y-32.988 B18.563 C295.398 +G01 X+25.963 Y-33.086 Z-2.86 B18.568 C294.495 +G01 X+25.708 Y-33.194 Z-2.858 B18.562 C293.397 +G01 X+25.495 Y-33.285 B18.563 C292.47 +G01 X+25.281 Y-33.376 Z-2.86 B18.568 C291.543 +G01 X+24.986 Y-33.484 Z-2.858 B18.562 C290.295 +G01 X+24.691 Y-33.591 Z-2.859 B18.565 C289.046 +G01 X+24.585 Y-33.63 Z-2.86 B18.569 C288.592 +G01 X+24.291 Y-33.721 Z-2.858 B18.563 C287.367 +G01 X+23.997 Y-33.811 Z-2.859 B18.565 C286.142 +G01 X+23.878 Y-33.848 Z-2.86 B18.568 C285.641 +G01 X+23.585 Y-33.922 Z-2.858 B18.563 C284.44 +G01 X+23.292 Y-33.996 Z-2.859 B18.564 C283.239 +G01 X+23.16 Y-34.029 Z-2.86 B18.568 C282.69 +G01 X+22.869 Y-34.087 Z-2.858 B18.563 C281.512 +G01 X+22.579 Y-34.145 Z-2.859 B18.564 C280.335 +G01 X+22.433 Y-34.173 Z-2.86 B18.568 C279.738 +G01 X+22.146 Y-34.215 Z-2.858 B18.563 C278.585 +G01 X+21.859 Y-34.257 Z-2.859 B18.564 C277.432 +G01 X+21.7 Y-34.28 Z-2.86 B18.568 C276.787 +G01 X+21.417 Y-34.306 Z-2.858 B18.563 C275.658 +G01 X+21.134 Y-34.333 Z-2.859 B18.564 C274.528 +G01 X+20.963 Y-34.348 Z-2.86 B18.568 C273.836 +G01 X+20.685 Y-34.36 Z-2.858 B18.563 C272.73 +G01 X+20.407 Y-34.371 Z-2.859 C271.625 +G01 X+20.223 Y-34.379 Z-2.86 B18.568 C270.884 +G01 X+19.951 Y-34.376 Z-2.858 B18.563 C269.803 +G01 X+19.678 Y-34.373 C268.721 +G01 X+19.483 Y-34.371 Z-2.86 B18.568 C267.933 +G01 X+19.217 Y-34.355 Z-2.858 B18.563 C266.875 +G01 X+18.951 Y-34.339 C265.818 +G01 X+18.743 Y-34.326 Z-2.86 B18.568 C264.982 +G01 X+18.485 Y-34.297 Z-2.858 B18.563 C263.948 +G01 X+18.226 Y-34.267 C262.914 +G01 X+18.008 Y-34.242 Z-2.86 B18.568 C262.03 +G01 X+17.757 Y-34.201 Z-2.858 B18.563 C261.021 +G01 X+17.505 Y-34.159 C260.011 +G01 X+17.277 Y-34.121 Z-2.86 B18.568 C259.079 +G01 X+17.034 Y-34.067 Z-2.858 B18.563 C258.093 +G01 X+16.792 Y-34.014 C257.107 +G01 X+16.554 Y-33.962 Z-2.86 B18.568 C256.128 +G01 X+16.32 Y-33.898 Z-2.858 B18.563 C255.166 +G01 X+16.086 Y-33.833 B18.562 C254.204 +G01 X+15.84 Y-33.766 Z-2.86 B18.568 C253.176 +G01 X+15.615 Y-33.692 Z-2.858 B18.563 C252.239 +G01 X+15.39 Y-33.617 B18.562 C251.301 +G01 X+15.137 Y-33.533 Z-2.86 B18.567 C250.225 +G01 X+14.921 Y-33.45 Z-2.858 B18.563 C249.311 +G01 X+14.706 Y-33.366 B18.562 C248.397 +G01 X+14.446 Y-33.265 Z-2.86 B18.567 C247.274 +G01 X+14.036 Y-33.081 Z-2.858 B18.562 C245.494 +G01 X+13.771 Y-32.962 Z-2.86 B18.567 C244.324 +G01 X+13.381 Y-32.762 Z-2.858 B18.562 C242.591 +G01 X+13.099 Y-32.617 Z-2.86 B18.567 C241.352 +G01 X+12.785 Y-32.435 Z-2.858 B18.561 C239.894 +G01 X+12.471 Y-32.252 Z-2.86 B18.567 C238.435 +G01 X+12.124 Y-32.027 Z-2.858 B18.562 C236.784 +G01 X+11.85 Y-31.848 Z-2.86 B18.567 C235.484 +G01 X+11.525 Y-31.612 Z-2.858 B18.562 C233.881 +G01 X+11.251 Y-31.413 Z-2.86 B18.567 C232.532 +G01 X+10.948 Y-31.168 Z-2.858 B18.562 C230.977 +G01 X+10.666 Y-30.94 Z-2.86 B18.567 C229.533 +G01 X+10.394 Y-30.695 Z-2.858 B18.562 C228.074 +G01 X+10.124 Y-30.453 Z-2.86 B18.568 C226.63 +G01 X+9.864 Y-30.195 Z-2.858 B18.562 C225.171 +G01 X+9.599 Y-29.931 Z-2.86 B18.568 C223.678 +G01 X+9.343 Y-29.649 Z-2.858 B18.562 C222.161 +G01 X+9.291 Y-29.58 Z-2.856 B18.552 C221.812 +G01 X+9.251 Y-29.502 Z-2.848 B18.522 C221.474 +G01 X+9.225 Y-29.419 Z-2.836 B18.481 C221.156 +G01 X+9.152 Y-29.083 Z-2.782 B18.263 C219.932 +G01 X+9.129 Y-29.008 Z-2.772 B18.221 C219.641 +G01 X+9.095 Y-28.937 Z-2.766 B18.197 C219.331 +G01 X+9.05 Y-28.873 Z-2.764 B18.189 C219.005 +G01 X+8.86 Y-28.64 Z-2.765 B18.195 C217.787 +G01 X+8.595 Y-28.28 Z-2.764 B18.19 C215.966 +G01 X+8.43 Y-28.055 Z-2.765 B18.195 C214.834 +G01 X+8.19 Y-27.691 Z-2.764 B18.189 C213.062 +G01 X+8.031 Y-27.449 Z-2.765 B18.195 C211.881 +G01 X+7.816 Y-27.083 Z-2.764 B18.189 C210.159 +G01 X+7.663 Y-26.823 Z-2.765 B18.195 C208.93 +G01 X+7.473 Y-26.457 Z-2.764 B18.189 C207.256 +G01 X+7.328 Y-26.178 Z-2.765 B18.195 C205.979 +G01 X+7.162 Y-25.814 Z-2.764 B18.189 C204.353 +G01 X+7.027 Y-25.518 Z-2.765 B18.195 C203.029 +G01 X+6.921 Y-25.251 Z-2.764 B18.189 C201.868 +G01 X+6.816 Y-24.984 B18.19 C200.707 +G01 X+6.754 Y-24.826 Z-2.765 B18.194 C200.005 +G01 X+6.667 Y-24.568 Z-2.764 B18.189 C198.904 +G01 X+6.58 Y-24.309 B18.19 C197.804 +G01 X+6.528 Y-24.155 Z-2.765 B18.195 C197.128 +G01 X+6.454 Y-23.89 Z-2.764 B18.189 C196.015 +G01 X+6.38 Y-23.624 C194.901 +G01 X+6.332 Y-23.456 Z-2.765 B18.195 C194.178 +G01 X+6.273 Y-23.193 Z-2.764 B18.189 C193.088 +G01 X+6.214 Y-22.93 C191.997 +G01 X+6.172 Y-22.748 Z-2.765 B18.195 C191.228 +G01 X+6.128 Y-22.488 Z-2.764 B18.189 C190.161 +G01 X+6.083 Y-22.228 C189.094 +G01 X+6.049 Y-22.032 Z-2.765 B18.195 C188.277 +G01 X+6.019 Y-21.776 Z-2.764 B18.189 C187.234 +G01 X+5.988 Y-21.52 C186.191 +G01 X+5.963 Y-21.311 Z-2.765 B18.195 C185.327 +G01 X+5.946 Y-21.06 Z-2.764 B18.189 C184.307 +G01 X+5.929 Y-20.808 C183.288 +G01 X+5.914 Y-20.587 Z-2.765 B18.195 C182.376 +G01 X+5.91 Y-20.341 Z-2.764 B18.189 C181.381 +G01 X+5.907 Y-20.094 C180.384 +G01 X+5.903 Y-19.861 Z-2.765 B18.195 C179.426 +G01 X+5.911 Y-19.621 Z-2.764 B18.189 C178.454 +G01 X+5.92 Y-19.381 B18.188 C177.481 +G01 X+5.929 Y-19.136 Z-2.765 B18.195 C176.476 +G01 X+5.949 Y-18.902 Z-2.764 B18.189 C175.527 +G01 X+5.969 Y-18.668 B18.188 C174.578 +G01 X+5.992 Y-18.412 Z-2.765 B18.195 C173.525 +G01 X+6.023 Y-18.186 Z-2.764 B18.189 C172.6 +G01 X+6.055 Y-17.959 B18.188 C171.675 +G01 X+6.092 Y-17.693 Z-2.765 B18.195 C170.575 +G01 X+6.176 Y-17.256 Z-2.764 B18.188 C168.772 +G01 X+6.229 Y-16.98 Z-2.765 B18.194 C167.625 +G01 X+6.333 Y-16.559 Z-2.764 B18.188 C165.868 +G01 X+6.403 Y-16.275 Z-2.765 B18.194 C164.674 +G01 X+6.525 Y-15.871 Z-2.764 B18.188 C162.965 +G01 X+6.613 Y-15.58 Z-2.765 B18.194 C161.724 +G01 X+6.751 Y-15.194 Z-2.764 B18.188 C160.062 +G01 X+6.858 Y-14.897 Z-2.765 B18.194 C158.773 +G01 X+7.012 Y-14.529 Z-2.764 B18.188 C157.159 +G01 X+7.138 Y-14.227 Z-2.765 B18.194 C155.823 +G01 X+7.306 Y-13.878 Z-2.764 B18.188 C154.255 +G01 X+7.452 Y-13.573 Z-2.765 B18.194 C152.873 +G01 X+7.583 Y-13.333 Z-2.764 B18.189 C151.759 +G01 X+7.714 Y-13.093 B18.191 C150.645 +G01 X+7.8 Y-12.936 Z-2.765 B18.194 C149.922 +G01 X+7.94 Y-12.708 Z-2.764 B18.189 C148.832 +G01 X+8.08 Y-12.48 B18.191 C147.741 +G01 X+8.18 Y-12.317 Z-2.765 B18.194 C146.981 +G01 X+8.328 Y-12.101 Z-2.764 B18.189 C145.91 +G01 X+8.476 Y-11.886 B18.19 C144.838 +G01 X+8.591 Y-11.719 Z-2.765 B18.194 C144.028 +G01 X+8.811 Y-11.43 Z-2.764 B18.188 C142.551 +G01 X+9.032 Y-11.142 Z-2.765 B18.194 C141.075 +G01 X+9.245 Y-10.892 Z-2.764 B18.188 C139.739 +G01 X+9.503 Y-10.589 Z-2.765 B18.194 C138.122 +G01 X+9.752 Y-10.325 Z-2.764 B18.188 C136.646 +G01 X+10.001 Y-10.061 Z-2.765 B18.194 C135.169 +G01 X+10.173 Y-9.897 Z-2.764 B18.19 C134.197 +G01 X+10.346 Y-9.732 C133.224 +G01 X+10.526 Y-9.56 Z-2.765 B18.194 C132.216 +G01 X+10.702 Y-9.408 Z-2.764 B18.19 C131.269 +G01 X+10.878 Y-9.256 C130.321 +G01 X+11.076 Y-9.086 Z-2.765 B18.194 C129.263 +G01 X+11.255 Y-8.947 Z-2.764 B18.19 C128.341 +G01 X+11.434 Y-8.808 C127.418 +G01 X+11.65 Y-8.641 Z-2.765 B18.195 C126.31 +G01 X+12.012 Y-8.389 Z-2.764 B18.189 C124.514 +G01 X+12.246 Y-8.226 Z-2.765 B18.195 C123.358 +G01 X+12.61 Y-7.999 Z-2.764 B18.189 C121.611 +G01 X+12.862 Y-7.843 Z-2.765 B18.195 C120.405 +G01 X+13.228 Y-7.64 Z-2.764 B18.189 C118.708 +G01 X+13.497 Y-7.491 Z-2.765 B18.195 C117.454 +G01 X+13.862 Y-7.313 Z-2.764 B18.189 C115.804 +G01 X+14.15 Y-7.173 Z-2.765 B18.195 C114.504 +G01 X+14.417 Y-7.059 Z-2.764 B18.189 C113.332 +G01 X+14.684 Y-6.946 B18.19 C112.159 +G01 X+14.818 Y-6.889 Z-2.765 B18.195 C111.554 +G01 X+15.085 Y-6.791 Z-2.764 B18.189 C110.405 +G01 X+15.352 Y-6.694 B18.19 C109.255 +G01 X+15.5 Y-6.64 Z-2.765 B18.195 C108.604 +G01 X+15.766 Y-6.557 Z-2.764 B18.189 C107.478 +G01 X+16.032 Y-6.476 B18.19 C106.352 +G01 X+16.194 Y-6.426 Z-2.765 B18.195 C105.651 +G01 X+16.458 Y-6.359 Z-2.764 B18.189 C104.55 +G01 X+16.722 Y-6.292 C103.449 +G01 X+16.897 Y-6.248 Z-2.765 B18.195 C102.703 +G01 X+17.159 Y-6.196 Z-2.764 B18.189 C101.624 +G01 X+17.42 Y-6.144 C100.546 +G01 X+17.609 Y-6.106 Z-2.765 B18.195 C99.752 +G01 X+17.867 Y-6.068 Z-2.764 B18.189 C98.698 +G01 X+18.126 Y-6.031 C97.642 +G01 X+18.328 Y-6.002 Z-2.765 B18.195 C96.802 +G01 X+18.582 Y-5.978 Z-2.764 B18.189 C95.771 +G01 X+18.836 Y-5.954 C94.739 +G01 X+19.051 Y-5.934 Z-2.765 B18.195 C93.852 +G01 X+19.299 Y-5.923 Z-2.764 B18.189 C92.844 +G01 X+19.548 Y-5.913 C91.836 +G01 X+19.776 Y-5.904 Z-2.765 B18.195 C90.901 +G01 X+20.019 Y-5.906 Z-2.764 B18.189 C89.917 +G01 X+20.263 Y-5.909 B18.188 C88.933 +G01 X+20.502 Y-5.911 Z-2.765 B18.195 C87.951 +G01 X+20.739 Y-5.925 Z-2.764 B18.189 C86.99 +G01 X+20.976 Y-5.94 B18.188 C86.03 +G01 X+21.226 Y-5.955 Z-2.765 B18.195 C85. +G01 X+21.457 Y-5.981 Z-2.764 B18.189 C84.064 +G01 X+21.687 Y-6.008 B18.188 C83.126 +G01 X+21.948 Y-6.037 Z-2.765 B18.195 C82.05 +G01 X+22.393 Y-6.111 Z-2.764 B18.188 C80.223 +G01 X+22.664 Y-6.156 Z-2.765 B18.194 C79.1 +G01 X+23.094 Y-6.25 Z-2.764 B18.188 C77.32 +G01 X+23.373 Y-6.312 Z-2.765 B18.194 C76.149 +G01 X+23.786 Y-6.425 Z-2.764 B18.188 C74.417 +G01 X+24.073 Y-6.503 Z-2.765 B18.194 C73.199 +G01 X+24.469 Y-6.634 Z-2.764 B18.188 C71.513 +G01 X+24.763 Y-6.731 Z-2.765 B18.194 C70.249 +G01 X+25.14 Y-6.877 Z-2.764 B18.188 C68.61 +G01 X+25.439 Y-6.994 Z-2.765 B18.194 C67.298 +G01 X+25.798 Y-7.155 Z-2.764 B18.188 C65.707 +G01 X+26.102 Y-7.291 Z-2.765 B18.194 C64.348 +G01 X+26.348 Y-7.417 Z-2.764 B18.189 C63.222 +G01 X+26.593 Y-7.543 B18.191 C62.097 +G01 X+26.748 Y-7.622 Z-2.765 B18.194 C61.352 +G01 X+26.982 Y-7.757 Z-2.764 B18.189 C60.273 +G01 X+27.216 Y-7.893 B18.191 C59.193 +G01 X+27.377 Y-7.986 Z-2.765 B18.194 C58.449 +G01 X+27.598 Y-8.13 Z-2.764 B18.189 C57.369 +G01 X+27.82 Y-8.274 B18.19 C56.29 +G01 X+27.985 Y-8.381 Z-2.765 B18.194 C55.504 +G01 X+28.194 Y-8.533 Z-2.764 B18.189 C54.445 +G01 X+28.404 Y-8.685 B18.19 C53.386 +G01 X+28.572 Y-8.808 Z-2.765 B18.194 C52.551 +G01 X+28.855 Y-9.036 Z-2.764 B18.188 C51.075 +G01 X+29.137 Y-9.264 Z-2.765 B18.194 C49.599 +G01 X+29.378 Y-9.479 Z-2.764 B18.188 C48.288 +G01 X+29.678 Y-9.749 Z-2.765 B18.194 C46.646 +G01 X+29.936 Y-10.004 Z-2.764 B18.189 C45.169 +G01 X+30.193 Y-10.26 Z-2.765 B18.194 C43.693 +G01 X+30.351 Y-10.434 Z-2.764 B18.19 C42.733 +G01 X+30.509 Y-10.609 C41.773 +G01 X+30.681 Y-10.798 Z-2.765 B18.194 C40.74 +G01 X+30.826 Y-10.975 Z-2.764 B18.19 C39.805 +G01 X+30.971 Y-11.153 C38.869 +G01 X+31.14 Y-11.36 Z-2.765 B18.194 C37.787 +G01 X+31.405 Y-11.72 Z-2.764 B18.19 C35.966 +G01 X+31.57 Y-11.945 Z-2.765 B18.195 C34.834 +G01 X+31.81 Y-12.309 Z-2.764 B18.189 C33.062 +G01 X+31.969 Y-12.551 Z-2.765 B18.195 C31.881 +G01 X+32.184 Y-12.917 Z-2.764 B18.189 C30.159 +G01 X+32.337 Y-13.177 Z-2.765 B18.195 C28.93 +G01 X+32.527 Y-13.543 Z-2.764 B18.189 C27.256 +G01 X+32.672 Y-13.821 Z-2.765 B18.195 C25.979 +G01 X+32.838 Y-14.186 Z-2.764 B18.189 C24.353 +G01 X+32.973 Y-14.482 Z-2.765 B18.195 C23.029 +G01 X+33.079 Y-14.749 Z-2.764 B18.189 C21.868 +G01 X+33.184 Y-15.016 B18.19 C20.707 +G01 X+33.246 Y-15.174 Z-2.765 B18.194 C20.005 +G01 X+33.333 Y-15.432 Z-2.764 B18.189 C18.905 +G01 X+33.42 Y-15.69 B18.19 C17.804 +G01 X+33.472 Y-15.845 Z-2.765 B18.195 C17.128 +G01 X+33.546 Y-16.11 Z-2.764 B18.189 C16.015 +G01 X+33.62 Y-16.376 C14.901 +G01 X+33.668 Y-16.544 Z-2.765 B18.195 C14.178 +G01 X+33.727 Y-16.807 Z-2.764 B18.189 C13.088 +G01 X+33.786 Y-17.07 C11.997 +G01 X+33.828 Y-17.252 Z-2.765 B18.195 C11.228 +G01 X+33.872 Y-17.512 Z-2.764 B18.189 C10.161 +G01 X+33.917 Y-17.772 C9.094 +G01 X+33.951 Y-17.968 Z-2.765 B18.195 C8.277 +G01 X+33.981 Y-18.224 Z-2.764 B18.189 C7.234 +G01 X+34.012 Y-18.48 C6.191 +G01 X+34.037 Y-18.689 Z-2.765 B18.195 C5.327 +G01 X+34.054 Y-18.94 Z-2.764 B18.189 C4.307 +G01 X+34.071 Y-19.192 C3.288 +G01 X+34.086 Y-19.413 Z-2.765 B18.195 C2.376 +G01 X+34.09 Y-19.659 Z-2.764 B18.189 C1.381 +G01 X+34.093 Y-19.905 C0.384 +G01 X+34.097 Y-20.139 Z-2.765 B18.195 C359.426 +G01 X+34.089 Y-20.379 Z-2.764 B18.189 C358.454 +G01 X+34.08 Y-20.619 B18.188 C357.481 +G01 X+34.071 Y-20.864 Z-2.765 B18.195 C356.476 +G01 X+34.051 Y-21.098 Z-2.764 B18.189 C355.527 +G01 X+34.031 Y-21.332 B18.188 C354.578 +G01 X+34.008 Y-21.588 Z-2.765 B18.195 C353.525 +G01 X+33.977 Y-21.814 Z-2.764 B18.189 C352.6 +G01 X+33.945 Y-22.041 B18.188 C351.675 +G01 X+33.908 Y-22.307 Z-2.765 B18.195 C350.575 +G01 X+33.824 Y-22.744 Z-2.764 B18.188 C348.772 +G01 X+33.771 Y-23.019 Z-2.765 B18.194 C347.625 +G01 X+33.667 Y-23.441 Z-2.764 B18.188 C345.868 +G01 X+33.597 Y-23.724 Z-2.765 B18.194 C344.674 +G01 X+33.475 Y-24.129 Z-2.764 B18.188 C342.965 +G01 X+33.387 Y-24.419 Z-2.765 B18.194 C341.724 +G01 X+33.249 Y-24.806 Z-2.764 B18.188 C340.062 +G01 X+33.142 Y-25.103 Z-2.765 B18.194 C338.773 +G01 X+32.988 Y-25.471 Z-2.764 B18.188 C337.159 +G01 X+32.862 Y-25.772 Z-2.765 B18.194 C335.823 +G01 X+32.694 Y-26.121 Z-2.764 B18.188 C334.255 +G01 X+32.548 Y-26.427 Z-2.765 B18.194 C332.873 +G01 X+32.417 Y-26.667 Z-2.764 B18.189 C331.759 +G01 X+32.286 Y-26.907 B18.191 C330.645 +G01 X+32.2 Y-27.064 Z-2.765 B18.194 C329.922 +G01 X+32.06 Y-27.292 Z-2.764 B18.189 C328.832 +G01 X+31.92 Y-27.52 B18.191 C327.741 +G01 X+31.82 Y-27.683 Z-2.765 B18.194 C326.981 +G01 X+31.672 Y-27.899 Z-2.764 B18.189 C325.91 +G01 X+31.524 Y-28.114 B18.19 C324.838 +G01 X+31.409 Y-28.281 Z-2.765 B18.194 C324.028 +G01 X+31.189 Y-28.57 Z-2.764 B18.188 C322.551 +G01 X+30.968 Y-28.858 Z-2.765 B18.194 C321.075 +G01 X+30.755 Y-29.108 Z-2.764 B18.188 C319.739 +G01 X+30.497 Y-29.411 Z-2.765 B18.194 C318.122 +G01 X+30.248 Y-29.675 Z-2.764 B18.188 C316.646 +G01 X+29.999 Y-29.938 Z-2.765 B18.194 C315.169 +G01 X+29.827 Y-30.103 Z-2.764 B18.19 C314.197 +G01 X+29.654 Y-30.268 C313.224 +G01 X+29.474 Y-30.44 Z-2.765 B18.194 C312.216 +G01 X+29.298 Y-30.592 Z-2.764 B18.19 C311.269 +G01 X+29.122 Y-30.743 C310.321 +G01 X+28.924 Y-30.914 Z-2.765 B18.194 C309.263 +G01 X+28.745 Y-31.053 Z-2.764 B18.19 C308.341 +G01 X+28.566 Y-31.192 C307.418 +G01 X+28.35 Y-31.359 Z-2.765 B18.195 C306.31 +G01 X+27.988 Y-31.611 Z-2.764 B18.189 C304.514 +G01 X+27.754 Y-31.774 Z-2.765 B18.195 C303.358 +G01 X+27.39 Y-32.001 Z-2.764 B18.189 C301.611 +G01 X+27.138 Y-32.157 Z-2.765 B18.195 C300.405 +G01 X+26.772 Y-32.36 Z-2.764 B18.189 C298.708 +G01 X+26.503 Y-32.508 Z-2.765 B18.195 C297.454 +G01 X+26.138 Y-32.687 Z-2.764 B18.189 C295.804 +G01 X+25.85 Y-32.827 Z-2.765 B18.195 C294.504 +G01 X+25.583 Y-32.94 Z-2.764 B18.189 C293.332 +G01 X+25.316 Y-33.054 B18.19 C292.159 +G01 X+25.182 Y-33.111 Z-2.765 B18.195 C291.554 +G01 X+24.915 Y-33.209 Z-2.764 B18.189 C290.405 +G01 X+24.648 Y-33.306 B18.19 C289.255 +G01 X+24.5 Y-33.36 Z-2.765 B18.195 C288.604 +G01 X+24.234 Y-33.443 Z-2.764 B18.189 C287.478 +G01 X+23.968 Y-33.524 B18.19 C286.352 +G01 X+23.806 Y-33.574 Z-2.765 B18.195 C285.651 +G01 X+23.542 Y-33.641 Z-2.764 B18.189 C284.55 +G01 X+23.278 Y-33.708 C283.449 +G01 X+23.103 Y-33.752 Z-2.765 B18.195 C282.703 +G01 X+22.841 Y-33.804 Z-2.764 B18.189 C281.624 +G01 X+22.58 Y-33.856 C280.546 +G01 X+22.391 Y-33.894 Z-2.765 B18.195 C279.752 +G01 X+22.133 Y-33.931 Z-2.764 B18.189 C278.698 +G01 X+21.874 Y-33.969 C277.642 +G01 X+21.672 Y-33.998 Z-2.765 B18.195 C276.802 +G01 X+21.418 Y-34.022 Z-2.764 B18.189 C275.771 +G01 X+21.164 Y-34.046 C274.739 +G01 X+20.95 Y-34.066 Z-2.765 B18.195 C273.852 +G01 X+20.701 Y-34.076 Z-2.764 B18.189 C272.844 +G01 X+20.452 Y-34.087 C271.836 +G01 X+20.224 Y-34.096 Z-2.765 B18.195 C270.901 +G01 X+19.981 Y-34.094 Z-2.764 B18.189 C269.917 +G01 X+19.737 Y-34.091 B18.188 C268.933 +G01 X+19.498 Y-34.089 Z-2.765 B18.195 C267.951 +G01 X+19.261 Y-34.074 Z-2.764 B18.189 C266.99 +G01 X+19.024 Y-34.06 B18.188 C266.03 +G01 X+18.774 Y-34.044 Z-2.765 B18.195 C265. +G01 X+18.543 Y-34.018 Z-2.764 B18.189 C264.064 +G01 X+18.313 Y-33.992 B18.188 C263.126 +G01 X+18.052 Y-33.963 Z-2.765 B18.195 C262.05 +G01 X+17.607 Y-33.889 Z-2.764 B18.188 C260.223 +G01 X+17.336 Y-33.844 Z-2.765 B18.194 C259.1 +G01 X+16.906 Y-33.75 Z-2.764 B18.188 C257.32 +G01 X+16.627 Y-33.688 Z-2.765 B18.194 C256.149 +G01 X+16.214 Y-33.575 Z-2.764 B18.188 C254.417 +G01 X+15.927 Y-33.497 Z-2.765 B18.194 C253.199 +G01 X+15.531 Y-33.366 Z-2.764 B18.188 C251.513 +G01 X+15.237 Y-33.269 Z-2.765 B18.194 C250.249 +G01 X+14.86 Y-33.122 Z-2.764 B18.188 C248.61 +G01 X+14.561 Y-33.006 Z-2.765 B18.194 C247.298 +G01 X+14.202 Y-32.845 Z-2.764 B18.188 C245.707 +G01 X+13.898 Y-32.709 Z-2.765 B18.194 C244.348 +G01 X+13.652 Y-32.583 Z-2.764 B18.189 C243.222 +G01 X+13.407 Y-32.457 B18.191 C242.097 +G01 X+13.235 Y-32.369 Z-2.765 B18.194 C241.352 +G01 X+13.009 Y-32.238 Z-2.764 B18.189 C240.273 +G01 X+12.784 Y-32.107 B18.191 C239.194 +G01 X+12.623 Y-32.014 Z-2.765 B18.194 C238.449 +G01 X+12.402 Y-31.87 Z-2.764 B18.189 C237.369 +G01 X+12.18 Y-31.726 B18.19 C236.29 +G01 X+12.015 Y-31.618 Z-2.765 B18.194 C235.504 +G01 X+11.806 Y-31.467 Z-2.764 B18.189 C234.445 +G01 X+11.596 Y-31.315 B18.19 C233.386 +G01 X+11.428 Y-31.192 Z-2.765 B18.194 C232.551 +G01 X+11.145 Y-30.964 Z-2.764 B18.188 C231.075 +G01 X+10.863 Y-30.736 Z-2.765 B18.194 C229.599 +G01 X+10.622 Y-30.52 Z-2.764 B18.188 C228.288 +G01 X+10.322 Y-30.251 Z-2.765 B18.194 C226.646 +G01 X+10.064 Y-29.996 Z-2.764 B18.189 C225.169 +G01 X+9.807 Y-29.74 Z-2.765 B18.194 C223.693 +G01 X+9.553 Y-29.459 Z-2.764 B18.189 C222.15 +G01 X+9.5 Y-29.39 Z-2.761 B18.179 C221.793 +G01 X+9.46 Y-29.312 Z-2.754 B18.149 C221.453 +G01 X+9.435 Y-29.229 Z-2.743 B18.101 C221.133 +G01 X+9.362 Y-28.892 Z-2.689 B17.884 C219.877 +G01 X+9.339 Y-28.817 Z-2.679 B17.842 C219.586 +G01 X+9.305 Y-28.746 Z-2.673 B17.818 C219.273 +G01 X+9.26 Y-28.681 Z-2.671 B17.811 C218.941 +G01 X+9.087 Y-28.47 Z-2.673 B17.815 C217.817 +G01 X+8.924 Y-28.248 Z-2.671 B17.809 C216.675 +G01 X+8.666 Y-27.897 Z-2.673 B17.815 C214.865 +G01 X+8.52 Y-27.677 Z-2.671 B17.809 C213.772 +G01 X+8.274 Y-27.303 Z-2.673 B17.815 C211.913 +G01 X+8.146 Y-27.085 Z-2.671 B17.809 C210.868 +G01 X+8.03 Y-26.888 Z-2.672 B17.81 C209.915 +G01 X+7.914 Y-26.69 Z-2.673 B17.815 C208.961 +G01 X+7.777 Y-26.428 Z-2.672 B17.81 C207.737 +G01 X+7.641 Y-26.166 B17.811 C206.513 +G01 X+7.585 Y-26.059 Z-2.673 B17.816 C206.009 +G01 X+7.465 Y-25.795 Z-2.672 B17.81 C204.81 +G01 X+7.345 Y-25.532 B17.811 C203.61 +G01 X+7.29 Y-25.412 Z-2.673 B17.816 C203.057 +G01 X+7.185 Y-25.148 Z-2.672 B17.81 C201.882 +G01 X+7.081 Y-24.883 B17.811 C200.707 +G01 X+7.028 Y-24.75 Z-2.673 B17.816 C200.105 +G01 X+6.939 Y-24.487 Z-2.672 B17.81 C198.955 +G01 X+6.85 Y-24.223 B17.811 C197.804 +G01 X+6.801 Y-24.076 Z-2.673 B17.816 C197.153 +G01 X+6.727 Y-23.814 Z-2.672 B17.81 C196.027 +G01 X+6.653 Y-23.551 C194.901 +G01 X+6.608 Y-23.392 Z-2.673 B17.816 C194.201 +G01 X+6.549 Y-23.131 Z-2.672 B17.81 C193.1 +G01 X+6.491 Y-22.871 C191.997 +G01 X+6.452 Y-22.698 Z-2.673 B17.816 C191.25 +G01 X+6.407 Y-22.44 Z-2.672 B17.81 C190.172 +G01 X+6.363 Y-22.183 C189.094 +G01 X+6.331 Y-21.997 Z-2.673 B17.816 C188.298 +G01 X+6.3 Y-21.743 Z-2.672 B17.81 C187.245 +G01 X+6.27 Y-21.489 C186.191 +G01 X+6.246 Y-21.29 Z-2.673 B17.816 C185.346 +G01 X+6.229 Y-21.041 Z-2.672 B17.81 C184.317 +G01 X+6.212 Y-20.792 C183.288 +G01 X+6.198 Y-20.581 Z-2.673 B17.816 C182.394 +G01 X+6.194 Y-20.337 Z-2.672 B17.81 C181.389 +G01 X+6.19 Y-20.093 B17.809 C180.384 +G01 X+6.186 Y-19.869 Z-2.673 B17.816 C179.442 +G01 X+6.195 Y-19.631 Z-2.672 B17.81 C178.462 +G01 X+6.203 Y-19.393 B17.809 C177.481 +G01 X+6.211 Y-19.158 Z-2.673 B17.815 C176.49 +G01 X+6.231 Y-18.927 Z-2.672 B17.81 C175.534 +G01 X+6.252 Y-18.695 Z-2.671 B17.809 C174.578 +G01 X+6.273 Y-18.45 Z-2.673 B17.815 C173.539 +G01 X+6.335 Y-18 Z-2.671 B17.809 C171.675 +G01 X+6.371 Y-17.745 Z-2.673 B17.815 C170.589 +G01 X+6.454 Y-17.311 Z-2.671 B17.809 C168.771 +G01 X+6.505 Y-17.046 Z-2.673 B17.815 C167.64 +G01 X+6.608 Y-16.628 Z-2.671 B17.809 C165.868 +G01 X+6.675 Y-16.356 Z-2.673 B17.815 C164.691 +G01 X+6.796 Y-15.954 Z-2.671 B17.809 C162.965 +G01 X+6.88 Y-15.674 Z-2.673 B17.815 C161.741 +G01 X+7.018 Y-15.291 Z-2.671 B17.809 C160.062 +G01 X+7.12 Y-15.005 Z-2.673 B17.815 C158.792 +G01 X+7.273 Y-14.639 Z-2.671 B17.809 C157.159 +G01 X+7.395 Y-14.348 Z-2.673 B17.815 C155.842 +G01 X+7.561 Y-14.002 Z-2.671 B17.809 C154.255 +G01 X+7.702 Y-13.707 Z-2.673 B17.815 C152.893 +G01 X+7.881 Y-13.379 Z-2.671 B17.809 C151.352 +G01 X+8.043 Y-13.082 Z-2.673 B17.814 C149.944 +G01 X+8.232 Y-12.774 Z-2.671 B17.809 C148.449 +G01 X+8.415 Y-12.476 Z-2.673 B17.814 C146.997 +G01 X+8.595 Y-12.213 Z-2.672 B17.809 C145.669 +G01 X+8.776 Y-11.95 B17.813 C144.34 +G01 X+8.817 Y-11.889 Z-2.673 B17.815 C144.052 +G01 X+9.033 Y-11.607 Z-2.672 B17.809 C142.576 +G01 X+9.25 Y-11.325 Z-2.673 B17.815 C141.1 +G01 X+9.462 Y-11.075 Z-2.671 B17.809 C139.739 +G01 X+9.71 Y-10.783 Z-2.673 B17.815 C138.148 +G01 X+9.927 Y-10.553 Z-2.671 B17.809 C136.836 +G01 X+10.199 Y-10.265 Z-2.673 B17.815 C135.196 +G01 X+10.419 Y-10.055 Z-2.671 B17.809 C133.933 +G01 X+10.713 Y-9.773 Z-2.673 B17.815 C132.245 +G01 X+10.935 Y-9.582 Z-2.671 B17.809 C131.03 +G01 X+11.251 Y-9.309 Z-2.673 B17.815 C129.293 +G01 X+11.474 Y-9.136 Z-2.671 B17.809 C128.126 +G01 X+11.813 Y-8.873 Z-2.673 B17.815 C126.341 +G01 X+12.035 Y-8.718 Z-2.671 B17.809 C125.223 +G01 X+12.397 Y-8.466 Z-2.673 B17.815 C123.389 +G01 X+12.617 Y-8.329 Z-2.671 B17.809 C122.32 +G01 X+12.809 Y-8.21 Z-2.672 B17.81 C121.378 +G01 X+13.001 Y-8.09 Z-2.673 B17.815 C120.437 +G01 X+13.262 Y-7.945 Z-2.672 B17.81 C119.201 +G01 X+13.523 Y-7.801 B17.811 C117.965 +G01 X+13.623 Y-7.745 Z-2.673 B17.816 C117.485 +G01 X+13.886 Y-7.617 Z-2.672 B17.81 C116.274 +G01 X+14.149 Y-7.489 B17.811 C115.062 +G01 X+14.263 Y-7.433 Z-2.673 B17.816 C114.533 +G01 X+14.527 Y-7.321 Z-2.672 B17.81 C113.346 +G01 X+14.791 Y-7.209 B17.811 C112.159 +G01 X+14.917 Y-7.155 Z-2.673 B17.816 C111.581 +G01 X+15.181 Y-7.058 Z-2.672 B17.81 C110.418 +G01 X+15.445 Y-6.961 B17.811 C109.255 +G01 X+15.585 Y-6.91 Z-2.673 B17.816 C108.629 +G01 X+15.848 Y-6.829 Z-2.672 B17.81 C107.491 +G01 X+16.112 Y-6.747 C106.352 +G01 X+16.265 Y-6.7 Z-2.673 B17.816 C105.678 +G01 X+16.526 Y-6.634 Z-2.672 B17.81 C104.563 +G01 X+16.788 Y-6.568 C103.449 +G01 X+16.954 Y-6.525 Z-2.673 B17.816 C102.726 +G01 X+17.213 Y-6.474 Z-2.672 B17.81 C101.636 +G01 X+17.472 Y-6.422 C100.546 +G01 X+17.652 Y-6.387 Z-2.673 B17.816 C99.774 +G01 X+17.908 Y-6.349 Z-2.672 B17.81 C98.708 +G01 X+18.163 Y-6.312 C97.642 +G01 X+18.356 Y-6.284 Z-2.673 B17.816 C96.822 +G01 X+18.607 Y-6.26 Z-2.672 B17.81 C95.781 +G01 X+18.859 Y-6.237 C94.739 +G01 X+19.064 Y-6.217 Z-2.673 B17.816 C93.87 +G01 X+19.311 Y-6.207 Z-2.672 B17.81 C92.853 +G01 X+19.558 Y-6.197 C91.836 +G01 X+19.775 Y-6.187 Z-2.673 B17.816 C90.918 +G01 X+20.016 Y-6.19 Z-2.672 B17.81 C89.926 +G01 X+20.257 Y-6.192 B17.809 C88.933 +G01 X+20.486 Y-6.194 Z-2.673 B17.815 C87.966 +G01 X+20.721 Y-6.208 Z-2.672 B17.81 C86.998 +G01 X+20.956 Y-6.223 B17.809 C86.03 +G01 X+21.196 Y-6.237 Z-2.673 B17.815 C85.014 +G01 X+21.425 Y-6.263 Z-2.672 B17.81 C84.071 +G01 X+21.653 Y-6.289 Z-2.671 B17.809 C83.126 +G01 X+21.903 Y-6.317 Z-2.673 B17.815 C82.064 +G01 X+22.345 Y-6.39 Z-2.671 B17.809 C80.223 +G01 X+22.605 Y-6.433 Z-2.673 B17.815 C79.115 +G01 X+23.031 Y-6.527 Z-2.671 B17.809 C77.32 +G01 X+23.3 Y-6.586 Z-2.673 B17.815 C76.165 +G01 X+23.71 Y-6.698 Z-2.671 B17.809 C74.417 +G01 X+23.987 Y-6.773 Z-2.673 B17.815 C73.214 +G01 X+24.379 Y-6.903 Z-2.671 B17.809 C71.513 +G01 X+24.662 Y-6.996 Z-2.673 B17.815 C70.267 +G01 X+25.037 Y-7.141 Z-2.671 B17.809 C68.61 +G01 X+25.325 Y-7.253 Z-2.673 B17.815 C67.317 +G01 X+25.681 Y-7.413 Z-2.671 B17.809 C65.707 +G01 X+25.974 Y-7.544 Z-2.673 B17.815 C64.368 +G01 X+26.312 Y-7.717 Z-2.671 B17.809 C62.804 +G01 X+26.623 Y-7.877 Z-2.673 B17.814 C61.352 +G01 X+26.923 Y-8.051 Z-2.671 B17.809 C59.911 +G01 X+27.223 Y-8.225 Z-2.673 B17.815 C58.469 +G01 X+27.522 Y-8.418 Z-2.672 B17.809 C56.998 +G01 X+27.82 Y-8.612 Z-2.673 B17.815 C55.528 +G01 X+28.108 Y-8.82 Z-2.672 B17.809 C54.052 +G01 X+28.396 Y-9.03 Z-2.673 B17.815 C52.576 +G01 X+28.655 Y-9.239 Z-2.671 B17.809 C51.191 +G01 X+28.949 Y-9.476 Z-2.673 B17.815 C49.624 +G01 X+29.189 Y-9.691 Z-2.671 B17.809 C48.288 +G01 X+29.479 Y-9.951 Z-2.673 B17.815 C46.672 +G01 X+29.699 Y-10.17 Z-2.671 B17.809 C45.384 +G01 X+29.984 Y-10.452 Z-2.673 B17.815 C43.72 +G01 X+30.185 Y-10.673 Z-2.671 B17.809 C42.481 +G01 X+30.462 Y-10.979 Z-2.673 B17.815 C40.769 +G01 X+30.644 Y-11.201 Z-2.671 B17.809 C39.578 +G01 X+30.913 Y-11.529 Z-2.673 B17.815 C37.817 +G01 X+31.076 Y-11.752 Z-2.671 B17.809 C36.675 +G01 X+31.334 Y-12.102 Z-2.673 B17.815 C34.865 +G01 X+31.48 Y-12.323 Z-2.671 B17.809 C33.772 +G01 X+31.726 Y-12.696 Z-2.673 B17.815 C31.913 +G01 X+31.854 Y-12.914 Z-2.671 B17.809 C30.868 +G01 X+31.97 Y-13.112 Z-2.672 B17.81 C29.915 +G01 X+32.086 Y-13.31 Z-2.673 B17.815 C28.961 +G01 X+32.223 Y-13.572 Z-2.672 B17.81 C27.737 +G01 X+32.359 Y-13.834 B17.811 C26.513 +G01 X+32.415 Y-13.941 Z-2.673 B17.816 C26.009 +G01 X+32.535 Y-14.204 Z-2.672 B17.81 C24.81 +G01 X+32.655 Y-14.468 B17.811 C23.61 +G01 X+32.71 Y-14.588 Z-2.673 B17.816 C23.057 +G01 X+32.815 Y-14.852 Z-2.672 B17.81 C21.882 +G01 X+32.919 Y-15.116 B17.811 C20.707 +G01 X+32.972 Y-15.249 Z-2.673 B17.816 C20.105 +G01 X+33.061 Y-15.513 Z-2.672 B17.81 C18.955 +G01 X+33.15 Y-15.777 B17.811 C17.804 +G01 X+33.199 Y-15.923 Z-2.673 B17.816 C17.154 +G01 X+33.273 Y-16.186 Z-2.672 B17.81 C16.027 +G01 X+33.347 Y-16.449 C14.901 +G01 X+33.392 Y-16.608 Z-2.673 B17.816 C14.202 +G01 X+33.451 Y-16.869 Z-2.672 B17.81 C13.1 +G01 X+33.509 Y-17.129 C11.997 +G01 X+33.548 Y-17.302 Z-2.673 B17.816 C11.25 +G01 X+33.593 Y-17.56 Z-2.672 B17.81 C10.172 +G01 X+33.637 Y-17.817 C9.094 +G01 X+33.669 Y-18.003 Z-2.673 B17.816 C8.298 +G01 X+33.7 Y-18.257 Z-2.672 B17.81 C7.245 +G01 X+33.73 Y-18.511 C6.191 +G01 X+33.754 Y-18.71 Z-2.673 B17.816 C5.346 +G01 X+33.771 Y-18.959 Z-2.672 B17.81 C4.317 +G01 X+33.788 Y-19.208 C3.288 +G01 X+33.802 Y-19.419 Z-2.673 B17.816 C2.394 +G01 X+33.806 Y-19.663 Z-2.672 B17.81 C1.389 +G01 X+33.81 Y-19.907 B17.809 C0.384 +G01 X+33.814 Y-20.131 Z-2.673 B17.816 C359.442 +G01 X+33.806 Y-20.369 Z-2.672 B17.81 C358.462 +G01 X+33.797 Y-20.607 B17.809 C357.481 +G01 X+33.789 Y-20.842 Z-2.673 B17.815 C356.49 +G01 X+33.769 Y-21.073 Z-2.672 B17.81 C355.534 +G01 X+33.748 Y-21.305 Z-2.671 B17.809 C354.578 +G01 X+33.727 Y-21.55 Z-2.673 B17.815 C353.539 +G01 X+33.665 Y-22 Z-2.671 B17.809 C351.675 +G01 X+33.629 Y-22.255 Z-2.673 B17.815 C350.589 +G01 X+33.546 Y-22.689 Z-2.671 B17.809 C348.771 +G01 X+33.495 Y-22.953 Z-2.673 B17.815 C347.64 +G01 X+33.392 Y-23.372 Z-2.671 B17.809 C345.868 +G01 X+33.325 Y-23.644 Z-2.673 B17.815 C344.691 +G01 X+33.204 Y-24.046 Z-2.671 B17.809 C342.965 +G01 X+33.12 Y-24.325 Z-2.673 B17.815 C341.741 +G01 X+32.982 Y-24.709 Z-2.671 B17.809 C340.062 +G01 X+32.88 Y-24.995 Z-2.673 B17.815 C338.792 +G01 X+32.727 Y-25.361 Z-2.671 B17.809 C337.159 +G01 X+32.605 Y-25.651 Z-2.673 B17.815 C335.842 +G01 X+32.439 Y-25.998 Z-2.671 B17.809 C334.255 +G01 X+32.298 Y-26.293 Z-2.673 B17.815 C332.893 +G01 X+32.119 Y-26.621 Z-2.671 B17.809 C331.352 +G01 X+31.957 Y-26.918 Z-2.673 B17.814 C329.944 +G01 X+31.768 Y-27.226 Z-2.671 B17.809 C328.449 +G01 X+31.585 Y-27.524 Z-2.673 B17.814 C326.997 +G01 X+31.405 Y-27.787 Z-2.672 B17.809 C325.669 +G01 X+31.224 Y-28.05 B17.813 C324.34 +G01 X+31.183 Y-28.11 Z-2.673 B17.815 C324.052 +G01 X+30.967 Y-28.393 Z-2.672 B17.809 C322.576 +G01 X+30.75 Y-28.675 Z-2.673 B17.815 C321.1 +G01 X+30.538 Y-28.925 Z-2.671 B17.809 C319.739 +G01 X+30.29 Y-29.217 Z-2.673 B17.815 C318.148 +G01 X+30.073 Y-29.447 Z-2.671 B17.809 C316.836 +G01 X+29.801 Y-29.735 Z-2.673 B17.815 C315.196 +G01 X+29.581 Y-29.945 Z-2.671 B17.809 C313.933 +G01 X+29.287 Y-30.226 Z-2.673 B17.815 C312.245 +G01 X+29.065 Y-30.418 Z-2.671 B17.809 C311.03 +G01 X+28.749 Y-30.691 Z-2.673 B17.815 C309.293 +G01 X+28.526 Y-30.864 Z-2.671 B17.809 C308.126 +G01 X+28.187 Y-31.127 Z-2.673 B17.815 C306.341 +G01 X+27.965 Y-31.281 Z-2.671 B17.809 C305.223 +G01 X+27.603 Y-31.534 Z-2.673 B17.815 C303.389 +G01 X+27.383 Y-31.67 Z-2.671 B17.809 C302.32 +G01 X+27.191 Y-31.79 Z-2.672 B17.81 C301.378 +G01 X+26.999 Y-31.91 Z-2.673 B17.815 C300.437 +G01 X+26.738 Y-32.055 Z-2.672 B17.81 C299.201 +G01 X+26.477 Y-32.199 B17.811 C297.965 +G01 X+26.377 Y-32.254 Z-2.673 B17.816 C297.485 +G01 X+26.114 Y-32.383 Z-2.672 B17.81 C296.274 +G01 X+25.851 Y-32.511 B17.811 C295.062 +G01 X+25.737 Y-32.566 Z-2.673 B17.816 C294.533 +G01 X+25.473 Y-32.679 Z-2.672 B17.81 C293.346 +G01 X+25.209 Y-32.791 B17.811 C292.159 +G01 X+25.083 Y-32.845 Z-2.673 B17.816 C291.581 +G01 X+24.819 Y-32.942 Z-2.672 B17.81 C290.418 +G01 X+24.555 Y-33.039 B17.811 C289.255 +G01 X+24.415 Y-33.09 Z-2.673 B17.816 C288.629 +G01 X+24.152 Y-33.171 Z-2.672 B17.81 C287.491 +G01 X+23.888 Y-33.252 C286.352 +G01 X+23.735 Y-33.3 Z-2.673 B17.816 C285.678 +G01 X+23.474 Y-33.366 Z-2.672 B17.81 C284.563 +G01 X+23.212 Y-33.432 C283.449 +G01 X+23.046 Y-33.474 Z-2.673 B17.816 C282.726 +G01 X+22.787 Y-33.526 Z-2.672 B17.81 C281.636 +G01 X+22.528 Y-33.577 C280.546 +G01 X+22.348 Y-33.613 Z-2.673 B17.816 C279.774 +G01 X+22.092 Y-33.651 Z-2.672 B17.81 C278.708 +G01 X+21.837 Y-33.688 C277.642 +G01 X+21.644 Y-33.716 Z-2.673 B17.816 C276.822 +G01 X+21.393 Y-33.74 Z-2.672 B17.81 C275.781 +G01 X+21.141 Y-33.763 C274.739 +G01 X+20.936 Y-33.783 Z-2.673 B17.816 C273.87 +G01 X+20.689 Y-33.793 Z-2.672 B17.81 C272.853 +G01 X+20.442 Y-33.803 C271.836 +G01 X+20.225 Y-33.812 Z-2.673 B17.816 C270.918 +G01 X+19.984 Y-33.81 Z-2.672 B17.81 C269.926 +G01 X+19.743 Y-33.808 B17.809 C268.933 +G01 X+19.514 Y-33.806 Z-2.673 B17.815 C267.966 +G01 X+19.279 Y-33.792 Z-2.672 B17.81 C266.998 +G01 X+19.044 Y-33.777 B17.809 C266.03 +G01 X+18.804 Y-33.762 Z-2.673 B17.815 C265.014 +G01 X+18.575 Y-33.737 Z-2.672 B17.81 C264.071 +G01 X+18.347 Y-33.711 Z-2.671 B17.809 C263.126 +G01 X+18.097 Y-33.683 Z-2.673 B17.815 C262.064 +G01 X+17.655 Y-33.609 Z-2.671 B17.809 C260.223 +G01 X+17.395 Y-33.566 Z-2.673 B17.815 C259.115 +G01 X+16.969 Y-33.473 Z-2.671 B17.809 C257.32 +G01 X+16.7 Y-33.414 Z-2.673 B17.815 C256.165 +G01 X+16.29 Y-33.302 Z-2.671 B17.809 C254.417 +G01 X+16.013 Y-33.226 Z-2.673 B17.815 C253.214 +G01 X+15.621 Y-33.097 Z-2.671 B17.809 C251.513 +G01 X+15.338 Y-33.004 Z-2.673 B17.815 C250.267 +G01 X+14.963 Y-32.859 Z-2.671 B17.809 C248.61 +G01 X+14.675 Y-32.747 Z-2.673 B17.815 C247.317 +G01 X+14.319 Y-32.587 Z-2.671 B17.809 C245.707 +G01 X+14.026 Y-32.456 Z-2.673 B17.815 C244.368 +G01 X+13.688 Y-32.283 Z-2.671 B17.809 C242.804 +G01 X+13.371 Y-32.12 Z-2.673 B17.815 C241.352 +G01 X+13.073 Y-31.948 Z-2.672 B17.809 C239.911 +G01 X+12.777 Y-31.775 Z-2.673 B17.815 C238.469 +G01 X+12.478 Y-31.582 Z-2.672 B17.809 C236.999 +G01 X+12.18 Y-31.388 Z-2.673 B17.815 C235.528 +G01 X+11.892 Y-31.179 Z-2.672 B17.809 C234.052 +G01 X+11.604 Y-30.97 Z-2.673 B17.815 C232.576 +G01 X+11.345 Y-30.761 Z-2.671 B17.809 C231.191 +G01 X+11.051 Y-30.523 Z-2.673 B17.815 C229.624 +G01 X+10.811 Y-30.309 Z-2.671 B17.809 C228.288 +G01 X+10.521 Y-30.049 Z-2.673 B17.815 C226.672 +G01 X+10.301 Y-29.83 Z-2.671 B17.809 C225.384 +G01 X+10.016 Y-29.548 Z-2.673 B17.815 C223.72 +G01 X+9.763 Y-29.269 Z-2.671 B17.81 C222.157 +G01 X+9.71 Y-29.2 Z-2.669 B17.799 C221.789 +G01 X+9.67 Y-29.122 Z-2.662 B17.77 C221.433 +G01 X+9.645 Y-29.039 Z-2.651 B17.722 C221.109 +G01 X+9.571 Y-28.701 Z-2.599 B17.512 C219.836 +G01 X+9.549 Y-28.626 Z-2.589 B17.47 C219.535 +G01 X+9.514 Y-28.555 Z-2.583 B17.446 C219.207 +G01 X+9.469 Y-28.49 Z-2.581 B17.439 C218.874 +G01 X+9.314 Y-28.301 Z-2.582 B17.444 C217.838 +G01 X+9.131 Y-28.052 Z-2.581 B17.438 C216.531 +G01 X+8.948 Y-27.803 Z-2.582 B17.441 C215.223 +G01 X+8.901 Y-27.74 B17.444 C214.887 +G01 X+8.719 Y-27.464 Z-2.581 B17.438 C213.488 +G01 X+8.537 Y-27.188 Z-2.582 B17.443 C212.089 +G01 X+8.518 Y-27.158 B17.444 C211.937 +G01 X+8.352 Y-26.878 Z-2.581 B17.438 C210.561 +G01 X+8.188 Y-26.598 Z-2.582 B17.442 C209.185 +G01 X+8.164 Y-26.558 B17.444 C208.986 +G01 X+8.016 Y-26.275 Z-2.581 B17.438 C207.634 +G01 X+7.869 Y-25.991 Z-2.582 B17.442 C206.281 +G01 X+7.842 Y-25.94 B17.444 C206.035 +G01 X+7.712 Y-25.654 Z-2.581 B17.438 C204.706 +G01 X+7.581 Y-25.369 Z-2.582 B17.442 C203.378 +G01 X+7.553 Y-25.306 B17.444 C203.084 +G01 X+7.439 Y-25.02 Z-2.581 B17.438 C201.779 +G01 X+7.326 Y-24.733 Z-2.582 B17.441 C200.474 +G01 X+7.296 Y-24.658 B17.444 C200.133 +G01 X+7.199 Y-24.372 Z-2.581 B17.438 C198.852 +G01 X+7.102 Y-24.085 Z-2.582 B17.441 C197.57 +G01 X+7.073 Y-23.998 B17.444 C197.182 +G01 X+6.992 Y-23.712 Z-2.581 B17.438 C195.925 +G01 X+6.912 Y-23.426 Z-2.582 B17.441 C194.667 +G01 X+6.884 Y-23.327 B17.444 C194.231 +G01 X+6.82 Y-23.043 Z-2.581 B17.438 C192.997 +G01 X+6.756 Y-22.759 Z-2.582 B17.44 C191.763 +G01 X+6.731 Y-22.648 B17.444 C191.28 +G01 X+6.682 Y-22.366 Z-2.581 B17.438 C190.07 +G01 X+6.633 Y-22.084 Z-2.582 B17.44 C188.86 +G01 X+6.612 Y-21.961 B17.444 C188.33 +G01 X+6.578 Y-21.683 Z-2.581 B17.438 C187.143 +G01 X+6.545 Y-21.404 Z-2.582 B17.44 C185.956 +G01 X+6.529 Y-21.269 B17.444 C185.379 +G01 X+6.51 Y-20.995 Z-2.581 B17.438 C184.216 +G01 X+6.491 Y-20.721 Z-2.582 B17.44 C183.053 +G01 X+6.481 Y-20.574 B17.444 C182.428 +G01 X+6.476 Y-20.305 Z-2.581 B17.438 C181.289 +G01 X+6.472 Y-20.036 Z-2.582 B17.44 C180.149 +G01 X+6.47 Y-19.877 B17.444 C179.477 +G01 X+6.478 Y-19.614 Z-2.581 B17.438 C178.362 +G01 X+6.488 Y-19.351 B17.439 C177.246 +G01 X+6.494 Y-19.181 Z-2.582 B17.444 C176.526 +G01 X+6.516 Y-18.924 Z-2.581 B17.439 C175.434 +G01 X+6.538 Y-18.667 C174.342 +G01 X+6.554 Y-18.487 Z-2.582 B17.444 C173.575 +G01 X+6.588 Y-18.237 Z-2.581 B17.439 C172.507 +G01 X+6.623 Y-17.987 C171.439 +G01 X+6.65 Y-17.797 Z-2.582 B17.444 C170.624 +G01 X+6.696 Y-17.554 Z-2.581 B17.439 C169.58 +G01 X+6.742 Y-17.312 C168.535 +G01 X+6.781 Y-17.112 Z-2.582 B17.444 C167.673 +G01 X+6.838 Y-16.878 Z-2.581 B17.438 C166.653 +G01 X+6.896 Y-16.644 B17.439 C165.632 +G01 X+6.947 Y-16.436 Z-2.582 B17.443 C164.723 +G01 X+7.015 Y-16.21 Z-2.581 B17.439 C163.726 +G01 X+7.083 Y-15.984 B17.438 C162.728 +G01 X+7.148 Y-15.768 Z-2.582 B17.443 C161.772 +G01 X+7.225 Y-15.552 Z-2.581 B17.439 C160.798 +G01 X+7.303 Y-15.335 B17.438 C159.825 +G01 X+7.383 Y-15.112 Z-2.582 B17.443 C158.821 +G01 X+7.555 Y-14.698 Z-2.581 B17.438 C156.922 +G01 X+7.651 Y-14.469 Z-2.582 B17.443 C155.87 +G01 X+7.84 Y-14.075 Z-2.581 B17.438 C154.018 +G01 X+7.952 Y-13.841 Z-2.582 B17.443 C152.919 +G01 X+8.156 Y-13.466 Z-2.581 B17.438 C151.115 +G01 X+8.285 Y-13.229 Z-2.582 B17.443 C149.968 +G01 X+8.502 Y-12.875 Z-2.581 B17.438 C148.212 +G01 X+8.649 Y-12.635 Z-2.582 B17.443 C147.017 +G01 X+8.878 Y-12.302 Z-2.581 B17.438 C145.308 +G01 X+9.043 Y-12.06 Z-2.582 B17.443 C144.074 +G01 X+9.282 Y-11.748 Z-2.581 B17.438 C142.405 +G01 X+9.467 Y-11.507 Z-2.582 B17.443 C141.12 +G01 X+9.714 Y-11.216 Z-2.581 B17.438 C139.502 +G01 X+9.918 Y-10.976 Z-2.582 B17.443 C138.167 +G01 X+10.172 Y-10.706 Z-2.581 B17.438 C136.598 +G01 X+10.406 Y-10.459 Z-2.582 B17.443 C135.154 +G01 X+10.652 Y-10.222 Z-2.581 B17.438 C133.709 +G01 X+10.899 Y-9.987 Z-2.582 B17.443 C132.265 +G01 X+11.163 Y-9.759 Z-2.581 B17.438 C130.789 +G01 X+11.427 Y-9.532 Z-2.582 B17.444 C129.314 +G01 X+11.673 Y-9.34 Z-2.581 B17.438 C127.994 +G01 X+11.919 Y-9.149 Z-2.582 B17.441 C126.675 +G01 X+11.977 Y-9.104 B17.444 C126.363 +G01 X+12.228 Y-8.929 Z-2.581 B17.438 C125.067 +G01 X+12.479 Y-8.754 Z-2.582 B17.441 C123.772 +G01 X+12.548 Y-8.706 B17.444 C123.412 +G01 X+12.826 Y-8.532 Z-2.581 B17.438 C122.024 +G01 X+13.105 Y-8.359 Z-2.582 B17.442 C120.637 +G01 X+13.14 Y-8.337 B17.444 C120.461 +G01 X+13.421 Y-8.181 Z-2.581 B17.438 C119.097 +G01 X+13.703 Y-8.025 Z-2.582 B17.442 C117.733 +G01 X+13.749 Y-7.999 B17.444 C117.51 +G01 X+14.033 Y-7.86 Z-2.581 B17.438 C116.17 +G01 X+14.318 Y-7.721 Z-2.582 B17.442 C114.829 +G01 X+14.375 Y-7.693 B17.444 C114.56 +G01 X+14.661 Y-7.571 Z-2.581 B17.438 C113.243 +G01 X+14.947 Y-7.449 Z-2.582 B17.441 C111.926 +G01 X+15.016 Y-7.42 B17.444 C111.608 +G01 X+15.303 Y-7.315 Z-2.581 B17.438 C110.315 +G01 X+15.59 Y-7.21 Z-2.582 B17.441 C109.022 +G01 X+15.67 Y-7.18 B17.444 C108.658 +G01 X+15.957 Y-7.091 Z-2.581 B17.438 C107.388 +G01 X+16.243 Y-7.003 Z-2.582 B17.441 C106.119 +G01 X+16.336 Y-6.974 B17.444 C105.707 +G01 X+16.621 Y-6.902 Z-2.581 B17.438 C104.461 +G01 X+16.907 Y-6.83 Z-2.582 B17.441 C103.215 +G01 X+17.012 Y-6.803 B17.444 C102.756 +G01 X+17.295 Y-6.746 Z-2.581 B17.438 C101.534 +G01 X+17.578 Y-6.69 Z-2.582 B17.44 C100.311 +G01 X+17.695 Y-6.667 B17.444 C99.805 +G01 X+17.975 Y-6.625 Z-2.581 B17.438 C98.607 +G01 X+18.255 Y-6.585 Z-2.582 B17.44 C97.408 +G01 X+18.384 Y-6.566 B17.444 C96.854 +G01 X+18.661 Y-6.539 Z-2.581 B17.438 C95.679 +G01 X+18.937 Y-6.514 Z-2.582 B17.44 C94.504 +G01 X+19.078 Y-6.5 B17.444 C93.903 +G01 X+19.35 Y-6.489 Z-2.581 B17.438 C92.752 +G01 X+19.621 Y-6.477 Z-2.582 B17.44 C91.601 +G01 X+19.774 Y-6.471 B17.444 C90.952 +G01 X+20.04 Y-6.473 Z-2.581 B17.439 C89.825 +G01 X+20.307 Y-6.476 C88.697 +G01 X+20.471 Y-6.477 Z-2.582 B17.444 C88.002 +G01 X+20.731 Y-6.493 Z-2.581 B17.439 C86.898 +G01 X+20.991 Y-6.509 C85.794 +G01 X+21.166 Y-6.519 Z-2.582 B17.444 C85.051 +G01 X+21.42 Y-6.548 Z-2.581 B17.438 C83.971 +G01 X+21.673 Y-6.576 B17.439 C82.89 +G01 X+21.859 Y-6.597 Z-2.582 B17.444 C82.1 +G01 X+22.105 Y-6.638 Z-2.581 B17.439 C81.043 +G01 X+22.351 Y-6.678 C79.987 +G01 X+22.546 Y-6.711 Z-2.582 B17.444 C79.149 +G01 X+22.785 Y-6.763 Z-2.581 B17.438 C78.116 +G01 X+23.023 Y-6.815 B17.439 C77.083 +G01 X+23.227 Y-6.859 Z-2.582 B17.444 C76.198 +G01 X+23.457 Y-6.922 Z-2.581 B17.438 C75.189 +G01 X+23.687 Y-6.985 B17.439 C74.18 +G01 X+23.899 Y-7.043 Z-2.582 B17.443 C73.247 +G01 X+24.12 Y-7.116 Z-2.581 B17.438 C72.262 +G01 X+24.341 Y-7.188 C71.277 +G01 X+24.561 Y-7.261 Z-2.582 B17.443 C70.296 +G01 X+24.773 Y-7.343 Z-2.581 B17.438 C69.335 +G01 X+24.985 Y-7.425 C68.373 +G01 X+25.211 Y-7.513 Z-2.582 B17.443 C67.345 +G01 X+25.615 Y-7.694 Z-2.581 B17.438 C65.47 +G01 X+25.847 Y-7.797 Z-2.582 B17.443 C64.394 +G01 X+26.231 Y-7.994 Z-2.581 B17.438 C62.567 +G01 X+26.467 Y-8.115 Z-2.582 B17.443 C61.352 +G01 X+26.831 Y-8.325 Z-2.581 B17.438 C59.663 +G01 X+27.07 Y-8.463 Z-2.582 B17.443 C58.493 +G01 X+27.414 Y-8.686 Z-2.581 B17.438 C56.76 +G01 X+27.655 Y-8.843 Z-2.582 B17.443 C55.546 +G01 X+27.977 Y-9.076 Z-2.581 B17.438 C53.857 +G01 X+28.219 Y-9.251 Z-2.582 B17.443 C52.597 +G01 X+28.521 Y-9.494 Z-2.581 B17.438 C50.953 +G01 X+28.762 Y-9.689 Z-2.582 B17.443 C49.643 +G01 X+29.042 Y-9.939 Z-2.581 B17.438 C48.05 +G01 X+29.295 Y-10.168 Z-2.582 B17.443 C46.605 +G01 X+29.539 Y-10.409 Z-2.581 B17.438 C45.154 +G01 X+29.781 Y-10.651 Z-2.582 B17.443 C43.703 +G01 X+30.013 Y-10.905 Z-2.581 B17.438 C42.246 +G01 X+30.244 Y-11.16 Z-2.582 B17.444 C40.789 +G01 X+30.444 Y-11.403 Z-2.581 B17.438 C39.458 +G01 X+30.643 Y-11.647 Z-2.582 B17.441 C38.126 +G01 X+30.686 Y-11.699 B17.444 C37.838 +G01 X+30.869 Y-11.948 Z-2.581 B17.438 C36.531 +G01 X+31.052 Y-12.197 Z-2.582 B17.441 C35.223 +G01 X+31.099 Y-12.26 B17.444 C34.887 +G01 X+31.281 Y-12.536 Z-2.581 B17.438 C33.488 +G01 X+31.463 Y-12.812 Z-2.582 B17.443 C32.089 +G01 X+31.483 Y-12.842 B17.444 C31.937 +G01 X+31.648 Y-13.122 Z-2.581 B17.438 C30.561 +G01 X+31.812 Y-13.402 Z-2.582 B17.442 C29.185 +G01 X+31.836 Y-13.442 B17.444 C28.986 +G01 X+31.984 Y-13.725 Z-2.581 B17.438 C27.634 +G01 X+32.131 Y-14.009 Z-2.582 B17.442 C26.281 +G01 X+32.158 Y-14.06 B17.444 C26.035 +G01 X+32.288 Y-14.345 Z-2.581 B17.438 C24.706 +G01 X+32.419 Y-14.631 Z-2.582 B17.442 C23.378 +G01 X+32.447 Y-14.694 B17.444 C23.084 +G01 X+32.561 Y-14.98 Z-2.581 B17.438 C21.779 +G01 X+32.674 Y-15.267 Z-2.582 B17.441 C20.474 +G01 X+32.704 Y-15.342 B17.444 C20.133 +G01 X+32.801 Y-15.628 Z-2.581 B17.438 C18.852 +G01 X+32.898 Y-15.915 Z-2.582 B17.441 C17.57 +G01 X+32.927 Y-16.002 B17.444 C17.182 +G01 X+33.008 Y-16.288 Z-2.581 B17.438 C15.925 +G01 X+33.088 Y-16.574 Z-2.582 B17.441 C14.667 +G01 X+33.116 Y-16.673 B17.444 C14.231 +G01 X+33.18 Y-16.957 Z-2.581 B17.438 C12.997 +G01 X+33.244 Y-17.241 Z-2.582 B17.44 C11.763 +G01 X+33.269 Y-17.352 B17.444 C11.28 +G01 X+33.318 Y-17.634 Z-2.581 B17.438 C10.07 +G01 X+33.367 Y-17.916 Z-2.582 B17.44 C8.86 +G01 X+33.388 Y-18.039 B17.444 C8.33 +G01 X+33.422 Y-18.317 Z-2.581 B17.438 C7.143 +G01 X+33.455 Y-18.595 Z-2.582 B17.44 C5.956 +G01 X+33.471 Y-18.731 B17.444 C5.379 +G01 X+33.49 Y-19.005 Z-2.581 B17.438 C4.216 +G01 X+33.509 Y-19.279 Z-2.582 B17.44 C3.053 +G01 X+33.519 Y-19.426 B17.444 C2.428 +G01 X+33.524 Y-19.695 Z-2.581 B17.438 C1.289 +G01 X+33.528 Y-19.964 Z-2.582 B17.44 C0.149 +G01 X+33.53 Y-20.123 B17.444 C359.477 +G01 X+33.522 Y-20.386 Z-2.581 B17.438 C358.362 +G01 X+33.512 Y-20.649 B17.439 C357.246 +G01 X+33.506 Y-20.819 Z-2.582 B17.444 C356.526 +G01 X+33.484 Y-21.076 Z-2.581 B17.439 C355.434 +G01 X+33.462 Y-21.333 C354.342 +G01 X+33.446 Y-21.513 Z-2.582 B17.444 C353.575 +G01 X+33.412 Y-21.763 Z-2.581 B17.439 C352.507 +G01 X+33.377 Y-22.013 C351.439 +G01 X+33.35 Y-22.203 Z-2.582 B17.444 C350.624 +G01 X+33.304 Y-22.446 Z-2.581 B17.439 C349.58 +G01 X+33.258 Y-22.688 C348.535 +G01 X+33.219 Y-22.888 Z-2.582 B17.444 C347.673 +G01 X+33.162 Y-23.122 Z-2.581 B17.438 C346.653 +G01 X+33.104 Y-23.356 B17.439 C345.632 +G01 X+33.053 Y-23.564 Z-2.582 B17.443 C344.723 +G01 X+32.985 Y-23.79 Z-2.581 B17.439 C343.726 +G01 X+32.917 Y-24.015 B17.438 C342.728 +G01 X+32.852 Y-24.232 Z-2.582 B17.443 C341.772 +G01 X+32.775 Y-24.448 Z-2.581 B17.439 C340.798 +G01 X+32.697 Y-24.665 B17.438 C339.825 +G01 X+32.617 Y-24.888 Z-2.582 B17.443 C338.821 +G01 X+32.445 Y-25.302 Z-2.581 B17.438 C336.922 +G01 X+32.349 Y-25.531 Z-2.582 B17.443 C335.87 +G01 X+32.16 Y-25.925 Z-2.581 B17.438 C334.018 +G01 X+32.048 Y-26.159 Z-2.582 B17.443 C332.919 +G01 X+31.844 Y-26.533 Z-2.581 B17.438 C331.115 +G01 X+31.715 Y-26.771 Z-2.582 B17.443 C329.968 +G01 X+31.498 Y-27.125 Z-2.581 B17.438 C328.212 +G01 X+31.351 Y-27.365 Z-2.582 B17.443 C327.017 +G01 X+31.122 Y-27.698 Z-2.581 B17.438 C325.308 +G01 X+30.957 Y-27.94 Z-2.582 B17.443 C324.074 +G01 X+30.718 Y-28.252 Z-2.581 B17.438 C322.405 +G01 X+30.533 Y-28.493 Z-2.582 B17.443 C321.12 +G01 X+30.287 Y-28.784 Z-2.581 B17.438 C319.502 +G01 X+30.082 Y-29.024 Z-2.582 B17.443 C318.167 +G01 X+29.828 Y-29.294 Z-2.581 B17.438 C316.598 +G01 X+29.594 Y-29.541 Z-2.582 B17.443 C315.154 +G01 X+29.348 Y-29.777 Z-2.581 B17.438 C313.709 +G01 X+29.101 Y-30.013 Z-2.582 B17.443 C312.265 +G01 X+28.837 Y-30.241 Z-2.581 B17.438 C310.789 +G01 X+28.573 Y-30.468 Z-2.582 B17.444 C309.314 +G01 X+28.327 Y-30.66 Z-2.581 B17.438 C307.994 +G01 X+28.081 Y-30.851 Z-2.582 B17.441 C306.675 +G01 X+28.023 Y-30.896 B17.444 C306.363 +G01 X+27.772 Y-31.071 Z-2.581 B17.438 C305.067 +G01 X+27.521 Y-31.246 Z-2.582 B17.441 C303.772 +G01 X+27.452 Y-31.294 B17.444 C303.412 +G01 X+27.174 Y-31.468 Z-2.581 B17.438 C302.024 +G01 X+26.895 Y-31.641 Z-2.582 B17.442 C300.637 +G01 X+26.86 Y-31.663 B17.444 C300.461 +G01 X+26.579 Y-31.819 Z-2.581 B17.438 C299.097 +G01 X+26.297 Y-31.975 Z-2.582 B17.442 C297.733 +G01 X+26.251 Y-32.001 B17.444 C297.51 +G01 X+25.967 Y-32.14 Z-2.581 B17.438 C296.17 +G01 X+25.682 Y-32.279 Z-2.582 B17.442 C294.829 +G01 X+25.625 Y-32.307 B17.444 C294.56 +G01 X+25.339 Y-32.429 Z-2.581 B17.438 C293.243 +G01 X+25.053 Y-32.55 Z-2.582 B17.441 C291.926 +G01 X+24.984 Y-32.58 B17.444 C291.608 +G01 X+24.697 Y-32.685 Z-2.581 B17.438 C290.315 +G01 X+24.41 Y-32.79 Z-2.582 B17.441 C289.022 +G01 X+24.33 Y-32.82 B17.444 C288.658 +G01 X+24.043 Y-32.908 Z-2.581 B17.438 C287.388 +G01 X+23.757 Y-32.997 Z-2.582 B17.441 C286.119 +G01 X+23.664 Y-33.026 B17.444 C285.707 +G01 X+23.379 Y-33.098 Z-2.581 B17.438 C284.461 +G01 X+23.093 Y-33.17 Z-2.582 B17.441 C283.215 +G01 X+22.988 Y-33.197 B17.444 C282.756 +G01 X+22.705 Y-33.254 Z-2.581 B17.438 C281.534 +G01 X+22.422 Y-33.31 Z-2.582 B17.44 C280.311 +G01 X+22.305 Y-33.333 B17.444 C279.805 +G01 X+22.025 Y-33.374 Z-2.581 B17.438 C278.607 +G01 X+21.745 Y-33.415 Z-2.582 B17.44 C277.408 +G01 X+21.616 Y-33.434 B17.444 C276.854 +G01 X+21.339 Y-33.46 Z-2.581 B17.438 C275.679 +G01 X+21.063 Y-33.486 Z-2.582 B17.44 C274.504 +G01 X+20.922 Y-33.5 B17.444 C273.903 +G01 X+20.65 Y-33.511 Z-2.581 B17.438 C272.752 +G01 X+20.379 Y-33.523 Z-2.582 B17.44 C271.601 +G01 X+20.226 Y-33.529 B17.444 C270.952 +G01 X+19.96 Y-33.527 Z-2.581 B17.439 C269.825 +G01 X+19.693 Y-33.524 C268.697 +G01 X+19.529 Y-33.523 Z-2.582 B17.444 C268.001 +G01 X+19.269 Y-33.507 Z-2.581 B17.439 C266.898 +G01 X+19.009 Y-33.491 C265.794 +G01 X+18.834 Y-33.481 Z-2.582 B17.444 C265.051 +G01 X+18.58 Y-33.452 Z-2.581 B17.438 C263.971 +G01 X+18.327 Y-33.424 B17.439 C262.89 +G01 X+18.141 Y-33.403 Z-2.582 B17.444 C262.1 +G01 X+17.895 Y-33.362 Z-2.581 B17.439 C261.043 +G01 X+17.649 Y-33.321 C259.987 +G01 X+17.454 Y-33.289 Z-2.582 B17.444 C259.149 +G01 X+17.215 Y-33.237 Z-2.581 B17.438 C258.116 +G01 X+16.977 Y-33.185 B17.439 C257.083 +G01 X+16.773 Y-33.14 Z-2.582 B17.444 C256.198 +G01 X+16.543 Y-33.078 Z-2.581 B17.438 C255.189 +G01 X+16.313 Y-33.015 B17.439 C254.18 +G01 X+16.101 Y-32.957 Z-2.582 B17.443 C253.247 +G01 X+15.88 Y-32.884 Z-2.581 B17.438 C252.262 +G01 X+15.659 Y-32.811 C251.277 +G01 X+15.439 Y-32.739 Z-2.582 B17.443 C250.296 +G01 X+15.227 Y-32.657 Z-2.581 B17.438 C249.335 +G01 X+15.015 Y-32.575 C248.373 +G01 X+14.789 Y-32.487 Z-2.582 B17.443 C247.345 +G01 X+14.471 Y-32.345 Z-2.581 B17.438 C245.87 +G01 X+14.153 Y-32.202 Z-2.582 B17.443 C244.394 +G01 X+13.769 Y-32.006 Z-2.581 B17.438 C242.567 +G01 X+13.506 Y-31.871 Z-2.583 B17.443 C241.352 +G01 X+13.218 Y-31.704 Z-2.581 B17.438 C239.923 +G01 X+12.93 Y-31.537 Z-2.582 B17.443 C238.493 +G01 X+12.586 Y-31.314 Z-2.581 B17.438 C236.76 +G01 X+12.345 Y-31.157 Z-2.582 B17.443 C235.546 +G01 X+12.023 Y-30.924 Z-2.581 B17.438 C233.857 +G01 X+11.781 Y-30.748 Z-2.582 B17.443 C232.597 +G01 X+11.479 Y-30.506 Z-2.581 B17.438 C230.953 +G01 X+11.238 Y-30.311 Z-2.582 B17.443 C229.643 +G01 X+10.958 Y-30.061 Z-2.581 B17.438 C228.05 +G01 X+10.705 Y-29.832 Z-2.582 B17.443 C226.605 +G01 X+10.461 Y-29.591 Z-2.581 B17.438 C225.154 +G01 X+10.219 Y-29.349 Z-2.582 B17.443 C223.703 +G01 X+9.973 Y-29.079 Z-2.581 B17.438 C222.156 +G01 X+9.92 Y-29.009 Z-2.579 B17.428 C221.787 +G01 X+9.88 Y-28.932 Z-2.572 B17.399 C221.428 +G01 X+9.854 Y-28.849 Z-2.561 B17.35 C221.09 +G01 X+9.781 Y-28.51 Z-2.51 B17.134 C219.778 +G01 X+9.758 Y-28.435 Z-2.501 B17.093 C219.473 +G01 X+9.724 Y-28.364 Z-2.495 B17.069 C219.128 +G01 X+9.679 Y-28.299 Z-2.493 B17.061 C218.785 +G01 X+9.541 Y-28.132 Z-2.494 B17.066 C217.858 +G01 X+9.281 Y-27.778 Z-2.493 B17.061 C215.948 +G01 X+9.137 Y-27.582 Z-2.494 B17.066 C214.905 +G01 X+8.901 Y-27.226 Z-2.493 B17.061 C213.045 +G01 X+8.761 Y-27.013 Z-2.494 B17.066 C211.952 +G01 X+8.549 Y-26.654 Z-2.493 B17.061 C210.141 +G01 X+8.414 Y-26.425 Z-2.494 B17.066 C208.999 +G01 X+8.227 Y-26.065 Z-2.493 B17.061 C207.238 +G01 X+8.099 Y-25.82 Z-2.494 B17.066 C206.046 +G01 X+7.935 Y-25.461 Z-2.493 B17.061 C204.335 +G01 X+7.815 Y-25.2 Z-2.494 B17.066 C203.093 +G01 X+7.713 Y-24.942 Z-2.493 B17.06 C201.9 +G01 X+7.61 Y-24.683 B17.062 C200.707 +G01 X+7.564 Y-24.566 Z-2.494 B17.066 C200.14 +G01 X+7.476 Y-24.308 Z-2.493 B17.06 C198.972 +G01 X+7.389 Y-24.05 B17.061 C197.804 +G01 X+7.345 Y-23.919 Z-2.494 B17.066 C197.188 +G01 X+7.273 Y-23.663 Z-2.493 B17.06 C196.044 +G01 X+7.2 Y-23.406 B17.061 C194.9 +G01 X+7.157 Y-23.25 Z-2.494 B17.066 C194.18 +G01 X+7.101 Y-23.001 Z-2.493 B17.06 C193.089 +G01 X+7.045 Y-22.753 B17.061 C191.997 +G01 X+7.009 Y-22.597 Z-2.494 B17.066 C191.288 +G01 X+6.965 Y-22.345 Z-2.493 B17.061 C190.191 +G01 X+6.922 Y-22.093 C189.094 +G01 X+6.893 Y-21.925 Z-2.494 B17.066 C188.338 +G01 X+6.863 Y-21.677 Z-2.493 B17.061 C187.265 +G01 X+6.833 Y-21.428 C186.191 +G01 X+6.811 Y-21.248 Z-2.494 B17.066 C185.388 +G01 X+6.794 Y-21.004 Z-2.493 B17.061 C184.338 +G01 X+6.777 Y-20.759 B17.06 C183.288 +G01 X+6.764 Y-20.567 Z-2.494 B17.066 C182.438 +G01 X+6.76 Y-20.328 Z-2.493 B17.061 C181.412 +G01 X+6.756 Y-20.089 B17.06 C180.384 +G01 X+6.753 Y-19.885 Z-2.494 B17.066 C179.488 +G01 X+6.76 Y-19.652 Z-2.493 B17.061 C178.485 +G01 X+6.769 Y-19.418 B17.06 C177.481 +G01 X+6.776 Y-19.203 Z-2.494 B17.066 C176.538 +G01 X+6.795 Y-18.976 Z-2.493 B17.061 C175.558 +G01 X+6.815 Y-18.748 B17.06 C174.578 +G01 X+6.835 Y-18.524 Z-2.494 B17.066 C173.589 +G01 X+6.896 Y-18.082 Z-2.493 B17.06 C171.675 +G01 X+6.928 Y-17.848 Z-2.494 B17.066 C170.639 +G01 X+7.01 Y-17.421 Z-2.493 B17.06 C168.771 +G01 X+7.056 Y-17.178 Z-2.494 B17.066 C167.689 +G01 X+7.157 Y-16.766 Z-2.493 B17.06 C165.868 +G01 X+7.219 Y-16.515 Z-2.494 B17.066 C164.739 +G01 X+7.337 Y-16.12 Z-2.493 B17.06 C162.965 +G01 X+7.415 Y-15.862 Z-2.494 B17.066 C161.789 +G01 X+7.55 Y-15.484 Z-2.493 B17.06 C160.062 +G01 X+7.645 Y-15.22 Z-2.494 B17.065 C158.839 +G01 X+7.795 Y-14.859 Z-2.493 B17.059 C157.159 +G01 X+7.907 Y-14.59 Z-2.494 B17.065 C155.889 +G01 X+8.071 Y-14.247 Z-2.493 B17.059 C154.255 +G01 X+8.202 Y-13.975 Z-2.494 B17.065 C152.939 +G01 X+8.378 Y-13.651 Z-2.493 B17.059 C151.352 +G01 X+8.527 Y-13.375 Z-2.494 B17.065 C149.99 +G01 X+8.663 Y-13.153 Z-2.493 B17.061 C148.857 +G01 X+8.799 Y-12.931 B17.062 C147.724 +G01 X+8.884 Y-12.793 Z-2.494 B17.065 C147.04 +G01 X+9.028 Y-12.583 Z-2.493 B17.061 C145.93 +G01 X+9.172 Y-12.373 B17.062 C144.82 +G01 X+9.269 Y-12.231 Z-2.494 B17.065 C144.094 +G01 X+9.421 Y-12.032 Z-2.493 B17.06 C143.006 +G01 X+9.572 Y-11.834 B17.062 C141.917 +G01 X+9.684 Y-11.689 Z-2.494 B17.065 C141.146 +G01 X+9.841 Y-11.502 Z-2.493 B17.061 C140.08 +G01 X+9.999 Y-11.317 B17.062 C139.013 +G01 X+10.125 Y-11.168 Z-2.494 B17.065 C138.193 +G01 X+10.288 Y-10.995 Z-2.493 B17.061 C137.152 +G01 X+10.452 Y-10.821 B17.062 C136.11 +G01 X+10.593 Y-10.672 Z-2.494 B17.065 C135.24 +G01 X+10.761 Y-10.511 Z-2.493 B17.061 C134.223 +G01 X+10.929 Y-10.349 C133.207 +G01 X+11.086 Y-10.2 Z-2.494 B17.065 C132.287 +G01 X+11.258 Y-10.051 Z-2.493 B17.061 C131.295 +G01 X+11.43 Y-9.902 C130.303 +G01 X+11.602 Y-9.754 Z-2.494 B17.065 C129.334 +G01 X+11.952 Y-9.481 Z-2.493 B17.061 C127.4 +G01 X+12.14 Y-9.335 Z-2.494 B17.066 C126.381 +G01 X+12.496 Y-9.087 Z-2.493 B17.061 C124.496 +G01 X+12.7 Y-8.945 Z-2.494 B17.066 C123.428 +G01 X+13.058 Y-8.721 Z-2.493 B17.061 C121.593 +G01 X+13.279 Y-8.584 Z-2.494 B17.066 C120.475 +G01 X+13.638 Y-8.384 Z-2.493 B17.061 C118.69 +G01 X+13.875 Y-8.253 Z-2.494 B17.066 C117.522 +G01 X+14.235 Y-8.077 Z-2.493 B17.061 C115.786 +G01 X+14.488 Y-7.953 Z-2.494 B17.066 C114.569 +G01 X+14.746 Y-7.843 Z-2.493 B17.06 C113.364 +G01 X+15.004 Y-7.733 B17.062 C112.159 +G01 X+15.116 Y-7.685 Z-2.494 B17.066 C111.616 +G01 X+15.374 Y-7.59 Z-2.493 B17.06 C110.436 +G01 X+15.632 Y-7.496 B17.062 C109.255 +G01 X+15.756 Y-7.45 Z-2.494 B17.066 C108.663 +G01 X+16.013 Y-7.37 Z-2.493 B17.06 C107.508 +G01 X+16.271 Y-7.291 B17.061 C106.352 +G01 X+16.426 Y-7.244 Z-2.494 B17.066 C105.632 +G01 X+16.673 Y-7.181 Z-2.493 B17.06 C104.54 +G01 X+16.92 Y-7.118 B17.061 C103.449 +G01 X+17.069 Y-7.08 Z-2.494 B17.066 C102.763 +G01 X+17.322 Y-7.029 Z-2.493 B17.06 C101.654 +G01 X+17.576 Y-6.979 B17.061 C100.546 +G01 X+17.738 Y-6.947 Z-2.494 B17.066 C99.813 +G01 X+17.988 Y-6.91 Z-2.493 B17.061 C98.728 +G01 X+18.239 Y-6.873 C97.642 +G01 X+18.413 Y-6.847 Z-2.494 B17.066 C96.863 +G01 X+18.659 Y-6.824 Z-2.493 B17.061 C95.801 +G01 X+18.906 Y-6.801 C94.739 +G01 X+19.092 Y-6.783 Z-2.494 B17.066 C93.913 +G01 X+19.334 Y-6.773 Z-2.493 B17.061 C92.875 +G01 X+19.576 Y-6.762 B17.06 C91.836 +G01 X+19.774 Y-6.754 Z-2.494 B17.066 C90.963 +G01 X+20.01 Y-6.756 Z-2.493 B17.061 C89.948 +G01 X+20.247 Y-6.758 B17.06 C88.933 +G01 X+20.456 Y-6.76 Z-2.494 B17.066 C88.013 +G01 X+20.686 Y-6.774 Z-2.493 B17.061 C87.022 +G01 X+20.917 Y-6.788 B17.06 C86.03 +G01 X+21.137 Y-6.801 Z-2.494 B17.066 C85.063 +G01 X+21.585 Y-6.851 Z-2.493 B17.06 C83.126 +G01 X+21.815 Y-6.877 Z-2.494 B17.066 C82.114 +G01 X+22.249 Y-6.948 Z-2.493 B17.06 C80.223 +G01 X+22.488 Y-6.988 Z-2.494 B17.066 C79.164 +G01 X+22.907 Y-7.079 Z-2.493 B17.06 C77.32 +G01 X+23.154 Y-7.133 Z-2.494 B17.066 C76.214 +G01 X+23.558 Y-7.243 Z-2.493 B17.06 C74.417 +G01 X+23.813 Y-7.312 Z-2.494 B17.066 C73.264 +G01 X+24.199 Y-7.44 Z-2.493 B17.06 C71.513 +G01 X+24.461 Y-7.526 Z-2.494 B17.065 C70.314 +G01 X+24.83 Y-7.668 Z-2.493 B17.059 C68.61 +G01 X+25.097 Y-7.772 Z-2.494 B17.065 C67.364 +G01 X+25.448 Y-7.929 Z-2.493 B17.059 C65.707 +G01 X+25.72 Y-8.05 Z-2.494 B17.065 C64.414 +G01 X+26.053 Y-8.22 Z-2.493 B17.059 C62.804 +G01 X+26.327 Y-8.361 Z-2.494 B17.065 C61.464 +G01 X+26.642 Y-8.542 Z-2.493 B17.059 C59.901 +G01 X+26.918 Y-8.702 Z-2.494 B17.065 C58.515 +G01 X+27.134 Y-8.842 Z-2.493 B17.061 C57.393 +G01 X+27.35 Y-8.982 B17.062 C56.272 +G01 X+27.49 Y-9.073 Z-2.494 B17.065 C55.565 +G01 X+27.695 Y-9.221 Z-2.493 B17.061 C54.467 +G01 X+27.899 Y-9.369 B17.062 C53.369 +G01 X+28.043 Y-9.473 Z-2.494 B17.065 C52.623 +G01 X+28.235 Y-9.628 Z-2.493 B17.061 C51.544 +G01 X+28.427 Y-9.782 B17.062 C50.465 +G01 X+28.574 Y-9.901 Z-2.494 B17.065 C49.67 +G01 X+28.829 Y-10.128 Z-2.493 B17.06 C48.193 +G01 X+29.083 Y-10.356 Z-2.494 B17.065 C46.717 +G01 X+29.302 Y-10.573 Z-2.493 B17.059 C45.384 +G01 X+29.567 Y-10.836 Z-2.494 B17.065 C43.764 +G01 X+29.797 Y-11.088 Z-2.493 B17.06 C42.287 +G01 X+30.026 Y-11.341 Z-2.494 B17.065 C40.811 +G01 X+30.169 Y-11.514 Z-2.493 B17.061 C39.831 +G01 X+30.311 Y-11.688 C38.851 +G01 X+30.459 Y-11.868 Z-2.494 B17.066 C37.858 +G01 X+30.719 Y-12.221 Z-2.493 B17.061 C35.948 +G01 X+30.863 Y-12.418 Z-2.494 B17.066 C34.905 +G01 X+31.099 Y-12.774 Z-2.493 B17.061 C33.045 +G01 X+31.239 Y-12.987 Z-2.494 B17.066 C31.952 +G01 X+31.451 Y-13.346 Z-2.493 B17.061 C30.141 +G01 X+31.586 Y-13.575 Z-2.494 B17.066 C28.999 +G01 X+31.773 Y-13.934 Z-2.493 B17.061 C27.238 +G01 X+31.901 Y-14.18 Z-2.494 B17.066 C26.046 +G01 X+32.065 Y-14.539 Z-2.493 B17.061 C24.335 +G01 X+32.185 Y-14.8 Z-2.494 B17.066 C23.093 +G01 X+32.287 Y-15.058 Z-2.493 B17.06 C21.9 +G01 X+32.39 Y-15.317 B17.062 C20.707 +G01 X+32.436 Y-15.434 Z-2.494 B17.066 C20.14 +G01 X+32.524 Y-15.692 Z-2.493 B17.06 C18.972 +G01 X+32.611 Y-15.95 B17.061 C17.804 +G01 X+32.655 Y-16.08 Z-2.494 B17.066 C17.188 +G01 X+32.727 Y-16.337 Z-2.493 B17.06 C16.044 +G01 X+32.8 Y-16.594 B17.061 C14.9 +G01 X+32.843 Y-16.75 Z-2.494 B17.066 C14.18 +G01 X+32.899 Y-16.998 Z-2.493 B17.06 C13.089 +G01 X+32.955 Y-17.247 B17.061 C11.997 +G01 X+32.991 Y-17.402 Z-2.494 B17.066 C11.288 +G01 X+33.035 Y-17.654 Z-2.493 B17.061 C10.191 +G01 X+33.078 Y-17.907 C9.094 +G01 X+33.107 Y-18.075 Z-2.494 B17.066 C8.338 +G01 X+33.137 Y-18.323 Z-2.493 B17.061 C7.265 +G01 X+33.167 Y-18.572 C6.191 +G01 X+33.189 Y-18.752 Z-2.494 B17.066 C5.388 +G01 X+33.206 Y-18.996 Z-2.493 B17.061 C4.338 +G01 X+33.223 Y-19.24 B17.06 C3.288 +G01 X+33.236 Y-19.432 Z-2.494 B17.066 C2.438 +G01 X+33.24 Y-19.672 Z-2.493 B17.061 C1.412 +G01 X+33.244 Y-19.911 B17.06 C0.384 +G01 X+33.247 Y-20.115 Z-2.494 B17.066 C359.488 +G01 X+33.24 Y-20.348 Z-2.493 B17.061 C358.485 +G01 X+33.231 Y-20.582 B17.06 C357.481 +G01 X+33.224 Y-20.796 Z-2.494 B17.066 C356.538 +G01 X+33.205 Y-21.024 Z-2.493 B17.061 C355.558 +G01 X+33.185 Y-21.251 B17.06 C354.578 +G01 X+33.165 Y-21.476 Z-2.494 B17.066 C353.589 +G01 X+33.104 Y-21.918 Z-2.493 B17.06 C351.675 +G01 X+33.072 Y-22.152 Z-2.494 B17.066 C350.639 +G01 X+32.99 Y-22.579 Z-2.493 B17.06 C348.771 +G01 X+32.944 Y-22.822 Z-2.494 B17.066 C347.689 +G01 X+32.843 Y-23.233 Z-2.493 B17.06 C345.868 +G01 X+32.781 Y-23.485 Z-2.494 B17.066 C344.739 +G01 X+32.663 Y-23.88 Z-2.493 B17.06 C342.965 +G01 X+32.585 Y-24.138 Z-2.494 B17.066 C341.789 +G01 X+32.45 Y-24.516 Z-2.493 B17.06 C340.062 +G01 X+32.355 Y-24.78 Z-2.494 B17.065 C338.839 +G01 X+32.205 Y-25.141 Z-2.493 B17.059 C337.159 +G01 X+32.093 Y-25.41 Z-2.494 B17.065 C335.889 +G01 X+31.929 Y-25.752 Z-2.493 B17.059 C334.255 +G01 X+31.798 Y-26.025 Z-2.494 B17.065 C332.939 +G01 X+31.622 Y-26.349 Z-2.493 B17.059 C331.352 +G01 X+31.473 Y-26.625 Z-2.494 B17.065 C329.99 +G01 X+31.337 Y-26.847 Z-2.493 B17.061 C328.857 +G01 X+31.201 Y-27.069 B17.062 C327.724 +G01 X+31.116 Y-27.207 Z-2.494 B17.065 C327.04 +G01 X+30.972 Y-27.417 Z-2.493 B17.061 C325.93 +G01 X+30.828 Y-27.627 B17.062 C324.82 +G01 X+30.731 Y-27.769 Z-2.494 B17.065 C324.094 +G01 X+30.579 Y-27.968 Z-2.493 B17.06 C323.006 +G01 X+30.428 Y-28.166 B17.062 C321.917 +G01 X+30.316 Y-28.311 Z-2.494 B17.065 C321.146 +G01 X+30.159 Y-28.497 Z-2.493 B17.061 C320.08 +G01 X+30.001 Y-28.683 B17.062 C319.013 +G01 X+29.875 Y-28.831 Z-2.494 B17.065 C318.193 +G01 X+29.712 Y-29.005 Z-2.493 B17.061 C317.152 +G01 X+29.548 Y-29.179 B17.062 C316.11 +G01 X+29.407 Y-29.328 Z-2.494 B17.065 C315.24 +G01 X+29.239 Y-29.489 Z-2.493 B17.061 C314.223 +G01 X+29.071 Y-29.65 C313.207 +G01 X+28.914 Y-29.8 Z-2.494 B17.065 C312.287 +G01 X+28.742 Y-29.949 Z-2.493 B17.061 C311.295 +G01 X+28.57 Y-30.097 C310.303 +G01 X+28.398 Y-30.246 Z-2.494 B17.065 C309.334 +G01 X+28.048 Y-30.518 Z-2.493 B17.061 C307.4 +G01 X+27.86 Y-30.665 Z-2.494 B17.066 C306.381 +G01 X+27.504 Y-30.913 Z-2.493 B17.061 C304.496 +G01 X+27.3 Y-31.055 Z-2.494 B17.066 C303.428 +G01 X+26.942 Y-31.279 Z-2.493 B17.061 C301.593 +G01 X+26.721 Y-31.416 Z-2.494 B17.066 C300.475 +G01 X+26.362 Y-31.616 Z-2.493 B17.061 C298.69 +G01 X+26.125 Y-31.747 Z-2.494 B17.066 C297.522 +G01 X+25.765 Y-31.923 Z-2.493 B17.061 C295.786 +G01 X+25.512 Y-32.047 Z-2.494 B17.066 C294.569 +G01 X+25.254 Y-32.157 Z-2.493 B17.06 C293.364 +G01 X+24.996 Y-32.267 B17.062 C292.159 +G01 X+24.884 Y-32.315 Z-2.494 B17.066 C291.616 +G01 X+24.626 Y-32.41 Z-2.493 B17.06 C290.436 +G01 X+24.368 Y-32.504 B17.062 C289.255 +G01 X+24.244 Y-32.55 Z-2.494 B17.066 C288.663 +G01 X+23.987 Y-32.63 Z-2.493 B17.06 C287.508 +G01 X+23.729 Y-32.709 B17.061 C286.352 +G01 X+23.574 Y-32.756 Z-2.494 B17.066 C285.632 +G01 X+23.327 Y-32.819 Z-2.493 B17.06 C284.54 +G01 X+23.08 Y-32.882 B17.061 C283.449 +G01 X+22.931 Y-32.92 Z-2.494 B17.066 C282.763 +G01 X+22.678 Y-32.97 Z-2.493 B17.06 C281.654 +G01 X+22.424 Y-33.021 B17.061 C280.546 +G01 X+22.262 Y-33.053 Z-2.494 B17.066 C279.813 +G01 X+22.012 Y-33.09 Z-2.493 B17.061 C278.728 +G01 X+21.761 Y-33.127 C277.642 +G01 X+21.587 Y-33.152 Z-2.494 B17.066 C276.863 +G01 X+21.341 Y-33.176 Z-2.493 B17.061 C275.801 +G01 X+21.094 Y-33.199 C274.739 +G01 X+20.908 Y-33.217 Z-2.494 B17.066 C273.913 +G01 X+20.666 Y-33.227 Z-2.493 B17.061 C272.875 +G01 X+20.424 Y-33.237 B17.06 C271.836 +G01 X+20.226 Y-33.246 Z-2.494 B17.066 C270.963 +G01 X+19.99 Y-33.244 Z-2.493 B17.061 C269.948 +G01 X+19.753 Y-33.242 B17.06 C268.933 +G01 X+19.544 Y-33.24 Z-2.494 B17.066 C268.013 +G01 X+19.314 Y-33.226 Z-2.493 B17.061 C267.022 +G01 X+19.083 Y-33.212 B17.06 C266.03 +G01 X+18.863 Y-33.199 Z-2.494 B17.066 C265.063 +G01 X+18.415 Y-33.149 Z-2.493 B17.06 C263.126 +G01 X+18.185 Y-33.123 Z-2.494 B17.066 C262.114 +G01 X+17.751 Y-33.051 Z-2.493 B17.06 C260.223 +G01 X+17.512 Y-33.012 Z-2.494 B17.066 C259.164 +G01 X+17.093 Y-32.921 Z-2.493 B17.06 C257.32 +G01 X+16.846 Y-32.867 Z-2.494 B17.066 C256.214 +G01 X+16.442 Y-32.757 Z-2.493 B17.06 C254.417 +G01 X+16.187 Y-32.687 Z-2.494 B17.066 C253.264 +G01 X+15.801 Y-32.56 Z-2.493 B17.06 C251.513 +G01 X+15.539 Y-32.474 Z-2.494 B17.065 C250.314 +G01 X+15.17 Y-32.331 Z-2.493 B17.059 C248.61 +G01 X+14.903 Y-32.228 Z-2.494 B17.065 C247.364 +G01 X+14.592 Y-32.089 Z-2.493 B17.06 C245.889 +G01 X+14.28 Y-31.95 Z-2.494 B17.065 C244.414 +G01 X+13.947 Y-31.779 Z-2.493 B17.059 C242.804 +G01 X+13.642 Y-31.623 Z-2.494 B17.066 C241.352 +G01 X+13.362 Y-31.461 Z-2.493 B17.06 C239.934 +G01 X+13.082 Y-31.298 Z-2.494 B17.065 C238.516 +G01 X+12.866 Y-31.158 Z-2.493 B17.061 C237.394 +G01 X+12.65 Y-31.018 B17.062 C236.272 +G01 X+12.51 Y-30.927 Z-2.494 B17.065 C235.565 +G01 X+12.305 Y-30.779 Z-2.493 B17.061 C234.467 +G01 X+12.101 Y-30.631 B17.062 C233.368 +G01 X+11.957 Y-30.527 Z-2.494 B17.065 C232.623 +G01 X+11.765 Y-30.372 Z-2.493 B17.061 C231.544 +G01 X+11.573 Y-30.217 B17.062 C230.465 +G01 X+11.426 Y-30.099 Z-2.494 B17.065 C229.67 +G01 X+11.171 Y-29.872 Z-2.493 B17.06 C228.193 +G01 X+10.917 Y-29.644 Z-2.494 B17.065 C226.717 +G01 X+10.698 Y-29.427 Z-2.493 B17.059 C225.384 +G01 X+10.433 Y-29.164 Z-2.494 B17.065 C223.764 +G01 X+10.183 Y-28.889 Z-2.493 B17.061 C222.149 +G01 X+10.13 Y-28.82 Z-2.491 B17.051 C221.763 +G01 X+10.09 Y-28.742 Z-2.484 B17.021 C221.403 +G01 X+10.064 Y-28.659 Z-2.473 B16.973 C221.065 +G01 X+9.991 Y-28.319 Z-2.423 B16.756 C219.721 +G01 X+9.968 Y-28.244 Z-2.414 B16.716 C219.411 +G01 X+9.934 Y-28.173 Z-2.409 B16.692 C219.065 +G01 X+9.888 Y-28.108 Z-2.407 B16.685 C218.71 +G01 X+9.769 Y-27.962 Z-2.408 B16.688 C217.888 +G01 X+9.605 Y-27.741 Z-2.407 B16.683 C216.675 +G01 X+9.372 Y-27.424 Z-2.408 B16.689 C214.936 +G01 X+9.188 Y-27.146 Z-2.407 B16.683 C213.46 +G01 X+9.004 Y-26.867 Z-2.408 B16.689 C211.984 +G01 X+8.856 Y-26.617 Z-2.407 B16.683 C210.701 +G01 X+8.709 Y-26.366 B16.686 C209.417 +G01 X+8.665 Y-26.292 Z-2.408 B16.689 C209.032 +G01 X+8.533 Y-26.039 Z-2.407 B16.683 C207.773 +G01 X+8.401 Y-25.786 B16.685 C206.514 +G01 X+8.356 Y-25.7 Z-2.408 B16.689 C206.08 +G01 X+8.239 Y-25.446 Z-2.407 B16.683 C204.845 +G01 X+8.123 Y-25.191 B16.685 C203.61 +G01 X+8.078 Y-25.093 Z-2.408 B16.689 C203.128 +G01 X+7.977 Y-24.838 Z-2.407 B16.683 C201.918 +G01 X+7.876 Y-24.583 B16.685 C200.707 +G01 X+7.832 Y-24.473 Z-2.408 B16.689 C200.176 +G01 X+7.745 Y-24.218 Z-2.407 B16.683 C198.99 +G01 X+7.659 Y-23.963 B16.685 C197.804 +G01 X+7.618 Y-23.841 Z-2.408 B16.689 C197.224 +G01 X+7.546 Y-23.587 Z-2.407 B16.683 C196.063 +G01 X+7.474 Y-23.333 B16.684 C194.901 +G01 X+7.436 Y-23.198 Z-2.408 B16.689 C194.273 +G01 X+7.379 Y-22.946 Z-2.407 B16.683 C193.135 +G01 X+7.322 Y-22.694 B16.684 C191.997 +G01 X+7.288 Y-22.547 Z-2.408 B16.689 C191.321 +G01 X+7.245 Y-22.298 Z-2.407 B16.684 C190.207 +G01 X+7.202 Y-22.049 C189.094 +G01 X+7.174 Y-21.889 Z-2.408 B16.689 C188.369 +G01 X+7.144 Y-21.644 Z-2.407 B16.684 C187.28 +G01 X+7.115 Y-21.398 C186.191 +G01 X+7.094 Y-21.227 Z-2.408 B16.689 C185.417 +G01 X+7.077 Y-20.985 Z-2.407 B16.684 C184.352 +G01 X+7.06 Y-20.743 C183.288 +G01 X+7.048 Y-20.561 Z-2.408 B16.689 C182.465 +G01 X+7.044 Y-20.324 Z-2.407 B16.684 C181.425 +G01 X+7.04 Y-20.087 B16.683 C180.384 +G01 X+7.036 Y-19.893 Z-2.408 B16.689 C179.513 +G01 X+7.044 Y-19.662 Z-2.407 B16.684 C178.497 +G01 X+7.052 Y-19.43 B16.683 C177.481 +G01 X+7.059 Y-19.226 Z-2.408 B16.689 C176.561 +G01 X+7.097 Y-18.775 Z-2.407 B16.683 C174.578 +G01 X+7.116 Y-18.561 Z-2.408 B16.689 C173.609 +G01 X+7.176 Y-18.123 Z-2.407 B16.683 C171.675 +G01 X+7.207 Y-17.899 Z-2.408 B16.689 C170.657 +G01 X+7.288 Y-17.476 Z-2.407 B16.683 C168.771 +G01 X+7.332 Y-17.244 Z-2.408 B16.689 C167.706 +G01 X+7.432 Y-16.836 Z-2.407 B16.683 C165.868 +G01 X+7.491 Y-16.595 Z-2.408 B16.689 C164.755 +G01 X+7.608 Y-16.203 Z-2.407 B16.683 C162.965 +G01 X+7.683 Y-15.956 Z-2.408 B16.689 C161.806 +G01 X+7.817 Y-15.58 Z-2.407 B16.683 C160.062 +G01 X+7.908 Y-15.326 Z-2.408 B16.688 C158.852 +G01 X+8.056 Y-14.969 Z-2.407 B16.683 C157.159 +G01 X+8.164 Y-14.711 Z-2.408 B16.688 C155.908 +G01 X+8.326 Y-14.371 Z-2.407 B16.683 C154.255 +G01 X+8.452 Y-14.108 Z-2.408 B16.688 C152.959 +G01 X+8.627 Y-13.787 Z-2.407 B16.682 C151.352 +G01 X+8.77 Y-13.522 Z-2.408 B16.688 C150.01 +G01 X+8.956 Y-13.219 Z-2.407 B16.682 C148.449 +G01 X+9.119 Y-12.952 Z-2.408 B16.688 C147.062 +G01 X+9.307 Y-12.677 Z-2.407 B16.683 C145.587 +G01 X+9.496 Y-12.401 Z-2.408 B16.688 C144.113 +G01 X+9.698 Y-12.136 Z-2.407 C142.642 +G01 X+9.901 Y-11.871 Z-2.408 C141.171 +G01 X+10.093 Y-11.644 Z-2.407 B16.683 C139.849 +G01 X+10.285 Y-11.418 B16.687 C138.526 +G01 X+10.333 Y-11.362 Z-2.408 B16.688 C138.219 +G01 X+10.561 Y-11.118 Z-2.407 B16.683 C136.744 +G01 X+10.791 Y-10.875 Z-2.408 B16.688 C135.268 +G01 X+11.008 Y-10.667 Z-2.407 B16.682 C133.933 +G01 X+11.272 Y-10.413 Z-2.408 B16.688 C132.316 +G01 X+11.492 Y-10.223 Z-2.407 B16.683 C131.03 +G01 X+11.777 Y-9.977 Z-2.408 B16.688 C129.364 +G01 X+11.998 Y-9.805 Z-2.407 B16.683 C128.126 +G01 X+12.304 Y-9.567 Z-2.408 B16.688 C126.412 +G01 X+12.525 Y-9.413 Z-2.407 B16.683 C125.223 +G01 X+12.852 Y-9.184 Z-2.408 B16.689 C123.46 +G01 X+13.135 Y-9.007 Z-2.407 B16.683 C121.984 +G01 X+13.418 Y-8.831 Z-2.408 B16.689 C120.508 +G01 X+13.67 Y-8.691 Z-2.407 B16.683 C119.237 +G01 X+13.922 Y-8.551 B16.685 C117.965 +G01 X+14.002 Y-8.507 Z-2.408 B16.689 C117.556 +G01 X+14.255 Y-8.382 Z-2.407 B16.683 C116.309 +G01 X+14.509 Y-8.258 B16.685 C115.062 +G01 X+14.601 Y-8.213 Z-2.408 B16.689 C114.604 +G01 X+14.856 Y-8.104 Z-2.407 B16.683 C113.382 +G01 X+15.111 Y-7.995 B16.685 C112.159 +G01 X+15.215 Y-7.951 Z-2.408 B16.689 C111.652 +G01 X+15.47 Y-7.857 Z-2.407 B16.683 C110.454 +G01 X+15.726 Y-7.763 B16.685 C109.255 +G01 X+15.842 Y-7.721 Z-2.408 B16.689 C108.7 +G01 X+16.096 Y-7.641 Z-2.407 B16.683 C107.527 +G01 X+16.351 Y-7.563 B16.684 C106.352 +G01 X+16.479 Y-7.523 Z-2.408 B16.689 C105.749 +G01 X+16.732 Y-7.458 Z-2.407 B16.683 C104.599 +G01 X+16.985 Y-7.394 B16.684 C103.449 +G01 X+17.126 Y-7.358 Z-2.408 B16.689 C102.797 +G01 X+17.377 Y-7.308 Z-2.407 B16.683 C101.671 +G01 X+17.628 Y-7.258 B16.684 C100.546 +G01 X+17.781 Y-7.227 Z-2.408 B16.689 C99.845 +G01 X+18.029 Y-7.19 Z-2.407 B16.684 C98.744 +G01 X+18.276 Y-7.154 C97.642 +G01 X+18.441 Y-7.13 Z-2.408 B16.689 C96.893 +G01 X+18.685 Y-7.106 Z-2.407 B16.684 C95.816 +G01 X+18.929 Y-7.083 C94.739 +G01 X+19.106 Y-7.066 Z-2.408 B16.689 C93.941 +G01 X+19.345 Y-7.056 Z-2.407 B16.684 C92.889 +G01 X+19.585 Y-7.046 B16.683 C91.836 +G01 X+19.773 Y-7.038 Z-2.408 B16.689 C90.989 +G01 X+20.007 Y-7.039 Z-2.407 B16.684 C89.961 +G01 X+20.241 Y-7.042 B16.683 C88.933 +G01 X+20.441 Y-7.043 Z-2.408 B16.689 C88.037 +G01 X+20.669 Y-7.057 Z-2.407 B16.684 C87.034 +G01 X+20.897 Y-7.07 B16.683 C86.03 +G01 X+21.107 Y-7.083 Z-2.408 B16.689 C85.085 +G01 X+21.551 Y-7.133 Z-2.407 B16.683 C83.126 +G01 X+21.77 Y-7.157 Z-2.408 B16.689 C82.133 +G01 X+22.201 Y-7.228 Z-2.407 B16.683 C80.223 +G01 X+22.429 Y-7.265 Z-2.408 B16.689 C79.181 +G01 X+22.845 Y-7.356 Z-2.407 B16.683 C77.32 +G01 X+23.082 Y-7.407 Z-2.408 B16.689 C76.23 +G01 X+23.482 Y-7.516 Z-2.407 B16.683 C74.417 +G01 X+23.726 Y-7.583 Z-2.408 B16.689 C73.28 +G01 X+24.109 Y-7.709 Z-2.407 B16.683 C71.513 +G01 X+24.36 Y-7.791 Z-2.408 B16.688 C70.332 +G01 X+24.727 Y-7.933 Z-2.407 B16.683 C68.61 +G01 X+24.983 Y-8.031 Z-2.408 B16.688 C67.383 +G01 X+25.332 Y-8.187 Z-2.407 B16.683 C65.707 +G01 X+25.592 Y-8.304 Z-2.408 B16.688 C64.434 +G01 X+25.923 Y-8.473 Z-2.407 B16.682 C62.804 +G01 X+26.187 Y-8.607 Z-2.408 B16.688 C61.485 +G01 X+26.499 Y-8.788 Z-2.407 B16.682 C59.9 +G01 X+26.765 Y-8.941 Z-2.408 B16.688 C58.536 +G01 X+27.059 Y-9.131 Z-2.407 B16.682 C56.997 +G01 X+27.326 Y-9.304 Z-2.408 B16.688 C55.587 +G01 X+27.596 Y-9.499 Z-2.407 C54.115 +G01 X+27.867 Y-9.695 Z-2.408 C52.642 +G01 X+28.127 Y-9.904 Z-2.407 B16.683 C51.169 +G01 X+28.387 Y-10.114 Z-2.408 B16.688 C49.695 +G01 X+28.636 Y-10.336 Z-2.407 B16.683 C48.219 +G01 X+28.884 Y-10.559 Z-2.408 B16.688 C46.744 +G01 X+29.102 Y-10.775 Z-2.407 B16.682 C45.384 +G01 X+29.359 Y-11.028 Z-2.408 B16.688 C43.792 +G01 X+29.558 Y-11.247 Z-2.407 B16.682 C42.481 +G01 X+29.808 Y-11.522 Z-2.408 B16.688 C40.84 +G01 X+29.989 Y-11.743 Z-2.407 B16.683 C39.578 +G01 X+30.231 Y-12.038 Z-2.408 B16.688 C37.888 +G01 X+30.395 Y-12.259 Z-2.407 B16.683 C36.675 +G01 X+30.628 Y-12.575 Z-2.408 B16.689 C34.936 +G01 X+30.812 Y-12.854 Z-2.407 B16.683 C33.46 +G01 X+30.996 Y-13.132 Z-2.408 B16.689 C31.984 +G01 X+31.144 Y-13.383 Z-2.407 B16.683 C30.701 +G01 X+31.291 Y-13.633 B16.686 C29.417 +G01 X+31.335 Y-13.708 Z-2.408 B16.689 C29.032 +G01 X+31.467 Y-13.96 Z-2.407 B16.683 C27.773 +G01 X+31.599 Y-14.214 B16.685 C26.514 +G01 X+31.644 Y-14.299 Z-2.408 B16.689 C26.08 +G01 X+31.761 Y-14.554 Z-2.407 B16.683 C24.845 +G01 X+31.877 Y-14.809 B16.685 C23.61 +G01 X+31.922 Y-14.906 Z-2.408 B16.689 C23.128 +G01 X+32.023 Y-15.162 Z-2.407 B16.683 C21.918 +G01 X+32.124 Y-15.417 B16.685 C20.707 +G01 X+32.168 Y-15.527 Z-2.408 B16.689 C20.176 +G01 X+32.255 Y-15.782 Z-2.407 B16.683 C18.99 +G01 X+32.341 Y-16.037 B16.685 C17.804 +G01 X+32.382 Y-16.159 Z-2.408 B16.689 C17.224 +G01 X+32.454 Y-16.413 Z-2.407 B16.683 C16.063 +G01 X+32.526 Y-16.667 B16.684 C14.901 +G01 X+32.564 Y-16.802 Z-2.408 B16.689 C14.273 +G01 X+32.621 Y-17.054 Z-2.407 B16.683 C13.135 +G01 X+32.678 Y-17.306 B16.684 C11.997 +G01 X+32.712 Y-17.453 Z-2.408 B16.689 C11.321 +G01 X+32.755 Y-17.702 Z-2.407 B16.684 C10.208 +G01 X+32.798 Y-17.951 C9.094 +G01 X+32.826 Y-18.11 Z-2.408 B16.689 C8.369 +G01 X+32.856 Y-18.356 Z-2.407 B16.684 C7.28 +G01 X+32.885 Y-18.602 C6.191 +G01 X+32.906 Y-18.773 Z-2.408 B16.689 C5.417 +G01 X+32.923 Y-19.015 Z-2.407 B16.684 C4.352 +G01 X+32.94 Y-19.257 C3.288 +G01 X+32.952 Y-19.439 Z-2.408 B16.689 C2.465 +G01 X+32.956 Y-19.676 Z-2.407 B16.684 C1.425 +G01 X+32.96 Y-19.913 B16.683 C0.384 +G01 X+32.964 Y-20.107 Z-2.408 B16.689 C359.513 +G01 X+32.956 Y-20.338 Z-2.407 B16.684 C358.497 +G01 X+32.948 Y-20.57 B16.683 C357.481 +G01 X+32.941 Y-20.774 Z-2.408 B16.689 C356.561 +G01 X+32.903 Y-21.225 Z-2.407 B16.683 C354.578 +G01 X+32.884 Y-21.439 Z-2.408 B16.689 C353.609 +G01 X+32.824 Y-21.877 Z-2.407 B16.683 C351.675 +G01 X+32.793 Y-22.1 Z-2.408 B16.689 C350.657 +G01 X+32.712 Y-22.524 Z-2.407 B16.683 C348.771 +G01 X+32.668 Y-22.756 Z-2.408 B16.689 C347.706 +G01 X+32.568 Y-23.164 Z-2.407 B16.683 C345.868 +G01 X+32.509 Y-23.405 Z-2.408 B16.689 C344.755 +G01 X+32.392 Y-23.797 Z-2.407 B16.683 C342.965 +G01 X+32.317 Y-24.044 Z-2.408 B16.689 C341.806 +G01 X+32.183 Y-24.419 Z-2.407 B16.683 C340.062 +G01 X+32.092 Y-24.674 Z-2.408 B16.688 C338.852 +G01 X+31.944 Y-25.031 Z-2.407 B16.683 C337.159 +G01 X+31.836 Y-25.289 Z-2.408 B16.688 C335.908 +G01 X+31.674 Y-25.629 Z-2.407 B16.683 C334.255 +G01 X+31.548 Y-25.892 Z-2.408 B16.688 C332.959 +G01 X+31.373 Y-26.213 Z-2.407 B16.682 C331.352 +G01 X+31.23 Y-26.478 Z-2.408 B16.688 C330.01 +G01 X+31.044 Y-26.781 Z-2.407 B16.682 C328.449 +G01 X+30.881 Y-27.048 Z-2.408 B16.688 C327.062 +G01 X+30.693 Y-27.323 Z-2.407 B16.683 C325.587 +G01 X+30.504 Y-27.598 Z-2.408 B16.688 C324.113 +G01 X+30.302 Y-27.864 Z-2.407 C322.642 +G01 X+30.099 Y-28.129 Z-2.408 C321.171 +G01 X+29.907 Y-28.356 Z-2.407 B16.683 C319.849 +G01 X+29.715 Y-28.582 B16.687 C318.526 +G01 X+29.667 Y-28.638 Z-2.408 B16.688 C318.219 +G01 X+29.439 Y-28.882 Z-2.407 B16.683 C316.744 +G01 X+29.21 Y-29.124 Z-2.408 B16.688 C315.268 +G01 X+28.992 Y-29.333 Z-2.407 B16.682 C313.933 +G01 X+28.728 Y-29.586 Z-2.408 B16.688 C312.316 +G01 X+28.508 Y-29.777 Z-2.407 B16.683 C311.03 +G01 X+28.223 Y-30.023 Z-2.408 B16.688 C309.364 +G01 X+28.002 Y-30.195 Z-2.407 B16.683 C308.126 +G01 X+27.696 Y-30.433 Z-2.408 B16.688 C306.412 +G01 X+27.475 Y-30.587 Z-2.407 B16.683 C305.223 +G01 X+27.148 Y-30.815 Z-2.408 B16.689 C303.46 +G01 X+26.865 Y-30.992 Z-2.407 B16.683 C301.984 +G01 X+26.582 Y-31.169 Z-2.408 B16.689 C300.508 +G01 X+26.33 Y-31.309 Z-2.407 B16.683 C299.237 +G01 X+26.078 Y-31.449 B16.685 C297.965 +G01 X+25.998 Y-31.493 Z-2.408 B16.689 C297.556 +G01 X+25.745 Y-31.618 Z-2.407 B16.683 C296.309 +G01 X+25.491 Y-31.742 B16.685 C295.062 +G01 X+25.399 Y-31.787 Z-2.408 B16.689 C294.604 +G01 X+25.144 Y-31.896 Z-2.407 B16.683 C293.382 +G01 X+24.889 Y-32.004 B16.685 C292.159 +G01 X+24.785 Y-32.049 Z-2.408 B16.689 C291.652 +G01 X+24.53 Y-32.143 Z-2.407 B16.683 C290.454 +G01 X+24.274 Y-32.236 B16.685 C289.255 +G01 X+24.158 Y-32.279 Z-2.408 B16.689 C288.7 +G01 X+23.904 Y-32.358 Z-2.407 B16.683 C287.527 +G01 X+23.649 Y-32.437 B16.684 C286.352 +G01 X+23.521 Y-32.477 Z-2.408 B16.689 C285.749 +G01 X+23.268 Y-32.542 Z-2.407 B16.683 C284.599 +G01 X+23.015 Y-32.606 B16.684 C283.449 +G01 X+22.874 Y-32.642 Z-2.408 B16.689 C282.797 +G01 X+22.623 Y-32.692 Z-2.407 B16.683 C281.671 +G01 X+22.372 Y-32.742 B16.684 C280.546 +G01 X+22.219 Y-32.773 Z-2.408 B16.689 C279.845 +G01 X+21.971 Y-32.81 Z-2.407 B16.684 C278.744 +G01 X+21.724 Y-32.846 C277.642 +G01 X+21.559 Y-32.87 Z-2.408 B16.689 C276.893 +G01 X+21.315 Y-32.894 Z-2.407 B16.684 C275.816 +G01 X+21.071 Y-32.917 C274.739 +G01 X+20.894 Y-32.933 Z-2.408 B16.689 C273.941 +G01 X+20.655 Y-32.944 Z-2.407 B16.684 C272.889 +G01 X+20.415 Y-32.954 B16.683 C271.836 +G01 X+20.227 Y-32.962 Z-2.408 B16.689 C270.989 +G01 X+19.993 Y-32.96 Z-2.407 B16.684 C269.961 +G01 X+19.759 Y-32.958 B16.683 C268.933 +G01 X+19.559 Y-32.957 Z-2.408 B16.689 C268.037 +G01 X+19.331 Y-32.943 Z-2.407 B16.684 C267.034 +G01 X+19.103 Y-32.929 B16.683 C266.03 +G01 X+18.893 Y-32.917 Z-2.408 B16.689 C265.085 +G01 X+18.449 Y-32.867 Z-2.407 B16.683 C263.126 +G01 X+18.23 Y-32.843 Z-2.408 B16.689 C262.133 +G01 X+17.799 Y-32.772 Z-2.407 B16.683 C260.223 +G01 X+17.571 Y-32.735 Z-2.408 B16.689 C259.181 +G01 X+17.155 Y-32.644 Z-2.407 B16.683 C257.32 +G01 X+16.918 Y-32.593 Z-2.408 B16.689 C256.23 +G01 X+16.518 Y-32.484 Z-2.407 B16.683 C254.417 +G01 X+16.274 Y-32.417 Z-2.408 B16.689 C253.28 +G01 X+15.891 Y-32.291 Z-2.407 B16.683 C251.513 +G01 X+15.64 Y-32.209 Z-2.408 B16.688 C250.332 +G01 X+15.273 Y-32.067 Z-2.407 B16.683 C248.61 +G01 X+15.017 Y-31.968 Z-2.408 B16.688 C247.383 +G01 X+14.712 Y-31.833 Z-2.407 B16.683 C245.908 +G01 X+14.408 Y-31.696 Z-2.408 B16.688 C244.434 +G01 X+14.077 Y-31.527 Z-2.407 B16.682 C242.804 +G01 X+13.777 Y-31.374 Z-2.408 B16.689 C241.352 +G01 X+13.521 Y-31.226 Z-2.407 B16.684 C240.021 +G01 X+13.266 Y-31.077 Z-2.408 B16.688 C238.689 +G01 X+13.217 Y-31.047 B16.687 C238.449 +G01 X+12.945 Y-30.872 Z-2.407 B16.683 C237.018 +G01 X+12.674 Y-30.696 Z-2.408 B16.688 C235.587 +G01 X+12.404 Y-30.501 Z-2.407 B16.683 C234.115 +G01 X+12.133 Y-30.305 Z-2.408 B16.688 C232.642 +G01 X+11.873 Y-30.096 Z-2.407 B16.683 C231.169 +G01 X+11.613 Y-29.886 Z-2.408 B16.688 C229.695 +G01 X+11.364 Y-29.664 Z-2.407 B16.683 C228.219 +G01 X+11.116 Y-29.441 Z-2.408 B16.688 C226.743 +G01 X+10.898 Y-29.225 Z-2.407 B16.682 C225.384 +G01 X+10.641 Y-28.971 Z-2.408 B16.688 C223.791 +G01 X+10.393 Y-28.699 Z-2.407 B16.684 C222.157 +G01 X+10.34 Y-28.629 Z-2.404 B16.673 C221.763 +G01 X+10.3 Y-28.551 Z-2.398 B16.644 C221.382 +G01 X+10.274 Y-28.468 Z-2.387 B16.596 C221.04 +G01 X+10.2 Y-28.128 Z-2.339 B16.387 C219.67 +G01 X+10.178 Y-28.053 Z-2.33 B16.347 C219.344 +G01 X+10.143 Y-27.982 Z-2.324 B16.323 C218.995 +G01 X+10.098 Y-27.917 Z-2.323 B16.316 C218.639 +G01 X+9.996 Y-27.792 Z-2.324 B16.319 C217.909 +G01 X+9.801 Y-27.529 Z-2.323 B16.314 C216.434 +G01 X+9.608 Y-27.266 Z-2.324 B16.319 C214.958 +G01 X+9.446 Y-27.023 Z-2.323 B16.314 C213.639 +G01 X+9.285 Y-26.779 B16.316 C212.32 +G01 X+9.247 Y-26.722 Z-2.324 B16.319 C212.007 +G01 X+9.101 Y-26.475 Z-2.323 B16.314 C210.712 +G01 X+8.956 Y-26.227 B16.316 C209.417 +G01 X+8.916 Y-26.159 Z-2.324 B16.319 C209.057 +G01 X+8.773 Y-25.888 Z-2.323 B16.314 C207.67 +G01 X+8.631 Y-25.615 B16.318 C206.283 +G01 X+8.613 Y-25.581 Z-2.324 B16.319 C206.106 +G01 X+8.487 Y-25.307 Z-2.323 B16.314 C204.743 +G01 X+8.362 Y-25.032 B16.318 C203.379 +G01 X+8.341 Y-24.987 Z-2.324 B16.319 C203.155 +G01 X+8.231 Y-24.712 Z-2.323 B16.314 C201.815 +G01 X+8.122 Y-24.436 B16.317 C200.476 +G01 X+8.1 Y-24.38 Z-2.324 B16.32 C200.204 +G01 X+8.006 Y-24.105 Z-2.323 B16.314 C198.888 +G01 X+7.913 Y-23.829 B16.317 C197.572 +G01 X+7.89 Y-23.762 Z-2.324 B16.32 C197.253 +G01 X+7.812 Y-23.487 Z-2.323 B16.314 C195.961 +G01 X+7.734 Y-23.211 B16.317 C194.669 +G01 X+7.712 Y-23.133 Z-2.324 B16.32 C194.302 +G01 X+7.65 Y-22.86 Z-2.323 B16.314 C193.034 +G01 X+7.588 Y-22.586 B16.317 C191.765 +G01 X+7.567 Y-22.497 Z-2.324 B16.32 C191.351 +G01 X+7.52 Y-22.225 Z-2.323 B16.314 C190.107 +G01 X+7.473 Y-21.954 B16.316 C188.861 +G01 X+7.455 Y-21.853 Z-2.324 B16.32 C188.401 +G01 X+7.423 Y-21.585 Z-2.323 B16.314 C187.18 +G01 X+7.39 Y-21.317 B16.316 C185.958 +G01 X+7.377 Y-21.205 Z-2.324 B16.32 C185.45 +G01 X+7.358 Y-20.941 Z-2.323 B16.314 C184.252 +G01 X+7.34 Y-20.676 B16.316 C183.054 +G01 X+7.331 Y-20.554 Z-2.324 B16.32 C182.499 +G01 X+7.326 Y-20.294 Z-2.323 B16.314 C181.325 +G01 X+7.322 Y-20.034 B16.316 C180.151 +G01 X+7.32 Y-19.901 Z-2.324 B16.32 C179.548 +G01 X+7.328 Y-19.646 Z-2.323 B16.314 C178.398 +G01 X+7.337 Y-19.392 B16.315 C177.247 +G01 X+7.341 Y-19.248 Z-2.324 B16.319 C176.597 +G01 X+7.362 Y-19 Z-2.323 B16.314 C175.471 +G01 X+7.384 Y-18.751 B16.315 C174.344 +G01 X+7.397 Y-18.598 Z-2.324 B16.319 C173.647 +G01 X+7.43 Y-18.356 Z-2.323 B16.314 C172.544 +G01 X+7.463 Y-18.114 B16.315 C171.44 +G01 X+7.486 Y-17.951 Z-2.324 B16.319 C170.696 +G01 X+7.53 Y-17.716 Z-2.323 B16.314 C169.616 +G01 X+7.575 Y-17.481 B16.315 C168.537 +G01 X+7.608 Y-17.309 Z-2.324 B16.319 C167.745 +G01 X+7.663 Y-17.082 Z-2.323 B16.314 C166.689 +G01 X+7.719 Y-16.855 B16.315 C165.634 +G01 X+7.763 Y-16.675 Z-2.324 B16.319 C164.794 +G01 X+7.828 Y-16.456 Z-2.323 B16.314 C163.762 +G01 X+7.894 Y-16.237 B16.315 C162.73 +G01 X+7.95 Y-16.049 Z-2.324 B16.319 C161.843 +G01 X+8.1 Y-15.629 Z-2.323 B16.314 C159.827 +G01 X+8.17 Y-15.434 Z-2.324 B16.319 C158.892 +G01 X+8.337 Y-15.032 Z-2.323 B16.314 C156.923 +G01 X+8.42 Y-14.831 Z-2.324 B16.319 C155.941 +G01 X+8.604 Y-14.447 Z-2.323 B16.314 C154.02 +G01 X+8.702 Y-14.242 Z-2.324 B16.319 C152.991 +G01 X+8.9 Y-13.877 Z-2.323 B16.314 C151.117 +G01 X+9.013 Y-13.668 Z-2.324 B16.319 C150.04 +G01 X+9.224 Y-13.323 Z-2.322 B16.314 C148.213 +G01 X+9.354 Y-13.111 Z-2.324 B16.318 C147.089 +G01 X+9.576 Y-12.786 Z-2.322 B16.314 C145.31 +G01 X+9.723 Y-12.572 Z-2.324 B16.318 C144.138 +G01 X+9.955 Y-12.267 Z-2.322 B16.314 C142.407 +G01 X+10.119 Y-12.053 Z-2.324 B16.318 C141.191 +G01 X+10.359 Y-11.768 Z-2.322 B16.314 C139.503 +G01 X+10.541 Y-11.554 Z-2.324 B16.318 C138.242 +G01 X+10.789 Y-11.291 Z-2.322 B16.314 C136.6 +G01 X+10.988 Y-11.079 Z-2.324 B16.318 C135.288 +G01 X+11.242 Y-10.835 Z-2.322 B16.314 C133.697 +G01 X+11.459 Y-10.627 Z-2.324 B16.319 C132.335 +G01 X+11.709 Y-10.41 Z-2.322 B16.313 C130.842 +G01 X+11.959 Y-10.195 Z-2.324 B16.319 C129.349 +G01 X+12.214 Y-9.996 Z-2.323 B16.314 C127.891 +G01 X+12.468 Y-9.798 Z-2.324 B16.319 C126.434 +G01 X+12.736 Y-9.611 Z-2.323 B16.314 C124.958 +G01 X+13.003 Y-9.424 Z-2.324 B16.319 C123.483 +G01 X+13.249 Y-9.27 Z-2.323 B16.314 C122.176 +G01 X+13.495 Y-9.117 B16.316 C120.868 +G01 X+13.557 Y-9.078 Z-2.324 B16.319 C120.532 +G01 X+13.828 Y-8.927 Z-2.323 B16.314 C119.133 +G01 X+14.098 Y-8.777 B16.318 C117.735 +G01 X+14.128 Y-8.761 Z-2.324 B16.319 C117.581 +G01 X+14.401 Y-8.626 Z-2.323 B16.314 C116.206 +G01 X+14.674 Y-8.493 B16.318 C114.831 +G01 X+14.714 Y-8.473 Z-2.324 B16.319 C114.63 +G01 X+14.989 Y-8.355 Z-2.323 B16.314 C113.279 +G01 X+15.264 Y-8.238 B16.317 C111.928 +G01 X+15.315 Y-8.216 Z-2.324 B16.32 C111.679 +G01 X+15.59 Y-8.115 Z-2.323 B16.314 C110.352 +G01 X+15.866 Y-8.013 B16.317 C109.024 +G01 X+15.928 Y-7.991 Z-2.324 B16.32 C108.729 +G01 X+16.203 Y-7.905 Z-2.323 B16.314 C107.425 +G01 X+16.479 Y-7.82 B16.317 C106.12 +G01 X+16.551 Y-7.797 Z-2.324 B16.32 C105.778 +G01 X+16.826 Y-7.727 Z-2.323 B16.314 C104.497 +G01 X+17.1 Y-7.657 B16.317 C103.217 +G01 X+17.184 Y-7.636 Z-2.324 B16.32 C102.827 +G01 X+17.457 Y-7.581 Z-2.323 B16.314 C101.57 +G01 X+17.729 Y-7.526 B16.316 C100.313 +G01 X+17.824 Y-7.507 Z-2.324 B16.32 C99.876 +G01 X+18.094 Y-7.467 Z-2.323 B16.314 C98.643 +G01 X+18.364 Y-7.427 B16.316 C97.41 +G01 X+18.47 Y-7.412 Z-2.324 B16.32 C96.925 +G01 X+18.737 Y-7.386 Z-2.323 B16.314 C95.716 +G01 X+19.003 Y-7.361 B16.316 C94.506 +G01 X+19.12 Y-7.35 Z-2.324 B16.32 C93.974 +G01 X+19.382 Y-7.338 Z-2.323 B16.314 C92.789 +G01 X+19.645 Y-7.327 B16.316 C91.603 +G01 X+19.773 Y-7.321 Z-2.324 B16.32 C91.024 +G01 X+20.03 Y-7.323 Z-2.323 B16.314 C89.862 +G01 X+20.287 Y-7.325 B16.315 C88.699 +G01 X+20.426 Y-7.326 Z-2.324 B16.319 C88.073 +G01 X+20.677 Y-7.341 Z-2.323 B16.314 C86.934 +G01 X+20.929 Y-7.356 B16.315 C85.796 +G01 X+21.077 Y-7.365 Z-2.324 B16.319 C85.122 +G01 X+21.323 Y-7.392 Z-2.323 B16.314 C84.007 +G01 X+21.568 Y-7.419 B16.315 C82.892 +G01 X+21.726 Y-7.437 Z-2.324 B16.319 C82.171 +G01 X+21.965 Y-7.476 Z-2.323 B16.314 C81.08 +G01 X+22.203 Y-7.515 B16.315 C79.989 +G01 X+22.371 Y-7.543 Z-2.324 B16.319 C79.22 +G01 X+22.602 Y-7.593 Z-2.323 B16.314 C78.153 +G01 X+22.833 Y-7.643 B16.315 C77.085 +G01 X+23.009 Y-7.681 Z-2.324 B16.319 C76.27 +G01 X+23.232 Y-7.742 Z-2.323 B16.314 C75.226 +G01 X+23.455 Y-7.802 B16.315 C74.182 +G01 X+23.639 Y-7.852 Z-2.324 B16.319 C73.319 +G01 X+23.854 Y-7.923 Z-2.323 B16.314 C72.299 +G01 X+24.068 Y-7.993 C71.278 +G01 X+24.26 Y-8.056 Z-2.324 B16.319 C70.368 +G01 X+24.671 Y-8.215 Z-2.323 B16.314 C68.375 +G01 X+24.869 Y-8.291 Z-2.324 B16.319 C67.417 +G01 X+25.262 Y-8.466 Z-2.323 B16.314 C65.472 +G01 X+25.465 Y-8.557 Z-2.324 B16.319 C64.466 +G01 X+25.839 Y-8.748 Z-2.323 B16.314 C62.568 +G01 X+26.047 Y-8.854 Z-2.324 B16.319 C61.515 +G01 X+26.402 Y-9.058 Z-2.323 B16.314 C59.665 +G01 X+26.613 Y-9.18 Z-2.324 B16.319 C58.565 +G01 X+26.948 Y-9.397 Z-2.322 B16.314 C56.762 +G01 X+27.161 Y-9.535 Z-2.324 B16.318 C55.614 +G01 X+27.476 Y-9.762 Z-2.322 B16.314 C53.858 +G01 X+27.69 Y-9.917 Z-2.324 B16.318 C52.663 +G01 X+27.985 Y-10.154 Z-2.322 B16.314 C50.955 +G01 X+28.199 Y-10.326 Z-2.324 B16.318 C49.719 +G01 X+28.473 Y-10.571 Z-2.322 B16.314 C48.052 +G01 X+28.686 Y-10.761 Z-2.324 B16.318 C46.765 +G01 X+28.94 Y-11.012 Z-2.322 B16.314 C45.148 +G01 X+29.15 Y-11.221 Z-2.324 B16.319 C43.811 +G01 X+29.37 Y-11.462 Z-2.323 B16.314 C42.335 +G01 X+29.59 Y-11.703 Z-2.324 B16.319 C40.86 +G01 X+29.798 Y-11.955 Z-2.323 B16.314 C39.384 +G01 X+30.004 Y-12.208 Z-2.324 B16.319 C37.909 +G01 X+30.199 Y-12.471 Z-2.323 B16.314 C36.434 +G01 X+30.392 Y-12.733 Z-2.324 B16.319 C34.958 +G01 X+30.554 Y-12.977 Z-2.323 B16.314 C33.639 +G01 X+30.715 Y-13.221 B16.316 C32.32 +G01 X+30.753 Y-13.278 Z-2.324 B16.319 C32.007 +G01 X+30.899 Y-13.525 Z-2.323 B16.314 C30.712 +G01 X+31.044 Y-13.773 B16.316 C29.417 +G01 X+31.084 Y-13.84 Z-2.324 B16.319 C29.057 +G01 X+31.227 Y-14.112 Z-2.323 B16.314 C27.67 +G01 X+31.369 Y-14.384 B16.318 C26.283 +G01 X+31.387 Y-14.419 Z-2.324 B16.319 C26.106 +G01 X+31.513 Y-14.693 Z-2.323 B16.314 C24.743 +G01 X+31.638 Y-14.968 B16.318 C23.379 +G01 X+31.659 Y-15.013 Z-2.324 B16.319 C23.155 +G01 X+31.769 Y-15.288 Z-2.323 B16.314 C21.815 +G01 X+31.878 Y-15.564 B16.317 C20.476 +G01 X+31.9 Y-15.62 Z-2.324 B16.32 C20.204 +G01 X+31.994 Y-15.895 Z-2.323 B16.314 C18.888 +G01 X+32.087 Y-16.171 B16.317 C17.572 +G01 X+32.11 Y-16.238 Z-2.324 B16.32 C17.253 +G01 X+32.188 Y-16.513 Z-2.323 B16.314 C15.961 +G01 X+32.266 Y-16.788 B16.317 C14.669 +G01 X+32.288 Y-16.866 Z-2.324 B16.32 C14.302 +G01 X+32.35 Y-17.14 Z-2.323 B16.314 C13.034 +G01 X+32.412 Y-17.414 B16.317 C11.765 +G01 X+32.433 Y-17.503 Z-2.324 B16.32 C11.351 +G01 X+32.48 Y-17.774 Z-2.323 B16.314 C10.107 +G01 X+32.527 Y-18.046 B16.316 C8.861 +G01 X+32.545 Y-18.146 Z-2.324 B16.32 C8.401 +G01 X+32.578 Y-18.415 Z-2.323 B16.314 C7.18 +G01 X+32.61 Y-18.683 B16.316 C5.958 +G01 X+32.623 Y-18.795 Z-2.324 B16.32 C5.45 +G01 X+32.642 Y-19.059 Z-2.323 B16.314 C4.252 +G01 X+32.66 Y-19.323 B16.316 C3.054 +G01 X+32.669 Y-19.446 Z-2.324 B16.32 C2.499 +G01 X+32.674 Y-19.706 Z-2.323 B16.314 C1.325 +G01 X+32.678 Y-19.966 B16.316 C0.151 +G01 X+32.68 Y-20.099 Z-2.324 B16.32 C359.548 +G01 X+32.672 Y-20.353 Z-2.323 B16.314 C358.398 +G01 X+32.663 Y-20.608 B16.315 C357.247 +G01 X+32.659 Y-20.752 Z-2.324 B16.319 C356.597 +G01 X+32.638 Y-21 Z-2.323 B16.314 C355.471 +G01 X+32.616 Y-21.249 B16.315 C354.344 +G01 X+32.603 Y-21.402 Z-2.324 B16.319 C353.647 +G01 X+32.57 Y-21.644 Z-2.323 B16.314 C352.544 +G01 X+32.537 Y-21.886 B16.315 C351.44 +G01 X+32.514 Y-22.049 Z-2.324 B16.319 C350.696 +G01 X+32.47 Y-22.284 Z-2.323 B16.314 C349.616 +G01 X+32.425 Y-22.518 B16.315 C348.537 +G01 X+32.392 Y-22.691 Z-2.324 B16.319 C347.745 +G01 X+32.337 Y-22.918 Z-2.323 B16.314 C346.689 +G01 X+32.281 Y-23.145 B16.315 C345.634 +G01 X+32.237 Y-23.325 Z-2.324 B16.319 C344.794 +G01 X+32.172 Y-23.544 Z-2.323 B16.314 C343.762 +G01 X+32.106 Y-23.763 B16.315 C342.73 +G01 X+32.05 Y-23.951 Z-2.324 B16.319 C341.843 +G01 X+31.9 Y-24.371 Z-2.323 B16.314 C339.827 +G01 X+31.83 Y-24.566 Z-2.324 B16.319 C338.892 +G01 X+31.663 Y-24.968 Z-2.323 B16.314 C336.923 +G01 X+31.58 Y-25.169 Z-2.324 B16.319 C335.941 +G01 X+31.396 Y-25.552 Z-2.323 B16.314 C334.02 +G01 X+31.298 Y-25.758 Z-2.324 B16.319 C332.991 +G01 X+31.1 Y-26.122 Z-2.323 B16.314 C331.117 +G01 X+30.987 Y-26.332 Z-2.324 B16.319 C330.04 +G01 X+30.776 Y-26.677 Z-2.322 B16.314 C328.213 +G01 X+30.646 Y-26.889 Z-2.324 B16.318 C327.089 +G01 X+30.424 Y-27.214 Z-2.322 B16.314 C325.31 +G01 X+30.277 Y-27.428 Z-2.324 B16.318 C324.138 +G01 X+30.045 Y-27.733 Z-2.322 B16.314 C322.407 +G01 X+29.881 Y-27.947 Z-2.324 B16.318 C321.191 +G01 X+29.641 Y-28.232 Z-2.322 B16.314 C319.503 +G01 X+29.459 Y-28.445 Z-2.324 B16.318 C318.242 +G01 X+29.211 Y-28.709 Z-2.322 B16.314 C316.6 +G01 X+29.012 Y-28.921 Z-2.324 B16.318 C315.288 +G01 X+28.758 Y-29.165 Z-2.322 B16.314 C313.697 +G01 X+28.541 Y-29.373 Z-2.324 B16.319 C312.335 +G01 X+28.291 Y-29.59 Z-2.322 B16.313 C310.842 +G01 X+28.041 Y-29.805 Z-2.324 B16.319 C309.349 +G01 X+27.786 Y-30.004 Z-2.323 B16.314 C307.891 +G01 X+27.532 Y-30.202 Z-2.324 B16.319 C306.434 +G01 X+27.264 Y-30.389 Z-2.323 B16.314 C304.958 +G01 X+26.997 Y-30.576 Z-2.324 B16.319 C303.483 +G01 X+26.751 Y-30.73 Z-2.323 B16.314 C302.176 +G01 X+26.505 Y-30.883 B16.316 C300.868 +G01 X+26.443 Y-30.922 Z-2.324 B16.319 C300.532 +G01 X+26.172 Y-31.073 Z-2.323 B16.314 C299.133 +G01 X+25.902 Y-31.223 B16.318 C297.735 +G01 X+25.872 Y-31.239 Z-2.324 B16.319 C297.581 +G01 X+25.599 Y-31.373 Z-2.323 B16.314 C296.206 +G01 X+25.326 Y-31.507 B16.318 C294.831 +G01 X+25.286 Y-31.527 Z-2.324 B16.319 C294.63 +G01 X+25.011 Y-31.645 Z-2.323 B16.314 C293.279 +G01 X+24.736 Y-31.762 B16.317 C291.928 +G01 X+24.685 Y-31.783 Z-2.324 B16.32 C291.679 +G01 X+24.41 Y-31.885 Z-2.323 B16.314 C290.352 +G01 X+24.134 Y-31.986 B16.317 C289.024 +G01 X+24.072 Y-32.009 Z-2.324 B16.32 C288.729 +G01 X+23.797 Y-32.095 Z-2.323 B16.314 C287.425 +G01 X+23.521 Y-32.18 B16.317 C286.12 +G01 X+23.449 Y-32.203 Z-2.324 B16.32 C285.778 +G01 X+23.174 Y-32.273 Z-2.323 B16.314 C284.497 +G01 X+22.9 Y-32.343 B16.317 C283.217 +G01 X+22.816 Y-32.364 Z-2.324 B16.32 C282.827 +G01 X+22.543 Y-32.419 Z-2.323 B16.314 C281.57 +G01 X+22.271 Y-32.474 B16.316 C280.313 +G01 X+22.176 Y-32.493 Z-2.324 B16.32 C279.876 +G01 X+21.906 Y-32.533 Z-2.323 B16.314 C278.643 +G01 X+21.636 Y-32.572 B16.316 C277.41 +G01 X+21.53 Y-32.588 Z-2.324 B16.32 C276.925 +G01 X+21.263 Y-32.614 Z-2.323 B16.314 C275.716 +G01 X+20.997 Y-32.639 B16.316 C274.506 +G01 X+20.88 Y-32.65 Z-2.324 B16.32 C273.974 +G01 X+20.618 Y-32.662 Z-2.323 B16.314 C272.789 +G01 X+20.355 Y-32.673 B16.316 C271.603 +G01 X+20.227 Y-32.679 Z-2.324 B16.32 C271.024 +G01 X+19.97 Y-32.677 Z-2.323 B16.314 C269.862 +G01 X+19.713 Y-32.675 B16.315 C268.699 +G01 X+19.574 Y-32.674 Z-2.324 B16.319 C268.073 +G01 X+19.323 Y-32.659 Z-2.323 B16.314 C266.934 +G01 X+19.071 Y-32.644 B16.315 C265.796 +G01 X+18.923 Y-32.635 Z-2.324 B16.319 C265.122 +G01 X+18.677 Y-32.608 Z-2.323 B16.314 C264.007 +G01 X+18.432 Y-32.58 B16.315 C262.892 +G01 X+18.274 Y-32.563 Z-2.324 B16.319 C262.171 +G01 X+18.035 Y-32.524 Z-2.323 B16.314 C261.08 +G01 X+17.797 Y-32.485 B16.315 C259.989 +G01 X+17.629 Y-32.457 Z-2.324 B16.319 C259.22 +G01 X+17.398 Y-32.407 Z-2.323 B16.314 C258.153 +G01 X+17.167 Y-32.357 B16.315 C257.085 +G01 X+16.991 Y-32.319 Z-2.324 B16.319 C256.27 +G01 X+16.768 Y-32.258 Z-2.323 B16.314 C255.226 +G01 X+16.545 Y-32.197 B16.315 C254.182 +G01 X+16.361 Y-32.147 Z-2.324 B16.319 C253.319 +G01 X+16.146 Y-32.077 Z-2.323 B16.314 C252.299 +G01 X+15.932 Y-32.007 C251.278 +G01 X+15.74 Y-31.944 Z-2.324 B16.319 C250.368 +G01 X+15.329 Y-31.785 Z-2.323 B16.314 C248.375 +G01 X+15.131 Y-31.709 Z-2.324 B16.319 C247.417 +G01 X+14.833 Y-31.576 Z-2.323 B16.314 C245.942 +G01 X+14.535 Y-31.443 Z-2.324 B16.319 C244.466 +G01 X+14.161 Y-31.252 Z-2.323 B16.314 C242.568 +G01 X+13.913 Y-31.125 Z-2.324 B16.319 C241.352 +G01 X+13.65 Y-30.973 Z-2.323 B16.314 C239.959 +G01 X+13.388 Y-30.82 Z-2.324 B16.319 C238.567 +G01 X+13.052 Y-30.603 Z-2.322 B16.314 C236.762 +G01 X+12.839 Y-30.465 Z-2.324 B16.318 C235.614 +G01 X+12.524 Y-30.238 Z-2.322 B16.314 C233.858 +G01 X+12.31 Y-30.083 Z-2.324 B16.318 C232.663 +G01 X+12.015 Y-29.846 Z-2.322 B16.314 C230.955 +G01 X+11.801 Y-29.673 Z-2.324 B16.318 C229.719 +G01 X+11.527 Y-29.429 Z-2.322 B16.314 C228.052 +G01 X+11.314 Y-29.239 Z-2.324 B16.318 C226.765 +G01 X+11.06 Y-28.988 Z-2.322 B16.314 C225.148 +G01 X+10.85 Y-28.779 Z-2.324 B16.319 C223.811 +G01 X+10.603 Y-28.508 Z-2.322 B16.314 C222.155 +G01 X+10.55 Y-28.439 Z-2.32 B16.304 C221.76 +G01 X+10.51 Y-28.361 Z-2.314 B16.275 C221.377 +G01 X+10.484 Y-28.278 Z-2.304 B16.227 C221.023 +G01 X+10.41 Y-27.937 Z-2.256 B16.011 C219.608 +G01 X+10.387 Y-27.862 Z-2.247 B15.971 C219.267 +G01 X+10.349 Y-27.785 Z-2.242 B15.947 C218.869 +G01 X+10.307 Y-27.726 Z-2.241 B15.94 C218.545 +G01 X+10.222 Y-27.622 B15.943 C217.933 +G01 X+9.97 Y-27.281 Z-2.24 B15.939 C215.956 +G01 X+9.843 Y-27.109 Z-2.241 B15.943 C214.98 +G01 X+9.614 Y-26.764 Z-2.24 B15.939 C213.053 +G01 X+9.49 Y-26.576 Z-2.241 B15.943 C212.027 +G01 X+9.285 Y-26.229 Z-2.24 B15.939 C210.15 +G01 X+9.166 Y-26.027 Z-2.241 B15.943 C209.074 +G01 X+8.983 Y-25.678 Z-2.24 B15.939 C207.246 +G01 X+8.87 Y-25.461 Z-2.241 B15.943 C206.121 +G01 X+8.71 Y-25.113 Z-2.24 B15.939 C204.343 +G01 X+8.604 Y-24.881 Z-2.241 B15.943 C203.168 +G01 X+8.504 Y-24.632 Z-2.24 B15.938 C201.937 +G01 X+8.405 Y-24.383 Z-2.241 B15.94 C200.707 +G01 X+8.367 Y-24.287 B15.944 C200.214 +G01 X+8.283 Y-24.039 Z-2.24 B15.938 C199.009 +G01 X+8.198 Y-23.79 Z-2.241 B15.94 C197.804 +G01 X+8.162 Y-23.683 B15.944 C197.261 +G01 X+8.092 Y-23.435 Z-2.24 B15.938 C196.081 +G01 X+8.022 Y-23.187 Z-2.241 B15.939 C194.901 +G01 X+7.988 Y-23.069 B15.944 C194.308 +G01 X+7.932 Y-22.823 Z-2.24 B15.938 C193.153 +G01 X+7.876 Y-22.576 Z-2.241 B15.939 C191.997 +G01 X+7.843 Y-22.43 B15.943 C191.284 +G01 X+7.79 Y-22.124 Z-2.24 B15.939 C189.846 +G01 X+7.736 Y-21.817 Z-2.241 B15.944 C188.408 +G01 X+7.707 Y-21.577 Z-2.24 B15.938 C187.3 +G01 X+7.678 Y-21.337 Z-2.241 B15.939 C186.191 +G01 X+7.659 Y-21.184 B15.944 C185.458 +G01 X+7.636 Y-20.865 Z-2.24 B15.939 C183.983 +G01 X+7.614 Y-20.547 Z-2.241 B15.944 C182.509 +G01 X+7.608 Y-20.228 Z-2.24 C181.034 +G01 X+7.603 Y-19.908 Z-2.241 C179.559 +G01 X+7.613 Y-19.589 Z-2.24 B15.939 C178.084 +G01 X+7.624 Y-19.27 Z-2.241 B15.944 C176.609 +G01 X+7.649 Y-18.975 Z-2.24 B15.939 C175.237 +G01 X+7.674 Y-18.679 Z-2.241 B15.943 C173.864 +G01 X+7.678 Y-18.634 B15.944 C173.659 +G01 X+7.717 Y-18.345 Z-2.24 B15.939 C172.31 +G01 X+7.757 Y-18.057 Z-2.241 B15.942 C170.96 +G01 X+7.764 Y-18.002 B15.944 C170.709 +G01 X+7.818 Y-17.72 Z-2.24 B15.939 C169.383 +G01 X+7.871 Y-17.439 Z-2.241 B15.942 C168.057 +G01 X+7.884 Y-17.374 B15.944 C167.76 +G01 X+7.95 Y-17.101 Z-2.24 B15.939 C166.457 +G01 X+8.017 Y-16.828 Z-2.241 B15.942 C165.153 +G01 X+8.035 Y-16.754 B15.944 C164.81 +G01 X+8.126 Y-16.448 Z-2.24 B15.938 C163.335 +G01 X+8.218 Y-16.143 Z-2.241 B15.943 C161.86 +G01 X+8.349 Y-15.774 Z-2.24 B15.938 C160.062 +G01 X+8.432 Y-15.541 Z-2.241 B15.943 C158.91 +G01 X+8.578 Y-15.189 Z-2.24 B15.938 C157.158 +G01 X+8.677 Y-14.952 Z-2.241 B15.943 C155.961 +G01 X+8.837 Y-14.617 Z-2.24 B15.938 C154.255 +G01 X+8.952 Y-14.375 Z-2.241 B15.943 C153.011 +G01 X+9.124 Y-14.058 Z-2.24 B15.937 C151.352 +G01 X+9.256 Y-13.814 Z-2.241 B15.943 C150.061 +G01 X+9.439 Y-13.515 Z-2.24 B15.937 C148.449 +G01 X+9.589 Y-13.269 Z-2.241 B15.943 C147.111 +G01 X+9.781 Y-12.988 Z-2.24 B15.937 C145.546 +G01 X+9.949 Y-12.742 Z-2.241 B15.943 C144.162 +G01 X+10.142 Y-12.488 Z-2.24 C142.687 +G01 X+10.336 Y-12.234 Z-2.241 C141.212 +G01 X+10.542 Y-11.991 Z-2.24 B15.938 C139.741 +G01 X+10.748 Y-11.747 Z-2.241 B15.943 C138.269 +G01 X+10.967 Y-11.514 Z-2.24 B15.938 C136.793 +G01 X+11.186 Y-11.282 Z-2.241 B15.943 C135.316 +G01 X+11.416 Y-11.06 Z-2.24 C133.839 +G01 X+11.646 Y-10.84 Z-2.241 C132.363 +G01 X+11.978 Y-10.552 Z-2.24 B15.939 C130.312 +G01 X+12.129 Y-10.422 Z-2.241 B15.943 C129.41 +G01 X+12.467 Y-10.158 Z-2.24 B15.939 C127.408 +G01 X+12.632 Y-10.029 Z-2.241 B15.943 C126.457 +G01 X+12.975 Y-9.789 Z-2.24 B15.939 C124.505 +G01 X+13.155 Y-9.663 Z-2.241 B15.943 C123.504 +G01 X+13.502 Y-9.446 Z-2.24 B15.939 C121.601 +G01 X+13.696 Y-9.324 Z-2.241 B15.943 C120.55 +G01 X+14.045 Y-9.131 Z-2.24 B15.939 C118.698 +G01 X+14.254 Y-9.014 Z-2.241 B15.943 C117.597 +G01 X+14.603 Y-8.843 Z-2.24 B15.939 C115.795 +G01 X+14.827 Y-8.733 Z-2.241 B15.943 C114.644 +G01 X+15.076 Y-8.626 Z-2.24 B15.938 C113.402 +G01 X+15.325 Y-8.52 Z-2.241 B15.94 C112.159 +G01 X+15.414 Y-8.482 B15.944 C111.691 +G01 X+15.663 Y-8.39 Z-2.24 B15.938 C110.473 +G01 X+15.912 Y-8.298 Z-2.241 B15.94 C109.255 +G01 X+16.013 Y-8.261 B15.944 C108.738 +G01 X+16.262 Y-8.183 Z-2.24 B15.938 C107.545 +G01 X+16.51 Y-8.106 Z-2.241 B15.94 C106.352 +G01 X+16.623 Y-8.071 B15.944 C105.785 +G01 X+16.87 Y-8.008 Z-2.24 B15.938 C104.617 +G01 X+17.117 Y-7.945 Z-2.241 B15.939 C103.449 +G01 X+17.263 Y-7.909 B15.943 C102.736 +G01 X+17.565 Y-7.848 Z-2.24 B15.939 C101.309 +G01 X+17.867 Y-7.787 Z-2.241 B15.944 C99.883 +G01 X+18.109 Y-7.751 Z-2.24 B15.938 C98.763 +G01 X+18.352 Y-7.715 Z-2.241 B15.939 C97.643 +G01 X+18.5 Y-7.693 B15.944 C96.93 +G01 X+18.817 Y-7.663 Z-2.24 B15.939 C95.457 +G01 X+19.134 Y-7.633 Z-2.241 B15.944 C93.983 +G01 X+19.453 Y-7.618 Z-2.24 C92.509 +G01 X+19.772 Y-7.604 Z-2.241 C91.034 +G01 X+20.091 Y-7.606 Z-2.24 C89.559 +G01 X+20.411 Y-7.609 Z-2.241 C88.084 +G01 X+20.709 Y-7.626 Z-2.24 B15.939 C86.7 +G01 X+21.008 Y-7.644 Z-2.241 B15.943 C85.316 +G01 X+21.048 Y-7.647 B15.944 C85.134 +G01 X+21.34 Y-7.679 Z-2.24 B15.939 C83.773 +G01 X+21.632 Y-7.711 Z-2.241 B15.942 C82.412 +G01 X+21.683 Y-7.717 B15.944 C82.184 +G01 X+21.968 Y-7.763 Z-2.24 B15.939 C80.847 +G01 X+22.253 Y-7.81 Z-2.241 B15.942 C79.509 +G01 X+22.313 Y-7.82 B15.944 C79.235 +G01 X+22.59 Y-7.88 Z-2.24 B15.939 C77.92 +G01 X+22.867 Y-7.94 Z-2.241 B15.942 C76.605 +G01 X+22.937 Y-7.955 B15.944 C76.285 +G01 X+23.206 Y-8.028 Z-2.24 B15.939 C74.993 +G01 X+23.474 Y-8.101 Z-2.241 B15.942 C73.702 +G01 X+23.553 Y-8.122 B15.944 C73.335 +G01 X+23.856 Y-8.221 Z-2.24 B15.938 C71.86 +G01 X+24.159 Y-8.321 Z-2.241 B15.943 C70.385 +G01 X+24.52 Y-8.46 Z-2.24 B15.938 C68.61 +G01 X+24.755 Y-8.55 Z-2.241 B15.943 C67.436 +G01 X+25.099 Y-8.704 Z-2.24 B15.938 C65.707 +G01 X+25.338 Y-8.81 Z-2.241 B15.943 C64.486 +G01 X+25.664 Y-8.976 Z-2.24 B15.937 C62.804 +G01 X+25.907 Y-9.1 Z-2.241 B15.943 C61.536 +G01 X+26.215 Y-9.278 Z-2.24 B15.937 C59.901 +G01 X+26.46 Y-9.419 Z-2.241 B15.943 C58.586 +G01 X+26.751 Y-9.606 Z-2.24 B15.937 C56.997 +G01 X+26.997 Y-9.765 Z-2.241 B15.943 C55.636 +G01 X+27.256 Y-9.952 Z-2.24 C54.161 +G01 X+27.514 Y-10.139 Z-2.241 C52.687 +G01 X+27.763 Y-10.339 Z-2.24 B15.938 C51.213 +G01 X+28.012 Y-10.539 Z-2.241 B15.943 C49.739 +G01 X+28.25 Y-10.751 Z-2.24 B15.938 C48.266 +G01 X+28.488 Y-10.964 Z-2.241 B15.943 C46.793 +G01 X+28.715 Y-11.188 Z-2.24 B15.938 C45.316 +G01 X+28.942 Y-11.413 Z-2.241 B15.943 C43.839 +G01 X+29.158 Y-11.649 Z-2.24 C42.363 +G01 X+29.372 Y-11.885 Z-2.241 C40.886 +G01 X+29.648 Y-12.22 Z-2.24 B15.939 C38.86 +G01 X+29.778 Y-12.378 Z-2.241 B15.943 C37.933 +G01 X+30.03 Y-12.719 Z-2.24 B15.939 C35.956 +G01 X+30.157 Y-12.891 Z-2.241 B15.943 C34.98 +G01 X+30.386 Y-13.236 Z-2.24 B15.939 C33.053 +G01 X+30.51 Y-13.424 Z-2.241 B15.943 C32.027 +G01 X+30.715 Y-13.771 Z-2.24 B15.939 C30.15 +G01 X+30.834 Y-13.973 Z-2.241 B15.943 C29.074 +G01 X+31.017 Y-14.322 Z-2.24 B15.939 C27.246 +G01 X+31.13 Y-14.539 Z-2.241 B15.943 C26.121 +G01 X+31.29 Y-14.887 Z-2.24 B15.939 C24.343 +G01 X+31.396 Y-15.119 Z-2.241 B15.943 C23.168 +G01 X+31.496 Y-15.368 Z-2.24 B15.938 C21.937 +G01 X+31.595 Y-15.617 Z-2.241 B15.94 C20.707 +G01 X+31.633 Y-15.712 B15.944 C20.214 +G01 X+31.717 Y-15.961 Z-2.24 B15.938 C19.009 +G01 X+31.802 Y-16.21 Z-2.241 B15.94 C17.804 +G01 X+31.838 Y-16.317 B15.944 C17.261 +G01 X+31.908 Y-16.565 Z-2.24 B15.938 C16.081 +G01 X+31.978 Y-16.813 Z-2.241 B15.939 C14.901 +G01 X+32.012 Y-16.931 B15.944 C14.308 +G01 X+32.068 Y-17.177 Z-2.24 B15.938 C13.153 +G01 X+32.124 Y-17.423 Z-2.241 B15.939 C11.997 +G01 X+32.157 Y-17.57 B15.943 C11.284 +G01 X+32.21 Y-17.876 Z-2.24 B15.939 C9.846 +G01 X+32.264 Y-18.182 Z-2.241 B15.944 C8.408 +G01 X+32.293 Y-18.423 Z-2.24 B15.938 C7.3 +G01 X+32.322 Y-18.663 Z-2.241 B15.939 C6.191 +G01 X+32.341 Y-18.816 B15.944 C5.458 +G01 X+32.364 Y-19.135 Z-2.24 B15.939 C3.983 +G01 X+32.386 Y-19.453 Z-2.241 B15.944 C2.509 +G01 X+32.392 Y-19.772 Z-2.24 C1.034 +G01 X+32.397 Y-20.091 Z-2.241 C359.559 +G01 X+32.387 Y-20.41 Z-2.24 B15.939 C358.084 +G01 X+32.376 Y-20.729 Z-2.241 B15.944 C356.609 +G01 X+32.351 Y-21.025 Z-2.24 B15.939 C355.237 +G01 X+32.326 Y-21.32 Z-2.241 B15.943 C353.864 +G01 X+32.322 Y-21.366 B15.944 C353.659 +G01 X+32.283 Y-21.654 Z-2.24 B15.939 C352.31 +G01 X+32.243 Y-21.943 Z-2.241 B15.942 C350.96 +G01 X+32.236 Y-21.998 B15.944 C350.709 +G01 X+32.182 Y-22.28 Z-2.24 B15.939 C349.383 +G01 X+32.129 Y-22.561 Z-2.241 B15.942 C348.057 +G01 X+32.116 Y-22.625 B15.944 C347.76 +G01 X+32.05 Y-22.899 Z-2.24 B15.939 C346.457 +G01 X+31.983 Y-23.172 Z-2.241 B15.942 C345.153 +G01 X+31.965 Y-23.246 B15.944 C344.81 +G01 X+31.874 Y-23.552 Z-2.24 B15.938 C343.335 +G01 X+31.782 Y-23.857 Z-2.241 B15.943 C341.86 +G01 X+31.651 Y-24.226 Z-2.24 B15.938 C340.062 +G01 X+31.568 Y-24.459 Z-2.241 B15.943 C338.91 +G01 X+31.422 Y-24.811 Z-2.24 B15.938 C337.158 +G01 X+31.323 Y-25.048 Z-2.241 B15.943 C335.961 +G01 X+31.163 Y-25.383 Z-2.24 B15.938 C334.255 +G01 X+31.048 Y-25.625 Z-2.241 B15.943 C333.011 +G01 X+30.876 Y-25.942 Z-2.24 B15.937 C331.352 +G01 X+30.744 Y-26.186 Z-2.241 B15.943 C330.061 +G01 X+30.561 Y-26.485 Z-2.24 B15.937 C328.449 +G01 X+30.411 Y-26.731 Z-2.241 B15.943 C327.111 +G01 X+30.219 Y-27.012 Z-2.24 B15.937 C325.546 +G01 X+30.051 Y-27.258 Z-2.241 B15.943 C324.162 +G01 X+29.858 Y-27.512 Z-2.24 C322.687 +G01 X+29.664 Y-27.766 Z-2.241 C321.212 +G01 X+29.458 Y-28.009 Z-2.24 B15.938 C319.741 +G01 X+29.252 Y-28.253 Z-2.241 B15.943 C318.269 +G01 X+29.033 Y-28.486 Z-2.24 B15.938 C316.793 +G01 X+28.814 Y-28.718 Z-2.241 B15.943 C315.316 +G01 X+28.584 Y-28.939 Z-2.24 C313.839 +G01 X+28.354 Y-29.16 Z-2.241 C312.363 +G01 X+28.022 Y-29.448 Z-2.24 B15.939 C310.312 +G01 X+27.871 Y-29.578 Z-2.241 B15.943 C309.41 +G01 X+27.533 Y-29.842 Z-2.24 B15.939 C307.408 +G01 X+27.368 Y-29.971 Z-2.241 B15.943 C306.457 +G01 X+27.025 Y-30.211 Z-2.24 B15.939 C304.505 +G01 X+26.845 Y-30.337 Z-2.241 B15.943 C303.504 +G01 X+26.498 Y-30.554 Z-2.24 B15.939 C301.601 +G01 X+26.304 Y-30.675 Z-2.241 B15.943 C300.55 +G01 X+25.955 Y-30.869 Z-2.24 B15.939 C298.698 +G01 X+25.746 Y-30.986 Z-2.241 B15.943 C297.597 +G01 X+25.397 Y-31.157 Z-2.24 B15.939 C295.795 +G01 X+25.173 Y-31.267 Z-2.241 B15.943 C294.644 +G01 X+24.924 Y-31.374 Z-2.24 B15.938 C293.402 +G01 X+24.675 Y-31.48 Z-2.241 B15.94 C292.159 +G01 X+24.586 Y-31.518 B15.944 C291.691 +G01 X+24.337 Y-31.61 Z-2.24 B15.938 C290.473 +G01 X+24.088 Y-31.702 Z-2.241 B15.94 C289.255 +G01 X+23.987 Y-31.739 B15.944 C288.738 +G01 X+23.738 Y-31.817 Z-2.24 B15.938 C287.545 +G01 X+23.49 Y-31.894 Z-2.241 B15.94 C286.352 +G01 X+23.377 Y-31.929 B15.944 C285.785 +G01 X+23.13 Y-31.992 Z-2.24 B15.938 C284.617 +G01 X+22.883 Y-32.055 Z-2.241 B15.939 C283.449 +G01 X+22.737 Y-32.091 B15.943 C282.736 +G01 X+22.435 Y-32.152 Z-2.24 B15.939 C281.309 +G01 X+22.133 Y-32.213 Z-2.241 B15.944 C279.883 +G01 X+21.891 Y-32.249 Z-2.24 B15.938 C278.763 +G01 X+21.648 Y-32.285 Z-2.241 B15.939 C277.643 +G01 X+21.5 Y-32.306 B15.944 C276.93 +G01 X+21.183 Y-32.337 Z-2.24 B15.939 C275.457 +G01 X+20.866 Y-32.367 Z-2.241 B15.944 C273.983 +G01 X+20.547 Y-32.382 Z-2.24 C272.509 +G01 X+20.228 Y-32.395 Z-2.241 C271.034 +G01 X+19.909 Y-32.393 Z-2.24 C269.559 +G01 X+19.589 Y-32.391 Z-2.241 C268.084 +G01 X+19.291 Y-32.373 Z-2.24 B15.939 C266.7 +G01 X+18.992 Y-32.356 Z-2.241 B15.943 C265.316 +G01 X+18.952 Y-32.353 B15.944 C265.134 +G01 X+18.66 Y-32.321 Z-2.24 B15.939 C263.773 +G01 X+18.368 Y-32.288 Z-2.241 B15.942 C262.412 +G01 X+18.317 Y-32.283 B15.944 C262.184 +G01 X+18.032 Y-32.237 Z-2.24 B15.939 C260.847 +G01 X+17.747 Y-32.19 Z-2.241 B15.942 C259.509 +G01 X+17.687 Y-32.18 B15.944 C259.235 +G01 X+17.41 Y-32.12 Z-2.24 B15.939 C257.92 +G01 X+17.133 Y-32.06 Z-2.241 B15.942 C256.605 +G01 X+17.063 Y-32.045 B15.944 C256.285 +G01 X+16.794 Y-31.972 Z-2.24 B15.939 C254.993 +G01 X+16.526 Y-31.899 Z-2.241 B15.942 C253.702 +G01 X+16.447 Y-31.878 B15.944 C253.335 +G01 X+16.144 Y-31.779 Z-2.24 B15.938 C251.86 +G01 X+15.841 Y-31.679 Z-2.241 B15.943 C250.385 +G01 X+15.48 Y-31.54 Z-2.24 B15.938 C248.61 +G01 X+15.245 Y-31.449 Z-2.241 B15.943 C247.436 +G01 X+14.953 Y-31.32 Z-2.24 B15.938 C245.961 +G01 X+14.662 Y-31.189 Z-2.241 B15.943 C244.486 +G01 X+14.336 Y-31.023 Z-2.24 B15.937 C242.804 +G01 X+14.048 Y-30.877 Z-2.242 B15.944 C241.352 +G01 X+13.794 Y-30.729 Z-2.241 B15.939 C239.971 +G01 X+13.54 Y-30.582 Z-2.242 B15.943 C238.589 +G01 X+13.249 Y-30.394 Z-2.24 B15.937 C236.997 +G01 X+13.003 Y-30.235 Z-2.241 B15.943 C235.636 +G01 X+12.744 Y-30.048 Z-2.24 C234.162 +G01 X+12.486 Y-29.861 Z-2.241 C232.687 +G01 X+12.237 Y-29.661 Z-2.24 B15.938 C231.213 +G01 X+11.988 Y-29.461 Z-2.241 B15.943 C229.739 +G01 X+11.75 Y-29.249 Z-2.24 B15.938 C228.266 +G01 X+11.512 Y-29.036 Z-2.241 B15.943 C226.793 +G01 X+11.285 Y-28.812 Z-2.24 C225.316 +G01 X+11.058 Y-28.587 Z-2.241 C223.839 +G01 X+10.813 Y-28.318 Z-2.24 B15.939 C222.148 +G01 X+10.76 Y-28.249 Z-2.238 B15.929 C221.735 +G01 X+10.72 Y-28.171 Z-2.232 B15.9 C221.351 +G01 X+10.694 Y-28.088 Z-2.222 B15.852 C220.995 +G01 X+10.62 Y-27.746 Z-2.176 B15.636 C219.554 +G01 X+10.597 Y-27.671 Z-2.167 B15.597 C219.201 +G01 X+10.563 Y-27.599 Z-2.162 B15.573 C218.829 +G01 X+10.517 Y-27.535 Z-2.161 B15.566 C218.45 +G01 X+10.449 Y-27.452 B15.568 C217.964 +G01 X+10.277 Y-27.219 Z-2.16 B15.563 C216.593 +G01 X+10.105 Y-26.986 Z-2.161 B15.566 C215.223 +G01 X+10.078 Y-26.95 B15.568 C215.012 +G01 X+9.921 Y-26.713 Z-2.16 B15.563 C213.666 +G01 X+9.764 Y-26.476 Z-2.161 B15.566 C212.32 +G01 X+9.734 Y-26.43 B15.568 C212.06 +G01 X+9.591 Y-26.19 Z-2.16 B15.563 C210.738 +G01 X+9.449 Y-25.949 Z-2.161 B15.566 C209.416 +G01 X+9.416 Y-25.893 B15.568 C209.108 +G01 X+9.289 Y-25.65 Z-2.16 B15.563 C207.811 +G01 X+9.162 Y-25.407 Z-2.161 B15.565 C206.513 +G01 X+9.127 Y-25.341 B15.568 C206.156 +G01 X+9.014 Y-25.096 Z-2.16 B15.563 C204.883 +G01 X+8.902 Y-24.851 Z-2.161 B15.565 C203.61 +G01 X+8.866 Y-24.774 B15.568 C203.204 +G01 X+8.768 Y-24.528 Z-2.16 B15.563 C201.956 +G01 X+8.671 Y-24.283 Z-2.161 B15.565 C200.707 +G01 X+8.636 Y-24.194 B15.569 C200.252 +G01 X+8.552 Y-23.949 Z-2.16 B15.563 C199.028 +G01 X+8.468 Y-23.703 Z-2.161 B15.565 C197.804 +G01 X+8.435 Y-23.604 B15.569 C197.3 +G01 X+8.365 Y-23.359 Z-2.16 B15.563 C196.1 +G01 X+8.296 Y-23.114 B15.565 C194.901 +G01 X+8.264 Y-23.004 Z-2.161 B15.569 C194.348 +G01 X+8.209 Y-22.761 Z-2.16 B15.563 C193.173 +G01 X+8.153 Y-22.517 B15.564 C191.997 +G01 X+8.125 Y-22.396 Z-2.161 B15.569 C191.396 +G01 X+8.083 Y-22.155 Z-2.16 B15.563 C190.245 +G01 X+8.041 Y-21.914 B15.564 C189.094 +G01 X+8.018 Y-21.781 Z-2.161 B15.569 C188.444 +G01 X+7.989 Y-21.544 Z-2.16 B15.563 C187.317 +G01 X+7.96 Y-21.306 B15.564 C186.191 +G01 X+7.942 Y-21.162 Z-2.161 B15.569 C185.492 +G01 X+7.925 Y-20.928 Z-2.16 B15.563 C184.39 +G01 X+7.909 Y-20.694 B15.564 C183.288 +G01 X+7.898 Y-20.54 Z-2.161 B15.569 C182.54 +G01 X+7.894 Y-20.31 Z-2.16 B15.564 C181.462 +G01 X+7.89 Y-20.081 C180.384 +G01 X+7.886 Y-19.916 Z-2.161 B15.569 C179.588 +G01 X+7.901 Y-19.468 Z-2.16 B15.563 C177.481 +G01 X+7.907 Y-19.292 Z-2.161 B15.569 C176.636 +G01 X+7.944 Y-18.856 Z-2.16 B15.563 C174.578 +G01 X+7.959 Y-18.671 Z-2.161 B15.569 C173.684 +G01 X+8.017 Y-18.246 Z-2.16 B15.563 C171.675 +G01 X+8.044 Y-18.053 Z-2.161 B15.568 C170.732 +G01 X+8.122 Y-17.642 Z-2.16 B15.563 C168.771 +G01 X+8.16 Y-17.44 Z-2.161 B15.568 C167.78 +G01 X+8.256 Y-17.043 Z-2.16 B15.563 C165.868 +G01 X+8.307 Y-16.834 Z-2.161 B15.568 C164.828 +G01 X+8.421 Y-16.452 Z-2.16 B15.563 C162.965 +G01 X+8.486 Y-16.236 Z-2.161 B15.568 C161.877 +G01 X+8.59 Y-15.942 Z-2.16 B15.563 C160.402 +G01 X+8.695 Y-15.648 Z-2.161 B15.568 C158.928 +G01 X+8.814 Y-15.36 Z-2.16 C157.454 +G01 X+8.934 Y-15.072 Z-2.161 C155.979 +G01 X+9.068 Y-14.79 Z-2.16 C154.505 +G01 X+9.202 Y-14.509 Z-2.161 C153.03 +G01 X+9.35 Y-14.234 Z-2.16 B15.563 C151.556 +G01 X+9.499 Y-13.96 Z-2.161 B15.568 C150.082 +G01 X+9.661 Y-13.694 Z-2.16 B15.563 C148.607 +G01 X+9.824 Y-13.428 Z-2.161 B15.568 C147.133 +G01 X+9.989 Y-13.185 Z-2.16 B15.563 C145.741 +G01 X+10.155 Y-12.943 Z-2.161 B15.567 C144.348 +G01 X+10.188 Y-12.896 C144.094 +G01 X+10.371 Y-12.656 Z-2.16 B15.563 C142.665 +G01 X+10.554 Y-12.416 Z-2.161 B15.568 C141.236 +G01 X+10.755 Y-12.178 Z-2.16 B15.563 C139.762 +G01 X+10.957 Y-11.94 Z-2.161 B15.568 C138.288 +G01 X+11.17 Y-11.712 Z-2.16 B15.563 C136.816 +G01 X+11.384 Y-11.485 Z-2.161 B15.568 C135.344 +G01 X+11.608 Y-11.269 Z-2.16 B15.563 C133.868 +G01 X+11.833 Y-11.053 Z-2.161 B15.568 C132.392 +G01 X+12.051 Y-10.865 Z-2.16 B15.562 C131.03 +G01 X+12.305 Y-10.644 Z-2.161 B15.568 C129.44 +G01 X+12.55 Y-10.452 Z-2.16 B15.563 C127.964 +G01 X+12.796 Y-10.261 Z-2.161 B15.568 C126.488 +G01 X+13.032 Y-10.096 Z-2.16 B15.563 C125.13 +G01 X+13.267 Y-9.931 Z-2.161 B15.566 C123.772 +G01 X+13.307 Y-9.903 B15.568 C123.536 +G01 X+13.546 Y-9.753 Z-2.16 B15.563 C122.202 +G01 X+13.786 Y-9.603 Z-2.161 B15.566 C120.868 +G01 X+13.836 Y-9.572 B15.568 C120.584 +G01 X+14.078 Y-9.437 Z-2.16 B15.563 C119.274 +G01 X+14.32 Y-9.302 Z-2.161 B15.566 C117.965 +G01 X+14.381 Y-9.268 B15.568 C117.632 +G01 X+14.625 Y-9.148 Z-2.16 B15.563 C116.347 +G01 X+14.869 Y-9.028 Z-2.161 B15.565 C115.062 +G01 X+14.941 Y-8.993 B15.568 C114.68 +G01 X+15.186 Y-8.888 Z-2.16 B15.563 C113.419 +G01 X+15.432 Y-8.783 Z-2.161 B15.565 C112.159 +G01 X+15.514 Y-8.747 B15.568 C111.728 +G01 X+15.76 Y-8.656 Z-2.16 B15.563 C110.492 +G01 X+16.006 Y-8.566 Z-2.161 B15.565 C109.255 +G01 X+16.1 Y-8.531 B15.569 C108.776 +G01 X+16.345 Y-8.455 Z-2.16 B15.563 C107.564 +G01 X+16.59 Y-8.378 B15.565 C106.352 +G01 X+16.695 Y-8.346 Z-2.161 B15.569 C105.824 +G01 X+16.939 Y-8.283 Z-2.16 B15.563 C104.637 +G01 X+17.183 Y-8.221 B15.564 C103.449 +G01 X+17.299 Y-8.191 Z-2.161 B15.569 C102.872 +G01 X+17.541 Y-8.142 Z-2.16 B15.563 C101.709 +G01 X+17.783 Y-8.093 B15.564 C100.546 +G01 X+17.911 Y-8.068 Z-2.161 B15.569 C99.92 +G01 X+18.15 Y-8.032 Z-2.16 B15.563 C98.781 +G01 X+18.389 Y-7.996 B15.564 C97.642 +G01 X+18.528 Y-7.976 Z-2.161 B15.569 C96.968 +G01 X+18.764 Y-7.953 Z-2.16 B15.563 C95.854 +G01 X+18.999 Y-7.93 B15.564 C94.739 +G01 X+19.149 Y-7.916 Z-2.161 B15.569 C94.016 +G01 X+19.38 Y-7.906 Z-2.16 B15.563 C92.926 +G01 X+19.612 Y-7.895 B15.564 C91.836 +G01 X+19.772 Y-7.888 Z-2.161 B15.569 C91.064 +G01 X+20.226 Y-7.891 Z-2.16 B15.564 C88.933 +G01 X+20.396 Y-7.893 Z-2.161 B15.569 C88.112 +G01 X+20.839 Y-7.918 Z-2.16 B15.563 C86.03 +G01 X+21.019 Y-7.929 Z-2.161 B15.569 C85.16 +G01 X+21.449 Y-7.977 Z-2.16 B15.563 C83.126 +G01 X+21.639 Y-7.997 Z-2.161 B15.569 C82.208 +G01 X+22.056 Y-8.065 Z-2.16 B15.563 C80.223 +G01 X+22.254 Y-8.098 Z-2.161 B15.568 C79.256 +G01 X+22.658 Y-8.185 Z-2.16 B15.563 C77.32 +G01 X+22.864 Y-8.23 Z-2.161 B15.568 C76.304 +G01 X+23.253 Y-8.335 Z-2.16 B15.563 C74.417 +G01 X+23.466 Y-8.393 Z-2.161 B15.568 C73.352 +G01 X+23.84 Y-8.515 Z-2.16 B15.563 C71.514 +G01 X+24.059 Y-8.586 Z-2.161 B15.568 C70.402 +G01 X+24.35 Y-8.698 Z-2.16 B15.563 C68.928 +G01 X+24.641 Y-8.81 Z-2.161 B15.568 C67.454 +G01 X+24.926 Y-8.937 Z-2.16 C65.979 +G01 X+25.211 Y-9.064 Z-2.161 C64.505 +G01 X+25.489 Y-9.205 Z-2.16 B15.563 C63.031 +G01 X+25.767 Y-9.347 Z-2.161 B15.568 C61.556 +G01 X+26.038 Y-9.502 Z-2.16 B15.563 C60.082 +G01 X+26.308 Y-9.658 Z-2.161 B15.568 C58.607 +G01 X+26.557 Y-9.819 Z-2.16 B15.563 C57.204 +G01 X+26.806 Y-9.979 Z-2.161 B15.567 C55.8 +G01 X+26.853 Y-10.012 C55.546 +G01 X+27.096 Y-10.186 Z-2.16 B15.563 C54.128 +G01 X+27.338 Y-10.361 Z-2.161 B15.568 C52.71 +G01 X+27.581 Y-10.557 Z-2.16 B15.563 C51.236 +G01 X+27.824 Y-10.752 Z-2.161 B15.568 C49.761 +G01 X+28.057 Y-10.959 Z-2.16 C48.291 +G01 X+28.29 Y-11.167 Z-2.161 C46.82 +G01 X+28.512 Y-11.386 Z-2.16 B15.563 C45.344 +G01 X+28.734 Y-11.606 Z-2.161 B15.568 C43.868 +G01 X+28.936 Y-11.827 Z-2.16 B15.563 C42.449 +G01 X+29.138 Y-12.048 Z-2.161 B15.567 C41.03 +G01 X+29.154 Y-12.066 B15.568 C40.916 +G01 X+29.342 Y-12.294 Z-2.16 B15.563 C39.521 +G01 X+29.529 Y-12.521 Z-2.161 B15.567 C38.126 +G01 X+29.551 Y-12.548 B15.568 C37.964 +G01 X+29.723 Y-12.781 Z-2.16 B15.563 C36.593 +G01 X+29.895 Y-13.014 Z-2.161 B15.566 C35.223 +G01 X+29.922 Y-13.05 B15.568 C35.012 +G01 X+30.079 Y-13.287 Z-2.16 B15.563 C33.666 +G01 X+30.236 Y-13.524 Z-2.161 B15.566 C32.32 +G01 X+30.266 Y-13.57 B15.568 C32.06 +G01 X+30.409 Y-13.81 Z-2.16 B15.563 C30.738 +G01 X+30.551 Y-14.051 Z-2.161 B15.566 C29.417 +G01 X+30.584 Y-14.107 B15.568 C29.108 +G01 X+30.711 Y-14.35 Z-2.16 B15.563 C27.811 +G01 X+30.838 Y-14.593 Z-2.161 B15.565 C26.513 +G01 X+30.873 Y-14.659 B15.568 C26.156 +G01 X+30.986 Y-14.904 Z-2.16 B15.563 C24.883 +G01 X+31.098 Y-15.149 Z-2.161 B15.565 C23.61 +G01 X+31.134 Y-15.226 B15.568 C23.204 +G01 X+31.232 Y-15.472 Z-2.16 B15.563 C21.956 +G01 X+31.329 Y-15.717 Z-2.161 B15.565 C20.707 +G01 X+31.365 Y-15.805 B15.569 C20.252 +G01 X+31.448 Y-16.051 Z-2.16 B15.563 C19.028 +G01 X+31.532 Y-16.297 Z-2.161 B15.565 C17.804 +G01 X+31.565 Y-16.396 B15.569 C17.3 +G01 X+31.635 Y-16.641 Z-2.16 B15.563 C16.1 +G01 X+31.704 Y-16.886 B15.565 C14.901 +G01 X+31.736 Y-16.996 Z-2.161 B15.569 C14.348 +G01 X+31.791 Y-17.239 Z-2.16 B15.563 C13.173 +G01 X+31.847 Y-17.482 B15.564 C11.997 +G01 X+31.875 Y-17.604 Z-2.161 B15.569 C11.396 +G01 X+31.917 Y-17.845 Z-2.16 B15.563 C10.245 +G01 X+31.959 Y-18.086 B15.564 C9.094 +G01 X+31.982 Y-18.219 Z-2.161 B15.569 C8.444 +G01 X+32.011 Y-18.456 Z-2.16 B15.563 C7.317 +G01 X+32.04 Y-18.694 B15.564 C6.191 +G01 X+32.058 Y-18.838 Z-2.161 B15.569 C5.492 +G01 X+32.075 Y-19.072 Z-2.16 B15.563 C4.39 +G01 X+32.091 Y-19.305 B15.564 C3.288 +G01 X+32.102 Y-19.46 Z-2.161 B15.569 C2.54 +G01 X+32.106 Y-19.689 Z-2.16 B15.564 C1.462 +G01 X+32.11 Y-19.919 C0.384 +G01 X+32.114 Y-20.084 Z-2.161 B15.569 C359.588 +G01 X+32.099 Y-20.532 Z-2.16 B15.563 C357.481 +G01 X+32.093 Y-20.707 Z-2.161 B15.569 C356.636 +G01 X+32.056 Y-21.144 Z-2.16 B15.563 C354.578 +G01 X+32.041 Y-21.329 Z-2.161 B15.569 C353.684 +G01 X+31.983 Y-21.753 Z-2.16 B15.563 C351.675 +G01 X+31.956 Y-21.947 Z-2.161 B15.568 C350.732 +G01 X+31.878 Y-22.358 Z-2.16 B15.563 C348.771 +G01 X+31.84 Y-22.56 Z-2.161 B15.568 C347.78 +G01 X+31.744 Y-22.957 Z-2.16 B15.563 C345.868 +G01 X+31.693 Y-23.166 Z-2.161 B15.568 C344.828 +G01 X+31.579 Y-23.548 Z-2.16 B15.563 C342.965 +G01 X+31.514 Y-23.764 Z-2.161 B15.568 C341.877 +G01 X+31.41 Y-24.058 Z-2.16 B15.563 C340.402 +G01 X+31.305 Y-24.352 Z-2.161 B15.568 C338.928 +G01 X+31.186 Y-24.64 Z-2.16 C337.454 +G01 X+31.066 Y-24.928 Z-2.161 C335.979 +G01 X+30.932 Y-25.21 Z-2.16 C334.505 +G01 X+30.798 Y-25.491 Z-2.161 C333.03 +G01 X+30.65 Y-25.765 Z-2.16 B15.563 C331.556 +G01 X+30.501 Y-26.04 Z-2.161 B15.568 C330.082 +G01 X+30.339 Y-26.306 Z-2.16 B15.563 C328.607 +G01 X+30.176 Y-26.572 Z-2.161 B15.568 C327.133 +G01 X+30.011 Y-26.815 Z-2.16 B15.563 C325.741 +G01 X+29.845 Y-27.057 Z-2.161 B15.567 C324.348 +G01 X+29.812 Y-27.104 C324.094 +G01 X+29.629 Y-27.344 Z-2.16 B15.563 C322.665 +G01 X+29.446 Y-27.584 Z-2.161 B15.568 C321.236 +G01 X+29.245 Y-27.822 Z-2.16 B15.563 C319.762 +G01 X+29.043 Y-28.06 Z-2.161 B15.568 C318.288 +G01 X+28.83 Y-28.288 Z-2.16 B15.563 C316.816 +G01 X+28.616 Y-28.515 Z-2.161 B15.568 C315.344 +G01 X+28.392 Y-28.731 Z-2.16 B15.563 C313.868 +G01 X+28.167 Y-28.947 Z-2.161 B15.568 C312.392 +G01 X+27.949 Y-29.135 Z-2.16 B15.562 C311.03 +G01 X+27.695 Y-29.355 Z-2.161 B15.568 C309.44 +G01 X+27.45 Y-29.548 Z-2.16 B15.563 C307.964 +G01 X+27.204 Y-29.739 Z-2.161 B15.568 C306.488 +G01 X+26.969 Y-29.904 Z-2.16 B15.563 C305.13 +G01 X+26.733 Y-30.069 Z-2.161 B15.566 C303.772 +G01 X+26.693 Y-30.097 B15.568 C303.536 +G01 X+26.454 Y-30.247 Z-2.16 B15.563 C302.202 +G01 X+26.214 Y-30.397 Z-2.161 B15.566 C300.868 +G01 X+26.164 Y-30.428 B15.568 C300.584 +G01 X+25.922 Y-30.563 Z-2.16 B15.563 C299.274 +G01 X+25.68 Y-30.698 Z-2.161 B15.566 C297.965 +G01 X+25.619 Y-30.732 B15.568 C297.632 +G01 X+25.375 Y-30.852 Z-2.16 B15.563 C296.347 +G01 X+25.131 Y-30.972 Z-2.161 B15.565 C295.062 +G01 X+25.059 Y-31.007 B15.568 C294.68 +G01 X+24.814 Y-31.112 Z-2.16 B15.563 C293.419 +G01 X+24.568 Y-31.217 Z-2.161 B15.565 C292.159 +G01 X+24.486 Y-31.253 B15.568 C291.728 +G01 X+24.24 Y-31.344 Z-2.16 B15.563 C290.492 +G01 X+23.994 Y-31.434 Z-2.161 B15.565 C289.255 +G01 X+23.9 Y-31.469 B15.569 C288.776 +G01 X+23.655 Y-31.545 Z-2.16 B15.563 C287.564 +G01 X+23.41 Y-31.622 B15.565 C286.352 +G01 X+23.305 Y-31.654 Z-2.161 B15.569 C285.824 +G01 X+23.061 Y-31.717 Z-2.16 B15.563 C284.637 +G01 X+22.817 Y-31.779 B15.564 C283.449 +G01 X+22.701 Y-31.809 Z-2.161 B15.569 C282.872 +G01 X+22.459 Y-31.858 Z-2.16 B15.563 C281.709 +G01 X+22.217 Y-31.907 B15.564 C280.546 +G01 X+22.089 Y-31.932 Z-2.161 B15.569 C279.92 +G01 X+21.85 Y-31.968 Z-2.16 B15.563 C278.781 +G01 X+21.611 Y-32.003 B15.564 C277.642 +G01 X+21.472 Y-32.024 Z-2.161 B15.569 C276.968 +G01 X+21.236 Y-32.047 Z-2.16 B15.563 C275.854 +G01 X+21.001 Y-32.069 B15.564 C274.739 +G01 X+20.851 Y-32.084 Z-2.161 B15.569 C274.016 +G01 X+20.62 Y-32.094 Z-2.16 B15.563 C272.926 +G01 X+20.388 Y-32.104 B15.564 C271.836 +G01 X+20.228 Y-32.112 Z-2.161 B15.569 C271.064 +G01 X+19.774 Y-32.108 Z-2.16 B15.564 C268.933 +G01 X+19.604 Y-32.107 Z-2.161 B15.569 C268.112 +G01 X+19.161 Y-32.081 Z-2.16 B15.563 C266.03 +G01 X+18.981 Y-32.071 Z-2.161 B15.569 C265.16 +G01 X+18.551 Y-32.023 Z-2.16 B15.563 C263.126 +G01 X+18.361 Y-32.002 Z-2.161 B15.569 C262.208 +G01 X+17.944 Y-31.934 Z-2.16 B15.563 C260.223 +G01 X+17.746 Y-31.902 Z-2.161 B15.568 C259.256 +G01 X+17.342 Y-31.815 Z-2.16 B15.563 C257.32 +G01 X+17.136 Y-31.77 Z-2.161 B15.568 C256.304 +G01 X+16.747 Y-31.665 Z-2.16 B15.563 C254.417 +G01 X+16.534 Y-31.607 Z-2.161 B15.568 C253.352 +G01 X+16.16 Y-31.485 Z-2.16 B15.563 C251.514 +G01 X+15.941 Y-31.413 Z-2.161 B15.568 C250.402 +G01 X+15.65 Y-31.302 Z-2.16 B15.563 C248.928 +G01 X+15.359 Y-31.189 Z-2.161 B15.568 C247.453 +G01 X+15.074 Y-31.063 Z-2.16 C245.979 +G01 X+14.789 Y-30.936 Z-2.161 C244.505 +G01 X+14.486 Y-30.782 Z-2.16 B15.563 C242.929 +G01 X+14.184 Y-30.628 Z-2.161 B15.569 C241.352 +G01 X+13.938 Y-30.485 Z-2.16 B15.565 C239.982 +G01 X+13.693 Y-30.342 Z-2.161 B15.568 C238.611 +G01 X+13.443 Y-30.182 Z-2.16 B15.563 C237.206 +G01 X+13.194 Y-30.02 Z-2.161 B15.567 C235.8 +G01 X+13.147 Y-29.988 C235.546 +G01 X+12.904 Y-29.813 Z-2.16 B15.563 C234.128 +G01 X+12.662 Y-29.638 Z-2.161 B15.568 C232.71 +G01 X+12.419 Y-29.443 Z-2.16 B15.563 C231.236 +G01 X+12.176 Y-29.248 Z-2.161 B15.568 C229.761 +G01 X+11.943 Y-29.041 Z-2.16 B15.563 C228.29 +G01 X+11.71 Y-28.833 Z-2.161 B15.568 C226.82 +G01 X+11.488 Y-28.614 Z-2.16 C225.344 +G01 X+11.266 Y-28.394 Z-2.161 C223.868 +G01 X+11.023 Y-28.128 Z-2.16 B15.564 C222.156 +G01 X+10.97 Y-28.058 Z-2.158 B15.554 C221.733 +G01 X+10.93 Y-27.981 Z-2.152 B15.524 C221.325 +G01 X+10.904 Y-27.897 Z-2.142 B15.477 C220.967 +G01 X+10.83 Y-27.555 Z-2.097 B15.268 C219.487 +G01 X+10.807 Y-27.479 Z-2.089 B15.229 C219.13 +G01 X+10.772 Y-27.408 Z-2.084 B15.205 C218.755 +G01 X+10.727 Y-27.343 Z-2.082 B15.198 C218.372 +G01 X+10.676 Y-27.282 Z-2.083 B15.2 C217.986 +G01 X+10.495 Y-27.037 Z-2.082 B15.195 C216.51 +G01 X+10.314 Y-26.792 Z-2.083 B15.2 C215.035 +G01 X+10.145 Y-26.538 Z-2.082 B15.195 C213.559 +G01 X+9.977 Y-26.284 Z-2.083 B15.2 C212.084 +G01 X+9.822 Y-26.022 Z-2.082 B15.196 C210.609 +G01 X+9.667 Y-25.76 Z-2.083 B15.2 C209.133 +G01 X+9.525 Y-25.49 Z-2.082 B15.196 C207.658 +G01 X+9.384 Y-25.22 Z-2.083 B15.2 C206.182 +G01 X+9.256 Y-24.944 Z-2.082 C204.707 +G01 X+9.129 Y-24.667 Z-2.083 C203.232 +G01 X+9.024 Y-24.405 Z-2.082 B15.196 C201.864 +G01 X+8.92 Y-24.143 Z-2.083 B15.199 C200.496 +G01 X+8.903 Y-24.101 B15.201 C200.281 +G01 X+8.814 Y-23.839 Z-2.082 B15.196 C198.937 +G01 X+8.725 Y-23.576 Z-2.083 B15.199 C197.593 +G01 X+8.707 Y-23.525 B15.201 C197.33 +G01 X+8.632 Y-23.262 Z-2.082 B15.196 C196.01 +G01 X+8.558 Y-23 B15.198 C194.689 +G01 X+8.541 Y-22.939 Z-2.083 B15.201 C194.379 +G01 X+8.481 Y-22.678 Z-2.082 B15.196 C193.083 +G01 X+8.421 Y-22.417 B15.198 C191.786 +G01 X+8.404 Y-22.345 Z-2.083 B15.201 C191.428 +G01 X+8.359 Y-22.086 Z-2.082 B15.196 C190.156 +G01 X+8.314 Y-21.827 B15.198 C188.882 +G01 X+8.299 Y-21.745 Z-2.083 B15.201 C188.478 +G01 X+8.267 Y-21.489 Z-2.082 B15.196 C187.228 +G01 X+8.236 Y-21.233 B15.198 C185.979 +G01 X+8.225 Y-21.14 Z-2.083 B15.201 C185.527 +G01 X+8.207 Y-20.888 Z-2.082 B15.196 C184.301 +G01 X+8.189 Y-20.635 B15.197 C183.075 +G01 X+8.182 Y-20.532 Z-2.083 B15.201 C182.576 +G01 X+8.177 Y-20.284 Z-2.082 B15.196 C181.374 +G01 X+8.172 Y-20.036 B15.197 C180.172 +G01 X+8.17 Y-19.923 Z-2.083 B15.201 C179.625 +G01 X+8.178 Y-19.68 Z-2.082 B15.196 C178.447 +G01 X+8.186 Y-19.437 B15.197 C177.268 +G01 X+8.19 Y-19.314 Z-2.083 B15.201 C176.674 +G01 X+8.209 Y-19.077 Z-2.082 B15.196 C175.52 +G01 X+8.229 Y-18.839 B15.197 C174.365 +G01 X+8.241 Y-18.707 Z-2.083 B15.201 C173.723 +G01 X+8.272 Y-18.476 Z-2.082 B15.196 C172.592 +G01 X+8.304 Y-18.245 B15.197 C171.461 +G01 X+8.323 Y-18.104 Z-2.083 B15.201 C170.772 +G01 X+8.365 Y-17.879 Z-2.082 B15.196 C169.665 +G01 X+8.408 Y-17.654 C168.558 +G01 X+8.436 Y-17.505 Z-2.083 B15.2 C167.822 +G01 X+8.541 Y-17.07 Z-2.082 B15.196 C165.655 +G01 X+8.58 Y-16.913 Z-2.083 B15.2 C164.871 +G01 X+8.705 Y-16.494 Z-2.082 B15.196 C162.751 +G01 X+8.754 Y-16.329 Z-2.083 B15.2 C161.92 +G01 X+8.897 Y-15.926 Z-2.082 B15.196 C159.848 +G01 X+8.958 Y-15.755 Z-2.083 B15.2 C158.969 +G01 X+9.117 Y-15.369 Z-2.082 B15.196 C156.944 +G01 X+9.191 Y-15.192 Z-2.083 B15.2 C156.018 +G01 X+9.366 Y-14.824 Z-2.082 B15.196 C154.041 +G01 X+9.453 Y-14.642 Z-2.083 B15.2 C153.068 +G01 X+9.642 Y-14.292 Z-2.082 B15.196 C151.137 +G01 X+9.742 Y-14.106 Z-2.083 B15.2 C150.117 +G01 X+9.944 Y-13.775 Z-2.082 B15.195 C148.234 +G01 X+10.059 Y-13.586 Z-2.083 B15.2 C147.166 +G01 X+10.273 Y-13.273 Z-2.082 B15.195 C145.331 +G01 X+10.403 Y-13.083 Z-2.083 B15.2 C144.215 +G01 X+10.587 Y-12.84 Z-2.082 C142.74 +G01 X+10.771 Y-12.598 Z-2.083 C141.264 +G01 X+10.968 Y-12.365 Z-2.082 B15.195 C139.789 +G01 X+11.165 Y-12.133 Z-2.083 B15.2 C138.314 +G01 X+11.373 Y-11.91 Z-2.082 C136.841 +G01 X+11.581 Y-11.688 Z-2.083 C135.369 +G01 X+11.801 Y-11.477 Z-2.082 B15.195 C133.892 +G01 X+12.02 Y-11.266 Z-2.083 B15.2 C132.415 +G01 X+12.25 Y-11.066 Z-2.082 B15.195 C130.938 +G01 X+12.481 Y-10.867 Z-2.083 B15.2 C129.461 +G01 X+12.721 Y-10.679 Z-2.082 B15.195 C127.986 +G01 X+12.961 Y-10.492 Z-2.083 B15.2 C126.51 +G01 X+13.21 Y-10.317 Z-2.082 B15.195 C125.035 +G01 X+13.46 Y-10.142 Z-2.083 B15.2 C123.56 +G01 X+13.718 Y-9.98 Z-2.082 B15.195 C122.084 +G01 X+13.976 Y-9.818 Z-2.083 B15.2 C120.609 +G01 X+14.242 Y-9.67 Z-2.082 B15.196 C119.133 +G01 X+14.508 Y-9.522 Z-2.083 B15.2 C117.658 +G01 X+14.781 Y-9.387 Z-2.082 B15.196 C116.182 +G01 X+15.055 Y-9.253 Z-2.083 B15.201 C114.707 +G01 X+15.334 Y-9.133 Z-2.082 C113.232 +G01 X+15.614 Y-9.013 Z-2.083 C111.756 +G01 X+15.877 Y-8.915 Z-2.082 B15.196 C110.401 +G01 X+16.139 Y-8.819 Z-2.083 B15.199 C109.045 +G01 X+16.186 Y-8.801 B15.201 C108.806 +G01 X+16.448 Y-8.719 Z-2.082 B15.196 C107.473 +G01 X+16.711 Y-8.638 Z-2.083 B15.198 C106.141 +G01 X+16.767 Y-8.62 B15.201 C105.855 +G01 X+17.029 Y-8.553 Z-2.082 B15.196 C104.546 +G01 X+17.291 Y-8.486 B15.198 C103.238 +G01 X+17.357 Y-8.469 Z-2.083 B15.201 C102.904 +G01 X+17.617 Y-8.416 Z-2.082 B15.196 C101.619 +G01 X+17.877 Y-8.363 B15.198 C100.334 +G01 X+17.955 Y-8.348 Z-2.083 B15.201 C99.953 +G01 X+18.212 Y-8.309 Z-2.082 B15.196 C98.692 +G01 X+18.47 Y-8.271 B15.198 C97.431 +G01 X+18.557 Y-8.258 Z-2.083 B15.201 C97.002 +G01 X+18.811 Y-8.233 Z-2.082 B15.196 C95.765 +G01 X+19.066 Y-8.209 B15.197 C94.527 +G01 X+19.163 Y-8.199 Z-2.083 B15.201 C94.051 +G01 X+19.414 Y-8.188 Z-2.082 B15.196 C92.838 +G01 X+19.664 Y-8.177 B15.197 C91.624 +G01 X+19.772 Y-8.172 Z-2.083 B15.201 C91.1 +G01 X+20.018 Y-8.173 Z-2.082 B15.196 C89.91 +G01 X+20.263 Y-8.175 B15.197 C88.72 +G01 X+20.381 Y-8.176 Z-2.083 B15.201 C88.15 +G01 X+20.622 Y-8.19 Z-2.082 B15.196 C86.983 +G01 X+20.862 Y-8.204 B15.197 C85.817 +G01 X+20.989 Y-8.211 Z-2.083 B15.201 C85.199 +G01 X+21.224 Y-8.237 Z-2.082 B15.196 C84.056 +G01 X+21.458 Y-8.263 B15.197 C82.913 +G01 X+21.595 Y-8.278 Z-2.083 B15.201 C82.248 +G01 X+21.823 Y-8.315 Z-2.082 B15.196 C81.129 +G01 X+22.051 Y-8.352 C80.01 +G01 X+22.196 Y-8.375 Z-2.083 B15.201 C79.297 +G01 X+22.417 Y-8.423 Z-2.082 B15.196 C78.202 +G01 X+22.638 Y-8.471 C77.106 +G01 X+22.792 Y-8.504 Z-2.083 B15.2 C76.346 +G01 X+23.219 Y-8.619 Z-2.082 B15.196 C74.203 +G01 X+23.38 Y-8.663 Z-2.083 B15.2 C73.395 +G01 X+23.791 Y-8.797 Z-2.082 B15.196 C71.299 +G01 X+23.959 Y-8.852 Z-2.083 B15.2 C70.445 +G01 X+24.354 Y-9.004 Z-2.082 B15.196 C68.396 +G01 X+24.528 Y-9.07 Z-2.083 B15.2 C67.494 +G01 X+24.905 Y-9.238 Z-2.082 B15.196 C65.493 +G01 X+25.084 Y-9.318 Z-2.083 B15.2 C64.543 +G01 X+25.444 Y-9.501 Z-2.082 B15.196 C62.589 +G01 X+25.627 Y-9.594 Z-2.083 B15.2 C61.592 +G01 X+25.969 Y-9.79 Z-2.082 B15.196 C59.686 +G01 X+26.156 Y-9.897 Z-2.083 B15.2 C58.641 +G01 X+26.478 Y-10.105 Z-2.082 B15.195 C56.783 +G01 X+26.668 Y-10.228 Z-2.083 B15.2 C55.69 +G01 X+26.915 Y-10.406 Z-2.082 C54.215 +G01 X+27.162 Y-10.584 Z-2.083 C52.74 +G01 X+27.4 Y-10.774 Z-2.082 B15.195 C51.264 +G01 X+27.637 Y-10.965 Z-2.083 B15.2 C49.789 +G01 X+27.865 Y-11.168 Z-2.082 B15.195 C48.312 +G01 X+28.093 Y-11.371 Z-2.083 B15.2 C46.836 +G01 X+28.309 Y-11.584 Z-2.082 B15.195 C45.364 +G01 X+28.526 Y-11.798 Z-2.083 B15.2 C43.892 +G01 X+28.731 Y-12.023 Z-2.082 B15.195 C42.415 +G01 X+28.936 Y-12.248 Z-2.083 B15.2 C40.937 +G01 X+29.13 Y-12.483 Z-2.082 B15.195 C39.462 +G01 X+29.324 Y-12.718 Z-2.083 B15.2 C37.986 +G01 X+29.505 Y-12.963 Z-2.082 B15.195 C36.51 +G01 X+29.686 Y-13.208 Z-2.083 B15.2 C35.035 +G01 X+29.855 Y-13.462 Z-2.082 B15.195 C33.56 +G01 X+30.023 Y-13.715 Z-2.083 B15.2 C32.084 +G01 X+30.178 Y-13.978 Z-2.082 B15.196 C30.609 +G01 X+30.333 Y-14.24 Z-2.083 B15.2 C29.133 +G01 X+30.475 Y-14.509 Z-2.082 B15.196 C27.658 +G01 X+30.616 Y-14.779 Z-2.083 B15.2 C26.182 +G01 X+30.744 Y-15.056 Z-2.082 C24.707 +G01 X+30.871 Y-15.333 Z-2.083 B15.201 C23.232 +G01 X+30.976 Y-15.595 Z-2.082 B15.196 C21.864 +G01 X+31.08 Y-15.857 Z-2.083 B15.199 C20.496 +G01 X+31.097 Y-15.899 B15.201 C20.281 +G01 X+31.186 Y-16.161 Z-2.082 B15.196 C18.937 +G01 X+31.275 Y-16.424 Z-2.083 B15.199 C17.593 +G01 X+31.293 Y-16.475 B15.201 C17.33 +G01 X+31.368 Y-16.737 Z-2.082 B15.196 C16.01 +G01 X+31.442 Y-17 B15.198 C14.689 +G01 X+31.459 Y-17.061 Z-2.083 B15.201 C14.379 +G01 X+31.519 Y-17.322 Z-2.082 B15.196 C13.083 +G01 X+31.579 Y-17.583 B15.198 C11.786 +G01 X+31.596 Y-17.655 Z-2.083 B15.201 C11.428 +G01 X+31.641 Y-17.914 Z-2.082 B15.196 C10.156 +G01 X+31.686 Y-18.173 B15.198 C8.882 +G01 X+31.701 Y-18.255 Z-2.083 B15.201 C8.478 +G01 X+31.733 Y-18.511 Z-2.082 B15.196 C7.228 +G01 X+31.764 Y-18.767 B15.198 C5.979 +G01 X+31.775 Y-18.86 Z-2.083 B15.201 C5.527 +G01 X+31.793 Y-19.112 Z-2.082 B15.196 C4.301 +G01 X+31.811 Y-19.365 B15.197 C3.075 +G01 X+31.818 Y-19.467 Z-2.083 B15.201 C2.576 +G01 X+31.823 Y-19.716 Z-2.082 B15.196 C1.374 +G01 X+31.828 Y-19.964 B15.197 C0.172 +G01 X+31.83 Y-20.077 Z-2.083 B15.201 C359.625 +G01 X+31.822 Y-20.32 Z-2.082 B15.196 C358.447 +G01 X+31.814 Y-20.563 B15.197 C357.268 +G01 X+31.81 Y-20.685 Z-2.083 B15.201 C356.674 +G01 X+31.791 Y-20.923 Z-2.082 B15.196 C355.52 +G01 X+31.771 Y-21.161 B15.197 C354.365 +G01 X+31.759 Y-21.293 Z-2.083 B15.201 C353.723 +G01 X+31.728 Y-21.524 Z-2.082 B15.196 C352.592 +G01 X+31.696 Y-21.755 B15.197 C351.461 +G01 X+31.677 Y-21.896 Z-2.083 B15.201 C350.772 +G01 X+31.635 Y-22.121 Z-2.082 B15.196 C349.665 +G01 X+31.592 Y-22.345 C348.558 +G01 X+31.564 Y-22.495 Z-2.083 B15.2 C347.822 +G01 X+31.459 Y-22.93 Z-2.082 B15.196 C345.655 +G01 X+31.42 Y-23.087 Z-2.083 B15.2 C344.871 +G01 X+31.295 Y-23.506 Z-2.082 B15.196 C342.751 +G01 X+31.246 Y-23.671 Z-2.083 B15.2 C341.92 +G01 X+31.103 Y-24.074 Z-2.082 B15.196 C339.848 +G01 X+31.042 Y-24.245 Z-2.083 B15.2 C338.969 +G01 X+30.883 Y-24.631 Z-2.082 B15.196 C336.944 +G01 X+30.809 Y-24.808 Z-2.083 B15.2 C336.018 +G01 X+30.634 Y-25.176 Z-2.082 B15.196 C334.041 +G01 X+30.548 Y-25.358 Z-2.083 B15.2 C333.068 +G01 X+30.358 Y-25.708 Z-2.082 B15.196 C331.137 +G01 X+30.258 Y-25.893 Z-2.083 B15.2 C330.117 +G01 X+30.056 Y-26.225 Z-2.082 B15.195 C328.234 +G01 X+29.941 Y-26.414 Z-2.083 B15.2 C327.166 +G01 X+29.727 Y-26.727 Z-2.082 B15.195 C325.331 +G01 X+29.597 Y-26.917 Z-2.083 B15.2 C324.215 +G01 X+29.413 Y-27.16 Z-2.082 C322.74 +G01 X+29.229 Y-27.402 Z-2.083 C321.264 +G01 X+29.032 Y-27.635 Z-2.082 B15.195 C319.789 +G01 X+28.835 Y-27.867 Z-2.083 B15.2 C318.314 +G01 X+28.627 Y-28.089 Z-2.082 C316.841 +G01 X+28.419 Y-28.311 Z-2.083 C315.369 +G01 X+28.199 Y-28.523 Z-2.082 B15.195 C313.892 +G01 X+27.98 Y-28.734 Z-2.083 B15.2 C312.415 +G01 X+27.75 Y-28.934 Z-2.082 B15.195 C310.938 +G01 X+27.519 Y-29.133 Z-2.083 B15.2 C309.461 +G01 X+27.279 Y-29.321 Z-2.082 B15.195 C307.986 +G01 X+27.039 Y-29.508 Z-2.083 B15.2 C306.51 +G01 X+26.79 Y-29.683 Z-2.082 B15.195 C305.035 +G01 X+26.54 Y-29.858 Z-2.083 B15.2 C303.56 +G01 X+26.283 Y-30.02 Z-2.082 B15.195 C302.084 +G01 X+26.024 Y-30.181 Z-2.083 B15.2 C300.609 +G01 X+25.758 Y-30.33 Z-2.082 B15.196 C299.133 +G01 X+25.492 Y-30.478 Z-2.083 B15.2 C297.658 +G01 X+25.219 Y-30.613 Z-2.082 B15.196 C296.182 +G01 X+24.945 Y-30.747 Z-2.083 B15.201 C294.707 +G01 X+24.666 Y-30.867 Z-2.082 C293.232 +G01 X+24.386 Y-30.987 Z-2.083 C291.756 +G01 X+24.123 Y-31.084 Z-2.082 B15.196 C290.4 +G01 X+23.861 Y-31.181 Z-2.083 B15.199 C289.045 +G01 X+23.814 Y-31.198 B15.201 C288.806 +G01 X+23.552 Y-31.281 Z-2.082 B15.196 C287.473 +G01 X+23.289 Y-31.362 Z-2.083 B15.198 C286.141 +G01 X+23.233 Y-31.38 B15.201 C285.855 +G01 X+22.971 Y-31.447 Z-2.082 B15.196 C284.546 +G01 X+22.709 Y-31.514 B15.198 C283.238 +G01 X+22.643 Y-31.531 Z-2.083 B15.201 C282.904 +G01 X+22.383 Y-31.584 Z-2.082 B15.196 C281.619 +G01 X+22.123 Y-31.636 B15.198 C280.334 +G01 X+22.045 Y-31.652 Z-2.083 B15.201 C279.953 +G01 X+21.788 Y-31.691 Z-2.082 B15.196 C278.692 +G01 X+21.53 Y-31.729 B15.198 C277.431 +G01 X+21.443 Y-31.742 Z-2.083 B15.201 C277.002 +G01 X+21.189 Y-31.767 Z-2.082 B15.196 C275.765 +G01 X+20.934 Y-31.791 B15.197 C274.527 +G01 X+20.837 Y-31.801 Z-2.083 B15.201 C274.051 +G01 X+20.586 Y-31.812 Z-2.082 B15.196 C272.838 +G01 X+20.336 Y-31.823 B15.197 C271.624 +G01 X+20.228 Y-31.828 Z-2.083 B15.201 C271.1 +G01 X+19.982 Y-31.827 Z-2.082 B15.196 C269.91 +G01 X+19.737 Y-31.825 B15.197 C268.72 +G01 X+19.619 Y-31.824 Z-2.083 B15.201 C268.15 +G01 X+19.378 Y-31.81 Z-2.082 B15.196 C266.983 +G01 X+19.138 Y-31.796 B15.197 C265.817 +G01 X+19.011 Y-31.789 Z-2.083 B15.201 C265.199 +G01 X+18.776 Y-31.763 Z-2.082 B15.196 C264.056 +G01 X+18.542 Y-31.737 B15.197 C262.913 +G01 X+18.405 Y-31.722 Z-2.083 B15.201 C262.248 +G01 X+18.177 Y-31.685 Z-2.082 B15.196 C261.129 +G01 X+17.949 Y-31.648 C260.01 +G01 X+17.804 Y-31.625 Z-2.083 B15.201 C259.297 +G01 X+17.583 Y-31.577 Z-2.082 B15.196 C258.202 +G01 X+17.362 Y-31.529 C257.106 +G01 X+17.208 Y-31.496 Z-2.083 B15.2 C256.346 +G01 X+16.781 Y-31.381 Z-2.082 B15.196 C254.203 +G01 X+16.62 Y-31.337 Z-2.083 B15.2 C253.395 +G01 X+16.209 Y-31.203 Z-2.082 B15.196 C251.299 +G01 X+16.041 Y-31.148 Z-2.083 B15.2 C250.445 +G01 X+15.646 Y-30.996 Z-2.082 B15.196 C248.396 +G01 X+15.472 Y-30.929 Z-2.083 B15.2 C247.494 +G01 X+15.194 Y-30.806 Z-2.082 B15.195 C246.019 +G01 X+14.916 Y-30.682 Z-2.083 B15.2 C244.544 +G01 X+14.556 Y-30.499 Z-2.082 B15.196 C242.589 +G01 X+14.319 Y-30.379 Z-2.083 B15.201 C241.352 +G01 X+14.082 Y-30.241 Z-2.082 B15.197 C239.999 +G01 X+13.845 Y-30.103 Z-2.083 B15.2 C238.646 +G01 X+13.522 Y-29.895 Z-2.082 B15.196 C236.783 +G01 X+13.332 Y-29.772 Z-2.083 B15.2 C235.691 +G01 X+13.085 Y-29.594 Z-2.082 C234.215 +G01 X+12.838 Y-29.416 Z-2.083 C232.74 +G01 X+12.6 Y-29.226 Z-2.082 B15.195 C231.264 +G01 X+12.363 Y-29.035 Z-2.083 B15.2 C229.789 +G01 X+12.135 Y-28.832 Z-2.082 B15.195 C228.312 +G01 X+11.907 Y-28.629 Z-2.083 B15.2 C226.836 +G01 X+11.691 Y-28.415 Z-2.082 B15.195 C225.364 +G01 X+11.474 Y-28.202 Z-2.083 B15.2 C223.892 +G01 X+11.233 Y-27.938 Z-2.082 B15.195 C222.155 +G01 X+11.18 Y-27.868 Z-2.08 B15.186 C221.731 +G01 X+11.14 Y-27.79 Z-2.074 B15.157 C221.319 +G01 X+11.114 Y-27.707 Z-2.065 B15.11 C220.931 +G01 X+11.039 Y-27.364 Z-2.02 B14.894 C219.41 +G01 X+11.016 Y-27.289 Z-2.012 B14.855 C219.029 +G01 X+10.982 Y-27.217 Z-2.008 B14.832 C218.654 +G01 X+10.937 Y-27.152 Z-2.006 B14.825 C218.271 +G01 X+10.903 Y-27.111 Z-2.007 B14.826 C218.015 +G01 X+10.726 Y-26.873 Z-2.006 C216.538 +G01 X+10.549 Y-26.634 Z-2.007 C215.061 +G01 X+10.33 Y-26.304 Z-2.006 B14.822 C213.08 +G01 X+10.22 Y-26.138 Z-2.007 B14.826 C212.108 +G01 X+10.023 Y-25.806 Z-2.006 B14.822 C210.177 +G01 X+9.917 Y-25.627 Z-2.007 B14.826 C209.154 +G01 X+9.742 Y-25.294 Z-2.006 B14.822 C207.273 +G01 X+9.641 Y-25.1 Z-2.007 B14.826 C206.201 +G01 X+9.531 Y-24.862 Z-2.006 B14.821 C204.906 +G01 X+9.421 Y-24.624 B14.824 C203.61 +G01 X+9.392 Y-24.56 Z-2.007 B14.826 C203.248 +G01 X+9.296 Y-24.321 Z-2.006 B14.821 C201.978 +G01 X+9.201 Y-24.082 B14.823 C200.707 +G01 X+9.171 Y-24.008 Z-2.007 B14.827 C200.294 +G01 X+9.089 Y-23.769 Z-2.006 B14.822 C199.049 +G01 X+9.008 Y-23.53 B14.823 C197.804 +G01 X+8.979 Y-23.445 Z-2.007 B14.827 C197.341 +G01 X+8.911 Y-23.207 Z-2.006 B14.822 C196.121 +G01 X+8.843 Y-22.969 B14.823 C194.901 +G01 X+8.816 Y-22.873 Z-2.007 B14.827 C194.388 +G01 X+8.762 Y-22.637 Z-2.006 B14.822 C193.193 +G01 X+8.708 Y-22.4 B14.823 C191.997 +G01 X+8.683 Y-22.294 Z-2.007 B14.827 C191.434 +G01 X+8.63 Y-21.993 Z-2.006 B14.822 C189.921 +G01 X+8.578 Y-21.693 Z-2.007 B14.826 C188.408 +G01 X+8.543 Y-21.405 Z-2.006 B14.822 C186.971 +G01 X+8.507 Y-21.118 Z-2.007 B14.827 C185.534 +G01 X+8.486 Y-20.822 Z-2.006 B14.822 C184.059 +G01 X+8.465 Y-20.525 Z-2.007 B14.827 C182.584 +G01 X+8.459 Y-20.228 Z-2.006 C181.109 +G01 X+8.453 Y-19.931 Z-2.007 C179.634 +G01 X+8.462 Y-19.633 Z-2.006 C178.16 +G01 X+8.472 Y-19.336 Z-2.007 C176.685 +G01 X+8.497 Y-19.04 Z-2.006 B14.822 C175.21 +G01 X+8.522 Y-18.744 Z-2.007 B14.827 C173.735 +G01 X+8.559 Y-18.47 Z-2.006 B14.822 C172.361 +G01 X+8.596 Y-18.196 B14.826 C170.987 +G01 X+8.602 Y-18.154 Z-2.007 B14.827 C170.785 +G01 X+8.652 Y-17.887 Z-2.006 B14.822 C169.435 +G01 X+8.702 Y-17.62 B14.825 C168.084 +G01 X+8.712 Y-17.57 Z-2.007 B14.827 C167.836 +G01 X+8.774 Y-17.311 Z-2.006 B14.822 C166.508 +G01 X+8.837 Y-17.051 B14.825 C165.18 +G01 X+8.852 Y-16.992 Z-2.007 B14.827 C164.886 +G01 X+8.926 Y-16.741 Z-2.006 B14.822 C163.581 +G01 X+9.001 Y-16.49 B14.825 C162.277 +G01 X+9.021 Y-16.422 Z-2.007 B14.827 C161.936 +G01 X+9.107 Y-16.18 Z-2.006 B14.822 C160.655 +G01 X+9.193 Y-15.937 B14.825 C159.373 +G01 X+9.22 Y-15.862 Z-2.007 B14.827 C158.987 +G01 X+9.316 Y-15.628 Z-2.006 B14.822 C157.728 +G01 X+9.413 Y-15.395 B14.824 C156.47 +G01 X+9.447 Y-15.312 Z-2.007 B14.826 C156.037 +G01 X+9.554 Y-15.088 Z-2.006 B14.822 C154.802 +G01 X+9.66 Y-14.865 B14.824 C153.566 +G01 X+9.703 Y-14.775 Z-2.007 B14.826 C153.087 +G01 X+9.818 Y-14.561 Z-2.006 B14.822 C151.875 +G01 X+9.934 Y-14.348 B14.824 C150.663 +G01 X+9.985 Y-14.252 Z-2.007 B14.826 C150.138 +G01 X+10.109 Y-14.049 Z-2.006 B14.822 C148.948 +G01 X+10.233 Y-13.845 B14.824 C147.759 +G01 X+10.294 Y-13.744 Z-2.007 B14.826 C147.188 +G01 X+10.426 Y-13.551 Z-2.006 B14.822 C146.022 +G01 X+10.558 Y-13.358 B14.824 C144.856 +G01 X+10.629 Y-13.253 Z-2.007 B14.826 C144.238 +G01 X+10.768 Y-13.071 Z-2.006 B14.822 C143.095 +G01 X+10.906 Y-12.889 B14.823 C141.952 +G01 X+10.989 Y-12.78 Z-2.007 B14.826 C141.289 +G01 X+11.181 Y-12.552 Z-2.006 B14.821 C139.814 +G01 X+11.373 Y-12.325 Z-2.007 B14.826 C138.339 +G01 X+11.576 Y-12.107 Z-2.006 B14.821 C136.862 +G01 X+11.781 Y-11.89 Z-2.007 B14.826 C135.384 +G01 X+11.994 Y-11.684 Z-2.006 B14.821 C133.914 +G01 X+12.208 Y-11.479 Z-2.007 B14.826 C132.445 +G01 X+12.432 Y-11.284 Z-2.006 B14.821 C130.968 +G01 X+12.657 Y-11.089 Z-2.007 B14.826 C129.491 +G01 X+12.891 Y-10.906 Z-2.006 C128.014 +G01 X+13.125 Y-10.723 Z-2.007 C126.538 +G01 X+13.453 Y-10.493 Z-2.006 B14.823 C124.532 +G01 X+13.612 Y-10.381 Z-2.007 B14.826 C123.584 +G01 X+13.943 Y-10.173 Z-2.006 B14.822 C121.628 +G01 X+14.115 Y-10.065 Z-2.007 B14.826 C120.631 +G01 X+14.448 Y-9.879 Z-2.006 B14.822 C118.725 +G01 X+14.635 Y-9.775 Z-2.007 B14.826 C117.678 +G01 X+14.968 Y-9.611 Z-2.006 B14.822 C115.822 +G01 X+15.168 Y-9.513 Z-2.007 B14.826 C114.725 +G01 X+15.407 Y-9.41 Z-2.006 B14.821 C113.442 +G01 X+15.645 Y-9.307 B14.824 C112.159 +G01 X+15.714 Y-9.278 Z-2.007 B14.826 C111.771 +G01 X+15.953 Y-9.189 Z-2.006 B14.822 C110.513 +G01 X+16.193 Y-9.101 B14.823 C109.255 +G01 X+16.272 Y-9.071 Z-2.007 B14.827 C108.818 +G01 X+16.511 Y-8.997 Z-2.006 B14.822 C107.585 +G01 X+16.75 Y-8.922 B14.823 C106.352 +G01 X+16.84 Y-8.894 Z-2.007 B14.827 C105.865 +G01 X+17.077 Y-8.833 Z-2.006 B14.822 C104.657 +G01 X+17.315 Y-8.772 B14.823 C103.449 +G01 X+17.415 Y-8.746 Z-2.007 B14.827 C102.911 +G01 X+17.651 Y-8.698 Z-2.006 B14.822 C101.729 +G01 X+17.887 Y-8.65 B14.823 C100.546 +G01 X+18.018 Y-8.625 Z-2.007 B14.826 C99.859 +G01 X+18.302 Y-8.582 Z-2.006 B14.822 C98.434 +G01 X+18.586 Y-8.54 Z-2.007 B14.827 C97.009 +G01 X+18.883 Y-8.511 Z-2.006 C95.531 +G01 X+19.179 Y-8.482 Z-2.007 C94.053 +G01 X+19.476 Y-8.469 Z-2.006 B14.822 C92.581 +G01 X+19.772 Y-8.455 Z-2.007 B14.827 C91.109 +G01 X+20.069 Y-8.457 Z-2.006 C89.634 +G01 X+20.367 Y-8.459 Z-2.007 C88.16 +G01 X+20.664 Y-8.476 Z-2.006 C86.685 +G01 X+20.96 Y-8.493 Z-2.007 C85.21 +G01 X+21.256 Y-8.525 Z-2.006 B14.822 C83.735 +G01 X+21.551 Y-8.558 Z-2.007 B14.827 C82.26 +G01 X+21.822 Y-8.601 Z-2.006 B14.822 C80.898 +G01 X+22.093 Y-8.645 B14.825 C79.535 +G01 X+22.138 Y-8.653 Z-2.007 B14.827 C79.311 +G01 X+22.402 Y-8.709 Z-2.006 B14.822 C77.971 +G01 X+22.665 Y-8.766 B14.825 C76.632 +G01 X+22.72 Y-8.778 Z-2.007 B14.827 C76.361 +G01 X+22.975 Y-8.847 Z-2.006 B14.822 C75.045 +G01 X+23.231 Y-8.916 B14.825 C73.728 +G01 X+23.294 Y-8.933 Z-2.007 B14.827 C73.411 +G01 X+23.541 Y-9.013 Z-2.006 B14.822 C72.118 +G01 X+23.788 Y-9.094 B14.825 C70.825 +G01 X+23.859 Y-9.117 Z-2.007 B14.827 C70.462 +G01 X+24.097 Y-9.208 Z-2.006 B14.822 C69.192 +G01 X+24.335 Y-9.3 B14.824 C67.921 +G01 X+24.414 Y-9.33 Z-2.007 B14.827 C67.512 +G01 X+24.643 Y-9.432 Z-2.006 B14.822 C66.265 +G01 X+24.872 Y-9.533 B14.824 C65.018 +G01 X+24.958 Y-9.571 Z-2.007 B14.826 C64.562 +G01 X+25.177 Y-9.682 Z-2.006 B14.822 C63.338 +G01 X+25.396 Y-9.794 B14.824 C62.114 +G01 X+25.488 Y-9.841 Z-2.007 B14.826 C61.613 +G01 X+25.697 Y-9.96 Z-2.006 B14.822 C60.412 +G01 X+25.906 Y-10.08 B14.824 C59.211 +G01 X+26.004 Y-10.137 Z-2.007 B14.826 C58.663 +G01 X+26.202 Y-10.264 Z-2.006 B14.822 C57.485 +G01 X+26.4 Y-10.392 B14.824 C56.307 +G01 X+26.503 Y-10.459 Z-2.007 B14.826 C55.713 +G01 X+26.691 Y-10.594 Z-2.006 B14.822 C54.559 +G01 X+26.879 Y-10.729 B14.823 C53.404 +G01 X+26.986 Y-10.806 Z-2.007 B14.826 C52.763 +G01 X+27.163 Y-10.948 Z-2.006 B14.822 C51.632 +G01 X+27.339 Y-11.089 B14.823 C50.501 +G01 X+27.45 Y-11.178 Z-2.007 B14.826 C49.814 +G01 X+27.672 Y-11.375 Z-2.006 B14.821 C48.339 +G01 X+27.894 Y-11.573 Z-2.007 B14.826 C46.864 +G01 X+28.106 Y-11.782 Z-2.006 C45.393 +G01 X+28.318 Y-11.991 Z-2.007 C43.921 +G01 X+28.518 Y-12.21 Z-2.006 B14.821 C42.445 +G01 X+28.719 Y-12.43 Z-2.007 B14.826 C40.968 +G01 X+28.908 Y-12.659 Z-2.006 B14.821 C39.491 +G01 X+29.097 Y-12.888 Z-2.007 B14.826 C38.014 +G01 X+29.274 Y-13.127 Z-2.006 C36.538 +G01 X+29.451 Y-13.366 Z-2.007 C35.061 +G01 X+29.67 Y-13.696 Z-2.006 B14.822 C33.08 +G01 X+29.78 Y-13.861 Z-2.007 B14.826 C32.108 +G01 X+29.977 Y-14.193 Z-2.006 B14.822 C30.177 +G01 X+30.083 Y-14.373 Z-2.007 B14.826 C29.154 +G01 X+30.258 Y-14.706 Z-2.006 B14.822 C27.273 +G01 X+30.359 Y-14.9 Z-2.007 B14.826 C26.201 +G01 X+30.469 Y-15.138 Z-2.006 B14.821 C24.906 +G01 X+30.579 Y-15.376 B14.824 C23.61 +G01 X+30.608 Y-15.44 Z-2.007 B14.826 C23.248 +G01 X+30.704 Y-15.679 Z-2.006 B14.821 C21.978 +G01 X+30.799 Y-15.918 B14.823 C20.707 +G01 X+30.829 Y-15.992 Z-2.007 B14.827 C20.294 +G01 X+30.911 Y-16.231 Z-2.006 B14.822 C19.049 +G01 X+30.992 Y-16.47 B14.823 C17.804 +G01 X+31.021 Y-16.555 Z-2.007 B14.827 C17.341 +G01 X+31.089 Y-16.793 Z-2.006 B14.822 C16.121 +G01 X+31.157 Y-17.031 B14.823 C14.901 +G01 X+31.184 Y-17.126 Z-2.007 B14.827 C14.388 +G01 X+31.238 Y-17.363 Z-2.006 B14.822 C13.193 +G01 X+31.292 Y-17.6 B14.823 C11.997 +G01 X+31.317 Y-17.706 Z-2.007 B14.827 C11.434 +G01 X+31.37 Y-18.007 Z-2.006 B14.822 C9.921 +G01 X+31.422 Y-18.307 Z-2.007 B14.826 C8.408 +G01 X+31.457 Y-18.594 Z-2.006 B14.822 C6.971 +G01 X+31.493 Y-18.882 Z-2.007 B14.827 C5.534 +G01 X+31.514 Y-19.178 Z-2.006 B14.822 C4.059 +G01 X+31.535 Y-19.475 Z-2.007 B14.827 C2.584 +G01 X+31.541 Y-19.772 Z-2.006 C1.109 +G01 X+31.547 Y-20.069 Z-2.007 C359.634 +G01 X+31.538 Y-20.367 Z-2.006 C358.16 +G01 X+31.528 Y-20.664 Z-2.007 C356.685 +G01 X+31.503 Y-20.96 Z-2.006 B14.822 C355.21 +G01 X+31.478 Y-21.256 Z-2.007 B14.827 C353.735 +G01 X+31.441 Y-21.53 Z-2.006 B14.822 C352.361 +G01 X+31.404 Y-21.804 B14.826 C350.987 +G01 X+31.398 Y-21.845 Z-2.007 B14.827 C350.785 +G01 X+31.348 Y-22.112 Z-2.006 B14.822 C349.435 +G01 X+31.298 Y-22.379 B14.825 C348.084 +G01 X+31.288 Y-22.43 Z-2.007 B14.827 C347.836 +G01 X+31.226 Y-22.689 Z-2.006 B14.822 C346.508 +G01 X+31.163 Y-22.949 B14.825 C345.18 +G01 X+31.148 Y-23.008 Z-2.007 B14.827 C344.886 +G01 X+31.074 Y-23.259 Z-2.006 B14.822 C343.581 +G01 X+30.999 Y-23.51 B14.825 C342.277 +G01 X+30.979 Y-23.578 Z-2.007 B14.827 C341.936 +G01 X+30.893 Y-23.82 Z-2.006 B14.822 C340.655 +G01 X+30.807 Y-24.063 B14.825 C339.373 +G01 X+30.78 Y-24.138 Z-2.007 B14.827 C338.987 +G01 X+30.684 Y-24.372 Z-2.006 B14.822 C337.728 +G01 X+30.587 Y-24.605 B14.824 C336.47 +G01 X+30.553 Y-24.687 Z-2.007 B14.826 C336.037 +G01 X+30.446 Y-24.911 Z-2.006 B14.822 C334.802 +G01 X+30.34 Y-25.135 B14.824 C333.566 +G01 X+30.297 Y-25.224 Z-2.007 B14.826 C333.087 +G01 X+30.182 Y-25.438 Z-2.006 B14.822 C331.875 +G01 X+30.066 Y-25.652 B14.824 C330.663 +G01 X+30.015 Y-25.748 Z-2.007 B14.826 C330.138 +G01 X+29.891 Y-25.951 Z-2.006 B14.822 C328.948 +G01 X+29.767 Y-26.155 B14.824 C327.759 +G01 X+29.706 Y-26.256 Z-2.007 B14.826 C327.188 +G01 X+29.574 Y-26.449 Z-2.006 B14.822 C326.022 +G01 X+29.443 Y-26.642 B14.824 C324.856 +G01 X+29.371 Y-26.747 Z-2.007 B14.826 C324.238 +G01 X+29.232 Y-26.929 Z-2.006 B14.822 C323.095 +G01 X+29.094 Y-27.111 B14.823 C321.952 +G01 X+29.011 Y-27.22 Z-2.007 B14.826 C321.289 +G01 X+28.819 Y-27.448 Z-2.006 B14.821 C319.814 +G01 X+28.627 Y-27.675 Z-2.007 B14.826 C318.339 +G01 X+28.424 Y-27.892 Z-2.006 B14.821 C316.862 +G01 X+28.219 Y-28.11 Z-2.007 B14.826 C315.384 +G01 X+28.006 Y-28.316 Z-2.006 B14.821 C313.914 +G01 X+27.792 Y-28.521 Z-2.007 B14.826 C312.445 +G01 X+27.568 Y-28.716 Z-2.006 B14.821 C310.968 +G01 X+27.343 Y-28.911 Z-2.007 B14.826 C309.491 +G01 X+27.109 Y-29.094 Z-2.006 C308.014 +G01 X+26.875 Y-29.277 Z-2.007 C306.538 +G01 X+26.547 Y-29.507 Z-2.006 B14.823 C304.532 +G01 X+26.388 Y-29.619 Z-2.007 B14.826 C303.584 +G01 X+26.057 Y-29.826 Z-2.006 B14.822 C301.628 +G01 X+25.885 Y-29.935 Z-2.007 B14.826 C300.631 +G01 X+25.552 Y-30.121 Z-2.006 B14.822 C298.725 +G01 X+25.365 Y-30.225 Z-2.007 B14.826 C297.678 +G01 X+25.032 Y-30.389 Z-2.006 B14.822 C295.822 +G01 X+24.832 Y-30.487 Z-2.007 B14.826 C294.725 +G01 X+24.593 Y-30.59 Z-2.006 B14.821 C293.442 +G01 X+24.355 Y-30.692 B14.824 C292.159 +G01 X+24.286 Y-30.722 Z-2.007 B14.826 C291.771 +G01 X+24.047 Y-30.811 Z-2.006 B14.822 C290.513 +G01 X+23.807 Y-30.899 B14.823 C289.255 +G01 X+23.728 Y-30.928 Z-2.007 B14.827 C288.818 +G01 X+23.489 Y-31.003 Z-2.006 B14.822 C287.585 +G01 X+23.25 Y-31.078 B14.823 C286.352 +G01 X+23.16 Y-31.106 Z-2.007 B14.827 C285.865 +G01 X+22.923 Y-31.167 Z-2.006 B14.822 C284.657 +G01 X+22.685 Y-31.228 B14.823 C283.449 +G01 X+22.585 Y-31.254 Z-2.007 B14.827 C282.911 +G01 X+22.349 Y-31.302 Z-2.006 B14.822 C281.729 +G01 X+22.113 Y-31.349 B14.823 C280.546 +G01 X+21.982 Y-31.375 Z-2.007 B14.826 C279.859 +G01 X+21.698 Y-31.418 Z-2.006 B14.822 C278.434 +G01 X+21.414 Y-31.46 Z-2.007 B14.827 C277.009 +G01 X+21.117 Y-31.489 Z-2.006 C275.531 +G01 X+20.821 Y-31.518 Z-2.007 C274.053 +G01 X+20.524 Y-31.531 Z-2.006 B14.822 C272.581 +G01 X+20.228 Y-31.545 Z-2.007 B14.827 C271.109 +G01 X+19.931 Y-31.543 Z-2.006 C269.634 +G01 X+19.633 Y-31.541 Z-2.007 C268.16 +G01 X+19.336 Y-31.524 Z-2.006 C266.685 +G01 X+19.04 Y-31.507 Z-2.007 C265.21 +G01 X+18.744 Y-31.475 Z-2.006 B14.822 C263.735 +G01 X+18.449 Y-31.442 Z-2.007 B14.827 C262.26 +G01 X+18.178 Y-31.399 Z-2.006 B14.822 C260.898 +G01 X+17.907 Y-31.355 B14.825 C259.535 +G01 X+17.862 Y-31.347 Z-2.007 B14.827 C259.311 +G01 X+17.598 Y-31.291 Z-2.006 B14.822 C257.971 +G01 X+17.335 Y-31.234 B14.825 C256.632 +G01 X+17.28 Y-31.222 Z-2.007 B14.827 C256.361 +G01 X+17.025 Y-31.153 Z-2.006 B14.822 C255.045 +G01 X+16.769 Y-31.084 B14.825 C253.728 +G01 X+16.706 Y-31.067 Z-2.007 B14.827 C253.411 +G01 X+16.459 Y-30.987 Z-2.006 B14.822 C252.118 +G01 X+16.212 Y-30.906 B14.825 C250.825 +G01 X+16.141 Y-30.883 Z-2.007 B14.827 C250.462 +G01 X+15.903 Y-30.792 Z-2.006 B14.822 C249.192 +G01 X+15.665 Y-30.7 B14.824 C247.921 +G01 X+15.586 Y-30.67 Z-2.007 B14.827 C247.512 +G01 X+15.314 Y-30.549 Z-2.006 B14.822 C246.037 +G01 X+15.042 Y-30.428 Z-2.007 B14.826 C244.563 +G01 X+14.823 Y-30.317 Z-2.006 B14.822 C243.339 +G01 X+14.604 Y-30.206 B14.824 C242.114 +G01 X+14.455 Y-30.13 Z-2.007 B14.827 C241.352 +G01 X+14.226 Y-29.997 Z-2.006 B14.823 C240.01 +G01 X+13.997 Y-29.864 Z-2.007 B14.827 C238.669 +G01 X+13.798 Y-29.736 Z-2.006 B14.822 C237.488 +G01 X+13.6 Y-29.608 B14.824 C236.307 +G01 X+13.497 Y-29.541 Z-2.007 B14.826 C235.713 +G01 X+13.309 Y-29.406 Z-2.006 B14.822 C234.559 +G01 X+13.121 Y-29.271 B14.823 C233.404 +G01 X+13.014 Y-29.194 Z-2.007 B14.826 C232.763 +G01 X+12.837 Y-29.052 Z-2.006 B14.822 C231.632 +G01 X+12.661 Y-28.911 B14.823 C230.501 +G01 X+12.55 Y-28.822 Z-2.007 B14.826 C229.814 +G01 X+12.328 Y-28.624 Z-2.006 B14.821 C228.339 +G01 X+12.106 Y-28.427 Z-2.007 B14.826 C226.864 +G01 X+11.894 Y-28.218 Z-2.006 B14.821 C225.393 +G01 X+11.682 Y-28.009 Z-2.007 B14.826 C223.921 +G01 X+11.443 Y-27.748 Z-2.006 B14.822 C222.146 +G01 X+11.39 Y-27.678 Z-2.004 B14.812 C221.704 +G01 X+11.35 Y-27.6 Z-1.998 B14.783 C221.291 +G01 X+11.324 Y-27.516 Z-1.989 B14.737 C220.9 +G01 X+11.249 Y-27.173 Z-1.946 B14.521 C219.34 +G01 X+11.226 Y-27.097 Z-1.938 B14.482 C218.958 +G01 X+11.192 Y-27.026 Z-1.933 B14.459 C218.556 +G01 X+11.146 Y-26.961 Z-1.932 B14.452 C218.17 +G01 X+11.13 Y-26.941 B14.453 C218.046 +G01 X+10.957 Y-26.708 Z-1.931 B14.448 C216.569 +G01 X+10.784 Y-26.475 Z-1.932 B14.453 C215.093 +G01 X+10.633 Y-26.248 Z-1.931 B14.448 C213.707 +G01 X+10.483 Y-26.021 Z-1.932 B14.451 C212.32 +G01 X+10.463 Y-25.992 B14.453 C212.141 +G01 X+10.326 Y-25.762 Z-1.931 B14.448 C210.779 +G01 X+10.19 Y-25.531 Z-1.932 B14.451 C209.417 +G01 X+10.167 Y-25.493 B14.453 C209.189 +G01 X+10.045 Y-25.26 Z-1.931 B14.448 C207.851 +G01 X+9.923 Y-25.027 Z-1.932 B14.451 C206.514 +G01 X+9.898 Y-24.98 B14.453 C206.237 +G01 X+9.789 Y-24.745 Z-1.931 B14.448 C204.924 +G01 X+9.681 Y-24.51 Z-1.932 B14.451 C203.61 +G01 X+9.655 Y-24.453 B14.453 C203.285 +G01 X+9.56 Y-24.218 Z-1.931 B14.448 C201.996 +G01 X+9.466 Y-23.982 Z-1.932 B14.45 C200.707 +G01 X+9.439 Y-23.915 B14.453 C200.333 +G01 X+9.358 Y-23.679 Z-1.931 B14.448 C199.069 +G01 X+9.278 Y-23.443 Z-1.932 B14.45 C197.804 +G01 X+9.252 Y-23.366 B14.453 C197.381 +G01 X+9.184 Y-23.131 Z-1.931 B14.448 C196.141 +G01 X+9.118 Y-22.896 Z-1.932 B14.45 C194.901 +G01 X+9.093 Y-22.808 B14.453 C194.429 +G01 X+9.039 Y-22.574 Z-1.931 B14.448 C193.213 +G01 X+8.985 Y-22.341 Z-1.932 B14.45 C191.997 +G01 X+8.963 Y-22.243 B14.453 C191.477 +G01 X+8.922 Y-22.011 Z-1.931 B14.448 C190.285 +G01 X+8.881 Y-21.78 Z-1.932 B14.45 C189.094 +G01 X+8.862 Y-21.672 B14.453 C188.524 +G01 X+8.833 Y-21.443 Z-1.931 B14.448 C187.358 +G01 X+8.805 Y-21.214 Z-1.932 B14.449 C186.191 +G01 X+8.79 Y-21.096 B14.453 C185.572 +G01 X+8.758 Y-20.646 B14.449 C183.288 +G01 X+8.749 Y-20.517 B14.453 C182.62 +G01 X+8.74 Y-20.075 B14.449 C180.384 +G01 X+8.737 Y-19.938 B14.453 C179.668 +G01 X+8.751 Y-19.505 B14.449 C177.481 +G01 X+8.755 Y-19.358 B14.453 C176.716 +G01 X+8.79 Y-18.936 B14.449 C174.578 +G01 X+8.803 Y-18.78 B14.453 C173.764 +G01 X+8.859 Y-18.37 B14.449 C171.675 +G01 X+8.881 Y-18.205 B14.453 C170.812 +G01 X+8.934 Y-17.92 Z-1.931 B14.449 C169.336 +G01 X+8.988 Y-17.635 Z-1.932 B14.453 C167.86 +G01 X+9.056 Y-17.353 Z-1.931 C166.383 +G01 X+9.124 Y-17.071 Z-1.932 C164.907 +G01 X+9.207 Y-16.793 Z-1.931 B14.454 C163.431 +G01 X+9.29 Y-16.515 Z-1.932 B14.453 C161.955 +G01 X+9.386 Y-16.242 Z-1.931 B14.449 C160.48 +G01 X+9.483 Y-15.969 Z-1.932 B14.453 C159.003 +G01 X+9.594 Y-15.701 Z-1.931 B14.449 C157.529 +G01 X+9.705 Y-15.433 Z-1.932 B14.453 C156.055 +G01 X+9.829 Y-15.17 Z-1.931 B14.449 C154.581 +G01 X+9.953 Y-14.909 Z-1.932 B14.453 C153.106 +G01 X+10.091 Y-14.653 Z-1.931 B14.449 C151.632 +G01 X+10.229 Y-14.398 Z-1.932 B14.453 C150.158 +G01 X+10.379 Y-14.15 Z-1.931 B14.449 C148.684 +G01 X+10.53 Y-13.903 Z-1.932 B14.453 C147.209 +G01 X+10.693 Y-13.663 Z-1.931 B14.448 C145.735 +G01 X+10.857 Y-13.423 Z-1.932 B14.453 C144.261 +G01 X+11.021 Y-13.206 Z-1.931 B14.448 C142.869 +G01 X+11.187 Y-12.988 Z-1.932 B14.452 C141.478 +G01 X+11.224 Y-12.941 C141.191 +G01 X+11.402 Y-12.73 Z-1.931 B14.448 C139.777 +G01 X+11.581 Y-12.518 Z-1.932 B14.453 C138.364 +G01 X+11.779 Y-12.306 Z-1.931 B14.448 C136.889 +G01 X+11.978 Y-12.094 Z-1.932 B14.453 C135.415 +G01 X+12.186 Y-11.893 Z-1.931 B14.448 C133.944 +G01 X+12.395 Y-11.692 Z-1.932 B14.453 C132.474 +G01 X+12.614 Y-11.502 Z-1.931 B14.448 C130.998 +G01 X+12.833 Y-11.311 Z-1.932 B14.453 C129.522 +G01 X+13.053 Y-11.139 Z-1.931 B14.448 C128.098 +G01 X+13.273 Y-10.967 Z-1.932 B14.452 C126.675 +G01 X+13.29 Y-10.954 B14.453 C126.569 +G01 X+13.515 Y-10.796 Z-1.931 B14.448 C125.17 +G01 X+13.74 Y-10.638 Z-1.932 B14.452 C123.771 +G01 X+13.764 Y-10.621 B14.453 C123.617 +G01 X+13.993 Y-10.477 Z-1.931 B14.448 C122.243 +G01 X+14.222 Y-10.333 Z-1.932 B14.451 C120.868 +G01 X+14.255 Y-10.312 B14.453 C120.665 +G01 X+14.487 Y-10.182 Z-1.931 B14.448 C119.315 +G01 X+14.719 Y-10.053 Z-1.932 B14.451 C117.965 +G01 X+14.762 Y-10.029 B14.453 C117.713 +G01 X+14.996 Y-9.914 Z-1.931 B14.448 C116.387 +G01 X+15.23 Y-9.799 Z-1.932 B14.451 C115.062 +G01 X+15.282 Y-9.773 B14.453 C114.761 +G01 X+15.517 Y-9.671 Z-1.931 B14.448 C113.46 +G01 X+15.753 Y-9.57 Z-1.932 B14.45 C112.159 +G01 X+15.815 Y-9.543 B14.453 C111.809 +G01 X+16.05 Y-9.456 Z-1.931 B14.448 C110.532 +G01 X+16.286 Y-9.369 Z-1.932 B14.45 C109.255 +G01 X+16.359 Y-9.342 B14.453 C108.857 +G01 X+16.594 Y-9.268 Z-1.931 B14.448 C107.605 +G01 X+16.83 Y-9.194 Z-1.932 B14.45 C106.352 +G01 X+16.912 Y-9.168 B14.453 C105.905 +G01 X+17.146 Y-9.108 Z-1.931 B14.448 C104.677 +G01 X+17.381 Y-9.048 Z-1.932 B14.45 C103.449 +G01 X+17.474 Y-9.024 B14.453 C102.953 +G01 X+17.706 Y-8.976 Z-1.931 B14.448 C101.749 +G01 X+17.939 Y-8.929 Z-1.932 B14.45 C100.546 +G01 X+18.042 Y-8.908 B14.453 C100.001 +G01 X+18.272 Y-8.874 Z-1.931 B14.448 C98.822 +G01 X+18.502 Y-8.839 Z-1.932 B14.449 C97.642 +G01 X+18.616 Y-8.822 B14.453 C97.048 +G01 X+18.843 Y-8.8 Z-1.931 B14.449 C95.894 +G01 X+19.07 Y-8.778 Z-1.932 C94.739 +G01 X+19.193 Y-8.766 B14.453 C94.096 +G01 X+19.639 Y-8.745 B14.449 C91.836 +G01 X+19.772 Y-8.739 B14.453 C91.144 +G01 X+20.21 Y-8.742 B14.449 C88.933 +G01 X+20.352 B14.453 C88.192 +G01 X+20.78 Y-8.767 B14.449 C86.03 +G01 X+20.931 Y-8.775 B14.453 C85.24 +G01 X+21.348 Y-8.821 B14.449 C83.126 +G01 X+21.508 Y-8.838 B14.453 C82.288 +G01 X+21.912 Y-8.904 Z-1.931 B14.448 C80.223 +G01 X+22.081 Y-8.931 Z-1.932 B14.453 C79.336 +G01 X+22.364 Y-8.991 Z-1.931 B14.449 C77.86 +G01 X+22.648 Y-9.052 Z-1.932 B14.453 C76.383 +G01 X+22.928 Y-9.128 Z-1.931 C74.907 +G01 X+23.208 Y-9.203 Z-1.932 B14.454 C73.431 +G01 X+23.483 Y-9.293 Z-1.931 B14.453 C71.955 +G01 X+23.759 Y-9.383 Z-1.932 C70.479 +G01 X+24.03 Y-9.486 Z-1.931 B14.449 C69.004 +G01 X+24.301 Y-9.59 Z-1.932 B14.453 C67.529 +G01 X+24.566 Y-9.708 Z-1.931 B14.449 C66.055 +G01 X+24.831 Y-9.826 Z-1.932 B14.453 C64.581 +G01 X+25.09 Y-9.956 Z-1.931 B14.449 C63.106 +G01 X+25.348 Y-10.088 Z-1.932 B14.453 C61.632 +G01 X+25.6 Y-10.232 Z-1.931 B14.449 C60.158 +G01 X+25.851 Y-10.376 Z-1.932 B14.453 C58.684 +G01 X+26.095 Y-10.533 Z-1.931 B14.449 C57.209 +G01 X+26.339 Y-10.69 Z-1.932 B14.453 C55.735 +G01 X+26.563 Y-10.851 Z-1.931 B14.449 C54.332 +G01 X+26.786 Y-11.012 Z-1.932 B14.452 C52.93 +G01 X+26.834 Y-11.048 C52.643 +G01 X+27.048 Y-11.219 Z-1.931 B14.448 C51.24 +G01 X+27.263 Y-11.391 Z-1.932 B14.453 C49.838 +G01 X+27.48 Y-11.584 Z-1.931 B14.448 C48.364 +G01 X+27.696 Y-11.777 Z-1.932 B14.453 C46.889 +G01 X+27.903 Y-11.98 Z-1.931 B14.448 C45.415 +G01 X+28.109 Y-12.184 Z-1.932 B14.453 C43.941 +G01 X+28.305 Y-12.397 Z-1.931 B14.448 C42.469 +G01 X+28.501 Y-12.612 Z-1.932 B14.453 C40.998 +G01 X+28.686 Y-12.835 Z-1.931 B14.448 C39.522 +G01 X+28.87 Y-13.059 Z-1.932 B14.453 C38.046 +G01 X+29.035 Y-13.281 Z-1.931 B14.448 C36.634 +G01 X+29.2 Y-13.504 Z-1.932 B14.452 C35.223 +G01 X+29.216 Y-13.525 B14.453 C35.093 +G01 X+29.367 Y-13.752 Z-1.931 B14.448 C33.707 +G01 X+29.517 Y-13.979 Z-1.932 B14.451 C32.32 +G01 X+29.537 Y-14.008 B14.453 C32.141 +G01 X+29.674 Y-14.238 Z-1.931 B14.448 C30.779 +G01 X+29.81 Y-14.469 Z-1.932 B14.451 C29.417 +G01 X+29.833 Y-14.507 B14.453 C29.189 +G01 X+29.955 Y-14.74 Z-1.931 B14.448 C27.851 +G01 X+30.077 Y-14.973 Z-1.932 B14.451 C26.514 +G01 X+30.102 Y-15.02 B14.453 C26.237 +G01 X+30.211 Y-15.255 Z-1.931 B14.448 C24.924 +G01 X+30.319 Y-15.49 Z-1.932 B14.451 C23.61 +G01 X+30.345 Y-15.547 B14.453 C23.285 +G01 X+30.44 Y-15.782 Z-1.931 B14.448 C21.996 +G01 X+30.534 Y-16.018 Z-1.932 B14.45 C20.707 +G01 X+30.561 Y-16.085 B14.453 C20.333 +G01 X+30.642 Y-16.321 Z-1.931 B14.448 C19.069 +G01 X+30.722 Y-16.557 Z-1.932 B14.45 C17.804 +G01 X+30.748 Y-16.634 B14.453 C17.381 +G01 X+30.816 Y-16.869 Z-1.931 B14.448 C16.141 +G01 X+30.882 Y-17.104 Z-1.932 B14.45 C14.901 +G01 X+30.907 Y-17.192 B14.453 C14.429 +G01 X+30.961 Y-17.425 Z-1.931 B14.448 C13.213 +G01 X+31.015 Y-17.659 Z-1.932 B14.45 C11.997 +G01 X+31.037 Y-17.757 B14.453 C11.477 +G01 X+31.078 Y-17.989 Z-1.931 B14.448 C10.285 +G01 X+31.119 Y-18.22 Z-1.932 B14.45 C9.094 +G01 X+31.138 Y-18.328 B14.453 C8.524 +G01 X+31.167 Y-18.557 Z-1.931 B14.448 C7.358 +G01 X+31.195 Y-18.786 Z-1.932 B14.449 C6.191 +G01 X+31.21 Y-18.904 B14.453 C5.572 +G01 X+31.242 Y-19.354 B14.449 C3.288 +G01 X+31.251 Y-19.482 B14.453 C2.62 +G01 X+31.26 Y-19.924 B14.449 C0.384 +G01 X+31.263 Y-20.062 B14.453 C359.668 +G01 X+31.249 Y-20.495 B14.449 C357.481 +G01 X+31.245 Y-20.642 B14.453 C356.716 +G01 X+31.21 Y-21.064 B14.449 C354.578 +G01 X+31.197 Y-21.22 B14.453 C353.764 +G01 X+31.141 Y-21.63 B14.449 C351.675 +G01 X+31.119 Y-21.795 B14.453 C350.812 +G01 X+31.066 Y-22.08 Z-1.931 B14.449 C349.336 +G01 X+31.012 Y-22.365 Z-1.932 B14.453 C347.86 +G01 X+30.944 Y-22.647 Z-1.931 C346.383 +G01 X+30.876 Y-22.929 Z-1.932 C344.907 +G01 X+30.793 Y-23.207 Z-1.931 B14.454 C343.431 +G01 X+30.71 Y-23.484 Z-1.932 B14.453 C341.955 +G01 X+30.614 Y-23.758 Z-1.931 B14.449 C340.48 +G01 X+30.517 Y-24.031 Z-1.932 B14.453 C339.003 +G01 X+30.406 Y-24.299 Z-1.931 B14.449 C337.529 +G01 X+30.295 Y-24.567 Z-1.932 B14.453 C336.055 +G01 X+30.171 Y-24.829 Z-1.931 B14.449 C334.581 +G01 X+30.047 Y-25.091 Z-1.932 B14.453 C333.106 +G01 X+29.909 Y-25.347 Z-1.931 B14.449 C331.632 +G01 X+29.771 Y-25.602 Z-1.932 B14.453 C330.158 +G01 X+29.621 Y-25.85 Z-1.931 B14.449 C328.684 +G01 X+29.47 Y-26.097 Z-1.932 B14.453 C327.209 +G01 X+29.307 Y-26.337 Z-1.931 B14.448 C325.735 +G01 X+29.143 Y-26.577 Z-1.932 B14.453 C324.261 +G01 X+28.979 Y-26.794 Z-1.931 B14.448 C322.869 +G01 X+28.813 Y-27.011 Z-1.932 B14.452 C321.478 +G01 X+28.776 Y-27.058 C321.191 +G01 X+28.598 Y-27.27 Z-1.931 B14.448 C319.777 +G01 X+28.419 Y-27.482 Z-1.932 B14.453 C318.364 +G01 X+28.221 Y-27.694 Z-1.931 B14.448 C316.889 +G01 X+28.022 Y-27.905 Z-1.932 B14.453 C315.415 +G01 X+27.814 Y-28.107 Z-1.931 B14.448 C313.944 +G01 X+27.605 Y-28.308 Z-1.932 B14.453 C312.474 +G01 X+27.386 Y-28.498 Z-1.931 B14.448 C310.998 +G01 X+27.167 Y-28.688 Z-1.932 B14.453 C309.522 +G01 X+26.947 Y-28.861 Z-1.931 B14.448 C308.098 +G01 X+26.727 Y-29.033 Z-1.932 B14.452 C306.675 +G01 X+26.71 Y-29.046 B14.453 C306.569 +G01 X+26.486 Y-29.204 Z-1.931 B14.448 C305.17 +G01 X+26.26 Y-29.362 Z-1.932 B14.452 C303.771 +G01 X+26.236 Y-29.379 B14.453 C303.617 +G01 X+26.007 Y-29.523 Z-1.931 B14.448 C302.243 +G01 X+25.778 Y-29.667 Z-1.932 B14.451 C300.868 +G01 X+25.745 Y-29.688 B14.453 C300.665 +G01 X+25.513 Y-29.817 Z-1.931 B14.448 C299.315 +G01 X+25.281 Y-29.947 Z-1.932 B14.451 C297.965 +G01 X+25.238 Y-29.971 B14.453 C297.713 +G01 X+25.004 Y-30.086 Z-1.931 B14.448 C296.387 +G01 X+24.77 Y-30.201 Z-1.932 B14.451 C295.062 +G01 X+24.718 Y-30.227 B14.453 C294.761 +G01 X+24.483 Y-30.329 Z-1.931 B14.448 C293.46 +G01 X+24.248 Y-30.43 Z-1.932 B14.45 C292.159 +G01 X+24.185 Y-30.456 B14.453 C291.809 +G01 X+23.95 Y-30.544 Z-1.931 B14.448 C290.532 +G01 X+23.714 Y-30.631 Z-1.932 B14.45 C289.255 +G01 X+23.641 Y-30.658 B14.453 C288.857 +G01 X+23.406 Y-30.732 Z-1.931 B14.448 C287.605 +G01 X+23.17 Y-30.806 Z-1.932 B14.45 C286.352 +G01 X+23.088 Y-30.831 B14.453 C285.905 +G01 X+22.854 Y-30.892 Z-1.931 B14.448 C284.677 +G01 X+22.619 Y-30.952 Z-1.932 B14.45 C283.449 +G01 X+22.526 Y-30.976 B14.453 C282.953 +G01 X+22.294 Y-31.023 Z-1.931 B14.448 C281.749 +G01 X+22.061 Y-31.071 Z-1.932 B14.45 C280.546 +G01 X+21.958 Y-31.091 B14.453 C280.001 +G01 X+21.728 Y-31.126 Z-1.931 B14.448 C278.822 +G01 X+21.498 Y-31.161 Z-1.932 B14.449 C277.642 +G01 X+21.384 Y-31.178 B14.453 C277.048 +G01 X+21.157 Y-31.2 Z-1.931 B14.449 C275.894 +G01 X+20.93 Y-31.222 Z-1.932 C274.739 +G01 X+20.807 Y-31.234 B14.453 C274.096 +G01 X+20.361 Y-31.255 B14.449 C271.836 +G01 X+20.228 Y-31.261 B14.453 C271.144 +G01 X+19.79 Y-31.258 B14.449 C268.933 +G01 X+19.648 Y-31.257 B14.453 C268.192 +G01 X+19.22 Y-31.233 B14.449 C266.03 +G01 X+19.069 Y-31.224 B14.453 C265.24 +G01 X+18.652 Y-31.179 B14.449 C263.126 +G01 X+18.492 Y-31.162 B14.453 C262.288 +G01 X+18.088 Y-31.096 Z-1.931 B14.448 C260.223 +G01 X+17.919 Y-31.069 Z-1.932 B14.453 C259.336 +G01 X+17.636 Y-31.008 Z-1.931 B14.449 C257.86 +G01 X+17.352 Y-30.947 Z-1.932 B14.453 C256.383 +G01 X+17.072 Y-30.872 Z-1.931 C254.907 +G01 X+16.792 Y-30.797 Z-1.932 B14.454 C253.431 +G01 X+16.517 Y-30.707 Z-1.931 B14.453 C251.955 +G01 X+16.241 Y-30.617 Z-1.932 C250.479 +G01 X+15.97 Y-30.514 Z-1.931 B14.449 C249.004 +G01 X+15.699 Y-30.41 Z-1.932 B14.453 C247.529 +G01 X+15.434 Y-30.292 Z-1.931 B14.449 C246.056 +G01 X+15.169 Y-30.174 Z-1.932 B14.453 C244.582 +G01 X+14.88 Y-30.028 Z-1.931 B14.448 C242.967 +G01 X+14.59 Y-29.88 Z-1.933 B14.455 C241.352 +G01 X+14.37 Y-29.753 Z-1.932 B14.45 C240.022 +G01 X+14.15 Y-29.625 B14.454 C238.691 +G01 X+13.905 Y-29.467 Z-1.931 B14.449 C237.213 +G01 X+13.661 Y-29.31 Z-1.932 B14.453 C235.735 +G01 X+13.437 Y-29.149 Z-1.931 B14.449 C234.332 +G01 X+13.214 Y-28.988 Z-1.932 B14.452 C232.93 +G01 X+13.166 Y-28.952 C232.642 +G01 X+12.952 Y-28.78 Z-1.931 B14.448 C231.24 +G01 X+12.737 Y-28.609 Z-1.932 B14.453 C229.838 +G01 X+12.52 Y-28.416 Z-1.931 B14.448 C228.364 +G01 X+12.304 Y-28.223 Z-1.932 B14.453 C226.889 +G01 X+12.097 Y-28.02 Z-1.931 B14.448 C225.415 +G01 X+11.891 Y-27.816 Z-1.932 B14.452 C223.941 +G01 X+11.654 Y-27.557 Z-1.931 B14.449 C222.154 +G01 X+11.6 Y-27.487 Z-1.93 B14.439 C221.698 +G01 X+11.56 Y-27.409 Z-1.924 B14.41 C221.263 +G01 X+11.534 Y-27.326 Z-1.915 B14.363 C220.87 +G01 X+11.46 Y-26.982 Z-1.873 B14.149 C219.27 +G01 X+11.437 Y-26.906 Z-1.866 B14.116 C218.885 +G01 X+11.402 Y-26.835 Z-1.861 B14.093 C218.481 +G01 X+11.357 Y-26.77 Z-1.86 B14.086 C218.071 +G01 X+11.188 Y-26.543 Z-1.859 B14.082 C216.595 +G01 X+11.02 Y-26.316 Z-1.86 B14.086 C215.119 +G01 X+10.863 Y-26.081 Z-1.859 B14.082 C213.643 +G01 X+10.706 Y-25.846 Z-1.86 B14.086 C212.168 +G01 X+10.562 Y-25.603 Z-1.859 B14.082 C210.693 +G01 X+10.418 Y-25.359 Z-1.86 B14.086 C209.217 +G01 X+10.286 Y-25.109 Z-1.859 B14.082 C207.742 +G01 X+10.155 Y-24.859 Z-1.86 B14.086 C206.266 +G01 X+10.036 Y-24.603 Z-1.859 B14.082 C204.791 +G01 X+9.918 Y-24.346 Z-1.86 B14.087 C203.315 +G01 X+9.812 Y-24.084 Z-1.859 B14.082 C201.84 +G01 X+9.707 Y-23.821 Z-1.86 B14.087 C200.365 +G01 X+9.615 Y-23.554 Z-1.859 B14.082 C198.889 +G01 X+9.524 Y-23.286 Z-1.86 B14.087 C197.414 +G01 X+9.446 Y-23.014 Z-1.859 B14.082 C195.938 +G01 X+9.369 Y-22.742 Z-1.86 B14.087 C194.463 +G01 X+9.305 Y-22.467 Z-1.859 B14.082 C192.987 +G01 X+9.242 Y-22.192 Z-1.86 B14.087 C191.512 +G01 X+9.192 Y-21.913 Z-1.859 B14.082 C190.037 +G01 X+9.143 Y-21.635 Z-1.86 B14.087 C188.561 +G01 X+9.108 Y-21.354 Z-1.859 C187.086 +G01 X+9.073 Y-21.074 Z-1.86 C185.61 +G01 X+9.053 Y-20.792 Z-1.859 C184.135 +G01 X+9.033 Y-20.51 Z-1.86 C182.659 +G01 X+9.027 Y-20.227 Z-1.859 C181.184 +G01 X+9.021 Y-19.945 Z-1.86 C179.708 +G01 X+9.029 Y-19.662 Z-1.859 C178.233 +G01 X+9.038 Y-19.379 Z-1.86 C176.758 +G01 X+9.061 Y-19.098 Z-1.859 C175.282 +G01 X+9.085 Y-18.816 Z-1.86 C173.807 +G01 X+9.122 Y-18.536 Z-1.859 C172.331 +G01 X+9.16 Y-18.256 Z-1.86 C170.856 +G01 X+9.212 Y-17.978 Z-1.859 C169.38 +G01 X+9.264 Y-17.7 Z-1.86 C167.905 +G01 X+9.33 Y-17.425 Z-1.859 B14.082 C166.43 +G01 X+9.397 Y-17.15 Z-1.86 B14.087 C164.954 +G01 X+9.477 Y-16.879 Z-1.859 B14.082 C163.479 +G01 X+9.558 Y-16.608 Z-1.86 B14.087 C162.003 +G01 X+9.693 Y-16.226 Z-1.859 B14.082 C159.886 +G01 X+9.746 Y-16.075 Z-1.86 B14.087 C159.052 +G01 X+9.897 Y-15.709 Z-1.859 B14.082 C156.983 +G01 X+9.962 Y-15.553 Z-1.86 B14.086 C156.101 +G01 X+10.128 Y-15.202 Z-1.859 B14.082 C154.079 +G01 X+10.204 Y-15.042 Z-1.86 B14.086 C153.151 +G01 X+10.384 Y-14.709 Z-1.859 B14.082 C151.176 +G01 X+10.472 Y-14.544 Z-1.86 B14.086 C150.2 +G01 X+10.664 Y-14.228 Z-1.859 B14.082 C148.272 +G01 X+10.766 Y-14.061 Z-1.86 B14.086 C147.249 +G01 X+10.968 Y-13.763 Z-1.859 B14.082 C145.369 +G01 X+11.084 Y-13.593 Z-1.86 B14.086 C144.298 +G01 X+11.254 Y-13.368 Z-1.859 C142.823 +G01 X+11.425 Y-13.143 Z-1.86 C141.347 +G01 X+11.607 Y-12.927 Z-1.859 B14.082 C139.872 +G01 X+11.79 Y-12.71 Z-1.86 B14.086 C138.396 +G01 X+11.983 Y-12.504 Z-1.859 B14.082 C136.921 +G01 X+12.176 Y-12.298 Z-1.86 B14.086 C135.445 +G01 X+12.379 Y-12.101 Z-1.859 B14.081 C133.97 +G01 X+12.583 Y-11.905 Z-1.86 B14.086 C132.494 +G01 X+12.796 Y-11.719 Z-1.859 B14.081 C131.021 +G01 X+13.009 Y-11.534 Z-1.86 B14.086 C129.548 +G01 X+13.232 Y-11.359 Z-1.859 B14.081 C128.071 +G01 X+13.454 Y-11.185 Z-1.86 B14.086 C126.594 +G01 X+13.686 Y-11.022 Z-1.859 B14.082 C125.119 +G01 X+13.917 Y-10.86 Z-1.86 B14.086 C123.643 +G01 X+14.156 Y-10.709 Z-1.859 B14.082 C122.168 +G01 X+14.396 Y-10.559 Z-1.86 B14.086 C120.693 +G01 X+14.642 Y-10.421 Z-1.859 B14.082 C119.217 +G01 X+14.889 Y-10.283 Z-1.86 B14.086 C117.742 +G01 X+15.142 Y-10.158 Z-1.859 B14.082 C116.266 +G01 X+15.396 Y-10.033 Z-1.86 B14.086 C114.791 +G01 X+15.655 Y-9.921 Z-1.859 B14.082 C113.315 +G01 X+15.915 Y-9.809 Z-1.86 B14.087 C111.84 +G01 X+16.18 Y-9.71 Z-1.859 B14.082 C110.364 +G01 X+16.445 Y-9.612 Z-1.86 B14.087 C108.889 +G01 X+16.715 Y-9.527 Z-1.859 B14.082 C107.414 +G01 X+16.985 Y-9.443 Z-1.86 B14.087 C105.938 +G01 X+17.258 Y-9.372 Z-1.859 B14.082 C104.463 +G01 X+17.532 Y-9.302 Z-1.86 B14.087 C102.987 +G01 X+17.809 Y-9.245 Z-1.859 B14.082 C101.512 +G01 X+18.086 Y-9.189 Z-1.86 B14.087 C100.036 +G01 X+18.366 Y-9.146 Z-1.859 B14.082 C98.561 +G01 X+18.645 Y-9.105 Z-1.86 B14.087 C97.086 +G01 X+18.927 Y-9.077 Z-1.859 C95.61 +G01 X+19.208 Y-9.049 Z-1.86 C94.135 +G01 X+19.49 Y-9.036 Z-1.859 C92.659 +G01 X+19.773 Y-9.023 Z-1.86 C91.184 +G01 X+20.055 Y-9.024 Z-1.859 C89.708 +G01 X+20.338 Y-9.026 Z-1.86 C88.233 +G01 X+20.62 Y-9.042 Z-1.859 C86.758 +G01 X+20.903 Y-9.058 Z-1.86 C85.282 +G01 X+21.184 Y-9.088 Z-1.859 C83.807 +G01 X+21.465 Y-9.119 Z-1.86 C82.331 +G01 X+21.744 Y-9.164 Z-1.859 C80.856 +G01 X+22.023 Y-9.209 Z-1.86 C79.38 +G01 X+22.299 Y-9.268 Z-1.859 C77.905 +G01 X+22.576 Y-9.327 Z-1.86 C76.43 +G01 X+22.849 Y-9.4 Z-1.859 B14.082 C74.954 +G01 X+23.122 Y-9.474 Z-1.86 B14.087 C73.479 +G01 X+23.391 Y-9.561 Z-1.859 B14.082 C72.003 +G01 X+23.659 Y-9.648 Z-1.86 B14.087 C70.528 +G01 X+24.034 Y-9.792 Z-1.859 B14.082 C68.434 +G01 X+24.187 Y-9.851 Z-1.86 B14.087 C67.577 +G01 X+24.546 Y-10.009 Z-1.859 B14.082 C65.531 +G01 X+24.704 Y-10.08 Z-1.86 B14.086 C64.626 +G01 X+25.046 Y-10.253 Z-1.859 B14.082 C62.628 +G01 X+25.209 Y-10.335 Z-1.86 B14.086 C61.675 +G01 X+25.533 Y-10.521 Z-1.859 B14.082 C59.724 +G01 X+25.699 Y-10.616 Z-1.86 B14.086 C58.724 +G01 X+26.006 Y-10.813 Z-1.859 B14.082 C56.821 +G01 X+26.175 Y-10.922 Z-1.86 B14.086 C55.773 +G01 X+26.464 Y-11.129 Z-1.859 B14.082 C53.917 +G01 X+26.634 Y-11.252 Z-1.86 B14.086 C52.822 +G01 X+26.855 Y-11.428 Z-1.859 C51.347 +G01 X+27.076 Y-11.605 Z-1.86 C49.872 +G01 X+27.287 Y-11.792 Z-1.859 B14.082 C48.396 +G01 X+27.498 Y-11.98 Z-1.86 B14.086 C46.921 +G01 X+27.7 Y-12.178 Z-1.859 B14.081 C45.445 +G01 X+27.901 Y-12.377 Z-1.86 B14.086 C43.97 +G01 X+28.092 Y-12.585 Z-1.859 B14.081 C42.498 +G01 X+28.283 Y-12.794 Z-1.86 B14.086 C41.026 +G01 X+28.463 Y-13.012 Z-1.859 B14.081 C39.548 +G01 X+28.643 Y-13.23 Z-1.86 B14.086 C38.071 +G01 X+28.812 Y-13.456 Z-1.859 B14.082 C36.595 +G01 X+28.98 Y-13.684 Z-1.86 B14.086 C35.119 +G01 X+29.137 Y-13.919 Z-1.859 B14.082 C33.643 +G01 X+29.294 Y-14.154 Z-1.86 B14.086 C32.168 +G01 X+29.438 Y-14.397 Z-1.859 B14.082 C30.693 +G01 X+29.582 Y-14.64 Z-1.86 B14.086 C29.217 +G01 X+29.714 Y-14.89 Z-1.859 B14.082 C27.742 +G01 X+29.845 Y-15.141 Z-1.86 B14.086 C26.266 +G01 X+29.964 Y-15.397 Z-1.859 B14.082 C24.791 +G01 X+30.082 Y-15.654 Z-1.86 B14.087 C23.315 +G01 X+30.188 Y-15.916 Z-1.859 B14.082 C21.84 +G01 X+30.293 Y-16.179 Z-1.86 B14.087 C20.365 +G01 X+30.385 Y-16.446 Z-1.859 B14.082 C18.889 +G01 X+30.476 Y-16.714 Z-1.86 B14.087 C17.414 +G01 X+30.554 Y-16.986 Z-1.859 B14.082 C15.938 +G01 X+30.631 Y-17.257 Z-1.86 B14.087 C14.463 +G01 X+30.695 Y-17.533 Z-1.859 B14.082 C12.987 +G01 X+30.758 Y-17.808 Z-1.86 B14.087 C11.512 +G01 X+30.808 Y-18.087 Z-1.859 B14.082 C10.037 +G01 X+30.857 Y-18.365 Z-1.86 B14.087 C8.561 +G01 X+30.892 Y-18.646 Z-1.859 C7.086 +G01 X+30.927 Y-18.926 Z-1.86 C5.61 +G01 X+30.947 Y-19.208 Z-1.859 C4.135 +G01 X+30.967 Y-19.49 Z-1.86 C2.659 +G01 X+30.973 Y-19.773 Z-1.859 C1.184 +G01 X+30.979 Y-20.055 Z-1.86 C359.708 +G01 X+30.971 Y-20.338 Z-1.859 C358.233 +G01 X+30.962 Y-20.62 Z-1.86 C356.758 +G01 X+30.939 Y-20.902 Z-1.859 C355.282 +G01 X+30.915 Y-21.184 Z-1.86 C353.807 +G01 X+30.878 Y-21.464 Z-1.859 C352.331 +G01 X+30.84 Y-21.744 Z-1.86 C350.856 +G01 X+30.788 Y-22.022 Z-1.859 C349.38 +G01 X+30.736 Y-22.3 Z-1.86 C347.905 +G01 X+30.67 Y-22.575 Z-1.859 B14.082 C346.43 +G01 X+30.603 Y-22.85 Z-1.86 B14.087 C344.954 +G01 X+30.523 Y-23.121 Z-1.859 B14.082 C343.479 +G01 X+30.442 Y-23.392 Z-1.86 B14.087 C342.003 +G01 X+30.307 Y-23.774 Z-1.859 B14.082 C339.886 +G01 X+30.254 Y-23.925 Z-1.86 B14.087 C339.052 +G01 X+30.103 Y-24.291 Z-1.859 B14.082 C336.983 +G01 X+30.038 Y-24.447 Z-1.86 B14.086 C336.101 +G01 X+29.872 Y-24.797 Z-1.859 B14.082 C334.079 +G01 X+29.796 Y-24.958 Z-1.86 B14.086 C333.151 +G01 X+29.616 Y-25.291 Z-1.859 B14.082 C331.176 +G01 X+29.528 Y-25.456 Z-1.86 B14.086 C330.2 +G01 X+29.336 Y-25.772 Z-1.859 B14.082 C328.272 +G01 X+29.234 Y-25.939 Z-1.86 B14.086 C327.249 +G01 X+29.032 Y-26.237 Z-1.859 B14.082 C325.369 +G01 X+28.916 Y-26.407 Z-1.86 B14.086 C324.298 +G01 X+28.746 Y-26.632 Z-1.859 C322.823 +G01 X+28.575 Y-26.857 Z-1.86 C321.347 +G01 X+28.393 Y-27.073 Z-1.859 B14.082 C319.871 +G01 X+28.21 Y-27.289 Z-1.86 B14.086 C318.396 +G01 X+28.017 Y-27.496 Z-1.859 B14.082 C316.921 +G01 X+27.824 Y-27.702 Z-1.86 B14.086 C315.445 +G01 X+27.621 Y-27.899 Z-1.859 B14.081 C313.97 +G01 X+27.417 Y-28.095 Z-1.86 B14.086 C312.494 +G01 X+27.204 Y-28.281 Z-1.859 B14.081 C311.021 +G01 X+26.991 Y-28.466 Z-1.86 B14.086 C309.548 +G01 X+26.768 Y-28.64 Z-1.859 B14.081 C308.071 +G01 X+26.546 Y-28.815 Z-1.86 B14.086 C306.594 +G01 X+26.314 Y-28.977 Z-1.859 B14.082 C305.119 +G01 X+26.083 Y-29.14 Z-1.86 B14.086 C303.643 +G01 X+25.844 Y-29.291 Z-1.859 B14.082 C302.168 +G01 X+25.604 Y-29.441 Z-1.86 B14.086 C300.693 +G01 X+25.358 Y-29.579 Z-1.859 B14.082 C299.217 +G01 X+25.111 Y-29.717 Z-1.86 B14.086 C297.742 +G01 X+24.858 Y-29.842 Z-1.859 B14.082 C296.266 +G01 X+24.604 Y-29.967 Z-1.86 B14.086 C294.791 +G01 X+24.345 Y-30.079 Z-1.859 B14.082 C293.315 +G01 X+24.085 Y-30.191 Z-1.86 B14.087 C291.84 +G01 X+23.82 Y-30.29 Z-1.859 B14.082 C290.364 +G01 X+23.555 Y-30.388 Z-1.86 B14.087 C288.889 +G01 X+23.285 Y-30.473 Z-1.859 B14.082 C287.414 +G01 X+23.015 Y-30.557 Z-1.86 B14.087 C285.938 +G01 X+22.742 Y-30.628 Z-1.859 B14.082 C284.463 +G01 X+22.468 Y-30.698 Z-1.86 B14.087 C282.987 +G01 X+22.191 Y-30.755 Z-1.859 B14.082 C281.512 +G01 X+21.914 Y-30.811 Z-1.86 B14.087 C280.036 +G01 X+21.634 Y-30.853 Z-1.859 B14.082 C278.561 +G01 X+21.355 Y-30.895 Z-1.86 B14.087 C277.086 +G01 X+21.073 Y-30.923 Z-1.859 C275.61 +G01 X+20.792 Y-30.951 Z-1.86 C274.135 +G01 X+20.51 Y-30.964 Z-1.859 C272.659 +G01 X+20.227 Y-30.977 Z-1.86 C271.184 +G01 X+19.945 Y-30.976 Z-1.859 C269.708 +G01 X+19.662 Y-30.974 Z-1.86 C268.233 +G01 X+19.38 Y-30.958 Z-1.859 C266.758 +G01 X+19.097 Y-30.942 Z-1.86 C265.282 +G01 X+18.816 Y-30.912 Z-1.859 C263.807 +G01 X+18.535 Y-30.881 Z-1.86 C262.331 +G01 X+18.256 Y-30.836 Z-1.859 C260.856 +G01 X+17.977 Y-30.791 Z-1.86 C259.38 +G01 X+17.701 Y-30.732 Z-1.859 C257.905 +G01 X+17.424 Y-30.673 Z-1.86 C256.43 +G01 X+17.151 Y-30.6 Z-1.859 B14.082 C254.954 +G01 X+16.878 Y-30.526 Z-1.86 B14.087 C253.479 +G01 X+16.609 Y-30.439 Z-1.859 B14.082 C252.003 +G01 X+16.341 Y-30.351 Z-1.86 B14.087 C250.528 +G01 X+15.966 Y-30.208 Z-1.859 B14.082 C248.434 +G01 X+15.813 Y-30.149 Z-1.86 B14.087 C247.577 +G01 X+15.554 Y-30.035 Z-1.859 B14.082 C246.102 +G01 X+15.296 Y-29.92 Z-1.86 B14.086 C244.627 +G01 X+14.954 Y-29.747 Z-1.859 B14.082 C242.627 +G01 X+14.726 Y-29.631 Z-1.86 B14.088 C241.352 +G01 X+14.514 Y-29.508 B14.084 C240.043 +G01 X+14.302 Y-29.385 B14.087 C238.734 +G01 X+13.994 Y-29.187 Z-1.859 B14.082 C236.821 +G01 X+13.825 Y-29.078 Z-1.86 B14.086 C235.774 +G01 X+13.536 Y-28.871 Z-1.859 B14.082 C233.917 +G01 X+13.366 Y-28.748 Z-1.86 B14.086 C232.822 +G01 X+13.145 Y-28.572 Z-1.859 C231.347 +G01 X+12.924 Y-28.395 Z-1.86 C229.872 +G01 X+12.713 Y-28.208 Z-1.859 B14.082 C228.396 +G01 X+12.502 Y-28.02 Z-1.86 B14.086 C226.921 +G01 X+12.3 Y-27.822 Z-1.859 B14.081 C225.445 +G01 X+12.099 Y-27.623 Z-1.86 B14.086 C223.97 +G01 X+11.864 Y-27.367 Z-1.859 B14.082 C222.157 +G01 X+11.81 Y-27.297 Z-1.857 B14.073 C221.698 +G01 X+11.77 Y-27.219 Z-1.852 B14.044 C221.252 +G01 X+11.744 Y-27.135 Z-1.843 B13.997 C220.824 +G01 X+11.669 Y-26.79 Z-1.802 B13.782 C219.157 +G01 X+11.649 Y-26.723 Z-1.796 B13.747 C218.816 +G01 X+11.621 Y-26.659 Z-1.791 B13.724 C218.461 +G01 X+11.583 Y-26.6 Z-1.79 B13.714 C218.103 +G01 X+11.419 Y-26.379 Z-1.789 B13.709 C216.626 +G01 X+11.255 Y-26.158 Z-1.79 B13.714 C215.149 +G01 X+11.102 Y-25.929 Z-1.789 B13.709 C213.672 +G01 X+10.949 Y-25.699 Z-1.79 B13.714 C212.196 +G01 X+10.808 Y-25.463 Z-1.789 C210.719 +G01 X+10.668 Y-25.226 Z-1.79 C209.242 +G01 X+10.502 Y-24.911 Z-1.789 B13.71 C207.317 +G01 X+10.411 Y-24.738 Z-1.79 B13.714 C206.288 +G01 X+10.295 Y-24.489 Z-1.789 B13.71 C204.812 +G01 X+10.18 Y-24.239 Z-1.79 B13.714 C203.335 +G01 X+10.088 Y-24.01 Z-1.789 B13.71 C202.021 +G01 X+9.996 Y-23.781 B13.712 C200.707 +G01 X+9.975 Y-23.727 Z-1.79 B13.714 C200.381 +G01 X+9.896 Y-23.499 Z-1.789 B13.71 C199.092 +G01 X+9.818 Y-23.27 B13.712 C197.804 +G01 X+9.796 Y-23.206 Z-1.79 B13.714 C197.427 +G01 X+9.731 Y-22.978 Z-1.789 B13.71 C196.164 +G01 X+9.666 Y-22.75 B13.711 C194.901 +G01 X+9.645 Y-22.677 Z-1.79 B13.714 C194.474 +G01 X+9.592 Y-22.45 Z-1.789 B13.71 C193.236 +G01 X+9.54 Y-22.223 B13.711 C191.997 +G01 X+9.521 Y-22.14 Z-1.79 B13.714 C191.52 +G01 X+9.472 Y-21.869 Z-1.789 B13.71 C190.043 +G01 X+9.424 Y-21.598 Z-1.79 B13.715 C188.566 +G01 X+9.389 Y-21.318 Z-1.789 B13.71 C187.057 +G01 X+9.355 Y-21.038 Z-1.79 B13.714 C185.548 +G01 X+9.335 Y-20.77 Z-1.789 B13.71 C184.107 +G01 X+9.316 Y-20.502 Z-1.79 B13.715 C182.666 +G01 X+9.31 Y-20.227 Z-1.789 C181.191 +G01 X+9.304 Y-19.951 Z-1.79 C179.717 +G01 X+9.312 Y-19.676 Z-1.789 C178.242 +G01 X+9.321 Y-19.401 Z-1.79 C176.767 +G01 X+9.343 Y-19.126 Z-1.789 C175.292 +G01 X+9.366 Y-18.852 Z-1.79 C173.817 +G01 X+9.402 Y-18.579 Z-1.789 C172.342 +G01 X+9.439 Y-18.306 Z-1.79 C170.868 +G01 X+9.49 Y-18.035 Z-1.789 B13.71 C169.393 +G01 X+9.54 Y-17.765 Z-1.79 B13.715 C167.918 +G01 X+9.599 Y-17.521 Z-1.789 B13.71 C166.571 +G01 X+9.658 Y-17.277 B13.713 C165.224 +G01 X+9.669 Y-17.229 Z-1.79 B13.715 C164.968 +G01 X+9.739 Y-16.993 Z-1.789 B13.71 C163.644 +G01 X+9.809 Y-16.756 B13.713 C162.32 +G01 X+9.826 Y-16.701 Z-1.79 B13.715 C162.019 +G01 X+9.906 Y-16.473 Z-1.789 B13.71 C160.718 +G01 X+9.987 Y-16.244 B13.713 C159.417 +G01 X+10.009 Y-16.182 Z-1.79 B13.714 C159.069 +G01 X+10.099 Y-15.962 Z-1.789 B13.71 C157.791 +G01 X+10.19 Y-15.742 B13.712 C156.513 +G01 X+10.219 Y-15.672 Z-1.79 B13.714 C156.119 +G01 X+10.319 Y-15.461 Z-1.789 B13.71 C154.865 +G01 X+10.418 Y-15.251 B13.712 C153.61 +G01 X+10.455 Y-15.175 Z-1.79 B13.714 C153.17 +G01 X+10.563 Y-14.973 Z-1.789 B13.71 C151.938 +G01 X+10.671 Y-14.772 B13.712 C150.706 +G01 X+10.716 Y-14.69 Z-1.79 B13.714 C150.22 +G01 X+10.832 Y-14.498 Z-1.789 B13.71 C149.012 +G01 X+10.948 Y-14.306 B13.712 C147.803 +G01 X+11.001 Y-14.219 Z-1.79 B13.714 C147.27 +G01 X+11.249 Y-13.855 Z-1.789 B13.712 C144.899 +G01 X+11.311 Y-13.763 Z-1.79 B13.714 C144.321 +G01 X+11.571 Y-13.419 Z-1.789 B13.712 C141.996 +G01 X+11.643 Y-13.324 Z-1.79 B13.714 C141.371 +G01 X+11.915 Y-13.001 Z-1.789 B13.711 C139.092 +G01 X+11.998 Y-12.903 Z-1.79 B13.714 C138.422 +G01 X+12.28 Y-12.601 Z-1.789 B13.711 C136.189 +G01 X+12.374 Y-12.5 Z-1.79 B13.714 C135.472 +G01 X+12.572 Y-12.309 Z-1.789 B13.709 C133.997 +G01 X+12.77 Y-12.118 Z-1.79 B13.714 C132.522 +G01 X+12.978 Y-11.937 Z-1.789 B13.709 C131.05 +G01 X+13.186 Y-11.756 Z-1.79 B13.714 C129.578 +G01 X+13.402 Y-11.586 Z-1.789 B13.709 C128.102 +G01 X+13.619 Y-11.416 Z-1.79 B13.714 C126.626 +G01 X+13.844 Y-11.257 Z-1.789 B13.709 C125.149 +G01 X+14.069 Y-11.099 Z-1.79 B13.714 C123.672 +G01 X+14.302 Y-10.952 Z-1.789 C122.196 +G01 X+14.536 Y-10.805 Z-1.79 C120.719 +G01 X+14.85 Y-10.629 Z-1.789 B13.71 C118.769 +G01 X+15.016 Y-10.536 Z-1.79 B13.714 C117.765 +G01 X+15.263 Y-10.414 Z-1.789 B13.71 C116.288 +G01 X+15.51 Y-10.292 Z-1.79 B13.714 C114.811 +G01 X+15.738 Y-10.194 Z-1.789 B13.71 C113.485 +G01 X+15.966 Y-10.095 B13.712 C112.159 +G01 X+16.016 Y-10.074 Z-1.79 B13.714 C111.858 +G01 X+16.244 Y-9.989 Z-1.789 B13.71 C110.557 +G01 X+16.473 Y-9.904 B13.712 C109.255 +G01 X+16.532 Y-9.882 Z-1.79 B13.714 C108.904 +G01 X+16.76 Y-9.81 Z-1.789 B13.71 C107.628 +G01 X+16.989 Y-9.738 B13.712 C106.352 +G01 X+17.057 Y-9.717 Z-1.79 B13.714 C105.95 +G01 X+17.285 Y-9.658 Z-1.789 B13.71 C104.7 +G01 X+17.513 Y-9.599 B13.711 C103.449 +G01 X+17.591 Y-9.579 Z-1.79 B13.714 C102.997 +G01 X+17.86 Y-9.524 Z-1.789 B13.71 C101.52 +G01 X+18.13 Y-9.469 Z-1.79 B13.714 C100.043 +G01 X+18.411 Y-9.427 Z-1.789 B13.71 C98.521 +G01 X+18.692 Y-9.385 B13.714 C96.999 +G01 X+18.958 Y-9.358 B13.71 C95.57 +G01 X+19.223 Y-9.332 Z-1.79 B13.715 C94.141 +G01 X+19.498 Y-9.319 Z-1.789 C92.666 +G01 X+19.773 Y-9.307 Z-1.79 C91.191 +G01 X+20.049 Y-9.308 Z-1.789 C89.717 +G01 X+20.324 Y-9.309 Z-1.79 C88.242 +G01 X+20.599 Y-9.324 Z-1.789 C86.767 +G01 X+20.874 Y-9.34 Z-1.79 C85.292 +G01 X+21.148 Y-9.369 Z-1.789 C83.817 +G01 X+21.421 Y-9.399 Z-1.79 C82.342 +G01 X+21.693 Y-9.442 Z-1.789 C80.868 +G01 X+21.965 Y-9.486 Z-1.79 C79.393 +G01 X+22.235 Y-9.544 Z-1.789 B13.71 C77.918 +G01 X+22.504 Y-9.601 Z-1.79 B13.715 C76.443 +G01 X+22.744 Y-9.666 Z-1.789 B13.71 C75.108 +G01 X+22.984 Y-9.73 B13.713 C73.772 +G01 X+23.036 Y-9.744 Z-1.79 B13.715 C73.493 +G01 X+23.268 Y-9.819 Z-1.789 B13.71 C72.181 +G01 X+23.501 Y-9.895 B13.713 C70.868 +G01 X+23.56 Y-9.914 Z-1.79 B13.715 C70.544 +G01 X+23.784 Y-9.999 Z-1.789 B13.71 C69.254 +G01 X+24.008 Y-10.085 B13.713 C67.965 +G01 X+24.074 Y-10.111 Z-1.79 B13.714 C67.594 +G01 X+24.29 Y-10.206 Z-1.789 B13.71 C66.328 +G01 X+24.505 Y-10.301 B13.712 C65.061 +G01 X+24.578 Y-10.333 Z-1.79 B13.714 C64.645 +G01 X+24.784 Y-10.438 Z-1.789 B13.71 C63.401 +G01 X+24.99 Y-10.542 B13.712 C62.158 +G01 X+25.07 Y-10.582 Z-1.79 B13.714 C61.695 +G01 X+25.266 Y-10.694 Z-1.789 B13.71 C60.475 +G01 X+25.463 Y-10.807 B13.712 C59.255 +G01 X+25.548 Y-10.855 Z-1.79 B13.714 C58.745 +G01 X+25.922 Y-11.096 Z-1.789 B13.712 C56.351 +G01 X+26.011 Y-11.153 Z-1.79 B13.714 C55.796 +G01 X+26.365 Y-11.407 Z-1.789 B13.712 C53.447 +G01 X+26.459 Y-11.474 Z-1.79 B13.714 C52.846 +G01 X+26.792 Y-11.741 Z-1.789 B13.711 C50.544 +G01 X+26.889 Y-11.818 Z-1.79 B13.714 C49.896 +G01 X+27.202 Y-12.095 Z-1.789 B13.711 C47.641 +G01 X+27.301 Y-12.184 Z-1.79 B13.714 C46.947 +G01 X+27.497 Y-12.376 Z-1.789 B13.709 C45.472 +G01 X+27.694 Y-12.57 Z-1.79 B13.714 C43.997 +G01 X+27.88 Y-12.773 Z-1.789 B13.709 C42.522 +G01 X+28.066 Y-12.976 Z-1.79 B13.714 C41.047 +G01 X+28.241 Y-13.188 Z-1.789 C39.575 +G01 X+28.417 Y-13.4 Z-1.79 C38.103 +G01 X+28.581 Y-13.621 Z-1.789 B13.709 C36.626 +G01 X+28.745 Y-13.842 Z-1.79 B13.714 C35.149 +G01 X+28.898 Y-14.071 Z-1.789 B13.709 C33.672 +G01 X+29.051 Y-14.301 Z-1.79 B13.714 C32.196 +G01 X+29.192 Y-14.537 Z-1.789 C30.719 +G01 X+29.332 Y-14.774 Z-1.79 C29.242 +G01 X+29.498 Y-15.089 Z-1.789 B13.71 C27.317 +G01 X+29.589 Y-15.261 Z-1.79 B13.714 C26.288 +G01 X+29.705 Y-15.511 Z-1.789 B13.71 C24.812 +G01 X+29.82 Y-15.761 Z-1.79 B13.714 C23.335 +G01 X+29.912 Y-15.99 Z-1.789 B13.71 C22.021 +G01 X+30.004 Y-16.218 B13.712 C20.707 +G01 X+30.025 Y-16.272 Z-1.79 B13.714 C20.381 +G01 X+30.104 Y-16.501 Z-1.789 B13.71 C19.092 +G01 X+30.182 Y-16.73 B13.712 C17.804 +G01 X+30.204 Y-16.793 Z-1.79 B13.714 C17.427 +G01 X+30.269 Y-17.022 Z-1.789 B13.71 C16.164 +G01 X+30.334 Y-17.25 B13.711 C14.901 +G01 X+30.355 Y-17.323 Z-1.79 B13.714 C14.474 +G01 X+30.408 Y-17.55 Z-1.789 B13.71 C13.236 +G01 X+30.46 Y-17.777 B13.711 C11.997 +G01 X+30.479 Y-17.86 Z-1.79 B13.714 C11.52 +G01 X+30.528 Y-18.131 Z-1.789 B13.71 C10.043 +G01 X+30.576 Y-18.402 Z-1.79 B13.715 C8.566 +G01 X+30.611 Y-18.682 Z-1.789 B13.71 C7.057 +G01 X+30.645 Y-18.961 Z-1.79 B13.714 C5.548 +G01 X+30.665 Y-19.23 Z-1.789 B13.71 C4.107 +G01 X+30.684 Y-19.498 Z-1.79 B13.715 C2.666 +G01 X+30.69 Y-19.773 Z-1.789 C1.191 +G01 X+30.696 Y-20.048 Z-1.79 C359.717 +G01 X+30.688 Y-20.324 Z-1.789 C358.242 +G01 X+30.679 Y-20.599 Z-1.79 C356.767 +G01 X+30.657 Y-20.873 Z-1.789 C355.292 +G01 X+30.634 Y-21.148 Z-1.79 C353.817 +G01 X+30.598 Y-21.421 Z-1.789 C352.342 +G01 X+30.561 Y-21.694 Z-1.79 C350.868 +G01 X+30.51 Y-21.965 Z-1.789 B13.71 C349.393 +G01 X+30.46 Y-22.235 Z-1.79 B13.715 C347.918 +G01 X+30.401 Y-22.479 Z-1.789 B13.71 C346.571 +G01 X+30.342 Y-22.723 B13.713 C345.224 +G01 X+30.331 Y-22.771 Z-1.79 B13.715 C344.968 +G01 X+30.261 Y-23.007 Z-1.789 B13.71 C343.644 +G01 X+30.191 Y-23.243 B13.713 C342.32 +G01 X+30.174 Y-23.299 Z-1.79 B13.715 C342.019 +G01 X+30.094 Y-23.527 Z-1.789 B13.71 C340.718 +G01 X+30.013 Y-23.755 B13.713 C339.417 +G01 X+29.991 Y-23.818 Z-1.79 B13.714 C339.069 +G01 X+29.901 Y-24.038 Z-1.789 B13.71 C337.791 +G01 X+29.81 Y-24.258 B13.712 C336.513 +G01 X+29.781 Y-24.328 Z-1.79 B13.714 C336.119 +G01 X+29.681 Y-24.538 Z-1.789 B13.71 C334.865 +G01 X+29.582 Y-24.749 B13.712 C333.61 +G01 X+29.545 Y-24.825 Z-1.79 B13.714 C333.17 +G01 X+29.437 Y-25.027 Z-1.789 B13.71 C331.938 +G01 X+29.329 Y-25.228 B13.712 C330.706 +G01 X+29.284 Y-25.31 Z-1.79 B13.714 C330.22 +G01 X+29.168 Y-25.502 Z-1.789 B13.71 C329.012 +G01 X+29.052 Y-25.694 B13.712 C327.803 +G01 X+28.999 Y-25.781 Z-1.79 B13.714 C327.27 +G01 X+28.751 Y-26.145 Z-1.789 B13.712 C324.899 +G01 X+28.689 Y-26.237 Z-1.79 B13.714 C324.321 +G01 X+28.429 Y-26.58 Z-1.789 B13.712 C321.996 +G01 X+28.357 Y-26.676 Z-1.79 B13.714 C321.371 +G01 X+28.085 Y-26.999 Z-1.789 B13.711 C319.092 +G01 X+28.002 Y-27.097 Z-1.79 B13.714 C318.422 +G01 X+27.72 Y-27.399 Z-1.789 B13.711 C316.189 +G01 X+27.626 Y-27.5 Z-1.79 B13.714 C315.472 +G01 X+27.428 Y-27.691 Z-1.789 B13.709 C313.997 +G01 X+27.23 Y-27.882 Z-1.79 B13.714 C312.522 +G01 X+27.022 Y-28.063 Z-1.789 B13.709 C311.05 +G01 X+26.814 Y-28.244 Z-1.79 B13.714 C309.578 +G01 X+26.598 Y-28.414 Z-1.789 B13.709 C308.102 +G01 X+26.381 Y-28.584 Z-1.79 B13.714 C306.626 +G01 X+26.156 Y-28.743 Z-1.789 B13.709 C305.149 +G01 X+25.931 Y-28.901 Z-1.79 B13.714 C303.672 +G01 X+25.698 Y-29.048 Z-1.789 C302.196 +G01 X+25.464 Y-29.194 Z-1.79 C300.719 +G01 X+25.15 Y-29.371 Z-1.789 B13.71 C298.769 +G01 X+24.984 Y-29.464 Z-1.79 B13.714 C297.765 +G01 X+24.737 Y-29.586 Z-1.789 B13.71 C296.288 +G01 X+24.49 Y-29.708 Z-1.79 B13.714 C294.811 +G01 X+24.262 Y-29.806 Z-1.789 B13.71 C293.485 +G01 X+24.034 Y-29.905 B13.712 C292.159 +G01 X+23.984 Y-29.926 Z-1.79 B13.714 C291.858 +G01 X+23.756 Y-30.011 Z-1.789 B13.71 C290.557 +G01 X+23.527 Y-30.096 B13.712 C289.255 +G01 X+23.468 Y-30.118 Z-1.79 B13.714 C288.904 +G01 X+23.24 Y-30.19 Z-1.789 B13.71 C287.628 +G01 X+23.011 Y-30.262 B13.712 C286.352 +G01 X+22.943 Y-30.283 Z-1.79 B13.714 C285.95 +G01 X+22.715 Y-30.342 Z-1.789 B13.71 C284.7 +G01 X+22.487 Y-30.401 B13.711 C283.449 +G01 X+22.409 Y-30.421 Z-1.79 B13.714 C282.997 +G01 X+22.14 Y-30.476 Z-1.789 B13.71 C281.52 +G01 X+21.87 Y-30.531 Z-1.79 B13.714 C280.043 +G01 X+21.589 Y-30.573 Z-1.789 B13.71 C278.521 +G01 X+21.308 Y-30.615 B13.714 C276.999 +G01 X+21.042 Y-30.641 B13.71 C275.57 +G01 X+20.777 Y-30.667 Z-1.79 B13.715 C274.141 +G01 X+20.502 Y-30.681 Z-1.789 C272.666 +G01 X+20.227 Y-30.693 Z-1.79 C271.191 +G01 X+19.951 Y-30.692 Z-1.789 C269.717 +G01 X+19.676 Y-30.691 Z-1.79 C268.242 +G01 X+19.401 Y-30.676 Z-1.789 C266.767 +G01 X+19.126 Y-30.66 Z-1.79 C265.292 +G01 X+18.852 Y-30.631 Z-1.789 C263.817 +G01 X+18.579 Y-30.601 Z-1.79 C262.342 +G01 X+18.307 Y-30.557 Z-1.789 C260.868 +G01 X+18.035 Y-30.514 Z-1.79 C259.393 +G01 X+17.765 Y-30.456 Z-1.789 B13.71 C257.918 +G01 X+17.496 Y-30.399 Z-1.79 B13.715 C256.443 +G01 X+17.256 Y-30.334 Z-1.789 B13.71 C255.108 +G01 X+17.016 Y-30.27 B13.713 C253.772 +G01 X+16.964 Y-30.256 Z-1.79 B13.715 C253.493 +G01 X+16.732 Y-30.181 Z-1.789 B13.71 C252.181 +G01 X+16.499 Y-30.105 B13.713 C250.868 +G01 X+16.44 Y-30.086 Z-1.79 B13.715 C250.544 +G01 X+16.216 Y-30 Z-1.789 B13.71 C249.254 +G01 X+15.992 Y-29.915 B13.713 C247.965 +G01 X+15.926 Y-29.889 Z-1.79 B13.714 C247.594 +G01 X+15.674 Y-29.778 Z-1.789 B13.71 C246.12 +G01 X+15.422 Y-29.667 Z-1.79 B13.714 C244.646 +G01 X+15.216 Y-29.562 Z-1.789 B13.71 C243.402 +G01 X+15.01 Y-29.458 B13.712 C242.158 +G01 X+14.861 Y-29.382 Z-1.79 B13.716 C241.352 +G01 X+14.657 Y-29.264 Z-1.789 B13.712 C240.055 +G01 X+14.454 Y-29.146 Z-1.79 B13.715 C238.757 +G01 X+14.078 Y-28.904 Z-1.789 B13.712 C236.351 +G01 X+13.989 Y-28.847 Z-1.79 B13.714 C235.796 +G01 X+13.635 Y-28.593 Z-1.789 B13.712 C233.448 +G01 X+13.542 Y-28.526 Z-1.79 B13.714 C232.846 +G01 X+13.208 Y-28.259 Z-1.789 B13.711 C230.544 +G01 X+13.111 Y-28.182 Z-1.79 B13.714 C229.896 +G01 X+12.799 Y-27.905 Z-1.789 B13.711 C227.641 +G01 X+12.699 Y-27.816 Z-1.79 B13.714 C226.947 +G01 X+12.503 Y-27.623 Z-1.789 B13.709 C225.472 +G01 X+12.306 Y-27.43 Z-1.79 B13.714 C223.997 +G01 X+12.074 Y-27.177 Z-1.789 B13.71 C222.144 +G01 X+12.02 Y-27.107 Z-1.787 B13.701 C221.668 +G01 X+11.98 Y-27.029 Z-1.782 B13.672 C221.222 +G01 X+11.954 Y-26.945 Z-1.773 B13.626 C220.789 +G01 X+11.878 Y-26.596 Z-1.733 B13.409 C219.065 +G01 X+11.858 Y-26.527 Z-1.727 B13.374 C218.695 +G01 X+11.829 Y-26.463 Z-1.723 B13.351 C218.327 +G01 X+11.791 Y-26.403 Z-1.721 B13.342 C217.951 +G01 X+11.652 Y-26.217 Z-1.72 B13.338 C216.675 +G01 X+11.49 Y-25.999 Z-1.721 B13.342 C215.182 +G01 X+11.341 Y-25.776 Z-1.72 B13.338 C213.706 +G01 X+11.192 Y-25.553 Z-1.721 B13.342 C212.23 +G01 X+11.055 Y-25.322 Z-1.72 B13.338 C210.753 +G01 X+10.918 Y-25.092 Z-1.721 B13.342 C209.277 +G01 X+10.801 Y-24.87 Z-1.72 B13.338 C207.896 +G01 X+10.684 Y-24.647 Z-1.721 B13.341 C206.513 +G01 X+10.668 Y-24.618 B13.342 C206.325 +G01 X+10.564 Y-24.394 Z-1.72 B13.338 C204.968 +G01 X+10.461 Y-24.17 Z-1.721 B13.341 C203.61 +G01 X+10.443 Y-24.131 B13.343 C203.373 +G01 X+10.352 Y-23.906 Z-1.72 B13.338 C202.04 +G01 X+10.262 Y-23.681 Z-1.721 B13.34 C200.707 +G01 X+10.243 Y-23.634 B13.343 C200.42 +G01 X+10.165 Y-23.408 Z-1.72 B13.338 C199.112 +G01 X+10.088 Y-23.183 Z-1.721 B13.34 C197.804 +G01 X+10.069 Y-23.126 B13.343 C197.468 +G01 X+10.004 Y-22.902 Z-1.72 B13.338 C196.184 +G01 X+9.94 Y-22.677 Z-1.721 B13.34 C194.901 +G01 X+9.921 Y-22.611 B13.343 C194.516 +G01 X+9.869 Y-22.387 Z-1.72 B13.338 C193.257 +G01 X+9.817 Y-22.164 Z-1.721 B13.34 C191.997 +G01 X+9.8 Y-22.089 B13.343 C191.563 +G01 X+9.721 Y-21.645 B13.34 C189.094 +G01 X+9.706 Y-21.561 B13.343 C188.611 +G01 X+9.651 Y-21.123 B13.339 C186.191 +G01 X+9.639 Y-21.029 B13.343 C185.659 +G01 X+9.607 Y-20.597 B13.339 C183.288 +G01 X+9.6 Y-20.494 B13.343 C182.706 +G01 X+9.591 Y-20.07 B13.339 C180.384 +G01 X+9.588 Y-19.958 B13.343 C179.754 +G01 X+9.596 Y-19.69 Z-1.72 B13.339 C178.278 +G01 X+9.604 Y-19.422 Z-1.721 B13.343 C176.802 +G01 X+9.626 Y-19.155 Z-1.72 B13.339 C175.326 +G01 X+9.648 Y-18.888 Z-1.721 B13.343 C173.85 +G01 X+9.683 Y-18.622 Z-1.72 C172.373 +G01 X+9.719 Y-18.356 Z-1.721 C170.897 +G01 X+9.768 Y-18.093 Z-1.72 C169.421 +G01 X+9.817 Y-17.829 Z-1.721 C167.945 +G01 X+9.879 Y-17.569 Z-1.72 C166.469 +G01 X+9.942 Y-17.308 Z-1.721 C164.992 +G01 X+10.018 Y-17.051 Z-1.72 C163.516 +G01 X+10.094 Y-16.794 Z-1.721 C162.04 +G01 X+10.183 Y-16.541 Z-1.72 C160.564 +G01 X+10.272 Y-16.288 Z-1.721 C159.088 +G01 X+10.374 Y-16.04 Z-1.72 B13.339 C157.612 +G01 X+10.476 Y-15.792 Z-1.721 B13.343 C156.137 +G01 X+10.591 Y-15.55 Z-1.72 B13.339 C154.662 +G01 X+10.706 Y-15.307 Z-1.721 B13.343 C153.188 +G01 X+10.832 Y-15.071 Z-1.72 B13.339 C151.713 +G01 X+10.96 Y-14.835 Z-1.721 B13.343 C150.237 +G01 X+11.098 Y-14.606 Z-1.72 C148.764 +G01 X+11.237 Y-14.377 Z-1.721 C147.291 +G01 X+11.388 Y-14.155 Z-1.72 B13.338 C145.817 +G01 X+11.538 Y-13.933 Z-1.721 B13.343 C144.343 +G01 X+11.7 Y-13.719 Z-1.72 B13.338 C142.869 +G01 X+11.862 Y-13.505 Z-1.721 B13.343 C141.395 +G01 X+12.023 Y-13.313 Z-1.72 B13.338 C140.009 +G01 X+12.185 Y-13.121 Z-1.721 B13.342 C138.623 +G01 X+12.228 Y-13.072 B13.341 C138.288 +G01 X+12.4 Y-12.888 Z-1.72 B13.338 C136.893 +G01 X+12.573 Y-12.703 Z-1.721 B13.342 C135.498 +G01 X+12.765 Y-12.517 Z-1.72 B13.338 C134.024 +G01 X+12.958 Y-12.33 Z-1.721 B13.342 C132.549 +G01 X+13.16 Y-12.154 Z-1.72 B13.338 C131.075 +G01 X+13.362 Y-11.978 Z-1.721 B13.342 C129.601 +G01 X+13.573 Y-11.812 Z-1.72 C128.13 +G01 X+13.784 Y-11.647 Z-1.721 C126.658 +G01 X+14.003 Y-11.492 Z-1.72 B13.338 C125.182 +G01 X+14.222 Y-11.338 Z-1.721 B13.342 C123.706 +G01 X+14.449 Y-11.195 Z-1.72 B13.338 C122.23 +G01 X+14.676 Y-11.052 Z-1.721 B13.342 C120.754 +G01 X+14.897 Y-10.928 Z-1.72 B13.338 C119.359 +G01 X+15.118 Y-10.804 Z-1.721 B13.341 C117.965 +G01 X+15.144 Y-10.79 B13.342 C117.801 +G01 X+15.367 Y-10.679 Z-1.72 B13.338 C116.432 +G01 X+15.59 Y-10.569 Z-1.721 B13.341 C115.062 +G01 X+15.624 Y-10.552 B13.342 C114.849 +G01 X+15.849 Y-10.455 Z-1.72 B13.338 C113.504 +G01 X+16.073 Y-10.358 Z-1.721 B13.341 C112.159 +G01 X+16.116 Y-10.34 B13.343 C111.897 +G01 X+16.342 Y-10.256 Z-1.72 B13.338 C110.576 +G01 X+16.567 Y-10.172 Z-1.721 B13.34 C109.255 +G01 X+16.619 Y-10.152 B13.343 C108.944 +G01 X+16.844 Y-10.081 Z-1.72 B13.338 C107.648 +G01 X+17.069 Y-10.011 Z-1.721 B13.34 C106.352 +G01 X+17.13 Y-9.991 B13.343 C105.992 +G01 X+17.355 Y-9.933 Z-1.72 B13.338 C104.721 +G01 X+17.579 Y-9.875 Z-1.721 B13.34 C103.449 +G01 X+17.649 Y-9.857 B13.343 C103.039 +G01 X+17.872 Y-9.811 Z-1.72 B13.338 C101.793 +G01 X+18.095 Y-9.766 Z-1.721 B13.34 C100.546 +G01 X+18.175 Y-9.749 B13.343 C100.087 +G01 X+18.616 Y-9.683 B13.34 C97.643 +G01 X+18.705 Y-9.669 B13.343 C97.135 +G01 X+19.14 Y-9.626 B13.339 C94.739 +G01 X+19.238 Y-9.616 B13.343 C94.182 +G01 X+19.666 Y-9.596 B13.339 C91.836 +G01 X+19.774 Y-9.591 B13.343 C91.23 +G01 X+20.194 Y-9.592 B13.339 C88.933 +G01 X+20.31 Y-9.593 B13.343 C88.278 +G01 X+20.578 Y-9.607 Z-1.72 B13.339 C86.802 +G01 X+20.845 Y-9.622 Z-1.721 B13.343 C85.326 +G01 X+21.112 Y-9.651 Z-1.72 B13.339 C83.849 +G01 X+21.378 Y-9.68 Z-1.721 B13.343 C82.373 +G01 X+21.643 Y-9.722 Z-1.72 C80.897 +G01 X+21.908 Y-9.764 Z-1.721 C79.421 +G01 X+22.17 Y-9.82 Z-1.72 C77.945 +G01 X+22.432 Y-9.876 Z-1.721 C76.469 +G01 X+22.691 Y-9.945 Z-1.72 C74.992 +G01 X+22.95 Y-10.015 Z-1.721 C73.516 +G01 X+23.205 Y-10.097 Z-1.72 C72.04 +G01 X+23.46 Y-10.18 Z-1.721 C70.564 +G01 X+23.711 Y-10.275 Z-1.72 B13.339 C69.088 +G01 X+23.961 Y-10.371 Z-1.721 B13.343 C67.612 +G01 X+24.206 Y-10.479 Z-1.72 B13.339 C66.137 +G01 X+24.452 Y-10.588 Z-1.721 B13.343 C64.662 +G01 X+24.691 Y-10.708 Z-1.72 B13.339 C63.188 +G01 X+24.93 Y-10.829 Z-1.721 B13.343 C61.714 +G01 X+25.163 Y-10.962 Z-1.72 B13.339 C60.24 +G01 X+25.396 Y-11.095 Z-1.721 B13.343 C58.765 +G01 X+25.621 Y-11.24 Z-1.72 C57.291 +G01 X+25.847 Y-11.385 Z-1.721 C55.817 +G01 X+26.065 Y-11.541 Z-1.72 B13.338 C54.343 +G01 X+26.283 Y-11.697 Z-1.721 B13.343 C52.869 +G01 X+26.492 Y-11.864 Z-1.72 B13.338 C51.395 +G01 X+26.702 Y-12.032 Z-1.721 B13.342 C49.92 +G01 X+26.888 Y-12.197 Z-1.72 B13.338 C48.546 +G01 X+27.075 Y-12.362 Z-1.721 B13.342 C47.171 +G01 X+27.122 Y-12.406 B13.341 C46.836 +G01 X+27.304 Y-12.584 Z-1.72 B13.338 C45.43 +G01 X+27.486 Y-12.763 Z-1.721 B13.342 C44.024 +G01 X+27.667 Y-12.96 Z-1.72 B13.338 C42.549 +G01 X+27.848 Y-13.158 Z-1.721 B13.342 C41.075 +G01 X+28.019 Y-13.365 Z-1.72 B13.338 C39.601 +G01 X+28.19 Y-13.572 Z-1.721 B13.342 C38.126 +G01 X+28.35 Y-13.786 Z-1.72 B13.338 C36.654 +G01 X+28.51 Y-14.001 Z-1.721 B13.342 C35.182 +G01 X+28.659 Y-14.224 Z-1.72 B13.338 C33.706 +G01 X+28.808 Y-14.447 Z-1.721 B13.342 C32.23 +G01 X+28.945 Y-14.678 Z-1.72 B13.338 C30.754 +G01 X+29.082 Y-14.908 Z-1.721 B13.342 C29.277 +G01 X+29.199 Y-15.13 Z-1.72 B13.338 C27.896 +G01 X+29.316 Y-15.352 Z-1.721 B13.341 C26.513 +G01 X+29.332 Y-15.382 B13.342 C26.325 +G01 X+29.436 Y-15.606 Z-1.72 B13.338 C24.968 +G01 X+29.539 Y-15.83 Z-1.721 B13.341 C23.61 +G01 X+29.557 Y-15.869 B13.343 C23.373 +G01 X+29.648 Y-16.094 Z-1.72 B13.338 C22.04 +G01 X+29.738 Y-16.319 Z-1.721 B13.34 C20.707 +G01 X+29.757 Y-16.366 B13.343 C20.42 +G01 X+29.835 Y-16.592 Z-1.72 B13.338 C19.112 +G01 X+29.912 Y-16.817 Z-1.721 B13.34 C17.804 +G01 X+29.931 Y-16.873 B13.343 C17.468 +G01 X+29.996 Y-17.098 Z-1.72 B13.338 C16.184 +G01 X+30.06 Y-17.323 Z-1.721 B13.34 C14.901 +G01 X+30.079 Y-17.389 B13.343 C14.516 +G01 X+30.131 Y-17.612 Z-1.72 B13.338 C13.257 +G01 X+30.183 Y-17.836 Z-1.721 B13.34 C11.997 +G01 X+30.2 Y-17.911 B13.343 C11.563 +G01 X+30.279 Y-18.355 B13.34 C9.094 +G01 X+30.294 Y-18.439 B13.343 C8.611 +G01 X+30.349 Y-18.877 B13.339 C6.191 +G01 X+30.361 Y-18.971 B13.343 C5.659 +G01 X+30.393 Y-19.403 B13.339 C3.288 +G01 X+30.4 Y-19.506 B13.343 C2.706 +G01 X+30.409 Y-19.93 B13.339 C0.384 +G01 X+30.412 Y-20.042 B13.343 C359.754 +G01 X+30.404 Y-20.31 Z-1.72 B13.339 C358.278 +G01 X+30.396 Y-20.578 Z-1.721 B13.343 C356.802 +G01 X+30.374 Y-20.845 Z-1.72 B13.339 C355.326 +G01 X+30.352 Y-21.112 Z-1.721 B13.343 C353.85 +G01 X+30.317 Y-21.378 Z-1.72 C352.373 +G01 X+30.281 Y-21.644 Z-1.721 C350.897 +G01 X+30.232 Y-21.907 Z-1.72 C349.421 +G01 X+30.183 Y-22.171 Z-1.721 C347.945 +G01 X+30.121 Y-22.431 Z-1.72 C346.469 +G01 X+30.058 Y-22.692 Z-1.721 C344.992 +G01 X+29.982 Y-22.949 Z-1.72 C343.516 +G01 X+29.906 Y-23.206 Z-1.721 C342.04 +G01 X+29.817 Y-23.459 Z-1.72 C340.564 +G01 X+29.728 Y-23.712 Z-1.721 C339.088 +G01 X+29.626 Y-23.96 Z-1.72 B13.339 C337.612 +G01 X+29.524 Y-24.208 Z-1.721 B13.343 C336.137 +G01 X+29.409 Y-24.45 Z-1.72 B13.339 C334.662 +G01 X+29.294 Y-24.692 Z-1.721 B13.343 C333.188 +G01 X+29.168 Y-24.929 Z-1.72 B13.339 C331.713 +G01 X+29.04 Y-25.165 Z-1.721 B13.343 C330.237 +G01 X+28.902 Y-25.394 Z-1.72 C328.764 +G01 X+28.763 Y-25.623 Z-1.721 C327.291 +G01 X+28.612 Y-25.845 Z-1.72 B13.338 C325.817 +G01 X+28.462 Y-26.067 Z-1.721 B13.343 C324.343 +G01 X+28.3 Y-26.281 Z-1.72 B13.338 C322.869 +G01 X+28.138 Y-26.494 Z-1.721 B13.343 C321.395 +G01 X+27.977 Y-26.687 Z-1.72 B13.338 C320.009 +G01 X+27.815 Y-26.879 Z-1.721 B13.342 C318.623 +G01 X+27.772 Y-26.927 B13.341 C318.288 +G01 X+27.6 Y-27.112 Z-1.72 B13.338 C316.893 +G01 X+27.427 Y-27.297 Z-1.721 B13.342 C315.498 +G01 X+27.235 Y-27.483 Z-1.72 B13.338 C314.024 +G01 X+27.042 Y-27.669 Z-1.721 B13.342 C312.549 +G01 X+26.84 Y-27.846 Z-1.72 B13.338 C311.075 +G01 X+26.638 Y-28.022 Z-1.721 B13.342 C309.601 +G01 X+26.427 Y-28.187 Z-1.72 C308.13 +G01 X+26.216 Y-28.353 Z-1.721 C306.658 +G01 X+25.997 Y-28.507 Z-1.72 B13.338 C305.182 +G01 X+25.778 Y-28.662 Z-1.721 B13.342 C303.706 +G01 X+25.551 Y-28.805 Z-1.72 B13.338 C302.23 +G01 X+25.324 Y-28.948 Z-1.721 B13.342 C300.754 +G01 X+25.103 Y-29.072 Z-1.72 B13.338 C299.359 +G01 X+24.882 Y-29.195 Z-1.721 B13.341 C297.965 +G01 X+24.856 Y-29.21 B13.342 C297.801 +G01 X+24.633 Y-29.32 Z-1.72 B13.338 C296.432 +G01 X+24.41 Y-29.431 Z-1.721 B13.341 C295.062 +G01 X+24.376 Y-29.448 B13.342 C294.849 +G01 X+24.151 Y-29.545 Z-1.72 B13.338 C293.504 +G01 X+23.927 Y-29.642 Z-1.721 B13.341 C292.159 +G01 X+23.884 Y-29.66 B13.343 C291.897 +G01 X+23.658 Y-29.744 Z-1.72 B13.338 C290.576 +G01 X+23.433 Y-29.828 Z-1.721 B13.34 C289.255 +G01 X+23.381 Y-29.847 B13.343 C288.944 +G01 X+23.156 Y-29.918 Z-1.72 B13.338 C287.648 +G01 X+22.931 Y-29.989 Z-1.721 B13.34 C286.352 +G01 X+22.87 Y-30.008 B13.343 C285.992 +G01 X+22.646 Y-30.067 Z-1.72 B13.338 C284.721 +G01 X+22.421 Y-30.125 Z-1.721 B13.34 C283.449 +G01 X+22.351 Y-30.143 B13.343 C283.039 +G01 X+22.128 Y-30.189 Z-1.72 B13.338 C281.793 +G01 X+21.905 Y-30.234 Z-1.721 B13.34 C280.546 +G01 X+21.825 Y-30.25 B13.343 C280.087 +G01 X+21.384 Y-30.317 B13.34 C277.643 +G01 X+21.295 Y-30.331 B13.343 C277.135 +G01 X+20.86 Y-30.374 B13.339 C274.739 +G01 X+20.762 Y-30.384 B13.343 C274.182 +G01 X+20.334 Y-30.404 B13.339 C271.836 +G01 X+20.226 Y-30.409 B13.343 C271.23 +G01 X+19.806 Y-30.408 B13.339 C268.933 +G01 X+19.69 Y-30.407 B13.343 C268.278 +G01 X+19.422 Y-30.392 Z-1.72 B13.339 C266.802 +G01 X+19.155 Y-30.377 Z-1.721 B13.343 C265.326 +G01 X+18.888 Y-30.349 Z-1.72 B13.339 C263.849 +G01 X+18.622 Y-30.32 Z-1.721 B13.343 C262.373 +G01 X+18.357 Y-30.278 Z-1.72 C260.897 +G01 X+18.092 Y-30.235 Z-1.721 C259.421 +G01 X+17.83 Y-30.18 Z-1.72 C257.945 +G01 X+17.568 Y-30.124 Z-1.721 C256.469 +G01 X+17.309 Y-30.055 Z-1.72 C254.992 +G01 X+17.05 Y-29.985 Z-1.721 C253.516 +G01 X+16.795 Y-29.903 Z-1.72 C252.04 +G01 X+16.54 Y-29.82 Z-1.721 C250.564 +G01 X+16.289 Y-29.725 Z-1.72 B13.339 C249.088 +G01 X+16.039 Y-29.629 Z-1.721 B13.343 C247.612 +G01 X+15.794 Y-29.521 Z-1.72 B13.339 C246.138 +G01 X+15.549 Y-29.412 Z-1.721 B13.343 C244.665 +G01 X+15.272 Y-29.273 Z-1.72 B13.338 C243.008 +G01 X+14.996 Y-29.133 Z-1.722 B13.345 C241.352 +G01 X+14.801 Y-29.02 Z-1.721 B13.341 C240.066 +G01 X+14.606 Y-28.906 B13.344 C238.779 +G01 X+14.38 Y-28.761 Z-1.72 B13.339 C237.299 +G01 X+14.153 Y-28.615 Z-1.721 B13.343 C235.818 +G01 X+13.935 Y-28.459 Z-1.72 B13.338 C234.343 +G01 X+13.717 Y-28.303 Z-1.721 B13.343 C232.869 +G01 X+13.508 Y-28.135 Z-1.72 B13.338 C231.395 +G01 X+13.298 Y-27.968 Z-1.721 B13.342 C229.92 +G01 X+13.112 Y-27.803 Z-1.72 B13.338 C228.546 +G01 X+12.925 Y-27.638 Z-1.721 B13.342 C227.171 +G01 X+12.878 Y-27.594 B13.341 C226.836 +G01 X+12.696 Y-27.415 Z-1.72 B13.338 C225.43 +G01 X+12.514 Y-27.237 Z-1.721 B13.342 C224.023 +G01 X+12.284 Y-26.986 Z-1.72 B13.339 C222.153 +G01 X+12.231 Y-26.916 Z-1.719 B13.329 C221.655 +G01 X+12.19 Y-26.838 Z-1.714 B13.301 C221.192 +G01 X+12.164 Y-26.754 Z-1.705 B13.254 C220.756 +G01 X+12.088 Y-26.401 Z-1.666 B13.037 C218.973 +G01 X+12.068 Y-26.333 Z-1.66 B13.001 C218.602 +G01 X+12.038 Y-26.268 Z-1.656 B12.984 C218.211 +G01 X+12 Y-26.208 Z-1.654 B12.975 C217.814 +G01 X+11.862 Y-26.024 B12.973 C216.513 +G01 X+11.725 Y-25.839 B12.976 C215.213 +G01 X+11.58 Y-25.623 B12.972 C213.736 +G01 X+11.436 Y-25.406 B12.977 C212.26 +G01 X+11.301 Y-25.181 B12.972 C210.78 +G01 X+11.168 Y-24.956 B12.977 C209.299 +G01 X+11.046 Y-24.726 B12.973 C207.829 +G01 X+10.925 Y-24.496 Z-1.655 B12.977 C206.358 +G01 X+10.815 Y-24.26 Z-1.654 B12.973 C204.883 +G01 X+10.706 Y-24.023 Z-1.655 B12.977 C203.408 +G01 X+10.608 Y-23.781 Z-1.654 B12.973 C201.932 +G01 X+10.511 Y-23.539 Z-1.655 B12.977 C200.457 +G01 X+10.426 Y-23.293 Z-1.654 B12.973 C198.981 +G01 X+10.341 Y-23.046 Z-1.655 B12.977 C197.506 +G01 X+10.269 Y-22.796 Z-1.654 B12.973 C196.03 +G01 X+10.197 Y-22.545 Z-1.655 B12.977 C194.555 +G01 X+10.138 Y-22.291 Z-1.654 B12.973 C193.079 +G01 X+10.079 Y-22.037 Z-1.655 B12.977 C191.604 +G01 X+10.033 Y-21.78 Z-1.654 B12.973 C190.128 +G01 X+9.987 Y-21.524 Z-1.655 B12.977 C188.653 +G01 X+9.955 Y-21.265 Z-1.654 B12.973 C187.177 +G01 X+9.922 Y-21.006 Z-1.655 B12.977 C185.702 +G01 X+9.903 Y-20.746 Z-1.654 C184.226 +G01 X+9.884 Y-20.486 Z-1.655 B12.978 C182.751 +G01 X+9.878 Y-20.225 Z-1.654 B12.977 C181.275 +G01 X+9.872 Y-19.965 Z-1.655 B12.978 C179.8 +G01 X+9.88 Y-19.704 Z-1.654 C178.324 +G01 X+9.887 Y-19.443 Z-1.655 C176.849 +G01 X+9.908 Y-19.183 Z-1.654 C175.373 +G01 X+9.93 Y-18.923 Z-1.655 C173.898 +G01 X+9.964 Y-18.665 Z-1.654 C172.422 +G01 X+9.998 Y-18.406 Z-1.655 C170.947 +G01 X+10.046 Y-18.15 Z-1.654 C169.471 +G01 X+10.094 Y-17.894 Z-1.655 C167.996 +G01 X+10.154 Y-17.64 Z-1.654 C166.52 +G01 X+10.215 Y-17.387 Z-1.655 C165.045 +G01 X+10.289 Y-17.136 Z-1.654 C163.569 +G01 X+10.363 Y-16.886 Z-1.655 C162.094 +G01 X+10.449 Y-16.64 Z-1.654 C160.618 +G01 X+10.536 Y-16.394 Z-1.655 C159.143 +G01 X+10.635 Y-16.153 Z-1.654 C157.667 +G01 X+10.734 Y-15.912 Z-1.655 C156.192 +G01 X+10.845 Y-15.676 Z-1.654 B12.977 C154.717 +G01 X+10.957 Y-15.44 Z-1.655 C153.241 +G01 X+11.08 Y-15.21 Z-1.654 B12.973 C151.765 +G01 X+11.203 Y-14.981 Z-1.655 B12.977 C150.29 +G01 X+11.338 Y-14.758 Z-1.654 B12.973 C148.814 +G01 X+11.473 Y-14.535 Z-1.655 B12.977 C147.339 +G01 X+11.62 Y-14.319 Z-1.654 B12.973 C145.864 +G01 X+11.766 Y-14.103 Z-1.655 B12.977 C144.388 +G01 X+11.923 Y-13.895 Z-1.654 B12.973 C142.912 +G01 X+12.081 Y-13.687 Z-1.655 B12.977 C141.437 +G01 X+12.248 Y-13.487 Z-1.654 B12.973 C139.962 +G01 X+12.416 Y-13.288 Z-1.655 B12.977 C138.486 +G01 X+12.594 Y-13.097 Z-1.654 B12.973 C137.011 +G01 X+12.772 Y-12.906 Z-1.655 B12.977 C135.535 +G01 X+12.959 Y-12.725 Z-1.654 B12.973 C134.06 +G01 X+13.146 Y-12.543 B12.977 C132.584 +G01 X+13.343 Y-12.372 B12.973 C131.109 +G01 X+13.539 Y-12.2 B12.977 C129.633 +G01 X+13.745 Y-12.039 B12.972 C128.154 +G01 X+13.951 Y-11.877 B12.976 C126.675 +G01 X+14.163 Y-11.727 B12.972 C125.205 +G01 X+14.376 Y-11.577 B12.977 C123.736 +G01 X+14.596 Y-11.438 B12.972 C122.261 +G01 X+14.817 Y-11.299 B12.977 C120.785 +G01 X+15.044 Y-11.171 B12.973 C119.309 +G01 X+15.271 Y-11.044 Z-1.655 B12.977 C117.834 +G01 X+15.505 Y-10.928 Z-1.654 B12.973 C116.359 +G01 X+15.739 Y-10.812 Z-1.655 B12.977 C114.883 +G01 X+15.978 Y-10.708 Z-1.654 B12.973 C113.408 +G01 X+16.217 Y-10.605 Z-1.655 B12.977 C111.932 +G01 X+16.462 Y-10.514 Z-1.654 B12.973 C110.457 +G01 X+16.706 Y-10.423 Z-1.655 B12.977 C108.981 +G01 X+16.955 Y-10.344 Z-1.654 B12.973 C107.506 +G01 X+17.203 Y-10.266 Z-1.655 B12.977 C106.03 +G01 X+17.456 Y-10.2 Z-1.654 B12.973 C104.555 +G01 X+17.708 Y-10.135 Z-1.655 B12.977 C103.079 +G01 X+17.964 Y-10.082 Z-1.654 B12.973 C101.604 +G01 X+18.219 Y-10.03 Z-1.655 B12.977 C100.128 +G01 X+18.477 Y-9.991 Z-1.654 B12.973 C98.653 +G01 X+18.735 Y-9.951 Z-1.655 B12.977 C97.177 +G01 X+18.994 Y-9.925 Z-1.654 C95.702 +G01 X+19.254 Y-9.9 Z-1.655 B12.978 C94.226 +G01 X+19.514 Y-9.887 Z-1.654 B12.977 C92.751 +G01 X+19.775 Y-9.875 Z-1.655 B12.978 C91.275 +G01 X+20.035 Z-1.654 C89.8 +G01 X+20.296 Y-9.876 Z-1.655 C88.324 +G01 X+20.556 Y-9.891 Z-1.654 C86.849 +G01 X+20.817 Y-9.905 Z-1.655 C85.373 +G01 X+21.076 Y-9.933 Z-1.654 C83.898 +G01 X+21.335 Y-9.961 Z-1.655 C82.422 +G01 X+21.593 Y-10.001 Z-1.654 C80.947 +G01 X+21.85 Y-10.043 Z-1.655 C79.471 +G01 X+22.106 Y-10.097 Z-1.654 C77.996 +G01 X+22.361 Y-10.151 Z-1.655 C76.52 +G01 X+22.613 Y-10.218 Z-1.654 C75.045 +G01 X+22.864 Y-10.286 Z-1.655 C73.569 +G01 X+23.113 Y-10.366 Z-1.654 C72.094 +G01 X+23.361 Y-10.446 Z-1.655 C70.618 +G01 X+23.605 Y-10.539 Z-1.654 C69.143 +G01 X+23.848 Y-10.632 Z-1.655 C67.667 +G01 X+24.087 Y-10.737 Z-1.654 C66.192 +G01 X+24.325 Y-10.842 Z-1.655 B12.977 C64.717 +G01 X+24.558 Y-10.959 Z-1.654 C63.241 +G01 X+24.791 Y-11.077 Z-1.655 C61.766 +G01 X+25.018 Y-11.206 Z-1.654 B12.973 C60.29 +G01 X+25.244 Y-11.335 Z-1.655 B12.977 C58.815 +G01 X+25.464 Y-11.476 Z-1.654 B12.973 C57.339 +G01 X+25.683 Y-11.617 Z-1.655 B12.977 C55.863 +G01 X+25.895 Y-11.769 Z-1.654 B12.973 C54.388 +G01 X+26.107 Y-11.921 Z-1.655 B12.977 C52.913 +G01 X+26.311 Y-12.083 Z-1.654 B12.973 C51.437 +G01 X+26.515 Y-12.246 Z-1.655 B12.977 C49.962 +G01 X+26.71 Y-12.418 Z-1.654 B12.973 C48.486 +G01 X+26.905 Y-12.591 Z-1.655 B12.977 C47.011 +G01 X+27.092 Y-12.774 Z-1.654 B12.973 C45.535 +G01 X+27.278 Y-12.957 B12.977 C44.06 +G01 X+27.454 Y-13.149 B12.973 C42.584 +G01 X+27.631 Y-13.341 B12.977 C41.109 +G01 X+27.797 Y-13.541 B12.973 C39.633 +G01 X+27.963 Y-13.742 B12.977 C38.158 +G01 X+28.119 Y-13.951 B12.972 C36.685 +G01 X+28.275 Y-14.16 B12.977 C35.212 +G01 X+28.42 Y-14.377 B12.972 C33.736 +G01 X+28.564 Y-14.594 B12.977 C32.261 +G01 X+28.699 Y-14.819 B12.972 C30.78 +G01 X+28.832 Y-15.044 B12.977 C29.299 +G01 X+28.954 Y-15.274 B12.973 C27.829 +G01 X+29.075 Y-15.503 Z-1.655 B12.977 C26.358 +G01 X+29.185 Y-15.74 Z-1.654 B12.973 C24.883 +G01 X+29.294 Y-15.977 Z-1.655 B12.977 C23.408 +G01 X+29.392 Y-16.218 Z-1.654 B12.973 C21.932 +G01 X+29.489 Y-16.46 Z-1.655 B12.977 C20.457 +G01 X+29.574 Y-16.707 Z-1.654 B12.973 C18.981 +G01 X+29.659 Y-16.954 Z-1.655 B12.977 C17.506 +G01 X+29.731 Y-17.204 Z-1.654 B12.973 C16.03 +G01 X+29.803 Y-17.455 Z-1.655 B12.977 C14.555 +G01 X+29.862 Y-17.709 Z-1.654 B12.973 C13.079 +G01 X+29.921 Y-17.963 Z-1.655 B12.977 C11.604 +G01 X+29.967 Y-18.22 Z-1.654 B12.973 C10.128 +G01 X+30.013 Y-18.476 Z-1.655 B12.977 C8.653 +G01 X+30.045 Y-18.735 Z-1.654 B12.973 C7.177 +G01 X+30.078 Y-18.994 Z-1.655 B12.977 C5.702 +G01 X+30.097 Y-19.254 Z-1.654 C4.226 +G01 X+30.116 Y-19.514 Z-1.655 B12.978 C2.751 +G01 X+30.122 Y-19.775 Z-1.654 B12.977 C1.275 +G01 X+30.128 Y-20.035 Z-1.655 B12.978 C359.8 +G01 X+30.12 Y-20.296 Z-1.654 C358.324 +G01 X+30.113 Y-20.557 Z-1.655 C356.849 +G01 X+30.092 Y-20.816 Z-1.654 C355.373 +G01 X+30.07 Y-21.076 Z-1.655 C353.898 +G01 X+30.036 Y-21.335 Z-1.654 C352.422 +G01 X+30.002 Y-21.593 Z-1.655 C350.947 +G01 X+29.954 Y-21.85 Z-1.654 C349.471 +G01 X+29.906 Y-22.106 Z-1.655 C347.996 +G01 X+29.846 Y-22.36 Z-1.654 C346.52 +G01 X+29.785 Y-22.613 Z-1.655 C345.045 +G01 X+29.711 Y-22.863 Z-1.654 C343.569 +G01 X+29.637 Y-23.114 Z-1.655 C342.094 +G01 X+29.551 Y-23.36 Z-1.654 C340.618 +G01 X+29.464 Y-23.606 Z-1.655 C339.143 +G01 X+29.365 Y-23.847 Z-1.654 C337.667 +G01 X+29.266 Y-24.088 Z-1.655 C336.192 +G01 X+29.155 Y-24.324 Z-1.654 B12.977 C334.717 +G01 X+29.043 Y-24.56 Z-1.655 C333.241 +G01 X+28.92 Y-24.789 Z-1.654 B12.973 C331.765 +G01 X+28.797 Y-25.019 Z-1.655 B12.977 C330.29 +G01 X+28.662 Y-25.242 Z-1.654 B12.973 C328.814 +G01 X+28.527 Y-25.465 Z-1.655 B12.977 C327.339 +G01 X+28.38 Y-25.681 Z-1.654 B12.973 C325.864 +G01 X+28.234 Y-25.897 Z-1.655 B12.977 C324.388 +G01 X+28.077 Y-26.105 Z-1.654 B12.973 C322.912 +G01 X+27.919 Y-26.313 Z-1.655 B12.977 C321.437 +G01 X+27.752 Y-26.513 Z-1.654 B12.973 C319.962 +G01 X+27.584 Y-26.712 Z-1.655 B12.977 C318.486 +G01 X+27.406 Y-26.903 Z-1.654 B12.973 C317.011 +G01 X+27.228 Y-27.094 Z-1.655 B12.977 C315.535 +G01 X+27.041 Y-27.275 Z-1.654 B12.973 C314.06 +G01 X+26.854 Y-27.457 B12.977 C312.584 +G01 X+26.657 Y-27.628 B12.973 C311.109 +G01 X+26.461 Y-27.799 B12.977 C309.633 +G01 X+26.255 Y-27.961 B12.972 C308.154 +G01 X+26.049 Y-28.123 B12.976 C306.675 +G01 X+25.837 Y-28.273 B12.972 C305.205 +G01 X+25.624 Y-28.422 B12.977 C303.736 +G01 X+25.404 Y-28.562 B12.972 C302.261 +G01 X+25.183 Y-28.701 B12.977 C300.785 +G01 X+24.956 Y-28.829 B12.973 C299.309 +G01 X+24.729 Y-28.956 Z-1.655 B12.977 C297.834 +G01 X+24.495 Y-29.072 Z-1.654 B12.973 C296.359 +G01 X+24.261 Y-29.188 Z-1.655 B12.977 C294.883 +G01 X+24.022 Y-29.291 Z-1.654 B12.973 C293.408 +G01 X+23.783 Y-29.395 Z-1.655 B12.977 C291.932 +G01 X+23.538 Y-29.486 Z-1.654 B12.973 C290.457 +G01 X+23.294 Y-29.577 Z-1.655 B12.977 C288.981 +G01 X+23.045 Y-29.656 Z-1.654 B12.973 C287.506 +G01 X+22.797 Y-29.734 Z-1.655 B12.977 C286.03 +G01 X+22.544 Y-29.8 Z-1.654 B12.973 C284.555 +G01 X+22.292 Y-29.865 Z-1.655 B12.977 C283.079 +G01 X+22.036 Y-29.918 Z-1.654 B12.973 C281.604 +G01 X+21.781 Y-29.97 Z-1.655 B12.977 C280.128 +G01 X+21.523 Y-30.009 Z-1.654 B12.973 C278.653 +G01 X+21.265 Y-30.048 Z-1.655 B12.977 C277.177 +G01 X+21.006 Y-30.074 Z-1.654 C275.702 +G01 X+20.746 Y-30.1 Z-1.655 B12.978 C274.226 +G01 X+20.486 Y-30.113 Z-1.654 B12.977 C272.751 +G01 X+20.225 Y-30.125 Z-1.655 B12.978 C271.275 +G01 X+19.965 Y-30.124 Z-1.654 C269.8 +G01 X+19.704 Y-30.123 Z-1.655 C268.324 +G01 X+19.444 Y-30.109 Z-1.654 C266.849 +G01 X+19.183 Y-30.095 Z-1.655 C265.373 +G01 X+18.924 Y-30.067 Z-1.654 C263.898 +G01 X+18.665 Y-30.039 Z-1.655 C262.422 +G01 X+18.407 Y-29.998 Z-1.654 C260.947 +G01 X+18.15 Y-29.957 Z-1.655 C259.471 +G01 X+17.894 Y-29.903 Z-1.654 C257.996 +G01 X+17.639 Y-29.849 Z-1.655 C256.52 +G01 X+17.387 Y-29.782 Z-1.654 C255.045 +G01 X+17.136 Y-29.714 Z-1.655 C253.569 +G01 X+16.887 Y-29.634 Z-1.654 C252.094 +G01 X+16.639 Y-29.554 Z-1.655 C250.618 +G01 X+16.396 Y-29.461 Z-1.654 C249.143 +G01 X+16.152 Y-29.368 Z-1.655 C247.667 +G01 X+15.913 Y-29.263 Z-1.654 B12.973 C246.194 +G01 X+15.675 Y-29.158 Z-1.655 B12.977 C244.72 +G01 X+15.4 Y-29.019 Z-1.654 B12.973 C243.036 +G01 X+15.126 Y-28.88 Z-1.655 B12.979 C241.352 +G01 X+14.758 Y-28.667 B12.978 C238.832 +G01 X+14.538 Y-28.525 Z-1.654 B12.974 C237.349 +G01 X+14.317 Y-28.383 Z-1.655 B12.977 C235.865 +G01 X+14.105 Y-28.231 Z-1.654 B12.973 C234.389 +G01 X+13.893 Y-28.079 Z-1.655 B12.977 C232.913 +G01 X+13.689 Y-27.917 Z-1.654 B12.973 C231.437 +G01 X+13.485 Y-27.754 Z-1.655 B12.977 C229.962 +G01 X+13.29 Y-27.581 Z-1.654 B12.973 C228.486 +G01 X+13.095 Y-27.409 Z-1.655 B12.977 C227.01 +G01 X+12.908 Y-27.226 Z-1.654 B12.973 C225.535 +G01 X+12.722 Y-27.043 B12.977 C224.06 +G01 X+12.495 Y-26.796 B12.973 C222.159 +G01 X+12.441 Y-26.726 Z-1.652 B12.964 C221.66 +G01 X+12.4 Y-26.647 Z-1.647 B12.935 C221.173 +G01 X+12.374 Y-26.563 Z-1.639 B12.889 C220.71 +G01 X+12.297 Y-26.207 Z-1.601 B12.67 C218.845 +G01 X+12.277 Y-26.139 Z-1.595 B12.635 C218.47 +G01 X+12.247 Y-26.074 Z-1.591 B12.612 C218.079 +G01 X+12.209 Y-26.014 Z-1.59 B12.604 C217.638 +G01 X+11.96 Y-25.68 B12.606 C215.238 +G01 X+11.819 Y-25.47 Z-1.589 C213.765 +G01 X+11.678 Y-25.259 Z-1.59 C212.292 +G01 X+11.548 Y-25.041 Z-1.589 B12.602 C210.815 +G01 X+11.418 Y-24.823 Z-1.59 B12.606 C209.338 +G01 X+11.3 Y-24.599 Z-1.589 B12.602 C207.861 +G01 X+11.182 Y-24.375 Z-1.59 B12.606 C206.384 +G01 X+11.081 Y-24.159 Z-1.589 B12.602 C204.997 +G01 X+10.98 Y-23.942 Z-1.59 B12.605 C203.61 +G01 X+10.968 Y-23.916 B12.606 C203.43 +G01 X+10.88 Y-23.698 Z-1.589 B12.602 C202.069 +G01 X+10.793 Y-23.48 Z-1.59 B12.605 C200.707 +G01 X+10.778 Y-23.445 B12.606 C200.476 +G01 X+10.703 Y-23.228 Z-1.589 B12.602 C199.14 +G01 X+10.628 Y-23.01 Z-1.59 B12.604 C197.804 +G01 X+10.613 Y-22.966 B12.606 C197.522 +G01 X+10.488 Y-22.531 B12.604 C194.901 +G01 X+10.473 Y-22.479 B12.606 C194.568 +G01 X+10.415 Y-22.232 Z-1.589 B12.602 C193.091 +G01 X+10.358 Y-21.985 Z-1.59 B12.607 C191.613 +G01 X+10.313 Y-21.736 Z-1.589 B12.603 C190.136 +G01 X+10.269 Y-21.486 Z-1.59 B12.607 C188.659 +G01 X+10.236 Y-21.226 Z-1.589 B12.602 C187.133 +G01 X+10.204 Y-20.966 Z-1.59 B12.606 C185.606 +G01 X+10.185 Y-20.717 Z-1.589 B12.602 C184.154 +G01 X+10.167 Y-20.468 Z-1.59 B12.606 C182.703 +G01 X+10.161 Y-20.219 Z-1.589 B12.603 C181.251 +G01 X+10.156 Y-19.97 Z-1.59 B12.607 C179.8 +G01 X+10.163 Y-19.717 Z-1.589 B12.603 C178.328 +G01 X+10.17 Y-19.464 Z-1.59 B12.607 C176.856 +G01 X+10.19 Y-19.212 Z-1.589 C175.382 +G01 X+10.211 Y-18.959 Z-1.59 C173.907 +G01 X+10.244 Y-18.708 Z-1.589 C172.432 +G01 X+10.278 Y-18.456 Z-1.59 C170.957 +G01 X+10.324 Y-18.207 Z-1.589 C169.482 +G01 X+10.37 Y-17.958 Z-1.59 C168.008 +G01 X+10.429 Y-17.711 Z-1.589 C166.533 +G01 X+10.488 Y-17.465 Z-1.59 C165.058 +G01 X+10.559 Y-17.222 Z-1.589 C163.583 +G01 X+10.631 Y-16.979 Z-1.59 C162.108 +G01 X+10.715 Y-16.739 Z-1.589 B12.603 C160.633 +G01 X+10.799 Y-16.5 Z-1.59 B12.607 C159.159 +G01 X+10.895 Y-16.266 Z-1.589 B12.603 C157.684 +G01 X+10.991 Y-16.031 Z-1.59 B12.607 C156.209 +G01 X+11.177 Y-15.638 B12.605 C153.668 +G01 X+11.207 Y-15.573 B12.607 C153.259 +G01 X+11.409 Y-15.197 B12.605 C150.765 +G01 X+11.447 Y-15.126 B12.607 C150.31 +G01 X+11.663 Y-14.768 B12.604 C147.862 +G01 X+11.709 Y-14.692 B12.607 C147.36 +G01 X+11.939 Y-14.352 B12.604 C144.958 +G01 X+11.993 Y-14.272 B12.606 C144.411 +G01 X+12.236 Y-13.951 Z-1.589 B12.604 C142.055 +G01 X+12.299 Y-13.868 Z-1.59 B12.606 C141.461 +G01 X+12.552 Y-13.566 Z-1.589 B12.604 C139.151 +G01 X+12.625 Y-13.48 Z-1.59 B12.606 C138.511 +G01 X+12.888 Y-13.197 Z-1.589 B12.604 C136.248 +G01 X+12.97 Y-13.109 Z-1.59 B12.606 C135.561 +G01 X+13.242 Y-12.846 Z-1.589 B12.604 C133.344 +G01 X+13.334 Y-12.756 Z-1.59 B12.606 C132.612 +G01 X+13.525 Y-12.589 Z-1.589 B12.602 C131.137 +G01 X+13.716 Y-12.422 Z-1.59 B12.606 C129.662 +G01 X+13.915 Y-12.265 Z-1.589 B12.602 C128.188 +G01 X+14.115 Y-12.109 Z-1.59 B12.606 C126.713 +G01 X+14.321 Y-11.962 Z-1.589 B12.602 C125.241 +G01 X+14.529 Y-11.816 Z-1.59 B12.606 C123.769 +G01 X+14.743 Y-11.681 Z-1.589 B12.602 C122.292 +G01 X+14.957 Y-11.545 Z-1.59 B12.606 C120.815 +G01 X+15.178 Y-11.421 Z-1.589 B12.602 C119.338 +G01 X+15.399 Y-11.297 Z-1.59 B12.606 C117.861 +G01 X+15.626 Y-11.184 Z-1.589 B12.602 C116.384 +G01 X+15.853 Y-11.072 Z-1.59 B12.606 C114.907 +G01 X+16.086 Y-10.971 Z-1.589 B12.602 C113.43 +G01 X+16.318 Y-10.87 Z-1.59 B12.606 C111.953 +G01 X+16.536 Y-10.789 Z-1.589 B12.602 C110.604 +G01 X+16.754 Y-10.707 Z-1.59 B12.605 C109.255 +G01 X+16.793 Y-10.693 B12.606 C108.999 +G01 X+17.011 Y-10.624 Z-1.589 B12.602 C107.676 +G01 X+17.229 Y-10.555 Z-1.59 B12.604 C106.352 +G01 X+17.276 Y-10.54 B12.606 C106.045 +G01 X+17.711 Y-10.427 B12.604 C103.449 +G01 X+17.767 Y-10.412 B12.606 C103.091 +G01 X+18.015 Y-10.361 Z-1.589 B12.602 C101.613 +G01 X+18.264 Y-10.31 Z-1.59 B12.607 C100.136 +G01 X+18.514 Y-10.272 Z-1.589 B12.603 C98.659 +G01 X+18.765 Y-10.233 Z-1.59 B12.607 C97.182 +G01 X+19.024 Y-10.208 Z-1.589 B12.602 C95.668 +G01 X+19.283 Y-10.182 Z-1.59 B12.606 C94.154 +G01 X+19.529 Y-10.17 Z-1.589 B12.603 C92.718 +G01 X+19.775 Y-10.158 Z-1.59 B12.607 C91.281 +G01 X+20.029 Y-10.159 Z-1.589 C89.806 +G01 X+20.282 Y-10.16 Z-1.59 C88.331 +G01 X+20.535 Y-10.173 Z-1.589 C86.856 +G01 X+20.789 Y-10.187 Z-1.59 C85.382 +G01 X+21.041 Y-10.214 Z-1.589 C83.907 +G01 X+21.293 Y-10.241 Z-1.59 C82.432 +G01 X+21.543 Y-10.28 Z-1.589 C80.957 +G01 X+21.793 Y-10.32 Z-1.59 C79.482 +G01 X+22.041 Y-10.373 Z-1.589 C78.007 +G01 X+22.289 Y-10.426 Z-1.59 C76.533 +G01 X+22.534 Y-10.491 Z-1.589 C75.058 +G01 X+22.779 Y-10.556 Z-1.59 C73.583 +G01 X+23.02 Y-10.634 Z-1.589 B12.603 C72.108 +G01 X+23.262 Y-10.712 Z-1.59 B12.607 C70.633 +G01 X+23.499 Y-10.802 Z-1.589 B12.603 C69.159 +G01 X+23.735 Y-10.892 Z-1.59 B12.607 C67.684 +G01 X+24.137 Y-11.069 B12.605 C65.12 +G01 X+24.199 Y-11.096 B12.607 C64.734 +G01 X+24.584 Y-11.29 B12.605 C62.217 +G01 X+24.652 Y-11.324 B12.607 C61.784 +G01 X+25.019 Y-11.533 B12.604 C59.313 +G01 X+25.093 Y-11.575 B12.607 C58.835 +G01 X+25.442 Y-11.799 B12.604 C56.41 +G01 X+25.519 Y-11.849 B12.607 C55.885 +G01 X+25.85 Y-12.085 B12.604 C53.506 +G01 X+25.932 Y-12.144 B12.606 C52.936 +G01 X+26.243 Y-12.392 Z-1.589 B12.604 C50.603 +G01 X+26.328 Y-12.459 Z-1.59 B12.606 C49.986 +G01 X+26.621 Y-12.718 Z-1.589 B12.604 C47.699 +G01 X+26.708 Y-12.795 Z-1.59 B12.606 C47.036 +G01 X+26.981 Y-13.062 Z-1.589 B12.604 C44.796 +G01 X+27.07 Y-13.15 Z-1.59 B12.606 C44.087 +G01 X+27.323 Y-13.425 Z-1.589 B12.603 C41.893 +G01 X+27.413 Y-13.523 Z-1.59 B12.606 C41.137 +G01 X+27.575 Y-13.718 Z-1.589 B12.602 C39.662 +G01 X+27.737 Y-13.913 Z-1.59 B12.606 C38.187 +G01 X+27.889 Y-14.116 Z-1.589 B12.602 C36.713 +G01 X+28.04 Y-14.32 Z-1.59 B12.606 C35.238 +G01 X+28.181 Y-14.53 Z-1.589 C33.765 +G01 X+28.322 Y-14.741 Z-1.59 C32.292 +G01 X+28.452 Y-14.959 Z-1.589 B12.602 C30.815 +G01 X+28.582 Y-15.176 Z-1.59 B12.606 C29.338 +G01 X+28.7 Y-15.4 Z-1.589 B12.602 C27.861 +G01 X+28.818 Y-15.625 Z-1.59 B12.606 C26.384 +G01 X+28.919 Y-15.841 Z-1.589 B12.602 C24.997 +G01 X+29.02 Y-16.057 Z-1.59 B12.605 C23.61 +G01 X+29.032 Y-16.084 B12.606 C23.43 +G01 X+29.12 Y-16.302 Z-1.589 B12.602 C22.069 +G01 X+29.207 Y-16.519 Z-1.59 B12.605 C20.707 +G01 X+29.222 Y-16.554 B12.606 C20.476 +G01 X+29.297 Y-16.772 Z-1.589 B12.602 C19.14 +G01 X+29.372 Y-16.99 Z-1.59 B12.604 C17.804 +G01 X+29.387 Y-17.034 B12.606 C17.522 +G01 X+29.512 Y-17.469 B12.604 C14.901 +G01 X+29.527 Y-17.521 B12.606 C14.568 +G01 X+29.585 Y-17.768 Z-1.589 B12.602 C13.091 +G01 X+29.642 Y-18.015 Z-1.59 B12.607 C11.613 +G01 X+29.687 Y-18.264 Z-1.589 B12.603 C10.136 +G01 X+29.731 Y-18.514 Z-1.59 B12.607 C8.659 +G01 X+29.764 Y-18.774 Z-1.589 B12.602 C7.133 +G01 X+29.796 Y-19.034 Z-1.59 B12.606 C5.606 +G01 X+29.815 Y-19.283 Z-1.589 B12.602 C4.154 +G01 X+29.833 Y-19.531 Z-1.59 B12.606 C2.703 +G01 X+29.839 Y-19.781 Z-1.589 B12.603 C1.251 +G01 X+29.844 Y-20.03 Z-1.59 B12.607 C359.8 +G01 X+29.837 Y-20.283 Z-1.589 B12.603 C358.328 +G01 X+29.83 Y-20.536 Z-1.59 B12.607 C356.856 +G01 X+29.81 Y-20.788 Z-1.589 C355.382 +G01 X+29.789 Y-21.041 Z-1.59 C353.907 +G01 X+29.756 Y-21.292 Z-1.589 C352.432 +G01 X+29.723 Y-21.543 Z-1.59 C350.957 +G01 X+29.676 Y-21.793 Z-1.589 C349.482 +G01 X+29.63 Y-22.042 Z-1.59 C348.008 +G01 X+29.571 Y-22.288 Z-1.589 C346.533 +G01 X+29.512 Y-22.535 Z-1.59 C345.058 +G01 X+29.441 Y-22.778 Z-1.589 C343.583 +G01 X+29.369 Y-23.021 Z-1.59 C342.108 +G01 X+29.285 Y-23.26 Z-1.589 B12.603 C340.633 +G01 X+29.201 Y-23.5 Z-1.59 B12.607 C339.159 +G01 X+29.105 Y-23.734 Z-1.589 B12.603 C337.684 +G01 X+29.009 Y-23.969 Z-1.59 B12.607 C336.209 +G01 X+28.823 Y-24.362 B12.605 C333.668 +G01 X+28.793 Y-24.427 B12.607 C333.259 +G01 X+28.591 Y-24.803 B12.605 C330.765 +G01 X+28.553 Y-24.874 B12.607 C330.31 +G01 X+28.337 Y-25.232 B12.604 C327.862 +G01 X+28.291 Y-25.308 B12.607 C327.36 +G01 X+28.061 Y-25.648 B12.604 C324.958 +G01 X+28.007 Y-25.727 B12.606 C324.411 +G01 X+27.764 Y-26.049 Z-1.589 B12.604 C322.055 +G01 X+27.701 Y-26.132 Z-1.59 B12.606 C321.461 +G01 X+27.448 Y-26.434 Z-1.589 B12.604 C319.151 +G01 X+27.375 Y-26.52 Z-1.59 B12.606 C318.511 +G01 X+27.112 Y-26.803 Z-1.589 B12.604 C316.248 +G01 X+27.03 Y-26.891 Z-1.59 B12.606 C315.561 +G01 X+26.758 Y-27.154 Z-1.589 B12.604 C313.344 +G01 X+26.666 Y-27.244 Z-1.59 B12.606 C312.612 +G01 X+26.475 Y-27.411 Z-1.589 B12.602 C311.137 +G01 X+26.284 Y-27.578 Z-1.59 B12.606 C309.662 +G01 X+26.085 Y-27.734 Z-1.589 B12.602 C308.188 +G01 X+25.885 Y-27.891 Z-1.59 B12.606 C306.713 +G01 X+25.679 Y-28.037 Z-1.589 B12.602 C305.241 +G01 X+25.471 Y-28.184 Z-1.59 B12.606 C303.769 +G01 X+25.257 Y-28.319 Z-1.589 B12.602 C302.292 +G01 X+25.043 Y-28.454 Z-1.59 B12.606 C300.815 +G01 X+24.822 Y-28.579 Z-1.589 B12.602 C299.338 +G01 X+24.601 Y-28.703 Z-1.59 B12.606 C297.861 +G01 X+24.374 Y-28.816 Z-1.589 B12.602 C296.384 +G01 X+24.147 Y-28.928 Z-1.59 B12.606 C294.907 +G01 X+23.914 Y-29.029 Z-1.589 B12.602 C293.43 +G01 X+23.682 Y-29.13 Z-1.59 B12.606 C291.953 +G01 X+23.464 Y-29.211 Z-1.589 B12.602 C290.604 +G01 X+23.246 Y-29.293 Z-1.59 B12.605 C289.255 +G01 X+23.207 Y-29.307 B12.606 C288.999 +G01 X+22.989 Y-29.376 Z-1.589 B12.602 C287.676 +G01 X+22.771 Y-29.445 Z-1.59 B12.604 C286.352 +G01 X+22.724 Y-29.46 B12.606 C286.045 +G01 X+22.289 Y-29.573 B12.604 C283.449 +G01 X+22.233 Y-29.588 B12.606 C283.091 +G01 X+21.985 Y-29.639 Z-1.589 B12.602 C281.613 +G01 X+21.736 Y-29.69 Z-1.59 B12.607 C280.136 +G01 X+21.486 Y-29.728 Z-1.589 B12.603 C278.659 +G01 X+21.235 Y-29.766 Z-1.59 B12.607 C277.182 +G01 X+20.976 Y-29.792 Z-1.589 B12.602 C275.668 +G01 X+20.717 Y-29.818 Z-1.59 B12.606 C274.154 +G01 X+20.471 Y-29.83 Z-1.589 B12.603 C272.718 +G01 X+20.225 Y-29.842 Z-1.59 B12.607 C271.281 +G01 X+19.971 Y-29.841 Z-1.589 C269.806 +G01 X+19.718 Y-29.84 Z-1.59 C268.331 +G01 X+19.465 Y-29.827 Z-1.589 C266.856 +G01 X+19.211 Y-29.813 Z-1.59 C265.382 +G01 X+18.959 Y-29.786 Z-1.589 C263.907 +G01 X+18.707 Y-29.759 Z-1.59 C262.432 +G01 X+18.457 Y-29.719 Z-1.589 C260.957 +G01 X+18.207 Y-29.679 Z-1.59 C259.482 +G01 X+17.959 Y-29.627 Z-1.589 C258.007 +G01 X+17.711 Y-29.574 Z-1.59 C256.533 +G01 X+17.466 Y-29.509 Z-1.589 C255.058 +G01 X+17.221 Y-29.444 Z-1.59 C253.583 +G01 X+16.98 Y-29.366 Z-1.589 B12.603 C252.108 +G01 X+16.738 Y-29.288 Z-1.59 B12.607 C250.633 +G01 X+16.501 Y-29.198 Z-1.589 B12.603 C249.159 +G01 X+16.265 Y-29.108 Z-1.59 B12.607 C247.684 +G01 X+15.863 Y-28.931 B12.605 C245.12 +G01 X+15.801 Y-28.904 B12.607 C244.738 +G01 X+15.416 Y-28.71 B12.604 C242.216 +G01 X+15.267 Y-28.634 B12.608 C241.352 +G01 X+14.91 Y-28.427 B12.607 C238.856 +G01 X+14.558 Y-28.201 B12.604 C236.41 +G01 X+14.481 Y-28.151 B12.607 C235.887 +G01 X+14.15 Y-27.915 B12.604 C233.506 +G01 X+14.068 Y-27.856 B12.606 C232.936 +G01 X+13.757 Y-27.608 Z-1.589 B12.604 C230.603 +G01 X+13.672 Y-27.541 Z-1.59 B12.606 C229.986 +G01 X+13.379 Y-27.282 Z-1.589 B12.604 C227.699 +G01 X+13.292 Y-27.205 Z-1.59 B12.606 C227.036 +G01 X+13.111 Y-27.027 Z-1.589 B12.602 C225.562 +G01 X+12.93 Y-26.85 Z-1.59 B12.606 C224.087 +G01 X+12.705 Y-26.605 Z-1.589 B12.603 C222.141 +G01 X+12.651 Y-26.535 Z-1.588 B12.594 C221.628 +G01 X+12.61 Y-26.457 Z-1.583 B12.565 C221.141 +G01 X+12.584 Y-26.373 Z-1.575 B12.52 C220.656 +G01 X+12.506 Y-26.013 Z-1.538 B12.299 C218.713 +G01 X+12.486 Y-25.945 Z-1.532 B12.263 C218.337 +G01 X+12.457 Y-25.88 Z-1.528 B12.241 C217.933 +G01 X+12.418 Y-25.82 Z-1.527 B12.234 C217.491 +G01 X+12.195 Y-25.521 B12.236 C215.268 +G01 X+12.058 Y-25.316 B12.232 C213.794 +G01 X+11.921 Y-25.111 B12.236 C212.32 +G01 X+11.795 Y-24.9 B12.232 C210.847 +G01 X+11.669 Y-24.689 B12.236 C209.374 +G01 X+11.553 Y-24.472 B12.232 C207.898 +G01 X+11.438 Y-24.254 B12.236 C206.421 +G01 X+11.334 Y-24.031 B12.232 C204.945 +G01 X+11.231 Y-23.808 B12.236 C203.469 +G01 X+11.144 Y-23.594 B12.232 C202.088 +G01 X+11.058 Y-23.38 B12.235 C200.707 +G01 X+11.046 Y-23.351 B12.236 C200.516 +G01 X+10.972 Y-23.137 B12.232 C199.16 +G01 X+10.898 Y-22.923 B12.235 C197.804 +G01 X+10.886 Y-22.886 B12.236 C197.563 +G01 X+10.762 Y-22.458 B12.234 C194.901 +G01 X+10.749 Y-22.413 B12.236 C194.611 +G01 X+10.65 Y-21.987 B12.234 C191.997 +G01 X+10.637 Y-21.933 B12.236 C191.658 +G01 X+10.561 Y-21.511 B12.234 C189.094 +G01 X+10.55 Y-21.449 B12.236 C188.706 +G01 X+10.497 Y-21.031 B12.234 C186.191 +G01 X+10.488 Y-20.96 B12.236 C185.753 +G01 X+10.457 Y-20.548 B12.234 C183.288 +G01 X+10.451 Y-20.469 B12.237 C182.8 +G01 X+10.445 Y-20.223 B12.233 C181.324 +G01 X+10.44 Y-19.977 B12.237 C179.848 +G01 X+10.447 Y-19.731 B12.233 C178.371 +G01 X+10.454 Y-19.485 B12.237 C176.895 +G01 X+10.473 Y-19.24 C175.419 +G01 X+10.493 Y-18.994 C173.942 +G01 X+10.525 Y-18.75 C172.466 +G01 X+10.557 Y-18.506 C170.99 +G01 X+10.602 Y-18.264 C169.514 +G01 X+10.647 Y-18.022 C168.037 +G01 X+10.704 Y-17.783 C166.561 +G01 X+10.761 Y-17.543 C165.085 +G01 X+10.83 Y-17.307 C163.608 +G01 X+10.899 Y-17.071 C162.132 +G01 X+10.981 Y-16.839 B12.233 C160.655 +G01 X+11.062 Y-16.606 B12.237 C159.179 +G01 X+11.16 Y-16.369 Z-1.526 B12.232 C157.643 +G01 X+11.258 Y-16.132 Z-1.527 B12.236 C156.106 +G01 X+11.358 Y-15.918 B12.233 C154.692 +G01 X+11.459 Y-15.705 B12.237 C153.277 +G01 X+11.575 Y-15.488 C151.803 +G01 X+11.691 Y-15.271 C150.329 +G01 X+11.818 Y-15.061 C148.854 +G01 X+11.945 Y-14.85 C147.38 +G01 X+12.083 Y-14.646 C145.906 +G01 X+12.221 Y-14.442 C144.432 +G01 X+12.369 Y-14.245 C142.958 +G01 X+12.518 Y-14.049 B12.236 C141.484 +G01 X+12.676 Y-13.86 B12.232 C140.009 +G01 X+12.834 Y-13.672 B12.236 C138.535 +G01 X+13.002 Y-13.491 B12.232 C137.061 +G01 X+13.169 Y-13.311 B12.236 C135.587 +G01 X+13.331 Y-13.154 B12.232 C134.233 +G01 X+13.492 Y-12.998 B12.235 C132.88 +G01 X+13.523 Y-12.968 B12.236 C132.639 +G01 X+13.855 Y-12.677 B12.235 C129.976 +G01 X+13.909 Y-12.632 C129.578 +G01 X+14.095 Y-12.486 B12.232 C128.16 +G01 X+14.28 Y-12.34 B12.236 C126.742 +G01 X+14.481 Y-12.197 B12.232 C125.268 +G01 X+14.682 Y-12.055 B12.236 C123.794 +G01 X+14.89 Y-11.924 C122.322 +G01 X+15.098 Y-11.792 C120.85 +G01 X+15.312 Y-11.671 B12.232 C119.374 +G01 X+15.527 Y-11.551 B12.236 C117.898 +G01 X+15.747 Y-11.441 B12.232 C116.421 +G01 X+15.968 Y-11.332 B12.236 C114.945 +G01 X+16.181 Y-11.239 B12.232 C113.552 +G01 X+16.394 Y-11.146 B12.235 C112.159 +G01 X+16.419 Y-11.136 B12.236 C111.992 +G01 X+16.633 Y-11.055 B12.232 C110.624 +G01 X+16.848 Y-10.975 B12.235 C109.255 +G01 X+16.881 Y-10.963 B12.236 C109.04 +G01 X+17.309 Y-10.827 B12.234 C106.352 +G01 X+17.35 Y-10.814 B12.236 C106.087 +G01 X+17.777 Y-10.703 B12.234 C103.449 +G01 X+17.826 Y-10.69 B12.236 C103.134 +G01 X+18.251 Y-10.602 B12.234 C100.546 +G01 X+18.308 Y-10.591 B12.236 C100.182 +G01 X+18.729 Y-10.526 B12.234 C97.643 +G01 X+18.795 Y-10.516 B12.236 C97.229 +G01 X+19.21 Y-10.474 B12.234 C94.739 +G01 X+19.285 Y-10.466 B12.236 C94.277 +G01 X+19.694 Y-10.446 B12.233 C91.836 +G01 X+19.777 Y-10.442 B12.237 C91.324 +G01 X+20.023 Y-10.443 B12.233 C89.848 +G01 X+20.269 B12.237 C88.371 +G01 X+20.515 Y-10.457 B12.233 C86.895 +G01 X+20.76 Y-10.47 B12.237 C85.419 +G01 X+21.005 Y-10.496 C83.942 +G01 X+21.25 Y-10.522 C82.466 +G01 X+21.493 Y-10.56 C80.99 +G01 X+21.736 Y-10.599 C79.514 +G01 X+21.977 Y-10.649 C78.037 +G01 X+22.218 Y-10.701 C76.561 +G01 X+22.456 Y-10.764 C75.085 +G01 X+22.694 Y-10.827 C73.608 +G01 X+22.928 Y-10.902 C72.132 +G01 X+23.162 Y-10.978 C70.656 +G01 X+23.393 Y-11.065 C69.179 +G01 X+23.623 Y-11.153 C67.703 +G01 X+23.848 Y-11.252 C66.227 +G01 X+24.073 Y-11.351 C64.751 +G01 X+24.293 Y-11.461 B12.233 C63.277 +G01 X+24.513 Y-11.572 B12.237 C61.803 +G01 X+24.728 Y-11.694 B12.233 C60.326 +G01 X+24.942 Y-11.816 B12.236 C58.849 +G01 X+25.149 Y-11.948 B12.237 C57.377 +G01 X+25.356 Y-12.081 C55.906 +G01 X+25.556 Y-12.224 C54.432 +G01 X+25.756 Y-12.367 B12.236 C52.958 +G01 X+25.949 Y-12.52 C51.484 +G01 X+26.142 Y-12.673 C50.01 +G01 X+26.326 Y-12.836 B12.232 C48.535 +G01 X+26.511 Y-12.999 B12.236 C47.061 +G01 X+26.687 Y-13.171 B12.232 C45.587 +G01 X+26.862 Y-13.344 B12.236 C44.113 +G01 X+27.165 Y-13.672 B12.235 C41.428 +G01 X+27.196 Y-13.706 B12.236 C41.165 +G01 X+27.353 Y-13.895 B12.232 C39.69 +G01 X+27.51 Y-14.085 B12.236 C38.216 +G01 X+27.658 Y-14.282 B12.232 C36.742 +G01 X+27.805 Y-14.479 B12.236 C35.268 +G01 X+27.942 Y-14.684 B12.232 C33.794 +G01 X+28.079 Y-14.889 B12.236 C32.32 +G01 X+28.205 Y-15.1 B12.232 C30.847 +G01 X+28.331 Y-15.311 B12.236 C29.374 +G01 X+28.447 Y-15.528 B12.232 C27.898 +G01 X+28.562 Y-15.746 B12.236 C26.421 +G01 X+28.666 Y-15.969 B12.232 C24.945 +G01 X+28.769 Y-16.192 B12.236 C23.469 +G01 X+28.856 Y-16.406 B12.232 C22.088 +G01 X+28.942 Y-16.62 B12.235 C20.707 +G01 X+28.954 Y-16.649 B12.236 C20.516 +G01 X+29.028 Y-16.863 B12.232 C19.16 +G01 X+29.102 Y-17.077 B12.235 C17.804 +G01 X+29.114 Y-17.114 B12.236 C17.563 +G01 X+29.238 Y-17.542 B12.234 C14.901 +G01 X+29.251 Y-17.587 B12.236 C14.611 +G01 X+29.35 Y-18.013 B12.234 C11.997 +G01 X+29.363 Y-18.067 B12.236 C11.658 +G01 X+29.439 Y-18.489 B12.234 C9.094 +G01 X+29.45 Y-18.551 B12.236 C8.706 +G01 X+29.503 Y-18.969 B12.234 C6.191 +G01 X+29.512 Y-19.04 B12.236 C5.753 +G01 X+29.543 Y-19.452 B12.234 C3.288 +G01 X+29.549 Y-19.53 B12.237 C2.8 +G01 X+29.555 Y-19.777 B12.233 C1.324 +G01 X+29.56 Y-20.023 B12.237 C359.848 +G01 X+29.553 Y-20.269 B12.233 C358.371 +G01 X+29.546 Y-20.515 B12.237 C356.895 +G01 X+29.527 Y-20.76 C355.419 +G01 X+29.507 Y-21.005 C353.942 +G01 X+29.475 Y-21.25 C352.466 +G01 X+29.443 Y-21.494 C350.99 +G01 X+29.398 Y-21.736 C349.514 +G01 X+29.353 Y-21.978 C348.037 +G01 X+29.296 Y-22.217 C346.561 +G01 X+29.239 Y-22.457 C345.085 +G01 X+29.17 Y-22.693 C343.608 +G01 X+29.101 Y-22.929 C342.132 +G01 X+29.019 Y-23.161 B12.233 C340.655 +G01 X+28.938 Y-23.394 B12.237 C339.179 +G01 X+28.84 Y-23.631 Z-1.526 B12.232 C337.643 +G01 X+28.742 Y-23.868 Z-1.527 B12.236 C336.106 +G01 X+28.642 Y-24.081 B12.233 C334.692 +G01 X+28.541 Y-24.295 B12.237 C333.277 +G01 X+28.425 Y-24.512 C331.803 +G01 X+28.309 Y-24.729 C330.329 +G01 X+28.182 Y-24.939 C328.854 +G01 X+28.055 Y-25.15 C327.38 +G01 X+27.917 Y-25.354 C325.906 +G01 X+27.779 Y-25.558 C324.432 +G01 X+27.631 Y-25.754 C322.958 +G01 X+27.482 Y-25.951 B12.236 C321.484 +G01 X+27.324 Y-26.14 B12.232 C320.009 +G01 X+27.166 Y-26.328 B12.236 C318.535 +G01 X+26.998 Y-26.509 B12.232 C317.061 +G01 X+26.831 Y-26.689 B12.236 C315.587 +G01 X+26.669 Y-26.845 B12.232 C314.233 +G01 X+26.508 Y-27.002 B12.235 C312.88 +G01 X+26.477 Y-27.031 B12.236 C312.639 +G01 X+26.145 Y-27.322 B12.235 C309.976 +G01 X+26.091 Y-27.368 C309.578 +G01 X+25.905 Y-27.514 B12.232 C308.16 +G01 X+25.72 Y-27.66 B12.236 C306.742 +G01 X+25.519 Y-27.802 B12.232 C305.268 +G01 X+25.318 Y-27.944 B12.236 C303.794 +G01 X+25.11 Y-28.076 C302.322 +G01 X+24.902 Y-28.208 C300.85 +G01 X+24.688 Y-28.329 B12.232 C299.374 +G01 X+24.473 Y-28.449 B12.236 C297.898 +G01 X+24.253 Y-28.559 B12.232 C296.421 +G01 X+24.032 Y-28.668 B12.236 C294.945 +G01 X+23.819 Y-28.761 B12.232 C293.552 +G01 X+23.606 Y-28.853 B12.235 C292.159 +G01 X+23.581 Y-28.864 B12.236 C291.992 +G01 X+23.367 Y-28.945 B12.232 C290.624 +G01 X+23.152 Y-29.025 B12.235 C289.255 +G01 X+23.119 Y-29.037 B12.236 C289.04 +G01 X+22.691 Y-29.172 B12.234 C286.352 +G01 X+22.65 Y-29.186 B12.236 C286.087 +G01 X+22.223 Y-29.297 B12.234 C283.449 +G01 X+22.174 Y-29.31 B12.236 C283.134 +G01 X+21.749 Y-29.397 B12.234 C280.546 +G01 X+21.692 Y-29.409 B12.236 C280.182 +G01 X+21.271 Y-29.474 B12.234 C277.643 +G01 X+21.205 Y-29.484 B12.236 C277.229 +G01 X+20.79 Y-29.526 B12.234 C274.739 +G01 X+20.715 Y-29.533 B12.236 C274.277 +G01 X+20.306 Y-29.553 B12.233 C271.836 +G01 X+20.223 Y-29.558 B12.237 C271.324 +G01 X+19.977 Y-29.557 B12.233 C269.847 +G01 X+19.731 Y-29.556 B12.237 C268.371 +G01 X+19.485 Y-29.543 B12.233 C266.895 +G01 X+19.24 Y-29.53 B12.237 C265.419 +G01 X+18.995 Y-29.504 C263.942 +G01 X+18.75 Y-29.478 C262.466 +G01 X+18.507 Y-29.44 C260.99 +G01 X+18.264 Y-29.401 C259.514 +G01 X+18.023 Y-29.35 C258.037 +G01 X+17.782 Y-29.299 C256.561 +G01 X+17.544 Y-29.236 C255.085 +G01 X+17.306 Y-29.173 C253.608 +G01 X+17.072 Y-29.098 C252.132 +G01 X+16.838 Y-29.022 C250.656 +G01 X+16.607 Y-28.935 B12.233 C249.179 +G01 X+16.377 Y-28.847 B12.237 C247.703 +G01 X+16.144 Y-28.744 B12.232 C246.179 +G01 X+15.912 Y-28.641 B12.236 C244.655 +G01 X+15.657 Y-28.513 B12.232 C243.003 +G01 X+15.402 Y-28.384 Z-1.528 B12.239 C241.352 +G01 X+15.062 Y-28.187 Z-1.527 B12.238 C238.878 +G01 X+14.853 Y-28.053 B12.233 C237.393 +G01 X+14.644 Y-27.919 B12.237 C235.908 +G01 X+14.444 Y-27.776 B12.233 C234.433 +G01 X+14.244 Y-27.633 B12.236 C232.958 +G01 X+14.051 Y-27.48 C231.484 +G01 X+13.858 Y-27.326 C230.01 +G01 X+13.674 Y-27.164 B12.232 C228.535 +G01 X+13.489 Y-27.001 B12.236 C227.061 +G01 X+13.313 Y-26.828 B12.232 C225.587 +G01 X+13.138 Y-26.656 B12.236 C224.113 +G01 X+12.915 Y-26.415 B12.233 C222.151 +G01 X+12.861 Y-26.345 Z-1.525 B12.224 C221.603 +G01 X+12.821 Y-26.266 Z-1.521 B12.195 C221.108 +G01 X+12.794 Y-26.182 Z-1.513 B12.15 C220.619 +G01 X+12.716 Y-25.819 Z-1.476 B11.928 C218.613 +G01 X+12.696 Y-25.751 Z-1.471 B11.893 C218.205 +G01 X+12.666 Y-25.686 Z-1.467 B11.871 C217.787 +G01 X+12.628 Y-25.625 Z-1.466 B11.864 C217.345 +G01 X+12.43 Y-25.361 B11.866 C215.301 +G01 X+12.297 Y-25.163 B11.862 C213.826 +G01 X+12.164 Y-24.964 B11.866 C212.35 +G01 X+12.042 Y-24.759 C210.879 +G01 X+11.919 Y-24.554 C209.409 +G01 X+11.807 Y-24.343 B11.862 C207.933 +G01 X+11.695 Y-24.132 B11.866 C206.457 +G01 X+11.594 Y-23.916 B11.863 C204.982 +G01 X+11.494 Y-23.699 B11.866 C203.506 +G01 X+11.404 Y-23.478 B11.863 C202.031 +G01 X+11.314 Y-23.256 B11.867 C200.555 +G01 X+11.236 Y-23.031 B11.863 C199.08 +G01 X+11.158 Y-22.805 B11.867 C197.604 +G01 X+11.092 Y-22.576 B11.863 C196.128 +G01 X+11.026 Y-22.346 B11.867 C194.653 +G01 X+10.971 Y-22.114 B11.863 C193.177 +G01 X+10.917 Y-21.881 B11.867 C191.702 +G01 X+10.874 Y-21.646 B11.863 C190.226 +G01 X+10.832 Y-21.411 B11.867 C188.751 +G01 X+10.802 Y-21.174 B11.863 C187.275 +G01 X+10.771 Y-20.937 B11.867 C185.799 +G01 X+10.753 Y-20.699 B11.863 C184.324 +G01 X+10.735 Y-20.461 B11.867 C182.848 +G01 X+10.73 Y-20.222 C181.373 +G01 X+10.724 Y-19.983 C179.897 +G01 X+10.73 Y-19.745 C178.421 +G01 X+10.737 Y-19.506 C176.946 +G01 X+10.756 Y-19.268 C175.471 +G01 X+10.775 Y-19.03 C173.995 +G01 X+10.806 Y-18.793 C172.519 +G01 X+10.837 Y-18.556 C171.044 +G01 X+10.88 Y-18.321 C169.568 +G01 X+10.924 Y-18.086 C168.092 +G01 X+10.979 Y-17.854 C166.617 +G01 X+11.034 Y-17.622 C165.141 +G01 X+11.101 Y-17.392 C163.666 +G01 X+11.168 Y-17.163 C162.19 +G01 X+11.247 Y-16.938 C160.715 +G01 X+11.326 Y-16.712 C159.239 +G01 X+11.416 Y-16.491 C157.764 +G01 X+11.507 Y-16.27 C156.288 +G01 X+11.608 Y-16.054 C154.812 +G01 X+11.71 Y-15.838 C153.337 +G01 X+11.823 Y-15.627 C151.861 +G01 X+11.935 Y-15.417 C150.386 +G01 X+12.059 Y-15.212 C148.91 +G01 X+12.182 Y-15.008 C147.434 +G01 X+12.316 Y-14.81 C145.959 +G01 X+12.449 Y-14.612 C144.483 +G01 X+12.593 Y-14.421 B11.863 C143.008 +G01 X+12.737 Y-14.23 B11.867 C141.532 +G01 X+12.89 Y-14.047 B11.863 C140.057 +G01 X+13.044 Y-13.864 B11.867 C138.581 +G01 X+13.206 Y-13.689 B11.863 C137.105 +G01 X+13.369 Y-13.514 B11.867 C135.63 +G01 X+13.54 Y-13.347 B11.863 C134.154 +G01 X+13.711 Y-13.181 B11.867 C132.679 +G01 X+13.891 Y-13.024 B11.863 C131.203 +G01 X+14.071 Y-12.866 B11.867 C129.727 +G01 X+14.258 Y-12.718 B11.863 C128.252 +G01 X+14.446 Y-12.571 B11.866 C126.776 +G01 X+14.641 Y-12.433 B11.863 C125.301 +G01 X+14.836 Y-12.295 B11.866 C123.825 +G01 X+15.038 Y-12.166 B11.862 C122.347 +G01 X+15.241 Y-12.038 B11.866 C120.868 +G01 X+15.448 Y-11.921 B11.862 C119.401 +G01 X+15.655 Y-11.804 B11.866 C117.933 +G01 X+15.869 Y-11.698 B11.862 C116.458 +G01 X+16.083 Y-11.592 B11.866 C114.982 +G01 X+16.302 Y-11.496 B11.863 C113.507 +G01 X+16.521 Y-11.401 B11.866 C112.031 +G01 X+16.744 Y-11.317 B11.863 C110.555 +G01 X+16.968 Y-11.233 B11.867 C109.08 +G01 X+17.196 Y-11.161 B11.863 C107.604 +G01 X+17.423 Y-11.089 B11.867 C106.128 +G01 X+17.655 Y-11.028 B11.863 C104.653 +G01 X+17.886 Y-10.968 B11.867 C103.177 +G01 X+18.119 Y-10.92 B11.863 C101.702 +G01 X+18.353 Y-10.871 B11.867 C100.226 +G01 X+18.589 Y-10.835 B11.863 C98.751 +G01 X+18.825 Y-10.799 B11.867 C97.275 +G01 X+19.063 Y-10.774 B11.863 C95.799 +G01 X+19.301 Y-10.75 B11.867 C94.324 +G01 X+19.539 Y-10.738 C92.848 +G01 X+19.778 Y-10.727 C91.373 +G01 X+20.017 C89.897 +G01 X+20.255 C88.421 +G01 X+20.494 Y-10.74 C86.946 +G01 X+20.732 Y-10.753 C85.471 +G01 X+20.97 Y-10.778 C83.995 +G01 X+21.208 Y-10.803 C82.519 +G01 X+21.443 Y-10.84 C81.044 +G01 X+21.679 Y-10.877 C79.568 +G01 X+21.913 Y-10.926 C78.092 +G01 X+22.147 Y-10.976 C76.617 +G01 X+22.378 Y-11.037 C75.141 +G01 X+22.608 Y-11.098 C73.666 +G01 X+22.836 Y-11.171 C72.19 +G01 X+23.063 Y-11.244 C70.715 +G01 X+23.287 Y-11.329 C69.239 +G01 X+23.51 Y-11.414 C67.764 +G01 X+23.729 Y-11.51 C66.288 +G01 X+23.947 Y-11.606 C64.812 +G01 X+24.161 Y-11.713 C63.337 +G01 X+24.374 Y-11.82 C61.861 +G01 X+24.582 Y-11.938 C60.386 +G01 X+24.789 Y-12.056 C58.91 +G01 X+24.991 Y-12.184 C57.434 +G01 X+25.192 Y-12.313 C55.959 +G01 X+25.387 Y-12.452 B11.863 C54.483 +G01 X+25.581 Y-12.591 B11.867 C53.008 +G01 X+25.768 Y-12.739 B11.863 C51.532 +G01 X+25.955 Y-12.888 B11.867 C50.057 +G01 X+26.134 Y-13.046 B11.863 C48.581 +G01 X+26.313 Y-13.204 B11.867 C47.105 +G01 X+26.484 Y-13.371 B11.863 C45.63 +G01 X+26.655 Y-13.538 B11.867 C44.154 +G01 X+26.817 Y-13.713 B11.863 C42.679 +G01 X+26.978 Y-13.889 B11.867 C41.203 +G01 X+27.131 Y-14.072 B11.863 C39.727 +G01 X+27.284 Y-14.256 B11.866 C38.252 +G01 X+27.427 Y-14.447 B11.863 C36.776 +G01 X+27.57 Y-14.639 B11.866 C35.301 +G01 X+27.703 Y-14.837 B11.862 C33.826 +G01 X+27.836 Y-15.036 B11.866 C32.35 +G01 X+27.958 Y-15.241 B11.862 C30.879 +G01 X+28.081 Y-15.446 B11.866 C29.409 +G01 X+28.193 Y-15.657 B11.862 C27.933 +G01 X+28.305 Y-15.868 B11.866 C26.458 +G01 X+28.406 Y-16.084 B11.863 C24.982 +G01 X+28.506 Y-16.301 B11.866 C23.506 +G01 X+28.596 Y-16.522 B11.863 C22.031 +G01 X+28.686 Y-16.743 B11.867 C20.555 +G01 X+28.764 Y-16.969 B11.863 C19.08 +G01 X+28.842 Y-17.195 B11.867 C17.604 +G01 X+28.908 Y-17.424 B11.863 C16.128 +G01 X+28.974 Y-17.654 B11.867 C14.653 +G01 X+29.029 Y-17.886 B11.863 C13.177 +G01 X+29.083 Y-18.119 B11.867 C11.702 +G01 X+29.126 Y-18.354 B11.863 C10.226 +G01 X+29.168 Y-18.589 B11.867 C8.751 +G01 X+29.198 Y-18.826 B11.863 C7.275 +G01 X+29.229 Y-19.063 B11.867 C5.799 +G01 X+29.247 Y-19.301 B11.863 C4.324 +G01 X+29.265 Y-19.539 B11.867 C2.848 +G01 X+29.27 Y-19.778 C1.373 +G01 X+29.276 Y-20.017 C359.897 +G01 X+29.27 Y-20.255 C358.421 +G01 X+29.263 Y-20.494 C356.946 +G01 X+29.244 Y-20.732 C355.471 +G01 X+29.225 Y-20.97 C353.995 +G01 X+29.194 Y-21.207 C352.519 +G01 X+29.163 Y-21.444 C351.044 +G01 X+29.12 Y-21.679 C349.568 +G01 X+29.076 Y-21.914 C348.092 +G01 X+29.021 Y-22.146 C346.617 +G01 X+28.966 Y-22.378 C345.141 +G01 X+28.899 Y-22.608 C343.666 +G01 X+28.832 Y-22.837 C342.19 +G01 X+28.753 Y-23.062 C340.715 +G01 X+28.674 Y-23.288 C339.239 +G01 X+28.584 Y-23.509 C337.764 +G01 X+28.493 Y-23.73 C336.288 +G01 X+28.392 Y-23.946 C334.812 +G01 X+28.29 Y-24.162 C333.337 +G01 X+28.177 Y-24.373 C331.861 +G01 X+28.065 Y-24.583 C330.386 +G01 X+27.941 Y-24.788 C328.91 +G01 X+27.818 Y-24.992 C327.434 +G01 X+27.684 Y-25.19 C325.959 +G01 X+27.551 Y-25.388 C324.483 +G01 X+27.407 Y-25.579 B11.863 C323.008 +G01 X+27.263 Y-25.77 B11.867 C321.532 +G01 X+27.11 Y-25.953 B11.863 C320.057 +G01 X+26.957 Y-26.136 B11.867 C318.581 +G01 X+26.794 Y-26.311 B11.863 C317.105 +G01 X+26.631 Y-26.486 B11.867 C315.63 +G01 X+26.46 Y-26.652 B11.863 C314.154 +G01 X+26.289 Y-26.819 B11.867 C312.679 +G01 X+26.109 Y-26.976 B11.863 C311.203 +G01 X+25.929 Y-27.133 B11.867 C309.728 +G01 X+25.742 Y-27.281 B11.863 C308.252 +G01 X+25.554 Y-27.429 B11.866 C306.776 +G01 X+25.359 Y-27.567 B11.863 C305.301 +G01 X+25.164 Y-27.705 B11.866 C303.825 +G01 X+24.962 Y-27.834 B11.862 C302.347 +G01 X+24.759 Y-27.962 B11.866 C300.868 +G01 X+24.552 Y-28.079 B11.862 C299.401 +G01 X+24.345 Y-28.195 B11.866 C297.933 +G01 X+24.131 Y-28.302 B11.862 C296.458 +G01 X+23.917 Y-28.408 B11.866 C294.982 +G01 X+23.698 Y-28.504 B11.863 C293.507 +G01 X+23.479 Y-28.599 B11.866 C292.031 +G01 X+23.256 Y-28.683 B11.863 C290.555 +G01 X+23.032 Y-28.766 B11.867 C289.08 +G01 X+22.804 Y-28.839 B11.863 C287.604 +G01 X+22.577 Y-28.911 B11.867 C286.128 +G01 X+22.345 Y-28.971 B11.863 C284.653 +G01 X+22.114 Y-29.032 B11.867 C283.177 +G01 X+21.881 Y-29.08 B11.863 C281.702 +G01 X+21.647 Y-29.129 B11.867 C280.226 +G01 X+21.411 Y-29.165 B11.863 C278.751 +G01 X+21.175 Y-29.201 B11.867 C277.275 +G01 X+20.937 Y-29.226 B11.863 C275.799 +G01 X+20.699 Y-29.25 B11.867 C274.324 +G01 X+20.461 Y-29.262 C272.848 +G01 X+20.222 Y-29.273 C271.373 +G01 X+19.983 C269.897 +G01 X+19.745 Y-29.272 C268.421 +G01 X+19.506 Y-29.26 C266.946 +G01 X+19.268 Y-29.247 C265.471 +G01 X+19.03 Y-29.222 C263.995 +G01 X+18.792 Y-29.197 C262.519 +G01 X+18.557 Y-29.16 C261.044 +G01 X+18.321 Y-29.123 C259.568 +G01 X+18.087 Y-29.073 C258.092 +G01 X+17.853 Y-29.024 C256.617 +G01 X+17.622 Y-28.963 C255.141 +G01 X+17.392 Y-28.902 C253.666 +G01 X+17.164 Y-28.829 C252.19 +G01 X+16.937 Y-28.756 C250.715 +G01 X+16.713 Y-28.671 C249.239 +G01 X+16.49 Y-28.586 C247.764 +G01 X+16.272 Y-28.491 C246.291 +G01 X+16.054 Y-28.395 C244.818 +G01 X+15.795 Y-28.265 B11.863 C243.085 +G01 X+15.537 Y-28.134 Z-1.467 B11.869 C241.352 +G01 X+15.214 Y-27.947 B11.868 C238.94 +G01 X+15.011 Y-27.817 Z-1.466 B11.864 C237.451 +G01 X+14.808 Y-27.687 B11.867 C235.961 +G01 X+14.614 Y-27.548 B11.863 C234.485 +G01 X+14.419 Y-27.409 B11.867 C233.008 +G01 X+14.232 Y-27.261 B11.863 C231.532 +G01 X+14.045 Y-27.112 B11.867 C230.057 +G01 X+13.866 Y-26.954 B11.863 C228.581 +G01 X+13.687 Y-26.796 B11.867 C227.105 +G01 X+13.516 Y-26.629 B11.863 C225.63 +G01 X+13.345 Y-26.462 B11.867 C224.154 +G01 X+13.126 Y-26.224 B11.863 C222.161 +G01 X+13.072 Y-26.154 Z-1.464 B11.854 C221.612 +G01 X+13.031 Y-26.076 Z-1.46 B11.831 C221.08 +G01 X+13.005 Y-25.991 Z-1.453 B11.786 C220.576 +G01 X+12.925 Y-25.625 Z-1.417 B11.563 C218.48 +G01 X+12.905 Y-25.557 Z-1.412 B11.527 C218.068 +G01 X+12.876 Y-25.492 Z-1.408 B11.507 C217.601 +G01 X+12.837 Y-25.431 Z-1.407 B11.499 C217.157 +G01 X+12.665 Y-25.202 Z-1.408 B11.502 C215.336 +G01 X+12.536 Y-25.009 Z-1.407 B11.498 C213.861 +G01 X+12.407 Y-24.817 Z-1.408 B11.502 C212.386 +G01 X+12.288 Y-24.618 Z-1.407 B11.498 C210.911 +G01 X+12.169 Y-24.42 Z-1.408 B11.502 C209.436 +G01 X+12.06 Y-24.215 Z-1.407 C207.963 +G01 X+11.952 Y-24.011 Z-1.408 C206.49 +G01 X+11.854 Y-23.801 Z-1.407 B11.498 C205.013 +G01 X+11.756 Y-23.591 Z-1.408 B11.502 C203.535 +G01 X+11.669 Y-23.377 Z-1.407 B11.498 C202.058 +G01 X+11.582 Y-23.162 Z-1.408 B11.502 C200.581 +G01 X+11.506 Y-22.943 Z-1.407 B11.499 C199.104 +G01 X+11.43 Y-22.724 Z-1.408 B11.502 C197.626 +G01 X+11.366 Y-22.502 Z-1.407 B11.499 C196.149 +G01 X+11.301 Y-22.28 Z-1.408 B11.502 C194.672 +G01 X+11.248 Y-22.054 Z-1.407 B11.499 C193.194 +G01 X+11.196 Y-21.829 Z-1.408 B11.503 C191.717 +G01 X+11.154 Y-21.601 Z-1.407 C190.24 +G01 X+11.113 Y-21.373 Z-1.408 C188.762 +G01 X+11.083 Y-21.133 Z-1.407 B11.498 C187.22 +G01 X+11.053 Y-20.894 Z-1.408 B11.502 C185.677 +G01 X+11.036 Y-20.666 Z-1.407 B11.499 C184.226 +G01 X+11.019 Y-20.439 Z-1.408 B11.502 C182.774 +G01 X+11.008 Y-19.989 B11.503 C179.905 +G01 X+11.014 Y-19.758 Z-1.407 C178.43 +G01 X+11.02 Y-19.526 Z-1.408 C176.955 +G01 X+11.038 Y-19.295 Z-1.407 C175.48 +G01 X+11.056 Y-19.065 Z-1.408 C174.006 +G01 X+11.086 Y-18.835 Z-1.407 C172.531 +G01 X+11.116 Y-18.605 Z-1.408 C171.056 +G01 X+11.158 Y-18.378 Z-1.407 C169.581 +G01 X+11.2 Y-18.15 Z-1.408 C168.106 +G01 X+11.253 Y-17.925 Z-1.407 C166.631 +G01 X+11.307 Y-17.699 Z-1.408 C165.156 +G01 X+11.372 Y-17.477 Z-1.407 C163.682 +G01 X+11.437 Y-17.255 Z-1.408 C162.207 +G01 X+11.513 Y-17.036 Z-1.407 C160.732 +G01 X+11.59 Y-16.818 Z-1.408 C159.257 +G01 X+11.677 Y-16.603 Z-1.407 C157.782 +G01 X+11.764 Y-16.389 Z-1.408 C156.307 +G01 X+11.863 Y-16.179 Z-1.407 C154.833 +G01 X+11.961 Y-15.97 Z-1.408 C153.358 +G01 X+12.07 Y-15.766 Z-1.407 B11.499 C151.883 +G01 X+12.179 Y-15.561 Z-1.408 B11.503 C150.408 +G01 X+12.299 Y-15.363 Z-1.407 B11.499 C148.933 +G01 X+12.418 Y-15.165 Z-1.408 B11.503 C147.458 +G01 X+12.63 Y-14.85 Z-1.407 B11.5 C145.03 +G01 X+12.677 Y-14.781 Z-1.408 B11.503 C144.509 +G01 X+12.901 Y-14.484 Z-1.407 B11.5 C142.127 +G01 X+12.956 Y-14.411 Z-1.408 B11.503 C141.559 +G01 X+13.189 Y-14.131 Z-1.407 B11.5 C139.223 +G01 X+13.253 Y-14.056 Z-1.408 B11.503 C138.609 +G01 X+13.495 Y-13.794 Z-1.407 B11.5 C136.32 +G01 X+13.568 Y-13.716 Z-1.408 B11.502 C135.66 +G01 X+13.818 Y-13.473 Z-1.407 B11.5 C133.417 +G01 X+13.9 Y-13.393 Z-1.408 B11.502 C132.71 +G01 X+14.157 Y-13.168 Z-1.407 B11.5 C130.513 +G01 X+14.248 Y-13.088 Z-1.408 B11.502 C129.76 +G01 X+14.429 Y-12.944 Z-1.407 C128.286 +G01 X+14.611 Y-12.801 Z-1.408 C126.811 +G01 X+14.8 Y-12.667 Z-1.407 B11.498 C125.336 +G01 X+14.989 Y-12.533 Z-1.408 B11.502 C123.861 +G01 X+15.184 Y-12.409 Z-1.407 B11.498 C122.386 +G01 X+15.38 Y-12.285 Z-1.408 B11.502 C120.911 +G01 X+15.582 Y-12.171 Z-1.407 B11.498 C119.438 +G01 X+15.783 Y-12.058 Z-1.408 B11.502 C117.965 +G01 X+15.99 Y-11.954 Z-1.407 B11.498 C116.489 +G01 X+16.198 Y-11.851 Z-1.408 B11.502 C115.013 +G01 X+16.41 Y-11.758 Z-1.407 B11.498 C113.536 +G01 X+16.622 Y-11.666 Z-1.408 B11.502 C112.058 +G01 X+16.839 Y-11.585 Z-1.407 B11.499 C110.581 +G01 X+17.056 Y-11.503 Z-1.408 B11.502 C109.104 +G01 X+17.276 Y-11.433 Z-1.407 B11.499 C107.626 +G01 X+17.497 Y-11.363 Z-1.408 B11.502 C106.149 +G01 X+17.909 Y-11.255 Z-1.407 B11.501 C103.449 +G01 X+17.945 Y-11.246 Z-1.408 B11.502 C103.194 +G01 X+18.172 Y-11.198 Z-1.407 B11.499 C101.717 +G01 X+18.398 Y-11.151 Z-1.408 B11.503 C100.24 +G01 X+18.627 Y-11.116 Z-1.407 B11.499 C98.762 +G01 X+18.856 Y-11.081 Z-1.408 B11.503 C97.285 +G01 X+19.095 Y-11.057 Z-1.407 B11.498 C95.755 +G01 X+19.333 Y-11.033 Z-1.408 B11.502 C94.226 +G01 X+19.561 Y-11.021 Z-1.407 B11.499 C92.774 +G01 X+19.788 Y-11.01 Z-1.408 B11.502 C91.323 +G01 X+20.016 Y-11.011 Z-1.407 B11.499 C89.872 +G01 X+20.244 Z-1.408 B11.503 C88.42 +G01 X+20.474 Y-11.023 Z-1.407 B11.499 C86.95 +G01 X+20.705 Y-11.035 Z-1.408 B11.503 C85.48 +G01 X+20.935 Y-11.059 Z-1.407 C84.006 +G01 X+21.165 Y-11.083 Z-1.408 C82.531 +G01 X+21.394 Y-11.119 Z-1.407 C81.056 +G01 X+21.623 Y-11.155 Z-1.408 C79.581 +G01 X+21.849 Y-11.203 Z-1.407 C78.106 +G01 X+22.076 Y-11.25 Z-1.408 C76.631 +G01 X+22.3 Y-11.31 Z-1.407 C75.156 +G01 X+22.524 Y-11.369 Z-1.408 C73.682 +G01 X+22.744 Y-11.439 Z-1.407 C72.207 +G01 X+22.964 Y-11.51 Z-1.408 C70.732 +G01 X+23.181 Y-11.592 Z-1.407 C69.257 +G01 X+23.398 Y-11.674 Z-1.408 C67.782 +G01 X+23.61 Y-11.767 Z-1.407 C66.307 +G01 X+23.822 Y-11.86 Z-1.408 C64.833 +G01 X+24.029 Y-11.964 Z-1.407 C63.358 +G01 X+24.236 Y-12.068 Z-1.408 C61.883 +G01 X+24.437 Y-12.182 Z-1.407 B11.499 C60.408 +G01 X+24.638 Y-12.296 Z-1.408 B11.503 C58.933 +G01 X+24.834 Y-12.421 Z-1.407 B11.499 C57.458 +G01 X+25.029 Y-12.545 Z-1.408 B11.503 C55.984 +G01 X+25.335 Y-12.763 Z-1.407 B11.5 C53.578 +G01 X+25.406 Y-12.814 Z-1.408 B11.503 C53.034 +G01 X+25.694 Y-13.043 Z-1.407 B11.5 C50.675 +G01 X+25.769 Y-13.102 Z-1.408 B11.503 C50.084 +G01 X+26.039 Y-13.34 Z-1.407 B11.5 C47.772 +G01 X+26.116 Y-13.408 Z-1.408 B11.502 C47.134 +G01 X+26.369 Y-13.655 Z-1.407 B11.5 C44.868 +G01 X+26.447 Y-13.731 Z-1.408 B11.502 C44.185 +G01 X+26.682 Y-13.985 Z-1.407 B11.5 C41.965 +G01 X+26.762 Y-14.072 Z-1.408 B11.502 C41.235 +G01 X+26.91 Y-14.25 Z-1.407 C39.76 +G01 X+27.058 Y-14.428 Z-1.408 C38.286 +G01 X+27.197 Y-14.613 Z-1.407 B11.499 C36.811 +G01 X+27.335 Y-14.798 Z-1.408 B11.502 C35.336 +G01 X+27.464 Y-14.991 Z-1.407 B11.498 C33.861 +G01 X+27.593 Y-15.183 Z-1.408 B11.502 C32.386 +G01 X+27.712 Y-15.381 Z-1.407 B11.498 C30.911 +G01 X+27.831 Y-15.58 Z-1.408 B11.502 C29.436 +G01 X+27.94 Y-15.785 Z-1.407 C27.963 +G01 X+28.048 Y-15.989 Z-1.408 C26.49 +G01 X+28.146 Y-16.199 Z-1.407 B11.498 C25.013 +G01 X+28.244 Y-16.409 Z-1.408 B11.502 C23.536 +G01 X+28.331 Y-16.623 Z-1.407 B11.498 C22.058 +G01 X+28.418 Y-16.838 Z-1.408 B11.502 C20.581 +G01 X+28.494 Y-17.057 Z-1.407 B11.499 C19.104 +G01 X+28.57 Y-17.275 Z-1.408 B11.502 C17.626 +G01 X+28.634 Y-17.498 Z-1.407 B11.499 C16.149 +G01 X+28.699 Y-17.72 Z-1.408 B11.502 C14.672 +G01 X+28.752 Y-17.946 Z-1.407 B11.499 C13.194 +G01 X+28.804 Y-18.171 Z-1.408 B11.503 C11.717 +G01 X+28.846 Y-18.399 Z-1.407 C10.24 +G01 X+28.887 Y-18.627 Z-1.408 C8.762 +G01 X+28.917 Y-18.866 Z-1.407 B11.498 C7.22 +G01 X+28.947 Y-19.106 Z-1.408 B11.502 C5.677 +G01 X+28.964 Y-19.333 Z-1.407 B11.499 C4.226 +G01 X+28.981 Y-19.561 Z-1.408 B11.502 C2.774 +G01 X+28.992 Y-20.011 B11.503 C359.905 +G01 X+28.986 Y-20.242 Z-1.407 C358.43 +G01 X+28.98 Y-20.474 Z-1.408 C356.955 +G01 X+28.962 Y-20.704 Z-1.407 C355.48 +G01 X+28.944 Y-20.935 Z-1.408 C354.006 +G01 X+28.914 Y-21.165 Z-1.407 C352.531 +G01 X+28.884 Y-21.394 Z-1.408 C351.056 +G01 X+28.842 Y-21.622 Z-1.407 C349.581 +G01 X+28.8 Y-21.85 Z-1.408 C348.106 +G01 X+28.747 Y-22.075 Z-1.407 C346.631 +G01 X+28.693 Y-22.3 Z-1.408 C345.156 +G01 X+28.628 Y-22.523 Z-1.407 C343.682 +G01 X+28.563 Y-22.745 Z-1.408 C342.207 +G01 X+28.487 Y-22.963 Z-1.407 C340.732 +G01 X+28.411 Y-23.182 Z-1.408 C339.257 +G01 X+28.323 Y-23.396 Z-1.407 C337.782 +G01 X+28.236 Y-23.611 Z-1.408 C336.307 +G01 X+28.137 Y-23.82 Z-1.407 C334.833 +G01 X+28.039 Y-24.03 Z-1.408 C333.358 +G01 X+27.93 Y-24.234 Z-1.407 B11.499 C331.883 +G01 X+27.821 Y-24.438 Z-1.408 B11.503 C330.408 +G01 X+27.701 Y-24.637 Z-1.407 B11.499 C328.933 +G01 X+27.582 Y-24.835 Z-1.408 B11.503 C327.458 +G01 X+27.37 Y-25.149 Z-1.407 B11.5 C325.03 +G01 X+27.323 Y-25.219 Z-1.408 B11.503 C324.509 +G01 X+27.099 Y-25.516 Z-1.407 B11.5 C322.127 +G01 X+27.044 Y-25.589 Z-1.408 B11.503 C321.559 +G01 X+26.811 Y-25.869 Z-1.407 B11.5 C319.223 +G01 X+26.747 Y-25.944 Z-1.408 B11.503 C318.609 +G01 X+26.505 Y-26.206 Z-1.407 B11.5 C316.32 +G01 X+26.432 Y-26.284 Z-1.408 B11.502 C315.66 +G01 X+26.182 Y-26.527 Z-1.407 B11.5 C313.417 +G01 X+26.1 Y-26.607 Z-1.408 B11.502 C312.71 +G01 X+25.843 Y-26.832 Z-1.407 B11.5 C310.513 +G01 X+25.752 Y-26.912 Z-1.408 B11.502 C309.76 +G01 X+25.571 Y-27.055 Z-1.407 C308.286 +G01 X+25.389 Y-27.199 Z-1.408 C306.811 +G01 X+25.2 Y-27.333 Z-1.407 B11.498 C305.336 +G01 X+25.011 Y-27.467 Z-1.408 B11.502 C303.861 +G01 X+24.816 Y-27.591 Z-1.407 B11.498 C302.386 +G01 X+24.62 Y-27.715 Z-1.408 B11.502 C300.911 +G01 X+24.418 Y-27.829 Z-1.407 B11.498 C299.438 +G01 X+24.217 Y-27.942 Z-1.408 B11.502 C297.965 +G01 X+24.01 Y-28.046 Z-1.407 B11.498 C296.489 +G01 X+23.802 Y-28.149 Z-1.408 B11.502 C295.013 +G01 X+23.59 Y-28.241 Z-1.407 B11.498 C293.536 +G01 X+23.378 Y-28.334 Z-1.408 B11.502 C292.058 +G01 X+23.161 Y-28.415 Z-1.407 B11.499 C290.581 +G01 X+22.944 Y-28.497 Z-1.408 B11.502 C289.104 +G01 X+22.724 Y-28.567 Z-1.407 B11.499 C287.626 +G01 X+22.503 Y-28.637 Z-1.408 B11.502 C286.149 +G01 X+22.091 Y-28.745 Z-1.407 B11.501 C283.449 +G01 X+22.055 Y-28.754 Z-1.408 B11.502 C283.194 +G01 X+21.828 Y-28.802 Z-1.407 B11.499 C281.717 +G01 X+21.602 Y-28.848 Z-1.408 B11.503 C280.24 +G01 X+21.373 Y-28.884 Z-1.407 B11.499 C278.762 +G01 X+21.144 Y-28.919 Z-1.408 B11.503 C277.285 +G01 X+20.905 Y-28.943 Z-1.407 B11.498 C275.755 +G01 X+20.667 Y-28.967 Z-1.408 B11.502 C274.226 +G01 X+20.439 Y-28.978 Z-1.407 B11.499 C272.774 +G01 X+20.212 Y-28.99 Z-1.408 B11.502 C271.323 +G01 X+19.984 Y-28.989 Z-1.407 B11.499 C269.871 +G01 X+19.756 Z-1.408 B11.503 C268.42 +G01 X+19.526 Y-28.977 Z-1.407 B11.499 C266.95 +G01 X+19.295 Y-28.965 Z-1.408 B11.503 C265.48 +G01 X+19.065 Y-28.941 Z-1.407 C264.006 +G01 X+18.835 Y-28.916 Z-1.408 C262.531 +G01 X+18.606 Y-28.881 Z-1.407 C261.056 +G01 X+18.377 Y-28.845 Z-1.408 C259.581 +G01 X+18.151 Y-28.797 Z-1.407 C258.106 +G01 X+17.924 Y-28.749 Z-1.408 C256.631 +G01 X+17.7 Y-28.69 Z-1.407 C255.156 +G01 X+17.476 Y-28.631 Z-1.408 C253.682 +G01 X+17.256 Y-28.56 Z-1.407 C252.207 +G01 X+17.036 Y-28.49 Z-1.408 C250.732 +G01 X+16.819 Y-28.408 Z-1.407 C249.257 +G01 X+16.602 Y-28.326 Z-1.408 C247.782 +G01 X+16.391 Y-28.233 Z-1.407 C246.311 +G01 X+16.179 Y-28.14 Z-1.408 C244.84 +G01 X+15.926 Y-28.013 Z-1.407 B11.499 C243.096 +G01 X+15.672 Y-27.885 Z-1.408 B11.505 C241.352 +G01 X+15.366 Y-27.707 B11.504 C238.968 +G01 X+15.169 Y-27.581 Z-1.407 B11.5 C237.477 +G01 X+14.972 Y-27.455 Z-1.408 B11.503 C235.987 +G01 X+14.665 Y-27.237 Z-1.407 B11.5 C233.578 +G01 X+14.594 Y-27.186 Z-1.408 B11.503 C233.034 +G01 X+14.306 Y-26.957 Z-1.407 B11.5 C230.675 +G01 X+14.231 Y-26.898 Z-1.408 B11.503 C230.084 +G01 X+13.961 Y-26.66 Z-1.407 B11.5 C227.772 +G01 X+13.884 Y-26.592 Z-1.408 B11.502 C227.134 +G01 X+13.718 Y-26.43 Z-1.407 B11.499 C225.66 +G01 X+13.553 Y-26.268 Z-1.408 B11.502 C224.185 +G01 X+13.336 Y-26.034 Z-1.407 B11.499 C222.137 +G01 X+13.282 Y-25.964 Z-1.406 B11.491 C221.579 +G01 X+13.241 Y-25.885 Z-1.401 B11.462 C221.043 +G01 X+13.215 Y-25.801 Z-1.394 B11.417 C220.494 +G01 X+13.135 Y-25.431 Z-1.36 B11.193 C218.337 +G01 X+13.115 Y-25.363 Z-1.354 B11.158 C217.907 +G01 X+13.085 Y-25.298 Z-1.351 B11.138 C217.428 +G01 X+13.046 Y-25.237 Z-1.35 B11.13 C216.966 +G01 X+12.9 Y-25.042 Z-1.351 B11.133 C215.366 +G01 X+12.65 Y-24.669 C212.418 +G01 X+12.419 Y-24.285 C209.469 +G01 X+12.208 Y-23.887 C206.513 +G01 X+12.018 Y-23.483 C203.575 +G01 X+11.85 Y-23.067 C200.622 +G01 X+11.703 Y-22.643 C197.669 +G01 X+11.578 Y-22.213 B11.134 C194.716 +G01 X+11.483 Y-21.81 Z-1.35 B11.132 C191.997 +G01 X+11.475 Y-21.776 Z-1.351 B11.134 C191.763 +G01 X+11.402 Y-21.376 Z-1.35 B11.132 C189.094 +G01 X+11.395 Y-21.335 Z-1.351 B11.134 C188.81 +G01 X+11.344 Y-20.939 Z-1.35 B11.132 C186.191 +G01 X+11.337 Y-20.89 Z-1.351 B11.134 C185.857 +G01 X+11.303 Y-20.443 C182.904 +G01 X+11.292 Y-19.995 C179.951 +G01 X+11.304 Y-19.547 C176.998 +G01 X+11.338 Y-19.1 C174.045 +G01 X+11.396 Y-18.655 C171.092 +G01 X+11.477 Y-18.214 C168.139 +G01 X+11.58 Y-17.777 C165.186 +G01 X+11.706 Y-17.347 C162.233 +G01 X+11.853 Y-16.923 C159.279 +G01 X+12.022 Y-16.508 C156.326 +G01 X+12.121 Y-16.298 Z-1.35 B11.13 C154.803 +G01 X+12.22 Y-16.089 Z-1.351 B11.133 C153.279 +G01 X+12.424 Y-15.706 B11.134 C150.426 +G01 X+12.655 Y-15.322 C147.474 +G01 X+12.905 Y-14.95 C144.529 +G01 X+13.175 Y-14.592 C141.581 +G01 X+13.462 Y-14.247 C138.633 +G01 X+13.767 Y-13.918 C135.684 +G01 X+14.088 Y-13.606 C132.736 +G01 X+14.425 Y-13.31 C129.788 +G01 X+14.738 Y-13.063 Z-1.35 B11.133 C127.149 +G01 X+14.777 Y-13.032 Z-1.351 B11.134 C126.84 +G01 X+15.143 Y-12.772 B11.133 C123.891 +G01 X+15.521 Y-12.532 C120.943 +G01 X+15.912 Y-12.311 C117.995 +G01 X+16.313 Y-12.111 C115.052 +G01 X+16.724 Y-11.931 C112.099 +G01 X+17.144 Y-11.773 C109.146 +G01 X+17.571 Y-11.637 C106.192 +G01 X+17.975 Y-11.531 Z-1.35 B11.132 C103.449 +G01 X+18.005 Y-11.523 Z-1.351 B11.134 C103.239 +G01 X+18.406 Y-11.44 Z-1.35 B11.132 C100.546 +G01 X+18.444 Y-11.432 Z-1.351 B11.134 C100.286 +G01 X+18.842 Y-11.37 Z-1.35 B11.132 C97.643 +G01 X+18.887 Y-11.363 Z-1.351 B11.134 C97.333 +G01 X+19.281 Y-11.323 Z-1.35 B11.132 C94.739 +G01 X+19.333 Y-11.317 Z-1.351 B11.134 C94.38 +G01 X+19.781 Y-11.294 C91.427 +G01 X+20.229 Y-11.295 C88.474 +G01 X+20.677 Y-11.318 C85.521 +G01 X+21.123 Y-11.364 C82.568 +G01 X+21.566 Y-11.434 C79.615 +G01 X+22.005 Y-11.526 C76.662 +G01 X+22.439 Y-11.64 C73.709 +G01 X+22.866 Y-11.777 C70.756 +G01 X+23.285 Y-11.935 C67.803 +G01 X+23.499 Y-12.029 Z-1.35 B11.13 C66.267 +G01 X+23.713 Y-12.123 Z-1.351 B11.133 C64.731 +G01 X+24.097 Y-12.316 B11.134 C61.9 +G01 X+24.487 Y-12.537 C58.951 +G01 X+24.865 Y-12.778 C56.003 +G01 X+25.231 Y-13.038 C53.055 +G01 X+25.582 Y-13.316 C50.107 +G01 X+25.919 Y-13.612 C47.159 +G01 X+26.24 Y-13.926 C44.211 +G01 X+26.544 Y-14.255 C41.262 +G01 X+26.831 Y-14.599 C38.314 +G01 X+27.068 Y-14.916 Z-1.35 B11.132 C35.697 +G01 X+27.1 Y-14.958 Z-1.351 B11.133 C35.366 +G01 X+27.35 Y-15.33 C32.418 +G01 X+27.581 Y-15.715 C29.469 +G01 X+27.792 Y-16.113 C26.513 +G01 X+27.982 Y-16.517 C23.575 +G01 X+28.15 Y-16.933 C20.622 +G01 X+28.297 Y-17.356 C17.669 +G01 X+28.422 Y-17.787 B11.134 C14.716 +G01 X+28.517 Y-18.19 Z-1.35 B11.132 C11.997 +G01 X+28.525 Y-18.224 Z-1.351 B11.134 C11.763 +G01 X+28.598 Y-18.624 Z-1.35 B11.132 C9.094 +G01 X+28.605 Y-18.665 Z-1.351 B11.134 C8.81 +G01 X+28.656 Y-19.061 Z-1.35 B11.132 C6.191 +G01 X+28.663 Y-19.109 Z-1.351 B11.134 C5.857 +G01 X+28.697 Y-19.557 C2.904 +G01 X+28.708 Y-20.005 C359.951 +G01 X+28.696 Y-20.453 C356.998 +G01 X+28.662 Y-20.9 C354.045 +G01 X+28.604 Y-21.345 C351.092 +G01 X+28.523 Y-21.786 C348.139 +G01 X+28.42 Y-22.222 C345.186 +G01 X+28.294 Y-22.653 C342.233 +G01 X+28.147 Y-23.076 C339.279 +G01 X+27.978 Y-23.492 C336.326 +G01 X+27.879 Y-23.702 Z-1.35 B11.13 C334.803 +G01 X+27.78 Y-23.911 Z-1.351 B11.133 C333.279 +G01 X+27.576 Y-24.294 B11.134 C330.426 +G01 X+27.345 Y-24.678 C327.474 +G01 X+27.095 Y-25.05 C324.529 +G01 X+26.825 Y-25.408 C321.581 +G01 X+26.538 Y-25.752 C318.633 +G01 X+26.233 Y-26.081 C315.684 +G01 X+25.912 Y-26.394 C312.736 +G01 X+25.575 Y-26.69 C309.788 +G01 X+25.262 Y-26.937 Z-1.35 B11.133 C307.149 +G01 X+25.223 Y-26.968 Z-1.351 B11.134 C306.84 +G01 X+24.857 Y-27.228 B11.133 C303.891 +G01 X+24.479 Y-27.468 C300.943 +G01 X+24.088 Y-27.689 C297.995 +G01 X+23.687 Y-27.889 C295.052 +G01 X+23.276 Y-28.068 C292.099 +G01 X+22.856 Y-28.226 C289.146 +G01 X+22.429 Y-28.363 C286.192 +G01 X+22.025 Y-28.469 Z-1.35 B11.132 C283.449 +G01 X+21.995 Y-28.477 Z-1.351 B11.134 C283.239 +G01 X+21.594 Y-28.56 Z-1.35 B11.132 C280.546 +G01 X+21.556 Y-28.568 Z-1.351 B11.134 C280.286 +G01 X+21.158 Y-28.63 Z-1.35 B11.132 C277.643 +G01 X+21.113 Y-28.637 Z-1.351 B11.134 C277.333 +G01 X+20.719 Y-28.677 Z-1.35 B11.132 C274.739 +G01 X+20.667 Y-28.683 Z-1.351 B11.134 C274.38 +G01 X+20.219 Y-28.705 C271.427 +G01 X+19.771 C268.474 +G01 X+19.323 Y-28.682 C265.521 +G01 X+18.877 Y-28.635 C262.568 +G01 X+18.434 Y-28.566 C259.615 +G01 X+17.995 Y-28.474 C256.662 +G01 X+17.561 Y-28.36 C253.709 +G01 X+17.134 Y-28.223 C250.756 +G01 X+16.715 Y-28.065 C247.803 +G01 X+16.501 Y-27.971 Z-1.35 B11.13 C246.267 +G01 X+16.287 Y-27.876 Z-1.351 B11.133 C244.731 +G01 X+16.047 Y-27.756 Z-1.35 B11.13 C243.041 +G01 X+15.807 Y-27.635 Z-1.351 B11.136 C241.352 +G01 X+15.518 Y-27.467 B11.135 C238.991 +G01 X+15.326 Y-27.345 Z-1.35 B11.131 C237.499 +G01 X+15.135 Y-27.223 Z-1.351 B11.134 C236.007 +G01 X+14.769 Y-26.962 C233.055 +G01 X+14.418 Y-26.684 C230.107 +G01 X+14.081 Y-26.387 C227.158 +G01 X+13.76 Y-26.074 C224.21 +G01 X+13.547 Y-25.843 Z-1.35 B11.131 C222.148 +G01 X+13.492 Y-25.773 Z-1.349 B11.122 C221.544 +G01 X+13.451 Y-25.694 Z-1.345 B11.094 C221.011 +G01 X+13.425 Y-25.61 Z-1.338 B11.049 C220.452 +G01 X+13.345 Y-25.237 Z-1.304 B10.823 C218.193 +G01 X+13.325 Y-25.169 Z-1.299 B10.79 C217.748 +G01 X+13.295 Y-25.103 Z-1.296 B10.769 C217.267 +G01 X+13.256 Y-25.043 Z-1.295 B10.762 C216.776 +G01 X+13.135 Y-24.881 B10.765 C215.401 +G01 X+12.893 Y-24.521 C212.45 +G01 X+12.669 Y-24.15 C209.501 +G01 X+12.465 Y-23.767 C206.554 +G01 X+12.281 Y-23.374 C203.61 +G01 X+12.118 Y-22.972 C200.662 +G01 X+11.975 Y-22.562 C197.711 +G01 X+11.854 Y-22.146 C194.759 +G01 X+11.754 Y-21.724 C191.808 +G01 X+11.677 Y-21.297 C188.856 +G01 X+11.621 Y-20.867 C185.905 +G01 X+11.587 Y-20.434 B10.766 C182.953 +G01 X+11.576 Y-20 C180.002 +G01 X+11.587 Y-19.567 C177.051 +G01 X+11.621 Y-19.134 C174.099 +G01 X+11.676 Y-18.704 C171.148 +G01 X+11.754 Y-18.277 C168.196 +G01 X+11.854 Y-17.855 C165.245 +G01 X+11.975 Y-17.439 C162.294 +G01 X+12.117 Y-17.029 C159.342 +G01 X+12.281 Y-16.627 C156.391 +G01 X+12.465 Y-16.234 C153.439 +G01 X+12.669 Y-15.851 C150.488 +G01 X+12.892 Y-15.479 C147.537 +G01 X+13.134 Y-15.119 C144.585 +G01 X+13.394 Y-14.772 C141.634 +G01 X+13.672 Y-14.439 C138.682 +G01 X+13.967 Y-14.121 C135.731 +G01 X+14.278 Y-13.818 B10.765 C132.779 +G01 X+14.603 Y-13.532 C129.828 +G01 X+14.943 Y-13.263 C126.876 +G01 X+15.297 Y-13.011 C123.925 +G01 X+15.663 Y-12.778 C120.975 +G01 X+16.041 Y-12.565 C118.028 +G01 X+16.429 Y-12.37 C115.075 +G01 X+16.826 Y-12.197 C112.138 +G01 X+17.232 Y-12.044 C109.186 +G01 X+17.645 Y-11.912 C106.235 +G01 X+18.065 Y-11.801 C103.283 +G01 X+18.489 Y-11.713 C100.332 +G01 X+18.918 Y-11.646 C97.381 +G01 X+19.349 Y-11.601 C94.429 +G01 X+19.783 Y-11.579 B10.766 C91.478 +G01 X+20.216 C88.526 +G01 X+20.65 Y-11.601 C85.575 +G01 X+21.081 Y-11.646 C82.624 +G01 X+21.51 Y-11.712 C79.672 +G01 X+21.934 Y-11.801 C76.721 +G01 X+22.354 Y-11.912 C73.769 +G01 X+22.767 Y-12.044 C70.818 +G01 X+23.173 Y-12.197 C67.866 +G01 X+23.57 Y-12.37 C64.915 +G01 X+23.959 Y-12.564 C61.963 +G01 X+24.336 Y-12.778 C59.012 +G01 X+24.702 Y-13.011 C56.061 +G01 X+25.056 Y-13.262 C53.109 +G01 X+25.396 Y-13.531 C50.158 +G01 X+25.722 Y-13.817 C47.206 +G01 X+26.032 Y-14.12 B10.765 C44.255 +G01 X+26.327 Y-14.439 C41.304 +G01 X+26.605 Y-14.772 C38.352 +G01 X+26.865 Y-15.119 C35.401 +G01 X+27.108 Y-15.478 C32.449 +G01 X+27.331 Y-15.85 C29.501 +G01 X+27.535 Y-16.233 C26.554 +G01 X+27.719 Y-16.626 C23.61 +G01 X+27.882 Y-17.028 C20.662 +G01 X+28.025 Y-17.438 C17.711 +G01 X+28.146 Y-17.854 C14.759 +G01 X+28.246 Y-18.276 C11.808 +G01 X+28.323 Y-18.703 C8.856 +G01 X+28.379 Y-19.133 C5.905 +G01 X+28.413 Y-19.566 B10.766 C2.953 +G01 X+28.424 Y-19.999 C0.002 +G01 X+28.413 Y-20.433 C357.051 +G01 X+28.379 Y-20.866 C354.099 +G01 X+28.324 Y-21.296 C351.148 +G01 X+28.246 Y-21.722 C348.196 +G01 X+28.146 Y-22.145 C345.245 +G01 X+28.025 Y-22.561 C342.294 +G01 X+27.883 Y-22.971 C339.342 +G01 X+27.719 Y-23.373 C336.391 +G01 X+27.535 Y-23.766 C333.439 +G01 X+27.331 Y-24.149 C330.488 +G01 X+27.108 Y-24.52 C327.537 +G01 X+26.866 Y-24.88 C324.585 +G01 X+26.606 Y-25.227 C321.634 +G01 X+26.328 Y-25.561 C318.682 +G01 X+26.033 Y-25.879 C315.731 +G01 X+25.722 Y-26.182 B10.765 C312.779 +G01 X+25.397 Y-26.468 C309.828 +G01 X+25.057 Y-26.737 C306.876 +G01 X+24.703 Y-26.989 C303.925 +G01 X+24.337 Y-27.221 C300.975 +G01 X+23.959 Y-27.435 C298.028 +G01 X+23.571 Y-27.63 C295.075 +G01 X+23.174 Y-27.803 C292.138 +G01 X+22.768 Y-27.956 C289.186 +G01 X+22.355 Y-28.088 C286.235 +G01 X+21.935 Y-28.198 C283.283 +G01 X+21.511 Y-28.287 C280.332 +G01 X+21.082 Y-28.354 C277.381 +G01 X+20.651 Y-28.399 C274.429 +G01 X+20.217 Y-28.421 B10.766 C271.478 +G01 X+19.784 C268.526 +G01 X+19.35 Y-28.399 C265.575 +G01 X+18.919 Y-28.354 C262.624 +G01 X+18.49 Y-28.287 C259.672 +G01 X+18.066 Y-28.199 C256.721 +G01 X+17.646 Y-28.088 C253.769 +G01 X+17.233 Y-27.956 C250.818 +G01 X+16.827 Y-27.803 C247.866 +G01 X+16.431 Y-27.63 C244.926 +G01 X+16.187 Y-27.508 B10.762 C243.139 +G01 X+15.942 Y-27.385 Z-1.296 B10.768 C241.352 +G01 X+15.669 Y-27.227 B10.767 C239.061 +G01 X+15.298 Y-26.99 B10.766 C236.066 +G01 X+14.944 Y-26.738 Z-1.295 C233.11 +G01 X+14.604 Y-26.469 C230.158 +G01 X+14.278 Y-26.182 C227.206 +G01 X+13.968 Y-25.88 B10.765 C224.255 +G01 X+13.757 Y-25.652 B10.763 C222.159 +G01 X+13.703 Y-25.582 Z-1.294 B10.754 C221.549 +G01 X+13.662 Y-25.503 Z-1.29 B10.725 C220.971 +G01 X+13.636 Y-25.419 Z-1.283 B10.68 C220.411 +G01 X+13.554 Y-25.044 Z-1.251 B10.459 C218.038 +G01 X+13.534 Y-24.975 Z-1.246 B10.426 C217.555 +G01 X+13.504 Y-24.91 Z-1.243 B10.405 C217.071 +G01 X+13.465 Y-24.849 Z-1.242 B10.398 C216.571 +G01 X+13.439 Y-24.814 B10.399 C216.242 +G01 X+13.369 Y-24.721 B10.402 C215.444 +G01 X+13.135 Y-24.374 C212.494 +G01 X+12.919 Y-24.014 C209.545 +G01 X+12.722 Y-23.645 C206.595 +G01 X+12.544 Y-23.265 B10.401 C203.645 +G01 X+12.385 Y-22.877 C200.7 +G01 X+12.247 Y-22.481 B10.402 C197.744 +G01 X+12.13 Y-22.079 C194.789 +G01 X+12.033 Y-21.671 C191.833 +G01 X+11.958 Y-21.258 C188.878 +G01 X+11.904 Y-20.843 C185.922 +G01 X+11.871 Y-20.409 C182.858 +G01 X+11.86 Y-19.997 C179.955 +G01 X+11.871 Y-19.585 C177.052 +G01 X+11.903 Y-19.169 C174.116 +G01 X+11.956 Y-18.753 C171.166 +G01 X+12.031 Y-18.341 C168.216 +G01 X+12.127 Y-17.933 C165.267 +G01 X+12.244 Y-17.53 C162.317 +G01 X+12.381 Y-17.134 C159.367 +G01 X+12.539 Y-16.746 C156.417 +G01 X+12.716 Y-16.366 C153.467 +G01 X+12.913 Y-15.996 C150.518 +G01 X+13.128 Y-15.636 C147.568 +G01 X+13.362 Y-15.288 C144.618 +G01 X+13.614 Y-14.953 C141.668 +G01 X+13.882 Y-14.631 C138.718 +G01 X+14.166 Y-14.323 C135.768 +G01 X+14.466 Y-14.03 C132.819 +G01 X+14.702 Y-13.823 B10.399 C130.597 +G01 X+14.781 Y-13.753 B10.402 C129.869 +G01 X+15.021 Y-13.563 B10.399 C127.694 +G01 X+15.109 Y-13.493 B10.402 C126.919 +G01 X+15.451 Y-13.25 C123.969 +G01 X+15.804 Y-13.024 C121.019 +G01 X+16.169 Y-12.818 C118.07 +G01 X+16.544 Y-12.63 C115.12 +G01 X+16.93 Y-12.461 B10.401 C112.159 +G01 X+17.32 Y-12.314 B10.402 C109.222 +G01 X+17.719 Y-12.186 C106.266 +G01 X+18.125 Y-12.079 C103.311 +G01 X+18.535 Y-11.993 C100.355 +G01 X+18.949 Y-11.928 C97.4 +G01 X+19.385 Y-11.884 B10.401 C94.309 +G01 X+19.797 Y-11.863 B10.402 C91.406 +G01 X+20.204 Y-11.862 C88.54 +G01 X+20.622 Y-11.884 C85.591 +G01 X+21.039 Y-11.927 C82.641 +G01 X+21.454 Y-11.991 C79.691 +G01 X+21.864 Y-12.076 C76.741 +G01 X+22.269 Y-12.183 C73.791 +G01 X+22.669 Y-12.31 C70.842 +G01 X+23.061 Y-12.457 C67.892 +G01 X+23.445 Y-12.625 C64.942 +G01 X+23.82 Y-12.812 C61.992 +G01 X+24.185 Y-13.018 C59.043 +G01 X+24.539 Y-13.243 C56.093 +G01 X+24.881 Y-13.486 C53.143 +G01 X+25.21 Y-13.746 C50.193 +G01 X+25.525 Y-14.022 C47.243 +G01 X+25.825 Y-14.314 C44.293 +G01 X+26.041 Y-14.547 B10.4 C42.049 +G01 X+26.11 Y-14.622 B10.402 C41.344 +G01 X+26.309 Y-14.86 B10.399 C39.146 +G01 X+26.379 Y-14.943 B10.402 C38.394 +G01 X+26.561 Y-15.186 B10.399 C36.242 +G01 X+26.631 Y-15.279 B10.402 C35.444 +G01 X+26.865 Y-15.626 C32.494 +G01 X+27.081 Y-15.985 C29.545 +G01 X+27.278 Y-16.355 C26.595 +G01 X+27.456 Y-16.735 B10.401 C23.645 +G01 X+27.615 Y-17.123 C20.7 +G01 X+27.753 Y-17.519 B10.402 C17.744 +G01 X+27.87 Y-17.921 C14.789 +G01 X+27.967 Y-18.329 C11.833 +G01 X+28.042 Y-18.741 C8.878 +G01 X+28.096 Y-19.157 C5.922 +G01 X+28.129 Y-19.591 C2.858 +G01 X+28.14 Y-20.003 C359.955 +G01 X+28.129 Y-20.415 C357.052 +G01 X+28.098 Y-20.831 C354.116 +G01 X+28.044 Y-21.247 C351.166 +G01 X+27.969 Y-21.659 C348.216 +G01 X+27.873 Y-22.067 C345.267 +G01 X+27.756 Y-22.47 C342.317 +G01 X+27.619 Y-22.866 C339.367 +G01 X+27.461 Y-23.254 C336.417 +G01 X+27.284 Y-23.634 C333.467 +G01 X+27.087 Y-24.004 C330.518 +G01 X+26.872 Y-24.364 C327.568 +G01 X+26.638 Y-24.712 C324.618 +G01 X+26.386 Y-25.047 C321.668 +G01 X+26.118 Y-25.369 C318.718 +G01 X+25.834 Y-25.677 C315.768 +G01 X+25.534 Y-25.97 C312.819 +G01 X+25.298 Y-26.177 B10.399 C310.597 +G01 X+25.219 Y-26.247 B10.402 C309.869 +G01 X+24.979 Y-26.437 B10.399 C307.694 +G01 X+24.891 Y-26.507 B10.402 C306.919 +G01 X+24.549 Y-26.75 C303.969 +G01 X+24.196 Y-26.975 C301.019 +G01 X+23.831 Y-27.182 C298.07 +G01 X+23.456 Y-27.37 C295.12 +G01 X+23.07 Y-27.539 B10.401 C292.159 +G01 X+22.68 Y-27.686 B10.402 C289.222 +G01 X+22.281 Y-27.814 C286.266 +G01 X+21.875 Y-27.921 C283.311 +G01 X+21.465 Y-28.007 C280.355 +G01 X+21.051 Y-28.072 C277.4 +G01 X+20.615 Y-28.116 B10.401 C274.309 +G01 X+20.203 Y-28.137 B10.402 C271.406 +G01 X+19.796 C268.54 +G01 X+19.378 Y-28.116 C265.591 +G01 X+18.961 Y-28.073 C262.641 +G01 X+18.547 Y-28.009 C259.691 +G01 X+18.136 Y-27.924 C256.741 +G01 X+17.731 Y-27.817 C253.791 +G01 X+17.331 Y-27.69 C250.842 +G01 X+16.939 Y-27.542 C247.892 +G01 X+16.556 Y-27.376 C244.954 +G01 X+16.317 Y-27.256 B10.399 C243.153 +G01 X+16.077 Y-27.136 Z-1.243 B10.405 C241.352 +G01 X+15.821 Y-26.987 B10.404 C239.097 +G01 X+15.461 Y-26.757 Z-1.242 B10.402 C236.098 +G01 X+15.119 Y-26.514 C233.143 +G01 X+14.79 Y-26.254 C230.193 +G01 X+14.475 Y-25.978 C227.243 +G01 X+14.175 Y-25.685 C224.293 +G01 X+13.968 Y-25.462 B10.399 C222.132 +G01 X+13.913 Y-25.392 Z-1.241 B10.391 C221.521 +G01 X+13.872 Y-25.313 Z-1.237 B10.363 C220.918 +G01 X+13.846 Y-25.228 Z-1.23 B10.318 C220.322 +G01 X+13.764 Y-24.85 Z-1.199 B10.092 C217.861 +G01 X+13.744 Y-24.781 Z-1.194 B10.058 C217.346 +G01 X+13.714 Y-24.716 Z-1.191 B10.038 C216.862 +G01 X+13.675 Y-24.655 B10.032 C216.335 +G01 X+13.604 Y-24.561 B10.034 C215.474 +G01 X+13.377 Y-24.226 C212.525 +G01 X+13.199 Y-23.929 B10.033 C209.978 +G01 X+13.169 Y-23.879 B10.034 C209.577 +G01 X+12.978 Y-23.522 C206.629 +G01 X+12.806 Y-23.156 C203.681 +G01 X+12.653 Y-22.782 C200.733 +G01 X+12.52 Y-22.4 C197.788 +G01 X+12.406 Y-22.011 C194.834 +G01 X+12.313 Y-21.618 C191.881 +G01 X+12.239 Y-21.22 C188.927 +G01 X+12.187 Y-20.819 C185.973 +G01 X+12.158 Y-20.45 B10.033 C183.288 +G01 X+12.155 Y-20.415 B10.034 C183.02 +G01 X+12.144 Y-20.011 C180.066 +G01 X+12.154 Y-19.607 C177.113 +G01 X+12.185 Y-19.203 B10.035 C174.159 +G01 X+12.236 Y-18.802 C171.205 +G01 X+12.308 Y-18.404 C168.252 +G01 X+12.4 Y-18.01 C165.298 +G01 X+12.513 Y-17.621 C162.344 +G01 X+12.645 Y-17.239 C159.391 +G01 X+12.797 Y-16.864 C156.437 +G01 X+12.976 Y-16.483 B10.034 C153.367 +G01 X+13.158 Y-16.14 B10.035 C150.533 +G01 X+13.365 Y-15.793 C147.585 +G01 X+13.591 Y-15.457 C144.637 +G01 X+13.833 Y-15.133 C141.688 +G01 X+14.092 Y-14.822 C138.74 +G01 X+14.366 Y-14.525 C135.792 +G01 X+14.656 Y-14.242 C132.844 +G01 X+14.959 Y-13.975 B10.034 C129.896 +G01 X+15.276 Y-13.723 C126.948 +G01 X+15.605 Y-13.488 C123.999 +G01 X+15.9 Y-13.3 B10.033 C121.43 +G01 X+15.946 Y-13.271 B10.034 C121.051 +G01 X+16.298 Y-13.071 C118.103 +G01 X+16.66 Y-12.89 C115.155 +G01 X+17.03 Y-12.727 C112.207 +G01 X+17.409 Y-12.584 C109.256 +G01 X+17.794 Y-12.46 C106.311 +G01 X+18.185 Y-12.357 C103.358 +G01 X+18.581 Y-12.273 C100.404 +G01 X+18.98 Y-12.21 C97.45 +G01 X+19.351 Y-12.172 B10.033 C94.739 +G01 X+19.383 Y-12.168 B10.034 C94.497 +G01 X+19.748 Y-12.149 B10.033 C91.836 +G01 X+19.787 Y-12.147 B10.034 C91.543 +G01 X+20.191 Y-12.146 C88.589 +G01 X+20.595 Y-12.167 C85.636 +G01 X+20.998 Y-12.208 B10.035 C82.682 +G01 X+21.397 Y-12.269 C79.728 +G01 X+21.794 Y-12.352 C76.775 +G01 X+22.185 Y-12.454 C73.821 +G01 X+22.57 Y-12.576 C70.867 +G01 X+22.949 Y-12.719 C67.914 +G01 X+23.338 Y-12.889 B10.034 C64.818 +G01 X+23.694 Y-13.067 C61.915 +G01 X+24.035 Y-13.259 B10.035 C59.059 +G01 X+24.376 Y-13.476 C56.109 +G01 X+24.706 Y-13.71 C53.163 +G01 X+25.024 Y-13.96 C50.214 +G01 X+25.328 Y-14.227 C47.266 +G01 X+25.618 Y-14.509 C44.318 +G01 X+25.893 Y-14.805 C41.37 +G01 X+26.153 Y-15.116 B10.034 C38.422 +G01 X+26.396 Y-15.439 C35.474 +G01 X+26.623 Y-15.774 C32.526 +G01 X+26.801 Y-16.071 B10.033 C29.978 +G01 X+26.831 Y-16.121 B10.034 C29.577 +G01 X+27.022 Y-16.478 C26.629 +G01 X+27.194 Y-16.844 C23.681 +G01 X+27.347 Y-17.218 C20.733 +G01 X+27.48 Y-17.6 C17.788 +G01 X+27.594 Y-17.988 C14.834 +G01 X+27.688 Y-18.382 C11.881 +G01 X+27.761 Y-18.78 C8.927 +G01 X+27.813 Y-19.181 C5.973 +G01 X+27.842 Y-19.549 B10.033 C3.288 +G01 X+27.845 Y-19.584 B10.034 C3.02 +G01 X+27.856 Y-19.989 C0.066 +G01 X+27.846 Y-20.393 C357.113 +G01 X+27.815 Y-20.797 B10.035 C354.159 +G01 X+27.764 Y-21.198 C351.205 +G01 X+27.692 Y-21.596 C348.252 +G01 X+27.6 Y-21.99 C345.298 +G01 X+27.487 Y-22.378 C342.344 +G01 X+27.355 Y-22.761 C339.391 +G01 X+27.203 Y-23.136 C336.437 +G01 X+27.024 Y-23.517 B10.034 C333.367 +G01 X+26.842 Y-23.86 B10.035 C330.533 +G01 X+26.635 Y-24.207 C327.585 +G01 X+26.409 Y-24.543 C324.637 +G01 X+26.167 Y-24.867 C321.688 +G01 X+25.908 Y-25.178 C318.74 +G01 X+25.634 Y-25.475 C315.792 +G01 X+25.344 Y-25.758 C312.844 +G01 X+25.041 Y-26.025 B10.034 C309.896 +G01 X+24.724 Y-26.277 C306.948 +G01 X+24.395 Y-26.512 C303.999 +G01 X+24.1 Y-26.7 B10.033 C301.43 +G01 X+24.054 Y-26.729 B10.034 C301.051 +G01 X+23.702 Y-26.929 C298.103 +G01 X+23.34 Y-27.11 C295.155 +G01 X+22.97 Y-27.273 C292.207 +G01 X+22.591 Y-27.416 C289.256 +G01 X+22.206 Y-27.54 C286.311 +G01 X+21.815 Y-27.643 C283.358 +G01 X+21.419 Y-27.727 C280.404 +G01 X+21.02 Y-27.789 C277.45 +G01 X+20.649 Y-27.828 B10.033 C274.739 +G01 X+20.617 Y-27.832 B10.034 C274.497 +G01 X+20.252 Y-27.851 B10.033 C271.836 +G01 X+20.213 Y-27.853 B10.034 C271.543 +G01 X+19.809 Y-27.854 C268.589 +G01 X+19.405 Y-27.833 C265.636 +G01 X+19.002 Y-27.792 B10.035 C262.682 +G01 X+18.603 Y-27.731 C259.728 +G01 X+18.206 Y-27.648 C256.775 +G01 X+17.815 Y-27.546 C253.821 +G01 X+17.43 Y-27.423 C250.867 +G01 X+17.051 Y-27.281 C247.914 +G01 X+16.682 Y-27.121 C244.976 +G01 X+16.451 Y-27.005 B10.031 C243.164 +G01 X+16.22 Y-26.89 Z-1.192 B10.037 C241.352 +G01 X+15.959 Y-26.738 Z-1.191 B10.036 C239.014 +G01 X+15.624 Y-26.524 B10.035 C236.11 +G01 X+15.294 Y-26.29 C233.163 +G01 X+14.976 Y-26.039 C230.214 +G01 X+14.672 Y-25.773 B10.034 C227.266 +G01 X+14.382 Y-25.491 C224.318 +G01 X+14.178 Y-25.271 B10.032 C222.144 +G01 X+14.124 Y-25.201 Z-1.19 B10.023 C221.481 +G01 X+14.082 Y-25.122 Z-1.186 B9.996 C220.873 +G01 X+14.056 Y-25.037 Z-1.18 B9.951 C220.243 +G01 X+13.974 Y-24.656 Z-1.149 B9.724 C217.684 +G01 X+13.953 Y-24.587 Z-1.145 B9.691 C217.167 +G01 X+13.923 Y-24.522 Z-1.142 B9.67 C216.656 +G01 X+13.884 Y-24.461 Z-1.141 B9.665 C216.1 +G01 X+13.838 Y-24.4 Z-1.142 B9.667 C215.511 +G01 X+13.62 Y-24.077 C212.559 +G01 X+13.419 Y-23.743 C209.609 +G01 X+13.235 Y-23.399 C206.662 +G01 X+13.069 Y-23.047 C203.715 +G01 X+12.921 Y-22.686 C200.769 +G01 X+12.792 Y-22.318 C197.823 +G01 X+12.682 Y-21.944 C194.878 +G01 X+12.592 Y-21.564 C191.927 +G01 X+12.521 Y-21.181 C188.975 +G01 X+12.47 Y-20.794 C186.023 +G01 X+12.439 Y-20.406 C183.071 +G01 X+12.429 Y-20.016 C180.119 +G01 X+12.438 Y-19.626 C177.168 +G01 X+12.467 Y-19.237 C174.216 +G01 X+12.516 Y-18.851 C171.264 +G01 X+12.585 Y-18.467 C168.312 +G01 X+12.674 Y-18.087 C165.36 +G01 X+12.782 Y-17.713 C162.408 +G01 X+12.91 Y-17.344 C159.457 +G01 X+13.056 Y-16.983 C156.505 +G01 X+13.22 Y-16.629 C153.553 +G01 X+13.403 Y-16.285 C150.601 +G01 X+13.603 Y-15.95 C147.649 +G01 X+13.82 Y-15.626 C144.698 +G01 X+14.053 Y-15.314 C141.746 +G01 X+14.302 Y-15.014 C138.794 +G01 X+14.566 Y-14.727 C135.842 +G01 X+14.845 Y-14.454 C132.89 +G01 X+15.137 Y-14.196 C129.939 +G01 X+15.443 Y-13.954 C126.987 +G01 X+15.76 Y-13.727 C124.035 +G01 X+16.088 Y-13.517 C121.083 +G01 X+16.427 Y-13.324 C118.135 +G01 X+16.776 Y-13.149 C115.189 +G01 X+17.133 Y-12.992 C112.242 +G01 X+17.497 Y-12.854 C109.296 +G01 X+17.868 Y-12.735 C106.352 +G01 X+18.245 Y-12.635 C103.402 +G01 X+18.627 Y-12.554 C100.451 +G01 X+19.012 Y-12.493 C97.499 +G01 X+19.4 Y-12.452 C94.547 +G01 X+19.789 Y-12.431 C91.595 +G01 X+20.179 C88.643 +G01 X+20.568 Y-12.45 C85.692 +G01 X+20.956 Y-12.489 C82.74 +G01 X+21.342 Y-12.548 C79.788 +G01 X+21.723 Y-12.627 C76.836 +G01 X+22.101 Y-12.726 C73.884 +G01 X+22.472 Y-12.844 C70.933 +G01 X+22.837 Y-12.98 C67.981 +G01 X+23.195 Y-13.136 C65.029 +G01 X+23.544 Y-13.309 C62.077 +G01 X+23.884 Y-13.501 C59.125 +G01 X+24.213 Y-13.709 C56.174 +G01 X+24.532 Y-13.934 C53.222 +G01 X+24.838 Y-14.176 C50.27 +G01 X+25.131 Y-14.432 C47.318 +G01 X+25.411 Y-14.704 C44.366 +G01 X+25.676 Y-14.99 C41.414 +G01 X+25.927 Y-15.288 C38.463 +G01 X+26.162 Y-15.6 C35.511 +G01 X+26.38 Y-15.923 C32.559 +G01 X+26.581 Y-16.257 C29.609 +G01 X+26.765 Y-16.6 C26.662 +G01 X+26.931 Y-16.953 C23.715 +G01 X+27.079 Y-17.314 C20.769 +G01 X+27.208 Y-17.682 C17.823 +G01 X+27.318 Y-18.056 C14.878 +G01 X+27.408 Y-18.435 C11.927 +G01 X+27.479 Y-18.819 C8.975 +G01 X+27.53 Y-19.205 C6.023 +G01 X+27.561 Y-19.594 C3.071 +G01 X+27.571 Y-19.984 C0.119 +G01 X+27.562 Y-20.374 C357.168 +G01 X+27.533 Y-20.762 C354.216 +G01 X+27.484 Y-21.149 C351.264 +G01 X+27.415 Y-21.533 C348.312 +G01 X+27.326 Y-21.913 C345.36 +G01 X+27.218 Y-22.287 C342.408 +G01 X+27.09 Y-22.656 C339.457 +G01 X+26.944 Y-23.017 C336.505 +G01 X+26.78 Y-23.371 C333.553 +G01 X+26.597 Y-23.715 C330.601 +G01 X+26.397 Y-24.05 C327.649 +G01 X+26.18 Y-24.374 C324.698 +G01 X+25.947 Y-24.686 C321.746 +G01 X+25.698 Y-24.986 C318.794 +G01 X+25.434 Y-25.273 C315.842 +G01 X+25.155 Y-25.546 C312.89 +G01 X+24.863 Y-25.804 C309.939 +G01 X+24.557 Y-26.046 C306.987 +G01 X+24.24 Y-26.273 C304.035 +G01 X+23.912 Y-26.483 C301.083 +G01 X+23.573 Y-26.675 C298.135 +G01 X+23.224 Y-26.851 C295.189 +G01 X+22.867 Y-27.007 C292.242 +G01 X+22.503 Y-27.146 C289.296 +G01 X+22.132 Y-27.265 C286.352 +G01 X+21.755 Y-27.365 C283.402 +G01 X+21.373 Y-27.446 C280.451 +G01 X+20.988 Y-27.507 C277.499 +G01 X+20.6 Y-27.547 C274.547 +G01 X+20.211 Y-27.568 C271.595 +G01 X+19.821 Y-27.569 C268.643 +G01 X+19.432 Y-27.55 C265.692 +G01 X+19.044 Y-27.511 C262.74 +G01 X+18.658 Y-27.452 C259.788 +G01 X+18.277 Y-27.373 C256.836 +G01 X+17.899 Y-27.274 C253.884 +G01 X+17.528 Y-27.156 C250.933 +G01 X+17.163 Y-27.02 C247.981 +G01 X+16.807 Y-26.865 C245.047 +G01 X+16.577 Y-26.75 Z-1.141 B9.664 C243.199 +G01 X+16.347 Y-26.635 Z-1.142 B9.67 C241.352 +G01 X+16.124 Y-26.506 B9.669 C239.202 +G01 X+15.788 Y-26.292 B9.668 C236.183 +G01 X+15.469 Y-26.066 B9.667 C233.223 +G01 X+15.162 Y-25.824 C230.27 +G01 X+14.869 Y-25.567 C227.318 +G01 X+14.589 Y-25.296 C224.366 +G01 X+14.389 Y-25.081 Z-1.141 B9.665 C222.156 +G01 X+14.334 Y-25.01 Z-1.14 B9.656 C221.469 +G01 X+14.293 Y-24.931 Z-1.137 B9.629 C220.828 +G01 X+14.267 Y-24.846 Z-1.131 B9.584 C220.197 +G01 X+14.183 Y-24.463 Z-1.101 B9.362 C217.486 +G01 X+14.163 Y-24.394 Z-1.097 B9.328 C216.963 +G01 X+14.133 Y-24.328 Z-1.095 B9.308 C216.392 +G01 X+14.094 Y-24.267 Z-1.094 B9.304 C215.835 +G01 X+14.048 Y-24.202 B9.303 C215.223 +G01 X+13.862 Y-23.929 B9.304 C212.616 +G01 X+13.668 Y-23.607 C209.666 +G01 X+13.491 Y-23.277 C206.716 +G01 X+13.331 Y-22.937 C203.766 +G01 X+13.189 Y-22.59 C200.816 +G01 X+13.064 Y-22.236 C197.866 +G01 X+12.958 Y-21.876 C194.916 +G01 X+12.871 Y-21.511 C191.967 +G01 X+12.803 Y-21.142 C189.01 +G01 X+12.753 Y-20.77 C186.054 +G01 X+12.723 Y-20.396 C183.097 +G01 X+12.713 Y-20.021 C180.141 +G01 X+12.722 Y-19.64 C177.146 +G01 X+12.749 Y-19.271 C174.24 +G01 X+12.796 Y-18.899 C171.291 +G01 X+12.862 Y-18.53 C168.341 +G01 X+12.948 Y-18.164 C165.391 +G01 X+13.051 Y-17.804 B9.305 C162.441 +G01 X+13.174 Y-17.449 C159.491 +G01 X+13.314 Y-17.101 C156.541 +G01 X+13.472 Y-16.761 C153.591 +G01 X+13.648 Y-16.429 C150.641 +G01 X+13.84 Y-16.107 C147.691 +G01 X+14.049 Y-15.795 C144.741 +G01 X+14.273 Y-15.494 C141.791 +G01 X+14.512 Y-15.205 C138.841 +G01 X+14.767 Y-14.929 C135.891 +G01 X+15.035 Y-14.666 C132.941 +G01 X+15.316 Y-14.418 C129.991 +G01 X+15.609 Y-14.184 B9.304 C127.041 +G01 X+15.915 Y-13.965 C124.091 +G01 X+16.231 Y-13.763 C121.141 +G01 X+16.557 Y-13.577 C118.191 +G01 X+16.892 Y-13.409 C115.241 +G01 X+17.235 Y-13.257 C112.291 +G01 X+17.586 Y-13.124 C109.341 +G01 X+17.943 Y-13.009 C106.391 +G01 X+18.306 Y-12.912 C103.445 +G01 X+18.673 Y-12.834 C100.488 +G01 X+19.044 Y-12.776 C97.532 +G01 X+19.417 Y-12.736 C94.576 +G01 X+19.791 Y-12.716 C91.619 +G01 X+20.167 Y-12.714 C88.666 +G01 X+20.542 Y-12.733 C85.715 +G01 X+20.915 Y-12.77 C82.766 +G01 X+21.286 Y-12.827 C79.815 +G01 X+21.653 Y-12.903 C76.866 +G01 X+22.017 Y-12.997 C73.916 +G01 X+22.374 Y-13.11 B9.305 C70.966 +G01 X+22.726 Y-13.242 C68.016 +G01 X+23.07 Y-13.391 C65.066 +G01 X+23.406 Y-13.558 C62.116 +G01 X+23.734 Y-13.742 C59.166 +G01 X+24.051 Y-13.942 C56.216 +G01 X+24.357 Y-14.159 C53.266 +G01 X+24.652 Y-14.391 C50.316 +G01 X+24.935 Y-14.638 C47.366 +G01 X+25.204 Y-14.899 C44.416 +G01 X+25.46 Y-15.173 C41.466 +G01 X+25.701 Y-15.461 C38.516 +G01 X+25.927 Y-15.76 B9.304 C35.566 +G01 X+26.138 Y-16.071 C32.616 +G01 X+26.332 Y-16.392 C29.666 +G01 X+26.509 Y-16.723 C26.716 +G01 X+26.669 Y-17.063 C23.766 +G01 X+26.811 Y-17.41 C20.816 +G01 X+26.936 Y-17.764 C17.866 +G01 X+27.042 Y-18.124 C14.916 +G01 X+27.129 Y-18.489 C11.967 +G01 X+27.197 Y-18.858 C9.01 +G01 X+27.247 Y-19.23 C6.054 +G01 X+27.277 Y-19.604 C3.097 +G01 X+27.287 Y-19.979 C0.141 +G01 X+27.278 Y-20.36 C357.146 +G01 X+27.251 Y-20.728 C354.24 +G01 X+27.204 Y-21.101 C351.291 +G01 X+27.138 Y-21.47 C348.341 +G01 X+27.052 Y-21.836 C345.391 +G01 X+26.949 Y-22.196 B9.305 C342.441 +G01 X+26.826 Y-22.551 C339.491 +G01 X+26.686 Y-22.899 C336.541 +G01 X+26.528 Y-23.239 C333.591 +G01 X+26.352 Y-23.571 C330.641 +G01 X+26.16 Y-23.893 C327.691 +G01 X+25.951 Y-24.205 C324.741 +G01 X+25.727 Y-24.506 C321.791 +G01 X+25.488 Y-24.795 C318.841 +G01 X+25.233 Y-25.071 C315.891 +G01 X+24.965 Y-25.334 C312.941 +G01 X+24.684 Y-25.582 C309.991 +G01 X+24.391 Y-25.816 B9.304 C307.041 +G01 X+24.085 Y-26.034 C304.091 +G01 X+23.769 Y-26.237 C301.141 +G01 X+23.443 Y-26.422 C298.191 +G01 X+23.108 Y-26.591 C295.241 +G01 X+22.765 Y-26.742 C292.291 +G01 X+22.414 Y-26.876 C289.341 +G01 X+22.057 Y-26.991 C286.391 +G01 X+21.694 Y-27.088 C283.445 +G01 X+21.327 Y-27.165 C280.488 +G01 X+20.956 Y-27.224 C277.532 +G01 X+20.583 Y-27.264 C274.576 +G01 X+20.209 Y-27.284 C271.619 +G01 X+19.833 Y-27.285 C268.666 +G01 X+19.458 Y-27.267 C265.715 +G01 X+19.085 Y-27.23 C262.766 +G01 X+18.714 Y-27.173 C259.815 +G01 X+18.347 Y-27.097 C256.866 +G01 X+17.983 Y-27.003 C253.916 +G01 X+17.626 Y-26.89 B9.305 C250.966 +G01 X+17.274 Y-26.758 C248.016 +G01 X+16.932 Y-26.61 B9.304 C245.087 +G01 X+16.707 Y-26.498 B9.301 C243.219 +G01 X+16.482 Y-26.385 B9.308 C241.352 +G01 X+16.275 Y-26.265 B9.307 C239.252 +G01 X+15.95 Y-26.059 B9.305 C236.226 +G01 X+15.643 Y-25.841 C233.267 +G01 X+15.348 Y-25.609 C230.316 +G01 X+15.065 Y-25.362 C227.366 +G01 X+14.796 Y-25.101 B9.304 C224.416 +G01 X+14.599 Y-24.89 B9.302 C222.137 +G01 X+14.545 Y-24.82 Z-1.093 B9.294 C221.449 +G01 X+14.503 Y-24.74 Z-1.089 B9.267 C220.748 +G01 X+14.477 Y-24.655 Z-1.084 B9.222 C220.108 +G01 X+14.393 Y-24.269 Z-1.055 B8.995 C217.255 +G01 X+14.374 Y-24.202 Z-1.051 B8.962 C216.746 +G01 X+14.345 Y-24.138 Z-1.049 B8.944 C216.158 +G01 X+14.307 Y-24.078 Z-1.048 B8.938 C215.594 +G01 X+14.105 Y-23.78 C212.646 +G01 X+13.918 Y-23.471 C209.698 +G01 X+13.747 Y-23.154 C206.75 +G01 X+13.619 Y-22.882 B8.936 C204.269 +G01 X+13.593 Y-22.828 B8.938 C203.801 +G01 X+13.456 Y-22.494 B8.937 C200.853 +G01 X+13.336 Y-22.154 C197.905 +G01 X+13.234 Y-21.808 C194.957 +G01 X+13.15 Y-21.456 C191.997 +G01 X+13.084 Y-21.103 C189.061 +G01 X+13.037 Y-20.745 C186.107 +G01 X+13.008 Y-20.386 C183.152 +G01 X+12.997 Y-20.025 B8.938 C180.198 +G01 X+13.005 Y-19.665 C177.243 +G01 X+13.031 Y-19.305 C174.289 +G01 X+13.076 Y-18.947 C171.334 +G01 X+13.14 Y-18.592 C168.38 +G01 X+13.221 Y-18.241 C165.426 +G01 X+13.321 Y-17.894 C162.471 +G01 X+13.438 Y-17.553 C159.517 +G01 X+13.573 Y-17.219 C156.562 +G01 X+13.733 Y-16.876 B8.937 C153.464 +G01 X+13.899 Y-16.562 B8.938 C150.561 +G01 X+14.077 Y-16.263 C147.705 +G01 X+14.278 Y-15.963 C144.755 +G01 X+14.493 Y-15.674 C141.809 +G01 X+14.723 Y-15.396 C138.861 +G01 X+14.967 Y-15.13 C135.913 +G01 X+15.224 Y-14.878 C132.965 +G01 X+15.494 Y-14.639 C130.016 +G01 X+15.776 Y-14.414 C127.068 +G01 X+16.069 Y-14.204 C124.12 +G01 X+16.373 Y-14.009 C121.172 +G01 X+16.686 Y-13.83 C118.224 +G01 X+17.008 Y-13.668 C115.276 +G01 X+17.338 Y-13.522 C112.327 +G01 X+17.675 Y-13.394 B8.937 C109.379 +G01 X+18.018 Y-13.283 C106.431 +G01 X+18.367 Y-13.19 C103.483 +G01 X+18.719 Y-13.115 C100.538 +G01 X+19.076 Y-13.058 C97.584 +G01 X+19.434 Y-13.02 C94.63 +G01 X+19.794 Y-13 B8.938 C91.675 +G01 X+20.155 Y-12.998 C88.721 +G01 X+20.515 Y-13.016 C85.766 +G01 X+20.874 Y-13.052 C82.812 +G01 X+21.23 Y-13.106 C79.857 +G01 X+21.584 Y-13.178 C76.903 +G01 X+21.933 Y-13.269 C73.948 +G01 X+22.277 Y-13.377 C70.994 +G01 X+22.615 Y-13.503 C68.04 +G01 X+22.964 Y-13.656 B8.937 C64.916 +G01 X+23.282 Y-13.814 C62.013 +G01 X+23.591 Y-13.988 B8.938 C59.11 +G01 X+23.888 Y-14.175 C56.231 +G01 X+24.183 Y-14.383 C53.283 +G01 X+24.467 Y-14.606 C50.335 +G01 X+24.738 Y-14.843 C47.387 +G01 X+24.997 Y-15.094 C44.439 +G01 X+25.243 Y-15.358 C41.491 +G01 X+25.475 Y-15.634 C38.542 +G01 X+25.693 Y-15.921 C35.594 +G01 X+25.895 Y-16.22 C32.646 +G01 X+26.082 Y-16.528 C29.698 +G01 X+26.253 Y-16.846 C26.75 +G01 X+26.381 Y-17.117 B8.936 C24.269 +G01 X+26.407 Y-17.172 B8.938 C23.801 +G01 X+26.544 Y-17.506 B8.937 C20.853 +G01 X+26.664 Y-17.846 C17.905 +G01 X+26.766 Y-18.192 C14.957 +G01 X+26.85 Y-18.544 C11.997 +G01 X+26.916 Y-18.897 C9.061 +G01 X+26.963 Y-19.254 C6.107 +G01 X+26.992 Y-19.614 C3.152 +G01 X+27.003 Y-19.974 B8.938 C0.198 +G01 X+26.995 Y-20.335 C357.243 +G01 X+26.969 Y-20.695 C354.289 +G01 X+26.924 Y-21.052 C351.334 +G01 X+26.86 Y-21.407 C348.38 +G01 X+26.779 Y-21.759 C345.426 +G01 X+26.679 Y-22.105 C342.471 +G01 X+26.562 Y-22.446 C339.517 +G01 X+26.427 Y-22.781 C336.562 +G01 X+26.267 Y-23.124 B8.937 C333.464 +G01 X+26.101 Y-23.437 B8.938 C330.561 +G01 X+25.923 Y-23.737 C327.705 +G01 X+25.722 Y-24.037 C324.755 +G01 X+25.507 Y-24.326 C321.809 +G01 X+25.277 Y-24.604 C318.861 +G01 X+25.033 Y-24.869 C315.913 +G01 X+24.776 Y-25.122 C312.965 +G01 X+24.506 Y-25.361 C310.016 +G01 X+24.224 Y-25.586 C307.068 +G01 X+23.931 Y-25.796 C304.12 +G01 X+23.627 Y-25.991 C301.172 +G01 X+23.314 Y-26.169 C298.224 +G01 X+22.992 Y-26.332 C295.275 +G01 X+22.662 Y-26.477 C292.327 +G01 X+22.325 Y-26.606 B8.937 C289.379 +G01 X+21.982 Y-26.717 C286.431 +G01 X+21.633 Y-26.81 C283.483 +G01 X+21.281 Y-26.885 C280.538 +G01 X+20.924 Y-26.942 C277.584 +G01 X+20.566 Y-26.98 C274.63 +G01 X+20.206 Y-27 B8.938 C271.675 +G01 X+19.845 Y-27.001 C268.721 +G01 X+19.485 Y-26.984 C265.766 +G01 X+19.126 Y-26.948 C262.812 +G01 X+18.77 Y-26.894 C259.857 +G01 X+18.416 Y-26.822 C256.903 +G01 X+18.067 Y-26.731 C253.948 +G01 X+17.723 Y-26.623 C250.994 +G01 X+17.385 Y-26.497 C248.039 +G01 X+17.057 Y-26.355 C245.112 +G01 X+16.849 Y-26.251 B8.934 C243.232 +G01 X+16.641 Y-26.148 Z-1.049 B8.94 C241.352 +G01 X+16.616 Y-26.135 B8.941 +G01 X+16.487 Y-26.06 B8.939 C239.901 +G01 X+16.409 Y-26.013 Z-1.048 B8.94 C239.112 +G01 X+16.113 Y-25.826 B8.938 C236.243 +G01 X+15.817 Y-25.617 C233.284 +G01 X+15.533 Y-25.394 C230.335 +G01 X+15.262 Y-25.157 C227.387 +G01 X+15.003 Y-24.906 C224.439 +G01 X+14.81 Y-24.699 B8.936 C222.138 +G01 X+14.755 Y-24.629 Z-1.047 B8.928 C221.404 +G01 X+14.714 Y-24.55 Z-1.044 B8.901 C220.696 +G01 X+14.687 Y-24.464 Z-1.038 B8.856 C220.006 +G01 X+14.602 Y-24.071 Z-1.011 B8.626 C216.992 +G01 X+14.573 Y-23.98 Z-1.006 B8.586 C216.243 +G01 X+14.527 Y-23.896 Z-1.004 B8.571 C215.422 +G01 X+14.347 Y-23.631 B8.572 C212.682 +G01 X+14.168 Y-23.335 C209.73 +G01 X+14.004 Y-23.03 C206.782 +G01 X+13.856 Y-22.718 B8.571 C203.835 +G01 X+13.724 Y-22.398 C200.889 +G01 X+13.604 Y-22.054 B8.57 C197.804 +G01 X+13.511 Y-21.74 B8.571 C194.997 +G01 X+13.43 Y-21.403 C192.05 +G01 X+13.366 Y-21.062 C189.094 +G01 X+13.32 Y-20.72 C186.158 +G01 X+13.292 Y-20.376 C183.205 +G01 X+13.281 Y-20.03 C180.253 +G01 X+13.289 Y-19.684 C177.301 +G01 X+13.314 Y-19.339 C174.348 +G01 X+13.357 Y-18.996 B8.572 C171.396 +G01 X+13.417 Y-18.655 C168.443 +G01 X+13.495 Y-18.318 C165.491 +G01 X+13.591 Y-17.985 C162.539 +G01 X+13.703 Y-17.658 C159.586 +G01 X+13.832 Y-17.337 C156.634 +G01 X+13.977 Y-17.023 C153.682 +G01 X+14.138 Y-16.717 C150.729 +G01 X+14.315 Y-16.419 C147.777 +G01 X+14.507 Y-16.131 C144.824 +G01 X+14.713 Y-15.854 C141.872 +G01 X+14.934 Y-15.587 C138.92 +G01 X+15.168 Y-15.332 C135.968 +G01 X+15.414 Y-15.09 C133.015 +G01 X+15.673 Y-14.86 C130.063 +G01 X+15.944 Y-14.644 C127.11 +G01 X+16.225 Y-14.442 C124.158 +G01 X+16.516 Y-14.255 C121.206 +G01 X+16.816 Y-14.084 C118.255 +G01 X+17.125 Y-13.928 B8.571 C115.309 +G01 X+17.441 Y-13.788 C112.362 +G01 X+17.785 Y-13.658 B8.57 C109.255 +G01 X+18.094 Y-13.557 B8.571 C106.47 +G01 X+18.428 Y-13.468 C103.523 +G01 X+18.766 Y-13.396 C100.577 +G01 X+19.108 Y-13.341 C97.634 +G01 X+19.452 Y-13.304 C94.682 +G01 X+19.797 Y-13.284 C91.729 +G01 X+20.143 Y-13.283 C88.777 +G01 X+20.489 Y-13.299 C85.825 +G01 X+20.833 Y-13.333 B8.572 C82.872 +G01 X+21.175 Y-13.385 C79.92 +G01 X+21.514 Y-13.454 C76.967 +G01 X+21.849 Y-13.541 C74.015 +G01 X+22.179 Y-13.645 C71.063 +G01 X+22.503 Y-13.765 C68.11 +G01 X+22.821 Y-13.902 C65.158 +G01 X+23.131 Y-14.056 C62.206 +G01 X+23.433 Y-14.225 C59.253 +G01 X+23.726 Y-14.409 C56.301 +G01 X+24.009 Y-14.608 C53.348 +G01 X+24.281 Y-14.822 C50.396 +G01 X+24.542 Y-15.049 C47.444 +G01 X+24.791 Y-15.289 C44.491 +G01 X+25.027 Y-15.542 C41.539 +G01 X+25.25 Y-15.807 C38.587 +G01 X+25.459 Y-16.083 C35.634 +G01 X+25.653 Y-16.369 C32.682 +G01 X+25.832 Y-16.665 C29.73 +G01 X+25.996 Y-16.969 C26.782 +G01 X+26.144 Y-17.282 B8.571 C23.835 +G01 X+26.276 Y-17.602 C20.889 +G01 X+26.396 Y-17.946 B8.57 C17.804 +G01 X+26.489 Y-18.26 B8.571 C14.997 +G01 X+26.57 Y-18.596 C12.05 +G01 X+26.634 Y-18.938 C9.094 +G01 X+26.68 Y-19.279 C6.158 +G01 X+26.708 Y-19.624 C3.205 +G01 X+26.719 Y-19.97 C0.253 +G01 X+26.711 Y-20.316 C357.301 +G01 X+26.686 Y-20.661 C354.348 +G01 X+26.643 Y-21.004 B8.572 C351.396 +G01 X+26.583 Y-21.345 C348.443 +G01 X+26.505 Y-21.682 C345.491 +G01 X+26.409 Y-22.015 C342.539 +G01 X+26.297 Y-22.342 C339.586 +G01 X+26.168 Y-22.663 C336.634 +G01 X+26.023 Y-22.977 C333.682 +G01 X+25.862 Y-23.283 C330.729 +G01 X+25.685 Y-23.581 C327.777 +G01 X+25.493 Y-23.868 C324.824 +G01 X+25.287 Y-24.146 C321.872 +G01 X+25.066 Y-24.413 C318.92 +G01 X+24.832 Y-24.668 C315.968 +G01 X+24.586 Y-24.91 C313.015 +G01 X+24.327 Y-25.14 C310.063 +G01 X+24.056 Y-25.356 C307.11 +G01 X+23.775 Y-25.557 C304.158 +G01 X+23.484 Y-25.744 C301.206 +G01 X+23.184 Y-25.916 C298.255 +G01 X+22.875 Y-26.072 B8.571 C295.309 +G01 X+22.559 Y-26.212 C292.362 +G01 X+22.215 Y-26.342 B8.57 C289.255 +G01 X+21.906 Y-26.442 B8.571 C286.47 +G01 X+21.572 Y-26.532 C283.523 +G01 X+21.234 Y-26.604 C280.577 +G01 X+20.892 Y-26.659 C277.634 +G01 X+20.548 Y-26.696 C274.682 +G01 X+20.203 Y-26.715 C271.729 +G01 X+19.857 Y-26.717 C268.777 +G01 X+19.511 Y-26.701 C265.825 +G01 X+19.167 Y-26.667 B8.572 C262.872 +G01 X+18.825 Y-26.615 C259.92 +G01 X+18.486 Y-26.546 C256.967 +G01 X+18.151 Y-26.459 C254.015 +G01 X+17.821 Y-26.355 C251.063 +G01 X+17.497 Y-26.235 C248.11 +G01 X+17.182 Y-26.099 C245.189 +G01 X+16.967 Y-25.992 B8.568 C243.14 +G01 X+16.751 Y-25.885 Z-1.005 B8.576 C241.093 +G01 X+16.578 Y-25.784 B8.574 C239.374 +G01 X+16.276 Y-25.592 Z-1.004 B8.572 C236.317 +G01 X+15.991 Y-25.392 C233.35 +G01 X+15.719 Y-25.178 C230.396 +G01 X+15.458 Y-24.951 C227.444 +G01 X+15.209 Y-24.71 C224.491 +G01 X+15.021 Y-24.509 B8.57 C222.152 +G01 X+14.966 Y-24.438 Z-1.003 B8.562 C221.366 +G01 X+14.924 Y-24.358 Z-1 B8.535 C220.644 +G01 X+14.898 Y-24.273 Z-0.995 B8.49 C219.922 +G01 X+14.811 Y-23.872 Z-0.968 B8.261 C216.731 +G01 X+14.782 Y-23.781 Z-0.964 B8.222 C215.917 +G01 X+14.736 Y-23.697 Z-0.962 B8.207 C215.06 +G01 X+14.589 Y-23.482 B8.209 C212.755 +G01 X+14.417 Y-23.199 C209.805 +G01 X+14.26 Y-22.907 C206.854 +G01 X+14.118 Y-22.608 C203.904 +G01 X+13.991 Y-22.301 C200.954 +G01 X+13.881 Y-21.989 C198.004 +G01 X+13.787 Y-21.671 C195.053 +G01 X+13.709 Y-21.349 C192.103 +G01 X+13.648 Y-21.024 C189.153 +G01 X+13.603 Y-20.694 C186.191 +G01 X+13.576 Y-20.365 C183.251 +G01 X+13.566 Y-20.034 C180.293 +G01 X+13.573 Y-19.703 C177.335 +G01 X+13.596 Y-19.372 C174.385 +G01 X+13.637 Y-19.043 C171.434 +G01 X+13.695 Y-18.717 C168.484 +G01 X+13.769 Y-18.394 C165.534 +G01 X+13.86 Y-18.076 C162.584 +G01 X+13.967 Y-17.762 C159.633 +G01 X+14.091 Y-17.454 C156.683 +G01 X+14.23 Y-17.154 C153.733 +G01 X+14.384 Y-16.86 C150.783 +G01 X+14.553 Y-16.575 C147.832 +G01 X+14.736 Y-16.3 C144.882 +G01 X+14.934 Y-16.033 C141.932 +G01 X+15.145 Y-15.778 C138.981 +G01 X+15.368 Y-15.534 C136.031 +G01 X+15.604 Y-15.301 C133.081 +G01 X+15.852 Y-15.081 C130.13 +G01 X+16.111 Y-14.874 C127.18 +G01 X+16.38 Y-14.681 C124.23 +G01 X+16.659 Y-14.501 C121.28 +G01 X+16.946 Y-14.337 C118.329 +G01 X+17.242 Y-14.187 C115.379 +G01 X+17.545 Y-14.053 C112.429 +G01 X+17.854 Y-13.934 C109.479 +G01 X+18.169 Y-13.832 C106.528 +G01 X+18.489 Y-13.746 C103.578 +G01 X+18.813 Y-13.676 C100.628 +G01 X+19.14 Y-13.623 C97.678 +G01 X+19.47 Y-13.588 C94.73 +G01 X+19.8 Y-13.569 C91.772 +G01 X+20.132 Y-13.567 C88.814 +G01 X+20.463 Y-13.582 C85.86 +G01 X+20.794 Y-13.615 C82.895 +G01 X+21.12 Y-13.664 C79.959 +G01 X+21.445 Y-13.73 C77.009 +G01 X+21.766 Y-13.813 C74.059 +G01 X+22.082 Y-13.912 C71.109 +G01 X+22.392 Y-14.027 C68.158 +G01 X+22.697 Y-14.158 C65.208 +G01 X+22.994 Y-14.305 C62.258 +G01 X+23.283 Y-14.466 C59.307 +G01 X+23.564 Y-14.643 C56.357 +G01 X+23.835 Y-14.833 C53.407 +G01 X+24.096 Y-15.037 C50.457 +G01 X+24.346 Y-15.255 C47.506 +G01 X+24.584 Y-15.485 C44.556 +G01 X+24.81 Y-15.727 C41.606 +G01 X+25.024 Y-15.98 C38.655 +G01 X+25.224 Y-16.244 C35.705 +G01 X+25.411 Y-16.518 C32.755 +G01 X+25.583 Y-16.801 C29.805 +G01 X+25.74 Y-17.093 C26.854 +G01 X+25.882 Y-17.392 C23.904 +G01 X+26.009 Y-17.698 C20.954 +G01 X+26.119 Y-18.011 C18.004 +G01 X+26.213 Y-18.328 C15.053 +G01 X+26.291 Y-18.651 C12.103 +G01 X+26.352 Y-18.976 C9.153 +G01 X+26.397 Y-19.306 C6.191 +G01 X+26.424 Y-19.635 C3.251 +G01 X+26.434 Y-19.966 C0.293 +G01 X+26.427 Y-20.297 C357.335 +G01 X+26.404 Y-20.628 C354.385 +G01 X+26.363 Y-20.956 C351.434 +G01 X+26.305 Y-21.283 C348.484 +G01 X+26.231 Y-21.606 C345.534 +G01 X+26.14 Y-21.924 C342.584 +G01 X+26.033 Y-22.238 C339.633 +G01 X+25.909 Y-22.545 C336.683 +G01 X+25.771 Y-22.846 C333.733 +G01 X+25.616 Y-23.139 C330.783 +G01 X+25.447 Y-23.424 C327.832 +G01 X+25.264 Y-23.7 C324.882 +G01 X+25.066 Y-23.966 C321.932 +G01 X+24.855 Y-24.222 C318.981 +G01 X+24.632 Y-24.466 C316.031 +G01 X+24.396 Y-24.699 C313.081 +G01 X+24.148 Y-24.919 C310.13 +G01 X+23.889 Y-25.126 C307.18 +G01 X+23.62 Y-25.319 C304.23 +G01 X+23.341 Y-25.499 C301.28 +G01 X+23.054 Y-25.663 C298.329 +G01 X+22.758 Y-25.813 C295.379 +G01 X+22.455 Y-25.947 C292.429 +G01 X+22.146 Y-26.066 C289.479 +G01 X+21.831 Y-26.168 C286.528 +G01 X+21.511 Y-26.254 C283.578 +G01 X+21.187 Y-26.324 C280.628 +G01 X+20.86 Y-26.376 C277.678 +G01 X+20.53 Y-26.412 C274.73 +G01 X+20.2 Y-26.431 C271.772 +G01 X+19.868 Y-26.433 C268.814 +G01 X+19.537 Y-26.418 C265.86 +G01 X+19.206 Y-26.385 C262.895 +G01 X+18.88 Y-26.336 C259.959 +G01 X+18.555 Y-26.27 C257.009 +G01 X+18.234 Y-26.187 C254.058 +G01 X+17.918 Y-26.088 C251.109 +G01 X+17.608 Y-25.973 C248.158 +G01 X+17.307 Y-25.843 C245.243 +G01 X+17.096 Y-25.739 B8.206 C243.149 +G01 X+16.886 Y-25.634 Z-0.963 B8.213 C241.057 +G01 X+16.729 Y-25.543 B8.212 C239.441 +G01 X+16.438 Y-25.359 Z-0.962 B8.21 C236.376 +G01 X+16.165 Y-25.167 B8.209 C233.409 +G01 X+15.904 Y-24.962 C230.457 +G01 X+15.654 Y-24.745 C227.506 +G01 X+15.416 Y-24.515 C224.556 +G01 X+15.231 Y-24.318 B8.207 C222.145 +G01 X+15.176 Y-24.247 Z-0.961 B8.199 C221.356 +G01 X+15.135 Y-24.168 Z-0.958 B8.173 C220.565 +G01 X+15.108 Y-24.082 Z-0.953 B8.128 C219.834 +G01 X+15.02 Y-23.674 Z-0.928 B7.893 C216.39 +G01 X+14.99 Y-23.582 Z-0.923 B7.855 C215.547 +G01 X+14.944 Y-23.498 Z-0.922 B7.841 C214.624 +G01 X+14.831 Y-23.333 B7.844 C212.783 +G01 X+14.667 Y-23.062 C209.835 +G01 X+14.516 Y-22.783 C206.887 +G01 X+14.38 Y-22.497 C203.939 +G01 X+14.259 Y-22.205 B7.843 C200.99 +G01 X+14.153 Y-21.906 C198.042 +G01 X+14.063 Y-21.603 C195.094 +G01 X+13.988 Y-21.295 C192.146 +G01 X+13.929 Y-20.984 C189.198 +G01 X+13.887 Y-20.67 C186.249 +G01 X+13.86 Y-20.353 C183.288 +G01 X+13.85 Y-20.038 C180.352 +G01 X+13.856 Y-19.721 C177.397 +G01 X+13.879 Y-19.405 C174.441 +G01 X+13.918 Y-19.091 C171.485 +G01 X+13.972 Y-18.779 C168.53 +G01 X+14.043 Y-18.47 C165.574 +G01 X+14.13 Y-18.166 C162.619 +G01 X+14.232 Y-17.866 C159.663 +G01 X+14.35 Y-17.572 B7.844 C156.708 +G01 X+14.491 Y-17.267 B7.843 C153.57 +G01 X+14.636 Y-16.992 C150.667 +G01 X+14.795 Y-16.724 C147.764 +G01 X+14.966 Y-16.467 B7.844 C144.894 +G01 X+15.154 Y-16.213 C141.946 +G01 X+15.356 Y-15.969 C138.998 +G01 X+15.569 Y-15.735 C136.05 +G01 X+15.795 Y-15.512 C133.102 +G01 X+16.031 Y-15.302 C130.154 +G01 X+16.278 Y-15.104 C127.205 +G01 X+16.535 Y-14.919 C124.257 +G01 X+16.802 Y-14.747 C121.309 +G01 X+17.076 Y-14.589 C118.361 +G01 X+17.359 Y-14.446 C115.413 +G01 X+17.648 Y-14.317 C112.464 +G01 X+17.944 Y-14.204 B7.843 C109.516 +G01 X+18.245 Y-14.106 C106.568 +G01 X+18.551 Y-14.023 C103.62 +G01 X+18.86 Y-13.956 C100.672 +G01 X+19.173 Y-13.906 C97.723 +G01 X+19.488 Y-13.871 C94.775 +G01 X+19.804 Y-13.853 C91.83 +G01 X+20.12 Y-13.851 C88.874 +G01 X+20.437 Y-13.865 C85.919 +G01 X+20.752 Y-13.896 C82.964 +G01 X+21.065 Y-13.943 C80.008 +G01 X+21.376 Y-14.006 C77.052 +G01 X+21.682 Y-14.085 C74.097 +G01 X+21.985 Y-14.179 B7.844 C71.141 +G01 X+22.282 Y-14.289 C68.185 +G01 X+22.573 Y-14.414 C65.23 +G01 X+22.871 Y-14.562 B7.843 C62.118 +G01 X+23.143 Y-14.714 C59.216 +G01 X+23.407 Y-14.88 C56.313 +G01 X+23.662 Y-15.059 B7.844 C53.41 +G01 X+23.91 Y-15.253 C50.472 +G01 X+24.15 Y-15.461 C47.524 +G01 X+24.378 Y-15.681 C44.576 +G01 X+24.594 Y-15.912 C41.628 +G01 X+24.799 Y-16.154 C38.68 +G01 X+24.99 Y-16.406 C35.731 +G01 X+25.169 Y-16.667 C32.783 +G01 X+25.333 Y-16.938 C29.835 +G01 X+25.484 Y-17.216 C26.887 +G01 X+25.62 Y-17.502 C23.939 +G01 X+25.741 Y-17.795 B7.843 C20.99 +G01 X+25.847 Y-18.094 C18.042 +G01 X+25.937 Y-18.397 C15.094 +G01 X+26.012 Y-18.705 C12.146 +G01 X+26.071 Y-19.016 C9.198 +G01 X+26.113 Y-19.33 C6.249 +G01 X+26.14 Y-19.647 C3.288 +G01 X+26.15 Y-19.962 C0.352 +G01 X+26.144 Y-20.279 C357.397 +G01 X+26.121 Y-20.595 C354.441 +G01 X+26.082 Y-20.909 C351.485 +G01 X+26.028 Y-21.221 C348.53 +G01 X+25.957 Y-21.529 C345.574 +G01 X+25.87 Y-21.834 C342.619 +G01 X+25.768 Y-22.134 C339.663 +G01 X+25.65 Y-22.428 B7.844 C336.708 +G01 X+25.509 Y-22.733 B7.843 C333.57 +G01 X+25.364 Y-23.008 C330.667 +G01 X+25.205 Y-23.276 C327.764 +G01 X+25.034 Y-23.532 B7.844 C324.894 +G01 X+24.846 Y-23.787 C321.946 +G01 X+24.644 Y-24.031 C318.998 +G01 X+24.431 Y-24.265 C316.05 +G01 X+24.205 Y-24.487 C313.102 +G01 X+23.969 Y-24.698 C310.154 +G01 X+23.722 Y-24.896 C307.205 +G01 X+23.465 Y-25.081 C304.257 +G01 X+23.198 Y-25.253 C301.309 +G01 X+22.924 Y-25.41 C298.361 +G01 X+22.641 Y-25.554 C295.413 +G01 X+22.352 Y-25.682 C292.464 +G01 X+22.056 Y-25.796 B7.843 C289.516 +G01 X+21.755 Y-25.894 C286.568 +G01 X+21.449 Y-25.977 C283.62 +G01 X+21.14 Y-26.043 C280.672 +G01 X+20.827 Y-26.094 C277.723 +G01 X+20.512 Y-26.129 C274.775 +G01 X+20.196 Y-26.147 C271.83 +G01 X+19.88 Y-26.149 C268.874 +G01 X+19.563 Y-26.134 C265.919 +G01 X+19.248 Y-26.104 C262.964 +G01 X+18.935 Y-26.057 C260.008 +G01 X+18.624 Y-25.994 C257.052 +G01 X+18.318 Y-25.915 C254.097 +G01 X+18.015 Y-25.821 B7.844 C251.141 +G01 X+17.718 Y-25.711 C248.185 +G01 X+17.431 Y-25.588 B7.843 C245.276 +G01 X+17.226 Y-25.486 B7.84 C243.143 +G01 X+17.021 Y-25.384 Z-0.923 B7.848 C241.011 +G01 X+16.856 Y-25.287 Z-0.922 B7.846 C239.218 +G01 X+16.593 Y-25.12 B7.844 C236.313 +G01 X+16.338 Y-24.941 C233.41 +G01 X+16.09 Y-24.747 C230.472 +G01 X+15.85 Y-24.539 C227.524 +G01 X+15.622 Y-24.319 C224.576 +G01 X+15.442 Y-24.127 B7.842 C222.13 +G01 X+15.387 Y-24.056 Z-0.921 B7.834 C221.306 +G01 X+15.345 Y-23.977 Z-0.918 B7.808 C220.459 +G01 X+15.318 Y-23.891 Z-0.914 B7.763 C219.717 +G01 X+15.229 Y-23.475 Z-0.889 B7.527 C216.038 +G01 X+15.199 Y-23.384 Z-0.885 B7.488 C215.176 +G01 X+15.153 Y-23.299 Z-0.884 B7.476 C214.193 +G01 X+15.073 Y-23.183 B7.478 C212.823 +G01 X+14.916 Y-22.925 C209.87 +G01 X+14.772 Y-22.659 C206.917 +G01 X+14.642 Y-22.387 C203.971 +G01 X+14.526 Y-22.107 C201.021 +G01 X+14.425 Y-21.823 C198.079 +G01 X+14.339 Y-21.534 C195.133 +G01 X+14.263 Y-21.219 B7.477 C191.997 +G01 X+14.211 Y-20.944 B7.478 C189.24 +G01 X+14.17 Y-20.644 C186.294 +G01 X+14.145 Y-20.343 C183.348 +G01 X+14.135 Y-20.039 C180.384 +G01 X+14.14 Y-19.739 C177.456 +G01 X+14.162 Y-19.438 C174.503 +G01 X+14.198 Y-19.138 C171.55 +G01 X+14.25 Y-18.841 C168.596 +G01 X+14.318 Y-18.546 C165.643 +G01 X+14.4 Y-18.256 C162.69 +G01 X+14.497 Y-17.97 C159.737 +G01 X+14.609 Y-17.689 C156.784 +G01 X+14.735 Y-17.415 C153.831 +G01 X+14.875 Y-17.147 C150.878 +G01 X+15.029 Y-16.887 C147.925 +G01 X+15.196 Y-16.635 C144.971 +G01 X+15.375 Y-16.392 C142.018 +G01 X+15.567 Y-16.159 C139.065 +G01 X+15.771 Y-15.936 C136.112 +G01 X+15.985 Y-15.724 C133.159 +G01 X+16.211 Y-15.523 C130.205 +G01 X+16.446 Y-15.334 C127.252 +G01 X+16.71 Y-15.145 B7.477 C124.084 +G01 X+16.945 Y-14.993 B7.478 C121.346 +G01 X+17.207 Y-14.842 C118.393 +G01 X+17.476 Y-14.705 C115.444 +G01 X+17.752 Y-14.582 C112.498 +G01 X+18.034 Y-14.474 C109.552 +G01 X+18.321 Y-14.38 C106.606 +G01 X+18.612 Y-14.301 C103.66 +G01 X+18.927 Y-14.234 B7.477 C100.546 +G01 X+19.206 Y-14.189 B7.478 C97.767 +G01 X+19.506 Y-14.155 C94.821 +G01 X+19.807 Y-14.138 C91.875 +G01 X+20.109 Y-14.136 C88.932 +G01 X+20.411 Y-14.149 C85.979 +G01 X+20.712 Y-14.178 C83.026 +G01 X+21.011 Y-14.222 C80.073 +G01 X+21.307 Y-14.282 C77.12 +G01 X+21.599 Y-14.357 C74.167 +G01 X+21.888 Y-14.447 C71.213 +G01 X+22.171 Y-14.551 C68.261 +G01 X+22.449 Y-14.67 C65.307 +G01 X+22.72 Y-14.803 C62.354 +G01 X+22.984 Y-14.95 C59.401 +G01 X+23.24 Y-15.11 C56.448 +G01 X+23.487 Y-15.284 C53.495 +G01 X+23.725 Y-15.469 C50.542 +G01 X+23.954 Y-15.667 C47.588 +G01 X+24.171 Y-15.877 C44.635 +G01 X+24.378 Y-16.097 C41.682 +G01 X+24.573 Y-16.327 C38.729 +G01 X+24.756 Y-16.568 C35.776 +G01 X+24.927 Y-16.817 C32.823 +G01 X+25.084 Y-17.075 C29.869 +G01 X+25.228 Y-17.34 C26.917 +G01 X+25.358 Y-17.613 C23.971 +G01 X+25.474 Y-17.892 C21.021 +G01 X+25.575 Y-18.177 C18.079 +G01 X+25.661 Y-18.466 C15.133 +G01 X+25.737 Y-18.781 B7.477 C11.997 +G01 X+25.789 Y-19.056 B7.478 C9.24 +G01 X+25.83 Y-19.356 C6.294 +G01 X+25.855 Y-19.656 C3.348 +G01 X+25.865 Y-19.961 C0.384 +G01 X+25.86 Y-20.26 C357.456 +G01 X+25.838 Y-20.562 C354.503 +G01 X+25.802 Y-20.861 C351.55 +G01 X+25.75 Y-21.159 C348.596 +G01 X+25.682 Y-21.453 C345.643 +G01 X+25.6 Y-21.744 C342.69 +G01 X+25.503 Y-22.03 C339.737 +G01 X+25.391 Y-22.311 C336.784 +G01 X+25.265 Y-22.585 C333.831 +G01 X+25.125 Y-22.853 C330.878 +G01 X+24.971 Y-23.113 C327.925 +G01 X+24.804 Y-23.365 C324.971 +G01 X+24.625 Y-23.607 C322.018 +G01 X+24.433 Y-23.841 C319.065 +G01 X+24.229 Y-24.064 C316.112 +G01 X+24.015 Y-24.276 C313.159 +G01 X+23.789 Y-24.477 C310.205 +G01 X+23.554 Y-24.666 C307.252 +G01 X+23.29 Y-24.855 B7.477 C304.084 +G01 X+23.055 Y-25.007 B7.478 C301.346 +G01 X+22.793 Y-25.158 C298.393 +G01 X+22.524 Y-25.295 C295.444 +G01 X+22.248 Y-25.417 C292.498 +G01 X+21.966 Y-25.526 C289.552 +G01 X+21.679 Y-25.62 C286.606 +G01 X+21.388 Y-25.699 C283.66 +G01 X+21.073 Y-25.766 B7.477 C280.546 +G01 X+20.794 Y-25.811 B7.478 C277.767 +G01 X+20.494 Y-25.845 C274.821 +G01 X+20.193 Y-25.862 C271.875 +G01 X+19.891 Y-25.864 C268.932 +G01 X+19.589 Y-25.851 C265.979 +G01 X+19.288 Y-25.822 C263.026 +G01 X+18.989 Y-25.778 C260.073 +G01 X+18.693 Y-25.718 C257.12 +G01 X+18.401 Y-25.643 C254.167 +G01 X+18.112 Y-25.553 C251.213 +G01 X+17.829 Y-25.449 C248.26 +G01 X+17.556 Y-25.332 C245.359 +G01 X+17.163 Y-25.138 B7.482 C241.352 +G01 X+17.031 Y-25.061 B7.481 C239.59 +G01 X+16.762 Y-24.891 B7.479 C236.477 +G01 X+16.513 Y-24.716 B7.478 C233.498 +G01 X+16.275 Y-24.53 C230.542 +G01 X+16.046 Y-24.333 C227.588 +G01 X+15.829 Y-24.123 C224.636 +G01 X+15.653 Y-23.936 B7.477 C222.147 +G01 X+15.597 Y-23.865 Z-0.883 B7.469 C221.255 +G01 X+15.556 Y-23.786 Z-0.88 B7.443 C220.398 +G01 X+15.529 Y-23.7 Z-0.876 B7.398 C219.6 +G01 X+15.438 Y-23.277 Z-0.852 B7.16 C215.687 +G01 X+15.408 Y-23.185 Z-0.848 B7.126 C214.744 +G01 X+15.361 Y-23.1 Z-0.847 B7.114 C213.757 +G01 X+15.315 Y-23.033 B7.116 C212.918 +G01 X+15.165 Y-22.788 C209.967 +G01 X+15.028 Y-22.535 C207.016 +G01 X+14.904 Y-22.276 C204.065 +G01 X+14.794 Y-22.011 C201.114 +G01 X+14.697 Y-21.74 C198.164 +G01 X+14.615 Y-21.465 C195.213 +G01 X+14.547 Y-21.185 C192.262 +G01 X+14.493 Y-20.903 C189.312 +G01 X+14.454 Y-20.618 C186.361 +G01 X+14.429 Y-20.332 C183.41 +G01 X+14.419 Y-20.045 C180.459 +G01 X+14.424 Y-19.758 C177.509 +G01 X+14.444 Y-19.471 C174.558 +G01 X+14.479 Y-19.186 C171.605 +G01 X+14.528 Y-18.902 C168.652 +G01 X+14.592 Y-18.622 C165.703 +G01 X+14.67 Y-18.346 C162.752 +G01 X+14.762 Y-18.073 C159.802 +G01 X+14.868 Y-17.806 C156.851 +G01 X+14.988 Y-17.545 C153.9 +G01 X+15.121 Y-17.29 C150.95 +G01 X+15.267 Y-17.043 C147.998 +G01 X+15.426 Y-16.803 C145.048 +G01 X+15.596 Y-16.572 C142.097 +G01 X+15.779 Y-16.35 C139.146 +G01 X+15.972 Y-16.137 C136.196 +G01 X+16.176 Y-15.935 C133.245 +G01 X+16.391 Y-15.743 C130.295 +G01 X+16.614 Y-15.563 C127.343 +G01 X+16.847 Y-15.395 C124.393 +G01 X+17.089 Y-15.239 C121.442 +G01 X+17.338 Y-15.095 C118.491 +G01 X+17.594 Y-14.965 C115.541 +G01 X+17.856 Y-14.847 C112.59 +G01 X+18.124 Y-14.744 C109.639 +G01 X+18.397 Y-14.654 C106.689 +G01 X+18.674 Y-14.579 C103.738 +G01 X+18.955 Y-14.518 C100.787 +G01 X+19.239 Y-14.471 C97.837 +G01 X+19.525 Y-14.439 C94.886 +G01 X+19.811 Y-14.422 C91.935 +G01 X+20.099 Y-14.42 C88.984 +G01 X+20.386 Y-14.433 C86.03 +G01 X+20.672 Y-14.46 C83.08 +G01 X+20.956 Y-14.502 C80.129 +G01 X+21.238 Y-14.558 C77.178 +G01 X+21.517 Y-14.629 C74.228 +G01 X+21.791 Y-14.714 C71.277 +G01 X+22.061 Y-14.814 C68.326 +G01 X+22.325 Y-14.926 C65.376 +G01 X+22.583 Y-15.053 C62.425 +G01 X+22.834 Y-15.192 C59.474 +G01 X+23.078 Y-15.345 C56.523 +G01 X+23.314 Y-15.509 C53.572 +G01 X+23.54 Y-15.686 C50.622 +G01 X+23.758 Y-15.874 C47.671 +G01 X+23.965 Y-16.073 C44.72 +G01 X+24.162 Y-16.282 C41.77 +G01 X+24.348 Y-16.501 C38.819 +G01 X+24.522 Y-16.73 C35.868 +G01 X+24.685 Y-16.967 C32.918 +G01 X+24.835 Y-17.212 C29.967 +G01 X+24.972 Y-17.465 C27.016 +G01 X+25.096 Y-17.724 C24.065 +G01 X+25.206 Y-17.989 C21.114 +G01 X+25.303 Y-18.26 C18.164 +G01 X+25.385 Y-18.535 C15.213 +G01 X+25.453 Y-18.814 C12.262 +G01 X+25.507 Y-19.097 C9.312 +G01 X+25.546 Y-19.381 C6.361 +G01 X+25.571 Y-19.668 C3.41 +G01 X+25.581 Y-19.955 C0.459 +G01 X+25.576 Y-20.242 C357.509 +G01 X+25.556 Y-20.529 C354.558 +G01 X+25.521 Y-20.814 C351.605 +G01 X+25.472 Y-21.098 C348.652 +G01 X+25.408 Y-21.378 C345.703 +G01 X+25.33 Y-21.654 C342.752 +G01 X+25.238 Y-21.926 C339.802 +G01 X+25.132 Y-22.194 C336.851 +G01 X+25.012 Y-22.455 C333.9 +G01 X+24.879 Y-22.71 C330.95 +G01 X+24.733 Y-22.957 C327.998 +G01 X+24.574 Y-23.197 C325.048 +G01 X+24.404 Y-23.428 C322.097 +G01 X+24.221 Y-23.65 C319.146 +G01 X+24.028 Y-23.863 C316.196 +G01 X+23.824 Y-24.065 C313.245 +G01 X+23.609 Y-24.256 C310.295 +G01 X+23.386 Y-24.437 C307.343 +G01 X+23.153 Y-24.605 C304.393 +G01 X+22.911 Y-24.761 C301.442 +G01 X+22.662 Y-24.905 C298.491 +G01 X+22.406 Y-25.035 C295.541 +G01 X+22.144 Y-25.152 C292.59 +G01 X+21.876 Y-25.256 C289.639 +G01 X+21.603 Y-25.346 C286.689 +G01 X+21.326 Y-25.421 C283.738 +G01 X+21.045 Y-25.482 C280.787 +G01 X+20.761 Y-25.529 C277.837 +G01 X+20.475 Y-25.56 C274.886 +G01 X+20.189 Y-25.578 C271.935 +G01 X+19.901 Y-25.58 C268.984 +G01 X+19.614 Y-25.567 C266.03 +G01 X+19.328 Y-25.54 C263.08 +G01 X+19.044 Y-25.498 C260.129 +G01 X+18.762 Y-25.442 C257.178 +G01 X+18.483 Y-25.371 C254.228 +G01 X+18.209 Y-25.286 C251.277 +G01 X+17.939 Y-25.186 C248.325 +G01 X+17.68 Y-25.076 C245.433 +G01 X+17.29 Y-24.883 Z-0.848 B7.121 C240.962 +G01 X+17.182 Y-24.82 B7.119 C239.682 +G01 X+16.924 Y-24.657 Z-0.847 B7.117 C236.556 +G01 X+16.687 Y-24.491 B7.116 C233.577 +G01 X+16.46 Y-24.314 C230.622 +G01 X+16.242 Y-24.126 C227.671 +G01 X+16.035 Y-23.927 C224.72 +G01 X+15.864 Y-23.745 B7.115 C222.156 +G01 X+15.808 Y-23.674 B7.107 C221.233 +G01 X+15.766 Y-23.594 Z-0.844 B7.081 C220.324 +G01 X+15.739 Y-23.508 Z-0.84 B7.037 C219.451 +G01 X+15.646 Y-23.079 Z-0.817 B6.797 C215.268 +G01 X+15.617 Y-22.987 Z-0.814 B6.761 C214.245 +G01 X+15.57 Y-22.902 Z-0.813 B6.75 C213.177 +G01 X+15.525 Y-22.831 B6.749 C212.32 +G01 X+15.414 Y-22.65 B6.751 C209.994 +G01 X+15.284 Y-22.411 C207.046 +G01 X+15.166 Y-22.165 C204.097 +G01 X+15.061 Y-21.913 C201.149 +G01 X+14.969 Y-21.656 C198.201 +G01 X+14.891 Y-21.395 C195.253 +G01 X+14.826 Y-21.13 C192.304 +G01 X+14.774 Y-20.862 C189.356 +G01 X+14.737 Y-20.592 C186.408 +G01 X+14.713 Y-20.321 C183.459 +G01 X+14.704 Y-20.048 C180.511 +G01 X+14.708 Y-19.775 C177.563 +G01 X+14.727 Y-19.503 C174.614 +G01 X+14.759 Y-19.232 C171.668 +G01 X+14.806 Y-18.964 C168.711 +G01 X+14.866 Y-18.698 C165.754 +G01 X+14.94 Y-18.435 C162.797 +G01 X+15.027 Y-18.177 C159.839 +G01 X+15.128 Y-17.923 C156.882 +G01 X+15.241 Y-17.675 C153.925 +G01 X+15.376 Y-17.419 C150.781 +G01 X+15.512 Y-17.188 C147.878 +G01 X+15.66 Y-16.964 C144.975 +G01 X+15.817 Y-16.751 C142.106 +G01 X+15.99 Y-16.54 C139.158 +G01 X+16.174 Y-16.338 C136.21 +G01 X+16.367 Y-16.146 C133.261 +G01 X+16.57 Y-15.964 C130.313 +G01 X+16.783 Y-15.793 C127.365 +G01 X+17.004 Y-15.633 C124.416 +G01 X+17.232 Y-15.484 C121.468 +G01 X+17.468 Y-15.348 C118.52 +G01 X+17.711 Y-15.223 C115.572 +G01 X+17.96 Y-15.112 C112.623 +G01 X+18.215 Y-15.013 C109.675 +G01 X+18.474 Y-14.928 C106.727 +G01 X+18.737 Y-14.856 C103.778 +G01 X+19.003 Y-14.798 C100.83 +G01 X+19.272 Y-14.754 C97.882 +G01 X+19.543 Y-14.723 C94.933 +G01 X+19.816 Y-14.707 C91.985 +G01 X+20.088 Y-14.704 C89.037 +G01 X+20.361 Y-14.716 C86.088 +G01 X+20.634 Y-14.742 C83.126 +G01 X+20.902 Y-14.781 C80.19 +G01 X+21.17 Y-14.834 C77.233 +G01 X+21.434 Y-14.901 C74.275 +G01 X+21.695 Y-14.982 C71.318 +G01 X+21.951 Y-15.076 C68.361 +G01 X+22.202 Y-15.183 C65.403 +G01 X+22.463 Y-15.312 C62.232 +G01 X+22.581 Y-15.377 B6.749 C60.779 +G01 X+22.698 Y-15.442 B6.751 C59.329 +G01 X+22.925 Y-15.585 C56.426 +G01 X+23.145 Y-15.738 C53.523 +G01 X+23.357 Y-15.903 C50.62 +G01 X+23.562 Y-16.08 C47.684 +G01 X+23.759 Y-16.269 C44.735 +G01 X+23.946 Y-16.468 C41.787 +G01 X+24.123 Y-16.675 C38.839 +G01 X+24.289 Y-16.892 C35.891 +G01 X+24.443 Y-17.117 C32.943 +G01 X+24.586 Y-17.349 C29.994 +G01 X+24.716 Y-17.589 C27.046 +G01 X+24.834 Y-17.835 C24.098 +G01 X+24.939 Y-18.087 C21.149 +G01 X+25.031 Y-18.343 C18.201 +G01 X+25.109 Y-18.605 C15.253 +G01 X+25.174 Y-18.87 C12.304 +G01 X+25.226 Y-19.137 C9.356 +G01 X+25.263 Y-19.408 C6.408 +G01 X+25.287 Y-19.679 C3.459 +G01 X+25.296 Y-19.952 C0.511 +G01 X+25.292 Y-20.225 C357.563 +G01 X+25.273 Y-20.497 C354.614 +G01 X+25.241 Y-20.767 C351.668 +G01 X+25.194 Y-21.036 C348.711 +G01 X+25.134 Y-21.302 C345.754 +G01 X+25.06 Y-21.565 C342.797 +G01 X+24.973 Y-21.823 C339.839 +G01 X+24.872 Y-22.077 C336.882 +G01 X+24.759 Y-22.325 C333.925 +G01 X+24.624 Y-22.581 C330.781 +G01 X+24.488 Y-22.812 C327.878 +G01 X+24.34 Y-23.036 C324.975 +G01 X+24.183 Y-23.249 C322.106 +G01 X+24.01 Y-23.46 C319.158 +G01 X+23.826 Y-23.662 C316.21 +G01 X+23.633 Y-23.854 C313.261 +G01 X+23.43 Y-24.036 C310.313 +G01 X+23.217 Y-24.207 C307.365 +G01 X+22.996 Y-24.367 C304.416 +G01 X+22.768 Y-24.516 C301.468 +G01 X+22.532 Y-24.652 C298.52 +G01 X+22.289 Y-24.776 C295.572 +G01 X+22.04 Y-24.888 C292.623 +G01 X+21.785 Y-24.986 C289.675 +G01 X+21.526 Y-25.072 C286.727 +G01 X+21.263 Y-25.144 C283.778 +G01 X+20.997 Y-25.202 C280.83 +G01 X+20.728 Y-25.246 C277.882 +G01 X+20.457 Y-25.277 C274.933 +G01 X+20.184 Y-25.293 C271.985 +G01 X+19.912 Y-25.296 C269.037 +G01 X+19.639 Y-25.284 C266.088 +G01 X+19.366 Y-25.258 C263.126 +G01 X+19.098 Y-25.219 C260.19 +G01 X+18.83 Y-25.166 C257.233 +G01 X+18.566 Y-25.099 C254.275 +G01 X+18.305 Y-25.018 C251.318 +G01 X+18.049 Y-24.924 C248.359 +G01 X+17.804 Y-24.82 C245.481 +G01 X+17.537 Y-24.688 B6.75 C242.232 +G01 X+17.46 Y-24.65 B6.754 C241.352 +G01 X+17.417 Y-24.628 B6.756 C240.787 +G01 X+17.332 Y-24.579 B6.755 C239.763 +G01 X+17.075 Y-24.416 B6.751 C236.427 +G01 X+16.855 Y-24.262 C233.523 +G01 X+16.643 Y-24.097 C230.62 +G01 X+16.438 Y-23.919 C227.684 +G01 X+16.241 Y-23.731 C224.736 +G01 X+16.074 Y-23.555 B6.75 C222.12 +G01 X+16.019 Y-23.483 Z-0.812 B6.743 C221.174 +G01 X+15.977 Y-23.403 Z-0.81 B6.717 C220.189 +G01 X+15.95 Y-23.317 Z-0.806 B6.673 C219.287 +G01 X+15.855 Y-22.878 Z-0.784 B6.431 C214.738 +G01 X+15.83 Y-22.797 Z-0.781 B6.398 C213.844 +G01 X+15.792 Y-22.722 Z-0.78 B6.386 C212.834 +G01 X+15.655 Y-22.498 C209.845 +G01 X+15.534 Y-22.275 C206.942 +G01 X+15.428 Y-22.053 C204.126 +G01 X+15.329 Y-21.815 B6.387 C201.181 +G01 X+15.241 Y-21.572 B6.386 C198.233 +G01 X+15.167 Y-21.325 C195.289 +G01 X+15.105 Y-21.075 C192.343 +G01 X+15.056 Y-20.821 C189.397 +G01 X+15.02 Y-20.566 C186.451 +G01 X+14.998 Y-20.309 C183.505 +G01 X+14.988 Y-20.051 C180.559 +G01 X+14.992 Y-19.793 C177.614 +G01 X+15.01 Y-19.535 C174.668 +G01 X+15.04 Y-19.279 C171.722 +G01 X+15.084 Y-19.024 C168.772 +G01 X+15.141 Y-18.773 C165.827 +G01 X+15.21 Y-18.524 C162.872 +G01 X+15.293 Y-18.28 C159.918 +G01 X+15.387 Y-18.04 C156.963 +G01 X+15.494 Y-17.805 C154.009 +G01 X+15.613 Y-17.576 C151.055 +G01 X+15.744 Y-17.353 C148.1 +G01 X+15.886 Y-17.138 C145.146 +G01 X+16.039 Y-16.93 B6.387 C142.192 +G01 X+16.202 Y-16.73 C139.237 +G01 X+16.375 Y-16.539 C136.283 +G01 X+16.558 Y-16.357 C133.329 +G01 X+16.751 Y-16.184 C130.375 +G01 X+16.951 Y-16.022 C127.42 +G01 X+17.16 Y-15.87 C124.466 +G01 X+17.393 Y-15.72 B6.386 C121.297 +G01 X+17.613 Y-15.593 C118.394 +G01 X+17.829 Y-15.482 B6.387 C115.603 +G01 X+18.065 Y-15.377 B6.386 C112.654 +G01 X+18.305 Y-15.283 C109.708 +G01 X+18.55 Y-15.202 C106.762 +G01 X+18.799 Y-15.134 C103.816 +G01 X+19.051 Y-15.079 C100.87 +G01 X+19.306 Y-15.036 C97.924 +G01 X+19.563 Y-15.007 C94.979 +G01 X+19.82 Y-14.991 C92.033 +G01 X+20.078 Y-14.989 C89.087 +G01 X+20.336 Y-14.999 C86.141 +G01 X+20.593 Y-15.023 C83.195 +G01 X+20.848 Y-15.06 C80.249 +G01 X+21.102 Y-15.111 C77.304 +G01 X+21.352 Y-15.174 C74.349 +G01 X+21.598 Y-15.25 C71.395 +G01 X+21.841 Y-15.338 C68.441 +G01 X+22.078 Y-15.439 C65.486 +G01 X+22.31 Y-15.552 C62.532 +G01 X+22.365 Y-15.583 B6.385 C61.779 +G01 X+22.513 Y-15.664 C59.901 +G01 X+22.536 Y-15.677 B6.386 C59.577 +G01 X+22.755 Y-15.814 C56.623 +G01 X+22.967 Y-15.961 C53.669 +G01 X+23.171 Y-16.119 B6.387 C50.714 +G01 X+23.367 Y-16.287 C47.76 +G01 X+23.554 Y-16.466 C44.806 +G01 X+23.731 Y-16.653 C41.852 +G01 X+23.898 Y-16.85 C38.897 +G01 X+24.055 Y-17.055 C35.943 +G01 X+24.212 Y-17.285 B6.386 C32.749 +G01 X+24.345 Y-17.502 C29.845 +G01 X+24.466 Y-17.725 C26.942 +G01 X+24.572 Y-17.946 C24.126 +G01 X+24.671 Y-18.184 B6.387 C21.181 +G01 X+24.759 Y-18.428 B6.386 C18.233 +G01 X+24.833 Y-18.674 C15.289 +G01 X+24.895 Y-18.925 C12.343 +G01 X+24.944 Y-19.178 C9.397 +G01 X+24.98 Y-19.434 C6.451 +G01 X+25.002 Y-19.691 C3.505 +G01 X+25.012 Y-19.949 C0.559 +G01 X+25.008 Y-20.207 C357.614 +G01 X+24.99 Y-20.465 C354.668 +G01 X+24.96 Y-20.721 C351.722 +G01 X+24.916 Y-20.976 C348.772 +G01 X+24.859 Y-21.227 C345.827 +G01 X+24.79 Y-21.476 C342.872 +G01 X+24.707 Y-21.72 C339.918 +G01 X+24.613 Y-21.96 C336.963 +G01 X+24.506 Y-22.195 C334.009 +G01 X+24.387 Y-22.424 C331.055 +G01 X+24.256 Y-22.647 C328.1 +G01 X+24.114 Y-22.862 C325.146 +G01 X+23.961 Y-23.07 B6.387 C322.192 +G01 X+23.798 Y-23.27 C319.237 +G01 X+23.625 Y-23.461 C316.283 +G01 X+23.442 Y-23.643 C313.329 +G01 X+23.249 Y-23.816 C310.375 +G01 X+23.049 Y-23.978 C307.42 +G01 X+22.84 Y-24.13 C304.466 +G01 X+22.607 Y-24.28 B6.386 C301.297 +G01 X+22.387 Y-24.406 C298.394 +G01 X+22.171 Y-24.517 B6.387 C295.603 +G01 X+21.935 Y-24.623 B6.386 C292.654 +G01 X+21.695 Y-24.717 C289.708 +G01 X+21.45 Y-24.798 C286.762 +G01 X+21.201 Y-24.866 C283.816 +G01 X+20.949 Y-24.921 C280.87 +G01 X+20.694 Y-24.964 C277.924 +G01 X+20.437 Y-24.993 C274.979 +G01 X+20.18 Y-25.009 C272.033 +G01 X+19.922 Y-25.011 C269.087 +G01 X+19.664 Y-25 C266.141 +G01 X+19.407 Y-24.977 C263.195 +G01 X+19.152 Y-24.939 C260.249 +G01 X+18.898 Y-24.889 C257.304 +G01 X+18.648 Y-24.826 C254.349 +G01 X+18.402 Y-24.75 C251.395 +G01 X+18.159 Y-24.661 C248.439 +G01 X+17.928 Y-24.563 C245.573 +G01 X+17.634 Y-24.419 B6.387 C241.782 +G01 X+17.596 Y-24.4 B6.389 C241.352 +G01 X+17.558 Y-24.381 B6.391 C240.835 +G01 X+17.483 Y-24.338 B6.39 C239.878 +G01 X+17.248 Y-24.189 B6.387 C236.675 +G01 X+17.033 Y-24.039 C233.676 +G01 X+16.829 Y-23.881 C230.715 +G01 X+16.633 Y-23.712 C227.76 +G01 X+16.446 Y-23.534 C224.806 +G01 X+16.285 Y-23.364 B6.386 C222.139 +G01 X+16.229 Y-23.292 Z-0.779 B6.378 C221.115 +G01 X+16.187 Y-23.212 Z-0.777 B6.353 C220.054 +G01 X+16.16 Y-23.126 Z-0.773 B6.309 C219.123 +G01 X+16.111 Y-22.899 Z-0.762 B6.18 C216.679 +G01 X+16.062 Y-22.672 Z-0.752 B6.062 C214.137 +G01 X+16.037 Y-22.591 Z-0.75 B6.032 C213.169 +G01 X+15.999 Y-22.515 Z-0.749 B6.02 C212.153 +G01 X+15.913 Y-22.375 B6.022 C210.148 +G01 X+15.796 Y-22.161 C207.196 +G01 X+15.69 Y-21.942 C204.245 +G01 X+15.596 Y-21.717 C201.294 +G01 X+15.513 Y-21.488 C198.342 +G01 X+15.443 Y-21.255 C195.391 +G01 X+15.384 Y-21.019 C192.44 +G01 X+15.338 Y-20.78 C189.488 +G01 X+15.304 Y-20.539 C186.537 +G01 X+15.282 Y-20.297 C183.586 +G01 X+15.273 Y-20.053 C180.634 +G01 X+15.277 Y-19.81 C177.683 +G01 X+15.293 Y-19.567 C174.732 +G01 X+15.321 Y-19.325 C171.78 +G01 X+15.362 Y-19.085 C168.831 +G01 X+15.416 Y-18.846 C165.868 +G01 X+15.481 Y-18.613 C162.943 +G01 X+15.558 Y-18.383 C159.992 +G01 X+15.647 Y-18.156 C157.04 +G01 X+15.748 Y-17.934 C154.089 +G01 X+15.86 Y-17.718 C151.138 +G01 X+15.983 Y-17.508 C148.187 +G01 X+16.117 Y-17.305 C145.235 +G01 X+16.261 Y-17.108 C142.284 +G01 X+16.414 Y-16.92 C139.332 +G01 X+16.578 Y-16.739 C136.381 +G01 X+16.75 Y-16.567 C133.429 +G01 X+16.931 Y-16.405 C130.478 +G01 X+17.12 Y-16.251 C127.527 +G01 X+17.317 Y-16.108 C124.575 +G01 X+17.521 Y-15.975 C121.624 +G01 X+17.731 Y-15.853 C118.673 +G01 X+17.948 Y-15.742 C115.721 +G01 X+18.17 Y-15.642 C112.769 +G01 X+18.397 Y-15.553 C109.818 +G01 X+18.628 Y-15.476 C106.867 +G01 X+18.862 Y-15.412 C103.915 +G01 X+19.1 Y-15.359 C100.964 +G01 X+19.34 Y-15.319 C98.012 +G01 X+19.582 Y-15.291 C95.061 +G01 X+19.825 Y-15.276 C92.11 +G01 X+20.068 Y-15.273 C89.158 +G01 X+20.312 Y-15.283 C86.207 +G01 X+20.554 Y-15.305 C83.256 +G01 X+20.795 Y-15.34 C80.304 +G01 X+21.034 Y-15.387 C77.359 +G01 X+21.271 Y-15.447 C74.401 +G01 X+21.503 Y-15.518 C71.468 +G01 X+21.731 Y-15.601 C68.516 +G01 X+21.955 Y-15.696 C65.565 +G01 X+22.174 Y-15.803 C62.614 +G01 X+22.388 Y-15.92 C59.662 +G01 X+22.594 Y-16.048 C56.711 +G01 X+22.794 Y-16.187 C53.76 +G01 X+22.987 Y-16.336 C50.808 +G01 X+23.172 Y-16.495 C47.856 +G01 X+23.348 Y-16.663 C44.905 +G01 X+23.515 Y-16.839 C41.954 +G01 X+23.673 Y-17.025 C39.002 +G01 X+23.821 Y-17.218 C36.051 +G01 X+23.96 Y-17.418 C33.1 +G01 X+24.087 Y-17.625 C30.148 +G01 X+24.204 Y-17.839 C27.196 +G01 X+24.31 Y-18.058 C24.245 +G01 X+24.404 Y-18.283 C21.294 +G01 X+24.487 Y-18.512 C18.342 +G01 X+24.557 Y-18.745 C15.391 +G01 X+24.616 Y-18.981 C12.44 +G01 X+24.662 Y-19.22 C9.488 +G01 X+24.696 Y-19.461 C6.537 +G01 X+24.718 Y-19.703 C3.586 +G01 X+24.727 Y-19.947 C0.634 +G01 X+24.723 Y-20.19 C357.683 +G01 X+24.707 Y-20.433 C354.732 +G01 X+24.679 Y-20.675 C351.78 +G01 X+24.638 Y-20.915 C348.831 +G01 X+24.584 Y-21.154 C345.868 +G01 X+24.519 Y-21.387 C342.943 +G01 X+24.442 Y-21.617 C339.992 +G01 X+24.353 Y-21.844 C337.04 +G01 X+24.252 Y-22.065 C334.089 +G01 X+24.14 Y-22.282 C331.138 +G01 X+24.017 Y-22.492 C328.187 +G01 X+23.883 Y-22.695 C325.235 +G01 X+23.739 Y-22.892 C322.284 +G01 X+23.586 Y-23.08 C319.332 +G01 X+23.422 Y-23.261 C316.381 +G01 X+23.25 Y-23.433 C313.429 +G01 X+23.069 Y-23.595 C310.478 +G01 X+22.88 Y-23.749 C307.527 +G01 X+22.683 Y-23.892 C304.575 +G01 X+22.479 Y-24.025 C301.624 +G01 X+22.269 Y-24.147 C298.673 +G01 X+22.052 Y-24.258 C295.721 +G01 X+21.83 Y-24.358 C292.769 +G01 X+21.603 Y-24.447 C289.818 +G01 X+21.372 Y-24.523 C286.867 +G01 X+21.138 Y-24.588 C283.915 +G01 X+20.9 Y-24.641 C280.964 +G01 X+20.66 Y-24.681 C278.012 +G01 X+20.418 Y-24.708 C275.061 +G01 X+20.175 Y-24.724 C272.11 +G01 X+19.932 Y-24.726 C269.158 +G01 X+19.688 Y-24.717 C266.207 +G01 X+19.446 Y-24.694 C263.256 +G01 X+19.205 Y-24.66 C260.304 +G01 X+18.966 Y-24.613 C257.359 +G01 X+18.729 Y-24.553 C254.401 +G01 X+18.497 Y-24.482 C251.468 +G01 X+18.269 Y-24.398 C248.514 +G01 X+18.052 Y-24.307 C245.661 +G01 X+17.693 Y-24.13 B6.027 C240.804 +G01 X+17.634 Y-24.096 B6.026 C239.973 +G01 X+17.409 Y-23.955 B6.023 C236.77 +G01 X+17.206 Y-23.813 B6.022 C233.768 +G01 X+17.013 Y-23.664 C230.809 +G01 X+16.828 Y-23.505 C227.857 +G01 X+16.652 Y-23.337 C224.905 +G01 X+16.496 Y-23.173 B6.021 C222.159 +G01 X+16.44 Y-23.101 Z-0.748 B6.014 C221.055 +G01 X+16.398 Y-23.021 Z-0.746 B5.989 C219.98 +G01 X+16.371 Y-22.934 Z-0.743 B5.948 C218.955 +G01 X+16.32 Y-22.7 Z-0.732 B5.816 C216.244 +G01 X+16.269 Y-22.466 Z-0.723 B5.698 C213.415 +G01 X+16.244 Y-22.385 Z-0.72 B5.668 C212.408 +G01 X+16.206 Y-22.309 B5.659 C211.297 +G01 X+16.161 Y-22.236 B5.66 C210.184 +G01 X+16.051 Y-22.036 C207.236 +G01 X+15.952 Y-21.83 C204.287 +G01 X+15.863 Y-21.619 C201.338 +G01 X+15.785 Y-21.404 C198.39 +G01 X+15.718 Y-21.185 C195.442 +G01 X+15.663 Y-20.963 C192.493 +G01 X+15.619 Y-20.738 C189.545 +G01 X+15.587 Y-20.512 C186.596 +G01 X+15.567 Y-20.284 C183.648 +G01 X+15.558 Y-20.055 C180.7 +G01 X+15.561 Y-19.827 C177.751 +G01 X+15.576 Y-19.598 C174.802 +G01 X+15.602 Y-19.371 C171.854 +G01 X+15.64 Y-19.146 C168.905 +G01 X+15.69 Y-18.922 C165.957 +G01 X+15.751 Y-18.702 C163.008 +G01 X+15.824 Y-18.485 C160.062 +G01 X+15.907 Y-18.272 C157.103 +G01 X+16.002 Y-18.064 C154.143 +G01 X+16.107 Y-17.86 C151.183 +G01 X+16.222 Y-17.663 C148.223 +G01 X+16.347 Y-17.471 C145.264 +G01 X+16.482 Y-17.287 C142.304 +G01 X+16.627 Y-17.109 C139.349 +G01 X+16.781 Y-16.938 C136.385 +G01 X+16.942 Y-16.778 C133.452 +G01 X+17.112 Y-16.624 C130.504 +G01 X+17.289 Y-16.48 C127.556 +G01 X+17.474 Y-16.345 C124.607 +G01 X+17.666 Y-16.22 C121.659 +G01 X+17.863 Y-16.105 C118.71 +G01 X+18.067 Y-16 C115.762 +G01 X+18.275 Y-15.906 C112.813 +G01 X+18.488 Y-15.823 C109.865 +G01 X+18.705 Y-15.75 C106.916 +G01 X+18.926 Y-15.689 C103.967 +G01 X+19.149 Y-15.64 C101.019 +G01 X+19.375 Y-15.602 C98.07 +G01 X+19.602 Y-15.575 C95.122 +G01 X+19.83 Y-15.561 C92.173 +G01 X+20.059 Y-15.558 C89.225 +G01 X+20.287 Y-15.567 C86.277 +G01 X+20.515 Y-15.587 C83.328 +G01 X+20.742 Y-15.62 C80.38 +G01 X+20.966 Y-15.664 C77.431 +G01 X+21.188 Y-15.719 C74.482 +G01 X+21.409 Y-15.787 C71.513 +G01 X+21.622 Y-15.864 C68.582 +G01 X+21.833 Y-15.953 C65.623 +G01 X+22.058 Y-16.063 C62.352 +G01 X+22.156 Y-16.117 B5.658 C61.352 +G01 X+22.239 Y-16.163 B5.66 C59.703 +G01 X+22.434 Y-16.283 C56.744 +G01 X+22.622 Y-16.414 C53.784 +G01 X+22.803 Y-16.553 C50.824 +G01 X+22.977 Y-16.702 C47.875 +G01 X+23.143 Y-16.86 C44.927 +G01 X+23.3 Y-17.026 C41.978 +G01 X+23.449 Y-17.199 C39.03 +G01 X+23.588 Y-17.381 C36.081 +G01 X+23.718 Y-17.569 C33.133 +G01 X+23.839 Y-17.764 C30.184 +G01 X+23.949 Y-17.964 C27.236 +G01 X+24.048 Y-18.17 C24.287 +G01 X+24.137 Y-18.381 C21.339 +G01 X+24.215 Y-18.596 C18.39 +G01 X+24.282 Y-18.815 C15.442 +G01 X+24.337 Y-19.037 C12.493 +G01 X+24.381 Y-19.261 C9.545 +G01 X+24.413 Y-19.488 C6.596 +G01 X+24.433 Y-19.716 C3.648 +G01 X+24.442 Y-19.944 C0.7 +G01 X+24.439 Y-20.173 C357.751 +G01 X+24.424 Y-20.401 C354.802 +G01 X+24.398 Y-20.629 C351.854 +G01 X+24.36 Y-20.854 C348.905 +G01 X+24.31 Y-21.077 C345.957 +G01 X+24.249 Y-21.298 C343.008 +G01 X+24.176 Y-21.515 C340.062 +G01 X+24.093 Y-21.728 C337.103 +G01 X+23.998 Y-21.936 C334.143 +G01 X+23.893 Y-22.14 C331.183 +G01 X+23.778 Y-22.337 C328.223 +G01 X+23.653 Y-22.529 C325.264 +G01 X+23.518 Y-22.713 C322.304 +G01 X+23.373 Y-22.891 C319.349 +G01 X+23.219 Y-23.061 C316.385 +G01 X+23.058 Y-23.222 C313.452 +G01 X+22.888 Y-23.375 C310.504 +G01 X+22.711 Y-23.52 C307.556 +G01 X+22.526 Y-23.655 C304.607 +G01 X+22.334 Y-23.78 C301.659 +G01 X+22.137 Y-23.895 C298.71 +G01 X+21.933 Y-24 C295.762 +G01 X+21.725 Y-24.094 C292.813 +G01 X+21.512 Y-24.177 C289.865 +G01 X+21.295 Y-24.25 C286.916 +G01 X+21.074 Y-24.311 C283.967 +G01 X+20.851 Y-24.36 C281.019 +G01 X+20.625 Y-24.398 C278.07 +G01 X+20.398 Y-24.425 C275.122 +G01 X+20.17 Y-24.439 C272.173 +G01 X+19.941 Y-24.442 C269.225 +G01 X+19.713 Y-24.433 C266.277 +G01 X+19.485 Y-24.413 C263.328 +G01 X+19.258 Y-24.38 C260.38 +G01 X+19.034 Y-24.336 C257.431 +G01 X+18.812 Y-24.281 C254.482 +G01 X+18.591 Y-24.213 C251.513 +G01 X+18.378 Y-24.136 C248.579 +G01 X+18.175 Y-24.05 C245.745 +G01 X+17.942 Y-23.936 B5.659 C242.352 +G01 X+17.869 Y-23.9 B5.663 C241.352 +G01 X+17.827 Y-23.879 B5.666 C240.7 +G01 X+17.771 Y-23.846 B5.664 C239.901 +G01 X+17.57 Y-23.72 B5.661 C236.828 +G01 X+17.379 Y-23.587 B5.66 C233.797 +G01 X+17.197 Y-23.447 C230.826 +G01 X+17.023 Y-23.298 C227.875 +G01 X+16.857 Y-23.14 C224.927 +G01 X+16.707 Y-22.982 C222.105 +G01 X+16.652 Y-22.911 Z-0.719 B5.652 C220.996 +G01 X+16.61 Y-22.831 Z-0.717 B5.627 C219.846 +G01 X+16.583 Y-22.745 Z-0.714 B5.584 C218.733 +G01 X+16.531 Y-22.504 Z-0.704 B5.451 C215.783 +G01 X+16.479 Y-22.264 Z-0.695 B5.332 C212.694 +G01 X+16.454 Y-22.182 Z-0.693 B5.304 C211.528 +G01 X+16.415 Y-22.106 Z-0.692 B5.296 C210.387 +G01 X+16.3 Y-21.896 C207.063 +G01 X+16.209 Y-21.706 C204.16 +G01 X+16.127 Y-21.512 C201.257 +G01 X+16.057 Y-21.319 Z-0.693 C198.419 +G01 X+15.994 Y-21.112 C195.451 +G01 X+15.942 Y-20.907 C192.528 +G01 X+15.901 Y-20.696 C189.582 +G01 X+15.87 Y-20.485 C186.636 +G01 X+15.851 Y-20.271 C183.691 +G01 X+15.843 Y-20.057 C180.746 +G01 X+15.845 Y-19.843 C177.8 +G01 X+15.859 Y-19.63 C174.854 +G01 X+15.883 Y-19.417 C171.908 +G01 X+15.919 Y-19.206 C168.963 +G01 X+15.965 Y-18.997 C166.017 +G01 X+16.022 Y-18.79 C163.072 +G01 X+16.09 Y-18.587 C160.126 +G01 X+16.168 Y-18.386 Z-0.692 C157.159 +G01 X+16.256 Y-18.192 Z-0.693 C154.233 +G01 X+16.354 Y-18.002 C151.277 +G01 X+16.461 Y-17.817 C148.321 +G01 X+16.578 Y-17.638 C145.365 +G01 X+16.704 Y-17.465 C142.409 +G01 X+16.839 Y-17.298 C139.452 +G01 X+16.983 Y-17.139 C136.496 +G01 X+17.134 Y-16.988 C133.54 +G01 X+17.293 Y-16.844 C130.584 +G01 X+17.459 Y-16.709 C127.628 +G01 X+17.631 Y-16.583 C124.671 +G01 X+17.829 Y-16.455 Z-0.692 C121.418 +G01 X+18.011 Y-16.349 C118.515 +G01 X+18.198 Y-16.253 C115.612 +G01 X+18.39 Y-16.167 C112.709 +G01 X+18.587 Y-16.09 C109.806 +G01 X+18.783 Y-16.024 Z-0.693 C106.946 +G01 X+18.989 Y-15.967 C104. +G01 X+19.198 Y-15.92 C101.055 +G01 X+19.409 Y-15.884 C98.109 +G01 X+19.622 Y-15.859 C95.164 +G01 X+19.836 Y-15.845 C92.218 +G01 X+20.05 Y-15.842 C89.273 +G01 X+20.264 Y-15.85 C86.327 +G01 X+20.477 Y-15.869 C83.381 +G01 X+20.689 Y-15.9 C80.436 +G01 X+20.899 Y-15.94 C77.49 +G01 X+21.107 Y-15.992 C74.544 +G01 X+21.312 Y-16.054 C71.599 +G01 X+21.513 Y-16.127 C68.653 +G01 X+21.711 Y-16.21 C65.707 +G01 X+21.903 Y-16.303 C62.755 +G01 X+21.953 Y-16.331 Z-0.692 B5.295 C61.901 +G01 X+22.091 Y-16.406 Z-0.693 B5.296 C59.799 +G01 X+22.273 Y-16.519 C56.842 +G01 X+22.449 Y-16.64 C53.887 +G01 X+22.619 Y-16.771 C50.931 +G01 X+22.782 Y-16.91 C47.974 +G01 X+22.937 Y-17.057 C45.018 +G01 X+23.085 Y-17.212 C42.062 +G01 X+23.224 Y-17.375 C39.106 +G01 X+23.355 Y-17.544 C36.15 +G01 X+23.477 Y-17.72 C33.194 +G01 X+23.599 Y-17.919 Z-0.692 C29.967 +G01 X+23.7 Y-18.104 C27.063 +G01 X+23.791 Y-18.294 C24.16 +G01 X+23.873 Y-18.488 C21.257 +G01 X+23.943 Y-18.681 Z-0.693 C18.419 +G01 X+24.006 Y-18.887 C15.451 +G01 X+24.058 Y-19.093 C12.528 +G01 X+24.099 Y-19.303 C9.582 +G01 X+24.13 Y-19.515 C6.636 +G01 X+24.149 Y-19.729 C3.691 +G01 X+24.157 Y-19.943 C0.746 +G01 X+24.155 Y-20.157 C357.8 +G01 X+24.141 Y-20.37 C354.854 +G01 X+24.117 Y-20.583 C351.908 +G01 X+24.081 Y-20.794 C348.963 +G01 X+24.035 Y-21.003 C346.017 +G01 X+23.978 Y-21.21 C343.072 +G01 X+23.91 Y-21.413 C340.126 +G01 X+23.832 Y-21.614 Z-0.692 C337.159 +G01 X+23.744 Y-21.807 Z-0.693 C334.233 +G01 X+23.646 Y-21.998 C331.277 +G01 X+23.539 Y-22.183 C328.321 +G01 X+23.422 Y-22.362 C325.365 +G01 X+23.296 Y-22.535 C322.409 +G01 X+23.161 Y-22.701 C319.452 +G01 X+23.017 Y-22.861 C316.496 +G01 X+22.866 Y-23.012 C313.54 +G01 X+22.707 Y-23.156 C310.584 +G01 X+22.541 Y-23.291 C307.628 +G01 X+22.369 Y-23.417 C304.671 +G01 X+22.171 Y-23.545 Z-0.692 C301.418 +G01 X+21.989 Y-23.651 C298.515 +G01 X+21.802 Y-23.747 C295.612 +G01 X+21.61 Y-23.833 C292.709 +G01 X+21.414 Y-23.91 C289.806 +G01 X+21.217 Y-23.976 Z-0.693 C286.946 +G01 X+21.011 Y-24.033 C284. +G01 X+20.802 Y-24.08 C281.055 +G01 X+20.591 Y-24.116 C278.109 +G01 X+20.378 Y-24.141 C275.164 +G01 X+20.164 Y-24.155 C272.218 +G01 X+19.95 Y-24.158 C269.273 +G01 X+19.736 Y-24.149 C266.327 +G01 X+19.523 Y-24.13 C263.381 +G01 X+19.311 Y-24.1 C260.436 +G01 X+19.101 Y-24.059 C257.49 +G01 X+18.893 Y-24.008 C254.544 +G01 X+18.688 Y-23.945 C251.599 +G01 X+18.487 Y-23.873 C248.65 +G01 X+18.299 Y-23.794 Z-0.692 C245.827 +G01 X+18.046 Y-23.67 Z-0.693 C241.903 +G01 X+18.006 Y-23.651 B5.298 C241.352 +G01 X+17.952 Y-23.623 B5.301 C240.457 +G01 X+17.732 Y-23.486 B5.297 C236.949 +G01 X+17.551 Y-23.36 B5.296 C233.903 +G01 X+17.381 Y-23.229 C230.932 +G01 X+17.218 Y-23.09 C227.974 +G01 X+17.063 Y-22.943 C225.018 +G01 X+16.924 Y-22.797 Z-0.692 C222.259 +G01 X+16.867 Y-22.725 B5.289 C221.025 +G01 X+16.825 Y-22.645 Z-0.69 B5.263 C219.767 +G01 X+16.797 Y-22.558 Z-0.687 B5.22 C218.553 +G01 X+16.744 Y-22.308 Z-0.677 B5.084 C215.291 +G01 X+16.69 Y-22.059 Z-0.669 B4.964 C211.862 +G01 X+16.669 Y-21.989 Z-0.668 B4.94 C210.841 +G01 X+16.639 Y-21.922 Z-0.667 B4.931 C209.73 +G01 X+16.562 Y-21.784 B4.932 C207.411 +G01 X+16.475 Y-21.605 C204.458 +G01 X+16.397 Y-21.421 C201.506 +G01 X+16.329 Y-21.234 C198.553 +G01 X+16.27 Y-21.043 C195.601 +G01 X+16.221 Y-20.85 C192.648 +G01 X+16.183 Y-20.654 C189.696 +G01 X+16.154 Y-20.457 C186.744 +G01 X+16.136 Y-20.258 C183.791 +G01 X+16.127 Y-20.059 C180.838 +G01 X+16.13 Y-19.859 C177.886 +G01 X+16.142 Y-19.66 C174.933 +G01 X+16.165 Y-19.462 C171.981 +G01 X+16.197 Y-19.265 C169.028 +G01 X+16.24 Y-19.071 C166.076 +G01 X+16.293 Y-18.878 C163.13 +G01 X+16.356 Y-18.687 C160.162 +G01 X+16.428 Y-18.503 C157.245 +G01 X+16.51 Y-18.321 C154.303 +G01 X+16.601 Y-18.143 C151.352 +G01 X+16.701 Y-17.971 C148.412 +G01 X+16.81 Y-17.804 C145.46 +G01 X+16.927 Y-17.643 C142.507 +G01 X+17.052 Y-17.488 C139.555 +G01 X+17.186 Y-17.339 C136.602 +G01 X+17.326 Y-17.198 C133.65 +G01 X+17.474 Y-17.064 C130.697 +G01 X+17.629 Y-16.938 C127.745 +G01 X+17.789 Y-16.82 C124.792 +G01 X+17.956 Y-16.71 C121.84 +G01 X+18.128 Y-16.609 C118.887 +G01 X+18.305 Y-16.518 C115.935 +G01 X+18.487 Y-16.435 C112.983 +G01 X+18.672 Y-16.362 C110.03 +G01 X+18.861 Y-16.298 C107.077 +G01 X+19.053 Y-16.244 C104.125 +G01 X+19.248 Y-16.201 C101.172 +G01 X+19.444 Y-16.167 C98.22 +G01 X+19.642 Y-16.143 C95.267 +G01 X+19.841 Y-16.13 C92.315 +G01 X+20.041 Y-16.127 C89.362 +G01 X+20.24 Y-16.134 C86.41 +G01 X+20.439 Y-16.152 C83.458 +G01 X+20.636 Y-16.18 C80.505 +G01 X+20.832 Y-16.217 C77.552 +G01 X+21.026 Y-16.265 C74.602 +G01 X+21.217 Y-16.323 C71.659 +G01 X+21.405 Y-16.391 C68.71 +G01 X+21.588 Y-16.468 C65.774 +G01 X+21.768 Y-16.554 C62.831 +G01 X+21.943 Y-16.65 C59.889 +G01 X+22.113 Y-16.754 C56.936 +G01 X+22.277 Y-16.867 C53.984 +G01 X+22.436 Y-16.989 C51.031 +G01 X+22.587 Y-17.118 C48.079 +G01 X+22.732 Y-17.255 C45.126 +G01 X+22.87 Y-17.399 C42.173 +G01 X+23 Y-17.55 C39.221 +G01 X+23.122 Y-17.708 C36.268 +G01 X+23.236 Y-17.872 C33.316 +G01 X+23.341 Y-18.041 C30.364 +G01 X+23.438 Y-18.216 C27.411 +G01 X+23.525 Y-18.395 C24.459 +G01 X+23.603 Y-18.579 C21.506 +G01 X+23.671 Y-18.766 C18.553 +G01 X+23.73 Y-18.957 C15.601 +G01 X+23.779 Y-19.15 C12.648 +G01 X+23.817 Y-19.346 C9.696 +G01 X+23.846 Y-19.543 C6.744 +G01 X+23.864 Y-19.742 C3.791 +G01 X+23.873 Y-19.941 C0.838 +G01 X+23.87 Y-20.14 C357.886 +G01 X+23.858 Y-20.34 C354.933 +G01 X+23.835 Y-20.538 C351.981 +G01 X+23.803 Y-20.734 C349.028 +G01 X+23.76 Y-20.929 C346.076 +G01 X+23.707 Y-21.122 C343.13 +G01 X+23.644 Y-21.313 C340.162 +G01 X+23.572 Y-21.497 C337.245 +G01 X+23.49 Y-21.679 C334.303 +G01 X+23.399 Y-21.857 C331.352 +G01 X+23.299 Y-22.029 C328.412 +G01 X+23.19 Y-22.196 C325.46 +G01 X+23.073 Y-22.357 C322.507 +G01 X+22.948 Y-22.512 C319.555 +G01 X+22.814 Y-22.661 C316.602 +G01 X+22.674 Y-22.802 C313.65 +G01 X+22.526 Y-22.936 C310.697 +G01 X+22.371 Y-23.062 C307.745 +G01 X+22.211 Y-23.18 C304.792 +G01 X+22.044 Y-23.29 C301.84 +G01 X+21.872 Y-23.39 C298.887 +G01 X+21.695 Y-23.482 C295.935 +G01 X+21.513 Y-23.565 C292.983 +G01 X+21.328 Y-23.638 C290.03 +G01 X+21.139 Y-23.702 C287.077 +G01 X+20.947 Y-23.755 C284.125 +G01 X+20.752 Y-23.799 C281.172 +G01 X+20.556 Y-23.833 C278.22 +G01 X+20.358 Y-23.856 C275.267 +G01 X+20.159 Y-23.87 C272.315 +G01 X+19.959 Y-23.873 C269.362 +G01 X+19.76 Y-23.865 C266.41 +G01 X+19.561 Y-23.848 C263.458 +G01 X+19.364 Y-23.82 C260.505 +G01 X+19.168 Y-23.782 C257.552 +G01 X+18.974 Y-23.735 C254.602 +G01 X+18.783 Y-23.677 C251.659 +G01 X+18.595 Y-23.609 C248.711 +G01 X+18.422 Y-23.537 C245.908 +G01 X+18.095 Y-23.377 B4.937 C240.544 +G01 X+17.893 Y-23.251 B4.933 C237.039 +G01 X+17.724 Y-23.134 B4.932 C234.002 +G01 X+17.565 Y-23.011 C231.034 +G01 X+17.413 Y-22.882 C228.079 +G01 X+17.268 Y-22.745 C225.126 +G01 X+17.122 Y-22.591 C221.976 +G01 X+17.073 Y-22.524 Z-0.666 B4.922 C220.763 +G01 X+17.036 Y-22.45 Z-0.665 B4.896 C219.575 +G01 X+17.012 Y-22.37 Z-0.662 B4.857 C218.403 +G01 X+16.956 Y-22.11 Z-0.653 B4.717 C214.71 +G01 X+16.9 Y-21.85 Z-0.645 B4.598 C210.81 +G01 X+16.879 Y-21.779 Z-0.644 B4.576 C209.677 +G01 X+16.848 Y-21.713 Z-0.643 B4.569 C208.498 +G01 X+16.818 Y-21.658 B4.57 C207.472 +G01 X+16.736 Y-21.492 C204.524 +G01 X+16.664 Y-21.322 C201.575 +G01 X+16.6 Y-21.148 C198.626 +G01 X+16.546 Y-20.972 C195.677 +G01 X+16.5 Y-20.793 C192.728 +G01 X+16.464 Y-20.611 C189.78 +G01 X+16.437 Y-20.428 C186.831 +G01 X+16.42 Y-20.244 C183.882 +G01 X+16.412 Y-20.06 C180.933 +G01 X+16.414 Y-19.875 C177.984 +G01 X+16.425 Y-19.691 C175.035 +G01 X+16.446 Y-19.507 C172.086 +G01 X+16.476 Y-19.325 C169.138 +G01 X+16.515 Y-19.144 C166.189 +G01 X+16.564 Y-18.966 C163.239 +G01 X+16.622 Y-18.79 C160.291 +G01 X+16.688 Y-18.618 C157.342 +G01 X+16.764 Y-18.449 C154.393 +G01 X+16.848 Y-18.285 C151.444 +G01 X+16.941 Y-18.125 C148.495 +G01 X+17.041 Y-17.97 C145.546 +G01 X+17.15 Y-17.82 C142.585 +G01 X+17.266 Y-17.676 C139.621 +G01 X+17.389 Y-17.539 C136.657 +G01 X+17.519 Y-17.408 C133.694 +G01 X+17.656 Y-17.283 C130.742 +G01 X+17.799 Y-17.166 C127.794 +G01 X+17.947 Y-17.057 C124.845 +G01 X+18.102 Y-16.955 C121.896 +G01 X+18.261 Y-16.861 C118.947 +G01 X+18.425 Y-16.776 C115.998 +G01 X+18.593 Y-16.699 C113.049 +G01 X+18.765 Y-16.631 C110.1 +G01 X+18.94 Y-16.572 C107.152 +G01 X+19.118 Y-16.522 C104.203 +G01 X+19.298 Y-16.481 C101.254 +G01 X+19.48 Y-16.45 C98.305 +G01 X+19.663 Y-16.427 C95.356 +G01 X+19.848 Y-16.415 C92.407 +G01 X+20.032 Y-16.412 C89.459 +G01 X+20.217 Y-16.418 C86.51 +G01 X+20.401 Y-16.434 C83.56 +G01 X+20.584 Y-16.46 C80.612 +G01 X+20.766 Y-16.494 C77.663 +G01 X+20.945 Y-16.538 C74.714 +G01 X+21.122 Y-16.592 C71.765 +G01 X+21.296 Y-16.654 C68.816 +G01 X+21.467 Y-16.725 C65.868 +G01 X+21.633 Y-16.805 C62.919 +G01 X+21.735 Y-16.86 B4.569 C61.352 +G01 X+21.796 Y-16.893 B4.57 C59.97 +G01 X+21.954 Y-16.991 C56.997 +G01 X+22.105 Y-17.094 C54.067 +G01 X+22.252 Y-17.207 C51.104 +G01 X+22.393 Y-17.326 C48.139 +G01 X+22.528 Y-17.453 C45.175 +G01 X+22.655 Y-17.586 C42.217 +G01 X+22.777 Y-17.727 C39.254 +G01 X+22.889 Y-17.872 C36.319 +G01 X+22.995 Y-18.024 C33.37 +G01 X+23.093 Y-18.181 C30.421 +G01 X+23.182 Y-18.342 C27.472 +G01 X+23.264 Y-18.508 C24.524 +G01 X+23.336 Y-18.678 C21.575 +G01 X+23.4 Y-18.852 C18.626 +G01 X+23.454 Y-19.028 C15.677 +G01 X+23.5 Y-19.207 C12.728 +G01 X+23.536 Y-19.389 C9.78 +G01 X+23.563 Y-19.571 C6.831 +G01 X+23.58 Y-19.755 C3.882 +G01 X+23.588 Y-19.94 C0.933 +G01 X+23.586 Y-20.125 C357.984 +G01 X+23.575 Y-20.309 C355.035 +G01 X+23.554 Y-20.493 C352.086 +G01 X+23.524 Y-20.675 C349.138 +G01 X+23.485 Y-20.856 C346.189 +G01 X+23.436 Y-21.034 C343.239 +G01 X+23.378 Y-21.209 C340.291 +G01 X+23.312 Y-21.382 C337.342 +G01 X+23.236 Y-21.55 C334.393 +G01 X+23.152 Y-21.715 C331.444 +G01 X+23.059 Y-21.875 C328.495 +G01 X+22.959 Y-22.03 C325.546 +G01 X+22.85 Y-22.18 C322.585 +G01 X+22.734 Y-22.323 C319.621 +G01 X+22.611 Y-22.461 C316.657 +G01 X+22.481 Y-22.592 C313.694 +G01 X+22.344 Y-22.717 C310.742 +G01 X+22.201 Y-22.834 C307.794 +G01 X+22.053 Y-22.943 C304.845 +G01 X+21.898 Y-23.045 C301.896 +G01 X+21.739 Y-23.139 C298.947 +G01 X+21.575 Y-23.224 C295.998 +G01 X+21.407 Y-23.301 C293.049 +G01 X+21.235 Y-23.369 C290.1 +G01 X+21.06 Y-23.428 C287.152 +G01 X+20.882 Y-23.478 C284.203 +G01 X+20.702 Y-23.519 C281.254 +G01 X+20.52 Y-23.55 C278.305 +G01 X+20.337 Y-23.572 C275.356 +G01 X+20.152 Y-23.585 C272.407 +G01 X+19.968 Y-23.588 C269.459 +G01 X+19.783 Y-23.582 C266.51 +G01 X+19.599 Y-23.566 C263.56 +G01 X+19.416 Y-23.54 C260.612 +G01 X+19.234 Y-23.506 C257.663 +G01 X+19.055 Y-23.462 C254.714 +G01 X+18.878 Y-23.408 C251.765 +G01 X+18.704 Y-23.346 C248.81 +G01 X+18.544 Y-23.28 C246.052 +G01 X+18.345 Y-23.183 B4.569 C242.478 +G01 X+18.246 Y-23.134 Z-0.644 B4.575 C241.352 +G01 X+18.053 Y-23.015 Z-0.643 B4.571 C237.15 +G01 X+17.896 Y-22.907 B4.57 C234.094 +G01 X+17.748 Y-22.794 C231.108 +G01 X+17.607 Y-22.674 C228.14 +G01 X+17.472 Y-22.547 C225.175 +G01 X+17.336 Y-22.404 C222.02 +G01 X+17.287 Y-22.336 B4.56 C220.689 +G01 X+17.25 Y-22.262 Z-0.641 B4.535 C219.409 +G01 X+17.226 Y-22.183 Z-0.639 B4.495 C218.192 +G01 X+17.167 Y-21.91 Z-0.63 B4.351 C213.98 +G01 X+17.108 Y-21.637 Z-0.623 B4.231 C209.507 +G01 X+17.092 Y-21.579 Z-0.622 B4.214 C208.433 +G01 X+17.068 Y-21.522 Z-0.621 B4.206 C207.353 +G01 X+16.998 Y-21.378 B4.207 C204.588 +G01 X+16.931 Y-21.222 C201.628 +G01 X+16.869 Y-21.052 B4.206 C198.481 +G01 X+16.819 Y-20.892 C195.578 +G01 X+16.778 Y-20.73 B4.207 C192.674 +G01 X+16.746 Y-20.568 C189.808 +G01 X+16.721 Y-20.4 C186.863 +G01 X+16.705 Y-20.23 C183.917 +G01 X+16.697 Y-20.061 C180.972 +G01 X+16.698 Y-19.89 C178.027 +G01 X+16.708 Y-19.721 C175.082 +G01 X+16.727 Y-19.552 C172.136 +G01 X+16.754 Y-19.384 C169.191 +G01 X+16.791 Y-19.217 C166.246 +G01 X+16.835 Y-19.053 C163.301 +G01 X+16.888 Y-18.892 C160.355 +G01 X+16.949 Y-18.733 C157.41 +G01 X+17.018 Y-18.577 C154.465 +G01 X+17.096 Y-18.426 C151.52 +G01 X+17.181 Y-18.278 B4.206 C148.575 +G01 X+17.273 Y-18.136 C145.629 +G01 X+17.372 Y-17.998 C142.684 +G01 X+17.479 Y-17.865 C139.739 +G01 X+17.592 Y-17.738 C136.782 +G01 X+17.712 Y-17.617 C133.822 +G01 X+17.838 Y-17.502 B4.207 C130.863 +G01 X+17.969 Y-17.394 C127.904 +G01 X+18.106 Y-17.293 C124.945 +G01 X+18.248 Y-17.199 C121.986 +G01 X+18.394 Y-17.113 C119.027 +G01 X+18.545 Y-17.034 C116.067 +G01 X+18.7 Y-16.963 C113.108 +G01 X+18.869 Y-16.896 B4.206 C109.932 +G01 X+19.028 Y-16.843 C107.029 +G01 X+19.189 Y-16.798 B4.207 C104.126 +G01 X+19.348 Y-16.761 C101.281 +G01 X+19.517 Y-16.732 C98.32 +G01 X+19.685 Y-16.711 C95.39 +G01 X+19.854 Y-16.7 C92.445 +G01 X+20.024 Y-16.696 C89.499 +G01 X+20.194 Y-16.702 C86.554 +G01 X+20.364 Y-16.717 C83.609 +G01 X+20.533 Y-16.74 C80.664 +G01 X+20.7 Y-16.771 C77.718 +G01 X+20.865 Y-16.812 C74.773 +G01 X+21.028 Y-16.86 C71.828 +G01 X+21.188 Y-16.917 C68.883 +G01 X+21.345 Y-16.983 C65.938 +G01 X+21.499 Y-17.056 C62.992 +G01 X+21.544 Y-17.081 B4.206 C62.028 +G01 X+21.618 Y-17.121 B4.205 C61.352 +G01 X+21.648 Y-17.137 B4.207 C60.047 +G01 X+21.794 Y-17.226 C57.102 +G01 X+21.934 Y-17.322 B4.206 C54.156 +G01 X+22.07 Y-17.426 C51.191 +G01 X+22.199 Y-17.535 C48.261 +G01 X+22.323 Y-17.651 C45.302 +G01 X+22.441 Y-17.774 C42.343 +G01 X+22.552 Y-17.903 B4.207 C39.384 +G01 X+22.657 Y-18.037 C36.424 +G01 X+22.754 Y-18.176 C33.465 +G01 X+22.845 Y-18.32 C30.506 +G01 X+22.927 Y-18.469 C27.547 +G01 X+23.002 Y-18.622 C24.588 +G01 X+23.069 Y-18.778 C21.628 +G01 X+23.131 Y-18.948 B4.206 C18.481 +G01 X+23.181 Y-19.108 C15.578 +G01 X+23.222 Y-19.27 B4.207 C12.674 +G01 X+23.254 Y-19.432 C9.808 +G01 X+23.279 Y-19.6 C6.863 +G01 X+23.295 Y-19.769 C3.917 +G01 X+23.303 Y-19.939 C0.972 +G01 X+23.302 Y-20.109 C358.027 +G01 X+23.292 Y-20.279 C355.082 +G01 X+23.273 Y-20.448 C352.136 +G01 X+23.246 Y-20.616 C349.191 +G01 X+23.209 Y-20.782 C346.246 +G01 X+23.165 Y-20.947 C343.301 +G01 X+23.112 Y-21.108 C340.355 +G01 X+23.051 Y-21.267 C337.41 +G01 X+22.982 Y-21.422 C334.465 +G01 X+22.904 Y-21.574 C331.52 +G01 X+22.819 Y-21.721 B4.206 C328.575 +G01 X+22.727 Y-21.864 C325.629 +G01 X+22.628 Y-22.002 C322.684 +G01 X+22.521 Y-22.135 C319.739 +G01 X+22.408 Y-22.262 C316.782 +G01 X+22.288 Y-22.383 C313.822 +G01 X+22.162 Y-22.497 B4.207 C310.863 +G01 X+22.031 Y-22.605 C307.904 +G01 X+21.894 Y-22.706 C304.945 +G01 X+21.752 Y-22.8 C301.986 +G01 X+21.606 Y-22.887 C299.027 +G01 X+21.455 Y-22.966 C296.067 +G01 X+21.3 Y-23.037 C293.108 +G01 X+21.131 Y-23.103 B4.206 C289.932 +G01 X+20.972 Y-23.157 C287.029 +G01 X+20.811 Y-23.202 B4.207 C284.126 +G01 X+20.652 Y-23.239 C281.28 +G01 X+20.483 Y-23.268 C278.32 +G01 X+20.315 Y-23.288 C275.39 +G01 X+20.146 Y-23.3 C272.445 +G01 X+19.976 Y-23.303 C269.499 +G01 X+19.806 Y-23.298 C266.554 +G01 X+19.636 Y-23.283 C263.609 +G01 X+19.467 Y-23.26 C260.664 +G01 X+19.3 Y-23.229 C257.718 +G01 X+19.135 Y-23.188 C254.773 +G01 X+18.972 Y-23.139 C251.828 +G01 X+18.811 Y-23.082 C248.875 +G01 X+18.667 Y-23.022 B4.206 C246.142 +G01 X+18.455 Y-22.92 C242.029 +G01 X+18.415 Y-22.9 Z-0.622 B4.208 C241.352 +G01 X+18.371 Y-22.878 B4.211 C240.417 +G01 X+18.214 Y-22.78 B4.208 C237.244 +G01 X+18.067 Y-22.679 Z-0.621 B4.207 C234.183 +G01 X+17.93 Y-22.574 B4.206 C231.191 +G01 X+17.801 Y-22.465 C228.262 +G01 X+17.677 Y-22.349 C225.302 +G01 X+17.551 Y-22.217 C222.107 +G01 X+17.502 Y-22.15 B4.196 C220.659 +G01 X+17.464 Y-22.075 Z-0.619 B4.172 C219.242 +G01 X+17.44 Y-21.994 Z-0.617 B4.132 C217.888 +G01 X+17.377 Y-21.702 Z-0.609 B3.981 C212.949 +G01 X+17.314 Y-21.409 Z-0.602 B3.862 C207.663 +G01 X+17.297 Y-21.35 B3.847 C206.539 +G01 X+17.273 Y-21.294 Z-0.601 B3.842 C205.321 +G01 X+17.259 Y-21.264 B3.843 C204.739 +G01 X+17.197 Y-21.121 C201.785 +G01 X+17.143 Y-20.976 C198.83 +G01 X+17.097 Y-20.827 C195.876 +G01 X+17.058 Y-20.677 C192.922 +G01 X+17.027 Y-20.524 C189.967 +G01 X+17.004 Y-20.371 C187.013 +G01 X+16.989 Y-20.216 C184.059 +G01 X+16.982 Y-20.061 C181.104 +G01 X+16.983 Y-19.905 C178.15 +G01 X+16.992 Y-19.75 C175.195 +G01 X+17.009 Y-19.596 C172.241 +G01 X+17.033 Y-19.442 C169.286 +G01 X+17.066 Y-19.29 C166.333 +G01 X+17.107 Y-19.14 C163.378 +G01 X+17.155 Y-18.992 C160.423 +G01 X+17.21 Y-18.847 C157.472 +G01 X+17.273 Y-18.705 C154.529 +G01 X+17.344 Y-18.566 C151.579 +G01 X+17.421 Y-18.431 C148.646 +G01 X+17.505 Y-18.301 C145.705 +G01 X+17.596 Y-18.175 C142.763 +G01 X+17.693 Y-18.053 C139.821 +G01 X+17.796 Y-17.937 C136.88 +G01 X+17.906 Y-17.826 C133.932 +G01 X+18.02 Y-17.721 C130.988 +G01 X+18.14 Y-17.623 C128.033 +G01 X+18.265 Y-17.53 C125.079 +G01 X+18.394 Y-17.444 C122.125 +G01 X+18.528 Y-17.365 C119.171 +G01 X+18.666 Y-17.292 C116.216 +G01 X+18.807 Y-17.227 C113.262 +G01 X+18.951 Y-17.169 C110.307 +G01 X+19.098 Y-17.119 C107.353 +G01 X+19.248 Y-17.077 C104.399 +G01 X+19.399 Y-17.042 C101.444 +G01 X+19.552 Y-17.015 C98.49 +G01 X+19.706 Y-16.996 C95.536 +G01 X+19.862 Y-16.985 C92.582 +G01 X+20.017 Y-16.981 C89.627 +G01 X+20.172 Y-16.986 C86.673 +G01 X+20.327 Y-16.999 C83.718 +G01 X+20.481 Y-17.02 C80.764 +G01 X+20.634 Y-17.049 C77.81 +G01 X+20.785 Y-17.085 C74.855 +G01 X+20.934 Y-17.13 C71.901 +G01 X+21.081 Y-17.181 C68.947 +G01 X+21.224 Y-17.241 C66. +G01 X+21.366 Y-17.308 C63.031 +G01 X+21.502 Y-17.381 C60.117 +G01 X+21.634 Y-17.462 C57.176 +G01 X+21.763 Y-17.55 C54.234 +G01 X+21.887 Y-17.644 C51.292 +G01 X+22.005 Y-17.744 C48.351 +G01 X+22.12 Y-17.851 C45.385 +G01 X+22.227 Y-17.962 C42.465 +G01 X+22.329 Y-18.079 C39.511 +G01 X+22.425 Y-18.202 C36.556 +G01 X+22.514 Y-18.329 C33.602 +G01 X+22.597 Y-18.461 C30.647 +G01 X+22.672 Y-18.596 C27.693 +G01 X+22.741 Y-18.736 C24.739 +G01 X+22.803 Y-18.878 C21.785 +G01 X+22.857 Y-19.024 C18.83 +G01 X+22.903 Y-19.173 C15.876 +G01 X+22.942 Y-19.323 C12.922 +G01 X+22.973 Y-19.475 C9.967 +G01 X+22.996 Y-19.629 C7.013 +G01 X+23.011 Y-19.784 C4.059 +G01 X+23.018 Y-19.939 C1.104 +G01 X+23.017 Y-20.095 C358.15 +G01 X+23.008 Y-20.25 C355.195 +G01 X+22.991 Y-20.404 C352.241 +G01 X+22.967 Y-20.558 C349.286 +G01 X+22.934 Y-20.71 C346.333 +G01 X+22.894 Y-20.86 C343.378 +G01 X+22.845 Y-21.008 C340.423 +G01 X+22.79 Y-21.153 C337.472 +G01 X+22.727 Y-21.295 C334.529 +G01 X+22.656 Y-21.434 C331.579 +G01 X+22.579 Y-21.568 C328.646 +G01 X+22.495 Y-21.699 C325.705 +G01 X+22.404 Y-21.825 C322.763 +G01 X+22.307 Y-21.947 C319.821 +G01 X+22.204 Y-22.063 C316.88 +G01 X+22.094 Y-22.174 C313.932 +G01 X+21.98 Y-22.278 C310.988 +G01 X+21.86 Y-22.377 C308.033 +G01 X+21.735 Y-22.47 C305.079 +G01 X+21.606 Y-22.556 C302.125 +G01 X+21.472 Y-22.635 C299.171 +G01 X+21.334 Y-22.708 C296.216 +G01 X+21.193 Y-22.773 C293.262 +G01 X+21.049 Y-22.83 C290.307 +G01 X+20.902 Y-22.881 C287.353 +G01 X+20.752 Y-22.923 C284.399 +G01 X+20.601 Y-22.958 C281.444 +G01 X+20.448 Y-22.985 C278.49 +G01 X+20.294 Y-23.004 C275.536 +G01 X+20.138 Y-23.015 C272.582 +G01 X+19.983 Y-23.018 C269.627 +G01 X+19.828 Y-23.014 C266.673 +G01 X+19.673 Y-23.001 C263.718 +G01 X+19.519 Y-22.98 C260.764 +G01 X+19.366 Y-22.951 C257.81 +G01 X+19.215 Y-22.915 C254.855 +G01 X+19.066 Y-22.87 C251.901 +G01 X+18.919 Y-22.818 C248.934 +G01 X+18.789 Y-22.765 C246.293 +G01 X+18.566 Y-22.657 B3.844 C241.352 +G01 X+18.522 Y-22.636 Z-0.602 B3.847 +G01 X+18.374 Y-22.544 Z-0.601 B3.845 C237.34 +G01 X+18.239 Y-22.452 B3.843 C234.265 +G01 X+18.114 Y-22.357 C231.297 +G01 X+17.995 Y-22.256 C228.351 +G01 X+17.88 Y-22.149 C225.385 +G01 X+17.763 Y-22.026 C222.14 +G01 X+17.714 Y-21.959 B3.833 C220.568 +G01 X+17.678 Y-21.885 Z-0.6 B3.808 C219.029 +G01 X+17.653 Y-21.806 Z-0.598 B3.77 C217.551 +G01 X+17.584 Y-21.484 Z-0.589 B3.61 C211.534 +G01 X+17.515 Y-21.161 Z-0.584 B3.493 C205.039 +G01 X+17.485 Y-21.068 Z-0.583 B3.48 C202.985 +G01 X+17.464 Y-21.021 B3.481 C201.889 +G01 X+17.415 Y-20.889 C198.939 +G01 X+17.373 Y-20.754 C195.99 +G01 X+17.337 Y-20.618 C193.04 +G01 X+17.309 Y-20.48 C190.09 +G01 X+17.288 Y-20.341 C187.141 +G01 X+17.274 Y-20.201 C184.192 +G01 X+17.267 Y-20.06 C181.242 +G01 X+17.268 Y-19.92 C178.293 +G01 X+17.275 Y-19.779 C175.343 +G01 X+17.29 Y-19.639 C172.394 +G01 X+17.312 Y-19.5 C169.444 +G01 X+17.342 Y-19.362 C166.495 +G01 X+17.378 Y-19.226 C163.545 +G01 X+17.421 Y-19.092 C160.596 +G01 X+17.472 Y-18.961 C157.647 +G01 X+17.528 Y-18.832 C154.697 +G01 X+17.592 Y-18.706 C151.747 +G01 X+17.662 Y-18.584 C148.798 +G01 X+17.738 Y-18.466 C145.848 +G01 X+17.819 Y-18.351 C142.899 +G01 X+17.907 Y-18.241 C139.949 +G01 X+18.001 Y-18.136 C136.999 +G01 X+18.099 Y-18.035 C134.05 +G01 X+18.203 Y-17.94 C131.101 +G01 X+18.312 Y-17.85 C128.126 +G01 X+18.424 Y-17.766 C125.193 +G01 X+18.541 Y-17.688 C122.22 +G01 X+18.664 Y-17.615 C119.226 +G01 X+18.787 Y-17.55 C116.313 +G01 X+18.914 Y-17.491 C113.363 +G01 X+19.045 Y-17.438 C110.414 +G01 X+19.178 Y-17.393 C107.465 +G01 X+19.313 Y-17.354 C104.515 +G01 X+19.451 Y-17.322 C101.565 +G01 X+19.589 Y-17.297 C98.616 +G01 X+19.729 Y-17.28 C95.666 +G01 X+19.869 Y-17.269 C92.717 +G01 X+20.01 Y-17.266 C89.768 +G01 X+20.151 Y-17.27 C86.817 +G01 X+20.291 Y-17.282 C83.868 +G01 X+20.431 Y-17.3 C80.919 +G01 X+20.569 Y-17.326 C77.969 +G01 X+20.706 Y-17.359 C75.02 +G01 X+20.841 Y-17.399 C72.07 +G01 X+20.974 Y-17.446 C69.121 +G01 X+21.104 Y-17.499 C66.171 +G01 X+21.231 Y-17.559 C63.222 +G01 X+21.355 Y-17.626 C60.273 +G01 X+21.476 Y-17.699 C57.323 +G01 X+21.592 Y-17.778 C54.373 +G01 X+21.704 Y-17.863 C51.424 +G01 X+21.812 Y-17.953 C48.474 +G01 X+21.915 Y-18.049 C45.525 +G01 X+22.013 Y-18.15 C42.575 +G01 X+22.105 Y-18.256 C39.626 +G01 X+22.193 Y-18.367 C36.674 +G01 X+22.274 Y-18.482 C33.706 +G01 X+22.349 Y-18.601 C30.737 +G01 X+22.418 Y-18.725 C27.774 +G01 X+22.48 Y-18.85 C24.838 +G01 X+22.536 Y-18.979 C21.889 +G01 X+22.585 Y-19.111 C18.939 +G01 X+22.628 Y-19.245 C15.99 +G01 X+22.663 Y-19.382 C13.04 +G01 X+22.691 Y-19.52 C10.09 +G01 X+22.712 Y-19.659 C7.141 +G01 X+22.726 Y-19.799 C4.192 +G01 X+22.733 Y-19.939 C1.242 +G01 X+22.732 Y-20.08 C358.293 +G01 X+22.725 Y-20.221 C355.343 +G01 X+22.71 Y-20.361 C352.394 +G01 X+22.688 Y-20.5 C349.444 +G01 X+22.658 Y-20.637 C346.495 +G01 X+22.622 Y-20.773 C343.545 +G01 X+22.579 Y-20.907 C340.596 +G01 X+22.529 Y-21.039 C337.647 +G01 X+22.472 Y-21.168 C334.697 +G01 X+22.408 Y-21.293 C331.747 +G01 X+22.338 Y-21.416 C328.798 +G01 X+22.263 Y-21.534 C325.848 +G01 X+22.181 Y-21.649 C322.899 +G01 X+22.093 Y-21.759 C319.949 +G01 X+21.999 Y-21.864 C316.999 +G01 X+21.901 Y-21.965 C314.05 +G01 X+21.797 Y-22.06 C311.101 +G01 X+21.688 Y-22.15 C308.126 +G01 X+21.576 Y-22.234 C305.193 +G01 X+21.459 Y-22.312 C302.22 +G01 X+21.336 Y-22.385 C299.226 +G01 X+21.213 Y-22.45 C296.313 +G01 X+21.086 Y-22.509 C293.363 +G01 X+20.955 Y-22.561 C290.414 +G01 X+20.822 Y-22.607 C287.465 +G01 X+20.687 Y-22.646 C284.515 +G01 X+20.549 Y-22.678 C281.565 +G01 X+20.411 Y-22.703 C278.616 +G01 X+20.271 Y-22.72 C275.666 +G01 X+20.131 Y-22.73 C272.717 +G01 X+19.99 Y-22.734 C269.768 +G01 X+19.849 Y-22.729 C266.817 +G01 X+19.709 Y-22.718 C263.868 +G01 X+19.569 Y-22.699 C260.919 +G01 X+19.431 Y-22.674 C257.969 +G01 X+19.294 Y-22.641 C255.02 +G01 X+19.159 Y-22.601 C252.071 +G01 X+19.026 Y-22.554 C249.104 +G01 X+18.911 Y-22.507 C246.504 +G01 X+18.689 Y-22.4 B3.483 C241.352 +G01 X+18.646 Y-22.379 B3.485 C240.34 +G01 X+18.534 Y-22.308 B3.483 C237.559 +G01 X+18.41 Y-22.224 B3.481 C234.421 +G01 X+18.296 Y-22.138 C231.432 +G01 X+18.188 Y-22.047 C228.476 +G01 X+18.085 Y-21.951 C225.525 +G01 X+17.974 Y-21.835 C222.131 +G01 X+17.924 Y-21.767 B3.471 C220.379 +G01 X+17.887 Y-21.692 Z-0.582 B3.447 C218.656 +G01 X+17.862 Y-21.611 Z-0.58 B3.409 C216.989 +G01 X+17.778 Y-21.224 Z-0.572 B3.229 C208.807 +G01 X+17.695 Y-20.837 Z-0.567 B3.122 C199.87 +G01 X+17.683 Y-20.791 B3.117 C198.725 +G01 X+17.648 Y-20.681 B3.118 C196.086 +G01 X+17.616 Y-20.559 C193.121 +G01 X+17.59 Y-20.436 C190.155 +G01 X+17.571 Y-20.311 C187.19 +G01 X+17.558 Y-20.185 C184.224 +G01 X+17.552 Y-20.059 C181.263 +G01 Y-19.932 C178.29 +G01 X+17.559 Y-19.807 C175.373 +G01 X+17.572 Y-19.682 C172.429 +G01 X+17.592 Y-19.557 C169.485 +G01 X+17.617 Y-19.434 C166.54 +G01 X+17.65 Y-19.312 C163.595 +G01 X+17.688 Y-19.192 C160.65 +G01 X+17.733 Y-19.074 C157.706 +G01 X+17.784 Y-18.959 C154.761 +G01 X+17.84 Y-18.846 C151.816 +G01 X+17.902 Y-18.736 C148.871 +G01 X+17.97 Y-18.63 C145.927 +G01 X+18.043 Y-18.527 C142.982 +G01 X+18.122 Y-18.429 C140.038 +G01 X+18.205 Y-18.334 C137.092 +G01 X+18.293 Y-18.244 C134.148 +G01 X+18.386 Y-18.158 C131.203 +G01 X+18.483 Y-18.078 C128.258 +G01 X+18.584 Y-18.002 C125.314 +G01 X+18.689 Y-17.932 C122.369 +G01 X+18.797 Y-17.867 C119.417 +G01 X+18.908 Y-17.808 C116.464 +G01 X+19.023 Y-17.755 C113.499 +G01 X+19.139 Y-17.707 C110.534 +G01 X+19.259 Y-17.666 C107.568 +G01 X+19.38 Y-17.631 C104.603 +G01 X+19.503 Y-17.602 C101.638 +G01 X+19.627 Y-17.58 C98.673 +G01 X+19.752 Y-17.564 C95.707 +G01 X+19.877 Y-17.554 C92.741 +G01 X+20.004 Y-17.551 C89.79 +G01 X+20.13 Y-17.555 C86.839 +G01 X+20.255 Y-17.564 C83.902 +G01 X+20.38 Y-17.581 C80.957 +G01 X+20.504 Y-17.604 C78.012 +G01 X+20.627 Y-17.633 C75.067 +G01 X+20.748 Y-17.668 C72.123 +G01 X+20.867 Y-17.71 C69.177 +G01 X+20.984 Y-17.757 C66.233 +G01 X+21.098 Y-17.811 C63.288 +G01 X+21.139 Y-17.833 B3.117 C62.161 +G01 X+21.209 Y-17.871 C61.352 +G01 X+21.317 Y-17.936 B3.118 C57.4 +G01 X+21.422 Y-18.006 C54.455 +G01 X+21.522 Y-18.082 C51.51 +G01 X+21.619 Y-18.163 C48.565 +G01 X+21.712 Y-18.249 C45.62 +G01 X+21.8 Y-18.339 C42.676 +G01 X+21.883 Y-18.434 C39.73 +G01 X+21.961 Y-18.533 C36.787 +G01 X+22.034 Y-18.636 C33.842 +G01 X+22.102 Y-18.744 C30.868 +G01 X+22.163 Y-18.852 C27.948 +G01 X+22.219 Y-18.965 C24.981 +G01 X+22.27 Y-19.081 C22.017 +G01 X+22.314 Y-19.199 C19.051 +G01 X+22.352 Y-19.319 C16.086 +G01 X+22.384 Y-19.441 C13.121 +G01 X+22.41 Y-19.564 C10.155 +G01 X+22.429 Y-19.689 C7.19 +G01 X+22.442 Y-19.814 C4.224 +G01 X+22.448 Y-19.94 C1.263 +G01 Y-20.068 C358.29 +G01 X+22.441 Y-20.192 C355.373 +G01 X+22.428 Y-20.318 C352.429 +G01 X+22.408 Y-20.442 C349.485 +G01 X+22.383 Y-20.566 C346.54 +G01 X+22.35 Y-20.688 C343.595 +G01 X+22.312 Y-20.808 C340.65 +G01 X+22.267 Y-20.926 C337.706 +G01 X+22.216 Y-21.041 C334.761 +G01 X+22.16 Y-21.154 C331.816 +G01 X+22.098 Y-21.264 C328.871 +G01 X+22.03 Y-21.37 C325.927 +G01 X+21.957 Y-21.473 C322.982 +G01 X+21.878 Y-21.571 C320.038 +G01 X+21.795 Y-21.666 C317.092 +G01 X+21.707 Y-21.756 C314.148 +G01 X+21.614 Y-21.842 C311.203 +G01 X+21.517 Y-21.922 C308.258 +G01 X+21.416 Y-21.998 C305.314 +G01 X+21.311 Y-22.068 C302.369 +G01 X+21.203 Y-22.133 C299.417 +G01 X+21.092 Y-22.192 C296.464 +G01 X+20.977 Y-22.245 C293.499 +G01 X+20.861 Y-22.293 C290.534 +G01 X+20.741 Y-22.334 C287.568 +G01 X+20.62 Y-22.369 C284.603 +G01 X+20.497 Y-22.398 C281.638 +G01 X+20.373 Y-22.42 C278.673 +G01 X+20.248 Y-22.436 C275.707 +G01 X+20.123 Y-22.446 C272.741 +G01 X+19.996 Y-22.449 C269.79 +G01 X+19.87 Y-22.445 C266.839 +G01 X+19.745 Y-22.435 C263.902 +G01 X+19.62 Y-22.419 C260.957 +G01 X+19.496 Y-22.396 C258.012 +G01 X+19.373 Y-22.367 C255.067 +G01 X+19.252 Y-22.332 C252.123 +G01 X+19.132 Y-22.29 C249.157 +G01 X+19.033 Y-22.249 B3.117 C246.607 +G01 X+18.861 Y-22.167 C242.161 +G01 X+18.797 Y-22.136 B3.121 C241.352 +G01 X+18.693 Y-22.072 B3.12 C237.666 +G01 X+18.58 Y-21.996 B3.118 C234.512 +G01 X+18.478 Y-21.918 C231.521 +G01 X+18.381 Y-21.837 C228.567 +G01 X+18.288 Y-21.751 C225.62 +G01 X+18.185 Y-21.643 B3.117 C222.067 +G01 X+18.173 Y-21.623 Z-0.566 B3.112 C221.533 +G01 X+18.168 Y-21.599 B3.097 C221.104 +G01 X+18.158 Y-21.368 Z-0.559 B2.92 C216.53 +G01 X+18.148 Y-21.136 Z-0.552 B2.765 C211.406 +G01 X+18.139 Y-21.104 B2.754 C210.647 +G01 X+18.091 Y-21.019 C208.064 +G01 X+18.041 Y-20.919 C205.123 +G01 X+17.996 Y-20.816 C202.159 +G01 X+17.957 Y-20.713 C199.24 +G01 X+17.923 Y-20.607 C196.282 +G01 X+17.895 Y-20.499 C193.323 +G01 X+17.872 Y-20.39 C190.365 +G01 X+17.854 Y-20.28 C187.407 +G01 X+17.843 Y-20.169 C184.449 +G01 X+17.837 Y-20.058 C181.492 +G01 Y-19.947 B2.755 C178.533 +G01 X+17.843 Y-19.835 C175.575 +G01 X+17.854 Y-19.724 C172.616 +G01 X+17.871 Y-19.614 C169.658 +G01 X+17.894 Y-19.505 C166.701 +G01 X+17.926 Y-19.383 B2.754 C163.322 +G01 X+17.96 Y-19.279 C160.419 +G01 X+17.999 Y-19.176 C157.516 +G01 X+18.044 Y-19.076 C154.613 +G01 X+18.093 Y-18.978 C151.71 +G01 X+18.157 Y-18.868 C148.448 +G01 X+18.203 Y-18.794 B2.755 C145.993 +G01 X+18.268 Y-18.703 C143.052 +G01 X+18.338 Y-18.615 B2.754 C140.097 +G01 X+18.41 Y-18.532 B2.755 C137.173 +G01 X+18.488 Y-18.452 C134.233 +G01 X+18.57 Y-18.376 C131.294 +G01 X+18.655 Y-18.305 B2.754 C128.354 +G01 X+18.744 Y-18.238 B2.755 C125.414 +G01 X+18.837 Y-18.175 B2.754 C122.473 +G01 X+18.932 Y-18.118 C119.534 +G01 X+19.031 Y-18.065 C116.594 +G01 X+19.133 Y-18.017 C113.61 +G01 X+19.235 Y-17.976 C110.707 +G01 X+19.34 Y-17.939 C107.762 +G01 X+19.447 Y-17.908 C104.802 +G01 X+19.555 Y-17.882 C101.845 +G01 X+19.665 Y-17.862 C98.886 +G01 X+19.775 Y-17.848 C95.928 +G01 X+19.886 Y-17.839 C92.97 +G01 X+19.998 Y-17.836 B2.755 C90.012 +G01 X+20.109 Y-17.839 B2.754 C87.054 +G01 X+20.22 Y-17.847 B2.755 C84.096 +G01 X+20.331 Y-17.862 C81.137 +G01 X+20.44 Y-17.881 C78.18 +G01 X+20.564 Y-17.911 B2.754 C74.774 +G01 X+20.669 Y-17.943 C71.871 +G01 X+20.773 Y-17.979 C68.968 +G01 X+20.874 Y-18.021 C66.064 +G01 X+20.973 Y-18.068 C63.161 +G01 X+21.022 Y-18.093 B2.753 C61.352 +G01 X+21.037 Y-18.102 B2.754 +G01 X+21.07 Y-18.119 +G01 X+21.178 Y-18.186 C56.997 +G01 X+21.252 Y-18.235 B2.755 C54.523 +G01 X+21.342 Y-18.303 B2.754 C51.549 +G01 X+21.427 Y-18.373 B2.755 C48.643 +G01 X+21.509 Y-18.449 C45.703 +G01 X+21.586 Y-18.528 B2.754 C42.763 +G01 X+21.66 Y-18.612 B2.755 C39.823 +G01 X+21.729 Y-18.699 B2.754 C36.883 +G01 X+21.794 Y-18.79 C33.944 +G01 X+21.854 Y-18.884 C31.004 +G01 X+21.909 Y-18.981 C28.064 +G01 X+21.959 Y-19.081 C25.123 +G01 X+22.004 Y-19.184 C22.159 +G01 X+22.043 Y-19.287 C19.24 +G01 X+22.077 Y-19.393 C16.282 +G01 X+22.105 Y-19.501 C13.323 +G01 X+22.128 Y-19.61 C10.365 +G01 X+22.146 Y-19.72 C7.407 +G01 X+22.157 Y-19.831 C4.449 +G01 X+22.163 Y-19.942 C1.492 +G01 Y-20.053 B2.755 C358.533 +G01 X+22.158 Y-20.165 C355.575 +G01 X+22.146 Y-20.275 C352.616 +G01 X+22.129 Y-20.386 C349.658 +G01 X+22.106 Y-20.495 C346.701 +G01 X+22.074 Y-20.617 B2.754 C343.322 +G01 X+22.04 Y-20.721 C340.419 +G01 X+22.001 Y-20.824 C337.516 +G01 X+21.956 Y-20.924 C334.613 +G01 X+21.907 Y-21.022 C331.71 +G01 X+21.844 Y-21.132 C328.448 +G01 X+21.797 Y-21.206 B2.755 C325.993 +G01 X+21.732 Y-21.297 C323.052 +G01 X+21.662 Y-21.385 B2.754 C320.097 +G01 X+21.59 Y-21.468 B2.755 C317.173 +G01 X+21.512 Y-21.548 C314.233 +G01 X+21.43 Y-21.624 C311.294 +G01 X+21.345 Y-21.695 B2.754 C308.354 +G01 X+21.256 Y-21.762 B2.755 C305.414 +G01 X+21.163 Y-21.824 B2.754 C302.473 +G01 X+21.068 Y-21.882 C299.534 +G01 X+20.969 Y-21.934 C296.594 +G01 X+20.867 Y-21.983 C293.61 +G01 X+20.765 Y-22.024 C290.707 +G01 X+20.66 Y-22.061 C287.762 +G01 X+20.553 Y-22.092 C284.802 +G01 X+20.445 Y-22.117 C281.845 +G01 X+20.335 Y-22.138 C278.886 +G01 X+20.225 Y-22.152 C275.928 +G01 X+20.114 Y-22.161 C272.97 +G01 X+20.002 Y-22.164 B2.755 C270.012 +G01 X+19.891 Y-22.161 B2.754 C267.054 +G01 X+19.78 Y-22.152 B2.755 C264.096 +G01 X+19.669 Y-22.138 C261.137 +G01 X+19.56 Y-22.118 C258.18 +G01 X+19.436 Y-22.088 B2.754 C254.774 +G01 X+19.331 Y-22.057 C251.871 +G01 X+19.227 Y-22.021 C248.967 +G01 X+19.154 Y-21.991 C246.959 +G01 X+18.978 Y-21.907 C241.352 +G01 X+18.962 Y-21.9 B2.755 C241.353 +G01 X+18.921 Y-21.879 B2.758 C241.352 +G01 X+18.852 Y-21.836 B2.757 C237.924 +G01 X+18.745 Y-21.763 B2.755 C234.452 +G01 X+18.659 Y-21.699 C231.597 +G01 X+18.573 Y-21.627 C228.645 +G01 X+18.491 Y-21.551 C225.703 +G01 X+18.397 Y-21.452 B2.754 C222.117 +G01 X+18.383 Y-21.43 B2.748 C221.387 +G01 X+18.379 Y-21.405 Z-0.551 B2.731 C220.894 +G01 X+18.38 Y-20.969 Z-0.54 B2.403 C210.869 +G01 X+18.37 Y-20.933 Z-0.539 B2.391 C209.794 +G01 X+18.332 Y-20.862 C207.335 +G01 X+18.29 Y-20.776 C204.407 +G01 X+18.252 Y-20.688 C201.479 +G01 X+18.219 Y-20.597 C198.551 +G01 X+18.191 Y-20.506 C195.622 +G01 X+18.168 Y-20.413 C192.693 +G01 X+18.153 Y-20.344 C190.546 +G01 X+18.135 Y-20.223 C186.836 +G01 X+18.126 Y-20.128 C183.906 +G01 X+18.122 Y-20.032 C180.978 +G01 X+18.123 Y-19.936 C178.049 +G01 X+18.129 Y-19.84 C175.121 +G01 X+18.136 Y-19.766 C172.849 +G01 X+18.15 Y-19.67 C169.897 +G01 X+18.17 Y-19.576 C166.947 +G01 X+18.194 Y-19.482 C163.996 +G01 X+18.223 Y-19.39 C161.046 +G01 X+18.257 Y-19.299 C158.094 +G01 X+18.295 Y-19.21 C155.144 +G01 X+18.357 Y-19.09 C151.015 +G01 X+18.406 Y-19.007 C148.086 +G01 X+18.437 Y-18.957 C146.291 +G01 X+18.493 Y-18.878 C143.34 +G01 X+18.553 Y-18.802 C140.389 +G01 X+18.616 Y-18.729 C137.438 +G01 X+18.683 Y-18.66 C134.486 +G01 X+18.754 Y-18.594 C131.536 +G01 X+18.828 Y-18.531 C128.585 +G01 X+18.905 Y-18.473 C125.635 +G01 X+18.985 Y-18.419 C122.684 +G01 X+19.068 Y-18.369 C119.733 +G01 X+19.153 Y-18.323 C116.782 +G01 X+19.241 Y-18.281 C113.831 +G01 X+19.33 Y-18.245 C110.88 +G01 X+19.448 Y-18.205 C107.086 +G01 X+19.541 Y-18.179 C104.158 +G01 X+19.634 Y-18.158 C101.229 +G01 X+19.704 Y-18.145 C99.079 +G01 X+19.824 Y-18.13 C95.371 +G01 X+19.92 Y-18.123 C92.443 +G01 X+20.016 Y-18.122 C89.514 +G01 X+20.112 Y-18.125 C86.585 +G01 X+20.186 Y-18.13 C84.325 +G01 X+20.282 Y-18.142 C81.374 +G01 X+20.377 Y-18.159 C78.422 +G01 X+20.471 Y-18.181 C75.472 +G01 X+20.564 Y-18.208 C72.52 +G01 X+20.656 Y-18.239 C69.57 +G01 X+20.746 Y-18.275 C66.619 +G01 X+20.833 Y-18.316 B2.389 C61.352 +G01 X+20.952 Y-18.381 +G01 X+21.002 Y-18.411 B2.387 C61.353 +G01 X+21.083 Y-18.464 B2.391 C54.816 +G01 X+21.16 Y-18.522 C51.865 +G01 X+21.235 Y-18.584 C48.914 +G01 X+21.306 Y-18.649 C45.962 +G01 X+21.374 Y-18.718 C43.012 +G01 X+21.438 Y-18.791 C40.061 +G01 X+21.498 Y-18.866 C37.11 +G01 X+21.555 Y-18.945 C34.159 +G01 X+21.607 Y-19.026 C31.208 +G01 X+21.655 Y-19.11 C28.257 +G01 X+21.698 Y-19.197 C25.306 +G01 X+21.737 Y-19.285 C22.356 +G01 X+21.781 Y-19.402 C18.551 +G01 X+21.809 Y-19.494 C15.622 +G01 X+21.832 Y-19.587 C12.693 +G01 X+21.847 Y-19.656 C10.546 +G01 X+21.865 Y-19.776 C6.836 +G01 X+21.874 Y-19.872 C3.906 +G01 X+21.878 Y-19.968 C0.978 +G01 X+21.877 Y-20.064 C358.049 +G01 X+21.871 Y-20.16 C355.121 +G01 X+21.864 Y-20.234 C352.849 +G01 X+21.85 Y-20.329 C349.897 +G01 X+21.83 Y-20.424 C346.947 +G01 X+21.806 Y-20.518 C343.996 +G01 X+21.777 Y-20.61 C341.046 +G01 X+21.743 Y-20.701 C338.094 +G01 X+21.705 Y-20.79 C335.144 +G01 X+21.643 Y-20.91 C331.015 +G01 X+21.594 Y-20.993 C328.086 +G01 X+21.563 Y-21.043 C326.291 +G01 X+21.507 Y-21.122 C323.34 +G01 X+21.447 Y-21.198 C320.389 +G01 X+21.384 Y-21.271 C317.438 +G01 X+21.317 Y-21.34 C314.486 +G01 X+21.246 Y-21.406 C311.536 +G01 X+21.172 Y-21.468 C308.585 +G01 X+21.095 Y-21.527 C305.635 +G01 X+21.015 Y-21.581 C302.684 +G01 X+20.932 Y-21.631 C299.733 +G01 X+20.847 Y-21.677 C296.782 +G01 X+20.759 Y-21.718 C293.831 +G01 X+20.67 Y-21.755 C290.88 +G01 X+20.552 Y-21.795 C287.086 +G01 X+20.459 Y-21.821 C284.158 +G01 X+20.366 Y-21.842 C281.229 +G01 X+20.296 Y-21.855 C279.079 +G01 X+20.176 Y-21.87 C275.371 +G01 X+20.08 Y-21.876 C272.443 +G01 X+19.984 Y-21.878 C269.514 +G01 X+19.888 Y-21.875 C266.585 +G01 X+19.814 Y-21.869 C264.325 +G01 X+19.718 Y-21.857 C261.374 +G01 X+19.623 Y-21.84 C258.422 +G01 X+19.529 Y-21.819 C255.472 +G01 X+19.436 Y-21.792 C252.523 +G01 X+19.309 Y-21.746 C248.408 +G01 X+19.271 Y-21.731 C247.158 +G01 X+19.056 Y-21.628 B2.394 C241.351 +G01 X+18.96 Y-21.565 B2.392 C236.401 +G01 X+18.886 Y-21.512 B2.391 C233.623 +G01 X+18.841 Y-21.478 B2.392 C231.892 +G01 X+18.765 Y-21.416 B2.391 C228.918 +G01 X+18.694 Y-21.351 C225.964 +G01 X+18.608 Y-21.261 C222.165 +G01 X+18.595 Y-21.239 B2.385 C221.391 +G01 X+18.59 Y-21.213 Z-0.538 B2.369 C220.702 +G01 Y-20.987 Z-0.533 B2.191 C214.967 +G01 X+18.591 Y-20.761 Z-0.529 B2.039 C208.3 +G01 X+18.583 Y-20.728 Z-0.528 B2.028 C207.094 +G01 X+18.543 Y-20.645 C203.832 +G01 X+18.51 Y-20.563 C200.707 +G01 X+18.483 Y-20.487 C197.804 +G01 X+18.46 Y-20.41 C194.901 +G01 X+18.442 Y-20.331 C191.998 +G01 X+18.421 Y-20.216 B2.029 C187.774 +G01 X+18.41 Y-20.108 C183.79 +G01 X+18.407 Y-20.011 B2.028 C180.384 +G01 X+18.409 Y-19.915 B2.029 C176.797 +G01 X+18.418 Y-19.807 C172.987 +G01 X+18.437 Y-19.69 B2.028 C168.771 +G01 X+18.46 Y-19.593 B2.029 C165.082 +G01 X+18.491 Y-19.487 C161.063 +G01 X+18.519 Y-19.41 C158.119 +G01 X+18.552 Y-19.335 C155.175 +G01 X+18.606 Y-19.229 B2.028 C150.899 +G01 X+18.647 Y-19.159 C147.97 +G01 X+18.692 Y-19.091 C145.042 +G01 X+18.749 Y-19.013 B2.029 C141.654 +G01 X+18.801 Y-18.951 B2.028 C138.725 +G01 X+18.856 Y-18.891 C135.797 +G01 X+18.915 Y-18.834 C132.868 +G01 X+18.976 Y-18.78 C129.94 +G01 X+19.04 Y-18.729 C127.011 +G01 X+19.106 Y-18.681 C124.082 +G01 X+19.205 Y-18.619 B2.029 C119.852 +G01 X+19.277 Y-18.58 C116.907 +G01 X+19.351 Y-18.544 C113.965 +G01 X+19.455 Y-18.503 C109.898 +G01 X+19.546 Y-18.473 B2.028 C106.511 +G01 X+19.629 Y-18.45 C103.45 +G01 X+19.708 Y-18.434 C100.545 +G01 X+19.788 Y-18.421 C97.643 +G01 X+19.868 Y-18.412 C94.739 +G01 X+19.949 Y-18.408 C91.836 +G01 X+20.03 Y-18.407 C88.933 +G01 X+20.126 Y-18.412 B2.029 C85.333 +G01 X+20.234 Y-18.423 C81.494 +G01 X+20.35 Y-18.446 B2.028 C77.32 +G01 X+20.446 Y-18.47 B2.029 C73.618 +G01 X+20.551 Y-18.505 C69.59 +G01 X+20.627 Y-18.535 B2.02 C61.352 +G01 X+20.735 Y-18.586 B2.028 C61.353 +G01 X+20.806 Y-18.626 B2.027 C61.352 +G01 X+20.875 Y-18.669 B2.022 C61.351 +G01 X+20.942 Y-18.715 B2.028 C53.577 +G01 X+21.018 Y-18.775 C50.189 +G01 X+21.08 Y-18.828 C47.261 +G01 X+21.138 Y-18.885 C44.333 +G01 X+21.194 Y-18.945 C41.404 +G01 X+21.246 Y-19.007 C38.475 +G01 X+21.295 Y-19.072 C35.546 +G01 X+21.36 Y-19.169 B2.029 C31.324 +G01 X+21.401 Y-19.241 C28.38 +G01 X+21.438 Y-19.314 C25.436 +G01 X+21.472 Y-19.389 C22.492 +G01 X+21.51 Y-19.493 C18.434 +G01 X+21.538 Y-19.586 B2.028 C15.046 +G01 X+21.558 Y-19.669 C11.998 +G01 X+21.579 Y-19.784 B2.029 C7.774 +G01 X+21.59 Y-19.892 C3.791 +G01 X+21.593 Y-19.989 B2.028 C0.384 +G01 X+21.591 Y-20.085 B2.029 C356.797 +G01 X+21.582 Y-20.193 C352.987 +G01 X+21.563 Y-20.31 B2.028 C348.771 +G01 X+21.54 Y-20.407 B2.029 C345.082 +G01 X+21.509 Y-20.512 C341.063 +G01 X+21.481 Y-20.589 C338.119 +G01 X+21.448 Y-20.665 C335.175 +G01 X+21.394 Y-20.77 B2.028 C330.899 +G01 X+21.353 Y-20.841 C327.97 +G01 X+21.308 Y-20.909 C325.042 +G01 X+21.251 Y-20.987 B2.029 C321.654 +G01 X+21.199 Y-21.049 B2.028 C318.725 +G01 X+21.144 Y-21.109 C315.797 +G01 X+21.085 Y-21.166 C312.868 +G01 X+21.024 Y-21.22 C309.94 +G01 X+20.96 Y-21.271 C307.011 +G01 X+20.894 Y-21.319 C304.082 +G01 X+20.795 Y-21.381 B2.029 C299.852 +G01 X+20.723 Y-21.42 C296.907 +G01 X+20.649 Y-21.456 C293.965 +G01 X+20.545 Y-21.497 C289.898 +G01 X+20.454 Y-21.527 B2.028 C286.511 +G01 X+20.371 Y-21.549 C283.45 +G01 X+20.292 Y-21.566 C280.545 +G01 X+20.212 Y-21.579 C277.643 +G01 X+20.132 Y-21.588 C274.739 +G01 X+20.051 Y-21.592 C271.836 +G01 X+19.97 Y-21.593 C268.933 +G01 X+19.874 Y-21.588 B2.029 C265.333 +G01 X+19.766 Y-21.576 C261.494 +G01 X+19.65 Y-21.554 B2.028 C257.32 +G01 X+19.554 Y-21.529 B2.029 C253.618 +G01 X+19.447 Y-21.495 C249.52 +G01 X+19.382 Y-21.468 B2.028 C247.158 +G01 X+19.2 Y-21.381 B2.031 C241.353 +G01 X+19.091 Y-21.31 B2.03 C235.072 +G01 X+19.021 Y-21.258 B2.029 C231.963 +G01 X+18.957 Y-21.205 C228.992 +G01 X+18.896 Y-21.149 C226.043 +G01 X+18.819 Y-21.069 B2.028 C221.995 +G01 X+18.806 Y-21.047 B2.022 C221.216 +G01 X+18.801 Y-21.022 B2.006 C220.303 +G01 Y-20.781 Z-0.523 B1.821 C212.934 +G01 X+18.802 Y-20.541 Z-0.519 B1.674 C204.092 +G01 X+18.796 Y-20.511 B1.666 C202.773 +G01 X+18.769 Y-20.444 C199.662 +G01 X+18.738 Y-20.345 B1.665 C195.172 +G01 X+18.715 Y-20.249 B1.666 C190.851 +G01 X+18.7 Y-20.147 B1.665 C186.387 +G01 X+18.692 Y-20.049 B1.666 C182.042 +G01 X+18.693 Y-19.942 B1.665 C177.481 +G01 X+18.7 Y-19.847 B1.666 C173.234 +G01 X+18.717 Y-19.745 B1.665 C168.771 +G01 X+18.74 Y-19.648 B1.666 C164.417 +G01 X+18.773 Y-19.546 B1.665 C159.521 +G01 X+18.809 Y-19.459 B1.666 C155.523 +G01 X+18.857 Y-19.363 B1.665 C150.658 +G01 X+18.906 Y-19.282 B1.666 C146.614 +G01 X+18.969 Y-19.195 B1.665 C141.797 +G01 X+19.03 Y-19.122 B1.666 C137.705 +G01 X+19.104 Y-19.047 B1.665 C132.995 +G01 X+19.176 Y-18.983 B1.666 C128.796 +G01 X+19.261 Y-18.921 B1.665 C124.208 +G01 X+19.342 Y-18.869 B1.666 C119.938 +G01 X+19.435 Y-18.82 B1.665 C115.422 +G01 X+19.524 Y-18.781 B1.666 C111.13 +G01 X+19.623 Y-18.747 B1.665 C106.637 +G01 X+19.718 Y-18.722 B1.666 C102.32 +G01 X+19.819 Y-18.704 B1.665 C97.852 +G01 X+19.918 Y-18.694 B1.666 C93.51 +G01 X+20.024 Y-18.692 B1.665 C88.933 +G01 X+20.12 Y-18.697 B1.666 C84.701 +G01 X+20.222 Y-18.711 B1.665 C80.223 +G01 X+20.319 Y-18.731 B1.666 C75.892 +G01 X+20.384 Y-18.749 C72.947 +G01 X+20.486 Y-18.785 B1.653 C61.352 +G01 X+20.572 Y-18.823 B1.664 +G01 X+20.666 Y-18.874 +G01 X+20.746 Y-18.925 B1.656 +G01 X+20.831 Y-18.99 B1.665 C50.319 +G01 X+20.903 Y-19.052 B1.666 C46.221 +G01 X+20.976 Y-19.129 B1.665 C41.53 +G01 X+21.038 Y-19.203 B1.666 C37.312 +G01 X+21.098 Y-19.289 B1.665 C32.745 +G01 X+21.148 Y-19.372 B1.666 C28.471 +G01 X+21.194 Y-19.466 B1.665 C23.958 +G01 X+21.231 Y-19.556 B1.666 C19.662 +G01 X+21.262 Y-19.655 B1.665 C15.172 +G01 X+21.285 Y-19.751 B1.666 C10.851 +G01 X+21.3 Y-19.852 B1.665 C6.387 +G01 X+21.308 Y-19.951 B1.666 C2.042 +G01 X+21.307 Y-20.057 B1.665 C357.481 +G01 X+21.3 Y-20.153 B1.666 C353.234 +G01 X+21.283 Y-20.255 B1.665 C348.771 +G01 X+21.26 Y-20.351 B1.666 C344.417 +G01 X+21.227 Y-20.454 B1.665 C339.521 +G01 X+21.191 Y-20.541 B1.666 C335.523 +G01 X+21.143 Y-20.637 B1.665 C330.658 +G01 X+21.094 Y-20.718 B1.666 C326.614 +G01 X+21.031 Y-20.805 B1.665 C321.797 +G01 X+20.97 Y-20.878 B1.666 C317.705 +G01 X+20.896 Y-20.953 B1.665 C312.995 +G01 X+20.824 Y-21.017 B1.666 C308.796 +G01 X+20.739 Y-21.079 B1.665 C304.208 +G01 X+20.658 Y-21.131 B1.666 C299.938 +G01 X+20.565 Y-21.18 B1.665 C295.422 +G01 X+20.476 Y-21.219 B1.666 C291.13 +G01 X+20.377 Y-21.253 B1.665 C286.637 +G01 X+20.282 Y-21.278 B1.666 C282.32 +G01 X+20.181 Y-21.296 B1.665 C277.852 +G01 X+20.082 Y-21.306 B1.666 C273.51 +G01 X+19.976 Y-21.308 B1.665 C268.933 +G01 X+19.88 Y-21.303 B1.666 C264.701 +G01 X+19.778 Y-21.289 B1.665 C260.223 +G01 X+19.681 Y-21.269 B1.666 C255.892 +G01 X+19.617 Y-21.251 C252.965 +G01 X+19.52 Y-21.217 C248.441 +G01 X+19.349 Y-21.137 B1.668 C241.352 +G01 X+19.272 Y-21.088 B1.66 C241.353 +G01 X+19.201 Y-21.036 B1.666 C232.246 +G01 X+19.118 Y-20.966 B1.665 C227.376 +G01 X+19.05 Y-20.9 B1.666 C223.251 +G01 X+19.03 Y-20.878 B1.665 C222.045 +G01 X+19.016 Y-20.854 B1.659 C220.949 +G01 X+19.012 Y-20.821 Z-0.518 B1.635 C219.692 +G01 X+19.024 Y-20.588 Z-0.514 B1.45 C211.002 +G01 X+19.036 Y-20.354 Z-0.512 B1.308 C200.119 +G01 X+19.032 Y-20.329 B1.301 C198.748 +G01 X+19.01 Y-20.257 B1.303 C194.509 +G01 X+18.988 Y-20.154 C188.597 +G01 X+18.978 Y-20.049 C182.688 +G01 Y-19.943 C176.777 +G01 X+18.99 Y-19.839 C170.867 +G01 X+19.015 Y-19.725 B1.302 C164.417 +G01 X+19.048 Y-19.627 C158.611 +G01 X+19.09 Y-19.532 C152.802 +G01 X+19.142 Y-19.443 C146.997 +G01 X+19.203 Y-19.359 C141.191 +G01 X+19.272 Y-19.281 C135.385 +G01 X+19.348 Y-19.211 C129.578 +G01 X+19.431 Y-19.149 C123.771 +G01 X+19.522 Y-19.095 C117.806 +G01 X+19.618 Y-19.051 B1.303 C111.896 +G01 X+19.718 Y-19.016 C105.986 +G01 X+19.82 Y-18.993 C100.077 +G01 X+19.925 Y-18.98 C94.165 +G01 X+20.03 Y-18.977 C88.256 +G01 X+20.135 Y-18.986 C82.345 +G01 X+20.25 Y-19.008 B1.302 C75.867 +G01 X+20.349 Y-19.039 Z-0.511 B1.287 C61.351 +G01 X+20.444 Y-19.079 Z-0.512 B1.3 C61.352 +G01 X+20.535 Y-19.128 C61.351 +G01 X+20.621 Y-19.187 Z-0.511 B1.287 C61.353 +G01 X+20.7 Y-19.254 Z-0.512 B1.302 C46.835 +G01 X+20.772 Y-19.328 C41.031 +G01 X+20.836 Y-19.41 C35.222 +G01 X+20.892 Y-19.499 C29.284 +G01 X+20.939 Y-19.594 B1.303 C23.374 +G01 X+20.976 Y-19.692 C17.465 +G01 X+21.002 Y-19.794 C11.555 +G01 X+21.018 Y-19.899 C5.643 +G01 X+21.023 Y-20.004 C359.733 +G01 X+21.017 Y-20.109 C353.823 +G01 X+20.998 Y-20.224 B1.302 C347.319 +G01 X+20.97 Y-20.324 C341.513 +G01 X+20.932 Y-20.421 C335.708 +G01 X+20.885 Y-20.513 C329.901 +G01 X+20.829 Y-20.6 C324.093 +G01 X+20.764 Y-20.681 C318.287 +G01 X+20.691 Y-20.754 C312.48 +G01 X+20.611 Y-20.821 C306.675 +G01 X+20.523 Y-20.879 B1.303 C300.762 +G01 X+20.43 Y-20.928 B1.302 C294.852 +G01 X+20.333 Y-20.968 B1.303 C288.94 +G01 X+20.231 Y-20.997 C283.03 +G01 X+20.128 Y-21.015 C277.121 +G01 X+20.023 Y-21.023 C271.21 +G01 X+19.917 Y-21.02 C265.302 +G01 X+19.801 Y-21.003 B1.302 C258.771 +G01 X+19.714 Y-20.982 B1.303 C253.712 +G01 X+19.627 Y-20.952 Z-0.511 B1.291 C241.351 +G01 X+19.49 Y-20.889 Z-0.512 B1.304 C241.353 +G01 X+19.428 Y-20.849 B1.298 +G01 X+19.339 Y-20.781 B1.302 C229.739 +G01 X+19.263 Y-20.71 C223.932 +G01 X+19.243 Y-20.686 B1.301 C222.144 +G01 X+19.221 Y-20.654 Z-0.511 B1.295 C219.954 +G01 X+19.21 Y-20.62 B1.278 C218.127 +G01 X+19.208 Y-20.579 B1.249 C216.162 +G01 X+19.236 Y-20.275 Z-0.507 B1.034 C199.736 +G01 X+19.263 Y-19.97 Z-0.506 B0.939 C177.635 +G01 X+19.27 Y-19.894 C171.754 +G01 X+19.285 Y-19.82 C165.869 +G01 X+19.307 Y-19.747 C159.678 +G01 X+19.337 Y-19.678 C153.799 +G01 X+19.374 Y-19.611 C147.915 +G01 X+19.417 Y-19.549 C142.038 +G01 X+19.466 Y-19.491 C136.155 +G01 X+19.522 Y-19.439 C130.274 +G01 X+19.582 Y-19.393 C124.391 +G01 X+19.646 Y-19.353 C118.511 +G01 X+19.715 Y-19.32 C112.627 +G01 X+19.786 Y-19.294 C106.75 +G01 X+19.86 Y-19.276 C100.867 +G01 X+19.935 Y-19.266 C94.986 +G01 X+20.011 Y-19.263 C89.105 +G01 X+20.087 Y-19.268 C83.225 +G01 X+20.162 Y-19.281 C77.009 +G01 X+20.235 Y-19.301 B0.924 C61.024 +G01 X+20.305 Y-19.329 B0.936 C61.038 +G01 X+20.373 Y-19.364 B0.938 C61.354 +G01 X+20.436 Y-19.405 B0.931 C61.35 +G01 X+20.495 Y-19.453 B0.939 C47.625 +G01 X+20.548 Y-19.507 C41.744 +G01 X+20.596 Y-19.566 C35.862 +G01 X+20.638 Y-19.63 C29.981 +G01 X+20.672 Y-19.697 C24.098 +G01 X+20.7 Y-19.768 C18.219 +G01 X+20.72 Y-19.841 C12.338 +G01 X+20.732 Y-19.916 C6.455 +G01 X+20.737 Y-19.992 C0.574 +G01 X+20.734 Y-20.068 C354.694 +G01 X+20.723 Y-20.143 C348.772 +G01 X+20.705 Y-20.216 C342.62 +G01 X+20.679 Y-20.288 C336.74 +G01 X+20.646 Y-20.356 C330.857 +G01 X+20.606 Y-20.42 C324.978 +G01 X+20.559 Y-20.481 C319.096 +G01 X+20.507 Y-20.535 C313.214 +G01 X+20.449 Y-20.585 C307.334 +G01 X+20.386 Y-20.628 C301.45 +G01 X+20.32 Y-20.664 C295.57 +G01 X+20.25 Y-20.694 C289.688 +G01 X+20.177 Y-20.716 C283.806 +G01 X+20.103 Y-20.73 C277.925 +G01 X+20.027 Y-20.737 C272.046 +G01 X+19.951 Y-20.736 C266.165 +G01 X+19.875 Y-20.726 C259.911 +G01 X+19.802 Y-20.71 C254.106 +G01 X+19.754 Y-20.695 B0.927 C241.026 +G01 X+19.63 Y-20.639 B0.94 C241.351 +G01 X+19.604 Y-20.624 B0.939 C241.352 +G01 X+19.536 Y-20.573 B0.924 C241.354 +G01 X+19.478 Y-20.52 B0.939 C224.686 +G01 X+19.454 Y-20.494 B0.938 C221.928 +G01 X+19.429 Y-20.453 B0.929 C218.373 +G01 X+19.418 Y-20.406 B0.904 C214.654 +G01 X+19.424 Y-20.359 Z-0.505 B0.864 C211.609 +G01 X+19.498 Y-20.107 Z-0.503 B0.653 C191.618 +G01 X+19.572 Y-19.855 Z-0.502 B0.575 C160.677 +G01 X+19.589 Y-19.812 C154.827 +G01 X+19.611 Y-19.771 C148.972 +G01 X+19.636 Y-19.732 C143.119 +G01 X+19.666 Y-19.696 C137.27 +G01 X+19.699 Y-19.664 C131.416 +G01 X+19.735 Y-19.634 C125.566 +G01 X+19.774 Y-19.609 C119.71 +G01 X+19.815 Y-19.588 C113.862 +G01 X+19.859 Y-19.571 C108.009 +G01 X+19.904 Y-19.559 C102.157 +G01 X+19.949 Y-19.551 C96.306 +G01 X+19.997 Y-19.548 C90.383 +G01 X+20.043 Y-19.55 C83.826 +G01 X+20.088 Y-19.557 B0.549 C60.565 +G01 X+20.133 Y-19.569 B0.563 C60.585 +G01 X+20.177 Y-19.585 B0.572 C60.596 +G01 X+20.219 Y-19.605 B0.575 C61.353 +G01 X+20.258 Y-19.63 B0.572 C61.351 +G01 X+20.295 Y-19.658 B0.562 C61.35 +G01 X+20.329 Y-19.69 B0.547 +G01 X+20.359 Y-19.726 B0.575 C37.029 +G01 X+20.385 Y-19.764 C31.174 +G01 X+20.407 Y-19.805 C25.324 +G01 X+20.425 Y-19.848 C19.473 +G01 X+20.438 Y-19.892 C13.621 +G01 X+20.447 Y-19.938 C7.767 +G01 X+20.451 Y-19.984 C1.913 +G01 X+20.45 Y-20.031 C356.028 +G01 X+20.445 Y-20.077 C349.456 +G01 X+20.435 Y-20.122 C343.606 +G01 X+20.42 Y-20.166 C337.752 +G01 X+20.4 Y-20.208 C331.9 +G01 X+20.377 Y-20.249 C326.047 +G01 X+20.349 Y-20.286 C320.192 +G01 X+20.318 Y-20.32 C314.342 +G01 X+20.283 Y-20.351 C308.49 +G01 X+20.246 Y-20.379 C302.639 +G01 X+20.206 Y-20.402 C296.787 +G01 X+20.163 Y-20.421 C290.933 +G01 X+20.119 Y-20.435 C285.083 +G01 X+20.074 Y-20.445 C279.228 +G01 X+20.027 Y-20.451 C273.377 +G01 X+19.98 C266.726 +G01 X+19.934 Y-20.447 C260.877 +G01 X+19.883 Y-20.436 B0.559 C240.579 +G01 X+19.857 Y-20.428 B0.565 C240.587 +G01 X+19.778 Y-20.393 B0.575 C241.351 +G01 X+19.75 Y-20.377 B0.574 C241.353 +G01 X+19.725 Y-20.359 B0.569 +G01 X+19.688 Y-20.326 B0.555 +G01 X+19.666 Y-20.303 B0.542 C241.356 +G01 X+19.641 Y-20.267 B0.57 C215.905 +G01 X+19.628 Y-20.225 B0.553 C211.04 +G01 X+19.629 Y-20.182 B0.526 C205.525 +G01 X+19.642 Y-20.14 B0.489 C201.014 +G01 X+19.668 Y-20.105 Z-0.501 B0.444 C196.806 +G01 X+19.876 Y-19.894 Z-0.5 B0.209 C138.499 +G01 X+19.901 Y-19.87 B0.085 C60.009 +G01 X+19.942 Y-19.845 B0.138 C60.072 +G01 X+19.988 Y-19.835 B0.178 C60.108 +G01 X+20.036 Y-19.841 B0.2 C60.139 +G01 X+20.06 Y-19.848 B0.206 C60.156 +G01 X+20.103 Y-19.87 B0.208 C61.358 +G01 X+20.136 Y-19.905 B0.189 C61.36 +G01 X+20.155 Y-19.949 B0.152 C61.345 +G01 X+20.161 Y-19.974 B0.127 C61.355 +G01 X+20.164 Y-20.021 B0.076 C61.359 +G01 X+20.151 Y-20.067 B0.211 C335.761 +G01 X+20.124 Y-20.106 B0.208 C318.468 +G01 X+20.105 Y-20.124 B0.075 C240.01 +G01 X+20.066 Y-20.152 B0.129 C240.073 +G01 X+20.02 Y-20.164 B0.172 C240.106 +G01 X+19.972 Y-20.161 B0.197 C240.139 +G01 X+19.947 Y-20.154 B0.205 C240.154 +G01 X+19.911 Y-20.139 B0.21 C241.358 +G01 X+19.877 Y-20.111 B0.2 C241.361 +G01 X+19.87 Y-20.092 B0.183 C241.345 +G01 X+19.877 Y-20.073 B0.157 C241.343 +G01 X+19.945 Y-19.998 B0.031 C241.339 +G01 X+19.951 Y-19.986 B0. +G01 X+19.962 Y-19.969 +G01 X+19.974 Y-19.958 B-0.03 C239.907 +G01 X+19.989 Y-19.95 B-0.049 C239.962 +G01 X+20.007 Y-19.951 B-0.059 C239.957 +G01 X+20.022 Y-19.956 B-0.063 C240.008 +G01 X+20.037 Y-19.965 B-0.061 C241.351 +G01 X+20.045 Y-19.981 B-0.049 C241.336 +G01 X+20.049 Y-19.996 B-0.035 C241.39 +G01 Y-20.014 B0. +G01 X+20.04 Y-20.029 +G01 X+20.029 Y-20.04 B0.027 C239.954 +G01 X+20.013 Y-20.049 B0.047 C239.957 +G01 X+19.995 B0.058 C239.986 +G01 X+19.98 Y-20.045 B0.063 C239.989 +G01 X+19.963 Y-20.035 B0.062 C241.343 +G01 X+19.954 Y-20.017 B0.048 C241.34 +G01 X+19.951 Y-20.001 B0.032 C241.307 +G01 Y-19.986 B0. +G01 Y-19.987 Z+4.5 F20000 +(#HSC OFF) +(#TRAFO OFF) +; - EB oblong 1 +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G00 X+22.777 Y-12.678 Z+4.606 C0. +G00 Z-0.394 +G03 X+22.482 Y-12.4 Z-0.994 I-0.299 J-0.022 F2000 K0.033 +G01 X+17.607 Y-12.332 F2000 +G03 X+17.507 Y-12.419 I-0.001 J-0.1 +G01 X+17.5 Y-12.469 +G01 X+22.482 Y-12.537 +G01 X+22.515 Y-12.536 +G03 X+22.544 Y-12.531 I-0.004 J+0.1 +G01 X+22.551 Y-12.528 +G01 X+22.57 Y-12.519 +G01 X+22.577 Y-12.515 +G01 X+22.596 Y-12.5 +G01 X+22.603 Y-12.493 +G03 X+22.628 Y-12.45 I-0.071 J+0.07 +G01 X+22.636 Y-12.423 +G03 X+22.639 Y-12.384 I-0.096 J+0.027 +G01 X+22.637 Y-12.37 +G01 X+22.631 Y-12.346 +G01 X+22.629 Y-12.34 +G03 X+22.59 Y-12.292 I-0.093 J-0.036 +G01 X+22.559 Y-12.272 +G03 X+22.517 Y-12.257 I-0.054 J-0.084 +G01 X+22.5 Y-12.255 +G01 X+22.482 Y-12.254 +G01 X+17.518 Y-12.169 +G01 X+17.466 Y-12.172 +G03 X+17.433 Y-12.179 I+0.005 J-0.099 +G01 X+17.387 Y-12.198 +G01 X+17.37 Y-12.207 +G01 X+17.363 Y-12.212 +G01 X+17.347 Y-12.224 +G01 X+17.335 Y-12.235 +G01 X+17.32 Y-12.251 +G03 X+17.298 Y-12.289 I+0.074 J-0.068 +G01 X+17.271 Y-12.379 +G03 X+17.267 Y-12.418 I+0.095 J-0.029 +G01 X+17.269 Y-12.442 +G03 X+17.278 Y-12.474 I+0.1 J+0.011 +G01 X+17.305 Y-12.53 +G01 X+17.319 Y-12.552 +G01 X+17.334 Y-12.569 +G01 X+17.351 Y-12.585 +G01 X+17.369 Y-12.598 +G01 X+17.403 Y-12.617 +G01 X+17.428 Y-12.627 +G01 X+17.453 Y-12.634 +G01 X+17.5 Y-12.639 +G01 X+22.482 Y-12.725 +G01 X+22.534 Y-12.724 +G03 X+22.542 Y-12.062 I-0.034 J+0.331 +G01 X+22.5 Y-12.059 +G01 X+22.482 +G01 X+17.518 Y-11.981 +G01 X+17.456 Y-11.983 +G03 X+17.455 Y-12.832 I+0.044 J-0.424 +G01 X+17.5 Y-12.835 +G01 X+22.482 Y-12.912 +G01 X+22.554 Y-12.911 +G03 X+22.566 Y-11.869 I-0.054 J+0.522 +G01 X+22.5 Y-11.864 +G01 X+22.482 +G01 X+17.518 Y-11.794 +G01 X+17.437 Y-11.796 +G03 X+17.434 Y-13.025 I+0.063 J-0.615 +G01 X+17.5 Y-13.029 +G01 X+22.482 Y-13.1 +G01 X+22.552 Y-13.098 +G03 X+22.552 Y-11.702 I-0.052 J+0.698 +G01 X+22.5 Y-11.7 +G01 X+17.5 +G03 X+17.448 Y-13.098 I+0 J-0.7 +G01 X+17.5 Y-13.1 +G01 X+22.482 +G01 Z+0.006 F10000 +G00 Z+5.006 +G00 X+22.777 Y-12.678 +G00 Z-0.888 +G03 X+22.482 Y-12.4 Z-1.488 I-0.299 J-0.022 F2000 K0.033 +G01 X+17.607 Y-12.332 F2000 +G03 X+17.507 Y-12.419 I-0.001 J-0.1 +G01 X+17.5 Y-12.469 +G01 X+22.482 Y-12.537 +G01 X+22.515 Y-12.536 +G03 X+22.544 Y-12.531 I-0.004 J+0.1 +G01 X+22.551 Y-12.528 +G01 X+22.57 Y-12.519 +G01 X+22.577 Y-12.515 +G01 X+22.596 Y-12.5 +G01 X+22.603 Y-12.493 +G03 X+22.628 Y-12.45 I-0.071 J+0.07 +G01 X+22.636 Y-12.423 +G03 X+22.639 Y-12.384 I-0.096 J+0.027 +G01 X+22.637 Y-12.37 +G01 X+22.631 Y-12.346 +G01 X+22.629 Y-12.34 +G03 X+22.59 Y-12.292 I-0.093 J-0.036 +G01 X+22.559 Y-12.272 +G03 X+22.517 Y-12.257 I-0.054 J-0.084 +G01 X+22.5 Y-12.255 +G01 X+22.482 Y-12.254 +G01 X+17.518 Y-12.169 +G01 X+17.466 Y-12.172 +G03 X+17.433 Y-12.179 I+0.005 J-0.099 +G01 X+17.387 Y-12.198 +G01 X+17.37 Y-12.207 +G01 X+17.363 Y-12.212 +G01 X+17.347 Y-12.224 +G01 X+17.335 Y-12.235 +G01 X+17.32 Y-12.251 +G03 X+17.298 Y-12.289 I+0.074 J-0.068 +G01 X+17.271 Y-12.379 +G03 X+17.267 Y-12.418 I+0.095 J-0.029 +G01 X+17.269 Y-12.442 +G03 X+17.278 Y-12.474 I+0.1 J+0.011 +G01 X+17.305 Y-12.53 +G01 X+17.319 Y-12.552 +G01 X+17.334 Y-12.569 +G01 X+17.351 Y-12.585 +G01 X+17.369 Y-12.598 +G01 X+17.403 Y-12.617 +G01 X+17.428 Y-12.627 +G01 X+17.453 Y-12.634 +G01 X+17.5 Y-12.639 +G01 X+22.482 Y-12.725 +G01 X+22.534 Y-12.724 +G03 X+22.542 Y-12.062 I-0.034 J+0.331 +G01 X+22.5 Y-12.059 +G01 X+22.482 +G01 X+17.518 Y-11.981 +G01 X+17.456 Y-11.983 +G03 X+17.455 Y-12.832 I+0.044 J-0.424 +G01 X+17.5 Y-12.835 +G01 X+22.482 Y-12.912 +G01 X+22.554 Y-12.911 +G03 X+22.566 Y-11.869 I-0.054 J+0.522 +G01 X+22.5 Y-11.864 +G01 X+22.482 +G01 X+17.518 Y-11.794 +G01 X+17.437 Y-11.796 +G03 X+17.434 Y-13.025 I+0.063 J-0.615 +G01 X+17.5 Y-13.029 +G01 X+22.482 Y-13.1 +G01 X+22.552 Y-13.098 +G03 X+22.552 Y-11.702 I-0.052 J+0.698 +G01 X+22.5 Y-11.7 +G01 X+17.5 +G03 X+17.448 Y-13.098 I+0 J-0.7 +G01 X+17.5 Y-13.1 +G01 X+22.482 +G01 Z-0.488 F10000 +G00 Z+4.513 +G00 X+22.777 Y-12.678 +G00 Z-1.381 +G03 X+22.482 Y-12.4 Z-1.981 I-0.299 J-0.022 F2000 K0.033 +G01 X+17.607 Y-12.332 F2000 +G03 X+17.507 Y-12.419 I-0.001 J-0.1 +G01 X+17.5 Y-12.469 +G01 X+22.482 Y-12.537 +G01 X+22.515 Y-12.536 +G03 X+22.544 Y-12.531 I-0.004 J+0.1 +G01 X+22.551 Y-12.528 +G01 X+22.57 Y-12.519 +G01 X+22.577 Y-12.515 +G01 X+22.596 Y-12.5 +G01 X+22.603 Y-12.493 +G03 X+22.628 Y-12.45 I-0.071 J+0.07 +G01 X+22.636 Y-12.423 +G03 X+22.639 Y-12.384 I-0.096 J+0.027 +G01 X+22.637 Y-12.37 +G01 X+22.631 Y-12.346 +G01 X+22.629 Y-12.34 +G03 X+22.59 Y-12.292 I-0.093 J-0.036 +G01 X+22.559 Y-12.272 +G03 X+22.517 Y-12.257 I-0.054 J-0.084 +G01 X+22.5 Y-12.255 +G01 X+22.482 Y-12.254 +G01 X+17.518 Y-12.169 +G01 X+17.466 Y-12.172 +G03 X+17.433 Y-12.179 I+0.005 J-0.099 +G01 X+17.387 Y-12.198 +G01 X+17.37 Y-12.207 +G01 X+17.363 Y-12.212 +G01 X+17.347 Y-12.224 +G01 X+17.335 Y-12.235 +G01 X+17.32 Y-12.251 +G03 X+17.298 Y-12.289 I+0.074 J-0.068 +G01 X+17.271 Y-12.379 +G03 X+17.267 Y-12.418 I+0.095 J-0.029 +G01 X+17.269 Y-12.442 +G03 X+17.278 Y-12.474 I+0.1 J+0.011 +G01 X+17.305 Y-12.53 +G01 X+17.319 Y-12.552 +G01 X+17.334 Y-12.569 +G01 X+17.351 Y-12.585 +G01 X+17.369 Y-12.598 +G01 X+17.403 Y-12.617 +G01 X+17.428 Y-12.627 +G01 X+17.453 Y-12.634 +G01 X+17.5 Y-12.639 +G01 X+22.482 Y-12.725 +G01 X+22.534 Y-12.724 +G03 X+22.542 Y-12.062 I-0.034 J+0.331 +G01 X+22.5 Y-12.059 +G01 X+22.482 +G01 X+17.518 Y-11.981 +G01 X+17.456 Y-11.983 +G03 X+17.455 Y-12.832 I+0.044 J-0.424 +G01 X+17.5 Y-12.835 +G01 X+22.482 Y-12.912 +G01 X+22.554 Y-12.911 +G03 X+22.566 Y-11.869 I-0.054 J+0.522 +G01 X+22.5 Y-11.864 +G01 X+22.482 +G01 X+17.518 Y-11.794 +G01 X+17.437 Y-11.796 +G03 X+17.434 Y-13.025 I+0.063 J-0.615 +G01 X+17.5 Y-13.029 +G01 X+22.482 Y-13.1 +G01 X+22.552 Y-13.098 +G03 X+22.552 Y-11.702 I-0.052 J+0.698 +G01 X+22.5 Y-11.7 +G01 X+17.5 +G03 X+17.448 Y-13.098 I+0 J-0.7 +G01 X+17.5 Y-13.1 +G01 X+22.482 +G01 Z-0.981 F10000 +G00 Z+4.019 +G00 X+22.777 Y-12.678 +G00 Z-1.875 +G03 X+22.482 Y-12.4 Z-2.475 I-0.299 J-0.022 F2000 K0.033 +G01 X+17.607 Y-12.332 F2000 +G03 X+17.507 Y-12.419 I-0.001 J-0.1 +G01 X+17.5 Y-12.469 +G01 X+22.482 Y-12.537 +G01 X+22.515 Y-12.536 +G03 X+22.544 Y-12.531 I-0.004 J+0.1 +G01 X+22.551 Y-12.528 +G01 X+22.57 Y-12.519 +G01 X+22.577 Y-12.515 +G01 X+22.596 Y-12.5 +G01 X+22.603 Y-12.493 +G03 X+22.628 Y-12.45 I-0.071 J+0.07 +G01 X+22.636 Y-12.423 +G03 X+22.639 Y-12.384 I-0.096 J+0.027 +G01 X+22.637 Y-12.37 +G01 X+22.631 Y-12.346 +G01 X+22.629 Y-12.34 +G03 X+22.59 Y-12.292 I-0.093 J-0.036 +G01 X+22.559 Y-12.272 +G03 X+22.517 Y-12.257 I-0.054 J-0.084 +G01 X+22.5 Y-12.255 +G01 X+22.482 Y-12.254 +G01 X+17.518 Y-12.169 +G01 X+17.466 Y-12.172 +G03 X+17.433 Y-12.179 I+0.005 J-0.099 +G01 X+17.387 Y-12.198 +G01 X+17.37 Y-12.207 +G01 X+17.363 Y-12.212 +G01 X+17.347 Y-12.224 +G01 X+17.335 Y-12.235 +G01 X+17.32 Y-12.251 +G03 X+17.298 Y-12.289 I+0.074 J-0.068 +G01 X+17.271 Y-12.379 +G03 X+17.267 Y-12.418 I+0.095 J-0.029 +G01 X+17.269 Y-12.442 +G03 X+17.278 Y-12.474 I+0.1 J+0.011 +G01 X+17.305 Y-12.53 +G01 X+17.319 Y-12.552 +G01 X+17.334 Y-12.569 +G01 X+17.351 Y-12.585 +G01 X+17.369 Y-12.598 +G01 X+17.403 Y-12.617 +G01 X+17.428 Y-12.627 +G01 X+17.453 Y-12.634 +G01 X+17.5 Y-12.639 +G01 X+22.482 Y-12.725 +G01 X+22.534 Y-12.724 +G03 X+22.542 Y-12.062 I-0.034 J+0.331 +G01 X+22.5 Y-12.059 +G01 X+22.482 +G01 X+17.518 Y-11.981 +G01 X+17.456 Y-11.983 +G03 X+17.455 Y-12.832 I+0.044 J-0.424 +G01 X+17.5 Y-12.835 +G01 X+22.482 Y-12.912 +G01 X+22.554 Y-12.911 +G03 X+22.566 Y-11.869 I-0.054 J+0.522 +G01 X+22.5 Y-11.864 +G01 X+22.482 +G01 X+17.518 Y-11.794 +G01 X+17.437 Y-11.796 +G03 X+17.434 Y-13.025 I+0.063 J-0.615 +G01 X+17.5 Y-13.029 +G01 X+22.482 Y-13.1 +G01 X+22.552 Y-13.098 +G03 X+22.552 Y-11.702 I-0.052 J+0.698 +G01 X+22.5 Y-11.7 +G01 X+17.5 +G03 X+17.448 Y-13.098 I+0 J-0.7 +G01 X+17.5 Y-13.1 +G01 X+22.482 +G01 Z-1.475 F10000 +G00 Z+3.525 +G00 X+22.777 Y-12.678 +G00 Z-2.369 +G03 X+22.482 Y-12.4 Z-2.969 I-0.299 J-0.022 F2000 K0.033 +G01 X+17.607 Y-12.332 F2000 +G03 X+17.507 Y-12.419 I-0.001 J-0.1 +G01 X+17.5 Y-12.469 +G01 X+22.482 Y-12.537 +G01 X+22.515 Y-12.536 +G03 X+22.544 Y-12.531 I-0.004 J+0.1 +G01 X+22.551 Y-12.528 +G01 X+22.57 Y-12.519 +G01 X+22.577 Y-12.515 +G01 X+22.596 Y-12.5 +G01 X+22.603 Y-12.493 +G03 X+22.628 Y-12.45 I-0.071 J+0.07 +G01 X+22.636 Y-12.423 +G03 X+22.639 Y-12.384 I-0.096 J+0.027 +G01 X+22.637 Y-12.37 +G01 X+22.631 Y-12.346 +G01 X+22.629 Y-12.34 +G03 X+22.59 Y-12.292 I-0.093 J-0.036 +G01 X+22.559 Y-12.272 +G03 X+22.517 Y-12.257 I-0.054 J-0.084 +G01 X+22.5 Y-12.255 +G01 X+22.482 Y-12.254 +G01 X+17.518 Y-12.169 +G01 X+17.466 Y-12.172 +G03 X+17.433 Y-12.179 I+0.005 J-0.099 +G01 X+17.387 Y-12.198 +G01 X+17.37 Y-12.207 +G01 X+17.363 Y-12.212 +G01 X+17.347 Y-12.224 +G01 X+17.335 Y-12.235 +G01 X+17.32 Y-12.251 +G03 X+17.298 Y-12.289 I+0.074 J-0.068 +G01 X+17.271 Y-12.379 +G03 X+17.267 Y-12.418 I+0.095 J-0.029 +G01 X+17.269 Y-12.442 +G03 X+17.278 Y-12.474 I+0.1 J+0.011 +G01 X+17.305 Y-12.53 +G01 X+17.319 Y-12.552 +G01 X+17.334 Y-12.569 +G01 X+17.351 Y-12.585 +G01 X+17.369 Y-12.598 +G01 X+17.403 Y-12.617 +G01 X+17.428 Y-12.627 +G01 X+17.453 Y-12.634 +G01 X+17.5 Y-12.639 +G01 X+22.482 Y-12.725 +G01 X+22.534 Y-12.724 +G03 X+22.542 Y-12.062 I-0.034 J+0.331 +G01 X+22.5 Y-12.059 +G01 X+22.482 +G01 X+17.518 Y-11.981 +G01 X+17.456 Y-11.983 +G03 X+17.455 Y-12.832 I+0.044 J-0.424 +G01 X+17.5 Y-12.835 +G01 X+22.482 Y-12.912 +G01 X+22.554 Y-12.911 +G03 X+22.566 Y-11.869 I-0.054 J+0.522 +G01 X+22.5 Y-11.864 +G01 X+22.482 +G01 X+17.518 Y-11.794 +G01 X+17.437 Y-11.796 +G03 X+17.434 Y-13.025 I+0.063 J-0.615 +G01 X+17.5 Y-13.029 +G01 X+22.482 Y-13.1 +G01 X+22.552 Y-13.098 +G03 X+22.552 Y-11.702 I-0.052 J+0.698 +G01 X+22.5 Y-11.7 +G01 X+17.5 +G03 X+17.448 Y-13.098 I+0 J-0.7 +G01 X+17.5 Y-13.1 +G01 X+22.482 +G01 Z-1.969 F10000 +G00 Z+3.031 +G00 X+22.777 Y-12.678 +G00 Z-2.863 +G03 X+22.482 Y-12.4 Z-3.463 I-0.299 J-0.022 F2000 K0.033 +G01 X+17.607 Y-12.332 F2000 +G03 X+17.507 Y-12.419 I-0.001 J-0.1 +G01 X+17.5 Y-12.469 +G01 X+22.482 Y-12.537 +G01 X+22.515 Y-12.536 +G03 X+22.544 Y-12.531 I-0.004 J+0.1 +G01 X+22.551 Y-12.528 +G01 X+22.57 Y-12.519 +G01 X+22.577 Y-12.515 +G01 X+22.596 Y-12.5 +G01 X+22.603 Y-12.493 +G03 X+22.628 Y-12.45 I-0.071 J+0.07 +G01 X+22.636 Y-12.423 +G03 X+22.639 Y-12.384 I-0.096 J+0.027 +G01 X+22.637 Y-12.37 +G01 X+22.631 Y-12.346 +G01 X+22.629 Y-12.34 +G03 X+22.59 Y-12.292 I-0.093 J-0.036 +G01 X+22.559 Y-12.272 +G03 X+22.517 Y-12.257 I-0.054 J-0.084 +G01 X+22.5 Y-12.255 +G01 X+22.482 Y-12.254 +G01 X+17.518 Y-12.169 +G01 X+17.466 Y-12.172 +G03 X+17.433 Y-12.179 I+0.005 J-0.099 +G01 X+17.387 Y-12.198 +G01 X+17.37 Y-12.207 +G01 X+17.363 Y-12.212 +G01 X+17.347 Y-12.224 +G01 X+17.335 Y-12.235 +G01 X+17.32 Y-12.251 +G03 X+17.298 Y-12.289 I+0.074 J-0.068 +G01 X+17.271 Y-12.379 +G03 X+17.267 Y-12.418 I+0.095 J-0.029 +G01 X+17.269 Y-12.442 +G03 X+17.278 Y-12.474 I+0.1 J+0.011 +G01 X+17.305 Y-12.53 +G01 X+17.319 Y-12.552 +G01 X+17.334 Y-12.569 +G01 X+17.351 Y-12.585 +G01 X+17.369 Y-12.598 +G01 X+17.403 Y-12.617 +G01 X+17.428 Y-12.627 +G01 X+17.453 Y-12.634 +G01 X+17.5 Y-12.639 +G01 X+22.482 Y-12.725 +G01 X+22.534 Y-12.724 +G03 X+22.542 Y-12.062 I-0.034 J+0.331 +G01 X+22.5 Y-12.059 +G01 X+22.482 +G01 X+17.518 Y-11.981 +G01 X+17.456 Y-11.983 +G03 X+17.455 Y-12.832 I+0.044 J-0.424 +G01 X+17.5 Y-12.835 +G01 X+22.482 Y-12.912 +G01 X+22.554 Y-12.911 +G03 X+22.566 Y-11.869 I-0.054 J+0.522 +G01 X+22.5 Y-11.864 +G01 X+22.482 +G01 X+17.518 Y-11.794 +G01 X+17.437 Y-11.796 +G03 X+17.434 Y-13.025 I+0.063 J-0.615 +G01 X+17.5 Y-13.029 +G01 X+22.482 Y-13.1 +G01 X+22.552 Y-13.098 +G03 X+22.552 Y-11.702 I-0.052 J+0.698 +G01 X+22.5 Y-11.7 +G01 X+17.5 +G03 X+17.448 Y-13.098 I+0 J-0.7 +G01 X+17.5 Y-13.1 +G01 X+22.482 +G01 Z-2.463 F10000 +G00 Z+2.538 +G00 X+22.777 Y-12.678 +G00 Z-3.356 +G03 X+22.482 Y-12.4 Z-3.956 I-0.299 J-0.022 F2000 K0.033 +G01 X+17.607 Y-12.332 F2000 +G03 X+17.507 Y-12.419 I-0.001 J-0.1 +G01 X+17.5 Y-12.469 +G01 X+22.482 Y-12.537 +G01 X+22.515 Y-12.536 +G03 X+22.544 Y-12.531 I-0.004 J+0.1 +G01 X+22.551 Y-12.528 +G01 X+22.57 Y-12.519 +G01 X+22.577 Y-12.515 +G01 X+22.596 Y-12.5 +G01 X+22.603 Y-12.493 +G03 X+22.628 Y-12.45 I-0.071 J+0.07 +G01 X+22.636 Y-12.423 +G03 X+22.639 Y-12.384 I-0.096 J+0.027 +G01 X+22.637 Y-12.37 +G01 X+22.631 Y-12.346 +G01 X+22.629 Y-12.34 +G03 X+22.59 Y-12.292 I-0.093 J-0.036 +G01 X+22.559 Y-12.272 +G03 X+22.517 Y-12.257 I-0.054 J-0.084 +G01 X+22.5 Y-12.255 +G01 X+22.482 Y-12.254 +G01 X+17.518 Y-12.169 +G01 X+17.466 Y-12.172 +G03 X+17.433 Y-12.179 I+0.005 J-0.099 +G01 X+17.387 Y-12.198 +G01 X+17.37 Y-12.207 +G01 X+17.363 Y-12.212 +G01 X+17.347 Y-12.224 +G01 X+17.335 Y-12.235 +G01 X+17.32 Y-12.251 +G03 X+17.298 Y-12.289 I+0.074 J-0.068 +G01 X+17.271 Y-12.379 +G03 X+17.267 Y-12.418 I+0.095 J-0.029 +G01 X+17.269 Y-12.442 +G03 X+17.278 Y-12.474 I+0.1 J+0.011 +G01 X+17.305 Y-12.53 +G01 X+17.319 Y-12.552 +G01 X+17.334 Y-12.569 +G01 X+17.351 Y-12.585 +G01 X+17.369 Y-12.598 +G01 X+17.403 Y-12.617 +G01 X+17.428 Y-12.627 +G01 X+17.453 Y-12.634 +G01 X+17.5 Y-12.639 +G01 X+22.482 Y-12.725 +G01 X+22.534 Y-12.724 +G03 X+22.542 Y-12.062 I-0.034 J+0.331 +G01 X+22.5 Y-12.059 +G01 X+22.482 +G01 X+17.518 Y-11.981 +G01 X+17.456 Y-11.983 +G03 X+17.455 Y-12.832 I+0.044 J-0.424 +G01 X+17.5 Y-12.835 +G01 X+22.482 Y-12.912 +G01 X+22.554 Y-12.911 +G03 X+22.566 Y-11.869 I-0.054 J+0.522 +G01 X+22.5 Y-11.864 +G01 X+22.482 +G01 X+17.518 Y-11.794 +G01 X+17.437 Y-11.796 +G03 X+17.434 Y-13.025 I+0.063 J-0.615 +G01 X+17.5 Y-13.029 +G01 X+22.482 Y-13.1 +G01 X+22.552 Y-13.098 +G03 X+22.552 Y-11.702 I-0.052 J+0.698 +G01 X+22.5 Y-11.7 +G01 X+17.5 +G03 X+17.448 Y-13.098 I+0 J-0.7 +G01 X+17.5 Y-13.1 +G01 X+22.482 +G01 Z-2.956 F10000 +G00 Z+2.044 +G00 X+22.777 Y-12.678 +G00 Z-3.85 +G03 X+22.482 Y-12.4 Z-4.45 I-0.299 J-0.022 F2000 K0.033 +G01 X+17.607 Y-12.332 F2000 +G03 X+17.507 Y-12.419 I-0.001 J-0.1 +G01 X+17.5 Y-12.469 +G01 X+22.482 Y-12.537 +G01 X+22.515 Y-12.536 +G03 X+22.544 Y-12.531 I-0.004 J+0.1 +G01 X+22.551 Y-12.528 +G01 X+22.57 Y-12.519 +G01 X+22.577 Y-12.515 +G01 X+22.596 Y-12.5 +G01 X+22.603 Y-12.493 +G03 X+22.628 Y-12.45 I-0.071 J+0.07 +G01 X+22.636 Y-12.423 +G03 X+22.639 Y-12.384 I-0.096 J+0.027 +G01 X+22.637 Y-12.37 +G01 X+22.631 Y-12.346 +G01 X+22.629 Y-12.34 +G03 X+22.59 Y-12.292 I-0.093 J-0.036 +G01 X+22.559 Y-12.272 +G03 X+22.517 Y-12.257 I-0.054 J-0.084 +G01 X+22.5 Y-12.255 +G01 X+22.482 Y-12.254 +G01 X+17.518 Y-12.169 +G01 X+17.466 Y-12.172 +G03 X+17.433 Y-12.179 I+0.005 J-0.099 +G01 X+17.387 Y-12.198 +G01 X+17.37 Y-12.207 +G01 X+17.363 Y-12.212 +G01 X+17.347 Y-12.224 +G01 X+17.335 Y-12.235 +G01 X+17.32 Y-12.251 +G03 X+17.298 Y-12.289 I+0.074 J-0.068 +G01 X+17.271 Y-12.379 +G03 X+17.267 Y-12.418 I+0.095 J-0.029 +G01 X+17.269 Y-12.442 +G03 X+17.278 Y-12.474 I+0.1 J+0.011 +G01 X+17.305 Y-12.53 +G01 X+17.319 Y-12.552 +G01 X+17.334 Y-12.569 +G01 X+17.351 Y-12.585 +G01 X+17.369 Y-12.598 +G01 X+17.403 Y-12.617 +G01 X+17.428 Y-12.627 +G01 X+17.453 Y-12.634 +G01 X+17.5 Y-12.639 +G01 X+22.482 Y-12.725 +G01 X+22.534 Y-12.724 +G03 X+22.542 Y-12.062 I-0.034 J+0.331 +G01 X+22.5 Y-12.059 +G01 X+22.482 +G01 X+17.518 Y-11.981 +G01 X+17.456 Y-11.983 +G03 X+17.455 Y-12.832 I+0.044 J-0.424 +G01 X+17.5 Y-12.835 +G01 X+22.482 Y-12.912 +G01 X+22.554 Y-12.911 +G03 X+22.566 Y-11.869 I-0.054 J+0.522 +G01 X+22.5 Y-11.864 +G01 X+22.482 +G01 X+17.518 Y-11.794 +G01 X+17.437 Y-11.796 +G03 X+17.434 Y-13.025 I+0.063 J-0.615 +G01 X+17.5 Y-13.029 +G01 X+22.482 Y-13.1 +G01 X+22.552 Y-13.098 +G03 X+22.552 Y-11.702 I-0.052 J+0.698 +G01 X+22.5 Y-11.7 +G01 X+17.5 +G03 X+17.448 Y-13.098 I+0 J-0.7 +G01 X+17.5 Y-13.1 +G01 X+22.482 +G01 Z+0.55 F10000 +G00 Z+5.55 +(#HSC OFF) +(#TRAFO OFF) +; - EB oblong 2 +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G00 X+22.798 Y-16.674 Z+4.606 +G00 Z-0.394 +G03 X+22.5 Y-16.4 Z-0.994 I-0.298 J-0.026 F2000 K0.033 +G01 X+17.5 Y-16.394 F2000 +G01 Y-16.406 +G01 X+22.482 Y-16.412 +G01 X+22.5 Y-16.413 +G01 X+22.507 Y-16.389 +G01 X+22.5 Y-16.387 +G01 X+17.572 Y-16.326 +G03 X+17.476 Y-16.393 I-0.001 J-0.1 +G01 X+17.453 Y-16.459 +G01 X+17.458 Y-16.463 +G01 X+17.46 Y-16.464 +G03 X+17.489 Y-16.474 I+0.046 J+0.089 +G01 X+17.5 Y-16.475 +G01 X+22.426 Y-16.537 +G03 X+22.522 Y-16.466 I+0.001 J+0.1 +G01 X+22.547 Y-16.389 +G03 X+22.452 Y-16.259 I-0.096 J+0.03 +G01 X+17.571 Y-16.213 +G03 X+17.476 Y-16.28 I-0.001 J-0.1 +G01 X+17.414 Y-16.457 +G03 X+17.49 Y-16.589 I+0.094 J-0.034 +G01 X+17.5 Y-16.591 +G01 X+22.482 Y-16.637 +G01 X+22.5 +G01 X+22.525 Y-16.636 +G03 X+22.574 Y-16.173 I-0.025 J+0.236 +G02 X+22.516 Y-16.132 I+0.026 J+0.096 +G03 X+22.432 Y-16.086 I-0.084 J-0.054 +G01 X+17.5 Y-16.081 +G03 X+17.467 Y-16.718 I+0 J-0.32 +G01 X+17.5 Y-16.72 +G01 X+22.482 Y-16.725 +G01 X+22.5 +G03 X+22.573 Y-16.083 I+0 J+0.325 +G02 X+22.517 Y-16.043 I+0.026 J+0.097 +G03 X+22.434 Y-15.999 I-0.083 J-0.056 +G01 X+17.5 Y-15.994 +G03 X+17.457 Y-16.805 I+0 J-0.407 +G01 X+17.5 Y-16.807 +G01 X+22.482 Y-16.812 +G01 X+22.5 +G03 X+22.628 Y-16.007 I+0 J+0.413 +G01 X+22.586 Y-15.995 +G01 X+22.577 Y-15.994 +G02 X+22.52 Y-15.963 I+0.014 J+0.093 +G03 X+22.448 Y-15.932 I-0.072 J-0.069 +G01 X+17.5 Y-15.913 +G03 X+17.448 Y-16.89 I+0 J-0.49 +G01 X+17.5 Y-16.893 +G01 X+22.482 Y-16.912 +G01 X+22.5 +G03 X+22.556 Y-15.868 I+0 J+0.523 +G01 X+22.5 Y-15.865 +G01 X+17.5 Y-15.794 +G03 X+17.434 Y-17.025 I+0 J-0.617 +G01 X+17.5 Y-17.029 +G01 X+22.482 Y-17.1 +G01 X+22.5 +G03 X+22.552 Y-15.702 I+0 J+0.7 +G01 X+22.5 Y-15.7 +G01 X+17.5 +G03 X+17.448 Y-17.098 I+0 J-0.7 +G01 X+17.5 Y-17.1 +G01 X+22.5 +G01 Z+0.006 F10000 +G00 Z+5.006 +G00 X+22.798 Y-16.674 +G00 Z-0.888 +G03 X+22.5 Y-16.4 Z-1.488 I-0.298 J-0.026 F2000 K0.033 +G01 X+17.5 Y-16.394 F2000 +G01 Y-16.406 +G01 X+22.482 Y-16.412 +G01 X+22.5 Y-16.413 +G01 X+22.507 Y-16.389 +G01 X+22.5 Y-16.387 +G01 X+17.572 Y-16.326 +G03 X+17.476 Y-16.393 I-0.001 J-0.1 +G01 X+17.453 Y-16.459 +G01 X+17.458 Y-16.463 +G01 X+17.46 Y-16.464 +G03 X+17.489 Y-16.474 I+0.046 J+0.089 +G01 X+17.5 Y-16.475 +G01 X+22.426 Y-16.537 +G03 X+22.522 Y-16.466 I+0.001 J+0.1 +G01 X+22.547 Y-16.389 +G03 X+22.452 Y-16.259 I-0.096 J+0.03 +G01 X+17.571 Y-16.213 +G03 X+17.476 Y-16.28 I-0.001 J-0.1 +G01 X+17.414 Y-16.457 +G03 X+17.49 Y-16.589 I+0.094 J-0.034 +G01 X+17.5 Y-16.591 +G01 X+22.482 Y-16.637 +G01 X+22.5 +G01 X+22.525 Y-16.636 +G03 X+22.574 Y-16.173 I-0.025 J+0.236 +G02 X+22.516 Y-16.132 I+0.026 J+0.096 +G03 X+22.432 Y-16.086 I-0.084 J-0.054 +G01 X+17.5 Y-16.081 +G03 X+17.467 Y-16.718 I+0 J-0.32 +G01 X+17.5 Y-16.72 +G01 X+22.482 Y-16.725 +G01 X+22.5 +G03 X+22.573 Y-16.083 I+0 J+0.325 +G02 X+22.517 Y-16.043 I+0.026 J+0.097 +G03 X+22.434 Y-15.999 I-0.083 J-0.056 +G01 X+17.5 Y-15.994 +G03 X+17.457 Y-16.805 I+0 J-0.407 +G01 X+17.5 Y-16.807 +G01 X+22.482 Y-16.812 +G01 X+22.5 +G03 X+22.628 Y-16.007 I+0 J+0.413 +G01 X+22.586 Y-15.995 +G01 X+22.577 Y-15.994 +G02 X+22.52 Y-15.963 I+0.014 J+0.093 +G03 X+22.448 Y-15.932 I-0.072 J-0.069 +G01 X+17.5 Y-15.913 +G03 X+17.448 Y-16.89 I+0 J-0.49 +G01 X+17.5 Y-16.893 +G01 X+22.482 Y-16.912 +G01 X+22.5 +G03 X+22.556 Y-15.868 I+0 J+0.523 +G01 X+22.5 Y-15.865 +G01 X+17.5 Y-15.794 +G03 X+17.434 Y-17.025 I+0 J-0.617 +G01 X+17.5 Y-17.029 +G01 X+22.482 Y-17.1 +G01 X+22.5 +G03 X+22.552 Y-15.702 I+0 J+0.7 +G01 X+22.5 Y-15.7 +G01 X+17.5 +G03 X+17.448 Y-17.098 I+0 J-0.7 +G01 X+17.5 Y-17.1 +G01 X+22.5 +G01 Z-0.488 F10000 +G00 Z+4.513 +G00 X+22.798 Y-16.674 +G00 Z-1.381 +G03 X+22.5 Y-16.4 Z-1.981 I-0.298 J-0.026 F2000 K0.033 +G01 X+17.5 Y-16.394 F2000 +G01 Y-16.406 +G01 X+22.482 Y-16.412 +G01 X+22.5 Y-16.413 +G01 X+22.507 Y-16.389 +G01 X+22.5 Y-16.387 +G01 X+17.572 Y-16.326 +G03 X+17.476 Y-16.393 I-0.001 J-0.1 +G01 X+17.453 Y-16.459 +G01 X+17.458 Y-16.463 +G01 X+17.46 Y-16.464 +G03 X+17.489 Y-16.474 I+0.046 J+0.089 +G01 X+17.5 Y-16.475 +G01 X+22.426 Y-16.537 +G03 X+22.522 Y-16.466 I+0.001 J+0.1 +G01 X+22.547 Y-16.389 +G03 X+22.452 Y-16.259 I-0.096 J+0.03 +G01 X+17.571 Y-16.213 +G03 X+17.476 Y-16.28 I-0.001 J-0.1 +G01 X+17.414 Y-16.457 +G03 X+17.49 Y-16.589 I+0.094 J-0.034 +G01 X+17.5 Y-16.591 +G01 X+22.482 Y-16.637 +G01 X+22.5 +G01 X+22.525 Y-16.636 +G03 X+22.574 Y-16.173 I-0.025 J+0.236 +G02 X+22.516 Y-16.132 I+0.026 J+0.096 +G03 X+22.432 Y-16.086 I-0.084 J-0.054 +G01 X+17.5 Y-16.081 +G03 X+17.467 Y-16.718 I+0 J-0.32 +G01 X+17.5 Y-16.72 +G01 X+22.482 Y-16.725 +G01 X+22.5 +G03 X+22.573 Y-16.083 I+0 J+0.325 +G02 X+22.517 Y-16.043 I+0.026 J+0.097 +G03 X+22.434 Y-15.999 I-0.083 J-0.056 +G01 X+17.5 Y-15.994 +G03 X+17.457 Y-16.805 I+0 J-0.407 +G01 X+17.5 Y-16.807 +G01 X+22.482 Y-16.812 +G01 X+22.5 +G03 X+22.628 Y-16.007 I+0 J+0.413 +G01 X+22.586 Y-15.995 +G01 X+22.577 Y-15.994 +G02 X+22.52 Y-15.963 I+0.014 J+0.093 +G03 X+22.448 Y-15.932 I-0.072 J-0.069 +G01 X+17.5 Y-15.913 +G03 X+17.448 Y-16.89 I+0 J-0.49 +G01 X+17.5 Y-16.893 +G01 X+22.482 Y-16.912 +G01 X+22.5 +G03 X+22.556 Y-15.868 I+0 J+0.523 +G01 X+22.5 Y-15.865 +G01 X+17.5 Y-15.794 +G03 X+17.434 Y-17.025 I+0 J-0.617 +G01 X+17.5 Y-17.029 +G01 X+22.482 Y-17.1 +G01 X+22.5 +G03 X+22.552 Y-15.702 I+0 J+0.7 +G01 X+22.5 Y-15.7 +G01 X+17.5 +G03 X+17.448 Y-17.098 I+0 J-0.7 +G01 X+17.5 Y-17.1 +G01 X+22.5 +G01 Z-0.981 F10000 +G00 Z+4.019 +G00 X+22.798 Y-16.674 +G00 Z-1.875 +G03 X+22.5 Y-16.4 Z-2.475 I-0.298 J-0.026 F2000 K0.033 +G01 X+17.5 Y-16.394 F2000 +G01 Y-16.406 +G01 X+22.482 Y-16.412 +G01 X+22.5 Y-16.413 +G01 X+22.507 Y-16.389 +G01 X+22.5 Y-16.387 +G01 X+17.572 Y-16.326 +G03 X+17.476 Y-16.393 I-0.001 J-0.1 +G01 X+17.453 Y-16.459 +G01 X+17.458 Y-16.463 +G01 X+17.46 Y-16.464 +G03 X+17.489 Y-16.474 I+0.046 J+0.089 +G01 X+17.5 Y-16.475 +G01 X+22.426 Y-16.537 +G03 X+22.522 Y-16.466 I+0.001 J+0.1 +G01 X+22.547 Y-16.389 +G03 X+22.452 Y-16.259 I-0.096 J+0.03 +G01 X+17.571 Y-16.213 +G03 X+17.476 Y-16.28 I-0.001 J-0.1 +G01 X+17.414 Y-16.457 +G03 X+17.49 Y-16.589 I+0.094 J-0.034 +G01 X+17.5 Y-16.591 +G01 X+22.482 Y-16.637 +G01 X+22.5 +G01 X+22.525 Y-16.636 +G03 X+22.574 Y-16.173 I-0.025 J+0.236 +G02 X+22.516 Y-16.132 I+0.026 J+0.096 +G03 X+22.432 Y-16.086 I-0.084 J-0.054 +G01 X+17.5 Y-16.081 +G03 X+17.467 Y-16.718 I+0 J-0.32 +G01 X+17.5 Y-16.72 +G01 X+22.482 Y-16.725 +G01 X+22.5 +G03 X+22.573 Y-16.083 I+0 J+0.325 +G02 X+22.517 Y-16.043 I+0.026 J+0.097 +G03 X+22.434 Y-15.999 I-0.083 J-0.056 +G01 X+17.5 Y-15.994 +G03 X+17.457 Y-16.805 I+0 J-0.407 +G01 X+17.5 Y-16.807 +G01 X+22.482 Y-16.812 +G01 X+22.5 +G03 X+22.628 Y-16.007 I+0 J+0.413 +G01 X+22.586 Y-15.995 +G01 X+22.577 Y-15.994 +G02 X+22.52 Y-15.963 I+0.014 J+0.093 +G03 X+22.448 Y-15.932 I-0.072 J-0.069 +G01 X+17.5 Y-15.913 +G03 X+17.448 Y-16.89 I+0 J-0.49 +G01 X+17.5 Y-16.893 +G01 X+22.482 Y-16.912 +G01 X+22.5 +G03 X+22.556 Y-15.868 I+0 J+0.523 +G01 X+22.5 Y-15.865 +G01 X+17.5 Y-15.794 +G03 X+17.434 Y-17.025 I+0 J-0.617 +G01 X+17.5 Y-17.029 +G01 X+22.482 Y-17.1 +G01 X+22.5 +G03 X+22.552 Y-15.702 I+0 J+0.7 +G01 X+22.5 Y-15.7 +G01 X+17.5 +G03 X+17.448 Y-17.098 I+0 J-0.7 +G01 X+17.5 Y-17.1 +G01 X+22.5 +G01 Z-1.475 F10000 +G00 Z+3.525 +G00 X+22.798 Y-16.674 +G00 Z-2.369 +G03 X+22.5 Y-16.4 Z-2.969 I-0.298 J-0.026 F2000 K0.033 +G01 X+17.5 Y-16.394 F2000 +G01 Y-16.406 +G01 X+22.482 Y-16.412 +G01 X+22.5 Y-16.413 +G01 X+22.507 Y-16.389 +G01 X+22.5 Y-16.387 +G01 X+17.572 Y-16.326 +G03 X+17.476 Y-16.393 I-0.001 J-0.1 +G01 X+17.453 Y-16.459 +G01 X+17.458 Y-16.463 +G01 X+17.46 Y-16.464 +G03 X+17.489 Y-16.474 I+0.046 J+0.089 +G01 X+17.5 Y-16.475 +G01 X+22.426 Y-16.537 +G03 X+22.522 Y-16.466 I+0.001 J+0.1 +G01 X+22.547 Y-16.389 +G03 X+22.452 Y-16.259 I-0.096 J+0.03 +G01 X+17.571 Y-16.213 +G03 X+17.476 Y-16.28 I-0.001 J-0.1 +G01 X+17.414 Y-16.457 +G03 X+17.49 Y-16.589 I+0.094 J-0.034 +G01 X+17.5 Y-16.591 +G01 X+22.482 Y-16.637 +G01 X+22.5 +G01 X+22.525 Y-16.636 +G03 X+22.574 Y-16.173 I-0.025 J+0.236 +G02 X+22.516 Y-16.132 I+0.026 J+0.096 +G03 X+22.432 Y-16.086 I-0.084 J-0.054 +G01 X+17.5 Y-16.081 +G03 X+17.467 Y-16.718 I+0 J-0.32 +G01 X+17.5 Y-16.72 +G01 X+22.482 Y-16.725 +G01 X+22.5 +G03 X+22.573 Y-16.083 I+0 J+0.325 +G02 X+22.517 Y-16.043 I+0.026 J+0.097 +G03 X+22.434 Y-15.999 I-0.083 J-0.056 +G01 X+17.5 Y-15.994 +G03 X+17.457 Y-16.805 I+0 J-0.407 +G01 X+17.5 Y-16.807 +G01 X+22.482 Y-16.812 +G01 X+22.5 +G03 X+22.628 Y-16.007 I+0 J+0.413 +G01 X+22.586 Y-15.995 +G01 X+22.577 Y-15.994 +G02 X+22.52 Y-15.963 I+0.014 J+0.093 +G03 X+22.448 Y-15.932 I-0.072 J-0.069 +G01 X+17.5 Y-15.913 +G03 X+17.448 Y-16.89 I+0 J-0.49 +G01 X+17.5 Y-16.893 +G01 X+22.482 Y-16.912 +G01 X+22.5 +G03 X+22.556 Y-15.868 I+0 J+0.523 +G01 X+22.5 Y-15.865 +G01 X+17.5 Y-15.794 +G03 X+17.434 Y-17.025 I+0 J-0.617 +G01 X+17.5 Y-17.029 +G01 X+22.482 Y-17.1 +G01 X+22.5 +G03 X+22.552 Y-15.702 I+0 J+0.7 +G01 X+22.5 Y-15.7 +G01 X+17.5 +G03 X+17.448 Y-17.098 I+0 J-0.7 +G01 X+17.5 Y-17.1 +G01 X+22.5 +G01 Z-1.969 F10000 +G00 Z+3.031 +G00 X+22.798 Y-16.674 +G00 Z-2.863 +G03 X+22.5 Y-16.4 Z-3.463 I-0.298 J-0.026 F2000 K0.033 +G01 X+17.5 Y-16.394 F2000 +G01 Y-16.406 +G01 X+22.482 Y-16.412 +G01 X+22.5 Y-16.413 +G01 X+22.507 Y-16.389 +G01 X+22.5 Y-16.387 +G01 X+17.572 Y-16.326 +G03 X+17.476 Y-16.393 I-0.001 J-0.1 +G01 X+17.453 Y-16.459 +G01 X+17.458 Y-16.463 +G01 X+17.46 Y-16.464 +G03 X+17.489 Y-16.474 I+0.046 J+0.089 +G01 X+17.5 Y-16.475 +G01 X+22.426 Y-16.537 +G03 X+22.522 Y-16.466 I+0.001 J+0.1 +G01 X+22.547 Y-16.389 +G03 X+22.452 Y-16.259 I-0.096 J+0.03 +G01 X+17.571 Y-16.213 +G03 X+17.476 Y-16.28 I-0.001 J-0.1 +G01 X+17.414 Y-16.457 +G03 X+17.49 Y-16.589 I+0.094 J-0.034 +G01 X+17.5 Y-16.591 +G01 X+22.482 Y-16.637 +G01 X+22.5 +G01 X+22.525 Y-16.636 +G03 X+22.574 Y-16.173 I-0.025 J+0.236 +G02 X+22.516 Y-16.132 I+0.026 J+0.096 +G03 X+22.432 Y-16.086 I-0.084 J-0.054 +G01 X+17.5 Y-16.081 +G03 X+17.467 Y-16.718 I+0 J-0.32 +G01 X+17.5 Y-16.72 +G01 X+22.482 Y-16.725 +G01 X+22.5 +G03 X+22.573 Y-16.083 I+0 J+0.325 +G02 X+22.517 Y-16.043 I+0.026 J+0.097 +G03 X+22.434 Y-15.999 I-0.083 J-0.056 +G01 X+17.5 Y-15.994 +G03 X+17.457 Y-16.805 I+0 J-0.407 +G01 X+17.5 Y-16.807 +G01 X+22.482 Y-16.812 +G01 X+22.5 +G03 X+22.628 Y-16.007 I+0 J+0.413 +G01 X+22.586 Y-15.995 +G01 X+22.577 Y-15.994 +G02 X+22.52 Y-15.963 I+0.014 J+0.093 +G03 X+22.448 Y-15.932 I-0.072 J-0.069 +G01 X+17.5 Y-15.913 +G03 X+17.448 Y-16.89 I+0 J-0.49 +G01 X+17.5 Y-16.893 +G01 X+22.482 Y-16.912 +G01 X+22.5 +G03 X+22.556 Y-15.868 I+0 J+0.523 +G01 X+22.5 Y-15.865 +G01 X+17.5 Y-15.794 +G03 X+17.434 Y-17.025 I+0 J-0.617 +G01 X+17.5 Y-17.029 +G01 X+22.482 Y-17.1 +G01 X+22.5 +G03 X+22.552 Y-15.702 I+0 J+0.7 +G01 X+22.5 Y-15.7 +G01 X+17.5 +G03 X+17.448 Y-17.098 I+0 J-0.7 +G01 X+17.5 Y-17.1 +G01 X+22.5 +G01 Z-2.463 F10000 +G00 Z+2.538 +G00 X+22.798 Y-16.674 +G00 Z-3.356 +G03 X+22.5 Y-16.4 Z-3.956 I-0.298 J-0.026 F2000 K0.033 +G01 X+17.5 Y-16.394 F2000 +G01 Y-16.406 +G01 X+22.482 Y-16.412 +G01 X+22.5 Y-16.413 +G01 X+22.507 Y-16.389 +G01 X+22.5 Y-16.387 +G01 X+17.572 Y-16.326 +G03 X+17.476 Y-16.393 I-0.001 J-0.1 +G01 X+17.453 Y-16.459 +G01 X+17.458 Y-16.463 +G01 X+17.46 Y-16.464 +G03 X+17.489 Y-16.474 I+0.046 J+0.089 +G01 X+17.5 Y-16.475 +G01 X+22.426 Y-16.537 +G03 X+22.522 Y-16.466 I+0.001 J+0.1 +G01 X+22.547 Y-16.389 +G03 X+22.452 Y-16.259 I-0.096 J+0.03 +G01 X+17.571 Y-16.213 +G03 X+17.476 Y-16.28 I-0.001 J-0.1 +G01 X+17.414 Y-16.457 +G03 X+17.49 Y-16.589 I+0.094 J-0.034 +G01 X+17.5 Y-16.591 +G01 X+22.482 Y-16.637 +G01 X+22.5 +G01 X+22.525 Y-16.636 +G03 X+22.574 Y-16.173 I-0.025 J+0.236 +G02 X+22.516 Y-16.132 I+0.026 J+0.096 +G03 X+22.432 Y-16.086 I-0.084 J-0.054 +G01 X+17.5 Y-16.081 +G03 X+17.467 Y-16.718 I+0 J-0.32 +G01 X+17.5 Y-16.72 +G01 X+22.482 Y-16.725 +G01 X+22.5 +G03 X+22.573 Y-16.083 I+0 J+0.325 +G02 X+22.517 Y-16.043 I+0.026 J+0.097 +G03 X+22.434 Y-15.999 I-0.083 J-0.056 +G01 X+17.5 Y-15.994 +G03 X+17.457 Y-16.805 I+0 J-0.407 +G01 X+17.5 Y-16.807 +G01 X+22.482 Y-16.812 +G01 X+22.5 +G03 X+22.628 Y-16.007 I+0 J+0.413 +G01 X+22.586 Y-15.995 +G01 X+22.577 Y-15.994 +G02 X+22.52 Y-15.963 I+0.014 J+0.093 +G03 X+22.448 Y-15.932 I-0.072 J-0.069 +G01 X+17.5 Y-15.913 +G03 X+17.448 Y-16.89 I+0 J-0.49 +G01 X+17.5 Y-16.893 +G01 X+22.482 Y-16.912 +G01 X+22.5 +G03 X+22.556 Y-15.868 I+0 J+0.523 +G01 X+22.5 Y-15.865 +G01 X+17.5 Y-15.794 +G03 X+17.434 Y-17.025 I+0 J-0.617 +G01 X+17.5 Y-17.029 +G01 X+22.482 Y-17.1 +G01 X+22.5 +G03 X+22.552 Y-15.702 I+0 J+0.7 +G01 X+22.5 Y-15.7 +G01 X+17.5 +G03 X+17.448 Y-17.098 I+0 J-0.7 +G01 X+17.5 Y-17.1 +G01 X+22.5 +G01 Z-2.956 F10000 +G00 Z+2.044 +G00 X+22.798 Y-16.674 +G00 Z-3.85 +G03 X+22.5 Y-16.4 Z-4.45 I-0.298 J-0.026 F2000 K0.033 +G01 X+17.5 Y-16.394 F2000 +G01 Y-16.406 +G01 X+22.482 Y-16.412 +G01 X+22.5 Y-16.413 +G01 X+22.507 Y-16.389 +G01 X+22.5 Y-16.387 +G01 X+17.572 Y-16.326 +G03 X+17.476 Y-16.393 I-0.001 J-0.1 +G01 X+17.453 Y-16.459 +G01 X+17.458 Y-16.463 +G01 X+17.46 Y-16.464 +G03 X+17.489 Y-16.474 I+0.046 J+0.089 +G01 X+17.5 Y-16.475 +G01 X+22.426 Y-16.537 +G03 X+22.522 Y-16.466 I+0.001 J+0.1 +G01 X+22.547 Y-16.389 +G03 X+22.452 Y-16.259 I-0.096 J+0.03 +G01 X+17.571 Y-16.213 +G03 X+17.476 Y-16.28 I-0.001 J-0.1 +G01 X+17.414 Y-16.457 +G03 X+17.49 Y-16.589 I+0.094 J-0.034 +G01 X+17.5 Y-16.591 +G01 X+22.482 Y-16.637 +G01 X+22.5 +G01 X+22.525 Y-16.636 +G03 X+22.574 Y-16.173 I-0.025 J+0.236 +G02 X+22.516 Y-16.132 I+0.026 J+0.096 +G03 X+22.432 Y-16.086 I-0.084 J-0.054 +G01 X+17.5 Y-16.081 +G03 X+17.467 Y-16.718 I+0 J-0.32 +G01 X+17.5 Y-16.72 +G01 X+22.482 Y-16.725 +G01 X+22.5 +G03 X+22.573 Y-16.083 I+0 J+0.325 +G02 X+22.517 Y-16.043 I+0.026 J+0.097 +G03 X+22.434 Y-15.999 I-0.083 J-0.056 +G01 X+17.5 Y-15.994 +G03 X+17.457 Y-16.805 I+0 J-0.407 +G01 X+17.5 Y-16.807 +G01 X+22.482 Y-16.812 +G01 X+22.5 +G03 X+22.628 Y-16.007 I+0 J+0.413 +G01 X+22.586 Y-15.995 +G01 X+22.577 Y-15.994 +G02 X+22.52 Y-15.963 I+0.014 J+0.093 +G03 X+22.448 Y-15.932 I-0.072 J-0.069 +G01 X+17.5 Y-15.913 +G03 X+17.448 Y-16.89 I+0 J-0.49 +G01 X+17.5 Y-16.893 +G01 X+22.482 Y-16.912 +G01 X+22.5 +G03 X+22.556 Y-15.868 I+0 J+0.523 +G01 X+22.5 Y-15.865 +G01 X+17.5 Y-15.794 +G03 X+17.434 Y-17.025 I+0 J-0.617 +G01 X+17.5 Y-17.029 +G01 X+22.482 Y-17.1 +G01 X+22.5 +G03 X+22.552 Y-15.702 I+0 J+0.7 +G01 X+22.5 Y-15.7 +G01 X+17.5 +G03 X+17.448 Y-17.098 I+0 J-0.7 +G01 X+17.5 Y-17.1 +G01 X+22.5 +G01 Z+0.55 F10000 +G00 Z+5.55 +(#HSC OFF) +(#TRAFO OFF) +; - EB oblong 3 +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G00 X+18.278 Y-22.713 Z+4.606 +G00 Z-0.394 +G03 X+18 Y-23.008 Z-0.994 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+17.933 Y-27.899 +G03 X+18.033 Y-28 I+0.1 J-0.001 +G01 X+18.069 +G01 X+18.137 Y-23.008 +G01 Y-22.993 +G01 X+18.133 Y-22.969 +G01 X+18.129 Y-22.954 +G03 X+18.117 Y-22.927 I-0.096 J-0.027 +G01 X+18.113 Y-22.921 +G03 X+18.064 Y-22.882 I-0.084 J-0.054 +G01 X+18.025 Y-22.867 +G03 X+17.98 Y-22.861 I-0.035 J-0.094 +G01 X+17.974 Y-22.862 +G03 X+17.935 Y-22.875 I+0.011 J-0.099 +G01 X+17.922 Y-22.882 +G03 X+17.887 Y-22.917 I+0.05 J-0.087 +G01 X+17.871 Y-22.942 +G03 X+17.857 Y-22.981 I+0.086 J-0.052 +G01 X+17.855 Y-23 +G01 X+17.769 Y-27.982 +G01 Y-28 +G01 X+17.777 Y-28.059 +G01 X+17.784 Y-28.082 +G01 X+17.793 Y-28.104 +G03 X+17.813 Y-28.135 I+0.092 J+0.038 +G01 X+17.856 Y-28.181 +G03 X+17.902 Y-28.209 I+0.073 J+0.069 +G01 X+17.98 Y-28.23 +G03 X+18.015 Y-28.233 I+0.027 J+0.096 +G01 X+18.038 Y-28.232 +G03 X+18.08 Y-28.218 I-0.008 J+0.1 +G01 X+18.156 Y-28.174 +G03 X+18.183 Y-28.15 I-0.051 J+0.087 +G01 X+18.186 Y-28.147 +G01 X+18.197 Y-28.13 +G01 X+18.222 Y-28.081 +G01 X+18.23 Y-28.061 +G01 X+18.234 Y-28.045 +G01 X+18.239 Y-28 +G01 X+18.325 Y-23.018 +G01 Y-23.008 +G01 X+18.324 Y-22.966 +G03 X+18.245 Y-22.78 I-0.326 J-0.029 +G01 X+18.22 Y-22.755 +G01 X+18.207 Y-22.744 +G01 X+18.165 Y-22.714 +G03 X+17.661 Y-22.964 I-0.17 J-0.289 +G01 X+17.659 Y-23 +G01 X+17.581 Y-27.982 +G01 X+17.583 Y-28.044 +G03 X+18.432 Y-28.045 I+0.424 J+0.044 +G01 X+18.435 Y-28 +G01 X+18.512 Y-23.008 +G03 X+17.468 Y-22.944 I-0.523 J+0.009 +G01 X+17.465 Y-23 +G01 X+17.394 Y-27.982 +G01 X+17.396 Y-28.063 +G03 X+18.625 Y-28.066 I+0.615 J+0.063 +G01 X+18.629 Y-28 +G01 X+18.7 Y-23.018 +G01 Y-23.008 +G03 X+17.308 Y-22.896 I-0.7 J+0.008 +G01 X+17.302 Y-22.948 +G01 X+17.3 Y-23 +G01 Y-28 +G03 X+18.698 Y-28.052 I+0.7 J+0 +G01 X+18.7 Y-28 +G01 Y-23.008 +G01 Z+0.006 F10000 +G00 Z+5.006 +G00 X+18.278 Y-22.713 +G00 Z-0.888 +G03 X+18 Y-23.008 Z-1.488 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+17.933 Y-27.899 +G03 X+18.033 Y-28 I+0.1 J-0.001 +G01 X+18.069 +G01 X+18.137 Y-23.008 +G01 Y-22.993 +G01 X+18.133 Y-22.969 +G01 X+18.129 Y-22.954 +G03 X+18.117 Y-22.927 I-0.096 J-0.027 +G01 X+18.113 Y-22.921 +G03 X+18.064 Y-22.882 I-0.084 J-0.054 +G01 X+18.025 Y-22.867 +G03 X+17.98 Y-22.861 I-0.035 J-0.094 +G01 X+17.974 Y-22.862 +G03 X+17.935 Y-22.875 I+0.011 J-0.099 +G01 X+17.922 Y-22.882 +G03 X+17.887 Y-22.917 I+0.05 J-0.087 +G01 X+17.871 Y-22.942 +G03 X+17.857 Y-22.981 I+0.086 J-0.052 +G01 X+17.855 Y-23 +G01 X+17.769 Y-27.982 +G01 Y-28 +G01 X+17.777 Y-28.059 +G01 X+17.784 Y-28.082 +G01 X+17.793 Y-28.104 +G03 X+17.813 Y-28.135 I+0.092 J+0.038 +G01 X+17.856 Y-28.181 +G03 X+17.902 Y-28.209 I+0.073 J+0.069 +G01 X+17.98 Y-28.23 +G03 X+18.015 Y-28.233 I+0.027 J+0.096 +G01 X+18.038 Y-28.232 +G03 X+18.08 Y-28.218 I-0.008 J+0.1 +G01 X+18.156 Y-28.174 +G03 X+18.183 Y-28.15 I-0.051 J+0.087 +G01 X+18.186 Y-28.147 +G01 X+18.197 Y-28.13 +G01 X+18.222 Y-28.081 +G01 X+18.23 Y-28.061 +G01 X+18.234 Y-28.045 +G01 X+18.239 Y-28 +G01 X+18.325 Y-23.018 +G01 Y-23.008 +G01 X+18.324 Y-22.966 +G03 X+18.245 Y-22.78 I-0.326 J-0.029 +G01 X+18.22 Y-22.755 +G01 X+18.207 Y-22.744 +G01 X+18.165 Y-22.714 +G03 X+17.661 Y-22.964 I-0.17 J-0.289 +G01 X+17.659 Y-23 +G01 X+17.581 Y-27.982 +G01 X+17.583 Y-28.044 +G03 X+18.432 Y-28.045 I+0.424 J+0.044 +G01 X+18.435 Y-28 +G01 X+18.512 Y-23.008 +G03 X+17.468 Y-22.944 I-0.523 J+0.009 +G01 X+17.465 Y-23 +G01 X+17.394 Y-27.982 +G01 X+17.396 Y-28.063 +G03 X+18.625 Y-28.066 I+0.615 J+0.063 +G01 X+18.629 Y-28 +G01 X+18.7 Y-23.018 +G01 Y-23.008 +G03 X+17.308 Y-22.896 I-0.7 J+0.008 +G01 X+17.302 Y-22.948 +G01 X+17.3 Y-23 +G01 Y-28 +G03 X+18.698 Y-28.052 I+0.7 J+0 +G01 X+18.7 Y-28 +G01 Y-23.008 +G01 Z-0.488 F10000 +G00 Z+4.513 +G00 X+18.278 Y-22.713 +G00 Z-1.381 +G03 X+18 Y-23.008 Z-1.981 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+17.933 Y-27.899 +G03 X+18.033 Y-28 I+0.1 J-0.001 +G01 X+18.069 +G01 X+18.137 Y-23.008 +G01 Y-22.993 +G01 X+18.133 Y-22.969 +G01 X+18.129 Y-22.954 +G03 X+18.117 Y-22.927 I-0.096 J-0.027 +G01 X+18.113 Y-22.921 +G03 X+18.064 Y-22.882 I-0.084 J-0.054 +G01 X+18.025 Y-22.867 +G03 X+17.98 Y-22.861 I-0.035 J-0.094 +G01 X+17.974 Y-22.862 +G03 X+17.935 Y-22.875 I+0.011 J-0.099 +G01 X+17.922 Y-22.882 +G03 X+17.887 Y-22.917 I+0.05 J-0.087 +G01 X+17.871 Y-22.942 +G03 X+17.857 Y-22.981 I+0.086 J-0.052 +G01 X+17.855 Y-23 +G01 X+17.769 Y-27.982 +G01 Y-28 +G01 X+17.777 Y-28.059 +G01 X+17.784 Y-28.082 +G01 X+17.793 Y-28.104 +G03 X+17.813 Y-28.135 I+0.092 J+0.038 +G01 X+17.856 Y-28.181 +G03 X+17.902 Y-28.209 I+0.073 J+0.069 +G01 X+17.98 Y-28.23 +G03 X+18.015 Y-28.233 I+0.027 J+0.096 +G01 X+18.038 Y-28.232 +G03 X+18.08 Y-28.218 I-0.008 J+0.1 +G01 X+18.156 Y-28.174 +G03 X+18.183 Y-28.15 I-0.051 J+0.087 +G01 X+18.186 Y-28.147 +G01 X+18.197 Y-28.13 +G01 X+18.222 Y-28.081 +G01 X+18.23 Y-28.061 +G01 X+18.234 Y-28.045 +G01 X+18.239 Y-28 +G01 X+18.325 Y-23.018 +G01 Y-23.008 +G01 X+18.324 Y-22.966 +G03 X+18.245 Y-22.78 I-0.326 J-0.029 +G01 X+18.22 Y-22.755 +G01 X+18.207 Y-22.744 +G01 X+18.165 Y-22.714 +G03 X+17.661 Y-22.964 I-0.17 J-0.289 +G01 X+17.659 Y-23 +G01 X+17.581 Y-27.982 +G01 X+17.583 Y-28.044 +G03 X+18.432 Y-28.045 I+0.424 J+0.044 +G01 X+18.435 Y-28 +G01 X+18.512 Y-23.008 +G03 X+17.468 Y-22.944 I-0.523 J+0.009 +G01 X+17.465 Y-23 +G01 X+17.394 Y-27.982 +G01 X+17.396 Y-28.063 +G03 X+18.625 Y-28.066 I+0.615 J+0.063 +G01 X+18.629 Y-28 +G01 X+18.7 Y-23.018 +G01 Y-23.008 +G03 X+17.308 Y-22.896 I-0.7 J+0.008 +G01 X+17.302 Y-22.948 +G01 X+17.3 Y-23 +G01 Y-28 +G03 X+18.698 Y-28.052 I+0.7 J+0 +G01 X+18.7 Y-28 +G01 Y-23.008 +G01 Z-0.981 F10000 +G00 Z+4.019 +G00 X+18.278 Y-22.713 +G00 Z-1.875 +G03 X+18 Y-23.008 Z-2.475 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+17.933 Y-27.899 +G03 X+18.033 Y-28 I+0.1 J-0.001 +G01 X+18.069 +G01 X+18.137 Y-23.008 +G01 Y-22.993 +G01 X+18.133 Y-22.969 +G01 X+18.129 Y-22.954 +G03 X+18.117 Y-22.927 I-0.096 J-0.027 +G01 X+18.113 Y-22.921 +G03 X+18.064 Y-22.882 I-0.084 J-0.054 +G01 X+18.025 Y-22.867 +G03 X+17.98 Y-22.861 I-0.035 J-0.094 +G01 X+17.974 Y-22.862 +G03 X+17.935 Y-22.875 I+0.011 J-0.099 +G01 X+17.922 Y-22.882 +G03 X+17.887 Y-22.917 I+0.05 J-0.087 +G01 X+17.871 Y-22.942 +G03 X+17.857 Y-22.981 I+0.086 J-0.052 +G01 X+17.855 Y-23 +G01 X+17.769 Y-27.982 +G01 Y-28 +G01 X+17.777 Y-28.059 +G01 X+17.784 Y-28.082 +G01 X+17.793 Y-28.104 +G03 X+17.813 Y-28.135 I+0.092 J+0.038 +G01 X+17.856 Y-28.181 +G03 X+17.902 Y-28.209 I+0.073 J+0.069 +G01 X+17.98 Y-28.23 +G03 X+18.015 Y-28.233 I+0.027 J+0.096 +G01 X+18.038 Y-28.232 +G03 X+18.08 Y-28.218 I-0.008 J+0.1 +G01 X+18.156 Y-28.174 +G03 X+18.183 Y-28.15 I-0.051 J+0.087 +G01 X+18.186 Y-28.147 +G01 X+18.197 Y-28.13 +G01 X+18.222 Y-28.081 +G01 X+18.23 Y-28.061 +G01 X+18.234 Y-28.045 +G01 X+18.239 Y-28 +G01 X+18.325 Y-23.018 +G01 Y-23.008 +G01 X+18.324 Y-22.966 +G03 X+18.245 Y-22.78 I-0.326 J-0.029 +G01 X+18.22 Y-22.755 +G01 X+18.207 Y-22.744 +G01 X+18.165 Y-22.714 +G03 X+17.661 Y-22.964 I-0.17 J-0.289 +G01 X+17.659 Y-23 +G01 X+17.581 Y-27.982 +G01 X+17.583 Y-28.044 +G03 X+18.432 Y-28.045 I+0.424 J+0.044 +G01 X+18.435 Y-28 +G01 X+18.512 Y-23.008 +G03 X+17.468 Y-22.944 I-0.523 J+0.009 +G01 X+17.465 Y-23 +G01 X+17.394 Y-27.982 +G01 X+17.396 Y-28.063 +G03 X+18.625 Y-28.066 I+0.615 J+0.063 +G01 X+18.629 Y-28 +G01 X+18.7 Y-23.018 +G01 Y-23.008 +G03 X+17.308 Y-22.896 I-0.7 J+0.008 +G01 X+17.302 Y-22.948 +G01 X+17.3 Y-23 +G01 Y-28 +G03 X+18.698 Y-28.052 I+0.7 J+0 +G01 X+18.7 Y-28 +G01 Y-23.008 +G01 Z-1.475 F10000 +G00 Z+3.525 +G00 X+18.278 Y-22.713 +G00 Z-2.369 +G03 X+18 Y-23.008 Z-2.969 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+17.933 Y-27.899 +G03 X+18.033 Y-28 I+0.1 J-0.001 +G01 X+18.069 +G01 X+18.137 Y-23.008 +G01 Y-22.993 +G01 X+18.133 Y-22.969 +G01 X+18.129 Y-22.954 +G03 X+18.117 Y-22.927 I-0.096 J-0.027 +G01 X+18.113 Y-22.921 +G03 X+18.064 Y-22.882 I-0.084 J-0.054 +G01 X+18.025 Y-22.867 +G03 X+17.98 Y-22.861 I-0.035 J-0.094 +G01 X+17.974 Y-22.862 +G03 X+17.935 Y-22.875 I+0.011 J-0.099 +G01 X+17.922 Y-22.882 +G03 X+17.887 Y-22.917 I+0.05 J-0.087 +G01 X+17.871 Y-22.942 +G03 X+17.857 Y-22.981 I+0.086 J-0.052 +G01 X+17.855 Y-23 +G01 X+17.769 Y-27.982 +G01 Y-28 +G01 X+17.777 Y-28.059 +G01 X+17.784 Y-28.082 +G01 X+17.793 Y-28.104 +G03 X+17.813 Y-28.135 I+0.092 J+0.038 +G01 X+17.856 Y-28.181 +G03 X+17.902 Y-28.209 I+0.073 J+0.069 +G01 X+17.98 Y-28.23 +G03 X+18.015 Y-28.233 I+0.027 J+0.096 +G01 X+18.038 Y-28.232 +G03 X+18.08 Y-28.218 I-0.008 J+0.1 +G01 X+18.156 Y-28.174 +G03 X+18.183 Y-28.15 I-0.051 J+0.087 +G01 X+18.186 Y-28.147 +G01 X+18.197 Y-28.13 +G01 X+18.222 Y-28.081 +G01 X+18.23 Y-28.061 +G01 X+18.234 Y-28.045 +G01 X+18.239 Y-28 +G01 X+18.325 Y-23.018 +G01 Y-23.008 +G01 X+18.324 Y-22.966 +G03 X+18.245 Y-22.78 I-0.326 J-0.029 +G01 X+18.22 Y-22.755 +G01 X+18.207 Y-22.744 +G01 X+18.165 Y-22.714 +G03 X+17.661 Y-22.964 I-0.17 J-0.289 +G01 X+17.659 Y-23 +G01 X+17.581 Y-27.982 +G01 X+17.583 Y-28.044 +G03 X+18.432 Y-28.045 I+0.424 J+0.044 +G01 X+18.435 Y-28 +G01 X+18.512 Y-23.008 +G03 X+17.468 Y-22.944 I-0.523 J+0.009 +G01 X+17.465 Y-23 +G01 X+17.394 Y-27.982 +G01 X+17.396 Y-28.063 +G03 X+18.625 Y-28.066 I+0.615 J+0.063 +G01 X+18.629 Y-28 +G01 X+18.7 Y-23.018 +G01 Y-23.008 +G03 X+17.308 Y-22.896 I-0.7 J+0.008 +G01 X+17.302 Y-22.948 +G01 X+17.3 Y-23 +G01 Y-28 +G03 X+18.698 Y-28.052 I+0.7 J+0 +G01 X+18.7 Y-28 +G01 Y-23.008 +G01 Z-1.969 F10000 +G00 Z+3.031 +G00 X+18.278 Y-22.713 +G00 Z-2.863 +G03 X+18 Y-23.008 Z-3.463 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+17.933 Y-27.899 +G03 X+18.033 Y-28 I+0.1 J-0.001 +G01 X+18.069 +G01 X+18.137 Y-23.008 +G01 Y-22.993 +G01 X+18.133 Y-22.969 +G01 X+18.129 Y-22.954 +G03 X+18.117 Y-22.927 I-0.096 J-0.027 +G01 X+18.113 Y-22.921 +G03 X+18.064 Y-22.882 I-0.084 J-0.054 +G01 X+18.025 Y-22.867 +G03 X+17.98 Y-22.861 I-0.035 J-0.094 +G01 X+17.974 Y-22.862 +G03 X+17.935 Y-22.875 I+0.011 J-0.099 +G01 X+17.922 Y-22.882 +G03 X+17.887 Y-22.917 I+0.05 J-0.087 +G01 X+17.871 Y-22.942 +G03 X+17.857 Y-22.981 I+0.086 J-0.052 +G01 X+17.855 Y-23 +G01 X+17.769 Y-27.982 +G01 Y-28 +G01 X+17.777 Y-28.059 +G01 X+17.784 Y-28.082 +G01 X+17.793 Y-28.104 +G03 X+17.813 Y-28.135 I+0.092 J+0.038 +G01 X+17.856 Y-28.181 +G03 X+17.902 Y-28.209 I+0.073 J+0.069 +G01 X+17.98 Y-28.23 +G03 X+18.015 Y-28.233 I+0.027 J+0.096 +G01 X+18.038 Y-28.232 +G03 X+18.08 Y-28.218 I-0.008 J+0.1 +G01 X+18.156 Y-28.174 +G03 X+18.183 Y-28.15 I-0.051 J+0.087 +G01 X+18.186 Y-28.147 +G01 X+18.197 Y-28.13 +G01 X+18.222 Y-28.081 +G01 X+18.23 Y-28.061 +G01 X+18.234 Y-28.045 +G01 X+18.239 Y-28 +G01 X+18.325 Y-23.018 +G01 Y-23.008 +G01 X+18.324 Y-22.966 +G03 X+18.245 Y-22.78 I-0.326 J-0.029 +G01 X+18.22 Y-22.755 +G01 X+18.207 Y-22.744 +G01 X+18.165 Y-22.714 +G03 X+17.661 Y-22.964 I-0.17 J-0.289 +G01 X+17.659 Y-23 +G01 X+17.581 Y-27.982 +G01 X+17.583 Y-28.044 +G03 X+18.432 Y-28.045 I+0.424 J+0.044 +G01 X+18.435 Y-28 +G01 X+18.512 Y-23.008 +G03 X+17.468 Y-22.944 I-0.523 J+0.009 +G01 X+17.465 Y-23 +G01 X+17.394 Y-27.982 +G01 X+17.396 Y-28.063 +G03 X+18.625 Y-28.066 I+0.615 J+0.063 +G01 X+18.629 Y-28 +G01 X+18.7 Y-23.018 +G01 Y-23.008 +G03 X+17.308 Y-22.896 I-0.7 J+0.008 +G01 X+17.302 Y-22.948 +G01 X+17.3 Y-23 +G01 Y-28 +G03 X+18.698 Y-28.052 I+0.7 J+0 +G01 X+18.7 Y-28 +G01 Y-23.008 +G01 Z-2.463 F10000 +G00 Z+2.538 +G00 X+18.278 Y-22.713 +G00 Z-3.356 +G03 X+18 Y-23.008 Z-3.956 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+17.933 Y-27.899 +G03 X+18.033 Y-28 I+0.1 J-0.001 +G01 X+18.069 +G01 X+18.137 Y-23.008 +G01 Y-22.993 +G01 X+18.133 Y-22.969 +G01 X+18.129 Y-22.954 +G03 X+18.117 Y-22.927 I-0.096 J-0.027 +G01 X+18.113 Y-22.921 +G03 X+18.064 Y-22.882 I-0.084 J-0.054 +G01 X+18.025 Y-22.867 +G03 X+17.98 Y-22.861 I-0.035 J-0.094 +G01 X+17.974 Y-22.862 +G03 X+17.935 Y-22.875 I+0.011 J-0.099 +G01 X+17.922 Y-22.882 +G03 X+17.887 Y-22.917 I+0.05 J-0.087 +G01 X+17.871 Y-22.942 +G03 X+17.857 Y-22.981 I+0.086 J-0.052 +G01 X+17.855 Y-23 +G01 X+17.769 Y-27.982 +G01 Y-28 +G01 X+17.777 Y-28.059 +G01 X+17.784 Y-28.082 +G01 X+17.793 Y-28.104 +G03 X+17.813 Y-28.135 I+0.092 J+0.038 +G01 X+17.856 Y-28.181 +G03 X+17.902 Y-28.209 I+0.073 J+0.069 +G01 X+17.98 Y-28.23 +G03 X+18.015 Y-28.233 I+0.027 J+0.096 +G01 X+18.038 Y-28.232 +G03 X+18.08 Y-28.218 I-0.008 J+0.1 +G01 X+18.156 Y-28.174 +G03 X+18.183 Y-28.15 I-0.051 J+0.087 +G01 X+18.186 Y-28.147 +G01 X+18.197 Y-28.13 +G01 X+18.222 Y-28.081 +G01 X+18.23 Y-28.061 +G01 X+18.234 Y-28.045 +G01 X+18.239 Y-28 +G01 X+18.325 Y-23.018 +G01 Y-23.008 +G01 X+18.324 Y-22.966 +G03 X+18.245 Y-22.78 I-0.326 J-0.029 +G01 X+18.22 Y-22.755 +G01 X+18.207 Y-22.744 +G01 X+18.165 Y-22.714 +G03 X+17.661 Y-22.964 I-0.17 J-0.289 +G01 X+17.659 Y-23 +G01 X+17.581 Y-27.982 +G01 X+17.583 Y-28.044 +G03 X+18.432 Y-28.045 I+0.424 J+0.044 +G01 X+18.435 Y-28 +G01 X+18.512 Y-23.008 +G03 X+17.468 Y-22.944 I-0.523 J+0.009 +G01 X+17.465 Y-23 +G01 X+17.394 Y-27.982 +G01 X+17.396 Y-28.063 +G03 X+18.625 Y-28.066 I+0.615 J+0.063 +G01 X+18.629 Y-28 +G01 X+18.7 Y-23.018 +G01 Y-23.008 +G03 X+17.308 Y-22.896 I-0.7 J+0.008 +G01 X+17.302 Y-22.948 +G01 X+17.3 Y-23 +G01 Y-28 +G03 X+18.698 Y-28.052 I+0.7 J+0 +G01 X+18.7 Y-28 +G01 Y-23.008 +G01 Z-2.956 F10000 +G00 Z+2.044 +G00 X+18.278 Y-22.713 +G00 Z-3.85 +G03 X+18 Y-23.008 Z-4.45 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+17.933 Y-27.899 +G03 X+18.033 Y-28 I+0.1 J-0.001 +G01 X+18.069 +G01 X+18.137 Y-23.008 +G01 Y-22.993 +G01 X+18.133 Y-22.969 +G01 X+18.129 Y-22.954 +G03 X+18.117 Y-22.927 I-0.096 J-0.027 +G01 X+18.113 Y-22.921 +G03 X+18.064 Y-22.882 I-0.084 J-0.054 +G01 X+18.025 Y-22.867 +G03 X+17.98 Y-22.861 I-0.035 J-0.094 +G01 X+17.974 Y-22.862 +G03 X+17.935 Y-22.875 I+0.011 J-0.099 +G01 X+17.922 Y-22.882 +G03 X+17.887 Y-22.917 I+0.05 J-0.087 +G01 X+17.871 Y-22.942 +G03 X+17.857 Y-22.981 I+0.086 J-0.052 +G01 X+17.855 Y-23 +G01 X+17.769 Y-27.982 +G01 Y-28 +G01 X+17.777 Y-28.059 +G01 X+17.784 Y-28.082 +G01 X+17.793 Y-28.104 +G03 X+17.813 Y-28.135 I+0.092 J+0.038 +G01 X+17.856 Y-28.181 +G03 X+17.902 Y-28.209 I+0.073 J+0.069 +G01 X+17.98 Y-28.23 +G03 X+18.015 Y-28.233 I+0.027 J+0.096 +G01 X+18.038 Y-28.232 +G03 X+18.08 Y-28.218 I-0.008 J+0.1 +G01 X+18.156 Y-28.174 +G03 X+18.183 Y-28.15 I-0.051 J+0.087 +G01 X+18.186 Y-28.147 +G01 X+18.197 Y-28.13 +G01 X+18.222 Y-28.081 +G01 X+18.23 Y-28.061 +G01 X+18.234 Y-28.045 +G01 X+18.239 Y-28 +G01 X+18.325 Y-23.018 +G01 Y-23.008 +G01 X+18.324 Y-22.966 +G03 X+18.245 Y-22.78 I-0.326 J-0.029 +G01 X+18.22 Y-22.755 +G01 X+18.207 Y-22.744 +G01 X+18.165 Y-22.714 +G03 X+17.661 Y-22.964 I-0.17 J-0.289 +G01 X+17.659 Y-23 +G01 X+17.581 Y-27.982 +G01 X+17.583 Y-28.044 +G03 X+18.432 Y-28.045 I+0.424 J+0.044 +G01 X+18.435 Y-28 +G01 X+18.512 Y-23.008 +G03 X+17.468 Y-22.944 I-0.523 J+0.009 +G01 X+17.465 Y-23 +G01 X+17.394 Y-27.982 +G01 X+17.396 Y-28.063 +G03 X+18.625 Y-28.066 I+0.615 J+0.063 +G01 X+18.629 Y-28 +G01 X+18.7 Y-23.018 +G01 Y-23.008 +G03 X+17.308 Y-22.896 I-0.7 J+0.008 +G01 X+17.302 Y-22.948 +G01 X+17.3 Y-23 +G01 Y-28 +G03 X+18.698 Y-28.052 I+0.7 J+0 +G01 X+18.7 Y-28 +G01 Y-23.008 +G01 Z+0.55 F10000 +G00 Z+5.55 +(#HSC OFF) +(#TRAFO OFF) +; - EB oblong 4 +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G00 X+22.278 Y-22.713 Z+4.606 +G00 Z-0.394 +G03 X+22 Y-23.008 Z-0.994 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+21.933 Y-27.899 +G03 X+22.033 Y-28 I+0.1 J-0.001 +G01 X+22.069 +G01 X+22.137 Y-23.008 +G01 Y-22.993 +G01 X+22.133 Y-22.969 +G01 X+22.129 Y-22.954 +G03 X+22.117 Y-22.927 I-0.096 J-0.027 +G01 X+22.113 Y-22.921 +G03 X+22.064 Y-22.882 I-0.084 J-0.054 +G01 X+22.025 Y-22.867 +G03 X+21.98 Y-22.861 I-0.035 J-0.094 +G01 X+21.974 Y-22.862 +G03 X+21.935 Y-22.875 I+0.011 J-0.099 +G01 X+21.922 Y-22.882 +G03 X+21.887 Y-22.917 I+0.05 J-0.087 +G01 X+21.871 Y-22.942 +G03 X+21.857 Y-22.981 I+0.086 J-0.052 +G01 X+21.855 Y-23 +G01 X+21.769 Y-27.982 +G01 Y-28 +G01 X+21.777 Y-28.059 +G01 X+21.784 Y-28.082 +G01 X+21.793 Y-28.104 +G03 X+21.813 Y-28.135 I+0.092 J+0.038 +G01 X+21.856 Y-28.181 +G03 X+21.902 Y-28.209 I+0.073 J+0.069 +G01 X+21.98 Y-28.23 +G03 X+22.015 Y-28.233 I+0.027 J+0.096 +G01 X+22.038 Y-28.232 +G03 X+22.08 Y-28.218 I-0.008 J+0.1 +G01 X+22.156 Y-28.174 +G03 X+22.183 Y-28.15 I-0.051 J+0.087 +G01 X+22.186 Y-28.147 +G01 X+22.197 Y-28.13 +G01 X+22.222 Y-28.081 +G01 X+22.23 Y-28.061 +G01 X+22.234 Y-28.045 +G01 X+22.239 Y-28 +G01 X+22.325 Y-23.018 +G01 Y-23.008 +G01 X+22.324 Y-22.966 +G03 X+22.245 Y-22.78 I-0.326 J-0.029 +G01 X+22.22 Y-22.755 +G01 X+22.207 Y-22.744 +G01 X+22.165 Y-22.714 +G03 X+21.661 Y-22.964 I-0.17 J-0.289 +G01 X+21.659 Y-23 +G01 X+21.581 Y-27.982 +G01 X+21.583 Y-28.044 +G03 X+22.432 Y-28.045 I+0.424 J+0.044 +G01 X+22.435 Y-28 +G01 X+22.512 Y-23.008 +G03 X+21.468 Y-22.944 I-0.523 J+0.009 +G01 X+21.465 Y-23 +G01 X+21.394 Y-27.982 +G01 X+21.396 Y-28.063 +G03 X+22.625 Y-28.066 I+0.615 J+0.063 +G01 X+22.629 Y-28 +G01 X+22.7 Y-23.018 +G01 Y-23.008 +G03 X+21.308 Y-22.896 I-0.7 J+0.008 +G01 X+21.302 Y-22.948 +G01 X+21.3 Y-23 +G01 Y-28 +G03 X+22.698 Y-28.052 I+0.7 J+0 +G01 X+22.7 Y-28 +G01 Y-23.008 +G01 Z+0.006 F10000 +G00 Z+5.006 +G00 X+22.278 Y-22.713 +G00 Z-0.888 +G03 X+22 Y-23.008 Z-1.488 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+21.933 Y-27.899 +G03 X+22.033 Y-28 I+0.1 J-0.001 +G01 X+22.069 +G01 X+22.137 Y-23.008 +G01 Y-22.993 +G01 X+22.133 Y-22.969 +G01 X+22.129 Y-22.954 +G03 X+22.117 Y-22.927 I-0.096 J-0.027 +G01 X+22.113 Y-22.921 +G03 X+22.064 Y-22.882 I-0.084 J-0.054 +G01 X+22.025 Y-22.867 +G03 X+21.98 Y-22.861 I-0.035 J-0.094 +G01 X+21.974 Y-22.862 +G03 X+21.935 Y-22.875 I+0.011 J-0.099 +G01 X+21.922 Y-22.882 +G03 X+21.887 Y-22.917 I+0.05 J-0.087 +G01 X+21.871 Y-22.942 +G03 X+21.857 Y-22.981 I+0.086 J-0.052 +G01 X+21.855 Y-23 +G01 X+21.769 Y-27.982 +G01 Y-28 +G01 X+21.777 Y-28.059 +G01 X+21.784 Y-28.082 +G01 X+21.793 Y-28.104 +G03 X+21.813 Y-28.135 I+0.092 J+0.038 +G01 X+21.856 Y-28.181 +G03 X+21.902 Y-28.209 I+0.073 J+0.069 +G01 X+21.98 Y-28.23 +G03 X+22.015 Y-28.233 I+0.027 J+0.096 +G01 X+22.038 Y-28.232 +G03 X+22.08 Y-28.218 I-0.008 J+0.1 +G01 X+22.156 Y-28.174 +G03 X+22.183 Y-28.15 I-0.051 J+0.087 +G01 X+22.186 Y-28.147 +G01 X+22.197 Y-28.13 +G01 X+22.222 Y-28.081 +G01 X+22.23 Y-28.061 +G01 X+22.234 Y-28.045 +G01 X+22.239 Y-28 +G01 X+22.325 Y-23.018 +G01 Y-23.008 +G01 X+22.324 Y-22.966 +G03 X+22.245 Y-22.78 I-0.326 J-0.029 +G01 X+22.22 Y-22.755 +G01 X+22.207 Y-22.744 +G01 X+22.165 Y-22.714 +G03 X+21.661 Y-22.964 I-0.17 J-0.289 +G01 X+21.659 Y-23 +G01 X+21.581 Y-27.982 +G01 X+21.583 Y-28.044 +G03 X+22.432 Y-28.045 I+0.424 J+0.044 +G01 X+22.435 Y-28 +G01 X+22.512 Y-23.008 +G03 X+21.468 Y-22.944 I-0.523 J+0.009 +G01 X+21.465 Y-23 +G01 X+21.394 Y-27.982 +G01 X+21.396 Y-28.063 +G03 X+22.625 Y-28.066 I+0.615 J+0.063 +G01 X+22.629 Y-28 +G01 X+22.7 Y-23.018 +G01 Y-23.008 +G03 X+21.308 Y-22.896 I-0.7 J+0.008 +G01 X+21.302 Y-22.948 +G01 X+21.3 Y-23 +G01 Y-28 +G03 X+22.698 Y-28.052 I+0.7 J+0 +G01 X+22.7 Y-28 +G01 Y-23.008 +G01 Z-0.488 F10000 +G00 Z+4.513 +G00 X+22.278 Y-22.713 +G00 Z-1.381 +G03 X+22 Y-23.008 Z-1.981 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+21.933 Y-27.899 +G03 X+22.033 Y-28 I+0.1 J-0.001 +G01 X+22.069 +G01 X+22.137 Y-23.008 +G01 Y-22.993 +G01 X+22.133 Y-22.969 +G01 X+22.129 Y-22.954 +G03 X+22.117 Y-22.927 I-0.096 J-0.027 +G01 X+22.113 Y-22.921 +G03 X+22.064 Y-22.882 I-0.084 J-0.054 +G01 X+22.025 Y-22.867 +G03 X+21.98 Y-22.861 I-0.035 J-0.094 +G01 X+21.974 Y-22.862 +G03 X+21.935 Y-22.875 I+0.011 J-0.099 +G01 X+21.922 Y-22.882 +G03 X+21.887 Y-22.917 I+0.05 J-0.087 +G01 X+21.871 Y-22.942 +G03 X+21.857 Y-22.981 I+0.086 J-0.052 +G01 X+21.855 Y-23 +G01 X+21.769 Y-27.982 +G01 Y-28 +G01 X+21.777 Y-28.059 +G01 X+21.784 Y-28.082 +G01 X+21.793 Y-28.104 +G03 X+21.813 Y-28.135 I+0.092 J+0.038 +G01 X+21.856 Y-28.181 +G03 X+21.902 Y-28.209 I+0.073 J+0.069 +G01 X+21.98 Y-28.23 +G03 X+22.015 Y-28.233 I+0.027 J+0.096 +G01 X+22.038 Y-28.232 +G03 X+22.08 Y-28.218 I-0.008 J+0.1 +G01 X+22.156 Y-28.174 +G03 X+22.183 Y-28.15 I-0.051 J+0.087 +G01 X+22.186 Y-28.147 +G01 X+22.197 Y-28.13 +G01 X+22.222 Y-28.081 +G01 X+22.23 Y-28.061 +G01 X+22.234 Y-28.045 +G01 X+22.239 Y-28 +G01 X+22.325 Y-23.018 +G01 Y-23.008 +G01 X+22.324 Y-22.966 +G03 X+22.245 Y-22.78 I-0.326 J-0.029 +G01 X+22.22 Y-22.755 +G01 X+22.207 Y-22.744 +G01 X+22.165 Y-22.714 +G03 X+21.661 Y-22.964 I-0.17 J-0.289 +G01 X+21.659 Y-23 +G01 X+21.581 Y-27.982 +G01 X+21.583 Y-28.044 +G03 X+22.432 Y-28.045 I+0.424 J+0.044 +G01 X+22.435 Y-28 +G01 X+22.512 Y-23.008 +G03 X+21.468 Y-22.944 I-0.523 J+0.009 +G01 X+21.465 Y-23 +G01 X+21.394 Y-27.982 +G01 X+21.396 Y-28.063 +G03 X+22.625 Y-28.066 I+0.615 J+0.063 +G01 X+22.629 Y-28 +G01 X+22.7 Y-23.018 +G01 Y-23.008 +G03 X+21.308 Y-22.896 I-0.7 J+0.008 +G01 X+21.302 Y-22.948 +G01 X+21.3 Y-23 +G01 Y-28 +G03 X+22.698 Y-28.052 I+0.7 J+0 +G01 X+22.7 Y-28 +G01 Y-23.008 +G01 Z-0.981 F10000 +G00 Z+4.019 +G00 X+22.278 Y-22.713 +G00 Z-1.875 +G03 X+22 Y-23.008 Z-2.475 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+21.933 Y-27.899 +G03 X+22.033 Y-28 I+0.1 J-0.001 +G01 X+22.069 +G01 X+22.137 Y-23.008 +G01 Y-22.993 +G01 X+22.133 Y-22.969 +G01 X+22.129 Y-22.954 +G03 X+22.117 Y-22.927 I-0.096 J-0.027 +G01 X+22.113 Y-22.921 +G03 X+22.064 Y-22.882 I-0.084 J-0.054 +G01 X+22.025 Y-22.867 +G03 X+21.98 Y-22.861 I-0.035 J-0.094 +G01 X+21.974 Y-22.862 +G03 X+21.935 Y-22.875 I+0.011 J-0.099 +G01 X+21.922 Y-22.882 +G03 X+21.887 Y-22.917 I+0.05 J-0.087 +G01 X+21.871 Y-22.942 +G03 X+21.857 Y-22.981 I+0.086 J-0.052 +G01 X+21.855 Y-23 +G01 X+21.769 Y-27.982 +G01 Y-28 +G01 X+21.777 Y-28.059 +G01 X+21.784 Y-28.082 +G01 X+21.793 Y-28.104 +G03 X+21.813 Y-28.135 I+0.092 J+0.038 +G01 X+21.856 Y-28.181 +G03 X+21.902 Y-28.209 I+0.073 J+0.069 +G01 X+21.98 Y-28.23 +G03 X+22.015 Y-28.233 I+0.027 J+0.096 +G01 X+22.038 Y-28.232 +G03 X+22.08 Y-28.218 I-0.008 J+0.1 +G01 X+22.156 Y-28.174 +G03 X+22.183 Y-28.15 I-0.051 J+0.087 +G01 X+22.186 Y-28.147 +G01 X+22.197 Y-28.13 +G01 X+22.222 Y-28.081 +G01 X+22.23 Y-28.061 +G01 X+22.234 Y-28.045 +G01 X+22.239 Y-28 +G01 X+22.325 Y-23.018 +G01 Y-23.008 +G01 X+22.324 Y-22.966 +G03 X+22.245 Y-22.78 I-0.326 J-0.029 +G01 X+22.22 Y-22.755 +G01 X+22.207 Y-22.744 +G01 X+22.165 Y-22.714 +G03 X+21.661 Y-22.964 I-0.17 J-0.289 +G01 X+21.659 Y-23 +G01 X+21.581 Y-27.982 +G01 X+21.583 Y-28.044 +G03 X+22.432 Y-28.045 I+0.424 J+0.044 +G01 X+22.435 Y-28 +G01 X+22.512 Y-23.008 +G03 X+21.468 Y-22.944 I-0.523 J+0.009 +G01 X+21.465 Y-23 +G01 X+21.394 Y-27.982 +G01 X+21.396 Y-28.063 +G03 X+22.625 Y-28.066 I+0.615 J+0.063 +G01 X+22.629 Y-28 +G01 X+22.7 Y-23.018 +G01 Y-23.008 +G03 X+21.308 Y-22.896 I-0.7 J+0.008 +G01 X+21.302 Y-22.948 +G01 X+21.3 Y-23 +G01 Y-28 +G03 X+22.698 Y-28.052 I+0.7 J+0 +G01 X+22.7 Y-28 +G01 Y-23.008 +G01 Z-1.475 F10000 +G00 Z+3.525 +G00 X+22.278 Y-22.713 +G00 Z-2.369 +G03 X+22 Y-23.008 Z-2.969 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+21.933 Y-27.899 +G03 X+22.033 Y-28 I+0.1 J-0.001 +G01 X+22.069 +G01 X+22.137 Y-23.008 +G01 Y-22.993 +G01 X+22.133 Y-22.969 +G01 X+22.129 Y-22.954 +G03 X+22.117 Y-22.927 I-0.096 J-0.027 +G01 X+22.113 Y-22.921 +G03 X+22.064 Y-22.882 I-0.084 J-0.054 +G01 X+22.025 Y-22.867 +G03 X+21.98 Y-22.861 I-0.035 J-0.094 +G01 X+21.974 Y-22.862 +G03 X+21.935 Y-22.875 I+0.011 J-0.099 +G01 X+21.922 Y-22.882 +G03 X+21.887 Y-22.917 I+0.05 J-0.087 +G01 X+21.871 Y-22.942 +G03 X+21.857 Y-22.981 I+0.086 J-0.052 +G01 X+21.855 Y-23 +G01 X+21.769 Y-27.982 +G01 Y-28 +G01 X+21.777 Y-28.059 +G01 X+21.784 Y-28.082 +G01 X+21.793 Y-28.104 +G03 X+21.813 Y-28.135 I+0.092 J+0.038 +G01 X+21.856 Y-28.181 +G03 X+21.902 Y-28.209 I+0.073 J+0.069 +G01 X+21.98 Y-28.23 +G03 X+22.015 Y-28.233 I+0.027 J+0.096 +G01 X+22.038 Y-28.232 +G03 X+22.08 Y-28.218 I-0.008 J+0.1 +G01 X+22.156 Y-28.174 +G03 X+22.183 Y-28.15 I-0.051 J+0.087 +G01 X+22.186 Y-28.147 +G01 X+22.197 Y-28.13 +G01 X+22.222 Y-28.081 +G01 X+22.23 Y-28.061 +G01 X+22.234 Y-28.045 +G01 X+22.239 Y-28 +G01 X+22.325 Y-23.018 +G01 Y-23.008 +G01 X+22.324 Y-22.966 +G03 X+22.245 Y-22.78 I-0.326 J-0.029 +G01 X+22.22 Y-22.755 +G01 X+22.207 Y-22.744 +G01 X+22.165 Y-22.714 +G03 X+21.661 Y-22.964 I-0.17 J-0.289 +G01 X+21.659 Y-23 +G01 X+21.581 Y-27.982 +G01 X+21.583 Y-28.044 +G03 X+22.432 Y-28.045 I+0.424 J+0.044 +G01 X+22.435 Y-28 +G01 X+22.512 Y-23.008 +G03 X+21.468 Y-22.944 I-0.523 J+0.009 +G01 X+21.465 Y-23 +G01 X+21.394 Y-27.982 +G01 X+21.396 Y-28.063 +G03 X+22.625 Y-28.066 I+0.615 J+0.063 +G01 X+22.629 Y-28 +G01 X+22.7 Y-23.018 +G01 Y-23.008 +G03 X+21.308 Y-22.896 I-0.7 J+0.008 +G01 X+21.302 Y-22.948 +G01 X+21.3 Y-23 +G01 Y-28 +G03 X+22.698 Y-28.052 I+0.7 J+0 +G01 X+22.7 Y-28 +G01 Y-23.008 +G01 Z-1.969 F10000 +G00 Z+3.031 +G00 X+22.278 Y-22.713 +G00 Z-2.863 +G03 X+22 Y-23.008 Z-3.463 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+21.933 Y-27.899 +G03 X+22.033 Y-28 I+0.1 J-0.001 +G01 X+22.069 +G01 X+22.137 Y-23.008 +G01 Y-22.993 +G01 X+22.133 Y-22.969 +G01 X+22.129 Y-22.954 +G03 X+22.117 Y-22.927 I-0.096 J-0.027 +G01 X+22.113 Y-22.921 +G03 X+22.064 Y-22.882 I-0.084 J-0.054 +G01 X+22.025 Y-22.867 +G03 X+21.98 Y-22.861 I-0.035 J-0.094 +G01 X+21.974 Y-22.862 +G03 X+21.935 Y-22.875 I+0.011 J-0.099 +G01 X+21.922 Y-22.882 +G03 X+21.887 Y-22.917 I+0.05 J-0.087 +G01 X+21.871 Y-22.942 +G03 X+21.857 Y-22.981 I+0.086 J-0.052 +G01 X+21.855 Y-23 +G01 X+21.769 Y-27.982 +G01 Y-28 +G01 X+21.777 Y-28.059 +G01 X+21.784 Y-28.082 +G01 X+21.793 Y-28.104 +G03 X+21.813 Y-28.135 I+0.092 J+0.038 +G01 X+21.856 Y-28.181 +G03 X+21.902 Y-28.209 I+0.073 J+0.069 +G01 X+21.98 Y-28.23 +G03 X+22.015 Y-28.233 I+0.027 J+0.096 +G01 X+22.038 Y-28.232 +G03 X+22.08 Y-28.218 I-0.008 J+0.1 +G01 X+22.156 Y-28.174 +G03 X+22.183 Y-28.15 I-0.051 J+0.087 +G01 X+22.186 Y-28.147 +G01 X+22.197 Y-28.13 +G01 X+22.222 Y-28.081 +G01 X+22.23 Y-28.061 +G01 X+22.234 Y-28.045 +G01 X+22.239 Y-28 +G01 X+22.325 Y-23.018 +G01 Y-23.008 +G01 X+22.324 Y-22.966 +G03 X+22.245 Y-22.78 I-0.326 J-0.029 +G01 X+22.22 Y-22.755 +G01 X+22.207 Y-22.744 +G01 X+22.165 Y-22.714 +G03 X+21.661 Y-22.964 I-0.17 J-0.289 +G01 X+21.659 Y-23 +G01 X+21.581 Y-27.982 +G01 X+21.583 Y-28.044 +G03 X+22.432 Y-28.045 I+0.424 J+0.044 +G01 X+22.435 Y-28 +G01 X+22.512 Y-23.008 +G03 X+21.468 Y-22.944 I-0.523 J+0.009 +G01 X+21.465 Y-23 +G01 X+21.394 Y-27.982 +G01 X+21.396 Y-28.063 +G03 X+22.625 Y-28.066 I+0.615 J+0.063 +G01 X+22.629 Y-28 +G01 X+22.7 Y-23.018 +G01 Y-23.008 +G03 X+21.308 Y-22.896 I-0.7 J+0.008 +G01 X+21.302 Y-22.948 +G01 X+21.3 Y-23 +G01 Y-28 +G03 X+22.698 Y-28.052 I+0.7 J+0 +G01 X+22.7 Y-28 +G01 Y-23.008 +G01 Z-2.463 F10000 +G00 Z+2.538 +G00 X+22.278 Y-22.713 +G00 Z-3.356 +G03 X+22 Y-23.008 Z-3.956 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+21.933 Y-27.899 +G03 X+22.033 Y-28 I+0.1 J-0.001 +G01 X+22.069 +G01 X+22.137 Y-23.008 +G01 Y-22.993 +G01 X+22.133 Y-22.969 +G01 X+22.129 Y-22.954 +G03 X+22.117 Y-22.927 I-0.096 J-0.027 +G01 X+22.113 Y-22.921 +G03 X+22.064 Y-22.882 I-0.084 J-0.054 +G01 X+22.025 Y-22.867 +G03 X+21.98 Y-22.861 I-0.035 J-0.094 +G01 X+21.974 Y-22.862 +G03 X+21.935 Y-22.875 I+0.011 J-0.099 +G01 X+21.922 Y-22.882 +G03 X+21.887 Y-22.917 I+0.05 J-0.087 +G01 X+21.871 Y-22.942 +G03 X+21.857 Y-22.981 I+0.086 J-0.052 +G01 X+21.855 Y-23 +G01 X+21.769 Y-27.982 +G01 Y-28 +G01 X+21.777 Y-28.059 +G01 X+21.784 Y-28.082 +G01 X+21.793 Y-28.104 +G03 X+21.813 Y-28.135 I+0.092 J+0.038 +G01 X+21.856 Y-28.181 +G03 X+21.902 Y-28.209 I+0.073 J+0.069 +G01 X+21.98 Y-28.23 +G03 X+22.015 Y-28.233 I+0.027 J+0.096 +G01 X+22.038 Y-28.232 +G03 X+22.08 Y-28.218 I-0.008 J+0.1 +G01 X+22.156 Y-28.174 +G03 X+22.183 Y-28.15 I-0.051 J+0.087 +G01 X+22.186 Y-28.147 +G01 X+22.197 Y-28.13 +G01 X+22.222 Y-28.081 +G01 X+22.23 Y-28.061 +G01 X+22.234 Y-28.045 +G01 X+22.239 Y-28 +G01 X+22.325 Y-23.018 +G01 Y-23.008 +G01 X+22.324 Y-22.966 +G03 X+22.245 Y-22.78 I-0.326 J-0.029 +G01 X+22.22 Y-22.755 +G01 X+22.207 Y-22.744 +G01 X+22.165 Y-22.714 +G03 X+21.661 Y-22.964 I-0.17 J-0.289 +G01 X+21.659 Y-23 +G01 X+21.581 Y-27.982 +G01 X+21.583 Y-28.044 +G03 X+22.432 Y-28.045 I+0.424 J+0.044 +G01 X+22.435 Y-28 +G01 X+22.512 Y-23.008 +G03 X+21.468 Y-22.944 I-0.523 J+0.009 +G01 X+21.465 Y-23 +G01 X+21.394 Y-27.982 +G01 X+21.396 Y-28.063 +G03 X+22.625 Y-28.066 I+0.615 J+0.063 +G01 X+22.629 Y-28 +G01 X+22.7 Y-23.018 +G01 Y-23.008 +G03 X+21.308 Y-22.896 I-0.7 J+0.008 +G01 X+21.302 Y-22.948 +G01 X+21.3 Y-23 +G01 Y-28 +G03 X+22.698 Y-28.052 I+0.7 J+0 +G01 X+22.7 Y-28 +G01 Y-23.008 +G01 Z-2.956 F10000 +G00 Z+2.044 +G00 X+22.278 Y-22.713 +G00 Z-3.85 +G03 X+22 Y-23.008 Z-4.45 I+0.022 J-0.299 F2000 K0.033 +G01 Y-23 F2000 +G01 X+21.933 Y-27.899 +G03 X+22.033 Y-28 I+0.1 J-0.001 +G01 X+22.069 +G01 X+22.137 Y-23.008 +G01 Y-22.993 +G01 X+22.133 Y-22.969 +G01 X+22.129 Y-22.954 +G03 X+22.117 Y-22.927 I-0.096 J-0.027 +G01 X+22.113 Y-22.921 +G03 X+22.064 Y-22.882 I-0.084 J-0.054 +G01 X+22.025 Y-22.867 +G03 X+21.98 Y-22.861 I-0.035 J-0.094 +G01 X+21.974 Y-22.862 +G03 X+21.935 Y-22.875 I+0.011 J-0.099 +G01 X+21.922 Y-22.882 +G03 X+21.887 Y-22.917 I+0.05 J-0.087 +G01 X+21.871 Y-22.942 +G03 X+21.857 Y-22.981 I+0.086 J-0.052 +G01 X+21.855 Y-23 +G01 X+21.769 Y-27.982 +G01 Y-28 +G01 X+21.777 Y-28.059 +G01 X+21.784 Y-28.082 +G01 X+21.793 Y-28.104 +G03 X+21.813 Y-28.135 I+0.092 J+0.038 +G01 X+21.856 Y-28.181 +G03 X+21.902 Y-28.209 I+0.073 J+0.069 +G01 X+21.98 Y-28.23 +G03 X+22.015 Y-28.233 I+0.027 J+0.096 +G01 X+22.038 Y-28.232 +G03 X+22.08 Y-28.218 I-0.008 J+0.1 +G01 X+22.156 Y-28.174 +G03 X+22.183 Y-28.15 I-0.051 J+0.087 +G01 X+22.186 Y-28.147 +G01 X+22.197 Y-28.13 +G01 X+22.222 Y-28.081 +G01 X+22.23 Y-28.061 +G01 X+22.234 Y-28.045 +G01 X+22.239 Y-28 +G01 X+22.325 Y-23.018 +G01 Y-23.008 +G01 X+22.324 Y-22.966 +G03 X+22.245 Y-22.78 I-0.326 J-0.029 +G01 X+22.22 Y-22.755 +G01 X+22.207 Y-22.744 +G01 X+22.165 Y-22.714 +G03 X+21.661 Y-22.964 I-0.17 J-0.289 +G01 X+21.659 Y-23 +G01 X+21.581 Y-27.982 +G01 X+21.583 Y-28.044 +G03 X+22.432 Y-28.045 I+0.424 J+0.044 +G01 X+22.435 Y-28 +G01 X+22.512 Y-23.008 +G03 X+21.468 Y-22.944 I-0.523 J+0.009 +G01 X+21.465 Y-23 +G01 X+21.394 Y-27.982 +G01 X+21.396 Y-28.063 +G03 X+22.625 Y-28.066 I+0.615 J+0.063 +G01 X+22.629 Y-28 +G01 X+22.7 Y-23.018 +G01 Y-23.008 +G03 X+21.308 Y-22.896 I-0.7 J+0.008 +G01 X+21.302 Y-22.948 +G01 X+21.3 Y-23 +G01 Y-28 +G03 X+22.698 Y-28.052 I+0.7 J+0 +G01 X+22.7 Y-28 +G01 Y-23.008 +G01 Z+0.55 F10000 +G00 Z+5.55 +(#HSC OFF) +(#TRAFO OFF) +; - EB poche ronde etage 1 +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G00 X+27.097 Y-20.154 Z+4.617 +G00 Z-0.383 +G03 X+27 Y-20 Z-0.983 I+0.367 J+0.339 F2000 K0.055 +G01 X+27.002 Y-20.001 F2000 +G01 X+27.004 Y-19.998 +G01 X+26.993 Y-19.997 +G01 X+26.99 Y-20.003 +G01 X+26.992 Y-20.009 +G01 X+26.995 Y-20.011 +G01 Y-20.016 +G01 X+27.002 Y-20.027 +G01 X+27.013 Y-20.034 +G01 X+27.031 Y-20.035 +G01 X+27.048 Y-20.029 +G01 X+27.052 Y-20.025 +G03 X+27.072 Y-20 I-0.067 J+0.074 +G01 Y-19.999 +G03 X+27.075 Y-19.956 I-0.096 J+0.027 +G01 X+27.073 Y-19.946 +G01 X+27.069 Y-19.938 +G03 X+27.043 Y-19.904 I-0.09 J-0.043 +G01 X+27.041 Y-19.902 +G01 X+27.017 Y-19.888 +G03 X+26.984 Y-19.879 I-0.041 J-0.091 +G01 X+26.979 +G01 X+26.955 Y-19.88 +G01 X+26.944 Y-19.882 +G03 X+26.904 Y-19.898 I+0.016 J-0.098 +G01 X+26.893 Y-19.905 +G01 X+26.877 Y-19.918 +G01 X+26.873 Y-19.922 +G01 X+26.861 Y-19.938 +G01 X+26.853 Y-19.95 +G01 X+26.844 Y-19.968 +G01 X+26.842 Y-19.975 +G01 X+26.836 Y-19.997 +G01 X+26.833 Y-20.018 +G01 X+26.834 Y-20.046 +G01 X+26.836 Y-20.062 +G01 X+26.842 Y-20.085 +G01 X+26.851 Y-20.107 +G01 X+26.863 Y-20.128 +G01 X+26.871 Y-20.14 +G01 X+26.886 Y-20.156 +G01 X+26.903 Y-20.172 +G01 X+26.918 Y-20.182 +G01 X+26.936 Y-20.192 +G01 X+26.955 Y-20.2 +G01 X+26.975 Y-20.206 +G01 X+27.002 Y-20.212 +G01 X+27.022 Y-20.214 +G01 X+27.049 +G01 X+27.075 Y-20.21 +G01 X+27.1 Y-20.203 +G03 X+27.255 Y-20.024 I-0.08 J+0.226 +G01 X+27.259 Y-19.997 +G01 X+27.26 Y-19.948 +G03 X+27.192 Y-19.791 I-0.273 J-0.025 +G01 X+27.169 Y-19.768 +G03 X+27.02 Y-19.697 I-0.196 J-0.22 +G01 X+26.982 Y-19.693 +G03 X+26.656 Y-19.946 I-0.007 J-0.327 +G01 X+26.649 Y-19.982 +G01 X+26.646 Y-20.03 +G03 X+27.023 Y-20.401 I+0.379 J+0.008 +G01 X+27.09 Y-20.396 +G01 X+27.115 Y-20.392 +G03 X+27.433 Y-19.855 I-0.099 J+0.421 +G01 X+27.411 Y-19.793 +G03 X+26.52 Y-19.781 I-0.448 J-0.208 +G01 X+26.495 Y-19.836 +G03 X+27.265 Y-20.539 I+0.533 J-0.189 +G01 X+27.327 Y-20.508 +G03 X+26.885 Y-19.324 I-0.342 J+0.547 +G01 X+26.844 Y-19.33 +G03 X+26.933 Y-20.769 I+0.159 J-0.713 +G01 X+27 Y-20.775 +G01 X+27.044 +G03 X+27.664 Y-20.454 I-0.017 J+0.79 +G01 X+27.69 Y-20.416 +G01 X+27.691 Y-20.414 +G03 X+26.273 Y-19.475 I-0.729 J+0.439 +G01 X+26.231 Y-19.534 +G03 X+27.736 Y-20.658 I+0.804 J-0.493 +G01 X+27.784 Y-20.604 +G01 X+27.818 Y-20.56 +G01 X+27.85 Y-20.513 +G01 X+27.852 Y-20.51 +G03 X+26.42 Y-19.097 I-0.881 J+0.539 +G01 X+26.376 Y-19.125 +G03 X+26.037 Y-19.492 I+0.604 J-0.897 +G01 X+26.008 Y-19.547 +G03 X+25.899 Y-20.095 I+0.986 J-0.483 +G01 X+25.904 Y-20.158 +G03 X+26.15 Y-20.736 I+1.108 J+0.13 +G01 X+26.192 Y-20.784 +G03 X+26.805 Y-21.128 I+0.835 J+0.769 +G01 X+26.851 Y-21.136 +G03 X+27.631 Y-20.982 I+0.179 J+1.142 +G01 X+27.658 Y-20.965 +G03 X+27.973 Y-20.665 I-0.636 J+0.986 +G01 X+28.011 Y-20.61 +G01 X+28.013 Y-20.606 +G03 X+28.189 Y-19.829 I-1.006 J+0.636 +G01 X+28.179 Y-19.763 +G03 X+27.686 Y-18.984 I-1.196 J-0.211 +G01 X+27.663 Y-18.968 +G03 X+26.717 Y-18.782 I-0.693 J-1.026 +G01 X+26.694 Y-18.787 +G03 X+25.871 Y-19.405 I+0.282 J-1.232 +G01 X+25.838 Y-19.469 +G03 X+25.814 Y-20.539 I+1.162 J-0.562 +G01 X+25.839 Y-20.596 +G03 X+26.697 Y-21.296 I+1.185 J+0.577 +G01 X+26.773 Y-21.313 +G01 X+26.826 Y-21.322 +G01 X+26.885 Y-21.33 +G01 X+26.924 Y-21.333 +G01 X+27 Y-21.337 +G01 X+27.076 +G03 X+28.171 Y-20.707 I-0.049 J+1.353 +G01 X+28.174 Y-20.703 +G03 X+28.248 Y-19.37 I-1.173 J+0.734 +G01 X+28.237 Y-19.347 +G03 X+27.163 Y-18.582 I-1.262 J-0.635 +G01 X+27.095 Y-18.574 +G01 X+27.039 Y-18.57 +G01 X+27 Y-18.569 +G01 X+26.929 +G01 X+26.861 Y-18.573 +G01 X+26.759 Y-18.584 +G01 X+26.674 Y-18.599 +G01 X+26.632 Y-18.609 +G03 X+25.603 Y-19.546 I+0.345 J-1.412 +G01 X+25.581 Y-19.615 +G03 X+25.981 Y-21.105 I+1.427 J-0.415 +G01 X+25.984 Y-21.107 +G03 X+27.516 Y-21.446 I+1.047 J+1.1 +G01 X+27.569 Y-21.427 +G03 X+28.283 Y-20.877 I-0.545 J+1.446 +G01 X+28.332 Y-20.803 +G01 X+28.335 Y-20.799 +G03 X+28.36 Y-19.18 I-1.335 J+0.83 +G01 X+28.312 Y-19.103 +G03 X+27.866 Y-18.653 I-1.333 J-0.876 +G01 X+27.79 Y-18.605 +G01 X+27.788 Y-18.604 +G01 X+27.708 Y-18.56 +G01 X+27.644 Y-18.528 +G01 X+27.625 Y-18.52 +G03 X+27.184 Y-18.395 I-0.654 J-1.472 +G01 X+27.107 Y-18.387 +G01 X+27.092 Y-18.386 +G01 X+27.044 Y-18.383 +G01 X+27 Y-18.381 +G01 X+26.92 Y-18.382 +G03 X+25.497 Y-19.313 I+0.054 J-1.635 +G01 X+25.469 Y-19.375 +G03 X+25.751 Y-21.134 I+1.536 J-0.656 +G01 X+25.789 Y-21.177 +G01 X+25.854 Y-21.243 +G01 X+25.857 Y-21.245 +G01 X+25.929 Y-21.31 +G01 X+25.983 Y-21.354 +G01 X+26.005 Y-21.37 +G03 X+27.935 Y-21.455 I+1.027 J+1.369 +G01 X+27.975 Y-21.429 +G03 X+28.73 Y-19.652 I-0.962 J+1.458 +G01 X+28.709 Y-19.551 +G03 X+28.612 Y-19.264 I-1.718 J-0.42 +G01 X+28.583 Y-19.202 +G01 X+28.569 Y-19.172 +G01 X+28.553 Y-19.141 +G03 X+28.057 Y-18.559 I-1.572 J-0.836 +G01 X+28.051 Y-18.554 +G01 X+28 Y-18.517 +G01 X+27.967 Y-18.495 +G01 X+27.883 Y-18.442 +G01 X+27.881 Y-18.441 +G01 X+27.791 Y-18.391 +G01 X+27.719 Y-18.357 +G01 X+27.698 Y-18.347 +G01 X+27.603 Y-18.309 +G01 X+27.506 Y-18.275 +G01 X+27.434 Y-18.254 +G03 X+25.485 Y-18.964 I-0.464 J-1.757 +G01 X+25.459 Y-19.002 +G03 X+25.456 Y-21.056 I+1.541 J-1.03 +G01 X+25.517 Y-21.143 +G01 X+25.584 Y-21.227 +G01 X+25.612 Y-21.26 +G01 X+25.655 Y-21.307 +G01 X+25.727 Y-21.38 +G01 X+25.73 Y-21.383 +G01 X+25.81 Y-21.455 +G01 X+25.871 Y-21.504 +G01 X+25.894 Y-21.522 +G03 X+28.081 Y-21.584 I+1.138 J+1.521 +G01 X+28.128 Y-21.552 +G01 X+28.216 Y-21.487 +G01 X+28.268 Y-21.444 +G01 X+28.3 Y-21.416 +G01 X+28.336 Y-21.382 +G03 X+28.89 Y-19.503 I-1.328 J+1.412 +G01 X+28.868 Y-19.421 +G01 X+28.867 Y-19.418 +G01 X+28.824 Y-19.29 +G01 X+28.804 Y-19.237 +G01 X+28.782 Y-19.186 +G01 X+28.751 Y-19.117 +G01 X+28.735 Y-19.085 +G01 X+28.717 Y-19.05 +G03 X+26.659 Y-18.031 I-1.746 J-0.936 +G01 X+26.547 Y-18.052 +G03 X+24.972 Y-19.801 I+0.432 J-1.972 +G01 X+24.964 Y-19.896 +G01 X+24.96 Y-19.996 +G01 Y-20.058 +G03 X+26.411 Y-21.994 I+2.06 J+0.033 +G01 X+26.527 Y-22.026 +G01 X+26.529 +G03 X+28.817 Y-21.088 I+0.501 J+2.038 +G01 X+28.875 Y-20.989 +G03 X+29.071 Y-19.456 I-1.872 J+1.019 +G01 X+29.047 Y-19.365 +G01 X+29.046 Y-19.362 +G03 X+26.892 Y-17.82 I-2.072 J-0.619 +G01 X+26.875 Y-17.821 +G01 X+26.789 Y-17.826 +G01 X+26.755 Y-17.829 +G01 X+26.633 Y-17.845 +G01 X+26.627 Y-17.846 +G03 X+25.145 Y-18.798 I+0.347 J-2.171 +G01 X+25.108 Y-18.854 +G01 X+25.106 Y-18.858 +G03 X+25.473 Y-21.656 I+1.899 J-1.174 +G01 X+25.477 Y-21.66 +G03 X+28.292 Y-21.894 I+1.555 J+1.657 +G01 X+28.348 Y-21.856 +G03 X+28.902 Y-21.3 I-1.327 J+1.877 +G01 X+28.974 Y-21.191 +G01 X+28.978 Y-21.184 +G01 X+29.041 Y-21.077 +G01 X+29.1 Y-20.959 +G01 X+29.152 Y-20.841 +G01 X+29.153 Y-20.838 +G01 X+29.199 Y-20.715 +G03 X+29.253 Y-19.408 I-2.198 J+0.745 +G01 X+29.226 Y-19.31 +G01 X+29.225 Y-19.306 +G01 X+29.174 Y-19.154 +G01 X+29.149 Y-19.091 +G01 X+29.123 Y-19.03 +G01 X+29.085 Y-18.948 +G01 X+29.066 Y-18.91 +G03 X+28.271 Y-18.022 I-2.086 J-1.068 +G01 X+28.16 Y-17.953 +G01 X+28.157 Y-17.951 +G01 X+28.039 Y-17.887 +G01 X+27.944 Y-17.841 +G01 X+27.917 Y-17.829 +G03 X+26.734 Y-17.643 I-0.947 J-2.167 +G01 X+26.602 Y-17.66 +G01 X+26.595 Y-17.661 +G03 X+24.676 Y-19.37 I+0.382 J-2.36 +G01 X+24.639 Y-19.519 +G01 Y-19.522 +G01 X+24.619 Y-19.623 +G01 X+24.613 Y-19.657 +G03 X+25.92 Y-22.197 I+2.401 J-0.371 +G01 X+25.988 Y-22.231 +G01 X+26.012 Y-22.242 +G01 X+26.051 Y-22.259 +G01 X+26.142 Y-22.295 +G01 X+26.234 Y-22.327 +G03 X+29.105 Y-21.253 I+0.766 J+2.327 +G01 X+29.153 Y-21.168 +G01 X+29.198 Y-21.082 +G03 X+28.533 Y-18.089 I-2.198 J+1.082 +G01 X+28.456 Y-18.03 +G03 X+25.392 Y-18.151 I-1.456 J-1.97 +G01 X+25.32 Y-18.217 +G03 X+24.895 Y-21.253 I+1.68 J-1.783 +G01 X+24.946 Y-21.336 +G01 X+25.001 Y-21.416 +G01 X+25.059 Y-21.495 +G01 X+25.12 Y-21.571 +G03 X+25.875 Y-22.176 I+1.88 J+1.571 +G01 X+25.962 Y-22.219 +G01 X+26.012 Y-22.242 +G01 Z+0.017 F10000 +G00 Z+5.017 +G00 X+27.097 Y-20.154 +G00 Z-0.867 +G03 X+27 Y-20 Z-1.467 I+0.367 J+0.339 F2000 K0.055 +G01 X+27.002 Y-20.001 F2000 +G01 X+27.004 Y-19.998 +G01 X+26.993 Y-19.997 +G01 X+26.99 Y-20.003 +G01 X+26.992 Y-20.009 +G01 X+26.995 Y-20.011 +G01 Y-20.016 +G01 X+27.002 Y-20.027 +G01 X+27.013 Y-20.034 +G01 X+27.031 Y-20.035 +G01 X+27.048 Y-20.029 +G01 X+27.052 Y-20.025 +G03 X+27.072 Y-20 I-0.067 J+0.074 +G01 Y-19.999 +G03 X+27.075 Y-19.956 I-0.096 J+0.027 +G01 X+27.073 Y-19.946 +G01 X+27.069 Y-19.938 +G03 X+27.043 Y-19.904 I-0.09 J-0.043 +G01 X+27.041 Y-19.902 +G01 X+27.017 Y-19.888 +G03 X+26.984 Y-19.879 I-0.041 J-0.091 +G01 X+26.979 +G01 X+26.955 Y-19.88 +G01 X+26.944 Y-19.882 +G03 X+26.904 Y-19.898 I+0.016 J-0.098 +G01 X+26.893 Y-19.905 +G01 X+26.877 Y-19.918 +G01 X+26.873 Y-19.922 +G01 X+26.861 Y-19.938 +G01 X+26.853 Y-19.95 +G01 X+26.844 Y-19.968 +G01 X+26.842 Y-19.975 +G01 X+26.836 Y-19.997 +G01 X+26.833 Y-20.018 +G01 X+26.834 Y-20.046 +G01 X+26.836 Y-20.062 +G01 X+26.842 Y-20.085 +G01 X+26.851 Y-20.107 +G01 X+26.863 Y-20.128 +G01 X+26.871 Y-20.14 +G01 X+26.886 Y-20.156 +G01 X+26.903 Y-20.172 +G01 X+26.918 Y-20.182 +G01 X+26.936 Y-20.192 +G01 X+26.955 Y-20.2 +G01 X+26.975 Y-20.206 +G01 X+27.002 Y-20.212 +G01 X+27.022 Y-20.214 +G01 X+27.049 +G01 X+27.075 Y-20.21 +G01 X+27.1 Y-20.203 +G03 X+27.255 Y-20.024 I-0.08 J+0.226 +G01 X+27.259 Y-19.997 +G01 X+27.26 Y-19.948 +G03 X+27.192 Y-19.791 I-0.273 J-0.025 +G01 X+27.169 Y-19.768 +G03 X+27.02 Y-19.697 I-0.196 J-0.22 +G01 X+26.982 Y-19.693 +G03 X+26.656 Y-19.946 I-0.007 J-0.327 +G01 X+26.649 Y-19.982 +G01 X+26.646 Y-20.03 +G03 X+27.023 Y-20.401 I+0.379 J+0.008 +G01 X+27.09 Y-20.396 +G01 X+27.115 Y-20.392 +G03 X+27.433 Y-19.855 I-0.099 J+0.421 +G01 X+27.411 Y-19.793 +G03 X+26.52 Y-19.781 I-0.448 J-0.208 +G01 X+26.495 Y-19.836 +G03 X+27.265 Y-20.539 I+0.533 J-0.189 +G01 X+27.327 Y-20.508 +G03 X+26.885 Y-19.324 I-0.342 J+0.547 +G01 X+26.844 Y-19.33 +G03 X+26.933 Y-20.769 I+0.159 J-0.713 +G01 X+27 Y-20.775 +G01 X+27.044 +G03 X+27.664 Y-20.454 I-0.017 J+0.79 +G01 X+27.69 Y-20.416 +G01 X+27.691 Y-20.414 +G03 X+26.273 Y-19.475 I-0.729 J+0.439 +G01 X+26.231 Y-19.534 +G03 X+27.736 Y-20.658 I+0.804 J-0.493 +G01 X+27.784 Y-20.604 +G01 X+27.818 Y-20.56 +G01 X+27.85 Y-20.513 +G01 X+27.852 Y-20.51 +G03 X+26.42 Y-19.097 I-0.881 J+0.539 +G01 X+26.376 Y-19.125 +G03 X+26.037 Y-19.492 I+0.604 J-0.897 +G01 X+26.008 Y-19.547 +G03 X+25.899 Y-20.095 I+0.986 J-0.483 +G01 X+25.904 Y-20.158 +G03 X+26.15 Y-20.736 I+1.108 J+0.13 +G01 X+26.192 Y-20.784 +G03 X+26.805 Y-21.128 I+0.835 J+0.769 +G01 X+26.851 Y-21.136 +G03 X+27.631 Y-20.982 I+0.179 J+1.142 +G01 X+27.658 Y-20.965 +G03 X+27.973 Y-20.665 I-0.636 J+0.986 +G01 X+28.011 Y-20.61 +G01 X+28.013 Y-20.606 +G03 X+28.189 Y-19.829 I-1.006 J+0.636 +G01 X+28.179 Y-19.763 +G03 X+27.686 Y-18.984 I-1.196 J-0.211 +G01 X+27.663 Y-18.968 +G03 X+26.717 Y-18.782 I-0.693 J-1.026 +G01 X+26.694 Y-18.787 +G03 X+25.871 Y-19.405 I+0.282 J-1.232 +G01 X+25.838 Y-19.469 +G03 X+25.814 Y-20.539 I+1.162 J-0.562 +G01 X+25.839 Y-20.596 +G03 X+26.697 Y-21.296 I+1.185 J+0.577 +G01 X+26.773 Y-21.313 +G01 X+26.826 Y-21.322 +G01 X+26.885 Y-21.33 +G01 X+26.924 Y-21.333 +G01 X+27 Y-21.337 +G01 X+27.076 +G03 X+28.171 Y-20.707 I-0.049 J+1.353 +G01 X+28.174 Y-20.703 +G03 X+28.248 Y-19.37 I-1.173 J+0.734 +G01 X+28.237 Y-19.347 +G03 X+27.163 Y-18.582 I-1.262 J-0.635 +G01 X+27.095 Y-18.574 +G01 X+27.039 Y-18.57 +G01 X+27 Y-18.569 +G01 X+26.929 +G01 X+26.861 Y-18.573 +G01 X+26.759 Y-18.584 +G01 X+26.674 Y-18.599 +G01 X+26.632 Y-18.609 +G03 X+25.603 Y-19.546 I+0.345 J-1.412 +G01 X+25.581 Y-19.615 +G03 X+25.981 Y-21.105 I+1.427 J-0.415 +G01 X+25.984 Y-21.107 +G03 X+27.516 Y-21.446 I+1.047 J+1.1 +G01 X+27.569 Y-21.427 +G03 X+28.283 Y-20.877 I-0.545 J+1.446 +G01 X+28.332 Y-20.803 +G01 X+28.335 Y-20.799 +G03 X+28.36 Y-19.18 I-1.335 J+0.83 +G01 X+28.312 Y-19.103 +G03 X+27.866 Y-18.653 I-1.333 J-0.876 +G01 X+27.79 Y-18.605 +G01 X+27.788 Y-18.604 +G01 X+27.708 Y-18.56 +G01 X+27.644 Y-18.528 +G01 X+27.625 Y-18.52 +G03 X+27.184 Y-18.395 I-0.654 J-1.472 +G01 X+27.107 Y-18.387 +G01 X+27.092 Y-18.386 +G01 X+27.044 Y-18.383 +G01 X+27 Y-18.381 +G01 X+26.92 Y-18.382 +G03 X+25.497 Y-19.313 I+0.054 J-1.635 +G01 X+25.469 Y-19.375 +G03 X+25.751 Y-21.134 I+1.536 J-0.656 +G01 X+25.789 Y-21.177 +G01 X+25.854 Y-21.243 +G01 X+25.857 Y-21.245 +G01 X+25.929 Y-21.31 +G01 X+25.983 Y-21.354 +G01 X+26.005 Y-21.37 +G03 X+27.935 Y-21.455 I+1.027 J+1.369 +G01 X+27.975 Y-21.429 +G03 X+28.73 Y-19.652 I-0.962 J+1.458 +G01 X+28.709 Y-19.551 +G03 X+28.612 Y-19.264 I-1.718 J-0.42 +G01 X+28.583 Y-19.202 +G01 X+28.569 Y-19.172 +G01 X+28.553 Y-19.141 +G03 X+28.057 Y-18.559 I-1.572 J-0.836 +G01 X+28.051 Y-18.554 +G01 X+28 Y-18.517 +G01 X+27.967 Y-18.495 +G01 X+27.883 Y-18.442 +G01 X+27.881 Y-18.441 +G01 X+27.791 Y-18.391 +G01 X+27.719 Y-18.357 +G01 X+27.698 Y-18.347 +G01 X+27.603 Y-18.309 +G01 X+27.506 Y-18.275 +G01 X+27.434 Y-18.254 +G03 X+25.485 Y-18.964 I-0.464 J-1.757 +G01 X+25.459 Y-19.002 +G03 X+25.456 Y-21.056 I+1.541 J-1.03 +G01 X+25.517 Y-21.143 +G01 X+25.584 Y-21.227 +G01 X+25.612 Y-21.26 +G01 X+25.655 Y-21.307 +G01 X+25.727 Y-21.38 +G01 X+25.73 Y-21.383 +G01 X+25.81 Y-21.455 +G01 X+25.871 Y-21.504 +G01 X+25.894 Y-21.522 +G03 X+28.081 Y-21.584 I+1.138 J+1.521 +G01 X+28.128 Y-21.552 +G01 X+28.216 Y-21.487 +G01 X+28.268 Y-21.444 +G01 X+28.3 Y-21.416 +G01 X+28.336 Y-21.382 +G03 X+28.89 Y-19.503 I-1.328 J+1.412 +G01 X+28.868 Y-19.421 +G01 X+28.867 Y-19.418 +G01 X+28.824 Y-19.29 +G01 X+28.804 Y-19.237 +G01 X+28.782 Y-19.186 +G01 X+28.751 Y-19.117 +G01 X+28.735 Y-19.085 +G01 X+28.717 Y-19.05 +G03 X+26.659 Y-18.031 I-1.746 J-0.936 +G01 X+26.547 Y-18.052 +G03 X+24.972 Y-19.801 I+0.432 J-1.972 +G01 X+24.964 Y-19.896 +G01 X+24.96 Y-19.996 +G01 Y-20.058 +G03 X+26.411 Y-21.994 I+2.06 J+0.033 +G01 X+26.527 Y-22.026 +G01 X+26.529 +G03 X+28.817 Y-21.088 I+0.501 J+2.038 +G01 X+28.875 Y-20.989 +G03 X+29.071 Y-19.456 I-1.872 J+1.019 +G01 X+29.047 Y-19.365 +G01 X+29.046 Y-19.362 +G03 X+26.892 Y-17.82 I-2.072 J-0.619 +G01 X+26.875 Y-17.821 +G01 X+26.789 Y-17.826 +G01 X+26.755 Y-17.829 +G01 X+26.633 Y-17.845 +G01 X+26.627 Y-17.846 +G03 X+25.145 Y-18.798 I+0.347 J-2.171 +G01 X+25.108 Y-18.854 +G01 X+25.106 Y-18.858 +G03 X+25.473 Y-21.656 I+1.899 J-1.174 +G01 X+25.477 Y-21.66 +G03 X+28.292 Y-21.894 I+1.555 J+1.657 +G01 X+28.348 Y-21.856 +G03 X+28.902 Y-21.3 I-1.327 J+1.877 +G01 X+28.974 Y-21.191 +G01 X+28.978 Y-21.184 +G01 X+29.041 Y-21.077 +G01 X+29.1 Y-20.959 +G01 X+29.152 Y-20.841 +G01 X+29.153 Y-20.838 +G01 X+29.199 Y-20.715 +G03 X+29.253 Y-19.408 I-2.198 J+0.745 +G01 X+29.226 Y-19.31 +G01 X+29.225 Y-19.306 +G01 X+29.174 Y-19.154 +G01 X+29.149 Y-19.091 +G01 X+29.123 Y-19.03 +G01 X+29.085 Y-18.948 +G01 X+29.066 Y-18.91 +G03 X+28.271 Y-18.022 I-2.086 J-1.068 +G01 X+28.16 Y-17.953 +G01 X+28.157 Y-17.951 +G01 X+28.039 Y-17.887 +G01 X+27.944 Y-17.841 +G01 X+27.917 Y-17.829 +G03 X+26.734 Y-17.643 I-0.947 J-2.167 +G01 X+26.602 Y-17.66 +G01 X+26.595 Y-17.661 +G03 X+24.676 Y-19.37 I+0.382 J-2.36 +G01 X+24.639 Y-19.519 +G01 Y-19.522 +G01 X+24.619 Y-19.623 +G01 X+24.613 Y-19.657 +G03 X+25.92 Y-22.197 I+2.401 J-0.371 +G01 X+25.988 Y-22.231 +G01 X+26.012 Y-22.242 +G01 X+26.051 Y-22.259 +G01 X+26.142 Y-22.295 +G01 X+26.234 Y-22.327 +G03 X+29.105 Y-21.253 I+0.766 J+2.327 +G01 X+29.153 Y-21.168 +G01 X+29.198 Y-21.082 +G03 X+28.533 Y-18.089 I-2.198 J+1.082 +G01 X+28.456 Y-18.03 +G03 X+25.392 Y-18.151 I-1.456 J-1.97 +G01 X+25.32 Y-18.217 +G03 X+24.895 Y-21.253 I+1.68 J-1.783 +G01 X+24.946 Y-21.336 +G01 X+25.001 Y-21.416 +G01 X+25.059 Y-21.495 +G01 X+25.12 Y-21.571 +G03 X+25.875 Y-22.176 I+1.88 J+1.571 +G01 X+25.962 Y-22.219 +G01 X+26.012 Y-22.242 +G01 Z-0.467 F10000 +G00 Z+4.533 +G00 X+27.097 Y-20.154 +G00 Z-1.35 +G03 X+27 Y-20 Z-1.95 I+0.367 J+0.339 F2000 K0.055 +G01 X+27.002 Y-20.001 F2000 +G01 X+27.004 Y-19.998 +G01 X+26.993 Y-19.997 +G01 X+26.99 Y-20.003 +G01 X+26.992 Y-20.009 +G01 X+26.995 Y-20.011 +G01 Y-20.016 +G01 X+27.002 Y-20.027 +G01 X+27.013 Y-20.034 +G01 X+27.031 Y-20.035 +G01 X+27.048 Y-20.029 +G01 X+27.052 Y-20.025 +G03 X+27.072 Y-20 I-0.067 J+0.074 +G01 Y-19.999 +G03 X+27.075 Y-19.956 I-0.096 J+0.027 +G01 X+27.073 Y-19.946 +G01 X+27.069 Y-19.938 +G03 X+27.043 Y-19.904 I-0.09 J-0.043 +G01 X+27.041 Y-19.902 +G01 X+27.017 Y-19.888 +G03 X+26.984 Y-19.879 I-0.041 J-0.091 +G01 X+26.979 +G01 X+26.955 Y-19.88 +G01 X+26.944 Y-19.882 +G03 X+26.904 Y-19.898 I+0.016 J-0.098 +G01 X+26.893 Y-19.905 +G01 X+26.877 Y-19.918 +G01 X+26.873 Y-19.922 +G01 X+26.861 Y-19.938 +G01 X+26.853 Y-19.95 +G01 X+26.844 Y-19.968 +G01 X+26.842 Y-19.975 +G01 X+26.836 Y-19.997 +G01 X+26.833 Y-20.018 +G01 X+26.834 Y-20.046 +G01 X+26.836 Y-20.062 +G01 X+26.842 Y-20.085 +G01 X+26.851 Y-20.107 +G01 X+26.863 Y-20.128 +G01 X+26.871 Y-20.14 +G01 X+26.886 Y-20.156 +G01 X+26.903 Y-20.172 +G01 X+26.918 Y-20.182 +G01 X+26.936 Y-20.192 +G01 X+26.955 Y-20.2 +G01 X+26.975 Y-20.206 +G01 X+27.002 Y-20.212 +G01 X+27.022 Y-20.214 +G01 X+27.049 +G01 X+27.075 Y-20.21 +G01 X+27.1 Y-20.203 +G03 X+27.255 Y-20.024 I-0.08 J+0.226 +G01 X+27.259 Y-19.997 +G01 X+27.26 Y-19.948 +G03 X+27.192 Y-19.791 I-0.273 J-0.025 +G01 X+27.169 Y-19.768 +G03 X+27.02 Y-19.697 I-0.196 J-0.22 +G01 X+26.982 Y-19.693 +G03 X+26.656 Y-19.946 I-0.007 J-0.327 +G01 X+26.649 Y-19.982 +G01 X+26.646 Y-20.03 +G03 X+27.023 Y-20.401 I+0.379 J+0.008 +G01 X+27.09 Y-20.396 +G01 X+27.115 Y-20.392 +G03 X+27.433 Y-19.855 I-0.099 J+0.421 +G01 X+27.411 Y-19.793 +G03 X+26.52 Y-19.781 I-0.448 J-0.208 +G01 X+26.495 Y-19.836 +G03 X+27.265 Y-20.539 I+0.533 J-0.189 +G01 X+27.327 Y-20.508 +G03 X+26.885 Y-19.324 I-0.342 J+0.547 +G01 X+26.844 Y-19.33 +G03 X+26.933 Y-20.769 I+0.159 J-0.713 +G01 X+27 Y-20.775 +G01 X+27.044 +G03 X+27.664 Y-20.454 I-0.017 J+0.79 +G01 X+27.69 Y-20.416 +G01 X+27.691 Y-20.414 +G03 X+26.273 Y-19.475 I-0.729 J+0.439 +G01 X+26.231 Y-19.534 +G03 X+27.736 Y-20.658 I+0.804 J-0.493 +G01 X+27.784 Y-20.604 +G01 X+27.818 Y-20.56 +G01 X+27.85 Y-20.513 +G01 X+27.852 Y-20.51 +G03 X+26.42 Y-19.097 I-0.881 J+0.539 +G01 X+26.376 Y-19.125 +G03 X+26.037 Y-19.492 I+0.604 J-0.897 +G01 X+26.008 Y-19.547 +G03 X+25.899 Y-20.095 I+0.986 J-0.483 +G01 X+25.904 Y-20.158 +G03 X+26.15 Y-20.736 I+1.108 J+0.13 +G01 X+26.192 Y-20.784 +G03 X+26.805 Y-21.128 I+0.835 J+0.769 +G01 X+26.851 Y-21.136 +G03 X+27.631 Y-20.982 I+0.179 J+1.142 +G01 X+27.658 Y-20.965 +G03 X+27.973 Y-20.665 I-0.636 J+0.986 +G01 X+28.011 Y-20.61 +G01 X+28.013 Y-20.606 +G03 X+28.189 Y-19.829 I-1.006 J+0.636 +G01 X+28.179 Y-19.763 +G03 X+27.686 Y-18.984 I-1.196 J-0.211 +G01 X+27.663 Y-18.968 +G03 X+26.717 Y-18.782 I-0.693 J-1.026 +G01 X+26.694 Y-18.787 +G03 X+25.871 Y-19.405 I+0.282 J-1.232 +G01 X+25.838 Y-19.469 +G03 X+25.814 Y-20.539 I+1.162 J-0.562 +G01 X+25.839 Y-20.596 +G03 X+26.697 Y-21.296 I+1.185 J+0.577 +G01 X+26.773 Y-21.313 +G01 X+26.826 Y-21.322 +G01 X+26.885 Y-21.33 +G01 X+26.924 Y-21.333 +G01 X+27 Y-21.337 +G01 X+27.076 +G03 X+28.171 Y-20.707 I-0.049 J+1.353 +G01 X+28.174 Y-20.703 +G03 X+28.248 Y-19.37 I-1.173 J+0.734 +G01 X+28.237 Y-19.347 +G03 X+27.163 Y-18.582 I-1.262 J-0.635 +G01 X+27.095 Y-18.574 +G01 X+27.039 Y-18.57 +G01 X+27 Y-18.569 +G01 X+26.929 +G01 X+26.861 Y-18.573 +G01 X+26.759 Y-18.584 +G01 X+26.674 Y-18.599 +G01 X+26.632 Y-18.609 +G03 X+25.603 Y-19.546 I+0.345 J-1.412 +G01 X+25.581 Y-19.615 +G03 X+25.981 Y-21.105 I+1.427 J-0.415 +G01 X+25.984 Y-21.107 +G03 X+27.516 Y-21.446 I+1.047 J+1.1 +G01 X+27.569 Y-21.427 +G03 X+28.283 Y-20.877 I-0.545 J+1.446 +G01 X+28.332 Y-20.803 +G01 X+28.335 Y-20.799 +G03 X+28.36 Y-19.18 I-1.335 J+0.83 +G01 X+28.312 Y-19.103 +G03 X+27.866 Y-18.653 I-1.333 J-0.876 +G01 X+27.79 Y-18.605 +G01 X+27.788 Y-18.604 +G01 X+27.708 Y-18.56 +G01 X+27.644 Y-18.528 +G01 X+27.625 Y-18.52 +G03 X+27.184 Y-18.395 I-0.654 J-1.472 +G01 X+27.107 Y-18.387 +G01 X+27.092 Y-18.386 +G01 X+27.044 Y-18.383 +G01 X+27 Y-18.381 +G01 X+26.92 Y-18.382 +G03 X+25.497 Y-19.313 I+0.054 J-1.635 +G01 X+25.469 Y-19.375 +G03 X+25.751 Y-21.134 I+1.536 J-0.656 +G01 X+25.789 Y-21.177 +G01 X+25.854 Y-21.243 +G01 X+25.857 Y-21.245 +G01 X+25.929 Y-21.31 +G01 X+25.983 Y-21.354 +G01 X+26.005 Y-21.37 +G03 X+27.935 Y-21.455 I+1.027 J+1.369 +G01 X+27.975 Y-21.429 +G03 X+28.73 Y-19.652 I-0.962 J+1.458 +G01 X+28.709 Y-19.551 +G03 X+28.612 Y-19.264 I-1.718 J-0.42 +G01 X+28.583 Y-19.202 +G01 X+28.569 Y-19.172 +G01 X+28.553 Y-19.141 +G03 X+28.057 Y-18.559 I-1.572 J-0.836 +G01 X+28.051 Y-18.554 +G01 X+28 Y-18.517 +G01 X+27.967 Y-18.495 +G01 X+27.883 Y-18.442 +G01 X+27.881 Y-18.441 +G01 X+27.791 Y-18.391 +G01 X+27.719 Y-18.357 +G01 X+27.698 Y-18.347 +G01 X+27.603 Y-18.309 +G01 X+27.506 Y-18.275 +G01 X+27.434 Y-18.254 +G03 X+25.485 Y-18.964 I-0.464 J-1.757 +G01 X+25.459 Y-19.002 +G03 X+25.456 Y-21.056 I+1.541 J-1.03 +G01 X+25.517 Y-21.143 +G01 X+25.584 Y-21.227 +G01 X+25.612 Y-21.26 +G01 X+25.655 Y-21.307 +G01 X+25.727 Y-21.38 +G01 X+25.73 Y-21.383 +G01 X+25.81 Y-21.455 +G01 X+25.871 Y-21.504 +G01 X+25.894 Y-21.522 +G03 X+28.081 Y-21.584 I+1.138 J+1.521 +G01 X+28.128 Y-21.552 +G01 X+28.216 Y-21.487 +G01 X+28.268 Y-21.444 +G01 X+28.3 Y-21.416 +G01 X+28.336 Y-21.382 +G03 X+28.89 Y-19.503 I-1.328 J+1.412 +G01 X+28.868 Y-19.421 +G01 X+28.867 Y-19.418 +G01 X+28.824 Y-19.29 +G01 X+28.804 Y-19.237 +G01 X+28.782 Y-19.186 +G01 X+28.751 Y-19.117 +G01 X+28.735 Y-19.085 +G01 X+28.717 Y-19.05 +G03 X+26.659 Y-18.031 I-1.746 J-0.936 +G01 X+26.547 Y-18.052 +G03 X+24.972 Y-19.801 I+0.432 J-1.972 +G01 X+24.964 Y-19.896 +G01 X+24.96 Y-19.996 +G01 Y-20.058 +G03 X+26.411 Y-21.994 I+2.06 J+0.033 +G01 X+26.527 Y-22.026 +G01 X+26.529 +G03 X+28.817 Y-21.088 I+0.501 J+2.038 +G01 X+28.875 Y-20.989 +G03 X+29.071 Y-19.456 I-1.872 J+1.019 +G01 X+29.047 Y-19.365 +G01 X+29.046 Y-19.362 +G03 X+26.892 Y-17.82 I-2.072 J-0.619 +G01 X+26.875 Y-17.821 +G01 X+26.789 Y-17.826 +G01 X+26.755 Y-17.829 +G01 X+26.633 Y-17.845 +G01 X+26.627 Y-17.846 +G03 X+25.145 Y-18.798 I+0.347 J-2.171 +G01 X+25.108 Y-18.854 +G01 X+25.106 Y-18.858 +G03 X+25.473 Y-21.656 I+1.899 J-1.174 +G01 X+25.477 Y-21.66 +G03 X+28.292 Y-21.894 I+1.555 J+1.657 +G01 X+28.348 Y-21.856 +G03 X+28.902 Y-21.3 I-1.327 J+1.877 +G01 X+28.974 Y-21.191 +G01 X+28.978 Y-21.184 +G01 X+29.041 Y-21.077 +G01 X+29.1 Y-20.959 +G01 X+29.152 Y-20.841 +G01 X+29.153 Y-20.838 +G01 X+29.199 Y-20.715 +G03 X+29.253 Y-19.408 I-2.198 J+0.745 +G01 X+29.226 Y-19.31 +G01 X+29.225 Y-19.306 +G01 X+29.174 Y-19.154 +G01 X+29.149 Y-19.091 +G01 X+29.123 Y-19.03 +G01 X+29.085 Y-18.948 +G01 X+29.066 Y-18.91 +G03 X+28.271 Y-18.022 I-2.086 J-1.068 +G01 X+28.16 Y-17.953 +G01 X+28.157 Y-17.951 +G01 X+28.039 Y-17.887 +G01 X+27.944 Y-17.841 +G01 X+27.917 Y-17.829 +G03 X+26.734 Y-17.643 I-0.947 J-2.167 +G01 X+26.602 Y-17.66 +G01 X+26.595 Y-17.661 +G03 X+24.676 Y-19.37 I+0.382 J-2.36 +G01 X+24.639 Y-19.519 +G01 Y-19.522 +G01 X+24.619 Y-19.623 +G01 X+24.613 Y-19.657 +G03 X+25.92 Y-22.197 I+2.401 J-0.371 +G01 X+25.988 Y-22.231 +G01 X+26.012 Y-22.242 +G01 X+26.051 Y-22.259 +G01 X+26.142 Y-22.295 +G01 X+26.234 Y-22.327 +G03 X+29.105 Y-21.253 I+0.766 J+2.327 +G01 X+29.153 Y-21.168 +G01 X+29.198 Y-21.082 +G03 X+28.533 Y-18.089 I-2.198 J+1.082 +G01 X+28.456 Y-18.03 +G03 X+25.392 Y-18.151 I-1.456 J-1.97 +G01 X+25.32 Y-18.217 +G03 X+24.895 Y-21.253 I+1.68 J-1.783 +G01 X+24.946 Y-21.336 +G01 X+25.001 Y-21.416 +G01 X+25.059 Y-21.495 +G01 X+25.12 Y-21.571 +G03 X+25.875 Y-22.176 I+1.88 J+1.571 +G01 X+25.962 Y-22.219 +G01 X+26.012 Y-22.242 +G01 Z+3.05 F10000 +G00 Z+8.05 +(#HSC OFF) +(#TRAFO OFF) +; - EB poche ronde etage 2 +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +(#HSC OFF) +(#TRAFO OFF) +; - EB poche ronde etage 3 +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +(#HSC OFF) +(#TRAFO OFF) +; - Usinage de poche.29 +(#TRAFO ON) +(#HSC[OPMODE 2 CONTERROR 0.05]) +(#HSC ON) +G01 X+12.652 Y-21.547 Z-3.449 F700 +G01 X+12.7 Y-21.55 Z-3.45 +G01 X+12.777 Y-21.548 F700 +G03 X+14.079 Y-20.707 I-0.077 J+1.548 +G01 X+14.113 Y-20.638 +G03 X+13.959 Y-19.095 I-1.413 J+0.638 +G01 X+13.912 Y-19.034 +G03 X+12.469 Y-18.467 I-1.212 J-0.966 +G01 X+12.393 Y-18.481 +G03 X+11.231 Y-19.506 I+0.307 J-1.519 +G01 X+11.208 Y-19.58 +G03 X+11.59 Y-21.082 I+1.492 J-0.42 +G01 X+11.646 Y-21.136 +G03 X+11.892 Y-21.323 I+1.053 J+1.135 +G01 X+11.959 Y-21.361 +G01 X+12.032 Y-21.398 +G01 X+12.098 Y-21.428 +G03 X+13.636 Y-21.236 I+0.602 J+1.428 +G01 X+13.696 Y-21.187 +G03 X+14.226 Y-19.731 I-0.996 J+1.187 +G01 X+14.211 Y-19.655 +G03 X+13.157 Y-18.519 I-1.511 J-0.345 +G01 X+13.082 Y-18.498 +G03 X+11.59 Y-18.918 I-0.382 J-1.502 +G01 X+11.538 Y-18.974 +G01 X+11.488 Y-19.034 +G01 X+11.442 Y-19.095 +G03 X+11.287 Y-20.638 I+1.258 J-0.905 +G01 X+11.321 Y-20.707 +G03 X+11.959 Y-21.361 I+1.379 J+0.707 +G01 X+12.032 Y-21.398 +G03 X+12.344 Y-21.526 I+0.739 J+1.368 +G01 X+12.426 Y-21.547 +G01 X+12.51 Y-21.564 +G01 X+12.595 Y-21.576 +G01 X+12.68 Y-21.583 +G01 X+12.766 Y-21.586 +G01 X+12.852 Y-21.584 +G01 X+12.938 Y-21.578 +G01 X+13.024 Y-21.567 +G01 X+13.11 Y-21.551 +G01 X+13.194 Y-21.53 +G01 X+13.278 Y-21.505 +G01 X+13.36 Y-21.476 +G01 X+13.441 Y-21.441 +G01 X+13.52 Y-21.403 +G01 X+13.597 Y-21.36 +G01 X+13.672 Y-21.313 +G01 X+13.744 Y-21.261 +G01 X+13.814 Y-21.206 +G01 X+13.881 Y-21.147 +G01 X+13.944 Y-21.084 +G01 X+14.004 Y-21.018 +G01 X+14.061 Y-20.948 +G01 X+14.114 Y-20.875 +G01 X+14.163 Y-20.799 +G01 X+14.208 Y-20.721 +G01 X+14.248 Y-20.639 +G01 X+14.285 Y-20.556 +G01 X+14.316 Y-20.471 +G01 X+14.344 Y-20.383 +G01 X+14.366 Y-20.295 +G01 X+14.384 Y-20.204 +G01 X+14.396 Y-20.113 +G01 X+14.404 Y-20.021 +G01 X+14.407 Y-19.929 +G01 X+14.405 Y-19.836 +G01 X+14.398 Y-19.743 +G01 X+14.385 Y-19.651 +G01 X+14.368 Y-19.559 +G01 X+14.346 Y-19.468 +G01 X+14.318 Y-19.379 +G01 X+14.286 Y-19.29 +G01 X+14.249 Y-19.203 +G01 X+14.207 Y-19.119 +G01 X+14.161 Y-19.036 +G01 X+14.11 Y-18.956 +G01 X+14.054 Y-18.878 +G01 X+13.995 Y-18.804 +G01 X+13.931 Y-18.733 +G01 X+13.863 Y-18.665 +G01 X+13.792 Y-18.6 +G01 X+13.717 Y-18.54 +G01 X+13.639 Y-18.483 +G01 X+13.557 Y-18.431 +G01 X+13.473 Y-18.383 +G01 X+13.386 Y-18.34 +G01 X+13.296 Y-18.301 +G01 X+13.204 Y-18.267 +G01 X+13.111 Y-18.239 +G01 X+13.016 Y-18.215 +G01 X+12.919 Y-18.196 +G01 X+12.821 Y-18.183 +G01 X+12.723 Y-18.175 +G01 X+12.624 Y-18.172 +G01 X+12.525 Y-18.175 +G01 X+12.425 Y-18.183 +G01 X+12.327 Y-18.196 +G01 X+12.228 Y-18.215 +G01 X+12.131 Y-18.239 +G01 X+12.035 Y-18.269 +G01 X+11.941 Y-18.303 +G01 X+11.848 Y-18.343 +G01 X+11.758 Y-18.388 +G01 X+11.669 Y-18.438 +G01 X+11.584 Y-18.493 +G01 X+11.501 Y-18.552 +G01 X+11.422 Y-18.616 +G01 X+11.346 Y-18.685 +G01 X+11.273 Y-18.757 +G01 X+11.205 Y-18.834 +G01 X+11.141 Y-18.914 +G01 X+11.081 Y-18.998 +G01 X+11.025 Y-19.085 +G01 X+10.974 Y-19.175 +G01 X+10.928 Y-19.268 +G01 X+10.887 Y-19.364 +G01 X+10.851 Y-19.462 +G01 X+10.821 Y-19.562 +G01 X+10.796 Y-19.663 +G01 X+10.776 Y-19.766 +G01 X+10.762 Y-19.871 +G01 X+10.754 Y-19.976 +G01 X+10.751 Y-20.081 +G01 X+10.754 Y-20.187 +G01 X+10.763 Y-20.293 +G01 X+10.778 Y-20.398 +G01 X+10.798 Y-20.502 +G01 X+10.824 Y-20.606 +G01 X+10.856 Y-20.708 +G01 X+10.893 Y-20.809 +G01 X+10.936 Y-20.907 +G01 X+10.984 Y-21.003 +G01 X+11.037 Y-21.097 +G01 X+11.096 Y-21.188 +G01 X+11.159 Y-21.276 +G01 X+11.228 Y-21.36 +G01 X+11.3 Y-21.441 +G01 X+11.378 Y-21.518 +G01 X+11.459 Y-21.59 +G01 X+11.545 Y-21.659 +G01 X+11.634 Y-21.722 +G01 X+11.727 Y-21.781 +G01 X+11.823 Y-21.835 +G01 X+11.923 Y-21.88 +G01 X+12.026 Y-21.921 +G01 X+12.131 Y-21.955 +G01 X+12.237 Y-21.984 +G01 X+12.345 Y-22.006 +G01 X+12.454 Y-22.024 +G01 X+12.564 Y-22.035 +G01 X+12.674 Y-22.04 +G01 X+12.785 Y-22.039 +G01 X+12.895 Y-22.032 +G01 X+13.005 Y-22.02 +G01 X+13.114 Y-22.001 +G01 X+13.222 Y-21.976 +G01 X+13.329 Y-21.946 +G01 X+13.433 Y-21.91 +G01 X+13.536 Y-21.868 +G01 X+13.636 Y-21.82 +G01 X+13.734 Y-21.768 +G01 X+13.828 Y-21.71 +G01 X+13.92 Y-21.647 +G01 X+14.008 Y-21.579 +G01 X+14.092 Y-21.506 +G01 X+14.172 Y-21.43 +G01 X+14.248 Y-21.348 +G01 X+14.319 Y-21.263 +G01 X+14.386 Y-21.174 +G01 X+14.447 Y-21.081 +G01 X+14.504 Y-20.986 +G01 X+14.555 Y-20.887 +G01 X+14.601 Y-20.785 +G01 X+14.642 Y-20.681 +G01 X+14.677 Y-20.576 +G01 X+14.706 Y-20.468 +G01 X+14.729 Y-20.359 +G01 X+14.746 Y-20.248 +G01 X+14.758 Y-20.137 +G01 X+14.763 Y-20.026 +G01 X+14.762 Y-19.914 +G01 X+14.755 Y-19.803 +G01 X+14.742 Y-19.691 +G01 X+14.723 Y-19.581 +G01 X+14.698 Y-19.472 +G01 X+14.667 Y-19.364 +G01 X+14.631 Y-19.259 +G01 X+14.589 Y-19.155 +G01 X+14.541 Y-19.054 +G01 X+14.487 Y-18.955 +G01 X+14.429 Y-18.859 +G01 X+14.365 Y-18.767 +G01 X+14.297 Y-18.678 +G01 X+14.223 Y-18.593 +G01 X+14.145 Y-18.512 +G01 X+14.063 Y-18.435 +G01 X+13.977 Y-18.363 +G01 X+13.887 Y-18.296 +G01 X+13.793 Y-18.233 +G01 X+13.697 Y-18.176 +G01 X+13.597 Y-18.124 +G01 X+13.494 Y-18.078 +G01 X+13.389 Y-18.037 +G01 X+13.282 Y-18.001 +G01 X+13.173 Y-17.972 +G01 X+13.063 Y-17.949 +G01 X+12.951 Y-17.931 +G01 X+12.839 Y-17.92 +G01 X+12.726 Y-17.915 +G01 X+12.613 Y-17.916 +G01 X+12.5 Y-17.923 +G01 X+12.388 Y-17.935 +G01 X+12.277 Y-17.955 +G01 X+12.166 Y-17.98 +G01 X+12.057 Y-18.011 +G01 X+11.95 Y-18.048 +G01 X+11.845 Y-18.091 +G01 X+11.743 Y-18.139 +G01 X+11.643 Y-18.193 +G01 X+11.547 Y-18.252 +G01 X+11.453 Y-18.316 +G01 X+11.363 Y-18.386 +G01 X+11.278 Y-18.46 +G01 X+11.196 Y-18.539 +G01 X+11.118 Y-18.622 +G01 X+11.045 Y-18.709 +G01 X+10.977 Y-18.8 +G01 X+10.914 Y-18.895 +G01 X+10.856 Y-18.993 +G01 X+10.804 Y-19.094 +G01 X+10.757 Y-19.197 +G01 X+10.715 Y-19.304 +G01 X+10.679 Y-19.412 +G01 X+10.65 Y-19.522 +G01 X+10.627 Y-19.633 +G01 X+10.609 Y-19.746 +G01 X+10.597 Y-19.86 +G01 X+10.592 Y-19.974 +G01 X+10.593 Y-20.088 +G01 X+10.6 Y-20.202 +G01 X+10.613 Y-20.315 +G01 X+10.632 Y-20.428 +G01 X+10.658 Y-20.539 +G01 X+10.69 Y-20.649 +G01 X+10.727 Y-20.758 +G01 X+10.77 Y-20.864 +G01 X+10.819 Y-20.967 +G01 X+10.874 Y-21.068 +G01 X+10.933 Y-21.166 +G01 X+10.998 Y-21.26 +G01 X+11.069 Y-21.351 +G01 X+11.144 Y-21.438 +G01 X+11.223 Y-21.521 +G01 X+11.307 Y-21.599 +G01 X+11.395 Y-21.673 +G01 X+11.487 Y-21.741 +G01 X+11.583 Y-21.805 +G01 X+11.682 Y-21.864 +G01 X+11.784 Y-21.917 +G01 X+11.889 Y-21.964 +G01 X+11.996 Y-22.006 +G01 X+12.105 Y-22.042 +G01 X+12.217 Y-22.072 +G01 X+12.329 Y-22.096 +G01 X+12.443 Y-22.114 +G01 X+12.558 Y-22.126 +G01 X+12.673 Y-22.131 +G01 X+12.789 Y-22.13 +G01 X+12.904 Y-22.122 +G01 X+13.019 Y-22.109 +G01 X+13.133 Y-22.09 +G01 X+13.245 Y-22.064 +G01 X+13.356 Y-22.032 +G01 X+13.466 Y-21.994 +G01 X+13.573 Y-21.951 +G01 X+13.678 Y-21.901 +G01 X+13.779 Y-21.846 +G01 X+13.878 Y-21.786 +G01 X+13.974 Y-21.72 +G01 X+14.065 Y-21.649 +G01 X+14.153 Y-21.573 +G01 X+14.237 Y-21.493 +G01 X+14.316 Y-21.408 +G01 X+14.391 Y-21.319 +G01 X+14.46 Y-21.226 +G01 X+14.525 Y-21.129 +G01 X+14.584 Y-21.029 +G01 X+14.637 Y-20.926 +G01 X+14.685 Y-20.82 +G01 X+14.728 Y-20.712 +G01 X+14.764 Y-20.601 +G01 X+14.794 Y-20.489 +G01 X+14.818 Y-20.375 +G01 X+14.836 Y-20.259 +G01 X+14.848 Y-20.143 +G01 X+14.853 Y-20.027 +G01 X+14.852 Y-19.91 +G01 X+14.845 Y-19.794 +G01 X+14.832 Y-19.678 +G01 X+14.812 Y-19.563 +G01 X+14.786 Y-19.449 +G01 X+14.754 Y-19.337 +G01 X+14.716 Y-19.226 +G01 X+14.672 Y-19.118 +G01 X+14.621 Y-19.012 +G01 X+14.566 Y-18.909 +G01 X+14.505 Y-18.809 +G01 X+14.438 Y-18.713 +G01 X+14.366 Y-18.62 +G01 X+14.29 Y-18.531 +G01 X+14.209 Y-18.447 +G01 X+14.123 Y-18.367 +G01 X+14.033 Y-18.292 +G01 X+13.939 Y-18.221 +G01 X+13.841 Y-18.156 +G01 X+13.74 Y-18.096 +G01 X+13.636 Y-18.042 +G01 X+13.529 Y-17.994 +G01 X+13.419 Y-17.951 +G01 X+13.307 Y-17.914 +G01 X+13.194 Y-17.884 +G01 X+13.078 Y-17.859 +G01 X+12.962 Y-17.841 +G01 X+12.845 Y-17.829 +G01 X+12.727 Y-17.824 +G01 X+12.609 Y-17.825 +G01 X+12.492 Y-17.832 +G01 X+12.374 Y-17.846 +G01 X+12.258 Y-17.866 +G01 X+12.143 Y-17.892 +G01 X+12.03 Y-17.925 +G01 X+11.918 Y-17.963 +G01 X+11.808 Y-18.008 +G01 X+11.702 Y-18.059 +G01 X+11.598 Y-18.115 +G01 X+11.497 Y-18.176 +G01 X+11.399 Y-18.243 +G01 X+11.306 Y-18.316 +G01 X+11.216 Y-18.394 +G01 X+11.13 Y-18.476 +G01 X+11.049 Y-18.562 +G01 X+10.974 Y-18.653 +G01 X+10.903 Y-18.748 +G01 X+10.837 Y-18.847 +G01 X+10.776 Y-18.949 +G01 X+10.722 Y-19.055 +G01 X+10.673 Y-19.163 +G01 X+10.63 Y-19.273 +G01 X+10.592 Y-19.386 +G01 X+10.562 Y-19.501 +G01 X+10.537 Y-19.618 +G01 X+10.519 Y-19.735 +G01 X+10.506 Y-19.854 +G01 X+10.501 Y-19.972 +G01 X+10.502 Y-20.092 +G01 X+10.51 Y-20.211 +G01 X+10.523 Y-20.329 +G01 X+10.544 Y-20.446 +G01 X+10.57 Y-20.563 +G01 X+10.603 Y-20.677 +G01 X+10.642 Y-20.79 +G01 X+10.687 Y-20.901 +G01 X+10.738 Y-21.009 +G01 X+10.795 Y-21.114 +G01 X+10.857 Y-21.216 +G01 X+10.925 Y-21.314 +G01 X+10.999 Y-21.409 +G01 X+11.077 Y-21.499 +G01 X+11.16 Y-21.586 +G01 X+11.247 Y-21.668 +G01 X+11.339 Y-21.744 +G01 X+11.435 Y-21.816 +G01 X+11.535 Y-21.883 +G01 X+11.638 Y-21.944 +G01 X+11.745 Y-21.999 +G01 X+11.853 Y-22.051 +G01 X+11.964 Y-22.098 +G01 X+12.077 Y-22.139 +G01 X+12.193 Y-22.174 +G01 X+12.311 Y-22.202 +G01 X+12.43 Y-22.224 +G01 X+12.55 Y-22.24 +G01 X+12.672 Y-22.249 +G01 X+12.794 Y-22.251 +G01 X+12.916 Y-22.247 +G01 X+13.038 Y-22.236 +G01 X+13.159 Y-22.219 +G01 X+13.28 Y-22.194 +G01 X+13.399 Y-22.164 +G01 X+13.517 Y-22.127 +G01 X+13.632 Y-22.083 +G01 X+13.746 Y-22.033 +G01 X+13.856 Y-21.977 +G01 X+13.964 Y-21.915 +G01 X+14.068 Y-21.848 +G01 X+14.169 Y-21.774 +G01 X+14.266 Y-21.695 +G01 X+14.358 Y-21.61 +G01 X+14.446 Y-21.521 +G01 X+14.529 Y-21.427 +G01 X+14.607 Y-21.328 +G01 X+14.68 Y-21.225 +G01 X+14.747 Y-21.118 +G01 X+14.808 Y-21.008 +G01 X+14.863 Y-20.893 +G01 X+14.913 Y-20.776 +G01 X+14.956 Y-20.657 +G01 X+14.992 Y-20.535 +G01 X+15.021 Y-20.41 +G01 X+15.044 Y-20.285 +G01 X+15.061 Y-20.158 +G01 X+15.07 Y-20.03 +G01 X+15.072 Y-19.901 +G01 X+15.067 Y-19.772 +G01 X+15.056 Y-19.644 +G01 X+15.037 Y-19.516 +G01 X+15.011 Y-19.389 +G01 X+14.979 Y-19.264 +G01 X+14.94 Y-19.14 +G01 X+14.894 Y-19.018 +G01 X+14.841 Y-18.899 +G01 X+14.782 Y-18.783 +G01 X+14.716 Y-18.669 +G01 X+14.645 Y-18.56 +G01 X+14.567 Y-18.454 +G01 X+14.484 Y-18.352 +G01 X+14.395 Y-18.255 +G01 X+14.301 Y-18.163 +G01 X+14.201 Y-18.075 +G01 X+14.097 Y-17.994 +G01 X+13.989 Y-17.917 +G01 X+13.876 Y-17.847 +G01 X+13.76 Y-17.783 +G01 X+13.64 Y-17.725 +G01 X+13.517 Y-17.673 +G01 X+13.391 Y-17.628 +G01 X+13.262 Y-17.59 +G01 X+13.132 Y-17.559 +G01 X+12.999 Y-17.535 +G01 X+12.866 Y-17.519 +G01 X+12.731 Y-17.509 +G01 X+12.596 Y-17.507 +G01 X+12.461 Y-17.512 +G01 X+12.326 Y-17.524 +G01 X+12.192 Y-17.544 +G01 X+12.058 Y-17.571 +G01 X+11.927 Y-17.606 +G01 X+11.796 Y-17.647 +G01 X+11.669 Y-17.696 +G01 X+11.544 Y-17.751 +G01 X+11.421 Y-17.814 +G01 X+11.303 Y-17.882 +G01 X+11.188 Y-17.958 +G01 X+11.077 Y-18.04 +G01 X+10.97 Y-18.127 +G01 X+10.868 Y-18.221 +G01 X+10.771 Y-18.32 +G01 X+10.68 Y-18.424 +G01 X+10.594 Y-18.533 +G01 X+10.514 Y-18.647 +G01 X+10.441 Y-18.766 +G01 X+10.373 Y-18.888 +G01 X+10.313 Y-19.014 +G01 X+10.259 Y-19.143 +G01 X+10.212 Y-19.276 +G01 X+10.172 Y-19.41 +G01 X+10.14 Y-19.547 +G01 X+10.115 Y-19.686 +G01 X+10.098 Y-19.826 +G01 X+10.088 Y-19.967 +G01 X+10.086 Y-20.109 +G01 X+10.092 Y-20.251 +G01 X+10.105 Y-20.392 +G01 X+10.126 Y-20.533 +G01 X+10.154 Y-20.673 +G01 X+10.19 Y-20.811 +G01 X+10.234 Y-20.947 +G01 X+10.285 Y-21.081 +G03 X+10.646 Y-21.701 I+2.455 J+1.015 +G01 X+10.738 Y-21.812 +G01 X+10.836 Y-21.919 +G01 X+10.94 Y-22.02 +G01 X+11.05 Y-22.116 +G01 X+11.164 Y-22.205 +G01 X+11.284 Y-22.289 +G01 X+11.408 Y-22.366 +G01 X+11.536 Y-22.436 +G01 X+11.589 Y-22.46 +G03 X+14.878 Y-21.596 I+1.111 J+2.46 +G01 X+14.936 Y-21.512 +G03 X+14.642 Y-18.124 I-2.236 J+1.512 +G01 X+14.57 Y-18.052 +G03 X+11.181 Y-17.768 I-1.87 J-1.948 +G01 X+11.097 Y-17.827 +G01 X+11.016 Y-17.889 +G01 X+10.938 Y-17.955 +G01 X+10.861 Y-18.023 +G03 X+10.386 Y-21.39 I+1.839 J-1.977 +G01 X+10.44 Y-21.477 +G03 X+11.406 Y-22.369 I+2.26 J+1.477 +G01 X+11.496 Y-22.417 +G01 X+11.536 Y-22.436 +G03 X+12.868 Y-21.961 I+0.429 J+0.904 F2000 +G01 Z+1.55 +(#HSC OFF) +(#TRAFO OFF) +(D0) +G53 G01 Z+24 F1000 +G53 G01 Y+27 F1000 +M05 +M09 +M30 +N99999999 %Ebauche G71 diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/full/004_100_RoueDentee_Face_1_V01.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/004_100_RoueDentee_Face_1_V01.ngc new file mode 100644 index 0000000..fca2074 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/004_100_RoueDentee_Face_1_V01.ngc @@ -0,0 +1,1626 @@ +% +(100_ROUEDENTEE_FACE_1_V01) +(MACHINE) +( MODEL M3) +( DESCRIPTION M3) +(T2 D=3. CR=0. - ZMIN=-3.9 - FLAT END MILL) +(T3 D=3. CR=0. - ZMIN=-5.7 - FLAT END MILL) +N10 G90 G94 G17 G91.1 +N15 G21 +(101_SURFACAGE_EBAUCHE) +(N20 M61 Q2) +(N25 T3) +N30 S60000 M3 +N35 G54 +N45 G0 X2.841 Y-0.163 +N50 G1 Z1. F1000. +N55 Z0.2 +N60 G3 X0.009 Y0.162 Z0.044 I-1.416 J0.162 +N65 X2.841 Y-0.163 Z-0.113 I1.416 J-0.162 +N70 X0.009 Y0.162 Z-0.269 I-1.416 J0.162 +N75 X2.841 Y-0.163 Z-0.425 I1.416 J-0.162 +N80 X0.009 Y0.162 Z-0.582 I-1.416 J0.162 +N85 X2.841 Y-0.163 Z-0.738 I1.416 J-0.162 +N90 X1.506 Y1.422 Z-0.819 I-1.416 J0.162 +N95 X0. Y0. Z-0.9 I-0.081 J-1.423 +N100 X0.25 Y-0.25 I0.25 J0. +N105 X0.5 Y0. I0. J0.25 +N110 X-0.5 I-0.5 J0. +N115 X1. I0.75 J0. +N120 X-1. I-1. J0. +N125 X1.5 I1.25 J0. +N130 X-1.5 I-1.5 J0. +N135 X2. I1.75 J0. +N140 X-2. I-2. J0. +N145 X2.5 I2.25 J0. +N150 X-2.5 I-2.5 J0. +N155 X3. I2.75 J0. +N160 X-3. I-3. J0. +N165 X3.5 I3.25 J0. +N170 X-3.5 I-3.5 J0. +N175 X4. I3.75 J0. +N180 X-4. I-4. J0. +N185 X4.5 I4.25 J0. +N190 X-4.5 I-4.5 J0. +N195 X5. I4.75 J0. +N200 X-5. I-5. J0. +N205 X5.5 I5.25 J0. +N210 X-5.5 I-5.5 J0. +N215 X6. I5.75 J0. +N220 X-6. I-6. J0. +N225 X6.5 I6.25 J0. +N230 X-6.5 I-6.5 J0. +N235 X7. I6.75 J0. +N240 X-7. I-7. J0. +N245 X7.5 I7.25 J0. +N250 X-7.5 I-7.5 J0. +N255 X8. I7.75 J0. +N260 X-8. I-8. J0. +N265 X8.5 I8.25 J0. +N270 X-8.5 I-8.5 J0. +N275 X9. I8.75 J0. +N280 X-9. I-9. J0. +N285 X9.5 I9.25 J0. +N290 X-9.5 I-9.5 J0. +N295 X10. I9.75 J0. +N300 X-10. I-10. J0. +N305 X10.5 I10.25 J0. +N310 X-10.5 I-10.5 J0. +N315 X11. I10.75 J0. +N320 X-11. I-11. J0. +N325 X11.5 I11.25 J0. +N330 X-11.5 I-11.5 J0. +N335 X12. I11.75 J0. +N340 X-12. I-12. J0. +N345 X12.5 I12.25 J0. +N350 X-12.5 I-12.5 J0. +N355 X13. I12.75 J0. +N360 X-13. I-13. J0. +N365 X13.5 I13.25 J0. +N370 X-13.5 I-13.5 J0. +N375 X14. I13.75 J0. +N380 X-14. I-14. J0. +N385 X14.5 I14.25 J0. +N390 X-14.5 I-14.5 J0. +N395 X15. I14.75 J0. +N400 X-15. I-15. J0. +N405 X15.5 I15.25 J0. +N410 X-15.5 I-15.5 J0. +N415 X16. I15.75 J0. +N420 X-16. I-16. J0. +N425 X16.5 I16.25 J0. +N430 X-16.5 I-16.5 J0. +N435 X17. I16.75 J0. +N440 X-17. I-17. J0. +N445 X17.5 I17.25 J0. +N450 X-17.5 I-17.5 J0. +N455 X18. I17.75 J0. +N460 X-18. I-18. J0. +N465 X18.5 I18.25 J0. +N470 X-18.5 I-18.5 J0. +N475 X19. I18.75 J0. +N480 X-19. I-19. J0. +N485 X19.5 I19.25 J0. +N490 X-19.5 I-19.5 J0. +N495 X20. I19.75 J0. +N500 X-20. I-20. J0. +N505 X20.5 I20.25 J0. +N510 X-20.5 I-20.5 J0. +N515 X21. I20.75 J0. +N520 X-21. I-21. J0. +N525 X21.5 I21.25 J0. +N530 X-21.5 I-21.5 J0. +N535 X22. I21.75 J0. +N540 X-22. I-22. J0. +N545 X22. I22. J0. +N550 G0 Z1. +N560 M5 +(102_SURFACAGE_FINITION) +N565 M1 +(N570 M61 Q3) +(N575 T2) +N580 S60000 M3 +N585 G54 +N595 G0 X0.046 Y-0.359 +N600 G1 Z0.1 F400. +N605 Z-0.7 +N610 G3 X2.804 Y0.358 Z-0.856 I1.379 J0.359 F200. +N615 X0. Y0. Z-1. I-1.379 J-0.359 +N620 X0.25 Y-0.25 I0.25 J0. F400. +N625 X0.5 Y0. I0. J0.25 +N630 X-0.5 I-0.5 J0. +N635 X1. I0.75 J0. +N640 X-1. I-1. J0. +N645 X1.5 I1.25 J0. +N650 X-1.5 I-1.5 J0. +N655 X2. I1.75 J0. +N660 X-2. I-2. J0. +N665 X2.5 I2.25 J0. +N670 X-2.5 I-2.5 J0. +N675 X3. I2.75 J0. +N680 X-3. I-3. J0. +N685 X3.5 I3.25 J0. +N690 X-3.5 I-3.5 J0. +N695 X4. I3.75 J0. +N700 X-4. I-4. J0. +N705 X4.5 I4.25 J0. +N710 X-4.5 I-4.5 J0. +N715 X5. I4.75 J0. +N720 X-5. I-5. J0. +N725 X5.5 I5.25 J0. +N730 X-5.5 I-5.5 J0. +N735 X6. I5.75 J0. +N740 X-6. I-6. J0. +N745 X6.5 I6.25 J0. +N750 X-6.5 I-6.5 J0. +N755 X7. I6.75 J0. +N760 X-7. I-7. J0. +N765 X7.5 I7.25 J0. +N770 X-7.5 I-7.5 J0. +N775 X8. I7.75 J0. +N780 X-8. I-8. J0. +N785 X8.5 I8.25 J0. +N790 X-8.5 I-8.5 J0. +N795 X9. I8.75 J0. +N800 X-9. I-9. J0. +N805 X9.5 I9.25 J0. +N810 X-9.5 I-9.5 J0. +N815 X10. I9.75 J0. +N820 X-10. I-10. J0. +N825 X10.5 I10.25 J0. +N830 X-10.5 I-10.5 J0. +N835 X11. I10.75 J0. +N840 X-11. I-11. J0. +N845 X11.5 I11.25 J0. +N850 X-11.5 I-11.5 J0. +N855 X12. I11.75 J0. +N860 X-12. I-12. J0. +N865 X12.5 I12.25 J0. +N870 X-12.5 I-12.5 J0. +N875 X13. I12.75 J0. +N880 X-13. I-13. J0. +N885 X13.5 I13.25 J0. +N890 X-13.5 I-13.5 J0. +N895 X14. I13.75 J0. +N900 X-14. I-14. J0. +N905 X14.5 I14.25 J0. +N910 X-14.5 I-14.5 J0. +N915 X15. I14.75 J0. +N920 X-15. I-15. J0. +N925 X15.5 I15.25 J0. +N930 X-15.5 I-15.5 J0. +N935 X16. I15.75 J0. +N940 X-16. I-16. J0. +N945 X16.5 I16.25 J0. +N950 X-16.5 I-16.5 J0. +N955 X17. I16.75 J0. +N960 X-17. I-17. J0. +N965 X17.5 I17.25 J0. +N970 X-17.5 I-17.5 J0. +N975 X18. I17.75 J0. +N980 X-18. I-18. J0. +N985 X18.5 I18.25 J0. +N990 X-18.5 I-18.5 J0. +N995 X19. I18.75 J0. +N1000 X-19. I-19. J0. +N1005 X19.5 I19.25 J0. +N1010 X-19.5 I-19.5 J0. +N1015 X20. I19.75 J0. +N1020 X-20. I-20. J0. +N1025 X20.5 I20.25 J0. +N1030 X-20.5 I-20.5 J0. +N1035 X21. I20.75 J0. +N1040 X-21. I-21. J0. +N1045 X21.5 I21.25 J0. +N1050 X-21.5 I-21.5 J0. +N1055 X22. I21.75 J0. +N1060 X-22. I-22. J0. +N1065 X22. I22. J0. +N1070 G0 Z0.1 +N1080 M5 +(103_CONTOURNAGE_EBAUCHE) +N1085 M1 +(N1090 M61 Q2) +(N1095 T3) +N1100 S60000 M3 +N1105 G54 +N1115 G0 X0.3 Y-24.5 +N1120 G1 Z1. F200. +N1125 Z-2.2 +N1130 G19 G3 Y-24.2 Z-2.5 J0.3 K0. +N1135 G1 Y-23.9 F1000. +N1140 G17 G3 X0. Y-23.6 I-0.3 J0. +N1145 G2 X-6.594 Y-22.66 I0. J23.6 +N1150 X-7.168 Y-22.415 I0.727 J2.496 +N1155 G1 X-15.828 Y-17.415 +N1160 G2 X-16.327 Y-17.041 I1.3 J2.252 +N1165 X-22.921 Y-5.619 I16.327 J17.041 +N1170 X-22.996 Y-5. I2.525 J0.619 +N1175 G1 Y5. +N1180 G2 X-22.921 Y5.619 I2.6 J0. +N1185 X-16.327 Y17.041 I22.921 J-5.619 +N1190 X-15.828 Y17.415 I1.799 J-1.877 +N1195 G1 X-7.168 Y22.415 +N1200 G2 X-6.594 Y22.66 I1.3 J-2.252 +N1205 X6.594 I6.594 J-22.66 +N1210 X7.168 Y22.415 I-0.727 J-2.496 +N1215 G1 X15.828 Y17.415 +N1220 G2 X16.327 Y17.041 I-1.3 J-2.252 +N1225 X22.921 Y5.619 I-16.327 J-17.041 +N1230 X22.996 Y5. I-2.525 J-0.619 +N1235 G1 Y-5. +N1240 G2 X22.921 Y-5.619 I-2.6 J0. +N1245 X16.327 Y-17.041 I-22.921 J5.619 +N1250 X15.828 Y-17.415 I-1.799 J1.877 +N1255 G1 X7.168 Y-22.415 +N1260 G2 X6.594 Y-22.66 I-1.3 J2.252 +N1265 X0. Y-23.6 I-6.594 J22.66 +N1270 X-0.377 Y-23.347 I0. J0.407 +N1275 G3 X-0.75 Y-23.088 I-0.386 J-0.158 +N1280 G2 X-6.455 Y-22.18 I0.75 J23.088 +N1285 X-6.918 Y-21.982 I0.587 J2.016 +N1290 G1 X-15.578 Y-16.982 +N1295 G2 X-15.981 Y-16.68 I1.05 J1.819 +N1300 X-22.436 Y-5.5 I15.981 J16.68 +N1305 X-22.496 Y-5. I2.04 J0.5 +N1310 G1 Y5. +N1315 G2 X-22.436 Y5.5 I2.1 J0. +N1320 X-15.981 Y16.68 I22.436 J-5.5 +N1325 X-15.578 Y16.982 I1.453 J-1.516 +N1330 G1 X-6.918 Y21.982 +N1335 G2 X-6.455 Y22.18 I1.05 J-1.819 +N1340 X6.455 I6.455 J-22.18 +N1345 X6.918 Y21.982 I-0.587 J-2.016 +N1350 G1 X15.578 Y16.982 +N1355 G2 X15.981 Y16.68 I-1.05 J-1.819 +N1360 X22.436 Y5.5 I-15.981 J-16.68 +N1365 X22.496 Y5. I-2.04 J-0.5 +N1370 G1 Y-5. +N1375 G2 X22.436 Y-5.5 I-2.1 J0. +N1380 X15.981 Y-16.68 I-22.436 J5.5 +N1385 X15.578 Y-16.982 I-1.453 J1.516 +N1390 G1 X6.918 Y-21.982 +N1395 G2 X6.455 Y-22.18 I-1.05 J1.819 +N1400 X-0.75 Y-23.088 I-6.455 J22.18 +N1405 X-1.119 Y-22.823 I0.013 J0.407 +N1410 G3 X-1.483 Y-22.551 I-0.392 J-0.146 +N1415 G2 X-6.315 Y-21.7 I1.483 J22.551 +N1420 X-6.668 Y-21.549 I0.447 J1.536 +N1425 G1 X-15.328 Y-16.549 +N1430 G2 X-15.635 Y-16.319 I0.8 J1.386 +N1435 X-21.95 Y-5.381 I15.635 J16.319 +N1440 X-21.996 Y-5. I1.554 J0.381 +N1445 G1 Y5. +N1450 G2 X-21.95 Y5.381 I1.6 J0. +N1455 X-15.635 Y16.319 I21.95 J-5.381 +N1460 X-15.328 Y16.549 I1.107 J-1.155 +N1465 G1 X-6.668 Y21.549 +N1470 G2 X-6.315 Y21.7 I0.8 J-1.386 +N1475 X6.315 I6.315 J-21.7 +N1480 X6.668 Y21.549 I-0.447 J-1.536 +N1485 G1 X15.328 Y16.549 +N1490 G2 X15.635 Y16.319 I-0.8 J-1.386 +N1495 X21.95 Y5.381 I-15.635 J-16.319 +N1500 X21.996 Y5. I-1.554 J-0.381 +N1505 G1 Y-5. +N1510 G2 X21.95 Y-5.381 I-1.6 J0. +N1515 X15.635 Y-16.319 I-21.95 J5.381 +N1520 X15.328 Y-16.549 I-1.107 J1.155 +N1525 G1 X6.668 Y-21.549 +N1530 G2 X6.315 Y-21.7 I-0.8 J1.386 +N1535 X-1.483 Y-22.551 I-6.315 J21.7 +N1540 G3 X-1.802 Y-22.831 I-0.02 J-0.299 +N1545 G1 X-1.821 Y-23.13 +N1550 X-1.824 Y-23.177 Z-2.496 +N1555 X-1.827 Y-23.223 Z-2.485 +N1560 X-1.83 Y-23.266 Z-2.467 +N1565 X-1.833 Y-23.306 Z-2.443 +N1570 X-1.835 Y-23.342 Z-2.412 +N1575 X-1.837 Y-23.372 Z-2.376 +N1580 X-1.839 Y-23.397 Z-2.336 +N1585 X-1.84 Y-23.415 Z-2.293 +N1590 X-1.841 Y-23.426 Z-2.247 +N1595 Y-23.43 Z-2.2 +N1600 G0 Z1. +N1605 X0.3 Y-24.5 +N1610 Z-0.5 +N1615 G1 Z-3.6 F200. +N1620 G19 G3 Y-24.2 Z-3.9 J0.3 K0. +N1625 G1 Y-23.9 F1000. +N1630 G17 G3 X0. Y-23.6 I-0.3 J0. +N1635 G2 X-6.594 Y-22.66 I0. J23.6 +N1640 X-7.168 Y-22.415 I0.727 J2.496 +N1645 G1 X-15.828 Y-17.415 +N1650 G2 X-16.327 Y-17.041 I1.3 J2.252 +N1655 X-22.921 Y-5.619 I16.327 J17.041 +N1660 X-22.996 Y-5. I2.525 J0.619 +N1665 G1 Y5. +N1670 G2 X-22.921 Y5.619 I2.6 J0. +N1675 X-16.327 Y17.041 I22.921 J-5.619 +N1680 X-15.828 Y17.415 I1.799 J-1.877 +N1685 G1 X-7.168 Y22.415 +N1690 G2 X-6.594 Y22.66 I1.3 J-2.252 +N1695 X6.594 I6.594 J-22.66 +N1700 X7.168 Y22.415 I-0.727 J-2.496 +N1705 G1 X15.828 Y17.415 +N1710 G2 X16.327 Y17.041 I-1.3 J-2.252 +N1715 X22.921 Y5.619 I-16.327 J-17.041 +N1720 X22.996 Y5. I-2.525 J-0.619 +N1725 G1 Y-5. +N1730 G2 X22.921 Y-5.619 I-2.6 J0. +N1735 X16.327 Y-17.041 I-22.921 J5.619 +N1740 X15.828 Y-17.415 I-1.799 J1.877 +N1745 G1 X7.168 Y-22.415 +N1750 G2 X6.594 Y-22.66 I-1.3 J2.252 +N1755 X0. Y-23.6 I-6.594 J22.66 +N1760 X-0.377 Y-23.347 I0. J0.407 +N1765 G3 X-0.75 Y-23.088 I-0.386 J-0.158 +N1770 G2 X-6.455 Y-22.18 I0.75 J23.088 +N1775 X-6.918 Y-21.982 I0.587 J2.016 +N1780 G1 X-15.578 Y-16.982 +N1785 G2 X-15.981 Y-16.68 I1.05 J1.819 +N1790 X-22.436 Y-5.5 I15.981 J16.68 +N1795 X-22.496 Y-5. I2.04 J0.5 +N1800 G1 Y5. +N1805 G2 X-22.436 Y5.5 I2.1 J0. +N1810 X-15.981 Y16.68 I22.436 J-5.5 +N1815 X-15.578 Y16.982 I1.453 J-1.516 +N1820 G1 X-6.918 Y21.982 +N1825 G2 X-6.455 Y22.18 I1.05 J-1.819 +N1830 X6.455 I6.455 J-22.18 +N1835 X6.918 Y21.982 I-0.587 J-2.016 +N1840 G1 X15.578 Y16.982 +N1845 G2 X15.981 Y16.68 I-1.05 J-1.819 +N1850 X22.436 Y5.5 I-15.981 J-16.68 +N1855 X22.496 Y5. I-2.04 J-0.5 +N1860 G1 Y-5. +N1865 G2 X22.436 Y-5.5 I-2.1 J0. +N1870 X15.981 Y-16.68 I-22.436 J5.5 +N1875 X15.578 Y-16.982 I-1.453 J1.516 +N1880 G1 X6.918 Y-21.982 +N1885 G2 X6.455 Y-22.18 I-1.05 J1.819 +N1890 X-0.75 Y-23.088 I-6.455 J22.18 +N1895 X-1.119 Y-22.823 I0.013 J0.407 +N1900 G3 X-1.483 Y-22.551 I-0.392 J-0.146 +N1905 G2 X-6.315 Y-21.7 I1.483 J22.551 +N1910 X-6.668 Y-21.549 I0.447 J1.536 +N1915 G1 X-15.328 Y-16.549 +N1920 G2 X-15.635 Y-16.319 I0.8 J1.386 +N1925 X-21.95 Y-5.381 I15.635 J16.319 +N1930 X-21.996 Y-5. I1.554 J0.381 +N1935 G1 Y5. +N1940 G2 X-21.95 Y5.381 I1.6 J0. +N1945 X-15.635 Y16.319 I21.95 J-5.381 +N1950 X-15.328 Y16.549 I1.107 J-1.155 +N1955 G1 X-6.668 Y21.549 +N1960 G2 X-6.315 Y21.7 I0.8 J-1.386 +N1965 X6.315 I6.315 J-21.7 +N1970 X6.668 Y21.549 I-0.447 J-1.536 +N1975 G1 X15.328 Y16.549 +N1980 G2 X15.635 Y16.319 I-0.8 J-1.386 +N1985 X21.95 Y5.381 I-15.635 J-16.319 +N1990 X21.996 Y5. I-1.554 J-0.381 +N1995 G1 Y-5. +N2000 G2 X21.95 Y-5.381 I-1.6 J0. +N2005 X15.635 Y-16.319 I-21.95 J5.381 +N2010 X15.328 Y-16.549 I-1.107 J1.155 +N2015 G1 X6.668 Y-21.549 +N2020 G2 X6.315 Y-21.7 I-0.8 J1.386 +N2025 X-1.483 Y-22.551 I-6.315 J21.7 +N2030 G3 X-1.802 Y-22.831 I-0.02 J-0.299 +N2035 G1 X-1.821 Y-23.13 +N2040 X-1.824 Y-23.177 Z-3.896 +N2045 X-1.827 Y-23.223 Z-3.885 +N2050 X-1.83 Y-23.266 Z-3.867 +N2055 X-1.833 Y-23.306 Z-3.843 +N2060 X-1.835 Y-23.342 Z-3.812 +N2065 X-1.837 Y-23.372 Z-3.776 +N2070 X-1.839 Y-23.397 Z-3.736 +N2075 X-1.84 Y-23.415 Z-3.693 +N2080 X-1.841 Y-23.426 Z-3.647 +N2085 Y-23.43 Z-3.6 +N2090 G0 Z1. +(104_POCHES_EBAUCHE) +N2100 G0 X-0.18 Y-1.414 +N2105 G1 Z1. F1000. +N2110 Z0. +N2115 G3 X0.18 Y1.414 Z-0.156 I0.18 J1.414 F200. +N2120 X-0.18 Y-1.414 Z-0.313 I-0.18 J-1.414 +N2125 X0.18 Y1.414 Z-0.469 I0.18 J1.414 +N2130 X-0.18 Y-1.414 Z-0.625 I-0.18 J-1.414 +N2135 X0.18 Y1.414 Z-0.782 I0.18 J1.414 +N2140 X-0.18 Y-1.414 Z-0.938 I-0.18 J-1.414 +N2145 X0.18 Y1.414 Z-1.094 I0.18 J1.414 +N2150 X-0.18 Y-1.414 Z-1.251 I-0.18 J-1.414 +N2155 X0.18 Y1.414 Z-1.407 I0.18 J1.414 +N2160 X-0.18 Y-1.414 Z-1.563 I-0.18 J-1.414 +N2165 X0.18 Y1.414 Z-1.72 I0.18 J1.414 +N2170 X-0.18 Y-1.414 Z-1.876 I-0.18 J-1.414 +N2175 X0.18 Y1.414 Z-2.032 I0.18 J1.414 +N2180 X-0.18 Y-1.414 Z-2.189 I-0.18 J-1.414 +N2185 X0.18 Y1.414 Z-2.345 I0.18 J1.414 +N2190 X-0.217 Y-1.408 Z-2.5 I-0.18 J-1.414 +N2195 X0.44 Y-0.858 I0.087 J0.564 F1000. +N2200 X0.45 Y0. I-37.153 J0.858 +N2205 X-0.45 I-0.45 J0. +N2210 X0.45 I0.45 J0. +N2215 G2 X0.598 Y0.258 I0.3 J0. +N2220 G3 X0.647 Y0.551 I-0.098 J0.167 +N2225 X-0.647 Y-0.551 I-0.647 J-0.551 +N2230 X0.647 Y0.551 I0.647 J0.551 +N2235 G2 X0.595 Y0.866 I0.235 J0.201 +N2240 G3 X0.469 Y1.159 I-0.21 J0.083 +N2245 X-0.469 Y-1.159 I-0.469 J-1.159 +N2250 X0.469 Y1.159 I0.469 J1.159 +N2255 G2 X0.275 Y1.424 I0.118 J0.291 +N2260 G3 X0.035 Y1.65 I-0.245 J-0.02 +N2265 X-0.035 Y-1.65 I-0.035 J-1.65 +N2270 X0.035 Y1.65 I0.035 J1.65 +N2275 G2 X-0.245 Y1.834 I0.007 J0.316 +N2280 G3 X-0.55 Y1.975 I-0.235 J-0.108 +N2285 X0.55 Y-1.975 I0.55 J-1.975 +N2290 X-0.55 Y1.975 I-0.55 J1.975 +N2295 G2 X-0.875 Y2.073 I-0.085 J0.306 +N2300 G3 X-1.209 Y2.131 I-0.202 J-0.175 +N2305 X1.209 Y-2.131 I1.209 J-2.131 +N2310 X-1.209 Y2.131 I-1.209 J2.131 +N2315 G2 X-1.552 Y2.148 I-0.157 J0.277 +N2320 G3 X-1.894 Y2.13 I-0.159 J-0.224 +N2325 X1.894 Y-2.13 I1.894 J-2.13 +N2330 X-1.894 Y2.13 I-1.894 J2.13 +N2335 G2 X-2.235 Y2.076 I-0.212 J0.239 +N2340 G3 X-2.569 Y1.991 I-0.113 J-0.257 +N2345 X2.569 Y-1.991 I2.569 J-1.991 +N2350 X-2.569 Y1.991 I-2.569 J1.991 +N2355 G2 X-2.896 Y1.876 I-0.253 J0.196 +N2360 G3 X-3.212 Y1.734 I-0.066 J-0.277 +N2365 X3.212 Y-1.734 I3.212 J-1.734 +N2370 X-3.212 Y1.734 I-3.212 J1.734 +N2375 G2 X-3.517 Y1.566 I-0.282 J0.152 +N2380 G3 X-3.809 Y1.377 I-0.021 J-0.288 +N2385 X3.809 Y-1.377 I3.809 J-1.377 +N2390 X-3.809 Y1.377 I-3.809 J1.377 +N2395 G2 X-4.087 Y1.166 I-0.302 J0.109 +N2400 G3 X-4.35 Y0.936 I0.022 J-0.291 +N2405 X4.35 Y-0.936 I4.35 J-0.936 +N2410 X-4.35 Y0.936 I-4.35 J0.936 +N2415 G2 X-4.628 Y0.659 I-0.353 J0.076 +N2420 G3 X-4.887 Y0.363 I0.068 J-0.32 +N2425 X4.887 Y-0.363 I4.887 J-0.363 +N2430 X-4.887 Y0.363 I-4.887 J0.363 +N2435 X-4.736 Y0.155 I0.199 J-0.015 +N2440 G1 X0.653 Y-1.198 +N2445 G3 X0.817 Y-1.168 I0.049 J0.194 +N2450 X-0.817 Y1.168 Z-2.656 I-0.817 J1.168 F200. +N2455 X0.817 Y-1.168 Z-2.813 I0.817 J-1.168 +N2460 X-0.817 Y1.168 Z-2.969 I-0.817 J1.168 +N2465 X0.817 Y-1.168 Z-3.125 I0.817 J-1.168 +N2470 X-0.817 Y1.168 Z-3.282 I-0.817 J1.168 +N2475 X-0.217 Y-1.408 Z-3.4 I0.817 J-1.168 +N2480 X0.44 Y-0.858 I0.087 J0.564 F1000. +N2485 X0.45 Y0. I-37.153 J0.858 +N2490 X-0.45 I-0.45 J0. +N2495 X0.45 I0.45 J0. +N2500 G2 X0.598 Y0.258 I0.3 J0. +N2505 G3 X0.647 Y0.551 I-0.098 J0.167 +N2510 X-0.647 Y-0.551 I-0.647 J-0.551 +N2515 X0.647 Y0.551 I0.647 J0.551 +N2520 G2 X0.595 Y0.866 I0.235 J0.201 +N2525 G3 X0.469 Y1.159 I-0.21 J0.083 +N2530 X-0.469 Y-1.159 I-0.469 J-1.159 +N2535 X0.469 Y1.159 I0.469 J1.159 +N2540 G2 X0.275 Y1.424 I0.118 J0.291 +N2545 G3 X0.035 Y1.65 I-0.245 J-0.02 +N2550 X-0.035 Y-1.65 I-0.035 J-1.65 +N2555 X0.035 Y1.65 I0.035 J1.65 +N2560 G2 X-0.245 Y1.834 I0.007 J0.316 +N2565 G3 X-0.55 Y1.975 I-0.235 J-0.108 +N2570 X0.55 Y-1.975 I0.55 J-1.975 +N2575 X-0.55 Y1.975 I-0.55 J1.975 +N2580 G2 X-0.875 Y2.073 I-0.085 J0.306 +N2585 G3 X-1.209 Y2.131 I-0.202 J-0.175 +N2590 X1.209 Y-2.131 I1.209 J-2.131 +N2595 X-1.209 Y2.131 I-1.209 J2.131 +N2600 G2 X-1.552 Y2.148 I-0.157 J0.277 +N2605 G3 X-1.894 Y2.13 I-0.159 J-0.224 +N2610 X1.894 Y-2.13 I1.894 J-2.13 +N2615 X-1.894 Y2.13 I-1.894 J2.13 +N2620 G2 X-2.235 Y2.076 I-0.212 J0.239 +N2625 G3 X-2.569 Y1.991 I-0.113 J-0.257 +N2630 X2.569 Y-1.991 I2.569 J-1.991 +N2635 X-2.569 Y1.991 I-2.569 J1.991 +N2640 G2 X-2.896 Y1.876 I-0.253 J0.196 +N2645 G3 X-3.212 Y1.734 I-0.066 J-0.277 +N2650 X3.212 Y-1.734 I3.212 J-1.734 +N2655 X-3.212 Y1.734 I-3.212 J1.734 +N2660 G2 X-3.517 Y1.566 I-0.282 J0.152 +N2665 G3 X-3.809 Y1.377 I-0.021 J-0.288 +N2670 X3.809 Y-1.377 I3.809 J-1.377 +N2675 X-3.809 Y1.377 I-3.809 J1.377 +N2680 G2 X-4.087 Y1.166 I-0.302 J0.109 +N2685 G3 X-4.35 Y0.936 I0.022 J-0.291 +N2690 X4.35 Y-0.936 I4.35 J-0.936 +N2695 X-4.35 Y0.936 I-4.35 J0.936 +N2700 G2 X-4.628 Y0.659 I-0.353 J0.076 +N2705 G3 X-4.887 Y0.363 I0.068 J-0.32 +N2710 X4.887 Y-0.363 I4.887 J-0.363 +N2715 X-4.887 Y0.363 I-4.887 J0.363 +N2720 G0 Z1. +N2725 X-11.198 Y6.33 +N2730 G1 Z0. F1000. +N2735 G3 X-12.384 Y3.43 Z-0.11 I11.403 J-6.354 F200. +N2740 X-12.718 Y1.982 Z-0.162 I17.475 J-4.795 +N2745 X-12.885 Y0.506 Z-0.214 I10.011 J-1.881 +N2750 X-12.616 Y0.343 Z-0.227 I0.18 J-0.007 +N2755 G1 X-12.235 Y0.563 Z-0.242 +N2760 G3 X-12.078 Y0.816 Z-0.253 I-0.158 J0.273 +N2765 G2 X-6.745 Y10.052 Z-0.639 I12.04 J-0.794 +N2770 G3 X-6.605 Y10.314 Z-0.65 I-0.175 J0.262 +N2775 G1 Y10.754 Z-0.665 +N2780 G3 X-6.881 Y10.906 Z-0.678 I-0.18 J0. +N2785 X-10.331 Y7.683 Z-0.844 I6.748 J-10.683 +N2790 X-12.384 Y3.43 Z-1.01 I10.536 J-7.707 +N2795 X-12.718 Y1.982 Z-1.062 I17.475 J-4.795 +N2800 X-12.885 Y0.506 Z-1.114 I10.011 J-1.881 +N2805 X-12.616 Y0.343 Z-1.127 I0.18 J-0.007 +N2810 G1 X-12.235 Y0.563 Z-1.143 +N2815 G3 X-12.078 Y0.816 Z-1.153 I-0.158 J0.273 +N2820 G2 X-6.745 Y10.052 Z-1.539 I12.04 J-0.794 +N2825 G3 X-6.605 Y10.314 Z-1.55 I-0.175 J0.262 +N2830 G1 Y10.754 Z-1.565 +N2835 G3 X-6.881 Y10.906 Z-1.579 I-0.18 J0. +N2840 X-10.331 Y7.683 Z-1.745 I6.748 J-10.683 +N2845 X-12.384 Y3.43 Z-1.91 I10.536 J-7.707 +N2850 X-12.718 Y1.982 Z-1.962 I17.475 J-4.795 +N2855 X-12.885 Y0.506 Z-2.014 I10.011 J-1.881 +N2860 X-12.616 Y0.343 Z-2.028 I0.18 J-0.007 +N2865 G1 X-12.235 Y0.563 Z-2.043 +N2870 G3 X-12.078 Y0.816 Z-2.054 I-0.158 J0.273 +N2875 G2 X-6.745 Y10.052 Z-2.44 I12.04 J-0.794 +N2880 G3 X-6.605 Y10.314 Z-2.45 I-0.175 J0.262 +N2885 G1 Y10.754 Z-2.466 +N2890 G3 X-6.881 Y10.906 Z-2.479 I-0.18 J0. +N2895 X-7.376 Y10.576 Z-2.5 I6.748 J-10.683 +N2900 X-10.331 Y7.683 I7.244 J-10.354 F1000. +N2905 X-12.384 Y3.43 I10.536 J-7.707 +N2910 X-12.718 Y1.982 I17.475 J-4.795 +N2915 X-12.885 Y0.506 I10.011 J-1.881 +N2920 X-12.616 Y0.343 I0.18 J-0.007 +N2925 G1 X-12.235 Y0.563 +N2930 G3 X-12.078 Y0.816 I-0.158 J0.273 +N2935 G2 X-6.745 Y10.052 I12.04 J-0.794 +N2940 G3 X-6.605 Y10.314 I-0.175 J0.262 +N2945 G1 Y10.754 +N2950 G3 X-6.881 Y10.906 I-0.18 J0. +N2955 X-7.376 Y10.576 I6.748 J-10.683 +N2960 G2 X-7.734 Y10.567 I-0.186 J0.266 +N2965 G3 X-8.092 Y10.549 I-0.166 J-0.266 +N2970 X-10.44 Y8.204 I7.91 J-10.272 +N2975 X-12.77 Y3.536 I10.651 J-8.23 +N2980 X-13.164 Y1.693 I15.95 J-4.376 +N2985 X-13.294 Y-0.187 I10.992 J-1.704 +N2990 X-13.011 Y-0.347 I0.188 J0.003 +N2995 G1 X-12.066 Y0.199 +N3000 G3 X-11.676 Y0.821 I-0.392 J0.678 +N3005 G2 X-6.549 Y9.701 I11.706 J-0.838 +N3010 G3 X-6.205 Y10.35 I-0.439 J0.648 +N3015 G1 Y11.441 +N3020 G3 X-6.485 Y11.606 I-0.188 J0. +N3025 X-8.092 Y10.549 I6.304 J-11.329 +N3030 G2 X-8.441 Y10.523 I-0.194 J0.252 +N3035 G3 X-8.789 Y10.49 I-0.15 J-0.268 +N3040 X-13.155 Y3.642 I8.792 J-10.421 +N3045 X-13.597 Y1.412 I15.166 J-4.161 +N3050 X-13.668 Y-0.859 I12.31 J-1.524 +N3055 X-13.373 Y-1.018 I0.197 J0.012 +N3060 G1 X-11.666 Y-0.032 +N3065 G3 X-11.29 Y0.583 I-0.377 J0.653 +N3070 G2 X-6.15 Y9.486 I11.263 J-0.567 +N3075 G3 X-5.805 Y10.119 I-0.41 J0.633 +N3080 G1 Y12.09 +N3085 G3 X-6.09 Y12.266 I-0.197 J0. +N3090 X-8.789 Y10.49 I6.093 J-12.198 +N3095 G2 X-9.15 Y10.448 I-0.212 J0.252 +N3100 G3 X-9.509 Y10.397 I-0.143 J-0.285 +N3105 X-10.651 Y9.208 I9.353 J-10.129 +N3110 X-13.541 Y3.747 I10.829 J-9.225 +N3115 X-14.027 Y1.138 I15.293 J-4.196 +N3120 X-14.013 Y-1.517 I12.567 J-1.263 +N3125 X-13.706 Y-1.672 I0.204 J0.023 +N3130 G1 X-11.262 Y-0.261 +N3135 G3 X-10.9 Y0.343 I-0.363 J0.628 +N3140 G2 X-10.047 Y4.3 I11.373 J-0.381 +N3145 X-7.811 Y7.674 I9.698 J-3.998 +N3150 X-6.826 Y8.532 I6.175 J-6.101 +N3155 X-5.747 Y9.268 I9.325 J-12.504 +N3160 G3 X-5.405 Y9.884 I-0.384 J0.616 +N3165 G1 Y12.706 +N3170 G3 X-5.693 Y12.894 I-0.205 J0. +N3175 X-9.509 Y10.397 I5.536 J-12.626 +N3180 G2 X-9.859 Y10.34 I-0.218 J0.236 +N3185 G3 X-10.208 Y10.277 I-0.128 J-0.284 +N3190 X-13.927 Y3.853 I10.172 J-10.177 +N3195 X-14.445 Y0.868 I15.24 J-4.181 +N3200 X-14.333 Y-2.159 I13.449 J-1.021 +N3205 X-14.015 Y-2.312 I0.211 J0.032 +N3210 G1 X-10.853 Y-0.487 +N3215 G3 X-10.504 Y0.109 I-0.348 J0.604 +N3220 G2 X-5.347 Y9.043 I10.526 J-0.121 +N3225 G3 X-5.005 Y9.642 I-0.355 J0.6 +N3230 G1 Y13.293 +N3235 G3 X-5.297 Y13.492 I-0.214 J0. +N3240 X-10.208 Y10.277 I5.261 J-13.393 +N3245 G2 X-10.572 Y10.203 I-0.237 J0.237 +N3250 G3 X-10.934 Y10.122 I-0.123 J-0.302 +N3255 X-14.681 Y-2.543 I10.934 J-10.122 +N3260 X-14.087 Y-2.822 I0.394 J0.068 +N3265 G1 X-10.296 Y-0.633 +N3270 G3 X-10.096 Y-0.276 I-0.2 J0.346 +N3275 G2 X-4.81 Y8.881 I10.096 J0.276 +N3280 G3 X-4.6 Y9.233 I-0.19 J0.352 +N3285 G1 Y13.611 +N3290 G3 X-5.138 Y13.986 I-0.4 J0. +N3295 X-10.934 Y10.122 I5.138 J-13.986 +N3300 X-10.515 Y9.375 I0.33 J-0.306 +N3305 G1 X-8.801 Y9.72 +N3310 G3 X-8.708 Y9.749 I-0.089 J0.441 +N3315 G1 X-7.461 Y10.298 +N3320 X-7.292 Y10.456 +N3325 G3 X-7.386 Y10.57 I-0.051 J0.053 +N3330 X-10.331 Y7.683 Z-2.645 I7.253 J-10.347 F200. +N3335 X-12.384 Y3.43 Z-2.81 I10.536 J-7.707 +N3340 X-12.718 Y1.982 Z-2.862 I17.475 J-4.795 +N3345 X-12.885 Y0.506 Z-2.914 I10.011 J-1.881 +N3350 X-12.616 Y0.343 Z-2.928 I0.18 J-0.007 +N3355 G1 X-12.235 Y0.563 Z-2.943 +N3360 G3 X-12.078 Y0.816 Z-2.954 I-0.158 J0.273 +N3365 G2 X-6.745 Y10.052 Z-3.34 I12.04 J-0.794 +N3370 G3 X-6.605 Y10.314 Z-3.35 I-0.175 J0.262 +N3375 G1 Y10.754 Z-3.366 +N3380 G3 X-6.881 Y10.906 Z-3.379 I-0.18 J0. +N3385 X-7.376 Y10.576 Z-3.4 I6.748 J-10.683 +N3390 X-10.331 Y7.683 I7.244 J-10.354 F1000. +N3395 X-12.384 Y3.43 I10.536 J-7.707 +N3400 X-12.718 Y1.982 I17.475 J-4.795 +N3405 X-12.885 Y0.506 I10.011 J-1.881 +N3410 X-12.616 Y0.343 I0.18 J-0.007 +N3415 G1 X-12.235 Y0.563 +N3420 G3 X-12.078 Y0.816 I-0.158 J0.273 +N3425 G2 X-6.745 Y10.052 I12.04 J-0.794 +N3430 G3 X-6.605 Y10.314 I-0.175 J0.262 +N3435 G1 Y10.754 +N3440 G3 X-6.881 Y10.906 I-0.18 J0. +N3445 X-7.376 Y10.576 I6.748 J-10.683 +N3450 G2 X-7.734 Y10.567 I-0.186 J0.266 +N3455 G3 X-8.092 Y10.549 I-0.166 J-0.266 +N3460 X-10.44 Y8.204 I7.91 J-10.272 +N3465 X-12.77 Y3.536 I10.651 J-8.23 +N3470 X-13.164 Y1.693 I15.95 J-4.376 +N3475 X-13.294 Y-0.187 I10.992 J-1.704 +N3480 X-13.011 Y-0.347 I0.188 J0.003 +N3485 G1 X-12.066 Y0.199 +N3490 G3 X-11.676 Y0.821 I-0.392 J0.678 +N3495 G2 X-6.549 Y9.701 I11.706 J-0.838 +N3500 G3 X-6.205 Y10.35 I-0.439 J0.648 +N3505 G1 Y11.441 +N3510 G3 X-6.485 Y11.606 I-0.188 J0. +N3515 X-8.092 Y10.549 I6.304 J-11.329 +N3520 G2 X-8.441 Y10.523 I-0.194 J0.252 +N3525 G3 X-8.789 Y10.49 I-0.15 J-0.268 +N3530 X-13.155 Y3.642 I8.792 J-10.421 +N3535 X-13.597 Y1.412 I15.166 J-4.161 +N3540 X-13.668 Y-0.859 I12.31 J-1.524 +N3545 X-13.373 Y-1.018 I0.197 J0.012 +N3550 G1 X-11.666 Y-0.032 +N3555 G3 X-11.29 Y0.583 I-0.377 J0.653 +N3560 G2 X-6.15 Y9.486 I11.263 J-0.567 +N3565 G3 X-5.805 Y10.119 I-0.41 J0.633 +N3570 G1 Y12.09 +N3575 G3 X-6.09 Y12.266 I-0.197 J0. +N3580 X-8.789 Y10.49 I6.093 J-12.198 +N3585 G2 X-9.15 Y10.448 I-0.212 J0.252 +N3590 G3 X-9.509 Y10.397 I-0.143 J-0.285 +N3595 X-10.651 Y9.208 I9.353 J-10.129 +N3600 X-13.541 Y3.747 I10.829 J-9.225 +N3605 X-14.027 Y1.138 I15.293 J-4.196 +N3610 X-14.013 Y-1.517 I12.567 J-1.263 +N3615 X-13.706 Y-1.672 I0.204 J0.023 +N3620 G1 X-11.262 Y-0.261 +N3625 G3 X-10.9 Y0.343 I-0.363 J0.628 +N3630 G2 X-10.047 Y4.3 I11.373 J-0.381 +N3635 X-7.811 Y7.674 I9.698 J-3.998 +N3640 X-6.826 Y8.532 I6.175 J-6.101 +N3645 X-5.747 Y9.268 I9.325 J-12.504 +N3650 G3 X-5.405 Y9.884 I-0.384 J0.616 +N3655 G1 Y12.706 +N3660 G3 X-5.693 Y12.894 I-0.205 J0. +N3665 X-9.509 Y10.397 I5.536 J-12.626 +N3670 G2 X-9.859 Y10.34 I-0.218 J0.236 +N3675 G3 X-10.208 Y10.277 I-0.128 J-0.284 +N3680 X-13.927 Y3.853 I10.172 J-10.177 +N3685 X-14.445 Y0.868 I15.24 J-4.181 +N3690 X-14.333 Y-2.159 I13.449 J-1.021 +N3695 X-14.015 Y-2.312 I0.211 J0.032 +N3700 G1 X-10.853 Y-0.487 +N3705 G3 X-10.504 Y0.109 I-0.348 J0.604 +N3710 G2 X-5.347 Y9.043 I10.526 J-0.121 +N3715 G3 X-5.005 Y9.642 I-0.355 J0.6 +N3720 G1 Y13.293 +N3725 G3 X-5.297 Y13.492 I-0.214 J0. +N3730 X-10.208 Y10.277 I5.261 J-13.393 +N3735 G2 X-10.572 Y10.203 I-0.237 J0.237 +N3740 G3 X-10.934 Y10.122 I-0.123 J-0.302 +N3745 X-14.681 Y-2.543 I10.934 J-10.122 +N3750 X-14.087 Y-2.822 I0.394 J0.068 +N3755 G1 X-10.296 Y-0.633 +N3760 G3 X-10.096 Y-0.276 I-0.2 J0.346 +N3765 G2 X-4.81 Y8.881 I10.096 J0.276 +N3770 G3 X-4.6 Y9.233 I-0.19 J0.352 +N3775 G1 Y13.611 +N3780 G3 X-5.138 Y13.986 I-0.4 J0. +N3785 X-10.934 Y10.122 I5.138 J-13.986 +N3790 G0 Z1. +N3795 X9.812 Y7.135 +N3800 G1 Z0. F1000. +N3805 G2 X9.841 Y7.096 Z-0.002 I-9.981 J-7.423 F200. +N3810 X11.709 Y3.245 Z-0.152 I-9.419 J-6.948 +N3815 X11.955 Y2.039 Z-0.195 I-8.906 J-2.444 +N3820 X12.078 Y0.816 Z-0.238 I-17.756 J-2.402 +N3825 G3 X12.235 Y0.563 Z-0.249 I0.315 J0.021 +N3830 G1 X12.616 Y0.343 Z-0.264 +N3835 G3 X12.885 Y0.506 Z-0.278 I0.09 J0.156 +N3840 X6.881 Y10.906 Z-0.714 I-12.898 J-0.513 +N3845 X6.605 Y10.754 Z-0.727 I-0.096 J-0.152 +N3850 G1 Y10.314 Z-0.742 +N3855 G3 X6.745 Y10.052 Z-0.753 I0.315 J0. +N3860 G2 X9.841 Y7.096 Z-0.903 I-6.915 J-10.34 +N3865 X11.709 Y3.245 Z-1.054 I-9.419 J-6.948 +N3870 X11.955 Y2.039 Z-1.097 I-8.906 J-2.444 +N3875 X12.078 Y0.816 Z-1.14 I-17.756 J-2.402 +N3880 G3 X12.235 Y0.563 Z-1.151 I0.315 J0.021 +N3885 G1 X12.616 Y0.343 Z-1.166 +N3890 G3 X12.885 Y0.506 Z-1.179 I0.09 J0.156 +N3895 X6.881 Y10.906 Z-1.615 I-12.898 J-0.513 +N3900 X6.605 Y10.754 Z-1.629 I-0.096 J-0.152 +N3905 G1 Y10.314 Z-1.644 +N3910 G3 X6.745 Y10.052 Z-1.655 I0.315 J0. +N3915 G2 X9.841 Y7.096 Z-1.805 I-6.915 J-10.34 +N3920 X11.709 Y3.245 Z-1.956 I-9.419 J-6.948 +N3925 X11.955 Y2.039 Z-1.999 I-8.906 J-2.444 +N3930 X12.078 Y0.816 Z-2.042 I-17.756 J-2.402 +N3935 G3 X12.235 Y0.563 Z-2.052 I0.315 J0.021 +N3940 G1 X12.616 Y0.343 Z-2.068 +N3945 G3 X12.885 Y0.506 Z-2.081 I0.09 J0.156 +N3950 X7.294 Y10.634 Z-2.5 I-12.898 J-0.513 +N3955 X6.881 Y10.906 I-7.307 J-10.641 F1000. +N3960 X6.605 Y10.754 I-0.096 J-0.152 +N3965 G1 Y10.314 +N3970 G3 X6.745 Y10.052 I0.315 J0. +N3975 G2 X9.841 Y7.096 I-6.915 J-10.34 +N3980 X11.709 Y3.245 I-9.419 J-6.948 +N3985 X11.955 Y2.039 I-8.906 J-2.444 +N3990 X12.078 Y0.816 I-17.756 J-2.402 +N3995 G3 X12.235 Y0.563 I0.315 J0.021 +N4000 G1 X12.616 Y0.343 +N4005 G3 X12.885 Y0.506 I0.09 J0.156 +N4010 X7.294 Y10.634 I-12.898 J-0.513 +N4015 G2 X7.164 Y10.96 I0.179 J0.26 +N4020 G3 X7.028 Y11.284 I-0.3 J0.064 +N4025 X6.485 Y11.606 I-5.951 J-9.397 +N4030 X6.205 Y11.441 I-0.092 J-0.165 +N4035 G1 Y10.35 +N4040 G3 X6.549 Y9.701 I0.783 J0. +N4045 G2 X9.523 Y6.847 I-6.837 J-10.099 +N4050 X11.323 Y3.139 I-9.054 J-6.686 +N4055 X11.557 Y1.989 I-8.392 J-2.302 +N4060 X11.676 Y0.821 I-18.983 J-2.536 +N4065 G3 X12.066 Y0.199 I0.781 J0.056 +N4070 G1 X13.011 Y-0.347 +N4075 G3 X13.294 Y-0.187 I0.094 J0.163 +N4080 X12.325 Y4.94 I-12.963 J0.205 +N4085 X9.447 Y9.291 I-12.453 J-5.109 +N4090 X8.048 Y10.554 I-11.765 J-11.625 +N4095 X7.028 Y11.284 I-6.972 J-8.667 +N4100 G2 X6.882 Y11.607 I0.173 J0.273 +N4105 G3 X6.728 Y11.927 I-0.308 J0.049 +N4110 X6.09 Y12.266 I-6.78 J-11.957 +N4115 X5.805 Y12.09 I-0.088 J-0.176 +N4120 G1 Y10.119 +N4125 G3 X6.15 Y9.486 I0.754 J0. +N4130 G2 X9.138 Y6.701 I-6.323 J-9.78 +N4135 X10.937 Y3.033 I-8.727 J-6.556 +N4140 X11.18 Y1.818 I-8.491 J-2.33 +N4145 X11.29 Y0.583 I-16.061 J-2.049 +N4150 G3 X11.666 Y-0.032 I0.753 J0.038 +N4155 G1 X13.373 Y-1.018 +N4160 G3 X13.668 Y-0.859 I0.098 J0.171 +N4165 X6.728 Y11.927 I-13.721 J0.829 +N4170 G2 X6.567 Y12.244 I0.158 J0.279 +N4175 G3 X6.4 Y12.558 I-0.309 J0.037 +N4180 X5.693 Y12.894 I-5.779 J-11.231 +N4185 X5.405 Y12.706 I-0.083 J-0.188 +N4190 G1 Y9.884 +N4195 G3 X5.747 Y9.268 I0.726 J0. +N4200 G2 X8.747 Y6.551 I-6.016 J-9.659 +N4205 X10.552 Y2.927 I-8.311 J-6.399 +N4210 X10.801 Y1.645 I-8.372 J-2.297 +N4215 X10.9 Y0.343 I-15.491 J-1.824 +N4220 G3 X11.262 Y-0.261 I0.725 J0.024 +N4225 G1 X13.706 Y-1.672 +N4230 G3 X14.013 Y-1.517 I0.103 J0.178 +N4235 X13.3 Y4.62 I-13.702 J1.519 +N4240 X10.016 Y9.853 I-13.403 J-4.766 +N4245 X7.999 Y11.579 I-11.28 J-11.146 +N4250 X6.4 Y12.558 I-7.378 J-10.252 +N4255 G2 X6.225 Y12.868 I0.148 J0.288 +N4260 G3 X6.043 Y13.175 I-0.313 J0.022 +N4265 X5.297 Y13.492 I-6.047 J-13.177 +N4270 X5.005 Y13.293 I-0.078 J-0.199 +N4275 G1 Y9.642 +N4280 G3 X5.347 Y9.043 I0.697 J0. +N4285 G2 X8.361 Y6.4 I-5.567 J-9.391 +N4290 X10.166 Y2.821 I-7.956 J-6.257 +N4295 X10.422 Y1.476 I-8.314 J-2.281 +N4300 X10.504 Y0.109 I-14.005 J-1.529 +N4305 G3 X10.853 Y-0.487 I0.697 J0.008 +N4310 G1 X14.015 Y-2.312 +N4315 G3 X14.333 Y-2.159 I0.107 J0.185 +N4320 X6.043 Y13.175 I-14.337 J2.157 +N4325 G2 X5.852 Y13.482 I0.137 J0.298 +N4330 G3 X5.655 Y13.785 I-0.318 J0.009 +N4335 X5.138 Y13.986 I-5.655 J-13.785 +N4340 X4.6 Y13.611 I-0.138 J-0.375 +N4345 G1 Y9.233 +N4350 G3 X4.81 Y8.881 I0.4 J0. +N4355 G2 X10.096 Y-0.276 I-4.81 J-8.881 +N4360 G3 X10.296 Y-0.633 I0.4 J-0.011 +N4365 G1 X14.087 Y-2.822 +N4370 G3 X14.681 Y-2.543 I0.2 J0.346 +N4375 X5.655 Y13.785 I-14.681 J2.544 +N4380 X5.467 Y13.6 I-0.054 J-0.133 +N4385 G1 X5.702 Y13.013 +N4390 X7.018 Y10.673 +N4395 X7.162 Y10.545 +N4400 G3 X7.269 Y10.557 I0.048 J0.057 +N4405 X7.252 Y10.663 I-0.059 J0.045 +N4410 X6.881 Y10.906 Z-2.515 I-7.264 J-10.67 F200. +N4415 X6.605 Y10.754 Z-2.529 I-0.096 J-0.152 +N4420 G1 Y10.314 Z-2.544 +N4425 G3 X6.745 Y10.052 Z-2.555 I0.315 J0. +N4430 G2 X9.841 Y7.096 Z-2.705 I-6.915 J-10.34 +N4435 X11.709 Y3.245 Z-2.856 I-9.419 J-6.948 +N4440 X11.955 Y2.039 Z-2.899 I-8.906 J-2.444 +N4445 X12.078 Y0.816 Z-2.942 I-17.756 J-2.402 +N4450 G3 X12.235 Y0.563 Z-2.952 I0.315 J0.021 +N4455 G1 X12.616 Y0.343 Z-2.968 +N4460 G3 X12.885 Y0.506 Z-2.981 I0.09 J0.156 +N4465 X7.294 Y10.634 Z-3.4 I-12.898 J-0.513 +N4470 X6.881 Y10.906 I-7.307 J-10.641 F1000. +N4475 X6.605 Y10.754 I-0.096 J-0.152 +N4480 G1 Y10.314 +N4485 G3 X6.745 Y10.052 I0.315 J0. +N4490 G2 X9.841 Y7.096 I-6.915 J-10.34 +N4495 X11.709 Y3.245 I-9.419 J-6.948 +N4500 X11.955 Y2.039 I-8.906 J-2.444 +N4505 X12.078 Y0.816 I-17.756 J-2.402 +N4510 G3 X12.235 Y0.563 I0.315 J0.021 +N4515 G1 X12.616 Y0.343 +N4520 G3 X12.885 Y0.506 I0.09 J0.156 +N4525 X7.294 Y10.634 I-12.898 J-0.513 +N4530 G2 X7.164 Y10.96 I0.179 J0.26 +N4535 G3 X7.028 Y11.284 I-0.3 J0.064 +N4540 X6.485 Y11.606 I-5.951 J-9.397 +N4545 X6.205 Y11.441 I-0.092 J-0.165 +N4550 G1 Y10.35 +N4555 G3 X6.549 Y9.701 I0.783 J0. +N4560 G2 X9.523 Y6.847 I-6.837 J-10.099 +N4565 X11.323 Y3.139 I-9.054 J-6.686 +N4570 X11.557 Y1.989 I-8.392 J-2.302 +N4575 X11.676 Y0.821 I-18.983 J-2.536 +N4580 G3 X12.066 Y0.199 I0.781 J0.056 +N4585 G1 X13.011 Y-0.347 +N4590 G3 X13.294 Y-0.187 I0.094 J0.163 +N4595 X12.325 Y4.94 I-12.963 J0.205 +N4600 X9.447 Y9.291 I-12.453 J-5.109 +N4605 X8.048 Y10.554 I-11.765 J-11.625 +N4610 X7.028 Y11.284 I-6.972 J-8.667 +N4615 G2 X6.882 Y11.607 I0.173 J0.273 +N4620 G3 X6.728 Y11.927 I-0.308 J0.049 +N4625 X6.09 Y12.266 I-6.78 J-11.957 +N4630 X5.805 Y12.09 I-0.088 J-0.176 +N4635 G1 Y10.119 +N4640 G3 X6.15 Y9.486 I0.754 J0. +N4645 G2 X9.138 Y6.701 I-6.323 J-9.78 +N4650 X10.937 Y3.033 I-8.727 J-6.556 +N4655 X11.18 Y1.818 I-8.491 J-2.33 +N4660 X11.29 Y0.583 I-16.061 J-2.049 +N4665 G3 X11.666 Y-0.032 I0.753 J0.038 +N4670 G1 X13.373 Y-1.018 +N4675 G3 X13.668 Y-0.859 I0.098 J0.171 +N4680 X6.728 Y11.927 I-13.721 J0.829 +N4685 G2 X6.567 Y12.244 I0.158 J0.279 +N4690 G3 X6.4 Y12.558 I-0.309 J0.037 +N4695 X5.693 Y12.894 I-5.779 J-11.231 +N4700 X5.405 Y12.706 I-0.083 J-0.188 +N4705 G1 Y9.884 +N4710 G3 X5.747 Y9.268 I0.726 J0. +N4715 G2 X8.747 Y6.551 I-6.016 J-9.659 +N4720 X10.552 Y2.927 I-8.311 J-6.399 +N4725 X10.801 Y1.645 I-8.372 J-2.297 +N4730 X10.9 Y0.343 I-15.491 J-1.824 +N4735 G3 X11.262 Y-0.261 I0.725 J0.024 +N4740 G1 X13.706 Y-1.672 +N4745 G3 X14.013 Y-1.517 I0.103 J0.178 +N4750 X13.3 Y4.62 I-13.702 J1.519 +N4755 X10.016 Y9.853 I-13.403 J-4.766 +N4760 X7.999 Y11.579 I-11.28 J-11.146 +N4765 X6.4 Y12.558 I-7.378 J-10.252 +N4770 G2 X6.225 Y12.868 I0.148 J0.288 +N4775 G3 X6.043 Y13.175 I-0.313 J0.022 +N4780 X5.297 Y13.492 I-6.047 J-13.177 +N4785 X5.005 Y13.293 I-0.078 J-0.199 +N4790 G1 Y9.642 +N4795 G3 X5.347 Y9.043 I0.697 J0. +N4800 G2 X8.361 Y6.4 I-5.567 J-9.391 +N4805 X10.166 Y2.821 I-7.956 J-6.257 +N4810 X10.422 Y1.476 I-8.314 J-2.281 +N4815 X10.504 Y0.109 I-14.005 J-1.529 +N4820 G3 X10.853 Y-0.487 I0.697 J0.008 +N4825 G1 X14.015 Y-2.312 +N4830 G3 X14.333 Y-2.159 I0.107 J0.185 +N4835 X6.043 Y13.175 I-14.337 J2.157 +N4840 G2 X5.852 Y13.482 I0.137 J0.298 +N4845 G3 X5.655 Y13.785 I-0.318 J0.009 +N4850 X5.138 Y13.986 I-5.655 J-13.785 +N4855 X4.6 Y13.611 I-0.138 J-0.375 +N4860 G1 Y9.233 +N4865 G3 X4.81 Y8.881 I0.4 J0. +N4870 G2 X10.096 Y-0.276 I-4.81 J-8.881 +N4875 G3 X10.296 Y-0.633 I0.4 J-0.011 +N4880 G1 X14.087 Y-2.822 +N4885 G3 X14.681 Y-2.543 I0.2 J0.346 +N4890 X5.655 Y13.785 I-14.681 J2.544 +N4895 G0 Z1. +N4900 X-3.853 Y-11.085 +N4905 G1 Z0. F1000. +N4910 G2 X-4.048 Y-11.007 Z-0.007 I2.999 J7.81 F200. +N4915 X-5.127 Y-10.522 Z-0.049 I7.486 J18.12 +N4920 G3 X-5.861 Y-10.549 Z-0.075 I-0.342 J-0.704 +N4925 G1 X-6.806 Y-11.094 Z-0.113 +N4930 G3 X-6.809 Y-11.419 Z-0.127 I0.094 J-0.163 +N4935 X-1.897 Y-13.137 Z-0.31 I6.628 J11.072 +N4940 X3.297 Y-12.833 Z-0.493 I1.815 J13.523 +N4945 X5.104 Y-12.253 Z-0.559 I-3.903 J15.267 +N4950 X6.809 Y-11.419 Z-0.626 I-4.081 J10.499 +N4955 X6.806 Y-11.094 Z-0.639 I-0.097 J0.162 +N4960 G1 X5.861 Y-10.549 Z-0.677 +N4965 G3 X5.127 Y-10.522 Z-0.704 I-0.392 J-0.678 +N4970 G2 X1.177 Y-11.666 Z-0.848 I-5.297 J10.906 +N4975 X-2.926 Y-11.38 Z-0.993 I-1.27 J11.367 +N4980 X-4.048 Y-11.007 Z-1.034 I2.072 J8.105 +N4985 X-5.127 Y-10.522 Z-1.075 I7.486 J18.12 +N4990 G3 X-5.861 Y-10.549 Z-1.102 I-0.342 J-0.704 +N4995 G1 X-6.806 Y-11.094 Z-1.14 +N5000 G3 X-6.809 Y-11.419 Z-1.154 I0.094 J-0.163 +N5005 X-1.897 Y-13.137 Z-1.337 I6.628 J11.072 +N5010 X3.297 Y-12.833 Z-1.52 I1.815 J13.523 +N5015 X5.104 Y-12.253 Z-1.586 I-3.903 J15.267 +N5020 X6.809 Y-11.419 Z-1.652 I-4.081 J10.499 +N5025 X6.806 Y-11.094 Z-1.666 I-0.097 J0.162 +N5030 G1 X5.861 Y-10.549 Z-1.704 +N5035 G3 X5.127 Y-10.522 Z-1.731 I-0.392 J-0.678 +N5040 G2 X1.177 Y-11.666 Z-1.875 I-5.297 J10.906 +N5045 X-2.926 Y-11.38 Z-2.019 I-1.27 J11.367 +N5050 X-4.048 Y-11.007 Z-2.061 I2.072 J8.105 +N5055 X-5.127 Y-10.522 Z-2.102 I7.486 J18.12 +N5060 G3 X-5.861 Y-10.549 Z-2.129 I-0.342 J-0.704 +N5065 G1 X-6.806 Y-11.094 Z-2.167 +N5070 G3 X-6.809 Y-11.419 Z-2.181 I0.094 J-0.163 +N5075 X-1.897 Y-13.137 Z-2.364 I6.628 J11.072 +N5080 X1.996 Y-13.099 Z-2.5 I1.815 J13.523 +N5085 X3.297 Y-12.833 I-2.078 J13.485 F1000. +N5090 X5.104 Y-12.253 I-3.903 J15.267 +N5095 X6.809 Y-11.419 I-4.081 J10.499 +N5100 X6.806 Y-11.094 I-0.097 J0.162 +N5105 G1 X5.861 Y-10.549 +N5110 G3 X5.127 Y-10.522 I-0.392 J-0.678 +N5115 G2 X1.177 Y-11.666 I-5.297 J10.906 +N5120 X-2.926 Y-11.38 I-1.27 J11.367 +N5125 X-4.048 Y-11.007 I2.072 J8.105 +N5130 X-5.127 Y-10.522 I7.486 J18.12 +N5135 G3 X-5.861 Y-10.549 I-0.342 J-0.704 +N5140 G1 X-6.806 Y-11.094 +N5145 G3 X-6.809 Y-11.419 I0.094 J-0.163 +N5150 X-1.897 Y-13.137 I6.628 J11.072 +N5155 X1.996 Y-13.099 I1.815 J13.523 +N5160 G2 X2.349 Y-13.262 I0.054 J-0.348 +N5165 G3 X2.706 Y-13.416 I0.289 J0.179 +N5170 X7.578 Y-11.407 I-2.706 J13.477 +N5175 X7.568 Y-11.072 I-0.109 J0.164 +N5180 G1 X5.861 Y-10.087 +N5185 G3 X5.14 Y-10.069 I-0.377 J-0.653 +N5190 G2 X1.241 Y-11.259 I-5.277 J10.304 +N5195 X-2.827 Y-10.992 I-1.321 J11.015 +N5200 X-4.009 Y-10.595 I2.095 J8.195 +N5205 X-5.14 Y-10.069 I6.411 J15.254 +N5210 G3 X-5.861 Y-10.087 I-0.344 J-0.671 +N5215 G1 X-7.568 Y-11.072 +N5220 G3 X-7.578 Y-11.407 I0.098 J-0.171 +N5225 X2.706 Y-13.416 I7.578 J11.468 +N5230 G2 X3.007 Y-13.538 I0.058 J-0.289 +N5235 G3 X3.31 Y-13.654 I0.236 J0.162 +N5240 X3.495 Y-13.608 I-3.377 J13.986 +N5245 X6.015 Y-12.725 I-3.809 J14.901 +N5250 X8.32 Y-11.377 I-5.244 J11.616 +N5255 X8.301 Y-11.034 I-0.122 J0.166 +N5260 G1 X5.857 Y-9.623 +N5265 G3 X5.153 Y-9.611 I-0.363 J-0.628 +N5270 G2 X1.306 Y-10.846 I-5.325 J9.979 +N5275 X-2.728 Y-10.605 I-1.393 J10.571 +N5280 X-3.97 Y-10.181 I2.066 J8.084 +N5285 X-5.153 Y-9.611 I6.321 J14.633 +N5290 G3 X-5.857 Y-9.623 I-0.342 J-0.64 +N5295 G1 X-8.301 Y-11.034 +N5300 G3 X-8.32 Y-11.377 I0.103 J-0.178 +N5305 X-2.663 Y-13.821 I8.134 J11.064 +N5310 X3.31 Y-13.654 I2.595 J14.152 +N5315 G2 X3.682 Y-13.789 I0.084 J-0.35 +N5320 G3 X4.058 Y-13.915 I0.278 J0.208 +N5325 X9.036 Y-11.334 I-4.058 J13.919 +N5330 X9.01 Y-10.981 I-0.133 J0.167 +N5335 G1 X5.848 Y-9.156 +N5340 G3 X5.158 Y-9.152 I-0.348 J-0.604 +N5345 G2 X1.368 Y-10.436 I-5.317 J9.459 +N5350 X-2.628 Y-10.217 I-1.448 J10.188 +N5355 X-3.928 Y-9.767 I2.052 J8.029 +N5360 X-5.158 Y-9.152 I5.816 J13.151 +N5365 G3 X-5.848 Y-9.156 I-0.341 J-0.608 +N5370 G1 X-9.01 Y-10.981 +N5375 G3 X-9.036 Y-11.334 I0.107 J-0.185 +N5380 X4.058 Y-13.915 I9.036 J11.338 +N5385 G2 X4.404 Y-14.022 I0.092 J-0.315 +N5390 G3 X4.752 Y-14.122 I0.247 J0.202 +N5395 X9.543 Y-11.443 I-4.752 J14.122 +N5400 X9.487 Y-10.789 I-0.256 J0.307 +N5405 G1 X5.696 Y-8.6 +N5410 G3 X5.287 Y-8.606 I-0.2 J-0.346 +N5415 G2 X-5.287 I-5.287 J8.606 +N5420 G3 X-5.696 Y-8.6 I-0.209 J-0.341 +N5425 G1 X-9.487 Y-10.789 +N5430 G3 X-9.543 Y-11.443 I0.2 J-0.346 +N5435 X4.752 Y-14.122 I9.543 J11.443 +N5440 X4.857 Y-13.825 I-0.064 J0.19 +N5445 G1 X4.005 Y-12.482 +N5450 G2 X4.113 Y-12.184 I0.169 J0.107 +N5455 G3 X4.631 Y-12.011 I-5.099 J16.105 +N5460 X6.004 Y-11.412 I-3.441 J9.761 +N5465 X6.011 Y-11.097 I-0.084 J0.159 +N5470 G1 X5.63 Y-10.877 +N5475 G3 X5.332 Y-10.867 I-0.158 J-0.273 +N5480 G2 X-5.332 I-5.332 J10.823 +N5485 G3 X-5.63 Y-10.877 I-0.139 J-0.283 +N5490 G1 X-6.011 Y-11.097 +N5495 G3 X-6.004 Y-11.412 I0.09 J-0.156 +N5500 X-1.499 Y-12.783 I5.848 J11.129 +N5505 X3.198 Y-12.446 I1.415 J13.177 +N5510 X4.113 Y-12.184 I-4.183 J16.367 +N5515 X4.631 Y-12.011 Z-2.519 I-5.099 J16.105 F200. +N5520 X6.004 Y-11.412 Z-2.571 I-3.441 J9.761 +N5525 X6.011 Y-11.097 Z-2.585 I-0.084 J0.159 +N5530 G1 X5.63 Y-10.877 Z-2.6 +N5535 G3 X5.332 Y-10.867 Z-2.611 I-0.158 J-0.273 +N5540 G2 X-5.332 Z-2.997 I-5.332 J10.823 +N5545 G3 X-5.63 Y-10.877 Z-3.008 I-0.139 J-0.283 +N5550 G1 X-6.011 Y-11.097 Z-3.023 +N5555 G3 X-6.004 Y-11.412 Z-3.036 I0.09 J-0.156 +N5560 X-1.499 Y-12.783 Z-3.202 I5.848 J11.129 +N5565 X3.198 Y-12.446 Z-3.367 I1.415 J13.177 +N5570 X4.104 Y-12.187 Z-3.4 I-4.183 J16.367 +N5575 G1 X4.113 Y-12.184 F1000. +N5580 G3 X4.631 Y-12.011 I-5.099 J16.105 +N5585 X6.004 Y-11.412 I-3.441 J9.761 +N5590 X6.011 Y-11.097 I-0.084 J0.159 +N5595 G1 X5.63 Y-10.877 +N5600 G3 X5.332 Y-10.867 I-0.158 J-0.273 +N5605 G2 X-5.332 I-5.332 J10.823 +N5610 G3 X-5.63 Y-10.877 I-0.139 J-0.283 +N5615 G1 X-6.011 Y-11.097 +N5620 G3 X-6.004 Y-11.412 I0.09 J-0.156 +N5625 X-1.499 Y-12.783 I5.848 J11.129 +N5630 X3.198 Y-12.446 I1.415 J13.177 +N5635 X4.104 Y-12.187 I-4.183 J16.367 +N5640 G2 X4.175 Y-12.372 I0.03 J-0.095 +N5645 G1 X4.166 Y-12.376 +N5650 G3 X4.237 Y-12.562 I0.041 J-0.091 +N5655 X5.104 Y-12.253 I-4.843 J14.996 +N5660 X6.809 Y-11.419 I-4.081 J10.499 +N5665 X6.806 Y-11.094 I-0.097 J0.162 +N5670 G1 X5.861 Y-10.549 +N5675 G3 X5.127 Y-10.522 I-0.392 J-0.678 +N5680 G2 X1.177 Y-11.666 I-5.297 J10.906 +N5685 X-2.926 Y-11.38 I-1.27 J11.367 +N5690 X-4.048 Y-11.007 I2.072 J8.105 +N5695 X-5.127 Y-10.522 I7.486 J18.12 +N5700 G3 X-5.861 Y-10.549 I-0.342 J-0.704 +N5705 G1 X-6.806 Y-11.094 +N5710 G3 X-6.809 Y-11.419 I0.094 J-0.163 +N5715 X-1.897 Y-13.137 I6.628 J11.072 +N5720 X3.297 Y-12.833 I1.815 J13.523 +N5725 X4.237 Y-12.562 I-3.903 J15.267 +N5730 G2 X4.606 Y-12.662 I0.107 J-0.333 +N5735 G3 X4.978 Y-12.752 I0.25 J0.222 +N5740 X7.578 Y-11.407 I-4.978 J12.813 +N5745 X7.568 Y-11.072 I-0.109 J0.164 +N5750 G1 X5.861 Y-10.087 +N5755 G3 X5.14 Y-10.069 I-0.377 J-0.653 +N5760 G2 X1.241 Y-11.259 I-5.277 J10.304 +N5765 X-2.827 Y-10.992 I-1.321 J11.015 +N5770 X-4.009 Y-10.595 I2.095 J8.195 +N5775 X-5.14 Y-10.069 I6.411 J15.254 +N5780 G3 X-5.861 Y-10.087 I-0.344 J-0.671 +N5785 G1 X-7.568 Y-11.072 +N5790 G3 X-7.578 Y-11.407 I0.098 J-0.171 +N5795 X4.978 Y-12.752 I7.578 J11.468 +N5800 G2 X5.304 Y-12.824 I0.109 J-0.28 +N5805 G3 X5.631 Y-12.892 I0.213 J0.204 +N5810 X6.015 Y-12.725 I-5.944 J14.185 +N5815 X8.32 Y-11.377 I-5.244 J11.616 +N5820 X8.301 Y-11.034 I-0.122 J0.166 +N5825 G1 X5.857 Y-9.623 +N5830 G3 X5.153 Y-9.611 I-0.363 J-0.628 +N5835 G2 X1.306 Y-10.846 I-5.325 J9.979 +N5840 X-2.728 Y-10.605 I-1.393 J10.571 +N5845 X-3.97 Y-10.181 I2.066 J8.084 +N5850 X-5.153 Y-9.611 I6.321 J14.633 +N5855 G3 X-5.857 Y-9.623 I-0.342 J-0.64 +N5860 G1 X-8.301 Y-11.034 +N5865 G3 X-8.32 Y-11.377 I0.103 J-0.178 +N5870 X-2.663 Y-13.821 I8.134 J11.064 +N5875 X3.495 Y-13.608 I2.595 J14.152 +N5880 X5.631 Y-12.892 I-3.809 J14.901 +N5885 G2 X6.002 Y-12.96 I0.134 J-0.319 +N5890 G3 X6.376 Y-13.017 I0.228 J0.241 +N5895 X9.036 Y-11.334 I-6.376 J13.022 +N5900 X9.01 Y-10.981 I-0.133 J0.167 +N5905 G1 X5.848 Y-9.156 +N5910 G3 X5.158 Y-9.152 I-0.348 J-0.604 +N5915 G2 X1.368 Y-10.436 I-5.317 J9.459 +N5920 X-2.628 Y-10.217 I-1.448 J10.188 +N5925 X-3.928 Y-9.767 I2.052 J8.029 +N5930 X-5.158 Y-9.152 I5.816 J13.151 +N5935 G3 X-5.848 Y-9.156 I-0.341 J-0.608 +N5940 G1 X-9.01 Y-10.981 +N5945 G3 X-9.036 Y-11.334 I0.107 J-0.185 +N5950 X6.376 Y-13.017 I9.036 J11.338 +N5955 G2 X6.735 Y-13.063 I0.144 J-0.295 +N5960 G3 X7.095 Y-13.103 I0.208 J0.241 +N5965 X9.543 Y-11.443 I-7.095 J13.103 +N5970 X9.487 Y-10.789 I-0.256 J0.307 +N5975 G1 X5.696 Y-8.6 +N5980 G3 X5.287 Y-8.606 I-0.2 J-0.346 +N5985 G2 X-5.287 I-5.287 J8.606 +N5990 G3 X-5.696 Y-8.6 I-0.209 J-0.341 +N5995 G1 X-9.487 Y-10.789 +N6000 G3 X-9.543 Y-11.443 I0.2 J-0.346 +N6005 X7.095 Y-13.103 I9.543 J11.443 +N6010 G0 Z1. +N6020 M5 +(105_CONTOURNAGE_FINITION) +N6025 M1 +(N6030 M61 Q3) +(N6035 T2) +N6040 S60000 M3 +N6045 G54 +N6055 G0 X-0.3 Y24.5 +N6060 G1 Z1. F200. +N6065 Z-3.7 +N6070 G19 G2 Y24.2 Z-4. J-0.3 K0. +N6075 G1 Y23.9 F400. +N6080 G17 G3 X0. Y23.6 I0.3 J0. +N6085 G2 X6.594 Y22.66 I0. J-23.6 +N6090 X7.168 Y22.415 I-0.727 J-2.496 +N6095 G1 X15.828 Y17.415 +N6100 G2 X16.327 Y17.041 I-1.3 J-2.252 +N6105 X22.921 Y5.619 I-16.327 J-17.041 +N6110 X22.996 Y5. I-2.525 J-0.619 +N6115 G1 Y-5. +N6120 G2 X22.921 Y-5.619 I-2.6 J0. +N6125 X16.327 Y-17.041 I-22.921 J5.619 +N6130 X15.828 Y-17.415 I-1.799 J1.877 +N6135 G1 X7.168 Y-22.415 +N6140 G2 X6.594 Y-22.66 I-1.3 J2.252 +N6145 X-6.594 I-6.594 J22.66 +N6150 X-7.168 Y-22.415 I0.727 J2.496 +N6155 G1 X-15.828 Y-17.415 +N6160 G2 X-16.327 Y-17.041 I1.3 J2.252 +N6165 X-22.921 Y-5.619 I16.327 J17.041 +N6170 X-22.996 Y-5. I2.525 J0.619 +N6175 G1 Y5. +N6180 G2 X-22.921 Y5.619 I2.6 J0. +N6185 X-16.327 Y17.041 I22.921 J-5.619 +N6190 X-15.828 Y17.415 I1.799 J-1.877 +N6195 G1 X-7.168 Y22.415 +N6200 G2 X-6.594 Y22.66 I1.3 J-2.252 +N6205 X0. Y23.6 I6.594 J-22.66 +N6210 X0.377 Y23.347 I0. J-0.407 +N6215 G3 X0.75 Y23.088 I0.386 J0.158 +N6220 G2 X6.455 Y22.18 I-0.75 J-23.088 +N6225 X6.918 Y21.982 I-0.587 J-2.016 +N6230 G1 X15.578 Y16.982 +N6235 G2 X15.981 Y16.68 I-1.05 J-1.819 +N6240 X22.436 Y5.5 I-15.981 J-16.68 +N6245 X22.496 Y5. I-2.04 J-0.5 +N6250 G1 Y-5. +N6255 G2 X22.436 Y-5.5 I-2.1 J0. +N6260 X15.981 Y-16.68 I-22.436 J5.5 +N6265 X15.578 Y-16.982 I-1.453 J1.516 +N6270 G1 X6.918 Y-21.982 +N6275 G2 X6.455 Y-22.18 I-1.05 J1.819 +N6280 X-6.455 I-6.455 J22.18 +N6285 X-6.918 Y-21.982 I0.587 J2.016 +N6290 G1 X-15.578 Y-16.982 +N6295 G2 X-15.981 Y-16.68 I1.05 J1.819 +N6300 X-22.436 Y-5.5 I15.981 J16.68 +N6305 X-22.496 Y-5. I2.04 J0.5 +N6310 G1 Y5. +N6315 G2 X-22.436 Y5.5 I2.1 J0. +N6320 X-15.981 Y16.68 I22.436 J-5.5 +N6325 X-15.578 Y16.982 I1.453 J-1.516 +N6330 G1 X-6.918 Y21.982 +N6335 G2 X-6.455 Y22.18 I1.05 J-1.819 +N6340 X0.75 Y23.088 I6.455 J-22.18 +N6345 X1.119 Y22.823 I-0.013 J-0.407 +N6350 G3 X1.483 Y22.551 I0.392 J0.146 +N6355 G2 X6.315 Y21.7 I-1.483 J-22.551 +N6360 X6.668 Y21.549 I-0.447 J-1.536 +N6365 G1 X15.328 Y16.549 +N6370 G2 X15.635 Y16.319 I-0.8 J-1.386 +N6375 X21.95 Y5.381 I-15.635 J-16.319 +N6380 X21.996 Y5. I-1.554 J-0.381 +N6385 G1 Y-5. +N6390 G2 X21.95 Y-5.381 I-1.6 J0. +N6395 X15.635 Y-16.319 I-21.95 J5.381 +N6400 X15.328 Y-16.549 I-1.107 J1.155 +N6405 G1 X6.668 Y-21.549 +N6410 G2 X6.315 Y-21.7 I-0.8 J1.386 +N6415 X-6.315 I-6.315 J21.7 +N6420 X-6.668 Y-21.549 I0.447 J1.536 +N6425 G1 X-15.328 Y-16.549 +N6430 G2 X-15.635 Y-16.319 I0.8 J1.386 +N6435 X-21.95 Y-5.381 I15.635 J16.319 +N6440 X-21.996 Y-5. I1.554 J0.381 +N6445 G1 Y5. +N6450 G2 X-21.95 Y5.381 I1.6 J0. +N6455 X-15.635 Y16.319 I21.95 J-5.381 +N6460 X-15.328 Y16.549 I1.107 J-1.155 +N6465 G1 X-6.668 Y21.549 +N6470 G2 X-6.315 Y21.7 I0.8 J-1.386 +N6475 X1.483 Y22.551 I6.315 J-21.7 +N6480 X1.554 Y22.496 I-0.005 J-0.081 +N6485 G3 X1.626 Y22.441 I0.077 J0.027 +N6490 G2 X6.287 Y21.604 I-1.626 J-22.441 +N6495 X6.618 Y21.463 I-0.419 J-1.44 +N6500 G1 X15.278 Y16.463 +N6505 G2 X15.566 Y16.247 I-0.75 J-1.299 +N6510 X21.853 Y5.357 I-15.566 J-16.247 +N6515 X21.896 Y5. I-1.457 J-0.357 +N6520 G1 Y-5. +N6525 G2 X21.853 Y-5.357 I-1.5 J0. +N6530 X15.566 Y-16.247 I-21.853 J5.357 +N6535 X15.278 Y-16.463 I-1.038 J1.083 +N6540 G1 X6.618 Y-21.463 +N6545 G2 X6.287 Y-21.604 I-0.75 J1.299 +N6550 X-6.287 I-6.287 J21.604 +N6555 X-6.618 Y-21.463 I0.419 J1.44 +N6560 G1 X-15.278 Y-16.463 +N6565 G2 X-15.566 Y-16.247 I0.75 J1.299 +N6570 X-21.853 Y-5.357 I15.566 J16.247 +N6575 X-21.896 Y-5. I1.457 J0.357 +N6580 G1 Y5. +N6585 G2 X-21.853 Y5.357 I1.5 J0. +N6590 X-15.566 Y16.247 I21.853 J-5.357 +N6595 X-15.278 Y16.463 I1.038 J-1.083 +N6600 G1 X-6.618 Y21.463 +N6605 G2 X-6.287 Y21.604 I0.75 J-1.299 +N6610 X1.626 Y22.441 I6.287 J-21.604 +N6615 G3 X1.947 Y22.719 I0.022 J0.299 +N6620 G1 X1.968 Y23.018 +N6625 X1.972 Y23.065 Z-3.996 +N6630 X1.975 Y23.11 Z-3.985 +N6635 X1.978 Y23.154 Z-3.967 +N6640 X1.981 Y23.194 Z-3.943 +N6645 X1.984 Y23.229 Z-3.912 +N6650 X1.986 Y23.26 Z-3.876 +N6655 X1.988 Y23.285 Z-3.836 +N6660 X1.989 Y23.302 Z-3.793 +N6665 X1.99 Y23.313 Z-3.747 +N6670 Y23.317 Z-3.7 +N6675 G0 Z1. +(106_POCHES_FINITIONS) +N6685 G0 X2.173 Y1.213 +N6690 Z-0.5 +N6695 Z-2.3 +N6700 G3 X0.676 Y-1.213 Z-2.456 I-0.748 J-1.213 F200. +N6705 X2.173 Y1.213 Z-2.613 I0.748 J1.213 +N6710 X0.676 Y-1.213 Z-2.769 I-0.748 J-1.213 +N6715 X2.173 Y1.213 Z-2.925 I0.748 J1.213 +N6720 X0.676 Y-1.213 Z-3.082 I-0.748 J-1.213 +N6725 X2.173 Y1.213 Z-3.238 I0.748 J1.213 +N6730 X0.676 Y-1.213 Z-3.394 I-0.748 J-1.213 +N6735 X2.849 Y0. Z-3.5 I0.748 J1.213 +N6740 X0. I-1.425 J0. +N6745 X0.5 I0.25 J0. F400. +N6750 X-0.5 I-0.5 J0. +N6755 X1. I0.75 J0. +N6760 X-1. I-1. J0. +N6765 X1.5 I1.25 J0. +N6770 X-1.5 I-1.5 J0. +N6775 X2. I1.75 J0. +N6780 X-2. I-2. J0. +N6785 X2.5 I2.25 J0. +N6790 X-2.5 I-2.5 J0. +N6795 X3. I2.75 J0. +N6800 X-3. I-3. J0. +N6805 X3.5 I3.25 J0. +N6810 X-3.5 I-3.5 J0. +N6815 X4. I3.75 J0. +N6820 X-4. I-4. J0. +N6825 X4.5 I4.25 J0. +N6830 X-4.5 I-4.5 J0. +N6835 X5. I4.75 J0. +N6840 X-5. I-5. J0. +N6845 X5. I5. J0. +N6850 G0 Z-0.5 +N6855 X10.938 Y-0.384 +N6860 Z-2.3 +N6865 G3 X12.246 Y2.148 Z-2.456 I0.654 J1.266 F200. +N6870 X10.938 Y-0.384 Z-2.613 I-0.654 J-1.266 +N6875 X12.246 Y2.148 Z-2.769 I0.654 J1.266 +N6880 X10.938 Y-0.384 Z-2.925 I-0.654 J-1.266 +N6885 X12.246 Y2.148 Z-3.082 I0.654 J1.266 +N6890 X10.938 Y-0.384 Z-3.238 I-0.654 J-1.266 +N6895 X12.246 Y2.148 Z-3.394 I0.654 J1.266 +N6900 X10.171 Y0.774 Z-3.5 I-0.654 J-1.266 +N6905 X12.547 Y0.955 I1.188 J0.09 +N6910 X6.917 Y10.512 I-12.547 J-0.954 F400. +N6915 G1 Y10.312 +N6920 G2 X12.389 Y0.834 I-6.917 J-10.312 +N6925 G1 X12.562 Y0.734 +N6930 G3 X12.547 Y0.955 I-12.562 J-0.734 +N6935 G0 Z-0.5 +N6940 X10.938 Y-0.384 +N6945 Z-2.3 +N6950 G3 X12.246 Y2.148 Z-2.456 I0.654 J1.266 F200. +N6955 X10.938 Y-0.384 Z-2.613 I-0.654 J-1.266 +N6960 X12.246 Y2.148 Z-2.769 I0.654 J1.266 +N6965 X10.938 Y-0.384 Z-2.925 I-0.654 J-1.266 +N6970 X12.246 Y2.148 Z-3.082 I0.654 J1.266 +N6975 X10.938 Y-0.384 Z-3.238 I-0.654 J-1.266 +N6980 X12.246 Y2.148 Z-3.394 I0.654 J1.266 +N6985 X10.171 Y0.774 Z-3.5 I-0.654 J-1.266 +N6990 X11.673 Y-0.516 I1.396 J0.106 +N6995 X12.963 Y0.986 I-0.106 J1.396 +N7000 X6.5 Y11.258 I-12.963 J-0.986 F400. +N7005 G1 Y10.087 +N7010 G2 X11.986 Y0.586 I-6.5 J-10.087 +N7015 G1 X13. Y0. +N7020 G3 X12.963 Y0.986 I-13. J0. +N7025 G2 X13.178 Y1.375 I0.403 J0.031 +N7030 G3 X13.384 Y1.77 I-0.18 J0.344 +N7035 X6. Y12.093 I-13.384 J-1.77 +N7040 G1 Y9.811 +N7045 G2 X11.496 Y0.291 I-6. J-9.811 +N7050 G1 X13.473 Y-0.851 +N7055 G3 X13.384 Y1.77 I-13.473 J0.851 +N7060 G2 X13.578 Y2.17 I0.401 J0.053 +N7065 G3 X13.761 Y2.576 I-0.199 J0.334 +N7070 X5.5 Y12.874 I-13.761 J-2.576 +N7075 G1 Y9.526 +N7080 G2 X11. Y0. I-5.5 J-9.526 +N7085 G1 X13.9 Y-1.674 +N7090 G3 X13.761 Y2.576 I-13.9 J1.674 +N7095 G2 X13.934 Y2.986 I0.397 J0.074 +N7100 G3 X14.095 Y3.401 I-0.217 J0.323 +N7105 X5. Y13.611 I-14.095 J-3.401 +N7110 G1 Y9.233 +N7115 G2 X10.496 Y-0.286 I-5. J-9.233 +N7120 G1 X14.287 Y-2.475 +N7125 G3 X14.095 Y3.401 I-14.287 J2.475 +N7130 G2 X14.247 Y3.82 I0.393 J0.095 +N7135 G3 X14.387 Y4.243 I-0.233 J0.312 +N7140 X5.172 Y14.08 I-14.387 J-4.243 +N7145 X4.5 Y13.611 I-0.172 J-0.469 +N7150 G1 Y9.233 +N7155 G3 X4.762 Y8.793 I0.5 J0. +N7160 G2 X5.595 Y8.288 I-4.761 J-8.794 +N7165 X9.996 Y-0.273 I-5.595 J-8.288 +N7170 G3 X10.246 Y-0.719 I0.5 J-0.014 +N7175 G1 X14.037 Y-2.908 +N7180 G3 X14.78 Y-2.561 I0.25 J0.433 +N7185 X14.387 Y4.243 I-14.78 J2.561 +N7190 G0 Z-0.5 +N7195 X-1.122 Y-10.887 +N7200 Z-2.3 +N7205 G3 X1.316 Y-12.363 Z-2.456 I1.219 J-0.738 F200. +N7210 X-1.122 Y-10.887 Z-2.613 I-1.219 J0.738 +N7215 X1.316 Y-12.363 Z-2.769 I1.219 J-0.738 +N7220 X-1.122 Y-10.887 Z-2.925 I-1.219 J0.738 +N7225 X1.316 Y-12.363 Z-3.082 I1.219 J-0.738 +N7230 X-1.122 Y-10.887 Z-3.238 I-1.219 J0.738 +N7235 X1.316 Y-12.363 Z-3.394 I1.219 J-0.738 +N7240 X0.085 Y-10.2 Z-3.5 I-1.219 J0.738 +N7245 X0.105 Y-12.583 I0.01 J-1.191 +N7250 X5.645 Y-11.246 I-0.105 J12.583 F400. +N7255 G1 X5.472 Y-11.146 +N7260 G2 X-5.472 I-5.472 J11.146 +N7265 G1 X-5.645 Y-11.246 +N7270 G3 X0.105 Y-12.583 I5.645 J11.246 +N7275 G2 X0.417 Y-12.785 I0.003 J-0.337 +N7280 G3 X0.733 Y-12.979 I0.298 J0.13 +N7285 X6.5 Y-11.258 I-0.733 J12.979 +N7290 G1 X5.486 Y-10.673 +N7295 G2 X-5.486 I-5.486 J10.673 +N7300 G1 X-6.5 Y-11.258 +N7305 G3 X0.733 Y-12.979 I6.5 J11.258 +N7310 G2 X1.118 Y-13.203 I0.023 J-0.404 +N7315 G3 X1.509 Y-13.416 I0.347 J0.173 +N7320 X7.473 Y-11.243 I-1.509 J13.416 +N7325 G1 X5.496 Y-10.102 +N7330 G2 X-5.496 I-5.496 J10.102 +N7335 G1 X-7.473 Y-11.243 +N7340 G3 X1.509 Y-13.416 I7.473 J11.243 +N7345 G2 X1.905 Y-13.617 I0.045 J-0.402 +N7350 G3 X2.307 Y-13.809 I0.338 J0.192 +N7355 X8.4 Y-11.2 I-2.307 J13.809 +N7360 G1 X5.5 Y-9.526 +N7365 G2 X-5.5 I-5.5 J9.526 +N7370 G1 X-8.4 Y-11.2 +N7375 G3 X2.307 Y-13.809 I8.4 J11.2 +N7380 G2 X2.714 Y-13.989 I0.067 J-0.399 +N7385 G3 X3.126 Y-14.159 I0.328 J0.21 +N7390 X9.287 Y-11.135 I-3.126 J14.159 +N7395 G1 X5.496 Y-8.947 +N7400 G2 X-5.496 I-5.496 J8.947 +N7405 G1 X-9.287 Y-11.135 +N7410 G3 X3.126 Y-14.159 I9.287 J11.135 +N7415 G2 X3.542 Y-14.319 I0.087 J-0.395 +N7420 G3 X3.961 Y-14.467 I0.317 J0.227 +N7425 X9.607 Y-11.519 I-3.961 J14.467 +N7430 X9.537 Y-10.702 I-0.32 J0.384 +N7435 G1 X5.746 Y-8.514 +N7440 G3 X5.234 Y-8.521 I-0.25 J-0.433 +N7445 G2 X-5.234 I-5.234 J8.521 +N7450 G3 X-5.746 Y-8.514 I-0.262 J-0.426 +N7455 G1 X-9.537 Y-10.702 +N7460 G3 X-9.607 Y-11.519 I0.25 J-0.433 +N7465 X3.961 Y-14.467 I9.607 J11.519 +N7470 G0 Z-0.5 +N7475 X-10.754 Y2.034 +N7480 Z-2.3 +N7485 G3 X-12.43 Y-0.271 Z-2.456 I-0.838 J-1.153 F200. +N7490 X-10.754 Y2.034 Z-2.613 I0.838 J1.153 +N7495 X-12.43 Y-0.271 Z-2.769 I-0.838 J-1.153 +N7500 X-10.754 Y2.034 Z-2.925 I0.838 J1.153 +N7505 X-12.43 Y-0.271 Z-3.082 I-0.838 J-1.153 +N7510 X-10.754 Y2.034 Z-3.238 I0.838 J1.153 +N7515 X-12.43 Y-0.271 Z-3.394 I-0.838 J-1.153 +N7520 X-10.171 Y0.774 Z-3.5 I0.838 J1.153 +N7525 X-11.269 Y2.052 I-1.188 J0.09 +N7530 X-12.547 Y0.955 I-0.09 J-1.188 +N7535 X-12.562 Y0.734 I12.547 J-0.954 F400. +N7540 G1 X-12.389 Y0.834 +N7545 G2 X-6.917 Y10.312 I12.389 J-0.834 +N7550 G1 Y10.512 +N7555 G3 X-12.547 Y0.955 I6.917 J-10.512 +N7560 G0 Z-0.5 +N7565 X-10.754 Y2.034 +N7570 Z-2.3 +N7575 G3 X-12.43 Y-0.271 Z-2.456 I-0.838 J-1.153 F200. +N7580 X-10.754 Y2.034 Z-2.613 I0.838 J1.153 +N7585 X-12.43 Y-0.271 Z-2.769 I-0.838 J-1.153 +N7590 X-10.754 Y2.034 Z-2.925 I0.838 J1.153 +N7595 X-12.43 Y-0.271 Z-3.082 I-0.838 J-1.153 +N7600 X-10.754 Y2.034 Z-3.238 I0.838 J1.153 +N7605 X-12.43 Y-0.271 Z-3.394 I-0.838 J-1.153 +N7610 X-10.171 Y0.774 Z-3.5 I0.838 J1.153 +N7615 X-12.963 Y0.986 I-1.396 J0.106 +N7620 X-13. Y0. I12.963 J-0.986 F400. +N7625 G1 X-11.986 Y0.586 +N7630 G2 X-6.5 Y10.087 I11.986 J-0.586 +N7635 G1 Y11.258 +N7640 G3 X-12.963 Y0.986 I6.5 J-11.258 +N7645 G2 X-13.235 Y0.634 I-0.403 J0.031 +N7650 G3 X-13.497 Y0.275 I0.126 J-0.367 +N7655 X-13.473 Y-0.851 I13.497 J-0.275 +N7660 G1 X-11.496 Y0.291 +N7665 G2 X-6. Y9.811 I11.496 J-0.291 +N7670 G1 Y12.093 +N7675 G3 X-13.497 Y0.275 I6. J-12.093 +N7680 G2 X-13.75 Y-0.092 I-0.404 J0.008 +N7685 G3 X-13.992 Y-0.465 I0.146 J-0.36 +N7690 X-13.9 Y-1.674 I13.992 J0.465 +N7695 G1 X-11. Y0. +N7700 G2 X-5.5 Y9.526 I11. J0. +N7705 G1 Y12.874 +N7710 G3 X-13.992 Y-0.465 I5.5 J-12.874 +N7715 G2 X-14.225 Y-0.844 I-0.404 J-0.013 +N7720 G3 X-14.448 Y-1.23 I0.165 J-0.353 +N7725 X-14.287 Y-2.475 I14.448 J1.23 +N7730 G1 X-10.496 Y-0.286 +N7735 G2 X-5. Y9.233 I10.496 J0.286 +N7740 G1 Y13.611 +N7745 G3 X-14.448 Y-1.23 I5. J-13.611 +N7750 G2 X-14.661 Y-1.621 I-0.403 J-0.034 +N7755 G3 X-14.864 Y-2.018 I0.183 J-0.344 +N7760 X-14.78 Y-2.561 I14.864 J2.018 +N7765 X-14.037 Y-2.908 I0.493 J0.085 +N7770 G1 X-10.246 Y-0.719 +N7775 G3 X-9.996 Y-0.273 I-0.25 J0.433 +N7780 G2 X-9.975 Y0.702 I9.996 J0.273 +N7785 X-4.762 Y8.793 I9.975 J-0.702 +N7790 G3 X-4.5 Y9.233 I-0.238 J0.44 +N7795 G1 Y13.611 +N7800 G3 X-5.172 Y14.08 I-0.5 J0. +N7805 X-14.864 Y-2.018 I5.172 J-14.08 +N7810 G0 Z-0.5 +(107_RAINURE_REFERENCE) +N7820 G0 Z0. +N7825 X10.624 Y9.598 +N7830 Z-2.5 +N7835 G1 Z-3.7 F200. +N7840 X12.124 Y7. F400. +N7845 X9.526 Y5.5 +N7850 Z-4.2 F200. +N7855 X12.124 Y7. F400. +N7860 X10.624 Y9.598 +N7865 Z-4.7 F200. +N7870 X12.124 Y7. F400. +N7875 X9.526 Y5.5 +N7880 Z-5.2 F200. +N7885 X12.124 Y7. F400. +N7890 X10.624 Y9.598 +N7895 Z-5.7 F200. +N7900 X12.124 Y7. F400. +N7905 X9.526 Y5.5 +N7910 G0 Z0. +N7915 X3. Y-14. +N7920 Z-2.5 +N7925 G1 Z-3.7 F200. +N7930 X0. F400. +N7935 Y-11. +N7940 Z-4.2 F200. +N7945 Y-14. F400. +N7950 X3. +N7955 Z-4.7 F200. +N7960 X0. F400. +N7965 Y-11. +N7970 Z-5.2 F200. +N7975 Y-14. F400. +N7980 X3. +N7985 Z-5.7 F200. +N7990 X0. F400. +N7995 Y-11. +N8000 G0 Z0. +N8005 X-13.624 Y4.402 +N8010 Z-2.5 +N8015 G1 Z-3.7 F200. +N8020 X-12.124 Y7. F400. +N8025 X-9.526 Y5.5 +N8030 Z-4.2 F200. +N8035 X-12.124 Y7. F400. +N8040 X-13.624 Y4.402 +N8045 Z-4.7 F200. +N8050 X-12.124 Y7. F400. +N8055 X-9.526 Y5.5 +N8060 Z-5.2 F200. +N8065 X-12.124 Y7. F400. +N8070 X-13.624 Y4.402 +N8075 Z-5.7 F200. +N8080 X-12.124 Y7. F400. +N8085 X-9.526 Y5.5 +N8090 G0 Z0. +N8100 M9 +N8105 G53 Z0. +N8110 G53 X0. Y0. +N8115 M30 +% diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/full/005_200_RoueDentee_Face_2_Surfacage_V01.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/005_200_RoueDentee_Face_2_Surfacage_V01.ngc new file mode 100644 index 0000000..93230e8 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/005_200_RoueDentee_Face_2_Surfacage_V01.ngc @@ -0,0 +1,238 @@ +% +(200_ROUEDENTEE_FACE_2_SURFACAGE_V01) +(MACHINE) +( MODEL M3) +( DESCRIPTION M3) +(T2 D=3. CR=0. - ZMIN=-1.4 - FLAT END MILL) +(T3 D=3. CR=0. - ZMIN=-1.5 - FLAT END MILL) +N10 G90 G94 G17 G91.1 +N15 G21 +(201_SURFACAGE_EBAUCHE) +(N20 M61 Q2) +(N25 T3) +N30 S60000 M3 +N35 G54 +N45 G0 X2.064 Y-1.274 +N50 G1 Z2. F1000. +N55 Z1. +N60 G3 X0.786 Y1.273 Z0.844 I-0.639 J1.274 +N65 X2.064 Y-1.274 Z0.687 I0.639 J-1.274 +N70 X0.786 Y1.273 Z0.531 I-0.639 J1.274 +N75 X2.064 Y-1.274 Z0.375 I0.639 J-1.274 +N80 X0.786 Y1.273 Z0.218 I-0.639 J1.274 +N85 X2.064 Y-1.274 Z0.062 I0.639 J-1.274 +N90 X0.786 Y1.273 Z-0.094 I-0.639 J1.274 +N95 X2.064 Y-1.274 Z-0.251 I0.639 J-1.274 +N100 X0.786 Y1.273 Z-0.407 I-0.639 J1.274 +N105 X2.064 Y-1.274 Z-0.563 I0.639 J-1.274 +N110 X0.786 Y1.273 Z-0.72 I-0.639 J1.274 +N115 X2.064 Y-1.274 Z-0.876 I0.639 J-1.274 +N120 X0.786 Y1.273 Z-1.032 I-0.639 J1.274 +N125 X2.064 Y-1.274 Z-1.189 I0.639 J-1.274 +N130 X0.786 Y1.273 Z-1.345 I-0.639 J1.274 +N135 X0. Y0. Z-1.4 I0.639 J-1.274 +N140 X0.25 Y-0.25 I0.25 J0. +N145 X0.5 Y0. I0. J0.25 +N150 X-0.5 I-0.5 J0. +N155 X1. I0.75 J0. +N160 X-1. I-1. J0. +N165 X1.5 I1.25 J0. +N170 X-1.5 I-1.5 J0. +N175 X2. I1.75 J0. +N180 X-2. I-2. J0. +N185 X2.5 I2.25 J0. +N190 X-2.5 I-2.5 J0. +N195 X3. I2.75 J0. +N200 X-3. I-3. J0. +N205 X3.5 I3.25 J0. +N210 X-3.5 I-3.5 J0. +N215 X4. I3.75 J0. +N220 X-4. I-4. J0. +N225 X4.5 I4.25 J0. +N230 X-4.5 I-4.5 J0. +N235 X5. I4.75 J0. +N240 X-5. I-5. J0. +N245 X5.5 I5.25 J0. +N250 X-5.5 I-5.5 J0. +N255 X6. I5.75 J0. +N260 X-6. I-6. J0. +N265 X6.5 I6.25 J0. +N270 X-6.5 I-6.5 J0. +N275 X7. I6.75 J0. +N280 X-7. I-7. J0. +N285 X7.5 I7.25 J0. +N290 X-7.5 I-7.5 J0. +N295 X8. I7.75 J0. +N300 X-8. I-8. J0. +N305 X8.5 I8.25 J0. +N310 X-8.5 I-8.5 J0. +N315 X9. I8.75 J0. +N320 X-9. I-9. J0. +N325 X9.5 I9.25 J0. +N330 X-9.5 I-9.5 J0. +N335 X10. I9.75 J0. +N340 X-10. I-10. J0. +N345 X10.5 I10.25 J0. +N350 X-10.5 I-10.5 J0. +N355 X11. I10.75 J0. +N360 X-11. I-11. J0. +N365 X11.5 I11.25 J0. +N370 X-11.5 I-11.5 J0. +N375 X12. I11.75 J0. +N380 X-12. I-12. J0. +N385 X12.5 I12.25 J0. +N390 X-12.5 I-12.5 J0. +N395 X13. I12.75 J0. +N400 X-13. I-13. J0. +N405 X13.5 I13.25 J0. +N410 X-13.5 I-13.5 J0. +N415 X14. I13.75 J0. +N420 X-14. I-14. J0. +N425 X14.5 I14.25 J0. +N430 X-14.5 I-14.5 J0. +N435 X15. I14.75 J0. +N440 X-15. I-15. J0. +N445 X15.5 I15.25 J0. +N450 X-15.5 I-15.5 J0. +N455 X16. I15.75 J0. +N460 X-16. I-16. J0. +N465 X16.5 I16.25 J0. +N470 X-16.5 I-16.5 J0. +N475 X17. I16.75 J0. +N480 X-17. I-17. J0. +N485 X17.5 I17.25 J0. +N490 X-17.5 I-17.5 J0. +N495 X18. I17.75 J0. +N500 X-18. I-18. J0. +N505 X18.5 I18.25 J0. +N510 X-18.5 I-18.5 J0. +N515 X19. I18.75 J0. +N520 X-19. I-19. J0. +N525 X19.5 I19.25 J0. +N530 X-19.5 I-19.5 J0. +N535 X20. I19.75 J0. +N540 X-20. I-20. J0. +N545 X20.5 I20.25 J0. +N550 X-20.5 I-20.5 J0. +N555 X21. I20.75 J0. +N560 X-21. I-21. J0. +N565 X21.5 I21.25 J0. +N570 X-21.5 I-21.5 J0. +N575 X22. I21.75 J0. +N580 X-22. I-22. J0. +N585 X22. I22. J0. +N590 G0 Z2. +N600 M5 +(202_SURFACAGE_FINITION) +N605 M1 +N610 M61 Q3 +N615 T2 +N620 S60000 M3 +N625 G54 +N635 G0 X0.677 Y-1.213 +N640 G1 Z0.7 F400. +N645 Z-0.3 +N650 G3 X2.173 Y1.212 Z-0.456 I0.748 J1.213 F200. +N655 X0.677 Y-1.213 Z-0.613 I-0.748 J-1.213 +N660 X2.173 Y1.212 Z-0.769 I0.748 J1.213 +N665 X0.677 Y-1.213 Z-0.925 I-0.748 J-1.213 +N670 X2.173 Y1.212 Z-1.082 I0.748 J1.213 +N675 X0.677 Y-1.213 Z-1.238 I-0.748 J-1.213 +N680 X2.173 Y1.212 Z-1.394 I0.748 J1.213 +N685 X0. Y0. Z-1.5 I-0.748 J-1.213 +N690 X0.25 Y-0.25 I0.25 J0. F400. +N695 X0.5 Y0. I0. J0.25 +N700 X-0.5 I-0.5 J0. +N705 X1. I0.75 J0. +N710 X-1. I-1. J0. +N715 X1.5 I1.25 J0. +N720 X-1.5 I-1.5 J0. +N725 X2. I1.75 J0. +N730 X-2. I-2. J0. +N735 X2.5 I2.25 J0. +N740 X-2.5 I-2.5 J0. +N745 X3. I2.75 J0. +N750 X-3. I-3. J0. +N755 X3.5 I3.25 J0. +N760 X-3.5 I-3.5 J0. +N765 X4. I3.75 J0. +N770 X-4. I-4. J0. +N775 X4.5 I4.25 J0. +N780 X-4.5 I-4.5 J0. +N785 X5. I4.75 J0. +N790 X-5. I-5. J0. +N795 X5.5 I5.25 J0. +N800 X-5.5 I-5.5 J0. +N805 X6. I5.75 J0. +N810 X-6. I-6. J0. +N815 X6.5 I6.25 J0. +N820 X-6.5 I-6.5 J0. +N825 X7. I6.75 J0. +N830 X-7. I-7. J0. +N835 X7.5 I7.25 J0. +N840 X-7.5 I-7.5 J0. +N845 X8. I7.75 J0. +N850 X-8. I-8. J0. +N855 X8.5 I8.25 J0. +N860 X-8.5 I-8.5 J0. +N865 X9. I8.75 J0. +N870 X-9. I-9. J0. +N875 X9.5 I9.25 J0. +N880 X-9.5 I-9.5 J0. +N885 X10. I9.75 J0. +N890 X-10. I-10. J0. +N895 X10.5 I10.25 J0. +N900 X-10.5 I-10.5 J0. +N905 X11. I10.75 J0. +N910 X-11. I-11. J0. +N915 X11.5 I11.25 J0. +N920 X-11.5 I-11.5 J0. +N925 X12. I11.75 J0. +N930 X-12. I-12. J0. +N935 X12.5 I12.25 J0. +N940 X-12.5 I-12.5 J0. +N945 X13. I12.75 J0. +N950 X-13. I-13. J0. +N955 X13.5 I13.25 J0. +N960 X-13.5 I-13.5 J0. +N965 X14. I13.75 J0. +N970 X-14. I-14. J0. +N975 X14.5 I14.25 J0. +N980 X-14.5 I-14.5 J0. +N985 X15. I14.75 J0. +N990 X-15. I-15. J0. +N995 X15.5 I15.25 J0. +N1000 X-15.5 I-15.5 J0. +N1005 X16. I15.75 J0. +N1010 X-16. I-16. J0. +N1015 X16.5 I16.25 J0. +N1020 X-16.5 I-16.5 J0. +N1025 X17. I16.75 J0. +N1030 X-17. I-17. J0. +N1035 X17.5 I17.25 J0. +N1040 X-17.5 I-17.5 J0. +N1045 X18. I17.75 J0. +N1050 X-18. I-18. J0. +N1055 X18.5 I18.25 J0. +N1060 X-18.5 I-18.5 J0. +N1065 X19. I18.75 J0. +N1070 X-19. I-19. J0. +N1075 X19.5 I19.25 J0. +N1080 X-19.5 I-19.5 J0. +N1085 X20. I19.75 J0. +N1090 X-20. I-20. J0. +N1095 X20.5 I20.25 J0. +N1100 X-20.5 I-20.5 J0. +N1105 X21. I20.75 J0. +N1110 X-21. I-21. J0. +N1115 X21.5 I21.25 J0. +N1120 X-21.5 I-21.5 J0. +N1125 X22. I21.75 J0. +N1130 X-22. I-22. J0. +N1135 X22. I22. J0. +N1140 G0 Z0.7 +N1150 M9 +N1155 G53 Z0. +N1160 G53 X0. Y0. +N1165 M30 +% diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/full/006_300_RoueDentee_Face_2_Finition_V01.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/006_300_RoueDentee_Face_2_Finition_V01.ngc new file mode 100644 index 0000000..5ceec71 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/full/006_300_RoueDentee_Face_2_Finition_V01.ngc @@ -0,0 +1,521 @@ +% +(300_ROUEDENTEE_FACE_2_FINITION_V01) +(MACHINE) +( MODEL M3) +( DESCRIPTION M3) +(T2 D=3. CR=0. - ZMIN=-1.7 - FLAT END MILL) +(T3 D=3. CR=0. - ZMIN=-1.7 - FLAT END MILL) +N10 G90 G94 G17 G91.1 +N15 G21 +(301_CONTOURNAGE_EBAUCHE) +(N20 M61 Q2) +(N25 T3) +N30 S60000 M3 +N35 G54 +N45 G0 X-0.3 Y24.45 +N50 G1 Z2. F200. +N55 Z-1.4 +N60 G19 G2 Y24.15 Z-1.7 J-0.3 K0. +N65 G1 Y23.85 F1000. +N70 G17 G3 X0. Y23.55 I0.3 J0. +N75 G2 X6.58 Y22.612 I0. J-23.55 +N80 X7.143 Y22.372 I-0.713 J-2.448 +N85 G1 X15.803 Y17.372 +N90 G2 X16.125 Y17.148 I-1.147 J-1.987 +N95 X16.416 Y16.885 I-3.304 J-3.965 +N100 X22.873 Y5.607 I-16.366 J-16.856 +N105 X22.946 Y5. I-2.477 J-0.607 +N110 G1 Y-5. +N115 G2 X22.873 Y-5.607 I-2.55 J0. +N120 X16.292 Y-17.005 I-22.873 J5.607 +N125 X15.803 Y-17.372 I-1.764 J1.841 +N130 G1 X7.143 Y-22.372 +N135 G2 X6.58 Y-22.612 I-1.275 J2.208 +N140 X-6.58 I-6.58 J22.612 +N145 X-7.143 Y-22.372 I0.713 J2.448 +N150 G1 X-15.803 Y-17.372 +N155 G2 X-16.125 Y-17.148 I1.147 J1.987 +N160 X-16.416 Y-16.885 I3.304 J3.965 +N165 X-22.873 Y-5.607 I16.366 J16.856 +N170 X-22.946 Y-5. I2.477 J0.607 +N175 G1 Y5. +N180 G2 X-22.873 Y5.607 I2.55 J0. +N185 X-16.292 Y17.005 I22.873 J-5.607 +N190 X-15.803 Y17.372 I1.764 J-1.841 +N195 G1 X-7.143 Y22.372 +N200 G2 X-6.58 Y22.612 I1.275 J-2.208 +N205 X0. Y23.55 I6.58 J-22.612 +N210 X0.339 Y23.323 I0. J-0.367 +N215 G3 X0.675 Y23.09 I0.347 J0.142 +N220 G2 X6.455 Y22.18 I-0.675 J-23.09 +N225 X6.918 Y21.982 I-0.587 J-2.016 +N230 G1 X15.578 Y16.982 +N235 G2 X15.981 Y16.68 I-1.05 J-1.819 +N240 X22.436 Y5.5 I-15.981 J-16.68 +N245 X22.496 Y5. I-2.04 J-0.5 +N250 G1 Y-5. +N255 G2 X22.436 Y-5.5 I-2.1 J0. +N260 X15.981 Y-16.68 I-22.436 J5.5 +N265 X15.578 Y-16.982 I-1.453 J1.516 +N270 G1 X6.918 Y-21.982 +N275 G2 X6.455 Y-22.18 I-1.05 J1.819 +N280 X-6.455 I-6.455 J22.18 +N285 X-6.918 Y-21.982 I0.587 J2.016 +N290 G1 X-15.578 Y-16.982 +N295 G2 X-15.981 Y-16.68 I1.05 J1.819 +N300 X-22.436 Y-5.5 I15.981 J16.68 +N305 X-22.496 Y-5. I2.04 J0.5 +N310 G1 Y5. +N315 G2 X-22.436 Y5.5 I2.1 J0. +N320 X-15.981 Y16.68 I22.436 J-5.5 +N325 X-15.578 Y16.982 I1.453 J-1.516 +N330 G1 X-6.918 Y21.982 +N335 G2 X-6.455 Y22.18 I1.05 J-1.819 +N340 X0.675 Y23.09 I6.455 J-22.18 +N345 X1.044 Y22.826 I-0.012 J-0.407 +N350 G3 X1.409 Y22.556 I0.391 J0.147 +N355 G2 X6.315 Y21.7 I-1.409 J-22.556 +N360 X6.668 Y21.549 I-0.447 J-1.536 +N365 G1 X15.328 Y16.549 +N370 G2 X15.635 Y16.319 I-0.8 J-1.386 +N375 X21.95 Y5.381 I-15.635 J-16.319 +N380 X21.996 Y5. I-1.554 J-0.381 +N385 G1 Y-5. +N390 G2 X21.95 Y-5.381 I-1.6 J0. +N395 X15.635 Y-16.319 I-21.95 J5.381 +N400 X15.328 Y-16.549 I-1.107 J1.155 +N405 G1 X6.668 Y-21.549 +N410 G2 X6.315 Y-21.7 I-0.8 J1.386 +N415 X-6.315 I-6.315 J21.7 +N420 X-6.668 Y-21.549 I0.447 J1.536 +N425 G1 X-15.328 Y-16.549 +N430 G2 X-15.635 Y-16.319 I0.8 J1.386 +N435 X-21.95 Y-5.381 I15.635 J16.319 +N440 X-21.996 Y-5. I1.554 J0.381 +N445 G1 Y5. +N450 G2 X-21.95 Y5.381 I1.6 J0. +N455 X-15.635 Y16.319 I21.95 J-5.381 +N460 X-15.328 Y16.549 I1.107 J-1.155 +N465 G1 X-6.668 Y21.549 +N470 G2 X-6.315 Y21.7 I0.8 J-1.386 +N475 X1.409 Y22.556 I6.315 J-21.7 +N480 G3 X1.728 Y22.837 I0.019 J0.299 +N485 G1 X1.746 Y23.136 +N490 X1.749 Y23.183 Z-1.696 +N495 X1.752 Y23.229 Z-1.685 +N500 X1.755 Y23.272 Z-1.667 +N505 X1.757 Y23.312 Z-1.643 +N510 X1.76 Y23.348 Z-1.612 +N515 X1.761 Y23.378 Z-1.576 +N520 X1.763 Y23.403 Z-1.536 +N525 X1.764 Y23.421 Z-1.493 +N530 X1.765 Y23.432 Z-1.447 +N535 Y23.436 Z-1.4 +N540 G0 Z1. +(302_POCHES_EBAUCHE) +N550 G0 Z2. +N555 X-1.234 Y-0.713 +N560 G1 Z1. F1000. +N565 G3 X1.234 Y0.713 Z0.844 I1.234 J0.713 F200. +N570 X-1.234 Y-0.713 Z0.687 I-1.234 J-0.713 +N575 X1.234 Y0.713 Z0.531 I1.234 J0.713 +N580 X-1.234 Y-0.713 Z0.375 I-1.234 J-0.713 +N585 X1.234 Y0.713 Z0.218 I1.234 J0.713 +N590 X-1.234 Y-0.713 Z0.062 I-1.234 J-0.713 +N595 X1.234 Y0.713 Z-0.094 I1.234 J0.713 +N600 X-1.234 Y-0.713 Z-0.251 I-1.234 J-0.713 +N605 X1.234 Y0.713 Z-0.407 I1.234 J0.713 +N610 X-1.234 Y-0.713 Z-0.563 I-1.234 J-0.713 +N615 X1.234 Y0.713 Z-0.72 I1.234 J0.713 +N620 X-1.234 Y-0.713 Z-0.876 I-1.234 J-0.713 +N625 X1.234 Y0.713 Z-1.032 I1.234 J0.713 +N630 X-1.234 Y-0.713 Z-1.189 I-1.234 J-0.713 +N635 X1.234 Y0.713 Z-1.345 I1.234 J0.713 +N640 X-1.234 Y-0.713 Z-1.501 I-1.234 J-0.713 +N645 X1.234 Y0.713 Z-1.658 I1.234 J0.713 +N650 X0.277 Y1.398 Z-1.7 I-1.234 J-0.713 +N655 X-0.392 Y0.859 I-0.109 J-0.549 F1000. +N660 X-0.4 Y0. I46.38 J-0.859 +N665 X0.4 I0.4 J0. +N670 X-0.4 I-0.4 J0. +N675 G2 X-0.573 Y-0.311 I-0.367 J0. +N680 G3 X-0.605 Y-0.666 I0.118 J-0.19 +N685 X0.605 Y0.666 I0.605 J0.666 +N690 X-0.605 Y-0.666 I-0.605 J-0.666 +N695 G2 X-0.49 Y-1.041 I-0.258 J-0.284 +N700 G3 X-0.281 Y-1.372 I0.264 J-0.064 +N705 X0.281 Y1.372 I0.281 J1.372 +N710 X-0.281 Y-1.372 I-0.281 J-1.372 +N715 G2 X0.018 Y-1.65 I-0.078 J-0.382 +N720 G3 X0.364 Y-1.865 I0.289 J0.08 +N725 X-0.364 Y1.865 I-0.364 J1.865 +N730 X0.364 Y-1.865 I0.364 J-1.865 +N735 G2 X0.754 Y-2.014 I0.076 J-0.387 +N740 G3 X1.162 Y-2.1 I0.254 J0.192 +N745 X-1.162 Y2.1 I-1.162 J2.1 +N750 X1.162 Y-2.1 I1.162 J-2.1 +N755 G2 X1.585 Y-2.124 I0.192 J-0.347 +N760 G3 X2.006 Y-2.094 I0.193 J0.27 +N765 X-2.006 Y2.094 I-2.006 J2.094 +N770 X2.006 Y-2.094 I2.006 J-2.094 +N775 G2 X2.425 Y-2.01 I0.275 J-0.287 +N780 G3 X2.833 Y-1.881 I0.123 J0.318 +N785 X-2.833 Y1.881 I-2.833 J1.881 +N790 X2.833 Y-1.881 I2.833 J-1.881 +N795 G2 X3.226 Y-1.707 I0.332 J-0.221 +N800 G3 X3.601 Y-1.496 I0.053 J0.344 +N805 X-3.601 Y1.496 I-3.601 J1.496 +N810 X3.601 Y-1.496 I3.601 J-1.496 +N815 G2 X3.957 Y-1.25 I0.369 J-0.153 +N820 G3 X4.291 Y-0.975 I-0.012 J0.354 +N825 X-4.291 Y0.975 I-4.291 J0.975 +N830 X4.291 Y-0.975 I4.291 J-0.975 +N835 G2 X4.601 Y-0.671 I0.391 J-0.089 +N840 G3 X4.888 Y-0.344 I-0.072 J0.352 +N845 X-4.888 Y0.344 I-4.888 J0.344 +N850 X4.888 Y-0.344 I4.888 J-0.344 +N855 G0 Z2. +N860 X8.434 Y8.676 +N865 G1 Z1. F1000. +N870 G2 X12.083 Y0.645 Z0.685 I-8.434 J-8.676 F200. +N875 G1 X12.899 Y0.174 Z0.652 +N880 G3 X6.6 Y11.084 Z0.192 I-12.899 J-0.174 +N885 G1 Y10.142 Z0.159 +N890 G2 X12.083 Y0.645 Z-0.238 I-6.6 J-10.142 +N895 G1 X12.899 Y0.174 Z-0.271 +N900 G3 X6.6 Y11.084 Z-0.731 I-12.899 J-0.174 +N905 G1 Y10.142 Z-0.764 +N910 G2 X12.083 Y0.645 Z-1.161 I-6.6 J-10.142 +N915 G1 X12.899 Y0.174 Z-1.194 +N920 G3 X6.6 Y11.084 Z-1.653 I-12.899 J-0.174 +N925 G1 Y10.142 Z-1.686 +N930 G2 X6.924 Y9.923 Z-1.7 I-6.6 J-10.142 +N935 X12.083 Y0.645 I-6.924 J-9.923 F1000. +N940 G1 X12.899 Y0.174 +N945 G3 X6.6 Y11.084 I-12.899 J-0.174 +N950 G1 Y10.142 +N955 G2 X6.924 Y9.923 I-6.6 J-10.142 +N960 X7.088 Y9.496 I-0.234 J-0.335 +N965 G3 X7.239 Y9.064 I0.418 J-0.097 +N970 G2 X11.595 Y0.349 I-7.239 J-9.064 +N975 G1 X13.383 Y-0.683 +N980 G3 X6.1 Y11.931 I-13.383 J0.683 +N985 G1 Y9.867 +N990 G2 X7.239 Y9.064 I-6.1 J-9.867 +N995 X7.375 Y8.627 I-0.255 J-0.319 +N1000 G3 X7.496 Y8.186 I0.412 J-0.124 +N1005 G2 X11.1 Y0.058 I-7.496 J-8.186 +N1010 G1 X13.818 Y-1.511 +N1015 G3 X5.6 Y12.722 I-13.818 J1.511 +N1020 G1 Y9.584 +N1025 G2 X7.496 Y8.186 I-5.6 J-9.584 +N1030 X7.603 Y7.741 I-0.276 J-0.301 +N1035 G3 X7.694 Y7.292 I0.404 J-0.152 +N1040 G2 X10.598 Y-0.23 I-7.694 J-7.292 +N1045 G1 X14.212 Y-2.317 +N1050 G3 X5.1 Y13.467 I-14.212 J2.317 +N1055 G1 Y9.292 +N1060 G2 X7.694 Y7.292 I-5.1 J-9.293 +N1065 X7.768 Y6.84 I-0.297 J-0.281 +N1070 G3 X7.826 Y6.385 I0.393 J-0.181 +N1075 G2 X10.096 Y-0.276 I-7.826 J-6.385 +N1080 G3 X10.296 Y-0.633 I0.4 J-0.011 +N1085 G1 X14.087 Y-2.822 +N1090 G3 X14.681 Y-2.543 I0.2 J0.346 +N1095 X5.138 Y13.986 I-14.681 J2.544 +N1100 X4.6 Y13.611 I-0.138 J-0.375 +N1105 G1 Y9.233 +N1110 G3 X4.81 Y8.881 I0.4 J0. +N1115 G2 X7.826 Y6.385 I-4.81 J-8.881 +N1120 G0 Z2. +N1125 X-7.214 Y10.694 +N1130 G1 Z1. F1000. +N1135 G3 X-12.899 Y0.174 Z0.566 I7.214 J-10.694 F200. +N1140 G1 X-12.083 Y0.645 Z0.533 +N1145 G2 X-6.6 Y10.142 Z0.135 I12.083 J-0.645 +N1150 G1 Y11.084 Z0.103 +N1155 G3 X-12.899 Y0.174 Z-0.357 I6.6 J-11.084 +N1160 G1 X-12.083 Y0.645 Z-0.39 +N1165 G2 X-6.6 Y10.142 Z-0.787 I12.083 J-0.645 +N1170 G1 Y11.084 Z-0.82 +N1175 G3 X-12.899 Y0.174 Z-1.28 I6.6 J-11.084 +N1180 G1 X-12.083 Y0.645 Z-1.313 +N1185 G2 X-6.842 Y9.98 Z-1.7 I12.083 J-0.645 +N1190 X-6.6 Y10.142 I6.842 J-9.98 F1000. +N1195 G1 Y11.084 +N1200 G3 X-12.899 Y0.174 I6.6 J-11.084 +N1205 G1 X-12.083 Y0.645 +N1210 G2 X-6.842 Y9.98 I12.083 J-0.645 +N1215 X-6.46 Y9.933 I0.164 J-0.239 +N1220 G3 X-6.1 Y10.069 I0.154 J0.136 +N1225 G1 Y11.931 +N1230 G3 X-13.383 Y-0.683 I6.1 J-11.931 +N1235 G1 X-11.595 Y0.349 +N1240 G2 X-6.1 Y9.867 I11.595 J-0.349 +N1245 G1 Y10.069 +N1250 G2 X-5.85 Y10.444 I0.406 J0. +N1255 G3 X-5.6 Y10.819 I-0.156 J0.375 +N1260 G1 Y12.722 +N1265 G3 X-13.818 Y-1.511 I5.6 J-12.722 +N1270 G1 X-11.1 Y0.058 +N1275 G2 X-5.6 Y9.584 I11.1 J-0.058 +N1280 G1 Y10.819 +N1285 G2 X-5.35 Y11.194 I0.406 J0. +N1290 G3 X-5.1 Y11.569 I-0.156 J0.375 +N1295 G1 Y13.467 +N1300 G3 X-14.212 Y-2.317 I5.1 J-13.467 +N1305 G1 X-10.598 Y-0.23 +N1310 G2 X-5.1 Y9.292 I10.598 J0.23 +N1315 G1 Y11.569 +N1320 G2 X-4.85 Y11.944 I0.406 J0. +N1325 G3 X-4.6 Y12.319 I-0.156 J0.375 +N1330 G1 Y13.611 +N1335 G3 X-5.138 Y13.986 I-0.4 J0. +N1340 X-14.681 Y-2.543 I5.138 J-13.986 +N1345 X-14.087 Y-2.822 I0.394 J0.068 +N1350 G1 X-10.296 Y-0.633 +N1355 G3 X-10.096 Y-0.276 I-0.2 J0.346 +N1360 G2 X-4.81 Y8.881 I10.096 J0.276 +N1365 G3 X-4.6 Y9.233 I-0.19 J0.352 +N1370 G1 Y12.319 +N1375 G0 Z2. +N1380 X-0.228 Y-12.098 +N1385 G1 Z1. F1000. +N1390 G2 X-5.483 Y-10.787 Z0.809 I0.228 J12.098 F200. +N1395 G1 X-6.299 Y-11.258 Z0.776 +N1400 G3 X6.299 Z0.317 I6.299 J11.258 +N1405 G1 X5.483 Y-10.787 Z0.284 +N1410 G2 X-5.483 Z-0.114 I-5.483 J10.787 +N1415 G1 X-6.299 Y-11.258 Z-0.146 +N1420 G3 X6.299 Z-0.606 I6.299 J11.258 +N1425 G1 X5.483 Y-10.787 Z-0.639 +N1430 G2 X-5.483 Z-1.036 I-5.483 J10.787 +N1435 G1 X-6.299 Y-11.258 Z-1.069 +N1440 G3 X6.299 Z-1.529 I6.299 J11.258 +N1445 G1 X5.483 Y-10.787 Z-1.562 +N1450 G2 X1.727 Y-11.976 Z-1.7 I-5.483 J10.787 +N1455 X-5.483 Y-10.787 I-1.727 J11.976 F1000. +N1460 G1 X-6.299 Y-11.258 +N1465 G3 X6.299 I6.299 J11.258 +N1470 G1 X5.483 Y-10.787 +N1475 G2 X1.727 Y-11.976 I-5.483 J10.787 +N1480 X1.316 Y-11.777 I-0.058 J0.404 +N1485 G3 X0.911 Y-11.564 I-0.371 J-0.215 +N1490 G2 X-5.495 Y-10.216 I-0.911 J11.564 +N1495 G1 X-7.283 Y-11.248 +N1500 G3 X7.283 I7.283 J11.248 +N1505 G1 X5.495 Y-10.216 +N1510 G2 X0.911 Y-11.564 I-5.495 J10.216 +N1515 X0.512 Y-11.338 I-0.032 J0.407 +N1520 G3 X0.122 Y-11.099 I-0.386 J-0.191 +N1525 G2 X-5.5 Y-9.642 I-0.122 J11.099 +N1530 G1 X-8.218 Y-11.211 +N1535 G3 X8.218 I8.218 J11.211 +N1540 G1 X5.5 Y-9.642 +N1545 G2 X0.122 Y-11.099 I-5.5 J9.642 +N1550 X-0.26 Y-10.847 I-0.004 J0.409 +N1555 G3 X-0.633 Y-10.581 I-0.399 J-0.165 +N1560 G2 X-5.498 Y-9.063 I0.633 J10.581 +N1565 G1 X-9.112 Y-11.15 +N1570 G3 X9.112 I9.112 J11.15 +N1575 G1 X5.498 Y-9.063 +N1580 G2 X-0.633 Y-10.581 I-5.498 J9.063 +N1585 X-0.996 Y-10.302 I0.024 J0.408 +N1590 G3 X-1.349 Y-10.009 I-0.411 J-0.136 +N1595 G2 X-5.287 Y-8.606 I1.349 J10.009 +N1600 G3 X-5.696 Y-8.6 I-0.209 J-0.341 +N1605 G1 X-9.487 Y-10.789 +N1610 G3 X-9.543 Y-11.443 I0.2 J-0.346 +N1615 X9.543 I9.543 J11.443 +N1620 X9.487 Y-10.789 I-0.256 J0.307 +N1625 G1 X5.696 Y-8.6 +N1630 G3 X5.287 Y-8.606 I-0.2 J-0.346 +N1635 G2 X-1.349 Y-10.009 I-5.287 J8.606 +N1640 G0 Z2. +N1650 M5 +(303_CONTOURNAGE_FINITION) +N1655 M1 +N1660 M61 Q3 +N1665 T2 +N1670 S60000 M3 +N1675 G54 +N1685 G0 X-0.3 Y23.4 +N1690 G1 Z2. F200. +N1695 Z-1.4 +N1700 G19 G2 Y23.1 Z-1.7 J-0.3 K0. +N1705 G1 Y22.8 F400. +N1710 G17 G3 X0. Y22.5 I0.3 J0. +N1715 G2 X6.287 Y21.604 I0. J-22.5 +N1720 X6.618 Y21.463 I-0.419 J-1.44 +N1725 G1 X15.278 Y16.463 +N1730 G2 X15.566 Y16.247 I-0.75 J-1.299 +N1735 X21.853 Y5.357 I-15.566 J-16.247 +N1740 X21.896 Y5. I-1.457 J-0.357 +N1745 G1 Y-5. +N1750 G2 X21.853 Y-5.357 I-1.5 J0. +N1755 X15.566 Y-16.247 I-21.853 J5.357 +N1760 X15.278 Y-16.463 I-1.038 J1.083 +N1765 G1 X6.618 Y-21.463 +N1770 G2 X6.287 Y-21.604 I-0.75 J1.299 +N1775 X-6.287 I-6.287 J21.604 +N1780 X-6.618 Y-21.463 I0.419 J1.44 +N1785 G1 X-15.278 Y-16.463 +N1790 G2 X-15.566 Y-16.247 I0.75 J1.299 +N1795 X-21.853 Y-5.357 I15.566 J16.247 +N1800 X-21.896 Y-5. I1.457 J0.357 +N1805 G1 Y5. +N1810 G2 X-21.853 Y5.357 I1.5 J0. +N1815 X-15.566 Y16.247 I21.853 J-5.357 +N1820 X-15.278 Y16.463 I1.038 J-1.083 +N1825 G1 X-6.618 Y21.463 +N1830 G2 X-6.287 Y21.604 I0.75 J-1.299 +N1835 X0. Y22.5 I6.287 J-21.604 +N1840 G3 X0.3 Y22.8 I0. J0.3 +N1845 G1 Y23.1 +N1850 G19 G3 Y23.4 Z-1.4 J0. K0.3 +N1855 G0 Z1. +N1860 G17 +(304_POCHES_FINITION) +N1865 G0 Z2. +N1870 X2.22 Y-3.46 +N1875 G1 Z-1.4 F200. +N1880 X2.222 Y-3.463 Z-1.447 +N1885 X2.229 Y-3.472 Z-1.493 +N1890 X2.24 Y-3.486 Z-1.536 +N1895 X2.254 Y-3.506 Z-1.576 +N1900 X2.273 Y-3.53 Z-1.612 +N1905 X2.294 Y-3.559 Z-1.643 +N1910 X2.318 Y-3.591 Z-1.667 +N1915 X2.344 Y-3.626 Z-1.685 +N1920 X2.372 Y-3.662 Z-1.696 +N1925 X2.4 Y-3.7 Z-1.7 +N1930 X2.58 Y-3.94 F400. +N1935 G3 X3. Y-4. I0.24 J0.18 +N1940 X-3. Y4. I-3. J4. +N1945 X3. Y-4. I3. J-4. +N1950 X3.06 Y-3.58 I-0.18 J0.24 +N1955 G1 X2.88 Y-3.34 +N1960 X2.852 Y-3.302 Z-1.696 +N1965 X2.824 Y-3.266 Z-1.685 +N1970 X2.798 Y-3.231 Z-1.667 +N1975 X2.774 Y-3.199 Z-1.643 +N1980 X2.753 Y-3.17 Z-1.612 +N1985 X2.734 Y-3.146 Z-1.576 +N1990 X2.72 Y-3.126 Z-1.536 +N1995 X2.709 Y-3.112 Z-1.493 +N2000 X2.702 Y-3.103 Z-1.447 +N2005 X2.7 Y-3.1 Z-1.4 +N2010 G0 Z2. +N2015 X5.833 Y-12.84 +N2020 G1 Z-1.4 F200. +N2025 X5.835 Y-12.844 Z-1.447 +N2030 X5.839 Y-12.854 Z-1.493 +N2035 X5.847 Y-12.87 Z-1.536 +N2040 X5.858 Y-12.892 Z-1.576 +N2045 X5.871 Y-12.92 Z-1.612 +N2050 X5.887 Y-12.952 Z-1.643 +N2055 X5.904 Y-12.988 Z-1.667 +N2060 X5.923 Y-13.027 Z-1.685 +N2065 X5.943 Y-13.069 Z-1.696 +N2070 X5.963 Y-13.111 Z-1.7 +N2075 X6.093 Y-13.381 F400. +N2080 G3 X6.493 Y-13.522 I0.27 J0.13 +N2085 X9.607 Y-11.519 I-6.493 J13.522 +N2090 X9.537 Y-10.702 I-0.32 J0.384 +N2095 G1 X5.746 Y-8.514 +N2100 G3 X5.234 Y-8.521 I-0.25 J-0.433 +N2105 G2 X-5.234 I-5.234 J8.521 +N2110 G3 X-5.746 Y-8.514 I-0.262 J-0.426 +N2115 G1 X-9.537 Y-10.702 +N2120 G3 X-9.607 Y-11.519 I0.25 J-0.433 +N2125 X6.493 Y-13.522 I9.607 J11.519 +N2130 X6.634 Y-13.122 I-0.13 J0.27 +N2135 G1 X6.504 Y-12.851 +N2140 X6.483 Y-12.809 Z-1.696 +N2145 X6.464 Y-12.768 Z-1.685 +N2150 X6.445 Y-12.728 Z-1.667 +N2155 X6.427 Y-12.692 Z-1.643 +N2160 X6.412 Y-12.66 Z-1.612 +N2165 X6.399 Y-12.632 Z-1.576 +N2170 X6.388 Y-12.61 Z-1.536 +N2175 X6.38 Y-12.594 Z-1.493 +N2180 X6.375 Y-12.584 Z-1.447 +N2185 X6.374 Y-12.581 Z-1.4 +N2190 G0 Z2. +N2195 X14.082 Y0.77 +N2200 G1 Z-1.4 F200. +N2205 X14.086 Y0.771 Z-1.447 +N2210 X14.097 Y0.772 Z-1.493 +N2215 X14.115 Y0.773 Z-1.536 +N2220 X14.139 Y0.775 Z-1.576 +N2225 X14.17 Y0.777 Z-1.612 +N2230 X14.205 Y0.78 Z-1.643 +N2235 X14.245 Y0.783 Z-1.667 +N2240 X14.289 Y0.786 Z-1.685 +N2245 X14.334 Y0.79 Z-1.696 +N2250 X14.381 Y0.793 Z-1.7 +N2255 X14.68 Y0.816 F400. +N2260 G3 X14.957 Y1.138 I-0.023 J0.299 +N2265 X5.172 Y14.08 I-14.957 J-1.138 +N2270 X4.5 Y13.611 I-0.172 J-0.469 +N2275 G1 Y9.233 +N2280 G3 X4.762 Y8.793 I0.5 J0. +N2285 G2 X9.996 Y-0.273 I-4.762 J-8.793 +N2290 G3 X10.246 Y-0.719 I0.5 J-0.014 +N2295 G1 X14.037 Y-2.908 +N2300 G3 X14.78 Y-2.561 I0.25 J0.433 +N2305 X14.957 Y1.138 I-14.78 J2.561 +N2310 X14.635 Y1.414 I-0.299 J-0.023 +N2315 G1 X14.336 Y1.391 +N2320 X14.289 Y1.388 Z-1.696 +N2325 X14.243 Y1.384 Z-1.685 +N2330 X14.2 Y1.381 Z-1.667 +N2335 X14.16 Y1.378 Z-1.643 +N2340 X14.124 Y1.375 Z-1.612 +N2345 X14.094 Y1.373 Z-1.576 +N2350 X14.069 Y1.371 Z-1.536 +N2355 X14.051 Y1.37 Z-1.493 +N2360 X14.04 Y1.369 Z-1.447 +N2365 X14.037 Z-1.4 +N2370 G0 Z2. +N2375 X-7.708 Y11.81 +N2380 G1 Z-1.4 F200. +N2385 X-7.71 Y11.813 Z-1.447 +N2390 X-7.717 Y11.822 Z-1.493 +N2395 X-7.727 Y11.837 Z-1.536 +N2400 X-7.741 Y11.858 Z-1.576 +N2405 X-7.758 Y11.883 Z-1.612 +N2410 X-7.778 Y11.912 Z-1.643 +N2415 X-7.801 Y11.946 Z-1.667 +N2420 X-7.825 Y11.981 Z-1.685 +N2425 X-7.851 Y12.019 Z-1.696 +N2430 X-7.878 Y12.058 Z-1.7 +N2435 X-8.047 Y12.306 F400. +N2440 G3 X-8.464 Y12.384 I-0.248 J-0.169 +N2445 X-14.78 Y-2.561 I8.464 J-12.384 +N2450 X-14.037 Y-2.908 I0.493 J0.085 +N2455 G1 X-10.246 Y-0.719 +N2460 G3 X-9.996 Y-0.273 I-0.25 J0.433 +N2465 G2 X-4.762 Y8.793 I9.996 J0.273 +N2470 G3 X-4.5 Y9.233 I-0.238 J0.44 +N2475 G1 Y13.611 +N2480 G3 X-5.172 Y14.08 I-0.5 J0. +N2485 X-8.464 Y12.384 I5.172 J-14.08 +N2490 X-8.542 Y11.967 I0.169 J-0.248 +N2495 G1 X-8.373 Y11.719 +N2500 X-8.346 Y11.681 Z-1.696 +N2505 X-8.321 Y11.643 Z-1.685 +N2510 X-8.296 Y11.607 Z-1.667 +N2515 X-8.273 Y11.574 Z-1.643 +N2520 X-8.253 Y11.544 Z-1.612 +N2525 X-8.236 Y11.519 Z-1.576 +N2530 X-8.222 Y11.499 Z-1.536 +N2535 X-8.212 Y11.484 Z-1.493 +N2540 X-8.206 Y11.475 Z-1.447 +N2545 X-8.204 Y11.472 Z-1.4 +N2550 G0 Z1. +N2560 M9 +N2565 G53 Z0. +N2570 G53 X0. Y0. +N2575 M30 +% diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/list_gcode.py b/rootfs/board/common/rootfs_overlay/root/ngc_test/list_gcode.py new file mode 100644 index 0000000..0ce6e4a --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/list_gcode.py @@ -0,0 +1,6 @@ +with open('micro5_3axes_ebauche.ngc', 'r') as f: + words = f.read().split() + +words = filter(None, words) +words = filter(lambda w: w[0] == 'G' or w[0] == 'M', words) +print(set(words)) \ No newline at end of file diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/micro5_3axes_finition.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/micro5_3axes_finition.ngc new file mode 100644 index 0000000..23548b9 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/micro5_3axes_finition.ngc @@ -0,0 +1,31530 @@ +;----------- Tool list ----------- +;T01 R1. L+6.(T1 Fraise 2 tailles D 2) +;--------------------------------- +G17 G90 +G53 G01 Z+24 F1000 +G54 +; - T1 Fraise 2 tailles D 2 +G17 +T1 M6 +S50000 M03 M08 +; - Surfaage en spirale calotte +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G00 X+8.288 Y-31.76 Z+1.665 B19.325 C225.113 +G01 X+9.456 Y-30.588 Z-3.053 F700 +G01 X+9.183 Y-30.316 Z-3.055 B19.33 C223.638 F2000 +G01 X+8.883 Y-29.984 Z-3.053 B19.325 C221.921 +G01 X+8.667 Y-29.746 Z-3.055 B19.33 C220.687 +G01 X+8.391 Y-29.408 Z-3.053 B19.325 C219.018 +G01 X+8.18 Y-29.149 Z-3.055 B19.33 C217.737 +G01 X+7.93 Y-28.808 Z-3.053 B19.325 C216.115 +G01 X+7.725 Y-28.529 Z-3.055 B19.331 C214.786 +G01 X+7.499 Y-28.185 Z-3.053 B19.325 C213.211 +G01 X+7.293 Y-27.87 Z-3.055 B19.33 C211.769 +G01 X+7.138 Y-27.605 Z-3.053 B19.324 C210.593 +G01 X+6.982 Y-27.34 Z-3.054 B19.326 C209.417 +G01 X+6.913 Y-27.221 Z-3.055 B19.331 C208.884 +G01 X+6.77 Y-26.946 Z-3.053 B19.325 C207.699 +G01 X+6.628 Y-26.671 Z-3.054 B19.326 C206.513 +G01 X+6.558 Y-26.538 Z-3.055 B19.331 C205.933 +G01 X+6.432 Y-26.262 Z-3.053 B19.325 C204.772 +G01 X+6.307 Y-25.985 Z-3.054 B19.326 C203.61 +G01 X+6.24 Y-25.837 Z-3.055 B19.331 C202.983 +G01 X+6.13 Y-25.561 Z-3.053 B19.325 C201.845 +G01 X+6.022 Y-25.284 Z-3.054 C200.707 +G01 X+5.957 Y-25.121 Z-3.055 B19.331 C200.032 +G01 X+5.864 Y-24.845 Z-3.053 B19.325 C198.918 +G01 X+5.772 Y-24.569 Z-3.054 C197.804 +G01 X+5.712 Y-24.392 Z-3.055 B19.331 C197.081 +G01 X+5.635 Y-24.117 Z-3.053 B19.325 C195.991 +G01 X+5.559 Y-23.842 Z-3.054 C194.901 +G01 X+5.505 Y-23.65 Z-3.055 B19.331 C194.13 +G01 X+5.444 Y-23.378 Z-3.053 B19.325 C193.064 +G01 X+5.383 Y-23.106 Z-3.054 C191.997 +G01 X+5.337 Y-22.899 Z-3.055 B19.331 C191.179 +G01 X+5.29 Y-22.631 Z-3.053 B19.325 C190.137 +G01 X+5.245 Y-22.362 Z-3.054 B19.324 C189.094 +G01 X+5.207 Y-22.14 Z-3.055 B19.331 C188.228 +G01 X+5.175 Y-21.876 Z-3.053 B19.325 C187.21 +G01 X+5.144 Y-21.611 B19.324 C186.191 +G01 X+5.116 Y-21.376 Z-3.055 B19.331 C185.278 +G01 X+5.099 Y-21.117 Z-3.054 B19.325 C184.283 +G01 X+5.082 Y-20.857 Z-3.053 B19.324 C183.288 +G01 X+5.065 Y-20.608 Z-3.055 B19.331 C182.327 +G01 X+5.061 Y-20.354 Z-3.054 B19.325 C181.356 +G01 X+5.058 Y-20.1 Z-3.053 B19.324 C180.384 +G01 X+5.054 Y-19.838 Z-3.055 B19.331 C179.376 +G01 X+5.062 Y-19.591 Z-3.054 B19.325 C178.429 +G01 X+5.072 Y-19.343 Z-3.053 B19.324 C177.481 +G01 X+5.082 Y-19.069 Z-3.055 B19.331 C176.425 +G01 X+5.103 Y-18.829 Z-3.054 B19.325 C175.502 +G01 X+5.124 Y-18.588 Z-3.053 B19.324 C174.578 +G01 X+5.149 Y-18.302 Z-3.055 B19.33 C173.474 +G01 X+5.182 Y-18.069 Z-3.054 B19.325 C172.575 +G01 X+5.215 Y-17.836 Z-3.053 B19.324 C171.675 +G01 X+5.257 Y-17.54 Z-3.055 B19.33 C170.524 +G01 X+5.3 Y-17.315 Z-3.054 B19.325 C169.648 +G01 X+5.344 Y-17.09 Z-3.053 B19.324 C168.772 +G01 X+5.403 Y-16.785 Z-3.055 B19.33 C167.573 +G01 X+5.51 Y-16.352 Z-3.053 B19.323 C165.868 +G01 X+5.588 Y-16.037 Z-3.055 B19.33 C164.622 +G01 X+5.713 Y-15.622 Z-3.053 B19.323 C162.965 +G01 X+5.811 Y-15.301 Z-3.055 B19.33 C161.671 +G01 X+5.953 Y-14.904 Z-3.053 B19.323 C160.062 +G01 X+6.071 Y-14.576 Z-3.055 B19.33 C158.72 +G01 X+6.229 Y-14.2 Z-3.053 B19.323 C157.159 +G01 X+6.369 Y-13.867 Z-3.055 B19.33 C155.769 +G01 X+6.486 Y-13.623 Z-3.053 B19.325 C154.733 +G01 X+6.603 Y-13.38 Z-3.054 B19.326 C153.697 +G01 X+6.703 Y-13.173 Z-3.055 B19.329 C152.819 +G01 X+6.829 Y-12.941 Z-3.054 B19.325 C151.806 +G01 X+6.956 Y-12.709 Z-3.053 B19.326 C150.793 +G01 X+7.072 Y-12.498 Z-3.055 B19.329 C149.877 +G01 X+7.207 Y-12.278 Z-3.054 B19.325 C148.883 +G01 X+7.342 Y-12.058 Z-3.053 C147.89 +G01 X+7.475 Y-11.842 Z-3.055 B19.33 C146.924 +G01 X+7.618 Y-11.635 Z-3.054 B19.325 C145.955 +G01 X+7.761 Y-11.427 Z-3.053 C144.986 +G01 X+7.912 Y-11.208 Z-3.055 B19.33 C143.97 +G01 X+8.061 Y-11.013 Z-3.054 B19.325 C143.027 +G01 X+8.211 Y-10.818 Z-3.053 C142.083 +G01 X+8.381 Y-10.597 Z-3.055 B19.33 C141.017 +G01 X+8.536 Y-10.415 Z-3.054 B19.325 C140.098 +G01 X+8.691 Y-10.233 Z-3.053 C139.18 +G01 X+8.88 Y-10.012 Z-3.055 B19.33 C138.064 +G01 X+9.04 Y-9.842 Z-3.054 B19.325 C137.171 +G01 X+9.2 Y-9.673 Z-3.053 C136.276 +G01 X+9.409 Y-9.453 Z-3.055 B19.33 C135.114 +G01 X+9.573 Y-9.296 Z-3.054 B19.326 C134.243 +G01 X+9.737 Y-9.139 Z-3.053 B19.325 C133.373 +G01 X+9.966 Y-8.921 Z-3.055 B19.33 C132.163 +G01 X+10.301 Y-8.633 Z-3.053 B19.325 C130.47 +G01 X+10.549 Y-8.419 Z-3.055 B19.33 C129.212 +G01 X+10.889 Y-8.157 Z-3.053 B19.325 C127.566 +G01 X+11.158 Y-7.948 Z-3.055 B19.331 C126.261 +G01 X+11.5 Y-7.71 Z-3.053 B19.325 C124.663 +G01 X+11.79 Y-7.509 Z-3.055 B19.331 C123.31 +G01 X+12.134 Y-7.296 Z-3.053 B19.325 C121.76 +G01 X+12.444 Y-7.103 Z-3.055 B19.331 C120.36 +G01 X+12.718 Y-6.952 Z-3.053 B19.324 C119.163 +G01 X+12.992 Y-6.801 Z-3.054 B19.326 C117.965 +G01 X+13.118 Y-6.731 Z-3.055 B19.331 C117.409 +G01 X+13.394 Y-6.597 Z-3.053 B19.325 C116.236 +G01 X+13.67 Y-6.463 Z-3.054 B19.326 C115.062 +G01 X+13.81 Y-6.394 Z-3.055 B19.331 C114.458 +G01 X+14.087 Y-6.277 Z-3.053 B19.325 C113.308 +G01 X+14.364 Y-6.16 Z-3.054 C112.159 +G01 X+14.519 Y-6.094 Z-3.055 B19.331 C111.507 +G01 X+14.795 Y-5.993 Z-3.053 B19.325 C110.381 +G01 X+15.072 Y-5.892 Z-3.054 C109.255 +G01 X+15.242 Y-5.83 Z-3.055 B19.331 C108.556 +G01 X+15.517 Y-5.745 Z-3.053 B19.325 C107.454 +G01 X+15.793 Y-5.661 Z-3.054 C106.352 +G01 X+15.978 Y-5.604 Z-3.055 B19.331 C105.606 +G01 X+16.251 Y-5.535 Z-3.053 B19.325 C104.527 +G01 X+16.525 Y-5.466 Z-3.054 C103.449 +G01 X+16.724 Y-5.416 Z-3.055 B19.331 C102.655 +G01 X+16.995 Y-5.362 Z-3.053 B19.325 C101.6 +G01 X+17.265 Y-5.309 Z-3.054 C100.546 +G01 X+17.479 Y-5.267 Z-3.055 B19.331 C99.704 +G01 X+17.746 Y-5.228 Z-3.053 B19.325 C98.673 +G01 X+18.013 Y-5.19 B19.324 C97.643 +G01 X+18.241 Y-5.157 Z-3.055 B19.331 C96.753 +G01 X+18.503 Y-5.132 Z-3.054 B19.325 C95.746 +G01 X+18.765 Y-5.108 Z-3.053 B19.324 C94.739 +G01 X+19.008 Y-5.086 Z-3.055 B19.331 C93.802 +G01 X+19.264 Y-5.075 Z-3.054 B19.325 C92.819 +G01 X+19.521 Y-5.065 Z-3.053 B19.324 C91.836 +G01 X+19.777 Y-5.054 Z-3.055 B19.331 C90.851 +G01 X+20.027 Y-5.057 Z-3.054 B19.325 C89.892 +G01 X+20.278 Y-5.06 Z-3.053 B19.324 C88.933 +G01 X+20.546 Y-5.063 Z-3.055 B19.331 C87.901 +G01 X+20.79 Y-5.078 Z-3.054 B19.325 C86.965 +G01 X+21.035 Y-5.093 Z-3.053 B19.324 C86.03 +G01 X+21.315 Y-5.111 Z-3.055 B19.33 C84.95 +G01 X+21.551 Y-5.137 Z-3.054 B19.325 C84.038 +G01 X+21.788 Y-5.165 Z-3.053 B19.324 C83.126 +G01 X+22.079 Y-5.198 Z-3.055 B19.33 C81.999 +G01 X+22.308 Y-5.236 Z-3.054 B19.325 C81.111 +G01 X+22.537 Y-5.274 Z-3.053 B19.324 C80.223 +G01 X+22.838 Y-5.325 Z-3.055 B19.33 C79.048 +G01 X+23.28 Y-5.422 Z-3.053 B19.324 C77.32 +G01 X+23.59 Y-5.49 Z-3.055 B19.33 C76.097 +G01 X+24.014 Y-5.607 Z-3.053 B19.323 C74.417 +G01 X+24.332 Y-5.694 Z-3.055 B19.33 C73.146 +G01 X+24.738 Y-5.829 Z-3.053 B19.323 C71.514 +G01 X+25.063 Y-5.936 Z-3.055 B19.33 C70.196 +G01 X+25.45 Y-6.087 Z-3.053 B19.323 C68.61 +G01 X+25.78 Y-6.216 Z-3.055 B19.33 C67.245 +G01 X+26.03 Y-6.327 Z-3.053 B19.325 C66.197 +G01 X+26.279 Y-6.44 Z-3.054 B19.326 C65.149 +G01 X+26.482 Y-6.531 Z-3.055 B19.33 C64.294 +G01 X+26.72 Y-6.653 Z-3.053 B19.325 C63.27 +G01 X+26.958 Y-6.775 Z-3.054 B19.326 C62.245 +G01 X+27.167 Y-6.883 Z-3.055 B19.329 C61.352 +G01 X+27.393 Y-7.014 Z-3.054 B19.325 C60.347 +G01 X+27.619 Y-7.145 Z-3.053 B19.326 C59.342 +G01 X+27.833 Y-7.269 Z-3.055 B19.33 C58.4 +G01 X+28.046 Y-7.408 Z-3.054 B19.325 C57.419 +G01 X+28.26 Y-7.547 Z-3.053 C56.438 +G01 X+28.478 Y-7.689 Z-3.055 B19.33 C55.447 +G01 X+28.679 Y-7.835 Z-3.054 B19.325 C54.491 +G01 X+28.88 Y-7.982 Z-3.053 C53.535 +G01 X+29.1 Y-8.142 Z-3.055 B19.33 C52.494 +G01 X+29.289 Y-8.294 Z-3.054 B19.325 C51.563 +G01 X+29.477 Y-8.447 Z-3.053 C50.631 +G01 X+29.699 Y-8.626 Z-3.055 B19.33 C49.54 +G01 X+29.874 Y-8.784 Z-3.054 B19.325 C48.634 +G01 X+30.05 Y-8.942 Z-3.053 C47.728 +G01 X+30.271 Y-9.141 Z-3.055 B19.33 C46.589 +G01 X+30.434 Y-9.303 Z-3.054 B19.325 C45.707 +G01 X+30.597 Y-9.465 Z-3.053 C44.825 +G01 X+30.817 Y-9.684 Z-3.055 B19.33 C43.638 +G01 X+31.117 Y-10.016 Z-3.053 B19.325 C41.921 +G01 X+31.333 Y-10.254 Z-3.055 B19.33 C40.687 +G01 X+31.609 Y-10.592 Z-3.053 B19.325 C39.018 +G01 X+31.82 Y-10.851 Z-3.055 B19.33 C37.737 +G01 X+32.07 Y-11.192 Z-3.053 B19.325 C36.115 +G01 X+32.275 Y-11.471 Z-3.055 B19.331 C34.786 +G01 X+32.501 Y-11.814 Z-3.053 B19.325 C33.211 +G01 X+32.707 Y-12.129 Z-3.055 B19.33 C31.769 +G01 X+32.862 Y-12.394 Z-3.053 B19.324 C30.593 +G01 X+33.018 Y-12.66 Z-3.054 B19.326 C29.417 +G01 X+33.087 Y-12.779 Z-3.055 B19.331 C28.884 +G01 X+33.23 Y-13.054 Z-3.053 B19.325 C27.699 +G01 X+33.372 Y-13.329 Z-3.054 B19.326 C26.513 +G01 X+33.442 Y-13.462 Z-3.055 B19.331 C25.933 +G01 X+33.568 Y-13.738 Z-3.053 B19.325 C24.772 +G01 X+33.693 Y-14.015 Z-3.054 B19.326 C23.61 +G01 X+33.76 Y-14.163 Z-3.055 B19.331 C22.983 +G01 X+33.87 Y-14.439 Z-3.053 B19.325 C21.845 +G01 X+33.978 Y-14.716 Z-3.054 C20.707 +G01 X+34.043 Y-14.879 Z-3.055 B19.331 C20.032 +G01 X+34.136 Y-15.155 Z-3.053 B19.325 C18.918 +G01 X+34.228 Y-15.431 Z-3.054 C17.804 +G01 X+34.288 Y-15.608 Z-3.055 B19.331 C17.081 +G01 X+34.365 Y-15.883 Z-3.053 B19.325 C15.991 +G01 X+34.441 Y-16.157 Z-3.054 C14.901 +G01 X+34.495 Y-16.35 Z-3.055 B19.331 C14.13 +G01 X+34.556 Y-16.622 Z-3.053 B19.325 C13.064 +G01 X+34.617 Y-16.894 Z-3.054 C11.997 +G01 X+34.663 Y-17.101 Z-3.055 B19.331 C11.179 +G01 X+34.71 Y-17.369 Z-3.053 B19.325 C10.137 +G01 X+34.755 Y-17.638 Z-3.054 B19.324 C9.094 +G01 X+34.793 Y-17.859 Z-3.055 B19.331 C8.228 +G01 X+34.825 Y-18.124 Z-3.053 B19.325 C7.21 +G01 X+34.856 Y-18.388 B19.324 C6.191 +G01 X+34.884 Y-18.624 Z-3.055 B19.331 C5.278 +G01 X+34.901 Y-18.883 Z-3.054 B19.325 C4.283 +G01 X+34.918 Y-19.143 Z-3.053 B19.324 C3.288 +G01 X+34.935 Y-19.392 Z-3.055 B19.331 C2.327 +G01 X+34.939 Y-19.646 Z-3.054 B19.325 C1.356 +G01 X+34.942 Y-19.9 Z-3.053 B19.324 C0.384 +G01 X+34.946 Y-20.161 Z-3.055 B19.331 C359.376 +G01 X+34.938 Y-20.409 Z-3.054 B19.325 C358.429 +G01 X+34.928 Y-20.657 Z-3.053 B19.324 C357.481 +G01 X+34.918 Y-20.931 Z-3.055 B19.331 C356.425 +G01 X+34.897 Y-21.171 Z-3.054 B19.325 C355.502 +G01 X+34.876 Y-21.412 Z-3.053 B19.324 C354.578 +G01 X+34.851 Y-21.697 Z-3.055 B19.33 C353.474 +G01 X+34.818 Y-21.93 Z-3.054 B19.325 C352.575 +G01 X+34.785 Y-22.164 Z-3.053 B19.324 C351.675 +G01 X+34.743 Y-22.46 Z-3.055 B19.33 C350.524 +G01 X+34.7 Y-22.685 Z-3.054 B19.325 C349.648 +G01 X+34.656 Y-22.91 Z-3.053 B19.324 C348.772 +G01 X+34.597 Y-23.215 Z-3.055 B19.33 C347.573 +G01 X+34.49 Y-23.648 Z-3.053 B19.323 C345.868 +G01 X+34.412 Y-23.962 Z-3.055 B19.33 C344.622 +G01 X+34.287 Y-24.377 Z-3.053 B19.323 C342.965 +G01 X+34.189 Y-24.699 Z-3.055 B19.33 C341.671 +G01 X+34.047 Y-25.095 Z-3.053 B19.323 C340.062 +G01 X+33.929 Y-25.423 Z-3.055 B19.33 C338.72 +G01 X+33.771 Y-25.8 Z-3.053 B19.323 C337.159 +G01 X+33.631 Y-26.133 Z-3.055 B19.33 C335.769 +G01 X+33.514 Y-26.377 Z-3.053 B19.325 C334.733 +G01 X+33.397 Y-26.62 Z-3.054 B19.326 C333.697 +G01 X+33.297 Y-26.827 Z-3.055 B19.329 C332.819 +G01 X+33.171 Y-27.059 Z-3.054 B19.325 C331.806 +G01 X+33.044 Y-27.29 Z-3.053 B19.326 C330.793 +G01 X+32.928 Y-27.502 Z-3.055 B19.329 C329.877 +G01 X+32.793 Y-27.722 Z-3.054 B19.325 C328.883 +G01 X+32.658 Y-27.942 Z-3.053 C327.89 +G01 X+32.525 Y-28.158 Z-3.055 B19.33 C326.924 +G01 X+32.382 Y-28.365 Z-3.054 B19.325 C325.955 +G01 X+32.239 Y-28.573 Z-3.053 C324.986 +G01 X+32.088 Y-28.792 Z-3.055 B19.33 C323.97 +G01 X+31.939 Y-28.987 Z-3.054 B19.325 C323.027 +G01 X+31.789 Y-29.181 Z-3.053 C322.083 +G01 X+31.62 Y-29.402 Z-3.055 B19.33 C321.017 +G01 X+31.464 Y-29.585 Z-3.054 B19.325 C320.098 +G01 X+31.309 Y-29.767 Z-3.053 C319.18 +G01 X+31.12 Y-29.988 Z-3.055 B19.33 C318.064 +G01 X+30.96 Y-30.158 Z-3.054 B19.325 C317.171 +G01 X+30.8 Y-30.327 Z-3.053 C316.276 +G01 X+30.591 Y-30.547 Z-3.055 B19.33 C315.114 +G01 X+30.427 Y-30.704 Z-3.054 B19.326 C314.243 +G01 X+30.263 Y-30.861 Z-3.053 B19.325 C313.373 +G01 X+30.034 Y-31.079 Z-3.055 B19.33 C312.163 +G01 X+29.699 Y-31.367 Z-3.053 B19.325 C310.47 +G01 X+29.451 Y-31.58 Z-3.055 B19.33 C309.212 +G01 X+29.111 Y-31.843 Z-3.053 B19.325 C307.566 +G01 X+28.842 Y-32.052 Z-3.055 B19.331 C306.261 +G01 X+28.5 Y-32.289 Z-3.053 B19.325 C304.663 +G01 X+28.21 Y-32.491 Z-3.055 B19.331 C303.31 +G01 X+27.866 Y-32.704 Z-3.053 B19.325 C301.76 +G01 X+27.556 Y-32.897 Z-3.055 B19.331 C300.36 +G01 X+27.282 Y-33.048 Z-3.053 B19.324 C299.163 +G01 X+27.008 Y-33.199 Z-3.054 B19.326 C297.965 +G01 X+26.882 Y-33.269 Z-3.055 B19.331 C297.409 +G01 X+26.606 Y-33.403 Z-3.053 B19.325 C296.236 +G01 X+26.33 Y-33.537 Z-3.054 B19.326 C295.062 +G01 X+26.19 Y-33.605 Z-3.055 B19.331 C294.458 +G01 X+25.913 Y-33.723 Z-3.053 B19.325 C293.308 +G01 X+25.636 Y-33.84 Z-3.054 C292.159 +G01 X+25.481 Y-33.906 Z-3.055 B19.331 C291.507 +G01 X+25.205 Y-34.007 Z-3.053 B19.325 C290.381 +G01 X+24.928 Y-34.108 Z-3.054 C289.255 +G01 X+24.758 Y-34.17 Z-3.055 B19.331 C288.556 +G01 X+24.483 Y-34.255 Z-3.053 B19.325 C287.454 +G01 X+24.207 Y-34.339 Z-3.054 C286.352 +G01 X+24.022 Y-34.396 Z-3.055 B19.331 C285.606 +G01 X+23.749 Y-34.465 Z-3.053 B19.325 C284.527 +G01 X+23.475 Y-34.533 Z-3.054 C283.449 +G01 X+23.276 Y-34.584 Z-3.055 B19.331 C282.655 +G01 X+23.005 Y-34.638 Z-3.053 B19.325 C281.6 +G01 X+22.735 Y-34.691 Z-3.054 C280.546 +G01 X+22.521 Y-34.733 Z-3.055 B19.331 C279.704 +G01 X+22.254 Y-34.772 Z-3.053 B19.325 C278.673 +G01 X+21.987 Y-34.81 B19.324 C277.643 +G01 X+21.759 Y-34.843 Z-3.055 B19.331 C276.753 +G01 X+21.497 Y-34.868 Z-3.054 B19.325 C275.746 +G01 X+21.235 Y-34.892 Z-3.053 B19.324 C274.739 +G01 X+20.992 Y-34.914 Z-3.055 B19.331 C273.802 +G01 X+20.736 Y-34.925 Z-3.054 B19.325 C272.819 +G01 X+20.479 Y-34.935 Z-3.053 B19.324 C271.836 +G01 X+20.223 Y-34.946 Z-3.055 B19.331 C270.851 +G01 X+19.973 Y-34.943 Z-3.054 B19.325 C269.892 +G01 X+19.722 Y-34.94 Z-3.053 B19.324 C268.933 +G01 X+19.454 Y-34.937 Z-3.055 B19.331 C267.9 +G01 X+19.21 Y-34.922 Z-3.054 B19.325 C266.965 +G01 X+18.965 Y-34.907 Z-3.053 B19.324 C266.03 +G01 X+18.686 Y-34.889 Z-3.055 B19.33 C264.95 +G01 X+18.449 Y-34.862 Z-3.054 B19.325 C264.038 +G01 X+18.212 Y-34.835 Z-3.053 B19.324 C263.126 +G01 X+17.921 Y-34.802 Z-3.055 B19.33 C261.999 +G01 X+17.692 Y-34.764 Z-3.054 B19.325 C261.111 +G01 X+17.463 Y-34.725 Z-3.053 B19.324 C260.223 +G01 X+17.162 Y-34.675 Z-3.055 B19.33 C259.048 +G01 X+16.72 Y-34.578 Z-3.053 B19.324 C257.32 +G01 X+16.41 Y-34.51 Z-3.055 B19.33 C256.097 +G01 X+15.986 Y-34.393 Z-3.053 B19.323 C254.417 +G01 X+15.668 Y-34.306 Z-3.055 B19.33 C253.146 +G01 X+15.262 Y-34.171 Z-3.053 B19.323 C251.514 +G01 X+14.937 Y-34.064 Z-3.055 B19.33 C250.195 +G01 X+14.55 Y-33.913 Z-3.053 B19.323 C248.61 +G01 X+14.22 Y-33.784 Z-3.055 B19.33 C247.245 +G01 X+13.97 Y-33.672 Z-3.053 B19.325 C246.197 +G01 X+13.721 Y-33.56 Z-3.054 B19.326 C245.149 +G01 X+13.518 Y-33.468 Z-3.055 B19.33 C244.294 +G01 X+13.28 Y-33.347 Z-3.053 B19.325 C243.27 +G01 X+13.042 Y-33.224 Z-3.054 B19.326 C242.245 +G01 X+12.833 Y-33.117 Z-3.055 B19.329 C241.352 +G01 X+12.607 Y-32.986 Z-3.054 B19.325 C240.347 +G01 X+12.381 Y-32.855 Z-3.053 B19.326 C239.342 +G01 X+12.167 Y-32.73 Z-3.055 B19.33 C238.4 +G01 X+11.954 Y-32.592 Z-3.054 B19.325 C237.419 +G01 X+11.74 Y-32.452 Z-3.053 C236.438 +G01 X+11.522 Y-32.31 Z-3.055 B19.33 C235.447 +G01 X+11.321 Y-32.164 Z-3.054 B19.325 C234.491 +G01 X+11.12 Y-32.018 Z-3.053 C233.535 +G01 X+10.9 Y-31.858 Z-3.055 B19.33 C232.494 +G01 X+10.711 Y-31.705 Z-3.054 B19.325 C231.563 +G01 X+10.523 Y-31.553 Z-3.053 C230.631 +G01 X+10.301 Y-31.373 Z-3.055 B19.33 C229.54 +G01 X+10.015 Y-31.117 Z-3.053 B19.324 C228.065 +G01 X+9.729 Y-30.859 Z-3.055 B19.33 C226.589 +G01 X+9.456 Y-30.588 Z-3.053 B19.324 C225.113 +G01 X+9.455 Y-30.454 Z-3.02 B19.198 C224.743 +G01 X+9.253 Y-30.252 Z-3.022 B19.203 C223.642 +G01 X+9.086 Y-30.069 Z-3.02 B19.198 C222.685 +G01 X+8.92 Y-29.885 C221.728 +G01 X+8.739 Y-29.685 Z-3.022 B19.203 C220.689 +G01 X+8.586 Y-29.498 Z-3.02 B19.198 C219.757 +G01 X+8.434 Y-29.311 C218.824 +G01 X+8.256 Y-29.093 Z-3.022 B19.203 C217.736 +G01 X+8.116 Y-28.903 Z-3.021 B19.198 C216.829 +G01 X+7.977 Y-28.713 Z-3.02 C215.921 +G01 X+7.803 Y-28.476 Z-3.022 B19.203 C214.785 +G01 X+7.677 Y-28.285 Z-3.021 B19.198 C213.902 +G01 X+7.551 Y-28.093 Z-3.02 C213.017 +G01 X+7.383 Y-27.837 Z-3.022 B19.203 C211.835 +G01 X+7.157 Y-27.452 Z-3.02 B19.198 C210.114 +G01 X+6.996 Y-27.177 Z-3.022 B19.203 C208.884 +G01 X+6.796 Y-26.792 Z-3.02 B19.198 C207.211 +G01 X+6.644 Y-26.498 Z-3.022 B19.203 C205.934 +G01 X+6.518 Y-26.223 Z-3.02 B19.197 C204.772 +G01 X+6.393 Y-25.947 Z-3.021 B19.198 C203.61 +G01 X+6.327 Y-25.802 Z-3.022 B19.204 C202.983 +G01 X+6.218 Y-25.526 Z-3.02 B19.197 C201.845 +G01 X+6.11 Y-25.251 Z-3.021 B19.198 C200.707 +G01 X+6.041 Y-25.073 Z-3.022 B19.203 C199.962 +G01 X+5.951 Y-24.807 Z-3.02 B19.197 C198.883 +G01 X+5.862 Y-24.54 Z-3.021 B19.198 C197.804 +G01 X+5.803 Y-24.365 Z-3.022 B19.204 C197.082 +G01 X+5.726 Y-24.092 Z-3.02 B19.197 C195.992 +G01 X+5.65 Y-23.818 Z-3.021 B19.198 C194.901 +G01 X+5.597 Y-23.629 Z-3.022 B19.204 C194.132 +G01 X+5.536 Y-23.358 Z-3.02 B19.197 C193.064 +G01 X+5.475 Y-23.087 C191.997 +G01 X+5.429 Y-22.882 Z-3.022 B19.204 C191.181 +G01 X+5.383 Y-22.615 Z-3.02 B19.197 C190.138 +G01 X+5.338 Y-22.347 C189.094 +G01 X+5.3 Y-22.128 Z-3.022 B19.204 C188.231 +G01 X+5.269 Y-21.865 Z-3.02 B19.197 C187.211 +G01 X+5.238 Y-21.601 C186.191 +G01 X+5.21 Y-21.369 Z-3.022 B19.203 C185.28 +G01 X+5.193 Y-21.11 Z-3.02 B19.198 C184.284 +G01 X+5.176 Y-20.851 B19.197 C183.288 +G01 X+5.159 Y-20.606 Z-3.022 B19.203 C182.33 +G01 X+5.155 Y-20.353 Z-3.02 B19.197 C181.357 +G01 X+5.152 Y-20.1 C180.384 +G01 X+5.148 Y-19.841 Z-3.022 B19.203 C179.379 +G01 X+5.157 Y-19.594 Z-3.02 B19.198 C178.43 +G01 X+5.166 Y-19.347 B19.197 C177.481 +G01 X+5.176 Y-19.077 Z-3.022 B19.203 C176.428 +G01 X+5.197 Y-18.837 Z-3.02 B19.198 C175.503 +G01 X+5.218 Y-18.597 B19.197 C174.578 +G01 X+5.243 Y-18.315 Z-3.022 B19.203 C173.478 +G01 X+5.275 Y-18.082 Z-3.02 B19.198 C172.577 +G01 X+5.308 Y-17.85 B19.196 C171.675 +G01 X+5.349 Y-17.557 Z-3.022 B19.203 C170.528 +G01 X+5.393 Y-17.333 Z-3.02 B19.198 C169.65 +G01 X+5.436 Y-17.109 B19.196 C168.771 +G01 X+5.495 Y-16.806 Z-3.022 B19.203 C167.577 +G01 X+5.601 Y-16.375 Z-3.02 B19.196 C165.868 +G01 X+5.678 Y-16.064 Z-3.022 B19.203 C164.626 +G01 X+5.803 Y-15.65 Z-3.02 B19.196 C162.965 +G01 X+5.9 Y-15.332 Z-3.022 B19.203 C161.676 +G01 X+6.042 Y-14.937 Z-3.02 B19.196 C160.062 +G01 X+6.159 Y-14.612 Z-3.022 B19.202 C158.725 +G01 X+6.316 Y-14.236 Z-3.02 B19.196 C157.159 +G01 X+6.455 Y-13.907 Z-3.022 B19.202 C155.775 +G01 X+6.582 Y-13.642 Z-3.02 B19.197 C154.639 +G01 X+6.709 Y-13.377 Z-3.021 B19.199 C153.504 +G01 X+6.786 Y-13.218 Z-3.022 B19.202 C152.824 +G01 X+6.924 Y-12.965 Z-3.02 B19.197 C151.713 +G01 X+7.062 Y-12.713 Z-3.021 B19.199 C150.6 +G01 X+7.153 Y-12.546 Z-3.022 B19.202 C149.883 +G01 X+7.3 Y-12.306 Z-3.02 B19.197 C148.79 +G01 X+7.448 Y-12.067 Z-3.021 B19.199 C147.697 +G01 X+7.554 Y-11.895 Z-3.022 B19.202 C146.93 +G01 X+7.77 Y-11.58 Z-3.02 B19.197 C145.454 +G01 X+7.987 Y-11.265 Z-3.022 B19.202 C143.977 +G01 X+8.198 Y-10.99 Z-3.02 B19.196 C142.642 +G01 X+8.453 Y-10.658 Z-3.022 B19.203 C141.024 +G01 X+8.669 Y-10.404 Z-3.02 B19.196 C139.739 +G01 X+8.949 Y-10.076 Z-3.022 B19.203 C138.071 +G01 X+9.125 Y-9.889 Z-3.02 B19.198 C137.077 +G01 X+9.302 Y-9.702 C136.083 +G01 X+9.475 Y-9.52 Z-3.022 B19.203 C135.119 +G01 X+9.656 Y-9.347 Z-3.02 B19.198 C134.149 +G01 X+9.838 Y-9.174 C133.18 +G01 X+10.028 Y-8.992 Z-3.022 B19.203 C132.166 +G01 X+10.213 Y-8.833 Z-3.02 B19.198 C131.221 +G01 X+10.399 Y-8.673 C130.276 +G01 X+10.608 Y-8.494 Z-3.022 B19.203 C129.213 +G01 X+10.796 Y-8.347 Z-3.02 B19.198 C128.293 +G01 X+10.985 Y-8.201 C127.373 +G01 X+11.213 Y-8.025 Z-3.022 B19.203 C126.26 +G01 X+11.403 Y-7.892 Z-3.021 B19.198 C125.365 +G01 X+11.594 Y-7.76 Z-3.02 C124.469 +G01 X+11.841 Y-7.589 Z-3.022 B19.203 C123.31 +G01 X+12.033 Y-7.469 Z-3.021 B19.198 C122.438 +G01 X+12.225 Y-7.35 Z-3.02 C121.566 +G01 X+12.491 Y-7.185 Z-3.022 B19.203 C120.36 +G01 X+12.876 Y-6.972 Z-3.02 B19.198 C118.663 +G01 X+13.16 Y-6.816 Z-3.022 B19.203 C117.409 +G01 X+13.545 Y-6.628 Z-3.02 B19.198 C115.759 +G01 X+13.848 Y-6.481 Z-3.022 B19.203 C114.458 +G01 X+14.123 Y-6.364 Z-3.02 B19.197 C113.309 +G01 X+14.399 Y-6.247 Z-3.021 B19.198 C112.159 +G01 X+14.552 Y-6.182 Z-3.022 B19.204 C111.508 +G01 X+14.827 Y-6.081 Z-3.02 B19.197 C110.382 +G01 X+15.103 Y-5.981 Z-3.021 B19.198 C109.255 +G01 X+15.271 Y-5.92 Z-3.022 B19.204 C108.557 +G01 X+15.545 Y-5.835 Z-3.02 B19.197 C107.455 +G01 X+15.819 Y-5.751 Z-3.021 B19.198 C106.352 +G01 X+16.002 Y-5.695 Z-3.022 B19.204 C105.607 +G01 X+16.274 Y-5.626 Z-3.02 B19.197 C104.528 +G01 X+16.546 Y-5.558 B19.198 C103.449 +G01 X+16.743 Y-5.508 Z-3.022 B19.204 C102.656 +G01 X+17.013 Y-5.455 Z-3.02 B19.197 C101.601 +G01 X+17.282 Y-5.402 C100.546 +G01 X+17.494 Y-5.36 Z-3.022 B19.204 C99.706 +G01 X+17.759 Y-5.321 Z-3.02 B19.197 C98.674 +G01 X+18.025 Y-5.283 C97.643 +G01 X+18.251 Y-5.25 Z-3.022 B19.203 C96.755 +G01 X+18.512 Y-5.226 Z-3.02 B19.197 C95.747 +G01 X+18.773 Y-5.202 C94.739 +G01 X+19.012 Y-5.18 Z-3.022 B19.203 C93.805 +G01 X+19.268 Y-5.169 Z-3.02 B19.197 C92.821 +G01 X+19.524 Y-5.159 C91.836 +G01 X+19.776 Y-5.149 Z-3.022 B19.203 C90.854 +G01 X+20.027 Y-5.151 Z-3.02 B19.197 C89.894 +G01 X+20.277 Y-5.154 C88.933 +G01 X+20.541 Y-5.157 Z-3.022 B19.203 C87.904 +G01 X+20.785 Y-5.172 Z-3.02 B19.198 C86.967 +G01 X+21.028 Y-5.187 B19.197 C86.029 +G01 X+21.305 Y-5.204 Z-3.022 B19.203 C84.953 +G01 X+21.541 Y-5.231 Z-3.02 B19.198 C84.04 +G01 X+21.777 Y-5.258 B19.196 C83.126 +G01 X+22.065 Y-5.291 Z-3.022 B19.203 C82.003 +G01 X+22.293 Y-5.329 Z-3.02 B19.198 C81.113 +G01 X+22.521 Y-5.367 B19.196 C80.223 +G01 X+22.819 Y-5.417 Z-3.022 B19.203 C79.052 +G01 X+23.259 Y-5.514 Z-3.02 B19.196 C77.32 +G01 X+23.566 Y-5.581 Z-3.022 B19.203 C76.102 +G01 X+23.989 Y-5.698 Z-3.02 B19.196 C74.417 +G01 X+24.304 Y-5.784 Z-3.022 B19.203 C73.151 +G01 X+24.708 Y-5.918 Z-3.02 B19.196 C71.513 +G01 X+25.03 Y-6.025 Z-3.022 B19.203 C70.201 +G01 X+25.415 Y-6.175 Z-3.02 B19.196 C68.61 +G01 X+25.742 Y-6.302 Z-3.022 B19.202 C67.25 +G01 X+26.109 Y-6.467 Z-3.02 B19.196 C65.707 +G01 X+26.44 Y-6.616 Z-3.022 B19.202 C64.3 +G01 X+26.699 Y-6.748 Z-3.02 B19.197 C63.176 +G01 X+26.957 Y-6.881 Z-3.021 B19.199 C62.052 +G01 X+27.121 Y-6.965 Z-3.022 B19.202 C61.352 +G01 X+27.367 Y-7.108 Z-3.02 B19.197 C60.25 +G01 X+27.613 Y-7.251 Z-3.021 B19.199 C59.149 +G01 X+27.782 Y-7.349 Z-3.022 B19.202 C58.407 +G01 X+28.103 Y-7.557 Z-3.02 B19.196 C56.93 +G01 X+28.423 Y-7.766 Z-3.022 B19.202 C55.454 +G01 X+28.708 Y-7.973 Z-3.02 B19.196 C54.094 +G01 X+29.042 Y-8.216 Z-3.022 B19.202 C52.501 +G01 X+29.306 Y-8.43 Z-3.02 B19.196 C51.191 +G01 X+29.636 Y-8.697 Z-3.022 B19.203 C49.548 +G01 X+29.83 Y-8.871 Z-3.02 B19.198 C48.541 +G01 X+30.023 Y-9.045 C47.535 +G01 X+30.205 Y-9.208 Z-3.022 B19.203 C46.595 +G01 X+30.385 Y-9.387 Z-3.02 B19.198 C45.613 +G01 X+30.565 Y-9.566 C44.631 +G01 X+30.747 Y-9.748 Z-3.022 B19.203 C43.642 +G01 X+30.914 Y-9.931 Z-3.02 B19.198 C42.685 +G01 X+31.08 Y-10.115 C41.728 +G01 X+31.261 Y-10.315 Z-3.022 B19.203 C40.689 +G01 X+31.414 Y-10.502 Z-3.02 B19.198 C39.757 +G01 X+31.566 Y-10.689 C38.824 +G01 X+31.744 Y-10.907 Z-3.022 B19.203 C37.736 +G01 X+31.884 Y-11.097 Z-3.021 B19.198 C36.829 +G01 X+32.023 Y-11.287 Z-3.02 C35.921 +G01 X+32.197 Y-11.524 Z-3.022 B19.203 C34.785 +G01 X+32.323 Y-11.715 Z-3.021 B19.198 C33.902 +G01 X+32.449 Y-11.907 Z-3.02 C33.018 +G01 X+32.617 Y-12.163 Z-3.022 B19.203 C31.835 +G01 X+32.843 Y-12.548 Z-3.02 B19.198 C30.114 +G01 X+33.004 Y-12.823 Z-3.022 B19.203 C28.884 +G01 X+33.204 Y-13.208 Z-3.02 B19.198 C27.211 +G01 X+33.356 Y-13.502 Z-3.022 B19.203 C25.934 +G01 X+33.482 Y-13.777 Z-3.02 B19.197 C24.772 +G01 X+33.607 Y-14.052 Z-3.021 B19.198 C23.61 +G01 X+33.673 Y-14.198 Z-3.022 B19.204 C22.983 +G01 X+33.782 Y-14.474 Z-3.02 B19.197 C21.845 +G01 X+33.89 Y-14.749 Z-3.021 B19.198 C20.707 +G01 X+33.959 Y-14.927 Z-3.022 B19.203 C19.962 +G01 X+34.049 Y-15.193 Z-3.02 B19.197 C18.883 +G01 X+34.138 Y-15.46 Z-3.021 B19.198 C17.804 +G01 X+34.197 Y-15.635 Z-3.022 B19.204 C17.082 +G01 X+34.274 Y-15.908 Z-3.02 B19.197 C15.992 +G01 X+34.35 Y-16.182 Z-3.021 B19.198 C14.901 +G01 X+34.403 Y-16.371 Z-3.022 B19.204 C14.132 +G01 X+34.464 Y-16.642 Z-3.02 B19.197 C13.065 +G01 X+34.525 Y-16.913 C11.997 +G01 X+34.571 Y-17.117 Z-3.022 B19.204 C11.181 +G01 X+34.617 Y-17.385 Z-3.02 B19.197 C10.138 +G01 X+34.662 Y-17.653 C9.094 +G01 X+34.7 Y-17.871 Z-3.022 B19.204 C8.231 +G01 X+34.731 Y-18.135 Z-3.02 B19.197 C7.211 +G01 X+34.762 Y-18.399 C6.191 +G01 X+34.79 Y-18.631 Z-3.022 B19.203 C5.28 +G01 X+34.807 Y-18.89 Z-3.02 B19.198 C4.284 +G01 X+34.824 Y-19.148 B19.197 C3.288 +G01 X+34.841 Y-19.394 Z-3.022 B19.203 C2.33 +G01 X+34.845 Y-19.647 Z-3.02 B19.197 C1.357 +G01 X+34.848 Y-19.9 C0.384 +G01 X+34.852 Y-20.159 Z-3.022 B19.203 C359.379 +G01 X+34.843 Y-20.406 Z-3.02 B19.198 C358.43 +G01 X+34.834 Y-20.652 B19.197 C357.481 +G01 X+34.824 Y-20.923 Z-3.022 B19.203 C356.428 +G01 X+34.803 Y-21.163 Z-3.02 B19.198 C355.503 +G01 X+34.782 Y-21.403 B19.197 C354.578 +G01 X+34.757 Y-21.685 Z-3.022 B19.203 C353.478 +G01 X+34.725 Y-21.918 Z-3.02 B19.198 C352.577 +G01 X+34.692 Y-22.15 B19.196 C351.675 +G01 X+34.651 Y-22.443 Z-3.022 B19.203 C350.528 +G01 X+34.607 Y-22.667 Z-3.02 B19.198 C349.65 +G01 X+34.564 Y-22.891 B19.196 C348.771 +G01 X+34.506 Y-23.194 Z-3.022 B19.203 C347.577 +G01 X+34.399 Y-23.625 Z-3.02 B19.196 C345.868 +G01 X+34.322 Y-23.936 Z-3.022 B19.203 C344.626 +G01 X+34.197 Y-24.35 Z-3.02 B19.196 C342.965 +G01 X+34.1 Y-24.668 Z-3.022 B19.203 C341.676 +G01 X+33.958 Y-25.063 Z-3.02 B19.196 C340.062 +G01 X+33.841 Y-25.388 Z-3.022 B19.202 C338.725 +G01 X+33.684 Y-25.764 Z-3.02 B19.196 C337.159 +G01 X+33.546 Y-26.093 Z-3.022 B19.202 C335.775 +G01 X+33.418 Y-26.358 Z-3.02 B19.197 C334.639 +G01 X+33.291 Y-26.623 Z-3.021 B19.199 C333.504 +G01 X+33.214 Y-26.782 Z-3.022 B19.202 C332.824 +G01 X+33.076 Y-27.035 Z-3.02 B19.197 C331.713 +G01 X+32.938 Y-27.287 Z-3.021 B19.199 C330.6 +G01 X+32.847 Y-27.454 Z-3.022 B19.202 C329.883 +G01 X+32.7 Y-27.694 Z-3.02 B19.197 C328.79 +G01 X+32.552 Y-27.933 Z-3.021 B19.199 C327.697 +G01 X+32.446 Y-28.105 Z-3.022 B19.202 C326.93 +G01 X+32.23 Y-28.42 Z-3.02 B19.197 C325.454 +G01 X+32.013 Y-28.735 Z-3.022 B19.202 C323.977 +G01 X+31.802 Y-29.01 Z-3.02 B19.196 C322.642 +G01 X+31.547 Y-29.342 Z-3.022 B19.203 C321.024 +G01 X+31.331 Y-29.596 Z-3.02 B19.196 C319.739 +G01 X+31.051 Y-29.924 Z-3.022 B19.203 C318.071 +G01 X+30.875 Y-30.111 Z-3.02 B19.198 C317.077 +G01 X+30.698 Y-30.297 C316.083 +G01 X+30.525 Y-30.48 Z-3.022 B19.203 C315.119 +G01 X+30.344 Y-30.653 Z-3.02 B19.198 C314.149 +G01 X+30.163 Y-30.826 C313.18 +G01 X+29.972 Y-31.008 Z-3.022 B19.203 C312.166 +G01 X+29.787 Y-31.167 Z-3.02 B19.198 C311.221 +G01 X+29.601 Y-31.327 C310.276 +G01 X+29.392 Y-31.506 Z-3.022 B19.203 C309.213 +G01 X+29.204 Y-31.653 Z-3.02 B19.198 C308.293 +G01 X+29.015 Y-31.798 C307.373 +G01 X+28.787 Y-31.975 Z-3.022 B19.203 C306.26 +G01 X+28.597 Y-32.107 Z-3.021 B19.198 C305.365 +G01 X+28.406 Y-32.24 Z-3.02 C304.469 +G01 X+28.159 Y-32.411 Z-3.022 B19.203 C303.31 +G01 X+27.967 Y-32.531 Z-3.021 B19.198 C302.438 +G01 X+27.775 Y-32.65 Z-3.02 C301.566 +G01 X+27.51 Y-32.815 Z-3.022 B19.203 C300.36 +G01 X+27.124 Y-33.027 Z-3.02 B19.198 C298.663 +G01 X+26.84 Y-33.184 Z-3.022 B19.203 C297.409 +G01 X+26.455 Y-33.372 Z-3.02 B19.198 C295.759 +G01 X+26.152 Y-33.519 Z-3.022 B19.203 C294.458 +G01 X+25.877 Y-33.636 Z-3.02 B19.197 C293.309 +G01 X+25.601 Y-33.753 Z-3.021 B19.198 C292.159 +G01 X+25.448 Y-33.818 Z-3.022 B19.204 C291.508 +G01 X+25.173 Y-33.918 Z-3.02 B19.197 C290.382 +G01 X+24.897 Y-34.019 Z-3.021 B19.198 C289.255 +G01 X+24.729 Y-34.08 Z-3.022 B19.204 C288.557 +G01 X+24.455 Y-34.164 Z-3.02 B19.197 C287.455 +G01 X+24.181 Y-34.248 Z-3.021 B19.198 C286.352 +G01 X+23.998 Y-34.305 Z-3.022 B19.204 C285.607 +G01 X+23.726 Y-34.373 Z-3.02 B19.197 C284.528 +G01 X+23.454 Y-34.442 B19.198 C283.449 +G01 X+23.257 Y-34.491 Z-3.022 B19.204 C282.656 +G01 X+22.987 Y-34.545 Z-3.02 B19.197 C281.601 +G01 X+22.718 Y-34.598 C280.546 +G01 X+22.506 Y-34.64 Z-3.022 B19.204 C279.706 +G01 X+22.241 Y-34.679 Z-3.02 B19.197 C278.674 +G01 X+21.975 Y-34.717 C277.643 +G01 X+21.749 Y-34.749 Z-3.022 B19.203 C276.755 +G01 X+21.488 Y-34.774 Z-3.02 B19.197 C275.747 +G01 X+21.227 Y-34.798 C274.739 +G01 X+20.988 Y-34.82 Z-3.022 B19.203 C273.805 +G01 X+20.732 Y-34.831 Z-3.02 B19.197 C272.821 +G01 X+20.476 Y-34.841 C271.836 +G01 X+20.224 Y-34.851 Z-3.022 B19.203 C270.854 +G01 X+19.973 Y-34.849 Z-3.02 B19.197 C269.894 +G01 X+19.723 Y-34.846 C268.933 +G01 X+19.459 Y-34.843 Z-3.022 B19.203 C267.904 +G01 X+19.215 Y-34.828 Z-3.02 B19.198 C266.967 +G01 X+18.972 Y-34.813 B19.197 C266.029 +G01 X+18.695 Y-34.795 Z-3.022 B19.203 C264.953 +G01 X+18.459 Y-34.769 Z-3.02 B19.198 C264.04 +G01 X+18.223 Y-34.741 B19.196 C263.126 +G01 X+17.935 Y-34.709 Z-3.022 B19.203 C262.003 +G01 X+17.707 Y-34.671 Z-3.02 B19.198 C261.113 +G01 X+17.479 Y-34.632 B19.196 C260.223 +G01 X+17.181 Y-34.583 Z-3.022 B19.203 C259.052 +G01 X+16.741 Y-34.486 Z-3.02 B19.196 C257.32 +G01 X+16.434 Y-34.418 Z-3.022 B19.203 C256.102 +G01 X+16.011 Y-34.302 Z-3.02 B19.196 C254.417 +G01 X+15.696 Y-34.216 Z-3.022 B19.203 C253.151 +G01 X+15.292 Y-34.082 Z-3.02 B19.196 C251.513 +G01 X+14.97 Y-33.975 Z-3.022 B19.203 C250.201 +G01 X+14.585 Y-33.825 Z-3.02 B19.196 C248.61 +G01 X+14.258 Y-33.698 Z-3.022 B19.202 C247.25 +G01 X+13.891 Y-33.533 Z-3.02 B19.196 C245.707 +G01 X+13.56 Y-33.384 Z-3.022 B19.202 C244.3 +G01 X+13.301 Y-33.252 Z-3.02 B19.197 C243.176 +G01 X+13.043 Y-33.119 Z-3.021 B19.199 C242.052 +G01 X+12.877 Y-33.034 Z-3.022 B19.202 C241.352 +G01 X+12.547 Y-32.843 Z-3.02 B19.196 C239.879 +G01 X+12.218 Y-32.651 Z-3.022 B19.202 C238.407 +G01 X+11.985 Y-32.499 Z-3.02 B19.197 C237.326 +G01 X+11.751 Y-32.347 Z-3.021 B19.199 C236.245 +G01 X+11.577 Y-32.234 Z-3.022 B19.202 C235.454 +G01 X+11.292 Y-32.027 Z-3.02 B19.196 C234.094 +G01 X+10.958 Y-31.784 Z-3.022 B19.202 C232.501 +G01 X+10.694 Y-31.57 Z-3.02 B19.196 C231.191 +G01 X+10.364 Y-31.303 Z-3.022 B19.203 C229.548 +G01 X+10.17 Y-31.129 Z-3.02 B19.198 C228.541 +G01 X+9.977 Y-30.955 C227.534 +G01 X+9.795 Y-30.792 Z-3.022 B19.203 C226.595 +G01 X+9.523 Y-30.521 Z-3.02 B19.197 C225.112 +G01 X+9.522 Y-30.387 Z-2.987 B19.071 C224.735 +G01 X+9.322 Y-30.188 Z-2.989 B19.076 C223.65 +G01 X+9.119 Y-29.964 Z-2.987 B19.069 C222.481 +G01 X+8.965 Y-29.794 Z-2.988 B19.07 C221.589 +G01 X+8.812 Y-29.625 Z-2.989 B19.076 C220.698 +G01 X+8.644 Y-29.419 Z-2.988 B19.071 C219.664 +G01 X+8.476 Y-29.214 C218.631 +G01 X+8.331 Y-29.036 Z-2.989 B19.076 C217.745 +G01 X+8.177 Y-28.827 Z-2.988 B19.071 C216.736 +G01 X+8.024 Y-28.618 C215.727 +G01 X+7.881 Y-28.423 Z-2.989 B19.076 C214.792 +G01 X+7.742 Y-28.212 Z-2.988 B19.071 C213.808 +G01 X+7.603 Y-28 Z-2.987 C212.824 +G01 X+7.464 Y-27.788 Z-2.989 B19.076 C211.84 +G01 X+7.339 Y-27.575 Z-2.988 B19.071 C210.88 +G01 X+7.214 Y-27.362 Z-2.987 C209.921 +G01 X+7.08 Y-27.133 Z-2.989 B19.076 C208.887 +G01 X+6.968 Y-26.919 Z-2.988 B19.071 C207.952 +G01 X+6.857 Y-26.705 Z-2.987 C207.017 +G01 X+6.73 Y-26.458 Z-2.989 B19.076 C205.935 +G01 X+6.632 Y-26.244 Z-2.988 B19.071 C205.024 +G01 X+6.535 Y-26.03 Z-2.987 C204.114 +G01 X+6.415 Y-25.766 Z-2.989 B19.076 C202.984 +G01 X+6.33 Y-25.554 Z-2.988 B19.071 C202.097 +G01 X+6.247 Y-25.341 Z-2.987 B19.07 C201.21 +G01 X+6.136 Y-25.059 Z-2.989 B19.076 C200.034 +G01 X+6.043 Y-24.785 Z-2.987 B19.07 C198.919 +G01 X+5.952 Y-24.511 Z-2.988 B19.071 C197.804 +G01 X+5.894 Y-24.339 Z-2.989 B19.076 C197.083 +G01 X+5.817 Y-24.067 Z-2.987 B19.07 C195.992 +G01 X+5.741 Y-23.794 Z-2.988 C194.901 +G01 X+5.689 Y-23.607 Z-2.989 B19.076 C194.133 +G01 X+5.628 Y-23.337 Z-2.988 B19.07 C193.066 +G01 X+5.568 Y-23.067 C191.997 +G01 X+5.522 Y-22.866 Z-2.989 B19.076 C191.183 +G01 X+5.476 Y-22.599 Z-2.988 B19.07 C190.139 +G01 X+5.431 Y-22.332 C189.094 +G01 X+5.392 Y-22.096 Z-2.989 B19.076 C188.154 +G01 X+5.361 Y-21.844 Z-2.987 B19.07 C187.173 +G01 X+5.332 Y-21.591 Z-2.988 C186.191 +G01 X+5.304 Y-21.362 Z-2.989 B19.076 C185.283 +G01 X+5.287 Y-21.104 Z-2.988 B19.07 C184.285 +G01 X+5.27 Y-20.846 Z-2.987 C183.288 +G01 X+5.254 Y-20.603 Z-2.989 B19.076 C182.332 +G01 X+5.25 Y-20.351 Z-2.988 B19.07 C181.359 +G01 X+5.246 Y-20.099 Z-2.987 C180.384 +G01 X+5.242 Y-19.844 Z-2.989 B19.076 C179.382 +G01 X+5.251 Y-19.598 Z-2.988 B19.07 C178.432 +G01 X+5.26 Y-19.352 Z-2.987 B19.069 C177.481 +G01 X+5.27 Y-19.084 Z-2.989 B19.076 C176.432 +G01 X+5.291 Y-18.845 Z-2.988 B19.07 C175.505 +G01 X+5.312 Y-18.606 Z-2.987 B19.069 C174.578 +G01 X+5.337 Y-18.327 Z-2.989 B19.076 C173.482 +G01 X+5.369 Y-18.095 Z-2.988 B19.07 C172.578 +G01 X+5.402 Y-17.864 Z-2.987 B19.069 C171.675 +G01 X+5.442 Y-17.574 Z-2.989 B19.076 C170.531 +G01 X+5.485 Y-17.351 Z-2.988 B19.07 C169.652 +G01 X+5.529 Y-17.127 Z-2.987 B19.069 C168.771 +G01 X+5.586 Y-16.828 Z-2.989 B19.076 C167.581 +G01 X+5.693 Y-16.398 Z-2.987 B19.069 C165.868 +G01 X+5.769 Y-16.09 Z-2.989 B19.076 C164.631 +G01 X+5.894 Y-15.678 Z-2.987 B19.069 C162.965 +G01 X+5.989 Y-15.363 Z-2.989 B19.075 C161.681 +G01 X+6.131 Y-14.969 Z-2.987 B19.069 C160.062 +G01 X+6.246 Y-14.648 Z-2.989 B19.075 C158.73 +G01 X+6.403 Y-14.273 Z-2.987 B19.069 C157.159 +G01 X+6.54 Y-13.947 Z-2.989 B19.075 C155.78 +G01 X+6.711 Y-13.592 Z-2.987 B19.069 C154.255 +G01 X+6.869 Y-13.262 Z-2.989 B19.075 C152.83 +G01 X+7.018 Y-12.989 Z-2.987 B19.07 C151.619 +G01 X+7.168 Y-12.716 Z-2.988 B19.073 C150.408 +G01 X+7.234 Y-12.595 Z-2.989 B19.075 C149.89 +G01 X+7.393 Y-12.335 Z-2.987 B19.07 C148.697 +G01 X+7.553 Y-12.075 Z-2.988 B19.073 C147.504 +G01 X+7.632 Y-11.948 Z-2.989 B19.075 C146.937 +G01 X+7.847 Y-11.634 Z-2.987 C145.461 +G01 X+8.063 Y-11.322 Z-2.989 C143.984 +G01 X+8.273 Y-11.048 Z-2.987 B19.069 C142.643 +G01 X+8.525 Y-10.719 Z-2.989 B19.075 C141.032 +G01 X+8.741 Y-10.465 Z-2.987 B19.069 C139.739 +G01 X+9.018 Y-10.14 Z-2.989 B19.075 C138.079 +G01 X+9.239 Y-9.907 Z-2.987 B19.069 C136.836 +G01 X+9.54 Y-9.588 Z-2.989 B19.076 C135.126 +G01 X+9.764 Y-9.375 Z-2.987 B19.069 C133.933 +G01 X+9.927 Y-9.219 Z-2.988 B19.07 C133.053 +G01 X+10.09 Y-9.063 Z-2.989 B19.076 C132.174 +G01 X+10.315 Y-8.87 Z-2.987 B19.069 C131.03 +G01 X+10.491 Y-8.719 Z-2.988 B19.07 C130.125 +G01 X+10.666 Y-8.568 Z-2.989 B19.076 C129.221 +G01 X+10.874 Y-8.407 Z-2.988 B19.071 C128.2 +G01 X+11.081 Y-8.246 C127.179 +G01 X+11.267 Y-8.102 Z-2.989 B19.076 C126.269 +G01 X+11.478 Y-7.956 Z-2.988 B19.071 C125.272 +G01 X+11.688 Y-7.81 Z-2.987 C124.276 +G01 X+11.891 Y-7.669 Z-2.989 B19.076 C123.316 +G01 X+12.104 Y-7.536 Z-2.988 B19.071 C122.344 +G01 X+12.316 Y-7.404 Z-2.987 C121.372 +G01 X+12.537 Y-7.267 Z-2.989 B19.076 C120.364 +G01 X+12.751 Y-7.149 Z-2.988 B19.071 C119.416 +G01 X+12.964 Y-7.031 Z-2.987 C118.469 +G01 X+13.202 Y-6.9 Z-2.989 B19.076 C117.411 +G01 X+13.416 Y-6.796 Z-2.988 B19.071 C116.488 +G01 X+13.63 Y-6.692 Z-2.987 C115.566 +G01 X+13.886 Y-6.568 Z-2.989 B19.076 C114.459 +G01 X+14.099 Y-6.477 Z-2.988 B19.071 C113.561 +G01 X+14.313 Y-6.386 Z-2.987 C112.662 +G01 X+14.585 Y-6.271 Z-2.989 B19.076 C111.509 +G01 X+14.86 Y-6.17 Z-2.987 B19.07 C110.382 +G01 X+15.134 Y-6.07 Z-2.988 B19.071 C109.255 +G01 X+15.299 Y-6.01 Z-2.989 B19.076 C108.558 +G01 X+15.572 Y-5.926 Z-2.987 B19.07 C107.456 +G01 X+15.846 Y-5.842 Z-2.988 B19.071 C106.352 +G01 X+16.026 Y-5.787 Z-2.989 B19.076 C105.608 +G01 X+16.297 Y-5.718 Z-2.988 B19.07 C104.529 +G01 X+16.568 Y-5.65 C103.449 +G01 X+16.763 Y-5.601 Z-2.989 B19.076 C102.658 +G01 X+17.031 Y-5.547 Z-2.988 B19.07 C101.602 +G01 X+17.3 Y-5.495 C100.546 +G01 X+17.508 Y-5.453 Z-2.989 B19.076 C99.708 +G01 X+17.773 Y-5.415 Z-2.988 B19.07 C98.675 +G01 X+18.038 Y-5.377 C97.642 +G01 X+18.26 Y-5.344 Z-2.989 B19.076 C96.758 +G01 X+18.521 Y-5.32 Z-2.988 B19.07 C95.749 +G01 X+18.781 Y-5.296 Z-2.987 C94.739 +G01 X+19.019 Y-5.274 Z-2.989 B19.076 C93.801 +G01 X+19.273 Y-5.263 Z-2.988 B19.07 C92.819 +G01 X+19.527 Y-5.253 Z-2.987 C91.836 +G01 X+19.776 Y-5.243 Z-2.989 B19.076 C90.857 +G01 X+20.026 Y-5.246 Z-2.988 B19.07 C89.895 +G01 X+20.275 Y-5.248 Z-2.987 C88.933 +G01 X+20.536 Y-5.251 Z-2.989 B19.076 C87.907 +G01 X+20.779 Y-5.266 Z-2.988 B19.07 C86.968 +G01 X+21.022 Y-5.281 Z-2.987 B19.069 C86.03 +G01 X+21.295 Y-5.298 Z-2.989 B19.076 C84.957 +G01 X+21.53 Y-5.325 Z-2.988 B19.07 C84.042 +G01 X+21.766 Y-5.352 Z-2.987 B19.069 C83.126 +G01 X+22.05 Y-5.384 Z-2.989 B19.076 C82.006 +G01 X+22.278 Y-5.422 Z-2.988 B19.07 C81.115 +G01 X+22.505 Y-5.46 Z-2.987 B19.069 C80.223 +G01 X+22.8 Y-5.509 Z-2.989 B19.076 C79.056 +G01 X+23.239 Y-5.606 Z-2.987 B19.069 C77.32 +G01 X+23.542 Y-5.673 Z-2.989 B19.076 C76.106 +G01 X+23.963 Y-5.789 Z-2.987 B19.069 C74.417 +G01 X+24.275 Y-5.874 Z-2.989 B19.075 C73.156 +G01 X+24.678 Y-6.008 Z-2.987 B19.069 C71.513 +G01 X+24.996 Y-6.113 Z-2.989 B19.075 C70.206 +G01 X+25.381 Y-6.263 Z-2.987 B19.069 C68.61 +G01 X+25.704 Y-6.389 Z-2.989 B19.075 C67.255 +G01 X+26.07 Y-6.553 Z-2.987 B19.069 C65.707 +G01 X+26.398 Y-6.7 Z-2.989 B19.075 C64.305 +G01 X+26.677 Y-6.843 Z-2.987 B19.07 C63.082 +G01 X+26.957 Y-6.987 Z-2.988 B19.073 C61.86 +G01 X+27.076 Y-7.048 Z-2.989 B19.075 C61.352 +G01 X+27.341 Y-7.202 Z-2.987 B19.07 C60.154 +G01 X+27.607 Y-7.356 Z-2.988 B19.073 C58.956 +G01 X+27.731 Y-7.429 Z-2.989 B19.075 C58.413 +G01 X+28.05 Y-7.635 Z-2.987 C56.937 +G01 X+28.368 Y-7.843 Z-2.989 C55.46 +G01 X+28.652 Y-8.05 Z-2.987 B19.069 C54.094 +G01 X+28.983 Y-8.29 Z-2.989 B19.075 C52.508 +G01 X+29.247 Y-8.503 Z-2.987 B19.069 C51.191 +G01 X+29.574 Y-8.768 Z-2.989 B19.075 C49.555 +G01 X+29.817 Y-8.986 Z-2.987 B19.069 C48.288 +G01 X+30.139 Y-9.276 Z-2.989 B19.076 C46.603 +G01 X+30.362 Y-9.498 Z-2.987 B19.069 C45.384 +G01 X+30.678 Y-9.812 Z-2.989 B19.076 C43.65 +G01 X+30.881 Y-10.036 Z-2.987 B19.069 C42.481 +G01 X+31.035 Y-10.205 Z-2.988 B19.07 C41.589 +G01 X+31.188 Y-10.375 Z-2.989 B19.076 C40.698 +G01 X+31.356 Y-10.581 Z-2.988 B19.071 C39.664 +G01 X+31.524 Y-10.786 C38.631 +G01 X+31.669 Y-10.964 Z-2.989 B19.076 C37.745 +G01 X+31.823 Y-11.173 Z-2.988 B19.071 C36.736 +G01 X+31.976 Y-11.382 C35.727 +G01 X+32.119 Y-11.576 Z-2.989 B19.076 C34.792 +G01 X+32.258 Y-11.788 Z-2.988 B19.071 C33.808 +G01 X+32.397 Y-12 Z-2.987 C32.824 +G01 X+32.536 Y-12.211 Z-2.989 B19.076 C31.84 +G01 X+32.661 Y-12.425 Z-2.988 B19.071 C30.88 +G01 X+32.786 Y-12.638 Z-2.987 C29.921 +G01 X+32.92 Y-12.867 Z-2.989 B19.076 C28.887 +G01 X+33.032 Y-13.081 Z-2.988 B19.071 C27.952 +G01 X+33.143 Y-13.295 Z-2.987 C27.017 +G01 X+33.27 Y-13.542 Z-2.989 B19.076 C25.935 +G01 X+33.368 Y-13.756 Z-2.988 B19.071 C25.024 +G01 X+33.465 Y-13.969 Z-2.987 C24.114 +G01 X+33.585 Y-14.233 Z-2.989 B19.076 C22.984 +G01 X+33.67 Y-14.446 Z-2.988 B19.071 C22.097 +G01 X+33.753 Y-14.659 Z-2.987 B19.07 C21.21 +G01 X+33.864 Y-14.94 Z-2.989 B19.076 C20.034 +G01 X+33.957 Y-15.214 Z-2.987 B19.07 C18.919 +G01 X+34.048 Y-15.489 Z-2.988 B19.071 C17.804 +G01 X+34.106 Y-15.661 Z-2.989 B19.076 C17.083 +G01 X+34.183 Y-15.933 Z-2.987 B19.07 C15.992 +G01 X+34.259 Y-16.206 Z-2.988 C14.901 +G01 X+34.311 Y-16.393 Z-2.989 B19.076 C14.133 +G01 X+34.372 Y-16.663 Z-2.988 B19.07 C13.066 +G01 X+34.432 Y-16.933 C11.997 +G01 X+34.478 Y-17.134 Z-2.989 B19.076 C11.183 +G01 X+34.524 Y-17.401 Z-2.988 B19.07 C10.139 +G01 X+34.569 Y-17.668 C9.094 +G01 X+34.608 Y-17.904 Z-2.989 B19.076 C8.154 +G01 X+34.639 Y-18.156 Z-2.987 B19.07 C7.173 +G01 X+34.668 Y-18.409 Z-2.988 C6.191 +G01 X+34.696 Y-18.638 Z-2.989 B19.076 C5.283 +G01 X+34.713 Y-18.896 Z-2.988 B19.07 C4.285 +G01 X+34.73 Y-19.154 Z-2.987 C3.288 +G01 X+34.746 Y-19.396 Z-2.989 B19.076 C2.332 +G01 X+34.75 Y-19.649 Z-2.988 B19.07 C1.359 +G01 X+34.754 Y-19.901 Z-2.987 C0.384 +G01 X+34.758 Y-20.156 Z-2.989 B19.076 C359.382 +G01 X+34.749 Y-20.402 Z-2.988 B19.07 C358.432 +G01 X+34.74 Y-20.648 Z-2.987 B19.069 C357.481 +G01 X+34.73 Y-20.916 Z-2.989 B19.076 C356.432 +G01 X+34.709 Y-21.155 Z-2.988 B19.07 C355.505 +G01 X+34.688 Y-21.394 Z-2.987 B19.069 C354.578 +G01 X+34.663 Y-21.673 Z-2.989 B19.076 C353.482 +G01 X+34.631 Y-21.905 Z-2.988 B19.07 C352.578 +G01 X+34.598 Y-22.136 Z-2.987 B19.069 C351.675 +G01 X+34.558 Y-22.426 Z-2.989 B19.076 C350.531 +G01 X+34.515 Y-22.649 Z-2.988 B19.07 C349.652 +G01 X+34.471 Y-22.873 Z-2.987 B19.069 C348.771 +G01 X+34.414 Y-23.172 Z-2.989 B19.076 C347.581 +G01 X+34.307 Y-23.602 Z-2.987 B19.069 C345.868 +G01 X+34.231 Y-23.909 Z-2.989 B19.076 C344.631 +G01 X+34.106 Y-24.322 Z-2.987 B19.069 C342.965 +G01 X+34.011 Y-24.637 Z-2.989 B19.075 C341.681 +G01 X+33.869 Y-25.031 Z-2.987 B19.069 C340.062 +G01 X+33.754 Y-25.352 Z-2.989 B19.075 C338.73 +G01 X+33.597 Y-25.727 Z-2.987 B19.069 C337.159 +G01 X+33.46 Y-26.053 Z-2.989 B19.075 C335.78 +G01 X+33.289 Y-26.408 Z-2.987 B19.069 C334.255 +G01 X+33.131 Y-26.738 Z-2.989 B19.075 C332.83 +G01 X+32.982 Y-27.011 Z-2.987 B19.07 C331.619 +G01 X+32.832 Y-27.284 Z-2.988 B19.073 C330.408 +G01 X+32.766 Y-27.405 Z-2.989 B19.075 C329.89 +G01 X+32.607 Y-27.665 Z-2.987 B19.07 C328.697 +G01 X+32.447 Y-27.925 Z-2.988 B19.073 C327.504 +G01 X+32.368 Y-28.052 Z-2.989 B19.075 C326.937 +G01 X+32.153 Y-28.366 Z-2.987 C325.461 +G01 X+31.937 Y-28.678 Z-2.989 C323.984 +G01 X+31.727 Y-28.952 Z-2.987 B19.069 C322.643 +G01 X+31.475 Y-29.281 Z-2.989 B19.075 C321.032 +G01 X+31.259 Y-29.535 Z-2.987 B19.069 C319.739 +G01 X+30.982 Y-29.86 Z-2.989 B19.075 C318.079 +G01 X+30.761 Y-30.093 Z-2.987 B19.069 C316.836 +G01 X+30.46 Y-30.412 Z-2.989 B19.076 C315.126 +G01 X+30.236 Y-30.625 Z-2.987 B19.069 C313.933 +G01 X+30.073 Y-30.781 Z-2.988 B19.07 C313.053 +G01 X+29.91 Y-30.937 Z-2.989 B19.076 C312.174 +G01 X+29.685 Y-31.13 Z-2.987 B19.069 C311.03 +G01 X+29.509 Y-31.281 Z-2.988 B19.07 C310.125 +G01 X+29.334 Y-31.432 Z-2.989 B19.076 C309.221 +G01 X+29.126 Y-31.593 Z-2.988 B19.071 C308.2 +G01 X+28.919 Y-31.754 C307.179 +G01 X+28.733 Y-31.898 Z-2.989 B19.076 C306.269 +G01 X+28.522 Y-32.044 Z-2.988 B19.071 C305.272 +G01 X+28.312 Y-32.19 Z-2.987 C304.276 +G01 X+28.109 Y-32.331 Z-2.989 B19.076 C303.316 +G01 X+27.896 Y-32.464 Z-2.988 B19.071 C302.344 +G01 X+27.684 Y-32.596 Z-2.987 C301.372 +G01 X+27.463 Y-32.732 Z-2.989 B19.076 C300.364 +G01 X+27.249 Y-32.851 Z-2.988 B19.071 C299.416 +G01 X+27.036 Y-32.968 Z-2.987 C298.469 +G01 X+26.798 Y-33.1 Z-2.989 B19.076 C297.411 +G01 X+26.584 Y-33.204 Z-2.988 B19.071 C296.488 +G01 X+26.37 Y-33.308 Z-2.987 C295.566 +G01 X+26.114 Y-33.432 Z-2.989 B19.076 C294.459 +G01 X+25.901 Y-33.523 Z-2.988 B19.071 C293.561 +G01 X+25.687 Y-33.614 Z-2.987 C292.662 +G01 X+25.415 Y-33.729 Z-2.989 B19.076 C291.509 +G01 X+25.14 Y-33.83 Z-2.987 B19.07 C290.382 +G01 X+24.866 Y-33.93 Z-2.988 B19.071 C289.255 +G01 X+24.701 Y-33.99 Z-2.989 B19.076 C288.558 +G01 X+24.428 Y-34.074 Z-2.987 B19.07 C287.456 +G01 X+24.154 Y-34.158 Z-2.988 B19.071 C286.352 +G01 X+23.974 Y-34.213 Z-2.989 B19.076 C285.608 +G01 X+23.703 Y-34.282 Z-2.988 B19.07 C284.529 +G01 X+23.432 Y-34.35 C283.449 +G01 X+23.237 Y-34.399 Z-2.989 B19.076 C282.658 +G01 X+22.969 Y-34.452 Z-2.988 B19.07 C281.602 +G01 X+22.7 Y-34.505 C280.546 +G01 X+22.492 Y-34.547 Z-2.989 B19.076 C279.708 +G01 X+22.227 Y-34.585 Z-2.988 B19.07 C278.675 +G01 X+21.962 Y-34.623 C277.642 +G01 X+21.74 Y-34.656 Z-2.989 B19.076 C276.758 +G01 X+21.479 Y-34.68 Z-2.988 B19.07 C275.749 +G01 X+21.219 Y-34.704 Z-2.987 C274.739 +G01 X+20.981 Y-34.726 Z-2.989 B19.076 C273.801 +G01 X+20.727 Y-34.736 Z-2.988 B19.07 C272.819 +G01 X+20.473 Y-34.747 Z-2.987 C271.836 +G01 X+20.224 Y-34.757 Z-2.989 B19.076 C270.857 +G01 X+19.974 Y-34.754 Z-2.988 B19.07 C269.895 +G01 X+19.725 Y-34.751 Z-2.987 C268.933 +G01 X+19.464 Y-34.749 Z-2.989 B19.076 C267.907 +G01 X+19.221 Y-34.734 Z-2.988 B19.07 C266.968 +G01 X+18.978 Y-34.718 Z-2.987 B19.069 C266.03 +G01 X+18.705 Y-34.702 Z-2.989 B19.076 C264.957 +G01 X+18.47 Y-34.675 Z-2.988 B19.07 C264.042 +G01 X+18.234 Y-34.648 Z-2.987 B19.069 C263.126 +G01 X+17.95 Y-34.615 Z-2.989 B19.076 C262.006 +G01 X+17.722 Y-34.578 Z-2.988 B19.07 C261.115 +G01 X+17.495 Y-34.539 Z-2.987 B19.069 C260.223 +G01 X+17.2 Y-34.49 Z-2.989 B19.076 C259.056 +G01 X+16.761 Y-34.394 Z-2.987 B19.069 C257.32 +G01 X+16.458 Y-34.327 Z-2.989 B19.076 C256.106 +G01 X+16.037 Y-34.211 Z-2.987 B19.069 C254.417 +G01 X+15.725 Y-34.126 Z-2.989 B19.075 C253.156 +G01 X+15.322 Y-33.992 Z-2.987 B19.069 C251.513 +G01 X+15.004 Y-33.887 Z-2.989 B19.075 C250.206 +G01 X+14.619 Y-33.737 Z-2.987 B19.069 C248.61 +G01 X+14.296 Y-33.611 Z-2.989 B19.075 C247.255 +G01 X+13.93 Y-33.447 Z-2.987 B19.069 C245.707 +G01 X+13.602 Y-33.3 Z-2.989 B19.075 C244.305 +G01 X+13.323 Y-33.157 Z-2.987 B19.07 C243.082 +G01 X+13.043 Y-33.013 Z-2.988 B19.073 C241.86 +G01 X+12.923 Y-32.951 Z-2.989 B19.075 C241.352 +G01 X+12.595 Y-32.761 Z-2.987 C239.883 +G01 X+12.269 Y-32.571 Z-2.989 C238.413 +G01 X+11.95 Y-32.364 Z-2.987 B19.069 C236.937 +G01 X+11.632 Y-32.157 Z-2.989 B19.075 C235.46 +G01 X+11.348 Y-31.95 Z-2.987 B19.069 C234.094 +G01 X+11.017 Y-31.71 Z-2.989 B19.075 C232.508 +G01 X+10.753 Y-31.497 Z-2.987 B19.069 C231.191 +G01 X+10.426 Y-31.232 Z-2.989 B19.075 C229.555 +G01 X+10.183 Y-31.013 Z-2.987 B19.069 C228.288 +G01 X+9.861 Y-30.724 Z-2.989 B19.076 C226.603 +G01 X+9.589 Y-30.454 Z-2.987 B19.07 C225.114 +G01 Y-30.32 Z-2.955 B18.944 C224.735 +G01 X+9.392 Y-30.124 Z-2.956 B18.949 C223.658 +G01 X+9.189 Y-29.9 Z-2.955 B18.942 C222.481 +G01 X+9.036 Y-29.732 B18.943 C221.593 +G01 X+8.884 Y-29.564 Z-2.956 B18.949 C220.706 +G01 X+8.701 Y-29.34 Z-2.955 B18.942 C219.578 +G01 X+8.554 Y-29.16 B18.943 C218.666 +G01 X+8.407 Y-28.979 Z-2.956 B18.949 C217.754 +G01 X+8.243 Y-28.756 Z-2.955 B18.942 C216.675 +G01 X+8.101 Y-28.563 B18.943 C215.738 +G01 X+7.96 Y-28.371 Z-2.956 B18.949 C214.801 +G01 X+7.814 Y-28.149 Z-2.955 B18.942 C213.772 +G01 X+7.679 Y-27.944 B18.943 C212.81 +G01 X+7.545 Y-27.74 Z-2.956 B18.949 C211.849 +G01 X+7.408 Y-27.506 Z-2.955 B18.943 C210.788 +G01 X+7.271 Y-27.272 B18.944 C209.727 +G01 X+7.163 Y-27.088 Z-2.956 B18.949 C208.897 +G01 X+7.041 Y-26.853 Z-2.955 B18.944 C207.86 +G01 X+6.919 Y-26.618 C206.824 +G01 X+6.815 Y-26.418 Z-2.956 B18.949 C205.945 +G01 X+6.708 Y-26.182 Z-2.955 B18.944 C204.933 +G01 X+6.6 Y-25.947 C203.92 +G01 X+6.502 Y-25.731 Z-2.956 B18.949 C202.992 +G01 X+6.409 Y-25.496 Z-2.955 B18.944 C202.005 +G01 X+6.316 Y-25.26 C201.017 +G01 X+6.225 Y-25.028 Z-2.956 B18.949 C200.04 +G01 X+6.146 Y-24.794 Z-2.955 B18.944 C199.077 +G01 X+6.068 Y-24.56 B18.943 C198.113 +G01 X+5.985 Y-24.313 Z-2.956 B18.949 C197.088 +G01 X+5.908 Y-24.041 Z-2.955 B18.943 C195.994 +G01 X+5.833 Y-23.77 C194.901 +G01 X+5.781 Y-23.585 Z-2.956 B18.949 C194.135 +G01 X+5.72 Y-23.316 Z-2.955 B18.943 C193.067 +G01 X+5.66 Y-23.047 C191.997 +G01 X+5.615 Y-22.849 Z-2.956 B18.949 C191.185 +G01 X+5.57 Y-22.583 Z-2.955 B18.943 C190.14 +G01 X+5.524 Y-22.317 C189.094 +G01 X+5.488 Y-22.104 Z-2.956 B18.949 C188.235 +G01 X+5.456 Y-21.843 Z-2.955 B18.943 C187.213 +G01 X+5.426 Y-21.581 C186.191 +G01 X+5.399 Y-21.355 Z-2.956 B18.949 C185.285 +G01 X+5.381 Y-21.098 Z-2.955 B18.943 C184.287 +G01 X+5.364 Y-20.841 C183.288 +G01 X+5.348 Y-20.601 Z-2.956 B18.949 C182.335 +G01 X+5.344 Y-20.35 Z-2.955 B18.943 C181.36 +G01 X+5.341 Y-20.098 C180.384 +G01 X+5.337 Y-19.846 Z-2.956 B18.949 C179.385 +G01 X+5.345 Y-19.601 Z-2.955 B18.943 C178.433 +G01 X+5.355 Y-19.356 B18.942 C177.481 +G01 X+5.364 Y-19.091 Z-2.956 B18.949 C176.435 +G01 X+5.385 Y-18.853 Z-2.955 B18.943 C175.507 +G01 X+5.406 Y-18.615 B18.942 C174.578 +G01 X+5.43 Y-18.339 Z-2.956 B18.949 C173.485 +G01 X+5.463 Y-18.108 Z-2.955 B18.943 C172.58 +G01 X+5.495 Y-17.877 B18.942 C171.675 +G01 X+5.535 Y-17.591 Z-2.956 B18.949 C170.535 +G01 X+5.621 Y-17.145 Z-2.955 B18.942 C168.772 +G01 X+5.678 Y-16.85 Z-2.956 B18.949 C167.586 +G01 X+5.784 Y-16.421 Z-2.955 B18.942 C165.868 +G01 X+5.859 Y-16.117 Z-2.956 B18.948 C164.635 +G01 X+5.984 Y-15.705 Z-2.955 B18.942 C162.965 +G01 X+6.078 Y-15.394 Z-2.956 B18.948 C161.686 +G01 X+6.219 Y-15.001 Z-2.955 B18.942 C160.062 +G01 X+6.334 Y-14.684 Z-2.956 B18.948 C158.736 +G01 X+6.49 Y-14.31 Z-2.955 B18.942 C157.159 +G01 X+6.626 Y-13.987 Z-2.956 B18.948 C155.786 +G01 X+6.796 Y-13.633 Z-2.955 B18.942 C154.255 +G01 X+6.953 Y-13.307 Z-2.956 B18.948 C152.836 +G01 X+7.135 Y-12.972 Z-2.955 B18.942 C151.352 +G01 X+7.315 Y-12.644 Z-2.956 B18.948 C149.896 +G01 X+7.508 Y-12.329 Z-2.955 B18.942 C148.449 +G01 X+7.71 Y-12 Z-2.956 B18.948 C146.944 +G01 X+7.912 Y-11.707 Z-2.955 B18.942 C145.546 +G01 X+8.138 Y-11.378 Z-2.956 B18.948 C143.991 +G01 X+8.348 Y-11.105 Z-2.955 B18.942 C142.642 +G01 X+8.598 Y-10.779 Z-2.956 B18.948 C141.039 +G01 X+8.813 Y-10.526 Z-2.955 B18.942 C139.739 +G01 X+9.088 Y-10.204 Z-2.956 B18.948 C138.087 +G01 X+9.308 Y-9.972 Z-2.955 B18.942 C136.836 +G01 X+9.606 Y-9.656 Z-2.956 B18.948 C135.134 +G01 X+9.829 Y-9.443 Z-2.955 B18.942 C133.933 +G01 X+10.153 Y-9.134 Z-2.956 B18.949 C132.182 +G01 X+10.377 Y-8.941 Z-2.955 B18.942 C131.03 +G01 X+10.551 Y-8.791 B18.943 C130.129 +G01 X+10.725 Y-8.642 Z-2.956 B18.949 C129.23 +G01 X+10.949 Y-8.468 Z-2.955 B18.942 C128.126 +G01 X+11.136 Y-8.324 B18.943 C127.202 +G01 X+11.322 Y-8.179 Z-2.956 B18.949 C126.278 +G01 X+11.545 Y-8.024 Z-2.955 B18.942 C125.223 +G01 X+11.743 Y-7.886 B18.943 C124.274 +G01 X+11.942 Y-7.748 Z-2.956 B18.949 C123.325 +G01 X+12.175 Y-7.603 Z-2.955 B18.943 C122.252 +G01 X+12.408 Y-7.459 B18.944 C121.179 +G01 X+12.583 Y-7.35 Z-2.956 B18.949 C120.373 +G01 X+12.818 Y-7.22 Z-2.955 B18.944 C119.324 +G01 X+13.053 Y-7.09 C118.275 +G01 X+13.244 Y-6.985 Z-2.956 B18.949 C117.421 +G01 X+13.48 Y-6.87 Z-2.955 B18.944 C116.397 +G01 X+13.716 Y-6.755 C115.372 +G01 X+13.923 Y-6.654 Z-2.956 B18.949 C114.469 +G01 X+14.159 Y-6.554 Z-2.955 B18.944 C113.469 +G01 X+14.395 Y-6.454 C112.468 +G01 X+14.618 Y-6.359 Z-2.956 B18.949 C111.516 +G01 X+14.853 Y-6.273 Z-2.955 B18.944 C110.541 +G01 X+15.088 Y-6.188 B18.943 C109.565 +G01 X+15.328 Y-6.1 Z-2.956 B18.949 C108.564 +G01 X+15.6 Y-6.016 Z-2.955 B18.943 C107.458 +G01 X+15.873 Y-5.933 B18.944 C106.352 +G01 X+16.05 Y-5.878 Z-2.956 B18.949 C105.612 +G01 X+16.32 Y-5.81 Z-2.955 B18.943 C104.53 +G01 X+16.59 Y-5.742 C103.449 +G01 X+16.782 Y-5.693 Z-2.956 B18.949 C102.66 +G01 X+17.049 Y-5.64 Z-2.955 B18.943 C101.603 +G01 X+17.317 Y-5.587 C100.546 +G01 X+17.523 Y-5.547 Z-2.956 B18.949 C99.71 +G01 X+17.786 Y-5.508 Z-2.955 B18.943 C98.676 +G01 X+18.05 Y-5.47 C97.642 +G01 X+18.27 Y-5.438 Z-2.956 B18.949 C96.76 +G01 X+18.529 Y-5.414 Z-2.955 B18.943 C95.75 +G01 X+18.789 Y-5.39 C94.739 +G01 X+19.022 Y-5.369 Z-2.956 B18.949 C93.81 +G01 X+19.276 Y-5.358 Z-2.955 B18.943 C92.823 +G01 X+19.53 Y-5.348 C91.836 +G01 X+19.776 Y-5.338 Z-2.956 B18.949 C90.86 +G01 X+20.025 Y-5.34 Z-2.955 B18.943 C89.897 +G01 X+20.273 Y-5.343 C88.933 +G01 X+20.531 Y-5.346 Z-2.956 B18.949 C87.91 +G01 X+20.773 Y-5.36 Z-2.955 B18.943 C86.97 +G01 X+21.015 Y-5.376 B18.942 C86.03 +G01 X+21.285 Y-5.392 Z-2.956 B18.949 C84.96 +G01 X+21.52 Y-5.419 Z-2.955 B18.943 C84.043 +G01 X+21.754 Y-5.446 B18.942 C83.126 +G01 X+22.035 Y-5.478 Z-2.956 B18.949 C82.01 +G01 X+22.262 Y-5.515 Z-2.955 B18.943 C81.117 +G01 X+22.489 Y-5.553 B18.942 C80.223 +G01 X+22.78 Y-5.602 Z-2.956 B18.949 C79.06 +G01 X+23.218 Y-5.698 Z-2.955 B18.942 C77.32 +G01 X+23.518 Y-5.764 Z-2.956 B18.949 C76.11 +G01 X+23.938 Y-5.88 Z-2.955 B18.942 C74.417 +G01 X+24.246 Y-5.964 Z-2.956 B18.948 C73.161 +G01 X+24.648 Y-6.097 Z-2.955 B18.942 C71.513 +G01 X+24.963 Y-6.201 Z-2.956 B18.948 C70.211 +G01 X+25.346 Y-6.35 Z-2.955 B18.942 C68.61 +G01 X+25.667 Y-6.475 Z-2.956 B18.948 C67.261 +G01 X+26.031 Y-6.639 Z-2.955 B18.942 C65.707 +G01 X+26.355 Y-6.785 Z-2.956 B18.948 C64.311 +G01 X+26.7 Y-6.961 Z-2.955 B18.942 C62.804 +G01 X+27.027 Y-7.129 Z-2.956 B18.948 C61.352 +G01 X+27.352 Y-7.318 Z-2.955 B18.942 C59.9 +G01 X+27.68 Y-7.508 Z-2.956 B18.948 C58.42 +G01 X+27.985 Y-7.706 Z-2.955 B18.942 C56.997 +G01 X+28.313 Y-7.92 Z-2.956 B18.948 C55.467 +G01 X+28.597 Y-8.126 Z-2.955 B18.942 C54.094 +G01 X+28.924 Y-8.364 Z-2.956 B18.948 C52.515 +G01 X+29.187 Y-8.577 Z-2.955 B18.942 C51.191 +G01 X+29.511 Y-8.839 Z-2.956 B18.948 C49.563 +G01 X+29.754 Y-9.057 Z-2.955 B18.942 C48.288 +G01 X+30.073 Y-9.343 Z-2.956 B18.948 C46.61 +G01 X+30.296 Y-9.565 Z-2.955 B18.942 C45.384 +G01 X+30.608 Y-9.876 Z-2.956 B18.949 C43.658 +G01 X+30.811 Y-10.1 Z-2.955 B18.942 C42.481 +G01 X+30.964 Y-10.268 B18.943 C41.593 +G01 X+31.116 Y-10.436 Z-2.956 B18.949 C40.706 +G01 X+31.299 Y-10.66 Z-2.955 B18.942 C39.578 +G01 X+31.446 Y-10.84 B18.943 C38.666 +G01 X+31.593 Y-11.02 Z-2.956 B18.949 C37.754 +G01 X+31.757 Y-11.244 Z-2.955 B18.942 C36.675 +G01 X+31.899 Y-11.437 B18.943 C35.738 +G01 X+32.04 Y-11.629 Z-2.956 B18.949 C34.801 +G01 X+32.186 Y-11.851 Z-2.955 B18.942 C33.772 +G01 X+32.321 Y-12.055 B18.943 C32.81 +G01 X+32.455 Y-12.26 Z-2.956 B18.949 C31.849 +G01 X+32.592 Y-12.494 Z-2.955 B18.943 C30.788 +G01 X+32.729 Y-12.728 B18.944 C29.727 +G01 X+32.837 Y-12.911 Z-2.956 B18.949 C28.897 +G01 X+32.959 Y-13.147 Z-2.955 B18.944 C27.86 +G01 X+33.081 Y-13.382 C26.824 +G01 X+33.185 Y-13.582 Z-2.956 B18.949 C25.945 +G01 X+33.292 Y-13.817 Z-2.955 B18.944 C24.933 +G01 X+33.4 Y-14.053 C23.92 +G01 X+33.498 Y-14.269 Z-2.956 B18.949 C22.992 +G01 X+33.591 Y-14.504 Z-2.955 B18.944 C22.005 +G01 X+33.684 Y-14.74 C21.017 +G01 X+33.775 Y-14.971 Z-2.956 B18.949 C20.04 +G01 X+33.854 Y-15.205 Z-2.955 B18.944 C19.077 +G01 X+33.932 Y-15.44 B18.943 C18.113 +G01 X+34.016 Y-15.687 Z-2.956 B18.949 C17.088 +G01 X+34.092 Y-15.959 Z-2.955 B18.943 C15.994 +G01 X+34.167 Y-16.23 C14.901 +G01 X+34.219 Y-16.414 Z-2.956 B18.949 C14.136 +G01 X+34.28 Y-16.683 Z-2.955 B18.943 C13.067 +G01 X+34.34 Y-16.953 C11.997 +G01 X+34.385 Y-17.151 Z-2.956 B18.949 C11.185 +G01 X+34.43 Y-17.417 Z-2.955 B18.943 C10.14 +G01 X+34.476 Y-17.683 C9.094 +G01 X+34.512 Y-17.895 Z-2.956 B18.949 C8.235 +G01 X+34.544 Y-18.157 Z-2.955 B18.943 C7.213 +G01 X+34.574 Y-18.419 C6.191 +G01 X+34.601 Y-18.645 Z-2.956 B18.949 C5.285 +G01 X+34.619 Y-18.902 Z-2.955 B18.943 C4.287 +G01 X+34.636 Y-19.159 C3.288 +G01 X+34.652 Y-19.399 Z-2.956 B18.949 C2.335 +G01 X+34.656 Y-19.65 Z-2.955 B18.943 C1.36 +G01 X+34.659 Y-19.902 C0.384 +G01 X+34.663 Y-20.154 Z-2.956 B18.949 C359.385 +G01 X+34.655 Y-20.399 Z-2.955 B18.943 C358.433 +G01 X+34.645 Y-20.644 B18.942 C357.481 +G01 X+34.636 Y-20.908 Z-2.956 B18.949 C356.435 +G01 X+34.615 Y-21.147 Z-2.955 B18.943 C355.507 +G01 X+34.594 Y-21.385 B18.942 C354.578 +G01 X+34.57 Y-21.661 Z-2.956 B18.949 C353.485 +G01 X+34.537 Y-21.892 Z-2.955 B18.943 C352.58 +G01 X+34.505 Y-22.123 B18.942 C351.675 +G01 X+34.465 Y-22.408 Z-2.956 B18.949 C350.535 +G01 X+34.379 Y-22.854 Z-2.955 B18.942 C348.772 +G01 X+34.322 Y-23.15 Z-2.956 B18.949 C347.586 +G01 X+34.216 Y-23.579 Z-2.955 B18.942 C345.868 +G01 X+34.141 Y-23.883 Z-2.956 B18.948 C344.635 +G01 X+34.016 Y-24.294 Z-2.955 B18.942 C342.965 +G01 X+33.922 Y-24.606 Z-2.956 B18.948 C341.686 +G01 X+33.781 Y-24.999 Z-2.955 B18.942 C340.062 +G01 X+33.666 Y-25.316 Z-2.956 B18.948 C338.736 +G01 X+33.51 Y-25.69 Z-2.955 B18.942 C337.159 +G01 X+33.374 Y-26.013 Z-2.956 B18.948 C335.786 +G01 X+33.204 Y-26.367 Z-2.955 B18.942 C334.255 +G01 X+33.047 Y-26.693 Z-2.956 B18.948 C332.836 +G01 X+32.865 Y-27.028 Z-2.955 B18.942 C331.352 +G01 X+32.685 Y-27.356 Z-2.956 B18.948 C329.896 +G01 X+32.492 Y-27.67 Z-2.955 B18.942 C328.449 +G01 X+32.29 Y-27.999 Z-2.956 B18.948 C326.944 +G01 X+32.088 Y-28.293 Z-2.955 B18.942 C325.546 +G01 X+31.862 Y-28.621 Z-2.956 B18.948 C323.991 +G01 X+31.652 Y-28.895 Z-2.955 B18.942 C322.642 +G01 X+31.402 Y-29.221 Z-2.956 B18.948 C321.039 +G01 X+31.187 Y-29.474 Z-2.955 B18.942 C319.739 +G01 X+30.912 Y-29.795 Z-2.956 B18.948 C318.087 +G01 X+30.692 Y-30.028 Z-2.955 B18.942 C316.836 +G01 X+30.394 Y-30.344 Z-2.956 B18.948 C315.134 +G01 X+30.171 Y-30.557 Z-2.955 B18.942 C313.933 +G01 X+29.847 Y-30.866 Z-2.956 B18.949 C312.182 +G01 X+29.623 Y-31.059 Z-2.955 B18.942 C311.03 +G01 X+29.449 Y-31.208 B18.943 C310.129 +G01 X+29.275 Y-31.358 Z-2.956 B18.949 C309.23 +G01 X+29.051 Y-31.532 Z-2.955 B18.942 C308.126 +G01 X+28.864 Y-31.676 B18.943 C307.202 +G01 X+28.678 Y-31.82 Z-2.956 B18.949 C306.278 +G01 X+28.455 Y-31.975 Z-2.955 B18.942 C305.223 +G01 X+28.257 Y-32.114 B18.943 C304.274 +G01 X+28.058 Y-32.252 Z-2.956 B18.949 C303.325 +G01 X+27.825 Y-32.397 Z-2.955 B18.943 C302.252 +G01 X+27.592 Y-32.541 B18.944 C301.179 +G01 X+27.417 Y-32.65 Z-2.956 B18.949 C300.373 +G01 X+27.182 Y-32.78 Z-2.955 B18.944 C299.324 +G01 X+26.947 Y-32.909 C298.275 +G01 X+26.756 Y-33.015 Z-2.956 B18.949 C297.421 +G01 X+26.52 Y-33.13 Z-2.955 B18.944 C296.397 +G01 X+26.284 Y-33.245 C295.372 +G01 X+26.077 Y-33.346 Z-2.956 B18.949 C294.469 +G01 X+25.841 Y-33.446 Z-2.955 B18.944 C293.469 +G01 X+25.605 Y-33.546 C292.468 +G01 X+25.382 Y-33.641 Z-2.956 B18.949 C291.516 +G01 X+25.147 Y-33.727 Z-2.955 B18.944 C290.541 +G01 X+24.912 Y-33.812 B18.943 C289.565 +G01 X+24.672 Y-33.9 Z-2.956 B18.949 C288.564 +G01 X+24.4 Y-33.984 Z-2.955 B18.943 C287.458 +G01 X+24.127 Y-34.067 B18.944 C286.352 +G01 X+23.95 Y-34.122 Z-2.956 B18.949 C285.612 +G01 X+23.68 Y-34.19 Z-2.955 B18.943 C284.53 +G01 X+23.41 Y-34.258 C283.449 +G01 X+23.218 Y-34.306 Z-2.956 B18.949 C282.66 +G01 X+22.951 Y-34.36 Z-2.955 B18.943 C281.603 +G01 X+22.683 Y-34.412 C280.546 +G01 X+22.478 Y-34.453 Z-2.956 B18.949 C279.71 +G01 X+22.214 Y-34.492 Z-2.955 B18.943 C278.676 +G01 X+21.95 Y-34.53 C277.642 +G01 X+21.73 Y-34.562 Z-2.956 B18.949 C276.76 +G01 X+21.471 Y-34.586 Z-2.955 B18.943 C275.75 +G01 X+21.211 Y-34.61 C274.739 +G01 X+20.978 Y-34.631 Z-2.956 B18.949 C273.81 +G01 X+20.724 Y-34.642 Z-2.955 B18.943 C272.823 +G01 X+20.47 Y-34.652 C271.836 +G01 X+20.224 Y-34.662 Z-2.956 B18.949 C270.86 +G01 X+19.975 Y-34.66 Z-2.955 B18.943 C269.897 +G01 X+19.727 Y-34.657 C268.933 +G01 X+19.469 Y-34.654 Z-2.956 B18.949 C267.91 +G01 X+19.227 Y-34.639 Z-2.955 B18.943 C266.97 +G01 X+18.985 Y-34.624 B18.942 C266.03 +G01 X+18.715 Y-34.608 Z-2.956 B18.949 C264.96 +G01 X+18.48 Y-34.581 Z-2.955 B18.943 C264.043 +G01 X+18.246 Y-34.554 B18.942 C263.126 +G01 X+17.965 Y-34.522 Z-2.956 B18.949 C262.01 +G01 X+17.738 Y-34.484 Z-2.955 B18.943 C261.117 +G01 X+17.511 Y-34.446 B18.942 C260.223 +G01 X+17.22 Y-34.398 Z-2.956 B18.949 C259.06 +G01 X+16.782 Y-34.302 Z-2.955 B18.942 C257.32 +G01 X+16.482 Y-34.236 Z-2.956 B18.949 C256.11 +G01 X+16.062 Y-34.12 Z-2.955 B18.942 C254.417 +G01 X+15.754 Y-34.036 Z-2.956 B18.948 C253.161 +G01 X+15.352 Y-33.903 Z-2.955 B18.942 C251.513 +G01 X+15.037 Y-33.799 Z-2.956 B18.948 C250.211 +G01 X+14.654 Y-33.649 Z-2.955 B18.942 C248.61 +G01 X+14.333 Y-33.525 Z-2.956 B18.948 C247.261 +G01 X+13.969 Y-33.361 Z-2.955 B18.942 C245.707 +G01 X+13.645 Y-33.215 Z-2.956 B18.948 C244.311 +G01 X+13.3 Y-33.038 Z-2.955 B18.942 C242.804 +G01 X+12.968 Y-32.868 Z-2.956 B18.948 C241.352 +G01 X+12.644 Y-32.68 Z-2.955 C239.886 +G01 X+12.32 Y-32.492 Z-2.956 C238.42 +G01 X+12.015 Y-32.294 Z-2.955 B18.942 C236.997 +G01 X+11.687 Y-32.08 Z-2.956 B18.948 C235.467 +G01 X+11.403 Y-31.874 Z-2.955 B18.942 C234.094 +G01 X+11.076 Y-31.636 Z-2.956 B18.948 C232.515 +G01 X+10.813 Y-31.423 Z-2.955 B18.942 C231.191 +G01 X+10.489 Y-31.161 Z-2.956 B18.948 C229.563 +G01 X+10.246 Y-30.943 Z-2.955 B18.942 C228.288 +G01 X+9.927 Y-30.657 Z-2.956 B18.948 C226.611 +G01 X+9.656 Y-30.387 Z-2.955 B18.943 C225.116 +G01 X+9.655 Y-30.253 Z-2.922 B18.817 C224.736 +G01 X+9.461 Y-30.06 Z-2.924 B18.822 C223.666 +G01 X+9.258 Y-29.836 Z-2.922 B18.815 C222.481 +G01 X+8.957 Y-29.504 Z-2.924 B18.822 C220.714 +G01 X+8.774 Y-29.28 Z-2.922 B18.815 C219.578 +G01 X+8.628 Y-29.101 B18.816 C218.67 +G01 X+8.483 Y-28.923 Z-2.924 B18.822 C217.762 +G01 X+8.318 Y-28.699 Z-2.922 B18.815 C216.675 +G01 X+8.178 Y-28.509 B18.816 C215.742 +G01 X+8.038 Y-28.318 Z-2.924 B18.822 C214.81 +G01 X+7.893 Y-28.096 Z-2.922 B18.815 C213.772 +G01 X+7.759 Y-27.894 B18.816 C212.815 +G01 X+7.626 Y-27.691 Z-2.924 B18.822 C211.858 +G01 X+7.498 Y-27.473 Z-2.922 B18.816 C210.868 +G01 X+7.372 Y-27.259 C209.887 +G01 X+7.247 Y-27.044 Z-2.924 B18.822 C208.906 +G01 X+7.136 Y-26.83 Z-2.922 B18.816 C207.965 +G01 X+7.018 Y-26.604 C206.96 +G01 X+6.901 Y-26.378 Z-2.924 B18.822 C205.954 +G01 X+6.777 Y-26.106 Z-2.922 B18.816 C204.783 +G01 X+6.653 Y-25.834 Z-2.923 B18.817 C203.61 +G01 X+6.59 Y-25.695 Z-2.924 B18.822 C203.002 +G01 X+6.482 Y-25.423 Z-2.922 B18.816 C201.855 +G01 X+6.375 Y-25.15 Z-2.923 B18.817 C200.707 +G01 X+6.314 Y-24.997 Z-2.924 B18.822 C200.051 +G01 X+6.223 Y-24.726 Z-2.922 B18.816 C198.927 +G01 X+6.132 Y-24.454 Z-2.923 B18.817 C197.804 +G01 X+6.075 Y-24.286 Z-2.924 B18.822 C197.099 +G01 X+5.999 Y-24.016 Z-2.922 B18.816 C196. +G01 X+5.924 Y-23.745 Z-2.923 C194.901 +G01 X+5.873 Y-23.564 Z-2.924 B18.822 C194.147 +G01 X+5.813 Y-23.296 Z-2.922 B18.816 C193.072 +G01 X+5.753 Y-23.028 C191.997 +G01 X+5.708 Y-22.832 Z-2.924 B18.822 C191.195 +G01 X+5.663 Y-22.567 Z-2.922 B18.816 C190.145 +G01 X+5.618 Y-22.302 C189.094 +G01 X+5.582 Y-22.092 Z-2.924 B18.822 C188.243 +G01 X+5.55 Y-21.832 Z-2.922 B18.816 C187.217 +G01 X+5.52 Y-21.571 C186.191 +G01 X+5.493 Y-21.347 Z-2.924 B18.822 C185.291 +G01 X+5.476 Y-21.091 Z-2.922 B18.816 C184.289 +G01 X+5.459 Y-20.835 C183.288 +G01 X+5.443 Y-20.599 Z-2.924 B18.822 C182.339 +G01 X+5.439 Y-20.348 Z-2.922 B18.816 C181.362 +G01 X+5.435 Y-20.098 C180.384 +G01 X+5.431 Y-19.849 Z-2.924 B18.822 C179.388 +G01 X+5.44 Y-19.604 Z-2.922 B18.816 C178.435 +G01 X+5.449 Y-19.36 B18.815 C177.481 +G01 X+5.458 Y-19.099 Z-2.924 B18.822 C176.438 +G01 X+5.479 Y-18.861 Z-2.922 B18.816 C175.508 +G01 X+5.5 Y-18.624 B18.815 C174.578 +G01 X+5.524 Y-18.351 Z-2.924 B18.822 C173.489 +G01 X+5.556 Y-18.121 Z-2.922 B18.816 C172.582 +G01 X+5.589 Y-17.891 B18.815 C171.675 +G01 X+5.628 Y-17.608 Z-2.924 B18.822 C170.539 +G01 X+5.714 Y-17.164 Z-2.922 B18.815 C168.772 +G01 X+5.77 Y-16.872 Z-2.924 B18.822 C167.59 +G01 X+5.876 Y-16.444 Z-2.922 B18.815 C165.868 +G01 X+5.95 Y-16.143 Z-2.924 B18.821 C164.64 +G01 X+6.074 Y-15.733 Z-2.922 B18.815 C162.965 +G01 X+6.167 Y-15.425 Z-2.924 B18.821 C161.69 +G01 X+6.308 Y-15.033 Z-2.922 B18.815 C160.062 +G01 X+6.422 Y-14.718 Z-2.924 B18.821 C158.734 +G01 X+6.578 Y-14.346 Z-2.922 B18.815 C157.159 +G01 X+6.711 Y-14.027 Z-2.924 B18.821 C155.791 +G01 X+6.881 Y-13.674 Z-2.922 B18.815 C154.255 +G01 X+7.036 Y-13.351 Z-2.924 B18.821 C152.842 +G01 X+7.218 Y-13.017 Z-2.922 B18.815 C151.352 +G01 X+7.396 Y-12.693 Z-2.924 B18.821 C149.901 +G01 X+7.588 Y-12.379 Z-2.922 B18.815 C148.449 +G01 X+7.789 Y-12.053 Z-2.924 B18.821 C146.95 +G01 X+7.99 Y-11.76 Z-2.922 B18.815 C145.546 +G01 X+8.214 Y-11.435 Z-2.924 B18.821 C143.998 +G01 X+8.423 Y-11.162 Z-2.922 B18.815 C142.642 +G01 X+8.67 Y-10.84 Z-2.924 B18.821 C141.046 +G01 X+8.886 Y-10.587 Z-2.922 B18.815 C139.739 +G01 X+9.157 Y-10.269 Z-2.924 B18.821 C138.094 +G01 X+9.377 Y-10.036 Z-2.922 B18.815 C136.836 +G01 X+9.672 Y-9.723 Z-2.924 B18.821 C135.142 +G01 X+9.895 Y-9.511 Z-2.922 B18.815 C133.933 +G01 X+10.215 Y-9.205 Z-2.924 B18.822 C132.19 +G01 X+10.439 Y-9.013 Z-2.922 B18.815 C131.03 +G01 X+10.611 Y-8.864 B18.816 C130.134 +G01 X+10.784 Y-8.716 Z-2.924 B18.822 C129.238 +G01 X+11.008 Y-8.542 Z-2.922 B18.815 C128.126 +G01 X+11.192 Y-8.399 B18.816 C127.206 +G01 X+11.377 Y-8.257 Z-2.924 B18.822 C126.286 +G01 X+11.599 Y-8.102 Z-2.922 B18.815 C125.223 +G01 X+11.796 Y-7.965 B18.816 C124.279 +G01 X+11.993 Y-7.828 Z-2.924 B18.822 C123.334 +G01 X+12.213 Y-7.691 Z-2.922 B18.816 C122.32 +G01 X+12.421 Y-7.562 C121.351 +G01 X+12.63 Y-7.432 Z-2.924 B18.822 C120.382 +G01 X+12.846 Y-7.313 Z-2.922 B18.816 C119.417 +G01 X+13.066 Y-7.191 C118.423 +G01 X+13.287 Y-7.069 Z-2.924 B18.822 C117.43 +G01 X+13.498 Y-6.966 Z-2.922 B18.816 C116.514 +G01 X+13.729 Y-6.853 C115.496 +G01 X+13.961 Y-6.741 Z-2.924 B18.822 C114.478 +G01 X+14.233 Y-6.625 Z-2.922 B18.816 C113.319 +G01 X+14.506 Y-6.51 Z-2.923 B18.817 C112.159 +G01 X+14.652 Y-6.448 Z-2.924 B18.822 C111.526 +G01 X+14.924 Y-6.348 Z-2.922 B18.816 C110.391 +G01 X+15.196 Y-6.249 Z-2.923 B18.817 C109.255 +G01 X+15.356 Y-6.19 Z-2.924 B18.822 C108.575 +G01 X+15.628 Y-6.106 Z-2.922 B18.816 C107.464 +G01 X+15.899 Y-6.023 Z-2.923 B18.817 C106.352 +G01 X+16.074 Y-5.97 Z-2.924 B18.822 C105.623 +G01 X+16.343 Y-5.901 Z-2.922 B18.816 C104.536 +G01 X+16.612 Y-5.834 Z-2.923 C103.449 +G01 X+16.801 Y-5.786 Z-2.924 B18.822 C102.671 +G01 X+17.068 Y-5.733 Z-2.922 B18.816 C101.608 +G01 X+17.334 Y-5.68 C100.546 +G01 X+17.537 Y-5.64 Z-2.924 B18.822 C99.719 +G01 X+17.8 Y-5.602 Z-2.922 B18.816 C98.681 +G01 X+18.063 Y-5.564 C97.642 +G01 X+18.279 Y-5.532 Z-2.924 B18.822 C96.767 +G01 X+18.538 Y-5.508 Z-2.922 B18.816 C95.753 +G01 X+18.797 Y-5.484 C94.739 +G01 X+19.027 Y-5.463 Z-2.924 B18.822 C93.815 +G01 X+19.28 Y-5.452 Z-2.922 B18.816 C92.826 +G01 X+19.533 Y-5.442 C91.836 +G01 X+19.776 Y-5.432 Z-2.924 B18.822 C90.863 +G01 X+20.024 Y-5.435 Z-2.922 B18.816 C89.898 +G01 X+20.271 Y-5.437 C88.933 +G01 X+20.526 Y-5.44 Z-2.924 B18.822 C87.913 +G01 X+20.767 Y-5.455 Z-2.922 B18.816 C86.972 +G01 X+21.009 Y-5.47 B18.815 C86.03 +G01 X+21.275 Y-5.486 Z-2.924 B18.822 C84.964 +G01 X+21.509 Y-5.513 Z-2.922 B18.816 C84.045 +G01 X+21.743 Y-5.54 B18.815 C83.126 +G01 X+22.021 Y-5.571 Z-2.924 B18.822 C82.014 +G01 X+22.247 Y-5.609 Z-2.922 B18.816 C81.119 +G01 X+22.473 Y-5.647 B18.815 C80.223 +G01 X+22.761 Y-5.694 Z-2.924 B18.822 C79.064 +G01 X+23.197 Y-5.79 Z-2.922 B18.815 C77.32 +G01 X+23.494 Y-5.856 Z-2.924 B18.822 C76.115 +G01 X+23.913 Y-5.971 Z-2.922 B18.815 C74.417 +G01 X+24.217 Y-6.054 Z-2.924 B18.821 C73.165 +G01 X+24.618 Y-6.187 Z-2.922 B18.815 C71.513 +G01 X+24.929 Y-6.29 Z-2.924 B18.821 C70.216 +G01 X+25.312 Y-6.439 Z-2.922 B18.815 C68.61 +G01 X+25.629 Y-6.562 Z-2.924 B18.821 C67.266 +G01 X+25.992 Y-6.725 Z-2.922 B18.815 C65.707 +G01 X+26.328 Y-6.877 Z-2.924 B18.82 C64.255 +G01 X+26.657 Y-7.046 Z-2.922 B18.815 C62.804 +G01 X+26.98 Y-7.212 Z-2.924 B18.821 C61.352 +G01 X+27.304 Y-7.399 Z-2.922 B18.815 C59.901 +G01 X+27.63 Y-7.588 Z-2.924 B18.821 C58.426 +G01 X+27.933 Y-7.785 Z-2.922 B18.815 C56.997 +G01 X+28.258 Y-7.997 Z-2.924 B18.821 C55.474 +G01 X+28.542 Y-8.203 Z-2.922 B18.815 C54.094 +G01 X+28.865 Y-8.438 Z-2.924 B18.821 C52.522 +G01 X+29.128 Y-8.651 Z-2.922 B18.815 C51.191 +G01 X+29.449 Y-8.91 Z-2.924 B18.821 C49.57 +G01 X+29.691 Y-9.127 Z-2.922 B18.815 C48.288 +G01 X+30.007 Y-9.411 Z-2.924 B18.821 C46.618 +G01 X+30.229 Y-9.632 Z-2.922 B18.815 C45.384 +G01 X+30.539 Y-9.94 Z-2.924 B18.822 C43.666 +G01 X+30.742 Y-10.164 Z-2.922 B18.815 C42.481 +G01 X+31.043 Y-10.496 Z-2.924 B18.822 C40.714 +G01 X+31.226 Y-10.72 Z-2.922 B18.815 C39.578 +G01 X+31.372 Y-10.899 B18.816 C38.67 +G01 X+31.517 Y-11.077 Z-2.924 B18.822 C37.762 +G01 X+31.682 Y-11.301 Z-2.922 B18.815 C36.675 +G01 X+31.822 Y-11.491 B18.816 C35.742 +G01 X+31.962 Y-11.682 Z-2.924 B18.822 C34.81 +G01 X+32.107 Y-11.904 Z-2.922 B18.815 C33.772 +G01 X+32.241 Y-12.106 B18.816 C32.815 +G01 X+32.374 Y-12.309 Z-2.924 B18.822 C31.858 +G01 X+32.502 Y-12.527 Z-2.922 B18.816 C30.868 +G01 X+32.628 Y-12.741 C29.887 +G01 X+32.753 Y-12.956 Z-2.924 B18.822 C28.906 +G01 X+32.864 Y-13.17 Z-2.922 B18.816 C27.965 +G01 X+32.982 Y-13.396 C26.96 +G01 X+33.099 Y-13.622 Z-2.924 B18.822 C25.954 +G01 X+33.223 Y-13.894 Z-2.922 B18.816 C24.783 +G01 X+33.347 Y-14.166 Z-2.923 B18.817 C23.61 +G01 X+33.41 Y-14.304 Z-2.924 B18.822 C23.002 +G01 X+33.518 Y-14.577 Z-2.922 B18.816 C21.855 +G01 X+33.625 Y-14.85 Z-2.923 B18.817 C20.707 +G01 X+33.686 Y-15.002 Z-2.924 B18.822 C20.051 +G01 X+33.777 Y-15.274 Z-2.922 B18.816 C18.927 +G01 X+33.868 Y-15.546 Z-2.923 B18.817 C17.804 +G01 X+33.925 Y-15.714 Z-2.924 B18.822 C17.099 +G01 X+34.001 Y-15.984 Z-2.922 B18.816 C16. +G01 X+34.076 Y-16.254 Z-2.923 C14.901 +G01 X+34.127 Y-16.436 Z-2.924 B18.822 C14.147 +G01 X+34.187 Y-16.704 Z-2.922 B18.816 C13.072 +G01 X+34.247 Y-16.972 C11.997 +G01 X+34.292 Y-17.168 Z-2.924 B18.822 C11.195 +G01 X+34.337 Y-17.433 Z-2.922 B18.816 C10.145 +G01 X+34.382 Y-17.698 C9.094 +G01 X+34.418 Y-17.907 Z-2.924 B18.822 C8.243 +G01 X+34.45 Y-18.168 Z-2.922 B18.816 C7.217 +G01 X+34.48 Y-18.429 C6.191 +G01 X+34.507 Y-18.652 Z-2.924 B18.822 C5.291 +G01 X+34.524 Y-18.909 Z-2.922 B18.816 C4.289 +G01 X+34.541 Y-19.165 C3.288 +G01 X+34.557 Y-19.401 Z-2.924 B18.822 C2.339 +G01 X+34.561 Y-19.652 Z-2.922 B18.816 C1.362 +G01 X+34.565 Y-19.902 C0.384 +G01 X+34.569 Y-20.151 Z-2.924 B18.822 C359.388 +G01 X+34.56 Y-20.396 Z-2.922 B18.816 C358.435 +G01 X+34.551 Y-20.64 B18.815 C357.481 +G01 X+34.542 Y-20.901 Z-2.924 B18.822 C356.438 +G01 X+34.521 Y-21.139 Z-2.922 B18.816 C355.508 +G01 X+34.5 Y-21.376 B18.815 C354.578 +G01 X+34.476 Y-21.648 Z-2.924 B18.822 C353.489 +G01 X+34.444 Y-21.879 Z-2.922 B18.816 C352.582 +G01 X+34.411 Y-22.109 B18.815 C351.675 +G01 X+34.372 Y-22.391 Z-2.924 B18.822 C350.539 +G01 X+34.286 Y-22.836 Z-2.922 B18.815 C348.772 +G01 X+34.23 Y-23.128 Z-2.924 B18.822 C347.59 +G01 X+34.124 Y-23.556 Z-2.922 B18.815 C345.868 +G01 X+34.05 Y-23.856 Z-2.924 B18.821 C344.64 +G01 X+33.926 Y-24.267 Z-2.922 B18.815 C342.965 +G01 X+33.833 Y-24.575 Z-2.924 B18.821 C341.69 +G01 X+33.692 Y-24.967 Z-2.922 B18.815 C340.062 +G01 X+33.578 Y-25.282 Z-2.924 B18.821 C338.734 +G01 X+33.423 Y-25.654 Z-2.922 B18.815 C337.159 +G01 X+33.289 Y-25.973 Z-2.924 B18.821 C335.791 +G01 X+33.119 Y-26.326 Z-2.922 B18.815 C334.255 +G01 X+32.964 Y-26.649 Z-2.924 B18.821 C332.842 +G01 X+32.782 Y-26.983 Z-2.922 B18.815 C331.352 +G01 X+32.604 Y-27.307 Z-2.924 B18.821 C329.901 +G01 X+32.412 Y-27.621 Z-2.922 B18.815 C328.449 +G01 X+32.211 Y-27.947 Z-2.924 B18.821 C326.95 +G01 X+32.01 Y-28.24 Z-2.922 B18.815 C325.546 +G01 X+31.786 Y-28.565 Z-2.924 B18.821 C323.998 +G01 X+31.577 Y-28.838 Z-2.922 B18.815 C322.642 +G01 X+31.33 Y-29.16 Z-2.924 B18.821 C321.046 +G01 X+31.114 Y-29.413 Z-2.922 B18.815 C319.739 +G01 X+30.843 Y-29.731 Z-2.924 B18.821 C318.094 +G01 X+30.623 Y-29.963 Z-2.922 B18.815 C316.836 +G01 X+30.328 Y-30.276 Z-2.924 B18.821 C315.142 +G01 X+30.105 Y-30.489 Z-2.922 B18.815 C313.933 +G01 X+29.785 Y-30.794 Z-2.924 B18.822 C312.19 +G01 X+29.561 Y-30.987 Z-2.922 B18.815 C311.03 +G01 X+29.389 Y-31.136 B18.816 C310.134 +G01 X+29.216 Y-31.284 Z-2.924 B18.822 C309.238 +G01 X+28.992 Y-31.457 Z-2.922 B18.815 C308.126 +G01 X+28.808 Y-31.601 B18.816 C307.206 +G01 X+28.623 Y-31.743 Z-2.924 B18.822 C306.286 +G01 X+28.401 Y-31.898 Z-2.922 B18.815 C305.223 +G01 X+28.204 Y-32.035 B18.816 C304.279 +G01 X+28.007 Y-32.172 Z-2.924 B18.822 C303.334 +G01 X+27.787 Y-32.309 Z-2.922 B18.816 C302.32 +G01 X+27.579 Y-32.438 C301.351 +G01 X+27.37 Y-32.568 Z-2.924 B18.822 C300.382 +G01 X+27.154 Y-32.687 Z-2.922 B18.816 C299.417 +G01 X+26.934 Y-32.809 C298.423 +G01 X+26.713 Y-32.931 Z-2.924 B18.822 C297.43 +G01 X+26.502 Y-33.033 Z-2.922 B18.816 C296.514 +G01 X+26.271 Y-33.146 C295.496 +G01 X+26.039 Y-33.259 Z-2.924 B18.822 C294.478 +G01 X+25.767 Y-33.375 Z-2.922 B18.816 C293.319 +G01 X+25.494 Y-33.49 Z-2.923 B18.817 C292.159 +G01 X+25.348 Y-33.552 Z-2.924 B18.822 C291.526 +G01 X+25.076 Y-33.652 Z-2.922 B18.816 C290.391 +G01 X+24.804 Y-33.751 Z-2.923 B18.817 C289.255 +G01 X+24.644 Y-33.81 Z-2.924 B18.822 C288.575 +G01 X+24.372 Y-33.893 Z-2.922 B18.816 C287.464 +G01 X+24.101 Y-33.977 Z-2.923 B18.817 C286.352 +G01 X+23.926 Y-34.03 Z-2.924 B18.822 C285.623 +G01 X+23.657 Y-34.099 Z-2.922 B18.816 C284.536 +G01 X+23.388 Y-34.166 Z-2.923 C283.449 +G01 X+23.199 Y-34.214 Z-2.924 B18.822 C282.671 +G01 X+22.932 Y-34.267 Z-2.922 B18.816 C281.608 +G01 X+22.666 Y-34.319 C280.546 +G01 X+22.463 Y-34.36 Z-2.924 B18.822 C279.719 +G01 X+22.2 Y-34.398 Z-2.922 B18.816 C278.681 +G01 X+21.937 Y-34.436 C277.642 +G01 X+21.721 Y-34.467 Z-2.924 B18.822 C276.767 +G01 X+21.462 Y-34.492 Z-2.922 B18.816 C275.753 +G01 X+21.203 Y-34.515 C274.739 +G01 X+20.974 Y-34.537 Z-2.924 B18.822 C273.815 +G01 X+20.72 Y-34.547 Z-2.922 B18.816 C272.826 +G01 X+20.467 Y-34.558 C271.836 +G01 X+20.224 Y-34.568 Z-2.924 B18.822 C270.863 +G01 X+19.976 Y-34.565 Z-2.922 B18.816 C269.898 +G01 X+19.729 Y-34.562 C268.933 +G01 X+19.474 Y-34.56 Z-2.924 B18.822 C267.913 +G01 X+19.233 Y-34.545 Z-2.922 B18.816 C266.972 +G01 X+18.991 Y-34.53 B18.815 C266.03 +G01 X+18.725 Y-34.513 Z-2.924 B18.822 C264.964 +G01 X+18.491 Y-34.487 Z-2.922 B18.816 C264.045 +G01 X+18.257 Y-34.46 B18.815 C263.126 +G01 X+17.979 Y-34.429 Z-2.924 B18.822 C262.014 +G01 X+17.753 Y-34.391 Z-2.922 B18.816 C261.119 +G01 X+17.527 Y-34.353 B18.815 C260.223 +G01 X+17.239 Y-34.305 Z-2.924 B18.822 C259.064 +G01 X+16.803 Y-34.209 Z-2.922 B18.815 C257.32 +G01 X+16.507 Y-34.144 Z-2.924 B18.822 C256.115 +G01 X+16.087 Y-34.029 Z-2.922 B18.815 C254.417 +G01 X+15.783 Y-33.946 Z-2.924 B18.821 C253.165 +G01 X+15.382 Y-33.813 Z-2.922 B18.815 C251.513 +G01 X+15.071 Y-33.71 Z-2.924 B18.821 C250.216 +G01 X+14.688 Y-33.561 Z-2.922 B18.815 C248.61 +G01 X+14.371 Y-33.438 Z-2.924 B18.821 C247.266 +G01 X+14.008 Y-33.275 Z-2.922 B18.815 C245.707 +G01 X+13.672 Y-33.123 Z-2.924 B18.82 C244.255 +G01 X+13.343 Y-32.954 Z-2.922 B18.815 C242.804 +G01 X+13.013 Y-32.785 Z-2.924 B18.821 C241.352 +G01 X+12.692 Y-32.599 Z-2.922 B18.815 C239.889 +G01 X+12.37 Y-32.412 Z-2.924 B18.821 C238.426 +G01 X+12.067 Y-32.214 Z-2.922 B18.815 C236.997 +G01 X+11.742 Y-32.003 Z-2.924 B18.821 C235.474 +G01 X+11.458 Y-31.797 Z-2.922 B18.815 C234.094 +G01 X+11.135 Y-31.562 Z-2.924 B18.821 C232.522 +G01 X+10.872 Y-31.349 Z-2.922 B18.815 C231.191 +G01 X+10.551 Y-31.09 Z-2.924 B18.821 C229.57 +G01 X+10.309 Y-30.872 Z-2.922 B18.815 C228.288 +G01 X+9.993 Y-30.589 Z-2.924 B18.821 C226.618 +G01 X+9.723 Y-30.32 Z-2.922 B18.816 C225.118 +G01 X+9.722 Y-30.186 Z-2.89 B18.69 C224.738 +G01 X+9.53 Y-29.996 Z-2.892 B18.695 C223.674 +G01 X+9.318 Y-29.761 Z-2.89 B18.688 C222.425 +G01 X+9.03 Y-29.443 Z-2.892 B18.695 C220.723 +G01 X+8.837 Y-29.208 Z-2.89 B18.688 C219.522 +G01 X+8.558 Y-28.866 Z-2.892 B18.695 C217.771 +G01 X+8.385 Y-28.631 Z-2.89 B18.688 C216.619 +G01 X+8.251 Y-28.448 B18.69 C215.719 +G01 X+8.117 Y-28.265 Z-2.892 B18.695 C214.819 +G01 X+7.963 Y-28.031 Z-2.89 B18.689 C213.716 +G01 X+7.835 Y-27.837 B18.69 C212.792 +G01 X+7.707 Y-27.643 Z-2.892 B18.695 C211.868 +G01 X+7.571 Y-27.411 Z-2.89 B18.689 C210.813 +G01 X+7.451 Y-27.206 B18.69 C209.864 +G01 X+7.33 Y-27 Z-2.892 B18.695 C208.916 +G01 X+7.212 Y-26.772 Z-2.89 B18.689 C207.91 +G01 X+7.099 Y-26.555 C206.937 +G01 X+6.986 Y-26.338 Z-2.892 B18.695 C205.964 +G01 X+6.885 Y-26.116 Z-2.89 B18.689 C205.007 +G01 X+6.781 Y-25.888 C204.009 +G01 X+6.677 Y-25.66 Z-2.892 B18.695 C203.013 +G01 X+6.592 Y-25.444 Z-2.89 B18.689 C202.104 +G01 X+6.498 Y-25.205 C201.082 +G01 X+6.404 Y-24.967 Z-2.892 B18.695 C200.061 +G01 X+6.31 Y-24.689 Z-2.89 B18.689 C198.906 +G01 X+6.217 Y-24.411 B18.69 C197.75 +G01 X+6.166 Y-24.26 Z-2.892 B18.695 C197.109 +G01 X+6.088 Y-23.984 Z-2.89 B18.689 C195.978 +G01 X+6.011 Y-23.707 B18.69 C194.847 +G01 X+5.965 Y-23.542 Z-2.892 B18.695 C194.158 +G01 X+5.903 Y-23.268 Z-2.89 B18.689 C193.051 +G01 X+5.842 Y-22.994 B18.69 C191.943 +G01 X+5.801 Y-22.815 Z-2.892 B18.695 C191.206 +G01 X+5.755 Y-22.544 Z-2.89 B18.689 C190.123 +G01 X+5.708 Y-22.273 B18.69 C189.04 +G01 X+5.675 Y-22.08 Z-2.892 B18.695 C188.254 +G01 X+5.643 Y-21.813 Z-2.89 B18.689 C187.196 +G01 X+5.612 Y-21.546 C186.136 +G01 X+5.587 Y-21.34 Z-2.892 B18.695 C185.303 +G01 X+5.569 Y-21.078 Z-2.89 B18.689 C184.268 +G01 X+5.552 Y-20.815 C183.233 +G01 X+5.537 Y-20.596 Z-2.892 B18.695 C182.351 +G01 X+5.533 Y-20.339 Z-2.89 B18.689 C181.34 +G01 X+5.529 Y-20.082 C180.329 +G01 X+5.526 Y-19.851 Z-2.892 B18.695 C179.4 +G01 X+5.535 Y-19.6 Z-2.89 B18.689 C178.413 +G01 X+5.544 Y-19.349 C177.426 +G01 X+5.553 Y-19.106 Z-2.892 B18.695 C176.448 +G01 X+5.574 Y-18.862 Z-2.89 B18.689 C175.485 +G01 X+5.595 Y-18.618 C174.523 +G01 X+5.618 Y-18.364 Z-2.892 B18.695 C173.496 +G01 X+5.651 Y-18.127 Z-2.89 B18.689 C172.558 +G01 X+5.684 Y-17.89 C171.619 +G01 X+5.721 Y-17.625 Z-2.892 B18.695 C170.545 +G01 X+5.765 Y-17.396 Z-2.89 B18.69 C169.63 +G01 X+5.809 Y-17.167 B18.689 C168.716 +G01 X+5.862 Y-16.894 Z-2.892 B18.695 C167.594 +G01 X+5.971 Y-16.452 Z-2.89 B18.689 C165.813 +G01 X+6.041 Y-16.17 Z-2.892 B18.695 C164.644 +G01 X+6.169 Y-15.746 Z-2.89 B18.688 C162.909 +G01 X+6.257 Y-15.456 Z-2.892 B18.694 C161.695 +G01 X+6.402 Y-15.051 Z-2.89 B18.688 C160.006 +G01 X+6.509 Y-14.755 Z-2.892 B18.694 C158.746 +G01 X+6.67 Y-14.369 Z-2.89 B18.688 C157.103 +G01 X+6.797 Y-14.067 Z-2.892 B18.694 C155.797 +G01 X+6.973 Y-13.701 Z-2.89 B18.688 C154.199 +G01 X+7.12 Y-13.396 Z-2.892 B18.694 C152.847 +G01 X+7.308 Y-13.049 Z-2.89 B18.688 C151.296 +G01 X+7.477 Y-12.741 Z-2.892 B18.694 C149.901 +G01 X+7.677 Y-12.415 Z-2.89 B18.688 C148.393 +G01 X+7.868 Y-12.105 Z-2.892 B18.694 C146.949 +G01 X+8.077 Y-11.801 Z-2.89 B18.688 C145.49 +G01 X+8.289 Y-11.492 Z-2.892 B18.694 C144.005 +G01 X+8.507 Y-11.207 Z-2.89 B18.688 C142.586 +G01 X+8.743 Y-10.9 Z-2.892 B18.694 C141.053 +G01 X+8.967 Y-10.637 Z-2.89 B18.688 C139.683 +G01 X+9.226 Y-10.333 Z-2.892 B18.694 C138.102 +G01 X+9.456 Y-10.09 Z-2.89 B18.688 C136.78 +G01 X+9.738 Y-9.791 Z-2.892 B18.695 C135.15 +G01 X+9.971 Y-9.569 Z-2.89 B18.688 C133.877 +G01 X+10.277 Y-9.276 Z-2.892 B18.695 C132.198 +G01 X+10.512 Y-9.074 Z-2.89 B18.688 C130.974 +G01 X+10.842 Y-8.79 Z-2.892 B18.695 C129.247 +G01 X+11.078 Y-8.607 Z-2.89 B18.688 C128.071 +G01 X+11.431 Y-8.334 Z-2.892 B18.695 C126.295 +G01 X+11.666 Y-8.17 Z-2.89 B18.689 C125.167 +G01 X+11.855 Y-8.039 B18.69 C124.255 +G01 X+12.043 Y-7.908 Z-2.892 B18.695 C123.343 +G01 X+12.276 Y-7.763 Z-2.89 B18.689 C122.264 +G01 X+12.476 Y-7.639 B18.69 C121.328 +G01 X+12.676 Y-7.514 Z-2.892 B18.695 C120.392 +G01 X+12.906 Y-7.388 Z-2.89 B18.689 C119.361 +G01 X+13.117 Y-7.271 B18.69 C118.401 +G01 X+13.329 Y-7.154 Z-2.892 B18.695 C117.44 +G01 X+13.554 Y-7.044 Z-2.89 B18.689 C116.458 +G01 X+13.776 Y-6.936 C115.473 +G01 X+13.999 Y-6.827 Z-2.892 B18.695 C114.489 +G01 X+14.218 Y-6.734 Z-2.89 B18.689 C113.555 +G01 X+14.451 Y-6.635 C112.546 +G01 X+14.685 Y-6.536 Z-2.892 B18.695 C111.537 +G01 X+14.897 Y-6.459 Z-2.89 B18.689 C110.652 +G01 X+15.141 Y-6.369 C109.618 +G01 X+15.385 Y-6.28 Z-2.892 B18.695 C108.585 +G01 X+15.662 Y-6.195 Z-2.89 B18.689 C107.442 +G01 X+15.94 Y-6.11 B18.69 C106.299 +G01 X+16.098 Y-6.061 Z-2.892 B18.695 C105.634 +G01 X+16.373 Y-5.991 Z-2.89 B18.689 C104.515 +G01 X+16.649 Y-5.922 B18.69 C103.395 +G01 X+16.82 Y-5.878 Z-2.892 B18.695 C102.682 +G01 X+17.093 Y-5.824 Z-2.89 B18.689 C101.587 +G01 X+17.366 Y-5.77 B18.69 C100.492 +G01 X+17.551 Y-5.733 Z-2.892 B18.695 C99.73 +G01 X+17.821 Y-5.694 Z-2.89 B18.689 C98.659 +G01 X+18.09 Y-5.655 B18.69 C97.588 +G01 X+18.289 Y-5.626 Z-2.892 B18.695 C96.779 +G01 X+18.554 Y-5.601 Z-2.89 B18.689 C95.732 +G01 X+18.819 Y-5.577 C94.685 +G01 X+19.031 Y-5.557 Z-2.892 B18.695 C93.827 +G01 X+19.291 Y-5.546 Z-2.89 B18.689 C92.804 +G01 X+19.551 Y-5.536 C91.781 +G01 X+19.776 Y-5.527 Z-2.892 B18.695 C90.875 +G01 X+20.03 Y-5.529 Z-2.89 B18.689 C89.877 +G01 X+20.284 Y-5.532 C88.878 +G01 X+20.521 Y-5.534 Z-2.892 B18.695 C87.924 +G01 X+20.769 Y-5.549 Z-2.89 B18.689 C86.949 +G01 X+21.017 Y-5.565 C85.974 +G01 X+21.265 Y-5.58 Z-2.892 B18.695 C84.972 +G01 X+21.506 Y-5.608 Z-2.89 B18.689 C84.022 +G01 X+21.747 Y-5.635 C83.071 +G01 X+22.006 Y-5.665 Z-2.892 B18.695 C82.021 +G01 X+22.239 Y-5.703 Z-2.89 B18.689 C81.094 +G01 X+22.472 Y-5.742 C80.168 +G01 X+22.741 Y-5.787 Z-2.892 B18.695 C79.069 +G01 X+22.966 Y-5.836 Z-2.89 B18.69 C78.167 +G01 X+23.191 Y-5.886 B18.689 C77.264 +G01 X+23.469 Y-5.947 Z-2.892 B18.695 C76.119 +G01 X+23.902 Y-6.066 Z-2.89 B18.688 C74.361 +G01 X+24.188 Y-6.144 Z-2.892 B18.694 C73.17 +G01 X+24.603 Y-6.281 Z-2.89 B18.688 C71.458 +G01 X+24.896 Y-6.378 Z-2.892 B18.694 C70.221 +G01 X+25.292 Y-6.532 Z-2.89 B18.688 C68.554 +G01 X+25.591 Y-6.648 Z-2.892 B18.694 C67.271 +G01 X+25.967 Y-6.817 Z-2.89 B18.688 C65.651 +G01 X+26.271 Y-6.954 Z-2.892 B18.694 C64.322 +G01 X+26.627 Y-7.136 Z-2.89 B18.688 C62.748 +G01 X+26.934 Y-7.294 Z-2.892 B18.694 C61.352 +G01 X+27.27 Y-7.489 Z-2.89 B18.688 C59.845 +G01 X+27.579 Y-7.668 Z-2.892 B18.694 C58.432 +G01 X+27.894 Y-7.873 Z-2.89 B18.688 C56.941 +G01 X+28.204 Y-8.074 Z-2.892 B18.694 C55.481 +G01 X+28.498 Y-8.288 Z-2.89 B18.688 C54.038 +G01 X+28.807 Y-8.512 Z-2.892 B18.694 C52.529 +G01 X+29.081 Y-8.734 Z-2.89 B18.688 C51.135 +G01 X+29.386 Y-8.981 Z-2.892 B18.694 C49.577 +G01 X+29.64 Y-9.208 Z-2.89 B18.688 C48.232 +G01 X+29.941 Y-9.479 Z-2.892 B18.694 C46.626 +G01 X+30.174 Y-9.71 Z-2.89 B18.688 C45.328 +G01 X+30.47 Y-10.004 Z-2.892 B18.695 C43.674 +G01 X+30.682 Y-10.239 Z-2.89 B18.688 C42.425 +G01 X+30.97 Y-10.556 Z-2.892 B18.695 C40.723 +G01 X+31.163 Y-10.792 Z-2.89 B18.688 C39.522 +G01 X+31.442 Y-11.134 Z-2.892 B18.695 C37.771 +G01 X+31.615 Y-11.369 Z-2.89 B18.688 C36.619 +G01 X+31.749 Y-11.552 B18.69 C35.719 +G01 X+31.883 Y-11.735 Z-2.892 B18.695 C34.819 +G01 X+32.037 Y-11.969 Z-2.89 B18.689 C33.716 +G01 X+32.165 Y-12.163 B18.69 C32.792 +G01 X+32.293 Y-12.357 Z-2.892 B18.695 C31.868 +G01 X+32.429 Y-12.588 Z-2.89 B18.689 C30.813 +G01 X+32.549 Y-12.794 B18.69 C29.864 +G01 X+32.67 Y-13 Z-2.892 B18.695 C28.916 +G01 X+32.788 Y-13.227 Z-2.89 B18.689 C27.91 +G01 X+32.901 Y-13.444 C26.937 +G01 X+33.014 Y-13.662 Z-2.892 B18.695 C25.964 +G01 X+33.115 Y-13.884 Z-2.89 B18.689 C25.007 +G01 X+33.219 Y-14.112 C24.009 +G01 X+33.323 Y-14.34 Z-2.892 B18.695 C23.013 +G01 X+33.408 Y-14.556 Z-2.89 B18.689 C22.104 +G01 X+33.502 Y-14.794 C21.082 +G01 X+33.596 Y-15.033 Z-2.892 B18.695 C20.061 +G01 X+33.69 Y-15.311 Z-2.89 B18.689 C18.906 +G01 X+33.783 Y-15.589 B18.69 C17.75 +G01 X+33.834 Y-15.74 Z-2.892 B18.695 C17.109 +G01 X+33.912 Y-16.016 Z-2.89 B18.689 C15.978 +G01 X+33.989 Y-16.293 B18.69 C14.847 +G01 X+34.035 Y-16.458 Z-2.892 B18.695 C14.158 +G01 X+34.097 Y-16.732 Z-2.89 B18.689 C13.051 +G01 X+34.158 Y-17.006 B18.69 C11.943 +G01 X+34.199 Y-17.185 Z-2.892 B18.695 C11.206 +G01 X+34.245 Y-17.456 Z-2.89 B18.689 C10.123 +G01 X+34.292 Y-17.727 B18.69 C9.04 +G01 X+34.325 Y-17.919 Z-2.892 B18.695 C8.255 +G01 X+34.357 Y-18.187 Z-2.89 B18.689 C7.196 +G01 X+34.388 Y-18.454 C6.136 +G01 X+34.413 Y-18.66 Z-2.892 B18.695 C5.303 +G01 X+34.431 Y-18.922 Z-2.89 B18.689 C4.268 +G01 X+34.448 Y-19.185 C3.233 +G01 X+34.463 Y-19.403 Z-2.892 B18.695 C2.351 +G01 X+34.467 Y-19.661 Z-2.89 B18.689 C1.34 +G01 X+34.471 Y-19.918 C0.329 +G01 X+34.474 Y-20.149 Z-2.892 B18.695 C359.4 +G01 X+34.465 Y-20.4 Z-2.89 B18.689 C358.413 +G01 X+34.456 Y-20.651 C357.426 +G01 X+34.447 Y-20.894 Z-2.892 B18.695 C356.448 +G01 X+34.426 Y-21.138 Z-2.89 B18.689 C355.485 +G01 X+34.405 Y-21.382 C354.523 +G01 X+34.382 Y-21.636 Z-2.892 B18.695 C353.496 +G01 X+34.349 Y-21.873 Z-2.89 B18.689 C352.558 +G01 X+34.316 Y-22.11 C351.619 +G01 X+34.279 Y-22.374 Z-2.892 B18.695 C350.545 +G01 X+34.235 Y-22.603 Z-2.89 B18.69 C349.63 +G01 X+34.191 Y-22.832 B18.689 C348.716 +G01 X+34.138 Y-23.106 Z-2.892 B18.695 C347.594 +G01 X+34.029 Y-23.548 Z-2.89 B18.689 C345.813 +G01 X+33.959 Y-23.83 Z-2.892 B18.695 C344.644 +G01 X+33.831 Y-24.254 Z-2.89 B18.688 C342.909 +G01 X+33.743 Y-24.543 Z-2.892 B18.694 C341.695 +G01 X+33.598 Y-24.949 Z-2.89 B18.688 C340.006 +G01 X+33.491 Y-25.245 Z-2.892 B18.694 C338.746 +G01 X+33.33 Y-25.631 Z-2.89 B18.688 C337.103 +G01 X+33.203 Y-25.933 Z-2.892 B18.694 C335.797 +G01 X+33.027 Y-26.299 Z-2.89 B18.688 C334.199 +G01 X+32.88 Y-26.604 Z-2.892 B18.694 C332.847 +G01 X+32.692 Y-26.951 Z-2.89 B18.688 C331.296 +G01 X+32.523 Y-27.259 Z-2.892 B18.694 C329.901 +G01 X+32.323 Y-27.585 Z-2.89 B18.688 C328.393 +G01 X+32.132 Y-27.895 Z-2.892 B18.694 C326.949 +G01 X+31.923 Y-28.199 Z-2.89 B18.688 C325.49 +G01 X+31.711 Y-28.508 Z-2.892 B18.694 C324.005 +G01 X+31.493 Y-28.792 Z-2.89 B18.688 C322.586 +G01 X+31.257 Y-29.099 Z-2.892 B18.694 C321.053 +G01 X+31.033 Y-29.363 Z-2.89 B18.688 C319.683 +G01 X+30.774 Y-29.667 Z-2.892 B18.694 C318.102 +G01 X+30.544 Y-29.91 Z-2.89 B18.688 C316.78 +G01 X+30.262 Y-30.209 Z-2.892 B18.695 C315.15 +G01 X+30.029 Y-30.431 Z-2.89 B18.688 C313.877 +G01 X+29.723 Y-30.723 Z-2.892 B18.695 C312.198 +G01 X+29.488 Y-30.926 Z-2.89 B18.688 C310.974 +G01 X+29.158 Y-31.21 Z-2.892 B18.695 C309.247 +G01 X+28.922 Y-31.392 Z-2.89 B18.688 C308.071 +G01 X+28.569 Y-31.666 Z-2.892 B18.695 C306.295 +G01 X+28.334 Y-31.83 Z-2.89 B18.689 C305.167 +G01 X+28.145 Y-31.961 B18.69 C304.255 +G01 X+27.957 Y-32.092 Z-2.892 B18.695 C303.343 +G01 X+27.724 Y-32.237 Z-2.89 B18.689 C302.264 +G01 X+27.524 Y-32.361 B18.69 C301.328 +G01 X+27.324 Y-32.486 Z-2.892 B18.695 C300.392 +G01 X+27.094 Y-32.612 Z-2.89 B18.689 C299.361 +G01 X+26.883 Y-32.729 B18.69 C298.4 +G01 X+26.671 Y-32.846 Z-2.892 B18.695 C297.44 +G01 X+26.446 Y-32.955 Z-2.89 B18.689 C296.458 +G01 X+26.224 Y-33.064 C295.473 +G01 X+26.001 Y-33.172 Z-2.892 B18.695 C294.489 +G01 X+25.782 Y-33.265 Z-2.89 B18.689 C293.555 +G01 X+25.549 Y-33.365 C292.546 +G01 X+25.315 Y-33.464 Z-2.892 B18.695 C291.537 +G01 X+25.103 Y-33.541 Z-2.89 B18.689 C290.652 +G01 X+24.859 Y-33.631 C289.618 +G01 X+24.615 Y-33.72 Z-2.892 B18.695 C288.585 +G01 X+24.338 Y-33.805 Z-2.89 B18.689 C287.442 +G01 X+24.06 Y-33.89 B18.69 C286.299 +G01 X+23.903 Y-33.939 Z-2.892 B18.695 C285.634 +G01 X+23.627 Y-34.009 Z-2.89 B18.689 C284.515 +G01 X+23.351 Y-34.078 B18.69 C283.395 +G01 X+23.18 Y-34.121 Z-2.892 B18.695 C282.682 +G01 X+22.907 Y-34.176 Z-2.89 B18.689 C281.587 +G01 X+22.634 Y-34.23 B18.69 C280.492 +G01 X+22.449 Y-34.266 Z-2.892 B18.695 C279.73 +G01 X+22.179 Y-34.306 Z-2.89 B18.689 C278.659 +G01 X+21.91 Y-34.345 B18.69 C277.588 +G01 X+21.711 Y-34.374 Z-2.892 B18.695 C276.779 +G01 X+21.446 Y-34.398 Z-2.89 B18.689 C275.732 +G01 X+21.181 Y-34.423 C274.685 +G01 X+20.969 Y-34.443 Z-2.892 B18.695 C273.827 +G01 X+20.709 Y-34.453 Z-2.89 B18.689 C272.804 +G01 X+20.449 Y-34.464 C271.781 +G01 X+20.224 Y-34.473 Z-2.892 B18.695 C270.875 +G01 X+19.97 Y-34.471 Z-2.89 B18.689 C269.877 +G01 X+19.716 Y-34.468 C268.878 +G01 X+19.479 Y-34.466 Z-2.892 B18.695 C267.924 +G01 X+19.231 Y-34.45 Z-2.89 B18.689 C266.949 +G01 X+18.983 Y-34.435 C265.974 +G01 X+18.735 Y-34.42 Z-2.892 B18.695 C264.972 +G01 X+18.494 Y-34.392 Z-2.89 B18.689 C264.022 +G01 X+18.253 Y-34.365 C263.071 +G01 X+17.994 Y-34.335 Z-2.892 B18.695 C262.02 +G01 X+17.761 Y-34.297 Z-2.89 B18.689 C261.094 +G01 X+17.528 Y-34.258 C260.168 +G01 X+17.259 Y-34.213 Z-2.892 B18.695 C259.069 +G01 X+17.034 Y-34.164 Z-2.89 B18.69 C258.167 +G01 X+16.809 Y-34.114 B18.689 C257.264 +G01 X+16.531 Y-34.053 Z-2.892 B18.695 C256.119 +G01 X+16.098 Y-33.934 Z-2.89 B18.688 C254.361 +G01 X+15.812 Y-33.856 Z-2.892 B18.694 C253.17 +G01 X+15.397 Y-33.719 Z-2.89 B18.688 C251.457 +G01 X+15.104 Y-33.622 Z-2.892 B18.694 C250.221 +G01 X+14.708 Y-33.468 Z-2.89 B18.688 C248.554 +G01 X+14.409 Y-33.352 Z-2.892 B18.694 C247.271 +G01 X+14.033 Y-33.183 Z-2.89 B18.688 C245.651 +G01 X+13.729 Y-33.046 Z-2.892 B18.694 C244.322 +G01 X+13.373 Y-32.863 Z-2.89 B18.688 C242.748 +G01 X+13.058 Y-32.702 Z-2.892 B18.694 C241.352 +G01 X+12.74 Y-32.518 Z-2.89 B18.688 C239.892 +G01 X+12.421 Y-32.332 Z-2.892 B18.694 C238.432 +G01 X+12.106 Y-32.127 Z-2.89 B18.688 C236.941 +G01 X+11.796 Y-31.926 Z-2.892 B18.694 C235.481 +G01 X+11.502 Y-31.712 Z-2.89 B18.688 C234.038 +G01 X+11.193 Y-31.488 Z-2.892 B18.694 C232.529 +G01 X+10.919 Y-31.266 Z-2.89 B18.688 C231.135 +G01 X+10.614 Y-31.019 Z-2.892 B18.694 C229.577 +G01 X+10.36 Y-30.792 Z-2.89 B18.688 C228.231 +G01 X+10.059 Y-30.521 Z-2.892 B18.695 C226.626 +G01 X+9.789 Y-30.253 Z-2.89 B18.689 C225.119 +G01 X+9.788 Y-30.12 Z-2.858 B18.563 C224.74 +G01 X+9.6 Y-29.932 Z-2.86 B18.568 C223.682 +G01 X+9.361 Y-29.669 Z-2.858 B18.562 C222.268 +G01 X+9.102 Y-29.383 Z-2.86 B18.568 C220.731 +G01 X+8.885 Y-29.118 Z-2.858 B18.562 C219.365 +G01 X+8.633 Y-28.81 Z-2.86 B18.568 C217.779 +G01 X+8.437 Y-28.543 Z-2.858 B18.562 C216.462 +G01 X+8.195 Y-28.213 Z-2.86 B18.568 C214.828 +G01 X+8.02 Y-27.946 Z-2.858 B18.562 C213.558 +G01 X+7.788 Y-27.594 Z-2.86 B18.568 C211.877 +G01 X+7.632 Y-27.329 Z-2.858 B18.562 C210.655 +G01 X+7.413 Y-26.956 Z-2.86 B18.568 C208.925 +G01 X+7.277 Y-26.694 Z-2.858 B18.562 C207.752 +G01 X+7.072 Y-26.298 Z-2.86 B18.568 C205.974 +G01 X+6.954 Y-26.041 Z-2.858 B18.562 C204.849 +G01 X+6.859 Y-25.833 B18.563 C203.936 +G01 X+6.765 Y-25.624 Z-2.86 B18.568 C203.023 +G01 X+6.665 Y-25.372 Z-2.858 B18.562 C201.946 +G01 X+6.579 Y-25.154 B18.563 C201.009 +G01 X+6.493 Y-24.936 Z-2.86 B18.568 C200.071 +G01 X+6.393 Y-24.641 Z-2.858 B18.563 C198.833 +G01 X+6.294 Y-24.345 Z-2.859 B18.565 C197.594 +G01 X+6.256 Y-24.234 Z-2.86 B18.569 C197.12 +G01 X+6.174 Y-23.94 Z-2.858 B18.563 C195.906 +G01 X+6.092 Y-23.646 Z-2.859 B18.565 C194.691 +G01 X+6.057 Y-23.521 Z-2.86 B18.569 C194.169 +G01 X+5.991 Y-23.229 Z-2.858 B18.563 C192.978 +G01 X+5.925 Y-22.936 Z-2.859 B18.564 C191.787 +G01 X+5.894 Y-22.798 Z-2.86 B18.569 C191.218 +G01 X+5.844 Y-22.509 Z-2.858 B18.563 C190.051 +G01 X+5.795 Y-22.22 Z-2.859 B18.564 C188.884 +G01 X+5.769 Y-22.068 Z-2.86 B18.569 C188.266 +G01 X+5.734 Y-21.783 Z-2.858 B18.563 C187.123 +G01 X+5.701 Y-21.497 Z-2.859 B18.564 C185.98 +G01 X+5.681 Y-21.333 Z-2.86 B18.568 C185.315 +G01 X+5.662 Y-21.052 Z-2.858 B18.563 C184.196 +G01 X+5.643 Y-20.771 Z-2.859 B18.564 C183.076 +G01 X+5.631 Y-20.594 Z-2.86 B18.568 C182.364 +G01 X+5.627 Y-20.318 Z-2.858 B18.563 C181.268 +G01 X+5.623 Y-20.043 Z-2.859 C180.173 +G01 X+5.62 Y-19.854 Z-2.86 B18.568 C179.412 +G01 X+5.629 Y-19.584 Z-2.858 B18.563 C178.341 +G01 X+5.639 Y-19.314 C177.27 +G01 X+5.646 Y-19.114 Z-2.86 B18.568 C176.461 +G01 X+5.669 Y-18.851 Z-2.858 B18.563 C175.414 +G01 X+5.693 Y-18.588 C174.366 +G01 X+5.711 Y-18.376 Z-2.86 B18.568 C173.51 +G01 X+5.747 Y-18.12 Z-2.858 B18.563 C172.486 +G01 X+5.783 Y-17.865 C171.463 +G01 X+5.814 Y-17.642 Z-2.86 B18.568 C170.558 +G01 X+5.861 Y-17.395 Z-2.858 B18.563 C169.559 +G01 X+5.909 Y-17.148 C168.559 +G01 X+5.954 Y-16.915 Z-2.86 B18.568 C167.607 +G01 X+6.013 Y-16.676 Z-2.858 B18.563 C166.632 +G01 X+6.072 Y-16.437 C165.656 +G01 X+6.131 Y-16.196 Z-2.86 B18.568 C164.656 +G01 X+6.201 Y-15.966 Z-2.858 B18.563 C163.704 +G01 X+6.27 Y-15.737 B18.562 C162.753 +G01 X+6.345 Y-15.487 Z-2.86 B18.568 C161.704 +G01 X+6.424 Y-15.267 Z-2.858 B18.563 C160.777 +G01 X+6.504 Y-15.047 B18.562 C159.849 +G01 X+6.596 Y-14.79 Z-2.86 B18.568 C158.753 +G01 X+6.684 Y-14.58 Z-2.858 B18.563 C157.85 +G01 X+6.772 Y-14.369 B18.562 C156.946 +G01 X+6.882 Y-14.107 Z-2.86 B18.567 C155.802 +G01 X+7.074 Y-13.707 Z-2.858 B18.562 C154.042 +G01 X+7.203 Y-13.44 Z-2.86 B18.567 C152.853 +G01 X+7.41 Y-13.06 Z-2.858 B18.562 C151.139 +G01 X+7.557 Y-12.79 Z-2.86 B18.567 C149.904 +G01 X+7.777 Y-12.431 Z-2.858 B18.562 C148.236 +G01 X+7.945 Y-12.159 Z-2.86 B18.567 C146.963 +G01 X+8.176 Y-11.822 Z-2.858 B18.562 C145.333 +G01 X+8.365 Y-11.549 Z-2.86 B18.567 C144.012 +G01 X+8.606 Y-11.234 Z-2.858 B18.562 C142.429 +G01 X+8.827 Y-10.947 Z-2.86 B18.567 C140.985 +G01 X+9.065 Y-10.668 Z-2.858 B18.562 C139.526 +G01 X+9.295 Y-10.397 Z-2.86 B18.568 C138.109 +G01 X+9.551 Y-10.126 Z-2.858 B18.562 C136.623 +G01 X+9.804 Y-9.859 Z-2.86 B18.568 C135.158 +G01 X+10.065 Y-9.609 Z-2.858 B18.562 C133.72 +G01 X+10.339 Y-9.347 Z-2.86 B18.568 C132.206 +G01 X+10.604 Y-9.119 Z-2.858 B18.562 C130.816 +G01 X+10.901 Y-8.864 Z-2.86 B18.568 C129.255 +G01 X+11.167 Y-8.657 Z-2.858 B18.562 C127.913 +G01 X+11.486 Y-8.41 Z-2.86 B18.568 C126.304 +G01 X+11.753 Y-8.225 Z-2.858 B18.562 C125.01 +G01 X+12.094 Y-7.987 Z-2.86 B18.568 C123.352 +G01 X+12.36 Y-7.822 Z-2.858 B18.562 C122.107 +G01 X+12.723 Y-7.596 Z-2.86 B18.568 C120.401 +G01 X+12.986 Y-7.451 Z-2.858 B18.562 C119.204 +G01 X+13.371 Y-7.238 Z-2.86 B18.568 C117.45 +G01 X+13.631 Y-7.111 Z-2.858 B18.562 C116.301 +G01 X+13.834 Y-7.012 B18.563 C115.399 +G01 X+14.037 Y-6.914 Z-2.86 B18.568 C114.498 +G01 X+14.292 Y-6.805 Z-2.858 B18.562 C113.397 +G01 X+14.505 Y-6.715 B18.563 C112.472 +G01 X+14.718 Y-6.624 Z-2.86 B18.568 C111.547 +G01 X+15.013 Y-6.516 Z-2.858 B18.563 C110.297 +G01 X+15.309 Y-6.408 Z-2.859 B18.565 C109.046 +G01 X+15.414 Y-6.37 Z-2.86 B18.569 C108.596 +G01 X+15.708 Y-6.279 Z-2.858 B18.563 C107.369 +G01 X+16.003 Y-6.188 Z-2.859 B18.565 C106.142 +G01 X+16.121 Y-6.152 Z-2.86 B18.569 C105.644 +G01 X+16.415 Y-6.078 Z-2.858 B18.563 C104.442 +G01 X+16.708 Y-6.004 Z-2.859 B18.564 C103.239 +G01 X+16.839 Y-5.971 Z-2.86 B18.569 C102.693 +G01 X+17.13 Y-5.913 Z-2.858 B18.563 C101.514 +G01 X+17.421 Y-5.855 Z-2.859 B18.564 C100.335 +G01 X+17.566 Y-5.827 Z-2.86 B18.569 C99.742 +G01 X+17.853 Y-5.784 Z-2.858 B18.563 C98.587 +G01 X+18.141 Y-5.743 Z-2.859 B18.564 C97.432 +G01 X+18.299 Y-5.72 Z-2.86 B18.569 C96.79 +G01 X+18.582 Y-5.693 Z-2.858 B18.563 C95.66 +G01 X+18.866 Y-5.667 Z-2.859 B18.564 C94.528 +G01 X+19.036 Y-5.651 Z-2.86 B18.568 C93.839 +G01 X+19.315 Y-5.64 Z-2.858 B18.563 C92.732 +G01 X+19.593 Y-5.628 Z-2.859 B18.564 C91.625 +G01 X+19.776 Y-5.621 Z-2.86 B18.568 C90.888 +G01 X+20.049 Y-5.623 Z-2.858 B18.563 C89.805 +G01 X+20.322 Y-5.626 C88.721 +G01 X+20.516 Y-5.628 Z-2.86 B18.568 C87.937 +G01 X+20.783 Y-5.645 Z-2.858 B18.563 C86.877 +G01 X+21.049 Y-5.661 C85.818 +G01 X+21.256 Y-5.674 Z-2.86 B18.568 C84.985 +G01 X+21.515 Y-5.703 Z-2.858 B18.563 C83.95 +G01 X+21.774 Y-5.733 C82.914 +G01 X+21.991 Y-5.758 Z-2.86 B18.568 C82.034 +G01 X+22.243 Y-5.799 Z-2.858 B18.563 C81.023 +G01 X+22.495 Y-5.841 C80.011 +G01 X+22.722 Y-5.879 Z-2.86 B18.568 C79.083 +G01 X+22.965 Y-5.932 Z-2.858 B18.563 C78.095 +G01 X+23.208 Y-5.986 C77.108 +G01 X+23.445 Y-6.038 Z-2.86 B18.568 C76.131 +G01 X+23.68 Y-6.102 Z-2.858 B18.563 C75.168 +G01 X+23.914 Y-6.166 C74.204 +G01 X+24.159 Y-6.234 Z-2.86 B18.568 C73.18 +G01 X+24.385 Y-6.308 Z-2.858 B18.563 C72.241 +G01 X+24.61 Y-6.383 B18.562 C71.301 +G01 X+24.863 Y-6.466 Z-2.86 B18.568 C70.229 +G01 X+25.078 Y-6.55 Z-2.858 B18.563 C69.313 +G01 X+25.294 Y-6.634 B18.562 C68.398 +G01 X+25.553 Y-6.734 Z-2.86 B18.567 C67.277 +G01 X+25.964 Y-6.919 Z-2.858 B18.562 C65.494 +G01 X+26.228 Y-7.038 Z-2.86 B18.567 C64.327 +G01 X+26.619 Y-7.238 Z-2.858 B18.562 C62.591 +G01 X+26.887 Y-7.376 Z-2.86 B18.567 C61.352 +G01 X+27.257 Y-7.589 Z-2.858 B18.562 C59.687 +G01 X+27.528 Y-7.747 Z-2.86 B18.567 C58.439 +G01 X+27.876 Y-7.973 Z-2.858 B18.562 C56.784 +G01 X+28.149 Y-8.151 Z-2.86 B18.567 C55.487 +G01 X+28.475 Y-8.387 Z-2.858 B18.562 C53.881 +G01 X+28.748 Y-8.586 Z-2.86 B18.567 C52.536 +G01 X+29.052 Y-8.832 Z-2.858 B18.562 C50.978 +G01 X+29.334 Y-9.06 Z-2.86 B18.567 C49.533 +G01 X+29.606 Y-9.304 Z-2.858 B18.562 C48.074 +G01 X+29.876 Y-9.546 Z-2.86 B18.568 C46.631 +G01 X+30.136 Y-9.805 Z-2.858 B18.562 C45.171 +G01 X+30.4 Y-10.068 Z-2.86 B18.568 C43.682 +G01 X+30.639 Y-10.331 Z-2.858 B18.562 C42.268 +G01 X+30.898 Y-10.617 Z-2.86 B18.568 C40.731 +G01 X+31.115 Y-10.882 Z-2.858 B18.562 C39.365 +G01 X+31.367 Y-11.19 Z-2.86 B18.568 C37.779 +G01 X+31.563 Y-11.457 Z-2.858 B18.562 C36.462 +G01 X+31.805 Y-11.787 Z-2.86 B18.568 C34.828 +G01 X+31.98 Y-12.054 Z-2.858 B18.562 C33.558 +G01 X+32.212 Y-12.406 Z-2.86 B18.568 C31.877 +G01 X+32.368 Y-12.671 Z-2.858 B18.562 C30.655 +G01 X+32.587 Y-13.044 Z-2.86 B18.568 C28.925 +G01 X+32.723 Y-13.306 Z-2.858 B18.562 C27.752 +G01 X+32.928 Y-13.702 Z-2.86 B18.568 C25.974 +G01 X+33.046 Y-13.959 Z-2.858 B18.562 C24.849 +G01 X+33.141 Y-14.167 B18.563 C23.936 +G01 X+33.235 Y-14.375 Z-2.86 B18.568 C23.023 +G01 X+33.335 Y-14.628 Z-2.858 B18.562 C21.946 +G01 X+33.421 Y-14.846 B18.563 C21.009 +G01 X+33.507 Y-15.064 Z-2.86 B18.568 C20.071 +G01 X+33.607 Y-15.359 Z-2.858 B18.563 C18.833 +G01 X+33.706 Y-15.654 Z-2.859 B18.565 C17.594 +G01 X+33.744 Y-15.766 Z-2.86 B18.569 C17.12 +G01 X+33.826 Y-16.06 Z-2.858 B18.563 C15.906 +G01 X+33.908 Y-16.354 Z-2.859 B18.565 C14.691 +G01 X+33.943 Y-16.479 Z-2.86 B18.569 C14.169 +G01 X+34.009 Y-16.771 Z-2.858 B18.563 C12.978 +G01 X+34.075 Y-17.064 Z-2.859 B18.564 C11.787 +G01 X+34.106 Y-17.202 Z-2.86 B18.569 C11.218 +G01 X+34.156 Y-17.491 Z-2.858 B18.563 C10.051 +G01 X+34.205 Y-17.78 Z-2.859 B18.564 C8.884 +G01 X+34.231 Y-17.931 Z-2.86 B18.569 C8.266 +G01 X+34.266 Y-18.217 Z-2.858 B18.563 C7.123 +G01 X+34.299 Y-18.503 Z-2.859 B18.564 C5.98 +G01 X+34.319 Y-18.667 Z-2.86 B18.568 C5.315 +G01 X+34.338 Y-18.948 Z-2.858 B18.563 C4.196 +G01 X+34.357 Y-19.229 Z-2.859 B18.564 C3.077 +G01 X+34.369 Y-19.406 Z-2.86 B18.568 C2.364 +G01 X+34.373 Y-19.681 Z-2.858 B18.563 C1.268 +G01 X+34.377 Y-19.957 Z-2.859 C0.173 +G01 X+34.38 Y-20.146 Z-2.86 B18.568 C359.412 +G01 X+34.371 Y-20.416 Z-2.858 B18.563 C358.341 +G01 X+34.361 Y-20.686 C357.27 +G01 X+34.354 Y-20.886 Z-2.86 B18.568 C356.461 +G01 X+34.331 Y-21.149 Z-2.858 B18.563 C355.414 +G01 X+34.307 Y-21.412 C354.366 +G01 X+34.289 Y-21.624 Z-2.86 B18.568 C353.51 +G01 X+34.253 Y-21.88 Z-2.858 B18.563 C352.486 +G01 X+34.217 Y-22.135 C351.463 +G01 X+34.186 Y-22.357 Z-2.86 B18.568 C350.558 +G01 X+34.139 Y-22.605 Z-2.858 B18.563 C349.559 +G01 X+34.091 Y-22.852 C348.559 +G01 X+34.046 Y-23.085 Z-2.86 B18.568 C347.607 +G01 X+33.987 Y-23.324 Z-2.858 B18.563 C346.632 +G01 X+33.928 Y-23.562 C345.656 +G01 X+33.869 Y-23.804 Z-2.86 B18.568 C344.656 +G01 X+33.799 Y-24.033 Z-2.858 B18.563 C343.704 +G01 X+33.73 Y-24.263 B18.562 C342.753 +G01 X+33.655 Y-24.512 Z-2.86 B18.568 C341.704 +G01 X+33.576 Y-24.733 Z-2.858 B18.563 C340.777 +G01 X+33.496 Y-24.953 B18.562 C339.849 +G01 X+33.404 Y-25.209 Z-2.86 B18.568 C338.753 +G01 X+33.316 Y-25.42 Z-2.858 B18.563 C337.85 +G01 X+33.228 Y-25.63 B18.562 C336.946 +G01 X+33.118 Y-25.893 Z-2.86 B18.567 C335.802 +G01 X+32.926 Y-26.293 Z-2.858 B18.562 C334.042 +G01 X+32.797 Y-26.56 Z-2.86 B18.567 C332.853 +G01 X+32.59 Y-26.94 Z-2.858 B18.562 C331.139 +G01 X+32.443 Y-27.21 Z-2.86 B18.567 C329.904 +G01 X+32.223 Y-27.569 Z-2.858 B18.562 C328.236 +G01 X+32.055 Y-27.841 Z-2.86 B18.567 C326.963 +G01 X+31.824 Y-28.178 Z-2.858 B18.562 C325.333 +G01 X+31.635 Y-28.451 Z-2.86 B18.567 C324.012 +G01 X+31.394 Y-28.766 Z-2.858 B18.562 C322.429 +G01 X+31.173 Y-29.053 Z-2.86 B18.567 C320.985 +G01 X+30.935 Y-29.332 Z-2.858 B18.562 C319.526 +G01 X+30.705 Y-29.603 Z-2.86 B18.568 C318.109 +G01 X+30.449 Y-29.874 Z-2.858 B18.562 C316.623 +G01 X+30.196 Y-30.141 Z-2.86 B18.568 C315.158 +G01 X+29.935 Y-30.391 Z-2.858 B18.562 C313.72 +G01 X+29.661 Y-30.653 Z-2.86 B18.568 C312.206 +G01 X+29.396 Y-30.88 Z-2.858 B18.562 C310.816 +G01 X+29.099 Y-31.136 Z-2.86 B18.568 C309.255 +G01 X+28.833 Y-31.342 Z-2.858 B18.562 C307.913 +G01 X+28.514 Y-31.59 Z-2.86 B18.568 C306.304 +G01 X+28.247 Y-31.775 Z-2.858 B18.562 C305.01 +G01 X+27.906 Y-32.012 Z-2.86 B18.568 C303.352 +G01 X+27.64 Y-32.178 Z-2.858 B18.562 C302.107 +G01 X+27.277 Y-32.404 Z-2.86 B18.568 C300.401 +G01 X+27.014 Y-32.549 Z-2.858 B18.562 C299.204 +G01 X+26.629 Y-32.762 Z-2.86 B18.568 C297.45 +G01 X+26.369 Y-32.888 Z-2.858 B18.562 C296.301 +G01 X+26.166 Y-32.987 B18.563 C295.399 +G01 X+25.963 Y-33.086 Z-2.86 B18.568 C294.498 +G01 X+25.708 Y-33.195 Z-2.858 B18.562 C293.397 +G01 X+25.495 Y-33.285 B18.563 C292.472 +G01 X+25.282 Y-33.376 Z-2.86 B18.568 C291.547 +G01 X+24.987 Y-33.484 Z-2.858 B18.563 C290.297 +G01 X+24.691 Y-33.592 Z-2.859 B18.565 C289.046 +G01 X+24.586 Y-33.63 Z-2.86 B18.569 C288.596 +G01 X+24.292 Y-33.721 Z-2.858 B18.563 C287.369 +G01 X+23.997 Y-33.811 Z-2.859 B18.565 C286.142 +G01 X+23.879 Y-33.848 Z-2.86 B18.569 C285.644 +G01 X+23.585 Y-33.922 Z-2.858 B18.563 C284.442 +G01 X+23.292 Y-33.996 Z-2.859 B18.564 C283.239 +G01 X+23.161 Y-34.029 Z-2.86 B18.569 C282.693 +G01 X+22.87 Y-34.087 Z-2.858 B18.563 C281.514 +G01 X+22.579 Y-34.145 Z-2.859 B18.564 C280.335 +G01 X+22.434 Y-34.173 Z-2.86 B18.569 C279.742 +G01 X+22.147 Y-34.215 Z-2.858 B18.563 C278.587 +G01 X+21.859 Y-34.257 Z-2.859 B18.564 C277.432 +G01 X+21.701 Y-34.28 Z-2.86 B18.569 C276.79 +G01 X+21.418 Y-34.307 Z-2.858 B18.563 C275.66 +G01 X+21.134 Y-34.333 Z-2.859 B18.564 C274.528 +G01 X+20.964 Y-34.348 Z-2.86 B18.568 C273.839 +G01 X+20.685 Y-34.36 Z-2.858 B18.563 C272.732 +G01 X+20.407 Y-34.372 Z-2.859 B18.564 C271.625 +G01 X+20.224 Y-34.379 Z-2.86 B18.568 C270.888 +G01 X+19.951 Y-34.377 Z-2.858 B18.563 C269.805 +G01 X+19.678 Y-34.374 C268.721 +G01 X+19.484 Y-34.372 Z-2.86 B18.568 C267.937 +G01 X+19.217 Y-34.355 Z-2.858 B18.563 C266.877 +G01 X+18.951 Y-34.339 C265.818 +G01 X+18.744 Y-34.326 Z-2.86 B18.568 C264.985 +G01 X+18.485 Y-34.297 Z-2.858 B18.563 C263.95 +G01 X+18.226 Y-34.267 C262.914 +G01 X+18.009 Y-34.242 Z-2.86 B18.568 C262.034 +G01 X+17.757 Y-34.201 Z-2.858 B18.563 C261.023 +G01 X+17.505 Y-34.159 C260.011 +G01 X+17.278 Y-34.121 Z-2.86 B18.568 C259.082 +G01 X+17.035 Y-34.068 Z-2.858 B18.563 C258.095 +G01 X+16.792 Y-34.014 C257.108 +G01 X+16.555 Y-33.962 Z-2.86 B18.568 C256.131 +G01 X+16.32 Y-33.898 Z-2.858 B18.563 C255.168 +G01 X+16.086 Y-33.833 C254.204 +G01 X+15.841 Y-33.766 Z-2.86 B18.568 C253.18 +G01 X+15.615 Y-33.692 Z-2.858 B18.563 C252.241 +G01 X+15.39 Y-33.617 B18.562 C251.301 +G01 X+15.137 Y-33.534 Z-2.86 B18.568 C250.229 +G01 X+14.922 Y-33.45 Z-2.858 B18.563 C249.313 +G01 X+14.706 Y-33.366 B18.562 C248.397 +G01 X+14.447 Y-33.265 Z-2.86 B18.567 C247.277 +G01 X+14.036 Y-33.081 Z-2.858 B18.562 C245.494 +G01 X+13.772 Y-32.962 Z-2.86 B18.567 C244.327 +G01 X+13.381 Y-32.762 Z-2.858 B18.562 C242.591 +G01 X+13.104 Y-32.619 Z-2.86 B18.567 C241.352 +G01 X+12.787 Y-32.437 Z-2.858 B18.562 C239.895 +G01 X+12.472 Y-32.253 Z-2.86 B18.567 C238.439 +G01 X+12.124 Y-32.027 Z-2.858 B18.562 C236.784 +G01 X+11.851 Y-31.849 Z-2.86 B18.567 C235.487 +G01 X+11.525 Y-31.612 Z-2.858 B18.562 C233.881 +G01 X+11.252 Y-31.414 Z-2.86 B18.567 C232.536 +G01 X+10.948 Y-31.168 Z-2.858 B18.562 C230.978 +G01 X+10.666 Y-30.94 Z-2.86 B18.567 C229.533 +G01 X+10.394 Y-30.695 Z-2.858 B18.562 C228.074 +G01 X+10.124 Y-30.453 Z-2.86 B18.568 C226.631 +G01 X+9.856 Y-30.186 Z-2.858 B18.562 C225.121 +G01 X+9.855 Y-30.053 Z-2.827 B18.443 C224.737 +G01 X+9.669 Y-29.868 Z-2.828 B18.448 C223.685 +G01 X+9.404 Y-29.576 Z-2.827 B18.442 C222.106 +G01 X+9.163 Y-29.309 Z-2.828 B18.448 C220.662 +G01 X+8.936 Y-29.031 Z-2.827 B18.442 C219.223 +G01 X+8.709 Y-28.753 Z-2.828 B18.448 C217.783 +G01 X+8.49 Y-28.455 Z-2.827 B18.442 C216.299 +G01 X+8.273 Y-28.16 Z-2.828 B18.448 C214.832 +G01 X+8.071 Y-27.853 Z-2.827 B18.442 C213.357 +G01 X+7.869 Y-27.546 Z-2.828 B18.448 C211.881 +G01 X+7.713 Y-27.281 Z-2.827 B18.442 C210.649 +G01 X+7.558 Y-27.016 B18.444 C209.417 +G01 X+7.496 Y-26.911 Z-2.828 B18.448 C208.93 +G01 X+7.357 Y-26.644 Z-2.827 B18.442 C207.722 +G01 X+7.218 Y-26.376 B18.444 C206.514 +G01 X+7.157 Y-26.258 Z-2.828 B18.448 C205.979 +G01 X+7.034 Y-25.99 Z-2.827 B18.442 C204.795 +G01 X+6.912 Y-25.721 B18.443 C203.61 +G01 X+6.852 Y-25.589 Z-2.828 B18.448 C203.028 +G01 X+6.745 Y-25.32 Z-2.827 B18.442 C201.868 +G01 X+6.639 Y-25.05 B18.443 C200.707 +G01 X+6.582 Y-24.905 Z-2.828 B18.448 C200.077 +G01 X+6.491 Y-24.636 Z-2.827 B18.442 C198.941 +G01 X+6.401 Y-24.367 B18.443 C197.804 +G01 X+6.347 Y-24.208 Z-2.828 B18.448 C197.126 +G01 X+6.272 Y-23.94 Z-2.827 B18.442 C196.014 +G01 X+6.197 Y-23.673 B18.443 C194.901 +G01 X+6.148 Y-23.499 Z-2.828 B18.448 C194.175 +G01 X+6.088 Y-23.234 Z-2.827 B18.442 C193.087 +G01 X+6.029 Y-22.969 B18.443 C191.997 +G01 X+5.987 Y-22.781 Z-2.828 B18.448 C191.224 +G01 X+5.941 Y-22.519 Z-2.827 B18.442 C190.159 +G01 X+5.897 Y-22.257 C189.094 +G01 X+5.862 Y-22.056 Z-2.828 B18.448 C188.273 +G01 X+5.831 Y-21.798 Z-2.827 B18.442 C187.232 +G01 X+5.801 Y-21.54 C186.191 +G01 X+5.775 Y-21.326 Z-2.828 B18.448 C185.323 +G01 X+5.758 Y-21.072 Z-2.827 B18.442 C184.305 +G01 X+5.741 Y-20.819 C183.288 +G01 X+5.726 Y-20.592 Z-2.828 B18.448 C182.372 +G01 X+5.722 Y-20.344 Z-2.827 B18.442 C181.378 +G01 X+5.718 Y-20.096 C180.384 +G01 X+5.714 Y-19.856 Z-2.828 B18.448 C179.42 +G01 X+5.723 Y-19.614 Z-2.827 B18.442 C178.451 +G01 X+5.731 Y-19.372 C177.481 +G01 X+5.74 Y-19.121 Z-2.828 B18.448 C176.469 +G01 X+5.761 Y-18.886 Z-2.827 B18.442 C175.524 +G01 X+5.782 Y-18.65 C174.578 +G01 X+5.805 Y-18.388 Z-2.828 B18.448 C173.519 +G01 X+5.836 Y-18.16 Z-2.827 B18.443 C172.597 +G01 X+5.868 Y-17.932 B18.442 C171.675 +G01 X+5.906 Y-17.659 Z-2.828 B18.448 C170.567 +G01 X+5.991 Y-17.219 Z-2.827 B18.441 C168.772 +G01 X+6.046 Y-16.937 Z-2.828 B18.448 C167.616 +G01 X+6.15 Y-16.513 Z-2.827 B18.441 C165.868 +G01 X+6.222 Y-16.223 Z-2.828 B18.448 C164.665 +G01 X+6.345 Y-15.816 Z-2.827 B18.441 C162.965 +G01 X+6.434 Y-15.518 Z-2.828 B18.448 C161.714 +G01 X+6.574 Y-15.13 Z-2.827 B18.441 C160.062 +G01 X+6.683 Y-14.826 Z-2.828 B18.447 C158.763 +G01 X+6.838 Y-14.456 Z-2.826 B18.441 C157.159 +G01 X+6.967 Y-14.147 Z-2.828 B18.447 C155.812 +G01 X+7.126 Y-13.816 Z-2.827 B18.442 C154.337 +G01 X+7.286 Y-13.484 Z-2.828 B18.447 C152.861 +G01 X+7.398 Y-13.278 Z-2.827 B18.443 C151.92 +G01 X+7.511 Y-13.071 C150.977 +G01 X+7.638 Y-12.838 Z-2.828 B18.447 C149.91 +G01 X+7.758 Y-12.643 Z-2.827 B18.443 C148.992 +G01 X+7.878 Y-12.447 C148.074 +G01 X+8.023 Y-12.211 Z-2.828 B18.447 C146.968 +G01 X+8.276 Y-11.843 Z-2.827 B18.442 C145.171 +G01 X+8.44 Y-11.605 Z-2.828 B18.447 C144.014 +G01 X+8.704 Y-11.26 Z-2.827 B18.442 C142.267 +G01 X+8.887 Y-11.021 Z-2.828 B18.447 C141.063 +G01 X+9.162 Y-10.699 Z-2.827 B18.442 C139.364 +G01 X+9.364 Y-10.461 Z-2.828 B18.447 C138.112 +G01 X+9.647 Y-10.162 Z-2.827 B18.442 C136.461 +G01 X+9.869 Y-9.926 Z-2.828 B18.448 C135.161 +G01 X+10.158 Y-9.65 Z-2.827 B18.442 C133.558 +G01 X+10.401 Y-9.418 Z-2.828 B18.448 C132.21 +G01 X+10.695 Y-9.165 Z-2.827 B18.442 C130.654 +G01 X+10.968 Y-8.931 Z-2.828 B18.448 C129.21 +G01 X+11.218 Y-8.737 Z-2.827 B18.442 C127.943 +G01 X+11.468 Y-8.543 B18.445 C126.675 +G01 X+11.54 Y-8.487 Z-2.828 B18.448 C126.308 +G01 X+11.8 Y-8.306 Z-2.827 B18.442 C125.04 +G01 X+12.06 Y-8.126 B18.444 C123.772 +G01 X+12.144 Y-8.067 Z-2.828 B18.448 C123.357 +G01 X+12.408 Y-7.903 Z-2.827 B18.442 C122.113 +G01 X+12.671 Y-7.739 B18.444 C120.868 +G01 X+12.769 Y-7.678 Z-2.828 B18.448 C120.406 +G01 X+13.035 Y-7.531 Z-2.827 B18.442 C119.186 +G01 X+13.302 Y-7.384 B18.444 C117.965 +G01 X+13.413 Y-7.322 Z-2.828 B18.448 C117.455 +G01 X+13.681 Y-7.191 Z-2.827 B18.442 C116.259 +G01 X+13.949 Y-7.061 B18.444 C115.062 +G01 X+14.074 Y-7 Z-2.828 B18.448 C114.504 +G01 X+14.343 Y-6.885 Z-2.827 B18.442 C113.331 +G01 X+14.613 Y-6.771 B18.443 C112.159 +G01 X+14.751 Y-6.712 Z-2.828 B18.448 C111.553 +G01 X+15.02 Y-6.614 Z-2.827 B18.442 C110.404 +G01 X+15.29 Y-6.516 B18.443 C109.255 +G01 X+15.442 Y-6.46 Z-2.828 B18.448 C108.602 +G01 X+15.71 Y-6.377 Z-2.827 B18.442 C107.477 +G01 X+15.979 Y-6.294 B18.443 C106.352 +G01 X+16.145 Y-6.243 Z-2.828 B18.448 C105.651 +G01 X+16.412 Y-6.176 Z-2.827 B18.442 C104.55 +G01 X+16.678 Y-6.109 B18.443 C103.449 +G01 X+16.859 Y-6.063 Z-2.828 B18.448 C102.7 +G01 X+17.122 Y-6.01 Z-2.827 B18.442 C101.623 +G01 X+17.386 Y-5.958 C100.546 +G01 X+17.58 Y-5.92 Z-2.828 B18.448 C99.749 +G01 X+17.84 Y-5.882 Z-2.827 B18.442 C98.696 +G01 X+18.101 Y-5.844 C97.642 +G01 X+18.308 Y-5.814 Z-2.828 B18.448 C96.798 +G01 X+18.564 Y-5.79 Z-2.827 B18.442 C95.769 +G01 X+18.82 Y-5.766 C94.739 +G01 X+19.041 Y-5.745 Z-2.828 B18.448 C93.847 +G01 X+19.292 Y-5.735 Z-2.827 B18.442 C92.842 +G01 X+19.542 Y-5.725 C91.836 +G01 X+19.776 Y-5.715 Z-2.828 B18.448 C90.896 +G01 X+20.021 Y-5.717 Z-2.827 B18.442 C89.915 +G01 X+20.266 Y-5.72 C88.933 +G01 X+20.512 Y-5.722 Z-2.828 B18.448 C87.945 +G01 X+20.75 Y-5.737 Z-2.827 B18.443 C86.987 +G01 X+20.989 Y-5.752 B18.442 C86.03 +G01 X+21.246 Y-5.768 Z-2.828 B18.448 C84.994 +G01 X+21.478 Y-5.794 Z-2.827 B18.443 C84.06 +G01 X+21.709 Y-5.82 B18.442 C83.126 +G01 X+21.977 Y-5.851 Z-2.828 B18.448 C82.043 +G01 X+22.201 Y-5.888 Z-2.827 B18.443 C81.133 +G01 X+22.425 Y-5.925 B18.441 C80.223 +G01 X+22.703 Y-5.971 Z-2.828 B18.448 C79.092 +G01 X+23.135 Y-6.066 Z-2.827 B18.441 C77.32 +G01 X+23.421 Y-6.129 Z-2.828 B18.448 C76.141 +G01 X+23.837 Y-6.243 Z-2.827 B18.441 C74.417 +G01 X+24.131 Y-6.324 Z-2.828 B18.448 C73.19 +G01 X+24.529 Y-6.455 Z-2.827 B18.441 C71.513 +G01 X+24.829 Y-6.554 Z-2.828 B18.447 C70.239 +G01 X+25.209 Y-6.702 Z-2.826 B18.441 C68.61 +G01 X+25.515 Y-6.821 Z-2.828 B18.447 C67.288 +G01 X+25.876 Y-6.983 Z-2.826 B18.441 C65.707 +G01 X+26.186 Y-7.122 Z-2.828 B18.447 C64.337 +G01 X+26.514 Y-7.289 Z-2.827 B18.441 C62.845 +G01 X+26.841 Y-7.458 Z-2.828 B18.447 C61.352 +G01 X+27.042 Y-7.574 Z-2.827 B18.443 C60.439 +G01 X+27.243 Y-7.69 C59.526 +G01 X+27.478 Y-7.826 Z-2.828 B18.447 C58.444 +G01 X+27.667 Y-7.95 Z-2.827 B18.443 C57.534 +G01 X+27.857 Y-8.073 B18.442 C56.623 +G01 X+28.094 Y-8.228 Z-2.828 B18.447 C55.491 +G01 X+28.451 Y-8.487 Z-2.827 B18.442 C53.719 +G01 X+28.69 Y-8.66 Z-2.828 B18.447 C52.538 +G01 X+29.023 Y-8.929 Z-2.827 B18.442 C50.816 +G01 X+29.262 Y-9.122 Z-2.828 B18.447 C49.587 +G01 X+29.573 Y-9.401 Z-2.827 B18.442 C47.913 +G01 X+29.81 Y-9.613 Z-2.828 B18.448 C46.636 +G01 X+30.097 Y-9.899 Z-2.827 B18.442 C45.009 +G01 X+30.331 Y-10.132 Z-2.828 B18.448 C43.686 +G01 X+30.596 Y-10.424 Z-2.827 B18.442 C42.106 +G01 X+30.837 Y-10.691 Z-2.828 B18.448 C40.662 +G01 X+31.064 Y-10.969 Z-2.827 B18.442 C39.223 +G01 X+31.291 Y-11.247 Z-2.828 B18.448 C37.783 +G01 X+31.51 Y-11.545 Z-2.827 B18.442 C36.299 +G01 X+31.727 Y-11.84 Z-2.828 B18.448 C34.832 +G01 X+31.929 Y-12.147 Z-2.827 B18.442 C33.357 +G01 X+32.131 Y-12.454 Z-2.828 B18.448 C31.881 +G01 X+32.287 Y-12.719 Z-2.827 B18.442 C30.649 +G01 X+32.442 Y-12.984 B18.444 C29.417 +G01 X+32.504 Y-13.089 Z-2.828 B18.448 C28.93 +G01 X+32.643 Y-13.356 Z-2.827 B18.442 C27.722 +G01 X+32.782 Y-13.624 B18.444 C26.514 +G01 X+32.843 Y-13.741 Z-2.828 B18.448 C25.979 +G01 X+32.966 Y-14.01 Z-2.827 B18.442 C24.795 +G01 X+33.088 Y-14.279 B18.443 C23.61 +G01 X+33.148 Y-14.411 Z-2.828 B18.448 C23.028 +G01 X+33.255 Y-14.68 Z-2.827 B18.442 C21.868 +G01 X+33.361 Y-14.949 B18.443 C20.707 +G01 X+33.418 Y-15.095 Z-2.828 B18.448 C20.077 +G01 X+33.509 Y-15.364 Z-2.827 B18.442 C18.941 +G01 X+33.599 Y-15.633 B18.443 C17.804 +G01 X+33.653 Y-15.792 Z-2.828 B18.448 C17.126 +G01 X+33.728 Y-16.06 Z-2.827 B18.442 C16.014 +G01 X+33.803 Y-16.327 B18.443 C14.901 +G01 X+33.852 Y-16.501 Z-2.828 B18.448 C14.175 +G01 X+33.912 Y-16.766 Z-2.827 B18.442 C13.087 +G01 X+33.971 Y-17.031 B18.443 C11.997 +G01 X+34.013 Y-17.218 Z-2.828 B18.448 C11.225 +G01 X+34.059 Y-17.48 Z-2.827 B18.442 C10.159 +G01 X+34.103 Y-17.742 C9.094 +G01 X+34.138 Y-17.944 Z-2.828 B18.448 C8.273 +G01 X+34.169 Y-18.202 Z-2.827 B18.442 C7.232 +G01 X+34.199 Y-18.46 C6.191 +G01 X+34.225 Y-18.674 Z-2.828 B18.448 C5.323 +G01 X+34.242 Y-18.927 Z-2.827 B18.442 C4.305 +G01 X+34.259 Y-19.181 C3.288 +G01 X+34.274 Y-19.408 Z-2.828 B18.448 C2.372 +G01 X+34.278 Y-19.656 Z-2.827 B18.442 C1.378 +G01 X+34.282 Y-19.904 C0.384 +G01 X+34.286 Y-20.144 Z-2.828 B18.448 C359.42 +G01 X+34.277 Y-20.386 Z-2.827 B18.442 C358.451 +G01 X+34.269 Y-20.628 C357.481 +G01 X+34.26 Y-20.879 Z-2.828 B18.448 C356.469 +G01 X+34.239 Y-21.114 Z-2.827 B18.442 C355.524 +G01 X+34.218 Y-21.349 C354.578 +G01 X+34.195 Y-21.612 Z-2.828 B18.448 C353.519 +G01 X+34.164 Y-21.84 Z-2.827 B18.443 C352.597 +G01 X+34.132 Y-22.068 B18.442 C351.675 +G01 X+34.094 Y-22.34 Z-2.828 B18.448 C350.567 +G01 X+34.009 Y-22.781 Z-2.827 B18.441 C348.772 +G01 X+33.954 Y-23.063 Z-2.828 B18.448 C347.616 +G01 X+33.85 Y-23.487 Z-2.827 B18.441 C345.868 +G01 X+33.778 Y-23.777 Z-2.828 B18.448 C344.665 +G01 X+33.655 Y-24.184 Z-2.827 B18.441 C342.965 +G01 X+33.566 Y-24.481 Z-2.828 B18.448 C341.714 +G01 X+33.426 Y-24.87 Z-2.827 B18.441 C340.062 +G01 X+33.317 Y-25.174 Z-2.828 B18.447 C338.763 +G01 X+33.162 Y-25.544 Z-2.826 B18.441 C337.159 +G01 X+33.033 Y-25.853 Z-2.828 B18.447 C335.812 +G01 X+32.874 Y-26.184 Z-2.827 B18.442 C334.337 +G01 X+32.714 Y-26.516 Z-2.828 B18.447 C332.861 +G01 X+32.602 Y-26.722 Z-2.827 B18.443 C331.92 +G01 X+32.489 Y-26.929 C330.977 +G01 X+32.362 Y-27.162 Z-2.828 B18.447 C329.91 +G01 X+32.242 Y-27.357 Z-2.827 B18.443 C328.992 +G01 X+32.122 Y-27.552 C328.074 +G01 X+31.977 Y-27.788 Z-2.828 B18.447 C326.968 +G01 X+31.724 Y-28.157 Z-2.827 B18.442 C325.171 +G01 X+31.56 Y-28.395 Z-2.828 B18.447 C324.014 +G01 X+31.296 Y-28.74 Z-2.827 B18.442 C322.267 +G01 X+31.113 Y-28.979 Z-2.828 B18.447 C321.063 +G01 X+30.838 Y-29.301 Z-2.827 B18.442 C319.364 +G01 X+30.636 Y-29.539 Z-2.828 B18.447 C318.112 +G01 X+30.353 Y-29.838 Z-2.827 B18.442 C316.461 +G01 X+30.131 Y-30.074 Z-2.828 B18.448 C315.161 +G01 X+29.842 Y-30.35 Z-2.827 B18.442 C313.558 +G01 X+29.599 Y-30.582 Z-2.828 B18.448 C312.21 +G01 X+29.305 Y-30.835 Z-2.827 B18.442 C310.654 +G01 X+29.032 Y-31.069 Z-2.828 B18.448 C309.21 +G01 X+28.782 Y-31.263 Z-2.827 B18.442 C307.943 +G01 X+28.532 Y-31.457 B18.445 C306.675 +G01 X+28.46 Y-31.513 Z-2.828 B18.448 C306.308 +G01 X+28.2 Y-31.694 Z-2.827 B18.442 C305.04 +G01 X+27.94 Y-31.874 B18.444 C303.772 +G01 X+27.856 Y-31.933 Z-2.828 B18.448 C303.357 +G01 X+27.592 Y-32.097 Z-2.827 B18.442 C302.113 +G01 X+27.329 Y-32.261 B18.444 C300.868 +G01 X+27.231 Y-32.321 Z-2.828 B18.448 C300.406 +G01 X+26.965 Y-32.469 Z-2.827 B18.442 C299.186 +G01 X+26.698 Y-32.616 B18.444 C297.965 +G01 X+26.587 Y-32.677 Z-2.828 B18.448 C297.455 +G01 X+26.319 Y-32.808 Z-2.827 B18.442 C296.259 +G01 X+26.051 Y-32.939 B18.444 C295.062 +G01 X+25.926 Y-33 Z-2.828 B18.448 C294.504 +G01 X+25.657 Y-33.114 Z-2.827 B18.442 C293.331 +G01 X+25.387 Y-33.229 B18.443 C292.159 +G01 X+25.249 Y-33.288 Z-2.828 B18.448 C291.553 +G01 X+24.98 Y-33.386 Z-2.827 B18.442 C290.404 +G01 X+24.71 Y-33.484 B18.443 C289.255 +G01 X+24.558 Y-33.54 Z-2.828 B18.448 C288.602 +G01 X+24.29 Y-33.623 Z-2.827 B18.442 C287.477 +G01 X+24.021 Y-33.705 B18.443 C286.352 +G01 X+23.855 Y-33.757 Z-2.828 B18.448 C285.651 +G01 X+23.588 Y-33.824 Z-2.827 B18.442 C284.55 +G01 X+23.322 Y-33.891 B18.443 C283.449 +G01 X+23.141 Y-33.937 Z-2.828 B18.448 C282.7 +G01 X+22.878 Y-33.99 Z-2.827 B18.442 C281.623 +G01 X+22.614 Y-34.042 C280.546 +G01 X+22.42 Y-34.08 Z-2.828 B18.448 C279.749 +G01 X+22.16 Y-34.118 Z-2.827 B18.442 C278.696 +G01 X+21.899 Y-34.156 C277.642 +G01 X+21.692 Y-34.186 Z-2.828 B18.448 C276.798 +G01 X+21.436 Y-34.21 Z-2.827 B18.442 C275.769 +G01 X+21.18 Y-34.234 C274.739 +G01 X+20.959 Y-34.254 Z-2.828 B18.448 C273.847 +G01 X+20.708 Y-34.265 Z-2.827 B18.442 C272.842 +G01 X+20.458 Y-34.275 C271.836 +G01 X+20.224 Y-34.285 Z-2.828 B18.448 C270.896 +G01 X+19.979 Y-34.283 Z-2.827 B18.442 C269.915 +G01 X+19.734 Y-34.28 C268.933 +G01 X+19.488 Y-34.277 Z-2.828 B18.448 C267.945 +G01 X+19.25 Y-34.263 Z-2.827 B18.443 C266.987 +G01 X+19.011 Y-34.248 B18.442 C266.03 +G01 X+18.754 Y-34.232 Z-2.828 B18.448 C264.994 +G01 X+18.522 Y-34.206 Z-2.827 B18.443 C264.06 +G01 X+18.291 Y-34.18 B18.442 C263.126 +G01 X+18.023 Y-34.149 Z-2.828 B18.448 C262.043 +G01 X+17.799 Y-34.112 Z-2.827 B18.443 C261.133 +G01 X+17.575 Y-34.075 B18.441 C260.223 +G01 X+17.297 Y-34.029 Z-2.828 B18.448 C259.092 +G01 X+16.865 Y-33.934 Z-2.827 B18.441 C257.32 +G01 X+16.579 Y-33.871 Z-2.828 B18.448 C256.141 +G01 X+16.163 Y-33.757 Z-2.827 B18.441 C254.417 +G01 X+15.869 Y-33.676 Z-2.828 B18.448 C253.19 +G01 X+15.471 Y-33.545 Z-2.827 B18.441 C251.513 +G01 X+15.171 Y-33.446 Z-2.828 B18.447 C250.239 +G01 X+14.791 Y-33.298 Z-2.826 B18.441 C248.61 +G01 X+14.485 Y-33.179 Z-2.828 B18.447 C247.288 +G01 X+14.124 Y-33.017 Z-2.826 B18.441 C245.707 +G01 X+13.814 Y-32.878 Z-2.828 B18.447 C244.337 +G01 X+13.602 Y-32.769 Z-2.827 B18.443 C243.383 +G01 X+13.39 Y-32.66 C242.429 +G01 X+13.149 Y-32.537 Z-2.828 B18.447 C241.352 +G01 X+12.953 Y-32.423 Z-2.827 B18.443 C240.439 +G01 X+12.757 Y-32.31 C239.526 +G01 X+12.523 Y-32.173 Z-2.828 B18.447 C238.445 +G01 X+12.333 Y-32.05 Z-2.827 B18.443 C237.534 +G01 X+12.143 Y-31.927 B18.442 C236.623 +G01 X+11.906 Y-31.772 Z-2.828 B18.447 C235.491 +G01 X+11.549 Y-31.513 Z-2.827 B18.442 C233.719 +G01 X+11.31 Y-31.34 Z-2.828 B18.447 C232.538 +G01 X+10.977 Y-31.07 Z-2.827 B18.442 C230.816 +G01 X+10.738 Y-30.878 Z-2.828 B18.447 C229.587 +G01 X+10.427 Y-30.599 Z-2.827 B18.442 C227.913 +G01 X+10.19 Y-30.386 Z-2.828 B18.448 C226.636 +G01 X+9.922 Y-30.12 Z-2.827 B18.442 C225.118 +G01 X+9.921 Y-29.986 Z-2.795 B18.316 C224.729 +G01 X+9.738 Y-29.804 Z-2.797 B18.321 C223.685 +G01 X+9.448 Y-29.484 Z-2.795 B18.316 C221.939 +G01 X+9.247 Y-29.262 Z-2.797 B18.321 C220.733 +G01 X+8.981 Y-28.937 Z-2.795 B18.316 C219.036 +G01 X+8.784 Y-28.697 Z-2.797 B18.321 C217.782 +G01 X+8.542 Y-28.367 Z-2.795 B18.316 C216.133 +G01 X+8.352 Y-28.108 Z-2.797 B18.321 C214.832 +G01 X+8.133 Y-27.776 Z-2.795 B18.316 C213.229 +G01 X+7.95 Y-27.497 Z-2.797 B18.321 C211.881 +G01 X+7.794 Y-27.233 Z-2.795 B18.315 C210.649 +G01 X+7.64 Y-26.969 Z-2.796 B18.317 C209.417 +G01 X+7.574 Y-26.856 Z-2.797 B18.321 C208.882 +G01 X+7.438 Y-26.596 Z-2.795 B18.316 C207.698 +G01 X+7.303 Y-26.334 Z-2.796 B18.317 C206.513 +G01 X+7.243 Y-26.219 Z-2.797 B18.322 C205.98 +G01 X+7.12 Y-25.951 Z-2.795 B18.316 C204.795 +G01 X+6.998 Y-25.683 Z-2.796 B18.317 C203.61 +G01 X+6.939 Y-25.554 Z-2.797 B18.322 C203.029 +G01 X+6.833 Y-25.285 Z-2.795 B18.316 C201.868 +G01 X+6.727 Y-25.017 Z-2.796 B18.317 C200.707 +G01 X+6.671 Y-24.874 Z-2.797 B18.322 C200.078 +G01 X+6.58 Y-24.606 Z-2.795 B18.316 C198.941 +G01 X+6.49 Y-24.338 Z-2.796 C197.804 +G01 X+6.438 Y-24.181 Z-2.797 B18.322 C197.127 +G01 X+6.363 Y-23.915 Z-2.795 B18.316 C196.014 +G01 X+6.288 Y-23.648 C194.901 +G01 X+6.24 Y-23.478 Z-2.797 B18.322 C194.177 +G01 X+6.18 Y-23.213 Z-2.795 B18.316 C193.087 +G01 X+6.121 Y-22.949 C191.997 +G01 X+6.079 Y-22.765 Z-2.797 B18.322 C191.226 +G01 X+6.034 Y-22.504 Z-2.795 B18.316 C190.16 +G01 X+5.99 Y-22.243 C189.094 +G01 X+5.956 Y-22.044 Z-2.797 B18.322 C188.275 +G01 X+5.925 Y-21.787 Z-2.795 B18.316 C187.233 +G01 X+5.894 Y-21.53 C186.191 +G01 X+5.869 Y-21.319 Z-2.797 B18.322 C185.325 +G01 X+5.852 Y-21.066 Z-2.795 B18.316 C184.306 +G01 X+5.835 Y-20.814 B18.315 C183.288 +G01 X+5.82 Y-20.589 Z-2.797 B18.322 C182.374 +G01 X+5.816 Y-20.342 Z-2.795 B18.316 C181.379 +G01 X+5.812 Y-20.095 B18.315 C180.384 +G01 X+5.808 Y-19.859 Z-2.797 B18.322 C179.423 +G01 X+5.817 Y-19.618 Z-2.795 B18.316 C178.452 +G01 X+5.826 Y-19.376 B18.315 C177.481 +G01 X+5.834 Y-19.128 Z-2.797 B18.321 C176.473 +G01 X+5.855 Y-18.894 Z-2.795 B18.316 C175.525 +G01 X+5.875 Y-18.659 B18.315 C174.578 +G01 X+5.898 Y-18.4 Z-2.797 B18.321 C173.522 +G01 X+5.93 Y-18.173 Z-2.795 B18.316 C172.599 +G01 X+5.962 Y-17.946 B18.315 C171.675 +G01 X+5.999 Y-17.676 Z-2.797 B18.321 C170.571 +G01 X+6.084 Y-17.237 Z-2.795 B18.315 C168.772 +G01 X+6.137 Y-16.959 Z-2.797 B18.321 C167.621 +G01 X+6.242 Y-16.536 Z-2.795 B18.315 C165.868 +G01 X+6.312 Y-16.249 Z-2.797 B18.321 C164.67 +G01 X+6.435 Y-15.844 Z-2.795 B18.315 C162.965 +G01 X+6.524 Y-15.549 Z-2.797 B18.321 C161.719 +G01 X+6.663 Y-15.162 Z-2.795 B18.315 C160.062 +G01 X+6.771 Y-14.862 Z-2.797 B18.321 C158.769 +G01 X+6.925 Y-14.493 Z-2.795 B18.315 C157.159 +G01 X+7.053 Y-14.187 Z-2.797 B18.321 C155.818 +G01 X+7.221 Y-13.837 Z-2.795 B18.315 C154.255 +G01 X+7.369 Y-13.529 Z-2.797 B18.32 C152.867 +G01 X+7.49 Y-13.305 Z-2.795 B18.316 C151.839 +G01 X+7.612 Y-13.082 B18.317 C150.811 +G01 X+7.719 Y-12.887 Z-2.797 B18.32 C149.917 +G01 X+7.849 Y-12.675 Z-2.795 B18.316 C148.912 +G01 X+7.979 Y-12.464 B18.317 C147.908 +G01 X+8.101 Y-12.264 Z-2.797 B18.32 C146.974 +G01 X+8.238 Y-12.064 Z-2.795 B18.316 C145.989 +G01 X+8.376 Y-11.864 C145.004 +G01 X+8.515 Y-11.662 Z-2.797 B18.321 C144.021 +G01 X+8.659 Y-11.474 Z-2.795 B18.316 C143.061 +G01 X+8.803 Y-11.286 C142.101 +G01 X+8.96 Y-11.082 Z-2.797 B18.321 C141.068 +G01 X+9.109 Y-10.906 Z-2.795 B18.316 C140.133 +G01 X+9.259 Y-10.73 C139.198 +G01 X+9.433 Y-10.525 Z-2.797 B18.321 C138.115 +G01 X+9.742 Y-10.198 Z-2.795 B18.316 C136.294 +G01 X+9.935 Y-9.994 Z-2.797 B18.321 C135.161 +G01 X+10.252 Y-9.691 Z-2.795 B18.316 C133.391 +G01 X+10.464 Y-9.489 Z-2.797 B18.321 C132.208 +G01 X+10.787 Y-9.211 Z-2.795 B18.316 C130.488 +G01 X+11.017 Y-9.012 Z-2.797 B18.321 C129.258 +G01 X+11.345 Y-8.758 Z-2.795 B18.316 C127.584 +G01 X+11.595 Y-8.564 Z-2.797 B18.321 C126.307 +G01 X+11.925 Y-8.334 Z-2.795 B18.316 C124.681 +G01 X+12.195 Y-8.147 Z-2.797 B18.321 C123.356 +G01 X+12.527 Y-7.94 Z-2.795 B18.316 C121.778 +G01 X+12.831 Y-7.752 Z-2.796 B18.321 C120.334 +G01 X+13.088 Y-7.609 Z-2.795 B18.315 C119.149 +G01 X+13.346 Y-7.467 Z-2.796 B18.317 C117.965 +G01 X+13.455 Y-7.407 Z-2.797 B18.322 C117.455 +G01 X+13.722 Y-7.276 Z-2.795 B18.316 C116.259 +G01 X+13.989 Y-7.146 Z-2.796 B18.317 C115.062 +G01 X+14.112 Y-7.087 Z-2.797 B18.322 C114.504 +G01 X+14.38 Y-6.972 Z-2.795 B18.316 C113.332 +G01 X+14.648 Y-6.859 Z-2.796 B18.317 C112.159 +G01 X+14.784 Y-6.801 Z-2.797 B18.322 C111.554 +G01 X+15.053 Y-6.702 Z-2.795 B18.316 C110.405 +G01 X+15.321 Y-6.605 Z-2.796 C109.255 +G01 X+15.471 Y-6.55 Z-2.797 B18.322 C108.603 +G01 X+15.738 Y-6.467 Z-2.795 B18.316 C107.478 +G01 X+16.005 Y-6.385 C106.352 +G01 X+16.169 Y-6.334 Z-2.797 B18.322 C105.652 +G01 X+16.435 Y-6.267 Z-2.795 B18.316 C104.551 +G01 X+16.7 Y-6.2 C103.449 +G01 X+16.878 Y-6.155 Z-2.797 B18.322 C102.702 +G01 X+17.14 Y-6.103 Z-2.795 B18.316 C101.624 +G01 X+17.403 Y-6.051 C100.546 +G01 X+17.595 Y-6.013 Z-2.797 B18.322 C99.751 +G01 X+17.854 Y-5.975 Z-2.795 B18.316 C98.697 +G01 X+18.113 Y-5.937 C97.642 +G01 X+18.318 Y-5.908 Z-2.797 B18.322 C96.8 +G01 X+18.573 Y-5.884 Z-2.795 B18.316 C95.77 +G01 X+18.828 Y-5.86 B18.315 C94.739 +G01 X+19.046 Y-5.84 Z-2.797 B18.322 C93.85 +G01 X+19.296 Y-5.829 Z-2.795 B18.316 C92.843 +G01 X+19.545 Y-5.819 B18.315 C91.836 +G01 X+19.776 Y-5.809 Z-2.797 B18.322 C90.899 +G01 X+20.02 Y-5.812 Z-2.795 B18.316 C89.916 +G01 X+20.264 Y-5.814 B18.315 C88.933 +G01 X+20.507 Y-5.817 Z-2.797 B18.321 C87.948 +G01 X+20.745 Y-5.831 Z-2.795 B18.316 C86.989 +G01 X+20.982 Y-5.846 B18.315 C86.03 +G01 X+21.236 Y-5.861 Z-2.797 B18.321 C84.997 +G01 X+21.467 Y-5.888 Z-2.795 B18.316 C84.062 +G01 X+21.698 Y-5.914 B18.315 C83.126 +G01 X+21.962 Y-5.944 Z-2.797 B18.321 C82.047 +G01 X+22.186 Y-5.981 Z-2.795 B18.316 C81.135 +G01 X+22.409 Y-6.018 B18.315 C80.223 +G01 X+22.683 Y-6.064 Z-2.797 B18.321 C79.096 +G01 X+23.114 Y-6.158 Z-2.795 B18.315 C77.32 +G01 X+23.397 Y-6.22 Z-2.797 B18.321 C76.145 +G01 X+23.811 Y-6.334 Z-2.795 B18.315 C74.417 +G01 X+24.102 Y-6.413 Z-2.797 B18.321 C73.195 +G01 X+24.499 Y-6.544 Z-2.795 B18.315 C71.513 +G01 X+24.796 Y-6.643 Z-2.797 B18.321 C70.244 +G01 X+25.174 Y-6.789 Z-2.795 B18.315 C68.61 +G01 X+25.477 Y-6.907 Z-2.797 B18.321 C67.293 +G01 X+25.837 Y-7.069 Z-2.795 B18.315 C65.707 +G01 X+26.144 Y-7.206 Z-2.797 B18.321 C64.342 +G01 X+26.373 Y-7.323 Z-2.795 B18.316 C63.303 +G01 X+26.602 Y-7.441 B18.317 C62.263 +G01 X+26.794 Y-7.54 Z-2.797 B18.32 C61.352 +G01 X+27.012 Y-7.665 Z-2.795 B18.316 C60.356 +G01 X+27.229 Y-7.792 B18.317 C59.36 +G01 X+27.427 Y-7.906 Z-2.797 B18.32 C58.449 +G01 X+27.633 Y-8.04 Z-2.795 B18.316 C57.453 +G01 X+27.839 Y-8.173 C56.456 +G01 X+28.04 Y-8.304 Z-2.797 B18.32 C55.498 +G01 X+28.234 Y-8.445 Z-2.795 B18.316 C54.525 +G01 X+28.427 Y-8.586 C53.553 +G01 X+28.631 Y-8.734 Z-2.797 B18.321 C52.544 +G01 X+28.813 Y-8.88 Z-2.795 B18.316 C51.597 +G01 X+28.995 Y-9.027 C50.649 +G01 X+29.2 Y-9.193 Z-2.797 B18.321 C49.591 +G01 X+29.369 Y-9.345 Z-2.795 B18.316 C48.669 +G01 X+29.539 Y-9.497 C47.746 +G01 X+29.744 Y-9.681 Z-2.797 B18.321 C46.638 +G01 X+30.059 Y-9.994 Z-2.795 B18.316 C44.843 +G01 X+30.262 Y-10.196 Z-2.797 B18.321 C43.685 +G01 X+30.552 Y-10.516 Z-2.795 B18.316 C41.939 +G01 X+30.753 Y-10.737 Z-2.797 B18.321 C40.733 +G01 X+31.019 Y-11.063 Z-2.795 B18.316 C39.036 +G01 X+31.216 Y-11.303 Z-2.797 B18.321 C37.782 +G01 X+31.458 Y-11.632 Z-2.795 B18.316 C36.133 +G01 X+31.648 Y-11.892 Z-2.797 B18.321 C34.832 +G01 X+31.867 Y-12.224 Z-2.795 B18.316 C33.229 +G01 X+32.05 Y-12.503 Z-2.797 B18.321 C31.881 +G01 X+32.206 Y-12.766 Z-2.795 B18.315 C30.649 +G01 X+32.36 Y-13.031 Z-2.796 B18.317 C29.417 +G01 X+32.426 Y-13.143 Z-2.797 B18.321 C28.882 +G01 X+32.562 Y-13.404 Z-2.795 B18.316 C27.698 +G01 X+32.697 Y-13.666 Z-2.796 B18.317 C26.513 +G01 X+32.757 Y-13.781 Z-2.797 B18.322 C25.98 +G01 X+32.88 Y-14.049 Z-2.795 B18.316 C24.795 +G01 X+33.002 Y-14.317 Z-2.796 B18.317 C23.61 +G01 X+33.061 Y-14.446 Z-2.797 B18.322 C23.029 +G01 X+33.167 Y-14.714 Z-2.795 B18.316 C21.868 +G01 X+33.273 Y-14.983 Z-2.796 B18.317 C20.707 +G01 X+33.329 Y-15.126 Z-2.797 B18.322 C20.078 +G01 X+33.42 Y-15.394 Z-2.795 B18.316 C18.941 +G01 X+33.51 Y-15.662 Z-2.796 C17.804 +G01 X+33.562 Y-15.819 Z-2.797 B18.322 C17.127 +G01 X+33.637 Y-16.085 Z-2.795 B18.316 C16.014 +G01 X+33.712 Y-16.351 C14.901 +G01 X+33.76 Y-16.522 Z-2.797 B18.322 C14.177 +G01 X+33.82 Y-16.786 Z-2.795 B18.316 C13.087 +G01 X+33.879 Y-17.051 C11.997 +G01 X+33.921 Y-17.235 Z-2.797 B18.322 C11.226 +G01 X+33.966 Y-17.496 Z-2.795 B18.316 C10.16 +G01 X+34.01 Y-17.757 C9.094 +G01 X+34.044 Y-17.956 Z-2.797 B18.322 C8.275 +G01 X+34.075 Y-18.213 Z-2.795 B18.316 C7.233 +G01 X+34.106 Y-18.47 C6.191 +G01 X+34.131 Y-18.681 Z-2.797 B18.322 C5.325 +G01 X+34.148 Y-18.934 Z-2.795 B18.316 C4.306 +G01 X+34.165 Y-19.186 B18.315 C3.288 +G01 X+34.18 Y-19.41 Z-2.797 B18.322 C2.374 +G01 X+34.184 Y-19.658 Z-2.795 B18.316 C1.379 +G01 X+34.188 Y-19.905 B18.315 C0.384 +G01 X+34.192 Y-20.141 Z-2.797 B18.322 C359.423 +G01 X+34.183 Y-20.382 Z-2.795 B18.316 C358.452 +G01 X+34.174 Y-20.623 B18.315 C357.481 +G01 X+34.166 Y-20.872 Z-2.797 B18.321 C356.473 +G01 X+34.145 Y-21.106 Z-2.795 B18.316 C355.525 +G01 X+34.125 Y-21.341 B18.315 C354.578 +G01 X+34.102 Y-21.6 Z-2.797 B18.321 C353.522 +G01 X+34.07 Y-21.827 Z-2.795 B18.316 C352.599 +G01 X+34.038 Y-22.054 B18.315 C351.675 +G01 X+34.001 Y-22.323 Z-2.797 B18.321 C350.571 +G01 X+33.916 Y-22.763 Z-2.795 B18.315 C348.772 +G01 X+33.863 Y-23.041 Z-2.797 B18.321 C347.621 +G01 X+33.758 Y-23.464 Z-2.795 B18.315 C345.868 +G01 X+33.688 Y-23.751 Z-2.797 B18.321 C344.67 +G01 X+33.565 Y-24.156 Z-2.795 B18.315 C342.965 +G01 X+33.476 Y-24.45 Z-2.797 B18.321 C341.719 +G01 X+33.337 Y-24.838 Z-2.795 B18.315 C340.062 +G01 X+33.23 Y-25.138 Z-2.797 B18.321 C338.769 +G01 X+33.075 Y-25.507 Z-2.795 B18.315 C337.159 +G01 X+32.947 Y-25.812 Z-2.797 B18.321 C335.818 +G01 X+32.779 Y-26.163 Z-2.795 B18.315 C334.255 +G01 X+32.631 Y-26.471 Z-2.797 B18.32 C332.867 +G01 X+32.51 Y-26.695 Z-2.795 B18.316 C331.839 +G01 X+32.388 Y-26.918 B18.317 C330.811 +G01 X+32.281 Y-27.113 Z-2.797 B18.32 C329.917 +G01 X+32.151 Y-27.325 Z-2.795 B18.316 C328.912 +G01 X+32.021 Y-27.536 B18.317 C327.908 +G01 X+31.899 Y-27.736 Z-2.797 B18.32 C326.974 +G01 X+31.762 Y-27.936 Z-2.795 B18.316 C325.989 +G01 X+31.624 Y-28.136 C325.004 +G01 X+31.485 Y-28.338 Z-2.797 B18.321 C324.021 +G01 X+31.341 Y-28.526 Z-2.795 B18.316 C323.061 +G01 X+31.197 Y-28.714 C322.101 +G01 X+31.04 Y-28.918 Z-2.797 B18.321 C321.068 +G01 X+30.891 Y-29.094 Z-2.795 B18.316 C320.133 +G01 X+30.741 Y-29.27 C319.198 +G01 X+30.567 Y-29.475 Z-2.797 B18.321 C318.115 +G01 X+30.258 Y-29.802 Z-2.795 B18.316 C316.294 +G01 X+30.065 Y-30.006 Z-2.797 B18.321 C315.161 +G01 X+29.748 Y-30.309 Z-2.795 B18.316 C313.391 +G01 X+29.536 Y-30.511 Z-2.797 B18.321 C312.208 +G01 X+29.213 Y-30.789 Z-2.795 B18.316 C310.488 +G01 X+28.983 Y-30.988 Z-2.797 B18.321 C309.258 +G01 X+28.655 Y-31.242 Z-2.795 B18.316 C307.584 +G01 X+28.405 Y-31.436 Z-2.797 B18.321 C306.307 +G01 X+28.075 Y-31.666 Z-2.795 B18.316 C304.681 +G01 X+27.805 Y-31.853 Z-2.797 B18.321 C303.356 +G01 X+27.473 Y-32.06 Z-2.795 B18.316 C301.778 +G01 X+27.169 Y-32.248 Z-2.796 B18.321 C300.334 +G01 X+26.912 Y-32.391 Z-2.795 B18.315 C299.149 +G01 X+26.654 Y-32.533 Z-2.796 B18.317 C297.965 +G01 X+26.545 Y-32.593 Z-2.797 B18.322 C297.455 +G01 X+26.278 Y-32.724 Z-2.795 B18.316 C296.259 +G01 X+26.011 Y-32.853 Z-2.796 B18.317 C295.062 +G01 X+25.888 Y-32.913 Z-2.797 B18.322 C294.504 +G01 X+25.62 Y-33.028 Z-2.795 B18.316 C293.332 +G01 X+25.352 Y-33.141 Z-2.796 B18.317 C292.159 +G01 X+25.216 Y-33.199 Z-2.797 B18.322 C291.554 +G01 X+24.947 Y-33.298 Z-2.795 B18.316 C290.405 +G01 X+24.679 Y-33.395 Z-2.796 C289.255 +G01 X+24.529 Y-33.45 Z-2.797 B18.322 C288.603 +G01 X+24.262 Y-33.533 Z-2.795 B18.316 C287.478 +G01 X+23.995 Y-33.615 C286.352 +G01 X+23.831 Y-33.666 Z-2.797 B18.322 C285.652 +G01 X+23.565 Y-33.733 Z-2.795 B18.316 C284.551 +G01 X+23.3 Y-33.8 C283.449 +G01 X+23.122 Y-33.845 Z-2.797 B18.322 C282.702 +G01 X+22.86 Y-33.897 Z-2.795 B18.316 C281.624 +G01 X+22.597 Y-33.949 C280.546 +G01 X+22.405 Y-33.987 Z-2.797 B18.322 C279.751 +G01 X+22.146 Y-34.025 Z-2.795 B18.316 C278.697 +G01 X+21.887 Y-34.062 C277.642 +G01 X+21.682 Y-34.092 Z-2.797 B18.322 C276.8 +G01 X+21.427 Y-34.116 Z-2.795 B18.316 C275.77 +G01 X+21.172 Y-34.14 B18.315 C274.739 +G01 X+20.954 Y-34.16 Z-2.797 B18.322 C273.85 +G01 X+20.704 Y-34.171 Z-2.795 B18.316 C272.843 +G01 X+20.455 Y-34.181 B18.315 C271.836 +G01 X+20.224 Y-34.191 Z-2.797 B18.322 C270.899 +G01 X+19.98 Y-34.188 Z-2.795 B18.316 C269.916 +G01 X+19.736 Y-34.186 B18.315 C268.933 +G01 X+19.493 Y-34.183 Z-2.797 B18.321 C267.948 +G01 X+19.255 Y-34.169 Z-2.795 B18.316 C266.989 +G01 X+19.018 Y-34.154 B18.315 C266.03 +G01 X+18.764 Y-34.138 Z-2.797 B18.321 C264.997 +G01 X+18.533 Y-34.112 Z-2.795 B18.316 C264.062 +G01 X+18.302 Y-34.086 B18.315 C263.126 +G01 X+18.038 Y-34.056 Z-2.797 B18.321 C262.047 +G01 X+17.814 Y-34.019 Z-2.795 B18.316 C261.135 +G01 X+17.591 Y-33.982 B18.315 C260.223 +G01 X+17.317 Y-33.936 Z-2.797 B18.321 C259.096 +G01 X+16.886 Y-33.842 Z-2.795 B18.315 C257.32 +G01 X+16.603 Y-33.78 Z-2.797 B18.321 C256.145 +G01 X+16.189 Y-33.666 Z-2.795 B18.315 C254.417 +G01 X+15.898 Y-33.587 Z-2.797 B18.321 C253.195 +G01 X+15.501 Y-33.456 Z-2.795 B18.315 C251.513 +G01 X+15.204 Y-33.357 Z-2.797 B18.321 C250.244 +G01 X+14.826 Y-33.21 Z-2.795 B18.315 C248.61 +G01 X+14.523 Y-33.093 Z-2.797 B18.321 C247.293 +G01 X+14.163 Y-32.931 Z-2.795 B18.315 C245.707 +G01 X+13.856 Y-32.793 Z-2.797 B18.321 C244.342 +G01 X+13.627 Y-32.676 Z-2.795 B18.316 C243.303 +G01 X+13.398 Y-32.559 B18.317 C242.263 +G01 X+13.194 Y-32.454 Z-2.797 B18.321 C241.352 +G01 X+12.883 Y-32.274 Z-2.795 B18.315 C239.901 +G01 X+12.573 Y-32.094 Z-2.797 B18.32 C238.449 +G01 X+12.367 Y-31.96 Z-2.795 B18.316 C237.453 +G01 X+12.161 Y-31.826 C236.456 +G01 X+11.96 Y-31.695 Z-2.797 B18.32 C235.498 +G01 X+11.766 Y-31.555 Z-2.795 B18.316 C234.525 +G01 X+11.573 Y-31.414 C233.553 +G01 X+11.369 Y-31.266 Z-2.797 B18.321 C232.544 +G01 X+11.187 Y-31.119 Z-2.795 B18.316 C231.597 +G01 X+11.005 Y-30.973 C230.649 +G01 X+10.8 Y-30.807 Z-2.797 B18.321 C229.591 +G01 X+10.528 Y-30.563 Z-2.795 B18.315 C228.115 +G01 X+10.256 Y-30.319 Z-2.797 B18.321 C226.638 +G01 X+9.989 Y-30.053 Z-2.795 B18.315 C225.11 +G01 X+9.988 Y-29.919 Z-2.764 B18.19 C224.721 +G01 X+9.807 Y-29.74 Z-2.765 B18.194 C223.693 +G01 X+9.649 Y-29.566 Z-2.764 B18.19 C222.733 +G01 X+9.491 Y-29.391 C221.773 +G01 X+9.319 Y-29.202 Z-2.765 B18.195 C220.74 +G01 X+9.174 Y-29.025 Z-2.764 B18.19 C219.805 +G01 X+9.029 Y-28.847 C218.87 +G01 X+8.86 Y-28.64 Z-2.765 B18.195 C217.787 +G01 X+8.595 Y-28.28 Z-2.764 B18.19 C215.966 +G01 X+8.43 Y-28.055 Z-2.765 B18.195 C214.834 +G01 X+8.19 Y-27.691 Z-2.764 B18.19 C213.063 +G01 X+8.031 Y-27.449 Z-2.765 B18.195 C211.882 +G01 X+7.816 Y-27.083 Z-2.764 B18.189 C210.159 +G01 X+7.663 Y-26.823 Z-2.765 B18.195 C208.93 +G01 X+7.473 Y-26.457 Z-2.764 B18.189 C207.256 +G01 X+7.328 Y-26.179 Z-2.765 B18.195 C205.98 +G01 X+7.162 Y-25.814 Z-2.764 B18.189 C204.353 +G01 X+7.027 Y-25.518 Z-2.765 B18.195 C203.029 +G01 X+6.921 Y-25.251 Z-2.764 B18.189 C201.868 +G01 X+6.816 Y-24.984 B18.19 C200.707 +G01 X+6.754 Y-24.826 Z-2.765 B18.195 C200.005 +G01 X+6.667 Y-24.568 Z-2.764 B18.189 C198.905 +G01 X+6.58 Y-24.309 B18.19 C197.804 +G01 X+6.528 Y-24.155 Z-2.765 B18.195 C197.128 +G01 X+6.454 Y-23.89 Z-2.764 B18.189 C196.015 +G01 X+6.379 Y-23.624 B18.19 C194.901 +G01 X+6.332 Y-23.456 Z-2.765 B18.195 C194.178 +G01 X+6.273 Y-23.193 Z-2.764 B18.189 C193.088 +G01 X+6.213 Y-22.93 C191.997 +G01 X+6.172 Y-22.748 Z-2.765 B18.195 C191.228 +G01 X+6.127 Y-22.488 Z-2.764 B18.189 C190.161 +G01 X+6.083 Y-22.228 C189.094 +G01 X+6.049 Y-22.032 Z-2.765 B18.195 C188.278 +G01 X+6.018 Y-21.776 Z-2.764 B18.189 C187.234 +G01 X+5.988 Y-21.52 C186.191 +G01 X+5.963 Y-21.311 Z-2.765 B18.195 C185.327 +G01 X+5.946 Y-21.06 Z-2.764 B18.189 C184.308 +G01 X+5.929 Y-20.808 C183.288 +G01 X+5.914 Y-20.587 Z-2.765 B18.195 C182.377 +G01 X+5.91 Y-20.341 Z-2.764 B18.189 C181.381 +G01 X+5.906 Y-20.094 C180.384 +G01 X+5.903 Y-19.861 Z-2.765 B18.195 C179.426 +G01 X+5.911 Y-19.621 Z-2.764 B18.189 C178.454 +G01 X+5.92 Y-19.381 C177.481 +G01 X+5.929 Y-19.136 Z-2.765 B18.195 C176.476 +G01 X+5.949 Y-18.902 Z-2.764 B18.189 C175.527 +G01 X+5.969 Y-18.668 B18.188 C174.578 +G01 X+5.992 Y-18.412 Z-2.765 B18.195 C173.526 +G01 X+6.023 Y-18.186 Z-2.764 B18.189 C172.6 +G01 X+6.055 Y-17.959 B18.188 C171.675 +G01 X+6.092 Y-17.693 Z-2.765 B18.195 C170.575 +G01 X+6.176 Y-17.256 Z-2.764 B18.188 C168.771 +G01 X+6.229 Y-16.98 Z-2.765 B18.195 C167.625 +G01 X+6.333 Y-16.559 Z-2.764 B18.188 C165.868 +G01 X+6.403 Y-16.276 Z-2.765 B18.194 C164.674 +G01 X+6.525 Y-15.871 Z-2.764 B18.188 C162.965 +G01 X+6.613 Y-15.58 Z-2.765 B18.194 C161.724 +G01 X+6.751 Y-15.194 Z-2.764 B18.188 C160.062 +G01 X+6.858 Y-14.897 Z-2.765 B18.194 C158.774 +G01 X+7.012 Y-14.529 Z-2.764 B18.188 C157.159 +G01 X+7.138 Y-14.227 Z-2.765 B18.194 C155.823 +G01 X+7.306 Y-13.878 Z-2.764 B18.188 C154.255 +G01 X+7.452 Y-13.573 Z-2.765 B18.194 C152.873 +G01 X+7.583 Y-13.333 Z-2.764 B18.189 C151.759 +G01 X+7.714 Y-13.093 B18.191 C150.645 +G01 X+7.8 Y-12.936 Z-2.765 B18.194 C149.923 +G01 X+7.939 Y-12.708 Z-2.764 B18.189 C148.832 +G01 X+8.079 Y-12.48 B18.191 C147.742 +G01 X+8.18 Y-12.317 Z-2.765 B18.194 C146.981 +G01 X+8.327 Y-12.101 Z-2.764 B18.189 C145.91 +G01 X+8.476 Y-11.886 B18.191 C144.838 +G01 X+8.591 Y-11.719 Z-2.765 B18.194 C144.028 +G01 X+8.811 Y-11.43 Z-2.764 B18.188 C142.552 +G01 X+9.032 Y-11.142 Z-2.765 B18.194 C141.075 +G01 X+9.245 Y-10.892 Z-2.764 B18.188 C139.739 +G01 X+9.503 Y-10.589 Z-2.765 B18.194 C138.122 +G01 X+9.752 Y-10.325 Z-2.764 B18.189 C136.646 +G01 X+10.001 Y-10.061 Z-2.765 B18.194 C135.169 +G01 X+10.173 Y-9.897 Z-2.764 B18.19 C134.197 +G01 X+10.346 Y-9.732 C133.224 +G01 X+10.526 Y-9.56 Z-2.765 B18.194 C132.217 +G01 X+10.702 Y-9.408 Z-2.764 B18.19 C131.269 +G01 X+10.878 Y-9.256 C130.321 +G01 X+11.076 Y-9.086 Z-2.765 B18.195 C129.264 +G01 X+11.255 Y-8.947 Z-2.764 B18.19 C128.341 +G01 X+11.434 Y-8.808 C127.418 +G01 X+11.65 Y-8.641 Z-2.765 B18.195 C126.311 +G01 X+12.012 Y-8.389 Z-2.764 B18.19 C124.514 +G01 X+12.245 Y-8.226 Z-2.765 B18.195 C123.358 +G01 X+12.61 Y-7.999 Z-2.764 B18.19 C121.611 +G01 X+12.862 Y-7.843 Z-2.765 B18.195 C120.405 +G01 X+13.228 Y-7.64 Z-2.764 B18.189 C118.708 +G01 X+13.497 Y-7.491 Z-2.765 B18.195 C117.455 +G01 X+13.862 Y-7.313 Z-2.764 B18.189 C115.804 +G01 X+14.15 Y-7.173 Z-2.765 B18.195 C114.504 +G01 X+14.417 Y-7.059 Z-2.764 B18.189 C113.332 +G01 X+14.684 Y-6.946 B18.19 C112.159 +G01 X+14.818 Y-6.889 Z-2.765 B18.195 C111.554 +G01 X+15.085 Y-6.791 Z-2.764 B18.189 C110.405 +G01 X+15.352 Y-6.694 B18.19 C109.255 +G01 X+15.5 Y-6.64 Z-2.765 B18.195 C108.604 +G01 X+15.766 Y-6.557 Z-2.764 B18.189 C107.478 +G01 X+16.032 Y-6.475 B18.19 C106.352 +G01 X+16.194 Y-6.425 Z-2.765 B18.195 C105.651 +G01 X+16.458 Y-6.358 Z-2.764 B18.189 C104.55 +G01 X+16.722 Y-6.292 B18.19 C103.449 +G01 X+16.897 Y-6.248 Z-2.765 B18.195 C102.703 +G01 X+17.159 Y-6.195 Z-2.764 B18.189 C101.625 +G01 X+17.42 Y-6.144 C100.546 +G01 X+17.609 Y-6.106 Z-2.765 B18.195 C99.753 +G01 X+17.867 Y-6.068 Z-2.764 B18.189 C98.698 +G01 X+18.126 Y-6.031 C97.642 +G01 X+18.328 Y-6.001 Z-2.765 B18.195 C96.802 +G01 X+18.582 Y-5.978 Z-2.764 B18.189 C95.771 +G01 X+18.836 Y-5.954 C94.739 +G01 X+19.05 Y-5.934 Z-2.765 B18.195 C93.852 +G01 X+19.299 Y-5.923 Z-2.764 B18.189 C92.844 +G01 X+19.548 Y-5.913 C91.836 +G01 X+19.776 Y-5.904 Z-2.765 B18.195 C90.902 +G01 X+20.019 Y-5.906 Z-2.764 B18.189 C89.917 +G01 X+20.263 Y-5.909 C88.933 +G01 X+20.502 Y-5.911 Z-2.765 B18.195 C87.951 +G01 X+20.739 Y-5.925 Z-2.764 B18.189 C86.99 +G01 X+20.976 Y-5.94 C86.03 +G01 X+21.226 Y-5.955 Z-2.765 B18.195 C85.001 +G01 X+21.457 Y-5.981 Z-2.764 B18.189 C84.064 +G01 X+21.687 Y-6.008 B18.188 C83.126 +G01 X+21.948 Y-6.037 Z-2.765 B18.195 C82.05 +G01 X+22.393 Y-6.111 Z-2.764 B18.188 C80.223 +G01 X+22.664 Y-6.156 Z-2.765 B18.195 C79.1 +G01 X+23.094 Y-6.25 Z-2.764 B18.188 C77.32 +G01 X+23.373 Y-6.311 Z-2.765 B18.194 C76.15 +G01 X+23.786 Y-6.425 Z-2.764 B18.188 C74.417 +G01 X+24.073 Y-6.503 Z-2.765 B18.194 C73.199 +G01 X+24.469 Y-6.634 Z-2.764 B18.188 C71.513 +G01 X+24.763 Y-6.731 Z-2.765 B18.194 C70.249 +G01 X+25.14 Y-6.877 Z-2.764 B18.188 C68.61 +G01 X+25.439 Y-6.994 Z-2.765 B18.194 C67.299 +G01 X+25.798 Y-7.155 Z-2.764 B18.188 C65.707 +G01 X+26.102 Y-7.291 Z-2.765 B18.194 C64.348 +G01 X+26.441 Y-7.465 Z-2.764 B18.188 C62.804 +G01 X+26.748 Y-7.622 Z-2.765 B18.194 C61.352 +G01 X+26.982 Y-7.757 Z-2.764 B18.189 C60.273 +G01 X+27.216 Y-7.893 B18.191 C59.193 +G01 X+27.377 Y-7.986 Z-2.765 B18.194 C58.449 +G01 X+27.598 Y-8.13 Z-2.764 B18.189 C57.37 +G01 X+27.82 Y-8.274 B18.191 C56.29 +G01 X+27.985 Y-8.381 Z-2.765 B18.194 C55.505 +G01 X+28.194 Y-8.533 Z-2.764 B18.189 C54.446 +G01 X+28.404 Y-8.685 B18.19 C53.387 +G01 X+28.572 Y-8.808 Z-2.765 B18.194 C52.552 +G01 X+28.855 Y-9.035 Z-2.764 B18.188 C51.075 +G01 X+29.137 Y-9.264 Z-2.765 B18.194 C49.599 +G01 X+29.378 Y-9.479 Z-2.764 B18.188 C48.288 +G01 X+29.678 Y-9.748 Z-2.765 B18.194 C46.646 +G01 X+29.936 Y-10.004 Z-2.764 B18.189 C45.17 +G01 X+30.193 Y-10.26 Z-2.765 B18.194 C43.693 +G01 X+30.351 Y-10.434 Z-2.764 B18.19 C42.733 +G01 X+30.509 Y-10.609 C41.773 +G01 X+30.681 Y-10.798 Z-2.765 B18.195 C40.74 +G01 X+30.826 Y-10.975 Z-2.764 B18.19 C39.805 +G01 X+30.971 Y-11.153 C38.87 +G01 X+31.14 Y-11.36 Z-2.765 B18.195 C37.787 +G01 X+31.405 Y-11.72 Z-2.764 B18.19 C35.966 +G01 X+31.57 Y-11.945 Z-2.765 B18.195 C34.834 +G01 X+31.81 Y-12.309 Z-2.764 B18.19 C33.063 +G01 X+31.969 Y-12.551 Z-2.765 B18.195 C31.882 +G01 X+32.184 Y-12.917 Z-2.764 B18.189 C30.16 +G01 X+32.337 Y-13.177 Z-2.765 B18.195 C28.93 +G01 X+32.527 Y-13.543 Z-2.764 B18.189 C27.256 +G01 X+32.672 Y-13.821 Z-2.765 B18.195 C25.98 +G01 X+32.838 Y-14.186 Z-2.764 B18.189 C24.353 +G01 X+32.973 Y-14.482 Z-2.765 B18.195 C23.029 +G01 X+33.079 Y-14.749 Z-2.764 B18.189 C21.868 +G01 X+33.184 Y-15.016 B18.19 C20.707 +G01 X+33.246 Y-15.174 Z-2.765 B18.195 C20.005 +G01 X+33.333 Y-15.432 Z-2.764 B18.189 C18.905 +G01 X+33.42 Y-15.69 B18.19 C17.804 +G01 X+33.472 Y-15.845 Z-2.765 B18.195 C17.128 +G01 X+33.546 Y-16.11 Z-2.764 B18.189 C16.015 +G01 X+33.621 Y-16.376 B18.19 C14.901 +G01 X+33.668 Y-16.544 Z-2.765 B18.195 C14.178 +G01 X+33.727 Y-16.807 Z-2.764 B18.189 C13.088 +G01 X+33.787 Y-17.07 C11.997 +G01 X+33.828 Y-17.252 Z-2.765 B18.195 C11.228 +G01 X+33.873 Y-17.512 Z-2.764 B18.189 C10.161 +G01 X+33.917 Y-17.772 C9.094 +G01 X+33.951 Y-17.968 Z-2.765 B18.195 C8.278 +G01 X+33.982 Y-18.224 Z-2.764 B18.189 C7.234 +G01 X+34.012 Y-18.48 C6.191 +G01 X+34.037 Y-18.689 Z-2.765 B18.195 C5.327 +G01 X+34.054 Y-18.94 Z-2.764 B18.189 C4.308 +G01 X+34.071 Y-19.192 C3.288 +G01 X+34.086 Y-19.413 Z-2.765 B18.195 C2.377 +G01 X+34.09 Y-19.659 Z-2.764 B18.189 C1.381 +G01 X+34.094 Y-19.905 C0.384 +G01 X+34.097 Y-20.139 Z-2.765 B18.195 C359.426 +G01 X+34.089 Y-20.379 Z-2.764 B18.189 C358.454 +G01 X+34.08 Y-20.619 C357.481 +G01 X+34.071 Y-20.864 Z-2.765 B18.195 C356.476 +G01 X+34.051 Y-21.098 Z-2.764 B18.189 C355.527 +G01 X+34.031 Y-21.332 B18.188 C354.578 +G01 X+34.008 Y-21.588 Z-2.765 B18.195 C353.526 +G01 X+33.977 Y-21.814 Z-2.764 B18.189 C352.6 +G01 X+33.945 Y-22.041 B18.188 C351.675 +G01 X+33.908 Y-22.307 Z-2.765 B18.195 C350.575 +G01 X+33.824 Y-22.744 Z-2.764 B18.188 C348.771 +G01 X+33.771 Y-23.019 Z-2.765 B18.195 C347.625 +G01 X+33.667 Y-23.441 Z-2.764 B18.188 C345.868 +G01 X+33.597 Y-23.724 Z-2.765 B18.194 C344.674 +G01 X+33.475 Y-24.129 Z-2.764 B18.188 C342.965 +G01 X+33.387 Y-24.419 Z-2.765 B18.194 C341.724 +G01 X+33.249 Y-24.806 Z-2.764 B18.188 C340.062 +G01 X+33.142 Y-25.103 Z-2.765 B18.194 C338.774 +G01 X+32.988 Y-25.471 Z-2.764 B18.188 C337.159 +G01 X+32.862 Y-25.772 Z-2.765 B18.194 C335.823 +G01 X+32.694 Y-26.122 Z-2.764 B18.188 C334.255 +G01 X+32.548 Y-26.427 Z-2.765 B18.194 C332.873 +G01 X+32.417 Y-26.667 Z-2.764 B18.189 C331.759 +G01 X+32.286 Y-26.907 B18.191 C330.645 +G01 X+32.2 Y-27.064 Z-2.765 B18.194 C329.923 +G01 X+32.061 Y-27.292 Z-2.764 B18.189 C328.832 +G01 X+31.921 Y-27.52 B18.191 C327.742 +G01 X+31.82 Y-27.683 Z-2.765 B18.194 C326.981 +G01 X+31.673 Y-27.899 Z-2.764 B18.189 C325.91 +G01 X+31.524 Y-28.114 B18.191 C324.838 +G01 X+31.409 Y-28.281 Z-2.765 B18.194 C324.028 +G01 X+31.189 Y-28.57 Z-2.764 B18.188 C322.552 +G01 X+30.968 Y-28.858 Z-2.765 B18.194 C321.075 +G01 X+30.755 Y-29.108 Z-2.764 B18.188 C319.739 +G01 X+30.497 Y-29.411 Z-2.765 B18.194 C318.122 +G01 X+30.248 Y-29.675 Z-2.764 B18.189 C316.646 +G01 X+29.999 Y-29.938 Z-2.765 B18.194 C315.169 +G01 X+29.827 Y-30.103 Z-2.764 B18.19 C314.197 +G01 X+29.654 Y-30.268 C313.224 +G01 X+29.474 Y-30.44 Z-2.765 B18.194 C312.217 +G01 X+29.298 Y-30.592 Z-2.764 B18.19 C311.269 +G01 X+29.122 Y-30.744 C310.321 +G01 X+28.924 Y-30.914 Z-2.765 B18.195 C309.264 +G01 X+28.745 Y-31.053 Z-2.764 B18.19 C308.341 +G01 X+28.566 Y-31.192 C307.418 +G01 X+28.35 Y-31.359 Z-2.765 B18.195 C306.311 +G01 X+27.988 Y-31.611 Z-2.764 B18.19 C304.514 +G01 X+27.755 Y-31.774 Z-2.765 B18.195 C303.358 +G01 X+27.39 Y-32.001 Z-2.764 B18.19 C301.611 +G01 X+27.138 Y-32.157 Z-2.765 B18.195 C300.405 +G01 X+26.772 Y-32.36 Z-2.764 B18.189 C298.708 +G01 X+26.503 Y-32.509 Z-2.765 B18.195 C297.455 +G01 X+26.138 Y-32.687 Z-2.764 B18.189 C295.804 +G01 X+25.85 Y-32.827 Z-2.765 B18.195 C294.504 +G01 X+25.583 Y-32.941 Z-2.764 B18.189 C293.332 +G01 X+25.316 Y-33.054 B18.19 C292.159 +G01 X+25.182 Y-33.111 Z-2.765 B18.195 C291.554 +G01 X+24.915 Y-33.209 Z-2.764 B18.189 C290.405 +G01 X+24.648 Y-33.306 B18.19 C289.255 +G01 X+24.5 Y-33.36 Z-2.765 B18.195 C288.604 +G01 X+24.234 Y-33.443 Z-2.764 B18.189 C287.478 +G01 X+23.968 Y-33.524 B18.19 C286.352 +G01 X+23.806 Y-33.574 Z-2.765 B18.195 C285.651 +G01 X+23.542 Y-33.641 Z-2.764 B18.189 C284.55 +G01 X+23.278 Y-33.708 B18.19 C283.449 +G01 X+23.103 Y-33.752 Z-2.765 B18.195 C282.703 +G01 X+22.841 Y-33.804 Z-2.764 B18.189 C281.625 +G01 X+22.58 Y-33.856 C280.546 +G01 X+22.391 Y-33.894 Z-2.765 B18.195 C279.753 +G01 X+22.133 Y-33.932 Z-2.764 B18.189 C278.698 +G01 X+21.874 Y-33.969 C277.642 +G01 X+21.672 Y-33.998 Z-2.765 B18.195 C276.802 +G01 X+21.418 Y-34.022 Z-2.764 B18.189 C275.771 +G01 X+21.164 Y-34.046 C274.739 +G01 X+20.95 Y-34.066 Z-2.765 B18.195 C273.852 +G01 X+20.701 Y-34.076 Z-2.764 B18.189 C272.844 +G01 X+20.452 Y-34.087 C271.836 +G01 X+20.224 Y-34.096 Z-2.765 B18.195 C270.902 +G01 X+19.981 Y-34.094 Z-2.764 B18.189 C269.917 +G01 X+19.737 Y-34.091 C268.933 +G01 X+19.498 Y-34.089 Z-2.765 B18.195 C267.951 +G01 X+19.261 Y-34.075 Z-2.764 B18.189 C266.99 +G01 X+19.024 Y-34.06 C266.03 +G01 X+18.774 Y-34.044 Z-2.765 B18.195 C265.001 +G01 X+18.543 Y-34.019 Z-2.764 B18.189 C264.064 +G01 X+18.313 Y-33.992 B18.188 C263.126 +G01 X+18.052 Y-33.963 Z-2.765 B18.195 C262.05 +G01 X+17.607 Y-33.889 Z-2.764 B18.188 C260.223 +G01 X+17.336 Y-33.844 Z-2.765 B18.195 C259.1 +G01 X+16.906 Y-33.75 Z-2.764 B18.188 C257.32 +G01 X+16.627 Y-33.688 Z-2.765 B18.194 C256.15 +G01 X+16.214 Y-33.575 Z-2.764 B18.188 C254.417 +G01 X+15.927 Y-33.497 Z-2.765 B18.194 C253.199 +G01 X+15.531 Y-33.366 Z-2.764 B18.188 C251.513 +G01 X+15.237 Y-33.269 Z-2.765 B18.194 C250.249 +G01 X+14.86 Y-33.123 Z-2.764 B18.188 C248.61 +G01 X+14.561 Y-33.006 Z-2.765 B18.194 C247.299 +G01 X+14.202 Y-32.845 Z-2.764 B18.188 C245.707 +G01 X+13.898 Y-32.709 Z-2.765 B18.194 C244.348 +G01 X+13.559 Y-32.535 Z-2.764 B18.188 C242.804 +G01 X+13.239 Y-32.371 Z-2.765 B18.194 C241.352 +G01 X+13.011 Y-32.24 Z-2.764 B18.19 C240.273 +G01 X+12.784 Y-32.107 B18.191 C239.194 +G01 X+12.623 Y-32.014 Z-2.765 B18.194 C238.449 +G01 X+12.402 Y-31.87 Z-2.764 B18.189 C237.37 +G01 X+12.18 Y-31.726 B18.191 C236.29 +G01 X+12.015 Y-31.619 Z-2.765 B18.194 C235.505 +G01 X+11.806 Y-31.467 Z-2.764 B18.189 C234.446 +G01 X+11.596 Y-31.315 B18.19 C233.387 +G01 X+11.428 Y-31.192 Z-2.765 B18.194 C232.551 +G01 X+11.145 Y-30.964 Z-2.764 B18.188 C231.075 +G01 X+10.863 Y-30.736 Z-2.765 B18.194 C229.599 +G01 X+10.622 Y-30.521 Z-2.764 B18.188 C228.288 +G01 X+10.322 Y-30.251 Z-2.765 B18.194 C226.646 +G01 X+10.055 Y-29.986 Z-2.764 B18.189 C225.112 +G01 Y-29.852 Z-2.733 B18.064 C224.713 +G01 X+9.877 Y-29.676 Z-2.734 B18.068 C223.701 +G01 X+9.676 Y-29.454 Z-2.733 B18.062 C222.481 +G01 X+9.392 Y-29.142 Z-2.734 B18.068 C220.749 +G01 X+9.21 Y-28.919 Z-2.733 B18.062 C219.578 +G01 X+8.935 Y-28.583 Z-2.734 B18.068 C217.796 +G01 X+8.721 Y-28.293 Z-2.733 B18.063 C216.32 +G01 X+8.508 Y-28.002 Z-2.734 B18.068 C214.844 +G01 X+8.378 Y-27.804 Z-2.733 B18.063 C213.87 +G01 X+8.247 Y-27.606 C212.896 +G01 X+8.112 Y-27.4 Z-2.734 B18.068 C211.891 +G01 X+7.994 Y-27.201 Z-2.733 B18.063 C210.942 +G01 X+7.877 Y-27.001 C209.993 +G01 X+7.746 Y-26.778 Z-2.734 B18.068 C208.938 +G01 X+7.642 Y-26.578 Z-2.733 B18.064 C208.014 +G01 X+7.538 Y-26.378 B18.063 C207.089 +G01 X+7.414 Y-26.139 Z-2.734 B18.068 C205.986 +G01 X+7.231 Y-25.739 Z-2.733 B18.063 C204.186 +G01 X+7.114 Y-25.483 Z-2.734 B18.068 C203.033 +G01 X+6.957 Y-25.085 Z-2.733 B18.063 C201.283 +G01 X+6.849 Y-24.812 Z-2.734 B18.069 C200.081 +G01 X+6.759 Y-24.546 Z-2.733 B18.063 C198.942 +G01 X+6.67 Y-24.281 C197.804 +G01 X+6.619 Y-24.129 Z-2.734 B18.069 C197.129 +G01 X+6.545 Y-23.864 Z-2.733 B18.063 C196.015 +G01 X+6.471 Y-23.6 C194.9 +G01 X+6.424 Y-23.434 Z-2.734 B18.069 C194.179 +G01 X+6.365 Y-23.172 Z-2.733 B18.063 C193.088 +G01 X+6.306 Y-22.91 C191.997 +G01 X+6.265 Y-22.731 Z-2.734 B18.069 C191.229 +G01 X+6.22 Y-22.472 Z-2.733 B18.063 C190.162 +G01 X+6.176 Y-22.213 C189.094 +G01 X+6.143 Y-22.02 Z-2.734 B18.069 C188.279 +G01 X+6.112 Y-21.765 Z-2.733 B18.063 C187.235 +G01 X+6.082 Y-21.51 C186.191 +G01 X+6.057 Y-21.303 Z-2.734 B18.068 C185.323 +G01 X+6.04 Y-21.053 Z-2.733 B18.063 C184.305 +G01 X+6.023 Y-20.803 B18.062 C183.288 +G01 X+6.009 Y-20.585 Z-2.734 B18.068 C182.379 +G01 X+6.005 Y-20.339 Z-2.733 B18.063 C181.382 +G01 X+6.001 Y-20.094 B18.062 C180.384 +G01 X+5.997 Y-19.864 Z-2.734 B18.068 C179.429 +G01 X+6.005 Y-19.624 Z-2.733 B18.063 C178.455 +G01 X+6.014 Y-19.385 B18.062 C177.481 +G01 X+6.023 Y-19.143 Z-2.734 B18.068 C176.479 +G01 X+6.043 Y-18.91 Z-2.733 B18.063 C175.529 +G01 X+6.063 Y-18.677 B18.062 C174.578 +G01 X+6.085 Y-18.425 Z-2.734 B18.068 C173.529 +G01 X+6.117 Y-18.199 Z-2.733 B18.063 C172.602 +G01 X+6.148 Y-17.973 B18.062 C171.675 +G01 X+6.185 Y-17.71 Z-2.734 B18.068 C170.579 +G01 X+6.269 Y-17.274 Z-2.733 B18.062 C168.772 +G01 X+6.321 Y-17.002 Z-2.734 B18.068 C167.629 +G01 X+6.425 Y-16.582 Z-2.733 B18.062 C165.868 +G01 X+6.494 Y-16.302 Z-2.734 B18.068 C164.679 +G01 X+6.615 Y-15.899 Z-2.733 B18.062 C162.965 +G01 X+6.702 Y-15.612 Z-2.734 B18.068 C161.729 +G01 X+6.84 Y-15.226 Z-2.733 B18.062 C160.062 +G01 X+6.945 Y-14.933 Z-2.734 B18.068 C158.779 +G01 X+7.099 Y-14.566 Z-2.733 B18.062 C157.159 +G01 X+7.224 Y-14.268 Z-2.734 B18.068 C155.829 +G01 X+7.391 Y-13.919 Z-2.733 B18.061 C154.255 +G01 X+7.536 Y-13.617 Z-2.734 B18.067 C152.879 +G01 X+7.675 Y-13.361 Z-2.733 B18.063 C151.679 +G01 X+7.815 Y-13.104 B18.065 C150.479 +G01 X+7.881 Y-12.984 Z-2.734 B18.067 C149.929 +G01 X+8.03 Y-12.74 Z-2.733 B18.063 C148.752 +G01 X+8.18 Y-12.496 B18.065 C147.576 +G01 X+8.258 Y-12.37 Z-2.734 B18.067 C146.988 +G01 X+8.417 Y-12.138 Z-2.733 B18.063 C145.83 +G01 X+8.576 Y-11.907 B18.065 C144.672 +G01 X+8.666 Y-11.775 Z-2.734 B18.067 C144.035 +G01 X+8.885 Y-11.489 Z-2.733 B18.062 C142.559 +G01 X+9.105 Y-11.203 Z-2.734 B18.068 C141.083 +G01 X+9.317 Y-10.953 Z-2.733 B18.062 C139.739 +G01 X+9.572 Y-10.653 Z-2.734 B18.068 C138.13 +G01 X+9.789 Y-10.423 Z-2.733 B18.062 C136.836 +G01 X+10.067 Y-10.129 Z-2.734 B18.068 C135.177 +G01 X+10.287 Y-9.918 Z-2.733 B18.062 C133.933 +G01 X+10.588 Y-9.631 Z-2.734 B18.068 C132.225 +G01 X+10.81 Y-9.439 Z-2.733 B18.062 C131.03 +G01 X+11.135 Y-9.16 Z-2.734 B18.068 C129.272 +G01 X+11.419 Y-8.939 Z-2.733 B18.062 C127.796 +G01 X+11.704 Y-8.718 Z-2.734 B18.068 C126.32 +G01 X+11.901 Y-8.581 Z-2.733 B18.063 C125.334 +G01 X+12.098 Y-8.444 C124.348 +G01 X+12.296 Y-8.306 Z-2.734 B18.068 C123.367 +G01 X+12.495 Y-8.182 Z-2.733 B18.063 C122.406 +G01 X+12.694 Y-8.058 C121.444 +G01 X+12.908 Y-7.925 Z-2.734 B18.068 C120.415 +G01 X+13.108 Y-7.814 Z-2.733 B18.064 C119.478 +G01 X+13.308 Y-7.704 B18.063 C118.541 +G01 X+13.539 Y-7.576 Z-2.734 B18.068 C117.462 +G01 X+13.94 Y-7.38 Z-2.733 B18.063 C115.638 +G01 X+14.187 Y-7.26 Z-2.734 B18.068 C114.51 +G01 X+14.587 Y-7.09 Z-2.733 B18.063 C112.734 +G01 X+14.851 Y-6.977 Z-2.734 B18.068 C111.557 +G01 X+15.117 Y-6.88 Z-2.733 B18.063 C110.406 +G01 X+15.383 Y-6.783 C109.255 +G01 X+15.528 Y-6.73 Z-2.734 B18.069 C108.605 +G01 X+15.793 Y-6.648 Z-2.733 B18.063 C107.479 +G01 X+16.058 Y-6.566 C106.352 +G01 X+16.217 Y-6.517 Z-2.734 B18.069 C105.655 +G01 X+16.481 Y-6.45 Z-2.733 B18.063 C104.552 +G01 X+16.744 Y-6.384 C103.449 +G01 X+16.916 Y-6.34 Z-2.734 B18.069 C102.704 +G01 X+17.177 Y-6.288 Z-2.733 B18.063 C101.625 +G01 X+17.438 Y-6.236 C100.546 +G01 X+17.643 Y-6.197 Z-2.734 B18.068 C99.677 +G01 X+17.89 Y-6.16 Z-2.733 B18.063 C98.66 +G01 X+18.138 Y-6.124 C97.643 +G01 X+18.337 Y-6.095 Z-2.734 B18.069 C96.804 +G01 X+18.59 Y-6.072 Z-2.733 B18.063 C95.772 +G01 X+18.843 Y-6.048 C94.739 +G01 X+19.055 Y-6.028 Z-2.734 B18.068 C93.854 +G01 X+19.303 Y-6.018 Z-2.733 B18.063 C92.845 +G01 X+19.551 Y-6.008 B18.062 C91.836 +G01 X+19.776 Y-5.998 Z-2.734 B18.068 C90.904 +G01 X+20.018 Y-6 Z-2.733 B18.063 C89.919 +G01 X+20.261 Y-6.003 B18.062 C88.933 +G01 X+20.497 Y-6.005 Z-2.734 B18.068 C87.954 +G01 X+20.733 Y-6.019 Z-2.733 B18.063 C86.992 +G01 X+20.969 Y-6.034 B18.062 C86.03 +G01 X+21.217 Y-6.049 Z-2.734 B18.068 C85.004 +G01 X+21.446 Y-6.075 Z-2.733 B18.063 C84.065 +G01 X+21.675 Y-6.101 B18.062 C83.126 +G01 X+21.933 Y-6.13 Z-2.734 B18.068 C82.054 +G01 X+22.377 Y-6.204 Z-2.733 B18.062 C80.223 +G01 X+22.645 Y-6.248 Z-2.734 B18.068 C79.104 +G01 X+23.073 Y-6.342 Z-2.733 B18.062 C77.32 +G01 X+23.349 Y-6.403 Z-2.734 B18.068 C76.154 +G01 X+23.761 Y-6.515 Z-2.733 B18.062 C74.417 +G01 X+24.045 Y-6.593 Z-2.734 B18.068 C73.204 +G01 X+24.439 Y-6.723 Z-2.733 B18.062 C71.513 +G01 X+24.729 Y-6.819 Z-2.734 B18.068 C70.254 +G01 X+25.106 Y-6.965 Z-2.733 B18.062 C68.61 +G01 X+25.402 Y-7.08 Z-2.734 B18.068 C67.304 +G01 X+25.759 Y-7.241 Z-2.733 B18.061 C65.707 +G01 X+26.059 Y-7.375 Z-2.734 B18.067 C64.354 +G01 X+26.398 Y-7.549 Z-2.733 B18.061 C62.804 +G01 X+26.701 Y-7.704 Z-2.734 B18.067 C61.352 +G01 X+26.952 Y-7.849 Z-2.733 B18.063 C60.19 +G01 X+27.202 Y-7.994 B18.065 C59.027 +G01 X+27.325 Y-8.065 Z-2.734 B18.067 C58.454 +G01 X+27.563 Y-8.219 Z-2.733 B18.063 C57.289 +G01 X+27.801 Y-8.374 B18.065 C56.124 +G01 X+27.93 Y-8.458 Z-2.734 B18.067 C55.511 +G01 X+28.155 Y-8.621 Z-2.733 B18.063 C54.366 +G01 X+28.38 Y-8.784 B18.065 C53.22 +G01 X+28.514 Y-8.882 Z-2.734 B18.068 C52.559 +G01 X+28.795 Y-9.108 Z-2.733 B18.062 C51.083 +G01 X+29.075 Y-9.335 Z-2.734 B18.068 C49.606 +G01 X+29.315 Y-9.55 Z-2.733 B18.062 C48.288 +G01 X+29.612 Y-9.816 Z-2.734 B18.068 C46.654 +G01 X+29.832 Y-10.035 Z-2.733 B18.062 C45.384 +G01 X+30.123 Y-10.324 Z-2.734 B18.068 C43.701 +G01 X+30.324 Y-10.546 Z-2.733 B18.062 C42.481 +G01 X+30.608 Y-10.858 Z-2.734 B18.068 C40.749 +G01 X+30.79 Y-11.081 Z-2.733 B18.062 C39.578 +G01 X+31.065 Y-11.417 Z-2.734 B18.068 C37.796 +G01 X+31.279 Y-11.707 Z-2.733 B18.063 C36.32 +G01 X+31.492 Y-11.997 Z-2.734 B18.068 C34.844 +G01 X+31.622 Y-12.195 Z-2.733 B18.063 C33.87 +G01 X+31.753 Y-12.394 C32.896 +G01 X+31.888 Y-12.6 Z-2.734 B18.068 C31.891 +G01 X+32.006 Y-12.799 Z-2.733 B18.063 C30.942 +G01 X+32.123 Y-12.999 C29.993 +G01 X+32.254 Y-13.221 Z-2.734 B18.068 C28.938 +G01 X+32.358 Y-13.422 Z-2.733 B18.064 C28.014 +G01 X+32.462 Y-13.622 B18.063 C27.089 +G01 X+32.586 Y-13.861 Z-2.734 B18.068 C25.986 +G01 X+32.769 Y-14.261 Z-2.733 B18.063 C24.186 +G01 X+32.886 Y-14.517 Z-2.734 B18.068 C23.033 +G01 X+33.043 Y-14.915 Z-2.733 B18.063 C21.283 +G01 X+33.151 Y-15.188 Z-2.734 B18.069 C20.081 +G01 X+33.241 Y-15.454 Z-2.733 B18.063 C18.942 +G01 X+33.33 Y-15.719 C17.804 +G01 X+33.381 Y-15.871 Z-2.734 B18.069 C17.129 +G01 X+33.456 Y-16.136 Z-2.733 B18.063 C16.015 +G01 X+33.529 Y-16.4 C14.9 +G01 X+33.576 Y-16.566 Z-2.734 B18.069 C14.179 +G01 X+33.635 Y-16.828 Z-2.733 B18.063 C13.089 +G01 X+33.694 Y-17.09 C11.997 +G01 X+33.735 Y-17.269 Z-2.734 B18.069 C11.229 +G01 X+33.78 Y-17.528 Z-2.733 B18.063 C10.162 +G01 X+33.824 Y-17.787 C9.094 +G01 X+33.857 Y-17.98 Z-2.734 B18.069 C8.279 +G01 X+33.888 Y-18.235 Z-2.733 B18.063 C7.235 +G01 X+33.918 Y-18.49 C6.191 +G01 X+33.943 Y-18.697 Z-2.734 B18.068 C5.323 +G01 X+33.96 Y-18.947 Z-2.733 B18.063 C4.305 +G01 X+33.977 Y-19.197 B18.062 C3.288 +G01 X+33.991 Y-19.415 Z-2.734 B18.068 C2.379 +G01 X+33.995 Y-19.661 Z-2.733 B18.063 C1.382 +G01 X+33.999 Y-19.906 B18.062 C0.384 +G01 X+34.003 Y-20.136 Z-2.734 B18.068 C359.429 +G01 X+33.995 Y-20.376 Z-2.733 B18.063 C358.455 +G01 X+33.986 Y-20.615 B18.062 C357.481 +G01 X+33.977 Y-20.857 Z-2.734 B18.068 C356.479 +G01 X+33.957 Y-21.09 Z-2.733 B18.063 C355.529 +G01 X+33.937 Y-21.323 B18.062 C354.578 +G01 X+33.915 Y-21.575 Z-2.734 B18.068 C353.529 +G01 X+33.883 Y-21.801 Z-2.733 B18.063 C352.602 +G01 X+33.852 Y-22.027 B18.062 C351.675 +G01 X+33.815 Y-22.29 Z-2.734 B18.068 C350.579 +G01 X+33.731 Y-22.726 Z-2.733 B18.062 C348.772 +G01 X+33.679 Y-22.998 Z-2.734 B18.068 C347.629 +G01 X+33.575 Y-23.418 Z-2.733 B18.062 C345.868 +G01 X+33.506 Y-23.698 Z-2.734 B18.068 C344.679 +G01 X+33.385 Y-24.101 Z-2.733 B18.062 C342.965 +G01 X+33.298 Y-24.388 Z-2.734 B18.068 C341.729 +G01 X+33.16 Y-24.774 Z-2.733 B18.062 C340.062 +G01 X+33.055 Y-25.067 Z-2.734 B18.068 C338.779 +G01 X+32.901 Y-25.434 Z-2.733 B18.062 C337.159 +G01 X+32.776 Y-25.732 Z-2.734 B18.068 C335.829 +G01 X+32.609 Y-26.081 Z-2.733 B18.061 C334.255 +G01 X+32.464 Y-26.382 Z-2.734 B18.067 C332.879 +G01 X+32.325 Y-26.639 Z-2.733 B18.063 C331.679 +G01 X+32.185 Y-26.896 B18.065 C330.479 +G01 X+32.119 Y-27.016 Z-2.734 B18.067 C329.929 +G01 X+31.97 Y-27.26 Z-2.733 B18.063 C328.752 +G01 X+31.82 Y-27.504 B18.065 C327.576 +G01 X+31.742 Y-27.63 Z-2.734 B18.067 C326.988 +G01 X+31.583 Y-27.862 Z-2.733 B18.063 C325.83 +G01 X+31.424 Y-28.093 B18.065 C324.672 +G01 X+31.334 Y-28.225 Z-2.734 B18.067 C324.035 +G01 X+31.115 Y-28.511 Z-2.733 B18.062 C322.559 +G01 X+30.895 Y-28.797 Z-2.734 B18.068 C321.083 +G01 X+30.683 Y-29.047 Z-2.733 B18.062 C319.739 +G01 X+30.428 Y-29.346 Z-2.734 B18.068 C318.13 +G01 X+30.211 Y-29.576 Z-2.733 B18.062 C316.836 +G01 X+29.933 Y-29.871 Z-2.734 B18.068 C315.177 +G01 X+29.713 Y-30.081 Z-2.733 B18.062 C313.933 +G01 X+29.412 Y-30.369 Z-2.734 B18.068 C312.225 +G01 X+29.19 Y-30.56 Z-2.733 B18.062 C311.03 +G01 X+28.865 Y-30.84 Z-2.734 B18.068 C309.272 +G01 X+28.581 Y-31.061 Z-2.733 B18.062 C307.796 +G01 X+28.296 Y-31.282 Z-2.734 B18.068 C306.32 +G01 X+28.099 Y-31.419 Z-2.733 B18.063 C305.334 +G01 X+27.902 Y-31.556 C304.348 +G01 X+27.704 Y-31.694 Z-2.734 B18.068 C303.367 +G01 X+27.505 Y-31.818 Z-2.733 B18.063 C302.406 +G01 X+27.306 Y-31.942 C301.444 +G01 X+27.092 Y-32.075 Z-2.734 B18.068 C300.415 +G01 X+26.892 Y-32.186 Z-2.733 B18.064 C299.478 +G01 X+26.692 Y-32.296 B18.063 C298.541 +G01 X+26.461 Y-32.424 Z-2.734 B18.068 C297.462 +G01 X+26.06 Y-32.619 Z-2.733 B18.063 C295.638 +G01 X+25.813 Y-32.74 Z-2.734 B18.068 C294.51 +G01 X+25.413 Y-32.91 Z-2.733 B18.063 C292.734 +G01 X+25.149 Y-33.023 Z-2.734 B18.068 C291.557 +G01 X+24.883 Y-33.12 Z-2.733 B18.063 C290.406 +G01 X+24.617 Y-33.217 C289.255 +G01 X+24.472 Y-33.27 Z-2.734 B18.069 C288.605 +G01 X+24.207 Y-33.352 Z-2.733 B18.063 C287.479 +G01 X+23.942 Y-33.434 C286.352 +G01 X+23.783 Y-33.483 Z-2.734 B18.069 C285.655 +G01 X+23.519 Y-33.55 Z-2.733 B18.063 C284.552 +G01 X+23.256 Y-33.616 C283.449 +G01 X+23.084 Y-33.66 Z-2.734 B18.069 C282.704 +G01 X+22.823 Y-33.712 Z-2.733 B18.063 C281.625 +G01 X+22.562 Y-33.763 C280.546 +G01 X+22.357 Y-33.803 Z-2.734 B18.068 C279.677 +G01 X+22.11 Y-33.839 Z-2.733 B18.063 C278.66 +G01 X+21.862 Y-33.875 C277.643 +G01 X+21.663 Y-33.904 Z-2.734 B18.069 C276.804 +G01 X+21.41 Y-33.928 Z-2.733 B18.063 C275.772 +G01 X+21.157 Y-33.952 C274.739 +G01 X+20.945 Y-33.972 Z-2.734 B18.068 C273.854 +G01 X+20.697 Y-33.982 Z-2.733 B18.063 C272.845 +G01 X+20.449 Y-33.992 B18.062 C271.836 +G01 X+20.224 Y-34.002 Z-2.734 B18.068 C270.904 +G01 X+19.982 Y-34 Z-2.733 B18.063 C269.919 +G01 X+19.739 Y-33.997 B18.062 C268.933 +G01 X+19.503 Y-33.995 Z-2.734 B18.068 C267.954 +G01 X+19.267 Y-33.98 Z-2.733 B18.063 C266.992 +G01 X+19.031 Y-33.966 B18.062 C266.03 +G01 X+18.783 Y-33.951 Z-2.734 B18.068 C265.004 +G01 X+18.554 Y-33.925 Z-2.733 B18.063 C264.065 +G01 X+18.325 Y-33.899 B18.062 C263.126 +G01 X+18.067 Y-33.869 Z-2.734 B18.068 C262.054 +G01 X+17.623 Y-33.796 Z-2.733 B18.062 C260.223 +G01 X+17.355 Y-33.751 Z-2.734 B18.068 C259.104 +G01 X+16.927 Y-33.658 Z-2.733 B18.062 C257.32 +G01 X+16.651 Y-33.597 Z-2.734 B18.068 C256.154 +G01 X+16.239 Y-33.484 Z-2.733 B18.062 C254.417 +G01 X+15.955 Y-33.407 Z-2.734 B18.068 C253.204 +G01 X+15.561 Y-33.277 Z-2.733 B18.062 C251.513 +G01 X+15.271 Y-33.181 Z-2.734 B18.068 C250.254 +G01 X+14.894 Y-33.035 Z-2.733 B18.062 C248.61 +G01 X+14.598 Y-32.92 Z-2.734 B18.068 C247.304 +G01 X+14.241 Y-32.759 Z-2.733 B18.061 C245.707 +G01 X+13.941 Y-32.625 Z-2.734 B18.067 C244.354 +G01 X+13.602 Y-32.451 Z-2.733 B18.061 C242.804 +G01 X+13.284 Y-32.288 Z-2.734 B18.068 C241.352 +G01 X+13.041 Y-32.148 Z-2.733 B18.063 C240.19 +G01 X+12.798 Y-32.006 B18.065 C239.028 +G01 X+12.675 Y-31.935 Z-2.734 B18.067 C238.454 +G01 X+12.437 Y-31.78 Z-2.733 B18.063 C237.289 +G01 X+12.199 Y-31.626 B18.065 C236.124 +G01 X+12.07 Y-31.542 Z-2.734 B18.067 C235.511 +G01 X+11.845 Y-31.379 Z-2.733 B18.063 C234.366 +G01 X+11.62 Y-31.216 B18.065 C233.22 +G01 X+11.486 Y-31.118 Z-2.734 B18.068 C232.559 +G01 X+11.205 Y-30.892 Z-2.733 B18.062 C231.083 +G01 X+10.925 Y-30.665 Z-2.734 B18.068 C229.606 +G01 X+10.685 Y-30.45 Z-2.733 B18.062 C228.288 +G01 X+10.388 Y-30.184 Z-2.734 B18.068 C226.654 +G01 X+10.122 Y-29.919 Z-2.733 B18.062 C225.114 +G01 X+10.121 Y-29.786 Z-2.702 B17.937 C224.715 +G01 X+9.946 Y-29.611 Z-2.703 B17.942 C223.709 +G01 X+9.745 Y-29.39 Z-2.702 B17.935 C222.481 +G01 X+9.465 Y-29.081 Z-2.703 B17.942 C220.757 +G01 X+9.283 Y-28.859 Z-2.702 B17.935 C219.578 +G01 X+9.011 Y-28.527 Z-2.703 B17.942 C217.805 +G01 X+8.848 Y-28.305 Z-2.702 B17.935 C216.675 +G01 X+8.587 Y-27.95 Z-2.704 B17.942 C214.853 +G01 X+8.442 Y-27.729 Z-2.702 B17.936 C213.771 +G01 X+8.317 Y-27.541 C212.836 +G01 X+8.193 Y-27.352 Z-2.704 B17.942 C211.9 +G01 X+8.065 Y-27.135 Z-2.702 B17.937 C210.864 +G01 X+7.938 Y-26.919 C209.826 +G01 X+7.83 Y-26.734 Z-2.704 B17.942 C208.948 +G01 X+7.716 Y-26.517 Z-2.702 B17.937 C207.936 +G01 X+7.604 Y-26.299 C206.923 +G01 X+7.499 Y-26.099 Z-2.704 B17.942 C205.996 +G01 X+7.4 Y-25.881 Z-2.702 B17.937 C205.008 +G01 X+7.3 Y-25.663 C204.02 +G01 X+7.202 Y-25.447 Z-2.704 B17.942 C203.044 +G01 X+7.116 Y-25.23 Z-2.702 B17.937 C202.08 +G01 X+7.03 Y-25.013 C201.116 +G01 X+6.938 Y-24.781 Z-2.704 B17.942 C200.092 +G01 X+6.865 Y-24.565 Z-2.702 B17.937 C199.152 +G01 X+6.793 Y-24.349 C198.213 +G01 X+6.71 Y-24.102 Z-2.704 B17.942 C197.139 +G01 X+6.636 Y-23.839 Z-2.702 B17.936 C196.02 +G01 X+6.562 Y-23.576 B17.937 C194.901 +G01 X+6.516 Y-23.413 Z-2.704 B17.942 C194.187 +G01 X+6.457 Y-23.152 Z-2.702 B17.936 C193.092 +G01 X+6.398 Y-22.89 B17.937 C191.997 +G01 X+6.358 Y-22.714 Z-2.704 B17.942 C191.235 +G01 X+6.314 Y-22.456 Z-2.702 B17.936 C190.165 +G01 X+6.269 Y-22.198 C189.094 +G01 X+6.237 Y-22.008 Z-2.704 B17.942 C188.283 +G01 X+6.206 Y-21.754 Z-2.702 B17.936 C187.237 +G01 X+6.176 Y-21.499 C186.191 +G01 X+6.152 Y-21.297 Z-2.704 B17.942 C185.332 +G01 X+6.134 Y-21.047 Z-2.702 B17.936 C184.31 +G01 X+6.118 Y-20.797 C183.288 +G01 X+6.103 Y-20.582 Z-2.704 B17.942 C182.382 +G01 X+6.099 Y-20.338 Z-2.702 B17.936 C181.383 +G01 X+6.095 Y-20.093 C180.384 +G01 X+6.092 Y-19.845 Z-2.703 B17.941 C179.348 +G01 X+6.1 Y-19.617 Z-2.702 B17.936 C178.415 +G01 X+6.109 Y-19.389 C177.481 +G01 X+6.117 Y-19.15 Z-2.704 B17.942 C176.482 +G01 X+6.137 Y-18.918 Z-2.702 B17.936 C175.53 +G01 X+6.157 Y-18.686 C174.578 +G01 X+6.179 Y-18.437 Z-2.704 B17.942 C173.532 +G01 X+6.242 Y-17.987 Z-2.702 B17.936 C171.675 +G01 X+6.278 Y-17.727 Z-2.704 B17.942 C170.583 +G01 X+6.361 Y-17.292 Z-2.702 B17.935 C168.771 +G01 X+6.413 Y-17.024 Z-2.703 B17.942 C167.633 +G01 X+6.516 Y-16.605 Z-2.702 B17.935 C165.868 +G01 X+6.584 Y-16.328 Z-2.703 B17.942 C164.683 +G01 X+6.705 Y-15.927 Z-2.702 B17.935 C162.965 +G01 X+6.791 Y-15.643 Z-2.703 B17.941 C161.734 +G01 X+6.929 Y-15.258 Z-2.702 B17.935 C160.062 +G01 X+7.033 Y-14.968 Z-2.703 B17.941 C158.784 +G01 X+7.186 Y-14.602 Z-2.702 B17.935 C157.159 +G01 X+7.309 Y-14.308 Z-2.703 B17.941 C155.834 +G01 X+7.476 Y-13.96 Z-2.702 B17.935 C154.255 +G01 X+7.619 Y-13.662 Z-2.703 B17.941 C152.884 +G01 X+7.798 Y-13.334 Z-2.702 B17.935 C151.352 +G01 X+7.962 Y-13.033 Z-2.703 B17.941 C149.935 +G01 X+8.149 Y-12.727 Z-2.702 C148.465 +G01 X+8.336 Y-12.422 Z-2.703 C146.994 +G01 X+8.506 Y-12.175 Z-2.702 B17.936 C145.75 +G01 X+8.676 Y-11.928 Z-2.703 B17.939 C144.506 +G01 X+8.742 Y-11.832 B17.941 C144.042 +G01 X+8.959 Y-11.547 Z-2.702 C142.566 +G01 X+9.177 Y-11.263 Z-2.703 C141.09 +G01 X+9.389 Y-11.014 Z-2.702 B17.935 C139.739 +G01 X+9.641 Y-10.718 Z-2.703 B17.941 C138.138 +G01 X+9.858 Y-10.488 Z-2.702 B17.935 C136.836 +G01 X+10.133 Y-10.197 Z-2.703 B17.941 C135.185 +G01 X+10.353 Y-9.987 Z-2.702 B17.935 C133.933 +G01 X+10.651 Y-9.702 Z-2.703 B17.941 C132.233 +G01 X+10.872 Y-9.511 Z-2.702 B17.935 C131.03 +G01 X+11.193 Y-9.234 Z-2.703 B17.942 C129.281 +G01 X+11.415 Y-9.062 Z-2.702 B17.935 C128.126 +G01 X+11.759 Y-8.795 Z-2.703 B17.942 C126.329 +G01 X+11.98 Y-8.641 Z-2.702 B17.935 C125.223 +G01 X+12.347 Y-8.386 Z-2.704 B17.942 C123.376 +G01 X+12.562 Y-8.251 Z-2.702 B17.937 C122.327 +G01 X+12.777 Y-8.117 C121.278 +G01 X+12.955 Y-8.007 Z-2.704 B17.942 C120.424 +G01 X+13.172 Y-7.887 Z-2.702 B17.937 C119.4 +G01 X+13.389 Y-7.767 C118.375 +G01 X+13.582 Y-7.66 Z-2.704 B17.942 C117.472 +G01 X+13.799 Y-7.554 Z-2.702 B17.937 C116.472 +G01 X+14.017 Y-7.448 C115.471 +G01 X+14.225 Y-7.346 Z-2.704 B17.942 C114.52 +G01 X+14.443 Y-7.254 Z-2.702 B17.937 C113.544 +G01 X+14.66 Y-7.161 C112.568 +G01 X+14.884 Y-7.066 Z-2.704 B17.942 C111.568 +G01 X+15.101 Y-6.986 Z-2.702 B17.937 C110.616 +G01 X+15.318 Y-6.907 C109.665 +G01 X+15.557 Y-6.82 Z-2.704 B17.942 C108.615 +G01 X+15.821 Y-6.738 Z-2.702 B17.936 C107.484 +G01 X+16.085 Y-6.657 B17.937 C106.352 +G01 X+16.241 Y-6.608 Z-2.704 B17.942 C105.663 +G01 X+16.504 Y-6.542 Z-2.702 B17.936 C104.556 +G01 X+16.766 Y-6.476 B17.937 C103.449 +G01 X+16.936 Y-6.433 Z-2.704 B17.942 C102.711 +G01 X+17.195 Y-6.381 Z-2.702 B17.936 C101.629 +G01 X+17.455 Y-6.329 B17.937 C100.546 +G01 X+17.638 Y-6.293 Z-2.704 B17.942 C99.759 +G01 X+17.894 Y-6.255 Z-2.702 B17.936 C98.701 +G01 X+18.151 Y-6.218 C97.643 +G01 X+18.347 Y-6.189 Z-2.704 B17.942 C96.807 +G01 X+18.599 Y-6.166 Z-2.702 B17.936 C95.773 +G01 X+18.851 Y-6.142 C94.739 +G01 X+19.06 Y-6.123 Z-2.704 B17.942 C93.857 +G01 X+19.307 Y-6.112 Z-2.702 B17.936 C92.846 +G01 X+19.555 Y-6.102 C91.836 +G01 X+19.776 Y-6.093 Z-2.704 B17.942 C90.907 +G01 X+20.017 Y-6.095 Z-2.702 B17.936 C89.92 +G01 X+20.259 Y-6.097 C88.933 +G01 X+20.492 Y-6.1 Z-2.704 B17.942 C87.957 +G01 X+20.727 Y-6.114 Z-2.702 B17.936 C86.994 +G01 X+20.963 Y-6.128 C86.03 +G01 X+21.207 Y-6.143 Z-2.704 B17.942 C85.007 +G01 X+21.436 Y-6.169 Z-2.702 B17.936 C84.067 +G01 X+21.664 Y-6.195 C83.126 +G01 X+21.919 Y-6.224 Z-2.704 B17.942 C82.058 +G01 X+22.361 Y-6.297 Z-2.702 B17.936 C80.223 +G01 X+22.625 Y-6.341 Z-2.703 B17.942 C79.108 +G01 X+23.052 Y-6.434 Z-2.702 B17.935 C77.32 +G01 X+23.325 Y-6.494 Z-2.703 B17.942 C76.158 +G01 X+23.735 Y-6.606 Z-2.702 B17.935 C74.417 +G01 X+24.016 Y-6.683 Z-2.703 B17.941 C73.209 +G01 X+24.409 Y-6.813 Z-2.702 B17.935 C71.513 +G01 X+24.696 Y-6.908 Z-2.703 B17.941 C70.259 +G01 X+25.071 Y-7.053 Z-2.702 B17.935 C68.61 +G01 X+25.364 Y-7.167 Z-2.703 B17.941 C67.309 +G01 X+25.72 Y-7.327 Z-2.702 B17.935 C65.707 +G01 X+26.017 Y-7.46 Z-2.703 B17.941 C64.359 +G01 X+26.355 Y-7.633 Z-2.702 B17.935 C62.804 +G01 X+26.655 Y-7.786 Z-2.703 B17.941 C61.352 +G01 X+26.965 Y-7.965 Z-2.702 B17.936 C59.906 +G01 X+27.275 Y-8.145 Z-2.703 B17.941 C58.46 +G01 X+27.529 Y-8.31 Z-2.702 B17.936 C57.209 +G01 X+27.782 Y-8.475 Z-2.703 B17.939 C55.958 +G01 X+27.875 Y-8.535 B17.941 C55.518 +G01 X+28.165 Y-8.745 Z-2.702 C54.042 +G01 X+28.455 Y-8.956 Z-2.703 C52.566 +G01 X+28.714 Y-9.165 Z-2.702 B17.935 C51.191 +G01 X+29.012 Y-9.406 Z-2.703 B17.941 C49.614 +G01 X+29.252 Y-9.62 Z-2.702 B17.935 C48.288 +G01 X+29.546 Y-9.884 Z-2.703 B17.941 C46.662 +G01 X+29.766 Y-10.102 Z-2.702 B17.935 C45.384 +G01 X+30.054 Y-10.389 Z-2.703 B17.941 C43.709 +G01 X+30.255 Y-10.61 Z-2.702 B17.935 C42.481 +G01 X+30.535 Y-10.919 Z-2.703 B17.942 C40.757 +G01 X+30.717 Y-11.141 Z-2.702 B17.935 C39.578 +G01 X+30.989 Y-11.473 Z-2.703 B17.942 C37.805 +G01 X+31.152 Y-11.695 Z-2.702 B17.935 C36.675 +G01 X+31.413 Y-12.05 Z-2.704 B17.942 C34.853 +G01 X+31.558 Y-12.271 Z-2.702 B17.936 C33.771 +G01 X+31.683 Y-12.459 C32.836 +G01 X+31.807 Y-12.648 Z-2.704 B17.942 C31.9 +G01 X+31.935 Y-12.864 Z-2.702 B17.937 C30.864 +G01 X+32.062 Y-13.081 C29.826 +G01 X+32.17 Y-13.266 Z-2.704 B17.942 C28.948 +G01 X+32.284 Y-13.483 Z-2.702 B17.937 C27.936 +G01 X+32.396 Y-13.701 C26.923 +G01 X+32.501 Y-13.901 Z-2.704 B17.942 C25.996 +G01 X+32.6 Y-14.119 Z-2.702 B17.937 C25.008 +G01 X+32.7 Y-14.337 C24.02 +G01 X+32.798 Y-14.553 Z-2.704 B17.942 C23.044 +G01 X+32.884 Y-14.77 Z-2.702 B17.937 C22.08 +G01 X+32.97 Y-14.987 C21.116 +G01 X+33.062 Y-15.219 Z-2.704 B17.942 C20.092 +G01 X+33.135 Y-15.435 Z-2.702 B17.937 C19.152 +G01 X+33.207 Y-15.651 C18.213 +G01 X+33.29 Y-15.898 Z-2.704 B17.942 C17.139 +G01 X+33.364 Y-16.161 Z-2.702 B17.936 C16.02 +G01 X+33.438 Y-16.424 B17.937 C14.901 +G01 X+33.484 Y-16.587 Z-2.704 B17.942 C14.187 +G01 X+33.543 Y-16.848 Z-2.702 B17.936 C13.092 +G01 X+33.602 Y-17.109 B17.937 C11.997 +G01 X+33.642 Y-17.286 Z-2.704 B17.942 C11.235 +G01 X+33.686 Y-17.544 Z-2.702 B17.936 C10.165 +G01 X+33.731 Y-17.802 C9.094 +G01 X+33.763 Y-17.992 Z-2.704 B17.942 C8.283 +G01 X+33.794 Y-18.246 Z-2.702 B17.936 C7.237 +G01 X+33.824 Y-18.5 C6.191 +G01 X+33.848 Y-18.703 Z-2.704 B17.942 C5.332 +G01 X+33.866 Y-18.953 Z-2.702 B17.936 C4.31 +G01 X+33.882 Y-19.202 C3.288 +G01 X+33.897 Y-19.418 Z-2.704 B17.942 C2.382 +G01 X+33.901 Y-19.662 Z-2.702 B17.936 C1.383 +G01 X+33.905 Y-19.907 C0.384 +G01 X+33.908 Y-20.155 Z-2.703 B17.941 C359.348 +G01 X+33.9 Y-20.383 Z-2.702 B17.936 C358.415 +G01 X+33.891 Y-20.611 C357.481 +G01 X+33.883 Y-20.85 Z-2.704 B17.942 C356.482 +G01 X+33.863 Y-21.082 Z-2.702 B17.936 C355.53 +G01 X+33.843 Y-21.314 C354.578 +G01 X+33.821 Y-21.563 Z-2.704 B17.942 C353.532 +G01 X+33.758 Y-22.013 Z-2.702 B17.936 C351.675 +G01 X+33.722 Y-22.273 Z-2.704 B17.942 C350.583 +G01 X+33.639 Y-22.707 Z-2.702 B17.935 C348.771 +G01 X+33.587 Y-22.976 Z-2.703 B17.942 C347.633 +G01 X+33.484 Y-23.395 Z-2.702 B17.935 C345.868 +G01 X+33.416 Y-23.671 Z-2.703 B17.942 C344.683 +G01 X+33.295 Y-24.073 Z-2.702 B17.935 C342.965 +G01 X+33.209 Y-24.357 Z-2.703 B17.941 C341.734 +G01 X+33.071 Y-24.741 Z-2.702 B17.935 C340.062 +G01 X+32.967 Y-25.031 Z-2.703 B17.941 C338.784 +G01 X+32.814 Y-25.397 Z-2.702 B17.935 C337.159 +G01 X+32.691 Y-25.692 Z-2.703 B17.941 C335.834 +G01 X+32.524 Y-26.039 Z-2.702 B17.935 C334.255 +G01 X+32.381 Y-26.338 Z-2.703 B17.941 C332.884 +G01 X+32.202 Y-26.666 Z-2.702 B17.935 C331.352 +G01 X+32.038 Y-26.967 Z-2.703 B17.941 C329.935 +G01 X+31.851 Y-27.272 Z-2.702 C328.465 +G01 X+31.664 Y-27.577 Z-2.703 C326.994 +G01 X+31.494 Y-27.825 Z-2.702 B17.936 C325.75 +G01 X+31.324 Y-28.071 Z-2.703 B17.939 C324.506 +G01 X+31.258 Y-28.168 B17.941 C324.042 +G01 X+31.041 Y-28.452 Z-2.702 C322.566 +G01 X+30.823 Y-28.737 Z-2.703 C321.09 +G01 X+30.611 Y-28.986 Z-2.702 B17.935 C319.739 +G01 X+30.359 Y-29.282 Z-2.703 B17.941 C318.138 +G01 X+30.142 Y-29.512 Z-2.702 B17.935 C316.836 +G01 X+29.867 Y-29.803 Z-2.703 B17.941 C315.185 +G01 X+29.647 Y-30.013 Z-2.702 B17.935 C313.933 +G01 X+29.349 Y-30.298 Z-2.703 B17.941 C312.233 +G01 X+29.128 Y-30.489 Z-2.702 B17.935 C311.03 +G01 X+28.807 Y-30.766 Z-2.703 B17.942 C309.281 +G01 X+28.585 Y-30.938 Z-2.702 B17.935 C308.126 +G01 X+28.241 Y-31.205 Z-2.703 B17.942 C306.329 +G01 X+28.02 Y-31.359 Z-2.702 B17.935 C305.223 +G01 X+27.653 Y-31.614 Z-2.704 B17.942 C303.376 +G01 X+27.438 Y-31.748 Z-2.702 B17.937 C302.327 +G01 X+27.223 Y-31.882 C301.278 +G01 X+27.045 Y-31.993 Z-2.704 B17.942 C300.424 +G01 X+26.828 Y-32.113 Z-2.702 B17.937 C299.4 +G01 X+26.611 Y-32.233 C298.375 +G01 X+26.418 Y-32.34 Z-2.704 B17.942 C297.472 +G01 X+26.201 Y-32.446 Z-2.702 B17.937 C296.472 +G01 X+25.983 Y-32.552 C295.471 +G01 X+25.775 Y-32.654 Z-2.704 B17.942 C294.52 +G01 X+25.557 Y-32.746 Z-2.702 B17.937 C293.544 +G01 X+25.34 Y-32.839 C292.568 +G01 X+25.116 Y-32.934 Z-2.704 B17.942 C291.568 +G01 X+24.899 Y-33.014 Z-2.702 B17.937 C290.616 +G01 X+24.682 Y-33.093 C289.665 +G01 X+24.443 Y-33.18 Z-2.704 B17.942 C288.615 +G01 X+24.179 Y-33.262 Z-2.702 B17.936 C287.484 +G01 X+23.915 Y-33.343 B17.937 C286.352 +G01 X+23.759 Y-33.392 Z-2.704 B17.942 C285.663 +G01 X+23.496 Y-33.458 Z-2.702 B17.936 C284.556 +G01 X+23.234 Y-33.524 B17.937 C283.449 +G01 X+23.064 Y-33.567 Z-2.704 B17.942 C282.711 +G01 X+22.805 Y-33.619 Z-2.702 B17.936 C281.629 +G01 X+22.545 Y-33.671 B17.937 C280.546 +G01 X+22.362 Y-33.707 Z-2.704 B17.942 C279.759 +G01 X+22.106 Y-33.745 Z-2.702 B17.936 C278.701 +G01 X+21.849 Y-33.782 C277.643 +G01 X+21.653 Y-33.81 Z-2.704 B17.942 C276.807 +G01 X+21.401 Y-33.834 Z-2.702 B17.936 C275.773 +G01 X+21.149 Y-33.858 C274.739 +G01 X+20.94 Y-33.877 Z-2.704 B17.942 C273.857 +G01 X+20.693 Y-33.888 Z-2.702 B17.936 C272.846 +G01 X+20.446 Y-33.898 C271.836 +G01 X+20.224 Y-33.907 Z-2.704 B17.942 C270.907 +G01 X+19.983 Y-33.905 Z-2.702 B17.936 C269.92 +G01 X+19.741 Y-33.902 C268.933 +G01 X+19.508 Y-33.9 Z-2.704 B17.942 C267.957 +G01 X+19.273 Y-33.886 Z-2.702 B17.936 C266.994 +G01 X+19.037 Y-33.871 C266.03 +G01 X+18.793 Y-33.857 Z-2.704 B17.942 C265.007 +G01 X+18.564 Y-33.831 Z-2.702 B17.936 C264.067 +G01 X+18.336 Y-33.805 C263.126 +G01 X+18.081 Y-33.776 Z-2.704 B17.942 C262.058 +G01 X+17.639 Y-33.703 Z-2.702 B17.936 C260.223 +G01 X+17.375 Y-33.659 Z-2.703 B17.942 C259.108 +G01 X+16.948 Y-33.565 Z-2.702 B17.935 C257.32 +G01 X+16.675 Y-33.506 Z-2.703 B17.942 C256.158 +G01 X+16.265 Y-33.393 Z-2.702 B17.935 C254.417 +G01 X+15.984 Y-33.317 Z-2.703 B17.941 C253.209 +G01 X+15.591 Y-33.187 Z-2.702 B17.935 C251.513 +G01 X+15.304 Y-33.092 Z-2.703 B17.941 C250.259 +G01 X+14.929 Y-32.947 Z-2.702 B17.935 C248.61 +G01 X+14.636 Y-32.833 Z-2.703 B17.941 C247.309 +G01 X+14.28 Y-32.673 Z-2.702 B17.935 C245.707 +G01 X+13.983 Y-32.54 Z-2.703 B17.941 C244.359 +G01 X+13.645 Y-32.367 Z-2.702 B17.935 C242.804 +G01 X+13.33 Y-32.205 Z-2.704 B17.941 C241.352 +G01 X+13.027 Y-32.031 Z-2.702 B17.936 C239.906 +G01 X+12.725 Y-31.855 Z-2.703 B17.941 C238.46 +G01 X+12.472 Y-31.69 Z-2.702 B17.936 C237.209 +G01 X+12.218 Y-31.525 Z-2.703 B17.939 C235.958 +G01 X+12.125 Y-31.465 B17.941 C235.518 +G01 X+11.835 Y-31.255 Z-2.702 C234.042 +G01 X+11.545 Y-31.044 Z-2.703 C232.566 +G01 X+11.286 Y-30.835 Z-2.702 B17.935 C231.191 +G01 X+10.988 Y-30.594 Z-2.703 B17.941 C229.614 +G01 X+10.748 Y-30.38 Z-2.702 B17.935 C228.288 +G01 X+10.454 Y-30.116 Z-2.703 B17.941 C226.662 +G01 X+10.188 Y-29.852 Z-2.702 B17.936 C225.116 +G01 Y-29.719 Z-2.672 B17.811 C224.716 +G01 X+10.015 Y-29.547 Z-2.673 B17.815 C223.717 +G01 X+9.815 Y-29.326 Z-2.671 B17.809 C222.481 +G01 X+9.537 Y-29.02 Z-2.673 B17.815 C220.765 +G01 X+9.356 Y-28.799 Z-2.671 B17.809 C219.578 +G01 X+9.087 Y-28.47 Z-2.673 B17.815 C217.814 +G01 X+8.924 Y-28.248 Z-2.671 B17.809 C216.675 +G01 X+8.665 Y-27.897 Z-2.673 B17.815 C214.862 +G01 X+8.52 Y-27.677 Z-2.671 B17.809 C213.771 +G01 X+8.274 Y-27.303 Z-2.673 B17.815 C211.91 +G01 X+8.146 Y-27.085 Z-2.672 B17.809 C210.868 +G01 X+8.029 Y-26.888 B17.81 C209.913 +G01 X+7.913 Y-26.69 Z-2.673 B17.816 C208.958 +G01 X+7.777 Y-26.428 Z-2.672 B17.81 C207.736 +G01 X+7.641 Y-26.166 B17.811 C206.513 +G01 X+7.585 Y-26.058 Z-2.673 B17.816 C206.006 +G01 X+7.464 Y-25.795 Z-2.672 B17.81 C204.808 +G01 X+7.344 Y-25.532 B17.811 C203.61 +G01 X+7.289 Y-25.411 Z-2.673 B17.816 C203.054 +G01 X+7.185 Y-25.148 Z-2.672 B17.81 C201.881 +G01 X+7.081 Y-24.884 B17.811 C200.707 +G01 X+7.028 Y-24.75 Z-2.673 B17.816 C200.102 +G01 X+6.939 Y-24.486 Z-2.672 B17.81 C198.953 +G01 X+6.85 Y-24.223 B17.811 C197.804 +G01 X+6.8 Y-24.076 Z-2.673 B17.816 C197.15 +G01 X+6.727 Y-23.814 Z-2.672 B17.81 C196.026 +G01 X+6.653 Y-23.551 B17.811 C194.901 +G01 X+6.608 Y-23.391 Z-2.673 B17.816 C194.199 +G01 X+6.549 Y-23.131 Z-2.672 B17.81 C193.098 +G01 X+6.491 Y-22.871 C191.997 +G01 X+6.451 Y-22.697 Z-2.673 B17.816 C191.247 +G01 X+6.407 Y-22.44 Z-2.672 B17.81 C190.17 +G01 X+6.363 Y-22.183 C189.094 +G01 X+6.33 Y-21.996 Z-2.673 B17.816 C188.295 +G01 X+6.3 Y-21.743 Z-2.672 B17.81 C187.243 +G01 X+6.27 Y-21.489 C186.191 +G01 X+6.246 Y-21.29 Z-2.673 B17.816 C185.343 +G01 X+6.229 Y-21.041 Z-2.672 B17.81 C184.315 +G01 X+6.212 Y-20.792 C183.288 +G01 X+6.198 Y-20.58 Z-2.673 B17.816 C182.391 +G01 X+6.194 Y-20.336 Z-2.672 B17.81 C181.388 +G01 X+6.19 Y-20.093 C180.384 +G01 X+6.186 Y-19.869 Z-2.673 B17.816 C179.439 +G01 X+6.194 Y-19.631 Z-2.672 B17.81 C178.46 +G01 X+6.203 Y-19.393 C177.481 +G01 X+6.211 Y-19.158 Z-2.673 B17.816 C176.487 +G01 X+6.231 Y-18.926 Z-2.672 B17.81 C175.533 +G01 X+6.252 Y-18.695 B17.809 C174.578 +G01 X+6.273 Y-18.449 Z-2.673 B17.816 C173.536 +G01 X+6.335 Y-18 Z-2.672 B17.809 C171.675 +G01 X+6.371 Y-17.744 Z-2.673 B17.815 C170.587 +G01 X+6.454 Y-17.311 Z-2.671 B17.809 C168.772 +G01 X+6.505 Y-17.046 Z-2.673 B17.815 C167.637 +G01 X+6.608 Y-16.628 Z-2.671 B17.809 C165.868 +G01 X+6.675 Y-16.355 Z-2.673 B17.815 C164.688 +G01 X+6.796 Y-15.954 Z-2.671 B17.809 C162.965 +G01 X+6.88 Y-15.674 Z-2.673 B17.815 C161.738 +G01 X+7.018 Y-15.291 Z-2.671 B17.809 C160.062 +G01 X+7.121 Y-15.004 Z-2.673 B17.815 C158.789 +G01 X+7.273 Y-14.639 Z-2.671 B17.809 C157.159 +G01 X+7.395 Y-14.348 Z-2.673 B17.815 C155.839 +G01 X+7.561 Y-14.001 Z-2.671 B17.809 C154.255 +G01 X+7.702 Y-13.706 Z-2.673 B17.815 C152.89 +G01 X+7.881 Y-13.379 Z-2.671 B17.809 C151.352 +G01 X+8.043 Y-13.082 Z-2.673 B17.815 C149.941 +G01 X+8.232 Y-12.774 Z-2.671 B17.809 C148.449 +G01 X+8.415 Y-12.475 Z-2.673 B17.815 C146.997 +G01 X+8.595 Y-12.212 Z-2.672 B17.809 C145.669 +G01 X+8.775 Y-11.95 B17.813 C144.34 +G01 X+8.818 Y-11.889 Z-2.673 B17.815 C144.049 +G01 X+9.033 Y-11.606 Z-2.672 B17.809 C142.573 +G01 X+9.25 Y-11.324 Z-2.673 B17.815 C141.097 +G01 X+9.462 Y-11.075 Z-2.671 B17.809 C139.739 +G01 X+9.711 Y-10.782 Z-2.673 B17.815 C138.145 +G01 X+9.927 Y-10.553 Z-2.671 B17.809 C136.836 +G01 X+10.199 Y-10.265 Z-2.673 B17.815 C135.193 +G01 X+10.418 Y-10.055 Z-2.671 B17.809 C133.933 +G01 X+10.713 Y-9.773 Z-2.673 B17.815 C132.241 +G01 X+10.934 Y-9.582 Z-2.671 B17.809 C131.03 +G01 X+11.252 Y-9.308 Z-2.673 B17.815 C129.289 +G01 X+11.474 Y-9.136 Z-2.671 B17.809 C128.126 +G01 X+11.814 Y-8.872 Z-2.673 B17.815 C126.338 +G01 X+12.035 Y-8.718 Z-2.671 B17.809 C125.223 +G01 X+12.398 Y-8.466 Z-2.673 B17.815 C123.386 +G01 X+12.616 Y-8.329 Z-2.672 B17.809 C122.32 +G01 X+12.809 Y-8.209 B17.81 C121.377 +G01 X+13.001 Y-8.089 Z-2.673 B17.816 C120.434 +G01 X+13.262 Y-7.945 Z-2.672 B17.81 C119.2 +G01 X+13.523 Y-7.801 B17.812 C117.965 +G01 X+13.624 Y-7.745 Z-2.673 B17.816 C117.482 +G01 X+13.886 Y-7.616 Z-2.672 B17.81 C116.272 +G01 X+14.149 Y-7.489 B17.811 C115.062 +G01 X+14.263 Y-7.433 Z-2.673 B17.816 C114.53 +G01 X+14.527 Y-7.32 Z-2.672 B17.81 C113.345 +G01 X+14.791 Y-7.208 B17.811 C112.159 +G01 X+14.918 Y-7.154 Z-2.673 B17.816 C111.578 +G01 X+15.181 Y-7.057 Z-2.672 B17.81 C110.417 +G01 X+15.445 Y-6.961 B17.811 C109.255 +G01 X+15.586 Y-6.91 Z-2.673 B17.816 C108.626 +G01 X+15.849 Y-6.828 Z-2.672 B17.81 C107.489 +G01 X+16.112 Y-6.747 B17.811 C106.352 +G01 X+16.265 Y-6.7 Z-2.673 B17.816 C105.675 +G01 X+16.527 Y-6.633 Z-2.672 B17.81 C104.562 +G01 X+16.788 Y-6.568 C103.449 +G01 X+16.955 Y-6.525 Z-2.673 B17.816 C102.723 +G01 X+17.214 Y-6.474 Z-2.672 B17.81 C101.634 +G01 X+17.472 Y-6.422 C100.546 +G01 X+17.653 Y-6.386 Z-2.673 B17.816 C99.771 +G01 X+17.908 Y-6.349 Z-2.672 B17.81 C98.707 +G01 X+18.163 Y-6.312 C97.643 +G01 X+18.357 Y-6.284 Z-2.673 B17.816 C96.819 +G01 X+18.608 Y-6.26 Z-2.672 B17.81 C95.779 +G01 X+18.859 Y-6.236 C94.739 +G01 X+19.065 Y-6.217 Z-2.673 B17.816 C93.867 +G01 X+19.311 Y-6.207 Z-2.672 B17.81 C92.852 +G01 X+19.558 Y-6.196 C91.836 +G01 X+19.776 Y-6.187 Z-2.673 B17.816 C90.915 +G01 X+20.016 Y-6.189 Z-2.672 B17.81 C89.924 +G01 X+20.257 Y-6.192 C88.933 +G01 X+20.487 Y-6.194 Z-2.673 B17.816 C87.963 +G01 X+20.722 Y-6.208 Z-2.672 B17.81 C86.996 +G01 X+20.956 Y-6.223 B17.809 C86.03 +G01 X+21.197 Y-6.237 Z-2.673 B17.816 C85.011 +G01 X+21.425 Y-6.263 Z-2.672 B17.81 C84.069 +G01 X+21.653 Y-6.289 B17.809 C83.126 +G01 X+21.904 Y-6.317 Z-2.673 B17.816 C82.061 +G01 X+22.345 Y-6.39 Z-2.671 B17.809 C80.223 +G01 X+22.606 Y-6.433 Z-2.673 B17.815 C79.112 +G01 X+23.031 Y-6.527 Z-2.671 B17.809 C77.32 +G01 X+23.301 Y-6.586 Z-2.673 B17.815 C76.162 +G01 X+23.71 Y-6.698 Z-2.671 B17.809 C74.417 +G01 X+23.987 Y-6.773 Z-2.673 B17.815 C73.213 +G01 X+24.379 Y-6.903 Z-2.671 B17.809 C71.513 +G01 X+24.663 Y-6.996 Z-2.673 B17.815 C70.264 +G01 X+25.037 Y-7.141 Z-2.671 B17.809 C68.61 +G01 X+25.326 Y-7.253 Z-2.673 B17.815 C67.314 +G01 X+25.681 Y-7.413 Z-2.671 B17.809 C65.707 +G01 X+25.975 Y-7.544 Z-2.673 B17.815 C64.365 +G01 X+26.312 Y-7.717 Z-2.671 B17.809 C62.804 +G01 X+26.623 Y-7.877 Z-2.673 B17.814 C61.352 +G01 X+26.924 Y-8.051 Z-2.672 B17.809 C59.909 +G01 X+27.224 Y-8.225 Z-2.673 B17.815 C58.466 +G01 X+27.522 Y-8.418 Z-2.672 B17.809 C56.996 +G01 X+27.821 Y-8.612 Z-2.673 B17.815 C55.525 +G01 X+28.109 Y-8.821 Z-2.672 B17.809 C54.049 +G01 X+28.396 Y-9.03 Z-2.673 B17.815 C52.573 +G01 X+28.655 Y-9.239 Z-2.671 B17.809 C51.191 +G01 X+28.95 Y-9.477 Z-2.673 B17.815 C49.621 +G01 X+29.189 Y-9.691 Z-2.671 B17.809 C48.288 +G01 X+29.48 Y-9.951 Z-2.673 B17.815 C46.669 +G01 X+29.699 Y-10.17 Z-2.671 B17.809 C45.384 +G01 X+29.985 Y-10.453 Z-2.673 B17.815 C43.717 +G01 X+30.185 Y-10.673 Z-2.671 B17.809 C42.481 +G01 X+30.463 Y-10.979 Z-2.673 B17.815 C40.765 +G01 X+30.644 Y-11.201 Z-2.671 B17.809 C39.578 +G01 X+30.913 Y-11.53 Z-2.673 B17.815 C37.814 +G01 X+31.076 Y-11.752 Z-2.671 B17.809 C36.675 +G01 X+31.335 Y-12.103 Z-2.673 B17.815 C34.862 +G01 X+31.48 Y-12.323 Z-2.671 B17.809 C33.771 +G01 X+31.726 Y-12.697 Z-2.673 B17.815 C31.91 +G01 X+31.854 Y-12.914 Z-2.672 B17.809 C30.868 +G01 X+31.971 Y-13.112 B17.81 C29.913 +G01 X+32.087 Y-13.31 Z-2.673 B17.816 C28.958 +G01 X+32.223 Y-13.572 Z-2.672 B17.81 C27.736 +G01 X+32.359 Y-13.834 B17.811 C26.513 +G01 X+32.415 Y-13.941 Z-2.673 B17.816 C26.006 +G01 X+32.536 Y-14.205 Z-2.672 B17.81 C24.808 +G01 X+32.656 Y-14.468 B17.811 C23.61 +G01 X+32.711 Y-14.589 Z-2.673 B17.816 C23.054 +G01 X+32.815 Y-14.852 Z-2.672 B17.81 C21.881 +G01 X+32.919 Y-15.116 B17.811 C20.707 +G01 X+32.972 Y-15.25 Z-2.673 B17.816 C20.102 +G01 X+33.061 Y-15.513 Z-2.672 B17.81 C18.953 +G01 X+33.15 Y-15.777 B17.811 C17.804 +G01 X+33.2 Y-15.924 Z-2.673 B17.816 C17.15 +G01 X+33.273 Y-16.186 Z-2.672 B17.81 C16.026 +G01 X+33.347 Y-16.449 B17.811 C14.901 +G01 X+33.392 Y-16.609 Z-2.673 B17.816 C14.199 +G01 X+33.451 Y-16.869 Z-2.672 B17.81 C13.098 +G01 X+33.509 Y-17.129 C11.997 +G01 X+33.549 Y-17.303 Z-2.673 B17.816 C11.247 +G01 X+33.593 Y-17.56 Z-2.672 B17.81 C10.17 +G01 X+33.637 Y-17.817 C9.094 +G01 X+33.67 Y-18.004 Z-2.673 B17.816 C8.295 +G01 X+33.7 Y-18.257 Z-2.672 B17.81 C7.243 +G01 X+33.73 Y-18.511 C6.191 +G01 X+33.754 Y-18.71 Z-2.673 B17.816 C5.343 +G01 X+33.771 Y-18.959 Z-2.672 B17.81 C4.315 +G01 X+33.788 Y-19.208 C3.288 +G01 X+33.802 Y-19.42 Z-2.673 B17.816 C2.391 +G01 X+33.806 Y-19.664 Z-2.672 B17.81 C1.388 +G01 X+33.81 Y-19.907 C0.384 +G01 X+33.814 Y-20.131 Z-2.673 B17.816 C359.439 +G01 X+33.806 Y-20.369 Z-2.672 B17.81 C358.46 +G01 X+33.797 Y-20.607 C357.481 +G01 X+33.789 Y-20.842 Z-2.673 B17.816 C356.487 +G01 X+33.769 Y-21.074 Z-2.672 B17.81 C355.533 +G01 X+33.749 Y-21.305 B17.809 C354.578 +G01 X+33.727 Y-21.551 Z-2.673 B17.816 C353.536 +G01 X+33.665 Y-22 Z-2.672 B17.809 C351.675 +G01 X+33.629 Y-22.256 Z-2.673 B17.815 C350.587 +G01 X+33.546 Y-22.689 Z-2.671 B17.809 C348.772 +G01 X+33.495 Y-22.954 Z-2.673 B17.815 C347.637 +G01 X+33.392 Y-23.372 Z-2.671 B17.809 C345.868 +G01 X+33.325 Y-23.645 Z-2.673 B17.815 C344.688 +G01 X+33.204 Y-24.046 Z-2.671 B17.809 C342.965 +G01 X+33.12 Y-24.326 Z-2.673 B17.815 C341.738 +G01 X+32.982 Y-24.709 Z-2.671 B17.809 C340.062 +G01 X+32.879 Y-24.996 Z-2.673 B17.815 C338.789 +G01 X+32.727 Y-25.361 Z-2.671 B17.809 C337.159 +G01 X+32.605 Y-25.652 Z-2.673 B17.815 C335.839 +G01 X+32.439 Y-25.998 Z-2.671 B17.809 C334.255 +G01 X+32.298 Y-26.294 Z-2.673 B17.815 C332.89 +G01 X+32.119 Y-26.621 Z-2.671 B17.809 C331.352 +G01 X+31.957 Y-26.918 Z-2.673 B17.815 C329.941 +G01 X+31.768 Y-27.226 Z-2.671 B17.809 C328.449 +G01 X+31.585 Y-27.525 Z-2.673 B17.815 C326.997 +G01 X+31.405 Y-27.787 Z-2.672 B17.809 C325.669 +G01 X+31.225 Y-28.05 B17.813 C324.34 +G01 X+31.182 Y-28.111 Z-2.673 B17.815 C324.049 +G01 X+30.967 Y-28.394 Z-2.672 B17.809 C322.573 +G01 X+30.75 Y-28.676 Z-2.673 B17.815 C321.097 +G01 X+30.538 Y-28.925 Z-2.671 B17.809 C319.739 +G01 X+30.289 Y-29.218 Z-2.673 B17.815 C318.145 +G01 X+30.073 Y-29.447 Z-2.671 B17.809 C316.836 +G01 X+29.801 Y-29.735 Z-2.673 B17.815 C315.193 +G01 X+29.582 Y-29.945 Z-2.671 B17.809 C313.933 +G01 X+29.287 Y-30.227 Z-2.673 B17.815 C312.241 +G01 X+29.066 Y-30.418 Z-2.671 B17.809 C311.03 +G01 X+28.748 Y-30.692 Z-2.673 B17.815 C309.289 +G01 X+28.526 Y-30.864 Z-2.671 B17.809 C308.126 +G01 X+28.186 Y-31.128 Z-2.673 B17.815 C306.338 +G01 X+27.965 Y-31.282 Z-2.671 B17.809 C305.223 +G01 X+27.602 Y-31.534 Z-2.673 B17.815 C303.386 +G01 X+27.384 Y-31.671 Z-2.672 B17.809 C302.32 +G01 X+27.191 Y-31.791 B17.81 C301.377 +G01 X+26.999 Y-31.91 Z-2.673 B17.816 C300.434 +G01 X+26.738 Y-32.055 Z-2.672 B17.81 C299.2 +G01 X+26.477 Y-32.199 B17.812 C297.965 +G01 X+26.376 Y-32.255 Z-2.673 B17.816 C297.482 +G01 X+26.114 Y-32.383 Z-2.672 B17.81 C296.272 +G01 X+25.851 Y-32.511 B17.811 C295.062 +G01 X+25.737 Y-32.567 Z-2.673 B17.816 C294.53 +G01 X+25.473 Y-32.679 Z-2.672 B17.81 C293.345 +G01 X+25.209 Y-32.791 B17.811 C292.159 +G01 X+25.082 Y-32.846 Z-2.673 B17.816 C291.578 +G01 X+24.819 Y-32.942 Z-2.672 B17.81 C290.417 +G01 X+24.555 Y-33.039 B17.811 C289.255 +G01 X+24.414 Y-33.09 Z-2.673 B17.816 C288.626 +G01 X+24.151 Y-33.172 Z-2.672 B17.81 C287.489 +G01 X+23.888 Y-33.252 B17.811 C286.352 +G01 X+23.735 Y-33.3 Z-2.673 B17.816 C285.674 +G01 X+23.473 Y-33.366 Z-2.672 B17.81 C284.562 +G01 X+23.212 Y-33.432 C283.449 +G01 X+23.045 Y-33.475 Z-2.673 B17.816 C282.722 +G01 X+22.786 Y-33.526 Z-2.672 B17.81 C281.634 +G01 X+22.528 Y-33.578 C280.546 +G01 X+22.347 Y-33.614 Z-2.673 B17.816 C279.771 +G01 X+22.092 Y-33.651 Z-2.672 B17.81 C278.707 +G01 X+21.837 Y-33.688 C277.643 +G01 X+21.643 Y-33.716 Z-2.673 B17.816 C276.819 +G01 X+21.392 Y-33.74 Z-2.672 B17.81 C275.779 +G01 X+21.141 Y-33.763 C274.739 +G01 X+20.935 Y-33.783 Z-2.673 B17.816 C273.867 +G01 X+20.689 Y-33.793 Z-2.672 B17.81 C272.852 +G01 X+20.442 Y-33.803 C271.836 +G01 X+20.224 Y-33.813 Z-2.673 B17.816 C270.915 +G01 X+19.984 Y-33.81 Z-2.672 B17.81 C269.924 +G01 X+19.743 Y-33.808 C268.933 +G01 X+19.513 Y-33.806 Z-2.673 B17.816 C267.963 +G01 X+19.278 Y-33.792 Z-2.672 B17.81 C266.996 +G01 X+19.044 Y-33.777 B17.809 C266.03 +G01 X+18.803 Y-33.762 Z-2.673 B17.816 C265.011 +G01 X+18.575 Y-33.737 Z-2.672 B17.81 C264.069 +G01 X+18.347 Y-33.711 B17.809 C263.126 +G01 X+18.096 Y-33.683 Z-2.673 B17.816 C262.061 +G01 X+17.655 Y-33.61 Z-2.671 B17.809 C260.223 +G01 X+17.394 Y-33.566 Z-2.673 B17.815 C259.112 +G01 X+16.969 Y-33.473 Z-2.671 B17.809 C257.32 +G01 X+16.699 Y-33.414 Z-2.673 B17.815 C256.162 +G01 X+16.29 Y-33.302 Z-2.671 B17.809 C254.417 +G01 X+16.013 Y-33.227 Z-2.673 B17.815 C253.213 +G01 X+15.621 Y-33.097 Z-2.671 B17.809 C251.513 +G01 X+15.337 Y-33.004 Z-2.673 B17.815 C250.264 +G01 X+14.963 Y-32.859 Z-2.671 B17.809 C248.61 +G01 X+14.674 Y-32.746 Z-2.673 B17.815 C247.314 +G01 X+14.319 Y-32.587 Z-2.671 B17.809 C245.707 +G01 X+14.025 Y-32.455 Z-2.673 B17.815 C244.365 +G01 X+13.688 Y-32.283 Z-2.671 B17.809 C242.804 +G01 X+13.375 Y-32.122 Z-2.673 B17.815 C241.352 +G01 X+13.075 Y-31.949 Z-2.672 B17.81 C239.909 +G01 X+12.776 Y-31.775 Z-2.673 B17.815 C238.467 +G01 X+12.478 Y-31.582 Z-2.672 B17.809 C236.996 +G01 X+12.179 Y-31.388 Z-2.673 B17.815 C235.525 +G01 X+11.891 Y-31.179 Z-2.672 B17.809 C234.049 +G01 X+11.604 Y-30.97 Z-2.673 B17.815 C232.573 +G01 X+11.345 Y-30.761 Z-2.671 B17.809 C231.191 +G01 X+11.05 Y-30.523 Z-2.673 B17.815 C229.621 +G01 X+10.811 Y-30.309 Z-2.671 B17.809 C228.288 +G01 X+10.52 Y-30.048 Z-2.673 B17.815 C226.669 +G01 X+10.255 Y-29.785 Z-2.671 B17.81 C225.118 +G01 Y-29.652 Z-2.641 B17.685 C224.718 +G01 X+10.085 Y-29.483 Z-2.642 B17.689 C223.725 +G01 X+9.885 Y-29.263 Z-2.641 B17.683 C222.481 +G01 X+9.61 Y-28.96 Z-2.642 B17.689 C220.774 +G01 X+9.429 Y-28.738 Z-2.641 B17.683 C219.578 +G01 X+9.162 Y-28.413 Z-2.642 B17.689 C217.822 +G01 X+9 Y-28.192 Z-2.641 B17.683 C216.675 +G01 X+8.744 Y-27.844 Z-2.642 B17.689 C214.871 +G01 X+8.599 Y-27.624 Z-2.641 B17.683 C213.771 +G01 X+8.355 Y-27.254 Z-2.642 B17.689 C211.919 +G01 X+8.227 Y-27.037 Z-2.641 B17.683 C210.868 +G01 X+8.112 Y-26.841 B17.684 C209.918 +G01 X+7.997 Y-26.645 Z-2.642 B17.689 C208.968 +G01 X+7.886 Y-26.432 Z-2.641 B17.683 C207.965 +G01 X+7.778 Y-26.225 B17.684 C206.99 +G01 X+7.671 Y-26.018 Z-2.642 B17.689 C206.016 +G01 X+7.551 Y-25.756 Z-2.641 B17.684 C204.813 +G01 X+7.431 Y-25.494 Z-2.642 B17.685 C203.61 +G01 X+7.377 Y-25.376 B17.69 C203.064 +G01 X+7.273 Y-25.113 Z-2.641 B17.684 C201.886 +G01 X+7.169 Y-24.85 Z-2.642 B17.685 C200.707 +G01 X+7.117 Y-24.719 B17.69 C200.113 +G01 X+7.028 Y-24.456 Z-2.641 B17.684 C198.959 +G01 X+6.94 Y-24.194 B17.685 C197.804 +G01 X+6.891 Y-24.049 Z-2.642 B17.69 C197.161 +G01 X+6.818 Y-23.788 Z-2.641 B17.684 C196.031 +G01 X+6.745 Y-23.527 C194.9 +G01 X+6.7 Y-23.369 Z-2.642 B17.69 C194.21 +G01 X+6.642 Y-23.11 Z-2.641 B17.684 C193.104 +G01 X+6.583 Y-22.851 C191.997 +G01 X+6.544 Y-22.68 Z-2.642 B17.69 C191.258 +G01 X+6.5 Y-22.424 Z-2.641 B17.684 C190.176 +G01 X+6.456 Y-22.168 C189.094 +G01 X+6.424 Y-21.984 Z-2.642 B17.69 C188.307 +G01 X+6.394 Y-21.731 Z-2.641 B17.684 C187.249 +G01 X+6.364 Y-21.479 C186.191 +G01 X+6.34 Y-21.282 Z-2.642 B17.69 C185.355 +G01 X+6.323 Y-21.034 Z-2.641 B17.684 C184.322 +G01 X+6.307 Y-20.787 C183.288 +G01 X+6.292 Y-20.577 Z-2.642 B17.69 C182.403 +G01 X+6.288 Y-20.335 Z-2.641 B17.684 C181.394 +G01 X+6.284 Y-20.092 C180.384 +G01 X+6.281 Y-19.871 Z-2.642 B17.689 C179.452 +G01 X+6.289 Y-19.634 Z-2.641 B17.684 C178.467 +G01 X+6.297 Y-19.397 B17.683 C177.481 +G01 X+6.306 Y-19.165 Z-2.642 B17.689 C176.501 +G01 X+6.325 Y-18.934 Z-2.641 B17.684 C175.539 +G01 X+6.346 Y-18.704 B17.683 C174.578 +G01 X+6.367 Y-18.461 Z-2.642 B17.689 C173.549 +G01 X+6.429 Y-18.014 Z-2.641 B17.683 C171.675 +G01 X+6.464 Y-17.761 Z-2.642 B17.689 C170.597 +G01 X+6.547 Y-17.329 Z-2.641 B17.683 C168.772 +G01 X+6.597 Y-17.067 Z-2.642 B17.689 C167.646 +G01 X+6.7 Y-16.651 Z-2.641 B17.683 C165.868 +G01 X+6.766 Y-16.381 Z-2.642 B17.689 C164.694 +G01 X+6.886 Y-15.982 Z-2.641 B17.683 C162.965 +G01 X+6.97 Y-15.705 Z-2.642 B17.689 C161.743 +G01 X+7.107 Y-15.323 Z-2.641 B17.683 C160.062 +G01 X+7.208 Y-15.04 Z-2.642 B17.689 C158.794 +G01 X+7.36 Y-14.676 Z-2.641 B17.683 C157.159 +G01 X+7.481 Y-14.388 Z-2.642 B17.689 C155.845 +G01 X+7.646 Y-14.043 Z-2.641 B17.683 C154.255 +G01 X+7.786 Y-13.751 Z-2.642 B17.689 C152.896 +G01 X+7.964 Y-13.424 Z-2.641 B17.683 C151.352 +G01 X+8.124 Y-13.13 Z-2.642 B17.688 C149.947 +G01 X+8.312 Y-12.823 Z-2.641 B17.683 C148.449 +G01 X+8.494 Y-12.527 Z-2.642 B17.688 C146.997 +G01 X+8.691 Y-12.241 Z-2.641 B17.683 C145.546 +G01 X+8.893 Y-11.946 Z-2.642 B17.688 C144.056 +G01 X+9.098 Y-11.678 Z-2.641 B17.683 C142.642 +G01 X+9.323 Y-11.385 Z-2.642 B17.688 C141.104 +G01 X+9.534 Y-11.136 Z-2.641 B17.683 C139.739 +G01 X+9.78 Y-10.846 Z-2.642 B17.689 C138.153 +G01 X+9.996 Y-10.617 Z-2.641 B17.683 C136.836 +G01 X+10.265 Y-10.332 Z-2.642 B17.689 C135.201 +G01 X+10.484 Y-10.123 Z-2.641 B17.683 C133.933 +G01 X+10.776 Y-9.844 Z-2.642 B17.689 C132.25 +G01 X+10.997 Y-9.653 Z-2.641 B17.683 C131.03 +G01 X+11.311 Y-9.383 Z-2.642 B17.689 C129.298 +G01 X+11.532 Y-9.211 Z-2.641 B17.683 C128.126 +G01 X+11.869 Y-8.949 Z-2.642 B17.689 C126.346 +G01 X+12.089 Y-8.796 Z-2.641 B17.683 C125.223 +G01 X+12.448 Y-8.545 Z-2.642 B17.689 C123.395 +G01 X+12.667 Y-8.409 Z-2.641 B17.683 C122.32 +G01 X+13.048 Y-8.172 Z-2.642 B17.689 C120.443 +G01 X+13.263 Y-8.053 Z-2.641 B17.683 C119.417 +G01 X+13.465 Y-7.941 B17.684 C118.454 +G01 X+13.666 Y-7.83 Z-2.642 B17.689 C117.492 +G01 X+13.877 Y-7.727 Z-2.641 B17.683 C116.513 +G01 X+14.089 Y-7.623 B17.684 C115.527 +G01 X+14.301 Y-7.52 Z-2.642 B17.69 C114.54 +G01 X+14.564 Y-7.408 Z-2.641 B17.684 C113.35 +G01 X+14.826 Y-7.296 Z-2.642 B17.685 C112.159 +G01 X+14.951 Y-7.243 B17.69 C111.589 +G01 X+15.214 Y-7.146 Z-2.641 B17.684 C110.422 +G01 X+15.476 Y-7.05 B17.685 C109.255 +G01 X+15.614 Y-7 Z-2.642 B17.69 C108.637 +G01 X+15.876 Y-6.919 Z-2.641 B17.684 C107.495 +G01 X+16.138 Y-6.838 C106.352 +G01 X+16.29 Y-6.791 Z-2.642 B17.69 C105.686 +G01 X+16.55 Y-6.725 Z-2.641 B17.684 C104.567 +G01 X+16.81 Y-6.66 C103.449 +G01 X+16.974 Y-6.618 Z-2.642 B17.69 C102.734 +G01 X+17.232 Y-6.566 Z-2.641 B17.684 C101.64 +G01 X+17.49 Y-6.515 C100.546 +G01 X+17.667 Y-6.48 Z-2.642 B17.69 C99.783 +G01 X+17.922 Y-6.442 Z-2.641 B17.684 C98.713 +G01 X+18.176 Y-6.406 C97.643 +G01 X+18.366 Y-6.378 Z-2.642 B17.69 C96.831 +G01 X+18.617 Y-6.354 Z-2.641 B17.684 C95.785 +G01 X+18.867 Y-6.331 C94.739 +G01 X+19.07 Y-6.312 Z-2.642 B17.69 C93.879 +G01 X+19.315 Y-6.301 Z-2.641 B17.684 C92.858 +G01 X+19.561 Y-6.291 C91.836 +G01 X+19.776 Y-6.282 Z-2.642 B17.69 C90.928 +G01 X+20.016 Y-6.284 Z-2.641 B17.684 C89.93 +G01 X+20.255 Y-6.286 B17.683 C88.933 +G01 X+20.482 Y-6.289 Z-2.642 B17.689 C87.976 +G01 X+20.716 Y-6.303 Z-2.641 B17.684 C87.003 +G01 X+20.95 Y-6.317 B17.683 C86.03 +G01 X+21.187 Y-6.332 Z-2.642 B17.689 C85.025 +G01 X+21.414 Y-6.357 Z-2.641 B17.684 C84.076 +G01 X+21.642 Y-6.383 B17.683 C83.126 +G01 X+21.889 Y-6.411 Z-2.642 B17.689 C82.073 +G01 X+22.329 Y-6.484 Z-2.641 B17.683 C80.223 +G01 X+22.586 Y-6.526 Z-2.642 B17.689 C79.122 +G01 X+23.011 Y-6.619 Z-2.641 B17.683 C77.32 +G01 X+23.277 Y-6.677 Z-2.642 B17.689 C76.17 +G01 X+23.685 Y-6.789 Z-2.641 B17.683 C74.417 +G01 X+23.958 Y-6.863 Z-2.642 B17.689 C73.219 +G01 X+24.349 Y-6.992 Z-2.641 B17.683 C71.513 +G01 X+24.629 Y-7.085 Z-2.642 B17.689 C70.268 +G01 X+25.002 Y-7.229 Z-2.641 B17.683 C68.61 +G01 X+25.288 Y-7.34 Z-2.642 B17.689 C67.319 +G01 X+25.643 Y-7.499 Z-2.641 B17.683 C65.707 +G01 X+25.933 Y-7.629 Z-2.642 B17.689 C64.37 +G01 X+26.268 Y-7.801 Z-2.641 B17.683 C62.804 +G01 X+26.562 Y-7.951 Z-2.642 B17.688 C61.352 +G01 X+26.878 Y-8.134 Z-2.641 B17.683 C59.901 +G01 X+27.173 Y-8.305 Z-2.642 B17.688 C58.472 +G01 X+27.47 Y-8.498 Z-2.641 B17.683 C56.997 +G01 X+27.766 Y-8.689 Z-2.642 B17.688 C55.532 +G01 X+28.043 Y-8.891 Z-2.641 B17.683 C54.094 +G01 X+28.338 Y-9.104 Z-2.642 B17.688 C52.58 +G01 X+28.596 Y-9.312 Z-2.641 B17.683 C51.191 +G01 X+28.887 Y-9.548 Z-2.642 B17.689 C49.629 +G01 X+29.126 Y-9.762 Z-2.641 B17.683 C48.288 +G01 X+29.414 Y-10.019 Z-2.642 B17.689 C46.677 +G01 X+29.633 Y-10.237 Z-2.641 B17.683 C45.384 +G01 X+29.915 Y-10.517 Z-2.642 B17.689 C43.725 +G01 X+30.115 Y-10.737 Z-2.641 B17.683 C42.481 +G01 X+30.39 Y-11.04 Z-2.642 B17.689 C40.774 +G01 X+30.571 Y-11.261 Z-2.641 B17.683 C39.578 +G01 X+30.838 Y-11.587 Z-2.642 B17.689 C37.822 +G01 X+31 Y-11.808 Z-2.641 B17.683 C36.675 +G01 X+31.256 Y-12.156 Z-2.642 B17.689 C34.871 +G01 X+31.401 Y-12.376 Z-2.641 B17.683 C33.771 +G01 X+31.645 Y-12.746 Z-2.642 B17.689 C31.919 +G01 X+31.773 Y-12.963 Z-2.641 B17.683 C30.868 +G01 X+31.888 Y-13.159 B17.684 C29.918 +G01 X+32.003 Y-13.355 Z-2.642 B17.689 C28.968 +G01 X+32.114 Y-13.568 Z-2.641 B17.683 C27.965 +G01 X+32.222 Y-13.775 B17.684 C26.99 +G01 X+32.329 Y-13.982 Z-2.642 B17.689 C26.016 +G01 X+32.449 Y-14.244 Z-2.641 B17.684 C24.813 +G01 X+32.569 Y-14.506 Z-2.642 B17.685 C23.61 +G01 X+32.623 Y-14.624 B17.69 C23.065 +G01 X+32.727 Y-14.887 Z-2.641 B17.684 C21.886 +G01 X+32.831 Y-15.15 Z-2.642 B17.685 C20.707 +G01 X+32.883 Y-15.281 B17.69 C20.113 +G01 X+32.972 Y-15.543 Z-2.641 B17.684 C18.959 +G01 X+33.06 Y-15.806 B17.685 C17.804 +G01 X+33.109 Y-15.951 Z-2.642 B17.69 C17.161 +G01 X+33.182 Y-16.212 Z-2.641 B17.684 C16.031 +G01 X+33.255 Y-16.473 C14.9 +G01 X+33.3 Y-16.631 Z-2.642 B17.69 C14.21 +G01 X+33.359 Y-16.89 Z-2.641 B17.684 C13.104 +G01 X+33.417 Y-17.149 C11.997 +G01 X+33.456 Y-17.32 Z-2.642 B17.69 C11.258 +G01 X+33.5 Y-17.576 Z-2.641 B17.684 C10.176 +G01 X+33.544 Y-17.832 C9.094 +G01 X+33.576 Y-18.016 Z-2.642 B17.69 C8.307 +G01 X+33.606 Y-18.268 Z-2.641 B17.684 C7.249 +G01 X+33.636 Y-18.521 C6.191 +G01 X+33.66 Y-18.718 Z-2.642 B17.69 C5.355 +G01 X+33.677 Y-18.965 Z-2.641 B17.684 C4.322 +G01 X+33.693 Y-19.213 C3.288 +G01 X+33.708 Y-19.422 Z-2.642 B17.69 C2.404 +G01 X+33.712 Y-19.665 Z-2.641 B17.684 C1.394 +G01 X+33.716 Y-19.908 C0.384 +G01 X+33.719 Y-20.129 Z-2.642 B17.689 C359.452 +G01 X+33.711 Y-20.366 Z-2.641 B17.684 C358.467 +G01 X+33.703 Y-20.603 B17.683 C357.481 +G01 X+33.694 Y-20.835 Z-2.642 B17.689 C356.501 +G01 X+33.675 Y-21.065 Z-2.641 B17.684 C355.539 +G01 X+33.654 Y-21.296 B17.683 C354.578 +G01 X+33.633 Y-21.539 Z-2.642 B17.689 C353.549 +G01 X+33.571 Y-21.986 Z-2.641 B17.683 C351.675 +G01 X+33.536 Y-22.239 Z-2.642 B17.689 C350.597 +G01 X+33.453 Y-22.671 Z-2.641 B17.683 C348.772 +G01 X+33.403 Y-22.932 Z-2.642 B17.689 C347.646 +G01 X+33.3 Y-23.349 Z-2.641 B17.683 C345.868 +G01 X+33.234 Y-23.619 Z-2.642 B17.689 C344.694 +G01 X+33.114 Y-24.018 Z-2.641 B17.683 C342.965 +G01 X+33.03 Y-24.295 Z-2.642 B17.689 C341.743 +G01 X+32.893 Y-24.677 Z-2.641 B17.683 C340.062 +G01 X+32.792 Y-24.96 Z-2.642 B17.689 C338.794 +G01 X+32.64 Y-25.324 Z-2.641 B17.683 C337.159 +G01 X+32.519 Y-25.612 Z-2.642 B17.689 C335.845 +G01 X+32.354 Y-25.957 Z-2.641 B17.683 C334.255 +G01 X+32.214 Y-26.249 Z-2.642 B17.689 C332.896 +G01 X+32.036 Y-26.575 Z-2.641 B17.683 C331.352 +G01 X+31.876 Y-26.87 Z-2.642 B17.688 C329.947 +G01 X+31.688 Y-27.177 Z-2.641 B17.683 C328.449 +G01 X+31.506 Y-27.473 Z-2.642 B17.688 C326.997 +G01 X+31.309 Y-27.759 Z-2.641 B17.683 C325.546 +G01 X+31.107 Y-28.054 Z-2.642 B17.688 C324.056 +G01 X+30.902 Y-28.322 Z-2.641 B17.683 C322.642 +G01 X+30.677 Y-28.615 Z-2.642 B17.688 C321.104 +G01 X+30.466 Y-28.864 Z-2.641 B17.683 C319.739 +G01 X+30.22 Y-29.154 Z-2.642 B17.689 C318.153 +G01 X+30.004 Y-29.382 Z-2.641 B17.683 C316.836 +G01 X+29.735 Y-29.668 Z-2.642 B17.689 C315.201 +G01 X+29.516 Y-29.877 Z-2.641 B17.683 C313.933 +G01 X+29.224 Y-30.156 Z-2.642 B17.689 C312.25 +G01 X+29.003 Y-30.346 Z-2.641 B17.683 C311.03 +G01 X+28.689 Y-30.617 Z-2.642 B17.689 C309.298 +G01 X+28.468 Y-30.789 Z-2.641 B17.683 C308.126 +G01 X+28.131 Y-31.051 Z-2.642 B17.689 C306.346 +G01 X+27.911 Y-31.204 Z-2.641 B17.683 C305.223 +G01 X+27.552 Y-31.454 Z-2.642 B17.689 C303.395 +G01 X+27.333 Y-31.591 Z-2.641 B17.683 C302.32 +G01 X+26.952 Y-31.828 Z-2.642 B17.689 C300.443 +G01 X+26.737 Y-31.947 Z-2.641 B17.683 C299.417 +G01 X+26.535 Y-32.059 B17.684 C298.454 +G01 X+26.334 Y-32.17 Z-2.642 B17.689 C297.492 +G01 X+26.123 Y-32.273 Z-2.641 B17.683 C296.513 +G01 X+25.911 Y-32.377 B17.684 C295.527 +G01 X+25.699 Y-32.48 Z-2.642 B17.69 C294.54 +G01 X+25.436 Y-32.592 Z-2.641 B17.684 C293.35 +G01 X+25.174 Y-32.704 Z-2.642 B17.685 C292.159 +G01 X+25.049 Y-32.757 B17.69 C291.589 +G01 X+24.786 Y-32.853 Z-2.641 B17.684 C290.422 +G01 X+24.524 Y-32.949 B17.685 C289.255 +G01 X+24.386 Y-33 Z-2.642 B17.69 C288.637 +G01 X+24.124 Y-33.081 Z-2.641 B17.684 C287.495 +G01 X+23.862 Y-33.162 C286.352 +G01 X+23.71 Y-33.209 Z-2.642 B17.69 C285.686 +G01 X+23.45 Y-33.275 Z-2.641 B17.684 C284.567 +G01 X+23.19 Y-33.34 C283.449 +G01 X+23.026 Y-33.382 Z-2.642 B17.69 C282.734 +G01 X+22.768 Y-33.434 Z-2.641 B17.684 C281.64 +G01 X+22.51 Y-33.485 C280.546 +G01 X+22.333 Y-33.52 Z-2.642 B17.69 C279.783 +G01 X+22.078 Y-33.557 Z-2.641 B17.684 C278.713 +G01 X+21.824 Y-33.594 C277.643 +G01 X+21.634 Y-33.622 Z-2.642 B17.69 C276.831 +G01 X+21.383 Y-33.646 Z-2.641 B17.684 C275.785 +G01 X+21.133 Y-33.669 C274.739 +G01 X+20.93 Y-33.688 Z-2.642 B17.69 C273.879 +G01 X+20.685 Y-33.699 Z-2.641 B17.684 C272.858 +G01 X+20.439 Y-33.709 C271.836 +G01 X+20.224 Y-33.718 Z-2.642 B17.69 C270.928 +G01 X+19.984 Y-33.716 Z-2.641 B17.684 C269.93 +G01 X+19.745 Y-33.713 B17.683 C268.933 +G01 X+19.518 Y-33.711 Z-2.642 B17.689 C267.976 +G01 X+19.284 Y-33.697 Z-2.641 B17.684 C267.003 +G01 X+19.05 Y-33.683 B17.683 C266.03 +G01 X+18.813 Y-33.668 Z-2.642 B17.689 C265.025 +G01 X+18.586 Y-33.643 Z-2.641 B17.684 C264.076 +G01 X+18.359 Y-33.617 B17.683 C263.126 +G01 X+18.111 Y-33.589 Z-2.642 B17.689 C262.073 +G01 X+17.671 Y-33.516 Z-2.641 B17.683 C260.223 +G01 X+17.414 Y-33.474 Z-2.642 B17.689 C259.121 +G01 X+16.989 Y-33.381 Z-2.641 B17.683 C257.32 +G01 X+16.723 Y-33.323 Z-2.642 B17.689 C256.17 +G01 X+16.315 Y-33.211 Z-2.641 B17.683 C254.417 +G01 X+16.042 Y-33.136 Z-2.642 B17.689 C253.219 +G01 X+15.651 Y-33.008 Z-2.641 B17.683 C251.513 +G01 X+15.371 Y-32.915 Z-2.642 B17.689 C250.268 +G01 X+14.998 Y-32.771 Z-2.641 B17.683 C248.61 +G01 X+14.712 Y-32.66 Z-2.642 B17.689 C247.319 +G01 X+14.357 Y-32.501 Z-2.641 B17.683 C245.707 +G01 X+14.067 Y-32.371 Z-2.642 B17.689 C244.37 +G01 X+13.732 Y-32.199 Z-2.641 B17.683 C242.804 +G01 X+13.42 Y-32.039 Z-2.643 B17.689 C241.352 +G01 X+13.123 Y-31.868 Z-2.641 B17.683 C239.913 +G01 X+12.827 Y-31.695 Z-2.642 B17.688 C238.473 +G01 X+12.53 Y-31.502 Z-2.641 B17.683 C236.997 +G01 X+12.234 Y-31.31 Z-2.642 B17.688 C235.532 +G01 X+11.957 Y-31.109 Z-2.641 B17.683 C234.094 +G01 X+11.662 Y-30.896 Z-2.642 B17.688 C232.58 +G01 X+11.404 Y-30.687 Z-2.641 B17.683 C231.191 +G01 X+11.113 Y-30.452 Z-2.642 B17.689 C229.629 +G01 X+10.874 Y-30.238 Z-2.641 B17.683 C228.288 +G01 X+10.586 Y-29.981 Z-2.642 B17.689 C226.677 +G01 X+10.322 Y-29.718 Z-2.641 B17.684 C225.12 +G01 X+10.321 Y-29.585 Z-2.611 B17.559 C224.72 +G01 X+10.154 Y-29.419 Z-2.612 B17.563 C223.733 +G01 X+9.942 Y-29.185 Z-2.611 B17.557 C222.405 +G01 X+9.682 Y-28.899 Z-2.612 B17.563 C220.782 +G01 X+9.489 Y-28.663 Z-2.611 B17.557 C219.502 +G01 X+9.238 Y-28.356 Z-2.612 B17.563 C217.831 +G01 X+9.064 Y-28.12 Z-2.611 B17.557 C216.599 +G01 X+8.822 Y-27.791 Z-2.612 B17.563 C214.88 +G01 X+8.667 Y-27.556 Z-2.611 B17.557 C213.695 +G01 X+8.436 Y-27.206 Z-2.612 B17.563 C211.929 +G01 X+8.299 Y-26.972 Z-2.611 B17.557 C210.792 +G01 X+8.08 Y-26.601 Z-2.612 B17.563 C208.977 +G01 X+7.941 Y-26.333 Z-2.611 B17.558 C207.709 +G01 X+7.801 Y-26.065 Z-2.612 B17.56 C206.441 +G01 X+7.756 Y-25.978 B17.563 C206.026 +G01 X+7.633 Y-25.709 Z-2.611 B17.558 C204.782 +G01 X+7.51 Y-25.439 Z-2.612 B17.56 C203.537 +G01 X+7.465 Y-25.34 B17.564 C203.075 +G01 X+7.357 Y-25.07 Z-2.611 B17.558 C201.854 +G01 X+7.251 Y-24.8 Z-2.612 B17.559 C200.634 +G01 X+7.206 Y-24.688 B17.564 C200.124 +G01 X+7.115 Y-24.418 Z-2.611 B17.558 C198.927 +G01 X+7.024 Y-24.148 B17.559 C197.73 +G01 X+6.982 Y-24.023 Z-2.612 B17.564 C197.172 +G01 X+6.906 Y-23.754 Z-2.611 B17.558 C196. +G01 X+6.831 Y-23.485 B17.559 C194.827 +G01 X+6.792 Y-23.347 Z-2.612 B17.564 C194.221 +G01 X+6.732 Y-23.08 Z-2.611 B17.558 C193.072 +G01 X+6.671 Y-22.813 B17.559 C191.923 +G01 X+6.637 Y-22.663 Z-2.612 B17.563 C191.27 +G01 X+6.592 Y-22.399 Z-2.611 B17.558 C190.145 +G01 X+6.546 Y-22.135 C189.02 +G01 X+6.518 Y-21.972 Z-2.612 B17.564 C188.319 +G01 X+6.487 Y-21.711 Z-2.611 B17.558 C187.218 +G01 X+6.455 Y-21.45 C186.116 +G01 X+6.434 Y-21.275 Z-2.612 B17.563 C185.367 +G01 X+6.417 Y-21.019 Z-2.611 B17.558 C184.29 +G01 X+6.4 Y-20.762 C183.213 +G01 X+6.387 Y-20.575 Z-2.612 B17.563 C182.416 +G01 X+6.382 Y-20.324 Z-2.611 B17.558 C181.363 +G01 X+6.378 Y-20.072 C180.309 +G01 X+6.375 Y-19.873 Z-2.612 B17.563 C179.465 +G01 X+6.384 Y-19.628 Z-2.611 B17.558 C178.436 +G01 X+6.392 Y-19.382 C177.406 +G01 X+6.4 Y-19.172 Z-2.612 B17.563 C176.514 +G01 X+6.42 Y-18.933 Z-2.611 B17.558 C175.508 +G01 X+6.441 Y-18.694 C174.503 +G01 X+6.46 Y-18.473 Z-2.612 B17.563 C173.563 +G01 X+6.492 Y-18.241 Z-2.611 B17.558 C172.581 +G01 X+6.525 Y-18.009 B17.557 C171.599 +G01 X+6.557 Y-17.778 Z-2.612 B17.563 C170.611 +G01 X+6.6 Y-17.554 Z-2.611 B17.558 C169.654 +G01 X+6.643 Y-17.329 B17.557 C168.696 +G01 X+6.689 Y-17.089 Z-2.612 B17.563 C167.66 +G01 X+6.796 Y-16.656 Z-2.611 B17.557 C165.793 +G01 X+6.857 Y-16.408 Z-2.612 B17.563 C164.709 +G01 X+6.982 Y-15.991 Z-2.611 B17.557 C162.889 +G01 X+7.059 Y-15.736 Z-2.612 B17.563 C161.758 +G01 X+7.202 Y-15.337 Z-2.611 B17.557 C159.986 +G01 X+7.296 Y-15.075 Z-2.612 B17.563 C158.806 +G01 X+7.455 Y-14.695 Z-2.611 B17.557 C157.082 +G01 X+7.566 Y-14.428 Z-2.612 B17.563 C155.855 +G01 X+7.739 Y-14.066 Z-2.611 B17.557 C154.179 +G01 X+7.869 Y-13.795 Z-2.612 B17.562 C152.904 +G01 X+8.056 Y-13.453 Z-2.611 B17.557 C151.276 +G01 X+8.205 Y-13.179 Z-2.612 B17.562 C149.953 +G01 X+8.403 Y-12.856 Z-2.611 B17.557 C148.373 +G01 X+8.572 Y-12.581 Z-2.612 B17.562 C147.004 +G01 X+8.779 Y-12.278 Z-2.611 B17.557 C145.469 +G01 X+8.969 Y-12.002 Z-2.612 B17.562 C144.062 +G01 X+9.185 Y-11.72 Z-2.611 B17.557 C142.566 +G01 X+9.395 Y-11.445 Z-2.612 B17.562 C141.111 +G01 X+9.618 Y-11.183 Z-2.611 B17.557 C139.663 +G01 X+9.85 Y-10.91 Z-2.612 B17.562 C138.16 +G01 X+10.078 Y-10.668 Z-2.611 B17.557 C136.76 +G01 X+10.331 Y-10.4 Z-2.612 B17.563 C135.209 +G01 X+10.563 Y-10.178 Z-2.611 B17.557 C133.856 +G01 X+10.838 Y-9.915 Z-2.612 B17.563 C132.258 +G01 X+11.073 Y-9.712 Z-2.611 B17.557 C130.953 +G01 X+11.369 Y-9.457 Z-2.612 B17.563 C129.306 +G01 X+11.605 Y-9.273 Z-2.611 B17.557 C128.05 +G01 X+11.923 Y-9.026 Z-2.612 B17.563 C126.355 +G01 X+12.16 Y-8.862 Z-2.611 B17.557 C125.147 +G01 X+12.499 Y-8.625 Z-2.612 B17.563 C123.404 +G01 X+12.734 Y-8.479 Z-2.611 B17.557 C122.244 +G01 X+13.095 Y-8.254 Z-2.612 B17.563 C120.453 +G01 X+13.326 Y-8.126 Z-2.611 B17.557 C119.341 +G01 X+13.708 Y-7.914 Z-2.612 B17.563 C117.502 +G01 X+13.977 Y-7.783 Z-2.611 B17.558 C116.246 +G01 X+14.246 Y-7.652 Z-2.612 B17.56 C114.989 +G01 X+14.339 Y-7.606 B17.563 C114.55 +G01 X+14.609 Y-7.491 Z-2.611 B17.558 C113.318 +G01 X+14.879 Y-7.376 Z-2.612 B17.56 C112.086 +G01 X+14.984 Y-7.331 B17.564 C111.599 +G01 X+15.255 Y-7.232 Z-2.611 B17.558 C110.391 +G01 X+15.525 Y-7.133 Z-2.612 B17.559 C109.182 +G01 X+15.643 Y-7.09 B17.564 C108.648 +G01 X+15.913 Y-7.006 Z-2.611 B17.558 C107.463 +G01 X+16.182 Y-6.923 B17.559 C106.279 +G01 X+16.314 Y-6.883 Z-2.612 B17.564 C105.697 +G01 X+16.582 Y-6.814 Z-2.611 B17.558 C104.536 +G01 X+16.85 Y-6.747 B17.559 C103.375 +G01 X+16.994 Y-6.71 Z-2.612 B17.564 C102.746 +G01 X+17.259 Y-6.657 Z-2.611 B17.558 C101.609 +G01 X+17.525 Y-6.604 B17.559 C100.471 +G01 X+17.682 Y-6.573 Z-2.612 B17.563 C99.794 +G01 X+17.944 Y-6.535 Z-2.611 B17.558 C98.681 +G01 X+18.207 Y-6.496 C97.568 +G01 X+18.376 Y-6.472 Z-2.612 B17.563 C96.843 +G01 X+18.635 Y-6.447 Z-2.611 B17.558 C95.754 +G01 X+18.893 Y-6.423 C94.665 +G01 X+19.075 Y-6.406 Z-2.612 B17.563 C93.892 +G01 X+19.329 Y-6.395 Z-2.611 B17.558 C92.827 +G01 X+19.582 Y-6.385 C91.761 +G01 X+19.776 Y-6.376 Z-2.612 B17.563 C90.941 +G01 X+20.024 Y-6.378 Z-2.611 B17.558 C89.899 +G01 X+20.273 Y-6.381 C88.858 +G01 X+20.477 Y-6.383 Z-2.612 B17.563 C87.989 +G01 X+20.72 Y-6.397 Z-2.611 B17.558 C86.972 +G01 X+20.962 Y-6.412 C85.954 +G01 X+21.178 Y-6.426 Z-2.612 B17.563 C85.038 +G01 X+21.413 Y-6.452 Z-2.611 B17.558 C84.045 +G01 X+21.649 Y-6.479 C83.051 +G01 X+21.875 Y-6.504 Z-2.612 B17.563 C82.087 +G01 X+22.103 Y-6.542 Z-2.611 B17.558 C81.117 +G01 X+22.332 Y-6.58 B17.557 C80.148 +G01 X+22.567 Y-6.619 Z-2.612 B17.563 C79.136 +G01 X+23.009 Y-6.715 Z-2.611 B17.557 C77.244 +G01 X+23.253 Y-6.768 Z-2.612 B17.563 C76.185 +G01 X+23.678 Y-6.885 Z-2.611 B17.557 C74.341 +G01 X+23.929 Y-6.953 Z-2.612 B17.563 C73.233 +G01 X+24.337 Y-7.088 Z-2.611 B17.557 C71.437 +G01 X+24.596 Y-7.173 Z-2.612 B17.563 C70.282 +G01 X+24.986 Y-7.324 Z-2.611 B17.557 C68.534 +G01 X+25.25 Y-7.427 Z-2.612 B17.563 C67.331 +G01 X+25.621 Y-7.593 Z-2.611 B17.557 C65.631 +G01 X+25.89 Y-7.714 Z-2.612 B17.562 C64.38 +G01 X+26.242 Y-7.894 Z-2.611 B17.557 C62.728 +G01 X+26.515 Y-8.033 Z-2.612 B17.562 C61.352 +G01 X+26.847 Y-8.225 Z-2.611 B17.557 C59.824 +G01 X+27.122 Y-8.384 Z-2.612 B17.562 C58.478 +G01 X+27.435 Y-8.587 Z-2.611 B17.557 C56.921 +G01 X+27.711 Y-8.766 Z-2.612 B17.562 C55.538 +G01 X+28.004 Y-8.979 Z-2.611 B17.557 C54.018 +G01 X+28.279 Y-9.178 Z-2.612 B17.562 C52.587 +G01 X+28.552 Y-9.398 Z-2.611 B17.557 C51.114 +G01 X+28.825 Y-9.619 Z-2.612 B17.562 C49.636 +G01 X+29.078 Y-9.845 Z-2.611 B17.557 C48.211 +G01 X+29.348 Y-10.087 Z-2.612 B17.563 C46.685 +G01 X+29.58 Y-10.318 Z-2.611 B17.557 C45.308 +G01 X+29.846 Y-10.581 Z-2.612 B17.563 C43.733 +G01 X+30.058 Y-10.815 Z-2.611 B17.557 C42.405 +G01 X+30.318 Y-11.101 Z-2.612 B17.563 C40.782 +G01 X+30.511 Y-11.336 Z-2.611 B17.557 C39.502 +G01 X+30.762 Y-11.643 Z-2.612 B17.563 C37.831 +G01 X+30.936 Y-11.88 Z-2.611 B17.557 C36.599 +G01 X+31.178 Y-12.209 Z-2.612 B17.563 C34.88 +G01 X+31.333 Y-12.444 Z-2.611 B17.557 C33.695 +G01 X+31.564 Y-12.794 Z-2.612 B17.563 C31.929 +G01 X+31.701 Y-13.028 Z-2.611 B17.557 C30.792 +G01 X+31.92 Y-13.399 Z-2.612 B17.563 C28.977 +G01 X+32.059 Y-13.667 Z-2.611 B17.558 C27.709 +G01 X+32.199 Y-13.935 Z-2.612 B17.56 C26.441 +G01 X+32.244 Y-14.022 B17.563 C26.026 +G01 X+32.367 Y-14.291 Z-2.611 B17.558 C24.782 +G01 X+32.49 Y-14.561 Z-2.612 B17.56 C23.537 +G01 X+32.535 Y-14.66 B17.564 C23.075 +G01 X+32.643 Y-14.93 Z-2.611 B17.558 C21.854 +G01 X+32.749 Y-15.2 Z-2.612 B17.559 C20.634 +G01 X+32.794 Y-15.312 B17.564 C20.124 +G01 X+32.885 Y-15.582 Z-2.611 B17.558 C18.927 +G01 X+32.976 Y-15.852 B17.559 C17.73 +G01 X+33.018 Y-15.977 Z-2.612 B17.564 C17.172 +G01 X+33.094 Y-16.246 Z-2.611 B17.558 C16. +G01 X+33.169 Y-16.515 B17.559 C14.827 +G01 X+33.208 Y-16.652 Z-2.612 B17.564 C14.221 +G01 X+33.268 Y-16.919 Z-2.611 B17.558 C13.072 +G01 X+33.329 Y-17.187 B17.559 C11.923 +G01 X+33.363 Y-17.337 Z-2.612 B17.563 C11.27 +G01 X+33.408 Y-17.601 Z-2.611 B17.558 C10.145 +G01 X+33.454 Y-17.865 C9.02 +G01 X+33.482 Y-18.028 Z-2.612 B17.564 C8.319 +G01 X+33.514 Y-18.289 Z-2.611 B17.558 C7.218 +G01 X+33.545 Y-18.55 C6.116 +G01 X+33.566 Y-18.725 Z-2.612 B17.563 C5.367 +G01 X+33.583 Y-18.981 Z-2.611 B17.558 C4.29 +G01 X+33.601 Y-19.237 C3.213 +G01 X+33.613 Y-19.425 Z-2.612 B17.563 C2.416 +G01 X+33.618 Y-19.676 Z-2.611 B17.558 C1.363 +G01 X+33.622 Y-19.927 C0.309 +G01 X+33.625 Y-20.126 Z-2.612 B17.563 C359.465 +G01 X+33.616 Y-20.372 Z-2.611 B17.558 C358.436 +G01 X+33.608 Y-20.617 C357.406 +G01 X+33.6 Y-20.828 Z-2.612 B17.563 C356.514 +G01 X+33.58 Y-21.067 Z-2.611 B17.558 C355.508 +G01 X+33.559 Y-21.306 C354.503 +G01 X+33.54 Y-21.527 Z-2.612 B17.563 C353.563 +G01 X+33.508 Y-21.759 Z-2.611 B17.558 C352.581 +G01 X+33.475 Y-21.991 B17.557 C351.599 +G01 X+33.443 Y-22.222 Z-2.612 B17.563 C350.611 +G01 X+33.4 Y-22.446 Z-2.611 B17.558 C349.654 +G01 X+33.357 Y-22.671 B17.557 C348.696 +G01 X+33.311 Y-22.911 Z-2.612 B17.563 C347.66 +G01 X+33.204 Y-23.344 Z-2.611 B17.557 C345.793 +G01 X+33.143 Y-23.592 Z-2.612 B17.563 C344.709 +G01 X+33.018 Y-24.009 Z-2.611 B17.557 C342.889 +G01 X+32.941 Y-24.264 Z-2.612 B17.563 C341.758 +G01 X+32.798 Y-24.663 Z-2.611 B17.557 C339.986 +G01 X+32.704 Y-24.925 Z-2.612 B17.563 C338.806 +G01 X+32.545 Y-25.305 Z-2.611 B17.557 C337.082 +G01 X+32.434 Y-25.572 Z-2.612 B17.563 C335.855 +G01 X+32.261 Y-25.934 Z-2.611 B17.557 C334.179 +G01 X+32.131 Y-26.205 Z-2.612 B17.562 C332.904 +G01 X+31.944 Y-26.547 Z-2.611 B17.557 C331.276 +G01 X+31.795 Y-26.821 Z-2.612 B17.562 C329.953 +G01 X+31.597 Y-27.143 Z-2.611 B17.557 C328.373 +G01 X+31.428 Y-27.419 Z-2.612 B17.562 C327.004 +G01 X+31.221 Y-27.722 Z-2.611 B17.557 C325.469 +G01 X+31.031 Y-27.998 Z-2.612 B17.562 C324.062 +G01 X+30.815 Y-28.28 Z-2.611 B17.557 C322.566 +G01 X+30.605 Y-28.555 Z-2.612 B17.562 C321.111 +G01 X+30.382 Y-28.817 Z-2.611 B17.557 C319.663 +G01 X+30.15 Y-29.089 Z-2.612 B17.562 C318.16 +G01 X+29.922 Y-29.332 Z-2.611 B17.557 C316.76 +G01 X+29.669 Y-29.6 Z-2.612 B17.563 C315.209 +G01 X+29.437 Y-29.822 Z-2.611 B17.557 C313.856 +G01 X+29.162 Y-30.085 Z-2.612 B17.563 C312.258 +G01 X+28.927 Y-30.288 Z-2.611 B17.557 C310.953 +G01 X+28.631 Y-30.543 Z-2.612 B17.563 C309.306 +G01 X+28.395 Y-30.727 Z-2.611 B17.557 C308.05 +G01 X+28.077 Y-30.974 Z-2.612 B17.563 C306.355 +G01 X+27.84 Y-31.138 Z-2.611 B17.557 C305.147 +G01 X+27.501 Y-31.375 Z-2.612 B17.563 C303.404 +G01 X+27.266 Y-31.521 Z-2.611 B17.557 C302.244 +G01 X+26.905 Y-31.746 Z-2.612 B17.563 C300.453 +G01 X+26.674 Y-31.874 Z-2.611 B17.557 C299.341 +G01 X+26.292 Y-32.086 Z-2.612 B17.563 C297.502 +G01 X+26.023 Y-32.217 Z-2.611 B17.558 C296.246 +G01 X+25.754 Y-32.348 Z-2.612 B17.56 C294.989 +G01 X+25.661 Y-32.394 B17.563 C294.55 +G01 X+25.391 Y-32.509 Z-2.611 B17.558 C293.318 +G01 X+25.121 Y-32.624 Z-2.612 B17.56 C292.086 +G01 X+25.016 Y-32.669 B17.564 C291.599 +G01 X+24.745 Y-32.768 Z-2.611 B17.558 C290.391 +G01 X+24.475 Y-32.867 Z-2.612 B17.559 C289.182 +G01 X+24.357 Y-32.91 B17.564 C288.648 +G01 X+24.087 Y-32.994 Z-2.611 B17.558 C287.463 +G01 X+23.818 Y-33.077 B17.559 C286.279 +G01 X+23.686 Y-33.117 Z-2.612 B17.564 C285.697 +G01 X+23.418 Y-33.185 Z-2.611 B17.558 C284.536 +G01 X+23.15 Y-33.253 B17.559 C283.375 +G01 X+23.006 Y-33.29 Z-2.612 B17.564 C282.746 +G01 X+22.741 Y-33.343 Z-2.611 B17.558 C281.609 +G01 X+22.475 Y-33.395 B17.559 C280.471 +G01 X+22.318 Y-33.427 Z-2.612 B17.563 C279.794 +G01 X+22.056 Y-33.465 Z-2.611 B17.558 C278.681 +G01 X+21.793 Y-33.503 C277.568 +G01 X+21.624 Y-33.528 Z-2.612 B17.563 C276.843 +G01 X+21.365 Y-33.553 Z-2.611 B17.558 C275.754 +G01 X+21.107 Y-33.577 C274.665 +G01 X+20.925 Y-33.594 Z-2.612 B17.563 C273.892 +G01 X+20.671 Y-33.605 Z-2.611 B17.558 C272.827 +G01 X+20.418 Y-33.615 C271.761 +G01 X+20.224 Y-33.623 Z-2.612 B17.563 C270.941 +G01 X+19.976 Y-33.621 Z-2.611 B17.558 C269.899 +G01 X+19.727 Y-33.619 C268.858 +G01 X+19.523 Y-33.617 Z-2.612 B17.563 C267.989 +G01 X+19.28 Y-33.602 Z-2.611 B17.558 C266.972 +G01 X+19.038 Y-33.587 C265.954 +G01 X+18.822 Y-33.574 Z-2.612 B17.563 C265.038 +G01 X+18.587 Y-33.548 Z-2.611 B17.558 C264.045 +G01 X+18.351 Y-33.521 C263.051 +G01 X+18.125 Y-33.496 Z-2.612 B17.563 C262.087 +G01 X+17.897 Y-33.458 Z-2.611 B17.558 C261.117 +G01 X+17.668 Y-33.42 B17.557 C260.147 +G01 X+17.433 Y-33.381 Z-2.612 B17.563 C259.136 +G01 X+16.991 Y-33.285 Z-2.611 B17.557 C257.244 +G01 X+16.747 Y-33.231 Z-2.612 B17.563 C256.185 +G01 X+16.322 Y-33.115 Z-2.611 B17.557 C254.341 +G01 X+16.071 Y-33.046 Z-2.612 B17.563 C253.233 +G01 X+15.663 Y-32.912 Z-2.611 B17.557 C251.437 +G01 X+15.404 Y-32.827 Z-2.612 B17.563 C250.282 +G01 X+15.014 Y-32.676 Z-2.611 B17.557 C248.534 +G01 X+14.75 Y-32.573 Z-2.612 B17.563 C247.331 +G01 X+14.379 Y-32.407 Z-2.611 B17.557 C245.631 +G01 X+14.11 Y-32.286 Z-2.612 B17.562 C244.38 +G01 X+13.758 Y-32.106 Z-2.611 B17.557 C242.727 +G01 X+13.465 Y-31.957 Z-2.612 B17.563 C241.352 +G01 X+13.171 Y-31.786 Z-2.611 B17.557 C239.916 +G01 X+12.878 Y-31.616 Z-2.612 B17.562 C238.479 +G01 X+12.565 Y-31.413 Z-2.611 B17.557 C236.921 +G01 X+12.289 Y-31.233 Z-2.612 B17.562 C235.538 +G01 X+11.996 Y-31.021 Z-2.611 B17.557 C234.018 +G01 X+11.721 Y-30.822 Z-2.612 B17.562 C232.587 +G01 X+11.448 Y-30.602 Z-2.611 B17.557 C231.114 +G01 X+11.175 Y-30.381 Z-2.612 B17.562 C229.636 +G01 X+10.922 Y-30.155 Z-2.611 B17.557 C228.211 +G01 X+10.652 Y-29.913 Z-2.612 B17.563 C226.684 +G01 X+10.389 Y-29.651 Z-2.611 B17.557 C225.121 +G01 X+10.388 Y-29.518 Z-2.581 B17.44 C224.714 +G01 X+10.223 Y-29.355 Z-2.583 B17.443 C223.734 +G01 X+9.987 Y-29.094 Z-2.581 B17.438 C222.244 +G01 X+9.755 Y-28.839 Z-2.583 B17.444 C220.783 +G01 X+9.534 Y-28.57 Z-2.581 B17.438 C219.307 +G01 X+9.313 Y-28.3 Z-2.583 B17.444 C217.832 +G01 X+9.13 Y-28.052 Z-2.581 B17.438 C216.528 +G01 X+8.948 Y-27.803 Z-2.582 B17.441 C215.223 +G01 X+8.9 Y-27.739 Z-2.583 B17.444 C214.881 +G01 X+8.718 Y-27.464 Z-2.581 B17.438 C213.485 +G01 X+8.537 Y-27.188 Z-2.582 B17.443 C212.089 +G01 X+8.517 Y-27.157 Z-2.583 B17.444 C211.93 +G01 X+8.352 Y-26.878 Z-2.581 B17.439 C210.558 +G01 X+8.188 Y-26.598 Z-2.582 B17.442 C209.185 +G01 X+8.163 Y-26.556 Z-2.583 B17.444 C208.979 +G01 X+8.016 Y-26.274 Z-2.581 B17.439 C207.63 +G01 X+7.869 Y-25.991 Z-2.582 B17.442 C206.281 +G01 X+7.842 Y-25.938 Z-2.583 B17.444 C206.028 +G01 X+7.711 Y-25.654 Z-2.581 B17.439 C204.703 +G01 X+7.581 Y-25.369 Z-2.582 B17.442 C203.378 +G01 X+7.552 Y-25.305 Z-2.583 B17.444 C203.078 +G01 X+7.438 Y-25.019 Z-2.581 B17.439 C201.776 +G01 X+7.326 Y-24.733 Z-2.582 B17.441 C200.474 +G01 X+7.295 Y-24.657 Z-2.583 B17.444 C200.127 +G01 X+7.199 Y-24.371 Z-2.581 B17.439 C198.849 +G01 X+7.102 Y-24.085 Z-2.582 B17.441 C197.57 +G01 X+7.072 Y-23.997 Z-2.583 B17.444 C197.176 +G01 X+6.992 Y-23.711 Z-2.581 B17.439 C195.921 +G01 X+6.912 Y-23.426 Z-2.582 B17.441 C194.667 +G01 X+6.884 Y-23.326 Z-2.583 B17.444 C194.225 +G01 X+6.819 Y-23.042 Z-2.581 B17.439 C192.994 +G01 X+6.756 Y-22.759 Z-2.582 B17.441 C191.764 +G01 X+6.73 Y-22.646 Z-2.583 B17.444 C191.274 +G01 X+6.681 Y-22.365 Z-2.581 B17.439 C190.067 +G01 X+6.633 Y-22.084 Z-2.582 B17.44 C188.86 +G01 X+6.611 Y-21.959 Z-2.583 B17.444 C188.323 +G01 X+6.578 Y-21.682 Z-2.581 B17.439 C187.14 +G01 X+6.545 Y-21.405 Z-2.582 B17.44 C185.956 +G01 X+6.528 Y-21.268 Z-2.583 B17.444 C185.372 +G01 X+6.509 Y-20.994 Z-2.581 B17.439 C184.213 +G01 X+6.491 Y-20.721 Z-2.582 B17.44 C183.053 +G01 X+6.481 Y-20.572 Z-2.583 B17.444 C182.421 +G01 X+6.476 Y-20.304 Z-2.581 B17.439 C181.285 +G01 X+6.472 Y-20.036 Z-2.582 B17.44 C180.149 +G01 X+6.469 Y-19.876 Z-2.583 B17.444 C179.47 +G01 X+6.478 Y-19.613 Z-2.581 B17.439 C178.358 +G01 X+6.488 Y-19.351 C177.246 +G01 X+6.494 Y-19.179 Z-2.583 B17.444 C176.52 +G01 X+6.516 Y-18.923 Z-2.581 B17.439 C175.431 +G01 X+6.538 Y-18.667 C174.342 +G01 X+6.554 Y-18.485 Z-2.583 B17.444 C173.569 +G01 X+6.588 Y-18.236 Z-2.581 B17.439 C172.504 +G01 X+6.623 Y-17.987 C171.439 +G01 X+6.65 Y-17.795 Z-2.583 B17.444 C170.618 +G01 X+6.696 Y-17.553 Z-2.581 B17.439 C169.577 +G01 X+6.742 Y-17.312 C168.536 +G01 X+6.781 Y-17.111 Z-2.583 B17.444 C167.667 +G01 X+6.838 Y-16.877 Z-2.581 B17.439 C166.65 +G01 X+6.896 Y-16.644 C165.632 +G01 X+6.947 Y-16.434 Z-2.583 B17.444 C164.716 +G01 X+7.015 Y-16.209 Z-2.581 B17.439 C163.722 +G01 X+7.082 Y-15.984 C162.729 +G01 X+7.148 Y-15.767 Z-2.583 B17.444 C161.765 +G01 X+7.225 Y-15.551 Z-2.581 B17.439 C160.795 +G01 X+7.303 Y-15.335 C159.825 +G01 X+7.383 Y-15.111 Z-2.583 B17.443 C158.814 +G01 X+7.555 Y-14.698 Z-2.581 B17.438 C156.922 +G01 X+7.651 Y-14.468 Z-2.583 B17.443 C155.864 +G01 X+7.84 Y-14.075 Z-2.581 B17.438 C154.019 +G01 X+7.953 Y-13.839 Z-2.583 B17.443 C152.913 +G01 X+8.156 Y-13.466 Z-2.581 B17.438 C151.115 +G01 X+8.286 Y-13.227 Z-2.583 B17.443 C149.962 +G01 X+8.502 Y-12.875 Z-2.581 B17.438 C148.212 +G01 X+8.65 Y-12.633 Z-2.583 B17.443 C147.011 +G01 X+8.877 Y-12.302 Z-2.581 B17.438 C145.309 +G01 X+9.044 Y-12.059 Z-2.583 B17.443 C144.067 +G01 X+9.282 Y-11.748 Z-2.581 B17.438 C142.405 +G01 X+9.467 Y-11.505 Z-2.583 B17.443 C141.113 +G01 X+9.713 Y-11.216 Z-2.581 B17.438 C139.502 +G01 X+9.919 Y-10.974 Z-2.583 B17.443 C138.16 +G01 X+10.171 Y-10.706 Z-2.581 B17.438 C136.599 +G01 X+10.406 Y-10.458 Z-2.582 B17.443 C135.154 +G01 X+10.653 Y-10.221 Z-2.581 B17.438 C133.703 +G01 X+10.901 Y-9.985 Z-2.583 B17.444 C132.252 +G01 X+11.164 Y-9.757 Z-2.581 B17.438 C130.779 +G01 X+11.428 Y-9.531 Z-2.583 B17.444 C129.307 +G01 X+11.673 Y-9.339 Z-2.581 B17.438 C127.991 +G01 X+11.919 Y-9.149 Z-2.582 B17.441 C126.675 +G01 X+11.978 Y-9.103 Z-2.583 B17.444 C126.357 +G01 X+12.251 Y-8.913 Z-2.581 B17.438 C124.949 +G01 X+12.523 Y-8.723 Z-2.582 B17.443 C123.541 +G01 X+12.55 Y-8.705 Z-2.583 B17.444 C123.406 +G01 X+12.827 Y-8.531 Z-2.581 B17.439 C122.021 +G01 X+13.104 Y-8.359 Z-2.582 B17.443 C120.637 +G01 X+13.141 Y-8.336 Z-2.583 B17.444 C120.455 +G01 X+13.422 Y-8.18 Z-2.581 B17.439 C119.094 +G01 X+13.703 Y-8.025 Z-2.582 B17.442 C117.733 +G01 X+13.751 Y-7.998 Z-2.583 B17.444 C117.504 +G01 X+14.034 Y-7.86 Z-2.581 B17.439 C116.167 +G01 X+14.318 Y-7.721 Z-2.582 B17.442 C114.83 +G01 X+14.377 Y-7.693 Z-2.583 B17.444 C114.553 +G01 X+14.662 Y-7.571 Z-2.581 B17.439 C113.24 +G01 X+14.947 Y-7.449 Z-2.582 B17.442 C111.926 +G01 X+15.018 Y-7.419 Z-2.583 B17.444 C111.602 +G01 X+15.304 Y-7.314 Z-2.581 B17.439 C110.312 +G01 X+15.59 Y-7.21 Z-2.582 B17.441 C109.022 +G01 X+15.672 Y-7.18 Z-2.583 B17.444 C108.651 +G01 X+15.957 Y-7.091 Z-2.581 B17.439 C107.385 +G01 X+16.243 Y-7.003 Z-2.582 B17.441 C106.119 +G01 X+16.338 Y-6.974 Z-2.583 B17.444 C105.7 +G01 X+16.622 Y-6.901 Z-2.581 B17.439 C104.458 +G01 X+16.906 Y-6.83 Z-2.582 B17.441 C103.215 +G01 X+17.013 Y-6.803 Z-2.583 B17.444 C102.749 +G01 X+17.295 Y-6.746 Z-2.581 B17.439 C101.531 +G01 X+17.578 Y-6.69 Z-2.582 B17.44 C100.312 +G01 X+17.696 Y-6.666 Z-2.583 B17.444 C99.799 +G01 X+17.976 Y-6.625 Z-2.581 B17.439 C98.603 +G01 X+18.255 Y-6.584 Z-2.582 B17.44 C97.408 +G01 X+18.386 Y-6.565 Z-2.583 B17.444 C96.848 +G01 X+18.661 Y-6.539 Z-2.581 B17.439 C95.676 +G01 X+18.937 Y-6.513 Z-2.582 B17.44 C94.505 +G01 X+19.08 Y-6.5 Z-2.583 B17.444 C93.897 +G01 X+19.35 Y-6.488 Z-2.581 B17.439 C92.749 +G01 X+19.621 Y-6.477 Z-2.582 B17.44 C91.601 +G01 X+19.776 Y-6.471 Z-2.583 B17.444 C90.946 +G01 X+20.041 Y-6.473 Z-2.581 B17.439 C89.822 +G01 X+20.307 Y-6.475 Z-2.582 B17.44 C88.698 +G01 X+20.473 Y-6.477 Z-2.583 B17.444 C87.995 +G01 X+20.732 Y-6.493 Z-2.581 B17.439 C86.895 +G01 X+20.991 Y-6.508 C85.794 +G01 X+21.168 Y-6.519 Z-2.583 B17.444 C85.044 +G01 X+21.421 Y-6.547 Z-2.581 B17.439 C83.968 +G01 X+21.673 Y-6.576 C82.891 +G01 X+21.86 Y-6.597 Z-2.583 B17.444 C82.093 +G01 X+22.106 Y-6.638 Z-2.581 B17.439 C81.041 +G01 X+22.351 Y-6.678 C79.987 +G01 X+22.548 Y-6.711 Z-2.583 B17.444 C79.142 +G01 X+22.785 Y-6.763 Z-2.581 B17.439 C78.113 +G01 X+23.023 Y-6.815 C77.084 +G01 X+23.229 Y-6.86 Z-2.583 B17.444 C76.192 +G01 X+23.458 Y-6.922 Z-2.581 B17.439 C75.186 +G01 X+23.687 Y-6.985 C74.18 +G01 X+23.901 Y-7.043 Z-2.583 B17.444 C73.241 +G01 X+24.121 Y-7.116 Z-2.581 B17.439 C72.259 +G01 X+24.341 Y-7.188 C71.277 +G01 X+24.563 Y-7.261 Z-2.583 B17.444 C70.29 +G01 X+24.774 Y-7.343 Z-2.581 B17.439 C69.332 +G01 X+24.985 Y-7.425 B17.438 C68.374 +G01 X+25.212 Y-7.513 Z-2.583 B17.443 C67.339 +G01 X+25.615 Y-7.693 Z-2.581 B17.438 C65.47 +G01 X+25.848 Y-7.798 Z-2.583 B17.443 C64.388 +G01 X+26.231 Y-7.994 Z-2.581 B17.438 C62.567 +G01 X+26.469 Y-8.115 Z-2.583 B17.443 C61.352 +G01 X+26.831 Y-8.325 Z-2.581 B17.438 C59.664 +G01 X+27.072 Y-8.464 Z-2.583 B17.443 C58.486 +G01 X+27.414 Y-8.686 Z-2.581 B17.438 C56.76 +G01 X+27.656 Y-8.843 Z-2.583 B17.443 C55.544 +G01 X+27.978 Y-9.076 Z-2.581 B17.438 C53.857 +G01 X+28.221 Y-9.252 Z-2.583 B17.443 C52.59 +G01 X+28.521 Y-9.494 Z-2.581 B17.438 C50.954 +G01 X+28.763 Y-9.69 Z-2.583 B17.443 C49.636 +G01 X+29.042 Y-9.939 Z-2.581 B17.438 C48.05 +G01 X+29.295 Y-10.167 Z-2.582 B17.443 C46.606 +G01 X+29.536 Y-10.406 Z-2.581 B17.438 C45.17 +G01 X+29.777 Y-10.645 Z-2.583 B17.443 C43.734 +G01 X+30.013 Y-10.905 Z-2.581 B17.438 C42.244 +G01 X+30.245 Y-11.161 Z-2.583 B17.444 C40.783 +G01 X+30.466 Y-11.43 Z-2.581 B17.438 C39.307 +G01 X+30.687 Y-11.7 Z-2.583 B17.444 C37.832 +G01 X+30.87 Y-11.948 Z-2.581 B17.438 C36.528 +G01 X+31.052 Y-12.197 Z-2.582 B17.441 C35.223 +G01 X+31.1 Y-12.261 Z-2.583 B17.444 C34.881 +G01 X+31.282 Y-12.536 Z-2.581 B17.438 C33.485 +G01 X+31.463 Y-12.812 Z-2.582 B17.443 C32.089 +G01 X+31.483 Y-12.843 Z-2.583 B17.444 C31.93 +G01 X+31.648 Y-13.122 Z-2.581 B17.439 C30.558 +G01 X+31.812 Y-13.402 Z-2.582 B17.442 C29.185 +G01 X+31.837 Y-13.443 Z-2.583 B17.444 C28.979 +G01 X+31.984 Y-13.726 Z-2.581 B17.439 C27.631 +G01 X+32.131 Y-14.009 Z-2.582 B17.442 C26.281 +G01 X+32.158 Y-14.062 Z-2.583 B17.444 C26.028 +G01 X+32.289 Y-14.346 Z-2.581 B17.439 C24.703 +G01 X+32.419 Y-14.631 Z-2.582 B17.442 C23.378 +G01 X+32.448 Y-14.695 Z-2.583 B17.444 C23.078 +G01 X+32.562 Y-14.981 Z-2.581 B17.439 C21.776 +G01 X+32.674 Y-15.267 Z-2.582 B17.441 C20.474 +G01 X+32.705 Y-15.343 Z-2.583 B17.444 C20.127 +G01 X+32.801 Y-15.629 Z-2.581 B17.439 C18.849 +G01 X+32.898 Y-15.915 Z-2.582 B17.441 C17.571 +G01 X+32.928 Y-16.003 Z-2.583 B17.444 C17.176 +G01 X+33.008 Y-16.288 Z-2.581 B17.439 C15.922 +G01 X+33.088 Y-16.574 Z-2.582 B17.441 C14.667 +G01 X+33.116 Y-16.674 Z-2.583 B17.444 C14.225 +G01 X+33.181 Y-16.958 Z-2.581 B17.439 C12.994 +G01 X+33.244 Y-17.241 Z-2.582 B17.441 C11.764 +G01 X+33.27 Y-17.354 Z-2.583 B17.444 C11.274 +G01 X+33.319 Y-17.635 Z-2.581 B17.439 C10.067 +G01 X+33.367 Y-17.916 Z-2.582 B17.44 C8.86 +G01 X+33.389 Y-18.04 Z-2.583 B17.444 C8.323 +G01 X+33.422 Y-18.318 Z-2.581 B17.439 C7.14 +G01 X+33.455 Y-18.595 Z-2.582 B17.44 C5.956 +G01 X+33.472 Y-18.732 Z-2.583 B17.444 C5.372 +G01 X+33.491 Y-19.005 Z-2.581 B17.439 C4.213 +G01 X+33.509 Y-19.279 Z-2.582 B17.44 C3.053 +G01 X+33.519 Y-19.427 Z-2.583 B17.444 C2.421 +G01 X+33.524 Y-19.696 Z-2.581 B17.439 C1.286 +G01 X+33.528 Y-19.964 Z-2.582 B17.44 C0.149 +G01 X+33.531 Y-20.124 Z-2.583 B17.444 C359.47 +G01 X+33.522 Y-20.387 Z-2.581 B17.439 C358.358 +G01 X+33.512 Y-20.649 C357.246 +G01 X+33.506 Y-20.82 Z-2.583 B17.444 C356.52 +G01 X+33.484 Y-21.077 Z-2.581 B17.439 C355.431 +G01 X+33.462 Y-21.333 C354.342 +G01 X+33.446 Y-21.515 Z-2.583 B17.444 C353.569 +G01 X+33.412 Y-21.764 Z-2.581 B17.439 C352.504 +G01 X+33.377 Y-22.013 C351.439 +G01 X+33.35 Y-22.205 Z-2.583 B17.444 C350.618 +G01 X+33.304 Y-22.446 Z-2.581 B17.439 C349.577 +G01 X+33.258 Y-22.688 C348.536 +G01 X+33.219 Y-22.889 Z-2.583 B17.444 C347.667 +G01 X+33.162 Y-23.123 Z-2.581 B17.439 C346.65 +G01 X+33.104 Y-23.356 C345.632 +G01 X+33.053 Y-23.566 Z-2.583 B17.444 C344.716 +G01 X+32.985 Y-23.791 Z-2.581 B17.439 C343.722 +G01 X+32.918 Y-24.015 C342.729 +G01 X+32.852 Y-24.233 Z-2.583 B17.444 C341.765 +G01 X+32.775 Y-24.449 Z-2.581 B17.439 C340.795 +G01 X+32.697 Y-24.664 C339.825 +G01 X+32.617 Y-24.889 Z-2.583 B17.443 C338.814 +G01 X+32.445 Y-25.302 Z-2.581 B17.438 C336.922 +G01 X+32.349 Y-25.532 Z-2.583 B17.443 C335.864 +G01 X+32.16 Y-25.925 Z-2.581 B17.438 C334.019 +G01 X+32.047 Y-26.16 Z-2.583 B17.443 C332.913 +G01 X+31.844 Y-26.533 Z-2.581 B17.438 C331.115 +G01 X+31.714 Y-26.772 Z-2.583 B17.443 C329.962 +G01 X+31.498 Y-27.125 Z-2.581 B17.438 C328.212 +G01 X+31.35 Y-27.366 Z-2.583 B17.443 C327.011 +G01 X+31.123 Y-27.698 Z-2.581 B17.438 C325.309 +G01 X+30.956 Y-27.941 Z-2.583 B17.443 C324.067 +G01 X+30.718 Y-28.252 Z-2.581 B17.438 C322.405 +G01 X+30.533 Y-28.494 Z-2.583 B17.443 C321.113 +G01 X+30.287 Y-28.784 Z-2.581 B17.438 C319.502 +G01 X+30.081 Y-29.025 Z-2.583 B17.443 C318.16 +G01 X+29.829 Y-29.294 Z-2.581 B17.438 C316.599 +G01 X+29.594 Y-29.541 Z-2.582 B17.443 C315.154 +G01 X+29.347 Y-29.779 Z-2.581 B17.438 C313.703 +G01 X+29.099 Y-30.015 Z-2.583 B17.444 C312.252 +G01 X+28.836 Y-30.243 Z-2.581 B17.438 C310.779 +G01 X+28.572 Y-30.469 Z-2.583 B17.444 C309.307 +G01 X+28.327 Y-30.66 Z-2.581 B17.438 C307.991 +G01 X+28.081 Y-30.851 Z-2.582 B17.441 C306.675 +G01 X+28.022 Y-30.897 Z-2.583 B17.444 C306.357 +G01 X+27.749 Y-31.087 Z-2.581 B17.438 C304.948 +G01 X+27.477 Y-31.277 Z-2.582 B17.443 C303.541 +G01 X+27.45 Y-31.295 Z-2.583 B17.444 C303.406 +G01 X+27.173 Y-31.468 Z-2.581 B17.439 C302.021 +G01 X+26.896 Y-31.641 Z-2.582 B17.443 C300.637 +G01 X+26.859 Y-31.664 Z-2.583 B17.444 C300.455 +G01 X+26.578 Y-31.82 Z-2.581 B17.439 C299.094 +G01 X+26.297 Y-31.975 Z-2.582 B17.442 C297.733 +G01 X+26.25 Y-32.001 Z-2.583 B17.444 C297.504 +G01 X+25.966 Y-32.14 Z-2.581 B17.439 C296.167 +G01 X+25.682 Y-32.279 Z-2.582 B17.442 C294.83 +G01 X+25.623 Y-32.307 Z-2.583 B17.444 C294.553 +G01 X+25.338 Y-32.429 Z-2.581 B17.439 C293.24 +G01 X+25.053 Y-32.55 Z-2.582 B17.442 C291.926 +G01 X+24.982 Y-32.58 Z-2.583 B17.444 C291.602 +G01 X+24.696 Y-32.686 Z-2.581 B17.439 C290.312 +G01 X+24.41 Y-32.79 Z-2.582 B17.441 C289.022 +G01 X+24.328 Y-32.82 Z-2.583 B17.444 C288.651 +G01 X+24.043 Y-32.909 Z-2.581 B17.439 C287.385 +G01 X+23.757 Y-32.997 Z-2.582 B17.441 C286.119 +G01 X+23.662 Y-33.026 Z-2.583 B17.444 C285.7 +G01 X+23.378 Y-33.098 Z-2.581 B17.439 C284.458 +G01 X+23.094 Y-33.17 Z-2.582 B17.441 C283.215 +G01 X+22.987 Y-33.197 Z-2.583 B17.444 C282.749 +G01 X+22.705 Y-33.254 Z-2.581 B17.439 C281.531 +G01 X+22.422 Y-33.31 Z-2.582 B17.44 C280.312 +G01 X+22.304 Y-33.334 Z-2.583 B17.444 C279.799 +G01 X+22.024 Y-33.375 Z-2.581 B17.439 C278.603 +G01 X+21.745 Y-33.415 Z-2.582 B17.44 C277.408 +G01 X+21.614 Y-33.435 Z-2.583 B17.444 C276.848 +G01 X+21.339 Y-33.461 Z-2.581 B17.439 C275.676 +G01 X+21.063 Y-33.486 Z-2.582 B17.44 C274.505 +G01 X+20.92 Y-33.5 Z-2.583 B17.444 C273.897 +G01 X+20.65 Y-33.512 Z-2.581 B17.439 C272.749 +G01 X+20.379 Y-33.523 Z-2.582 B17.44 C271.601 +G01 X+20.224 Y-33.529 Z-2.583 B17.444 C270.946 +G01 X+19.959 Y-33.527 Z-2.581 B17.439 C269.822 +G01 X+19.693 Y-33.524 Z-2.582 B17.44 C268.698 +G01 X+19.528 Y-33.523 Z-2.583 B17.444 C267.995 +G01 X+19.268 Y-33.507 Z-2.581 B17.439 C266.895 +G01 X+19.009 Y-33.491 C265.794 +G01 X+18.832 Y-33.481 Z-2.583 B17.444 C265.044 +G01 X+18.579 Y-33.452 Z-2.581 B17.439 C263.968 +G01 X+18.327 Y-33.424 C262.891 +G01 X+18.14 Y-33.403 Z-2.583 B17.444 C262.093 +G01 X+17.894 Y-33.362 Z-2.581 B17.439 C261.041 +G01 X+17.649 Y-33.322 C259.987 +G01 X+17.452 Y-33.289 Z-2.583 B17.444 C259.142 +G01 X+17.215 Y-33.237 Z-2.581 B17.439 C258.113 +G01 X+16.977 Y-33.185 C257.084 +G01 X+16.771 Y-33.14 Z-2.583 B17.444 C256.192 +G01 X+16.542 Y-33.078 Z-2.581 B17.439 C255.186 +G01 X+16.313 Y-33.015 C254.18 +G01 X+16.099 Y-32.957 Z-2.583 B17.444 C253.241 +G01 X+15.879 Y-32.884 Z-2.581 B17.439 C252.259 +G01 X+15.659 Y-32.812 C251.277 +G01 X+15.437 Y-32.739 Z-2.583 B17.444 C250.29 +G01 X+15.226 Y-32.657 Z-2.581 B17.439 C249.332 +G01 X+15.015 Y-32.575 B17.438 C248.374 +G01 X+14.788 Y-32.487 Z-2.583 B17.443 C247.339 +G01 X+14.47 Y-32.345 Z-2.581 B17.438 C245.863 +G01 X+14.152 Y-32.202 Z-2.583 B17.443 C244.388 +G01 X+13.769 Y-32.006 Z-2.581 B17.438 C242.567 +G01 X+13.51 Y-31.874 Z-2.583 B17.443 C241.352 +G01 X+13.219 Y-31.705 Z-2.581 B17.438 C239.92 +G01 X+12.928 Y-31.536 Z-2.583 B17.443 C238.487 +G01 X+12.586 Y-31.314 Z-2.581 B17.438 C236.76 +G01 X+12.344 Y-31.157 Z-2.583 B17.443 C235.544 +G01 X+12.022 Y-30.924 Z-2.581 B17.438 C233.857 +G01 X+11.779 Y-30.748 Z-2.583 B17.443 C232.59 +G01 X+11.479 Y-30.506 Z-2.581 B17.438 C230.954 +G01 X+11.237 Y-30.31 Z-2.583 B17.443 C229.636 +G01 X+10.958 Y-30.061 Z-2.581 B17.438 C228.05 +G01 X+10.705 Y-29.832 Z-2.582 B17.443 C226.606 +G01 X+10.455 Y-29.585 Z-2.581 B17.438 C225.115 +G01 X+10.454 Y-29.451 Z-2.552 B17.313 C224.706 +G01 X+10.293 Y-29.291 Z-2.553 B17.317 C223.737 +G01 X+10.032 Y-29.004 Z-2.552 B17.312 C222.081 +G01 X+9.827 Y-28.779 Z-2.553 B17.317 C220.783 +G01 X+9.589 Y-28.488 Z-2.552 B17.312 C219.177 +G01 X+9.389 Y-28.243 Z-2.553 B17.318 C217.83 +G01 X+9.172 Y-27.949 Z-2.552 B17.312 C216.274 +G01 X+8.972 Y-27.676 Z-2.553 B17.317 C214.83 +G01 X+8.809 Y-27.43 Z-2.552 B17.312 C213.575 +G01 X+8.647 Y-27.183 B17.315 C212.32 +G01 X+8.597 Y-27.108 Z-2.553 B17.318 C211.927 +G01 X+8.447 Y-26.853 Z-2.552 B17.312 C210.672 +G01 X+8.297 Y-26.598 B17.314 C209.417 +G01 X+8.247 Y-26.512 Z-2.553 B17.318 C208.979 +G01 X+8.112 Y-26.255 Z-2.552 B17.312 C207.746 +G01 X+7.978 Y-25.997 B17.314 C206.513 +G01 X+7.927 Y-25.898 Z-2.553 B17.318 C206.028 +G01 X+7.808 Y-25.64 Z-2.552 B17.312 C204.819 +G01 X+7.69 Y-25.381 B17.314 C203.61 +G01 X+7.639 Y-25.269 Z-2.553 B17.318 C203.078 +G01 X+7.536 Y-25.01 Z-2.552 B17.312 C201.892 +G01 X+7.434 Y-24.75 B17.314 C200.707 +G01 X+7.384 Y-24.626 Z-2.553 B17.318 C200.127 +G01 X+7.297 Y-24.367 Z-2.552 B17.312 C198.966 +G01 X+7.209 Y-24.107 B17.313 C197.804 +G01 X+7.163 Y-23.97 Z-2.553 B17.318 C197.177 +G01 X+7.09 Y-23.712 Z-2.552 B17.312 C196.039 +G01 X+7.018 Y-23.454 B17.313 C194.901 +G01 X+6.976 Y-23.304 Z-2.553 B17.318 C194.226 +G01 X+6.918 Y-23.048 Z-2.552 B17.312 C193.112 +G01 X+6.86 Y-22.792 B17.313 C191.997 +G01 X+6.823 Y-22.629 Z-2.553 B17.318 C191.275 +G01 X+6.779 Y-22.376 Z-2.552 B17.312 C190.185 +G01 X+6.735 Y-22.123 B17.313 C189.094 +G01 X+6.705 Y-21.947 Z-2.553 B17.318 C188.325 +G01 X+6.675 Y-21.698 Z-2.552 B17.313 C187.258 +G01 X+6.645 Y-21.449 C186.191 +G01 X+6.622 Y-21.26 Z-2.553 B17.318 C185.374 +G01 X+6.605 Y-21.015 Z-2.552 B17.313 C184.331 +G01 X+6.589 Y-20.77 B17.312 C183.288 +G01 X+6.575 Y-20.57 Z-2.553 B17.318 C182.424 +G01 X+6.571 Y-20.33 Z-2.552 B17.313 C181.404 +G01 X+6.567 Y-20.09 B17.312 C180.384 +G01 X+6.564 Y-19.878 Z-2.553 B17.318 C179.473 +G01 X+6.572 Y-19.644 Z-2.552 B17.313 C178.477 +G01 X+6.58 Y-19.41 B17.312 C177.481 +G01 X+6.588 Y-19.187 Z-2.553 B17.318 C176.523 +G01 X+6.607 Y-18.959 Z-2.552 B17.313 C175.55 +G01 X+6.627 Y-18.731 B17.312 C174.578 +G01 X+6.647 Y-18.497 Z-2.553 B17.318 C173.572 +G01 X+6.709 Y-18.055 Z-2.552 B17.312 C171.675 +G01 X+6.742 Y-17.812 Z-2.553 B17.318 C170.622 +G01 X+6.824 Y-17.384 Z-2.552 B17.312 C168.772 +G01 X+6.873 Y-17.132 Z-2.553 B17.318 C167.671 +G01 X+6.974 Y-16.72 Z-2.552 B17.312 C165.868 +G01 X+7.038 Y-16.46 Z-2.553 B17.318 C164.721 +G01 X+7.157 Y-16.065 Z-2.552 B17.311 C162.965 +G01 X+7.237 Y-15.798 Z-2.553 B17.318 C161.77 +G01 X+7.353 Y-15.472 Z-2.552 B17.312 C160.295 +G01 X+7.47 Y-15.146 Z-2.553 B17.317 C158.819 +G01 X+7.563 Y-14.924 Z-2.552 B17.313 C157.789 +G01 X+7.656 Y-14.702 C156.759 +G01 X+7.737 Y-14.508 Z-2.553 B17.317 C155.869 +G01 X+7.838 Y-14.295 Z-2.552 B17.313 C154.863 +G01 X+7.94 Y-14.083 C153.856 +G01 X+8.036 Y-13.884 Z-2.553 B17.317 C152.918 +G01 X+8.145 Y-13.682 Z-2.552 B17.313 C151.936 +G01 X+8.255 Y-13.48 C150.953 +G01 X+8.367 Y-13.276 Z-2.553 B17.317 C149.968 +G01 X+8.601 Y-12.894 Z-2.552 B17.313 C148.049 +G01 X+8.728 Y-12.686 Z-2.553 B17.317 C147.017 +G01 X+8.975 Y-12.325 Z-2.552 B17.313 C145.146 +G01 X+9.12 Y-12.115 Z-2.553 B17.317 C144.075 +G01 X+9.378 Y-11.777 Z-2.552 B17.313 C142.242 +G01 X+9.54 Y-11.566 Z-2.553 B17.317 C141.121 +G01 X+9.809 Y-11.249 Z-2.552 B17.313 C139.339 +G01 X+9.988 Y-11.038 Z-2.553 B17.317 C138.167 +G01 X+10.265 Y-10.744 Z-2.552 B17.312 C136.436 +G01 X+10.463 Y-10.535 Z-2.553 B17.317 C135.213 +G01 X+10.746 Y-10.263 Z-2.552 B17.312 C133.532 +G01 X+10.962 Y-10.057 Z-2.553 B17.317 C132.26 +G01 X+11.251 Y-9.807 Z-2.552 B17.312 C130.629 +G01 X+11.486 Y-9.604 Z-2.553 B17.318 C129.306 +G01 X+11.779 Y-9.377 Z-2.552 B17.312 C127.726 +G01 X+12.047 Y-9.17 Z-2.553 B17.317 C126.281 +G01 X+12.323 Y-8.977 Z-2.552 B17.312 C124.843 +G01 X+12.6 Y-8.784 Z-2.553 B17.318 C123.405 +G01 X+12.854 Y-8.626 Z-2.552 B17.312 C122.136 +G01 X+13.107 Y-8.468 B17.314 C120.868 +G01 X+13.187 Y-8.418 Z-2.553 B17.318 C120.454 +G01 X+13.444 Y-8.276 Z-2.552 B17.312 C119.21 +G01 X+13.7 Y-8.134 B17.314 C117.965 +G01 X+13.793 Y-8.083 Z-2.553 B17.318 C117.503 +G01 X+14.051 Y-7.956 Z-2.552 B17.312 C116.283 +G01 X+14.309 Y-7.83 B17.314 C115.062 +G01 X+14.414 Y-7.779 Z-2.553 B17.318 C114.553 +G01 X+14.674 Y-7.668 Z-2.552 B17.312 C113.356 +G01 X+14.933 Y-7.558 B17.314 C112.159 +G01 X+15.051 Y-7.508 Z-2.553 B17.318 C111.602 +G01 X+15.31 Y-7.412 Z-2.552 B17.312 C110.429 +G01 X+15.57 Y-7.317 B17.313 C109.255 +G01 X+15.701 Y-7.269 Z-2.553 B17.318 C108.652 +G01 X+15.959 Y-7.189 Z-2.552 B17.312 C107.502 +G01 X+16.218 Y-7.109 B17.313 C106.352 +G01 X+16.362 Y-7.065 Z-2.553 B17.318 C105.701 +G01 X+16.619 Y-7 Z-2.552 B17.312 C104.575 +G01 X+16.876 Y-6.935 B17.313 C103.449 +G01 X+17.032 Y-6.895 Z-2.553 B17.318 C102.751 +G01 X+17.287 Y-6.844 Z-2.552 B17.312 C101.648 +G01 X+17.541 Y-6.793 B17.313 C100.546 +G01 X+17.711 Y-6.759 Z-2.553 B17.318 C99.8 +G01 X+17.962 Y-6.722 Z-2.552 B17.312 C98.722 +G01 X+18.213 Y-6.686 B17.313 C97.643 +G01 X+18.396 Y-6.659 Z-2.553 B17.318 C96.85 +G01 X+18.643 Y-6.636 Z-2.552 B17.313 C95.795 +G01 X+18.89 Y-6.613 B17.312 C94.739 +G01 X+19.084 Y-6.594 Z-2.553 B17.318 C93.899 +G01 X+19.327 Y-6.584 Z-2.552 B17.313 C92.868 +G01 X+19.57 Y-6.574 B17.312 C91.836 +G01 X+19.776 Y-6.565 Z-2.553 B17.318 C90.949 +G01 X+20.013 Y-6.567 Z-2.552 B17.313 C89.941 +G01 X+20.25 Y-6.569 B17.312 C88.933 +G01 X+20.468 Y-6.571 Z-2.553 B17.318 C87.998 +G01 X+20.699 Y-6.585 Z-2.552 B17.313 C87.014 +G01 X+20.93 Y-6.599 B17.312 C86.03 +G01 X+21.158 Y-6.613 Z-2.553 B17.318 C85.047 +G01 X+21.608 Y-6.664 Z-2.552 B17.312 C83.126 +G01 X+21.846 Y-6.69 Z-2.553 B17.318 C82.097 +G01 X+22.281 Y-6.762 Z-2.552 B17.312 C80.223 +G01 X+22.529 Y-6.803 Z-2.553 B17.318 C79.146 +G01 X+22.949 Y-6.895 Z-2.552 B17.312 C77.32 +G01 X+23.205 Y-6.951 Z-2.553 B17.318 C76.196 +G01 X+23.609 Y-7.061 Z-2.552 B17.312 C74.417 +G01 X+23.872 Y-7.133 Z-2.553 B17.318 C73.245 +G01 X+24.201 Y-7.241 Z-2.552 B17.312 C71.77 +G01 X+24.529 Y-7.349 Z-2.553 B17.318 C70.295 +G01 X+24.757 Y-7.437 Z-2.552 B17.313 C69.253 +G01 X+24.984 Y-7.525 C68.211 +G01 X+25.175 Y-7.599 Z-2.553 B17.317 C67.344 +G01 X+25.392 Y-7.697 Z-2.552 B17.313 C66.326 +G01 X+25.609 Y-7.794 C65.308 +G01 X+25.806 Y-7.882 Z-2.553 B17.317 C64.393 +G01 X+26.013 Y-7.988 Z-2.552 B17.313 C63.399 +G01 X+26.22 Y-8.094 C62.404 +G01 X+26.422 Y-8.197 Z-2.553 B17.317 C61.352 +G01 X+26.815 Y-8.424 Z-2.552 B17.313 C59.501 +G01 X+27.021 Y-8.543 Z-2.553 B17.317 C58.493 +G01 X+27.393 Y-8.784 Z-2.552 B17.313 C56.597 +G01 X+27.602 Y-8.92 Z-2.553 B17.317 C55.546 +G01 X+27.951 Y-9.173 Z-2.552 B17.313 C53.694 +G01 X+28.162 Y-9.326 Z-2.553 B17.317 C52.598 +G01 X+28.49 Y-9.59 Z-2.552 B17.313 C50.791 +G01 X+28.701 Y-9.76 Z-2.553 B17.317 C49.644 +G01 X+29.006 Y-10.033 Z-2.552 B17.313 C47.887 +G01 X+29.216 Y-10.222 Z-2.553 B17.317 C46.69 +G01 X+29.499 Y-10.502 Z-2.552 B17.312 C44.984 +G01 X+29.707 Y-10.709 Z-2.553 B17.317 C43.737 +G01 X+29.968 Y-10.996 Z-2.552 B17.312 C42.081 +G01 X+30.173 Y-11.221 Z-2.553 B17.317 C40.783 +G01 X+30.411 Y-11.512 Z-2.552 B17.312 C39.178 +G01 X+30.611 Y-11.757 Z-2.553 B17.318 C37.83 +G01 X+30.828 Y-12.05 Z-2.552 B17.312 C36.274 +G01 X+31.028 Y-12.324 Z-2.553 B17.317 C34.83 +G01 X+31.191 Y-12.57 Z-2.552 B17.312 C33.575 +G01 X+31.353 Y-12.817 B17.315 C32.32 +G01 X+31.403 Y-12.892 Z-2.553 B17.318 C31.927 +G01 X+31.553 Y-13.146 Z-2.552 B17.312 C30.672 +G01 X+31.703 Y-13.401 B17.314 C29.417 +G01 X+31.753 Y-13.488 Z-2.553 B17.318 C28.979 +G01 X+31.888 Y-13.745 Z-2.552 B17.312 C27.746 +G01 X+32.022 Y-14.003 B17.314 C26.513 +G01 X+32.073 Y-14.102 Z-2.553 B17.318 C26.028 +G01 X+32.192 Y-14.36 Z-2.552 B17.312 C24.819 +G01 X+32.31 Y-14.619 B17.314 C23.61 +G01 X+32.361 Y-14.731 Z-2.553 B17.318 C23.078 +G01 X+32.464 Y-14.99 Z-2.552 B17.312 C21.892 +G01 X+32.566 Y-15.25 B17.314 C20.707 +G01 X+32.616 Y-15.374 Z-2.553 B17.318 C20.127 +G01 X+32.703 Y-15.633 Z-2.552 B17.312 C18.966 +G01 X+32.791 Y-15.892 B17.313 C17.804 +G01 X+32.837 Y-16.03 Z-2.553 B17.318 C17.177 +G01 X+32.91 Y-16.288 Z-2.552 B17.312 C16.039 +G01 X+32.982 Y-16.546 B17.313 C14.901 +G01 X+33.024 Y-16.696 Z-2.553 B17.318 C14.226 +G01 X+33.082 Y-16.952 Z-2.552 B17.312 C13.112 +G01 X+33.14 Y-17.208 B17.313 C11.997 +G01 X+33.177 Y-17.371 Z-2.553 B17.318 C11.275 +G01 X+33.221 Y-17.624 Z-2.552 B17.312 C10.185 +G01 X+33.265 Y-17.877 B17.313 C9.094 +G01 X+33.295 Y-18.052 Z-2.553 B17.318 C8.325 +G01 X+33.325 Y-18.302 Z-2.552 B17.313 C7.258 +G01 X+33.355 Y-18.551 C6.191 +G01 X+33.378 Y-18.739 Z-2.553 B17.318 C5.374 +G01 X+33.395 Y-18.985 Z-2.552 B17.313 C4.331 +G01 X+33.411 Y-19.23 B17.312 C3.288 +G01 X+33.425 Y-19.43 Z-2.553 B17.318 C2.424 +G01 X+33.429 Y-19.67 Z-2.552 B17.313 C1.404 +G01 X+33.433 Y-19.91 B17.312 C0.384 +G01 X+33.436 Y-20.122 Z-2.553 B17.318 C359.473 +G01 X+33.428 Y-20.356 Z-2.552 B17.313 C358.477 +G01 X+33.42 Y-20.59 B17.312 C357.481 +G01 X+33.412 Y-20.813 Z-2.553 B17.318 C356.523 +G01 X+33.393 Y-21.041 Z-2.552 B17.313 C355.55 +G01 X+33.373 Y-21.269 B17.312 C354.578 +G01 X+33.353 Y-21.503 Z-2.553 B17.318 C353.572 +G01 X+33.291 Y-21.945 Z-2.552 B17.312 C351.675 +G01 X+33.258 Y-22.188 Z-2.553 B17.318 C350.622 +G01 X+33.176 Y-22.616 Z-2.552 B17.312 C348.772 +G01 X+33.127 Y-22.868 Z-2.553 B17.318 C347.671 +G01 X+33.026 Y-23.28 Z-2.552 B17.312 C345.868 +G01 X+32.962 Y-23.54 Z-2.553 B17.318 C344.721 +G01 X+32.843 Y-23.935 Z-2.552 B17.311 C342.965 +G01 X+32.763 Y-24.202 Z-2.553 B17.318 C341.77 +G01 X+32.647 Y-24.528 Z-2.552 B17.312 C340.295 +G01 X+32.53 Y-24.854 Z-2.553 B17.317 C338.819 +G01 X+32.437 Y-25.076 Z-2.552 B17.313 C337.789 +G01 X+32.344 Y-25.298 C336.759 +G01 X+32.263 Y-25.492 Z-2.553 B17.317 C335.869 +G01 X+32.162 Y-25.704 Z-2.552 B17.313 C334.863 +G01 X+32.06 Y-25.917 C333.856 +G01 X+31.964 Y-26.116 Z-2.553 B17.317 C332.918 +G01 X+31.855 Y-26.318 Z-2.552 B17.313 C331.936 +G01 X+31.745 Y-26.52 C330.953 +G01 X+31.633 Y-26.724 Z-2.553 B17.317 C329.968 +G01 X+31.399 Y-27.106 Z-2.552 B17.313 C328.049 +G01 X+31.272 Y-27.314 Z-2.553 B17.317 C327.017 +G01 X+31.025 Y-27.675 Z-2.552 B17.313 C325.146 +G01 X+30.88 Y-27.884 Z-2.553 B17.317 C324.075 +G01 X+30.622 Y-28.223 Z-2.552 B17.313 C322.242 +G01 X+30.46 Y-28.434 Z-2.553 B17.317 C321.121 +G01 X+30.191 Y-28.75 Z-2.552 B17.313 C319.339 +G01 X+30.012 Y-28.961 Z-2.553 B17.317 C318.167 +G01 X+29.735 Y-29.255 Z-2.552 B17.312 C316.436 +G01 X+29.537 Y-29.465 Z-2.553 B17.317 C315.213 +G01 X+29.254 Y-29.737 Z-2.552 B17.312 C313.532 +G01 X+29.038 Y-29.943 Z-2.553 B17.317 C312.26 +G01 X+28.749 Y-30.193 Z-2.552 B17.312 C310.629 +G01 X+28.514 Y-30.395 Z-2.553 B17.318 C309.306 +G01 X+28.221 Y-30.623 Z-2.552 B17.312 C307.726 +G01 X+27.953 Y-30.83 Z-2.553 B17.317 C306.281 +G01 X+27.677 Y-31.023 Z-2.552 B17.312 C304.843 +G01 X+27.4 Y-31.216 Z-2.553 B17.318 C303.405 +G01 X+27.146 Y-31.374 Z-2.552 B17.312 C302.136 +G01 X+26.893 Y-31.532 B17.314 C300.868 +G01 X+26.813 Y-31.582 Z-2.553 B17.318 C300.454 +G01 X+26.556 Y-31.724 Z-2.552 B17.312 C299.21 +G01 X+26.3 Y-31.866 B17.314 C297.965 +G01 X+26.207 Y-31.917 Z-2.553 B17.318 C297.503 +G01 X+25.949 Y-32.044 Z-2.552 B17.312 C296.283 +G01 X+25.691 Y-32.169 B17.314 C295.062 +G01 X+25.586 Y-32.221 Z-2.553 B17.318 C294.553 +G01 X+25.326 Y-32.332 Z-2.552 B17.312 C293.356 +G01 X+25.067 Y-32.442 B17.314 C292.159 +G01 X+24.949 Y-32.492 Z-2.553 B17.318 C291.602 +G01 X+24.69 Y-32.588 Z-2.552 B17.312 C290.429 +G01 X+24.43 Y-32.682 B17.313 C289.255 +G01 X+24.299 Y-32.73 Z-2.553 B17.318 C288.652 +G01 X+24.041 Y-32.811 Z-2.552 B17.312 C287.502 +G01 X+23.782 Y-32.89 B17.313 C286.352 +G01 X+23.638 Y-32.935 Z-2.553 B17.318 C285.701 +G01 X+23.381 Y-33 Z-2.552 B17.312 C284.575 +G01 X+23.124 Y-33.065 B17.313 C283.449 +G01 X+22.968 Y-33.105 Z-2.553 B17.318 C282.751 +G01 X+22.713 Y-33.156 Z-2.552 B17.312 C281.648 +G01 X+22.459 Y-33.207 B17.313 C280.546 +G01 X+22.289 Y-33.24 Z-2.553 B17.318 C279.8 +G01 X+22.038 Y-33.277 Z-2.552 B17.312 C278.722 +G01 X+21.787 Y-33.314 B17.313 C277.643 +G01 X+21.604 Y-33.341 Z-2.553 B17.318 C276.85 +G01 X+21.357 Y-33.364 Z-2.552 B17.313 C275.795 +G01 X+21.11 Y-33.387 B17.312 C274.739 +G01 X+20.916 Y-33.406 Z-2.553 B17.318 C273.899 +G01 X+20.673 Y-33.416 Z-2.552 B17.313 C272.868 +G01 X+20.43 Y-33.426 B17.312 C271.836 +G01 X+20.224 Y-33.435 Z-2.553 B17.318 C270.949 +G01 X+19.987 Y-33.433 Z-2.552 B17.313 C269.941 +G01 X+19.75 Y-33.431 B17.312 C268.933 +G01 X+19.532 Y-33.429 Z-2.553 B17.318 C267.998 +G01 X+19.301 Y-33.415 Z-2.552 B17.313 C267.014 +G01 X+19.07 Y-33.401 B17.312 C266.03 +G01 X+18.842 Y-33.387 Z-2.553 B17.318 C265.047 +G01 X+18.392 Y-33.336 Z-2.552 B17.312 C263.126 +G01 X+18.154 Y-33.309 Z-2.553 B17.318 C262.097 +G01 X+17.719 Y-33.238 Z-2.552 B17.312 C260.223 +G01 X+17.471 Y-33.197 Z-2.553 B17.318 C259.146 +G01 X+17.051 Y-33.105 Z-2.552 B17.312 C257.32 +G01 X+16.795 Y-33.049 Z-2.553 B17.318 C256.196 +G01 X+16.391 Y-32.939 Z-2.552 B17.312 C254.417 +G01 X+16.128 Y-32.867 Z-2.553 B17.318 C253.245 +G01 X+15.799 Y-32.759 Z-2.552 B17.312 C251.77 +G01 X+15.471 Y-32.65 Z-2.553 B17.318 C250.295 +G01 X+15.243 Y-32.563 Z-2.552 B17.313 C249.253 +G01 X+15.016 Y-32.474 C248.211 +G01 X+14.825 Y-32.4 Z-2.553 B17.317 C247.344 +G01 X+14.509 Y-32.259 Z-2.552 B17.312 C245.869 +G01 X+14.194 Y-32.118 Z-2.553 B17.317 C244.394 +G01 X+13.987 Y-32.012 Z-2.552 B17.313 C243.399 +G01 X+13.78 Y-31.906 C242.404 +G01 X+13.556 Y-31.791 Z-2.553 B17.318 C241.352 +G01 X+13.267 Y-31.624 Z-2.552 B17.312 C239.922 +G01 X+12.978 Y-31.456 Z-2.553 B17.317 C238.491 +G01 X+12.607 Y-31.215 Z-2.552 B17.313 C236.598 +G01 X+12.398 Y-31.08 Z-2.553 B17.317 C235.546 +G01 X+12.049 Y-30.826 Z-2.552 B17.313 C233.694 +G01 X+11.838 Y-30.674 Z-2.553 B17.317 C232.598 +G01 X+11.51 Y-30.41 Z-2.552 B17.313 C230.791 +G01 X+11.299 Y-30.239 Z-2.553 B17.317 C229.644 +G01 X+11.041 Y-30.009 Z-2.552 B17.312 C228.167 +G01 X+10.784 Y-29.778 Z-2.553 B17.317 C226.69 +G01 X+10.521 Y-29.518 Z-2.552 B17.312 C225.107 +G01 Y-29.384 Z-2.522 B17.187 C224.698 +G01 X+10.362 Y-29.226 Z-2.524 B17.191 C223.745 +G01 X+10.077 Y-28.914 Z-2.522 B17.187 C221.918 +G01 X+9.9 Y-28.718 Z-2.524 B17.192 C220.792 +G01 X+9.639 Y-28.4 Z-2.522 B17.187 C219.015 +G01 X+9.464 Y-28.187 Z-2.524 B17.192 C217.838 +G01 X+9.227 Y-27.864 Z-2.522 B17.187 C216.111 +G01 X+9.057 Y-27.633 Z-2.524 B17.192 C214.885 +G01 X+8.842 Y-27.308 Z-2.522 B17.187 C213.208 +G01 X+8.678 Y-27.06 Z-2.524 B17.192 C211.932 +G01 X+8.486 Y-26.734 Z-2.522 B17.187 C210.305 +G01 X+8.33 Y-26.468 Z-2.524 B17.192 C208.978 +G01 X+8.196 Y-26.211 Z-2.522 B17.186 C207.746 +G01 X+8.063 Y-25.955 Z-2.523 B17.188 C206.513 +G01 X+8.005 Y-25.843 B17.192 C205.957 +G01 X+7.891 Y-25.593 Z-2.522 B17.186 C204.784 +G01 X+7.777 Y-25.343 Z-2.523 B17.188 C203.61 +G01 X+7.727 Y-25.233 Z-2.524 B17.192 C203.078 +G01 X+7.624 Y-24.975 Z-2.522 B17.186 C201.892 +G01 X+7.522 Y-24.717 Z-2.523 B17.188 C200.707 +G01 X+7.474 Y-24.595 Z-2.524 B17.192 C200.128 +G01 X+7.386 Y-24.337 Z-2.522 B17.186 C198.966 +G01 X+7.299 Y-24.079 Z-2.523 B17.187 C197.804 +G01 X+7.254 Y-23.944 Z-2.524 B17.192 C197.177 +G01 X+7.181 Y-23.687 Z-2.522 B17.186 C196.039 +G01 X+7.109 Y-23.43 Z-2.523 B17.187 C194.901 +G01 X+7.067 Y-23.282 Z-2.524 B17.192 C194.227 +G01 X+7.01 Y-23.028 Z-2.522 B17.187 C193.112 +G01 X+6.952 Y-22.773 Z-2.523 C191.997 +G01 X+6.916 Y-22.612 Z-2.524 B17.192 C191.277 +G01 X+6.872 Y-22.36 Z-2.522 B17.187 C190.186 +G01 X+6.829 Y-22.108 C189.094 +G01 X+6.799 Y-21.935 Z-2.524 B17.192 C188.327 +G01 X+6.768 Y-21.687 Z-2.522 B17.187 C187.259 +G01 X+6.739 Y-21.438 C186.191 +G01 X+6.716 Y-21.253 Z-2.524 B17.192 C185.376 +G01 X+6.7 Y-21.009 Z-2.522 B17.187 C184.332 +G01 X+6.683 Y-20.765 B17.186 C183.288 +G01 X+6.67 Y-20.568 Z-2.524 B17.192 C182.426 +G01 X+6.665 Y-20.328 Z-2.522 B17.187 C181.405 +G01 X+6.662 Y-20.089 B17.186 C180.384 +G01 X+6.658 Y-19.881 Z-2.524 B17.192 C179.476 +G01 X+6.666 Y-19.647 Z-2.522 B17.187 C178.479 +G01 X+6.674 Y-19.414 B17.186 C177.481 +G01 X+6.682 Y-19.194 Z-2.524 B17.192 C176.526 +G01 X+6.701 Y-18.967 Z-2.522 B17.187 C175.552 +G01 X+6.721 Y-18.74 B17.186 C174.578 +G01 X+6.741 Y-18.509 Z-2.524 B17.192 C173.576 +G01 X+6.802 Y-18.069 Z-2.522 B17.186 C171.675 +G01 X+6.835 Y-17.829 Z-2.524 B17.192 C170.625 +G01 X+6.917 Y-17.403 Z-2.522 B17.186 C168.772 +G01 X+6.965 Y-17.154 Z-2.524 B17.192 C167.675 +G01 X+7.065 Y-16.743 Z-2.522 B17.186 C165.868 +G01 X+7.128 Y-16.487 Z-2.524 B17.192 C164.725 +G01 X+7.247 Y-16.092 Z-2.522 B17.186 C162.965 +G01 X+7.326 Y-15.829 Z-2.524 B17.192 C161.775 +G01 X+7.461 Y-15.452 Z-2.522 B17.186 C160.062 +G01 X+7.558 Y-15.182 Z-2.524 B17.191 C158.825 +G01 X+7.708 Y-14.822 Z-2.522 B17.186 C157.159 +G01 X+7.822 Y-14.548 Z-2.524 B17.191 C155.874 +G01 X+7.986 Y-14.206 Z-2.522 B17.185 C154.256 +G01 X+8.119 Y-13.928 Z-2.524 B17.191 C152.924 +G01 X+8.295 Y-13.605 Z-2.522 B17.185 C151.352 +G01 X+8.447 Y-13.324 Z-2.524 B17.191 C149.974 +G01 X+8.627 Y-13.031 Z-2.522 B17.186 C148.499 +G01 X+8.806 Y-12.739 Z-2.524 B17.191 C147.023 +G01 X+8.94 Y-12.544 Z-2.522 B17.187 C146.003 +G01 X+9.074 Y-12.349 C144.983 +G01 X+9.195 Y-12.172 Z-2.524 B17.191 C144.082 +G01 X+9.335 Y-11.989 Z-2.522 B17.187 C143.081 +G01 X+9.475 Y-11.805 C142.08 +G01 X+9.612 Y-11.626 Z-2.524 B17.191 C141.128 +G01 X+9.758 Y-11.454 Z-2.522 B17.187 C140.152 +G01 X+9.904 Y-11.283 C139.176 +G01 X+10.057 Y-11.103 Z-2.524 B17.191 C138.175 +G01 X+10.358 Y-10.783 Z-2.522 B17.187 C136.273 +G01 X+10.528 Y-10.602 Z-2.524 B17.191 C135.222 +G01 X+10.838 Y-10.306 Z-2.522 B17.187 C133.37 +G01 X+11.025 Y-10.127 Z-2.524 B17.191 C132.268 +G01 X+11.341 Y-9.855 Z-2.522 B17.187 C130.466 +G01 X+11.545 Y-9.678 Z-2.524 B17.192 C129.315 +G01 X+11.866 Y-9.429 Z-2.522 B17.187 C127.563 +G01 X+12.087 Y-9.257 Z-2.524 B17.192 C126.362 +G01 X+12.411 Y-9.031 Z-2.522 B17.187 C124.66 +G01 X+12.651 Y-8.864 Z-2.524 B17.192 C123.408 +G01 X+12.977 Y-8.66 Z-2.522 B17.187 C121.756 +G01 X+13.234 Y-8.5 Z-2.524 B17.192 C120.455 +G01 X+13.489 Y-8.359 Z-2.522 B17.186 C119.21 +G01 X+13.744 Y-8.217 Z-2.523 B17.188 C117.965 +G01 X+13.855 Y-8.157 B17.192 C117.408 +G01 X+14.102 Y-8.036 Z-2.522 B17.186 C116.235 +G01 X+14.349 Y-7.916 Z-2.523 B17.188 C115.062 +G01 X+14.463 Y-7.861 B17.192 C114.505 +G01 X+14.715 Y-7.753 Z-2.522 B17.186 C113.332 +G01 X+14.969 Y-7.645 Z-2.523 B17.188 C112.159 +G01 X+15.084 Y-7.596 Z-2.524 B17.192 C111.603 +G01 X+15.342 Y-7.501 Z-2.522 B17.186 C110.429 +G01 X+15.601 Y-7.406 Z-2.523 B17.187 C109.255 +G01 X+15.729 Y-7.359 Z-2.524 B17.192 C108.652 +G01 X+15.987 Y-7.279 Z-2.522 B17.187 C107.502 +G01 X+16.244 Y-7.2 Z-2.523 C106.352 +G01 X+16.386 Y-7.156 Z-2.524 B17.192 C105.702 +G01 X+16.642 Y-7.091 Z-2.522 B17.187 C104.576 +G01 X+16.898 Y-7.026 Z-2.523 C103.449 +G01 X+17.052 Y-6.987 Z-2.524 B17.192 C102.752 +G01 X+17.305 Y-6.936 Z-2.522 B17.187 C101.649 +G01 X+17.559 Y-6.886 C100.546 +G01 X+17.725 Y-6.853 Z-2.524 B17.192 C99.802 +G01 X+17.976 Y-6.816 Z-2.522 B17.187 C98.722 +G01 X+18.226 Y-6.779 C97.643 +G01 X+18.405 Y-6.753 Z-2.524 B17.192 C96.851 +G01 X+18.652 Y-6.73 Z-2.522 B17.187 C95.795 +G01 X+18.898 Y-6.707 C94.739 +G01 X+19.089 Y-6.688 Z-2.524 B17.192 C93.901 +G01 X+19.331 Y-6.678 Z-2.522 B17.187 C92.869 +G01 X+19.573 Y-6.668 B17.186 C91.836 +G01 X+19.776 Y-6.659 Z-2.524 B17.192 C90.951 +G01 X+20.012 Y-6.661 Z-2.522 B17.187 C89.942 +G01 X+20.248 Y-6.663 B17.186 C88.933 +G01 X+20.463 Y-6.665 Z-2.524 B17.192 C88.001 +G01 X+20.693 Y-6.679 Z-2.522 B17.187 C87.015 +G01 X+20.924 Y-6.693 B17.186 C86.03 +G01 X+21.149 Y-6.707 Z-2.524 B17.192 C85.051 +G01 X+21.596 Y-6.757 Z-2.522 B17.186 C83.126 +G01 X+21.831 Y-6.784 Z-2.524 B17.192 C82.1 +G01 X+22.265 Y-6.855 Z-2.522 B17.186 C80.223 +G01 X+22.509 Y-6.895 Z-2.524 B17.192 C79.15 +G01 X+22.928 Y-6.987 Z-2.522 B17.186 C77.32 +G01 X+23.181 Y-7.042 Z-2.524 B17.192 C76.2 +G01 X+23.583 Y-7.152 Z-2.522 B17.186 C74.417 +G01 X+23.843 Y-7.223 Z-2.524 B17.192 C73.25 +G01 X+24.229 Y-7.35 Z-2.522 B17.186 C71.513 +G01 X+24.496 Y-7.438 Z-2.524 B17.192 C70.3 +G01 X+24.865 Y-7.58 Z-2.522 B17.186 C68.61 +G01 X+25.137 Y-7.686 Z-2.524 B17.191 C67.349 +G01 X+25.487 Y-7.843 Z-2.522 B17.185 C65.707 +G01 X+25.764 Y-7.967 Z-2.524 B17.191 C64.399 +G01 X+26.096 Y-8.136 Z-2.522 B17.185 C62.804 +G01 X+26.376 Y-8.279 Z-2.524 B17.191 C61.352 +G01 X+26.673 Y-8.451 Z-2.522 B17.186 C59.925 +G01 X+26.971 Y-8.623 Z-2.524 B17.191 C58.499 +G01 X+27.171 Y-8.753 Z-2.522 B17.187 C57.467 +G01 X+27.372 Y-8.883 C56.435 +G01 X+27.548 Y-8.998 Z-2.523 B17.191 C55.546 +G01 X+27.737 Y-9.134 Z-2.522 B17.187 C54.539 +G01 X+27.925 Y-9.271 C53.531 +G01 X+28.104 Y-9.4 Z-2.524 B17.191 C52.605 +G01 X+28.281 Y-9.543 Z-2.522 B17.187 C51.617 +G01 X+28.459 Y-9.686 C50.628 +G01 X+28.638 Y-9.831 Z-2.524 B17.191 C49.652 +G01 X+28.97 Y-10.128 Z-2.522 B17.187 C47.725 +G01 X+29.15 Y-10.29 Z-2.524 B17.191 C46.698 +G01 X+29.458 Y-10.595 Z-2.522 B17.187 C44.821 +G01 X+29.638 Y-10.773 Z-2.524 B17.191 C43.745 +G01 X+29.923 Y-11.086 Z-2.522 B17.187 C41.918 +G01 X+30.1 Y-11.282 Z-2.524 B17.192 C40.792 +G01 X+30.361 Y-11.6 Z-2.522 B17.187 C39.015 +G01 X+30.536 Y-11.813 Z-2.524 B17.192 C37.838 +G01 X+30.773 Y-12.136 Z-2.522 B17.187 C36.111 +G01 X+30.943 Y-12.367 Z-2.524 B17.192 C34.885 +G01 X+31.158 Y-12.692 Z-2.522 B17.187 C33.208 +G01 X+31.322 Y-12.94 Z-2.524 B17.192 C31.932 +G01 X+31.514 Y-13.266 Z-2.522 B17.187 C30.305 +G01 X+31.67 Y-13.532 Z-2.524 B17.192 C28.978 +G01 X+31.804 Y-13.788 Z-2.522 B17.186 C27.746 +G01 X+31.937 Y-14.045 Z-2.523 B17.188 C26.513 +G01 X+31.995 Y-14.157 B17.192 C25.957 +G01 X+32.109 Y-14.407 Z-2.522 B17.186 C24.784 +G01 X+32.223 Y-14.657 Z-2.523 B17.188 C23.61 +G01 X+32.273 Y-14.766 Z-2.524 B17.192 C23.078 +G01 X+32.376 Y-15.025 Z-2.522 B17.186 C21.893 +G01 X+32.478 Y-15.283 Z-2.523 B17.188 C20.707 +G01 X+32.526 Y-15.405 Z-2.524 B17.192 C20.128 +G01 X+32.614 Y-15.663 Z-2.522 B17.186 C18.966 +G01 X+32.701 Y-15.921 Z-2.523 B17.187 C17.804 +G01 X+32.746 Y-16.056 Z-2.524 B17.192 C17.177 +G01 X+32.819 Y-16.313 Z-2.522 B17.186 C16.039 +G01 X+32.891 Y-16.57 Z-2.523 B17.187 C14.901 +G01 X+32.933 Y-16.718 Z-2.524 B17.192 C14.227 +G01 X+32.99 Y-16.972 Z-2.522 B17.187 C13.112 +G01 X+33.048 Y-17.227 Z-2.523 C11.997 +G01 X+33.084 Y-17.388 Z-2.524 B17.192 C11.277 +G01 X+33.128 Y-17.64 Z-2.522 B17.187 C10.186 +G01 X+33.172 Y-17.892 C9.094 +G01 X+33.201 Y-18.065 Z-2.524 B17.192 C8.327 +G01 X+33.232 Y-18.313 Z-2.522 B17.187 C7.259 +G01 X+33.261 Y-18.561 C6.191 +G01 X+33.284 Y-18.747 Z-2.524 B17.192 C5.376 +G01 X+33.3 Y-18.991 Z-2.522 B17.187 C4.332 +G01 X+33.317 Y-19.235 B17.186 C3.288 +G01 X+33.33 Y-19.432 Z-2.524 B17.192 C2.426 +G01 X+33.335 Y-19.671 Z-2.522 B17.187 C1.405 +G01 X+33.339 Y-19.91 B17.186 C0.384 +G01 X+33.342 Y-20.119 Z-2.524 B17.192 C359.476 +G01 X+33.334 Y-20.353 Z-2.522 B17.187 C358.479 +G01 X+33.326 Y-20.586 B17.186 C357.481 +G01 X+33.318 Y-20.806 Z-2.524 B17.192 C356.526 +G01 X+33.299 Y-21.033 Z-2.522 B17.187 C355.552 +G01 X+33.279 Y-21.26 B17.186 C354.578 +G01 X+33.259 Y-21.49 Z-2.524 B17.192 C353.576 +G01 X+33.198 Y-21.931 Z-2.522 B17.186 C351.675 +G01 X+33.165 Y-22.171 Z-2.524 B17.192 C350.625 +G01 X+33.083 Y-22.597 Z-2.522 B17.186 C348.772 +G01 X+33.036 Y-22.846 Z-2.524 B17.192 C347.675 +G01 X+32.935 Y-23.257 Z-2.522 B17.186 C345.868 +G01 X+32.872 Y-23.513 Z-2.524 B17.192 C344.725 +G01 X+32.753 Y-23.907 Z-2.522 B17.186 C342.965 +G01 X+32.674 Y-24.171 Z-2.524 B17.192 C341.775 +G01 X+32.539 Y-24.548 Z-2.522 B17.186 C340.062 +G01 X+32.442 Y-24.818 Z-2.524 B17.191 C338.825 +G01 X+32.292 Y-25.178 Z-2.522 B17.186 C337.159 +G01 X+32.178 Y-25.452 Z-2.524 B17.191 C335.874 +G01 X+32.014 Y-25.794 Z-2.522 B17.185 C334.256 +G01 X+31.881 Y-26.072 Z-2.524 B17.191 C332.924 +G01 X+31.705 Y-26.395 Z-2.522 B17.185 C331.352 +G01 X+31.553 Y-26.675 Z-2.524 B17.191 C329.974 +G01 X+31.373 Y-26.968 Z-2.522 B17.186 C328.499 +G01 X+31.194 Y-27.261 Z-2.524 B17.191 C327.023 +G01 X+31.06 Y-27.456 Z-2.522 B17.187 C326.003 +G01 X+30.926 Y-27.651 C324.983 +G01 X+30.805 Y-27.828 Z-2.524 B17.191 C324.082 +G01 X+30.665 Y-28.011 Z-2.522 B17.187 C323.081 +G01 X+30.525 Y-28.194 C322.08 +G01 X+30.388 Y-28.374 Z-2.524 B17.191 C321.128 +G01 X+30.242 Y-28.545 Z-2.522 B17.187 C320.152 +G01 X+30.096 Y-28.717 C319.176 +G01 X+29.943 Y-28.897 Z-2.524 B17.191 C318.175 +G01 X+29.642 Y-29.217 Z-2.522 B17.187 C316.273 +G01 X+29.472 Y-29.397 Z-2.524 B17.191 C315.222 +G01 X+29.162 Y-29.694 Z-2.522 B17.187 C313.37 +G01 X+28.975 Y-29.872 Z-2.524 B17.191 C312.268 +G01 X+28.66 Y-30.145 Z-2.522 B17.187 C310.466 +G01 X+28.455 Y-30.321 Z-2.524 B17.192 C309.315 +G01 X+28.134 Y-30.571 Z-2.522 B17.187 C307.563 +G01 X+27.913 Y-30.743 Z-2.524 B17.192 C306.362 +G01 X+27.589 Y-30.969 Z-2.522 B17.187 C304.66 +G01 X+27.349 Y-31.136 Z-2.524 B17.192 C303.408 +G01 X+27.023 Y-31.339 Z-2.522 B17.187 C301.756 +G01 X+26.766 Y-31.5 Z-2.524 B17.192 C300.455 +G01 X+26.511 Y-31.641 Z-2.522 B17.186 C299.21 +G01 X+26.256 Y-31.782 Z-2.523 B17.188 C297.965 +G01 X+26.145 Y-31.843 B17.192 C297.408 +G01 X+25.898 Y-31.964 Z-2.522 B17.186 C296.235 +G01 X+25.651 Y-32.084 Z-2.523 B17.188 C295.062 +G01 X+25.537 Y-32.139 B17.192 C294.505 +G01 X+25.285 Y-32.247 Z-2.522 B17.186 C293.332 +G01 X+25.031 Y-32.355 Z-2.523 B17.188 C292.159 +G01 X+24.916 Y-32.404 Z-2.524 B17.192 C291.602 +G01 X+24.658 Y-32.499 Z-2.522 B17.186 C290.429 +G01 X+24.399 Y-32.593 Z-2.523 B17.187 C289.255 +G01 X+24.271 Y-32.641 Z-2.524 B17.192 C288.652 +G01 X+24.013 Y-32.72 Z-2.522 B17.187 C287.502 +G01 X+23.756 Y-32.8 Z-2.523 C286.352 +G01 X+23.614 Y-32.844 Z-2.524 B17.192 C285.702 +G01 X+23.358 Y-32.909 Z-2.522 B17.187 C284.576 +G01 X+23.102 Y-32.974 Z-2.523 C283.449 +G01 X+22.948 Y-33.013 Z-2.524 B17.192 C282.752 +G01 X+22.695 Y-33.063 Z-2.522 B17.187 C281.649 +G01 X+22.441 Y-33.114 C280.546 +G01 X+22.275 Y-33.147 Z-2.524 B17.192 C279.802 +G01 X+22.024 Y-33.184 Z-2.522 B17.187 C278.722 +G01 X+21.774 Y-33.221 C277.643 +G01 X+21.595 Y-33.247 Z-2.524 B17.192 C276.851 +G01 X+21.348 Y-33.27 Z-2.522 B17.187 C275.795 +G01 X+21.102 Y-33.293 C274.739 +G01 X+20.911 Y-33.311 Z-2.524 B17.192 C273.901 +G01 X+20.669 Y-33.322 Z-2.522 B17.187 C272.869 +G01 X+20.427 Y-33.332 B17.186 C271.836 +G01 X+20.224 Y-33.341 Z-2.524 B17.192 C270.951 +G01 X+19.988 Y-33.339 Z-2.522 B17.187 C269.942 +G01 X+19.752 Y-33.336 B17.186 C268.933 +G01 X+19.537 Y-33.334 Z-2.524 B17.192 C268.001 +G01 X+19.307 Y-33.321 Z-2.522 B17.187 C267.015 +G01 X+19.076 Y-33.307 B17.186 C266.03 +G01 X+18.851 Y-33.293 Z-2.524 B17.192 C265.051 +G01 X+18.404 Y-33.243 Z-2.522 B17.186 C263.126 +G01 X+18.169 Y-33.216 Z-2.524 B17.192 C262.1 +G01 X+17.735 Y-33.145 Z-2.522 B17.186 C260.223 +G01 X+17.491 Y-33.104 Z-2.524 B17.192 C259.15 +G01 X+17.072 Y-33.013 Z-2.522 B17.186 C257.32 +G01 X+16.819 Y-32.958 Z-2.524 B17.192 C256.2 +G01 X+16.417 Y-32.848 Z-2.522 B17.186 C254.417 +G01 X+16.157 Y-32.777 Z-2.524 B17.192 C253.25 +G01 X+15.771 Y-32.65 Z-2.522 B17.186 C251.513 +G01 X+15.504 Y-32.562 Z-2.524 B17.192 C250.3 +G01 X+15.135 Y-32.419 Z-2.522 B17.186 C248.61 +G01 X+14.863 Y-32.314 Z-2.524 B17.191 C247.349 +G01 X+14.549 Y-32.174 Z-2.522 B17.186 C245.874 +G01 X+14.236 Y-32.033 Z-2.524 B17.191 C244.399 +G01 X+13.904 Y-31.863 Z-2.522 B17.185 C242.804 +G01 X+13.601 Y-31.708 Z-2.524 B17.192 C241.352 +G01 X+13.314 Y-31.543 Z-2.522 B17.186 C239.924 +G01 X+13.029 Y-31.376 Z-2.524 B17.191 C238.496 +G01 X+12.828 Y-31.247 Z-2.522 B17.187 C237.465 +G01 X+12.628 Y-31.117 B17.188 C236.435 +G01 X+12.452 Y-31.002 Z-2.523 B17.191 C235.546 +G01 X+12.263 Y-30.866 Z-2.522 B17.187 C234.539 +G01 X+12.075 Y-30.729 C233.531 +G01 X+11.897 Y-30.6 Z-2.524 B17.191 C232.605 +G01 X+11.719 Y-30.457 Z-2.522 B17.187 C231.617 +G01 X+11.542 Y-30.314 C230.628 +G01 X+11.362 Y-30.169 Z-2.524 B17.191 C229.652 +G01 X+11.105 Y-29.94 Z-2.522 B17.186 C228.175 +G01 X+10.85 Y-29.71 Z-2.524 B17.191 C226.698 +G01 X+10.588 Y-29.451 Z-2.522 B17.186 C225.109 +G01 X+10.587 Y-29.318 Z-2.493 B17.062 C224.69 +G01 X+10.431 Y-29.162 Z-2.494 B17.066 C223.753 +G01 X+10.277 Y-28.993 Z-2.493 B17.061 C222.754 +G01 X+10.123 Y-28.823 B17.062 C221.755 +G01 X+9.972 Y-28.658 Z-2.494 B17.066 C220.8 +G01 X+9.689 Y-28.312 Z-2.493 B17.061 C218.852 +G01 X+9.54 Y-28.13 Z-2.494 B17.066 C217.847 +G01 X+9.281 Y-27.779 Z-2.493 B17.061 C215.948 +G01 X+9.135 Y-27.581 Z-2.494 B17.066 C214.894 +G01 X+8.901 Y-27.226 Z-2.493 B17.061 C213.045 +G01 X+8.759 Y-27.011 Z-2.494 B17.066 C211.941 +G01 X+8.549 Y-26.654 Z-2.493 B17.061 C210.142 +G01 X+8.413 Y-26.423 Z-2.494 B17.066 C208.988 +G01 X+8.227 Y-26.066 Z-2.493 B17.061 C207.238 +G01 X+8.098 Y-25.818 Z-2.494 B17.066 C206.035 +G01 X+7.935 Y-25.461 Z-2.493 B17.061 C204.335 +G01 X+7.814 Y-25.198 Z-2.494 B17.066 C203.082 +G01 X+7.712 Y-24.941 Z-2.493 B17.061 C201.895 +G01 X+7.61 Y-24.683 B17.062 C200.707 +G01 X+7.563 Y-24.564 Z-2.494 B17.066 C200.129 +G01 X+7.476 Y-24.307 Z-2.493 B17.061 C198.967 +G01 X+7.389 Y-24.05 B17.062 C197.804 +G01 X+7.338 Y-23.896 Z-2.494 B17.066 C197.083 +G01 X+7.269 Y-23.651 Z-2.493 B17.061 C195.992 +G01 X+7.2 Y-23.406 C194.901 +G01 X+7.159 Y-23.261 Z-2.494 B17.066 C194.228 +G01 X+7.102 Y-23.007 Z-2.493 B17.061 C193.113 +G01 X+7.044 Y-22.753 C191.997 +G01 X+7.009 Y-22.595 Z-2.494 B17.066 C191.278 +G01 X+6.965 Y-22.344 Z-2.493 B17.061 C190.186 +G01 X+6.922 Y-22.093 C189.094 +G01 X+6.892 Y-21.923 Z-2.494 B17.066 C188.328 +G01 X+6.862 Y-21.676 Z-2.493 B17.061 C187.26 +G01 X+6.833 Y-21.428 C186.191 +G01 X+6.811 Y-21.246 Z-2.494 B17.066 C185.378 +G01 X+6.794 Y-21.003 Z-2.493 B17.061 C184.333 +G01 X+6.777 Y-20.759 C183.288 +G01 X+6.764 Y-20.565 Z-2.494 B17.066 C182.428 +G01 X+6.76 Y-20.327 Z-2.493 B17.061 C181.407 +G01 X+6.756 Y-20.089 C180.384 +G01 X+6.752 Y-19.883 Z-2.494 B17.066 C179.479 +G01 X+6.76 Y-19.65 Z-2.493 B17.061 C178.48 +G01 X+6.768 Y-19.418 B17.06 C177.481 +G01 X+6.776 Y-19.201 Z-2.494 B17.066 C176.529 +G01 X+6.815 Y-18.748 Z-2.493 B17.06 C174.578 +G01 X+6.835 Y-18.521 Z-2.494 B17.066 C173.579 +G01 X+6.895 Y-18.082 Z-2.493 B17.06 C171.675 +G01 X+6.928 Y-17.846 Z-2.494 B17.066 C170.629 +G01 X+7.009 Y-17.421 Z-2.493 B17.06 C168.772 +G01 X+7.056 Y-17.176 Z-2.494 B17.066 C167.679 +G01 X+7.157 Y-16.766 Z-2.493 B17.06 C165.868 +G01 X+7.219 Y-16.513 Z-2.494 B17.066 C164.729 +G01 X+7.337 Y-16.12 Z-2.493 B17.06 C162.965 +G01 X+7.415 Y-15.86 Z-2.494 B17.066 C161.779 +G01 X+7.55 Y-15.484 Z-2.493 B17.06 C160.062 +G01 X+7.645 Y-15.217 Z-2.494 B17.066 C158.829 +G01 X+7.795 Y-14.859 Z-2.493 B17.06 C157.159 +G01 X+7.908 Y-14.588 Z-2.494 B17.066 C155.88 +G01 X+8.071 Y-14.247 Z-2.493 B17.06 C154.255 +G01 X+8.203 Y-13.972 Z-2.494 B17.065 C152.93 +G01 X+8.378 Y-13.651 Z-2.493 B17.06 C151.352 +G01 X+8.528 Y-13.373 Z-2.494 B17.065 C149.98 +G01 X+8.664 Y-13.152 Z-2.493 B17.061 C148.852 +G01 X+8.799 Y-12.931 B17.062 C147.724 +G01 X+8.885 Y-12.791 Z-2.494 B17.065 C147.03 +G01 X+9.028 Y-12.582 Z-2.493 B17.061 C145.925 +G01 X+9.172 Y-12.373 B17.062 C144.821 +G01 X+9.271 Y-12.229 Z-2.494 B17.065 C144.089 +G01 X+9.421 Y-12.031 Z-2.493 B17.061 C143.003 +G01 X+9.572 Y-11.834 B17.062 C141.917 +G01 X+9.685 Y-11.687 Z-2.494 B17.065 C141.136 +G01 X+9.905 Y-11.426 Z-2.493 B17.06 C139.659 +G01 X+10.127 Y-11.167 Z-2.494 B17.065 C138.183 +G01 X+10.34 Y-10.94 Z-2.493 B17.06 C136.836 +G01 X+10.594 Y-10.67 Z-2.494 B17.065 C135.23 +G01 X+10.84 Y-10.434 Z-2.493 B17.06 C133.753 +G01 X+11.087 Y-10.198 Z-2.494 B17.066 C132.277 +G01 X+11.258 Y-10.05 Z-2.493 B17.061 C131.29 +G01 X+11.43 Y-9.902 B17.062 C130.303 +G01 X+11.603 Y-9.752 Z-2.494 B17.066 C129.324 +G01 X+11.952 Y-9.481 Z-2.493 B17.061 C127.4 +G01 X+12.142 Y-9.334 Z-2.494 B17.066 C126.371 +G01 X+12.495 Y-9.087 Z-2.493 B17.061 C124.497 +G01 X+12.702 Y-8.943 Z-2.494 B17.066 C123.418 +G01 X+13.058 Y-8.721 Z-2.493 B17.061 C121.593 +G01 X+13.28 Y-8.582 Z-2.494 B17.066 C120.465 +G01 X+13.638 Y-8.384 Z-2.493 B17.061 C118.69 +G01 X+13.877 Y-8.252 Z-2.494 B17.066 C117.512 +G01 X+14.235 Y-8.077 Z-2.493 B17.061 C115.787 +G01 X+14.49 Y-7.952 Z-2.494 B17.066 C114.559 +G01 X+14.747 Y-7.842 Z-2.493 B17.061 C113.359 +G01 X+15.004 Y-7.733 Z-2.494 B17.062 C112.159 +G01 X+15.118 Y-7.684 B17.066 C111.606 +G01 X+15.375 Y-7.59 Z-2.493 B17.061 C110.431 +G01 X+15.632 Y-7.496 B17.062 C109.255 +G01 X+15.758 Y-7.449 Z-2.494 B17.066 C108.653 +G01 X+16.014 Y-7.37 Z-2.493 B17.061 C107.503 +G01 X+16.271 Y-7.291 C106.352 +G01 X+16.426 Y-7.243 Z-2.494 B17.066 C105.632 +G01 X+16.673 Y-7.181 Z-2.493 B17.061 C104.541 +G01 X+16.92 Y-7.118 C103.449 +G01 X+17.071 Y-7.08 Z-2.494 B17.066 C102.753 +G01 X+17.323 Y-7.029 Z-2.493 B17.061 C101.65 +G01 X+17.576 Y-6.979 C100.546 +G01 X+17.74 Y-6.946 Z-2.494 B17.066 C99.803 +G01 X+17.989 Y-6.909 Z-2.493 B17.061 C98.723 +G01 X+18.239 Y-6.873 C97.643 +G01 X+18.415 Y-6.847 Z-2.494 B17.066 C96.853 +G01 X+18.66 Y-6.824 Z-2.493 B17.061 C95.796 +G01 X+18.906 Y-6.801 C94.739 +G01 X+19.094 Y-6.783 Z-2.494 B17.066 C93.903 +G01 X+19.335 Y-6.772 Z-2.493 B17.061 C92.87 +G01 X+19.576 Y-6.762 C91.836 +G01 X+19.776 Y-6.754 Z-2.494 B17.066 C90.954 +G01 X+20.011 Y-6.756 Z-2.493 B17.061 C89.943 +G01 X+20.247 Y-6.758 B17.06 C88.933 +G01 X+20.458 Y-6.76 Z-2.494 B17.066 C88.004 +G01 X+20.688 Y-6.773 Z-2.493 B17.061 C87.017 +G01 X+20.917 Y-6.787 B17.06 C86.03 +G01 X+21.139 Y-6.801 Z-2.494 B17.066 C85.054 +G01 X+21.585 Y-6.851 Z-2.493 B17.06 C83.126 +G01 X+21.817 Y-6.877 Z-2.494 B17.066 C82.104 +G01 X+22.249 Y-6.948 Z-2.493 B17.06 C80.223 +G01 X+22.49 Y-6.988 Z-2.494 B17.066 C79.154 +G01 X+22.907 Y-7.079 Z-2.493 B17.06 C77.32 +G01 X+23.157 Y-7.133 Z-2.494 B17.066 C76.204 +G01 X+23.558 Y-7.243 Z-2.493 B17.06 C74.417 +G01 X+23.815 Y-7.313 Z-2.494 B17.066 C73.254 +G01 X+24.199 Y-7.439 Z-2.493 B17.06 C71.513 +G01 X+24.463 Y-7.526 Z-2.494 B17.066 C70.304 +G01 X+24.83 Y-7.668 Z-2.493 B17.06 C68.61 +G01 X+25.099 Y-7.772 Z-2.494 B17.066 C67.354 +G01 X+25.449 Y-7.929 Z-2.493 B17.06 C65.707 +G01 X+25.722 Y-8.051 Z-2.494 B17.065 C64.405 +G01 X+26.053 Y-8.22 Z-2.493 B17.06 C62.804 +G01 X+26.329 Y-8.362 Z-2.494 B17.065 C61.455 +G01 X+26.642 Y-8.542 Z-2.493 B17.06 C59.901 +G01 X+26.92 Y-8.703 Z-2.494 B17.065 C58.505 +G01 X+27.135 Y-8.842 Z-2.493 B17.061 C57.389 +G01 X+27.35 Y-8.982 B17.062 C56.272 +G01 X+27.492 Y-9.074 Z-2.494 B17.065 C55.555 +G01 X+27.696 Y-9.221 Z-2.493 B17.061 C54.462 +G01 X+27.899 Y-9.368 B17.062 C53.369 +G01 X+28.045 Y-9.474 Z-2.494 B17.065 C52.612 +G01 X+28.236 Y-9.628 Z-2.493 B17.061 C51.539 +G01 X+28.427 Y-9.782 B17.062 C50.465 +G01 X+28.576 Y-9.902 Z-2.494 B17.065 C49.659 +G01 X+28.755 Y-10.062 Z-2.493 B17.061 C48.611 +G01 X+28.934 Y-10.222 B17.062 C47.562 +G01 X+29.085 Y-10.357 Z-2.494 B17.065 C46.706 +G01 X+29.251 Y-10.522 Z-2.493 B17.061 C45.683 +G01 X+29.418 Y-10.687 B17.062 C44.659 +G01 X+29.569 Y-10.838 Z-2.494 B17.066 C43.753 +G01 X+29.723 Y-11.007 Z-2.493 B17.061 C42.754 +G01 X+29.877 Y-11.177 B17.062 C41.755 +G01 X+30.028 Y-11.342 Z-2.494 B17.066 C40.8 +G01 X+30.311 Y-11.688 Z-2.493 B17.061 C38.852 +G01 X+30.46 Y-11.87 Z-2.494 B17.066 C37.847 +G01 X+30.719 Y-12.221 Z-2.493 B17.061 C35.948 +G01 X+30.865 Y-12.419 Z-2.494 B17.066 C34.894 +G01 X+31.099 Y-12.774 Z-2.493 B17.061 C33.045 +G01 X+31.241 Y-12.989 Z-2.494 B17.066 C31.941 +G01 X+31.451 Y-13.346 Z-2.493 B17.061 C30.142 +G01 X+31.587 Y-13.577 Z-2.494 B17.066 C28.988 +G01 X+31.773 Y-13.934 Z-2.493 B17.061 C27.238 +G01 X+31.902 Y-14.182 Z-2.494 B17.066 C26.035 +G01 X+32.065 Y-14.538 Z-2.493 B17.061 C24.335 +G01 X+32.186 Y-14.802 Z-2.494 B17.066 C23.083 +G01 X+32.288 Y-15.059 Z-2.493 B17.061 C21.895 +G01 X+32.39 Y-15.317 B17.062 C20.707 +G01 X+32.437 Y-15.436 Z-2.494 B17.066 C20.129 +G01 X+32.524 Y-15.693 Z-2.493 B17.061 C18.967 +G01 X+32.611 Y-15.95 B17.062 C17.804 +G01 X+32.662 Y-16.104 Z-2.494 B17.066 C17.083 +G01 X+32.731 Y-16.349 Z-2.493 B17.061 C15.992 +G01 X+32.8 Y-16.594 C14.901 +G01 X+32.841 Y-16.739 Z-2.494 B17.066 C14.228 +G01 X+32.898 Y-16.993 Z-2.493 B17.061 C13.113 +G01 X+32.956 Y-17.247 C11.997 +G01 X+32.991 Y-17.405 Z-2.494 B17.066 C11.278 +G01 X+33.035 Y-17.656 Z-2.493 B17.061 C10.186 +G01 X+33.078 Y-17.907 C9.094 +G01 X+33.108 Y-18.077 Z-2.494 B17.066 C8.328 +G01 X+33.138 Y-18.324 Z-2.493 B17.061 C7.26 +G01 X+33.167 Y-18.572 C6.191 +G01 X+33.189 Y-18.754 Z-2.494 B17.066 C5.378 +G01 X+33.206 Y-18.997 Z-2.493 B17.061 C4.333 +G01 X+33.223 Y-19.24 C3.288 +G01 X+33.236 Y-19.435 Z-2.494 B17.066 C2.428 +G01 X+33.24 Y-19.673 Z-2.493 B17.061 C1.407 +G01 X+33.244 Y-19.911 C0.384 +G01 X+33.248 Y-20.117 Z-2.494 B17.066 C359.479 +G01 X+33.24 Y-20.349 Z-2.493 B17.061 C358.48 +G01 X+33.232 Y-20.582 B17.06 C357.481 +G01 X+33.224 Y-20.799 Z-2.494 B17.066 C356.529 +G01 X+33.185 Y-21.251 Z-2.493 B17.06 C354.578 +G01 X+33.165 Y-21.478 Z-2.494 B17.066 C353.579 +G01 X+33.105 Y-21.918 Z-2.493 B17.06 C351.675 +G01 X+33.072 Y-22.154 Z-2.494 B17.066 C350.629 +G01 X+32.991 Y-22.579 Z-2.493 B17.06 C348.772 +G01 X+32.944 Y-22.824 Z-2.494 B17.066 C347.679 +G01 X+32.843 Y-23.233 Z-2.493 B17.06 C345.868 +G01 X+32.781 Y-23.487 Z-2.494 B17.066 C344.729 +G01 X+32.663 Y-23.88 Z-2.493 B17.06 C342.965 +G01 X+32.585 Y-24.14 Z-2.494 B17.066 C341.779 +G01 X+32.45 Y-24.516 Z-2.493 B17.06 C340.062 +G01 X+32.355 Y-24.782 Z-2.494 B17.066 C338.829 +G01 X+32.205 Y-25.141 Z-2.493 B17.06 C337.159 +G01 X+32.092 Y-25.412 Z-2.494 B17.066 C335.88 +G01 X+31.929 Y-25.753 Z-2.493 B17.06 C334.255 +G01 X+31.798 Y-26.027 Z-2.494 B17.065 C332.93 +G01 X+31.622 Y-26.349 Z-2.493 B17.06 C331.352 +G01 X+31.472 Y-26.627 Z-2.494 B17.065 C329.98 +G01 X+31.336 Y-26.848 Z-2.493 B17.061 C328.852 +G01 X+31.201 Y-27.069 B17.062 C327.724 +G01 X+31.115 Y-27.209 Z-2.494 B17.065 C327.03 +G01 X+30.972 Y-27.418 Z-2.493 B17.061 C325.925 +G01 X+30.828 Y-27.627 B17.062 C324.821 +G01 X+30.729 Y-27.771 Z-2.494 B17.065 C324.089 +G01 X+30.579 Y-27.969 Z-2.493 B17.061 C323.003 +G01 X+30.428 Y-28.166 B17.062 C321.917 +G01 X+30.315 Y-28.313 Z-2.494 B17.065 C321.136 +G01 X+30.095 Y-28.573 Z-2.493 B17.06 C319.659 +G01 X+29.873 Y-28.833 Z-2.494 B17.065 C318.183 +G01 X+29.66 Y-29.06 Z-2.493 B17.06 C316.836 +G01 X+29.406 Y-29.33 Z-2.494 B17.065 C315.23 +G01 X+29.16 Y-29.566 Z-2.493 B17.06 C313.753 +G01 X+28.913 Y-29.802 Z-2.494 B17.066 C312.277 +G01 X+28.742 Y-29.95 Z-2.493 B17.061 C311.29 +G01 X+28.57 Y-30.098 B17.062 C310.303 +G01 X+28.397 Y-30.247 Z-2.494 B17.066 C309.324 +G01 X+28.048 Y-30.519 Z-2.493 B17.061 C307.4 +G01 X+27.858 Y-30.666 Z-2.494 B17.066 C306.371 +G01 X+27.505 Y-30.913 Z-2.493 B17.061 C304.497 +G01 X+27.298 Y-31.056 Z-2.494 B17.066 C303.418 +G01 X+26.942 Y-31.279 Z-2.493 B17.061 C301.593 +G01 X+26.72 Y-31.418 Z-2.494 B17.066 C300.465 +G01 X+26.362 Y-31.616 Z-2.493 B17.061 C298.69 +G01 X+26.123 Y-31.748 Z-2.494 B17.066 C297.512 +G01 X+25.765 Y-31.923 Z-2.493 B17.061 C295.787 +G01 X+25.51 Y-32.048 Z-2.494 B17.066 C294.559 +G01 X+25.253 Y-32.158 Z-2.493 B17.061 C293.359 +G01 X+24.996 Y-32.267 Z-2.494 B17.062 C292.159 +G01 X+24.882 Y-32.316 B17.066 C291.606 +G01 X+24.625 Y-32.41 Z-2.493 B17.061 C290.431 +G01 X+24.368 Y-32.504 B17.062 C289.255 +G01 X+24.242 Y-32.551 Z-2.494 B17.066 C288.653 +G01 X+23.986 Y-32.63 Z-2.493 B17.061 C287.503 +G01 X+23.729 Y-32.709 C286.352 +G01 X+23.574 Y-32.756 Z-2.494 B17.066 C285.632 +G01 X+23.327 Y-32.819 Z-2.493 B17.061 C284.541 +G01 X+23.081 Y-32.882 C283.449 +G01 X+22.929 Y-32.92 Z-2.494 B17.066 C282.753 +G01 X+22.677 Y-32.971 Z-2.493 B17.061 C281.65 +G01 X+22.424 Y-33.021 C280.546 +G01 X+22.26 Y-33.054 Z-2.494 B17.066 C279.803 +G01 X+22.011 Y-33.091 Z-2.493 B17.061 C278.723 +G01 X+21.761 Y-33.127 C277.643 +G01 X+21.585 Y-33.153 Z-2.494 B17.066 C276.853 +G01 X+21.34 Y-33.176 Z-2.493 B17.061 C275.796 +G01 X+21.094 Y-33.199 C274.739 +G01 X+20.906 Y-33.217 Z-2.494 B17.066 C273.903 +G01 X+20.665 Y-33.228 Z-2.493 B17.061 C272.87 +G01 X+20.424 Y-33.238 C271.836 +G01 X+20.224 Y-33.246 Z-2.494 B17.066 C270.954 +G01 X+19.989 Y-33.244 Z-2.493 B17.061 C269.943 +G01 X+19.753 Y-33.242 B17.06 C268.933 +G01 X+19.542 Y-33.24 Z-2.494 B17.066 C268.004 +G01 X+19.312 Y-33.226 Z-2.493 B17.061 C267.017 +G01 X+19.083 Y-33.212 B17.06 C266.03 +G01 X+18.861 Y-33.199 Z-2.494 B17.066 C265.054 +G01 X+18.415 Y-33.149 Z-2.493 B17.06 C263.126 +G01 X+18.183 Y-33.123 Z-2.494 B17.066 C262.104 +G01 X+17.751 Y-33.052 Z-2.493 B17.06 C260.223 +G01 X+17.51 Y-33.012 Z-2.494 B17.066 C259.154 +G01 X+17.093 Y-32.921 Z-2.493 B17.06 C257.32 +G01 X+16.843 Y-32.866 Z-2.494 B17.066 C256.204 +G01 X+16.442 Y-32.757 Z-2.493 B17.06 C254.417 +G01 X+16.185 Y-32.687 Z-2.494 B17.066 C253.254 +G01 X+15.801 Y-32.56 Z-2.493 B17.06 C251.513 +G01 X+15.537 Y-32.474 Z-2.494 B17.066 C250.304 +G01 X+15.17 Y-32.332 Z-2.493 B17.06 C248.61 +G01 X+14.901 Y-32.227 Z-2.494 B17.066 C247.354 +G01 X+14.589 Y-32.088 Z-2.493 B17.06 C245.88 +G01 X+14.278 Y-31.949 Z-2.494 B17.065 C244.405 +G01 X+13.947 Y-31.78 Z-2.493 B17.06 C242.804 +G01 X+13.646 Y-31.625 Z-2.495 B17.066 C241.352 +G01 X+13.362 Y-31.461 Z-2.493 B17.061 C239.926 +G01 X+13.079 Y-31.297 Z-2.494 B17.065 C238.5 +G01 X+12.864 Y-31.157 Z-2.493 B17.061 C237.386 +G01 X+12.65 Y-31.018 B17.062 C236.272 +G01 X+12.508 Y-30.926 Z-2.494 B17.065 C235.555 +G01 X+12.304 Y-30.779 Z-2.493 B17.061 C234.462 +G01 X+12.101 Y-30.631 B17.062 C233.369 +G01 X+11.955 Y-30.526 Z-2.494 B17.065 C232.612 +G01 X+11.764 Y-30.372 Z-2.493 B17.061 C231.539 +G01 X+11.573 Y-30.218 B17.062 C230.465 +G01 X+11.424 Y-30.098 Z-2.494 B17.065 C229.659 +G01 X+11.169 Y-29.87 Z-2.493 B17.06 C228.183 +G01 X+10.915 Y-29.643 Z-2.494 B17.065 C226.706 +G01 X+10.655 Y-29.384 Z-2.493 B17.06 C225.111 +G01 X+10.654 Y-29.251 Z-2.464 B16.936 C224.686 +G01 X+10.5 Y-29.098 Z-2.465 B16.94 C223.761 +G01 X+10.302 Y-28.88 Z-2.464 B16.934 C222.481 +G01 X+10.045 Y-28.597 Z-2.465 B16.94 C220.809 +G01 X+9.865 Y-28.378 Z-2.464 B16.934 C219.578 +G01 X+9.615 Y-28.073 Z-2.465 B16.94 C217.856 +G01 X+9.414 Y-27.801 Z-2.464 B16.935 C216.38 +G01 X+9.213 Y-27.528 Z-2.465 B16.94 C214.904 +G01 X+9.086 Y-27.335 Z-2.464 B16.935 C213.893 +G01 X+8.959 Y-27.143 B16.936 C212.882 +G01 X+8.84 Y-26.962 Z-2.465 B16.94 C211.951 +G01 X+8.726 Y-26.769 Z-2.464 B16.936 C210.965 +G01 X+8.612 Y-26.575 C209.979 +G01 X+8.497 Y-26.379 Z-2.465 B16.94 C208.998 +G01 X+8.293 Y-25.989 Z-2.464 B16.936 C207.075 +G01 X+8.183 Y-25.778 Z-2.465 B16.94 C206.046 +G01 X+8.005 Y-25.389 Z-2.464 B16.936 C204.172 +G01 X+7.902 Y-25.162 Z-2.465 B16.94 C203.093 +G01 X+7.8 Y-24.906 Z-2.464 B16.935 C201.9 +G01 X+7.699 Y-24.65 Z-2.465 B16.936 C200.707 +G01 X+7.652 Y-24.533 B16.941 C200.141 +G01 X+7.565 Y-24.277 Z-2.464 B16.935 C198.972 +G01 X+7.479 Y-24.021 B16.936 C197.804 +G01 X+7.435 Y-23.891 Z-2.465 B16.941 C197.188 +G01 X+7.363 Y-23.636 Z-2.464 B16.935 C196.044 +G01 X+7.292 Y-23.382 B16.936 C194.901 +G01 X+7.251 Y-23.239 Z-2.465 B16.941 C194.235 +G01 X+7.194 Y-22.986 Z-2.464 B16.935 C193.117 +G01 X+7.137 Y-22.733 C191.997 +G01 X+7.102 Y-22.578 Z-2.465 B16.941 C191.283 +G01 X+7.058 Y-22.328 Z-2.464 B16.935 C190.189 +G01 X+7.015 Y-22.078 C189.094 +G01 X+6.986 Y-21.911 Z-2.465 B16.941 C188.33 +G01 X+6.956 Y-21.664 Z-2.464 B16.935 C187.261 +G01 X+6.926 Y-21.418 C186.191 +G01 X+6.904 Y-21.221 Z-2.465 B16.94 C185.307 +G01 X+6.887 Y-20.988 Z-2.464 B16.935 C184.298 +G01 X+6.872 Y-20.754 C183.288 +G01 X+6.858 Y-20.563 Z-2.465 B16.941 C182.431 +G01 X+6.854 Y-20.325 Z-2.464 B16.935 C181.408 +G01 X+6.85 Y-20.088 C180.384 +G01 X+6.847 Y-19.885 Z-2.465 B16.94 C179.481 +G01 X+6.855 Y-19.654 Z-2.464 B16.935 C178.481 +G01 X+6.863 Y-19.422 C177.481 +G01 X+6.87 Y-19.208 Z-2.465 B16.94 C176.532 +G01 X+6.909 Y-18.757 Z-2.464 B16.935 C174.578 +G01 X+6.928 Y-18.534 Z-2.465 B16.94 C173.582 +G01 X+6.989 Y-18.096 Z-2.464 B16.934 C171.675 +G01 X+7.021 Y-17.863 Z-2.465 B16.94 C170.633 +G01 X+7.102 Y-17.439 Z-2.464 B16.934 C168.771 +G01 X+7.148 Y-17.197 Z-2.465 B16.94 C167.683 +G01 X+7.248 Y-16.789 Z-2.464 B16.934 C165.868 +G01 X+7.31 Y-16.539 Z-2.465 B16.94 C164.733 +G01 X+7.427 Y-16.148 Z-2.464 B16.934 C162.965 +G01 X+7.505 Y-15.891 Z-2.465 B16.94 C161.784 +G01 X+7.639 Y-15.516 Z-2.464 B16.934 C160.062 +G01 X+7.733 Y-15.253 Z-2.465 B16.94 C158.834 +G01 X+7.882 Y-14.896 Z-2.464 B16.934 C157.159 +G01 X+7.993 Y-14.628 Z-2.465 B16.94 C155.885 +G01 X+8.156 Y-14.288 Z-2.464 B16.934 C154.255 +G01 X+8.286 Y-14.017 Z-2.465 B16.94 C152.935 +G01 X+8.46 Y-13.696 Z-2.464 B16.934 C151.352 +G01 X+8.609 Y-13.422 Z-2.465 B16.94 C149.986 +G01 X+8.754 Y-13.186 Z-2.464 B16.935 C148.774 +G01 X+8.898 Y-12.95 Z-2.465 B16.937 C147.562 +G01 X+8.963 Y-12.844 B16.939 C147.036 +G01 X+9.116 Y-12.62 Z-2.464 B16.935 C145.847 +G01 X+9.27 Y-12.396 B16.937 C144.658 +G01 X+9.346 Y-12.285 Z-2.465 B16.939 C144.094 +G01 X+9.507 Y-12.074 Z-2.464 B16.935 C142.924 +G01 X+9.669 Y-11.863 B16.937 C141.755 +G01 X+9.758 Y-11.747 Z-2.465 B16.94 C141.143 +G01 X+9.976 Y-11.489 Z-2.464 B16.934 C139.667 +G01 X+10.196 Y-11.231 Z-2.465 B16.94 C138.19 +G01 X+10.409 Y-11.005 Z-2.464 B16.934 C136.836 +G01 X+10.66 Y-10.738 Z-2.465 B16.94 C135.238 +G01 X+10.877 Y-10.53 Z-2.464 B16.934 C133.933 +G01 X+11.15 Y-10.269 Z-2.465 B16.94 C132.285 +G01 X+11.368 Y-10.08 Z-2.464 B16.934 C131.03 +G01 X+11.662 Y-9.826 Z-2.465 B16.94 C129.333 +G01 X+11.929 Y-9.618 Z-2.464 B16.935 C127.856 +G01 X+12.197 Y-9.411 Z-2.465 B16.94 C126.38 +G01 X+12.388 Y-9.277 Z-2.464 B16.935 C125.357 +G01 X+12.579 Y-9.144 B16.936 C124.334 +G01 X+12.752 Y-9.023 Z-2.465 B16.94 C123.427 +G01 X+12.946 Y-8.902 Z-2.464 B16.936 C122.429 +G01 X+13.139 Y-8.782 C121.43 +G01 X+13.327 Y-8.665 Z-2.465 B16.94 C120.475 +G01 X+13.716 Y-8.449 Z-2.464 B16.936 C118.527 +G01 X+13.919 Y-8.336 Z-2.465 B16.94 C117.522 +G01 X+14.309 Y-8.145 Z-2.464 B16.936 C115.624 +G01 X+14.528 Y-8.039 Z-2.465 B16.94 C114.57 +G01 X+14.917 Y-7.872 Z-2.464 B16.935 C112.72 +G01 X+15.151 Y-7.773 Z-2.465 B16.94 C111.617 +G01 X+15.407 Y-7.678 Z-2.464 B16.935 C110.436 +G01 X+15.663 Y-7.585 B16.936 C109.255 +G01 X+15.787 Y-7.539 Z-2.465 B16.941 C108.664 +G01 X+16.042 Y-7.46 Z-2.464 B16.935 C107.508 +G01 X+16.298 Y-7.381 B16.936 C106.352 +G01 X+16.434 Y-7.339 Z-2.465 B16.941 C105.712 +G01 X+16.688 Y-7.274 Z-2.464 B16.935 C104.58 +G01 X+16.941 Y-7.21 B16.936 C103.449 +G01 X+17.09 Y-7.172 Z-2.465 B16.941 C102.759 +G01 X+17.342 Y-7.122 Z-2.464 B16.935 C101.653 +G01 X+17.593 Y-7.072 C100.546 +G01 X+17.755 Y-7.039 Z-2.465 B16.941 C99.806 +G01 X+18.003 Y-7.003 Z-2.464 B16.935 C98.725 +G01 X+18.251 Y-6.966 C97.643 +G01 X+18.447 Y-6.939 Z-2.465 B16.94 C96.759 +G01 X+18.68 Y-6.917 Z-2.464 B16.935 C95.749 +G01 X+18.914 Y-6.895 C94.739 +G01 X+19.099 Y-6.877 Z-2.465 B16.941 C93.906 +G01 X+19.339 Y-6.867 Z-2.464 B16.935 C92.871 +G01 X+19.579 Y-6.857 C91.836 +G01 X+19.777 Y-6.848 Z-2.465 B16.94 C90.953 +G01 X+20.011 Y-6.85 Z-2.464 B16.935 C89.943 +G01 X+20.245 Y-6.852 C88.933 +G01 X+20.453 Y-6.854 Z-2.465 B16.94 C88.007 +G01 X+20.682 Y-6.868 Z-2.464 B16.935 C87.018 +G01 X+20.911 Y-6.882 C86.03 +G01 X+21.129 Y-6.895 Z-2.465 B16.94 C85.057 +G01 X+21.574 Y-6.945 Z-2.464 B16.934 C83.126 +G01 X+21.802 Y-6.97 Z-2.465 B16.94 C82.107 +G01 X+22.233 Y-7.041 Z-2.464 B16.934 C80.223 +G01 X+22.471 Y-7.08 Z-2.465 B16.94 C79.158 +G01 X+22.886 Y-7.171 Z-2.464 B16.934 C77.32 +G01 X+23.133 Y-7.225 Z-2.465 B16.94 C76.208 +G01 X+23.532 Y-7.334 Z-2.464 B16.934 C74.417 +G01 X+23.786 Y-7.403 Z-2.465 B16.94 C73.259 +G01 X+24.169 Y-7.529 Z-2.464 B16.934 C71.513 +G01 X+24.43 Y-7.615 Z-2.465 B16.94 C70.309 +G01 X+24.796 Y-7.756 Z-2.464 B16.934 C68.61 +G01 X+25.061 Y-7.859 Z-2.465 B16.94 C67.36 +G01 X+25.41 Y-8.015 Z-2.464 B16.934 C65.707 +G01 X+25.68 Y-8.136 Z-2.465 B16.94 C64.41 +G01 X+26.01 Y-8.304 Z-2.464 B16.934 C62.804 +G01 X+26.283 Y-8.444 Z-2.465 B16.94 C61.461 +G01 X+26.594 Y-8.624 Z-2.464 B16.934 C59.901 +G01 X+26.869 Y-8.783 Z-2.465 B16.939 C58.511 +G01 X+27.099 Y-8.931 Z-2.464 B16.935 C57.31 +G01 X+27.329 Y-9.081 Z-2.465 B16.937 C56.11 +G01 X+27.438 Y-9.151 B16.939 C55.562 +G01 X+27.655 Y-9.308 Z-2.464 B16.935 C54.384 +G01 X+27.873 Y-9.466 B16.937 C53.206 +G01 X+27.986 Y-9.548 Z-2.465 B16.939 C52.619 +G01 X+28.191 Y-9.713 Z-2.464 B16.935 C51.461 +G01 X+28.396 Y-9.878 B16.937 C50.303 +G01 X+28.514 Y-9.973 Z-2.465 B16.94 C49.667 +G01 X+28.766 Y-10.199 Z-2.464 B16.934 C48.19 +G01 X+29.019 Y-10.425 Z-2.465 B16.94 C46.714 +G01 X+29.235 Y-10.64 Z-2.464 B16.934 C45.384 +G01 X+29.5 Y-10.902 Z-2.465 B16.94 C43.762 +G01 X+29.698 Y-11.12 Z-2.464 B16.934 C42.481 +G01 X+29.955 Y-11.403 Z-2.465 B16.94 C40.809 +G01 X+30.135 Y-11.622 Z-2.464 B16.934 C39.578 +G01 X+30.385 Y-11.927 Z-2.465 B16.94 C37.856 +G01 X+30.586 Y-12.199 Z-2.464 B16.935 C36.38 +G01 X+30.787 Y-12.472 Z-2.465 B16.94 C34.904 +G01 X+30.914 Y-12.664 Z-2.464 B16.935 C33.893 +G01 X+31.041 Y-12.857 B16.936 C32.882 +G01 X+31.16 Y-13.037 Z-2.465 B16.94 C31.951 +G01 X+31.274 Y-13.231 Z-2.464 B16.936 C30.965 +G01 X+31.388 Y-13.425 C29.979 +G01 X+31.503 Y-13.621 Z-2.465 B16.94 C28.999 +G01 X+31.707 Y-14.011 Z-2.464 B16.936 C27.075 +G01 X+31.817 Y-14.222 Z-2.465 B16.94 C26.046 +G01 X+31.995 Y-14.611 Z-2.464 B16.936 C24.172 +G01 X+32.098 Y-14.838 Z-2.465 B16.94 C23.093 +G01 X+32.2 Y-15.094 Z-2.464 B16.935 C21.9 +G01 X+32.301 Y-15.35 Z-2.465 B16.936 C20.707 +G01 X+32.348 Y-15.467 B16.941 C20.141 +G01 X+32.435 Y-15.723 Z-2.464 B16.935 C18.972 +G01 X+32.521 Y-15.979 B16.936 C17.804 +G01 X+32.565 Y-16.109 Z-2.465 B16.941 C17.188 +G01 X+32.637 Y-16.364 Z-2.464 B16.935 C16.044 +G01 X+32.708 Y-16.618 B16.936 C14.901 +G01 X+32.749 Y-16.761 Z-2.465 B16.941 C14.235 +G01 X+32.806 Y-17.014 Z-2.464 B16.935 C13.117 +G01 X+32.863 Y-17.266 C11.997 +G01 X+32.898 Y-17.422 Z-2.465 B16.941 C11.283 +G01 X+32.942 Y-17.671 Z-2.464 B16.935 C10.189 +G01 X+32.985 Y-17.921 C9.094 +G01 X+33.014 Y-18.089 Z-2.465 B16.941 C8.33 +G01 X+33.044 Y-18.335 Z-2.464 B16.935 C7.261 +G01 X+33.074 Y-18.582 C6.191 +G01 X+33.096 Y-18.779 Z-2.465 B16.94 C5.307 +G01 X+33.113 Y-19.012 Z-2.464 B16.935 C4.298 +G01 X+33.128 Y-19.246 C3.288 +G01 X+33.142 Y-19.437 Z-2.465 B16.941 C2.431 +G01 X+33.146 Y-19.674 Z-2.464 B16.935 C1.408 +G01 X+33.15 Y-19.912 C0.384 +G01 X+33.153 Y-20.115 Z-2.465 B16.94 C359.481 +G01 X+33.145 Y-20.346 Z-2.464 B16.935 C358.481 +G01 X+33.137 Y-20.578 C357.481 +G01 X+33.13 Y-20.791 Z-2.465 B16.94 C356.532 +G01 X+33.091 Y-21.242 Z-2.464 B16.935 C354.578 +G01 X+33.072 Y-21.466 Z-2.465 B16.94 C353.582 +G01 X+33.011 Y-21.904 Z-2.464 B16.934 C351.675 +G01 X+32.979 Y-22.137 Z-2.465 B16.94 C350.633 +G01 X+32.898 Y-22.56 Z-2.464 B16.934 C348.771 +G01 X+32.852 Y-22.803 Z-2.465 B16.94 C347.683 +G01 X+32.752 Y-23.21 Z-2.464 B16.934 C345.868 +G01 X+32.69 Y-23.46 Z-2.465 B16.94 C344.733 +G01 X+32.573 Y-23.852 Z-2.464 B16.934 C342.965 +G01 X+32.495 Y-24.109 Z-2.465 B16.94 C341.784 +G01 X+32.361 Y-24.484 Z-2.464 B16.934 C340.062 +G01 X+32.267 Y-24.747 Z-2.465 B16.94 C338.834 +G01 X+32.118 Y-25.104 Z-2.464 B16.934 C337.159 +G01 X+32.007 Y-25.372 Z-2.465 B16.94 C335.885 +G01 X+31.844 Y-25.711 Z-2.464 B16.934 C334.255 +G01 X+31.714 Y-25.983 Z-2.465 B16.94 C332.935 +G01 X+31.54 Y-26.304 Z-2.464 B16.934 C331.352 +G01 X+31.391 Y-26.578 Z-2.465 B16.94 C329.986 +G01 X+31.246 Y-26.814 Z-2.464 B16.935 C328.774 +G01 X+31.102 Y-27.05 Z-2.465 B16.937 C327.562 +G01 X+31.037 Y-27.156 B16.939 C327.036 +G01 X+30.884 Y-27.38 Z-2.464 B16.935 C325.847 +G01 X+30.73 Y-27.603 B16.937 C324.658 +G01 X+30.654 Y-27.715 Z-2.465 B16.939 C324.094 +G01 X+30.493 Y-27.926 Z-2.464 B16.935 C322.924 +G01 X+30.331 Y-28.137 B16.937 C321.755 +G01 X+30.242 Y-28.253 Z-2.465 B16.94 C321.143 +G01 X+30.024 Y-28.511 Z-2.464 B16.934 C319.667 +G01 X+29.804 Y-28.769 Z-2.465 B16.94 C318.19 +G01 X+29.591 Y-28.995 Z-2.464 B16.934 C316.836 +G01 X+29.34 Y-29.262 Z-2.465 B16.94 C315.238 +G01 X+29.123 Y-29.469 Z-2.464 B16.934 C313.933 +G01 X+28.85 Y-29.731 Z-2.465 B16.94 C312.285 +G01 X+28.632 Y-29.919 Z-2.464 B16.934 C311.03 +G01 X+28.338 Y-30.173 Z-2.465 B16.94 C309.333 +G01 X+28.071 Y-30.382 Z-2.464 B16.935 C307.856 +G01 X+27.803 Y-30.589 Z-2.465 B16.94 C306.38 +G01 X+27.612 Y-30.723 Z-2.464 B16.935 C305.357 +G01 X+27.421 Y-30.856 B16.936 C304.334 +G01 X+27.248 Y-30.977 Z-2.465 B16.94 C303.427 +G01 X+27.054 Y-31.097 Z-2.464 B16.936 C302.429 +G01 X+26.861 Y-31.218 C301.43 +G01 X+26.673 Y-31.335 Z-2.465 B16.94 C300.475 +G01 X+26.284 Y-31.551 Z-2.464 B16.936 C298.527 +G01 X+26.081 Y-31.664 Z-2.465 B16.94 C297.522 +G01 X+25.691 Y-31.854 Z-2.464 B16.936 C295.624 +G01 X+25.472 Y-31.961 Z-2.465 B16.94 C294.57 +G01 X+25.083 Y-32.127 Z-2.464 B16.935 C292.72 +G01 X+24.849 Y-32.227 Z-2.465 B16.94 C291.617 +G01 X+24.593 Y-32.321 Z-2.464 B16.935 C290.436 +G01 X+24.337 Y-32.415 B16.936 C289.255 +G01 X+24.213 Y-32.461 Z-2.465 B16.941 C288.664 +G01 X+23.958 Y-32.54 Z-2.464 B16.935 C287.508 +G01 X+23.702 Y-32.619 B16.936 C286.352 +G01 X+23.566 Y-32.661 Z-2.465 B16.941 C285.712 +G01 X+23.312 Y-32.726 Z-2.464 B16.935 C284.58 +G01 X+23.059 Y-32.79 B16.936 C283.449 +G01 X+22.91 Y-32.828 Z-2.465 B16.941 C282.759 +G01 X+22.658 Y-32.878 Z-2.464 B16.935 C281.653 +G01 X+22.407 Y-32.928 C280.546 +G01 X+22.245 Y-32.961 Z-2.465 B16.941 C279.806 +G01 X+21.997 Y-32.997 Z-2.464 B16.935 C278.725 +G01 X+21.749 Y-33.033 C277.643 +G01 X+21.553 Y-33.061 Z-2.465 B16.94 C276.759 +G01 X+21.32 Y-33.083 Z-2.464 B16.935 C275.749 +G01 X+21.086 Y-33.105 C274.739 +G01 X+20.901 Y-33.123 Z-2.465 B16.941 C273.905 +G01 X+20.661 Y-33.133 Z-2.464 B16.935 C272.871 +G01 X+20.421 Y-33.143 C271.836 +G01 X+20.223 Y-33.152 Z-2.465 B16.94 C270.953 +G01 X+19.989 Y-33.15 Z-2.464 B16.935 C269.943 +G01 X+19.755 Y-33.148 C268.933 +G01 X+19.547 Y-33.146 Z-2.465 B16.94 C268.007 +G01 X+19.318 Y-33.132 Z-2.464 B16.935 C267.018 +G01 X+19.089 Y-33.118 C266.03 +G01 X+18.871 Y-33.105 Z-2.465 B16.94 C265.057 +G01 X+18.426 Y-33.055 Z-2.464 B16.934 C263.126 +G01 X+18.198 Y-33.029 Z-2.465 B16.94 C262.107 +G01 X+17.767 Y-32.959 Z-2.464 B16.934 C260.223 +G01 X+17.529 Y-32.919 Z-2.465 B16.94 C259.158 +G01 X+17.114 Y-32.829 Z-2.464 B16.934 C257.32 +G01 X+16.867 Y-32.775 Z-2.465 B16.94 C256.208 +G01 X+16.468 Y-32.666 Z-2.464 B16.934 C254.417 +G01 X+16.214 Y-32.597 Z-2.465 B16.94 C253.259 +G01 X+15.831 Y-32.471 Z-2.464 B16.934 C251.513 +G01 X+15.57 Y-32.385 Z-2.465 B16.94 C250.309 +G01 X+15.204 Y-32.244 Z-2.464 B16.934 C248.61 +G01 X+14.939 Y-32.141 Z-2.465 B16.94 C247.36 +G01 X+14.629 Y-32.003 Z-2.464 B16.934 C245.885 +G01 X+14.32 Y-31.864 Z-2.465 B16.94 C244.41 +G01 X+13.99 Y-31.696 Z-2.464 B16.934 C242.804 +G01 X+13.691 Y-31.543 Z-2.466 B16.94 C241.352 +G01 X+13.41 Y-31.38 Z-2.464 B16.935 C239.928 +G01 X+13.129 Y-31.217 Z-2.465 B16.94 C238.504 +G01 X+12.9 Y-31.068 Z-2.464 B16.935 C237.307 +G01 X+12.671 Y-30.919 Z-2.465 B16.937 C236.11 +G01 X+12.562 Y-30.849 B16.939 C235.562 +G01 X+12.345 Y-30.692 Z-2.464 B16.935 C234.384 +G01 X+12.127 Y-30.534 B16.937 C233.206 +G01 X+12.014 Y-30.452 Z-2.465 B16.939 C232.619 +G01 X+11.809 Y-30.287 Z-2.464 B16.935 C231.461 +G01 X+11.604 Y-30.121 B16.937 C230.303 +G01 X+11.486 Y-30.027 Z-2.465 B16.94 C229.667 +G01 X+11.234 Y-29.801 Z-2.464 B16.934 C228.19 +G01 X+10.981 Y-29.575 Z-2.465 B16.94 C226.714 +G01 X+10.721 Y-29.317 Z-2.464 B16.935 C225.113 +G01 Y-29.184 Z-2.435 B16.81 C224.688 +G01 X+10.57 Y-29.034 Z-2.437 B16.814 C223.77 +G01 X+10.372 Y-28.816 Z-2.435 B16.808 C222.481 +G01 X+10.117 Y-28.536 Z-2.437 B16.814 C220.817 +G01 X+9.938 Y-28.318 Z-2.435 B16.808 C219.578 +G01 X+9.691 Y-28.016 Z-2.437 B16.814 C217.865 +G01 X+9.529 Y-27.797 Z-2.435 B16.808 C216.675 +G01 X+9.292 Y-27.475 Z-2.437 B16.814 C214.913 +G01 X+9.106 Y-27.195 Z-2.435 B16.809 C213.437 +G01 X+8.921 Y-26.914 Z-2.437 B16.815 C211.961 +G01 X+8.798 Y-26.705 Z-2.435 B16.81 C210.888 +G01 X+8.675 Y-26.495 Z-2.436 C209.816 +G01 X+8.58 Y-26.334 Z-2.437 B16.815 C209.008 +G01 X+8.47 Y-26.124 Z-2.435 B16.81 C207.961 +G01 X+8.36 Y-25.913 C206.913 +G01 X+8.269 Y-25.738 Z-2.437 B16.815 C206.056 +G01 X+8.172 Y-25.527 Z-2.435 B16.81 C205.033 +G01 X+8.076 Y-25.316 C204.009 +G01 X+7.989 Y-25.126 Z-2.437 B16.815 C203.104 +G01 X+7.905 Y-24.916 Z-2.435 B16.81 C202.105 +G01 X+7.822 Y-24.705 C201.106 +G01 X+7.741 Y-24.501 Z-2.437 B16.815 C200.152 +G01 X+7.655 Y-24.247 Z-2.435 B16.809 C198.978 +G01 X+7.569 Y-23.992 Z-2.436 B16.81 C197.804 +G01 X+7.526 Y-23.864 Z-2.437 B16.815 C197.199 +G01 X+7.454 Y-23.611 Z-2.435 B16.809 C196.05 +G01 X+7.383 Y-23.357 Z-2.436 B16.81 C194.901 +G01 X+7.343 Y-23.217 Z-2.437 B16.815 C194.247 +G01 X+7.286 Y-22.965 Z-2.435 B16.809 C193.122 +G01 X+7.229 Y-22.714 Z-2.436 B16.81 C191.997 +G01 X+7.195 Y-22.561 Z-2.437 B16.815 C191.295 +G01 X+7.151 Y-22.312 Z-2.435 B16.809 C190.195 +G01 X+7.108 Y-22.063 Z-2.436 B16.81 C189.094 +G01 X+7.08 Y-21.899 Z-2.437 B16.815 C188.343 +G01 X+7.05 Y-21.653 Z-2.435 B16.809 C187.267 +G01 X+7.02 Y-21.408 Z-2.436 C186.191 +G01 X+6.999 Y-21.231 Z-2.437 B16.815 C185.39 +G01 X+6.982 Y-20.99 Z-2.435 B16.809 C184.339 +G01 X+6.966 Y-20.749 C183.288 +G01 X+6.953 Y-20.56 Z-2.437 B16.815 C182.438 +G01 X+6.949 Y-20.324 Z-2.435 B16.809 C181.411 +G01 X+6.945 Y-20.088 C180.384 +G01 X+6.941 Y-19.888 Z-2.437 B16.815 C179.486 +G01 X+6.949 Y-19.657 Z-2.435 B16.809 C178.484 +G01 X+6.957 Y-19.426 C177.481 +G01 X+6.964 Y-19.216 Z-2.437 B16.815 C176.535 +G01 X+7.003 Y-18.766 Z-2.435 B16.809 C174.578 +G01 X+7.022 Y-18.546 Z-2.437 B16.815 C173.585 +G01 X+7.082 Y-18.11 Z-2.435 B16.809 C171.675 +G01 X+7.115 Y-17.878 Z-2.437 B16.815 C170.628 +G01 X+7.195 Y-17.458 Z-2.435 B16.809 C168.772 +G01 X+7.24 Y-17.219 Z-2.437 B16.815 C167.687 +G01 X+7.34 Y-16.813 Z-2.435 B16.809 C165.868 +G01 X+7.401 Y-16.566 Z-2.437 B16.814 C164.738 +G01 X+7.518 Y-16.175 Z-2.435 B16.809 C162.965 +G01 X+7.594 Y-15.922 Z-2.437 B16.814 C161.789 +G01 X+7.728 Y-15.548 Z-2.435 B16.808 C160.062 +G01 X+7.82 Y-15.288 Z-2.437 B16.814 C158.839 +G01 X+7.969 Y-14.932 Z-2.435 B16.808 C157.159 +G01 X+8.079 Y-14.668 Z-2.437 B16.814 C155.89 +G01 X+8.241 Y-14.329 Z-2.435 B16.808 C154.255 +G01 X+8.369 Y-14.061 Z-2.437 B16.814 C152.941 +G01 X+8.543 Y-13.741 Z-2.435 B16.808 C151.352 +G01 X+8.691 Y-13.47 Z-2.437 B16.814 C149.992 +G01 X+8.875 Y-13.169 Z-2.435 B16.808 C148.449 +G01 X+9.042 Y-12.897 Z-2.437 B16.814 C147.042 +G01 X+9.205 Y-12.658 Z-2.435 B16.809 C145.769 +G01 X+9.368 Y-12.42 Z-2.436 B16.812 C144.496 +G01 X+9.422 Y-12.341 Z-2.437 B16.814 C144.094 +G01 X+9.594 Y-12.116 Z-2.435 B16.809 C142.843 +G01 X+9.766 Y-11.892 Z-2.436 B16.812 C141.592 +G01 X+9.83 Y-11.808 Z-2.437 B16.814 C141.15 +G01 X+10.048 Y-11.551 Z-2.435 C139.674 +G01 X+10.265 Y-11.295 Z-2.437 C138.198 +G01 X+10.478 Y-11.069 Z-2.435 B16.808 C136.836 +G01 X+10.726 Y-10.805 Z-2.437 B16.814 C135.246 +G01 X+10.942 Y-10.598 Z-2.435 B16.808 C133.933 +G01 X+11.212 Y-10.34 Z-2.437 B16.814 C132.294 +G01 X+11.43 Y-10.152 Z-2.435 B16.808 C131.03 +G01 X+11.721 Y-9.901 Z-2.437 B16.814 C129.341 +G01 X+11.94 Y-9.73 Z-2.435 B16.808 C128.126 +G01 X+12.252 Y-9.488 Z-2.437 B16.814 C126.389 +G01 X+12.458 Y-9.344 Z-2.435 B16.81 C125.28 +G01 X+12.663 Y-9.2 Z-2.436 B16.811 C124.171 +G01 X+12.803 Y-9.103 Z-2.437 B16.814 C123.437 +G01 X+13.011 Y-8.973 Z-2.435 B16.81 C122.352 +G01 X+13.22 Y-8.843 Z-2.436 B16.811 C121.268 +G01 X+13.374 Y-8.747 Z-2.437 B16.815 C120.484 +G01 X+13.584 Y-8.63 Z-2.435 B16.81 C119.425 +G01 X+13.794 Y-8.514 C118.364 +G01 X+13.962 Y-8.421 Z-2.437 B16.815 C117.532 +G01 X+14.173 Y-8.317 Z-2.435 B16.81 C116.497 +G01 X+14.384 Y-8.214 C115.461 +G01 X+14.566 Y-8.125 Z-2.437 B16.815 C114.58 +G01 X+14.777 Y-8.035 Z-2.435 B16.81 C113.569 +G01 X+14.988 Y-7.945 C112.557 +G01 X+15.184 Y-7.861 Z-2.437 B16.815 C111.628 +G01 X+15.439 Y-7.767 Z-2.435 B16.809 C110.442 +G01 X+15.694 Y-7.674 Z-2.436 B16.81 C109.255 +G01 X+15.816 Y-7.629 Z-2.437 B16.815 C108.675 +G01 X+16.07 Y-7.55 Z-2.435 B16.809 C107.514 +G01 X+16.324 Y-7.472 Z-2.436 B16.81 C106.352 +G01 X+16.458 Y-7.43 Z-2.437 B16.815 C105.723 +G01 X+16.711 Y-7.366 Z-2.435 B16.809 C104.586 +G01 X+16.963 Y-7.302 Z-2.436 B16.81 C103.449 +G01 X+17.11 Y-7.265 Z-2.437 B16.815 C102.771 +G01 X+17.36 Y-7.214 Z-2.435 B16.809 C101.658 +G01 X+17.611 Y-7.165 Z-2.436 B16.81 C100.546 +G01 X+17.769 Y-7.133 Z-2.437 B16.815 C99.819 +G01 X+18.016 Y-7.096 Z-2.435 B16.809 C98.731 +G01 X+18.264 Y-7.06 Z-2.436 B16.81 C97.643 +G01 X+18.435 Y-7.035 Z-2.437 B16.815 C96.867 +G01 X+18.678 Y-7.012 Z-2.435 B16.809 C95.803 +G01 X+18.921 Y-6.989 C94.739 +G01 X+19.104 Y-6.972 Z-2.437 B16.815 C93.914 +G01 X+19.343 Y-6.961 Z-2.435 B16.809 C92.875 +G01 X+19.582 Y-6.951 C91.836 +G01 X+19.776 Y-6.943 Z-2.437 B16.815 C90.962 +G01 X+20.01 Y-6.945 Z-2.435 B16.809 C89.948 +G01 X+20.243 Y-6.947 C88.933 +G01 X+20.448 Y-6.949 Z-2.437 B16.815 C88.01 +G01 X+20.904 Y-6.976 Z-2.435 B16.809 C86.029 +G01 X+21.138 Y-6.991 Z-2.436 B16.814 C84.982 +G01 X+21.562 Y-7.039 Z-2.435 B16.809 C83.126 +G01 X+21.788 Y-7.064 Z-2.437 B16.815 C82.111 +G01 X+22.217 Y-7.134 Z-2.435 B16.809 C80.223 +G01 X+22.452 Y-7.173 Z-2.437 B16.815 C79.162 +G01 X+22.866 Y-7.263 Z-2.435 B16.809 C77.32 +G01 X+23.109 Y-7.316 Z-2.437 B16.814 C76.212 +G01 X+23.507 Y-7.425 Z-2.435 B16.809 C74.417 +G01 X+23.757 Y-7.493 Z-2.437 B16.814 C73.263 +G01 X+24.139 Y-7.619 Z-2.435 B16.808 C71.513 +G01 X+24.396 Y-7.703 Z-2.437 B16.814 C70.314 +G01 X+24.761 Y-7.844 Z-2.435 B16.808 C68.61 +G01 X+25.023 Y-7.946 Z-2.437 B16.814 C67.365 +G01 X+25.371 Y-8.101 Z-2.435 B16.808 C65.707 +G01 X+25.637 Y-8.22 Z-2.437 B16.814 C64.416 +G01 X+25.967 Y-8.388 Z-2.435 B16.808 C62.804 +G01 X+26.236 Y-8.526 Z-2.437 B16.814 C61.466 +G01 X+26.547 Y-8.706 Z-2.435 B16.808 C59.901 +G01 X+26.819 Y-8.862 Z-2.437 B16.814 C58.517 +G01 X+27.101 Y-9.045 Z-2.435 B16.809 C57.042 +G01 X+27.383 Y-9.228 Z-2.437 B16.814 C55.568 +G01 X+27.615 Y-9.396 Z-2.435 B16.809 C54.306 +G01 X+27.846 Y-9.564 Z-2.436 B16.812 C53.044 +G01 X+27.928 Y-9.623 Z-2.437 B16.814 C52.626 +G01 X+28.146 Y-9.798 Z-2.435 B16.809 C51.384 +G01 X+28.365 Y-9.975 Z-2.436 B16.812 C50.14 +G01 X+28.451 Y-10.044 Z-2.437 B16.814 C49.674 +G01 X+28.702 Y-10.268 Z-2.435 C48.198 +G01 X+28.953 Y-10.493 Z-2.437 C46.722 +G01 X+29.169 Y-10.707 Z-2.435 B16.808 C45.385 +G01 X+29.43 Y-10.966 Z-2.437 B16.814 C43.77 +G01 X+29.628 Y-11.183 Z-2.435 B16.808 C42.481 +G01 X+29.883 Y-11.464 Z-2.437 B16.814 C40.817 +G01 X+30.062 Y-11.682 Z-2.435 B16.808 C39.578 +G01 X+30.309 Y-11.984 Z-2.437 B16.814 C37.865 +G01 X+30.471 Y-12.203 Z-2.435 B16.808 C36.675 +G01 X+30.708 Y-12.525 Z-2.437 B16.814 C34.913 +G01 X+30.894 Y-12.805 Z-2.435 B16.809 C33.437 +G01 X+31.079 Y-13.086 Z-2.437 B16.815 C31.961 +G01 X+31.202 Y-13.295 Z-2.435 B16.81 C30.888 +G01 X+31.325 Y-13.505 Z-2.436 C29.816 +G01 X+31.42 Y-13.666 Z-2.437 B16.815 C29.008 +G01 X+31.53 Y-13.876 Z-2.435 B16.81 C27.961 +G01 X+31.64 Y-14.087 C26.913 +G01 X+31.731 Y-14.262 Z-2.437 B16.815 C26.056 +G01 X+31.828 Y-14.473 Z-2.435 B16.81 C25.033 +G01 X+31.924 Y-14.684 C24.009 +G01 X+32.011 Y-14.873 Z-2.437 B16.815 C23.104 +G01 X+32.095 Y-15.084 Z-2.435 B16.81 C22.105 +G01 X+32.178 Y-15.295 C21.106 +G01 X+32.259 Y-15.498 Z-2.437 B16.815 C20.152 +G01 X+32.345 Y-15.753 Z-2.435 B16.809 C18.978 +G01 X+32.431 Y-16.008 Z-2.436 B16.81 C17.804 +G01 X+32.474 Y-16.136 Z-2.437 B16.815 C17.199 +G01 X+32.546 Y-16.389 Z-2.435 B16.809 C16.05 +G01 X+32.617 Y-16.643 Z-2.436 B16.81 C14.901 +G01 X+32.657 Y-16.783 Z-2.437 B16.815 C14.247 +G01 X+32.714 Y-17.034 Z-2.435 B16.809 C13.122 +G01 X+32.771 Y-17.286 Z-2.436 B16.81 C11.997 +G01 X+32.805 Y-17.439 Z-2.437 B16.815 C11.295 +G01 X+32.849 Y-17.687 Z-2.435 B16.809 C10.195 +G01 X+32.892 Y-17.936 Z-2.436 B16.81 C9.094 +G01 X+32.92 Y-18.101 Z-2.437 B16.815 C8.343 +G01 X+32.95 Y-18.347 Z-2.435 B16.809 C7.267 +G01 X+32.98 Y-18.592 Z-2.436 C6.191 +G01 X+33.001 Y-18.769 Z-2.437 B16.815 C5.39 +G01 X+33.018 Y-19.01 Z-2.435 B16.809 C4.339 +G01 X+33.034 Y-19.251 C3.288 +G01 X+33.047 Y-19.44 Z-2.437 B16.815 C2.438 +G01 X+33.051 Y-19.676 Z-2.435 B16.809 C1.411 +G01 X+33.055 Y-19.912 C0.384 +G01 X+33.059 Y-20.112 Z-2.437 B16.815 C359.486 +G01 X+33.051 Y-20.343 Z-2.435 B16.809 C358.484 +G01 X+33.043 Y-20.574 C357.481 +G01 X+33.036 Y-20.784 Z-2.437 B16.815 C356.535 +G01 X+32.997 Y-21.234 Z-2.435 B16.809 C354.578 +G01 X+32.978 Y-21.454 Z-2.437 B16.815 C353.585 +G01 X+32.918 Y-21.89 Z-2.435 B16.809 C351.675 +G01 X+32.885 Y-22.122 Z-2.437 B16.815 C350.628 +G01 X+32.805 Y-22.542 Z-2.435 B16.809 C348.772 +G01 X+32.76 Y-22.781 Z-2.437 B16.815 C347.687 +G01 X+32.66 Y-23.187 Z-2.435 B16.809 C345.868 +G01 X+32.599 Y-23.434 Z-2.437 B16.814 C344.738 +G01 X+32.482 Y-23.824 Z-2.435 B16.809 C342.965 +G01 X+32.406 Y-24.078 Z-2.437 B16.814 C341.789 +G01 X+32.272 Y-24.452 Z-2.435 B16.808 C340.062 +G01 X+32.18 Y-24.711 Z-2.437 B16.814 C338.839 +G01 X+32.031 Y-25.068 Z-2.435 B16.808 C337.159 +G01 X+31.921 Y-25.332 Z-2.437 B16.814 C335.89 +G01 X+31.759 Y-25.67 Z-2.435 B16.808 C334.255 +G01 X+31.631 Y-25.939 Z-2.437 B16.814 C332.941 +G01 X+31.457 Y-26.259 Z-2.435 B16.808 C331.352 +G01 X+31.309 Y-26.53 Z-2.437 B16.814 C329.992 +G01 X+31.125 Y-26.831 Z-2.435 B16.808 C328.449 +G01 X+30.958 Y-27.103 Z-2.437 B16.814 C327.042 +G01 X+30.795 Y-27.341 Z-2.435 B16.809 C325.769 +G01 X+30.632 Y-27.58 Z-2.436 B16.812 C324.496 +G01 X+30.578 Y-27.658 Z-2.437 B16.814 C324.094 +G01 X+30.406 Y-27.884 Z-2.435 B16.809 C322.843 +G01 X+30.234 Y-28.108 Z-2.436 B16.812 C321.592 +G01 X+30.17 Y-28.192 Z-2.437 B16.814 C321.15 +G01 X+29.953 Y-28.449 Z-2.435 C319.674 +G01 X+29.735 Y-28.705 Z-2.437 C318.198 +G01 X+29.522 Y-28.931 Z-2.435 B16.808 C316.836 +G01 X+29.274 Y-29.194 Z-2.437 B16.814 C315.246 +G01 X+29.058 Y-29.401 Z-2.435 B16.808 C313.933 +G01 X+28.788 Y-29.66 Z-2.437 B16.814 C312.294 +G01 X+28.57 Y-29.848 Z-2.435 B16.808 C311.03 +G01 X+28.279 Y-30.099 Z-2.437 B16.814 C309.341 +G01 X+28.06 Y-30.27 Z-2.435 B16.808 C308.126 +G01 X+27.748 Y-30.512 Z-2.437 B16.814 C306.389 +G01 X+27.542 Y-30.656 Z-2.435 B16.81 C305.28 +G01 X+27.337 Y-30.799 Z-2.436 B16.811 C304.171 +G01 X+27.197 Y-30.897 Z-2.437 B16.814 C303.437 +G01 X+26.989 Y-31.027 Z-2.435 B16.81 C302.352 +G01 X+26.78 Y-31.157 Z-2.436 B16.811 C301.268 +G01 X+26.626 Y-31.253 Z-2.437 B16.815 C300.484 +G01 X+26.416 Y-31.37 Z-2.435 B16.81 C299.424 +G01 X+26.206 Y-31.486 C298.364 +G01 X+26.038 Y-31.579 Z-2.437 B16.815 C297.532 +G01 X+25.827 Y-31.683 Z-2.435 B16.81 C296.497 +G01 X+25.616 Y-31.786 C295.461 +G01 X+25.434 Y-31.875 Z-2.437 B16.815 C294.58 +G01 X+25.223 Y-31.965 Z-2.435 B16.81 C293.569 +G01 X+25.012 Y-32.055 C292.557 +G01 X+24.816 Y-32.139 Z-2.437 B16.815 C291.628 +G01 X+24.561 Y-32.233 Z-2.435 B16.809 C290.442 +G01 X+24.306 Y-32.326 Z-2.436 B16.81 C289.255 +G01 X+24.184 Y-32.371 Z-2.437 B16.815 C288.675 +G01 X+23.93 Y-32.449 Z-2.435 B16.809 C287.514 +G01 X+23.676 Y-32.528 Z-2.436 B16.81 C286.352 +G01 X+23.542 Y-32.57 Z-2.437 B16.815 C285.723 +G01 X+23.289 Y-32.634 Z-2.435 B16.809 C284.586 +G01 X+23.037 Y-32.698 Z-2.436 B16.81 C283.449 +G01 X+22.89 Y-32.735 Z-2.437 B16.815 C282.771 +G01 X+22.64 Y-32.785 Z-2.435 B16.809 C281.658 +G01 X+22.389 Y-32.835 Z-2.436 B16.81 C280.546 +G01 X+22.231 Y-32.867 Z-2.437 B16.815 C279.819 +G01 X+21.984 Y-32.904 Z-2.435 B16.809 C278.731 +G01 X+21.736 Y-32.94 Z-2.436 B16.81 C277.643 +G01 X+21.565 Y-32.965 Z-2.437 B16.815 C276.867 +G01 X+21.322 Y-32.988 Z-2.435 B16.809 C275.803 +G01 X+21.079 Y-33.011 C274.739 +G01 X+20.896 Y-33.028 Z-2.437 B16.815 C273.914 +G01 X+20.657 Y-33.039 Z-2.435 B16.809 C272.875 +G01 X+20.418 Y-33.049 C271.836 +G01 X+20.224 Y-33.057 Z-2.437 B16.815 C270.962 +G01 X+19.99 Y-33.055 Z-2.435 B16.809 C269.948 +G01 X+19.757 Y-33.053 C268.933 +G01 X+19.552 Y-33.051 Z-2.437 B16.815 C268.01 +G01 X+19.096 Y-33.024 Z-2.435 B16.809 C266.029 +G01 X+18.862 Y-33.009 Z-2.436 B16.814 C264.982 +G01 X+18.438 Y-32.961 Z-2.435 B16.809 C263.126 +G01 X+18.212 Y-32.936 Z-2.437 B16.815 C262.111 +G01 X+17.783 Y-32.865 Z-2.435 B16.809 C260.223 +G01 X+17.548 Y-32.827 Z-2.437 B16.815 C259.162 +G01 X+17.134 Y-32.737 Z-2.435 B16.809 C257.32 +G01 X+16.891 Y-32.684 Z-2.437 B16.814 C256.212 +G01 X+16.493 Y-32.575 Z-2.435 B16.809 C254.417 +G01 X+16.243 Y-32.507 Z-2.437 B16.814 C253.263 +G01 X+15.861 Y-32.381 Z-2.435 B16.808 C251.513 +G01 X+15.604 Y-32.297 Z-2.437 B16.814 C250.314 +G01 X+15.239 Y-32.156 Z-2.435 B16.808 C248.61 +G01 X+14.977 Y-32.054 Z-2.437 B16.814 C247.365 +G01 X+14.669 Y-31.917 Z-2.435 B16.809 C245.89 +G01 X+14.363 Y-31.78 Z-2.437 B16.814 C244.416 +G01 X+14.033 Y-31.611 Z-2.435 B16.808 C242.804 +G01 X+13.736 Y-31.46 Z-2.437 B16.815 C241.352 +G01 X+13.458 Y-31.298 Z-2.436 B16.809 C239.93 +G01 X+13.18 Y-31.136 Z-2.437 B16.814 C238.508 +G01 X+12.936 Y-30.979 Z-2.435 B16.809 C237.228 +G01 X+12.692 Y-30.821 Z-2.436 B16.812 C235.948 +G01 X+12.617 Y-30.772 Z-2.437 B16.814 C235.568 +G01 X+12.385 Y-30.604 Z-2.435 B16.809 C234.306 +G01 X+12.154 Y-30.436 Z-2.436 B16.812 C233.044 +G01 X+12.072 Y-30.377 Z-2.437 B16.814 C232.627 +G01 X+11.854 Y-30.201 Z-2.435 B16.809 C231.384 +G01 X+11.635 Y-30.025 Z-2.436 B16.812 C230.14 +G01 X+11.549 Y-29.955 Z-2.437 B16.814 C229.674 +G01 X+11.298 Y-29.732 Z-2.435 B16.809 C228.198 +G01 X+11.047 Y-29.507 Z-2.437 B16.814 C226.722 +G01 X+10.788 Y-29.25 Z-2.435 B16.809 C225.115 +G01 Y-29.117 Z-2.407 B16.685 C224.69 +G01 X+10.639 Y-28.969 Z-2.408 B16.689 C223.778 +G01 X+10.442 Y-28.753 Z-2.407 B16.683 C222.481 +G01 X+10.19 Y-28.476 Z-2.408 B16.689 C220.826 +G01 X+10.011 Y-28.257 Z-2.407 B16.683 C219.578 +G01 X+9.766 Y-27.959 Z-2.408 B16.689 C217.874 +G01 X+9.605 Y-27.741 Z-2.407 B16.683 C216.675 +G01 X+9.37 Y-27.422 Z-2.408 B16.689 C214.922 +G01 X+9.186 Y-27.144 Z-2.407 B16.684 C213.446 +G01 X+9.002 Y-26.865 Z-2.408 B16.689 C211.97 +G01 X+8.855 Y-26.616 Z-2.407 B16.683 C210.693 +G01 X+8.709 Y-26.367 B16.686 C209.417 +G01 X+8.663 Y-26.29 Z-2.408 B16.689 C209.018 +G01 X+8.532 Y-26.038 Z-2.407 B16.684 C207.766 +G01 X+8.401 Y-25.786 B16.685 C206.513 +G01 X+8.355 Y-25.698 Z-2.408 B16.689 C206.066 +G01 X+8.239 Y-25.445 Z-2.407 B16.684 C204.838 +G01 X+8.123 Y-25.191 B16.685 C203.61 +G01 X+8.077 Y-25.091 Z-2.408 B16.689 C203.114 +G01 X+7.976 Y-24.837 Z-2.407 B16.684 C201.911 +G01 X+7.875 Y-24.583 B16.685 C200.707 +G01 X+7.831 Y-24.47 Z-2.408 B16.689 C200.163 +G01 X+7.745 Y-24.217 Z-2.407 B16.684 C198.983 +G01 X+7.659 Y-23.963 B16.685 C197.804 +G01 X+7.617 Y-23.838 Z-2.408 B16.689 C197.211 +G01 X+7.545 Y-23.585 Z-2.407 B16.684 C196.056 +G01 X+7.474 Y-23.333 B16.685 C194.901 +G01 X+7.435 Y-23.195 Z-2.408 B16.689 C194.259 +G01 X+7.378 Y-22.945 Z-2.407 B16.684 C193.128 +G01 X+7.322 Y-22.694 C191.997 +G01 X+7.288 Y-22.544 Z-2.408 B16.689 C191.307 +G01 X+7.244 Y-22.296 Z-2.407 B16.684 C190.201 +G01 X+7.202 Y-22.049 C189.094 +G01 X+7.173 Y-21.886 Z-2.408 B16.689 C188.355 +G01 X+7.144 Y-21.642 Z-2.407 B16.684 C187.273 +G01 X+7.114 Y-21.398 C186.191 +G01 X+7.093 Y-21.224 Z-2.408 B16.689 C185.403 +G01 X+7.077 Y-20.983 Z-2.407 B16.684 C184.346 +G01 X+7.06 Y-20.743 C183.288 +G01 X+7.048 Y-20.558 Z-2.408 B16.689 C182.451 +G01 X+7.043 Y-20.322 Z-2.407 B16.684 C181.418 +G01 X+7.039 Y-20.087 C180.384 +G01 X+7.036 Y-19.89 Z-2.408 B16.689 C179.499 +G01 X+7.044 Y-19.66 Z-2.407 B16.684 C178.49 +G01 X+7.052 Y-19.43 B16.683 C177.481 +G01 X+7.059 Y-19.223 Z-2.408 B16.689 C176.547 +G01 X+7.097 Y-18.775 Z-2.407 B16.683 C174.578 +G01 X+7.116 Y-18.558 Z-2.408 B16.689 C173.596 +G01 X+7.176 Y-18.123 Z-2.407 B16.683 C171.675 +G01 X+7.207 Y-17.896 Z-2.408 B16.689 C170.644 +G01 X+7.288 Y-17.476 Z-2.407 B16.683 C168.771 +G01 X+7.333 Y-17.241 Z-2.408 B16.689 C167.692 +G01 X+7.432 Y-16.836 Z-2.407 B16.683 C165.868 +G01 X+7.491 Y-16.592 Z-2.408 B16.689 C164.742 +G01 X+7.608 Y-16.203 Z-2.407 B16.683 C162.965 +G01 X+7.683 Y-15.953 Z-2.408 B16.689 C161.793 +G01 X+7.817 Y-15.58 Z-2.407 B16.683 C160.062 +G01 X+7.908 Y-15.324 Z-2.408 B16.689 C158.844 +G01 X+8.056 Y-14.969 Z-2.407 B16.683 C157.159 +G01 X+8.165 Y-14.708 Z-2.408 B16.689 C155.895 +G01 X+8.326 Y-14.371 Z-2.407 B16.683 C154.255 +G01 X+8.453 Y-14.106 Z-2.408 B16.688 C152.946 +G01 X+8.626 Y-13.786 Z-2.407 B16.683 C151.352 +G01 X+8.772 Y-13.519 Z-2.408 B16.688 C149.998 +G01 X+8.956 Y-13.218 Z-2.407 B16.683 C148.449 +G01 X+9.12 Y-12.95 Z-2.408 B16.688 C147.049 +G01 X+9.309 Y-12.674 Z-2.407 C145.574 +G01 X+9.498 Y-12.399 Z-2.408 C144.1 +G01 X+9.7 Y-12.133 Z-2.407 B16.683 C142.629 +G01 X+9.903 Y-11.868 Z-2.408 B16.688 C141.157 +G01 X+10.119 Y-11.613 Z-2.407 B16.683 C139.682 +G01 X+10.335 Y-11.359 Z-2.408 B16.688 C138.206 +G01 X+10.547 Y-11.134 Z-2.407 B16.683 C136.836 +G01 X+10.793 Y-10.873 Z-2.408 B16.688 C135.254 +G01 X+11.008 Y-10.667 Z-2.407 B16.683 C133.933 +G01 X+11.275 Y-10.411 Z-2.408 B16.688 C132.302 +G01 X+11.492 Y-10.223 Z-2.407 B16.683 C131.03 +G01 X+11.78 Y-9.975 Z-2.408 B16.689 C129.35 +G01 X+11.998 Y-9.805 Z-2.407 B16.683 C128.126 +G01 X+12.307 Y-9.565 Z-2.408 B16.689 C126.398 +G01 X+12.58 Y-9.373 Z-2.407 B16.684 C124.922 +G01 X+12.854 Y-9.183 Z-2.408 B16.689 C123.446 +G01 X+13.102 Y-9.028 Z-2.407 B16.683 C122.157 +G01 X+13.349 Y-8.874 B16.686 C120.868 +G01 X+13.42 Y-8.829 Z-2.408 B16.689 C120.494 +G01 X+13.671 Y-8.69 Z-2.407 B16.684 C119.23 +G01 X+13.922 Y-8.551 B16.686 C117.965 +G01 X+14.004 Y-8.505 Z-2.408 B16.689 C117.542 +G01 X+14.257 Y-8.381 Z-2.407 B16.684 C116.302 +G01 X+14.509 Y-8.258 B16.685 C115.062 +G01 X+14.604 Y-8.212 Z-2.408 B16.689 C114.591 +G01 X+14.857 Y-8.103 Z-2.407 B16.684 C113.375 +G01 X+15.111 Y-7.995 B16.685 C112.159 +G01 X+15.218 Y-7.95 Z-2.408 B16.689 C111.638 +G01 X+15.472 Y-7.856 Z-2.407 B16.684 C110.447 +G01 X+15.725 Y-7.763 B16.685 C109.255 +G01 X+15.845 Y-7.719 Z-2.408 B16.689 C108.687 +G01 X+16.098 Y-7.641 Z-2.407 B16.684 C107.52 +G01 X+16.351 Y-7.563 B16.685 C106.352 +G01 X+16.482 Y-7.522 Z-2.408 B16.689 C105.735 +G01 X+16.734 Y-7.458 Z-2.407 B16.684 C104.592 +G01 X+16.985 Y-7.394 C103.449 +G01 X+17.129 Y-7.357 Z-2.408 B16.689 C102.783 +G01 X+17.379 Y-7.307 Z-2.407 B16.684 C101.664 +G01 X+17.628 Y-7.258 C100.546 +G01 X+17.784 Y-7.226 Z-2.408 B16.689 C99.831 +G01 X+18.03 Y-7.19 Z-2.407 B16.684 C98.737 +G01 X+18.276 Y-7.154 C97.643 +G01 X+18.444 Y-7.129 Z-2.408 B16.689 C96.879 +G01 X+18.687 Y-7.106 Z-2.407 B16.684 C95.809 +G01 X+18.929 Y-7.083 C94.739 +G01 X+19.109 Y-7.066 Z-2.408 B16.689 C93.927 +G01 X+19.347 Y-7.056 Z-2.407 B16.684 C92.882 +G01 X+19.585 Y-7.046 C91.836 +G01 X+19.776 Y-7.037 Z-2.408 B16.689 C90.975 +G01 X+20.009 Y-7.039 Z-2.407 B16.684 C89.954 +G01 X+20.241 Y-7.041 C88.933 +G01 X+20.444 Y-7.043 Z-2.408 B16.689 C88.023 +G01 X+20.897 Y-7.07 Z-2.407 B16.683 C86.03 +G01 X+21.11 Y-7.083 Z-2.408 B16.689 C85.071 +G01 X+21.551 Y-7.132 Z-2.407 B16.683 C83.126 +G01 X+21.774 Y-7.157 Z-2.408 B16.689 C82.12 +G01 X+22.201 Y-7.228 Z-2.407 B16.683 C80.223 +G01 X+22.432 Y-7.266 Z-2.408 B16.689 C79.168 +G01 X+22.845 Y-7.356 Z-2.407 B16.683 C77.32 +G01 X+23.085 Y-7.408 Z-2.408 B16.689 C76.216 +G01 X+23.482 Y-7.516 Z-2.407 B16.683 C74.417 +G01 X+23.729 Y-7.583 Z-2.408 B16.689 C73.268 +G01 X+24.11 Y-7.708 Z-2.407 B16.683 C71.513 +G01 X+24.363 Y-7.792 Z-2.408 B16.689 C70.319 +G01 X+24.727 Y-7.932 Z-2.407 B16.683 C68.61 +G01 X+24.986 Y-8.032 Z-2.408 B16.689 C67.37 +G01 X+25.332 Y-8.187 Z-2.407 B16.683 C65.707 +G01 X+25.595 Y-8.305 Z-2.408 B16.688 C64.421 +G01 X+25.923 Y-8.473 Z-2.407 B16.683 C62.804 +G01 X+26.19 Y-8.609 Z-2.408 B16.688 C61.472 +G01 X+26.5 Y-8.787 Z-2.407 B16.683 C59.901 +G01 X+26.784 Y-8.952 Z-2.408 B16.687 C58.449 +G01 X+27.056 Y-9.129 Z-2.407 B16.683 C57.012 +G01 X+27.328 Y-9.305 Z-2.408 B16.688 C55.574 +G01 X+27.599 Y-9.501 Z-2.407 C54.104 +G01 X+27.869 Y-9.697 Z-2.408 C52.634 +G01 X+28.129 Y-9.906 Z-2.407 B16.683 C51.158 +G01 X+28.389 Y-10.116 Z-2.408 B16.688 C49.682 +G01 X+28.638 Y-10.338 Z-2.407 B16.683 C48.206 +G01 X+28.887 Y-10.56 Z-2.408 B16.688 C46.73 +G01 X+29.103 Y-10.774 Z-2.407 B16.683 C45.384 +G01 X+29.361 Y-11.03 Z-2.408 B16.688 C43.778 +G01 X+29.558 Y-11.247 Z-2.407 B16.683 C42.481 +G01 X+29.81 Y-11.524 Z-2.408 B16.689 C40.826 +G01 X+29.989 Y-11.743 Z-2.407 B16.683 C39.578 +G01 X+30.234 Y-12.041 Z-2.408 B16.689 C37.874 +G01 X+30.395 Y-12.259 Z-2.407 B16.683 C36.675 +G01 X+30.63 Y-12.578 Z-2.408 B16.689 C34.922 +G01 X+30.814 Y-12.856 Z-2.407 B16.684 C33.446 +G01 X+30.998 Y-13.135 Z-2.408 B16.689 C31.97 +G01 X+31.145 Y-13.384 Z-2.407 B16.683 C30.693 +G01 X+31.291 Y-13.633 B16.686 C29.417 +G01 X+31.337 Y-13.71 Z-2.408 B16.689 C29.018 +G01 X+31.468 Y-13.962 Z-2.407 B16.684 C27.766 +G01 X+31.599 Y-14.213 B16.685 C26.513 +G01 X+31.645 Y-14.302 Z-2.408 B16.689 C26.066 +G01 X+31.761 Y-14.555 Z-2.407 B16.684 C24.838 +G01 X+31.877 Y-14.808 B16.685 C23.61 +G01 X+31.923 Y-14.909 Z-2.408 B16.689 C23.114 +G01 X+32.024 Y-15.163 Z-2.407 B16.684 C21.911 +G01 X+32.125 Y-15.417 B16.685 C20.707 +G01 X+32.169 Y-15.53 Z-2.408 B16.689 C20.163 +G01 X+32.255 Y-15.783 Z-2.407 B16.684 C18.983 +G01 X+32.341 Y-16.037 B16.685 C17.804 +G01 X+32.383 Y-16.162 Z-2.408 B16.689 C17.211 +G01 X+32.455 Y-16.414 Z-2.407 B16.684 C16.056 +G01 X+32.526 Y-16.667 B16.685 C14.901 +G01 X+32.565 Y-16.805 Z-2.408 B16.689 C14.259 +G01 X+32.622 Y-17.055 Z-2.407 B16.684 C13.128 +G01 X+32.678 Y-17.306 C11.997 +G01 X+32.712 Y-17.456 Z-2.408 B16.689 C11.307 +G01 X+32.756 Y-17.703 Z-2.407 B16.684 C10.201 +G01 X+32.798 Y-17.951 C9.094 +G01 X+32.827 Y-18.113 Z-2.408 B16.689 C8.355 +G01 X+32.856 Y-18.358 Z-2.407 B16.684 C7.273 +G01 X+32.886 Y-18.602 C6.191 +G01 X+32.907 Y-18.776 Z-2.408 B16.689 C5.403 +G01 X+32.923 Y-19.016 Z-2.407 B16.684 C4.346 +G01 X+32.94 Y-19.257 C3.288 +G01 X+32.953 Y-19.442 Z-2.408 B16.689 C2.451 +G01 X+32.957 Y-19.678 Z-2.407 B16.684 C1.418 +G01 X+32.961 Y-19.913 C0.384 +G01 X+32.964 Y-20.11 Z-2.408 B16.689 C359.499 +G01 X+32.956 Y-20.34 Z-2.407 B16.684 C358.49 +G01 X+32.948 Y-20.57 B16.683 C357.481 +G01 X+32.941 Y-20.777 Z-2.408 B16.689 C356.547 +G01 X+32.903 Y-21.225 Z-2.407 B16.683 C354.578 +G01 X+32.884 Y-21.442 Z-2.408 B16.689 C353.596 +G01 X+32.824 Y-21.877 Z-2.407 B16.683 C351.675 +G01 X+32.793 Y-22.104 Z-2.408 B16.689 C350.644 +G01 X+32.712 Y-22.524 Z-2.407 B16.683 C348.771 +G01 X+32.667 Y-22.759 Z-2.408 B16.689 C347.692 +G01 X+32.568 Y-23.164 Z-2.407 B16.683 C345.868 +G01 X+32.509 Y-23.408 Z-2.408 B16.689 C344.742 +G01 X+32.392 Y-23.797 Z-2.407 B16.683 C342.965 +G01 X+32.317 Y-24.047 Z-2.408 B16.689 C341.793 +G01 X+32.183 Y-24.419 Z-2.407 B16.683 C340.062 +G01 X+32.092 Y-24.676 Z-2.408 B16.689 C338.844 +G01 X+31.944 Y-25.031 Z-2.407 B16.683 C337.159 +G01 X+31.835 Y-25.292 Z-2.408 B16.689 C335.895 +G01 X+31.674 Y-25.629 Z-2.407 B16.683 C334.255 +G01 X+31.547 Y-25.894 Z-2.408 B16.688 C332.946 +G01 X+31.374 Y-26.213 Z-2.407 B16.683 C331.352 +G01 X+31.228 Y-26.481 Z-2.408 B16.688 C329.998 +G01 X+31.044 Y-26.781 Z-2.407 B16.683 C328.449 +G01 X+30.88 Y-27.05 Z-2.408 B16.688 C327.049 +G01 X+30.691 Y-27.326 Z-2.407 C325.574 +G01 X+30.502 Y-27.601 Z-2.408 C324.1 +G01 X+30.3 Y-27.867 Z-2.407 B16.683 C322.629 +G01 X+30.097 Y-28.132 Z-2.408 B16.688 C321.157 +G01 X+29.881 Y-28.386 Z-2.407 B16.683 C319.682 +G01 X+29.665 Y-28.641 Z-2.408 B16.688 C318.206 +G01 X+29.453 Y-28.866 Z-2.407 B16.683 C316.836 +G01 X+29.208 Y-29.127 Z-2.408 B16.688 C315.254 +G01 X+28.992 Y-29.333 Z-2.407 B16.683 C313.933 +G01 X+28.725 Y-29.589 Z-2.408 B16.688 C312.302 +G01 X+28.508 Y-29.777 Z-2.407 B16.683 C311.03 +G01 X+28.22 Y-30.025 Z-2.408 B16.689 C309.35 +G01 X+28.002 Y-30.195 Z-2.407 B16.683 C308.126 +G01 X+27.693 Y-30.435 Z-2.408 B16.689 C306.398 +G01 X+27.42 Y-30.626 Z-2.407 B16.684 C304.922 +G01 X+27.146 Y-30.817 Z-2.408 B16.689 C303.446 +G01 X+26.898 Y-30.972 Z-2.407 B16.683 C302.157 +G01 X+26.651 Y-31.126 B16.686 C300.868 +G01 X+26.58 Y-31.171 Z-2.408 B16.689 C300.494 +G01 X+26.329 Y-31.31 Z-2.407 B16.684 C299.23 +G01 X+26.078 Y-31.449 B16.686 C297.965 +G01 X+25.996 Y-31.495 Z-2.408 B16.689 C297.542 +G01 X+25.743 Y-31.618 Z-2.407 B16.684 C296.302 +G01 X+25.491 Y-31.742 B16.685 C295.062 +G01 X+25.396 Y-31.788 Z-2.408 B16.689 C294.591 +G01 X+25.143 Y-31.897 Z-2.407 B16.684 C293.375 +G01 X+24.889 Y-32.005 B16.685 C292.159 +G01 X+24.782 Y-32.05 Z-2.408 B16.689 C291.638 +G01 X+24.528 Y-32.144 Z-2.407 B16.684 C290.447 +G01 X+24.275 Y-32.237 B16.685 C289.255 +G01 X+24.155 Y-32.28 Z-2.408 B16.689 C288.687 +G01 X+23.902 Y-32.359 Z-2.407 B16.684 C287.52 +G01 X+23.649 Y-32.437 B16.685 C286.352 +G01 X+23.518 Y-32.478 Z-2.408 B16.689 C285.735 +G01 X+23.266 Y-32.542 Z-2.407 B16.684 C284.592 +G01 X+23.015 Y-32.606 C283.449 +G01 X+22.871 Y-32.643 Z-2.408 B16.689 C282.783 +G01 X+22.622 Y-32.693 Z-2.407 B16.684 C281.664 +G01 X+22.372 Y-32.742 C280.546 +G01 X+22.216 Y-32.774 Z-2.408 B16.689 C279.831 +G01 X+21.97 Y-32.81 Z-2.407 B16.684 C278.737 +G01 X+21.724 Y-32.846 C277.643 +G01 X+21.556 Y-32.871 Z-2.408 B16.689 C276.879 +G01 X+21.313 Y-32.894 Z-2.407 B16.684 C275.809 +G01 X+21.071 Y-32.917 C274.739 +G01 X+20.891 Y-32.934 Z-2.408 B16.689 C273.927 +G01 X+20.653 Y-32.944 Z-2.407 B16.684 C272.882 +G01 X+20.415 Y-32.954 C271.836 +G01 X+20.224 Y-32.962 Z-2.408 B16.689 C270.975 +G01 X+19.991 Y-32.961 Z-2.407 B16.684 C269.954 +G01 X+19.759 Y-32.959 C268.933 +G01 X+19.556 Y-32.957 Z-2.408 B16.689 C268.023 +G01 X+19.103 Y-32.93 Z-2.407 B16.683 C266.03 +G01 X+18.89 Y-32.917 Z-2.408 B16.689 C265.071 +G01 X+18.449 Y-32.867 Z-2.407 B16.683 C263.126 +G01 X+18.226 Y-32.843 Z-2.408 B16.689 C262.12 +G01 X+17.799 Y-32.772 Z-2.407 B16.683 C260.223 +G01 X+17.568 Y-32.734 Z-2.408 B16.689 C259.168 +G01 X+17.155 Y-32.644 Z-2.407 B16.683 C257.32 +G01 X+16.915 Y-32.592 Z-2.408 B16.689 C256.216 +G01 X+16.518 Y-32.484 Z-2.407 B16.683 C254.417 +G01 X+16.271 Y-32.417 Z-2.408 B16.689 C253.267 +G01 X+15.891 Y-32.291 Z-2.407 B16.683 C251.513 +G01 X+15.637 Y-32.208 Z-2.408 B16.689 C250.319 +G01 X+15.273 Y-32.068 Z-2.407 B16.683 C248.61 +G01 X+15.014 Y-31.967 Z-2.408 B16.689 C247.37 +G01 X+14.709 Y-31.831 Z-2.407 B16.683 C245.895 +G01 X+14.405 Y-31.695 Z-2.408 B16.688 C244.421 +G01 X+14.077 Y-31.527 Z-2.407 B16.683 C242.804 +G01 X+13.782 Y-31.377 Z-2.408 B16.689 C241.352 +G01 X+13.524 Y-31.227 Z-2.407 B16.684 C240.021 +G01 X+13.266 Y-31.077 Z-2.408 B16.688 C238.689 +G01 X+13.216 Y-31.048 C238.449 +G01 X+12.944 Y-30.871 Z-2.407 B16.683 C237.012 +G01 X+12.672 Y-30.695 Z-2.408 B16.688 C235.574 +G01 X+12.401 Y-30.499 Z-2.407 B16.683 C234.104 +G01 X+12.131 Y-30.303 Z-2.408 B16.688 C232.633 +G01 X+11.871 Y-30.094 Z-2.407 B16.683 C231.158 +G01 X+11.611 Y-29.884 Z-2.408 B16.689 C229.682 +G01 X+11.362 Y-29.662 Z-2.407 B16.683 C228.206 +G01 X+11.113 Y-29.439 Z-2.408 B16.688 C226.73 +G01 X+10.855 Y-29.183 Z-2.407 B16.684 C225.117 +G01 X+10.854 Y-29.05 Z-2.379 B16.559 C224.692 +G01 X+10.709 Y-28.905 Z-2.38 B16.563 C223.786 +G01 X+10.512 Y-28.689 Z-2.378 B16.557 C222.481 +G01 X+10.262 Y-28.415 Z-2.38 B16.563 C220.834 +G01 X+10.084 Y-28.197 Z-2.378 B16.557 C219.578 +G01 X+9.842 Y-27.902 Z-2.38 B16.563 C217.883 +G01 X+9.681 Y-27.684 Z-2.378 B16.557 C216.675 +G01 X+9.449 Y-27.369 Z-2.38 B16.563 C214.931 +G01 X+9.266 Y-27.093 Z-2.378 B16.558 C213.456 +G01 X+9.083 Y-26.816 Z-2.38 B16.563 C211.98 +G01 X+8.937 Y-26.568 Z-2.378 B16.558 C210.698 +G01 X+8.791 Y-26.32 Z-2.379 B16.56 C209.417 +G01 X+8.747 Y-26.245 Z-2.38 B16.564 C209.028 +G01 X+8.616 Y-25.995 Z-2.378 B16.558 C207.771 +G01 X+8.486 Y-25.744 Z-2.379 B16.56 C206.513 +G01 X+8.44 Y-25.658 Z-2.38 B16.564 C206.076 +G01 X+8.325 Y-25.406 Z-2.378 B16.558 C204.844 +G01 X+8.21 Y-25.153 Z-2.379 B16.56 C203.61 +G01 X+8.165 Y-25.055 Z-2.38 B16.564 C203.125 +G01 X+8.064 Y-24.802 Z-2.378 B16.558 C201.916 +G01 X+7.964 Y-24.55 Z-2.379 B16.56 C200.707 +G01 X+7.92 Y-24.439 Z-2.38 B16.564 C200.174 +G01 X+7.834 Y-24.187 Z-2.378 B16.558 C198.989 +G01 X+7.749 Y-23.934 Z-2.379 B16.559 C197.804 +G01 X+7.707 Y-23.811 Z-2.38 B16.564 C197.222 +G01 X+7.636 Y-23.56 Z-2.378 B16.558 C196.061 +G01 X+7.566 Y-23.309 Z-2.379 B16.559 C194.901 +G01 X+7.528 Y-23.173 Z-2.38 B16.564 C194.27 +G01 X+7.471 Y-22.924 Z-2.378 B16.558 C193.134 +G01 X+7.414 Y-22.674 Z-2.379 B16.559 C191.997 +G01 X+7.381 Y-22.527 Z-2.38 B16.564 C191.319 +G01 X+7.338 Y-22.28 Z-2.378 B16.558 C190.207 +G01 X+7.295 Y-22.034 Z-2.379 B16.559 C189.094 +G01 X+7.267 Y-21.874 Z-2.38 B16.564 C188.367 +G01 X+7.238 Y-21.631 Z-2.378 B16.558 C187.279 +G01 X+7.209 Y-21.387 Z-2.379 C186.191 +G01 X+7.188 Y-21.216 Z-2.38 B16.564 C185.416 +G01 X+7.171 Y-20.977 Z-2.378 B16.558 C184.352 +G01 X+7.155 Y-20.738 Z-2.379 C183.288 +G01 X+7.142 Y-20.555 Z-2.38 B16.564 C182.464 +G01 X+7.138 Y-20.321 Z-2.378 B16.558 C181.425 +G01 X+7.134 Y-20.086 Z-2.379 C180.384 +G01 X+7.131 Y-19.892 Z-2.38 B16.564 C179.513 +G01 X+7.138 Y-19.663 Z-2.379 B16.558 C178.497 +G01 X+7.146 Y-19.434 Z-2.378 C177.481 +G01 X+7.153 Y-19.23 Z-2.38 B16.564 C176.561 +G01 X+7.192 Y-18.784 Z-2.378 B16.558 C174.578 +G01 X+7.21 Y-18.57 Z-2.38 B16.564 C173.61 +G01 X+7.27 Y-18.137 Z-2.378 B16.558 C171.675 +G01 X+7.3 Y-17.913 Z-2.38 B16.563 C170.658 +G01 X+7.38 Y-17.495 Z-2.378 B16.558 C168.772 +G01 X+7.425 Y-17.262 Z-2.38 B16.563 C167.707 +G01 X+7.524 Y-16.859 Z-2.378 B16.558 C165.868 +G01 X+7.582 Y-16.618 Z-2.38 B16.563 C164.755 +G01 X+7.699 Y-16.231 Z-2.378 B16.557 C162.965 +G01 X+7.773 Y-15.984 Z-2.38 B16.563 C161.804 +G01 X+7.906 Y-15.613 Z-2.378 B16.557 C160.062 +G01 X+7.996 Y-15.36 Z-2.38 B16.563 C158.852 +G01 X+8.143 Y-15.006 Z-2.378 B16.557 C157.159 +G01 X+8.251 Y-14.748 Z-2.38 B16.563 C155.901 +G01 X+8.411 Y-14.412 Z-2.378 B16.557 C154.255 +G01 X+8.537 Y-14.15 Z-2.38 B16.563 C152.952 +G01 X+8.709 Y-13.832 Z-2.378 B16.557 C151.352 +G01 X+8.853 Y-13.568 Z-2.38 B16.563 C150.003 +G01 X+9.036 Y-13.268 Z-2.378 B16.557 C148.449 +G01 X+9.199 Y-13.002 Z-2.38 B16.563 C147.055 +G01 X+9.391 Y-12.721 Z-2.378 B16.557 C145.546 +G01 X+9.573 Y-12.456 Z-2.38 B16.562 C144.106 +G01 X+9.774 Y-12.193 Z-2.378 B16.557 C142.643 +G01 X+9.976 Y-11.929 Z-2.38 B16.562 C141.165 +G01 X+10.182 Y-11.685 Z-2.378 B16.557 C139.739 +G01 X+10.404 Y-11.423 Z-2.38 B16.563 C138.213 +G01 X+10.616 Y-11.199 Z-2.378 B16.557 C136.836 +G01 X+10.859 Y-10.941 Z-2.38 B16.563 C135.262 +G01 X+11.074 Y-10.735 Z-2.378 B16.557 C133.933 +G01 X+11.337 Y-10.482 Z-2.38 B16.563 C132.31 +G01 X+11.554 Y-10.295 Z-2.378 B16.557 C131.03 +G01 X+11.839 Y-10.049 Z-2.38 B16.563 C129.358 +G01 X+12.057 Y-9.879 Z-2.378 B16.557 C128.126 +G01 X+12.362 Y-9.642 Z-2.38 B16.563 C126.407 +G01 X+12.633 Y-9.452 Z-2.378 B16.558 C124.931 +G01 X+12.905 Y-9.262 Z-2.38 B16.563 C123.455 +G01 X+13.151 Y-9.108 Z-2.378 B16.558 C122.162 +G01 X+13.398 Y-8.955 Z-2.379 B16.56 C120.868 +G01 X+13.467 Y-8.911 Z-2.38 B16.564 C120.504 +G01 X+13.716 Y-8.773 Z-2.378 B16.558 C119.235 +G01 X+13.966 Y-8.635 Z-2.379 B16.56 C117.965 +G01 X+14.047 Y-8.59 Z-2.38 B16.564 C117.552 +G01 X+14.298 Y-8.467 Z-2.378 B16.558 C116.307 +G01 X+14.549 Y-8.344 Z-2.379 B16.56 C115.062 +G01 X+14.642 Y-8.299 Z-2.38 B16.564 C114.601 +G01 X+14.894 Y-8.191 Z-2.378 B16.558 C113.38 +G01 X+15.147 Y-8.083 Z-2.379 B16.56 C112.159 +G01 X+15.251 Y-8.038 Z-2.38 B16.564 C111.649 +G01 X+15.504 Y-7.945 Z-2.378 B16.558 C110.452 +G01 X+15.757 Y-7.853 Z-2.379 B16.559 C109.255 +G01 X+15.873 Y-7.81 Z-2.38 B16.564 C108.698 +G01 X+16.125 Y-7.731 Z-2.378 B16.558 C107.525 +G01 X+16.377 Y-7.653 Z-2.379 B16.559 C106.352 +G01 X+16.506 Y-7.613 Z-2.38 B16.564 C105.746 +G01 X+16.757 Y-7.549 Z-2.378 B16.558 C104.598 +G01 X+17.007 Y-7.486 Z-2.379 B16.559 C103.449 +G01 X+17.149 Y-7.45 Z-2.38 B16.564 C102.795 +G01 X+17.397 Y-7.4 Z-2.378 B16.558 C101.67 +G01 X+17.645 Y-7.351 Z-2.379 B16.559 C100.546 +G01 X+17.799 Y-7.32 Z-2.38 B16.564 C99.843 +G01 X+18.044 Y-7.284 Z-2.378 B16.558 C98.743 +G01 X+18.289 Y-7.248 Z-2.379 B16.559 C97.643 +G01 X+18.454 Y-7.223 Z-2.38 B16.564 C96.892 +G01 X+18.696 Y-7.2 Z-2.378 B16.558 C95.816 +G01 X+18.937 Y-7.177 Z-2.379 C94.739 +G01 X+19.114 Y-7.161 Z-2.38 B16.564 C93.94 +G01 X+19.351 Y-7.15 Z-2.378 B16.558 C92.888 +G01 X+19.588 Y-7.14 Z-2.379 C91.836 +G01 X+19.776 Y-7.132 Z-2.38 B16.564 C90.989 +G01 X+20.008 Y-7.134 Z-2.379 B16.558 C89.961 +G01 X+20.24 Y-7.136 C88.933 +G01 X+20.439 Y-7.138 Z-2.38 B16.564 C88.037 +G01 X+20.891 Y-7.165 Z-2.378 B16.558 C86.03 +G01 X+21.1 Y-7.177 Z-2.38 B16.564 C85.085 +G01 X+21.54 Y-7.226 Z-2.378 B16.558 C83.126 +G01 X+21.759 Y-7.251 Z-2.38 B16.564 C82.134 +G01 X+22.185 Y-7.321 Z-2.378 B16.558 C80.223 +G01 X+22.413 Y-7.358 Z-2.38 B16.563 C79.182 +G01 X+22.824 Y-7.448 Z-2.378 B16.558 C77.32 +G01 X+23.061 Y-7.499 Z-2.38 B16.563 C76.231 +G01 X+23.456 Y-7.607 Z-2.378 B16.558 C74.417 +G01 X+23.7 Y-7.673 Z-2.38 B16.563 C73.279 +G01 X+24.079 Y-7.798 Z-2.378 B16.557 C71.513 +G01 X+24.33 Y-7.88 Z-2.38 B16.563 C70.328 +G01 X+24.692 Y-8.02 Z-2.378 B16.557 C68.61 +G01 X+24.948 Y-8.119 Z-2.38 B16.563 C67.376 +G01 X+25.293 Y-8.274 Z-2.378 B16.557 C65.707 +G01 X+25.553 Y-8.39 Z-2.38 B16.563 C64.426 +G01 X+25.88 Y-8.557 Z-2.378 B16.557 C62.804 +G01 X+26.143 Y-8.691 Z-2.38 B16.563 C61.478 +G01 X+26.452 Y-8.869 Z-2.378 B16.557 C59.9 +G01 X+26.718 Y-9.023 Z-2.38 B16.563 C58.527 +G01 X+27.008 Y-9.21 Z-2.378 B16.557 C56.997 +G01 X+27.273 Y-9.383 Z-2.38 B16.563 C55.581 +G01 X+27.545 Y-9.579 Z-2.378 B16.557 C54.094 +G01 X+27.81 Y-9.771 Z-2.38 B16.562 C52.64 +G01 X+28.063 Y-9.975 Z-2.378 B16.557 C51.191 +G01 X+28.327 Y-10.187 Z-2.38 B16.563 C49.689 +G01 X+28.574 Y-10.407 Z-2.378 B16.557 C48.213 +G01 X+28.821 Y-10.628 Z-2.38 B16.563 C46.737 +G01 X+29.036 Y-10.842 Z-2.378 B16.557 C45.384 +G01 X+29.291 Y-11.095 Z-2.38 B16.563 C43.786 +G01 X+29.488 Y-11.311 Z-2.378 B16.557 C42.481 +G01 X+29.738 Y-11.585 Z-2.38 B16.563 C40.834 +G01 X+29.916 Y-11.803 Z-2.378 B16.557 C39.578 +G01 X+30.158 Y-12.097 Z-2.38 B16.563 C37.883 +G01 X+30.319 Y-12.316 Z-2.378 B16.557 C36.675 +G01 X+30.551 Y-12.631 Z-2.38 B16.563 C34.931 +G01 X+30.734 Y-12.907 Z-2.378 B16.558 C33.456 +G01 X+30.917 Y-13.184 Z-2.38 B16.563 C31.98 +G01 X+31.063 Y-13.432 Z-2.378 B16.558 C30.698 +G01 X+31.209 Y-13.68 Z-2.379 B16.56 C29.417 +G01 X+31.253 Y-13.755 Z-2.38 B16.564 C29.028 +G01 X+31.384 Y-14.005 Z-2.378 B16.558 C27.771 +G01 X+31.514 Y-14.256 Z-2.379 B16.56 C26.513 +G01 X+31.56 Y-14.342 Z-2.38 B16.564 C26.077 +G01 X+31.675 Y-14.594 Z-2.378 B16.558 C24.844 +G01 X+31.79 Y-14.846 Z-2.379 B16.56 C23.61 +G01 X+31.835 Y-14.945 Z-2.38 B16.564 C23.125 +G01 X+31.936 Y-15.197 Z-2.378 B16.558 C21.916 +G01 X+32.036 Y-15.45 Z-2.379 B16.56 C20.707 +G01 X+32.08 Y-15.561 Z-2.38 B16.564 C20.174 +G01 X+32.166 Y-15.813 Z-2.378 B16.558 C18.989 +G01 X+32.251 Y-16.066 Z-2.379 B16.559 C17.804 +G01 X+32.293 Y-16.189 Z-2.38 B16.564 C17.222 +G01 X+32.364 Y-16.44 Z-2.378 B16.558 C16.061 +G01 X+32.434 Y-16.691 Z-2.379 B16.559 C14.901 +G01 X+32.472 Y-16.826 Z-2.38 B16.564 C14.27 +G01 X+32.529 Y-17.076 Z-2.378 B16.558 C13.134 +G01 X+32.586 Y-17.325 Z-2.379 B16.559 C11.997 +G01 X+32.619 Y-17.473 Z-2.38 B16.564 C11.319 +G01 X+32.662 Y-17.719 Z-2.378 B16.558 C10.207 +G01 X+32.705 Y-17.966 Z-2.379 B16.559 C9.094 +G01 X+32.733 Y-18.126 Z-2.38 B16.564 C8.367 +G01 X+32.762 Y-18.369 Z-2.378 B16.558 C7.279 +G01 X+32.791 Y-18.612 Z-2.379 C6.191 +G01 X+32.812 Y-18.784 Z-2.38 B16.564 C5.416 +G01 X+32.829 Y-19.023 Z-2.378 B16.558 C4.352 +G01 X+32.845 Y-19.262 Z-2.379 C3.288 +G01 X+32.858 Y-19.445 Z-2.38 B16.564 C2.464 +G01 X+32.862 Y-19.679 Z-2.378 B16.558 C1.425 +G01 X+32.866 Y-19.914 Z-2.379 C0.384 +G01 X+32.869 Y-20.107 Z-2.38 B16.564 C359.513 +G01 X+32.862 Y-20.336 Z-2.379 B16.558 C358.497 +G01 X+32.854 Y-20.565 Z-2.378 C357.481 +G01 X+32.847 Y-20.77 Z-2.38 B16.564 C356.561 +G01 X+32.808 Y-21.216 Z-2.378 B16.558 C354.578 +G01 X+32.79 Y-21.43 Z-2.38 B16.564 C353.61 +G01 X+32.73 Y-21.863 Z-2.378 B16.558 C351.675 +G01 X+32.7 Y-22.087 Z-2.38 B16.563 C350.658 +G01 X+32.62 Y-22.505 Z-2.378 B16.558 C348.772 +G01 X+32.575 Y-22.738 Z-2.38 B16.563 C347.707 +G01 X+32.476 Y-23.141 Z-2.378 B16.558 C345.868 +G01 X+32.418 Y-23.381 Z-2.38 B16.563 C344.755 +G01 X+32.301 Y-23.769 Z-2.378 B16.557 C342.965 +G01 X+32.227 Y-24.016 Z-2.38 B16.563 C341.804 +G01 X+32.094 Y-24.387 Z-2.378 B16.557 C340.062 +G01 X+32.004 Y-24.64 Z-2.38 B16.563 C338.852 +G01 X+31.857 Y-24.994 Z-2.378 B16.557 C337.159 +G01 X+31.749 Y-25.252 Z-2.38 B16.563 C335.901 +G01 X+31.589 Y-25.588 Z-2.378 B16.557 C334.255 +G01 X+31.463 Y-25.85 Z-2.38 B16.563 C332.952 +G01 X+31.291 Y-26.168 Z-2.378 B16.557 C331.352 +G01 X+31.147 Y-26.432 Z-2.38 B16.563 C330.003 +G01 X+30.964 Y-26.732 Z-2.378 B16.557 C328.449 +G01 X+30.801 Y-26.998 Z-2.38 B16.563 C327.055 +G01 X+30.609 Y-27.279 Z-2.378 B16.557 C325.546 +G01 X+30.427 Y-27.544 Z-2.38 B16.562 C324.106 +G01 X+30.226 Y-27.807 Z-2.378 B16.557 C322.643 +G01 X+30.024 Y-28.071 Z-2.38 B16.562 C321.165 +G01 X+29.818 Y-28.314 Z-2.378 B16.557 C319.739 +G01 X+29.596 Y-28.576 Z-2.38 B16.563 C318.213 +G01 X+29.384 Y-28.801 Z-2.378 B16.557 C316.836 +G01 X+29.141 Y-29.059 Z-2.38 B16.563 C315.262 +G01 X+28.926 Y-29.265 Z-2.378 B16.557 C313.933 +G01 X+28.663 Y-29.518 Z-2.38 B16.563 C312.31 +G01 X+28.446 Y-29.705 Z-2.378 B16.557 C311.03 +G01 X+28.161 Y-29.951 Z-2.38 B16.563 C309.359 +G01 X+27.943 Y-30.121 Z-2.378 B16.557 C308.126 +G01 X+27.638 Y-30.358 Z-2.38 B16.563 C306.407 +G01 X+27.367 Y-30.548 Z-2.378 B16.558 C304.931 +G01 X+27.095 Y-30.737 Z-2.38 B16.563 C303.455 +G01 X+26.849 Y-30.891 Z-2.378 B16.558 C302.162 +G01 X+26.602 Y-31.045 Z-2.379 B16.56 C300.868 +G01 X+26.533 Y-31.088 Z-2.38 B16.564 C300.504 +G01 X+26.284 Y-31.227 Z-2.378 B16.558 C299.235 +G01 X+26.034 Y-31.365 Z-2.379 B16.56 C297.965 +G01 X+25.953 Y-31.41 Z-2.38 B16.564 C297.552 +G01 X+25.702 Y-31.533 Z-2.378 B16.558 C296.307 +G01 X+25.451 Y-31.656 Z-2.379 B16.56 C295.062 +G01 X+25.358 Y-31.701 Z-2.38 B16.564 C294.601 +G01 X+25.106 Y-31.809 Z-2.378 B16.558 C293.38 +G01 X+24.853 Y-31.917 Z-2.379 B16.56 C292.159 +G01 X+24.749 Y-31.962 Z-2.38 B16.564 C291.649 +G01 X+24.496 Y-32.055 Z-2.378 B16.558 C290.452 +G01 X+24.243 Y-32.147 Z-2.379 B16.559 C289.255 +G01 X+24.127 Y-32.19 Z-2.38 B16.564 C288.698 +G01 X+23.875 Y-32.269 Z-2.378 B16.558 C287.525 +G01 X+23.623 Y-32.346 Z-2.379 B16.559 C286.352 +G01 X+23.494 Y-32.387 Z-2.38 B16.564 C285.746 +G01 X+23.243 Y-32.45 Z-2.378 B16.558 C284.598 +G01 X+22.993 Y-32.514 Z-2.379 B16.559 C283.449 +G01 X+22.851 Y-32.55 Z-2.38 B16.564 C282.795 +G01 X+22.603 Y-32.6 Z-2.378 B16.558 C281.67 +G01 X+22.355 Y-32.649 Z-2.379 B16.559 C280.546 +G01 X+22.201 Y-32.68 Z-2.38 B16.564 C279.843 +G01 X+21.956 Y-32.716 Z-2.378 B16.558 C278.743 +G01 X+21.711 Y-32.752 Z-2.379 B16.559 C277.643 +G01 X+21.546 Y-32.777 Z-2.38 B16.564 C276.892 +G01 X+21.304 Y-32.8 Z-2.378 B16.558 C275.816 +G01 X+21.063 Y-32.822 Z-2.379 C274.739 +G01 X+20.886 Y-32.839 Z-2.38 B16.564 C273.94 +G01 X+20.649 Y-32.85 Z-2.378 B16.558 C272.888 +G01 X+20.412 Y-32.86 Z-2.379 C271.836 +G01 X+20.224 Y-32.868 Z-2.38 B16.564 C270.989 +G01 X+19.992 Y-32.866 Z-2.379 B16.558 C269.961 +G01 X+19.76 Y-32.864 C268.933 +G01 X+19.561 Y-32.862 Z-2.38 B16.564 C268.037 +G01 X+19.109 Y-32.835 Z-2.378 B16.558 C266.03 +G01 X+18.9 Y-32.823 Z-2.38 B16.564 C265.085 +G01 X+18.46 Y-32.773 Z-2.378 B16.558 C263.126 +G01 X+18.241 Y-32.749 Z-2.38 B16.564 C262.134 +G01 X+17.815 Y-32.679 Z-2.378 B16.558 C260.223 +G01 X+17.587 Y-32.642 Z-2.38 B16.563 C259.182 +G01 X+17.176 Y-32.552 Z-2.378 B16.558 C257.32 +G01 X+16.939 Y-32.501 Z-2.38 B16.563 C256.231 +G01 X+16.544 Y-32.393 Z-2.378 B16.558 C254.417 +G01 X+16.3 Y-32.326 Z-2.38 B16.563 C253.279 +G01 X+15.921 Y-32.202 Z-2.378 B16.557 C251.513 +G01 X+15.67 Y-32.12 Z-2.38 B16.563 C250.328 +G01 X+15.308 Y-31.979 Z-2.378 B16.557 C248.61 +G01 X+15.052 Y-31.881 Z-2.38 B16.563 C247.376 +G01 X+14.75 Y-31.746 Z-2.378 B16.558 C245.901 +G01 X+14.447 Y-31.61 Z-2.38 B16.563 C244.426 +G01 X+14.12 Y-31.443 Z-2.378 B16.557 C242.804 +G01 X+13.827 Y-31.293 Z-2.38 B16.563 C241.352 +G01 X+13.553 Y-31.135 Z-2.379 B16.558 C239.934 +G01 X+13.28 Y-30.976 Z-2.38 B16.563 C238.517 +G01 X+12.992 Y-30.79 Z-2.378 B16.557 C236.997 +G01 X+12.727 Y-30.617 Z-2.38 B16.563 C235.581 +G01 X+12.455 Y-30.421 Z-2.378 B16.557 C234.094 +G01 X+12.19 Y-30.229 Z-2.38 B16.562 C232.64 +G01 X+11.937 Y-30.025 Z-2.378 B16.557 C231.191 +G01 X+11.673 Y-29.813 Z-2.38 B16.563 C229.689 +G01 X+11.426 Y-29.593 Z-2.378 B16.558 C228.213 +G01 X+11.179 Y-29.371 Z-2.38 B16.563 C226.737 +G01 X+10.922 Y-29.116 Z-2.378 B16.558 C225.119 +G01 X+10.921 Y-28.983 Z-2.35 B16.434 C224.694 +G01 X+10.778 Y-28.841 Z-2.352 B16.438 C223.794 +G01 X+10.556 Y-28.598 Z-2.35 B16.433 C222.318 +G01 X+10.335 Y-28.354 Z-2.352 B16.438 C220.843 +G01 X+10.126 Y-28.1 Z-2.35 B16.433 C219.367 +G01 X+9.918 Y-27.846 Z-2.352 B16.438 C217.891 +G01 X+9.722 Y-27.581 Z-2.35 B16.433 C216.416 +G01 X+9.527 Y-27.316 Z-2.352 B16.438 C214.94 +G01 X+9.361 Y-27.066 Z-2.35 B16.433 C213.594 +G01 X+9.196 Y-26.815 Z-2.351 B16.436 C212.248 +G01 X+9.164 Y-26.767 Z-2.352 B16.438 C211.989 +G01 X+9.014 Y-26.513 Z-2.35 B16.433 C210.667 +G01 X+8.865 Y-26.259 Z-2.351 B16.436 C209.344 +G01 X+8.83 Y-26.201 Z-2.352 B16.438 C209.038 +G01 X+8.696 Y-25.944 Z-2.35 B16.433 C207.739 +G01 X+8.562 Y-25.687 Z-2.351 B16.435 C206.441 +G01 X+8.526 Y-25.617 Z-2.352 B16.438 C206.087 +G01 X+8.407 Y-25.359 Z-2.35 B16.433 C204.812 +G01 X+8.289 Y-25.1 Z-2.351 B16.435 C203.537 +G01 X+8.252 Y-25.019 Z-2.352 B16.438 C203.136 +G01 X+8.149 Y-24.76 Z-2.35 B16.433 C201.885 +G01 X+8.046 Y-24.5 Z-2.351 B16.435 C200.634 +G01 X+8.009 Y-24.408 Z-2.352 B16.438 C200.184 +G01 X+7.921 Y-24.148 Z-2.35 B16.433 C198.957 +G01 X+7.833 Y-23.889 Z-2.351 B16.435 C197.73 +G01 X+7.798 Y-23.785 Z-2.352 B16.438 C197.233 +G01 X+7.725 Y-23.526 Z-2.35 B16.433 C196.03 +G01 X+7.652 Y-23.268 Z-2.351 B16.434 C194.826 +G01 X+7.62 Y-23.152 Z-2.352 B16.438 C194.282 +G01 X+7.561 Y-22.895 Z-2.35 B16.433 C193.103 +G01 X+7.503 Y-22.638 Z-2.351 B16.434 C191.923 +G01 X+7.474 Y-22.51 Z-2.352 B16.438 C191.331 +G01 X+7.429 Y-22.256 Z-2.35 B16.433 C190.175 +G01 X+7.385 Y-22.001 Z-2.351 B16.434 C189.02 +G01 X+7.361 Y-21.862 Z-2.352 B16.438 C188.379 +G01 X+7.33 Y-21.611 Z-2.35 B16.433 C187.248 +G01 X+7.3 Y-21.36 Z-2.351 B16.434 C186.116 +G01 X+7.282 Y-21.209 Z-2.352 B16.438 C185.429 +G01 X+7.265 Y-20.962 Z-2.35 B16.433 C184.321 +G01 X+7.248 Y-20.715 Z-2.351 B16.434 C183.213 +G01 X+7.237 Y-20.552 Z-2.352 B16.438 C182.477 +G01 X+7.232 Y-20.31 Z-2.35 B16.433 C181.393 +G01 X+7.228 Y-20.068 Z-2.351 C180.309 +G01 X+7.225 Y-19.895 Z-2.352 B16.438 C179.526 +G01 X+7.233 Y-19.658 Z-2.35 B16.433 C178.466 +G01 X+7.241 Y-19.421 C177.406 +G01 X+7.247 Y-19.237 Z-2.352 B16.438 C176.575 +G01 X+7.267 Y-19.006 Z-2.35 B16.433 C175.539 +G01 X+7.287 Y-18.775 C174.502 +G01 X+7.304 Y-18.582 Z-2.352 B16.438 C173.624 +G01 X+7.365 Y-18.133 Z-2.35 B16.433 C171.599 +G01 X+7.393 Y-17.93 Z-2.352 B16.438 C170.672 +G01 X+7.476 Y-17.496 Z-2.35 B16.433 C168.695 +G01 X+7.517 Y-17.284 Z-2.352 B16.438 C167.721 +G01 X+7.619 Y-16.864 Z-2.35 B16.433 C165.792 +G01 X+7.673 Y-16.645 Z-2.352 B16.438 C164.77 +G01 X+7.794 Y-16.241 Z-2.35 B16.432 C162.889 +G01 X+7.862 Y-16.015 Z-2.352 B16.438 C161.819 +G01 X+8 Y-15.628 Z-2.35 B16.432 C159.986 +G01 X+8.083 Y-15.395 Z-2.352 B16.438 C158.868 +G01 X+8.237 Y-15.026 Z-2.35 B16.432 C157.082 +G01 X+8.336 Y-14.788 Z-2.352 B16.438 C155.917 +G01 X+8.504 Y-14.436 Z-2.35 B16.432 C154.179 +G01 X+8.62 Y-14.194 Z-2.352 B16.437 C152.965 +G01 X+8.801 Y-13.861 Z-2.35 B16.432 C151.276 +G01 X+8.934 Y-13.616 Z-2.351 B16.437 C150.014 +G01 X+9.126 Y-13.302 Z-2.35 B16.432 C148.372 +G01 X+9.277 Y-13.055 Z-2.351 B16.437 C147.063 +G01 X+9.479 Y-12.76 Z-2.35 B16.432 C145.469 +G01 X+9.649 Y-12.512 Z-2.351 B16.437 C144.113 +G01 X+9.86 Y-12.236 Z-2.35 B16.432 C142.566 +G01 X+10.048 Y-11.989 Z-2.351 B16.437 C141.172 +G01 X+10.266 Y-11.733 Z-2.35 B16.432 C139.662 +G01 X+10.474 Y-11.487 Z-2.351 B16.437 C138.218 +G01 X+10.699 Y-11.248 Z-2.35 B16.432 C136.744 +G01 X+10.925 Y-11.008 Z-2.352 B16.438 C135.27 +G01 X+11.162 Y-10.781 Z-2.35 B16.433 C133.794 +G01 X+11.4 Y-10.553 Z-2.352 B16.438 C132.318 +G01 X+11.648 Y-10.338 Z-2.35 B16.433 C130.843 +G01 X+11.897 Y-10.123 Z-2.352 B16.438 C129.367 +G01 X+12.157 Y-9.921 Z-2.35 B16.433 C127.892 +G01 X+12.416 Y-9.719 Z-2.352 B16.438 C126.416 +G01 X+12.686 Y-9.53 Z-2.35 C124.94 +G01 X+12.956 Y-9.342 Z-2.352 C123.465 +G01 X+13.208 Y-9.184 Z-2.35 B16.433 C122.131 +G01 X+13.461 Y-9.027 Z-2.351 B16.436 C120.796 +G01 X+13.514 Y-8.994 Z-2.352 B16.438 C120.514 +G01 X+13.769 Y-8.852 Z-2.35 B16.433 C119.203 +G01 X+14.025 Y-8.71 Z-2.351 B16.435 C117.892 +G01 X+14.089 Y-8.674 Z-2.352 B16.438 C117.562 +G01 X+14.347 Y-8.548 Z-2.35 B16.433 C116.276 +G01 X+14.605 Y-8.422 Z-2.351 B16.435 C114.989 +G01 X+14.68 Y-8.385 Z-2.352 B16.438 C114.611 +G01 X+14.939 Y-8.274 Z-2.35 B16.433 C113.348 +G01 X+15.198 Y-8.164 Z-2.351 B16.435 C112.085 +G01 X+15.285 Y-8.127 Z-2.352 B16.438 C111.66 +G01 X+15.544 Y-8.031 Z-2.35 B16.433 C110.421 +G01 X+15.804 Y-7.936 Z-2.351 B16.435 C109.182 +G01 X+15.902 Y-7.9 Z-2.352 B16.438 C108.709 +G01 X+16.161 Y-7.819 Z-2.35 B16.433 C107.494 +G01 X+16.421 Y-7.739 Z-2.351 B16.434 C106.278 +G01 X+16.531 Y-7.705 Z-2.352 B16.438 C105.758 +G01 X+16.788 Y-7.639 Z-2.35 B16.433 C104.566 +G01 X+17.046 Y-7.573 Z-2.351 B16.434 C103.375 +G01 X+17.168 Y-7.542 Z-2.352 B16.438 C102.806 +G01 X+17.424 Y-7.491 Z-2.35 B16.433 C101.639 +G01 X+17.68 Y-7.44 Z-2.351 B16.434 C100.471 +G01 X+17.813 Y-7.413 Z-2.352 B16.438 C99.855 +G01 X+18.066 Y-7.376 Z-2.35 B16.433 C98.712 +G01 X+18.319 Y-7.339 Z-2.351 B16.434 C97.568 +G01 X+18.464 Y-7.317 Z-2.352 B16.438 C96.904 +G01 X+18.713 Y-7.293 Z-2.35 B16.433 C95.784 +G01 X+18.962 Y-7.27 Z-2.351 B16.434 C94.664 +G01 X+19.119 Y-7.255 Z-2.352 B16.438 C93.953 +G01 X+19.364 Y-7.244 Z-2.35 B16.433 C92.857 +G01 X+19.608 Y-7.234 Z-2.351 C91.761 +G01 X+19.776 Y-7.227 Z-2.352 B16.438 C91.002 +G01 X+20.016 Y-7.228 Z-2.35 B16.433 C89.93 +G01 X+20.256 Y-7.231 Z-2.351 C88.857 +G01 X+20.434 Y-7.232 Z-2.352 B16.438 C88.05 +G01 X+20.668 Y-7.246 Z-2.35 B16.433 C87.002 +G01 X+20.902 Y-7.26 C85.954 +G01 X+21.091 Y-7.271 Z-2.352 B16.438 C85.099 +G01 X+21.319 Y-7.297 Z-2.35 B16.433 C84.075 +G01 X+21.546 Y-7.322 C83.051 +G01 X+21.745 Y-7.344 Z-2.352 B16.438 C82.148 +G01 X+22.186 Y-7.417 Z-2.35 B16.433 C80.147 +G01 X+22.394 Y-7.451 Z-2.352 B16.438 C79.197 +G01 X+22.821 Y-7.544 Z-2.35 B16.433 C77.244 +G01 X+23.037 Y-7.591 Z-2.352 B16.438 C76.246 +G01 X+23.448 Y-7.703 Z-2.35 B16.433 C74.34 +G01 X+23.671 Y-7.764 Z-2.352 B16.438 C73.295 +G01 X+24.067 Y-7.893 Z-2.35 B16.432 C71.437 +G01 X+24.296 Y-7.969 Z-2.352 B16.438 C70.343 +G01 X+24.675 Y-8.115 Z-2.35 B16.432 C68.534 +G01 X+24.91 Y-8.206 Z-2.352 B16.438 C67.392 +G01 X+25.27 Y-8.367 Z-2.35 B16.432 C65.631 +G01 X+25.511 Y-8.474 Z-2.352 B16.438 C64.441 +G01 X+25.853 Y-8.649 Z-2.35 B16.432 C62.727 +G01 X+26.097 Y-8.773 Z-2.352 B16.437 C61.49 +G01 X+26.42 Y-8.96 Z-2.35 B16.432 C59.824 +G01 X+26.667 Y-9.102 Z-2.351 B16.437 C58.539 +G01 X+26.971 Y-9.299 Z-2.35 B16.432 C56.921 +G01 X+27.219 Y-9.46 Z-2.351 B16.437 C55.587 +G01 X+27.504 Y-9.666 Z-2.35 B16.432 C54.017 +G01 X+27.752 Y-9.845 Z-2.351 B16.437 C52.643 +G01 X+28.018 Y-10.059 Z-2.35 B16.432 C51.114 +G01 X+28.264 Y-10.258 Z-2.351 B16.437 C49.696 +G01 X+28.511 Y-10.478 Z-2.35 B16.432 C48.211 +G01 X+28.755 Y-10.696 Z-2.351 B16.437 C46.745 +G01 X+28.989 Y-10.927 Z-2.35 B16.432 C45.27 +G01 X+29.222 Y-11.159 Z-2.352 B16.438 C43.794 +G01 X+29.444 Y-11.402 Z-2.35 B16.433 C42.318 +G01 X+29.665 Y-11.646 Z-2.352 B16.438 C40.843 +G01 X+29.874 Y-11.9 Z-2.35 B16.433 C39.367 +G01 X+30.082 Y-12.154 Z-2.352 B16.438 C37.892 +G01 X+30.278 Y-12.419 Z-2.35 B16.433 C36.416 +G01 X+30.473 Y-12.684 Z-2.352 B16.438 C34.94 +G01 X+30.639 Y-12.934 Z-2.35 B16.433 C33.594 +G01 X+30.804 Y-13.185 Z-2.351 B16.436 C32.248 +G01 X+30.836 Y-13.232 Z-2.352 B16.438 C31.989 +G01 X+30.986 Y-13.487 Z-2.35 B16.433 C30.667 +G01 X+31.135 Y-13.741 Z-2.351 B16.436 C29.344 +G01 X+31.17 Y-13.799 Z-2.352 B16.438 C29.038 +G01 X+31.304 Y-14.056 Z-2.35 B16.433 C27.739 +G01 X+31.438 Y-14.313 Z-2.351 B16.435 C26.441 +G01 X+31.474 Y-14.382 Z-2.352 B16.438 C26.087 +G01 X+31.593 Y-14.641 Z-2.35 B16.433 C24.812 +G01 X+31.711 Y-14.9 Z-2.351 B16.435 C23.537 +G01 X+31.748 Y-14.981 Z-2.352 B16.438 C23.136 +G01 X+31.851 Y-15.24 Z-2.35 B16.433 C21.885 +G01 X+31.954 Y-15.5 Z-2.351 B16.435 C20.634 +G01 X+31.991 Y-15.592 Z-2.352 B16.438 C20.184 +G01 X+32.079 Y-15.851 Z-2.35 B16.433 C18.957 +G01 X+32.167 Y-16.111 Z-2.351 B16.435 C17.73 +G01 X+32.202 Y-16.215 Z-2.352 B16.438 C17.233 +G01 X+32.275 Y-16.474 Z-2.35 B16.433 C16.03 +G01 X+32.348 Y-16.732 Z-2.351 B16.434 C14.827 +G01 X+32.38 Y-16.848 Z-2.352 B16.438 C14.282 +G01 X+32.439 Y-17.105 Z-2.35 B16.433 C13.103 +G01 X+32.497 Y-17.362 Z-2.351 B16.434 C11.923 +G01 X+32.526 Y-17.49 Z-2.352 B16.438 C11.331 +G01 X+32.571 Y-17.744 Z-2.35 B16.433 C10.175 +G01 X+32.615 Y-17.998 Z-2.351 B16.434 C9.02 +G01 X+32.639 Y-18.138 Z-2.352 B16.438 C8.38 +G01 X+32.67 Y-18.389 Z-2.35 B16.433 C7.248 +G01 X+32.7 Y-18.64 Z-2.351 B16.434 C6.116 +G01 X+32.718 Y-18.791 Z-2.352 B16.438 C5.429 +G01 X+32.735 Y-19.038 Z-2.35 B16.433 C4.321 +G01 X+32.752 Y-19.285 Z-2.351 B16.434 C3.213 +G01 X+32.763 Y-19.447 Z-2.352 B16.438 C2.477 +G01 X+32.768 Y-19.69 Z-2.35 B16.433 C1.393 +G01 X+32.772 Y-19.932 Z-2.351 C0.309 +G01 X+32.775 Y-20.105 Z-2.352 B16.438 C359.526 +G01 X+32.767 Y-20.342 Z-2.35 B16.433 C358.466 +G01 X+32.759 Y-20.579 C357.406 +G01 X+32.753 Y-20.763 Z-2.352 B16.438 C356.575 +G01 X+32.733 Y-20.994 Z-2.35 B16.433 C355.539 +G01 X+32.713 Y-21.224 C354.502 +G01 X+32.696 Y-21.418 Z-2.352 B16.438 C353.624 +G01 X+32.635 Y-21.867 Z-2.35 B16.433 C351.599 +G01 X+32.607 Y-22.07 Z-2.352 B16.438 C350.672 +G01 X+32.524 Y-22.504 Z-2.35 B16.433 C348.695 +G01 X+32.483 Y-22.716 Z-2.352 B16.438 C347.721 +G01 X+32.381 Y-23.135 Z-2.35 B16.433 C345.792 +G01 X+32.327 Y-23.355 Z-2.352 B16.438 C344.77 +G01 X+32.206 Y-23.758 Z-2.35 B16.432 C342.889 +G01 X+32.138 Y-23.985 Z-2.352 B16.438 C341.819 +G01 X+32 Y-24.372 Z-2.35 B16.432 C339.986 +G01 X+31.917 Y-24.605 Z-2.352 B16.438 C338.868 +G01 X+31.763 Y-24.974 Z-2.35 B16.432 C337.082 +G01 X+31.664 Y-25.212 Z-2.352 B16.438 C335.917 +G01 X+31.496 Y-25.563 Z-2.35 B16.432 C334.179 +G01 X+31.38 Y-25.806 Z-2.352 B16.437 C332.965 +G01 X+31.199 Y-26.139 Z-2.35 B16.432 C331.276 +G01 X+31.066 Y-26.384 Z-2.351 B16.437 C330.014 +G01 X+30.874 Y-26.698 Z-2.35 B16.432 C328.372 +G01 X+30.723 Y-26.945 Z-2.351 B16.437 C327.063 +G01 X+30.521 Y-27.24 Z-2.35 B16.432 C325.469 +G01 X+30.351 Y-27.488 Z-2.351 B16.437 C324.113 +G01 X+30.14 Y-27.764 Z-2.35 B16.432 C322.566 +G01 X+29.952 Y-28.011 Z-2.351 B16.437 C321.172 +G01 X+29.734 Y-28.267 Z-2.35 B16.432 C319.662 +G01 X+29.526 Y-28.513 Z-2.351 B16.437 C318.218 +G01 X+29.301 Y-28.752 Z-2.35 B16.432 C316.744 +G01 X+29.075 Y-28.991 Z-2.352 B16.438 C315.27 +G01 X+28.838 Y-29.219 Z-2.35 B16.433 C313.794 +G01 X+28.6 Y-29.447 Z-2.352 B16.438 C312.318 +G01 X+28.352 Y-29.662 Z-2.35 B16.433 C310.843 +G01 X+28.103 Y-29.877 Z-2.352 B16.438 C309.367 +G01 X+27.843 Y-30.079 Z-2.35 B16.433 C307.892 +G01 X+27.584 Y-30.281 Z-2.352 B16.438 C306.416 +G01 X+27.314 Y-30.47 Z-2.35 C304.94 +G01 X+27.044 Y-30.658 Z-2.352 C303.465 +G01 X+26.792 Y-30.816 Z-2.35 B16.433 C302.131 +G01 X+26.539 Y-30.973 Z-2.351 B16.436 C300.796 +G01 X+26.486 Y-31.006 Z-2.352 B16.438 C300.514 +G01 X+26.231 Y-31.148 Z-2.35 B16.433 C299.203 +G01 X+25.975 Y-31.29 Z-2.351 B16.435 C297.892 +G01 X+25.911 Y-31.326 Z-2.352 B16.438 C297.562 +G01 X+25.653 Y-31.452 Z-2.35 B16.433 C296.276 +G01 X+25.395 Y-31.578 Z-2.351 B16.435 C294.989 +G01 X+25.32 Y-31.615 Z-2.352 B16.438 C294.611 +G01 X+25.061 Y-31.726 Z-2.35 B16.433 C293.348 +G01 X+24.802 Y-31.836 Z-2.351 B16.435 C292.085 +G01 X+24.715 Y-31.873 Z-2.352 B16.438 C291.66 +G01 X+24.456 Y-31.969 Z-2.35 B16.433 C290.421 +G01 X+24.196 Y-32.064 Z-2.351 B16.435 C289.182 +G01 X+24.098 Y-32.1 Z-2.352 B16.438 C288.709 +G01 X+23.839 Y-32.181 Z-2.35 B16.433 C287.494 +G01 X+23.579 Y-32.261 Z-2.351 B16.434 C286.278 +G01 X+23.469 Y-32.295 Z-2.352 B16.438 C285.758 +G01 X+23.212 Y-32.361 Z-2.35 B16.433 C284.566 +G01 X+22.954 Y-32.426 Z-2.351 B16.434 C283.375 +G01 X+22.832 Y-32.457 Z-2.352 B16.438 C282.806 +G01 X+22.576 Y-32.509 Z-2.35 B16.433 C281.639 +G01 X+22.32 Y-32.56 Z-2.351 B16.434 C280.471 +G01 X+22.187 Y-32.587 Z-2.352 B16.438 C279.855 +G01 X+21.934 Y-32.624 Z-2.35 B16.433 C278.712 +G01 X+21.681 Y-32.661 Z-2.351 B16.434 C277.568 +G01 X+21.536 Y-32.683 Z-2.352 B16.438 C276.904 +G01 X+21.287 Y-32.706 Z-2.35 B16.433 C275.784 +G01 X+21.038 Y-32.73 Z-2.351 B16.434 C274.664 +G01 X+20.881 Y-32.745 Z-2.352 B16.438 C273.953 +G01 X+20.636 Y-32.756 Z-2.35 B16.433 C272.857 +G01 X+20.392 Y-32.766 Z-2.351 C271.761 +G01 X+20.224 Y-32.773 Z-2.352 B16.438 C271.002 +G01 X+19.984 Y-32.772 Z-2.35 B16.433 C269.93 +G01 X+19.744 Y-32.769 Z-2.351 C268.857 +G01 X+19.566 Y-32.768 Z-2.352 B16.438 C268.05 +G01 X+19.332 Y-32.754 Z-2.35 B16.433 C267.002 +G01 X+19.098 Y-32.74 C265.954 +G01 X+18.909 Y-32.729 Z-2.352 B16.438 C265.099 +G01 X+18.682 Y-32.703 Z-2.35 B16.433 C264.075 +G01 X+18.454 Y-32.678 C263.051 +G01 X+18.255 Y-32.656 Z-2.352 B16.438 C262.148 +G01 X+17.814 Y-32.583 Z-2.35 B16.433 C260.147 +G01 X+17.606 Y-32.549 Z-2.352 B16.438 C259.197 +G01 X+17.179 Y-32.456 Z-2.35 B16.433 C257.244 +G01 X+16.963 Y-32.409 Z-2.352 B16.438 C256.246 +G01 X+16.552 Y-32.297 Z-2.35 B16.433 C254.34 +G01 X+16.329 Y-32.236 Z-2.352 B16.438 C253.295 +G01 X+15.933 Y-32.107 Z-2.35 B16.432 C251.437 +G01 X+15.704 Y-32.031 Z-2.352 B16.438 C250.343 +G01 X+15.325 Y-31.885 Z-2.35 B16.432 C248.534 +G01 X+15.09 Y-31.794 Z-2.352 B16.438 C247.392 +G01 X+14.789 Y-31.66 Z-2.35 B16.432 C245.917 +G01 X+14.489 Y-31.526 Z-2.352 B16.438 C244.441 +G01 X+14.147 Y-31.351 Z-2.35 B16.432 C242.727 +G01 X+13.872 Y-31.211 Z-2.352 B16.438 C241.352 +G01 X+13.601 Y-31.054 Z-2.351 B16.433 C239.938 +G01 X+13.33 Y-30.896 Z-2.352 B16.438 C238.523 +G01 X+13.029 Y-30.701 Z-2.35 B16.432 C236.921 +G01 X+12.781 Y-30.54 Z-2.351 B16.437 C235.588 +G01 X+12.496 Y-30.334 Z-2.35 B16.432 C234.017 +G01 X+12.248 Y-30.155 Z-2.351 B16.437 C232.642 +G01 X+11.982 Y-29.94 Z-2.35 B16.432 C231.114 +G01 X+11.736 Y-29.742 Z-2.351 B16.437 C229.696 +G01 X+11.489 Y-29.522 Z-2.35 B16.432 C228.211 +G01 X+11.245 Y-29.304 Z-2.351 B16.437 C226.745 +G01 X+10.988 Y-29.049 Z-2.35 B16.433 C225.121 +G01 X+10.987 Y-28.916 Z-2.323 B16.316 C224.687 +G01 X+10.847 Y-28.777 Z-2.324 B16.319 C223.794 +G01 X+10.624 Y-28.532 Z-2.323 B16.314 C222.297 +G01 X+10.401 Y-28.287 Z-2.324 B16.319 C220.801 +G01 X+10.197 Y-28.038 Z-2.323 B16.314 C219.346 +G01 X+9.993 Y-27.789 Z-2.324 B16.319 C217.892 +G01 X+9.799 Y-27.526 Z-2.323 B16.314 C216.417 +G01 X+9.605 Y-27.264 Z-2.324 B16.319 C214.941 +G01 X+9.445 Y-27.021 Z-2.323 B16.314 C213.631 +G01 X+9.285 Y-26.779 B16.317 C212.32 +G01 X+9.245 Y-26.719 Z-2.324 B16.32 C211.99 +G01 X+9.1 Y-26.473 Z-2.323 B16.314 C210.704 +G01 X+8.956 Y-26.227 B16.316 C209.417 +G01 X+8.914 Y-26.156 Z-2.324 B16.32 C209.039 +G01 X+8.772 Y-25.886 Z-2.323 B16.314 C207.662 +G01 X+8.631 Y-25.616 B16.318 C206.283 +G01 X+8.611 Y-25.577 Z-2.324 B16.32 C206.088 +G01 X+8.486 Y-25.305 Z-2.323 B16.314 C204.734 +G01 X+8.362 Y-25.032 B16.318 C203.379 +G01 X+8.339 Y-24.984 Z-2.324 B16.32 C203.138 +G01 X+8.23 Y-24.71 Z-2.323 B16.314 C201.807 +G01 X+8.122 Y-24.436 B16.317 C200.476 +G01 X+8.098 Y-24.377 Z-2.324 B16.32 C200.187 +G01 X+8.005 Y-24.103 Z-2.323 B16.315 C198.88 +G01 X+7.913 Y-23.829 B16.317 C197.572 +G01 X+7.889 Y-23.758 Z-2.324 B16.32 C197.236 +G01 X+7.811 Y-23.485 Z-2.323 B16.315 C195.953 +G01 X+7.734 Y-23.212 B16.317 C194.669 +G01 X+7.711 Y-23.13 Z-2.324 B16.32 C194.285 +G01 X+7.649 Y-22.858 Z-2.323 B16.315 C193.025 +G01 X+7.588 Y-22.586 B16.317 C191.765 +G01 X+7.566 Y-22.493 Z-2.324 B16.32 C191.334 +G01 X+7.519 Y-22.224 Z-2.323 B16.315 C190.098 +G01 X+7.473 Y-21.954 B16.316 C188.862 +G01 X+7.455 Y-21.85 Z-2.324 B16.32 C188.384 +G01 X+7.422 Y-21.583 Z-2.323 B16.315 C187.171 +G01 X+7.39 Y-21.317 B16.316 C185.958 +G01 X+7.376 Y-21.201 Z-2.324 B16.32 C185.433 +G01 X+7.358 Y-20.939 Z-2.323 B16.315 C184.244 +G01 X+7.34 Y-20.676 B16.316 C183.055 +G01 X+7.331 Y-20.55 Z-2.324 B16.32 C182.482 +G01 X+7.326 Y-20.292 Z-2.323 B16.315 C181.317 +G01 X+7.322 Y-20.034 B16.316 C180.151 +G01 X+7.319 Y-19.897 Z-2.324 B16.32 C179.531 +G01 X+7.328 Y-19.645 Z-2.323 B16.315 C178.39 +G01 X+7.336 Y-19.392 B16.316 C177.248 +G01 X+7.341 Y-19.244 Z-2.324 B16.32 C176.58 +G01 X+7.362 Y-18.998 Z-2.323 B16.315 C175.462 +G01 X+7.384 Y-18.751 C174.344 +G01 X+7.397 Y-18.594 Z-2.324 B16.32 C173.629 +G01 X+7.43 Y-18.354 Z-2.323 B16.315 C172.535 +G01 X+7.463 Y-18.114 C171.441 +G01 X+7.486 Y-17.947 Z-2.324 B16.32 C170.679 +G01 X+7.53 Y-17.714 Z-2.323 B16.315 C169.608 +G01 X+7.575 Y-17.481 C168.537 +G01 X+7.609 Y-17.305 Z-2.324 B16.32 C167.728 +G01 X+7.663 Y-17.08 Z-2.323 B16.315 C166.681 +G01 X+7.719 Y-16.855 C165.634 +G01 X+7.764 Y-16.671 Z-2.324 B16.319 C164.777 +G01 X+7.829 Y-16.454 Z-2.323 B16.315 C163.754 +G01 X+7.894 Y-16.237 C162.73 +G01 X+7.951 Y-16.046 Z-2.324 B16.319 C161.826 +G01 X+8.1 Y-15.629 Z-2.323 B16.315 C159.827 +G01 X+8.171 Y-15.431 Z-2.324 B16.319 C158.875 +G01 X+8.337 Y-15.032 Z-2.323 B16.315 C156.924 +G01 X+8.422 Y-14.828 Z-2.324 B16.319 C155.924 +G01 X+8.603 Y-14.447 Z-2.323 B16.314 C154.02 +G01 X+8.703 Y-14.238 Z-2.324 B16.319 C152.974 +G01 X+8.899 Y-13.877 Z-2.323 B16.314 C151.117 +G01 X+9.015 Y-13.665 Z-2.324 B16.319 C150.023 +G01 X+9.224 Y-13.323 Z-2.323 B16.314 C148.214 +G01 X+9.356 Y-13.107 Z-2.324 B16.319 C147.072 +G01 X+9.576 Y-12.786 Z-2.323 B16.314 C145.31 +G01 X+9.725 Y-12.569 Z-2.324 B16.319 C144.121 +G01 X+9.955 Y-12.267 Z-2.323 B16.314 C142.407 +G01 X+10.121 Y-12.05 Z-2.324 B16.318 C141.178 +G01 X+10.359 Y-11.768 Z-2.323 B16.314 C139.504 +G01 X+10.543 Y-11.552 Z-2.324 B16.319 C138.224 +G01 X+10.789 Y-11.291 Z-2.322 B16.314 C136.6 +G01 X+10.991 Y-11.076 Z-2.324 B16.319 C135.269 +G01 X+11.226 Y-10.85 Z-2.323 B16.314 C133.794 +G01 X+11.462 Y-10.624 Z-2.324 B16.319 C132.318 +G01 X+11.709 Y-10.41 Z-2.323 B16.314 C130.843 +G01 X+11.956 Y-10.197 Z-2.324 B16.319 C129.367 +G01 X+12.213 Y-9.996 Z-2.323 B16.314 C127.892 +G01 X+12.471 Y-9.796 Z-2.324 B16.319 C126.416 +G01 X+12.739 Y-9.608 Z-2.323 B16.314 C124.941 +G01 X+13.006 Y-9.422 Z-2.324 B16.32 C123.466 +G01 X+13.25 Y-9.269 Z-2.323 B16.314 C122.167 +G01 X+13.495 Y-9.117 B16.317 C120.868 +G01 X+13.56 Y-9.076 Z-2.324 B16.32 C120.515 +G01 X+13.829 Y-8.926 Z-2.323 B16.314 C119.125 +G01 X+14.098 Y-8.777 B16.318 C117.735 +G01 X+14.131 Y-8.759 Z-2.324 B16.32 C117.564 +G01 X+14.403 Y-8.625 Z-2.323 B16.314 C116.198 +G01 X+14.674 Y-8.493 B16.318 C114.831 +G01 X+14.718 Y-8.471 Z-2.324 B16.32 C114.613 +G01 X+14.991 Y-8.354 Z-2.323 B16.314 C113.271 +G01 X+15.264 Y-8.238 B16.318 C111.928 +G01 X+15.318 Y-8.215 Z-2.324 B16.32 C111.662 +G01 X+15.592 Y-8.114 Z-2.323 B16.315 C110.343 +G01 X+15.866 Y-8.013 B16.317 C109.024 +G01 X+15.931 Y-7.989 Z-2.324 B16.32 C108.712 +G01 X+16.205 Y-7.904 Z-2.323 B16.315 C107.416 +G01 X+16.479 Y-7.819 B16.317 C106.121 +G01 X+16.555 Y-7.796 Z-2.324 B16.32 C105.761 +G01 X+16.827 Y-7.726 Z-2.323 B16.315 C104.489 +G01 X+17.1 Y-7.657 B16.317 C103.217 +G01 X+17.188 Y-7.635 Z-2.324 B16.32 C102.81 +G01 X+17.458 Y-7.58 Z-2.323 B16.315 C101.562 +G01 X+17.729 Y-7.526 B16.317 C100.313 +G01 X+17.828 Y-7.506 Z-2.324 B16.32 C99.859 +G01 X+18.096 Y-7.467 Z-2.323 B16.315 C98.635 +G01 X+18.364 Y-7.427 B16.316 C97.41 +G01 X+18.474 Y-7.411 Z-2.324 B16.32 C96.908 +G01 X+18.738 Y-7.386 Z-2.323 B16.315 C95.707 +G01 X+19.003 Y-7.361 B16.316 C94.506 +G01 X+19.124 Y-7.349 Z-2.324 B16.32 C93.957 +G01 X+19.384 Y-7.338 Z-2.323 B16.315 C92.78 +G01 X+19.644 Y-7.327 B16.316 C91.603 +G01 X+19.776 Y-7.321 Z-2.324 B16.32 C91.007 +G01 X+20.032 Y-7.323 Z-2.323 B16.315 C89.853 +G01 X+20.287 Y-7.325 B16.316 C88.699 +G01 X+20.429 Y-7.326 Z-2.324 B16.32 C88.056 +G01 X+20.679 Y-7.341 Z-2.323 B16.315 C86.926 +G01 X+20.929 Y-7.356 B16.316 C85.796 +G01 X+21.081 Y-7.365 Z-2.324 B16.32 C85.105 +G01 X+21.325 Y-7.392 Z-2.323 B16.315 C83.999 +G01 X+21.568 Y-7.419 C82.893 +G01 X+21.73 Y-7.437 Z-2.324 B16.32 C82.154 +G01 X+21.967 Y-7.476 Z-2.323 B16.315 C81.072 +G01 X+22.203 Y-7.515 C79.989 +G01 X+22.375 Y-7.543 Z-2.324 B16.32 C79.203 +G01 X+22.604 Y-7.593 Z-2.323 B16.315 C78.144 +G01 X+22.833 Y-7.643 C77.086 +G01 X+23.013 Y-7.682 Z-2.324 B16.319 C76.252 +G01 X+23.234 Y-7.742 Z-2.323 B16.315 C75.217 +G01 X+23.455 Y-7.802 C74.182 +G01 X+23.643 Y-7.853 Z-2.324 B16.319 C73.301 +G01 X+24.068 Y-7.993 Z-2.323 B16.315 C71.279 +G01 X+24.263 Y-8.057 Z-2.324 B16.319 C70.351 +G01 X+24.671 Y-8.214 Z-2.323 B16.315 C68.375 +G01 X+24.872 Y-8.292 Z-2.324 B16.319 C67.4 +G01 X+25.262 Y-8.466 Z-2.323 B16.314 C65.472 +G01 X+25.469 Y-8.559 Z-2.324 B16.319 C64.449 +G01 X+25.839 Y-8.748 Z-2.323 B16.314 C62.569 +G01 X+26.05 Y-8.855 Z-2.324 B16.319 C61.498 +G01 X+26.402 Y-9.058 Z-2.323 B16.314 C59.665 +G01 X+26.616 Y-9.182 Z-2.324 B16.319 C58.547 +G01 X+26.948 Y-9.396 Z-2.323 B16.314 C56.762 +G01 X+27.164 Y-9.537 Z-2.324 B16.319 C55.596 +G01 X+27.476 Y-9.762 Z-2.323 B16.314 C53.859 +G01 X+27.695 Y-9.92 Z-2.324 B16.318 C52.642 +G01 X+27.985 Y-10.154 Z-2.323 B16.314 C50.955 +G01 X+28.202 Y-10.329 Z-2.324 B16.319 C49.701 +G01 X+28.473 Y-10.571 Z-2.323 B16.314 C48.052 +G01 X+28.689 Y-10.764 Z-2.324 B16.319 C46.746 +G01 X+28.94 Y-11.012 Z-2.322 B16.314 C45.149 +G01 X+29.153 Y-11.223 Z-2.324 B16.319 C43.794 +G01 X+29.376 Y-11.468 Z-2.323 B16.314 C42.297 +G01 X+29.599 Y-11.713 Z-2.324 B16.319 C40.801 +G01 X+29.803 Y-11.962 Z-2.323 B16.314 C39.346 +G01 X+30.007 Y-12.211 Z-2.324 B16.319 C37.892 +G01 X+30.201 Y-12.473 Z-2.323 B16.314 C36.417 +G01 X+30.395 Y-12.736 Z-2.324 B16.319 C34.941 +G01 X+30.555 Y-12.979 Z-2.323 B16.314 C33.631 +G01 X+30.715 Y-13.221 B16.317 C32.32 +G01 X+30.755 Y-13.281 Z-2.324 B16.32 C31.99 +G01 X+30.9 Y-13.527 Z-2.323 B16.314 C30.704 +G01 X+31.044 Y-13.772 B16.316 C29.417 +G01 X+31.086 Y-13.844 Z-2.324 B16.32 C29.039 +G01 X+31.228 Y-14.114 Z-2.323 B16.314 C27.662 +G01 X+31.369 Y-14.384 B16.318 C26.283 +G01 X+31.389 Y-14.423 Z-2.324 B16.32 C26.089 +G01 X+31.514 Y-14.695 Z-2.323 B16.314 C24.734 +G01 X+31.638 Y-14.968 B16.318 C23.38 +G01 X+31.661 Y-15.016 Z-2.324 B16.32 C23.138 +G01 X+31.77 Y-15.29 Z-2.323 B16.314 C21.807 +G01 X+31.878 Y-15.564 B16.317 C20.476 +G01 X+31.902 Y-15.623 Z-2.324 B16.32 C20.187 +G01 X+31.995 Y-15.897 Z-2.323 B16.315 C18.88 +G01 X+32.087 Y-16.171 B16.317 C17.572 +G01 X+32.111 Y-16.242 Z-2.324 B16.32 C17.236 +G01 X+32.189 Y-16.515 Z-2.323 B16.315 C15.953 +G01 X+32.266 Y-16.788 B16.317 C14.669 +G01 X+32.289 Y-16.87 Z-2.324 B16.32 C14.285 +G01 X+32.351 Y-17.142 Z-2.323 B16.315 C13.025 +G01 X+32.412 Y-17.414 B16.317 C11.765 +G01 X+32.434 Y-17.507 Z-2.324 B16.32 C11.334 +G01 X+32.481 Y-17.776 Z-2.323 B16.315 C10.098 +G01 X+32.527 Y-18.046 B16.316 C8.862 +G01 X+32.545 Y-18.15 Z-2.324 B16.32 C8.384 +G01 X+32.578 Y-18.417 Z-2.323 B16.315 C7.171 +G01 X+32.61 Y-18.683 B16.316 C5.958 +G01 X+32.624 Y-18.798 Z-2.324 B16.32 C5.433 +G01 X+32.642 Y-19.061 Z-2.323 B16.315 C4.244 +G01 X+32.66 Y-19.323 B16.316 C3.055 +G01 X+32.669 Y-19.45 Z-2.324 B16.32 C2.482 +G01 X+32.674 Y-19.708 Z-2.323 B16.315 C1.317 +G01 X+32.678 Y-19.966 B16.316 C0.151 +G01 X+32.681 Y-20.103 Z-2.324 B16.32 C359.531 +G01 X+32.672 Y-20.355 Z-2.323 B16.315 C358.39 +G01 X+32.664 Y-20.608 B16.316 C357.248 +G01 X+32.659 Y-20.755 Z-2.324 B16.32 C356.58 +G01 X+32.638 Y-21.002 Z-2.323 B16.315 C355.462 +G01 X+32.616 Y-21.248 C354.344 +G01 X+32.603 Y-21.406 Z-2.324 B16.32 C353.629 +G01 X+32.57 Y-21.646 Z-2.323 B16.315 C352.535 +G01 X+32.537 Y-21.886 C351.441 +G01 X+32.514 Y-22.053 Z-2.324 B16.32 C350.679 +G01 X+32.47 Y-22.286 Z-2.323 B16.315 C349.608 +G01 X+32.425 Y-22.518 C348.537 +G01 X+32.391 Y-22.694 Z-2.324 B16.32 C347.728 +G01 X+32.337 Y-22.92 Z-2.323 B16.315 C346.681 +G01 X+32.281 Y-23.145 C345.634 +G01 X+32.236 Y-23.329 Z-2.324 B16.319 C344.777 +G01 X+32.171 Y-23.546 Z-2.323 B16.315 C343.754 +G01 X+32.106 Y-23.763 C342.73 +G01 X+32.049 Y-23.954 Z-2.324 B16.319 C341.826 +G01 X+31.9 Y-24.371 Z-2.323 B16.315 C339.827 +G01 X+31.829 Y-24.569 Z-2.324 B16.319 C338.875 +G01 X+31.663 Y-24.968 Z-2.323 B16.315 C336.924 +G01 X+31.578 Y-25.172 Z-2.324 B16.319 C335.924 +G01 X+31.397 Y-25.552 Z-2.323 B16.314 C334.02 +G01 X+31.297 Y-25.761 Z-2.324 B16.319 C332.974 +G01 X+31.101 Y-26.122 Z-2.323 B16.314 C331.117 +G01 X+30.985 Y-26.335 Z-2.324 B16.319 C330.023 +G01 X+30.776 Y-26.677 Z-2.323 B16.314 C328.214 +G01 X+30.644 Y-26.892 Z-2.324 B16.319 C327.072 +G01 X+30.424 Y-27.214 Z-2.323 B16.314 C325.31 +G01 X+30.275 Y-27.431 Z-2.324 B16.319 C324.121 +G01 X+30.045 Y-27.733 Z-2.323 B16.314 C322.407 +G01 X+29.879 Y-27.95 Z-2.324 B16.318 C321.178 +G01 X+29.641 Y-28.232 Z-2.323 B16.314 C319.504 +G01 X+29.457 Y-28.448 Z-2.324 B16.319 C318.224 +G01 X+29.211 Y-28.709 Z-2.322 B16.314 C316.6 +G01 X+29.009 Y-28.924 Z-2.324 B16.319 C315.269 +G01 X+28.774 Y-29.15 Z-2.323 B16.314 C313.794 +G01 X+28.538 Y-29.376 Z-2.324 B16.319 C312.318 +G01 X+28.291 Y-29.59 Z-2.323 B16.314 C310.843 +G01 X+28.044 Y-29.803 Z-2.324 B16.319 C309.367 +G01 X+27.787 Y-30.004 Z-2.323 B16.314 C307.892 +G01 X+27.529 Y-30.204 Z-2.324 B16.319 C306.416 +G01 X+27.261 Y-30.391 Z-2.323 B16.314 C304.941 +G01 X+26.994 Y-30.578 Z-2.324 B16.32 C303.466 +G01 X+26.75 Y-30.731 Z-2.323 B16.314 C302.167 +G01 X+26.505 Y-30.883 B16.317 C300.868 +G01 X+26.44 Y-30.924 Z-2.324 B16.32 C300.515 +G01 X+26.171 Y-31.074 Z-2.323 B16.314 C299.125 +G01 X+25.902 Y-31.223 B16.318 C297.735 +G01 X+25.869 Y-31.241 Z-2.324 B16.32 C297.564 +G01 X+25.597 Y-31.374 Z-2.323 B16.314 C296.198 +G01 X+25.326 Y-31.507 B16.318 C294.831 +G01 X+25.282 Y-31.528 Z-2.324 B16.32 C294.613 +G01 X+25.009 Y-31.645 Z-2.323 B16.314 C293.27 +G01 X+24.736 Y-31.762 B16.318 C291.928 +G01 X+24.682 Y-31.785 Z-2.324 B16.32 C291.662 +G01 X+24.408 Y-31.886 Z-2.323 B16.315 C290.343 +G01 X+24.134 Y-31.987 B16.317 C289.024 +G01 X+24.069 Y-32.01 Z-2.324 B16.32 C288.712 +G01 X+23.795 Y-32.096 Z-2.323 B16.315 C287.416 +G01 X+23.521 Y-32.18 B16.317 C286.121 +G01 X+23.445 Y-32.204 Z-2.324 B16.32 C285.761 +G01 X+23.173 Y-32.274 Z-2.323 B16.315 C284.489 +G01 X+22.9 Y-32.343 B16.317 C283.217 +G01 X+22.812 Y-32.365 Z-2.324 B16.32 C282.81 +G01 X+22.542 Y-32.42 Z-2.323 B16.315 C281.562 +G01 X+22.271 Y-32.474 B16.317 C280.313 +G01 X+22.172 Y-32.494 Z-2.324 B16.32 C279.859 +G01 X+21.904 Y-32.533 Z-2.323 B16.315 C278.635 +G01 X+21.636 Y-32.573 B16.316 C277.41 +G01 X+21.526 Y-32.589 Z-2.324 B16.32 C276.908 +G01 X+21.262 Y-32.614 Z-2.323 B16.315 C275.707 +G01 X+20.997 Y-32.639 B16.316 C274.506 +G01 X+20.876 Y-32.651 Z-2.324 B16.32 C273.957 +G01 X+20.616 Y-32.662 Z-2.323 B16.315 C272.78 +G01 X+20.356 Y-32.673 B16.316 C271.603 +G01 X+20.224 Y-32.679 Z-2.324 B16.32 C271.007 +G01 X+19.968 Y-32.677 Z-2.323 B16.315 C269.853 +G01 X+19.713 Y-32.675 B16.316 C268.699 +G01 X+19.571 Y-32.674 Z-2.324 B16.32 C268.056 +G01 X+19.321 Y-32.659 Z-2.323 B16.315 C266.926 +G01 X+19.072 Y-32.644 B16.316 C265.796 +G01 X+18.919 Y-32.635 Z-2.324 B16.32 C265.105 +G01 X+18.676 Y-32.608 Z-2.323 B16.315 C263.999 +G01 X+18.432 Y-32.581 C262.893 +G01 X+18.27 Y-32.562 Z-2.324 B16.32 C262.154 +G01 X+18.033 Y-32.524 Z-2.323 B16.315 C261.072 +G01 X+17.797 Y-32.485 C259.989 +G01 X+17.625 Y-32.457 Z-2.324 B16.32 C259.203 +G01 X+17.396 Y-32.407 Z-2.323 B16.315 C258.144 +G01 X+17.168 Y-32.357 C257.086 +G01 X+16.987 Y-32.318 Z-2.324 B16.319 C256.252 +G01 X+16.766 Y-32.258 Z-2.323 B16.315 C255.217 +G01 X+16.545 Y-32.198 C254.182 +G01 X+16.357 Y-32.146 Z-2.324 B16.319 C253.301 +G01 X+15.932 Y-32.007 Z-2.323 B16.315 C251.279 +G01 X+15.737 Y-31.943 Z-2.324 B16.319 C250.351 +G01 X+15.329 Y-31.785 Z-2.323 B16.315 C248.375 +G01 X+15.128 Y-31.708 Z-2.324 B16.319 C247.4 +G01 X+14.829 Y-31.575 Z-2.323 B16.314 C245.924 +G01 X+14.531 Y-31.441 Z-2.324 B16.319 C244.449 +G01 X+14.161 Y-31.252 Z-2.323 B16.314 C242.568 +G01 X+13.917 Y-31.128 Z-2.324 B16.32 C241.352 +G01 X+13.649 Y-30.972 Z-2.323 B16.315 C239.941 +G01 X+13.381 Y-30.816 Z-2.324 B16.319 C238.53 +G01 X+13.052 Y-30.604 Z-2.323 B16.314 C236.762 +G01 X+12.836 Y-30.463 Z-2.324 B16.319 C235.597 +G01 X+12.524 Y-30.238 Z-2.323 B16.314 C233.859 +G01 X+12.305 Y-30.08 Z-2.324 B16.318 C232.642 +G01 X+12.015 Y-29.846 Z-2.323 B16.314 C230.955 +G01 X+11.798 Y-29.671 Z-2.324 B16.319 C229.701 +G01 X+11.527 Y-29.429 Z-2.323 B16.314 C228.052 +G01 X+11.311 Y-29.236 Z-2.324 B16.319 C226.746 +G01 X+11.055 Y-28.982 Z-2.323 B16.314 C225.114 +G01 X+11.054 Y-28.849 Z-2.295 B16.19 C224.678 +G01 X+10.916 Y-28.712 Z-2.296 B16.194 C223.801 +G01 X+10.698 Y-28.473 Z-2.295 C222.324 +G01 X+10.48 Y-28.233 Z-2.296 C220.847 +G01 X+10.248 Y-27.951 Z-2.295 B16.189 C219.181 +G01 X+10.068 Y-27.732 Z-2.296 B16.194 C217.893 +G01 X+9.858 Y-27.447 Z-2.295 B16.189 C216.278 +G01 X+9.684 Y-27.211 Z-2.296 B16.194 C214.939 +G01 X+9.524 Y-26.97 Z-2.295 B16.189 C213.63 +G01 X+9.365 Y-26.728 Z-2.296 B16.191 C212.32 +G01 X+9.319 Y-26.659 B16.194 C211.93 +G01 X+9.158 Y-26.385 Z-2.295 B16.189 C210.484 +G01 X+8.997 Y-26.112 Z-2.296 B16.194 C209.039 +G01 X+8.868 Y-25.865 Z-2.295 B16.189 C207.776 +G01 X+8.739 Y-25.618 Z-2.296 B16.191 C206.513 +G01 X+8.697 Y-25.537 B16.194 C206.088 +G01 X+8.583 Y-25.289 Z-2.295 B16.189 C204.849 +G01 X+8.469 Y-25.04 B16.191 C203.61 +G01 X+8.427 Y-24.948 Z-2.296 B16.194 C203.138 +G01 X+8.307 Y-24.647 Z-2.295 B16.189 C201.662 +G01 X+8.187 Y-24.346 Z-2.296 B16.194 C200.187 +G01 X+8.083 Y-24.039 Z-2.295 B16.189 C198.712 +G01 X+7.979 Y-23.732 Z-2.296 B16.195 C197.236 +G01 X+7.898 Y-23.444 Z-2.295 B16.189 C195.873 +G01 X+7.816 Y-23.156 Z-2.296 B16.193 C194.509 +G01 X+7.803 Y-23.108 B16.195 C194.286 +G01 X+7.737 Y-22.821 Z-2.295 B16.189 C192.946 +G01 X+7.672 Y-22.534 Z-2.296 B16.192 C191.605 +G01 X+7.659 Y-22.476 B16.195 C191.336 +G01 X+7.609 Y-22.191 Z-2.295 B16.189 C190.019 +G01 X+7.56 Y-21.907 Z-2.296 B16.192 C188.702 +G01 X+7.548 Y-21.837 B16.195 C188.385 +G01 X+7.514 Y-21.556 Z-2.295 B16.189 C187.092 +G01 X+7.48 Y-21.274 Z-2.296 B16.192 C185.798 +G01 X+7.47 Y-21.194 B16.195 C185.435 +G01 X+7.451 Y-20.916 Z-2.295 B16.189 C184.165 +G01 X+7.431 Y-20.638 Z-2.296 B16.192 C182.895 +G01 X+7.425 Y-20.547 B16.195 C182.484 +G01 X+7.42 Y-20.274 Z-2.295 B16.189 C181.238 +G01 X+7.415 Y-20.001 B16.192 C179.991 +G01 X+7.414 Y-19.899 Z-2.296 B16.195 C179.534 +G01 X+7.422 Y-19.631 Z-2.295 B16.189 C178.311 +G01 X+7.432 Y-19.363 B16.191 C177.088 +G01 X+7.436 Y-19.252 Z-2.296 B16.194 C176.583 +G01 X+7.458 Y-18.989 Z-2.295 B16.189 C175.384 +G01 X+7.48 Y-18.727 B16.191 C174.184 +G01 X+7.491 Y-18.606 Z-2.296 B16.194 C173.633 +G01 X+7.526 Y-18.35 Z-2.295 B16.189 C172.457 +G01 X+7.561 Y-18.095 B16.191 C171.281 +G01 X+7.579 Y-17.964 Z-2.296 B16.194 C170.682 +G01 X+7.626 Y-17.715 Z-2.295 B16.189 C169.53 +G01 X+7.674 Y-17.467 B16.191 C168.377 +G01 X+7.7 Y-17.327 Z-2.296 B16.194 C167.732 +G01 X+7.759 Y-17.087 Z-2.295 B16.189 C166.603 +G01 X+7.818 Y-16.846 B16.19 C165.474 +G01 X+7.854 Y-16.697 Z-2.296 B16.194 C164.781 +G01 X+7.924 Y-16.465 Z-2.295 B16.189 C163.676 +G01 X+7.993 Y-16.233 B16.19 C162.57 +G01 X+8.04 Y-16.076 Z-2.296 B16.194 C161.831 +G01 X+8.12 Y-15.853 Z-2.295 B16.189 C160.749 +G01 X+8.2 Y-15.63 B16.19 C159.667 +G01 X+8.258 Y-15.466 Z-2.296 B16.194 C158.88 +G01 X+8.347 Y-15.252 Z-2.295 B16.189 C157.822 +G01 X+8.436 Y-15.038 B16.19 C156.763 +G01 X+8.507 Y-14.868 Z-2.296 B16.194 C155.93 +G01 X+8.605 Y-14.663 Z-2.295 B16.189 C154.895 +G01 X+8.703 Y-14.459 B16.19 C153.86 +G01 X+8.787 Y-14.283 Z-2.296 B16.194 C152.979 +G01 X+8.998 Y-13.893 Z-2.295 B16.19 C150.956 +G01 X+9.096 Y-13.713 Z-2.296 B16.194 C150.029 +G01 X+9.321 Y-13.344 Z-2.295 B16.19 C148.053 +G01 X+9.434 Y-13.16 Z-2.296 B16.193 C147.078 +G01 X+9.672 Y-12.812 Z-2.295 B16.189 C145.15 +G01 X+9.8 Y-12.625 Z-2.296 B16.193 C144.128 +G01 X+10.05 Y-12.298 Z-2.295 B16.189 C142.246 +G01 X+10.193 Y-12.11 Z-2.296 B16.193 C141.185 +G01 X+10.403 Y-11.862 Z-2.295 B16.188 C139.709 +G01 X+10.612 Y-11.616 Z-2.296 B16.193 C138.232 +G01 X+10.88 Y-11.331 Z-2.295 B16.189 C136.44 +G01 X+11.057 Y-11.143 Z-2.296 B16.194 C135.278 +G01 X+11.29 Y-10.919 Z-2.295 B16.189 C133.801 +G01 X+11.524 Y-10.695 Z-2.296 B16.194 C132.324 +G01 X+11.804 Y-10.453 Z-2.295 B16.189 C130.633 +G01 X+12.015 Y-10.271 Z-2.296 B16.194 C129.37 +G01 X+12.298 Y-10.05 Z-2.295 B16.189 C127.73 +G01 X+12.526 Y-9.873 Z-2.296 B16.194 C126.416 +G01 X+12.765 Y-9.705 Z-2.295 B16.189 C125.094 +G01 X+13.004 Y-9.538 Z-2.296 B16.191 C123.771 +G01 X+13.073 Y-9.491 B16.194 C123.381 +G01 X+13.34 Y-9.324 Z-2.295 B16.189 C121.947 +G01 X+13.607 Y-9.158 Z-2.296 B16.194 C120.514 +G01 X+13.853 Y-9.021 Z-2.295 B16.189 C119.24 +G01 X+14.099 Y-8.885 Z-2.296 B16.191 C117.965 +G01 X+14.173 Y-8.843 B16.194 C117.563 +G01 X+14.421 Y-8.721 Z-2.295 B16.189 C116.313 +G01 X+14.669 Y-8.6 B16.191 C115.062 +G01 X+14.756 Y-8.558 Z-2.296 B16.194 C114.613 +G01 X+15.053 Y-8.43 Z-2.295 B16.189 C113.137 +G01 X+15.352 Y-8.303 Z-2.296 B16.194 C111.662 +G01 X+15.656 Y-8.191 Z-2.295 B16.189 C110.187 +G01 X+15.96 Y-8.079 Z-2.296 B16.195 C108.712 +G01 X+16.248 Y-7.989 Z-2.295 B16.189 C107.336 +G01 X+16.537 Y-7.9 Z-2.296 B16.193 C105.961 +G01 X+16.579 Y-7.887 B16.195 C105.761 +G01 X+16.866 Y-7.813 Z-2.295 B16.189 C104.409 +G01 X+17.154 Y-7.74 Z-2.296 B16.193 C103.057 +G01 X+17.207 Y-7.727 B16.195 C102.811 +G01 X+17.493 Y-7.669 Z-2.295 B16.189 C101.482 +G01 X+17.779 Y-7.612 Z-2.296 B16.192 C100.154 +G01 X+17.842 Y-7.599 B16.195 C99.86 +G01 X+18.126 Y-7.557 Z-2.295 B16.189 C98.555 +G01 X+18.409 Y-7.516 Z-2.296 B16.192 C97.25 +G01 X+18.484 Y-7.505 B16.195 C96.91 +G01 X+18.764 Y-7.478 Z-2.295 B16.189 C95.628 +G01 X+19.044 Y-7.451 Z-2.296 B16.192 C94.347 +G01 X+19.129 Y-7.443 B16.195 C93.959 +G01 X+19.405 Y-7.431 Z-2.295 B16.189 C92.701 +G01 X+19.68 Y-7.419 Z-2.296 B16.192 C91.443 +G01 X+19.776 Y-7.415 B16.195 C91.009 +G01 X+20.047 Y-7.417 Z-2.295 B16.189 C89.774 +G01 X+20.318 Y-7.419 B16.191 C88.539 +G01 X+20.425 Y-7.42 Z-2.296 B16.194 C88.058 +G01 X+20.69 Y-7.436 Z-2.295 B16.189 C86.847 +G01 X+20.955 Y-7.452 B16.191 C85.636 +G01 X+21.072 Y-7.459 Z-2.296 B16.194 C85.108 +G01 X+21.331 Y-7.488 Z-2.295 B16.189 C83.92 +G01 X+21.589 Y-7.517 B16.191 C82.732 +G01 X+21.716 Y-7.531 Z-2.296 B16.194 C82.157 +G01 X+21.968 Y-7.572 Z-2.295 B16.189 C80.993 +G01 X+22.22 Y-7.613 B16.191 C79.829 +G01 X+22.355 Y-7.636 Z-2.296 B16.194 C79.207 +G01 X+22.6 Y-7.688 Z-2.295 B16.189 C78.066 +G01 X+22.844 Y-7.742 B16.191 C76.925 +G01 X+22.989 Y-7.773 Z-2.296 B16.194 C76.256 +G01 X+23.225 Y-7.837 Z-2.295 B16.189 C75.139 +G01 X+23.461 Y-7.902 B16.19 C74.022 +G01 X+23.614 Y-7.943 Z-2.296 B16.194 C73.306 +G01 X+23.842 Y-8.018 Z-2.295 B16.189 C72.212 +G01 X+24.07 Y-8.093 B16.19 C71.118 +G01 X+24.23 Y-8.145 Z-2.296 B16.194 C70.356 +G01 X+24.449 Y-8.23 Z-2.295 B16.189 C69.285 +G01 X+24.668 Y-8.314 B16.19 C68.215 +G01 X+24.835 Y-8.379 Z-2.296 B16.194 C67.405 +G01 X+25.044 Y-8.472 Z-2.295 B16.189 C66.358 +G01 X+25.253 Y-8.566 B16.19 C65.312 +G01 X+25.427 Y-8.643 Z-2.296 B16.194 C64.455 +G01 X+25.826 Y-8.847 Z-2.295 B16.19 C62.408 +G01 X+26.004 Y-8.938 Z-2.296 B16.194 C61.504 +G01 X+26.383 Y-9.156 Z-2.295 B16.19 C59.505 +G01 X+26.566 Y-9.261 Z-2.296 B16.193 C58.554 +G01 X+26.924 Y-9.493 Z-2.295 B16.189 C56.601 +G01 X+27.11 Y-9.614 Z-2.296 B16.193 C55.603 +G01 X+27.447 Y-9.858 Z-2.295 B16.189 C53.698 +G01 X+27.635 Y-9.993 Z-2.296 B16.193 C52.653 +G01 X+27.952 Y-10.248 Z-2.295 B16.189 C50.795 +G01 X+28.14 Y-10.4 Z-2.296 B16.193 C49.709 +G01 X+28.435 Y-10.663 Z-2.295 B16.189 C47.891 +G01 X+28.623 Y-10.831 Z-2.296 B16.193 C46.755 +G01 X+28.897 Y-11.103 Z-2.295 B16.189 C44.988 +G01 X+29.084 Y-11.287 Z-2.296 B16.194 C43.801 +G01 X+29.302 Y-11.527 Z-2.295 B16.189 C42.324 +G01 X+29.52 Y-11.767 Z-2.296 B16.194 C40.847 +G01 X+29.752 Y-12.048 Z-2.295 B16.189 C39.181 +G01 X+29.932 Y-12.268 Z-2.296 B16.194 C37.893 +G01 X+30.142 Y-12.553 Z-2.295 B16.189 C36.278 +G01 X+30.316 Y-12.789 Z-2.296 B16.194 C34.939 +G01 X+30.476 Y-13.03 Z-2.295 B16.189 C33.63 +G01 X+30.635 Y-13.271 Z-2.296 B16.191 C32.32 +G01 X+30.681 Y-13.341 B16.194 C31.93 +G01 X+30.842 Y-13.614 Z-2.295 B16.189 C30.484 +G01 X+31.003 Y-13.888 Z-2.296 B16.194 C29.039 +G01 X+31.132 Y-14.135 Z-2.295 B16.189 C27.776 +G01 X+31.261 Y-14.382 Z-2.296 B16.191 C26.513 +G01 X+31.303 Y-14.463 B16.194 C26.088 +G01 X+31.417 Y-14.711 Z-2.295 B16.189 C24.849 +G01 X+31.531 Y-14.96 B16.191 C23.61 +G01 X+31.573 Y-15.052 Z-2.296 B16.194 C23.138 +G01 X+31.693 Y-15.353 Z-2.295 B16.189 C21.662 +G01 X+31.813 Y-15.654 Z-2.296 B16.194 C20.187 +G01 X+31.917 Y-15.961 Z-2.295 B16.189 C18.712 +G01 X+32.021 Y-16.268 Z-2.296 B16.195 C17.236 +G01 X+32.102 Y-16.556 Z-2.295 B16.189 C15.873 +G01 X+32.184 Y-16.844 Z-2.296 B16.193 C14.509 +G01 X+32.197 Y-16.892 B16.195 C14.286 +G01 X+32.263 Y-17.179 Z-2.295 B16.189 C12.946 +G01 X+32.328 Y-17.466 Z-2.296 B16.192 C11.606 +G01 X+32.341 Y-17.524 B16.195 C11.336 +G01 X+32.391 Y-17.809 Z-2.295 B16.189 C10.019 +G01 X+32.44 Y-18.093 Z-2.296 B16.192 C8.702 +G01 X+32.452 Y-18.162 B16.195 C8.385 +G01 X+32.486 Y-18.444 Z-2.295 B16.189 C7.092 +G01 X+32.52 Y-18.726 Z-2.296 B16.192 C5.798 +G01 X+32.53 Y-18.806 B16.195 C5.435 +G01 X+32.55 Y-19.084 Z-2.295 B16.189 C4.165 +G01 X+32.569 Y-19.362 Z-2.296 B16.192 C2.895 +G01 X+32.575 Y-19.452 B16.195 C2.484 +G01 X+32.58 Y-19.726 Z-2.295 B16.189 C1.238 +G01 X+32.585 Y-19.999 B16.192 C359.991 +G01 X+32.586 Y-20.101 Z-2.296 B16.195 C359.534 +G01 X+32.578 Y-20.369 Z-2.295 B16.189 C358.311 +G01 X+32.568 Y-20.637 B16.191 C357.088 +G01 X+32.564 Y-20.748 Z-2.296 B16.194 C356.583 +G01 X+32.542 Y-21.01 Z-2.295 B16.189 C355.384 +G01 X+32.52 Y-21.272 B16.191 C354.184 +G01 X+32.509 Y-21.394 Z-2.296 B16.194 C353.633 +G01 X+32.474 Y-21.65 Z-2.295 B16.189 C352.457 +G01 X+32.439 Y-21.905 B16.191 C351.281 +G01 X+32.421 Y-22.036 Z-2.296 B16.194 C350.682 +G01 X+32.374 Y-22.284 Z-2.295 B16.189 C349.53 +G01 X+32.326 Y-22.533 B16.191 C348.377 +G01 X+32.3 Y-22.673 Z-2.296 B16.194 C347.732 +G01 X+32.241 Y-22.913 Z-2.295 B16.189 C346.603 +G01 X+32.182 Y-23.154 B16.19 C345.474 +G01 X+32.146 Y-23.303 Z-2.296 B16.194 C344.781 +G01 X+32.076 Y-23.535 Z-2.295 B16.189 C343.676 +G01 X+32.007 Y-23.767 B16.19 C342.57 +G01 X+31.96 Y-23.923 Z-2.296 B16.194 C341.831 +G01 X+31.88 Y-24.147 Z-2.295 B16.189 C340.749 +G01 X+31.8 Y-24.37 B16.19 C339.667 +G01 X+31.742 Y-24.534 Z-2.296 B16.194 C338.88 +G01 X+31.653 Y-24.748 Z-2.295 B16.189 C337.822 +G01 X+31.564 Y-24.962 B16.19 C336.763 +G01 X+31.493 Y-25.132 Z-2.296 B16.194 C335.93 +G01 X+31.395 Y-25.337 Z-2.295 B16.189 C334.895 +G01 X+31.297 Y-25.541 B16.19 C333.86 +G01 X+31.213 Y-25.717 Z-2.296 B16.194 C332.979 +G01 X+31.002 Y-26.106 Z-2.295 B16.19 C330.956 +G01 X+30.904 Y-26.287 Z-2.296 B16.194 C330.029 +G01 X+30.679 Y-26.656 Z-2.295 B16.19 C328.053 +G01 X+30.566 Y-26.84 Z-2.296 B16.193 C327.078 +G01 X+30.328 Y-27.188 Z-2.295 B16.189 C325.15 +G01 X+30.2 Y-27.375 Z-2.296 B16.193 C324.128 +G01 X+29.95 Y-27.702 Z-2.295 B16.189 C322.246 +G01 X+29.807 Y-27.89 Z-2.296 B16.193 C321.185 +G01 X+29.597 Y-28.137 Z-2.295 B16.188 C319.709 +G01 X+29.388 Y-28.384 Z-2.296 B16.193 C318.232 +G01 X+29.12 Y-28.669 Z-2.295 B16.189 C316.44 +G01 X+28.944 Y-28.856 Z-2.296 B16.194 C315.278 +G01 X+28.71 Y-29.081 Z-2.295 B16.189 C313.801 +G01 X+28.476 Y-29.305 Z-2.296 B16.194 C312.324 +G01 X+28.196 Y-29.547 Z-2.295 B16.189 C310.633 +G01 X+27.985 Y-29.729 Z-2.296 B16.194 C309.37 +G01 X+27.702 Y-29.95 Z-2.295 B16.189 C307.73 +G01 X+27.474 Y-30.127 Z-2.296 B16.194 C306.416 +G01 X+27.235 Y-30.295 Z-2.295 B16.189 C305.094 +G01 X+26.996 Y-30.462 Z-2.296 B16.191 C303.771 +G01 X+26.927 Y-30.508 B16.194 C303.381 +G01 X+26.66 Y-30.676 Z-2.295 B16.189 C301.947 +G01 X+26.393 Y-30.842 Z-2.296 B16.194 C300.514 +G01 X+26.147 Y-30.979 Z-2.295 B16.189 C299.24 +G01 X+25.901 Y-31.115 Z-2.296 B16.191 C297.965 +G01 X+25.827 Y-31.157 B16.194 C297.563 +G01 X+25.579 Y-31.279 Z-2.295 B16.189 C296.313 +G01 X+25.331 Y-31.4 B16.191 C295.062 +G01 X+25.244 Y-31.442 Z-2.296 B16.194 C294.613 +G01 X+24.947 Y-31.57 Z-2.295 B16.189 C293.137 +G01 X+24.648 Y-31.697 Z-2.296 B16.194 C291.662 +G01 X+24.344 Y-31.809 Z-2.295 B16.189 C290.187 +G01 X+24.04 Y-31.921 Z-2.296 B16.195 C288.712 +G01 X+23.752 Y-32.01 Z-2.295 B16.189 C287.336 +G01 X+23.463 Y-32.1 Z-2.296 B16.193 C285.961 +G01 X+23.421 Y-32.113 B16.195 C285.761 +G01 X+23.134 Y-32.186 Z-2.295 B16.189 C284.409 +G01 X+22.846 Y-32.259 Z-2.296 B16.193 C283.057 +G01 X+22.793 Y-32.273 B16.195 C282.811 +G01 X+22.507 Y-32.33 Z-2.295 B16.189 C281.482 +G01 X+22.221 Y-32.388 Z-2.296 B16.192 C280.154 +G01 X+22.158 Y-32.4 B16.195 C279.86 +G01 X+21.874 Y-32.442 Z-2.295 B16.189 C278.555 +G01 X+21.591 Y-32.484 Z-2.296 B16.192 C277.25 +G01 X+21.516 Y-32.495 B16.195 C276.91 +G01 X+21.236 Y-32.522 Z-2.295 B16.189 C275.628 +G01 X+20.956 Y-32.548 Z-2.296 B16.192 C274.347 +G01 X+20.871 Y-32.556 B16.195 C273.959 +G01 X+20.595 Y-32.569 Z-2.295 B16.189 C272.701 +G01 X+20.32 Y-32.581 Z-2.296 B16.192 C271.443 +G01 X+20.224 Y-32.585 B16.195 C271.009 +G01 X+19.953 Y-32.583 Z-2.295 B16.189 C269.774 +G01 X+19.682 Y-32.58 B16.191 C268.539 +G01 X+19.575 Z-2.296 B16.194 C268.058 +G01 X+19.31 Y-32.564 Z-2.295 B16.189 C266.847 +G01 X+19.045 Y-32.548 B16.191 C265.636 +G01 X+18.928 Y-32.541 Z-2.296 B16.194 C265.108 +G01 X+18.67 Y-32.512 Z-2.295 B16.189 C263.92 +G01 X+18.411 Y-32.483 B16.191 C262.732 +G01 X+18.284 Y-32.469 Z-2.296 B16.194 C262.157 +G01 X+18.032 Y-32.428 Z-2.295 B16.189 C260.993 +G01 X+17.78 Y-32.387 B16.191 C259.829 +G01 X+17.645 Y-32.364 Z-2.296 B16.194 C259.207 +G01 X+17.4 Y-32.311 Z-2.295 B16.189 C258.066 +G01 X+17.156 Y-32.258 B16.191 C256.925 +G01 X+17.011 Y-32.227 Z-2.296 B16.194 C256.256 +G01 X+16.775 Y-32.163 Z-2.295 B16.189 C255.139 +G01 X+16.539 Y-32.098 B16.19 C254.022 +G01 X+16.386 Y-32.057 Z-2.296 B16.194 C253.306 +G01 X+16.158 Y-31.982 Z-2.295 B16.189 C252.212 +G01 X+15.93 Y-31.907 B16.19 C251.118 +G01 X+15.77 Y-31.855 Z-2.296 B16.194 C250.356 +G01 X+15.551 Y-31.77 Z-2.295 B16.189 C249.285 +G01 X+15.332 Y-31.686 B16.19 C248.215 +G01 X+15.165 Y-31.621 Z-2.296 B16.194 C247.405 +G01 X+14.869 Y-31.489 Z-2.295 B16.189 C245.93 +G01 X+14.573 Y-31.357 Z-2.296 B16.194 C244.455 +G01 X+14.174 Y-31.153 Z-2.295 B16.19 C242.408 +G01 X+13.962 Y-31.045 Z-2.296 B16.194 C241.352 +G01 X+13.696 Y-30.891 Z-2.295 B16.189 C239.943 +G01 X+13.431 Y-30.737 Z-2.296 B16.194 C238.535 +G01 X+13.076 Y-30.507 Z-2.295 B16.19 C236.602 +G01 X+12.89 Y-30.386 Z-2.296 B16.193 C235.603 +G01 X+12.553 Y-30.142 Z-2.295 B16.189 C233.698 +G01 X+12.365 Y-30.007 Z-2.296 B16.193 C232.653 +G01 X+12.048 Y-29.752 Z-2.295 B16.189 C230.795 +G01 X+11.86 Y-29.6 Z-2.296 B16.193 C229.709 +G01 X+11.618 Y-29.385 Z-2.295 B16.188 C228.232 +G01 X+11.377 Y-29.168 Z-2.296 B16.193 C226.755 +G01 X+11.121 Y-28.916 Z-2.295 B16.189 C225.106 +G01 Y-28.782 Z-2.268 B16.065 C224.67 +G01 X+10.985 Y-28.648 Z-2.269 B16.068 C223.809 +G01 X+10.768 Y-28.411 Z-2.268 B16.063 C222.332 +G01 X+10.552 Y-28.173 Z-2.269 B16.068 C220.856 +G01 X+10.3 Y-27.866 Z-2.268 B16.064 C219.021 +G01 X+10.144 Y-27.675 Z-2.269 B16.069 C217.902 +G01 X+9.914 Y-27.364 Z-2.268 B16.064 C216.117 +G01 X+9.762 Y-27.158 Z-2.269 B16.069 C214.949 +G01 X+9.554 Y-26.844 Z-2.268 B16.064 C213.214 +G01 X+9.407 Y-26.621 Z-2.269 B16.069 C211.995 +G01 X+9.243 Y-26.344 Z-2.268 B16.064 C210.519 +G01 X+9.08 Y-26.067 Z-2.269 B16.069 C209.042 +G01 X+8.951 Y-25.822 Z-2.268 B16.064 C207.778 +G01 X+8.823 Y-25.576 B16.066 C206.514 +G01 X+8.782 Y-25.497 Z-2.269 B16.069 C206.088 +G01 X+8.669 Y-25.25 Z-2.268 B16.064 C204.849 +G01 X+8.555 Y-25.002 B16.065 C203.61 +G01 X+8.508 Y-24.896 Z-2.269 B16.069 C203.059 +G01 X+8.392 Y-24.606 Z-2.268 B16.064 C201.623 +G01 X+8.276 Y-24.315 Z-2.269 B16.069 C200.187 +G01 X+8.192 Y-24.067 Z-2.268 B16.064 C198.996 +G01 X+8.108 Y-23.819 B16.065 C197.804 +G01 X+8.07 Y-23.705 Z-2.269 B16.069 C197.237 +G01 X+8 Y-23.458 Z-2.268 B16.064 C196.069 +G01 X+7.93 Y-23.212 B16.065 C194.901 +G01 X+7.895 Y-23.086 Z-2.269 B16.069 C194.287 +G01 X+7.823 Y-22.773 Z-2.268 B16.064 C192.812 +G01 X+7.752 Y-22.459 Z-2.269 B16.069 C191.337 +G01 X+7.697 Y-22.142 Z-2.268 C189.861 +G01 X+7.642 Y-21.825 Z-2.269 C188.386 +G01 X+7.605 Y-21.528 Z-2.268 B16.064 C187.013 +G01 X+7.57 Y-21.231 B16.068 C185.638 +G01 X+7.564 Y-21.187 Z-2.269 B16.069 C185.436 +G01 X+7.543 Y-20.893 Z-2.268 B16.064 C184.086 +G01 X+7.523 Y-20.6 B16.068 C182.735 +G01 X+7.52 Y-20.545 Z-2.269 B16.069 C182.486 +G01 X+7.514 Y-20.256 Z-2.268 B16.064 C181.159 +G01 X+7.509 Y-19.967 B16.067 C179.831 +G01 X+7.508 Y-19.902 Z-2.269 B16.069 C179.536 +G01 X+7.517 Y-19.618 Z-2.268 B16.064 C178.232 +G01 X+7.527 Y-19.334 B16.067 C176.928 +G01 X+7.53 Y-19.259 Z-2.269 B16.069 C176.586 +G01 X+7.553 Y-18.981 Z-2.268 B16.064 C175.305 +G01 X+7.577 Y-18.703 B16.067 C174.024 +G01 X+7.584 Y-18.618 Z-2.269 B16.069 C173.636 +G01 X+7.621 Y-18.347 Z-2.268 B16.064 C172.378 +G01 X+7.659 Y-18.076 B16.067 C171.121 +G01 X+7.672 Y-17.98 Z-2.269 B16.069 C170.686 +G01 X+7.722 Y-17.717 Z-2.268 B16.064 C169.451 +G01 X+7.772 Y-17.453 B16.066 C168.217 +G01 X+7.792 Y-17.348 Z-2.269 B16.069 C167.736 +G01 X+7.868 Y-17.036 Z-2.268 B16.064 C166.26 +G01 X+7.945 Y-16.724 Z-2.269 B16.069 C164.785 +G01 X+8.06 Y-16.341 Z-2.268 B16.063 C162.965 +G01 X+8.13 Y-16.107 Z-2.269 B16.069 C161.835 +G01 X+8.26 Y-15.741 Z-2.268 B16.063 C160.062 +G01 X+8.346 Y-15.501 Z-2.269 B16.069 C158.885 +G01 X+8.491 Y-15.152 Z-2.268 B16.063 C157.159 +G01 X+8.593 Y-14.907 Z-2.269 B16.069 C155.935 +G01 X+8.751 Y-14.576 Z-2.268 B16.063 C154.255 +G01 X+8.87 Y-14.327 Z-2.269 B16.068 C152.985 +G01 X+9.041 Y-14.013 Z-2.268 B16.063 C151.352 +G01 X+9.177 Y-13.762 Z-2.269 B16.068 C150.035 +G01 X+9.358 Y-13.465 Z-2.268 B16.063 C148.449 +G01 X+9.512 Y-13.213 Z-2.269 B16.068 C147.085 +G01 X+9.64 Y-13.025 Z-2.268 B16.064 C146.037 +G01 X+9.769 Y-12.838 B16.065 C144.989 +G01 X+9.876 Y-12.682 Z-2.269 B16.068 C144.135 +G01 X+10.071 Y-12.426 Z-2.268 C142.663 +G01 X+10.266 Y-12.17 Z-2.269 C141.191 +G01 X+10.474 Y-11.925 Z-2.268 B16.063 C139.715 +G01 X+10.682 Y-11.68 Z-2.269 B16.068 C138.239 +G01 X+10.902 Y-11.445 Z-2.268 B16.063 C136.763 +G01 X+11.122 Y-11.211 Z-2.269 B16.068 C135.286 +G01 X+11.354 Y-10.988 Z-2.268 C133.809 +G01 X+11.587 Y-10.766 Z-2.269 C132.332 +G01 X+11.891 Y-10.502 Z-2.268 B16.064 C130.472 +G01 X+12.073 Y-10.345 Z-2.269 B16.068 C129.379 +G01 X+12.383 Y-10.104 Z-2.268 B16.064 C127.569 +G01 X+12.581 Y-9.949 Z-2.269 B16.069 C126.425 +G01 X+12.894 Y-9.731 Z-2.268 B16.064 C124.666 +G01 X+13.108 Y-9.581 Z-2.269 B16.069 C123.472 +G01 X+13.423 Y-9.384 Z-2.268 B16.064 C121.762 +G01 X+13.654 Y-9.24 Z-2.269 B16.069 C120.519 +G01 X+13.935 Y-9.083 Z-2.268 B16.064 C119.042 +G01 X+14.216 Y-8.927 Z-2.269 B16.069 C117.565 +G01 X+14.462 Y-8.806 Z-2.268 B16.064 C116.314 +G01 X+14.709 Y-8.686 B16.066 C115.062 +G01 X+14.814 Y-8.635 Z-2.269 B16.069 C114.51 +G01 X+15.105 Y-8.511 Z-2.268 B16.064 C113.059 +G01 X+15.396 Y-8.387 Z-2.269 B16.069 C111.607 +G01 X+15.693 Y-8.278 Z-2.268 B16.064 C110.156 +G01 X+15.99 Y-8.169 Z-2.269 B16.069 C108.705 +G01 X+16.237 Y-8.092 Z-2.268 B16.064 C107.529 +G01 X+16.484 Y-8.015 B16.065 C106.352 +G01 X+16.603 Y-7.978 Z-2.269 B16.069 C105.762 +G01 X+16.915 Y-7.899 Z-2.268 B16.064 C104.287 +G01 X+17.226 Y-7.819 Z-2.269 B16.069 C102.812 +G01 X+17.542 Y-7.756 Z-2.268 C101.337 +G01 X+17.857 Y-7.693 Z-2.269 C99.861 +G01 X+18.156 Y-7.648 Z-2.268 B16.064 C98.476 +G01 X+18.454 Y-7.605 B16.068 C97.09 +G01 X+18.494 Y-7.599 Z-2.269 B16.069 C96.911 +G01 X+18.789 Y-7.57 Z-2.268 B16.064 C95.549 +G01 X+19.084 Y-7.542 B16.068 C94.187 +G01 X+19.134 Y-7.538 Z-2.269 B16.069 C93.961 +G01 X+19.425 Y-7.525 Z-2.268 B16.064 C92.622 +G01 X+19.716 Y-7.512 B16.067 C91.283 +G01 X+19.777 Y-7.51 Z-2.269 B16.069 C91.011 +G01 X+20.063 Y-7.512 Z-2.268 B16.064 C89.695 +G01 X+20.349 Y-7.514 B16.067 C88.379 +G01 X+20.42 Y-7.515 Z-2.269 B16.069 C88.061 +G01 X+20.701 Y-7.531 Z-2.268 B16.064 C86.768 +G01 X+20.981 Y-7.548 B16.067 C85.476 +G01 X+21.062 Y-7.553 Z-2.269 B16.069 C85.111 +G01 X+21.336 Y-7.583 Z-2.268 B16.064 C83.842 +G01 X+21.611 Y-7.614 B16.067 C82.572 +G01 X+21.701 Y-7.624 Z-2.269 B16.069 C82.161 +G01 X+21.969 Y-7.668 Z-2.268 B16.064 C80.915 +G01 X+22.236 Y-7.712 B16.066 C79.669 +G01 X+22.336 Y-7.728 Z-2.269 B16.069 C79.211 +G01 X+22.596 Y-7.784 Z-2.268 B16.064 C77.988 +G01 X+22.856 Y-7.841 B16.066 C76.765 +G01 X+22.965 Y-7.865 Z-2.269 B16.069 C76.261 +G01 X+23.275 Y-7.949 Z-2.268 B16.064 C74.785 +G01 X+23.586 Y-8.033 Z-2.269 B16.069 C73.31 +G01 X+23.96 Y-8.156 Z-2.268 B16.063 C71.513 +G01 X+24.197 Y-8.234 Z-2.269 B16.069 C70.36 +G01 X+24.555 Y-8.372 Z-2.268 B16.063 C68.61 +G01 X+24.797 Y-8.465 Z-2.269 B16.069 C67.41 +G01 X+25.138 Y-8.617 Z-2.268 B16.063 C65.707 +G01 X+25.385 Y-8.728 Z-2.269 B16.068 C64.46 +G01 X+25.708 Y-8.892 Z-2.268 B16.063 C62.804 +G01 X+25.958 Y-9.02 Z-2.269 B16.068 C61.51 +G01 X+26.263 Y-9.196 Z-2.268 B16.063 C59.901 +G01 X+26.515 Y-9.341 Z-2.269 B16.068 C58.56 +G01 X+26.708 Y-9.466 Z-2.268 B16.064 C57.501 +G01 X+26.901 Y-9.59 B16.065 C56.441 +G01 X+27.055 Y-9.691 Z-2.269 B16.068 C55.61 +G01 X+27.316 Y-9.879 Z-2.268 C54.135 +G01 X+27.576 Y-10.067 Z-2.269 C52.66 +G01 X+27.827 Y-10.269 Z-2.268 B16.063 C51.188 +G01 X+28.078 Y-10.471 Z-2.269 B16.068 C49.716 +G01 X+28.318 Y-10.685 Z-2.268 B16.063 C48.24 +G01 X+28.558 Y-10.899 Z-2.269 B16.068 C46.763 +G01 X+28.786 Y-11.125 Z-2.268 B16.063 C45.286 +G01 X+29.015 Y-11.352 Z-2.269 B16.069 C43.809 +G01 X+29.232 Y-11.589 Z-2.268 B16.063 C42.332 +G01 X+29.448 Y-11.827 Z-2.269 B16.069 C40.856 +G01 X+29.7 Y-12.134 Z-2.268 B16.064 C39.021 +G01 X+29.856 Y-12.324 Z-2.269 B16.069 C37.902 +G01 X+30.086 Y-12.636 Z-2.268 B16.064 C36.117 +G01 X+30.238 Y-12.842 Z-2.269 B16.069 C34.949 +G01 X+30.446 Y-13.156 Z-2.268 B16.064 C33.214 +G01 X+30.593 Y-13.378 Z-2.269 B16.069 C31.995 +G01 X+30.757 Y-13.655 Z-2.268 B16.064 C30.519 +G01 X+30.92 Y-13.933 Z-2.269 B16.069 C29.042 +G01 X+31.049 Y-14.178 Z-2.268 B16.064 C27.778 +G01 X+31.177 Y-14.424 B16.066 C26.514 +G01 X+31.218 Y-14.503 Z-2.269 B16.069 C26.088 +G01 X+31.331 Y-14.75 Z-2.268 B16.064 C24.849 +G01 X+31.445 Y-14.997 B16.065 C23.61 +G01 X+31.492 Y-15.104 Z-2.269 B16.069 C23.059 +G01 X+31.608 Y-15.394 Z-2.268 B16.064 C21.623 +G01 X+31.724 Y-15.685 Z-2.269 B16.069 C20.187 +G01 X+31.808 Y-15.933 Z-2.268 B16.064 C18.996 +G01 X+31.892 Y-16.181 B16.065 C17.804 +G01 X+31.93 Y-16.295 Z-2.269 B16.069 C17.237 +G01 X+32 Y-16.541 Z-2.268 B16.064 C16.069 +G01 X+32.07 Y-16.788 B16.065 C14.901 +G01 X+32.105 Y-16.914 Z-2.269 B16.069 C14.287 +G01 X+32.177 Y-17.227 Z-2.268 B16.064 C12.812 +G01 X+32.248 Y-17.541 Z-2.269 B16.069 C11.337 +G01 X+32.303 Y-17.858 Z-2.268 C9.861 +G01 X+32.358 Y-18.175 Z-2.269 C8.386 +G01 X+32.395 Y-18.472 Z-2.268 B16.064 C7.013 +G01 X+32.43 Y-18.769 B16.068 C5.638 +G01 X+32.436 Y-18.813 Z-2.269 B16.069 C5.436 +G01 X+32.457 Y-19.107 Z-2.268 B16.064 C4.086 +G01 X+32.477 Y-19.4 B16.068 C2.735 +G01 X+32.48 Y-19.455 Z-2.269 B16.069 C2.486 +G01 X+32.486 Y-19.744 Z-2.268 B16.064 C1.159 +G01 X+32.491 Y-20.033 B16.067 C359.831 +G01 X+32.492 Y-20.098 Z-2.269 B16.069 C359.536 +G01 X+32.483 Y-20.382 Z-2.268 B16.064 C358.232 +G01 X+32.473 Y-20.666 B16.067 C356.928 +G01 X+32.47 Y-20.741 Z-2.269 B16.069 C356.586 +G01 X+32.447 Y-21.019 Z-2.268 B16.064 C355.305 +G01 X+32.423 Y-21.296 B16.067 C354.024 +G01 X+32.416 Y-21.382 Z-2.269 B16.069 C353.636 +G01 X+32.379 Y-21.653 Z-2.268 B16.064 C352.378 +G01 X+32.341 Y-21.924 B16.067 C351.121 +G01 X+32.328 Y-22.019 Z-2.269 B16.069 C350.686 +G01 X+32.278 Y-22.283 Z-2.268 B16.064 C349.451 +G01 X+32.228 Y-22.547 B16.066 C348.217 +G01 X+32.208 Y-22.651 Z-2.269 B16.069 C347.736 +G01 X+32.132 Y-22.964 Z-2.268 B16.064 C346.26 +G01 X+32.055 Y-23.276 Z-2.269 B16.069 C344.785 +G01 X+31.941 Y-23.658 Z-2.268 B16.063 C342.965 +G01 X+31.87 Y-23.893 Z-2.269 B16.069 C341.835 +G01 X+31.74 Y-24.259 Z-2.268 B16.063 C340.062 +G01 X+31.654 Y-24.498 Z-2.269 B16.069 C338.885 +G01 X+31.509 Y-24.848 Z-2.268 B16.063 C337.159 +G01 X+31.407 Y-25.092 Z-2.269 B16.069 C335.935 +G01 X+31.249 Y-25.424 Z-2.268 B16.063 C334.255 +G01 X+31.13 Y-25.673 Z-2.269 B16.068 C332.985 +G01 X+30.959 Y-25.987 Z-2.268 B16.063 C331.352 +G01 X+30.823 Y-26.238 Z-2.269 B16.068 C330.035 +G01 X+30.642 Y-26.534 Z-2.268 B16.063 C328.449 +G01 X+30.488 Y-26.787 Z-2.269 B16.068 C327.085 +G01 X+30.36 Y-26.975 Z-2.268 B16.064 C326.037 +G01 X+30.231 Y-27.162 B16.065 C324.989 +G01 X+30.124 Y-27.318 Z-2.269 B16.068 C324.135 +G01 X+29.929 Y-27.574 Z-2.268 C322.663 +G01 X+29.734 Y-27.83 Z-2.269 C321.191 +G01 X+29.526 Y-28.075 Z-2.268 B16.063 C319.715 +G01 X+29.318 Y-28.32 Z-2.269 B16.068 C318.239 +G01 X+29.098 Y-28.555 Z-2.268 B16.063 C316.763 +G01 X+28.878 Y-28.789 Z-2.269 B16.068 C315.286 +G01 X+28.646 Y-29.012 Z-2.268 C313.809 +G01 X+28.413 Y-29.234 Z-2.269 C312.332 +G01 X+28.109 Y-29.498 Z-2.268 B16.064 C310.472 +G01 X+27.927 Y-29.655 Z-2.269 B16.068 C309.379 +G01 X+27.617 Y-29.896 Z-2.268 B16.064 C307.569 +G01 X+27.419 Y-30.05 Z-2.269 B16.069 C306.425 +G01 X+27.106 Y-30.269 Z-2.268 B16.064 C304.666 +G01 X+26.892 Y-30.419 Z-2.269 B16.069 C303.472 +G01 X+26.577 Y-30.616 Z-2.268 B16.064 C301.762 +G01 X+26.347 Y-30.76 Z-2.269 B16.069 C300.519 +G01 X+26.065 Y-30.917 Z-2.268 B16.064 C299.042 +G01 X+25.784 Y-31.072 Z-2.269 B16.069 C297.565 +G01 X+25.538 Y-31.194 Z-2.268 B16.064 C296.314 +G01 X+25.291 Y-31.314 B16.066 C295.062 +G01 X+25.186 Y-31.364 Z-2.269 B16.069 C294.51 +G01 X+24.895 Y-31.489 Z-2.268 B16.064 C293.059 +G01 X+24.604 Y-31.613 Z-2.269 B16.069 C291.607 +G01 X+24.307 Y-31.722 Z-2.268 B16.064 C290.156 +G01 X+24.01 Y-31.831 Z-2.269 B16.069 C288.705 +G01 X+23.763 Y-31.908 Z-2.268 B16.064 C287.529 +G01 X+23.516 Y-31.984 B16.065 C286.352 +G01 X+23.397 Y-32.022 Z-2.269 B16.069 C285.762 +G01 X+23.085 Y-32.101 Z-2.268 B16.064 C284.287 +G01 X+22.774 Y-32.18 Z-2.269 B16.069 C282.812 +G01 X+22.458 Y-32.244 Z-2.268 C281.337 +G01 X+22.143 Y-32.307 Z-2.269 C279.861 +G01 X+21.844 Y-32.352 Z-2.268 B16.064 C278.476 +G01 X+21.546 Y-32.395 B16.068 C277.09 +G01 X+21.506 Y-32.401 Z-2.269 B16.069 C276.911 +G01 X+21.211 Y-32.43 Z-2.268 B16.064 C275.549 +G01 X+20.916 Y-32.457 B16.068 C274.187 +G01 X+20.866 Y-32.462 Z-2.269 B16.069 C273.961 +G01 X+20.575 Y-32.475 Z-2.268 B16.064 C272.622 +G01 X+20.284 Y-32.488 B16.067 C271.283 +G01 X+20.223 Y-32.49 Z-2.269 B16.069 C271.011 +G01 X+19.937 Y-32.488 Z-2.268 B16.064 C269.695 +G01 X+19.651 Y-32.486 B16.067 C268.379 +G01 X+19.58 Y-32.485 Z-2.269 B16.069 C268.061 +G01 X+19.299 Y-32.469 Z-2.268 B16.064 C266.768 +G01 X+19.019 Y-32.452 B16.067 C265.476 +G01 X+18.938 Y-32.447 Z-2.269 B16.069 C265.111 +G01 X+18.664 Y-32.417 Z-2.268 B16.064 C263.842 +G01 X+18.389 Y-32.386 B16.067 C262.572 +G01 X+18.299 Y-32.376 Z-2.269 B16.069 C262.161 +G01 X+18.031 Y-32.332 Z-2.268 B16.064 C260.915 +G01 X+17.764 Y-32.288 B16.066 C259.669 +G01 X+17.664 Y-32.272 Z-2.269 B16.069 C259.211 +G01 X+17.404 Y-32.216 Z-2.268 B16.064 C257.988 +G01 X+17.144 Y-32.159 B16.066 C256.765 +G01 X+17.035 Y-32.135 Z-2.269 B16.069 C256.26 +G01 X+16.725 Y-32.051 Z-2.268 B16.064 C254.785 +G01 X+16.414 Y-31.967 Z-2.269 B16.069 C253.31 +G01 X+16.04 Y-31.844 Z-2.268 B16.063 C251.513 +G01 X+15.803 Y-31.766 Z-2.269 B16.069 C250.36 +G01 X+15.445 Y-31.628 Z-2.268 B16.063 C248.61 +G01 X+15.203 Y-31.534 Z-2.269 B16.069 C247.41 +G01 X+14.909 Y-31.404 Z-2.268 B16.064 C245.935 +G01 X+14.616 Y-31.272 Z-2.269 B16.068 C244.46 +G01 X+14.292 Y-31.108 Z-2.268 B16.063 C242.804 +G01 X+14.007 Y-30.962 Z-2.269 B16.069 C241.352 +G01 X+13.744 Y-30.81 Z-2.268 B16.064 C239.946 +G01 X+13.481 Y-30.657 Z-2.269 B16.069 C238.539 +G01 X+13.213 Y-30.483 Z-2.268 B16.064 C237.074 +G01 X+12.945 Y-30.309 Z-2.269 B16.068 C235.61 +G01 X+12.684 Y-30.121 Z-2.268 B16.063 C234.135 +G01 X+12.424 Y-29.932 Z-2.269 B16.068 C232.659 +G01 X+12.173 Y-29.731 Z-2.268 B16.063 C231.188 +G01 X+11.922 Y-29.529 Z-2.269 B16.068 C229.716 +G01 X+11.682 Y-29.315 Z-2.268 C228.239 +G01 X+11.442 Y-29.101 Z-2.269 C226.763 +G01 X+11.188 Y-28.849 Z-2.268 B16.064 C225.108 +G01 X+11.187 Y-28.715 Z-2.241 B15.94 C224.661 +G01 X+11.055 Y-28.584 Z-2.242 B15.943 C223.818 +G01 X+10.758 Y-28.259 Z-2.241 B15.94 C221.764 +G01 X+10.624 Y-28.112 Z-2.242 B15.943 C220.864 +G01 X+10.352 Y-27.78 Z-2.241 B15.94 C218.86 +G01 X+10.219 Y-27.619 Z-2.242 B15.943 C217.911 +G01 X+9.97 Y-27.281 Z-2.24 B15.939 C215.957 +G01 X+9.84 Y-27.105 Z-2.242 B15.943 C214.958 +G01 X+9.614 Y-26.764 Z-2.24 B15.939 C213.053 +G01 X+9.488 Y-26.573 Z-2.242 B15.944 C212.005 +G01 X+9.285 Y-26.229 Z-2.24 B15.939 C210.15 +G01 X+9.163 Y-26.023 Z-2.242 B15.944 C209.052 +G01 X+8.983 Y-25.678 Z-2.24 B15.939 C207.247 +G01 X+8.868 Y-25.457 Z-2.242 B15.944 C206.099 +G01 X+8.755 Y-25.211 Z-2.24 B15.938 C204.855 +G01 X+8.642 Y-24.965 Z-2.241 B15.94 C203.61 +G01 X+8.602 Y-24.877 Z-2.242 B15.944 C203.146 +G01 X+8.503 Y-24.63 Z-2.24 B15.939 C201.926 +G01 X+8.405 Y-24.383 Z-2.241 B15.94 C200.707 +G01 X+8.366 Y-24.283 Z-2.242 B15.944 C200.193 +G01 X+8.282 Y-24.037 Z-2.24 B15.939 C198.998 +G01 X+8.198 Y-23.79 Z-2.241 B15.94 C197.804 +G01 X+8.161 Y-23.679 Z-2.242 B15.944 C197.24 +G01 X+8.091 Y-23.433 Z-2.24 B15.939 C196.07 +G01 X+8.022 Y-23.187 Z-2.241 B15.94 C194.901 +G01 X+7.982 Y-23.043 B15.943 C194.188 +G01 X+7.913 Y-22.742 Z-2.24 B15.939 C192.763 +G01 X+7.845 Y-22.442 Z-2.242 B15.944 C191.338 +G01 X+7.803 Y-22.2 Z-2.24 B15.939 C190.216 +G01 X+7.761 Y-21.959 Z-2.241 C189.094 +G01 X+7.735 Y-21.812 Z-2.242 B15.944 C188.382 +G01 X+7.696 Y-21.496 Z-2.24 B15.939 C186.91 +G01 X+7.658 Y-21.179 Z-2.242 B15.944 C185.438 +G01 X+7.636 Y-20.861 Z-2.24 C183.963 +G01 X+7.614 Y-20.542 Z-2.242 C182.488 +G01 X+7.608 Y-20.223 Z-2.24 C181.013 +G01 X+7.602 Y-19.904 Z-2.242 C179.538 +G01 X+7.612 Y-19.605 Z-2.24 B15.939 C178.153 +G01 X+7.623 Y-19.306 Z-2.241 B15.943 C176.768 +G01 X+7.624 Y-19.266 Z-2.242 B15.944 C176.589 +G01 X+7.649 Y-18.973 Z-2.24 B15.939 C175.226 +G01 X+7.674 Y-18.679 Z-2.241 B15.943 C173.864 +G01 X+7.678 Y-18.63 Z-2.242 B15.944 C173.639 +G01 X+7.717 Y-18.343 Z-2.24 B15.939 C172.3 +G01 X+7.757 Y-18.057 Z-2.241 B15.942 C170.961 +G01 X+7.765 Y-17.997 Z-2.242 B15.944 C170.689 +G01 X+7.818 Y-17.718 Z-2.24 B15.939 C169.373 +G01 X+7.871 Y-17.439 Z-2.241 B15.942 C168.057 +G01 X+7.884 Y-17.37 Z-2.242 B15.944 C167.739 +G01 X+7.95 Y-17.099 Z-2.24 B15.939 C166.447 +G01 X+8.017 Y-16.828 Z-2.241 B15.942 C165.154 +G01 X+8.036 Y-16.75 Z-2.242 B15.944 C164.79 +G01 X+8.127 Y-16.444 Z-2.24 B15.939 C163.315 +G01 X+8.219 Y-16.138 Z-2.242 B15.944 C161.84 +G01 X+8.349 Y-15.774 Z-2.24 B15.938 C160.062 +G01 X+8.433 Y-15.537 Z-2.242 B15.943 C158.89 +G01 X+8.578 Y-15.189 Z-2.24 B15.938 C157.159 +G01 X+8.678 Y-14.947 Z-2.242 B15.943 C155.94 +G01 X+8.836 Y-14.617 Z-2.24 B15.938 C154.255 +G01 X+8.954 Y-14.371 Z-2.242 B15.943 C152.991 +G01 X+9.123 Y-14.058 Z-2.24 B15.938 C151.352 +G01 X+9.258 Y-13.81 Z-2.242 B15.943 C150.041 +G01 X+9.438 Y-13.515 Z-2.24 B15.938 C148.449 +G01 X+9.591 Y-13.265 Z-2.242 B15.943 C147.091 +G01 X+9.771 Y-13.002 Z-2.24 C145.616 +G01 X+9.951 Y-12.738 Z-2.242 C144.141 +G01 X+10.145 Y-12.484 Z-2.24 B15.938 C142.666 +G01 X+10.339 Y-12.23 Z-2.242 B15.943 C141.191 +G01 X+10.545 Y-11.987 Z-2.24 B15.938 C139.719 +G01 X+10.751 Y-11.744 Z-2.242 B15.943 C138.247 +G01 X+10.97 Y-11.511 Z-2.24 B15.938 C136.771 +G01 X+11.189 Y-11.278 Z-2.242 B15.943 C135.294 +G01 X+11.419 Y-11.057 Z-2.24 C133.818 +G01 X+11.649 Y-10.836 Z-2.242 C132.341 +G01 X+11.978 Y-10.552 Z-2.241 B15.94 C130.312 +G01 X+12.132 Y-10.419 Z-2.242 B15.943 C129.388 +G01 X+12.467 Y-10.158 Z-2.241 B15.94 C127.408 +G01 X+12.636 Y-10.026 Z-2.242 B15.943 C126.435 +G01 X+12.975 Y-9.789 Z-2.24 B15.939 C124.505 +G01 X+13.159 Y-9.66 Z-2.242 B15.944 C123.482 +G01 X+13.501 Y-9.446 Z-2.24 B15.939 C121.602 +G01 X+13.7 Y-9.322 Z-2.242 B15.944 C120.529 +G01 X+14.044 Y-9.131 Z-2.24 B15.939 C118.698 +G01 X+14.258 Y-9.012 Z-2.242 B15.944 C117.575 +G01 X+14.603 Y-8.843 Z-2.24 B15.939 C115.795 +G01 X+14.831 Y-8.731 Z-2.242 B15.944 C114.622 +G01 X+15.078 Y-8.625 Z-2.24 B15.939 C113.391 +G01 X+15.325 Y-8.52 Z-2.241 B15.94 C112.159 +G01 X+15.418 Y-8.48 Z-2.242 B15.944 C111.669 +G01 X+15.665 Y-8.389 Z-2.24 B15.939 C110.462 +G01 X+15.912 Y-8.298 Z-2.241 B15.94 C109.255 +G01 X+16.018 Y-8.259 Z-2.242 B15.944 C108.716 +G01 X+16.264 Y-8.182 Z-2.24 B15.939 C107.534 +G01 X+16.51 Y-8.106 Z-2.241 B15.94 C106.352 +G01 X+16.627 Y-8.07 Z-2.242 B15.944 C105.763 +G01 X+16.872 Y-8.007 Z-2.24 B15.939 C104.606 +G01 X+17.117 Y-7.945 Z-2.241 B15.94 C103.449 +G01 X+17.262 Y-7.909 B15.944 C102.737 +G01 X+17.567 Y-7.847 Z-2.24 B15.939 C101.3 +G01 X+17.872 Y-7.786 Z-2.242 B15.944 C99.863 +G01 X+18.112 Y-7.75 Z-2.241 B15.939 C98.753 +G01 X+18.352 Y-7.715 C97.642 +G01 X+18.503 Y-7.693 Z-2.242 B15.944 C96.913 +G01 X+18.821 Y-7.662 Z-2.24 B15.939 C95.438 +G01 X+19.139 Y-7.632 Z-2.242 B15.944 C93.963 +G01 X+19.458 Y-7.618 Z-2.24 C92.488 +G01 X+19.777 Y-7.604 Z-2.242 C91.013 +G01 X+20.096 Y-7.606 Z-2.24 C89.538 +G01 X+20.415 Y-7.609 Z-2.242 C88.063 +G01 X+20.711 Y-7.626 Z-2.24 B15.939 C86.69 +G01 X+21.008 Y-7.644 Z-2.241 B15.943 C85.316 +G01 X+21.052 Y-7.647 Z-2.242 B15.944 C85.114 +G01 X+21.342 Y-7.679 Z-2.24 B15.939 C83.763 +G01 X+21.632 Y-7.711 Z-2.241 B15.943 C82.413 +G01 X+21.687 Y-7.717 Z-2.242 B15.944 C82.164 +G01 X+21.97 Y-7.763 Z-2.24 B15.939 C80.837 +G01 X+22.253 Y-7.81 Z-2.241 B15.942 C79.509 +G01 X+22.317 Y-7.821 Z-2.242 B15.944 C79.214 +G01 X+22.592 Y-7.88 Z-2.24 B15.939 C77.91 +G01 X+22.867 Y-7.94 Z-2.241 B15.942 C76.605 +G01 X+22.941 Y-7.956 Z-2.242 B15.944 C76.265 +G01 X+23.249 Y-8.039 Z-2.24 B15.939 C74.79 +G01 X+23.557 Y-8.123 Z-2.242 B15.944 C73.315 +G01 X+23.93 Y-8.246 Z-2.24 B15.938 C71.513 +G01 X+24.164 Y-8.322 Z-2.242 B15.944 C70.365 +G01 X+24.52 Y-8.46 Z-2.24 B15.938 C68.61 +G01 X+24.759 Y-8.552 Z-2.242 B15.943 C67.415 +G01 X+25.099 Y-8.704 Z-2.24 B15.938 C65.707 +G01 X+25.342 Y-8.812 Z-2.242 B15.943 C64.465 +G01 X+25.664 Y-8.976 Z-2.24 B15.938 C62.804 +G01 X+25.911 Y-9.102 Z-2.242 B15.943 C61.516 +G01 X+26.216 Y-9.277 Z-2.24 B15.938 C59.9 +G01 X+26.464 Y-9.421 Z-2.242 B15.943 C58.566 +G01 X+26.751 Y-9.606 Z-2.24 B15.938 C56.997 +G01 X+27 Y-9.768 Z-2.242 B15.943 C55.616 +G01 X+27.259 Y-9.954 Z-2.24 C54.141 +G01 X+27.518 Y-10.142 Z-2.242 C52.666 +G01 X+27.767 Y-10.341 Z-2.24 C51.195 +G01 X+28.015 Y-10.542 Z-2.242 C49.724 +G01 X+28.254 Y-10.754 Z-2.24 B15.938 C48.247 +G01 X+28.492 Y-10.967 Z-2.242 B15.943 C46.771 +G01 X+28.719 Y-11.191 Z-2.24 C45.294 +G01 X+28.945 Y-11.416 Z-2.242 C43.818 +G01 X+29.242 Y-11.741 Z-2.241 B15.94 C41.764 +G01 X+29.376 Y-11.888 Z-2.242 B15.943 C40.864 +G01 X+29.648 Y-12.22 Z-2.241 B15.94 C38.86 +G01 X+29.781 Y-12.381 Z-2.242 B15.943 C37.911 +G01 X+30.03 Y-12.719 Z-2.24 B15.939 C35.957 +G01 X+30.16 Y-12.895 Z-2.242 B15.943 C34.958 +G01 X+30.386 Y-13.236 Z-2.24 B15.939 C33.053 +G01 X+30.512 Y-13.427 Z-2.242 B15.944 C32.005 +G01 X+30.715 Y-13.771 Z-2.24 B15.939 C30.15 +G01 X+30.837 Y-13.977 Z-2.242 B15.944 C29.052 +G01 X+31.017 Y-14.322 Z-2.24 B15.939 C27.247 +G01 X+31.132 Y-14.543 Z-2.242 B15.944 C26.099 +G01 X+31.245 Y-14.789 Z-2.24 B15.938 C24.855 +G01 X+31.358 Y-15.035 Z-2.241 B15.94 C23.61 +G01 X+31.398 Y-15.123 Z-2.242 B15.944 C23.146 +G01 X+31.497 Y-15.37 Z-2.24 B15.939 C21.926 +G01 X+31.595 Y-15.617 Z-2.241 B15.94 C20.707 +G01 X+31.634 Y-15.717 Z-2.242 B15.944 C20.193 +G01 X+31.718 Y-15.963 Z-2.24 B15.939 C18.998 +G01 X+31.802 Y-16.21 Z-2.241 B15.94 C17.804 +G01 X+31.839 Y-16.321 Z-2.242 B15.944 C17.24 +G01 X+31.909 Y-16.567 Z-2.24 B15.939 C16.07 +G01 X+31.978 Y-16.813 Z-2.241 B15.94 C14.901 +G01 X+32.018 Y-16.957 B15.943 C14.188 +G01 X+32.087 Y-17.257 Z-2.24 B15.939 C12.763 +G01 X+32.155 Y-17.558 Z-2.242 B15.944 C11.338 +G01 X+32.197 Y-17.799 Z-2.24 B15.939 C10.216 +G01 X+32.239 Y-18.041 Z-2.241 C9.094 +G01 X+32.265 Y-18.188 Z-2.242 B15.944 C8.382 +G01 X+32.304 Y-18.504 Z-2.24 B15.939 C6.91 +G01 X+32.342 Y-18.821 Z-2.242 B15.944 C5.438 +G01 X+32.364 Y-19.139 Z-2.24 C3.963 +G01 X+32.386 Y-19.458 Z-2.242 C2.488 +G01 X+32.392 Y-19.777 Z-2.24 C1.013 +G01 X+32.398 Y-20.096 Z-2.242 C359.538 +G01 X+32.388 Y-20.395 Z-2.24 B15.939 C358.153 +G01 X+32.377 Y-20.694 Z-2.241 B15.943 C356.768 +G01 X+32.376 Y-20.734 Z-2.242 B15.944 C356.589 +G01 X+32.351 Y-21.027 Z-2.24 B15.939 C355.226 +G01 X+32.326 Y-21.32 Z-2.241 B15.943 C353.864 +G01 X+32.322 Y-21.37 Z-2.242 B15.944 C353.639 +G01 X+32.283 Y-21.657 Z-2.24 B15.939 C352.3 +G01 X+32.243 Y-21.943 Z-2.241 B15.942 C350.961 +G01 X+32.235 Y-22.003 Z-2.242 B15.944 C350.689 +G01 X+32.182 Y-22.282 Z-2.24 B15.939 C349.373 +G01 X+32.129 Y-22.561 Z-2.241 B15.942 C348.057 +G01 X+32.116 Y-22.63 Z-2.242 B15.944 C347.739 +G01 X+32.05 Y-22.901 Z-2.24 B15.939 C346.447 +G01 X+31.983 Y-23.172 Z-2.241 B15.942 C345.154 +G01 X+31.964 Y-23.25 Z-2.242 B15.944 C344.79 +G01 X+31.873 Y-23.556 Z-2.24 B15.939 C343.315 +G01 X+31.781 Y-23.862 Z-2.242 B15.944 C341.84 +G01 X+31.651 Y-24.226 Z-2.24 B15.938 C340.062 +G01 X+31.567 Y-24.463 Z-2.242 B15.943 C338.89 +G01 X+31.422 Y-24.811 Z-2.24 B15.938 C337.159 +G01 X+31.322 Y-25.053 Z-2.242 B15.943 C335.94 +G01 X+31.164 Y-25.383 Z-2.24 B15.938 C334.255 +G01 X+31.046 Y-25.629 Z-2.242 B15.943 C332.991 +G01 X+30.877 Y-25.942 Z-2.24 B15.938 C331.352 +G01 X+30.742 Y-26.19 Z-2.242 B15.943 C330.041 +G01 X+30.562 Y-26.485 Z-2.24 B15.938 C328.449 +G01 X+30.409 Y-26.735 Z-2.242 B15.943 C327.091 +G01 X+30.229 Y-26.998 Z-2.24 C325.616 +G01 X+30.049 Y-27.262 Z-2.242 C324.141 +G01 X+29.855 Y-27.516 Z-2.24 B15.938 C322.666 +G01 X+29.661 Y-27.77 Z-2.242 B15.943 C321.191 +G01 X+29.455 Y-28.013 Z-2.24 B15.938 C319.719 +G01 X+29.249 Y-28.256 Z-2.242 B15.943 C318.247 +G01 X+29.03 Y-28.489 Z-2.24 B15.938 C316.771 +G01 X+28.811 Y-28.721 Z-2.242 B15.943 C315.294 +G01 X+28.581 Y-28.943 Z-2.24 C313.818 +G01 X+28.351 Y-29.163 Z-2.242 C312.341 +G01 X+28.022 Y-29.448 Z-2.241 B15.94 C310.312 +G01 X+27.868 Y-29.581 Z-2.242 B15.943 C309.388 +G01 X+27.533 Y-29.842 Z-2.241 B15.94 C307.408 +G01 X+27.364 Y-29.974 Z-2.242 B15.943 C306.435 +G01 X+27.025 Y-30.211 Z-2.24 B15.939 C304.505 +G01 X+26.841 Y-30.339 Z-2.242 B15.944 C303.482 +G01 X+26.499 Y-30.554 Z-2.24 B15.939 C301.602 +G01 X+26.3 Y-30.678 Z-2.242 B15.944 C300.529 +G01 X+25.956 Y-30.869 Z-2.24 B15.939 C298.698 +G01 X+25.742 Y-30.988 Z-2.242 B15.944 C297.575 +G01 X+25.397 Y-31.157 Z-2.24 B15.939 C295.795 +G01 X+25.169 Y-31.269 Z-2.242 B15.944 C294.622 +G01 X+24.922 Y-31.375 Z-2.24 B15.939 C293.391 +G01 X+24.675 Y-31.48 Z-2.241 B15.94 C292.159 +G01 X+24.582 Y-31.52 Z-2.242 B15.944 C291.669 +G01 X+24.335 Y-31.611 Z-2.24 B15.939 C290.462 +G01 X+24.088 Y-31.702 Z-2.241 B15.94 C289.255 +G01 X+23.982 Y-31.741 Z-2.242 B15.944 C288.716 +G01 X+23.736 Y-31.817 Z-2.24 B15.939 C287.534 +G01 X+23.49 Y-31.894 Z-2.241 B15.94 C286.352 +G01 X+23.373 Y-31.93 Z-2.242 B15.944 C285.763 +G01 X+23.128 Y-31.993 Z-2.24 B15.939 C284.606 +G01 X+22.883 Y-32.055 Z-2.241 B15.94 C283.449 +G01 X+22.738 Y-32.091 B15.944 C282.737 +G01 X+22.433 Y-32.153 Z-2.24 B15.939 C281.299 +G01 X+22.128 Y-32.214 Z-2.242 B15.944 C279.863 +G01 X+21.888 Y-32.249 Z-2.241 B15.939 C278.753 +G01 X+21.648 Y-32.285 C277.642 +G01 X+21.497 Y-32.307 Z-2.242 B15.944 C276.913 +G01 X+21.179 Y-32.338 Z-2.24 B15.939 C275.438 +G01 X+20.861 Y-32.368 Z-2.242 B15.944 C273.963 +G01 X+20.542 Y-32.382 Z-2.24 C272.488 +G01 X+20.223 Y-32.396 Z-2.242 C271.013 +G01 X+19.904 Y-32.394 Z-2.24 C269.538 +G01 X+19.585 Y-32.391 Z-2.242 C268.063 +G01 X+19.289 Y-32.374 Z-2.24 B15.939 C266.69 +G01 X+18.992 Y-32.356 Z-2.241 B15.943 C265.316 +G01 X+18.948 Y-32.353 Z-2.242 B15.944 C265.114 +G01 X+18.658 Y-32.321 Z-2.24 B15.939 C263.763 +G01 X+18.368 Y-32.289 Z-2.241 B15.943 C262.413 +G01 X+18.313 Y-32.282 Z-2.242 B15.944 C262.164 +G01 X+18.03 Y-32.236 Z-2.24 B15.939 C260.837 +G01 X+17.747 Y-32.19 Z-2.241 B15.942 C259.509 +G01 X+17.683 Y-32.179 Z-2.242 B15.944 C259.214 +G01 X+17.408 Y-32.12 Z-2.24 B15.939 C257.91 +G01 X+17.133 Y-32.06 Z-2.241 B15.942 C256.605 +G01 X+17.059 Y-32.044 Z-2.242 B15.944 C256.265 +G01 X+16.751 Y-31.961 Z-2.24 B15.939 C254.79 +G01 X+16.443 Y-31.877 Z-2.242 B15.944 C253.315 +G01 X+16.07 Y-31.754 Z-2.24 B15.938 C251.513 +G01 X+15.836 Y-31.678 Z-2.242 B15.944 C250.365 +G01 X+15.48 Y-31.54 Z-2.24 B15.938 C248.61 +G01 X+15.241 Y-31.448 Z-2.242 B15.943 C247.415 +G01 X+14.949 Y-31.318 Z-2.24 B15.938 C245.94 +G01 X+14.658 Y-31.188 Z-2.242 B15.943 C244.466 +G01 X+14.336 Y-31.024 Z-2.24 B15.938 C242.804 +G01 X+14.052 Y-30.879 Z-2.242 B15.944 C241.352 +G01 X+13.792 Y-30.728 Z-2.241 B15.939 C239.948 +G01 X+13.531 Y-30.577 Z-2.242 B15.944 C238.543 +G01 X+13.265 Y-30.405 Z-2.241 B15.938 C237.08 +G01 X+13 Y-30.232 Z-2.242 B15.943 C235.616 +G01 X+12.741 Y-30.046 Z-2.24 B15.938 C234.141 +G01 X+12.482 Y-29.858 Z-2.242 B15.943 C232.666 +G01 X+12.233 Y-29.658 Z-2.24 B15.938 C231.195 +G01 X+11.985 Y-29.458 Z-2.242 B15.943 C229.724 +G01 X+11.746 Y-29.246 Z-2.24 C228.247 +G01 X+11.508 Y-29.033 Z-2.242 C226.771 +G01 X+11.254 Y-28.782 Z-2.24 B15.939 C225.11 +G01 Y-28.648 Z-2.214 B15.815 C224.655 +G01 X+11.124 Y-28.52 Z-2.215 B15.818 C223.826 +G01 X+10.929 Y-28.306 Z-2.213 B15.813 C222.481 +G01 X+10.697 Y-28.051 Z-2.215 B15.818 C220.873 +G01 X+10.52 Y-27.836 Z-2.213 B15.813 C219.578 +G01 X+10.295 Y-27.562 Z-2.215 B15.818 C217.921 +G01 X+10.106 Y-27.307 Z-2.214 B15.813 C216.444 +G01 X+9.918 Y-27.052 Z-2.215 B15.818 C214.968 +G01 X+9.674 Y-26.684 Z-2.214 B15.815 C212.893 +G01 X+9.569 Y-26.524 Z-2.215 B15.818 C212.015 +G01 X+9.349 Y-26.152 Z-2.214 B15.814 C209.989 +G01 X+9.247 Y-25.978 Z-2.215 B15.819 C209.062 +G01 X+9.051 Y-25.605 Z-2.214 B15.814 C207.086 +G01 X+8.953 Y-25.417 Z-2.215 B15.819 C206.109 +G01 X+8.782 Y-25.043 Z-2.214 B15.814 C204.183 +G01 X+8.689 Y-24.841 Z-2.215 B15.819 C203.157 +G01 X+8.591 Y-24.595 Z-2.214 B15.813 C201.932 +G01 X+8.494 Y-24.349 B15.815 C200.707 +G01 X+8.455 Y-24.252 Z-2.215 B15.819 C200.204 +G01 X+8.371 Y-24.007 Z-2.214 B15.814 C199.004 +G01 X+8.288 Y-23.761 B15.815 C197.804 +G01 X+8.251 Y-23.652 Z-2.215 B15.819 C197.251 +G01 X+8.182 Y-23.408 Z-2.214 B15.814 C196.076 +G01 X+8.113 Y-23.163 B15.815 C194.901 +G01 X+8.079 Y-23.043 Z-2.215 B15.819 C194.298 +G01 X+8.023 Y-22.8 Z-2.214 B15.814 C193.148 +G01 X+7.968 Y-22.557 C191.997 +G01 X+7.938 Y-22.425 Z-2.215 B15.819 C191.346 +G01 X+7.896 Y-22.184 Z-2.214 B15.814 C190.22 +G01 X+7.854 Y-21.944 C189.094 +G01 X+7.829 Y-21.801 Z-2.215 B15.819 C188.393 +G01 X+7.8 Y-21.564 Z-2.214 B15.814 C187.292 +G01 X+7.771 Y-21.326 C186.191 +G01 X+7.753 Y-21.172 Z-2.215 B15.819 C185.44 +G01 X+7.736 Y-20.939 Z-2.214 B15.814 C184.364 +G01 X+7.72 Y-20.705 C183.288 +G01 X+7.708 Y-20.523 B15.818 C182.414 +G01 X+7.702 Y-20.215 B15.814 C180.977 +G01 X+7.697 Y-19.906 Z-2.215 B15.819 C179.541 +G01 X+7.707 Y-19.59 Z-2.214 B15.814 C178.066 +G01 X+7.718 Y-19.273 Z-2.215 B15.819 C176.591 +G01 X+7.745 Y-18.957 Z-2.214 C175.117 +G01 X+7.772 Y-18.642 Z-2.215 C173.642 +G01 X+7.815 Y-18.328 Z-2.214 B15.814 C172.167 +G01 X+7.858 Y-18.014 Z-2.215 B15.819 C170.693 +G01 X+7.914 Y-17.72 Z-2.214 B15.814 C169.295 +G01 X+7.97 Y-17.425 B15.818 C167.897 +G01 X+7.976 Y-17.392 Z-2.215 B15.819 C167.743 +G01 X+8.046 Y-17.105 Z-2.214 B15.814 C166.368 +G01 X+8.116 Y-16.819 B15.818 C164.994 +G01 X+8.127 Y-16.776 Z-2.215 B15.819 C164.794 +G01 X+8.217 Y-16.473 Z-2.214 B15.814 C163.319 +G01 X+8.308 Y-16.169 Z-2.215 B15.819 C161.844 +G01 X+8.438 Y-15.806 Z-2.213 B15.813 C160.062 +G01 X+8.521 Y-15.572 Z-2.215 B15.818 C158.895 +G01 X+8.665 Y-15.226 Z-2.213 B15.813 C157.159 +G01 X+8.764 Y-14.987 Z-2.215 B15.818 C155.946 +G01 X+8.922 Y-14.658 Z-2.213 B15.813 C154.255 +G01 X+9.037 Y-14.416 Z-2.215 B15.818 C152.996 +G01 X+9.206 Y-14.103 Z-2.213 B15.813 C151.352 +G01 X+9.339 Y-13.859 Z-2.215 B15.818 C150.047 +G01 X+9.519 Y-13.564 Z-2.213 B15.813 C148.449 +G01 X+9.669 Y-13.318 Z-2.215 B15.818 C147.097 +G01 X+9.858 Y-13.042 Z-2.213 B15.813 C145.546 +G01 X+10.027 Y-12.795 Z-2.215 B15.818 C144.148 +G01 X+10.219 Y-12.543 Z-2.213 C142.673 +G01 X+10.411 Y-12.291 Z-2.215 C141.198 +G01 X+10.616 Y-12.049 Z-2.213 B15.813 C139.727 +G01 X+10.821 Y-11.808 Z-2.215 B15.818 C138.255 +G01 X+11.037 Y-11.577 Z-2.213 B15.813 C136.779 +G01 X+11.255 Y-11.346 Z-2.215 B15.818 C135.302 +G01 X+11.483 Y-11.126 Z-2.214 B15.813 C133.826 +G01 X+11.712 Y-10.907 Z-2.215 B15.818 C132.349 +G01 X+11.926 Y-10.722 Z-2.213 B15.813 C131.03 +G01 X+12.191 Y-10.493 Z-2.215 B15.818 C129.397 +G01 X+12.44 Y-10.298 Z-2.214 B15.813 C127.921 +G01 X+12.691 Y-10.103 Z-2.215 B15.818 C126.444 +G01 X+13.057 Y-9.847 Z-2.214 B15.815 C124.344 +G01 X+13.21 Y-9.74 Z-2.215 B15.818 C123.491 +G01 X+13.58 Y-9.508 Z-2.214 B15.815 C121.441 +G01 X+13.747 Y-9.404 Z-2.215 B15.818 C120.539 +G01 X+14.12 Y-9.197 Z-2.214 B15.814 C118.538 +G01 X+14.301 Y-9.096 Z-2.215 B15.819 C117.586 +G01 X+14.675 Y-8.913 Z-2.214 B15.814 C115.634 +G01 X+14.869 Y-8.817 Z-2.215 B15.819 C114.633 +G01 X+15.115 Y-8.712 Z-2.214 B15.813 C113.396 +G01 X+15.36 Y-8.607 B15.815 C112.159 +G01 X+15.452 Y-8.568 Z-2.215 B15.819 C111.681 +G01 X+15.698 Y-8.477 Z-2.214 B15.813 C110.468 +G01 X+15.943 Y-8.387 B15.815 C109.255 +G01 X+16.046 Y-8.349 Z-2.215 B15.819 C108.728 +G01 X+16.292 Y-8.273 Z-2.214 B15.814 C107.54 +G01 X+16.537 Y-8.197 B15.815 C106.352 +G01 X+16.651 Y-8.161 Z-2.215 B15.819 C105.775 +G01 X+16.895 Y-8.099 Z-2.214 B15.814 C104.612 +G01 X+17.139 Y-8.037 B15.815 C103.449 +G01 X+17.265 Y-8.004 Z-2.215 B15.819 C102.822 +G01 X+17.507 Y-7.956 Z-2.214 B15.814 C101.684 +G01 X+17.749 Y-7.907 C100.546 +G01 X+17.887 Y-7.879 Z-2.215 B15.819 C99.869 +G01 X+18.125 Y-7.844 Z-2.214 B15.814 C98.756 +G01 X+18.364 Y-7.809 C97.642 +G01 X+18.513 Y-7.787 Z-2.215 B15.819 C96.917 +G01 X+18.748 Y-7.764 Z-2.214 B15.814 C95.828 +G01 X+18.984 Y-7.742 C94.739 +G01 X+19.166 Y-7.725 B15.818 C93.865 +G01 X+19.471 Y-7.712 B15.814 C92.441 +G01 X+19.777 Y-7.699 Z-2.215 B15.819 C91.015 +G01 X+20.094 Y-7.701 Z-2.214 C89.538 +G01 X+20.412 Y-7.704 Z-2.215 C88.06 +G01 X+20.727 Y-7.722 Z-2.214 B15.814 C86.588 +G01 X+21.043 Y-7.741 Z-2.215 B15.819 C85.117 +G01 X+21.358 Y-7.776 Z-2.214 B15.814 C83.642 +G01 X+21.673 Y-7.811 Z-2.215 B15.819 C82.167 +G01 X+21.985 Y-7.862 Z-2.214 B15.814 C80.693 +G01 X+22.298 Y-7.913 Z-2.215 B15.819 C79.218 +G01 X+22.588 Y-7.976 Z-2.214 B15.814 C77.832 +G01 X+22.879 Y-8.039 B15.818 C76.445 +G01 X+22.917 Y-8.047 Z-2.215 B15.819 C76.268 +G01 X+23.199 Y-8.124 Z-2.214 B15.814 C74.905 +G01 X+23.481 Y-8.2 B15.818 C73.542 +G01 X+23.529 Y-8.213 Z-2.215 B15.819 C73.319 +G01 X+23.83 Y-8.312 Z-2.214 B15.814 C71.844 +G01 X+24.131 Y-8.411 Z-2.215 B15.819 C70.37 +G01 X+24.486 Y-8.548 Z-2.213 B15.813 C68.61 +G01 X+24.722 Y-8.639 Z-2.215 B15.818 C67.42 +G01 X+25.06 Y-8.79 Z-2.213 B15.813 C65.707 +G01 X+25.3 Y-8.897 Z-2.215 B15.818 C64.471 +G01 X+25.621 Y-9.06 Z-2.213 B15.813 C62.804 +G01 X+25.865 Y-9.184 Z-2.215 B15.818 C61.521 +G01 X+26.168 Y-9.359 Z-2.213 B15.813 C59.9 +G01 X+26.414 Y-9.501 Z-2.215 B15.818 C58.572 +G01 X+26.699 Y-9.685 Z-2.213 B15.813 C56.997 +G01 X+26.946 Y-9.845 Z-2.215 B15.818 C55.623 +G01 X+27.203 Y-10.03 Z-2.213 C54.148 +G01 X+27.459 Y-10.216 Z-2.215 C52.673 +G01 X+27.706 Y-10.414 Z-2.213 C51.202 +G01 X+27.953 Y-10.613 Z-2.215 C49.731 +G01 X+28.19 Y-10.823 Z-2.213 B15.813 C48.255 +G01 X+28.426 Y-11.035 Z-2.215 B15.818 C46.779 +G01 X+28.651 Y-11.257 Z-2.213 B15.813 C45.302 +G01 X+28.876 Y-11.48 Z-2.215 B15.818 C43.826 +G01 X+29.071 Y-11.694 Z-2.213 B15.813 C42.481 +G01 X+29.303 Y-11.949 Z-2.215 B15.818 C40.873 +G01 X+29.48 Y-12.164 Z-2.213 B15.813 C39.578 +G01 X+29.705 Y-12.438 Z-2.215 B15.818 C37.921 +G01 X+29.894 Y-12.693 Z-2.214 B15.813 C36.444 +G01 X+30.082 Y-12.948 Z-2.215 B15.818 C34.968 +G01 X+30.326 Y-13.316 Z-2.214 B15.815 C32.893 +G01 X+30.431 Y-13.476 Z-2.215 B15.818 C32.015 +G01 X+30.651 Y-13.848 Z-2.214 B15.814 C29.989 +G01 X+30.753 Y-14.022 Z-2.215 B15.819 C29.062 +G01 X+30.949 Y-14.395 Z-2.214 B15.814 C27.086 +G01 X+31.047 Y-14.583 Z-2.215 B15.819 C26.109 +G01 X+31.218 Y-14.957 Z-2.214 B15.814 C24.183 +G01 X+31.311 Y-15.159 Z-2.215 B15.819 C23.157 +G01 X+31.409 Y-15.405 Z-2.214 B15.813 C21.932 +G01 X+31.506 Y-15.65 B15.815 C20.707 +G01 X+31.545 Y-15.748 Z-2.215 B15.819 C20.204 +G01 X+31.629 Y-15.993 Z-2.214 B15.814 C19.004 +G01 X+31.712 Y-16.239 B15.815 C17.804 +G01 X+31.749 Y-16.348 Z-2.215 B15.819 C17.251 +G01 X+31.818 Y-16.592 Z-2.214 B15.814 C16.076 +G01 X+31.887 Y-16.837 B15.815 C14.901 +G01 X+31.921 Y-16.957 Z-2.215 B15.819 C14.298 +G01 X+31.977 Y-17.2 Z-2.214 B15.814 C13.148 +G01 X+32.032 Y-17.443 C11.997 +G01 X+32.062 Y-17.575 Z-2.215 B15.819 C11.346 +G01 X+32.104 Y-17.815 Z-2.214 B15.814 C10.22 +G01 X+32.146 Y-18.056 C9.094 +G01 X+32.171 Y-18.199 Z-2.215 B15.819 C8.393 +G01 X+32.2 Y-18.436 Z-2.214 B15.814 C7.292 +G01 X+32.229 Y-18.673 C6.191 +G01 X+32.247 Y-18.828 Z-2.215 B15.819 C5.44 +G01 X+32.264 Y-19.061 Z-2.214 B15.814 C4.364 +G01 X+32.28 Y-19.295 C3.288 +G01 X+32.292 Y-19.477 B15.818 C2.414 +G01 X+32.298 Y-19.785 B15.814 C0.977 +G01 X+32.303 Y-20.094 Z-2.215 B15.819 C359.541 +G01 X+32.293 Y-20.41 Z-2.214 B15.814 C358.066 +G01 X+32.282 Y-20.727 Z-2.215 B15.819 C356.591 +G01 X+32.255 Y-21.043 Z-2.214 C355.117 +G01 X+32.228 Y-21.358 Z-2.215 C353.642 +G01 X+32.185 Y-21.672 Z-2.214 B15.814 C352.167 +G01 X+32.142 Y-21.986 Z-2.215 B15.819 C350.693 +G01 X+32.086 Y-22.28 Z-2.214 B15.814 C349.295 +G01 X+32.03 Y-22.575 B15.818 C347.897 +G01 X+32.024 Y-22.608 Z-2.215 B15.819 C347.743 +G01 X+31.954 Y-22.895 Z-2.214 B15.814 C346.368 +G01 X+31.884 Y-23.181 B15.818 C344.994 +G01 X+31.873 Y-23.224 Z-2.215 B15.819 C344.794 +G01 X+31.783 Y-23.527 Z-2.214 B15.814 C343.319 +G01 X+31.692 Y-23.831 Z-2.215 B15.819 C341.844 +G01 X+31.562 Y-24.194 Z-2.213 B15.813 C340.062 +G01 X+31.479 Y-24.428 Z-2.215 B15.818 C338.895 +G01 X+31.335 Y-24.774 Z-2.213 B15.813 C337.159 +G01 X+31.236 Y-25.013 Z-2.215 B15.818 C335.946 +G01 X+31.078 Y-25.342 Z-2.213 B15.813 C334.255 +G01 X+30.963 Y-25.584 Z-2.215 B15.818 C332.996 +G01 X+30.794 Y-25.897 Z-2.213 B15.813 C331.352 +G01 X+30.661 Y-26.141 Z-2.215 B15.818 C330.047 +G01 X+30.481 Y-26.436 Z-2.213 B15.813 C328.449 +G01 X+30.331 Y-26.682 Z-2.215 B15.818 C327.097 +G01 X+30.142 Y-26.958 Z-2.213 B15.813 C325.546 +G01 X+29.973 Y-27.205 Z-2.215 B15.818 C324.148 +G01 X+29.781 Y-27.457 Z-2.213 C322.673 +G01 X+29.589 Y-27.709 Z-2.215 C321.198 +G01 X+29.384 Y-27.951 Z-2.213 B15.813 C319.727 +G01 X+29.179 Y-28.192 Z-2.215 B15.818 C318.255 +G01 X+28.963 Y-28.423 Z-2.213 B15.813 C316.779 +G01 X+28.745 Y-28.654 Z-2.215 B15.818 C315.302 +G01 X+28.517 Y-28.873 Z-2.214 B15.813 C313.826 +G01 X+28.288 Y-29.093 Z-2.215 B15.818 C312.349 +G01 X+28.074 Y-29.278 Z-2.213 B15.813 C311.03 +G01 X+27.809 Y-29.507 Z-2.215 B15.818 C309.397 +G01 X+27.56 Y-29.702 Z-2.214 B15.813 C307.921 +G01 X+27.309 Y-29.897 Z-2.215 B15.818 C306.444 +G01 X+26.943 Y-30.153 Z-2.214 B15.815 C304.344 +G01 X+26.79 Y-30.26 Z-2.215 B15.818 C303.491 +G01 X+26.42 Y-30.491 Z-2.214 B15.815 C301.441 +G01 X+26.253 Y-30.596 Z-2.215 B15.818 C300.539 +G01 X+25.88 Y-30.803 Z-2.214 B15.814 C298.538 +G01 X+25.699 Y-30.904 Z-2.215 B15.819 C297.586 +G01 X+25.325 Y-31.087 Z-2.214 B15.814 C295.634 +G01 X+25.131 Y-31.183 Z-2.215 B15.819 C294.633 +G01 X+24.885 Y-31.288 Z-2.214 B15.813 C293.396 +G01 X+24.64 Y-31.393 B15.815 C292.159 +G01 X+24.548 Y-31.432 Z-2.215 B15.819 C291.681 +G01 X+24.302 Y-31.522 Z-2.214 B15.813 C290.468 +G01 X+24.057 Y-31.613 B15.815 C289.255 +G01 X+23.954 Y-31.651 Z-2.215 B15.819 C288.727 +G01 X+23.708 Y-31.727 Z-2.214 B15.814 C287.54 +G01 X+23.463 Y-31.803 B15.815 C286.352 +G01 X+23.349 Y-31.839 Z-2.215 B15.819 C285.775 +G01 X+23.105 Y-31.901 Z-2.214 B15.814 C284.612 +G01 X+22.861 Y-31.963 B15.815 C283.449 +G01 X+22.735 Y-31.996 Z-2.215 B15.819 C282.822 +G01 X+22.493 Y-32.044 Z-2.214 B15.814 C281.684 +G01 X+22.251 Y-32.093 C280.546 +G01 X+22.113 Y-32.12 Z-2.215 B15.819 C279.869 +G01 X+21.875 Y-32.156 Z-2.214 B15.814 C278.756 +G01 X+21.636 Y-32.191 C277.642 +G01 X+21.487 Y-32.213 Z-2.215 B15.819 C276.917 +G01 X+21.252 Y-32.236 Z-2.214 B15.814 C275.828 +G01 X+21.016 Y-32.258 C274.739 +G01 X+20.834 Y-32.274 B15.818 C273.865 +G01 X+20.529 Y-32.288 B15.814 C272.441 +G01 X+20.223 Y-32.301 Z-2.215 B15.819 C271.015 +G01 X+19.906 Y-32.299 Z-2.214 C269.538 +G01 X+19.588 Y-32.296 Z-2.215 C268.06 +G01 X+19.273 Y-32.278 Z-2.214 B15.814 C266.588 +G01 X+18.957 Y-32.259 Z-2.215 B15.819 C265.117 +G01 X+18.642 Y-32.224 Z-2.214 B15.814 C263.642 +G01 X+18.327 Y-32.189 Z-2.215 B15.819 C262.167 +G01 X+18.015 Y-32.138 Z-2.214 B15.814 C260.693 +G01 X+17.702 Y-32.087 Z-2.215 B15.819 C259.218 +G01 X+17.412 Y-32.024 Z-2.214 B15.814 C257.832 +G01 X+17.121 Y-31.961 B15.818 C256.445 +G01 X+17.083 Y-31.952 Z-2.215 B15.819 C256.268 +G01 X+16.801 Y-31.876 Z-2.214 B15.814 C254.905 +G01 X+16.519 Y-31.799 B15.818 C253.542 +G01 X+16.472 Y-31.786 Z-2.215 B15.819 C253.319 +G01 X+16.17 Y-31.688 Z-2.214 B15.814 C251.844 +G01 X+15.869 Y-31.589 Z-2.215 B15.819 C250.37 +G01 X+15.514 Y-31.452 Z-2.213 B15.813 C248.61 +G01 X+15.278 Y-31.361 Z-2.215 B15.818 C247.42 +G01 X+14.989 Y-31.232 Z-2.214 B15.813 C245.945 +G01 X+14.7 Y-31.103 Z-2.215 B15.818 C244.471 +G01 X+14.379 Y-30.939 Z-2.213 B15.813 C242.804 +G01 X+14.098 Y-30.796 Z-2.215 B15.819 C241.352 +G01 X+13.839 Y-30.647 Z-2.214 B15.814 C239.95 +G01 X+13.581 Y-30.497 Z-2.215 B15.818 C238.548 +G01 X+13.301 Y-30.315 Z-2.213 B15.813 C236.997 +G01 X+13.054 Y-30.155 Z-2.215 B15.818 C235.623 +G01 X+12.797 Y-29.97 Z-2.213 B15.813 C234.148 +G01 X+12.541 Y-29.784 Z-2.215 B15.818 C232.673 +G01 X+12.294 Y-29.586 Z-2.213 B15.813 C231.202 +G01 X+12.047 Y-29.387 Z-2.215 B15.818 C229.731 +G01 X+11.81 Y-29.176 Z-2.213 B15.813 C228.255 +G01 X+11.574 Y-28.965 Z-2.215 B15.818 C226.779 +G01 X+11.321 Y-28.715 Z-2.213 B15.813 C225.112 +G01 Y-28.581 Z-2.187 B15.69 C224.657 +G01 X+11.193 Y-28.455 Z-2.188 B15.693 C223.834 +G01 X+10.999 Y-28.242 Z-2.187 B15.688 C222.481 +G01 X+10.77 Y-27.991 Z-2.188 B15.693 C220.882 +G01 X+10.593 Y-27.776 Z-2.187 B15.688 C219.578 +G01 X+10.37 Y-27.505 Z-2.188 B15.693 C217.93 +G01 X+10.183 Y-27.252 Z-2.187 B15.688 C216.453 +G01 X+9.997 Y-26.999 Z-2.188 B15.693 C214.977 +G01 X+9.866 Y-26.801 Z-2.187 B15.689 C213.855 +G01 X+9.735 Y-26.603 B15.69 C212.732 +G01 X+9.65 Y-26.475 Z-2.188 B15.693 C212.025 +G01 X+9.532 Y-26.275 Z-2.187 B15.689 C210.927 +G01 X+9.414 Y-26.075 B15.69 C209.829 +G01 X+9.33 Y-25.934 Z-2.188 B15.694 C209.073 +G01 X+9.225 Y-25.732 Z-2.187 B15.689 C207.999 +G01 X+9.12 Y-25.531 B15.69 C206.925 +G01 X+9.039 Y-25.376 Z-2.188 B15.694 C206.12 +G01 X+8.853 Y-24.973 Z-2.187 B15.69 C204.022 +G01 X+8.777 Y-24.805 Z-2.188 B15.694 C203.168 +G01 X+8.679 Y-24.561 Z-2.187 B15.688 C201.938 +G01 X+8.582 Y-24.316 B15.69 C200.707 +G01 X+8.544 Y-24.221 Z-2.188 B15.694 C200.215 +G01 X+8.461 Y-23.977 Z-2.187 B15.689 C199.01 +G01 X+8.378 Y-23.732 B15.69 C197.804 +G01 X+8.342 Y-23.626 Z-2.188 B15.694 C197.263 +G01 X+8.273 Y-23.382 Z-2.187 B15.689 C196.082 +G01 X+8.204 Y-23.139 B15.69 C194.901 +G01 X+8.171 Y-23.021 Z-2.188 B15.694 C194.311 +G01 X+8.116 Y-22.779 Z-2.187 B15.689 C193.154 +G01 X+8.061 Y-22.537 C191.997 +G01 X+8.031 Y-22.408 Z-2.188 B15.694 C191.358 +G01 X+7.989 Y-22.168 Z-2.187 B15.689 C190.226 +G01 X+7.948 Y-21.929 C189.094 +G01 X+7.923 Y-21.788 Z-2.188 B15.694 C188.406 +G01 X+7.894 Y-21.552 Z-2.187 B15.689 C187.299 +G01 X+7.865 Y-21.316 C186.191 +G01 X+7.847 Y-21.164 Z-2.188 B15.694 C185.454 +G01 X+7.831 Y-20.932 Z-2.187 B15.689 C184.371 +G01 X+7.814 Y-20.7 C183.288 +G01 X+7.803 Y-20.537 Z-2.188 B15.694 C182.501 +G01 X+7.795 Y-20.082 Z-2.187 B15.689 C180.384 +G01 X+7.792 Y-19.908 Z-2.188 B15.694 C179.549 +G01 X+7.806 Y-19.464 Z-2.187 B15.689 C177.481 +G01 X+7.812 Y-19.28 Z-2.188 B15.694 C176.596 +G01 X+7.849 Y-18.847 Z-2.187 B15.688 C174.578 +G01 X+7.869 Y-18.631 Z-2.188 B15.693 C173.543 +G01 X+7.91 Y-18.331 Z-2.187 B15.689 C172.119 +G01 X+7.951 Y-18.031 Z-2.188 B15.694 C170.696 +G01 X+8.009 Y-17.722 Z-2.187 C169.221 +G01 X+8.068 Y-17.413 Z-2.188 C167.747 +G01 X+8.143 Y-17.108 Z-2.187 C166.272 +G01 X+8.217 Y-16.802 Z-2.188 C164.798 +G01 X+8.307 Y-16.501 Z-2.187 B15.689 C163.323 +G01 X+8.398 Y-16.2 Z-2.188 B15.694 C161.849 +G01 X+8.503 Y-15.904 Z-2.187 B15.689 C160.374 +G01 X+8.609 Y-15.608 Z-2.188 B15.694 C158.9 +G01 X+8.722 Y-15.335 Z-2.187 B15.689 C157.511 +G01 X+8.835 Y-15.062 Z-2.188 B15.693 C156.123 +G01 X+8.85 Y-15.027 B15.694 C155.951 +G01 X+8.985 Y-14.743 Z-2.187 B15.688 C154.476 +G01 X+9.121 Y-14.46 Z-2.188 B15.693 C153.002 +G01 X+9.289 Y-14.149 Z-2.187 B15.688 C151.352 +G01 X+9.42 Y-13.907 Z-2.188 B15.693 C150.053 +G01 X+9.599 Y-13.614 Z-2.187 B15.688 C148.449 +G01 X+9.748 Y-13.371 Z-2.188 B15.693 C147.103 +G01 X+9.936 Y-13.095 Z-2.187 B15.688 C145.546 +G01 X+10.103 Y-12.852 Z-2.188 B15.693 C144.154 +G01 X+10.293 Y-12.601 Z-2.187 C142.68 +G01 X+10.484 Y-12.352 Z-2.188 C141.205 +G01 X+10.687 Y-12.112 Z-2.187 B15.688 C139.734 +G01 X+10.89 Y-11.872 Z-2.188 B15.693 C138.263 +G01 X+11.105 Y-11.643 Z-2.187 B15.688 C136.786 +G01 X+11.321 Y-11.414 Z-2.188 B15.693 C135.31 +G01 X+11.547 Y-11.196 Z-2.187 B15.688 C133.834 +G01 X+11.774 Y-10.978 Z-2.188 B15.693 C132.358 +G01 X+11.988 Y-10.793 Z-2.187 B15.688 C131.03 +G01 X+12.25 Y-10.567 Z-2.188 B15.693 C129.406 +G01 X+12.465 Y-10.399 Z-2.187 B15.688 C128.126 +G01 X+12.746 Y-10.18 Z-2.188 B15.693 C126.453 +G01 X+13.003 Y-10 Z-2.187 B15.688 C124.977 +G01 X+13.261 Y-9.82 Z-2.188 B15.693 C123.501 +G01 X+13.46 Y-9.695 Z-2.187 B15.689 C122.391 +G01 X+13.659 Y-9.571 B15.69 C121.28 +G01 X+13.794 Y-9.486 Z-2.188 B15.694 C120.549 +G01 X+13.994 Y-9.375 Z-2.187 B15.689 C119.463 +G01 X+14.195 Y-9.263 B15.69 C118.377 +G01 X+14.343 Y-9.181 Z-2.188 B15.694 C117.596 +G01 X+14.545 Y-9.082 Z-2.187 B15.689 C116.535 +G01 X+14.747 Y-8.983 B15.69 C115.474 +G01 X+14.908 Y-8.904 Z-2.188 B15.694 C114.644 +G01 X+15.311 Y-8.731 Z-2.187 B15.689 C112.57 +G01 X+15.485 Y-8.657 Z-2.188 B15.694 C111.692 +G01 X+15.73 Y-8.566 Z-2.187 B15.688 C110.474 +G01 X+15.975 Y-8.476 B15.69 C109.255 +G01 X+16.075 Y-8.439 Z-2.188 B15.694 C108.739 +G01 X+16.319 Y-8.363 Z-2.187 B15.689 C107.546 +G01 X+16.563 Y-8.287 B15.69 C106.352 +G01 X+16.676 Y-8.252 Z-2.188 B15.694 C105.787 +G01 X+16.918 Y-8.19 Z-2.187 B15.689 C104.618 +G01 X+17.161 Y-8.129 B15.69 C103.449 +G01 X+17.285 Y-8.097 Z-2.188 B15.694 C102.835 +G01 X+17.525 Y-8.048 Z-2.187 B15.689 C101.69 +G01 X+17.766 Y-8 C100.546 +G01 X+17.901 Y-7.973 Z-2.188 B15.694 C99.882 +G01 X+18.139 Y-7.938 Z-2.187 B15.689 C98.762 +G01 X+18.377 Y-7.903 C97.643 +G01 X+18.523 Y-7.881 Z-2.188 B15.694 C96.93 +G01 X+18.757 Y-7.858 Z-2.187 B15.689 C95.835 +G01 X+18.992 Y-7.836 C94.739 +G01 X+19.149 Y-7.821 Z-2.188 B15.694 C93.977 +G01 X+19.379 Y-7.811 Z-2.187 B15.689 C92.907 +G01 X+19.609 Y-7.801 C91.836 +G01 X+19.777 Y-7.793 Z-2.188 B15.694 C91.025 +G01 X+20.227 Y-7.797 Z-2.187 B15.689 C88.933 +G01 X+20.406 Y-7.798 Z-2.188 B15.694 C88.073 +G01 X+20.845 Y-7.824 Z-2.187 B15.688 C86.029 +G01 X+21.033 Y-7.835 Z-2.188 B15.694 C85.12 +G01 X+21.461 Y-7.882 Z-2.187 B15.688 C83.126 +G01 X+21.675 Y-7.907 Z-2.188 B15.693 C82.091 +G01 X+21.977 Y-7.956 Z-2.187 B15.689 C80.656 +G01 X+22.279 Y-8.006 Z-2.188 B15.694 C79.221 +G01 X+22.586 Y-8.072 Z-2.187 C77.747 +G01 X+22.893 Y-8.139 Z-2.188 C76.272 +G01 X+23.197 Y-8.221 Z-2.187 B15.689 C74.798 +G01 X+23.5 Y-8.304 Z-2.188 B15.694 C73.323 +G01 X+23.799 Y-8.401 Z-2.187 B15.689 C71.849 +G01 X+24.097 Y-8.499 Z-2.188 B15.694 C70.374 +G01 X+24.375 Y-8.606 Z-2.187 B15.689 C68.974 +G01 X+24.653 Y-8.713 Z-2.188 B15.693 C67.575 +G01 X+24.684 Y-8.725 B15.694 C67.425 +G01 X+24.951 Y-8.844 Z-2.187 B15.689 C66.048 +G01 X+25.219 Y-8.964 Z-2.188 B15.693 C64.671 +G01 X+25.258 Y-8.982 C64.476 +G01 X+25.538 Y-9.124 Z-2.187 B15.688 C63.002 +G01 X+25.818 Y-9.267 Z-2.188 B15.693 C61.527 +G01 X+26.121 Y-9.441 Z-2.187 B15.688 C59.901 +G01 X+26.363 Y-9.581 Z-2.188 B15.693 C58.578 +G01 X+26.648 Y-9.765 Z-2.187 B15.688 C56.997 +G01 X+26.891 Y-9.922 Z-2.188 B15.693 C55.629 +G01 X+27.158 Y-10.114 Z-2.187 B15.688 C54.094 +G01 X+27.401 Y-10.29 Z-2.188 B15.693 C52.68 +G01 X+27.646 Y-10.487 Z-2.187 C51.209 +G01 X+27.891 Y-10.684 Z-2.188 C49.739 +G01 X+28.126 Y-10.893 Z-2.187 B15.688 C48.263 +G01 X+28.36 Y-11.103 Z-2.188 B15.693 C46.787 +G01 X+28.584 Y-11.323 Z-2.187 C45.31 +G01 X+28.807 Y-11.545 Z-2.188 C43.834 +G01 X+29.001 Y-11.758 Z-2.187 B15.688 C42.481 +G01 X+29.23 Y-12.009 Z-2.188 B15.693 C40.882 +G01 X+29.407 Y-12.224 Z-2.187 B15.688 C39.578 +G01 X+29.63 Y-12.495 Z-2.188 B15.693 C37.93 +G01 X+29.817 Y-12.748 Z-2.187 B15.688 C36.453 +G01 X+30.003 Y-13.001 Z-2.188 B15.693 C34.977 +G01 X+30.134 Y-13.198 Z-2.187 B15.689 C33.855 +G01 X+30.265 Y-13.396 B15.69 C32.732 +G01 X+30.35 Y-13.525 Z-2.188 B15.693 C32.025 +G01 X+30.468 Y-13.725 Z-2.187 B15.689 C30.927 +G01 X+30.586 Y-13.925 B15.69 C29.829 +G01 X+30.67 Y-14.066 Z-2.188 B15.694 C29.073 +G01 X+30.775 Y-14.268 Z-2.187 B15.689 C27.999 +G01 X+30.88 Y-14.469 B15.69 C26.925 +G01 X+30.961 Y-14.623 Z-2.188 B15.694 C26.12 +G01 X+31.147 Y-15.027 Z-2.187 B15.69 C24.022 +G01 X+31.223 Y-15.195 Z-2.188 B15.694 C23.168 +G01 X+31.321 Y-15.439 Z-2.187 B15.688 C21.938 +G01 X+31.418 Y-15.684 B15.69 C20.707 +G01 X+31.456 Y-15.779 Z-2.188 B15.694 C20.215 +G01 X+31.539 Y-16.023 Z-2.187 B15.689 C19.01 +G01 X+31.622 Y-16.268 B15.69 C17.804 +G01 X+31.658 Y-16.374 Z-2.188 B15.694 C17.263 +G01 X+31.727 Y-16.618 Z-2.187 B15.689 C16.082 +G01 X+31.796 Y-16.861 B15.69 C14.901 +G01 X+31.829 Y-16.979 Z-2.188 B15.694 C14.311 +G01 X+31.884 Y-17.221 Z-2.187 B15.689 C13.154 +G01 X+31.939 Y-17.463 C11.997 +G01 X+31.969 Y-17.592 Z-2.188 B15.694 C11.358 +G01 X+32.011 Y-17.831 Z-2.187 B15.689 C10.226 +G01 X+32.052 Y-18.071 C9.094 +G01 X+32.077 Y-18.212 Z-2.188 B15.694 C8.406 +G01 X+32.106 Y-18.448 Z-2.187 B15.689 C7.299 +G01 X+32.135 Y-18.684 C6.191 +G01 X+32.153 Y-18.836 Z-2.188 B15.694 C5.454 +G01 X+32.169 Y-19.068 Z-2.187 B15.689 C4.371 +G01 X+32.186 Y-19.3 C3.288 +G01 X+32.197 Y-19.463 Z-2.188 B15.694 C2.501 +G01 X+32.205 Y-19.918 Z-2.187 B15.689 C0.384 +G01 X+32.208 Y-20.091 Z-2.188 B15.694 C359.549 +G01 X+32.194 Y-20.536 Z-2.187 B15.689 C357.481 +G01 X+32.188 Y-20.72 Z-2.188 B15.694 C356.596 +G01 X+32.151 Y-21.153 Z-2.187 B15.688 C354.578 +G01 X+32.131 Y-21.369 Z-2.188 B15.693 C353.543 +G01 X+32.09 Y-21.669 Z-2.187 B15.689 C352.119 +G01 X+32.049 Y-21.969 Z-2.188 B15.694 C350.696 +G01 X+31.991 Y-22.278 Z-2.187 C349.221 +G01 X+31.932 Y-22.587 Z-2.188 C347.747 +G01 X+31.857 Y-22.892 Z-2.187 C346.272 +G01 X+31.783 Y-23.198 Z-2.188 C344.798 +G01 X+31.693 Y-23.499 Z-2.187 B15.689 C343.323 +G01 X+31.602 Y-23.8 Z-2.188 B15.694 C341.849 +G01 X+31.497 Y-24.096 Z-2.187 B15.689 C340.374 +G01 X+31.391 Y-24.392 Z-2.188 B15.694 C338.9 +G01 X+31.278 Y-24.665 Z-2.187 B15.689 C337.511 +G01 X+31.165 Y-24.937 Z-2.188 B15.693 C336.123 +G01 X+31.15 Y-24.973 B15.694 C335.951 +G01 X+31.015 Y-25.256 Z-2.187 B15.688 C334.476 +G01 X+30.879 Y-25.54 Z-2.188 B15.693 C333.002 +G01 X+30.711 Y-25.851 Z-2.187 B15.688 C331.352 +G01 X+30.58 Y-26.093 Z-2.188 B15.693 C330.053 +G01 X+30.401 Y-26.386 Z-2.187 B15.688 C328.449 +G01 X+30.252 Y-26.629 Z-2.188 B15.693 C327.103 +G01 X+30.064 Y-26.905 Z-2.187 B15.688 C325.546 +G01 X+29.897 Y-27.148 Z-2.188 B15.693 C324.154 +G01 X+29.707 Y-27.398 Z-2.187 C322.68 +G01 X+29.516 Y-27.648 Z-2.188 C321.205 +G01 X+29.313 Y-27.888 Z-2.187 B15.688 C319.734 +G01 X+29.11 Y-28.128 Z-2.188 B15.693 C318.263 +G01 X+28.895 Y-28.357 Z-2.187 B15.688 C316.786 +G01 X+28.679 Y-28.586 Z-2.188 B15.693 C315.31 +G01 X+28.453 Y-28.804 Z-2.187 B15.688 C313.834 +G01 X+28.226 Y-29.022 Z-2.188 B15.693 C312.358 +G01 X+28.012 Y-29.207 Z-2.187 B15.688 C311.03 +G01 X+27.75 Y-29.433 Z-2.188 B15.693 C309.406 +G01 X+27.535 Y-29.601 Z-2.187 B15.688 C308.126 +G01 X+27.254 Y-29.82 Z-2.188 B15.693 C306.453 +G01 X+26.997 Y-30 Z-2.187 B15.688 C304.977 +G01 X+26.739 Y-30.18 Z-2.188 B15.693 C303.501 +G01 X+26.54 Y-30.305 Z-2.187 B15.689 C302.391 +G01 X+26.341 Y-30.429 B15.69 C301.28 +G01 X+26.206 Y-30.513 Z-2.188 B15.694 C300.549 +G01 X+26.006 Y-30.625 Z-2.187 B15.689 C299.463 +G01 X+25.805 Y-30.737 B15.69 C298.377 +G01 X+25.657 Y-30.819 Z-2.188 B15.694 C297.596 +G01 X+25.455 Y-30.918 Z-2.187 B15.689 C296.535 +G01 X+25.253 Y-31.017 B15.69 C295.474 +G01 X+25.092 Y-31.096 Z-2.188 B15.694 C294.644 +G01 X+24.689 Y-31.269 Z-2.187 B15.689 C292.57 +G01 X+24.515 Y-31.343 Z-2.188 B15.694 C291.692 +G01 X+24.27 Y-31.434 Z-2.187 B15.688 C290.474 +G01 X+24.025 Y-31.524 B15.69 C289.255 +G01 X+23.925 Y-31.561 Z-2.188 B15.694 C288.739 +G01 X+23.681 Y-31.637 Z-2.187 B15.689 C287.546 +G01 X+23.437 Y-31.712 B15.69 C286.352 +G01 X+23.324 Y-31.747 Z-2.188 B15.694 C285.787 +G01 X+23.082 Y-31.81 Z-2.187 B15.689 C284.618 +G01 X+22.839 Y-31.871 B15.69 C283.449 +G01 X+22.715 Y-31.903 Z-2.188 B15.694 C282.835 +G01 X+22.475 Y-31.952 Z-2.187 B15.689 C281.69 +G01 X+22.234 Y-32 C280.546 +G01 X+22.099 Y-32.027 Z-2.188 B15.694 C279.882 +G01 X+21.861 Y-32.062 Z-2.187 B15.689 C278.762 +G01 X+21.623 Y-32.097 C277.643 +G01 X+21.477 Y-32.119 Z-2.188 B15.694 C276.93 +G01 X+21.243 Y-32.142 Z-2.187 B15.689 C275.835 +G01 X+21.008 Y-32.164 C274.739 +G01 X+20.851 Y-32.179 Z-2.188 B15.694 C273.977 +G01 X+20.621 Y-32.189 Z-2.187 B15.689 C272.907 +G01 X+20.391 Y-32.199 C271.836 +G01 X+20.223 Y-32.207 Z-2.188 B15.694 C271.025 +G01 X+19.773 Y-32.203 Z-2.187 B15.689 C268.933 +G01 X+19.594 Y-32.202 Z-2.188 B15.694 C268.073 +G01 X+19.155 Y-32.176 Z-2.187 B15.688 C266.029 +G01 X+18.967 Y-32.165 Z-2.188 B15.694 C265.12 +G01 X+18.539 Y-32.117 Z-2.187 B15.688 C263.126 +G01 X+18.325 Y-32.093 Z-2.188 B15.693 C262.091 +G01 X+18.023 Y-32.044 Z-2.187 B15.689 C260.656 +G01 X+17.721 Y-31.994 Z-2.188 B15.694 C259.221 +G01 X+17.414 Y-31.928 Z-2.187 C257.747 +G01 X+17.107 Y-31.861 Z-2.188 C256.272 +G01 X+16.803 Y-31.779 Z-2.187 B15.689 C254.798 +G01 X+16.5 Y-31.696 Z-2.188 B15.694 C253.323 +G01 X+16.201 Y-31.599 Z-2.187 B15.689 C251.849 +G01 X+15.903 Y-31.501 Z-2.188 B15.694 C250.374 +G01 X+15.625 Y-31.394 Z-2.187 B15.689 C248.974 +G01 X+15.347 Y-31.286 Z-2.188 B15.693 C247.575 +G01 X+15.316 Y-31.274 B15.694 C247.425 +G01 X+15.029 Y-31.147 Z-2.187 B15.689 C245.951 +G01 X+14.742 Y-31.018 Z-2.188 B15.694 C244.476 +G01 X+14.485 Y-30.888 Z-2.187 B15.689 C243.122 +G01 X+14.229 Y-30.757 B15.692 C241.767 +G01 X+14.143 Y-30.713 Z-2.188 B15.694 C241.352 +G01 X+13.887 Y-30.565 Z-2.187 B15.689 C239.952 +G01 X+13.632 Y-30.417 Z-2.188 B15.693 C238.552 +G01 X+13.352 Y-30.236 Z-2.187 B15.688 C236.997 +G01 X+13.109 Y-30.078 Z-2.188 B15.693 C235.629 +G01 X+12.842 Y-29.886 Z-2.187 B15.688 C234.094 +G01 X+12.599 Y-29.71 Z-2.188 B15.693 C232.68 +G01 X+12.354 Y-29.513 Z-2.187 B15.688 C231.209 +G01 X+12.109 Y-29.316 Z-2.188 B15.693 C229.739 +G01 X+11.874 Y-29.107 Z-2.187 B15.688 C228.263 +G01 X+11.64 Y-28.897 Z-2.188 B15.693 C226.787 +G01 X+11.388 Y-28.648 Z-2.187 B15.689 C225.115 +G01 X+11.387 Y-28.514 Z-2.16 B15.565 C224.659 +G01 X+11.262 Y-28.391 Z-2.161 B15.568 C223.842 +G01 X+11.069 Y-28.178 Z-2.16 B15.563 C222.481 +G01 X+10.842 Y-27.93 Z-2.161 B15.568 C220.891 +G01 X+10.644 Y-27.689 Z-2.16 B15.563 C219.414 +G01 X+10.446 Y-27.448 Z-2.161 B15.568 C217.939 +G01 X+10.275 Y-27.217 Z-2.16 B15.563 C216.581 +G01 X+10.105 Y-26.986 Z-2.161 B15.566 C215.223 +G01 X+10.075 Y-26.946 B15.569 C214.987 +G01 X+9.919 Y-26.711 Z-2.16 B15.563 C213.653 +G01 X+9.764 Y-26.476 Z-2.161 B15.566 C212.32 +G01 X+9.731 Y-26.426 B15.569 C212.034 +G01 X+9.59 Y-26.188 Z-2.16 B15.563 C210.726 +G01 X+9.449 Y-25.949 Z-2.161 B15.566 C209.417 +G01 X+9.414 Y-25.889 B15.569 C209.083 +G01 X+9.287 Y-25.648 Z-2.16 B15.563 C207.798 +G01 X+9.162 Y-25.407 Z-2.161 B15.566 C206.514 +G01 X+9.124 Y-25.336 B15.569 C206.131 +G01 X+9.013 Y-25.094 Z-2.16 B15.564 C204.871 +G01 X+8.902 Y-24.851 Z-2.161 B15.565 C203.61 +G01 X+8.864 Y-24.769 B15.569 C203.179 +G01 X+8.767 Y-24.526 Z-2.16 B15.564 C201.943 +G01 X+8.671 Y-24.283 Z-2.161 B15.565 C200.707 +G01 X+8.633 Y-24.19 B15.569 C200.227 +G01 X+8.551 Y-23.946 Z-2.16 B15.564 C199.015 +G01 X+8.468 Y-23.703 Z-2.161 B15.565 C197.804 +G01 X+8.433 Y-23.599 B15.569 C197.275 +G01 X+8.364 Y-23.357 Z-2.16 B15.564 C196.088 +G01 X+8.296 Y-23.114 Z-2.161 B15.565 C194.901 +G01 X+8.263 Y-22.999 B15.569 C194.323 +G01 X+8.208 Y-22.758 Z-2.16 B15.564 C193.16 +G01 X+8.153 Y-22.517 B15.565 C191.997 +G01 X+8.124 Y-22.39 Z-2.161 B15.569 C191.371 +G01 X+8.082 Y-22.152 Z-2.16 B15.564 C190.232 +G01 X+8.041 Y-21.914 C189.094 +G01 X+8.017 Y-21.776 Z-2.161 B15.569 C188.419 +G01 X+7.988 Y-21.541 Z-2.16 B15.564 C187.305 +G01 X+7.959 Y-21.306 C186.191 +G01 X+7.941 Y-21.157 Z-2.161 B15.569 C185.467 +G01 X+7.925 Y-20.926 Z-2.16 B15.564 C184.377 +G01 X+7.909 Y-20.694 C183.288 +G01 X+7.898 Y-20.534 Z-2.161 B15.569 C182.515 +G01 X+7.889 Y-20.081 Z-2.16 B15.564 C180.384 +G01 X+7.886 Y-19.911 Z-2.161 B15.569 C179.563 +G01 X+7.901 Y-19.468 Z-2.16 B15.564 C177.481 +G01 X+7.907 Y-19.287 Z-2.161 B15.569 C176.611 +G01 X+7.944 Y-18.856 Z-2.16 B15.564 C174.578 +G01 X+7.96 Y-18.666 Z-2.161 B15.569 C173.659 +G01 X+8.017 Y-18.246 Z-2.16 B15.563 C171.675 +G01 X+8.044 Y-18.048 Z-2.161 B15.569 C170.707 +G01 X+8.121 Y-17.642 Z-2.16 B15.563 C168.771 +G01 X+8.161 Y-17.435 Z-2.161 B15.569 C167.755 +G01 X+8.256 Y-17.043 Z-2.16 B15.563 C165.868 +G01 X+8.308 Y-16.829 Z-2.161 B15.569 C164.803 +G01 X+8.421 Y-16.452 Z-2.16 B15.563 C162.965 +G01 X+8.487 Y-16.231 Z-2.161 B15.569 C161.853 +G01 X+8.591 Y-15.937 Z-2.16 B15.564 C160.379 +G01 X+8.696 Y-15.643 Z-2.161 B15.569 C158.904 +G01 X+8.816 Y-15.355 Z-2.16 C157.43 +G01 X+8.936 Y-15.067 Z-2.161 C155.956 +G01 X+9.07 Y-14.786 Z-2.16 B15.564 C154.481 +G01 X+9.204 Y-14.504 Z-2.161 B15.569 C153.007 +G01 X+9.353 Y-14.23 Z-2.16 B15.564 C151.533 +G01 X+9.502 Y-13.956 Z-2.161 B15.568 C150.058 +G01 X+9.656 Y-13.703 Z-2.16 B15.564 C148.655 +G01 X+9.81 Y-13.45 Z-2.161 B15.568 C147.252 +G01 X+9.841 Y-13.402 B15.567 C146.997 +G01 X+10.01 Y-13.155 Z-2.16 B15.563 C145.579 +G01 X+10.179 Y-12.908 Z-2.161 B15.568 C144.161 +G01 X+10.367 Y-12.66 Z-2.16 B15.563 C142.686 +G01 X+10.557 Y-12.412 Z-2.161 B15.568 C141.212 +G01 X+10.758 Y-12.174 Z-2.16 C139.741 +G01 X+10.96 Y-11.936 Z-2.161 C138.27 +G01 X+11.173 Y-11.708 Z-2.16 B15.563 C136.794 +G01 X+11.387 Y-11.481 Z-2.161 B15.568 C135.318 +G01 X+11.603 Y-11.274 Z-2.16 B15.563 C133.9 +G01 X+11.819 Y-11.066 Z-2.161 B15.567 C132.481 +G01 X+11.837 Y-11.049 B15.568 C132.366 +G01 X+12.059 Y-10.856 Z-2.16 B15.563 C130.972 +G01 X+12.282 Y-10.664 Z-2.161 B15.567 C129.578 +G01 X+12.309 Y-10.641 B15.568 C129.414 +G01 X+12.537 Y-10.463 Z-2.16 B15.563 C128.045 +G01 X+12.765 Y-10.285 Z-2.161 B15.567 C126.675 +G01 X+12.801 Y-10.257 B15.569 C126.462 +G01 X+13.033 Y-10.094 Z-2.16 B15.563 C125.117 +G01 X+13.267 Y-9.931 Z-2.161 B15.566 C123.772 +G01 X+13.312 Y-9.9 B15.569 C123.51 +G01 X+13.548 Y-9.751 Z-2.16 B15.563 C122.19 +G01 X+13.785 Y-9.603 Z-2.161 B15.566 C120.868 +G01 X+13.84 Y-9.569 B15.569 C120.559 +G01 X+14.08 Y-9.435 Z-2.16 B15.563 C119.262 +G01 X+14.32 Y-9.302 Z-2.161 B15.566 C117.965 +G01 X+14.386 Y-9.265 B15.569 C117.607 +G01 X+14.627 Y-9.147 Z-2.16 B15.563 C116.334 +G01 X+14.869 Y-9.028 Z-2.161 B15.566 C115.062 +G01 X+14.946 Y-8.991 B15.569 C114.655 +G01 X+15.189 Y-8.886 Z-2.16 B15.564 C113.407 +G01 X+15.432 Y-8.782 Z-2.161 B15.565 C112.159 +G01 X+15.519 Y-8.745 B15.569 C111.703 +G01 X+15.762 Y-8.655 Z-2.16 B15.564 C110.479 +G01 X+16.006 Y-8.566 Z-2.161 B15.565 C109.255 +G01 X+16.104 Y-8.529 B15.569 C108.751 +G01 X+16.347 Y-8.454 Z-2.16 B15.564 C107.552 +G01 X+16.59 Y-8.378 Z-2.161 B15.565 C106.352 +G01 X+16.7 Y-8.344 B15.569 C105.799 +G01 X+16.942 Y-8.282 Z-2.16 B15.564 C104.624 +G01 X+17.183 Y-8.221 B15.565 C103.449 +G01 X+17.304 Y-8.19 Z-2.161 B15.569 C102.847 +G01 X+17.544 Y-8.141 Z-2.16 B15.564 C101.696 +G01 X+17.783 Y-8.093 C100.546 +G01 X+17.916 Y-8.066 Z-2.161 B15.569 C99.895 +G01 X+18.153 Y-8.031 Z-2.16 B15.564 C98.769 +G01 X+18.389 Y-7.996 C97.643 +G01 X+18.533 Y-7.975 Z-2.161 B15.569 C96.943 +G01 X+18.766 Y-7.952 Z-2.16 B15.564 C95.841 +G01 X+18.999 Y-7.93 C94.739 +G01 X+19.154 Y-7.915 Z-2.161 B15.569 C93.991 +G01 X+19.383 Y-7.905 Z-2.16 B15.564 C92.914 +G01 X+19.612 Y-7.895 C91.836 +G01 X+19.777 Y-7.888 Z-2.161 B15.569 C91.039 +G01 X+20.226 Y-7.891 Z-2.16 B15.564 C88.933 +G01 X+20.401 Y-7.892 Z-2.161 B15.569 C88.087 +G01 X+20.839 Y-7.918 Z-2.16 B15.564 C86.03 +G01 X+21.024 Y-7.929 Z-2.161 B15.569 C85.135 +G01 X+21.449 Y-7.976 Z-2.16 B15.564 C83.126 +G01 X+21.644 Y-7.998 Z-2.161 B15.569 C82.183 +G01 X+22.057 Y-8.065 Z-2.16 B15.563 C80.223 +G01 X+22.26 Y-8.098 Z-2.161 B15.569 C79.231 +G01 X+22.658 Y-8.185 Z-2.16 B15.563 C77.32 +G01 X+22.869 Y-8.231 Z-2.161 B15.569 C76.279 +G01 X+23.253 Y-8.335 Z-2.16 B15.563 C74.417 +G01 X+23.471 Y-8.394 Z-2.161 B15.569 C73.327 +G01 X+23.768 Y-8.491 Z-2.16 B15.564 C71.853 +G01 X+24.064 Y-8.588 Z-2.161 B15.569 C70.379 +G01 X+24.355 Y-8.7 Z-2.16 C68.904 +G01 X+24.646 Y-8.812 Z-2.161 C67.43 +G01 X+24.931 Y-8.939 Z-2.16 C65.956 +G01 X+25.216 Y-9.066 Z-2.161 C64.481 +G01 X+25.494 Y-9.208 Z-2.16 B15.564 C63.007 +G01 X+25.772 Y-9.349 Z-2.161 B15.569 C61.533 +G01 X+26.042 Y-9.505 Z-2.16 B15.564 C60.058 +G01 X+26.313 Y-9.661 Z-2.161 B15.568 C58.584 +G01 X+26.559 Y-9.82 Z-2.16 B15.564 C57.192 +G01 X+26.806 Y-9.979 Z-2.161 B15.568 C55.8 +G01 X+26.853 Y-10.011 B15.567 C55.546 +G01 X+27.098 Y-10.188 Z-2.16 B15.563 C54.116 +G01 X+27.342 Y-10.364 Z-2.161 B15.568 C52.687 +G01 X+27.586 Y-10.56 Z-2.16 B15.563 C51.213 +G01 X+27.829 Y-10.756 Z-2.161 B15.568 C49.739 +G01 X+28.062 Y-10.963 Z-2.16 B15.563 C48.267 +G01 X+28.294 Y-11.17 Z-2.161 B15.568 C46.794 +G01 X+28.516 Y-11.39 Z-2.16 B15.563 C45.318 +G01 X+28.738 Y-11.609 Z-2.161 B15.568 C43.842 +G01 X+28.931 Y-11.821 Z-2.16 B15.563 C42.481 +G01 X+29.158 Y-12.07 Z-2.161 B15.568 C40.891 +G01 X+29.356 Y-12.311 Z-2.16 B15.563 C39.414 +G01 X+29.554 Y-12.552 Z-2.161 B15.568 C37.939 +G01 X+29.725 Y-12.783 Z-2.16 B15.563 C36.581 +G01 X+29.895 Y-13.014 Z-2.161 B15.566 C35.223 +G01 X+29.925 Y-13.054 B15.569 C34.987 +G01 X+30.081 Y-13.289 Z-2.16 B15.563 C33.653 +G01 X+30.236 Y-13.524 Z-2.161 B15.566 C32.32 +G01 X+30.269 Y-13.574 B15.569 C32.034 +G01 X+30.41 Y-13.812 Z-2.16 B15.563 C30.726 +G01 X+30.551 Y-14.051 Z-2.161 B15.566 C29.417 +G01 X+30.586 Y-14.111 B15.569 C29.083 +G01 X+30.713 Y-14.352 Z-2.16 B15.563 C27.798 +G01 X+30.838 Y-14.593 Z-2.161 B15.566 C26.514 +G01 X+30.876 Y-14.664 B15.569 C26.131 +G01 X+30.987 Y-14.906 Z-2.16 B15.564 C24.871 +G01 X+31.098 Y-15.149 Z-2.161 B15.565 C23.61 +G01 X+31.136 Y-15.231 B15.569 C23.179 +G01 X+31.233 Y-15.474 Z-2.16 B15.564 C21.943 +G01 X+31.33 Y-15.717 Z-2.161 B15.565 C20.707 +G01 X+31.367 Y-15.81 B15.569 C20.227 +G01 X+31.449 Y-16.053 Z-2.16 B15.564 C19.015 +G01 X+31.532 Y-16.297 Z-2.161 B15.565 C17.804 +G01 X+31.567 Y-16.401 B15.569 C17.275 +G01 X+31.636 Y-16.643 Z-2.16 B15.564 C16.088 +G01 X+31.704 Y-16.886 Z-2.161 B15.565 C14.901 +G01 X+31.737 Y-17.001 B15.569 C14.323 +G01 X+31.792 Y-17.242 Z-2.16 B15.564 C13.16 +G01 X+31.847 Y-17.482 B15.565 C11.997 +G01 X+31.876 Y-17.609 Z-2.161 B15.569 C11.371 +G01 X+31.918 Y-17.847 Z-2.16 B15.564 C10.232 +G01 X+31.959 Y-18.086 C9.094 +G01 X+31.983 Y-18.224 Z-2.161 B15.569 C8.419 +G01 X+32.012 Y-18.459 Z-2.16 B15.564 C7.305 +G01 X+32.041 Y-18.694 C6.191 +G01 X+32.059 Y-18.843 Z-2.161 B15.569 C5.467 +G01 X+32.075 Y-19.074 Z-2.16 B15.564 C4.377 +G01 X+32.091 Y-19.305 C3.288 +G01 X+32.102 Y-19.465 Z-2.161 B15.569 C2.515 +G01 X+32.111 Y-19.919 Z-2.16 B15.564 C0.384 +G01 X+32.114 Y-20.089 Z-2.161 B15.569 C359.563 +G01 X+32.099 Y-20.532 Z-2.16 B15.564 C357.481 +G01 X+32.093 Y-20.713 Z-2.161 B15.569 C356.611 +G01 X+32.056 Y-21.144 Z-2.16 B15.564 C354.578 +G01 X+32.04 Y-21.334 Z-2.161 B15.569 C353.659 +G01 X+31.983 Y-21.753 Z-2.16 B15.563 C351.675 +G01 X+31.956 Y-21.952 Z-2.161 B15.569 C350.707 +G01 X+31.879 Y-22.358 Z-2.16 B15.563 C348.771 +G01 X+31.839 Y-22.565 Z-2.161 B15.569 C347.755 +G01 X+31.744 Y-22.957 Z-2.16 B15.563 C345.868 +G01 X+31.692 Y-23.171 Z-2.161 B15.569 C344.803 +G01 X+31.579 Y-23.548 Z-2.16 B15.563 C342.965 +G01 X+31.513 Y-23.769 Z-2.161 B15.569 C341.853 +G01 X+31.409 Y-24.063 Z-2.16 B15.564 C340.379 +G01 X+31.304 Y-24.357 Z-2.161 B15.569 C338.904 +G01 X+31.184 Y-24.645 Z-2.16 C337.43 +G01 X+31.064 Y-24.933 Z-2.161 C335.956 +G01 X+30.93 Y-25.214 Z-2.16 B15.564 C334.481 +G01 X+30.796 Y-25.496 Z-2.161 B15.569 C333.007 +G01 X+30.647 Y-25.77 Z-2.16 B15.564 C331.533 +G01 X+30.498 Y-26.044 Z-2.161 B15.568 C330.058 +G01 X+30.344 Y-26.297 Z-2.16 B15.564 C328.655 +G01 X+30.19 Y-26.55 Z-2.161 B15.568 C327.252 +G01 X+30.159 Y-26.598 B15.567 C326.997 +G01 X+29.99 Y-26.845 Z-2.16 B15.563 C325.579 +G01 X+29.821 Y-27.092 Z-2.161 B15.568 C324.161 +G01 X+29.633 Y-27.34 Z-2.16 B15.563 C322.686 +G01 X+29.443 Y-27.588 Z-2.161 B15.568 C321.212 +G01 X+29.242 Y-27.826 Z-2.16 C319.741 +G01 X+29.04 Y-28.064 Z-2.161 C318.27 +G01 X+28.827 Y-28.291 Z-2.16 B15.563 C316.794 +G01 X+28.613 Y-28.519 Z-2.161 B15.568 C315.318 +G01 X+28.397 Y-28.726 Z-2.16 B15.563 C313.9 +G01 X+28.181 Y-28.934 Z-2.161 B15.567 C312.481 +G01 X+28.163 Y-28.951 B15.568 C312.366 +G01 X+27.941 Y-29.144 Z-2.16 B15.563 C310.972 +G01 X+27.718 Y-29.336 Z-2.161 B15.567 C309.578 +G01 X+27.691 Y-29.359 B15.568 C309.414 +G01 X+27.463 Y-29.537 Z-2.16 B15.563 C308.045 +G01 X+27.235 Y-29.715 Z-2.161 B15.567 C306.675 +G01 X+27.199 Y-29.743 B15.569 C306.462 +G01 X+26.967 Y-29.906 Z-2.16 B15.563 C305.117 +G01 X+26.733 Y-30.069 Z-2.161 B15.566 C303.772 +G01 X+26.688 Y-30.1 B15.569 C303.51 +G01 X+26.452 Y-30.249 Z-2.16 B15.563 C302.19 +G01 X+26.215 Y-30.397 Z-2.161 B15.566 C300.868 +G01 X+26.16 Y-30.431 B15.569 C300.559 +G01 X+25.92 Y-30.565 Z-2.16 B15.563 C299.262 +G01 X+25.68 Y-30.698 Z-2.161 B15.566 C297.965 +G01 X+25.614 Y-30.734 B15.569 C297.607 +G01 X+25.373 Y-30.853 Z-2.16 B15.563 C296.334 +G01 X+25.131 Y-30.972 Z-2.161 B15.566 C295.062 +G01 X+25.054 Y-31.009 B15.569 C294.655 +G01 X+24.811 Y-31.113 Z-2.16 B15.564 C293.407 +G01 X+24.568 Y-31.217 Z-2.161 B15.565 C292.159 +G01 X+24.481 Y-31.255 B15.569 C291.703 +G01 X+24.238 Y-31.345 Z-2.16 B15.564 C290.479 +G01 X+23.994 Y-31.434 Z-2.161 B15.565 C289.255 +G01 X+23.896 Y-31.471 B15.569 C288.751 +G01 X+23.653 Y-31.546 Z-2.16 B15.564 C287.552 +G01 X+23.41 Y-31.622 Z-2.161 B15.565 C286.352 +G01 X+23.3 Y-31.656 B15.569 C285.799 +G01 X+23.058 Y-31.718 Z-2.16 B15.564 C284.624 +G01 X+22.817 Y-31.779 B15.565 C283.449 +G01 X+22.696 Y-31.81 Z-2.161 B15.569 C282.847 +G01 X+22.456 Y-31.859 Z-2.16 B15.564 C281.696 +G01 X+22.217 Y-31.907 C280.546 +G01 X+22.084 Y-31.933 Z-2.161 B15.569 C279.895 +G01 X+21.847 Y-31.969 Z-2.16 B15.564 C278.769 +G01 X+21.611 Y-32.004 C277.643 +G01 X+21.467 Y-32.025 Z-2.161 B15.569 C276.943 +G01 X+21.234 Y-32.047 Z-2.16 B15.564 C275.841 +G01 X+21.001 Y-32.07 C274.739 +G01 X+20.846 Y-32.084 Z-2.161 B15.569 C273.991 +G01 X+20.617 Y-32.095 Z-2.16 B15.564 C272.914 +G01 X+20.388 Y-32.105 C271.836 +G01 X+20.223 Y-32.112 Z-2.161 B15.569 C271.039 +G01 X+19.774 Y-32.109 Z-2.16 B15.564 C268.933 +G01 X+19.599 Y-32.107 Z-2.161 B15.569 C268.087 +G01 X+19.161 Y-32.082 Z-2.16 B15.564 C266.03 +G01 X+18.976 Y-32.071 Z-2.161 B15.569 C265.135 +G01 X+18.551 Y-32.024 Z-2.16 B15.564 C263.126 +G01 X+18.356 Y-32.002 Z-2.161 B15.569 C262.183 +G01 X+17.943 Y-31.935 Z-2.16 B15.563 C260.223 +G01 X+17.74 Y-31.901 Z-2.161 B15.569 C259.231 +G01 X+17.342 Y-31.815 Z-2.16 B15.563 C257.32 +G01 X+17.131 Y-31.769 Z-2.161 B15.569 C256.279 +G01 X+16.747 Y-31.665 Z-2.16 B15.563 C254.417 +G01 X+16.529 Y-31.606 Z-2.161 B15.569 C253.327 +G01 X+16.232 Y-31.509 Z-2.16 B15.564 C251.853 +G01 X+15.936 Y-31.412 Z-2.161 B15.569 C250.379 +G01 X+15.645 Y-31.3 Z-2.16 C248.904 +G01 X+15.354 Y-31.188 Z-2.161 C247.43 +G01 X+15.069 Y-31.061 Z-2.16 C245.956 +G01 X+14.784 Y-30.934 Z-2.161 C244.481 +G01 X+14.486 Y-30.782 Z-2.16 B15.564 C242.917 +G01 X+14.188 Y-30.63 Z-2.162 B15.569 C241.352 +G01 X+13.935 Y-30.483 Z-2.161 B15.565 C239.954 +G01 X+13.682 Y-30.336 B15.569 C238.556 +G01 X+13.438 Y-30.179 Z-2.16 B15.564 C237.179 +G01 X+13.194 Y-30.021 Z-2.161 B15.568 C235.8 +G01 X+13.147 Y-29.989 B15.567 C235.546 +G01 X+12.902 Y-29.812 Z-2.16 B15.563 C234.116 +G01 X+12.658 Y-29.635 Z-2.161 B15.568 C232.687 +G01 X+12.414 Y-29.44 Z-2.16 B15.563 C231.213 +G01 X+12.171 Y-29.244 Z-2.161 B15.568 C229.739 +G01 X+11.938 Y-29.037 Z-2.16 C228.267 +G01 X+11.706 Y-28.829 Z-2.161 C226.794 +G01 X+11.455 Y-28.581 Z-2.16 B15.564 C225.117 +G01 X+11.454 Y-28.447 Z-2.134 B15.44 C224.661 +G01 X+11.332 Y-28.326 Z-2.135 B15.443 C223.85 +G01 X+11.123 Y-28.098 Z-2.134 B15.439 C222.375 +G01 X+10.915 Y-27.869 Z-2.135 B15.443 C220.899 +G01 X+10.73 Y-27.645 Z-2.134 B15.438 C219.513 +G01 X+10.546 Y-27.42 Z-2.135 B15.442 C218.126 +G01 X+10.522 Y-27.391 B15.444 C217.947 +G01 X+10.352 Y-27.161 Z-2.134 B15.438 C216.585 +G01 X+10.182 Y-26.932 Z-2.135 B15.442 C215.223 +G01 X+10.154 Y-26.893 B15.444 C214.996 +G01 X+9.999 Y-26.659 Z-2.134 B15.439 C213.658 +G01 X+9.844 Y-26.425 B15.441 C212.32 +G01 X+9.812 Y-26.377 Z-2.135 B15.444 C212.044 +G01 X+9.672 Y-26.14 Z-2.134 B15.439 C210.731 +G01 X+9.532 Y-25.903 B15.441 C209.417 +G01 X+9.497 Y-25.844 Z-2.135 B15.444 C209.093 +G01 X+9.372 Y-25.605 Z-2.134 B15.439 C207.803 +G01 X+9.246 Y-25.365 B15.441 C206.514 +G01 X+9.21 Y-25.296 Z-2.135 B15.444 C206.141 +G01 X+9.099 Y-25.055 Z-2.134 B15.439 C204.876 +G01 X+8.989 Y-24.813 B15.441 C203.61 +G01 X+8.952 Y-24.733 Z-2.135 B15.444 C203.189 +G01 X+8.855 Y-24.491 Z-2.134 B15.439 C201.948 +G01 X+8.759 Y-24.249 B15.44 C200.707 +G01 X+8.723 Y-24.158 Z-2.135 B15.444 C200.238 +G01 X+8.64 Y-23.916 Z-2.134 B15.439 C199.021 +G01 X+8.558 Y-23.674 B15.44 C197.804 +G01 X+8.524 Y-23.572 Z-2.135 B15.444 C197.286 +G01 X+8.455 Y-23.331 Z-2.134 B15.439 C196.093 +G01 X+8.387 Y-23.09 B15.44 C194.901 +G01 X+8.355 Y-22.977 Z-2.135 B15.444 C194.335 +G01 X+8.3 Y-22.737 Z-2.134 B15.439 C193.166 +G01 X+8.246 Y-22.498 B15.44 C191.997 +G01 X+8.217 Y-22.373 Z-2.135 B15.444 C191.383 +G01 X+8.176 Y-22.136 Z-2.134 B15.439 C190.239 +G01 X+8.134 Y-21.899 B15.44 C189.094 +G01 X+8.111 Y-21.764 Z-2.135 B15.444 C188.431 +G01 X+8.082 Y-21.53 Z-2.134 B15.439 C187.311 +G01 X+8.054 Y-21.296 C186.191 +G01 X+8.036 Y-21.149 Z-2.135 B15.444 C185.48 +G01 X+8.014 Y-20.841 Z-2.134 C184.004 +G01 X+7.992 Y-20.532 Z-2.135 C182.528 +G01 X+7.984 Y-20.081 Z-2.134 B15.439 C180.384 +G01 X+7.981 Y-19.913 Z-2.135 B15.444 C179.577 +G01 X+7.996 Y-19.472 Z-2.134 B15.439 C177.481 +G01 X+8.001 Y-19.294 Z-2.135 B15.444 C176.625 +G01 X+8.038 Y-18.865 Z-2.134 B15.439 C174.578 +G01 X+8.054 Y-18.678 Z-2.135 B15.444 C173.674 +G01 X+8.111 Y-18.26 Z-2.134 B15.439 C171.675 +G01 X+8.137 Y-18.064 Z-2.135 B15.444 C170.722 +G01 X+8.214 Y-17.66 Z-2.134 B15.439 C168.771 +G01 X+8.253 Y-17.456 Z-2.135 B15.444 C167.77 +G01 X+8.348 Y-17.066 Z-2.134 B15.438 C165.868 +G01 X+8.399 Y-16.855 Z-2.135 B15.444 C164.819 +G01 X+8.512 Y-16.48 Z-2.134 B15.438 C162.965 +G01 X+8.577 Y-16.262 Z-2.135 B15.444 C161.867 +G01 X+8.705 Y-15.903 Z-2.134 B15.438 C160.062 +G01 X+8.784 Y-15.679 Z-2.135 B15.444 C158.915 +G01 X+8.903 Y-15.393 Z-2.134 C157.44 +G01 X+9.022 Y-15.107 Z-2.135 C155.964 +G01 X+9.155 Y-14.828 Z-2.134 C154.488 +G01 X+9.288 Y-14.548 Z-2.135 C153.012 +G01 X+9.435 Y-14.276 Z-2.134 B15.439 C151.538 +G01 X+9.583 Y-14.004 Z-2.135 B15.444 C150.064 +G01 X+9.744 Y-13.74 Z-2.134 B15.439 C148.59 +G01 X+9.905 Y-13.476 Z-2.135 B15.444 C147.116 +G01 X+10.08 Y-13.22 Z-2.134 B15.439 C145.642 +G01 X+10.255 Y-12.965 Z-2.135 B15.443 C144.167 +G01 X+10.442 Y-12.719 Z-2.134 B15.438 C142.693 +G01 X+10.63 Y-12.473 Z-2.135 B15.443 C141.219 +G01 X+10.829 Y-12.236 Z-2.134 B15.438 C139.748 +G01 X+11.03 Y-12 Z-2.135 B15.443 C138.278 +G01 X+11.241 Y-11.774 Z-2.134 B15.438 C136.802 +G01 X+11.453 Y-11.549 Z-2.135 B15.443 C135.326 +G01 X+11.676 Y-11.334 Z-2.134 B15.438 C133.851 +G01 X+11.9 Y-11.12 Z-2.135 B15.443 C132.375 +G01 X+12.121 Y-10.928 Z-2.134 B15.438 C130.976 +G01 X+12.343 Y-10.737 Z-2.135 B15.442 C129.578 +G01 X+12.367 Y-10.715 B15.444 C129.423 +G01 X+12.594 Y-10.538 Z-2.134 B15.438 C128.049 +G01 X+12.822 Y-10.361 Z-2.135 B15.442 C126.675 +G01 X+12.856 Y-10.334 B15.444 C126.472 +G01 X+13.087 Y-10.172 Z-2.134 B15.438 C125.122 +G01 X+13.319 Y-10.01 Z-2.135 B15.442 C123.772 +G01 X+13.363 Y-9.979 B15.444 C123.52 +G01 X+13.598 Y-9.832 Z-2.134 B15.439 C122.194 +G01 X+13.834 Y-9.684 B15.441 C120.868 +G01 X+13.887 Y-9.651 Z-2.135 B15.444 C120.568 +G01 X+14.126 Y-9.518 Z-2.134 B15.439 C119.267 +G01 X+14.365 Y-9.385 B15.441 C117.965 +G01 X+14.428 Y-9.35 Z-2.135 B15.444 C117.617 +G01 X+14.669 Y-9.232 Z-2.134 B15.439 C116.339 +G01 X+14.909 Y-9.114 B15.441 C115.062 +G01 X+14.984 Y-9.077 Z-2.135 B15.444 C114.665 +G01 X+15.225 Y-8.974 Z-2.134 B15.439 C113.412 +G01 X+15.467 Y-8.87 B15.441 C112.159 +G01 X+15.553 Y-8.834 Z-2.135 B15.444 C111.714 +G01 X+15.795 Y-8.744 Z-2.134 B15.439 C110.485 +G01 X+16.037 Y-8.655 B15.44 C109.255 +G01 X+16.133 Y-8.619 Z-2.135 B15.444 C108.762 +G01 X+16.375 Y-8.544 Z-2.134 B15.439 C107.557 +G01 X+16.617 Y-8.469 B15.44 C106.352 +G01 X+16.724 Y-8.435 Z-2.135 B15.444 C105.811 +G01 X+16.965 Y-8.374 Z-2.134 B15.439 C104.63 +G01 X+17.205 Y-8.313 B15.44 C103.449 +G01 X+17.324 Y-8.282 Z-2.135 B15.444 C102.859 +G01 X+17.562 Y-8.234 Z-2.134 B15.439 C101.702 +G01 X+17.801 Y-8.186 B15.44 C100.546 +G01 X+17.931 Y-8.16 Z-2.135 B15.444 C99.907 +G01 X+18.166 Y-8.125 Z-2.134 B15.439 C98.775 +G01 X+18.402 Y-8.09 C97.643 +G01 X+18.543 Y-8.069 Z-2.135 B15.444 C96.956 +G01 X+18.775 Y-8.047 Z-2.134 B15.439 C95.848 +G01 X+19.007 Y-8.025 C94.739 +G01 X+19.159 Y-8.01 Z-2.135 B15.444 C94.004 +G01 X+19.387 Y-8 Z-2.134 B15.439 C92.92 +G01 X+19.615 Y-7.99 C91.836 +G01 X+19.777 Y-7.983 Z-2.135 B15.444 C91.052 +G01 X+20.224 Y-7.986 Z-2.134 B15.439 C88.933 +G01 X+20.396 Y-7.987 Z-2.135 B15.444 C88.101 +G01 X+20.832 Y-8.013 Z-2.134 B15.439 C86.03 +G01 X+21.014 Y-8.023 Z-2.135 B15.444 C85.149 +G01 X+21.438 Y-8.07 Z-2.134 B15.439 C83.126 +G01 X+21.629 Y-8.091 Z-2.135 B15.444 C82.198 +G01 X+22.04 Y-8.159 Z-2.134 B15.439 C80.223 +G01 X+22.24 Y-8.191 Z-2.135 B15.444 C79.246 +G01 X+22.638 Y-8.277 Z-2.134 B15.438 C77.32 +G01 X+22.845 Y-8.322 Z-2.135 B15.444 C76.295 +G01 X+23.228 Y-8.426 Z-2.134 B15.438 C74.417 +G01 X+23.443 Y-8.484 Z-2.135 B15.444 C73.343 +G01 X+23.81 Y-8.604 Z-2.134 B15.438 C71.514 +G01 X+24.031 Y-8.677 Z-2.135 B15.444 C70.391 +G01 X+24.382 Y-8.812 Z-2.134 B15.438 C68.61 +G01 X+24.608 Y-8.899 Z-2.135 B15.444 C67.44 +G01 X+24.891 Y-9.025 Z-2.134 C65.964 +G01 X+25.174 Y-9.151 Z-2.135 C64.488 +G01 X+25.45 Y-9.291 Z-2.134 C63.013 +G01 X+25.725 Y-9.432 Z-2.135 C61.538 +G01 X+25.994 Y-9.586 Z-2.134 B15.439 C60.064 +G01 X+26.262 Y-9.741 Z-2.135 B15.444 C58.59 +G01 X+26.522 Y-9.908 Z-2.134 B15.439 C57.115 +G01 X+26.782 Y-10.077 Z-2.135 B15.443 C55.641 +G01 X+27.033 Y-10.258 Z-2.134 B15.439 C54.167 +G01 X+27.284 Y-10.439 Z-2.135 B15.443 C52.693 +G01 X+27.526 Y-10.633 Z-2.134 B15.438 C51.216 +G01 X+27.768 Y-10.828 Z-2.135 B15.443 C49.739 +G01 X+27.998 Y-11.033 Z-2.134 B15.438 C48.271 +G01 X+28.228 Y-11.238 Z-2.135 B15.443 C46.802 +G01 X+28.448 Y-11.456 Z-2.134 B15.439 C45.326 +G01 X+28.668 Y-11.674 Z-2.135 B15.443 C43.851 +G01 X+28.877 Y-11.902 Z-2.134 B15.439 C42.375 +G01 X+29.085 Y-12.131 Z-2.135 B15.444 C40.899 +G01 X+29.27 Y-12.355 Z-2.134 B15.438 C39.513 +G01 X+29.454 Y-12.58 Z-2.135 B15.442 C38.126 +G01 X+29.478 Y-12.609 B15.444 C37.947 +G01 X+29.648 Y-12.838 Z-2.134 B15.438 C36.585 +G01 X+29.818 Y-13.068 Z-2.135 B15.442 C35.223 +G01 X+29.846 Y-13.107 B15.444 C34.996 +G01 X+30.001 Y-13.341 Z-2.134 B15.439 C33.658 +G01 X+30.156 Y-13.575 B15.441 C32.32 +G01 X+30.188 Y-13.623 Z-2.135 B15.444 C32.044 +G01 X+30.328 Y-13.86 Z-2.134 B15.439 C30.731 +G01 X+30.468 Y-14.097 B15.441 C29.417 +G01 X+30.503 Y-14.156 Z-2.135 B15.444 C29.093 +G01 X+30.628 Y-14.395 Z-2.134 B15.439 C27.803 +G01 X+30.754 Y-14.635 B15.441 C26.514 +G01 X+30.79 Y-14.704 Z-2.135 B15.444 C26.141 +G01 X+30.901 Y-14.945 Z-2.134 B15.439 C24.876 +G01 X+31.011 Y-15.187 B15.441 C23.61 +G01 X+31.048 Y-15.267 Z-2.135 B15.444 C23.189 +G01 X+31.145 Y-15.509 Z-2.134 B15.439 C21.948 +G01 X+31.241 Y-15.751 B15.44 C20.707 +G01 X+31.277 Y-15.842 Z-2.135 B15.444 C20.238 +G01 X+31.36 Y-16.084 Z-2.134 B15.439 C19.021 +G01 X+31.442 Y-16.326 B15.44 C17.804 +G01 X+31.476 Y-16.428 Z-2.135 B15.444 C17.286 +G01 X+31.545 Y-16.669 Z-2.134 B15.439 C16.093 +G01 X+31.613 Y-16.91 B15.44 C14.901 +G01 X+31.645 Y-17.023 Z-2.135 B15.444 C14.335 +G01 X+31.7 Y-17.263 Z-2.134 B15.439 C13.166 +G01 X+31.754 Y-17.502 B15.44 C11.997 +G01 X+31.783 Y-17.627 Z-2.135 B15.444 C11.383 +G01 X+31.824 Y-17.864 Z-2.134 B15.439 C10.239 +G01 X+31.866 Y-18.101 B15.44 C9.094 +G01 X+31.889 Y-18.236 Z-2.135 B15.444 C8.431 +G01 X+31.918 Y-18.47 Z-2.134 B15.439 C7.311 +G01 X+31.946 Y-18.704 C6.191 +G01 X+31.964 Y-18.851 Z-2.135 B15.444 C5.48 +G01 X+31.986 Y-19.159 Z-2.134 C4.004 +G01 X+32.008 Y-19.468 Z-2.135 C2.528 +G01 X+32.016 Y-19.919 Z-2.134 B15.439 C0.384 +G01 X+32.019 Y-20.087 Z-2.135 B15.444 C359.577 +G01 X+32.005 Y-20.528 Z-2.134 B15.439 C357.481 +G01 X+31.999 Y-20.706 Z-2.135 B15.444 C356.625 +G01 X+31.962 Y-21.135 Z-2.134 B15.439 C354.578 +G01 X+31.946 Y-21.322 Z-2.135 B15.444 C353.674 +G01 X+31.889 Y-21.74 Z-2.134 B15.439 C351.675 +G01 X+31.863 Y-21.935 Z-2.135 B15.444 C350.722 +G01 X+31.786 Y-22.34 Z-2.134 B15.439 C348.771 +G01 X+31.747 Y-22.544 Z-2.135 B15.444 C347.77 +G01 X+31.652 Y-22.934 Z-2.134 B15.438 C345.868 +G01 X+31.601 Y-23.145 Z-2.135 B15.444 C344.819 +G01 X+31.488 Y-23.52 Z-2.134 B15.438 C342.965 +G01 X+31.423 Y-23.738 Z-2.135 B15.444 C341.867 +G01 X+31.295 Y-24.097 Z-2.134 B15.438 C340.062 +G01 X+31.216 Y-24.321 Z-2.135 B15.444 C338.915 +G01 X+31.097 Y-24.607 Z-2.134 C337.44 +G01 X+30.978 Y-24.893 Z-2.135 C335.964 +G01 X+30.846 Y-25.172 Z-2.134 C334.488 +G01 X+30.712 Y-25.451 Z-2.135 C333.012 +G01 X+30.565 Y-25.724 Z-2.134 B15.439 C331.538 +G01 X+30.417 Y-25.996 Z-2.135 B15.444 C330.064 +G01 X+30.256 Y-26.26 Z-2.134 B15.439 C328.59 +G01 X+30.095 Y-26.524 Z-2.135 B15.444 C327.116 +G01 X+29.92 Y-26.78 Z-2.134 B15.439 C325.642 +G01 X+29.745 Y-27.035 Z-2.135 B15.443 C324.167 +G01 X+29.558 Y-27.281 Z-2.134 B15.438 C322.693 +G01 X+29.37 Y-27.527 Z-2.135 B15.443 C321.219 +G01 X+29.171 Y-27.764 Z-2.134 B15.438 C319.748 +G01 X+28.97 Y-28 Z-2.135 B15.443 C318.278 +G01 X+28.759 Y-28.225 Z-2.134 B15.438 C316.802 +G01 X+28.547 Y-28.451 Z-2.135 B15.443 C315.326 +G01 X+28.324 Y-28.665 Z-2.134 B15.438 C313.851 +G01 X+28.1 Y-28.88 Z-2.135 B15.443 C312.375 +G01 X+27.879 Y-29.072 Z-2.134 B15.438 C310.976 +G01 X+27.657 Y-29.263 Z-2.135 B15.442 C309.578 +G01 X+27.633 Y-29.285 B15.444 C309.423 +G01 X+27.406 Y-29.462 Z-2.134 B15.438 C308.049 +G01 X+27.178 Y-29.639 Z-2.135 B15.442 C306.675 +G01 X+27.144 Y-29.665 B15.444 C306.472 +G01 X+26.913 Y-29.828 Z-2.134 B15.438 C305.122 +G01 X+26.681 Y-29.99 Z-2.135 B15.442 C303.772 +G01 X+26.637 Y-30.02 B15.444 C303.52 +G01 X+26.402 Y-30.168 Z-2.134 B15.439 C302.194 +G01 X+26.166 Y-30.316 B15.441 C300.868 +G01 X+26.113 Y-30.349 Z-2.135 B15.444 C300.568 +G01 X+25.874 Y-30.482 Z-2.134 B15.439 C299.267 +G01 X+25.636 Y-30.614 B15.441 C297.965 +G01 X+25.572 Y-30.65 Z-2.135 B15.444 C297.617 +G01 X+25.331 Y-30.768 Z-2.134 B15.439 C296.339 +G01 X+25.091 Y-30.886 B15.441 C295.062 +G01 X+25.016 Y-30.923 Z-2.135 B15.444 C294.665 +G01 X+24.775 Y-31.026 Z-2.134 B15.439 C293.412 +G01 X+24.533 Y-31.13 B15.441 C292.159 +G01 X+24.447 Y-31.166 Z-2.135 B15.444 C291.714 +G01 X+24.205 Y-31.256 Z-2.134 B15.439 C290.485 +G01 X+23.963 Y-31.345 B15.44 C289.255 +G01 X+23.867 Y-31.38 Z-2.135 B15.444 C288.762 +G01 X+23.625 Y-31.456 Z-2.134 B15.439 C287.557 +G01 X+23.383 Y-31.531 B15.44 C286.352 +G01 X+23.276 Y-31.564 Z-2.135 B15.444 C285.811 +G01 X+23.035 Y-31.626 Z-2.134 B15.439 C284.63 +G01 X+22.795 Y-31.687 B15.44 C283.449 +G01 X+22.676 Y-31.718 Z-2.135 B15.444 C282.859 +G01 X+22.438 Y-31.766 Z-2.134 B15.439 C281.702 +G01 X+22.199 Y-31.814 B15.44 C280.546 +G01 X+22.069 Y-31.84 Z-2.135 B15.444 C279.907 +G01 X+21.834 Y-31.875 Z-2.134 B15.439 C278.775 +G01 X+21.598 Y-31.91 C277.643 +G01 X+21.457 Y-31.931 Z-2.135 B15.444 C276.956 +G01 X+21.225 Y-31.953 Z-2.134 B15.439 C275.847 +G01 X+20.993 Y-31.975 C274.739 +G01 X+20.841 Y-31.99 Z-2.135 B15.444 C274.004 +G01 X+20.613 Y-32 Z-2.134 B15.439 C272.92 +G01 X+20.385 Y-32.01 C271.836 +G01 X+20.223 Y-32.017 Z-2.135 B15.444 C271.052 +G01 X+19.776 Y-32.014 Z-2.134 B15.439 C268.933 +G01 X+19.604 Y-32.013 Z-2.135 B15.444 C268.101 +G01 X+19.168 Y-31.987 Z-2.134 B15.439 C266.03 +G01 X+18.986 Y-31.976 Z-2.135 B15.444 C265.149 +G01 X+18.562 Y-31.93 Z-2.134 B15.439 C263.126 +G01 X+18.371 Y-31.908 Z-2.135 B15.444 C262.198 +G01 X+17.96 Y-31.841 Z-2.134 B15.439 C260.223 +G01 X+17.76 Y-31.809 Z-2.135 B15.444 C259.246 +G01 X+17.362 Y-31.723 Z-2.134 B15.438 C257.32 +G01 X+17.155 Y-31.678 Z-2.135 B15.444 C256.295 +G01 X+16.772 Y-31.574 Z-2.134 B15.438 C254.417 +G01 X+16.557 Y-31.516 Z-2.135 B15.444 C253.343 +G01 X+16.19 Y-31.396 Z-2.134 B15.438 C251.514 +G01 X+15.969 Y-31.323 Z-2.135 B15.444 C250.391 +G01 X+15.618 Y-31.188 Z-2.134 B15.438 C248.61 +G01 X+15.392 Y-31.101 Z-2.135 B15.444 C247.44 +G01 X+15.109 Y-30.975 Z-2.134 B15.439 C245.964 +G01 X+14.826 Y-30.849 Z-2.135 B15.444 C244.489 +G01 X+14.508 Y-30.687 Z-2.134 B15.438 C242.804 +G01 X+14.233 Y-30.547 Z-2.135 B15.444 C241.352 +G01 X+13.983 Y-30.402 Z-2.134 B15.44 C239.956 +G01 X+13.732 Y-30.256 Z-2.135 B15.444 C238.56 +G01 X+13.475 Y-30.09 Z-2.134 B15.439 C237.1 +G01 X+13.218 Y-29.923 Z-2.135 B15.443 C235.64 +G01 X+12.967 Y-29.742 Z-2.134 B15.438 C234.167 +G01 X+12.716 Y-29.561 Z-2.135 B15.443 C232.693 +G01 X+12.474 Y-29.367 Z-2.134 B15.438 C231.216 +G01 X+12.232 Y-29.172 Z-2.135 B15.443 C229.739 +G01 X+12.002 Y-28.967 Z-2.134 B15.438 C228.271 +G01 X+11.772 Y-28.761 Z-2.135 B15.443 C226.802 +G01 X+11.521 Y-28.514 Z-2.134 B15.439 C225.119 +G01 Y-28.38 Z-2.108 B15.316 C224.663 +G01 X+11.401 Y-28.262 Z-2.109 B15.318 C223.859 +G01 X+11.194 Y-28.035 Z-2.108 B15.314 C222.383 +G01 X+10.987 Y-27.808 Z-2.109 B15.319 C220.908 +G01 X+10.792 Y-27.571 Z-2.108 B15.314 C219.432 +G01 X+10.597 Y-27.334 Z-2.109 B15.319 C217.956 +G01 X+10.414 Y-27.087 Z-2.108 B15.314 C216.481 +G01 X+10.232 Y-26.84 Z-2.109 B15.319 C215.005 +G01 X+10.062 Y-26.584 Z-2.108 B15.314 C213.529 +G01 X+9.893 Y-26.328 Z-2.109 B15.319 C212.054 +G01 X+9.736 Y-26.064 Z-2.108 C210.578 +G01 X+9.581 Y-25.8 Z-2.109 C209.103 +G01 X+9.453 Y-25.556 Z-2.108 B15.314 C207.781 +G01 X+9.325 Y-25.312 B15.317 C206.458 +G01 X+9.296 Y-25.255 Z-2.109 B15.319 C206.151 +G01 X+9.183 Y-25.01 Z-2.108 B15.314 C204.853 +G01 X+9.07 Y-24.764 B15.316 C203.555 +G01 X+9.039 Y-24.697 Z-2.109 B15.319 C203.2 +G01 X+8.941 Y-24.451 Z-2.108 B15.314 C201.926 +G01 X+8.843 Y-24.204 B15.316 C200.651 +G01 X+8.812 Y-24.127 Z-2.109 B15.319 C200.249 +G01 X+8.728 Y-23.88 Z-2.108 B15.314 C198.998 +G01 X+8.644 Y-23.634 B15.316 C197.748 +G01 X+8.614 Y-23.546 Z-2.109 B15.319 C197.298 +G01 X+8.545 Y-23.3 Z-2.108 B15.314 C196.071 +G01 X+8.475 Y-23.054 B15.316 C194.844 +G01 X+8.447 Y-22.955 Z-2.109 B15.319 C194.347 +G01 X+8.391 Y-22.71 Z-2.108 B15.314 C193.144 +G01 X+8.335 Y-22.466 B15.315 C191.941 +G01 X+8.31 Y-22.356 Z-2.109 B15.319 C191.395 +G01 X+8.268 Y-22.114 Z-2.108 B15.314 C190.216 +G01 X+8.226 Y-21.872 B15.315 C189.037 +G01 X+8.204 Y-21.751 Z-2.109 B15.319 C188.444 +G01 X+8.167 Y-21.447 Z-2.108 B15.315 C186.969 +G01 X+8.13 Y-21.142 Z-2.109 B15.319 C185.493 +G01 X+8.108 Y-20.835 Z-2.108 B15.315 C184.017 +G01 X+8.087 Y-20.529 Z-2.109 B15.32 C182.542 +G01 X+8.081 Y-20.222 Z-2.108 C181.066 +G01 X+8.075 Y-19.915 Z-2.109 C179.591 +G01 X+8.085 Y-19.608 Z-2.108 B15.315 C178.115 +G01 X+8.096 Y-19.301 Z-2.109 B15.319 C176.639 +G01 X+8.121 Y-18.995 Z-2.108 B15.315 C175.164 +G01 X+8.147 Y-18.69 Z-2.109 B15.319 C173.688 +G01 X+8.206 Y-18.261 Z-2.108 B15.314 C171.617 +G01 X+8.231 Y-18.081 Z-2.109 B15.319 C170.737 +G01 X+8.309 Y-17.666 Z-2.108 B15.314 C168.713 +G01 X+8.345 Y-17.478 Z-2.109 B15.319 C167.786 +G01 X+8.443 Y-17.077 Z-2.108 B15.314 C165.81 +G01 X+8.49 Y-16.881 Z-2.109 B15.319 C164.835 +G01 X+8.606 Y-16.495 Z-2.108 B15.314 C162.907 +G01 X+8.666 Y-16.293 Z-2.109 B15.319 C161.883 +G01 X+8.798 Y-15.923 Z-2.108 B15.314 C160.003 +G01 X+8.872 Y-15.714 Z-2.109 B15.319 C158.932 +G01 X+9.019 Y-15.36 Z-2.108 B15.314 C157.1 +G01 X+9.107 Y-15.147 Z-2.109 B15.319 C155.981 +G01 X+9.268 Y-14.81 Z-2.108 B15.314 C154.196 +G01 X+9.372 Y-14.593 Z-2.109 B15.319 C153.03 +G01 X+9.545 Y-14.273 Z-2.108 B15.314 C151.293 +G01 X+9.664 Y-14.053 Z-2.109 B15.319 C150.078 +G01 X+9.848 Y-13.751 Z-2.108 B15.313 C148.39 +G01 X+9.984 Y-13.529 Z-2.109 B15.319 C147.127 +G01 X+10.157 Y-13.275 Z-2.108 C145.652 +G01 X+10.33 Y-13.022 Z-2.109 C144.176 +G01 X+10.516 Y-12.777 Z-2.108 B15.314 C142.701 +G01 X+10.702 Y-12.533 Z-2.109 B15.318 C141.226 +G01 X+10.901 Y-12.298 Z-2.108 B15.314 C139.756 +G01 X+11.099 Y-12.064 Z-2.109 B15.318 C138.286 +G01 X+11.309 Y-11.84 Z-2.108 B15.314 C136.809 +G01 X+11.52 Y-11.616 Z-2.109 B15.319 C135.331 +G01 X+11.741 Y-11.403 Z-2.108 B15.314 C133.857 +G01 X+11.962 Y-11.191 Z-2.109 B15.319 C132.383 +G01 X+12.194 Y-10.99 Z-2.108 B15.314 C130.908 +G01 X+12.426 Y-10.789 Z-2.109 B15.319 C129.432 +G01 X+12.668 Y-10.6 Z-2.108 B15.314 C127.956 +G01 X+12.911 Y-10.411 Z-2.109 B15.319 C126.481 +G01 X+13.162 Y-10.235 Z-2.108 B15.314 C125.005 +G01 X+13.414 Y-10.059 Z-2.109 B15.319 C123.529 +G01 X+13.674 Y-9.896 Z-2.108 C122.054 +G01 X+13.934 Y-9.733 Z-2.109 C120.578 +G01 X+14.177 Y-9.598 Z-2.108 B15.314 C119.244 +G01 X+14.42 Y-9.463 B15.317 C117.91 +G01 X+14.471 Y-9.435 Z-2.109 B15.319 C117.627 +G01 X+14.715 Y-9.314 Z-2.108 B15.314 C116.317 +G01 X+14.961 Y-9.194 B15.317 C115.006 +G01 X+15.022 Y-9.164 Z-2.109 B15.319 C114.676 +G01 X+15.268 Y-9.058 Z-2.108 B15.314 C113.389 +G01 X+15.514 Y-8.953 B15.316 C112.103 +G01 X+15.586 Y-8.922 Z-2.109 B15.319 C111.725 +G01 X+15.833 Y-8.831 Z-2.108 B15.314 C110.462 +G01 X+16.08 Y-8.74 B15.316 C109.2 +G01 X+16.162 Y-8.709 Z-2.109 B15.319 C108.773 +G01 X+16.409 Y-8.633 Z-2.108 B15.314 C107.535 +G01 X+16.655 Y-8.556 B15.316 C106.296 +G01 X+16.749 Y-8.527 Z-2.109 B15.319 C105.822 +G01 X+16.994 Y-8.464 Z-2.108 B15.314 C104.607 +G01 X+17.239 Y-8.401 B15.316 C103.392 +G01 X+17.344 Y-8.375 Z-2.109 B15.319 C102.871 +G01 X+17.587 Y-8.326 Z-2.108 B15.314 C101.68 +G01 X+17.83 Y-8.277 B15.315 C100.489 +G01 X+17.946 Y-8.253 Z-2.109 B15.319 C99.92 +G01 X+18.249 Y-8.208 Z-2.108 B15.315 C98.444 +G01 X+18.553 Y-8.163 Z-2.109 B15.32 C96.969 +G01 X+18.859 Y-8.134 Z-2.108 B15.315 C95.493 +G01 X+19.164 Y-8.104 Z-2.109 B15.32 C94.017 +G01 X+19.471 Y-8.09 Z-2.108 C92.542 +G01 X+19.778 Y-8.077 Z-2.109 C91.066 +G01 X+20.085 Y-8.079 Z-2.108 B15.315 C89.59 +G01 X+20.392 Y-8.082 Z-2.109 B15.32 C88.115 +G01 X+20.698 Y-8.099 Z-2.108 B15.315 C86.639 +G01 X+21.005 Y-8.117 Z-2.109 B15.319 C85.164 +G01 X+21.44 Y-8.166 Z-2.108 B15.314 C83.068 +G01 X+21.615 Y-8.185 Z-2.109 B15.319 C82.212 +G01 X+22.037 Y-8.254 Z-2.108 B15.314 C80.165 +G01 X+22.221 Y-8.284 Z-2.109 B15.319 C79.261 +G01 X+22.629 Y-8.372 Z-2.108 B15.314 C77.262 +G01 X+22.821 Y-8.414 Z-2.109 B15.319 C76.31 +G01 X+23.215 Y-8.52 Z-2.108 B15.314 C74.358 +G01 X+23.414 Y-8.574 Z-2.109 B15.319 C73.359 +G01 X+23.792 Y-8.698 Z-2.108 B15.314 C71.455 +G01 X+23.998 Y-8.765 Z-2.109 B15.319 C70.408 +G01 X+24.36 Y-8.905 Z-2.108 B15.314 C68.552 +G01 X+24.571 Y-8.986 Z-2.109 B15.319 C67.457 +G01 X+24.916 Y-9.14 Z-2.108 B15.314 C65.648 +G01 X+25.132 Y-9.236 Z-2.109 B15.319 C64.505 +G01 X+25.46 Y-9.403 Z-2.108 B15.314 C62.745 +G01 X+25.679 Y-9.514 Z-2.109 B15.319 C61.554 +G01 X+25.99 Y-9.693 Z-2.108 B15.314 C59.842 +G01 X+26.211 Y-9.82 Z-2.109 B15.319 C58.603 +G01 X+26.469 Y-9.987 Z-2.108 C57.127 +G01 X+26.727 Y-10.154 Z-2.109 C55.652 +G01 X+26.976 Y-10.333 Z-2.108 B15.314 C54.176 +G01 X+27.225 Y-10.513 Z-2.109 B15.319 C52.7 +G01 X+27.465 Y-10.705 Z-2.108 B15.314 C51.226 +G01 X+27.704 Y-10.898 Z-2.109 B15.318 C49.752 +G01 X+27.933 Y-11.102 Z-2.108 B15.314 C48.281 +G01 X+28.162 Y-11.306 Z-2.109 B15.318 C46.81 +G01 X+28.381 Y-11.522 Z-2.108 B15.314 C45.334 +G01 X+28.599 Y-11.738 Z-2.109 B15.319 C43.859 +G01 X+28.806 Y-11.965 Z-2.108 B15.314 C42.383 +G01 X+29.013 Y-12.192 Z-2.109 B15.319 C40.908 +G01 X+29.208 Y-12.429 Z-2.108 B15.314 C39.432 +G01 X+29.403 Y-12.666 Z-2.109 B15.319 C37.956 +G01 X+29.586 Y-12.913 Z-2.108 B15.314 C36.481 +G01 X+29.768 Y-13.16 Z-2.109 B15.319 C35.005 +G01 X+29.938 Y-13.415 Z-2.108 B15.314 C33.529 +G01 X+30.107 Y-13.672 Z-2.109 B15.319 C32.054 +G01 X+30.264 Y-13.936 Z-2.108 C30.578 +G01 X+30.42 Y-14.2 Z-2.109 C29.103 +G01 X+30.547 Y-14.444 Z-2.108 B15.314 C27.781 +G01 X+30.675 Y-14.688 B15.317 C26.458 +G01 X+30.704 Y-14.744 Z-2.109 B15.319 C26.151 +G01 X+30.817 Y-14.99 Z-2.108 B15.314 C24.853 +G01 X+30.93 Y-15.236 B15.316 C23.555 +G01 X+30.961 Y-15.302 Z-2.109 B15.319 C23.2 +G01 X+31.059 Y-15.549 Z-2.108 B15.314 C21.926 +G01 X+31.157 Y-15.796 B15.316 C20.651 +G01 X+31.188 Y-15.873 Z-2.109 B15.319 C20.249 +G01 X+31.272 Y-16.119 Z-2.108 B15.314 C18.999 +G01 X+31.356 Y-16.366 B15.316 C17.748 +G01 X+31.386 Y-16.454 Z-2.109 B15.319 C17.298 +G01 X+31.455 Y-16.7 Z-2.108 B15.314 C16.071 +G01 X+31.525 Y-16.946 B15.316 C14.844 +G01 X+31.553 Y-17.045 Z-2.109 B15.319 C14.347 +G01 X+31.609 Y-17.289 Z-2.108 B15.314 C13.144 +G01 X+31.665 Y-17.534 B15.315 C11.941 +G01 X+31.69 Y-17.644 Z-2.109 B15.319 C11.395 +G01 X+31.732 Y-17.886 Z-2.108 B15.314 C10.216 +G01 X+31.774 Y-18.128 B15.315 C9.037 +G01 X+31.796 Y-18.249 Z-2.109 B15.319 C8.444 +G01 X+31.833 Y-18.553 Z-2.108 B15.315 C6.969 +G01 X+31.87 Y-18.858 Z-2.109 B15.319 C5.493 +G01 X+31.892 Y-19.164 Z-2.108 B15.315 C4.017 +G01 X+31.913 Y-19.471 Z-2.109 B15.32 C2.542 +G01 X+31.919 Y-19.778 Z-2.108 C1.066 +G01 X+31.925 Y-20.085 Z-2.109 C359.591 +G01 X+31.915 Y-20.392 Z-2.108 B15.315 C358.115 +G01 X+31.904 Y-20.698 Z-2.109 B15.319 C356.639 +G01 X+31.879 Y-21.004 Z-2.108 B15.315 C355.164 +G01 X+31.853 Y-21.31 Z-2.109 B15.319 C353.688 +G01 X+31.794 Y-21.739 Z-2.108 B15.314 C351.617 +G01 X+31.769 Y-21.919 Z-2.109 B15.319 C350.737 +G01 X+31.691 Y-22.334 Z-2.108 B15.314 C348.713 +G01 X+31.655 Y-22.522 Z-2.109 B15.319 C347.786 +G01 X+31.557 Y-22.923 Z-2.108 B15.314 C345.81 +G01 X+31.51 Y-23.119 Z-2.109 B15.319 C344.835 +G01 X+31.394 Y-23.505 Z-2.108 B15.314 C342.907 +G01 X+31.334 Y-23.707 Z-2.109 B15.319 C341.883 +G01 X+31.202 Y-24.077 Z-2.108 B15.314 C340.003 +G01 X+31.128 Y-24.286 Z-2.109 B15.319 C338.932 +G01 X+30.981 Y-24.639 Z-2.108 B15.314 C337.1 +G01 X+30.893 Y-24.853 Z-2.109 B15.319 C335.981 +G01 X+30.732 Y-25.19 Z-2.108 B15.314 C334.196 +G01 X+30.628 Y-25.407 Z-2.109 B15.319 C333.03 +G01 X+30.455 Y-25.727 Z-2.108 B15.314 C331.293 +G01 X+30.336 Y-25.947 Z-2.109 B15.319 C330.078 +G01 X+30.152 Y-26.249 Z-2.108 B15.313 C328.39 +G01 X+30.016 Y-26.471 Z-2.109 B15.319 C327.127 +G01 X+29.843 Y-26.725 Z-2.108 C325.652 +G01 X+29.67 Y-26.978 Z-2.109 C324.176 +G01 X+29.484 Y-27.223 Z-2.108 B15.314 C322.701 +G01 X+29.298 Y-27.467 Z-2.109 B15.318 C321.226 +G01 X+29.099 Y-27.701 Z-2.108 B15.314 C319.756 +G01 X+28.901 Y-27.936 Z-2.109 B15.318 C318.286 +G01 X+28.691 Y-28.16 Z-2.108 B15.314 C316.809 +G01 X+28.48 Y-28.384 Z-2.109 B15.319 C315.331 +G01 X+28.259 Y-28.596 Z-2.108 B15.314 C313.857 +G01 X+28.038 Y-28.809 Z-2.109 B15.319 C312.383 +G01 X+27.806 Y-29.01 Z-2.108 B15.314 C310.908 +G01 X+27.574 Y-29.211 Z-2.109 B15.319 C309.432 +G01 X+27.332 Y-29.4 Z-2.108 B15.314 C307.956 +G01 X+27.089 Y-29.589 Z-2.109 B15.319 C306.481 +G01 X+26.838 Y-29.765 Z-2.108 B15.314 C305.005 +G01 X+26.586 Y-29.941 Z-2.109 B15.319 C303.529 +G01 X+26.326 Y-30.104 Z-2.108 C302.054 +G01 X+26.066 Y-30.267 Z-2.109 C300.578 +G01 X+25.823 Y-30.402 Z-2.108 B15.314 C299.244 +G01 X+25.58 Y-30.537 B15.317 C297.91 +G01 X+25.529 Y-30.565 Z-2.109 B15.319 C297.627 +G01 X+25.285 Y-30.686 Z-2.108 B15.314 C296.317 +G01 X+25.039 Y-30.806 B15.317 C295.006 +G01 X+24.978 Y-30.836 Z-2.109 B15.319 C294.676 +G01 X+24.732 Y-30.942 Z-2.108 B15.314 C293.389 +G01 X+24.486 Y-31.047 B15.316 C292.103 +G01 X+24.414 Y-31.078 Z-2.109 B15.319 C291.725 +G01 X+24.167 Y-31.169 Z-2.108 B15.314 C290.462 +G01 X+23.92 Y-31.26 B15.316 C289.2 +G01 X+23.838 Y-31.29 Z-2.109 B15.319 C288.773 +G01 X+23.591 Y-31.367 Z-2.108 B15.314 C287.535 +G01 X+23.345 Y-31.444 B15.316 C286.296 +G01 X+23.251 Y-31.473 Z-2.109 B15.319 C285.822 +G01 X+23.006 Y-31.536 Z-2.108 B15.314 C284.607 +G01 X+22.761 Y-31.598 B15.316 C283.392 +G01 X+22.656 Y-31.625 Z-2.109 B15.319 C282.871 +G01 X+22.413 Y-31.674 Z-2.108 B15.314 C281.68 +G01 X+22.17 Y-31.723 B15.315 C280.489 +G01 X+22.054 Y-31.746 Z-2.109 B15.319 C279.92 +G01 X+21.751 Y-31.792 Z-2.108 B15.315 C278.444 +G01 X+21.447 Y-31.837 Z-2.109 B15.32 C276.969 +G01 X+21.141 Y-31.866 Z-2.108 B15.315 C275.493 +G01 X+20.836 Y-31.895 Z-2.109 B15.32 C274.017 +G01 X+20.529 Y-31.909 Z-2.108 C272.542 +G01 X+20.222 Y-31.923 Z-2.109 C271.066 +G01 X+19.915 Y-31.921 Z-2.108 B15.315 C269.59 +G01 X+19.608 Y-31.918 Z-2.109 B15.32 C268.115 +G01 X+19.302 Y-31.901 Z-2.108 B15.315 C266.639 +G01 X+18.995 Y-31.882 Z-2.109 B15.319 C265.164 +G01 X+18.56 Y-31.834 Z-2.108 B15.314 C263.068 +G01 X+18.385 Y-31.815 Z-2.109 B15.319 C262.212 +G01 X+17.963 Y-31.746 Z-2.108 B15.314 C260.165 +G01 X+17.779 Y-31.716 Z-2.109 B15.319 C259.261 +G01 X+17.371 Y-31.628 Z-2.108 B15.314 C257.262 +G01 X+17.179 Y-31.586 Z-2.109 B15.319 C256.31 +G01 X+16.785 Y-31.48 Z-2.108 B15.314 C254.358 +G01 X+16.586 Y-31.426 Z-2.109 B15.319 C253.359 +G01 X+16.208 Y-31.302 Z-2.108 B15.314 C251.455 +G01 X+16.002 Y-31.235 Z-2.109 B15.319 C250.408 +G01 X+15.64 Y-31.095 Z-2.108 B15.314 C248.551 +G01 X+15.429 Y-31.014 Z-2.109 B15.319 C247.456 +G01 X+15.149 Y-30.889 Z-2.108 B15.314 C245.981 +G01 X+14.868 Y-30.764 Z-2.109 B15.319 C244.506 +G01 X+14.54 Y-30.597 Z-2.108 B15.314 C242.745 +G01 X+14.279 Y-30.464 Z-2.109 B15.32 C241.352 +G01 X+14.03 Y-30.32 Z-2.108 B15.315 C239.961 +G01 X+13.783 Y-30.176 Z-2.109 B15.319 C238.57 +G01 X+13.528 Y-30.011 Z-2.108 B15.314 C237.111 +G01 X+13.273 Y-29.846 Z-2.109 B15.319 C235.652 +G01 X+13.024 Y-29.667 Z-2.108 B15.314 C234.176 +G01 X+12.775 Y-29.487 Z-2.109 B15.319 C232.7 +G01 X+12.535 Y-29.295 Z-2.108 B15.314 C231.226 +G01 X+12.296 Y-29.102 Z-2.109 B15.318 C229.752 +G01 X+12.067 Y-28.898 Z-2.108 B15.313 C228.281 +G01 X+11.838 Y-28.694 Z-2.109 B15.318 C226.81 +G01 X+11.588 Y-28.447 Z-2.108 B15.314 C225.121 +G01 X+11.587 Y-28.314 Z-2.082 B15.197 C224.657 +G01 X+11.47 Y-28.198 Z-2.083 B15.2 C223.861 +G01 X+11.265 Y-27.973 Z-2.082 B15.195 C222.385 +G01 X+11.059 Y-27.748 Z-2.083 B15.2 C220.908 +G01 X+10.863 Y-27.509 Z-2.082 C219.413 +G01 X+10.668 Y-27.271 Z-2.083 C217.918 +G01 X+10.489 Y-27.029 Z-2.082 B15.196 C216.462 +G01 X+10.31 Y-26.787 Z-2.083 B15.201 C215.006 +G01 X+10.142 Y-26.534 Z-2.082 B15.196 C213.531 +G01 X+9.974 Y-26.28 Z-2.083 B15.201 C212.056 +G01 X+9.818 Y-26.017 Z-2.082 B15.196 C210.58 +G01 X+9.664 Y-25.755 Z-2.083 B15.201 C209.105 +G01 X+9.522 Y-25.485 Z-2.082 C207.629 +G01 X+9.381 Y-25.215 Z-2.083 C206.154 +G01 X+9.271 Y-24.976 Z-2.082 B15.196 C204.882 +G01 X+9.162 Y-24.737 B15.198 C203.61 +G01 X+9.127 Y-24.662 Z-2.083 B15.201 C203.203 +G01 X+9.023 Y-24.402 Z-2.082 B15.196 C201.85 +G01 X+8.92 Y-24.143 Z-2.083 B15.199 C200.497 +G01 X+8.901 Y-24.096 B15.201 C200.252 +G01 X+8.813 Y-23.836 Z-2.082 B15.196 C198.923 +G01 X+8.724 Y-23.576 Z-2.083 B15.199 C197.593 +G01 X+8.705 Y-23.519 B15.201 C197.301 +G01 X+8.631 Y-23.26 Z-2.082 B15.196 C195.996 +G01 X+8.558 Y-23 Z-2.083 B15.198 C194.69 +G01 X+8.539 Y-22.933 B15.201 C194.351 +G01 X+8.48 Y-22.675 Z-2.082 B15.196 C193.068 +G01 X+8.421 Y-22.417 B15.198 C191.786 +G01 X+8.403 Y-22.339 Z-2.083 B15.201 C191.4 +G01 X+8.358 Y-22.083 Z-2.082 B15.196 C190.141 +G01 X+8.313 Y-21.827 B15.198 C188.883 +G01 X+8.298 Y-21.739 Z-2.083 B15.201 C188.449 +G01 X+8.267 Y-21.486 Z-2.082 B15.196 C187.214 +G01 X+8.236 Y-21.233 B15.198 C185.979 +G01 X+8.224 Y-21.134 Z-2.083 B15.201 C185.498 +G01 X+8.206 Y-20.885 Z-2.082 B15.196 C184.287 +G01 X+8.189 Y-20.635 B15.198 C183.076 +G01 X+8.181 Y-20.526 Z-2.083 B15.201 C182.547 +G01 X+8.176 Y-20.281 Z-2.082 B15.196 C181.36 +G01 X+8.172 Y-20.036 B15.197 C180.172 +G01 X+8.17 Y-19.917 Z-2.083 B15.201 C179.596 +G01 X+8.177 Y-19.677 Z-2.082 B15.196 C178.433 +G01 X+8.185 Y-19.437 B15.197 C177.269 +G01 X+8.19 Y-19.308 Z-2.083 B15.201 C176.646 +G01 X+8.209 Y-19.074 Z-2.082 B15.196 C175.506 +G01 X+8.229 Y-18.839 B15.197 C174.365 +G01 X+8.241 Y-18.701 Z-2.083 B15.201 C173.695 +G01 X+8.272 Y-18.473 Z-2.082 B15.196 C172.579 +G01 X+8.303 Y-18.245 B15.197 C171.462 +G01 X+8.323 Y-18.098 Z-2.083 B15.201 C170.744 +G01 X+8.365 Y-17.876 Z-2.082 B15.196 C169.651 +G01 X+8.407 Y-17.654 B15.197 C168.558 +G01 X+8.437 Y-17.499 Z-2.083 B15.201 C167.793 +G01 X+8.541 Y-17.07 Z-2.082 B15.196 C165.655 +G01 X+8.581 Y-16.907 Z-2.083 B15.201 C164.842 +G01 X+8.704 Y-16.494 Z-2.082 B15.196 C162.752 +G01 X+8.755 Y-16.324 Z-2.083 B15.201 C161.892 +G01 X+8.897 Y-15.926 Z-2.082 B15.196 C159.848 +G01 X+8.959 Y-15.75 Z-2.083 B15.201 C158.941 +G01 X+9.117 Y-15.369 Z-2.082 B15.196 C156.945 +G01 X+9.193 Y-15.187 Z-2.083 B15.2 C155.99 +G01 X+9.366 Y-14.824 Z-2.082 B15.196 C154.041 +G01 X+9.455 Y-14.637 Z-2.083 B15.2 C153.039 +G01 X+9.642 Y-14.292 Z-2.082 B15.196 C151.138 +G01 X+9.745 Y-14.101 Z-2.083 B15.2 C150.088 +G01 X+9.944 Y-13.774 Z-2.082 B15.196 C148.235 +G01 X+10.062 Y-13.581 Z-2.083 B15.2 C147.137 +G01 X+10.234 Y-13.329 Z-2.082 C145.662 +G01 X+10.406 Y-13.078 Z-2.083 C144.187 +G01 X+10.59 Y-12.835 Z-2.082 B15.195 C142.711 +G01 X+10.775 Y-12.593 Z-2.083 B15.2 C141.236 +G01 X+10.972 Y-12.36 Z-2.082 B15.195 C139.762 +G01 X+11.169 Y-12.128 Z-2.083 B15.2 C138.288 +G01 X+11.377 Y-11.906 Z-2.082 B15.195 C136.813 +G01 X+11.585 Y-11.684 Z-2.083 B15.2 C135.339 +G01 X+11.805 Y-11.473 Z-2.082 B15.195 C133.861 +G01 X+12.025 Y-11.262 Z-2.083 B15.2 C132.384 +G01 X+12.255 Y-11.062 Z-2.082 B15.196 C130.908 +G01 X+12.485 Y-10.863 Z-2.083 B15.2 C129.433 +G01 X+12.725 Y-10.675 Z-2.082 B15.196 C127.957 +G01 X+12.965 Y-10.488 Z-2.083 B15.201 C126.482 +G01 X+13.215 Y-10.313 Z-2.082 B15.196 C125.006 +G01 X+13.464 Y-10.139 Z-2.083 B15.201 C123.531 +G01 X+13.722 Y-9.977 Z-2.082 B15.196 C122.056 +G01 X+13.981 Y-9.815 Z-2.083 B15.201 C120.58 +G01 X+14.247 Y-9.667 Z-2.082 B15.196 C119.105 +G01 X+14.513 Y-9.519 Z-2.083 B15.201 C117.629 +G01 X+14.786 Y-9.384 Z-2.082 C116.154 +G01 X+15.06 Y-9.25 Z-2.083 C114.679 +G01 X+15.319 Y-9.139 Z-2.082 B15.196 C113.314 +G01 X+15.578 Y-9.028 Z-2.083 B15.199 C111.949 +G01 X+15.62 Y-9.01 B15.201 C111.728 +G01 X+15.879 Y-8.914 Z-2.082 B15.196 C110.386 +G01 X+16.139 Y-8.818 Z-2.083 B15.199 C109.045 +G01 X+16.191 Y-8.799 B15.201 C108.777 +G01 X+16.451 Y-8.718 Z-2.082 B15.196 C107.459 +G01 X+16.711 Y-8.637 Z-2.083 B15.199 C106.141 +G01 X+16.773 Y-8.618 B15.201 C105.826 +G01 X+17.032 Y-8.552 Z-2.082 B15.196 C104.532 +G01 X+17.29 Y-8.486 B15.198 C103.238 +G01 X+17.363 Y-8.467 Z-2.083 B15.201 C102.875 +G01 X+17.62 Y-8.415 Z-2.082 B15.196 C101.605 +G01 X+17.877 Y-8.363 B15.198 C100.334 +G01 X+17.96 Y-8.347 Z-2.083 B15.201 C99.924 +G01 X+18.215 Y-8.309 Z-2.082 B15.196 C98.678 +G01 X+18.469 Y-8.271 B15.198 C97.431 +G01 X+18.563 Y-8.257 Z-2.083 B15.201 C96.974 +G01 X+18.814 Y-8.233 Z-2.082 B15.196 C95.751 +G01 X+19.066 Y-8.209 B15.198 C94.527 +G01 X+19.169 Y-8.199 Z-2.083 B15.201 C94.023 +G01 X+19.417 Y-8.187 Z-2.082 B15.196 C92.823 +G01 X+19.664 Y-8.177 B15.197 C91.624 +G01 X+19.778 Y-8.171 Z-2.083 B15.201 C91.072 +G01 X+20.021 Y-8.173 Z-2.082 B15.196 C89.896 +G01 X+20.263 Y-8.175 B15.197 C88.72 +G01 X+20.387 Y-8.176 Z-2.083 B15.201 C88.121 +G01 X+20.625 Y-8.189 Z-2.082 B15.196 C86.969 +G01 X+20.862 Y-8.204 B15.197 C85.817 +G01 X+20.995 Y-8.211 Z-2.083 B15.201 C85.17 +G01 X+21.227 Y-8.237 Z-2.082 B15.196 C84.042 +G01 X+21.458 Y-8.262 B15.197 C82.913 +G01 X+21.601 Y-8.278 Z-2.083 B15.201 C82.219 +G01 X+21.826 Y-8.315 Z-2.082 B15.196 C81.115 +G01 X+22.051 Y-8.352 B15.197 C80.01 +G01 X+22.202 Y-8.376 Z-2.083 B15.201 C79.269 +G01 X+22.638 Y-8.47 Z-2.082 B15.197 C77.106 +G01 X+22.798 Y-8.505 Z-2.083 B15.201 C76.318 +G01 X+23.219 Y-8.619 Z-2.082 B15.196 C74.203 +G01 X+23.386 Y-8.664 Z-2.083 B15.201 C73.367 +G01 X+23.791 Y-8.797 Z-2.082 B15.196 C71.3 +G01 X+23.965 Y-8.854 Z-2.083 B15.201 C70.416 +G01 X+24.354 Y-9.003 Z-2.082 B15.196 C68.396 +G01 X+24.533 Y-9.072 Z-2.083 B15.201 C67.465 +G01 X+24.905 Y-9.238 Z-2.082 B15.196 C65.493 +G01 X+25.09 Y-9.32 Z-2.083 B15.2 C64.514 +G01 X+25.444 Y-9.5 Z-2.082 B15.196 C62.59 +G01 X+25.633 Y-9.596 Z-2.083 B15.2 C61.564 +G01 X+25.969 Y-9.79 Z-2.082 B15.196 C59.686 +G01 X+26.161 Y-9.9 Z-2.083 B15.2 C58.613 +G01 X+26.478 Y-10.105 Z-2.082 B15.196 C56.783 +G01 X+26.673 Y-10.231 Z-2.083 B15.2 C55.662 +G01 X+26.92 Y-10.409 Z-2.082 C54.186 +G01 X+27.167 Y-10.587 Z-2.083 C52.711 +G01 X+27.404 Y-10.778 Z-2.082 B15.195 C51.236 +G01 X+27.642 Y-10.969 Z-2.083 B15.2 C49.76 +G01 X+27.869 Y-11.171 Z-2.082 C48.288 +G01 X+28.097 Y-11.374 Z-2.083 C46.816 +G01 X+28.313 Y-11.588 Z-2.082 B15.195 C45.339 +G01 X+28.53 Y-11.802 Z-2.083 B15.2 C43.861 +G01 X+28.735 Y-12.027 Z-2.082 B15.196 C42.385 +G01 X+28.941 Y-12.252 Z-2.083 B15.2 C40.908 +G01 X+29.137 Y-12.491 Z-2.082 C39.413 +G01 X+29.332 Y-12.729 Z-2.083 C37.918 +G01 X+29.511 Y-12.971 Z-2.082 B15.196 C36.462 +G01 X+29.69 Y-13.213 Z-2.083 B15.201 C35.006 +G01 X+29.858 Y-13.466 Z-2.082 B15.196 C33.531 +G01 X+30.026 Y-13.72 Z-2.083 B15.201 C32.056 +G01 X+30.182 Y-13.982 Z-2.082 B15.196 C30.58 +G01 X+30.336 Y-14.245 Z-2.083 B15.201 C29.105 +G01 X+30.478 Y-14.515 Z-2.082 C27.629 +G01 X+30.619 Y-14.785 Z-2.083 C26.154 +G01 X+30.729 Y-15.023 Z-2.082 B15.196 C24.882 +G01 X+30.838 Y-15.262 B15.198 C23.61 +G01 X+30.873 Y-15.338 Z-2.083 B15.201 C23.203 +G01 X+30.977 Y-15.598 Z-2.082 B15.196 C21.85 +G01 X+31.08 Y-15.857 Z-2.083 B15.199 C20.497 +G01 X+31.099 Y-15.904 B15.201 C20.252 +G01 X+31.187 Y-16.164 Z-2.082 B15.196 C18.923 +G01 X+31.276 Y-16.424 Z-2.083 B15.199 C17.593 +G01 X+31.295 Y-16.481 B15.201 C17.301 +G01 X+31.369 Y-16.74 Z-2.082 B15.196 C15.996 +G01 X+31.442 Y-17 Z-2.083 B15.198 C14.69 +G01 X+31.461 Y-17.067 B15.201 C14.351 +G01 X+31.52 Y-17.325 Z-2.082 B15.196 C13.068 +G01 X+31.579 Y-17.583 B15.198 C11.786 +G01 X+31.597 Y-17.661 Z-2.083 B15.201 C11.4 +G01 X+31.642 Y-17.917 Z-2.082 B15.196 C10.141 +G01 X+31.687 Y-18.173 B15.198 C8.883 +G01 X+31.702 Y-18.261 Z-2.083 B15.201 C8.449 +G01 X+31.733 Y-18.514 Z-2.082 B15.196 C7.214 +G01 X+31.764 Y-18.767 B15.198 C5.979 +G01 X+31.776 Y-18.866 Z-2.083 B15.201 C5.498 +G01 X+31.794 Y-19.115 Z-2.082 B15.196 C4.287 +G01 X+31.811 Y-19.365 B15.198 C3.076 +G01 X+31.819 Y-19.473 Z-2.083 B15.201 C2.547 +G01 X+31.824 Y-19.718 Z-2.082 B15.196 C1.36 +G01 X+31.828 Y-19.964 B15.197 C0.172 +G01 X+31.83 Y-20.082 Z-2.083 B15.201 C359.596 +G01 X+31.823 Y-20.323 Z-2.082 B15.196 C358.433 +G01 X+31.815 Y-20.563 B15.197 C357.269 +G01 X+31.81 Y-20.691 Z-2.083 B15.201 C356.646 +G01 X+31.791 Y-20.926 Z-2.082 B15.196 C355.506 +G01 X+31.771 Y-21.16 B15.197 C354.365 +G01 X+31.759 Y-21.298 Z-2.083 B15.201 C353.695 +G01 X+31.728 Y-21.527 Z-2.082 B15.196 C352.579 +G01 X+31.697 Y-21.755 B15.197 C351.462 +G01 X+31.677 Y-21.902 Z-2.083 B15.201 C350.744 +G01 X+31.635 Y-22.124 Z-2.082 B15.196 C349.651 +G01 X+31.593 Y-22.345 B15.197 C348.558 +G01 X+31.563 Y-22.501 Z-2.083 B15.201 C347.793 +G01 X+31.459 Y-22.93 Z-2.082 B15.196 C345.655 +G01 X+31.419 Y-23.093 Z-2.083 B15.201 C344.842 +G01 X+31.296 Y-23.506 Z-2.082 B15.196 C342.752 +G01 X+31.245 Y-23.676 Z-2.083 B15.201 C341.892 +G01 X+31.103 Y-24.074 Z-2.082 B15.196 C339.848 +G01 X+31.041 Y-24.25 Z-2.083 B15.201 C338.941 +G01 X+30.883 Y-24.631 Z-2.082 B15.196 C336.945 +G01 X+30.807 Y-24.813 Z-2.083 B15.2 C335.99 +G01 X+30.634 Y-25.176 Z-2.082 B15.196 C334.041 +G01 X+30.545 Y-25.363 Z-2.083 B15.2 C333.039 +G01 X+30.358 Y-25.708 Z-2.082 B15.196 C331.138 +G01 X+30.255 Y-25.899 Z-2.083 B15.2 C330.088 +G01 X+30.056 Y-26.225 Z-2.082 B15.196 C328.235 +G01 X+29.938 Y-26.419 Z-2.083 B15.2 C327.137 +G01 X+29.766 Y-26.67 Z-2.082 C325.662 +G01 X+29.594 Y-26.922 Z-2.083 C324.187 +G01 X+29.41 Y-27.164 Z-2.082 B15.195 C322.711 +G01 X+29.225 Y-27.407 Z-2.083 B15.2 C321.236 +G01 X+29.028 Y-27.639 Z-2.082 B15.195 C319.762 +G01 X+28.831 Y-27.872 Z-2.083 B15.2 C318.288 +G01 X+28.623 Y-28.094 Z-2.082 B15.195 C316.813 +G01 X+28.415 Y-28.316 Z-2.083 B15.2 C315.339 +G01 X+28.195 Y-28.527 Z-2.082 B15.195 C313.861 +G01 X+27.975 Y-28.738 Z-2.083 B15.2 C312.384 +G01 X+27.745 Y-28.938 Z-2.082 B15.196 C310.908 +G01 X+27.515 Y-29.137 Z-2.083 B15.2 C309.433 +G01 X+27.275 Y-29.325 Z-2.082 B15.196 C307.957 +G01 X+27.035 Y-29.512 Z-2.083 B15.201 C306.482 +G01 X+26.785 Y-29.687 Z-2.082 B15.196 C305.006 +G01 X+26.536 Y-29.861 Z-2.083 B15.201 C303.531 +G01 X+26.278 Y-30.023 Z-2.082 B15.196 C302.056 +G01 X+26.019 Y-30.185 Z-2.083 B15.201 C300.58 +G01 X+25.753 Y-30.333 Z-2.082 B15.196 C299.105 +G01 X+25.487 Y-30.481 Z-2.083 B15.201 C297.629 +G01 X+25.214 Y-30.616 Z-2.082 C296.154 +G01 X+24.94 Y-30.75 Z-2.083 C294.679 +G01 X+24.681 Y-30.861 Z-2.082 B15.196 C293.314 +G01 X+24.422 Y-30.972 Z-2.083 B15.199 C291.949 +G01 X+24.38 Y-30.99 B15.201 C291.728 +G01 X+24.121 Y-31.086 Z-2.082 B15.196 C290.386 +G01 X+23.861 Y-31.181 Z-2.083 B15.199 C289.045 +G01 X+23.809 Y-31.201 B15.201 C288.777 +G01 X+23.549 Y-31.282 Z-2.082 B15.196 C287.459 +G01 X+23.289 Y-31.362 Z-2.083 B15.199 C286.141 +G01 X+23.227 Y-31.382 B15.201 C285.826 +G01 X+22.968 Y-31.448 Z-2.082 B15.196 C284.532 +G01 X+22.71 Y-31.514 B15.198 C283.238 +G01 X+22.637 Y-31.533 Z-2.083 B15.201 C282.875 +G01 X+22.38 Y-31.585 Z-2.082 B15.196 C281.605 +G01 X+22.123 Y-31.637 B15.198 C280.334 +G01 X+22.04 Y-31.653 Z-2.083 B15.201 C279.924 +G01 X+21.785 Y-31.691 Z-2.082 B15.196 C278.678 +G01 X+21.531 Y-31.729 B15.198 C277.431 +G01 X+21.437 Y-31.743 Z-2.083 B15.201 C276.974 +G01 X+21.186 Y-31.767 Z-2.082 B15.196 C275.751 +G01 X+20.934 Y-31.791 B15.198 C274.527 +G01 X+20.831 Y-31.801 Z-2.083 B15.201 C274.023 +G01 X+20.583 Y-31.812 Z-2.082 B15.196 C272.823 +G01 X+20.336 Y-31.823 B15.197 C271.624 +G01 X+20.222 Y-31.828 Z-2.083 B15.201 C271.072 +G01 X+19.979 Y-31.827 Z-2.082 B15.196 C269.896 +G01 X+19.737 Y-31.825 B15.197 C268.72 +G01 X+19.613 Y-31.824 Z-2.083 B15.201 C268.121 +G01 X+19.375 Y-31.81 Z-2.082 B15.196 C266.969 +G01 X+19.138 Y-31.796 B15.197 C265.817 +G01 X+19.005 Y-31.789 Z-2.083 B15.201 C265.17 +G01 X+18.773 Y-31.763 Z-2.082 B15.196 C264.042 +G01 X+18.542 Y-31.737 B15.197 C262.913 +G01 X+18.399 Y-31.722 Z-2.083 B15.201 C262.219 +G01 X+18.174 Y-31.685 Z-2.082 B15.196 C261.115 +G01 X+17.949 Y-31.648 B15.197 C260.01 +G01 X+17.798 Y-31.624 Z-2.083 B15.201 C259.269 +G01 X+17.362 Y-31.529 Z-2.082 B15.197 C257.106 +G01 X+17.202 Y-31.495 Z-2.083 B15.201 C256.318 +G01 X+16.781 Y-31.381 Z-2.082 B15.196 C254.203 +G01 X+16.614 Y-31.336 Z-2.083 B15.201 C253.367 +G01 X+16.209 Y-31.203 Z-2.082 B15.196 C251.3 +G01 X+16.035 Y-31.146 Z-2.083 B15.201 C250.416 +G01 X+15.646 Y-30.997 Z-2.082 B15.196 C248.396 +G01 X+15.467 Y-30.927 Z-2.083 B15.201 C247.465 +G01 X+15.188 Y-30.804 Z-2.082 B15.196 C245.99 +G01 X+14.91 Y-30.68 Z-2.083 B15.2 C244.515 +G01 X+14.556 Y-30.499 Z-2.082 B15.196 C242.589 +G01 X+14.324 Y-30.381 Z-2.083 B15.201 C241.352 +G01 X+14.078 Y-30.239 Z-2.082 B15.197 C239.965 +G01 X+13.833 Y-30.096 Z-2.083 B15.201 C238.578 +G01 X+13.58 Y-29.933 Z-2.082 B15.196 C237.12 +G01 X+13.327 Y-29.769 Z-2.083 B15.2 C235.663 +G01 X+13.08 Y-29.591 Z-2.082 B15.195 C234.187 +G01 X+12.833 Y-29.413 Z-2.083 B15.2 C232.711 +G01 X+12.596 Y-29.222 Z-2.082 B15.195 C231.236 +G01 X+12.358 Y-29.031 Z-2.083 B15.2 C229.76 +G01 X+12.131 Y-28.829 Z-2.082 B15.195 C228.288 +G01 X+11.903 Y-28.626 Z-2.083 B15.2 C226.816 +G01 X+11.655 Y-28.38 Z-2.082 B15.196 C225.115 +G01 X+11.654 Y-28.247 Z-2.057 B15.073 C224.648 +G01 X+11.539 Y-28.133 B15.075 C223.87 +G01 X+11.335 Y-27.91 Z-2.056 B15.071 C222.393 +G01 X+11.132 Y-27.687 Z-2.057 B15.076 C220.916 +G01 X+10.95 Y-27.466 Z-2.056 B15.071 C219.521 +G01 X+10.768 Y-27.245 Z-2.057 B15.074 C218.126 +G01 X+10.748 Y-27.22 B15.076 C217.961 +G01 X+10.58 Y-26.994 Z-2.056 B15.071 C216.592 +G01 X+10.413 Y-26.768 Z-2.057 B15.074 C215.223 +G01 X+10.371 Y-26.709 B15.075 C214.855 +G01 X+10.207 Y-26.461 Z-2.056 B15.071 C213.403 +G01 X+10.044 Y-26.213 Z-2.057 B15.075 C211.952 +G01 X+9.893 Y-25.957 Z-2.056 B15.071 C210.5 +G01 X+9.742 Y-25.701 Z-2.057 B15.076 C209.049 +G01 X+9.604 Y-25.437 Z-2.056 B15.071 C207.598 +G01 X+9.466 Y-25.174 Z-2.057 B15.076 C206.146 +G01 X+9.34 Y-24.9 Z-2.056 B15.071 C204.674 +G01 X+9.214 Y-24.626 Z-2.057 B15.076 C203.202 +G01 X+9.102 Y-24.345 Z-2.056 B15.071 C201.727 +G01 X+8.99 Y-24.065 Z-2.057 B15.076 C200.252 +G01 X+8.893 Y-23.779 Z-2.056 C198.777 +G01 X+8.796 Y-23.492 Z-2.057 C197.301 +G01 X+8.718 Y-23.22 Z-2.056 B15.071 C195.917 +G01 X+8.641 Y-22.947 Z-2.057 B15.075 C194.532 +G01 X+8.631 Y-22.911 B15.076 C194.351 +G01 X+8.568 Y-22.639 Z-2.056 B15.071 C192.99 +G01 X+8.506 Y-22.368 Z-2.057 B15.075 C191.628 +G01 X+8.496 Y-22.322 B15.076 C191.4 +G01 X+8.448 Y-22.052 Z-2.056 B15.071 C190.063 +G01 X+8.401 Y-21.782 Z-2.057 B15.074 C188.724 +G01 X+8.392 Y-21.727 B15.076 C188.45 +G01 X+8.359 Y-21.46 Z-2.056 B15.071 C187.136 +G01 X+8.326 Y-21.193 Z-2.057 B15.074 C185.821 +G01 X+8.318 Y-21.127 B15.076 C185.5 +G01 X+8.299 Y-20.863 Z-2.056 B15.071 C184.209 +G01 X+8.281 Y-20.6 Z-2.057 B15.074 C182.918 +G01 X+8.276 Y-20.524 B15.076 C182.549 +G01 X+8.27 Y-20.265 Z-2.056 B15.071 C181.282 +G01 X+8.266 Y-20.005 Z-2.057 B15.074 C180.014 +G01 X+8.264 Y-19.92 B15.076 C179.599 +G01 X+8.272 Y-19.665 Z-2.056 B15.071 C178.355 +G01 X+8.281 Y-19.411 Z-2.057 B15.073 C177.111 +G01 X+8.284 Y-19.316 B15.076 C176.648 +G01 X+8.305 Y-19.067 Z-2.056 B15.072 C175.428 +G01 X+8.326 Y-18.818 Z-2.057 B15.073 C174.207 +G01 X+8.335 Y-18.713 B15.076 C173.698 +G01 X+8.368 Y-18.471 Z-2.056 B15.072 C172.501 +G01 X+8.401 Y-18.228 Z-2.057 B15.073 C171.303 +G01 X+8.416 Y-18.115 B15.076 C170.747 +G01 X+8.461 Y-17.879 Z-2.056 B15.071 C169.574 +G01 X+8.506 Y-17.643 Z-2.057 B15.073 C168.4 +G01 X+8.529 Y-17.521 B15.076 C167.797 +G01 X+8.584 Y-17.292 Z-2.056 B15.072 C166.647 +G01 X+8.64 Y-17.064 Z-2.057 B15.073 C165.497 +G01 X+8.672 Y-16.933 B15.076 C164.846 +G01 X+8.737 Y-16.713 Z-2.056 B15.071 C163.72 +G01 X+8.803 Y-16.492 Z-2.057 B15.072 C162.593 +G01 X+8.844 Y-16.354 B15.076 C161.896 +G01 X+8.92 Y-16.142 Z-2.056 B15.071 C160.793 +G01 X+8.995 Y-15.93 Z-2.057 B15.072 C159.69 +G01 X+9.047 Y-15.785 B15.076 C158.946 +G01 X+9.216 Y-15.378 B15.072 C156.786 +G01 X+9.278 Y-15.227 B15.076 C155.995 +G01 X+9.464 Y-14.837 B15.072 C153.883 +G01 X+9.538 Y-14.681 B15.076 C153.045 +G01 X+9.739 Y-14.31 Z-2.056 B15.072 C150.979 +G01 X+9.826 Y-14.15 Z-2.057 B15.076 C150.094 +G01 X+10.04 Y-13.798 Z-2.056 B15.072 C148.076 +G01 X+10.141 Y-13.634 Z-2.057 B15.075 C147.144 +G01 X+10.367 Y-13.301 Z-2.056 B15.072 C145.173 +G01 X+10.482 Y-13.134 Z-2.057 B15.075 C144.193 +G01 X+10.664 Y-12.894 Z-2.056 C142.718 +G01 X+10.848 Y-12.654 Z-2.057 C141.243 +G01 X+11.043 Y-12.422 Z-2.056 B15.071 C139.765 +G01 X+11.239 Y-12.191 Z-2.057 B15.075 C138.288 +G01 X+11.445 Y-11.971 Z-2.056 B15.071 C136.817 +G01 X+11.651 Y-11.751 Z-2.057 B15.075 C135.347 +G01 X+11.869 Y-11.542 Z-2.056 B15.071 C133.87 +G01 X+12.087 Y-11.333 Z-2.057 B15.076 C132.393 +G01 X+12.315 Y-11.134 Z-2.056 B15.071 C130.916 +G01 X+12.544 Y-10.937 Z-2.057 B15.076 C129.439 +G01 X+12.767 Y-10.762 Z-2.056 B15.071 C128.057 +G01 X+12.991 Y-10.588 Z-2.057 B15.074 C126.675 +G01 X+13.02 Y-10.565 B15.076 C126.484 +G01 X+13.248 Y-10.405 Z-2.056 B15.071 C125.128 +G01 X+13.477 Y-10.245 Z-2.057 B15.074 C123.771 +G01 X+13.537 Y-10.204 B15.075 C123.403 +G01 X+13.789 Y-10.047 Z-2.056 B15.071 C121.952 +G01 X+14.041 Y-9.889 Z-2.057 B15.076 C120.5 +G01 X+14.298 Y-9.746 Z-2.056 B15.071 C119.064 +G01 X+14.555 Y-9.603 Z-2.057 B15.076 C117.628 +G01 X+14.826 Y-9.47 Z-2.056 B15.071 C116.153 +G01 X+15.098 Y-9.337 Z-2.057 B15.076 C114.677 +G01 X+15.375 Y-9.217 Z-2.056 B15.072 C113.202 +G01 X+15.653 Y-9.098 Z-2.057 B15.076 C111.727 +G01 X+15.937 Y-8.994 Z-2.056 C110.252 +G01 X+16.22 Y-8.889 Z-2.057 C108.777 +G01 X+16.509 Y-8.799 Z-2.056 C107.301 +G01 X+16.797 Y-8.709 Z-2.057 C105.826 +G01 X+17.069 Y-8.639 Z-2.056 B15.071 C104.453 +G01 X+17.342 Y-8.57 Z-2.057 B15.075 C103.08 +G01 X+17.383 Y-8.559 B15.076 C102.876 +G01 X+17.653 Y-8.504 Z-2.056 B15.071 C101.526 +G01 X+17.924 Y-8.45 Z-2.057 B15.075 C100.176 +G01 X+17.975 Y-8.44 B15.076 C99.925 +G01 X+18.243 Y-8.4 Z-2.056 B15.071 C98.599 +G01 X+18.512 Y-8.36 Z-2.057 B15.074 C97.273 +G01 X+18.573 Y-8.351 B15.076 C96.975 +G01 X+18.838 Y-8.325 Z-2.056 B15.071 C95.672 +G01 X+19.103 Y-8.3 Z-2.057 B15.074 C94.369 +G01 X+19.174 Y-8.293 B15.076 C94.024 +G01 X+19.436 Y-8.281 Z-2.056 B15.072 C92.745 +G01 X+19.697 Y-8.269 Z-2.057 B15.074 C91.466 +G01 X+19.778 Y-8.266 B15.076 C91.074 +G01 X+20.035 Y-8.267 Z-2.056 B15.072 C89.818 +G01 X+20.292 Y-8.269 Z-2.057 B15.074 C88.562 +G01 X+20.382 Y-8.27 B15.076 C88.123 +G01 X+20.634 Y-8.285 Z-2.056 B15.072 C86.891 +G01 X+20.886 Y-8.299 Z-2.057 B15.073 C85.659 +G01 X+20.986 Y-8.305 B15.076 C85.173 +G01 X+21.232 Y-8.332 Z-2.056 B15.072 C83.964 +G01 X+21.477 Y-8.359 Z-2.057 B15.073 C82.755 +G01 X+21.587 Y-8.372 B15.076 C82.223 +G01 X+21.826 Y-8.41 Z-2.056 B15.072 C81.037 +G01 X+22.065 Y-8.449 Z-2.057 B15.073 C79.852 +G01 X+22.183 Y-8.469 B15.076 C79.272 +G01 X+22.415 Y-8.519 Z-2.056 B15.072 C78.11 +G01 X+22.647 Y-8.569 Z-2.057 B15.073 C76.948 +G01 X+22.774 Y-8.596 B15.076 C76.322 +G01 X+22.998 Y-8.657 Z-2.056 B15.071 C75.183 +G01 X+23.223 Y-8.718 Z-2.057 B15.073 C74.045 +G01 X+23.357 Y-8.754 B15.076 C73.371 +G01 X+23.574 Y-8.825 Z-2.056 B15.071 C72.256 +G01 X+23.79 Y-8.896 Z-2.057 B15.072 C71.141 +G01 X+23.932 Y-8.942 B15.076 C70.421 +G01 X+24.348 Y-9.102 B15.072 C68.238 +G01 X+24.496 Y-9.159 B15.076 C67.47 +G01 X+24.894 Y-9.336 B15.072 C65.335 +G01 X+25.048 Y-9.405 B15.076 C64.52 +G01 X+25.428 Y-9.598 Z-2.056 B15.072 C62.431 +G01 X+25.587 Y-9.679 Z-2.057 B15.076 C61.569 +G01 X+25.948 Y-9.886 Z-2.056 B15.072 C59.528 +G01 X+26.11 Y-9.98 Z-2.057 B15.076 C58.619 +G01 X+26.452 Y-10.201 Z-2.056 B15.072 C56.625 +G01 X+26.618 Y-10.308 Z-2.057 B15.075 C55.668 +G01 X+26.863 Y-10.484 Z-2.056 C54.193 +G01 X+27.108 Y-10.661 Z-2.057 C52.718 +G01 X+27.344 Y-10.85 Z-2.056 B15.071 C51.243 +G01 X+27.58 Y-11.04 Z-2.057 B15.075 C49.767 +G01 X+27.805 Y-11.241 Z-2.056 C48.296 +G01 X+28.031 Y-11.442 Z-2.057 C46.824 +G01 X+28.246 Y-11.654 Z-2.056 B15.071 C45.347 +G01 X+28.461 Y-11.867 Z-2.057 B15.076 C43.87 +G01 X+28.665 Y-12.09 Z-2.056 B15.071 C42.393 +G01 X+28.868 Y-12.313 Z-2.057 B15.076 C40.916 +G01 X+29.05 Y-12.534 Z-2.056 B15.071 C39.521 +G01 X+29.232 Y-12.755 Z-2.057 B15.074 C38.126 +G01 X+29.252 Y-12.78 B15.076 C37.961 +G01 X+29.42 Y-13.005 Z-2.056 B15.071 C36.592 +G01 X+29.587 Y-13.232 Z-2.057 B15.074 C35.223 +G01 X+29.629 Y-13.291 B15.075 C34.855 +G01 X+29.793 Y-13.539 Z-2.056 B15.071 C33.403 +G01 X+29.956 Y-13.787 Z-2.057 B15.075 C31.952 +G01 X+30.107 Y-14.043 Z-2.056 B15.071 C30.5 +G01 X+30.258 Y-14.299 Z-2.057 B15.076 C29.049 +G01 X+30.396 Y-14.562 Z-2.056 B15.071 C27.598 +G01 X+30.534 Y-14.826 Z-2.057 B15.076 C26.146 +G01 X+30.66 Y-15.1 Z-2.056 B15.071 C24.674 +G01 X+30.786 Y-15.374 Z-2.057 B15.076 C23.202 +G01 X+30.898 Y-15.654 Z-2.056 B15.071 C21.727 +G01 X+31.01 Y-15.935 Z-2.057 B15.076 C20.252 +G01 X+31.107 Y-16.221 Z-2.056 C18.777 +G01 X+31.204 Y-16.507 Z-2.057 C17.301 +G01 X+31.282 Y-16.78 Z-2.056 B15.071 C15.917 +G01 X+31.359 Y-17.053 Z-2.057 B15.075 C14.532 +G01 X+31.369 Y-17.089 B15.076 C14.351 +G01 X+31.432 Y-17.36 Z-2.056 B15.071 C12.99 +G01 X+31.494 Y-17.632 Z-2.057 B15.075 C11.628 +G01 X+31.504 Y-17.678 B15.076 C11.4 +G01 X+31.552 Y-17.948 Z-2.056 B15.071 C10.063 +G01 X+31.599 Y-18.217 Z-2.057 B15.074 C8.725 +G01 X+31.608 Y-18.273 B15.076 C8.45 +G01 X+31.641 Y-18.54 Z-2.056 B15.071 C7.136 +G01 X+31.674 Y-18.807 Z-2.057 B15.074 C5.821 +G01 X+31.682 Y-18.873 B15.076 C5.5 +G01 X+31.701 Y-19.137 Z-2.056 B15.071 C4.209 +G01 X+31.719 Y-19.4 Z-2.057 B15.074 C2.918 +G01 X+31.724 Y-19.476 B15.076 C2.549 +G01 X+31.73 Y-19.735 Z-2.056 B15.071 C1.282 +G01 X+31.734 Y-19.994 Z-2.057 B15.074 C0.014 +G01 X+31.736 Y-20.08 B15.076 C359.599 +G01 X+31.728 Y-20.335 Z-2.056 B15.071 C358.355 +G01 X+31.719 Y-20.589 Z-2.057 B15.073 C357.111 +G01 X+31.716 Y-20.684 B15.076 C356.648 +G01 X+31.695 Y-20.933 Z-2.056 B15.072 C355.428 +G01 X+31.674 Y-21.182 Z-2.057 B15.073 C354.207 +G01 X+31.665 Y-21.287 B15.076 C353.698 +G01 X+31.633 Y-21.529 Z-2.056 B15.072 C352.501 +G01 X+31.599 Y-21.772 Z-2.057 B15.073 C351.303 +G01 X+31.584 Y-21.885 B15.076 C350.747 +G01 X+31.539 Y-22.121 Z-2.056 B15.071 C349.574 +G01 X+31.494 Y-22.357 Z-2.057 B15.073 C348.4 +G01 X+31.471 Y-22.479 B15.076 C347.797 +G01 X+31.416 Y-22.708 Z-2.056 B15.072 C346.647 +G01 X+31.36 Y-22.936 Z-2.057 B15.073 C345.497 +G01 X+31.328 Y-23.066 B15.076 C344.846 +G01 X+31.263 Y-23.287 Z-2.056 B15.071 C343.72 +G01 X+31.197 Y-23.508 Z-2.057 B15.072 C342.593 +G01 X+31.156 Y-23.646 B15.076 C341.896 +G01 X+31.08 Y-23.858 Z-2.056 B15.071 C340.793 +G01 X+31.005 Y-24.07 Z-2.057 B15.072 C339.69 +G01 X+30.953 Y-24.215 B15.076 C338.946 +G01 X+30.784 Y-24.622 B15.072 C336.786 +G01 X+30.722 Y-24.773 B15.076 C335.995 +G01 X+30.536 Y-25.163 B15.072 C333.883 +G01 X+30.462 Y-25.319 B15.076 C333.045 +G01 X+30.261 Y-25.69 Z-2.056 B15.072 C330.979 +G01 X+30.174 Y-25.85 Z-2.057 B15.076 C330.094 +G01 X+29.96 Y-26.202 Z-2.056 B15.072 C328.076 +G01 X+29.859 Y-26.366 Z-2.057 B15.075 C327.144 +G01 X+29.633 Y-26.698 Z-2.056 B15.072 C325.173 +G01 X+29.518 Y-26.865 Z-2.057 B15.075 C324.193 +G01 X+29.336 Y-27.106 Z-2.056 C322.718 +G01 X+29.152 Y-27.346 Z-2.057 C321.243 +G01 X+28.957 Y-27.578 Z-2.056 B15.071 C319.765 +G01 X+28.761 Y-27.809 Z-2.057 B15.075 C318.288 +G01 X+28.555 Y-28.029 Z-2.056 B15.071 C316.817 +G01 X+28.349 Y-28.248 Z-2.057 B15.075 C315.347 +G01 X+28.131 Y-28.458 Z-2.056 B15.071 C313.87 +G01 X+27.913 Y-28.667 Z-2.057 B15.076 C312.393 +G01 X+27.685 Y-28.865 Z-2.056 B15.071 C310.916 +G01 X+27.456 Y-29.063 Z-2.057 B15.076 C309.439 +G01 X+27.233 Y-29.238 Z-2.056 B15.071 C308.057 +G01 X+27.009 Y-29.412 Z-2.057 B15.074 C306.675 +G01 X+26.98 Y-29.435 B15.076 C306.484 +G01 X+26.752 Y-29.595 Z-2.056 B15.071 C305.128 +G01 X+26.523 Y-29.755 Z-2.057 B15.074 C303.771 +G01 X+26.463 Y-29.796 B15.075 C303.403 +G01 X+26.211 Y-29.953 Z-2.056 B15.071 C301.952 +G01 X+25.959 Y-30.11 Z-2.057 B15.076 C300.5 +G01 X+25.702 Y-30.254 Z-2.056 B15.071 C299.064 +G01 X+25.445 Y-30.397 Z-2.057 B15.076 C297.628 +G01 X+25.174 Y-30.53 Z-2.056 B15.071 C296.153 +G01 X+24.902 Y-30.663 Z-2.057 B15.076 C294.677 +G01 X+24.625 Y-30.783 Z-2.056 B15.072 C293.202 +G01 X+24.347 Y-30.901 Z-2.057 B15.076 C291.727 +G01 X+24.063 Y-31.006 Z-2.056 C290.252 +G01 X+23.78 Y-31.111 Z-2.057 C288.777 +G01 X+23.491 Y-31.201 Z-2.056 C287.301 +G01 X+23.203 Y-31.291 Z-2.057 C285.826 +G01 X+22.931 Y-31.361 Z-2.056 B15.071 C284.453 +G01 X+22.658 Y-31.43 Z-2.057 B15.075 C283.08 +G01 X+22.617 Y-31.44 B15.076 C282.876 +G01 X+22.347 Y-31.495 Z-2.056 B15.071 C281.526 +G01 X+22.076 Y-31.55 Z-2.057 B15.075 C280.176 +G01 X+22.025 Y-31.56 B15.076 C279.925 +G01 X+21.757 Y-31.6 Z-2.056 B15.071 C278.599 +G01 X+21.488 Y-31.64 Z-2.057 B15.074 C277.273 +G01 X+21.427 Y-31.649 B15.076 C276.975 +G01 X+21.162 Y-31.675 Z-2.056 B15.071 C275.672 +G01 X+20.897 Y-31.7 Z-2.057 B15.074 C274.369 +G01 X+20.826 Y-31.707 B15.076 C274.024 +G01 X+20.564 Y-31.719 Z-2.056 B15.072 C272.745 +G01 X+20.303 Y-31.73 Z-2.057 B15.074 C271.466 +G01 X+20.222 Y-31.734 B15.076 C271.074 +G01 X+19.965 Y-31.732 Z-2.056 B15.072 C269.818 +G01 X+19.708 Y-31.73 Z-2.057 B15.074 C268.562 +G01 X+19.618 B15.076 C268.123 +G01 X+19.366 Y-31.715 Z-2.056 B15.072 C266.891 +G01 X+19.114 Y-31.7 Z-2.057 B15.073 C265.659 +G01 X+19.014 Y-31.695 B15.076 C265.173 +G01 X+18.768 Y-31.668 Z-2.056 B15.072 C263.964 +G01 X+18.523 Y-31.64 Z-2.057 B15.073 C262.755 +G01 X+18.413 Y-31.628 B15.076 C262.222 +G01 X+18.174 Y-31.59 Z-2.056 B15.072 C261.037 +G01 X+17.935 Y-31.551 Z-2.057 B15.073 C259.852 +G01 X+17.817 Y-31.531 B15.076 C259.272 +G01 X+17.585 Y-31.481 Z-2.056 B15.072 C258.11 +G01 X+17.353 Y-31.431 Z-2.057 B15.073 C256.948 +G01 X+17.226 Y-31.404 B15.076 C256.322 +G01 X+17.002 Y-31.343 Z-2.056 B15.071 C255.183 +G01 X+16.777 Y-31.282 Z-2.057 B15.073 C254.045 +G01 X+16.643 Y-31.246 B15.076 C253.371 +G01 X+16.426 Y-31.175 Z-2.056 B15.071 C252.256 +G01 X+16.21 Y-31.104 Z-2.057 B15.072 C251.141 +G01 X+16.068 Y-31.058 B15.076 C250.421 +G01 X+15.652 Y-30.898 B15.072 C248.238 +G01 X+15.504 Y-30.841 B15.076 C247.47 +G01 X+15.228 Y-30.718 Z-2.056 B15.071 C245.995 +G01 X+14.952 Y-30.595 Z-2.057 B15.076 C244.52 +G01 X+14.572 Y-30.402 Z-2.056 B15.072 C242.431 +G01 X+14.369 Y-30.298 Z-2.058 B15.077 C241.352 +G01 X+14.126 Y-30.157 Z-2.057 B15.072 C239.967 +G01 X+13.883 Y-30.016 B15.076 C238.582 +G01 X+13.632 Y-29.854 Z-2.056 B15.071 C237.126 +G01 X+13.382 Y-29.692 Z-2.057 B15.076 C235.669 +G01 X+13.137 Y-29.516 Z-2.056 B15.071 C234.194 +G01 X+12.892 Y-29.338 Z-2.057 B15.076 C232.718 +G01 X+12.656 Y-29.15 Z-2.056 B15.071 C231.243 +G01 X+12.42 Y-28.96 Z-2.057 B15.075 C229.768 +G01 X+12.195 Y-28.759 Z-2.056 B15.07 C228.296 +G01 X+11.969 Y-28.558 Z-2.057 B15.075 C226.824 +G01 X+11.721 Y-28.313 Z-2.056 B15.071 C225.105 +G01 Y-28.18 Z-2.031 B14.948 C224.638 +G01 X+11.608 Y-28.069 Z-2.032 B14.951 C223.878 +G01 X+11.406 Y-27.848 Z-2.031 B14.946 C222.402 +G01 X+11.204 Y-27.626 Z-2.032 B14.951 C220.925 +G01 X+11.014 Y-27.395 Z-2.031 C219.448 +G01 X+10.823 Y-27.163 Z-2.032 C217.971 +G01 X+10.604 Y-26.867 Z-2.031 B14.947 C216.142 +G01 X+10.467 Y-26.682 Z-2.032 B14.951 C215.017 +G01 X+10.268 Y-26.382 Z-2.031 B14.947 C213.239 +G01 X+10.135 Y-26.182 Z-2.032 B14.951 C212.063 +G01 X+9.983 Y-25.924 Z-2.031 B14.946 C210.586 +G01 X+9.83 Y-25.666 Z-2.032 B14.951 C209.11 +G01 X+9.707 Y-25.431 Z-2.031 B14.946 C207.812 +G01 X+9.584 Y-25.196 Z-2.032 B14.949 C206.513 +G01 X+9.552 Y-25.135 B14.951 C206.156 +G01 X+9.443 Y-24.898 Z-2.031 B14.946 C204.883 +G01 X+9.334 Y-24.662 B14.948 C203.61 +G01 X+9.292 Y-24.568 Z-2.032 B14.951 C203.083 +G01 X+9.183 Y-24.294 Z-2.031 B14.946 C201.632 +G01 X+9.075 Y-24.019 Z-2.032 B14.951 C200.18 +G01 X+8.98 Y-23.743 Z-2.031 B14.947 C198.741 +G01 X+8.886 Y-23.466 Z-2.032 B14.952 C197.301 +G01 X+8.804 Y-23.178 Z-2.031 B14.947 C195.826 +G01 X+8.723 Y-22.889 Z-2.032 B14.952 C194.351 +G01 X+8.655 Y-22.597 Z-2.031 B14.947 C192.876 +G01 X+8.589 Y-22.305 Z-2.032 B14.952 C191.401 +G01 X+8.537 Y-22.01 Z-2.031 C189.926 +G01 X+8.485 Y-21.714 Z-2.032 C188.451 +G01 X+8.448 Y-21.417 Z-2.031 C186.976 +G01 X+8.412 Y-21.119 Z-2.032 C185.501 +G01 X+8.392 Y-20.842 Z-2.031 B14.947 C184.13 +G01 X+8.373 Y-20.564 Z-2.032 B14.95 C182.76 +G01 X+8.37 Y-20.521 B14.952 C182.551 +G01 X+8.365 Y-20.248 Z-2.031 B14.947 C181.203 +G01 X+8.36 Y-19.975 Z-2.032 B14.95 C179.856 +G01 X+8.359 Y-19.922 B14.952 C179.601 +G01 X+8.367 Y-19.653 Z-2.031 B14.947 C178.277 +G01 X+8.376 Y-19.385 Z-2.032 B14.95 C176.953 +G01 X+8.378 Y-19.323 B14.952 C176.651 +G01 X+8.4 Y-19.06 Z-2.031 B14.947 C175.35 +G01 X+8.422 Y-18.797 Z-2.032 B14.95 C174.049 +G01 X+8.428 Y-18.725 B14.952 C173.701 +G01 X+8.463 Y-18.469 Z-2.031 B14.947 C172.423 +G01 X+8.498 Y-18.212 B14.949 C171.145 +G01 X+8.509 Y-18.131 Z-2.032 B14.952 C170.751 +G01 X+8.556 Y-17.881 Z-2.031 B14.947 C169.496 +G01 X+8.604 Y-17.632 B14.949 C168.242 +G01 X+8.621 Y-17.542 Z-2.032 B14.952 C167.801 +G01 X+8.679 Y-17.3 Z-2.031 B14.947 C166.57 +G01 X+8.738 Y-17.058 B14.949 C165.339 +G01 X+8.762 Y-16.96 Z-2.032 B14.951 C164.85 +G01 X+8.832 Y-16.725 Z-2.031 B14.947 C163.643 +G01 X+8.902 Y-16.491 B14.949 C162.435 +G01 X+8.934 Y-16.385 Z-2.032 B14.951 C161.9 +G01 X+9.014 Y-16.159 Z-2.031 B14.947 C160.716 +G01 X+9.094 Y-15.933 B14.949 C159.531 +G01 X+9.134 Y-15.82 Z-2.032 B14.951 C158.95 +G01 X+9.224 Y-15.603 Z-2.031 B14.947 C157.789 +G01 X+9.314 Y-15.386 B14.948 C156.628 +G01 X+9.364 Y-15.266 Z-2.032 B14.951 C156. +G01 X+9.463 Y-15.059 Z-2.031 B14.947 C154.862 +G01 X+9.562 Y-14.851 B14.948 C153.724 +G01 X+9.622 Y-14.725 Z-2.032 B14.951 C153.05 +G01 X+9.729 Y-14.527 Z-2.031 B14.947 C151.936 +G01 X+9.836 Y-14.329 B14.948 C150.821 +G01 X+9.907 Y-14.198 Z-2.032 B14.951 C150.1 +G01 X+10.137 Y-13.821 Z-2.031 B14.948 C147.918 +G01 X+10.219 Y-13.686 Z-2.032 B14.951 C147.15 +G01 X+10.462 Y-13.33 Z-2.031 B14.948 C145.014 +G01 X+10.557 Y-13.191 Z-2.032 B14.951 C144.2 +G01 X+10.739 Y-12.952 Z-2.031 C142.725 +G01 X+10.92 Y-12.714 Z-2.032 C141.25 +G01 X+11.114 Y-12.485 Z-2.031 B14.946 C139.775 +G01 X+11.307 Y-12.256 Z-2.032 B14.951 C138.3 +G01 X+11.512 Y-12.037 Z-2.031 B14.946 C136.828 +G01 X+11.718 Y-11.819 Z-2.032 B14.951 C135.355 +G01 X+11.933 Y-11.611 Z-2.031 B14.946 C133.879 +G01 X+12.15 Y-11.403 Z-2.032 B14.951 C132.402 +G01 X+12.376 Y-11.207 Z-2.031 B14.946 C130.925 +G01 X+12.603 Y-11.011 Z-2.032 B14.951 C129.448 +G01 X+12.839 Y-10.826 Z-2.031 C127.971 +G01 X+13.075 Y-10.642 Z-2.032 C126.494 +G01 X+13.373 Y-10.433 Z-2.031 B14.947 C124.691 +G01 X+13.566 Y-10.298 Z-2.032 B14.951 C123.54 +G01 X+13.82 Y-10.138 Z-2.031 B14.946 C122.063 +G01 X+14.074 Y-9.979 Z-2.032 B14.951 C120.586 +G01 X+14.308 Y-9.849 Z-2.031 B14.946 C119.276 +G01 X+14.542 Y-9.719 Z-2.032 B14.949 C117.965 +G01 X+14.598 Y-9.688 B14.951 C117.633 +G01 X+14.833 Y-9.572 Z-2.031 B14.946 C116.347 +G01 X+15.069 Y-9.456 B14.949 C115.062 +G01 X+15.136 Y-9.423 Z-2.032 B14.951 C114.679 +G01 X+15.373 Y-9.321 Z-2.031 B14.946 C113.419 +G01 X+15.61 Y-9.22 B14.948 C112.159 +G01 X+15.705 Y-9.18 Z-2.032 B14.951 C111.632 +G01 X+15.982 Y-9.078 Z-2.031 B14.947 C110.18 +G01 X+16.258 Y-8.976 Z-2.032 B14.951 C108.729 +G01 X+16.54 Y-8.888 Z-2.031 B14.947 C107.277 +G01 X+16.821 Y-8.801 Z-2.032 B14.952 C105.826 +G01 X+17.112 Y-8.726 Z-2.031 B14.947 C104.351 +G01 X+17.402 Y-8.652 Z-2.032 B14.952 C102.876 +G01 X+17.696 Y-8.592 Z-2.031 B14.947 C101.401 +G01 X+17.99 Y-8.533 Z-2.032 B14.952 C99.926 +G01 X+18.286 Y-8.489 Z-2.031 C98.451 +G01 X+18.583 Y-8.445 Z-2.032 C96.976 +G01 X+18.881 Y-8.416 Z-2.031 C95.501 +G01 X+19.179 Y-8.387 Z-2.032 C94.026 +G01 X+19.455 Y-8.375 Z-2.031 B14.947 C92.667 +G01 X+19.73 Y-8.362 Z-2.032 B14.95 C91.308 +G01 X+19.778 Y-8.36 B14.952 C91.076 +G01 X+20.049 Y-8.362 Z-2.031 B14.947 C89.74 +G01 X+20.32 Y-8.364 Z-2.032 B14.95 C88.404 +G01 X+20.378 B14.952 C88.126 +G01 X+20.644 Y-8.38 Z-2.031 B14.947 C86.813 +G01 X+20.909 Y-8.395 Z-2.032 B14.95 C85.501 +G01 X+20.976 Y-8.399 B14.952 C85.176 +G01 X+21.236 Y-8.428 Z-2.031 B14.947 C83.886 +G01 X+21.496 Y-8.456 B14.949 C82.597 +G01 X+21.572 Y-8.465 Z-2.032 B14.952 C82.226 +G01 X+21.826 Y-8.506 Z-2.031 B14.947 C80.96 +G01 X+22.079 Y-8.547 B14.949 C79.694 +G01 X+22.164 Y-8.561 Z-2.032 B14.952 C79.276 +G01 X+22.41 Y-8.614 Z-2.031 B14.947 C78.033 +G01 X+22.656 Y-8.667 B14.949 C76.79 +G01 X+22.75 Y-8.688 Z-2.032 B14.952 C76.325 +G01 X+22.988 Y-8.752 Z-2.031 B14.947 C75.106 +G01 X+23.227 Y-8.817 B14.949 C73.887 +G01 X+23.329 Y-8.844 Z-2.032 B14.951 C73.375 +G01 X+23.559 Y-8.919 Z-2.031 B14.947 C72.179 +G01 X+23.789 Y-8.995 B14.949 C70.983 +G01 X+23.899 Y-9.03 Z-2.032 B14.951 C70.425 +G01 X+24.12 Y-9.115 Z-2.031 B14.947 C69.253 +G01 X+24.342 Y-9.201 B14.948 C68.08 +G01 X+24.458 Y-9.246 Z-2.032 B14.951 C67.475 +G01 X+24.671 Y-9.34 Z-2.031 B14.947 C66.326 +G01 X+24.883 Y-9.435 B14.948 C65.176 +G01 X+25.006 Y-9.489 Z-2.032 B14.951 C64.525 +G01 X+25.209 Y-9.592 Z-2.031 B14.947 C63.399 +G01 X+25.412 Y-9.696 B14.948 C62.273 +G01 X+25.54 Y-9.761 Z-2.032 B14.951 C61.575 +G01 X+25.927 Y-9.983 Z-2.031 B14.948 C59.369 +G01 X+26.06 Y-10.06 Z-2.032 B14.951 C58.625 +G01 X+26.426 Y-10.296 Z-2.031 B14.948 C56.466 +G01 X+26.564 Y-10.385 Z-2.032 B14.951 C55.675 +G01 X+26.807 Y-10.56 Z-2.031 C54.2 +G01 X+27.05 Y-10.736 Z-2.032 C52.725 +G01 X+27.284 Y-10.923 Z-2.031 B14.946 C51.25 +G01 X+27.517 Y-11.111 Z-2.032 B14.951 C49.775 +G01 X+27.741 Y-11.31 Z-2.031 B14.946 C48.303 +G01 X+27.965 Y-11.51 Z-2.032 B14.951 C46.832 +G01 X+28.178 Y-11.72 Z-2.031 B14.946 C45.355 +G01 X+28.392 Y-11.931 Z-2.032 B14.951 C43.878 +G01 X+28.594 Y-12.152 Z-2.031 B14.946 C42.402 +G01 X+28.796 Y-12.374 Z-2.032 B14.951 C40.925 +G01 X+28.987 Y-12.605 Z-2.031 C39.448 +G01 X+29.177 Y-12.836 Z-2.032 C37.971 +G01 X+29.396 Y-13.133 Z-2.031 B14.947 C36.142 +G01 X+29.533 Y-13.318 Z-2.032 B14.951 C35.017 +G01 X+29.732 Y-13.618 Z-2.031 B14.947 C33.239 +G01 X+29.865 Y-13.818 Z-2.032 B14.951 C32.063 +G01 X+30.017 Y-14.076 Z-2.031 B14.946 C30.586 +G01 X+30.17 Y-14.334 Z-2.032 B14.951 C29.11 +G01 X+30.293 Y-14.569 Z-2.031 B14.946 C27.812 +G01 X+30.416 Y-14.804 Z-2.032 B14.949 C26.513 +G01 X+30.448 Y-14.865 B14.951 C26.156 +G01 X+30.557 Y-15.101 Z-2.031 B14.946 C24.883 +G01 X+30.666 Y-15.338 B14.948 C23.61 +G01 X+30.708 Y-15.432 Z-2.032 B14.951 C23.083 +G01 X+30.817 Y-15.706 Z-2.031 B14.946 C21.632 +G01 X+30.925 Y-15.98 Z-2.032 B14.951 C20.18 +G01 X+31.02 Y-16.257 Z-2.031 B14.947 C18.741 +G01 X+31.114 Y-16.534 Z-2.032 B14.952 C17.301 +G01 X+31.196 Y-16.822 Z-2.031 B14.947 C15.826 +G01 X+31.278 Y-17.111 Z-2.032 B14.952 C14.351 +G01 X+31.345 Y-17.403 Z-2.031 B14.947 C12.876 +G01 X+31.411 Y-17.695 Z-2.032 B14.952 C11.401 +G01 X+31.463 Y-17.99 Z-2.031 C9.926 +G01 X+31.515 Y-18.286 Z-2.032 C8.451 +G01 X+31.552 Y-18.583 Z-2.031 C6.976 +G01 X+31.588 Y-18.881 Z-2.032 C5.501 +G01 X+31.608 Y-19.158 Z-2.031 B14.947 C4.13 +G01 X+31.627 Y-19.436 Z-2.032 B14.95 C2.76 +G01 X+31.63 Y-19.479 B14.952 C2.551 +G01 X+31.635 Y-19.752 Z-2.031 B14.947 C1.203 +G01 X+31.64 Y-20.025 Z-2.032 B14.95 C359.856 +G01 X+31.641 Y-20.078 B14.952 C359.601 +G01 X+31.633 Y-20.347 Z-2.031 B14.947 C358.277 +G01 X+31.624 Y-20.615 Z-2.032 B14.95 C356.953 +G01 X+31.622 Y-20.677 B14.952 C356.651 +G01 X+31.6 Y-20.94 Z-2.031 B14.947 C355.35 +G01 X+31.578 Y-21.203 Z-2.032 B14.95 C354.049 +G01 X+31.572 Y-21.275 B14.952 C353.701 +G01 X+31.537 Y-21.531 Z-2.031 B14.947 C352.423 +G01 X+31.502 Y-21.788 B14.949 C351.145 +G01 X+31.491 Y-21.869 Z-2.032 B14.952 C350.751 +G01 X+31.444 Y-22.118 Z-2.031 B14.947 C349.496 +G01 X+31.396 Y-22.368 B14.949 C348.242 +G01 X+31.379 Y-22.458 Z-2.032 B14.952 C347.801 +G01 X+31.321 Y-22.7 Z-2.031 B14.947 C346.57 +G01 X+31.262 Y-22.942 B14.949 C345.339 +G01 X+31.238 Y-23.04 Z-2.032 B14.951 C344.85 +G01 X+31.168 Y-23.275 Z-2.031 B14.947 C343.643 +G01 X+31.098 Y-23.509 B14.949 C342.435 +G01 X+31.066 Y-23.615 Z-2.032 B14.951 C341.9 +G01 X+30.986 Y-23.841 Z-2.031 B14.947 C340.716 +G01 X+30.906 Y-24.066 B14.949 C339.531 +G01 X+30.866 Y-24.18 Z-2.032 B14.951 C338.95 +G01 X+30.776 Y-24.397 Z-2.031 B14.947 C337.789 +G01 X+30.686 Y-24.614 B14.948 C336.628 +G01 X+30.636 Y-24.733 Z-2.032 B14.951 C336. +G01 X+30.537 Y-24.941 Z-2.031 B14.947 C334.862 +G01 X+30.438 Y-25.149 B14.948 C333.724 +G01 X+30.378 Y-25.275 Z-2.032 B14.951 C333.05 +G01 X+30.271 Y-25.473 Z-2.031 B14.947 C331.936 +G01 X+30.164 Y-25.671 B14.948 C330.821 +G01 X+30.093 Y-25.802 Z-2.032 B14.951 C330.1 +G01 X+29.863 Y-26.178 Z-2.031 B14.948 C327.918 +G01 X+29.781 Y-26.314 Z-2.032 B14.951 C327.15 +G01 X+29.538 Y-26.67 Z-2.031 B14.948 C325.014 +G01 X+29.443 Y-26.809 Z-2.032 B14.951 C324.2 +G01 X+29.261 Y-27.048 Z-2.031 C322.725 +G01 X+29.08 Y-27.286 Z-2.032 C321.25 +G01 X+28.886 Y-27.515 Z-2.031 B14.946 C319.775 +G01 X+28.693 Y-27.744 Z-2.032 B14.951 C318.3 +G01 X+28.488 Y-27.963 Z-2.031 B14.946 C316.828 +G01 X+28.282 Y-28.181 Z-2.032 B14.951 C315.355 +G01 X+28.067 Y-28.389 Z-2.031 B14.946 C313.879 +G01 X+27.85 Y-28.596 Z-2.032 B14.951 C312.402 +G01 X+27.624 Y-28.793 Z-2.031 B14.946 C310.925 +G01 X+27.397 Y-28.989 Z-2.032 B14.951 C309.448 +G01 X+27.161 Y-29.174 Z-2.031 C307.971 +G01 X+26.925 Y-29.358 Z-2.032 C306.494 +G01 X+26.627 Y-29.567 Z-2.031 B14.947 C304.691 +G01 X+26.434 Y-29.702 Z-2.032 B14.951 C303.54 +G01 X+26.18 Y-29.862 Z-2.031 B14.946 C302.063 +G01 X+25.926 Y-30.021 Z-2.032 B14.951 C300.586 +G01 X+25.692 Y-30.151 Z-2.031 B14.946 C299.276 +G01 X+25.458 Y-30.281 Z-2.032 B14.949 C297.965 +G01 X+25.402 Y-30.312 B14.951 C297.633 +G01 X+25.167 Y-30.428 Z-2.031 B14.946 C296.347 +G01 X+24.931 Y-30.544 B14.949 C295.062 +G01 X+24.864 Y-30.577 Z-2.032 B14.951 C294.679 +G01 X+24.627 Y-30.679 Z-2.031 B14.946 C293.419 +G01 X+24.39 Y-30.78 B14.948 C292.159 +G01 X+24.295 Y-30.82 Z-2.032 B14.951 C291.632 +G01 X+24.018 Y-30.922 Z-2.031 B14.947 C290.18 +G01 X+23.742 Y-31.024 Z-2.032 B14.951 C288.729 +G01 X+23.46 Y-31.112 Z-2.031 B14.947 C287.277 +G01 X+23.179 Y-31.199 Z-2.032 B14.952 C285.826 +G01 X+22.888 Y-31.274 Z-2.031 B14.947 C284.351 +G01 X+22.598 Y-31.348 Z-2.032 B14.952 C282.876 +G01 X+22.304 Y-31.408 Z-2.031 B14.947 C281.401 +G01 X+22.01 Y-31.467 Z-2.032 B14.952 C279.926 +G01 X+21.714 Y-31.511 Z-2.031 C278.451 +G01 X+21.417 Y-31.555 Z-2.032 C276.976 +G01 X+21.119 Y-31.584 Z-2.031 C275.501 +G01 X+20.821 Y-31.613 Z-2.032 C274.026 +G01 X+20.545 Y-31.625 Z-2.031 B14.947 C272.667 +G01 X+20.27 Y-31.637 Z-2.032 B14.95 C271.308 +G01 X+20.222 Y-31.64 B14.952 C271.076 +G01 X+19.951 Y-31.638 Z-2.031 B14.947 C269.74 +G01 X+19.68 Y-31.636 Z-2.032 B14.95 C268.404 +G01 X+19.622 B14.952 C268.126 +G01 X+19.356 Y-31.62 Z-2.031 B14.947 C266.813 +G01 X+19.091 Y-31.605 Z-2.032 B14.95 C265.501 +G01 X+19.024 Y-31.601 B14.952 C265.176 +G01 X+18.764 Y-31.572 Z-2.031 B14.947 C263.886 +G01 X+18.504 Y-31.543 B14.949 C262.597 +G01 X+18.428 Y-31.535 Z-2.032 B14.952 C262.226 +G01 X+18.174 Y-31.494 Z-2.031 B14.947 C260.96 +G01 X+17.921 Y-31.453 B14.949 C259.694 +G01 X+17.836 Y-31.439 Z-2.032 B14.952 C259.275 +G01 X+17.59 Y-31.386 Z-2.031 B14.947 C258.033 +G01 X+17.344 Y-31.332 B14.949 C256.79 +G01 X+17.25 Y-31.312 Z-2.032 B14.952 C256.325 +G01 X+17.012 Y-31.248 Z-2.031 B14.947 C255.106 +G01 X+16.773 Y-31.183 B14.949 C253.887 +G01 X+16.671 Y-31.156 Z-2.032 B14.951 C253.375 +G01 X+16.441 Y-31.081 Z-2.031 B14.947 C252.179 +G01 X+16.211 Y-31.005 B14.949 C250.983 +G01 X+16.101 Y-30.969 Z-2.032 B14.951 C250.425 +G01 X+15.88 Y-30.884 Z-2.031 B14.947 C249.253 +G01 X+15.658 Y-30.799 B14.948 C248.08 +G01 X+15.542 Y-30.754 Z-2.032 B14.951 C247.475 +G01 X+15.268 Y-30.633 Z-2.031 B14.947 C246.001 +G01 X+14.994 Y-30.511 Z-2.032 B14.951 C244.526 +G01 X+14.791 Y-30.407 Z-2.031 B14.947 C243.399 +G01 X+14.588 Y-30.304 B14.948 C242.273 +G01 X+14.414 Y-30.215 Z-2.032 B14.952 C241.352 +G01 X+14.173 Y-30.076 Z-2.031 B14.948 C239.969 +G01 X+13.933 Y-29.936 Z-2.032 B14.951 C238.587 +G01 X+13.574 Y-29.704 Z-2.031 B14.948 C236.466 +G01 X+13.437 Y-29.615 Z-2.032 B14.951 C235.676 +G01 X+13.09 Y-29.366 Z-2.031 B14.948 C233.563 +G01 X+12.95 Y-29.264 Z-2.032 B14.951 C232.725 +G01 X+12.716 Y-29.077 Z-2.031 B14.946 C231.25 +G01 X+12.483 Y-28.889 Z-2.032 B14.951 C229.775 +G01 X+12.259 Y-28.69 Z-2.031 B14.946 C228.303 +G01 X+12.035 Y-28.49 Z-2.032 B14.95 C226.832 +G01 X+11.788 Y-28.246 Z-2.031 B14.947 C225.106 +G01 X+11.787 Y-28.113 Z-2.006 B14.823 C224.629 +G01 X+11.678 Y-28.005 Z-2.007 B14.826 C223.887 +G01 X+11.477 Y-27.785 Z-2.006 B14.822 C222.41 +G01 X+11.277 Y-27.566 Z-2.007 B14.826 C220.934 +G01 X+11.087 Y-27.336 Z-2.006 B14.822 C219.457 +G01 X+10.899 Y-27.106 Z-2.007 B14.826 C217.98 +G01 X+10.662 Y-26.786 Z-2.006 B14.823 C215.984 +G01 X+10.545 Y-26.629 Z-2.007 B14.826 C215.027 +G01 X+10.33 Y-26.305 Z-2.006 B14.823 C213.08 +G01 X+10.216 Y-26.133 Z-2.007 B14.827 C212.074 +G01 X+10.023 Y-25.807 Z-2.006 B14.823 C210.177 +G01 X+9.913 Y-25.621 Z-2.007 B14.827 C209.12 +G01 X+9.742 Y-25.294 Z-2.006 B14.823 C207.274 +G01 X+9.637 Y-25.095 Z-2.007 B14.827 C206.167 +G01 X+9.529 Y-24.859 Z-2.006 B14.822 C204.889 +G01 X+9.421 Y-24.624 B14.824 C203.61 +G01 X+9.389 Y-24.554 Z-2.007 B14.827 C203.214 +G01 X+9.295 Y-24.318 Z-2.006 B14.822 C201.961 +G01 X+9.201 Y-24.082 B14.824 C200.707 +G01 X+9.169 Y-24.002 Z-2.007 B14.827 C200.26 +G01 X+9.088 Y-23.766 Z-2.006 B14.822 C199.032 +G01 X+9.008 Y-23.53 B14.823 C197.804 +G01 X+8.977 Y-23.439 Z-2.007 B14.827 C197.307 +G01 X+8.91 Y-23.204 Z-2.006 B14.822 C196.104 +G01 X+8.843 Y-22.969 B14.823 C194.901 +G01 X+8.814 Y-22.867 Z-2.007 B14.827 C194.353 +G01 X+8.761 Y-22.633 Z-2.006 B14.822 C193.175 +G01 X+8.707 Y-22.4 B14.823 C191.997 +G01 X+8.678 Y-22.269 Z-2.007 B14.827 C191.311 +G01 X+8.628 Y-21.986 Z-2.006 B14.822 C189.881 +G01 X+8.579 Y-21.702 Z-2.007 B14.827 C188.452 +G01 X+8.542 Y-21.407 Z-2.006 B14.823 C186.977 +G01 X+8.506 Y-21.112 Z-2.007 B14.827 C185.502 +G01 X+8.485 Y-20.815 Z-2.006 B14.823 C184.027 +G01 X+8.464 Y-20.518 Z-2.007 B14.827 C182.552 +G01 X+8.458 Y-20.221 Z-2.006 C181.077 +G01 X+8.453 Y-19.924 Z-2.007 C179.603 +G01 X+8.462 Y-19.627 Z-2.006 B14.823 C178.128 +G01 X+8.472 Y-19.33 Z-2.007 B14.827 C176.653 +G01 X+8.495 Y-19.053 Z-2.006 B14.823 C175.272 +G01 X+8.519 Y-18.776 Z-2.007 B14.826 C173.891 +G01 X+8.522 Y-18.737 B14.827 C173.703 +G01 X+8.559 Y-18.466 Z-2.006 B14.823 C172.345 +G01 X+8.596 Y-18.196 B14.826 C170.987 +G01 X+8.602 Y-18.148 Z-2.007 B14.827 C170.754 +G01 X+8.652 Y-17.884 Z-2.006 B14.823 C169.419 +G01 X+8.702 Y-17.62 B14.826 C168.084 +G01 X+8.713 Y-17.564 Z-2.007 B14.827 C167.804 +G01 X+8.775 Y-17.307 Z-2.006 B14.823 C166.492 +G01 X+8.837 Y-17.051 B14.825 C165.18 +G01 X+8.853 Y-16.986 Z-2.007 B14.827 C164.854 +G01 X+8.927 Y-16.738 Z-2.006 B14.822 C163.566 +G01 X+9.001 Y-16.49 B14.825 C162.277 +G01 X+9.023 Y-16.416 Z-2.007 B14.827 C161.905 +G01 X+9.108 Y-16.176 Z-2.006 B14.822 C160.639 +G01 X+9.193 Y-15.937 B14.825 C159.373 +G01 X+9.222 Y-15.856 Z-2.007 B14.827 C158.955 +G01 X+9.317 Y-15.625 Z-2.006 B14.822 C157.713 +G01 X+9.413 Y-15.395 B14.825 C156.47 +G01 X+9.45 Y-15.306 Z-2.007 B14.827 C156.005 +G01 X+9.555 Y-15.085 Z-2.006 B14.822 C154.786 +G01 X+9.66 Y-14.865 B14.824 C153.566 +G01 X+9.705 Y-14.769 Z-2.007 B14.827 C153.055 +G01 X+9.819 Y-14.558 Z-2.006 B14.822 C151.859 +G01 X+9.934 Y-14.348 B14.824 C150.663 +G01 X+9.988 Y-14.246 Z-2.007 B14.827 C150.106 +G01 X+10.11 Y-14.046 Z-2.006 B14.822 C148.933 +G01 X+10.233 Y-13.845 B14.824 C147.759 +G01 X+10.298 Y-13.739 Z-2.007 B14.826 C147.156 +G01 X+10.427 Y-13.548 Z-2.006 B14.822 C146.006 +G01 X+10.557 Y-13.358 B14.824 C144.856 +G01 X+10.633 Y-13.247 Z-2.007 B14.826 C144.206 +G01 X+10.813 Y-13.011 Z-2.006 B14.822 C142.732 +G01 X+10.993 Y-12.774 Z-2.007 B14.826 C141.257 +G01 X+11.185 Y-12.547 Z-2.006 B14.822 C139.782 +G01 X+11.377 Y-12.32 Z-2.007 B14.826 C138.307 +G01 X+11.58 Y-12.103 Z-2.006 C136.835 +G01 X+11.784 Y-11.886 Z-2.007 C135.364 +G01 X+11.998 Y-11.68 Z-2.006 B14.822 C133.887 +G01 X+12.212 Y-11.474 Z-2.007 B14.826 C132.41 +G01 X+12.437 Y-11.279 Z-2.006 B14.822 C130.934 +G01 X+12.661 Y-11.085 Z-2.007 B14.826 C129.457 +G01 X+12.896 Y-10.901 Z-2.006 C127.98 +G01 X+13.13 Y-10.719 Z-2.007 C126.504 +G01 X+13.452 Y-10.493 Z-2.006 B14.823 C124.532 +G01 X+13.617 Y-10.377 Z-2.007 B14.827 C123.55 +G01 X+13.942 Y-10.173 Z-2.006 B14.823 C121.629 +G01 X+14.121 Y-10.061 Z-2.007 B14.827 C120.597 +G01 X+14.448 Y-9.879 Z-2.006 B14.823 C118.725 +G01 X+14.64 Y-9.772 Z-2.007 B14.827 C117.643 +G01 X+14.875 Y-9.657 Z-2.006 B14.822 C116.353 +G01 X+15.109 Y-9.541 B14.824 C115.062 +G01 X+15.174 Y-9.51 Z-2.007 B14.827 C114.69 +G01 X+15.41 Y-9.408 Z-2.006 B14.822 C113.424 +G01 X+15.645 Y-9.307 B14.824 C112.159 +G01 X+15.72 Y-9.275 Z-2.007 B14.827 C111.737 +G01 X+15.956 Y-9.188 Z-2.006 B14.822 C110.496 +G01 X+16.193 Y-9.101 B14.824 C109.255 +G01 X+16.278 Y-9.069 Z-2.007 B14.827 C108.783 +G01 X+16.514 Y-8.995 Z-2.006 B14.822 C107.568 +G01 X+16.75 Y-8.922 B14.823 C106.352 +G01 X+16.846 Y-8.892 Z-2.007 B14.827 C105.83 +G01 X+17.08 Y-8.832 Z-2.006 B14.822 C104.64 +G01 X+17.315 Y-8.772 B14.823 C103.449 +G01 X+17.445 Y-8.74 Z-2.007 B14.826 C102.763 +G01 X+17.731 Y-8.682 Z-2.006 B14.822 C101.311 +G01 X+18.018 Y-8.624 Z-2.007 B14.827 C99.86 +G01 X+18.305 Y-8.581 Z-2.006 B14.823 C98.418 +G01 X+18.593 Y-8.539 Z-2.007 B14.827 C96.977 +G01 X+18.889 Y-8.51 Z-2.006 B14.823 C95.502 +G01 X+19.185 Y-8.482 Z-2.007 B14.827 C94.027 +G01 X+19.482 Y-8.468 Z-2.006 C92.552 +G01 X+19.779 Y-8.455 Z-2.007 C91.077 +G01 X+20.076 Y-8.457 Z-2.006 C89.603 +G01 X+20.373 Y-8.459 Z-2.007 C88.128 +G01 X+20.67 Y-8.476 Z-2.006 B14.823 C86.653 +G01 X+20.967 Y-8.493 Z-2.007 B14.827 C85.178 +G01 X+21.241 Y-8.523 Z-2.006 B14.823 C83.809 +G01 X+21.515 Y-8.554 B14.826 C82.439 +G01 X+21.558 Y-8.558 Z-2.007 B14.827 C82.229 +G01 X+21.825 Y-8.602 Z-2.006 B14.822 C80.882 +G01 X+22.093 Y-8.645 B14.826 C79.536 +G01 X+22.145 Y-8.654 Z-2.007 B14.827 C79.279 +G01 X+22.405 Y-8.71 Z-2.006 B14.823 C77.956 +G01 X+22.665 Y-8.766 B14.825 C76.632 +G01 X+22.726 Y-8.779 Z-2.007 B14.827 C76.329 +G01 X+22.978 Y-8.847 Z-2.006 B14.822 C75.029 +G01 X+23.231 Y-8.916 B14.825 C73.729 +G01 X+23.3 Y-8.934 Z-2.007 B14.827 C73.379 +G01 X+23.544 Y-9.014 Z-2.006 B14.822 C72.102 +G01 X+23.788 Y-9.094 B14.825 C70.825 +G01 X+23.865 Y-9.119 Z-2.007 B14.827 C70.43 +G01 X+24.1 Y-9.209 Z-2.006 B14.822 C69.176 +G01 X+24.335 Y-9.3 B14.825 C67.922 +G01 X+24.42 Y-9.332 Z-2.007 B14.827 C67.48 +G01 X+24.646 Y-9.433 Z-2.006 B14.822 C66.249 +G01 X+24.872 Y-9.533 B14.824 C65.018 +G01 X+24.964 Y-9.574 Z-2.007 B14.827 C64.53 +G01 X+25.18 Y-9.684 Z-2.006 B14.822 C63.323 +G01 X+25.396 Y-9.793 B14.824 C62.115 +G01 X+25.494 Y-9.843 Z-2.007 B14.827 C61.581 +G01 X+25.7 Y-9.962 Z-2.006 B14.822 C60.396 +G01 X+25.906 Y-10.08 B14.824 C59.211 +G01 X+26.009 Y-10.14 Z-2.007 B14.827 C58.631 +G01 X+26.205 Y-10.266 Z-2.006 B14.822 C57.469 +G01 X+26.4 Y-10.392 B14.824 C56.308 +G01 X+26.509 Y-10.462 Z-2.007 B14.826 C55.681 +G01 X+26.694 Y-10.595 Z-2.006 B14.822 C54.543 +G01 X+26.879 Y-10.729 B14.824 C53.404 +G01 X+26.991 Y-10.81 Z-2.007 B14.826 C52.732 +G01 X+27.223 Y-10.996 Z-2.006 B14.822 C51.257 +G01 X+27.455 Y-11.182 Z-2.007 B14.826 C49.782 +G01 X+27.677 Y-11.38 Z-2.006 B14.821 C48.309 +G01 X+27.899 Y-11.577 Z-2.007 B14.826 C46.836 +G01 X+28.111 Y-11.786 Z-2.006 B14.822 C45.361 +G01 X+28.322 Y-11.995 Z-2.007 B14.826 C43.887 +G01 X+28.523 Y-12.215 Z-2.006 B14.822 C42.41 +G01 X+28.723 Y-12.434 Z-2.007 B14.826 C40.934 +G01 X+28.913 Y-12.664 Z-2.006 C39.457 +G01 X+29.101 Y-12.893 Z-2.007 C37.98 +G01 X+29.338 Y-13.214 Z-2.006 B14.823 C35.984 +G01 X+29.455 Y-13.371 Z-2.007 B14.826 C35.027 +G01 X+29.67 Y-13.695 Z-2.006 B14.823 C33.08 +G01 X+29.784 Y-13.867 Z-2.007 B14.827 C32.074 +G01 X+29.977 Y-14.193 Z-2.006 B14.823 C30.177 +G01 X+30.087 Y-14.379 Z-2.007 B14.827 C29.12 +G01 X+30.258 Y-14.706 Z-2.006 B14.823 C27.274 +G01 X+30.363 Y-14.905 Z-2.007 B14.827 C26.167 +G01 X+30.471 Y-15.141 Z-2.006 B14.822 C24.889 +G01 X+30.579 Y-15.376 B14.824 C23.61 +G01 X+30.611 Y-15.446 Z-2.007 B14.827 C23.214 +G01 X+30.705 Y-15.682 Z-2.006 B14.822 C21.961 +G01 X+30.799 Y-15.918 B14.824 C20.707 +G01 X+30.831 Y-15.998 Z-2.007 B14.827 C20.26 +G01 X+30.912 Y-16.234 Z-2.006 B14.822 C19.032 +G01 X+30.992 Y-16.47 B14.823 C17.804 +G01 X+31.023 Y-16.561 Z-2.007 B14.827 C17.307 +G01 X+31.09 Y-16.796 Z-2.006 B14.822 C16.104 +G01 X+31.157 Y-17.031 B14.823 C14.901 +G01 X+31.186 Y-17.133 Z-2.007 B14.827 C14.353 +G01 X+31.239 Y-17.366 Z-2.006 B14.822 C13.175 +G01 X+31.293 Y-17.6 B14.823 C11.997 +G01 X+31.322 Y-17.731 Z-2.007 B14.827 C11.311 +G01 X+31.372 Y-18.014 Z-2.006 B14.822 C9.881 +G01 X+31.421 Y-18.298 Z-2.007 B14.827 C8.452 +G01 X+31.458 Y-18.593 Z-2.006 B14.823 C6.977 +G01 X+31.494 Y-18.888 Z-2.007 B14.827 C5.502 +G01 X+31.515 Y-19.185 Z-2.006 B14.823 C4.027 +G01 X+31.536 Y-19.481 Z-2.007 B14.827 C2.552 +G01 X+31.542 Y-19.779 Z-2.006 C1.077 +G01 X+31.547 Y-20.076 Z-2.007 C359.603 +G01 X+31.538 Y-20.373 Z-2.006 B14.823 C358.128 +G01 X+31.528 Y-20.67 Z-2.007 B14.827 C356.653 +G01 X+31.505 Y-20.947 Z-2.006 B14.823 C355.272 +G01 X+31.481 Y-21.224 Z-2.007 B14.826 C353.891 +G01 X+31.478 Y-21.263 B14.827 C353.703 +G01 X+31.441 Y-21.533 Z-2.006 B14.823 C352.345 +G01 X+31.404 Y-21.804 B14.826 C350.987 +G01 X+31.398 Y-21.852 Z-2.007 B14.827 C350.754 +G01 X+31.348 Y-22.116 Z-2.006 B14.823 C349.419 +G01 X+31.298 Y-22.379 B14.826 C348.084 +G01 X+31.287 Y-22.436 Z-2.007 B14.827 C347.804 +G01 X+31.225 Y-22.692 Z-2.006 B14.823 C346.492 +G01 X+31.163 Y-22.949 B14.825 C345.18 +G01 X+31.147 Y-23.014 Z-2.007 B14.827 C344.854 +G01 X+31.073 Y-23.262 Z-2.006 B14.822 C343.566 +G01 X+30.999 Y-23.51 B14.825 C342.277 +G01 X+30.977 Y-23.584 Z-2.007 B14.827 C341.905 +G01 X+30.892 Y-23.823 Z-2.006 B14.822 C340.639 +G01 X+30.807 Y-24.063 B14.825 C339.373 +G01 X+30.778 Y-24.144 Z-2.007 B14.827 C338.955 +G01 X+30.683 Y-24.375 Z-2.006 B14.822 C337.713 +G01 X+30.587 Y-24.605 B14.825 C336.47 +G01 X+30.55 Y-24.694 Z-2.007 B14.827 C336.005 +G01 X+30.445 Y-24.914 Z-2.006 B14.822 C334.786 +G01 X+30.34 Y-25.135 B14.824 C333.566 +G01 X+30.295 Y-25.23 Z-2.007 B14.827 C333.055 +G01 X+30.181 Y-25.441 Z-2.006 B14.822 C331.859 +G01 X+30.066 Y-25.652 B14.824 C330.663 +G01 X+30.012 Y-25.753 Z-2.007 B14.827 C330.106 +G01 X+29.89 Y-25.954 Z-2.006 B14.822 C328.933 +G01 X+29.767 Y-26.155 B14.824 C327.759 +G01 X+29.702 Y-26.261 Z-2.007 B14.826 C327.156 +G01 X+29.573 Y-26.452 Z-2.006 B14.822 C326.006 +G01 X+29.443 Y-26.642 B14.824 C324.856 +G01 X+29.367 Y-26.752 Z-2.007 B14.826 C324.206 +G01 X+29.187 Y-26.989 Z-2.006 B14.822 C322.732 +G01 X+29.007 Y-27.226 Z-2.007 B14.826 C321.257 +G01 X+28.815 Y-27.453 Z-2.006 B14.822 C319.782 +G01 X+28.623 Y-27.68 Z-2.007 B14.826 C318.307 +G01 X+28.42 Y-27.897 Z-2.006 C316.835 +G01 X+28.216 Y-28.113 Z-2.007 C315.364 +G01 X+28.002 Y-28.32 Z-2.006 B14.822 C313.887 +G01 X+27.788 Y-28.526 Z-2.007 B14.826 C312.41 +G01 X+27.563 Y-28.721 Z-2.006 B14.822 C310.934 +G01 X+27.339 Y-28.915 Z-2.007 B14.826 C309.457 +G01 X+27.104 Y-29.098 Z-2.006 C307.98 +G01 X+26.87 Y-29.281 Z-2.007 C306.504 +G01 X+26.548 Y-29.507 Z-2.006 B14.823 C304.532 +G01 X+26.383 Y-29.623 Z-2.007 B14.827 C303.55 +G01 X+26.058 Y-29.827 Z-2.006 B14.823 C301.629 +G01 X+25.879 Y-29.938 Z-2.007 B14.827 C300.597 +G01 X+25.552 Y-30.121 Z-2.006 B14.823 C298.725 +G01 X+25.36 Y-30.228 Z-2.007 B14.827 C297.643 +G01 X+25.125 Y-30.343 Z-2.006 B14.822 C296.353 +G01 X+24.891 Y-30.458 B14.824 C295.062 +G01 X+24.826 Y-30.49 Z-2.007 B14.827 C294.69 +G01 X+24.59 Y-30.592 Z-2.006 B14.822 C293.424 +G01 X+24.355 Y-30.693 B14.824 C292.159 +G01 X+24.28 Y-30.725 Z-2.007 B14.827 C291.737 +G01 X+24.044 Y-30.812 Z-2.006 B14.822 C290.496 +G01 X+23.807 Y-30.899 B14.824 C289.255 +G01 X+23.722 Y-30.931 Z-2.007 B14.827 C288.783 +G01 X+23.486 Y-31.005 Z-2.006 B14.822 C287.568 +G01 X+23.25 Y-31.078 B14.823 C286.352 +G01 X+23.154 Y-31.108 Z-2.007 B14.827 C285.83 +G01 X+22.92 Y-31.168 Z-2.006 B14.822 C284.64 +G01 X+22.685 Y-31.228 B14.823 C283.449 +G01 X+22.555 Y-31.26 Z-2.007 B14.826 C282.763 +G01 X+22.269 Y-31.318 Z-2.006 B14.822 C281.311 +G01 X+21.982 Y-31.375 Z-2.007 B14.827 C279.86 +G01 X+21.695 Y-31.418 Z-2.006 B14.823 C278.418 +G01 X+21.407 Y-31.461 Z-2.007 B14.827 C276.977 +G01 X+21.111 Y-31.49 Z-2.006 B14.823 C275.502 +G01 X+20.815 Y-31.518 Z-2.007 B14.827 C274.027 +G01 X+20.518 Y-31.532 Z-2.006 C272.552 +G01 X+20.221 Y-31.545 Z-2.007 C271.077 +G01 X+19.924 Y-31.543 Z-2.006 C269.603 +G01 X+19.627 Y-31.541 Z-2.007 C268.128 +G01 X+19.33 Y-31.524 Z-2.006 B14.823 C266.653 +G01 X+19.033 Y-31.507 Z-2.007 B14.827 C265.178 +G01 X+18.759 Y-31.477 Z-2.006 B14.823 C263.809 +G01 X+18.485 Y-31.446 B14.826 C262.439 +G01 X+18.442 Y-31.442 Z-2.007 B14.827 C262.229 +G01 X+18.175 Y-31.398 Z-2.006 B14.822 C260.882 +G01 X+17.907 Y-31.355 B14.826 C259.536 +G01 X+17.855 Y-31.346 Z-2.007 B14.827 C259.279 +G01 X+17.595 Y-31.29 Z-2.006 B14.823 C257.956 +G01 X+17.335 Y-31.234 B14.825 C256.632 +G01 X+17.274 Y-31.221 Z-2.007 B14.827 C256.329 +G01 X+17.022 Y-31.153 Z-2.006 B14.822 C255.029 +G01 X+16.769 Y-31.084 B14.825 C253.729 +G01 X+16.7 Y-31.065 Z-2.007 B14.827 C253.379 +G01 X+16.456 Y-30.986 Z-2.006 B14.822 C252.102 +G01 X+16.212 Y-30.906 B14.825 C250.825 +G01 X+16.135 Y-30.881 Z-2.007 B14.827 C250.43 +G01 X+15.9 Y-30.791 Z-2.006 B14.822 C249.176 +G01 X+15.665 Y-30.7 B14.825 C247.922 +G01 X+15.58 Y-30.668 Z-2.007 B14.827 C247.48 +G01 X+15.308 Y-30.547 Z-2.006 B14.822 C246.005 +G01 X+15.036 Y-30.426 Z-2.007 B14.827 C244.531 +G01 X+14.82 Y-30.316 Z-2.006 B14.822 C243.323 +G01 X+14.604 Y-30.206 B14.824 C242.115 +G01 X+14.459 Y-30.132 Z-2.007 B14.828 C241.352 +G01 X+14.221 Y-29.994 Z-2.006 B14.823 C239.972 +G01 X+13.983 Y-29.856 Z-2.007 B14.827 C238.591 +G01 X+13.791 Y-29.732 Z-2.006 B14.823 C237.45 +G01 X+13.6 Y-29.608 B14.824 C236.308 +G01 X+13.491 Y-29.538 Z-2.007 B14.826 C235.683 +G01 X+13.306 Y-29.405 Z-2.006 B14.822 C234.543 +G01 X+13.121 Y-29.271 B14.824 C233.404 +G01 X+13.009 Y-29.19 Z-2.007 B14.826 C232.732 +G01 X+12.777 Y-29.004 Z-2.006 B14.821 C231.257 +G01 X+12.545 Y-28.818 Z-2.007 B14.826 C229.782 +G01 X+12.323 Y-28.62 Z-2.006 B14.821 C228.309 +G01 X+12.101 Y-28.422 Z-2.007 B14.826 C226.836 +G01 X+11.854 Y-28.179 Z-2.006 B14.822 C225.109 +G01 Y-28.046 Z-1.981 B14.699 C224.62 +G01 X+11.747 Y-27.94 Z-1.982 B14.702 C223.895 +G01 X+11.548 Y-27.723 Z-1.981 B14.697 C222.419 +G01 X+11.349 Y-27.505 Z-1.982 B14.702 C220.942 +G01 X+11.161 Y-27.277 Z-1.981 C219.466 +G01 X+10.974 Y-27.049 Z-1.982 C217.989 +G01 X+10.719 Y-26.705 Z-1.981 B14.699 C215.825 +G01 X+10.623 Y-26.576 Z-1.982 B14.702 C215.036 +G01 X+10.392 Y-26.227 Z-1.981 B14.699 C212.922 +G01 X+10.297 Y-26.084 Z-1.982 B14.702 C212.084 +G01 X+10.089 Y-25.732 Z-1.981 B14.699 C210.018 +G01 X+9.997 Y-25.577 Z-1.982 B14.702 C209.131 +G01 X+9.811 Y-25.223 Z-1.981 B14.698 C207.115 +G01 X+9.723 Y-25.054 Z-1.982 B14.702 C206.178 +G01 X+9.615 Y-24.82 Z-1.981 B14.697 C204.894 +G01 X+9.508 Y-24.586 B14.7 C203.61 +G01 X+9.476 Y-24.518 Z-1.982 B14.702 C203.225 +G01 X+9.383 Y-24.284 Z-1.981 B14.697 C201.966 +G01 X+9.289 Y-24.049 B14.699 C200.707 +G01 X+9.258 Y-23.971 Z-1.982 B14.702 C200.272 +G01 X+9.178 Y-23.736 Z-1.981 B14.697 C199.038 +G01 X+9.098 Y-23.501 B14.699 C197.804 +G01 X+9.068 Y-23.412 Z-1.982 B14.703 C197.319 +G01 X+9.001 Y-23.178 Z-1.981 B14.698 C196.11 +G01 X+8.935 Y-22.944 B14.699 C194.9 +G01 X+8.906 Y-22.845 Z-1.982 B14.703 C194.366 +G01 X+8.853 Y-22.613 Z-1.981 B14.698 C193.182 +G01 X+8.8 Y-22.38 B14.699 C191.997 +G01 X+8.775 Y-22.27 Z-1.982 B14.703 C191.413 +G01 X+8.734 Y-22.04 Z-1.981 B14.698 C190.254 +G01 X+8.694 Y-21.81 C189.094 +G01 X+8.673 Y-21.689 Z-1.982 B14.703 C188.46 +G01 X+8.645 Y-21.462 Z-1.981 B14.698 C187.326 +G01 X+8.617 Y-21.235 C186.191 +G01 X+8.601 Y-21.104 Z-1.982 B14.703 C185.507 +G01 X+8.569 Y-20.657 Z-1.981 B14.698 C183.288 +G01 X+8.559 Y-20.493 Z-1.982 B14.702 C182.442 +G01 X+8.553 Y-20.203 Z-1.981 B14.698 C180.991 +G01 X+8.548 Y-19.913 Z-1.982 B14.702 C179.54 +G01 X+8.557 Y-19.625 Z-1.981 B14.698 C178.097 +G01 X+8.567 Y-19.337 Z-1.982 B14.703 C176.655 +G01 X+8.591 Y-19.043 Z-1.981 C175.181 +G01 X+8.616 Y-18.749 Z-1.982 C173.706 +G01 X+8.655 Y-18.457 Z-1.981 C172.232 +G01 X+8.695 Y-18.165 Z-1.982 C170.757 +G01 X+8.75 Y-17.875 Z-1.981 B14.698 C169.282 +G01 X+8.805 Y-17.585 Z-1.982 B14.703 C167.807 +G01 X+8.87 Y-17.315 Z-1.981 B14.698 C166.415 +G01 X+8.936 Y-17.045 Z-1.982 B14.702 C165.022 +G01 X+8.944 Y-17.012 B14.703 C164.858 +G01 X+9.022 Y-16.75 Z-1.981 B14.698 C163.489 +G01 X+9.1 Y-16.488 B14.701 C162.119 +G01 X+9.112 Y-16.447 Z-1.982 B14.703 C161.909 +G01 X+9.202 Y-16.194 Z-1.981 B14.698 C160.562 +G01 X+9.292 Y-15.941 B14.701 C159.215 +G01 X+9.31 Y-15.891 Z-1.982 B14.702 C158.959 +G01 X+9.411 Y-15.647 Z-1.981 B14.698 C157.636 +G01 X+9.512 Y-15.404 B14.701 C156.312 +G01 X+9.536 Y-15.346 Z-1.982 B14.702 C156.01 +G01 X+9.647 Y-15.112 Z-1.981 B14.698 C154.709 +G01 X+9.758 Y-14.878 B14.701 C153.408 +G01 X+9.789 Y-14.814 Z-1.982 B14.702 C153.061 +G01 X+9.91 Y-14.59 Z-1.981 B14.698 C151.783 +G01 X+10.031 Y-14.366 B14.7 C150.505 +G01 X+10.07 Y-14.295 Z-1.982 B14.702 C150.112 +G01 X+10.199 Y-14.082 Z-1.981 B14.698 C148.856 +G01 X+10.329 Y-13.869 B14.7 C147.601 +G01 X+10.376 Y-13.791 Z-1.982 B14.702 C147.162 +G01 X+10.542 Y-13.547 Z-1.981 B14.697 C145.688 +G01 X+10.709 Y-13.304 Z-1.982 B14.702 C144.213 +G01 X+10.9 Y-13.053 Z-1.981 B14.697 C142.643 +G01 X+11.066 Y-12.835 Z-1.982 B14.702 C141.264 +G01 X+11.256 Y-12.609 Z-1.981 C139.789 +G01 X+11.447 Y-12.384 Z-1.982 C138.314 +G01 X+11.648 Y-12.169 Z-1.981 C136.843 +G01 X+11.85 Y-11.954 Z-1.982 C135.372 +G01 X+12.062 Y-11.749 Z-1.981 B14.697 C133.895 +G01 X+12.275 Y-11.545 Z-1.982 B14.702 C132.419 +G01 X+12.497 Y-11.352 Z-1.981 B14.697 C130.942 +G01 X+12.72 Y-11.159 Z-1.982 B14.702 C129.466 +G01 X+12.953 Y-10.977 Z-1.981 C127.99 +G01 X+13.185 Y-10.796 Z-1.982 C126.513 +G01 X+13.532 Y-10.552 Z-1.981 B14.699 C124.374 +G01 X+13.668 Y-10.457 Z-1.982 B14.702 C123.56 +G01 X+14.019 Y-10.237 Z-1.981 B14.699 C121.47 +G01 X+14.168 Y-10.144 Z-1.982 B14.702 C120.607 +G01 X+14.521 Y-9.947 Z-1.981 B14.699 C118.567 +G01 X+14.683 Y-9.856 Z-1.982 B14.702 C117.654 +G01 X+15.037 Y-9.682 Z-1.981 B14.698 C115.663 +G01 X+15.212 Y-9.596 Z-1.982 B14.702 C114.701 +G01 X+15.446 Y-9.495 Z-1.981 B14.697 C113.43 +G01 X+15.681 Y-9.395 B14.699 C112.159 +G01 X+15.754 Y-9.363 Z-1.982 B14.702 C111.748 +G01 X+15.989 Y-9.276 Z-1.981 B14.697 C110.502 +G01 X+16.224 Y-9.19 B14.699 C109.255 +G01 X+16.307 Y-9.159 Z-1.982 B14.702 C108.795 +G01 X+16.542 Y-9.086 Z-1.981 B14.698 C107.574 +G01 X+16.776 Y-9.013 B14.699 C106.352 +G01 X+16.87 Y-8.983 Z-1.982 B14.703 C105.843 +G01 X+17.103 Y-8.923 Z-1.981 B14.698 C104.646 +G01 X+17.337 Y-8.864 B14.699 C103.449 +G01 X+17.441 Y-8.837 Z-1.982 B14.703 C102.89 +G01 X+17.673 Y-8.79 Z-1.981 B14.698 C101.718 +G01 X+17.904 Y-8.743 C100.546 +G01 X+18.019 Y-8.72 Z-1.982 B14.703 C99.937 +G01 X+18.248 Y-8.686 Z-1.981 B14.698 C98.79 +G01 X+18.477 Y-8.652 C97.643 +G01 X+18.603 Y-8.633 Z-1.982 B14.703 C96.984 +G01 X+19.054 Y-8.589 Z-1.981 B14.698 C94.739 +G01 X+19.19 Y-8.576 Z-1.982 B14.703 C94.031 +G01 X+19.493 Y-8.562 Z-1.981 B14.697 C92.511 +G01 X+19.797 Y-8.55 Z-1.982 B14.702 C90.991 +G01 X+20.083 Y-8.551 Z-1.981 B14.698 C89.56 +G01 X+20.369 Y-8.553 Z-1.982 B14.703 C88.13 +G01 X+20.663 Y-8.57 Z-1.981 C86.655 +G01 X+20.957 Y-8.587 Z-1.982 C85.181 +G01 X+21.251 Y-8.619 Z-1.981 C83.706 +G01 X+21.544 Y-8.652 Z-1.982 C82.232 +G01 X+21.835 Y-8.699 Z-1.981 B14.698 C80.757 +G01 X+22.126 Y-8.746 Z-1.982 B14.703 C79.282 +G01 X+22.414 Y-8.808 Z-1.981 B14.698 C77.807 +G01 X+22.702 Y-8.871 Z-1.982 B14.703 C76.333 +G01 X+22.968 Y-8.942 Z-1.981 B14.698 C74.952 +G01 X+23.234 Y-9.014 Z-1.982 B14.702 C73.571 +G01 X+23.272 Y-9.025 B14.703 C73.384 +G01 X+23.529 Y-9.108 Z-1.981 B14.698 C72.025 +G01 X+23.787 Y-9.193 B14.701 C70.667 +G01 X+23.832 Y-9.208 Z-1.982 B14.702 C70.434 +G01 X+24.081 Y-9.303 Z-1.981 B14.698 C69.099 +G01 X+24.329 Y-9.398 B14.701 C67.764 +G01 X+24.383 Y-9.419 Z-1.982 B14.702 C67.485 +G01 X+24.622 Y-9.525 Z-1.981 B14.698 C66.172 +G01 X+24.86 Y-9.631 B14.701 C64.86 +G01 X+24.922 Y-9.659 Z-1.982 B14.702 C64.536 +G01 X+25.151 Y-9.775 Z-1.981 B14.698 C63.246 +G01 X+25.379 Y-9.891 B14.701 C61.957 +G01 X+25.448 Y-9.926 Z-1.982 B14.702 C61.586 +G01 X+25.666 Y-10.051 Z-1.981 B14.698 C60.32 +G01 X+25.884 Y-10.177 B14.7 C59.053 +G01 X+25.959 Y-10.22 Z-1.982 B14.702 C58.637 +G01 X+26.167 Y-10.353 Z-1.981 B14.698 C57.393 +G01 X+26.374 Y-10.488 B14.7 C56.149 +G01 X+26.454 Y-10.539 Z-1.982 B14.702 C55.688 +G01 X+26.651 Y-10.681 Z-1.981 B14.698 C54.467 +G01 X+26.848 Y-10.823 B14.7 C53.246 +G01 X+26.933 Y-10.884 Z-1.982 B14.702 C52.738 +G01 X+27.163 Y-11.068 Z-1.981 B14.697 C51.264 +G01 X+27.393 Y-11.253 Z-1.982 B14.702 C49.789 +G01 X+27.614 Y-11.45 Z-1.981 B14.697 C48.313 +G01 X+27.835 Y-11.646 Z-1.982 B14.702 C46.836 +G01 X+28.044 Y-11.853 Z-1.981 B14.697 C45.366 +G01 X+28.253 Y-12.06 Z-1.982 B14.702 C43.895 +G01 X+28.452 Y-12.277 Z-1.981 B14.697 C42.419 +G01 X+28.651 Y-12.495 Z-1.982 B14.702 C40.943 +G01 X+28.839 Y-12.723 Z-1.981 C39.466 +G01 X+29.026 Y-12.95 Z-1.982 C37.989 +G01 X+29.281 Y-13.294 Z-1.981 B14.699 C35.825 +G01 X+29.377 Y-13.424 Z-1.982 B14.702 C35.036 +G01 X+29.608 Y-13.773 Z-1.981 B14.699 C32.922 +G01 X+29.703 Y-13.916 Z-1.982 B14.702 C32.084 +G01 X+29.911 Y-14.268 Z-1.981 B14.699 C30.018 +G01 X+30.003 Y-14.423 Z-1.982 B14.702 C29.131 +G01 X+30.189 Y-14.777 Z-1.981 B14.698 C27.115 +G01 X+30.277 Y-14.946 Z-1.982 B14.702 C26.178 +G01 X+30.385 Y-15.18 Z-1.981 B14.697 C24.894 +G01 X+30.492 Y-15.414 B14.7 C23.61 +G01 X+30.524 Y-15.481 Z-1.982 B14.702 C23.225 +G01 X+30.617 Y-15.716 Z-1.981 B14.697 C21.966 +G01 X+30.711 Y-15.951 B14.699 C20.707 +G01 X+30.742 Y-16.029 Z-1.982 B14.702 C20.272 +G01 X+30.822 Y-16.264 Z-1.981 B14.697 C19.038 +G01 X+30.902 Y-16.499 B14.699 C17.804 +G01 X+30.932 Y-16.587 Z-1.982 B14.703 C17.319 +G01 X+30.999 Y-16.821 Z-1.981 B14.698 C16.11 +G01 X+31.065 Y-17.056 B14.699 C14.9 +G01 X+31.094 Y-17.155 Z-1.982 B14.703 C14.366 +G01 X+31.147 Y-17.387 Z-1.981 B14.698 C13.182 +G01 X+31.2 Y-17.62 B14.699 C11.997 +G01 X+31.225 Y-17.73 Z-1.982 B14.703 C11.413 +G01 X+31.266 Y-17.96 Z-1.981 B14.698 C10.254 +G01 X+31.306 Y-18.19 C9.094 +G01 X+31.327 Y-18.31 Z-1.982 B14.703 C8.46 +G01 X+31.355 Y-18.538 Z-1.981 B14.698 C7.326 +G01 X+31.383 Y-18.765 C6.191 +G01 X+31.399 Y-18.896 Z-1.982 B14.703 C5.507 +G01 X+31.431 Y-19.343 Z-1.981 B14.698 C3.288 +G01 X+31.441 Y-19.507 Z-1.982 B14.702 C2.442 +G01 X+31.447 Y-19.797 Z-1.981 B14.698 C0.991 +G01 X+31.452 Y-20.087 Z-1.982 B14.702 C359.54 +G01 X+31.443 Y-20.375 Z-1.981 B14.698 C358.097 +G01 X+31.433 Y-20.663 Z-1.982 B14.703 C356.655 +G01 X+31.409 Y-20.957 Z-1.981 C355.181 +G01 X+31.384 Y-21.251 Z-1.982 C353.706 +G01 X+31.345 Y-21.543 Z-1.981 C352.232 +G01 X+31.305 Y-21.835 Z-1.982 C350.757 +G01 X+31.25 Y-22.125 Z-1.981 B14.698 C349.282 +G01 X+31.195 Y-22.415 Z-1.982 B14.703 C347.807 +G01 X+31.13 Y-22.685 Z-1.981 B14.698 C346.415 +G01 X+31.064 Y-22.955 Z-1.982 B14.702 C345.022 +G01 X+31.056 Y-22.988 B14.703 C344.858 +G01 X+30.978 Y-23.25 Z-1.981 B14.698 C343.489 +G01 X+30.9 Y-23.512 B14.701 C342.119 +G01 X+30.888 Y-23.553 Z-1.982 B14.703 C341.909 +G01 X+30.798 Y-23.806 Z-1.981 B14.698 C340.562 +G01 X+30.708 Y-24.059 B14.701 C339.215 +G01 X+30.69 Y-24.109 Z-1.982 B14.702 C338.959 +G01 X+30.589 Y-24.353 Z-1.981 B14.698 C337.636 +G01 X+30.488 Y-24.596 B14.701 C336.312 +G01 X+30.464 Y-24.654 Z-1.982 B14.702 C336.01 +G01 X+30.353 Y-24.888 Z-1.981 B14.698 C334.709 +G01 X+30.242 Y-25.121 B14.701 C333.408 +G01 X+30.211 Y-25.186 Z-1.982 B14.702 C333.061 +G01 X+30.09 Y-25.41 Z-1.981 B14.698 C331.783 +G01 X+29.969 Y-25.634 B14.7 C330.505 +G01 X+29.93 Y-25.705 Z-1.982 B14.702 C330.112 +G01 X+29.801 Y-25.918 Z-1.981 B14.698 C328.856 +G01 X+29.671 Y-26.131 B14.7 C327.601 +G01 X+29.624 Y-26.209 Z-1.982 B14.702 C327.162 +G01 X+29.458 Y-26.452 Z-1.981 B14.697 C325.688 +G01 X+29.291 Y-26.696 Z-1.982 B14.702 C324.213 +G01 X+29.1 Y-26.947 Z-1.981 B14.697 C322.643 +G01 X+28.934 Y-27.165 Z-1.982 B14.702 C321.264 +G01 X+28.744 Y-27.391 Z-1.981 C319.789 +G01 X+28.554 Y-27.616 Z-1.982 C318.314 +G01 X+28.352 Y-27.831 Z-1.981 C316.843 +G01 X+28.15 Y-28.046 Z-1.982 C315.372 +G01 X+27.938 Y-28.251 Z-1.981 B14.697 C313.895 +G01 X+27.725 Y-28.455 Z-1.982 B14.702 C312.419 +G01 X+27.503 Y-28.648 Z-1.981 B14.697 C310.942 +G01 X+27.28 Y-28.841 Z-1.982 B14.702 C309.466 +G01 X+27.047 Y-29.023 Z-1.981 C307.99 +G01 X+26.815 Y-29.204 Z-1.982 C306.513 +G01 X+26.468 Y-29.447 Z-1.981 B14.699 C304.374 +G01 X+26.332 Y-29.543 Z-1.982 B14.702 C303.56 +G01 X+25.981 Y-29.763 Z-1.981 B14.699 C301.47 +G01 X+25.832 Y-29.856 Z-1.982 B14.702 C300.607 +G01 X+25.479 Y-30.053 Z-1.981 B14.699 C298.567 +G01 X+25.317 Y-30.143 Z-1.982 B14.702 C297.654 +G01 X+24.963 Y-30.318 Z-1.981 B14.698 C295.663 +G01 X+24.788 Y-30.404 Z-1.982 B14.702 C294.701 +G01 X+24.554 Y-30.505 Z-1.981 B14.697 C293.43 +G01 X+24.319 Y-30.605 B14.699 C292.159 +G01 X+24.246 Y-30.636 Z-1.982 B14.702 C291.748 +G01 X+24.011 Y-30.723 Z-1.981 B14.697 C290.502 +G01 X+23.776 Y-30.81 B14.699 C289.255 +G01 X+23.693 Y-30.841 Z-1.982 B14.702 C288.795 +G01 X+23.458 Y-30.914 Z-1.981 B14.698 C287.574 +G01 X+23.224 Y-30.987 B14.699 C286.352 +G01 X+23.13 Y-31.017 Z-1.982 B14.703 C285.843 +G01 X+22.897 Y-31.077 Z-1.981 B14.698 C284.646 +G01 X+22.663 Y-31.136 B14.699 C283.449 +G01 X+22.559 Y-31.163 Z-1.982 B14.703 C282.89 +G01 X+22.327 Y-31.21 Z-1.981 B14.698 C281.718 +G01 X+22.096 Y-31.257 C280.546 +G01 X+21.981 Y-31.28 Z-1.982 B14.703 C279.937 +G01 X+21.752 Y-31.314 Z-1.981 B14.698 C278.79 +G01 X+21.523 Y-31.348 C277.643 +G01 X+21.397 Y-31.367 Z-1.982 B14.703 C276.984 +G01 X+20.946 Y-31.411 Z-1.981 B14.698 C274.739 +G01 X+20.81 Y-31.424 Z-1.982 B14.703 C274.031 +G01 X+20.507 Y-31.437 Z-1.981 B14.697 C272.511 +G01 X+20.203 Y-31.45 Z-1.982 B14.702 C270.991 +G01 X+19.917 Y-31.449 Z-1.981 B14.698 C269.56 +G01 X+19.631 Y-31.447 Z-1.982 B14.703 C268.13 +G01 X+19.337 Y-31.43 Z-1.981 C266.655 +G01 X+19.043 Y-31.412 Z-1.982 C265.181 +G01 X+18.749 Y-31.381 Z-1.981 C263.706 +G01 X+18.456 Y-31.348 Z-1.982 C262.232 +G01 X+18.165 Y-31.301 Z-1.981 B14.698 C260.757 +G01 X+17.874 Y-31.254 Z-1.982 B14.703 C259.282 +G01 X+17.586 Y-31.192 Z-1.981 B14.698 C257.807 +G01 X+17.298 Y-31.129 Z-1.982 B14.703 C256.333 +G01 X+17.032 Y-31.058 Z-1.981 B14.698 C254.952 +G01 X+16.766 Y-30.985 Z-1.982 B14.702 C253.571 +G01 X+16.728 Y-30.975 B14.703 C253.384 +G01 X+16.471 Y-30.892 Z-1.981 B14.698 C252.025 +G01 X+16.213 Y-30.807 B14.701 C250.667 +G01 X+16.168 Y-30.792 Z-1.982 B14.702 C250.434 +G01 X+15.919 Y-30.697 Z-1.981 B14.698 C249.099 +G01 X+15.671 Y-30.601 B14.701 C247.764 +G01 X+15.617 Y-30.581 Z-1.982 B14.702 C247.485 +G01 X+15.348 Y-30.461 Z-1.981 B14.698 C246.01 +G01 X+15.078 Y-30.341 Z-1.982 B14.702 C244.536 +G01 X+14.849 Y-30.225 Z-1.981 B14.698 C243.246 +G01 X+14.621 Y-30.109 B14.7 C241.956 +G01 X+14.504 Y-30.049 Z-1.982 B14.703 C241.352 +G01 X+14.269 Y-29.913 Z-1.981 B14.699 C239.974 +G01 X+14.034 Y-29.776 Z-1.982 B14.703 C238.596 +G01 X+13.829 Y-29.644 Z-1.981 B14.698 C237.373 +G01 X+13.626 Y-29.512 B14.7 C236.15 +G01 X+13.546 Y-29.461 Z-1.982 B14.702 C235.689 +G01 X+13.349 Y-29.319 Z-1.981 B14.698 C234.467 +G01 X+13.152 Y-29.177 B14.7 C233.246 +G01 X+13.067 Y-29.116 Z-1.982 B14.702 C232.738 +G01 X+12.837 Y-28.931 Z-1.981 B14.697 C231.264 +G01 X+12.607 Y-28.747 Z-1.982 B14.702 C229.789 +G01 X+12.386 Y-28.55 Z-1.981 B14.697 C228.313 +G01 X+12.165 Y-28.353 Z-1.982 B14.701 C226.836 +G01 X+11.921 Y-28.112 Z-1.981 B14.698 C225.111 +G01 Y-27.979 Z-1.956 B14.575 C224.62 +G01 X+11.816 Y-27.876 Z-1.957 B14.577 C223.904 +G01 X+11.619 Y-27.66 Z-1.956 B14.573 C222.427 +G01 X+11.422 Y-27.444 Z-1.957 B14.577 C220.951 +G01 X+11.235 Y-27.218 Z-1.956 C219.475 +G01 X+11.05 Y-26.992 Z-1.957 B14.578 C217.999 +G01 X+10.913 Y-26.809 Z-1.956 B14.573 C216.833 +G01 X+10.777 Y-26.625 B14.575 C215.667 +G01 X+10.702 Y-26.522 Z-1.957 B14.578 C215.046 +G01 X+10.577 Y-26.336 Z-1.956 B14.573 C213.905 +G01 X+10.454 Y-26.149 B14.575 C212.763 +G01 X+10.378 Y-26.035 Z-1.957 B14.578 C212.094 +G01 X+10.154 Y-25.657 Z-1.956 B14.575 C209.86 +G01 X+10.08 Y-25.532 Z-1.957 B14.578 C209.141 +G01 X+9.881 Y-25.151 Z-1.956 B14.574 C206.957 +G01 X+9.809 Y-25.014 Z-1.957 B14.578 C206.189 +G01 X+9.701 Y-24.781 Z-1.956 B14.573 C204.899 +G01 X+9.594 Y-24.548 Z-1.957 B14.575 C203.61 +G01 X+9.564 Y-24.483 B14.578 C203.236 +G01 X+9.471 Y-24.249 Z-1.956 B14.573 C201.972 +G01 X+9.377 Y-24.015 B14.575 C200.707 +G01 X+9.347 Y-23.939 Z-1.957 B14.578 C200.284 +G01 X+9.267 Y-23.706 Z-1.956 B14.573 C199.044 +G01 X+9.188 Y-23.472 B14.575 C197.804 +G01 X+9.158 Y-23.386 Z-1.957 B14.578 C197.331 +G01 X+9.092 Y-23.153 Z-1.956 B14.573 C196.116 +G01 X+9.026 Y-22.92 B14.574 C194.9 +G01 X+8.998 Y-22.823 Z-1.957 B14.578 C194.378 +G01 X+8.945 Y-22.592 Z-1.956 B14.573 C193.188 +G01 X+8.892 Y-22.36 B14.574 C191.997 +G01 X+8.868 Y-22.253 Z-1.957 B14.578 C191.426 +G01 X+8.827 Y-22.024 Z-1.956 B14.573 C190.26 +G01 X+8.787 Y-21.795 B14.574 C189.094 +G01 X+8.766 Y-21.677 Z-1.957 B14.578 C188.473 +G01 X+8.738 Y-21.451 Z-1.956 B14.573 C187.332 +G01 X+8.711 Y-21.224 B14.574 C186.191 +G01 X+8.695 Y-21.096 Z-1.957 B14.578 C185.521 +G01 X+8.663 Y-20.651 Z-1.956 B14.574 C183.288 +G01 X+8.654 Y-20.513 Z-1.957 B14.578 C182.568 +G01 X+8.645 Y-20.076 Z-1.956 B14.574 C180.384 +G01 X+8.642 Y-19.928 Z-1.957 B14.578 C179.616 +G01 X+8.656 Y-19.501 Z-1.956 B14.573 C177.481 +G01 X+8.661 Y-19.344 Z-1.957 B14.578 C176.663 +G01 X+8.685 Y-19.052 Z-1.956 B14.574 C175.187 +G01 X+8.71 Y-18.761 Z-1.957 B14.578 C173.711 +G01 X+8.751 Y-18.462 Z-1.956 B14.573 C172.191 +G01 X+8.792 Y-18.163 Z-1.957 B14.578 C170.67 +G01 X+8.844 Y-17.885 Z-1.956 B14.574 C169.24 +G01 X+8.897 Y-17.607 Z-1.957 B14.578 C167.811 +G01 X+8.966 Y-17.322 Z-1.956 C166.336 +G01 X+9.035 Y-17.038 Z-1.957 C164.862 +G01 X+9.118 Y-16.758 Z-1.956 C163.387 +G01 X+9.202 Y-16.478 Z-1.957 C161.913 +G01 X+9.3 Y-16.202 Z-1.956 B14.574 C160.439 +G01 X+9.398 Y-15.926 Z-1.957 B14.578 C158.964 +G01 X+9.509 Y-15.656 Z-1.956 B14.573 C157.49 +G01 X+9.621 Y-15.386 Z-1.957 B14.578 C156.015 +G01 X+9.739 Y-15.139 Z-1.956 B14.573 C154.633 +G01 X+9.856 Y-14.892 Z-1.957 B14.577 C153.25 +G01 X+9.873 Y-14.858 B14.578 C153.066 +G01 X+10 Y-14.621 Z-1.956 B14.573 C151.707 +G01 X+10.128 Y-14.385 Z-1.957 B14.577 C150.347 +G01 X+10.151 Y-14.343 B14.578 C150.117 +G01 X+10.288 Y-14.118 Z-1.956 B14.573 C148.78 +G01 X+10.426 Y-13.892 Z-1.957 B14.576 C147.443 +G01 X+10.455 Y-13.844 B14.578 C147.168 +G01 X+10.601 Y-13.629 Z-1.956 B14.573 C145.854 +G01 X+10.747 Y-13.415 Z-1.957 B14.576 C144.539 +G01 X+10.785 Y-13.361 B14.578 C144.22 +G01 X+10.939 Y-13.158 Z-1.956 B14.573 C142.928 +G01 X+11.093 Y-12.955 Z-1.957 B14.576 C141.636 +G01 X+11.139 Y-12.895 B14.577 C141.271 +G01 X+11.327 Y-12.671 Z-1.956 B14.573 C139.796 +G01 X+11.516 Y-12.448 Z-1.957 B14.577 C138.322 +G01 X+11.716 Y-12.235 Z-1.956 B14.573 C136.851 +G01 X+11.916 Y-12.022 Z-1.957 B14.577 C135.38 +G01 X+12.127 Y-11.819 Z-1.956 B14.573 C133.904 +G01 X+12.338 Y-11.616 Z-1.957 B14.577 C132.428 +G01 X+12.558 Y-11.424 Z-1.956 B14.573 C130.951 +G01 X+12.779 Y-11.233 Z-1.957 B14.577 C129.475 +G01 X+12.961 Y-11.09 Z-1.956 B14.573 C128.297 +G01 X+13.144 Y-10.948 B14.575 C127.119 +G01 X+13.24 Y-10.873 Z-1.957 B14.578 C126.522 +G01 X+13.426 Y-10.742 Z-1.956 B14.573 C125.369 +G01 X+13.611 Y-10.612 B14.575 C124.215 +G01 X+13.719 Y-10.537 Z-1.957 B14.578 C123.57 +G01 X+14.095 Y-10.301 Z-1.956 B14.575 C121.312 +G01 X+14.215 Y-10.226 Z-1.957 B14.578 C120.617 +G01 X+14.594 Y-10.014 Z-1.956 B14.574 C118.408 +G01 X+14.725 Y-9.941 Z-1.957 B14.578 C117.665 +G01 X+14.957 Y-9.827 Z-1.956 B14.573 C116.363 +G01 X+15.189 Y-9.713 Z-1.957 B14.575 C115.062 +G01 X+15.25 Y-9.683 B14.578 C114.712 +G01 X+15.483 Y-9.582 Z-1.956 B14.573 C113.436 +G01 X+15.717 Y-9.482 Z-1.957 B14.575 C112.159 +G01 X+15.788 Y-9.452 B14.578 C111.76 +G01 X+16.021 Y-9.365 Z-1.956 B14.573 C110.508 +G01 X+16.255 Y-9.279 B14.575 C109.255 +G01 X+16.336 Y-9.249 Z-1.957 B14.578 C108.807 +G01 X+16.569 Y-9.176 Z-1.956 B14.573 C107.58 +G01 X+16.803 Y-9.103 B14.575 C106.352 +G01 X+16.894 Y-9.075 Z-1.957 B14.578 C105.855 +G01 X+17.127 Y-9.015 Z-1.956 B14.573 C104.652 +G01 X+17.359 Y-8.956 B14.574 C103.449 +G01 X+17.461 Y-8.929 Z-1.957 B14.578 C102.902 +G01 X+17.691 Y-8.883 Z-1.956 B14.573 C101.724 +G01 X+17.922 Y-8.836 B14.574 C100.546 +G01 X+18.034 Y-8.813 Z-1.957 B14.578 C99.95 +G01 X+18.262 Y-8.779 Z-1.956 B14.573 C98.796 +G01 X+18.49 Y-8.745 B14.574 C97.642 +G01 X+18.613 Y-8.727 Z-1.957 B14.578 C96.997 +G01 X+19.062 Y-8.683 Z-1.956 B14.574 C94.739 +G01 X+19.195 Y-8.67 Z-1.957 B14.578 C94.045 +G01 X+19.636 Y-8.651 Z-1.956 B14.574 C91.836 +G01 X+19.779 Y-8.644 Z-1.957 B14.578 C91.092 +G01 X+20.212 Y-8.647 Z-1.956 B14.573 C88.933 +G01 X+20.364 Y-8.648 Z-1.957 B14.578 C88.14 +G01 X+20.786 Y-8.672 Z-1.956 B14.573 C86.029 +G01 X+20.948 Y-8.682 Z-1.957 B14.578 C85.187 +G01 X+21.239 Y-8.713 Z-1.956 B14.574 C83.711 +G01 X+21.529 Y-8.745 Z-1.957 B14.578 C82.235 +G01 X+21.818 Y-8.792 Z-1.956 C80.76 +G01 X+22.107 Y-8.839 Z-1.957 C79.285 +G01 X+22.393 Y-8.9 Z-1.956 C77.811 +G01 X+22.678 Y-8.962 Z-1.957 C76.336 +G01 X+22.961 Y-9.038 Z-1.956 C74.862 +G01 X+23.243 Y-9.115 Z-1.957 C73.387 +G01 X+23.521 Y-9.205 Z-1.956 B14.574 C71.913 +G01 X+23.799 Y-9.296 Z-1.957 B14.578 C70.438 +G01 X+24.072 Y-9.401 Z-1.956 B14.574 C68.964 +G01 X+24.345 Y-9.506 Z-1.957 B14.578 C67.49 +G01 X+24.597 Y-9.618 Z-1.956 B14.574 C66.096 +G01 X+24.849 Y-9.73 Z-1.957 B14.577 C64.702 +G01 X+24.88 Y-9.744 B14.578 C64.541 +G01 X+25.121 Y-9.866 Z-1.956 B14.573 C63.17 +G01 X+25.363 Y-9.989 Z-1.957 B14.577 C61.798 +G01 X+25.401 Y-10.008 B14.578 C61.592 +G01 X+25.632 Y-10.141 Z-1.956 B14.573 C60.243 +G01 X+25.863 Y-10.274 Z-1.957 B14.577 C58.895 +G01 X+25.908 Y-10.3 B14.578 C58.643 +G01 X+26.128 Y-10.441 Z-1.956 B14.573 C57.317 +G01 X+26.348 Y-10.583 Z-1.957 B14.576 C55.991 +G01 X+26.4 Y-10.617 B14.578 C55.694 +G01 X+26.609 Y-10.767 Z-1.956 B14.573 C54.391 +G01 X+26.817 Y-10.917 Z-1.957 B14.576 C53.088 +G01 X+26.874 Y-10.959 B14.577 C52.745 +G01 X+27.071 Y-11.116 Z-1.956 B14.573 C51.465 +G01 X+27.268 Y-11.274 Z-1.957 B14.576 C50.184 +G01 X+27.331 Y-11.324 B14.577 C49.796 +G01 X+27.549 Y-11.519 Z-1.956 B14.573 C48.322 +G01 X+27.768 Y-11.713 Z-1.957 B14.577 C46.847 +G01 X+27.976 Y-11.919 Z-1.956 B14.573 C45.376 +G01 X+28.184 Y-12.124 Z-1.957 B14.577 C43.904 +G01 X+28.381 Y-12.34 Z-1.956 B14.573 C42.428 +G01 X+28.579 Y-12.556 Z-1.957 B14.577 C40.951 +G01 X+28.765 Y-12.781 Z-1.956 C39.475 +G01 X+28.95 Y-13.007 Z-1.957 B14.578 C37.999 +G01 X+29.087 Y-13.191 Z-1.956 B14.573 C36.833 +G01 X+29.223 Y-13.375 B14.575 C35.667 +G01 X+29.298 Y-13.477 Z-1.957 B14.578 C35.046 +G01 X+29.423 Y-13.664 Z-1.956 B14.573 C33.905 +G01 X+29.546 Y-13.851 B14.575 C32.763 +G01 X+29.622 Y-13.965 Z-1.957 B14.578 C32.094 +G01 X+29.846 Y-14.343 Z-1.956 B14.575 C29.86 +G01 X+29.92 Y-14.468 Z-1.957 B14.578 C29.141 +G01 X+30.119 Y-14.849 Z-1.956 B14.574 C26.957 +G01 X+30.191 Y-14.986 Z-1.957 B14.578 C26.189 +G01 X+30.299 Y-15.219 Z-1.956 B14.573 C24.899 +G01 X+30.406 Y-15.452 Z-1.957 B14.575 C23.61 +G01 X+30.436 Y-15.517 B14.578 C23.236 +G01 X+30.529 Y-15.751 Z-1.956 B14.573 C21.972 +G01 X+30.623 Y-15.985 B14.575 C20.707 +G01 X+30.653 Y-16.061 Z-1.957 B14.578 C20.284 +G01 X+30.733 Y-16.294 Z-1.956 B14.573 C19.044 +G01 X+30.812 Y-16.528 B14.575 C17.804 +G01 X+30.842 Y-16.614 Z-1.957 B14.578 C17.331 +G01 X+30.908 Y-16.847 Z-1.956 B14.573 C16.116 +G01 X+30.974 Y-17.08 B14.574 C14.9 +G01 X+31.002 Y-17.177 Z-1.957 B14.578 C14.378 +G01 X+31.055 Y-17.408 Z-1.956 B14.573 C13.188 +G01 X+31.108 Y-17.639 B14.574 C11.997 +G01 X+31.132 Y-17.747 Z-1.957 B14.578 C11.426 +G01 X+31.173 Y-17.976 Z-1.956 B14.573 C10.26 +G01 X+31.213 Y-18.205 B14.574 C9.094 +G01 X+31.234 Y-18.323 Z-1.957 B14.578 C8.473 +G01 X+31.262 Y-18.549 Z-1.956 B14.573 C7.332 +G01 X+31.289 Y-18.775 B14.574 C6.191 +G01 X+31.305 Y-18.903 Z-1.957 B14.578 C5.521 +G01 X+31.337 Y-19.349 Z-1.956 B14.574 C3.288 +G01 X+31.346 Y-19.487 Z-1.957 B14.578 C2.568 +G01 X+31.355 Y-19.924 Z-1.956 B14.574 C0.384 +G01 X+31.358 Y-20.072 Z-1.957 B14.578 C359.616 +G01 X+31.344 Y-20.499 Z-1.956 B14.573 C357.481 +G01 X+31.339 Y-20.656 Z-1.957 B14.578 C356.663 +G01 X+31.315 Y-20.948 Z-1.956 B14.574 C355.187 +G01 X+31.29 Y-21.239 Z-1.957 B14.578 C353.711 +G01 X+31.249 Y-21.538 Z-1.956 B14.573 C352.191 +G01 X+31.208 Y-21.837 Z-1.957 B14.578 C350.67 +G01 X+31.156 Y-22.115 Z-1.956 B14.574 C349.24 +G01 X+31.103 Y-22.393 Z-1.957 B14.578 C347.811 +G01 X+31.034 Y-22.678 Z-1.956 C346.336 +G01 X+30.965 Y-22.962 Z-1.957 C344.862 +G01 X+30.882 Y-23.242 Z-1.956 C343.387 +G01 X+30.798 Y-23.522 Z-1.957 C341.913 +G01 X+30.7 Y-23.798 Z-1.956 B14.574 C340.439 +G01 X+30.602 Y-24.073 Z-1.957 B14.578 C338.964 +G01 X+30.491 Y-24.344 Z-1.956 B14.573 C337.49 +G01 X+30.379 Y-24.614 Z-1.957 B14.578 C336.015 +G01 X+30.261 Y-24.861 Z-1.956 B14.573 C334.633 +G01 X+30.144 Y-25.108 Z-1.957 B14.577 C333.25 +G01 X+30.127 Y-25.142 B14.578 C333.066 +G01 X+30 Y-25.379 Z-1.956 B14.573 C331.707 +G01 X+29.872 Y-25.615 Z-1.957 B14.577 C330.347 +G01 X+29.849 Y-25.657 B14.578 C330.117 +G01 X+29.712 Y-25.882 Z-1.956 B14.573 C328.78 +G01 X+29.575 Y-26.108 Z-1.957 B14.576 C327.443 +G01 X+29.545 Y-26.156 B14.578 C327.168 +G01 X+29.399 Y-26.37 Z-1.956 B14.573 C325.854 +G01 X+29.253 Y-26.585 Z-1.957 B14.576 C324.539 +G01 X+29.215 Y-26.639 B14.578 C324.22 +G01 X+29.061 Y-26.842 Z-1.956 B14.573 C322.928 +G01 X+28.907 Y-27.045 Z-1.957 B14.576 C321.636 +G01 X+28.861 Y-27.105 B14.577 C321.271 +G01 X+28.673 Y-27.328 Z-1.956 B14.573 C319.796 +G01 X+28.484 Y-27.552 Z-1.957 B14.577 C318.322 +G01 X+28.284 Y-27.765 Z-1.956 B14.573 C316.851 +G01 X+28.084 Y-27.978 Z-1.957 B14.577 C315.38 +G01 X+27.873 Y-28.181 Z-1.956 B14.573 C313.904 +G01 X+27.662 Y-28.384 Z-1.957 B14.577 C312.428 +G01 X+27.442 Y-28.576 Z-1.956 B14.573 C310.951 +G01 X+27.221 Y-28.767 Z-1.957 B14.577 C309.475 +G01 X+27.039 Y-28.91 Z-1.956 B14.573 C308.297 +G01 X+26.856 Y-29.052 B14.575 C307.119 +G01 X+26.76 Y-29.127 Z-1.957 B14.578 C306.522 +G01 X+26.574 Y-29.258 Z-1.956 B14.573 C305.369 +G01 X+26.389 Y-29.388 B14.575 C304.215 +G01 X+26.281 Y-29.463 Z-1.957 B14.578 C303.57 +G01 X+25.905 Y-29.699 Z-1.956 B14.575 C301.312 +G01 X+25.785 Y-29.774 Z-1.957 B14.578 C300.617 +G01 X+25.406 Y-29.986 Z-1.956 B14.574 C298.408 +G01 X+25.275 Y-30.059 Z-1.957 B14.578 C297.665 +G01 X+25.043 Y-30.173 Z-1.956 B14.573 C296.363 +G01 X+24.811 Y-30.287 Z-1.957 B14.575 C295.062 +G01 X+24.75 Y-30.317 B14.578 C294.712 +G01 X+24.517 Y-30.417 Z-1.956 B14.573 C293.436 +G01 X+24.283 Y-30.517 Z-1.957 B14.575 C292.159 +G01 X+24.212 Y-30.548 B14.578 C291.76 +G01 X+23.979 Y-30.634 Z-1.956 B14.573 C290.508 +G01 X+23.745 Y-30.721 B14.575 C289.255 +G01 X+23.664 Y-30.751 Z-1.957 B14.578 C288.807 +G01 X+23.431 Y-30.824 Z-1.956 B14.573 C287.58 +G01 X+23.197 Y-30.897 B14.575 C286.352 +G01 X+23.106 Y-30.925 Z-1.957 B14.578 C285.855 +G01 X+22.873 Y-30.985 Z-1.956 B14.573 C284.652 +G01 X+22.641 Y-31.044 B14.574 C283.449 +G01 X+22.539 Y-31.071 Z-1.957 B14.578 C282.902 +G01 X+22.309 Y-31.117 Z-1.956 B14.573 C281.724 +G01 X+22.078 Y-31.164 B14.574 C280.546 +G01 X+21.966 Y-31.187 Z-1.957 B14.578 C279.95 +G01 X+21.738 Y-31.221 Z-1.956 B14.573 C278.796 +G01 X+21.51 Y-31.255 B14.574 C277.642 +G01 X+21.387 Y-31.273 Z-1.957 B14.578 C276.997 +G01 X+20.938 Y-31.316 Z-1.956 B14.574 C274.739 +G01 X+20.805 Y-31.329 Z-1.957 B14.578 C274.045 +G01 X+20.364 Y-31.349 Z-1.956 B14.574 C271.836 +G01 X+20.221 Y-31.356 Z-1.957 B14.578 C271.092 +G01 X+19.789 Y-31.353 Z-1.956 B14.573 C268.933 +G01 X+19.636 Y-31.352 Z-1.957 B14.578 C268.14 +G01 X+19.214 Y-31.328 Z-1.956 B14.573 C266.029 +G01 X+19.052 Y-31.318 Z-1.957 B14.578 C265.187 +G01 X+18.761 Y-31.287 Z-1.956 B14.574 C263.711 +G01 X+18.471 Y-31.255 Z-1.957 B14.578 C262.235 +G01 X+18.182 Y-31.208 Z-1.956 C260.76 +G01 X+17.893 Y-31.161 Z-1.957 C259.285 +G01 X+17.607 Y-31.099 Z-1.956 C257.811 +G01 X+17.322 Y-31.038 Z-1.957 C256.336 +G01 X+17.039 Y-30.962 Z-1.956 C254.862 +G01 X+16.757 Y-30.885 Z-1.957 C253.387 +G01 X+16.479 Y-30.795 Z-1.956 B14.574 C251.913 +G01 X+16.201 Y-30.704 Z-1.957 B14.578 C250.438 +G01 X+15.928 Y-30.599 Z-1.956 B14.574 C248.964 +G01 X+15.655 Y-30.494 Z-1.957 B14.578 C247.49 +G01 X+15.403 Y-30.382 Z-1.956 B14.574 C246.096 +G01 X+15.151 Y-30.27 Z-1.957 B14.577 C244.702 +G01 X+15.121 Y-30.256 B14.578 C244.541 +G01 X+14.879 Y-30.134 Z-1.956 B14.573 C243.17 +G01 X+14.637 Y-30.011 Z-1.957 B14.577 C241.798 +G01 X+14.549 Y-29.966 B14.579 C241.352 +G01 X+14.316 Y-29.831 Z-1.956 B14.575 C239.976 +G01 X+14.084 Y-29.696 Z-1.957 B14.578 C238.6 +G01 X+13.868 Y-29.556 Z-1.956 B14.574 C237.296 +G01 X+13.652 Y-29.417 Z-1.957 B14.577 C235.991 +G01 X+13.6 Y-29.383 B14.578 C235.695 +G01 X+13.392 Y-29.233 Z-1.956 B14.573 C234.392 +G01 X+13.183 Y-29.083 Z-1.957 B14.576 C233.088 +G01 X+13.126 Y-29.041 B14.577 C232.745 +G01 X+12.929 Y-28.884 Z-1.956 B14.573 C231.465 +G01 X+12.732 Y-28.726 Z-1.957 B14.576 C230.184 +G01 X+12.669 Y-28.675 B14.577 C229.796 +G01 X+12.451 Y-28.481 Z-1.956 B14.573 C228.322 +G01 X+12.232 Y-28.287 Z-1.957 B14.577 C226.847 +G01 X+11.988 Y-28.045 Z-1.956 B14.573 C225.113 +G01 X+11.987 Y-27.912 Z-1.932 B14.451 C224.623 +G01 X+11.885 Y-27.811 B14.453 C223.912 +G01 X+11.69 Y-27.597 Z-1.931 B14.448 C222.436 +G01 X+11.494 Y-27.383 Z-1.932 B14.453 C220.96 +G01 X+11.317 Y-27.168 Z-1.931 B14.448 C219.543 +G01 X+11.14 Y-26.954 Z-1.932 B14.452 C218.126 +G01 X+11.125 Y-26.935 B14.453 C218.008 +G01 X+10.962 Y-26.716 Z-1.931 B14.448 C216.616 +G01 X+10.8 Y-26.496 Z-1.932 B14.452 C215.223 +G01 X+10.78 Y-26.469 B14.453 C215.056 +G01 X+10.631 Y-26.245 Z-1.931 B14.449 C213.688 +G01 X+10.482 Y-26.021 Z-1.932 B14.452 C212.32 +G01 X+10.459 Y-25.986 B14.453 C212.104 +G01 X+10.324 Y-25.759 Z-1.931 B14.449 C210.76 +G01 X+10.19 Y-25.531 Z-1.932 B14.451 C209.417 +G01 X+10.164 Y-25.487 B14.454 C209.151 +G01 X+10.043 Y-25.257 Z-1.931 B14.449 C207.832 +G01 X+9.922 Y-25.027 Z-1.932 B14.451 C206.513 +G01 X+9.894 Y-24.973 B14.454 C206.199 +G01 X+9.787 Y-24.742 Z-1.931 B14.449 C204.905 +G01 X+9.681 Y-24.51 Z-1.932 B14.451 C203.61 +G01 X+9.652 Y-24.447 B14.454 C203.247 +G01 X+9.559 Y-24.214 Z-1.931 B14.449 C201.977 +G01 X+9.466 Y-23.982 Z-1.932 B14.451 C200.707 +G01 X+9.436 Y-23.908 B14.454 C200.295 +G01 X+9.357 Y-23.676 Z-1.931 B14.449 C199.05 +G01 X+9.278 Y-23.443 Z-1.932 B14.45 C197.804 +G01 X+9.249 Y-23.359 B14.454 C197.343 +G01 X+9.183 Y-23.127 Z-1.931 B14.449 C196.122 +G01 X+9.117 Y-22.896 Z-1.932 B14.45 C194.9 +G01 X+9.091 Y-22.801 B14.454 C194.391 +G01 X+9.038 Y-22.571 Z-1.931 B14.449 C193.194 +G01 X+8.985 Y-22.341 Z-1.932 B14.45 C191.997 +G01 X+8.961 Y-22.236 B14.454 C191.439 +G01 X+8.921 Y-22.008 B14.449 C190.267 +G01 X+8.881 Y-21.78 B14.45 C189.094 +G01 X+8.86 Y-21.665 B14.454 C188.486 +G01 X+8.805 Y-21.214 B14.45 C186.191 +G01 X+8.789 Y-21.089 B14.454 C185.535 +G01 X+8.758 Y-20.646 B14.449 C183.288 +G01 X+8.748 Y-20.51 B14.454 C182.582 +G01 X+8.74 Y-20.075 B14.449 C180.384 +G01 X+8.737 Y-19.93 B14.454 C179.63 +G01 X+8.75 Y-19.505 B14.449 C177.481 +G01 X+8.755 Y-19.351 B14.454 C176.678 +G01 X+8.79 Y-18.936 B14.449 C174.578 +G01 X+8.804 Y-18.773 B14.454 C173.726 +G01 X+8.858 Y-18.37 B14.449 C171.675 +G01 X+8.882 Y-18.198 B14.454 C170.774 +G01 X+8.935 Y-17.913 Z-1.931 B14.449 C169.298 +G01 X+8.989 Y-17.628 Z-1.932 B14.454 C167.822 +G01 X+9.057 Y-17.346 Z-1.931 C166.346 +G01 X+9.126 Y-17.064 Z-1.932 C164.87 +G01 X+9.208 Y-16.786 Z-1.931 C163.394 +G01 X+9.291 Y-16.508 Z-1.932 C161.918 +G01 X+9.388 Y-16.235 Z-1.931 B14.449 C160.443 +G01 X+9.485 Y-15.962 Z-1.932 B14.454 C158.969 +G01 X+9.596 Y-15.694 Z-1.931 B14.449 C157.494 +G01 X+9.707 Y-15.426 Z-1.932 B14.454 C156.02 +G01 X+9.832 Y-15.164 Z-1.931 B14.449 C154.546 +G01 X+9.956 Y-14.902 Z-1.932 B14.454 C153.072 +G01 X+10.094 Y-14.647 Z-1.931 B14.449 C151.597 +G01 X+10.232 Y-14.392 Z-1.932 B14.454 C150.123 +G01 X+10.383 Y-14.144 Z-1.931 B14.449 C148.649 +G01 X+10.534 Y-13.896 Z-1.932 B14.453 C147.174 +G01 X+10.688 Y-13.67 Z-1.931 B14.449 C145.778 +G01 X+10.842 Y-13.444 Z-1.932 B14.453 C144.382 +G01 X+10.877 Y-13.395 B14.452 C144.094 +G01 X+11.05 Y-13.168 Z-1.931 B14.448 C142.642 +G01 X+11.224 Y-12.941 Z-1.932 B14.452 C141.191 +G01 X+11.405 Y-12.727 Z-1.931 B14.448 C139.76 +G01 X+11.586 Y-12.512 Z-1.932 B14.453 C138.329 +G01 X+11.784 Y-12.301 Z-1.931 B14.448 C136.857 +G01 X+11.982 Y-12.089 Z-1.932 B14.453 C135.384 +G01 X+12.191 Y-11.888 Z-1.931 B14.448 C133.91 +G01 X+12.4 Y-11.687 Z-1.932 B14.453 C132.436 +G01 X+12.612 Y-11.503 Z-1.931 B14.448 C131.007 +G01 X+12.824 Y-11.319 Z-1.932 B14.452 C129.578 +G01 X+12.838 Y-11.307 B14.453 C129.484 +G01 X+13.056 Y-11.137 Z-1.931 B14.448 C128.079 +G01 X+13.273 Y-10.967 Z-1.932 B14.452 C126.675 +G01 X+13.295 Y-10.95 B14.453 C126.532 +G01 X+13.517 Y-10.794 Z-1.931 B14.448 C125.152 +G01 X+13.739 Y-10.638 Z-1.932 B14.452 C123.771 +G01 X+13.77 Y-10.616 B14.453 C123.58 +G01 X+13.996 Y-10.475 Z-1.931 B14.449 C122.224 +G01 X+14.222 Y-10.333 Z-1.932 B14.451 C120.868 +G01 X+14.261 Y-10.308 B14.453 C120.628 +G01 X+14.49 Y-10.18 Z-1.931 B14.449 C119.296 +G01 X+14.719 Y-10.053 Z-1.932 B14.451 C117.965 +G01 X+14.768 Y-10.026 B14.454 C117.675 +G01 X+14.999 Y-9.912 Z-1.931 B14.449 C116.369 +G01 X+15.23 Y-9.798 Z-1.932 B14.451 C115.062 +G01 X+15.288 Y-9.769 B14.454 C114.723 +G01 X+15.52 Y-9.67 Z-1.931 B14.449 C113.441 +G01 X+15.752 Y-9.57 Z-1.932 B14.451 C112.159 +G01 X+15.821 Y-9.54 B14.454 C111.771 +G01 X+16.054 Y-9.454 Z-1.931 B14.449 C110.513 +G01 X+16.286 Y-9.368 Z-1.932 B14.451 C109.255 +G01 X+16.365 Y-9.339 B14.454 C108.819 +G01 X+16.597 Y-9.267 Z-1.931 B14.449 C107.586 +G01 X+16.83 Y-9.194 Z-1.932 B14.45 C106.352 +G01 X+16.919 Y-9.166 B14.454 C105.867 +G01 X+17.15 Y-9.107 Z-1.931 B14.449 C104.658 +G01 X+17.381 Y-9.048 Z-1.932 B14.45 C103.449 +G01 X+17.481 Y-9.022 B14.454 C102.915 +G01 X+17.71 Y-8.975 Z-1.931 B14.449 C101.73 +G01 X+17.939 Y-8.929 Z-1.932 B14.45 C100.546 +G01 X+18.049 Y-8.907 B14.454 C99.963 +G01 X+18.276 Y-8.873 B14.449 C98.803 +G01 X+18.502 Y-8.839 B14.45 C97.642 +G01 X+18.623 Y-8.821 B14.454 C97.011 +G01 X+19.07 Y-8.778 B14.45 C94.739 +G01 X+19.2 Y-8.765 B14.454 C94.058 +G01 X+19.639 Y-8.745 B14.449 C91.836 +G01 X+19.78 Y-8.739 B14.454 C91.106 +G01 X+20.21 Y-8.741 B14.449 C88.933 +G01 X+20.36 Y-8.742 B14.454 C88.154 +G01 X+20.78 Y-8.767 B14.449 C86.03 +G01 X+20.939 Y-8.776 B14.454 C85.202 +G01 X+21.348 Y-8.821 B14.449 C83.126 +G01 X+21.515 Y-8.839 B14.454 C82.25 +G01 X+21.801 Y-8.885 Z-1.931 B14.449 C80.774 +G01 X+22.088 Y-8.932 Z-1.932 B14.454 C79.298 +G01 X+22.371 Y-8.993 Z-1.931 C77.822 +G01 X+22.655 Y-9.054 Z-1.932 C76.346 +G01 X+22.935 Y-9.129 Z-1.931 C74.87 +G01 X+23.215 Y-9.205 Z-1.932 C73.394 +G01 X+23.49 Y-9.295 Z-1.931 B14.449 C71.918 +G01 X+23.766 Y-9.385 Z-1.932 B14.454 C70.443 +G01 X+24.037 Y-9.489 Z-1.931 B14.449 C68.969 +G01 X+24.308 Y-9.593 Z-1.932 B14.454 C67.494 +G01 X+24.573 Y-9.71 Z-1.931 B14.449 C66.019 +G01 X+24.838 Y-9.829 Z-1.932 B14.454 C64.544 +G01 X+25.096 Y-9.959 Z-1.931 C63.071 +G01 X+25.355 Y-10.091 Z-1.932 C61.597 +G01 X+25.606 Y-10.235 Z-1.931 B14.449 C60.123 +G01 X+25.858 Y-10.38 Z-1.932 B14.453 C58.649 +G01 X+26.102 Y-10.537 Z-1.931 B14.449 C57.174 +G01 X+26.345 Y-10.694 Z-1.932 B14.453 C55.7 +G01 X+26.566 Y-10.853 Z-1.931 B14.449 C54.315 +G01 X+26.786 Y-11.011 Z-1.932 B14.453 C52.93 +G01 X+26.834 Y-11.048 B14.452 C52.643 +G01 X+27.051 Y-11.221 Z-1.931 B14.448 C51.223 +G01 X+27.268 Y-11.396 Z-1.932 B14.453 C49.803 +G01 X+27.485 Y-11.588 Z-1.931 B14.448 C48.329 +G01 X+27.702 Y-11.781 Z-1.932 B14.453 C46.855 +G01 X+27.908 Y-11.985 Z-1.931 C45.383 +G01 X+28.115 Y-12.189 Z-1.932 C43.912 +G01 X+28.31 Y-12.403 Z-1.931 B14.448 C42.436 +G01 X+28.506 Y-12.617 Z-1.932 B14.453 C40.96 +G01 X+28.683 Y-12.831 Z-1.931 B14.448 C39.543 +G01 X+28.86 Y-13.046 Z-1.932 B14.452 C38.126 +G01 X+28.875 Y-13.064 B14.453 C38.008 +G01 X+29.038 Y-13.284 Z-1.931 B14.448 C36.616 +G01 X+29.201 Y-13.504 Z-1.932 B14.452 C35.223 +G01 X+29.22 Y-13.531 B14.453 C35.056 +G01 X+29.369 Y-13.754 Z-1.931 B14.449 C33.688 +G01 X+29.518 Y-13.979 Z-1.932 B14.452 C32.32 +G01 X+29.541 Y-14.014 B14.453 C32.104 +G01 X+29.676 Y-14.241 Z-1.931 B14.449 C30.76 +G01 X+29.81 Y-14.468 Z-1.932 B14.451 C29.417 +G01 X+29.836 Y-14.513 B14.454 C29.151 +G01 X+29.957 Y-14.743 Z-1.931 B14.449 C27.833 +G01 X+30.078 Y-14.973 Z-1.932 B14.451 C26.513 +G01 X+30.106 Y-15.026 B14.454 C26.199 +G01 X+30.213 Y-15.258 Z-1.931 B14.449 C24.905 +G01 X+30.319 Y-15.489 Z-1.932 B14.451 C23.61 +G01 X+30.348 Y-15.553 B14.454 C23.247 +G01 X+30.441 Y-15.786 Z-1.931 B14.449 C21.977 +G01 X+30.534 Y-16.018 Z-1.932 B14.451 C20.707 +G01 X+30.564 Y-16.092 B14.454 C20.295 +G01 X+30.643 Y-16.324 Z-1.931 B14.449 C19.05 +G01 X+30.722 Y-16.557 Z-1.932 B14.45 C17.804 +G01 X+30.751 Y-16.641 B14.454 C17.343 +G01 X+30.817 Y-16.872 Z-1.931 B14.449 C16.122 +G01 X+30.883 Y-17.104 Z-1.932 B14.45 C14.9 +G01 X+30.909 Y-17.199 B14.454 C14.391 +G01 X+30.962 Y-17.429 Z-1.931 B14.449 C13.194 +G01 X+31.015 Y-17.659 Z-1.932 B14.45 C11.997 +G01 X+31.039 Y-17.764 B14.454 C11.439 +G01 X+31.079 Y-17.992 B14.449 C10.267 +G01 X+31.119 Y-18.22 B14.45 C9.094 +G01 X+31.14 Y-18.335 B14.454 C8.487 +G01 X+31.195 Y-18.786 B14.45 C6.191 +G01 X+31.211 Y-18.911 B14.454 C5.535 +G01 X+31.242 Y-19.354 B14.449 C3.288 +G01 X+31.252 Y-19.49 B14.454 C2.582 +G01 X+31.26 Y-19.924 B14.449 C0.384 +G01 X+31.263 Y-20.069 B14.454 C359.63 +G01 X+31.25 Y-20.495 B14.449 C357.481 +G01 X+31.245 Y-20.649 B14.454 C356.678 +G01 X+31.21 Y-21.064 B14.449 C354.578 +G01 X+31.196 Y-21.227 B14.454 C353.726 +G01 X+31.142 Y-21.63 B14.449 C351.675 +G01 X+31.118 Y-21.802 B14.454 C350.774 +G01 X+31.065 Y-22.087 Z-1.931 B14.449 C349.298 +G01 X+31.011 Y-22.372 Z-1.932 B14.454 C347.822 +G01 X+30.943 Y-22.654 Z-1.931 C346.346 +G01 X+30.874 Y-22.936 Z-1.932 C344.87 +G01 X+30.792 Y-23.214 Z-1.931 C343.394 +G01 X+30.709 Y-23.491 Z-1.932 C341.918 +G01 X+30.612 Y-23.765 Z-1.931 B14.449 C340.443 +G01 X+30.515 Y-24.038 Z-1.932 B14.454 C338.969 +G01 X+30.404 Y-24.306 Z-1.931 B14.449 C337.494 +G01 X+30.293 Y-24.574 Z-1.932 B14.454 C336.02 +G01 X+30.168 Y-24.836 Z-1.931 B14.449 C334.546 +G01 X+30.044 Y-25.098 Z-1.932 B14.454 C333.072 +G01 X+29.906 Y-25.353 Z-1.931 B14.449 C331.597 +G01 X+29.768 Y-25.608 Z-1.932 B14.454 C330.123 +G01 X+29.617 Y-25.856 Z-1.931 B14.449 C328.649 +G01 X+29.466 Y-26.103 Z-1.932 B14.453 C327.174 +G01 X+29.312 Y-26.33 Z-1.931 B14.449 C325.778 +G01 X+29.158 Y-26.556 Z-1.932 B14.453 C324.382 +G01 X+29.123 Y-26.605 B14.452 C324.094 +G01 X+28.95 Y-26.832 Z-1.931 B14.448 C322.642 +G01 X+28.776 Y-27.059 Z-1.932 B14.452 C321.191 +G01 X+28.595 Y-27.273 Z-1.931 B14.448 C319.76 +G01 X+28.414 Y-27.488 Z-1.932 B14.453 C318.329 +G01 X+28.216 Y-27.699 Z-1.931 B14.448 C316.857 +G01 X+28.018 Y-27.911 Z-1.932 B14.453 C315.384 +G01 X+27.809 Y-28.112 Z-1.931 B14.448 C313.91 +G01 X+27.6 Y-28.313 Z-1.932 B14.453 C312.436 +G01 X+27.388 Y-28.497 Z-1.931 B14.448 C311.007 +G01 X+27.176 Y-28.681 Z-1.932 B14.452 C309.578 +G01 X+27.162 Y-28.693 B14.453 C309.484 +G01 X+26.944 Y-28.863 Z-1.931 B14.448 C308.079 +G01 X+26.727 Y-29.033 Z-1.932 B14.452 C306.675 +G01 X+26.705 Y-29.05 B14.453 C306.532 +G01 X+26.483 Y-29.206 Z-1.931 B14.448 C305.152 +G01 X+26.261 Y-29.362 Z-1.932 B14.452 C303.771 +G01 X+26.23 Y-29.383 B14.453 C303.58 +G01 X+26.004 Y-29.525 Z-1.931 B14.449 C302.224 +G01 X+25.778 Y-29.667 Z-1.932 B14.451 C300.868 +G01 X+25.739 Y-29.692 B14.453 C300.628 +G01 X+25.51 Y-29.82 Z-1.931 B14.449 C299.296 +G01 X+25.281 Y-29.947 Z-1.932 B14.451 C297.965 +G01 X+25.232 Y-29.974 B14.454 C297.675 +G01 X+25.001 Y-30.088 Z-1.931 B14.449 C296.369 +G01 X+24.77 Y-30.201 Z-1.932 B14.451 C295.062 +G01 X+24.712 Y-30.23 B14.454 C294.723 +G01 X+24.48 Y-30.33 Z-1.931 B14.449 C293.441 +G01 X+24.248 Y-30.43 Z-1.932 B14.451 C292.159 +G01 X+24.179 Y-30.459 B14.454 C291.771 +G01 X+23.946 Y-30.546 Z-1.931 B14.449 C290.513 +G01 X+23.714 Y-30.631 Z-1.932 B14.451 C289.255 +G01 X+23.635 Y-30.661 B14.454 C288.819 +G01 X+23.403 Y-30.733 Z-1.931 B14.449 C287.586 +G01 X+23.171 Y-30.806 Z-1.932 B14.45 C286.352 +G01 X+23.081 Y-30.834 B14.454 C285.867 +G01 X+22.85 Y-30.893 Z-1.931 B14.449 C284.658 +G01 X+22.619 Y-30.952 Z-1.932 B14.45 C283.449 +G01 X+22.519 Y-30.978 B14.454 C282.915 +G01 X+22.29 Y-31.024 Z-1.931 B14.449 C281.73 +G01 X+22.061 Y-31.071 Z-1.932 B14.45 C280.546 +G01 X+21.951 Y-31.093 B14.454 C279.963 +G01 X+21.724 Y-31.127 B14.449 C278.803 +G01 X+21.498 Y-31.161 B14.45 C277.642 +G01 X+21.377 Y-31.179 B14.454 C277.011 +G01 X+20.93 Y-31.222 B14.45 C274.739 +G01 X+20.8 Y-31.235 B14.454 C274.058 +G01 X+20.361 Y-31.255 B14.449 C271.836 +G01 X+20.221 Y-31.261 B14.454 C271.106 +G01 X+19.79 Y-31.258 B14.449 C268.933 +G01 X+19.64 B14.454 C268.154 +G01 X+19.22 Y-31.233 B14.449 C266.03 +G01 X+19.061 Y-31.224 B14.454 C265.202 +G01 X+18.652 Y-31.179 B14.449 C263.126 +G01 X+18.485 Y-31.161 B14.454 C262.25 +G01 X+18.199 Y-31.115 Z-1.931 B14.449 C260.774 +G01 X+17.912 Y-31.068 Z-1.932 B14.454 C259.298 +G01 X+17.629 Y-31.007 Z-1.931 C257.822 +G01 X+17.345 Y-30.946 Z-1.932 C256.346 +G01 X+17.065 Y-30.871 Z-1.931 C254.87 +G01 X+16.785 Y-30.795 Z-1.932 C253.394 +G01 X+16.51 Y-30.705 Z-1.931 B14.449 C251.918 +G01 X+16.234 Y-30.615 Z-1.932 B14.454 C250.443 +G01 X+15.963 Y-30.511 Z-1.931 B14.449 C248.969 +G01 X+15.692 Y-30.407 Z-1.932 B14.454 C247.494 +G01 X+15.427 Y-30.289 Z-1.931 B14.449 C246.019 +G01 X+15.162 Y-30.171 Z-1.932 B14.454 C244.544 +G01 X+14.878 Y-30.027 Z-1.931 B14.449 C242.948 +G01 X+14.594 Y-29.883 Z-1.933 B14.455 C241.352 +G01 X+14.364 Y-29.75 Z-1.932 B14.45 C239.978 +G01 X+14.134 Y-29.616 Z-1.933 B14.454 C238.604 +G01 X+13.894 Y-29.461 Z-1.932 B14.449 C237.153 +G01 X+13.655 Y-29.306 B14.453 C235.702 +G01 X+13.434 Y-29.147 Z-1.931 B14.449 C234.316 +G01 X+13.214 Y-28.988 Z-1.932 B14.453 C232.93 +G01 X+13.166 Y-28.952 B14.452 C232.642 +G01 X+12.949 Y-28.778 Z-1.931 B14.448 C231.223 +G01 X+12.732 Y-28.604 Z-1.932 B14.453 C229.803 +G01 X+12.515 Y-28.411 Z-1.931 B14.448 C228.329 +G01 X+12.298 Y-28.219 Z-1.932 B14.453 C226.855 +G01 X+12.055 Y-27.978 Z-1.931 B14.449 C225.116 +G01 X+12.054 Y-27.845 Z-1.907 B14.326 C224.625 +G01 X+11.955 Y-27.747 Z-1.908 B14.329 C223.92 +G01 X+11.76 Y-27.535 Z-1.907 B14.324 C222.444 +G01 X+11.567 Y-27.322 Z-1.908 B14.329 C220.968 +G01 X+11.384 Y-27.1 Z-1.907 B14.324 C219.493 +G01 X+11.201 Y-26.878 Z-1.908 B14.329 C218.017 +G01 X+11.039 Y-26.66 Z-1.907 B14.324 C216.62 +G01 X+10.877 Y-26.441 Z-1.908 B14.328 C215.223 +G01 X+10.858 Y-26.416 B14.329 C215.065 +G01 X+10.71 Y-26.194 Z-1.907 B14.324 C213.693 +G01 X+10.562 Y-25.971 Z-1.908 B14.327 C212.32 +G01 X+10.54 Y-25.937 B14.329 C212.113 +G01 X+10.406 Y-25.711 Z-1.907 B14.324 C210.765 +G01 X+10.272 Y-25.485 Z-1.908 B14.327 C209.417 +G01 X+10.247 Y-25.442 B14.329 C209.162 +G01 X+10.127 Y-25.214 Z-1.907 B14.324 C207.838 +G01 X+10.007 Y-24.985 Z-1.908 B14.327 C206.514 +G01 X+9.98 Y-24.933 B14.329 C206.21 +G01 X+9.874 Y-24.703 Z-1.907 B14.324 C204.91 +G01 X+9.768 Y-24.472 Z-1.908 B14.327 C203.61 +G01 X+9.739 Y-24.411 B14.329 C203.258 +G01 X+9.647 Y-24.18 Z-1.907 B14.324 C201.983 +G01 X+9.554 Y-23.948 Z-1.908 B14.326 C200.707 +G01 X+9.526 Y-23.877 B14.329 C200.307 +G01 X+9.447 Y-23.645 Z-1.907 B14.325 C199.055 +G01 X+9.368 Y-23.414 Z-1.908 B14.326 C197.804 +G01 X+9.34 Y-23.332 B14.329 C197.355 +G01 X+9.274 Y-23.102 Z-1.907 B14.325 C196.128 +G01 X+9.209 Y-22.871 B14.326 C194.9 +G01 X+9.183 Y-22.779 Z-1.908 B14.329 C194.403 +G01 X+9.13 Y-22.55 Z-1.907 B14.325 C193.2 +G01 X+9.078 Y-22.321 B14.326 C191.997 +G01 X+9.054 Y-22.218 Z-1.908 B14.33 C191.451 +G01 X+9.014 Y-21.992 Z-1.907 B14.325 C190.273 +G01 X+8.974 Y-21.765 B14.326 C189.094 +G01 X+8.954 Y-21.652 Z-1.908 B14.33 C188.5 +G01 X+8.919 Y-21.367 Z-1.907 B14.325 C187.024 +G01 X+8.884 Y-21.081 Z-1.908 B14.33 C185.548 +G01 X+8.863 Y-20.794 Z-1.907 B14.325 C184.072 +G01 X+8.843 Y-20.508 Z-1.908 B14.33 C182.596 +G01 X+8.837 Y-20.22 Z-1.907 C181.121 +G01 X+8.832 Y-19.933 Z-1.908 C179.645 +G01 X+8.84 Y-19.645 Z-1.907 C178.169 +G01 X+8.85 Y-19.358 Z-1.908 C176.693 +G01 X+8.874 Y-19.071 Z-1.907 C175.217 +G01 X+8.898 Y-18.785 Z-1.908 C173.741 +G01 X+8.936 Y-18.5 Z-1.907 C172.265 +G01 X+8.975 Y-18.215 Z-1.908 C170.79 +G01 X+9.028 Y-17.932 Z-1.907 C169.314 +G01 X+9.082 Y-17.649 Z-1.908 C167.838 +G01 X+9.149 Y-17.37 Z-1.907 B14.325 C166.362 +G01 X+9.217 Y-17.09 Z-1.908 B14.33 C164.886 +G01 X+9.299 Y-16.815 Z-1.907 B14.325 C163.41 +G01 X+9.381 Y-16.539 Z-1.908 B14.33 C161.935 +G01 X+9.477 Y-16.268 Z-1.907 B14.325 C160.459 +G01 X+9.573 Y-15.997 Z-1.908 B14.33 C158.983 +G01 X+9.683 Y-15.731 Z-1.907 B14.325 C157.507 +G01 X+9.793 Y-15.466 Z-1.908 B14.329 C156.031 +G01 X+9.916 Y-15.206 Z-1.907 B14.325 C154.555 +G01 X+10.04 Y-14.946 Z-1.908 B14.329 C153.079 +G01 X+10.177 Y-14.693 Z-1.907 B14.325 C151.604 +G01 X+10.313 Y-14.44 Z-1.908 B14.329 C150.129 +G01 X+10.463 Y-14.195 Z-1.907 B14.325 C148.655 +G01 X+10.613 Y-13.949 Z-1.908 B14.329 C147.18 +G01 X+10.775 Y-13.711 Z-1.907 B14.325 C145.702 +G01 X+10.938 Y-13.472 Z-1.908 B14.329 C144.223 +G01 X+11.117 Y-13.236 Z-1.907 B14.324 C142.707 +G01 X+11.297 Y-13.001 Z-1.908 B14.328 C141.191 +G01 X+11.476 Y-12.788 Z-1.907 B14.324 C139.763 +G01 X+11.656 Y-12.576 Z-1.908 B14.329 C138.336 +G01 X+11.853 Y-12.366 Z-1.907 B14.324 C136.86 +G01 X+12.05 Y-12.156 Z-1.908 B14.329 C135.384 +G01 X+12.256 Y-11.957 Z-1.907 B14.324 C133.914 +G01 X+12.463 Y-11.758 Z-1.908 B14.329 C132.444 +G01 X+12.68 Y-11.569 Z-1.907 B14.324 C130.969 +G01 X+12.897 Y-11.381 Z-1.908 B14.329 C129.493 +G01 X+13.113 Y-11.212 Z-1.907 B14.324 C128.084 +G01 X+13.33 Y-11.043 Z-1.908 B14.328 C126.675 +G01 X+13.35 Y-11.027 B14.329 C126.541 +G01 X+13.571 Y-10.871 Z-1.907 B14.324 C125.156 +G01 X+13.792 Y-10.717 Z-1.908 B14.328 C123.772 +G01 X+13.821 Y-10.696 B14.329 C123.589 +G01 X+14.046 Y-10.555 Z-1.907 B14.324 C122.229 +G01 X+14.27 Y-10.414 Z-1.908 B14.327 C120.868 +G01 X+14.308 Y-10.39 B14.329 C120.638 +G01 X+14.536 Y-10.263 Z-1.907 B14.324 C119.301 +G01 X+14.763 Y-10.137 Z-1.908 B14.327 C117.965 +G01 X+14.811 Y-10.11 B14.329 C117.686 +G01 X+15.04 Y-9.997 Z-1.907 B14.324 C116.374 +G01 X+15.27 Y-9.884 Z-1.908 B14.327 C115.062 +G01 X+15.327 Y-9.856 B14.329 C114.734 +G01 X+15.557 Y-9.757 Z-1.907 B14.324 C113.447 +G01 X+15.788 Y-9.658 Z-1.908 B14.327 C112.159 +G01 X+15.855 Y-9.629 B14.329 C111.782 +G01 X+16.086 Y-9.543 Z-1.907 B14.325 C110.519 +G01 X+16.317 Y-9.458 Z-1.908 B14.326 C109.255 +G01 X+16.394 Y-9.429 B14.329 C108.831 +G01 X+16.625 Y-9.357 Z-1.907 B14.325 C107.592 +G01 X+16.856 Y-9.285 B14.326 C106.352 +G01 X+16.943 Y-9.258 Z-1.908 B14.329 C105.879 +G01 X+17.173 Y-9.199 Z-1.907 B14.325 C104.664 +G01 X+17.403 Y-9.14 B14.326 C103.449 +G01 X+17.5 Y-9.115 Z-1.908 B14.329 C102.927 +G01 X+17.728 Y-9.068 Z-1.907 B14.325 C101.737 +G01 X+17.956 Y-9.022 B14.326 C100.546 +G01 X+18.064 Y-9 Z-1.908 B14.33 C99.976 +G01 X+18.348 Y-8.958 Z-1.907 B14.325 C98.5 +G01 X+18.633 Y-8.915 Z-1.908 B14.33 C97.024 +G01 X+18.919 Y-8.887 Z-1.907 B14.325 C95.548 +G01 X+19.205 Y-8.86 Z-1.908 B14.33 C94.072 +G01 X+19.493 Y-8.846 Z-1.907 C92.596 +G01 X+19.78 Y-8.833 Z-1.908 C91.121 +G01 X+20.067 Y-8.835 Z-1.907 C89.645 +G01 X+20.355 Y-8.837 Z-1.908 C88.169 +G01 X+20.642 Y-8.853 Z-1.907 C86.693 +G01 X+20.929 Y-8.87 Z-1.908 C85.217 +G01 X+21.215 Y-8.901 Z-1.907 C83.741 +G01 X+21.501 Y-8.933 Z-1.908 C82.265 +G01 X+21.785 Y-8.978 Z-1.907 C80.79 +G01 X+22.069 Y-9.025 Z-1.908 C79.314 +G01 X+22.35 Y-9.085 Z-1.907 C77.838 +G01 X+22.631 Y-9.146 Z-1.908 C76.362 +G01 X+22.909 Y-9.22 Z-1.907 B14.325 C74.886 +G01 X+23.186 Y-9.295 Z-1.908 B14.33 C73.41 +G01 X+23.46 Y-9.384 Z-1.907 B14.325 C71.934 +G01 X+23.733 Y-9.474 Z-1.908 B14.33 C70.459 +G01 X+24.002 Y-9.576 Z-1.907 B14.325 C68.983 +G01 X+24.27 Y-9.68 Z-1.908 B14.33 C67.507 +G01 X+24.533 Y-9.796 Z-1.907 B14.325 C66.031 +G01 X+24.796 Y-9.913 Z-1.908 B14.329 C64.555 +G01 X+25.052 Y-10.043 Z-1.907 B14.325 C63.079 +G01 X+25.308 Y-10.173 Z-1.908 B14.329 C61.604 +G01 X+25.558 Y-10.316 Z-1.907 B14.325 C60.129 +G01 X+25.807 Y-10.46 Z-1.908 B14.329 C58.655 +G01 X+26.049 Y-10.615 Z-1.907 B14.325 C57.18 +G01 X+26.291 Y-10.771 Z-1.908 B14.329 C55.706 +G01 X+26.524 Y-10.939 Z-1.907 B14.325 C54.232 +G01 X+26.757 Y-11.107 Z-1.908 B14.329 C52.758 +G01 X+26.988 Y-11.292 Z-1.907 B14.324 C51.249 +G01 X+27.218 Y-11.477 Z-1.908 B14.328 C49.739 +G01 X+27.427 Y-11.663 Z-1.907 B14.324 C48.301 +G01 X+27.636 Y-11.849 Z-1.908 B14.329 C46.862 +G01 X+27.841 Y-12.051 Z-1.907 C45.391 +G01 X+28.045 Y-12.253 Z-1.908 C43.92 +G01 X+28.24 Y-12.465 Z-1.907 B14.324 C42.444 +G01 X+28.433 Y-12.678 Z-1.908 B14.329 C40.968 +G01 X+28.616 Y-12.9 Z-1.907 B14.324 C39.493 +G01 X+28.799 Y-13.122 Z-1.908 B14.329 C38.017 +G01 X+28.961 Y-13.34 Z-1.907 B14.324 C36.62 +G01 X+29.123 Y-13.559 Z-1.908 B14.328 C35.223 +G01 X+29.142 Y-13.584 B14.329 C35.065 +G01 X+29.29 Y-13.806 Z-1.907 B14.324 C33.693 +G01 X+29.438 Y-14.029 Z-1.908 B14.327 C32.32 +G01 X+29.46 Y-14.063 B14.329 C32.113 +G01 X+29.594 Y-14.289 Z-1.907 B14.324 C30.765 +G01 X+29.728 Y-14.515 Z-1.908 B14.327 C29.417 +G01 X+29.753 Y-14.558 B14.329 C29.162 +G01 X+29.873 Y-14.786 Z-1.907 B14.324 C27.838 +G01 X+29.993 Y-15.015 Z-1.908 B14.327 C26.514 +G01 X+30.02 Y-15.067 B14.329 C26.21 +G01 X+30.126 Y-15.297 Z-1.907 B14.324 C24.91 +G01 X+30.232 Y-15.527 Z-1.908 B14.327 C23.61 +G01 X+30.261 Y-15.589 B14.329 C23.258 +G01 X+30.353 Y-15.82 Z-1.907 B14.324 C21.983 +G01 X+30.446 Y-16.051 Z-1.908 B14.326 C20.707 +G01 X+30.474 Y-16.123 B14.329 C20.307 +G01 X+30.553 Y-16.354 Z-1.907 B14.325 C19.055 +G01 X+30.632 Y-16.586 Z-1.908 B14.326 C17.804 +G01 X+30.66 Y-16.668 B14.329 C17.355 +G01 X+30.726 Y-16.898 Z-1.907 B14.325 C16.128 +G01 X+30.791 Y-17.129 B14.326 C14.9 +G01 X+30.817 Y-17.221 Z-1.908 B14.329 C14.403 +G01 X+30.87 Y-17.45 Z-1.907 B14.325 C13.2 +G01 X+30.922 Y-17.679 B14.326 C11.997 +G01 X+30.946 Y-17.781 Z-1.908 B14.33 C11.452 +G01 X+30.986 Y-18.008 Z-1.907 B14.325 C10.273 +G01 X+31.026 Y-18.235 B14.326 C9.094 +G01 X+31.046 Y-18.348 Z-1.908 B14.33 C8.5 +G01 X+31.081 Y-18.633 Z-1.907 B14.325 C7.024 +G01 X+31.116 Y-18.919 Z-1.908 B14.33 C5.548 +G01 X+31.137 Y-19.205 Z-1.907 B14.325 C4.072 +G01 X+31.157 Y-19.492 Z-1.908 B14.33 C2.596 +G01 X+31.163 Y-19.78 Z-1.907 C1.121 +G01 X+31.168 Y-20.067 Z-1.908 C359.645 +G01 X+31.16 Y-20.355 Z-1.907 C358.169 +G01 X+31.15 Y-20.642 Z-1.908 C356.693 +G01 X+31.126 Y-20.929 Z-1.907 C355.217 +G01 X+31.102 Y-21.215 Z-1.908 C353.741 +G01 X+31.064 Y-21.5 Z-1.907 C352.265 +G01 X+31.025 Y-21.785 Z-1.908 C350.79 +G01 X+30.972 Y-22.068 Z-1.907 C349.314 +G01 X+30.919 Y-22.35 Z-1.908 C347.838 +G01 X+30.851 Y-22.63 Z-1.907 B14.325 C346.362 +G01 X+30.783 Y-22.909 Z-1.908 B14.33 C344.886 +G01 X+30.701 Y-23.185 Z-1.907 B14.325 C343.41 +G01 X+30.619 Y-23.461 Z-1.908 B14.33 C341.935 +G01 X+30.523 Y-23.732 Z-1.907 B14.325 C340.459 +G01 X+30.427 Y-24.003 Z-1.908 B14.33 C338.983 +G01 X+30.317 Y-24.268 Z-1.907 B14.325 C337.507 +G01 X+30.207 Y-24.534 Z-1.908 B14.329 C336.031 +G01 X+30.084 Y-24.794 Z-1.907 B14.325 C334.555 +G01 X+29.96 Y-25.054 Z-1.908 B14.329 C333.079 +G01 X+29.823 Y-25.307 Z-1.907 B14.325 C331.604 +G01 X+29.687 Y-25.56 Z-1.908 B14.329 C330.129 +G01 X+29.537 Y-25.805 Z-1.907 B14.325 C328.655 +G01 X+29.387 Y-26.051 Z-1.908 B14.329 C327.18 +G01 X+29.225 Y-26.289 Z-1.907 B14.325 C325.702 +G01 X+29.062 Y-26.528 Z-1.908 B14.329 C324.223 +G01 X+28.883 Y-26.764 Z-1.907 B14.324 C322.707 +G01 X+28.703 Y-26.999 Z-1.908 B14.328 C321.191 +G01 X+28.524 Y-27.211 Z-1.907 B14.324 C319.763 +G01 X+28.344 Y-27.423 Z-1.908 B14.329 C318.336 +G01 X+28.147 Y-27.634 Z-1.907 B14.324 C316.86 +G01 X+27.95 Y-27.844 Z-1.908 B14.329 C315.384 +G01 X+27.744 Y-28.043 Z-1.907 B14.324 C313.914 +G01 X+27.537 Y-28.242 Z-1.908 B14.329 C312.444 +G01 X+27.32 Y-28.431 Z-1.907 B14.324 C310.969 +G01 X+27.103 Y-28.619 Z-1.908 B14.329 C309.493 +G01 X+26.887 Y-28.788 Z-1.907 B14.324 C308.084 +G01 X+26.67 Y-28.957 Z-1.908 B14.328 C306.675 +G01 X+26.65 Y-28.973 B14.329 C306.541 +G01 X+26.429 Y-29.128 Z-1.907 B14.324 C305.156 +G01 X+26.208 Y-29.283 Z-1.908 B14.328 C303.772 +G01 X+26.179 Y-29.304 B14.329 C303.589 +G01 X+25.954 Y-29.445 Z-1.907 B14.324 C302.229 +G01 X+25.73 Y-29.586 Z-1.908 B14.327 C300.868 +G01 X+25.692 Y-29.609 B14.329 C300.638 +G01 X+25.464 Y-29.737 Z-1.907 B14.324 C299.301 +G01 X+25.237 Y-29.863 Z-1.908 B14.327 C297.965 +G01 X+25.189 Y-29.89 B14.329 C297.686 +G01 X+24.96 Y-30.003 Z-1.907 B14.324 C296.374 +G01 X+24.73 Y-30.116 Z-1.908 B14.327 C295.062 +G01 X+24.673 Y-30.144 B14.329 C294.734 +G01 X+24.443 Y-30.243 Z-1.907 B14.324 C293.447 +G01 X+24.212 Y-30.342 Z-1.908 B14.327 C292.159 +G01 X+24.145 Y-30.371 B14.329 C291.782 +G01 X+23.914 Y-30.457 Z-1.907 B14.325 C290.519 +G01 X+23.683 Y-30.542 Z-1.908 B14.326 C289.255 +G01 X+23.606 Y-30.571 B14.329 C288.831 +G01 X+23.375 Y-30.643 Z-1.907 B14.325 C287.592 +G01 X+23.144 Y-30.715 B14.326 C286.352 +G01 X+23.057 Y-30.742 Z-1.908 B14.329 C285.879 +G01 X+22.827 Y-30.801 Z-1.907 B14.325 C284.664 +G01 X+22.597 Y-30.86 B14.326 C283.449 +G01 X+22.5 Y-30.885 Z-1.908 B14.329 C282.927 +G01 X+22.272 Y-30.932 Z-1.907 B14.325 C281.737 +G01 X+22.044 Y-30.978 B14.326 C280.546 +G01 X+21.936 Y-30.999 Z-1.908 B14.33 C279.976 +G01 X+21.652 Y-31.042 Z-1.907 B14.325 C278.5 +G01 X+21.367 Y-31.085 Z-1.908 B14.33 C277.024 +G01 X+21.081 Y-31.113 Z-1.907 B14.325 C275.548 +G01 X+20.795 Y-31.14 Z-1.908 B14.33 C274.072 +G01 X+20.507 Y-31.154 Z-1.907 C272.596 +G01 X+20.22 Y-31.166 Z-1.908 C271.121 +G01 X+19.933 Y-31.165 Z-1.907 C269.645 +G01 X+19.645 Y-31.163 Z-1.908 C268.169 +G01 X+19.358 Y-31.147 Z-1.907 C266.693 +G01 X+19.071 Y-31.13 Z-1.908 C265.217 +G01 X+18.785 Y-31.099 Z-1.907 C263.741 +G01 X+18.499 Y-31.067 Z-1.908 C262.265 +G01 X+18.215 Y-31.022 Z-1.907 C260.79 +G01 X+17.931 Y-30.975 Z-1.908 C259.314 +G01 X+17.65 Y-30.915 Z-1.907 C257.838 +G01 X+17.369 Y-30.854 Z-1.908 C256.362 +G01 X+17.091 Y-30.78 Z-1.907 B14.325 C254.886 +G01 X+16.814 Y-30.704 Z-1.908 B14.33 C253.41 +G01 X+16.54 Y-30.616 Z-1.907 B14.325 C251.934 +G01 X+16.267 Y-30.526 Z-1.908 B14.33 C250.459 +G01 X+15.998 Y-30.423 Z-1.907 B14.325 C248.983 +G01 X+15.73 Y-30.32 Z-1.908 B14.33 C247.507 +G01 X+15.467 Y-30.204 Z-1.907 B14.325 C246.032 +G01 X+15.205 Y-30.087 Z-1.908 B14.329 C244.556 +G01 X+14.922 Y-29.943 Z-1.907 B14.325 C242.954 +G01 X+14.64 Y-29.8 Z-1.908 B14.331 C241.352 +G01 X+14.412 Y-29.668 B14.326 C239.98 +G01 X+14.184 Y-29.536 B14.33 C238.609 +G01 X+13.947 Y-29.382 Z-1.907 B14.325 C237.158 +G01 X+13.71 Y-29.229 Z-1.908 B14.329 C235.708 +G01 X+13.476 Y-29.061 Z-1.907 B14.325 C234.233 +G01 X+13.243 Y-28.892 Z-1.908 B14.329 C232.758 +G01 X+13.012 Y-28.708 Z-1.907 B14.324 C231.249 +G01 X+12.782 Y-28.523 Z-1.908 B14.328 C229.739 +G01 X+12.573 Y-28.337 Z-1.907 B14.324 C228.301 +G01 X+12.364 Y-28.15 Z-1.908 B14.329 C226.862 +G01 X+12.121 Y-27.911 Z-1.907 B14.325 C225.118 +G01 Y-27.778 Z-1.883 B14.202 C224.627 +G01 X+12.024 Y-27.682 Z-1.884 B14.204 C223.928 +G01 X+11.831 Y-27.472 Z-1.883 B14.2 C222.453 +G01 X+11.639 Y-27.261 Z-1.884 B14.205 C220.977 +G01 X+11.458 Y-27.041 Z-1.883 B14.2 C219.501 +G01 X+11.276 Y-26.821 Z-1.884 B14.205 C218.026 +G01 X+11.106 Y-26.592 Z-1.883 B14.2 C216.55 +G01 X+10.937 Y-26.363 Z-1.884 B14.205 C215.074 +G01 X+10.779 Y-26.126 Z-1.883 B14.2 C213.599 +G01 X+10.621 Y-25.888 Z-1.884 B14.205 C212.123 +G01 X+10.476 Y-25.643 Z-1.883 B14.201 C210.647 +G01 X+10.331 Y-25.397 Z-1.884 B14.205 C209.172 +G01 X+10.198 Y-25.145 Z-1.883 B14.201 C207.696 +G01 X+10.066 Y-24.893 Z-1.884 B14.205 C206.221 +G01 X+9.946 Y-24.634 Z-1.883 B14.201 C204.745 +G01 X+9.827 Y-24.375 Z-1.884 B14.205 C203.269 +G01 X+9.721 Y-24.11 Z-1.883 B14.201 C201.794 +G01 X+9.615 Y-23.845 Z-1.884 B14.205 C200.318 +G01 X+9.523 Y-23.575 Z-1.883 B14.201 C198.842 +G01 X+9.431 Y-23.305 Z-1.884 B14.205 C197.367 +G01 X+9.353 Y-23.031 Z-1.883 B14.201 C195.891 +G01 X+9.275 Y-22.757 Z-1.884 B14.205 C194.415 +G01 X+9.211 Y-22.479 Z-1.883 B14.201 C192.94 +G01 X+9.147 Y-22.201 Z-1.884 B14.206 C191.464 +G01 X+9.097 Y-21.92 Z-1.883 C189.989 +G01 X+9.048 Y-21.64 Z-1.884 C188.513 +G01 X+9.013 Y-21.357 Z-1.883 C187.037 +G01 X+8.978 Y-21.074 Z-1.884 C185.562 +G01 X+8.958 Y-20.789 Z-1.883 C184.086 +G01 X+8.938 Y-20.505 Z-1.884 C182.61 +G01 X+8.932 Y-20.22 Z-1.883 C181.135 +G01 X+8.926 Y-19.935 Z-1.884 C179.659 +G01 X+8.935 Y-19.65 Z-1.883 C178.183 +G01 X+8.944 Y-19.365 Z-1.884 C176.708 +G01 X+8.968 Y-19.08 Z-1.883 C175.232 +G01 X+8.992 Y-18.796 Z-1.884 C173.756 +G01 X+9.03 Y-18.514 Z-1.883 C172.281 +G01 X+9.068 Y-18.231 Z-1.884 C170.805 +G01 X+9.121 Y-17.951 Z-1.883 C169.329 +G01 X+9.174 Y-17.671 Z-1.884 C167.854 +G01 X+9.241 Y-17.394 Z-1.883 C166.378 +G01 X+9.308 Y-17.117 Z-1.884 C164.903 +G01 X+9.389 Y-16.843 Z-1.883 B14.201 C163.427 +G01 X+9.471 Y-16.57 Z-1.884 B14.205 C161.951 +G01 X+9.566 Y-16.301 Z-1.883 B14.201 C160.476 +G01 X+9.661 Y-16.033 Z-1.884 B14.205 C159. +G01 X+9.77 Y-15.769 Z-1.883 B14.201 C157.524 +G01 X+9.879 Y-15.506 Z-1.884 B14.205 C156.049 +G01 X+10.001 Y-15.248 Z-1.883 B14.201 C154.573 +G01 X+10.124 Y-14.991 Z-1.884 B14.205 C153.098 +G01 X+10.259 Y-14.74 Z-1.883 B14.201 C151.622 +G01 X+10.395 Y-14.489 Z-1.884 B14.205 C150.146 +G01 X+10.543 Y-14.245 Z-1.883 B14.201 C148.671 +G01 X+10.691 Y-14.002 Z-1.884 B14.205 C147.195 +G01 X+10.852 Y-13.766 Z-1.883 B14.2 C145.719 +G01 X+11.012 Y-13.53 Z-1.884 B14.205 C144.244 +G01 X+11.185 Y-13.303 Z-1.883 B14.2 C142.768 +G01 X+11.357 Y-13.076 Z-1.884 B14.205 C141.292 +G01 X+11.541 Y-12.858 Z-1.883 B14.2 C139.818 +G01 X+11.725 Y-12.641 Z-1.884 B14.205 C138.343 +G01 X+11.92 Y-12.432 Z-1.883 B14.2 C136.869 +G01 X+12.115 Y-12.224 Z-1.884 B14.205 C135.395 +G01 X+12.32 Y-12.026 Z-1.883 B14.2 C133.924 +G01 X+12.526 Y-11.829 Z-1.884 B14.205 C132.453 +G01 X+12.741 Y-11.642 Z-1.883 B14.2 C130.977 +G01 X+12.956 Y-11.455 Z-1.884 B14.205 C129.501 +G01 X+13.181 Y-11.279 Z-1.883 B14.2 C128.026 +G01 X+13.406 Y-11.104 Z-1.884 B14.205 C126.55 +G01 X+13.639 Y-10.94 Z-1.883 B14.2 C125.075 +G01 X+13.872 Y-10.776 Z-1.884 B14.205 C123.599 +G01 X+14.114 Y-10.624 Z-1.883 B14.201 C122.123 +G01 X+14.355 Y-10.473 Z-1.884 B14.205 C120.648 +G01 X+14.604 Y-10.333 Z-1.883 B14.201 C119.172 +G01 X+14.853 Y-10.195 Z-1.884 B14.205 C117.696 +G01 X+15.109 Y-10.069 Z-1.883 B14.201 C116.221 +G01 X+15.365 Y-9.943 Z-1.884 B14.205 C114.745 +G01 X+15.627 Y-9.83 Z-1.883 B14.201 C113.269 +G01 X+15.889 Y-9.717 Z-1.884 B14.205 C111.794 +G01 X+16.156 Y-9.618 Z-1.883 B14.201 C110.318 +G01 X+16.423 Y-9.519 Z-1.884 B14.205 C108.842 +G01 X+16.696 Y-9.434 Z-1.883 B14.201 C107.367 +G01 X+16.968 Y-9.349 Z-1.884 B14.205 C105.891 +G01 X+17.244 Y-9.278 Z-1.883 B14.201 C104.415 +G01 X+17.52 Y-9.207 Z-1.884 B14.206 C102.94 +G01 X+17.799 Y-9.15 Z-1.883 C101.464 +G01 X+18.079 Y-9.094 Z-1.884 C99.989 +G01 X+18.361 Y-9.051 Z-1.883 C98.513 +G01 X+18.643 Y-9.009 Z-1.884 C97.037 +G01 X+18.927 Y-8.982 Z-1.883 C95.562 +G01 X+19.21 Y-8.954 Z-1.884 C94.086 +G01 X+19.495 Y-8.941 Z-1.883 C92.61 +G01 X+19.78 Y-8.928 Z-1.884 C91.135 +G01 X+20.065 Y-8.93 Z-1.883 C89.659 +G01 X+20.35 Y-8.932 Z-1.884 C88.183 +G01 X+20.635 Y-8.948 Z-1.883 C86.708 +G01 X+20.92 Y-8.964 Z-1.884 C85.232 +G01 X+21.203 Y-8.995 Z-1.883 C83.756 +G01 X+21.487 Y-9.026 Z-1.884 C82.281 +G01 X+21.768 Y-9.072 Z-1.883 C80.805 +G01 X+22.05 Y-9.117 Z-1.884 C79.329 +G01 X+22.328 Y-9.177 Z-1.883 C77.854 +G01 X+22.607 Y-9.237 Z-1.884 C76.378 +G01 X+22.882 Y-9.311 Z-1.883 B14.201 C74.903 +G01 X+23.158 Y-9.386 Z-1.884 B14.206 C73.427 +G01 X+23.429 Y-9.474 Z-1.883 B14.201 C71.951 +G01 X+23.7 Y-9.562 Z-1.884 B14.205 C70.476 +G01 X+23.966 Y-9.664 Z-1.883 B14.201 C69. +G01 X+24.232 Y-9.767 Z-1.884 B14.205 C67.524 +G01 X+24.493 Y-9.882 Z-1.883 B14.201 C66.049 +G01 X+24.753 Y-9.998 Z-1.884 B14.205 C64.573 +G01 X+25.008 Y-10.127 Z-1.883 B14.201 C63.098 +G01 X+25.262 Y-10.256 Z-1.884 B14.205 C61.622 +G01 X+25.509 Y-10.398 Z-1.883 B14.201 C60.146 +G01 X+25.757 Y-10.54 Z-1.884 B14.205 C58.671 +G01 X+25.996 Y-10.694 Z-1.883 B14.201 C57.195 +G01 X+26.236 Y-10.849 Z-1.884 B14.205 C55.719 +G01 X+26.468 Y-11.015 Z-1.883 B14.2 C54.244 +G01 X+26.699 Y-11.182 Z-1.884 B14.205 C52.768 +G01 X+26.921 Y-11.36 Z-1.883 B14.2 C51.293 +G01 X+27.144 Y-11.538 Z-1.884 B14.205 C49.817 +G01 X+27.357 Y-11.728 Z-1.883 B14.2 C48.343 +G01 X+27.57 Y-11.917 Z-1.884 B14.205 C46.869 +G01 X+27.773 Y-12.118 Z-1.883 B14.2 C45.399 +G01 X+27.976 Y-12.318 Z-1.884 B14.204 C43.928 +G01 X+28.169 Y-12.528 Z-1.883 B14.2 C42.453 +G01 X+28.361 Y-12.739 Z-1.884 B14.205 C40.977 +G01 X+28.542 Y-12.959 Z-1.883 B14.2 C39.502 +G01 X+28.724 Y-13.179 Z-1.884 B14.205 C38.026 +G01 X+28.894 Y-13.408 Z-1.883 B14.2 C36.55 +G01 X+29.063 Y-13.637 Z-1.884 B14.205 C35.075 +G01 X+29.221 Y-13.874 Z-1.883 B14.2 C33.599 +G01 X+29.379 Y-14.112 Z-1.884 B14.205 C32.123 +G01 X+29.524 Y-14.357 Z-1.883 B14.201 C30.648 +G01 X+29.669 Y-14.602 Z-1.884 B14.205 C29.172 +G01 X+29.802 Y-14.855 Z-1.883 B14.201 C27.696 +G01 X+29.935 Y-15.107 Z-1.884 B14.205 C26.221 +G01 X+30.054 Y-15.366 Z-1.883 B14.201 C24.745 +G01 X+30.173 Y-15.625 Z-1.884 B14.205 C23.269 +G01 X+30.279 Y-15.89 Z-1.883 B14.201 C21.794 +G01 X+30.385 Y-16.155 Z-1.884 B14.205 C20.318 +G01 X+30.477 Y-16.425 Z-1.883 B14.201 C18.842 +G01 X+30.569 Y-16.694 Z-1.884 B14.205 C17.367 +G01 X+30.647 Y-16.969 Z-1.883 B14.201 C15.891 +G01 X+30.725 Y-17.243 Z-1.884 B14.205 C14.415 +G01 X+30.789 Y-17.521 Z-1.883 B14.206 C12.94 +G01 X+30.853 Y-17.799 Z-1.884 C11.464 +G01 X+30.903 Y-18.079 Z-1.883 C9.989 +G01 X+30.952 Y-18.36 Z-1.884 C8.513 +G01 X+30.987 Y-18.643 Z-1.883 C7.037 +G01 X+31.022 Y-18.926 Z-1.884 C5.562 +G01 X+31.042 Y-19.211 Z-1.883 C4.086 +G01 X+31.062 Y-19.495 Z-1.884 C2.61 +G01 X+31.068 Y-19.78 Z-1.883 C1.135 +G01 X+31.074 Y-20.065 Z-1.884 C359.659 +G01 X+31.065 Y-20.35 Z-1.883 C358.183 +G01 X+31.056 Y-20.635 Z-1.884 C356.708 +G01 X+31.032 Y-20.919 Z-1.883 C355.232 +G01 X+31.008 Y-21.203 Z-1.884 C353.756 +G01 X+30.97 Y-21.486 Z-1.883 C352.281 +G01 X+30.932 Y-21.769 Z-1.884 C350.805 +G01 X+30.879 Y-22.049 Z-1.883 C349.329 +G01 X+30.826 Y-22.329 Z-1.884 C347.854 +G01 X+30.759 Y-22.606 Z-1.883 C346.378 +G01 X+30.692 Y-22.883 Z-1.884 C344.903 +G01 X+30.611 Y-23.157 Z-1.883 B14.201 C343.427 +G01 X+30.529 Y-23.43 Z-1.884 B14.205 C341.951 +G01 X+30.434 Y-23.699 Z-1.883 B14.201 C340.476 +G01 X+30.339 Y-23.967 Z-1.884 B14.205 C339. +G01 X+30.23 Y-24.231 Z-1.883 B14.201 C337.524 +G01 X+30.121 Y-24.494 Z-1.884 B14.205 C336.049 +G01 X+29.999 Y-24.752 Z-1.883 B14.201 C334.573 +G01 X+29.876 Y-25.009 Z-1.884 B14.205 C333.098 +G01 X+29.741 Y-25.26 Z-1.883 B14.201 C331.622 +G01 X+29.605 Y-25.511 Z-1.884 B14.205 C330.146 +G01 X+29.457 Y-25.755 Z-1.883 B14.201 C328.671 +G01 X+29.309 Y-25.998 Z-1.884 B14.205 C327.195 +G01 X+29.148 Y-26.234 Z-1.883 B14.2 C325.719 +G01 X+28.988 Y-26.469 Z-1.884 B14.205 C324.244 +G01 X+28.815 Y-26.697 Z-1.883 B14.2 C322.768 +G01 X+28.643 Y-26.924 Z-1.884 B14.205 C321.292 +G01 X+28.459 Y-27.142 Z-1.883 B14.2 C319.818 +G01 X+28.275 Y-27.359 Z-1.884 B14.205 C318.343 +G01 X+28.08 Y-27.568 Z-1.883 B14.2 C316.869 +G01 X+27.885 Y-27.776 Z-1.884 B14.205 C315.395 +G01 X+27.68 Y-27.973 Z-1.883 B14.2 C313.924 +G01 X+27.474 Y-28.171 Z-1.884 B14.205 C312.453 +G01 X+27.259 Y-28.358 Z-1.883 B14.2 C310.977 +G01 X+27.044 Y-28.545 Z-1.884 B14.205 C309.501 +G01 X+26.819 Y-28.721 Z-1.883 B14.2 C308.026 +G01 X+26.594 Y-28.896 Z-1.884 B14.205 C306.55 +G01 X+26.361 Y-29.06 Z-1.883 B14.2 C305.075 +G01 X+26.128 Y-29.224 Z-1.884 B14.205 C303.599 +G01 X+25.886 Y-29.376 Z-1.883 B14.201 C302.123 +G01 X+25.645 Y-29.527 Z-1.884 B14.205 C300.648 +G01 X+25.396 Y-29.666 Z-1.883 B14.201 C299.172 +G01 X+25.147 Y-29.805 Z-1.884 B14.205 C297.696 +G01 X+24.891 Y-29.931 Z-1.883 B14.201 C296.221 +G01 X+24.635 Y-30.057 Z-1.884 B14.205 C294.745 +G01 X+24.373 Y-30.17 Z-1.883 B14.201 C293.269 +G01 X+24.111 Y-30.282 Z-1.884 B14.205 C291.794 +G01 X+23.844 Y-30.382 Z-1.883 B14.201 C290.318 +G01 X+23.577 Y-30.48 Z-1.884 B14.205 C288.842 +G01 X+23.304 Y-30.566 Z-1.883 B14.201 C287.367 +G01 X+23.032 Y-30.651 Z-1.884 B14.205 C285.891 +G01 X+22.756 Y-30.722 Z-1.883 B14.201 C284.415 +G01 X+22.48 Y-30.793 Z-1.884 B14.206 C282.94 +G01 X+22.201 Y-30.849 Z-1.883 C281.464 +G01 X+21.921 Y-30.906 Z-1.884 C279.989 +G01 X+21.639 Y-30.948 Z-1.883 C278.513 +G01 X+21.357 Y-30.99 Z-1.884 C277.037 +G01 X+21.073 Y-31.018 Z-1.883 C275.562 +G01 X+20.79 Y-31.046 Z-1.884 C274.086 +G01 X+20.505 Y-31.059 Z-1.883 C272.61 +G01 X+20.22 Y-31.072 Z-1.884 C271.135 +G01 X+19.935 Y-31.07 Z-1.883 C269.659 +G01 X+19.65 Y-31.068 Z-1.884 C268.183 +G01 X+19.365 Y-31.052 Z-1.883 C266.708 +G01 X+19.08 Y-31.036 Z-1.884 C265.232 +G01 X+18.797 Y-31.005 Z-1.883 C263.756 +G01 X+18.513 Y-30.974 Z-1.884 C262.281 +G01 X+18.232 Y-30.928 Z-1.883 C260.805 +G01 X+17.95 Y-30.883 Z-1.884 C259.329 +G01 X+17.672 Y-30.823 Z-1.883 C257.854 +G01 X+17.393 Y-30.763 Z-1.884 C256.378 +G01 X+17.118 Y-30.689 Z-1.883 B14.201 C254.903 +G01 X+16.842 Y-30.614 Z-1.884 B14.206 C253.427 +G01 X+16.571 Y-30.526 Z-1.883 B14.201 C251.951 +G01 X+16.3 Y-30.438 Z-1.884 B14.205 C250.476 +G01 X+16.034 Y-30.336 Z-1.883 B14.201 C249. +G01 X+15.768 Y-30.233 Z-1.884 B14.205 C247.524 +G01 X+15.507 Y-30.118 Z-1.883 B14.201 C246.049 +G01 X+15.247 Y-30.002 Z-1.884 B14.205 C244.574 +G01 X+14.966 Y-29.859 Z-1.883 B14.2 C242.963 +G01 X+14.685 Y-29.717 Z-1.884 B14.206 C241.352 +G01 X+14.46 Y-29.586 Z-1.883 B14.202 C239.986 +G01 X+14.235 Y-29.455 Z-1.884 B14.206 C238.62 +G01 X+13.999 Y-29.304 Z-1.883 B14.201 C237.17 +G01 X+13.764 Y-29.151 Z-1.884 B14.205 C235.721 +G01 X+13.533 Y-28.985 Z-1.883 B14.2 C234.245 +G01 X+13.301 Y-28.818 Z-1.884 B14.205 C232.768 +G01 X+13.079 Y-28.64 Z-1.883 B14.2 C231.293 +G01 X+12.856 Y-28.461 Z-1.884 B14.205 C229.817 +G01 X+12.643 Y-28.272 Z-1.883 B14.2 C228.343 +G01 X+12.43 Y-28.082 Z-1.884 B14.204 C226.869 +G01 X+12.188 Y-27.844 Z-1.883 B14.201 C225.12 +G01 Y-27.711 Z-1.859 B14.084 C224.623 +G01 X+12.093 Y-27.618 Z-1.86 B14.086 C223.933 +G01 X+11.902 Y-27.409 Z-1.859 B14.082 C222.457 +G01 X+11.711 Y-27.201 Z-1.86 B14.086 C220.981 +G01 X+11.531 Y-26.983 Z-1.859 B14.082 C219.505 +G01 X+11.352 Y-26.764 Z-1.86 B14.086 C218.029 +G01 X+11.183 Y-26.537 Z-1.859 B14.082 C216.553 +G01 X+11.015 Y-26.31 Z-1.86 B14.087 C215.078 +G01 X+10.858 Y-26.075 Z-1.859 B14.082 C213.602 +G01 X+10.702 Y-25.839 Z-1.86 B14.087 C212.127 +G01 X+10.558 Y-25.596 Z-1.859 B14.082 C210.652 +G01 X+10.414 Y-25.353 Z-1.86 B14.087 C209.176 +G01 X+10.282 Y-25.103 Z-1.859 B14.082 C207.701 +G01 X+10.151 Y-24.852 Z-1.86 B14.087 C206.225 +G01 X+10.032 Y-24.596 Z-1.859 B14.083 C204.75 +G01 X+9.914 Y-24.339 Z-1.86 B14.087 C203.274 +G01 X+9.809 Y-24.076 Z-1.859 B14.083 C201.799 +G01 X+9.704 Y-23.814 Z-1.86 B14.087 C200.324 +G01 X+9.613 Y-23.546 Z-1.859 B14.083 C198.848 +G01 X+9.521 Y-23.279 Z-1.86 B14.087 C197.373 +G01 X+9.444 Y-23.007 Z-1.859 B14.083 C195.897 +G01 X+9.367 Y-22.735 Z-1.86 B14.087 C194.422 +G01 X+9.303 Y-22.459 Z-1.859 B14.083 C192.946 +G01 X+9.24 Y-22.184 Z-1.86 B14.087 C191.471 +G01 X+9.191 Y-21.906 Z-1.859 C189.996 +G01 X+9.142 Y-21.627 Z-1.86 C188.52 +G01 X+9.107 Y-21.347 Z-1.859 C187.045 +G01 X+9.072 Y-21.066 Z-1.86 C185.569 +G01 X+9.052 Y-20.784 Z-1.859 C184.094 +G01 X+9.032 Y-20.502 Z-1.86 C182.618 +G01 X+9.026 Y-20.219 Z-1.859 C181.143 +G01 X+9.021 Y-19.937 Z-1.86 C179.667 +G01 X+9.029 Y-19.654 Z-1.859 C178.192 +G01 X+9.038 Y-19.372 Z-1.86 C176.717 +G01 X+9.062 Y-19.09 Z-1.859 C175.241 +G01 X+9.085 Y-18.808 Z-1.86 C173.766 +G01 X+9.123 Y-18.528 Z-1.859 C172.29 +G01 X+9.161 Y-18.248 Z-1.86 C170.815 +G01 X+9.213 Y-17.97 Z-1.859 B14.083 C169.339 +G01 X+9.266 Y-17.692 Z-1.86 B14.087 C167.864 +G01 X+9.332 Y-17.417 Z-1.859 B14.083 C166.388 +G01 X+9.399 Y-17.143 Z-1.86 B14.087 C164.913 +G01 X+9.515 Y-16.753 Z-1.859 B14.083 C162.79 +G01 X+9.56 Y-16.601 Z-1.86 B14.087 C161.962 +G01 X+9.693 Y-16.226 Z-1.859 B14.083 C159.886 +G01 X+9.749 Y-16.068 Z-1.86 B14.087 C159.011 +G01 X+9.897 Y-15.709 Z-1.859 B14.083 C156.983 +G01 X+9.965 Y-15.545 Z-1.86 B14.087 C156.06 +G01 X+10.128 Y-15.202 Z-1.859 B14.083 C154.08 +G01 X+10.207 Y-15.035 Z-1.86 B14.087 C153.11 +G01 X+10.383 Y-14.708 Z-1.859 B14.082 C151.176 +G01 X+10.476 Y-14.537 Z-1.86 B14.087 C150.159 +G01 X+10.664 Y-14.228 Z-1.859 B14.082 C148.273 +G01 X+10.77 Y-14.054 Z-1.86 B14.087 C147.208 +G01 X+10.929 Y-13.82 Z-1.859 C145.732 +G01 X+11.088 Y-13.587 Z-1.86 C144.257 +G01 X+11.259 Y-13.361 Z-1.859 B14.082 C142.782 +G01 X+11.43 Y-13.136 Z-1.86 B14.087 C141.306 +G01 X+11.612 Y-12.92 Z-1.859 B14.082 C139.831 +G01 X+11.795 Y-12.704 Z-1.86 B14.086 C138.355 +G01 X+11.988 Y-12.498 Z-1.859 B14.082 C136.88 +G01 X+12.181 Y-12.292 Z-1.86 B14.086 C135.404 +G01 X+12.385 Y-12.095 Z-1.859 C133.932 +G01 X+12.588 Y-11.899 Z-1.86 C132.459 +G01 X+12.802 Y-11.714 Z-1.859 B14.082 C130.982 +G01 X+13.015 Y-11.529 Z-1.86 B14.086 C129.504 +G01 X+13.238 Y-11.354 Z-1.859 B14.082 C128.029 +G01 X+13.461 Y-11.18 Z-1.86 B14.087 C126.553 +G01 X+13.692 Y-11.018 Z-1.859 B14.082 C125.077 +G01 X+13.924 Y-10.855 Z-1.86 B14.087 C123.601 +G01 X+14.163 Y-10.705 Z-1.859 B14.082 C122.126 +G01 X+14.402 Y-10.555 Z-1.86 B14.087 C120.652 +G01 X+14.649 Y-10.417 Z-1.859 B14.082 C119.176 +G01 X+14.896 Y-10.279 Z-1.86 B14.087 C117.701 +G01 X+15.149 Y-10.154 Z-1.859 B14.082 C116.225 +G01 X+15.403 Y-10.029 Z-1.86 B14.087 C114.75 +G01 X+15.663 Y-9.917 Z-1.859 B14.083 C113.274 +G01 X+15.922 Y-9.806 Z-1.86 B14.087 C111.799 +G01 X+16.187 Y-9.707 Z-1.859 B14.083 C110.324 +G01 X+16.453 Y-9.609 Z-1.86 B14.087 C108.848 +G01 X+16.722 Y-9.525 Z-1.859 B14.083 C107.373 +G01 X+16.992 Y-9.44 Z-1.86 B14.087 C105.897 +G01 X+17.266 Y-9.37 Z-1.859 B14.083 C104.422 +G01 X+17.54 Y-9.3 Z-1.86 B14.087 C102.946 +G01 X+17.817 Y-9.243 Z-1.859 B14.083 C101.471 +G01 X+18.094 Y-9.187 Z-1.86 B14.087 C99.995 +G01 X+18.373 Y-9.145 Z-1.859 C98.52 +G01 X+18.653 Y-9.103 Z-1.86 C97.045 +G01 X+18.934 Y-9.076 Z-1.859 C95.569 +G01 X+19.216 Y-9.048 Z-1.86 C94.094 +G01 X+19.498 Y-9.035 Z-1.859 C92.618 +G01 X+19.78 Y-9.023 Z-1.86 C91.143 +G01 X+20.063 Y-9.024 Z-1.859 C89.667 +G01 X+20.346 Y-9.026 Z-1.86 C88.192 +G01 X+20.628 Y-9.042 Z-1.859 C86.717 +G01 X+20.91 Y-9.058 Z-1.86 C85.241 +G01 X+21.191 Y-9.089 Z-1.859 C83.766 +G01 X+21.472 Y-9.12 Z-1.86 C82.29 +G01 X+21.752 Y-9.164 Z-1.859 C80.815 +G01 X+22.031 Y-9.21 Z-1.86 C79.339 +G01 X+22.307 Y-9.269 Z-1.859 B14.083 C77.864 +G01 X+22.583 Y-9.329 Z-1.86 B14.087 C76.389 +G01 X+22.856 Y-9.402 Z-1.859 B14.083 C74.913 +G01 X+23.129 Y-9.476 Z-1.86 B14.087 C73.438 +G01 X+23.512 Y-9.6 Z-1.859 B14.083 C71.338 +G01 X+23.667 Y-9.651 Z-1.86 B14.087 C70.487 +G01 X+24.034 Y-9.792 Z-1.859 B14.083 C68.435 +G01 X+24.195 Y-9.853 Z-1.86 B14.087 C67.536 +G01 X+24.546 Y-10.009 Z-1.859 B14.083 C65.531 +G01 X+24.712 Y-10.083 Z-1.86 B14.087 C64.585 +G01 X+25.046 Y-10.252 Z-1.859 B14.082 C62.628 +G01 X+25.216 Y-10.338 Z-1.86 B14.087 C61.634 +G01 X+25.533 Y-10.52 Z-1.859 B14.082 C59.725 +G01 X+25.706 Y-10.62 Z-1.86 B14.087 C58.683 +G01 X+26.006 Y-10.813 Z-1.859 B14.082 C56.821 +G01 X+26.182 Y-10.926 Z-1.86 B14.087 C55.732 +G01 X+26.411 Y-11.091 Z-1.859 C54.257 +G01 X+26.641 Y-11.256 Z-1.86 C52.782 +G01 X+26.861 Y-11.433 Z-1.859 B14.082 C51.306 +G01 X+27.082 Y-11.61 Z-1.86 B14.086 C49.831 +G01 X+27.293 Y-11.797 Z-1.859 B14.082 C48.355 +G01 X+27.504 Y-11.985 Z-1.86 B14.086 C46.88 +G01 X+27.706 Y-12.184 Z-1.859 B14.082 C45.406 +G01 X+27.907 Y-12.382 Z-1.86 B14.086 C43.933 +G01 X+28.098 Y-12.591 Z-1.859 B14.082 C42.457 +G01 X+28.289 Y-12.799 Z-1.86 B14.086 C40.981 +G01 X+28.469 Y-13.017 Z-1.859 B14.082 C39.505 +G01 X+28.648 Y-13.236 Z-1.86 B14.087 C38.029 +G01 X+28.817 Y-13.463 Z-1.859 B14.082 C36.553 +G01 X+28.985 Y-13.69 Z-1.86 B14.087 C35.078 +G01 X+29.142 Y-13.925 Z-1.859 B14.082 C33.602 +G01 X+29.298 Y-14.161 Z-1.86 B14.087 C32.127 +G01 X+29.442 Y-14.404 Z-1.859 B14.082 C30.652 +G01 X+29.586 Y-14.647 Z-1.86 B14.087 C29.176 +G01 X+29.718 Y-14.897 Z-1.859 B14.082 C27.701 +G01 X+29.849 Y-15.148 Z-1.86 B14.087 C26.225 +G01 X+29.968 Y-15.404 Z-1.859 B14.083 C24.75 +G01 X+30.086 Y-15.661 Z-1.86 B14.087 C23.274 +G01 X+30.191 Y-15.924 Z-1.859 B14.083 C21.799 +G01 X+30.296 Y-16.186 Z-1.86 B14.087 C20.324 +G01 X+30.387 Y-16.454 Z-1.859 B14.083 C18.848 +G01 X+30.479 Y-16.721 Z-1.86 B14.087 C17.373 +G01 X+30.556 Y-16.993 Z-1.859 B14.083 C15.897 +G01 X+30.633 Y-17.265 Z-1.86 B14.087 C14.422 +G01 X+30.697 Y-17.54 Z-1.859 B14.083 C12.946 +G01 X+30.76 Y-17.816 Z-1.86 B14.087 C11.471 +G01 X+30.809 Y-18.094 Z-1.859 C9.996 +G01 X+30.858 Y-18.373 Z-1.86 C8.52 +G01 X+30.893 Y-18.653 Z-1.859 C7.045 +G01 X+30.928 Y-18.934 Z-1.86 C5.569 +G01 X+30.948 Y-19.216 Z-1.859 C4.094 +G01 X+30.968 Y-19.498 Z-1.86 C2.618 +G01 X+30.974 Y-19.78 Z-1.859 C1.143 +G01 X+30.979 Y-20.063 Z-1.86 C359.667 +G01 X+30.971 Y-20.346 Z-1.859 C358.192 +G01 X+30.962 Y-20.628 Z-1.86 C356.717 +G01 X+30.938 Y-20.91 Z-1.859 C355.241 +G01 X+30.915 Y-21.192 Z-1.86 C353.766 +G01 X+30.877 Y-21.472 Z-1.859 C352.29 +G01 X+30.839 Y-21.752 Z-1.86 C350.815 +G01 X+30.787 Y-22.03 Z-1.859 B14.083 C349.339 +G01 X+30.734 Y-22.308 Z-1.86 B14.087 C347.864 +G01 X+30.668 Y-22.582 Z-1.859 B14.083 C346.388 +G01 X+30.601 Y-22.857 Z-1.86 B14.087 C344.913 +G01 X+30.485 Y-23.247 Z-1.859 B14.083 C342.79 +G01 X+30.44 Y-23.399 Z-1.86 B14.087 C341.962 +G01 X+30.307 Y-23.774 Z-1.859 B14.083 C339.886 +G01 X+30.251 Y-23.932 Z-1.86 B14.087 C339.011 +G01 X+30.103 Y-24.291 Z-1.859 B14.083 C336.983 +G01 X+30.035 Y-24.455 Z-1.86 B14.087 C336.06 +G01 X+29.872 Y-24.798 Z-1.859 B14.083 C334.08 +G01 X+29.793 Y-24.965 Z-1.86 B14.087 C333.11 +G01 X+29.617 Y-25.291 Z-1.859 B14.082 C331.176 +G01 X+29.524 Y-25.463 Z-1.86 B14.087 C330.159 +G01 X+29.336 Y-25.772 Z-1.859 B14.082 C328.273 +G01 X+29.23 Y-25.946 Z-1.86 B14.087 C327.208 +G01 X+29.071 Y-26.18 Z-1.859 C325.732 +G01 X+28.912 Y-26.413 Z-1.86 C324.257 +G01 X+28.741 Y-26.638 Z-1.859 B14.082 C322.782 +G01 X+28.57 Y-26.863 Z-1.86 B14.087 C321.306 +G01 X+28.388 Y-27.08 Z-1.859 B14.082 C319.831 +G01 X+28.205 Y-27.295 Z-1.86 B14.086 C318.355 +G01 X+28.012 Y-27.502 Z-1.859 B14.082 C316.88 +G01 X+27.819 Y-27.708 Z-1.86 B14.086 C315.404 +G01 X+27.615 Y-27.904 Z-1.859 C313.932 +G01 X+27.412 Y-28.1 Z-1.86 C312.459 +G01 X+27.198 Y-28.286 Z-1.859 B14.082 C310.982 +G01 X+26.985 Y-28.471 Z-1.86 B14.086 C309.504 +G01 X+26.762 Y-28.646 Z-1.859 B14.082 C308.029 +G01 X+26.539 Y-28.82 Z-1.86 B14.087 C306.553 +G01 X+26.308 Y-28.982 Z-1.859 B14.082 C305.077 +G01 X+26.076 Y-29.145 Z-1.86 B14.087 C303.601 +G01 X+25.837 Y-29.295 Z-1.859 B14.082 C302.126 +G01 X+25.598 Y-29.445 Z-1.86 B14.087 C300.652 +G01 X+25.351 Y-29.583 Z-1.859 B14.082 C299.176 +G01 X+25.104 Y-29.721 Z-1.86 B14.087 C297.701 +G01 X+24.851 Y-29.846 Z-1.859 B14.082 C296.225 +G01 X+24.597 Y-29.971 Z-1.86 B14.087 C294.75 +G01 X+24.337 Y-30.083 Z-1.859 B14.083 C293.274 +G01 X+24.078 Y-30.194 Z-1.86 B14.087 C291.799 +G01 X+23.813 Y-30.293 Z-1.859 B14.083 C290.324 +G01 X+23.548 Y-30.391 Z-1.86 B14.087 C288.848 +G01 X+23.278 Y-30.475 Z-1.859 B14.083 C287.373 +G01 X+23.008 Y-30.559 Z-1.86 B14.087 C285.897 +G01 X+22.734 Y-30.63 Z-1.859 B14.083 C284.422 +G01 X+22.46 Y-30.7 Z-1.86 B14.087 C282.946 +G01 X+22.183 Y-30.757 Z-1.859 B14.083 C281.471 +G01 X+21.906 Y-30.813 Z-1.86 B14.087 C279.995 +G01 X+21.627 Y-30.855 Z-1.859 C278.52 +G01 X+21.347 Y-30.897 Z-1.86 C277.045 +G01 X+21.066 Y-30.924 Z-1.859 C275.569 +G01 X+20.784 Y-30.951 Z-1.86 C274.094 +G01 X+20.502 Y-30.965 Z-1.859 C272.618 +G01 X+20.22 Y-30.977 Z-1.86 C271.143 +G01 X+19.937 Y-30.976 Z-1.859 C269.667 +G01 X+19.654 Y-30.974 Z-1.86 C268.192 +G01 X+19.372 Y-30.958 Z-1.859 C266.717 +G01 X+19.09 Y-30.942 Z-1.86 C265.241 +G01 X+18.809 Y-30.911 Z-1.859 C263.766 +G01 X+18.528 Y-30.88 Z-1.86 C262.29 +G01 X+18.248 Y-30.835 Z-1.859 C260.815 +G01 X+17.969 Y-30.79 Z-1.86 C259.339 +G01 X+17.693 Y-30.731 Z-1.859 B14.083 C257.864 +G01 X+17.417 Y-30.671 Z-1.86 B14.087 C256.389 +G01 X+17.144 Y-30.598 Z-1.859 B14.083 C254.913 +G01 X+16.871 Y-30.524 Z-1.86 B14.087 C253.438 +G01 X+16.488 Y-30.4 Z-1.859 B14.083 C251.338 +G01 X+16.333 Y-30.349 Z-1.86 B14.087 C250.487 +G01 X+15.966 Y-30.208 Z-1.859 B14.083 C248.435 +G01 X+15.805 Y-30.147 Z-1.86 B14.087 C247.536 +G01 X+15.547 Y-30.032 Z-1.859 B14.082 C246.061 +G01 X+15.289 Y-29.917 Z-1.86 B14.087 C244.586 +G01 X+14.954 Y-29.747 Z-1.859 B14.082 C242.628 +G01 X+14.73 Y-29.634 Z-1.86 B14.088 C241.352 +G01 X+14.507 Y-29.505 B14.084 C239.991 +G01 X+14.285 Y-29.375 B14.087 C238.631 +G01 X+13.994 Y-29.187 Z-1.859 B14.083 C236.822 +G01 X+13.819 Y-29.074 Z-1.86 B14.087 C235.734 +G01 X+13.589 Y-28.909 Z-1.859 B14.082 C234.258 +G01 X+13.359 Y-28.744 Z-1.86 B14.087 C232.782 +G01 X+13.139 Y-28.567 Z-1.859 B14.082 C231.306 +G01 X+12.918 Y-28.39 Z-1.86 B14.086 C229.831 +G01 X+12.707 Y-28.203 Z-1.859 B14.082 C228.355 +G01 X+12.496 Y-28.015 Z-1.86 B14.086 C226.88 +G01 X+12.255 Y-27.777 Z-1.859 B14.082 C225.116 +G01 X+12.254 Y-27.644 Z-1.836 B13.96 C224.613 +G01 X+12.161 Y-27.552 B13.962 C223.933 +G01 X+11.972 Y-27.346 B13.958 C222.462 +G01 X+11.784 Y-27.14 B13.962 C220.991 +G01 X+11.605 Y-26.924 B13.958 C219.513 +G01 X+11.427 Y-26.707 B13.962 C218.036 +G01 X+11.26 Y-26.482 B13.958 C216.559 +G01 X+11.093 Y-26.257 B13.963 C215.082 +G01 X+10.938 Y-26.024 B13.958 C213.604 +G01 X+10.783 Y-25.79 B13.963 C212.127 +G01 X+10.636 Y-25.542 Z-1.835 B13.958 C210.608 +G01 X+10.489 Y-25.294 Z-1.836 B13.962 C209.088 +G01 X+10.361 Y-25.05 Z-1.835 B13.958 C207.637 +G01 X+10.233 Y-24.805 Z-1.836 B13.963 C206.185 +G01 X+10.117 Y-24.554 B13.958 C204.729 +G01 X+10.001 Y-24.303 B13.963 C203.273 +G01 X+9.897 Y-24.043 B13.958 C201.798 +G01 X+9.793 Y-23.782 B13.963 C200.322 +G01 X+9.702 Y-23.517 B13.959 C198.847 +G01 X+9.612 Y-23.252 B13.963 C197.372 +G01 X+9.535 Y-22.983 B13.959 C195.897 +G01 X+9.458 Y-22.713 B13.963 C194.422 +G01 X+9.395 Y-22.44 B13.959 C192.946 +G01 X+9.333 Y-22.167 B13.963 C191.471 +G01 X+9.284 Y-21.891 B13.959 C189.996 +G01 X+9.235 Y-21.615 B13.963 C188.521 +G01 X+9.201 Y-21.337 C187.045 +G01 X+9.166 Y-21.058 C185.57 +G01 X+9.146 Y-20.779 B13.959 C184.095 +G01 X+9.126 Y-20.499 B13.963 C182.62 +G01 X+9.121 Y-20.256 B13.959 C181.337 +G01 X+9.117 Y-20.013 B13.961 C180.054 +G01 X+9.115 Y-19.939 B13.963 C179.669 +G01 X+9.122 Y-19.7 B13.959 C178.41 +G01 X+9.13 Y-19.461 B13.961 C177.151 +G01 X+9.133 Y-19.379 B13.963 C176.719 +G01 X+9.152 Y-19.145 B13.959 C175.483 +G01 X+9.171 Y-18.911 B13.96 C174.247 +G01 X+9.179 Y-18.82 B13.963 C173.768 +G01 X+9.21 Y-18.592 B13.959 C172.556 +G01 X+9.241 Y-18.364 B13.96 C171.344 +G01 X+9.254 Y-18.264 B13.963 C170.818 +G01 X+9.296 Y-18.043 B13.959 C169.629 +G01 X+9.337 Y-17.821 B13.96 C168.44 +G01 X+9.358 Y-17.714 B13.963 C167.867 +G01 X+9.462 Y-17.284 B13.96 C165.537 +G01 X+9.489 Y-17.169 B13.963 C164.917 +G01 X+9.613 Y-16.754 B13.96 C162.633 +G01 X+9.649 Y-16.631 B13.963 C161.966 +G01 X+9.791 Y-16.232 B13.959 C159.73 +G01 X+9.836 Y-16.103 B13.963 C159.016 +G01 X+9.995 Y-15.72 B13.959 C156.826 +G01 X+10.05 Y-15.585 B13.963 C156.065 +G01 X+10.224 Y-15.218 B13.959 C153.923 +G01 X+10.291 Y-15.079 B13.963 C153.115 +G01 X+10.479 Y-14.729 B13.959 C151.02 +G01 X+10.557 Y-14.585 B13.963 C150.165 +G01 X+10.759 Y-14.254 B13.959 C148.116 +G01 X+10.848 Y-14.106 B13.963 C147.214 +G01 X+11.062 Y-13.793 B13.959 C145.213 +G01 X+11.164 Y-13.643 B13.962 C144.264 +G01 X+11.387 Y-13.349 B13.959 C142.31 +G01 X+11.503 Y-13.197 B13.962 C141.313 +G01 X+11.683 Y-12.982 C139.838 +G01 X+11.864 Y-12.768 C138.363 +G01 X+12.056 Y-12.564 B13.958 C136.887 +G01 X+12.247 Y-12.359 B13.962 C135.412 +G01 X+12.449 Y-12.164 C133.94 +G01 X+12.651 Y-11.97 C132.468 +G01 X+12.862 Y-11.786 B13.958 C130.991 +G01 X+13.074 Y-11.602 B13.962 C129.513 +G01 X+13.295 Y-11.43 B13.958 C128.036 +G01 X+13.516 Y-11.257 B13.962 C126.559 +G01 X+13.745 Y-11.096 B13.958 C125.081 +G01 X+13.974 Y-10.935 B13.963 C123.604 +G01 X+14.221 Y-10.78 Z-1.835 B13.958 C122.072 +G01 X+14.467 Y-10.626 Z-1.836 B13.962 C120.54 +G01 X+14.708 Y-10.492 Z-1.835 B13.958 C119.088 +G01 X+14.949 Y-10.358 Z-1.836 B13.962 C117.637 +G01 X+15.195 Y-10.237 B13.958 C116.192 +G01 X+15.441 Y-10.115 B13.963 C114.748 +G01 X+15.698 Y-10.005 B13.958 C113.273 +G01 X+15.956 Y-9.894 B13.963 C111.798 +G01 X+16.219 Y-9.796 B13.959 C110.322 +G01 X+16.482 Y-9.699 B13.963 C108.847 +G01 X+16.749 Y-9.615 B13.959 C107.372 +G01 X+17.016 Y-9.532 B13.963 C105.897 +G01 X+17.288 Y-9.462 B13.959 C104.422 +G01 X+17.559 Y-9.392 B13.963 C102.946 +G01 X+17.834 Y-9.336 B13.959 C101.471 +G01 X+18.109 Y-9.28 B13.963 C99.996 +G01 X+18.386 Y-9.239 C98.521 +G01 X+18.663 Y-9.197 C97.045 +G01 X+18.942 Y-9.17 C95.57 +G01 X+19.221 Y-9.143 C94.095 +G01 X+19.501 Y-9.13 B13.959 C92.62 +G01 X+19.781 Y-9.117 B13.963 C91.144 +G01 X+20.022 Y-9.118 B13.959 C89.873 +G01 X+20.263 Y-9.12 B13.961 C88.602 +G01 X+20.341 B13.963 C88.194 +G01 X+20.578 Y-9.133 B13.959 C86.946 +G01 X+20.814 Y-9.147 B13.96 C85.699 +G01 X+20.901 Y-9.152 B13.963 C85.243 +G01 X+21.132 Y-9.177 B13.959 C84.019 +G01 X+21.363 Y-9.202 B13.96 C82.795 +G01 X+21.458 Y-9.213 B13.963 C82.293 +G01 X+21.683 Y-9.249 B13.959 C81.093 +G01 X+21.908 Y-9.285 B13.96 C79.892 +G01 X+22.012 Y-9.302 B13.963 C79.343 +G01 X+22.448 Y-9.396 B13.96 C76.988 +G01 X+22.56 Y-9.42 B13.963 C76.392 +G01 X+22.982 Y-9.534 B13.96 C74.085 +G01 X+23.101 Y-9.566 B13.963 C73.442 +G01 X+23.508 Y-9.698 B13.96 C71.181 +G01 X+23.634 Y-9.739 B13.963 C70.491 +G01 X+24.025 Y-9.889 B13.959 C68.278 +G01 X+24.157 Y-9.94 B13.963 C67.541 +G01 X+24.532 Y-10.106 B13.959 C65.375 +G01 X+24.67 Y-10.167 B13.963 C64.59 +G01 X+25.028 Y-10.349 B13.959 C62.471 +G01 X+25.17 Y-10.421 B13.963 C61.64 +G01 X+25.51 Y-10.616 B13.959 C59.568 +G01 X+25.656 Y-10.7 B13.963 C58.689 +G01 X+25.978 Y-10.907 B13.959 C56.665 +G01 X+26.127 Y-11.003 B13.962 C55.739 +G01 X+26.431 Y-11.222 B13.959 C53.761 +G01 X+26.582 Y-11.33 B13.962 C52.788 +G01 X+26.801 Y-11.505 C51.313 +G01 X+27.02 Y-11.681 C49.838 +G01 X+27.229 Y-11.867 B13.958 C48.363 +G01 X+27.439 Y-12.053 B13.962 C46.887 +G01 X+27.639 Y-12.25 Z-1.835 B13.958 C45.41 +G01 X+27.839 Y-12.448 Z-1.836 B13.962 C43.933 +G01 X+28.028 Y-12.654 B13.958 C42.462 +G01 X+28.216 Y-12.86 B13.962 C40.991 +G01 X+28.395 Y-13.076 B13.958 C39.513 +G01 X+28.573 Y-13.293 B13.962 C38.036 +G01 X+28.74 Y-13.518 B13.958 C36.559 +G01 X+28.907 Y-13.743 B13.963 C35.082 +G01 X+29.062 Y-13.976 B13.958 C33.604 +G01 X+29.217 Y-14.21 B13.963 C32.127 +G01 X+29.364 Y-14.458 Z-1.835 B13.958 C30.608 +G01 X+29.511 Y-14.706 Z-1.836 B13.962 C29.089 +G01 X+29.639 Y-14.95 Z-1.835 B13.958 C27.637 +G01 X+29.767 Y-15.195 Z-1.836 B13.963 C26.185 +G01 X+29.883 Y-15.446 B13.958 C24.729 +G01 X+29.999 Y-15.697 B13.963 C23.273 +G01 X+30.103 Y-15.957 B13.958 C21.798 +G01 X+30.207 Y-16.217 B13.963 C20.322 +G01 X+30.298 Y-16.483 B13.959 C18.847 +G01 X+30.388 Y-16.748 B13.963 C17.372 +G01 X+30.465 Y-17.017 B13.959 C15.897 +G01 X+30.542 Y-17.287 B13.963 C14.422 +G01 X+30.605 Y-17.56 B13.959 C12.946 +G01 X+30.667 Y-17.833 B13.963 C11.471 +G01 X+30.716 Y-18.109 B13.959 C9.996 +G01 X+30.765 Y-18.385 B13.963 C8.521 +G01 X+30.799 Y-18.663 C7.045 +G01 X+30.834 Y-18.942 C5.57 +G01 X+30.854 Y-19.221 B13.959 C4.095 +G01 X+30.874 Y-19.501 B13.963 C2.62 +G01 X+30.879 Y-19.744 B13.959 C1.337 +G01 X+30.884 Y-19.987 B13.961 C0.054 +G01 X+30.885 Y-20.061 B13.963 C359.669 +G01 X+30.878 Y-20.3 B13.959 C358.41 +G01 X+30.87 Y-20.539 B13.961 C357.151 +G01 X+30.867 Y-20.621 B13.963 C356.719 +G01 X+30.848 Y-20.855 B13.959 C355.483 +G01 X+30.829 Y-21.089 B13.96 C354.247 +G01 X+30.821 Y-21.18 B13.963 C353.768 +G01 X+30.79 Y-21.408 B13.959 C352.556 +G01 X+30.759 Y-21.636 B13.96 C351.344 +G01 X+30.746 Y-21.735 B13.963 C350.818 +G01 X+30.704 Y-21.957 B13.959 C349.629 +G01 X+30.663 Y-22.178 B13.96 C348.44 +G01 X+30.642 Y-22.286 B13.963 C347.867 +G01 X+30.538 Y-22.716 B13.96 C345.537 +G01 X+30.511 Y-22.831 B13.963 C344.917 +G01 X+30.387 Y-23.246 B13.96 C342.633 +G01 X+30.351 Y-23.368 B13.963 C341.966 +G01 X+30.209 Y-23.768 B13.959 C339.73 +G01 X+30.164 Y-23.897 B13.963 C339.016 +G01 X+30.005 Y-24.28 B13.959 C336.826 +G01 X+29.95 Y-24.415 B13.963 C336.065 +G01 X+29.776 Y-24.781 B13.959 C333.923 +G01 X+29.709 Y-24.921 B13.963 C333.115 +G01 X+29.521 Y-25.27 B13.959 C331.02 +G01 X+29.443 Y-25.414 B13.963 C330.165 +G01 X+29.241 Y-25.746 B13.959 C328.116 +G01 X+29.152 Y-25.893 B13.963 C327.214 +G01 X+28.938 Y-26.206 B13.959 C325.213 +G01 X+28.836 Y-26.357 B13.962 C324.264 +G01 X+28.613 Y-26.651 B13.959 C322.31 +G01 X+28.497 Y-26.803 B13.962 C321.313 +G01 X+28.317 Y-27.017 C319.838 +G01 X+28.136 Y-27.232 C318.363 +G01 X+27.944 Y-27.436 B13.958 C316.887 +G01 X+27.753 Y-27.641 B13.962 C315.412 +G01 X+27.551 Y-27.835 C313.94 +G01 X+27.349 Y-28.03 C312.468 +G01 X+27.138 Y-28.214 B13.958 C310.991 +G01 X+26.926 Y-28.397 B13.962 C309.513 +G01 X+26.705 Y-28.57 B13.958 C308.036 +G01 X+26.484 Y-28.743 B13.962 C306.559 +G01 X+26.255 Y-28.904 B13.958 C305.081 +G01 X+26.026 Y-29.065 B13.963 C303.604 +G01 X+25.779 Y-29.219 Z-1.835 B13.958 C302.072 +G01 X+25.533 Y-29.373 Z-1.836 B13.962 C300.54 +G01 X+25.292 Y-29.508 Z-1.835 B13.958 C299.088 +G01 X+25.051 Y-29.642 Z-1.836 B13.962 C297.637 +G01 X+24.805 Y-29.763 B13.958 C296.192 +G01 X+24.559 Y-29.884 B13.963 C294.748 +G01 X+24.302 Y-29.995 B13.958 C293.273 +G01 X+24.044 Y-30.106 B13.963 C291.798 +G01 X+23.781 Y-30.204 B13.959 C290.322 +G01 X+23.518 Y-30.301 B13.963 C288.847 +G01 X+23.251 Y-30.385 B13.959 C287.372 +G01 X+22.984 Y-30.468 B13.963 C285.897 +G01 X+22.712 Y-30.538 B13.959 C284.422 +G01 X+22.441 Y-30.608 B13.963 C282.946 +G01 X+22.166 Y-30.664 B13.959 C281.471 +G01 X+21.891 Y-30.72 B13.963 C279.996 +G01 X+21.614 Y-30.761 C278.521 +G01 X+21.337 Y-30.803 C277.045 +G01 X+21.058 Y-30.83 C275.57 +G01 X+20.779 Y-30.857 C274.095 +G01 X+20.499 Y-30.87 B13.959 C272.62 +G01 X+20.219 Y-30.883 B13.963 C271.144 +G01 X+19.978 Y-30.882 B13.959 C269.873 +G01 X+19.737 Y-30.88 B13.961 C268.602 +G01 X+19.659 B13.963 C268.194 +G01 X+19.422 Y-30.866 B13.959 C266.946 +G01 X+19.186 Y-30.853 B13.96 C265.699 +G01 X+19.099 Y-30.848 B13.963 C265.243 +G01 X+18.868 Y-30.823 B13.959 C264.019 +G01 X+18.637 Y-30.797 B13.96 C262.795 +G01 X+18.542 Y-30.787 B13.963 C262.293 +G01 X+18.317 Y-30.751 B13.959 C261.093 +G01 X+18.092 Y-30.714 B13.96 C259.892 +G01 X+17.988 Y-30.698 B13.963 C259.343 +G01 X+17.552 Y-30.604 B13.96 C256.988 +G01 X+17.44 Y-30.58 B13.963 C256.392 +G01 X+17.018 Y-30.466 B13.96 C254.085 +G01 X+16.899 Y-30.434 B13.963 C253.442 +G01 X+16.492 Y-30.302 B13.96 C251.181 +G01 X+16.366 Y-30.261 B13.963 C250.491 +G01 X+15.975 Y-30.11 B13.959 C248.278 +G01 X+15.843 Y-30.06 B13.963 C247.541 +G01 X+15.587 Y-29.946 B13.958 C246.066 +G01 X+15.331 Y-29.833 B13.963 C244.592 +G01 X+14.972 Y-29.651 B13.959 C242.471 +G01 X+14.775 Y-29.551 Z-1.837 B13.964 C241.352 +G01 X+14.555 Y-29.423 Z-1.836 B13.96 C239.994 +G01 X+14.335 Y-29.295 Z-1.837 B13.963 C238.635 +G01 X+14.022 Y-29.093 Z-1.836 B13.959 C236.665 +G01 X+13.873 Y-28.997 B13.963 C235.741 +G01 X+13.569 Y-28.778 B13.959 C233.761 +G01 X+13.418 Y-28.669 B13.962 C232.788 +G01 X+13.199 Y-28.494 B13.958 C231.313 +G01 X+12.98 Y-28.319 B13.962 C229.838 +G01 X+12.771 Y-28.133 B13.958 C228.363 +G01 X+12.561 Y-27.947 B13.962 C226.888 +G01 X+12.321 Y-27.71 Z-1.835 B13.958 C225.106 +G01 Y-27.577 Z-1.812 B13.836 C224.603 +G01 X+12.231 Y-27.489 Z-1.813 B13.838 C223.945 +G01 X+12.043 Y-27.284 Z-1.812 B13.834 C222.472 +G01 X+11.856 Y-27.079 Z-1.813 B13.838 C221. +G01 X+11.679 Y-26.865 Z-1.812 B13.834 C219.523 +G01 X+11.502 Y-26.65 Z-1.813 B13.838 C218.046 +G01 X+11.337 Y-26.427 Z-1.812 B13.834 C216.568 +G01 X+11.171 Y-26.204 Z-1.813 B13.838 C215.091 +G01 X+11.026 Y-25.986 Z-1.812 B13.834 C213.706 +G01 X+10.882 Y-25.769 Z-1.813 B13.837 C212.32 +G01 X+10.864 Y-25.741 B13.838 C212.137 +G01 X+10.732 Y-25.52 Z-1.812 B13.834 C210.777 +G01 X+10.601 Y-25.299 Z-1.813 B13.837 C209.417 +G01 X+10.58 Y-25.263 B13.839 C209.183 +G01 X+10.463 Y-25.04 Z-1.812 B13.834 C207.848 +G01 X+10.345 Y-24.816 Z-1.813 B13.837 C206.513 +G01 X+10.322 Y-24.771 B13.839 C206.229 +G01 X+10.218 Y-24.546 Z-1.812 B13.834 C204.92 +G01 X+10.114 Y-24.321 Z-1.813 B13.836 C203.61 +G01 X+10.089 Y-24.267 B13.839 C203.275 +G01 X+9.982 Y-24 Z-1.812 B13.834 C201.748 +G01 X+9.876 Y-23.733 Z-1.813 B13.838 C200.221 +G01 X+9.788 Y-23.474 Z-1.812 B13.834 C198.77 +G01 X+9.7 Y-23.216 Z-1.813 B13.839 C197.319 +G01 X+9.625 Y-22.953 Z-1.812 B13.835 C195.867 +G01 X+9.55 Y-22.69 Z-1.813 B13.839 C194.416 +G01 X+9.488 Y-22.42 Z-1.812 B13.835 C192.943 +G01 X+9.426 Y-22.149 Z-1.813 B13.839 C191.471 +G01 X+9.377 Y-21.876 Z-1.812 B13.835 C189.996 +G01 X+9.329 Y-21.602 Z-1.813 B13.839 C188.521 +G01 X+9.295 Y-21.326 Z-1.812 C187.046 +G01 X+9.261 Y-21.051 Z-1.813 C185.571 +G01 X+9.24 Y-20.774 Z-1.812 C184.096 +G01 X+9.221 Y-20.496 Z-1.813 C182.621 +G01 X+9.215 Y-20.219 Z-1.812 C181.146 +G01 X+9.209 Y-19.941 Z-1.813 C179.671 +G01 X+9.218 Y-19.663 Z-1.812 B13.835 C178.196 +G01 X+9.227 Y-19.385 Z-1.813 B13.839 C176.721 +G01 X+9.247 Y-19.139 Z-1.812 B13.835 C175.406 +G01 X+9.268 Y-18.893 Z-1.813 B13.837 C174.091 +G01 X+9.273 Y-18.832 B13.839 C173.771 +G01 X+9.305 Y-18.591 Z-1.812 B13.835 C172.479 +G01 X+9.338 Y-18.351 Z-1.813 B13.837 C171.187 +G01 X+9.347 Y-18.281 B13.839 C170.821 +G01 X+9.391 Y-18.047 Z-1.812 B13.835 C169.552 +G01 X+9.435 Y-17.813 B13.837 C168.284 +G01 X+9.45 Y-17.735 Z-1.813 B13.839 C167.871 +G01 X+9.505 Y-17.508 Z-1.812 B13.835 C166.626 +G01 X+9.56 Y-17.28 B13.837 C165.38 +G01 X+9.58 Y-17.195 Z-1.813 B13.839 C164.921 +G01 X+9.645 Y-16.975 Z-1.812 B13.835 C163.699 +G01 X+9.711 Y-16.755 B13.836 C162.477 +G01 X+9.739 Y-16.662 Z-1.813 B13.839 C161.97 +G01 X+9.813 Y-16.45 Z-1.812 B13.835 C160.772 +G01 X+9.889 Y-16.238 B13.836 C159.573 +G01 X+9.924 Y-16.138 Z-1.813 B13.839 C159.02 +G01 X+10.092 Y-15.731 Z-1.812 B13.836 C156.67 +G01 X+10.136 Y-15.625 Z-1.813 B13.839 C156.07 +G01 X+10.321 Y-15.235 Z-1.812 B13.836 C153.767 +G01 X+10.374 Y-15.123 Z-1.813 B13.839 C153.12 +G01 X+10.575 Y-14.75 Z-1.812 B13.836 C150.863 +G01 X+10.638 Y-14.634 Z-1.813 B13.839 C150.17 +G01 X+10.853 Y-14.28 Z-1.812 B13.835 C147.959 +G01 X+10.927 Y-14.159 Z-1.813 B13.838 C147.22 +G01 X+11.155 Y-13.824 Z-1.812 B13.835 C145.056 +G01 X+11.24 Y-13.7 Z-1.813 B13.838 C144.27 +G01 X+11.479 Y-13.384 Z-1.812 B13.835 C142.153 +G01 X+11.576 Y-13.257 Z-1.813 B13.838 C141.32 +G01 X+11.755 Y-13.044 Z-1.812 B13.834 C139.845 +G01 X+11.934 Y-12.832 Z-1.813 B13.838 C138.37 +G01 X+12.124 Y-12.629 Z-1.812 B13.834 C136.895 +G01 X+12.314 Y-12.426 Z-1.813 B13.838 C135.42 +G01 X+12.513 Y-12.234 Z-1.812 B13.834 C133.948 +G01 X+12.714 Y-12.041 Z-1.813 B13.838 C132.477 +G01 X+12.923 Y-11.858 Z-1.812 B13.834 C131. +G01 X+13.133 Y-11.676 Z-1.813 B13.838 C129.523 +G01 X+13.352 Y-11.505 Z-1.812 B13.834 C128.046 +G01 X+13.571 Y-11.334 Z-1.813 B13.838 C126.569 +G01 X+13.798 Y-11.174 Z-1.812 B13.834 C125.091 +G01 X+14.025 Y-11.014 Z-1.813 B13.838 C123.614 +G01 X+14.245 Y-10.876 Z-1.812 B13.834 C122.241 +G01 X+14.464 Y-10.739 Z-1.813 B13.837 C120.868 +G01 X+14.496 Y-10.719 B13.839 C120.66 +G01 X+14.718 Y-10.594 Z-1.812 B13.834 C119.313 +G01 X+14.94 Y-10.47 Z-1.813 B13.837 C117.965 +G01 X+14.981 Y-10.448 B13.839 C117.706 +G01 X+15.205 Y-10.337 Z-1.812 B13.834 C116.384 +G01 X+15.43 Y-10.226 Z-1.813 B13.836 C115.062 +G01 X+15.479 Y-10.202 B13.839 C114.752 +G01 X+15.705 Y-10.105 Z-1.812 B13.834 C113.455 +G01 X+15.931 Y-10.008 Z-1.813 B13.836 C112.159 +G01 X+16.012 Y-9.974 B13.838 C111.673 +G01 X+16.268 Y-9.879 Z-1.812 B13.834 C110.221 +G01 X+16.525 Y-9.785 Z-1.813 B13.839 C108.77 +G01 X+16.783 Y-9.704 Z-1.812 B13.835 C107.333 +G01 X+17.041 Y-9.623 Z-1.813 B13.839 C105.896 +G01 X+17.31 Y-9.553 Z-1.812 B13.835 C104.421 +G01 X+17.579 Y-9.484 Z-1.813 B13.839 C102.946 +G01 X+17.851 Y-9.429 Z-1.812 B13.835 C101.471 +G01 X+18.124 Y-9.374 Z-1.813 B13.839 C99.996 +G01 X+18.398 Y-9.332 Z-1.812 B13.835 C98.521 +G01 X+18.673 Y-9.291 Z-1.813 B13.839 C97.046 +G01 X+18.95 Y-9.264 Z-1.812 C95.571 +G01 X+19.226 Y-9.237 Z-1.813 C94.096 +G01 X+19.504 Y-9.224 Z-1.812 C92.621 +G01 X+19.781 Y-9.211 Z-1.813 C91.146 +G01 X+20.059 Y-9.213 Z-1.812 B13.835 C89.671 +G01 X+20.337 Y-9.215 Z-1.813 B13.839 C88.196 +G01 X+20.586 Y-9.229 Z-1.812 B13.835 C86.869 +G01 X+20.835 Y-9.243 Z-1.813 B13.837 C85.542 +G01 X+20.892 Y-9.246 B13.839 C85.246 +G01 X+21.135 Y-9.273 Z-1.812 B13.835 C83.942 +G01 X+21.379 Y-9.299 Z-1.813 B13.837 C82.639 +G01 X+21.444 Y-9.306 B13.839 C82.296 +G01 X+21.681 Y-9.344 Z-1.812 B13.835 C81.016 +G01 X+21.919 Y-9.383 Z-1.813 B13.837 C79.736 +G01 X+21.993 Y-9.395 B13.839 C79.346 +G01 X+22.223 Y-9.444 Z-1.812 B13.835 C78.089 +G01 X+22.454 Y-9.494 B13.837 C76.832 +G01 X+22.536 Y-9.511 Z-1.813 B13.839 C76.396 +G01 X+22.76 Y-9.572 Z-1.812 B13.835 C75.162 +G01 X+22.983 Y-9.632 B13.836 C73.929 +G01 X+23.072 Y-9.656 Z-1.813 B13.839 C73.446 +G01 X+23.289 Y-9.726 Z-1.812 B13.835 C72.235 +G01 X+23.504 Y-9.796 B13.836 C71.025 +G01 X+23.601 Y-9.828 Z-1.813 B13.839 C70.495 +G01 X+24.017 Y-9.987 Z-1.812 B13.836 C68.122 +G01 X+24.12 Y-10.027 Z-1.813 B13.839 C67.545 +G01 X+24.519 Y-10.204 Z-1.812 B13.836 C65.218 +G01 X+24.628 Y-10.252 Z-1.813 B13.839 C64.595 +G01 X+25.009 Y-10.445 Z-1.812 B13.836 C62.315 +G01 X+25.123 Y-10.503 Z-1.813 B13.839 C61.645 +G01 X+25.487 Y-10.711 Z-1.812 B13.836 C59.411 +G01 X+25.605 Y-10.779 Z-1.813 B13.839 C58.695 +G01 X+25.95 Y-11.001 Z-1.812 B13.835 C56.508 +G01 X+26.073 Y-11.08 Z-1.813 B13.838 C55.745 +G01 X+26.398 Y-11.314 Z-1.812 B13.835 C53.605 +G01 X+26.524 Y-11.405 Z-1.813 B13.838 C52.795 +G01 X+26.83 Y-11.649 Z-1.812 B13.835 C50.701 +G01 X+26.958 Y-11.752 Z-1.813 B13.838 C49.845 +G01 X+27.165 Y-11.936 Z-1.812 B13.834 C48.37 +G01 X+27.373 Y-12.121 Z-1.813 B13.838 C46.895 +G01 X+27.571 Y-12.316 Z-1.812 B13.834 C45.42 +G01 X+27.769 Y-12.511 Z-1.813 B13.838 C43.945 +G01 X+27.957 Y-12.716 Z-1.812 B13.834 C42.472 +G01 X+28.144 Y-12.921 Z-1.813 B13.838 C41. +G01 X+28.321 Y-13.135 Z-1.812 B13.834 C39.522 +G01 X+28.498 Y-13.35 Z-1.813 B13.838 C38.046 +G01 X+28.663 Y-13.573 Z-1.812 B13.834 C36.568 +G01 X+28.829 Y-13.796 Z-1.813 B13.838 C35.091 +G01 X+28.974 Y-14.013 Z-1.812 B13.834 C33.706 +G01 X+29.118 Y-14.231 Z-1.813 B13.837 C32.32 +G01 X+29.136 Y-14.259 B13.838 C32.137 +G01 X+29.268 Y-14.479 Z-1.812 B13.834 C30.777 +G01 X+29.399 Y-14.701 Z-1.813 B13.837 C29.417 +G01 X+29.42 Y-14.736 B13.839 C29.183 +G01 X+29.537 Y-14.96 Z-1.812 B13.834 C27.848 +G01 X+29.655 Y-15.183 Z-1.813 B13.837 C26.513 +G01 X+29.678 Y-15.228 B13.839 C26.229 +G01 X+29.782 Y-15.453 Z-1.812 B13.834 C24.92 +G01 X+29.886 Y-15.679 Z-1.813 B13.836 C23.61 +G01 X+29.911 Y-15.733 B13.839 C23.275 +G01 X+30.018 Y-16 Z-1.812 B13.834 C21.748 +G01 X+30.124 Y-16.267 Z-1.813 B13.838 C20.221 +G01 X+30.212 Y-16.526 Z-1.812 B13.834 C18.77 +G01 X+30.3 Y-16.784 Z-1.813 B13.839 C17.319 +G01 X+30.375 Y-17.047 Z-1.812 B13.835 C15.867 +G01 X+30.45 Y-17.31 Z-1.813 B13.839 C14.416 +G01 X+30.512 Y-17.58 Z-1.812 B13.835 C12.943 +G01 X+30.574 Y-17.85 Z-1.813 B13.839 C11.471 +G01 X+30.623 Y-18.124 Z-1.812 B13.835 C9.996 +G01 X+30.671 Y-18.398 Z-1.813 B13.839 C8.521 +G01 X+30.705 Y-18.673 Z-1.812 C7.046 +G01 X+30.739 Y-18.949 Z-1.813 C5.571 +G01 X+30.76 Y-19.226 Z-1.812 C4.096 +G01 X+30.779 Y-19.503 Z-1.813 C2.621 +G01 X+30.785 Y-19.781 Z-1.812 C1.146 +G01 X+30.791 Y-20.059 Z-1.813 C359.671 +G01 X+30.782 Y-20.337 Z-1.812 B13.835 C358.196 +G01 X+30.773 Y-20.614 Z-1.813 B13.839 C356.721 +G01 X+30.753 Y-20.861 Z-1.812 B13.835 C355.406 +G01 X+30.732 Y-21.107 Z-1.813 B13.837 C354.091 +G01 X+30.727 Y-21.168 B13.839 C353.771 +G01 X+30.695 Y-21.409 Z-1.812 B13.835 C352.479 +G01 X+30.662 Y-21.649 Z-1.813 B13.837 C351.187 +G01 X+30.653 Y-21.719 B13.839 C350.821 +G01 X+30.609 Y-21.953 Z-1.812 B13.835 C349.552 +G01 X+30.565 Y-22.187 B13.837 C348.284 +G01 X+30.55 Y-22.265 Z-1.813 B13.839 C347.871 +G01 X+30.495 Y-22.492 Z-1.812 B13.835 C346.626 +G01 X+30.44 Y-22.719 B13.837 C345.38 +G01 X+30.42 Y-22.805 Z-1.813 B13.839 C344.921 +G01 X+30.355 Y-23.025 Z-1.812 B13.835 C343.699 +G01 X+30.289 Y-23.245 B13.836 C342.477 +G01 X+30.261 Y-23.338 Z-1.813 B13.839 C341.97 +G01 X+30.187 Y-23.55 Z-1.812 B13.835 C340.772 +G01 X+30.111 Y-23.762 B13.836 C339.573 +G01 X+30.076 Y-23.862 Z-1.813 B13.839 C339.02 +G01 X+29.908 Y-24.269 Z-1.812 B13.836 C336.67 +G01 X+29.864 Y-24.375 Z-1.813 B13.839 C336.07 +G01 X+29.679 Y-24.765 Z-1.812 B13.836 C333.767 +G01 X+29.626 Y-24.877 Z-1.813 B13.839 C333.12 +G01 X+29.425 Y-25.249 Z-1.812 B13.836 C330.863 +G01 X+29.362 Y-25.366 Z-1.813 B13.839 C330.17 +G01 X+29.147 Y-25.72 Z-1.812 B13.835 C327.959 +G01 X+29.073 Y-25.841 Z-1.813 B13.838 C327.22 +G01 X+28.845 Y-26.176 Z-1.812 B13.835 C325.056 +G01 X+28.76 Y-26.3 Z-1.813 B13.838 C324.27 +G01 X+28.521 Y-26.616 Z-1.812 B13.835 C322.153 +G01 X+28.424 Y-26.743 Z-1.813 B13.838 C321.32 +G01 X+28.245 Y-26.955 Z-1.812 B13.834 C319.845 +G01 X+28.066 Y-27.168 Z-1.813 B13.838 C318.37 +G01 X+27.876 Y-27.371 Z-1.812 B13.834 C316.895 +G01 X+27.686 Y-27.573 Z-1.813 B13.838 C315.42 +G01 X+27.487 Y-27.766 Z-1.812 B13.834 C313.948 +G01 X+27.286 Y-27.959 Z-1.813 B13.838 C312.477 +G01 X+27.077 Y-28.141 Z-1.812 B13.834 C311. +G01 X+26.867 Y-28.324 Z-1.813 B13.838 C309.523 +G01 X+26.648 Y-28.495 Z-1.812 B13.834 C308.046 +G01 X+26.429 Y-28.666 Z-1.813 B13.838 C306.569 +G01 X+26.202 Y-28.826 Z-1.812 B13.834 C305.091 +G01 X+25.975 Y-28.986 Z-1.813 B13.838 C303.614 +G01 X+25.755 Y-29.124 Z-1.812 B13.834 C302.241 +G01 X+25.536 Y-29.261 Z-1.813 B13.837 C300.868 +G01 X+25.504 Y-29.281 B13.839 C300.66 +G01 X+25.282 Y-29.406 Z-1.812 B13.834 C299.313 +G01 X+25.06 Y-29.53 Z-1.813 B13.837 C297.965 +G01 X+25.019 Y-29.552 B13.839 C297.706 +G01 X+24.795 Y-29.663 Z-1.812 B13.834 C296.384 +G01 X+24.57 Y-29.773 Z-1.813 B13.836 C295.062 +G01 X+24.521 Y-29.798 B13.839 C294.752 +G01 X+24.295 Y-29.895 Z-1.812 B13.834 C293.455 +G01 X+24.069 Y-29.992 Z-1.813 B13.836 C292.159 +G01 X+23.988 Y-30.026 B13.838 C291.673 +G01 X+23.732 Y-30.121 Z-1.812 B13.834 C290.221 +G01 X+23.475 Y-30.215 Z-1.813 B13.839 C288.77 +G01 X+23.217 Y-30.296 Z-1.812 B13.835 C287.333 +G01 X+22.959 Y-30.377 Z-1.813 B13.839 C285.896 +G01 X+22.69 Y-30.446 Z-1.812 B13.835 C284.421 +G01 X+22.421 Y-30.516 Z-1.813 B13.839 C282.946 +G01 X+22.149 Y-30.571 Z-1.812 B13.835 C281.471 +G01 X+21.876 Y-30.626 Z-1.813 B13.839 C279.996 +G01 X+21.602 Y-30.668 Z-1.812 B13.835 C278.521 +G01 X+21.327 Y-30.709 Z-1.813 B13.839 C277.046 +G01 X+21.05 Y-30.736 Z-1.812 C275.571 +G01 X+20.774 Y-30.763 Z-1.813 C274.096 +G01 X+20.496 Y-30.776 Z-1.812 C272.621 +G01 X+20.219 Y-30.788 Z-1.813 C271.146 +G01 X+19.941 Y-30.787 Z-1.812 B13.835 C269.671 +G01 X+19.663 Y-30.785 Z-1.813 B13.839 C268.196 +G01 X+19.414 Y-30.771 Z-1.812 B13.835 C266.869 +G01 X+19.165 Y-30.757 Z-1.813 B13.837 C265.542 +G01 X+19.108 Y-30.754 B13.839 C265.246 +G01 X+18.865 Y-30.727 Z-1.812 B13.835 C263.942 +G01 X+18.621 Y-30.701 Z-1.813 B13.837 C262.639 +G01 X+18.556 Y-30.694 B13.839 C262.296 +G01 X+18.319 Y-30.655 Z-1.812 B13.835 C261.016 +G01 X+18.081 Y-30.617 Z-1.813 B13.837 C259.736 +G01 X+18.007 Y-30.605 B13.839 C259.346 +G01 X+17.777 Y-30.556 Z-1.812 B13.835 C258.089 +G01 X+17.546 Y-30.506 B13.837 C256.832 +G01 X+17.464 Y-30.488 Z-1.813 B13.839 C256.396 +G01 X+17.24 Y-30.428 Z-1.812 B13.835 C255.162 +G01 X+17.017 Y-30.368 B13.836 C253.929 +G01 X+16.928 Y-30.344 Z-1.813 B13.839 C253.446 +G01 X+16.712 Y-30.274 Z-1.812 B13.835 C252.235 +G01 X+16.496 Y-30.203 B13.836 C251.025 +G01 X+16.399 Y-30.172 Z-1.813 B13.839 C250.495 +G01 X+15.983 Y-30.013 Z-1.812 B13.836 C248.122 +G01 X+15.88 Y-29.973 Z-1.813 B13.839 C247.545 +G01 X+15.626 Y-29.861 Z-1.812 B13.834 C246.071 +G01 X+15.373 Y-29.748 Z-1.813 B13.839 C244.597 +G01 X+14.991 Y-29.555 Z-1.812 B13.836 C242.315 +G01 X+14.82 Y-29.468 Z-1.813 B13.84 C241.352 +G01 X+14.602 Y-29.342 B13.836 C239.996 +G01 X+14.385 Y-29.215 B13.839 C238.64 +G01 X+14.05 Y-28.999 Z-1.812 B13.836 C236.508 +G01 X+13.928 Y-28.92 Z-1.813 B13.839 C235.747 +G01 X+13.602 Y-28.686 Z-1.812 B13.835 C233.604 +G01 X+13.476 Y-28.595 Z-1.813 B13.838 C232.795 +G01 X+13.17 Y-28.35 Z-1.812 B13.835 C230.701 +G01 X+13.042 Y-28.248 Z-1.813 B13.838 C229.845 +G01 X+12.835 Y-28.063 Z-1.812 B13.834 C228.37 +G01 X+12.627 Y-27.879 Z-1.813 B13.838 C226.895 +G01 X+12.388 Y-27.643 Z-1.812 B13.834 C225.104 +G01 Y-27.51 Z-1.789 B13.712 C224.593 +G01 X+12.3 Y-27.424 Z-1.79 B13.714 C223.953 +G01 X+12.114 Y-27.221 Z-1.789 B13.71 C222.481 +G01 X+11.928 Y-27.018 Z-1.79 B13.714 C221.009 +G01 X+11.753 Y-26.806 Z-1.789 B13.71 C219.532 +G01 X+11.578 Y-26.593 Z-1.79 B13.714 C218.055 +G01 X+11.413 Y-26.372 Z-1.789 B13.71 C216.578 +G01 X+11.249 Y-26.151 Z-1.79 B13.714 C215.101 +G01 X+11.097 Y-25.922 Z-1.789 C213.624 +G01 X+10.944 Y-25.692 Z-1.79 C212.148 +G01 X+10.763 Y-25.386 Z-1.789 B13.711 C210.221 +G01 X+10.663 Y-25.219 Z-1.79 B13.714 C209.194 +G01 X+10.535 Y-24.975 Z-1.789 B13.71 C207.717 +G01 X+10.407 Y-24.731 Z-1.79 B13.715 C206.24 +G01 X+10.304 Y-24.507 Z-1.789 B13.71 C204.925 +G01 X+10.2 Y-24.283 B13.712 C203.61 +G01 X+10.176 Y-24.231 Z-1.79 B13.715 C203.287 +G01 X+10.086 Y-24.006 Z-1.789 B13.71 C201.997 +G01 X+9.996 Y-23.781 B13.712 C200.707 +G01 X+9.972 Y-23.72 Z-1.79 B13.715 C200.333 +G01 X+9.894 Y-23.495 Z-1.789 B13.71 C199.069 +G01 X+9.818 Y-23.27 B13.712 C197.804 +G01 X+9.793 Y-23.198 Z-1.79 B13.715 C197.379 +G01 X+9.729 Y-22.974 Z-1.789 B13.71 C196.14 +G01 X+9.665 Y-22.75 B13.712 C194.901 +G01 X+9.642 Y-22.669 Z-1.79 B13.715 C194.426 +G01 X+9.58 Y-22.4 Z-1.789 B13.711 C192.949 +G01 X+9.519 Y-22.132 Z-1.79 B13.715 C191.472 +G01 X+9.47 Y-21.854 Z-1.789 B13.71 C189.962 +G01 X+9.421 Y-21.576 Z-1.79 B13.715 C188.451 +G01 X+9.388 Y-21.31 Z-1.789 B13.711 C187.012 +G01 X+9.355 Y-21.043 Z-1.79 B13.715 C185.572 +G01 X+9.335 Y-20.768 Z-1.789 C184.097 +G01 X+9.315 Y-20.494 Z-1.79 C182.622 +G01 X+9.309 Y-20.218 Z-1.789 C181.147 +G01 X+9.304 Y-19.943 Z-1.79 C179.672 +G01 X+9.312 Y-19.668 Z-1.789 C178.197 +G01 X+9.321 Y-19.392 Z-1.79 C176.723 +G01 X+9.344 Y-19.118 Z-1.789 C175.248 +G01 X+9.367 Y-18.843 Z-1.79 C173.773 +G01 X+9.403 Y-18.571 Z-1.789 B13.711 C172.298 +G01 X+9.44 Y-18.298 Z-1.79 B13.715 C170.823 +G01 X+9.486 Y-18.051 Z-1.789 B13.711 C169.476 +G01 X+9.533 Y-17.804 B13.714 C168.128 +G01 X+9.542 Y-17.756 Z-1.79 B13.715 C167.874 +G01 X+9.6 Y-17.516 Z-1.789 B13.711 C166.549 +G01 X+9.658 Y-17.277 B13.713 C165.224 +G01 X+9.671 Y-17.221 Z-1.79 B13.715 C164.924 +G01 X+9.74 Y-16.989 Z-1.789 B13.711 C163.622 +G01 X+9.809 Y-16.756 B13.713 C162.32 +G01 X+9.828 Y-16.693 Z-1.79 B13.715 C161.975 +G01 X+9.907 Y-16.469 Z-1.789 B13.711 C160.696 +G01 X+9.987 Y-16.244 B13.713 C159.417 +G01 X+10.012 Y-16.174 Z-1.79 B13.715 C159.025 +G01 X+10.101 Y-15.958 Z-1.789 B13.711 C157.769 +G01 X+10.19 Y-15.742 B13.713 C156.513 +G01 X+10.222 Y-15.664 Z-1.79 B13.715 C156.075 +G01 X+10.32 Y-15.458 Z-1.789 B13.711 C154.843 +G01 X+10.418 Y-15.251 B13.713 C153.61 +G01 X+10.458 Y-15.167 Z-1.79 B13.715 C153.126 +G01 X+10.565 Y-14.969 Z-1.789 B13.711 C151.916 +G01 X+10.671 Y-14.771 B13.712 C150.707 +G01 X+10.72 Y-14.682 Z-1.79 B13.715 C150.176 +G01 X+10.948 Y-14.306 Z-1.789 B13.712 C147.803 +G01 X+11.006 Y-14.211 Z-1.79 B13.715 C147.226 +G01 X+11.248 Y-13.855 Z-1.789 B13.712 C144.9 +G01 X+11.316 Y-13.756 Z-1.79 B13.714 C144.277 +G01 X+11.571 Y-13.419 Z-1.789 B13.712 C141.996 +G01 X+11.648 Y-13.317 Z-1.79 B13.714 C141.327 +G01 X+11.915 Y-13.001 Z-1.789 B13.712 C139.093 +G01 X+12.004 Y-12.896 Z-1.79 B13.714 C138.377 +G01 X+12.192 Y-12.695 Z-1.789 B13.71 C136.902 +G01 X+12.38 Y-12.494 Z-1.79 B13.714 C135.428 +G01 X+12.578 Y-12.303 Z-1.789 B13.71 C133.954 +G01 X+12.776 Y-12.112 Z-1.79 B13.714 C132.481 +G01 X+12.984 Y-11.931 Z-1.789 B13.71 C131.006 +G01 X+13.192 Y-11.75 Z-1.79 B13.714 C129.532 +G01 X+13.409 Y-11.58 Z-1.789 B13.71 C128.055 +G01 X+13.626 Y-11.411 Z-1.79 B13.714 C126.578 +G01 X+13.851 Y-11.252 Z-1.789 C125.101 +G01 X+14.076 Y-11.094 Z-1.79 C123.625 +G01 X+14.382 Y-10.902 Z-1.789 B13.711 C121.672 +G01 X+14.543 Y-10.801 Z-1.79 B13.714 C120.671 +G01 X+14.783 Y-10.666 Z-1.789 B13.71 C119.194 +G01 X+15.023 Y-10.532 Z-1.79 B13.715 C117.717 +G01 X+15.247 Y-10.422 Z-1.789 B13.71 C116.39 +G01 X+15.47 Y-10.312 B13.712 C115.062 +G01 X+15.517 Y-10.288 Z-1.79 B13.715 C114.763 +G01 X+15.742 Y-10.192 Z-1.789 B13.71 C113.461 +G01 X+15.966 Y-10.095 B13.712 C112.159 +G01 X+16.023 Y-10.071 Z-1.79 B13.715 C111.81 +G01 X+16.248 Y-9.987 Z-1.789 B13.71 C110.533 +G01 X+16.473 Y-9.904 B13.712 C109.255 +G01 X+16.54 Y-9.879 Z-1.79 B13.715 C108.856 +G01 X+16.764 Y-9.808 Z-1.789 B13.71 C107.604 +G01 X+16.989 Y-9.738 B13.712 C106.352 +G01 X+17.065 Y-9.714 Z-1.79 B13.715 C105.903 +G01 X+17.332 Y-9.645 Z-1.789 B13.711 C104.426 +G01 X+17.599 Y-9.577 Z-1.79 B13.715 C102.949 +G01 X+17.877 Y-9.52 Z-1.789 B13.71 C101.426 +G01 X+18.156 Y-9.464 Z-1.79 B13.715 C99.903 +G01 X+18.42 Y-9.425 Z-1.789 B13.711 C98.475 +G01 X+18.683 Y-9.385 Z-1.79 B13.715 C97.046 +G01 X+18.957 Y-9.358 Z-1.789 C95.572 +G01 X+19.231 Y-9.331 Z-1.79 C94.097 +G01 X+19.506 Y-9.319 Z-1.789 C92.622 +G01 X+19.782 Y-9.306 Z-1.79 C91.147 +G01 X+20.057 Y-9.307 Z-1.789 C89.672 +G01 X+20.332 Y-9.309 Z-1.79 C88.197 +G01 X+20.607 Y-9.324 Z-1.789 C86.723 +G01 X+20.882 Y-9.34 Z-1.79 C85.248 +G01 X+21.156 Y-9.37 Z-1.789 C83.773 +G01 X+21.43 Y-9.4 Z-1.79 C82.298 +G01 X+21.702 Y-9.443 Z-1.789 B13.711 C80.824 +G01 X+21.974 Y-9.487 Z-1.79 B13.715 C79.349 +G01 X+22.217 Y-9.54 Z-1.789 B13.711 C78.012 +G01 X+22.46 Y-9.592 B13.714 C76.676 +G01 X+22.512 Y-9.603 Z-1.79 B13.715 C76.399 +G01 X+22.748 Y-9.666 Z-1.789 B13.711 C75.086 +G01 X+22.984 Y-9.73 B13.713 C73.772 +G01 X+23.044 Y-9.746 Z-1.79 B13.715 C73.449 +G01 X+23.272 Y-9.82 Z-1.789 B13.711 C72.159 +G01 X+23.501 Y-9.895 B13.713 C70.869 +G01 X+23.568 Y-9.916 Z-1.79 B13.715 C70.5 +G01 X+23.788 Y-10.001 Z-1.789 B13.711 C69.233 +G01 X+24.008 Y-10.085 B13.713 C67.965 +G01 X+24.082 Y-10.113 Z-1.79 B13.715 C67.55 +G01 X+24.294 Y-10.207 Z-1.789 B13.711 C66.306 +G01 X+24.505 Y-10.301 B13.713 C65.062 +G01 X+24.586 Y-10.337 Z-1.79 B13.715 C64.6 +G01 X+24.788 Y-10.439 Z-1.789 B13.711 C63.379 +G01 X+24.99 Y-10.542 B13.712 C62.158 +G01 X+25.077 Y-10.586 Z-1.79 B13.715 C61.651 +G01 X+25.463 Y-10.807 Z-1.789 B13.712 C59.255 +G01 X+25.555 Y-10.859 Z-1.79 B13.715 C58.701 +G01 X+25.922 Y-11.095 Z-1.789 B13.712 C56.351 +G01 X+26.018 Y-11.158 Z-1.79 B13.714 C55.752 +G01 X+26.365 Y-11.407 Z-1.789 B13.712 C53.448 +G01 X+26.465 Y-11.479 Z-1.79 B13.714 C52.802 +G01 X+26.792 Y-11.74 Z-1.789 B13.712 C50.544 +G01 X+26.896 Y-11.823 Z-1.79 B13.714 C49.852 +G01 X+27.102 Y-12.006 Z-1.789 B13.71 C48.377 +G01 X+27.307 Y-12.189 Z-1.79 B13.714 C46.903 +G01 X+27.504 Y-12.382 Z-1.789 B13.71 C45.428 +G01 X+27.7 Y-12.576 Z-1.79 B13.714 C43.953 +G01 X+27.886 Y-12.779 Z-1.789 C42.481 +G01 X+28.072 Y-12.982 Z-1.79 C41.009 +G01 X+28.247 Y-13.194 Z-1.789 B13.71 C39.532 +G01 X+28.422 Y-13.407 Z-1.79 B13.714 C38.055 +G01 X+28.587 Y-13.628 Z-1.789 B13.71 C36.578 +G01 X+28.751 Y-13.849 Z-1.79 B13.714 C35.101 +G01 X+28.903 Y-14.078 Z-1.789 C33.624 +G01 X+29.056 Y-14.308 Z-1.79 C32.148 +G01 X+29.237 Y-14.614 Z-1.789 B13.711 C30.221 +G01 X+29.337 Y-14.781 Z-1.79 B13.714 C29.194 +G01 X+29.465 Y-15.025 Z-1.789 B13.71 C27.717 +G01 X+29.593 Y-15.269 Z-1.79 B13.715 C26.24 +G01 X+29.696 Y-15.493 Z-1.789 B13.71 C24.925 +G01 X+29.8 Y-15.717 B13.712 C23.61 +G01 X+29.824 Y-15.769 Z-1.79 B13.715 C23.287 +G01 X+29.914 Y-15.994 Z-1.789 B13.71 C21.997 +G01 X+30.004 Y-16.218 B13.712 C20.707 +G01 X+30.029 Y-16.28 Z-1.79 B13.715 C20.333 +G01 X+30.106 Y-16.505 Z-1.789 B13.71 C19.069 +G01 X+30.182 Y-16.73 B13.712 C17.804 +G01 X+30.207 Y-16.801 Z-1.79 B13.715 C17.379 +G01 X+30.271 Y-17.026 Z-1.789 B13.71 C16.14 +G01 X+30.335 Y-17.25 B13.712 C14.901 +G01 X+30.358 Y-17.331 Z-1.79 B13.715 C14.426 +G01 X+30.42 Y-17.599 Z-1.789 B13.711 C12.949 +G01 X+30.481 Y-17.868 Z-1.79 B13.715 C11.472 +G01 X+30.53 Y-18.146 Z-1.789 B13.71 C9.962 +G01 X+30.579 Y-18.423 Z-1.79 B13.715 C8.452 +G01 X+30.612 Y-18.69 Z-1.789 B13.711 C7.012 +G01 X+30.645 Y-18.957 Z-1.79 B13.715 C5.572 +G01 X+30.665 Y-19.232 Z-1.789 C4.097 +G01 X+30.685 Y-19.506 Z-1.79 C2.622 +G01 X+30.691 Y-19.782 Z-1.789 C1.147 +G01 X+30.696 Y-20.057 Z-1.79 C359.672 +G01 X+30.688 Y-20.332 Z-1.789 C358.197 +G01 X+30.679 Y-20.607 Z-1.79 C356.723 +G01 X+30.656 Y-20.882 Z-1.789 C355.248 +G01 X+30.633 Y-21.156 Z-1.79 C353.773 +G01 X+30.597 Y-21.429 Z-1.789 B13.711 C352.298 +G01 X+30.56 Y-21.702 Z-1.79 B13.715 C350.823 +G01 X+30.514 Y-21.949 Z-1.789 B13.711 C349.476 +G01 X+30.467 Y-22.196 B13.714 C348.128 +G01 X+30.458 Y-22.244 Z-1.79 B13.715 C347.874 +G01 X+30.4 Y-22.483 Z-1.789 B13.711 C346.549 +G01 X+30.342 Y-22.723 B13.713 C345.224 +G01 X+30.329 Y-22.779 Z-1.79 B13.715 C344.924 +G01 X+30.26 Y-23.011 Z-1.789 B13.711 C343.622 +G01 X+30.191 Y-23.243 B13.713 C342.32 +G01 X+30.172 Y-23.307 Z-1.79 B13.715 C341.975 +G01 X+30.093 Y-23.531 Z-1.789 B13.711 C340.696 +G01 X+30.013 Y-23.755 B13.713 C339.417 +G01 X+29.988 Y-23.826 Z-1.79 B13.715 C339.025 +G01 X+29.899 Y-24.042 Z-1.789 B13.711 C337.769 +G01 X+29.81 Y-24.258 B13.713 C336.513 +G01 X+29.778 Y-24.335 Z-1.79 B13.715 C336.075 +G01 X+29.68 Y-24.542 Z-1.789 B13.711 C334.843 +G01 X+29.582 Y-24.749 B13.713 C333.61 +G01 X+29.542 Y-24.833 Z-1.79 B13.715 C333.126 +G01 X+29.435 Y-25.031 Z-1.789 B13.711 C331.916 +G01 X+29.329 Y-25.228 B13.712 C330.707 +G01 X+29.28 Y-25.318 Z-1.79 B13.715 C330.176 +G01 X+29.052 Y-25.694 Z-1.789 B13.712 C327.803 +G01 X+28.994 Y-25.788 Z-1.79 B13.715 C327.226 +G01 X+28.752 Y-26.145 Z-1.789 B13.712 C324.9 +G01 X+28.684 Y-26.244 Z-1.79 B13.714 C324.277 +G01 X+28.429 Y-26.581 Z-1.789 B13.712 C321.996 +G01 X+28.352 Y-26.683 Z-1.79 B13.714 C321.327 +G01 X+28.085 Y-26.999 Z-1.789 B13.712 C319.093 +G01 X+27.996 Y-27.104 Z-1.79 B13.714 C318.377 +G01 X+27.808 Y-27.305 Z-1.789 B13.71 C316.902 +G01 X+27.62 Y-27.506 Z-1.79 B13.714 C315.428 +G01 X+27.422 Y-27.697 Z-1.789 B13.71 C313.954 +G01 X+27.224 Y-27.888 Z-1.79 B13.714 C312.481 +G01 X+27.016 Y-28.069 Z-1.789 B13.71 C311.006 +G01 X+26.808 Y-28.25 Z-1.79 B13.714 C309.532 +G01 X+26.591 Y-28.42 Z-1.789 B13.71 C308.055 +G01 X+26.374 Y-28.589 Z-1.79 B13.714 C306.578 +G01 X+26.149 Y-28.748 Z-1.789 C305.101 +G01 X+25.924 Y-28.906 Z-1.79 C303.625 +G01 X+25.618 Y-29.098 Z-1.789 B13.711 C301.672 +G01 X+25.457 Y-29.199 Z-1.79 B13.714 C300.671 +G01 X+25.217 Y-29.334 Z-1.789 B13.71 C299.194 +G01 X+24.977 Y-29.468 Z-1.79 B13.715 C297.717 +G01 X+24.754 Y-29.578 Z-1.789 B13.71 C296.39 +G01 X+24.53 Y-29.688 B13.712 C295.062 +G01 X+24.483 Y-29.711 Z-1.79 B13.715 C294.763 +G01 X+24.258 Y-29.808 Z-1.789 B13.71 C293.461 +G01 X+24.034 Y-29.905 B13.712 C292.159 +G01 X+23.977 Y-29.929 Z-1.79 B13.715 C291.81 +G01 X+23.752 Y-30.013 Z-1.789 B13.71 C290.533 +G01 X+23.527 Y-30.096 B13.712 C289.255 +G01 X+23.46 Y-30.121 Z-1.79 B13.715 C288.856 +G01 X+23.236 Y-30.191 Z-1.789 B13.71 C287.604 +G01 X+23.011 Y-30.262 B13.712 C286.352 +G01 X+22.935 Y-30.286 Z-1.79 B13.715 C285.903 +G01 X+22.668 Y-30.355 Z-1.789 B13.711 C284.426 +G01 X+22.401 Y-30.423 Z-1.79 B13.715 C282.949 +G01 X+22.123 Y-30.479 Z-1.789 B13.71 C281.426 +G01 X+21.844 Y-30.535 Z-1.79 B13.715 C279.903 +G01 X+21.58 Y-30.575 Z-1.789 B13.711 C278.475 +G01 X+21.317 Y-30.615 Z-1.79 B13.715 C277.046 +G01 X+21.043 Y-30.642 Z-1.789 C275.572 +G01 X+20.769 Y-30.668 Z-1.79 C274.097 +G01 X+20.494 Y-30.681 Z-1.789 C272.622 +G01 X+20.218 Y-30.694 Z-1.79 C271.147 +G01 X+19.943 Y-30.693 Z-1.789 C269.672 +G01 X+19.668 Y-30.691 Z-1.79 C268.197 +G01 X+19.393 Y-30.675 Z-1.789 C266.723 +G01 X+19.118 Y-30.66 Z-1.79 C265.248 +G01 X+18.844 Y-30.63 Z-1.789 C263.773 +G01 X+18.57 Y-30.6 Z-1.79 C262.298 +G01 X+18.298 Y-30.556 Z-1.789 B13.711 C260.823 +G01 X+18.026 Y-30.512 Z-1.79 B13.715 C259.349 +G01 X+17.783 Y-30.46 Z-1.789 B13.711 C258.012 +G01 X+17.54 Y-30.408 B13.714 C256.676 +G01 X+17.488 Y-30.397 Z-1.79 B13.715 C256.399 +G01 X+17.252 Y-30.333 Z-1.789 B13.711 C255.086 +G01 X+17.016 Y-30.27 B13.713 C253.772 +G01 X+16.956 Y-30.254 Z-1.79 B13.715 C253.449 +G01 X+16.728 Y-30.18 Z-1.789 B13.711 C252.159 +G01 X+16.499 Y-30.105 B13.713 C250.869 +G01 X+16.432 Y-30.083 Z-1.79 B13.715 C250.5 +G01 X+16.212 Y-29.999 Z-1.789 B13.711 C249.233 +G01 X+15.992 Y-29.915 B13.713 C247.965 +G01 X+15.918 Y-29.886 Z-1.79 B13.715 C247.55 +G01 X+15.666 Y-29.775 Z-1.789 B13.71 C246.076 +G01 X+15.414 Y-29.663 Z-1.79 B13.715 C244.602 +G01 X+15.212 Y-29.561 Z-1.789 B13.71 C243.38 +G01 X+15.01 Y-29.458 B13.712 C242.158 +G01 X+14.865 Y-29.385 Z-1.79 B13.716 C241.352 +G01 X+14.65 Y-29.26 Z-1.789 B13.712 C239.998 +G01 X+14.435 Y-29.135 Z-1.79 B13.715 C238.644 +G01 X+14.078 Y-28.905 Z-1.789 B13.712 C236.352 +G01 X+13.982 Y-28.843 Z-1.79 B13.715 C235.754 +G01 X+13.635 Y-28.593 Z-1.789 B13.712 C233.448 +G01 X+13.535 Y-28.521 Z-1.79 B13.714 C232.802 +G01 X+13.208 Y-28.26 Z-1.789 B13.712 C230.544 +G01 X+13.104 Y-28.177 Z-1.79 B13.714 C229.852 +G01 X+12.898 Y-27.994 Z-1.789 B13.71 C228.377 +G01 X+12.693 Y-27.811 Z-1.79 B13.714 C226.903 +G01 X+12.455 Y-27.576 Z-1.789 B13.71 C225.107 +G01 X+12.454 Y-27.443 Z-1.766 B13.588 C224.583 +G01 X+12.369 Y-27.36 Z-1.767 B13.59 C223.961 +G01 X+12.185 Y-27.159 Z-1.766 C222.489 +G01 X+12.001 Y-26.957 Z-1.767 C221.017 +G01 X+11.827 Y-26.747 Z-1.766 B13.586 C219.541 +G01 X+11.653 Y-26.536 Z-1.767 B13.59 C218.064 +G01 X+11.49 Y-26.317 Z-1.766 B13.586 C216.588 +G01 X+11.328 Y-26.098 Z-1.767 B13.59 C215.111 +G01 X+11.176 Y-25.871 Z-1.766 C213.635 +G01 X+11.025 Y-25.643 Z-1.767 C212.158 +G01 X+10.83 Y-25.314 Z-1.766 B13.587 C210.064 +G01 X+10.747 Y-25.174 Z-1.767 B13.591 C209.205 +G01 X+10.572 Y-24.842 Z-1.766 B13.587 C207.161 +G01 X+10.493 Y-24.691 Z-1.767 B13.591 C206.252 +G01 X+10.378 Y-24.443 Z-1.766 B13.586 C204.775 +G01 X+10.264 Y-24.195 Z-1.767 B13.591 C203.298 +G01 X+10.174 Y-23.972 Z-1.766 B13.586 C202.003 +G01 X+10.085 Y-23.748 B13.588 C200.707 +G01 X+10.061 Y-23.688 Z-1.767 B13.591 C200.345 +G01 X+9.984 Y-23.465 Z-1.766 B13.586 C199.075 +G01 X+9.908 Y-23.241 B13.588 C197.804 +G01 X+9.884 Y-23.172 Z-1.767 B13.591 C197.392 +G01 X+9.82 Y-22.949 Z-1.766 B13.586 C196.146 +G01 X+9.757 Y-22.726 B13.588 C194.9 +G01 X+9.734 Y-22.647 Z-1.767 B13.591 C194.439 +G01 X+9.683 Y-22.425 Z-1.766 B13.586 C193.218 +G01 X+9.632 Y-22.203 B13.588 C191.997 +G01 X+9.612 Y-22.115 Z-1.767 B13.591 C191.486 +G01 X+9.534 Y-21.675 Z-1.766 B13.587 C189.094 +G01 X+9.516 Y-21.577 Z-1.767 B13.591 C188.532 +G01 X+9.483 Y-21.306 Z-1.766 B13.587 C187.056 +G01 X+9.449 Y-21.035 Z-1.767 B13.591 C185.579 +G01 X+9.429 Y-20.763 Z-1.766 C184.102 +G01 X+9.41 Y-20.491 Z-1.767 C182.626 +G01 X+9.404 Y-20.209 Z-1.766 B13.586 C181.105 +G01 X+9.399 Y-19.928 Z-1.767 B13.591 C179.584 +G01 X+9.407 Y-19.664 Z-1.766 B13.587 C178.154 +G01 X+9.415 Y-19.399 Z-1.767 B13.591 C176.725 +G01 X+9.438 Y-19.127 Z-1.766 C175.25 +G01 X+9.46 Y-18.855 Z-1.767 C173.776 +G01 X+9.497 Y-18.585 Z-1.766 C172.301 +G01 X+9.533 Y-18.314 Z-1.767 C170.826 +G01 X+9.583 Y-18.046 Z-1.766 C169.351 +G01 X+9.634 Y-17.778 Z-1.767 C167.877 +G01 X+9.698 Y-17.512 Z-1.766 B13.587 C166.402 +G01 X+9.762 Y-17.247 Z-1.767 B13.591 C164.928 +G01 X+9.84 Y-16.985 Z-1.766 B13.587 C163.453 +G01 X+9.917 Y-16.724 Z-1.767 B13.591 C161.979 +G01 X+10.001 Y-16.487 Z-1.766 B13.587 C160.62 +G01 X+10.085 Y-16.251 B13.59 C159.261 +G01 X+10.099 Y-16.209 Z-1.767 B13.591 C159.029 +G01 X+10.193 Y-15.981 Z-1.766 B13.587 C157.693 +G01 X+10.287 Y-15.753 B13.59 C156.357 +G01 X+10.308 Y-15.704 Z-1.767 B13.591 C156.08 +G01 X+10.411 Y-15.485 Z-1.766 B13.587 C154.767 +G01 X+10.515 Y-15.267 B13.589 C153.454 +G01 X+10.542 Y-15.211 Z-1.767 B13.591 C153.131 +G01 X+10.654 Y-15.002 Z-1.766 B13.587 C151.841 +G01 X+10.767 Y-14.793 B13.589 C150.55 +G01 X+10.801 Y-14.73 Z-1.767 B13.591 C150.182 +G01 X+10.922 Y-14.531 Z-1.766 B13.587 C148.914 +G01 X+11.043 Y-14.332 B13.589 C147.647 +G01 X+11.084 Y-14.264 Z-1.767 B13.591 C147.232 +G01 X+11.213 Y-14.075 Z-1.766 B13.587 C145.988 +G01 X+11.342 Y-13.885 B13.589 C144.743 +G01 X+11.391 Y-13.812 Z-1.767 B13.591 C144.283 +G01 X+11.527 Y-13.634 Z-1.766 B13.587 C143.062 +G01 X+11.663 Y-13.455 B13.589 C141.84 +G01 X+11.721 Y-13.378 Z-1.767 B13.59 C141.334 +G01 X+12.005 Y-13.041 Z-1.766 B13.588 C138.936 +G01 X+12.073 Y-12.96 Z-1.767 B13.59 C138.385 +G01 X+12.26 Y-12.761 Z-1.766 B13.586 C136.91 +G01 X+12.446 Y-12.561 Z-1.767 B13.59 C135.435 +G01 X+12.643 Y-12.371 Z-1.766 B13.586 C133.958 +G01 X+12.84 Y-12.181 Z-1.767 B13.59 C132.481 +G01 X+13.046 Y-12.003 Z-1.766 B13.586 C131.011 +G01 X+13.251 Y-11.824 Z-1.767 B13.59 C129.541 +G01 X+13.466 Y-11.656 Z-1.766 B13.586 C128.064 +G01 X+13.681 Y-11.488 Z-1.767 B13.59 C126.588 +G01 X+13.904 Y-11.33 Z-1.766 C125.111 +G01 X+14.127 Y-11.174 Z-1.767 C123.635 +G01 X+14.456 Y-10.967 Z-1.766 B13.587 C121.516 +G01 X+14.59 Y-10.883 Z-1.767 B13.59 C120.681 +G01 X+14.92 Y-10.698 Z-1.766 B13.587 C118.612 +G01 X+15.066 Y-10.616 Z-1.767 B13.591 C117.728 +G01 X+15.311 Y-10.496 Z-1.766 B13.586 C116.252 +G01 X+15.556 Y-10.375 Z-1.767 B13.591 C114.775 +G01 X+15.779 Y-10.279 Z-1.766 B13.586 C113.467 +G01 X+16.002 Y-10.183 B13.588 C112.159 +G01 X+16.057 Y-10.159 Z-1.767 B13.591 C111.822 +G01 X+16.281 Y-10.076 Z-1.766 B13.586 C110.539 +G01 X+16.504 Y-9.993 B13.588 C109.255 +G01 X+16.569 Y-9.969 Z-1.767 B13.591 C108.869 +G01 X+16.792 Y-9.899 Z-1.766 B13.586 C107.611 +G01 X+17.016 Y-9.829 B13.588 C106.352 +G01 X+17.09 Y-9.806 Z-1.767 B13.591 C105.915 +G01 X+17.312 Y-9.748 Z-1.766 B13.586 C104.682 +G01 X+17.535 Y-9.691 B13.588 C103.449 +G01 X+17.618 Y-9.669 Z-1.767 B13.591 C102.962 +G01 X+18.06 Y-9.579 Z-1.766 B13.588 C100.546 +G01 X+18.153 Y-9.56 Z-1.767 B13.591 C100.009 +G01 X+18.59 Y-9.495 Z-1.766 B13.587 C97.642 +G01 X+18.693 Y-9.479 Z-1.767 B13.591 C97.056 +G01 X+18.965 Y-9.452 Z-1.766 B13.587 C95.579 +G01 X+19.237 Y-9.426 Z-1.767 B13.591 C94.102 +G01 X+19.52 Y-9.413 Z-1.766 B13.586 C92.569 +G01 X+19.804 Y-9.401 Z-1.767 B13.591 C91.036 +G01 X+20.072 Y-9.402 Z-1.766 B13.586 C89.584 +G01 X+20.341 Y-9.404 Z-1.767 B13.591 C88.133 +G01 X+20.607 Y-9.419 Z-1.766 B13.587 C86.691 +G01 X+20.873 Y-9.434 Z-1.767 B13.591 C85.25 +G01 X+21.144 Y-9.464 Z-1.766 C83.776 +G01 X+21.416 Y-9.493 Z-1.767 C82.301 +G01 X+21.685 Y-9.537 Z-1.766 C80.826 +G01 X+21.955 Y-9.58 Z-1.767 C79.351 +G01 X+22.222 Y-9.637 Z-1.766 C77.877 +G01 X+22.488 Y-9.695 Z-1.767 C76.402 +G01 X+22.752 Y-9.765 Z-1.766 B13.587 C74.928 +G01 X+23.016 Y-9.836 Z-1.767 B13.591 C73.453 +G01 X+23.275 Y-9.921 Z-1.766 B13.587 C71.979 +G01 X+23.535 Y-10.005 Z-1.767 B13.591 C70.504 +G01 X+23.767 Y-10.094 Z-1.766 B13.587 C69.156 +G01 X+23.999 Y-10.183 B13.59 C67.809 +G01 X+24.045 Y-10.2 Z-1.767 B13.591 C67.555 +G01 X+24.268 Y-10.299 Z-1.766 B13.587 C66.23 +G01 X+24.491 Y-10.398 B13.59 C64.906 +G01 X+24.544 Y-10.422 Z-1.767 B13.591 C64.605 +G01 X+24.758 Y-10.53 Z-1.766 B13.587 C63.304 +G01 X+24.972 Y-10.638 B13.589 C62.002 +G01 X+25.031 Y-10.668 Z-1.767 B13.591 C61.656 +G01 X+25.235 Y-10.785 Z-1.766 B13.587 C60.377 +G01 X+25.44 Y-10.902 B13.589 C59.098 +G01 X+25.505 Y-10.939 Z-1.767 B13.591 C58.707 +G01 X+25.699 Y-11.064 Z-1.766 B13.587 C57.451 +G01 X+25.893 Y-11.19 B13.589 C56.195 +G01 X+25.964 Y-11.235 Z-1.767 B13.591 C55.758 +G01 X+26.148 Y-11.367 Z-1.766 B13.587 C54.525 +G01 X+26.332 Y-11.499 B13.589 C53.292 +G01 X+26.407 Y-11.554 Z-1.767 B13.591 C52.809 +G01 X+26.754 Y-11.831 Z-1.766 B13.588 C50.388 +G01 X+26.833 Y-11.895 Z-1.767 B13.59 C49.859 +G01 X+27.159 Y-12.184 Z-1.766 B13.588 C47.485 +G01 X+27.242 Y-12.257 Z-1.767 B13.59 C46.91 +G01 X+27.436 Y-12.448 Z-1.766 B13.586 C45.435 +G01 X+27.631 Y-12.64 Z-1.767 B13.59 C43.961 +G01 X+27.815 Y-12.841 Z-1.766 C42.489 +G01 X+27.999 Y-13.043 Z-1.767 C41.018 +G01 X+28.173 Y-13.253 Z-1.766 B13.586 C39.541 +G01 X+28.347 Y-13.464 Z-1.767 B13.59 C38.064 +G01 X+28.51 Y-13.683 Z-1.766 B13.586 C36.588 +G01 X+28.672 Y-13.902 Z-1.767 B13.59 C35.111 +G01 X+28.824 Y-14.129 Z-1.766 C33.635 +G01 X+28.975 Y-14.357 Z-1.767 C32.158 +G01 X+29.17 Y-14.686 Z-1.766 B13.587 C30.064 +G01 X+29.253 Y-14.826 Z-1.767 B13.591 C29.205 +G01 X+29.428 Y-15.158 Z-1.766 B13.587 C27.161 +G01 X+29.507 Y-15.309 Z-1.767 B13.591 C26.252 +G01 X+29.622 Y-15.557 Z-1.766 B13.586 C24.775 +G01 X+29.736 Y-15.805 Z-1.767 B13.591 C23.298 +G01 X+29.826 Y-16.028 Z-1.766 B13.586 C22.003 +G01 X+29.915 Y-16.252 B13.588 C20.707 +G01 X+29.939 Y-16.312 Z-1.767 B13.591 C20.345 +G01 X+30.016 Y-16.535 Z-1.766 B13.586 C19.075 +G01 X+30.092 Y-16.759 B13.588 C17.804 +G01 X+30.116 Y-16.828 Z-1.767 B13.591 C17.392 +G01 X+30.18 Y-17.051 Z-1.766 B13.586 C16.146 +G01 X+30.243 Y-17.274 B13.588 C14.9 +G01 X+30.266 Y-17.353 Z-1.767 B13.591 C14.439 +G01 X+30.317 Y-17.575 Z-1.766 B13.586 C13.218 +G01 X+30.368 Y-17.797 B13.588 C11.997 +G01 X+30.388 Y-17.885 Z-1.767 B13.591 C11.486 +G01 X+30.466 Y-18.325 Z-1.766 B13.587 C9.094 +G01 X+30.484 Y-18.423 Z-1.767 B13.591 C8.532 +G01 X+30.517 Y-18.694 Z-1.766 B13.587 C7.056 +G01 X+30.551 Y-18.965 Z-1.767 B13.591 C5.579 +G01 X+30.571 Y-19.237 Z-1.766 C4.102 +G01 X+30.59 Y-19.509 Z-1.767 C2.626 +G01 X+30.596 Y-19.791 Z-1.766 B13.586 C1.105 +G01 X+30.601 Y-20.072 Z-1.767 B13.591 C359.584 +G01 X+30.593 Y-20.336 Z-1.766 B13.587 C358.154 +G01 X+30.585 Y-20.601 Z-1.767 B13.591 C356.725 +G01 X+30.562 Y-20.873 Z-1.766 C355.25 +G01 X+30.54 Y-21.145 Z-1.767 C353.776 +G01 X+30.503 Y-21.415 Z-1.766 C352.301 +G01 X+30.467 Y-21.686 Z-1.767 C350.826 +G01 X+30.417 Y-21.954 Z-1.766 C349.351 +G01 X+30.366 Y-22.222 Z-1.767 C347.877 +G01 X+30.302 Y-22.488 Z-1.766 B13.587 C346.402 +G01 X+30.238 Y-22.753 Z-1.767 B13.591 C344.928 +G01 X+30.16 Y-23.015 Z-1.766 B13.587 C343.453 +G01 X+30.083 Y-23.276 Z-1.767 B13.591 C341.979 +G01 X+29.999 Y-23.513 Z-1.766 B13.587 C340.62 +G01 X+29.915 Y-23.749 B13.59 C339.261 +G01 X+29.901 Y-23.791 Z-1.767 B13.591 C339.029 +G01 X+29.807 Y-24.019 Z-1.766 B13.587 C337.693 +G01 X+29.713 Y-24.247 B13.59 C336.357 +G01 X+29.692 Y-24.296 Z-1.767 B13.591 C336.08 +G01 X+29.589 Y-24.514 Z-1.766 B13.587 C334.767 +G01 X+29.485 Y-24.733 B13.589 C333.454 +G01 X+29.458 Y-24.789 Z-1.767 B13.591 C333.131 +G01 X+29.346 Y-24.998 Z-1.766 B13.587 C331.841 +G01 X+29.233 Y-25.207 B13.589 C330.55 +G01 X+29.199 Y-25.269 Z-1.767 B13.591 C330.182 +G01 X+29.078 Y-25.469 Z-1.766 B13.587 C328.914 +G01 X+28.957 Y-25.668 B13.589 C327.647 +G01 X+28.916 Y-25.736 Z-1.767 B13.591 C327.232 +G01 X+28.787 Y-25.925 Z-1.766 B13.587 C325.988 +G01 X+28.658 Y-26.115 B13.589 C324.743 +G01 X+28.609 Y-26.187 Z-1.767 B13.591 C324.283 +G01 X+28.473 Y-26.366 Z-1.766 B13.587 C323.062 +G01 X+28.337 Y-26.545 B13.589 C321.84 +G01 X+28.279 Y-26.622 Z-1.767 B13.59 C321.334 +G01 X+27.995 Y-26.959 Z-1.766 B13.588 C318.936 +G01 X+27.927 Y-27.04 Z-1.767 B13.59 C318.385 +G01 X+27.74 Y-27.239 Z-1.766 B13.586 C316.91 +G01 X+27.554 Y-27.438 Z-1.767 B13.59 C315.435 +G01 X+27.357 Y-27.629 Z-1.766 B13.586 C313.958 +G01 X+27.16 Y-27.819 Z-1.767 B13.59 C312.481 +G01 X+26.954 Y-27.997 Z-1.766 B13.586 C311.011 +G01 X+26.749 Y-28.176 Z-1.767 B13.59 C309.541 +G01 X+26.534 Y-28.344 Z-1.766 B13.586 C308.064 +G01 X+26.319 Y-28.512 Z-1.767 B13.59 C306.588 +G01 X+26.096 Y-28.669 Z-1.766 C305.111 +G01 X+25.873 Y-28.826 Z-1.767 C303.635 +G01 X+25.544 Y-29.033 Z-1.766 B13.587 C301.516 +G01 X+25.41 Y-29.117 Z-1.767 B13.59 C300.681 +G01 X+25.08 Y-29.302 Z-1.766 B13.587 C298.612 +G01 X+24.934 Y-29.383 Z-1.767 B13.591 C297.728 +G01 X+24.689 Y-29.504 Z-1.766 B13.586 C296.252 +G01 X+24.444 Y-29.625 Z-1.767 B13.591 C294.775 +G01 X+24.221 Y-29.721 Z-1.766 B13.586 C293.467 +G01 X+23.998 Y-29.817 B13.588 C292.159 +G01 X+23.943 Y-29.841 Z-1.767 B13.591 C291.822 +G01 X+23.719 Y-29.924 Z-1.766 B13.586 C290.539 +G01 X+23.496 Y-30.007 B13.588 C289.255 +G01 X+23.431 Y-30.031 Z-1.767 B13.591 C288.869 +G01 X+23.208 Y-30.101 Z-1.766 B13.586 C287.611 +G01 X+22.984 Y-30.171 B13.588 C286.352 +G01 X+22.91 Y-30.194 Z-1.767 B13.591 C285.915 +G01 X+22.688 Y-30.252 Z-1.766 B13.586 C284.682 +G01 X+22.465 Y-30.309 B13.588 C283.449 +G01 X+22.382 Y-30.331 Z-1.767 B13.591 C282.962 +G01 X+21.94 Y-30.42 Z-1.766 B13.588 C280.546 +G01 X+21.847 Y-30.439 Z-1.767 B13.591 C280.009 +G01 X+21.41 Y-30.505 Z-1.766 B13.587 C277.642 +G01 X+21.307 Y-30.521 Z-1.767 B13.591 C277.056 +G01 X+21.035 Y-30.547 Z-1.766 B13.587 C275.579 +G01 X+20.763 Y-30.574 Z-1.767 B13.591 C274.102 +G01 X+20.48 Y-30.587 Z-1.766 B13.586 C272.569 +G01 X+20.196 Y-30.599 Z-1.767 B13.591 C271.036 +G01 X+19.928 Y-30.598 Z-1.766 B13.586 C269.584 +G01 X+19.659 Y-30.596 Z-1.767 B13.591 C268.133 +G01 X+19.393 Y-30.581 Z-1.766 B13.587 C266.691 +G01 X+19.127 Y-30.565 Z-1.767 B13.591 C265.25 +G01 X+18.856 Y-30.536 Z-1.766 C263.775 +G01 X+18.584 Y-30.507 Z-1.767 C262.301 +G01 X+18.315 Y-30.463 Z-1.766 C260.826 +G01 X+18.045 Y-30.42 Z-1.767 C259.351 +G01 X+17.778 Y-30.363 Z-1.766 C257.877 +G01 X+17.512 Y-30.305 Z-1.767 C256.402 +G01 X+17.248 Y-30.235 Z-1.766 B13.587 C254.928 +G01 X+16.984 Y-30.164 Z-1.767 B13.591 C253.453 +G01 X+16.725 Y-30.079 Z-1.766 B13.587 C251.979 +G01 X+16.465 Y-29.995 Z-1.767 B13.591 C250.504 +G01 X+16.233 Y-29.906 Z-1.766 B13.587 C249.156 +G01 X+16.001 Y-29.817 B13.59 C247.809 +G01 X+15.955 Y-29.8 Z-1.767 B13.591 C247.555 +G01 X+15.706 Y-29.689 Z-1.766 B13.587 C246.081 +G01 X+15.456 Y-29.578 Z-1.767 B13.591 C244.607 +G01 X+15.242 Y-29.47 Z-1.766 B13.587 C243.304 +G01 X+15.028 Y-29.362 B13.589 C242.002 +G01 X+14.91 Y-29.302 Z-1.767 B13.592 C241.352 +G01 X+14.698 Y-29.179 Z-1.766 B13.588 C240. +G01 X+14.486 Y-29.055 Z-1.767 B13.591 C238.649 +G01 X+14.296 Y-28.933 Z-1.766 B13.587 C237.422 +G01 X+14.107 Y-28.811 B13.589 C236.195 +G01 X+14.037 Y-28.765 Z-1.767 B13.591 C235.76 +G01 X+13.852 Y-28.633 Z-1.766 B13.587 C234.526 +G01 X+13.668 Y-28.5 B13.589 C233.291 +G01 X+13.593 Y-28.446 Z-1.767 B13.591 C232.808 +G01 X+13.246 Y-28.169 Z-1.766 B13.588 C230.388 +G01 X+13.167 Y-28.105 Z-1.767 B13.59 C229.859 +G01 X+12.962 Y-27.924 Z-1.766 B13.586 C228.385 +G01 X+12.758 Y-27.743 Z-1.767 B13.59 C226.91 +G01 X+12.521 Y-27.509 Z-1.766 B13.586 C225.109 +G01 Y-27.376 Z-1.743 B13.464 C224.576 +G01 X+12.439 Y-27.295 Z-1.744 B13.466 C223.969 +G01 X+12.256 Y-27.096 Z-1.743 B13.462 C222.498 +G01 X+12.073 Y-26.896 Z-1.744 B13.466 C221.026 +G01 X+11.901 Y-26.688 Z-1.743 B13.462 C219.55 +G01 X+11.729 Y-26.479 Z-1.744 B13.466 C218.074 +G01 X+11.567 Y-26.262 Z-1.743 B13.462 C216.597 +G01 X+11.406 Y-26.045 Z-1.744 B13.467 C215.121 +G01 X+11.256 Y-25.82 Z-1.743 C213.645 +G01 X+11.106 Y-25.594 Z-1.744 C212.168 +G01 X+10.897 Y-25.241 Z-1.743 B13.464 C209.907 +G01 X+10.83 Y-25.129 Z-1.744 B13.467 C209.216 +G01 X+10.643 Y-24.774 Z-1.743 B13.464 C207.004 +G01 X+10.578 Y-24.65 Z-1.744 B13.467 C206.263 +G01 X+10.465 Y-24.405 Z-1.743 B13.462 C204.786 +G01 X+10.351 Y-24.159 Z-1.744 B13.467 C203.31 +G01 X+10.262 Y-23.937 Z-1.743 B13.462 C202.008 +G01 X+10.173 Y-23.715 B13.464 C200.707 +G01 X+10.15 Y-23.657 Z-1.744 B13.467 C200.357 +G01 X+10.074 Y-23.434 Z-1.743 B13.462 C199.081 +G01 X+9.998 Y-23.212 B13.464 C197.804 +G01 X+9.975 Y-23.145 Z-1.744 B13.467 C197.404 +G01 X+9.911 Y-22.923 Z-1.743 B13.462 C196.153 +G01 X+9.848 Y-22.701 B13.464 C194.9 +G01 X+9.826 Y-22.625 Z-1.744 B13.467 C194.451 +G01 X+9.724 Y-22.184 Z-1.743 B13.464 C191.997 +G01 X+9.705 Y-22.097 Z-1.744 B13.467 C191.499 +G01 X+9.627 Y-21.66 Z-1.743 B13.464 C189.094 +G01 X+9.61 Y-21.565 Z-1.744 B13.467 C188.546 +G01 X+9.557 Y-21.133 Z-1.743 B13.463 C186.191 +G01 X+9.543 Y-21.028 Z-1.744 B13.467 C185.593 +G01 X+9.513 Y-20.602 Z-1.743 B13.463 C183.288 +G01 X+9.504 Y-20.488 Z-1.744 B13.467 C182.641 +G01 X+9.499 Y-20.218 Z-1.743 B13.463 C181.164 +G01 X+9.493 Y-19.947 Z-1.744 B13.467 C179.688 +G01 X+9.501 Y-19.677 Z-1.743 C178.211 +G01 X+9.51 Y-19.406 Z-1.744 C176.735 +G01 X+9.532 Y-19.137 Z-1.743 C175.258 +G01 X+9.554 Y-18.867 Z-1.744 C173.782 +G01 X+9.592 Y-18.588 Z-1.743 B13.462 C172.25 +G01 X+9.63 Y-18.31 Z-1.744 B13.467 C170.717 +G01 X+9.678 Y-18.054 Z-1.743 B13.463 C169.299 +G01 X+9.726 Y-17.799 Z-1.744 B13.467 C167.88 +G01 X+9.789 Y-17.536 Z-1.743 C166.406 +G01 X+9.853 Y-17.273 Z-1.744 C164.931 +G01 X+9.93 Y-17.014 Z-1.743 C163.457 +G01 X+10.007 Y-16.754 Z-1.744 C161.982 +G01 X+10.097 Y-16.499 Z-1.743 C160.508 +G01 X+10.187 Y-16.244 Z-1.744 C159.033 +G01 X+10.29 Y-15.994 Z-1.743 B13.463 C157.559 +G01 X+10.394 Y-15.744 Z-1.744 B13.467 C156.085 +G01 X+10.509 Y-15.499 Z-1.743 B13.463 C154.61 +G01 X+10.625 Y-15.255 Z-1.744 B13.467 C153.136 +G01 X+10.744 Y-15.034 Z-1.743 B13.463 C151.765 +G01 X+10.863 Y-14.814 Z-1.744 B13.466 C150.394 +G01 X+10.882 Y-14.779 B13.467 C150.187 +G01 X+11.01 Y-14.568 Z-1.743 B13.463 C148.839 +G01 X+11.138 Y-14.358 Z-1.744 B13.466 C147.49 +G01 X+11.163 Y-14.316 B13.467 C147.238 +G01 X+11.299 Y-14.116 Z-1.743 B13.463 C145.913 +G01 X+11.435 Y-13.916 B13.466 C144.587 +G01 X+11.467 Y-13.869 Z-1.744 B13.467 C144.289 +G01 X+11.611 Y-13.679 Z-1.743 B13.463 C142.987 +G01 X+11.755 Y-13.49 B13.465 C141.683 +G01 X+11.794 Y-13.438 Z-1.744 B13.467 C141.341 +G01 X+11.968 Y-13.231 Z-1.743 B13.462 C139.866 +G01 X+12.143 Y-13.024 Z-1.744 B13.467 C138.392 +G01 X+12.328 Y-12.826 Z-1.743 B13.462 C136.917 +G01 X+12.513 Y-12.629 Z-1.744 B13.466 C135.443 +G01 X+12.707 Y-12.441 Z-1.743 B13.462 C133.969 +G01 X+12.902 Y-12.253 Z-1.744 B13.466 C132.494 +G01 X+13.106 Y-12.076 Z-1.743 C131.022 +G01 X+13.31 Y-11.898 Z-1.744 C129.55 +G01 X+13.523 Y-11.731 Z-1.743 B13.462 C128.074 +G01 X+13.736 Y-11.564 Z-1.744 B13.466 C126.597 +G01 X+13.957 Y-11.409 Z-1.743 C125.121 +G01 X+14.179 Y-11.253 Z-1.744 B13.467 C123.645 +G01 X+14.53 Y-11.032 Z-1.743 B13.464 C121.359 +G01 X+14.637 Y-10.965 Z-1.744 B13.467 C120.692 +G01 X+14.991 Y-10.767 Z-1.743 B13.464 C118.456 +G01 X+15.109 Y-10.701 Z-1.744 B13.467 C117.739 +G01 X+15.351 Y-10.581 Z-1.743 B13.462 C116.263 +G01 X+15.594 Y-10.462 Z-1.744 B13.467 C114.786 +G01 X+15.816 Y-10.366 Z-1.743 B13.462 C113.473 +G01 X+16.038 Y-10.27 B13.465 C112.159 +G01 X+16.091 Y-10.247 Z-1.744 B13.467 C111.834 +G01 X+16.313 Y-10.165 Z-1.743 B13.462 C110.545 +G01 X+16.536 Y-10.082 B13.464 C109.256 +G01 X+16.598 Y-10.059 Z-1.744 B13.467 C108.881 +G01 X+16.82 Y-9.989 Z-1.743 B13.462 C107.617 +G01 X+17.042 Y-9.92 B13.464 C106.352 +G01 X+17.114 Y-9.897 Z-1.744 B13.467 C105.928 +G01 X+17.336 Y-9.84 Z-1.743 B13.462 C104.689 +G01 X+17.557 Y-9.783 B13.464 C103.449 +G01 X+17.638 Y-9.762 Z-1.744 B13.467 C102.975 +G01 X+18.077 Y-9.672 Z-1.743 B13.464 C100.546 +G01 X+18.168 Y-9.654 Z-1.744 B13.467 C100.022 +G01 X+18.603 Y-9.588 Z-1.743 B13.464 C97.643 +G01 X+18.703 Y-9.573 Z-1.744 B13.467 C97.07 +G01 X+19.132 Y-9.531 Z-1.743 B13.463 C94.739 +G01 X+19.242 Y-9.52 Z-1.744 B13.467 C94.117 +G01 X+19.663 Y-9.501 Z-1.743 B13.463 C91.836 +G01 X+19.782 Y-9.495 Z-1.744 B13.467 C91.164 +G01 X+20.053 Y-9.496 Z-1.743 B13.463 C89.688 +G01 X+20.323 Y-9.498 Z-1.744 B13.467 C88.211 +G01 X+20.594 Y-9.513 Z-1.743 C86.735 +G01 X+20.864 Y-9.529 Z-1.744 C85.258 +G01 X+21.133 Y-9.558 Z-1.743 C83.782 +G01 X+21.402 Y-9.587 Z-1.744 C82.306 +G01 X+21.677 Y-9.631 Z-1.743 B13.462 C80.786 +G01 X+21.952 Y-9.676 Z-1.744 B13.467 C79.266 +G01 X+22.209 Y-9.731 Z-1.743 B13.463 C77.836 +G01 X+22.465 Y-9.786 Z-1.744 B13.467 C76.406 +G01 X+22.726 Y-9.856 Z-1.743 C74.931 +G01 X+22.987 Y-9.927 Z-1.744 C73.457 +G01 X+23.245 Y-10.01 Z-1.743 C71.982 +G01 X+23.502 Y-10.094 Z-1.744 C70.508 +G01 X+23.755 Y-10.19 Z-1.743 C69.033 +G01 X+24.007 Y-10.287 Z-1.744 C67.559 +G01 X+24.255 Y-10.397 Z-1.743 B13.463 C66.085 +G01 X+24.502 Y-10.506 Z-1.744 B13.467 C64.61 +G01 X+24.743 Y-10.628 Z-1.743 B13.463 C63.136 +G01 X+24.985 Y-10.751 Z-1.744 B13.467 C61.662 +G01 X+25.2 Y-10.874 Z-1.743 B13.463 C60.302 +G01 X+25.416 Y-10.998 Z-1.744 B13.466 C58.942 +G01 X+25.454 Y-11.02 B13.467 C58.713 +G01 X+25.66 Y-11.152 Z-1.743 B13.463 C57.376 +G01 X+25.865 Y-11.284 Z-1.744 B13.466 C56.039 +G01 X+25.909 Y-11.312 B13.467 C55.764 +G01 X+26.104 Y-11.452 Z-1.743 B13.463 C54.45 +G01 X+26.299 Y-11.592 B13.465 C53.135 +G01 X+26.349 Y-11.628 Z-1.744 B13.467 C52.815 +G01 X+26.533 Y-11.775 Z-1.743 B13.463 C51.523 +G01 X+26.717 Y-11.922 B13.465 C50.232 +G01 X+26.771 Y-11.966 Z-1.744 B13.467 C49.866 +G01 X+26.944 Y-12.119 Z-1.743 B13.463 C48.597 +G01 X+27.117 Y-12.273 B13.465 C47.328 +G01 X+27.176 Y-12.325 Z-1.744 B13.466 C46.917 +G01 X+27.369 Y-12.515 Z-1.743 B13.462 C45.443 +G01 X+27.561 Y-12.705 Z-1.744 B13.466 C43.969 +G01 X+27.744 Y-12.904 Z-1.743 B13.462 C42.498 +G01 X+27.927 Y-13.104 Z-1.744 B13.466 C41.026 +G01 X+28.099 Y-13.312 Z-1.743 B13.462 C39.55 +G01 X+28.271 Y-13.521 Z-1.744 B13.466 C38.074 +G01 X+28.433 Y-13.738 Z-1.743 B13.462 C36.597 +G01 X+28.594 Y-13.955 Z-1.744 B13.467 C35.121 +G01 X+28.744 Y-14.18 Z-1.743 C33.645 +G01 X+28.894 Y-14.406 Z-1.744 C32.168 +G01 X+29.103 Y-14.758 Z-1.743 B13.464 C29.907 +G01 X+29.17 Y-14.871 Z-1.744 B13.467 C29.216 +G01 X+29.357 Y-15.226 Z-1.743 B13.464 C27.004 +G01 X+29.422 Y-15.35 Z-1.744 B13.467 C26.263 +G01 X+29.535 Y-15.595 Z-1.743 B13.462 C24.786 +G01 X+29.649 Y-15.841 Z-1.744 B13.467 C23.31 +G01 X+29.738 Y-16.063 Z-1.743 B13.462 C22.008 +G01 X+29.827 Y-16.285 B13.464 C20.707 +G01 X+29.85 Y-16.343 Z-1.744 B13.467 C20.357 +G01 X+29.926 Y-16.565 Z-1.743 B13.462 C19.081 +G01 X+30.002 Y-16.788 B13.464 C17.804 +G01 X+30.025 Y-16.855 Z-1.744 B13.467 C17.404 +G01 X+30.089 Y-17.077 Z-1.743 B13.462 C16.153 +G01 X+30.152 Y-17.299 B13.464 C14.9 +G01 X+30.174 Y-17.375 Z-1.744 B13.467 C14.452 +G01 X+30.276 Y-17.816 Z-1.743 B13.464 C11.997 +G01 X+30.295 Y-17.903 Z-1.744 B13.467 C11.499 +G01 X+30.373 Y-18.34 Z-1.743 B13.464 C9.094 +G01 X+30.39 Y-18.435 Z-1.744 B13.467 C8.546 +G01 X+30.443 Y-18.867 Z-1.743 B13.463 C6.191 +G01 X+30.457 Y-18.972 Z-1.744 B13.467 C5.593 +G01 X+30.487 Y-19.398 Z-1.743 B13.463 C3.288 +G01 X+30.496 Y-19.512 Z-1.744 B13.467 C2.641 +G01 X+30.501 Y-19.782 Z-1.743 B13.463 C1.164 +G01 X+30.507 Y-20.053 Z-1.744 B13.467 C359.688 +G01 X+30.499 Y-20.323 Z-1.743 C358.211 +G01 X+30.49 Y-20.594 Z-1.744 C356.735 +G01 X+30.468 Y-20.863 Z-1.743 C355.258 +G01 X+30.446 Y-21.133 Z-1.744 C353.782 +G01 X+30.408 Y-21.412 Z-1.743 B13.462 C352.25 +G01 X+30.37 Y-21.69 Z-1.744 B13.467 C350.717 +G01 X+30.322 Y-21.946 Z-1.743 B13.463 C349.299 +G01 X+30.274 Y-22.201 Z-1.744 B13.467 C347.88 +G01 X+30.211 Y-22.464 Z-1.743 C346.406 +G01 X+30.147 Y-22.727 Z-1.744 C344.931 +G01 X+30.07 Y-22.986 Z-1.743 C343.457 +G01 X+29.993 Y-23.246 Z-1.744 C341.982 +G01 X+29.903 Y-23.501 Z-1.743 C340.508 +G01 X+29.813 Y-23.756 Z-1.744 C339.033 +G01 X+29.71 Y-24.006 Z-1.743 B13.463 C337.559 +G01 X+29.606 Y-24.256 Z-1.744 B13.467 C336.085 +G01 X+29.491 Y-24.5 Z-1.743 B13.463 C334.61 +G01 X+29.375 Y-24.745 Z-1.744 B13.467 C333.136 +G01 X+29.256 Y-24.966 Z-1.743 B13.463 C331.765 +G01 X+29.137 Y-25.186 Z-1.744 B13.466 C330.394 +G01 X+29.118 Y-25.221 B13.467 C330.187 +G01 X+28.99 Y-25.432 Z-1.743 B13.463 C328.839 +G01 X+28.862 Y-25.642 Z-1.744 B13.466 C327.49 +G01 X+28.837 Y-25.684 B13.467 C327.238 +G01 X+28.701 Y-25.884 Z-1.743 B13.463 C325.913 +G01 X+28.565 Y-26.084 B13.466 C324.587 +G01 X+28.533 Y-26.131 Z-1.744 B13.467 C324.289 +G01 X+28.389 Y-26.32 Z-1.743 B13.463 C322.987 +G01 X+28.245 Y-26.51 B13.465 C321.683 +G01 X+28.206 Y-26.562 Z-1.744 B13.467 C321.341 +G01 X+28.032 Y-26.769 Z-1.743 B13.462 C319.866 +G01 X+27.857 Y-26.976 Z-1.744 B13.467 C318.392 +G01 X+27.672 Y-27.173 Z-1.743 B13.462 C316.917 +G01 X+27.488 Y-27.371 Z-1.744 B13.466 C315.443 +G01 X+27.293 Y-27.559 Z-1.743 B13.462 C313.969 +G01 X+27.098 Y-27.747 Z-1.744 B13.466 C312.494 +G01 X+26.894 Y-27.924 Z-1.743 C311.022 +G01 X+26.69 Y-28.102 Z-1.744 C309.55 +G01 X+26.477 Y-28.269 Z-1.743 B13.462 C308.074 +G01 X+26.264 Y-28.435 Z-1.744 B13.466 C306.597 +G01 X+26.043 Y-28.591 Z-1.743 C305.121 +G01 X+25.821 Y-28.747 Z-1.744 B13.467 C303.645 +G01 X+25.47 Y-28.967 Z-1.743 B13.464 C301.359 +G01 X+25.363 Y-29.035 Z-1.744 B13.467 C300.692 +G01 X+25.009 Y-29.233 Z-1.743 B13.464 C298.456 +G01 X+24.891 Y-29.299 Z-1.744 B13.467 C297.739 +G01 X+24.649 Y-29.419 Z-1.743 B13.462 C296.263 +G01 X+24.406 Y-29.538 Z-1.744 B13.467 C294.786 +G01 X+24.184 Y-29.634 Z-1.743 B13.462 C293.472 +G01 X+23.962 Y-29.73 B13.465 C292.159 +G01 X+23.909 Y-29.753 Z-1.744 B13.467 C291.834 +G01 X+23.687 Y-29.835 Z-1.743 B13.462 C290.545 +G01 X+23.464 Y-29.918 B13.464 C289.256 +G01 X+23.402 Y-29.941 Z-1.744 B13.467 C288.881 +G01 X+23.18 Y-30.011 Z-1.743 B13.462 C287.617 +G01 X+22.958 Y-30.08 B13.464 C286.352 +G01 X+22.886 Y-30.103 Z-1.744 B13.467 C285.928 +G01 X+22.665 Y-30.16 Z-1.743 B13.462 C284.689 +G01 X+22.443 Y-30.217 B13.464 C283.449 +G01 X+22.362 Y-30.238 Z-1.744 B13.467 C282.975 +G01 X+21.923 Y-30.327 Z-1.743 B13.464 C280.546 +G01 X+21.832 Y-30.346 Z-1.744 B13.467 C280.022 +G01 X+21.397 Y-30.411 Z-1.743 B13.464 C277.643 +G01 X+21.297 Y-30.427 Z-1.744 B13.467 C277.07 +G01 X+20.868 Y-30.469 Z-1.743 B13.463 C274.739 +G01 X+20.758 Y-30.479 Z-1.744 B13.467 C274.117 +G01 X+20.337 Y-30.499 Z-1.743 B13.463 C271.836 +G01 X+20.218 Y-30.505 Z-1.744 B13.467 C271.164 +G01 X+19.947 Y-30.503 Z-1.743 B13.463 C269.688 +G01 X+19.677 Y-30.502 Z-1.744 B13.467 C268.211 +G01 X+19.406 Y-30.487 Z-1.743 C266.735 +G01 X+19.136 Y-30.471 Z-1.744 C265.258 +G01 X+18.867 Y-30.442 Z-1.743 C263.782 +G01 X+18.598 Y-30.413 Z-1.744 C262.306 +G01 X+18.323 Y-30.368 Z-1.743 B13.462 C260.786 +G01 X+18.048 Y-30.323 Z-1.744 B13.467 C259.266 +G01 X+17.791 Y-30.269 Z-1.743 B13.463 C257.836 +G01 X+17.535 Y-30.214 Z-1.744 B13.467 C256.406 +G01 X+17.274 Y-30.144 Z-1.743 C254.931 +G01 X+17.013 Y-30.073 Z-1.744 C253.457 +G01 X+16.755 Y-29.99 Z-1.743 C251.982 +G01 X+16.498 Y-29.906 Z-1.744 C250.508 +G01 X+16.245 Y-29.81 Z-1.743 C249.033 +G01 X+15.993 Y-29.713 Z-1.744 C247.559 +G01 X+15.746 Y-29.603 Z-1.743 C246.086 +G01 X+15.498 Y-29.494 Z-1.744 C244.612 +G01 X+15.227 Y-29.356 Z-1.743 B13.463 C242.982 +G01 X+14.955 Y-29.218 Z-1.744 B13.468 C241.352 +G01 X+14.745 Y-29.097 Z-1.743 B13.464 C240.003 +G01 X+14.536 Y-28.975 Z-1.744 B13.468 C238.653 +G01 X+14.335 Y-28.846 Z-1.743 B13.463 C237.346 +G01 X+14.135 Y-28.716 Z-1.744 B13.466 C236.039 +G01 X+14.091 Y-28.688 B13.467 C235.764 +G01 X+13.896 Y-28.548 Z-1.743 B13.463 C234.45 +G01 X+13.701 Y-28.408 B13.465 C233.135 +G01 X+13.651 Y-28.372 Z-1.744 B13.467 C232.815 +G01 X+13.467 Y-28.225 Z-1.743 B13.463 C231.523 +G01 X+13.283 Y-28.078 B13.465 C230.231 +G01 X+13.229 Y-28.034 Z-1.744 B13.467 C229.866 +G01 X+13.026 Y-27.854 Z-1.743 B13.462 C228.392 +G01 X+12.824 Y-27.675 Z-1.744 B13.466 C226.917 +G01 X+12.588 Y-27.442 Z-1.743 B13.463 C225.112 +G01 Y-27.309 Z-1.721 B13.341 C224.579 +G01 X+12.508 Y-27.231 B13.343 C223.976 +G01 X+12.326 Y-27.033 Z-1.72 B13.338 C222.503 +G01 X+12.145 Y-26.835 Z-1.721 B13.343 C221.029 +G01 X+11.975 Y-26.629 Z-1.72 B13.338 C219.556 +G01 X+11.804 Y-26.422 Z-1.721 B13.343 C218.083 +G01 X+11.644 Y-26.207 Z-1.72 B13.338 C216.607 +G01 X+11.484 Y-25.991 Z-1.721 B13.343 C215.131 +G01 X+11.336 Y-25.768 Z-1.72 B13.339 C213.654 +G01 X+11.187 Y-25.545 Z-1.721 B13.343 C212.178 +G01 X+11.059 Y-25.329 Z-1.72 B13.338 C210.797 +G01 X+10.931 Y-25.114 Z-1.721 B13.341 C209.417 +G01 X+10.913 Y-25.084 B13.343 C209.226 +G01 X+10.798 Y-24.866 Z-1.72 B13.338 C207.87 +G01 X+10.684 Y-24.648 Z-1.721 B13.341 C206.513 +G01 X+10.664 Y-24.61 B13.343 C206.273 +G01 X+10.562 Y-24.39 Z-1.72 B13.339 C204.942 +G01 X+10.461 Y-24.17 Z-1.721 B13.341 C203.61 +G01 X+10.439 Y-24.123 B13.343 C203.321 +G01 X+10.35 Y-23.902 Z-1.72 B13.339 C202.014 +G01 X+10.262 Y-23.681 Z-1.721 B13.341 C200.707 +G01 X+10.239 Y-23.625 B13.343 C200.369 +G01 X+10.163 Y-23.404 Z-1.72 B13.339 C199.086 +G01 X+10.088 Y-23.183 Z-1.721 B13.341 C197.804 +G01 X+10.066 Y-23.118 B13.343 C197.417 +G01 X+10.002 Y-22.897 Z-1.72 B13.339 C196.159 +G01 X+9.94 Y-22.677 Z-1.721 B13.34 C194.901 +G01 X+9.918 Y-22.602 B13.343 C194.464 +G01 X+9.817 Y-22.164 B13.34 C191.997 +G01 X+9.798 Y-22.08 B13.343 C191.512 +G01 X+9.721 Y-21.645 B13.34 C189.094 +G01 X+9.704 Y-21.552 B13.343 C188.56 +G01 X+9.651 Y-21.123 B13.34 C186.191 +G01 X+9.638 Y-21.02 B13.343 C185.607 +G01 X+9.607 Y-20.597 B13.34 C183.288 +G01 X+9.599 Y-20.485 B13.343 C182.655 +G01 X+9.593 Y-20.217 Z-1.72 B13.339 C181.179 +G01 X+9.588 Y-19.949 Z-1.721 B13.344 C179.703 +G01 X+9.596 Y-19.681 Z-1.72 B13.339 C178.227 +G01 X+9.604 Y-19.413 Z-1.721 B13.344 C176.75 +G01 X+9.626 Y-19.146 Z-1.72 C175.274 +G01 X+9.648 Y-18.879 Z-1.721 C173.798 +G01 X+9.684 Y-18.613 Z-1.72 C172.322 +G01 X+9.72 Y-18.347 Z-1.721 C170.846 +G01 X+9.769 Y-18.084 Z-1.72 C169.37 +G01 X+9.818 Y-17.82 Z-1.721 C167.893 +G01 X+9.881 Y-17.56 Z-1.72 C166.417 +G01 X+9.944 Y-17.299 Z-1.721 C164.941 +G01 X+10.02 Y-17.042 Z-1.72 C163.465 +G01 X+10.097 Y-16.785 Z-1.721 B13.343 C161.989 +G01 X+10.186 Y-16.532 Z-1.72 B13.339 C160.513 +G01 X+10.275 Y-16.279 Z-1.721 B13.343 C159.038 +G01 X+10.377 Y-16.032 Z-1.72 B13.339 C157.564 +G01 X+10.48 Y-15.784 Z-1.721 B13.343 C156.089 +G01 X+10.594 Y-15.541 Z-1.72 B13.339 C154.615 +G01 X+10.709 Y-15.299 Z-1.721 B13.343 C153.141 +G01 X+10.836 Y-15.063 Z-1.72 C151.667 +G01 X+10.964 Y-14.827 Z-1.721 C150.193 +G01 X+11.103 Y-14.598 Z-1.72 B13.339 C148.718 +G01 X+11.242 Y-14.369 Z-1.721 B13.343 C147.244 +G01 X+11.392 Y-14.147 Z-1.72 B13.339 C145.77 +G01 X+11.543 Y-13.925 Z-1.721 B13.343 C144.296 +G01 X+11.695 Y-13.725 Z-1.72 B13.339 C142.911 +G01 X+11.846 Y-13.526 Z-1.721 B13.342 C141.527 +G01 X+11.887 Y-13.475 C141.191 +G01 X+12.05 Y-13.281 Z-1.72 B13.338 C139.795 +G01 X+12.213 Y-13.088 Z-1.721 B13.343 C138.399 +G01 X+12.396 Y-12.892 Z-1.72 B13.338 C136.925 +G01 X+12.579 Y-12.696 Z-1.721 B13.343 C135.451 +G01 X+12.772 Y-12.51 Z-1.72 B13.338 C133.976 +G01 X+12.965 Y-12.324 Z-1.721 B13.343 C132.502 +G01 X+13.167 Y-12.148 Z-1.72 C131.031 +G01 X+13.369 Y-11.972 Z-1.721 C129.559 +G01 X+13.58 Y-11.807 Z-1.72 B13.338 C128.083 +G01 X+13.791 Y-11.641 Z-1.721 B13.343 C126.607 +G01 X+14.01 Y-11.487 Z-1.72 B13.338 C125.131 +G01 X+14.23 Y-11.333 Z-1.721 B13.343 C123.654 +G01 X+14.444 Y-11.198 Z-1.72 B13.338 C122.261 +G01 X+14.658 Y-11.063 Z-1.721 B13.342 C120.868 +G01 X+14.684 Y-11.047 B13.343 C120.702 +G01 X+14.901 Y-10.926 Z-1.72 B13.338 C119.334 +G01 X+15.118 Y-10.804 Z-1.721 B13.341 C117.965 +G01 X+15.151 Y-10.785 B13.343 C117.75 +G01 X+15.371 Y-10.677 Z-1.72 B13.339 C116.406 +G01 X+15.59 Y-10.569 Z-1.721 B13.341 C115.062 +G01 X+15.632 Y-10.548 B13.343 C114.798 +G01 X+15.853 Y-10.453 Z-1.72 B13.339 C113.478 +G01 X+16.073 Y-10.358 Z-1.721 B13.341 C112.158 +G01 X+16.125 Y-10.336 B13.343 C111.845 +G01 X+16.346 Y-10.254 Z-1.72 B13.339 C110.55 +G01 X+16.567 Y-10.172 Z-1.721 B13.341 C109.255 +G01 X+16.627 Y-10.149 B13.343 C108.893 +G01 X+16.848 Y-10.08 Z-1.72 B13.339 C107.623 +G01 X+17.069 Y-10.01 Z-1.721 B13.34 C106.352 +G01 X+17.139 Y-9.989 B13.343 C105.941 +G01 X+17.359 Y-9.932 Z-1.72 B13.339 C104.695 +G01 X+17.579 Y-9.875 Z-1.721 B13.34 C103.449 +G01 X+17.658 Y-9.855 B13.343 C102.988 +G01 X+18.095 Y-9.766 B13.34 C100.546 +G01 X+18.183 Y-9.747 B13.343 C100.036 +G01 X+18.616 Y-9.682 B13.34 C97.642 +G01 X+18.714 Y-9.667 B13.343 C97.084 +G01 X+19.14 Y-9.626 B13.34 C94.739 +G01 X+19.247 Y-9.615 B13.343 C94.131 +G01 X+19.666 Y-9.595 B13.339 C91.836 +G01 X+19.783 Y-9.59 B13.343 C91.179 +G01 X+20.051 Y-9.591 Z-1.72 B13.339 C89.703 +G01 X+20.319 Y-9.593 Z-1.721 B13.343 C88.227 +G01 X+20.587 Y-9.608 Z-1.72 B13.339 C86.751 +G01 X+20.854 Y-9.623 Z-1.721 B13.344 C85.274 +G01 X+21.121 Y-9.652 Z-1.72 C83.798 +G01 X+21.387 Y-9.681 Z-1.721 C82.322 +G01 X+21.652 Y-9.723 Z-1.72 C80.846 +G01 X+21.917 Y-9.766 Z-1.721 C79.37 +G01 X+22.179 Y-9.822 Z-1.72 C77.893 +G01 X+22.441 Y-9.878 Z-1.721 C76.417 +G01 X+22.7 Y-9.947 Z-1.72 B13.339 C74.941 +G01 X+22.959 Y-10.017 Z-1.721 B13.343 C73.465 +G01 X+23.224 Y-10.103 Z-1.72 B13.338 C71.932 +G01 X+23.489 Y-10.19 Z-1.721 B13.343 C70.398 +G01 X+23.729 Y-10.282 Z-1.72 B13.339 C68.981 +G01 X+23.97 Y-10.374 Z-1.721 B13.343 C67.564 +G01 X+24.215 Y-10.483 Z-1.72 C66.089 +G01 X+24.46 Y-10.591 Z-1.721 C64.615 +G01 X+24.699 Y-10.712 Z-1.72 B13.339 C63.141 +G01 X+24.938 Y-10.833 Z-1.721 B13.343 C61.667 +G01 X+25.171 Y-10.966 Z-1.72 C60.192 +G01 X+25.404 Y-11.1 Z-1.721 C58.718 +G01 X+25.629 Y-11.245 Z-1.72 B13.339 C57.244 +G01 X+25.855 Y-11.39 Z-1.721 B13.343 C55.77 +G01 X+26.073 Y-11.546 Z-1.72 B13.339 C54.296 +G01 X+26.29 Y-11.702 Z-1.721 B13.343 C52.822 +G01 X+26.485 Y-11.858 Z-1.72 B13.339 C51.448 +G01 X+26.679 Y-12.013 Z-1.721 B13.342 C50.075 +G01 X+26.729 Y-12.055 C49.739 +G01 X+26.919 Y-12.224 Z-1.72 B13.338 C48.332 +G01 X+27.11 Y-12.393 Z-1.721 B13.343 C46.925 +G01 X+27.301 Y-12.581 Z-1.72 B13.338 C45.451 +G01 X+27.492 Y-12.769 Z-1.721 B13.343 C43.976 +G01 X+27.674 Y-12.967 Z-1.72 B13.338 C42.503 +G01 X+27.855 Y-13.165 Z-1.721 B13.343 C41.03 +G01 X+28.025 Y-13.371 Z-1.72 B13.338 C39.556 +G01 X+28.196 Y-13.578 Z-1.721 B13.343 C38.083 +G01 X+28.356 Y-13.793 Z-1.72 B13.338 C36.607 +G01 X+28.516 Y-14.008 Z-1.721 B13.343 C35.131 +G01 X+28.664 Y-14.231 Z-1.72 B13.339 C33.655 +G01 X+28.813 Y-14.455 Z-1.721 B13.343 C32.178 +G01 X+28.941 Y-14.67 Z-1.72 B13.338 C30.798 +G01 X+29.069 Y-14.886 Z-1.721 B13.341 C29.417 +G01 X+29.087 Y-14.916 B13.343 C29.226 +G01 X+29.202 Y-15.134 Z-1.72 B13.338 C27.87 +G01 X+29.316 Y-15.352 Z-1.721 B13.341 C26.513 +G01 X+29.336 Y-15.39 B13.343 C26.274 +G01 X+29.438 Y-15.61 Z-1.72 B13.339 C24.942 +G01 X+29.54 Y-15.83 Z-1.721 B13.341 C23.61 +G01 X+29.561 Y-15.877 B13.343 C23.321 +G01 X+29.65 Y-16.098 Z-1.72 B13.339 C22.014 +G01 X+29.738 Y-16.319 Z-1.721 B13.341 C20.707 +G01 X+29.761 Y-16.375 B13.343 C20.369 +G01 X+29.837 Y-16.596 Z-1.72 B13.339 C19.086 +G01 X+29.912 Y-16.817 Z-1.721 B13.341 C17.804 +G01 X+29.934 Y-16.882 B13.343 C17.417 +G01 X+29.998 Y-17.102 Z-1.72 B13.339 C16.159 +G01 X+30.06 Y-17.323 Z-1.721 B13.34 C14.901 +G01 X+30.082 Y-17.397 B13.343 C14.464 +G01 X+30.183 Y-17.836 B13.34 C11.997 +G01 X+30.202 Y-17.92 B13.343 C11.512 +G01 X+30.279 Y-18.355 B13.34 C9.094 +G01 X+30.296 Y-18.448 B13.343 C8.56 +G01 X+30.349 Y-18.877 B13.34 C6.191 +G01 X+30.362 Y-18.98 B13.343 C5.607 +G01 X+30.393 Y-19.403 B13.34 C3.288 +G01 X+30.401 Y-19.515 B13.343 C2.655 +G01 X+30.407 Y-19.783 Z-1.72 B13.339 C1.179 +G01 X+30.412 Y-20.051 Z-1.721 B13.344 C359.703 +G01 X+30.404 Y-20.319 Z-1.72 B13.339 C358.227 +G01 X+30.396 Y-20.587 Z-1.721 B13.344 C356.75 +G01 X+30.374 Y-20.854 Z-1.72 C355.274 +G01 X+30.352 Y-21.121 Z-1.721 C353.798 +G01 X+30.316 Y-21.387 Z-1.72 C352.322 +G01 X+30.28 Y-21.653 Z-1.721 C350.846 +G01 X+30.231 Y-21.916 Z-1.72 C349.37 +G01 X+30.182 Y-22.18 Z-1.721 C347.893 +G01 X+30.119 Y-22.44 Z-1.72 C346.417 +G01 X+30.056 Y-22.701 Z-1.721 C344.941 +G01 X+29.98 Y-22.958 Z-1.72 C343.465 +G01 X+29.903 Y-23.215 Z-1.721 B13.343 C341.989 +G01 X+29.814 Y-23.468 Z-1.72 B13.339 C340.513 +G01 X+29.725 Y-23.72 Z-1.721 B13.343 C339.038 +G01 X+29.623 Y-23.968 Z-1.72 B13.339 C337.564 +G01 X+29.52 Y-24.216 Z-1.721 B13.343 C336.089 +G01 X+29.406 Y-24.458 Z-1.72 B13.339 C334.615 +G01 X+29.291 Y-24.701 Z-1.721 B13.343 C333.141 +G01 X+29.164 Y-24.937 Z-1.72 C331.667 +G01 X+29.036 Y-25.173 Z-1.721 C330.193 +G01 X+28.897 Y-25.402 Z-1.72 B13.339 C328.718 +G01 X+28.758 Y-25.631 Z-1.721 B13.343 C327.244 +G01 X+28.608 Y-25.853 Z-1.72 B13.339 C325.77 +G01 X+28.457 Y-26.074 Z-1.721 B13.343 C324.296 +G01 X+28.305 Y-26.274 Z-1.72 B13.339 C322.911 +G01 X+28.154 Y-26.474 Z-1.721 B13.342 C321.527 +G01 X+28.113 Y-26.525 C321.191 +G01 X+27.95 Y-26.718 Z-1.72 B13.338 C319.795 +G01 X+27.787 Y-26.912 Z-1.721 B13.343 C318.399 +G01 X+27.604 Y-27.108 Z-1.72 B13.338 C316.925 +G01 X+27.421 Y-27.303 Z-1.721 B13.343 C315.451 +G01 X+27.228 Y-27.49 Z-1.72 B13.338 C313.976 +G01 X+27.035 Y-27.676 Z-1.721 B13.343 C312.502 +G01 X+26.833 Y-27.852 Z-1.72 C311.031 +G01 X+26.631 Y-28.028 Z-1.721 C309.559 +G01 X+26.42 Y-28.193 Z-1.72 B13.338 C308.083 +G01 X+26.209 Y-28.358 Z-1.721 B13.343 C306.607 +G01 X+25.99 Y-28.513 Z-1.72 B13.338 C305.131 +G01 X+25.77 Y-28.667 Z-1.721 B13.343 C303.654 +G01 X+25.556 Y-28.802 Z-1.72 B13.338 C302.261 +G01 X+25.342 Y-28.937 Z-1.721 B13.342 C300.868 +G01 X+25.316 Y-28.953 B13.343 C300.702 +G01 X+25.099 Y-29.074 Z-1.72 B13.338 C299.334 +G01 X+24.882 Y-29.196 Z-1.721 B13.341 C297.965 +G01 X+24.849 Y-29.214 B13.343 C297.75 +G01 X+24.629 Y-29.323 Z-1.72 B13.339 C296.406 +G01 X+24.41 Y-29.431 Z-1.721 B13.341 C295.062 +G01 X+24.368 Y-29.452 B13.343 C294.798 +G01 X+24.147 Y-29.547 Z-1.72 B13.339 C293.478 +G01 X+23.927 Y-29.642 Z-1.721 B13.341 C292.158 +G01 X+23.875 Y-29.664 B13.343 C291.845 +G01 X+23.654 Y-29.746 Z-1.72 B13.339 C290.55 +G01 X+23.433 Y-29.828 Z-1.721 B13.341 C289.255 +G01 X+23.373 Y-29.851 B13.343 C288.893 +G01 X+23.152 Y-29.92 Z-1.72 B13.339 C287.623 +G01 X+22.931 Y-29.989 Z-1.721 B13.34 C286.352 +G01 X+22.861 Y-30.011 B13.343 C285.941 +G01 X+22.641 Y-30.068 Z-1.72 B13.339 C284.695 +G01 X+22.421 Y-30.125 Z-1.721 B13.34 C283.449 +G01 X+22.342 Y-30.145 B13.343 C282.988 +G01 X+21.905 Y-30.234 B13.34 C280.546 +G01 X+21.817 Y-30.252 B13.343 C280.036 +G01 X+21.384 Y-30.318 B13.34 C277.642 +G01 X+21.286 Y-30.332 B13.343 C277.084 +G01 X+20.86 Y-30.374 B13.34 C274.739 +G01 X+20.753 Y-30.385 B13.343 C274.131 +G01 X+20.334 Y-30.404 B13.339 C271.836 +G01 X+20.217 Y-30.41 B13.343 C271.179 +G01 X+19.949 Y-30.409 Z-1.72 B13.339 C269.703 +G01 X+19.681 Y-30.407 Z-1.721 B13.343 C268.227 +G01 X+19.413 Y-30.392 Z-1.72 B13.339 C266.751 +G01 X+19.146 Y-30.377 Z-1.721 B13.344 C265.274 +G01 X+18.879 Y-30.348 Z-1.72 C263.798 +G01 X+18.613 Y-30.319 Z-1.721 C262.322 +G01 X+18.348 Y-30.277 Z-1.72 C260.846 +G01 X+18.083 Y-30.234 Z-1.721 C259.37 +G01 X+17.821 Y-30.178 Z-1.72 C257.893 +G01 X+17.559 Y-30.122 Z-1.721 C256.417 +G01 X+17.3 Y-30.053 Z-1.72 B13.339 C254.941 +G01 X+17.041 Y-29.983 Z-1.721 B13.343 C253.465 +G01 X+16.776 Y-29.896 Z-1.72 B13.338 C251.932 +G01 X+16.511 Y-29.81 Z-1.721 B13.343 C250.398 +G01 X+16.271 Y-29.718 Z-1.72 B13.339 C248.981 +G01 X+16.03 Y-29.626 Z-1.721 B13.343 C247.564 +G01 X+15.785 Y-29.517 Z-1.72 C246.09 +G01 X+15.54 Y-29.409 Z-1.721 C244.617 +G01 X+15.27 Y-29.272 Z-1.72 B13.339 C242.985 +G01 X+15.001 Y-29.135 Z-1.722 B13.345 C241.352 +G01 X+14.793 Y-29.015 Z-1.721 B13.341 C240.005 +G01 X+14.586 Y-28.895 B13.344 C238.658 +G01 X+14.365 Y-28.753 B13.34 C237.213 +G01 X+14.145 Y-28.61 B13.343 C235.768 +G01 X+13.927 Y-28.454 Z-1.72 B13.339 C234.295 +G01 X+13.71 Y-28.297 Z-1.721 B13.343 C232.822 +G01 X+13.515 Y-28.142 Z-1.72 B13.339 C231.448 +G01 X+13.321 Y-27.987 Z-1.721 B13.342 C230.075 +G01 X+13.271 Y-27.945 C229.739 +G01 X+13.081 Y-27.776 Z-1.72 B13.338 C228.332 +G01 X+12.89 Y-27.607 Z-1.721 B13.343 C226.925 +G01 X+12.655 Y-27.375 Z-1.72 B13.339 C225.114 +G01 Y-27.242 Z-1.698 B13.217 C224.582 +G01 X+12.577 Y-27.166 Z-1.699 B13.219 C223.984 +G01 X+12.397 Y-26.969 Z-1.698 B13.215 C222.507 +G01 X+12.217 Y-26.773 Z-1.699 B13.219 C221.029 +G01 X+12.048 Y-26.569 Z-1.698 B13.215 C219.561 +G01 X+11.88 Y-26.365 Z-1.699 B13.219 C218.092 +G01 X+11.721 Y-26.151 Z-1.698 B13.215 C216.616 +G01 X+11.563 Y-25.938 Z-1.699 B13.219 C215.14 +G01 X+11.415 Y-25.717 Z-1.698 B13.215 C213.664 +G01 X+11.268 Y-25.496 Z-1.699 B13.219 C212.188 +G01 X+11.141 Y-25.282 Z-1.698 B13.215 C210.803 +G01 X+11.013 Y-25.067 Z-1.699 B13.218 C209.417 +G01 X+10.997 Y-25.039 B13.219 C209.237 +G01 X+10.883 Y-24.822 Z-1.698 B13.215 C207.875 +G01 X+10.769 Y-24.605 Z-1.699 B13.218 C206.513 +G01 X+10.749 Y-24.569 B13.219 C206.284 +G01 X+10.648 Y-24.35 Z-1.698 B13.215 C204.947 +G01 X+10.547 Y-24.132 B13.217 C203.61 +G01 X+10.526 Y-24.087 Z-1.699 B13.219 C203.333 +G01 X+10.438 Y-23.867 Z-1.698 B13.215 C202.02 +G01 X+10.35 Y-23.648 B13.217 C200.707 +G01 X+10.329 Y-23.594 Z-1.699 B13.219 C200.381 +G01 X+10.242 Y-23.342 Z-1.698 B13.215 C198.905 +G01 X+10.156 Y-23.091 Z-1.699 B13.22 C197.429 +G01 X+10.083 Y-22.836 Z-1.698 B13.215 C195.953 +G01 X+10.01 Y-22.58 Z-1.699 B13.22 C194.477 +G01 X+9.95 Y-22.321 Z-1.698 B13.215 C193.001 +G01 X+9.891 Y-22.063 Z-1.699 B13.22 C191.525 +G01 X+9.844 Y-21.801 Z-1.698 B13.216 C190.049 +G01 X+9.798 Y-21.539 Z-1.699 B13.22 C188.573 +G01 X+9.765 Y-21.276 Z-1.698 C187.098 +G01 X+9.732 Y-21.012 Z-1.699 C185.621 +G01 X+9.713 Y-20.747 Z-1.698 C184.146 +G01 X+9.694 Y-20.482 Z-1.699 C182.67 +G01 X+9.688 Y-20.217 Z-1.698 C181.194 +G01 X+9.683 Y-19.951 Z-1.699 C179.718 +G01 X+9.691 Y-19.686 Z-1.698 C178.242 +G01 X+9.699 Y-19.42 Z-1.699 C176.766 +G01 X+9.72 Y-19.155 Z-1.698 C175.29 +G01 X+9.742 Y-18.89 Z-1.699 C173.814 +G01 X+9.778 Y-18.627 Z-1.698 C172.338 +G01 X+9.813 Y-18.364 Z-1.699 C170.862 +G01 X+9.862 Y-18.103 Z-1.698 C169.386 +G01 X+9.911 Y-17.842 Z-1.699 C167.91 +G01 X+9.973 Y-17.583 Z-1.698 C166.434 +G01 X+10.035 Y-17.325 Z-1.699 C164.958 +G01 X+10.111 Y-17.07 Z-1.698 C163.482 +G01 X+10.186 Y-16.816 Z-1.699 C162.006 +G01 X+10.274 Y-16.565 Z-1.698 B13.216 C160.531 +G01 X+10.363 Y-16.315 Z-1.699 B13.22 C159.055 +G01 X+10.464 Y-16.069 Z-1.698 B13.216 C157.579 +G01 X+10.566 Y-15.824 Z-1.699 B13.22 C156.103 +G01 X+10.679 Y-15.583 Z-1.698 B13.215 C154.627 +G01 X+10.793 Y-15.343 Z-1.699 B13.22 C153.151 +G01 X+10.919 Y-15.109 Z-1.698 B13.215 C151.675 +G01 X+11.045 Y-14.876 Z-1.699 B13.22 C150.199 +G01 X+11.183 Y-14.648 Z-1.698 B13.215 C148.725 +G01 X+11.321 Y-14.421 Z-1.699 B13.219 C147.25 +G01 X+11.47 Y-14.202 Z-1.698 B13.215 C145.776 +G01 X+11.619 Y-13.982 Z-1.699 B13.219 C144.302 +G01 X+11.78 Y-13.77 Z-1.698 B13.215 C142.828 +G01 X+11.94 Y-13.559 Z-1.699 B13.219 C141.354 +G01 X+12.111 Y-13.355 Z-1.698 B13.215 C139.88 +G01 X+12.283 Y-13.152 Z-1.699 B13.219 C138.406 +G01 X+12.464 Y-12.958 Z-1.698 B13.215 C136.932 +G01 X+12.645 Y-12.764 Z-1.699 B13.219 C135.458 +G01 X+12.836 Y-12.579 Z-1.698 B13.215 C133.984 +G01 X+13.028 Y-12.395 Z-1.699 B13.219 C132.51 +G01 X+13.228 Y-12.22 Z-1.698 B13.215 C131.039 +G01 X+13.428 Y-12.046 Z-1.699 B13.219 C129.568 +G01 X+13.637 Y-11.882 Z-1.698 B13.215 C128.092 +G01 X+13.847 Y-11.718 Z-1.699 B13.219 C126.616 +G01 X+14.064 Y-11.565 Z-1.698 B13.215 C125.14 +G01 X+14.281 Y-11.413 Z-1.699 B13.219 C123.664 +G01 X+14.494 Y-11.278 Z-1.698 B13.215 C122.266 +G01 X+14.707 Y-11.145 Z-1.699 B13.218 C120.868 +G01 X+14.731 Y-11.13 B13.219 C120.712 +G01 X+14.946 Y-11.009 Z-1.698 B13.215 C119.339 +G01 X+15.162 Y-10.888 Z-1.699 B13.218 C117.965 +G01 X+15.194 Y-10.87 B13.219 C117.76 +G01 X+15.412 Y-10.762 Z-1.698 B13.215 C116.411 +G01 X+15.63 Y-10.655 B13.217 C115.062 +G01 X+15.671 Y-10.635 Z-1.699 B13.219 C114.809 +G01 X+15.89 Y-10.54 Z-1.698 B13.215 C113.484 +G01 X+16.109 Y-10.446 B13.217 C112.159 +G01 X+16.158 Y-10.424 Z-1.699 B13.219 C111.857 +G01 X+16.378 Y-10.343 Z-1.698 B13.215 C110.556 +G01 X+16.598 Y-10.261 B13.217 C109.255 +G01 X+16.656 Y-10.239 Z-1.699 B13.219 C108.905 +G01 X+16.91 Y-10.159 Z-1.698 B13.215 C107.429 +G01 X+17.163 Y-10.08 Z-1.699 B13.22 C105.953 +G01 X+17.421 Y-10.013 Z-1.698 B13.215 C104.477 +G01 X+17.678 Y-9.947 Z-1.699 B13.22 C103.001 +G01 X+17.938 Y-9.894 Z-1.698 B13.216 C101.525 +G01 X+18.198 Y-9.841 Z-1.699 B13.22 C100.049 +G01 X+18.461 Y-9.801 Z-1.698 B13.216 C98.573 +G01 X+18.724 Y-9.762 Z-1.699 B13.22 C97.098 +G01 X+18.988 Y-9.735 Z-1.698 C95.621 +G01 X+19.252 Y-9.71 Z-1.699 C94.146 +G01 X+19.518 Y-9.697 Z-1.698 C92.67 +G01 X+19.783 Y-9.685 Z-1.699 C91.194 +G01 X+20.049 Y-9.686 Z-1.698 C89.718 +G01 X+20.315 Y-9.687 Z-1.699 C88.242 +G01 X+20.58 Y-9.702 Z-1.698 C86.766 +G01 X+20.845 Y-9.717 Z-1.699 C85.29 +G01 X+21.109 Y-9.746 Z-1.698 C83.814 +G01 X+21.373 Y-9.774 Z-1.699 C82.338 +G01 X+21.636 Y-9.816 Z-1.698 C80.862 +G01 X+21.898 Y-9.858 Z-1.699 C79.386 +G01 X+22.158 Y-9.914 Z-1.698 C77.91 +G01 X+22.417 Y-9.97 Z-1.699 C76.434 +G01 X+22.674 Y-10.038 Z-1.698 C74.958 +G01 X+22.93 Y-10.107 Z-1.699 C73.482 +G01 X+23.183 Y-10.189 Z-1.698 C72.006 +G01 X+23.436 Y-10.271 Z-1.699 C70.531 +G01 X+23.684 Y-10.366 Z-1.698 B13.216 C69.054 +G01 X+23.932 Y-10.461 Z-1.699 B13.22 C67.579 +G01 X+24.175 Y-10.569 Z-1.698 B13.215 C66.103 +G01 X+24.418 Y-10.676 Z-1.699 B13.22 C64.627 +G01 X+24.655 Y-10.796 Z-1.698 B13.215 C63.151 +G01 X+24.892 Y-10.916 Z-1.699 B13.22 C61.675 +G01 X+25.123 Y-11.048 Z-1.698 B13.215 C60.2 +G01 X+25.353 Y-11.18 Z-1.699 B13.219 C58.724 +G01 X+25.577 Y-11.323 Z-1.698 B13.215 C57.25 +G01 X+25.8 Y-11.467 Z-1.699 B13.219 C55.776 +G01 X+26.016 Y-11.622 Z-1.698 B13.215 C54.299 +G01 X+26.233 Y-11.778 Z-1.699 B13.219 C52.823 +G01 X+26.44 Y-11.943 Z-1.698 B13.215 C51.351 +G01 X+26.647 Y-12.109 Z-1.699 B13.219 C49.88 +G01 X+26.852 Y-12.292 Z-1.698 B13.214 C48.358 +G01 X+27.058 Y-12.475 Z-1.699 B13.218 C46.836 +G01 X+27.24 Y-12.654 Z-1.698 B13.215 C45.41 +G01 X+27.423 Y-12.834 Z-1.699 B13.219 C43.984 +G01 X+27.603 Y-13.03 Z-1.698 B13.215 C42.507 +G01 X+27.783 Y-13.227 Z-1.699 B13.219 C41.03 +G01 X+27.952 Y-13.431 Z-1.698 B13.215 C39.561 +G01 X+28.12 Y-13.635 Z-1.699 B13.219 C38.092 +G01 X+28.279 Y-13.848 Z-1.698 B13.215 C36.616 +G01 X+28.437 Y-14.062 Z-1.699 B13.219 C35.14 +G01 X+28.585 Y-14.283 Z-1.698 B13.215 C33.664 +G01 X+28.732 Y-14.504 Z-1.699 B13.219 C32.188 +G01 X+28.859 Y-14.718 Z-1.698 B13.215 C30.803 +G01 X+28.987 Y-14.933 Z-1.699 B13.218 C29.417 +G01 X+29.003 Y-14.961 B13.219 C29.237 +G01 X+29.117 Y-15.178 Z-1.698 B13.215 C27.875 +G01 X+29.231 Y-15.395 Z-1.699 B13.218 C26.513 +G01 X+29.251 Y-15.431 B13.219 C26.285 +G01 X+29.352 Y-15.649 Z-1.698 B13.215 C24.947 +G01 X+29.453 Y-15.868 B13.217 C23.61 +G01 X+29.474 Y-15.913 Z-1.699 B13.219 C23.333 +G01 X+29.562 Y-16.133 Z-1.698 B13.215 C22.02 +G01 X+29.65 Y-16.352 B13.217 C20.707 +G01 X+29.671 Y-16.406 Z-1.699 B13.219 C20.381 +G01 X+29.758 Y-16.657 Z-1.698 B13.215 C18.905 +G01 X+29.844 Y-16.909 Z-1.699 B13.22 C17.429 +G01 X+29.917 Y-17.164 Z-1.698 B13.215 C15.953 +G01 X+29.99 Y-17.42 Z-1.699 B13.22 C14.477 +G01 X+30.05 Y-17.678 Z-1.698 B13.215 C13.001 +G01 X+30.109 Y-17.937 Z-1.699 B13.22 C11.525 +G01 X+30.156 Y-18.199 Z-1.698 B13.216 C10.049 +G01 X+30.202 Y-18.46 Z-1.699 B13.22 C8.573 +G01 X+30.235 Y-18.724 Z-1.698 C7.098 +G01 X+30.268 Y-18.988 Z-1.699 C5.621 +G01 X+30.287 Y-19.253 Z-1.698 C4.146 +G01 X+30.306 Y-19.518 Z-1.699 C2.67 +G01 X+30.312 Y-19.783 Z-1.698 C1.194 +G01 X+30.317 Y-20.049 Z-1.699 C359.718 +G01 X+30.309 Y-20.314 Z-1.698 C358.242 +G01 X+30.301 Y-20.58 Z-1.699 C356.766 +G01 X+30.28 Y-20.845 Z-1.698 C355.29 +G01 X+30.258 Y-21.109 Z-1.699 C353.814 +G01 X+30.222 Y-21.373 Z-1.698 C352.338 +G01 X+30.187 Y-21.636 Z-1.699 C350.862 +G01 X+30.138 Y-21.897 Z-1.698 C349.386 +G01 X+30.089 Y-22.158 Z-1.699 C347.91 +G01 X+30.027 Y-22.417 Z-1.698 C346.434 +G01 X+29.965 Y-22.675 Z-1.699 C344.958 +G01 X+29.889 Y-22.929 Z-1.698 C343.482 +G01 X+29.814 Y-23.184 Z-1.699 C342.006 +G01 X+29.726 Y-23.435 Z-1.698 B13.216 C340.531 +G01 X+29.637 Y-23.685 Z-1.699 B13.22 C339.055 +G01 X+29.536 Y-23.931 Z-1.698 B13.216 C337.579 +G01 X+29.434 Y-24.176 Z-1.699 B13.22 C336.103 +G01 X+29.321 Y-24.416 Z-1.698 B13.215 C334.627 +G01 X+29.207 Y-24.656 Z-1.699 B13.22 C333.151 +G01 X+29.081 Y-24.89 Z-1.698 B13.215 C331.675 +G01 X+28.955 Y-25.124 Z-1.699 B13.22 C330.199 +G01 X+28.817 Y-25.351 Z-1.698 B13.215 C328.725 +G01 X+28.679 Y-25.578 Z-1.699 B13.219 C327.25 +G01 X+28.53 Y-25.798 Z-1.698 B13.215 C325.776 +G01 X+28.381 Y-26.018 Z-1.699 B13.219 C324.302 +G01 X+28.22 Y-26.23 Z-1.698 B13.215 C322.828 +G01 X+28.06 Y-26.441 Z-1.699 B13.219 C321.354 +G01 X+27.889 Y-26.645 Z-1.698 B13.215 C319.88 +G01 X+27.717 Y-26.848 Z-1.699 B13.219 C318.406 +G01 X+27.536 Y-27.042 Z-1.698 B13.215 C316.932 +G01 X+27.355 Y-27.236 Z-1.699 B13.219 C315.458 +G01 X+27.164 Y-27.42 Z-1.698 B13.215 C313.984 +G01 X+26.972 Y-27.605 Z-1.699 B13.219 C312.51 +G01 X+26.772 Y-27.779 Z-1.698 B13.215 C311.039 +G01 X+26.572 Y-27.954 Z-1.699 B13.219 C309.568 +G01 X+26.363 Y-28.118 Z-1.698 B13.215 C308.092 +G01 X+26.154 Y-28.281 Z-1.699 B13.219 C306.616 +G01 X+25.936 Y-28.435 Z-1.698 B13.215 C305.14 +G01 X+25.719 Y-28.587 Z-1.699 B13.219 C303.664 +G01 X+25.506 Y-28.721 Z-1.698 B13.215 C302.266 +G01 X+25.293 Y-28.855 Z-1.699 B13.218 C300.868 +G01 X+25.269 Y-28.87 B13.219 C300.712 +G01 X+25.054 Y-28.991 Z-1.698 B13.215 C299.339 +G01 X+24.838 Y-29.112 Z-1.699 B13.218 C297.965 +G01 X+24.806 Y-29.13 B13.219 C297.76 +G01 X+24.588 Y-29.238 Z-1.698 B13.215 C296.411 +G01 X+24.37 Y-29.345 B13.217 C295.062 +G01 X+24.329 Y-29.365 Z-1.699 B13.219 C294.809 +G01 X+24.11 Y-29.46 Z-1.698 B13.215 C293.484 +G01 X+23.891 Y-29.554 B13.217 C292.159 +G01 X+23.842 Y-29.576 Z-1.699 B13.219 C291.857 +G01 X+23.622 Y-29.657 Z-1.698 B13.215 C290.556 +G01 X+23.402 Y-29.739 B13.217 C289.255 +G01 X+23.344 Y-29.761 Z-1.699 B13.219 C288.905 +G01 X+23.09 Y-29.84 Z-1.698 B13.215 C287.429 +G01 X+22.837 Y-29.92 Z-1.699 B13.22 C285.953 +G01 X+22.579 Y-29.986 Z-1.698 B13.215 C284.477 +G01 X+22.322 Y-30.053 Z-1.699 B13.22 C283.001 +G01 X+22.062 Y-30.106 Z-1.698 B13.216 C281.525 +G01 X+21.802 Y-30.159 Z-1.699 B13.22 C280.049 +G01 X+21.539 Y-30.199 Z-1.698 B13.216 C278.573 +G01 X+21.276 Y-30.238 Z-1.699 B13.22 C277.097 +G01 X+21.012 Y-30.264 Z-1.698 C275.621 +G01 X+20.748 Y-30.29 Z-1.699 C274.146 +G01 X+20.482 Y-30.303 Z-1.698 C272.67 +G01 X+20.217 Y-30.315 Z-1.699 C271.194 +G01 X+19.951 Y-30.314 Z-1.698 C269.718 +G01 X+19.685 Y-30.313 Z-1.699 C268.242 +G01 X+19.42 Y-30.298 Z-1.698 C266.766 +G01 X+19.155 Y-30.283 Z-1.699 C265.29 +G01 X+18.891 Y-30.254 Z-1.698 C263.814 +G01 X+18.627 Y-30.226 Z-1.699 C262.338 +G01 X+18.364 Y-30.184 Z-1.698 C260.862 +G01 X+18.102 Y-30.141 Z-1.699 C259.386 +G01 X+17.842 Y-30.086 Z-1.698 C257.91 +G01 X+17.583 Y-30.03 Z-1.699 C256.434 +G01 X+17.326 Y-29.962 Z-1.698 C254.958 +G01 X+17.07 Y-29.892 Z-1.699 C253.482 +G01 X+16.817 Y-29.811 Z-1.698 C252.006 +G01 X+16.564 Y-29.728 Z-1.699 C250.531 +G01 X+16.316 Y-29.634 Z-1.698 B13.216 C249.054 +G01 X+16.068 Y-29.539 Z-1.699 B13.22 C247.579 +G01 X+15.825 Y-29.431 Z-1.698 B13.215 C246.104 +G01 X+15.582 Y-29.324 Z-1.699 B13.22 C244.629 +G01 X+15.315 Y-29.189 Z-1.698 B13.215 C242.991 +G01 X+15.048 Y-29.053 Z-1.699 B13.221 C241.352 +G01 X+14.842 Y-28.934 Z-1.698 B13.217 C240.007 +G01 X+14.636 Y-28.814 Z-1.699 B13.22 C238.662 +G01 X+14.418 Y-28.674 Z-1.698 B13.216 C237.217 +G01 X+14.199 Y-28.532 Z-1.699 B13.22 C235.771 +G01 X+13.983 Y-28.377 Z-1.698 B13.215 C234.297 +G01 X+13.767 Y-28.222 Z-1.699 B13.219 C232.823 +G01 X+13.56 Y-28.057 Z-1.698 B13.215 C231.351 +G01 X+13.353 Y-27.891 Z-1.699 B13.219 C229.88 +G01 X+13.148 Y-27.708 Z-1.698 B13.214 C228.358 +G01 X+12.942 Y-27.525 Z-1.699 B13.218 C226.836 +G01 X+12.722 Y-27.308 Z-1.698 B13.215 C225.116 +G01 Y-27.175 Z-1.676 B13.093 C224.584 +G01 X+12.646 Y-27.101 Z-1.677 B13.095 C223.991 +G01 X+12.468 Y-26.907 Z-1.676 B13.091 C222.518 +G01 X+12.291 Y-26.713 Z-1.677 B13.095 C221.044 +G01 X+12.123 Y-26.51 Z-1.676 B13.091 C219.572 +G01 X+11.955 Y-26.307 Z-1.677 B13.095 C218.101 +G01 X+11.798 Y-26.096 Z-1.676 B13.091 C216.626 +G01 X+11.641 Y-25.885 Z-1.677 B13.095 C215.15 +G01 X+11.495 Y-25.666 Z-1.676 B13.091 C213.674 +G01 X+11.349 Y-25.447 Z-1.677 B13.095 C212.198 +G01 X+11.215 Y-25.221 Z-1.676 B13.091 C210.723 +G01 X+11.08 Y-24.994 Z-1.677 B13.096 C209.247 +G01 X+10.958 Y-24.761 Z-1.676 B13.091 C207.771 +G01 X+10.835 Y-24.528 Z-1.677 B13.096 C206.295 +G01 X+10.724 Y-24.29 Z-1.676 B13.092 C204.82 +G01 X+10.614 Y-24.051 Z-1.677 B13.096 C203.344 +G01 X+10.516 Y-23.806 Z-1.676 B13.092 C201.868 +G01 X+10.418 Y-23.562 Z-1.677 B13.096 C200.393 +G01 X+10.333 Y-23.313 Z-1.676 B13.092 C198.917 +G01 X+10.247 Y-23.064 Z-1.677 B13.096 C197.441 +G01 X+10.175 Y-22.811 Z-1.676 B13.092 C195.965 +G01 X+10.103 Y-22.558 Z-1.677 B13.096 C194.49 +G01 X+10.043 Y-22.302 Z-1.676 B13.092 C193.014 +G01 X+9.984 Y-22.045 Z-1.677 B13.096 C191.538 +G01 X+9.938 Y-21.786 Z-1.676 C190.063 +G01 X+9.892 Y-21.527 Z-1.677 C188.587 +G01 X+9.859 Y-21.266 Z-1.676 C187.111 +G01 X+9.827 Y-21.004 Z-1.677 C185.635 +G01 X+9.808 Y-20.742 Z-1.676 C184.16 +G01 X+9.789 Y-20.479 Z-1.677 C182.684 +G01 X+9.783 Y-20.216 Z-1.676 C181.208 +G01 X+9.777 Y-19.953 Z-1.677 C179.733 +G01 X+9.785 Y-19.69 Z-1.676 C178.257 +G01 X+9.793 Y-19.427 Z-1.677 C176.781 +G01 X+9.815 Y-19.165 Z-1.676 C175.305 +G01 X+9.836 Y-18.902 Z-1.677 C173.83 +G01 X+9.871 Y-18.641 Z-1.676 C172.354 +G01 X+9.906 Y-18.38 Z-1.677 C170.878 +G01 X+9.955 Y-18.122 Z-1.676 C169.403 +G01 X+10.003 Y-17.863 Z-1.677 C167.927 +G01 X+10.065 Y-17.607 Z-1.676 C166.451 +G01 X+10.126 Y-17.351 Z-1.677 C164.975 +G01 X+10.201 Y-17.099 Z-1.676 C163.5 +G01 X+10.276 Y-16.846 Z-1.677 C162.024 +G01 X+10.363 Y-16.598 Z-1.676 C160.548 +G01 X+10.451 Y-16.35 Z-1.677 C159.073 +G01 X+10.551 Y-16.107 Z-1.676 B13.092 C157.597 +G01 X+10.652 Y-15.863 Z-1.677 B13.096 C156.121 +G01 X+10.764 Y-15.625 Z-1.676 B13.092 C154.646 +G01 X+10.877 Y-15.388 Z-1.677 B13.096 C153.17 +G01 X+11.002 Y-15.156 Z-1.676 B13.092 C151.694 +G01 X+11.127 Y-14.924 Z-1.677 B13.096 C150.218 +G01 X+11.263 Y-14.699 Z-1.676 B13.092 C148.742 +G01 X+11.4 Y-14.474 Z-1.677 B13.096 C147.267 +G01 X+11.547 Y-14.256 Z-1.676 B13.092 C145.791 +G01 X+11.695 Y-14.039 Z-1.677 B13.096 C144.315 +G01 X+11.854 Y-13.829 Z-1.676 B13.091 C142.84 +G01 X+12.013 Y-13.619 Z-1.677 B13.096 C141.364 +G01 X+12.183 Y-13.417 Z-1.676 B13.091 C139.889 +G01 X+12.352 Y-13.216 Z-1.677 B13.095 C138.413 +G01 X+12.532 Y-13.024 Z-1.676 B13.091 C136.939 +G01 X+12.712 Y-12.832 Z-1.677 B13.095 C135.465 +G01 X+12.901 Y-12.649 Z-1.676 B13.091 C133.992 +G01 X+13.091 Y-12.466 Z-1.677 B13.095 C132.518 +G01 X+13.289 Y-12.293 Z-1.676 B13.091 C131.047 +G01 X+13.488 Y-12.12 Z-1.677 B13.095 C129.577 +G01 X+13.695 Y-11.958 Z-1.676 B13.091 C128.101 +G01 X+13.902 Y-11.795 Z-1.677 B13.095 C126.625 +G01 X+14.117 Y-11.644 Z-1.676 B13.091 C125.15 +G01 X+14.332 Y-11.492 Z-1.677 B13.095 C123.674 +G01 X+14.555 Y-11.352 Z-1.676 B13.091 C122.198 +G01 X+14.778 Y-11.212 Z-1.677 B13.096 C120.723 +G01 X+15.007 Y-11.083 Z-1.676 B13.091 C119.247 +G01 X+15.237 Y-10.955 Z-1.677 B13.096 C117.771 +G01 X+15.473 Y-10.838 Z-1.676 B13.091 C116.296 +G01 X+15.709 Y-10.721 Z-1.677 B13.096 C114.82 +G01 X+15.951 Y-10.617 Z-1.676 B13.092 C113.344 +G01 X+16.192 Y-10.513 Z-1.677 B13.096 C111.868 +G01 X+16.439 Y-10.421 Z-1.676 B13.092 C110.393 +G01 X+16.686 Y-10.329 Z-1.677 B13.096 C108.917 +G01 X+16.937 Y-10.25 Z-1.676 B13.092 C107.441 +G01 X+17.188 Y-10.172 Z-1.677 B13.096 C105.965 +G01 X+17.443 Y-10.106 Z-1.676 B13.092 C104.49 +G01 X+17.698 Y-10.04 Z-1.677 B13.096 C103.014 +G01 X+17.956 Y-9.987 Z-1.676 B13.092 C101.538 +G01 X+18.213 Y-9.935 Z-1.677 B13.096 C100.062 +G01 X+18.474 Y-9.895 Z-1.676 C98.587 +G01 X+18.734 Y-9.856 Z-1.677 C97.111 +G01 X+18.996 Y-9.83 Z-1.676 C95.635 +G01 X+19.258 Y-9.804 Z-1.677 C94.16 +G01 X+19.521 Y-9.792 Z-1.676 C92.684 +G01 X+19.784 Y-9.78 Z-1.677 C91.208 +G01 X+20.047 Y-9.781 Z-1.676 C89.733 +G01 X+20.31 Y-9.782 Z-1.677 C88.257 +G01 X+20.573 Y-9.797 Z-1.676 C86.781 +G01 X+20.836 Y-9.811 Z-1.677 C85.305 +G01 X+21.097 Y-9.84 Z-1.676 C83.83 +G01 X+21.359 Y-9.868 Z-1.677 C82.354 +G01 X+21.619 Y-9.91 Z-1.676 C80.878 +G01 X+21.879 Y-9.951 Z-1.677 C79.403 +G01 X+22.136 Y-10.006 Z-1.676 C77.927 +G01 X+22.394 Y-10.061 Z-1.677 C76.451 +G01 X+22.648 Y-10.129 Z-1.676 C74.975 +G01 X+22.902 Y-10.198 Z-1.677 C73.5 +G01 X+23.153 Y-10.279 Z-1.676 C72.024 +G01 X+23.403 Y-10.36 Z-1.677 C70.548 +G01 X+23.649 Y-10.454 Z-1.676 C69.072 +G01 X+23.895 Y-10.548 Z-1.677 C67.597 +G01 X+24.135 Y-10.655 Z-1.676 B13.092 C66.121 +G01 X+24.376 Y-10.761 Z-1.677 B13.096 C64.645 +G01 X+24.611 Y-10.88 Z-1.676 B13.092 C63.17 +G01 X+24.846 Y-10.999 Z-1.677 B13.096 C61.694 +G01 X+25.074 Y-11.129 Z-1.676 B13.092 C60.218 +G01 X+25.303 Y-11.26 Z-1.677 B13.096 C58.742 +G01 X+25.524 Y-11.402 Z-1.676 B13.092 C57.267 +G01 X+25.746 Y-11.545 Z-1.677 B13.096 C55.791 +G01 X+25.96 Y-11.698 Z-1.676 B13.091 C54.315 +G01 X+26.173 Y-11.852 Z-1.677 B13.096 C52.84 +G01 X+26.379 Y-12.016 Z-1.676 B13.091 C51.364 +G01 X+26.585 Y-12.18 Z-1.677 B13.096 C49.888 +G01 X+26.782 Y-12.355 Z-1.676 B13.091 C48.414 +G01 X+26.978 Y-12.53 Z-1.677 B13.095 C46.939 +G01 X+27.166 Y-12.714 Z-1.676 B13.091 C45.465 +G01 X+27.354 Y-12.899 Z-1.677 B13.095 C43.992 +G01 X+27.532 Y-13.093 Z-1.676 B13.091 C42.518 +G01 X+27.709 Y-13.287 Z-1.677 B13.095 C41.044 +G01 X+27.877 Y-13.489 Z-1.676 C39.573 +G01 X+28.045 Y-13.692 Z-1.677 C38.101 +G01 X+28.202 Y-13.904 Z-1.676 B13.091 C36.626 +G01 X+28.359 Y-14.115 Z-1.677 B13.095 C35.15 +G01 X+28.505 Y-14.334 Z-1.676 B13.091 C33.674 +G01 X+28.651 Y-14.553 Z-1.677 B13.095 C32.198 +G01 X+28.785 Y-14.779 Z-1.676 B13.091 C30.723 +G01 X+28.92 Y-15.006 Z-1.677 B13.096 C29.247 +G01 X+29.042 Y-15.238 Z-1.676 B13.091 C27.771 +G01 X+29.165 Y-15.471 Z-1.677 B13.096 C26.295 +G01 X+29.276 Y-15.71 Z-1.676 B13.092 C24.82 +G01 X+29.386 Y-15.949 Z-1.677 B13.096 C23.344 +G01 X+29.484 Y-16.193 Z-1.676 B13.092 C21.868 +G01 X+29.582 Y-16.438 Z-1.677 B13.096 C20.393 +G01 X+29.667 Y-16.687 Z-1.676 B13.092 C18.917 +G01 X+29.753 Y-16.936 Z-1.677 B13.096 C17.441 +G01 X+29.825 Y-17.189 Z-1.676 B13.092 C15.965 +G01 X+29.897 Y-17.442 Z-1.677 B13.096 C14.49 +G01 X+29.957 Y-17.698 Z-1.676 B13.092 C13.014 +G01 X+30.016 Y-17.955 Z-1.677 B13.096 C11.538 +G01 X+30.062 Y-18.214 Z-1.676 C10.063 +G01 X+30.108 Y-18.473 Z-1.677 C8.587 +G01 X+30.141 Y-18.734 Z-1.676 C7.111 +G01 X+30.173 Y-18.995 Z-1.677 C5.635 +G01 X+30.193 Y-19.258 Z-1.676 C4.16 +G01 X+30.211 Y-19.521 Z-1.677 C2.684 +G01 X+30.217 Y-19.784 Z-1.676 C1.208 +G01 X+30.223 Y-20.047 Z-1.677 C359.733 +G01 X+30.215 Y-20.31 Z-1.676 C358.257 +G01 X+30.207 Y-20.573 Z-1.677 C356.781 +G01 X+30.185 Y-20.835 Z-1.676 C355.305 +G01 X+30.164 Y-21.098 Z-1.677 C353.83 +G01 X+30.129 Y-21.359 Z-1.676 C352.354 +G01 X+30.094 Y-21.619 Z-1.677 C350.878 +G01 X+30.045 Y-21.878 Z-1.676 C349.403 +G01 X+29.997 Y-22.137 Z-1.677 C347.927 +G01 X+29.935 Y-22.393 Z-1.676 C346.451 +G01 X+29.874 Y-22.649 Z-1.677 C344.975 +G01 X+29.799 Y-22.901 Z-1.676 C343.5 +G01 X+29.724 Y-23.153 Z-1.677 C342.024 +G01 X+29.637 Y-23.402 Z-1.676 C340.548 +G01 X+29.549 Y-23.65 Z-1.677 C339.073 +G01 X+29.449 Y-23.893 Z-1.676 B13.092 C337.597 +G01 X+29.348 Y-24.137 Z-1.677 B13.096 C336.121 +G01 X+29.236 Y-24.375 Z-1.676 B13.092 C334.645 +G01 X+29.123 Y-24.612 Z-1.677 B13.096 C333.17 +G01 X+28.998 Y-24.844 Z-1.676 B13.092 C331.694 +G01 X+28.873 Y-25.076 Z-1.677 B13.096 C330.218 +G01 X+28.737 Y-25.301 Z-1.676 B13.092 C328.742 +G01 X+28.6 Y-25.526 Z-1.677 B13.096 C327.267 +G01 X+28.453 Y-25.744 Z-1.676 B13.092 C325.791 +G01 X+28.305 Y-25.961 Z-1.677 B13.096 C324.315 +G01 X+28.146 Y-26.171 Z-1.676 B13.091 C322.84 +G01 X+27.987 Y-26.381 Z-1.677 B13.096 C321.364 +G01 X+27.817 Y-26.582 Z-1.676 B13.091 C319.889 +G01 X+27.648 Y-26.784 Z-1.677 B13.095 C318.413 +G01 X+27.468 Y-26.976 Z-1.676 B13.091 C316.939 +G01 X+27.288 Y-27.168 Z-1.677 B13.095 C315.465 +G01 X+27.099 Y-27.351 Z-1.676 B13.091 C313.992 +G01 X+26.909 Y-27.534 Z-1.677 B13.095 C312.518 +G01 X+26.711 Y-27.707 Z-1.676 B13.091 C311.047 +G01 X+26.512 Y-27.88 Z-1.677 B13.095 C309.577 +G01 X+26.305 Y-28.042 Z-1.676 B13.091 C308.101 +G01 X+26.098 Y-28.204 Z-1.677 B13.095 C306.625 +G01 X+25.883 Y-28.356 Z-1.676 B13.091 C305.15 +G01 X+25.668 Y-28.508 Z-1.677 B13.095 C303.674 +G01 X+25.445 Y-28.648 Z-1.676 B13.091 C302.198 +G01 X+25.222 Y-28.788 Z-1.677 B13.096 C300.723 +G01 X+24.993 Y-28.917 Z-1.676 B13.091 C299.247 +G01 X+24.763 Y-29.045 Z-1.677 B13.096 C297.771 +G01 X+24.527 Y-29.162 Z-1.676 B13.091 C296.296 +G01 X+24.291 Y-29.278 Z-1.677 B13.096 C294.82 +G01 X+24.049 Y-29.383 Z-1.676 B13.092 C293.344 +G01 X+23.808 Y-29.487 Z-1.677 B13.096 C291.868 +G01 X+23.561 Y-29.579 Z-1.676 B13.092 C290.393 +G01 X+23.314 Y-29.67 Z-1.677 B13.096 C288.917 +G01 X+23.063 Y-29.75 Z-1.676 B13.092 C287.441 +G01 X+22.812 Y-29.828 Z-1.677 B13.096 C285.965 +G01 X+22.557 Y-29.894 Z-1.676 B13.092 C284.49 +G01 X+22.302 Y-29.96 Z-1.677 B13.096 C283.014 +G01 X+22.045 Y-30.013 Z-1.676 B13.092 C281.538 +G01 X+21.787 Y-30.065 Z-1.677 B13.096 C280.062 +G01 X+21.526 Y-30.105 Z-1.676 C278.587 +G01 X+21.266 Y-30.144 Z-1.677 C277.111 +G01 X+21.004 Y-30.17 Z-1.676 C275.635 +G01 X+20.742 Y-30.196 Z-1.677 C274.16 +G01 X+20.479 Y-30.208 Z-1.676 C272.684 +G01 X+20.216 Y-30.22 Z-1.677 C271.208 +G01 X+19.953 Y-30.219 Z-1.676 C269.733 +G01 X+19.69 Y-30.218 Z-1.677 C268.257 +G01 X+19.427 Y-30.203 Z-1.676 C266.781 +G01 X+19.164 Y-30.188 Z-1.677 C265.305 +G01 X+18.903 Y-30.16 Z-1.676 C263.83 +G01 X+18.641 Y-30.132 Z-1.677 C262.354 +G01 X+18.381 Y-30.09 Z-1.676 C260.878 +G01 X+18.121 Y-30.048 Z-1.677 C259.402 +G01 X+17.864 Y-29.994 Z-1.676 C257.927 +G01 X+17.606 Y-29.938 Z-1.677 C256.451 +G01 X+17.352 Y-29.87 Z-1.676 C254.975 +G01 X+17.098 Y-29.802 Z-1.677 C253.5 +G01 X+16.847 Y-29.721 Z-1.676 C252.024 +G01 X+16.597 Y-29.64 Z-1.677 C250.548 +G01 X+16.351 Y-29.546 Z-1.676 C249.072 +G01 X+16.105 Y-29.452 Z-1.677 C247.597 +G01 X+15.865 Y-29.345 Z-1.676 B13.092 C246.122 +G01 X+15.624 Y-29.239 Z-1.677 B13.096 C244.648 +G01 X+15.358 Y-29.104 Z-1.676 B13.091 C243. +G01 X+15.091 Y-28.969 Z-1.677 B13.097 C241.352 +G01 X+14.889 Y-28.852 Z-1.676 B13.094 C240.013 +G01 X+14.687 Y-28.734 Z-1.677 B13.097 C238.674 +G01 X+14.47 Y-28.594 Z-1.676 B13.092 C237.229 +G01 X+14.253 Y-28.455 Z-1.677 B13.096 C235.784 +G01 X+14.04 Y-28.302 Z-1.676 B13.092 C234.312 +G01 X+13.827 Y-28.148 Z-1.677 B13.096 C232.84 +G01 X+13.621 Y-27.984 Z-1.676 B13.091 C231.364 +G01 X+13.416 Y-27.82 Z-1.677 B13.095 C229.888 +G01 X+13.218 Y-27.645 Z-1.676 B13.091 C228.414 +G01 X+13.022 Y-27.47 Z-1.677 B13.095 C226.939 +G01 X+12.789 Y-27.241 Z-1.676 B13.092 C225.119 +G01 X+12.788 Y-27.108 Z-1.654 B12.975 C224.584 +G01 X+12.715 Y-27.037 Z-1.655 B12.977 C224.005 +G01 X+12.539 Y-26.845 Z-1.654 B12.973 C222.53 +G01 X+12.363 Y-26.652 Z-1.655 B12.977 C221.054 +G01 X+12.197 Y-26.451 Z-1.654 C219.581 +G01 X+12.031 Y-26.25 Z-1.655 C218.108 +G01 X+11.875 Y-26.041 Z-1.654 B12.973 C216.633 +G01 X+11.719 Y-25.832 Z-1.655 B12.977 C215.157 +G01 X+11.574 Y-25.615 Z-1.654 B12.973 C213.68 +G01 X+11.43 Y-25.397 Z-1.655 B12.977 C212.203 +G01 X+11.297 Y-25.173 Z-1.654 B12.973 C210.729 +G01 X+11.164 Y-24.949 Z-1.655 B12.977 C209.255 +G01 X+11.042 Y-24.719 Z-1.654 B12.973 C207.78 +G01 X+10.92 Y-24.488 Z-1.655 B12.978 C206.304 +G01 X+10.811 Y-24.251 Z-1.654 B12.973 C204.829 +G01 X+10.701 Y-24.015 Z-1.655 B12.978 C203.353 +G01 X+10.604 Y-23.773 Z-1.654 B12.973 C201.878 +G01 X+10.507 Y-23.531 Z-1.655 B12.978 C200.402 +G01 X+10.422 Y-23.284 Z-1.654 B12.974 C198.927 +G01 X+10.338 Y-23.037 Z-1.655 B12.978 C197.451 +G01 X+10.266 Y-22.787 Z-1.654 B12.974 C195.976 +G01 X+10.194 Y-22.536 Z-1.655 B12.978 C194.5 +G01 X+10.135 Y-22.282 Z-1.654 B12.974 C193.025 +G01 X+10.077 Y-22.028 Z-1.655 B12.978 C191.549 +G01 X+10.031 Y-21.771 Z-1.654 B12.974 C190.074 +G01 X+9.986 Y-21.514 Z-1.655 B12.978 C188.598 +G01 X+9.953 Y-21.255 Z-1.654 C187.123 +G01 X+9.921 Y-20.997 Z-1.655 C185.647 +G01 X+9.902 Y-20.737 Z-1.654 C184.172 +G01 X+9.883 Y-20.476 Z-1.655 C182.696 +G01 X+9.877 Y-20.216 Z-1.654 C181.221 +G01 X+9.872 Y-19.955 Z-1.655 C179.745 +G01 X+9.88 Y-19.694 Z-1.654 C178.27 +G01 X+9.888 Y-19.434 Z-1.655 C176.794 +G01 X+9.909 Y-19.174 Z-1.654 C175.319 +G01 X+9.93 Y-18.914 Z-1.655 C173.843 +G01 X+9.965 Y-18.655 Z-1.654 C172.368 +G01 X+9.999 Y-18.397 Z-1.655 C170.892 +G01 X+10.047 Y-18.141 Z-1.654 C169.417 +G01 X+10.095 Y-17.884 Z-1.655 C167.941 +G01 X+10.156 Y-17.631 Z-1.654 C166.466 +G01 X+10.217 Y-17.377 Z-1.655 C164.99 +G01 X+10.291 Y-17.127 Z-1.654 C163.515 +G01 X+10.365 Y-16.877 Z-1.655 C162.039 +G01 X+10.452 Y-16.631 Z-1.654 C160.564 +G01 X+10.539 Y-16.385 Z-1.655 C159.089 +G01 X+10.638 Y-16.144 Z-1.654 C157.613 +G01 X+10.737 Y-15.903 Z-1.655 C156.138 +G01 X+10.849 Y-15.667 Z-1.654 B12.974 C154.662 +G01 X+10.961 Y-15.432 Z-1.655 B12.978 C153.186 +G01 X+11.084 Y-15.202 Z-1.654 B12.974 C151.711 +G01 X+11.208 Y-14.972 Z-1.655 B12.978 C150.236 +G01 X+11.343 Y-14.749 Z-1.654 B12.974 C148.76 +G01 X+11.478 Y-14.526 Z-1.655 B12.978 C147.285 +G01 X+11.625 Y-14.311 Z-1.654 B12.973 C145.809 +G01 X+11.771 Y-14.095 Z-1.655 B12.978 C144.334 +G01 X+11.929 Y-13.887 Z-1.654 B12.973 C142.858 +G01 X+12.086 Y-13.679 Z-1.655 B12.977 C141.383 +G01 X+12.254 Y-13.48 Z-1.654 B12.973 C139.907 +G01 X+12.422 Y-13.28 Z-1.655 B12.977 C138.432 +G01 X+12.6 Y-13.089 Z-1.654 B12.973 C136.956 +G01 X+12.778 Y-12.899 Z-1.655 B12.977 C135.481 +G01 X+12.966 Y-12.718 Z-1.654 B12.973 C134.005 +G01 X+13.153 Y-12.537 Z-1.655 B12.977 C132.53 +G01 X+13.35 Y-12.365 Z-1.654 B12.973 C131.054 +G01 X+13.547 Y-12.194 Z-1.655 B12.977 C129.578 +G01 X+13.752 Y-12.033 Z-1.654 B12.973 C128.105 +G01 X+13.957 Y-11.872 Z-1.655 B12.977 C126.632 +G01 X+14.17 Y-11.722 Z-1.654 B12.973 C125.157 +G01 X+14.383 Y-11.572 Z-1.655 B12.977 C123.682 +G01 X+14.604 Y-11.433 Z-1.654 B12.973 C122.206 +G01 X+14.825 Y-11.294 Z-1.655 B12.977 C120.731 +G01 X+15.052 Y-11.166 Z-1.654 B12.973 C119.255 +G01 X+15.28 Y-11.039 Z-1.655 B12.977 C117.78 +G01 X+15.513 Y-10.923 Z-1.654 B12.973 C116.304 +G01 X+15.747 Y-10.808 Z-1.655 B12.978 C114.829 +G01 X+15.987 Y-10.704 Z-1.654 B12.973 C113.353 +G01 X+16.226 Y-10.601 Z-1.655 B12.978 C111.878 +G01 X+16.47 Y-10.51 Z-1.654 B12.974 C110.402 +G01 X+16.715 Y-10.419 Z-1.655 B12.978 C108.927 +G01 X+16.964 Y-10.341 Z-1.654 B12.974 C107.451 +G01 X+17.212 Y-10.263 Z-1.655 B12.978 C105.976 +G01 X+17.465 Y-10.197 Z-1.654 B12.974 C104.5 +G01 X+17.717 Y-10.132 Z-1.655 B12.978 C103.025 +G01 X+17.973 Y-10.08 Z-1.654 B12.974 C101.549 +G01 X+18.228 Y-10.028 Z-1.655 B12.978 C100.074 +G01 X+18.486 Y-9.989 Z-1.654 C98.598 +G01 X+18.744 Y-9.95 Z-1.655 C97.123 +G01 X+19.004 Y-9.924 Z-1.654 C95.647 +G01 X+19.263 Y-9.899 Z-1.655 C94.172 +G01 X+19.524 Y-9.886 Z-1.654 C92.696 +G01 X+19.784 Y-9.874 Z-1.655 C91.221 +G01 X+20.045 Y-9.875 Z-1.654 C89.745 +G01 X+20.306 Y-9.876 Z-1.655 C88.27 +G01 X+20.566 Y-9.891 Z-1.654 C86.794 +G01 X+20.826 Y-9.905 Z-1.655 C85.319 +G01 X+21.086 Y-9.933 Z-1.654 C83.843 +G01 X+21.345 Y-9.961 Z-1.655 C82.368 +G01 X+21.603 Y-10.003 Z-1.654 C80.892 +G01 X+21.86 Y-10.044 Z-1.655 C79.417 +G01 X+22.115 Y-10.098 Z-1.654 C77.941 +G01 X+22.37 Y-10.153 Z-1.655 C76.466 +G01 X+22.622 Y-10.22 Z-1.654 C74.99 +G01 X+22.874 Y-10.288 Z-1.655 C73.515 +G01 X+23.122 Y-10.368 Z-1.654 C72.039 +G01 X+23.37 Y-10.449 Z-1.655 C70.564 +G01 X+23.614 Y-10.542 Z-1.654 C69.089 +G01 X+23.857 Y-10.635 Z-1.655 C67.613 +G01 X+24.096 Y-10.74 Z-1.654 B12.974 C66.138 +G01 X+24.334 Y-10.846 Z-1.655 B12.978 C64.662 +G01 X+24.567 Y-10.963 Z-1.654 B12.974 C63.187 +G01 X+24.8 Y-11.081 Z-1.655 B12.978 C61.711 +G01 X+25.026 Y-11.21 Z-1.654 B12.974 C60.236 +G01 X+25.252 Y-11.34 Z-1.655 B12.978 C58.76 +G01 X+25.472 Y-11.481 Z-1.654 B12.974 C57.285 +G01 X+25.691 Y-11.622 Z-1.655 B12.978 C55.809 +G01 X+25.903 Y-11.774 Z-1.654 B12.974 C54.334 +G01 X+26.115 Y-11.926 Z-1.655 B12.978 C52.858 +G01 X+26.319 Y-12.089 Z-1.654 B12.973 C51.383 +G01 X+26.522 Y-12.252 Z-1.655 B12.977 C49.907 +G01 X+26.718 Y-12.424 Z-1.654 B12.973 C48.432 +G01 X+26.913 Y-12.598 Z-1.655 B12.977 C46.956 +G01 X+27.099 Y-12.78 Z-1.654 B12.973 C45.481 +G01 X+27.285 Y-12.963 Z-1.655 B12.977 C44.005 +G01 X+27.461 Y-13.155 Z-1.654 B12.973 C42.53 +G01 X+27.637 Y-13.348 Z-1.655 B12.977 C41.054 +G01 X+27.803 Y-13.548 Z-1.654 C39.581 +G01 X+27.97 Y-13.75 Z-1.655 C38.108 +G01 X+28.125 Y-13.959 Z-1.654 B12.973 C36.633 +G01 X+28.281 Y-14.168 Z-1.655 B12.977 C35.157 +G01 X+28.426 Y-14.385 Z-1.654 B12.973 C33.68 +G01 X+28.57 Y-14.603 Z-1.655 B12.977 C32.203 +G01 X+28.703 Y-14.826 Z-1.654 B12.973 C30.729 +G01 X+28.836 Y-15.05 Z-1.655 B12.977 C29.255 +G01 X+28.958 Y-15.281 Z-1.654 B12.973 C27.78 +G01 X+29.08 Y-15.512 Z-1.655 B12.978 C26.304 +G01 X+29.189 Y-15.749 Z-1.654 B12.973 C24.829 +G01 X+29.299 Y-15.985 Z-1.655 B12.978 C23.353 +G01 X+29.396 Y-16.227 Z-1.654 B12.973 C21.878 +G01 X+29.493 Y-16.469 Z-1.655 B12.978 C20.402 +G01 X+29.578 Y-16.716 Z-1.654 B12.974 C18.927 +G01 X+29.662 Y-16.963 Z-1.655 B12.978 C17.451 +G01 X+29.734 Y-17.213 Z-1.654 B12.974 C15.976 +G01 X+29.806 Y-17.464 Z-1.655 B12.978 C14.5 +G01 X+29.865 Y-17.718 Z-1.654 B12.974 C13.025 +G01 X+29.923 Y-17.972 Z-1.655 B12.978 C11.549 +G01 X+29.969 Y-18.229 Z-1.654 B12.974 C10.074 +G01 X+30.014 Y-18.486 Z-1.655 B12.978 C8.598 +G01 X+30.047 Y-18.744 Z-1.654 C7.123 +G01 X+30.079 Y-19.003 Z-1.655 C5.647 +G01 X+30.098 Y-19.263 Z-1.654 C4.172 +G01 X+30.117 Y-19.523 Z-1.655 C2.696 +G01 X+30.123 Y-19.784 Z-1.654 C1.221 +G01 X+30.128 Y-20.045 Z-1.655 C359.745 +G01 X+30.12 Y-20.306 Z-1.654 C358.27 +G01 X+30.112 Y-20.566 Z-1.655 C356.794 +G01 X+30.091 Y-20.826 Z-1.654 C355.319 +G01 X+30.07 Y-21.086 Z-1.655 C353.843 +G01 X+30.035 Y-21.344 Z-1.654 C352.368 +G01 X+30.001 Y-21.603 Z-1.655 C350.892 +G01 X+29.953 Y-21.859 Z-1.654 C349.417 +G01 X+29.905 Y-22.116 Z-1.655 C347.941 +G01 X+29.844 Y-22.369 Z-1.654 C346.466 +G01 X+29.783 Y-22.623 Z-1.655 C344.99 +G01 X+29.709 Y-22.873 Z-1.654 C343.515 +G01 X+29.635 Y-23.123 Z-1.655 C342.039 +G01 X+29.548 Y-23.369 Z-1.654 C340.564 +G01 X+29.461 Y-23.615 Z-1.655 C339.089 +G01 X+29.362 Y-23.856 Z-1.654 C337.613 +G01 X+29.263 Y-24.097 Z-1.655 C336.138 +G01 X+29.151 Y-24.333 Z-1.654 B12.974 C334.662 +G01 X+29.039 Y-24.568 Z-1.655 B12.978 C333.186 +G01 X+28.916 Y-24.798 Z-1.654 B12.974 C331.711 +G01 X+28.792 Y-25.028 Z-1.655 B12.978 C330.236 +G01 X+28.657 Y-25.251 Z-1.654 B12.974 C328.76 +G01 X+28.522 Y-25.474 Z-1.655 B12.978 C327.285 +G01 X+28.375 Y-25.689 Z-1.654 B12.973 C325.809 +G01 X+28.229 Y-25.905 Z-1.655 B12.978 C324.334 +G01 X+28.071 Y-26.113 Z-1.654 B12.973 C322.858 +G01 X+27.914 Y-26.321 Z-1.655 B12.977 C321.383 +G01 X+27.746 Y-26.52 Z-1.654 B12.973 C319.907 +G01 X+27.578 Y-26.72 Z-1.655 B12.977 C318.432 +G01 X+27.4 Y-26.91 Z-1.654 B12.973 C316.956 +G01 X+27.222 Y-27.101 Z-1.655 B12.977 C315.481 +G01 X+27.034 Y-27.282 Z-1.654 B12.973 C314.005 +G01 X+26.847 Y-27.463 Z-1.655 B12.977 C312.53 +G01 X+26.65 Y-27.635 Z-1.654 B12.973 C311.054 +G01 X+26.453 Y-27.806 Z-1.655 B12.977 C309.578 +G01 X+26.248 Y-27.967 Z-1.654 B12.973 C308.105 +G01 X+26.043 Y-28.128 Z-1.655 B12.977 C306.632 +G01 X+25.83 Y-28.278 Z-1.654 B12.973 C305.157 +G01 X+25.617 Y-28.428 Z-1.655 B12.977 C303.682 +G01 X+25.396 Y-28.567 Z-1.654 B12.973 C302.206 +G01 X+25.175 Y-28.706 Z-1.655 B12.977 C300.731 +G01 X+24.948 Y-28.834 Z-1.654 B12.973 C299.255 +G01 X+24.72 Y-28.961 Z-1.655 B12.977 C297.78 +G01 X+24.487 Y-29.077 Z-1.654 B12.973 C296.304 +G01 X+24.253 Y-29.192 Z-1.655 B12.978 C294.829 +G01 X+24.013 Y-29.296 Z-1.654 B12.973 C293.353 +G01 X+23.774 Y-29.399 Z-1.655 B12.978 C291.878 +G01 X+23.53 Y-29.49 Z-1.654 B12.974 C290.402 +G01 X+23.285 Y-29.581 Z-1.655 B12.978 C288.927 +G01 X+23.036 Y-29.659 Z-1.654 B12.974 C287.451 +G01 X+22.788 Y-29.737 Z-1.655 B12.978 C285.976 +G01 X+22.535 Y-29.802 Z-1.654 B12.974 C284.5 +G01 X+22.283 Y-29.868 Z-1.655 B12.978 C283.025 +G01 X+22.027 Y-29.92 Z-1.654 B12.974 C281.549 +G01 X+21.772 Y-29.972 Z-1.655 B12.978 C280.074 +G01 X+21.514 Y-30.011 Z-1.654 C278.598 +G01 X+21.256 Y-30.05 Z-1.655 C277.123 +G01 X+20.996 Y-30.076 Z-1.654 C275.647 +G01 X+20.737 Y-30.101 Z-1.655 C274.172 +G01 X+20.476 Y-30.114 Z-1.654 C272.696 +G01 X+20.216 Y-30.126 Z-1.655 C271.221 +G01 X+19.955 Y-30.125 Z-1.654 C269.745 +G01 X+19.694 Y-30.124 Z-1.655 C268.27 +G01 X+19.434 Y-30.109 Z-1.654 C266.794 +G01 X+19.174 Y-30.094 Z-1.655 C265.319 +G01 X+18.914 Y-30.067 Z-1.654 C263.843 +G01 X+18.655 Y-30.038 Z-1.655 C262.368 +G01 X+18.398 Y-29.997 Z-1.654 C260.892 +G01 X+18.14 Y-29.956 Z-1.655 C259.417 +G01 X+17.885 Y-29.902 Z-1.654 C257.941 +G01 X+17.63 Y-29.847 Z-1.655 C256.466 +G01 X+17.378 Y-29.78 Z-1.654 C254.99 +G01 X+17.126 Y-29.712 Z-1.655 C253.515 +G01 X+16.878 Y-29.632 Z-1.654 C252.039 +G01 X+16.63 Y-29.551 Z-1.655 C250.564 +G01 X+16.386 Y-29.458 Z-1.654 C249.089 +G01 X+16.143 Y-29.365 Z-1.655 C247.613 +G01 X+15.904 Y-29.26 Z-1.654 B12.974 C246.139 +G01 X+15.666 Y-29.154 Z-1.655 B12.978 C244.664 +G01 X+15.401 Y-29.02 Z-1.654 B12.973 C243.008 +G01 X+15.136 Y-28.886 Z-1.655 B12.979 C241.352 +G01 X+14.936 Y-28.77 Z-1.654 B12.976 C240.021 +G01 X+14.737 Y-28.654 Z-1.655 B12.979 C238.69 +G01 X+14.522 Y-28.516 Z-1.654 B12.974 C237.245 +G01 X+14.307 Y-28.377 Z-1.655 B12.978 C235.799 +G01 X+14.096 Y-28.226 Z-1.654 B12.974 C234.329 +G01 X+13.885 Y-28.074 Z-1.655 B12.978 C232.858 +G01 X+13.681 Y-27.911 Z-1.654 B12.973 C231.383 +G01 X+13.478 Y-27.748 Z-1.655 B12.977 C229.907 +G01 X+13.282 Y-27.575 Z-1.654 B12.973 C228.432 +G01 X+13.087 Y-27.402 Z-1.655 B12.977 C226.956 +G01 X+12.855 Y-27.174 Z-1.654 B12.974 C225.119 +G01 Y-27.041 Z-1.632 B12.852 C224.573 +G01 X+12.784 Y-26.972 Z-1.633 B12.854 C224.013 +G01 X+12.61 Y-26.782 Z-1.632 B12.849 C222.538 +G01 X+12.435 Y-26.591 Z-1.633 B12.853 C221.063 +G01 X+12.27 Y-26.392 Z-1.632 C219.59 +G01 X+12.106 Y-26.193 Z-1.633 C218.118 +G01 X+11.951 Y-25.986 Z-1.632 B12.849 C216.64 +G01 X+11.797 Y-25.779 Z-1.633 B12.854 C215.163 +G01 X+11.654 Y-25.564 Z-1.632 B12.849 C213.685 +G01 X+11.511 Y-25.349 Z-1.633 B12.854 C212.208 +G01 X+11.379 Y-25.127 Z-1.632 B12.85 C210.73 +G01 X+11.247 Y-24.905 Z-1.633 B12.854 C209.253 +G01 X+11.124 Y-24.671 Z-1.632 B12.849 C207.747 +G01 X+11.001 Y-24.438 Z-1.633 B12.854 C206.24 +G01 X+10.895 Y-24.208 Z-1.632 B12.85 C204.796 +G01 X+10.789 Y-23.979 Z-1.633 B12.854 C203.351 +G01 X+10.692 Y-23.739 Z-1.632 B12.85 C201.876 +G01 X+10.596 Y-23.499 Z-1.633 B12.854 C200.4 +G01 X+10.512 Y-23.255 Z-1.632 B12.85 C198.925 +G01 X+10.429 Y-23.01 Z-1.633 B12.854 C197.45 +G01 X+10.357 Y-22.762 Z-1.632 B12.85 C195.974 +G01 X+10.286 Y-22.514 Z-1.633 B12.854 C194.499 +G01 X+10.228 Y-22.262 Z-1.632 B12.85 C193.024 +G01 X+10.17 Y-22.01 Z-1.633 B12.854 C191.549 +G01 X+10.124 Y-21.756 Z-1.632 B12.85 C190.073 +G01 X+10.079 Y-21.502 Z-1.633 B12.854 C188.598 +G01 X+10.047 Y-21.245 Z-1.632 C187.123 +G01 X+10.015 Y-20.989 Z-1.633 C185.647 +G01 X+9.996 Y-20.731 Z-1.632 C184.172 +G01 X+9.977 Y-20.474 Z-1.633 C182.697 +G01 X+9.972 Y-20.215 Z-1.632 C181.222 +G01 X+9.966 Y-19.957 Z-1.633 B12.855 C179.747 +G01 X+9.974 Y-19.699 Z-1.632 B12.854 C178.271 +G01 X+9.982 Y-19.441 Z-1.633 C176.796 +G01 X+10.003 Y-19.183 Z-1.632 B12.855 C175.321 +G01 X+10.024 Y-18.926 Z-1.633 C173.845 +G01 X+10.058 Y-18.669 Z-1.632 C172.37 +G01 X+10.092 Y-18.413 Z-1.633 C170.895 +G01 X+10.14 Y-18.159 Z-1.632 C169.42 +G01 X+10.187 Y-17.905 Z-1.633 C167.944 +G01 X+10.248 Y-17.654 Z-1.632 B12.85 C166.469 +G01 X+10.308 Y-17.403 Z-1.633 B12.854 C164.994 +G01 X+10.381 Y-17.155 Z-1.632 B12.85 C163.518 +G01 X+10.455 Y-16.908 Z-1.633 B12.854 C162.043 +G01 X+10.586 Y-16.535 Z-1.632 B12.851 C159.785 +G01 X+10.627 Y-16.42 Z-1.633 B12.854 C159.093 +G01 X+10.774 Y-16.063 Z-1.632 B12.851 C156.882 +G01 X+10.823 Y-15.943 Z-1.633 B12.854 C156.142 +G01 X+10.985 Y-15.601 Z-1.632 B12.851 C153.978 +G01 X+11.044 Y-15.476 Z-1.633 B12.854 C153.192 +G01 X+11.219 Y-15.15 Z-1.632 B12.85 C151.075 +G01 X+11.289 Y-15.02 Z-1.633 B12.854 C150.241 +G01 X+11.476 Y-14.711 Z-1.632 B12.85 C148.172 +G01 X+11.557 Y-14.579 Z-1.633 B12.854 C147.291 +G01 X+11.755 Y-14.287 Z-1.632 B12.85 C145.268 +G01 X+11.847 Y-14.151 Z-1.633 B12.854 C144.34 +G01 X+12.055 Y-13.876 Z-1.632 B12.85 C142.365 +G01 X+12.159 Y-13.739 Z-1.633 B12.854 C141.389 +G01 X+12.325 Y-13.542 Z-1.632 C139.914 +G01 X+12.492 Y-13.344 Z-1.633 C138.439 +G01 X+12.668 Y-13.155 Z-1.632 B12.85 C136.964 +G01 X+12.844 Y-12.966 Z-1.633 B12.854 C135.488 +G01 X+13.03 Y-12.787 Z-1.632 B12.849 C134.013 +G01 X+13.216 Y-12.607 Z-1.633 B12.854 C132.538 +G01 X+13.411 Y-12.437 Z-1.632 B12.849 C131.063 +G01 X+13.606 Y-12.268 Z-1.633 B12.853 C129.588 +G01 X+13.809 Y-12.108 Z-1.632 B12.849 C128.114 +G01 X+14.012 Y-11.949 Z-1.633 B12.854 C126.64 +G01 X+14.223 Y-11.8 Z-1.632 B12.849 C125.163 +G01 X+14.434 Y-11.651 Z-1.633 B12.854 C123.685 +G01 X+14.653 Y-11.513 Z-1.632 B12.85 C122.208 +G01 X+14.872 Y-11.376 Z-1.633 B12.854 C120.73 +G01 X+15.097 Y-11.249 Z-1.632 B12.85 C119.253 +G01 X+15.322 Y-11.123 Z-1.633 B12.854 C117.776 +G01 X+15.557 Y-11.007 Z-1.632 C116.283 +G01 X+15.791 Y-10.892 Z-1.633 C114.789 +G01 X+16.026 Y-10.79 Z-1.632 B12.85 C113.332 +G01 X+16.26 Y-10.689 Z-1.633 B12.854 C111.876 +G01 X+16.502 Y-10.599 Z-1.632 B12.85 C110.4 +G01 X+16.744 Y-10.509 Z-1.633 B12.854 C108.925 +G01 X+16.99 Y-10.431 Z-1.632 B12.85 C107.45 +G01 X+17.237 Y-10.354 Z-1.633 B12.854 C105.974 +G01 X+17.487 Y-10.289 Z-1.632 B12.85 C104.499 +G01 X+17.737 Y-10.225 Z-1.633 B12.854 C103.024 +G01 X+17.99 Y-10.173 Z-1.632 B12.85 C101.549 +G01 X+18.243 Y-10.121 Z-1.633 B12.854 C100.073 +G01 X+18.499 Y-10.082 Z-1.632 B12.85 C98.598 +G01 X+18.754 Y-10.044 Z-1.633 B12.854 C97.123 +G01 X+19.011 Y-10.018 Z-1.632 C95.648 +G01 X+19.268 Y-9.993 Z-1.633 C94.172 +G01 X+19.527 Y-9.981 Z-1.632 C92.697 +G01 X+19.785 Y-9.968 Z-1.633 C91.222 +G01 X+20.043 Y-9.969 Z-1.632 C89.747 +G01 X+20.301 Y-9.971 Z-1.633 B12.855 C88.271 +G01 X+20.559 Y-9.985 Z-1.632 B12.854 C86.796 +G01 X+20.817 Y-10 Z-1.633 B12.855 C85.321 +G01 X+21.074 Y-10.027 Z-1.632 C83.845 +G01 X+21.331 Y-10.055 Z-1.633 C82.37 +G01 X+21.586 Y-10.096 Z-1.632 C80.895 +G01 X+21.841 Y-10.137 Z-1.633 C79.42 +G01 X+22.094 Y-10.19 Z-1.632 C77.944 +G01 X+22.346 Y-10.244 Z-1.633 C76.469 +G01 X+22.596 Y-10.311 Z-1.632 B12.85 C74.994 +G01 X+22.846 Y-10.378 Z-1.633 B12.854 C73.519 +G01 X+23.091 Y-10.458 Z-1.632 B12.85 C72.043 +G01 X+23.337 Y-10.537 Z-1.633 B12.854 C70.568 +G01 X+23.702 Y-10.677 Z-1.632 B12.851 C68.334 +G01 X+23.82 Y-10.722 Z-1.633 B12.854 C67.617 +G01 X+24.169 Y-10.876 Z-1.632 B12.851 C65.43 +G01 X+24.292 Y-10.931 Z-1.633 B12.854 C64.667 +G01 X+24.626 Y-11.099 Z-1.632 B12.851 C62.527 +G01 X+24.754 Y-11.164 Z-1.633 B12.854 C61.716 +G01 X+25.071 Y-11.345 Z-1.632 B12.85 C59.624 +G01 X+25.202 Y-11.42 Z-1.633 B12.854 C58.766 +G01 X+25.503 Y-11.613 Z-1.632 B12.85 C56.72 +G01 X+25.637 Y-11.699 Z-1.633 B12.854 C55.815 +G01 X+25.92 Y-11.903 Z-1.632 B12.85 C53.817 +G01 X+26.057 Y-12 Z-1.633 B12.854 C52.865 +G01 X+26.259 Y-12.161 Z-1.632 C51.39 +G01 X+26.46 Y-12.323 Z-1.633 C49.914 +G01 X+26.654 Y-12.494 Z-1.632 B12.85 C48.439 +G01 X+26.847 Y-12.666 Z-1.633 B12.854 C46.964 +G01 X+27.031 Y-12.847 Z-1.632 B12.85 C45.488 +G01 X+27.216 Y-13.028 Z-1.633 B12.854 C44.013 +G01 X+27.39 Y-13.218 Z-1.632 B12.849 C42.538 +G01 X+27.565 Y-13.408 Z-1.633 B12.853 C41.063 +G01 X+27.73 Y-13.607 Z-1.632 B12.849 C39.59 +G01 X+27.894 Y-13.807 Z-1.633 B12.853 C38.118 +G01 X+28.049 Y-14.014 Z-1.632 B12.849 C36.64 +G01 X+28.203 Y-14.221 Z-1.633 B12.854 C35.163 +G01 X+28.346 Y-14.436 Z-1.632 B12.849 C33.685 +G01 X+28.489 Y-14.651 Z-1.633 B12.854 C32.208 +G01 X+28.621 Y-14.873 Z-1.632 B12.85 C30.73 +G01 X+28.753 Y-15.095 Z-1.633 B12.854 C29.253 +G01 X+28.876 Y-15.329 Z-1.632 B12.849 C27.747 +G01 X+28.999 Y-15.562 Z-1.633 B12.854 C26.24 +G01 X+29.105 Y-15.792 Z-1.632 B12.85 C24.796 +G01 X+29.211 Y-16.021 Z-1.633 B12.854 C23.351 +G01 X+29.308 Y-16.261 Z-1.632 B12.85 C21.876 +G01 X+29.404 Y-16.501 Z-1.633 B12.854 C20.4 +G01 X+29.488 Y-16.745 Z-1.632 B12.85 C18.925 +G01 X+29.571 Y-16.989 Z-1.633 B12.854 C17.45 +G01 X+29.643 Y-17.238 Z-1.632 B12.85 C15.974 +G01 X+29.714 Y-17.486 Z-1.633 B12.854 C14.499 +G01 X+29.772 Y-17.738 Z-1.632 B12.85 C13.024 +G01 X+29.83 Y-17.99 Z-1.633 B12.854 C11.549 +G01 X+29.876 Y-18.244 Z-1.632 B12.85 C10.073 +G01 X+29.921 Y-18.498 Z-1.633 B12.854 C8.598 +G01 X+29.953 Y-18.755 Z-1.632 C7.123 +G01 X+29.985 Y-19.011 Z-1.633 C5.648 +G01 X+30.004 Y-19.269 Z-1.632 C4.172 +G01 X+30.023 Y-19.526 Z-1.633 C2.697 +G01 X+30.028 Y-19.785 Z-1.632 C1.222 +G01 X+30.034 Y-20.043 Z-1.633 B12.855 C359.747 +G01 X+30.026 Y-20.301 Z-1.632 B12.854 C358.271 +G01 X+30.018 Y-20.559 Z-1.633 C356.796 +G01 X+29.997 Y-20.817 Z-1.632 B12.855 C355.321 +G01 X+29.976 Y-21.074 Z-1.633 C353.845 +G01 X+29.942 Y-21.33 Z-1.632 C352.37 +G01 X+29.908 Y-21.586 Z-1.633 C350.895 +G01 X+29.86 Y-21.84 Z-1.632 C349.42 +G01 X+29.813 Y-22.094 Z-1.633 C347.944 +G01 X+29.752 Y-22.346 Z-1.632 B12.85 C346.469 +G01 X+29.692 Y-22.597 Z-1.633 B12.854 C344.994 +G01 X+29.619 Y-22.845 Z-1.632 B12.85 C343.518 +G01 X+29.545 Y-23.092 Z-1.633 B12.854 C342.043 +G01 X+29.414 Y-23.464 Z-1.632 B12.851 C339.785 +G01 X+29.374 Y-23.58 Z-1.633 B12.854 C339.093 +G01 X+29.226 Y-23.937 Z-1.632 B12.851 C336.882 +G01 X+29.177 Y-24.057 Z-1.633 B12.854 C336.142 +G01 X+29.015 Y-24.399 Z-1.632 B12.851 C333.978 +G01 X+28.956 Y-24.524 Z-1.633 B12.854 C333.192 +G01 X+28.781 Y-24.85 Z-1.632 B12.85 C331.075 +G01 X+28.711 Y-24.979 Z-1.633 B12.854 C330.241 +G01 X+28.524 Y-25.288 Z-1.632 B12.85 C328.172 +G01 X+28.443 Y-25.421 Z-1.633 B12.854 C327.291 +G01 X+28.245 Y-25.713 Z-1.632 B12.85 C325.268 +G01 X+28.153 Y-25.849 Z-1.633 B12.854 C324.34 +G01 X+27.945 Y-26.124 Z-1.632 B12.85 C322.365 +G01 X+27.841 Y-26.261 Z-1.633 B12.854 C321.389 +G01 X+27.675 Y-26.458 Z-1.632 C319.914 +G01 X+27.508 Y-26.656 Z-1.633 C318.439 +G01 X+27.332 Y-26.845 Z-1.632 B12.85 C316.964 +G01 X+27.156 Y-27.034 Z-1.633 B12.854 C315.488 +G01 X+26.97 Y-27.213 Z-1.632 B12.849 C314.013 +G01 X+26.784 Y-27.393 Z-1.633 B12.854 C312.538 +G01 X+26.589 Y-27.562 Z-1.632 B12.849 C311.063 +G01 X+26.394 Y-27.732 Z-1.633 B12.853 C309.588 +G01 X+26.191 Y-27.892 Z-1.632 B12.849 C308.114 +G01 X+25.988 Y-28.051 Z-1.633 B12.854 C306.64 +G01 X+25.777 Y-28.2 Z-1.632 B12.849 C305.163 +G01 X+25.566 Y-28.349 Z-1.633 B12.854 C303.685 +G01 X+25.347 Y-28.486 Z-1.632 B12.85 C302.208 +G01 X+25.128 Y-28.624 Z-1.633 B12.854 C300.73 +G01 X+24.903 Y-28.75 Z-1.632 B12.85 C299.253 +G01 X+24.678 Y-28.877 Z-1.633 B12.854 C297.776 +G01 X+24.443 Y-28.993 Z-1.632 C296.283 +G01 X+24.209 Y-29.108 Z-1.633 C294.789 +G01 X+23.974 Y-29.21 Z-1.632 B12.85 C293.332 +G01 X+23.74 Y-29.311 Z-1.633 B12.854 C291.876 +G01 X+23.498 Y-29.401 Z-1.632 B12.85 C290.4 +G01 X+23.256 Y-29.491 Z-1.633 B12.854 C288.925 +G01 X+23.01 Y-29.568 Z-1.632 B12.85 C287.45 +G01 X+22.763 Y-29.646 Z-1.633 B12.854 C285.974 +G01 X+22.513 Y-29.711 Z-1.632 B12.85 C284.499 +G01 X+22.263 Y-29.775 Z-1.633 B12.854 C283.024 +G01 X+22.01 Y-29.827 Z-1.632 B12.85 C281.549 +G01 X+21.757 Y-29.879 Z-1.633 B12.854 C280.073 +G01 X+21.501 Y-29.918 Z-1.632 B12.85 C278.598 +G01 X+21.246 Y-29.956 Z-1.633 B12.854 C277.123 +G01 X+20.989 Y-29.982 Z-1.632 C275.648 +G01 X+20.732 Y-30.007 Z-1.633 C274.172 +G01 X+20.473 Y-30.019 Z-1.632 C272.697 +G01 X+20.215 Y-30.031 Z-1.633 C271.222 +G01 X+19.957 Y-30.03 Z-1.632 C269.747 +G01 X+19.699 Y-30.029 Z-1.633 B12.855 C268.271 +G01 X+19.441 Y-30.015 Z-1.632 B12.854 C266.796 +G01 X+19.183 Y-30 Z-1.633 B12.855 C265.321 +G01 X+18.926 Y-29.973 Z-1.632 C263.845 +G01 X+18.669 Y-29.945 Z-1.633 C262.37 +G01 X+18.414 Y-29.904 Z-1.632 C260.895 +G01 X+18.159 Y-29.863 Z-1.633 C259.42 +G01 X+17.906 Y-29.81 Z-1.632 C257.944 +G01 X+17.654 Y-29.755 Z-1.633 C256.469 +G01 X+17.404 Y-29.689 Z-1.632 B12.85 C254.994 +G01 X+17.154 Y-29.622 Z-1.633 B12.854 C253.519 +G01 X+16.909 Y-29.542 Z-1.632 B12.85 C252.043 +G01 X+16.663 Y-29.462 Z-1.633 B12.854 C250.568 +G01 X+16.298 Y-29.323 Z-1.632 B12.851 C248.334 +G01 X+16.18 Y-29.278 Z-1.633 B12.854 C247.617 +G01 X+15.944 Y-29.174 Z-1.632 B12.85 C246.143 +G01 X+15.708 Y-29.069 Z-1.633 B12.854 C244.67 +G01 X+15.416 Y-28.922 Z-1.632 B12.849 C242.804 +G01 X+15.181 Y-28.803 Z-1.633 B12.856 C241.352 +G01 X+14.984 Y-28.688 B12.852 C240.024 +G01 X+14.787 Y-28.574 B12.855 C238.695 +G01 X+14.497 Y-28.387 Z-1.632 B12.851 C236.721 +G01 X+14.361 Y-28.3 Z-1.633 B12.854 C235.803 +G01 X+14.08 Y-28.097 Z-1.632 B12.85 C233.817 +G01 X+13.943 Y-27.999 Z-1.633 B12.854 C232.865 +G01 X+13.741 Y-27.838 Z-1.632 B12.85 C231.39 +G01 X+13.54 Y-27.677 Z-1.633 B12.854 C229.914 +G01 X+13.346 Y-27.506 Z-1.632 B12.85 C228.439 +G01 X+13.153 Y-27.334 Z-1.633 B12.854 C226.964 +G01 X+12.922 Y-27.107 Z-1.632 B12.85 C225.108 +G01 X+12.921 Y-26.974 Z-1.611 B12.728 C224.562 +G01 X+12.853 Y-26.908 B12.73 C224.021 +G01 X+12.68 Y-26.719 B12.726 C222.546 +G01 X+12.507 Y-26.53 B12.73 C221.071 +G01 X+12.344 Y-26.333 B12.726 C219.599 +G01 X+12.181 Y-26.136 B12.73 C218.127 +G01 X+12.028 Y-25.931 B12.726 C216.65 +G01 X+11.876 Y-25.725 B12.73 C215.173 +G01 X+11.733 Y-25.513 B12.726 C213.696 +G01 X+11.592 Y-25.3 B12.73 C212.219 +G01 X+11.461 Y-25.08 B12.726 C210.741 +G01 X+11.33 Y-24.86 B12.73 C209.264 +G01 X+11.21 Y-24.633 B12.726 C207.787 +G01 X+11.091 Y-24.407 B12.73 C206.309 +G01 X+10.992 Y-24.194 B12.726 C204.96 +G01 X+10.894 Y-23.98 B12.729 C203.61 +G01 X+10.865 Y-23.915 B12.73 C203.181 +G01 X+10.775 Y-23.691 B12.726 C201.79 +G01 X+10.685 Y-23.468 B12.73 C200.4 +G01 X+10.6 Y-23.219 B12.726 C198.888 +G01 X+10.516 Y-22.971 B12.73 C197.375 +G01 X+10.447 Y-22.731 B12.727 C195.936 +G01 X+10.378 Y-22.491 B12.731 C194.498 +G01 X+10.32 Y-22.242 B12.727 C193.023 +G01 X+10.263 Y-21.993 B12.731 C191.548 +G01 X+10.218 Y-21.741 B12.727 C190.073 +G01 X+10.173 Y-21.489 B12.731 C188.598 +G01 X+10.141 Y-21.235 B12.727 C187.123 +G01 X+10.109 Y-20.981 B12.731 C185.648 +G01 X+10.09 Y-20.726 C184.173 +G01 X+10.072 Y-20.471 C182.698 +G01 X+10.066 Y-20.215 C181.223 +G01 X+10.061 Y-19.959 C179.748 +G01 X+10.068 Y-19.703 C178.273 +G01 X+10.076 Y-19.447 C176.798 +G01 X+10.097 Y-19.192 C175.322 +G01 X+10.118 Y-18.937 C173.847 +G01 X+10.152 Y-18.684 C172.372 +G01 X+10.186 Y-18.43 C170.897 +G01 X+10.232 Y-18.178 B12.727 C169.422 +G01 X+10.279 Y-17.927 B12.731 C167.947 +G01 X+10.339 Y-17.678 B12.727 C166.472 +G01 X+10.399 Y-17.429 B12.731 C164.997 +G01 X+10.52 Y-17.021 B12.728 C162.534 +G01 X+10.544 Y-16.938 B12.731 C162.047 +G01 X+10.683 Y-16.544 B12.728 C159.63 +G01 X+10.714 Y-16.456 B12.731 C159.097 +G01 X+10.87 Y-16.077 B12.728 C156.727 +G01 X+10.909 Y-15.982 B12.731 C156.147 +G01 X+11.081 Y-15.619 B12.728 C153.823 +G01 X+11.128 Y-15.52 B12.731 C153.197 +G01 X+11.314 Y-15.173 B12.728 C150.92 +G01 X+11.37 Y-15.069 B12.73 C150.247 +G01 X+11.57 Y-14.74 B12.727 C148.017 +G01 X+11.636 Y-14.631 B12.73 C147.297 +G01 X+11.847 Y-14.319 B12.727 C145.113 +G01 X+11.923 Y-14.208 B12.73 C144.346 +G01 X+12.145 Y-13.914 B12.727 C142.21 +G01 X+12.232 Y-13.799 B12.73 C141.396 +G01 X+12.397 Y-13.604 C139.921 +G01 X+12.561 Y-13.408 C138.446 +G01 X+12.736 Y-13.221 B12.726 C136.971 +G01 X+12.911 Y-13.034 B12.73 C135.496 +G01 X+13.095 Y-12.856 B12.726 C134.021 +G01 X+13.279 Y-12.678 B12.73 C132.546 +G01 X+13.472 Y-12.51 B12.726 C131.071 +G01 X+13.665 Y-12.342 B12.73 C129.596 +G01 X+13.866 Y-12.183 C128.123 +G01 X+14.067 Y-12.026 C126.65 +G01 X+14.276 Y-11.878 B12.726 C125.173 +G01 X+14.486 Y-11.731 B12.73 C123.696 +G01 X+14.702 Y-11.594 B12.726 C122.218 +G01 X+14.919 Y-11.458 B12.73 C120.741 +G01 X+15.142 Y-11.333 B12.726 C119.264 +G01 X+15.365 Y-11.208 B12.73 C117.787 +G01 X+15.594 Y-11.094 B12.726 C116.309 +G01 X+15.824 Y-10.981 B12.73 C114.832 +G01 X+16.059 Y-10.879 B12.726 C113.355 +G01 X+16.294 Y-10.778 B12.73 C111.877 +G01 X+16.542 Y-10.686 B12.726 C110.352 +G01 X+16.79 Y-10.594 B12.73 C108.826 +G01 X+17.03 Y-10.518 B12.726 C107.375 +G01 X+17.27 Y-10.443 B12.73 C105.924 +G01 X+17.514 Y-10.38 B12.727 C104.472 +G01 X+17.757 Y-10.317 B12.731 C103.021 +G01 X+18.008 Y-10.266 B12.727 C101.547 +G01 X+18.258 Y-10.214 B12.731 C100.073 +G01 X+18.511 Y-10.176 B12.727 C98.598 +G01 X+18.765 Y-10.138 B12.731 C97.123 +G01 X+19.019 Y-10.112 C95.648 +G01 X+19.274 Y-10.087 C94.173 +G01 X+19.529 Y-10.075 C92.698 +G01 X+19.785 Y-10.063 C91.223 +G01 X+20.041 Y-10.064 C89.748 +G01 X+20.297 Y-10.065 C88.273 +G01 X+20.552 Y-10.079 C86.798 +G01 X+20.808 Y-10.094 C85.322 +G01 X+21.062 Y-10.121 C83.847 +G01 X+21.317 Y-10.148 C82.372 +G01 X+21.57 Y-10.189 C80.897 +G01 X+21.822 Y-10.229 C79.422 +G01 X+22.073 Y-10.282 B12.727 C77.947 +G01 X+22.323 Y-10.336 B12.731 C76.472 +G01 X+22.57 Y-10.402 B12.727 C74.997 +G01 X+22.817 Y-10.468 B12.731 C73.522 +G01 X+23.219 Y-10.598 B12.728 C71.082 +G01 X+23.304 Y-10.626 B12.731 C70.572 +G01 X+23.691 Y-10.773 B12.728 C68.179 +G01 X+23.782 Y-10.809 B12.731 C67.622 +G01 X+24.153 Y-10.972 B12.728 C65.275 +G01 X+24.25 Y-11.015 B12.731 C64.672 +G01 X+24.605 Y-11.194 B12.728 C62.372 +G01 X+24.707 Y-11.246 B12.731 C61.722 +G01 X+25.045 Y-11.439 B12.728 C59.468 +G01 X+25.152 Y-11.5 B12.73 C58.772 +G01 X+25.472 Y-11.706 B12.727 C56.565 +G01 X+25.582 Y-11.777 B12.73 C55.822 +G01 X+25.885 Y-11.994 B12.727 C53.662 +G01 X+25.998 Y-12.075 B12.73 C52.871 +G01 X+26.283 Y-12.302 B12.727 C50.758 +G01 X+26.398 Y-12.394 B12.73 C49.921 +G01 X+26.665 Y-12.63 B12.727 C47.855 +G01 X+26.781 Y-12.734 B12.73 C46.971 +G01 X+26.964 Y-12.913 B12.726 C45.496 +G01 X+27.147 Y-13.092 B12.73 C44.021 +G01 X+27.32 Y-13.281 B12.726 C42.546 +G01 X+27.493 Y-13.469 B12.73 C41.071 +G01 X+27.656 Y-13.666 B12.726 C39.599 +G01 X+27.819 Y-13.864 B12.73 C38.126 +G01 X+27.972 Y-14.069 B12.726 C36.65 +G01 X+28.124 Y-14.274 B12.73 C35.173 +G01 X+28.267 Y-14.487 B12.726 C33.696 +G01 X+28.408 Y-14.7 B12.73 C32.219 +G01 X+28.539 Y-14.92 B12.726 C30.741 +G01 X+28.67 Y-15.14 B12.73 C29.264 +G01 X+28.79 Y-15.366 B12.726 C27.787 +G01 X+28.909 Y-15.593 B12.73 C26.309 +G01 X+29.008 Y-15.806 B12.726 C24.96 +G01 X+29.106 Y-16.02 B12.729 C23.61 +G01 X+29.135 Y-16.085 B12.73 C23.181 +G01 X+29.225 Y-16.308 B12.726 C21.791 +G01 X+29.315 Y-16.532 B12.73 C20.4 +G01 X+29.4 Y-16.78 B12.726 C18.888 +G01 X+29.484 Y-17.029 B12.73 C17.375 +G01 X+29.553 Y-17.268 B12.727 C15.936 +G01 X+29.622 Y-17.508 B12.731 C14.498 +G01 X+29.68 Y-17.758 B12.727 C13.023 +G01 X+29.737 Y-18.007 B12.731 C11.548 +G01 X+29.782 Y-18.259 B12.727 C10.073 +G01 X+29.827 Y-18.511 B12.731 C8.598 +G01 X+29.859 Y-18.765 B12.727 C7.123 +G01 X+29.891 Y-19.019 B12.731 C5.648 +G01 X+29.91 Y-19.274 C4.173 +G01 X+29.928 Y-19.529 C2.698 +G01 X+29.934 Y-19.785 C1.223 +G01 X+29.939 Y-20.041 C359.748 +G01 X+29.932 Y-20.297 C358.273 +G01 X+29.924 Y-20.553 C356.798 +G01 X+29.903 Y-20.808 C355.322 +G01 X+29.882 Y-21.063 C353.847 +G01 X+29.849 Y-21.316 C352.372 +G01 X+29.814 Y-21.57 C350.897 +G01 X+29.768 Y-21.822 B12.727 C349.422 +G01 X+29.721 Y-22.073 B12.731 C347.947 +G01 X+29.661 Y-22.322 B12.727 C346.472 +G01 X+29.601 Y-22.571 B12.731 C344.997 +G01 X+29.48 Y-22.979 B12.728 C342.534 +G01 X+29.456 Y-23.062 B12.731 C342.047 +G01 X+29.317 Y-23.456 B12.728 C339.63 +G01 X+29.286 Y-23.544 B12.731 C339.097 +G01 X+29.13 Y-23.923 B12.728 C336.727 +G01 X+29.091 Y-24.018 B12.731 C336.147 +G01 X+28.919 Y-24.38 B12.728 C333.823 +G01 X+28.872 Y-24.48 B12.731 C333.197 +G01 X+28.686 Y-24.827 B12.728 C330.92 +G01 X+28.63 Y-24.931 B12.73 C330.246 +G01 X+28.43 Y-25.26 B12.727 C328.017 +G01 X+28.364 Y-25.369 B12.73 C327.297 +G01 X+28.153 Y-25.68 B12.727 C325.113 +G01 X+28.077 Y-25.792 B12.73 C324.346 +G01 X+27.855 Y-26.086 B12.727 C322.21 +G01 X+27.768 Y-26.2 B12.73 C321.396 +G01 X+27.603 Y-26.396 C319.921 +G01 X+27.439 Y-26.592 C318.446 +G01 X+27.264 Y-26.779 B12.726 C316.971 +G01 X+27.089 Y-26.966 B12.73 C315.496 +G01 X+26.905 Y-27.144 B12.726 C314.021 +G01 X+26.721 Y-27.322 B12.73 C312.546 +G01 X+26.528 Y-27.49 B12.726 C311.071 +G01 X+26.335 Y-27.658 B12.73 C309.596 +G01 X+26.134 Y-27.816 C308.123 +G01 X+25.933 Y-27.974 C306.65 +G01 X+25.724 Y-28.122 B12.726 C305.173 +G01 X+25.514 Y-28.269 B12.73 C303.696 +G01 X+25.298 Y-28.406 B12.726 C302.218 +G01 X+25.081 Y-28.542 B12.73 C300.741 +G01 X+24.858 Y-28.667 B12.726 C299.264 +G01 X+24.635 Y-28.792 B12.73 C297.787 +G01 X+24.406 Y-28.906 B12.726 C296.309 +G01 X+24.176 Y-29.019 B12.73 C294.832 +G01 X+23.941 Y-29.121 B12.726 C293.355 +G01 X+23.706 Y-29.222 B12.73 C291.877 +G01 X+23.458 Y-29.314 B12.726 C290.352 +G01 X+23.21 Y-29.406 B12.73 C288.826 +G01 X+22.97 Y-29.481 B12.726 C287.375 +G01 X+22.73 Y-29.557 B12.73 C285.924 +G01 X+22.486 Y-29.62 B12.727 C284.472 +G01 X+22.243 Y-29.683 B12.731 C283.021 +G01 X+21.992 Y-29.734 B12.727 C281.547 +G01 X+21.742 Y-29.785 B12.731 C280.073 +G01 X+21.489 Y-29.824 B12.727 C278.598 +G01 X+21.236 Y-29.862 B12.731 C277.123 +G01 X+20.981 Y-29.887 C275.648 +G01 X+20.726 Y-29.913 C274.173 +G01 X+20.471 Y-29.925 C272.698 +G01 X+20.215 Y-29.937 C271.223 +G01 X+19.959 Y-29.936 C269.748 +G01 X+19.703 Y-29.935 C268.273 +G01 X+19.448 Y-29.921 C266.798 +G01 X+19.192 Y-29.906 C265.322 +G01 X+18.938 Y-29.879 C263.847 +G01 X+18.683 Y-29.852 C262.372 +G01 X+18.43 Y-29.811 C260.897 +G01 X+18.178 Y-29.771 C259.422 +G01 X+17.927 Y-29.717 B12.727 C257.947 +G01 X+17.677 Y-29.664 B12.731 C256.472 +G01 X+17.43 Y-29.598 B12.727 C254.997 +G01 X+17.183 Y-29.532 B12.731 C253.522 +G01 X+16.781 Y-29.402 B12.728 C251.082 +G01 X+16.696 Y-29.374 B12.731 C250.572 +G01 X+16.309 Y-29.226 B12.728 C248.179 +G01 X+16.218 Y-29.191 B12.731 C247.622 +G01 X+15.984 Y-29.088 B12.727 C246.148 +G01 X+15.75 Y-28.985 B12.731 C244.674 +G01 X+15.395 Y-28.805 B12.727 C242.372 +G01 X+15.226 Y-28.72 Z-1.612 B12.732 C241.352 +G01 X+15.031 Y-28.607 Z-1.611 B12.728 C240.026 +G01 X+14.837 Y-28.494 Z-1.612 B12.731 C238.699 +G01 X+14.528 Y-28.295 Z-1.611 B12.728 C236.566 +G01 X+14.415 Y-28.222 B12.731 C235.807 +G01 X+14.115 Y-28.006 B12.727 C233.662 +G01 X+14.002 Y-27.925 B12.73 C232.872 +G01 X+13.717 Y-27.698 B12.727 C230.758 +G01 X+13.602 Y-27.606 B12.73 C229.921 +G01 X+13.41 Y-27.436 B12.726 C228.446 +G01 X+13.219 Y-27.266 B12.73 C226.971 +G01 X+12.989 Y-27.04 B12.726 C225.101 +G01 X+12.988 Y-26.907 Z-1.59 B12.605 C224.551 +G01 X+12.923 Y-26.843 B12.607 C224.029 +G01 X+12.751 Y-26.656 Z-1.589 B12.602 C222.554 +G01 X+12.58 Y-26.469 Z-1.59 B12.606 C221.079 +G01 X+12.418 Y-26.274 Z-1.589 B12.602 C219.603 +G01 X+12.256 Y-26.078 Z-1.59 B12.606 C218.126 +G01 X+12.105 Y-25.875 Z-1.589 B12.602 C216.655 +G01 X+11.954 Y-25.672 Z-1.59 B12.606 C215.183 +G01 X+11.813 Y-25.461 Z-1.589 B12.603 C213.706 +G01 X+11.672 Y-25.25 Z-1.59 B12.607 C212.229 +G01 X+11.543 Y-25.033 Z-1.589 B12.603 C210.752 +G01 X+11.413 Y-24.815 Z-1.59 B12.607 C209.275 +G01 X+11.295 Y-24.591 Z-1.589 B12.603 C207.798 +G01 X+11.177 Y-24.366 Z-1.59 B12.607 C206.321 +G01 X+11.078 Y-24.154 Z-1.589 B12.603 C204.966 +G01 X+10.98 Y-23.942 Z-1.59 B12.605 C203.61 +G01 X+10.964 Y-23.906 B12.607 C203.367 +G01 X+10.878 Y-23.693 Z-1.589 B12.603 C202.037 +G01 X+10.792 Y-23.48 Z-1.59 B12.605 C200.707 +G01 X+10.774 Y-23.436 B12.607 C200.413 +G01 X+10.628 Y-23.01 B12.605 C197.804 +G01 X+10.61 Y-22.957 B12.607 C197.459 +G01 X+10.54 Y-22.713 Z-1.589 B12.603 C195.981 +G01 X+10.47 Y-22.469 Z-1.59 B12.607 C194.504 +G01 X+10.413 Y-22.222 Z-1.589 B12.603 C193.027 +G01 X+10.356 Y-21.975 Z-1.59 B12.607 C191.55 +G01 X+10.31 Y-21.718 Z-1.589 B12.603 C190.03 +G01 X+10.265 Y-21.461 Z-1.59 B12.607 C188.51 +G01 X+10.234 Y-21.217 Z-1.589 B12.603 C187.079 +G01 X+10.204 Y-20.973 Z-1.59 B12.607 C185.648 +G01 X+10.185 Y-20.721 Z-1.589 C184.173 +G01 X+10.166 Y-20.468 Z-1.59 C182.698 +G01 X+10.161 Y-20.214 Z-1.589 C181.223 +G01 X+10.155 Y-19.961 Z-1.59 C179.749 +G01 X+10.163 Y-19.707 Z-1.589 C178.274 +G01 X+10.17 Y-19.454 Z-1.59 C176.799 +G01 X+10.191 Y-19.201 Z-1.589 C175.324 +G01 X+10.212 Y-18.949 Z-1.59 C173.849 +G01 X+10.245 Y-18.698 Z-1.589 C172.374 +G01 X+10.279 Y-18.446 Z-1.59 C170.9 +G01 X+10.325 Y-18.197 Z-1.589 C169.425 +G01 X+10.372 Y-17.948 Z-1.59 C167.95 +G01 X+10.431 Y-17.701 Z-1.589 B12.603 C166.475 +G01 X+10.49 Y-17.455 Z-1.59 B12.607 C165. +G01 X+10.562 Y-17.212 Z-1.589 B12.603 C163.525 +G01 X+10.634 Y-16.969 Z-1.59 B12.607 C162.051 +G01 X+10.78 Y-16.553 B12.605 C159.476 +G01 X+10.802 Y-16.491 B12.607 C159.101 +G01 X+10.967 Y-16.09 B12.605 C156.572 +G01 X+10.995 Y-16.022 B12.607 C156.151 +G01 X+11.176 Y-15.638 B12.605 C153.669 +G01 X+11.212 Y-15.564 B12.607 C153.202 +G01 X+11.409 Y-15.197 B12.605 C150.765 +G01 X+11.452 Y-15.117 B12.607 C150.252 +G01 X+11.663 Y-14.768 B12.605 C147.862 +G01 X+11.714 Y-14.683 B12.607 C147.303 +G01 X+11.939 Y-14.352 B12.605 C144.959 +G01 X+11.999 Y-14.264 B12.607 C144.353 +G01 X+12.236 Y-13.951 B12.604 C142.055 +G01 X+12.305 Y-13.86 B12.607 C141.403 +G01 X+12.552 Y-13.566 B12.604 C139.152 +G01 X+12.631 Y-13.472 B12.607 C138.454 +G01 X+12.888 Y-13.197 B12.604 C136.248 +G01 X+12.977 Y-13.101 B12.607 C135.504 +G01 X+13.159 Y-12.925 Z-1.589 B12.603 C134.029 +G01 X+13.342 Y-12.749 Z-1.59 B12.607 C132.554 +G01 X+13.532 Y-12.582 Z-1.589 B12.602 C131.08 +G01 X+13.724 Y-12.415 Z-1.59 B12.606 C129.605 +G01 X+13.923 Y-12.259 Z-1.589 C128.132 +G01 X+14.122 Y-12.102 Z-1.59 C126.66 +G01 X+14.33 Y-11.956 Z-1.589 B12.602 C125.183 +G01 X+14.537 Y-11.81 Z-1.59 B12.607 C123.706 +G01 X+14.751 Y-11.675 Z-1.589 B12.603 C122.229 +G01 X+14.966 Y-11.54 Z-1.59 B12.607 C120.752 +G01 X+15.187 Y-11.416 Z-1.589 B12.603 C119.275 +G01 X+15.408 Y-11.292 Z-1.59 B12.607 C117.798 +G01 X+15.635 Y-11.179 Z-1.589 B12.603 C116.321 +G01 X+15.862 Y-11.067 Z-1.59 B12.607 C114.844 +G01 X+16.075 Y-10.975 Z-1.589 B12.603 C113.501 +G01 X+16.287 Y-10.883 Z-1.59 B12.605 C112.158 +G01 X+16.327 Y-10.866 B12.607 C111.89 +G01 X+16.541 Y-10.786 Z-1.589 B12.603 C110.573 +G01 X+16.754 Y-10.707 Z-1.59 B12.605 C109.255 +G01 X+16.803 Y-10.689 B12.607 C108.936 +G01 X+17.229 Y-10.555 B12.605 C106.352 +G01 X+17.286 Y-10.537 B12.607 C105.981 +G01 X+17.531 Y-10.473 Z-1.589 B12.603 C104.505 +G01 X+17.777 Y-10.41 Z-1.59 B12.607 C103.027 +G01 X+18.035 Y-10.357 Z-1.589 B12.603 C101.494 +G01 X+18.293 Y-10.305 Z-1.59 B12.607 C99.961 +G01 X+18.539 Y-10.268 Z-1.589 B12.603 C98.51 +G01 X+18.786 Y-10.231 Z-1.59 B12.607 C97.058 +G01 X+19.033 Y-10.206 Z-1.589 B12.603 C95.616 +G01 X+19.279 Y-10.182 Z-1.59 B12.607 C94.173 +G01 X+19.532 Y-10.169 Z-1.589 C92.698 +G01 X+19.786 Y-10.158 Z-1.59 C91.223 +G01 X+20.039 Z-1.589 C89.749 +G01 X+20.293 Y-10.16 Z-1.59 C88.274 +G01 X+20.546 Y-10.174 Z-1.589 C86.799 +G01 X+20.799 Y-10.188 Z-1.59 C85.324 +G01 X+21.051 Y-10.215 Z-1.589 C83.849 +G01 X+21.303 Y-10.242 Z-1.59 C82.374 +G01 X+21.553 Y-10.282 Z-1.589 C80.9 +G01 X+21.803 Y-10.322 Z-1.59 C79.425 +G01 X+22.051 Y-10.375 Z-1.589 C77.95 +G01 X+22.299 Y-10.428 Z-1.59 C76.475 +G01 X+22.544 Y-10.493 Z-1.589 B12.603 C75. +G01 X+22.789 Y-10.559 Z-1.59 B12.607 C73.525 +G01 X+23.03 Y-10.636 Z-1.589 B12.603 C72.051 +G01 X+23.271 Y-10.715 Z-1.59 B12.607 C70.576 +G01 X+23.679 Y-10.87 B12.605 C68.024 +G01 X+23.745 Y-10.895 B12.607 C67.626 +G01 X+24.137 Y-11.069 B12.605 C65.12 +G01 X+24.209 Y-11.1 B12.607 C64.677 +G01 X+24.584 Y-11.29 B12.605 C62.217 +G01 X+24.661 Y-11.329 B12.607 C61.727 +G01 X+25.019 Y-11.533 B12.605 C59.314 +G01 X+25.101 Y-11.58 B12.607 C58.777 +G01 X+25.442 Y-11.798 B12.605 C56.41 +G01 X+25.528 Y-11.854 B12.607 C55.828 +G01 X+25.85 Y-12.085 B12.604 C53.507 +G01 X+25.94 Y-12.149 B12.607 C52.878 +G01 X+26.243 Y-12.391 B12.604 C50.603 +G01 X+26.336 Y-12.466 B12.607 C49.928 +G01 X+26.621 Y-12.717 B12.604 C47.7 +G01 X+26.716 Y-12.802 B12.607 C46.979 +G01 X+26.897 Y-12.979 Z-1.589 B12.603 C45.504 +G01 X+27.077 Y-13.157 Z-1.59 B12.607 C44.029 +G01 X+27.249 Y-13.344 Z-1.589 B12.603 C42.554 +G01 X+27.42 Y-13.53 Z-1.59 B12.606 C41.079 +G01 X+27.582 Y-13.726 Z-1.589 B12.602 C39.603 +G01 X+27.744 Y-13.922 Z-1.59 B12.606 C38.126 +G01 X+27.895 Y-14.125 Z-1.589 B12.602 C36.655 +G01 X+28.046 Y-14.328 Z-1.59 B12.606 C35.183 +G01 X+28.187 Y-14.538 Z-1.589 B12.603 C33.706 +G01 X+28.328 Y-14.749 Z-1.59 B12.607 C32.229 +G01 X+28.457 Y-14.967 Z-1.589 B12.603 C30.752 +G01 X+28.587 Y-15.185 Z-1.59 B12.607 C29.275 +G01 X+28.705 Y-15.409 Z-1.589 B12.603 C27.798 +G01 X+28.823 Y-15.633 Z-1.59 B12.607 C26.321 +G01 X+28.922 Y-15.845 Z-1.589 B12.603 C24.966 +G01 X+29.02 Y-16.057 Z-1.59 B12.605 C23.61 +G01 X+29.036 Y-16.093 B12.607 C23.367 +G01 X+29.122 Y-16.306 Z-1.589 B12.603 C22.037 +G01 X+29.208 Y-16.519 Z-1.59 B12.605 C20.707 +G01 X+29.226 Y-16.564 B12.607 C20.413 +G01 X+29.372 Y-16.99 B12.605 C17.804 +G01 X+29.39 Y-17.043 B12.607 C17.459 +G01 X+29.46 Y-17.287 Z-1.589 B12.603 C15.981 +G01 X+29.53 Y-17.531 Z-1.59 B12.607 C14.504 +G01 X+29.587 Y-17.777 Z-1.589 B12.603 C13.027 +G01 X+29.644 Y-18.024 Z-1.59 B12.607 C11.55 +G01 X+29.69 Y-18.282 Z-1.589 B12.603 C10.03 +G01 X+29.735 Y-18.539 Z-1.59 B12.607 C8.51 +G01 X+29.766 Y-18.783 Z-1.589 B12.603 C7.079 +G01 X+29.796 Y-19.027 Z-1.59 B12.607 C5.648 +G01 X+29.815 Y-19.279 Z-1.589 C4.173 +G01 X+29.834 Y-19.532 Z-1.59 C2.698 +G01 X+29.839 Y-19.786 Z-1.589 C1.223 +G01 X+29.845 Y-20.039 Z-1.59 C359.749 +G01 X+29.837 Y-20.292 Z-1.589 C358.274 +G01 X+29.83 Y-20.546 Z-1.59 C356.799 +G01 X+29.809 Y-20.798 Z-1.589 C355.324 +G01 X+29.788 Y-21.051 Z-1.59 C353.849 +G01 X+29.755 Y-21.302 Z-1.589 C352.374 +G01 X+29.721 Y-21.554 Z-1.59 C350.9 +G01 X+29.675 Y-21.803 Z-1.589 C349.425 +G01 X+29.628 Y-22.052 Z-1.59 C347.95 +G01 X+29.569 Y-22.298 Z-1.589 B12.603 C346.475 +G01 X+29.51 Y-22.545 Z-1.59 B12.607 C345. +G01 X+29.438 Y-22.788 Z-1.589 B12.603 C343.525 +G01 X+29.366 Y-23.031 Z-1.59 B12.607 C342.051 +G01 X+29.22 Y-23.447 B12.605 C339.476 +G01 X+29.198 Y-23.509 B12.607 C339.101 +G01 X+29.033 Y-23.909 B12.605 C336.572 +G01 X+29.005 Y-23.978 B12.607 C336.151 +G01 X+28.824 Y-24.362 B12.605 C333.669 +G01 X+28.788 Y-24.436 B12.607 C333.202 +G01 X+28.591 Y-24.803 B12.605 C330.765 +G01 X+28.548 Y-24.883 B12.607 C330.252 +G01 X+28.337 Y-25.232 B12.605 C327.862 +G01 X+28.286 Y-25.316 B12.607 C327.303 +G01 X+28.061 Y-25.648 B12.605 C324.959 +G01 X+28.001 Y-25.736 B12.607 C324.353 +G01 X+27.764 Y-26.049 B12.604 C322.055 +G01 X+27.695 Y-26.14 B12.607 C321.403 +G01 X+27.448 Y-26.434 B12.604 C319.152 +G01 X+27.369 Y-26.528 B12.607 C318.454 +G01 X+27.112 Y-26.803 B12.604 C316.248 +G01 X+27.023 Y-26.899 B12.607 C315.504 +G01 X+26.841 Y-27.075 Z-1.589 B12.603 C314.029 +G01 X+26.658 Y-27.251 Z-1.59 B12.607 C312.554 +G01 X+26.468 Y-27.418 Z-1.589 B12.602 C311.08 +G01 X+26.276 Y-27.584 Z-1.59 B12.606 C309.605 +G01 X+26.077 Y-27.741 Z-1.589 C308.132 +G01 X+25.878 Y-27.897 Z-1.59 C306.66 +G01 X+25.671 Y-28.044 Z-1.589 B12.602 C305.183 +G01 X+25.463 Y-28.19 Z-1.59 B12.607 C303.706 +G01 X+25.249 Y-28.325 Z-1.589 B12.603 C302.229 +G01 X+25.034 Y-28.46 Z-1.59 B12.607 C300.752 +G01 X+24.813 Y-28.584 Z-1.589 B12.603 C299.275 +G01 X+24.592 Y-28.708 Z-1.59 B12.607 C297.798 +G01 X+24.365 Y-28.82 Z-1.589 B12.603 C296.321 +G01 X+24.138 Y-28.933 Z-1.59 B12.607 C294.844 +G01 X+23.925 Y-29.025 Z-1.589 B12.603 C293.501 +G01 X+23.713 Y-29.117 Z-1.59 B12.605 C292.158 +G01 X+23.673 Y-29.134 B12.607 C291.89 +G01 X+23.459 Y-29.213 Z-1.589 B12.603 C290.573 +G01 X+23.246 Y-29.293 Z-1.59 B12.605 C289.255 +G01 X+23.197 Y-29.311 B12.607 C288.936 +G01 X+22.771 Y-29.445 B12.605 C286.352 +G01 X+22.714 Y-29.463 B12.607 C285.981 +G01 X+22.469 Y-29.527 Z-1.589 B12.603 C284.505 +G01 X+22.223 Y-29.59 Z-1.59 B12.607 C283.027 +G01 X+21.965 Y-29.643 Z-1.589 B12.603 C281.494 +G01 X+21.707 Y-29.695 Z-1.59 B12.607 C279.961 +G01 X+21.461 Y-29.732 Z-1.589 B12.603 C278.51 +G01 X+21.214 Y-29.769 Z-1.59 B12.607 C277.058 +G01 X+20.967 Y-29.794 Z-1.589 B12.603 C275.616 +G01 X+20.721 Y-29.818 Z-1.59 B12.607 C274.173 +G01 X+20.468 Y-29.83 Z-1.589 C272.698 +G01 X+20.214 Y-29.842 Z-1.59 C271.223 +G01 X+19.961 Y-29.841 Z-1.589 C269.749 +G01 X+19.707 Y-29.84 Z-1.59 C268.274 +G01 X+19.454 Y-29.826 Z-1.589 C266.799 +G01 X+19.201 Y-29.812 Z-1.59 C265.324 +G01 X+18.949 Y-29.785 Z-1.589 C263.849 +G01 X+18.697 Y-29.758 Z-1.59 C262.374 +G01 X+18.447 Y-29.718 Z-1.589 C260.9 +G01 X+18.197 Y-29.678 Z-1.59 C259.425 +G01 X+17.949 Y-29.625 Z-1.589 C257.95 +G01 X+17.701 Y-29.572 Z-1.59 C256.475 +G01 X+17.456 Y-29.507 Z-1.589 B12.603 C255. +G01 X+17.211 Y-29.441 Z-1.59 B12.607 C253.525 +G01 X+16.97 Y-29.363 Z-1.589 B12.603 C252.051 +G01 X+16.729 Y-29.285 Z-1.59 B12.607 C250.576 +G01 X+16.321 Y-29.129 B12.605 C248.024 +G01 X+16.255 Y-29.104 B12.607 C247.626 +G01 X+16.023 Y-29.002 Z-1.589 B12.603 C246.153 +G01 X+15.792 Y-28.9 Z-1.59 B12.607 C244.68 +G01 X+15.416 Y-28.71 B12.605 C242.217 +G01 X+15.271 Y-28.637 B12.609 C241.352 +G01 X+15.079 Y-28.525 B12.605 C240.028 +G01 X+14.887 Y-28.414 B12.608 C238.704 +G01 X+14.558 Y-28.202 B12.605 C236.411 +G01 X+14.469 Y-28.144 B12.607 C235.811 +G01 X+14.15 Y-27.915 B12.604 C233.507 +G01 X+14.06 Y-27.851 B12.607 C232.878 +G01 X+13.757 Y-27.609 B12.604 C230.603 +G01 X+13.664 Y-27.534 B12.607 C229.928 +G01 X+13.474 Y-27.366 Z-1.589 B12.603 C228.453 +G01 X+13.284 Y-27.198 Z-1.59 B12.607 C226.979 +G01 X+13.055 Y-26.973 Z-1.589 B12.603 C225.104 +G01 Y-26.84 Z-1.569 B12.482 C224.54 +G01 X+12.992 Y-26.778 B12.483 C224.037 +G01 X+12.822 Y-26.593 Z-1.568 B12.479 C222.562 +G01 X+12.652 Y-26.408 Z-1.569 B12.483 C221.088 +G01 X+12.492 Y-26.215 Z-1.568 B12.479 C219.613 +G01 X+12.332 Y-26.022 Z-1.569 B12.483 C218.139 +G01 X+12.182 Y-25.82 Z-1.568 B12.479 C216.666 +G01 X+12.032 Y-25.619 Z-1.569 B12.483 C215.193 +G01 X+11.893 Y-25.41 Z-1.568 B12.479 C213.716 +G01 X+11.753 Y-25.201 Z-1.569 B12.483 C212.239 +G01 X+11.625 Y-24.986 Z-1.568 B12.479 C210.763 +G01 X+11.496 Y-24.77 Z-1.569 B12.483 C209.286 +G01 X+11.386 Y-24.561 Z-1.568 B12.479 C207.9 +G01 X+11.276 Y-24.352 Z-1.569 B12.482 C206.513 +G01 X+11.262 Y-24.326 B12.483 C206.332 +G01 X+11.164 Y-24.115 Z-1.568 B12.479 C204.971 +G01 X+11.067 Y-23.905 Z-1.569 B12.482 C203.61 +G01 X+11.051 Y-23.87 B12.483 C203.379 +G01 X+10.966 Y-23.659 Z-1.568 B12.479 C202.043 +G01 X+10.881 Y-23.447 Z-1.569 B12.482 C200.707 +G01 X+10.864 Y-23.404 B12.484 C200.425 +G01 X+10.718 Y-22.981 B12.481 C197.804 +G01 X+10.701 Y-22.93 B12.484 C197.471 +G01 X+10.579 Y-22.507 B12.481 C194.901 +G01 X+10.562 Y-22.447 B12.484 C194.518 +G01 X+10.464 Y-22.026 B12.481 C191.997 +G01 X+10.449 Y-21.958 B12.484 C191.564 +G01 X+10.404 Y-21.711 Z-1.568 B12.48 C190.087 +G01 X+10.36 Y-21.464 Z-1.569 B12.484 C188.611 +G01 X+10.329 Y-21.215 Z-1.568 B12.48 C187.134 +G01 X+10.298 Y-20.965 Z-1.569 B12.484 C185.657 +G01 X+10.279 Y-20.715 Z-1.568 C184.18 +G01 X+10.261 Y-20.465 Z-1.569 C182.703 +G01 X+10.256 Y-20.205 Z-1.568 B12.479 C181.174 +G01 X+10.251 Y-19.944 Z-1.569 B12.483 C179.644 +G01 X+10.258 Y-19.697 Z-1.568 B12.48 C178.193 +G01 X+10.266 Y-19.451 Z-1.569 B12.484 C176.741 +G01 X+10.285 Y-19.206 Z-1.568 B12.48 C175.296 +G01 X+10.306 Y-18.96 Z-1.569 B12.484 C173.851 +G01 X+10.339 Y-18.712 Z-1.568 C172.376 +G01 X+10.372 Y-18.463 Z-1.569 C170.902 +G01 X+10.418 Y-18.216 Z-1.568 C169.427 +G01 X+10.464 Y-17.969 Z-1.569 C167.953 +G01 X+10.522 Y-17.725 Z-1.568 C166.478 +G01 X+10.581 Y-17.481 Z-1.569 C165.004 +G01 X+10.652 Y-17.24 Z-1.568 C163.529 +G01 X+10.723 Y-16.999 Z-1.569 C162.054 +G01 X+10.806 Y-16.763 Z-1.568 C160.58 +G01 X+10.89 Y-16.526 Z-1.569 C159.105 +G01 X+10.985 Y-16.294 Z-1.568 B12.48 C157.63 +G01 X+11.081 Y-16.061 Z-1.569 B12.484 C156.156 +G01 X+11.188 Y-15.834 Z-1.568 B12.48 C154.681 +G01 X+11.295 Y-15.608 Z-1.569 B12.484 C153.207 +G01 X+11.504 Y-15.22 B12.482 C150.61 +G01 X+11.533 Y-15.165 B12.484 C150.257 +G01 X+11.757 Y-14.796 B12.482 C147.707 +G01 X+11.793 Y-14.736 B12.484 C147.308 +G01 X+12.031 Y-14.385 B12.482 C144.804 +G01 X+12.075 Y-14.32 B12.484 C144.359 +G01 X+12.326 Y-13.989 B12.482 C141.9 +G01 X+12.378 Y-13.92 B12.483 C141.41 +G01 X+12.64 Y-13.608 B12.481 C138.997 +G01 X+12.701 Y-13.536 B12.483 C138.461 +G01 X+12.974 Y-13.243 Z-1.568 B12.481 C136.093 +G01 X+13.043 Y-13.168 Z-1.569 B12.483 C135.512 +G01 X+13.224 Y-12.994 Z-1.568 B12.479 C134.037 +G01 X+13.404 Y-12.819 Z-1.569 B12.483 C132.562 +G01 X+13.593 Y-12.654 Z-1.568 B12.479 C131.088 +G01 X+13.783 Y-12.489 Z-1.569 B12.483 C129.613 +G01 X+13.98 Y-12.334 Z-1.568 B12.479 C128.142 +G01 X+14.178 Y-12.179 Z-1.569 B12.483 C126.67 +G01 X+14.383 Y-12.034 Z-1.568 B12.479 C125.193 +G01 X+14.588 Y-11.89 Z-1.569 B12.483 C123.716 +G01 X+14.8 Y-11.756 Z-1.568 B12.479 C122.24 +G01 X+15.013 Y-11.622 Z-1.569 B12.483 C120.763 +G01 X+15.22 Y-11.505 Z-1.568 B12.479 C119.364 +G01 X+15.428 Y-11.389 Z-1.569 B12.482 C117.965 +G01 X+15.451 Y-11.376 B12.483 C117.809 +G01 X+15.66 Y-11.272 Z-1.568 B12.479 C116.435 +G01 X+15.87 Y-11.169 Z-1.569 B12.482 C115.062 +G01 X+15.901 Y-11.154 B12.483 C114.856 +G01 X+16.112 Y-11.062 Z-1.568 B12.479 C113.507 +G01 X+16.323 Y-10.971 Z-1.569 B12.482 C112.159 +G01 X+16.361 Y-10.954 B12.483 C111.902 +G01 X+16.785 Y-10.796 B12.481 C109.255 +G01 X+16.832 Y-10.779 B12.484 C108.948 +G01 X+17.255 Y-10.646 B12.481 C106.352 +G01 X+17.311 Y-10.628 B12.484 C105.995 +G01 X+17.733 Y-10.519 B12.481 C103.449 +G01 X+17.797 Y-10.502 B12.484 C103.041 +G01 X+18.216 Y-10.416 B12.481 C100.546 +G01 X+18.289 Y-10.401 B12.484 C100.088 +G01 X+18.537 Y-10.363 Z-1.568 B12.48 C98.611 +G01 X+18.785 Y-10.326 Z-1.569 B12.484 C97.134 +G01 X+19.035 Y-10.301 Z-1.568 B12.48 C95.657 +G01 X+19.285 Y-10.276 Z-1.569 B12.484 C94.18 +G01 X+19.535 Y-10.264 Z-1.568 C92.703 +G01 X+19.786 Y-10.252 Z-1.569 C91.227 +G01 X+20.044 Y-10.253 Z-1.568 B12.479 C89.71 +G01 X+20.303 Y-10.255 Z-1.569 B12.483 C88.193 +G01 X+20.546 Y-10.268 Z-1.568 B12.48 C86.759 +G01 X+20.79 Y-10.282 Z-1.569 B12.484 C85.326 +G01 X+21.039 Y-10.309 Z-1.568 C83.851 +G01 X+21.289 Y-10.335 Z-1.569 C82.376 +G01 X+21.537 Y-10.375 Z-1.568 C80.902 +G01 X+21.785 Y-10.415 Z-1.569 C79.427 +G01 X+22.03 Y-10.467 Z-1.568 C77.953 +G01 X+22.276 Y-10.519 Z-1.569 C76.478 +G01 X+22.518 Y-10.584 Z-1.568 C75.004 +G01 X+22.761 Y-10.649 Z-1.569 C73.529 +G01 X+23 Y-10.726 Z-1.568 C72.054 +G01 X+23.238 Y-10.803 Z-1.569 C70.58 +G01 X+23.473 Y-10.893 Z-1.568 B12.48 C69.105 +G01 X+23.708 Y-10.982 Z-1.569 B12.484 C67.63 +G01 X+23.937 Y-11.084 Z-1.568 B12.48 C66.156 +G01 X+24.167 Y-11.185 Z-1.569 B12.484 C64.681 +G01 X+24.563 Y-11.385 B12.482 C62.062 +G01 X+24.615 Y-11.411 B12.484 C61.732 +G01 X+24.994 Y-11.627 B12.482 C59.159 +G01 X+25.051 Y-11.66 B12.484 C58.783 +G01 X+25.411 Y-11.891 B12.482 C56.255 +G01 X+25.474 Y-11.931 B12.484 C55.834 +G01 X+25.815 Y-12.176 B12.482 C53.352 +G01 X+25.882 Y-12.224 B12.483 C52.885 +G01 X+26.204 Y-12.481 B12.481 C50.449 +G01 X+26.274 Y-12.537 B12.483 C49.935 +G01 X+26.576 Y-12.804 B12.481 C47.545 +G01 X+26.65 Y-12.87 B12.483 C46.986 +G01 X+26.932 Y-13.147 Z-1.568 B12.481 C44.642 +G01 X+27.008 Y-13.222 Z-1.569 B12.483 C44.037 +G01 X+27.178 Y-13.406 Z-1.568 B12.479 C42.562 +G01 X+27.348 Y-13.591 Z-1.569 B12.483 C41.088 +G01 X+27.508 Y-13.785 Z-1.568 B12.479 C39.613 +G01 X+27.668 Y-13.978 Z-1.569 B12.483 C38.139 +G01 X+27.818 Y-14.179 Z-1.568 B12.479 C36.666 +G01 X+27.968 Y-14.381 Z-1.569 B12.483 C35.193 +G01 X+28.108 Y-14.59 Z-1.568 B12.479 C33.716 +G01 X+28.247 Y-14.799 Z-1.569 B12.483 C32.239 +G01 X+28.375 Y-15.014 Z-1.568 B12.479 C30.763 +G01 X+28.504 Y-15.23 Z-1.569 B12.483 C29.286 +G01 X+28.614 Y-15.439 Z-1.568 B12.479 C27.9 +G01 X+28.724 Y-15.648 Z-1.569 B12.482 C26.513 +G01 X+28.738 Y-15.674 B12.483 C26.332 +G01 X+28.836 Y-15.885 Z-1.568 B12.479 C24.971 +G01 X+28.933 Y-16.095 Z-1.569 B12.482 C23.61 +G01 X+28.949 Y-16.13 B12.483 C23.379 +G01 X+29.034 Y-16.341 Z-1.568 B12.479 C22.043 +G01 X+29.119 Y-16.553 Z-1.569 B12.482 C20.707 +G01 X+29.136 Y-16.595 B12.484 C20.425 +G01 X+29.282 Y-17.019 B12.481 C17.804 +G01 X+29.299 Y-17.07 B12.484 C17.471 +G01 X+29.421 Y-17.493 B12.481 C14.901 +G01 X+29.438 Y-17.553 B12.484 C14.518 +G01 X+29.536 Y-17.974 B12.481 C11.997 +G01 X+29.551 Y-18.042 B12.484 C11.564 +G01 X+29.596 Y-18.289 Z-1.568 B12.48 C10.087 +G01 X+29.64 Y-18.536 Z-1.569 B12.484 C8.611 +G01 X+29.671 Y-18.785 Z-1.568 B12.48 C7.134 +G01 X+29.702 Y-19.034 Z-1.569 B12.484 C5.657 +G01 X+29.721 Y-19.285 Z-1.568 C4.18 +G01 X+29.739 Y-19.535 Z-1.569 C2.703 +G01 X+29.744 Y-19.795 Z-1.568 B12.479 C1.174 +G01 X+29.749 Y-20.056 Z-1.569 B12.483 C359.644 +G01 X+29.742 Y-20.302 Z-1.568 B12.48 C358.193 +G01 X+29.734 Y-20.549 Z-1.569 B12.484 C356.741 +G01 X+29.715 Y-20.794 Z-1.568 B12.48 C355.296 +G01 X+29.694 Y-21.039 Z-1.569 B12.484 C353.851 +G01 X+29.661 Y-21.288 Z-1.568 C352.376 +G01 X+29.628 Y-21.537 Z-1.569 C350.902 +G01 X+29.582 Y-21.784 Z-1.568 C349.427 +G01 X+29.536 Y-22.031 Z-1.569 C347.953 +G01 X+29.478 Y-22.275 Z-1.568 C346.478 +G01 X+29.419 Y-22.519 Z-1.569 C345.004 +G01 X+29.348 Y-22.76 Z-1.568 C343.529 +G01 X+29.277 Y-23 Z-1.569 C342.054 +G01 X+29.194 Y-23.237 Z-1.568 C340.58 +G01 X+29.11 Y-23.474 Z-1.569 C339.105 +G01 X+29.015 Y-23.706 Z-1.568 B12.48 C337.63 +G01 X+28.919 Y-23.938 Z-1.569 B12.484 C336.156 +G01 X+28.812 Y-24.165 Z-1.568 B12.48 C334.681 +G01 X+28.705 Y-24.392 Z-1.569 B12.484 C333.207 +G01 X+28.496 Y-24.78 B12.482 C330.61 +G01 X+28.467 Y-24.835 B12.484 C330.257 +G01 X+28.243 Y-25.204 B12.482 C327.707 +G01 X+28.207 Y-25.264 B12.484 C327.308 +G01 X+27.969 Y-25.615 B12.482 C324.804 +G01 X+27.925 Y-25.68 B12.484 C324.359 +G01 X+27.674 Y-26.011 B12.482 C321.9 +G01 X+27.622 Y-26.08 B12.483 C321.41 +G01 X+27.36 Y-26.392 B12.481 C318.996 +G01 X+27.299 Y-26.464 B12.483 C318.461 +G01 X+27.026 Y-26.757 Z-1.568 B12.481 C316.093 +G01 X+26.957 Y-26.831 Z-1.569 B12.483 C315.512 +G01 X+26.776 Y-27.006 Z-1.568 B12.479 C314.037 +G01 X+26.596 Y-27.181 Z-1.569 B12.483 C312.562 +G01 X+26.407 Y-27.346 Z-1.568 B12.479 C311.088 +G01 X+26.217 Y-27.511 Z-1.569 B12.483 C309.613 +G01 X+26.02 Y-27.666 Z-1.568 B12.479 C308.142 +G01 X+25.822 Y-27.821 Z-1.569 B12.483 C306.67 +G01 X+25.617 Y-27.965 Z-1.568 B12.479 C305.193 +G01 X+25.412 Y-28.11 Z-1.569 B12.483 C303.716 +G01 X+25.2 Y-28.244 Z-1.568 B12.479 C302.24 +G01 X+24.987 Y-28.378 Z-1.569 B12.483 C300.763 +G01 X+24.78 Y-28.495 Z-1.568 B12.479 C299.364 +G01 X+24.572 Y-28.611 Z-1.569 B12.482 C297.965 +G01 X+24.549 Y-28.623 B12.483 C297.809 +G01 X+24.34 Y-28.727 Z-1.568 B12.479 C296.435 +G01 X+24.13 Y-28.831 Z-1.569 B12.482 C295.062 +G01 X+24.099 Y-28.846 B12.483 C294.856 +G01 X+23.888 Y-28.938 Z-1.568 B12.479 C293.507 +G01 X+23.677 Y-29.029 Z-1.569 B12.482 C292.159 +G01 X+23.639 Y-29.046 B12.483 C291.902 +G01 X+23.215 Y-29.203 B12.481 C289.255 +G01 X+23.168 Y-29.221 B12.484 C288.948 +G01 X+22.745 Y-29.354 B12.481 C286.352 +G01 X+22.689 Y-29.372 B12.484 C285.995 +G01 X+22.267 Y-29.481 B12.481 C283.449 +G01 X+22.203 Y-29.498 B12.484 C283.041 +G01 X+21.784 Y-29.584 B12.481 C280.546 +G01 X+21.711 Y-29.599 B12.484 C280.088 +G01 X+21.463 Y-29.636 Z-1.568 B12.48 C278.611 +G01 X+21.215 Y-29.674 Z-1.569 B12.484 C277.134 +G01 X+20.965 Y-29.699 Z-1.568 B12.48 C275.657 +G01 X+20.715 Y-29.724 Z-1.569 B12.484 C274.18 +G01 X+20.465 Y-29.736 Z-1.568 C272.703 +G01 X+20.214 Y-29.748 Z-1.569 C271.227 +G01 X+19.956 Y-29.746 Z-1.568 B12.479 C269.71 +G01 X+19.697 Y-29.745 Z-1.569 B12.483 C268.193 +G01 X+19.454 Y-29.732 Z-1.568 B12.48 C266.759 +G01 X+19.211 Y-29.718 Z-1.569 B12.484 C265.326 +G01 X+18.961 Y-29.691 Z-1.568 C263.851 +G01 X+18.711 Y-29.664 Z-1.569 C262.376 +G01 X+18.463 Y-29.625 Z-1.568 C260.902 +G01 X+18.215 Y-29.585 Z-1.569 C259.427 +G01 X+17.97 Y-29.533 Z-1.568 C257.953 +G01 X+17.724 Y-29.481 Z-1.569 C256.478 +G01 X+17.482 Y-29.416 Z-1.568 C255.003 +G01 X+17.239 Y-29.351 Z-1.569 C253.529 +G01 X+17 Y-29.274 Z-1.568 C252.054 +G01 X+16.762 Y-29.196 Z-1.569 C250.58 +G01 X+16.527 Y-29.107 Z-1.568 C249.105 +G01 X+16.292 Y-29.018 Z-1.569 C247.63 +G01 X+16.063 Y-28.916 Z-1.568 B12.48 C246.157 +G01 X+15.834 Y-28.815 Z-1.569 B12.484 C244.684 +G01 X+15.575 Y-28.684 Z-1.568 B12.48 C243.018 +G01 X+15.316 Y-28.553 Z-1.569 B12.485 C241.352 +G01 X+14.937 Y-28.334 C238.709 +G01 X+14.589 Y-28.109 B12.482 C236.256 +G01 X+14.523 Y-28.067 B12.484 C235.814 +G01 X+14.185 Y-27.824 B12.482 C233.352 +G01 X+14.118 Y-27.776 B12.483 C232.885 +G01 X+13.796 Y-27.519 B12.481 C230.448 +G01 X+13.726 Y-27.463 B12.483 C229.935 +G01 X+13.538 Y-27.297 Z-1.568 B12.479 C228.461 +G01 X+13.35 Y-27.13 Z-1.569 B12.483 C226.986 +G01 X+13.122 Y-26.906 Z-1.568 B12.48 C225.106 +G01 Y-26.773 Z-1.548 B12.358 C224.529 +G01 X+13.061 Y-26.714 B12.36 C224.045 +G01 X+12.892 Y-26.531 Z-1.547 B12.356 C222.57 +G01 X+12.724 Y-26.347 Z-1.548 B12.36 C221.096 +G01 X+12.566 Y-26.156 Z-1.547 B12.356 C219.622 +G01 X+12.407 Y-25.964 Z-1.548 B12.36 C218.147 +G01 X+12.259 Y-25.765 Z-1.547 C216.675 +G01 X+12.11 Y-25.566 Z-1.548 C215.203 +G01 X+11.972 Y-25.359 Z-1.547 B12.356 C213.727 +G01 X+11.834 Y-25.152 Z-1.548 B12.36 C212.25 +G01 X+11.707 Y-24.939 Z-1.547 B12.356 C210.773 +G01 X+11.58 Y-24.725 Z-1.548 B12.36 C209.297 +G01 X+11.47 Y-24.517 Z-1.547 B12.356 C207.905 +G01 X+11.361 Y-24.31 Z-1.548 B12.359 C206.514 +G01 X+11.348 Y-24.285 B12.36 C206.344 +G01 X+11.251 Y-24.076 Z-1.547 B12.356 C204.977 +G01 X+11.154 Y-23.867 Z-1.548 B12.358 C203.61 +G01 X+11.139 Y-23.834 B12.36 C203.39 +G01 X+11.054 Y-23.624 Z-1.547 B12.356 C202.049 +G01 X+10.969 Y-23.414 Z-1.548 B12.358 C200.707 +G01 X+10.953 Y-23.373 B12.36 C200.437 +G01 X+10.808 Y-22.952 B12.358 C197.804 +G01 X+10.791 Y-22.903 B12.36 C197.484 +G01 X+10.671 Y-22.482 B12.358 C194.9 +G01 X+10.654 Y-22.425 B12.36 C194.531 +G01 X+10.557 Y-22.007 B12.358 C191.997 +G01 X+10.542 Y-21.94 B12.36 C191.578 +G01 X+10.468 Y-21.526 B12.357 C189.094 +G01 X+10.454 Y-21.451 B12.36 C188.625 +G01 X+10.403 Y-21.041 B12.357 C186.191 +G01 X+10.392 Y-20.958 B12.36 C185.672 +G01 X+10.374 Y-20.71 Z-1.547 B12.356 C184.195 +G01 X+10.356 Y-20.462 Z-1.548 B12.36 C182.719 +G01 X+10.35 Y-20.213 Z-1.547 B12.357 C181.242 +G01 X+10.345 Y-19.965 Z-1.548 B12.361 C179.766 +G01 X+10.352 Y-19.716 Z-1.547 C178.289 +G01 X+10.359 Y-19.468 Z-1.548 C176.812 +G01 X+10.379 Y-19.22 Z-1.547 C175.336 +G01 X+10.399 Y-18.972 Z-1.548 C173.859 +G01 X+10.432 Y-18.726 Z-1.547 C172.383 +G01 X+10.465 Y-18.479 Z-1.548 C170.906 +G01 X+10.512 Y-18.228 Z-1.547 B12.356 C169.391 +G01 X+10.559 Y-17.977 Z-1.548 B12.36 C167.876 +G01 X+10.616 Y-17.742 Z-1.547 B12.357 C166.441 +G01 X+10.672 Y-17.507 Z-1.548 B12.361 C165.006 +G01 X+10.742 Y-17.268 Z-1.547 C163.532 +G01 X+10.813 Y-17.03 Z-1.548 C162.058 +G01 X+10.895 Y-16.795 Z-1.547 C160.583 +G01 X+10.978 Y-16.561 Z-1.548 C159.109 +G01 X+11.072 Y-16.331 Z-1.547 C157.635 +G01 X+11.167 Y-16.101 Z-1.548 C156.16 +G01 X+11.273 Y-15.876 Z-1.547 C154.686 +G01 X+11.379 Y-15.652 Z-1.548 B12.36 C153.212 +G01 X+11.497 Y-15.432 Z-1.547 B12.356 C151.737 +G01 X+11.614 Y-15.214 Z-1.548 B12.36 C150.263 +G01 X+11.743 Y-15.001 Z-1.547 B12.356 C148.789 +G01 X+11.872 Y-14.788 Z-1.548 B12.36 C147.314 +G01 X+12.123 Y-14.418 B12.359 C144.649 +G01 X+12.151 Y-14.377 B12.36 C144.365 +G01 X+12.416 Y-14.026 B12.359 C141.745 +G01 X+12.451 Y-13.98 B12.36 C141.416 +G01 X+12.728 Y-13.65 B12.359 C138.842 +G01 X+12.771 Y-13.599 B12.36 C138.468 +G01 X+13.06 Y-13.29 B12.358 C135.938 +G01 X+13.11 Y-13.236 B12.36 C135.519 +G01 X+13.408 Y-12.947 B12.358 C133.035 +G01 X+13.467 Y-12.89 B12.36 C132.57 +G01 X+13.655 Y-12.727 Z-1.547 B12.356 C131.096 +G01 X+13.842 Y-12.563 Z-1.548 B12.36 C129.622 +G01 X+14.037 Y-12.409 Z-1.547 B12.356 C128.148 +G01 X+14.233 Y-12.256 Z-1.548 B12.36 C126.675 +G01 X+14.436 Y-12.113 Z-1.547 B12.356 C125.201 +G01 X+14.639 Y-11.969 Z-1.548 B12.36 C123.726 +G01 X+14.849 Y-11.837 Z-1.547 B12.356 C122.25 +G01 X+15.06 Y-11.704 Z-1.548 B12.36 C120.773 +G01 X+15.276 Y-11.582 Z-1.547 C119.297 +G01 X+15.493 Y-11.461 Z-1.548 C117.82 +G01 X+15.823 Y-11.298 B12.357 C115.614 +G01 X+15.939 Y-11.24 B12.36 C114.867 +G01 X+16.167 Y-11.141 Z-1.547 B12.356 C113.391 +G01 X+16.395 Y-11.043 Z-1.548 B12.36 C111.914 +G01 X+16.816 Y-10.886 B12.358 C109.255 +G01 X+16.861 Y-10.869 B12.36 C108.961 +G01 X+17.282 Y-10.736 B12.358 C106.352 +G01 X+17.335 Y-10.72 B12.36 C106.008 +G01 X+17.755 Y-10.611 B12.358 C103.449 +G01 X+17.817 Y-10.595 B12.36 C103.055 +G01 X+18.233 Y-10.509 B12.358 C100.546 +G01 X+18.304 Y-10.495 B12.36 C100.101 +G01 X+18.716 Y-10.432 B12.357 C97.642 +G01 X+18.795 Y-10.42 B12.36 C97.148 +G01 X+19.043 Y-10.395 Z-1.547 B12.356 C95.672 +G01 X+19.29 Y-10.371 Z-1.548 B12.36 C94.195 +G01 X+19.538 Y-10.359 Z-1.547 B12.357 C92.719 +G01 X+19.787 Y-10.347 Z-1.548 B12.361 C91.242 +G01 X+20.035 Y-10.348 Z-1.547 C89.766 +G01 X+20.284 Y-10.349 Z-1.548 C88.289 +G01 X+20.532 Y-10.362 Z-1.547 C86.812 +G01 X+20.78 Y-10.376 Z-1.548 C85.336 +G01 X+21.028 Y-10.402 Z-1.547 C83.859 +G01 X+21.275 Y-10.429 Z-1.548 C82.383 +G01 X+21.529 Y-10.47 Z-1.547 B12.356 C80.855 +G01 X+21.783 Y-10.511 Z-1.548 B12.36 C79.327 +G01 X+22.018 Y-10.561 Z-1.547 B12.357 C77.904 +G01 X+22.252 Y-10.611 Z-1.548 B12.361 C76.481 +G01 X+22.493 Y-10.675 Z-1.547 B12.357 C75.001 +G01 X+22.734 Y-10.74 Z-1.548 B12.36 C73.521 +G01 X+22.97 Y-10.816 Z-1.547 B12.357 C72.052 +G01 X+23.205 Y-10.892 Z-1.548 B12.361 C70.583 +G01 X+23.438 Y-10.981 Z-1.547 C69.109 +G01 X+23.67 Y-11.069 Z-1.548 C67.635 +G01 X+23.898 Y-11.17 Z-1.547 C66.16 +G01 X+24.125 Y-11.27 Z-1.548 C64.686 +G01 X+24.347 Y-11.382 Z-1.547 B12.36 C63.212 +G01 X+24.569 Y-11.494 Z-1.548 C61.737 +G01 X+24.785 Y-11.617 Z-1.547 B12.356 C60.263 +G01 X+25.001 Y-11.74 Z-1.548 B12.36 C58.788 +G01 X+25.21 Y-11.875 Z-1.547 B12.356 C57.314 +G01 X+25.419 Y-12.009 Z-1.548 B12.36 C55.84 +G01 X+25.78 Y-12.267 B12.359 C53.197 +G01 X+25.823 Y-12.298 B12.36 C52.891 +G01 X+26.164 Y-12.57 B12.359 C50.294 +G01 X+26.212 Y-12.608 B12.36 C49.942 +G01 X+26.532 Y-12.892 B12.359 C47.39 +G01 X+26.584 Y-12.938 B12.36 C46.993 +G01 X+26.762 Y-13.112 Z-1.547 B12.356 C45.519 +G01 X+26.939 Y-13.286 Z-1.548 B12.36 C44.045 +G01 X+27.108 Y-13.469 Z-1.547 B12.356 C42.57 +G01 X+27.276 Y-13.652 Z-1.548 B12.36 C41.096 +G01 X+27.434 Y-13.844 Z-1.547 B12.356 C39.622 +G01 X+27.593 Y-14.035 Z-1.548 B12.36 C38.147 +G01 X+27.741 Y-14.235 Z-1.547 C36.675 +G01 X+27.89 Y-14.434 Z-1.548 C35.203 +G01 X+28.028 Y-14.641 Z-1.547 B12.356 C33.727 +G01 X+28.166 Y-14.848 Z-1.548 B12.36 C32.25 +G01 X+28.293 Y-15.061 Z-1.547 B12.356 C30.773 +G01 X+28.42 Y-15.275 Z-1.548 B12.36 C29.297 +G01 X+28.53 Y-15.482 Z-1.547 B12.356 C27.905 +G01 X+28.639 Y-15.69 Z-1.548 B12.359 C26.514 +G01 X+28.652 Y-15.715 B12.36 C26.344 +G01 X+28.749 Y-15.924 Z-1.547 B12.356 C24.977 +G01 X+28.846 Y-16.133 Z-1.548 B12.358 C23.61 +G01 X+28.861 Y-16.166 B12.36 C23.39 +G01 X+28.946 Y-16.376 Z-1.547 B12.356 C22.049 +G01 X+29.031 Y-16.586 Z-1.548 B12.358 C20.707 +G01 X+29.047 Y-16.627 B12.36 C20.437 +G01 X+29.192 Y-17.048 B12.358 C17.804 +G01 X+29.209 Y-17.097 B12.36 C17.484 +G01 X+29.329 Y-17.517 B12.358 C14.9 +G01 X+29.346 Y-17.575 B12.36 C14.531 +G01 X+29.443 Y-17.993 B12.358 C11.997 +G01 X+29.458 Y-18.059 B12.36 C11.578 +G01 X+29.532 Y-18.474 B12.357 C9.094 +G01 X+29.546 Y-18.549 B12.36 C8.625 +G01 X+29.597 Y-18.959 B12.357 C6.191 +G01 X+29.608 Y-19.042 B12.36 C5.672 +G01 X+29.626 Y-19.29 Z-1.547 B12.356 C4.195 +G01 X+29.644 Y-19.538 Z-1.548 B12.36 C2.719 +G01 X+29.65 Y-19.787 Z-1.547 B12.357 C1.242 +G01 X+29.655 Y-20.035 Z-1.548 B12.361 C359.766 +G01 X+29.648 Y-20.284 Z-1.547 C358.289 +G01 X+29.641 Y-20.532 Z-1.548 C356.812 +G01 X+29.621 Y-20.78 Z-1.547 C355.336 +G01 X+29.601 Y-21.028 Z-1.548 C353.859 +G01 X+29.568 Y-21.274 Z-1.547 C352.383 +G01 X+29.535 Y-21.521 Z-1.548 C350.906 +G01 X+29.488 Y-21.772 Z-1.547 B12.356 C349.391 +G01 X+29.441 Y-22.023 Z-1.548 B12.36 C347.876 +G01 X+29.384 Y-22.258 Z-1.547 B12.357 C346.441 +G01 X+29.328 Y-22.493 Z-1.548 B12.361 C345.006 +G01 X+29.258 Y-22.731 Z-1.547 C343.532 +G01 X+29.187 Y-22.97 Z-1.548 C342.058 +G01 X+29.105 Y-23.204 Z-1.547 C340.583 +G01 X+29.022 Y-23.439 Z-1.548 C339.109 +G01 X+28.928 Y-23.669 Z-1.547 C337.635 +G01 X+28.833 Y-23.899 Z-1.548 C336.16 +G01 X+28.727 Y-24.124 Z-1.547 C334.686 +G01 X+28.621 Y-24.348 Z-1.548 B12.36 C333.212 +G01 X+28.503 Y-24.567 Z-1.547 B12.356 C331.737 +G01 X+28.386 Y-24.786 Z-1.548 B12.36 C330.263 +G01 X+28.257 Y-24.999 Z-1.547 B12.356 C328.789 +G01 X+28.128 Y-25.212 Z-1.548 B12.36 C327.314 +G01 X+27.877 Y-25.582 B12.359 C324.649 +G01 X+27.849 Y-25.623 B12.36 C324.365 +G01 X+27.584 Y-25.974 B12.359 C321.745 +G01 X+27.549 Y-26.02 B12.36 C321.416 +G01 X+27.272 Y-26.35 B12.359 C318.842 +G01 X+27.229 Y-26.4 B12.36 C318.468 +G01 X+26.94 Y-26.71 B12.358 C315.938 +G01 X+26.89 Y-26.764 B12.36 C315.519 +G01 X+26.592 Y-27.053 B12.358 C313.035 +G01 X+26.533 Y-27.11 B12.36 C312.57 +G01 X+26.345 Y-27.273 Z-1.547 B12.356 C311.096 +G01 X+26.158 Y-27.437 Z-1.548 B12.36 C309.622 +G01 X+25.963 Y-27.59 Z-1.547 B12.356 C308.148 +G01 X+25.767 Y-27.744 Z-1.548 B12.36 C306.675 +G01 X+25.564 Y-27.887 Z-1.547 B12.356 C305.201 +G01 X+25.361 Y-28.03 Z-1.548 B12.36 C303.726 +G01 X+25.151 Y-28.163 Z-1.547 B12.356 C302.25 +G01 X+24.94 Y-28.296 Z-1.548 B12.36 C300.773 +G01 X+24.724 Y-28.418 Z-1.547 C299.297 +G01 X+24.507 Y-28.539 Z-1.548 C297.82 +G01 X+24.177 Y-28.702 B12.357 C295.614 +G01 X+24.061 Y-28.76 B12.36 C294.867 +G01 X+23.833 Y-28.859 Z-1.547 B12.356 C293.391 +G01 X+23.605 Y-28.957 Z-1.548 B12.36 C291.914 +G01 X+23.184 Y-29.114 B12.358 C289.255 +G01 X+23.139 Y-29.131 B12.36 C288.961 +G01 X+22.718 Y-29.264 B12.358 C286.352 +G01 X+22.665 Y-29.28 B12.36 C286.008 +G01 X+22.245 Y-29.389 B12.358 C283.449 +G01 X+22.183 Y-29.405 B12.36 C283.055 +G01 X+21.767 Y-29.491 B12.358 C280.546 +G01 X+21.696 Y-29.505 B12.36 C280.101 +G01 X+21.284 Y-29.568 B12.357 C277.642 +G01 X+21.205 Y-29.58 B12.36 C277.148 +G01 X+20.957 Y-29.605 Z-1.547 B12.356 C275.672 +G01 X+20.71 Y-29.629 Z-1.548 B12.36 C274.195 +G01 X+20.462 Y-29.641 Z-1.547 B12.357 C272.719 +G01 X+20.213 Y-29.653 Z-1.548 B12.361 C271.242 +G01 X+19.965 Y-29.652 Z-1.547 C269.766 +G01 X+19.716 Y-29.651 Z-1.548 C268.289 +G01 X+19.468 Y-29.638 Z-1.547 C266.812 +G01 X+19.22 Y-29.624 Z-1.548 C265.336 +G01 X+18.972 Y-29.597 Z-1.547 C263.859 +G01 X+18.725 Y-29.571 Z-1.548 C262.383 +G01 X+18.471 Y-29.53 Z-1.547 B12.356 C260.855 +G01 X+18.217 Y-29.489 Z-1.548 B12.36 C259.327 +G01 X+17.982 Y-29.439 Z-1.547 B12.357 C257.904 +G01 X+17.748 Y-29.389 Z-1.548 B12.361 C256.481 +G01 X+17.507 Y-29.325 Z-1.547 B12.357 C255.001 +G01 X+17.266 Y-29.26 Z-1.548 B12.36 C253.521 +G01 X+17.03 Y-29.184 Z-1.547 B12.357 C252.052 +G01 X+16.795 Y-29.108 Z-1.548 B12.361 C250.583 +G01 X+16.562 Y-29.019 Z-1.547 C249.109 +G01 X+16.33 Y-28.931 Z-1.548 C247.635 +G01 X+16.103 Y-28.83 Z-1.547 C246.162 +G01 X+15.876 Y-28.73 Z-1.548 B12.36 C244.689 +G01 X+15.618 Y-28.6 Z-1.547 B12.356 C243.021 +G01 X+15.361 Y-28.47 Z-1.548 B12.362 C241.352 +G01 X+14.987 Y-28.253 B12.361 C238.713 +G01 X+14.619 Y-28.016 B12.359 C236.101 +G01 X+14.577 Y-27.989 B12.36 C235.818 +G01 X+14.22 Y-27.733 B12.359 C233.197 +G01 X+14.177 Y-27.702 B12.36 C232.891 +G01 X+13.836 Y-27.43 B12.359 C230.294 +G01 X+13.788 Y-27.391 B12.36 C229.942 +G01 X+13.602 Y-27.227 Z-1.547 B12.356 C228.468 +G01 X+13.416 Y-27.062 Z-1.548 B12.36 C226.993 +G01 X+13.189 Y-26.839 Z-1.547 B12.356 C225.109 +G01 X+13.188 Y-26.706 Z-1.527 B12.235 C224.526 +G01 X+13.13 Y-26.649 B12.237 C224.052 +G01 X+12.963 Y-26.468 B12.233 C222.578 +G01 X+12.797 Y-26.286 B12.237 C221.104 +G01 X+12.64 Y-26.097 B12.233 C219.63 +G01 X+12.483 Y-25.907 B12.236 C218.156 +G01 X+12.335 Y-25.71 C216.684 +G01 X+12.189 Y-25.512 C215.213 +G01 X+12.052 Y-25.308 B12.232 C213.736 +G01 X+11.915 Y-25.103 B12.236 C212.26 +G01 X+11.789 Y-24.891 B12.233 C210.784 +G01 X+11.663 Y-24.68 B12.237 C209.308 +G01 X+11.548 Y-24.462 B12.233 C207.831 +G01 X+11.433 Y-24.245 B12.237 C206.355 +G01 X+11.337 Y-24.037 B12.233 C204.983 +G01 X+11.24 Y-23.829 B12.235 C203.61 +G01 X+11.226 Y-23.798 B12.237 C203.402 +G01 X+11.058 Y-23.38 B12.235 C200.707 +G01 X+11.042 Y-23.341 B12.237 C200.45 +G01 X+10.898 Y-22.923 B12.235 C197.804 +G01 X+10.882 Y-22.876 B12.237 C197.497 +G01 X+10.762 Y-22.458 B12.235 C194.901 +G01 X+10.746 Y-22.402 B12.237 C194.544 +G01 X+10.65 Y-21.987 B12.234 C191.997 +G01 X+10.635 Y-21.923 B12.237 C191.592 +G01 X+10.561 Y-21.511 B12.234 C189.094 +G01 X+10.548 Y-21.438 B12.237 C188.639 +G01 X+10.497 Y-21.031 B12.234 C186.191 +G01 X+10.487 Y-20.95 B12.237 C185.687 +G01 X+10.468 Y-20.704 B12.233 C184.21 +G01 X+10.45 Y-20.459 B12.237 C182.734 +G01 X+10.445 Y-20.213 B12.233 C181.258 +G01 X+10.439 Y-19.967 B12.237 C179.781 +G01 X+10.446 Y-19.72 C178.305 +G01 X+10.454 Y-19.474 C176.829 +G01 X+10.473 Y-19.229 C175.352 +G01 X+10.493 Y-18.984 C173.876 +G01 X+10.526 Y-18.74 C172.4 +G01 X+10.558 Y-18.496 C170.923 +G01 X+10.603 Y-18.254 C169.447 +G01 X+10.648 Y-18.012 C167.971 +G01 X+10.706 Y-17.772 C166.495 +G01 X+10.763 Y-17.533 C165.018 +G01 X+10.833 Y-17.297 B12.233 C163.542 +G01 X+10.902 Y-17.061 B12.237 C162.065 +G01 X+10.987 Y-16.82 B12.233 C160.538 +G01 X+11.073 Y-16.579 B12.237 C159.01 +G01 X+11.163 Y-16.36 B12.233 C157.587 +G01 X+11.253 Y-16.141 B12.237 C156.165 +G01 X+11.358 Y-15.917 B12.233 C154.685 +G01 X+11.464 Y-15.694 B12.237 C153.205 +G01 X+11.58 Y-15.478 C151.736 +G01 X+11.696 Y-15.262 C150.268 +G01 X+11.823 Y-15.051 C148.794 +G01 X+11.951 Y-14.841 C147.32 +G01 X+12.089 Y-14.637 C145.845 +G01 X+12.227 Y-14.433 C144.371 +G01 X+12.375 Y-14.237 B12.233 C142.897 +G01 X+12.524 Y-14.04 B12.237 C141.423 +G01 X+12.682 Y-13.852 B12.233 C139.949 +G01 X+12.841 Y-13.663 B12.237 C138.475 +G01 X+13.146 Y-13.336 B12.236 C135.783 +G01 X+13.176 Y-13.303 B12.237 C135.526 +G01 X+13.353 Y-13.132 B12.233 C134.052 +G01 X+13.53 Y-12.961 B12.237 C132.578 +G01 X+13.716 Y-12.799 B12.233 C131.104 +G01 X+13.901 Y-12.637 B12.236 C129.63 +G01 X+14.095 Y-12.484 B12.232 C128.152 +G01 X+14.29 Y-12.332 B12.236 C126.675 +G01 X+14.49 Y-12.19 B12.232 C125.206 +G01 X+14.691 Y-12.049 B12.236 C123.736 +G01 X+14.899 Y-11.918 B12.233 C122.26 +G01 X+15.107 Y-11.786 B12.236 C120.784 +G01 X+15.321 Y-11.666 B12.233 C119.308 +G01 X+15.536 Y-11.545 B12.237 C117.831 +G01 X+15.743 Y-11.443 B12.233 C116.447 +G01 X+15.95 Y-11.34 B12.235 C115.062 +G01 X+15.977 Y-11.327 B12.237 C114.879 +G01 X+16.186 Y-11.236 B12.233 C113.519 +G01 X+16.394 Y-11.146 B12.235 C112.159 +G01 X+16.429 Y-11.131 B12.237 C111.926 +G01 X+16.847 Y-10.975 B12.235 C109.256 +G01 X+16.89 Y-10.959 B12.237 C108.973 +G01 X+17.309 Y-10.827 B12.235 C106.352 +G01 X+17.36 Y-10.811 B12.237 C106.021 +G01 X+17.777 Y-10.703 B12.234 C103.449 +G01 X+17.837 Y-10.687 B12.237 C103.068 +G01 X+18.251 Y-10.602 B12.234 C100.546 +G01 X+18.319 Y-10.588 B12.237 C100.115 +G01 X+18.729 Y-10.526 B12.234 C97.642 +G01 X+18.806 Y-10.514 B12.237 C97.163 +G01 X+19.21 Y-10.474 B12.234 C94.739 +G01 X+19.295 Y-10.465 B12.237 C94.21 +G01 X+19.541 Y-10.453 B12.233 C92.734 +G01 X+19.787 Y-10.442 B12.237 C91.258 +G01 X+20.033 B12.233 C89.781 +G01 X+20.28 Y-10.443 B12.237 C88.305 +G01 X+20.525 Y-10.457 C86.829 +G01 X+20.771 Y-10.47 C85.352 +G01 X+21.016 Y-10.496 C83.876 +G01 X+21.261 Y-10.523 C82.4 +G01 X+21.504 Y-10.561 C80.923 +G01 X+21.747 Y-10.6 C79.447 +G01 X+21.988 Y-10.651 C77.971 +G01 X+22.228 Y-10.703 C76.495 +G01 X+22.466 Y-10.766 C75.018 +G01 X+22.704 Y-10.83 C73.542 +G01 X+22.949 Y-10.909 B12.233 C72.002 +G01 X+23.193 Y-10.989 B12.236 C70.462 +G01 X+23.413 Y-11.072 B12.233 C69.05 +G01 X+23.633 Y-11.156 B12.237 C67.639 +G01 X+23.858 Y-11.256 C66.165 +G01 X+24.083 Y-11.355 C64.69 +G01 X+24.303 Y-11.466 C63.216 +G01 X+24.523 Y-11.577 C61.742 +G01 X+24.737 Y-11.699 C60.268 +G01 X+24.95 Y-11.821 C58.794 +G01 X+25.158 Y-11.953 C57.32 +G01 X+25.365 Y-12.086 C55.846 +G01 X+25.565 Y-12.23 C54.371 +G01 X+25.765 Y-12.373 C52.897 +G01 X+25.958 Y-12.526 B12.233 C51.423 +G01 X+26.15 Y-12.68 B12.237 C49.949 +G01 X+26.335 Y-12.843 B12.233 C48.475 +G01 X+26.519 Y-13.006 B12.237 C47.001 +G01 X+26.835 Y-13.317 B12.236 C44.332 +G01 X+26.885 Y-13.367 C43.933 +G01 X+27.044 Y-13.54 B12.232 C42.518 +G01 X+27.203 Y-13.714 B12.236 C41.104 +G01 X+27.36 Y-13.903 B12.233 C39.63 +G01 X+27.517 Y-14.093 B12.236 C38.156 +G01 X+27.665 Y-14.29 C36.684 +G01 X+27.811 Y-14.488 C35.213 +G01 X+27.948 Y-14.692 B12.232 C33.736 +G01 X+28.085 Y-14.897 B12.236 C32.26 +G01 X+28.211 Y-15.108 B12.233 C30.784 +G01 X+28.337 Y-15.32 B12.237 C29.308 +G01 X+28.452 Y-15.538 B12.233 C27.831 +G01 X+28.567 Y-15.755 B12.237 C26.355 +G01 X+28.663 Y-15.963 B12.233 C24.983 +G01 X+28.76 Y-16.171 B12.235 C23.61 +G01 X+28.774 Y-16.202 B12.237 C23.402 +G01 X+28.942 Y-16.62 B12.235 C20.707 +G01 X+28.958 Y-16.659 B12.237 C20.45 +G01 X+29.102 Y-17.077 B12.235 C17.804 +G01 X+29.118 Y-17.124 B12.237 C17.497 +G01 X+29.238 Y-17.542 B12.235 C14.901 +G01 X+29.254 Y-17.597 B12.237 C14.544 +G01 X+29.35 Y-18.013 B12.234 C11.997 +G01 X+29.365 Y-18.077 B12.237 C11.592 +G01 X+29.439 Y-18.489 B12.234 C9.094 +G01 X+29.452 Y-18.562 B12.237 C8.639 +G01 X+29.503 Y-18.969 B12.234 C6.191 +G01 X+29.513 Y-19.05 B12.237 C5.687 +G01 X+29.532 Y-19.296 B12.233 C4.21 +G01 X+29.55 Y-19.541 B12.237 C2.734 +G01 X+29.555 Y-19.787 B12.233 C1.258 +G01 X+29.561 Y-20.033 B12.237 C359.781 +G01 X+29.554 Y-20.279 C358.305 +G01 X+29.546 Y-20.525 C356.829 +G01 X+29.527 Y-20.771 C355.352 +G01 X+29.507 Y-21.016 C353.876 +G01 X+29.474 Y-21.26 C352.4 +G01 X+29.442 Y-21.504 C350.923 +G01 X+29.397 Y-21.746 C349.447 +G01 X+29.352 Y-21.988 C347.971 +G01 X+29.294 Y-22.228 C346.495 +G01 X+29.237 Y-22.467 C345.018 +G01 X+29.167 Y-22.703 B12.233 C343.542 +G01 X+29.098 Y-22.939 B12.237 C342.065 +G01 X+29.013 Y-23.18 B12.233 C340.538 +G01 X+28.927 Y-23.42 B12.237 C339.01 +G01 X+28.837 Y-23.64 B12.233 C337.587 +G01 X+28.747 Y-23.859 B12.237 C336.165 +G01 X+28.642 Y-24.083 B12.233 C334.685 +G01 X+28.536 Y-24.306 B12.237 C333.205 +G01 X+28.42 Y-24.522 C331.736 +G01 X+28.304 Y-24.738 C330.268 +G01 X+28.177 Y-24.949 C328.794 +G01 X+28.049 Y-25.159 C327.32 +G01 X+27.911 Y-25.363 C325.845 +G01 X+27.773 Y-25.567 C324.371 +G01 X+27.625 Y-25.763 B12.233 C322.897 +G01 X+27.476 Y-25.959 B12.237 C321.423 +G01 X+27.318 Y-26.148 B12.233 C319.949 +G01 X+27.159 Y-26.336 B12.237 C318.475 +G01 X+26.854 Y-26.663 B12.236 C315.783 +G01 X+26.824 Y-26.697 B12.237 C315.526 +G01 X+26.647 Y-26.868 B12.233 C314.052 +G01 X+26.47 Y-27.039 B12.237 C312.578 +G01 X+26.284 Y-27.201 B12.233 C311.104 +G01 X+26.099 Y-27.363 B12.236 C309.63 +G01 X+25.905 Y-27.515 B12.232 C308.152 +G01 X+25.71 Y-27.668 B12.236 C306.675 +G01 X+25.51 Y-27.809 B12.232 C305.206 +G01 X+25.309 Y-27.951 B12.236 C303.736 +G01 X+25.101 Y-28.082 B12.233 C302.26 +G01 X+24.893 Y-28.214 B12.236 C300.784 +G01 X+24.679 Y-28.334 B12.233 C299.308 +G01 X+24.464 Y-28.455 B12.237 C297.831 +G01 X+24.257 Y-28.557 B12.233 C296.447 +G01 X+24.05 Y-28.66 B12.235 C295.062 +G01 X+24.023 Y-28.673 B12.237 C294.879 +G01 X+23.814 Y-28.763 B12.233 C293.519 +G01 X+23.606 Y-28.854 B12.235 C292.159 +G01 X+23.571 Y-28.869 B12.237 C291.926 +G01 X+23.153 Y-29.025 B12.235 C289.256 +G01 X+23.11 Y-29.041 B12.237 C288.973 +G01 X+22.691 Y-29.173 B12.235 C286.352 +G01 X+22.64 Y-29.189 B12.237 C286.021 +G01 X+22.223 Y-29.297 B12.234 C283.449 +G01 X+22.163 Y-29.313 B12.237 C283.068 +G01 X+21.75 Y-29.398 B12.234 C280.546 +G01 X+21.681 Y-29.412 B12.237 C280.115 +G01 X+21.271 Y-29.474 B12.234 C277.642 +G01 X+21.194 Y-29.486 B12.237 C277.163 +G01 X+20.79 Y-29.526 B12.234 C274.739 +G01 X+20.705 Y-29.535 B12.237 C274.21 +G01 X+20.459 Y-29.547 B12.233 C272.734 +G01 X+20.213 Y-29.558 B12.237 C271.258 +G01 X+19.967 B12.233 C269.781 +G01 X+19.72 Y-29.557 B12.237 C268.305 +G01 X+19.475 Y-29.543 C266.829 +G01 X+19.229 Y-29.529 C265.352 +G01 X+18.984 Y-29.503 C263.876 +G01 X+18.739 Y-29.477 C262.4 +G01 X+18.496 Y-29.439 C260.923 +G01 X+18.253 Y-29.4 C259.447 +G01 X+18.012 Y-29.349 C257.971 +G01 X+17.772 Y-29.297 C256.495 +G01 X+17.534 Y-29.234 C255.018 +G01 X+17.296 Y-29.17 C253.542 +G01 X+17.051 Y-29.091 B12.233 C252.002 +G01 X+16.807 Y-29.011 B12.236 C250.462 +G01 X+16.587 Y-28.927 B12.233 C249.05 +G01 X+16.367 Y-28.844 B12.237 C247.639 +G01 X+16.142 Y-28.744 C246.166 +G01 X+15.917 Y-28.645 C244.694 +G01 X+15.662 Y-28.516 B12.233 C243.023 +G01 X+15.406 Y-28.387 Z-1.528 B12.239 C241.352 +G01 X+15.038 Y-28.173 B12.238 C238.718 +G01 X+14.835 Y-28.042 Z-1.527 B12.234 C237.269 +G01 X+14.631 Y-27.911 B12.237 C235.821 +G01 X+14.433 Y-27.769 B12.233 C234.36 +G01 X+14.235 Y-27.627 B12.237 C232.898 +G01 X+14.042 Y-27.474 B12.233 C231.424 +G01 X+13.85 Y-27.32 B12.237 C229.949 +G01 X+13.665 Y-27.157 B12.233 C228.475 +G01 X+13.481 Y-26.994 B12.237 C227.001 +G01 X+13.256 Y-26.772 B12.233 C225.112 +G01 X+13.255 Y-26.639 Z-1.506 B12.112 C224.529 +G01 X+13.183 Y-26.567 Z-1.507 C223.933 +G01 X+13.026 Y-26.396 Z-1.506 B12.109 C222.522 +G01 X+12.869 Y-26.225 Z-1.507 B12.113 C221.112 +G01 X+12.713 Y-26.038 Z-1.506 B12.109 C219.638 +G01 X+12.558 Y-25.85 Z-1.507 B12.113 C218.164 +G01 X+12.412 Y-25.654 Z-1.506 B12.109 C216.693 +G01 X+12.267 Y-25.459 Z-1.507 B12.113 C215.222 +G01 X+12.131 Y-25.256 Z-1.506 B12.109 C213.746 +G01 X+11.996 Y-25.054 Z-1.507 B12.113 C212.27 +G01 X+11.871 Y-24.844 Z-1.506 B12.109 C210.794 +G01 X+11.746 Y-24.635 Z-1.507 B12.113 C209.318 +G01 X+11.633 Y-24.419 Z-1.506 B12.109 C207.842 +G01 X+11.519 Y-24.204 Z-1.507 B12.113 C206.366 +G01 X+11.423 Y-23.997 Z-1.506 B12.109 C204.988 +G01 X+11.327 Y-23.791 Z-1.507 B12.112 C203.61 +G01 X+11.314 Y-23.762 B12.113 C203.414 +G01 X+11.146 Y-23.347 B12.112 C200.707 +G01 X+11.132 Y-23.31 B12.114 C200.462 +G01 X+11.052 Y-23.079 Z-1.506 B12.11 C198.986 +G01 X+10.973 Y-22.849 Z-1.507 B12.114 C197.51 +G01 X+10.905 Y-22.614 Z-1.506 B12.11 C196.034 +G01 X+10.838 Y-22.38 Z-1.507 B12.114 C194.558 +G01 X+10.783 Y-22.143 Z-1.506 B12.11 C193.081 +G01 X+10.728 Y-21.905 Z-1.507 B12.114 C191.605 +G01 X+10.685 Y-21.665 Z-1.506 B12.11 C190.129 +G01 X+10.642 Y-21.426 Z-1.507 B12.114 C188.653 +G01 X+10.611 Y-21.184 Z-1.506 C187.177 +G01 X+10.581 Y-20.942 Z-1.507 C185.701 +G01 X+10.563 Y-20.699 Z-1.506 C184.225 +G01 X+10.545 Y-20.456 Z-1.507 C182.749 +G01 X+10.539 Y-20.212 Z-1.506 C181.273 +G01 X+10.534 Y-19.968 Z-1.507 C179.797 +G01 X+10.541 Y-19.725 Z-1.506 C178.321 +G01 X+10.548 Y-19.481 Z-1.507 C176.845 +G01 X+10.568 Y-19.238 Z-1.506 C175.369 +G01 X+10.588 Y-18.995 Z-1.507 C173.892 +G01 X+10.62 Y-18.754 Z-1.506 C172.417 +G01 X+10.652 Y-18.512 Z-1.507 C170.94 +G01 X+10.696 Y-18.272 Z-1.506 C169.464 +G01 X+10.741 Y-18.033 Z-1.507 C167.988 +G01 X+10.797 Y-17.796 Z-1.506 C166.512 +G01 X+10.854 Y-17.559 Z-1.507 C165.036 +G01 X+10.923 Y-17.325 Z-1.506 C163.56 +G01 X+10.992 Y-17.091 Z-1.507 C162.084 +G01 X+11.073 Y-16.861 Z-1.506 C160.608 +G01 X+11.154 Y-16.631 Z-1.507 C159.132 +G01 X+11.246 Y-16.406 Z-1.506 C157.656 +G01 X+11.339 Y-16.18 Z-1.507 C156.18 +G01 X+11.443 Y-15.96 Z-1.506 C154.704 +G01 X+11.547 Y-15.74 Z-1.507 C153.228 +G01 X+11.662 Y-15.525 Z-1.506 B12.11 C151.752 +G01 X+11.778 Y-15.31 Z-1.507 B12.114 C150.275 +G01 X+11.904 Y-15.102 Z-1.506 B12.11 C148.8 +G01 X+12.03 Y-14.893 Z-1.507 B12.114 C147.325 +G01 X+12.166 Y-14.691 Z-1.506 B12.11 C145.851 +G01 X+12.303 Y-14.49 Z-1.507 B12.114 C144.377 +G01 X+12.45 Y-14.295 Z-1.506 B12.11 C142.903 +G01 X+12.597 Y-14.101 Z-1.507 B12.114 C141.429 +G01 X+12.754 Y-13.914 Z-1.506 B12.11 C139.956 +G01 X+12.911 Y-13.727 Z-1.507 B12.114 C138.482 +G01 X+13.077 Y-13.549 Z-1.506 B12.11 C137.008 +G01 X+13.243 Y-13.371 Z-1.507 B12.113 C135.534 +G01 X+13.425 Y-13.195 Z-1.506 B12.109 C134.007 +G01 X+13.608 Y-13.019 Z-1.507 B12.112 C132.481 +G01 X+13.784 Y-12.865 Z-1.506 B12.109 C131.06 +G01 X+13.96 Y-12.711 Z-1.507 B12.113 C129.638 +G01 X+14.152 Y-12.56 Z-1.506 B12.109 C128.164 +G01 X+14.344 Y-12.41 Z-1.507 B12.113 C126.69 +G01 X+14.543 Y-12.269 Z-1.506 C125.218 +G01 X+14.742 Y-12.129 Z-1.507 C123.747 +G01 X+14.948 Y-11.999 Z-1.506 B12.109 C122.27 +G01 X+15.154 Y-11.869 Z-1.507 B12.113 C120.794 +G01 X+15.367 Y-11.749 Z-1.506 B12.109 C119.318 +G01 X+15.579 Y-11.63 Z-1.507 B12.113 C117.842 +G01 X+15.785 Y-11.528 Z-1.506 B12.109 C116.452 +G01 X+15.991 Y-11.426 Z-1.507 B12.112 C115.062 +G01 X+16.016 Y-11.413 B12.113 C114.89 +G01 X+16.223 Y-11.324 Z-1.506 B12.109 C113.524 +G01 X+16.43 Y-11.234 Z-1.507 B12.112 C112.159 +G01 X+16.463 Y-11.22 B12.113 C111.938 +G01 X+16.879 Y-11.065 B12.112 C109.255 +G01 X+16.92 Y-11.049 B12.114 C108.986 +G01 X+17.152 Y-10.976 Z-1.506 B12.11 C107.51 +G01 X+17.385 Y-10.902 Z-1.507 B12.114 C106.034 +G01 X+17.621 Y-10.841 Z-1.506 B12.11 C104.558 +G01 X+17.856 Y-10.78 Z-1.507 B12.114 C103.081 +G01 X+18.095 Y-10.731 Z-1.506 B12.11 C101.605 +G01 X+18.334 Y-10.682 Z-1.507 B12.114 C100.129 +G01 X+18.575 Y-10.645 Z-1.506 B12.11 C98.653 +G01 X+18.816 Y-10.608 Z-1.507 B12.114 C97.177 +G01 X+19.058 Y-10.584 Z-1.506 C95.701 +G01 X+19.301 Y-10.56 Z-1.507 C94.225 +G01 X+19.544 Y-10.548 Z-1.506 C92.749 +G01 X+19.788 Y-10.536 Z-1.507 C91.273 +G01 X+20.031 Y-10.537 Z-1.506 C89.797 +G01 X+20.275 Y-10.538 Z-1.507 C88.321 +G01 X+20.519 Y-10.551 Z-1.506 C86.845 +G01 X+20.762 Y-10.565 Z-1.507 C85.369 +G01 X+21.004 Y-10.59 Z-1.506 C83.892 +G01 X+21.247 Y-10.616 Z-1.507 C82.417 +G01 X+21.487 Y-10.655 Z-1.506 C80.94 +G01 X+21.728 Y-10.693 Z-1.507 C79.464 +G01 X+21.966 Y-10.744 Z-1.506 C77.988 +G01 X+22.205 Y-10.794 Z-1.507 C76.512 +G01 X+22.44 Y-10.857 Z-1.506 C75.036 +G01 X+22.676 Y-10.92 Z-1.507 C73.56 +G01 X+22.908 Y-10.995 Z-1.506 C72.084 +G01 X+23.14 Y-11.07 Z-1.507 C70.608 +G01 X+23.368 Y-11.156 Z-1.506 C69.132 +G01 X+23.595 Y-11.243 Z-1.507 C67.656 +G01 X+23.818 Y-11.342 Z-1.506 C66.18 +G01 X+24.041 Y-11.44 Z-1.507 C64.704 +G01 X+24.259 Y-11.55 Z-1.506 B12.11 C63.228 +G01 X+24.477 Y-11.659 Z-1.507 B12.114 C61.752 +G01 X+24.688 Y-11.78 Z-1.506 B12.11 C60.275 +G01 X+24.9 Y-11.901 Z-1.507 B12.114 C58.799 +G01 X+25.105 Y-12.032 Z-1.506 B12.11 C57.325 +G01 X+25.31 Y-12.164 Z-1.507 B12.114 C55.851 +G01 X+25.509 Y-12.306 Z-1.506 B12.11 C54.377 +G01 X+25.707 Y-12.448 Z-1.507 B12.114 C52.903 +G01 X+25.897 Y-12.599 Z-1.506 B12.11 C51.43 +G01 X+26.088 Y-12.751 Z-1.507 B12.114 C49.956 +G01 X+26.271 Y-12.913 Z-1.506 B12.11 C48.482 +G01 X+26.453 Y-13.074 Z-1.507 B12.113 C47.008 +G01 X+26.627 Y-13.245 Z-1.506 B12.11 C45.534 +G01 X+26.801 Y-13.416 Z-1.507 B12.113 C44.06 +G01 X+26.966 Y-13.595 Z-1.506 B12.109 C42.586 +G01 X+27.131 Y-13.775 Z-1.507 B12.113 C41.112 +G01 X+27.287 Y-13.962 Z-1.506 B12.109 C39.638 +G01 X+27.442 Y-14.15 Z-1.507 B12.113 C38.164 +G01 X+27.588 Y-14.345 Z-1.506 B12.109 C36.693 +G01 X+27.733 Y-14.541 Z-1.507 B12.113 C35.222 +G01 X+27.869 Y-14.743 Z-1.506 B12.109 C33.746 +G01 X+28.004 Y-14.946 Z-1.507 B12.113 C32.27 +G01 X+28.129 Y-15.156 Z-1.506 B12.109 C30.794 +G01 X+28.254 Y-15.365 Z-1.507 B12.113 C29.318 +G01 X+28.367 Y-15.58 Z-1.506 B12.109 C27.842 +G01 X+28.481 Y-15.796 Z-1.507 B12.113 C26.366 +G01 X+28.577 Y-16.002 Z-1.506 B12.109 C24.988 +G01 X+28.673 Y-16.209 Z-1.507 B12.112 C23.61 +G01 X+28.686 Y-16.238 B12.113 C23.414 +G01 X+28.854 Y-16.653 B12.112 C20.707 +G01 X+28.868 Y-16.69 B12.114 C20.462 +G01 X+28.948 Y-16.921 Z-1.506 B12.11 C18.986 +G01 X+29.027 Y-17.151 Z-1.507 B12.114 C17.51 +G01 X+29.095 Y-17.385 Z-1.506 B12.11 C16.034 +G01 X+29.162 Y-17.62 Z-1.507 B12.114 C14.558 +G01 X+29.217 Y-17.857 Z-1.506 B12.11 C13.081 +G01 X+29.272 Y-18.095 Z-1.507 B12.114 C11.605 +G01 X+29.315 Y-18.334 Z-1.506 B12.11 C10.129 +G01 X+29.358 Y-18.574 Z-1.507 B12.114 C8.653 +G01 X+29.389 Y-18.816 Z-1.506 C7.177 +G01 X+29.419 Y-19.058 Z-1.507 C5.701 +G01 X+29.437 Y-19.301 Z-1.506 C4.225 +G01 X+29.455 Y-19.544 Z-1.507 C2.749 +G01 X+29.461 Y-19.788 Z-1.506 C1.273 +G01 X+29.466 Y-20.031 Z-1.507 C359.797 +G01 X+29.459 Y-20.275 Z-1.506 C358.321 +G01 X+29.452 Y-20.519 Z-1.507 C356.845 +G01 X+29.432 Y-20.762 Z-1.506 C355.369 +G01 X+29.412 Y-21.005 Z-1.507 C353.892 +G01 X+29.381 Y-21.246 Z-1.506 C352.417 +G01 X+29.348 Y-21.488 Z-1.507 C350.94 +G01 X+29.304 Y-21.727 Z-1.506 C349.464 +G01 X+29.259 Y-21.967 Z-1.507 C347.988 +G01 X+29.203 Y-22.204 Z-1.506 C346.512 +G01 X+29.146 Y-22.441 Z-1.507 C345.036 +G01 X+29.077 Y-22.675 Z-1.506 C343.56 +G01 X+29.008 Y-22.909 Z-1.507 C342.084 +G01 X+28.927 Y-23.139 Z-1.506 C340.608 +G01 X+28.846 Y-23.369 Z-1.507 C339.132 +G01 X+28.754 Y-23.594 Z-1.506 C337.656 +G01 X+28.661 Y-23.819 Z-1.507 C336.18 +G01 X+28.557 Y-24.04 Z-1.506 C334.704 +G01 X+28.453 Y-24.26 Z-1.507 C333.228 +G01 X+28.338 Y-24.475 Z-1.506 B12.11 C331.752 +G01 X+28.222 Y-24.69 Z-1.507 B12.114 C330.275 +G01 X+28.096 Y-24.898 Z-1.506 B12.11 C328.8 +G01 X+27.97 Y-25.107 Z-1.507 B12.114 C327.325 +G01 X+27.834 Y-25.309 Z-1.506 B12.11 C325.851 +G01 X+27.697 Y-25.51 Z-1.507 B12.114 C324.377 +G01 X+27.55 Y-25.705 Z-1.506 B12.11 C322.903 +G01 X+27.403 Y-25.899 Z-1.507 B12.114 C321.429 +G01 X+27.246 Y-26.086 Z-1.506 B12.11 C319.956 +G01 X+27.089 Y-26.272 Z-1.507 B12.114 C318.482 +G01 X+26.923 Y-26.451 Z-1.506 B12.11 C317.008 +G01 X+26.757 Y-26.629 Z-1.507 B12.113 C315.534 +G01 X+26.575 Y-26.805 Z-1.506 B12.109 C314.007 +G01 X+26.392 Y-26.981 Z-1.507 B12.112 C312.481 +G01 X+26.216 Y-27.135 Z-1.506 B12.109 C311.06 +G01 X+26.04 Y-27.289 Z-1.507 B12.113 C309.638 +G01 X+25.848 Y-27.439 Z-1.506 B12.109 C308.164 +G01 X+25.656 Y-27.59 Z-1.507 B12.113 C306.69 +G01 X+25.457 Y-27.731 Z-1.506 C305.218 +G01 X+25.258 Y-27.871 Z-1.507 C303.746 +G01 X+25.052 Y-28.001 Z-1.506 B12.109 C302.27 +G01 X+24.846 Y-28.131 Z-1.507 B12.113 C300.794 +G01 X+24.634 Y-28.251 Z-1.506 B12.109 C299.318 +G01 X+24.421 Y-28.37 Z-1.507 B12.113 C297.842 +G01 X+24.215 Y-28.472 Z-1.506 B12.109 C296.452 +G01 X+24.009 Y-28.574 Z-1.507 B12.112 C295.062 +G01 X+23.984 Y-28.587 B12.113 C294.89 +G01 X+23.777 Y-28.676 Z-1.506 B12.109 C293.524 +G01 X+23.57 Y-28.766 Z-1.507 B12.112 C292.159 +G01 X+23.537 Y-28.78 B12.113 C291.938 +G01 X+23.121 Y-28.935 B12.112 C289.255 +G01 X+23.08 Y-28.951 B12.114 C288.986 +G01 X+22.848 Y-29.024 Z-1.506 B12.11 C287.51 +G01 X+22.615 Y-29.097 Z-1.507 B12.114 C286.034 +G01 X+22.379 Y-29.159 Z-1.506 B12.11 C284.558 +G01 X+22.144 Y-29.22 Z-1.507 B12.114 C283.081 +G01 X+21.905 Y-29.269 Z-1.506 B12.11 C281.605 +G01 X+21.666 Y-29.318 Z-1.507 B12.114 C280.129 +G01 X+21.425 Y-29.355 Z-1.506 B12.11 C278.653 +G01 X+21.184 Y-29.391 Z-1.507 B12.114 C277.177 +G01 X+20.942 Y-29.416 Z-1.506 C275.701 +G01 X+20.699 Y-29.44 Z-1.507 C274.225 +G01 X+20.456 Y-29.452 Z-1.506 C272.749 +G01 X+20.212 Y-29.463 Z-1.507 C271.273 +G01 X+19.969 Z-1.506 C269.797 +G01 X+19.725 Y-29.462 Z-1.507 C268.321 +G01 X+19.481 Y-29.449 Z-1.506 C266.845 +G01 X+19.238 Y-29.435 Z-1.507 C265.369 +G01 X+18.996 Y-29.409 Z-1.506 C263.892 +G01 X+18.753 Y-29.383 Z-1.507 C262.417 +G01 X+18.513 Y-29.345 Z-1.506 C260.94 +G01 X+18.272 Y-29.307 Z-1.507 C259.464 +G01 X+18.034 Y-29.256 Z-1.506 C257.988 +G01 X+17.795 Y-29.205 Z-1.507 C256.512 +G01 X+17.56 Y-29.143 Z-1.506 C255.036 +G01 X+17.324 Y-29.08 Z-1.507 C253.56 +G01 X+17.092 Y-29.005 Z-1.506 C252.084 +G01 X+16.86 Y-28.93 Z-1.507 C250.608 +G01 X+16.632 Y-28.843 Z-1.506 C249.132 +G01 X+16.405 Y-28.757 Z-1.507 C247.656 +G01 X+16.182 Y-28.658 Z-1.506 B12.11 C246.182 +G01 X+15.959 Y-28.56 Z-1.507 B12.114 C244.708 +G01 X+15.705 Y-28.432 Z-1.506 B12.11 C243.03 +G01 X+15.452 Y-28.304 Z-1.507 B12.116 C241.352 +G01 X+15.088 Y-28.093 B12.115 C238.722 +G01 X+14.887 Y-27.963 Z-1.506 B12.111 C237.273 +G01 X+14.686 Y-27.834 Z-1.507 B12.114 C235.825 +G01 X+14.489 Y-27.693 Z-1.506 B12.11 C234.364 +G01 X+14.293 Y-27.552 Z-1.507 B12.114 C232.904 +G01 X+14.103 Y-27.4 Z-1.506 B12.11 C231.43 +G01 X+13.912 Y-27.248 Z-1.507 B12.114 C229.956 +G01 X+13.729 Y-27.087 Z-1.506 B12.11 C228.482 +G01 X+13.547 Y-26.925 Z-1.507 B12.113 C227.008 +G01 X+13.322 Y-26.705 Z-1.506 B12.11 C225.115 +G01 Y-26.572 Z-1.486 B11.989 C224.532 +G01 X+13.268 Y-26.519 Z-1.487 B11.99 C224.067 +G01 X+13.105 Y-26.342 Z-1.486 B11.986 C222.593 +G01 X+12.941 Y-26.164 Z-1.487 B11.99 C221.119 +G01 X+12.787 Y-25.978 Z-1.486 B11.986 C219.646 +G01 X+12.634 Y-25.792 Z-1.487 B11.99 C218.172 +G01 X+12.489 Y-25.599 Z-1.486 B11.986 C216.698 +G01 X+12.345 Y-25.405 Z-1.487 B11.99 C215.223 +G01 X+12.211 Y-25.205 Z-1.486 B11.986 C213.752 +G01 X+12.077 Y-25.004 Z-1.487 B11.99 C212.28 +G01 X+11.953 Y-24.797 Z-1.486 B11.986 C210.805 +G01 X+11.83 Y-24.59 Z-1.487 B11.99 C209.329 +G01 X+11.717 Y-24.377 Z-1.486 B11.986 C207.853 +G01 X+11.604 Y-24.163 Z-1.487 B11.99 C206.377 +G01 X+11.503 Y-23.944 Z-1.486 B11.986 C204.901 +G01 X+11.401 Y-23.725 Z-1.487 B11.99 C203.425 +G01 X+11.311 Y-23.502 Z-1.486 B11.987 C201.95 +G01 X+11.221 Y-23.278 Z-1.487 B11.99 C200.474 +G01 X+11.142 Y-23.05 Z-1.486 B11.987 C198.998 +G01 X+11.064 Y-22.822 Z-1.487 B11.991 C197.522 +G01 X+10.997 Y-22.59 Z-1.486 B11.987 C196.046 +G01 X+10.93 Y-22.358 Z-1.487 B11.991 C194.57 +G01 X+10.876 Y-22.123 Z-1.486 B11.987 C193.095 +G01 X+10.821 Y-21.888 Z-1.487 B11.991 C191.619 +G01 X+10.778 Y-21.65 Z-1.486 B11.987 C190.143 +G01 X+10.736 Y-21.413 Z-1.487 B11.991 C188.667 +G01 X+10.706 Y-21.173 Z-1.486 C187.191 +G01 X+10.676 Y-20.934 Z-1.487 C185.716 +G01 X+10.658 Y-20.693 Z-1.486 C184.24 +G01 X+10.64 Y-20.453 Z-1.487 C182.764 +G01 X+10.634 Y-20.212 Z-1.486 C181.288 +G01 X+10.629 Y-19.97 Z-1.487 C179.812 +G01 X+10.636 Y-19.729 Z-1.486 C178.337 +G01 X+10.643 Y-19.488 Z-1.487 C176.861 +G01 X+10.662 Y-19.247 Z-1.486 C175.385 +G01 X+10.682 Y-19.007 Z-1.487 C173.909 +G01 X+10.713 Y-18.768 Z-1.486 C172.433 +G01 X+10.745 Y-18.529 Z-1.487 C170.957 +G01 X+10.789 Y-18.291 Z-1.486 C169.482 +G01 X+10.833 Y-18.054 Z-1.487 C168.006 +G01 X+10.889 Y-17.819 Z-1.486 C166.53 +G01 X+10.945 Y-17.585 Z-1.487 C165.054 +G01 X+11.014 Y-17.353 Z-1.486 C163.578 +G01 X+11.082 Y-17.122 Z-1.487 C162.102 +G01 X+11.162 Y-16.894 Z-1.486 C160.627 +G01 X+11.242 Y-16.667 Z-1.487 C159.151 +G01 X+11.333 Y-16.443 Z-1.486 C157.675 +G01 X+11.425 Y-16.22 Z-1.487 C156.199 +G01 X+11.528 Y-16.002 Z-1.486 C154.723 +G01 X+11.631 Y-15.784 Z-1.487 C153.248 +G01 X+11.745 Y-15.571 Z-1.486 C151.772 +G01 X+11.859 Y-15.358 Z-1.487 C150.296 +G01 X+11.984 Y-15.152 Z-1.486 B11.987 C148.82 +G01 X+12.109 Y-14.946 Z-1.487 B11.991 C147.344 +G01 X+12.244 Y-14.746 Z-1.486 B11.987 C145.868 +G01 X+12.379 Y-14.546 Z-1.487 B11.991 C144.392 +G01 X+12.525 Y-14.353 Z-1.486 B11.987 C142.917 +G01 X+12.67 Y-14.161 Z-1.487 B11.99 C141.441 +G01 X+12.825 Y-13.976 Z-1.486 B11.987 C139.965 +G01 X+12.981 Y-13.791 Z-1.487 B11.99 C138.489 +G01 X+13.145 Y-13.615 Z-1.486 B11.986 C137.015 +G01 X+13.31 Y-13.438 Z-1.487 B11.99 C135.541 +G01 X+13.483 Y-13.27 Z-1.486 B11.986 C134.068 +G01 X+13.656 Y-13.103 Z-1.487 B11.99 C132.594 +G01 X+13.838 Y-12.944 Z-1.486 B11.986 C131.12 +G01 X+14.02 Y-12.785 Z-1.487 B11.99 C129.646 +G01 X+14.209 Y-12.636 Z-1.486 B11.986 C128.172 +G01 X+14.399 Y-12.487 Z-1.487 B11.99 C126.699 +G01 X+14.596 Y-12.348 Z-1.486 C125.228 +G01 X+14.793 Y-12.208 Z-1.487 C123.756 +G01 X+14.997 Y-12.079 Z-1.486 B11.986 C122.28 +G01 X+15.201 Y-11.951 Z-1.487 B11.99 C120.804 +G01 X+15.412 Y-11.832 Z-1.486 B11.986 C119.329 +G01 X+15.622 Y-11.714 Z-1.487 B11.99 C117.853 +G01 X+15.838 Y-11.607 Z-1.486 B11.986 C116.377 +G01 X+16.054 Y-11.5 Z-1.487 B11.99 C114.901 +G01 X+16.276 Y-11.404 Z-1.486 B11.986 C113.425 +G01 X+16.497 Y-11.308 Z-1.487 B11.99 C111.95 +G01 X+16.723 Y-11.224 Z-1.486 B11.987 C110.474 +G01 X+16.949 Y-11.139 Z-1.487 B11.99 C108.998 +G01 X+17.179 Y-11.067 Z-1.486 B11.987 C107.522 +G01 X+17.409 Y-10.994 Z-1.487 B11.991 C106.046 +G01 X+17.643 Y-10.933 Z-1.486 B11.987 C104.57 +G01 X+17.876 Y-10.873 Z-1.487 B11.991 C103.095 +G01 X+18.113 Y-10.824 Z-1.486 B11.987 C101.619 +G01 X+18.349 Y-10.775 Z-1.487 B11.991 C100.143 +G01 X+18.588 Y-10.739 Z-1.486 C98.667 +G01 X+18.826 Y-10.703 Z-1.487 C97.191 +G01 X+19.066 Y-10.678 Z-1.486 C95.716 +G01 X+19.306 Y-10.655 Z-1.487 C94.24 +G01 X+19.547 Y-10.643 Z-1.486 C92.764 +G01 X+19.788 Y-10.631 Z-1.487 C91.288 +G01 X+20.03 Y-10.632 Z-1.486 C89.812 +G01 X+20.271 Y-10.633 Z-1.487 C88.337 +G01 X+20.512 Y-10.646 Z-1.486 C86.861 +G01 X+20.753 Y-10.659 Z-1.487 C85.385 +G01 X+20.993 Y-10.685 Z-1.486 C83.909 +G01 X+21.233 Y-10.71 Z-1.487 C82.433 +G01 X+21.471 Y-10.748 Z-1.486 C80.957 +G01 X+21.709 Y-10.786 Z-1.487 C79.482 +G01 X+21.945 Y-10.836 Z-1.486 C78.006 +G01 X+22.181 Y-10.886 Z-1.487 C76.53 +G01 X+22.414 Y-10.948 Z-1.486 C75.054 +G01 X+22.648 Y-11.011 Z-1.487 C73.578 +G01 X+22.877 Y-11.085 Z-1.486 C72.102 +G01 X+23.107 Y-11.159 Z-1.487 C70.627 +G01 X+23.332 Y-11.244 Z-1.486 C69.151 +G01 X+23.558 Y-11.33 Z-1.487 C67.675 +G01 X+23.779 Y-11.428 Z-1.486 C66.199 +G01 X+23.999 Y-11.525 Z-1.487 C64.723 +G01 X+24.215 Y-11.634 Z-1.486 C63.247 +G01 X+24.43 Y-11.742 Z-1.487 C61.772 +G01 X+24.64 Y-11.862 Z-1.486 B11.987 C60.296 +G01 X+24.85 Y-11.981 Z-1.487 B11.991 C58.82 +G01 X+25.053 Y-12.111 Z-1.486 B11.987 C57.344 +G01 X+25.256 Y-12.242 Z-1.487 B11.991 C55.868 +G01 X+25.452 Y-12.382 Z-1.486 B11.987 C54.393 +G01 X+25.648 Y-12.522 Z-1.487 B11.99 C52.917 +G01 X+25.837 Y-12.673 Z-1.486 B11.987 C51.441 +G01 X+26.026 Y-12.823 Z-1.487 B11.99 C49.965 +G01 X+26.207 Y-12.983 Z-1.486 B11.987 C48.49 +G01 X+26.387 Y-13.143 Z-1.487 B11.99 C47.015 +G01 X+26.56 Y-13.312 Z-1.486 B11.986 C45.541 +G01 X+26.732 Y-13.481 Z-1.487 B11.99 C44.067 +G01 X+26.895 Y-13.658 Z-1.486 B11.986 C42.593 +G01 X+27.059 Y-13.836 Z-1.487 B11.99 C41.119 +G01 X+27.213 Y-14.022 Z-1.486 B11.986 C39.646 +G01 X+27.366 Y-14.207 Z-1.487 B11.99 C38.173 +G01 X+27.511 Y-14.401 Z-1.486 B11.986 C36.698 +G01 X+27.655 Y-14.595 Z-1.487 B11.99 C35.223 +G01 X+27.789 Y-14.795 Z-1.486 B11.986 C33.752 +G01 X+27.923 Y-14.996 Z-1.487 B11.99 C32.28 +G01 X+28.047 Y-15.203 Z-1.486 B11.986 C30.805 +G01 X+28.17 Y-15.41 Z-1.487 B11.99 C29.329 +G01 X+28.283 Y-15.623 Z-1.486 B11.986 C27.853 +G01 X+28.396 Y-15.837 Z-1.487 B11.99 C26.377 +G01 X+28.497 Y-16.055 Z-1.486 B11.986 C24.901 +G01 X+28.599 Y-16.274 Z-1.487 B11.99 C23.425 +G01 X+28.689 Y-16.498 Z-1.486 B11.987 C21.95 +G01 X+28.779 Y-16.722 Z-1.487 B11.99 C20.474 +G01 X+28.858 Y-16.95 Z-1.486 B11.987 C18.998 +G01 X+28.936 Y-17.178 Z-1.487 B11.991 C17.522 +G01 X+29.003 Y-17.41 Z-1.486 B11.987 C16.046 +G01 X+29.07 Y-17.642 Z-1.487 B11.991 C14.571 +G01 X+29.124 Y-17.877 Z-1.486 B11.987 C13.095 +G01 X+29.179 Y-18.112 Z-1.487 B11.991 C11.619 +G01 X+29.222 Y-18.35 Z-1.486 B11.987 C10.143 +G01 X+29.264 Y-18.587 Z-1.487 B11.991 C8.667 +G01 X+29.294 Y-18.826 Z-1.486 C7.191 +G01 X+29.324 Y-19.066 Z-1.487 C5.716 +G01 X+29.342 Y-19.306 Z-1.486 C4.24 +G01 X+29.36 Y-19.547 Z-1.487 C2.764 +G01 X+29.366 Y-19.788 Z-1.486 C1.288 +G01 X+29.371 Y-20.03 Z-1.487 C359.812 +G01 X+29.364 Y-20.271 Z-1.486 C358.337 +G01 X+29.357 Y-20.512 Z-1.487 C356.861 +G01 X+29.338 Y-20.752 Z-1.486 C355.385 +G01 X+29.318 Y-20.993 Z-1.487 C353.909 +G01 X+29.287 Y-21.232 Z-1.486 C352.433 +G01 X+29.255 Y-21.471 Z-1.487 C350.957 +G01 X+29.211 Y-21.709 Z-1.486 C349.482 +G01 X+29.167 Y-21.946 Z-1.487 C348.006 +G01 X+29.111 Y-22.181 Z-1.486 C346.53 +G01 X+29.055 Y-22.415 Z-1.487 C345.054 +G01 X+28.987 Y-22.647 Z-1.486 C343.578 +G01 X+28.918 Y-22.878 Z-1.487 C342.102 +G01 X+28.838 Y-23.106 Z-1.486 C340.627 +G01 X+28.758 Y-23.333 Z-1.487 C339.151 +G01 X+28.667 Y-23.557 Z-1.486 C337.675 +G01 X+28.575 Y-23.78 Z-1.487 C336.199 +G01 X+28.472 Y-23.998 Z-1.486 C334.723 +G01 X+28.369 Y-24.216 Z-1.487 C333.248 +G01 X+28.255 Y-24.429 Z-1.486 C331.772 +G01 X+28.141 Y-24.641 Z-1.487 C330.296 +G01 X+28.016 Y-24.848 Z-1.486 B11.987 C328.82 +G01 X+27.891 Y-25.054 Z-1.487 B11.991 C327.344 +G01 X+27.756 Y-25.254 Z-1.486 B11.987 C325.868 +G01 X+27.621 Y-25.454 Z-1.487 B11.991 C324.392 +G01 X+27.475 Y-25.646 Z-1.486 B11.987 C322.917 +G01 X+27.33 Y-25.839 Z-1.487 B11.99 C321.441 +G01 X+27.175 Y-26.024 Z-1.486 B11.987 C319.965 +G01 X+27.019 Y-26.209 Z-1.487 B11.99 C318.489 +G01 X+26.855 Y-26.385 Z-1.486 B11.986 C317.015 +G01 X+26.69 Y-26.562 Z-1.487 B11.99 C315.541 +G01 X+26.517 Y-26.73 Z-1.486 B11.986 C314.068 +G01 X+26.344 Y-26.897 Z-1.487 B11.99 C312.594 +G01 X+26.162 Y-27.056 Z-1.486 B11.986 C311.12 +G01 X+25.98 Y-27.215 Z-1.487 B11.99 C309.646 +G01 X+25.791 Y-27.364 Z-1.486 B11.986 C308.172 +G01 X+25.601 Y-27.513 Z-1.487 B11.99 C306.699 +G01 X+25.404 Y-27.652 Z-1.486 C305.228 +G01 X+25.207 Y-27.791 Z-1.487 C303.756 +G01 X+25.003 Y-27.92 Z-1.486 B11.986 C302.28 +G01 X+24.799 Y-28.049 Z-1.487 B11.99 C300.804 +G01 X+24.588 Y-28.167 Z-1.486 B11.986 C299.329 +G01 X+24.378 Y-28.285 Z-1.487 B11.99 C297.853 +G01 X+24.162 Y-28.393 Z-1.486 B11.986 C296.377 +G01 X+23.946 Y-28.5 Z-1.487 B11.99 C294.901 +G01 X+23.724 Y-28.596 Z-1.486 B11.986 C293.425 +G01 X+23.503 Y-28.692 Z-1.487 B11.99 C291.95 +G01 X+23.277 Y-28.776 Z-1.486 B11.987 C290.474 +G01 X+23.051 Y-28.861 Z-1.487 B11.99 C288.998 +G01 X+22.821 Y-28.933 Z-1.486 B11.987 C287.522 +G01 X+22.591 Y-29.006 Z-1.487 B11.991 C286.046 +G01 X+22.357 Y-29.067 Z-1.486 B11.987 C284.57 +G01 X+22.124 Y-29.127 Z-1.487 B11.991 C283.095 +G01 X+21.887 Y-29.176 Z-1.486 B11.987 C281.619 +G01 X+21.651 Y-29.224 Z-1.487 B11.991 C280.143 +G01 X+21.412 Y-29.261 Z-1.486 C278.667 +G01 X+21.174 Y-29.297 Z-1.487 C277.191 +G01 X+20.934 Y-29.321 Z-1.486 C275.716 +G01 X+20.694 Y-29.345 Z-1.487 C274.24 +G01 X+20.453 Y-29.357 Z-1.486 C272.764 +G01 X+20.212 Y-29.369 Z-1.487 C271.288 +G01 X+19.97 Y-29.368 Z-1.486 C269.812 +G01 X+19.729 Y-29.367 Z-1.487 C268.337 +G01 X+19.488 Y-29.354 Z-1.486 C266.861 +G01 X+19.247 Y-29.341 Z-1.487 C265.385 +G01 X+19.007 Y-29.315 Z-1.486 C263.909 +G01 X+18.767 Y-29.29 Z-1.487 C262.433 +G01 X+18.529 Y-29.252 Z-1.486 C260.957 +G01 X+18.291 Y-29.214 Z-1.487 C259.482 +G01 X+18.055 Y-29.164 Z-1.486 C258.005 +G01 X+17.819 Y-29.114 Z-1.487 C256.53 +G01 X+17.586 Y-29.052 Z-1.486 C255.054 +G01 X+17.352 Y-28.989 Z-1.487 C253.578 +G01 X+17.123 Y-28.915 Z-1.486 C252.102 +G01 X+16.893 Y-28.841 Z-1.487 C250.627 +G01 X+16.668 Y-28.755 Z-1.486 C249.151 +G01 X+16.442 Y-28.669 Z-1.487 C247.675 +G01 X+16.222 Y-28.572 Z-1.486 B11.987 C246.201 +G01 X+16.001 Y-28.475 Z-1.487 B11.991 C244.727 +G01 X+15.749 Y-28.348 Z-1.486 B11.987 C243.04 +G01 X+15.497 Y-28.22 Z-1.487 B11.993 C241.352 +G01 X+15.138 Y-28.012 B11.992 C238.735 +G01 X+14.939 Y-27.884 Z-1.486 B11.988 C237.286 +G01 X+14.74 Y-27.756 Z-1.487 B11.991 C235.837 +G01 X+14.546 Y-27.617 Z-1.486 B11.987 C234.377 +G01 X+14.352 Y-27.478 Z-1.487 B11.991 C232.918 +G01 X+14.163 Y-27.327 Z-1.486 B11.987 C231.441 +G01 X+13.974 Y-27.177 Z-1.487 B11.99 C229.965 +G01 X+13.793 Y-27.017 Z-1.486 B11.986 C228.49 +G01 X+13.613 Y-26.857 Z-1.487 B11.99 C227.015 +G01 X+13.389 Y-26.638 Z-1.486 B11.987 C225.117 +G01 Y-26.505 Z-1.466 B11.866 C224.535 +G01 X+13.337 Y-26.454 Z-1.467 B11.867 C224.085 +G01 X+13.175 Y-26.279 Z-1.466 B11.863 C222.609 +G01 X+13.014 Y-26.103 Z-1.467 B11.867 C221.134 +G01 X+12.861 Y-25.919 Z-1.466 B11.863 C219.658 +G01 X+12.709 Y-25.735 Z-1.467 B11.867 C218.182 +G01 X+12.566 Y-25.544 Z-1.466 B11.863 C216.708 +G01 X+12.423 Y-25.352 Z-1.467 B11.867 C215.234 +G01 X+12.291 Y-25.154 Z-1.466 C213.762 +G01 X+12.158 Y-24.955 Z-1.467 C212.29 +G01 X+12.035 Y-24.75 Z-1.466 B11.863 C210.815 +G01 X+11.913 Y-24.545 Z-1.467 B11.867 C209.339 +G01 X+11.801 Y-24.334 Z-1.466 B11.863 C207.864 +G01 X+11.69 Y-24.122 Z-1.467 B11.867 C206.388 +G01 X+11.589 Y-23.906 Z-1.466 B11.863 C204.912 +G01 X+11.489 Y-23.689 Z-1.467 B11.867 C203.437 +G01 X+11.399 Y-23.468 Z-1.466 B11.863 C201.961 +G01 X+11.31 Y-23.246 Z-1.467 B11.867 C200.486 +G01 X+11.232 Y-23.02 Z-1.466 B11.863 C199.01 +G01 X+11.155 Y-22.795 Z-1.467 B11.867 C197.535 +G01 X+11.088 Y-22.565 Z-1.466 B11.864 C196.059 +G01 X+11.022 Y-22.335 Z-1.467 B11.867 C194.584 +G01 X+10.968 Y-22.103 Z-1.466 B11.864 C193.108 +G01 X+10.914 Y-21.87 Z-1.467 B11.867 C191.632 +G01 X+10.872 Y-21.635 Z-1.466 B11.864 C190.157 +G01 X+10.83 Y-21.4 Z-1.467 B11.868 C188.681 +G01 X+10.8 Y-21.163 Z-1.466 C187.205 +G01 X+10.77 Y-20.926 Z-1.467 C185.73 +G01 X+10.752 Y-20.688 Z-1.466 C184.254 +G01 X+10.734 Y-20.45 Z-1.467 C182.779 +G01 X+10.729 Y-20.211 Z-1.466 C181.303 +G01 X+10.724 Y-19.972 Z-1.467 C179.828 +G01 X+10.73 Y-19.733 Z-1.466 C178.352 +G01 X+10.737 Y-19.495 Z-1.467 C176.876 +G01 X+10.756 Y-19.257 Z-1.466 C175.401 +G01 X+10.776 Y-19.018 Z-1.467 C173.925 +G01 X+10.807 Y-18.782 Z-1.466 C172.45 +G01 X+10.838 Y-18.545 Z-1.467 C170.974 +G01 X+10.882 Y-18.31 Z-1.466 C169.499 +G01 X+10.925 Y-18.075 Z-1.467 C168.023 +G01 X+10.981 Y-17.843 Z-1.466 C166.548 +G01 X+11.037 Y-17.611 Z-1.467 C165.072 +G01 X+11.104 Y-17.381 Z-1.466 C163.596 +G01 X+11.171 Y-17.152 Z-1.467 C162.121 +G01 X+11.25 Y-16.927 Z-1.466 C160.645 +G01 X+11.33 Y-16.702 Z-1.467 C159.169 +G01 X+11.42 Y-16.481 Z-1.466 C157.694 +G01 X+11.511 Y-16.26 Z-1.467 C156.218 +G01 X+11.613 Y-16.044 Z-1.466 C154.743 +G01 X+11.715 Y-15.828 Z-1.467 C153.267 +G01 X+11.828 Y-15.617 Z-1.466 C151.792 +G01 X+11.941 Y-15.407 Z-1.467 C150.316 +G01 X+12.064 Y-15.202 Z-1.466 C148.84 +G01 X+12.188 Y-14.998 Z-1.467 B11.867 C147.365 +G01 X+12.322 Y-14.8 Z-1.466 B11.864 C145.889 +G01 X+12.456 Y-14.602 Z-1.467 B11.867 C144.414 +G01 X+12.599 Y-14.412 Z-1.466 B11.864 C142.938 +G01 X+12.743 Y-14.221 Z-1.467 B11.867 C141.463 +G01 X+12.897 Y-14.038 Z-1.466 B11.863 C139.987 +G01 X+13.051 Y-13.855 Z-1.467 B11.867 C138.511 +G01 X+13.213 Y-13.68 Z-1.466 B11.863 C137.036 +G01 X+13.376 Y-13.506 Z-1.467 B11.867 C135.56 +G01 X+13.548 Y-13.339 Z-1.466 B11.863 C134.085 +G01 X+13.719 Y-13.173 Z-1.467 B11.867 C132.609 +G01 X+13.899 Y-13.016 Z-1.466 B11.863 C131.134 +G01 X+14.079 Y-12.859 Z-1.467 B11.867 C129.658 +G01 X+14.267 Y-12.711 Z-1.466 B11.863 C128.183 +G01 X+14.454 Y-12.564 Z-1.467 B11.867 C126.707 +G01 X+14.649 Y-12.426 Z-1.466 B11.863 C125.237 +G01 X+14.845 Y-12.288 Z-1.467 B11.867 C123.766 +G01 X+15.046 Y-12.16 Z-1.466 B11.863 C122.29 +G01 X+15.248 Y-12.033 Z-1.467 B11.867 C120.815 +G01 X+15.457 Y-11.916 Z-1.466 B11.863 C119.339 +G01 X+15.665 Y-11.799 Z-1.467 B11.867 C117.864 +G01 X+15.879 Y-11.693 Z-1.466 B11.863 C116.388 +G01 X+16.093 Y-11.587 Z-1.467 B11.867 C114.913 +G01 X+16.312 Y-11.491 Z-1.466 B11.863 C113.437 +G01 X+16.531 Y-11.397 Z-1.467 B11.867 C111.961 +G01 X+16.755 Y-11.313 Z-1.466 B11.863 C110.486 +G01 X+16.979 Y-11.229 Z-1.467 B11.867 C109.01 +G01 X+17.206 Y-11.157 Z-1.466 B11.864 C107.535 +G01 X+17.434 Y-11.085 Z-1.467 B11.867 C106.059 +G01 X+17.665 Y-11.025 Z-1.466 B11.864 C104.583 +G01 X+17.896 Y-10.965 Z-1.467 B11.867 C103.108 +G01 X+18.13 Y-10.917 Z-1.466 B11.864 C101.632 +G01 X+18.364 Y-10.869 Z-1.467 B11.868 C100.157 +G01 X+18.6 Y-10.833 Z-1.466 B11.864 C98.681 +G01 X+18.837 Y-10.797 Z-1.467 B11.868 C97.205 +G01 X+19.074 Y-10.773 Z-1.466 C95.73 +G01 X+19.312 Y-10.749 Z-1.467 C94.254 +G01 X+19.55 Y-10.737 Z-1.466 C92.779 +G01 X+19.789 Y-10.726 Z-1.467 C91.303 +G01 X+20.028 Z-1.466 C89.828 +G01 X+20.267 Y-10.727 Z-1.467 C88.352 +G01 X+20.505 Y-10.74 Z-1.466 C86.876 +G01 X+20.744 Y-10.753 Z-1.467 C85.401 +G01 X+20.981 Y-10.778 Z-1.466 C83.925 +G01 X+21.219 Y-10.804 Z-1.467 C82.45 +G01 X+21.455 Y-10.841 Z-1.466 C80.974 +G01 X+21.69 Y-10.879 Z-1.467 C79.499 +G01 X+21.924 Y-10.928 Z-1.466 C78.023 +G01 X+22.158 Y-10.978 Z-1.467 C76.548 +G01 X+22.389 Y-11.039 Z-1.466 C75.072 +G01 X+22.619 Y-11.101 Z-1.467 C73.596 +G01 X+22.847 Y-11.174 Z-1.466 C72.121 +G01 X+23.074 Y-11.248 Z-1.467 C70.645 +G01 X+23.297 Y-11.332 Z-1.466 C69.169 +G01 X+23.52 Y-11.417 Z-1.467 C67.694 +G01 X+23.739 Y-11.514 Z-1.466 C66.218 +G01 X+23.958 Y-11.61 Z-1.467 C64.743 +G01 X+24.171 Y-11.717 Z-1.466 C63.267 +G01 X+24.384 Y-11.825 Z-1.467 C61.792 +G01 X+24.592 Y-11.943 Z-1.466 C60.316 +G01 X+24.799 Y-12.061 Z-1.467 C58.841 +G01 X+25 Y-12.19 Z-1.466 B11.864 C57.365 +G01 X+25.202 Y-12.319 Z-1.467 B11.867 C55.889 +G01 X+25.396 Y-12.458 Z-1.466 B11.864 C54.414 +G01 X+25.59 Y-12.597 Z-1.467 B11.867 C52.938 +G01 X+25.777 Y-12.746 Z-1.466 B11.864 C51.463 +G01 X+25.964 Y-12.895 Z-1.467 B11.867 C49.987 +G01 X+26.143 Y-13.053 Z-1.466 B11.863 C48.512 +G01 X+26.322 Y-13.211 Z-1.467 B11.867 C47.036 +G01 X+26.492 Y-13.378 Z-1.466 B11.863 C45.561 +G01 X+26.663 Y-13.545 Z-1.467 B11.867 C44.085 +G01 X+26.825 Y-13.721 Z-1.466 B11.863 C42.609 +G01 X+26.986 Y-13.897 Z-1.467 B11.867 C41.134 +G01 X+27.139 Y-14.081 Z-1.466 B11.863 C39.658 +G01 X+27.291 Y-14.265 Z-1.467 B11.867 C38.183 +G01 X+27.434 Y-14.456 Z-1.466 B11.863 C36.708 +G01 X+27.577 Y-14.648 Z-1.467 B11.867 C35.234 +G01 X+27.709 Y-14.846 Z-1.466 C33.762 +G01 X+27.842 Y-15.045 Z-1.467 C32.29 +G01 X+27.965 Y-15.25 Z-1.466 B11.863 C30.815 +G01 X+28.087 Y-15.455 Z-1.467 B11.867 C29.339 +G01 X+28.199 Y-15.666 Z-1.466 B11.863 C27.864 +G01 X+28.31 Y-15.877 Z-1.467 B11.867 C26.388 +G01 X+28.411 Y-16.094 Z-1.466 B11.863 C24.912 +G01 X+28.511 Y-16.311 Z-1.467 B11.867 C23.437 +G01 X+28.601 Y-16.532 Z-1.466 B11.863 C21.961 +G01 X+28.69 Y-16.754 Z-1.467 B11.867 C20.486 +G01 X+28.768 Y-16.979 Z-1.466 B11.863 C19.01 +G01 X+28.845 Y-17.205 Z-1.467 B11.867 C17.535 +G01 X+28.912 Y-17.435 Z-1.466 B11.864 C16.059 +G01 X+28.978 Y-17.664 Z-1.467 B11.867 C14.584 +G01 X+29.032 Y-17.897 Z-1.466 B11.864 C13.108 +G01 X+29.086 Y-18.13 Z-1.467 B11.867 C11.632 +G01 X+29.128 Y-18.365 Z-1.466 B11.864 C10.157 +G01 X+29.17 Y-18.6 Z-1.467 B11.868 C8.681 +G01 X+29.2 Y-18.837 Z-1.466 C7.205 +G01 X+29.23 Y-19.074 Z-1.467 C5.73 +G01 X+29.248 Y-19.312 Z-1.466 C4.254 +G01 X+29.266 Y-19.55 Z-1.467 C2.779 +G01 X+29.271 Y-19.789 Z-1.466 C1.303 +G01 X+29.276 Y-20.028 Z-1.467 C359.828 +G01 X+29.27 Y-20.266 Z-1.466 C358.352 +G01 X+29.263 Y-20.505 Z-1.467 C356.876 +G01 X+29.244 Y-20.743 Z-1.466 C355.401 +G01 X+29.224 Y-20.981 Z-1.467 C353.925 +G01 X+29.193 Y-21.218 Z-1.466 C352.45 +G01 X+29.162 Y-21.455 Z-1.467 C350.974 +G01 X+29.118 Y-21.69 Z-1.466 C349.499 +G01 X+29.075 Y-21.925 Z-1.467 C348.023 +G01 X+29.019 Y-22.157 Z-1.466 C346.548 +G01 X+28.963 Y-22.389 Z-1.467 C345.072 +G01 X+28.896 Y-22.618 Z-1.466 C343.596 +G01 X+28.829 Y-22.848 Z-1.467 C342.121 +G01 X+28.75 Y-23.073 Z-1.466 C340.645 +G01 X+28.67 Y-23.298 Z-1.467 C339.169 +G01 X+28.58 Y-23.519 Z-1.466 C337.694 +G01 X+28.489 Y-23.74 Z-1.467 C336.218 +G01 X+28.387 Y-23.956 Z-1.466 C334.743 +G01 X+28.285 Y-24.172 Z-1.467 C333.267 +G01 X+28.172 Y-24.383 Z-1.466 C331.792 +G01 X+28.059 Y-24.593 Z-1.467 C330.316 +G01 X+27.936 Y-24.798 Z-1.466 C328.84 +G01 X+27.812 Y-25.002 Z-1.467 B11.867 C327.365 +G01 X+27.678 Y-25.2 Z-1.466 B11.864 C325.889 +G01 X+27.544 Y-25.398 Z-1.467 B11.867 C324.414 +G01 X+27.401 Y-25.588 Z-1.466 B11.864 C322.938 +G01 X+27.257 Y-25.779 Z-1.467 B11.867 C321.463 +G01 X+27.103 Y-25.962 Z-1.466 B11.863 C319.987 +G01 X+26.949 Y-26.145 Z-1.467 B11.867 C318.511 +G01 X+26.787 Y-26.32 Z-1.466 B11.863 C317.036 +G01 X+26.624 Y-26.494 Z-1.467 B11.867 C315.56 +G01 X+26.452 Y-26.661 Z-1.466 B11.863 C314.085 +G01 X+26.281 Y-26.827 Z-1.467 B11.867 C312.609 +G01 X+26.101 Y-26.984 Z-1.466 B11.863 C311.134 +G01 X+25.921 Y-27.141 Z-1.467 B11.867 C309.658 +G01 X+25.733 Y-27.289 Z-1.466 B11.863 C308.183 +G01 X+25.546 Y-27.436 Z-1.467 B11.867 C306.707 +G01 X+25.351 Y-27.574 Z-1.466 B11.863 C305.237 +G01 X+25.155 Y-27.712 Z-1.467 B11.867 C303.766 +G01 X+24.954 Y-27.84 Z-1.466 B11.863 C302.29 +G01 X+24.752 Y-27.967 Z-1.467 B11.867 C300.815 +G01 X+24.543 Y-28.084 Z-1.466 B11.863 C299.339 +G01 X+24.335 Y-28.201 Z-1.467 B11.867 C297.864 +G01 X+24.121 Y-28.307 Z-1.466 B11.863 C296.388 +G01 X+23.907 Y-28.413 Z-1.467 B11.867 C294.913 +G01 X+23.688 Y-28.508 Z-1.466 B11.863 C293.437 +G01 X+23.469 Y-28.603 Z-1.467 B11.867 C291.961 +G01 X+23.245 Y-28.687 Z-1.466 B11.863 C290.486 +G01 X+23.021 Y-28.771 Z-1.467 B11.867 C289.01 +G01 X+22.794 Y-28.843 Z-1.466 B11.864 C287.535 +G01 X+22.566 Y-28.914 Z-1.467 B11.867 C286.059 +G01 X+22.335 Y-28.975 Z-1.466 B11.864 C284.583 +G01 X+22.104 Y-29.035 Z-1.467 B11.867 C283.108 +G01 X+21.87 Y-29.083 Z-1.466 B11.864 C281.632 +G01 X+21.636 Y-29.131 Z-1.467 B11.868 C280.157 +G01 X+21.4 Y-29.167 Z-1.466 B11.864 C278.681 +G01 X+21.164 Y-29.203 Z-1.467 B11.868 C277.205 +G01 X+20.926 Y-29.227 Z-1.466 C275.73 +G01 X+20.688 Y-29.251 Z-1.467 C274.254 +G01 X+20.45 Y-29.263 Z-1.466 C272.779 +G01 X+20.211 Y-29.274 Z-1.467 C271.303 +G01 X+19.972 Y-29.273 Z-1.466 C269.828 +G01 X+19.733 Z-1.467 C268.352 +G01 X+19.495 Y-29.26 Z-1.466 C266.876 +G01 X+19.256 Y-29.247 Z-1.467 C265.401 +G01 X+19.019 Y-29.221 Z-1.466 C263.925 +G01 X+18.781 Y-29.196 Z-1.467 C262.45 +G01 X+18.545 Y-29.159 Z-1.466 C260.974 +G01 X+18.31 Y-29.121 Z-1.467 C259.499 +G01 X+18.076 Y-29.072 Z-1.466 C258.023 +G01 X+17.842 Y-29.022 Z-1.467 C256.548 +G01 X+17.611 Y-28.961 Z-1.466 C255.072 +G01 X+17.381 Y-28.899 Z-1.467 C253.596 +G01 X+17.153 Y-28.826 Z-1.466 C252.121 +G01 X+16.926 Y-28.752 Z-1.467 C250.645 +G01 X+16.703 Y-28.667 Z-1.466 C249.169 +G01 X+16.48 Y-28.582 Z-1.467 C247.694 +G01 X+16.261 Y-28.486 Z-1.466 C246.221 +G01 X+16.043 Y-28.39 Z-1.467 C244.747 +G01 X+15.792 Y-28.264 Z-1.466 B11.863 C243.049 +G01 X+15.542 Y-28.137 Z-1.467 B11.869 C241.352 +G01 X+15.188 Y-27.932 C238.754 +G01 X+14.991 Y-27.805 Z-1.466 B11.865 C237.305 +G01 X+14.794 Y-27.678 Z-1.467 B11.868 C235.855 +G01 X+14.602 Y-27.541 Z-1.466 B11.864 C234.397 +G01 X+14.41 Y-27.403 Z-1.467 B11.867 C232.939 +G01 X+14.223 Y-27.254 Z-1.466 B11.864 C231.463 +G01 X+14.036 Y-27.105 Z-1.467 B11.867 C229.987 +G01 X+13.857 Y-26.947 Z-1.466 B11.863 C228.511 +G01 X+13.678 Y-26.789 Z-1.467 B11.867 C227.036 +G01 X+13.456 Y-26.571 Z-1.466 B11.864 C225.12 +G01 Y-26.438 Z-1.446 B11.748 C224.526 +G01 X+13.406 Y-26.39 Z-1.447 B11.749 C224.097 +G01 X+13.246 Y-26.216 Z-1.446 B11.745 C222.621 +G01 X+13.086 Y-26.042 Z-1.447 B11.749 C221.146 +G01 X+12.935 Y-25.86 Z-1.446 B11.745 C219.671 +G01 X+12.784 Y-25.678 Z-1.447 B11.749 C218.195 +G01 X+12.643 Y-25.489 Z-1.446 B11.745 C216.72 +G01 X+12.501 Y-25.299 Z-1.447 B11.749 C215.245 +G01 X+12.37 Y-25.102 Z-1.446 C213.771 +G01 X+12.239 Y-24.906 Z-1.447 C212.298 +G01 X+12.117 Y-24.703 Z-1.446 B11.745 C210.82 +G01 X+11.996 Y-24.5 Z-1.447 B11.749 C209.342 +G01 X+11.886 Y-24.291 Z-1.446 B11.745 C207.865 +G01 X+11.775 Y-24.082 Z-1.447 B11.749 C206.388 +G01 X+11.676 Y-23.868 Z-1.446 B11.745 C204.913 +G01 X+11.576 Y-23.653 Z-1.447 B11.749 C203.437 +G01 X+11.488 Y-23.434 Z-1.446 B11.745 C201.962 +G01 X+11.399 Y-23.215 Z-1.447 B11.749 C200.487 +G01 X+11.322 Y-22.991 Z-1.446 B11.745 C199.011 +G01 X+11.245 Y-22.768 Z-1.447 B11.749 C197.536 +G01 X+11.18 Y-22.54 Z-1.446 B11.745 C196.061 +G01 X+11.114 Y-22.313 Z-1.447 B11.749 C194.585 +G01 X+11.06 Y-22.083 Z-1.446 B11.746 C193.11 +G01 X+11.007 Y-21.853 Z-1.447 B11.749 C191.635 +G01 X+10.965 Y-21.62 Z-1.446 B11.746 C190.159 +G01 X+10.923 Y-21.387 Z-1.447 B11.749 C188.684 +G01 X+10.894 Y-21.153 Z-1.446 B11.746 C187.209 +G01 X+10.864 Y-20.918 Z-1.447 B11.749 C185.734 +G01 X+10.846 Y-20.682 Z-1.446 C184.258 +G01 X+10.829 Y-20.447 Z-1.447 B11.75 C182.783 +G01 X+10.823 Y-20.21 Z-1.446 C181.307 +G01 X+10.818 Y-19.974 Z-1.447 C179.832 +G01 X+10.825 Y-19.738 Z-1.446 C178.357 +G01 X+10.832 Y-19.501 Z-1.447 C176.882 +G01 X+10.85 Y-19.266 Z-1.446 C175.406 +G01 X+10.869 Y-19.03 Z-1.447 C173.931 +G01 X+10.9 Y-18.796 Z-1.446 C172.455 +G01 X+10.931 Y-18.561 Z-1.447 C170.98 +G01 X+10.974 Y-18.329 Z-1.446 C169.505 +G01 X+11.018 Y-18.096 Z-1.447 C168.029 +G01 X+11.072 Y-17.866 Z-1.446 C166.554 +G01 X+11.127 Y-17.636 Z-1.447 C165.079 +G01 X+11.194 Y-17.41 Z-1.446 C163.603 +G01 X+11.261 Y-17.183 Z-1.447 C162.128 +G01 X+11.339 Y-16.96 Z-1.446 C160.653 +G01 X+11.418 Y-16.737 Z-1.447 C159.177 +G01 X+11.507 Y-16.518 Z-1.446 C157.702 +G01 X+11.597 Y-16.299 Z-1.447 C156.227 +G01 X+11.698 Y-16.085 Z-1.446 C154.751 +G01 X+11.799 Y-15.872 Z-1.447 C153.276 +G01 X+11.91 Y-15.663 Z-1.446 C151.801 +G01 X+12.022 Y-15.455 Z-1.447 B11.749 C150.325 +G01 X+12.144 Y-15.252 Z-1.446 B11.75 C148.85 +G01 X+12.266 Y-15.05 Z-1.447 B11.749 C147.375 +G01 X+12.399 Y-14.854 Z-1.446 B11.746 C145.899 +G01 X+12.532 Y-14.659 Z-1.447 B11.749 C144.424 +G01 X+12.674 Y-14.47 Z-1.446 B11.746 C142.949 +G01 X+12.816 Y-14.281 Z-1.447 B11.749 C141.473 +G01 X+12.968 Y-14.1 Z-1.446 B11.745 C139.998 +G01 X+13.12 Y-13.919 Z-1.447 B11.749 C138.523 +G01 X+13.281 Y-13.746 Z-1.446 B11.745 C137.047 +G01 X+13.443 Y-13.573 Z-1.447 B11.749 C135.572 +G01 X+13.612 Y-13.408 Z-1.446 B11.745 C134.097 +G01 X+13.782 Y-13.244 Z-1.447 B11.749 C132.622 +G01 X+13.96 Y-13.088 Z-1.446 B11.745 C131.146 +G01 X+14.138 Y-12.933 Z-1.447 B11.749 C129.671 +G01 X+14.324 Y-12.786 Z-1.446 B11.745 C128.195 +G01 X+14.51 Y-12.64 Z-1.447 B11.749 C126.72 +G01 X+14.703 Y-12.504 Z-1.446 B11.745 C125.246 +G01 X+14.896 Y-12.367 Z-1.447 B11.749 C123.771 +G01 X+15.096 Y-12.241 Z-1.446 B11.745 C122.296 +G01 X+15.296 Y-12.115 Z-1.447 B11.749 C120.82 +G01 X+15.502 Y-11.999 Z-1.446 B11.745 C119.342 +G01 X+15.708 Y-11.883 Z-1.447 B11.749 C117.864 +G01 X+15.919 Y-11.778 Z-1.446 B11.745 C116.388 +G01 X+16.131 Y-11.673 Z-1.447 B11.749 C114.913 +G01 X+16.349 Y-11.578 Z-1.446 B11.745 C113.434 +G01 X+16.566 Y-11.484 Z-1.447 B11.749 C111.955 +G01 X+16.787 Y-11.402 Z-1.446 B11.745 C110.483 +G01 X+17.008 Y-11.319 Z-1.447 B11.749 C109.011 +G01 X+17.233 Y-11.248 Z-1.446 B11.745 C107.536 +G01 X+17.459 Y-11.177 Z-1.447 B11.749 C106.061 +G01 X+17.687 Y-11.117 Z-1.446 B11.746 C104.585 +G01 X+17.916 Y-11.058 Z-1.447 B11.749 C103.11 +G01 X+18.148 Y-11.01 Z-1.446 B11.746 C101.635 +G01 X+18.379 Y-10.962 Z-1.447 B11.749 C100.159 +G01 X+18.613 Y-10.926 Z-1.446 B11.746 C98.684 +G01 X+18.847 Y-10.891 Z-1.447 B11.749 C97.209 +G01 X+19.082 Y-10.867 Z-1.446 C95.733 +G01 X+19.317 Y-10.843 Z-1.447 C94.258 +G01 X+19.553 Y-10.832 Z-1.446 C92.783 +G01 X+19.79 Y-10.82 Z-1.447 B11.75 C91.307 +G01 X+20.026 Y-10.821 Z-1.446 C89.832 +G01 X+20.262 Y-10.822 Z-1.447 C88.357 +G01 X+20.498 Y-10.834 Z-1.446 C86.882 +G01 X+20.735 Y-10.847 Z-1.447 C85.406 +G01 X+20.97 Y-10.872 Z-1.446 C83.931 +G01 X+21.205 Y-10.897 Z-1.447 C82.455 +G01 X+21.438 Y-10.934 Z-1.446 C80.98 +G01 X+21.672 Y-10.971 Z-1.447 C79.505 +G01 X+21.903 Y-11.02 Z-1.446 C78.029 +G01 X+22.134 Y-11.069 Z-1.447 C76.554 +G01 X+22.363 Y-11.13 Z-1.446 C75.079 +G01 X+22.591 Y-11.191 Z-1.447 C73.603 +G01 X+22.816 Y-11.264 Z-1.446 C72.128 +G01 X+23.041 Y-11.336 Z-1.447 C70.653 +G01 X+23.262 Y-11.42 Z-1.446 C69.177 +G01 X+23.483 Y-11.504 Z-1.447 C67.702 +G01 X+23.7 Y-11.599 Z-1.446 C66.227 +G01 X+23.916 Y-11.695 Z-1.447 C64.752 +G01 X+24.127 Y-11.801 Z-1.446 C63.276 +G01 X+24.338 Y-11.907 Z-1.447 C61.801 +G01 X+24.544 Y-12.024 Z-1.446 C60.325 +G01 X+24.749 Y-12.142 Z-1.447 C58.85 +G01 X+24.948 Y-12.269 Z-1.446 C57.375 +G01 X+25.147 Y-12.396 Z-1.447 B11.749 C55.899 +G01 X+25.34 Y-12.534 Z-1.446 B11.746 C54.424 +G01 X+25.532 Y-12.671 Z-1.447 B11.749 C52.949 +G01 X+25.717 Y-12.819 Z-1.446 B11.746 C51.473 +G01 X+25.902 Y-12.966 Z-1.447 B11.749 C49.998 +G01 X+26.079 Y-13.122 Z-1.446 B11.745 C48.523 +G01 X+26.256 Y-13.279 Z-1.447 B11.749 C47.047 +G01 X+26.425 Y-13.445 Z-1.446 B11.745 C45.572 +G01 X+26.594 Y-13.61 Z-1.447 B11.749 C44.097 +G01 X+26.754 Y-13.784 Z-1.446 B11.745 C42.621 +G01 X+26.914 Y-13.958 Z-1.447 B11.749 C41.146 +G01 X+27.065 Y-14.14 Z-1.446 B11.745 C39.671 +G01 X+27.216 Y-14.322 Z-1.447 B11.749 C38.195 +G01 X+27.357 Y-14.511 Z-1.446 B11.745 C36.72 +G01 X+27.499 Y-14.701 Z-1.447 B11.749 C35.245 +G01 X+27.63 Y-14.897 Z-1.446 C33.771 +G01 X+27.761 Y-15.094 Z-1.447 C32.298 +G01 X+27.883 Y-15.297 Z-1.446 B11.745 C30.82 +G01 X+28.004 Y-15.5 Z-1.447 B11.749 C29.342 +G01 X+28.114 Y-15.709 Z-1.446 B11.745 C27.865 +G01 X+28.225 Y-15.918 Z-1.447 B11.749 C26.388 +G01 X+28.324 Y-16.132 Z-1.446 B11.745 C24.913 +G01 X+28.424 Y-16.347 Z-1.447 B11.749 C23.437 +G01 X+28.512 Y-16.566 Z-1.446 B11.745 C21.962 +G01 X+28.601 Y-16.785 Z-1.447 B11.749 C20.487 +G01 X+28.678 Y-17.009 Z-1.446 B11.745 C19.011 +G01 X+28.755 Y-17.232 Z-1.447 B11.749 C17.536 +G01 X+28.82 Y-17.459 Z-1.446 B11.745 C16.061 +G01 X+28.886 Y-17.687 Z-1.447 B11.749 C14.585 +G01 X+28.94 Y-17.917 Z-1.446 B11.746 C13.11 +G01 X+28.993 Y-18.147 Z-1.447 B11.749 C11.635 +G01 X+29.035 Y-18.38 Z-1.446 B11.746 C10.159 +G01 X+29.077 Y-18.613 Z-1.447 B11.749 C8.684 +G01 X+29.106 Y-18.847 Z-1.446 B11.746 C7.209 +G01 X+29.136 Y-19.082 Z-1.447 B11.749 C5.734 +G01 X+29.154 Y-19.317 Z-1.446 C4.258 +G01 X+29.171 Y-19.553 Z-1.447 B11.75 C2.783 +G01 X+29.177 Y-19.79 Z-1.446 C1.307 +G01 X+29.182 Y-20.026 Z-1.447 C359.832 +G01 X+29.175 Y-20.262 Z-1.446 C358.357 +G01 X+29.168 Y-20.499 Z-1.447 C356.882 +G01 X+29.15 Y-20.734 Z-1.446 C355.406 +G01 X+29.131 Y-20.97 Z-1.447 C353.931 +G01 X+29.1 Y-21.204 Z-1.446 C352.455 +G01 X+29.069 Y-21.439 Z-1.447 C350.98 +G01 X+29.026 Y-21.671 Z-1.446 C349.505 +G01 X+28.982 Y-21.904 Z-1.447 C348.029 +G01 X+28.928 Y-22.134 Z-1.446 C346.554 +G01 X+28.873 Y-22.363 Z-1.447 C345.079 +G01 X+28.806 Y-22.59 Z-1.446 C343.603 +G01 X+28.739 Y-22.817 Z-1.447 C342.128 +G01 X+28.661 Y-23.04 Z-1.446 C340.653 +G01 X+28.583 Y-23.263 Z-1.447 C339.177 +G01 X+28.493 Y-23.482 Z-1.446 C337.702 +G01 X+28.403 Y-23.701 Z-1.447 C336.227 +G01 X+28.302 Y-23.915 Z-1.446 C334.751 +G01 X+28.201 Y-24.128 Z-1.447 C333.276 +G01 X+28.09 Y-24.337 Z-1.446 C331.801 +G01 X+27.978 Y-24.545 Z-1.447 B11.749 C330.325 +G01 X+27.856 Y-24.747 Z-1.446 B11.75 C328.85 +G01 X+27.734 Y-24.95 Z-1.447 B11.749 C327.375 +G01 X+27.601 Y-25.146 Z-1.446 B11.746 C325.899 +G01 X+27.468 Y-25.341 Z-1.447 B11.749 C324.424 +G01 X+27.326 Y-25.53 Z-1.446 B11.746 C322.949 +G01 X+27.184 Y-25.719 Z-1.447 B11.749 C321.473 +G01 X+27.032 Y-25.9 Z-1.446 B11.745 C319.998 +G01 X+26.88 Y-26.081 Z-1.447 B11.749 C318.523 +G01 X+26.719 Y-26.254 Z-1.446 B11.745 C317.047 +G01 X+26.558 Y-26.427 Z-1.447 B11.749 C315.572 +G01 X+26.388 Y-26.592 Z-1.446 B11.745 C314.097 +G01 X+26.218 Y-26.756 Z-1.447 B11.749 C312.621 +G01 X+26.04 Y-26.912 Z-1.446 B11.745 C311.146 +G01 X+25.862 Y-27.067 Z-1.447 B11.749 C309.671 +G01 X+25.676 Y-27.213 Z-1.446 B11.745 C308.195 +G01 X+25.49 Y-27.36 Z-1.447 B11.749 C306.72 +G01 X+25.297 Y-27.496 Z-1.446 B11.745 C305.246 +G01 X+25.104 Y-27.633 Z-1.447 B11.749 C303.771 +G01 X+24.904 Y-27.759 Z-1.446 B11.745 C302.296 +G01 X+24.704 Y-27.885 Z-1.447 B11.749 C300.82 +G01 X+24.498 Y-28.001 Z-1.446 B11.745 C299.342 +G01 X+24.292 Y-28.117 Z-1.447 B11.749 C297.864 +G01 X+24.081 Y-28.222 Z-1.446 B11.745 C296.388 +G01 X+23.869 Y-28.327 Z-1.447 B11.749 C294.913 +G01 X+23.651 Y-28.421 Z-1.446 B11.745 C293.434 +G01 X+23.434 Y-28.516 Z-1.447 B11.749 C291.955 +G01 X+23.213 Y-28.598 Z-1.446 B11.745 C290.483 +G01 X+22.992 Y-28.681 Z-1.447 B11.749 C289.011 +G01 X+22.767 Y-28.752 Z-1.446 B11.745 C287.536 +G01 X+22.541 Y-28.823 Z-1.447 B11.749 C286.061 +G01 X+22.313 Y-28.883 Z-1.446 B11.746 C284.585 +G01 X+22.084 Y-28.942 Z-1.447 B11.749 C283.11 +G01 X+21.852 Y-28.99 Z-1.446 B11.746 C281.635 +G01 X+21.621 Y-29.038 Z-1.447 B11.749 C280.159 +G01 X+21.387 Y-29.074 Z-1.446 B11.746 C278.684 +G01 X+21.153 Y-29.109 Z-1.447 B11.749 C277.209 +G01 X+20.918 Y-29.133 Z-1.446 C275.733 +G01 X+20.683 Y-29.156 Z-1.447 C274.258 +G01 X+20.447 Y-29.168 Z-1.446 C272.783 +G01 X+20.21 Y-29.179 Z-1.447 B11.75 C271.307 +G01 X+19.974 Z-1.446 C269.832 +G01 X+19.738 Y-29.178 Z-1.447 C268.357 +G01 X+19.502 Y-29.165 Z-1.446 C266.882 +G01 X+19.265 Y-29.152 Z-1.447 C265.406 +G01 X+19.03 Y-29.128 Z-1.446 C263.931 +G01 X+18.795 Y-29.102 Z-1.447 C262.455 +G01 X+18.562 Y-29.066 Z-1.446 C260.98 +G01 X+18.328 Y-29.028 Z-1.447 C259.505 +G01 X+18.097 Y-28.98 Z-1.446 C258.029 +G01 X+17.866 Y-28.93 Z-1.447 C256.554 +G01 X+17.637 Y-28.87 Z-1.446 C255.079 +G01 X+17.409 Y-28.809 Z-1.447 C253.603 +G01 X+17.184 Y-28.736 Z-1.446 C252.128 +G01 X+16.959 Y-28.664 Z-1.447 C250.653 +G01 X+16.738 Y-28.58 Z-1.446 C249.177 +G01 X+16.517 Y-28.496 Z-1.447 C247.702 +G01 X+16.301 Y-28.401 Z-1.446 C246.229 +G01 X+16.085 Y-28.305 Z-1.447 C244.756 +G01 X+15.836 Y-28.18 Z-1.446 B11.745 C243.054 +G01 X+15.587 Y-28.054 Z-1.447 B11.751 C241.352 +G01 X+15.238 Y-27.852 C238.763 +G01 X+15.043 Y-27.726 Z-1.446 B11.747 C237.313 +G01 X+14.848 Y-27.6 Z-1.447 B11.75 C235.863 +G01 X+14.658 Y-27.465 Z-1.446 B11.746 C234.406 +G01 X+14.468 Y-27.329 Z-1.447 B11.749 C232.95 +G01 X+14.283 Y-27.181 Z-1.446 B11.745 C231.474 +G01 X+14.098 Y-27.034 Z-1.447 B11.749 C229.998 +G01 X+13.921 Y-26.877 Z-1.446 B11.745 C228.523 +G01 X+13.744 Y-26.721 Z-1.447 B11.749 C227.047 +G01 X+13.523 Y-26.504 Z-1.446 B11.746 C225.112 +G01 X+13.522 Y-26.371 Z-1.427 B11.625 C224.514 +G01 X+13.475 Y-26.325 B11.626 C224.105 +G01 X+13.317 Y-26.153 B11.622 C222.63 +G01 X+13.158 Y-25.981 B11.626 C221.154 +G01 X+13.009 Y-25.801 B11.622 C219.679 +G01 X+12.859 Y-25.621 B11.626 C218.204 +G01 X+12.719 Y-25.433 B11.622 C216.729 +G01 X+12.58 Y-25.246 B11.626 C215.254 +G01 X+12.449 Y-25.051 C213.781 +G01 X+12.319 Y-24.857 C212.309 +G01 X+12.199 Y-24.656 B11.622 C210.831 +G01 X+12.08 Y-24.455 B11.626 C209.354 +G01 X+11.97 Y-24.248 B11.622 C207.876 +G01 X+11.861 Y-24.041 B11.626 C206.398 +G01 X+11.762 Y-23.829 B11.622 C204.921 +G01 X+11.663 Y-23.617 B11.626 C203.443 +G01 X+11.576 Y-23.4 B11.622 C201.965 +G01 X+11.488 Y-23.183 B11.626 C200.488 +G01 X+11.41 Y-22.955 Z-1.426 B11.622 C198.967 +G01 X+11.332 Y-22.727 Z-1.427 B11.626 C197.445 +G01 X+11.268 Y-22.506 Z-1.426 B11.622 C195.994 +G01 X+11.205 Y-22.284 Z-1.427 B11.626 C194.542 +G01 X+11.152 Y-22.06 B11.622 C193.088 +G01 X+11.1 Y-21.835 B11.626 C191.633 +G01 X+11.058 Y-21.605 B11.623 C190.158 +G01 X+11.017 Y-21.375 B11.626 C188.683 +G01 X+10.988 Y-21.142 B11.623 C187.208 +G01 X+10.958 Y-20.91 B11.626 C185.733 +G01 X+10.941 Y-20.677 C184.257 +G01 X+10.923 Y-20.444 C182.783 +G01 X+10.918 Y-20.21 C181.307 +G01 X+10.913 Y-19.976 C179.832 +G01 X+10.919 Y-19.742 C178.357 +G01 X+10.926 Y-19.508 B11.627 C176.882 +G01 X+10.944 Y-19.275 C175.407 +G01 X+10.963 Y-19.042 C173.932 +G01 X+10.994 Y-18.81 C172.457 +G01 X+11.025 Y-18.578 C170.982 +G01 X+11.067 Y-18.347 C169.507 +G01 X+11.11 Y-18.117 C168.032 +G01 X+11.164 Y-17.89 C166.557 +G01 X+11.218 Y-17.662 C165.082 +G01 X+11.284 Y-17.438 C163.606 +G01 X+11.35 Y-17.213 C162.131 +G01 X+11.428 Y-16.992 C160.656 +G01 X+11.505 Y-16.772 C159.181 +G01 X+11.594 Y-16.555 C157.706 +G01 X+11.683 Y-16.339 C156.231 +G01 X+11.782 Y-16.127 B11.623 C154.756 +G01 X+11.882 Y-15.915 B11.626 C153.281 +G01 X+11.993 Y-15.709 B11.623 C151.806 +G01 X+12.103 Y-15.503 B11.626 C150.331 +G01 X+12.286 Y-15.2 B11.623 C148.088 +G01 X+12.345 Y-15.102 B11.626 C147.38 +G01 X+12.54 Y-14.815 B11.623 C145.184 +G01 X+12.608 Y-14.715 B11.626 C144.43 +G01 X+12.812 Y-14.444 B11.623 C142.281 +G01 X+12.889 Y-14.341 B11.626 C141.48 +G01 X+13.103 Y-14.087 B11.623 C139.377 +G01 X+13.19 Y-13.983 B11.626 C138.53 +G01 X+13.349 Y-13.811 C137.055 +G01 X+13.509 Y-13.64 C135.58 +G01 X+13.677 Y-13.477 B11.622 C134.104 +G01 X+13.845 Y-13.314 B11.626 C132.629 +G01 X+14.021 Y-13.16 B11.622 C131.154 +G01 X+14.197 Y-13.006 B11.626 C129.679 +G01 X+14.381 Y-12.862 B11.622 C128.204 +G01 X+14.565 Y-12.717 B11.626 C126.729 +G01 X+14.757 Y-12.581 B11.622 C125.25 +G01 X+14.949 Y-12.446 B11.626 C123.772 +G01 X+15.146 Y-12.321 B11.622 C122.301 +G01 X+15.343 Y-12.197 B11.626 C120.831 +G01 X+15.547 Y-12.082 B11.622 C119.354 +G01 X+15.75 Y-11.967 B11.626 C117.876 +G01 X+15.96 Y-11.863 B11.622 C116.398 +G01 X+16.17 Y-11.759 B11.626 C114.921 +G01 X+16.384 Y-11.666 B11.622 C113.443 +G01 X+16.599 Y-11.573 B11.626 C111.965 +G01 X+16.827 Y-11.488 Z-1.426 B11.622 C110.431 +G01 X+17.054 Y-11.404 Z-1.427 B11.626 C108.897 +G01 X+17.274 Y-11.334 Z-1.426 B11.622 C107.445 +G01 X+17.493 Y-11.265 Z-1.427 B11.626 C105.994 +G01 X+17.715 Y-11.208 B11.622 C104.551 +G01 X+17.936 Y-11.15 B11.626 C103.108 +G01 X+18.165 Y-11.103 B11.622 C101.633 +G01 X+18.395 Y-11.055 B11.626 C100.158 +G01 X+18.626 Y-11.02 B11.623 C98.683 +G01 X+18.857 Y-10.985 B11.626 C97.208 +G01 X+19.09 Y-10.961 B11.623 C95.733 +G01 X+19.323 Y-10.938 B11.626 C94.257 +G01 X+19.556 Y-10.926 C92.783 +G01 X+19.79 Y-10.915 C91.307 +G01 X+20.024 C89.832 +G01 X+20.258 Y-10.916 C88.357 +G01 X+20.492 Y-10.929 B11.627 C86.882 +G01 X+20.725 Y-10.942 C85.407 +G01 X+20.958 Y-10.966 C83.932 +G01 X+21.191 Y-10.991 C82.457 +G01 X+21.422 Y-11.027 C80.982 +G01 X+21.653 Y-11.064 C79.507 +G01 X+21.882 Y-11.112 C78.032 +G01 X+22.111 Y-11.161 C76.557 +G01 X+22.337 Y-11.221 C75.082 +G01 X+22.563 Y-11.281 C73.606 +G01 X+22.786 Y-11.353 C72.131 +G01 X+23.008 Y-11.425 C70.656 +G01 X+23.227 Y-11.508 C69.181 +G01 X+23.446 Y-11.591 C67.706 +G01 X+23.66 Y-11.685 B11.623 C66.231 +G01 X+23.874 Y-11.78 B11.626 C64.756 +G01 X+24.083 Y-11.885 B11.623 C63.281 +G01 X+24.292 Y-11.99 B11.626 C61.806 +G01 X+24.603 Y-12.167 B11.623 C59.539 +G01 X+24.699 Y-12.222 B11.626 C58.855 +G01 X+24.994 Y-12.411 B11.623 C56.636 +G01 X+25.093 Y-12.474 B11.626 C55.905 +G01 X+25.372 Y-12.673 B11.623 C53.732 +G01 X+25.474 Y-12.746 B11.626 C52.955 +G01 X+25.736 Y-12.955 B11.623 C50.829 +G01 X+25.84 Y-13.037 B11.626 C50.005 +G01 X+26.086 Y-13.255 B11.623 C47.926 +G01 X+26.191 Y-13.347 B11.626 C47.055 +G01 X+26.358 Y-13.511 C45.58 +G01 X+26.525 Y-13.675 C44.105 +G01 X+26.683 Y-13.847 B11.622 C42.63 +G01 X+26.842 Y-14.019 B11.626 C41.154 +G01 X+26.991 Y-14.199 B11.622 C39.679 +G01 X+27.141 Y-14.379 B11.626 C38.204 +G01 X+27.281 Y-14.567 B11.622 C36.729 +G01 X+27.42 Y-14.754 B11.626 C35.254 +G01 X+27.551 Y-14.949 C33.781 +G01 X+27.681 Y-15.143 C32.309 +G01 X+27.801 Y-15.344 B11.622 C30.831 +G01 X+27.92 Y-15.545 B11.626 C29.354 +G01 X+28.03 Y-15.752 B11.622 C27.876 +G01 X+28.139 Y-15.959 B11.626 C26.398 +G01 X+28.238 Y-16.171 B11.622 C24.921 +G01 X+28.337 Y-16.383 B11.626 C23.443 +G01 X+28.424 Y-16.6 B11.622 C21.965 +G01 X+28.512 Y-16.817 B11.626 C20.488 +G01 X+28.59 Y-17.045 Z-1.426 B11.622 C18.967 +G01 X+28.668 Y-17.273 Z-1.427 B11.626 C17.445 +G01 X+28.732 Y-17.494 Z-1.426 B11.622 C15.994 +G01 X+28.795 Y-17.715 Z-1.427 B11.626 C14.542 +G01 X+28.848 Y-17.94 B11.622 C13.088 +G01 X+28.9 Y-18.165 B11.626 C11.633 +G01 X+28.942 Y-18.395 B11.623 C10.158 +G01 X+28.983 Y-18.625 B11.626 C8.683 +G01 X+29.012 Y-18.857 B11.623 C7.208 +G01 X+29.042 Y-19.09 B11.626 C5.733 +G01 X+29.059 Y-19.323 C4.257 +G01 X+29.077 Y-19.556 C2.783 +G01 X+29.082 Y-19.79 C1.307 +G01 X+29.087 Y-20.024 C359.832 +G01 X+29.081 Y-20.258 C358.357 +G01 X+29.074 Y-20.492 B11.627 C356.882 +G01 X+29.056 Y-20.725 C355.407 +G01 X+29.037 Y-20.958 C353.932 +G01 X+29.006 Y-21.19 C352.457 +G01 X+28.975 Y-21.422 C350.982 +G01 X+28.933 Y-21.652 C349.507 +G01 X+28.89 Y-21.882 C348.032 +G01 X+28.836 Y-22.11 C346.557 +G01 X+28.782 Y-22.338 C345.082 +G01 X+28.716 Y-22.562 C343.606 +G01 X+28.65 Y-22.787 C342.131 +G01 X+28.572 Y-23.007 C340.656 +G01 X+28.495 Y-23.228 C339.181 +G01 X+28.406 Y-23.445 C337.706 +G01 X+28.317 Y-23.661 C336.231 +G01 X+28.218 Y-23.873 B11.623 C334.756 +G01 X+28.118 Y-24.084 B11.626 C333.281 +G01 X+28.007 Y-24.291 B11.623 C331.806 +G01 X+27.897 Y-24.497 B11.626 C330.331 +G01 X+27.714 Y-24.8 B11.623 C328.088 +G01 X+27.655 Y-24.897 B11.626 C327.38 +G01 X+27.46 Y-25.185 B11.623 C325.184 +G01 X+27.392 Y-25.285 B11.626 C324.43 +G01 X+27.188 Y-25.556 B11.623 C322.281 +G01 X+27.111 Y-25.659 B11.626 C321.48 +G01 X+26.897 Y-25.913 B11.623 C319.377 +G01 X+26.81 Y-26.017 B11.626 C318.53 +G01 X+26.651 Y-26.188 C317.055 +G01 X+26.491 Y-26.36 C315.58 +G01 X+26.323 Y-26.523 B11.622 C314.104 +G01 X+26.155 Y-26.685 B11.626 C312.629 +G01 X+25.979 Y-26.84 B11.622 C311.154 +G01 X+25.803 Y-26.993 B11.626 C309.679 +G01 X+25.619 Y-27.138 B11.622 C308.204 +G01 X+25.435 Y-27.283 B11.626 C306.729 +G01 X+25.243 Y-27.418 B11.622 C305.25 +G01 X+25.051 Y-27.554 B11.626 C303.772 +G01 X+24.854 Y-27.679 B11.622 C302.301 +G01 X+24.657 Y-27.803 B11.626 C300.831 +G01 X+24.454 Y-27.918 B11.622 C299.354 +G01 X+24.25 Y-28.032 B11.626 C297.876 +G01 X+24.04 Y-28.137 B11.622 C296.398 +G01 X+23.83 Y-28.241 B11.626 C294.921 +G01 X+23.616 Y-28.334 B11.622 C293.443 +G01 X+23.401 Y-28.427 B11.626 C291.965 +G01 X+23.173 Y-28.512 Z-1.426 B11.622 C290.431 +G01 X+22.946 Y-28.596 Z-1.427 B11.626 C288.897 +G01 X+22.726 Y-28.665 Z-1.426 B11.622 C287.445 +G01 X+22.507 Y-28.735 Z-1.427 B11.626 C285.994 +G01 X+22.285 Y-28.792 B11.622 C284.551 +G01 X+22.064 Y-28.85 B11.626 C283.108 +G01 X+21.835 Y-28.897 B11.622 C281.633 +G01 X+21.605 Y-28.944 B11.626 C280.158 +G01 X+21.374 Y-28.98 B11.623 C278.683 +G01 X+21.143 Y-29.015 B11.626 C277.208 +G01 X+20.91 Y-29.039 B11.623 C275.733 +G01 X+20.677 Y-29.062 B11.626 C274.257 +G01 X+20.444 Y-29.074 C272.783 +G01 X+20.21 Y-29.085 C271.307 +G01 X+19.976 Y-29.084 C269.832 +G01 X+19.742 C268.357 +G01 X+19.508 Y-29.071 B11.627 C266.882 +G01 X+19.275 Y-29.058 C265.407 +G01 X+19.042 Y-29.034 C263.932 +G01 X+18.809 Y-29.009 C262.457 +G01 X+18.578 Y-28.972 C260.982 +G01 X+18.347 Y-28.936 C259.507 +G01 X+18.118 Y-28.887 C258.032 +G01 X+17.889 Y-28.839 C256.557 +G01 X+17.663 Y-28.779 C255.082 +G01 X+17.437 Y-28.718 C253.606 +G01 X+17.214 Y-28.647 C252.131 +G01 X+16.992 Y-28.575 C250.656 +G01 X+16.773 Y-28.492 C249.181 +G01 X+16.554 Y-28.409 C247.706 +G01 X+16.34 Y-28.315 B11.623 C246.234 +G01 X+16.127 Y-28.22 B11.626 C244.761 +G01 X+15.879 Y-28.096 B11.622 C243.056 +G01 X+15.632 Y-27.971 Z-1.428 B11.628 C241.352 +G01 X+15.289 Y-27.772 Z-1.427 C238.768 +G01 X+15.006 Y-27.59 B11.624 C236.637 +G01 X+14.902 Y-27.523 B11.627 C235.867 +G01 X+14.628 Y-27.327 B11.623 C233.733 +G01 X+14.526 Y-27.254 B11.626 C232.956 +G01 X+14.264 Y-27.045 B11.623 C230.829 +G01 X+14.16 Y-26.962 B11.626 C230.005 +G01 X+13.985 Y-26.808 B11.622 C228.53 +G01 X+13.809 Y-26.653 B11.626 C227.055 +G01 X+13.589 Y-26.437 B11.623 C225.099 +G01 Y-26.304 Z-1.407 B11.502 C224.502 +G01 X+13.544 Y-26.26 Z-1.408 B11.503 C224.112 +G01 X+13.387 Y-26.09 Z-1.407 B11.499 C222.637 +G01 X+13.23 Y-25.92 Z-1.408 B11.503 C221.163 +G01 X+13.083 Y-25.742 Z-1.407 B11.499 C219.688 +G01 X+12.935 Y-25.563 Z-1.408 B11.503 C218.213 +G01 X+12.796 Y-25.378 Z-1.407 B11.499 C216.738 +G01 X+12.658 Y-25.192 Z-1.408 B11.503 C215.263 +G01 X+12.529 Y-25 Z-1.407 B11.499 C213.791 +G01 X+12.4 Y-24.807 Z-1.408 B11.503 C212.32 +G01 X+12.281 Y-24.609 Z-1.407 B11.499 C210.842 +G01 X+12.163 Y-24.41 Z-1.408 B11.503 C209.365 +G01 X+12.054 Y-24.205 Z-1.407 B11.499 C207.887 +G01 X+11.946 Y-24.001 Z-1.408 B11.503 C206.41 +G01 X+11.848 Y-23.791 Z-1.407 B11.499 C204.933 +G01 X+11.751 Y-23.581 Z-1.408 B11.503 C203.455 +G01 X+11.664 Y-23.366 Z-1.407 B11.499 C201.978 +G01 X+11.577 Y-23.151 Z-1.408 B11.503 C200.501 +G01 X+11.439 Y-22.749 B11.501 C197.804 +G01 X+11.426 Y-22.713 B11.503 C197.546 +G01 X+11.362 Y-22.491 Z-1.407 B11.499 C196.069 +G01 X+11.298 Y-22.268 Z-1.408 B11.503 C194.591 +G01 X+11.245 Y-22.043 Z-1.407 B11.499 C193.114 +G01 X+11.193 Y-21.818 Z-1.408 B11.503 C191.637 +G01 X+11.151 Y-21.582 Z-1.407 B11.499 C190.109 +G01 X+11.109 Y-21.346 Z-1.408 B11.503 C188.582 +G01 X+11.08 Y-21.12 Z-1.407 B11.499 C187.13 +G01 X+11.052 Y-20.894 Z-1.408 B11.503 C185.679 +G01 X+11.035 Y-20.667 Z-1.407 B11.5 C184.227 +G01 X+11.018 Y-20.439 Z-1.408 B11.503 C182.776 +G01 X+11.012 Y-20.209 Z-1.407 B11.5 C181.304 +G01 X+11.007 Y-19.978 Z-1.408 B11.503 C179.833 +G01 X+11.014 Y-19.746 Z-1.407 C178.358 +G01 X+11.02 Y-19.515 Z-1.408 C176.883 +G01 X+11.039 Y-19.284 Z-1.407 C175.408 +G01 X+11.057 Y-19.053 Z-1.408 C173.933 +G01 X+11.087 Y-18.823 Z-1.407 C172.458 +G01 X+11.118 Y-18.594 Z-1.408 B11.504 C170.984 +G01 X+11.16 Y-18.366 Z-1.407 B11.503 C169.509 +G01 X+11.202 Y-18.139 Z-1.408 B11.504 C168.034 +G01 X+11.256 Y-17.913 Z-1.407 C166.559 +G01 X+11.309 Y-17.688 Z-1.408 C165.084 +G01 X+11.375 Y-17.466 Z-1.407 C163.609 +G01 X+11.44 Y-17.244 Z-1.408 C162.135 +G01 X+11.516 Y-17.025 Z-1.407 C160.659 +G01 X+11.593 Y-16.807 Z-1.408 C159.185 +G01 X+11.681 Y-16.592 Z-1.407 C157.71 +G01 X+11.769 Y-16.378 Z-1.408 C156.235 +G01 X+11.867 Y-16.169 Z-1.407 B11.5 C154.76 +G01 X+11.966 Y-15.959 Z-1.408 B11.503 C153.285 +G01 X+12.075 Y-15.755 Z-1.407 B11.5 C151.811 +G01 X+12.185 Y-15.551 Z-1.408 B11.503 C150.336 +G01 X+12.379 Y-15.23 Z-1.407 B11.501 C147.934 +G01 X+12.424 Y-15.155 Z-1.408 B11.503 C147.386 +G01 X+12.63 Y-14.85 Z-1.407 B11.501 C145.031 +G01 X+12.684 Y-14.771 Z-1.408 B11.503 C144.436 +G01 X+12.9 Y-14.484 Z-1.407 B11.501 C142.127 +G01 X+12.962 Y-14.401 Z-1.408 B11.503 C141.487 +G01 X+13.189 Y-14.131 Z-1.407 B11.501 C139.224 +G01 X+13.26 Y-14.047 Z-1.408 B11.503 C138.537 +G01 X+13.495 Y-13.794 Z-1.407 B11.5 C136.32 +G01 X+13.575 Y-13.707 Z-1.408 B11.503 C135.587 +G01 X+13.742 Y-13.546 Z-1.407 C134.112 +G01 X+13.908 Y-13.385 Z-1.408 C132.638 +G01 X+14.082 Y-13.233 Z-1.407 B11.499 C131.163 +G01 X+14.256 Y-13.08 Z-1.408 B11.503 C129.688 +G01 X+14.438 Y-12.937 Z-1.407 B11.499 C128.213 +G01 X+14.62 Y-12.794 Z-1.408 B11.503 C126.738 +G01 X+14.809 Y-12.66 Z-1.407 B11.499 C125.263 +G01 X+14.998 Y-12.526 Z-1.408 B11.503 C123.788 +G01 X+15.194 Y-12.402 Z-1.407 C122.315 +G01 X+15.39 Y-12.279 Z-1.408 C120.842 +G01 X+15.592 Y-12.165 Z-1.407 B11.499 C119.365 +G01 X+15.793 Y-12.052 Z-1.408 B11.503 C117.888 +G01 X+16.001 Y-11.949 Z-1.407 B11.499 C116.41 +G01 X+16.208 Y-11.846 Z-1.408 B11.503 C114.933 +G01 X+16.42 Y-11.753 Z-1.407 B11.499 C113.455 +G01 X+16.633 Y-11.661 Z-1.408 B11.503 C111.978 +G01 X+16.85 Y-11.58 Z-1.407 B11.499 C110.501 +G01 X+17.067 Y-11.499 Z-1.408 B11.503 C109.023 +G01 X+17.287 Y-11.429 Z-1.407 B11.499 C107.546 +G01 X+17.508 Y-11.359 Z-1.408 B11.503 C106.069 +G01 X+17.732 Y-11.301 Z-1.407 C104.591 +G01 X+17.956 Y-11.242 Z-1.408 C103.114 +G01 X+18.193 Y-11.194 Z-1.407 B11.499 C101.573 +G01 X+18.429 Y-11.146 Z-1.408 B11.503 C100.033 +G01 X+18.655 Y-11.112 Z-1.407 B11.499 C98.582 +G01 X+18.88 Y-11.077 Z-1.408 B11.503 C97.13 +G01 X+19.328 Y-11.032 C94.257 +G01 X+19.56 Y-11.021 Z-1.407 C92.782 +G01 X+19.791 Y-11.01 Z-1.408 C91.307 +G01 X+20.022 Z-1.407 C89.833 +G01 X+20.254 Y-11.011 Z-1.408 C88.358 +G01 X+20.485 Y-11.023 Z-1.407 C86.883 +G01 X+20.716 Y-11.036 Z-1.408 C85.408 +G01 X+20.947 Y-11.06 Z-1.407 C83.933 +G01 X+21.177 Y-11.084 Z-1.408 B11.504 C82.458 +G01 X+21.406 Y-11.121 Z-1.407 B11.503 C80.984 +G01 X+21.634 Y-11.157 Z-1.408 C79.509 +G01 X+21.861 Y-11.205 Z-1.407 B11.504 C78.034 +G01 X+22.087 Y-11.253 Z-1.408 C76.559 +G01 X+22.311 Y-11.312 Z-1.407 C75.084 +G01 X+22.535 Y-11.372 Z-1.408 C73.609 +G01 X+22.755 Y-11.443 Z-1.407 C72.135 +G01 X+22.976 Y-11.514 Z-1.408 C70.659 +G01 X+23.192 Y-11.596 Z-1.407 C69.185 +G01 X+23.409 Y-11.678 Z-1.408 C67.71 +G01 X+23.621 Y-11.771 Z-1.407 B11.5 C66.235 +G01 X+23.832 Y-11.865 Z-1.408 B11.503 C64.76 +G01 X+24.039 Y-11.969 Z-1.407 B11.5 C63.286 +G01 X+24.246 Y-12.073 Z-1.408 B11.503 C61.81 +G01 X+24.575 Y-12.26 Z-1.407 B11.501 C59.386 +G01 X+24.649 Y-12.302 Z-1.408 B11.503 C58.861 +G01 X+24.961 Y-12.502 Z-1.407 B11.501 C56.482 +G01 X+25.039 Y-12.551 Z-1.408 B11.503 C55.911 +G01 X+25.335 Y-12.763 Z-1.407 B11.501 C53.579 +G01 X+25.415 Y-12.821 Z-1.408 B11.503 C52.961 +G01 X+25.694 Y-13.042 Z-1.407 B11.501 C50.675 +G01 X+25.778 Y-13.109 Z-1.408 B11.503 C50.012 +G01 X+26.039 Y-13.34 Z-1.407 B11.501 C47.772 +G01 X+26.125 Y-13.415 Z-1.408 B11.503 C47.062 +G01 X+26.369 Y-13.654 Z-1.407 B11.5 C44.869 +G01 X+26.456 Y-13.74 Z-1.408 B11.503 C44.112 +G01 X+26.613 Y-13.91 Z-1.407 C42.638 +G01 X+26.77 Y-14.08 Z-1.408 C41.163 +G01 X+26.918 Y-14.258 Z-1.407 B11.499 C39.688 +G01 X+27.065 Y-14.436 Z-1.408 B11.503 C38.213 +G01 X+27.204 Y-14.622 Z-1.407 B11.499 C36.738 +G01 X+27.342 Y-14.808 Z-1.408 B11.503 C35.263 +G01 X+27.471 Y-15 Z-1.407 B11.499 C33.791 +G01 X+27.6 Y-15.192 Z-1.408 B11.503 C32.32 +G01 X+27.719 Y-15.391 Z-1.407 B11.499 C30.842 +G01 X+27.837 Y-15.59 Z-1.408 B11.503 C29.365 +G01 X+27.946 Y-15.795 Z-1.407 B11.499 C27.887 +G01 X+28.054 Y-15.999 Z-1.408 B11.503 C26.41 +G01 X+28.152 Y-16.209 Z-1.407 B11.499 C24.933 +G01 X+28.249 Y-16.419 Z-1.408 B11.503 C23.455 +G01 X+28.336 Y-16.634 Z-1.407 B11.499 C21.978 +G01 X+28.423 Y-16.849 Z-1.408 B11.503 C20.501 +G01 X+28.561 Y-17.251 B11.501 C17.804 +G01 X+28.574 Y-17.286 B11.503 C17.546 +G01 X+28.638 Y-17.509 Z-1.407 B11.499 C16.069 +G01 X+28.702 Y-17.731 Z-1.408 B11.503 C14.591 +G01 X+28.755 Y-17.957 Z-1.407 B11.499 C13.114 +G01 X+28.807 Y-18.182 Z-1.408 B11.503 C11.637 +G01 X+28.849 Y-18.418 Z-1.407 B11.499 C10.109 +G01 X+28.891 Y-18.654 Z-1.408 B11.503 C8.582 +G01 X+28.92 Y-18.88 Z-1.407 B11.499 C7.13 +G01 X+28.948 Y-19.106 Z-1.408 B11.503 C5.679 +G01 X+28.965 Y-19.333 Z-1.407 B11.5 C4.227 +G01 X+28.982 Y-19.56 Z-1.408 B11.503 C2.776 +G01 X+28.988 Y-19.791 Z-1.407 B11.5 C1.304 +G01 X+28.993 Y-20.022 Z-1.408 B11.503 C359.833 +G01 X+28.986 Y-20.254 Z-1.407 C358.358 +G01 X+28.98 Y-20.485 Z-1.408 C356.883 +G01 X+28.961 Y-20.716 Z-1.407 C355.408 +G01 X+28.943 Y-20.947 Z-1.408 C353.933 +G01 X+28.913 Y-21.176 Z-1.407 C352.458 +G01 X+28.882 Y-21.406 Z-1.408 B11.504 C350.984 +G01 X+28.84 Y-21.634 Z-1.407 B11.503 C349.509 +G01 X+28.798 Y-21.861 Z-1.408 B11.504 C348.034 +G01 X+28.744 Y-22.087 Z-1.407 C346.559 +G01 X+28.691 Y-22.312 Z-1.408 C345.084 +G01 X+28.625 Y-22.534 Z-1.407 C343.609 +G01 X+28.56 Y-22.756 Z-1.408 C342.135 +G01 X+28.484 Y-22.975 Z-1.407 C340.659 +G01 X+28.407 Y-23.193 Z-1.408 C339.185 +G01 X+28.319 Y-23.407 Z-1.407 C337.71 +G01 X+28.231 Y-23.622 Z-1.408 C336.235 +G01 X+28.133 Y-23.831 Z-1.407 B11.5 C334.76 +G01 X+28.034 Y-24.041 Z-1.408 B11.503 C333.285 +G01 X+27.925 Y-24.245 Z-1.407 B11.5 C331.811 +G01 X+27.815 Y-24.449 Z-1.408 B11.503 C330.336 +G01 X+27.621 Y-24.77 Z-1.407 B11.501 C327.934 +G01 X+27.576 Y-24.845 Z-1.408 B11.503 C327.386 +G01 X+27.37 Y-25.15 Z-1.407 B11.501 C325.031 +G01 X+27.316 Y-25.229 Z-1.408 B11.503 C324.436 +G01 X+27.1 Y-25.516 Z-1.407 B11.501 C322.127 +G01 X+27.038 Y-25.598 Z-1.408 B11.503 C321.487 +G01 X+26.811 Y-25.869 Z-1.407 B11.501 C319.224 +G01 X+26.74 Y-25.953 Z-1.408 B11.503 C318.537 +G01 X+26.505 Y-26.206 Z-1.407 B11.5 C316.32 +G01 X+26.425 Y-26.292 Z-1.408 B11.503 C315.587 +G01 X+26.258 Y-26.454 Z-1.407 C314.112 +G01 X+26.092 Y-26.615 Z-1.408 C312.638 +G01 X+25.918 Y-26.767 Z-1.407 B11.499 C311.163 +G01 X+25.744 Y-26.92 Z-1.408 B11.503 C309.688 +G01 X+25.562 Y-27.063 Z-1.407 B11.499 C308.213 +G01 X+25.38 Y-27.206 Z-1.408 B11.503 C306.738 +G01 X+25.191 Y-27.34 Z-1.407 B11.499 C305.263 +G01 X+25.002 Y-27.474 Z-1.408 B11.503 C303.788 +G01 X+24.806 Y-27.597 Z-1.407 C302.315 +G01 X+24.61 Y-27.721 Z-1.408 C300.842 +G01 X+24.408 Y-27.835 Z-1.407 B11.499 C299.365 +G01 X+24.207 Y-27.948 Z-1.408 B11.503 C297.888 +G01 X+23.999 Y-28.051 Z-1.407 B11.499 C296.41 +G01 X+23.792 Y-28.154 Z-1.408 B11.503 C294.933 +G01 X+23.58 Y-28.246 Z-1.407 B11.499 C293.455 +G01 X+23.367 Y-28.339 Z-1.408 B11.503 C291.978 +G01 X+23.15 Y-28.42 Z-1.407 B11.499 C290.501 +G01 X+22.933 Y-28.501 Z-1.408 B11.503 C289.023 +G01 X+22.713 Y-28.571 Z-1.407 B11.499 C287.546 +G01 X+22.492 Y-28.641 Z-1.408 B11.503 C286.069 +G01 X+22.268 Y-28.699 Z-1.407 C284.591 +G01 X+22.044 Y-28.757 Z-1.408 C283.114 +G01 X+21.807 Y-28.806 Z-1.407 B11.499 C281.573 +G01 X+21.571 Y-28.854 Z-1.408 B11.503 C280.033 +G01 X+21.345 Y-28.888 Z-1.407 B11.499 C278.582 +G01 X+21.12 Y-28.922 Z-1.408 B11.503 C277.13 +G01 X+20.672 Y-28.968 C274.257 +G01 X+20.44 Y-28.979 Z-1.407 C272.782 +G01 X+20.209 Y-28.99 Z-1.408 C271.307 +G01 X+19.978 Z-1.407 C269.833 +G01 X+19.746 Y-28.989 Z-1.408 C268.358 +G01 X+19.515 Y-28.977 Z-1.407 C266.883 +G01 X+19.284 Y-28.964 Z-1.408 C265.408 +G01 X+19.053 Y-28.94 Z-1.407 C263.933 +G01 X+18.823 Y-28.915 Z-1.408 B11.504 C262.458 +G01 X+18.594 Y-28.879 Z-1.407 B11.503 C260.984 +G01 X+18.366 Y-28.843 Z-1.408 C259.509 +G01 X+18.139 Y-28.795 Z-1.407 B11.504 C258.034 +G01 X+17.913 Y-28.747 Z-1.408 C256.559 +G01 X+17.689 Y-28.688 Z-1.407 C255.084 +G01 X+17.465 Y-28.628 Z-1.408 C253.609 +G01 X+17.245 Y-28.557 Z-1.407 C252.135 +G01 X+17.024 Y-28.486 Z-1.408 C250.659 +G01 X+16.808 Y-28.404 Z-1.407 C249.185 +G01 X+16.591 Y-28.322 Z-1.408 C247.71 +G01 X+16.38 Y-28.229 Z-1.407 C246.238 +G01 X+16.168 Y-28.136 Z-1.408 B11.503 C244.765 +G01 X+15.922 Y-28.012 Z-1.407 B11.499 C243.058 +G01 X+15.677 Y-27.888 Z-1.408 B11.505 C241.352 +G01 X+15.339 Y-27.692 C238.772 +G01 X+15.039 Y-27.499 Z-1.407 B11.502 C236.483 +G01 X+14.956 Y-27.445 Z-1.408 B11.504 C235.87 +G01 X+14.665 Y-27.237 Z-1.407 B11.501 C233.579 +G01 X+14.585 Y-27.179 Z-1.408 B11.503 C232.963 +G01 X+14.306 Y-26.957 Z-1.407 B11.501 C230.675 +G01 X+14.222 Y-26.891 Z-1.408 B11.503 C230.012 +G01 X+14.049 Y-26.738 Z-1.407 B11.499 C228.537 +G01 X+13.875 Y-26.584 Z-1.408 B11.503 C227.062 +G01 X+13.656 Y-26.37 Z-1.407 B11.5 C225.1 +G01 Y-26.237 Z-1.388 B11.379 C224.49 +G01 X+13.613 Y-26.196 Z-1.389 B11.38 C224.12 +G01 X+13.458 Y-26.027 Z-1.388 B11.376 C222.646 +G01 X+13.303 Y-25.859 Z-1.389 B11.38 C221.171 +G01 X+13.156 Y-25.682 Z-1.388 B11.376 C219.696 +G01 X+13.01 Y-25.506 Z-1.389 B11.38 C218.222 +G01 X+12.873 Y-25.323 Z-1.388 B11.376 C216.747 +G01 X+12.736 Y-25.139 Z-1.389 B11.38 C215.272 +G01 X+12.608 Y-24.948 Z-1.388 B11.376 C213.796 +G01 X+12.48 Y-24.757 Z-1.389 B11.38 C212.32 +G01 X+12.363 Y-24.561 Z-1.388 B11.376 C210.848 +G01 X+12.246 Y-24.365 Z-1.389 B11.38 C209.376 +G01 X+12.139 Y-24.162 Z-1.388 B11.376 C207.899 +G01 X+12.032 Y-23.96 Z-1.389 B11.38 C206.422 +G01 X+11.935 Y-23.752 Z-1.388 B11.376 C204.945 +G01 X+11.838 Y-23.544 Z-1.389 B11.38 C203.468 +G01 X+11.752 Y-23.332 Z-1.388 B11.376 C201.991 +G01 X+11.667 Y-23.119 Z-1.389 B11.38 C200.513 +G01 X+11.529 Y-22.72 Z-1.388 B11.378 C197.804 +G01 X+11.517 Y-22.686 Z-1.389 B11.38 C197.559 +G01 X+11.402 Y-22.288 Z-1.388 B11.378 C194.901 +G01 X+11.39 Y-22.246 Z-1.389 B11.38 C194.605 +G01 X+11.297 Y-21.849 Z-1.388 B11.378 C191.997 +G01 X+11.286 Y-21.8 Z-1.389 B11.38 C191.651 +G01 X+11.245 Y-21.574 Z-1.388 B11.377 C190.174 +G01 X+11.205 Y-21.349 Z-1.389 B11.38 C188.697 +G01 X+11.176 Y-21.122 Z-1.388 B11.377 C187.22 +G01 X+11.147 Y-20.894 Z-1.389 B11.38 C185.743 +G01 X+11.13 Y-20.666 Z-1.388 C184.266 +G01 X+11.113 Y-20.437 Z-1.389 C182.789 +G01 X+11.107 Y-20.199 Z-1.388 B11.376 C181.253 +G01 X+11.102 Y-19.961 B11.38 C179.718 +G01 X+11.116 Y-19.51 C176.815 +G01 X+11.151 Y-19.065 Z-1.389 C173.934 +G01 X+11.181 Y-18.837 Z-1.388 C172.46 +G01 X+11.211 Y-18.61 Z-1.389 C170.985 +G01 X+11.253 Y-18.385 Z-1.388 C169.51 +G01 X+11.294 Y-18.16 Z-1.389 C168.036 +G01 X+11.347 Y-17.937 Z-1.388 C166.561 +G01 X+11.4 Y-17.714 Z-1.389 C165.087 +G01 X+11.465 Y-17.494 Z-1.388 C163.612 +G01 X+11.53 Y-17.274 Z-1.389 B11.381 C162.137 +G01 X+11.605 Y-17.058 Z-1.388 C160.663 +G01 X+11.681 Y-16.842 Z-1.389 C159.188 +G01 X+11.768 Y-16.63 Z-1.388 C157.714 +G01 X+11.855 Y-16.418 Z-1.389 C156.239 +G01 X+11.952 Y-16.21 Z-1.388 C154.764 +G01 X+12.05 Y-16.003 Z-1.389 B11.38 C153.29 +G01 X+12.158 Y-15.801 Z-1.388 B11.377 C151.815 +G01 X+12.266 Y-15.599 Z-1.389 B11.38 C150.341 +G01 X+12.385 Y-15.403 Z-1.388 B11.377 C148.866 +G01 X+12.503 Y-15.207 Z-1.389 B11.38 C147.391 +G01 X+12.721 Y-14.885 Z-1.388 B11.378 C144.877 +G01 X+12.76 Y-14.827 Z-1.389 B11.38 C144.442 +G01 X+12.989 Y-14.523 Z-1.388 B11.378 C141.974 +G01 X+13.036 Y-14.462 Z-1.389 B11.38 C141.493 +G01 X+13.276 Y-14.175 Z-1.388 B11.378 C139.07 +G01 X+13.33 Y-14.11 Z-1.389 B11.38 C138.544 +G01 X+13.579 Y-13.842 Z-1.388 B11.378 C136.167 +G01 X+13.642 Y-13.775 Z-1.389 B11.38 C135.595 +G01 X+13.9 Y-13.525 Z-1.388 B11.378 C133.263 +G01 X+13.971 Y-13.456 Z-1.389 B11.38 C132.645 +G01 X+14.143 Y-13.305 Z-1.388 B11.376 C131.171 +G01 X+14.316 Y-13.154 Z-1.389 B11.38 C129.696 +G01 X+14.496 Y-13.012 Z-1.388 B11.376 C128.222 +G01 X+14.676 Y-12.87 Z-1.389 B11.38 C126.747 +G01 X+14.863 Y-12.738 Z-1.388 B11.376 C125.273 +G01 X+15.05 Y-12.606 Z-1.389 B11.38 C123.798 +G01 X+15.243 Y-12.483 Z-1.388 C122.325 +G01 X+15.437 Y-12.361 Z-1.389 C120.853 +G01 X+15.637 Y-12.248 Z-1.388 B11.376 C119.376 +G01 X+15.836 Y-12.136 Z-1.389 B11.38 C117.899 +G01 X+16.041 Y-12.034 Z-1.388 B11.376 C116.422 +G01 X+16.247 Y-11.932 Z-1.389 B11.38 C114.945 +G01 X+16.457 Y-11.841 Z-1.388 B11.376 C113.468 +G01 X+16.667 Y-11.75 Z-1.389 B11.38 C111.991 +G01 X+16.881 Y-11.669 Z-1.388 B11.376 C110.513 +G01 X+17.096 Y-11.589 Z-1.389 B11.38 C109.037 +G01 X+17.495 Y-11.463 Z-1.388 B11.378 C106.352 +G01 X+17.533 Y-11.451 Z-1.389 B11.38 C106.082 +G01 X+17.931 Y-11.347 Z-1.388 B11.378 C103.449 +G01 X+17.976 Y-11.335 Z-1.389 B11.38 C103.128 +G01 X+18.201 Y-11.289 Z-1.388 B11.377 C101.651 +G01 X+18.425 Y-11.242 Z-1.389 B11.38 C100.174 +G01 X+18.651 Y-11.207 Z-1.388 B11.377 C98.697 +G01 X+18.878 Y-11.173 Z-1.389 B11.38 C97.22 +G01 X+19.106 Y-11.15 Z-1.388 C95.743 +G01 X+19.334 Y-11.127 Z-1.389 C94.266 +G01 X+19.563 Y-11.115 Z-1.388 C92.789 +G01 X+19.791 Y-11.104 Z-1.389 C91.311 +G01 X+20.028 Y-11.105 Z-1.388 B11.376 C89.789 +G01 X+20.264 Y-11.106 B11.38 C88.266 +G01 X+20.707 Y-11.13 Z-1.389 C85.409 +G01 X+20.935 Y-11.154 Z-1.388 C83.934 +G01 X+21.163 Y-11.178 Z-1.389 C82.46 +G01 X+21.389 Y-11.214 Z-1.388 C80.985 +G01 X+21.616 Y-11.25 Z-1.389 C79.51 +G01 X+21.84 Y-11.297 Z-1.388 C78.036 +G01 X+22.064 Y-11.344 Z-1.389 C76.561 +G01 X+22.285 Y-11.403 Z-1.388 C75.087 +G01 X+22.507 Y-11.462 Z-1.389 B11.381 C73.612 +G01 X+22.725 Y-11.532 Z-1.388 C72.137 +G01 X+22.943 Y-11.602 Z-1.389 C70.663 +G01 X+23.157 Y-11.684 Z-1.388 C69.188 +G01 X+23.371 Y-11.765 Z-1.389 C67.714 +G01 X+23.581 Y-11.857 Z-1.388 C66.239 +G01 X+23.791 Y-11.95 Z-1.389 C64.764 +G01 X+23.995 Y-12.052 Z-1.388 B11.38 C63.29 +G01 X+24.2 Y-12.155 Z-1.389 C61.815 +G01 X+24.399 Y-12.269 Z-1.388 B11.377 C60.341 +G01 X+24.598 Y-12.382 Z-1.389 B11.38 C58.866 +G01 X+24.791 Y-12.505 Z-1.388 B11.377 C57.392 +G01 X+24.984 Y-12.629 Z-1.389 B11.38 C55.917 +G01 X+25.297 Y-12.852 Z-1.388 B11.378 C53.425 +G01 X+25.357 Y-12.895 Z-1.389 B11.38 C52.968 +G01 X+25.653 Y-13.13 Z-1.388 B11.378 C50.522 +G01 X+25.716 Y-13.18 Z-1.389 B11.38 C50.019 +G01 X+25.993 Y-13.425 Z-1.388 B11.378 C47.619 +G01 X+26.059 Y-13.484 Z-1.389 B11.38 C47.069 +G01 X+26.318 Y-13.737 Z-1.388 B11.378 C44.715 +G01 X+26.387 Y-13.804 Z-1.389 B11.38 C44.12 +G01 X+26.542 Y-13.973 Z-1.388 B11.376 C42.646 +G01 X+26.697 Y-14.141 Z-1.389 B11.38 C41.171 +G01 X+26.844 Y-14.317 Z-1.388 B11.376 C39.696 +G01 X+26.99 Y-14.494 Z-1.389 B11.38 C38.222 +G01 X+27.127 Y-14.677 Z-1.388 B11.376 C36.747 +G01 X+27.264 Y-14.861 Z-1.389 B11.38 C35.273 +G01 X+27.392 Y-15.052 Z-1.388 B11.376 C33.796 +G01 X+27.52 Y-15.243 Z-1.389 B11.38 C32.32 +G01 X+27.637 Y-15.439 Z-1.388 B11.376 C30.848 +G01 X+27.754 Y-15.635 Z-1.389 B11.38 C29.376 +G01 X+27.861 Y-15.838 Z-1.388 B11.376 C27.899 +G01 X+27.968 Y-16.04 Z-1.389 B11.38 C26.422 +G01 X+28.065 Y-16.248 Z-1.388 B11.376 C24.945 +G01 X+28.162 Y-16.456 Z-1.389 B11.38 C23.468 +G01 X+28.248 Y-16.668 Z-1.388 B11.376 C21.991 +G01 X+28.333 Y-16.88 Z-1.389 B11.38 C20.513 +G01 X+28.471 Y-17.28 Z-1.388 B11.378 C17.804 +G01 X+28.483 Y-17.313 Z-1.389 B11.38 C17.559 +G01 X+28.598 Y-17.712 Z-1.388 B11.378 C14.901 +G01 X+28.61 Y-17.754 Z-1.389 B11.38 C14.605 +G01 X+28.703 Y-18.151 Z-1.388 B11.378 C11.997 +G01 X+28.714 Y-18.2 Z-1.389 B11.38 C11.651 +G01 X+28.755 Y-18.425 Z-1.388 B11.377 C10.174 +G01 X+28.795 Y-18.651 Z-1.389 B11.38 C8.697 +G01 X+28.824 Y-18.878 Z-1.388 B11.377 C7.22 +G01 X+28.853 Y-19.105 Z-1.389 B11.38 C5.743 +G01 X+28.87 Y-19.334 Z-1.388 C4.266 +G01 X+28.887 Y-19.562 Z-1.389 C2.789 +G01 X+28.893 Y-19.801 Z-1.388 B11.376 C1.253 +G01 X+28.898 Y-20.039 B11.38 C359.718 +G01 X+28.884 Y-20.49 C356.815 +G01 X+28.849 Y-20.935 Z-1.389 C353.934 +G01 X+28.819 Y-21.162 Z-1.388 C352.46 +G01 X+28.789 Y-21.39 Z-1.389 C350.985 +G01 X+28.748 Y-21.615 Z-1.388 C349.51 +G01 X+28.706 Y-21.84 Z-1.389 C348.036 +G01 X+28.653 Y-22.063 Z-1.388 C346.561 +G01 X+28.6 Y-22.286 Z-1.389 C345.087 +G01 X+28.535 Y-22.506 Z-1.388 C343.612 +G01 X+28.47 Y-22.726 Z-1.389 B11.381 C342.137 +G01 X+28.395 Y-22.942 Z-1.388 C340.663 +G01 X+28.319 Y-23.158 Z-1.389 C339.188 +G01 X+28.232 Y-23.37 Z-1.388 C337.714 +G01 X+28.145 Y-23.582 Z-1.389 C336.239 +G01 X+28.048 Y-23.789 Z-1.388 C334.764 +G01 X+27.95 Y-23.997 Z-1.389 B11.38 C333.29 +G01 X+27.842 Y-24.199 Z-1.388 B11.377 C331.815 +G01 X+27.734 Y-24.401 Z-1.389 B11.38 C330.341 +G01 X+27.615 Y-24.597 Z-1.388 B11.377 C328.866 +G01 X+27.497 Y-24.793 Z-1.389 B11.38 C327.391 +G01 X+27.279 Y-25.115 Z-1.388 B11.378 C324.877 +G01 X+27.24 Y-25.172 Z-1.389 B11.38 C324.442 +G01 X+27.011 Y-25.477 Z-1.388 B11.378 C321.974 +G01 X+26.964 Y-25.538 Z-1.389 B11.38 C321.493 +G01 X+26.724 Y-25.825 Z-1.388 B11.378 C319.07 +G01 X+26.67 Y-25.89 Z-1.389 B11.38 C318.544 +G01 X+26.421 Y-26.158 Z-1.388 B11.378 C316.167 +G01 X+26.358 Y-26.225 Z-1.389 B11.38 C315.595 +G01 X+26.101 Y-26.475 Z-1.388 B11.378 C313.263 +G01 X+26.029 Y-26.544 Z-1.389 B11.38 C312.645 +G01 X+25.857 Y-26.695 Z-1.388 B11.376 C311.171 +G01 X+25.684 Y-26.846 Z-1.389 B11.38 C309.696 +G01 X+25.504 Y-26.988 Z-1.388 B11.376 C308.222 +G01 X+25.324 Y-27.129 Z-1.389 B11.38 C306.747 +G01 X+25.137 Y-27.262 Z-1.388 B11.376 C305.273 +G01 X+24.95 Y-27.394 Z-1.389 B11.38 C303.798 +G01 X+24.757 Y-27.517 Z-1.388 C302.325 +G01 X+24.563 Y-27.639 Z-1.389 C300.853 +G01 X+24.363 Y-27.752 Z-1.388 B11.376 C299.376 +G01 X+24.164 Y-27.864 Z-1.389 B11.38 C297.899 +G01 X+23.959 Y-27.966 Z-1.388 B11.376 C296.422 +G01 X+23.753 Y-28.068 Z-1.389 B11.38 C294.945 +G01 X+23.543 Y-28.159 Z-1.388 B11.376 C293.468 +G01 X+23.333 Y-28.25 Z-1.389 B11.38 C291.991 +G01 X+23.119 Y-28.331 Z-1.388 B11.376 C290.513 +G01 X+22.904 Y-28.411 Z-1.389 B11.38 C289.037 +G01 X+22.505 Y-28.537 Z-1.388 B11.378 C286.352 +G01 X+22.467 Y-28.549 Z-1.389 B11.38 C286.082 +G01 X+22.069 Y-28.653 Z-1.388 B11.378 C283.449 +G01 X+22.024 Y-28.665 Z-1.389 B11.38 C283.128 +G01 X+21.799 Y-28.711 Z-1.388 B11.377 C281.651 +G01 X+21.575 Y-28.758 Z-1.389 B11.38 C280.174 +G01 X+21.349 Y-28.792 Z-1.388 B11.377 C278.697 +G01 X+21.122 Y-28.827 Z-1.389 B11.38 C277.22 +G01 X+20.894 Y-28.85 Z-1.388 C275.743 +G01 X+20.666 Y-28.873 Z-1.389 C274.266 +G01 X+20.437 Y-28.884 Z-1.388 C272.789 +G01 X+20.209 Y-28.896 Z-1.389 C271.311 +G01 X+19.972 Y-28.895 Z-1.388 B11.376 C269.789 +G01 X+19.736 Y-28.894 B11.38 C268.266 +G01 X+19.293 Y-28.87 Z-1.389 C265.409 +G01 X+19.065 Y-28.846 Z-1.388 C263.934 +G01 X+18.837 Y-28.822 Z-1.389 C262.46 +G01 X+18.611 Y-28.786 Z-1.388 C260.985 +G01 X+18.384 Y-28.75 Z-1.389 C259.51 +G01 X+18.16 Y-28.703 Z-1.388 C258.036 +G01 X+17.936 Y-28.655 Z-1.389 C256.561 +G01 X+17.715 Y-28.597 Z-1.388 C255.087 +G01 X+17.493 Y-28.538 Z-1.389 B11.381 C253.612 +G01 X+17.275 Y-28.468 Z-1.388 C252.137 +G01 X+17.057 Y-28.397 Z-1.389 C250.663 +G01 X+16.843 Y-28.316 Z-1.388 C249.188 +G01 X+16.629 Y-28.235 Z-1.389 C247.714 +G01 X+16.419 Y-28.143 Z-1.388 C246.242 +G01 X+16.21 Y-28.051 Z-1.389 B11.38 C244.77 +G01 X+15.966 Y-27.928 Z-1.388 B11.377 C243.061 +G01 X+15.722 Y-27.805 Z-1.389 B11.382 C241.352 +G01 X+15.389 Y-27.611 C238.777 +G01 X+15.071 Y-27.407 Z-1.388 B11.379 C236.329 +G01 X+15.01 Y-27.367 Z-1.389 B11.381 C235.874 +G01 X+14.703 Y-27.148 Z-1.388 B11.379 C233.426 +G01 X+14.643 Y-27.105 Z-1.389 B11.38 C232.969 +G01 X+14.347 Y-26.87 Z-1.388 B11.378 C230.522 +G01 X+14.284 Y-26.819 Z-1.389 B11.38 C230.019 +G01 X+14.112 Y-26.668 Z-1.388 B11.376 C228.544 +G01 X+13.941 Y-26.516 Z-1.389 B11.38 C227.069 +G01 X+13.723 Y-26.303 Z-1.388 B11.377 C225.103 +G01 Y-26.17 Z-1.369 B11.256 C224.478 +G01 X+13.682 Y-26.131 Z-1.37 B11.257 C224.128 +G01 X+13.427 Y-25.854 Z-1.369 B11.255 C221.658 +G01 X+13.375 Y-25.797 Z-1.37 B11.257 C221.179 +G01 X+13.23 Y-25.623 Z-1.369 B11.253 C219.705 +G01 X+13.085 Y-25.449 Z-1.37 B11.257 C218.23 +G01 X+12.95 Y-25.267 Z-1.369 B11.253 C216.756 +G01 X+12.814 Y-25.085 Z-1.37 B11.257 C215.282 +G01 X+12.688 Y-24.897 Z-1.369 B11.253 C213.807 +G01 X+12.562 Y-24.709 Z-1.37 B11.257 C212.333 +G01 X+12.445 Y-24.514 Z-1.369 C210.86 +G01 X+12.329 Y-24.32 Z-1.37 C209.387 +G01 X+12.223 Y-24.119 Z-1.369 B11.253 C207.91 +G01 X+12.117 Y-23.919 Z-1.37 B11.257 C206.433 +G01 X+12.021 Y-23.714 Z-1.369 B11.253 C204.957 +G01 X+11.926 Y-23.508 Z-1.37 B11.257 C203.48 +G01 X+11.841 Y-23.298 Z-1.369 B11.253 C202.003 +G01 X+11.756 Y-23.088 Z-1.37 B11.257 C200.526 +G01 X+11.619 Y-22.691 Z-1.369 B11.256 C197.804 +G01 X+11.608 Y-22.659 Z-1.37 B11.257 C197.573 +G01 X+11.493 Y-22.263 Z-1.369 B11.255 C194.9 +G01 X+11.482 Y-22.224 Z-1.37 B11.257 C194.619 +G01 X+11.39 Y-21.83 Z-1.369 B11.255 C191.997 +G01 X+11.379 Y-21.782 Z-1.37 B11.257 C191.665 +G01 X+11.308 Y-21.391 Z-1.369 B11.255 C189.094 +G01 X+11.299 Y-21.336 Z-1.37 B11.257 C188.712 +G01 X+11.27 Y-21.111 Z-1.369 B11.254 C187.235 +G01 X+11.241 Y-20.886 Z-1.37 B11.257 C185.758 +G01 X+11.224 Y-20.66 Z-1.369 B11.254 C184.281 +G01 X+11.207 Y-20.434 Z-1.37 B11.257 C182.805 +G01 X+11.202 Y-20.208 Z-1.369 C181.328 +G01 X+11.197 Y-19.981 Z-1.37 C179.851 +G01 X+11.203 Y-19.755 Z-1.369 B11.258 C178.374 +G01 X+11.209 Y-19.528 Z-1.37 C176.897 +G01 X+11.227 Y-19.302 Z-1.369 C175.421 +G01 X+11.245 Y-19.076 Z-1.37 C173.944 +G01 X+11.277 Y-18.841 Z-1.369 B11.253 C172.399 +G01 X+11.308 Y-18.606 B11.257 C170.854 +G01 X+11.39 Y-18.167 C167.951 +G01 X+11.492 Y-17.74 Z-1.37 B11.258 C165.089 +G01 X+11.555 Y-17.522 Z-1.369 C163.615 +G01 X+11.619 Y-17.305 Z-1.37 C162.14 +G01 X+11.694 Y-17.091 Z-1.369 C160.666 +G01 X+11.769 Y-16.877 Z-1.37 C159.192 +G01 X+11.855 Y-16.667 Z-1.369 C157.717 +G01 X+11.941 Y-16.457 Z-1.37 C156.243 +G01 X+12.037 Y-16.252 Z-1.369 C154.769 +G01 X+12.134 Y-16.047 Z-1.37 C153.294 +G01 X+12.241 Y-15.847 Z-1.369 C151.82 +G01 X+12.348 Y-15.647 Z-1.37 C150.345 +G01 X+12.465 Y-15.453 Z-1.369 C148.871 +G01 X+12.582 Y-15.259 Z-1.37 C147.397 +G01 X+12.709 Y-15.071 Z-1.369 B11.254 C145.923 +G01 X+12.836 Y-14.884 Z-1.37 B11.257 C144.448 +G01 X+12.972 Y-14.703 Z-1.369 B11.254 C142.974 +G01 X+13.109 Y-14.522 Z-1.37 B11.257 C141.5 +G01 X+13.362 Y-14.219 Z-1.369 B11.256 C138.917 +G01 X+13.4 Y-14.174 Z-1.37 B11.257 C138.551 +G01 X+13.663 Y-13.891 Z-1.369 B11.256 C136.013 +G01 X+13.709 Y-13.842 Z-1.37 B11.257 C135.602 +G01 X+13.981 Y-13.578 Z-1.369 B11.255 C133.11 +G01 X+14.034 Y-13.526 Z-1.37 B11.257 C132.653 +G01 X+14.204 Y-13.377 Z-1.369 B11.253 C131.179 +G01 X+14.375 Y-13.228 Z-1.37 B11.257 C129.704 +G01 X+14.553 Y-13.087 Z-1.369 B11.253 C128.23 +G01 X+14.731 Y-12.947 Z-1.37 B11.257 C126.756 +G01 X+14.916 Y-12.816 Z-1.369 B11.253 C125.282 +G01 X+15.101 Y-12.685 Z-1.37 B11.257 C123.807 +G01 X+15.293 Y-12.564 Z-1.369 B11.253 C122.336 +G01 X+15.484 Y-12.443 Z-1.37 B11.257 C120.864 +G01 X+15.682 Y-12.332 Z-1.369 B11.253 C119.387 +G01 X+15.879 Y-12.22 Z-1.37 B11.257 C117.91 +G01 X+16.082 Y-12.119 Z-1.369 B11.253 C116.434 +G01 X+16.285 Y-12.019 Z-1.37 B11.257 C114.957 +G01 X+16.493 Y-11.928 Z-1.369 B11.253 C113.48 +G01 X+16.701 Y-11.838 Z-1.37 B11.257 C112.003 +G01 X+16.913 Y-11.758 Z-1.369 B11.253 C110.526 +G01 X+17.125 Y-11.679 Z-1.37 B11.257 C109.049 +G01 X+17.522 Y-11.553 Z-1.369 B11.256 C106.352 +G01 X+17.558 Y-11.542 Z-1.37 B11.257 C106.096 +G01 X+17.953 Y-11.439 Z-1.369 B11.255 C103.449 +G01 X+17.996 Y-11.428 Z-1.37 B11.257 C103.142 +G01 X+18.389 Y-11.346 Z-1.369 B11.255 C100.546 +G01 X+18.44 Y-11.336 Z-1.37 B11.257 C100.189 +G01 X+18.829 Y-11.276 Z-1.369 B11.255 C97.642 +G01 X+18.888 Y-11.267 Z-1.37 B11.257 C97.235 +G01 X+19.114 Y-11.244 Z-1.369 B11.254 C95.758 +G01 X+19.339 Y-11.221 Z-1.37 B11.257 C94.281 +G01 X+19.566 Y-11.21 Z-1.369 B11.254 C92.805 +G01 X+19.792 Y-11.199 Z-1.37 B11.257 C91.328 +G01 X+20.019 Z-1.369 C89.851 +G01 X+20.246 Y-11.2 Z-1.37 B11.258 C88.374 +G01 X+20.472 Y-11.212 Z-1.369 C86.897 +G01 X+20.698 Y-11.224 Z-1.37 C85.421 +G01 X+20.924 Y-11.248 Z-1.369 C83.944 +G01 X+21.149 Y-11.272 Z-1.37 C82.467 +G01 X+21.382 Y-11.309 Z-1.369 B11.253 C80.935 +G01 X+21.614 Y-11.346 B11.257 C79.402 +G01 X+22.04 Y-11.436 Z-1.37 B11.258 C76.563 +G01 X+22.259 Y-11.494 Z-1.369 C75.089 +G01 X+22.479 Y-11.553 Z-1.37 C73.615 +G01 X+22.694 Y-11.622 Z-1.369 C72.14 +G01 X+22.91 Y-11.691 Z-1.37 C70.666 +G01 X+23.122 Y-11.772 Z-1.369 C69.192 +G01 X+23.334 Y-11.852 Z-1.37 C67.717 +G01 X+23.542 Y-11.943 Z-1.369 C66.243 +G01 X+23.749 Y-12.035 Z-1.37 C64.769 +G01 X+23.952 Y-12.136 Z-1.369 C63.294 +G01 X+24.154 Y-12.238 Z-1.37 C61.82 +G01 X+24.351 Y-12.35 Z-1.369 C60.346 +G01 X+24.548 Y-12.462 Z-1.37 C58.871 +G01 X+24.739 Y-12.584 Z-1.369 C57.397 +G01 X+24.93 Y-12.706 Z-1.37 B11.257 C55.923 +G01 X+25.115 Y-12.838 Z-1.369 B11.254 C54.448 +G01 X+25.299 Y-12.97 Z-1.37 B11.257 C52.974 +G01 X+25.477 Y-13.111 Z-1.369 B11.254 C51.499 +G01 X+25.654 Y-13.252 Z-1.37 B11.257 C50.025 +G01 X+25.947 Y-13.511 Z-1.369 B11.256 C47.465 +G01 X+25.994 Y-13.552 Z-1.37 B11.257 C47.077 +G01 X+26.268 Y-13.82 Z-1.369 B11.256 C44.561 +G01 X+26.318 Y-13.869 Z-1.37 B11.257 C44.128 +G01 X+26.573 Y-14.146 Z-1.369 B11.255 C41.658 +G01 X+26.625 Y-14.202 Z-1.37 B11.257 C41.179 +G01 X+26.77 Y-14.377 Z-1.369 B11.253 C39.705 +G01 X+26.915 Y-14.551 Z-1.37 B11.257 C38.23 +G01 X+27.05 Y-14.733 Z-1.369 B11.253 C36.756 +G01 X+27.186 Y-14.914 Z-1.37 B11.257 C35.282 +G01 X+27.312 Y-15.103 Z-1.369 B11.253 C33.807 +G01 X+27.438 Y-15.291 Z-1.37 B11.257 C32.333 +G01 X+27.555 Y-15.486 Z-1.369 C30.86 +G01 X+27.671 Y-15.68 Z-1.37 C29.387 +G01 X+27.777 Y-15.88 Z-1.369 B11.253 C27.91 +G01 X+27.883 Y-16.081 Z-1.37 B11.257 C26.433 +G01 X+27.979 Y-16.286 Z-1.369 B11.253 C24.957 +G01 X+28.074 Y-16.492 Z-1.37 B11.257 C23.48 +G01 X+28.159 Y-16.702 Z-1.369 B11.253 C22.003 +G01 X+28.244 Y-16.912 Z-1.37 B11.257 C20.526 +G01 X+28.381 Y-17.308 Z-1.369 B11.256 C17.804 +G01 X+28.392 Y-17.341 Z-1.37 B11.257 C17.573 +G01 X+28.507 Y-17.736 Z-1.369 B11.255 C14.9 +G01 X+28.518 Y-17.776 Z-1.37 B11.257 C14.619 +G01 X+28.61 Y-18.17 Z-1.369 B11.255 C11.997 +G01 X+28.621 Y-18.218 Z-1.37 B11.257 C11.665 +G01 X+28.692 Y-18.609 Z-1.369 B11.255 C9.094 +G01 X+28.701 Y-18.664 Z-1.37 B11.257 C8.712 +G01 X+28.73 Y-18.889 Z-1.369 B11.254 C7.235 +G01 X+28.759 Y-19.113 Z-1.37 B11.257 C5.758 +G01 X+28.776 Y-19.34 Z-1.369 B11.254 C4.281 +G01 X+28.793 Y-19.566 Z-1.37 B11.257 C2.805 +G01 X+28.798 Y-19.792 Z-1.369 C1.328 +G01 X+28.803 Y-20.019 Z-1.37 C359.851 +G01 X+28.797 Y-20.245 Z-1.369 B11.258 C358.374 +G01 X+28.791 Y-20.472 Z-1.37 C356.897 +G01 X+28.773 Y-20.698 Z-1.369 C355.421 +G01 X+28.755 Y-20.924 Z-1.37 C353.944 +G01 X+28.723 Y-21.159 Z-1.369 B11.253 C352.399 +G01 X+28.692 Y-21.394 B11.257 C350.854 +G01 X+28.61 Y-21.833 C347.951 +G01 X+28.508 Y-22.26 Z-1.37 B11.258 C345.089 +G01 X+28.445 Y-22.478 Z-1.369 C343.615 +G01 X+28.381 Y-22.695 Z-1.37 C342.14 +G01 X+28.306 Y-22.909 Z-1.369 C340.666 +G01 X+28.231 Y-23.123 Z-1.37 C339.192 +G01 X+28.145 Y-23.333 Z-1.369 C337.717 +G01 X+28.059 Y-23.543 Z-1.37 C336.243 +G01 X+27.963 Y-23.748 Z-1.369 C334.769 +G01 X+27.866 Y-23.953 Z-1.37 C333.294 +G01 X+27.759 Y-24.153 Z-1.369 C331.82 +G01 X+27.652 Y-24.352 Z-1.37 C330.345 +G01 X+27.535 Y-24.547 Z-1.369 C328.871 +G01 X+27.418 Y-24.741 Z-1.37 C327.397 +G01 X+27.291 Y-24.928 Z-1.369 B11.254 C325.923 +G01 X+27.164 Y-25.116 Z-1.37 B11.257 C324.448 +G01 X+27.028 Y-25.297 Z-1.369 B11.254 C322.974 +G01 X+26.891 Y-25.478 Z-1.37 B11.257 C321.5 +G01 X+26.638 Y-25.781 Z-1.369 B11.256 C318.917 +G01 X+26.6 Y-25.826 Z-1.37 B11.257 C318.551 +G01 X+26.337 Y-26.109 Z-1.369 B11.256 C316.013 +G01 X+26.291 Y-26.158 Z-1.37 B11.257 C315.602 +G01 X+26.019 Y-26.422 Z-1.369 B11.255 C313.11 +G01 X+25.966 Y-26.473 Z-1.37 B11.257 C312.653 +G01 X+25.796 Y-26.623 Z-1.369 B11.253 C311.179 +G01 X+25.625 Y-26.772 Z-1.37 B11.257 C309.704 +G01 X+25.447 Y-26.912 Z-1.369 B11.253 C308.23 +G01 X+25.269 Y-27.053 Z-1.37 B11.257 C306.756 +G01 X+25.084 Y-27.184 Z-1.369 B11.253 C305.282 +G01 X+24.899 Y-27.314 Z-1.37 B11.257 C303.807 +G01 X+24.707 Y-27.436 Z-1.369 B11.253 C302.336 +G01 X+24.516 Y-27.557 Z-1.37 B11.257 C300.864 +G01 X+24.318 Y-27.668 Z-1.369 B11.253 C299.387 +G01 X+24.121 Y-27.779 Z-1.37 B11.257 C297.91 +G01 X+23.918 Y-27.88 Z-1.369 B11.253 C296.434 +G01 X+23.715 Y-27.981 Z-1.37 B11.257 C294.957 +G01 X+23.507 Y-28.072 Z-1.369 B11.253 C293.48 +G01 X+23.299 Y-28.162 Z-1.37 B11.257 C292.003 +G01 X+23.087 Y-28.241 Z-1.369 B11.253 C290.526 +G01 X+22.875 Y-28.321 Z-1.37 B11.257 C289.049 +G01 X+22.478 Y-28.446 Z-1.369 B11.256 C286.352 +G01 X+22.442 Y-28.458 Z-1.37 B11.257 C286.096 +G01 X+22.047 Y-28.561 Z-1.369 B11.255 C283.449 +G01 X+22.004 Y-28.572 Z-1.37 B11.257 C283.142 +G01 X+21.611 Y-28.654 Z-1.369 B11.255 C280.546 +G01 X+21.56 Y-28.664 Z-1.37 B11.257 C280.189 +G01 X+21.171 Y-28.724 Z-1.369 B11.255 C277.642 +G01 X+21.112 Y-28.733 Z-1.37 B11.257 C277.235 +G01 X+20.886 Y-28.756 Z-1.369 B11.254 C275.758 +G01 X+20.661 Y-28.779 Z-1.37 B11.257 C274.281 +G01 X+20.434 Y-28.79 Z-1.369 B11.254 C272.805 +G01 X+20.208 Y-28.801 Z-1.37 B11.257 C271.328 +G01 X+19.981 Z-1.369 C269.851 +G01 X+19.755 Y-28.8 Z-1.37 B11.258 C268.374 +G01 X+19.528 Y-28.788 Z-1.369 C266.897 +G01 X+19.302 Y-28.776 Z-1.37 C265.421 +G01 X+19.076 Y-28.752 Z-1.369 C263.944 +G01 X+18.851 Y-28.728 Z-1.37 C262.467 +G01 X+18.618 Y-28.691 Z-1.369 B11.253 C260.935 +G01 X+18.386 Y-28.654 B11.257 C259.402 +G01 X+17.96 Y-28.564 Z-1.37 B11.258 C256.563 +G01 X+17.741 Y-28.506 Z-1.369 C255.089 +G01 X+17.521 Y-28.447 Z-1.37 C253.615 +G01 X+17.306 Y-28.378 Z-1.369 C252.14 +G01 X+17.09 Y-28.309 Z-1.37 C250.666 +G01 X+16.878 Y-28.228 Z-1.369 C249.192 +G01 X+16.666 Y-28.148 Z-1.37 C247.717 +G01 X+16.459 Y-28.057 Z-1.369 C246.246 +G01 X+16.252 Y-27.966 Z-1.37 B11.257 C244.774 +G01 X+16.009 Y-27.844 Z-1.369 B11.254 C243.063 +G01 X+15.767 Y-27.721 Z-1.37 B11.26 C241.352 +G01 X+15.439 Y-27.531 B11.259 C238.782 +G01 X+15.064 Y-27.29 B11.258 C235.877 +G01 X+14.701 Y-27.03 B11.257 C232.976 +G01 X+14.524 Y-26.889 Z-1.369 B11.254 C231.5 +G01 X+14.346 Y-26.748 Z-1.37 B11.257 C230.025 +G01 X+14.053 Y-26.489 Z-1.369 B11.256 C227.465 +G01 X+14.006 Y-26.448 Z-1.37 B11.257 C227.076 +G01 X+13.79 Y-26.236 Z-1.369 B11.254 C225.106 +G01 X+13.789 Y-26.103 Z-1.35 B11.133 C224.466 +G01 X+13.751 Y-26.066 Z-1.351 B11.134 C224.135 +G01 X+13.482 Y-25.774 B11.133 C221.505 +G01 X+13.447 Y-25.736 B11.134 C221.187 +G01 X+13.161 Y-25.391 C218.239 +G01 X+12.892 Y-25.032 C215.29 +G01 X+12.643 Y-24.659 C212.342 +G01 X+12.413 Y-24.275 C209.398 +G01 X+12.203 Y-23.878 C206.445 +G01 X+12.013 Y-23.472 C203.492 +G01 X+11.845 Y-23.056 C200.539 +G01 X+11.709 Y-22.662 B11.133 C197.804 +G01 X+11.699 Y-22.632 B11.134 C197.586 +G01 X+11.585 Y-22.239 B11.133 C194.901 +G01 X+11.574 Y-22.201 B11.134 C194.633 +G01 X+11.483 Y-21.81 B11.132 C191.997 +G01 X+11.472 Y-21.765 B11.134 C191.68 +G01 X+11.402 Y-21.376 Z-1.35 B11.132 C189.094 +G01 X+11.392 Y-21.323 Z-1.351 B11.134 C188.726 +G01 X+11.336 Y-20.878 B11.135 C185.773 +G01 X+11.302 Y-20.431 C182.82 +G01 X+11.291 Y-19.983 C179.867 +G01 X+11.304 Y-19.535 C176.914 +G01 X+11.339 Y-19.087 C173.961 +G01 X+11.398 Y-18.643 C171.008 +G01 X+11.479 Y-18.202 C168.055 +G01 X+11.583 Y-17.766 C165.102 +G01 X+11.709 Y-17.335 C162.149 +G01 X+11.786 Y-17.115 Z-1.35 B11.13 C160.618 +G01 X+11.864 Y-16.896 Z-1.351 B11.134 C159.087 +G01 X+12.027 Y-16.497 B11.135 C156.247 +G01 X+12.218 Y-16.091 C153.299 +G01 X+12.429 Y-15.696 C150.35 +G01 X+12.661 Y-15.312 C147.402 +G01 X+12.912 Y-14.94 C144.454 +G01 X+13.182 Y-14.582 C141.506 +G01 X+13.47 Y-14.238 B11.134 C138.558 +G01 X+13.775 Y-13.909 C135.609 +G01 X+14.097 Y-13.597 C132.661 +G01 X+14.393 Y-13.338 Z-1.35 B11.133 C130.053 +G01 X+14.434 Y-13.302 Z-1.351 B11.134 C129.713 +G01 X+14.787 Y-13.024 C126.765 +G01 X+15.153 Y-12.765 C123.816 +G01 X+15.532 Y-12.525 C120.868 +G01 X+15.922 Y-12.305 C117.921 +G01 X+16.324 Y-12.105 C114.968 +G01 X+16.735 Y-11.926 C112.015 +G01 X+17.128 Y-11.779 B11.133 C109.255 +G01 X+17.155 Y-11.769 B11.134 C109.062 +G01 X+17.548 Y-11.644 B11.133 C106.352 +G01 X+17.582 Y-11.633 B11.134 C106.109 +G01 X+17.975 Y-11.531 B11.133 C103.449 +G01 X+18.016 Y-11.52 B11.134 C103.156 +G01 X+18.406 Y-11.439 B11.132 C100.546 +G01 X+18.456 Y-11.429 B11.134 C100.203 +G01 X+18.899 Y-11.361 C97.25 +G01 X+19.345 Y-11.316 B11.135 C94.297 +G01 X+19.793 Y-11.294 C91.344 +G01 X+20.241 Y-11.295 C88.391 +G01 X+20.689 Y-11.318 C85.438 +G01 X+21.135 Y-11.365 C82.485 +G01 X+21.578 Y-11.435 C79.532 +G01 X+22.017 Y-11.528 C76.579 +G01 X+22.45 Y-11.643 C73.626 +G01 X+22.674 Y-11.715 Z-1.35 B11.13 C72.082 +G01 X+22.897 Y-11.788 Z-1.351 B11.134 C70.538 +G01 X+23.297 Y-11.939 B11.135 C67.721 +G01 X+23.707 Y-12.12 C64.773 +G01 X+24.108 Y-12.321 C61.825 +G01 X+24.498 Y-12.543 C58.876 +G01 X+24.876 Y-12.784 C55.928 +G01 X+25.241 Y-13.045 B11.134 C52.98 +G01 X+25.592 Y-13.324 C50.032 +G01 X+25.928 Y-13.62 C47.083 +G01 X+26.249 Y-13.934 C44.135 +G01 X+26.518 Y-14.226 B11.133 C41.505 +G01 X+26.553 Y-14.264 B11.134 C41.187 +G01 X+26.839 Y-14.609 C38.239 +G01 X+27.108 Y-14.968 C35.29 +G01 X+27.357 Y-15.34 C32.342 +G01 X+27.587 Y-15.725 C29.398 +G01 X+27.797 Y-16.122 C26.445 +G01 X+27.987 Y-16.528 C23.492 +G01 X+28.155 Y-16.944 C20.539 +G01 X+28.291 Y-17.337 B11.133 C17.804 +G01 X+28.301 Y-17.368 B11.134 C17.586 +G01 X+28.415 Y-17.761 B11.133 C14.901 +G01 X+28.426 Y-17.799 B11.134 C14.633 +G01 X+28.517 Y-18.19 B11.132 C11.997 +G01 X+28.528 Y-18.235 B11.134 C11.68 +G01 X+28.598 Y-18.624 Z-1.35 B11.132 C9.094 +G01 X+28.608 Y-18.677 Z-1.351 B11.134 C8.726 +G01 X+28.664 Y-19.121 B11.135 C5.773 +G01 X+28.698 Y-19.569 C2.82 +G01 X+28.709 Y-20.017 C359.867 +G01 X+28.696 Y-20.465 C356.914 +G01 X+28.661 Y-20.912 C353.961 +G01 X+28.602 Y-21.357 C351.008 +G01 X+28.521 Y-21.798 C348.055 +G01 X+28.417 Y-22.234 C345.102 +G01 X+28.291 Y-22.665 C342.149 +G01 X+28.214 Y-22.884 Z-1.35 B11.13 C340.618 +G01 X+28.136 Y-23.104 Z-1.351 B11.134 C339.087 +G01 X+27.973 Y-23.503 B11.135 C336.247 +G01 X+27.782 Y-23.909 C333.299 +G01 X+27.571 Y-24.304 C330.35 +G01 X+27.339 Y-24.688 C327.402 +G01 X+27.088 Y-25.06 C324.454 +G01 X+26.818 Y-25.418 C321.506 +G01 X+26.53 Y-25.762 B11.134 C318.558 +G01 X+26.225 Y-26.09 C315.609 +G01 X+25.903 Y-26.403 C312.661 +G01 X+25.607 Y-26.662 Z-1.35 B11.133 C310.053 +G01 X+25.566 Y-26.698 Z-1.351 B11.134 C309.713 +G01 X+25.213 Y-26.976 C306.765 +G01 X+24.847 Y-27.235 C303.816 +G01 X+24.468 Y-27.475 C300.868 +G01 X+24.078 Y-27.695 C297.921 +G01 X+23.676 Y-27.895 C294.968 +G01 X+23.265 Y-28.073 C292.015 +G01 X+22.872 Y-28.221 B11.133 C289.255 +G01 X+22.845 Y-28.231 B11.134 C289.062 +G01 X+22.452 Y-28.356 B11.133 C286.352 +G01 X+22.418 Y-28.366 B11.134 C286.109 +G01 X+22.025 Y-28.469 B11.133 C283.449 +G01 X+21.984 Y-28.48 B11.134 C283.156 +G01 X+21.594 Y-28.56 B11.132 C280.546 +G01 X+21.544 Y-28.571 B11.134 C280.203 +G01 X+21.101 Y-28.639 C277.25 +G01 X+20.655 Y-28.684 B11.135 C274.297 +G01 X+20.207 Y-28.706 C271.344 +G01 X+19.759 Y-28.705 C268.391 +G01 X+19.311 Y-28.681 C265.438 +G01 X+18.865 Y-28.634 C262.485 +G01 X+18.422 Y-28.565 C259.532 +G01 X+17.983 Y-28.472 C256.579 +G01 X+17.55 Y-28.357 C253.626 +G01 X+17.326 Y-28.285 Z-1.35 B11.13 C252.082 +G01 X+17.103 Y-28.212 Z-1.351 B11.134 C250.538 +G01 X+16.703 Y-28.061 B11.135 C247.721 +G01 X+16.294 Y-27.881 C244.779 +G01 X+16.054 Y-27.76 Z-1.35 B11.131 C243.065 +G01 X+15.814 Y-27.639 Z-1.351 B11.137 C241.352 +G01 X+15.489 Y-27.451 B11.136 C238.786 +G01 X+15.118 Y-27.212 B11.135 C235.881 +G01 X+14.759 Y-26.955 C232.982 +G01 X+14.408 Y-26.676 B11.134 C230.032 +G01 X+14.072 Y-26.38 C227.083 +G01 X+13.857 Y-26.169 Z-1.35 B11.131 C225.109 +G01 X+13.856 Y-26.036 Z-1.332 B11.01 C224.465 +G01 X+13.797 Y-25.976 C223.933 +G01 X+13.52 Y-25.675 B11.011 C221.195 +G01 X+13.236 Y-25.334 C218.247 +G01 X+12.97 Y-24.979 C215.299 +G01 X+12.724 Y-24.61 C212.352 +G01 X+12.496 Y-24.229 C209.409 +G01 X+12.288 Y-23.837 C206.456 +G01 X+12.101 Y-23.435 C203.504 +G01 X+11.934 Y-23.024 C200.551 +G01 X+11.799 Y-22.633 B11.01 C197.804 +G01 X+11.789 Y-22.605 B11.011 C197.599 +G01 X+11.677 Y-22.215 B11.01 C194.901 +G01 X+11.666 Y-22.179 B11.011 C194.646 +G01 X+11.565 Y-21.747 B11.012 C191.694 +G01 X+11.486 Y-21.31 C188.741 +G01 X+11.43 Y-20.87 C185.789 +G01 X+11.397 Y-20.428 C182.836 +G01 X+11.386 Y-19.985 C179.884 +G01 X+11.398 Y-19.541 C176.931 +G01 X+11.433 Y-19.099 C173.979 +G01 X+11.491 Y-18.659 C171.026 +G01 X+11.571 Y-18.223 C168.074 +G01 X+11.674 Y-17.791 C165.121 +G01 X+11.799 Y-17.366 C162.169 +G01 X+11.945 Y-16.947 C159.216 +G01 X+12.113 Y-16.536 C156.264 +G01 X+12.302 Y-16.135 C153.311 +G01 X+12.511 Y-15.744 C150.359 +G01 X+12.74 Y-15.364 C147.407 +G01 X+12.988 Y-14.996 C144.459 +G01 X+13.255 Y-14.642 C141.512 +G01 X+13.54 Y-14.302 C138.564 +G01 X+13.842 Y-13.977 C135.616 +G01 X+14.16 Y-13.668 B11.011 C132.669 +G01 X+14.494 Y-13.376 C129.721 +G01 X+14.842 Y-13.101 C126.773 +G01 X+15.204 Y-12.845 C123.825 +G01 X+15.581 Y-12.606 C120.868 +G01 X+15.965 Y-12.389 C117.933 +G01 X+16.362 Y-12.192 C114.98 +G01 X+16.769 Y-12.015 C112.028 +G01 X+17.16 Y-11.868 B11.01 C109.255 +G01 X+17.184 Y-11.859 B11.011 C109.075 +G01 X+17.575 Y-11.735 B11.01 C106.352 +G01 X+17.607 Y-11.725 B11.011 C106.123 +G01 X+18.036 Y-11.613 B11.012 C103.17 +G01 X+18.471 Y-11.523 C100.218 +G01 X+18.909 Y-11.455 C97.265 +G01 X+19.351 Y-11.41 C94.312 +G01 X+19.794 Y-11.388 C91.36 +G01 X+20.237 Y-11.389 C88.407 +G01 X+20.68 Y-11.413 C85.455 +G01 X+21.121 Y-11.459 C82.502 +G01 X+21.559 Y-11.528 C79.55 +G01 X+21.993 Y-11.62 C76.597 +G01 X+22.422 Y-11.734 C73.645 +G01 X+22.845 Y-11.869 C70.692 +G01 X+23.259 Y-12.026 C67.74 +G01 X+23.666 Y-12.205 C64.787 +G01 X+24.062 Y-12.404 C61.835 +G01 X+24.448 Y-12.623 C58.882 +G01 X+24.821 Y-12.862 C55.933 +G01 X+25.183 Y-13.119 C52.986 +G01 X+25.53 Y-13.395 C50.038 +G01 X+25.863 Y-13.689 C47.09 +G01 X+26.18 Y-13.999 C44.143 +G01 X+26.48 Y-14.325 B11.011 C41.195 +G01 X+26.764 Y-14.666 C38.247 +G01 X+27.03 Y-15.021 C35.299 +G01 X+27.276 Y-15.39 C32.352 +G01 X+27.504 Y-15.771 C29.409 +G01 X+27.712 Y-16.162 C26.456 +G01 X+27.899 Y-16.565 C23.504 +G01 X+28.066 Y-16.976 C20.551 +G01 X+28.201 Y-17.366 B11.01 C17.804 +G01 X+28.211 Y-17.395 B11.011 C17.599 +G01 X+28.323 Y-17.785 B11.01 C14.901 +G01 X+28.334 Y-17.821 B11.011 C14.646 +G01 X+28.435 Y-18.253 B11.012 C11.694 +G01 X+28.514 Y-18.69 C8.741 +G01 X+28.57 Y-19.13 C5.789 +G01 X+28.603 Y-19.572 C2.836 +G01 X+28.614 Y-20.015 C359.884 +G01 X+28.602 Y-20.459 C356.931 +G01 X+28.567 Y-20.901 C353.979 +G01 X+28.509 Y-21.341 C351.026 +G01 X+28.429 Y-21.777 C348.074 +G01 X+28.326 Y-22.209 C345.121 +G01 X+28.201 Y-22.634 C342.169 +G01 X+28.055 Y-23.053 C339.216 +G01 X+27.887 Y-23.464 C336.264 +G01 X+27.698 Y-23.865 C333.311 +G01 X+27.489 Y-24.256 C330.359 +G01 X+27.26 Y-24.636 C327.407 +G01 X+27.012 Y-25.004 C324.459 +G01 X+26.745 Y-25.358 C321.512 +G01 X+26.46 Y-25.698 C318.564 +G01 X+26.158 Y-26.023 C315.616 +G01 X+25.84 Y-26.332 B11.011 C312.669 +G01 X+25.506 Y-26.624 C309.721 +G01 X+25.158 Y-26.899 C306.773 +G01 X+24.796 Y-27.155 C303.825 +G01 X+24.42 Y-27.394 C300.868 +G01 X+24.035 Y-27.611 C297.933 +G01 X+23.638 Y-27.808 C294.98 +G01 X+23.231 Y-27.985 C292.028 +G01 X+22.84 Y-28.131 B11.01 C289.255 +G01 X+22.816 Y-28.141 B11.011 C289.075 +G01 X+22.425 Y-28.265 B11.01 C286.352 +G01 X+22.393 Y-28.275 B11.011 C286.123 +G01 X+21.964 Y-28.387 B11.012 C283.17 +G01 X+21.529 Y-28.477 C280.218 +G01 X+21.091 Y-28.545 C277.265 +G01 X+20.649 Y-28.589 C274.312 +G01 X+20.206 Y-28.611 C271.36 +G01 X+19.763 C268.407 +G01 X+19.32 Y-28.587 C265.455 +G01 X+18.879 Y-28.541 C262.502 +G01 X+18.441 Y-28.472 C259.55 +G01 X+18.007 Y-28.38 C256.597 +G01 X+17.578 Y-28.266 C253.645 +G01 X+17.155 Y-28.131 C250.692 +G01 X+16.741 Y-27.973 C247.74 +G01 X+16.335 Y-27.796 C244.795 +G01 X+16.096 Y-27.675 B11.008 C243.073 +G01 X+15.857 Y-27.555 Z-1.333 B11.014 C241.352 +G01 X+15.539 Y-27.37 Z-1.332 B11.013 C238.791 +G01 X+15.172 Y-27.134 B11.012 C235.884 +G01 X+14.818 Y-26.881 C232.988 +G01 X+14.47 Y-26.605 C230.038 +G01 X+14.137 Y-26.311 B11.011 C227.09 +G01 X+13.923 Y-26.102 B11.008 C225.112 +G01 Y-25.969 Z-1.314 B10.888 C224.468 +G01 X+13.865 Y-25.91 B10.887 C223.933 +G01 X+13.591 Y-25.613 B10.889 C221.198 +G01 X+13.445 Y-25.436 Z-1.313 B10.884 C219.662 +G01 X+13.299 Y-25.259 Z-1.314 B10.888 C218.126 +G01 X+13.049 Y-24.925 C215.308 +G01 X+12.804 Y-24.561 C212.361 +G01 X+12.579 Y-24.184 C209.417 +G01 X+12.374 Y-23.797 C206.467 +G01 X+12.188 Y-23.399 C203.516 +G01 X+12.024 Y-22.992 B10.889 C200.564 +G01 X+11.88 Y-22.578 C197.611 +G01 X+11.758 Y-22.156 C194.659 +G01 X+11.658 Y-21.729 C191.708 +G01 X+11.58 Y-21.297 C188.756 +G01 X+11.525 Y-20.862 C185.804 +G01 X+11.491 Y-20.425 C182.852 +G01 X+11.481 Y-19.986 C179.9 +G01 X+11.493 Y-19.548 C176.948 +G01 X+11.527 Y-19.11 C173.996 +G01 X+11.584 Y-18.675 C171.044 +G01 X+11.664 Y-18.244 C168.092 +G01 X+11.765 Y-17.817 C165.14 +G01 X+11.889 Y-17.396 C162.188 +G01 X+12.033 Y-16.982 C159.236 +G01 X+12.199 Y-16.576 C156.284 +G01 X+12.386 Y-16.179 C153.332 +G01 X+12.593 Y-15.792 C150.38 +G01 X+12.819 Y-15.416 C147.428 +G01 X+13.065 Y-15.053 C144.476 +G01 X+13.328 Y-14.702 C141.524 +G01 X+13.61 Y-14.366 C138.572 +G01 X+13.909 Y-14.044 C135.624 +G01 X+14.223 Y-13.739 C132.676 +G01 X+14.553 Y-13.449 C129.729 +G01 X+14.733 Y-13.308 Z-1.313 B10.884 C128.202 +G01 X+14.912 Y-13.168 Z-1.314 B10.888 C126.675 +G01 X+15.256 Y-12.924 C123.834 +G01 X+15.626 Y-12.689 C120.887 +G01 X+16.008 Y-12.474 C117.943 +G01 X+16.401 Y-12.278 C114.992 +G01 X+16.803 Y-12.103 B10.889 C112.04 +G01 X+17.214 Y-11.949 C109.087 +G01 X+17.632 Y-11.816 C106.136 +G01 X+18.057 Y-11.705 C103.184 +G01 X+18.486 Y-11.616 C100.232 +G01 X+18.92 Y-11.55 C97.28 +G01 X+19.356 Y-11.505 C94.328 +G01 X+19.794 Y-11.483 C91.376 +G01 X+20.233 Y-11.484 C88.424 +G01 X+20.671 Y-11.507 C85.472 +G01 X+21.107 Y-11.553 C82.52 +G01 X+21.541 Y-11.621 C79.568 +G01 X+21.97 Y-11.712 C76.616 +G01 X+22.394 Y-11.824 C73.664 +G01 X+22.812 Y-11.958 C70.712 +G01 X+23.222 Y-12.114 C67.76 +G01 X+23.624 Y-12.29 C64.808 +G01 X+24.016 Y-12.487 C61.856 +G01 X+24.397 Y-12.703 C58.904 +G01 X+24.767 Y-12.939 C55.952 +G01 X+25.124 Y-13.194 C53. +G01 X+25.468 Y-13.467 C50.048 +G01 X+25.797 Y-13.757 C47.097 +G01 X+26.111 Y-14.064 C44.15 +G01 X+26.409 Y-14.387 C41.198 +G01 X+26.555 Y-14.564 Z-1.313 B10.884 C39.662 +G01 X+26.701 Y-14.741 Z-1.314 B10.888 C38.126 +G01 X+26.951 Y-15.075 C35.308 +G01 X+27.196 Y-15.439 C32.361 +G01 X+27.421 Y-15.816 C29.417 +G01 X+27.626 Y-16.203 C26.467 +G01 X+27.812 Y-16.601 C23.516 +G01 X+27.976 Y-17.008 B10.889 C20.564 +G01 X+28.12 Y-17.422 C17.612 +G01 X+28.242 Y-17.844 C14.659 +G01 X+28.342 Y-18.271 C11.708 +G01 X+28.42 Y-18.702 C8.756 +G01 X+28.475 Y-19.138 C5.804 +G01 X+28.509 Y-19.575 C2.852 +G01 X+28.519 Y-20.014 C359.9 +G01 X+28.507 Y-20.452 C356.948 +G01 X+28.473 Y-20.889 C353.996 +G01 X+28.416 Y-21.324 C351.044 +G01 X+28.336 Y-21.756 C348.092 +G01 X+28.235 Y-22.183 C345.14 +G01 X+28.112 Y-22.604 C342.188 +G01 X+27.967 Y-23.018 C339.236 +G01 X+27.801 Y-23.424 C336.284 +G01 X+27.614 Y-23.821 C333.332 +G01 X+27.407 Y-24.208 C330.38 +G01 X+27.181 Y-24.584 C327.428 +G01 X+26.935 Y-24.947 C324.476 +G01 X+26.672 Y-25.298 C321.524 +G01 X+26.39 Y-25.634 C318.572 +G01 X+26.091 Y-25.956 C315.624 +G01 X+25.777 Y-26.261 C312.676 +G01 X+25.447 Y-26.55 C309.729 +G01 X+25.267 Y-26.691 Z-1.313 B10.884 C308.202 +G01 X+25.088 Y-26.832 Z-1.314 B10.888 C306.674 +G01 X+24.744 Y-27.076 C303.834 +G01 X+24.374 Y-27.311 C300.887 +G01 X+23.992 Y-27.526 C297.943 +G01 X+23.599 Y-27.722 C294.992 +G01 X+23.197 Y-27.897 B10.889 C292.04 +G01 X+22.786 Y-28.051 C289.087 +G01 X+22.368 Y-28.183 C286.136 +G01 X+21.943 Y-28.294 C283.184 +G01 X+21.514 Y-28.384 C280.232 +G01 X+21.08 Y-28.45 C277.28 +G01 X+20.644 Y-28.495 C274.328 +G01 X+20.206 Y-28.517 C271.376 +G01 X+19.767 Y-28.516 C268.424 +G01 X+19.329 Y-28.493 C265.472 +G01 X+18.893 Y-28.447 C262.52 +G01 X+18.459 Y-28.379 C259.568 +G01 X+18.03 Y-28.288 C256.616 +G01 X+17.606 Y-28.176 C253.664 +G01 X+17.188 Y-28.042 C250.712 +G01 X+16.778 Y-27.886 C247.76 +G01 X+16.377 Y-27.71 C244.816 +G01 X+16.14 Y-27.591 Z-1.313 B10.885 C243.084 +G01 X+15.902 Y-27.471 Z-1.314 B10.891 C241.352 +G01 X+15.59 Y-27.29 C238.803 +G01 X+15.226 Y-27.056 B10.889 C235.895 +G01 X+14.876 Y-26.806 C233.003 +G01 X+14.532 Y-26.533 C230.048 +G01 X+14.203 Y-26.243 C227.097 +G01 X+13.99 Y-26.035 Z-1.313 B10.886 C225.115 +G01 Y-25.902 Z-1.295 B10.765 C224.471 +G01 X+13.934 Y-25.844 B10.764 C223.933 +G01 X+13.664 Y-25.552 Z-1.296 B10.766 C221.217 +G01 X+13.387 Y-25.219 C218.266 +G01 X+13.127 Y-24.871 C215.317 +G01 X+12.885 Y-24.511 C212.37 +G01 X+12.662 Y-24.138 B10.765 C209.416 +G01 X+12.459 Y-23.756 B10.766 C206.479 +G01 X+12.276 Y-23.363 C203.527 +G01 X+12.113 Y-22.96 C200.576 +G01 X+11.971 Y-22.55 C197.624 +G01 X+11.85 Y-22.134 C194.673 +G01 X+11.751 Y-21.711 C191.722 +G01 X+11.674 Y-21.285 C188.77 +G01 X+11.619 Y-20.854 C185.819 +G01 X+11.586 Y-20.422 C182.867 +G01 X+11.576 Y-19.988 C179.916 +G01 X+11.587 Y-19.554 C176.964 +G01 X+11.622 Y-19.122 C174.013 +G01 X+11.678 Y-18.692 C171.061 +G01 X+11.756 Y-18.265 C168.11 +G01 X+11.857 Y-17.843 C165.159 +G01 X+11.978 Y-17.427 C162.207 +G01 X+12.121 Y-17.017 C159.256 +G01 X+12.285 Y-16.615 C156.305 +G01 X+12.47 Y-16.223 C153.353 +G01 X+12.674 Y-15.84 C150.401 +G01 X+12.898 Y-15.469 C147.45 +G01 X+13.141 Y-15.109 C144.499 +G01 X+13.402 Y-14.762 C141.547 +G01 X+13.68 Y-14.43 C138.596 +G01 X+13.975 Y-14.112 C135.644 +G01 X+14.286 Y-13.809 C132.693 +G01 X+14.613 Y-13.523 C129.742 +G01 X+14.953 Y-13.255 C126.79 +G01 X+15.307 Y-13.004 C123.843 +G01 X+15.673 Y-12.771 C120.897 +G01 X+16.051 Y-12.558 C117.954 +G01 X+16.44 Y-12.365 C115.003 +G01 X+16.837 Y-12.192 C112.051 +G01 X+17.244 Y-12.039 C109.1 +G01 X+17.657 Y-11.908 C106.148 +G01 X+18.077 Y-11.798 C103.197 +G01 X+18.501 Y-11.71 C100.246 +G01 X+18.93 Y-11.644 C97.294 +G01 X+19.362 Y-11.6 C94.343 +G01 X+19.795 Y-11.578 C91.391 +G01 X+20.229 Y-11.579 C88.44 +G01 X+20.662 Y-11.602 C85.488 +G01 X+21.094 Y-11.647 C82.537 +G01 X+21.522 Y-11.714 C79.586 +G01 X+21.947 Y-11.804 C76.634 +G01 X+22.366 Y-11.915 C73.683 +G01 X+22.779 Y-12.047 C70.731 +G01 X+23.185 Y-12.201 C67.78 +G01 X+23.582 Y-12.375 C64.829 +G01 X+23.97 Y-12.57 C61.877 +G01 X+24.347 Y-12.784 C58.926 +G01 X+24.713 Y-13.017 C55.974 +G01 X+25.066 Y-13.269 C53.023 +G01 X+25.406 Y-13.539 C50.072 +G01 X+25.731 Y-13.826 C47.12 +G01 X+26.041 Y-14.129 C44.169 +G01 X+26.336 Y-14.448 C41.217 +G01 X+26.613 Y-14.781 C38.266 +G01 X+26.873 Y-15.128 C35.317 +G01 X+27.115 Y-15.489 C32.37 +G01 X+27.338 Y-15.862 B10.765 C29.417 +G01 X+27.541 Y-16.244 B10.766 C26.479 +G01 X+27.724 Y-16.637 C23.527 +G01 X+27.887 Y-17.039 C20.576 +G01 X+28.029 Y-17.449 C17.624 +G01 X+28.15 Y-17.866 C14.673 +G01 X+28.249 Y-18.288 C11.722 +G01 X+28.326 Y-18.715 C8.77 +G01 X+28.381 Y-19.146 C5.819 +G01 X+28.414 Y-19.578 C2.867 +G01 X+28.424 Y-20.012 C359.916 +G01 X+28.413 Y-20.446 C356.964 +G01 X+28.378 Y-20.878 C354.013 +G01 X+28.322 Y-21.308 C351.061 +G01 X+28.244 Y-21.735 C348.11 +G01 X+28.144 Y-22.157 C345.159 +G01 X+28.022 Y-22.573 C342.207 +G01 X+27.879 Y-22.983 C339.256 +G01 X+27.715 Y-23.384 C336.305 +G01 X+27.53 Y-23.777 C333.353 +G01 X+27.326 Y-24.16 C330.401 +G01 X+27.102 Y-24.531 C327.45 +G01 X+26.859 Y-24.891 C324.499 +G01 X+26.598 Y-25.238 C321.547 +G01 X+26.32 Y-25.57 C318.596 +G01 X+26.025 Y-25.888 C315.644 +G01 X+25.714 Y-26.191 C312.693 +G01 X+25.387 Y-26.476 C309.742 +G01 X+25.047 Y-26.745 C306.79 +G01 X+24.693 Y-26.996 C303.843 +G01 X+24.327 Y-27.228 C300.897 +G01 X+23.949 Y-27.441 C297.954 +G01 X+23.56 Y-27.635 C295.003 +G01 X+23.163 Y-27.808 C292.051 +G01 X+22.756 Y-27.961 C289.1 +G01 X+22.343 Y-28.092 C286.148 +G01 X+21.923 Y-28.202 C283.197 +G01 X+21.499 Y-28.29 C280.246 +G01 X+21.07 Y-28.356 C277.294 +G01 X+20.638 Y-28.4 C274.343 +G01 X+20.205 Y-28.422 C271.391 +G01 X+19.771 Y-28.421 C268.44 +G01 X+19.338 Y-28.398 C265.488 +G01 X+18.906 Y-28.353 C262.537 +G01 X+18.478 Y-28.286 C259.586 +G01 X+18.053 Y-28.196 C256.634 +G01 X+17.634 Y-28.085 C253.683 +G01 X+17.221 Y-27.953 C250.731 +G01 X+16.815 Y-27.799 C247.78 +G01 X+16.419 Y-27.625 C244.837 +G01 X+16.184 Y-27.507 Z-1.295 B10.763 C243.094 +G01 X+15.949 Y-27.389 Z-1.296 B10.769 C241.352 +G01 X+15.64 Y-27.21 B10.768 C238.825 +G01 X+15.28 Y-26.978 B10.767 C235.915 +G01 X+14.934 Y-26.731 B10.766 C233.026 +G01 X+14.594 Y-26.461 C230.072 +G01 X+14.269 Y-26.174 C227.12 +G01 X+14.057 Y-25.967 Z-1.295 B10.763 C225.118 +G01 Y-25.835 Z-1.277 B10.647 C224.47 +G01 X+14.002 Y-25.779 B10.646 C223.933 +G01 X+13.736 Y-25.491 Z-1.278 B10.648 C221.238 +G01 X+13.462 Y-25.161 C218.288 +G01 X+13.205 Y-24.818 C215.337 +G01 X+12.966 Y-24.462 B10.647 C212.386 +G01 X+12.746 Y-24.094 C209.435 +G01 X+12.545 Y-23.715 C206.486 +G01 X+12.363 Y-23.326 C203.535 +G01 X+12.202 Y-22.929 B10.648 C200.584 +G01 X+12.062 Y-22.523 C197.633 +G01 X+11.942 Y-22.111 C194.682 +G01 X+11.844 Y-21.694 C191.732 +G01 X+11.768 Y-21.272 C188.781 +G01 X+11.713 Y-20.846 C185.83 +G01 X+11.681 Y-20.418 C182.879 +G01 X+11.67 Y-19.99 C179.928 +G01 X+11.682 Y-19.561 C176.977 +G01 X+11.715 Y-19.133 C174.026 +G01 X+11.771 Y-18.708 C171.075 +G01 X+11.848 Y-18.286 C168.124 +G01 X+11.948 Y-17.869 C165.174 +G01 X+12.068 Y-17.457 C162.223 +G01 X+12.209 Y-17.052 C159.272 +G01 X+12.371 Y-16.655 C156.321 +G01 X+12.554 Y-16.267 C153.37 +G01 X+12.756 Y-15.888 C150.419 +G01 X+12.977 Y-15.521 C147.468 +G01 X+13.217 Y-15.165 C144.517 +G01 X+13.475 Y-14.822 C141.566 +G01 X+13.75 Y-14.493 C138.615 +G01 X+14.042 Y-14.179 C135.665 +G01 X+14.349 Y-13.88 C132.714 +G01 X+14.672 Y-13.597 C129.763 +G01 X+15.009 Y-13.331 C126.812 +G01 X+15.359 Y-13.083 C123.861 +G01 X+15.721 Y-12.853 B10.647 C120.91 +G01 X+16.094 Y-12.643 C117.965 +G01 X+16.478 Y-12.451 C115.01 +G01 X+16.871 Y-12.28 B10.648 C112.059 +G01 X+17.273 Y-12.129 C109.109 +G01 X+17.682 Y-11.999 C106.158 +G01 X+18.097 Y-11.891 C103.207 +G01 X+18.517 Y-11.803 C100.256 +G01 X+18.941 Y-11.738 C97.305 +G01 X+19.367 Y-11.694 C94.354 +G01 X+19.796 Y-11.673 C91.403 +G01 X+20.225 C88.453 +G01 X+20.653 Y-11.696 C85.502 +G01 X+21.08 Y-11.74 C82.551 +G01 X+21.503 Y-11.807 C79.6 +G01 X+21.923 Y-11.895 C76.649 +G01 X+22.338 Y-12.005 C73.698 +G01 X+22.746 Y-12.136 C70.747 +G01 X+23.148 Y-12.288 C67.796 +G01 X+23.54 Y-12.46 C64.845 +G01 X+23.924 Y-12.652 C61.895 +G01 X+24.297 Y-12.864 C58.944 +G01 X+24.659 Y-13.095 C55.993 +G01 X+25.008 Y-13.344 C53.042 +G01 X+25.344 Y-13.61 C50.091 +G01 X+25.666 Y-13.894 C47.14 +G01 X+25.973 Y-14.194 C44.189 +G01 X+26.264 Y-14.509 C41.238 +G01 X+26.538 Y-14.838 C38.288 +G01 X+26.795 Y-15.182 C35.337 +G01 X+27.034 Y-15.538 B10.647 C32.386 +G01 X+27.254 Y-15.906 C29.435 +G01 X+27.455 Y-16.285 C26.486 +G01 X+27.637 Y-16.674 C23.535 +G01 X+27.798 Y-17.071 B10.648 C20.584 +G01 X+27.938 Y-17.477 C17.633 +G01 X+28.058 Y-17.889 C14.682 +G01 X+28.156 Y-18.306 C11.732 +G01 X+28.232 Y-18.728 C8.781 +G01 X+28.287 Y-19.154 C5.83 +G01 X+28.319 Y-19.581 C2.879 +G01 X+28.33 Y-20.01 C359.928 +G01 X+28.318 Y-20.439 C356.977 +G01 X+28.285 Y-20.867 C354.026 +G01 X+28.229 Y-21.292 C351.075 +G01 X+28.152 Y-21.714 C348.124 +G01 X+28.052 Y-22.131 C345.174 +G01 X+27.932 Y-22.543 C342.223 +G01 X+27.791 Y-22.948 C339.272 +G01 X+27.629 Y-23.345 C336.321 +G01 X+27.446 Y-23.733 C333.37 +G01 X+27.244 Y-24.112 C330.419 +G01 X+27.023 Y-24.479 C327.468 +G01 X+26.783 Y-24.835 C324.517 +G01 X+26.525 Y-25.178 C321.566 +G01 X+26.25 Y-25.507 C318.615 +G01 X+25.958 Y-25.821 C315.665 +G01 X+25.651 Y-26.12 C312.714 +G01 X+25.328 Y-26.403 C309.763 +G01 X+24.991 Y-26.669 C306.812 +G01 X+24.641 Y-26.917 C303.861 +G01 X+24.279 Y-27.146 B10.647 C300.91 +G01 X+23.906 Y-27.357 C297.965 +G01 X+23.522 Y-27.549 C295.01 +G01 X+23.129 Y-27.72 B10.648 C292.059 +G01 X+22.727 Y-27.871 C289.109 +G01 X+22.318 Y-28.001 C286.158 +G01 X+21.903 Y-28.109 C283.207 +G01 X+21.483 Y-28.197 C280.256 +G01 X+21.059 Y-28.262 C277.305 +G01 X+20.633 Y-28.306 C274.354 +G01 X+20.204 Y-28.327 C271.403 +G01 X+19.775 C268.453 +G01 X+19.347 Y-28.304 C265.502 +G01 X+18.92 Y-28.259 C262.551 +G01 X+18.497 Y-28.193 C259.6 +G01 X+18.077 Y-28.105 C256.649 +G01 X+17.662 Y-27.995 C253.698 +G01 X+17.254 Y-27.864 C250.747 +G01 X+16.852 Y-27.712 C247.796 +G01 X+16.461 Y-27.54 C244.854 +G01 X+16.226 Y-27.423 Z-1.277 B10.644 C243.103 +G01 X+15.992 Y-27.305 Z-1.278 B10.65 C241.352 +G01 X+15.69 Y-27.129 C238.843 +G01 X+15.334 Y-26.901 B10.649 C235.931 +G01 X+14.992 Y-26.657 B10.648 C233.045 +G01 X+14.656 Y-26.39 C230.091 +G01 X+14.334 Y-26.106 C227.14 +G01 X+14.124 Y-25.9 Z-1.277 B10.645 C225.117 +G01 X+14.123 Y-25.768 Z-1.26 B10.524 C224.457 +G01 X+14.07 Y-25.713 C223.933 +G01 X+13.809 Y-25.43 B10.525 C221.247 +G01 X+13.537 Y-25.104 C218.296 +G01 X+13.283 Y-24.765 C215.346 +G01 X+13.047 Y-24.412 C212.396 +G01 X+12.829 Y-24.049 C209.445 +G01 X+12.63 Y-23.674 C206.499 +G01 X+12.451 Y-23.29 C203.543 +G01 X+12.291 Y-22.897 C200.587 +G01 X+12.152 Y-22.496 C197.63 +G01 X+12.034 Y-22.089 C194.679 +G01 X+11.937 Y-21.675 C191.722 +G01 X+11.862 Y-21.259 C188.778 +G01 X+11.808 Y-20.838 C185.828 +G01 X+11.775 Y-20.415 C182.877 +G01 X+11.765 Y-19.991 C179.927 +G01 X+11.776 Y-19.567 C176.977 +G01 X+11.809 Y-19.145 B10.526 C174.027 +G01 X+11.864 Y-18.724 C171.076 +G01 X+11.941 Y-18.307 C168.126 +G01 X+12.039 Y-17.894 C165.175 +G01 X+12.158 Y-17.487 C162.225 +G01 X+12.297 Y-17.087 C159.275 +G01 X+12.457 Y-16.694 C156.324 +G01 X+12.638 Y-16.31 C153.374 +G01 X+12.837 Y-15.936 C150.424 +G01 X+13.056 Y-15.573 C147.473 +G01 X+13.293 Y-15.221 B10.525 C144.523 +G01 X+13.548 Y-14.882 C141.573 +G01 X+13.82 Y-14.557 C138.622 +G01 X+14.108 Y-14.246 C135.672 +G01 X+14.412 Y-13.95 C132.722 +G01 X+14.731 Y-13.671 C129.772 +G01 X+15.064 Y-13.408 C126.821 +G01 X+15.41 Y-13.163 C123.871 +G01 X+15.768 Y-12.935 C120.921 +G01 X+16.138 Y-12.726 C117.965 +G01 X+16.517 Y-12.538 C115.021 +G01 X+16.906 Y-12.368 C112.065 +G01 X+17.303 Y-12.219 C109.108 +G01 X+17.707 Y-12.091 C106.154 +G01 X+18.117 Y-11.983 C103.204 +G01 X+18.532 Y-11.897 C100.253 +G01 X+18.951 Y-11.832 C97.303 +G01 X+19.373 Y-11.789 C94.353 +G01 X+19.797 Y-11.767 C91.402 +G01 X+20.221 Y-11.768 C88.452 +G01 X+20.644 Y-11.79 B10.526 C85.502 +G01 X+21.066 Y-11.834 C82.551 +G01 X+21.485 Y-11.9 C79.601 +G01 X+21.9 Y-11.987 C76.651 +G01 X+22.31 Y-12.095 C73.7 +G01 X+22.714 Y-12.225 C70.75 +G01 X+23.11 Y-12.375 C67.8 +G01 X+23.499 Y-12.545 C64.849 +G01 X+23.878 Y-12.735 C61.899 +G01 X+24.247 Y-12.944 C58.949 +G01 X+24.604 Y-13.172 C55.998 +G01 X+24.95 Y-13.418 B10.525 C53.048 +G01 X+25.282 Y-13.682 C50.098 +G01 X+25.6 Y-13.962 C47.147 +G01 X+25.904 Y-14.258 C44.197 +G01 X+26.191 Y-14.57 C41.247 +G01 X+26.463 Y-14.896 C38.296 +G01 X+26.717 Y-15.235 C35.346 +G01 X+26.953 Y-15.587 C32.396 +G01 X+27.171 Y-15.951 C29.445 +G01 X+27.37 Y-16.326 C26.499 +G01 X+27.549 Y-16.71 C23.543 +G01 X+27.709 Y-17.103 C20.587 +G01 X+27.848 Y-17.504 C17.63 +G01 X+27.966 Y-17.911 C14.679 +G01 X+28.063 Y-18.325 C11.722 +G01 X+28.138 Y-18.741 C8.778 +G01 X+28.192 Y-19.162 C5.828 +G01 X+28.225 Y-19.585 C2.877 +G01 X+28.235 Y-20.009 C359.927 +G01 X+28.224 Y-20.432 C356.977 +G01 X+28.191 Y-20.855 B10.526 C354.027 +G01 X+28.136 Y-21.276 C351.076 +G01 X+28.059 Y-21.693 C348.126 +G01 X+27.961 Y-22.106 C345.175 +G01 X+27.842 Y-22.513 C342.225 +G01 X+27.703 Y-22.913 C339.275 +G01 X+27.543 Y-23.306 C336.324 +G01 X+27.362 Y-23.69 C333.374 +G01 X+27.163 Y-24.064 C330.424 +G01 X+26.944 Y-24.427 C327.473 +G01 X+26.707 Y-24.779 B10.525 C324.523 +G01 X+26.452 Y-25.118 C321.573 +G01 X+26.18 Y-25.443 C318.622 +G01 X+25.892 Y-25.754 C315.672 +G01 X+25.588 Y-26.049 C312.722 +G01 X+25.269 Y-26.329 C309.772 +G01 X+24.936 Y-26.592 C306.821 +G01 X+24.59 Y-26.837 C303.871 +G01 X+24.232 Y-27.064 C300.921 +G01 X+23.862 Y-27.273 C297.965 +G01 X+23.483 Y-27.462 C295.02 +G01 X+23.094 Y-27.632 C292.065 +G01 X+22.697 Y-27.781 C289.108 +G01 X+22.293 Y-27.909 C286.154 +G01 X+21.883 Y-28.017 C283.204 +G01 X+21.468 Y-28.103 C280.253 +G01 X+21.049 Y-28.168 C277.303 +G01 X+20.627 Y-28.211 C274.353 +G01 X+20.203 Y-28.233 C271.402 +G01 X+19.779 Y-28.232 C268.452 +G01 X+19.356 Y-28.21 B10.526 C265.502 +G01 X+18.934 Y-28.166 C262.551 +G01 X+18.515 Y-28.1 C259.601 +G01 X+18.1 Y-28.013 C256.651 +G01 X+17.69 Y-27.905 C253.7 +G01 X+17.286 Y-27.775 C250.75 +G01 X+16.89 Y-27.625 C247.8 +G01 X+16.502 Y-27.455 C244.858 +G01 X+16.27 Y-27.339 Z-1.259 B10.522 C243.105 +G01 X+16.037 Y-27.222 Z-1.26 B10.528 C241.352 +G01 X+15.74 Y-27.049 B10.527 C238.848 +G01 X+15.388 Y-26.823 B10.526 C235.935 +G01 X+15.051 Y-26.582 C233.051 +G01 X+14.718 Y-26.318 B10.525 C230.098 +G01 X+14.4 Y-26.038 C227.147 +G01 X+14.191 Y-25.833 B10.522 C225.104 +G01 X+14.19 Y-25.701 Z-1.242 B10.402 C224.444 +G01 X+14.138 Y-25.647 B10.401 C223.933 +G01 X+13.881 Y-25.369 B10.402 C221.255 +G01 X+13.613 Y-25.047 C218.305 +G01 X+13.361 Y-24.711 C215.355 +G01 X+13.127 Y-24.363 C212.405 +G01 X+12.912 Y-24.003 C209.456 +G01 X+12.715 Y-23.633 C206.511 +G01 X+12.538 Y-23.253 C203.555 +G01 X+12.38 Y-22.865 C200.6 +G01 X+12.243 Y-22.469 C197.644 +G01 X+12.126 Y-22.066 C194.689 +G01 X+12.03 Y-21.658 B10.403 C191.733 +G01 X+11.953 Y-21.23 B10.402 C188.665 +G01 X+11.901 Y-20.821 C185.762 +G01 X+11.87 Y-20.412 B10.403 C182.876 +G01 X+11.859 Y-19.993 C179.926 +G01 X+11.871 Y-19.574 C176.977 +G01 X+11.903 Y-19.156 C174.027 +G01 X+11.958 Y-18.74 C171.077 +G01 X+12.033 Y-18.328 C168.127 +G01 X+12.13 Y-17.92 C165.177 +G01 X+12.247 Y-17.518 C162.228 +G01 X+12.385 Y-17.122 C159.278 +G01 X+12.543 Y-16.734 C156.328 +G01 X+12.722 Y-16.354 C153.378 +G01 X+12.919 Y-15.984 C150.428 +G01 X+13.135 Y-15.625 C147.479 +G01 X+13.369 Y-15.277 C144.529 +G01 X+13.621 Y-14.942 C141.579 +G01 X+13.89 Y-14.621 C138.629 +G01 X+14.103 Y-14.391 B10.4 C136.404 +G01 X+14.175 Y-14.313 B10.403 C135.679 +G01 X+14.395 Y-14.099 B10.4 C133.501 +G01 X+14.475 Y-14.021 B10.403 C132.73 +G01 X+14.791 Y-13.744 B10.402 C129.78 +G01 X+15.12 Y-13.485 C126.83 +G01 X+15.461 Y-13.242 C123.88 +G01 X+15.815 Y-13.017 C120.93 +G01 X+16.18 Y-12.811 C117.981 +G01 X+16.555 Y-12.624 C115.033 +G01 X+16.94 Y-12.457 C112.077 +G01 X+17.332 Y-12.309 C109.122 +G01 X+17.732 Y-12.182 C106.166 +G01 X+18.137 Y-12.075 C103.211 +G01 X+18.567 Y-11.987 C100.117 +G01 X+18.974 Y-11.925 C97.214 +G01 X+19.379 Y-11.883 B10.403 C94.351 +G01 X+19.797 Y-11.862 C91.401 +G01 X+20.217 C88.451 +G01 X+20.635 Y-11.884 C85.502 +G01 X+21.052 Y-11.928 C82.552 +G01 X+21.466 Y-11.993 C79.602 +G01 X+21.877 Y-12.079 C76.652 +G01 X+22.282 Y-12.186 C73.703 +G01 X+22.681 Y-12.314 C70.753 +G01 X+23.073 Y-12.462 C67.803 +G01 X+23.457 Y-12.63 C64.853 +G01 X+23.832 Y-12.818 C61.903 +G01 X+24.197 Y-13.025 C58.953 +G01 X+24.55 Y-13.25 C56.004 +G01 X+24.892 Y-13.493 C53.054 +G01 X+25.22 Y-13.753 C50.104 +G01 X+25.458 Y-13.963 B10.4 C47.856 +G01 X+25.535 Y-14.03 B10.403 C47.154 +G01 X+25.757 Y-14.247 B10.4 C44.953 +G01 X+25.835 Y-14.323 B10.403 C44.204 +G01 X+26.041 Y-14.546 B10.4 C42.05 +G01 X+26.119 Y-14.631 B10.402 C41.255 +G01 X+26.387 Y-14.953 C38.305 +G01 X+26.639 Y-15.289 C35.355 +G01 X+26.873 Y-15.637 C32.405 +G01 X+27.088 Y-15.996 C29.456 +G01 X+27.285 Y-16.367 C26.511 +G01 X+27.462 Y-16.746 C23.555 +G01 X+27.62 Y-17.135 C20.6 +G01 X+27.757 Y-17.531 C17.644 +G01 X+27.874 Y-17.934 C14.689 +G01 X+27.97 Y-18.342 B10.403 C11.733 +G01 X+28.047 Y-18.77 B10.402 C8.665 +G01 X+28.099 Y-19.179 C5.762 +G01 X+28.13 Y-19.588 B10.403 C2.876 +G01 X+28.141 Y-20.007 C359.926 +G01 X+28.129 Y-20.426 C356.977 +G01 X+28.097 Y-20.844 C354.027 +G01 X+28.043 Y-21.26 C351.077 +G01 X+27.967 Y-21.672 C348.127 +G01 X+27.87 Y-22.08 C345.177 +G01 X+27.753 Y-22.482 C342.228 +G01 X+27.615 Y-22.878 C339.278 +G01 X+27.457 Y-23.266 C336.328 +G01 X+27.279 Y-23.646 C333.378 +G01 X+27.081 Y-24.016 C330.428 +G01 X+26.865 Y-24.375 C327.479 +G01 X+26.631 Y-24.722 C324.529 +G01 X+26.379 Y-25.058 C321.579 +G01 X+26.11 Y-25.379 C318.629 +G01 X+25.897 Y-25.609 B10.4 C316.404 +G01 X+25.825 Y-25.687 B10.403 C315.679 +G01 X+25.605 Y-25.901 B10.4 C313.501 +G01 X+25.525 Y-25.979 B10.403 C312.73 +G01 X+25.209 Y-26.255 B10.402 C309.78 +G01 X+24.88 Y-26.515 C306.83 +G01 X+24.539 Y-26.758 C303.88 +G01 X+24.185 Y-26.983 C300.93 +G01 X+23.82 Y-27.189 C297.981 +G01 X+23.445 Y-27.376 C295.033 +G01 X+23.06 Y-27.543 C292.077 +G01 X+22.668 Y-27.691 C289.122 +G01 X+22.268 Y-27.818 C286.166 +G01 X+21.863 Y-27.924 C283.211 +G01 X+21.433 Y-28.013 C280.117 +G01 X+21.026 Y-28.075 C277.214 +G01 X+20.621 Y-28.117 B10.403 C274.351 +G01 X+20.203 Y-28.138 C271.401 +G01 X+19.783 C268.451 +G01 X+19.365 Y-28.116 C265.502 +G01 X+18.948 Y-28.072 C262.552 +G01 X+18.534 Y-28.007 C259.602 +G01 X+18.123 Y-27.921 C256.652 +G01 X+17.718 Y-27.814 C253.703 +G01 X+17.319 Y-27.686 C250.753 +G01 X+16.927 Y-27.538 C247.803 +G01 X+16.544 Y-27.37 C244.862 +G01 X+16.313 Y-27.255 B10.399 C243.107 +G01 X+16.082 Y-27.138 Z-1.243 B10.405 C241.352 +G01 X+15.79 Y-26.969 C238.852 +G01 X+15.442 Y-26.745 B10.404 C235.938 +G01 X+15.108 Y-26.507 Z-1.242 B10.403 C233.054 +G01 X+14.78 Y-26.246 C230.104 +G01 X+14.542 Y-26.037 B10.4 C227.856 +G01 X+14.465 Y-25.969 B10.403 C227.154 +G01 X+14.257 Y-25.766 B10.4 C225.096 +G01 Y-25.634 Z-1.225 B10.279 C224.43 +G01 X+14.206 Y-25.582 B10.278 C223.933 +G01 X+13.953 Y-25.307 B10.28 C221.263 +G01 X+13.688 Y-24.989 C218.313 +G01 X+13.439 Y-24.658 C215.364 +G01 X+13.208 Y-24.314 C212.415 +G01 X+12.995 Y-23.958 C209.466 +G01 X+12.8 Y-23.592 C206.513 +G01 X+12.625 Y-23.217 C203.568 +G01 X+12.469 Y-22.833 C200.613 +G01 X+12.334 Y-22.442 C197.658 +G01 X+12.218 Y-22.044 C194.703 +G01 X+12.123 Y-21.64 C191.748 +G01 X+12.049 Y-21.233 C188.793 +G01 X+11.996 Y-20.822 C185.839 +G01 X+11.965 Y-20.409 C182.884 +G01 X+11.955 Y-19.977 C179.803 +G01 X+11.966 Y-19.569 C176.9 +G01 X+11.997 Y-19.167 C174.027 +G01 X+12.051 Y-18.756 C171.078 +G01 X+12.125 Y-18.349 C168.129 +G01 X+12.221 Y-17.946 C165.179 +G01 X+12.337 Y-17.548 C162.23 +G01 X+12.473 Y-17.157 C159.281 +G01 X+12.63 Y-16.773 C156.331 +G01 X+12.805 Y-16.398 C153.382 +G01 X+13 Y-16.032 C150.433 +G01 X+13.214 Y-15.677 C147.484 +G01 X+13.445 Y-15.334 C144.534 +G01 X+13.694 Y-15.002 C141.585 +G01 X+13.96 Y-14.684 C138.636 +G01 X+14.186 Y-14.441 B10.278 C136.252 +G01 X+14.242 Y-14.381 B10.28 C135.687 +G01 X+14.475 Y-14.153 B10.278 C133.349 +G01 X+14.539 Y-14.092 B10.28 C132.737 +G01 X+14.778 Y-13.881 B10.278 C130.445 +G01 X+14.85 Y-13.818 B10.28 C129.788 +G01 X+15.175 Y-13.561 C126.839 +G01 X+15.513 Y-13.321 C123.89 +G01 X+15.863 Y-13.099 C120.94 +G01 X+16.223 Y-12.895 C117.991 +G01 X+16.594 Y-12.71 C115.045 +G01 X+16.974 Y-12.545 C112.09 +G01 X+17.362 Y-12.399 C109.135 +G01 X+17.756 Y-12.273 C106.181 +G01 X+18.157 Y-12.168 C103.226 +G01 X+18.563 Y-12.083 C100.271 +G01 X+18.972 Y-12.02 C97.316 +G01 X+19.384 Y-11.978 C94.361 +G01 X+19.819 Y-11.957 C91.254 +G01 X+20.227 Y-11.958 C88.351 +G01 X+20.634 Y-11.979 C85.448 +G01 X+21.039 Y-12.021 C82.545 +G01 X+21.448 Y-12.085 C79.603 +G01 X+21.853 Y-12.17 C76.654 +G01 X+22.254 Y-12.276 C73.704 +G01 X+22.648 Y-12.402 C70.755 +G01 X+23.036 Y-12.549 C67.806 +G01 X+23.416 Y-12.715 C64.857 +G01 X+23.786 Y-12.901 C61.908 +G01 X+24.147 Y-13.105 C58.958 +G01 X+24.496 Y-13.327 C56.009 +G01 X+24.834 Y-13.568 C53.06 +G01 X+25.158 Y-13.825 C50.11 +G01 X+25.41 Y-14.047 B10.278 C47.704 +G01 X+25.469 Y-14.099 B10.28 C47.161 +G01 X+25.705 Y-14.328 B10.278 C44.8 +G01 X+25.766 Y-14.388 B10.28 C44.212 +G01 X+25.985 Y-14.625 B10.278 C41.897 +G01 X+26.047 Y-14.692 B10.28 C41.263 +G01 X+26.312 Y-15.011 C38.313 +G01 X+26.561 Y-15.342 C35.364 +G01 X+26.792 Y-15.686 C32.415 +G01 X+27.005 Y-16.042 C29.466 +G01 X+27.2 Y-16.408 C26.513 +G01 X+27.375 Y-16.783 C23.568 +G01 X+27.531 Y-17.167 C20.613 +G01 X+27.666 Y-17.558 C17.658 +G01 X+27.782 Y-17.956 C14.703 +G01 X+27.877 Y-18.359 C11.748 +G01 X+27.951 Y-18.767 C8.793 +G01 X+28.004 Y-19.178 C5.839 +G01 X+28.035 Y-19.591 C2.884 +G01 X+28.045 Y-20.023 C359.803 +G01 X+28.034 Y-20.431 C356.9 +G01 X+28.003 Y-20.833 C354.027 +G01 X+27.949 Y-21.243 C351.078 +G01 X+27.875 Y-21.651 C348.129 +G01 X+27.779 Y-22.054 C345.179 +G01 X+27.663 Y-22.452 C342.23 +G01 X+27.527 Y-22.843 C339.281 +G01 X+27.37 Y-23.227 C336.331 +G01 X+27.195 Y-23.602 C333.382 +G01 X+27 Y-23.968 C330.433 +G01 X+26.786 Y-24.323 C327.484 +G01 X+26.555 Y-24.666 C324.534 +G01 X+26.306 Y-24.997 C321.585 +G01 X+26.04 Y-25.315 C318.636 +G01 X+25.814 Y-25.559 B10.278 C316.252 +G01 X+25.758 Y-25.619 B10.28 C315.687 +G01 X+25.525 Y-25.846 B10.278 C313.349 +G01 X+25.461 Y-25.908 B10.28 C312.737 +G01 X+25.222 Y-26.119 B10.278 C310.445 +G01 X+25.15 Y-26.182 B10.28 C309.788 +G01 X+24.825 Y-26.439 C306.839 +G01 X+24.487 Y-26.678 C303.89 +G01 X+24.137 Y-26.901 C300.94 +G01 X+23.777 Y-27.104 C297.991 +G01 X+23.406 Y-27.289 C295.045 +G01 X+23.026 Y-27.455 C292.09 +G01 X+22.638 Y-27.601 C289.135 +G01 X+22.244 Y-27.727 C286.181 +G01 X+21.843 Y-27.832 C283.226 +G01 X+21.437 Y-27.916 C280.271 +G01 X+21.028 Y-27.98 C277.316 +G01 X+20.616 Y-28.022 C274.361 +G01 X+20.181 Y-28.043 C271.254 +G01 X+19.773 Y-28.042 C268.351 +G01 X+19.366 Y-28.021 C265.448 +G01 X+18.961 Y-27.978 C262.545 +G01 X+18.552 Y-27.915 C259.603 +G01 X+18.147 Y-27.829 C256.654 +G01 X+17.746 Y-27.724 C253.704 +G01 X+17.352 Y-27.597 C250.755 +G01 X+16.964 Y-27.451 C247.806 +G01 X+16.586 Y-27.285 C244.866 +G01 X+16.356 Y-27.17 B10.277 C243.109 +G01 X+16.127 Y-27.055 Z-1.226 B10.283 C241.352 +G01 X+15.84 Y-26.889 Z-1.225 B10.282 C238.857 +G01 X+15.495 Y-26.667 B10.281 C235.941 +G01 X+15.166 Y-26.432 B10.28 C233.057 +G01 X+14.842 Y-26.175 C230.111 +G01 X+14.59 Y-25.953 B10.278 C227.704 +G01 X+14.531 Y-25.901 B10.28 C227.161 +G01 X+14.324 Y-25.699 B10.277 C225.099 +G01 Y-25.567 Z-1.208 B10.157 C224.417 +G01 X+14.275 Y-25.516 B10.156 C223.933 +G01 X+14.025 Y-25.246 B10.157 C221.271 +G01 X+13.811 Y-24.99 B10.156 C218.841 +G01 X+13.763 Y-24.932 B10.157 C218.322 +G01 X+13.517 Y-24.604 C215.373 +G01 X+13.289 Y-24.264 C212.424 +G01 X+13.078 Y-23.913 C209.476 +G01 X+12.886 Y-23.551 C206.527 +G01 X+12.713 Y-23.181 C203.58 +G01 X+12.559 Y-22.801 C200.626 +G01 X+12.424 Y-22.414 C197.672 +G01 X+12.31 Y-22.021 C194.717 +G01 X+12.216 Y-21.623 C191.763 +G01 X+12.15 Y-21.257 B10.156 C189.094 +G01 X+12.143 Y-21.22 B10.157 C188.809 +G01 X+12.091 Y-20.814 B10.158 C185.855 +G01 X+12.059 Y-20.405 C182.901 +G01 X+12.049 Y-19.996 C179.946 +G01 X+12.06 Y-19.587 C176.992 +G01 X+12.091 Y-19.179 C174.038 +G01 X+12.148 Y-18.753 B10.157 C170.94 +G01 X+12.221 Y-18.357 C168.037 +G01 X+12.312 Y-17.971 B10.158 C165.181 +G01 X+12.427 Y-17.578 C162.231 +G01 X+12.561 Y-17.192 C159.283 +G01 X+12.716 Y-16.812 C156.335 +G01 X+12.889 Y-16.442 C153.386 +G01 X+13.082 Y-16.08 C150.437 +G01 X+13.293 Y-15.729 C147.488 +G01 X+13.522 Y-15.39 C144.54 +G01 X+13.768 Y-15.062 C141.591 +G01 X+14.03 Y-14.748 C138.642 +G01 X+14.308 Y-14.448 C135.694 +G01 X+14.555 Y-14.208 B10.156 C133.196 +G01 X+14.602 Y-14.162 B10.157 C132.745 +G01 X+14.855 Y-13.94 B10.156 C130.293 +G01 X+14.909 Y-13.892 B10.157 C129.796 +G01 X+15.169 Y-13.687 B10.156 C127.389 +G01 X+15.231 Y-13.638 B10.157 C126.848 +G01 X+15.564 Y-13.401 C123.899 +G01 X+15.91 Y-13.181 C120.95 +G01 X+16.266 Y-12.98 C118.001 +G01 X+16.633 Y-12.797 C115.057 +G01 X+17.008 Y-12.633 C112.103 +G01 X+17.391 Y-12.489 C109.149 +G01 X+17.781 Y-12.365 C106.195 +G01 X+18.177 Y-12.26 C103.24 +G01 X+18.545 Y-12.184 B10.156 C100.546 +G01 X+18.578 Y-12.177 B10.157 C100.286 +G01 X+18.943 Y-12.12 B10.156 C97.642 +G01 X+18.983 Y-12.114 B10.157 C97.332 +G01 X+19.39 Y-12.072 B10.158 C94.378 +G01 X+19.799 Y-12.051 C91.423 +G01 X+20.208 C88.469 +G01 X+20.617 Y-12.073 C85.515 +G01 X+21.025 Y-12.115 C82.56 +G01 X+21.446 Y-12.182 B10.157 C79.488 +G01 X+21.84 Y-12.265 C76.586 +G01 X+22.226 Y-12.367 B10.158 C73.706 +G01 X+22.616 Y-12.491 C70.758 +G01 X+22.999 Y-12.636 C67.809 +G01 X+23.374 Y-12.8 C64.86 +G01 X+23.74 Y-12.983 C61.912 +G01 X+24.096 Y-13.185 C58.963 +G01 X+24.442 Y-13.405 C56.014 +G01 X+24.775 Y-13.643 C53.066 +G01 X+25.096 Y-13.897 C50.117 +G01 X+25.404 Y-14.167 C47.168 +G01 X+25.697 Y-14.453 C44.219 +G01 X+25.928 Y-14.703 B10.156 C41.745 +G01 X+25.975 Y-14.754 B10.157 C41.271 +G01 X+26.189 Y-15.01 B10.156 C38.841 +G01 X+26.237 Y-15.068 B10.157 C38.322 +G01 X+26.483 Y-15.396 C35.373 +G01 X+26.711 Y-15.736 C32.424 +G01 X+26.922 Y-16.087 C29.476 +G01 X+27.114 Y-16.448 C26.527 +G01 X+27.287 Y-16.819 C23.58 +G01 X+27.441 Y-17.199 C20.626 +G01 X+27.576 Y-17.585 C17.672 +G01 X+27.69 Y-17.979 C14.717 +G01 X+27.784 Y-18.377 C11.763 +G01 X+27.85 Y-18.743 B10.156 C9.094 +G01 X+27.857 Y-18.78 B10.157 C8.809 +G01 X+27.909 Y-19.186 B10.158 C5.855 +G01 X+27.941 Y-19.594 C2.901 +G01 X+27.951 Y-20.004 C359.946 +G01 X+27.94 Y-20.413 C356.992 +G01 X+27.909 Y-20.821 C354.038 +G01 X+27.852 Y-21.247 B10.157 C350.94 +G01 X+27.779 Y-21.643 C348.037 +G01 X+27.688 Y-22.028 B10.158 C345.181 +G01 X+27.573 Y-22.422 C342.231 +G01 X+27.439 Y-22.808 C339.283 +G01 X+27.284 Y-23.187 C336.335 +G01 X+27.111 Y-23.558 C333.386 +G01 X+26.918 Y-23.92 C330.437 +G01 X+26.707 Y-24.27 C327.488 +G01 X+26.478 Y-24.61 C324.54 +G01 X+26.232 Y-24.937 C321.591 +G01 X+25.97 Y-25.252 C318.642 +G01 X+25.692 Y-25.552 C315.694 +G01 X+25.445 Y-25.792 B10.156 C313.196 +G01 X+25.398 Y-25.838 B10.157 C312.745 +G01 X+25.145 Y-26.06 B10.156 C310.293 +G01 X+25.091 Y-26.108 B10.157 C309.796 +G01 X+24.831 Y-26.313 B10.156 C307.389 +G01 X+24.769 Y-26.362 B10.157 C306.848 +G01 X+24.436 Y-26.599 C303.899 +G01 X+24.09 Y-26.819 C300.95 +G01 X+23.734 Y-27.02 C298.001 +G01 X+23.367 Y-27.203 C295.057 +G01 X+22.992 Y-27.367 C292.103 +G01 X+22.609 Y-27.511 C289.149 +G01 X+22.219 Y-27.635 C286.195 +G01 X+21.823 Y-27.739 C283.24 +G01 X+21.455 Y-27.816 B10.156 C280.546 +G01 X+21.422 Y-27.823 B10.157 C280.286 +G01 X+21.057 Y-27.88 B10.156 C277.642 +G01 X+21.017 Y-27.886 B10.157 C277.332 +G01 X+20.61 Y-27.928 B10.158 C274.378 +G01 X+20.201 Y-27.949 C271.423 +G01 X+19.792 Y-27.948 C268.469 +G01 X+19.383 Y-27.927 C265.515 +G01 X+18.975 Y-27.885 C262.56 +G01 X+18.554 Y-27.818 B10.157 C259.488 +G01 X+18.16 Y-27.735 C256.586 +G01 X+17.774 Y-27.633 B10.158 C253.706 +G01 X+17.384 Y-27.509 C250.758 +G01 X+17.001 Y-27.364 C247.809 +G01 X+16.627 Y-27.2 C244.87 +G01 X+16.401 Y-27.087 B10.154 C243.111 +G01 X+16.174 Y-26.973 B10.16 C241.352 +G01 X+15.89 Y-26.808 C238.862 +G01 X+15.549 Y-26.59 B10.159 C235.944 +G01 X+15.224 Y-26.357 B10.158 C233.059 +G01 X+14.904 Y-26.103 C230.117 +G01 X+14.596 Y-25.833 C227.168 +G01 X+14.391 Y-25.632 B10.155 C225.102 +G01 X+14.39 Y-25.5 Z-1.191 B10.034 C224.403 +G01 X+14.343 Y-25.45 B10.033 C223.933 +G01 X+14.097 Y-25.185 B10.035 C221.278 +G01 X+13.838 Y-24.874 C218.33 +G01 X+13.631 Y-24.597 B10.034 C215.785 +G01 X+13.596 Y-24.55 B10.035 C215.382 +G01 X+13.37 Y-24.215 C212.434 +G01 X+13.162 Y-23.868 C209.486 +G01 X+12.972 Y-23.511 C206.537 +G01 X+12.8 Y-23.144 C203.592 +G01 X+12.648 Y-22.769 C200.639 +G01 X+12.515 Y-22.387 C197.685 +G01 X+12.402 Y-21.999 C194.731 +G01 X+12.309 Y-21.605 C191.778 +G01 X+12.243 Y-21.242 B10.033 C189.094 +G01 X+12.237 Y-21.207 B10.035 C188.824 +G01 X+12.185 Y-20.806 C185.871 +G01 X+12.154 Y-20.402 C182.917 +G01 X+12.144 Y-19.998 C179.963 +G01 X+12.154 Y-19.593 C177.01 +G01 X+12.185 Y-19.19 C174.056 +G01 X+12.237 Y-18.789 C171.102 +G01 X+12.31 Y-18.391 C168.149 +G01 X+12.403 Y-17.997 C165.195 +G01 X+12.516 Y-17.609 C162.241 +G01 X+12.655 Y-17.211 C159.174 +G01 X+12.802 Y-16.852 C156.338 +G01 X+12.973 Y-16.485 C153.39 +G01 X+13.164 Y-16.128 C150.441 +G01 X+13.372 Y-15.782 C147.493 +G01 X+13.598 Y-15.446 C144.545 +G01 X+13.841 Y-15.122 C141.597 +G01 X+14.1 Y-14.812 C138.649 +G01 X+14.375 Y-14.515 C135.701 +G01 X+14.665 Y-14.233 C132.753 +G01 X+14.969 Y-13.966 C129.804 +G01 X+15.243 Y-13.749 B10.034 C127.237 +G01 X+15.286 Y-13.715 B10.035 C126.856 +G01 X+15.616 Y-13.48 C123.908 +G01 X+15.957 Y-13.263 C120.96 +G01 X+16.31 Y-13.064 C118.012 +G01 X+16.672 Y-12.883 C115.062 +G01 X+17.042 Y-12.722 C112.116 +G01 X+17.421 Y-12.579 C109.162 +G01 X+17.806 Y-12.456 C106.208 +G01 X+18.198 Y-12.353 C103.255 +G01 X+18.562 Y-12.277 B10.034 C100.546 +G01 X+18.594 Y-12.27 B10.035 C100.301 +G01 X+18.955 Y-12.214 B10.033 C97.643 +G01 X+18.993 Y-12.208 B10.035 C97.348 +G01 X+19.396 Y-12.167 C94.394 +G01 X+19.8 Y-12.146 C91.44 +G01 X+20.204 C88.486 +G01 X+20.608 Y-12.167 C85.533 +G01 X+21.011 Y-12.209 C82.579 +G01 X+21.411 Y-12.271 C79.626 +G01 X+21.807 Y-12.354 C76.672 +G01 X+22.198 Y-12.457 C73.718 +G01 X+22.601 Y-12.587 C70.625 +G01 X+22.974 Y-12.728 C67.723 +G01 X+23.332 Y-12.885 C64.864 +G01 X+23.694 Y-13.066 C61.916 +G01 X+24.046 Y-13.266 C58.967 +G01 X+24.388 Y-13.483 C56.019 +G01 X+24.717 Y-13.717 C53.071 +G01 X+25.034 Y-13.969 C50.123 +G01 X+25.338 Y-14.236 C47.175 +G01 X+25.628 Y-14.518 C44.226 +G01 X+25.903 Y-14.815 C41.278 +G01 X+26.162 Y-15.126 C38.33 +G01 X+26.369 Y-15.403 B10.034 C35.785 +G01 X+26.404 Y-15.45 B10.035 C35.382 +G01 X+26.63 Y-15.785 C32.434 +G01 X+26.838 Y-16.132 C29.486 +G01 X+27.028 Y-16.489 C26.537 +G01 X+27.2 Y-16.856 C23.592 +G01 X+27.352 Y-17.231 C20.639 +G01 X+27.485 Y-17.613 C17.685 +G01 X+27.598 Y-18.001 C14.732 +G01 X+27.691 Y-18.395 C11.778 +G01 X+27.757 Y-18.758 B10.033 C9.094 +G01 X+27.763 Y-18.793 B10.035 C8.824 +G01 X+27.815 Y-19.194 C5.871 +G01 X+27.846 Y-19.598 C2.917 +G01 X+27.856 Y-20.002 C359.963 +G01 X+27.846 Y-20.407 C357.01 +G01 X+27.815 Y-20.81 C354.056 +G01 X+27.763 Y-21.211 C351.102 +G01 X+27.69 Y-21.609 C348.149 +G01 X+27.597 Y-22.003 C345.195 +G01 X+27.484 Y-22.391 C342.241 +G01 X+27.345 Y-22.788 C339.174 +G01 X+27.198 Y-23.148 C336.338 +G01 X+27.027 Y-23.514 C333.39 +G01 X+26.836 Y-23.871 C330.441 +G01 X+26.628 Y-24.218 C327.493 +G01 X+26.402 Y-24.554 C324.545 +G01 X+26.159 Y-24.877 C321.597 +G01 X+25.9 Y-25.188 C318.649 +G01 X+25.625 Y-25.485 C315.701 +G01 X+25.335 Y-25.767 C312.753 +G01 X+25.031 Y-26.034 C309.804 +G01 X+24.757 Y-26.251 B10.034 C307.237 +G01 X+24.714 Y-26.285 B10.035 C306.856 +G01 X+24.384 Y-26.519 C303.908 +G01 X+24.043 Y-26.736 C300.96 +G01 X+23.69 Y-26.936 C298.012 +G01 X+23.328 Y-27.117 C295.062 +G01 X+22.958 Y-27.278 C292.116 +G01 X+22.579 Y-27.421 C289.162 +G01 X+22.194 Y-27.544 C286.208 +G01 X+21.802 Y-27.647 C283.255 +G01 X+21.438 Y-27.723 B10.034 C280.546 +G01 X+21.406 Y-27.729 B10.035 C280.301 +G01 X+21.045 Y-27.786 B10.033 C277.643 +G01 X+21.007 Y-27.792 B10.035 C277.347 +G01 X+20.604 Y-27.833 C274.394 +G01 X+20.2 Y-27.854 C271.44 +G01 X+19.796 C268.486 +G01 X+19.392 Y-27.833 C265.533 +G01 X+18.989 Y-27.791 C262.579 +G01 X+18.589 Y-27.729 C259.626 +G01 X+18.193 Y-27.646 C256.672 +G01 X+17.802 Y-27.543 C253.718 +G01 X+17.399 Y-27.413 C250.625 +G01 X+17.026 Y-27.272 C247.723 +G01 X+16.669 Y-27.115 C244.874 +G01 X+16.444 Y-27.003 B10.032 C243.113 +G01 X+16.219 Y-26.89 Z-1.192 B10.038 C241.352 +G01 X+15.94 Y-26.728 Z-1.191 B10.037 C238.866 +G01 X+15.603 Y-26.512 B10.036 C235.947 +G01 X+15.282 Y-26.282 B10.035 C233.062 +G01 X+14.966 Y-26.031 C230.123 +G01 X+14.662 Y-25.764 C227.175 +G01 X+14.458 Y-25.565 B10.032 C225.106 +G01 X+14.457 Y-25.433 Z-1.174 B9.912 C224.39 +G01 X+14.278 Y-25.24 B9.909 C222.481 +G01 X+14.17 Y-25.123 B9.913 C221.286 +G01 X+13.914 Y-24.816 B9.912 C218.338 +G01 X+13.674 Y-24.497 C215.391 +G01 X+13.451 Y-24.165 C212.443 +G01 X+13.245 Y-23.822 C209.495 +G01 X+13.057 Y-23.47 C206.548 +G01 X+12.888 Y-23.108 C203.605 +G01 X+12.737 Y-22.737 C200.652 +G01 X+12.606 Y-22.36 C197.699 +G01 X+12.494 Y-21.976 C194.745 +G01 X+12.409 Y-21.613 B9.911 C191.997 +G01 X+12.402 Y-21.587 B9.912 C191.792 +G01 X+12.331 Y-21.194 B9.913 C188.84 +G01 X+12.279 Y-20.797 C185.886 +G01 X+12.249 Y-20.399 C182.933 +G01 X+12.238 Y-19.999 C179.98 +G01 X+12.249 Y-19.6 C177.027 +G01 X+12.28 Y-19.201 C174.074 +G01 X+12.331 Y-18.805 C171.121 +G01 X+12.403 Y-18.412 C168.168 +G01 X+12.494 Y-18.023 C165.215 +G01 X+12.606 Y-17.639 C162.262 +G01 X+12.738 Y-17.261 C159.309 +G01 X+12.888 Y-16.891 C156.356 +G01 X+13.058 Y-16.529 C153.403 +G01 X+13.255 Y-16.16 B9.912 C150.311 +G01 X+13.451 Y-15.834 B9.913 C147.498 +G01 X+13.674 Y-15.502 C144.55 +G01 X+13.914 Y-15.182 C141.602 +G01 X+14.17 Y-14.876 C138.655 +G01 X+14.442 Y-14.582 C135.707 +G01 X+14.728 Y-14.303 C132.76 +G01 X+15.028 Y-14.04 C129.812 +G01 X+15.342 Y-13.791 C126.864 +G01 X+15.668 Y-13.56 B9.912 C123.917 +G01 X+16.005 Y-13.345 C120.969 +G01 X+16.353 Y-13.149 C118.022 +G01 X+16.712 Y-12.969 C115.062 +G01 X+17.077 Y-12.81 C112.128 +G01 X+17.451 Y-12.669 C109.175 +G01 X+17.831 Y-12.547 C106.222 +G01 X+18.218 Y-12.446 C103.269 +G01 X+18.58 Y-12.37 B9.911 C100.546 +G01 X+18.609 Y-12.364 B9.912 C100.316 +G01 X+19.004 Y-12.302 B9.913 C97.363 +G01 X+19.402 Y-12.261 C94.41 +G01 X+19.801 Y-12.241 C91.457 +G01 X+20.2 C88.504 +G01 X+20.6 Y-12.261 C85.551 +G01 X+20.997 Y-12.303 C82.598 +G01 X+21.392 Y-12.364 C79.645 +G01 X+21.783 Y-12.446 C76.692 +G01 X+22.17 Y-12.548 C73.739 +G01 X+22.551 Y-12.669 C70.786 +G01 X+22.925 Y-12.81 C67.833 +G01 X+23.291 Y-12.97 C64.879 +G01 X+23.648 Y-13.149 C61.927 +G01 X+24.01 Y-13.355 B9.912 C58.86 +G01 X+24.333 Y-13.561 B9.913 C56.024 +G01 X+24.659 Y-13.792 C53.076 +G01 X+24.973 Y-14.04 C50.129 +G01 X+25.273 Y-14.304 C47.181 +G01 X+25.559 Y-14.583 C44.234 +G01 X+25.83 Y-14.877 C41.286 +G01 X+26.086 Y-15.183 C38.339 +G01 X+26.326 Y-15.503 B9.912 C35.391 +G01 X+26.549 Y-15.835 C32.443 +G01 X+26.755 Y-16.177 C29.495 +G01 X+26.943 Y-16.53 C26.548 +G01 X+27.112 Y-16.892 C23.605 +G01 X+27.263 Y-17.263 C20.652 +G01 X+27.394 Y-17.64 C17.699 +G01 X+27.506 Y-18.024 C14.745 +G01 X+27.591 Y-18.387 B9.911 C11.997 +G01 X+27.598 Y-18.413 B9.912 C11.792 +G01 X+27.669 Y-18.806 B9.913 C8.84 +G01 X+27.721 Y-19.202 C5.886 +G01 X+27.751 Y-19.601 C2.933 +G01 X+27.762 Y-20.001 C359.98 +G01 X+27.751 Y-20.4 C357.027 +G01 X+27.72 Y-20.799 C354.074 +G01 X+27.669 Y-21.195 C351.121 +G01 X+27.597 Y-21.588 C348.168 +G01 X+27.506 Y-21.977 C345.215 +G01 X+27.394 Y-22.361 C342.262 +G01 X+27.263 Y-22.738 C339.309 +G01 X+27.112 Y-23.109 C336.356 +G01 X+26.942 Y-23.471 C333.403 +G01 X+26.745 Y-23.84 B9.912 C330.311 +G01 X+26.549 Y-24.166 B9.913 C327.498 +G01 X+26.326 Y-24.498 C324.55 +G01 X+26.086 Y-24.817 C321.602 +G01 X+25.83 Y-25.124 C318.655 +G01 X+25.558 Y-25.418 C315.707 +G01 X+25.272 Y-25.696 C312.76 +G01 X+24.972 Y-25.96 C309.812 +G01 X+24.658 Y-26.208 C306.864 +G01 X+24.332 Y-26.44 B9.912 C303.917 +G01 X+23.995 Y-26.654 C300.969 +G01 X+23.647 Y-26.851 C298.022 +G01 X+23.288 Y-27.031 C295.062 +G01 X+22.923 Y-27.19 C292.128 +G01 X+22.549 Y-27.331 C289.175 +G01 X+22.169 Y-27.452 C286.222 +G01 X+21.782 Y-27.554 C283.269 +G01 X+21.42 Y-27.63 B9.911 C280.546 +G01 X+21.391 Y-27.636 B9.912 C280.316 +G01 X+20.996 Y-27.697 B9.913 C277.363 +G01 X+20.598 Y-27.738 C274.41 +G01 X+20.199 Y-27.759 C271.457 +G01 X+19.8 C268.504 +G01 X+19.4 Y-27.738 C265.551 +G01 X+19.003 Y-27.697 C262.598 +G01 X+18.608 Y-27.636 C259.645 +G01 X+18.217 Y-27.554 C256.692 +G01 X+17.83 Y-27.452 C253.739 +G01 X+17.449 Y-27.331 C250.786 +G01 X+17.075 Y-27.19 C247.832 +G01 X+16.711 Y-27.03 C244.892 +G01 X+16.486 Y-26.918 B9.909 C243.122 +G01 X+16.262 Y-26.805 Z-1.175 B9.915 C241.352 +G01 X+15.99 Y-26.647 C238.863 +G01 X+15.657 Y-26.434 B9.914 C235.95 +G01 X+15.338 Y-26.206 Z-1.174 B9.913 C233.054 +G01 X+15.028 Y-25.96 C230.129 +G01 X+14.727 Y-25.696 C227.181 +G01 X+14.525 Y-25.498 B9.91 C225.109 +G01 X+14.524 Y-25.365 Z-1.158 B9.79 C224.387 +G01 X+14.241 Y-25.061 C221.288 +G01 X+13.989 Y-24.759 C218.346 +G01 X+13.752 Y-24.443 C215.399 +G01 X+13.521 Y-24.099 B9.789 C212.32 +G01 X+13.328 Y-23.777 B9.79 C209.505 +G01 X+13.143 Y-23.429 C206.558 +G01 X+12.975 Y-23.071 C203.61 +G01 X+12.826 Y-22.705 C200.664 +G01 X+12.697 Y-22.332 C197.712 +G01 X+12.586 Y-21.953 C194.759 +G01 X+12.495 Y-21.569 C191.807 +G01 X+12.425 Y-21.181 C188.854 +G01 X+12.374 Y-20.789 C185.902 +G01 X+12.343 Y-20.396 C182.95 +G01 X+12.333 Y-20.001 C179.997 +G01 X+12.343 Y-19.606 C177.045 +G01 X+12.374 Y-19.213 C174.092 +G01 X+12.424 Y-18.821 C171.14 +G01 X+12.495 Y-18.433 C168.188 +G01 X+12.586 Y-18.048 B9.791 C165.235 +G01 X+12.696 Y-17.669 C162.283 +G01 X+12.826 Y-17.296 C159.33 +G01 X+12.974 Y-16.931 C156.378 +G01 X+13.142 Y-16.573 C153.426 +G01 X+13.327 Y-16.224 B9.79 C150.473 +G01 X+13.53 Y-15.886 C147.52 +G01 X+13.751 Y-15.558 C144.568 +G01 X+13.988 Y-15.243 C141.616 +G01 X+14.241 Y-14.939 C138.663 +G01 X+14.509 Y-14.65 C135.714 +G01 X+14.791 Y-14.374 C132.767 +G01 X+15.088 Y-14.113 C129.82 +G01 X+15.398 Y-13.868 C126.873 +G01 X+15.719 Y-13.639 C123.926 +G01 X+16.052 Y-13.428 C120.978 +G01 X+16.396 Y-13.233 C118.032 +G01 X+16.749 Y-13.056 C115.084 +G01 X+17.111 Y-12.898 C112.14 +G01 X+17.48 Y-12.759 C109.188 +G01 X+17.856 Y-12.639 C106.235 +G01 X+18.238 Y-12.538 C103.283 +G01 X+18.625 Y-12.457 C100.331 +G01 X+19.015 Y-12.397 C97.378 +G01 X+19.407 Y-12.356 C94.426 +G01 X+19.802 Y-12.336 C91.473 +G01 X+20.196 C88.521 +G01 X+20.591 Y-12.356 C85.568 +G01 X+20.983 Y-12.396 C82.616 +G01 X+21.374 Y-12.457 B9.791 C79.664 +G01 X+21.76 Y-12.538 C76.711 +G01 X+22.142 Y-12.638 C73.759 +G01 X+22.518 Y-12.758 C70.806 +G01 X+22.887 Y-12.898 C67.854 +G01 X+23.249 Y-13.056 C64.902 +G01 X+23.602 Y-13.232 C61.949 +G01 X+23.946 Y-13.427 B9.79 C58.997 +G01 X+24.279 Y-13.638 C56.044 +G01 X+24.601 Y-13.867 C53.092 +G01 X+24.911 Y-14.112 C50.14 +G01 X+25.207 Y-14.373 C47.188 +G01 X+25.49 Y-14.648 C44.241 +G01 X+25.759 Y-14.939 C41.288 +G01 X+26.011 Y-15.241 C38.346 +G01 X+26.248 Y-15.557 C35.399 +G01 X+26.479 Y-15.901 B9.789 C32.32 +G01 X+26.672 Y-16.223 B9.79 C29.505 +G01 X+26.857 Y-16.571 C26.558 +G01 X+27.025 Y-16.929 C23.61 +G01 X+27.174 Y-17.295 C20.664 +G01 X+27.303 Y-17.667 C17.712 +G01 X+27.414 Y-18.046 C14.759 +G01 X+27.505 Y-18.431 C11.807 +G01 X+27.575 Y-18.819 C8.854 +G01 X+27.626 Y-19.211 C5.902 +G01 X+27.657 Y-19.604 C2.95 +G01 X+27.667 Y-19.999 C359.997 +G01 X+27.657 Y-20.394 C357.045 +G01 X+27.626 Y-20.787 C354.092 +G01 X+27.576 Y-21.179 C351.14 +G01 X+27.505 Y-21.567 C348.188 +G01 X+27.414 Y-21.952 B9.791 C345.235 +G01 X+27.304 Y-22.331 C342.283 +G01 X+27.174 Y-22.704 C339.33 +G01 X+27.026 Y-23.069 C336.378 +G01 X+26.858 Y-23.427 C333.426 +G01 X+26.673 Y-23.775 B9.79 C330.473 +G01 X+26.47 Y-24.114 C327.52 +G01 X+26.249 Y-24.441 C324.568 +G01 X+26.012 Y-24.757 C321.616 +G01 X+25.759 Y-25.06 C318.663 +G01 X+25.491 Y-25.35 C315.714 +G01 X+25.209 Y-25.626 C312.767 +G01 X+24.912 Y-25.887 C309.82 +G01 X+24.603 Y-26.132 C306.873 +G01 X+24.281 Y-26.36 C303.926 +G01 X+23.948 Y-26.572 C300.978 +G01 X+23.604 Y-26.767 C298.032 +G01 X+23.251 Y-26.943 C295.084 +G01 X+22.889 Y-27.102 C292.14 +G01 X+22.52 Y-27.241 C289.188 +G01 X+22.144 Y-27.361 C286.235 +G01 X+21.762 Y-27.462 C283.283 +G01 X+21.375 Y-27.542 C280.331 +G01 X+20.985 Y-27.603 C277.378 +G01 X+20.593 Y-27.644 C274.426 +G01 X+20.198 Y-27.664 C271.473 +G01 X+19.804 C268.521 +G01 X+19.409 Y-27.644 C265.568 +G01 X+19.017 Y-27.603 C262.616 +G01 X+18.626 Y-27.543 B9.791 C259.664 +G01 X+18.24 Y-27.462 C256.711 +G01 X+17.858 Y-27.362 C253.759 +G01 X+17.482 Y-27.241 C250.806 +G01 X+17.113 Y-27.102 C247.854 +G01 X+16.752 Y-26.945 C244.914 +G01 X+16.53 Y-26.833 Z-1.157 B9.787 C243.133 +G01 X+16.307 Y-26.722 Z-1.158 B9.793 C241.352 +G01 X+16.041 Y-26.567 B9.792 C238.884 +G01 X+15.711 Y-26.356 B9.791 C235.959 +G01 X+15.397 Y-26.132 C233.075 +G01 X+15.089 Y-25.888 B9.79 C230.14 +G01 X+14.793 Y-25.627 C227.188 +G01 X+14.591 Y-25.431 B9.787 C225.112 +G01 Y-25.298 Z-1.142 B9.668 C224.391 +G01 X+14.314 Y-25 C221.309 +G01 X+14.064 Y-24.701 C218.357 +G01 X+13.83 Y-24.389 C215.408 +G01 X+13.612 Y-24.066 C212.461 +G01 X+13.411 Y-23.732 C209.515 +G01 X+13.228 Y-23.388 B9.667 C206.568 +G01 X+13.062 Y-23.033 C203.61 +G01 X+12.916 Y-22.673 C200.677 +G01 X+12.787 Y-22.305 B9.668 C197.725 +G01 X+12.678 Y-21.931 C194.773 +G01 X+12.589 Y-21.551 C191.821 +G01 X+12.519 Y-21.168 C188.869 +G01 X+12.468 Y-20.781 C185.917 +G01 X+12.438 Y-20.392 C182.966 +G01 X+12.428 Y-20.002 C180.014 +G01 X+12.438 Y-19.613 C177.062 +G01 X+12.468 Y-19.224 C174.11 +G01 X+12.518 Y-18.837 C171.158 +G01 X+12.588 Y-18.453 C168.207 +G01 X+12.677 Y-18.074 C165.255 +G01 X+12.786 Y-17.7 C162.303 +G01 X+12.914 Y-17.331 C159.351 +G01 X+13.061 Y-16.97 C156.399 +G01 X+13.226 Y-16.617 C153.448 +G01 X+13.409 Y-16.273 C150.496 +G01 X+13.61 Y-15.938 C147.544 +G01 X+13.827 Y-15.615 C144.592 +G01 X+14.061 Y-15.303 C141.64 +G01 X+14.311 Y-15.003 C138.689 +G01 X+14.576 Y-14.717 C135.737 +G01 X+14.855 Y-14.445 C132.785 +G01 X+15.148 Y-14.187 C129.833 +G01 X+15.453 Y-13.945 C126.881 +G01 X+15.771 Y-13.719 C123.934 +G01 X+16.102 Y-13.509 C120.973 +G01 X+16.439 Y-13.317 C118.041 +G01 X+16.788 Y-13.143 B9.667 C115.095 +G01 X+17.145 Y-12.987 C112.153 +G01 X+17.51 Y-12.849 C109.201 +G01 X+17.881 Y-12.73 B9.668 C106.249 +G01 X+18.258 Y-12.631 C103.297 +G01 X+18.64 Y-12.551 C100.345 +G01 X+19.025 Y-12.491 C97.393 +G01 X+19.413 Y-12.451 C94.441 +G01 X+19.803 Y-12.431 C91.49 +G01 X+20.192 Y-12.43 C88.538 +G01 X+20.582 Y-12.45 C85.586 +G01 X+20.97 Y-12.49 C82.634 +G01 X+21.355 Y-12.55 C79.682 +G01 X+21.737 Y-12.63 C76.731 +G01 X+22.114 Y-12.729 C73.779 +G01 X+22.485 Y-12.847 C70.827 +G01 X+22.85 Y-12.985 C67.875 +G01 X+23.208 Y-13.141 C64.924 +G01 X+23.556 Y-13.315 C61.972 +G01 X+23.896 Y-13.507 C59.02 +G01 X+24.225 Y-13.716 C56.068 +G01 X+24.543 Y-13.942 C53.116 +G01 X+24.849 Y-14.184 C50.165 +G01 X+25.142 Y-14.441 C47.213 +G01 X+25.421 Y-14.713 C44.261 +G01 X+25.686 Y-14.999 C41.309 +G01 X+25.936 Y-15.299 C38.357 +G01 X+26.17 Y-15.611 C35.408 +G01 X+26.388 Y-15.934 C32.461 +G01 X+26.589 Y-16.268 C29.515 +G01 X+26.772 Y-16.612 B9.667 C26.568 +G01 X+26.938 Y-16.967 C23.61 +G01 X+27.084 Y-17.327 C20.677 +G01 X+27.213 Y-17.695 B9.668 C17.725 +G01 X+27.322 Y-18.069 C14.773 +G01 X+27.411 Y-18.449 C11.821 +G01 X+27.481 Y-18.832 C8.869 +G01 X+27.532 Y-19.219 C5.917 +G01 X+27.562 Y-19.608 C2.966 +G01 X+27.572 Y-19.997 C0.014 +G01 X+27.562 Y-20.387 C357.062 +G01 X+27.532 Y-20.776 C354.11 +G01 X+27.482 Y-21.163 C351.158 +G01 X+27.412 Y-21.546 C348.207 +G01 X+27.323 Y-21.926 C345.255 +G01 X+27.214 Y-22.3 C342.303 +G01 X+27.086 Y-22.669 C339.351 +G01 X+26.939 Y-23.03 C336.399 +G01 X+26.774 Y-23.383 C333.448 +G01 X+26.591 Y-23.727 C330.496 +G01 X+26.39 Y-24.062 C327.544 +G01 X+26.173 Y-24.385 C324.592 +G01 X+25.939 Y-24.697 C321.64 +G01 X+25.689 Y-24.997 C318.689 +G01 X+25.424 Y-25.283 C315.737 +G01 X+25.145 Y-25.555 C312.785 +G01 X+24.852 Y-25.813 C309.833 +G01 X+24.547 Y-26.055 C306.881 +G01 X+24.229 Y-26.281 C303.934 +G01 X+23.898 Y-26.491 C300.973 +G01 X+23.561 Y-26.682 C298.041 +G01 X+23.212 Y-26.857 B9.667 C295.095 +G01 X+22.855 Y-27.013 C292.153 +G01 X+22.49 Y-27.151 C289.201 +G01 X+22.119 Y-27.269 B9.668 C286.249 +G01 X+21.742 Y-27.369 C283.297 +G01 X+21.36 Y-27.449 C280.345 +G01 X+20.975 Y-27.509 C277.393 +G01 X+20.587 Y-27.549 C274.441 +G01 X+20.197 Y-27.569 C271.49 +G01 X+19.808 C268.538 +G01 X+19.418 Y-27.55 C265.586 +G01 X+19.03 Y-27.51 C262.634 +G01 X+18.645 Y-27.45 C259.682 +G01 X+18.263 Y-27.37 C256.731 +G01 X+17.886 Y-27.271 C253.779 +G01 X+17.515 Y-27.152 C250.827 +G01 X+17.15 Y-27.015 C247.875 +G01 X+16.794 Y-26.86 C244.937 +G01 X+16.573 Y-26.749 Z-1.141 B9.665 C243.144 +G01 X+16.352 Y-26.638 Z-1.142 B9.671 C241.352 +G01 X+16.091 Y-26.487 B9.67 C238.907 +G01 X+15.765 Y-26.278 B9.669 C235.981 +G01 X+15.455 Y-26.056 B9.668 C233.096 +G01 X+15.151 Y-25.816 C230.165 +G01 X+14.858 Y-25.559 C227.213 +G01 X+14.658 Y-25.364 Z-1.141 B9.665 C225.116 +G01 Y-25.231 Z-1.125 B9.545 C224.395 +G01 X+14.386 Y-24.939 Z-1.126 B9.546 C221.336 +G01 X+14.139 Y-24.643 C218.385 +G01 X+13.908 Y-24.336 B9.545 C215.433 +G01 X+13.693 Y-24.016 C212.482 +G01 X+13.495 Y-23.686 C209.531 +G01 X+13.314 Y-23.346 C206.58 +G01 X+13.15 Y-22.998 C203.632 +G01 X+13.005 Y-22.641 C200.689 +G01 X+12.878 Y-22.278 C197.738 +G01 X+12.77 Y-21.908 C194.787 +G01 X+12.682 Y-21.533 C191.835 +G01 X+12.613 Y-21.155 C188.884 +G01 X+12.563 Y-20.773 B9.546 C185.933 +G01 X+12.533 Y-20.389 C182.982 +G01 X+12.523 Y-20.004 C180.03 +G01 X+12.533 Y-19.619 C177.079 +G01 X+12.562 Y-19.235 C174.128 +G01 X+12.611 Y-18.853 C171.177 +G01 X+12.68 Y-18.474 C168.226 +G01 X+12.768 Y-18.1 C165.274 +G01 X+12.876 Y-17.73 C162.323 +G01 X+13.002 Y-17.366 C159.372 +G01 X+13.147 Y-17.009 C156.421 +G01 X+13.31 Y-16.661 C153.469 +G01 X+13.491 Y-16.321 C150.518 +G01 X+13.689 Y-15.99 C147.567 +G01 X+13.904 Y-15.671 C144.616 +G01 X+14.135 Y-15.363 C141.665 +G01 X+14.381 Y-15.067 C138.714 +G01 X+14.642 Y-14.784 C135.762 +G01 X+14.918 Y-14.515 C132.811 +G01 X+15.207 Y-14.261 C129.86 +G01 X+15.509 Y-14.022 B9.545 C126.909 +G01 X+15.823 Y-13.799 C123.957 +G01 X+16.147 Y-13.592 C121.006 +G01 X+16.482 Y-13.402 C118.055 +G01 X+16.827 Y-13.23 C115.105 +G01 X+17.18 Y-13.075 C112.159 +G01 X+17.54 Y-12.939 C109.213 +G01 X+17.906 Y-12.822 C106.262 +G01 X+18.279 Y-12.724 C103.311 +G01 X+18.656 Y-12.645 C100.36 +G01 X+19.036 Y-12.585 C97.408 +G01 X+19.419 Y-12.545 B9.546 C94.457 +G01 X+19.803 Y-12.525 C91.506 +G01 X+20.189 C88.555 +G01 X+20.573 Y-12.545 C85.604 +G01 X+20.956 Y-12.584 C82.653 +G01 X+21.337 Y-12.643 C79.701 +G01 X+21.714 Y-12.722 C76.75 +G01 X+22.086 Y-12.82 C73.799 +G01 X+22.453 Y-12.937 C70.848 +G01 X+22.813 Y-13.072 C67.897 +G01 X+23.166 Y-13.226 C64.945 +G01 X+23.511 Y-13.398 C61.994 +G01 X+23.846 Y-13.588 C59.043 +G01 X+24.171 Y-13.794 C56.092 +G01 X+24.485 Y-14.017 C53.141 +G01 X+24.787 Y-14.256 C50.189 +G01 X+25.076 Y-14.51 C47.238 +G01 X+25.352 Y-14.778 C44.287 +G01 X+25.614 Y-15.061 C41.336 +G01 X+25.861 Y-15.356 C38.385 +G01 X+26.092 Y-15.664 B9.545 C35.433 +G01 X+26.307 Y-15.984 C32.482 +G01 X+26.505 Y-16.314 C29.531 +G01 X+26.686 Y-16.653 C26.58 +G01 X+26.85 Y-17.002 C23.632 +G01 X+26.995 Y-17.359 C20.689 +G01 X+27.122 Y-17.722 C17.738 +G01 X+27.23 Y-18.092 C14.787 +G01 X+27.318 Y-18.467 C11.835 +G01 X+27.387 Y-18.845 C8.884 +G01 X+27.437 Y-19.227 B9.546 C5.933 +G01 X+27.467 Y-19.611 C2.982 +G01 X+27.477 Y-19.996 C0.03 +G01 X+27.467 Y-20.381 C357.079 +G01 X+27.438 Y-20.765 C354.128 +G01 X+27.389 Y-21.147 C351.177 +G01 X+27.32 Y-21.525 C348.226 +G01 X+27.232 Y-21.9 C345.274 +G01 X+27.124 Y-22.27 C342.323 +G01 X+26.998 Y-22.634 C339.372 +G01 X+26.853 Y-22.991 C336.421 +G01 X+26.69 Y-23.339 C333.469 +G01 X+26.509 Y-23.679 C330.518 +G01 X+26.311 Y-24.01 C327.567 +G01 X+26.096 Y-24.329 C324.616 +G01 X+25.865 Y-24.637 C321.665 +G01 X+25.619 Y-24.933 C318.714 +G01 X+25.358 Y-25.216 C315.762 +G01 X+25.082 Y-25.485 C312.811 +G01 X+24.793 Y-25.739 C309.86 +G01 X+24.491 Y-25.978 B9.545 C306.909 +G01 X+24.177 Y-26.201 C303.957 +G01 X+23.853 Y-26.408 C301.006 +G01 X+23.518 Y-26.598 C298.055 +G01 X+23.173 Y-26.77 C295.105 +G01 X+22.82 Y-26.925 C292.159 +G01 X+22.46 Y-27.061 C289.213 +G01 X+22.094 Y-27.178 C286.262 +G01 X+21.721 Y-27.276 C283.311 +G01 X+21.344 Y-27.355 C280.36 +G01 X+20.964 Y-27.415 C277.408 +G01 X+20.581 Y-27.454 B9.546 C274.457 +G01 X+20.197 Y-27.475 C271.506 +G01 X+19.811 C268.555 +G01 X+19.427 Y-27.455 C265.604 +G01 X+19.044 Y-27.416 C262.653 +G01 X+18.663 Y-27.357 C259.701 +G01 X+18.286 Y-27.278 C256.75 +G01 X+17.914 Y-27.18 C253.799 +G01 X+17.547 Y-27.063 C250.848 +G01 X+17.187 Y-26.928 C247.896 +G01 X+16.836 Y-26.774 C244.96 +G01 X+16.616 Y-26.665 Z-1.125 B9.542 C243.156 +G01 X+16.397 Y-26.555 Z-1.126 B9.548 C241.352 +G01 X+16.141 Y-26.406 C238.931 +G01 X+15.819 Y-26.2 B9.547 C236.002 +G01 X+15.513 Y-25.981 B9.546 C233.117 +G01 X+15.213 Y-25.744 C230.19 +G01 X+14.924 Y-25.49 C227.238 +G01 X+14.725 Y-25.297 Z-1.125 B9.543 C225.119 +G01 Y-25.164 Z-1.11 B9.427 C224.386 +G01 X+14.458 Y-24.878 C221.35 +G01 X+14.215 Y-24.586 C218.4 +G01 X+13.986 Y-24.282 C215.449 +G01 X+13.774 Y-23.967 C212.498 +G01 X+13.578 Y-23.641 C209.548 +G01 X+13.399 Y-23.306 C206.597 +G01 X+13.237 Y-22.961 C203.646 +G01 X+13.094 Y-22.609 C200.7 +G01 X+12.969 Y-22.25 C197.743 +G01 X+12.862 Y-21.885 C194.788 +G01 X+12.775 Y-21.515 C191.837 +G01 X+12.706 Y-21.141 C188.887 +G01 X+12.657 Y-20.764 C185.936 +G01 X+12.628 Y-20.385 C182.986 +G01 X+12.617 Y-20.005 C180.035 +G01 X+12.627 Y-19.625 C177.084 +G01 X+12.656 Y-19.246 C174.134 +G01 X+12.705 Y-18.869 C171.183 +G01 X+12.772 Y-18.495 B9.428 C168.233 +G01 X+12.859 Y-18.125 C165.282 +G01 X+12.965 Y-17.76 C162.331 +G01 X+13.09 Y-17.401 C159.381 +G01 X+13.233 Y-17.049 C156.43 +G01 X+13.394 Y-16.704 C153.48 +G01 X+13.572 Y-16.368 C150.529 +G01 X+13.768 Y-16.042 C147.578 +G01 X+13.98 Y-15.727 C144.628 +G01 X+14.208 Y-15.423 C141.678 +G01 X+14.451 Y-15.13 C138.727 +G01 X+14.709 Y-14.851 B9.427 C135.776 +G01 X+14.981 Y-14.586 C132.826 +G01 X+15.267 Y-14.335 C129.875 +G01 X+15.565 Y-14.098 C126.924 +G01 X+15.874 Y-13.878 C123.974 +G01 X+16.195 Y-13.674 C121.023 +G01 X+16.526 Y-13.486 C118.073 +G01 X+16.865 Y-13.316 C115.122 +G01 X+17.216 Y-13.163 C112.159 +G01 X+17.569 Y-13.029 C109.221 +G01 X+17.931 Y-12.913 C106.264 +G01 X+18.299 Y-12.816 C103.313 +G01 X+18.671 Y-12.738 C100.362 +G01 X+19.047 Y-12.679 C97.411 +G01 X+19.425 Y-12.64 C94.461 +G01 X+19.804 Y-12.62 C91.51 +G01 X+20.185 C88.56 +G01 X+20.564 Y-12.639 C85.609 +G01 X+20.942 Y-12.678 B9.428 C82.658 +G01 X+21.318 Y-12.736 B9.427 C79.708 +G01 X+21.69 Y-12.813 B9.428 C76.757 +G01 X+22.058 Y-12.91 C73.807 +G01 X+22.42 Y-13.025 C70.856 +G01 X+22.776 Y-13.159 C67.906 +G01 X+23.125 Y-13.311 C64.955 +G01 X+23.465 Y-13.481 C62.004 +G01 X+23.796 Y-13.668 C59.054 +G01 X+24.117 Y-13.872 C56.103 +G01 X+24.427 Y-14.092 C53.153 +G01 X+24.725 Y-14.327 C50.202 +G01 X+25.011 Y-14.578 C47.251 +G01 X+25.283 Y-14.843 B9.427 C44.301 +G01 X+25.542 Y-15.122 C41.35 +G01 X+25.785 Y-15.414 C38.4 +G01 X+26.014 Y-15.718 C35.449 +G01 X+26.226 Y-16.033 C32.498 +G01 X+26.422 Y-16.359 C29.548 +G01 X+26.601 Y-16.694 C26.597 +G01 X+26.763 Y-17.039 C23.646 +G01 X+26.906 Y-17.391 C20.7 +G01 X+27.031 Y-17.75 C17.743 +G01 X+27.138 Y-18.115 C14.788 +G01 X+27.225 Y-18.484 C11.837 +G01 X+27.294 Y-18.858 C8.887 +G01 X+27.343 Y-19.235 C5.936 +G01 X+27.372 Y-19.614 C2.986 +G01 X+27.383 Y-19.994 C0.035 +G01 X+27.373 Y-20.374 C357.084 +G01 X+27.344 Y-20.754 C354.134 +G01 X+27.295 Y-21.131 C351.183 +G01 X+27.228 Y-21.505 B9.428 C348.233 +G01 X+27.141 Y-21.875 C345.282 +G01 X+27.035 Y-22.24 C342.331 +G01 X+26.91 Y-22.599 C339.381 +G01 X+26.767 Y-22.951 C336.43 +G01 X+26.606 Y-23.296 C333.48 +G01 X+26.428 Y-23.631 C330.529 +G01 X+26.232 Y-23.957 C327.578 +G01 X+26.02 Y-24.273 C324.628 +G01 X+25.792 Y-24.577 C321.678 +G01 X+25.549 Y-24.869 C318.727 +G01 X+25.291 Y-25.149 B9.427 C315.776 +G01 X+25.019 Y-25.414 C312.826 +G01 X+24.733 Y-25.665 C309.875 +G01 X+24.436 Y-25.901 C306.924 +G01 X+24.126 Y-26.122 C303.974 +G01 X+23.805 Y-26.326 C301.023 +G01 X+23.474 Y-26.514 C298.073 +G01 X+23.135 Y-26.684 C295.122 +G01 X+22.784 Y-26.837 C292.159 +G01 X+22.431 Y-26.971 C289.221 +G01 X+22.069 Y-27.087 C286.264 +G01 X+21.701 Y-27.184 C283.313 +G01 X+21.329 Y-27.262 C280.362 +G01 X+20.953 Y-27.321 C277.411 +G01 X+20.575 Y-27.36 C274.461 +G01 X+20.196 Y-27.38 C271.51 +G01 X+19.815 C268.56 +G01 X+19.436 Y-27.361 C265.609 +G01 X+19.058 Y-27.322 B9.428 C262.658 +G01 X+18.682 Y-27.264 B9.427 C259.708 +G01 X+18.31 Y-27.186 B9.428 C256.757 +G01 X+17.942 Y-27.09 C253.807 +G01 X+17.58 Y-26.974 C250.856 +G01 X+17.224 Y-26.841 C247.906 +G01 X+16.877 Y-26.689 C244.97 +G01 X+16.66 Y-26.581 Z-1.109 B9.424 C243.161 +G01 X+16.442 Y-26.472 Z-1.11 B9.43 C241.352 +G01 X+16.191 Y-26.326 C238.943 +G01 X+15.873 Y-26.122 B9.428 C236.012 +G01 X+15.57 Y-25.906 C233.126 +G01 X+15.275 Y-25.672 C230.203 +G01 X+14.989 Y-25.422 B9.427 C227.251 +G01 X+14.792 Y-25.23 Z-1.109 B9.425 C225.11 +G01 X+14.791 Y-25.097 Z-1.094 B9.305 C224.371 +G01 X+14.6 Y-24.891 B9.303 C222.144 +G01 X+14.53 Y-24.816 B9.305 C221.358 +G01 X+14.29 Y-24.528 C218.408 +G01 X+14.064 Y-24.228 C215.458 +G01 X+13.854 Y-23.917 C212.508 +G01 X+13.661 Y-23.596 C209.558 +G01 X+13.484 Y-23.265 C206.608 +G01 X+13.325 Y-22.925 C203.658 +G01 X+13.183 Y-22.577 C200.707 +G01 X+13.059 Y-22.223 C197.757 +G01 X+12.954 Y-21.863 C194.801 +G01 X+12.868 Y-21.497 C191.844 +G01 X+12.8 Y-21.128 C188.887 +G01 X+12.751 Y-20.756 C185.933 +G01 X+12.722 Y-20.382 C182.983 +G01 X+12.712 Y-20.007 C180.033 +G01 X+12.721 Y-19.632 C177.083 +G01 X+12.75 Y-19.257 C174.133 +G01 X+12.798 Y-18.885 C171.183 +G01 X+12.865 Y-18.516 C168.233 +G01 X+12.951 Y-18.151 C165.283 +G01 X+13.055 Y-17.79 C162.333 +G01 X+13.178 Y-17.436 C159.383 +G01 X+13.319 Y-17.088 C156.433 +G01 X+13.478 Y-16.748 C153.483 +G01 X+13.654 Y-16.416 C150.533 +G01 X+13.847 Y-16.094 C147.583 +G01 X+14.056 Y-15.783 C144.633 +G01 X+14.281 Y-15.482 C141.683 +G01 X+14.521 Y-15.194 C138.733 +G01 X+14.776 Y-14.918 C135.783 +G01 X+15.044 Y-14.656 C132.833 +G01 X+15.326 Y-14.408 C129.883 +G01 X+15.62 Y-14.175 C126.933 +G01 X+15.926 Y-13.957 C123.983 +G01 X+16.242 Y-13.755 C121.033 +G01 X+16.569 Y-13.57 C118.083 +G01 X+16.904 Y-13.402 C115.133 +G01 X+17.248 Y-13.252 C112.183 +G01 X+17.599 Y-13.119 C109.235 +G01 X+17.956 Y-13.004 C106.279 +G01 X+18.319 Y-12.908 C103.322 +G01 X+18.687 Y-12.831 C100.366 +G01 X+19.057 Y-12.773 C97.409 +G01 X+19.431 Y-12.734 C94.458 +G01 X+19.806 Y-12.715 C91.502 +G01 X+20.181 Y-12.714 C88.558 +G01 X+20.556 Y-12.733 C85.608 +G01 X+20.929 Y-12.771 C82.658 +G01 X+21.3 Y-12.829 C79.708 +G01 X+21.667 Y-12.905 C76.758 +G01 X+22.03 Y-13 C73.808 +G01 X+22.388 Y-13.114 C70.858 +G01 X+22.739 Y-13.246 C67.908 +G01 X+23.083 Y-13.396 C64.958 +G01 X+23.419 Y-13.564 C62.008 +G01 X+23.746 Y-13.748 C59.058 +G01 X+24.063 Y-13.949 C56.108 +G01 X+24.369 Y-14.167 C53.158 +G01 X+24.663 Y-14.399 C50.208 +G01 X+24.945 Y-14.647 C47.258 +G01 X+25.214 Y-14.908 C44.308 +G01 X+25.47 Y-15.184 C41.358 +G01 X+25.71 Y-15.472 C38.408 +G01 X+25.936 Y-15.771 C35.458 +G01 X+26.146 Y-16.083 C32.508 +G01 X+26.339 Y-16.404 C29.558 +G01 X+26.516 Y-16.735 C26.608 +G01 X+26.675 Y-17.075 C23.658 +G01 X+26.817 Y-17.423 C20.707 +G01 X+26.941 Y-17.777 C17.757 +G01 X+27.046 Y-18.137 C14.801 +G01 X+27.132 Y-18.502 C11.844 +G01 X+27.2 Y-18.872 C8.887 +G01 X+27.249 Y-19.244 C5.933 +G01 X+27.278 Y-19.618 C2.983 +G01 X+27.288 Y-19.993 C0.033 +G01 X+27.279 Y-20.368 C357.083 +G01 X+27.25 Y-20.742 C354.133 +G01 X+27.202 Y-21.115 C351.183 +G01 X+27.135 Y-21.484 C348.233 +G01 X+27.049 Y-21.849 C345.283 +G01 X+26.945 Y-22.21 C342.333 +G01 X+26.822 Y-22.564 C339.383 +G01 X+26.681 Y-22.912 C336.433 +G01 X+26.522 Y-23.252 C333.483 +G01 X+26.346 Y-23.584 C330.533 +G01 X+26.153 Y-23.905 C327.583 +G01 X+25.944 Y-24.217 C324.633 +G01 X+25.719 Y-24.517 C321.683 +G01 X+25.479 Y-24.806 C318.733 +G01 X+25.224 Y-25.082 C315.783 +G01 X+24.956 Y-25.344 C312.833 +G01 X+24.674 Y-25.592 C309.883 +G01 X+24.38 Y-25.825 C306.933 +G01 X+24.074 Y-26.043 C303.983 +G01 X+23.758 Y-26.244 C301.033 +G01 X+23.431 Y-26.43 C298.083 +G01 X+23.096 Y-26.598 C295.133 +G01 X+22.752 Y-26.748 C292.183 +G01 X+22.401 Y-26.881 C289.235 +G01 X+22.044 Y-26.995 C286.279 +G01 X+21.681 Y-27.091 C283.322 +G01 X+21.313 Y-27.169 C280.366 +G01 X+20.943 Y-27.227 C277.409 +G01 X+20.569 Y-27.266 C274.458 +G01 X+20.194 Y-27.285 C271.502 +G01 X+19.819 Y-27.286 C268.558 +G01 X+19.444 Y-27.267 C265.608 +G01 X+19.071 Y-27.228 C262.658 +G01 X+18.7 Y-27.171 C259.708 +G01 X+18.333 Y-27.095 C256.758 +G01 X+17.97 Y-26.999 C253.808 +G01 X+17.612 Y-26.886 C250.858 +G01 X+17.261 Y-26.754 C247.908 +G01 X+16.919 Y-26.604 C244.973 +G01 X+16.704 Y-26.497 B9.302 C243.162 +G01 X+16.489 Y-26.39 Z-1.095 B9.308 C241.352 +G01 X+16.241 Y-26.246 Z-1.094 B9.307 C238.948 +G01 X+15.927 Y-26.044 B9.306 C236.015 +G01 X+15.628 Y-25.831 C233.128 +G01 X+15.337 Y-25.601 B9.305 C230.209 +G01 X+15.055 Y-25.353 C227.258 +G01 X+14.859 Y-25.163 B9.303 C225.095 +G01 X+14.858 Y-25.03 Z-1.079 B9.183 C224.356 +G01 X+14.821 Y-24.99 Z-1.078 B9.181 C223.933 +G01 X+14.602 Y-24.755 Z-1.079 B9.183 C221.366 +G01 X+14.365 Y-24.471 C218.416 +G01 X+14.142 Y-24.175 C215.467 +G01 X+13.935 Y-23.868 C212.517 +G01 X+13.744 Y-23.55 C209.568 +G01 X+13.57 Y-23.223 C206.619 +G01 X+13.412 Y-22.888 B9.182 C203.669 +G01 X+13.272 Y-22.543 C200.707 +G01 X+13.15 Y-22.195 C197.771 +G01 X+13.046 Y-21.84 C194.815 +G01 X+12.961 Y-21.48 B9.183 C191.859 +G01 X+12.894 Y-21.115 C188.904 +G01 X+12.846 Y-20.748 C185.948 +G01 X+12.817 Y-20.379 C182.992 +G01 X+12.807 Y-19.991 B9.182 C179.898 +G01 X+12.817 Y-19.627 B9.183 C176.995 +G01 X+12.844 Y-19.269 C174.132 +G01 X+12.891 Y-18.901 C171.182 +G01 X+12.957 Y-18.537 C168.233 +G01 X+13.042 Y-18.176 C165.284 +G01 X+13.145 Y-17.82 C162.334 +G01 X+13.266 Y-17.47 C159.385 +G01 X+13.405 Y-17.127 C156.435 +G01 X+13.562 Y-16.791 C153.486 +G01 X+13.736 Y-16.464 C150.537 +G01 X+13.926 Y-16.146 C147.587 +G01 X+14.132 Y-15.839 C144.638 +G01 X+14.354 Y-15.542 C141.689 +G01 X+14.591 Y-15.258 C138.739 +G01 X+14.843 Y-14.985 C135.79 +G01 X+15.108 Y-14.727 C132.84 +G01 X+15.386 Y-14.482 C129.891 +G01 X+15.676 Y-14.252 C126.941 +G01 X+15.977 Y-14.037 C123.992 +G01 X+16.29 Y-13.837 C121.043 +G01 X+16.612 Y-13.655 C118.093 +G01 X+16.943 Y-13.489 B9.182 C115.144 +G01 X+17.282 Y-13.34 C112.195 +G01 X+17.629 Y-13.209 C109.249 +G01 X+17.982 Y-13.096 C106.293 +G01 X+18.34 Y-13.001 B9.183 C103.337 +G01 X+18.702 Y-12.925 C100.382 +G01 X+19.068 Y-12.867 C97.426 +G01 X+19.436 Y-12.829 C94.47 +G01 X+19.827 Y-12.809 B9.182 C91.349 +G01 X+20.191 Y-12.81 C88.446 +G01 X+20.555 Y-12.828 B9.183 C85.543 +G01 X+20.915 Y-12.865 C82.657 +G01 X+21.281 Y-12.922 C79.708 +G01 X+21.644 Y-12.997 C76.758 +G01 X+22.002 Y-13.091 C73.809 +G01 X+22.355 Y-13.203 C70.859 +G01 X+22.702 Y-13.334 C67.91 +G01 X+23.042 Y-13.481 C64.961 +G01 X+23.373 Y-13.647 C62.011 +G01 X+23.696 Y-13.829 C59.062 +G01 X+24.009 Y-14.027 C56.113 +G01 X+24.311 Y-14.241 C53.163 +G01 X+24.601 Y-14.471 C50.214 +G01 X+24.88 Y-14.715 C47.265 +G01 X+25.146 Y-14.973 C44.315 +G01 X+25.398 Y-15.245 C41.366 +G01 X+25.635 Y-15.529 C38.416 +G01 X+25.858 Y-15.825 C35.467 +G01 X+26.065 Y-16.132 C32.517 +G01 X+26.256 Y-16.45 C29.568 +G01 X+26.43 Y-16.776 C26.619 +G01 X+26.588 Y-17.112 B9.182 C23.669 +G01 X+26.729 Y-17.457 C20.707 +G01 X+26.85 Y-17.804 C17.771 +G01 X+26.954 Y-18.16 C14.815 +G01 X+27.039 Y-18.52 B9.183 C11.859 +G01 X+27.106 Y-18.885 C8.904 +G01 X+27.154 Y-19.252 C5.948 +G01 X+27.183 Y-19.621 C2.992 +G01 X+27.193 Y-20.009 B9.182 C359.898 +G01 X+27.183 Y-20.373 B9.183 C356.995 +G01 X+27.156 Y-20.731 C354.132 +G01 X+27.109 Y-21.099 C351.182 +G01 X+27.043 Y-21.463 C348.233 +G01 X+26.958 Y-21.824 C345.284 +G01 X+26.855 Y-22.179 C342.334 +G01 X+26.734 Y-22.529 C339.385 +G01 X+26.595 Y-22.873 C336.435 +G01 X+26.438 Y-23.208 C333.486 +G01 X+26.264 Y-23.536 C330.537 +G01 X+26.074 Y-23.853 C327.587 +G01 X+25.868 Y-24.161 C324.638 +G01 X+25.646 Y-24.458 C321.689 +G01 X+25.409 Y-24.742 C318.739 +G01 X+25.157 Y-25.014 C315.79 +G01 X+24.892 Y-25.273 C312.84 +G01 X+24.614 Y-25.518 C309.891 +G01 X+24.324 Y-25.748 C306.941 +G01 X+24.023 Y-25.963 C303.992 +G01 X+23.71 Y-26.162 C301.043 +G01 X+23.388 Y-26.345 C298.093 +G01 X+23.057 Y-26.511 B9.182 C295.144 +G01 X+22.718 Y-26.66 C292.195 +G01 X+22.371 Y-26.791 C289.249 +G01 X+22.018 Y-26.904 C286.293 +G01 X+21.66 Y-26.999 B9.183 C283.337 +G01 X+21.298 Y-27.075 C280.382 +G01 X+20.932 Y-27.133 C277.426 +G01 X+20.564 Y-27.171 C274.47 +G01 X+20.173 Y-27.191 B9.182 C271.349 +G01 X+19.809 Y-27.19 C268.446 +G01 X+19.445 Y-27.172 B9.183 C265.543 +G01 X+19.085 Y-27.135 C262.657 +G01 X+18.719 Y-27.078 C259.707 +G01 X+18.356 Y-27.003 C256.758 +G01 X+17.998 Y-26.909 C253.809 +G01 X+17.645 Y-26.797 C250.859 +G01 X+17.298 Y-26.666 C247.91 +G01 X+16.96 Y-26.519 C244.977 +G01 X+16.747 Y-26.413 Z-1.078 B9.18 C243.164 +G01 X+16.534 Y-26.306 Z-1.079 B9.186 C241.352 +G01 X+16.291 Y-26.165 B9.185 C238.953 +G01 X+15.981 Y-25.966 B9.184 C236.018 +G01 X+15.686 Y-25.756 B9.183 C233.131 +G01 X+15.399 Y-25.529 C230.215 +G01 X+15.12 Y-25.285 C227.264 +G01 X+14.925 Y-25.096 Z-1.078 B9.18 C225.093 +G01 Y-24.963 Z-1.063 B9.061 C224.341 +G01 X+14.716 Y-24.738 B9.059 C221.842 +G01 X+14.675 Y-24.693 B9.061 C221.373 +G01 X+14.44 Y-24.413 C218.424 +G01 X+14.264 Y-24.179 B9.059 C216.035 +G01 X+14.22 Y-24.121 B9.061 C215.475 +G01 X+14.016 Y-23.818 C212.527 +G01 X+13.827 Y-23.505 B9.06 C209.578 +G01 X+13.655 Y-23.182 C206.629 +G01 X+13.499 Y-22.852 C203.681 +G01 X+13.361 Y-22.513 C200.732 +G01 X+13.241 Y-22.168 C197.785 +G01 X+13.138 Y-21.817 C194.83 +G01 X+13.054 Y-21.462 C191.875 +G01 X+12.988 Y-21.102 C188.92 +G01 X+12.94 Y-20.74 B9.061 C185.965 +G01 X+12.911 Y-20.375 C183.01 +G01 X+12.902 Y-20.01 C180.054 +G01 X+12.91 Y-19.644 C177.099 +G01 X+12.938 Y-19.28 C174.144 +G01 X+12.988 Y-18.899 B9.06 C171.036 +G01 X+13.053 Y-18.545 C168.133 +G01 X+13.135 Y-18.195 B9.061 C165.23 +G01 X+13.235 Y-17.85 C162.327 +G01 X+13.354 Y-17.505 C159.386 +G01 X+13.492 Y-17.166 C156.437 +G01 X+13.646 Y-16.835 C153.489 +G01 X+13.817 Y-16.512 C150.54 +G01 X+14.005 Y-16.199 C147.591 +G01 X+14.209 Y-15.895 C144.643 +G01 X+14.428 Y-15.602 C141.694 +G01 X+14.662 Y-15.321 C138.745 +G01 X+14.91 Y-15.053 C135.796 +G01 X+15.171 Y-14.797 C132.848 +G01 X+15.445 Y-14.555 C129.899 +G01 X+15.732 Y-14.328 C126.95 +G01 X+15.968 Y-14.16 B9.059 C124.583 +G01 X+16.029 Y-14.116 B9.06 C124.001 +G01 X+16.337 Y-13.919 C121.052 +G01 X+16.655 Y-13.739 C118.104 +G01 X+16.982 Y-13.575 C115.155 +G01 X+17.317 Y-13.428 C112.206 +G01 X+17.659 Y-13.299 C109.255 +G01 X+18.007 Y-13.187 C106.308 +G01 X+18.36 Y-13.093 C103.353 +G01 X+18.718 Y-13.018 C100.397 +G01 X+19.079 Y-12.961 C97.442 +G01 X+19.442 Y-12.923 B9.061 C94.487 +G01 X+19.807 Y-12.904 C91.532 +G01 X+20.173 C88.577 +G01 X+20.538 Y-12.922 C85.621 +G01 X+20.902 Y-12.959 C82.666 +G01 X+21.278 Y-13.018 B9.06 C79.585 +G01 X+21.63 Y-13.091 B9.061 C76.682 +G01 X+21.974 Y-13.182 C73.81 +G01 X+22.323 Y-13.292 C70.861 +G01 X+22.665 Y-13.421 C67.912 +G01 X+23 Y-13.567 C64.963 +G01 X+23.327 Y-13.73 C62.014 +G01 X+23.646 Y-13.909 C59.066 +G01 X+23.955 Y-14.105 C56.117 +G01 X+24.253 Y-14.316 C53.168 +G01 X+24.54 Y-14.543 C50.219 +G01 X+24.815 Y-14.784 C47.271 +G01 X+25.077 Y-15.039 C44.322 +G01 X+25.325 Y-15.306 C41.373 +G01 X+25.56 Y-15.587 C38.424 +G01 X+25.736 Y-15.821 B9.059 C36.035 +G01 X+25.78 Y-15.879 B9.061 C35.476 +G01 X+25.984 Y-16.182 C32.527 +G01 X+26.173 Y-16.495 B9.06 C29.578 +G01 X+26.345 Y-16.817 C26.629 +G01 X+26.501 Y-17.148 C23.681 +G01 X+26.639 Y-17.487 C20.732 +G01 X+26.759 Y-17.832 C17.785 +G01 X+26.862 Y-18.183 C14.83 +G01 X+26.946 Y-18.538 C11.875 +G01 X+27.012 Y-18.898 C8.92 +G01 X+27.06 Y-19.26 B9.061 C5.965 +G01 X+27.089 Y-19.625 C3.01 +G01 X+27.098 Y-19.99 C0.054 +G01 X+27.09 Y-20.356 C357.099 +G01 X+27.062 Y-20.72 C354.144 +G01 X+27.012 Y-21.101 B9.06 C351.036 +G01 X+26.947 Y-21.455 C348.133 +G01 X+26.865 Y-21.805 B9.061 C345.23 +G01 X+26.765 Y-22.15 C342.327 +G01 X+26.646 Y-22.495 C339.386 +G01 X+26.508 Y-22.834 C336.437 +G01 X+26.354 Y-23.165 C333.489 +G01 X+26.183 Y-23.488 C330.54 +G01 X+25.995 Y-23.801 C327.591 +G01 X+25.791 Y-24.105 C324.643 +G01 X+25.572 Y-24.398 C321.694 +G01 X+25.338 Y-24.679 C318.745 +G01 X+25.09 Y-24.947 C315.796 +G01 X+24.829 Y-25.203 C312.847 +G01 X+24.555 Y-25.444 C309.899 +G01 X+24.268 Y-25.672 C306.95 +G01 X+24.032 Y-25.84 B9.059 C304.583 +G01 X+23.971 Y-25.884 B9.06 C304.001 +G01 X+23.663 Y-26.08 C301.052 +G01 X+23.345 Y-26.261 C298.104 +G01 X+23.018 Y-26.425 C295.155 +G01 X+22.683 Y-26.572 C292.206 +G01 X+22.341 Y-26.701 C289.255 +G01 X+21.993 Y-26.813 C286.308 +G01 X+21.64 Y-26.906 C283.352 +G01 X+21.282 Y-26.982 C280.397 +G01 X+20.921 Y-27.038 C277.442 +G01 X+20.558 Y-27.076 B9.061 C274.487 +G01 X+20.193 Y-27.096 C271.532 +G01 X+19.827 C268.577 +G01 X+19.462 Y-27.078 C265.621 +G01 X+19.098 Y-27.041 C262.666 +G01 X+18.722 Y-26.982 B9.06 C259.585 +G01 X+18.37 Y-26.908 B9.061 C256.682 +G01 X+18.026 Y-26.818 C253.81 +G01 X+17.677 Y-26.708 C250.861 +G01 X+17.335 Y-26.579 C247.912 +G01 X+17.002 Y-26.434 C244.98 +G01 X+16.579 Y-26.223 Z-1.064 B9.064 C241.352 +G01 X+16.341 Y-26.085 B9.063 C238.957 +G01 X+16.035 Y-25.889 B9.062 C236.021 +G01 X+15.743 Y-25.681 Z-1.063 B9.061 C233.133 +G01 X+15.46 Y-25.457 C230.221 +G01 X+15.185 Y-25.216 C227.271 +G01 X+14.992 Y-25.028 B9.058 C225.097 +G01 Y-24.896 Z-1.048 B8.939 C224.326 +G01 X+14.747 Y-24.632 C221.38 +G01 X+14.515 Y-24.355 C218.432 +G01 X+14.298 Y-24.067 C215.484 +G01 X+14.096 Y-23.768 B8.938 C212.536 +G01 X+13.91 Y-23.459 C209.588 +G01 X+13.74 Y-23.141 C206.64 +G01 X+13.587 Y-22.815 C203.691 +G01 X+13.45 Y-22.481 C200.743 +G01 X+13.331 Y-22.141 C197.799 +G01 X+13.23 Y-21.794 C194.844 +G01 X+13.147 Y-21.444 C191.89 +G01 X+13.081 Y-21.089 C188.936 +G01 X+13.035 Y-20.731 C185.981 +G01 X+13.006 Y-20.372 C183.027 +G01 X+12.996 Y-20.011 B8.939 C180.072 +G01 X+13.005 Y-19.651 C177.118 +G01 X+13.032 Y-19.291 C174.163 +G01 X+13.078 Y-18.933 C171.209 +G01 X+13.142 Y-18.578 C168.255 +G01 X+13.224 Y-18.227 C165.3 +G01 X+13.331 Y-17.861 B8.938 C162.175 +G01 X+13.448 Y-17.526 C159.272 +G01 X+13.582 Y-17.197 C156.369 +G01 X+13.73 Y-16.879 B8.939 C153.492 +G01 X+13.899 Y-16.56 C150.543 +G01 X+14.084 Y-16.251 C147.595 +G01 X+14.285 Y-15.951 C144.647 +G01 X+14.501 Y-15.662 C141.699 +G01 X+14.732 Y-15.385 C138.751 +G01 X+14.976 Y-15.12 C135.803 +G01 X+15.234 Y-14.868 C132.854 +G01 X+15.505 Y-14.629 C129.906 +G01 X+15.787 Y-14.405 C126.958 +G01 X+16.081 Y-14.195 B8.938 C124.01 +G01 X+16.334 Y-14.034 B8.937 C121.528 +G01 X+16.385 Y-14.001 B8.938 C121.062 +G01 X+16.698 Y-13.823 C118.114 +G01 X+17.021 Y-13.661 C115.166 +G01 X+17.351 Y-13.516 C112.217 +G01 X+17.69 Y-13.388 C109.256 +G01 X+18.032 Y-13.278 C106.322 +G01 X+18.38 Y-13.186 C103.367 +G01 X+18.733 Y-13.112 C100.413 +G01 X+19.09 Y-13.056 C97.458 +G01 X+19.448 Y-13.018 C94.504 +G01 X+19.808 Y-12.999 B8.939 C91.549 +G01 X+20.169 Y-12.998 C88.595 +G01 X+20.529 Y-13.016 C85.64 +G01 X+20.888 Y-13.053 C82.686 +G01 X+21.245 Y-13.108 C79.732 +G01 X+21.598 Y-13.181 C76.777 +G01 X+21.947 Y-13.272 C73.823 +G01 X+22.307 Y-13.388 B8.938 C70.723 +G01 X+22.639 Y-13.513 C67.82 +G01 X+22.959 Y-13.652 B8.939 C64.966 +G01 X+23.282 Y-13.813 C62.014 +G01 X+23.596 Y-13.99 C59.069 +G01 X+23.9 Y-14.183 C56.121 +G01 X+24.195 Y-14.391 C53.173 +G01 X+24.478 Y-14.615 C50.225 +G01 X+24.749 Y-14.852 C47.277 +G01 X+25.008 Y-15.104 C44.329 +G01 X+25.253 Y-15.368 C41.38 +G01 X+25.485 Y-15.645 C38.432 +G01 X+25.702 Y-15.933 C35.484 +G01 X+25.904 Y-16.232 B8.938 C32.536 +G01 X+26.09 Y-16.54 C29.588 +G01 X+26.26 Y-16.859 C26.64 +G01 X+26.413 Y-17.185 C23.691 +G01 X+26.55 Y-17.519 C20.743 +G01 X+26.669 Y-17.859 C17.799 +G01 X+26.77 Y-18.205 C14.844 +G01 X+26.853 Y-18.556 C11.89 +G01 X+26.919 Y-18.911 C8.936 +G01 X+26.965 Y-19.269 C5.981 +G01 X+26.994 Y-19.628 C3.027 +G01 X+27.004 Y-19.989 B8.939 C0.072 +G01 X+26.995 Y-20.349 C357.118 +G01 X+26.968 Y-20.709 C354.163 +G01 X+26.922 Y-21.067 C351.209 +G01 X+26.858 Y-21.422 C348.255 +G01 X+26.776 Y-21.773 C345.3 +G01 X+26.669 Y-22.139 B8.938 C342.175 +G01 X+26.552 Y-22.474 C339.272 +G01 X+26.418 Y-22.803 C336.369 +G01 X+26.27 Y-23.121 B8.939 C333.492 +G01 X+26.101 Y-23.44 C330.543 +G01 X+25.916 Y-23.749 C327.595 +G01 X+25.715 Y-24.049 C324.647 +G01 X+25.499 Y-24.338 C321.699 +G01 X+25.268 Y-24.615 C318.751 +G01 X+25.024 Y-24.88 C315.803 +G01 X+24.766 Y-25.132 C312.854 +G01 X+24.495 Y-25.371 C309.906 +G01 X+24.213 Y-25.595 C306.958 +G01 X+23.919 Y-25.804 B8.938 C304.01 +G01 X+23.666 Y-25.966 B8.937 C301.528 +G01 X+23.615 Y-25.999 B8.938 C301.062 +G01 X+23.302 Y-26.177 C298.114 +G01 X+22.979 Y-26.338 C295.166 +G01 X+22.649 Y-26.483 C292.217 +G01 X+22.31 Y-26.612 C289.256 +G01 X+21.968 Y-26.721 C286.322 +G01 X+21.62 Y-26.814 C283.367 +G01 X+21.267 Y-26.888 C280.413 +G01 X+20.91 Y-26.944 C277.458 +G01 X+20.552 Y-26.982 C274.504 +G01 X+20.192 Y-27.001 B8.939 C271.549 +G01 X+19.831 Y-27.002 C268.595 +G01 X+19.471 Y-26.984 C265.64 +G01 X+19.112 Y-26.947 C262.686 +G01 X+18.755 Y-26.892 C259.732 +G01 X+18.402 Y-26.819 C256.777 +G01 X+18.053 Y-26.728 C253.823 +G01 X+17.693 Y-26.612 B8.938 C250.723 +G01 X+17.361 Y-26.487 C247.82 +G01 X+17.036 Y-26.345 C244.917 +G01 X+16.624 Y-26.14 Z-1.049 B8.942 C241.352 +G01 X+16.391 Y-26.005 B8.941 C238.962 +G01 X+16.089 Y-25.811 Z-1.048 B8.94 C236.023 +G01 X+15.801 Y-25.606 B8.939 C233.135 +G01 X+15.522 Y-25.385 C230.226 +G01 X+15.251 Y-25.148 C227.277 +G01 X+15.059 Y-24.961 B8.936 C225.101 +G01 Y-24.829 Z-1.034 B8.816 C224.31 +G01 X+14.819 Y-24.57 C221.388 +G01 X+14.59 Y-24.298 C218.44 +G01 X+14.376 Y-24.013 C215.492 +G01 X+14.177 Y-23.719 C212.545 +G01 X+13.994 Y-23.414 C209.597 +G01 X+13.826 Y-23.1 C206.65 +G01 X+13.674 Y-22.778 C203.702 +G01 X+13.54 Y-22.449 C200.755 +G01 X+13.422 Y-22.112 C197.804 +G01 X+13.322 Y-21.772 C194.859 +G01 X+13.24 Y-21.426 C191.905 +G01 X+13.175 Y-21.076 C188.951 +G01 X+13.129 Y-20.723 C185.998 +G01 X+13.101 Y-20.368 C183.044 +G01 X+13.091 Y-20.013 C180.09 +G01 X+13.1 Y-19.657 C177.136 +G01 X+13.126 Y-19.302 B8.817 C174.183 +G01 X+13.171 Y-18.949 C171.229 +G01 X+13.235 Y-18.599 C168.275 +G01 X+13.316 Y-18.253 C165.321 +G01 X+13.414 Y-17.911 C162.367 +G01 X+13.531 Y-17.575 C159.414 +G01 X+13.664 Y-17.245 C156.46 +G01 X+13.814 Y-16.922 C153.507 +G01 X+13.99 Y-16.593 Z-1.033 B8.816 C150.41 +G01 X+14.17 Y-16.293 C147.507 +G01 X+14.362 Y-16.007 Z-1.034 B8.817 C144.651 +G01 X+14.575 Y-15.722 C141.701 +G01 X+14.802 Y-15.448 C138.757 +G01 X+15.043 Y-15.187 C135.809 +G01 X+15.298 Y-14.938 C132.861 +G01 X+15.564 Y-14.703 C129.914 +G01 X+15.843 Y-14.481 B8.816 C126.966 +G01 X+16.133 Y-14.275 C124.019 +G01 X+16.433 Y-14.083 C121.071 +G01 X+16.742 Y-13.908 C118.124 +G01 X+17.06 Y-13.748 C115.176 +G01 X+17.386 Y-13.605 C112.228 +G01 X+17.718 Y-13.479 C109.281 +G01 X+18.057 Y-13.37 C106.336 +G01 X+18.401 Y-13.279 C103.382 +G01 X+18.749 Y-13.205 C100.428 +G01 X+19.1 Y-13.15 C97.474 +G01 X+19.454 Y-13.113 C94.521 +G01 X+19.809 Y-13.094 C91.567 +G01 X+20.165 Y-13.093 C88.613 +G01 X+20.521 Y-13.111 B8.817 C85.66 +G01 X+20.875 Y-13.147 C82.706 +G01 X+21.226 Y-13.201 C79.752 +G01 X+21.575 Y-13.273 C76.798 +G01 X+21.919 Y-13.363 C73.845 +G01 X+22.258 Y-13.47 C70.891 +G01 X+22.591 Y-13.595 C67.937 +G01 X+22.917 Y-13.737 C64.983 +G01 X+23.254 Y-13.906 Z-1.033 B8.816 C61.862 +G01 X+23.558 Y-14.078 C58.958 +G01 X+23.846 Y-14.261 Z-1.034 B8.817 C56.125 +G01 X+24.137 Y-14.466 C53.178 +G01 X+24.416 Y-14.687 C50.23 +G01 X+24.684 Y-14.921 C47.283 +G01 X+24.939 Y-15.169 C44.335 +G01 X+25.181 Y-15.429 B8.816 C41.388 +G01 X+25.41 Y-15.702 B8.817 C38.44 +G01 X+25.624 Y-15.986 B8.816 C35.492 +G01 X+25.823 Y-16.281 C32.545 +G01 X+26.007 Y-16.586 C29.597 +G01 X+26.174 Y-16.9 C26.65 +G01 X+26.326 Y-17.222 C23.702 +G01 X+26.46 Y-17.551 C20.755 +G01 X+26.578 Y-17.887 C17.804 +G01 X+26.678 Y-18.228 C14.859 +G01 X+26.76 Y-18.574 C11.905 +G01 X+26.825 Y-18.924 C8.951 +G01 X+26.871 Y-19.277 C5.998 +G01 X+26.899 Y-19.632 C3.044 +G01 X+26.909 Y-19.987 C0.09 +G01 X+26.9 Y-20.343 C357.136 +G01 X+26.874 Y-20.698 B8.817 C354.183 +G01 X+26.829 Y-21.051 C351.229 +G01 X+26.765 Y-21.401 C348.275 +G01 X+26.684 Y-21.747 C345.321 +G01 X+26.586 Y-22.089 C342.367 +G01 X+26.469 Y-22.425 C339.414 +G01 X+26.336 Y-22.755 C336.46 +G01 X+26.186 Y-23.078 C333.507 +G01 X+26.01 Y-23.407 Z-1.033 B8.816 C330.41 +G01 X+25.83 Y-23.707 C327.507 +G01 X+25.638 Y-23.993 Z-1.034 B8.817 C324.651 +G01 X+25.425 Y-24.278 C321.701 +G01 X+25.198 Y-24.551 C318.757 +G01 X+24.957 Y-24.813 C315.809 +G01 X+24.702 Y-25.062 C312.861 +G01 X+24.436 Y-25.297 C309.914 +G01 X+24.157 Y-25.518 B8.816 C306.966 +G01 X+23.867 Y-25.725 C304.019 +G01 X+23.568 Y-25.917 C301.071 +G01 X+23.258 Y-26.092 C298.124 +G01 X+22.94 Y-26.252 C295.176 +G01 X+22.614 Y-26.395 C292.228 +G01 X+22.282 Y-26.521 C289.281 +G01 X+21.943 Y-26.63 C286.336 +G01 X+21.599 Y-26.721 C283.382 +G01 X+21.251 Y-26.795 C280.428 +G01 X+20.9 Y-26.85 C277.474 +G01 X+20.546 Y-26.887 C274.521 +G01 X+20.191 Y-26.906 C271.567 +G01 X+19.835 Y-26.907 C268.613 +G01 X+19.479 Y-26.889 B8.817 C265.66 +G01 X+19.125 Y-26.853 C262.706 +G01 X+18.774 Y-26.799 C259.752 +G01 X+18.425 Y-26.727 C256.798 +G01 X+18.081 Y-26.637 C253.844 +G01 X+17.742 Y-26.529 C250.891 +G01 X+17.409 Y-26.405 C247.937 +G01 X+17.085 Y-26.264 C245.004 +G01 X+16.687 Y-26.065 B8.819 C241.352 +G01 X+16.667 Y-26.055 +G01 X+16.592 Y-26.012 B8.818 C240.413 +G01 X+16.441 Y-25.924 B8.819 C238.962 +G01 X+16.142 Y-25.733 B8.818 C236.026 +G01 X+15.859 Y-25.531 B8.817 C233.137 +G01 X+15.584 Y-25.313 C230.232 +G01 X+15.316 Y-25.079 C227.283 +G01 X+15.126 Y-24.894 Z-1.033 B8.814 C225.105 +G01 Y-24.761 Z-1.019 B8.694 C224.294 +G01 X+14.89 Y-24.508 C221.387 +G01 X+14.666 Y-24.24 C218.448 +G01 X+14.454 Y-23.96 C215.501 +G01 X+14.258 Y-23.669 C212.554 +G01 X+14.077 Y-23.368 C209.607 +G01 X+13.903 Y-23.042 B8.693 C206.514 +G01 X+13.762 Y-22.741 B8.694 C203.713 +G01 X+13.629 Y-22.417 C200.766 +G01 X+13.513 Y-22.086 C197.819 +G01 X+13.414 Y-21.749 C194.873 +G01 X+13.333 Y-21.407 C191.92 +G01 X+13.269 Y-21.062 C188.967 +G01 X+13.223 Y-20.714 C186.014 +G01 X+13.196 Y-20.365 C183.061 +G01 X+13.186 Y-20.014 C180.108 +G01 X+13.194 Y-19.663 C177.155 +G01 X+13.221 Y-19.313 C174.202 +G01 X+13.265 Y-18.965 C171.248 +G01 X+13.327 Y-18.62 B8.695 C168.296 +G01 X+13.407 Y-18.278 C165.343 +G01 X+13.504 Y-17.941 C162.389 +G01 X+13.619 Y-17.609 C159.436 +G01 X+13.751 Y-17.284 C156.483 +G01 X+13.899 Y-16.966 C153.53 +G01 X+14.063 Y-16.656 C150.577 +G01 X+14.243 Y-16.355 C147.624 +G01 X+14.438 Y-16.063 C144.671 +G01 X+14.662 Y-15.766 B8.694 C141.548 +G01 X+14.872 Y-15.512 C138.765 +G01 X+15.11 Y-15.254 C135.815 +G01 X+15.361 Y-15.009 C132.868 +G01 X+15.624 Y-14.777 C129.921 +G01 X+15.899 Y-14.558 C126.974 +G01 X+16.184 Y-14.354 C124.027 +G01 X+16.48 Y-14.165 C121.08 +G01 X+16.785 Y-13.992 C118.133 +G01 X+17.099 Y-13.834 C115.186 +G01 X+17.42 Y-13.693 C112.239 +G01 X+17.748 Y-13.569 C109.292 +G01 X+18.082 Y-13.461 C106.349 +G01 X+18.421 Y-13.371 C103.397 +G01 X+18.765 Y-13.299 C100.443 +G01 X+19.111 Y-13.244 C97.49 +G01 X+19.46 Y-13.207 C94.537 +G01 X+19.811 Y-13.188 C91.584 +G01 X+20.161 C88.631 +G01 X+20.512 Y-13.205 C85.678 +G01 X+20.861 Y-13.24 C82.725 +G01 X+21.208 Y-13.294 B8.695 C79.772 +G01 X+21.551 Y-13.365 C76.819 +G01 X+21.891 Y-13.453 C73.866 +G01 X+22.225 Y-13.559 C70.913 +G01 X+22.554 Y-13.683 C67.96 +G01 X+22.876 Y-13.822 C65.007 +G01 X+23.19 Y-13.979 C62.054 +G01 X+23.496 Y-14.151 C59.101 +G01 X+23.792 Y-14.339 C56.148 +G01 X+24.079 Y-14.541 C53.195 +G01 X+24.368 Y-14.77 B8.694 C50.097 +G01 X+24.618 Y-14.99 C47.288 +G01 X+24.87 Y-15.234 C44.342 +G01 X+25.11 Y-15.492 C41.387 +G01 X+25.334 Y-15.76 C38.448 +G01 X+25.546 Y-16.04 C35.501 +G01 X+25.742 Y-16.331 C32.554 +G01 X+25.923 Y-16.631 C29.607 +G01 X+26.097 Y-16.958 B8.693 C26.514 +G01 X+26.238 Y-17.258 B8.694 C23.713 +G01 X+26.371 Y-17.583 C20.766 +G01 X+26.487 Y-17.914 C17.819 +G01 X+26.586 Y-18.251 C14.873 +G01 X+26.667 Y-18.592 C11.92 +G01 X+26.731 Y-18.937 C8.967 +G01 X+26.777 Y-19.285 C6.014 +G01 X+26.804 Y-19.635 C3.061 +G01 X+26.814 Y-19.986 C0.108 +G01 X+26.806 Y-20.337 C357.155 +G01 X+26.779 Y-20.687 C354.202 +G01 X+26.735 Y-21.035 C351.248 +G01 X+26.673 Y-21.38 B8.695 C348.296 +G01 X+26.593 Y-21.722 C345.343 +G01 X+26.496 Y-22.059 C342.389 +G01 X+26.381 Y-22.39 C339.436 +G01 X+26.249 Y-22.716 C336.483 +G01 X+26.101 Y-23.034 C333.53 +G01 X+25.937 Y-23.344 C330.577 +G01 X+25.757 Y-23.645 C327.624 +G01 X+25.562 Y-23.937 C324.671 +G01 X+25.338 Y-24.234 B8.694 C321.548 +G01 X+25.128 Y-24.488 C318.765 +G01 X+24.89 Y-24.746 C315.815 +G01 X+24.639 Y-24.991 C312.868 +G01 X+24.376 Y-25.223 C309.921 +G01 X+24.101 Y-25.442 C306.974 +G01 X+23.816 Y-25.646 C304.027 +G01 X+23.52 Y-25.835 C301.08 +G01 X+23.215 Y-26.008 C298.133 +G01 X+22.901 Y-26.166 C295.186 +G01 X+22.58 Y-26.307 C292.239 +G01 X+22.252 Y-26.431 C289.292 +G01 X+21.918 Y-26.539 C286.349 +G01 X+21.579 Y-26.629 C283.397 +G01 X+21.235 Y-26.701 C280.443 +G01 X+20.889 Y-26.756 C277.49 +G01 X+20.54 Y-26.793 C274.537 +G01 X+20.189 Y-26.811 C271.584 +G01 X+19.839 Y-26.812 C268.631 +G01 X+19.488 Y-26.795 C265.678 +G01 X+19.139 Y-26.759 C262.725 +G01 X+18.792 Y-26.706 B8.695 C259.772 +G01 X+18.449 Y-26.635 C256.819 +G01 X+18.109 Y-26.546 C253.866 +G01 X+17.775 Y-26.44 C250.913 +G01 X+17.446 Y-26.317 C247.96 +G01 X+17.126 Y-26.178 C245.029 +G01 X+16.714 Y-25.973 B8.697 C241.352 +G01 X+16.474 Y-25.832 B8.696 C238.809 +G01 X+16.196 Y-25.655 C236.032 +G01 X+15.903 Y-25.444 B8.694 C233. +G01 X+15.632 Y-25.229 C230.096 +G01 X+15.382 Y-25.01 C227.288 +G01 X+15.193 Y-24.827 B8.692 C225.109 +G01 Y-24.694 Z-1.004 B8.572 C224.284 +G01 X+14.963 Y-24.447 C221.411 +G01 X+14.741 Y-24.182 C218.459 +G01 X+14.533 Y-23.906 C215.509 +G01 X+14.339 Y-23.619 C212.562 +G01 X+14.16 Y-23.323 C209.616 +G01 X+13.988 Y-22.999 B8.571 C206.513 +G01 X+13.849 Y-22.705 B8.572 C203.723 +G01 X+13.718 Y-22.385 C200.777 +G01 X+13.604 Y-22.058 C197.831 +G01 X+13.506 Y-21.726 C194.887 +G01 X+13.426 Y-21.389 C191.935 +G01 X+13.363 Y-21.049 C188.982 +G01 X+13.318 Y-20.706 C186.03 +G01 X+13.29 Y-20.361 C183.077 +G01 X+13.281 Y-20.015 C180.125 +G01 X+13.289 Y-19.669 C177.173 +G01 X+13.315 Y-19.324 C174.22 +G01 X+13.358 Y-18.981 C171.268 +G01 X+13.42 Y-18.641 B8.573 C168.316 +G01 X+13.498 Y-18.304 C165.363 +G01 X+13.594 Y-17.971 C162.411 +G01 X+13.707 Y-17.644 C159.459 +G01 X+13.837 Y-17.323 C156.506 +G01 X+13.983 Y-17.01 C153.554 +G01 X+14.145 Y-16.704 C150.602 +G01 X+14.322 Y-16.407 C147.649 +G01 X+14.515 Y-16.119 C144.697 +G01 X+14.722 Y-15.842 C141.744 +G01 X+14.943 Y-15.576 B8.572 C138.792 +G01 X+15.177 Y-15.321 C135.84 +G01 X+15.425 Y-15.079 C132.887 +G01 X+15.684 Y-14.85 C129.935 +G01 X+15.955 Y-14.635 C126.983 +G01 X+16.236 Y-14.434 C124.036 +G01 X+16.53 Y-14.246 C121.074 +G01 X+16.829 Y-14.076 C118.143 +G01 X+17.154 Y-13.914 B8.571 C115.062 +G01 X+17.454 Y-13.782 B8.572 C112.25 +G01 X+17.778 Y-13.659 C109.304 +G01 X+18.108 Y-13.553 C106.352 +G01 X+18.442 Y-13.464 C103.411 +G01 X+18.78 Y-13.392 C100.458 +G01 X+19.122 Y-13.338 C97.506 +G01 X+19.466 Y-13.302 C94.554 +G01 X+19.812 Y-13.283 C91.601 +G01 X+20.158 C88.649 +G01 X+20.503 Y-13.3 C85.697 +G01 X+20.848 Y-13.334 C82.744 +G01 X+21.19 Y-13.387 C79.792 +G01 X+21.528 Y-13.457 B8.573 C76.84 +G01 X+21.863 Y-13.544 C73.887 +G01 X+22.193 Y-13.649 C70.935 +G01 X+22.517 Y-13.77 C67.982 +G01 X+22.834 Y-13.908 C65.03 +G01 X+23.144 Y-14.062 C62.078 +G01 X+23.446 Y-14.232 C59.125 +G01 X+23.738 Y-14.417 C56.173 +G01 X+24.021 Y-14.616 C53.221 +G01 X+24.292 Y-14.831 C50.268 +G01 X+24.553 Y-15.058 B8.572 C47.316 +G01 X+24.801 Y-15.299 C44.363 +G01 X+25.037 Y-15.553 C41.411 +G01 X+25.259 Y-15.818 C38.459 +G01 X+25.467 Y-16.094 C35.509 +G01 X+25.661 Y-16.381 C32.562 +G01 X+25.84 Y-16.677 C29.616 +G01 X+26.012 Y-17.001 B8.571 C26.513 +G01 X+26.151 Y-17.295 B8.572 C23.723 +G01 X+26.282 Y-17.615 C20.777 +G01 X+26.396 Y-17.942 C17.831 +G01 X+26.494 Y-18.274 C14.887 +G01 X+26.574 Y-18.61 C11.935 +G01 X+26.637 Y-18.951 C8.982 +G01 X+26.682 Y-19.294 C6.03 +G01 X+26.71 Y-19.639 C3.077 +G01 X+26.719 Y-19.985 C0.125 +G01 X+26.711 Y-20.33 C357.173 +G01 X+26.685 Y-20.676 C354.22 +G01 X+26.642 Y-21.019 C351.268 +G01 X+26.58 Y-21.359 B8.573 C348.316 +G01 X+26.502 Y-21.696 C345.363 +G01 X+26.406 Y-22.029 C342.411 +G01 X+26.293 Y-22.356 C339.459 +G01 X+26.163 Y-22.677 C336.506 +G01 X+26.017 Y-22.99 C333.554 +G01 X+25.855 Y-23.296 C330.602 +G01 X+25.678 Y-23.593 C327.649 +G01 X+25.485 Y-23.881 C324.697 +G01 X+25.278 Y-24.158 C321.744 +G01 X+25.057 Y-24.424 B8.572 C318.792 +G01 X+24.823 Y-24.679 C315.84 +G01 X+24.575 Y-24.921 C312.887 +G01 X+24.316 Y-25.15 C309.935 +G01 X+24.045 Y-25.365 C306.983 +G01 X+23.764 Y-25.566 C304.036 +G01 X+23.47 Y-25.753 C301.074 +G01 X+23.171 Y-25.924 C298.143 +G01 X+22.846 Y-26.086 B8.571 C295.062 +G01 X+22.546 Y-26.218 B8.572 C292.25 +G01 X+22.222 Y-26.341 C289.304 +G01 X+21.892 Y-26.447 C286.352 +G01 X+21.558 Y-26.536 C283.411 +G01 X+21.22 Y-26.608 C280.458 +G01 X+20.878 Y-26.662 C277.506 +G01 X+20.534 Y-26.698 C274.554 +G01 X+20.188 Y-26.717 C271.601 +G01 X+19.842 C268.649 +G01 X+19.497 Y-26.7 C265.697 +G01 X+19.152 Y-26.665 C262.744 +G01 X+18.81 Y-26.613 C259.792 +G01 X+18.472 Y-26.543 B8.573 C256.84 +G01 X+18.137 Y-26.456 C253.887 +G01 X+17.807 Y-26.351 C250.935 +G01 X+17.483 Y-26.23 C247.982 +G01 X+17.168 Y-26.093 B8.572 C245.053 +G01 X+16.757 Y-25.888 Z-1.005 B8.576 C241.352 +G01 X+16.542 Y-25.763 B8.575 C239.007 +G01 X+16.25 Y-25.577 B8.574 C236.056 +G01 X+15.974 Y-25.38 B8.573 C233.167 +G01 X+15.708 Y-25.17 Z-1.004 C230.271 +G01 X+15.447 Y-24.942 B8.572 C227.316 +G01 X+15.26 Y-24.76 B8.57 C225.113 +G01 X+15.259 Y-24.627 Z-0.99 B8.45 C224.286 +G01 X+15.035 Y-24.386 C221.44 +G01 X+14.816 Y-24.124 C218.488 +G01 X+14.611 Y-23.852 C215.536 +G01 X+14.42 Y-23.569 C212.585 +G01 X+14.243 Y-23.277 C209.633 +G01 X+14.082 Y-22.977 C206.681 +G01 X+13.937 Y-22.668 C203.734 +G01 X+13.807 Y-22.352 C200.788 +G01 X+13.695 Y-22.03 C197.842 +G01 X+13.598 Y-21.703 C194.9 +G01 X+13.519 Y-21.371 C191.949 +G01 X+13.457 Y-21.036 C188.998 +G01 X+13.413 Y-20.698 C186.046 +G01 X+13.385 Y-20.358 C183.094 +G01 X+13.376 Y-20.017 C180.142 +G01 X+13.384 Y-19.676 C177.191 +G01 X+13.409 Y-19.335 C174.239 +G01 X+13.452 Y-18.997 C171.288 +G01 X+13.512 Y-18.661 C168.336 +G01 X+13.59 Y-18.329 C165.384 +G01 X+13.684 Y-18.001 C162.432 +G01 X+13.796 Y-17.679 B8.451 C159.481 +G01 X+13.923 Y-17.362 C156.529 +G01 X+14.067 Y-17.053 C153.577 +G01 X+14.227 Y-16.752 C150.626 +G01 X+14.402 Y-16.459 C147.674 +G01 X+14.591 Y-16.175 C144.722 +G01 X+14.795 Y-15.902 C141.771 +G01 X+15.013 Y-15.639 C138.819 +G01 X+15.244 Y-15.388 B8.45 C135.867 +G01 X+15.488 Y-15.15 C132.916 +G01 X+15.744 Y-14.924 C129.964 +G01 X+16.011 Y-14.712 C127.012 +G01 X+16.288 Y-14.513 C124.061 +G01 X+16.576 Y-14.329 C121.109 +G01 X+16.872 Y-14.161 C118.157 +G01 X+17.177 Y-14.007 C115.207 +G01 X+17.489 Y-13.87 C112.261 +G01 X+17.809 Y-13.749 C109.309 +G01 X+18.133 Y-13.644 C106.369 +G01 X+18.462 Y-13.557 C103.425 +G01 X+18.796 Y-13.486 C100.473 +G01 X+19.133 Y-13.433 C97.522 +G01 X+19.472 Y-13.397 C94.57 +G01 X+19.813 Y-13.378 C91.618 +G01 X+20.154 Y-13.377 C88.666 +G01 X+20.495 Y-13.394 C85.715 +G01 X+20.834 Y-13.428 C82.763 +G01 X+21.171 Y-13.48 C79.812 +G01 X+21.505 Y-13.549 C76.86 +G01 X+21.835 Y-13.635 C73.908 +G01 X+22.161 Y-13.738 B8.451 C70.957 +G01 X+22.48 Y-13.857 C68.005 +G01 X+22.793 Y-13.993 C65.053 +G01 X+23.099 Y-14.145 C62.102 +G01 X+23.396 Y-14.312 C59.15 +G01 X+23.684 Y-14.495 C56.198 +G01 X+23.963 Y-14.692 C53.247 +G01 X+24.231 Y-14.903 C50.295 +G01 X+24.487 Y-15.127 C47.343 +G01 X+24.732 Y-15.365 B8.45 C44.391 +G01 X+24.965 Y-15.614 C41.44 +G01 X+25.184 Y-15.876 C38.488 +G01 X+25.389 Y-16.148 C35.536 +G01 X+25.58 Y-16.431 C32.585 +G01 X+25.757 Y-16.723 C29.633 +G01 X+25.918 Y-17.023 C26.681 +G01 X+26.063 Y-17.332 C23.734 +G01 X+26.193 Y-17.648 C20.788 +G01 X+26.305 Y-17.969 C17.842 +G01 X+26.402 Y-18.297 C14.9 +G01 X+26.481 Y-18.629 C11.949 +G01 X+26.543 Y-18.964 C8.998 +G01 X+26.587 Y-19.302 C6.046 +G01 X+26.615 Y-19.642 C3.094 +G01 X+26.624 Y-19.983 C0.142 +G01 X+26.616 Y-20.324 C357.191 +G01 X+26.591 Y-20.664 C354.239 +G01 X+26.548 Y-21.003 C351.288 +G01 X+26.488 Y-21.339 C348.336 +G01 X+26.41 Y-21.671 C345.384 +G01 X+26.316 Y-21.999 C342.432 +G01 X+26.204 Y-22.321 B8.451 C339.481 +G01 X+26.077 Y-22.637 C336.529 +G01 X+25.933 Y-22.947 C333.577 +G01 X+25.773 Y-23.248 C330.626 +G01 X+25.598 Y-23.541 C327.674 +G01 X+25.409 Y-23.825 C324.722 +G01 X+25.205 Y-24.098 C321.771 +G01 X+24.987 Y-24.36 C318.819 +G01 X+24.756 Y-24.611 B8.45 C315.867 +G01 X+24.512 Y-24.85 C312.916 +G01 X+24.256 Y-25.076 C309.964 +G01 X+23.989 Y-25.288 C307.012 +G01 X+23.712 Y-25.487 C304.061 +G01 X+23.424 Y-25.67 C301.109 +G01 X+23.128 Y-25.839 C298.157 +G01 X+22.823 Y-25.993 C295.207 +G01 X+22.511 Y-26.13 C292.261 +G01 X+22.191 Y-26.251 C289.309 +G01 X+21.867 Y-26.356 C286.369 +G01 X+21.538 Y-26.443 C283.425 +G01 X+21.204 Y-26.514 C280.473 +G01 X+20.867 Y-26.567 C277.522 +G01 X+20.528 Y-26.603 C274.57 +G01 X+20.187 Y-26.622 C271.618 +G01 X+19.846 C268.666 +G01 X+19.505 Y-26.606 C265.715 +G01 X+19.166 Y-26.572 C262.763 +G01 X+18.829 Y-26.52 C259.812 +G01 X+18.495 Y-26.451 C256.86 +G01 X+18.165 Y-26.365 C253.908 +G01 X+17.839 Y-26.262 B8.451 C250.957 +G01 X+17.52 Y-26.142 C248.005 +G01 X+17.209 Y-26.008 B8.45 C245.077 +G01 X+16.802 Y-25.805 Z-0.991 B8.454 C241.352 +G01 X+16.592 Y-25.683 B8.453 C239.033 +G01 X+16.304 Y-25.499 Z-0.99 B8.452 C236.08 +G01 X+16.032 Y-25.305 B8.451 C233.19 +G01 X+15.77 Y-25.098 C230.297 +G01 X+15.513 Y-24.873 B8.45 C227.343 +G01 X+15.327 Y-24.693 B8.448 C225.116 +G01 X+15.326 Y-24.559 Z-0.976 B8.328 C224.289 +G01 X+15.107 Y-24.324 C221.469 +G01 X+14.891 Y-24.066 C218.517 +G01 X+14.689 Y-23.798 C215.566 +G01 X+14.5 Y-23.519 C212.615 +G01 X+14.326 Y-23.232 C209.664 +G01 X+14.167 Y-22.935 C206.713 +G01 X+14.024 Y-22.631 C203.763 +G01 X+13.897 Y-22.32 C200.811 +G01 X+13.785 Y-22.003 C197.86 +G01 X+13.69 Y-21.679 C194.901 +G01 X+13.612 Y-21.353 C191.963 +G01 X+13.551 Y-21.023 C189.012 +G01 X+13.507 Y-20.689 C186.061 +G01 X+13.48 Y-20.354 C183.11 +G01 X+13.47 Y-20.018 C180.159 +G01 X+13.478 Y-19.682 C177.209 +G01 X+13.503 Y-19.346 C174.258 +G01 X+13.545 Y-19.013 C171.306 +G01 X+13.605 Y-18.682 C168.355 +G01 X+13.681 Y-18.354 B8.329 C165.404 +G01 X+13.774 Y-18.031 C162.453 +G01 X+13.884 Y-17.713 C159.503 +G01 X+14.01 Y-17.402 C156.552 +G01 X+14.151 Y-17.097 C153.601 +G01 X+14.309 Y-16.799 C150.65 +G01 X+14.481 Y-16.511 C147.699 +G01 X+14.668 Y-16.231 C144.748 +G01 X+14.869 Y-15.962 C141.797 +G01 X+15.084 Y-15.703 C138.846 +G01 X+15.311 Y-15.456 C135.895 +G01 X+15.551 Y-15.22 C132.944 +G01 X+15.803 Y-14.998 B8.328 C129.993 +G01 X+16.066 Y-14.788 C127.042 +G01 X+16.34 Y-14.593 C124.091 +G01 X+16.623 Y-14.411 C121.14 +G01 X+16.915 Y-14.245 C118.189 +G01 X+17.216 Y-14.094 C115.238 +G01 X+17.523 Y-13.958 C112.287 +G01 X+17.838 Y-13.839 C109.336 +G01 X+18.158 Y-13.736 C106.385 +G01 X+18.483 Y-13.649 C103.439 +G01 X+18.812 Y-13.579 C100.488 +G01 X+19.144 Y-13.527 C97.537 +G01 X+19.478 Y-13.491 C94.586 +G01 X+19.814 Y-13.473 C91.635 +G01 X+20.15 Y-13.472 C88.684 +G01 X+20.486 Y-13.488 C85.733 +G01 X+20.821 Y-13.522 C82.782 +G01 X+21.153 Y-13.573 C79.831 +G01 X+21.482 Y-13.641 B8.329 C76.88 +G01 X+21.808 Y-13.726 C73.929 +G01 X+22.128 Y-13.827 C70.978 +G01 X+22.443 Y-13.945 C68.027 +G01 X+22.752 Y-14.078 C65.076 +G01 X+23.053 Y-14.228 C62.125 +G01 X+23.346 Y-14.393 C59.174 +G01 X+23.63 Y-14.572 C56.223 +G01 X+23.905 Y-14.767 C53.272 +G01 X+24.169 Y-14.974 C50.321 +G01 X+24.422 Y-15.196 C47.37 +G01 X+24.664 Y-15.43 C44.419 +G01 X+24.893 Y-15.676 C41.468 +G01 X+25.109 Y-15.934 B8.328 C38.518 +G01 X+25.311 Y-16.202 C35.566 +G01 X+25.5 Y-16.48 C32.615 +G01 X+25.674 Y-16.768 C29.664 +G01 X+25.833 Y-17.065 C26.714 +G01 X+25.976 Y-17.369 C23.763 +G01 X+26.103 Y-17.68 C20.811 +G01 X+26.215 Y-17.997 C17.86 +G01 X+26.31 Y-18.321 C14.901 +G01 X+26.388 Y-18.647 C11.963 +G01 X+26.449 Y-18.977 C9.012 +G01 X+26.493 Y-19.311 C6.061 +G01 X+26.52 Y-19.646 C3.11 +G01 X+26.53 Y-19.982 C0.159 +G01 X+26.522 Y-20.318 C357.209 +G01 X+26.497 Y-20.653 C354.258 +G01 X+26.455 Y-20.987 C351.306 +G01 X+26.395 Y-21.318 C348.355 +G01 X+26.319 Y-21.645 B8.329 C345.404 +G01 X+26.226 Y-21.969 C342.453 +G01 X+26.116 Y-22.286 C339.503 +G01 X+25.99 Y-22.598 C336.552 +G01 X+25.849 Y-22.903 C333.601 +G01 X+25.691 Y-23.2 C330.65 +G01 X+25.519 Y-23.489 C327.698 +G01 X+25.332 Y-23.769 C324.748 +G01 X+25.131 Y-24.038 C321.797 +G01 X+24.916 Y-24.297 C318.846 +G01 X+24.689 Y-24.544 C315.895 +G01 X+24.449 Y-24.78 C312.944 +G01 X+24.197 Y-25.002 B8.328 C309.993 +G01 X+23.934 Y-25.212 C307.042 +G01 X+23.66 Y-25.407 C304.091 +G01 X+23.377 Y-25.589 C301.14 +G01 X+23.085 Y-25.755 C298.189 +G01 X+22.784 Y-25.906 C295.238 +G01 X+22.477 Y-26.042 C292.287 +G01 X+22.162 Y-26.161 C289.336 +G01 X+21.842 Y-26.264 C286.385 +G01 X+21.517 Y-26.351 C283.439 +G01 X+21.188 Y-26.42 C280.488 +G01 X+20.856 Y-26.473 C277.537 +G01 X+20.522 Y-26.509 C274.586 +G01 X+20.186 Y-26.527 C271.635 +G01 X+19.85 Y-26.528 C268.684 +G01 X+19.514 Y-26.511 C265.733 +G01 X+19.179 Y-26.478 C262.782 +G01 X+18.847 Y-26.427 C259.831 +G01 X+18.518 Y-26.359 B8.329 C256.88 +G01 X+18.192 Y-26.274 C253.929 +G01 X+17.872 Y-26.173 C250.978 +G01 X+17.557 Y-26.055 C248.027 +G01 X+17.251 Y-25.923 B8.328 C245.101 +G01 X+16.847 Y-25.721 Z-0.977 B8.332 C241.352 +G01 X+16.642 Y-25.602 B8.331 C239.059 +G01 X+16.358 Y-25.421 Z-0.976 B8.33 C236.103 +G01 X+16.09 Y-25.23 B8.329 C233.213 +G01 X+15.831 Y-25.026 C230.324 +G01 X+15.578 Y-24.804 C227.371 +G01 X+15.394 Y-24.625 B8.328 C225.12 +G01 X+15.393 Y-24.492 Z-0.962 B8.209 C224.271 +G01 X+15.179 Y-24.262 B8.21 C221.476 +G01 X+14.966 Y-24.009 C218.526 +G01 X+14.767 Y-23.744 C215.576 +G01 X+14.581 Y-23.47 C212.625 +G01 X+14.409 Y-23.186 C209.675 +G01 X+14.253 Y-22.894 C206.724 +G01 X+14.111 Y-22.594 C203.774 +G01 X+13.986 Y-22.288 C200.824 +G01 X+13.876 Y-21.975 C197.874 +G01 X+13.782 Y-21.657 C194.923 +G01 X+13.705 Y-21.335 C191.974 +G01 X+13.645 Y-21.009 C189.016 +G01 X+13.601 Y-20.681 C186.058 +G01 X+13.575 Y-20.35 C183.106 +G01 X+13.565 Y-20.019 C180.154 +G01 X+13.573 Y-19.688 C177.205 +G01 X+13.597 Y-19.357 C174.255 +G01 X+13.639 Y-19.029 C171.305 +G01 X+13.697 Y-18.703 C168.355 +G01 X+13.772 Y-18.38 C165.404 +G01 X+13.864 Y-18.061 C162.454 +G01 X+13.972 Y-17.748 C159.504 +G01 X+14.096 Y-17.441 C156.553 +G01 X+14.235 Y-17.14 C153.603 +G01 X+14.39 Y-16.847 C150.653 +G01 X+14.56 Y-16.563 C147.703 +G01 X+14.744 Y-16.287 C144.752 +G01 X+14.942 Y-16.021 C141.802 +G01 X+15.154 Y-15.766 C138.852 +G01 X+15.378 Y-15.523 C135.901 +G01 X+15.615 Y-15.291 C132.951 +G01 X+15.863 Y-15.071 C130.001 +G01 X+16.122 Y-14.865 C127.051 +G01 X+16.392 Y-14.672 C124.1 +G01 X+16.671 Y-14.493 C121.15 +G01 X+16.959 Y-14.329 C118.2 +G01 X+17.255 Y-14.18 C115.249 +G01 X+17.558 Y-14.046 C112.299 +G01 X+17.868 Y-13.929 C109.349 +G01 X+18.183 Y-13.827 C106.399 +G01 X+18.503 Y-13.741 B8.209 C103.449 +G01 X+18.827 Y-13.673 B8.21 C100.495 +G01 X+19.155 Y-13.621 C97.537 +G01 X+19.484 Y-13.586 C94.581 +G01 X+19.815 Y-13.568 C91.631 +G01 X+20.146 Y-13.567 C88.68 +G01 X+20.477 Y-13.583 C85.73 +G01 X+20.807 Y-13.616 C82.78 +G01 X+21.135 Y-13.666 C79.83 +G01 X+21.459 Y-13.733 C76.88 +G01 X+21.78 Y-13.816 C73.929 +G01 X+22.096 Y-13.916 C70.979 +G01 X+22.406 Y-14.032 C68.029 +G01 X+22.71 Y-14.164 C65.078 +G01 X+23.007 Y-14.311 C62.128 +G01 X+23.296 Y-14.473 C59.177 +G01 X+23.576 Y-14.65 C56.227 +G01 X+23.847 Y-14.842 C53.277 +G01 X+24.107 Y-15.046 C50.327 +G01 X+24.357 Y-15.264 C47.377 +G01 X+24.595 Y-15.495 C44.426 +G01 X+24.821 Y-15.737 C41.476 +G01 X+25.034 Y-15.991 C38.526 +G01 X+25.233 Y-16.256 C35.576 +G01 X+25.419 Y-16.53 C32.625 +G01 X+25.591 Y-16.814 C29.675 +G01 X+25.747 Y-17.106 C26.724 +G01 X+25.889 Y-17.405 C23.774 +G01 X+26.014 Y-17.712 C20.824 +G01 X+26.124 Y-18.025 C17.874 +G01 X+26.218 Y-18.343 C14.923 +G01 X+26.295 Y-18.665 C11.974 +G01 X+26.355 Y-18.991 C9.016 +G01 X+26.399 Y-19.319 C6.058 +G01 X+26.425 Y-19.649 C3.106 +G01 X+26.435 Y-19.981 C0.154 +G01 X+26.427 Y-20.312 C357.205 +G01 X+26.403 Y-20.642 C354.255 +G01 X+26.361 Y-20.971 C351.305 +G01 X+26.303 Y-21.297 C348.355 +G01 X+26.228 Y-21.62 C345.404 +G01 X+26.136 Y-21.939 C342.454 +G01 X+26.028 Y-22.252 C339.504 +G01 X+25.904 Y-22.559 C336.553 +G01 X+25.765 Y-22.86 C333.603 +G01 X+25.61 Y-23.153 C330.653 +G01 X+25.44 Y-23.437 C327.703 +G01 X+25.256 Y-23.713 C324.752 +G01 X+25.058 Y-23.978 C321.802 +G01 X+24.846 Y-24.233 C318.852 +G01 X+24.622 Y-24.477 C315.901 +G01 X+24.385 Y-24.709 C312.951 +G01 X+24.137 Y-24.929 C310.001 +G01 X+23.878 Y-25.135 C307.051 +G01 X+23.608 Y-25.328 C304.1 +G01 X+23.329 Y-25.507 C301.15 +G01 X+23.041 Y-25.671 C298.2 +G01 X+22.745 Y-25.82 C295.249 +G01 X+22.442 Y-25.953 C292.299 +G01 X+22.132 Y-26.071 C289.349 +G01 X+21.817 Y-26.173 C286.399 +G01 X+21.497 Y-26.258 B8.209 C283.449 +G01 X+21.173 Y-26.327 B8.21 C280.495 +G01 X+20.845 Y-26.379 C277.537 +G01 X+20.516 Y-26.414 C274.581 +G01 X+20.185 Y-26.432 C271.631 +G01 X+19.854 Y-26.433 C268.68 +G01 X+19.523 Y-26.417 C265.73 +G01 X+19.193 Y-26.384 C262.78 +G01 X+18.865 Y-26.334 C259.83 +G01 X+18.541 Y-26.267 C256.88 +G01 X+18.22 Y-26.184 C253.929 +G01 X+17.904 Y-26.084 C250.979 +G01 X+17.594 Y-25.968 C248.028 +G01 X+17.292 Y-25.837 C245.104 +G01 X+16.892 Y-25.638 Z-0.963 B8.213 C241.352 +G01 X+16.692 Y-25.522 C239.065 +G01 X+16.412 Y-25.343 B8.211 C236.106 +G01 X+16.147 Y-25.154 C233.215 +G01 X+15.893 Y-24.954 Z-0.962 B8.21 C230.33 +G01 X+15.643 Y-24.735 C227.377 +G01 X+15.46 Y-24.558 B8.208 C225.103 +G01 Y-24.425 Z-0.949 B8.087 C224.253 +G01 X+15.251 Y-24.201 B8.088 C221.483 +G01 X+15.041 Y-23.951 C218.533 +G01 X+14.845 Y-23.69 C215.584 +G01 X+14.661 Y-23.42 C212.634 +G01 X+14.492 Y-23.141 C209.684 +G01 X+14.338 Y-22.853 C206.735 +G01 X+14.199 Y-22.558 C203.785 +G01 X+14.075 Y-22.256 C200.836 +G01 X+13.966 Y-21.948 C197.886 +G01 X+13.874 Y-21.634 C194.937 +G01 X+13.798 Y-21.317 C191.99 +G01 X+13.739 Y-20.996 C189.033 +G01 X+13.696 Y-20.672 C186.075 +G01 X+13.669 Y-20.347 C183.118 +G01 X+13.66 Y-20.02 C180.161 +G01 X+13.667 Y-19.694 C177.204 +G01 X+13.691 Y-19.368 C174.252 +G01 X+13.732 Y-19.044 C171.293 +G01 X+13.79 Y-18.723 C168.353 +G01 X+13.864 Y-18.405 C165.403 +G01 X+13.954 Y-18.091 C162.454 +G01 X+14.06 Y-17.783 C159.504 +G01 X+14.182 Y-17.48 C156.555 +G01 X+14.32 Y-17.184 C153.605 +G01 X+14.472 Y-16.895 C150.655 +G01 X+14.639 Y-16.615 C147.706 +G01 X+14.821 Y-16.343 C144.756 +G01 X+15.016 Y-16.081 C141.807 +G01 X+15.224 Y-15.83 C138.857 +G01 X+15.445 Y-15.59 C135.907 +G01 X+15.678 Y-15.361 C132.958 +G01 X+15.923 Y-15.145 C130.008 +G01 X+16.178 Y-14.941 C127.059 +G01 X+16.444 Y-14.751 C124.109 +G01 X+16.719 Y-14.575 C121.159 +G01 X+17.002 Y-14.413 C118.21 +G01 X+17.294 Y-14.266 C115.26 +G01 X+17.592 Y-14.135 C112.311 +G01 X+17.898 Y-14.018 C109.361 +G01 X+18.208 Y-13.918 C106.412 +G01 X+18.525 Y-13.834 C103.449 +G01 X+18.843 Y-13.766 C100.511 +G01 X+19.166 Y-13.715 C97.554 +G01 X+19.49 Y-13.68 C94.597 +G01 X+19.816 Y-13.662 C91.64 +G01 X+20.143 Y-13.661 C88.682 +G01 X+20.469 Y-13.677 C85.727 +G01 X+20.794 Y-13.71 C82.777 +G01 X+21.116 Y-13.759 C79.828 +G01 X+21.436 Y-13.825 C76.878 +G01 X+21.752 Y-13.907 C73.928 +G01 X+22.064 Y-14.005 C70.979 +G01 X+22.369 Y-14.119 C68.029 +G01 X+22.669 Y-14.249 C65.08 +G01 X+22.962 Y-14.394 C62.13 +G01 X+23.246 Y-14.554 C59.181 +G01 X+23.522 Y-14.728 C56.231 +G01 X+23.789 Y-14.917 C53.282 +G01 X+24.046 Y-15.118 C50.332 +G01 X+24.292 Y-15.333 C47.382 +G01 X+24.526 Y-15.56 C44.433 +G01 X+24.749 Y-15.799 C41.483 +G01 X+24.959 Y-16.049 C38.534 +G01 X+25.156 Y-16.31 C35.584 +G01 X+25.339 Y-16.58 C32.634 +G01 X+25.508 Y-16.859 C29.684 +G01 X+25.662 Y-17.147 C26.735 +G01 X+25.801 Y-17.442 C23.785 +G01 X+25.925 Y-17.744 C20.836 +G01 X+26.034 Y-18.052 C17.886 +G01 X+26.126 Y-18.365 C14.937 +G01 X+26.202 Y-18.683 C11.99 +G01 X+26.261 Y-19.004 C9.033 +G01 X+26.304 Y-19.328 C6.075 +G01 X+26.331 Y-19.653 C3.118 +G01 X+26.34 Y-19.979 C0.161 +G01 X+26.333 Y-20.306 C357.204 +G01 X+26.309 Y-20.631 C354.252 +G01 X+26.268 Y-20.956 C351.293 +G01 X+26.21 Y-21.277 C348.353 +G01 X+26.136 Y-21.595 C345.403 +G01 X+26.046 Y-21.909 C342.454 +G01 X+25.94 Y-22.217 C339.504 +G01 X+25.818 Y-22.52 C336.555 +G01 X+25.68 Y-22.816 C333.605 +G01 X+25.528 Y-23.105 C330.655 +G01 X+25.361 Y-23.385 C327.706 +G01 X+25.179 Y-23.657 C324.756 +G01 X+24.984 Y-23.919 C321.807 +G01 X+24.776 Y-24.17 C318.857 +G01 X+24.555 Y-24.41 C315.907 +G01 X+24.322 Y-24.639 C312.958 +G01 X+24.077 Y-24.855 C310.008 +G01 X+23.822 Y-25.059 C307.059 +G01 X+23.556 Y-25.249 C304.109 +G01 X+23.281 Y-25.425 C301.159 +G01 X+22.998 Y-25.587 C298.21 +G01 X+22.706 Y-25.734 C295.26 +G01 X+22.408 Y-25.865 C292.311 +G01 X+22.102 Y-25.981 C289.361 +G01 X+21.792 Y-26.082 C286.412 +G01 X+21.475 Y-26.166 C283.449 +G01 X+21.157 Y-26.234 C280.511 +G01 X+20.834 Y-26.285 C277.554 +G01 X+20.51 Y-26.32 C274.597 +G01 X+20.184 Y-26.337 C271.64 +G01 X+19.857 Y-26.338 C268.682 +G01 X+19.531 Y-26.323 C265.727 +G01 X+19.206 Y-26.29 C262.777 +G01 X+18.884 Y-26.241 C259.828 +G01 X+18.564 Y-26.175 C256.878 +G01 X+18.248 Y-26.093 C253.928 +G01 X+17.936 Y-25.995 C250.979 +G01 X+17.63 Y-25.881 C248.029 +G01 X+17.334 Y-25.752 C245.107 +G01 X+17.13 Y-25.65 B8.085 C243.04 +G01 X+16.925 Y-25.548 B8.092 C240.975 +G01 X+16.742 Y-25.441 B8.091 C239.07 +G01 X+16.466 Y-25.265 B8.089 C236.108 +G01 X+16.205 Y-25.079 C233.217 +G01 X+15.955 Y-24.882 B8.088 C230.335 +G01 X+15.708 Y-24.667 C227.382 +G01 X+15.527 Y-24.491 B8.086 C225.086 +G01 Y-24.357 Z-0.935 B7.965 C224.235 +G01 X+15.323 Y-24.139 Z-0.936 B7.966 C221.49 +G01 X+15.116 Y-23.893 C218.541 +G01 X+14.922 Y-23.636 C215.592 +G01 X+14.742 Y-23.37 C212.643 +G01 X+14.575 Y-23.095 C209.694 +G01 X+14.423 Y-22.812 C206.745 +G01 X+14.286 Y-22.521 C203.796 +G01 X+14.164 Y-22.223 C200.847 +G01 X+14.057 Y-21.92 C197.899 +G01 X+13.966 Y-21.611 C194.95 +G01 X+13.891 Y-21.298 C191.997 +G01 X+13.832 Y-20.983 C189.05 +G01 X+13.79 Y-20.664 C186.093 +G01 X+13.764 Y-20.343 C183.137 +G01 X+13.755 Y-20.022 C180.18 +G01 X+13.762 Y-19.7 C177.224 +G01 X+13.785 Y-19.379 C174.268 +G01 X+13.829 Y-19.043 Z-0.935 C171.142 +G01 X+13.885 Y-18.731 C168.239 +G01 X+13.957 Y-18.423 C165.335 +G01 X+14.044 Y-18.121 Z-0.936 C162.453 +G01 X+14.148 Y-17.817 C159.504 +G01 X+14.269 Y-17.519 C156.555 +G01 X+14.404 Y-17.227 C153.607 +G01 X+14.554 Y-16.943 C150.658 +G01 X+14.719 Y-16.666 C147.709 +G01 X+14.897 Y-16.399 C144.76 +G01 X+15.089 Y-16.141 C141.811 +G01 X+15.295 Y-15.893 C138.862 +G01 X+15.512 Y-15.657 C135.913 +G01 X+15.742 Y-15.431 C132.964 +G01 X+15.983 Y-15.218 C130.015 +G01 X+16.234 Y-15.018 C127.067 +G01 X+16.495 Y-14.83 C124.117 +G01 X+16.766 Y-14.657 C121.169 +G01 X+17.046 Y-14.497 C118.22 +G01 X+17.333 Y-14.353 C115.271 +G01 X+17.627 Y-14.223 C112.322 +G01 X+17.928 Y-14.108 C109.373 +G01 X+18.234 Y-14.01 C106.424 +G01 X+18.544 Y-13.927 C103.475 +G01 X+18.859 Y-13.86 C100.528 +G01 X+19.177 Y-13.809 C97.571 +G01 X+19.496 Y-13.775 C94.615 +G01 X+19.817 Y-13.757 C91.659 +G01 X+20.139 Y-13.756 C88.702 +G01 X+20.46 Y-13.771 C85.746 +G01 X+20.801 Y-13.807 Z-0.935 C82.593 +G01 X+21.113 Y-13.855 C79.69 +G01 X+21.423 Y-13.919 C76.787 +G01 X+21.725 Y-13.997 Z-0.936 C73.927 +G01 X+22.031 Y-14.094 C70.979 +G01 X+22.333 Y-14.206 C68.03 +G01 X+22.628 Y-14.334 C65.081 +G01 X+22.916 Y-14.477 C62.132 +G01 X+23.196 Y-14.634 C59.183 +G01 X+23.468 Y-14.806 C56.234 +G01 X+23.731 Y-14.992 C53.285 +G01 X+23.984 Y-15.19 C50.336 +G01 X+24.226 Y-15.402 C47.388 +G01 X+24.457 Y-15.625 C44.439 +G01 X+24.677 Y-15.861 C41.49 +G01 X+24.884 Y-16.107 C38.541 +G01 X+25.078 Y-16.363 C35.592 +G01 X+25.258 Y-16.63 C32.643 +G01 X+25.425 Y-16.905 C29.694 +G01 X+25.577 Y-17.188 C26.745 +G01 X+25.714 Y-17.479 C23.796 +G01 X+25.836 Y-17.776 C20.847 +G01 X+25.943 Y-18.08 C17.899 +G01 X+26.034 Y-18.388 C14.95 +G01 X+26.109 Y-18.702 C11.997 +G01 X+26.168 Y-19.017 C9.05 +G01 X+26.21 Y-19.336 C6.093 +G01 X+26.236 Y-19.657 C3.137 +G01 X+26.245 Y-19.978 C0.18 +G01 X+26.238 Y-20.3 C357.224 +G01 X+26.215 Y-20.62 C354.268 +G01 X+26.171 Y-20.957 Z-0.935 C351.142 +G01 X+26.115 Y-21.269 C348.239 +G01 X+26.043 Y-21.577 C345.335 +G01 X+25.956 Y-21.879 Z-0.936 C342.453 +G01 X+25.852 Y-22.183 C339.504 +G01 X+25.731 Y-22.481 C336.555 +G01 X+25.596 Y-22.773 C333.607 +G01 X+25.446 Y-23.057 C330.658 +G01 X+25.281 Y-23.333 C327.709 +G01 X+25.103 Y-23.601 C324.76 +G01 X+24.911 Y-23.859 C321.811 +G01 X+24.705 Y-24.106 C318.862 +G01 X+24.488 Y-24.343 C315.913 +G01 X+24.258 Y-24.569 C312.964 +G01 X+24.017 Y-24.782 C310.015 +G01 X+23.766 Y-24.982 C307.067 +G01 X+23.505 Y-25.169 C304.117 +G01 X+23.234 Y-25.343 C301.169 +G01 X+22.954 Y-25.502 C298.22 +G01 X+22.667 Y-25.647 C295.271 +G01 X+22.373 Y-25.777 C292.322 +G01 X+22.072 Y-25.891 C289.373 +G01 X+21.766 Y-25.99 C286.424 +G01 X+21.456 Y-26.073 C283.475 +G01 X+21.141 Y-26.14 C280.528 +G01 X+20.823 Y-26.191 C277.571 +G01 X+20.504 Y-26.225 C274.615 +G01 X+20.183 Y-26.243 C271.659 +G01 X+19.861 Y-26.244 C268.702 +G01 X+19.54 Y-26.228 C265.746 +G01 X+19.199 Y-26.193 Z-0.935 C262.593 +G01 X+18.887 Y-26.145 C259.69 +G01 X+18.577 Y-26.081 C256.787 +G01 X+18.275 Y-26.003 Z-0.936 C253.927 +G01 X+17.969 Y-25.906 C250.979 +G01 X+17.667 Y-25.793 C248.03 +G01 X+17.375 Y-25.667 Z-0.935 C245.109 +G01 X+16.984 Y-25.472 Z-0.936 B7.969 C241.352 +G01 X+16.792 Y-25.361 C239.075 +G01 X+16.519 Y-25.187 B7.968 C236.11 +G01 X+16.262 Y-25.004 B7.967 C233.218 +G01 X+16.016 Y-24.81 B7.966 C230.336 +G01 X+15.774 Y-24.598 C227.388 +G01 X+15.594 Y-24.424 Z-0.935 B7.964 C225.09 +G01 Y-24.29 Z-0.922 B7.843 C224.216 +G01 X+15.395 Y-24.078 B7.844 C221.497 +G01 X+15.191 Y-23.835 C218.548 +G01 X+15 Y-23.582 C215.6 +G01 X+14.823 Y-23.32 C212.652 +G01 X+14.659 Y-23.049 C209.703 +G01 X+14.509 Y-22.77 C206.755 +G01 X+14.373 Y-22.484 C203.807 +G01 X+14.253 Y-22.191 C200.859 +G01 X+14.148 Y-21.892 C197.911 +G01 X+14.058 Y-21.589 C194.963 +G01 X+13.984 Y-21.278 C191.997 +G01 X+13.926 Y-20.969 C189.066 +G01 X+13.884 Y-20.655 C186.11 +G01 X+13.859 Y-20.34 C183.155 +G01 X+13.849 Y-20.023 C180.199 +G01 X+13.856 Y-19.706 C177.244 +G01 X+13.88 Y-19.39 C174.288 +G01 X+13.919 Y-19.076 C171.332 +G01 X+13.975 Y-18.764 C168.377 +G01 X+14.046 Y-18.456 C165.421 +G01 X+14.14 Y-18.133 C162.281 +G01 X+14.242 Y-17.838 C159.378 +G01 X+14.359 Y-17.55 C156.475 +G01 X+14.488 Y-17.271 C153.608 +G01 X+14.636 Y-16.99 C150.659 +G01 X+14.798 Y-16.718 C147.712 +G01 X+14.974 Y-16.455 C144.763 +G01 X+15.163 Y-16.201 B7.845 C141.815 +G01 X+15.365 Y-15.957 B7.844 C138.867 +G01 X+15.579 Y-15.724 B7.845 C135.919 +G01 X+15.805 Y-15.502 B7.844 C132.97 +G01 X+16.042 Y-15.292 B7.845 C130.022 +G01 X+16.29 Y-15.094 B7.844 C127.074 +G01 X+16.547 Y-14.91 C124.126 +G01 X+16.814 Y-14.739 C121.178 +G01 X+17.089 Y-14.582 C118.23 +G01 X+17.372 Y-14.439 C115.281 +G01 X+17.662 Y-14.311 C112.333 +G01 X+17.958 Y-14.198 C109.385 +G01 X+18.259 Y-14.101 C106.437 +G01 X+18.565 Y-14.019 C103.488 +G01 X+18.875 Y-13.953 C100.544 +G01 X+19.187 Y-13.903 C97.588 +G01 X+19.502 Y-13.869 C94.633 +G01 X+19.819 Y-13.852 C91.677 +G01 X+20.135 Y-13.851 C88.722 +G01 X+20.452 Y-13.866 C85.766 +G01 X+20.767 Y-13.897 C82.81 +G01 X+21.08 Y-13.945 C79.855 +G01 X+21.39 Y-14.008 C76.899 +G01 X+21.697 Y-14.088 C73.944 +G01 X+22.015 Y-14.189 C70.829 +G01 X+22.307 Y-14.299 C67.926 +G01 X+22.592 Y-14.423 C65.023 +G01 X+22.872 Y-14.561 C62.12 +G01 X+23.147 Y-14.715 C59.186 +G01 X+23.414 Y-14.884 C56.237 +G01 X+23.673 Y-15.067 C53.289 +G01 X+23.922 Y-15.262 B7.845 C50.341 +G01 X+24.161 Y-15.47 C47.393 +G01 X+24.389 Y-15.691 C44.445 +G01 X+24.605 Y-15.922 B7.844 C41.496 +G01 X+24.809 Y-16.165 C38.548 +G01 X+25 Y-16.417 C35.6 +G01 X+25.177 Y-16.68 C32.652 +G01 X+25.341 Y-16.95 C29.703 +G01 X+25.491 Y-17.229 C26.755 +G01 X+25.627 Y-17.516 C23.807 +G01 X+25.747 Y-17.809 C20.859 +G01 X+25.852 Y-18.108 C17.911 +G01 X+25.942 Y-18.411 C14.963 +G01 X+26.016 Y-18.721 C11.997 +G01 X+26.074 Y-19.031 C9.066 +G01 X+26.116 Y-19.345 C6.11 +G01 X+26.141 Y-19.66 C3.155 +G01 X+26.151 Y-19.977 C0.199 +G01 X+26.144 Y-20.294 C357.244 +G01 X+26.12 Y-20.609 C354.288 +G01 X+26.081 Y-20.924 C351.332 +G01 X+26.025 Y-21.236 C348.377 +G01 X+25.954 Y-21.544 C345.421 +G01 X+25.86 Y-21.867 C342.281 +G01 X+25.758 Y-22.161 C339.378 +G01 X+25.641 Y-22.45 C336.475 +G01 X+25.512 Y-22.729 C333.608 +G01 X+25.364 Y-23.009 C330.659 +G01 X+25.202 Y-23.282 C327.712 +G01 X+25.026 Y-23.545 C324.763 +G01 X+24.837 Y-23.799 B7.845 C321.815 +G01 X+24.635 Y-24.043 B7.844 C318.867 +G01 X+24.421 Y-24.276 B7.845 C315.919 +G01 X+24.195 Y-24.498 B7.844 C312.97 +G01 X+23.958 Y-24.708 B7.845 C310.022 +G01 X+23.71 Y-24.906 B7.844 C307.074 +G01 X+23.453 Y-25.09 C304.126 +G01 X+23.186 Y-25.261 C301.178 +G01 X+22.911 Y-25.418 C298.23 +G01 X+22.628 Y-25.561 C295.281 +G01 X+22.338 Y-25.689 C292.333 +G01 X+22.042 Y-25.802 C289.385 +G01 X+21.741 Y-25.899 C286.437 +G01 X+21.435 Y-25.981 C283.488 +G01 X+21.125 Y-26.047 C280.544 +G01 X+20.813 Y-26.097 C277.588 +G01 X+20.498 Y-26.13 C274.633 +G01 X+20.181 Y-26.148 C271.677 +G01 X+19.865 Y-26.149 C268.722 +G01 X+19.548 Y-26.134 C265.766 +G01 X+19.233 Y-26.103 C262.81 +G01 X+18.92 Y-26.055 C259.855 +G01 X+18.61 Y-25.991 C256.899 +G01 X+18.303 Y-25.912 C253.944 +G01 X+17.985 Y-25.811 C250.829 +G01 X+17.693 Y-25.701 C247.926 +G01 X+17.408 Y-25.577 C245.023 +G01 X+17.029 Y-25.389 Z-0.923 B7.848 C241.352 +G01 X+16.842 Y-25.28 B7.847 C239.08 +G01 X+16.573 Y-25.109 Z-0.922 B7.846 C236.112 +G01 X+16.32 Y-24.929 B7.845 C233.219 +G01 X+16.077 Y-24.737 C230.337 +G01 X+15.839 Y-24.529 B7.844 C227.393 +G01 X+15.661 Y-24.357 B7.842 C225.094 +G01 X+15.66 Y-24.223 Z-0.909 B7.722 C224.198 +G01 X+15.467 Y-24.016 B7.723 C221.503 +G01 X+15.267 Y-23.777 C218.555 +G01 X+15.078 Y-23.528 C215.608 +G01 X+14.903 Y-23.27 C212.66 +G01 X+14.742 Y-23.004 B7.722 C209.713 +G01 X+14.594 Y-22.729 C206.765 +G01 X+14.461 Y-22.447 C203.818 +G01 X+14.342 Y-22.159 C200.87 +G01 X+14.238 Y-21.865 C197.923 +G01 X+14.15 Y-21.566 C194.975 +G01 X+14.077 Y-21.262 C192.028 +G01 X+14.02 Y-20.956 C189.082 +G01 X+13.979 Y-20.647 C186.127 +G01 X+13.954 Y-20.336 C183.173 +G01 X+13.944 Y-20.024 C180.218 +G01 X+13.951 Y-19.712 C177.263 +G01 X+13.974 Y-19.401 C174.309 +G01 X+14.013 Y-19.092 C171.354 +G01 X+14.067 Y-18.785 B7.723 C168.399 +G01 X+14.138 Y-18.481 C165.444 +G01 X+14.224 Y-18.181 C162.489 +G01 X+14.325 Y-17.886 C159.534 +G01 X+14.441 Y-17.597 C156.58 +G01 X+14.582 Y-17.295 B7.722 C153.42 +G01 X+14.726 Y-17.024 C150.517 +G01 X+14.884 Y-16.761 C147.614 +G01 X+15.05 Y-16.511 B7.723 C144.767 +G01 X+15.237 Y-16.26 C141.808 +G01 X+15.435 Y-16.02 C138.871 +G01 X+15.646 Y-15.791 C135.924 +G01 X+15.869 Y-15.572 C132.976 +G01 X+16.102 Y-15.365 C130.029 +G01 X+16.346 Y-15.171 C127.081 +G01 X+16.599 Y-14.989 C124.134 +G01 X+16.862 Y-14.821 C121.186 +G01 X+17.133 Y-14.666 C118.239 +G01 X+17.411 Y-14.525 B7.722 C115.291 +G01 X+17.696 Y-14.399 C112.344 +G01 X+17.988 Y-14.288 C109.397 +G01 X+18.284 Y-14.192 C106.449 +G01 X+18.586 Y-14.112 C103.502 +G01 X+18.892 Y-14.046 C100.546 +G01 X+19.198 Y-13.997 C97.605 +G01 X+19.509 Y-13.964 C94.65 +G01 X+19.82 Y-13.947 C91.695 +G01 X+20.132 Y-13.946 C88.74 +G01 X+20.443 Y-13.96 C85.786 +G01 X+20.754 Y-13.991 C82.831 +G01 X+21.062 Y-14.038 C79.876 +G01 X+21.367 Y-14.101 B7.723 C76.922 +G01 X+21.669 Y-14.179 C73.967 +G01 X+21.967 Y-14.272 C71.012 +G01 X+22.259 Y-14.381 C68.057 +G01 X+22.545 Y-14.505 C65.102 +G01 X+22.841 Y-14.653 B7.722 C61.968 +G01 X+23.109 Y-14.803 C59.065 +G01 X+23.368 Y-14.967 C56.162 +G01 X+23.615 Y-15.142 B7.723 C53.293 +G01 X+23.861 Y-15.334 C50.345 +G01 X+24.096 Y-15.539 C47.398 +G01 X+24.32 Y-15.756 C44.45 +G01 X+24.533 Y-15.984 C41.503 +G01 X+24.733 Y-16.223 C38.555 +G01 X+24.922 Y-16.471 C35.608 +G01 X+25.097 Y-16.729 C32.66 +G01 X+25.258 Y-16.996 C29.713 +G01 X+25.406 Y-17.271 B7.722 C26.765 +G01 X+25.539 Y-17.553 C23.818 +G01 X+25.658 Y-17.841 C20.87 +G01 X+25.762 Y-18.135 C17.923 +G01 X+25.85 Y-18.434 C14.975 +G01 X+25.923 Y-18.738 C12.028 +G01 X+25.98 Y-19.044 C9.082 +G01 X+26.021 Y-19.353 C6.127 +G01 X+26.047 Y-19.664 C3.173 +G01 X+26.056 Y-19.976 C0.218 +G01 X+26.049 Y-20.288 C357.263 +G01 X+26.026 Y-20.599 C354.309 +G01 X+25.987 Y-20.908 C351.354 +G01 X+25.933 Y-21.215 B7.723 C348.399 +G01 X+25.862 Y-21.519 C345.444 +G01 X+25.776 Y-21.819 C342.489 +G01 X+25.675 Y-22.113 C339.534 +G01 X+25.559 Y-22.403 C336.58 +G01 X+25.418 Y-22.705 B7.722 C333.42 +G01 X+25.274 Y-22.976 C330.517 +G01 X+25.116 Y-23.239 C327.614 +G01 X+24.95 Y-23.489 B7.723 C324.767 +G01 X+24.763 Y-23.74 C321.808 +G01 X+24.565 Y-23.98 C318.871 +G01 X+24.354 Y-24.209 C315.924 +G01 X+24.131 Y-24.428 C312.976 +G01 X+23.898 Y-24.635 C310.029 +G01 X+23.654 Y-24.829 C307.081 +G01 X+23.401 Y-25.011 C304.134 +G01 X+23.138 Y-25.179 C301.186 +G01 X+22.867 Y-25.334 C298.239 +G01 X+22.589 Y-25.474 B7.722 C295.291 +G01 X+22.304 Y-25.6 C292.344 +G01 X+22.012 Y-25.712 C289.397 +G01 X+21.716 Y-25.808 C286.449 +G01 X+21.414 Y-25.888 C283.501 +G01 X+21.108 Y-25.953 C280.546 +G01 X+20.802 Y-26.002 C277.605 +G01 X+20.491 Y-26.036 C274.65 +G01 X+20.18 Y-26.053 C271.695 +G01 X+19.868 Y-26.054 C268.74 +G01 X+19.557 Y-26.04 C265.786 +G01 X+19.246 Y-26.009 C262.831 +G01 X+18.938 Y-25.962 C259.876 +G01 X+18.633 Y-25.899 B7.723 C256.922 +G01 X+18.331 Y-25.821 C253.967 +G01 X+18.033 Y-25.727 C251.012 +G01 X+17.741 Y-25.619 C248.057 +G01 X+17.458 Y-25.496 C245.138 +G01 X+17.074 Y-25.305 Z-0.91 B7.726 C241.352 +G01 X+16.891 Y-25.199 B7.725 C239.069 +G01 X+16.627 Y-25.031 Z-0.909 B7.724 C236.114 +G01 X+16.378 Y-24.854 B7.723 C233.22 +G01 X+16.138 Y-24.665 C230.337 +G01 X+15.904 Y-24.461 C227.398 +G01 X+15.728 Y-24.29 B7.721 C225.099 +G01 X+15.727 Y-24.156 Z-0.896 B7.6 C224.18 +G01 X+15.538 Y-23.953 Z-0.897 B7.601 C221.496 +G01 X+15.342 Y-23.719 C218.562 +G01 X+15.156 Y-23.474 C215.615 +G01 X+14.984 Y-23.221 C212.669 +G01 X+14.825 Y-22.958 C209.722 +G01 X+14.679 Y-22.688 C206.775 +G01 X+14.548 Y-22.41 C203.828 +G01 X+14.431 Y-22.126 C200.881 +G01 X+14.329 Y-21.837 B7.6 C197.935 +G01 X+14.242 Y-21.542 C194.987 +G01 X+14.17 Y-21.244 C192.041 +G01 X+14.114 Y-20.942 C189.094 +G01 X+14.073 Y-20.638 C186.144 +G01 X+14.048 Y-20.332 C183.19 +G01 X+14.039 Y-20.025 C180.236 +G01 X+14.046 Y-19.718 B7.601 C177.282 +G01 X+14.068 Y-19.412 C174.329 +G01 X+14.106 Y-19.108 C171.374 +G01 X+14.16 Y-18.805 C168.42 +G01 X+14.229 Y-18.506 C165.466 +G01 X+14.314 Y-18.211 C162.513 +G01 X+14.413 Y-17.921 C159.559 +G01 X+14.528 Y-17.636 C156.605 +G01 X+14.657 Y-17.357 C153.651 +G01 X+14.8 Y-17.086 C150.697 +G01 X+14.957 Y-16.822 C147.743 +G01 X+15.127 Y-16.567 C144.789 +G01 X+15.322 Y-16.306 B7.6 C141.656 +G01 X+15.515 Y-16.074 C138.753 +G01 X+15.713 Y-15.858 B7.601 C135.929 +G01 X+15.932 Y-15.643 C132.982 +G01 X+16.162 Y-15.439 C130.035 +G01 X+16.402 Y-15.247 C127.089 +G01 X+16.651 Y-15.068 C124.142 +G01 X+16.91 Y-14.903 C121.195 +G01 X+17.176 Y-14.75 C118.248 +G01 X+17.45 Y-14.612 C115.301 +G01 X+17.731 Y-14.488 C112.355 +G01 X+18.018 Y-14.378 C109.408 +G01 X+18.31 Y-14.284 B7.6 C106.461 +G01 X+18.606 Y-14.204 C103.514 +G01 X+18.906 Y-14.14 C100.567 +G01 X+19.21 Y-14.092 C97.621 +G01 X+19.515 Y-14.059 C94.667 +G01 X+19.821 Y-14.042 C91.713 +G01 X+20.128 Y-14.04 C88.759 +G01 X+20.435 Y-14.055 B7.601 C85.805 +G01 X+20.74 Y-14.085 C82.851 +G01 X+21.044 Y-14.131 C79.898 +G01 X+21.345 Y-14.193 C76.944 +G01 X+21.642 Y-14.269 C73.989 +G01 X+21.934 Y-14.362 C71.036 +G01 X+22.222 Y-14.469 C68.082 +G01 X+22.504 Y-14.59 C65.128 +G01 X+22.779 Y-14.726 C62.174 +G01 X+23.047 Y-14.877 C59.22 +G01 X+23.307 Y-15.04 C56.266 +G01 X+23.574 Y-15.23 Z-0.896 B7.6 C53.108 +G01 X+23.811 Y-15.417 Z-0.897 C50.205 +G01 X+24.039 Y-15.616 C47.301 +G01 X+24.251 Y-15.821 B7.601 C44.456 +G01 X+24.462 Y-16.047 C41.496 +G01 X+24.658 Y-16.281 C38.562 +G01 X+24.844 Y-16.525 C35.615 +G01 X+25.016 Y-16.779 C32.669 +G01 X+25.175 Y-17.042 C29.722 +G01 X+25.321 Y-17.312 C26.775 +G01 X+25.452 Y-17.59 C23.828 +G01 X+25.569 Y-17.873 C20.881 +G01 X+25.671 Y-18.163 B7.6 C17.935 +G01 X+25.758 Y-18.457 C14.987 +G01 X+25.83 Y-18.756 C12.041 +G01 X+25.886 Y-19.058 C9.094 +G01 X+25.927 Y-19.362 C6.144 +G01 X+25.952 Y-19.668 C3.19 +G01 X+25.961 Y-19.975 C0.236 +G01 X+25.954 Y-20.281 B7.601 C357.282 +G01 X+25.932 Y-20.588 C354.329 +G01 X+25.894 Y-20.892 C351.374 +G01 X+25.84 Y-21.194 C348.42 +G01 X+25.771 Y-21.494 C345.466 +G01 X+25.686 Y-21.789 C342.513 +G01 X+25.587 Y-22.079 C339.559 +G01 X+25.472 Y-22.364 C336.605 +G01 X+25.343 Y-22.642 C333.651 +G01 X+25.2 Y-22.914 C330.697 +G01 X+25.043 Y-23.178 C327.743 +G01 X+24.873 Y-23.433 C324.789 +G01 X+24.678 Y-23.694 B7.6 C321.656 +G01 X+24.485 Y-23.926 C318.753 +G01 X+24.287 Y-24.142 B7.601 C315.929 +G01 X+24.068 Y-24.357 C312.982 +G01 X+23.838 Y-24.561 C310.035 +G01 X+23.598 Y-24.752 C307.089 +G01 X+23.349 Y-24.931 C304.142 +G01 X+23.09 Y-25.097 C301.195 +G01 X+22.824 Y-25.25 C298.248 +G01 X+22.55 Y-25.388 C295.301 +G01 X+22.269 Y-25.512 C292.355 +G01 X+21.982 Y-25.622 C289.408 +G01 X+21.69 Y-25.716 B7.6 C286.461 +G01 X+21.394 Y-25.796 C283.514 +G01 X+21.094 Y-25.86 C280.567 +G01 X+20.79 Y-25.908 C277.621 +G01 X+20.485 Y-25.941 C274.667 +G01 X+20.179 Y-25.958 C271.713 +G01 X+19.872 Y-25.96 C268.759 +G01 X+19.565 Y-25.945 B7.601 C265.805 +G01 X+19.26 Y-25.915 C262.851 +G01 X+18.956 Y-25.869 C259.897 +G01 X+18.656 Y-25.807 C256.943 +G01 X+18.358 Y-25.73 C253.989 +G01 X+18.066 Y-25.638 C251.036 +G01 X+17.778 Y-25.531 C248.081 +G01 X+17.499 Y-25.411 C245.164 +G01 X+17.119 Y-25.222 B7.604 C241.352 +G01 X+16.926 Y-25.109 B7.603 C238.918 +G01 X+16.671 Y-24.946 B7.602 C236.013 +G01 X+16.425 Y-24.77 B7.601 C233.109 +G01 X+16.188 Y-24.583 B7.6 C230.205 +G01 X+15.961 Y-24.384 C227.301 +G01 X+15.795 Y-24.223 Z-0.896 B7.599 C225.103 +G01 X+15.794 Y-24.088 Z-0.884 B7.478 C224.161 +G01 X+15.611 Y-23.892 B7.479 C221.527 +G01 X+15.417 Y-23.661 C218.574 +G01 X+15.234 Y-23.42 C215.623 +G01 X+15.065 Y-23.171 C212.677 +G01 X+14.908 Y-22.912 C209.73 +G01 X+14.765 Y-22.646 C206.784 +G01 X+14.635 Y-22.373 C203.838 +G01 X+14.513 Y-22.074 B7.478 C200.707 +G01 X+14.42 Y-21.809 B7.479 C197.946 +G01 X+14.334 Y-21.519 C195. +G01 X+14.263 Y-21.226 C192.054 +G01 X+14.208 Y-20.927 B7.478 C189.094 +G01 X+14.168 Y-20.629 B7.479 C186.161 +G01 X+14.143 Y-20.328 C183.208 +G01 X+14.134 Y-20.026 C180.254 +G01 X+14.14 Y-19.724 C177.301 +G01 X+14.162 Y-19.423 C174.348 +G01 X+14.2 Y-19.123 C171.395 +G01 X+14.253 Y-18.826 C168.442 +G01 X+14.321 Y-18.532 C165.489 +G01 X+14.404 Y-18.241 C162.536 +G01 X+14.502 Y-17.955 C159.582 +G01 X+14.614 Y-17.675 C156.629 +G01 X+14.741 Y-17.401 C153.676 +G01 X+14.882 Y-17.134 C150.723 +G01 X+15.036 Y-16.874 C147.77 +G01 X+15.204 Y-16.623 C144.817 +G01 X+15.384 Y-16.38 C141.863 +G01 X+15.576 Y-16.147 C138.91 +G01 X+15.781 Y-15.925 C135.957 +G01 X+16.012 Y-15.698 B7.478 C132.795 +G01 X+16.222 Y-15.512 B7.479 C130.051 +G01 X+16.458 Y-15.324 C127.098 +G01 X+16.703 Y-15.148 C124.15 +G01 X+16.958 Y-14.985 C121.204 +G01 X+17.22 Y-14.835 C118.257 +G01 X+17.489 Y-14.698 C115.311 +G01 X+17.766 Y-14.576 C112.365 +G01 X+18.066 Y-14.462 B7.478 C109.256 +G01 X+18.335 Y-14.375 B7.479 C106.473 +G01 X+18.627 Y-14.297 C103.527 +G01 X+18.922 Y-14.234 C100.581 +G01 X+19.221 Y-14.186 C97.638 +G01 X+19.521 Y-14.153 C94.684 +G01 X+19.823 Y-14.137 C91.731 +G01 X+20.125 Y-14.135 C88.778 +G01 X+20.426 Y-14.149 C85.825 +G01 X+20.727 Y-14.179 C82.872 +G01 X+21.026 Y-14.224 C79.918 +G01 X+21.322 Y-14.285 C76.965 +G01 X+21.614 Y-14.36 C74.012 +G01 X+21.902 Y-14.451 C71.059 +G01 X+22.185 Y-14.556 C68.106 +G01 X+22.463 Y-14.676 C65.153 +G01 X+22.734 Y-14.81 C62.199 +G01 X+22.997 Y-14.957 C59.246 +G01 X+23.253 Y-15.118 C56.293 +G01 X+23.5 Y-15.292 C53.34 +G01 X+23.737 Y-15.479 C50.387 +G01 X+23.965 Y-15.677 C47.434 +G01 X+24.183 Y-15.887 C44.481 +G01 X+24.389 Y-16.108 C41.528 +G01 X+24.583 Y-16.339 C38.574 +G01 X+24.766 Y-16.579 C35.623 +G01 X+24.935 Y-16.829 C32.677 +G01 X+25.092 Y-17.088 C29.73 +G01 X+25.235 Y-17.354 C26.784 +G01 X+25.365 Y-17.627 C23.838 +G01 X+25.487 Y-17.926 B7.478 C20.707 +G01 X+25.58 Y-18.191 B7.479 C17.946 +G01 X+25.666 Y-18.48 C15. +G01 X+25.737 Y-18.774 C12.054 +G01 X+25.792 Y-19.073 B7.478 C9.094 +G01 X+25.832 Y-19.37 B7.479 C6.161 +G01 X+25.857 Y-19.672 C3.208 +G01 X+25.866 Y-19.973 C0.254 +G01 X+25.86 Y-20.275 C357.301 +G01 X+25.838 Y-20.577 C354.348 +G01 X+25.8 Y-20.877 C351.395 +G01 X+25.747 Y-21.174 C348.442 +G01 X+25.679 Y-21.468 C345.489 +G01 X+25.596 Y-21.759 C342.536 +G01 X+25.498 Y-22.044 C339.582 +G01 X+25.386 Y-22.325 C336.629 +G01 X+25.259 Y-22.599 C333.676 +G01 X+25.118 Y-22.866 C330.723 +G01 X+24.964 Y-23.126 C327.77 +G01 X+24.796 Y-23.377 C324.817 +G01 X+24.616 Y-23.62 C321.863 +G01 X+24.424 Y-23.853 C318.91 +G01 X+24.219 Y-24.075 C315.957 +G01 X+23.988 Y-24.301 B7.478 C312.795 +G01 X+23.778 Y-24.487 B7.479 C310.051 +G01 X+23.542 Y-24.676 C307.098 +G01 X+23.297 Y-24.852 C304.15 +G01 X+23.042 Y-25.015 C301.204 +G01 X+22.78 Y-25.165 C298.257 +G01 X+22.511 Y-25.302 C295.311 +G01 X+22.234 Y-25.424 C292.365 +G01 X+21.934 Y-25.537 B7.478 C289.256 +G01 X+21.665 Y-25.625 B7.479 C286.473 +G01 X+21.373 Y-25.703 C283.527 +G01 X+21.078 Y-25.766 C280.581 +G01 X+20.779 Y-25.814 C277.638 +G01 X+20.479 Y-25.846 C274.684 +G01 X+20.178 Y-25.863 C271.731 +G01 X+19.875 Y-25.865 C268.778 +G01 X+19.574 Y-25.851 C265.825 +G01 X+19.273 Y-25.821 C262.872 +G01 X+18.974 Y-25.776 C259.918 +G01 X+18.678 Y-25.715 C256.965 +G01 X+18.386 Y-25.64 C254.012 +G01 X+18.098 Y-25.549 C251.059 +G01 X+17.815 Y-25.444 C248.105 +G01 X+17.541 Y-25.326 C245.191 +G01 X+17.164 Y-25.138 B7.482 C241.352 +G01 X+16.992 Y-25.039 C239.132 +G01 X+16.735 Y-24.874 B7.48 C236.144 +G01 X+16.493 Y-24.703 C233.249 +G01 X+16.261 Y-24.52 B7.479 C230.368 +G01 X+16.035 Y-24.323 C227.434 +G01 X+15.862 Y-24.156 B7.477 C225.108 +G01 X+15.861 Y-24.021 Z-0.872 B7.356 C224.143 +G01 X+15.683 Y-23.83 B7.357 C221.559 +G01 X+15.492 Y-23.603 C218.606 +G01 X+15.312 Y-23.366 C215.654 +G01 X+15.145 Y-23.121 C212.702 +G01 X+14.991 Y-22.866 C209.749 +G01 X+14.85 Y-22.605 C206.797 +G01 X+14.723 Y-22.336 C203.848 +G01 X+14.61 Y-22.062 C200.903 +G01 X+14.511 Y-21.781 C197.957 +G01 X+14.426 Y-21.496 C195.012 +G01 X+14.357 Y-21.207 C192.066 +G01 X+14.302 Y-20.915 C189.121 +G01 X+14.262 Y-20.621 C186.177 +G01 X+14.238 Y-20.325 C183.225 +G01 X+14.229 Y-20.028 C180.272 +G01 X+14.235 Y-19.73 C177.32 +G01 X+14.257 Y-19.434 C174.368 +G01 X+14.293 Y-19.139 C171.415 +G01 X+14.345 Y-18.846 C168.463 +G01 X+14.412 Y-18.557 C165.51 +G01 X+14.494 Y-18.271 C162.558 +G01 X+14.59 Y-17.99 C159.606 +G01 X+14.701 Y-17.714 C156.653 +G01 X+14.825 Y-17.444 C153.701 +G01 X+14.964 Y-17.181 C150.749 +G01 X+15.116 Y-16.926 C147.797 +G01 X+15.28 Y-16.679 C144.844 +G01 X+15.458 Y-16.44 C141.892 +G01 X+15.647 Y-16.211 C138.939 +G01 X+15.848 Y-15.992 C135.987 +G01 X+16.06 Y-15.783 C133.035 +G01 X+16.282 Y-15.586 C130.083 +G01 X+16.514 Y-15.401 C127.13 +G01 X+16.755 Y-15.227 C124.178 +G01 X+17.005 Y-15.066 C121.226 +G01 X+17.263 Y-14.919 C118.273 +G01 X+17.529 Y-14.785 C115.321 +G01 X+17.8 Y-14.664 C112.375 +G01 X+18.079 Y-14.558 C109.419 +G01 X+18.361 Y-14.467 C106.484 +G01 X+18.648 Y-14.389 C103.539 +G01 X+18.938 Y-14.327 C100.594 +G01 X+19.232 Y-14.28 C97.643 +G01 X+19.527 Y-14.248 C94.701 +G01 X+19.824 Y-14.231 C91.749 +G01 X+20.121 Y-14.23 C88.796 +G01 X+20.418 Y-14.244 C85.844 +G01 X+20.714 Y-14.273 C82.892 +G01 X+21.008 Y-14.317 C79.939 +G01 X+21.299 Y-14.377 C76.987 +G01 X+21.586 Y-14.451 C74.034 +G01 X+21.87 Y-14.54 C71.082 +G01 X+22.149 Y-14.644 C68.13 +G01 X+22.421 Y-14.761 C65.177 +G01 X+22.688 Y-14.893 C62.225 +G01 X+22.947 Y-15.038 C59.273 +G01 X+23.199 Y-15.196 C56.321 +G01 X+23.442 Y-15.367 C53.368 +G01 X+23.676 Y-15.551 C50.416 +G01 X+23.9 Y-15.746 C47.463 +G01 X+24.114 Y-15.952 C44.511 +G01 X+24.317 Y-16.169 C41.559 +G01 X+24.508 Y-16.397 C38.606 +G01 X+24.688 Y-16.634 C35.654 +G01 X+24.855 Y-16.879 C32.702 +G01 X+25.009 Y-17.133 C29.749 +G01 X+25.15 Y-17.395 C26.797 +G01 X+25.277 Y-17.664 C23.848 +G01 X+25.39 Y-17.938 C20.903 +G01 X+25.489 Y-18.219 C17.957 +G01 X+25.574 Y-18.504 C15.012 +G01 X+25.643 Y-18.792 C12.066 +G01 X+25.698 Y-19.085 C9.121 +G01 X+25.738 Y-19.379 C6.177 +G01 X+25.762 Y-19.675 C3.225 +G01 X+25.771 Y-19.972 C0.273 +G01 X+25.765 Y-20.269 C357.32 +G01 X+25.743 Y-20.566 C354.368 +G01 X+25.707 Y-20.861 C351.415 +G01 X+25.655 Y-21.153 C348.463 +G01 X+25.588 Y-21.443 C345.51 +G01 X+25.506 Y-21.729 C342.558 +G01 X+25.41 Y-22.01 C339.606 +G01 X+25.299 Y-22.286 C336.653 +G01 X+25.175 Y-22.555 C333.701 +G01 X+25.036 Y-22.818 C330.749 +G01 X+24.884 Y-23.074 C327.797 +G01 X+24.72 Y-23.321 C324.844 +G01 X+24.542 Y-23.56 C321.892 +G01 X+24.353 Y-23.789 C318.939 +G01 X+24.152 Y-24.008 C315.987 +G01 X+23.94 Y-24.217 C313.035 +G01 X+23.718 Y-24.414 C310.083 +G01 X+23.486 Y-24.599 C307.13 +G01 X+23.245 Y-24.773 C304.178 +G01 X+22.995 Y-24.933 C301.226 +G01 X+22.737 Y-25.081 C298.273 +G01 X+22.471 Y-25.215 C295.321 +G01 X+22.2 Y-25.335 C292.375 +G01 X+21.921 Y-25.442 C289.419 +G01 X+21.639 Y-25.533 C286.484 +G01 X+21.352 Y-25.61 C283.539 +G01 X+21.062 Y-25.673 C280.594 +G01 X+20.768 Y-25.72 C277.643 +G01 X+20.473 Y-25.752 C274.701 +G01 X+20.176 Y-25.768 C271.749 +G01 X+19.879 Y-25.77 C268.796 +G01 X+19.582 Y-25.756 C265.844 +G01 X+19.286 Y-25.727 C262.892 +G01 X+18.992 Y-25.682 C259.939 +G01 X+18.701 Y-25.623 C256.987 +G01 X+18.414 Y-25.549 C254.034 +G01 X+18.13 Y-25.46 C251.082 +G01 X+17.851 Y-25.356 C248.129 +G01 X+17.582 Y-25.24 C245.217 +G01 X+17.206 Y-25.053 B7.361 C241.352 +G01 X+17.042 Y-24.958 B7.36 C239.162 +G01 X+16.788 Y-24.796 B7.359 C236.17 +G01 X+16.551 Y-24.627 B7.358 C233.275 +G01 X+16.322 Y-24.448 C230.393 +G01 X+16.1 Y-24.254 B7.357 C227.464 +G01 X+15.928 Y-24.088 Z-0.871 B7.356 C225.112 +G01 Y-23.953 Z-0.859 B7.234 C224.139 +G01 X+15.755 Y-23.769 B7.236 C221.59 +G01 X+15.567 Y-23.545 C218.638 +G01 X+15.39 Y-23.312 C215.687 +G01 X+15.226 Y-23.071 C212.735 +G01 X+15.074 Y-22.821 C209.784 +G01 X+14.936 Y-22.563 C206.832 +G01 X+14.81 Y-22.299 B7.235 C203.88 +G01 X+14.699 Y-22.029 C200.929 +G01 X+14.601 Y-21.753 C197.977 +G01 X+14.518 Y-21.473 C195.026 +G01 X+14.45 Y-21.189 C192.079 +G01 X+14.396 Y-20.902 C189.134 +G01 X+14.357 Y-20.612 C186.191 +G01 X+14.333 Y-20.321 C183.241 +G01 X+14.324 Y-20.029 C180.29 +G01 X+14.33 Y-19.736 C177.339 +G01 X+14.351 Y-19.445 C174.387 +G01 X+14.387 Y-19.155 C171.435 +G01 X+14.438 Y-18.867 B7.236 C168.484 +G01 X+14.504 Y-18.582 C165.532 +G01 X+14.584 Y-18.301 C162.581 +G01 X+14.679 Y-18.024 C159.629 +G01 X+14.787 Y-17.753 C156.678 +G01 X+14.91 Y-17.488 C153.726 +G01 X+15.046 Y-17.229 C150.775 +G01 X+15.195 Y-16.978 C147.823 +G01 X+15.357 Y-16.734 C144.872 +G01 X+15.531 Y-16.5 C141.92 +G01 X+15.718 Y-16.274 C138.968 +G01 X+15.915 Y-16.059 C136.017 +G01 X+16.123 Y-15.854 C133.065 +G01 X+16.342 Y-15.66 C130.114 +G01 X+16.57 Y-15.477 C127.162 +G01 X+16.808 Y-15.307 C124.211 +G01 X+17.053 Y-15.148 C121.259 +G01 X+17.307 Y-15.003 C118.307 +G01 X+17.568 Y-14.871 C115.356 +G01 X+17.835 Y-14.753 B7.235 C112.405 +G01 X+18.108 Y-14.648 C109.453 +G01 X+18.386 Y-14.558 C106.502 +G01 X+18.668 Y-14.482 C103.551 +G01 X+18.954 Y-14.421 C100.606 +G01 X+19.244 Y-14.374 C97.655 +G01 X+19.533 Y-14.343 C94.717 +G01 X+19.825 Y-14.326 C91.766 +G01 X+20.117 Y-14.325 C88.814 +G01 X+20.409 Y-14.338 C85.863 +G01 X+20.7 Y-14.367 C82.911 +G01 X+20.989 Y-14.411 C79.96 +G01 X+21.276 Y-14.469 B7.236 C77.008 +G01 X+21.559 Y-14.542 C74.056 +G01 X+21.838 Y-14.629 C71.105 +G01 X+22.112 Y-14.731 C68.153 +G01 X+22.38 Y-14.847 C65.202 +G01 X+22.642 Y-14.976 C62.25 +G01 X+22.897 Y-15.119 C59.299 +G01 X+23.145 Y-15.275 C56.347 +G01 X+23.384 Y-15.443 C53.396 +G01 X+23.614 Y-15.623 C50.444 +G01 X+23.835 Y-15.815 C47.493 +G01 X+24.045 Y-16.018 C44.541 +G01 X+24.245 Y-16.231 C41.59 +G01 X+24.433 Y-16.455 C38.638 +G01 X+24.61 Y-16.688 C35.687 +G01 X+24.774 Y-16.929 C32.735 +G01 X+24.926 Y-17.179 C29.784 +G01 X+25.064 Y-17.436 C26.832 +G01 X+25.19 Y-17.701 B7.235 C23.88 +G01 X+25.301 Y-17.971 C20.929 +G01 X+25.399 Y-18.246 C17.977 +G01 X+25.482 Y-18.527 C15.026 +G01 X+25.55 Y-18.811 C12.079 +G01 X+25.604 Y-19.098 C9.134 +G01 X+25.643 Y-19.388 C6.191 +G01 X+25.667 Y-19.679 C3.241 +G01 X+25.676 Y-19.971 C0.29 +G01 X+25.67 Y-20.263 C357.339 +G01 X+25.649 Y-20.555 C354.387 +G01 X+25.613 Y-20.845 C351.435 +G01 X+25.562 Y-21.133 B7.236 C348.484 +G01 X+25.496 Y-21.418 C345.532 +G01 X+25.416 Y-21.699 C342.581 +G01 X+25.321 Y-21.975 C339.629 +G01 X+25.213 Y-22.247 C336.678 +G01 X+25.09 Y-22.512 C333.726 +G01 X+24.954 Y-22.771 C330.775 +G01 X+24.805 Y-23.022 C327.823 +G01 X+24.643 Y-23.265 C324.871 +G01 X+24.469 Y-23.5 C321.92 +G01 X+24.282 Y-23.726 C318.968 +G01 X+24.085 Y-23.941 C316.017 +G01 X+23.877 Y-24.146 C313.065 +G01 X+23.658 Y-24.34 C310.114 +G01 X+23.43 Y-24.523 C307.162 +G01 X+23.192 Y-24.693 C304.211 +G01 X+22.947 Y-24.851 C301.259 +G01 X+22.693 Y-24.997 C298.307 +G01 X+22.432 Y-25.129 C295.356 +G01 X+22.165 Y-25.247 B7.235 C292.405 +G01 X+21.892 Y-25.352 C289.453 +G01 X+21.614 Y-25.442 C286.502 +G01 X+21.332 Y-25.518 C283.551 +G01 X+21.046 Y-25.579 C280.606 +G01 X+20.756 Y-25.626 C277.655 +G01 X+20.467 Y-25.657 C274.717 +G01 X+20.175 Y-25.673 C271.766 +G01 X+19.883 Y-25.675 C268.814 +G01 X+19.591 Y-25.661 C265.863 +G01 X+19.3 Y-25.633 C262.911 +G01 X+19.011 Y-25.589 C259.96 +G01 X+18.724 Y-25.531 B7.236 C257.008 +G01 X+18.441 Y-25.458 C254.056 +G01 X+18.162 Y-25.37 C251.105 +G01 X+17.888 Y-25.269 C248.153 +G01 X+17.623 Y-25.155 C245.243 +G01 X+17.253 Y-24.971 Z-0.86 B7.239 C241.352 +G01 X+17.092 Y-24.878 C239.192 +G01 X+16.842 Y-24.718 B7.237 C236.197 +G01 X+16.608 Y-24.552 B7.236 C233.3 +G01 X+16.384 Y-24.375 Z-0.859 C230.417 +G01 X+16.165 Y-24.185 C227.493 +G01 X+15.995 Y-24.021 B7.234 C225.117 +G01 Y-23.886 Z-0.847 B7.116 C224.136 +G01 X+15.827 Y-23.707 B7.117 C221.614 +G01 X+15.642 Y-23.487 C218.663 +G01 X+15.468 Y-23.258 C215.713 +G01 X+15.306 Y-23.021 C212.762 +G01 X+15.157 Y-22.775 C209.811 +G01 X+15.021 Y-22.522 C206.86 +G01 X+14.898 Y-22.262 C203.91 +G01 X+14.788 Y-21.997 C200.959 +G01 X+14.692 Y-21.726 C198.008 +G01 X+14.61 Y-21.45 C195.058 +G01 X+14.543 Y-21.171 C192.106 +G01 X+14.49 Y-20.888 C189.156 +G01 X+14.451 Y-20.602 B7.116 C186.191 +G01 X+14.428 Y-20.317 B7.117 C183.252 +G01 X+14.419 Y-20.03 C180.301 +G01 X+14.424 Y-19.742 C177.35 +G01 X+14.445 Y-19.456 C174.399 +G01 X+14.48 Y-19.17 C171.449 +G01 X+14.531 Y-18.887 C168.498 +G01 X+14.595 Y-18.607 C165.547 +G01 X+14.674 Y-18.331 C162.597 +G01 X+14.767 Y-18.059 C159.646 +G01 X+14.874 Y-17.792 C156.695 +G01 X+14.994 Y-17.531 C153.745 +G01 X+15.128 Y-17.277 C150.794 +G01 X+15.275 Y-17.029 C147.843 +G01 X+15.434 Y-16.79 C144.892 +G01 X+15.605 Y-16.559 C141.942 +G01 X+15.788 Y-16.338 C138.991 +G01 X+15.982 Y-16.126 C136.04 +G01 X+16.187 Y-15.924 C133.089 +G01 X+16.402 Y-15.733 C130.139 +G01 X+16.626 Y-15.554 C127.188 +G01 X+16.86 Y-15.386 C124.237 +G01 X+17.101 Y-15.23 C121.286 +G01 X+17.351 Y-15.087 C118.336 +G01 X+17.607 Y-14.957 C115.385 +G01 X+17.87 Y-14.841 C112.434 +G01 X+18.138 Y-14.738 C109.483 +G01 X+18.412 Y-14.649 C106.533 +G01 X+18.689 Y-14.575 C103.582 +G01 X+18.97 Y-14.514 C100.631 +G01 X+19.254 Y-14.469 C97.68 +G01 X+19.54 Y-14.437 B7.116 C94.732 +G01 X+19.827 Y-14.421 B7.117 C91.776 +G01 X+20.115 Y-14.42 C88.814 +G01 X+20.401 Y-14.433 C85.875 +G01 X+20.687 Y-14.461 C82.924 +G01 X+20.971 Y-14.504 C79.974 +G01 X+21.253 Y-14.561 C77.023 +G01 X+21.531 Y-14.633 C74.072 +G01 X+21.806 Y-14.719 C71.121 +G01 X+22.075 Y-14.819 C68.17 +G01 X+22.339 Y-14.932 C65.22 +G01 X+22.597 Y-15.059 C62.269 +G01 X+22.848 Y-15.2 C59.318 +G01 X+23.091 Y-15.353 C56.368 +G01 X+23.326 Y-15.518 C53.417 +G01 X+23.553 Y-15.695 C50.466 +G01 X+23.769 Y-15.884 C47.516 +G01 X+23.976 Y-16.083 C44.565 +G01 X+24.173 Y-16.293 C41.614 +G01 X+24.358 Y-16.513 C38.663 +G01 X+24.532 Y-16.742 C35.713 +G01 X+24.694 Y-16.979 C32.762 +G01 X+24.843 Y-17.225 C29.811 +G01 X+24.979 Y-17.478 C26.86 +G01 X+25.102 Y-17.738 C23.91 +G01 X+25.212 Y-18.003 C20.959 +G01 X+25.308 Y-18.274 C18.008 +G01 X+25.39 Y-18.55 C15.058 +G01 X+25.457 Y-18.829 C12.107 +G01 X+25.51 Y-19.112 C9.156 +G01 X+25.549 Y-19.398 B7.116 C6.191 +G01 X+25.573 Y-19.683 B7.117 C3.252 +G01 X+25.581 Y-19.97 C0.301 +G01 X+25.576 Y-20.258 C357.35 +G01 X+25.555 Y-20.544 C354.399 +G01 X+25.52 Y-20.829 C351.449 +G01 X+25.47 Y-21.113 C348.498 +G01 X+25.405 Y-21.393 C345.547 +G01 X+25.326 Y-21.669 C342.597 +G01 X+25.233 Y-21.941 C339.646 +G01 X+25.126 Y-22.208 C336.695 +G01 X+25.006 Y-22.469 C333.745 +G01 X+24.872 Y-22.723 C330.794 +G01 X+24.725 Y-22.97 C327.843 +G01 X+24.566 Y-23.21 C324.892 +G01 X+24.395 Y-23.441 C321.942 +G01 X+24.212 Y-23.662 C318.991 +G01 X+24.018 Y-23.874 C316.04 +G01 X+23.813 Y-24.076 C313.089 +G01 X+23.598 Y-24.267 C310.139 +G01 X+23.374 Y-24.446 C307.188 +G01 X+23.14 Y-24.614 C304.237 +G01 X+22.899 Y-24.77 C301.286 +G01 X+22.649 Y-24.913 C298.336 +G01 X+22.393 Y-25.042 C295.385 +G01 X+22.13 Y-25.159 C292.434 +G01 X+21.862 Y-25.262 C289.483 +G01 X+21.588 Y-25.351 C286.533 +G01 X+21.311 Y-25.425 C283.582 +G01 X+21.03 Y-25.486 C280.631 +G01 X+20.746 Y-25.531 C277.68 +G01 X+20.46 Y-25.562 B7.116 C274.732 +G01 X+20.173 Y-25.579 B7.117 C271.776 +G01 X+19.885 Y-25.58 C268.814 +G01 X+19.599 Y-25.567 C265.875 +G01 X+19.313 Y-25.539 C262.924 +G01 X+19.029 Y-25.496 C259.974 +G01 X+18.747 Y-25.439 C257.023 +G01 X+18.469 Y-25.367 C254.072 +G01 X+18.194 Y-25.281 C251.121 +G01 X+17.925 Y-25.181 C248.17 +G01 X+17.665 Y-25.069 C245.263 +G01 X+17.296 Y-24.886 Z-0.848 B7.12 C241.352 +G01 X+17.142 Y-24.797 C239.215 +G01 X+16.896 Y-24.64 B7.118 C236.216 +G01 X+16.666 Y-24.477 C233.319 +G01 X+16.445 Y-24.303 B7.117 C230.436 +G01 X+16.231 Y-24.116 Z-0.847 C227.516 +G01 X+16.062 Y-23.954 B7.115 C225.115 +G01 Y-23.819 Z-0.836 B6.994 C224.114 +G01 X+15.899 Y-23.645 B6.995 C221.62 +G01 X+15.717 Y-23.429 C218.67 +G01 X+15.546 Y-23.204 C215.72 +G01 X+15.387 Y-22.971 C212.77 +G01 X+15.24 Y-22.729 C209.82 +G01 X+15.106 Y-22.481 C206.87 +G01 X+14.985 Y-22.225 C203.921 +G01 X+14.877 Y-21.964 C200.971 +G01 X+14.783 Y-21.698 C198.021 +G01 X+14.702 Y-21.427 C195.07 +G01 X+14.636 Y-21.152 C192.121 +G01 X+14.583 Y-20.875 C189.171 +G01 X+14.546 Y-20.595 C186.221 +G01 X+14.522 Y-20.313 C183.272 +G01 X+14.513 Y-20.031 C180.312 +G01 X+14.519 Y-19.748 C177.353 +G01 X+14.539 Y-19.466 C174.394 +G01 X+14.574 Y-19.186 C171.444 +G01 X+14.623 Y-18.908 C168.494 +G01 X+14.686 Y-18.632 C165.544 +G01 X+14.764 Y-18.361 C162.594 +G01 X+14.855 Y-18.093 C159.644 +G01 X+14.96 Y-17.831 C156.694 +G01 X+15.078 Y-17.574 C153.744 +G01 X+15.21 Y-17.324 C150.794 +G01 X+15.354 Y-17.081 C147.845 +G01 X+15.51 Y-16.846 C144.895 +G01 X+15.679 Y-16.619 C141.944 +G01 X+15.858 Y-16.401 C138.995 +G01 X+16.049 Y-16.193 C136.045 +G01 X+16.25 Y-15.994 C133.095 +G01 X+16.462 Y-15.807 C130.145 +G01 X+16.682 Y-15.63 C127.195 +G01 X+16.912 Y-15.465 C124.245 +G01 X+17.149 Y-15.312 C121.295 +G01 X+17.394 Y-15.171 C118.345 +G01 X+17.646 Y-15.044 C115.395 +G01 X+17.905 Y-14.929 C112.446 +G01 X+18.168 Y-14.828 C109.495 +G01 X+18.437 Y-14.741 C106.545 +G01 X+18.71 Y-14.667 C103.596 +G01 X+18.986 Y-14.608 C100.646 +G01 X+19.265 Y-14.563 C97.696 +G01 X+19.547 Y-14.532 C94.739 +G01 X+19.828 Y-14.516 C91.792 +G01 X+20.111 Y-14.514 C88.833 +G01 X+20.393 Y-14.527 C85.874 +G01 X+20.674 Y-14.555 C82.919 +G01 X+20.955 Y-14.597 C79.954 +G01 X+21.23 Y-14.653 C77.019 +G01 X+21.504 Y-14.723 C74.069 +G01 X+21.774 Y-14.808 C71.119 +G01 X+22.038 Y-14.906 C68.169 +G01 X+22.298 Y-15.018 C65.219 +G01 X+22.551 Y-15.142 C62.269 +G01 X+22.65 Y-15.198 B6.993 C61.352 +G01 X+22.798 Y-15.28 B6.995 C59.319 +G01 X+23.037 Y-15.431 C56.369 +G01 X+23.269 Y-15.593 C53.42 +G01 X+23.491 Y-15.767 C50.47 +G01 X+23.704 Y-15.952 C47.52 +G01 X+23.908 Y-16.148 C44.57 +G01 X+24.101 Y-16.355 C41.62 +G01 X+24.283 Y-16.571 C38.67 +G01 X+24.454 Y-16.796 C35.72 +G01 X+24.613 Y-17.029 C32.77 +G01 X+24.76 Y-17.271 C29.82 +G01 X+24.894 Y-17.519 C26.87 +G01 X+25.015 Y-17.775 C23.921 +G01 X+25.123 Y-18.036 C20.971 +G01 X+25.217 Y-18.302 C18.021 +G01 X+25.298 Y-18.573 C15.07 +G01 X+25.364 Y-18.847 C12.121 +G01 X+25.417 Y-19.125 C9.171 +G01 X+25.454 Y-19.405 C6.221 +G01 X+25.478 Y-19.687 C3.272 +G01 X+25.487 Y-19.969 C0.312 +G01 X+25.481 Y-20.252 C357.353 +G01 X+25.461 Y-20.533 C354.394 +G01 X+25.426 Y-20.814 C351.444 +G01 X+25.377 Y-21.092 C348.494 +G01 X+25.314 Y-21.367 C345.544 +G01 X+25.236 Y-21.639 C342.594 +G01 X+25.145 Y-21.907 C339.644 +G01 X+25.04 Y-22.169 C336.694 +G01 X+24.922 Y-22.425 C333.744 +G01 X+24.79 Y-22.676 C330.794 +G01 X+24.646 Y-22.919 C327.845 +G01 X+24.49 Y-23.154 C324.895 +G01 X+24.321 Y-23.381 C321.944 +G01 X+24.142 Y-23.599 C318.995 +G01 X+23.951 Y-23.807 C316.045 +G01 X+23.75 Y-24.006 C313.095 +G01 X+23.538 Y-24.193 C310.145 +G01 X+23.318 Y-24.37 C307.195 +G01 X+23.088 Y-24.535 C304.245 +G01 X+22.851 Y-24.688 C301.295 +G01 X+22.606 Y-24.828 C298.345 +G01 X+22.354 Y-24.956 C295.395 +G01 X+22.095 Y-25.071 C292.446 +G01 X+21.832 Y-25.172 C289.495 +G01 X+21.563 Y-25.259 C286.545 +G01 X+21.29 Y-25.333 C283.596 +G01 X+21.014 Y-25.392 C280.646 +G01 X+20.735 Y-25.437 C277.696 +G01 X+20.453 Y-25.468 C274.739 +G01 X+20.172 Y-25.484 C271.792 +G01 X+19.89 Y-25.486 C268.833 +G01 X+19.607 Y-25.473 C265.874 +G01 X+19.326 Y-25.445 C262.919 +G01 X+19.045 Y-25.403 C259.954 +G01 X+18.77 Y-25.347 C257.019 +G01 X+18.496 Y-25.277 C254.069 +G01 X+18.226 Y-25.192 C251.119 +G01 X+17.961 Y-25.094 C248.168 +G01 X+17.706 Y-24.984 C245.264 +G01 X+17.472 Y-24.868 B6.993 C242.533 +G01 X+17.369 Y-24.817 B6.997 C241.352 +G01 X+17.341 Y-24.803 B6.999 +G01 X+17.192 Y-24.717 C239.22 +G01 X+16.95 Y-24.562 B6.997 C236.218 +G01 X+16.723 Y-24.401 B6.996 C233.319 +G01 X+16.506 Y-24.231 C230.435 +G01 X+16.296 Y-24.048 B6.995 C227.521 +G01 X+16.129 Y-23.887 B6.994 C225.094 +G01 Y-23.752 Z-0.824 B6.872 C224.093 +G01 X+15.971 Y-23.583 B6.874 C221.625 +G01 X+15.792 Y-23.371 C218.677 +G01 X+15.624 Y-23.15 C215.727 +G01 X+15.468 Y-22.921 C212.778 +G01 X+15.323 Y-22.683 C209.829 +G01 X+15.191 Y-22.439 C206.88 +G01 X+15.072 Y-22.188 C203.931 +G01 X+14.966 Y-21.932 C200.982 +G01 X+14.873 Y-21.67 B6.873 C198.033 +G01 X+14.794 Y-21.404 C195.084 +G01 X+14.729 Y-21.134 C192.134 +G01 X+14.677 Y-20.861 C189.185 +G01 X+14.64 Y-20.586 C186.236 +G01 X+14.617 Y-20.309 C183.288 +G01 X+14.608 Y-20.032 C180.333 +G01 X+14.614 Y-19.754 C177.375 +G01 X+14.633 Y-19.477 C174.416 +G01 X+14.667 Y-19.202 C171.458 +G01 X+14.716 Y-18.928 C168.5 +G01 X+14.778 Y-18.658 B6.874 C165.541 +G01 X+14.854 Y-18.39 C162.591 +G01 X+14.944 Y-18.128 C159.642 +G01 X+15.047 Y-17.87 C156.693 +G01 X+15.163 Y-17.618 C153.744 +G01 X+15.292 Y-17.372 C150.795 +G01 X+15.433 Y-17.133 C147.846 +G01 X+15.587 Y-16.902 C144.897 +G01 X+15.752 Y-16.679 C141.947 +G01 X+15.929 Y-16.464 C138.998 +G01 X+16.116 Y-16.259 C136.049 +G01 X+16.314 Y-16.064 C133.1 +G01 X+16.522 Y-15.88 C130.151 +G01 X+16.738 Y-15.706 C127.202 +G01 X+16.964 Y-15.544 C124.253 +G01 X+17.197 Y-15.394 C121.304 +G01 X+17.438 Y-15.256 C118.354 +G01 X+17.686 Y-15.13 C115.405 +G01 X+17.939 Y-15.017 C112.456 +G01 X+18.199 Y-14.918 B6.873 C109.507 +G01 X+18.463 Y-14.832 C106.558 +G01 X+18.731 Y-14.76 C103.609 +G01 X+19.002 Y-14.701 C100.66 +G01 X+19.276 Y-14.657 C97.71 +G01 X+19.552 Y-14.627 C94.762 +G01 X+19.829 Y-14.611 C91.812 +G01 X+20.107 Y-14.609 C88.853 +G01 X+20.384 Y-14.622 C85.895 +G01 X+20.661 Y-14.649 C82.937 +G01 X+20.935 Y-14.69 C79.979 +G01 X+21.208 Y-14.745 C77.021 +G01 X+21.476 Y-14.814 B6.874 C74.066 +G01 X+21.741 Y-14.897 C71.117 +G01 X+22.002 Y-14.993 C68.168 +G01 X+22.257 Y-15.103 C65.218 +G01 X+22.506 Y-15.226 C62.269 +G01 X+22.616 Y-15.287 B6.871 C60.93 +G01 X+22.748 Y-15.361 B6.874 C59.32 +G01 X+22.984 Y-15.509 C56.371 +G01 X+23.211 Y-15.668 C53.422 +G01 X+23.43 Y-15.839 C50.473 +G01 X+23.639 Y-16.021 C47.524 +G01 X+23.839 Y-16.214 C44.575 +G01 X+24.029 Y-16.417 C41.625 +G01 X+24.208 Y-16.629 C38.676 +G01 X+24.376 Y-16.85 C35.727 +G01 X+24.532 Y-17.079 C32.778 +G01 X+24.677 Y-17.317 C29.829 +G01 X+24.809 Y-17.561 C26.88 +G01 X+24.928 Y-17.812 C23.931 +G01 X+25.034 Y-18.068 C20.982 +G01 X+25.127 Y-18.33 B6.873 C18.033 +G01 X+25.206 Y-18.596 C15.084 +G01 X+25.271 Y-18.866 C12.134 +G01 X+25.323 Y-19.139 C9.185 +G01 X+25.36 Y-19.414 C6.236 +G01 X+25.383 Y-19.691 C3.288 +G01 X+25.392 Y-19.968 C0.333 +G01 X+25.386 Y-20.246 C357.375 +G01 X+25.367 Y-20.523 C354.416 +G01 X+25.333 Y-20.798 C351.458 +G01 X+25.284 Y-21.072 C348.5 +G01 X+25.222 Y-21.342 B6.874 C345.541 +G01 X+25.146 Y-21.609 C342.591 +G01 X+25.056 Y-21.872 C339.642 +G01 X+24.953 Y-22.13 C336.693 +G01 X+24.837 Y-22.382 C333.744 +G01 X+24.708 Y-22.628 C330.795 +G01 X+24.567 Y-22.867 C327.846 +G01 X+24.413 Y-23.098 C324.897 +G01 X+24.248 Y-23.321 C321.947 +G01 X+24.071 Y-23.536 C318.998 +G01 X+23.884 Y-23.74 C316.049 +G01 X+23.686 Y-23.935 C313.1 +G01 X+23.478 Y-24.12 C310.151 +G01 X+23.262 Y-24.293 C307.202 +G01 X+23.036 Y-24.456 C304.253 +G01 X+22.803 Y-24.606 C301.304 +G01 X+22.562 Y-24.744 C298.354 +G01 X+22.314 Y-24.87 C295.405 +G01 X+22.061 Y-24.983 C292.456 +G01 X+21.801 Y-25.082 B6.873 C289.507 +G01 X+21.537 Y-25.168 C286.558 +G01 X+21.269 Y-25.24 C283.609 +G01 X+20.998 Y-25.299 C280.66 +G01 X+20.724 Y-25.343 C277.71 +G01 X+20.448 Y-25.373 C274.762 +G01 X+20.171 Y-25.389 C271.812 +G01 X+19.893 Y-25.391 C268.853 +G01 X+19.616 Y-25.378 C265.895 +G01 X+19.339 Y-25.351 C262.937 +G01 X+19.065 Y-25.31 C259.979 +G01 X+18.792 Y-25.255 C257.021 +G01 X+18.524 Y-25.186 B6.874 C254.066 +G01 X+18.259 Y-25.103 C251.117 +G01 X+17.998 Y-25.007 C248.167 +G01 X+17.747 Y-24.899 B6.873 C245.264 +G01 X+17.504 Y-24.778 B6.872 C242.383 +G01 X+17.414 Y-24.734 B6.876 C241.352 +G01 X+17.383 Y-24.718 Z-0.825 B6.878 C240.938 +G01 X+17.242 Y-24.636 B6.877 C239.225 +G01 X+17.003 Y-24.484 Z-0.824 B6.875 C236.219 +G01 X+16.781 Y-24.326 C233.319 +G01 X+16.567 Y-24.158 B6.874 C230.434 +G01 X+16.361 Y-23.979 C227.525 +G01 X+16.196 Y-23.82 B6.872 C225.079 +G01 Y-23.684 Z-0.813 B6.75 C224.072 +G01 X+16.043 Y-23.521 B6.752 C221.631 +G01 X+15.867 Y-23.313 C218.683 +G01 X+15.702 Y-23.096 C215.734 +G01 X+15.548 Y-22.87 C212.786 +G01 X+15.406 Y-22.638 C209.838 +G01 X+15.277 Y-22.398 C206.889 +G01 X+15.159 Y-22.151 C203.941 +G01 X+15.055 Y-21.899 C200.992 +G01 X+14.964 Y-21.642 C198.044 +G01 X+14.886 Y-21.381 C195.096 +G01 X+14.822 Y-21.116 C192.148 +G01 X+14.771 Y-20.847 C189.199 +G01 X+14.734 Y-20.577 C186.251 +G01 X+14.712 Y-20.304 C183.288 +G01 X+14.703 Y-20.033 C180.352 +G01 X+14.708 Y-19.76 C177.395 +G01 X+14.728 Y-19.488 C174.438 +G01 X+14.761 Y-19.217 C171.481 +G01 X+14.808 Y-18.948 C168.524 +G01 X+14.869 Y-18.683 C165.566 +G01 X+14.944 Y-18.42 C162.609 +G01 X+15.037 Y-18.149 C159.492 +G01 X+15.137 Y-17.9 C156.589 +G01 X+15.25 Y-17.656 C153.686 +G01 X+15.375 Y-17.418 C150.782 +G01 X+15.513 Y-17.185 C147.847 +G01 X+15.664 Y-16.957 C144.898 +G01 X+15.826 Y-16.738 C141.95 +G01 X+16 Y-16.528 C139.002 +G01 X+16.184 Y-16.326 C136.053 +G01 X+16.378 Y-16.135 C133.105 +G01 X+16.582 Y-15.953 C130.157 +G01 X+16.794 Y-15.783 C127.208 +G01 X+17.016 Y-15.623 C124.26 +G01 X+17.245 Y-15.476 C121.312 +G01 X+17.482 Y-15.34 C118.364 +G01 X+17.725 Y-15.216 C115.415 +G01 X+17.974 Y-15.105 C112.467 +G01 X+18.229 Y-15.008 C109.518 +G01 X+18.488 Y-14.923 C106.57 +G01 X+18.751 Y-14.852 C103.622 +G01 X+19.018 Y-14.795 C100.674 +G01 X+19.287 Y-14.751 C97.725 +G01 X+19.559 Y-14.721 C94.777 +G01 X+19.831 Y-14.705 C91.831 +G01 X+20.104 Y-14.704 C88.874 +G01 X+20.376 Y-14.716 C85.917 +G01 X+20.648 Y-14.743 C82.959 +G01 X+20.917 Y-14.783 C80.002 +G01 X+21.185 Y-14.837 C77.045 +G01 X+21.449 Y-14.905 C74.088 +G01 X+21.725 Y-14.992 C70.943 +G01 X+21.976 Y-15.086 C68.04 +G01 X+22.223 Y-15.192 C65.137 +G01 X+22.464 Y-15.311 C62.234 +G01 X+22.581 Y-15.376 B6.75 C60.78 +G01 X+22.699 Y-15.442 B6.752 C59.321 +G01 X+22.93 Y-15.587 C56.372 +G01 X+23.153 Y-15.743 C53.424 +G01 X+23.368 Y-15.911 C50.476 +G01 X+23.574 Y-16.09 C47.527 +G01 X+23.771 Y-16.279 C44.579 +G01 X+23.957 Y-16.478 C41.631 +G01 X+24.133 Y-16.687 C38.682 +G01 X+24.298 Y-16.904 C35.734 +G01 X+24.452 Y-17.129 C32.786 +G01 X+24.594 Y-17.362 C29.838 +G01 X+24.724 Y-17.602 C26.889 +G01 X+24.841 Y-17.849 C23.941 +G01 X+24.945 Y-18.101 C20.992 +G01 X+25.036 Y-18.358 C18.044 +G01 X+25.114 Y-18.619 C15.096 +G01 X+25.178 Y-18.884 C12.148 +G01 X+25.229 Y-19.152 C9.199 +G01 X+25.266 Y-19.423 C6.251 +G01 X+25.288 Y-19.696 C3.288 +G01 X+25.297 Y-19.967 C0.352 +G01 X+25.292 Y-20.24 C357.395 +G01 X+25.272 Y-20.512 C354.438 +G01 X+25.239 Y-20.783 C351.481 +G01 X+25.192 Y-21.051 C348.524 +G01 X+25.131 Y-21.317 C345.566 +G01 X+25.056 Y-21.58 C342.609 +G01 X+24.963 Y-21.851 C339.492 +G01 X+24.863 Y-22.1 C336.589 +G01 X+24.75 Y-22.344 C333.686 +G01 X+24.625 Y-22.582 C330.782 +G01 X+24.487 Y-22.815 C327.847 +G01 X+24.336 Y-23.042 C324.898 +G01 X+24.174 Y-23.262 C321.95 +G01 X+24 Y-23.472 C319.002 +G01 X+23.816 Y-23.674 C316.053 +G01 X+23.622 Y-23.865 C313.105 +G01 X+23.418 Y-24.046 C310.157 +G01 X+23.206 Y-24.217 C307.208 +G01 X+22.984 Y-24.376 C304.26 +G01 X+22.755 Y-24.524 C301.312 +G01 X+22.518 Y-24.66 C298.364 +G01 X+22.275 Y-24.784 C295.415 +G01 X+22.026 Y-24.894 C292.467 +G01 X+21.771 Y-24.992 C289.518 +G01 X+21.512 Y-25.077 C286.57 +G01 X+21.249 Y-25.148 C283.622 +G01 X+20.982 Y-25.205 C280.674 +G01 X+20.713 Y-25.249 C277.725 +G01 X+20.441 Y-25.279 C274.777 +G01 X+20.169 Y-25.294 C271.831 +G01 X+19.896 Y-25.296 C268.874 +G01 X+19.624 Y-25.284 C265.917 +G01 X+19.352 Y-25.257 C262.959 +G01 X+19.083 Y-25.217 C260.002 +G01 X+18.815 Y-25.163 C257.045 +G01 X+18.551 Y-25.095 C254.087 +G01 X+18.275 Y-25.008 C250.943 +G01 X+18.024 Y-24.914 C248.04 +G01 X+17.777 Y-24.808 C245.137 +G01 X+17.537 Y-24.689 B6.751 C242.233 +G01 X+17.459 Y-24.65 B6.754 C241.352 +G01 X+17.417 Y-24.628 B6.756 C240.787 +G01 X+17.292 Y-24.556 B6.755 C239.23 +G01 X+17.057 Y-24.406 B6.754 C236.22 +G01 X+16.838 Y-24.251 B6.753 C233.318 +G01 X+16.629 Y-24.086 B6.752 C230.433 +G01 X+16.426 Y-23.91 C227.529 +G01 X+16.263 Y-23.753 B6.751 C225.084 +G01 X+16.262 Y-23.617 Z-0.802 B6.629 C224.051 +G01 X+16.115 Y-23.46 B6.631 C221.636 +G01 X+15.942 Y-23.255 C218.688 +G01 X+15.78 Y-23.042 C215.741 +G01 X+15.629 Y-22.82 C212.793 +G01 X+15.489 Y-22.592 C209.846 +G01 X+15.362 Y-22.356 B6.63 C206.898 +G01 X+15.247 Y-22.114 C203.951 +G01 X+15.144 Y-21.867 C201.004 +G01 X+15.054 Y-21.614 C198.056 +G01 X+14.978 Y-21.357 C195.108 +G01 X+14.915 Y-21.097 C192.161 +G01 X+14.865 Y-20.834 C189.213 +G01 X+14.829 Y-20.568 C186.266 +G01 X+14.806 Y-20.301 C183.318 +G01 X+14.798 Y-20.034 C180.372 +G01 X+14.803 Y-19.766 C177.416 +G01 X+14.822 Y-19.499 C174.459 +G01 X+14.855 Y-19.233 C171.503 +G01 X+14.901 Y-18.969 C168.547 +G01 X+14.961 Y-18.708 C165.59 +G01 X+15.034 Y-18.45 C162.634 +G01 X+15.12 Y-18.196 C159.678 +G01 X+15.22 Y-17.948 C156.722 +G01 X+15.341 Y-17.686 C153.534 +G01 X+15.464 Y-17.453 C150.632 +G01 X+15.599 Y-17.227 C147.728 +G01 X+15.745 Y-17.007 C144.825 +G01 X+15.9 Y-16.798 B6.631 C141.952 +G01 X+16.07 Y-16.591 C139.005 +G01 X+16.251 Y-16.393 C136.057 +G01 X+16.442 Y-16.205 C133.11 +G01 X+16.642 Y-16.027 C130.162 +G01 X+16.851 Y-15.859 C127.215 +G01 X+17.068 Y-15.703 C124.267 +G01 X+17.293 Y-15.557 C121.32 +G01 X+17.525 Y-15.424 C118.372 +G01 X+17.764 Y-15.303 C115.425 +G01 X+18.009 Y-15.194 B6.63 C112.477 +G01 X+18.259 Y-15.098 C109.529 +G01 X+18.514 Y-15.014 C106.582 +G01 X+18.772 Y-14.945 C103.634 +G01 X+19.034 Y-14.888 C100.687 +G01 X+19.299 Y-14.845 C97.74 +G01 X+19.565 Y-14.816 C94.792 +G01 X+19.833 Y-14.8 C91.836 +G01 X+20.1 Y-14.799 C88.894 +G01 X+20.368 Y-14.811 C85.937 +G01 X+20.635 Y-14.836 C82.982 +G01 X+20.899 Y-14.876 C80.025 +G01 X+21.162 Y-14.929 C77.069 +G01 X+21.422 Y-14.996 C74.112 +G01 X+21.677 Y-15.075 C71.156 +G01 X+21.929 Y-15.168 C68.2 +G01 X+22.175 Y-15.274 C65.244 +G01 X+22.431 Y-15.401 C62.083 +G01 X+22.546 Y-15.465 B6.628 C60.629 +G01 X+22.661 Y-15.53 B6.63 C59.18 +G01 X+22.884 Y-15.67 C56.277 +G01 X+23.095 Y-15.819 B6.631 C53.426 +G01 X+23.307 Y-15.984 B6.63 C50.471 +G01 X+23.509 Y-16.159 B6.631 C47.531 +G01 X+23.702 Y-16.345 C44.584 +G01 X+23.885 Y-16.54 C41.636 +G01 X+24.058 Y-16.745 C38.688 +G01 X+24.22 Y-16.958 C35.741 +G01 X+24.371 Y-17.179 C32.793 +G01 X+24.511 Y-17.408 C29.846 +G01 X+24.638 Y-17.644 B6.63 C26.898 +G01 X+24.753 Y-17.886 C23.951 +G01 X+24.856 Y-18.133 C21.004 +G01 X+24.946 Y-18.386 C18.056 +G01 X+25.022 Y-18.642 C15.108 +G01 X+25.085 Y-18.903 C12.161 +G01 X+25.135 Y-19.166 C9.213 +G01 X+25.171 Y-19.431 C6.266 +G01 X+25.194 Y-19.698 C3.318 +G01 X+25.202 Y-19.966 C0.372 +G01 X+25.197 Y-20.234 C357.416 +G01 X+25.178 Y-20.501 C354.459 +G01 X+25.145 Y-20.767 C351.503 +G01 X+25.099 Y-21.031 C348.547 +G01 X+25.039 Y-21.292 C345.59 +G01 X+24.966 Y-21.55 C342.634 +G01 X+24.88 Y-21.803 C339.678 +G01 X+24.78 Y-22.052 C336.722 +G01 X+24.659 Y-22.314 C333.534 +G01 X+24.536 Y-22.547 C330.632 +G01 X+24.401 Y-22.773 C327.728 +G01 X+24.255 Y-22.993 C324.825 +G01 X+24.1 Y-23.202 B6.631 C321.952 +G01 X+23.93 Y-23.409 C319.005 +G01 X+23.749 Y-23.607 C316.057 +G01 X+23.558 Y-23.795 C313.11 +G01 X+23.358 Y-23.973 C310.162 +G01 X+23.149 Y-24.141 C307.215 +G01 X+22.932 Y-24.297 C304.267 +G01 X+22.707 Y-24.443 C301.32 +G01 X+22.475 Y-24.576 C298.372 +G01 X+22.236 Y-24.697 C295.425 +G01 X+21.991 Y-24.806 B6.63 C292.477 +G01 X+21.741 Y-24.902 C289.529 +G01 X+21.486 Y-24.985 C286.582 +G01 X+21.228 Y-25.055 C283.634 +G01 X+20.966 Y-25.112 C280.687 +G01 X+20.701 Y-25.155 C277.74 +G01 X+20.435 Y-25.184 C274.792 +G01 X+20.167 Y-25.2 C271.836 +G01 X+19.9 Y-25.201 C268.894 +G01 X+19.632 Y-25.189 C265.937 +G01 X+19.365 Y-25.163 C262.982 +G01 X+19.101 Y-25.124 C260.025 +G01 X+18.838 Y-25.071 C257.069 +G01 X+18.578 Y-25.004 C254.112 +G01 X+18.323 Y-24.924 C251.156 +G01 X+18.071 Y-24.832 C248.199 +G01 X+17.83 Y-24.728 C245.303 +G01 X+17.569 Y-24.599 C242.083 +G01 X+17.505 Y-24.567 B6.633 C241.352 +G01 X+17.452 Y-24.539 B6.634 C240.637 +G01 X+17.342 Y-24.475 C239.235 +G01 X+17.111 Y-24.328 B6.632 C236.221 +G01 X+16.896 Y-24.175 B6.631 C233.318 +G01 X+16.69 Y-24.014 C230.432 +G01 X+16.491 Y-23.841 C227.533 +G01 X+16.33 Y-23.685 B6.629 C225.09 +G01 X+16.329 Y-23.55 Z-0.791 B6.507 C224.03 +G01 X+16.187 Y-23.398 B6.509 C221.64 +G01 X+16.017 Y-23.197 C218.694 +G01 X+15.857 Y-22.987 C215.747 +G01 X+15.709 Y-22.77 C212.801 +G01 X+15.572 Y-22.546 C209.854 +G01 X+15.447 Y-22.314 C206.907 +G01 X+15.334 Y-22.077 C203.96 +G01 X+15.233 Y-21.834 C201.014 +G01 X+15.145 Y-21.586 C198.067 +G01 X+15.07 Y-21.334 C195.12 +G01 X+15.008 Y-21.079 C192.174 +G01 X+14.959 Y-20.82 C189.227 +G01 X+14.923 Y-20.56 C186.28 +G01 X+14.901 Y-20.297 C183.334 +G01 X+14.893 Y-20.034 B6.508 C180.384 +G01 X+14.898 Y-19.772 B6.509 C177.436 +G01 X+14.916 Y-19.509 C174.48 +G01 X+14.948 Y-19.248 C171.525 +G01 X+14.994 Y-18.989 C168.57 +G01 X+15.052 Y-18.733 C165.615 +G01 X+15.124 Y-18.48 C162.659 +G01 X+15.209 Y-18.231 C159.704 +G01 X+15.306 Y-17.986 C156.749 +G01 X+15.416 Y-17.747 C153.793 +G01 X+15.538 Y-17.514 C150.838 +G01 X+15.672 Y-17.288 C147.883 +G01 X+15.83 Y-17.051 B6.508 C144.674 +G01 X+15.985 Y-16.844 C141.771 +G01 X+16.15 Y-16.644 B6.509 C138.868 +G01 X+16.325 Y-16.454 C135.965 +G01 X+16.505 Y-16.275 C133.114 +G01 X+16.702 Y-16.1 C130.159 +G01 X+16.907 Y-15.936 C127.221 +G01 X+17.12 Y-15.782 C124.274 +G01 X+17.341 Y-15.639 C121.327 +G01 X+17.569 Y-15.508 C118.381 +G01 X+17.804 Y-15.389 C115.434 +G01 X+18.044 Y-15.282 C112.487 +G01 X+18.289 Y-15.187 C109.54 +G01 X+18.539 Y-15.106 C106.594 +G01 X+18.793 Y-15.037 C103.647 +G01 X+19.05 Y-14.982 C100.7 +G01 X+19.31 Y-14.939 C97.754 +G01 X+19.571 Y-14.91 C94.807 +G01 X+19.834 Y-14.895 B6.508 C91.86 +G01 X+20.097 Y-14.893 C88.913 +G01 X+20.36 Y-14.905 B6.509 C85.958 +G01 X+20.621 Y-14.93 C83.003 +G01 X+20.882 Y-14.969 C80.048 +G01 X+21.139 Y-15.021 C77.092 +G01 X+21.394 Y-15.086 C74.137 +G01 X+21.645 Y-15.165 C71.182 +G01 X+21.892 Y-15.256 C68.227 +G01 X+22.134 Y-15.36 C65.271 +G01 X+22.37 Y-15.475 C62.316 +G01 X+22.398 Y-15.491 B6.508 C61.932 +G01 X+22.561 Y-15.582 B6.507 C59.901 +G01 X+22.624 Y-15.619 B6.508 C59.029 +G01 X+22.822 Y-15.743 B6.509 C56.405 +G01 X+23.054 Y-15.906 B6.508 C53.223 +G01 X+23.257 Y-16.066 C50.32 +G01 X+23.452 Y-16.236 B6.509 C47.417 +G01 X+23.633 Y-16.41 C44.587 +G01 X+23.813 Y-16.602 C41.64 +G01 X+23.983 Y-16.803 C38.694 +G01 X+24.143 Y-17.012 C35.747 +G01 X+24.291 Y-17.23 C32.801 +G01 X+24.428 Y-17.454 C29.854 +G01 X+24.553 Y-17.685 C26.907 +G01 X+24.666 Y-17.923 C23.96 +G01 X+24.767 Y-18.166 C21.014 +G01 X+24.855 Y-18.414 C18.067 +G01 X+24.93 Y-18.666 C15.12 +G01 X+24.992 Y-18.921 C12.174 +G01 X+25.041 Y-19.18 C9.227 +G01 X+25.077 Y-19.44 C6.28 +G01 X+25.099 Y-19.702 C3.334 +G01 X+25.107 Y-19.966 B6.508 C0.384 +G01 X+25.102 Y-20.228 B6.509 C357.436 +G01 X+25.084 Y-20.491 C354.48 +G01 X+25.052 Y-20.752 C351.525 +G01 X+25.006 Y-21.011 C348.57 +G01 X+24.948 Y-21.267 C345.615 +G01 X+24.876 Y-21.52 C342.659 +G01 X+24.791 Y-21.769 C339.704 +G01 X+24.694 Y-22.013 C336.749 +G01 X+24.584 Y-22.252 C333.793 +G01 X+24.462 Y-22.485 C330.838 +G01 X+24.328 Y-22.712 C327.883 +G01 X+24.17 Y-22.949 B6.508 C324.674 +G01 X+24.015 Y-23.156 C321.771 +G01 X+23.85 Y-23.356 B6.509 C318.868 +G01 X+23.675 Y-23.546 C315.965 +G01 X+23.495 Y-23.725 C313.114 +G01 X+23.298 Y-23.9 C310.159 +G01 X+23.093 Y-24.064 C307.221 +G01 X+22.88 Y-24.218 C304.274 +G01 X+22.659 Y-24.361 C301.327 +G01 X+22.431 Y-24.492 C298.381 +G01 X+22.196 Y-24.611 C295.434 +G01 X+21.956 Y-24.718 C292.487 +G01 X+21.711 Y-24.812 C289.54 +G01 X+21.461 Y-24.894 C286.594 +G01 X+21.207 Y-24.963 C283.647 +G01 X+20.95 Y-25.018 C280.7 +G01 X+20.69 Y-25.061 C277.754 +G01 X+20.429 Y-25.089 C274.807 +G01 X+20.166 Y-25.105 B6.508 C271.86 +G01 X+19.903 Y-25.106 C268.913 +G01 X+19.64 Y-25.095 B6.509 C265.958 +G01 X+19.379 Y-25.069 C263.003 +G01 X+19.118 Y-25.031 C260.048 +G01 X+18.861 Y-24.979 C257.092 +G01 X+18.606 Y-24.913 C254.137 +G01 X+18.355 Y-24.835 C251.182 +G01 X+18.108 Y-24.744 C248.225 +G01 X+17.871 Y-24.642 C245.333 +G01 X+17.601 Y-24.509 C241.933 +G01 X+17.55 Y-24.484 B6.511 C241.352 +G01 X+17.52 Y-24.469 B6.513 C240.941 +G01 X+17.375 Y-24.384 B6.512 C239.033 +G01 X+17.157 Y-24.244 B6.51 C236.128 +G01 X+16.946 Y-24.094 C233.224 +G01 X+16.743 Y-23.934 B6.509 C230.32 +G01 X+16.548 Y-23.764 C227.416 +G01 X+16.397 Y-23.618 B6.508 C225.095 +G01 X+16.396 Y-23.482 Z-0.78 B6.386 C224.009 +G01 X+16.247 Y-23.322 B6.387 C221.46 +G01 X+16.083 Y-23.127 C218.556 +G01 X+15.935 Y-22.933 C215.755 +G01 X+15.79 Y-22.72 C212.807 +G01 X+15.655 Y-22.499 C209.847 +G01 X+15.532 Y-22.273 C206.916 +G01 X+15.421 Y-22.04 C203.969 +G01 X+15.322 Y-21.801 C201.024 +G01 X+15.236 Y-21.558 C198.078 +G01 X+15.162 Y-21.311 C195.132 +G01 X+15.101 Y-21.06 C192.186 +G01 X+15.053 Y-20.806 C189.24 +G01 X+15.018 Y-20.551 C186.294 +G01 X+14.996 Y-20.293 C183.349 +G01 X+14.988 Y-20.034 C180.384 +G01 X+14.992 Y-19.777 C177.455 +G01 X+15.01 Y-19.52 C174.501 +G01 X+15.042 Y-19.264 C171.547 +G01 X+15.086 Y-19.009 C168.592 +G01 X+15.144 Y-18.758 C165.638 +G01 X+15.214 Y-18.509 C162.684 +G01 X+15.297 Y-18.265 C159.73 +G01 X+15.393 Y-18.025 C156.775 +G01 X+15.501 Y-17.791 C153.821 +G01 X+15.62 Y-17.562 C150.867 +G01 X+15.752 Y-17.34 C147.913 +G01 X+15.894 Y-17.125 B6.388 C144.958 +G01 X+16.048 Y-16.917 C142.004 +G01 X+16.212 Y-16.718 B6.387 C139.049 +G01 X+16.386 Y-16.527 C136.095 +G01 X+16.584 Y-16.332 C132.911 +G01 X+16.774 Y-16.164 C130.008 +G01 X+16.973 Y-16.005 C127.105 +G01 X+17.172 Y-15.861 C124.28 +G01 X+17.389 Y-15.721 C121.334 +G01 X+17.613 Y-15.592 C118.388 +G01 X+17.843 Y-15.475 C115.442 +G01 X+18.079 Y-15.37 C112.497 +G01 X+18.32 Y-15.277 C109.551 +G01 X+18.565 Y-15.197 C106.605 +G01 X+18.834 Y-15.125 B6.386 C103.449 +G01 X+19.066 Y-15.075 B6.387 C100.713 +G01 X+19.321 Y-15.034 C97.767 +G01 X+19.578 Y-15.005 C94.821 +G01 X+19.835 Y-14.99 C91.876 +G01 X+20.094 Y-14.988 C88.933 +G01 X+20.351 Y-15 C85.978 +G01 X+20.608 Y-15.024 C83.024 +G01 X+20.864 Y-15.062 C80.07 +G01 X+21.117 Y-15.113 C77.116 +G01 X+21.367 Y-15.177 C74.161 +G01 X+21.613 Y-15.254 C71.207 +G01 X+21.855 Y-15.343 C68.252 +G01 X+22.093 Y-15.445 C65.298 +G01 X+22.324 Y-15.559 C62.344 +G01 X+22.366 Y-15.582 B6.386 C61.781 +G01 X+22.513 Y-15.664 C59.901 +G01 X+22.55 Y-15.684 B6.387 C59.39 +G01 X+22.769 Y-15.821 C56.435 +G01 X+22.98 Y-15.969 C53.481 +G01 X+23.184 Y-16.128 C50.527 +G01 X+23.379 Y-16.297 C47.572 +G01 X+23.58 Y-16.492 C44.363 +G01 X+23.753 Y-16.678 C41.46 +G01 X+23.917 Y-16.872 C38.556 +G01 X+24.065 Y-17.067 C35.755 +G01 X+24.21 Y-17.28 C32.807 +G01 X+24.345 Y-17.501 C29.847 +G01 X+24.468 Y-17.727 C26.916 +G01 X+24.579 Y-17.96 C23.97 +G01 X+24.678 Y-18.199 C21.024 +G01 X+24.764 Y-18.442 C18.078 +G01 X+24.838 Y-18.689 C15.132 +G01 X+24.899 Y-18.94 C12.186 +G01 X+24.947 Y-19.193 C9.24 +G01 X+24.982 Y-19.449 C6.294 +G01 X+25.004 Y-19.706 C3.349 +G01 X+25.012 Y-19.966 C0.384 +G01 X+25.008 Y-20.222 C357.455 +G01 X+24.99 Y-20.48 C354.501 +G01 X+24.958 Y-20.736 C351.547 +G01 X+24.914 Y-20.99 C348.592 +G01 X+24.856 Y-21.242 C345.638 +G01 X+24.786 Y-21.49 C342.684 +G01 X+24.703 Y-21.735 C339.73 +G01 X+24.607 Y-21.975 C336.775 +G01 X+24.499 Y-22.209 C333.821 +G01 X+24.38 Y-22.438 C330.867 +G01 X+24.248 Y-22.66 C327.913 +G01 X+24.106 Y-22.875 B6.388 C324.958 +G01 X+23.952 Y-23.083 C322.004 +G01 X+23.788 Y-23.282 B6.387 C319.049 +G01 X+23.614 Y-23.473 C316.095 +G01 X+23.416 Y-23.668 C312.911 +G01 X+23.226 Y-23.836 C310.008 +G01 X+23.027 Y-23.995 C307.105 +G01 X+22.828 Y-24.139 C304.28 +G01 X+22.611 Y-24.279 C301.334 +G01 X+22.387 Y-24.408 C298.388 +G01 X+22.157 Y-24.525 C295.442 +G01 X+21.921 Y-24.63 C292.497 +G01 X+21.68 Y-24.722 C289.551 +G01 X+21.435 Y-24.803 C286.605 +G01 X+21.166 Y-24.875 B6.386 C283.449 +G01 X+20.934 Y-24.925 B6.387 C280.713 +G01 X+20.679 Y-24.966 C277.767 +G01 X+20.422 Y-24.995 C274.821 +G01 X+20.165 Y-25.01 C271.876 +G01 X+19.906 Y-25.012 C268.933 +G01 X+19.649 Y-25 C265.978 +G01 X+19.392 Y-24.975 C263.024 +G01 X+19.136 Y-24.938 C260.07 +G01 X+18.883 Y-24.887 C257.116 +G01 X+18.633 Y-24.823 C254.161 +G01 X+18.387 Y-24.746 C251.207 +G01 X+18.145 Y-24.656 C248.252 +G01 X+17.912 Y-24.557 C245.362 +G01 X+17.634 Y-24.419 B6.388 C241.783 +G01 X+17.596 Y-24.401 B6.389 C241.352 +G01 X+17.565 Y-24.385 B6.392 C240.933 +G01 X+17.442 Y-24.314 B6.391 C239.297 +G01 X+17.199 Y-24.157 B6.388 C235.977 +G01 X+17.011 Y-24.024 C233.347 +G01 X+16.812 Y-23.869 C230.463 +G01 X+16.621 Y-23.703 B6.387 C227.576 +G01 X+16.464 Y-23.551 B6.386 C225.1 +G01 X+16.463 Y-23.415 Z-0.769 B6.264 C223.988 +G01 X+16.33 Y-23.274 Z-0.77 B6.266 C221.698 +G01 X+16.167 Y-23.08 C218.745 +G01 X+16.013 Y-22.879 C215.791 +G01 X+15.87 Y-22.67 C212.838 +G01 X+15.738 Y-22.454 C209.885 +G01 X+15.618 Y-22.231 C206.931 +G01 X+15.509 Y-22.003 C203.979 +G01 X+15.411 Y-21.769 C201.033 +G01 X+15.326 Y-21.53 C198.084 +G01 X+15.254 Y-21.288 C195.143 +G01 X+15.19 Y-21.022 Z-0.769 B6.265 C191.997 +G01 X+15.147 Y-20.793 Z-0.77 B6.266 C189.253 +G01 X+15.112 Y-20.542 C186.308 +G01 X+15.091 Y-20.289 C183.363 +G01 X+15.082 Y-20.036 B6.265 C180.418 +G01 X+15.087 Y-19.783 B6.266 C177.475 +G01 X+15.105 Y-19.531 C174.522 +G01 X+15.135 Y-19.279 C171.568 +G01 X+15.179 Y-19.03 C168.615 +G01 X+15.235 Y-18.783 C165.662 +G01 X+15.304 Y-18.539 C162.709 +G01 X+15.386 Y-18.299 C159.755 +G01 X+15.479 Y-18.064 C156.801 +G01 X+15.585 Y-17.834 C153.848 +G01 X+15.702 Y-17.61 C150.895 +G01 X+15.831 Y-17.391 C147.941 +G01 X+15.971 Y-17.18 C144.988 +G01 X+16.121 Y-16.977 C142.035 +G01 X+16.282 Y-16.781 C139.081 +G01 X+16.453 Y-16.594 C136.128 +G01 X+16.633 Y-16.416 C133.175 +G01 X+16.822 Y-16.247 C130.222 +G01 X+17.019 Y-16.089 C127.268 +G01 X+17.225 Y-15.94 C124.315 +G01 X+17.437 Y-15.803 C121.361 +G01 X+17.657 Y-15.676 C118.408 +G01 X+17.882 Y-15.562 C115.455 +G01 X+18.114 Y-15.458 C112.506 +G01 X+18.35 Y-15.367 C109.561 +G01 X+18.591 Y-15.289 C106.616 +G01 X+18.856 Y-15.218 Z-0.769 B6.265 C103.449 +G01 X+19.1 Y-15.166 C100.546 +G01 X+19.332 Y-15.128 Z-0.77 B6.266 C97.781 +G01 X+19.584 Y-15.1 C94.836 +G01 X+19.837 Y-15.085 C91.891 +G01 X+20.092 Y-15.083 B6.265 C88.933 +G01 X+20.343 Y-15.094 B6.266 C85.998 +G01 X+20.595 Y-15.118 C83.045 +G01 X+20.846 Y-15.156 C80.091 +G01 X+21.094 Y-15.206 C77.138 +G01 X+21.339 Y-15.268 C74.185 +G01 X+21.581 Y-15.343 C71.232 +G01 X+21.819 Y-15.431 C68.278 +G01 X+22.052 Y-15.531 C65.325 +G01 X+22.279 Y-15.642 C62.371 +G01 X+22.333 Y-15.672 Z-0.769 B6.264 C61.352 +G01 X+22.5 Y-15.765 Z-0.77 B6.266 C59.418 +G01 X+22.715 Y-15.9 C56.465 +G01 X+22.922 Y-16.045 C53.511 +G01 X+23.122 Y-16.201 C50.558 +G01 X+23.314 Y-16.366 C47.605 +G01 X+23.496 Y-16.542 C44.651 +G01 X+23.67 Y-16.726 C41.698 +G01 X+23.833 Y-16.92 C38.744 +G01 X+23.987 Y-17.121 C35.791 +G01 X+24.13 Y-17.33 C32.838 +G01 X+24.262 Y-17.546 C29.885 +G01 X+24.382 Y-17.769 C26.931 +G01 X+24.491 Y-17.997 C23.979 +G01 X+24.589 Y-18.231 C21.033 +G01 X+24.674 Y-18.47 C18.084 +G01 X+24.746 Y-18.712 C15.143 +G01 X+24.81 Y-18.978 Z-0.769 B6.265 C11.997 +G01 X+24.853 Y-19.207 Z-0.77 B6.266 C9.253 +G01 X+24.888 Y-19.458 C6.308 +G01 X+24.909 Y-19.71 C3.363 +G01 X+24.918 Y-19.964 B6.265 C0.418 +G01 X+24.913 Y-20.217 B6.266 C357.475 +G01 X+24.895 Y-20.469 C354.522 +G01 X+24.865 Y-20.721 C351.568 +G01 X+24.821 Y-20.97 C348.615 +G01 X+24.765 Y-21.217 C345.662 +G01 X+24.696 Y-21.461 C342.709 +G01 X+24.614 Y-21.701 C339.755 +G01 X+24.521 Y-21.936 C336.801 +G01 X+24.415 Y-22.166 C333.848 +G01 X+24.298 Y-22.39 C330.895 +G01 X+24.169 Y-22.608 C327.941 +G01 X+24.029 Y-22.82 C324.988 +G01 X+23.879 Y-23.023 C322.035 +G01 X+23.718 Y-23.219 C319.081 +G01 X+23.547 Y-23.406 C316.128 +G01 X+23.367 Y-23.584 C313.175 +G01 X+23.178 Y-23.753 C310.222 +G01 X+22.981 Y-23.911 C307.268 +G01 X+22.775 Y-24.06 C304.315 +G01 X+22.563 Y-24.197 C301.361 +G01 X+22.343 Y-24.323 C298.408 +G01 X+22.118 Y-24.438 C295.455 +G01 X+21.886 Y-24.541 C292.506 +G01 X+21.65 Y-24.632 C289.561 +G01 X+21.409 Y-24.711 C286.616 +G01 X+21.144 Y-24.782 Z-0.769 B6.265 C283.449 +G01 X+20.9 Y-24.834 C280.546 +G01 X+20.668 Y-24.872 Z-0.77 B6.266 C277.781 +G01 X+20.416 Y-24.9 C274.836 +G01 X+20.163 Y-24.915 C271.891 +G01 X+19.908 Y-24.917 B6.265 C268.933 +G01 X+19.657 Y-24.906 B6.266 C265.998 +G01 X+19.405 Y-24.881 C263.045 +G01 X+19.154 Y-24.844 C260.091 +G01 X+18.906 Y-24.794 C257.138 +G01 X+18.661 Y-24.732 C254.185 +G01 X+18.419 Y-24.656 C251.232 +G01 X+18.181 Y-24.569 C248.277 +G01 X+17.953 Y-24.471 C245.391 +G01 X+17.666 Y-24.33 C241.352 +G01 X+17.61 Y-24.302 B6.27 C240.924 +G01 X+17.492 Y-24.233 B6.269 C239.332 +G01 X+17.272 Y-24.093 B6.268 C236.282 +G01 X+17.068 Y-23.949 B6.267 C233.375 +G01 X+16.873 Y-23.796 B6.266 C230.491 +G01 X+16.687 Y-23.634 C227.609 +G01 X+16.53 Y-23.484 Z-0.769 B6.265 C225.106 +G01 Y-23.348 Z-0.759 B6.143 C223.967 +G01 X+16.402 Y-23.212 B6.145 C221.732 +G01 X+16.242 Y-23.022 C218.779 +G01 X+16.091 Y-22.825 B6.144 C215.827 +G01 X+15.951 Y-22.62 C212.875 +G01 X+15.821 Y-22.408 C209.923 +G01 X+15.703 Y-22.189 C206.97 +G01 X+15.596 Y-21.965 C204.018 +G01 X+15.501 Y-21.736 C201.066 +G01 X+15.417 Y-21.502 C198.113 +G01 X+15.346 Y-21.264 C195.161 +G01 X+15.287 Y-21.023 C192.21 +G01 X+15.241 Y-20.779 C189.266 +G01 X+15.207 Y-20.533 C186.32 +G01 X+15.186 Y-20.285 C183.378 +G01 X+15.177 Y-20.037 C180.433 +G01 X+15.182 Y-19.788 C177.481 +G01 X+15.199 Y-19.541 C174.542 +G01 X+15.229 Y-19.295 C171.589 +G01 X+15.272 Y-19.05 C168.637 +G01 X+15.327 Y-18.808 C165.684 +G01 X+15.395 Y-18.569 C162.732 +G01 X+15.474 Y-18.334 C159.78 +G01 X+15.566 Y-18.103 C156.827 +G01 X+15.67 Y-17.877 C153.875 +G01 X+15.785 Y-17.657 C150.922 +G01 X+15.911 Y-17.443 C147.97 +G01 X+16.048 Y-17.236 C145.018 +G01 X+16.195 Y-17.036 C142.065 +G01 X+16.353 Y-16.844 C139.113 +G01 X+16.52 Y-16.661 B6.145 C136.161 +G01 X+16.697 Y-16.486 C133.208 +G01 X+16.882 Y-16.321 C130.256 +G01 X+17.076 Y-16.165 C127.304 +G01 X+17.277 Y-16.02 B6.144 C124.351 +G01 X+17.485 Y-15.885 C121.399 +G01 X+17.701 Y-15.761 C118.447 +G01 X+17.922 Y-15.648 C115.494 +G01 X+18.149 Y-15.547 C112.542 +G01 X+18.38 Y-15.457 C109.589 +G01 X+18.616 Y-15.38 C106.637 +G01 X+18.856 Y-15.315 C103.684 +G01 X+19.099 Y-15.262 C100.738 +G01 X+19.346 Y-15.222 C97.772 +G01 X+19.591 Y-15.195 C94.849 +G01 X+19.839 Y-15.18 C91.906 +G01 X+20.087 Y-15.178 C88.961 +G01 X+20.335 Y-15.189 C86.018 +G01 X+20.582 Y-15.213 C83.066 +G01 X+20.828 Y-15.249 C80.113 +G01 X+21.071 Y-15.298 C77.161 +G01 X+21.312 Y-15.359 C74.208 +G01 X+21.549 Y-15.433 C71.256 +G01 X+21.782 Y-15.519 C68.304 +G01 X+22.011 Y-15.616 C65.351 +G01 X+22.234 Y-15.726 C62.399 +G01 X+22.451 Y-15.846 C59.446 +G01 X+22.661 Y-15.978 C56.494 +G01 X+22.865 Y-16.12 C53.541 +G01 X+23.061 Y-16.273 C50.589 +G01 X+23.248 Y-16.435 B6.145 C47.637 +G01 X+23.428 Y-16.607 C44.684 +G01 X+23.598 Y-16.788 C41.732 +G01 X+23.758 Y-16.978 C38.779 +G01 X+23.909 Y-17.175 C35.827 +G01 X+24.049 Y-17.38 C32.875 +G01 X+24.179 Y-17.592 C29.922 +G01 X+24.297 Y-17.81 B6.144 C26.97 +G01 X+24.404 Y-18.035 C24.018 +G01 X+24.499 Y-18.264 C21.066 +G01 X+24.583 Y-18.498 C18.113 +G01 X+24.654 Y-18.736 C15.161 +G01 X+24.713 Y-18.977 C12.21 +G01 X+24.759 Y-19.221 C9.266 +G01 X+24.793 Y-19.467 C6.32 +G01 X+24.814 Y-19.714 C3.378 +G01 X+24.823 Y-19.963 C0.433 +G01 X+24.818 Y-20.212 C357.481 +G01 X+24.801 Y-20.459 C354.542 +G01 X+24.771 Y-20.705 C351.589 +G01 X+24.728 Y-20.95 C348.637 +G01 X+24.673 Y-21.192 C345.684 +G01 X+24.605 Y-21.431 C342.732 +G01 X+24.526 Y-21.666 C339.78 +G01 X+24.434 Y-21.897 C336.827 +G01 X+24.33 Y-22.123 C333.875 +G01 X+24.215 Y-22.343 C330.922 +G01 X+24.089 Y-22.557 C327.97 +G01 X+23.952 Y-22.764 C325.018 +G01 X+23.805 Y-22.964 C322.065 +G01 X+23.647 Y-23.156 C319.113 +G01 X+23.48 Y-23.339 B6.145 C316.161 +G01 X+23.303 Y-23.514 C313.208 +G01 X+23.118 Y-23.679 C310.256 +G01 X+22.924 Y-23.835 C307.304 +G01 X+22.723 Y-23.98 B6.144 C304.351 +G01 X+22.515 Y-24.115 C301.399 +G01 X+22.299 Y-24.239 C298.447 +G01 X+22.078 Y-24.352 C295.494 +G01 X+21.851 Y-24.453 C292.542 +G01 X+21.62 Y-24.543 C289.589 +G01 X+21.384 Y-24.62 C286.637 +G01 X+21.144 Y-24.685 C283.684 +G01 X+20.901 Y-24.738 C280.738 +G01 X+20.654 Y-24.778 C277.772 +G01 X+20.409 Y-24.805 C274.849 +G01 X+20.161 Y-24.82 C271.906 +G01 X+19.913 Y-24.822 C268.961 +G01 X+19.665 Y-24.811 C266.018 +G01 X+19.418 Y-24.787 C263.066 +G01 X+19.172 Y-24.751 C260.113 +G01 X+18.929 Y-24.702 C257.161 +G01 X+18.688 Y-24.641 C254.208 +G01 X+18.451 Y-24.567 C251.256 +G01 X+18.218 Y-24.481 C248.303 +G01 X+17.995 Y-24.386 C245.42 +G01 X+17.655 Y-24.218 Z-0.76 B6.149 C240.915 +G01 X+17.542 Y-24.153 Z-0.759 B6.148 C239.367 +G01 X+17.326 Y-24.015 B6.146 C236.311 +G01 X+17.126 Y-23.873 B6.145 C233.403 +G01 X+16.935 Y-23.724 C230.518 +G01 X+16.751 Y-23.564 C227.635 +G01 X+16.597 Y-23.417 B6.143 C225.111 +G01 Y-23.28 Z-0.749 B6.021 C223.945 +G01 X+16.474 Y-23.149 B6.023 C221.766 +G01 X+16.317 Y-22.964 C218.814 +G01 X+16.169 Y-22.77 C215.863 +G01 X+16.031 Y-22.569 C212.912 +G01 X+15.904 Y-22.362 C209.96 +G01 X+15.788 Y-22.148 C207.009 +G01 X+15.683 Y-21.928 C204.057 +G01 X+15.59 Y-21.703 C201.106 +G01 X+15.508 Y-21.474 C198.154 +G01 X+15.438 Y-21.241 C195.203 +G01 X+15.38 Y-21.004 C192.252 +G01 X+15.335 Y-20.765 C189.3 +G01 X+15.301 Y-20.524 C186.349 +G01 X+15.281 Y-20.281 C183.397 +G01 X+15.272 Y-20.038 C180.448 +G01 X+15.277 Y-19.795 C177.505 +G01 X+15.294 Y-19.552 C174.562 +G01 X+15.323 Y-19.31 C171.61 +G01 X+15.365 Y-19.07 C168.658 +G01 X+15.419 Y-18.833 C165.707 +G01 X+15.485 Y-18.598 C162.755 +G01 X+15.563 Y-18.368 C159.804 +G01 X+15.653 Y-18.142 C156.853 +G01 X+15.754 Y-17.92 C153.901 +G01 X+15.867 Y-17.704 C150.95 +G01 X+15.991 Y-17.495 C147.999 +G01 X+16.125 Y-17.292 C145.047 +G01 X+16.269 Y-17.096 C142.096 +G01 X+16.424 Y-16.908 C139.144 +G01 X+16.588 Y-16.728 C136.193 +G01 X+16.761 Y-16.556 C133.242 +G01 X+16.942 Y-16.394 C130.29 +G01 X+17.132 Y-16.241 C127.338 +G01 X+17.329 Y-16.099 C124.387 +G01 X+17.534 Y-15.966 C121.436 +G01 X+17.745 Y-15.845 C118.484 +G01 X+17.961 Y-15.734 C115.533 +G01 X+18.184 Y-15.635 C112.582 +G01 X+18.411 Y-15.547 C109.63 +G01 X+18.642 Y-15.471 C106.679 +G01 X+18.877 Y-15.407 C103.727 +G01 X+19.115 Y-15.356 C100.776 +G01 X+19.355 Y-15.316 C97.824 +G01 X+19.597 Y-15.289 C94.873 +G01 X+19.84 Y-15.275 C91.922 +G01 X+20.084 Y-15.273 C88.977 +G01 X+20.329 Y-15.284 C86.015 +G01 X+20.569 Y-15.307 C83.086 +G01 X+20.81 Y-15.342 C80.134 +G01 X+21.049 Y-15.39 C77.183 +G01 X+21.285 Y-15.45 C74.232 +G01 X+21.517 Y-15.522 C71.28 +G01 X+21.746 Y-15.606 C68.329 +G01 X+21.97 Y-15.702 C65.377 +G01 X+22.188 Y-15.809 C62.426 +G01 X+22.401 Y-15.927 C59.474 +G01 X+22.608 Y-16.056 C56.523 +G01 X+22.807 Y-16.196 C53.571 +G01 X+22.999 Y-16.345 C50.62 +G01 X+23.183 Y-16.505 C47.669 +G01 X+23.359 Y-16.673 C44.717 +G01 X+23.526 Y-16.85 C41.766 +G01 X+23.683 Y-17.036 C38.814 +G01 X+23.831 Y-17.23 C35.863 +G01 X+23.969 Y-17.431 C32.912 +G01 X+24.096 Y-17.638 C29.96 +G01 X+24.212 Y-17.852 C27.009 +G01 X+24.317 Y-18.072 C24.057 +G01 X+24.41 Y-18.297 C21.106 +G01 X+24.492 Y-18.526 C18.155 +G01 X+24.562 Y-18.759 C15.203 +G01 X+24.62 Y-18.996 C12.252 +G01 X+24.665 Y-19.235 C9.3 +G01 X+24.699 Y-19.476 C6.349 +G01 X+24.719 Y-19.719 C3.398 +G01 X+24.728 Y-19.962 C0.448 +G01 X+24.723 Y-20.205 C357.505 +G01 X+24.706 Y-20.448 C354.562 +G01 X+24.677 Y-20.69 C351.61 +G01 X+24.635 Y-20.93 C348.658 +G01 X+24.581 Y-21.167 C345.707 +G01 X+24.515 Y-21.401 C342.755 +G01 X+24.437 Y-21.632 C339.804 +G01 X+24.347 Y-21.858 C336.853 +G01 X+24.246 Y-22.08 C333.901 +G01 X+24.133 Y-22.295 C330.95 +G01 X+24.009 Y-22.505 C327.999 +G01 X+23.875 Y-22.708 C325.047 +G01 X+23.731 Y-22.904 C322.096 +G01 X+23.576 Y-23.092 C319.144 +G01 X+23.412 Y-23.272 C316.193 +G01 X+23.239 Y-23.444 C313.242 +G01 X+23.058 Y-23.606 C310.29 +G01 X+22.868 Y-23.758 C307.338 +G01 X+22.671 Y-23.901 C304.387 +G01 X+22.466 Y-24.033 C301.436 +G01 X+22.255 Y-24.155 C298.484 +G01 X+22.039 Y-24.266 C295.533 +G01 X+21.816 Y-24.365 C292.582 +G01 X+21.589 Y-24.453 C289.63 +G01 X+21.358 Y-24.528 C286.679 +G01 X+21.123 Y-24.592 C283.727 +G01 X+20.885 Y-24.644 C280.776 +G01 X+20.645 Y-24.684 C277.824 +G01 X+20.403 Y-24.71 C274.873 +G01 X+20.16 Y-24.725 C271.922 +G01 X+19.916 Y-24.727 C268.977 +G01 X+19.671 Y-24.716 C266.015 +G01 X+19.431 Y-24.693 C263.086 +G01 X+19.19 Y-24.658 C260.134 +G01 X+18.951 Y-24.61 C257.183 +G01 X+18.715 Y-24.55 C254.232 +G01 X+18.483 Y-24.478 C251.28 +G01 X+18.254 Y-24.394 C248.328 +G01 X+18.036 Y-24.3 C245.449 +G01 X+17.7 Y-24.134 B6.027 C240.906 +G01 X+17.592 Y-24.072 C239.402 +G01 X+17.379 Y-23.936 B6.025 C236.341 +G01 X+17.183 Y-23.798 B6.024 C233.432 +G01 X+16.996 Y-23.651 C230.545 +G01 X+16.816 Y-23.495 B6.023 C227.661 +G01 X+16.664 Y-23.349 B6.022 C225.117 +G01 Y-23.213 Z-0.739 B5.902 C223.924 +G01 X+16.546 Y-23.087 B5.904 C221.785 +G01 X+16.391 Y-22.906 C218.834 +G01 X+16.247 Y-22.716 C215.884 +G01 X+16.112 Y-22.519 C212.933 +G01 X+15.987 Y-22.316 C209.983 +G01 X+15.873 Y-22.106 C207.032 +G01 X+15.77 Y-21.891 C204.082 +G01 X+15.679 Y-21.671 C201.132 +G01 X+15.598 Y-21.446 C198.181 +G01 X+15.53 Y-21.217 C195.231 +G01 X+15.473 Y-20.986 C192.281 +G01 X+15.428 Y-20.751 C189.33 +G01 X+15.396 Y-20.515 C186.38 +G01 X+15.375 Y-20.277 C183.429 +G01 X+15.367 Y-20.039 C180.479 +G01 X+15.371 Y-19.8 C177.528 +G01 X+15.388 Y-19.562 C174.578 +G01 X+15.416 Y-19.325 C171.619 +G01 X+15.457 Y-19.09 C168.665 +G01 X+15.51 Y-18.858 C165.715 +G01 X+15.575 Y-18.628 C162.764 +G01 X+15.651 Y-18.402 C159.814 +G01 X+15.739 Y-18.18 C156.864 +G01 X+15.839 Y-17.963 C153.913 +G01 X+15.949 Y-17.752 C150.963 +G01 X+16.07 Y-17.546 C148.012 +G01 X+16.202 Y-17.347 C145.062 +G01 X+16.343 Y-17.155 C142.111 +G01 X+16.495 Y-16.971 C139.161 +G01 X+16.655 Y-16.794 C136.21 +G01 X+16.825 Y-16.626 C133.26 +G01 X+17.002 Y-16.467 C130.31 +G01 X+17.188 Y-16.318 C127.359 +G01 X+17.382 Y-16.178 C124.409 +G01 X+17.582 Y-16.048 C121.458 +G01 X+17.788 Y-15.929 C118.508 +G01 X+18.001 Y-15.82 C115.557 +G01 X+18.219 Y-15.723 C112.607 +G01 X+18.441 Y-15.637 C109.656 +G01 X+18.668 Y-15.563 C106.706 +G01 X+18.898 Y-15.5 C103.756 +G01 X+19.131 Y-15.449 C100.805 +G01 X+19.367 Y-15.41 C97.855 +G01 X+19.604 Y-15.384 C94.904 +G01 X+19.842 Y-15.37 C91.954 +G01 X+20.08 Y-15.368 C89.003 +G01 X+20.321 Y-15.378 C86.029 +G01 X+20.556 Y-15.4 C83.1 +G01 X+20.792 Y-15.435 C80.141 +G01 X+21.028 Y-15.482 C77.171 +G01 X+21.258 Y-15.541 C74.24 +G01 X+21.485 Y-15.612 C71.289 +G01 X+21.709 Y-15.694 C68.339 +G01 X+21.929 Y-15.788 C65.388 +G01 X+22.143 Y-15.892 C62.438 +G01 X+22.352 Y-16.008 C59.487 +G01 X+22.554 Y-16.135 C56.537 +G01 X+22.75 Y-16.271 C53.587 +G01 X+22.938 Y-16.418 C50.636 +G01 X+23.118 Y-16.574 C47.686 +G01 X+23.291 Y-16.739 C44.735 +G01 X+23.454 Y-16.912 C41.785 +G01 X+23.609 Y-17.094 C38.834 +G01 X+23.753 Y-17.284 C35.884 +G01 X+23.888 Y-17.481 C32.934 +G01 X+24.013 Y-17.684 C29.983 +G01 X+24.127 Y-17.894 C27.032 +G01 X+24.23 Y-18.109 C24.082 +G01 X+24.321 Y-18.329 C21.132 +G01 X+24.402 Y-18.554 C18.181 +G01 X+24.47 Y-18.783 C15.231 +G01 X+24.527 Y-19.014 C12.281 +G01 X+24.572 Y-19.249 C9.33 +G01 X+24.604 Y-19.485 C6.38 +G01 X+24.625 Y-19.723 C3.429 +G01 X+24.633 Y-19.961 C0.479 +G01 X+24.629 Y-20.2 C357.528 +G01 X+24.612 Y-20.438 C354.578 +G01 X+24.584 Y-20.674 C351.619 +G01 X+24.543 Y-20.91 C348.665 +G01 X+24.49 Y-21.142 C345.715 +G01 X+24.425 Y-21.372 C342.764 +G01 X+24.349 Y-21.598 C339.814 +G01 X+24.261 Y-21.82 C336.864 +G01 X+24.161 Y-22.036 C333.913 +G01 X+24.051 Y-22.248 C330.963 +G01 X+23.93 Y-22.454 C328.012 +G01 X+23.798 Y-22.653 C325.062 +G01 X+23.657 Y-22.845 C322.111 +G01 X+23.506 Y-23.029 C319.161 +G01 X+23.345 Y-23.206 C316.21 +G01 X+23.175 Y-23.373 C313.26 +G01 X+22.998 Y-23.532 C310.31 +G01 X+22.812 Y-23.682 C307.359 +G01 X+22.618 Y-23.822 C304.409 +G01 X+22.418 Y-23.952 C301.458 +G01 X+22.212 Y-24.071 C298.508 +G01 X+21.999 Y-24.179 C295.557 +G01 X+21.781 Y-24.277 C292.607 +G01 X+21.559 Y-24.363 C289.656 +G01 X+21.332 Y-24.437 C286.706 +G01 X+21.102 Y-24.5 C283.756 +G01 X+20.869 Y-24.551 C280.805 +G01 X+20.633 Y-24.589 C277.855 +G01 X+20.396 Y-24.616 C274.904 +G01 X+20.158 Y-24.63 C271.954 +G01 X+19.92 Y-24.632 C269.003 +G01 X+19.679 Y-24.622 C266.029 +G01 X+19.444 Y-24.599 C263.1 +G01 X+19.208 Y-24.565 C260.141 +G01 X+18.972 Y-24.517 C257.171 +G01 X+18.743 Y-24.459 C254.24 +G01 X+18.515 Y-24.388 C251.289 +G01 X+18.291 Y-24.306 C248.337 +G01 X+18.077 Y-24.215 C245.462 +G01 X+17.745 Y-24.051 B5.909 C240.883 +G01 X+17.642 Y-23.991 B5.908 C239.422 +G01 X+17.433 Y-23.858 B5.906 C236.356 +G01 X+17.241 Y-23.723 B5.905 C233.445 +G01 X+17.057 Y-23.578 C230.557 +G01 X+16.881 Y-23.426 B5.904 C227.673 +G01 X+16.731 Y-23.282 B5.903 C225.108 +G01 Y-23.146 Z-0.729 B5.781 C223.893 +G01 X+16.618 Y-23.025 B5.783 C221.788 +G01 X+16.466 Y-22.847 C218.839 +G01 X+16.324 Y-22.662 C215.889 +G01 X+16.192 Y-22.469 C212.94 +G01 X+16.07 Y-22.27 C209.99 +G01 X+15.959 Y-22.064 C207.041 +G01 X+15.858 Y-21.853 C204.091 +G01 X+15.768 Y-21.638 C201.142 +G01 X+15.689 Y-21.418 C198.193 +G01 X+15.622 Y-21.194 C195.243 +G01 X+15.566 Y-20.967 B5.782 C192.294 +G01 X+15.522 Y-20.737 C189.344 +G01 X+15.49 Y-20.506 C186.395 +G01 X+15.47 Y-20.273 C183.445 +G01 X+15.462 Y-20.04 C180.495 +G01 X+15.466 Y-19.806 C177.546 +G01 X+15.482 Y-19.571 C174.578 +G01 X+15.51 Y-19.341 C171.643 +G01 X+15.55 Y-19.11 C168.683 +G01 X+15.602 Y-18.883 C165.722 +G01 X+15.665 Y-18.658 C162.76 +G01 X+15.74 Y-18.436 C159.808 +G01 X+15.826 Y-18.219 C156.859 +G01 X+15.923 Y-18.006 B5.783 C153.909 +G01 X+16.031 Y-17.799 C150.96 +G01 X+16.15 Y-17.598 C148.01 +G01 X+16.278 Y-17.403 C145.061 +G01 X+16.417 Y-17.215 C142.111 +G01 X+16.565 Y-17.034 C139.162 +G01 X+16.722 Y-16.861 C136.212 +G01 X+16.888 Y-16.696 C133.263 +G01 X+17.063 Y-16.541 C130.313 +G01 X+17.245 Y-16.394 C127.364 +G01 X+17.434 Y-16.257 C124.414 +G01 X+17.63 Y-16.13 C121.465 +G01 X+17.832 Y-16.013 C118.516 +G01 X+18.04 Y-15.907 C115.566 +G01 X+18.254 Y-15.811 C112.617 +G01 X+18.472 Y-15.727 C109.667 +G01 X+18.694 Y-15.654 C106.718 +G01 X+18.919 Y-15.592 C103.768 +G01 X+19.147 Y-15.543 B5.782 C100.819 +G01 X+19.378 Y-15.505 C97.869 +G01 X+19.61 Y-15.479 C94.92 +G01 X+19.844 Y-15.464 C91.97 +G01 X+20.077 Y-15.462 C89.021 +G01 X+20.311 Y-15.472 C86.071 +G01 X+20.543 Y-15.494 C83.124 +G01 X+20.775 Y-15.528 C80.163 +G01 X+21.004 Y-15.574 C77.202 +G01 X+21.23 Y-15.632 C74.241 +G01 X+21.454 Y-15.701 C71.283 +G01 X+21.673 Y-15.781 C68.333 +G01 X+21.886 Y-15.872 C65.408 +G01 X+22.098 Y-15.976 B5.783 C62.435 +G01 X+22.194 Y-16.029 B5.78 C61.352 +G01 X+22.302 Y-16.089 B5.783 C59.485 +G01 X+22.5 Y-16.213 C56.536 +G01 X+22.692 Y-16.346 C53.586 +G01 X+22.877 Y-16.49 C50.637 +G01 X+23.053 Y-16.643 C47.687 +G01 X+23.222 Y-16.804 C44.737 +G01 X+23.382 Y-16.974 C41.788 +G01 X+23.534 Y-17.153 C38.839 +G01 X+23.676 Y-17.338 C35.889 +G01 X+23.808 Y-17.531 C32.94 +G01 X+23.93 Y-17.73 C29.99 +G01 X+24.041 Y-17.936 C27.041 +G01 X+24.142 Y-18.146 C24.091 +G01 X+24.232 Y-18.362 C21.142 +G01 X+24.311 Y-18.582 C18.193 +G01 X+24.378 Y-18.806 C15.243 +G01 X+24.434 Y-19.033 B5.782 C12.294 +G01 X+24.478 Y-19.262 C9.344 +G01 X+24.51 Y-19.494 C6.395 +G01 X+24.53 Y-19.727 C3.445 +G01 X+24.538 Y-19.96 C0.495 +G01 X+24.534 Y-20.194 C357.546 +G01 X+24.518 Y-20.429 C354.578 +G01 X+24.49 Y-20.659 C351.643 +G01 X+24.45 Y-20.889 C348.683 +G01 X+24.398 Y-21.117 C345.722 +G01 X+24.335 Y-21.342 C342.76 +G01 X+24.26 Y-21.564 C339.808 +G01 X+24.174 Y-21.781 C336.859 +G01 X+24.077 Y-21.993 B5.783 C333.909 +G01 X+23.969 Y-22.201 C330.96 +G01 X+23.85 Y-22.402 C328.01 +G01 X+23.722 Y-22.597 C325.061 +G01 X+23.583 Y-22.785 C322.111 +G01 X+23.435 Y-22.966 C319.162 +G01 X+23.278 Y-23.139 C316.212 +G01 X+23.112 Y-23.303 C313.263 +G01 X+22.937 Y-23.459 C310.313 +G01 X+22.755 Y-23.606 C307.364 +G01 X+22.566 Y-23.743 C304.414 +G01 X+22.37 Y-23.87 C301.465 +G01 X+22.168 Y-23.987 C298.516 +G01 X+21.96 Y-24.093 C295.566 +G01 X+21.746 Y-24.189 C292.617 +G01 X+21.528 Y-24.273 C289.667 +G01 X+21.306 Y-24.346 C286.718 +G01 X+21.081 Y-24.407 C283.768 +G01 X+20.853 Y-24.457 B5.782 C280.819 +G01 X+20.622 Y-24.495 C277.869 +G01 X+20.39 Y-24.521 C274.92 +G01 X+20.156 Y-24.535 C271.97 +G01 X+19.923 Y-24.537 C269.021 +G01 X+19.689 Y-24.527 C266.071 +G01 X+19.457 Y-24.505 C263.124 +G01 X+19.225 Y-24.471 C260.163 +G01 X+18.996 Y-24.426 C257.202 +G01 X+18.77 Y-24.368 C254.241 +G01 X+18.546 Y-24.299 C251.283 +G01 X+18.327 Y-24.218 C248.332 +G01 X+18.118 Y-24.129 C245.461 +G01 X+17.908 Y-24.026 B5.781 C242.503 +G01 X+17.823 Y-23.984 Z-0.73 B5.785 C241.352 +G01 X+17.789 Y-23.967 B5.787 C240.844 +G01 X+17.692 Y-23.911 B5.786 C239.427 +G01 X+17.487 Y-23.78 B5.784 C236.356 +G01 X+17.298 Y-23.647 C233.443 +G01 X+17.118 Y-23.506 Z-0.729 B5.783 C230.555 +G01 X+16.945 Y-23.356 C227.669 +G01 X+16.798 Y-23.215 B5.782 C225.084 +G01 Y-23.078 Z-0.72 B5.659 C223.861 +G01 X+16.689 Y-22.963 B5.661 C221.791 +G01 X+16.541 Y-22.789 C218.843 +G01 X+16.402 Y-22.607 C215.894 +G01 X+16.273 Y-22.419 C212.945 +G01 X+16.153 Y-22.223 C209.997 +G01 X+16.044 Y-22.022 C207.049 +G01 X+15.945 Y-21.816 C204.1 +G01 X+15.857 Y-21.605 C201.152 +G01 X+15.78 Y-21.39 C198.203 +G01 X+15.714 Y-21.17 C195.255 +G01 X+15.659 Y-20.948 C192.306 +G01 X+15.616 Y-20.724 C189.358 +G01 X+15.585 Y-20.497 C186.409 +G01 X+15.565 Y-20.269 C183.461 +G01 X+15.557 Y-20.04 C180.512 +G01 X+15.561 Y-19.811 C177.564 +G01 X+15.576 Y-19.583 C174.615 +G01 X+15.604 Y-19.356 C171.668 +G01 X+15.643 Y-19.131 C168.708 +G01 X+15.693 Y-18.907 C165.748 +G01 X+15.755 Y-18.687 C162.789 +G01 X+15.828 Y-18.47 C159.829 +G01 X+15.913 Y-18.258 C156.869 +G01 X+16.008 Y-18.049 C153.909 +G01 X+16.113 Y-17.847 C150.956 +G01 X+16.23 Y-17.649 C147.999 +G01 X+16.355 Y-17.458 C145.06 +G01 X+16.491 Y-17.274 C142.111 +G01 X+16.636 Y-17.097 C139.163 +G01 X+16.79 Y-16.928 C136.214 +G01 X+16.952 Y-16.767 C133.265 +G01 X+17.123 Y-16.614 C130.317 +G01 X+17.301 Y-16.47 C127.368 +G01 X+17.486 Y-16.336 C124.42 +G01 X+17.678 Y-16.212 C121.472 +G01 X+17.876 Y-16.097 C118.523 +G01 X+18.08 Y-15.993 C115.575 +G01 X+18.289 Y-15.899 C112.626 +G01 X+18.502 Y-15.817 C109.677 +G01 X+18.719 Y-15.745 C106.729 +G01 X+18.94 Y-15.685 C103.78 +G01 X+19.164 Y-15.636 C100.832 +G01 X+19.39 Y-15.599 C97.883 +G01 X+19.617 Y-15.573 C94.935 +G01 X+19.845 Y-15.559 C91.986 +G01 X+20.074 Y-15.557 C89.038 +G01 X+20.303 Y-15.567 C86.09 +G01 X+20.532 Y-15.589 C83.126 +G01 X+20.757 Y-15.622 C80.188 +G01 X+20.981 Y-15.666 C77.228 +G01 X+21.203 Y-15.723 C74.268 +G01 X+21.422 Y-15.79 C71.308 +G01 X+21.637 Y-15.869 C68.349 +G01 X+21.847 Y-15.959 C65.389 +G01 X+22.058 Y-16.062 C62.354 +G01 X+22.157 Y-16.117 B5.659 C61.352 +G01 X+22.253 Y-16.17 B5.661 C59.482 +G01 X+22.447 Y-16.291 C56.534 +G01 X+22.635 Y-16.422 C53.585 +G01 X+22.815 Y-16.562 C50.637 +G01 X+22.989 Y-16.712 C47.688 +G01 X+23.154 Y-16.87 C44.74 +G01 X+23.311 Y-17.036 C41.792 +G01 X+23.459 Y-17.211 C38.842 +G01 X+23.598 Y-17.393 C35.894 +G01 X+23.727 Y-17.581 C32.946 +G01 X+23.847 Y-17.776 C29.997 +G01 X+23.956 Y-17.977 C27.049 +G01 X+24.055 Y-18.184 C24.1 +G01 X+24.143 Y-18.395 C21.152 +G01 X+24.22 Y-18.61 C18.203 +G01 X+24.286 Y-18.829 C15.255 +G01 X+24.341 Y-19.052 C12.306 +G01 X+24.384 Y-19.276 C9.358 +G01 X+24.415 Y-19.503 C6.409 +G01 X+24.435 Y-19.731 C3.461 +G01 X+24.443 Y-19.96 C0.512 +G01 X+24.439 Y-20.188 C357.564 +G01 X+24.424 Y-20.417 C354.615 +G01 X+24.396 Y-20.644 C351.668 +G01 X+24.357 Y-20.869 C348.708 +G01 X+24.307 Y-21.092 C345.748 +G01 X+24.245 Y-21.313 C342.789 +G01 X+24.172 Y-21.53 C339.829 +G01 X+24.087 Y-21.742 C336.869 +G01 X+23.992 Y-21.95 C333.909 +G01 X+23.887 Y-22.153 C330.956 +G01 X+23.77 Y-22.351 C327.999 +G01 X+23.645 Y-22.542 C325.06 +G01 X+23.509 Y-22.726 C322.111 +G01 X+23.364 Y-22.903 C319.163 +G01 X+23.21 Y-23.072 C316.214 +G01 X+23.048 Y-23.233 C313.265 +G01 X+22.877 Y-23.386 C310.317 +G01 X+22.699 Y-23.53 C307.368 +G01 X+22.514 Y-23.664 C304.42 +G01 X+22.322 Y-23.788 C301.472 +G01 X+22.124 Y-23.903 C298.523 +G01 X+21.92 Y-24.007 C295.575 +G01 X+21.711 Y-24.101 C292.626 +G01 X+21.498 Y-24.183 C289.677 +G01 X+21.281 Y-24.255 C286.729 +G01 X+21.06 Y-24.315 C283.78 +G01 X+20.836 Y-24.364 C280.832 +G01 X+20.61 Y-24.401 C277.883 +G01 X+20.383 Y-24.427 C274.935 +G01 X+20.155 Y-24.441 C271.986 +G01 X+19.926 Y-24.443 C269.038 +G01 X+19.697 Y-24.433 C266.09 +G01 X+19.468 Y-24.411 C263.126 +G01 X+19.243 Y-24.378 C260.188 +G01 X+19.019 Y-24.334 C257.228 +G01 X+18.797 Y-24.277 C254.268 +G01 X+18.578 Y-24.21 C251.308 +G01 X+18.363 Y-24.131 C248.347 +G01 X+18.159 Y-24.044 C245.488 +G01 X+17.942 Y-23.937 B5.66 C242.353 +G01 X+17.869 Y-23.901 B5.663 C241.352 +G01 X+17.834 Y-23.884 B5.666 C240.805 +G01 X+17.742 Y-23.83 B5.665 C239.432 +G01 X+17.54 Y-23.702 B5.663 C236.355 +G01 X+17.355 Y-23.572 B5.662 C233.441 +G01 X+17.179 Y-23.433 C230.551 +G01 X+17.01 Y-23.287 B5.661 C227.665 +G01 X+16.865 Y-23.148 B5.66 C225.07 +G01 Y-23.011 Z-0.71 B5.538 C223.83 +G01 X+16.761 Y-22.901 Z-0.711 B5.54 C221.794 +G01 X+16.616 Y-22.731 C218.846 +G01 X+16.48 Y-22.553 C215.898 +G01 X+16.353 Y-22.368 C212.951 +G01 X+16.236 Y-22.177 C210.004 +G01 X+16.129 Y-21.981 C207.056 +G01 X+16.032 Y-21.779 C204.108 +G01 X+15.946 Y-21.572 C201.161 +G01 X+15.87 Y-21.361 C198.213 +G01 X+15.806 Y-21.147 C195.266 +G01 X+15.752 Y-20.93 C192.318 +G01 X+15.71 Y-20.71 C189.371 +G01 X+15.679 Y-20.488 C186.424 +G01 X+15.66 Y-20.265 C183.476 +G01 X+15.652 Y-20.041 C180.528 +G01 X+15.655 Y-19.817 C177.581 +G01 X+15.671 Y-19.594 C174.633 +G01 X+15.697 Y-19.37 B5.539 C171.675 +G01 X+15.735 Y-19.151 C168.733 +G01 X+15.785 Y-18.932 B5.54 C165.774 +G01 X+15.845 Y-18.717 C162.816 +G01 X+15.917 Y-18.504 C159.857 +G01 X+15.999 Y-18.296 C156.899 +G01 X+16.092 Y-18.093 C153.94 +G01 X+16.196 Y-17.894 C150.982 +G01 X+16.309 Y-17.701 C148.023 +G01 X+16.438 Y-17.507 C144.946 +G01 X+16.568 Y-17.329 C142.043 +G01 X+16.708 Y-17.159 C139.14 +G01 X+16.857 Y-16.994 C136.215 +G01 X+17.016 Y-16.837 C133.267 +G01 X+17.183 Y-16.687 C130.32 +G01 X+17.357 Y-16.547 C127.373 +G01 X+17.539 Y-16.415 C124.425 +G01 X+17.726 Y-16.293 C121.478 +G01 X+17.92 Y-16.181 C118.53 +G01 X+18.12 Y-16.079 C115.582 +G01 X+18.324 Y-15.987 C112.635 +G01 X+18.533 Y-15.907 C109.687 +G01 X+18.745 Y-15.836 C106.74 +G01 X+18.961 Y-15.777 C103.792 +G01 X+19.18 Y-15.729 C100.845 +G01 X+19.401 Y-15.693 C97.897 +G01 X+19.624 Y-15.668 C94.95 +G01 X+19.847 Y-15.654 C92.002 +G01 X+20.071 Y-15.652 C89.054 +G01 X+20.295 Y-15.661 B5.539 C86.107 +G01 X+20.518 Y-15.682 C83.159 +G01 X+20.739 Y-15.715 C80.212 +G01 X+20.959 Y-15.759 C77.254 +G01 X+21.176 Y-15.813 B5.54 C74.295 +G01 X+21.39 Y-15.88 C71.337 +G01 X+21.6 Y-15.957 C68.378 +G01 X+21.806 Y-16.044 C65.42 +G01 X+22.023 Y-16.151 B5.539 C62.204 +G01 X+22.12 Y-16.205 Z-0.71 B5.538 C60.75 +G01 X+22.203 Y-16.251 Z-0.711 B5.54 C59.502 +G01 X+22.393 Y-16.369 C56.544 +G01 X+22.583 Y-16.502 C53.495 +G01 X+22.754 Y-16.635 C50.637 +G01 X+22.924 Y-16.781 C47.688 +G01 X+23.085 Y-16.936 C44.742 +G01 X+23.239 Y-17.099 C41.794 +G01 X+23.384 Y-17.269 C38.847 +G01 X+23.52 Y-17.447 C35.899 +G01 X+23.647 Y-17.632 C32.951 +G01 X+23.764 Y-17.823 C30.004 +G01 X+23.871 Y-18.019 C27.056 +G01 X+23.968 Y-18.221 C24.108 +G01 X+24.054 Y-18.428 C21.161 +G01 X+24.13 Y-18.638 C18.213 +G01 X+24.194 Y-18.853 C15.266 +G01 X+24.248 Y-19.07 C12.318 +G01 X+24.29 Y-19.29 C9.371 +G01 X+24.321 Y-19.512 C6.424 +G01 X+24.34 Y-19.735 C3.476 +G01 X+24.348 Y-19.959 C0.528 +G01 X+24.345 Y-20.183 C357.581 +G01 X+24.329 Y-20.406 C354.633 +G01 X+24.303 Y-20.63 B5.539 C351.675 +G01 X+24.265 Y-20.849 C348.733 +G01 X+24.215 Y-21.068 B5.54 C345.774 +G01 X+24.155 Y-21.283 C342.816 +G01 X+24.083 Y-21.495 C339.857 +G01 X+24.001 Y-21.704 C336.899 +G01 X+23.908 Y-21.907 C333.94 +G01 X+23.804 Y-22.106 C330.982 +G01 X+23.691 Y-22.299 C328.023 +G01 X+23.562 Y-22.493 C324.946 +G01 X+23.432 Y-22.671 C322.043 +G01 X+23.292 Y-22.841 C319.14 +G01 X+23.143 Y-23.005 C316.215 +G01 X+22.984 Y-23.163 C313.267 +G01 X+22.817 Y-23.313 C310.32 +G01 X+22.643 Y-23.453 C307.373 +G01 X+22.461 Y-23.585 C304.425 +G01 X+22.274 Y-23.707 C301.478 +G01 X+22.08 Y-23.819 C298.53 +G01 X+21.88 Y-23.921 C295.582 +G01 X+21.676 Y-24.012 C292.635 +G01 X+21.467 Y-24.093 C289.687 +G01 X+21.255 Y-24.163 C286.74 +G01 X+21.039 Y-24.223 C283.792 +G01 X+20.82 Y-24.27 C280.845 +G01 X+20.599 Y-24.307 C277.897 +G01 X+20.376 Y-24.332 C274.95 +G01 X+20.153 Y-24.346 C272.002 +G01 X+19.929 Y-24.348 C269.054 +G01 X+19.705 Y-24.338 B5.539 C266.107 +G01 X+19.482 Y-24.317 C263.159 +G01 X+19.261 Y-24.285 C260.212 +G01 X+19.041 Y-24.241 C257.254 +G01 X+18.824 Y-24.186 B5.54 C254.295 +G01 X+18.61 Y-24.12 C251.337 +G01 X+18.4 Y-24.043 C248.376 +G01 X+18.2 Y-23.958 B5.539 C245.522 +G01 X+17.977 Y-23.848 C242.204 +G01 X+17.914 Y-23.818 B5.542 C241.352 +G01 X+17.878 Y-23.8 B5.544 C240.759 +G01 X+17.792 Y-23.75 C239.448 +G01 X+17.594 Y-23.624 B5.542 C236.354 +G01 X+17.413 Y-23.496 B5.541 C233.438 +G01 X+17.24 Y-23.361 B5.54 C230.548 +G01 X+17.075 Y-23.217 C227.661 +G01 X+16.932 Y-23.081 B5.539 C225.077 +G01 Y-22.944 Z-0.701 B5.417 C223.799 +G01 X+16.829 Y-22.835 B5.418 C221.732 +G01 X+16.69 Y-22.671 C218.828 +G01 X+16.558 Y-22.498 C215.903 +G01 X+16.433 Y-22.318 C212.956 +G01 X+16.319 Y-22.131 B5.419 C210.01 +G01 X+16.214 Y-21.939 C207.063 +G01 X+16.119 Y-21.741 C204.116 +G01 X+16.035 Y-21.539 B5.418 C201.17 +G01 X+15.961 Y-21.333 C198.224 +G01 X+15.898 Y-21.123 C195.277 +G01 X+15.845 Y-20.911 C192.331 +G01 X+15.804 Y-20.696 C189.384 +G01 X+15.773 Y-20.479 C186.437 +G01 X+15.754 Y-20.26 C183.491 +G01 X+15.747 Y-20.042 C180.544 +G01 X+15.75 Y-19.823 C177.598 +G01 X+15.765 Y-19.604 C174.651 +G01 X+15.791 Y-19.387 C171.705 +G01 X+15.828 Y-19.171 C168.757 +G01 X+15.876 Y-18.957 C165.8 +G01 X+15.935 Y-18.746 C162.843 +G01 X+16.005 Y-18.539 C159.886 +G01 X+16.086 Y-18.335 C156.928 +G01 X+16.177 Y-18.136 C153.971 +G01 X+16.278 Y-17.941 C151.014 +G01 X+16.389 Y-17.752 C148.056 +G01 X+16.509 Y-17.569 C145.099 +G01 X+16.65 Y-17.379 C141.892 +G01 X+16.787 Y-17.213 C138.989 +G01 X+16.932 Y-17.054 C136.086 +G01 X+17.085 Y-16.902 C133.183 +G01 X+17.243 Y-16.761 C130.323 +G01 X+17.414 Y-16.623 C127.377 +G01 X+17.591 Y-16.494 B5.419 C124.43 +G01 X+17.775 Y-16.375 C121.483 +G01 X+17.964 Y-16.265 C118.537 +G01 X+18.159 Y-16.165 B5.418 C115.59 +G01 X+18.359 Y-16.076 C112.644 +G01 X+18.563 Y-15.996 B5.419 C109.697 +G01 X+18.771 Y-15.928 B5.418 C106.75 +G01 X+18.983 Y-15.87 C103.804 +G01 X+19.196 Y-15.823 C100.857 +G01 X+19.413 Y-15.787 C97.91 +G01 X+19.63 Y-15.762 C94.964 +G01 X+19.849 Y-15.749 C92.017 +G01 X+20.068 Y-15.747 C89.071 +G01 X+20.287 Y-15.756 C86.125 +G01 X+20.505 Y-15.776 C83.177 +G01 X+20.722 Y-15.808 C80.223 +G01 X+20.936 Y-15.851 C77.279 +G01 X+21.149 Y-15.904 C74.321 +G01 X+21.358 Y-15.969 C71.364 +G01 X+21.564 Y-16.044 C68.407 +G01 X+21.765 Y-16.13 C65.45 +G01 X+21.962 Y-16.226 C62.493 +G01 X+22.083 Y-16.293 B5.417 C60.601 +G01 X+22.154 Y-16.332 B5.418 C59.534 +G01 X+22.34 Y-16.448 C56.578 +G01 X+22.535 Y-16.585 C53.344 +G01 X+22.705 Y-16.718 C50.441 +G01 X+22.868 Y-16.859 C47.538 +G01 X+23.023 Y-17.008 C44.635 +G01 X+23.171 Y-17.165 C41.732 +G01 X+23.31 Y-17.329 C38.828 +G01 X+23.442 Y-17.501 C35.903 +G01 X+23.567 Y-17.682 C32.956 +G01 X+23.681 Y-17.869 B5.419 C30.01 +G01 X+23.786 Y-18.061 C27.063 +G01 X+23.881 Y-18.258 C24.116 +G01 X+23.965 Y-18.461 B5.418 C21.17 +G01 X+24.039 Y-18.667 C18.224 +G01 X+24.103 Y-18.876 C15.277 +G01 X+24.155 Y-19.089 C12.331 +G01 X+24.196 Y-19.304 C9.384 +G01 X+24.227 Y-19.521 C6.437 +G01 X+24.246 Y-19.739 C3.491 +G01 X+24.253 Y-19.958 C0.544 +G01 X+24.25 Y-20.177 C357.598 +G01 X+24.235 Y-20.396 C354.651 +G01 X+24.209 Y-20.613 C351.705 +G01 X+24.172 Y-20.829 C348.757 +G01 X+24.124 Y-21.043 C345.8 +G01 X+24.065 Y-21.254 C342.843 +G01 X+23.995 Y-21.461 C339.886 +G01 X+23.914 Y-21.665 C336.928 +G01 X+23.823 Y-21.864 C333.971 +G01 X+23.722 Y-22.059 C331.014 +G01 X+23.611 Y-22.248 C328.056 +G01 X+23.491 Y-22.43 C325.099 +G01 X+23.35 Y-22.621 C321.892 +G01 X+23.213 Y-22.787 C318.989 +G01 X+23.068 Y-22.946 C316.086 +G01 X+22.915 Y-23.098 C313.183 +G01 X+22.757 Y-23.239 C310.323 +G01 X+22.586 Y-23.377 C307.377 +G01 X+22.409 Y-23.506 B5.419 C304.43 +G01 X+22.225 Y-23.625 C301.483 +G01 X+22.036 Y-23.735 C298.537 +G01 X+21.841 Y-23.835 B5.418 C295.59 +G01 X+21.641 Y-23.924 C292.644 +G01 X+21.437 Y-24.003 B5.419 C289.697 +G01 X+21.229 Y-24.072 B5.418 C286.75 +G01 X+21.017 Y-24.13 C283.804 +G01 X+20.804 Y-24.177 C280.857 +G01 X+20.587 Y-24.213 C277.91 +G01 X+20.37 Y-24.237 C274.964 +G01 X+20.151 Y-24.251 C272.017 +G01 X+19.932 Y-24.253 C269.071 +G01 X+19.713 Y-24.244 C266.125 +G01 X+19.495 Y-24.223 C263.177 +G01 X+19.278 Y-24.192 C260.223 +G01 X+19.064 Y-24.149 C257.279 +G01 X+18.851 Y-24.095 C254.321 +G01 X+18.642 Y-24.031 C251.364 +G01 X+18.436 Y-23.956 C248.404 +G01 X+18.241 Y-23.873 C245.556 +G01 X+18.011 Y-23.76 C242.054 +G01 X+17.96 Y-23.734 Z-0.702 B5.42 C241.352 +G01 X+17.915 Y-23.712 B5.423 C240.608 +G01 X+17.842 Y-23.669 B5.422 C239.491 +G01 X+17.641 Y-23.541 B5.42 C236.25 +G01 X+17.464 Y-23.416 B5.419 C233.346 +G01 X+17.295 Y-23.283 C230.441 +G01 X+17.132 Y-23.141 Z-0.701 B5.418 C227.538 +G01 X+16.999 Y-23.014 C225.084 +G01 X+16.998 Y-22.877 Z-0.692 B5.295 C223.767 +G01 X+16.893 Y-22.763 Z-0.693 B5.297 C221.581 +G01 X+16.757 Y-22.603 C218.678 +G01 X+16.629 Y-22.435 C215.775 +G01 X+16.51 Y-22.261 C212.872 +G01 X+16.402 Y-22.085 C210.016 +G01 X+16.299 Y-21.897 C207.065 +G01 X+16.206 Y-21.704 C204.124 +G01 X+16.124 Y-21.506 C201.179 +G01 X+16.051 Y-21.305 C198.233 +G01 X+15.989 Y-21.1 C195.287 +G01 X+15.938 Y-20.892 C192.342 +G01 X+15.898 Y-20.682 C189.396 +G01 X+15.868 Y-20.47 C186.451 +G01 X+15.849 Y-20.256 C183.505 +G01 X+15.842 Y-20.042 C180.559 +G01 X+15.845 Y-19.828 C177.614 +G01 X+15.859 Y-19.614 C174.668 +G01 X+15.885 Y-19.402 C171.723 +G01 X+15.921 Y-19.19 C168.772 +G01 X+15.968 Y-18.982 C165.825 +G01 X+16.026 Y-18.776 C162.869 +G01 X+16.094 Y-18.573 C159.913 +G01 X+16.173 Y-18.373 C156.957 +G01 X+16.261 Y-18.179 C154.001 +G01 X+16.36 Y-17.988 C151.045 +G01 X+16.469 Y-17.804 C148.089 +G01 X+16.586 Y-17.625 C145.132 +G01 X+16.713 Y-17.452 C142.176 +G01 X+16.849 Y-17.286 C139.22 +G01 X+16.992 Y-17.128 C136.264 +G01 X+17.159 Y-16.964 C133.032 +G01 X+17.316 Y-16.824 C130.129 +G01 X+17.48 Y-16.692 C127.226 +G01 X+17.651 Y-16.568 C124.323 +G01 X+17.823 Y-16.457 C121.488 +G01 X+18.008 Y-16.349 C118.543 +G01 X+18.199 Y-16.252 C115.597 +G01 X+18.394 Y-16.164 C112.652 +G01 X+18.594 Y-16.086 C109.706 +G01 X+18.797 Y-16.019 C106.76 +G01 X+19.004 Y-15.962 C103.815 +G01 X+19.213 Y-15.916 C100.869 +G01 X+19.424 Y-15.881 C97.923 +G01 X+19.637 Y-15.857 C94.978 +G01 X+19.851 Y-15.844 C92.032 +G01 X+20.065 Y-15.842 C89.086 +G01 X+20.279 Y-15.851 C86.141 +G01 X+20.492 Y-15.87 C83.195 +G01 X+20.704 Y-15.901 C80.25 +G01 X+20.914 Y-15.943 C77.304 +G01 X+21.122 Y-15.995 C74.347 +G01 X+21.326 Y-16.058 C71.391 +G01 X+21.527 Y-16.132 C68.435 +G01 X+21.725 Y-16.216 C65.479 +G01 X+21.917 Y-16.31 C62.523 +G01 X+22.046 Y-16.381 Z-0.692 B5.296 C60.451 +G01 X+22.104 Y-16.413 Z-0.693 B5.297 C59.567 +G01 X+22.286 Y-16.526 C56.611 +G01 X+22.462 Y-16.648 C53.655 +G01 X+22.631 Y-16.78 C50.698 +G01 X+22.794 Y-16.919 C47.742 +G01 X+22.963 Y-17.083 C44.484 +G01 X+23.107 Y-17.236 C41.581 +G01 X+23.243 Y-17.397 C38.678 +G01 X+23.371 Y-17.565 C35.775 +G01 X+23.49 Y-17.739 C32.872 +G01 X+23.598 Y-17.915 C30.016 +G01 X+23.701 Y-18.103 C27.065 +G01 X+23.794 Y-18.296 C24.124 +G01 X+23.876 Y-18.493 C21.179 +G01 X+23.949 Y-18.695 C18.233 +G01 X+24.011 Y-18.9 C15.287 +G01 X+24.062 Y-19.108 C12.342 +G01 X+24.102 Y-19.318 C9.396 +G01 X+24.132 Y-19.53 C6.451 +G01 X+24.151 Y-19.744 C3.505 +G01 X+24.158 Y-19.958 C0.559 +G01 X+24.155 Y-20.172 C357.614 +G01 X+24.141 Y-20.385 C354.668 +G01 X+24.115 Y-20.598 C351.723 +G01 X+24.079 Y-20.81 C348.772 +G01 X+24.032 Y-21.018 C345.825 +G01 X+23.974 Y-21.224 C342.869 +G01 X+23.906 Y-21.427 C339.913 +G01 X+23.827 Y-21.626 C336.957 +G01 X+23.739 Y-21.821 C334.001 +G01 X+23.64 Y-22.011 C331.045 +G01 X+23.531 Y-22.196 C328.089 +G01 X+23.414 Y-22.375 C325.132 +G01 X+23.287 Y-22.548 C322.176 +G01 X+23.151 Y-22.713 C319.22 +G01 X+23.008 Y-22.872 C316.264 +G01 X+22.841 Y-23.036 C313.032 +G01 X+22.684 Y-23.176 C310.129 +G01 X+22.52 Y-23.308 C307.226 +G01 X+22.349 Y-23.431 C304.323 +G01 X+22.177 Y-23.543 C301.488 +G01 X+21.992 Y-23.651 C298.543 +G01 X+21.801 Y-23.748 C295.597 +G01 X+21.606 Y-23.836 C292.652 +G01 X+21.406 Y-23.914 C289.706 +G01 X+21.203 Y-23.981 C286.76 +G01 X+20.996 Y-24.037 C283.815 +G01 X+20.787 Y-24.083 C280.869 +G01 X+20.576 Y-24.119 C277.923 +G01 X+20.363 Y-24.143 C274.978 +G01 X+20.149 Y-24.156 C272.032 +G01 X+19.935 Y-24.158 C269.086 +G01 X+19.721 Y-24.149 C266.141 +G01 X+19.508 Y-24.129 C263.195 +G01 X+19.296 Y-24.099 C260.25 +G01 X+19.086 Y-24.057 C257.304 +G01 X+18.878 Y-24.004 C254.347 +G01 X+18.674 Y-23.941 C251.391 +G01 X+18.472 Y-23.868 C248.432 +G01 X+18.282 Y-23.787 C245.589 +G01 X+18.046 Y-23.671 C241.904 +G01 X+18.005 Y-23.651 B5.299 C241.352 +G01 X+17.952 Y-23.623 B5.301 C240.458 +G01 X+17.892 Y-23.588 C239.533 +G01 X+17.684 Y-23.455 B5.298 C236.099 +G01 X+17.512 Y-23.333 C233.195 +G01 X+17.347 Y-23.202 B5.297 C230.291 +G01 X+17.188 Y-23.064 C227.388 +G01 X+17.066 Y-22.946 B5.296 C225.09 +G01 X+17.065 Y-22.809 Z-0.684 B5.174 C223.736 +G01 X+16.976 Y-22.715 B5.176 C221.868 +G01 X+16.84 Y-22.555 C218.914 +G01 X+16.713 Y-22.389 C215.959 +G01 X+16.584 Y-22.2 B5.175 C212.721 +G01 X+16.477 Y-22.024 C209.818 +G01 X+16.379 Y-21.843 C206.915 +G01 X+16.294 Y-21.666 B5.176 C204.139 +G01 X+16.213 Y-21.473 C201.187 +G01 X+16.142 Y-21.277 C198.242 +G01 X+16.081 Y-21.076 C195.297 +G01 X+16.031 Y-20.873 C192.353 +G01 X+15.992 Y-20.668 C189.408 +G01 X+15.961 Y-20.438 B5.175 C186.191 +G01 X+15.944 Y-20.252 B5.176 C183.519 +G01 X+15.937 Y-20.043 C180.574 +G01 X+15.94 Y-19.834 C177.63 +G01 X+15.954 Y-19.625 C174.685 +G01 X+15.978 Y-19.417 B5.175 C171.74 +G01 X+16.014 Y-19.209 C168.771 +G01 X+16.06 Y-19.007 C165.85 +G01 X+16.116 Y-18.805 B5.176 C162.895 +G01 X+16.183 Y-18.607 C159.94 +G01 X+16.259 Y-18.412 C156.985 +G01 X+16.346 Y-18.221 C154.03 +G01 X+16.443 Y-18.036 C151.076 +G01 X+16.548 Y-17.855 C148.12 +G01 X+16.663 Y-17.68 C145.165 +G01 X+16.787 Y-17.512 C142.211 +G01 X+16.92 Y-17.35 C139.256 +G01 X+17.06 Y-17.195 C136.301 +G01 X+17.208 Y-17.047 C133.346 +G01 X+17.364 Y-16.907 C130.391 +G01 X+17.527 Y-16.776 C127.436 +G01 X+17.714 Y-16.641 B5.175 C124.172 +G01 X+17.887 Y-16.529 C121.269 +G01 X+18.066 Y-16.427 C118.366 +G01 X+18.249 Y-16.333 C115.463 +G01 X+18.429 Y-16.252 B5.176 C112.661 +G01 X+18.625 Y-16.176 C109.714 +G01 X+18.824 Y-16.11 C106.754 +G01 X+19.023 Y-16.055 C103.85 +G01 X+19.229 Y-16.01 C100.88 +G01 X+19.436 Y-15.976 C97.936 +G01 X+19.664 Y-15.951 B5.175 C94.739 +G01 X+19.853 Y-15.939 B5.176 C92.047 +G01 X+20.062 Y-15.937 C89.102 +G01 X+20.271 Y-15.945 C86.158 +G01 X+20.479 Y-15.965 C83.213 +G01 X+20.686 Y-15.995 B5.175 C80.268 +G01 X+20.892 Y-16.035 C77.32 +G01 X+21.095 Y-16.086 C74.372 +G01 X+21.295 Y-16.148 B5.176 C71.417 +G01 X+21.491 Y-16.22 C68.463 +G01 X+21.684 Y-16.301 C65.507 +G01 X+21.872 Y-16.393 C62.553 +G01 X+21.919 Y-16.419 B5.174 C61.753 +G01 X+22.055 Y-16.494 B5.176 C59.598 +G01 X+22.233 Y-16.605 C56.643 +G01 X+22.405 Y-16.724 C53.688 +G01 X+22.57 Y-16.852 C50.733 +G01 X+22.729 Y-16.989 C47.778 +G01 X+22.88 Y-17.133 C44.823 +G01 X+23.024 Y-17.285 C41.868 +G01 X+23.16 Y-17.444 C38.913 +G01 X+23.287 Y-17.611 C35.959 +G01 X+23.416 Y-17.8 B5.175 C32.721 +G01 X+23.523 Y-17.976 C29.818 +G01 X+23.621 Y-18.157 C26.915 +G01 X+23.706 Y-18.333 B5.176 C24.139 +G01 X+23.787 Y-18.526 C21.187 +G01 X+23.858 Y-18.723 C18.242 +G01 X+23.919 Y-18.924 C15.297 +G01 X+23.969 Y-19.127 C12.353 +G01 X+24.008 Y-19.332 C9.408 +G01 X+24.04 Y-19.562 B5.175 C6.191 +G01 X+24.056 Y-19.748 B5.176 C3.519 +G01 X+24.063 Y-19.957 C0.574 +G01 X+24.06 Y-20.166 C357.63 +G01 X+24.046 Y-20.375 C354.685 +G01 X+24.022 Y-20.583 B5.175 C351.74 +G01 X+23.986 Y-20.791 C348.771 +G01 X+23.94 Y-20.993 C345.85 +G01 X+23.884 Y-21.195 B5.176 C342.895 +G01 X+23.817 Y-21.393 C339.94 +G01 X+23.741 Y-21.588 C336.985 +G01 X+23.654 Y-21.778 C334.03 +G01 X+23.557 Y-21.964 C331.076 +G01 X+23.452 Y-22.145 C328.12 +G01 X+23.337 Y-22.319 C325.165 +G01 X+23.213 Y-22.488 C322.211 +G01 X+23.08 Y-22.65 C319.256 +G01 X+22.94 Y-22.805 C316.301 +G01 X+22.792 Y-22.953 C313.346 +G01 X+22.636 Y-23.093 C310.391 +G01 X+22.473 Y-23.224 C307.436 +G01 X+22.286 Y-23.359 B5.175 C304.172 +G01 X+22.113 Y-23.471 C301.269 +G01 X+21.934 Y-23.573 C298.366 +G01 X+21.751 Y-23.667 C295.463 +G01 X+21.571 Y-23.748 B5.176 C292.661 +G01 X+21.375 Y-23.824 C289.714 +G01 X+21.176 Y-23.89 C286.754 +G01 X+20.977 Y-23.944 C283.85 +G01 X+20.771 Y-23.99 C280.88 +G01 X+20.564 Y-24.024 C277.936 +G01 X+20.336 Y-24.049 B5.175 C274.739 +G01 X+20.147 Y-24.061 B5.176 C272.047 +G01 X+19.938 Y-24.063 C269.102 +G01 X+19.729 Y-24.055 C266.158 +G01 X+19.521 Y-24.035 C263.213 +G01 X+19.314 Y-24.005 B5.175 C260.268 +G01 X+19.108 Y-23.965 C257.32 +G01 X+18.905 Y-23.913 C254.372 +G01 X+18.705 Y-23.852 B5.176 C251.417 +G01 X+18.509 Y-23.78 C248.46 +G01 X+18.323 Y-23.701 B5.175 C245.623 +G01 X+18.08 Y-23.582 B5.176 C241.755 +G01 X+18.051 Y-23.568 B5.178 C241.352 +G01 X+17.989 Y-23.535 B5.18 C240.308 +G01 X+17.942 Y-23.508 C239.575 +G01 X+17.755 Y-23.389 B5.178 C236.427 +G01 X+17.585 Y-23.269 B5.177 C233.502 +G01 X+17.423 Y-23.143 B5.176 C230.612 +G01 X+17.269 Y-23.009 C227.726 +G01 X+17.133 Y-22.879 B5.175 C225.097 +G01 X+17.132 Y-22.742 Z-0.675 B5.053 C223.705 +G01 X+17.048 Y-22.652 B5.055 C221.907 +G01 X+16.915 Y-22.497 C218.953 +G01 X+16.791 Y-22.335 C215.999 +G01 X+16.675 Y-22.166 C213.045 +G01 X+16.568 Y-21.992 C210.092 +G01 X+16.47 Y-21.813 C207.138 +G01 X+16.381 Y-21.629 C204.184 +G01 X+16.302 Y-21.44 C201.23 +G01 X+16.233 Y-21.248 C198.277 +G01 X+16.173 Y-21.053 C195.323 +G01 X+16.124 Y-20.854 B5.054 C192.369 +G01 X+16.085 Y-20.654 C189.42 +G01 X+16.057 Y-20.451 C186.476 +G01 X+16.039 Y-20.248 C183.532 +G01 X+16.031 Y-20.043 C180.589 +G01 X+16.035 Y-19.839 C177.645 +G01 X+16.048 Y-19.635 C174.702 +G01 X+16.072 Y-19.432 C171.758 +G01 X+16.107 Y-19.231 C168.814 +G01 X+16.151 Y-19.031 C165.868 +G01 X+16.206 Y-18.834 C162.921 +G01 X+16.271 Y-18.641 C159.966 +G01 X+16.346 Y-18.45 C157.013 +G01 X+16.431 Y-18.264 C154.059 +G01 X+16.525 Y-18.083 C151.105 +G01 X+16.628 Y-17.907 C148.152 +G01 X+16.74 Y-17.736 C145.198 +G01 X+16.861 Y-17.571 C142.244 +G01 X+16.99 Y-17.413 B5.055 C139.29 +G01 X+17.128 Y-17.261 C136.337 +G01 X+17.272 Y-17.117 C133.383 +G01 X+17.424 Y-16.98 C130.429 +G01 X+17.583 Y-16.852 C127.476 +G01 X+17.749 Y-16.732 C124.522 +G01 X+17.92 Y-16.62 C121.569 +G01 X+18.097 Y-16.517 C118.614 +G01 X+18.278 Y-16.424 C115.661 +G01 X+18.465 Y-16.34 C112.707 +G01 X+18.655 Y-16.266 C109.754 +G01 X+18.849 Y-16.202 C106.8 +G01 X+19.046 Y-16.147 B5.054 C103.846 +G01 X+19.246 Y-16.103 C100.892 +G01 X+19.447 Y-16.07 C97.948 +G01 X+19.652 Y-16.047 C94.991 +G01 X+19.852 Y-16.034 C92.087 +G01 X+20.059 Y-16.032 C89.117 +G01 X+20.263 Y-16.04 C86.173 +G01 X+20.467 Y-16.059 C83.23 +G01 X+20.669 Y-16.088 C80.286 +G01 X+20.871 Y-16.128 C77.32 +G01 X+21.067 Y-16.177 C74.397 +G01 X+21.263 Y-16.237 C71.444 +G01 X+21.455 Y-16.307 C68.49 +G01 X+21.643 Y-16.387 C65.536 +G01 X+21.827 Y-16.477 C62.582 +G01 X+22.006 Y-16.575 C59.629 +G01 X+22.179 Y-16.683 C56.675 +G01 X+22.347 Y-16.8 C53.721 +G01 X+22.509 Y-16.925 B5.055 C50.768 +G01 X+22.664 Y-17.058 C47.814 +G01 X+22.812 Y-17.199 C44.86 +G01 X+22.952 Y-17.348 C41.907 +G01 X+23.085 Y-17.503 C38.953 +G01 X+23.209 Y-17.665 C35.999 +G01 X+23.325 Y-17.833 C33.045 +G01 X+23.432 Y-18.007 C30.092 +G01 X+23.53 Y-18.187 C27.138 +G01 X+23.619 Y-18.371 C24.184 +G01 X+23.698 Y-18.559 C21.23 +G01 X+23.767 Y-18.752 C18.277 +G01 X+23.827 Y-18.947 C15.323 +G01 X+23.876 Y-19.146 B5.054 C12.369 +G01 X+23.915 Y-19.346 C9.42 +G01 X+23.943 Y-19.549 C6.476 +G01 X+23.961 Y-19.752 C3.532 +G01 X+23.969 Y-19.957 C0.589 +G01 X+23.965 Y-20.161 C357.645 +G01 X+23.952 Y-20.365 C354.702 +G01 X+23.928 Y-20.568 C351.758 +G01 X+23.893 Y-20.769 C348.814 +G01 X+23.849 Y-20.969 C345.868 +G01 X+23.794 Y-21.165 C342.921 +G01 X+23.729 Y-21.359 C339.966 +G01 X+23.654 Y-21.549 C337.013 +G01 X+23.569 Y-21.735 C334.059 +G01 X+23.475 Y-21.917 C331.105 +G01 X+23.372 Y-22.093 C328.152 +G01 X+23.26 Y-22.264 C325.198 +G01 X+23.139 Y-22.429 C322.244 +G01 X+23.01 Y-22.587 B5.055 C319.29 +G01 X+22.872 Y-22.739 C316.337 +G01 X+22.728 Y-22.883 C313.383 +G01 X+22.576 Y-23.019 C310.429 +G01 X+22.417 Y-23.148 C307.476 +G01 X+22.251 Y-23.268 C304.522 +G01 X+22.08 Y-23.38 C301.569 +G01 X+21.903 Y-23.482 C298.614 +G01 X+21.722 Y-23.576 C295.661 +G01 X+21.535 Y-23.66 C292.707 +G01 X+21.345 Y-23.734 C289.754 +G01 X+21.151 Y-23.798 C286.8 +G01 X+20.954 Y-23.852 B5.054 C283.846 +G01 X+20.754 Y-23.896 C280.892 +G01 X+20.553 Y-23.93 C277.948 +G01 X+20.348 Y-23.953 C274.991 +G01 X+20.148 Y-23.966 C272.087 +G01 X+19.941 Y-23.968 C269.117 +G01 X+19.737 Y-23.96 C266.173 +G01 X+19.533 Y-23.941 C263.23 +G01 X+19.331 Y-23.912 C260.286 +G01 X+19.129 Y-23.872 C257.32 +G01 X+18.933 Y-23.822 C254.397 +G01 X+18.737 Y-23.762 C251.444 +G01 X+18.545 Y-23.692 C248.487 +G01 X+18.364 Y-23.616 C245.654 +G01 X+18.115 Y-23.493 B5.055 C241.352 +G01 X+18.096 Y-23.484 Z-0.676 B5.056 +G01 X+18.058 Y-23.465 B5.059 C240.697 +G01 X+17.992 Y-23.427 C239.617 +G01 X+17.808 Y-23.31 Z-0.675 B5.056 C236.462 +G01 X+17.642 Y-23.194 C233.534 +G01 X+17.485 Y-23.07 B5.055 C230.643 +G01 X+17.333 Y-22.939 C227.756 +G01 X+17.2 Y-22.812 B5.054 C225.104 +G01 X+17.199 Y-22.674 Z-0.667 B4.932 C223.674 +G01 X+17.119 Y-22.59 B4.933 C221.944 +G01 X+16.99 Y-22.438 C218.991 +G01 X+16.868 Y-22.28 C216.039 +G01 X+16.755 Y-22.116 C213.086 +G01 X+16.651 Y-21.946 C210.134 +G01 X+16.555 Y-21.771 C207.181 +G01 X+16.468 Y-21.591 C204.229 +G01 X+16.391 Y-21.407 C201.276 +G01 X+16.323 Y-21.22 C198.324 +G01 X+16.265 Y-21.029 C195.372 +G01 X+16.217 Y-20.835 C192.419 +G01 X+16.179 Y-20.639 C189.466 +G01 X+16.152 Y-20.442 C186.514 +G01 X+16.134 Y-20.243 C183.561 +G01 X+16.126 Y-20.044 C180.609 +G01 X+16.129 Y-19.844 C177.66 +G01 X+16.142 Y-19.645 C174.717 +G01 X+16.166 Y-19.447 C171.775 +G01 X+16.199 Y-19.251 C168.832 +G01 X+16.244 Y-19.054 C165.868 +G01 X+16.297 Y-18.864 C162.945 +G01 X+16.36 Y-18.675 C159.992 +G01 X+16.433 Y-18.489 C157.04 +G01 X+16.516 Y-18.307 C154.087 +G01 X+16.607 Y-18.13 C151.135 +G01 X+16.708 Y-17.958 C148.183 +G01 X+16.818 Y-17.791 C145.23 +G01 X+16.935 Y-17.63 C142.277 +G01 X+17.062 Y-17.476 C139.325 +G01 X+17.195 Y-17.328 C136.373 +G01 X+17.337 Y-17.187 C133.42 +G01 X+17.485 Y-17.054 C130.467 +G01 X+17.64 Y-16.928 C127.515 +G01 X+17.801 Y-16.811 C124.562 +G01 X+17.968 Y-16.702 C121.61 +G01 X+18.141 Y-16.601 C118.658 +G01 X+18.318 Y-16.51 C115.705 +G01 X+18.5 Y-16.428 C112.753 +G01 X+18.686 Y-16.356 C109.8 +G01 X+18.875 Y-16.293 C106.847 +G01 X+19.068 Y-16.24 C103.895 +G01 X+19.262 Y-16.197 C100.943 +G01 X+19.459 Y-16.164 C97.99 +G01 X+19.657 Y-16.141 C95.038 +G01 X+19.856 Y-16.129 C92.085 +G01 X+20.056 Y-16.127 C89.133 +G01 X+20.255 Y-16.135 C86.189 +G01 X+20.455 Y-16.153 C83.228 +G01 X+20.651 Y-16.181 C80.304 +G01 X+20.847 Y-16.22 C77.361 +G01 X+21.041 Y-16.269 C74.417 +G01 X+21.231 Y-16.327 C71.469 +G01 X+21.419 Y-16.395 C68.516 +G01 X+21.602 Y-16.473 C65.563 +G01 X+21.782 Y-16.56 C62.611 +G01 X+21.956 Y-16.657 C59.659 +G01 X+22.126 Y-16.762 C56.706 +G01 X+22.29 Y-16.875 C53.754 +G01 X+22.448 Y-16.997 C50.801 +G01 X+22.599 Y-17.127 C47.849 +G01 X+22.743 Y-17.265 C44.896 +G01 X+22.881 Y-17.41 C41.944 +G01 X+23.01 Y-17.562 C38.991 +G01 X+23.132 Y-17.72 C36.039 +G01 X+23.245 Y-17.884 C33.086 +G01 X+23.349 Y-18.054 C30.134 +G01 X+23.445 Y-18.229 C27.181 +G01 X+23.532 Y-18.409 C24.229 +G01 X+23.609 Y-18.592 C21.276 +G01 X+23.677 Y-18.78 C18.324 +G01 X+23.735 Y-18.971 C15.372 +G01 X+23.783 Y-19.165 C12.419 +G01 X+23.821 Y-19.36 C9.466 +G01 X+23.848 Y-19.558 C6.514 +G01 X+23.866 Y-19.757 C3.561 +G01 X+23.874 Y-19.956 C0.609 +G01 X+23.871 Y-20.155 C357.66 +G01 X+23.858 Y-20.355 C354.717 +G01 X+23.834 Y-20.553 C351.775 +G01 X+23.801 Y-20.749 C348.832 +G01 X+23.756 Y-20.946 C345.868 +G01 X+23.703 Y-21.136 C342.945 +G01 X+23.64 Y-21.325 C339.992 +G01 X+23.567 Y-21.511 C337.04 +G01 X+23.484 Y-21.692 C334.087 +G01 X+23.393 Y-21.87 C331.135 +G01 X+23.292 Y-22.042 C328.183 +G01 X+23.182 Y-22.209 C325.23 +G01 X+23.065 Y-22.369 C322.277 +G01 X+22.939 Y-22.524 C319.325 +G01 X+22.805 Y-22.672 C316.373 +G01 X+22.663 Y-22.813 C313.42 +G01 X+22.515 Y-22.946 C310.467 +G01 X+22.36 Y-23.072 C307.515 +G01 X+22.199 Y-23.189 C304.562 +G01 X+22.032 Y-23.298 C301.61 +G01 X+21.859 Y-23.398 C298.658 +G01 X+21.682 Y-23.49 C295.705 +G01 X+21.5 Y-23.572 C292.753 +G01 X+21.314 Y-23.644 C289.8 +G01 X+21.125 Y-23.707 C286.847 +G01 X+20.932 Y-23.76 C283.895 +G01 X+20.738 Y-23.803 C280.943 +G01 X+20.541 Y-23.836 C277.99 +G01 X+20.343 Y-23.859 C275.038 +G01 X+20.144 Y-23.871 C272.085 +G01 X+19.944 Y-23.873 C269.133 +G01 X+19.745 Y-23.865 C266.189 +G01 X+19.545 Y-23.847 C263.228 +G01 X+19.349 Y-23.819 C260.304 +G01 X+19.153 Y-23.78 C257.361 +G01 X+18.959 Y-23.731 C254.416 +G01 X+18.769 Y-23.673 C251.469 +G01 X+18.581 Y-23.605 C248.513 +G01 X+18.405 Y-23.53 C245.687 +G01 X+18.103 Y-23.382 B4.938 C240.683 +G01 X+18.042 Y-23.346 B4.937 C239.659 +G01 X+17.862 Y-23.232 B4.935 C236.496 +G01 X+17.7 Y-23.118 B4.934 C233.567 +G01 X+17.546 Y-22.998 C230.674 +G01 X+17.398 Y-22.87 C227.786 +G01 X+17.267 Y-22.745 B4.933 C225.11 +G01 X+17.266 Y-22.607 Z-0.659 B4.81 C223.643 +G01 X+17.191 Y-22.528 B4.812 C221.981 +G01 X+17.065 Y-22.38 C219.029 +G01 X+16.946 Y-22.225 C216.078 +G01 X+16.836 Y-22.065 C213.127 +G01 X+16.733 Y-21.9 C210.175 +G01 X+16.64 Y-21.729 C207.224 +G01 X+16.555 Y-21.554 C204.273 +G01 X+16.48 Y-21.374 C201.321 +G01 X+16.414 Y-21.191 C198.37 +G01 X+16.357 Y-21.005 C195.419 +G01 X+16.31 Y-20.816 C192.468 +G01 X+16.273 Y-20.625 C189.517 +G01 X+16.246 Y-20.433 C186.565 +G01 X+16.229 Y-20.239 C183.614 +G01 X+16.221 Y-20.044 C180.663 +G01 X+16.224 Y-19.85 C177.711 +G01 X+16.237 Y-19.656 C174.76 +G01 X+16.26 Y-19.462 C171.808 +G01 X+16.292 Y-19.27 C168.858 +G01 X+16.335 Y-19.081 C165.908 +G01 X+16.387 Y-18.893 C162.965 +G01 X+16.449 Y-18.709 C160.018 +G01 X+16.52 Y-18.527 C157.067 +G01 X+16.6 Y-18.35 C154.115 +G01 X+16.69 Y-18.177 C151.164 +G01 X+16.788 Y-18.009 C148.213 +G01 X+16.895 Y-17.847 C145.261 +G01 X+17.01 Y-17.69 C142.31 +G01 X+17.133 Y-17.539 C139.359 +G01 X+17.263 Y-17.394 C136.408 +G01 X+17.401 Y-17.257 C133.456 +G01 X+17.545 Y-17.127 C130.505 +G01 X+17.697 Y-17.004 C127.554 +G01 X+17.854 Y-16.89 C124.602 +G01 X+18.017 Y-16.783 C121.651 +G01 X+18.185 Y-16.686 C118.7 +G01 X+18.358 Y-16.596 C115.749 +G01 X+18.535 Y-16.516 C112.797 +G01 X+18.717 Y-16.446 C109.846 +G01 X+18.901 Y-16.384 C106.894 +G01 X+19.089 Y-16.333 C103.943 +G01 X+19.279 Y-16.291 C100.992 +G01 X+19.471 Y-16.258 C98.041 +G01 X+19.664 Y-16.236 C95.089 +G01 X+19.858 Y-16.224 C92.138 +G01 X+20.053 Y-16.221 C89.187 +G01 X+20.247 Y-16.229 C86.236 +G01 X+20.441 Y-16.247 C83.284 +G01 X+20.634 Y-16.275 C80.333 +G01 X+20.825 Y-16.312 C77.382 +G01 X+21.015 Y-16.36 C74.417 +G01 X+21.2 Y-16.417 C71.479 +G01 X+21.382 Y-16.483 C68.542 +G01 X+21.562 Y-16.559 C65.591 +G01 X+21.737 Y-16.644 C62.64 +G01 X+21.907 Y-16.738 C59.689 +G01 X+22.073 Y-16.84 C56.737 +G01 X+22.232 Y-16.951 C53.786 +G01 X+22.386 Y-17.07 C50.834 +G01 X+22.534 Y-17.197 C47.883 +G01 X+22.675 Y-17.331 C44.931 +G01 X+22.809 Y-17.472 C41.981 +G01 X+22.935 Y-17.62 C39.029 +G01 X+23.054 Y-17.774 C36.078 +G01 X+23.164 Y-17.935 C33.127 +G01 X+23.267 Y-18.1 C30.175 +G01 X+23.36 Y-18.271 C27.224 +G01 X+23.445 Y-18.446 C24.273 +G01 X+23.52 Y-18.626 C21.321 +G01 X+23.586 Y-18.809 C18.37 +G01 X+23.643 Y-18.995 C15.419 +G01 X+23.69 Y-19.184 C12.468 +G01 X+23.727 Y-19.375 C9.517 +G01 X+23.754 Y-19.567 C6.565 +G01 X+23.771 Y-19.761 C3.614 +G01 X+23.779 Y-19.956 C0.663 +G01 X+23.776 Y-20.15 C357.711 +G01 X+23.763 Y-20.344 C354.76 +G01 X+23.74 Y-20.538 C351.808 +G01 X+23.708 Y-20.729 C348.858 +G01 X+23.665 Y-20.919 C345.908 +G01 X+23.613 Y-21.107 C342.965 +G01 X+23.551 Y-21.291 C340.018 +G01 X+23.48 Y-21.472 C337.067 +G01 X+23.4 Y-21.65 C334.115 +G01 X+23.31 Y-21.822 C331.164 +G01 X+23.212 Y-21.99 C328.213 +G01 X+23.105 Y-22.153 C325.261 +G01 X+22.99 Y-22.31 C322.31 +G01 X+22.867 Y-22.461 C319.359 +G01 X+22.737 Y-22.605 C316.408 +G01 X+22.599 Y-22.743 C313.456 +G01 X+22.455 Y-22.873 C310.505 +G01 X+22.303 Y-22.996 C307.554 +G01 X+22.146 Y-23.11 C304.602 +G01 X+21.983 Y-23.217 C301.651 +G01 X+21.815 Y-23.314 C298.7 +G01 X+21.642 Y-23.403 C295.749 +G01 X+21.465 Y-23.483 C292.797 +G01 X+21.283 Y-23.554 C289.846 +G01 X+21.099 Y-23.616 C286.894 +G01 X+20.911 Y-23.667 C283.943 +G01 X+20.721 Y-23.709 C280.992 +G01 X+20.529 Y-23.742 C278.041 +G01 X+20.336 Y-23.764 C275.089 +G01 X+20.142 Y-23.776 C272.138 +G01 X+19.947 Y-23.778 C269.187 +G01 X+19.753 Y-23.771 C266.236 +G01 X+19.559 Y-23.753 C263.284 +G01 X+19.366 Y-23.725 C260.333 +G01 X+19.175 Y-23.688 C257.382 +G01 X+18.985 Y-23.64 C254.417 +G01 X+18.8 Y-23.583 C251.479 +G01 X+18.617 Y-23.517 C248.539 +G01 X+18.445 Y-23.444 B4.811 C245.707 +G01 X+18.147 Y-23.298 B4.817 C240.67 +G01 X+18.092 Y-23.266 B4.816 C239.701 +G01 X+17.915 Y-23.154 B4.814 C236.53 +G01 X+17.757 Y-23.042 B4.813 C233.598 +G01 X+17.607 Y-22.925 C230.704 +G01 X+17.462 Y-22.8 B4.812 C227.815 +G01 X+17.334 Y-22.677 C225.117 +G01 X+17.333 Y-22.54 Z-0.651 B4.691 C223.587 +G01 X+17.263 Y-22.465 B4.693 C221.992 +G01 X+17.139 Y-22.321 C219.042 +G01 X+17.024 Y-22.171 C216.092 +G01 X+16.916 Y-22.015 C213.142 +G01 X+16.816 Y-21.853 C210.192 +G01 X+16.725 Y-21.687 C207.241 +G01 X+16.643 Y-21.516 C204.291 +G01 X+16.569 Y-21.341 C201.341 +G01 X+16.504 Y-21.163 C198.391 +G01 X+16.449 Y-20.981 C195.441 +G01 X+16.403 Y-20.797 C192.492 +G01 X+16.367 Y-20.611 C189.541 +G01 X+16.34 Y-20.423 C186.591 +G01 X+16.323 Y-20.234 C183.641 +G01 X+16.316 Y-20.045 C180.691 +G01 X+16.319 Y-19.855 C177.741 +G01 X+16.331 Y-19.666 B4.692 C174.79 +G01 X+16.353 Y-19.477 B4.693 C171.84 +G01 X+16.385 Y-19.29 B4.692 C168.89 +G01 X+16.426 Y-19.105 C165.941 +G01 X+16.478 Y-18.921 C162.965 +G01 X+16.537 Y-18.742 C160.036 +G01 X+16.607 Y-18.566 C157.07 +G01 X+16.685 Y-18.393 C154.117 +G01 X+16.772 Y-18.225 C151.168 +G01 X+16.868 Y-18.061 C148.217 +G01 X+16.972 Y-17.902 B4.693 C145.267 +G01 X+17.084 Y-17.749 C142.317 +G01 X+17.203 Y-17.602 C139.367 +G01 X+17.331 Y-17.461 C136.417 +G01 X+17.465 Y-17.327 C133.467 +G01 X+17.606 Y-17.2 C130.517 +G01 X+17.753 Y-17.08 C127.567 +G01 X+17.906 Y-16.969 C124.616 +G01 X+18.065 Y-16.865 C121.667 +G01 X+18.229 Y-16.769 C118.716 +G01 X+18.398 Y-16.683 C115.766 +G01 X+18.571 Y-16.604 C112.816 +G01 X+18.747 Y-16.535 C109.866 +G01 X+18.927 Y-16.476 C106.917 +G01 X+19.11 Y-16.425 C103.966 +G01 X+19.296 Y-16.384 C101.016 +G01 X+19.483 Y-16.352 C98.066 +G01 X+19.671 Y-16.331 C95.116 +G01 X+19.86 Y-16.319 C92.166 +G01 X+20.05 Y-16.316 C89.216 +G01 X+20.24 Y-16.324 C86.266 +G01 X+20.429 Y-16.341 B4.692 C83.316 +G01 X+20.616 Y-16.368 C80.366 +G01 X+20.803 Y-16.404 C77.415 +G01 X+20.987 Y-16.451 C74.465 +G01 X+21.168 Y-16.506 C71.513 +G01 X+21.346 Y-16.571 C68.553 +G01 X+21.521 Y-16.645 C65.593 +G01 X+21.692 Y-16.728 C62.631 +G01 X+21.858 Y-16.819 C59.692 +G01 X+22.019 Y-16.919 B4.693 C56.742 +G01 X+22.175 Y-17.027 C53.792 +G01 X+22.325 Y-17.143 C50.842 +G01 X+22.469 Y-17.266 C47.892 +G01 X+22.607 Y-17.397 C44.942 +G01 X+22.737 Y-17.534 C41.992 +G01 X+22.861 Y-17.679 C39.042 +G01 X+22.976 Y-17.829 C36.092 +G01 X+23.084 Y-17.985 C33.142 +G01 X+23.184 Y-18.147 C30.192 +G01 X+23.275 Y-18.313 C27.241 +G01 X+23.358 Y-18.484 C24.292 +G01 X+23.431 Y-18.659 C21.341 +G01 X+23.496 Y-18.837 C18.392 +G01 X+23.551 Y-19.018 C15.441 +G01 X+23.597 Y-19.203 C12.492 +G01 X+23.633 Y-19.389 C9.541 +G01 X+23.66 Y-19.577 C6.591 +G01 X+23.677 Y-19.766 C3.641 +G01 X+23.684 Y-19.955 C0.691 +G01 X+23.681 Y-20.145 C357.741 +G01 X+23.669 Y-20.334 B4.692 C354.79 +G01 X+23.647 Y-20.523 B4.693 C351.84 +G01 X+23.615 Y-20.71 B4.692 C348.89 +G01 X+23.574 Y-20.895 C345.941 +G01 X+23.522 Y-21.079 C342.965 +G01 X+23.463 Y-21.257 C340.036 +G01 X+23.393 Y-21.434 C337.07 +G01 X+23.315 Y-21.607 C334.117 +G01 X+23.228 Y-21.775 C331.168 +G01 X+23.132 Y-21.939 C328.217 +G01 X+23.028 Y-22.098 B4.693 C325.267 +G01 X+22.916 Y-22.251 C322.317 +G01 X+22.797 Y-22.398 C319.367 +G01 X+22.669 Y-22.539 C316.417 +G01 X+22.535 Y-22.673 C313.467 +G01 X+22.394 Y-22.8 C310.517 +G01 X+22.247 Y-22.919 C307.567 +G01 X+22.094 Y-23.031 C304.616 +G01 X+21.935 Y-23.135 C301.667 +G01 X+21.771 Y-23.23 C298.716 +G01 X+21.602 Y-23.317 C295.766 +G01 X+21.429 Y-23.395 C292.816 +G01 X+21.253 Y-23.464 C289.866 +G01 X+21.073 Y-23.524 C286.917 +G01 X+20.89 Y-23.575 C283.966 +G01 X+20.704 Y-23.616 C281.016 +G01 X+20.517 Y-23.647 C278.066 +G01 X+20.329 Y-23.669 C275.116 +G01 X+20.14 Y-23.681 C272.166 +G01 X+19.95 Y-23.684 C269.216 +G01 X+19.76 Y-23.676 C266.266 +G01 X+19.571 Y-23.659 B4.692 C263.316 +G01 X+19.384 Y-23.632 C260.366 +G01 X+19.197 Y-23.595 C257.415 +G01 X+19.013 Y-23.549 C254.465 +G01 X+18.832 Y-23.494 C251.513 +G01 X+18.654 Y-23.429 C248.548 +G01 X+18.487 Y-23.359 C245.747 +G01 X+18.192 Y-23.214 B4.698 C240.633 +G01 X+18.142 Y-23.185 B4.697 C239.719 +G01 X+17.969 Y-23.075 B4.695 C236.54 +G01 X+17.814 Y-22.967 B4.694 C233.605 +G01 X+17.668 Y-22.852 B4.693 C230.71 +G01 X+17.527 Y-22.731 C227.819 +G01 X+17.401 Y-22.61 B4.692 C225.099 +G01 X+17.4 Y-22.473 Z-0.643 B4.57 C223.519 +G01 X+17.334 Y-22.403 B4.571 C221.991 +G01 X+17.214 Y-22.263 C219.042 +G01 X+17.101 Y-22.116 C216.093 +G01 X+16.996 Y-21.964 C213.144 +G01 X+16.899 Y-21.807 C210.195 +G01 X+16.81 Y-21.645 C207.247 +G01 X+16.73 Y-21.478 C204.297 +G01 X+16.658 Y-21.308 C201.349 +G01 X+16.595 Y-21.134 C198.4 +G01 X+16.541 Y-20.958 C195.451 +G01 X+16.496 Y-20.778 C192.502 +G01 X+16.461 Y-20.597 C189.553 +G01 X+16.435 Y-20.414 C186.604 +G01 X+16.418 Y-20.23 C183.655 +G01 X+16.411 Y-20.045 C180.707 +G01 X+16.414 Y-19.86 C177.758 +G01 X+16.426 Y-19.676 C174.809 +G01 X+16.447 Y-19.492 C171.86 +G01 X+16.478 Y-19.31 C168.911 +G01 X+16.518 Y-19.13 C165.962 +G01 X+16.567 Y-18.952 C163.013 +G01 X+16.626 Y-18.776 C160.062 +G01 X+16.693 Y-18.604 C157.104 +G01 X+16.77 Y-18.436 C154.14 +G01 X+16.854 Y-18.272 C151.176 +G01 X+16.948 Y-18.112 C148.212 +G01 X+17.049 Y-17.957 C145.26 +G01 X+17.158 Y-17.808 C142.312 +G01 X+17.275 Y-17.665 C139.363 +G01 X+17.398 Y-17.527 C136.414 +G01 X+17.529 Y-17.397 C133.465 +G01 X+17.666 Y-17.273 C130.517 +G01 X+17.81 Y-17.157 C127.567 +G01 X+17.959 Y-17.048 C124.619 +G01 X+18.114 Y-16.946 C121.67 +G01 X+18.273 Y-16.853 C118.721 +G01 X+18.438 Y-16.769 C115.772 +G01 X+18.606 Y-16.693 C112.823 +G01 X+18.778 Y-16.625 C109.874 +G01 X+18.954 Y-16.567 C106.925 +G01 X+19.132 Y-16.517 C103.977 +G01 X+19.312 Y-16.477 C101.027 +G01 X+19.494 Y-16.447 C98.079 +G01 X+19.678 Y-16.425 C95.13 +G01 X+19.862 Y-16.413 C92.181 +G01 X+20.047 Y-16.411 C89.232 +G01 X+20.232 Y-16.418 C86.284 +G01 X+20.416 Y-16.435 C83.334 +G01 X+20.599 Y-16.461 C80.386 +G01 X+20.78 Y-16.497 C77.436 +G01 X+20.96 Y-16.542 C74.488 +G01 X+21.138 Y-16.596 C71.513 +G01 X+21.31 Y-16.659 C68.586 +G01 X+21.48 Y-16.73 C65.622 +G01 X+21.655 Y-16.816 C62.481 +G01 X+21.735 Y-16.86 B4.57 C61.352 +G01 X+21.809 Y-16.9 B4.571 C59.694 +G01 X+21.966 Y-16.997 C56.735 +G01 X+22.119 Y-17.103 C53.772 +G01 X+22.264 Y-17.215 C50.837 +G01 X+22.405 Y-17.335 C47.888 +G01 X+22.539 Y-17.463 C44.94 +G01 X+22.666 Y-17.597 C41.99 +G01 X+22.786 Y-17.737 C39.042 +G01 X+22.899 Y-17.884 C36.093 +G01 X+23.004 Y-18.036 C33.144 +G01 X+23.101 Y-18.193 C30.196 +G01 X+23.19 Y-18.355 C27.247 +G01 X+23.27 Y-18.521 C24.297 +G01 X+23.342 Y-18.692 C21.349 +G01 X+23.405 Y-18.865 C18.4 +G01 X+23.459 Y-19.042 C15.451 +G01 X+23.504 Y-19.222 C12.502 +G01 X+23.539 Y-19.403 C9.553 +G01 X+23.565 Y-19.586 C6.604 +G01 X+23.582 Y-19.77 C3.655 +G01 X+23.589 Y-19.955 C0.707 +G01 X+23.586 Y-20.14 C357.758 +G01 X+23.574 Y-20.324 C354.809 +G01 X+23.553 Y-20.508 C351.86 +G01 X+23.522 Y-20.69 C348.911 +G01 X+23.482 Y-20.87 C345.962 +G01 X+23.433 Y-21.048 C343.013 +G01 X+23.374 Y-21.224 C340.062 +G01 X+23.307 Y-21.396 C337.104 +G01 X+23.23 Y-21.564 C334.14 +G01 X+23.146 Y-21.728 C331.176 +G01 X+23.052 Y-21.888 C328.212 +G01 X+22.951 Y-22.043 C325.26 +G01 X+22.842 Y-22.192 C322.312 +G01 X+22.726 Y-22.335 C319.363 +G01 X+22.602 Y-22.472 C316.414 +G01 X+22.471 Y-22.603 C313.465 +G01 X+22.334 Y-22.727 C310.517 +G01 X+22.19 Y-22.843 C307.567 +G01 X+22.041 Y-22.952 C304.619 +G01 X+21.886 Y-23.053 C301.67 +G01 X+21.727 Y-23.146 C298.721 +G01 X+21.562 Y-23.231 C295.772 +G01 X+21.394 Y-23.307 C292.823 +G01 X+21.222 Y-23.375 C289.874 +G01 X+21.046 Y-23.433 C286.925 +G01 X+20.868 Y-23.482 C283.977 +G01 X+20.688 Y-23.522 C281.027 +G01 X+20.506 Y-23.553 C278.079 +G01 X+20.322 Y-23.575 C275.13 +G01 X+20.138 Y-23.586 C272.181 +G01 X+19.953 Y-23.589 C269.232 +G01 X+19.768 Y-23.582 C266.284 +G01 X+19.584 Y-23.565 C263.334 +G01 X+19.401 Y-23.539 C260.385 +G01 X+19.22 Y-23.503 C257.436 +G01 X+19.04 Y-23.458 C254.488 +G01 X+18.862 Y-23.404 C251.513 +G01 X+18.69 Y-23.341 C248.581 +G01 X+18.528 Y-23.273 C245.778 +G01 X+18.345 Y-23.183 B4.57 C242.479 +G01 X+18.263 Y-23.144 Z-0.644 B4.574 C241.352 +G01 X+18.237 Y-23.131 B4.576 C240.582 +G01 X+18.192 Y-23.104 C239.745 +G01 X+18.022 Y-22.997 Z-0.643 B4.573 C236.536 +G01 X+17.872 Y-22.891 C233.599 +G01 X+17.729 Y-22.78 B4.572 C230.702 +G01 X+17.591 Y-22.661 C227.812 +G01 X+17.467 Y-22.543 B4.571 C225.069 +G01 Y-22.405 Z-0.636 B4.449 C223.451 +G01 X+17.406 Y-22.341 B4.45 C221.99 +G01 X+17.289 Y-22.204 C219.041 +G01 X+17.179 Y-22.061 C216.093 +G01 X+17.076 Y-21.914 C213.146 +G01 X+16.982 Y-21.76 C210.198 +G01 X+16.895 Y-21.603 C207.251 +G01 X+16.817 Y-21.441 C204.303 +G01 X+16.747 Y-21.275 C201.355 +G01 X+16.685 Y-21.106 C198.408 +G01 X+16.633 Y-20.934 C195.46 +G01 X+16.589 Y-20.759 C192.512 +G01 X+16.555 Y-20.583 C189.565 +G01 X+16.529 Y-20.404 C186.617 +G01 X+16.513 Y-20.225 C183.67 +G01 X+16.506 Y-20.045 C180.722 +G01 X+16.508 Y-19.866 C177.774 +G01 X+16.52 Y-19.686 C174.826 +G01 X+16.541 Y-19.507 C171.879 +G01 X+16.571 Y-19.33 C168.931 +G01 X+16.61 Y-19.154 C165.983 +G01 X+16.658 Y-18.981 C163.036 +G01 X+16.715 Y-18.808 C160.062 +G01 X+16.78 Y-18.643 C157.136 +G01 X+16.854 Y-18.479 C154.174 +G01 X+16.937 Y-18.319 C151.212 +G01 X+17.027 Y-18.163 C148.25 +G01 X+17.126 Y-18.013 C145.287 +G01 X+17.232 Y-17.867 C142.325 +G01 X+17.346 Y-17.728 C139.362 +G01 X+17.466 Y-17.594 C136.411 +G01 X+17.593 Y-17.467 C133.46 +G01 X+17.727 Y-17.346 C130.515 +G01 X+17.866 Y-17.233 C127.567 +G01 X+18.012 Y-17.127 C124.62 +G01 X+18.162 Y-17.028 C121.672 +G01 X+18.318 Y-16.937 C118.724 +G01 X+18.478 Y-16.855 C115.777 +G01 X+18.642 Y-16.781 C112.83 +G01 X+18.809 Y-16.715 C109.881 +G01 X+18.98 Y-16.658 C106.934 +G01 X+19.153 Y-16.61 C103.986 +G01 X+19.329 Y-16.571 C101.038 +G01 X+19.506 Y-16.541 C98.091 +G01 X+19.685 Y-16.52 C95.144 +G01 X+19.865 Y-16.508 C92.195 +G01 X+20.044 Y-16.506 C89.248 +G01 X+20.224 Y-16.513 C86.3 +G01 X+20.403 Y-16.529 C83.352 +G01 X+20.582 Y-16.554 C80.405 +G01 X+20.758 Y-16.589 C77.457 +G01 X+20.933 Y-16.633 C74.509 +G01 X+21.105 Y-16.685 C71.562 +G01 X+21.274 Y-16.746 C68.61 +G01 X+21.44 Y-16.816 C65.655 +G01 X+21.619 Y-16.904 C62.33 +G01 X+21.696 Y-16.946 B4.448 C61.352 +G01 X+21.76 Y-16.981 B4.45 C59.731 +G01 X+21.913 Y-17.076 C56.768 +G01 X+22.061 Y-17.178 C53.806 +G01 X+22.203 Y-17.288 C50.844 +G01 X+22.34 Y-17.405 C47.884 +G01 X+22.472 Y-17.53 C44.911 +G01 X+22.594 Y-17.659 C41.989 +G01 X+22.711 Y-17.796 C39.041 +G01 X+22.821 Y-17.938 C36.093 +G01 X+22.924 Y-18.086 C33.146 +G01 X+23.018 Y-18.239 C30.198 +G01 X+23.105 Y-18.397 C27.251 +G01 X+23.183 Y-18.559 C24.303 +G01 X+23.253 Y-18.725 C21.355 +G01 X+23.315 Y-18.894 C18.408 +G01 X+23.367 Y-19.066 C15.46 +G01 X+23.411 Y-19.241 C12.512 +G01 X+23.445 Y-19.417 C9.565 +G01 X+23.471 Y-19.595 C6.617 +G01 X+23.487 Y-19.775 C3.67 +G01 X+23.494 Y-19.954 C0.722 +G01 X+23.492 Y-20.134 C357.774 +G01 X+23.48 Y-20.314 C354.826 +G01 X+23.459 Y-20.493 C351.879 +G01 X+23.429 Y-20.67 C348.931 +G01 X+23.39 Y-20.846 C345.983 +G01 X+23.342 Y-21.019 C343.036 +G01 X+23.285 Y-21.191 C340.062 +G01 X+23.22 Y-21.357 C337.136 +G01 X+23.146 Y-21.521 C334.174 +G01 X+23.063 Y-21.681 C331.212 +G01 X+22.973 Y-21.837 C328.25 +G01 X+22.874 Y-21.987 C325.287 +G01 X+22.768 Y-22.133 C322.325 +G01 X+22.654 Y-22.272 C319.362 +G01 X+22.534 Y-22.406 C316.411 +G01 X+22.407 Y-22.533 C313.46 +G01 X+22.273 Y-22.654 C310.515 +G01 X+22.134 Y-22.767 C307.567 +G01 X+21.988 Y-22.873 C304.62 +G01 X+21.838 Y-22.972 C301.672 +G01 X+21.682 Y-23.063 C298.724 +G01 X+21.522 Y-23.145 C295.777 +G01 X+21.358 Y-23.219 C292.83 +G01 X+21.191 Y-23.285 C289.881 +G01 X+21.02 Y-23.342 C286.934 +G01 X+20.847 Y-23.39 C283.986 +G01 X+20.671 Y-23.429 C281.038 +G01 X+20.494 Y-23.459 C278.091 +G01 X+20.315 Y-23.48 C275.144 +G01 X+20.135 Y-23.492 C272.195 +G01 X+19.956 Y-23.494 C269.248 +G01 X+19.776 Y-23.487 C266.3 +G01 X+19.597 Y-23.471 C263.352 +G01 X+19.418 Y-23.445 C260.405 +G01 X+19.242 Y-23.411 C257.457 +G01 X+19.067 Y-23.367 C254.509 +G01 X+18.895 Y-23.315 C251.562 +G01 X+18.726 Y-23.253 C248.61 +G01 X+18.569 Y-23.187 C245.808 +G01 X+18.382 Y-23.096 B4.449 C242.33 +G01 X+18.302 Y-23.057 B4.453 C241.352 +G01 X+18.242 Y-23.024 B4.455 C239.8 +G01 X+18.075 Y-22.918 B4.452 C236.527 +G01 X+17.929 Y-22.815 B4.451 C233.592 +G01 X+17.789 Y-22.707 C230.695 +G01 X+17.656 Y-22.592 C227.803 +G01 X+17.534 Y-22.476 B4.45 C225.055 +G01 Y-22.338 Z-0.628 B4.328 C223.384 +G01 X+17.477 Y-22.278 Z-0.629 B4.329 C222.003 +G01 X+17.363 Y-22.145 C219.041 +G01 X+17.256 Y-22.007 C216.094 +G01 X+17.157 Y-21.863 C213.147 +G01 X+17.065 Y-21.714 C210.201 +G01 X+16.98 Y-21.561 C207.254 +G01 X+16.904 Y-21.403 C204.307 +G01 X+16.836 Y-21.242 C201.361 +G01 X+16.776 Y-21.077 C198.415 +G01 X+16.725 Y-20.91 C195.469 +G01 X+16.682 Y-20.74 C192.522 +G01 X+16.649 Y-20.568 C189.575 +G01 X+16.624 Y-20.395 C186.629 +G01 X+16.608 Y-20.221 C183.683 +G01 X+16.601 Y-20.046 C180.736 +G01 X+16.603 Y-19.871 C177.79 +G01 X+16.614 Y-19.696 C174.843 +G01 X+16.634 Y-19.522 C171.897 +G01 X+16.664 Y-19.35 C168.951 +G01 X+16.701 Y-19.179 C166.004 +G01 X+16.748 Y-19.01 C163.058 +G01 X+16.803 Y-18.844 C160.111 +G01 X+16.867 Y-18.68 C157.159 +G01 X+16.939 Y-18.521 C154.208 +G01 X+17.019 Y-18.366 C151.247 +G01 X+17.107 Y-18.214 C148.286 +G01 X+17.203 Y-18.068 C145.326 +G01 X+17.306 Y-17.926 C142.365 +G01 X+17.417 Y-17.791 C139.404 +G01 X+17.534 Y-17.66 C136.444 +G01 X+17.658 Y-17.537 C133.482 +G01 X+17.787 Y-17.419 C130.522 +G01 X+17.923 Y-17.309 C127.567 +G01 X+18.066 Y-17.205 C124.6 +G01 X+18.211 Y-17.11 C121.674 +G01 X+18.362 Y-17.021 C118.727 +G01 X+18.518 Y-16.941 C115.781 +G01 X+18.677 Y-16.869 C112.835 +G01 X+18.84 Y-16.805 C109.888 +G01 X+19.006 Y-16.749 C106.941 +G01 X+19.175 Y-16.702 C103.995 +G01 X+19.346 Y-16.664 C101.049 +G01 X+19.518 Y-16.635 C98.102 +G01 X+19.692 Y-16.615 C95.156 +G01 X+19.867 Y-16.603 C92.21 +G01 X+20.042 Y-16.601 C89.263 +G01 X+20.217 Y-16.608 C86.317 +G01 X+20.391 Y-16.623 C83.37 +G01 X+20.564 Y-16.648 C80.424 +G01 X+20.736 Y-16.681 C77.477 +G01 X+20.906 Y-16.724 C74.531 +G01 X+21.073 Y-16.775 C71.584 +G01 X+21.24 Y-16.835 C68.61 +G01 X+21.399 Y-16.902 C65.689 +G01 X+21.557 Y-16.978 C62.728 +G01 X+21.657 Y-17.033 Z-0.628 B4.327 C61.352 +G01 X+21.71 Y-17.062 Z-0.629 B4.329 C59.767 +G01 X+21.859 Y-17.154 C56.806 +G01 X+22.003 Y-17.254 C53.846 +G01 X+22.142 Y-17.361 C50.885 +G01 X+22.275 Y-17.474 C47.923 +G01 X+22.402 Y-17.595 C44.963 +G01 X+22.523 Y-17.722 C42.003 +G01 X+22.637 Y-17.855 C39.041 +G01 X+22.744 Y-17.993 C36.094 +G01 X+22.843 Y-18.137 C33.147 +G01 X+22.936 Y-18.286 C30.201 +G01 X+23.02 Y-18.439 C27.254 +G01 X+23.096 Y-18.597 C24.307 +G01 X+23.164 Y-18.758 C21.361 +G01 X+23.224 Y-18.923 C18.415 +G01 X+23.275 Y-19.09 C15.469 +G01 X+23.318 Y-19.26 C12.522 +G01 X+23.351 Y-19.432 C9.575 +G01 X+23.376 Y-19.605 C6.629 +G01 X+23.392 Y-19.779 C3.683 +G01 X+23.399 Y-19.954 C0.736 +G01 X+23.397 Y-20.129 C357.79 +G01 X+23.386 Y-20.304 C354.843 +G01 X+23.366 Y-20.478 C351.897 +G01 X+23.336 Y-20.65 C348.951 +G01 X+23.299 Y-20.821 C346.004 +G01 X+23.252 Y-20.99 C343.058 +G01 X+23.197 Y-21.156 C340.111 +G01 X+23.133 Y-21.319 C337.159 +G01 X+23.061 Y-21.479 C334.208 +G01 X+22.981 Y-21.634 C331.247 +G01 X+22.893 Y-21.785 C328.286 +G01 X+22.797 Y-21.932 C325.326 +G01 X+22.694 Y-22.073 C322.365 +G01 X+22.583 Y-22.209 C319.404 +G01 X+22.466 Y-22.339 C316.444 +G01 X+22.342 Y-22.463 C313.482 +G01 X+22.213 Y-22.581 C310.522 +G01 X+22.077 Y-22.691 C307.567 +G01 X+21.934 Y-22.795 C304.6 +G01 X+21.789 Y-22.89 C301.674 +G01 X+21.638 Y-22.979 C298.727 +G01 X+21.482 Y-23.059 C295.781 +G01 X+21.323 Y-23.131 C292.835 +G01 X+21.16 Y-23.195 C289.888 +G01 X+20.994 Y-23.251 C286.941 +G01 X+20.825 Y-23.297 C283.995 +G01 X+20.654 Y-23.336 C281.049 +G01 X+20.482 Y-23.365 C278.102 +G01 X+20.308 Y-23.385 C275.156 +G01 X+20.133 Y-23.397 C272.21 +G01 X+19.958 Y-23.399 C269.263 +G01 X+19.783 Y-23.392 C266.317 +G01 X+19.609 Y-23.377 C263.37 +G01 X+19.436 Y-23.352 C260.424 +G01 X+19.264 Y-23.319 C257.477 +G01 X+19.094 Y-23.276 C254.531 +G01 X+18.927 Y-23.225 C251.584 +G01 X+18.76 Y-23.165 C248.61 +G01 X+18.609 Y-23.102 C245.837 +G01 X+18.418 Y-23.008 B4.328 C242.18 +G01 X+18.37 Y-22.984 B4.331 C241.352 +G01 X+18.326 Y-22.963 B4.334 C240.481 +G01 X+18.291 Y-22.943 B4.333 C239.855 +G01 X+18.129 Y-22.84 B4.331 C236.551 +G01 X+17.986 Y-22.74 B4.33 C233.597 +G01 X+17.85 Y-22.634 C230.699 +G01 X+17.72 Y-22.522 B4.329 C227.81 +G01 X+17.601 Y-22.409 C225.064 +G01 Y-22.271 Z-0.621 B4.206 C223.341 +G01 X+17.549 Y-22.216 B4.208 C222.048 +G01 X+17.438 Y-22.087 C219.088 +G01 X+17.334 Y-21.952 C216.129 +G01 X+17.232 Y-21.804 B4.207 C212.999 +G01 X+17.144 Y-21.661 B4.208 C210.095 +G01 X+17.063 Y-21.515 C207.192 +G01 X+16.99 Y-21.364 C204.289 +G01 X+16.925 Y-21.209 C201.366 +G01 X+16.866 Y-21.049 C198.421 +G01 X+16.817 Y-20.886 C195.476 +G01 X+16.775 Y-20.721 C192.531 +G01 X+16.742 Y-20.554 C189.586 +G01 X+16.718 Y-20.386 C186.641 +G01 X+16.703 Y-20.216 C183.695 +G01 X+16.696 Y-20.046 C180.75 +G01 X+16.698 Y-19.876 C177.804 +G01 X+16.709 Y-19.706 C174.859 +G01 X+16.728 Y-19.537 C171.914 +G01 X+16.756 Y-19.369 C168.969 +G01 X+16.793 Y-19.203 C166.024 +G01 X+16.838 Y-19.039 C163.078 +G01 X+16.892 Y-18.878 C160.133 +G01 X+16.955 Y-18.717 B4.207 C157.159 +G01 X+17.024 Y-18.564 C154.241 +G01 X+17.102 Y-18.413 B4.208 C151.281 +G01 X+17.187 Y-18.266 C148.322 +G01 X+17.28 Y-18.123 C145.363 +G01 X+17.381 Y-17.986 C142.404 +G01 X+17.488 Y-17.853 C139.445 +G01 X+17.602 Y-17.727 C136.486 +G01 X+17.722 Y-17.606 C133.527 +G01 X+17.848 Y-17.492 C130.567 +G01 X+17.98 Y-17.385 C127.609 +G01 X+18.127 Y-17.278 B4.207 C124.45 +G01 X+18.267 Y-17.187 B4.208 C121.547 +G01 X+18.412 Y-17.103 C118.643 +G01 X+18.558 Y-17.027 C115.785 +G01 X+18.713 Y-16.957 C112.837 +G01 X+18.871 Y-16.894 C109.894 +G01 X+19.032 Y-16.84 C106.949 +G01 X+19.196 Y-16.795 C104.004 +G01 X+19.362 Y-16.758 C101.058 +G01 X+19.53 Y-16.729 C98.113 +G01 X+19.699 Y-16.709 C95.168 +G01 X+19.869 Y-16.698 C92.222 +G01 X+20.039 Y-16.696 C89.278 +G01 X+20.209 Y-16.702 C86.332 +G01 X+20.379 Y-16.717 C83.387 +G01 X+20.547 Y-16.741 C80.442 +G01 X+20.714 Y-16.774 C77.496 +G01 X+20.879 Y-16.815 C74.551 +G01 X+21.042 Y-16.864 C71.606 +G01 X+21.202 Y-16.922 C68.661 +G01 X+21.359 Y-16.988 B4.207 C65.707 +G01 X+21.512 Y-17.062 C62.761 +G01 X+21.618 Y-17.12 B4.206 C61.352 +G01 X+21.661 Y-17.144 B4.207 C59.802 +G01 X+21.806 Y-17.233 B4.208 C56.843 +G01 X+21.946 Y-17.33 C53.883 +G01 X+22.081 Y-17.433 C50.925 +G01 X+22.211 Y-17.544 C47.966 +G01 X+22.334 Y-17.661 C45.006 +G01 X+22.451 Y-17.784 C42.047 +G01 X+22.562 Y-17.913 C39.087 +G01 X+22.666 Y-18.048 C36.129 +G01 X+22.768 Y-18.196 B4.207 C32.999 +G01 X+22.856 Y-18.339 B4.208 C30.095 +G01 X+22.937 Y-18.485 C27.192 +G01 X+23.01 Y-18.636 C24.289 +G01 X+23.075 Y-18.791 C21.366 +G01 X+23.134 Y-18.951 C18.421 +G01 X+23.183 Y-19.114 C15.476 +G01 X+23.225 Y-19.279 C12.531 +G01 X+23.258 Y-19.446 C9.586 +G01 X+23.282 Y-19.614 C6.641 +G01 X+23.297 Y-19.784 C3.695 +G01 X+23.304 Y-19.954 C0.75 +G01 X+23.302 Y-20.124 C357.804 +G01 X+23.291 Y-20.294 C354.859 +G01 X+23.272 Y-20.463 C351.914 +G01 X+23.244 Y-20.631 C348.969 +G01 X+23.207 Y-20.797 C346.024 +G01 X+23.162 Y-20.961 C343.078 +G01 X+23.108 Y-21.122 C340.133 +G01 X+23.045 Y-21.283 B4.207 C337.159 +G01 X+22.976 Y-21.436 C334.241 +G01 X+22.898 Y-21.587 B4.208 C331.281 +G01 X+22.813 Y-21.734 C328.322 +G01 X+22.72 Y-21.877 C325.363 +G01 X+22.619 Y-22.014 C322.404 +G01 X+22.512 Y-22.146 C319.445 +G01 X+22.398 Y-22.273 C316.486 +G01 X+22.278 Y-22.393 C313.527 +G01 X+22.152 Y-22.507 C310.567 +G01 X+22.02 Y-22.615 C307.609 +G01 X+21.873 Y-22.722 B4.207 C304.45 +G01 X+21.733 Y-22.813 B4.208 C301.547 +G01 X+21.589 Y-22.897 C298.643 +G01 X+21.442 Y-22.973 C295.785 +G01 X+21.287 Y-23.043 C292.837 +G01 X+21.129 Y-23.105 C289.894 +G01 X+20.968 Y-23.159 C286.948 +G01 X+20.804 Y-23.205 C284.004 +G01 X+20.638 Y-23.242 C281.058 +G01 X+20.47 Y-23.271 C278.113 +G01 X+20.301 Y-23.291 C275.168 +G01 X+20.131 Y-23.302 C272.222 +G01 X+19.961 Y-23.304 C269.278 +G01 X+19.791 Y-23.298 C266.332 +G01 X+19.621 Y-23.283 C263.387 +G01 X+19.453 Y-23.259 C260.442 +G01 X+19.286 Y-23.226 C257.496 +G01 X+19.121 Y-23.185 C254.551 +G01 X+18.958 Y-23.136 C251.606 +G01 X+18.798 Y-23.078 C248.656 +G01 X+18.65 Y-23.016 B4.207 C245.867 +G01 X+18.455 Y-22.921 C242.031 +G01 X+18.415 Y-22.901 Z-0.622 B4.209 C241.353 +G01 X+18.37 Y-22.879 B4.213 C240.41 +G01 X+18.183 Y-22.762 B4.21 C236.61 +G01 X+18.043 Y-22.664 B4.209 C233.636 +G01 X+17.911 Y-22.561 C230.737 +G01 X+17.785 Y-22.452 B4.208 C227.846 +G01 X+17.668 Y-22.341 Z-0.621 C225.073 +G01 Y-22.204 Z-0.615 B4.085 C223.301 +G01 X+17.62 Y-22.153 B4.087 C222.093 +G01 X+17.512 Y-22.028 B4.086 C219.133 +G01 X+17.411 Y-21.897 B4.087 C216.176 +G01 X+17.307 Y-21.745 B4.086 C212.848 +G01 X+17.222 Y-21.606 C209.945 +G01 X+17.144 Y-21.463 C207.041 +G01 X+17.074 Y-21.317 C204.139 +G01 X+17.011 Y-21.167 C201.236 +G01 X+16.955 Y-21.014 C198.332 +G01 X+16.909 Y-20.862 B4.087 C195.483 +G01 X+16.868 Y-20.701 C192.526 +G01 X+16.836 Y-20.54 C189.596 +G01 X+16.813 Y-20.376 C186.651 +G01 X+16.798 Y-20.211 C183.707 +G01 X+16.791 Y-20.046 C180.763 +G01 X+16.793 Y-19.881 C177.819 +G01 X+16.803 Y-19.716 C174.875 +G01 X+16.822 Y-19.552 B4.086 C171.931 +G01 X+16.849 Y-19.389 C168.987 +G01 X+16.885 Y-19.227 C166.043 +G01 X+16.929 Y-19.068 C163.099 +G01 X+16.981 Y-18.911 C160.155 +G01 X+17.041 Y-18.757 C157.211 +G01 X+17.109 Y-18.606 C154.256 +G01 X+17.184 Y-18.46 C151.315 +G01 X+17.267 Y-18.317 C148.358 +G01 X+17.358 Y-18.178 C145.4 +G01 X+17.455 Y-18.045 C142.443 +G01 X+17.559 Y-17.916 C139.485 +G01 X+17.67 Y-17.793 C136.527 +G01 X+17.786 Y-17.676 B4.087 C133.569 +G01 X+17.909 Y-17.565 C130.612 +G01 X+18.037 Y-17.461 C127.655 +G01 X+18.188 Y-17.352 B4.086 C124.299 +G01 X+18.324 Y-17.263 C121.396 +G01 X+18.465 Y-17.182 C118.493 +G01 X+18.609 Y-17.108 C115.59 +G01 X+18.758 Y-17.041 C112.687 +G01 X+18.909 Y-16.982 C109.784 +G01 X+19.059 Y-16.932 B4.087 C106.955 +G01 X+19.218 Y-16.887 C104.012 +G01 X+19.379 Y-16.851 C101.067 +G01 X+19.542 Y-16.823 C98.124 +G01 X+19.706 Y-16.804 C95.179 +G01 X+19.871 Y-16.793 C92.235 +G01 X+20.036 Y-16.791 C89.291 +G01 X+20.201 Y-16.797 C86.347 +G01 X+20.366 Y-16.811 C83.403 +G01 X+20.53 Y-16.835 B4.086 C80.459 +G01 X+20.692 Y-16.866 C77.514 +G01 X+20.852 Y-16.906 C74.571 +G01 X+21.011 Y-16.954 C71.627 +G01 X+21.166 Y-17.01 C68.683 +G01 X+21.32 Y-17.075 C65.707 +G01 X+21.467 Y-17.146 C62.794 +G01 X+21.508 Y-17.168 B4.085 C61.88 +G01 X+21.612 Y-17.225 B4.086 C59.837 +G01 X+21.753 Y-17.312 C56.879 +G01 X+21.889 Y-17.405 C53.921 +G01 X+22.02 Y-17.506 C50.963 +G01 X+22.146 Y-17.613 C48.006 +G01 X+22.266 Y-17.727 C45.048 +G01 X+22.38 Y-17.847 C42.091 +G01 X+22.488 Y-17.972 C39.133 +G01 X+22.589 Y-18.103 B4.087 C36.176 +G01 X+22.693 Y-18.255 B4.086 C32.848 +G01 X+22.778 Y-18.394 C29.945 +G01 X+22.856 Y-18.537 C27.041 +G01 X+22.926 Y-18.683 C24.139 +G01 X+22.989 Y-18.833 C21.236 +G01 X+23.045 Y-18.986 C18.332 +G01 X+23.091 Y-19.138 B4.087 C15.483 +G01 X+23.132 Y-19.299 C12.526 +G01 X+23.164 Y-19.46 C9.596 +G01 X+23.187 Y-19.624 C6.651 +G01 X+23.202 Y-19.788 C3.707 +G01 X+23.209 Y-19.954 C0.763 +G01 X+23.207 Y-20.119 C357.819 +G01 X+23.197 Y-20.284 C354.875 +G01 X+23.178 Y-20.448 B4.086 C351.931 +G01 X+23.151 Y-20.611 C348.987 +G01 X+23.115 Y-20.772 C346.043 +G01 X+23.071 Y-20.932 C343.099 +G01 X+23.019 Y-21.089 C340.155 +G01 X+22.959 Y-21.243 C337.211 +G01 X+22.891 Y-21.394 C334.256 +G01 X+22.816 Y-21.54 C331.315 +G01 X+22.733 Y-21.683 C328.358 +G01 X+22.642 Y-21.822 C325.4 +G01 X+22.545 Y-21.955 C322.443 +G01 X+22.441 Y-22.084 C319.485 +G01 X+22.33 Y-22.206 C316.527 +G01 X+22.214 Y-22.324 B4.087 C313.569 +G01 X+22.091 Y-22.434 C310.612 +G01 X+21.963 Y-22.539 C307.655 +G01 X+21.812 Y-22.648 B4.086 C304.299 +G01 X+21.676 Y-22.736 C301.396 +G01 X+21.535 Y-22.818 C298.493 +G01 X+21.391 Y-22.892 C295.59 +G01 X+21.242 Y-22.959 C292.687 +G01 X+21.091 Y-23.018 C289.784 +G01 X+20.941 Y-23.068 B4.087 C286.955 +G01 X+20.782 Y-23.113 C284.012 +G01 X+20.621 Y-23.149 C281.067 +G01 X+20.458 Y-23.176 C278.124 +G01 X+20.294 Y-23.196 C275.179 +G01 X+20.129 Y-23.207 C272.235 +G01 X+19.964 Y-23.209 C269.291 +G01 X+19.799 Y-23.203 C266.347 +G01 X+19.634 Y-23.188 C263.403 +G01 X+19.47 Y-23.165 B4.086 C260.459 +G01 X+19.308 Y-23.134 C257.514 +G01 X+19.148 Y-23.094 C254.57 +G01 X+18.989 Y-23.046 C251.627 +G01 X+18.834 Y-22.99 C248.677 +G01 X+18.691 Y-22.93 C245.896 +G01 X+18.492 Y-22.833 B4.087 C241.881 +G01 X+18.461 Y-22.818 B4.088 C241.352 +G01 X+18.416 Y-22.796 B4.091 C240.382 +G01 X+18.237 Y-22.684 B4.089 C236.66 +G01 X+18.101 Y-22.588 B4.088 C233.675 +G01 X+17.972 Y-22.488 B4.087 C230.775 +G01 X+17.849 Y-22.383 C227.882 +G01 X+17.735 Y-22.274 C225.082 +G01 Y-22.136 Z-0.608 B3.964 C223.259 +G01 X+17.692 Y-22.091 B3.965 C222.136 +G01 X+17.587 Y-21.969 C219.178 +G01 X+17.489 Y-21.842 C216.222 +G01 X+17.397 Y-21.71 C213.266 +G01 X+17.313 Y-21.574 C210.31 +G01 X+17.235 Y-21.434 C207.354 +G01 X+17.157 Y-21.27 C203.987 +G01 X+17.096 Y-21.124 C201.085 +G01 X+17.043 Y-20.976 C198.182 +G01 X+16.997 Y-20.825 C195.279 +G01 X+16.959 Y-20.671 C192.375 +G01 X+16.929 Y-20.517 C189.472 +G01 X+16.907 Y-20.366 C186.662 +G01 X+16.892 Y-20.207 C183.719 +G01 X+16.886 Y-20.046 C180.763 +G01 X+16.888 Y-19.886 C177.833 +G01 X+16.9 Y-19.706 C174.578 +G01 X+16.916 Y-19.567 C171.947 +G01 X+16.942 Y-19.408 C169.004 +G01 X+16.977 Y-19.252 C166.062 +G01 X+17.019 Y-19.097 C163.119 +G01 X+17.07 Y-18.945 C160.176 +G01 X+17.128 Y-18.795 C157.233 +G01 X+17.194 Y-18.649 C154.29 +G01 X+17.267 Y-18.507 C151.348 +G01 X+17.347 Y-18.368 C148.392 +G01 X+17.435 Y-18.233 C145.436 +G01 X+17.529 Y-18.104 C142.48 +G01 X+17.63 Y-17.979 C139.524 +G01 X+17.737 Y-17.86 C136.568 +G01 X+17.851 Y-17.746 C133.612 +G01 X+17.969 Y-17.638 C130.656 +G01 X+18.094 Y-17.537 C127.7 +G01 X+18.223 Y-17.442 C124.744 +G01 X+18.357 Y-17.354 C121.788 +G01 X+18.495 Y-17.273 C118.832 +G01 X+18.659 Y-17.19 C115.439 +G01 X+18.803 Y-17.125 C112.536 +G01 X+18.95 Y-17.068 C109.633 +G01 X+19.1 Y-17.019 C106.73 +G01 X+19.252 Y-16.977 C103.827 +G01 X+19.406 Y-16.943 C100.924 +G01 X+19.554 Y-16.918 C98.14 +G01 X+19.713 Y-16.899 C95.19 +G01 X+19.873 Y-16.888 C92.247 +G01 X+20.034 Y-16.886 C89.304 +G01 X+20.194 Y-16.892 C86.361 +G01 X+20.354 Y-16.906 C83.419 +G01 X+20.513 Y-16.928 C80.476 +G01 X+20.67 Y-16.958 C77.532 +G01 X+20.826 Y-16.997 C74.59 +G01 X+20.979 Y-17.043 C71.647 +G01 X+21.13 Y-17.098 C68.704 +G01 X+21.278 Y-17.16 C65.762 +G01 X+21.423 Y-17.23 C62.804 +G01 X+21.471 Y-17.256 B3.964 C61.352 +G01 X+21.563 Y-17.306 B3.965 C59.87 +G01 X+21.7 Y-17.39 C56.914 +G01 X+21.832 Y-17.481 C53.958 +G01 X+21.959 Y-17.579 C51.002 +G01 X+22.081 Y-17.683 C48.046 +G01 X+22.198 Y-17.793 C45.09 +G01 X+22.308 Y-17.909 C42.134 +G01 X+22.413 Y-18.031 C39.178 +G01 X+22.511 Y-18.158 C36.222 +G01 X+22.603 Y-18.289 C33.266 +G01 X+22.687 Y-18.426 C30.31 +G01 X+22.765 Y-18.566 C27.354 +G01 X+22.843 Y-18.73 C23.988 +G01 X+22.904 Y-18.876 C21.085 +G01 X+22.957 Y-19.024 C18.182 +G01 X+23.003 Y-19.175 C15.279 +G01 X+23.041 Y-19.328 C12.375 +G01 X+23.071 Y-19.483 C9.472 +G01 X+23.093 Y-19.633 C6.662 +G01 X+23.108 Y-19.793 C3.719 +G01 X+23.114 Y-19.954 C0.763 +G01 X+23.112 Y-20.114 C357.833 +G01 X+23.1 Y-20.294 C354.578 +G01 X+23.084 Y-20.433 C351.947 +G01 X+23.058 Y-20.591 C349.004 +G01 X+23.023 Y-20.748 C346.062 +G01 X+22.981 Y-20.903 C343.119 +G01 X+22.93 Y-21.055 C340.176 +G01 X+22.872 Y-21.204 C337.233 +G01 X+22.806 Y-21.351 C334.29 +G01 X+22.733 Y-21.493 C331.348 +G01 X+22.653 Y-21.632 C328.392 +G01 X+22.565 Y-21.766 C325.436 +G01 X+22.471 Y-21.896 C322.48 +G01 X+22.37 Y-22.021 C319.524 +G01 X+22.263 Y-22.14 C316.568 +G01 X+22.149 Y-22.254 C313.612 +G01 X+22.031 Y-22.361 C310.656 +G01 X+21.906 Y-22.463 C307.7 +G01 X+21.777 Y-22.558 C304.744 +G01 X+21.643 Y-22.646 C301.788 +G01 X+21.505 Y-22.727 C298.832 +G01 X+21.341 Y-22.81 C295.439 +G01 X+21.197 Y-22.874 C292.536 +G01 X+21.05 Y-22.931 C289.633 +G01 X+20.9 Y-22.981 C286.73 +G01 X+20.748 Y-23.023 C283.827 +G01 X+20.594 Y-23.057 C280.924 +G01 X+20.446 Y-23.082 C278.14 +G01 X+20.287 Y-23.101 C275.19 +G01 X+20.127 Y-23.112 C272.247 +G01 X+19.966 Y-23.114 C269.304 +G01 X+19.806 Y-23.108 C266.361 +G01 X+19.646 Y-23.094 C263.419 +G01 X+19.487 Y-23.072 C260.476 +G01 X+19.33 Y-23.041 C257.532 +G01 X+19.174 Y-23.003 C254.59 +G01 X+19.021 Y-22.956 C251.647 +G01 X+18.87 Y-22.902 C248.699 +G01 X+18.732 Y-22.844 C245.924 +G01 X+18.529 Y-22.745 C241.352 +G01 X+18.506 Y-22.734 B3.967 +G01 X+18.458 Y-22.71 B3.97 C240.285 +G01 X+18.291 Y-22.605 B3.967 C236.709 +G01 X+18.158 Y-22.512 C233.713 +G01 X+18.033 Y-22.416 B3.966 C230.811 +G01 X+17.914 Y-22.313 C227.918 +G01 X+17.802 Y-22.207 B3.965 C225.09 +G01 Y-22.069 Z-0.601 B3.843 C223.219 +G01 X+17.763 Y-22.028 B3.844 C222.179 +G01 X+17.662 Y-21.91 C219.222 +G01 X+17.566 Y-21.787 C216.267 +G01 X+17.478 Y-21.66 C213.313 +G01 X+17.396 Y-21.528 C210.359 +G01 X+17.32 Y-21.391 C207.404 +G01 X+17.252 Y-21.252 C204.45 +G01 X+17.191 Y-21.109 C201.496 +G01 X+17.138 Y-20.962 C198.541 +G01 X+17.092 Y-20.814 C195.587 +G01 X+17.054 Y-20.663 C192.632 +G01 X+17.024 Y-20.511 C189.678 +G01 X+17.002 Y-20.357 C186.724 +G01 X+16.987 Y-20.202 C183.769 +G01 X+16.981 Y-20.047 C180.814 +G01 X+16.983 Y-19.891 C177.86 +G01 X+16.992 Y-19.736 C174.906 +G01 X+17.01 Y-19.581 C171.963 +G01 X+17.036 Y-19.427 C169. +G01 X+17.069 Y-19.276 C166.079 +G01 X+17.11 Y-19.126 C163.138 +G01 X+17.159 Y-18.979 C160.196 +G01 X+17.215 Y-18.834 C157.254 +G01 X+17.279 Y-18.692 C154.313 +G01 X+17.35 Y-18.552 C151.352 +G01 X+17.428 Y-18.419 C148.425 +G01 X+17.512 Y-18.289 C145.471 +G01 X+17.604 Y-18.163 C142.516 +G01 X+17.702 Y-18.042 C139.561 +G01 X+17.805 Y-17.926 C136.608 +G01 X+17.915 Y-17.816 C133.654 +G01 X+18.03 Y-17.712 C130.699 +G01 X+18.151 Y-17.613 C127.745 +G01 X+18.276 Y-17.521 C124.79 +G01 X+18.406 Y-17.436 C121.836 +G01 X+18.54 Y-17.357 C118.881 +G01 X+18.678 Y-17.285 C115.927 +G01 X+18.819 Y-17.221 C112.973 +G01 X+18.964 Y-17.164 C110.019 +G01 X+19.111 Y-17.114 C107.064 +G01 X+19.261 Y-17.072 C104.11 +G01 X+19.413 Y-17.038 C101.155 +G01 X+19.566 Y-17.012 C98.2 +G01 X+19.721 Y-16.993 C95.246 +G01 X+19.876 Y-16.983 C92.292 +G01 X+20.031 Y-16.981 C89.338 +G01 X+20.187 Y-16.986 C86.384 +G01 X+20.341 Y-17 C83.433 +G01 X+20.495 Y-17.021 C80.492 +G01 X+20.648 Y-17.051 C77.549 +G01 X+20.799 Y-17.088 C74.608 +G01 X+20.948 Y-17.133 C71.666 +G01 X+21.094 Y-17.186 C68.725 +G01 X+21.238 Y-17.246 C65.784 +G01 X+21.378 Y-17.313 C62.842 +G01 X+21.447 Y-17.351 B3.843 C61.352 +G01 X+21.514 Y-17.388 B3.844 C59.901 +G01 X+21.647 Y-17.469 C56.948 +G01 X+21.775 Y-17.557 C53.994 +G01 X+21.898 Y-17.652 C51.039 +G01 X+22.017 Y-17.753 C48.085 +G01 X+22.13 Y-17.859 C45.13 +G01 X+22.237 Y-17.972 C42.176 +G01 X+22.338 Y-18.09 C39.222 +G01 X+22.434 Y-18.213 C36.267 +G01 X+22.522 Y-18.34 C33.313 +G01 X+22.604 Y-18.472 C30.359 +G01 X+22.68 Y-18.608 C27.404 +G01 X+22.748 Y-18.748 C24.45 +G01 X+22.809 Y-18.891 C21.496 +G01 X+22.862 Y-19.037 C18.541 +G01 X+22.908 Y-19.186 C15.587 +G01 X+22.946 Y-19.337 C12.632 +G01 X+22.976 Y-19.489 C9.678 +G01 X+22.998 Y-19.643 C6.724 +G01 X+23.013 Y-19.798 C3.769 +G01 X+23.019 Y-19.953 C0.815 +G01 X+23.017 Y-20.109 C357.86 +G01 X+23.008 Y-20.264 C354.906 +G01 X+22.99 Y-20.418 C351.963 +G01 X+22.964 Y-20.573 C349. +G01 X+22.931 Y-20.724 C346.079 +G01 X+22.89 Y-20.874 C343.138 +G01 X+22.841 Y-21.021 C340.196 +G01 X+22.785 Y-21.166 C337.254 +G01 X+22.721 Y-21.308 C334.313 +G01 X+22.65 Y-21.447 C331.352 +G01 X+22.572 Y-21.581 C328.425 +G01 X+22.488 Y-21.711 C325.471 +G01 X+22.396 Y-21.837 C322.516 +G01 X+22.298 Y-21.958 C319.561 +G01 X+22.195 Y-22.074 C316.608 +G01 X+22.085 Y-22.184 C313.654 +G01 X+21.97 Y-22.288 C310.699 +G01 X+21.849 Y-22.387 C307.745 +G01 X+21.724 Y-22.479 C304.79 +G01 X+21.594 Y-22.564 C301.836 +G01 X+21.46 Y-22.643 C298.881 +G01 X+21.322 Y-22.715 C295.927 +G01 X+21.181 Y-22.779 C292.973 +G01 X+21.036 Y-22.836 C290.019 +G01 X+20.889 Y-22.886 C287.064 +G01 X+20.739 Y-22.928 C284.11 +G01 X+20.587 Y-22.962 C281.155 +G01 X+20.434 Y-22.988 C278.2 +G01 X+20.279 Y-23.006 C275.246 +G01 X+20.124 Y-23.017 C272.292 +G01 X+19.969 Y-23.019 C269.338 +G01 X+19.813 Y-23.014 C266.384 +G01 X+19.659 Y-23 C263.433 +G01 X+19.505 Y-22.978 C260.492 +G01 X+19.352 Y-22.949 C257.549 +G01 X+19.201 Y-22.912 C254.608 +G01 X+19.052 Y-22.867 C251.667 +G01 X+18.905 Y-22.814 C248.719 +G01 X+18.772 Y-22.758 C245.935 +G01 X+18.565 Y-22.657 B3.845 C241.352 +G01 X+18.552 Y-22.651 Z-0.602 B3.846 +G01 X+18.508 Y-22.629 B3.849 C240.36 +G01 X+18.345 Y-22.527 B3.846 C236.757 +G01 X+18.215 Y-22.437 Z-0.601 C233.761 +G01 X+18.094 Y-22.343 B3.845 C230.847 +G01 X+17.978 Y-22.243 C227.952 +G01 X+17.869 Y-22.139 B3.844 C225.1 +G01 Y-22.002 Z-0.595 B3.722 C223.178 +G01 X+17.835 Y-21.965 B3.723 C222.221 +G01 X+17.736 Y-21.851 C219.265 +G01 X+17.644 Y-21.732 C216.312 +G01 X+17.558 Y-21.609 C213.359 +G01 X+17.478 Y-21.481 C210.406 +G01 X+17.405 Y-21.349 C207.453 +G01 X+17.339 Y-21.214 C204.5 +G01 X+17.28 Y-21.075 C201.548 +G01 X+17.229 Y-20.934 C198.595 +G01 X+17.184 Y-20.79 C195.642 +G01 X+17.147 Y-20.644 C192.689 +G01 X+17.118 Y-20.496 C189.737 +G01 X+17.096 Y-20.347 C186.784 +G01 X+17.082 Y-20.197 C183.831 +G01 X+17.076 Y-20.047 C180.879 +G01 X+17.077 Y-19.896 C177.926 +G01 X+17.087 Y-19.746 C174.973 +G01 X+17.104 Y-19.596 C172.021 +G01 X+17.128 Y-19.448 C169.067 +G01 X+17.16 Y-19.3 C166.114 +G01 X+17.2 Y-19.155 C163.162 +G01 X+17.247 Y-19.012 C160.215 +G01 X+17.302 Y-18.872 C157.275 +G01 X+17.364 Y-18.734 C154.333 +G01 X+17.432 Y-18.6 C151.394 +G01 X+17.508 Y-18.47 C148.449 +G01 X+17.59 Y-18.344 C145.505 +G01 X+17.678 Y-18.222 C142.552 +G01 X+17.773 Y-18.105 C139.599 +G01 X+17.873 Y-17.993 C136.646 +G01 X+17.98 Y-17.886 C133.693 +G01 X+18.091 Y-17.785 C130.741 +G01 X+18.208 Y-17.689 C127.788 +G01 X+18.329 Y-17.6 C124.835 +G01 X+18.455 Y-17.517 C121.883 +G01 X+18.585 Y-17.441 C118.929 +G01 X+18.718 Y-17.371 C115.977 +G01 X+18.855 Y-17.309 C113.024 +G01 X+18.995 Y-17.254 C110.071 +G01 X+19.138 Y-17.205 C107.119 +G01 X+19.283 Y-17.165 C104.166 +G01 X+19.43 Y-17.132 C101.213 +G01 X+19.578 Y-17.106 C98.26 +G01 X+19.728 Y-17.088 C95.308 +G01 X+19.878 Y-17.078 C92.355 +G01 X+20.029 Y-17.076 C89.402 +G01 X+20.179 Y-17.081 C86.45 +G01 X+20.329 Y-17.094 C83.496 +G01 X+20.478 Y-17.115 C80.544 +G01 X+20.626 Y-17.143 C77.591 +G01 X+20.772 Y-17.179 C74.639 +G01 X+20.917 Y-17.223 C71.685 +G01 X+21.058 Y-17.274 C68.745 +G01 X+21.198 Y-17.332 C65.785 +G01 X+21.333 Y-17.397 C62.864 +G01 X+21.467 Y-17.47 C59.901 +G01 X+21.594 Y-17.548 C56.981 +G01 X+21.718 Y-17.633 C54.029 +G01 X+21.837 Y-17.725 C51.076 +G01 X+21.952 Y-17.822 C48.123 +G01 X+22.061 Y-17.926 C45.17 +G01 X+22.166 Y-18.035 C42.217 +G01 X+22.264 Y-18.149 C39.264 +G01 X+22.356 Y-18.268 C36.312 +G01 X+22.442 Y-18.391 C33.359 +G01 X+22.522 Y-18.519 C30.406 +G01 X+22.595 Y-18.651 C27.453 +G01 X+22.661 Y-18.786 C24.5 +G01 X+22.72 Y-18.925 C21.548 +G01 X+22.771 Y-19.066 C18.595 +G01 X+22.816 Y-19.21 C15.642 +G01 X+22.853 Y-19.356 C12.689 +G01 X+22.882 Y-19.504 C9.737 +G01 X+22.904 Y-19.653 C6.784 +G01 X+22.918 Y-19.803 C3.831 +G01 X+22.924 Y-19.953 C0.879 +G01 X+22.923 Y-20.104 C357.926 +G01 X+22.913 Y-20.254 C354.973 +G01 X+22.896 Y-20.404 C352.021 +G01 X+22.872 Y-20.552 C349.067 +G01 X+22.84 Y-20.699 C346.114 +G01 X+22.8 Y-20.845 C343.162 +G01 X+22.753 Y-20.988 C340.215 +G01 X+22.698 Y-21.128 C337.275 +G01 X+22.636 Y-21.266 C334.333 +G01 X+22.568 Y-21.4 C331.394 +G01 X+22.492 Y-21.53 C328.449 +G01 X+22.41 Y-21.656 C325.505 +G01 X+22.322 Y-21.778 C322.552 +G01 X+22.227 Y-21.895 C319.599 +G01 X+22.127 Y-22.007 C316.646 +G01 X+22.02 Y-22.114 C313.693 +G01 X+21.909 Y-22.215 C310.741 +G01 X+21.792 Y-22.311 C307.788 +G01 X+21.671 Y-22.4 C304.835 +G01 X+21.545 Y-22.483 C301.883 +G01 X+21.415 Y-22.559 C298.929 +G01 X+21.282 Y-22.628 C295.977 +G01 X+21.145 Y-22.691 C293.024 +G01 X+21.005 Y-22.746 C290.071 +G01 X+20.862 Y-22.794 C287.119 +G01 X+20.717 Y-22.835 C284.166 +G01 X+20.57 Y-22.868 C281.213 +G01 X+20.422 Y-22.894 C278.26 +G01 X+20.272 Y-22.912 C275.308 +G01 X+20.122 Y-22.922 C272.355 +G01 X+19.971 Y-22.924 C269.402 +G01 X+19.821 Y-22.919 C266.45 +G01 X+19.671 Y-22.906 C263.496 +G01 X+19.522 Y-22.885 C260.544 +G01 X+19.374 Y-22.857 C257.591 +G01 X+19.228 Y-22.82 C254.639 +G01 X+19.083 Y-22.777 C251.685 +G01 X+18.941 Y-22.726 C248.738 +G01 X+18.813 Y-22.672 C246.013 +G01 X+18.554 Y-22.546 B3.728 C240.371 +G01 X+18.398 Y-22.449 B3.725 C236.805 +G01 X+18.273 Y-22.361 B3.724 C233.808 +G01 X+18.155 Y-22.27 C230.893 +G01 X+18.043 Y-22.173 C227.987 +G01 X+17.936 Y-22.072 B3.723 C225.109 +G01 Y-21.934 Z-0.589 B3.601 C223.138 +G01 X+17.906 Y-21.902 B3.602 C222.251 +G01 X+17.811 Y-21.792 C219.306 +G01 X+17.721 Y-21.677 C216.355 +G01 X+17.638 Y-21.558 C213.403 +G01 X+17.561 Y-21.434 C210.453 +G01 X+17.49 Y-21.307 C207.502 +G01 X+17.426 Y-21.176 C204.55 +G01 X+17.369 Y-21.042 C201.599 +G01 X+17.319 Y-20.905 C198.647 +G01 X+17.276 Y-20.766 C195.697 +G01 X+17.24 Y-20.624 C192.746 +G01 X+17.212 Y-20.481 C189.795 +G01 X+17.191 Y-20.337 C186.843 +G01 X+17.177 Y-20.192 C183.893 +G01 X+17.171 Y-20.047 C180.941 +G01 X+17.172 Y-19.901 C177.99 +G01 X+17.181 Y-19.756 C175.039 +G01 X+17.197 Y-19.611 C172.088 +G01 X+17.221 Y-19.467 C169.136 +G01 X+17.252 Y-19.325 C166.186 +G01 X+17.291 Y-19.184 C163.234 +G01 X+17.336 Y-19.046 C160.283 +G01 X+17.389 Y-18.91 C157.332 +G01 X+17.449 Y-18.777 C154.38 +G01 X+17.515 Y-18.647 C151.429 +G01 X+17.589 Y-18.519 C148.449 +G01 X+17.668 Y-18.397 C145.499 +G01 X+17.753 Y-18.281 C142.586 +G01 X+17.844 Y-18.167 C139.635 +G01 X+17.941 Y-18.059 C136.683 +G01 X+18.044 Y-17.955 C133.733 +G01 X+18.152 Y-17.857 C130.782 +G01 X+18.265 Y-17.765 C127.83 +G01 X+18.382 Y-17.679 C124.88 +G01 X+18.504 Y-17.599 C121.928 +G01 X+18.629 Y-17.525 C118.977 +G01 X+18.758 Y-17.457 C116.026 +G01 X+18.891 Y-17.397 C113.075 +G01 X+19.026 Y-17.343 C110.124 +G01 X+19.164 Y-17.297 C107.172 +G01 X+19.305 Y-17.257 C104.221 +G01 X+19.447 Y-17.225 C101.27 +G01 X+19.59 Y-17.2 C98.319 +G01 X+19.735 Y-17.183 C95.368 +G01 X+19.88 Y-17.173 C92.417 +G01 X+20.026 Y-17.171 C89.466 +G01 X+20.172 Y-17.176 C86.514 +G01 X+20.317 Y-17.188 C83.563 +G01 X+20.461 Y-17.208 C80.612 +G01 X+20.604 Y-17.236 C77.661 +G01 X+20.746 Y-17.271 C74.71 +G01 X+20.885 Y-17.313 C71.759 +G01 X+21.023 Y-17.362 C68.807 +G01 X+21.157 Y-17.418 C65.856 +G01 X+21.288 Y-17.481 C62.905 +G01 X+21.416 Y-17.55 C59.954 +G01 X+21.541 Y-17.627 C56.997 +G01 X+21.661 Y-17.71 C54.047 +G01 X+21.776 Y-17.798 C51.11 +G01 X+21.887 Y-17.892 C48.16 +G01 X+21.993 Y-17.992 C45.208 +G01 X+22.094 Y-18.097 C42.257 +G01 X+22.189 Y-18.208 C39.306 +G01 X+22.279 Y-18.323 C36.355 +G01 X+22.362 Y-18.442 C33.404 +G01 X+22.439 Y-18.566 C30.453 +G01 X+22.51 Y-18.693 C27.502 +G01 X+22.574 Y-18.824 C24.55 +G01 X+22.631 Y-18.958 C21.599 +G01 X+22.681 Y-19.095 C18.648 +G01 X+22.724 Y-19.234 C15.697 +G01 X+22.76 Y-19.376 C12.746 +G01 X+22.788 Y-19.518 C9.795 +G01 X+22.809 Y-19.663 C6.843 +G01 X+22.823 Y-19.808 C3.893 +G01 X+22.829 Y-19.953 C0.941 +G01 X+22.828 Y-20.099 C357.99 +G01 X+22.819 Y-20.244 C355.039 +G01 X+22.803 Y-20.389 C352.088 +G01 X+22.779 Y-20.533 C349.136 +G01 X+22.748 Y-20.675 C346.186 +G01 X+22.709 Y-20.816 C343.234 +G01 X+22.664 Y-20.954 C340.283 +G01 X+22.611 Y-21.09 C337.332 +G01 X+22.551 Y-21.223 C334.38 +G01 X+22.485 Y-21.353 C331.429 +G01 X+22.411 Y-21.48 C328.449 +G01 X+22.332 Y-21.603 C325.499 +G01 X+22.247 Y-21.719 C322.586 +G01 X+22.156 Y-21.832 C319.635 +G01 X+22.059 Y-21.941 C316.683 +G01 X+21.956 Y-22.044 C313.733 +G01 X+21.848 Y-22.142 C310.782 +G01 X+21.735 Y-22.235 C307.83 +G01 X+21.618 Y-22.321 C304.88 +G01 X+21.496 Y-22.401 C301.928 +G01 X+21.371 Y-22.475 C298.977 +G01 X+21.242 Y-22.542 C296.026 +G01 X+21.109 Y-22.603 C293.075 +G01 X+20.974 Y-22.657 C290.124 +G01 X+20.836 Y-22.703 C287.172 +G01 X+20.695 Y-22.743 C284.221 +G01 X+20.553 Y-22.775 C281.27 +G01 X+20.41 Y-22.8 C278.319 +G01 X+20.265 Y-22.817 C275.368 +G01 X+20.12 Y-22.827 C272.417 +G01 X+19.974 Y-22.829 C269.466 +G01 X+19.828 Y-22.824 C266.514 +G01 X+19.683 Y-22.812 C263.563 +G01 X+19.539 Y-22.792 C260.612 +G01 X+19.396 Y-22.764 C257.661 +G01 X+19.254 Y-22.729 C254.71 +G01 X+19.115 Y-22.687 C251.759 +G01 X+18.977 Y-22.638 C248.799 +G01 X+18.854 Y-22.587 C246.097 +G01 X+18.6 Y-22.463 B3.607 C240.383 +G01 X+18.452 Y-22.37 B3.604 C236.851 +G01 X+18.33 Y-22.286 B3.603 C233.853 +G01 X+18.217 Y-22.197 C230.938 +G01 X+18.108 Y-22.104 B3.602 C228.03 +G01 X+18.003 Y-22.005 C225.117 +G01 Y-21.867 Z-0.583 B3.482 C223.057 +G01 X+17.977 Y-21.839 C222.241 +G01 X+17.885 Y-21.733 C219.306 +G01 X+17.799 Y-21.622 C216.356 +G01 X+17.718 Y-21.507 C213.407 +G01 X+17.644 Y-21.387 C210.457 +G01 X+17.575 Y-21.264 C207.508 +G01 X+17.513 Y-21.138 C204.558 +G01 X+17.458 Y-21.008 C201.609 +G01 X+17.41 Y-20.876 C198.66 +G01 X+17.368 Y-20.741 C195.71 +G01 X+17.333 Y-20.605 C192.76 +G01 X+17.306 Y-20.467 C189.81 +G01 X+17.285 Y-20.328 C186.861 +G01 X+17.272 Y-20.187 C183.911 +G01 X+17.266 Y-20.047 C180.962 +G01 X+17.267 Y-19.906 C178.012 +G01 X+17.276 Y-19.765 C175.063 +G01 X+17.291 Y-19.625 C172.114 +G01 X+17.314 Y-19.486 C169.164 +G01 X+17.344 Y-19.349 C166.215 +G01 X+17.381 Y-19.213 C163.265 +G01 X+17.425 Y-19.079 C160.315 +G01 X+17.476 Y-18.948 C157.365 +G01 X+17.533 Y-18.819 C154.416 +G01 X+17.598 Y-18.694 C151.467 +G01 X+17.668 Y-18.572 C148.517 +G01 X+17.745 Y-18.453 C145.546 +G01 X+17.827 Y-18.34 C142.608 +G01 X+17.915 Y-18.23 C139.635 +G01 X+18.011 Y-18.124 C136.647 +G01 X+18.109 Y-18.025 C133.731 +G01 X+18.213 Y-17.93 C130.781 +G01 X+18.322 Y-17.841 C127.831 +G01 X+18.435 Y-17.758 C124.882 +G01 X+18.552 Y-17.68 C121.932 +G01 X+18.674 Y-17.609 C118.982 +G01 X+18.799 Y-17.543 C116.033 +G01 X+18.927 Y-17.485 C113.083 +G01 X+19.058 Y-17.433 C110.134 +G01 X+19.191 Y-17.388 C107.184 +G01 X+19.327 Y-17.35 C104.234 +G01 X+19.464 Y-17.318 C101.285 +G01 X+19.603 Y-17.294 C98.335 +G01 X+19.742 Y-17.278 C95.386 +G01 X+19.883 Y-17.268 C92.436 +G01 X+20.024 Y-17.266 C89.487 +G01 X+20.164 Y-17.27 C86.538 +G01 X+20.305 Y-17.282 C83.588 +G01 X+20.444 Y-17.302 C80.638 +G01 X+20.583 Y-17.328 C77.689 +G01 X+20.719 Y-17.362 C74.739 +G01 X+20.854 Y-17.402 C71.789 +G01 X+20.987 Y-17.45 C68.84 +G01 X+21.117 Y-17.504 C65.891 +G01 X+21.256 Y-17.571 C62.614 +G01 X+21.367 Y-17.632 C59.992 +G01 X+21.488 Y-17.705 C57.042 +G01 X+21.604 Y-17.785 C54.094 +G01 X+21.716 Y-17.871 C51.121 +G01 X+21.823 Y-17.962 C48.154 +G01 X+21.926 Y-18.059 C45.195 +G01 X+22.023 Y-18.16 C42.255 +G01 X+22.115 Y-18.266 C39.305 +G01 X+22.201 Y-18.378 C36.356 +G01 X+22.282 Y-18.493 C33.407 +G01 X+22.356 Y-18.613 C30.457 +G01 X+22.425 Y-18.736 C27.508 +G01 X+22.487 Y-18.862 C24.558 +G01 X+22.542 Y-18.992 C21.609 +G01 X+22.59 Y-19.124 C18.66 +G01 X+22.632 Y-19.258 C15.71 +G01 X+22.667 Y-19.395 C12.76 +G01 X+22.694 Y-19.533 C9.81 +G01 X+22.715 Y-19.672 C6.861 +G01 X+22.728 Y-19.813 C3.911 +G01 X+22.734 Y-19.953 C0.962 +G01 X+22.733 Y-20.094 C358.012 +G01 X+22.724 Y-20.235 C355.063 +G01 X+22.709 Y-20.375 C352.114 +G01 X+22.686 Y-20.513 C349.164 +G01 X+22.656 Y-20.651 C346.215 +G01 X+22.619 Y-20.787 C343.265 +G01 X+22.575 Y-20.921 C340.315 +G01 X+22.524 Y-21.052 C337.365 +G01 X+22.467 Y-21.181 C334.416 +G01 X+22.402 Y-21.306 C331.467 +G01 X+22.332 Y-21.428 C328.517 +G01 X+22.255 Y-21.547 C325.546 +G01 X+22.173 Y-21.66 C322.608 +G01 X+22.085 Y-21.77 C319.635 +G01 X+21.99 Y-21.876 C316.647 +G01 X+21.891 Y-21.975 C313.731 +G01 X+21.787 Y-22.069 C310.781 +G01 X+21.678 Y-22.159 C307.831 +G01 X+21.565 Y-22.242 C304.882 +G01 X+21.448 Y-22.32 C301.932 +G01 X+21.326 Y-22.391 C298.982 +G01 X+21.201 Y-22.456 C296.033 +G01 X+21.073 Y-22.515 C293.083 +G01 X+20.942 Y-22.567 C290.134 +G01 X+20.809 Y-22.612 C287.184 +G01 X+20.673 Y-22.65 C284.234 +G01 X+20.536 Y-22.681 C281.285 +G01 X+20.397 Y-22.705 C278.335 +G01 X+20.258 Y-22.722 C275.386 +G01 X+20.117 Y-22.732 C272.436 +G01 X+19.976 Y-22.734 C269.487 +G01 X+19.836 Y-22.73 C266.538 +G01 X+19.695 Y-22.717 C263.588 +G01 X+19.556 Y-22.698 C260.638 +G01 X+19.417 Y-22.672 C257.689 +G01 X+19.281 Y-22.638 C254.739 +G01 X+19.146 Y-22.598 C251.79 +G01 X+19.013 Y-22.55 C248.83 +G01 X+18.895 Y-22.501 C246.14 +G01 X+18.688 Y-22.401 B3.483 C241.352 +G01 X+18.646 Y-22.38 B3.487 C240.354 +G01 X+18.504 Y-22.291 B3.484 C236.81 +G01 X+18.388 Y-22.21 C233.858 +G01 X+18.278 Y-22.125 B3.483 C230.941 +G01 X+18.172 Y-22.034 C228.032 +G01 X+18.07 Y-21.938 B3.482 C225.085 +G01 Y-21.8 Z-0.577 B3.36 C222.968 +G01 X+18.048 Y-21.777 B3.361 C222.24 +G01 X+17.96 Y-21.674 C219.297 +G01 X+17.876 Y-21.567 C216.334 +G01 X+17.798 Y-21.456 C213.4 +G01 X+17.726 Y-21.34 C210.453 +G01 X+17.66 Y-21.222 C207.504 +G01 X+17.6 Y-21.1 C204.556 +G01 X+17.547 Y-20.975 C201.609 +G01 X+17.5 Y-20.847 C198.661 +G01 X+17.46 Y-20.717 C195.713 +G01 X+17.426 Y-20.585 C192.765 +G01 X+17.399 Y-20.452 C189.817 +G01 X+17.38 Y-20.318 C186.869 +G01 X+17.367 Y-20.182 C183.921 +G01 X+17.361 Y-20.047 C180.973 +G01 X+17.362 Y-19.911 C178.026 +G01 X+17.37 Y-19.775 C175.077 +G01 X+17.385 Y-19.64 C172.13 +G01 X+17.407 Y-19.506 C169.182 +G01 X+17.436 Y-19.373 C166.234 +G01 X+17.472 Y-19.242 C163.286 +G01 X+17.514 Y-19.113 C160.338 +G01 X+17.563 Y-18.986 C157.39 +G01 X+17.618 Y-18.862 C154.442 +G01 X+17.68 Y-18.741 C151.494 +G01 X+17.748 Y-18.623 C148.547 +G01 X+17.822 Y-18.509 C145.598 +G01 X+17.902 Y-18.398 C142.643 +G01 X+17.987 Y-18.293 C139.686 +G01 X+18.077 Y-18.191 C136.716 +G01 X+18.173 Y-18.095 C133.746 +G01 X+18.274 Y-18.003 C130.775 +G01 X+18.38 Y-17.916 C127.786 +G01 X+18.488 Y-17.836 C124.875 +G01 X+18.601 Y-17.761 C121.926 +G01 X+18.719 Y-17.692 C118.979 +G01 X+18.839 Y-17.629 C116.031 +G01 X+18.963 Y-17.573 C113.083 +G01 X+19.089 Y-17.523 C110.135 +G01 X+19.218 Y-17.479 C107.187 +G01 X+19.348 Y-17.442 C104.239 +G01 X+19.481 Y-17.412 C101.291 +G01 X+19.615 Y-17.389 C98.343 +G01 X+19.75 Y-17.372 C95.395 +G01 X+19.885 Y-17.363 C92.447 +G01 X+20.021 Y-17.36 C89.5 +G01 X+20.157 Y-17.365 C86.551 +G01 X+20.293 Y-17.377 C83.603 +G01 X+20.427 Y-17.395 C80.656 +G01 X+20.561 Y-17.421 C77.708 +G01 X+20.693 Y-17.453 C74.76 +G01 X+20.823 Y-17.492 C71.812 +G01 X+20.951 Y-17.538 C68.864 +G01 X+21.077 Y-17.59 C65.916 +G01 X+21.217 Y-17.658 B3.36 C62.463 +G01 X+21.276 Y-17.69 C61.352 +G01 X+21.319 Y-17.713 B3.361 C60.02 +G01 X+21.435 Y-17.784 C57.072 +G01 X+21.548 Y-17.862 C54.094 +G01 X+21.655 Y-17.943 C51.171 +G01 X+21.759 Y-18.031 C48.201 +G01 X+21.858 Y-18.125 C45.231 +G01 X+21.952 Y-18.223 C42.26 +G01 X+22.041 Y-18.325 C39.296 +G01 X+22.124 Y-18.433 C36.334 +G01 X+22.202 Y-18.544 C33.4 +G01 X+22.274 Y-18.659 C30.453 +G01 X+22.34 Y-18.778 C27.504 +G01 X+22.4 Y-18.9 C24.556 +G01 X+22.453 Y-19.025 C21.609 +G01 X+22.5 Y-19.153 C18.661 +G01 X+22.54 Y-19.283 C15.713 +G01 X+22.574 Y-19.414 C12.765 +G01 X+22.601 Y-19.548 C9.817 +G01 X+22.62 Y-19.682 C6.869 +G01 X+22.633 Y-19.818 C3.921 +G01 X+22.639 Y-19.953 C0.973 +G01 X+22.638 Y-20.089 C358.026 +G01 X+22.63 Y-20.225 C355.077 +G01 X+22.615 Y-20.36 C352.13 +G01 X+22.593 Y-20.494 C349.182 +G01 X+22.564 Y-20.627 C346.234 +G01 X+22.528 Y-20.758 C343.286 +G01 X+22.486 Y-20.887 C340.338 +G01 X+22.437 Y-21.014 C337.39 +G01 X+22.382 Y-21.138 C334.442 +G01 X+22.32 Y-21.259 C331.494 +G01 X+22.252 Y-21.377 C328.547 +G01 X+22.178 Y-21.491 C325.598 +G01 X+22.098 Y-21.602 C322.643 +G01 X+22.013 Y-21.707 C319.686 +G01 X+21.923 Y-21.809 C316.716 +G01 X+21.827 Y-21.905 C313.746 +G01 X+21.726 Y-21.997 C310.775 +G01 X+21.62 Y-22.084 C307.786 +G01 X+21.512 Y-22.164 C304.875 +G01 X+21.399 Y-22.239 C301.926 +G01 X+21.282 Y-22.308 C298.979 +G01 X+21.161 Y-22.37 C296.031 +G01 X+21.037 Y-22.427 C293.083 +G01 X+20.911 Y-22.477 C290.135 +G01 X+20.782 Y-22.521 C287.187 +G01 X+20.652 Y-22.558 C284.239 +G01 X+20.519 Y-22.588 C281.291 +G01 X+20.385 Y-22.611 C278.343 +G01 X+20.25 Y-22.628 C275.395 +G01 X+20.115 Y-22.637 C272.447 +G01 X+19.979 Y-22.639 C269.5 +G01 X+19.843 Y-22.635 C266.551 +G01 X+19.707 Y-22.623 C263.603 +G01 X+19.573 Y-22.605 C260.656 +G01 X+19.439 Y-22.579 C257.708 +G01 X+19.307 Y-22.547 C254.76 +G01 X+19.177 Y-22.508 C251.812 +G01 X+19.048 Y-22.462 C248.853 +G01 X+18.935 Y-22.415 C246.174 +G01 X+18.783 Y-22.341 B3.36 C242.462 +G01 X+18.723 Y-22.312 Z-0.578 B3.363 C241.352 +G01 X+18.692 Y-22.297 B3.366 C240.316 +G01 X+18.559 Y-22.213 B3.363 C236.899 +G01 X+18.445 Y-22.134 B3.362 C233.866 +G01 X+18.339 Y-22.052 C230.94 +G01 X+18.237 Y-21.965 C228.027 +G01 X+18.137 Y-21.87 Z-0.577 B3.361 C225.046 +G01 Y-21.733 Z-0.572 B3.239 C222.881 +G01 X+18.034 Y-21.615 B3.24 C219.348 +G01 X+17.953 Y-21.512 C216.38 +G01 X+17.878 Y-21.405 C213.412 +G01 X+17.809 Y-21.294 C210.447 +G01 X+17.744 Y-21.178 C207.475 +G01 X+17.687 Y-21.061 C204.554 +G01 X+17.636 Y-20.941 C201.608 +G01 X+17.59 Y-20.818 C198.661 +G01 X+17.552 Y-20.693 C195.715 +G01 X+17.519 Y-20.566 C192.768 +G01 X+17.493 Y-20.437 C189.823 +G01 X+17.474 Y-20.308 C186.877 +G01 X+17.462 Y-20.177 C183.929 +G01 X+17.456 Y-20.046 C180.983 +G01 X+17.457 Y-19.915 C178.037 +G01 X+17.465 Y-19.785 C175.091 +G01 X+17.479 Y-19.654 C172.144 +G01 X+17.5 Y-19.525 C169.198 +G01 X+17.528 Y-19.397 C166.251 +G01 X+17.562 Y-19.27 C163.306 +G01 X+17.603 Y-19.146 C160.36 +G01 X+17.65 Y-19.024 C157.413 +G01 X+17.703 Y-18.904 C154.466 +G01 X+17.763 Y-18.787 C151.521 +G01 X+17.828 Y-18.674 C148.574 +G01 X+17.899 Y-18.564 C145.628 +G01 X+17.977 Y-18.456 C142.643 +G01 X+18.058 Y-18.355 C139.735 +G01 X+18.146 Y-18.258 C136.767 +G01 X+18.238 Y-18.164 C133.799 +G01 X+18.335 Y-18.076 C130.831 +G01 X+18.436 Y-17.993 C127.863 +G01 X+18.541 Y-17.915 C124.896 +G01 X+18.65 Y-17.843 C121.928 +G01 X+18.763 Y-17.776 C118.974 +G01 X+18.88 Y-17.715 C116.023 +G01 X+18.998 Y-17.661 C113.081 +G01 X+19.12 Y-17.612 C110.135 +G01 X+19.244 Y-17.57 C107.188 +G01 X+19.37 Y-17.534 C104.242 +G01 X+19.498 Y-17.505 C101.295 +G01 X+19.627 Y-17.483 C98.35 +G01 X+19.757 Y-17.467 C95.403 +G01 X+19.888 Y-17.458 C92.457 +G01 X+20.019 Y-17.455 C89.51 +G01 X+20.15 Y-17.46 C86.564 +G01 X+20.281 Y-17.471 C83.617 +G01 X+20.41 Y-17.489 C80.672 +G01 X+20.539 Y-17.513 C77.725 +G01 X+20.666 Y-17.544 C74.779 +G01 X+20.792 Y-17.582 C71.832 +G01 X+20.915 Y-17.626 C68.886 +G01 X+21.036 Y-17.676 C65.94 +G01 X+21.155 Y-17.732 C62.994 +G01 X+21.235 Y-17.776 B3.239 C61.352 +G01 X+21.27 Y-17.795 B3.24 C60.048 +G01 X+21.382 Y-17.863 C57.101 +G01 X+21.49 Y-17.937 C54.155 +G01 X+21.595 Y-18.017 C51.191 +G01 X+21.694 Y-18.101 C48.251 +G01 X+21.79 Y-18.191 C45.283 +G01 X+21.88 Y-18.285 C42.316 +G01 X+21.966 Y-18.385 C39.348 +G01 X+22.047 Y-18.488 C36.38 +G01 X+22.122 Y-18.595 C33.412 +G01 X+22.191 Y-18.706 C30.447 +G01 X+22.256 Y-18.822 C27.475 +G01 X+22.313 Y-18.938 C24.554 +G01 X+22.364 Y-19.059 C21.608 +G01 X+22.41 Y-19.182 C18.661 +G01 X+22.448 Y-19.307 C15.715 +G01 X+22.481 Y-19.434 C12.768 +G01 X+22.507 Y-19.562 C9.823 +G01 X+22.526 Y-19.692 C6.877 +G01 X+22.538 Y-19.823 C3.929 +G01 X+22.544 Y-19.953 C0.983 +G01 X+22.543 Y-20.084 C358.037 +G01 X+22.536 Y-20.215 C355.091 +G01 X+22.521 Y-20.346 C352.144 +G01 X+22.5 Y-20.475 C349.198 +G01 X+22.472 Y-20.603 C346.251 +G01 X+22.438 Y-20.729 C343.306 +G01 X+22.397 Y-20.854 C340.36 +G01 X+22.35 Y-20.976 C337.413 +G01 X+22.297 Y-21.096 C334.466 +G01 X+22.237 Y-21.213 C331.521 +G01 X+22.172 Y-21.326 C328.574 +G01 X+22.101 Y-21.436 C325.628 +G01 X+22.023 Y-21.544 C322.643 +G01 X+21.942 Y-21.645 C319.735 +G01 X+21.854 Y-21.742 C316.767 +G01 X+21.762 Y-21.836 C313.799 +G01 X+21.666 Y-21.924 C310.831 +G01 X+21.564 Y-22.007 C307.863 +G01 X+21.459 Y-22.085 C304.896 +G01 X+21.35 Y-22.157 C301.928 +G01 X+21.237 Y-22.224 C298.974 +G01 X+21.12 Y-22.285 C296.023 +G01 X+21.002 Y-22.339 C293.081 +G01 X+20.88 Y-22.388 C290.135 +G01 X+20.756 Y-22.43 C287.188 +G01 X+20.63 Y-22.465 C284.242 +G01 X+20.502 Y-22.495 C281.295 +G01 X+20.373 Y-22.517 C278.35 +G01 X+20.243 Y-22.533 C275.403 +G01 X+20.112 Y-22.542 C272.457 +G01 X+19.981 Y-22.544 C269.51 +G01 X+19.85 Y-22.54 C266.564 +G01 X+19.719 Y-22.529 C263.617 +G01 X+19.59 Y-22.511 C260.672 +G01 X+19.461 Y-22.487 C257.725 +G01 X+19.334 Y-22.456 C254.779 +G01 X+19.208 Y-22.418 C251.832 +G01 X+19.084 Y-22.374 C248.875 +G01 X+18.976 Y-22.329 C246.206 +G01 X+18.822 Y-22.255 B3.239 C242.312 +G01 X+18.764 Y-22.226 B3.242 C241.352 +G01 X+18.738 Y-22.214 B3.244 C240.277 +G01 X+18.612 Y-22.135 B3.242 C236.951 +G01 X+18.502 Y-22.058 B3.241 C233.914 +G01 X+18.4 Y-21.979 C231.002 +G01 X+18.302 Y-21.895 B3.24 C228.088 +G01 X+18.204 Y-21.803 C225.024 +G01 Y-21.665 Z-0.567 B3.118 C222.794 +G01 X+18.108 Y-21.556 B3.119 C219.405 +G01 X+18.031 Y-21.457 C216.438 +G01 X+17.958 Y-21.353 C213.473 +G01 X+17.891 Y-21.247 C210.507 +G01 X+17.83 Y-21.136 C207.541 +G01 X+17.774 Y-21.023 C204.576 +G01 X+17.725 Y-20.907 C201.611 +G01 X+17.681 Y-20.789 C198.66 +G01 X+17.643 Y-20.668 C195.711 +G01 X+17.612 Y-20.546 C192.772 +G01 X+17.587 Y-20.423 C189.827 +G01 X+17.569 Y-20.298 C186.882 +G01 X+17.556 Y-20.172 C183.937 +G01 X+17.551 Y-20.046 C180.993 +G01 X+17.552 Y-19.92 C178.048 +G01 X+17.559 Y-19.794 C175.104 +G01 X+17.573 Y-19.669 C172.159 +G01 X+17.593 Y-19.544 C169.214 +G01 X+17.62 Y-19.421 C166.269 +G01 X+17.653 Y-19.299 C163.325 +G01 X+17.692 Y-19.179 C160.38 +G01 X+17.737 Y-19.062 C157.435 +G01 X+17.789 Y-18.946 C154.49 +G01 X+17.846 Y-18.834 C151.546 +G01 X+17.909 Y-18.725 C148.601 +G01 X+17.977 Y-18.619 C145.656 +G01 X+18.051 Y-18.516 C142.711 +G01 X+18.131 Y-18.417 C139.739 +G01 X+18.214 Y-18.324 C136.817 +G01 X+18.302 Y-18.234 C133.852 +G01 X+18.395 Y-18.149 C130.886 +G01 X+18.493 Y-18.069 C127.921 +G01 X+18.594 Y-17.994 C124.955 +G01 X+18.699 Y-17.924 C121.99 +G01 X+18.808 Y-17.86 C119.024 +G01 X+18.92 Y-17.801 C116.059 +G01 X+19.034 Y-17.749 C113.093 +G01 X+19.152 Y-17.702 C110.133 +G01 X+19.272 Y-17.661 C107.163 +G01 X+19.392 Y-17.627 C104.244 +G01 X+19.515 Y-17.599 C101.299 +G01 X+19.64 Y-17.577 C98.354 +G01 X+19.765 Y-17.562 C95.409 +G01 X+19.891 Y-17.553 C92.465 +G01 X+20.017 Y-17.55 C89.52 +G01 X+20.143 Y-17.554 C86.576 +G01 X+20.269 Y-17.565 C83.631 +G01 X+20.394 Y-17.582 C80.687 +G01 X+20.518 Y-17.606 C77.741 +G01 X+20.64 Y-17.635 C74.797 +G01 X+20.761 Y-17.671 C71.852 +G01 X+20.88 Y-17.714 C68.907 +G01 X+20.996 Y-17.762 C65.963 +G01 X+21.11 Y-17.816 C63.018 +G01 X+21.194 Y-17.861 B3.118 C61.352 +G01 X+21.221 Y-17.876 B3.119 C60.073 +G01 X+21.329 Y-17.942 C57.128 +G01 X+21.433 Y-18.013 C54.184 +G01 X+21.533 Y-18.09 C51.239 +G01 X+21.63 Y-18.171 C48.288 +G01 X+21.722 Y-18.257 C45.334 +G01 X+21.809 Y-18.348 C42.369 +G01 X+21.892 Y-18.444 C39.404 +G01 X+21.969 Y-18.543 C36.438 +G01 X+22.042 Y-18.646 C33.473 +G01 X+22.109 Y-18.753 C30.507 +G01 X+22.17 Y-18.863 C27.541 +G01 X+22.226 Y-18.977 C24.576 +G01 X+22.275 Y-19.093 C21.611 +G01 X+22.319 Y-19.211 C18.66 +G01 X+22.357 Y-19.332 C15.711 +G01 X+22.388 Y-19.454 C12.772 +G01 X+22.413 Y-19.577 C9.827 +G01 X+22.431 Y-19.702 C6.882 +G01 X+22.444 Y-19.828 C3.937 +G01 X+22.449 Y-19.954 C0.993 +G01 X+22.448 Y-20.08 C358.048 +G01 X+22.441 Y-20.206 C355.104 +G01 X+22.427 Y-20.331 C352.159 +G01 X+22.407 Y-20.456 C349.214 +G01 X+22.38 Y-20.579 C346.269 +G01 X+22.347 Y-20.701 C343.325 +G01 X+22.308 Y-20.821 C340.38 +G01 X+22.263 Y-20.938 C337.435 +G01 X+22.212 Y-21.054 C334.49 +G01 X+22.154 Y-21.166 C331.546 +G01 X+22.091 Y-21.275 C328.601 +G01 X+22.023 Y-21.381 C325.656 +G01 X+21.949 Y-21.484 C322.711 +G01 X+21.869 Y-21.583 C319.739 +G01 X+21.786 Y-21.676 C316.817 +G01 X+21.698 Y-21.766 C313.852 +G01 X+21.605 Y-21.851 C310.886 +G01 X+21.507 Y-21.931 C307.921 +G01 X+21.406 Y-22.006 C304.955 +G01 X+21.301 Y-22.076 C301.99 +G01 X+21.192 Y-22.14 C299.024 +G01 X+21.08 Y-22.199 C296.059 +G01 X+20.966 Y-22.251 C293.093 +G01 X+20.848 Y-22.298 C290.133 +G01 X+20.728 Y-22.339 C287.163 +G01 X+20.608 Y-22.373 C284.244 +G01 X+20.485 Y-22.401 C281.299 +G01 X+20.36 Y-22.423 C278.354 +G01 X+20.235 Y-22.438 C275.409 +G01 X+20.109 Y-22.447 C272.465 +G01 X+19.983 Y-22.45 C269.52 +G01 X+19.857 Y-22.445 C266.576 +G01 X+19.731 Y-22.435 C263.631 +G01 X+19.606 Y-22.418 C260.687 +G01 X+19.483 Y-22.394 C257.741 +G01 X+19.36 Y-22.364 C254.797 +G01 X+19.239 Y-22.328 C251.852 +G01 X+19.12 Y-22.286 C248.895 +G01 X+19.016 Y-22.243 C246.239 +G01 X+18.861 Y-22.168 B3.118 C242.163 +G01 X+18.805 Y-22.141 B3.121 C241.352 +G01 X+18.784 Y-22.13 B3.122 +G01 X+18.665 Y-22.056 B3.121 C236.998 +G01 X+18.559 Y-21.982 B3.12 C233.962 +G01 X+18.461 Y-21.906 C231.047 +G01 X+18.366 Y-21.826 B3.119 C228.147 +G01 X+18.271 Y-21.736 C225.037 +G01 Y-21.598 Z-0.562 B2.997 C222.705 +G01 X+18.183 Y-21.497 B2.998 C219.46 +G01 X+18.108 Y-21.402 C216.495 +G01 X+18.038 Y-21.302 C213.531 +G01 X+17.974 Y-21.2 C210.568 +G01 X+17.915 Y-21.094 C207.606 +G01 X+17.861 Y-20.985 C204.642 +G01 X+17.813 Y-20.873 C201.68 +G01 X+17.771 Y-20.76 C198.716 +G01 X+17.735 Y-20.644 C195.753 +G01 X+17.705 Y-20.527 C192.791 +G01 X+17.681 Y-20.408 C189.83 +G01 X+17.663 Y-20.286 C186.851 +G01 X+17.651 Y-20.167 C183.944 +G01 X+17.646 Y-20.046 C181. +G01 X+17.647 Y-19.925 C178.057 +G01 X+17.654 Y-19.804 C175.114 +G01 X+17.667 Y-19.683 C172.171 +G01 X+17.686 Y-19.563 C169.229 +G01 X+17.712 Y-19.445 C166.285 +G01 X+17.743 Y-19.328 C163.342 +G01 X+17.781 Y-19.213 C160.399 +G01 X+17.824 Y-19.099 C157.456 +G01 X+17.874 Y-18.989 C154.512 +G01 X+17.928 Y-18.88 C151.569 +G01 X+17.989 Y-18.775 C148.626 +G01 X+18.055 Y-18.673 C145.683 +G01 X+18.125 Y-18.575 C142.74 +G01 X+18.201 Y-18.48 C139.797 +G01 X+18.283 Y-18.389 C136.836 +G01 X+18.367 Y-18.303 C133.902 +G01 X+18.457 Y-18.222 C130.939 +G01 X+18.55 Y-18.145 C127.976 +G01 X+18.648 Y-18.072 C125.013 +G01 X+18.749 Y-18.005 C122.05 +G01 X+18.853 Y-17.944 C119.087 +G01 X+18.96 Y-17.887 C116.124 +G01 X+19.07 Y-17.837 C113.161 +G01 X+19.183 Y-17.792 C110.198 +G01 X+19.298 Y-17.752 C107.235 +G01 X+19.414 Y-17.719 C104.271 +G01 X+19.533 Y-17.692 C101.308 +G01 X+19.652 Y-17.671 C98.358 +G01 X+19.773 Y-17.656 C95.399 +G01 X+19.893 Y-17.648 C92.472 +G01 X+20.015 Y-17.645 C89.529 +G01 X+20.136 Y-17.649 C86.586 +G01 X+20.257 Y-17.659 C83.643 +G01 X+20.377 Y-17.676 C80.699 +G01 X+20.496 Y-17.698 C77.757 +G01 X+20.614 Y-17.727 C74.813 +G01 X+20.73 Y-17.761 C71.87 +G01 X+20.844 Y-17.802 C68.928 +G01 X+20.956 Y-17.848 C65.984 +G01 X+21.066 Y-17.9 C63.042 +G01 X+21.1 Y-17.919 B2.996 C61.352 +G01 X+21.172 Y-17.958 B2.998 C60.098 +G01 X+21.276 Y-18.021 C57.155 +G01 X+21.376 Y-18.089 C54.212 +G01 X+21.473 Y-18.163 C51.269 +G01 X+21.567 Y-18.242 C48.288 +G01 X+21.654 Y-18.324 C45.383 +G01 X+21.738 Y-18.411 C42.42 +G01 X+21.817 Y-18.503 C39.457 +G01 X+21.892 Y-18.598 C36.494 +G01 X+21.962 Y-18.698 C33.531 +G01 X+22.026 Y-18.8 C30.568 +G01 X+22.085 Y-18.906 C27.606 +G01 X+22.139 Y-19.015 C24.643 +G01 X+22.187 Y-19.126 C21.68 +G01 X+22.229 Y-19.24 C18.716 +G01 X+22.265 Y-19.356 C15.753 +G01 X+22.295 Y-19.473 C12.791 +G01 X+22.319 Y-19.592 C9.83 +G01 X+22.337 Y-19.714 C6.851 +G01 X+22.349 Y-19.833 C3.944 +G01 X+22.354 Y-19.954 C1. +G01 X+22.353 Y-20.075 C358.057 +G01 X+22.346 Y-20.196 C355.114 +G01 X+22.333 Y-20.317 C352.171 +G01 X+22.314 Y-20.436 C349.229 +G01 X+22.288 Y-20.555 C346.285 +G01 X+22.257 Y-20.672 C343.342 +G01 X+22.219 Y-20.787 C340.399 +G01 X+22.176 Y-20.9 C337.456 +G01 X+22.126 Y-21.011 C334.512 +G01 X+22.072 Y-21.119 C331.569 +G01 X+22.011 Y-21.225 C328.626 +G01 X+21.945 Y-21.326 C325.683 +G01 X+21.875 Y-21.425 C322.74 +G01 X+21.799 Y-21.519 C319.797 +G01 X+21.717 Y-21.611 C316.836 +G01 X+21.633 Y-21.696 C313.902 +G01 X+21.543 Y-21.778 C310.939 +G01 X+21.45 Y-21.855 C307.976 +G01 X+21.352 Y-21.927 C305.013 +G01 X+21.251 Y-21.995 C302.05 +G01 X+21.147 Y-22.056 C299.087 +G01 X+21.04 Y-22.113 C296.124 +G01 X+20.93 Y-22.163 C293.161 +G01 X+20.817 Y-22.208 C290.198 +G01 X+20.702 Y-22.247 C287.235 +G01 X+20.586 Y-22.281 C284.271 +G01 X+20.467 Y-22.308 C281.308 +G01 X+20.348 Y-22.329 C278.358 +G01 X+20.227 Y-22.344 C275.399 +G01 X+20.107 Y-22.352 C272.472 +G01 X+19.985 Y-22.355 C269.529 +G01 X+19.864 Y-22.351 C266.586 +G01 X+19.743 Y-22.341 C263.643 +G01 X+19.623 Y-22.324 C260.699 +G01 X+19.504 Y-22.302 C257.757 +G01 X+19.386 Y-22.273 C254.813 +G01 X+19.27 Y-22.239 C251.87 +G01 X+19.155 Y-22.198 C248.914 +G01 X+19.057 Y-22.157 C246.27 +G01 X+18.9 Y-22.081 B2.997 C241.352 +G01 X+18.871 Y-22.067 B2.999 +G01 X+18.83 Y-22.047 B3.001 +G01 X+18.716 Y-21.976 B3. C236.997 +G01 X+18.616 Y-21.906 B2.999 C234.008 +G01 X+18.521 Y-21.833 C231.092 +G01 X+18.43 Y-21.756 B2.998 C228.189 +G01 X+18.338 Y-21.668 C225.051 +G01 Y-21.531 Z-0.557 B2.877 C222.618 +G01 X+18.257 Y-21.438 C219.512 +G01 X+18.185 Y-21.346 C216.549 +G01 X+18.118 Y-21.251 C213.588 +G01 X+18.056 Y-21.152 C210.628 +G01 X+18 Y-21.051 C207.668 +G01 X+17.948 Y-20.947 C204.706 +G01 X+17.902 Y-20.84 C201.746 +G01 X+17.862 Y-20.731 C198.785 +G01 X+17.827 Y-20.62 C195.825 +G01 X+17.798 Y-20.507 C192.864 +G01 X+17.775 Y-20.393 C189.904 +G01 X+17.757 Y-20.278 C186.943 +G01 X+17.746 Y-20.154 C183.797 +G01 X+17.741 Y-20.04 C180.894 +G01 Y-19.929 C178.066 +G01 X+17.748 Y-19.811 C175.087 +G01 X+17.761 Y-19.697 C172.183 +G01 X+17.779 Y-19.583 C169.241 +G01 X+17.804 Y-19.469 C166.3 +G01 X+17.834 Y-19.356 C163.358 +G01 X+17.87 Y-19.246 C160.417 +G01 X+17.912 Y-19.137 C157.476 +G01 X+17.959 Y-19.031 C154.534 +G01 X+18.011 Y-18.927 C151.593 +G01 X+18.069 Y-18.826 C148.651 +G01 X+18.132 Y-18.728 C145.709 +G01 X+18.2 Y-18.634 C142.768 +G01 X+18.273 Y-18.543 C139.826 +G01 X+18.35 Y-18.456 C136.885 +G01 X+18.432 Y-18.373 B2.876 C133.933 +G01 X+18.518 Y-18.294 B2.877 C130.989 +G01 X+18.607 Y-18.22 C128.029 +G01 X+18.701 Y-18.151 C125.069 +G01 X+18.798 Y-18.087 C122.108 +G01 X+18.898 Y-18.027 C119.147 +G01 X+19.001 Y-17.973 C116.187 +G01 X+19.107 Y-17.924 C113.226 +G01 X+19.215 Y-17.881 C110.266 +G01 X+19.325 Y-17.844 C107.305 +G01 X+19.437 Y-17.812 C104.345 +G01 X+19.55 Y-17.786 C101.384 +G01 X+19.665 Y-17.765 C98.424 +G01 X+19.78 Y-17.751 C95.463 +G01 X+19.903 Y-17.743 C92.346 +G01 X+20.017 Y-17.74 C89.442 +G01 X+20.129 Y-17.744 C86.595 +G01 X+20.246 Y-17.754 C83.636 +G01 X+20.36 Y-17.769 C80.712 +G01 X+20.474 Y-17.791 C77.771 +G01 X+20.588 Y-17.818 C74.829 +G01 X+20.699 Y-17.851 C71.888 +G01 X+20.809 Y-17.89 C68.946 +G01 X+20.916 Y-17.934 C66.005 +G01 X+21.021 Y-17.984 C63.063 +G01 X+21.061 Y-18.006 B2.875 C61.352 +G01 X+21.124 Y-18.04 B2.876 +G01 X+21.223 Y-18.1 B2.877 C57.18 +G01 X+21.319 Y-18.165 C54.238 +G01 X+21.412 Y-18.236 C51.298 +G01 X+21.501 Y-18.311 C48.356 +G01 X+21.587 Y-18.391 B2.876 C45.384 +G01 X+21.667 Y-18.474 B2.877 C42.47 +G01 X+21.743 Y-18.562 C39.509 +G01 X+21.815 Y-18.654 C36.549 +G01 X+21.882 Y-18.749 C33.588 +G01 X+21.944 Y-18.847 C30.628 +G01 X+22 Y-18.949 C27.668 +G01 X+22.052 Y-19.053 C24.706 +G01 X+22.098 Y-19.16 C21.746 +G01 X+22.138 Y-19.269 C18.785 +G01 X+22.173 Y-19.38 C15.825 +G01 X+22.202 Y-19.493 C12.864 +G01 X+22.225 Y-19.607 C9.904 +G01 X+22.243 Y-19.722 C6.943 +G01 X+22.254 Y-19.845 C3.797 +G01 X+22.259 Y-19.96 C0.894 +G01 Y-20.071 C358.066 +G01 X+22.252 Y-20.189 C355.087 +G01 X+22.239 Y-20.302 C352.183 +G01 X+22.221 Y-20.417 C349.241 +G01 X+22.196 Y-20.531 C346.3 +G01 X+22.166 Y-20.643 C343.358 +G01 X+22.13 Y-20.754 C340.417 +G01 X+22.088 Y-20.863 C337.476 +G01 X+22.041 Y-20.969 C334.534 +G01 X+21.989 Y-21.073 C331.593 +G01 X+21.931 Y-21.174 C328.651 +G01 X+21.868 Y-21.272 C325.709 +G01 X+21.8 Y-21.366 C322.768 +G01 X+21.727 Y-21.457 C319.826 +G01 X+21.65 Y-21.544 C316.885 +G01 X+21.568 Y-21.627 B2.876 C313.933 +G01 X+21.482 Y-21.705 B2.877 C310.989 +G01 X+21.393 Y-21.779 C308.029 +G01 X+21.299 Y-21.849 C305.069 +G01 X+21.202 Y-21.913 C302.108 +G01 X+21.102 Y-21.973 C299.147 +G01 X+20.999 Y-22.027 C296.187 +G01 X+20.893 Y-22.075 C293.226 +G01 X+20.785 Y-22.119 C290.266 +G01 X+20.675 Y-22.156 C287.305 +G01 X+20.563 Y-22.188 C284.345 +G01 X+20.45 Y-22.214 C281.384 +G01 X+20.335 Y-22.235 C278.424 +G01 X+20.22 Y-22.249 C275.463 +G01 X+20.097 Y-22.257 C272.346 +G01 X+19.983 Y-22.259 C269.442 +G01 X+19.871 Y-22.256 C266.595 +G01 X+19.754 Y-22.246 C263.636 +G01 X+19.64 Y-22.231 C260.712 +G01 X+19.526 Y-22.209 C257.77 +G01 X+19.412 Y-22.182 C254.829 +G01 X+19.301 Y-22.149 C251.888 +G01 X+19.191 Y-22.11 C248.93 +G01 X+19.097 Y-22.071 B2.876 C246.301 +G01 X+18.939 Y-21.995 C241.352 +G01 X+18.916 Y-21.984 B2.878 C241.353 +G01 X+18.876 Y-21.964 B2.88 C241.352 +G01 X+18.771 Y-21.898 B2.879 C237.065 +G01 X+18.673 Y-21.83 B2.878 C234.053 +G01 X+18.582 Y-21.76 C231.135 +G01 X+18.495 Y-21.686 B2.877 C228.23 +G01 X+18.405 Y-21.601 C225.065 +G01 Y-21.464 Z-0.552 B2.756 C222.529 +G01 X+18.331 Y-21.379 C219.563 +G01 X+18.262 Y-21.291 B2.755 C216.601 +G01 X+18.198 Y-21.2 B2.756 C213.643 +G01 X+18.139 Y-21.105 C210.685 +G01 X+18.084 Y-21.008 C207.727 +G01 X+18.035 Y-20.908 C204.769 +G01 X+17.991 Y-20.806 C201.811 +G01 X+17.952 Y-20.701 C198.853 +G01 X+17.919 Y-20.595 C195.894 +G01 X+17.891 Y-20.487 C192.936 +G01 X+17.869 Y-20.378 C189.978 +G01 X+17.852 Y-20.268 C187.019 +G01 X+17.84 Y-20.142 B2.755 C183.646 +G01 X+17.836 Y-20.032 C180.743 +G01 X+17.837 Y-19.922 C177.84 +G01 X+17.844 Y-19.813 C174.936 +G01 X+17.856 Y-19.704 C172.034 +G01 X+17.877 Y-19.579 C168.771 +G01 X+17.896 Y-19.493 B2.756 C166.313 +G01 X+17.925 Y-19.385 C163.374 +G01 X+17.959 Y-19.278 C160.42 +G01 X+17.999 Y-19.175 C157.493 +G01 X+18.044 Y-19.073 C154.553 +G01 X+18.094 Y-18.973 C151.613 +G01 X+18.15 Y-18.877 C148.674 +G01 X+18.21 Y-18.783 C145.733 +G01 X+18.275 Y-18.692 C142.794 +G01 X+18.344 Y-18.605 C139.854 +G01 X+18.418 Y-18.522 C136.914 +G01 X+18.498 Y-18.441 B2.755 C133.933 +G01 X+18.579 Y-18.367 C131.03 +G01 X+18.665 Y-18.296 B2.756 C128.08 +G01 X+18.754 Y-18.23 C125.122 +G01 X+18.847 Y-18.168 C122.164 +G01 X+18.943 Y-18.111 C119.206 +G01 X+19.041 Y-18.059 C116.247 +G01 X+19.143 Y-18.012 C113.29 +G01 X+19.246 Y-17.971 C110.332 +G01 X+19.352 Y-17.935 C107.373 +G01 X+19.459 Y-17.904 C104.415 +G01 X+19.567 Y-17.879 C101.457 +G01 X+19.677 Y-17.859 C98.499 +G01 X+19.804 Y-17.845 B2.755 C95.098 +G01 X+19.913 Y-17.837 C92.195 +G01 X+20.023 Y-17.836 C89.292 +G01 X+20.132 Y-17.84 C86.389 +G01 X+20.242 Y-17.849 C83.485 +G01 X+20.35 Y-17.864 C80.582 +G01 X+20.475 Y-17.889 C77.32 +G01 X+20.561 Y-17.909 B2.756 C74.843 +G01 X+20.67 Y-17.941 C71.872 +G01 X+20.773 Y-17.978 C68.963 +G01 X+20.876 Y-18.021 C66.024 +G01 X+20.977 Y-18.068 C63.084 +G01 X+21.022 Y-18.093 B2.754 C61.352 +G01 X+21.075 Y-18.121 B2.755 +G01 X+21.171 Y-18.179 B2.756 C57.204 +G01 X+21.263 Y-18.242 C54.264 +G01 X+21.352 Y-18.309 C51.324 +G01 X+21.437 Y-18.381 C48.385 +G01 X+21.518 Y-18.457 C45.445 +G01 X+21.596 Y-18.538 B2.755 C42.481 +G01 X+21.669 Y-18.621 C39.56 +G01 X+21.738 Y-18.709 C36.601 +G01 X+21.802 Y-18.8 B2.756 C33.643 +G01 X+21.861 Y-18.894 C30.685 +G01 X+21.916 Y-18.992 C27.727 +G01 X+21.965 Y-19.092 C24.769 +G01 X+22.009 Y-19.194 C21.811 +G01 X+22.048 Y-19.299 C18.853 +G01 X+22.081 Y-19.405 C15.894 +G01 X+22.109 Y-19.513 C12.936 +G01 X+22.131 Y-19.622 C9.978 +G01 X+22.148 Y-19.732 C7.019 +G01 X+22.16 Y-19.858 B2.755 C3.646 +G01 X+22.164 Y-19.968 C0.743 +G01 X+22.163 Y-20.077 C357.84 +G01 X+22.156 Y-20.187 C354.936 +G01 X+22.144 Y-20.296 C352.034 +G01 X+22.123 Y-20.421 C348.771 +G01 X+22.104 Y-20.507 B2.756 C346.313 +G01 X+22.075 Y-20.615 C343.374 +G01 X+22.041 Y-20.721 C340.42 +G01 X+22.001 Y-20.825 C337.493 +G01 X+21.956 Y-20.927 C334.553 +G01 X+21.906 Y-21.026 C331.613 +G01 X+21.85 Y-21.123 C328.674 +G01 X+21.79 Y-21.217 C325.733 +G01 X+21.725 Y-21.307 C322.794 +G01 X+21.656 Y-21.395 C319.854 +G01 X+21.582 Y-21.478 C316.914 +G01 X+21.502 Y-21.559 B2.755 C313.933 +G01 X+21.421 Y-21.633 C311.03 +G01 X+21.335 Y-21.704 B2.756 C308.08 +G01 X+21.246 Y-21.77 C305.122 +G01 X+21.153 Y-21.832 C302.164 +G01 X+21.057 Y-21.889 C299.206 +G01 X+20.959 Y-21.941 C296.247 +G01 X+20.857 Y-21.988 C293.29 +G01 X+20.754 Y-22.029 C290.332 +G01 X+20.648 Y-22.065 C287.373 +G01 X+20.541 Y-22.096 C284.415 +G01 X+20.433 Y-22.121 C281.457 +G01 X+20.323 Y-22.14 C278.499 +G01 X+20.196 Y-22.155 B2.755 C275.098 +G01 X+20.087 Y-22.163 C272.195 +G01 X+19.977 Y-22.164 C269.292 +G01 X+19.868 Y-22.16 C266.389 +G01 X+19.758 Y-22.151 C263.485 +G01 X+19.65 Y-22.136 C260.582 +G01 X+19.525 Y-22.111 C257.32 +G01 X+19.439 Y-22.091 B2.756 C254.843 +G01 X+19.33 Y-22.058 C251.872 +G01 X+19.226 Y-22.021 C248.948 +G01 X+19.126 Y-21.979 B2.755 C246.065 +G01 X+18.978 Y-21.908 C241.352 +G01 X+18.962 Y-21.9 B2.757 +G01 X+18.922 Y-21.881 B2.759 +G01 X+18.824 Y-21.82 B2.758 C237.098 +G01 X+18.73 Y-21.754 B2.757 C234.094 +G01 X+18.642 Y-21.687 C231.177 +G01 X+18.559 Y-21.616 B2.756 C228.268 +G01 X+18.472 Y-21.534 C225.078 +G01 Y-21.396 Z-0.548 B2.634 C222.416 +G01 X+18.405 Y-21.319 C219.578 +G01 X+18.34 Y-21.235 C216.651 +G01 X+18.278 Y-21.148 C213.696 +G01 X+18.221 Y-21.058 C210.74 +G01 X+18.169 Y-20.965 B2.635 C207.784 +G01 X+18.122 Y-20.87 C204.829 +G01 X+18.08 Y-20.772 C201.873 +G01 X+18.043 Y-20.672 C198.917 +G01 X+18.011 Y-20.57 C195.962 +G01 X+17.984 Y-20.467 C193.005 +G01 X+17.962 Y-20.363 C190.05 +G01 X+17.946 Y-20.257 C187.094 +G01 X+17.936 Y-20.151 C184.138 +G01 X+17.931 Y-20.045 C181.183 +G01 Y-19.938 C178.227 +G01 X+17.937 Y-19.832 C175.271 +G01 X+17.953 Y-19.7 B2.634 C171.675 +G01 X+17.97 Y-19.597 C168.771 +G01 X+17.993 Y-19.495 C165.869 +G01 X+18.022 Y-19.394 C162.965 +G01 X+18.048 Y-19.312 B2.635 C160.492 +G01 X+18.086 Y-19.212 C157.537 +G01 X+18.129 Y-19.115 C154.581 +G01 X+18.177 Y-19.02 C151.634 +G01 X+18.231 Y-18.926 B2.634 C148.657 +G01 X+18.288 Y-18.838 B2.635 C145.755 +G01 X+18.35 Y-18.751 C142.819 +G01 X+18.416 Y-18.668 C139.881 +G01 X+18.487 Y-18.588 B2.634 C136.942 +G01 X+18.562 Y-18.512 C134.004 +G01 X+18.641 Y-18.439 C131.029 +G01 X+18.722 Y-18.372 C128.127 +G01 X+18.808 Y-18.308 C125.174 +G01 X+18.896 Y-18.249 C122.218 +G01 X+18.988 Y-18.195 C119.262 +G01 X+19.082 Y-18.145 B2.635 C116.306 +G01 X+19.179 Y-18.1 C113.35 +G01 X+19.278 Y-18.06 C110.395 +G01 X+19.379 Y-18.026 C107.439 +G01 X+19.481 Y-17.996 C104.484 +G01 X+19.585 Y-17.972 C101.528 +G01 X+19.69 Y-17.954 C98.572 +G01 X+19.796 Y-17.94 C95.616 +G01 X+19.902 Y-17.933 C92.661 +G01 X+20.008 Y-17.93 C89.705 +G01 X+20.115 Y-17.933 C86.749 +G01 X+20.248 Y-17.946 B2.634 C83.127 +G01 X+20.351 Y-17.961 C80.223 +G01 X+20.454 Y-17.981 C77.32 +G01 X+20.556 Y-18.007 C74.416 +G01 X+20.656 Y-18.037 C71.513 +G01 X+20.738 Y-18.066 B2.635 C69.014 +G01 X+20.836 Y-18.107 C66.059 +G01 X+20.933 Y-18.152 C63.103 +G01 X+21.027 Y-18.203 B2.634 C61.351 +G01 X+21.119 Y-18.259 B2.635 C57.206 +G01 X+21.206 Y-18.318 C54.288 +G01 X+21.291 Y-18.382 C51.35 +G01 X+21.373 Y-18.451 C48.411 +G01 X+21.45 Y-18.524 B2.634 C45.473 +G01 X+21.525 Y-18.6 C42.535 +G01 X+21.595 Y-18.681 C39.579 +G01 X+21.66 Y-18.764 C36.651 +G01 X+21.722 Y-18.852 C33.696 +G01 X+21.779 Y-18.942 C30.74 +G01 X+21.831 Y-19.035 B2.635 C27.784 +G01 X+21.878 Y-19.13 C24.829 +G01 X+21.92 Y-19.228 C21.873 +G01 X+21.957 Y-19.328 C18.917 +G01 X+21.989 Y-19.43 C15.962 +G01 X+22.016 Y-19.533 C13.005 +G01 X+22.038 Y-19.637 C10.05 +G01 X+22.054 Y-19.743 C7.094 +G01 X+22.064 Y-19.849 C4.138 +G01 X+22.069 Y-19.955 C1.183 +G01 Y-20.062 C358.227 +G01 X+22.063 Y-20.168 C355.271 +G01 X+22.047 Y-20.3 B2.634 C351.675 +G01 X+22.03 Y-20.403 C348.771 +G01 X+22.007 Y-20.505 C345.869 +G01 X+21.978 Y-20.606 C342.965 +G01 X+21.952 Y-20.688 B2.635 C340.492 +G01 X+21.914 Y-20.787 C337.537 +G01 X+21.871 Y-20.885 C334.581 +G01 X+21.823 Y-20.98 C331.634 +G01 X+21.769 Y-21.074 B2.634 C328.657 +G01 X+21.712 Y-21.162 B2.635 C325.755 +G01 X+21.65 Y-21.249 C322.819 +G01 X+21.584 Y-21.332 C319.881 +G01 X+21.513 Y-21.412 B2.634 C316.942 +G01 X+21.438 Y-21.488 C314.004 +G01 X+21.359 Y-21.561 C311.029 +G01 X+21.278 Y-21.628 C308.127 +G01 X+21.192 Y-21.692 C305.174 +G01 X+21.104 Y-21.751 C302.218 +G01 X+21.012 Y-21.805 C299.262 +G01 X+20.918 Y-21.855 B2.635 C296.306 +G01 X+20.821 Y-21.9 C293.35 +G01 X+20.722 Y-21.939 C290.395 +G01 X+20.621 Y-21.974 C287.439 +G01 X+20.519 Y-22.003 C284.484 +G01 X+20.415 Y-22.027 C281.528 +G01 X+20.31 Y-22.046 C278.572 +G01 X+20.204 Y-22.059 C275.616 +G01 X+20.098 Y-22.067 C272.661 +G01 X+19.992 Y-22.07 C269.705 +G01 X+19.885 Y-22.066 C266.749 +G01 X+19.752 Y-22.054 B2.634 C263.127 +G01 X+19.649 Y-22.039 C260.223 +G01 X+19.546 Y-22.019 C257.32 +G01 X+19.444 Y-21.993 C254.416 +G01 X+19.344 Y-21.962 C251.513 +G01 X+19.261 Y-21.933 B2.635 C248.988 +G01 X+19.178 Y-21.899 B2.634 C246.535 +G01 X+19.017 Y-21.821 B2.635 C241.352 +G01 X+19.007 Y-21.817 +G01 X+18.968 Y-21.798 B2.638 +G01 X+18.877 Y-21.741 B2.637 C237.129 +G01 X+18.786 Y-21.677 B2.636 C234.093 +G01 X+18.702 Y-21.613 B2.635 C231.191 +G01 X+18.623 Y-21.545 C228.287 +G01 X+18.54 Y-21.466 C225.091 +G01 X+18.539 Y-21.328 Z-0.543 B2.513 C222.275 +G01 X+18.48 Y-21.26 C219.63 +G01 X+18.416 Y-21.179 C216.674 +G01 X+18.358 Y-21.097 C213.747 +G01 X+18.304 Y-21.011 C210.794 +G01 X+18.254 Y-20.922 C207.841 +G01 X+18.209 Y-20.831 C204.887 +G01 X+18.168 Y-20.738 B2.514 C201.934 +G01 X+18.133 Y-20.643 C198.98 +G01 X+18.102 Y-20.546 C196.026 +G01 X+18.077 Y-20.447 C193.074 +G01 X+18.056 Y-20.348 C190.12 +G01 X+18.041 Y-20.247 C187.166 +G01 X+18.031 Y-20.146 C184.213 +G01 X+18.026 Y-20.044 C181.26 +G01 Y-19.943 C178.307 +G01 X+18.032 Y-19.841 C175.353 +G01 X+18.043 Y-19.74 C172.4 +G01 X+18.059 Y-19.64 C169.447 +G01 X+18.08 Y-19.54 C166.493 +G01 X+18.106 Y-19.442 C163.539 +G01 X+18.137 Y-19.345 C160.586 +G01 X+18.173 Y-19.25 C157.633 +G01 X+18.214 Y-19.157 C154.68 +G01 X+18.26 Y-19.066 C151.727 +G01 X+18.31 Y-18.978 C148.773 +G01 X+18.365 Y-18.892 C145.819 +G01 X+18.425 Y-18.81 C142.866 +G01 X+18.488 Y-18.73 C139.913 +G01 X+18.555 Y-18.654 B2.513 C136.968 +G01 X+18.628 Y-18.58 C133.991 +G01 X+18.702 Y-18.512 C131.087 +G01 X+18.781 Y-18.447 C128.126 +G01 X+18.861 Y-18.387 C125.223 +G01 X+18.946 Y-18.33 C122.27 +G01 X+19.033 Y-18.278 C119.316 +G01 X+19.123 Y-18.231 C116.362 +G01 X+19.215 Y-18.188 C113.409 +G01 X+19.31 Y-18.15 B2.514 C110.457 +G01 X+19.406 Y-18.117 C107.504 +G01 X+19.503 Y-18.089 C104.55 +G01 X+19.602 Y-18.066 C101.597 +G01 X+19.703 Y-18.048 C98.643 +G01 X+19.803 Y-18.035 C95.69 +G01 X+19.905 Y-18.028 C92.737 +G01 X+20.006 Y-18.025 C89.783 +G01 X+20.108 Y-18.028 C86.83 +G01 X+20.209 Y-18.036 C83.877 +G01 X+20.31 Y-18.05 C80.923 +G01 X+20.41 Y-18.068 C77.97 +G01 X+20.509 Y-18.092 C75.016 +G01 X+20.607 Y-18.121 C72.063 +G01 X+20.703 Y-18.155 C69.11 +G01 X+20.797 Y-18.193 C66.156 +G01 X+20.889 Y-18.237 B2.512 C61.353 +G01 X+20.978 Y-18.285 B2.513 C61.352 +G01 X+21.065 Y-18.337 B2.507 +G01 X+21.149 Y-18.394 B2.514 C54.343 +G01 X+21.231 Y-18.456 C51.39 +G01 X+21.308 Y-18.521 B2.513 C48.438 +G01 X+21.383 Y-18.59 C45.501 +G01 X+21.454 Y-18.664 C42.539 +G01 X+21.52 Y-18.74 C39.627 +G01 X+21.584 Y-18.821 C36.674 +G01 X+21.642 Y-18.903 C33.747 +G01 X+21.696 Y-18.989 C30.794 +G01 X+21.746 Y-19.078 C27.841 +G01 X+21.791 Y-19.169 C24.887 +G01 X+21.832 Y-19.262 B2.514 C21.934 +G01 X+21.867 Y-19.357 C18.98 +G01 X+21.898 Y-19.454 C16.026 +G01 X+21.923 Y-19.553 C13.074 +G01 X+21.944 Y-19.652 C10.12 +G01 X+21.959 Y-19.753 C7.166 +G01 X+21.969 Y-19.854 C4.213 +G01 X+21.974 Y-19.956 C1.26 +G01 Y-20.057 C358.307 +G01 X+21.968 Y-20.159 C355.353 +G01 X+21.957 Y-20.26 C352.4 +G01 X+21.941 Y-20.36 C349.447 +G01 X+21.92 Y-20.46 C346.493 +G01 X+21.894 Y-20.558 C343.539 +G01 X+21.863 Y-20.655 C340.586 +G01 X+21.827 Y-20.75 C337.633 +G01 X+21.786 Y-20.843 C334.68 +G01 X+21.74 Y-20.934 C331.727 +G01 X+21.69 Y-21.022 C328.773 +G01 X+21.635 Y-21.108 C325.819 +G01 X+21.575 Y-21.19 C322.866 +G01 X+21.512 Y-21.27 C319.913 +G01 X+21.445 Y-21.346 B2.513 C316.968 +G01 X+21.372 Y-21.42 C313.991 +G01 X+21.298 Y-21.488 C311.087 +G01 X+21.219 Y-21.553 C308.126 +G01 X+21.139 Y-21.613 C305.223 +G01 X+21.054 Y-21.669 C302.27 +G01 X+20.967 Y-21.722 C299.316 +G01 X+20.877 Y-21.769 C296.362 +G01 X+20.785 Y-21.812 C293.409 +G01 X+20.691 Y-21.85 B2.514 C290.457 +G01 X+20.594 Y-21.883 C287.504 +G01 X+20.497 Y-21.911 C284.55 +G01 X+20.398 Y-21.934 C281.597 +G01 X+20.297 Y-21.952 C278.643 +G01 X+20.197 Y-21.965 C275.69 +G01 X+20.095 Y-21.972 C272.737 +G01 X+19.994 Y-21.975 C269.783 +G01 X+19.892 Y-21.972 C266.83 +G01 X+19.791 Y-21.963 C263.877 +G01 X+19.69 Y-21.95 C260.923 +G01 X+19.59 Y-21.931 C257.97 +G01 X+19.491 Y-21.908 C255.016 +G01 X+19.393 Y-21.879 C252.063 +G01 X+19.297 Y-21.845 C249.081 +G01 X+19.218 Y-21.813 B2.513 C246.65 +G01 X+19.011 Y-21.712 B2.517 C241.352 +G01 X+18.93 Y-21.662 B2.509 +G01 X+18.844 Y-21.602 B2.515 C234.152 +G01 X+18.762 Y-21.539 B2.514 C231.191 +G01 X+18.686 Y-21.474 C228.288 +G01 X+18.607 Y-21.399 C225.104 +G01 X+18.606 Y-21.261 Z-0.539 B2.392 C222.135 +G01 X+18.537 Y-21.179 C218.848 +G01 X+18.478 Y-21.102 C215.925 +G01 X+18.438 Y-21.045 C213.772 +G01 X+18.386 Y-20.964 C210.844 +G01 X+18.328 Y-20.857 C207.141 +G01 X+18.286 Y-20.771 C204.212 +G01 X+18.249 Y-20.682 C201.283 +G01 X+18.216 Y-20.592 C198.355 +G01 X+18.194 Y-20.521 B2.393 C196.09 +G01 X+18.17 Y-20.427 C193.139 +G01 X+18.15 Y-20.332 C190.187 +G01 X+18.135 Y-20.237 C187.236 +G01 X+18.126 Y-20.14 C184.286 +G01 X+18.121 Y-20.044 C181.334 +G01 Y-19.947 C178.384 +G01 X+18.13 Y-19.812 B2.392 C174.249 +G01 X+18.143 Y-19.716 C171.32 +G01 X+18.152 Y-19.658 B2.393 C169.532 +G01 X+18.172 Y-19.564 C166.58 +G01 X+18.197 Y-19.47 C163.629 +G01 X+18.226 Y-19.378 C160.678 +G01 X+18.261 Y-19.288 C157.728 +G01 X+18.3 Y-19.199 C154.776 +G01 X+18.343 Y-19.113 C151.825 +G01 X+18.391 Y-19.028 C148.875 +G01 X+18.443 Y-18.947 C145.923 +G01 X+18.499 Y-18.868 C142.972 +G01 X+18.56 Y-18.792 C140.021 +G01 X+18.624 Y-18.72 C137.071 +G01 X+18.691 Y-18.651 C134.12 +G01 X+18.784 Y-18.567 B2.392 C130.319 +G01 X+18.859 Y-18.507 C127.39 +G01 X+18.937 Y-18.451 C124.462 +G01 X+18.995 Y-18.412 C122.319 +G01 X+19.1 Y-18.35 C118.604 +G01 X+19.186 Y-18.306 C115.676 +G01 X+19.273 Y-18.267 C112.748 +G01 X+19.363 Y-18.232 C109.82 +G01 X+19.433 Y-18.208 B2.393 C107.565 +G01 X+19.526 Y-18.181 C104.614 +G01 X+19.62 Y-18.159 C101.663 +G01 X+19.715 Y-18.142 C98.712 +G01 X+19.811 Y-18.13 C95.76 +G01 X+19.908 Y-18.123 C92.811 +G01 X+20.005 Y-18.12 C89.859 +G01 X+20.101 Y-18.123 C86.908 +G01 X+20.236 Y-18.136 B2.392 C82.784 +G01 X+20.331 Y-18.15 C79.855 +G01 X+20.389 Y-18.161 B2.393 C78.055 +G01 X+20.483 Y-18.183 C75.105 +G01 X+20.576 Y-18.211 C72.153 +G01 X+20.667 Y-18.243 C69.203 +G01 X+20.757 Y-18.279 C66.252 +G01 X+20.844 Y-18.321 B2.391 C61.352 +G01 X+20.93 Y-18.366 B2.392 C61.353 +G01 X+21.013 Y-18.416 B2.388 C61.352 +G01 X+21.093 Y-18.471 B2.393 C54.448 +G01 X+21.17 Y-18.529 C51.498 +G01 X+21.244 Y-18.591 C48.546 +G01 X+21.315 Y-18.657 C45.596 +G01 X+21.383 Y-18.727 C42.644 +G01 X+21.463 Y-18.821 B2.392 C38.855 +G01 X+21.522 Y-18.897 C35.926 +G01 X+21.562 Y-18.955 C33.772 +G01 X+21.614 Y-19.036 C30.844 +G01 X+21.672 Y-19.143 C27.141 +G01 X+21.714 Y-19.229 C24.212 +G01 X+21.751 Y-19.318 C21.283 +G01 X+21.784 Y-19.408 C18.355 +G01 X+21.806 Y-19.479 B2.393 C16.09 +G01 X+21.83 Y-19.573 C13.139 +G01 X+21.85 Y-19.667 C10.187 +G01 X+21.865 Y-19.763 C7.236 +G01 X+21.874 Y-19.859 C4.286 +G01 X+21.879 Y-19.956 C1.334 +G01 Y-20.053 C358.384 +G01 X+21.87 Y-20.188 B2.392 C354.249 +G01 X+21.857 Y-20.284 C351.32 +G01 X+21.848 Y-20.341 B2.393 C349.532 +G01 X+21.828 Y-20.436 C346.58 +G01 X+21.803 Y-20.53 C343.629 +G01 X+21.774 Y-20.622 C340.678 +G01 X+21.739 Y-20.712 C337.728 +G01 X+21.7 Y-20.801 C334.776 +G01 X+21.657 Y-20.887 C331.825 +G01 X+21.609 Y-20.971 C328.875 +G01 X+21.557 Y-21.053 C325.923 +G01 X+21.501 Y-21.132 C322.972 +G01 X+21.44 Y-21.208 C320.021 +G01 X+21.376 Y-21.28 C317.071 +G01 X+21.309 Y-21.349 C314.12 +G01 X+21.216 Y-21.433 B2.392 C310.319 +G01 X+21.141 Y-21.493 C307.39 +G01 X+21.063 Y-21.549 C304.462 +G01 X+21.005 Y-21.588 C302.319 +G01 X+20.9 Y-21.65 C298.604 +G01 X+20.814 Y-21.693 C295.676 +G01 X+20.727 Y-21.733 C292.748 +G01 X+20.637 Y-21.768 C289.82 +G01 X+20.567 Y-21.792 B2.393 C287.565 +G01 X+20.474 Y-21.819 C284.614 +G01 X+20.38 Y-21.841 C281.663 +G01 X+20.285 Y-21.858 C278.712 +G01 X+20.189 Y-21.87 C275.76 +G01 X+20.092 Y-21.877 C272.811 +G01 X+19.995 Y-21.88 C269.859 +G01 X+19.899 Y-21.877 C266.908 +G01 X+19.764 Y-21.864 B2.392 C262.784 +G01 X+19.669 Y-21.85 C259.855 +G01 X+19.611 Y-21.839 B2.393 C258.055 +G01 X+19.517 Y-21.816 C255.105 +G01 X+19.424 Y-21.789 C252.154 +G01 X+19.332 Y-21.757 C249.171 +G01 X+19.259 Y-21.727 B2.392 C246.763 +G01 X+19.056 Y-21.629 B2.395 C241.353 +G01 X+18.975 Y-21.578 B2.388 C241.351 +G01 X+18.897 Y-21.523 B2.394 C234.094 +G01 X+18.822 Y-21.465 B2.393 C231.191 +G01 X+18.749 Y-21.403 C228.288 +G01 X+18.674 Y-21.332 C225.118 +G01 X+18.673 Y-21.193 Z-0.535 B2.272 C221.921 +G01 X+18.61 Y-21.119 C218.793 +G01 X+18.555 Y-21.046 C215.88 +G01 X+18.503 Y-20.971 C212.953 +G01 X+18.456 Y-20.893 C210.024 +G01 X+18.423 Y-20.836 C207.922 +G01 X+18.373 Y-20.731 C204.167 +G01 X+18.337 Y-20.647 C201.238 +G01 X+18.306 Y-20.561 C198.31 +G01 X+18.28 Y-20.474 C195.382 +G01 X+18.262 Y-20.407 C193.129 +G01 X+18.244 Y-20.317 C190.182 +G01 X+18.23 Y-20.226 C187.233 +G01 X+18.22 Y-20.135 C184.284 +G01 X+18.216 Y-20.043 C181.335 +G01 Y-19.951 C178.387 +G01 X+18.225 Y-19.821 C174.204 +G01 X+18.236 Y-19.731 C171.274 +G01 X+18.245 Y-19.677 C169.542 +G01 X+18.264 Y-19.587 C166.594 +G01 X+18.287 Y-19.498 C163.645 +G01 X+18.315 Y-19.411 C160.696 +G01 X+18.348 Y-19.325 C157.748 +G01 X+18.385 Y-19.241 C154.799 +G01 X+18.426 Y-19.159 C151.851 +G01 X+18.471 Y-19.079 C148.903 +G01 X+18.521 Y-19.001 C145.953 +G01 X+18.574 Y-18.927 C143.006 +G01 X+18.631 Y-18.855 C140.058 +G01 X+18.692 Y-18.786 C137.109 +G01 X+18.756 Y-18.72 C134.16 +G01 X+18.846 Y-18.639 C130.275 +G01 X+18.917 Y-18.582 C127.345 +G01 X+18.991 Y-18.529 C124.417 +G01 X+19.067 Y-18.479 C121.489 +G01 X+19.123 Y-18.445 C119.417 +G01 X+19.227 Y-18.392 C115.632 +G01 X+19.311 Y-18.354 C112.702 +G01 X+19.396 Y-18.321 C109.774 +G01 X+19.482 Y-18.293 C106.845 +G01 X+19.548 Y-18.273 C104.604 +G01 X+19.638 Y-18.252 C101.656 +G01 X+19.728 Y-18.236 C98.707 +G01 X+19.819 Y-18.224 C95.758 +G01 X+19.911 Y-18.218 C92.81 +G01 X+20.003 Y-18.215 C89.861 +G01 X+20.095 Y-18.218 C86.913 +G01 X+20.224 Y-18.23 C82.738 +G01 X+20.314 Y-18.244 C79.81 +G01 X+20.368 Y-18.254 C78.067 +G01 X+20.457 Y-18.275 C75.119 +G01 X+20.545 Y-18.301 C72.171 +G01 X+20.632 Y-18.331 C69.222 +G01 X+20.717 Y-18.366 B2.264 C61.353 +G01 X+20.8 Y-18.405 B2.271 C61.352 +G01 X+20.881 Y-18.448 B2.272 +G01 X+20.96 Y-18.496 B2.267 +G01 X+21.036 Y-18.547 B2.272 C54.48 +G01 X+21.11 Y-18.602 C51.53 +G01 X+21.18 Y-18.661 C48.582 +G01 X+21.248 Y-18.724 C45.635 +G01 X+21.312 Y-18.79 C42.686 +G01 X+21.39 Y-18.881 C38.81 +G01 X+21.445 Y-18.953 C35.881 +G01 X+21.497 Y-19.029 C32.953 +G01 X+21.544 Y-19.106 C30.024 +G01 X+21.577 Y-19.164 C27.922 +G01 X+21.627 Y-19.269 C24.167 +G01 X+21.663 Y-19.353 C21.238 +G01 X+21.694 Y-19.439 C18.31 +G01 X+21.72 Y-19.526 C15.382 +G01 X+21.738 Y-19.593 C13.13 +G01 X+21.756 Y-19.683 C10.182 +G01 X+21.77 Y-19.774 C7.233 +G01 X+21.78 Y-19.865 C4.284 +G01 X+21.784 Y-19.957 C1.335 +G01 Y-20.049 C358.387 +G01 X+21.775 Y-20.178 C354.204 +G01 X+21.764 Y-20.269 C351.274 +G01 X+21.755 Y-20.323 C349.542 +G01 X+21.736 Y-20.413 C346.594 +G01 X+21.713 Y-20.501 C343.645 +G01 X+21.685 Y-20.589 C340.696 +G01 X+21.652 Y-20.675 C337.748 +G01 X+21.615 Y-20.759 C334.799 +G01 X+21.574 Y-20.841 C331.851 +G01 X+21.529 Y-20.921 C328.903 +G01 X+21.479 Y-20.999 C325.953 +G01 X+21.426 Y-21.073 C323.006 +G01 X+21.369 Y-21.145 C320.058 +G01 X+21.308 Y-21.214 C317.109 +G01 X+21.244 Y-21.28 C314.16 +G01 X+21.154 Y-21.36 C310.275 +G01 X+21.083 Y-21.418 C307.345 +G01 X+21.009 Y-21.471 C304.417 +G01 X+20.933 Y-21.521 C301.489 +G01 X+20.877 Y-21.554 C299.417 +G01 X+20.773 Y-21.608 C295.632 +G01 X+20.689 Y-21.646 C292.702 +G01 X+20.604 Y-21.679 C289.774 +G01 X+20.518 Y-21.707 C286.845 +G01 X+20.452 Y-21.726 C284.604 +G01 X+20.362 Y-21.747 C281.656 +G01 X+20.272 Y-21.764 C278.707 +G01 X+20.181 Y-21.775 C275.758 +G01 X+20.089 Y-21.782 C272.81 +G01 X+19.997 Y-21.785 C269.861 +G01 X+19.905 Y-21.782 C266.913 +G01 X+19.776 Y-21.77 C262.738 +G01 X+19.686 Y-21.756 C259.81 +G01 X+19.632 Y-21.746 C258.067 +G01 X+19.543 Y-21.725 C255.119 +G01 X+19.455 Y-21.699 C252.172 +G01 X+19.367 Y-21.668 C249.187 +G01 X+19.299 Y-21.641 C246.804 +G01 X+19.104 Y-21.546 Z-0.536 B2.275 C241.353 +G01 X+19.027 Y-21.498 Z-0.535 B2.268 C241.351 +G01 X+18.953 Y-21.446 B2.274 C234.094 +G01 X+18.881 Y-21.391 B2.273 C231.191 +G01 X+18.812 Y-21.332 C228.287 +G01 X+18.741 Y-21.264 B2.272 C225.06 +G01 X+18.74 Y-21.126 Z-0.532 B2.151 C221.708 +G01 X+18.684 Y-21.058 C218.737 +G01 X+18.632 Y-20.99 C215.834 +G01 X+18.583 Y-20.919 C212.908 +G01 X+18.538 Y-20.846 C209.978 +G01 X+18.496 Y-20.77 C207.049 +G01 X+18.469 Y-20.715 C205.03 +G01 X+18.426 Y-20.612 C201.192 +G01 X+18.392 Y-20.516 B2.15 C197.804 +G01 X+18.368 Y-20.434 C194.901 +G01 X+18.347 Y-20.347 C191.751 +G01 X+18.331 Y-20.262 B2.151 C188.801 +G01 X+18.32 Y-20.176 C185.872 +G01 X+18.313 Y-20.09 C182.944 +G01 X+18.311 Y-20.004 C180.014 +G01 X+18.313 Y-19.918 C177.085 +G01 X+18.319 Y-19.831 C174.157 +G01 X+18.33 Y-19.746 C171.229 +G01 X+18.345 Y-19.661 C168.3 +G01 X+18.369 Y-19.559 C164.838 +G01 X+18.394 Y-19.477 C161.91 +G01 X+18.423 Y-19.395 C158.981 +G01 X+18.456 Y-19.315 C156.052 +G01 X+18.493 Y-19.237 C153.124 +G01 X+18.534 Y-19.161 C150.195 +G01 X+18.579 Y-19.087 C147.267 +G01 X+18.627 Y-19.016 C144.338 +G01 X+18.679 Y-18.947 C141.409 +G01 X+18.735 Y-18.881 C138.481 +G01 X+18.794 Y-18.818 C135.552 +G01 X+18.856 Y-18.757 C132.623 +G01 X+18.921 Y-18.701 B2.15 C129.694 +G01 X+18.989 Y-18.647 C126.767 +G01 X+19.059 Y-18.597 B2.151 C123.838 +G01 X+19.132 Y-18.551 B2.15 C120.91 +G01 X+19.208 Y-18.508 C117.966 +G01 X+19.301 Y-18.462 B2.151 C114.373 +G01 X+19.405 Y-18.419 C110.547 +G01 X+19.51 Y-18.383 C106.8 +G01 X+19.607 Y-18.357 B2.15 C103.449 +G01 X+19.695 Y-18.339 C100.273 +G01 X+19.781 Y-18.325 B2.151 C97.335 +G01 X+19.867 Y-18.316 C94.408 +G01 X+19.953 Y-18.312 C91.478 +G01 X+20.039 Y-18.311 C88.551 +G01 X+20.126 Y-18.316 C85.621 +G01 X+20.212 Y-18.324 C82.692 +G01 X+20.297 Y-18.337 C79.765 +G01 X+20.399 Y-18.359 C76.303 +G01 X+20.482 Y-18.381 C73.374 +G01 X+20.564 Y-18.408 C70.445 +G01 X+20.645 Y-18.439 C67.517 +G01 X+20.724 Y-18.474 B2.147 C61.352 +G01 X+20.801 Y-18.513 B2.15 +G01 X+20.876 Y-18.556 B2.148 +G01 X+20.949 Y-18.602 B2.151 C55.802 +G01 X+21.019 Y-18.653 C52.874 +G01 X+21.086 Y-18.707 C49.945 +G01 X+21.151 Y-18.764 C47.016 +G01 X+21.213 Y-18.824 C44.088 +G01 X+21.271 Y-18.888 B2.15 C41.159 +G01 X+21.327 Y-18.954 B2.151 C38.231 +G01 X+21.378 Y-19.024 B2.15 C35.302 +G01 X+21.426 Y-19.095 C32.373 +G01 X+21.471 Y-19.17 C29.417 +G01 X+21.511 Y-19.246 C26.513 +G01 X+21.555 Y-19.34 B2.151 C22.91 +G01 X+21.596 Y-19.446 C19.052 +G01 X+21.629 Y-19.552 C15.335 +G01 X+21.645 Y-19.613 C13.118 +G01 X+21.662 Y-19.698 C10.17 +G01 X+21.676 Y-19.784 C7.225 +G01 X+21.685 Y-19.871 C4.279 +G01 X+21.689 Y-19.958 C1.333 +G01 Y-20.045 C358.386 +G01 X+21.681 Y-20.169 C354.157 +G01 X+21.67 Y-20.254 C351.229 +G01 X+21.655 Y-20.339 C348.3 +G01 X+21.631 Y-20.44 C344.838 +G01 X+21.606 Y-20.523 C341.91 +G01 X+21.577 Y-20.605 C338.981 +G01 X+21.544 Y-20.684 C336.052 +G01 X+21.507 Y-20.763 C333.124 +G01 X+21.466 Y-20.839 C330.195 +G01 X+21.421 Y-20.913 C327.267 +G01 X+21.373 Y-20.984 C324.338 +G01 X+21.321 Y-21.053 C321.409 +G01 X+21.265 Y-21.119 C318.481 +G01 X+21.206 Y-21.182 C315.552 +G01 X+21.144 Y-21.242 C312.623 +G01 X+21.079 Y-21.299 B2.15 C309.694 +G01 X+21.011 Y-21.353 C306.767 +G01 X+20.941 Y-21.403 B2.151 C303.838 +G01 X+20.868 Y-21.449 B2.15 C300.91 +G01 X+20.792 Y-21.492 C297.966 +G01 X+20.699 Y-21.537 B2.151 C294.373 +G01 X+20.595 Y-21.581 C290.547 +G01 X+20.49 Y-21.617 C286.8 +G01 X+20.393 Y-21.643 B2.15 C283.449 +G01 X+20.305 Y-21.661 C280.273 +G01 X+20.219 Y-21.675 B2.151 C277.335 +G01 X+20.133 Y-21.684 C274.408 +G01 X+20.047 Y-21.688 C271.478 +G01 X+19.961 Y-21.689 C268.551 +G01 X+19.874 Y-21.684 C265.621 +G01 X+19.788 Y-21.676 C262.692 +G01 X+19.703 Y-21.663 C259.765 +G01 X+19.601 Y-21.641 C256.303 +G01 X+19.518 Y-21.619 C253.374 +G01 X+19.436 Y-21.592 C250.442 +G01 X+19.356 Y-21.562 C247.556 +G01 X+19.151 Y-21.464 B2.154 C241.352 +G01 X+19.079 Y-21.418 B2.147 C241.353 +G01 X+19.008 Y-21.369 B2.153 C234.093 +G01 X+18.941 Y-21.317 B2.152 C231.191 +G01 X+18.857 Y-21.244 B2.151 C227.379 +G01 X+18.808 Y-21.197 C225.001 +G01 X+18.807 Y-21.058 Z-0.528 B2.03 C221.494 +G01 X+18.748 Y-20.987 C218.223 +G01 X+18.698 Y-20.919 B2.029 C215.224 +G01 X+18.653 Y-20.852 C212.32 +G01 X+18.611 Y-20.783 C209.416 +G01 X+18.574 Y-20.712 C206.513 +G01 X+18.539 Y-20.638 C203.61 +G01 X+18.503 Y-20.549 B2.03 C200.01 +G01 X+18.469 Y-20.446 C196.174 +G01 X+18.441 Y-20.331 B2.029 C191.997 +G01 X+18.423 Y-20.233 B2.03 C188.296 +G01 X+18.41 Y-20.123 C184.27 +G01 X+18.406 Y-20.041 C181.326 +G01 X+18.408 Y-19.923 C177.041 +G01 X+18.414 Y-19.841 C174.114 +G01 X+18.424 Y-19.76 C171.185 +G01 X+18.438 Y-19.68 C168.256 +G01 X+18.461 Y-19.586 C164.868 +G01 X+18.484 Y-19.508 C161.939 +G01 X+18.511 Y-19.431 C159.01 +G01 X+18.542 Y-19.355 C156.083 +G01 X+18.577 Y-19.282 C153.153 +G01 X+18.616 Y-19.21 C150.224 +G01 X+18.677 Y-19.11 C146.003 +G01 X+18.724 Y-19.043 C143.059 +G01 X+18.775 Y-18.979 C140.115 +G01 X+18.829 Y-18.917 C137.171 +G01 X+18.908 Y-18.838 C133.113 +G01 X+18.981 Y-18.774 C129.724 +G01 X+19.048 Y-18.721 B2.029 C126.675 +G01 X+19.144 Y-18.655 B2.03 C122.452 +G01 X+19.238 Y-18.6 C118.47 +G01 X+19.325 Y-18.556 B2.029 C115.063 +G01 X+19.413 Y-18.518 B2.03 C111.475 +G01 X+19.515 Y-18.481 C107.666 +G01 X+19.629 Y-18.45 B2.029 C103.449 +G01 X+19.727 Y-18.429 B2.03 C99.76 +G01 X+19.836 Y-18.414 C95.742 +G01 X+19.917 Y-18.407 C92.798 +G01 X+20 Y-18.405 C89.854 +G01 X+20.118 Y-18.41 C85.577 +G01 X+20.199 Y-18.418 C82.649 +G01 X+20.28 Y-18.431 C79.72 +G01 X+20.374 Y-18.45 C76.331 +G01 X+20.453 Y-18.472 C73.403 +G01 X+20.531 Y-18.497 C70.474 +G01 X+20.607 Y-18.526 C67.547 +G01 X+20.682 Y-18.559 B2.026 C61.352 +G01 X+20.755 Y-18.596 B2.029 C61.353 +G01 X+20.825 Y-18.636 B2.027 C61.352 +G01 X+20.924 Y-18.7 B2.03 C54.53 +G01 X+20.989 Y-18.749 C51.586 +G01 X+21.052 Y-18.802 C48.643 +G01 X+21.133 Y-18.879 C44.578 +G01 X+21.199 Y-18.95 B2.029 C41.189 +G01 X+21.254 Y-19.016 C38.127 +G01 X+21.302 Y-19.081 C35.224 +G01 X+21.347 Y-19.148 C32.32 +G01 X+21.389 Y-19.217 C29.416 +G01 X+21.426 Y-19.288 C26.513 +G01 X+21.461 Y-19.361 C23.61 +G01 X+21.497 Y-19.451 B2.03 C20.01 +G01 X+21.531 Y-19.554 C16.174 +G01 X+21.559 Y-19.669 B2.029 C11.997 +G01 X+21.577 Y-19.767 B2.03 C8.296 +G01 X+21.59 Y-19.876 C4.27 +G01 X+21.594 Y-19.958 C1.326 +G01 X+21.592 Y-20.077 C357.041 +G01 X+21.586 Y-20.159 C354.114 +G01 X+21.576 Y-20.24 C351.185 +G01 X+21.562 Y-20.32 C348.256 +G01 X+21.539 Y-20.414 C344.868 +G01 X+21.516 Y-20.492 C341.939 +G01 X+21.489 Y-20.569 C339.01 +G01 X+21.458 Y-20.645 C336.083 +G01 X+21.423 Y-20.718 C333.153 +G01 X+21.384 Y-20.79 C330.224 +G01 X+21.323 Y-20.89 C326.003 +G01 X+21.276 Y-20.957 C323.059 +G01 X+21.225 Y-21.021 C320.115 +G01 X+21.171 Y-21.083 C317.171 +G01 X+21.092 Y-21.162 C313.113 +G01 X+21.019 Y-21.226 C309.724 +G01 X+20.952 Y-21.278 B2.029 C306.675 +G01 X+20.856 Y-21.345 B2.03 C302.452 +G01 X+20.762 Y-21.4 C298.47 +G01 X+20.675 Y-21.444 B2.029 C295.063 +G01 X+20.587 Y-21.482 B2.03 C291.475 +G01 X+20.485 Y-21.519 C287.666 +G01 X+20.371 Y-21.55 B2.029 C283.449 +G01 X+20.274 Y-21.57 B2.03 C279.76 +G01 X+20.164 Y-21.586 C275.742 +G01 X+20.083 Y-21.592 C272.798 +G01 X+20 Y-21.595 C269.854 +G01 X+19.882 Y-21.59 C265.577 +G01 X+19.801 Y-21.582 C262.649 +G01 X+19.72 Y-21.569 C259.72 +G01 X+19.626 Y-21.549 C256.331 +G01 X+19.547 Y-21.528 C253.403 +G01 X+19.469 Y-21.503 C250.472 +G01 X+19.379 Y-21.468 C247.025 +G01 X+19.197 Y-21.381 B2.033 C241.353 +G01 X+19.131 Y-21.339 B2.026 +G01 X+19.064 Y-21.292 B2.032 C234.093 +G01 X+18.969 Y-21.217 B2.03 C229.74 +G01 X+18.884 Y-21.14 B2.031 C225.573 +G01 X+18.875 Y-21.13 B2.03 C224.941 +G01 X+18.874 Y-20.99 Z-0.525 B1.909 C221.28 +G01 X+18.821 Y-20.926 C218.126 +G01 X+18.757 Y-20.839 C213.962 +G01 X+18.696 Y-20.739 C209.505 +G01 X+18.643 Y-20.637 C205.139 +G01 X+18.598 Y-20.53 B1.908 C200.707 +G01 X+18.569 Y-20.446 B1.909 C197.114 +G01 X+18.541 Y-20.346 C193.299 +G01 X+18.525 Y-20.271 C190.32 +G01 X+18.513 Y-20.194 C187.342 +G01 X+18.505 Y-20.118 C184.361 +G01 X+18.501 Y-20.041 C181.383 +G01 X+18.503 Y-19.928 C177.103 +G01 X+18.508 Y-19.851 C174.149 +G01 X+18.518 Y-19.775 C171.195 +G01 X+18.531 Y-19.699 C168.241 +G01 X+18.552 Y-19.612 C164.899 +G01 X+18.574 Y-19.539 C161.971 +G01 X+18.599 Y-19.466 C159.041 +G01 X+18.628 Y-19.395 C156.113 +G01 X+18.661 Y-19.326 C153.185 +G01 X+18.697 Y-19.258 C150.257 +G01 X+18.737 Y-19.192 C147.328 +G01 X+18.78 Y-19.129 C144.398 +G01 X+18.826 Y-19.068 C141.47 +G01 X+18.898 Y-18.983 C137.198 +G01 X+18.983 Y-18.899 C132.686 +G01 X+19.045 Y-18.844 B1.908 C129.578 +G01 X+19.129 Y-18.779 B1.909 C125.433 +G01 X+19.228 Y-18.715 C120.97 +G01 X+19.297 Y-18.676 B1.908 C117.964 +G01 X+19.365 Y-18.642 C115.062 +G01 X+19.435 Y-18.612 C112.16 +G01 X+19.506 Y-18.585 C109.255 +G01 X+19.591 Y-18.558 B1.909 C105.649 +G01 X+19.691 Y-18.532 C101.81 +G01 X+19.767 Y-18.519 C98.83 +G01 X+19.844 Y-18.508 C95.851 +G01 X+19.921 Y-18.502 C92.872 +G01 X+20.034 Y-18.501 C88.579 +G01 X+20.11 Y-18.505 C85.626 +G01 X+20.187 Y-18.513 C82.672 +G01 X+20.263 Y-18.524 C79.717 +G01 X+20.35 Y-18.542 C76.364 +G01 X+20.424 Y-18.562 C73.436 +G01 X+20.498 Y-18.586 C70.506 +G01 X+20.569 Y-18.613 C67.579 +G01 X+20.64 Y-18.644 B1.905 C61.352 +G01 X+20.708 Y-18.679 B1.908 C61.353 +G01 X+20.775 Y-18.717 B1.907 C61.352 +G01 X+20.84 Y-18.758 B1.9 +G01 X+20.902 Y-18.803 B1.909 C52.935 +G01 X+20.988 Y-18.872 C48.669 +G01 X+21.075 Y-18.955 C44.15 +G01 X+21.131 Y-19.016 C41.028 +G01 X+21.198 Y-19.098 C36.904 +G01 X+21.265 Y-19.195 C32.435 +G01 X+21.306 Y-19.264 C29.417 +G01 X+21.357 Y-19.362 C25.139 +G01 X+21.402 Y-19.47 B1.908 C20.707 +G01 X+21.431 Y-19.554 B1.909 C17.114 +G01 X+21.459 Y-19.654 C13.299 +G01 X+21.475 Y-19.729 C10.32 +G01 X+21.487 Y-19.805 C7.342 +G01 X+21.495 Y-19.882 C4.361 +G01 X+21.499 Y-19.959 C1.383 +G01 X+21.497 Y-20.072 C357.103 +G01 X+21.492 Y-20.149 C354.149 +G01 X+21.482 Y-20.225 C351.195 +G01 X+21.469 Y-20.3 C348.241 +G01 X+21.448 Y-20.387 C344.899 +G01 X+21.426 Y-20.461 C341.971 +G01 X+21.401 Y-20.533 C339.041 +G01 X+21.372 Y-20.605 C336.113 +G01 X+21.339 Y-20.674 C333.185 +G01 X+21.303 Y-20.742 C330.257 +G01 X+21.263 Y-20.807 C327.328 +G01 X+21.22 Y-20.871 C324.398 +G01 X+21.174 Y-20.932 C321.47 +G01 X+21.102 Y-21.017 C317.198 +G01 X+21.017 Y-21.101 C312.686 +G01 X+20.955 Y-21.155 B1.908 C309.578 +G01 X+20.871 Y-21.221 B1.909 C305.433 +G01 X+20.772 Y-21.285 C300.97 +G01 X+20.703 Y-21.324 B1.908 C297.964 +G01 X+20.635 Y-21.358 C295.062 +G01 X+20.565 Y-21.388 C292.16 +G01 X+20.494 Y-21.415 C289.255 +G01 X+20.409 Y-21.442 B1.909 C285.649 +G01 X+20.309 Y-21.467 C281.81 +G01 X+20.233 Y-21.481 C278.83 +G01 X+20.156 Y-21.491 C275.851 +G01 X+20.079 Y-21.497 C272.872 +G01 X+19.966 Y-21.499 C268.579 +G01 X+19.89 Y-21.495 C265.626 +G01 X+19.813 Y-21.487 C262.672 +G01 X+19.737 Y-21.476 C259.717 +G01 X+19.65 Y-21.458 C256.364 +G01 X+19.576 Y-21.438 C253.436 +G01 X+19.502 Y-21.414 C250.503 +G01 X+19.418 Y-21.382 B1.899 C241.351 +G01 X+19.243 Y-21.298 B1.912 C241.352 +G01 X+19.182 Y-21.259 B1.906 C241.353 +G01 X+19.12 Y-21.215 B1.911 C234.093 +G01 X+19.031 Y-21.145 B1.909 C229.74 +G01 X+18.952 Y-21.073 B1.91 C225.599 +G01 X+18.942 Y-21.063 B1.909 C224.96 +G01 X+18.941 Y-20.923 Z-0.522 B1.788 C221.067 +G01 X+18.879 Y-20.846 C216.94 +G01 X+18.813 Y-20.751 B1.787 C212.321 +G01 X+18.762 Y-20.663 B1.788 C208.119 +G01 X+18.713 Y-20.562 C203.611 +G01 X+18.687 Y-20.496 C200.707 +G01 X+18.663 Y-20.429 B1.787 C197.804 +G01 X+18.64 Y-20.351 B1.788 C194.268 +G01 X+18.619 Y-20.255 C190.429 +G01 X+18.608 Y-20.184 C187.454 +G01 X+18.6 Y-20.112 C184.48 +G01 X+18.596 Y-19.995 C179.576 +G01 X+18.599 Y-19.895 C175.556 +G01 X+18.612 Y-19.79 C171.262 +G01 X+18.626 Y-19.709 C167.862 +G01 X+18.65 Y-19.611 C163.673 +G01 X+18.672 Y-19.542 C160.734 +G01 X+18.698 Y-19.474 C157.795 +G01 X+18.726 Y-19.408 C154.855 +G01 X+18.779 Y-19.307 C150.29 +G01 X+18.833 Y-19.219 C146.038 +G01 X+18.899 Y-19.128 C141.504 +G01 X+18.946 Y-19.073 C138.575 +G01 X+18.994 Y-19.02 C135.647 +G01 X+19.046 Y-18.97 C132.717 +G01 X+19.105 Y-18.918 C129.577 +G01 X+19.183 Y-18.857 C125.466 +G01 X+19.28 Y-18.795 B1.787 C120.868 +G01 X+19.369 Y-18.745 B1.788 C116.651 +G01 X+19.47 Y-18.7 C112.159 +G01 X+19.537 Y-18.674 B1.787 C109.255 +G01 X+19.605 Y-18.653 C106.353 +G01 X+19.684 Y-18.632 B1.788 C102.791 +G01 X+19.78 Y-18.613 C98.942 +G01 X+19.852 Y-18.603 C95.968 +G01 X+19.969 Y-18.596 C91.04 +G01 X+20.069 Y-18.597 C87.044 +G01 X+20.174 Y-18.607 C82.738 +G01 X+20.256 Y-18.619 C79.326 +G01 X+20.354 Y-18.641 C75.145 +G01 X+20.424 Y-18.661 C72.204 +G01 X+20.492 Y-18.684 C69.265 +G01 X+20.559 Y-18.712 B1.781 C61.352 +G01 X+20.662 Y-18.761 B1.787 C61.353 +G01 X+20.751 Y-18.813 B1.784 +G01 X+20.843 Y-18.877 B1.788 C52.968 +G01 X+20.9 Y-18.922 C50.041 +G01 X+20.954 Y-18.97 C47.111 +G01 X+21.005 Y-19.02 C44.183 +G01 X+21.059 Y-19.078 C41.029 +G01 X+21.121 Y-19.154 C36.936 +G01 X+21.187 Y-19.249 B1.787 C32.321 +G01 X+21.238 Y-19.337 B1.788 C28.119 +G01 X+21.287 Y-19.438 C23.611 +G01 X+21.313 Y-19.503 C20.707 +G01 X+21.337 Y-19.571 B1.787 C17.804 +G01 X+21.36 Y-19.649 B1.788 C14.268 +G01 X+21.381 Y-19.745 C10.429 +G01 X+21.393 Y-19.816 C7.454 +G01 X+21.4 Y-19.888 C4.48 +G01 X+21.404 Y-20.005 C359.576 +G01 X+21.401 Y-20.105 C355.556 +G01 X+21.388 Y-20.21 C351.262 +G01 X+21.374 Y-20.291 C347.862 +G01 X+21.35 Y-20.389 C343.673 +G01 X+21.328 Y-20.458 C340.734 +G01 X+21.302 Y-20.526 C337.795 +G01 X+21.274 Y-20.592 C334.855 +G01 X+21.221 Y-20.693 C330.29 +G01 X+21.167 Y-20.781 C326.038 +G01 X+21.101 Y-20.872 C321.504 +G01 X+21.054 Y-20.927 C318.575 +G01 X+21.006 Y-20.98 C315.647 +G01 X+20.954 Y-21.03 C312.717 +G01 X+20.895 Y-21.082 C309.577 +G01 X+20.817 Y-21.143 C305.466 +G01 X+20.72 Y-21.205 B1.787 C300.868 +G01 X+20.631 Y-21.255 B1.788 C296.65 +G01 X+20.53 Y-21.3 C292.159 +G01 X+20.463 Y-21.325 B1.787 C289.255 +G01 X+20.395 Y-21.347 C286.353 +G01 X+20.316 Y-21.368 B1.788 C282.791 +G01 X+20.22 Y-21.387 C278.942 +G01 X+20.148 Y-21.397 C275.968 +G01 X+20.031 Y-21.404 C271.04 +G01 X+19.931 Y-21.403 C267.044 +G01 X+19.826 Y-21.393 C262.738 +G01 X+19.744 Y-21.381 C259.326 +G01 X+19.646 Y-21.359 C255.145 +G01 X+19.576 Y-21.339 C252.204 +G01 X+19.47 Y-21.3 B1.776 C241.352 +G01 X+19.289 Y-21.214 B1.791 C241.353 +G01 X+19.184 Y-21.145 B1.79 C234.4 +G01 X+19.092 Y-21.072 B1.789 C229.738 +G01 X+19.019 Y-21.006 C225.624 +G01 X+19.009 Y-20.995 B1.788 C224.986 +G01 X+19.008 Y-20.855 Z-0.519 B1.667 C220.678 +G01 X+18.955 Y-20.789 C216.957 +G01 X+18.894 Y-20.7 C212.32 +G01 X+18.846 Y-20.62 C208.157 +G01 X+18.8 Y-20.524 C203.609 +G01 X+18.765 Y-20.435 C199.348 +G01 X+18.735 Y-20.337 B1.666 C194.901 +G01 X+18.713 Y-20.239 B1.667 C190.532 +G01 X+18.698 Y-20.132 C185.626 +G01 X+18.691 Y-20.038 C181.621 +G01 X+18.693 Y-19.931 C176.764 +G01 X+18.701 Y-19.836 C172.713 +G01 X+18.719 Y-19.731 C167.901 +G01 X+18.741 Y-19.638 C163.803 +G01 X+18.775 Y-19.538 C159.111 +G01 X+18.812 Y-19.449 C154.895 +G01 X+18.861 Y-19.356 C150.326 +G01 X+18.911 Y-19.273 C146.053 +G01 X+18.973 Y-19.188 C141.539 +G01 X+19.036 Y-19.114 C137.244 +G01 X+19.109 Y-19.041 C132.754 +G01 X+19.184 Y-18.976 C128.433 +G01 X+19.267 Y-18.915 C123.968 +G01 X+19.351 Y-18.863 C119.625 +G01 X+19.445 Y-18.814 C115.063 +G01 X+19.534 Y-18.776 C110.816 +G01 X+19.631 Y-18.744 B1.666 C106.352 +G01 X+19.728 Y-18.719 B1.667 C101.998 +G01 X+19.835 Y-18.701 C97.103 +G01 X+19.928 Y-18.692 C93.108 +G01 X+20.036 Y-18.691 C88.24 +G01 X+20.13 Y-18.697 C84.198 +G01 X+20.236 Y-18.712 C79.378 +G01 X+20.329 Y-18.732 C75.289 +G01 X+20.431 Y-18.764 C70.576 +G01 X+20.52 Y-18.798 B1.66 C61.352 +G01 X+20.615 Y-18.844 B1.666 +G01 X+20.699 Y-18.892 B1.664 C61.353 +G01 X+20.785 Y-18.952 B1.667 C53.004 +G01 X+20.861 Y-19.013 C48.711 +G01 X+20.936 Y-19.085 C44.219 +G01 X+21.003 Y-19.157 C39.902 +G01 X+21.065 Y-19.239 C35.432 +G01 X+21.12 Y-19.322 C31.094 +G01 X+21.171 Y-19.416 C26.513 +G01 X+21.211 Y-19.502 C22.283 +G01 X+21.246 Y-19.6 B1.666 C17.804 +G01 X+21.273 Y-19.695 B1.667 C13.474 +G01 X+21.287 Y-19.761 C10.532 +G01 X+21.302 Y-19.868 C5.626 +G01 X+21.309 Y-19.961 C1.621 +G01 X+21.307 Y-20.069 C356.764 +G01 X+21.299 Y-20.163 C352.713 +G01 X+21.281 Y-20.269 C347.901 +G01 X+21.259 Y-20.361 C343.803 +G01 X+21.225 Y-20.462 C339.111 +G01 X+21.188 Y-20.551 C334.895 +G01 X+21.14 Y-20.644 C330.326 +G01 X+21.089 Y-20.727 C326.053 +G01 X+21.027 Y-20.811 C321.539 +G01 X+20.964 Y-20.886 C317.244 +G01 X+20.891 Y-20.959 C312.754 +G01 X+20.816 Y-21.024 C308.433 +G01 X+20.733 Y-21.085 C303.968 +G01 X+20.649 Y-21.137 C299.625 +G01 X+20.555 Y-21.186 C295.063 +G01 X+20.466 Y-21.224 C290.816 +G01 X+20.369 Y-21.256 B1.666 C286.352 +G01 X+20.272 Y-21.281 B1.667 C281.998 +G01 X+20.165 Y-21.299 C277.102 +G01 X+20.072 Y-21.307 C273.108 +G01 X+19.964 Y-21.309 C268.24 +G01 X+19.87 Y-21.303 C264.198 +G01 X+19.764 Y-21.288 C259.378 +G01 X+19.671 Y-21.267 C255.289 +G01 X+19.569 Y-21.236 C250.57 +G01 X+19.499 Y-21.21 B1.657 C241.351 +G01 X+19.334 Y-21.13 B1.67 C241.353 +G01 X+19.241 Y-21.069 B1.657 C241.352 +G01 X+19.186 Y-21.027 B1.668 C231.483 +G01 X+19.106 Y-20.957 B1.667 C226.93 +G01 X+19.076 Y-20.928 C225.014 +G01 Y-20.788 Z-0.516 B1.546 C220.253 +G01 X+19.012 Y-20.706 C215.438 +G01 X+18.962 Y-20.63 C211.124 +G01 X+18.916 Y-20.547 C206.687 +G01 X+18.877 Y-20.463 C202.322 +G01 X+18.844 Y-20.371 B1.545 C197.803 +G01 X+18.819 Y-20.285 B1.546 C193.519 +G01 X+18.801 Y-20.192 C189.095 +G01 X+18.79 Y-20.1 C184.697 +G01 X+18.786 Y-20.001 C179.943 +G01 X+18.789 Y-19.912 C175.802 +G01 X+18.8 Y-19.815 C171.08 +G01 X+18.817 Y-19.727 C166.907 +G01 X+18.843 Y-19.633 C162.219 +G01 X+18.873 Y-19.548 C158.014 +G01 X+18.913 Y-19.459 C153.357 +G01 X+18.956 Y-19.38 C149.119 +G01 X+19.009 Y-19.299 C144.507 +G01 X+19.064 Y-19.227 C140.224 +G01 X+19.128 Y-19.155 C135.723 +G01 X+19.194 Y-19.092 C131.392 +G01 X+19.268 Y-19.031 C126.936 +G01 X+19.343 Y-18.978 C122.592 +G01 X+19.425 Y-18.93 C118.151 +G01 X+19.508 Y-18.889 C113.789 +G01 X+19.6 Y-18.854 B1.545 C109.255 +G01 X+19.685 Y-18.827 B1.546 C104.987 +G01 X+19.778 Y-18.806 B1.545 C100.546 +G01 X+19.869 Y-18.793 B1.546 C96.179 +G01 X+19.968 Y-18.786 C91.419 +G01 X+20.057 Y-18.787 C87.285 +G01 X+20.155 Y-18.796 C82.557 +G01 X+20.243 Y-18.81 C78.389 +G01 X+20.338 Y-18.834 C73.696 +G01 X+20.423 Y-18.861 C69.495 +G01 X+20.512 Y-18.899 B1.542 C61.353 +G01 X+20.593 Y-18.94 B1.546 C61.352 +G01 X+20.675 Y-18.991 B1.539 +G01 X+20.749 Y-19.044 B1.546 C51.706 +G01 X+20.822 Y-19.107 C47.186 +G01 X+20.887 Y-19.171 C42.861 +G01 X+20.949 Y-19.243 C38.4 +G01 X+21.004 Y-19.317 C34.058 +G01 X+21.054 Y-19.398 C29.614 +G01 X+21.097 Y-19.48 C25.255 +G01 X+21.136 Y-19.571 C20.706 +G01 X+21.164 Y-19.655 C16.454 +G01 X+21.188 Y-19.748 C11.997 +G01 X+21.204 Y-19.838 C7.643 +G01 X+21.212 Y-19.937 C2.897 +G01 X+21.214 Y-20.025 C358.766 +G01 X+21.208 Y-20.124 C354.035 +G01 X+21.196 Y-20.212 C349.873 +G01 X+21.175 Y-20.307 C345.171 +G01 X+21.149 Y-20.393 C340.977 +G01 X+21.113 Y-20.484 C336.31 +G01 X+21.075 Y-20.565 C332.083 +G01 X+21.026 Y-20.649 C327.448 +G01 X+20.975 Y-20.724 C323.189 +G01 X+20.914 Y-20.799 C318.651 +G01 X+20.852 Y-20.866 C314.327 +G01 X+20.781 Y-20.93 C309.865 +G01 X+20.709 Y-20.986 C305.524 +G01 X+20.629 Y-21.038 C301.079 +G01 X+20.548 Y-21.084 C296.722 +G01 X+20.458 Y-21.124 B1.545 C292.158 +G01 X+20.375 Y-21.155 B1.546 C287.921 +G01 X+20.282 Y-21.181 B1.545 C283.45 +G01 X+20.193 Y-21.199 B1.546 C279.12 +G01 X+20.094 Y-21.21 C274.372 +G01 X+20.006 Y-21.214 C270.249 +G01 X+19.907 Y-21.21 C265.511 +G01 X+19.819 Y-21.201 C261.354 +G01 X+19.723 Y-21.182 C256.65 +G01 X+19.637 Y-21.159 C252.476 +G01 X+19.529 Y-21.118 B1.537 C241.353 +G01 X+19.381 Y-21.048 B1.548 +G01 X+19.298 Y-20.993 B1.537 C241.352 +G01 X+19.218 Y-20.929 B1.547 C229.845 +G01 X+19.143 Y-20.861 B1.546 C225.039 +G01 X+19.089 Y-20.793 B1.538 C221.03 +G01 X+19.049 Y-20.723 B1.521 C217.032 +G01 X+19.02 Y-20.644 Z-0.515 B1.493 C213.219 +G01 X+18.952 Y-20.396 Z-0.514 B1.426 C200.708 +G01 X+18.945 Y-20.374 B1.425 C199.424 +G01 X+18.919 Y-20.288 C194.9 +G01 X+18.9 Y-20.208 C190.629 +G01 X+18.888 Y-20.122 C186.228 +G01 X+18.881 Y-20.036 C181.834 +G01 X+18.882 Y-19.946 C177.219 +G01 X+18.889 Y-19.863 C172.955 +G01 X+18.904 Y-19.775 C168.357 +G01 X+18.923 Y-19.694 C164.074 +G01 X+18.951 Y-19.61 C159.496 +G01 X+18.983 Y-19.532 C155.193 +G01 X+19.024 Y-19.453 C150.633 +G01 X+19.067 Y-19.381 C146.314 +G01 X+19.119 Y-19.31 C141.772 +G01 X+19.174 Y-19.245 C137.435 +G01 X+19.236 Y-19.183 C132.909 +G01 X+19.3 Y-19.127 C128.555 +G01 X+19.378 Y-19.07 C123.771 +G01 X+19.443 Y-19.029 C119.685 +G01 X+19.526 Y-18.986 C115.061 +G01 X+19.599 Y-18.955 C110.891 +G01 X+19.685 Y-18.926 C106.352 +G01 X+19.764 Y-18.906 C102.096 +G01 X+19.85 Y-18.891 C97.691 +G01 X+19.936 Y-18.882 C93.287 +G01 X+20.025 Y-18.881 C88.695 +G01 X+20.108 Y-18.886 C84.434 +G01 X+20.196 Y-18.898 C79.834 +G01 X+20.278 Y-18.916 C75.554 +G01 X+20.363 Y-18.941 C70.973 +G01 X+20.442 Y-18.971 B1.419 C61.352 +G01 X+20.522 Y-19.01 B1.424 C61.351 +G01 X+20.595 Y-19.052 B1.422 C61.352 +G01 X+20.667 Y-19.102 B1.411 +G01 X+20.734 Y-19.154 B1.425 C48.913 +G01 X+20.798 Y-19.215 C44.387 +G01 X+20.855 Y-19.277 C40.035 +G01 X+20.914 Y-19.354 C35.223 +G01 X+20.956 Y-19.418 C31.155 +G01 X+21.001 Y-19.5 C26.513 +G01 X+21.034 Y-19.572 C22.356 +G01 X+21.064 Y-19.653 C17.942 +G01 X+21.088 Y-19.736 C13.561 +G01 X+21.105 Y-19.821 C9.157 +G01 X+21.116 Y-19.907 C4.766 +G01 X+21.119 Y-19.996 C0.173 +G01 X+21.117 Y-20.079 C355.914 +G01 X+21.106 Y-20.168 C351.31 +G01 X+21.091 Y-20.25 C347.033 +G01 X+21.067 Y-20.336 C342.448 +G01 X+21.04 Y-20.415 C338.154 +G01 X+21.003 Y-20.496 C333.588 +G01 X+20.963 Y-20.57 C329.275 +G01 X+20.915 Y-20.644 C324.725 +G01 X+20.864 Y-20.712 C320.394 +G01 X+20.805 Y-20.777 C315.864 +G01 X+20.744 Y-20.836 C311.513 +G01 X+20.668 Y-20.897 C306.674 +G01 X+20.607 Y-20.941 C302.634 +G01 X+20.525 Y-20.988 C297.964 +G01 X+20.455 Y-21.023 C293.821 +G01 X+20.374 Y-21.055 C289.406 +G01 X+20.292 Y-21.081 C285.028 +G01 X+20.207 Y-21.1 C280.621 +G01 X+20.122 Y-21.113 C276.233 +G01 X+20.033 Y-21.118 C271.65 +G01 X+19.949 C267.393 +G01 X+19.861 Y-21.11 C262.788 +G01 X+19.778 Y-21.097 C258.514 +G01 X+19.692 Y-21.076 C253.929 +G01 X+19.668 Y-21.069 C252.695 +G01 X+19.58 Y-21.037 B1.415 C241.351 +G01 X+19.428 Y-20.965 B1.427 C241.352 +G01 X+19.354 Y-20.916 B1.417 +G01 X+19.28 Y-20.858 B1.426 C229.888 +G01 X+19.21 Y-20.793 B1.425 C225.067 +G01 X+19.217 Y-20.66 Z-0.512 B1.304 C220.047 +G01 X+19.155 Y-20.579 C214.384 +G01 X+19.108 Y-20.503 C209.416 +G01 X+19.076 Y-20.441 C205.438 +G01 X+19.042 Y-20.362 C200.708 +G01 X+19.019 Y-20.294 C196.571 +G01 X+18.998 Y-20.213 C191.998 +G01 X+18.985 Y-20.139 C187.741 +G01 X+18.978 Y-20.061 C183.344 +G01 X+18.976 Y-19.981 C178.932 +G01 X+18.981 Y-19.903 C174.541 +G01 X+18.991 Y-19.824 C170.109 +G01 X+19.008 Y-19.746 C165.642 +G01 X+19.03 Y-19.671 C161.242 +G01 X+19.059 Y-19.597 C156.781 +G01 X+19.092 Y-19.526 C152.378 +G01 X+19.132 Y-19.457 C147.919 +G01 X+19.176 Y-19.391 C143.511 +G01 X+19.236 Y-19.318 C138.287 +G01 X+19.279 Y-19.272 C134.646 +G01 X+19.348 Y-19.211 C129.578 +G01 X+19.4 Y-19.17 C125.781 +G01 X+19.475 Y-19.121 C120.868 +G01 X+19.535 Y-19.087 C116.914 +G01 X+19.614 Y-19.052 C112.159 +G01 X+19.681 Y-19.027 C108.05 +G01 X+19.762 Y-19.004 C103.45 +G01 X+19.835 Y-18.989 C99.204 +G01 X+19.915 Y-18.979 C94.738 +G01 X+19.993 Y-18.976 C90.385 +G01 X+20.071 Y-18.978 C86.02 +G01 X+20.15 Y-18.987 C81.585 +G01 X+20.227 Y-19.001 C77.156 +G01 X+20.304 Y-19.022 C72.719 +G01 X+20.379 Y-19.049 Z-0.511 B1.294 C61.352 +G01 X+20.451 Y-19.08 Z-0.512 B1.303 +G01 X+20.521 Y-19.118 +G01 X+20.587 Y-19.16 B1.296 C61.353 +G01 X+20.662 Y-19.218 B1.304 C49.739 +G01 X+20.709 Y-19.261 C46.123 +G01 X+20.773 Y-19.328 C41.029 +G01 X+20.815 Y-19.379 C37.257 +G01 X+20.865 Y-19.452 C32.32 +G01 X+20.9 Y-19.511 C28.392 +G01 X+20.938 Y-19.59 C23.61 +G01 X+20.965 Y-19.656 C19.526 +G01 X+20.99 Y-19.737 C14.9 +G01 X+21.006 Y-19.808 C10.669 +G01 X+21.018 Y-19.889 C6.191 +G01 X+21.024 Y-19.967 C1.836 +G01 X+21.023 Y-20.045 C357.488 +G01 X+21.017 Y-20.124 C353.064 +G01 X+21.004 Y-20.202 C348.634 +G01 X+20.986 Y-20.279 C344.197 +G01 X+20.961 Y-20.354 C339.734 +G01 X+20.931 Y-20.427 C335.331 +G01 X+20.895 Y-20.498 C330.874 +G01 X+20.854 Y-20.565 C326.465 +G01 X+20.798 Y-20.642 C321.192 +G01 X+20.757 Y-20.69 C317.6 +G01 X+20.692 Y-20.755 C312.481 +G01 X+20.642 Y-20.798 C308.735 +G01 X+20.569 Y-20.851 C303.773 +G01 X+20.511 Y-20.887 C299.87 +G01 X+20.434 Y-20.928 C295.061 +G01 X+20.369 Y-20.956 C291.004 +G01 X+20.288 Y-20.983 C286.353 +G01 X+20.217 Y-21.001 C282.138 +G01 X+20.136 Y-21.015 C277.642 +G01 X+20.059 Y-21.023 C273.288 +G01 X+19.982 Y-21.024 C268.952 +G01 X+19.903 Y-21.02 C264.541 +G01 X+19.823 Y-21.008 B1.303 C260.018 +G01 X+19.775 Y-20.999 C257.32 +G01 X+19.7 Y-20.979 B1.304 C252.964 +G01 X+19.619 Y-20.95 Z-0.511 B1.294 C241.352 +G01 X+19.474 Y-20.882 Z-0.512 B1.306 +G01 X+19.411 Y-20.839 B1.297 C241.353 +G01 X+19.338 Y-20.782 B1.305 C229.739 +G01 X+19.277 Y-20.726 B1.304 C225.094 +G01 X+19.284 Y-20.591 Z-0.51 B1.182 C219.545 +G01 X+19.235 Y-20.526 B1.183 C214.518 +G01 X+19.208 Y-20.486 C211.531 +G01 X+19.163 Y-20.403 C205.711 +G01 X+19.126 Y-20.315 C199.811 +G01 X+19.098 Y-20.223 C193.91 +G01 X+19.08 Y-20.129 C188.009 +G01 X+19.072 Y-20.034 C182.109 +G01 X+19.073 Y-19.939 C176.207 +G01 X+19.084 Y-19.844 C170.308 +G01 X+19.105 Y-19.75 C164.393 +G01 X+19.136 Y-19.66 C158.491 +G01 X+19.175 Y-19.572 C152.591 +G01 X+19.224 Y-19.49 C146.691 +G01 X+19.28 Y-19.413 C140.79 +G01 X+19.344 Y-19.342 C134.888 +G01 X+19.415 Y-19.278 C128.987 +G01 X+19.493 Y-19.222 C123.087 +G01 X+19.575 Y-19.174 C117.187 +G01 X+19.663 Y-19.134 C111.286 +G01 X+19.753 Y-19.104 C105.385 +G01 X+19.847 Y-19.084 C99.483 +G01 X+19.942 Y-19.073 C93.585 +G01 X+20.038 Y-19.072 C87.682 +G01 X+20.133 Y-19.08 C81.783 +G01 X+20.227 Y-19.099 C75.853 +G01 X+20.318 Y-19.127 Z-0.509 B1.17 C61.322 +G01 X+20.406 Y-19.164 Z-0.51 B1.182 C61.337 +G01 X+20.49 Y-19.211 B1.181 C61.353 +G01 X+20.568 Y-19.265 Z-0.509 B1.168 C61.351 +G01 X+20.641 Y-19.327 Z-0.51 B1.183 C46.364 +G01 X+20.707 Y-19.397 C40.463 +G01 X+20.765 Y-19.473 C34.563 +G01 X+20.815 Y-19.554 C28.663 +G01 X+20.857 Y-19.64 C22.763 +G01 X+20.889 Y-19.73 C16.861 +G01 X+20.912 Y-19.823 C10.961 +G01 X+20.925 Y-19.918 C5.06 +G01 X+20.929 Y-20.014 C359.159 +G01 X+20.923 Y-20.109 C353.258 +G01 X+20.906 Y-20.204 C347.305 +G01 X+20.881 Y-20.295 C341.442 +G01 X+20.846 Y-20.384 C335.54 +G01 X+20.802 Y-20.469 C329.64 +G01 X+20.749 Y-20.549 C323.74 +G01 X+20.689 Y-20.623 C317.84 +G01 X+20.621 Y-20.691 C311.938 +G01 X+20.547 Y-20.751 C306.038 +G01 X+20.467 Y-20.803 C300.138 +G01 X+20.381 Y-20.847 C294.235 +G01 X+20.292 Y-20.882 C288.337 +G01 X+20.2 Y-20.907 C282.434 +G01 X+20.106 Y-20.923 C276.535 +G01 X+20.01 Y-20.929 C270.633 +G01 X+19.915 Y-20.925 C264.734 +G01 X+19.819 Y-20.911 C258.741 +G01 X+19.73 Y-20.889 C253.078 +G01 X+19.658 Y-20.863 Z-0.509 B1.174 C241.325 +G01 X+19.521 Y-20.799 Z-0.51 B1.185 C241.352 +G01 X+19.467 Y-20.763 Z-0.509 B1.178 C241.353 +G01 X+19.428 Y-20.734 B1.169 C241.352 +G01 X+19.356 Y-20.67 Z-0.51 B1.184 C226.12 +G01 X+19.345 Y-20.658 B1.183 C225.106 +G01 X+19.351 Y-20.523 Z-0.508 B1.061 C218.784 +G01 X+19.314 Y-20.473 B1.062 C214.499 +G01 X+19.291 Y-20.439 C211.677 +G01 X+19.25 Y-20.365 C205.836 +G01 X+19.217 Y-20.285 C199.944 +G01 X+19.191 Y-20.203 C194.051 +G01 X+19.175 Y-20.119 C188.159 +G01 X+19.167 Y-20.034 C182.27 +G01 X+19.168 Y-19.948 C176.377 +G01 X+19.178 Y-19.863 C170.486 +G01 X+19.196 Y-19.779 C164.597 +G01 X+19.223 Y-19.697 C158.704 +G01 X+19.258 Y-19.619 C152.803 +G01 X+19.301 Y-19.545 C146.762 +G01 X+19.352 Y-19.475 C140.872 +G01 X+19.409 Y-19.411 C134.98 +G01 X+19.473 Y-19.354 C129.089 +G01 X+19.542 Y-19.303 C123.196 +G01 X+19.616 Y-19.26 C117.306 +G01 X+19.694 Y-19.224 C111.414 +G01 X+19.776 Y-19.197 C105.525 +G01 X+19.86 Y-19.178 C99.633 +G01 X+19.945 Y-19.168 C93.741 +G01 X+20.031 Y-19.167 C87.851 +G01 X+20.116 Y-19.174 C81.96 +G01 X+20.2 Y-19.191 C76.07 +G01 X+20.283 Y-19.215 B1.049 C61.174 +G01 X+20.362 Y-19.249 B1.06 C61.19 +G01 X+20.437 Y-19.29 C61.352 +G01 X+20.508 Y-19.339 B1.049 C61.351 +G01 X+20.573 Y-19.394 B1.062 C46.452 +G01 X+20.632 Y-19.456 C40.562 +G01 X+20.685 Y-19.524 C34.669 +G01 X+20.73 Y-19.597 C28.781 +G01 X+20.768 Y-19.674 C22.887 +G01 X+20.797 Y-19.755 C16.997 +G01 X+20.818 Y-19.838 C11.104 +G01 X+20.83 Y-19.923 C5.214 +G01 X+20.834 Y-20.009 C359.323 +G01 X+20.828 Y-20.095 C353.434 +G01 X+20.814 Y-20.179 C347.54 +G01 X+20.791 Y-20.262 C341.649 +G01 X+20.76 Y-20.343 C335.547 +G01 X+20.721 Y-20.419 C329.707 +G01 X+20.674 Y-20.49 C323.815 +G01 X+20.62 Y-20.557 C317.924 +G01 X+20.56 Y-20.618 C312.034 +G01 X+20.493 Y-20.672 C306.143 +G01 X+20.421 Y-20.719 C300.251 +G01 X+20.345 Y-20.759 C294.361 +G01 X+20.265 Y-20.79 C288.47 +G01 X+20.183 Y-20.813 C282.579 +G01 X+20.098 Y-20.828 C276.687 +G01 X+20.012 Y-20.834 C270.798 +G01 X+19.927 Y-20.83 C264.91 +G01 X+19.84 Y-20.818 C258.942 +G01 X+19.76 Y-20.798 C253.23 +G01 X+19.696 Y-20.776 B1.053 C241.179 +G01 X+19.568 Y-20.716 B1.064 C241.353 +G01 X+19.49 Y-20.661 B1.05 +G01 X+19.424 Y-20.604 B1.062 C226.254 +G01 X+19.412 Y-20.591 B1.061 C224.985 +G01 X+19.419 Y-20.454 Z-0.506 B0.939 C217.714 +G01 X+19.392 Y-20.42 B0.941 C214.458 +G01 X+19.374 Y-20.392 C211.806 +G01 X+19.337 Y-20.326 C205.939 +G01 X+19.307 Y-20.256 C200.052 +G01 X+19.285 Y-20.183 C194.169 +G01 X+19.27 Y-20.109 C188.291 +G01 X+19.262 Y-20.033 C182.409 +G01 X+19.263 Y-19.957 C176.528 +G01 X+19.271 Y-19.881 C170.646 +G01 X+19.287 Y-19.807 C164.762 +G01 X+19.311 Y-19.735 C158.882 +G01 X+19.342 Y-19.665 C153.003 +G01 X+19.38 Y-19.599 C147.118 +G01 X+19.425 Y-19.537 B0.94 C140.881 +G01 X+19.475 Y-19.481 B0.941 C135.049 +G01 X+19.531 Y-19.43 C129.165 +G01 X+19.592 Y-19.384 C123.285 +G01 X+19.657 Y-19.346 C117.405 +G01 X+19.726 Y-19.314 C111.523 +G01 X+19.798 Y-19.289 C105.64 +G01 X+19.873 Y-19.272 C99.761 +G01 X+19.948 Y-19.263 C93.878 +G01 X+20.024 Y-19.262 C87.996 +G01 X+20.1 Y-19.268 C82.114 +G01 X+20.175 Y-19.282 C76.234 +G01 X+20.247 Y-19.304 B0.929 C61.03 +G01 X+20.318 Y-19.333 B0.939 C61.041 +G01 X+20.384 Y-19.369 C61.353 +G01 X+20.448 Y-19.413 B0.93 C61.351 +G01 X+20.505 Y-19.461 B0.94 C46.518 +G01 X+20.558 Y-19.516 C40.637 +G01 X+20.605 Y-19.576 B0.941 C34.756 +G01 X+20.645 Y-19.641 C28.875 +G01 X+20.679 Y-19.709 C22.994 +G01 X+20.705 Y-19.78 C17.113 +G01 X+20.724 Y-19.854 C11.231 +G01 X+20.735 Y-19.929 C5.348 +G01 X+20.739 Y-20.005 C359.466 +G01 X+20.734 Y-20.081 C353.585 +G01 X+20.722 Y-20.156 C347.706 +G01 X+20.702 Y-20.229 C341.825 +G01 X+20.675 Y-20.3 C335.943 +G01 X+20.64 Y-20.368 C330.059 +G01 X+20.599 Y-20.432 C324.18 +G01 X+20.551 Y-20.491 B0.94 C318.287 +G01 X+20.498 Y-20.545 B0.941 C312.108 +G01 X+20.439 Y-20.594 C306.226 +G01 X+20.376 Y-20.636 C300.344 +G01 X+20.309 Y-20.671 C294.463 +G01 X+20.238 Y-20.699 C288.584 +G01 X+20.165 Y-20.72 C282.701 +G01 X+20.09 Y-20.733 C276.819 +G01 X+20.014 Y-20.738 C270.939 +G01 X+19.938 Y-20.736 C265.069 +G01 X+19.862 Y-20.725 B0.94 C259.106 +G01 X+19.79 Y-20.708 C253.359 +G01 X+19.736 Y-20.689 B0.932 C241.034 +G01 X+19.615 Y-20.633 B0.942 C241.351 +G01 X+19.551 Y-20.588 B0.931 C241.352 +G01 X+19.493 Y-20.537 B0.941 C226.369 +G01 X+19.479 Y-20.523 B0.94 C224.867 +G01 X+19.486 Y-20.384 Z-0.505 B0.817 C216.753 +G01 X+19.458 Y-20.347 B0.82 C212.539 +G01 X+19.424 Y-20.287 B0.819 C206.02 +G01 X+19.398 Y-20.226 C200.137 +G01 X+19.378 Y-20.163 C194.266 +G01 X+19.364 Y-20.098 C188.394 +G01 X+19.357 Y-20.032 C182.522 +G01 X+19.358 Y-19.966 C176.652 +G01 X+19.365 Y-19.9 C170.779 +G01 X+19.378 Y-19.835 C164.906 +G01 X+19.399 Y-19.772 C159.037 +G01 X+19.425 Y-19.711 C153.164 +G01 X+19.458 Y-19.654 C147.294 +G01 X+19.496 Y-19.6 C141.423 +G01 X+19.54 Y-19.55 C135.55 +G01 X+19.589 Y-19.505 C129.679 +G01 X+19.642 Y-19.465 C123.773 +G01 X+19.699 Y-19.432 C117.477 +G01 X+19.759 Y-19.404 C111.605 +G01 X+19.821 Y-19.382 C105.735 +G01 X+19.886 Y-19.367 C99.863 +G01 X+19.952 Y-19.358 C93.991 +G01 X+20.018 Y-19.357 C88.12 +G01 X+20.084 Y-19.362 C82.246 +G01 X+20.149 Y-19.374 C76.375 +G01 X+20.213 Y-19.393 Z-0.504 B0.808 C60.882 +G01 X+20.274 Y-19.418 Z-0.505 B0.818 C60.895 +G01 X+20.332 Y-19.449 C61.352 +G01 X+20.387 Y-19.486 Z-0.504 B0.81 C61.353 +G01 X+20.438 Y-19.529 Z-0.505 B0.819 C47.018 +G01 X+20.484 Y-19.576 C41.146 +G01 X+20.525 Y-19.629 C34.768 +G01 X+20.56 Y-19.684 C28.946 +G01 X+20.59 Y-19.743 C23.073 +G01 X+20.613 Y-19.805 C17.202 +G01 X+20.63 Y-19.87 C11.331 +G01 X+20.64 Y-19.935 C5.459 +G01 X+20.643 Y-20.001 C359.587 +G01 X+20.64 Y-20.067 C353.716 +G01 X+20.629 Y-20.133 C347.843 +G01 X+20.612 Y-20.197 C341.971 +G01 X+20.589 Y-20.259 C336.101 +G01 X+20.559 Y-20.318 C330.229 +G01 X+20.524 Y-20.374 C324.359 +G01 X+20.482 Y-20.426 C318.485 +G01 X+20.436 Y-20.473 C312.613 +G01 X+20.384 Y-20.516 C306.675 +G01 X+20.33 Y-20.552 C300.869 +G01 X+20.272 Y-20.583 C294.541 +G01 X+20.21 Y-20.608 C288.672 +G01 X+20.147 Y-20.626 C282.798 +G01 X+20.081 Y-20.638 C276.926 +G01 X+20.015 Y-20.643 C271.054 +G01 X+19.949 Y-20.641 C265.201 +G01 X+19.882 Y-20.632 C259.244 +G01 X+19.819 Y-20.617 Z-0.504 B0.8 C240.871 +G01 X+19.774 Y-20.602 B0.811 C240.886 +G01 X+19.662 Y-20.55 Z-0.505 B0.821 C241.352 +G01 X+19.612 Y-20.515 B0.812 +G01 X+19.56 Y-20.47 B0.82 C226.914 +G01 X+19.546 Y-20.456 B0.819 C224.745 +G01 X+19.553 Y-20.316 Z-0.503 B0.696 C215.233 +G01 X+19.54 Y-20.298 B0.698 C212.697 +G01 X+19.511 Y-20.247 C206.679 +G01 X+19.488 Y-20.195 C200.799 +G01 X+19.47 Y-20.141 C194.295 +G01 X+19.459 Y-20.086 C188.471 +G01 X+19.453 Y-20.03 C182.612 +G01 Y-19.974 C176.748 +G01 X+19.458 Y-19.918 C170.887 +G01 X+19.47 Y-19.862 C165.021 +G01 X+19.486 Y-19.808 C159.16 +G01 X+19.509 Y-19.757 C153.298 +G01 X+19.536 Y-19.707 C147.435 +G01 X+19.569 Y-19.661 C141.574 +G01 X+19.606 Y-19.619 C135.712 +G01 X+19.647 Y-19.58 C129.851 +G01 X+19.692 Y-19.546 C123.989 +G01 X+19.741 Y-19.517 C118.128 +G01 X+19.792 Y-19.493 C112.267 +G01 X+19.846 Y-19.474 C105.747 +G01 X+19.9 Y-19.461 C99.939 +G01 X+19.956 Y-19.454 C94.077 +G01 X+20.012 Y-19.452 C88.212 +G01 X+20.068 Y-19.456 C82.352 +G01 X+20.124 Y-19.466 B0.672 C60.719 +G01 X+20.178 Y-19.482 B0.688 C60.736 +G01 X+20.231 Y-19.503 B0.696 C60.746 +G01 X+20.28 Y-19.529 B0.697 C61.352 +G01 X+20.327 Y-19.56 B0.691 C61.35 +G01 X+20.371 Y-19.596 B0.677 C61.354 +G01 X+20.41 Y-19.637 B0.698 C41.315 +G01 X+20.446 Y-19.681 C35.456 +G01 X+20.476 Y-19.728 C29.594 +G01 X+20.501 Y-19.779 C23.728 +G01 X+20.522 Y-19.832 C17.801 +G01 X+20.536 Y-19.886 C11.394 +G01 X+20.545 Y-19.942 C5.541 +G01 X+20.548 Y-19.998 C359.68 +G01 X+20.545 Y-20.054 C353.816 +G01 X+20.537 Y-20.11 C347.954 +G01 X+20.523 Y-20.165 C342.093 +G01 X+20.503 Y-20.218 C336.232 +G01 X+20.478 Y-20.268 C330.368 +G01 X+20.448 Y-20.316 C324.507 +G01 X+20.413 Y-20.36 C318.645 +G01 X+20.374 Y-20.401 C312.784 +G01 X+20.331 Y-20.437 C306.92 +G01 X+20.284 Y-20.469 C301.059 +G01 X+20.234 Y-20.495 C295.195 +G01 X+20.182 Y-20.517 C289.332 +G01 X+20.127 Y-20.533 C282.847 +G01 X+20.072 Y-20.543 C277.008 +G01 X+20.016 Y-20.548 C271.143 +G01 X+19.96 Y-20.547 C265.304 +G01 X+19.903 Y-20.539 C259.359 +G01 X+19.848 Y-20.527 B0.681 C240.729 +G01 X+19.812 Y-20.515 B0.69 C240.739 +G01 X+19.71 Y-20.467 B0.699 C241.354 +G01 X+19.673 Y-20.441 B0.693 C241.352 +G01 X+19.628 Y-20.403 B0.678 C241.351 +G01 X+19.613 Y-20.388 B0.67 C241.354 +G01 X+19.621 Y-20.247 Z-0.502 B0.576 C212.655 +G01 X+19.597 Y-20.207 B0.577 C206.84 +G01 X+19.578 Y-20.164 C200.975 +G01 X+19.563 Y-20.12 C195.122 +G01 X+19.553 Y-20.074 C189.265 +G01 X+19.548 Y-20.028 C183.413 +G01 Y-19.981 C177.562 +G01 X+19.552 Y-19.934 C170.924 +G01 X+19.561 Y-19.889 C165.108 +G01 X+19.575 Y-19.845 C159.256 +G01 X+19.593 Y-19.802 C153.404 +G01 X+19.615 Y-19.761 C147.55 +G01 X+19.642 Y-19.723 C141.699 +G01 X+19.672 Y-19.687 C135.846 +G01 X+19.706 Y-19.655 C129.993 +G01 X+19.743 Y-19.627 C124.137 +G01 X+19.783 Y-19.603 C118.289 +G01 X+19.825 Y-19.582 C112.434 +G01 X+19.869 Y-19.567 C106.584 +G01 X+19.914 Y-19.555 C100.733 +G01 X+19.96 Y-19.549 C94.88 +G01 X+20.007 Y-19.547 C89.026 +G01 X+20.054 Y-19.55 C83.127 +G01 X+20.099 Y-19.558 B0.554 C60.573 +G01 X+20.144 Y-19.571 B0.568 C60.589 +G01 X+20.188 Y-19.588 B0.575 C60.597 +G01 X+20.229 Y-19.609 B0.576 C61.35 +G01 X+20.268 Y-19.635 B0.571 C61.353 +G01 X+20.304 Y-19.664 B0.561 C61.352 +G01 X+20.337 Y-19.697 B0.544 +G01 X+20.366 Y-19.734 B0.577 C35.601 +G01 X+20.392 Y-19.773 C29.747 +G01 X+20.413 Y-19.814 C23.901 +G01 X+20.43 Y-19.858 C18.044 +G01 X+20.442 Y-19.903 C12.191 +G01 X+20.45 Y-19.949 C6.339 +G01 X+20.453 Y-19.995 C0.49 +G01 X+20.451 Y-20.043 C353.827 +G01 X+20.444 Y-20.088 C348.023 +G01 X+20.433 Y-20.133 C342.181 +G01 X+20.417 Y-20.177 C336.329 +G01 X+20.396 Y-20.219 C330.475 +G01 X+20.372 Y-20.258 C324.623 +G01 X+20.343 Y-20.295 C318.771 +G01 X+20.311 Y-20.329 C312.918 +G01 X+20.276 Y-20.359 C307.064 +G01 X+20.237 Y-20.386 C301.215 +G01 X+20.196 Y-20.408 C295.361 +G01 X+20.153 Y-20.426 C289.512 +G01 X+20.109 Y-20.44 C283.658 +G01 X+20.063 Y-20.448 C277.802 +G01 X+20.016 Y-20.452 C271.953 +G01 X+19.97 C266.125 +G01 X+19.923 Y-20.446 B0.546 C240.563 +G01 X+19.877 Y-20.436 B0.562 C240.587 +G01 X+19.85 Y-20.427 B0.569 C240.592 +G01 X+19.757 Y-20.384 B0.578 C241.354 +G01 X+19.733 Y-20.368 B0.574 +G01 X+19.695 Y-20.336 B0.561 C241.353 +G01 X+19.681 Y-20.321 B0.554 C241.352 +G01 X+19.688 Y-20.174 Z-0.501 B0.455 C208.396 +G01 X+19.668 Y-20.132 C201.111 +G01 X+19.656 Y-20.098 C195.266 +G01 X+19.648 Y-20.062 C189.416 +G01 X+19.643 Y-20.025 C183.579 +G01 Y-19.988 C177.735 +G01 X+19.646 Y-19.952 C171.889 +G01 X+19.653 Y-19.916 C166.046 +G01 X+19.663 Y-19.88 C160.204 +G01 X+19.677 Y-19.846 C154.361 +G01 X+19.695 Y-19.814 C148.521 +G01 X+19.716 Y-19.783 C141.742 +G01 X+19.739 Y-19.755 C135.938 +G01 X+19.766 Y-19.73 C130.094 +G01 X+19.795 Y-19.707 C124.254 +G01 X+19.826 Y-19.688 C118.407 +G01 X+19.859 Y-19.671 C112.566 +G01 X+19.894 Y-19.659 C106.72 +G01 X+19.929 Y-19.649 C100.881 +G01 X+19.966 Y-19.644 C95.04 +G01 X+20.002 Y-19.642 C89.192 +G01 X+20.039 Y-19.645 B0.421 C60.41 +G01 X+20.075 Y-19.65 B0.437 C60.431 +G01 X+20.111 Y-19.66 B0.448 C60.442 +G01 X+20.145 Y-19.673 B0.454 C60.454 +G01 X+20.178 Y-19.69 B0.455 C61.354 +G01 X+20.21 Y-19.71 B0.452 +G01 X+20.238 Y-19.733 B0.443 C61.355 +G01 X+20.264 Y-19.759 B0.431 C61.351 +G01 X+20.287 Y-19.787 B0.413 C61.355 +G01 X+20.308 Y-19.818 B0.455 C29.869 +G01 X+20.325 Y-19.851 C24.026 +G01 X+20.338 Y-19.885 C18.186 +G01 X+20.349 Y-19.92 C12.34 +G01 X+20.355 Y-19.956 C6.496 +G01 X+20.357 Y-19.993 C0.656 +G01 X+20.356 Y-20.03 C354.815 +G01 X+20.351 Y-20.066 C348.972 +G01 X+20.343 Y-20.102 C343.13 +G01 X+20.33 Y-20.137 C337.285 +G01 X+20.314 Y-20.17 C331.445 +G01 X+20.295 Y-20.202 C325.55 +G01 X+20.273 Y-20.231 C319.743 +G01 X+20.248 Y-20.258 C313.016 +G01 X+20.22 Y-20.282 C307.174 +G01 X+20.19 Y-20.303 C301.327 +G01 X+20.158 Y-20.321 C295.488 +G01 X+20.124 Y-20.335 C289.644 +G01 X+20.089 Y-20.346 C283.805 +G01 X+20.053 Y-20.354 C277.958 +G01 X+20.016 Y-20.357 C272.113 +G01 X+19.98 C266.305 +G01 X+19.942 Y-20.353 B0.43 C240.426 +G01 X+19.89 Y-20.34 B0.447 C240.445 +G01 X+19.811 Y-20.305 B0.457 C241.354 +G01 X+19.763 Y-20.269 B0.445 C241.352 +G01 X+19.748 Y-20.253 B0.437 C241.349 +G01 X+19.763 Y-20.11 Z-0.5 B0.268 C241.354 +G01 X+19.75 Y-20.077 Z-0.501 B0.334 C196.583 +G01 X+19.739 Y-20.025 C184.926 +G01 X+19.74 Y-19.971 C173.253 +G01 X+19.751 Y-19.918 C161.59 +G01 X+19.773 Y-19.869 C149.902 +G01 X+19.805 Y-19.825 C137.213 +G01 X+19.845 Y-19.789 C125.543 +G01 X+19.891 Y-19.762 C113.88 +G01 X+19.942 Y-19.744 C102.215 +G01 X+19.996 Y-19.738 B0.29 C60.259 +G01 X+20.049 Y-19.743 B0.318 C60.281 +G01 X+20.101 Y-19.758 B0.332 C60.301 +G01 X+20.148 Y-19.784 C61.351 +G01 X+20.189 Y-19.819 B0.318 C61.348 +G01 X+20.222 Y-19.861 B0.291 +G01 X+20.246 Y-19.91 B0.334 C19.502 +G01 X+20.259 Y-19.962 C7.838 +G01 X+20.262 Y-20.016 C356.17 +G01 X+20.253 Y-20.069 C344.51 +G01 X+20.233 Y-20.119 C332.836 +G01 X+20.204 Y-20.164 C320.128 +G01 X+20.166 Y-20.203 C308.466 +G01 X+20.121 Y-20.232 C296.798 +G01 X+20.071 Y-20.252 C285.132 +G01 X+20.018 Y-20.261 B0.281 C240.238 +G01 X+19.965 Y-20.26 B0.311 C240.284 +G01 X+19.926 Y-20.251 B0.326 C240.291 +G01 X+19.861 Y-20.223 B0.335 C241.355 +G01 X+19.85 Y-20.217 B0.334 C241.353 +G01 X+19.815 Y-20.186 B0.321 C241.35 +G01 X+19.883 Y-20.118 Z-0.5 B0.203 C241.351 +G01 X+19.864 Y-20.096 B0.19 C241.355 +G01 X+19.856 Y-20.083 B0.18 C241.35 +G01 X+19.844 Y-20.057 B0.159 +G01 X+19.835 Y-20.022 B0.125 C241.339 +G01 X+19.834 Y-19.988 B0.087 C241.329 +G01 X+19.841 Y-19.954 B0.211 C163.137 +G01 X+19.853 Y-19.922 C151.483 +G01 X+19.872 Y-19.894 C139.838 +G01 X+19.897 Y-19.87 B0.082 C59.997 +G01 X+19.926 Y-19.851 B0.121 C60.039 +G01 X+19.957 Y-19.84 B0.153 C60.088 +G01 X+19.991 Y-19.834 B0.18 C60.117 +G01 X+20.025 Y-19.836 B0.199 C60.144 +G01 X+20.058 Y-19.844 B0.209 C60.156 +G01 X+20.089 Y-19.86 B0.211 C61.346 +G01 X+20.116 Y-19.881 B0.204 C61.359 +G01 X+20.137 Y-19.907 B0.188 C61.348 +G01 X+20.154 Y-19.937 B0.164 C61.354 +G01 X+20.163 Y-19.97 B0.133 C61.342 +G01 X+20.166 Y-20.004 B0.097 C61.33 +G01 X+20.162 Y-20.038 B0.211 C346.039 +G01 X+20.151 Y-20.07 C334.4 +G01 X+20.133 Y-20.099 C322.745 +G01 X+20.11 Y-20.124 B0.072 C239.983 +G01 X+20.082 Y-20.144 B0.111 C240.035 +G01 X+20.051 Y-20.158 B0.146 C240.065 +G01 X+20.017 Y-20.165 B0.174 C240.122 +G01 X+19.982 B0.195 C240.14 +G01 X+19.96 Y-20.161 B0.205 C240.152 +G01 X+19.912 Y-20.142 B0.212 C241.346 +G01 X+19.901 Y-20.135 B0.211 C241.351 +G01 X+19.883 Y-20.118 B0.203 +G01 X+19.877 Y-20.105 B0.193 C241.353 +G01 X+19.879 Y-20.092 B0.176 C241.354 +G01 X+19.935 Y-19.974 B0. +G01 X+19.941 Y-19.962 +G01 X+19.952 Y-19.949 B-0.027 C239.97 +G01 X+19.962 Y-19.942 B-0.042 C239.982 +G01 X+19.976 Y-19.934 B-0.059 C239.965 +G01 X+19.988 Y-19.931 B-0.07 C239.998 +G01 X+20.005 Y-19.93 B-0.081 C240.018 +G01 X+20.017 Y-19.932 B-0.086 C240.004 +G01 X+20.032 Y-19.938 B-0.089 C240.017 +G01 X+20.042 Y-19.944 B-0.088 C241.348 +G01 X+20.054 Y-19.956 B-0.082 C241.332 +G01 X+20.061 Y-19.966 B-0.075 C241.365 +G01 X+20.067 Y-19.981 B-0.062 C241.352 +G01 X+20.07 Y-19.993 B-0.05 C241.342 +G01 X+20.069 Y-20.01 B-0.031 C241.296 +G01 X+20.066 Y-20.022 B0. +G01 X+20.06 Y-20.037 +G01 X+20.052 Y-20.047 +G01 X+20.04 Y-20.057 B0.04 C239.969 +G01 X+20.029 Y-20.063 B0.053 C239.988 +G01 X+20.013 Y-20.069 B0.069 C239.96 +G01 X+20 Y-20.07 B0.078 C239.985 +G01 X+19.981 Y-20.067 B0.087 C239.997 +G01 X+19.965 Y-20.061 B0.089 C241.363 +G01 X+19.95 Y-20.05 B0.086 C241.362 +G01 X+19.949 Y-20.036 B0.071 C241.342 +G01 X+19.982 Y-19.986 B0. +G01 X+19.995 Y-19.979 +G01 X+20.003 Y-19.978 B-0.026 C239.88 +G01 X+20.012 Y-19.982 B-0.028 C241.324 +G01 X+20.018 Y-19.987 B0. +G01 X+20.022 Y-19.996 +G01 X+20.021 Y-20.004 +G01 X+20.017 Y-20.013 +G01 X+20.011 Y-20.019 +G01 X+20.003 Y-20.021 +G01 X+19.993 B0.028 C239.975 +G01 X+19.987 Y-20.018 B0.029 C241.38 +G01 X+19.981 Y-20.013 B0.026 C241.379 +G01 X+19.979 Y-20.007 B0. +G01 Y-19.997 +G01 X+19.982 Y-19.986 +G01 Z+4.5 F2000 +#HSC OFF +#TRAFO OFF +; - Finition 1 fond 45deg +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G00 X+7.808 Y-9.571 Z+3 C0. +G00 Z+2 +G01 Z-3 F700 +G01 X+9.795 Y-9.795 +G01 X+9.6 Y-11.524 F200 +G01 X+11.524 Y-9.6 +G03 X+11.524 Y-6.772 I-1.415 J+1.414 F2000 +G00 Z-2 +G00 X+6.03 Y-12.548 +G00 Z-3 +G03 X+8.859 Y-12.548 I+1.415 J+1.414 F700 +G01 X+12.548 Y-8.859 F200 +G03 X+12.548 Y-6.03 I-1.414 J+1.414 F2000 +G00 Z-2 +G00 X+5.597 Y-13.264 +G00 Z-3 +G03 X+8.425 Y-13.264 I+1.414 J+1.414 F700 +G01 X+13.264 Y-8.425 F200 +G03 X+13.264 Y-5.597 I-1.414 J+1.414 F2000 +G00 Z-2 +G00 X+5.273 Y-13.87 +G00 Z-3 +G03 X+8.102 Y-13.87 I+1.415 J+1.414 F700 +G01 X+13.87 Y-8.102 F200 +G03 X+13.87 Y-5.273 I-1.414 J+1.414 F2000 +G00 Z-2 +G00 X+5.013 Y-14.414 +G00 Z-3 +G03 X+7.842 Y-14.414 I+1.414 J+1.415 F700 +G01 X+14.414 Y-7.842 F200 +G03 X+14.414 Y-5.013 I-1.415 J+1.415 F2000 +G00 Z-2 +G00 X+4.797 Y-14.912 +G00 Z-3 +G03 X+7.626 Y-14.912 I+1.415 J+1.414 F700 +G01 X+14.912 Y-7.626 F200 +G03 X+14.912 Y-4.797 I-1.414 J+1.414 F2000 +G00 Z-2 +G00 X+4.616 Y-15.377 +G00 Z-3 +G03 X+7.444 Y-15.377 I+1.414 J+1.415 F700 +G01 X+15.377 Y-7.444 F200 +G03 X+15.377 Y-4.616 I-1.415 J+1.414 F2000 +G00 Z-2 +G00 X+4.461 Y-15.814 +G00 Z-3 +G03 X+7.29 Y-15.814 I+1.414 J+1.414 F700 +G01 X+15.814 Y-7.29 F200 +G03 X+15.814 Y-4.461 I-1.414 J+1.415 F2000 +G00 Z-2 +G00 X+4.329 Y-16.229 +G00 Z-3 +G03 X+7.157 Y-16.229 I+1.414 J+1.414 F700 +G01 X+16.229 Y-7.157 F200 +G03 X+16.229 Y-4.329 I-1.414 J+1.414 F2000 +G00 Z-2 +G00 X+4.214 Y-16.627 +G00 Z-3 +G03 X+7.042 Y-16.627 I+1.414 J+1.414 F700 +G01 X+16.627 Y-7.042 F200 +G03 X+16.627 Y-4.214 I-1.414 J+1.414 F2000 +G00 Z-2 +G00 X+4.115 Y-17.009 +G00 Z-3 +G03 X+6.943 Y-17.009 I+1.414 J+1.414 F700 +G01 X+17.009 Y-6.943 F200 +G03 X+17.009 Y-4.115 I-1.414 J+1.414 F2000 +G00 Z-2 +G00 X+4.03 Y-17.377 +G00 Z-3 +G03 X+6.858 Y-17.377 I+1.414 J+1.414 F700 +G01 X+17.377 Y-6.858 F200 +G03 X+17.377 Y-4.03 I-1.414 J+1.414 F2000 +G00 Z-2 +G00 X+3.957 Y-17.732 +G00 Z-3 +G03 X+6.786 Y-17.732 I+1.415 J+1.414 F700 +G01 X+17.732 Y-6.786 F200 +G03 X+17.732 Y-3.957 I-1.414 J+1.414 F2000 +G00 Z-2 +G00 X+3.895 Y-18.077 +G00 Z-3 +G03 X+6.724 Y-18.077 I+1.415 J+1.414 F700 +G01 X+18.077 Y-6.724 F200 +G03 X+18.077 Y-3.895 I-1.414 J+1.414 F2000 +G00 Z-2 +G00 X+3.844 Y-18.412 +G00 Z-3 +G03 X+6.672 Y-18.412 I+1.414 J+1.415 F700 +G01 X+18.412 Y-6.672 F200 +G03 X+18.412 Y-3.844 I-1.415 J+1.414 F2000 +G01 Z+2 +G00 Z+3 +#HSC OFF +#TRAFO OFF +; - Finition 2 fond 45deg +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G00 X+30.429 Y-7.808 +G00 Z+2 +G01 Z-3 F700 +G01 X+30.205 Y-9.795 +G01 X+28.476 Y-9.6 F400 +G01 X+30.4 Y-11.524 +G03 X+33.228 Y-11.524 I+1.414 J+1.415 F2000 +G00 Z-2 +G00 X+27.452 Y-6.03 +G00 Z-3 +G03 X+27.452 Y-8.859 I+1.414 J-1.415 F700 +G01 X+31.141 Y-12.548 F400 +G03 X+33.97 Y-12.548 I+1.414 J+1.414 F2000 +G00 Z-2 +G00 X+26.736 Y-5.597 +G00 Z-3 +G03 X+26.736 Y-8.425 I+1.414 J-1.414 F700 +G01 X+31.575 Y-13.264 F400 +G03 X+34.403 Y-13.264 I+1.414 J+1.414 F2000 +G00 Z-2 +G00 X+26.13 Y-5.273 +G00 Z-3 +G03 X+26.13 Y-8.102 I+1.414 J-1.415 F700 +G01 X+31.898 Y-13.87 F400 +G03 X+34.727 Y-13.87 I+1.414 J+1.414 F2000 +G00 Z-2 +G00 X+25.586 Y-5.013 +G00 Z-3 +G03 X+25.586 Y-7.842 I+1.415 J-1.414 F700 +G01 X+32.158 Y-14.414 F400 +G03 X+34.987 Y-14.414 I+1.415 J+1.415 F2000 +G00 Z-2 +G00 X+25.088 Y-4.797 +G00 Z-3 +G03 X+25.088 Y-7.626 I+1.414 J-1.415 F700 +G01 X+32.374 Y-14.912 F400 +G03 X+35.203 Y-14.912 I+1.414 J+1.414 F2000 +G00 Z-2 +G00 X+24.623 Y-4.616 +G00 Z-3 +G03 X+24.623 Y-7.444 I+1.415 J-1.414 F700 +G01 X+32.556 Y-15.377 F400 +G03 X+35.384 Y-15.377 I+1.414 J+1.415 F2000 +G00 Z-2 +G00 X+24.186 Y-4.461 +G00 Z-3 +G03 X+24.186 Y-7.29 I+1.414 J-1.414 F700 +G01 X+32.71 Y-15.814 F400 +G03 X+35.539 Y-15.814 I+1.415 J+1.414 F2000 +G00 Z-2 +G00 X+23.771 Y-4.329 +G00 Z-3 +G03 X+23.771 Y-7.157 I+1.414 J-1.414 F700 +G01 X+32.843 Y-16.229 F400 +G03 X+35.671 Y-16.229 I+1.414 J+1.414 F2000 +G00 Z-2 +G00 X+23.373 Y-4.214 +G00 Z-3 +G03 X+23.373 Y-7.042 I+1.414 J-1.414 F700 +G01 X+32.958 Y-16.627 F400 +G03 X+35.786 Y-16.627 I+1.414 J+1.414 F2000 +G00 Z-2 +G00 X+22.991 Y-4.115 +G00 Z-3 +G03 X+22.991 Y-6.943 I+1.414 J-1.414 F700 +G01 X+33.057 Y-17.009 F400 +G03 X+35.885 Y-17.009 I+1.414 J+1.414 F2000 +G00 Z-2 +G00 X+22.623 Y-4.03 +G00 Z-3 +G03 X+22.623 Y-6.858 I+1.414 J-1.414 F700 +G01 X+33.142 Y-17.377 F400 +G03 X+35.97 Y-17.377 I+1.414 J+1.414 F2000 +G00 Z-2 +G00 X+22.268 Y-3.957 +G00 Z-3 +G03 X+22.268 Y-6.786 I+1.414 J-1.415 F700 +G01 X+33.214 Y-17.732 F400 +G03 X+36.043 Y-17.732 I+1.414 J+1.414 F2000 +G00 Z-2 +G00 X+21.923 Y-3.895 +G00 Z-3 +G03 X+21.923 Y-6.724 I+1.414 J-1.415 F700 +G01 X+33.276 Y-18.077 F400 +G03 X+36.105 Y-18.077 I+1.414 J+1.414 F2000 +G00 Z-2 +G00 X+21.588 Y-3.844 +G00 Z-3 +G03 X+21.588 Y-6.672 I+1.415 J-1.414 F700 +G01 X+33.328 Y-18.412 F400 +G03 X+36.156 Y-18.412 I+1.414 J+1.415 F2000 +G01 Z+2 +G00 Z+3 +#HSC OFF +#TRAFO OFF +; - Finition 3 fond 45deg +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G00 X+32.13 Y-30.747 +G00 Z+2 +G01 Z-3 F700 +G01 X+30.205 Y-30.205 +G01 X+30.862 Y-27.873 F200 +G01 X+27.873 Y-30.862 +G03 X+27.873 Y-33.69 I+1.414 J-1.414 F2000 +G00 Z-2 +G00 X+34.458 Y-26.681 +G00 Z-3 +G03 X+31.63 Y-26.681 I-1.414 J-1.414 F700 +G01 X+26.681 Y-31.63 F200 +G03 X+26.681 Y-34.458 I+1.414 J-1.414 F2000 +G00 Z-2 +G00 X+34.905 Y-25.81 +G00 Z-3 +G03 X+32.076 Y-25.81 I-1.414 J-1.414 F700 +G01 X+25.81 Y-32.076 F200 +G03 X+25.81 Y-34.905 I+1.414 J-1.415 F2000 +G00 Z-2 +G00 X+35.233 Y-25.057 +G00 Z-3 +G03 X+32.405 Y-25.057 I-1.414 J-1.414 F700 +G01 X+25.057 Y-32.405 F200 +G03 X+25.057 Y-35.233 I+1.414 J-1.414 F2000 +G00 Z-2 +G00 X+35.489 Y-24.377 +G00 Z-3 +G03 X+32.661 Y-24.377 I-1.414 J-1.414 F700 +G01 X+24.377 Y-32.661 F200 +G03 X+24.377 Y-35.489 I+1.414 J-1.414 F2000 +G00 Z-2 +G00 X+35.69 Y-23.752 +G00 Z-3 +G03 X+32.861 Y-23.752 I-1.414 J-1.414 F700 +G01 X+23.752 Y-32.861 F200 +G03 X+23.752 Y-35.69 I+1.414 J-1.415 F2000 +G00 Z-2 +G00 X+35.85 Y-23.168 +G00 Z-3 +G03 X+33.022 Y-23.168 I-1.414 J-1.414 F700 +G01 X+23.168 Y-33.022 F200 +G03 X+23.168 Y-35.85 I+1.414 J-1.414 F2000 +G00 Z-2 +G00 X+35.978 Y-22.616 +G00 Z-3 +G03 X+33.149 Y-22.616 I-1.414 J-1.414 F700 +G01 X+22.616 Y-33.149 F200 +G03 X+22.616 Y-35.978 I+1.414 J-1.415 F2000 +G00 Z-2 +G00 X+36.079 Y-22.09 +G00 Z-3 +G03 X+33.25 Y-22.09 I-1.415 J-1.415 F700 +G01 X+22.09 Y-33.25 F200 +G03 X+22.09 Y-36.079 I+1.415 J-1.414 F2000 +G00 Z-2 +G00 X+36.156 Y-21.588 +G00 Z-3 +G03 X+33.328 Y-21.588 I-1.414 J-1.415 F700 +G01 X+21.588 Y-33.328 F200 +G03 X+21.588 Y-36.156 I+1.415 J-1.414 F2000 +G01 Z+2 +G00 Z+3 +#HSC OFF +#TRAFO OFF +; - Finition 3 fond 45deg +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G00 X+9.571 Y-32.192 +G00 Z+2 +G01 Z-3 F700 +G01 X+9.795 Y-30.205 +G01 X+11.524 Y-30.4 F500 +G01 X+9.6 Y-28.476 +G03 X+6.772 Y-28.476 I-1.414 J-1.415 F2000 +G00 Z-2 +G00 X+12.548 Y-33.97 +G00 Z-3 +G03 X+12.548 Y-31.141 I-1.414 J+1.415 F700 +G01 X+8.859 Y-27.452 F500 +G03 X+6.03 Y-27.452 I-1.414 J-1.414 F2000 +G00 Z-2 +G00 X+13.264 Y-34.403 +G00 Z-3 +G03 X+13.264 Y-31.575 I-1.414 J+1.414 F700 +G01 X+8.425 Y-26.736 F500 +G03 X+5.597 Y-26.736 I-1.414 J-1.414 F2000 +G00 Z-2 +G00 X+13.87 Y-34.727 +G00 Z-3 +G03 X+13.87 Y-31.898 I-1.414 J+1.415 F700 +G01 X+8.102 Y-26.13 F500 +G03 X+5.273 Y-26.13 I-1.414 J-1.414 F2000 +G00 Z-2 +G00 X+14.414 Y-34.987 +G00 Z-3 +G03 X+14.414 Y-32.158 I-1.415 J+1.414 F700 +G01 X+7.842 Y-25.586 F500 +G03 X+5.013 Y-25.586 I-1.415 J-1.415 F2000 +G00 Z-2 +G00 X+14.912 Y-35.203 +G00 Z-3 +G03 X+14.912 Y-32.374 I-1.414 J+1.415 F700 +G01 X+7.626 Y-25.088 F500 +G03 X+4.797 Y-25.088 I-1.414 J-1.414 F2000 +G00 Z-2 +G00 X+15.377 Y-35.384 +G00 Z-3 +G03 X+15.377 Y-32.556 I-1.415 J+1.414 F700 +G01 X+7.444 Y-24.623 F500 +G03 X+4.616 Y-24.623 I-1.414 J-1.415 F2000 +G00 Z-2 +G00 X+15.814 Y-35.539 +G00 Z-3 +G03 X+15.814 Y-32.71 I-1.414 J+1.414 F700 +G01 X+7.29 Y-24.186 F500 +G03 X+4.461 Y-24.186 I-1.415 J-1.414 F2000 +G00 Z-2 +G00 X+16.229 Y-35.671 +G00 Z-3 +G03 X+16.229 Y-32.843 I-1.414 J+1.414 F700 +G01 X+7.157 Y-23.771 F500 +G03 X+4.329 Y-23.771 I-1.414 J-1.414 F2000 +G00 Z-2 +G00 X+16.627 Y-35.786 +G00 Z-3 +G03 X+16.627 Y-32.958 I-1.414 J+1.414 F700 +G01 X+7.042 Y-23.373 F500 +G03 X+4.214 Y-23.373 I-1.414 J-1.414 F2000 +G00 Z-2 +G00 X+17.009 Y-35.885 +G00 Z-3 +G03 X+17.009 Y-33.057 I-1.414 J+1.414 F700 +G01 X+6.943 Y-22.991 F500 +G03 X+4.115 Y-22.991 I-1.414 J-1.414 F2000 +G00 Z-2 +G00 X+17.377 Y-35.97 +G00 Z-3 +G03 X+17.377 Y-33.142 I-1.414 J+1.414 F700 +G01 X+6.858 Y-22.623 F500 +G03 X+4.03 Y-22.623 I-1.414 J-1.414 F2000 +G00 Z-2 +G00 X+17.732 Y-36.043 +G00 Z-3 +G03 X+17.732 Y-33.214 I-1.414 J+1.415 F700 +G01 X+6.786 Y-22.268 F500 +G03 X+3.957 Y-22.268 I-1.414 J-1.414 F2000 +G00 Z-2 +G00 X+18.077 Y-36.105 +G00 Z-3 +G03 X+18.077 Y-33.276 I-1.414 J+1.415 F700 +G01 X+6.724 Y-21.923 F500 +G03 X+3.895 Y-21.923 I-1.414 J-1.414 F2000 +G00 Z-2 +G00 X+18.412 Y-36.156 +G00 Z-3 +G03 X+18.412 Y-33.328 I-1.415 J+1.414 F700 +G01 X+6.672 Y-21.588 F500 +G03 X+3.844 Y-21.588 I-1.414 J-1.415 F2000 +G01 Z+2 +G00 Z+3 +#HSC OFF +#TRAFO OFF +; - Finition contournage 45deg +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G01 X+20.636 Y-3.104 Z+4 F700 +G01 Z-1 +G03 X+20.636 Y-5.932 I+1.415 J-1.414 +G01 X+34.068 Y-19.364 F600 +G02 X+34.068 Y-20.636 I-0.637 J-0.636 +G01 X+20.636 Y-34.068 +G02 X+19.364 Y-34.068 I-0.636 J+0.637 +G01 X+5.932 Y-20.636 +G02 X+5.932 Y-19.364 I+0.637 J+0.636 +G01 X+19.364 Y-5.932 +G03 X+19.364 Y-3.104 I-1.415 J+1.414 F2000 +G01 Z+4 +G00 X+20.636 +G00 Z+3.5 +G01 Z-1.5 F700 +G03 X+20.636 Y-5.932 I+1.415 J-1.414 +G01 X+34.068 Y-19.364 F600 +G02 X+34.068 Y-20.636 I-0.637 J-0.636 +G01 X+20.636 Y-34.068 +G02 X+19.364 Y-34.068 I-0.636 J+0.637 +G01 X+5.932 Y-20.636 +G02 X+5.932 Y-19.364 I+0.637 J+0.636 +G01 X+19.364 Y-5.932 +G03 X+19.364 Y-3.104 I-1.415 J+1.414 F2000 +G01 Z+3.5 +G00 X+20.636 +G00 Z+3 +G01 Z-2 F700 +G03 X+20.636 Y-5.932 I+1.415 J-1.414 +G01 X+34.068 Y-19.364 F600 +G02 X+34.068 Y-20.636 I-0.637 J-0.636 +G01 X+20.636 Y-34.068 +G02 X+19.364 Y-34.068 I-0.636 J+0.637 +G01 X+5.932 Y-20.636 +G02 X+5.932 Y-19.364 I+0.637 J+0.636 +G01 X+19.364 Y-5.932 +G03 X+19.364 Y-3.104 I-1.415 J+1.414 F2000 +G01 Z+3 +G00 X+20.636 +G00 Z+2.5 +G01 Z-2.5 F700 +G03 X+20.636 Y-5.932 I+1.415 J-1.414 +G01 X+34.068 Y-19.364 F600 +G02 X+34.068 Y-20.636 I-0.637 J-0.636 +G01 X+20.636 Y-34.068 +G02 X+19.364 Y-34.068 I-0.636 J+0.637 +G01 X+5.932 Y-20.636 +G02 X+5.932 Y-19.364 I+0.637 J+0.636 +G01 X+19.364 Y-5.932 +G03 X+19.364 Y-3.104 I-1.415 J+1.414 F2000 +G01 Z+2.5 +G00 X+20.636 +G00 Z+2 +G01 Z-3 F700 +G03 X+20.636 Y-5.932 I+1.415 J-1.414 +G01 X+34.068 Y-19.364 F600 +G02 X+34.068 Y-20.636 I-0.637 J-0.636 +G01 X+20.636 Y-34.068 +G02 X+19.364 Y-34.068 I-0.636 J+0.637 +G01 X+5.932 Y-20.636 +G02 X+5.932 Y-19.364 I+0.637 J+0.636 +G01 X+19.364 Y-5.932 +G03 X+19.364 Y-3.104 I-1.415 J+1.414 F2000 +G01 Z+2 +#HSC OFF +#TRAFO OFF +; - Finition fond cercle +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G00 X+21.074 Y-5.66 Z+0 +G00 Z-5.5 +G03 X+19 Y-4.45 I-1.843 J-0.777 F700 +G01 X+5.45 Y-6.027 F500 +G02 X+6.027 Y-5.45 I+3.545 J-2.968 +G03 X+6.276 Y-2.633 I-1.284 J+1.533 F2000 +G00 Z+0 +G00 X+2.633 Y-6.572 +G00 Z-5.5 +G03 X+5.45 Y-6.323 I+1.284 J+1.533 F700 +G02 X+6.323 Y-5.45 I+5.364 J-4.491 F500 +G03 X+6.572 Y-2.633 I-1.285 J+1.533 F2000 +G00 Z+0 +G00 X+2.635 Y-6.899 +G00 Z-5.5 +G03 X+5.45 Y-6.625 I+1.271 J+1.545 F700 +G02 X+6.625 Y-5.45 I+6.649 J-5.473 F500 +G03 X+6.898 Y-2.635 I-1.271 J+1.544 F2000 +G00 Z+0 +G00 X+2.637 Y-7.222 +G00 Z-5.5 +G03 X+5.45 Y-6.93 I+1.26 J+1.553 F700 +G02 X+6.93 Y-5.45 I+7.861 J-6.38 F500 +G03 X+7.222 Y-2.637 I-1.261 J+1.553 F2000 +G00 Z+0 +G00 X+2.639 Y-7.545 +G00 Z-5.5 +G03 X+5.45 Y-7.236 I+1.251 J+1.561 F700 +G02 X+7.235 Y-5.45 I+9.019 J-7.232 F500 +G03 X+7.544 Y-2.638 I-1.251 J+1.56 F2000 +G00 Z+0 +G00 X+2.642 Y-7.89 +G00 Z-5.5 +G03 X+5.45 Y-7.548 I+1.233 J+1.575 F700 +G02 X+7.548 Y-5.45 I+9.66 J-7.561 F500 +G03 X+7.89 Y-2.642 I-1.233 J+1.575 F2000 +G00 Z+0 +G00 X+2.646 Y-8.237 +G00 Z-5.5 +G03 X+5.45 Y-7.864 I+1.215 J+1.588 F700 +G02 X+7.863 Y-5.45 I+10.269 J-7.854 F500 +G03 X+8.236 Y-2.646 I-1.215 J+1.588 F2000 +G00 Z+0 +G00 X+2.65 Y-8.586 +G00 Z-5.5 +G03 X+5.45 Y-8.182 I+1.199 J+1.602 F700 +G02 X+8.182 Y-5.45 I+10.85 J-8.117 F500 +G03 X+8.585 Y-2.65 I-1.198 J+1.601 F2000 +G00 Z+0 +G00 X+2.656 Y-8.946 +G00 Z-5.5 +G03 X+5.45 Y-8.508 I+1.178 J+1.616 F700 +G02 X+8.507 Y-5.45 I+11.287 J-8.228 F500 +G03 X+8.945 Y-2.656 I-1.178 J+1.616 F2000 +G00 Z+0 +G00 X+2.661 Y-9.309 +G00 Z-5.5 +G03 X+5.45 Y-8.838 I+1.159 J+1.63 F700 +G02 X+8.837 Y-5.45 I+11.708 J-8.319 F500 +G03 X+9.309 Y-2.661 I-1.159 J+1.63 F2000 +G00 Z+0 +G00 X+2.667 Y-9.677 +G00 Z-5.5 +G03 X+5.45 Y-9.172 I+1.139 J+1.644 F700 +G02 X+9.171 Y-5.45 I+12.113 J-8.39 F500 +G03 X+9.676 Y-2.667 I-1.139 J+1.644 F2000 +G00 Z+0 +G00 X+2.674 Y-10.057 +G00 Z-5.5 +G03 X+5.45 Y-9.514 I+1.116 J+1.659 F700 +G02 X+9.513 Y-5.45 I+12.407 J-8.341 F500 +G03 X+10.056 Y-2.674 I-1.116 J+1.66 F2000 +G00 Z+0 +G00 X+2.682 Y-10.444 +G00 Z-5.5 +G03 X+5.45 Y-9.861 I+1.093 J+1.676 F700 +G02 X+9.861 Y-5.45 I+12.691 J-8.279 F500 +G03 X+10.442 Y-2.682 I-1.093 J+1.675 F2000 +G00 Z+0 +G00 X+2.691 Y-10.842 +G00 Z-5.5 +G03 X+5.45 Y-10.218 I+1.067 J+1.691 F700 +G02 X+10.217 Y-5.45 I+12.921 J-8.152 F500 +G03 X+10.841 Y-2.691 I-1.067 J+1.691 F2000 +G00 Z+0 +G00 X+2.701 Y-11.249 +G00 Z-5.5 +G03 X+5.45 Y-10.582 I+1.041 J+1.708 F700 +G02 X+10.581 Y-5.45 I+13.145 J-8.012 F500 +G03 X+11.248 Y-2.701 I-1.041 J+1.708 F2000 +G00 Z+0 +G00 X+2.713 Y-11.67 +G00 Z-5.5 +G03 X+5.45 Y-10.957 I+1.012 J+1.725 F700 +G02 X+10.956 Y-5.45 I+13.323 J-7.814 F500 +G03 X+11.669 Y-2.713 I-1.012 J+1.725 F2000 +G00 Z+0 +G00 X+2.726 Y-12.102 +G00 Z-5.5 +G03 X+5.45 Y-11.341 I+0.982 J+1.743 F700 +G02 X+11.34 Y-5.45 I+13.497 J-7.604 F500 +G03 X+12.1 Y-2.726 I-0.982 J+1.742 F2000 +G00 Z+0 +G00 X+2.741 Y-12.551 +G00 Z-5.5 +G03 X+5.45 Y-11.739 I+0.948 J+1.761 F700 +G02 X+11.738 Y-5.45 I+13.643 J-7.353 F500 +G03 X+12.549 Y-2.74 I-0.95 J+1.76 F2000 +G00 Z+0 +G00 X+2.757 Y-13.013 +G00 Z-5.5 +G03 X+5.45 Y-12.149 I+0.914 J+1.779 F700 +G02 X+12.147 Y-5.45 I+13.787 J-7.087 F500 +G03 X+13.011 Y-2.757 I-0.914 J+1.779 F2000 +G00 Z+0 +G00 X+2.776 Y-13.497 +G00 Z-5.5 +G03 X+5.45 Y-12.576 I+0.876 J+1.797 F700 +G02 X+12.575 Y-5.45 I+13.908 J-6.78 F500 +G03 X+13.495 Y-2.776 I-0.877 J+1.798 F2000 +G00 Z+0 +G00 X+2.797 Y-14.001 +G00 Z-5.5 +G03 X+5.45 Y-13.02 I+0.836 J+1.817 F700 +G02 X+13.019 Y-5.45 I+14.027 J-6.455 F500 +G03 X+13.999 Y-2.797 I-0.837 J+1.817 F2000 +G00 Z+0 +G00 X+2.822 Y-14.533 +G00 Z-5.5 +G03 X+5.45 Y-13.488 I+0.791 J+1.836 F700 +G02 X+13.486 Y-5.45 I+14.129 J-6.09 F500 +G03 X+14.531 Y-2.821 I-0.792 J+1.836 F2000 +G00 Z+0 +G00 X+2.851 Y-15.101 +G00 Z-5.5 +G03 X+5.45 Y-13.985 I+0.742 J+1.858 F700 +G02 X+13.983 Y-5.45 I+14.217 J-5.681 F500 +G03 X+15.098 Y-2.85 I-0.742 J+1.857 F2000 +G00 Z+0 +G00 X+2.885 Y-15.711 +G00 Z-5.5 +G03 X+5.45 Y-14.519 I+0.686 J+1.878 F700 +G02 X+14.517 Y-5.45 I+14.294 J-5.223 F500 +G03 X+15.708 Y-2.885 I-0.687 J+1.878 F2000 +G00 Z+0 +G00 X+2.926 Y-16.372 +G00 Z-5.5 +G03 X+5.45 Y-15.097 I+0.624 J+1.9 F700 +G02 X+15.093 Y-5.45 I+14.37 J-4.722 F500 +G03 X+16.368 Y-2.925 I-0.625 J+1.9 F2000 +G00 Z+0 +G00 X+2.976 Y-17.111 +G00 Z-5.5 +G03 X+5.45 Y-15.741 I+0.552 J+1.922 F700 +G02 X+15.737 Y-5.45 I+14.435 J-4.142 F500 +G03 X+17.106 Y-2.975 I-0.553 J+1.922 F2000 +G00 Z+0 +G00 X+3.043 Y-17.984 +G00 Z-5.5 +G03 X+5.45 Y-16.498 I+0.461 J+1.947 F700 +G02 X+16.493 Y-5.45 I+14.477 J-3.427 F500 +G03 X+17.977 Y-3.042 I-0.462 J+1.946 F2000 +G00 Z+0 +G00 X+3.144 Y-19.12 +G00 Z-5.5 +G03 X+5.45 Y-17.483 I+0.334 J+1.972 F700 +G02 X+17.474 Y-5.45 I+14.494 J-2.46 F500 +G03 X+19.11 Y-3.142 I-0.336 J+1.972 F2000 +G00 Z+0 +G00 X+32.74 Y-2.863 +G00 Z-5.5 +G03 X+33.028 Y-5.677 I+1.55 J-1.263 F700 +G02 X+34.323 Y-6.973 I-5.679 J-6.973 F500 +G03 X+37.137 Y-7.261 I+1.551 J+1.263 F2000 +G00 Z+0 +G00 X+32.203 Y-2.704 +G00 Z-5.5 +G03 X+32.53 Y-5.514 I+1.568 J-1.242 F700 +G02 X+34.486 Y-7.471 I-7.438 J-9.393 F500 +G03 X+37.296 Y-7.797 I+1.569 J+1.242 F2000 +G00 Z+0 +G00 X+31.783 Y-2.659 +G00 Z-5.5 +G03 X+32.153 Y-5.463 I+1.587 J-1.217 F700 +G02 X+34.537 Y-7.847 I-7.829 J-10.212 F500 +G03 X+37.341 Y-8.218 I+1.587 J+1.217 F2000 +G00 Z+0 +G00 X+31.415 Y-2.65 +G00 Z-5.5 +G03 X+31.818 Y-5.45 I+1.601 J-1.199 F700 +G02 X+34.55 Y-8.182 I-8.118 J-10.849 F500 +G03 X+37.35 Y-8.586 I+1.601 J+1.198 F2000 +G00 Z+0 +G00 X+31.055 Y-2.656 +G00 Z-5.5 +G03 X+31.492 Y-5.45 I+1.616 J-1.178 F700 +G02 X+34.55 Y-8.508 I-8.23 J-11.286 F500 +G03 X+37.344 Y-8.946 I+1.616 J+1.178 F2000 +G00 Z+0 +G00 X+30.691 Y-2.661 +G00 Z-5.5 +G03 X+31.163 Y-5.45 I+1.63 J-1.159 F700 +G02 X+34.55 Y-8.838 I-8.321 J-11.707 F500 +G03 X+37.339 Y-9.31 I+1.63 J+1.159 F2000 +G00 Z+0 +G00 X+30.324 Y-2.667 +G00 Z-5.5 +G03 X+30.829 Y-5.45 I+1.644 J-1.139 F700 +G02 X+34.55 Y-9.172 I-8.392 J-12.112 F500 +G03 X+37.333 Y-9.677 I+1.644 J+1.139 F2000 +G00 Z+0 +G00 X+29.944 Y-2.674 +G00 Z-5.5 +G03 X+30.487 Y-5.45 I+1.659 J-1.116 F700 +G02 X+34.55 Y-9.514 I-8.344 J-12.406 F500 +G03 X+37.326 Y-10.057 I+1.66 J+1.116 F2000 +G00 Z+0 +G00 X+29.557 Y-2.682 +G00 Z-5.5 +G03 X+30.139 Y-5.45 I+1.675 J-1.093 F700 +G02 X+34.55 Y-9.861 I-8.28 J-12.69 F500 +G03 X+37.318 Y-10.444 I+1.675 J+1.092 F2000 +G00 Z+0 +G00 X+29.159 Y-2.691 +G00 Z-5.5 +G03 X+29.783 Y-5.45 I+1.691 J-1.068 F700 +G02 X+34.55 Y-10.218 I-8.154 J-12.92 F500 +G03 X+37.309 Y-10.842 I+1.692 J+1.067 F2000 +G00 Z+0 +G00 X+28.752 Y-2.701 +G00 Z-5.5 +G03 X+29.419 Y-5.45 I+1.708 J-1.041 F700 +G02 X+34.55 Y-10.582 I-8.014 J-13.144 F500 +G03 X+37.299 Y-11.249 I+1.708 J+1.041 F2000 +G00 Z+0 +G00 X+28.331 Y-2.713 +G00 Z-5.5 +G03 X+29.044 Y-5.45 I+1.725 J-1.012 F700 +G02 X+34.55 Y-10.957 I-7.817 J-13.322 F500 +G03 X+37.287 Y-11.67 I+1.725 J+1.012 F2000 +G00 Z+0 +G00 X+27.9 Y-2.726 +G00 Z-5.5 +G03 X+28.66 Y-5.45 I+1.742 J-0.982 F700 +G02 X+34.55 Y-11.341 I-7.607 J-13.495 F500 +G03 X+37.274 Y-12.102 I+1.742 J+0.981 F2000 +G00 Z+0 +G00 X+27.451 Y-2.74 +G00 Z-5.5 +G03 X+28.262 Y-5.45 I+1.76 J-0.95 F700 +G02 X+34.55 Y-11.739 I-7.355 J-13.642 F500 +G03 X+37.259 Y-12.551 I+1.761 J+0.949 F2000 +G00 Z+0 +G00 X+26.989 Y-2.757 +G00 Z-5.5 +G03 X+27.852 Y-5.45 I+1.778 J-0.914 F700 +G02 X+34.55 Y-12.149 I-7.09 J-13.786 F500 +G03 X+37.243 Y-13.013 I+1.779 J+0.914 F2000 +G00 Z+0 +G00 X+26.505 Y-2.776 +G00 Z-5.5 +G03 X+27.425 Y-5.45 I+1.797 J-0.876 F700 +G02 X+34.55 Y-12.576 I-6.783 J-13.906 F500 +G03 X+37.224 Y-13.498 I+1.798 J+0.876 F2000 +G00 Z+0 +G00 X+26.001 Y-2.797 +G00 Z-5.5 +G03 X+26.981 Y-5.45 I+1.817 J-0.836 F700 +G02 X+34.55 Y-13.02 I-6.458 J-14.025 F500 +G03 X+37.203 Y-14.001 I+1.817 J+0.836 F2000 +G00 Z+0 +G00 X+25.469 Y-2.821 +G00 Z-5.5 +G03 X+26.514 Y-5.45 I+1.837 J-0.793 F700 +G02 X+34.55 Y-13.488 I-6.094 J-14.128 F500 +G03 X+37.178 Y-14.534 I+1.837 J+0.791 F2000 +G00 Z+0 +G00 X+24.902 Y-2.85 +G00 Z-5.5 +G03 X+26.017 Y-5.45 I+1.857 J-0.743 F700 +G02 X+34.55 Y-13.985 I-5.684 J-14.216 F500 +G03 X+37.149 Y-15.101 I+1.857 J+0.742 F2000 +G00 Z+0 +G00 X+24.292 Y-2.885 +G00 Z-5.5 +G03 X+25.483 Y-5.45 I+1.878 J-0.687 F700 +G02 X+34.55 Y-14.519 I-5.227 J-14.292 F500 +G03 X+37.115 Y-15.711 I+1.879 J+0.686 F2000 +G00 Z+0 +G00 X+23.632 Y-2.925 +G00 Z-5.5 +G03 X+24.906 Y-5.45 I+1.899 J-0.625 F700 +G02 X+34.55 Y-15.097 I-4.726 J-14.369 F500 +G03 X+37.074 Y-16.372 I+1.9 J+0.625 F2000 +G00 Z+0 +G00 X+22.894 Y-2.975 +G00 Z-5.5 +G03 X+24.263 Y-5.45 I+1.922 J-0.553 F700 +G02 X+34.55 Y-15.741 I-4.148 J-14.433 F500 +G03 X+37.024 Y-17.111 I+1.922 J+0.552 F2000 +G00 Z+0 +G00 X+22.023 Y-3.042 +G00 Z-5.5 +G03 X+23.507 Y-5.45 I+1.946 J-0.462 F700 +G02 X+34.55 Y-16.498 I-3.434 J-14.476 F500 +G03 X+36.957 Y-17.984 I+1.946 J+0.46 F2000 +G00 Z+0 +G00 X+20.89 Y-3.142 +G00 Z-5.5 +G03 X+22.526 Y-5.45 I+1.972 J-0.336 F700 +G02 X+34.55 Y-17.483 I-2.471 J-14.493 F500 +G03 X+36.856 Y-19.12 I+1.972 J+0.335 F2000 +G00 Z+0 +G00 X+37.367 Y-33.724 +G00 Z-5.5 +G03 X+34.55 Y-33.973 I-1.284 J-1.533 F700 +G02 X+33.973 Y-34.55 I-3.545 J+2.968 F500 +G03 X+33.724 Y-37.367 I+1.284 J-1.533 F2000 +G00 Z+0 +G00 X+37.367 Y-33.428 +G00 Z-5.5 +G03 X+34.55 Y-33.677 I-1.284 J-1.533 F700 +G02 X+33.677 Y-34.55 I-5.364 J+4.491 F500 +G03 X+33.428 Y-37.367 I+1.285 J-1.533 F2000 +G00 Z+0 +G00 X+37.365 Y-33.101 +G00 Z-5.5 +G03 X+34.55 Y-33.375 I-1.271 J-1.545 F700 +G02 X+33.375 Y-34.55 I-6.649 J+5.473 F500 +G03 X+33.102 Y-37.365 I+1.271 J-1.544 F2000 +G00 Z+0 +G00 X+37.363 Y-32.778 +G00 Z-5.5 +G03 X+34.55 Y-33.07 I-1.26 J-1.553 F700 +G02 X+33.07 Y-34.55 I-7.861 J+6.38 F500 +G03 X+32.778 Y-37.363 I+1.261 J-1.553 F2000 +G00 Z+0 +G00 X+37.361 Y-32.455 +G00 Z-5.5 +G03 X+34.55 Y-32.764 I-1.251 J-1.561 F700 +G02 X+32.765 Y-34.55 I-9.019 J+7.232 F500 +G03 X+32.456 Y-37.362 I+1.251 J-1.56 F2000 +G00 Z+0 +G00 X+37.358 Y-32.11 +G00 Z-5.5 +G03 X+34.55 Y-32.452 I-1.233 J-1.575 F700 +G02 X+32.452 Y-34.55 I-9.66 J+7.561 F500 +G03 X+32.11 Y-37.358 I+1.233 J-1.575 F2000 +G00 Z+0 +G00 X+37.354 Y-31.763 +G00 Z-5.5 +G03 X+34.55 Y-32.136 I-1.215 J-1.588 F700 +G02 X+32.137 Y-34.55 I-10.269 J+7.854 F500 +G03 X+31.764 Y-37.354 I+1.215 J-1.588 F2000 +G00 Z+0 +G00 X+37.35 Y-31.414 +G00 Z-5.5 +G03 X+34.55 Y-31.818 I-1.199 J-1.602 F700 +G02 X+31.818 Y-34.55 I-10.85 J+8.117 F500 +G03 X+31.415 Y-37.35 I+1.198 J-1.601 F2000 +G00 Z+0 +G00 X+37.344 Y-31.054 +G00 Z-5.5 +G03 X+34.55 Y-31.492 I-1.178 J-1.616 F700 +G02 X+31.493 Y-34.55 I-11.287 J+8.228 F500 +G03 X+31.055 Y-37.344 I+1.178 J-1.616 F2000 +G00 Z+0 +G00 X+37.339 Y-30.691 +G00 Z-5.5 +G03 X+34.55 Y-31.162 I-1.159 J-1.63 F700 +G02 X+31.163 Y-34.55 I-11.708 J+8.319 F500 +G03 X+30.691 Y-37.339 I+1.159 J-1.63 F2000 +G00 Z+0 +G00 X+37.333 Y-30.323 +G00 Z-5.5 +G03 X+34.55 Y-30.829 I-1.139 J-1.644 F700 +G02 X+30.829 Y-34.55 I-12.113 J+8.391 F500 +G03 X+30.324 Y-37.333 I+1.139 J-1.644 F2000 +G00 Z+0 +G00 X+37.326 Y-29.943 +G00 Z-5.5 +G03 X+34.55 Y-30.486 I-1.116 J-1.659 F700 +G02 X+30.487 Y-34.55 I-12.407 J+8.341 F500 +G03 X+29.944 Y-37.326 I+1.116 J-1.66 F2000 +G00 Z+0 +G00 X+37.318 Y-29.556 +G00 Z-5.5 +G03 X+34.55 Y-30.139 I-1.093 J-1.676 F700 +G02 X+30.14 Y-34.55 I-12.691 J+8.279 F500 +G03 X+29.558 Y-37.318 I+1.092 J-1.675 F2000 +G00 Z+0 +G00 X+37.309 Y-29.158 +G00 Z-5.5 +G03 X+34.55 Y-29.782 I-1.067 J-1.691 F700 +G02 X+29.783 Y-34.55 I-12.921 J+8.152 F500 +G03 X+29.159 Y-37.309 I+1.067 J-1.691 F2000 +G00 Z+0 +G00 X+37.299 Y-28.751 +G00 Z-5.5 +G03 X+34.55 Y-29.418 I-1.041 J-1.708 F700 +G02 X+29.419 Y-34.55 I-13.145 J+8.012 F500 +G03 X+28.752 Y-37.299 I+1.041 J-1.708 F2000 +G00 Z+0 +G00 X+37.287 Y-28.33 +G00 Z-5.5 +G03 X+34.55 Y-29.043 I-1.012 J-1.725 F700 +G02 X+29.044 Y-34.55 I-13.323 J+7.814 F500 +G03 X+28.331 Y-37.287 I+1.012 J-1.725 F2000 +G00 Z+0 +G00 X+37.274 Y-27.898 +G00 Z-5.5 +G03 X+34.55 Y-28.659 I-0.982 J-1.743 F700 +G02 X+28.66 Y-34.55 I-13.497 J+7.604 F500 +G03 X+27.9 Y-37.274 I+0.982 J-1.742 F2000 +G00 Z+0 +G00 X+37.259 Y-27.449 +G00 Z-5.5 +G03 X+34.55 Y-28.261 I-0.948 J-1.761 F700 +G02 X+28.262 Y-34.55 I-13.643 J+7.353 F500 +G03 X+27.451 Y-37.26 I+0.95 J-1.76 F2000 +G00 Z+0 +G00 X+37.243 Y-26.987 +G00 Z-5.5 +G03 X+34.55 Y-27.851 I-0.914 J-1.779 F700 +G02 X+27.853 Y-34.55 I-13.787 J+7.087 F500 +G03 X+26.989 Y-37.243 I+0.914 J-1.779 F2000 +G00 Z+0 +G00 X+37.224 Y-26.503 +G00 Z-5.5 +G03 X+34.55 Y-27.424 I-0.876 J-1.797 F700 +G02 X+27.425 Y-34.55 I-13.907 J+6.78 F500 +G03 X+26.505 Y-37.224 I+0.877 J-1.798 F2000 +G00 Z+0 +G00 X+37.203 Y-25.999 +G00 Z-5.5 +G03 X+34.55 Y-26.98 I-0.836 J-1.817 F700 +G02 X+26.981 Y-34.55 I-14.027 J+6.455 F500 +G03 X+26.001 Y-37.203 I+0.837 J-1.817 F2000 +G00 Z+0 +G00 X+37.178 Y-25.467 +G00 Z-5.5 +G03 X+34.55 Y-26.512 I-0.791 J-1.836 F700 +G02 X+26.514 Y-34.55 I-14.129 J+6.09 F500 +G03 X+25.469 Y-37.179 I+0.792 J-1.836 F2000 +G00 Z+0 +G00 X+37.149 Y-24.899 +G00 Z-5.5 +G03 X+34.55 Y-26.015 I-0.742 J-1.858 F700 +G02 X+26.017 Y-34.55 I-14.217 J+5.681 F500 +G03 X+24.902 Y-37.15 I+0.742 J-1.857 F2000 +G00 Z+0 +G00 X+37.115 Y-24.289 +G00 Z-5.5 +G03 X+34.55 Y-25.481 I-0.686 J-1.878 F700 +G02 X+25.483 Y-34.55 I-14.294 J+5.223 F500 +G03 X+24.292 Y-37.115 I+0.687 J-1.878 F2000 +G00 Z+0 +G00 X+37.074 Y-23.628 +G00 Z-5.5 +G03 X+34.55 Y-24.903 I-0.624 J-1.9 F700 +G02 X+24.907 Y-34.55 I-14.37 J+4.722 F500 +G03 X+23.632 Y-37.075 I+0.625 J-1.9 F2000 +G00 Z+0 +G00 X+37.024 Y-22.889 +G00 Z-5.5 +G03 X+34.55 Y-24.259 I-0.552 J-1.922 F700 +G02 X+24.263 Y-34.55 I-14.435 J+4.142 F500 +G03 X+22.894 Y-37.025 I+0.553 J-1.922 F2000 +G00 Z+0 +G00 X+36.957 Y-22.016 +G00 Z-5.5 +G03 X+34.55 Y-23.502 I-0.461 J-1.947 F700 +G02 X+23.507 Y-34.55 I-14.477 J+3.427 F500 +G03 X+22.023 Y-36.958 I+0.462 J-1.946 F2000 +G00 Z+0 +G00 X+36.856 Y-20.88 +G00 Z-5.5 +G03 X+34.55 Y-22.517 I-0.334 J-1.972 F700 +G02 X+22.526 Y-34.55 I-14.494 J+2.46 F500 +G03 X+20.89 Y-36.858 I+0.336 J-1.972 F2000 +G00 Z+0 +G00 X+7.26 Y-37.137 +G00 Z-5.5 +G03 X+6.972 Y-34.323 I-1.55 J+1.263 F700 +G02 X+5.677 Y-33.027 I+5.679 J+6.973 F500 +G03 X+2.863 Y-32.739 I-1.551 J-1.263 F2000 +G00 Z+0 +G00 X+7.797 Y-37.296 +G00 Z-5.5 +G03 X+7.47 Y-34.486 I-1.568 J+1.242 F700 +G02 X+5.514 Y-32.529 I+7.438 J+9.393 F500 +G03 X+2.704 Y-32.203 I-1.569 J-1.242 F2000 +G00 Z+0 +G00 X+8.217 Y-37.341 +G00 Z-5.5 +G03 X+7.847 Y-34.537 I-1.587 J+1.217 F700 +G02 X+5.463 Y-32.153 I+7.829 J+10.212 F500 +G03 X+2.659 Y-31.782 I-1.587 J-1.217 F2000 +G00 Z+0 +G00 X+8.585 Y-37.35 +G00 Z-5.5 +G03 X+8.182 Y-34.55 I-1.601 J+1.199 F700 +G02 X+5.45 Y-31.818 I+8.118 J+10.849 F500 +G03 X+2.651 Y-31.414 I-1.601 J-1.198 F2000 +G00 Z+0 +G00 X+8.945 Y-37.344 +G00 Z-5.5 +G03 X+8.508 Y-34.55 I-1.616 J+1.178 F700 +G02 X+5.45 Y-31.492 I+8.23 J+11.286 F500 +G03 X+2.656 Y-31.054 I-1.616 J-1.178 F2000 +G00 Z+0 +G00 X+9.309 Y-37.339 +G00 Z-5.5 +G03 X+8.837 Y-34.55 I-1.63 J+1.159 F700 +G02 X+5.45 Y-31.162 I+8.321 J+11.707 F500 +G03 X+2.661 Y-30.69 I-1.63 J-1.159 F2000 +G00 Z+0 +G00 X+9.676 Y-37.333 +G00 Z-5.5 +G03 X+9.171 Y-34.55 I-1.644 J+1.139 F700 +G02 X+5.45 Y-30.828 I+8.392 J+12.112 F500 +G03 X+2.667 Y-30.323 I-1.644 J-1.139 F2000 +G00 Z+0 +G00 X+10.056 Y-37.326 +G00 Z-5.5 +G03 X+9.513 Y-34.55 I-1.659 J+1.116 F700 +G02 X+5.45 Y-30.486 I+8.344 J+12.406 F500 +G03 X+2.674 Y-29.943 I-1.66 J-1.116 F2000 +G00 Z+0 +G00 X+10.443 Y-37.318 +G00 Z-5.5 +G03 X+9.861 Y-34.55 I-1.675 J+1.093 F700 +G02 X+5.45 Y-30.139 I+8.28 J+12.69 F500 +G03 X+2.682 Y-29.556 I-1.675 J-1.092 F2000 +G00 Z+0 +G00 X+10.841 Y-37.309 +G00 Z-5.5 +G03 X+10.217 Y-34.55 I-1.691 J+1.068 F700 +G02 X+5.45 Y-29.782 I+8.154 J+12.92 F500 +G03 X+2.691 Y-29.158 I-1.692 J-1.067 F2000 +G00 Z+0 +G00 X+11.248 Y-37.299 +G00 Z-5.5 +G03 X+10.581 Y-34.55 I-1.708 J+1.041 F700 +G02 X+5.45 Y-29.418 I+8.014 J+13.144 F500 +G03 X+2.701 Y-28.751 I-1.708 J-1.041 F2000 +G00 Z+0 +G00 X+11.669 Y-37.287 +G00 Z-5.5 +G03 X+10.956 Y-34.55 I-1.725 J+1.012 F700 +G02 X+5.45 Y-29.043 I+7.817 J+13.322 F500 +G03 X+2.713 Y-28.33 I-1.725 J-1.012 F2000 +G00 Z+0 +G00 X+12.1 Y-37.274 +G00 Z-5.5 +G03 X+11.34 Y-34.55 I-1.742 J+0.982 F700 +G02 X+5.45 Y-28.659 I+7.607 J+13.495 F500 +G03 X+2.726 Y-27.898 I-1.742 J-0.981 F2000 +G00 Z+0 +G00 X+12.549 Y-37.26 +G00 Z-5.5 +G03 X+11.738 Y-34.55 I-1.76 J+0.95 F700 +G02 X+5.45 Y-28.261 I+7.355 J+13.642 F500 +G03 X+2.741 Y-27.449 I-1.761 J-0.949 F2000 +G00 Z+0 +G00 X+3.342 Y-21.056 +G00 Z-5.5 +G03 X+5.45 Y-19.17 I+0.111 J+1.997 F700 +G02 X+19.138 Y-5.45 I+14.532 J-0.81 F500 +G03 X+21.019 Y-3.337 I-0.116 J+1.997 F2000 +G00 Z+0 +G00 X+18.981 +G00 Z-5.5 +G03 X+20.862 Y-5.45 I+1.997 J-0.116 F700 +G02 X+34.55 Y-19.17 I-0.844 J-14.53 F500 +G03 X+36.658 Y-21.056 I+1.997 J+0.111 F2000 +G00 Z+0 +G00 Y-18.944 +G00 Z-5.5 +G03 X+34.55 Y-20.83 I-0.111 J-1.997 F700 +G02 X+20.862 Y-34.55 I-14.532 J+0.81 F500 +G03 X+18.981 Y-36.663 I+0.116 J-1.997 F2000 +G00 Z+0 +G00 X+13.011 Y-37.243 +G00 Z-5.5 +G03 X+12.148 Y-34.55 I-1.778 J+0.914 F700 +G02 X+5.45 Y-27.851 I+7.09 J+13.786 F500 +G03 X+2.757 Y-26.987 I-1.779 J-0.914 F2000 +G00 Z+0 +G00 X+13.496 Y-37.224 +G00 Z-5.5 +G03 X+12.575 Y-34.55 I-1.798 J+0.876 F700 +G02 X+5.45 Y-27.424 I+6.783 J+13.906 F500 +G03 X+2.776 Y-26.502 I-1.798 J-0.876 F2000 +G00 Z+0 +G00 X+13.999 Y-37.203 +G00 Z-5.5 +G03 X+13.019 Y-34.55 I-1.817 J+0.836 F700 +G02 X+5.45 Y-26.98 I+6.458 J+14.025 F500 +G03 X+2.797 Y-25.999 I-1.817 J-0.836 F2000 +G00 Z+0 +G00 X+14.531 Y-37.179 +G00 Z-5.5 +G03 X+13.486 Y-34.55 I-1.837 J+0.793 F700 +G02 X+5.45 Y-26.512 I+6.094 J+14.128 F500 +G03 X+2.822 Y-25.466 I-1.837 J-0.791 F2000 +G00 Z+0 +G00 X+15.098 Y-37.15 +G00 Z-5.5 +G03 X+13.983 Y-34.55 I-1.857 J+0.743 F700 +G02 X+5.45 Y-26.015 I+5.684 J+14.216 F500 +G03 X+2.851 Y-24.899 I-1.857 J-0.742 F2000 +G00 Z+0 +G00 X+15.708 Y-37.115 +G00 Z-5.5 +G03 X+14.517 Y-34.55 I-1.878 J+0.687 F700 +G02 X+5.45 Y-25.481 I+5.227 J+14.292 F500 +G03 X+2.885 Y-24.289 I-1.879 J-0.686 F2000 +G00 Z+0 +G00 X+16.368 Y-37.075 +G00 Z-5.5 +G03 X+15.094 Y-34.55 I-1.899 J+0.625 F700 +G02 X+5.45 Y-24.903 I+4.726 J+14.369 F500 +G03 X+2.926 Y-23.628 I-1.9 J-0.625 F2000 +G00 Z+0 +G00 X+17.106 Y-37.025 +G00 Z-5.5 +G03 X+15.737 Y-34.55 I-1.922 J+0.553 F700 +G02 X+5.45 Y-24.259 I+4.148 J+14.433 F500 +G03 X+2.976 Y-22.889 I-1.922 J-0.552 F2000 +G00 Z+0 +G00 X+17.977 Y-36.958 +G00 Z-5.5 +G03 X+16.493 Y-34.55 I-1.946 J+0.462 F700 +G02 X+5.45 Y-23.502 I+3.434 J+14.476 F500 +G03 X+3.043 Y-22.016 I-1.946 J-0.46 F2000 +G00 Z+0 +G00 X+19.11 Y-36.858 +G00 Z-5.5 +G03 X+17.474 Y-34.55 I-1.972 J+0.336 F700 +G02 X+5.45 Y-22.517 I+2.471 J+14.493 F500 +G03 X+3.144 Y-20.88 I-1.972 J-0.335 F2000 +G00 Z+0 +G00 X+21.019 Y-36.663 +G00 Z-5.5 +G03 X+19.138 Y-34.55 I-1.997 J+0.116 F700 +G02 X+5.45 Y-20.83 I+0.844 J+14.53 F500 +G01 X+5.642 Y-20.819 +G02 X+5.642 Y-20.819 I+14.358 J+0.819 +G01 X+5.585 Y-19.821 F2000 +G03 X+3.474 Y-17.938 I-1.997 J-0.113 +G01 Z+1.5 +G00 Z+7 +#HSC OFF +#TRAFO OFF +; - Finition cercle +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G01 X+23.209 Y-36.137 Z+3.5 F700 +G01 Z-3.5 +G03 X+21.066 Y-34.292 I-1.994 J-0.149 +G02 X+20 Y-5.669 I-1.066 J+14.292 F500 +G02 X+18.934 Y-34.292 I+0 J-14.331 +G03 X+16.791 Y-36.137 I-0.149 J-1.994 F2000 +G00 X+23.209 +G00 Z-4 +G03 X+21.066 Y-34.292 I-1.994 J-0.149 F700 +G02 X+20 Y-5.669 I-1.066 J+14.292 F500 +G02 X+18.934 Y-34.292 I+0 J-14.331 +G03 X+16.791 Y-36.137 I-0.149 J-1.994 F2000 +G00 X+23.209 +G00 Z-4.5 +G03 X+21.066 Y-34.292 I-1.994 J-0.149 F700 +G02 X+20 Y-5.669 I-1.066 J+14.292 F500 +G02 X+18.934 Y-34.292 I+0 J-14.331 +G03 X+16.791 Y-36.137 I-0.149 J-1.994 F2000 +G00 X+23.209 +G00 Z-5 +G03 X+21.066 Y-34.292 I-1.994 J-0.149 F700 +G02 X+20 Y-5.669 I-1.066 J+14.292 F500 +G02 X+18.934 Y-34.292 I+0 J-14.331 +G03 X+16.791 Y-36.137 I-0.149 J-1.994 F2000 +G00 X+23.209 +G00 Z-5.5 +G03 X+21.066 Y-34.292 I-1.994 J-0.149 F700 +G02 X+20 Y-5.669 I-1.066 J+14.292 F500 +G02 X+18.934 Y-34.292 I+0 J-14.331 +G03 X+16.791 Y-36.137 I-0.149 J-1.994 F2000 +G01 Z+1.5 +#HSC OFF +#TRAFO OFF +; - Finition fond carre avec rayon +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G00 X+43.154 Y-19.211 Z+8 +G00 Z+0 +G01 Z-8 F700 +G03 X+41.05 Y-21.101 I-0.107 J-1.998 +G01 X+40.05 Y-39.747 F700 +G02 X+39.747 Y-40.05 I-1.327 J+1.024 +G03 X+39.385 Y-42.855 I+1.222 J-1.583 F2000 +G00 Z+0 +G00 X+42.855 Y-39.083 +G00 Z-8 +G03 X+40.05 Y-39.445 I-1.222 J-1.583 F700 +G02 X+39.445 Y-40.05 I-2.651 J+2.046 F700 +G03 X+39.083 Y-42.855 I+1.221 J-1.583 F2000 +G00 Z+0 +G00 X+42.848 Y-38.715 +G00 Z-8 +G03 X+40.05 Y-39.13 I-1.192 J-1.606 F700 +G02 X+39.13 Y-40.05 I-3.565 J+2.645 F700 +G03 X+38.715 Y-42.848 I+1.191 J-1.606 F2000 +G00 Z+0 +G00 X+42.842 Y-38.356 +G00 Z-8 +G03 X+40.05 Y-38.811 I-1.169 J-1.623 F700 +G02 X+38.811 Y-40.05 I-4.416 J+3.177 F700 +G03 X+38.356 Y-42.842 I+1.168 J-1.624 F2000 +G00 Z+0 +G00 X+42.826 Y-37.938 +G00 Z-8 +G03 X+40.05 Y-38.477 I-1.118 J-1.658 F700 +G02 X+38.477 Y-40.05 I-4.831 J+3.258 F700 +G03 X+37.938 Y-42.826 I+1.119 J-1.658 F2000 +G00 Z+0 +G00 X+42.81 Y-37.514 +G00 Z-8 +G03 X+40.05 Y-38.134 I-1.07 J-1.69 F700 +G02 X+38.134 Y-40.05 I-5.229 J+3.313 F700 +G03 X+37.514 Y-42.81 I+1.07 J-1.69 F2000 +G00 Z+0 +G00 X+42.787 Y-37.056 +G00 Z-8 +G03 X+40.05 Y-37.77 I-1.012 J-1.725 F700 +G02 X+37.77 Y-40.05 I-5.511 J+3.231 F700 +G03 X+37.056 Y-42.787 I+1.011 J-1.725 F2000 +G00 Z+0 +G00 X+42.754 Y-36.552 +G00 Z-8 +G03 X+40.05 Y-37.38 I-0.938 J-1.766 F700 +G02 X+37.38 Y-40.05 I-5.696 J+3.026 F700 +G03 X+36.552 Y-42.754 I+0.938 J-1.766 F2000 +G00 Z+0 +G00 X+42.71 Y-35.992 +G00 Z-8 +G03 X+40.05 Y-36.954 I-0.849 J-1.811 F700 +G02 X+36.954 Y-40.05 I-5.831 J+2.735 F700 +G03 X+35.992 Y-42.71 I+0.849 J-1.811 F2000 +G00 Z+0 +G00 X+42.646 Y-35.349 +G00 Z-8 +G03 X+40.05 Y-36.473 I-0.736 J-1.86 F700 +G02 X+36.473 Y-40.05 I-5.923 J+2.346 F700 +G03 X+35.349 Y-42.646 I+0.736 J-1.86 F2000 +G00 Z+0 +G00 X+42.545 Y-34.558 +G00 Z-8 +G03 X+40.05 Y-35.89 I-0.581 J-1.913 F700 +G02 X+35.89 Y-40.05 I-5.978 J+1.818 F700 +G03 X+34.558 Y-42.545 I+0.581 J-1.914 F2000 +G00 Z+0 +G00 X+42.354 Y-33.409 +G00 Z-8 +G03 X+40.05 Y-35.05 I-0.332 J-1.973 F700 +G02 X+35.05 Y-40.05 I-6.013 J+1.013 F700 +G03 X+33.409 Y-42.354 I+0.332 J-1.972 F2000 +G00 Z+0 +G00 X+3.193 Y-42.799 +G00 Z-8 +G03 X+2.525 Y-40.05 I-1.708 J+1.041 F700 +G02 X+2.169 Y-39.77 I+0.997 J+1.636 F700 +G03 X-0.66 Y-39.774 I-1.413 J-1.416 F2000 +G00 Z+0 +G00 X+3.608 Y-42.785 +G00 Z-8 +G03 X+2.886 Y-40.05 I-1.728 J+1.006 F700 +G02 X+2.186 Y-39.523 I+1.864 J+3.202 F700 +G03 X-0.642 Y-39.583 I-1.384 J-1.444 F2000 +G00 Z+0 +G00 X+4.067 Y-42.765 +G00 Z-8 +G03 X+3.272 Y-40.05 I-1.755 J+0.961 F700 +G02 X+2.204 Y-39.274 I+2.497 J+4.562 F700 +G03 X-0.624 Y-39.359 I-1.372 J-1.456 F2000 +G00 Z+0 +G00 X+4.519 Y-42.748 +G00 Z-8 +G03 X+3.671 Y-40.05 I-1.773 J+0.925 F700 +G02 X+2.221 Y-39.026 I+3.074 J+5.894 F700 +G03 X-0.606 Y-39.13 I-1.361 J-1.466 F2000 +G00 Z+0 +G00 X+5.067 Y-42.71 +G00 Z-8 +G03 X+4.105 Y-40.05 I-1.811 J+0.849 F700 +G02 X+2.238 Y-38.776 I+2.996 J+6.393 F700 +G03 X-0.589 Y-38.849 I-1.377 J-1.45 F2000 +G00 Z+0 +G00 X+5.647 Y-42.666 +G00 Z-8 +G03 X+4.572 Y-40.05 I-1.845 J+0.77 F700 +G02 X+2.256 Y-38.525 I+2.874 J+6.887 F700 +G03 X-0.572 Y-38.571 I-1.391 J-1.437 F2000 +G00 Z+0 +G00 X+6.318 Y-42.604 +G00 Z-8 +G03 X+5.103 Y-40.05 I-1.885 J+0.67 F700 +G02 X+2.274 Y-38.272 I+2.572 J+7.231 F700 +G03 X-0.555 Y-38.285 I-1.408 J-1.42 F2000 +G00 Z+0 +G00 X+7.169 Y-42.503 +G00 Z-8 +G03 X+5.761 Y-40.05 I-1.93 J+0.522 F700 +G02 X+2.292 Y-38.015 I+1.996 J+7.377 F700 +G03 X-0.537 Y-37.982 I-1.431 J-1.398 F2000 +G00 Z+0 +G00 X+8.349 Y-42.333 +G00 Z-8 +G03 X+6.679 Y-40.05 I-1.977 J+0.307 F700 +G02 X+2.31 Y-37.755 I+1.17 J+7.534 F700 +G03 X-0.518 Y-37.676 I-1.453 J-1.374 F2000 +G00 Z+0 +G00 X+1.839 Y-5.56 +G00 Z-8 +G03 X+4.603 Y-4.959 I+1.082 J+1.682 F700 +G02 X+4.959 Y-4.603 I+0.998 J-0.642 F700 +G03 X+5.56 Y-1.839 I-1.081 J+1.682 F2000 +G00 Z+0 +G00 X+1.997 Y-6.595 +G00 Z-8 +G03 X+4.571 Y-5.421 I+0.7 J+1.874 F700 +G02 X+5.421 Y-4.571 I+1.357 J-0.507 F700 +G03 X+6.595 Y-1.997 I-0.7 J+1.874 F2000 +G00 Z+0 +G00 X+39.801 Y+0.659 +G00 Z-8 +G03 X+39.77 Y-2.169 I+1.398 J-1.429 F700 +G02 X+40.05 Y-2.53 I-1.43 J-1.399 F700 +G03 X+42.797 Y-3.203 I+1.71 J+1.037 F2000 +G00 Z+0 +G00 X+39.61 Y+0.641 +G00 Z-8 +G03 X+39.523 Y-2.186 I+1.371 J-1.457 F700 +G02 X+40.05 Y-2.893 I-2.807 J-2.64 F700 +G03 X+42.783 Y-3.62 I+1.73 J+1.003 F2000 +G00 Z+0 +G00 X+39.397 Y+0.623 +G00 Z-8 +G03 X+39.279 Y-2.203 I+1.354 J-1.472 F700 +G02 X+40.05 Y-3.262 I-4.214 J-3.877 F700 +G03 X+42.775 Y-4.019 I+1.741 J+0.984 F2000 +G00 Z+0 +G00 X+39.136 Y+0.606 +G00 Z-8 +G03 X+39.032 Y-2.221 I+1.361 J-1.465 F700 +G02 X+40.05 Y-3.659 I-4.88 J-4.532 F700 +G03 X+42.75 Y-4.501 I+1.771 J+0.929 F2000 +G00 Z+0 +G00 X+38.855 Y+0.589 +G00 Z-8 +G03 X+38.781 Y-2.238 I+1.377 J-1.45 F700 +G02 X+40.05 Y-4.091 I-5.131 J-4.873 F700 +G03 X+42.712 Y-5.047 I+1.809 J+0.853 F2000 +G00 Z+0 +G00 X+38.577 Y+0.572 +G00 Z-8 +G03 X+38.531 Y-2.256 I+1.391 J-1.437 F700 +G02 X+40.05 Y-4.556 I-5.376 J-5.202 F700 +G03 X+42.669 Y-5.623 I+1.843 J+0.776 F2000 +G00 Z+0 +G00 X+38.286 Y+0.555 +G00 Z-8 +G03 X+38.277 Y-2.273 I+1.41 J-1.419 F700 +G02 X+40.05 Y-5.085 I-5.419 J-5.383 F700 +G03 X+42.607 Y-6.295 I+1.883 J+0.673 F2000 +G00 Z+0 +G00 X+37.983 Y+0.537 +G00 Z-8 +G03 X+38.019 Y-2.291 I+1.432 J-1.396 F700 +G02 X+40.05 Y-5.739 I-5.308 J-5.449 F700 +G03 X+42.506 Y-7.142 I+1.93 J+0.526 F2000 +G00 Z+0 +G00 X+37.675 Y+0.518 +G00 Z-8 +G03 X+37.759 Y-2.31 I+1.456 J-1.372 F700 +G02 X+40.05 Y-6.649 I-5.204 J-5.521 F700 +G03 X+42.337 Y-8.313 I+1.976 J+0.312 F2000 +G00 Z+0 +G00 X+37.356 Y+0.497 +G00 Z-8 +G03 X+37.495 Y-2.328 I+1.482 J-1.343 F700 +G02 X+39.95 Y-8.012 I-5.024 J-5.542 F700 +G01 Y-34 +G02 X+34 Y-39.95 I-5.95 J+0 +G01 X+8.01 +G02 X+2.328 Y-37.491 I-0.115 J+7.527 +G03 X-0.497 Y-37.358 I-1.479 J-1.346 F2000 +G00 Z+0 +G00 X+37.025 Y+0.474 +G00 Z-8 +G03 X+37.225 Y-2.347 I+1.511 J-1.31 F700 +G02 X+39.75 Y-8.01 I-4.799 J-5.534 F700 +G01 Y-34 +G02 X+34 Y-39.75 I-5.75 J+0 +G01 X+8.009 +G02 X+2.347 Y-37.222 I-0.108 J+7.363 +G03 X-0.475 Y-37.027 I-1.508 J-1.313 F2000 +G00 Z+0 +G00 X+36.684 Y+0.45 +G00 Z-8 +G03 X+36.95 Y-2.366 I+1.541 J-1.275 F700 +G02 X+39.55 Y-8.009 I-4.569 J-5.525 F700 +G01 Y-34 +G02 X+34 Y-39.55 I-5.55 J+0 +G01 X+8.008 +G02 X+2.366 Y-36.947 I-0.1 J+7.199 +G03 X-0.45 Y-36.685 I-1.539 J-1.277 F2000 +G00 Z+0 +G00 X+36.332 Y+0.423 +G00 Z-8 +G03 X+36.669 Y-2.386 I+1.572 J-1.236 F700 +G02 X+39.35 Y-8.007 I-4.333 J-5.516 F700 +G01 Y-34 +G02 X+34 Y-39.35 I-5.35 J+0 +G01 X+8.006 +G02 X+2.386 Y-36.666 I-0.091 J+7.036 +G03 X-0.423 Y-36.331 I-1.572 J-1.237 F2000 +G00 Z+0 +G00 X+35.967 Y+0.392 +G00 Z-8 +G03 X+36.38 Y-2.406 I+1.606 J-1.192 F700 +G02 X+39.15 Y-8.006 I-4.09 J-5.508 F700 +G01 Y-34 +G02 X+34 Y-39.15 I-5.15 J+0 +G01 X+8.005 +G02 X+2.406 Y-36.377 I-0.082 J+6.873 +G03 X-0.392 Y-35.965 I-1.605 J-1.193 F2000 +G00 Z+0 +G00 X+35.582 Y+0.357 +G00 Z-8 +G03 X+36.08 Y-2.427 I+1.641 J-1.143 F700 +G02 X+38.95 Y-8.005 I-3.826 J-5.495 F700 +G01 Y-34 +G02 X+34 Y-38.95 I-4.95 J+0 +G01 X+8.004 +G02 X+2.427 Y-36.077 I-0.073 J+6.708 +G03 X-0.357 Y-35.58 I-1.641 J-1.144 F2000 +G00 Z+0 +G00 X+35.177 Y+0.317 +G00 Z-8 +G03 X+35.769 Y-2.449 I+1.679 J-1.087 F700 +G02 X+38.75 Y-8.004 I-3.55 J-5.482 F700 +G01 Y-34 +G02 X+34 Y-38.75 I-4.75 J+0 +G01 X+8.003 +G02 X+2.449 Y-35.766 I-0.063 J+6.544 +G03 X-0.317 Y-35.176 I-1.678 J-1.089 F2000 +G00 Z+0 +G00 X+34.75 Y+0.271 +G00 Z-8 +G03 X+35.444 Y-2.471 I+1.718 J-1.025 F700 +G02 X+38.55 Y-8.003 I-3.261 J-5.469 F700 +G01 Y-34 +G02 X+34 Y-38.55 I-4.55 J+0 +G01 X+8.002 +G02 X+2.472 Y-35.442 I-0.053 J+6.38 +G03 X-0.271 Y-34.75 I-1.718 J-1.025 F2000 +G00 Z+0 +G00 X+34.295 Y+0.216 +G00 Z-8 +G03 X+35.101 Y-2.495 I+1.759 J-0.953 F700 +G02 X+38.35 Y-8.002 I-2.954 J-5.455 F700 +G01 Y-34 +G02 X+34 Y-38.35 I-4.35 J+0 +G01 X+8.002 +G02 X+2.496 Y-35.099 I-0.043 J+6.216 +G03 X-0.216 Y-34.295 I-1.758 J-0.954 F2000 +G00 Z+0 +G00 X+33.803 Y+0.15 +G00 Z-8 +G03 X+34.735 Y-2.521 I+1.802 J-0.87 F700 +G02 X+38.15 Y-8.001 I-2.624 J-5.439 F700 +G01 Y-34 +G02 X+34 Y-38.15 I-4.15 J+0 +G01 X+8.001 +G02 X+2.521 Y-34.734 I-0.032 J+6.052 +G03 X-0.15 Y-33.805 I-1.8 J-0.871 F2000 +G00 Z+0 +G00 X+33.254 Y+0.066 +G00 Z-8 +G03 X+34.333 Y-2.549 I+1.847 J-0.768 F700 +G02 X+37.95 Y-8.001 I-2.255 J-5.422 F700 +G01 Y-34 +G02 X+34 Y-37.95 I-3.95 J+0 +G01 X+8.001 +G02 X+2.549 Y-34.332 I-0.025 J+5.879 +G03 X-0.066 Y-33.254 I-1.846 J-0.769 F2000 +G00 Z+0 +G00 X+32.626 Y-0.045 +G00 Z-8 +G03 X+33.878 Y-2.581 I+1.894 J-0.642 F700 +G02 X+37.75 Y-8 I-1.83 J-5.401 F700 +G01 Y-34 +G02 X+34 Y-37.75 I-3.75 J+0 +G01 X+8 +G02 X+2.581 Y-33.877 I-0.016 J+5.705 +G03 X+0.045 Y-32.625 I-1.894 J-0.642 F2000 +G00 Z+0 +G00 X+31.828 Y-0.212 +G00 Z-8 +G03 X+33.311 Y-2.621 I+1.946 J-0.463 F700 +G02 X+37.55 Y-8 I-1.276 J-5.365 F700 +G01 Y-34 +G02 X+34 Y-37.55 I-3.55 J+0 +G01 X+8 +G02 X+2.621 Y-33.31 I-0.012 J+5.518 +G03 X+0.212 Y-31.828 I-1.946 J-0.463 F2000 +G00 Z+0 +G00 X+30.657 Y-0.514 +G00 Z-8 +G03 X+32.477 Y-2.679 I+1.993 J-0.172 F700 +G02 X+37.35 Y-8 I-0.461 J-5.314 F700 +G01 Y-34 +G02 X+34 Y-37.35 I-3.35 J+0 +G01 X+8 +G02 X+2.679 Y-32.477 I-0.005 J+5.336 +G03 X+0.513 Y-30.658 I-1.993 J-0.174 F2000 +G00 Z+0 +G00 X+28.03 Y-0.85 +G00 Z-8 +G03 X+30.03 Y-2.85 I+2 J+0 F700 +G01 X+32 F700 +G02 X+37.15 Y-8 I+0 J-5.15 +G01 Y-34 +G02 X+34 Y-37.15 I-3.15 J+0 +G01 X+8 +G02 X+2.85 Y-32 I+0 J+5.15 +G01 Y-30.03 +G03 X+0.85 Y-28.03 I-2 J+0 F2000 +G00 Z+0 +G00 X+25.17 Y-1.05 +G00 Z-8 +G03 X+27.17 Y-3.05 I+2 J+0 F700 +G01 X+32 F700 +G02 X+36.95 Y-8 I+0 J-4.95 +G01 Y-34 +G02 X+34 Y-36.95 I-2.95 J+0 +G01 X+8 +G02 X+3.05 Y-32 I+0 J+4.95 +G01 Y-27.17 +G03 X+1.05 Y-25.17 I-2 J+0 F2000 +G00 Z+0 +G00 X+22.309 Y-1.25 +G00 Z-8 +G03 X+24.309 Y-3.25 I+2 J+0 F700 +G01 X+32 F700 +G02 X+36.75 Y-8 I+0 J-4.75 +G01 Y-34 +G02 X+34 Y-36.75 I-2.75 J+0 +G01 X+8 +G02 X+3.25 Y-32 I+0 J+4.75 +G01 Y-24.309 +G03 X+1.25 Y-22.309 I-2 J+0 F2000 +G00 Z+0 +G00 X+19.449 Y-1.45 +G00 Z-8 +G03 X+21.449 Y-3.45 I+2 J+0 F700 +G01 X+32 F700 +G02 X+36.55 Y-8 I+0 J-4.55 +G01 Y-34 +G02 X+34 Y-36.55 I-2.55 J+0 +G01 X+8 +G02 X+3.45 Y-32 I+0 J+4.55 +G01 Y-21.449 +G03 X+1.45 Y-19.449 I-2 J+0 F2000 +G00 Z+0 +G00 X+16.589 Y-1.65 +G00 Z-8 +G03 X+18.589 Y-3.65 I+2 J+0 F700 +G01 X+32 F700 +G02 X+36.35 Y-8 I+0 J-4.35 +G01 Y-34 +G02 X+34 Y-36.35 I-2.35 J+0 +G01 X+8 +G02 X+3.65 Y-32 I+0 J+4.35 +G01 Y-18.589 +G03 X+1.65 Y-16.589 I-2 J+0 F2000 +G00 Z+0 +G00 X+13.729 Y-1.85 +G00 Z-8 +G03 X+15.729 Y-3.85 I+2 J+0 F700 +G01 X+32 F700 +G02 X+36.15 Y-8 I+0 J-4.15 +G01 Y-34 +G02 X+34 Y-36.15 I-2.15 J+0 +G01 X+8 +G02 X+3.85 Y-32 I+0 J+4.15 +G01 Y-15.729 +G03 X+1.85 Y-13.729 I-2 J+0 F2000 +G00 Z+0 +G00 X+10.869 Y-2.05 +G00 Z-8 +G03 X+12.869 Y-4.05 I+2 J+0 F700 +G01 X+32 F700 +G02 X+35.95 Y-8 I+0 J-3.95 +G01 Y-34 +G02 X+34 Y-35.95 I-1.95 J+0 +G01 X+8 +G02 X+4.05 Y-32 I+0 J+3.95 +G01 Y-12.869 +G03 X+2.05 Y-10.869 I-2 J+0 F2000 +G00 Z+0 +G00 X+8.009 Y-2.25 +G00 Z-8 +G03 X+10.009 Y-4.25 I+2 J+0 F700 +G01 X+32 F700 +G02 X+35.75 Y-8 I+0 J-3.75 +G01 Y-34 +G02 X+34 Y-35.75 I-1.75 J+0 +G01 X+8 +G02 X+4.25 Y-32 I+0 J+3.75 +G01 Y-10.009 +G03 X+2.25 Y-8.009 I-2 J+0 F2000 +G00 Z+0 +G00 X+5.149 Y-2.45 +G00 Z-8 +G03 X+7.149 Y-4.45 I+2 J+0 F700 +G01 X+32 F700 +G02 X+35.55 Y-8 I+0 J-3.55 +G01 Y-34 +G02 X+34 Y-35.55 I-1.55 J+0 +G01 X+8 +G02 X+4.45 Y-32 I+0 J+3.55 +G01 Y-7.149 +G01 X+4.65 +G01 Y-6 +G02 X+6 Y-4.65 I+1.35 J+0 +G01 X+32 +G02 X+35.35 Y-8 I+0 J-3.35 +G01 Y-34 +G02 X+34 Y-35.35 I-1.35 J+0 +G01 X+8 +G02 X+4.65 Y-32 I+0 J+3.35 +G01 Y-7.149 +G01 X+4.85 Y-6.599 +G01 Y-6 +G02 X+6 Y-4.85 I+1.15 J+0 +G01 X+32 +G02 X+35.15 Y-8 I+0 J-3.15 +G01 Y-34 +G02 X+34 Y-35.15 I-1.15 J+0 +G01 X+8 +G02 X+4.85 Y-32 I+0 J+3.15 +G01 Y-7.149 +G01 X+5.05 Y-6.599 +G01 Y-6 +G02 X+6 Y-5.05 I+0.95 J+0 +G01 X+32 +G02 X+34.95 Y-8 I+0 J-2.95 +G01 Y-34 +G02 X+34 Y-34.95 I-0.95 J+0 +G01 X+8 +G02 X+5.05 Y-32 I+0 J+2.95 +G01 Y-7.149 +G01 Y-6.599 +G03 X+3.05 Y-4.599 I-2 J+0 F2000 +G01 Z+0 +G00 Z+8 +#HSC OFF +#TRAFO OFF +; - Finition carre avec rayon +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G01 X+16 Y-3.1 Z+2 F700 +G01 Z-6 +G03 X+18 Y-5.1 I+2 J+0 +G01 X+19 F900 +G01 X+32 +G02 X+34.9 Y-8 I+0 J-2.9 +G01 Y-34 +G02 X+34 Y-34.9 I-0.9 J+0 +G01 X+8 +G02 X+5.1 Y-32 I+0 J+2.9 +G01 Y-6 +G02 X+6 Y-5.1 I+0.9 J+0 +G01 X+19 +G01 X+20 +G03 X+22 Y-3.1 I+0 J+2 F2000 +G00 X+16 +G00 Z-6.5 +G03 X+18 Y-5.1 I+2 J+0 F700 +G01 X+19 F900 +G01 X+32 +G02 X+34.9 Y-8 I+0 J-2.9 +G01 Y-34 +G02 X+34 Y-34.9 I-0.9 J+0 +G01 X+8 +G02 X+5.1 Y-32 I+0 J+2.9 +G01 Y-6 +G02 X+6 Y-5.1 I+0.9 J+0 +G01 X+19 +G01 X+20 +G03 X+22 Y-3.1 I+0 J+2 F2000 +G00 X+16 +G00 Z-7 +G03 X+18 Y-5.1 I+2 J+0 F700 +G01 X+19 F900 +G01 X+32 +G02 X+34.9 Y-8 I+0 J-2.9 +G01 Y-34 +G02 X+34 Y-34.9 I-0.9 J+0 +G01 X+8 +G02 X+5.1 Y-32 I+0 J+2.9 +G01 Y-6 +G02 X+6 Y-5.1 I+0.9 J+0 +G01 X+19 +G01 X+20 +G03 X+22 Y-3.1 I+0 J+2 F2000 +G00 X+16 +G00 Z-7.5 +G03 X+18 Y-5.1 I+2 J+0 F700 +G01 X+19 F900 +G01 X+32 +G02 X+34.9 Y-8 I+0 J-2.9 +G01 Y-34 +G02 X+34 Y-34.9 I-0.9 J+0 +G01 X+8 +G02 X+5.1 Y-32 I+0 J+2.9 +G01 Y-6 +G02 X+6 Y-5.1 I+0.9 J+0 +G01 X+19 +G01 X+20 +G03 X+22 Y-3.1 I+0 J+2 F2000 +G00 X+16 +G00 Z-8 +G03 X+18 Y-5.1 I+2 J+0 F700 +G01 X+19 F900 +G01 X+32 +G02 X+34.9 Y-8 I+0 J-2.9 +G01 Y-34 +G02 X+34 Y-34.9 I-0.9 J+0 +G01 X+8 +G02 X+5.1 Y-32 I+0 J+2.9 +G01 Y-6 +G02 X+6 Y-5.1 I+0.9 J+0 +G01 X+19 +G01 X+20 +G03 X+22 Y-3.1 I+0 J+2 F2000 +G01 Z+0 +#HSC OFF +#TRAFO OFF +; - Finition fond diagonale +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G00 X-0.181 Y+3.749 Z+5.5 +G00 Z-5.5 +G01 Z-10.5 F700 +G03 X-1.061 Y+1.061 I+0.904 J-1.784 +G01 X-0.5 Y-0.046 F600 +G02 X+0.046 Y+0.5 I+2.302 J-1.756 +G03 X+0.423 Y+3.303 I-1.213 J+1.59 F2000 +G00 Z+0.5 +G00 X-3.294 Y-0.802 +G00 Z-10.5 +G03 X-0.5 Y-0.363 I+1.177 J+1.617 F700 +G02 X+0.363 Y+0.5 I+3.177 J-2.314 F600 +G03 X+0.802 Y+3.294 I-1.178 J+1.617 F2000 +G00 Z+0.5 +G00 X-3.286 Y-1.17 +G00 Z-10.5 +G03 X-0.5 Y-0.684 I+1.15 J+1.636 F700 +G02 X+0.684 Y+0.5 I+3.987 J-2.803 F600 +G03 X+1.17 Y+3.286 I-1.15 J+1.636 F2000 +G00 Z+0.5 +G00 X-3.268 Y-1.607 +G00 Z-10.5 +G03 X-0.5 Y-1.023 I+1.092 J+1.676 F700 +G02 X+1.023 Y+0.5 I+4.374 J-2.851 F600 +G03 X+1.607 Y+3.268 I-1.092 J+1.676 F2000 +G00 Z+0.5 +G00 X-3.241 Y-2.085 +G00 Z-10.5 +G03 X-0.5 Y-1.385 I+1.021 J+1.72 F700 +G02 X+1.385 Y+0.5 I+4.634 J-2.749 F600 +G03 X+2.085 Y+3.241 I-1.02 J+1.72 F2000 +G00 Z+0.5 +G00 X-3.208 Y-2.583 +G00 Z-10.5 +G03 X-0.5 Y-1.766 I+0.946 J+1.762 F700 +G02 X+1.766 Y+0.5 I+4.889 J-2.623 F600 +G03 X+2.583 Y+3.208 I-0.945 J+1.762 F2000 +G00 Z+0.5 +G00 X-3.16 Y-3.149 +G00 Z-10.5 +G03 X-0.5 Y-2.186 I+0.849 J+1.812 F700 +G02 X+2.186 Y+0.5 I+5.053 J-2.367 F600 +G03 X+3.149 Y+3.16 I-0.849 J+1.811 F2000 +G00 Z+0.5 +G00 X-3.079 Y-3.843 +G00 Z-10.5 +G03 X-0.5 Y-2.681 I+0.709 J+1.87 F700 +G02 X+2.681 Y+0.5 I+5.12 J-1.939 F600 +G03 X+3.843 Y+3.079 I-0.708 J+1.87 F2000 +G00 Z+0.5 +G00 X-2.925 Y-4.803 +G00 Z-10.5 +G03 X-0.5 Y-3.347 I+0.484 J+1.94 F700 +G02 X+3.347 Y+0.5 I+5.126 J-1.279 F600 +G03 X+4.803 Y+2.925 I-0.484 J+1.941 F2000 +G00 Z+0.5 +G00 X-2.635 Y-6.682 +G00 Z-10.5 +G03 X-0.5 Y-4.826 I+0.14 J+1.996 F700 +G01 X-0.464 Y-4.314 F600 +G02 X+4.314 Y+0.464 I+5.137 J-0.359 +G01 X+4.825 Y+0.5 +G03 X+6.681 Y+2.635 I-0.139 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-9.551 +G00 Z-10.5 +G03 X-0.5 Y-7.695 I+0.14 J+1.995 F700 +G01 X-0.265 Y-4.328 F600 +G02 X+4.328 Y+0.265 I+4.938 J-0.345 +G01 X+7.693 Y+0.5 +G03 X+9.548 Y+2.635 I-0.14 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-12.421 +G00 Z-10.5 +G03 X-0.5 Y-10.565 I+0.14 J+1.995 F700 +G01 X-0.065 Y-4.342 F600 +G02 X+4.342 Y+0.065 I+4.738 J-0.331 +G01 X+10.56 Y+0.5 +G03 X+12.415 Y+2.635 I-0.14 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-15.29 +G00 Z-10.5 +G03 X-0.5 Y-13.435 I+0.14 J+1.995 F700 +G01 X+0.134 Y-4.356 F600 +G02 X+4.356 Y-0.134 I+4.539 J-0.317 +G01 X+13.427 Y+0.5 +G03 X+15.282 Y+2.635 I-0.14 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-18.16 +G00 Z-10.5 +G03 X-0.5 Y-16.304 I+0.14 J+1.995 F700 +G01 X+0.334 Y-4.37 F600 +G02 X+4.37 Y-0.334 I+4.339 J-0.303 +G01 X+16.294 Y+0.5 +G03 X+18.149 Y+2.635 I-0.14 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-21.03 +G00 Z-10.5 +G03 X-0.5 Y-19.174 I+0.14 J+1.995 F700 +G01 X+0.533 Y-4.384 F600 +G02 X+4.384 Y-0.533 I+4.14 J-0.289 +G01 X+19.161 Y+0.5 +G03 X+21.017 Y+2.635 I-0.14 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-23.899 +G00 Z-10.5 +G03 X-0.5 Y-22.044 I+0.14 J+1.995 F700 +G01 X+0.733 Y-4.398 F600 +G02 X+4.398 Y-0.733 I+3.94 J-0.275 +G01 X+22.028 Y+0.5 +G03 X+23.884 Y+2.635 I-0.139 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-26.769 +G00 Z-10.5 +G03 X-0.5 Y-24.913 I+0.14 J+1.995 F700 +G01 X+0.932 Y-4.412 F600 +G02 X+4.412 Y-0.932 I+3.741 J-0.261 +G01 X+24.895 Y+0.5 +G03 X+26.751 Y+2.635 I-0.139 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-29.639 +G00 Z-10.5 +G03 X-0.5 Y-27.783 I+0.14 J+1.996 F700 +G01 X+1.132 Y-4.426 F600 +G02 X+4.426 Y-1.132 I+3.541 J-0.247 +G01 X+27.762 Y+0.5 +G03 X+29.618 Y+2.635 I-0.139 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-32.508 +G00 Z-10.5 +G03 X-0.5 Y-30.652 I+0.14 J+1.995 F700 +G01 X+1.331 Y-4.44 F600 +G02 X+4.44 Y-1.331 I+3.342 J-0.233 +G01 X+30.629 Y+0.5 +G03 X+32.485 Y+2.635 I-0.139 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-35.378 +G00 Z-10.5 +G03 X-0.5 Y-33.522 I+0.14 J+1.995 F700 +G01 X+1.531 Y-4.454 F600 +G02 X+4.453 Y-1.531 I+3.142 J-0.219 +G01 X+33.497 Y+0.5 +G03 X+35.352 Y+2.635 I-0.14 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-38.247 +G00 Z-10.5 +G03 X-0.5 Y-36.392 I+0.14 J+1.995 F700 +G01 X+1.73 Y-4.468 F600 +G02 X+4.467 Y-1.73 I+2.943 J-0.205 +G01 X+36.364 Y+0.5 +G03 X+38.219 Y+2.635 I-0.14 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.635 Y-41.117 +G00 Z-10.5 +G03 X-0.5 Y-39.261 I+0.14 J+1.995 F700 +G01 X+1.93 Y-4.482 F600 +G02 X+4.481 Y-1.93 I+2.743 J-0.191 +G01 X+39.231 Y+0.5 +G03 X+41.086 Y+2.635 I-0.14 J+1.995 F2000 +G00 Z+0.5 +G00 X-2.347 Y-42.351 +G00 Z-10.5 +G03 X-0.347 Y-40.351 I+0 J+2 F700 +G01 Y-40.272 F600 +G02 X-0.338 Y-39.812 I+1.841 J+0.194 +G01 X+2.129 Y-4.495 +G02 X+4.495 Y-2.129 I+2.544 J-0.178 +G01 X+39.822 Y+0.341 +G01 X+40.353 Y+0.345 +G03 X+42.339 Y+2.358 I-0.014 J+1.999 F2000 +G00 Z+0.5 +G00 X-2.147 Y-42.471 +G00 Z-10.5 +G03 X-0.147 Y-40.471 I+0 J+2 F700 +G01 Y-40.262 F600 +G02 X-0.139 Y-39.834 I+1.641 J+0.184 +G01 X+2.329 Y-4.509 +G02 X+4.509 Y-2.329 I+2.344 J-0.164 +G01 X+39.836 Y+0.141 +G01 X+40.471 Y+0.145 +G03 X+42.459 Y+2.158 I-0.012 J+2 F2000 +G00 Z+0.5 +G00 X-1.947 Y-42.5 +G00 Z-10.5 +G03 X+0.053 Y-40.5 I+0 J+2 F700 +G01 Y-40.25 F600 +G02 X+0.06 Y-39.856 I+1.441 J+0.172 +G01 X+2.528 Y-4.523 +G02 X+4.523 Y-2.528 I+2.145 J-0.15 +G01 X+39.85 Y-0.058 +G01 X+40.5 Y-0.055 +G03 X+42.489 Y+1.956 I-0.011 J+2 F2000 +G00 Z+0.5 +G00 X-1.747 Y-42.5 +G00 Z-10.5 +G03 X+0.253 Y-40.5 I+0 J+2 F700 +G01 Y-40.238 F600 +G02 X+0.259 Y-39.879 I+1.241 J+0.16 +G01 X+2.728 Y-4.537 +G02 X+4.537 Y-2.728 I+1.945 J-0.136 +G01 X+39.864 Y-0.258 +G01 X+40.5 Y-0.254 +G03 X+42.489 Y+1.757 I-0.011 J+2 F2000 +G00 Z+0.5 +G00 X-1.547 Y-42.5 +G00 Z-10.5 +G03 X+0.453 Y-40.5 I+0 J+2 F700 +G01 Y-40.224 F600 +G02 X+0.458 Y-39.902 I+1.041 J+0.146 +G01 X+2.927 Y-4.551 +G02 X+4.551 Y-2.927 I+1.746 J-0.122 +G01 X+39.878 Y-0.457 +G01 X+40.5 Y-0.454 +G03 X+42.489 Y+1.557 I-0.011 J+2 F2000 +G00 Z+0.5 +G00 X-1.347 Y-42.5 +G00 Z-10.5 +G03 X+0.653 Y-40.5 I+0 J+2 F700 +G01 Y-40.21 F600 +G02 X+0.656 Y-39.926 I+0.841 J+0.132 +G01 X+3.127 Y-4.565 +G02 X+4.565 Y-3.127 I+1.546 J-0.108 +G01 X+39.892 Y-0.657 +G01 X+40.5 Y-0.654 +G03 X+42.49 Y+1.357 I-0.01 J+2 F2000 +G00 Z+0.5 +G00 X-1.147 Y-42.5 +G00 Z-10.5 +G03 X+0.853 Y-40.5 I+0 J+2 F700 +G01 Y-40.193 F600 +G02 X+0.855 Y-39.952 I+0.641 J+0.115 +G01 X+3.327 Y-4.579 +G02 X+4.579 Y-3.327 I+1.346 J-0.094 +G01 X+39.906 Y-0.856 +G01 X+40.5 Y-0.853 +G03 X+42.49 Y+1.157 I-0.01 J+2 F2000 +G00 Z+0.5 +G00 X-0.947 Y-42.5 +G00 Z-10.5 +G03 X+1.053 Y-40.5 I+0 J+2 F700 +G01 Y-40.174 F600 +G02 X+1.054 Y-39.98 I+0.441 J+0.096 +G01 X+3.526 Y-4.593 +G02 X+4.593 Y-3.526 I+1.147 J-0.08 +G01 X+39.92 Y-1.056 +G01 X+40.5 Y-1.053 +G03 X+42.49 Y+0.957 I-0.01 J+2 F2000 +G00 Z+0.5 +G00 X-0.747 Y-42.5 +G00 Z-10.5 +G03 X+1.253 Y-40.5 I+0 J+2 F700 +G01 Y-40.149 F600 +G02 X+1.253 Y-40.008 I+0.241 J+0.071 +G01 X+1.255 Y-39.934 +G01 X+3.726 Y-4.607 +G02 X+4.607 Y-3.726 I+0.947 J-0.066 +G01 X+39.934 Y-1.255 +G01 X+39.975 Y-1.257 +G01 X+40 Y-1.253 +G01 X+40.5 +G03 X+42.5 Y+0.747 I+0 J+2 F2000 +G01 Z-5.5 +G00 Z+5.5 +#HSC OFF +#TRAFO OFF +; - Finition diagonales +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G01 X-0.83 Y-41.793 Z+2.5 F700 +G01 Z-8.5 +G03 X+1.305 Y-39.937 I+0.14 J+1.995 +G01 X+3.775 Y-4.61 F300 +G02 X+4.61 Y-3.775 I+0.898 J-0.063 +G01 X+39.937 Y-1.305 +G03 X+41.793 Y+0.83 I-0.139 J+1.995 F2000 +G01 Z+2.5 +G00 X-0.83 Y-41.793 +G00 Z+2 +G01 Z-9 F700 +G03 X+1.305 Y-39.937 I+0.14 J+1.995 +G01 X+3.775 Y-4.61 F300 +G02 X+4.61 Y-3.775 I+0.898 J-0.063 +G01 X+39.937 Y-1.305 +G03 X+41.793 Y+0.83 I-0.139 J+1.995 F2000 +G01 Z+2 +G00 X-0.83 Y-41.793 +G00 Z+1.5 +G01 Z-9.5 F700 +G03 X+1.305 Y-39.937 I+0.14 J+1.995 +G01 X+3.775 Y-4.61 F300 +G02 X+4.61 Y-3.775 I+0.898 J-0.063 +G01 X+39.937 Y-1.305 +G03 X+41.793 Y+0.83 I-0.139 J+1.995 F2000 +G01 Z+1.5 +G00 X-0.83 Y-41.793 +G00 Z+1 +G01 Z-10 F700 +G03 X+1.305 Y-39.937 I+0.14 J+1.995 +G01 X+3.775 Y-4.61 F300 +G02 X+4.61 Y-3.775 I+0.898 J-0.063 +G01 X+39.937 Y-1.305 +G03 X+41.793 Y+0.83 I-0.139 J+1.995 F2000 +G01 Z+1 +G00 X-0.83 Y-41.793 +G00 Z+0.5 +G01 Z-10.5 F700 +G03 X+1.305 Y-39.937 I+0.14 J+1.995 +G01 X+3.775 Y-4.61 F300 +G02 X+4.61 Y-3.775 I+0.898 J-0.063 +G01 X+39.937 Y-1.305 +G03 X+41.793 Y+0.83 I-0.139 J+1.995 F2000 +G01 Z+0.5 +#HSC OFF +#TRAFO OFF +; - Finition oblong 1 +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G01 X+22.552 Y-26.218 Z+1.1 F200 +G01 Z-3.9 +G03 X+22.75 Y-26.5 Z-4.5 I-0.102 J-0.282 K0.332 +G01 Y-25.5 F200 +G01 Y-23 +G03 X+21.25 Y-23 I-0.75 J+0 +G01 Y-28 +G03 X+22.75 Y-28 I+0.75 J+0 +G01 Y-25.5 +G01 Y-24.5 +G03 X+22.25 Y-24 I-0.5 J+0 F200 +G00 Z-4.3 +G00 X+22.699 Y-26.199 +G03 X+22.3 Y-27 Z-4.5 I-0.399 J-0.301 F200 K0.055 +G03 X+22.8 Y-26.5 I+0 J+0.5 +G01 Y-25.5 F200 +G01 Y-23 +G03 X+21.2 Y-23 I-0.8 J+0 +G01 Y-28 +G03 X+22.8 Y-28 I+0.8 J+0 +G01 Y-25.5 +G01 Y-24.5 +G03 X+22.3 Y-24 I-0.5 J+0 F200 +G00 Z-4.3 +G00 X+22.699 Y-26.199 +G03 X+22.3 Y-27 Z-4.5 I-0.399 J-0.301 F200 K0.055 +G03 X+22.8 Y-26.5 I+0 J+0.5 +G01 Y-25.5 F200 +G01 Y-23 +G03 X+21.2 Y-23 I-0.8 J+0 +G01 Y-28 +G03 X+22.8 Y-28 I+0.8 J+0 +G01 Y-25.5 +G01 Y-24.5 +G01 Z+0.5 F200 +#HSC OFF +#TRAFO OFF +; - Finition poche ronde etage 1 +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G01 X+25.59 Y-21.253 Z+4 F700 +G01 Z-1 +G03 X+26.267 Y-22.495 I+0.959 J-0.282 +G03 X+27 Y-17.4 I+0.733 J+2.495 F500 +G03 X+27.733 Y-22.495 I+0 J-2.6 +G03 X+28.072 Y-21.874 I-0.141 J+0.48 F2000 +G00 X+25.928 +G00 Z-1.5 +G03 X+26.267 Y-22.495 I+0.48 J-0.141 F700 +G03 X+27 Y-17.4 I+0.733 J+2.495 F500 +G03 X+27.733 Y-22.495 I+0 J-2.6 +G03 X+28.072 Y-21.874 I-0.141 J+0.48 F2000 +G00 X+25.928 +G00 Z-2 +G03 X+26.267 Y-22.495 I+0.48 J-0.141 F700 +G03 X+27 Y-17.4 I+0.733 J+2.495 F500 +G03 X+27.733 Y-22.495 I+0 J-2.6 +G03 X+28.41 Y-21.253 I-0.282 J+0.96 F2000 +G01 Z+3 +#HSC OFF +#TRAFO OFF +; - Finition poche ronde etage 2 +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G01 X+28.487 Y-20.001 Z+1.5 F700 +G01 Z-3.5 +G03 X+28.554 Y-18.588 I-0.673 J+0.741 +G03 X+25.993 Y-21.843 I-1.554 J-1.412 F500 +G03 X+27.348 Y-17.929 I+1.007 J+1.843 +G03 X+26.196 Y-18.749 I-0.166 J-0.986 F2000 +G01 Z+1.5 +#HSC OFF +#TRAFO OFF +; - Finition poche ronde etage 3 +#TRAFO ON +#HSC[OPMODE 2 CONTERROR 0.05] +#HSC ON +G01 X+27.622 Y-19.485 Z+0.6 F700 +G01 Z-4.4 +G03 X+27.491 Y-19.101 Z-5 I-0.275 J+0.12 K0.033 +G03 X+27.491 Y-19.101 I-0.491 J-0.899 F200 +G01 X+26.456 Y-18.602 +G03 X+26.456 Y-18.602 I+0.544 J-1.398 +G01 X+26.438 Y-18.556 +G03 X+26.438 Y-18.556 I+0.562 J-1.444 F200 +G03 X+25.869 Y-19.851 I+0.362 J-0.932 F2000 +G01 Z+0 +#HSC OFF +#TRAFO OFF +D0 +G53 G01 Z+24 F1000 +G53 G01 Y+27 F1000 +M05 +M09 +M30 +N99999999 %Finition G71 diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/piece_micro5.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/piece_micro5.ngc new file mode 100644 index 0000000..983f911 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/piece_micro5.ngc @@ -0,0 +1,16048 @@ +(%100 )(PROGRAMME PRINCIPAL EBAUCHE) +N10 G17 G90 +N20 G53 G01 Z+24 F1000 +(N30 #TRAFO ON) +(//1\\SURFACAGE) +(;----------- Tool list -----------) +(;T01 R1. L+6.(T1 Fraise 2 tailles D 2)) +(;---------------------------------) +N02 G17 G90 +G00 X0 Y0 Z10 F16500 +(N06 #TRAFO ON) +N08 G54 +(; - T1 Fraise 2 tailles D 2) +N10 G17 T1 S60000 +N12 M03 +(; - Surfaçage.3) +(#HSC[OPMODE 2 CONTERROR 0.05] )(AJOUT) +(#HSC ON )(AJOUT) +N14 G01 X+45 Y-16.979 Z+4.55 B0. C0. F16500 +N16 G01 Z-0.45 +N18 G03 X+42 Y-19.979 I+0 J-3 +N20 G01 Y-40 F16500 +N22 G02 X+40 Y-42 I-2 J+0 +N24 G01 X+0 +N26 G02 X-2 Y-40 I+0 J+2 +N28 G01 Y+0 +N30 G02 X+0 Y+2 I+2 J+0 +N32 G01 X+40 +N34 G02 X+42 Y+0 I+0 J-2 +N36 G01 Y-19.979 +N38 G01 X+41.85 Y-20.488 +N40 G01 X+41.703 Y-20.976 +N42 G01 X+41.7 Y-40 +N44 G02 X+40 Y-41.7 I-1.7 J+0 +N46 G01 X+0 +N48 G02 X-1.7 Y-40 I+0 J+1.7 +N50 G01 Y+0 +N52 G02 X+0 Y+1.7 I+1.7 J+0 +N54 G01 X+40 +N56 G02 X+41.7 Y+0 I+0 J-1.7 +N58 G01 Y-19.979 +N60 G01 X+41.55 Y-20.488 +N62 G01 X+41.403 Y-20.976 +N64 G01 X+41.4 Y-40 +N66 G02 X+40 Y-41.4 I-1.4 J+0 +N68 G01 X+0 +N70 G02 X-1.4 Y-40 I+0 J+1.4 +N72 G01 Y+0 +N74 G02 X+0 Y+1.4 I+1.4 J+0 +N76 G01 X+40 +N78 G02 X+41.4 Y+0 I+0 J-1.4 +N80 G01 Y-19.979 +N82 G01 X+41.25 Y-20.488 +N84 G01 X+41.103 Y-20.976 +N86 G01 X+41.1 Y-40 +N88 G02 X+40 Y-41.1 I-1.1 J+0 +N90 G01 X+0 +N92 G02 X-1.1 Y-40 I+0 J+1.1 +N94 G01 Y+0 +N96 G02 X+0 Y+1.1 I+1.1 J+0 +N98 G01 X+40 +N100 G02 X+41.1 Y+0 I+0 J-1.1 +N102 G01 Y-19.979 +N104 G01 X+40.95 Y-20.488 +N106 G01 X+40.803 Y-20.976 +N108 G01 X+40.8 Y-39.82 +N110 G02 X+39.82 Y-40.8 I-0.98 J+0 +N112 G01 X+0.18 +N114 G02 X-0.8 Y-39.82 I+0 J+0.98 +N116 G01 Y-0.18 +N118 G02 X+0.18 Y+0.8 I+0.98 J+0 +N120 G01 X+39.82 +N122 G02 X+40.8 Y-0.18 I+0 J-0.98 +N124 G01 Y-19.979 +N126 G01 X+40.65 Y-20.488 +N128 G01 X+40.503 Y-20.976 +N130 G01 X+40.5 Y-39.52 +N132 G02 X+39.52 Y-40.5 I-0.98 J+0 +N134 G01 X+0.48 +N136 G02 X-0.5 Y-39.52 I+0 J+0.98 +N138 G01 Y-0.48 +N140 G02 X+0.48 Y+0.5 I+0.98 J+0 +N142 G01 X+39.52 +N144 G02 X+40.5 Y-0.48 I+0 J-0.98 +N146 G01 Y-19.979 +N148 G01 X+40.35 Y-20.488 +N150 G01 X+40.203 Y-20.976 +N152 G01 X+40.2 Y-39.22 +N154 G02 X+39.22 Y-40.2 I-0.98 J+0 +N156 G01 X+0.78 +N158 G02 X-0.2 Y-39.22 I+0 J+0.98 +N160 G01 Y-0.78 +N162 G02 X+0.78 Y+0.2 I+0.98 J+0 +N164 G01 X+39.22 +N166 G02 X+40.2 Y-0.78 I+0 J-0.98 +N168 G01 Y-19.979 +N170 G01 X+40.05 Y-20.488 +N172 G01 X+39.903 Y-20.976 +N174 G01 X+39.9 Y-38.92 +N176 G02 X+38.92 Y-39.9 I-0.98 J+0 +N178 G01 X+1.08 +N180 G02 X+0.1 Y-38.92 I+0 J+0.98 +N182 G01 Y-1.08 +N184 G02 X+1.08 Y-0.1 I+0.98 J+0 +N186 G01 X+38.92 +N188 G02 X+39.9 Y-1.08 I+0 J-0.98 +N190 G01 Y-19.979 +N192 G01 X+39.75 Y-20.488 +N194 G01 X+39.603 Y-20.976 +N196 G01 X+39.6 Y-38.62 +N198 G02 X+38.62 Y-39.6 I-0.98 J+0 +N200 G01 X+1.38 +N202 G02 X+0.4 Y-38.62 I+0 J+0.98 +N204 G01 Y-1.38 +N206 G02 X+1.38 Y-0.4 I+0.98 J+0 +N208 G01 X+38.62 +N210 G02 X+39.6 Y-1.38 I+0 J-0.98 +N212 G01 Y-19.979 +N214 G01 X+39.45 Y-20.488 +N216 G01 X+39.303 Y-20.976 +N218 G01 X+39.3 Y-38.32 +N220 G02 X+38.32 Y-39.3 I-0.98 J+0 +N222 G01 X+1.68 +N224 G02 X+0.7 Y-38.32 I+0 J+0.98 +N226 G01 Y-1.68 +N228 G02 X+1.68 Y-0.7 I+0.98 J+0 +N230 G01 X+38.32 +N232 G02 X+39.3 Y-1.68 I+0 J-0.98 +N234 G01 Y-19.979 +N236 G01 X+39.15 Y-20.488 +N238 G01 X+39.003 Y-20.976 +N240 G01 X+39 Y-38.02 +N242 G02 X+38.02 Y-39 I-0.98 J+0 +N244 G01 X+1.98 +N246 G02 X+1 Y-38.02 I+0 J+0.98 +N248 G01 Y-1.98 +N250 G02 X+1.98 Y-1 I+0.98 J+0 +N252 G01 X+38.02 +N254 G02 X+39 Y-1.98 I+0 J-0.98 +N256 G01 Y-19.979 +N258 G01 X+38.85 Y-20.488 +N260 G01 X+38.703 Y-20.976 +N262 G01 X+38.7 Y-37.72 +N264 G02 X+37.72 Y-38.7 I-0.98 J+0 +N266 G01 X+2.28 +N268 G02 X+1.3 Y-37.72 I+0 J+0.98 +N270 G01 Y-2.28 +N272 G02 X+2.28 Y-1.3 I+0.98 J+0 +N274 G01 X+37.72 +N276 G02 X+38.7 Y-2.28 I+0 J-0.98 +N278 G01 Y-19.979 +N280 G01 X+38.55 Y-20.488 +N282 G01 X+38.403 Y-20.976 +N284 G01 X+38.4 Y-37.42 +N286 G02 X+37.42 Y-38.4 I-0.98 J+0 +N288 G01 X+2.58 +N290 G02 X+1.6 Y-37.42 I+0 J+0.98 +N292 G01 Y-2.58 +N294 G02 X+2.58 Y-1.6 I+0.98 J+0 +N296 G01 X+37.42 +N298 G02 X+38.4 Y-2.58 I+0 J-0.98 +N300 G01 Y-19.979 +N302 G01 X+38.25 Y-20.488 +N304 G01 X+38.103 Y-20.976 +N306 G01 X+38.1 Y-37.12 +N308 G02 X+37.12 Y-38.1 I-0.98 J+0 +N310 G01 X+2.88 +N312 G02 X+1.9 Y-37.12 I+0 J+0.98 +N314 G01 Y-2.88 +N316 G02 X+2.88 Y-1.9 I+0.98 J+0 +N318 G01 X+37.12 +N320 G02 X+38.1 Y-2.88 I+0 J-0.98 +N322 G01 Y-19.979 +N324 G01 X+37.95 Y-20.488 +N326 G01 X+37.803 Y-20.976 +N328 G01 X+37.8 Y-36.82 +N330 G02 X+36.82 Y-37.8 I-0.98 J+0 +N332 G01 X+3.18 +N334 G02 X+2.2 Y-36.82 I+0 J+0.98 +N336 G01 Y-3.18 +N338 G02 X+3.18 Y-2.2 I+0.98 J+0 +N340 G01 X+36.82 +N342 G02 X+37.8 Y-3.18 I+0 J-0.98 +N344 G01 Y-19.979 +N346 G01 X+37.65 Y-20.488 +N348 G01 X+37.503 Y-20.976 +N350 G01 X+37.5 Y-36.52 +N352 G02 X+36.52 Y-37.5 I-0.98 J+0 +N354 G01 X+3.48 +N356 G02 X+2.5 Y-36.52 I+0 J+0.98 +N358 G01 Y-3.48 +N360 G02 X+3.48 Y-2.5 I+0.98 J+0 +N362 G01 X+36.52 +N364 G02 X+37.5 Y-3.48 I+0 J-0.98 +N366 G01 Y-19.979 +N368 G01 X+37.35 Y-20.488 +N370 G01 X+37.203 Y-20.976 +N372 G01 X+37.2 Y-36.22 +N374 G02 X+36.22 Y-37.2 I-0.98 J+0 +N376 G01 X+3.78 +N378 G02 X+2.8 Y-36.22 I+0 J+0.98 +N380 G01 Y-3.78 +N382 G02 X+3.78 Y-2.8 I+0.98 J+0 +N384 G01 X+36.22 +N386 G02 X+37.2 Y-3.78 I+0 J-0.98 +N388 G01 Y-19.979 +N390 G01 X+37.05 Y-20.488 +N392 G01 X+36.903 Y-20.976 +N394 G01 X+36.9 Y-35.92 +N396 G02 X+35.92 Y-36.9 I-0.98 J+0 +N398 G01 X+4.08 +N400 G02 X+3.1 Y-35.92 I+0 J+0.98 +N402 G01 Y-4.08 +N404 G02 X+4.08 Y-3.1 I+0.98 J+0 +N406 G01 X+35.92 +N408 G02 X+36.9 Y-4.08 I+0 J-0.98 +N410 G01 Y-19.979 +N412 G01 X+36.75 Y-20.488 +N414 G01 X+36.603 Y-20.976 +N416 G01 X+36.6 Y-35.62 +N418 G02 X+35.62 Y-36.6 I-0.98 J+0 +N420 G01 X+4.38 +N422 G02 X+3.4 Y-35.62 I+0 J+0.98 +N424 G01 Y-4.38 +N426 G02 X+4.38 Y-3.4 I+0.98 J+0 +N428 G01 X+35.62 +N430 G02 X+36.6 Y-4.38 I+0 J-0.98 +N432 G01 Y-19.979 +N434 G01 X+36.45 Y-20.488 +N436 G01 X+36.303 Y-20.976 +N438 G01 X+36.3 Y-35.32 +N440 G02 X+35.32 Y-36.3 I-0.98 J+0 +N442 G01 X+4.68 +N444 G02 X+3.7 Y-35.32 I+0 J+0.98 +N446 G01 Y-4.68 +N448 G02 X+4.68 Y-3.7 I+0.98 J+0 +N450 G01 X+35.32 +N452 G02 X+36.3 Y-4.68 I+0 J-0.98 +N454 G01 Y-19.979 +N456 G01 X+36.15 Y-20.488 +N458 G01 X+36.003 Y-20.976 +N460 G01 X+36 Y-35.02 +N462 G02 X+35.02 Y-36 I-0.98 J+0 +N464 G01 X+4.98 +N466 G02 X+4 Y-35.02 I+0 J+0.98 +N468 G01 Y-4.98 +N470 G02 X+4.98 Y-4 I+0.98 J+0 +N472 G01 X+35.02 +N474 G02 X+36 Y-4.98 I+0 J-0.98 +N476 G01 Y-19.979 +N478 G01 X+35.85 Y-20.488 +N480 G01 X+35.703 Y-20.976 +N482 G01 X+35.7 Y-34.72 +N484 G02 X+34.72 Y-35.7 I-0.98 J+0 +N486 G01 X+5.28 +N488 G02 X+4.3 Y-34.72 I+0 J+0.98 +N490 G01 Y-5.28 +N492 G02 X+5.28 Y-4.3 I+0.98 J+0 +N494 G01 X+34.72 +N496 G02 X+35.7 Y-5.28 I+0 J-0.98 +N498 G01 Y-19.979 +N500 G01 X+35.55 Y-20.488 +N502 G01 X+35.403 Y-20.976 +N504 G01 X+35.4 Y-34.42 +N506 G02 X+34.42 Y-35.4 I-0.98 J+0 +N508 G01 X+5.58 +N510 G02 X+4.6 Y-34.42 I+0 J+0.98 +N512 G01 Y-5.58 +N514 G02 X+5.58 Y-4.6 I+0.98 J+0 +N516 G01 X+34.42 +N518 G02 X+35.4 Y-5.58 I+0 J-0.98 +N520 G01 Y-19.979 +N522 G01 X+35.25 Y-20.488 +N524 G01 X+35.103 Y-20.976 +N526 G01 X+35.1 Y-34.12 +N528 G02 X+34.12 Y-35.1 I-0.98 J+0 +N530 G01 X+5.88 +N532 G02 X+4.9 Y-34.12 I+0 J+0.98 +N534 G01 Y-5.88 +N536 G02 X+5.88 Y-4.9 I+0.98 J+0 +N538 G01 X+34.12 +N540 G02 X+35.1 Y-5.88 I+0 J-0.98 +N542 G01 Y-19.979 +N544 G01 X+34.95 Y-20.488 +N546 G01 X+34.803 Y-20.976 +N548 G01 X+34.8 Y-33.82 +N550 G02 X+33.82 Y-34.8 I-0.98 J+0 +N552 G01 X+6.18 +N554 G02 X+5.2 Y-33.82 I+0 J+0.98 +N556 G01 Y-6.18 +N558 G02 X+6.18 Y-5.2 I+0.98 J+0 +N560 G01 X+33.82 +N562 G02 X+34.8 Y-6.18 I+0 J-0.98 +N564 G01 Y-19.979 +N566 G01 X+34.65 Y-20.488 +N568 G01 X+34.503 Y-20.976 +N570 G01 X+34.5 Y-33.52 +N572 G02 X+33.52 Y-34.5 I-0.98 J+0 +N574 G01 X+6.48 +N576 G02 X+5.5 Y-33.52 I+0 J+0.98 +N578 G01 Y-6.48 +N580 G02 X+6.48 Y-5.5 I+0.98 J+0 +N582 G01 X+33.52 +N584 G02 X+34.5 Y-6.48 I+0 J-0.98 +N586 G01 Y-19.979 +N588 G01 X+34.35 Y-20.488 +N590 G01 X+34.203 Y-20.976 +N592 G01 X+34.2 Y-33.22 +N594 G02 X+33.22 Y-34.2 I-0.98 J+0 +N596 G01 X+6.78 +N598 G02 X+5.8 Y-33.22 I+0 J+0.98 +N600 G01 Y-6.78 +N602 G02 X+6.78 Y-5.8 I+0.98 J+0 +N604 G01 X+33.22 +N606 G02 X+34.2 Y-6.78 I+0 J-0.98 +N608 G01 Y-19.979 +N610 G01 X+34.05 Y-20.488 +N612 G01 X+33.903 Y-20.976 +N614 G01 X+33.9 Y-32.92 +N616 G02 X+32.92 Y-33.9 I-0.98 J+0 +N618 G01 X+7.08 +N620 G02 X+6.1 Y-32.92 I+0 J+0.98 +N622 G01 Y-7.08 +N624 G02 X+7.08 Y-6.1 I+0.98 J+0 +N626 G01 X+32.92 +N628 G02 X+33.9 Y-7.08 I+0 J-0.98 +N630 G01 Y-19.979 +N632 G01 X+33.75 Y-20.488 +N634 G01 X+33.603 Y-20.976 +N636 G01 X+33.6 Y-32.62 +N638 G02 X+32.62 Y-33.6 I-0.98 J+0 +N640 G01 X+7.38 +N642 G02 X+6.4 Y-32.62 I+0 J+0.98 +N644 G01 Y-7.38 +N646 G02 X+7.38 Y-6.4 I+0.98 J+0 +N648 G01 X+32.62 +N650 G02 X+33.6 Y-7.38 I+0 J-0.98 +N652 G01 Y-19.979 +N654 G01 X+33.45 Y-20.488 +N656 G01 X+33.303 Y-20.976 +N658 G01 X+33.3 Y-32.32 +N660 G02 X+32.32 Y-33.3 I-0.98 J+0 +N662 G01 X+7.68 +N664 G02 X+6.7 Y-32.32 I+0 J+0.98 +N666 G01 Y-7.68 +N668 G02 X+7.68 Y-6.7 I+0.98 J+0 +N670 G01 X+32.32 +N672 G02 X+33.3 Y-7.68 I+0 J-0.98 +N674 G01 Y-19.979 +N676 G01 X+33.15 Y-20.488 +N678 G01 X+33.003 Y-20.976 +N680 G01 X+33 Y-32.02 +N682 G02 X+32.02 Y-33 I-0.98 J+0 +N684 G01 X+7.98 +N686 G02 X+7 Y-32.02 I+0 J+0.98 +N688 G01 Y-7.98 +N690 G02 X+7.98 Y-7 I+0.98 J+0 +N692 G01 X+32.02 +N694 G02 X+33 Y-7.98 I+0 J-0.98 +N696 G01 Y-19.979 +N698 G01 X+32.85 Y-20.488 +N700 G01 X+32.703 Y-20.976 +N702 G01 X+32.7 Y-31.72 +N704 G02 X+31.72 Y-32.7 I-0.98 J+0 +N706 G01 X+8.28 +N708 G02 X+7.3 Y-31.72 I+0 J+0.98 +N710 G01 Y-8.28 +N712 G02 X+8.28 Y-7.3 I+0.98 J+0 +N714 G01 X+31.72 +N716 G02 X+32.7 Y-8.28 I+0 J-0.98 +N718 G01 Y-19.979 +N720 G01 X+32.55 Y-20.488 +N722 G01 X+32.403 Y-20.976 +N724 G01 X+32.4 Y-31.42 +N726 G02 X+31.42 Y-32.4 I-0.98 J+0 +N728 G01 X+8.58 +N730 G02 X+7.6 Y-31.42 I+0 J+0.98 +N732 G01 Y-8.58 +N734 G02 X+8.58 Y-7.6 I+0.98 J+0 +N736 G01 X+31.42 +N738 G02 X+32.4 Y-8.58 I+0 J-0.98 +N740 G01 Y-19.979 +N742 G01 X+32.25 Y-20.488 +N744 G01 X+32.103 Y-20.976 +N746 G01 X+32.1 Y-31.12 +N748 G02 X+31.12 Y-32.1 I-0.98 J+0 +N750 G01 X+8.88 +N752 G02 X+7.9 Y-31.12 I+0 J+0.98 +N754 G01 Y-8.88 +N756 G02 X+8.88 Y-7.9 I+0.98 J+0 +N758 G01 X+31.12 +N760 G02 X+32.1 Y-8.88 I+0 J-0.98 +N762 G01 Y-19.979 +N764 G01 X+31.95 Y-20.488 +N766 G01 X+31.803 Y-20.976 +N768 G01 X+31.8 Y-30.82 +N770 G02 X+30.82 Y-31.8 I-0.98 J+0 +N772 G01 X+9.18 +N774 G02 X+8.2 Y-30.82 I+0 J+0.98 +N776 G01 Y-9.18 +N778 G02 X+9.18 Y-8.2 I+0.98 J+0 +N780 G01 X+30.82 +N782 G02 X+31.8 Y-9.18 I+0 J-0.98 +N784 G01 Y-19.979 +N786 G01 X+31.65 Y-20.488 +N788 G01 X+31.503 Y-20.976 +N790 G01 X+31.5 Y-30.52 +N792 G02 X+30.52 Y-31.5 I-0.98 J+0 +N794 G01 X+9.48 +N796 G02 X+8.5 Y-30.52 I+0 J+0.98 +N798 G01 Y-9.48 +N800 G02 X+9.48 Y-8.5 I+0.98 J+0 +N802 G01 X+30.52 +N804 G02 X+31.5 Y-9.48 I+0 J-0.98 +N806 G01 Y-19.979 +N808 G01 X+31.35 Y-20.488 +N810 G01 X+31.203 Y-20.976 +N812 G01 X+31.2 Y-30.22 +N814 G02 X+30.22 Y-31.2 I-0.98 J+0 +N816 G01 X+9.78 +N818 G02 X+8.8 Y-30.22 I+0 J+0.98 +N820 G01 Y-9.78 +N822 G02 X+9.78 Y-8.8 I+0.98 J+0 +N824 G01 X+30.22 +N826 G02 X+31.2 Y-9.78 I+0 J-0.98 +N828 G01 Y-19.979 +N830 G01 X+31.05 Y-20.488 +N832 G01 X+30.903 Y-20.976 +N834 G01 X+30.9 Y-29.92 +N836 G02 X+29.92 Y-30.9 I-0.98 J+0 +N838 G01 X+10.08 +N840 G02 X+9.1 Y-29.92 I+0 J+0.98 +N842 G01 Y-10.08 +N844 G02 X+10.08 Y-9.1 I+0.98 J+0 +N846 G01 X+29.92 +N848 G02 X+30.9 Y-10.08 I+0 J-0.98 +N850 G01 Y-19.979 +N852 G01 X+30.75 Y-20.488 +N854 G01 X+30.603 Y-20.976 +N856 G01 X+30.6 Y-29.62 +N858 G02 X+29.62 Y-30.6 I-0.98 J+0 +N860 G01 X+10.38 +N862 G02 X+9.4 Y-29.62 I+0 J+0.98 +N864 G01 Y-10.38 +N866 G02 X+10.38 Y-9.4 I+0.98 J+0 +N868 G01 X+29.62 +N870 G02 X+30.6 Y-10.38 I+0 J-0.98 +N872 G01 Y-19.979 +N874 G01 X+30.45 Y-20.488 +N876 G01 X+30.303 Y-20.976 +N878 G01 X+30.3 Y-29.32 +N880 G02 X+29.32 Y-30.3 I-0.98 J+0 +N882 G01 X+10.68 +N884 G02 X+9.7 Y-29.32 I+0 J+0.98 +N886 G01 Y-10.68 +N888 G02 X+10.68 Y-9.7 I+0.98 J+0 +N890 G01 X+29.32 +N892 G02 X+30.3 Y-10.68 I+0 J-0.98 +N894 G01 Y-19.979 +N896 G01 X+30.15 Y-20.488 +N898 G01 X+30.003 Y-20.976 +N900 G01 X+30 Y-29.02 +N902 G02 X+29.02 Y-30 I-0.98 J+0 +N904 G01 X+10.98 +N906 G02 X+10 Y-29.02 I+0 J+0.98 +N908 G01 Y-10.98 +N910 G02 X+10.98 Y-10 I+0.98 J+0 +N912 G01 X+29.02 +N914 G02 X+30 Y-10.98 I+0 J-0.98 +N916 G01 Y-19.979 +N918 G01 X+29.85 Y-20.488 +N920 G01 X+29.703 Y-20.976 +N922 G01 X+29.7 Y-28.72 +N924 G02 X+28.72 Y-29.7 I-0.98 J+0 +N926 G01 X+11.28 +N928 G02 X+10.3 Y-28.72 I+0 J+0.98 +N930 G01 Y-11.28 +N932 G02 X+11.28 Y-10.3 I+0.98 J+0 +N934 G01 X+28.72 +N936 G02 X+29.7 Y-11.28 I+0 J-0.98 +N938 G01 Y-19.979 +N940 G01 X+29.55 Y-20.488 +N942 G01 X+29.403 Y-20.976 +N944 G01 X+29.4 Y-28.42 +N946 G02 X+28.42 Y-29.4 I-0.98 J+0 +N948 G01 X+11.58 +N950 G02 X+10.6 Y-28.42 I+0 J+0.98 +N952 G01 Y-11.58 +N954 G02 X+11.58 Y-10.6 I+0.98 J+0 +N956 G01 X+28.42 +N958 G02 X+29.4 Y-11.58 I+0 J-0.98 +N960 G01 Y-19.979 +N962 G01 X+29.25 Y-20.488 +N964 G01 X+29.103 Y-20.976 +N966 G01 X+29.1 Y-28.12 +N968 G02 X+28.12 Y-29.1 I-0.98 J+0 +N970 G01 X+11.88 +N972 G02 X+10.9 Y-28.12 I+0 J+0.98 +N974 G01 Y-11.88 +N976 G02 X+11.88 Y-10.9 I+0.98 J+0 +N978 G01 X+28.12 +N980 G02 X+29.1 Y-11.88 I+0 J-0.98 +N982 G01 Y-19.979 +N984 G01 X+28.95 Y-20.488 +N986 G01 X+28.803 Y-20.976 +N988 G01 X+28.8 Y-27.82 +N990 G02 X+27.82 Y-28.8 I-0.98 J+0 +N992 G01 X+12.18 +N994 G02 X+11.2 Y-27.82 I+0 J+0.98 +N996 G01 Y-12.18 +N998 G02 X+12.18 Y-11.2 I+0.98 J+0 +N1000 G01 X+27.82 +N1002 G02 X+28.8 Y-12.18 I+0 J-0.98 +N1004 G01 Y-19.979 +N1006 G01 X+28.65 Y-20.488 +N1008 G01 X+28.503 Y-20.976 +N1010 G01 X+28.5 Y-27.52 +N1012 G02 X+27.52 Y-28.5 I-0.98 J+0 +N1014 G01 X+12.48 +N1016 G02 X+11.5 Y-27.52 I+0 J+0.98 +N1018 G01 Y-12.48 +N1020 G02 X+12.48 Y-11.5 I+0.98 J+0 +N1022 G01 X+27.52 +N1024 G02 X+28.5 Y-12.48 I+0 J-0.98 +N1026 G01 Y-19.979 +N1028 G01 X+28.35 Y-20.488 +N1030 G01 X+28.203 Y-20.976 +N1032 G01 X+28.2 Y-27.22 +N1034 G02 X+27.22 Y-28.2 I-0.98 J+0 +N1036 G01 X+12.78 +N1038 G02 X+11.8 Y-27.22 I+0 J+0.98 +N1040 G01 Y-12.78 +N1042 G02 X+12.78 Y-11.8 I+0.98 J+0 +N1044 G01 X+27.22 +N1046 G02 X+28.2 Y-12.78 I+0 J-0.98 +N1048 G01 Y-19.979 +N1050 G01 X+28.05 Y-20.488 +N1052 G01 X+27.903 Y-20.976 +N1054 G01 X+27.9 Y-26.92 +N1056 G02 X+26.92 Y-27.9 I-0.98 J+0 +N1058 G01 X+13.08 +N1060 G02 X+12.1 Y-26.92 I+0 J+0.98 +N1062 G01 Y-13.08 +N1064 G02 X+13.08 Y-12.1 I+0.98 J+0 +N1066 G01 X+26.92 +N1068 G02 X+27.9 Y-13.08 I+0 J-0.98 +N1070 G01 Y-19.979 +N1072 G01 X+27.75 Y-20.488 +N1074 G01 X+27.603 Y-20.976 +N1076 G01 X+27.6 Y-26.62 +N1078 G02 X+26.62 Y-27.6 I-0.98 J+0 +N1080 G01 X+13.38 +N1082 G02 X+12.4 Y-26.62 I+0 J+0.98 +N1084 G01 Y-13.38 +N1086 G02 X+13.38 Y-12.4 I+0.98 J+0 +N1088 G01 X+26.62 +N1090 G02 X+27.6 Y-13.38 I+0 J-0.98 +N1092 G01 Y-19.979 +N1094 G01 X+27.45 Y-20.488 +N1096 G01 X+27.303 Y-20.976 +N1098 G01 X+27.3 Y-26.32 +N1100 G02 X+26.32 Y-27.3 I-0.98 J+0 +N1102 G01 X+13.68 +N1104 G02 X+12.7 Y-26.32 I+0 J+0.98 +N1106 G01 Y-13.68 +N1108 G02 X+13.68 Y-12.7 I+0.98 J+0 +N1110 G01 X+26.32 +N1112 G02 X+27.3 Y-13.68 I+0 J-0.98 +N1114 G01 Y-19.979 +N1116 G01 X+27.15 Y-20.488 +N1118 G01 X+27.003 Y-20.976 +N1120 G01 X+27 Y-26.02 +N1122 G02 X+26.02 Y-27 I-0.98 J+0 +N1124 G01 X+13.98 +N1126 G02 X+13 Y-26.02 I+0 J+0.98 +N1128 G01 Y-13.98 +N1130 G02 X+13.98 Y-13 I+0.98 J+0 +N1132 G01 X+26.02 +N1134 G02 X+27 Y-13.98 I+0 J-0.98 +N1136 G01 Y-19.979 +N1138 G01 X+26.85 Y-20.488 +N1140 G01 X+26.703 Y-20.976 +N1142 G01 X+26.7 Y-25.72 +N1144 G02 X+25.72 Y-26.7 I-0.98 J+0 +N1146 G01 X+14.28 +N1148 G02 X+13.3 Y-25.72 I+0 J+0.98 +N1150 G01 Y-14.28 +N1152 G02 X+14.28 Y-13.3 I+0.98 J+0 +N1154 G01 X+25.72 +N1156 G02 X+26.7 Y-14.28 I+0 J-0.98 +N1158 G01 Y-19.979 +N1160 G01 X+26.55 Y-20.488 +N1162 G01 X+26.403 Y-20.976 +N1164 G01 X+26.4 Y-25.42 +N1166 G02 X+25.42 Y-26.4 I-0.98 J+0 +N1168 G01 X+14.58 +N1170 G02 X+13.6 Y-25.42 I+0 J+0.98 +N1172 G01 Y-14.58 +N1174 G02 X+14.58 Y-13.6 I+0.98 J+0 +N1176 G01 X+25.42 +N1178 G02 X+26.4 Y-14.58 I+0 J-0.98 +N1180 G01 Y-19.979 +N1182 G01 X+26.25 Y-20.488 +N1184 G01 X+26.103 Y-20.976 +N1186 G01 X+26.1 Y-25.12 +N1188 G02 X+25.12 Y-26.1 I-0.98 J+0 +N1190 G01 X+14.88 +N1192 G02 X+13.9 Y-25.12 I+0 J+0.98 +N1194 G01 Y-14.88 +N1196 G02 X+14.88 Y-13.9 I+0.98 J+0 +N1198 G01 X+25.12 +N1200 G02 X+26.1 Y-14.88 I+0 J-0.98 +N1202 G01 Y-19.979 +N1204 G01 X+25.95 Y-20.488 +N1206 G01 X+25.803 Y-20.976 +N1208 G01 X+25.8 Y-24.82 +N1210 G02 X+24.82 Y-25.8 I-0.98 J+0 +N1212 G01 X+15.18 +N1214 G02 X+14.2 Y-24.82 I+0 J+0.98 +N1216 G01 Y-15.18 +N1218 G02 X+15.18 Y-14.2 I+0.98 J+0 +N1220 G01 X+24.82 +N1222 G02 X+25.8 Y-15.18 I+0 J-0.98 +N1224 G01 Y-19.979 +N1226 G01 X+25.65 Y-20.488 +N1228 G01 X+25.503 Y-20.976 +N1230 G01 X+25.5 Y-24.52 +N1232 G02 X+24.52 Y-25.5 I-0.98 J+0 +N1234 G01 X+15.48 +N1236 G02 X+14.5 Y-24.52 I+0 J+0.98 +N1238 G01 Y-15.48 +N1240 G02 X+15.48 Y-14.5 I+0.98 J+0 +N1242 G01 X+24.52 +N1244 G02 X+25.5 Y-15.48 I+0 J-0.98 +N1246 G01 Y-19.979 +N1248 G01 X+25.35 Y-20.488 +N1250 G01 X+25.203 Y-20.976 +N1252 G01 X+25.2 Y-24.22 +N1254 G02 X+24.22 Y-25.2 I-0.98 J+0 +N1256 G01 X+15.78 +N1258 G02 X+14.8 Y-24.22 I+0 J+0.98 +N1260 G01 Y-15.78 +N1262 G02 X+15.78 Y-14.8 I+0.98 J+0 +N1264 G01 X+24.22 +N1266 G02 X+25.2 Y-15.78 I+0 J-0.98 +N1268 G01 Y-19.979 +N1270 G01 X+25.05 Y-20.488 +N1272 G01 X+24.903 Y-20.976 +N1274 G01 X+24.9 Y-23.92 +N1276 G02 X+23.92 Y-24.9 I-0.98 J+0 +N1278 G01 X+16.08 +N1280 G02 X+15.1 Y-23.92 I+0 J+0.98 +N1282 G01 Y-16.08 +N1284 G02 X+16.08 Y-15.1 I+0.98 J+0 +N1286 G01 X+23.92 +N1288 G02 X+24.9 Y-16.08 I+0 J-0.98 +N1290 G01 Y-19.979 +N1292 G01 X+24.75 Y-20.488 +N1294 G01 X+24.603 Y-20.976 +N1296 G01 X+24.6 Y-23.62 +N1298 G02 X+23.62 Y-24.6 I-0.98 J+0 +N1300 G01 X+16.38 +N1302 G02 X+15.4 Y-23.62 I+0 J+0.98 +N1304 G01 Y-16.38 +N1306 G02 X+16.38 Y-15.4 I+0.98 J+0 +N1308 G01 X+23.62 +N1310 G02 X+24.6 Y-16.38 I+0 J-0.98 +N1312 G01 Y-19.979 +N1314 G01 X+24.45 Y-20.488 +N1316 G01 X+24.303 Y-20.976 +N1318 G01 X+24.3 Y-23.32 +N1320 G02 X+23.32 Y-24.3 I-0.98 J+0 +N1322 G01 X+16.68 +N1324 G02 X+15.7 Y-23.32 I+0 J+0.98 +N1326 G01 Y-16.68 +N1328 G02 X+16.68 Y-15.7 I+0.98 J+0 +N1330 G01 X+23.32 +N1332 G02 X+24.3 Y-16.68 I+0 J-0.98 +N1334 G01 Y-19.979 +N1336 G01 X+24.15 Y-20.488 +N1338 G01 X+24.003 Y-20.976 +N1340 G01 X+24 Y-23.02 +N1342 G02 X+23.02 Y-24 I-0.98 J+0 +N1344 G01 X+16.98 +N1346 G02 X+16 Y-23.02 I+0 J+0.98 +N1348 G01 Y-16.98 +N1350 G02 X+16.98 Y-16 I+0.98 J+0 +N1352 G01 X+23.02 +N1354 G02 X+24 Y-16.98 I+0 J-0.98 +N1356 G01 Y-19.979 +N1358 G01 X+23.85 Y-20.488 +N1360 G01 X+23.703 Y-20.976 +N1362 G01 X+23.7 Y-22.72 +N1364 G02 X+22.72 Y-23.7 I-0.98 J+0 +N1366 G01 X+17.28 +N1368 G02 X+16.3 Y-22.72 I+0 J+0.98 +N1370 G01 Y-17.28 +N1372 G02 X+17.28 Y-16.3 I+0.98 J+0 +N1374 G01 X+22.72 +N1376 G02 X+23.7 Y-17.28 I+0 J-0.98 +N1378 G01 Y-19.979 +N1380 G01 X+23.55 Y-20.488 +N1382 G01 X+23.403 Y-20.976 +N1384 G01 X+23.4 Y-22.42 +N1386 G02 X+22.42 Y-23.4 I-0.98 J+0 +N1388 G01 X+17.58 +N1390 G02 X+16.6 Y-22.42 I+0 J+0.98 +N1392 G01 Y-17.58 +N1394 G02 X+17.58 Y-16.6 I+0.98 J+0 +N1396 G01 X+22.42 +N1398 G02 X+23.4 Y-17.58 I+0 J-0.98 +N1400 G01 Y-19.979 +N1402 G01 X+23.091 Y-22.252 +N1404 G02 X+22.12 Y-23.1 I-0.971 J+0.132 +N1406 G01 X+17.88 +N1408 G02 X+16.9 Y-22.12 I+0 J+0.98 +N1410 G01 Y-17.88 +N1412 G02 X+17.88 Y-16.9 I+0.98 J+0 +N1414 G01 X+22.12 +N1416 G02 X+23.1 Y-17.88 I+0 J-0.98 +N1418 G01 Y-19.979 +N1420 G01 X+22.788 Y-21.972 +N1422 G02 X+21.82 Y-22.8 I-0.968 J+0.152 +N1424 G01 X+18.18 +N1426 G02 X+17.2 Y-21.82 I+0 J+0.98 +N1428 G01 Y-18.18 +N1430 G02 X+18.18 Y-17.2 I+0.98 J+0 +N1432 G01 X+21.82 +N1434 G02 X+22.8 Y-18.18 I+0 J-0.98 +N1436 G01 Y-19.979 +N1438 G01 X+22.484 Y-21.698 +N1440 G02 X+21.52 Y-22.5 I-0.964 J+0.178 +N1442 G01 X+18.48 +N1444 G02 X+17.5 Y-21.52 I+0 J+0.98 +N1446 G01 Y-18.48 +N1448 G02 X+18.48 Y-17.5 I+0.98 J+0 +N1450 G01 X+21.52 +N1452 G02 X+22.5 Y-18.48 I+0 J-0.98 +N1454 G01 Y-19.979 +N1456 G01 X+22.176 Y-21.434 +N1458 G02 X+21.22 Y-22.2 I-0.956 J+0.214 +N1460 G01 X+18.78 +N1462 G02 X+17.8 Y-21.22 I+0 J+0.98 +N1464 G01 Y-18.78 +N1466 G02 X+18.78 Y-17.8 I+0.98 J+0 +N1468 G01 X+21.22 +N1470 G02 X+22.2 Y-18.78 I+0 J-0.98 +N1472 G01 Y-19.979 +N1474 G01 X+22.194 Y-20.019 +N1476 G01 X+21.863 Y-21.187 +N1478 G02 X+20.92 Y-21.9 I-0.943 J+0.267 +N1480 G01 X+19.08 +N1482 G02 X+18.1 Y-20.92 I+0 J+0.98 +N1484 G01 Y-19.08 +N1486 G02 X+19.08 Y-18.1 I+0.98 J+0 +N1488 G01 X+20.92 +N1490 G02 X+21.9 Y-19.08 I+0 J-0.98 +N1492 G01 Y-19.979 +N1494 G01 X+21.89 Y-20.031 +N1496 G01 X+21.537 Y-20.966 +N1498 G02 X+20.62 Y-21.6 I-0.917 J+0.346 +N1500 G01 X+19.38 +N1502 G02 X+18.4 Y-20.62 I+0 J+0.98 +N1504 G01 Y-19.38 +N1506 G02 X+19.38 Y-18.4 I+0.98 J+0 +N1508 G01 X+20.62 +N1510 G02 X+21.6 Y-19.38 I+0 J-0.98 +N1512 G01 Y-19.979 +N1514 G01 X+21.582 Y-20.05 +N1516 G01 X+21.181 Y-20.788 +N1518 G02 X+20.32 Y-21.3 I-0.861 J+0.468 +N1520 G01 X+19.68 +N1522 G02 X+18.7 Y-20.32 I+0 J+0.98 +N1524 G01 Y-19.68 +N1526 G02 X+19.68 Y-18.7 I+0.98 J+0 +N1528 G01 X+20.32 +N1530 G02 X+21.3 Y-19.68 I+0 J-0.98 +N1532 G01 Y-19.979 +N1534 G01 X+21.264 Y-20.076 +N1536 G01 X+20.764 Y-20.658 +N1538 G02 X+20.02 Y-21 I-0.744 J+0.638 +N1540 G01 X+19.98 +N1542 G02 X+19 Y-20.02 I+0 J+0.98 +N1544 G01 Y-19.98 +N1546 G02 X+19.98 Y-19 I+0.98 J+0 +N1548 G01 X+20.02 +N1550 G02 X+21 Y-19.98 I+0 J-0.98 +N1552 G01 X+20.951 Y-20.09 +N1554 G01 X+20.479 Y-20.522 +N1556 G02 X+20.02 Y-20.7 I-0.459 J+0.502 +N1558 G01 X+19.98 +N1560 G02 X+19.3 Y-20.02 I+0 J+0.68 +N1562 G01 Y-19.98 +N1564 G02 X+19.98 Y-19.3 I+0.68 J+0 +N1566 G01 X+20.02 +N1568 G02 X+20.7 Y-19.979 I+0 J-0.68 +N1570 G01 X+20.626 Y-20.108 +N1572 G01 X+20.212 Y-20.349 +N1574 G01 X+19.98 Y-20.4 +N1576 G02 X+19.6 Y-20.02 I+0 J+0.38 +N1578 G01 Y-19.98 +N1580 G02 X+19.98 Y-19.6 I+0.38 J+0 +N1582 G01 X+20.02 +N1584 G02 X+20.4 Y-19.98 I+0 J-0.38 +N1586 G01 Y-20.02 +N1588 G02 X+20.211 Y-20.348 I-0.38 J+0 +N1590 G01 Z+1.55 F16500 +G01 Z10 (AJOUT) +(#HSC OFF )(AJOUT) +(N1592 #TRAFO OFF) +(#FLUSH WAIT )(AJOUT) +(N1594 G53 G01 Z+5 F1000) +(N1596 G53 G01 Y+5 F1000) +(N1598 M05) +N1600 M17 +(N99999999 %Ebauche G71) +(//2\\EB CARRE 45DEG) +(;----------- Tool list -----------) +(;T01 R1. L+6.)(T1 Fraise 2 tailles D 2) +(;---------------------------------) +N02 G17 G90 +(N04 G53 G01 Z+24 F1000) +(N06 #TRAFO ON) +N08 G54 +(; - T1 Fraise 2 tailles D 2) +N10 G17 T1 S60000 +N12 M03 +(; - EB carre 45deg) +(#HSC[OPMODE 2 CONTERROR 0.02] )(AJOUT) +(#HSC ON )(AJOUT) +N14 G00 X-0.261 Y+1.962 Z+3.683 B0. C0. +N16 G00 Z-1.317 +N18 G01 X+0 Y+1.95 F16500 +N20 G01 X+40.391 Y+1.904 F16500 +N22 G01 X+40.451 Y+1.891 +N24 G01 X+41.091 Y+1.609 +N26 G01 X+41.624 Y+1.069 +N28 G01 X+41.913 Y+0.359 +N30 G01 X+41.949 Y+0.007 +N32 G01 X+41.904 Y-40.391 +N34 G01 X+41.891 Y-40.451 +N36 G01 X+41.609 Y-41.091 +N38 G01 X+41.069 Y-41.624 +N40 G01 X+40.359 Y-41.913 +N42 G01 X+40.007 Y-41.949 +N44 G01 X-0.391 Y-41.904 +N46 G01 X-0.451 Y-41.891 +N48 G01 X-1.091 Y-41.609 +N50 G01 X-1.624 Y-41.069 +N52 G01 X-1.913 Y-40.359 +N54 G01 X-1.949 Y-40.007 +N56 G01 X-1.904 Y+0.391 +N58 G01 X-1.891 Y+0.451 +N60 G01 X-1.838 Y+0.57 +N62 G01 X-1.807 Y+0.696 +N64 G01 X-1.718 Y+0.896 +N66 G01 X-1.397 Y+1.34 +N68 G01 X-1.269 Y+1.463 +N70 G01 X-0.992 Y+1.663 +N72 G01 X-0.726 Y+1.795 +N74 G01 X-0.502 Y+1.869 +N76 G01 X+0.432 Y+1.935 +N78 G01 X+40 Y+1.874 +N80 G01 X+40.085 Y+1.872 +N82 G01 X+40.623 Y+1.764 +N84 G01 X+40.859 Y+1.663 +N86 G01 X+41.404 Y+1.232 +N88 G01 X+41.644 Y+0.891 +N90 G01 X+41.805 Y+0.482 +N92 G01 X+41.87 Y-0.432 +N94 G01 X+41.872 Y-26.275 +N96 G01 X+41.806 Y-40.084 +N98 G01 X+41.752 Y-40.44 +N100 G01 X+41.683 Y-40.659 +N102 G01 X+41.566 Y-40.899 +N104 G01 X+41.176 Y-41.367 +N106 G01 X+40.863 Y-41.584 +N108 G01 X+40.389 Y-41.759 +N110 G01 X+38.457 Y-41.802 +N112 G01 X+16.111 Y-41.853 +N114 G01 X+1.296 Y-41.745 +N116 G01 X-0.104 Y-41.739 +N118 G01 X-0.61 Y-41.629 +N120 G01 X-0.861 Y-41.513 +N122 G01 X-1.221 Y-41.239 +N124 G01 X-1.324 Y-41.13 +N126 G01 X-1.494 Y-40.889 +N128 G01 X-1.686 Y-40.416 +N130 G01 X-1.738 Y-39.198 +N132 G01 X-1.778 Y-28.4 +N134 G01 X-1.831 Y-17.346 +N136 G01 X-1.688 Y-6.539 +N138 G01 X-1.674 Y+0.096 +N140 G01 X-1.564 Y+0.6 +N142 G01 X-1.489 Y+0.77 +N144 G01 X-1.105 Y+1.256 +N146 G01 X-0.863 Y+1.435 +N148 G01 X-0.442 Y+1.613 +N150 G01 X+0.432 Y+1.674 +N152 G01 X+9.976 Y+1.709 +N154 G01 X+21.543 Y+1.811 +N156 G01 X+36.111 Y+1.623 +N158 G01 X+40 Y+1.617 +N160 G01 X+40.071 Y+1.615 +N162 G01 X+40.535 Y+1.523 +N164 G01 X+40.739 Y+1.436 +N166 G01 X+41.209 Y+1.065 +N168 G01 X+41.417 Y+0.771 +N170 G01 X+41.556 Y+0.419 +N172 G01 X+41.613 Y-0.556 +N174 G01 X+41.644 Y-9.074 +N176 G01 X+41.788 Y-20.802 +N178 G01 X+41.563 Y-35.741 +N180 G01 X+41.554 Y-40.07 +N182 G01 X+41.508 Y-40.377 +N184 G01 X+41.448 Y-40.566 +N186 G01 X+41.349 Y-40.771 +N188 G01 X+41.019 Y-41.168 +N190 G01 X+40.459 Y-41.478 +N192 G01 X+40.4 Y-41.495 +N194 G01 X+39.691 Y-41.553 +N196 G01 X+31.42 Y-41.582 +N198 G01 X+19.691 Y-41.762 +N200 G01 X+4.63 Y-41.502 +N202 G01 X-0.087 Y-41.492 +N204 G01 X-0.521 Y-41.398 +N206 G01 X-0.737 Y-41.299 +N208 G01 X-1.046 Y-41.064 +N210 G01 X-1.135 Y-40.97 +N212 G01 X-1.281 Y-40.765 +N214 G01 X-1.444 Y-40.361 +N216 G01 X-1.49 Y-38.457 +N218 G01 X-1.521 Y-31.667 +N220 G01 X-1.736 Y-19.938 +N222 G01 X-1.546 Y-10.476 +N224 G01 X-1.444 Y-6.539 +N226 G01 X-1.378 Y+0.37 +N228 G01 X-1.274 Y+0.652 +N230 G01 X-0.946 Y+1.071 +N232 G01 X-0.74 Y+1.225 +N234 G01 X-0.383 Y+1.377 +N236 G01 X+0.679 Y+1.431 +N238 G01 X+8.226 Y+1.463 +N240 G01 X+19.938 Y+1.709 +N242 G01 X+27.4 Y+1.557 +N244 G01 X+34.877 Y+1.381 +N246 G01 X+40 Y+1.374 +N248 G01 X+40.085 Y+1.369 +N250 G01 X+40.452 Y+1.294 +N252 G01 X+40.625 Y+1.221 +N254 G01 X+41.024 Y+0.907 +N256 G01 X+41.202 Y+0.657 +N258 G01 X+41.32 Y+0.361 +N260 G01 X+41.37 Y-0.802 +N262 G01 X+41.397 Y-7.84 +N264 G01 X+41.682 Y-19.568 +N266 G01 X+41.566 Y-25.741 +N268 G01 X+41.321 Y-34.63 +N270 G01 X+41.311 Y-40.053 +N272 G01 X+41.223 Y-40.468 +N274 G01 X+41.139 Y-40.648 +N276 G01 X+40.864 Y-40.979 +N278 G01 X+40.815 Y-41.017 +N280 G01 X+40.296 Y-41.268 +N282 G01 X+40.232 Y-41.283 +N284 G01 X+32.16 Y-41.34 +N286 G01 X+20.679 Y-41.654 +N288 G01 X+15 Y-41.553 +N290 G01 X+5.494 Y-41.26 +N292 G01 X-0.254 Y-41.219 +N294 G01 X-0.609 Y-41.089 +N296 G01 X-0.869 Y-40.896 +N298 G01 X-1.068 Y-40.645 +N300 G01 X-1.207 Y-40.308 +N302 G01 X-1.242 Y-35 +N304 G01 X-1.308 Y-31.42 +N306 G01 X-1.627 Y-20.802 +N308 G01 X-1.535 Y-15.494 +N310 G01 X-1.2 Y-6.539 +N312 G01 X-1.143 Y+0.302 +N314 G01 X-1.059 Y+0.538 +N316 G01 X-0.791 Y+0.881 +N318 G01 X-0.455 Y+1.095 +N320 G01 X-0.318 Y+1.144 +N322 G01 X+1.173 Y+1.186 +N324 G01 X+7.476 Y+1.211 +N326 G01 X+19.074 Y+1.597 +N328 G01 X+24.151 Y+1.513 +N330 G01 X+34.383 Y+1.133 +N332 G01 X+39.987 Y+1.125 +N334 G01 X+40.365 Y+1.06 +N336 G01 X+40.508 Y+1.001 +N338 G01 X+40.828 Y+0.751 +N340 G01 X+40.867 Y+0.703 +N342 G01 X+41.072 Y+0.308 +N344 G01 X+41.088 Y+0.241 +N346 G01 X+41.119 Y-2.284 +N348 G01 X+41.153 Y-7.593 +N350 G01 X+41.568 Y-19.074 +N352 G01 X+41.489 Y-23.889 +N354 G01 X+41.068 Y-34.259 +N356 G01 X+41.057 Y-40.039 +N358 G01 X+40.987 Y-40.374 +N360 G01 X+40.92 Y-40.519 +N362 G01 X+40.701 Y-40.785 +N364 G01 X+40.652 Y-40.823 +N366 G01 X+40.245 Y-41.02 +N368 G01 X+40.18 Y-41.035 +N370 G01 X+32.407 Y-41.091 +N372 G01 X+21.173 Y-41.536 +N374 G01 X+16.481 Y-41.47 +N376 G01 X+5.741 Y-41.002 +N378 G01 X-0.254 Y-40.952 +N380 G01 X-0.482 Y-40.865 +N382 G01 X-0.686 Y-40.713 +N384 G01 X-0.845 Y-40.515 +N386 G01 X-0.956 Y-40.249 +N388 G01 X-1.018 Y-32.654 +N390 G01 X-1.505 Y-21.296 +N392 G01 X-1.451 Y-16.852 +N394 G01 X-0.938 Y-6.539 +N396 G01 X-0.891 Y+0.229 +N398 G01 X-0.827 Y+0.415 +N400 G01 X-0.623 Y+0.679 +N402 G01 X-0.576 Y+0.718 +N404 G01 X-0.264 Y+0.88 +N406 G01 X-0.196 Y+0.897 +N408 G01 X+7.476 Y+0.961 +N410 G01 X+18.58 Y+1.473 +N412 G01 X+22.901 Y+1.428 +N414 G01 X+34.136 Y+0.871 +N416 G01 X+39.982 Y+0.862 +N418 G01 X+40.372 Y+0.769 +N420 G01 X+40.429 Y+0.741 +N422 G01 X+40.629 Y+0.58 +N424 G01 X+40.668 Y+0.532 +N426 G01 X+40.818 Y+0.244 +N428 G01 X+40.834 Y+0.176 +N430 G01 X+40.892 Y-7.346 +N432 G01 X+41.441 Y-18.457 +N434 G01 X+41.406 Y-22.654 +N436 G01 X+40.806 Y-34.136 +N438 G01 X+40.771 Y-40.17 +N440 G01 X+40.695 Y-40.382 +N442 G01 X+40.533 Y-40.585 +N444 G01 X+40.483 Y-40.623 +N446 G01 X+40.192 Y-40.764 +N448 G01 X+40.127 Y-40.779 +N450 G01 X+32.654 Y-40.829 +N452 G01 X+21.543 Y-41.411 +N454 G01 X+17.469 Y-41.379 +N456 G01 X+5.864 Y-40.74 +N458 G01 X-0.183 Y-40.696 +N460 G01 X-0.26 Y-40.673 +N462 G01 X-0.482 Y-40.537 +N464 G01 X-0.535 Y-40.482 +N466 G01 X-0.692 Y-40.198 +N468 G01 X-0.711 Y-40.126 +N470 G01 X-0.766 Y-32.654 +N472 G01 X-1.379 Y-21.667 +N474 G01 X-1.357 Y-17.716 +N476 G01 X-0.676 Y-6.539 +N478 G01 X-0.628 Y+0.174 +N480 G01 X-0.602 Y+0.258 +N482 G01 X-0.454 Y+0.473 +N484 G01 X-0.4 Y+0.522 +N486 G01 X-0.198 Y+0.626 +N488 G01 X-0.13 Y+0.643 +N490 G01 X+7.226 Y+0.696 +N492 G01 X+18.333 Y+1.349 +N494 G01 X+22.407 Y+1.321 +N496 G01 X+34.012 Y+0.609 +N498 G01 X+39.982 Y+0.6 +N500 G01 X+40.249 Y+0.537 +N502 G01 X+40.306 Y+0.509 +N504 G01 X+40.43 Y+0.41 +N506 G01 X+40.469 Y+0.362 +N508 G01 X+40.564 Y+0.179 +N510 G01 X+40.581 Y+0.111 +N512 G01 X+40.624 Y-7.099 +N514 G01 X+41.315 Y-18.21 +N516 G01 X+41.304 Y-22.037 +N518 G01 X+40.544 Y-34.012 +N520 G01 X+40.496 Y-40.15 +N522 G01 X+40.468 Y-40.236 +N524 G01 X+40.37 Y-40.371 +N526 G01 X+40.3 Y-40.424 +N528 G01 X+40.025 Y-40.524 +N530 G01 X+32.901 Y-40.561 +N532 G01 X+21.79 Y-41.285 +N534 G01 X+17.963 Y-41.274 +N536 G01 X+5.988 Y-40.478 +N538 G01 X-0.124 Y-40.437 +N540 G01 X-0.205 Y-40.413 +N542 G01 X-0.294 Y-40.355 +N544 G01 X-0.349 Y-40.291 +N546 G01 X-0.453 Y-40.062 +N548 G01 X-0.466 Y-40 +N550 G01 X-0.497 Y-32.901 +N552 G01 X-1.255 Y-21.79 +N554 G01 X-1.243 Y-17.963 +N556 G01 X-0.447 Y-6.976 +N558 G01 X-0.413 Y-6.539 +N560 G01 X-0.355 Y+0.117 +N562 G01 X-0.298 Y+0.233 +N564 G01 X-0.141 Y+0.357 +N566 G01 X-0.049 Y+0.389 +N568 G01 X+6.976 Y+0.423 +N570 G01 X+18.21 Y+1.224 +N572 G01 X+21.79 Y+1.221 +N574 G01 X+27.4 Y+0.826 +N576 G01 X+33.889 Y+0.342 +N578 G01 X+39.967 Y+0.332 +N580 G01 X+40.03 Y+0.318 +N582 G01 X+40.189 Y+0.244 +N584 G01 X+40.271 Y+0.15 +N586 G01 X+40.325 Y-0.042 +N588 G01 X+40.363 Y-7.099 +N590 G01 X+41.191 Y-18.21 +N592 G01 X+41.193 Y-21.667 +N594 G01 X+40.872 Y-26.235 +N596 G01 X+40.272 Y-33.889 +N598 G01 X+40.226 Y-40.046 +N600 G01 X+40.15 Y-40.175 +N602 G01 X+40.034 Y-40.241 +N604 G01 X+39.961 Y-40.261 +N606 G01 X+32.901 Y-40.295 +N608 G01 X+22.037 Y-41.149 +N610 G01 X+18.58 Y-41.169 +N612 G01 X+14.753 Y-40.912 +N614 G01 X+6.111 Y-40.202 +N616 G01 X-0.032 Y-40.147 +N618 G01 X-0.164 Y-40.065 +N620 G01 X-0.191 Y-39.978 +N622 G01 X-0.227 Y-32.901 +N624 G01 X-1.117 Y-22.037 +N626 G01 X-1.141 Y-18.704 +N628 G01 X-0.891 Y-15 +N630 G01 X-0.133 Y-6.546 +N632 G01 X-0.123 Y-0.062 +N634 G01 X-0.079 Y+0.044 +N636 G01 X+0.062 Y+0.124 +N638 G01 X+6.976 Y+0.153 +N640 G01 X+17.963 Y+1.088 +N642 G01 X+21.296 Y+1.114 +N644 G01 X+24.901 Y+0.866 +N646 G01 X+33.889 Y+0.075 +N648 G01 X+39.876 Y+0.067 +N650 G01 X+39.982 Y+0.023 +N652 G01 X+40.067 Y-0.123 +N654 G01 X+40.109 Y-7.099 +N656 G01 X+41.056 Y-17.84 +N658 G01 X+41.092 Y-21.173 +N660 G01 X+40.87 Y-24.506 +N662 G01 X+40.02 Y-33.882 +N664 G01 X+40 Y-39.862 +N666 G02 X+39.851 Y-40.012 I-0.15 J+0 +N668 G01 X+32.901 Y-40.054 +N670 G01 X+22.16 Y-41.03 +N672 G01 X+18.827 Y-41.067 +N674 G01 X+15.494 Y-40.839 +N676 G01 X+6.118 Y-39.964 +N678 G01 X+0.194 Y-39.939 +N680 G02 X+0.044 Y-39.79 I+0 J+0.15 +N682 G01 X+0.001 Y-32.901 +N684 G01 X-1.003 Y-22.16 +N686 G01 X-1.042 Y-18.827 +N688 G01 X-0.807 Y-15.494 +N690 G01 X+0.092 Y-6.546 +N692 G01 X+0.101 Y-0.25 +N694 G02 X+0.25 Y-0.1 I+0.15 J+0 +N696 G01 X+6.97 Y-0.066 +N698 G01 X+17.84 Y+0.978 +N700 G01 X+20.926 Y+1.025 +N702 G01 X+24.151 Y+0.814 +N704 G01 X+33.882 Y-0.144 +N706 G01 X+39.698 Y-0.152 +N708 G02 X+39.848 Y-0.302 I+0 J-0.15 +N710 G01 X+39.871 Y-6.844 +N712 G01 X+40.954 Y-17.84 +N714 G01 X+41.002 Y-20.926 +N716 G01 X+40.8 Y-24.012 +N718 G01 X+39.805 Y-33.758 +N720 G01 X+39.796 Y-39.629 +N722 G01 X+39.752 Y-39.735 +N724 G01 X+39.63 Y-39.796 +N726 G01 X+33.156 Y-39.821 +N728 G01 X+22.16 Y-40.93 +N730 G01 X+19.074 Y-40.979 +N732 G01 X+15.988 Y-40.772 +N734 G01 X+6.242 Y-39.753 +N736 G01 X+0.405 Y-39.745 +N738 G02 X+0.255 Y-39.595 I+0 J+0.15 +N740 G01 X+0.23 Y-33.156 +N742 G01 X-0.906 Y-22.16 +N744 G01 X-0.959 Y-19.198 +N746 G01 X-0.758 Y-16.111 +N748 G01 X+0.298 Y-6.547 +N750 G01 X+0.308 Y-0.494 +N752 G01 X+0.352 Y-0.388 +N754 G01 X+0.494 Y-0.308 +N756 G01 X+6.969 Y-0.27 +N758 G01 X+17.716 Y+0.871 +N760 G01 X+20.679 Y+0.936 +N762 G01 X+23.642 Y+0.753 +N764 G01 X+33.757 Y-0.359 +N766 G01 X+39.482 Y-0.369 +N768 G02 X+39.631 Y-0.518 I-0.001 J-0.15 +N770 G01 X+39.657 Y-6.844 +N772 G01 X+40.85 Y-17.833 +N774 G01 X+40.907 Y-20.796 +N776 G01 X+40.695 Y-23.889 +N778 G01 X+39.58 Y-33.757 +N780 G01 X+39.57 Y-39.382 +N782 G01 X+39.526 Y-39.488 +N784 G01 X+39.383 Y-39.57 +N786 G01 X+33.156 Y-39.597 +N788 G01 X+22.167 Y-40.821 +N790 G01 X+19.204 Y-40.88 +N792 G01 X+16.111 Y-40.662 +N794 G01 X+6.243 Y-39.519 +N796 G01 X+0.64 Y-39.509 +N798 G02 X+0.49 Y-39.36 I+0 J+0.15 +N800 G01 X+0.463 Y-33.157 +N802 G01 X-0.777 Y-22.407 +N804 G01 X-0.86 Y-19.575 +N806 G01 X-0.685 Y-16.605 +N808 G01 X+0.541 Y-6.548 +N810 G01 X+0.551 Y-0.741 +N812 G01 X+0.595 Y-0.635 +N814 G01 X+0.741 Y-0.551 +N816 G01 X+6.968 Y-0.508 +N818 G01 X+17.586 Y+0.747 +N820 G01 X+20.425 Y+0.833 +N822 G01 X+23.395 Y+0.654 +N824 G01 X+33.757 Y-0.603 +N826 G01 X+39.238 Y-0.612 +N828 G02 X+39.388 Y-0.762 I+0 J-0.15 +N830 G01 X+39.386 Y-6.592 +N832 G01 X+40.718 Y-17.586 +N834 G01 X+40.806 Y-20.425 +N836 G01 X+40.623 Y-23.395 +N838 G01 X+39.336 Y-33.756 +N840 G01 X+39.321 Y-39.177 +N842 G02 X+39.171 Y-39.327 I-0.15 J+0 +N844 G01 X+33.408 Y-39.326 +N846 G01 X+22.414 Y-40.689 +N848 G01 X+19.575 Y-40.779 +N850 G01 X+16.852 Y-40.618 +N852 G01 X+6.244 Y-39.276 +N854 G01 X+0.884 Y-39.266 +N856 G02 X+0.734 Y-39.116 I+0 J+0.15 +N858 G01 X+0.735 Y-33.408 +N860 G01 X-0.66 Y-22.414 +N862 G01 X-0.754 Y-19.698 +N864 G01 X-0.601 Y-16.975 +N866 G01 X+0.785 Y-6.549 +N868 G01 X+0.802 Y-0.944 +N870 G02 X+0.952 Y-0.794 I+0.15 J+0 +N872 G01 X+6.719 Y-0.778 +N874 G01 X+17.586 Y+0.631 +N876 G01 X+20.302 Y+0.727 +N878 G01 X+23.025 Y+0.571 +N880 G01 X+33.756 Y-0.846 +N882 G01 X+38.995 Y-0.856 +N884 G02 X+39.144 Y-1.006 I-0.001 J-0.15 +N886 G01 Y-6.592 +N888 G01 X+40.602 Y-17.585 +N890 G01 X+40.7 Y-20.302 +N892 G01 X+40.54 Y-23.025 +N894 G01 X+39.093 Y-33.756 +N896 G01 X+39.075 Y-38.934 +N898 G02 X+38.925 Y-39.083 I-0.15 J+0.001 +N900 G01 X+33.409 +N902 G01 X+22.538 Y-40.562 +N904 G01 X+19.699 Y-40.673 +N906 G01 X+16.975 Y-40.51 +N908 G01 X+6.245 Y-39.032 +N910 G01 X+1.127 Y-39.023 +N912 G02 X+0.978 Y-38.873 I+0.001 J+0.15 +N914 G01 X+0.977 Y-33.409 +N916 G01 X-0.533 Y-22.538 +N918 G01 X-0.648 Y-19.945 +N920 G01 X-0.519 Y-17.353 +N922 G01 X+1.028 Y-6.549 +N924 G01 X+1.049 Y-1.187 +N926 G02 X+1.198 Y-1.038 I+0.15 J-0.001 +N928 G01 X+6.718 Y-1.019 +N930 G01 X+17.462 Y+0.504 +N932 G01 X+20.055 Y+0.622 +N934 G01 X+22.648 Y+0.49 +N936 G01 X+33.755 Y-1.09 +N938 G01 X+38.751 Y-1.099 +N940 G02 X+38.901 Y-1.249 I+0 J-0.15 +N942 G01 X+38.902 Y-6.591 +N944 G01 X+40.475 Y-17.462 +N946 G01 X+40.595 Y-20.054 +N948 G01 X+40.46 Y-22.647 +N950 G01 X+38.85 Y-33.755 +N952 G01 X+38.828 Y-38.691 +N954 G02 X+38.678 Y-38.84 I-0.15 J+0.001 +N956 G01 X+33.409 Y-38.841 +N958 G01 X+22.538 Y-40.446 +N960 G01 X+19.946 Y-40.568 +N962 G01 X+17.353 Y-40.431 +N964 G01 X+6.245 Y-38.789 +N966 G01 X+1.371 Y-38.779 +N968 G02 X+1.221 Y-38.629 I+0 J+0.15 +N970 G01 X+1.22 Y-33.41 +N972 G01 X-0.416 Y-22.538 +N974 G01 X-0.541 Y-19.946 +N976 G01 X-0.414 Y-17.476 +N978 G01 X+0.372 Y-12.225 +N980 G01 X+1.271 Y-6.55 +N982 G01 X+1.296 Y-1.43 +N984 G02 X+1.445 Y-1.281 I+0.15 J-0.001 +N986 G01 X+6.717 Y-1.26 +N988 G01 X+17.462 Y+0.387 +N990 G01 X+19.931 Y+0.515 +N992 G01 X+22.4 Y+0.397 +N994 G01 X+26.15 Y-0.155 +N996 G01 X+33.754 Y-1.333 +N998 G01 X+38.508 Y-1.342 +N1000 G02 X+38.658 Y-1.492 I+0 J-0.15 +N1002 G01 X+38.659 Y-6.59 +N1004 G01 X+40.358 Y-17.462 +N1006 G01 X+40.488 Y-19.931 +N1008 G01 X+40.368 Y-22.4 +N1010 G01 X+39.833 Y-25.988 +N1012 G01 X+38.606 Y-33.754 +N1014 G01 X+38.581 Y-38.448 +N1016 G02 X+38.431 Y-38.597 I-0.15 J+0.001 +N1018 G01 X+33.41 Y-38.599 +N1020 G01 X+22.662 Y-40.316 +N1022 G01 X+20.07 Y-40.461 +N1024 G01 X+17.6 Y-40.339 +N1026 G01 X+14.012 Y-39.794 +N1028 G01 X+6.246 Y-38.545 +N1030 G01 X+1.614 Y-38.536 +N1032 G02 X+1.464 Y-38.386 I+0 J+0.15 +N1034 G01 X+1.462 Y-33.411 +N1036 G01 X-0.286 Y-22.662 +N1038 G01 X-0.434 Y-20.07 +N1040 G01 X-0.31 Y-17.6 +N1042 G01 X+0.203 Y-14.259 +N1044 G01 X+1.515 Y-6.551 +N1046 G01 X+1.542 Y-1.674 +N1048 G02 X+1.693 Y-1.525 I+0.15 J-0.001 +N1050 G01 X+6.527 Y-1.533 +N1052 G01 X+17.338 Y+0.257 +N1054 G01 X+19.93 Y+0.408 +N1056 G01 X+22.4 Y+0.282 +N1058 G01 X+25.65 Y-0.225 +N1060 G01 X+33.753 Y-1.576 +N1062 G01 X+38.265 Y-1.586 +N1064 G02 X+38.414 Y-1.735 I-0.001 J-0.149 +N1066 G01 X+38.417 Y-6.589 +N1068 G01 X+40.228 Y-17.338 +N1070 G01 X+40.381 Y-19.93 +N1072 G01 X+40.265 Y-22.276 +N1074 G01 X+39.808 Y-25.247 +N1076 G01 X+38.363 Y-33.63 +N1078 G01 X+38.334 Y-38.204 +N1080 G02 X+38.184 Y-38.354 I-0.15 J+0 +N1082 G01 X+33.411 Y-38.356 +N1084 G01 X+22.662 Y-40.198 +N1086 G01 X+20.316 Y-40.352 +N1088 G01 X+17.971 Y-40.261 +N1090 G01 X+15.494 Y-39.904 +N1092 G01 X+6.371 Y-38.302 +N1094 G01 X+1.857 Y-38.293 +N1096 G02 X+1.707 Y-38.143 I+0 J+0.15 +N1098 G01 X+1.704 Y-33.411 +N1100 G01 X-0.169 Y-22.662 +N1102 G01 X-0.325 Y-20.317 +N1104 G01 X-0.232 Y-17.971 +N1106 G01 X+0.131 Y-15.494 +N1108 G01 X+1.758 Y-6.552 +N1110 G01 X+1.789 Y-1.917 +N1112 G02 X+1.939 Y-1.768 I+0.15 J-0.001 +N1114 G01 X+6.526 Y-1.776 +N1116 G01 X+17.338 Y+0.139 +N1118 G01 X+19.683 Y+0.299 +N1120 G01 X+22.029 Y+0.204 +N1122 G01 X+24.651 Y-0.192 +N1124 G01 X+33.629 Y-1.819 +N1126 G01 X+38.021 Y-1.829 +N1128 G02 X+38.171 Y-1.979 I+0 J-0.15 +N1130 G01 X+38.175 Y-6.588 +N1132 G01 X+40.11 Y-17.338 +N1134 G01 X+40.272 Y-19.683 +N1136 G01 X+40.176 Y-22.029 +N1138 G01 X+39.801 Y-24.506 +N1140 G01 X+38.12 Y-33.629 +N1142 G01 X+38.087 Y-37.961 +N1144 G02 X+37.938 Y-38.11 I-0.15 J+0.001 +N1146 G01 X+33.412 Y-38.114 +N1148 G01 X+22.663 Y-40.08 +N1150 G01 X+20.317 Y-40.245 +N1152 G01 X+17.971 Y-40.147 +N1154 G01 X+15.494 Y-39.767 +N1156 G01 X+6.372 Y-38.059 +N1158 G01 X+2.1 Y-38.049 +N1160 G02 X+1.951 Y-37.9 I+0.001 J+0.15 +N1162 G01 X+1.947 Y-33.412 +N1164 G01 X-0.051 Y-22.663 +N1166 G01 X-0.218 Y-20.317 +N1168 G01 X-0.119 Y-17.971 +N1170 G01 X+0.268 Y-15.494 +N1172 G01 X+2.001 Y-6.553 +N1174 G01 X+2.036 Y-2.16 +N1176 G02 X+2.186 Y-2.011 I+0.15 J-0.001 +N1178 G01 X+6.525 Y-2.017 +N1180 G01 X+17.337 Y+0.023 +N1182 G01 X+19.56 Y+0.191 +N1184 G01 X+21.782 Y+0.116 +N1186 G01 X+24.151 Y-0.23 +N1188 G01 X+33.628 Y-2.058 +N1190 G01 X+37.778 Y-2.067 +N1192 G01 X+37.883 Y-2.111 +N1194 G01 X+37.933 Y-2.223 +N1196 G01 X+37.938 Y-6.587 +N1198 G01 X+39.996 Y-17.337 +N1200 G01 X+40.166 Y-19.56 +N1202 G01 X+40.09 Y-21.782 +N1204 G01 X+39.766 Y-24.012 +N1206 G01 X+37.886 Y-33.628 +N1208 G01 X+37.877 Y-37.727 +N1210 G02 X+37.727 Y-37.877 I-0.15 J+0 +N1212 G01 X+33.413 Y-37.882 +N1214 G01 X+22.663 Y-39.968 +N1216 G01 X+20.44 Y-40.141 +N1218 G01 X+18.218 Y-40.064 +N1220 G01 X+15.988 Y-39.736 +N1222 G01 X+6.372 Y-37.83 +N1224 G01 X+2.346 Y-37.821 +N1226 G01 X+2.24 Y-37.777 +N1228 G01 X+2.179 Y-37.654 +N1230 G01 X+2.174 Y-33.413 +N1232 G01 X+0.059 Y-22.663 +N1234 G01 X-0.116 Y-20.441 +N1236 G01 X-0.038 Y-18.218 +N1238 G01 X+0.294 Y-15.988 +N1240 G01 X+2.226 Y-6.554 +N1242 G01 X+2.235 Y-2.385 +N1244 G02 X+2.385 Y-2.235 I+0.15 J+0 +N1246 G01 X+6.524 Y-2.241 +N1248 G01 X+17.337 Y-0.085 +N1250 G01 X+19.559 Y+0.093 +N1252 G01 X+21.781 Y+0.014 +N1254 G01 X+24.151 Y-0.351 +N1256 G01 X+33.627 Y-2.278 +N1258 G01 X+37.531 Y-2.286 +N1260 G01 X+37.636 Y-2.33 +N1262 G01 X+37.714 Y-2.469 +N1264 G01 X+37.721 Y-6.587 +N1266 G01 X+39.89 Y-17.337 +N1268 G01 X+40.07 Y-19.559 +N1270 G01 X+39.99 Y-21.781 +N1272 G01 X+39.65 Y-24.012 +N1274 G01 X+37.671 Y-33.627 +N1276 G01 X+37.662 Y-37.513 +N1278 G02 X+37.513 Y-37.662 I-0.15 J+0.001 +N1280 G01 X+33.413 Y-37.669 +N1282 G01 X+22.663 Y-39.866 +N1284 G01 X+20.441 Y-40.047 +N1286 G01 X+18.219 Y-39.967 +N1288 G01 X+15.988 Y-39.622 +N1290 G01 X+6.373 Y-37.619 +N1292 G01 X+2.538 Y-37.593 +N1294 G02 X+2.389 Y-37.444 I+0.001 J+0.15 +N1296 G01 X+2.382 Y-33.414 +N1298 G01 X+0.159 Y-22.663 +N1300 G01 X-0.024 Y-20.441 +N1302 G01 X+0.057 Y-18.219 +N1304 G01 X+0.406 Y-15.988 +N1306 G01 X+2.432 Y-6.555 +N1308 G01 X+2.441 Y-2.593 +N1310 G01 X+2.485 Y-2.487 +N1312 G01 X+2.593 Y-2.441 +N1314 G01 X+6.523 Y-2.446 +N1316 G01 X+17.337 Y-0.184 +N1318 G01 X+19.559 Y+0.002 +N1320 G01 X+21.781 Y-0.081 +N1322 G01 X+24.151 Y-0.464 +N1324 G01 X+33.627 Y-2.484 +N1326 G01 X+37.358 Y-2.492 +N1328 G02 X+37.508 Y-2.642 I+0 J-0.15 +N1330 G01 X+37.515 Y-6.586 +N1332 G01 X+39.791 Y-17.337 +N1334 G01 X+39.976 Y-19.436 +N1336 G01 X+39.918 Y-21.535 +N1338 G01 X+39.617 Y-23.642 +N1340 G01 X+37.465 Y-33.626 +N1342 G01 X+37.456 Y-37.284 +N1344 G01 X+37.412 Y-37.39 +N1346 G01 X+37.284 Y-37.456 +N1348 G01 X+33.414 Y-37.464 +N1350 G01 X+22.663 Y-39.766 +N1352 G01 X+20.564 Y-39.953 +N1354 G01 X+18.465 Y-39.895 +N1356 G01 X+16.358 Y-39.59 +N1358 G01 X+6.374 Y-37.413 +N1360 G01 X+2.745 Y-37.405 +N1362 G02 X+2.595 Y-37.255 I+0 J+0.15 +N1364 G01 X+2.587 Y-33.414 +N1366 G01 X+0.259 Y-22.663 +N1368 G01 X+0.07 Y-20.564 +N1370 G01 X+0.129 Y-18.466 +N1372 G01 X+0.437 Y-16.358 +N1374 G01 X+2.638 Y-6.555 +N1376 G01 X+2.654 Y-2.797 +N1378 G02 X+2.804 Y-2.648 I+0.15 J-0.001 +N1380 G01 X+6.523 Y-2.654 +N1382 G01 X+17.336 Y-0.286 +N1384 G01 X+19.436 Y-0.095 +N1386 G01 X+21.534 Y-0.155 +N1388 G01 X+23.642 Y-0.467 +N1390 G01 X+33.626 Y-2.699 +N1392 G01 X+37.142 Y-2.708 +N1394 G02 X+37.292 Y-2.858 I+0 J-0.15 +N1396 G01 X+37.299 Y-6.585 +N1398 G01 X+39.684 Y-17.336 +N1400 G01 X+39.878 Y-19.435 +N1402 G01 X+39.818 Y-21.534 +N1404 G01 X+39.501 Y-23.642 +N1406 G01 X+37.24 Y-33.626 +N1408 G01 X+37.223 Y-37.082 +N1410 G02 X+37.073 Y-37.231 I-0.15 J+0.001 +N1412 G01 X+33.415 Y-37.238 +N1414 G01 X+22.664 Y-39.655 +N1416 G01 X+20.565 Y-39.851 +N1418 G01 X+18.466 Y-39.79 +N1420 G01 X+16.358 Y-39.469 +N1422 G01 X+6.374 Y-37.18 +N1424 G01 X+2.98 Y-37.17 +N1426 G02 X+2.83 Y-37.02 I+0 J+0.15 +N1428 G01 X+2.822 Y-33.415 +N1430 G01 X+0.375 Y-22.664 +N1432 G01 X+0.176 Y-20.565 +N1434 G01 X+0.238 Y-18.466 +N1436 G01 X+0.562 Y-16.358 +N1438 G01 X+2.881 Y-6.556 +N1440 G01 X+2.901 Y-3.04 +N1442 G02 X+3.051 Y-2.891 I+0.15 J-0.001 +N1444 G01 X+6.522 Y-2.897 +N1446 G01 X+17.336 Y-0.404 +N1448 G01 X+19.435 Y-0.203 +N1450 G01 X+21.534 Y-0.265 +N1452 G01 X+23.642 Y-0.594 +N1454 G01 X+33.625 Y-2.942 +N1456 G01 X+36.899 Y-2.952 +N1458 G02 X+37.048 Y-3.101 I-0.001 J-0.15 +N1460 G01 X+37.057 Y-6.584 +N1462 G01 X+39.567 Y-17.336 +N1464 G01 X+39.771 Y-19.435 +N1466 G01 X+39.707 Y-21.534 +N1468 G01 X+39.374 Y-23.642 +N1470 G01 X+36.997 Y-33.625 +N1472 G01 X+36.976 Y-36.839 +N1474 G02 X+36.826 Y-36.988 I-0.15 J+0.001 +N1476 G01 X+33.416 Y-36.996 +N1478 G01 X+22.664 Y-39.537 +N1480 G01 X+20.565 Y-39.744 +N1482 G01 X+18.59 Y-39.691 +N1484 G01 X+16.481 Y-39.37 +N1486 G01 X+6.375 Y-36.936 +N1488 G01 X+3.223 Y-36.927 +N1490 G02 X+3.073 Y-36.777 I+0 J+0.15 +N1492 G01 X+3.064 Y-33.416 +N1494 G01 X+0.492 Y-22.664 +N1496 G01 X+0.288 Y-20.688 +N1498 G01 X+0.326 Y-18.713 +N1500 G01 X+0.634 Y-16.612 +N1502 G01 X+3.124 Y-6.556 +N1504 G01 X+3.147 Y-3.283 +N1506 G02 X+3.298 Y-3.134 I+0.15 J-0.001 +N1508 G01 X+6.521 Y-3.14 +N1510 G01 X+17.09 Y-0.564 +N1512 G01 X+19.188 Y-0.32 +N1514 G01 X+21.164 Y-0.344 +N1516 G01 X+23.14 Y-0.614 +N1518 G01 X+33.624 Y-3.185 +N1520 G01 X+36.655 Y-3.195 +N1522 G02 X+36.805 Y-3.344 I+0 J-0.15 +N1524 G01 X+36.815 Y-6.584 +N1526 G01 X+39.406 Y-17.09 +N1528 G01 X+39.646 Y-19.064 +N1530 G01 X+39.629 Y-21.163 +N1532 G01 X+39.356 Y-23.14 +N1534 G01 X+36.754 Y-33.625 +N1536 G01 X+36.729 Y-36.596 +N1538 G02 X+36.58 Y-36.745 I-0.15 J+0.001 +N1540 G01 X+33.417 Y-36.754 +N1542 G01 X+22.91 Y-39.376 +N1544 G01 X+20.936 Y-39.619 +N1546 G01 X+18.837 Y-39.601 +N1548 G01 X+16.86 Y-39.325 +N1550 G01 X+6.5 Y-36.693 +N1552 G01 X+3.466 Y-36.683 +N1554 G02 X+3.317 Y-36.534 I+0.001 J+0.15 +N1556 G01 X+3.307 Y-33.417 +N1558 G01 X+0.654 Y-22.91 +N1560 G01 X+0.409 Y-20.936 +N1562 G01 X+0.426 Y-18.837 +N1564 G01 X+0.705 Y-16.86 +N1566 G01 X+3.367 Y-6.557 +N1568 G01 X+3.394 Y-3.527 +N1570 G02 X+3.544 Y-3.378 I+0.15 J-0.001 +N1572 G01 X+6.52 Y-3.383 +N1574 G01 X+17.09 Y-0.684 +N1576 G01 X+19.064 Y-0.436 +N1578 G01 X+21.163 Y-0.453 +N1580 G01 X+23.14 Y-0.735 +N1582 G01 X+33.5 Y-3.428 +N1584 G01 X+36.412 Y-3.438 +N1586 G02 X+36.562 Y-3.588 I+0 J-0.15 +N1588 G01 X+36.573 Y-6.583 +N1590 G01 X+39.286 Y-17.09 +N1592 G01 X+39.537 Y-19.064 +N1594 G01 X+39.52 Y-21.163 +N1596 G01 X+39.234 Y-23.14 +N1598 G01 X+36.511 Y-33.5 +N1600 G01 X+36.483 Y-36.353 +N1602 G02 X+36.333 Y-36.501 I-0.15 J+0.002 +N1604 G01 X+33.417 Y-36.512 +N1606 G01 X+22.911 Y-39.256 +N1608 G01 X+20.936 Y-39.51 +N1610 G01 X+18.837 Y-39.492 +N1612 G01 X+16.86 Y-39.204 +N1614 G01 X+6.5 Y-36.45 +N1616 G01 X+3.71 Y-36.44 +N1618 G02 X+3.56 Y-36.291 I+0 J+0.15 +N1620 G01 X+3.549 Y-33.418 +N1622 G01 X+0.774 Y-22.911 +N1624 G01 X+0.517 Y-20.936 +N1626 G01 X+0.535 Y-18.838 +N1628 G01 X+0.827 Y-16.861 +N1630 G01 X+3.611 Y-6.558 +N1632 G01 X+3.641 Y-3.769 +N1634 G02 X+3.791 Y-3.621 I+0.15 J-0.002 +N1636 G01 X+6.519 Y-3.625 +N1638 G01 X+17.089 Y-0.804 +N1640 G01 X+19.064 Y-0.544 +N1642 G01 X+21.162 Y-0.562 +N1644 G01 X+23.14 Y-0.857 +N1646 G01 X+33.499 Y-3.671 +N1648 G01 X+36.169 Y-3.681 +N1650 G02 X+36.319 Y-3.831 I+0 J-0.15 +N1652 G01 X+36.331 Y-6.582 +N1654 G01 X+39.166 Y-17.089 +N1656 G01 X+39.429 Y-19.064 +N1658 G01 X+39.411 Y-21.162 +N1660 G01 X+39.112 Y-23.139 +N1662 G01 X+36.268 Y-33.5 +N1664 G01 X+36.236 Y-36.11 +N1666 G02 X+36.087 Y-36.258 I-0.15 J+0.002 +N1668 G01 X+33.418 Y-36.27 +N1670 G01 X+22.911 Y-39.136 +N1672 G01 X+20.936 Y-39.402 +N1674 G01 X+19.084 +N1676 G01 X+17.109 Y-39.135 +N1678 G01 X+12.475 Y-37.875 +N1680 G01 X+6.501 Y-36.207 +N1682 G01 X+3.953 Y-36.197 +N1684 G02 X+3.803 Y-36.048 I+0 J+0.15 +N1686 G01 X+3.791 Y-33.418 +N1688 G01 X+0.894 Y-22.911 +N1690 G01 X+0.625 Y-20.936 +N1692 G01 Y-19.084 +N1694 G01 X+0.895 Y-17.109 +N1696 G01 X+2.098 Y-12.725 +N1698 G01 X+3.854 Y-6.558 +N1700 G01 X+3.887 Y-4.012 +N1702 G02 X+4.037 Y-3.864 I+0.15 J-0.002 +N1704 G01 X+6.518 Y-3.868 +N1706 G01 X+17.089 Y-0.924 +N1708 G01 X+19.064 Y-0.652 +N1710 G01 X+20.916 +N1712 G01 X+22.891 Y-0.925 +N1714 G01 X+27.15 Y-2.104 +N1716 G01 X+33.498 Y-3.915 +N1718 G01 X+35.926 Y-3.925 +N1720 G02 X+36.076 Y-4.074 I-0.001 J-0.15 +N1722 G01 X+36.088 Y-6.581 +N1724 G01 X+39.046 Y-17.089 +N1726 G01 X+39.321 Y-19.064 +N1728 G01 Y-20.916 +N1730 G01 X+39.045 Y-22.891 +N1732 G01 X+37.89 Y-27.025 +N1734 G01 X+36.024 Y-33.499 +N1736 G01 X+35.989 Y-35.867 +N1738 G02 X+35.84 Y-36.015 I-0.149 J+0.002 +N1740 G01 X+33.419 Y-36.028 +N1742 G01 X+22.911 Y-39.016 +N1744 G01 X+20.936 Y-39.294 +N1746 G01 X+19.085 Y-39.293 +N1748 G01 X+17.109 Y-39.015 +N1750 G01 X+12.975 Y-37.848 +N1752 G01 X+6.502 Y-35.964 +N1754 G01 X+4.198 Y-35.954 +N1756 G01 X+4.092 Y-35.91 +N1758 G01 X+4.046 Y-35.803 +N1760 G01 X+4.033 Y-33.419 +N1762 G01 X+1.014 Y-22.911 +N1764 G01 X+0.734 Y-20.936 +N1766 G01 Y-19.085 +N1768 G01 X+1.015 Y-17.109 +N1770 G01 X+2.12 Y-13.225 +N1772 G01 X+4.097 Y-6.559 +N1774 G01 X+4.134 Y-4.255 +N1776 G02 X+4.284 Y-4.107 I+0.15 J-0.002 +N1778 G01 X+6.518 Y-4.111 +N1780 G01 X+17.089 Y-1.042 +N1782 G01 X+19.063 Y-0.759 +N1784 G01 X+20.915 +N1786 G01 X+22.891 Y-1.043 +N1788 G01 X+26.65 Y-2.121 +N1790 G01 X+33.498 Y-4.153 +N1792 G01 X+35.679 Y-4.163 +N1794 G01 X+35.785 Y-4.207 +N1796 G01 X+35.837 Y-4.321 +N1798 G01 X+35.852 Y-6.58 +N1800 G01 X+38.93 Y-17.088 +N1802 G01 X+39.215 Y-19.063 +N1804 G01 X+39.216 Y-20.915 +N1806 G01 X+38.929 Y-22.891 +N1808 G01 X+37.804 Y-26.775 +N1810 G01 X+35.791 Y-33.498 +N1812 G01 X+35.781 Y-35.632 +N1814 G02 X+35.632 Y-35.782 I-0.15 J+0 +N1816 G01 X+33.42 Y-35.796 +N1818 G01 X+22.912 Y-38.902 +N1820 G01 X+20.937 Y-39.19 +N1822 G01 X+19.085 Y-39.191 +N1824 G01 X+17.109 Y-38.902 +N1826 G01 X+13.475 Y-37.842 +N1828 G01 X+6.503 Y-35.735 +N1830 G01 X+4.445 Y-35.725 +N1832 G01 X+4.339 Y-35.681 +N1834 G01 X+4.275 Y-35.556 +N1836 G01 X+4.261 Y-33.42 +N1838 G01 X+1.125 Y-22.912 +N1840 G01 X+0.835 Y-20.937 +N1842 G01 X+0.834 Y-19.085 +N1844 G01 X+1.126 Y-17.109 +N1846 G01 X+2.195 Y-13.475 +N1848 G01 X+4.321 Y-6.561 +N1850 G01 X+4.331 Y-4.481 +N1852 G02 X+4.481 Y-4.331 I+0.15 J+0 +N1854 G01 X+6.517 Y-4.334 +N1856 G01 X+17.088 Y-1.152 +N1858 G01 X+19.063 Y-0.858 +N1860 G01 X+20.915 +N1862 G01 X+22.891 Y-1.152 +N1864 G01 X+26.4 Y-2.191 +N1866 G01 X+33.497 Y-4.373 +N1868 G01 X+35.432 Y-4.382 +N1870 G01 X+35.538 Y-4.426 +N1872 G01 X+35.618 Y-4.568 +N1874 G01 X+35.633 Y-6.58 +N1876 G01 X+38.823 Y-17.088 +N1878 G01 X+39.119 Y-19.063 +N1880 G01 Y-20.915 +N1882 G01 X+38.823 Y-22.891 +N1884 G01 X+37.814 Y-26.275 +N1886 G01 X+35.576 Y-33.497 +N1888 G01 X+35.566 Y-35.417 +N1890 G02 X+35.417 Y-35.567 I-0.15 J+0 +N1892 G01 X+33.42 Y-35.582 +N1894 G01 X+22.912 Y-38.797 +N1896 G01 X+20.937 Y-39.096 +N1898 G01 X+19.085 +N1900 G01 X+17.109 Y-38.798 +N1902 G01 X+13.765 Y-37.794 +N1904 G01 X+6.502 Y-35.524 +N1906 G01 X+4.633 Y-35.496 +N1908 G02 X+4.484 Y-35.347 I+0.001 J+0.15 +N1910 G01 X+4.469 Y-33.42 +N1912 G01 X+1.228 Y-22.912 +N1914 G01 X+0.927 Y-20.937 +N1916 G01 Y-19.085 +N1918 G01 X+1.228 Y-17.109 +N1920 G01 X+2.24 Y-13.765 +N1922 G01 X+4.527 Y-6.561 +N1924 G01 X+4.537 Y-4.692 +N1926 G01 X+4.581 Y-4.586 +N1928 G01 X+4.692 Y-4.537 +N1930 G01 X+6.516 Y-4.54 +N1932 G01 X+17.088 Y-1.253 +N1934 G01 X+19.063 Y-0.95 +N1936 G01 X+20.914 +N1938 G01 X+22.891 Y-1.253 +N1940 G01 X+26.15 Y-2.246 +N1942 G01 X+33.496 Y-4.579 +N1944 G01 X+35.263 Y-4.588 +N1946 G02 X+35.413 Y-4.737 I+0 J-0.15 +N1948 G01 X+35.428 Y-6.579 +N1950 G01 X+38.692 Y-16.965 +N1952 G01 X+39.006 Y-18.817 +N1954 G01 X+39.049 Y-20.545 +N1956 G01 X+38.828 Y-22.397 +N1958 G01 X+38.329 Y-24.259 +N1960 G01 X+35.37 Y-33.496 +N1962 G01 X+35.36 Y-35.185 +N1964 G01 X+35.316 Y-35.291 +N1966 G01 X+35.186 Y-35.361 +N1968 G01 X+33.421 Y-35.377 +N1970 G01 X+23.035 Y-38.667 +N1972 G01 X+21.184 Y-38.983 +N1974 G01 X+19.455 Y-39.027 +N1976 G01 X+17.727 Y-38.827 +N1978 G01 X+15.741 Y-38.301 +N1980 G01 X+6.504 Y-35.319 +N1982 G01 X+4.84 Y-35.309 +N1984 G02 X+4.691 Y-35.16 I+0.001 J+0.15 +N1986 G01 X+4.674 Y-33.421 +N1988 G01 X+1.359 Y-23.034 +N1990 G01 X+1.052 Y-21.307 +N1992 G01 X+0.991 Y-19.579 +N1994 G01 X+1.175 Y-17.85 +N1996 G01 X+1.647 Y-15.988 +N1998 G01 X+4.733 Y-6.561 +N2000 G01 X+4.752 Y-4.892 +N2002 G02 X+4.902 Y-4.743 I+0.15 J-0.001 +N2004 G01 X+6.515 Y-4.746 +N2006 G01 X+16.966 Y-1.386 +N2008 G01 X+18.693 Y-1.078 +N2010 G01 X+20.421 Y-1.016 +N2012 G01 X+22.15 Y-1.201 +N2014 G01 X+23.889 Y-1.638 +N2016 G01 X+33.496 Y-4.794 +N2018 G01 X+35.047 Y-4.804 +N2020 G02 X+35.197 Y-4.952 I+0 J-0.15 +N2022 G01 X+35.213 Y-6.579 +N2024 G01 X+38.584 Y-16.966 +N2026 G01 X+38.895 Y-18.693 +N2028 G01 X+38.957 Y-20.421 +N2030 G01 X+38.77 Y-22.15 +N2032 G01 X+38.33 Y-23.889 +N2034 G01 X+35.145 Y-33.496 +N2036 G01 X+35.125 Y-34.988 +N2038 G02 X+34.976 Y-35.137 I-0.15 J+0.001 +N2040 G01 X+33.422 Y-35.152 +N2042 G01 X+23.035 Y-38.553 +N2044 G01 X+21.307 Y-38.867 +N2046 G01 X+19.579 Y-38.93 +N2048 G01 X+17.85 Y-38.741 +N2050 G01 X+16.111 Y-38.298 +N2052 G01 X+6.505 Y-35.085 +N2054 G01 X+5.075 Y-35.074 +N2056 G02 X+4.925 Y-34.926 I+0 J+0.15 +N2058 G01 X+4.908 Y-33.422 +N2060 G01 X+1.477 Y-23.035 +N2062 G01 X+1.16 Y-21.307 +N2064 G01 X+1.096 Y-19.579 +N2066 G01 X+1.287 Y-17.85 +N2068 G01 X+1.735 Y-16.111 +N2070 G01 X+4.976 Y-6.562 +N2072 G01 X+4.998 Y-5.135 +N2074 G02 X+5.149 Y-4.987 I+0.15 J-0.002 +N2076 G01 X+6.515 Y-4.989 +N2078 G01 X+16.965 Y-1.507 +N2080 G01 X+18.693 Y-1.187 +N2082 G01 X+20.421 Y-1.123 +N2084 G01 X+22.15 Y-1.315 +N2086 G01 X+23.889 Y-1.767 +N2088 G01 X+33.495 Y-5.037 +N2090 G01 X+34.804 Y-5.047 +N2092 G02 X+34.954 Y-5.195 I+0 J-0.15 +N2094 G01 X+34.971 Y-6.578 +N2096 G01 X+38.463 Y-16.965 +N2098 G01 X+38.785 Y-18.693 +N2100 G01 X+38.85 Y-20.421 +N2102 G01 X+38.656 Y-22.15 +N2104 G01 X+38.2 Y-23.889 +N2106 G01 X+34.902 Y-33.496 +N2108 G01 X+34.878 Y-34.746 +N2110 G02 X+34.73 Y-34.894 I-0.15 J+0.002 +N2112 G01 X+33.422 Y-34.91 +N2114 G01 X+23.035 Y-38.432 +N2116 G01 X+21.307 Y-38.758 +N2118 G01 X+19.579 Y-38.823 +N2120 G01 X+17.85 Y-38.628 +N2122 G01 X+16.111 Y-38.168 +N2124 G01 X+6.505 Y-34.842 +N2126 G01 X+5.318 Y-34.831 +N2128 G02 X+5.168 Y-34.683 I+0 J+0.15 +N2130 G01 X+5.15 Y-33.422 +N2132 G01 X+1.598 Y-23.035 +N2134 G01 X+1.27 Y-21.307 +N2136 G01 X+1.204 Y-19.579 +N2138 G01 X+1.401 Y-17.85 +N2140 G01 X+1.865 Y-16.111 +N2142 G01 X+5.219 Y-6.562 +N2144 G01 X+5.245 Y-5.377 +N2146 G02 X+5.395 Y-5.23 I+0.15 J-0.003 +N2148 G01 X+6.514 Y-5.232 +N2150 G01 X+16.965 Y-1.628 +N2152 G01 X+18.693 Y-1.297 +N2154 G01 X+20.421 Y-1.23 +N2156 G01 X+22.149 Y-1.429 +N2158 G01 X+23.889 Y-1.897 +N2160 G01 X+33.494 Y-5.28 +N2162 G01 X+34.561 Y-5.29 +N2164 G02 X+34.711 Y-5.438 I+0 J-0.15 +N2166 G01 X+34.729 Y-6.577 +N2168 G01 X+38.342 Y-16.965 +N2170 G01 X+38.676 Y-18.692 +N2172 G01 X+38.743 Y-20.421 +N2174 G01 X+38.542 Y-22.149 +N2176 G01 X+38.071 Y-23.889 +N2178 G01 X+34.659 Y-33.496 +N2180 G01 X+34.632 Y-34.504 +N2182 G02 X+34.485 Y-34.651 I-0.15 J+0.003 +N2184 G01 X+33.423 Y-34.668 +N2186 G01 X+23.035 Y-38.312 +N2188 G01 X+21.308 Y-38.648 +N2190 G01 X+19.58 Y-38.716 +N2192 G01 X+17.851 Y-38.514 +N2194 G01 X+16.111 Y-38.038 +N2196 G01 X+6.506 Y-34.599 +N2198 G01 X+5.561 Y-34.588 +N2200 G02 X+5.411 Y-34.441 I+0 J+0.15 +N2202 G01 X+5.392 Y-33.423 +N2204 G01 X+1.719 Y-23.035 +N2206 G01 X+1.379 Y-21.308 +N2208 G01 X+1.311 Y-19.58 +N2210 G01 X+1.515 Y-17.851 +N2212 G01 X+1.994 Y-16.111 +N2214 G01 X+5.462 Y-6.562 +N2216 G01 X+5.491 Y-5.62 +N2218 G02 X+5.641 Y-5.473 I+0.15 J-0.003 +N2220 G01 X+6.513 Y-5.474 +N2222 G01 X+16.965 Y-1.749 +N2224 G01 X+18.692 Y-1.406 +N2226 G01 X+20.42 Y-1.338 +N2228 G01 X+22.149 Y-1.543 +N2230 G01 X+23.889 Y-2.026 +N2232 G01 X+33.494 Y-5.523 +N2234 G01 X+34.318 Y-5.533 +N2236 G02 X+34.468 Y-5.68 I+0 J-0.15 +N2238 G01 X+34.487 Y-6.577 +N2240 G01 X+38.221 Y-16.965 +N2242 G01 X+38.566 Y-18.692 +N2244 G01 X+38.635 Y-20.42 +N2246 G01 X+38.428 Y-22.149 +N2248 G01 X+37.941 Y-23.889 +N2250 G01 X+34.416 Y-33.495 +N2252 G01 X+34.387 Y-34.263 +N2254 G02 X+34.24 Y-34.409 I-0.15 J+0.004 +N2256 G01 X+33.423 Y-34.426 +N2258 G01 X+23.035 Y-38.191 +N2260 G01 X+21.308 Y-38.539 +N2262 G01 X+19.58 Y-38.609 +N2264 G01 X+17.851 Y-38.4 +N2266 G01 X+16.111 Y-37.909 +N2268 G01 X+6.507 Y-34.356 +N2270 G01 X+5.803 Y-34.345 +N2272 G02 X+5.654 Y-34.199 I+0.001 J+0.15 +N2274 G01 X+5.635 Y-33.423 +N2276 G01 X+1.84 Y-23.035 +N2278 G01 X+1.489 Y-21.308 +N2280 G01 X+1.414 Y-19.703 +N2282 G01 X+1.604 Y-17.975 +N2284 G01 X+2.124 Y-16.111 +N2286 G01 X+5.706 Y-6.562 +N2288 G01 X+5.736 Y-5.861 +N2290 G02 X+5.886 Y-5.716 I+0.15 J-0.005 +N2292 G01 X+6.512 Y-5.717 +N2294 G01 X+16.965 Y-1.869 +N2296 G01 X+18.692 Y-1.516 +N2298 G01 X+20.297 Y-1.441 +N2300 G01 X+22.025 Y-1.632 +N2302 G01 X+23.889 Y-2.156 +N2304 G01 X+33.493 Y-5.766 +N2306 G01 X+34.074 Y-5.776 +N2308 G01 X+34.18 Y-5.82 +N2310 G01 X+34.225 Y-5.924 +N2312 G01 X+34.245 Y-6.577 +N2314 G01 X+38.1 Y-16.964 +N2316 G01 X+38.457 Y-18.692 +N2318 G01 X+38.532 Y-20.297 +N2320 G01 X+38.339 Y-22.025 +N2322 G01 X+37.811 Y-23.889 +N2324 G01 X+34.172 Y-33.496 +N2326 G01 X+34.142 Y-34.023 +N2328 G02 X+33.996 Y-34.167 I-0.15 J+0.006 +N2330 G01 X+33.423 Y-34.184 +N2332 G01 X+23.036 Y-38.07 +N2334 G01 X+21.308 Y-38.429 +N2336 G01 X+19.703 Y-38.506 +N2338 G01 X+17.975 Y-38.311 +N2340 G01 X+16.111 Y-37.779 +N2342 G01 X+6.507 Y-34.112 +N2344 G01 X+6.05 Y-34.102 +N2346 G01 X+5.944 Y-34.058 +N2348 G01 X+5.896 Y-33.954 +N2350 G01 X+5.877 Y-33.423 +N2352 G01 X+1.96 Y-23.036 +N2354 G01 X+1.598 Y-21.308 +N2356 G01 X+1.521 Y-19.703 +N2358 G01 X+1.718 Y-17.975 +N2360 G01 X+2.161 Y-16.365 +N2362 G01 X+5.949 Y-6.562 +N2364 G01 X+5.98 Y-6.101 +N2366 G02 X+6.13 Y-5.959 I+0.15 J-0.008 +N2368 G01 X+6.511 +N2370 G01 X+16.965 Y-1.99 +N2372 G01 X+18.569 Y-1.642 +N2374 G01 X+20.296 Y-1.548 +N2376 G01 X+22.025 Y-1.746 +N2378 G01 X+23.635 Y-2.193 +N2380 G01 X+33.492 Y-6.009 +N2382 G01 X+33.827 Y-6.02 +N2384 G01 X+33.933 Y-6.064 +N2386 G01 X+33.983 Y-6.169 +N2388 G01 X+34.003 Y-6.577 +N2390 G01 X+37.979 Y-16.964 +N2392 G01 X+38.347 Y-18.692 +N2394 G01 X+38.425 Y-20.296 +N2396 G01 X+38.226 Y-22.025 +N2398 G01 X+37.775 Y-23.635 +N2400 G01 X+33.93 Y-33.492 +N2402 G01 X+33.92 Y-33.775 +N2404 G02 X+33.777 Y-33.925 I-0.15 J+0 +N2406 G01 X+33.423 Y-33.942 +N2408 G01 X+23.036 Y-37.949 +N2410 G01 X+21.308 Y-38.32 +N2412 G01 X+19.704 Y-38.398 +N2414 G01 X+17.975 Y-38.198 +N2416 G01 X+16.365 Y-37.744 +N2418 G01 X+6.508 Y-33.869 +N2420 G01 X+6.297 Y-33.859 +N2422 G01 X+6.191 Y-33.815 +N2424 G01 X+6.138 Y-33.709 +N2426 G01 X+6.119 Y-33.422 +N2428 G01 X+2.081 Y-23.036 +N2430 G01 X+1.708 Y-21.308 +N2432 G01 X+1.628 Y-19.704 +N2434 G01 X+1.831 Y-17.975 +N2436 G01 X+2.288 Y-16.365 +N2438 G01 X+6.191 Y-6.566 +N2440 G01 X+6.202 Y-6.352 +N2442 G02 X+6.352 Y-6.202 I+0.15 J+0 +N2444 G01 X+6.511 +N2446 G01 X+16.964 Y-2.109 +N2448 G01 X+18.568 Y-1.75 +N2450 G01 X+20.296 Y-1.653 +N2452 G01 X+22.025 Y-1.856 +N2454 G01 X+23.635 Y-2.316 +N2456 G01 X+33.492 Y-6.243 +N2458 G01 X+33.58 Y-6.253 +N2460 G01 X+33.686 Y-6.297 +N2462 G01 X+33.752 Y-6.411 +N2464 G01 X+33.769 Y-6.581 +N2466 G01 X+37.865 Y-16.964 +N2468 G01 X+38.244 Y-18.692 +N2470 G01 X+38.324 Y-20.296 +N2472 G01 X+38.12 Y-22.025 +N2474 G01 X+37.657 Y-23.635 +N2476 G01 X+33.706 Y-33.492 +N2478 G01 X+33.695 Y-33.554 +N2480 G02 X+33.56 Y-33.703 I-0.15 J+0 +N2482 G01 X+33.419 Y-33.718 +N2484 G01 X+23.036 Y-37.839 +N2486 G01 X+21.309 Y-38.22 +N2488 G01 X+19.704 Y-38.302 +N2490 G01 X+17.975 Y-38.096 +N2492 G01 X+16.365 Y-37.63 +N2494 G01 X+6.51 Y-33.655 +N2496 G01 X+6.388 Y-33.55 +N2498 G01 X+6.348 Y-33.475 +N2500 G01 X+6.334 Y-33.411 +N2502 G01 X+2.186 Y-23.036 +N2504 G01 X+1.803 Y-21.309 +N2506 G01 X+1.721 Y-19.704 +N2508 G01 X+1.928 Y-17.975 +N2510 G01 X+2.397 Y-16.365 +N2512 G01 X+6.408 Y-6.539 +N2514 G02 X+6.539 Y-6.408 I+0.149 J-0.018 +N2516 G01 X+16.964 Y-2.208 +N2518 G01 X+18.568 Y-1.84 +N2520 G01 X+20.295 Y-1.74 +N2522 G01 X+22.025 Y-1.947 +N2524 G01 X+23.635 Y-2.418 +N2526 G01 X+33.486 Y-6.451 +N2528 G01 X+33.576 Y-6.559 +N2530 G01 X+37.776 Y-16.964 +N2532 G01 X+38.163 Y-18.691 +N2534 G01 X+38.246 Y-20.296 +N2536 G01 X+38.038 Y-22.025 +N2538 G01 X+37.565 Y-23.635 +N2540 G01 X+33.549 Y-33.453 +N2542 G01 X+33.441 Y-33.543 +N2544 G01 X+23.036 Y-37.759 +N2546 G01 X+21.309 Y-38.148 +N2548 G01 X+19.704 Y-38.232 +N2550 G01 X+17.975 Y-38.022 +N2552 G01 X+16.366 Y-37.548 +N2554 G01 X+6.564 Y-33.485 +N2556 G01 X+6.483 Y-33.403 +N2558 G01 X+2.257 Y-23.036 +N2560 G01 X+1.867 Y-21.309 +N2562 G01 X+1.783 Y-19.704 +N2564 G01 X+1.993 Y-17.975 +N2566 G01 X+2.469 Y-16.366 +N2568 G01 X+6.515 Y-6.597 +N2570 G01 X+6.597 Y-6.515 +N2572 G01 X+16.599 Y-2.394 +N2574 G01 X+18.323 Y-1.937 +N2576 G01 X+19.926 Y-1.791 +N2578 G01 X+21.529 Y-1.913 +N2580 G01 X+23.133 Y-2.305 +N2582 G01 X+33.387 Y-6.532 +N2584 G01 X+33.468 Y-6.613 +N2586 G01 X+37.597 Y-16.606 +N2588 G01 X+38.053 Y-18.326 +N2590 G01 X+38.199 Y-19.926 +N2592 G01 X+38.077 Y-21.526 +N2594 G01 X+37.685 Y-23.126 +N2596 G01 X+33.452 Y-33.37 +N2598 G01 X+33.37 Y-33.452 +N2600 G01 X+23.386 Y-37.588 +N2602 G01 X+21.67 Y-38.043 +N2604 G01 X+20.074 Y-38.189 +N2606 G01 X+18.478 Y-38.066 +N2608 G01 X+16.881 Y-37.676 +N2610 G01 X+6.646 Y-33.435 +N2612 G01 X+6.565 Y-33.354 +N2614 G01 X+2.422 Y-23.379 +N2616 G01 X+1.967 Y-21.666 +N2618 G01 X+1.821 Y-20.074 +N2620 G01 X+1.944 Y-18.481 +N2622 G01 X+2.333 Y-16.888 +N2624 G01 X+6.582 Y-6.663 +N2626 G01 X+6.663 Y-6.582 +N2628 G01 X+16.635 Y-2.439 +N2630 G01 X+18.341 Y-1.987 +N2632 G01 X+19.926 Y-1.843 +N2634 G01 X+21.512 Y-1.966 +N2636 G01 X+23.095 Y-2.356 +N2638 G01 X+33.285 Y-6.635 +N2640 G01 X+33.365 Y-6.715 +N2642 G01 X+37.531 Y-16.659 +N2644 G01 X+37.981 Y-18.352 +N2646 G01 X+38.124 Y-19.927 +N2648 G01 X+38.002 Y-21.501 +N2650 G01 X+37.614 Y-23.073 +N2652 G01 X+33.312 Y-33.233 +N2654 G01 X+33.233 Y-33.312 +N2656 G01 X+23.317 Y-37.502 +N2658 G01 X+21.636 Y-37.949 +N2660 G01 X+20.073 Y-38.091 +N2662 G01 X+18.51 Y-37.969 +N2664 G01 X+16.95 Y-37.584 +N2666 G01 X+6.82 Y-33.259 +N2668 G01 X+6.741 Y-33.18 +N2670 G01 X+2.528 Y-23.293 +N2672 G01 X+2.084 Y-21.625 +N2674 G01 X+1.942 Y-20.072 +N2676 G01 X+2.063 Y-18.521 +N2678 G01 X+2.446 Y-16.972 +N2680 G01 X+6.794 Y-6.872 +N2682 G01 X+6.872 Y-6.794 +N2684 G01 X+16.731 Y-2.558 +N2686 G01 X+18.387 Y-2.116 +N2688 G01 X+19.928 Y-1.975 +N2690 G01 X+21.469 Y-2.095 +N2692 G01 X+23.005 Y-2.476 +N2694 G01 X+33.075 Y-6.847 +N2696 G01 X+33.153 Y-6.925 +N2698 G01 X+37.412 Y-16.755 +N2700 G01 X+37.852 Y-18.398 +N2702 G01 X+37.992 Y-19.928 +N2704 G01 X+37.872 Y-21.458 +N2706 G01 X+37.494 Y-22.983 +N2708 G01 X+33.1 Y-33.023 +N2710 G01 X+33.023 Y-33.1 +N2712 G01 X+23.221 Y-37.382 +N2714 G01 X+21.59 Y-37.82 +N2716 G01 X+20.071 Y-37.959 +N2718 G01 X+18.553 Y-37.84 +N2720 G01 X+17.04 Y-37.464 +N2722 G01 X+7.03 Y-33.047 +N2724 G01 X+6.953 Y-32.97 +N2726 G01 X+2.648 Y-23.197 +N2728 G01 X+2.213 Y-21.578 +N2730 G01 X+2.074 Y-20.071 +N2732 G01 X+2.192 Y-18.563 +N2734 G01 X+2.567 Y-17.062 +N2736 G01 X+7.006 Y-7.082 +N2738 G01 X+7.082 Y-7.006 +N2740 G01 X+16.827 Y-2.678 +N2742 G01 X+18.433 Y-2.245 +N2744 G01 X+19.93 Y-2.107 +N2746 G01 X+21.426 Y-2.225 +N2748 G01 X+22.916 Y-2.597 +N2750 G01 X+32.865 Y-7.059 +N2752 G01 X+32.941 Y-7.135 +N2754 G01 X+37.293 Y-16.851 +N2756 G01 X+37.723 Y-18.445 +N2758 G01 X+37.86 Y-19.93 +N2760 G01 X+37.743 Y-21.415 +N2762 G01 X+37.373 Y-22.893 +N2764 G01 X+32.888 Y-32.813 +N2766 G01 X+32.813 Y-32.888 +N2768 G01 X+23.125 Y-37.263 +N2770 G01 X+21.544 Y-37.69 +N2772 G01 X+20.07 Y-37.827 +N2774 G01 X+18.596 Y-37.711 +N2776 G01 X+17.129 Y-37.343 +N2778 G01 X+7.239 Y-32.835 +N2780 G01 X+7.165 Y-32.761 +N2782 G01 X+3.382 Y-24.512 +N2784 G01 X+2.689 Y-22.877 +N2786 G01 X+2.322 Y-21.419 +N2788 G01 X+2.206 Y-19.957 +N2790 G01 X+2.341 Y-18.495 +N2792 G01 X+2.766 Y-16.928 +N2794 G01 X+7.218 Y-7.292 +N2796 G01 X+7.292 Y-7.218 +N2798 G01 X+9.599 Y-6.153 +N2800 G01 X+16.922 Y-2.797 +N2802 G01 X+18.59 Y-2.355 +N2804 G01 X+20.043 Y-2.239 +N2806 G01 X+21.494 Y-2.373 +N2808 G01 X+23.048 Y-2.795 +N2810 G01 X+32.656 Y-7.271 +N2812 G01 X+32.729 Y-7.344 +N2814 G01 X+33.969 Y-10.008 +N2816 G01 X+37.173 Y-16.946 +N2818 G01 X+37.612 Y-18.601 +N2820 G01 X+37.728 Y-20.043 +N2822 G01 X+37.595 Y-21.482 +N2824 G01 X+37.175 Y-23.024 +N2826 G01 X+32.676 Y-32.604 +N2828 G01 X+32.604 Y-32.676 +N2830 G01 X+28.264 Y-34.714 +N2832 G01 X+23.03 Y-37.143 +N2834 G01 X+21.388 Y-37.58 +N2836 G01 X+19.958 Y-37.695 +N2838 G01 X+18.529 Y-37.563 +N2840 G01 X+17 Y-37.145 +N2842 G01 X+7.449 Y-32.623 +N2844 G01 X+7.377 Y-32.551 +N2846 G01 X+4.872 Y-27.264 +N2848 G01 X+2.887 Y-23.006 +N2850 G01 X+2.452 Y-21.377 +N2852 G01 X+2.338 Y-19.958 +N2854 G01 X+2.47 Y-18.541 +N2856 G01 X+2.884 Y-17.025 +N2858 G01 X+7.431 Y-7.501 +N2860 G01 X+7.501 Y-7.431 +N2862 G01 X+14.089 Y-4.281 +N2864 G01 X+17.019 Y-2.916 +N2866 G01 X+18.633 Y-2.485 +N2868 G01 X+20.041 Y-2.371 +N2870 G01 X+21.447 Y-2.502 +N2872 G01 X+22.951 Y-2.914 +N2874 G01 X+32.446 Y-7.484 +N2876 G01 X+32.516 Y-7.554 +N2878 G01 X+35.512 Y-13.767 +N2880 G01 X+37.054 Y-17.043 +N2882 G01 X+37.483 Y-18.644 +N2884 G01 X+37.596 Y-20.041 +N2886 G01 X+37.466 Y-21.436 +N2888 G01 X+37.056 Y-22.927 +N2890 G01 X+32.463 Y-32.394 +N2892 G01 X+32.394 Y-32.463 +N2894 G01 X+23.038 Y-36.985 +N2896 G01 X+21.558 Y-37.412 +N2898 G01 X+20.067 Y-37.563 +N2900 G01 X+18.576 Y-37.434 +N2902 G01 X+17.098 Y-37.027 +N2904 G01 X+7.659 Y-32.41 +N2906 G01 X+7.59 Y-32.341 +N2908 G01 X+3.045 Y-23.013 +N2910 G01 X+2.62 Y-21.545 +N2912 G01 X+2.47 Y-20.067 +N2914 G01 X+2.599 Y-18.588 +N2916 G01 X+3.003 Y-17.122 +N2918 G01 X+7.643 Y-7.711 +N2920 G01 X+7.711 Y-7.643 +N2922 G01 X+17.012 Y-3.074 +N2924 G01 X+18.467 Y-2.652 +N2926 G01 X+19.933 Y-2.503 +N2928 G01 X+21.4 Y-2.631 +N2930 G01 X+22.854 Y-3.032 +N2932 G01 X+32.236 Y-7.696 +N2934 G01 X+32.304 Y-7.764 +N2936 G01 X+36.896 Y-17.037 +N2938 G01 X+37.316 Y-18.479 +N2940 G01 X+37.464 Y-19.934 +N2942 G01 X+37.337 Y-21.389 +N2944 G01 X+36.938 Y-22.829 +N2946 G01 X+32.251 Y-32.184 +N2948 G01 X+32.184 Y-32.251 +N2950 G01 X+24.878 Y-35.923 +N2952 G01 X+22.837 Y-36.905 +N2954 G01 X+21.405 Y-37.303 +N2956 G01 X+19.963 Y-37.431 +N2958 G01 X+18.52 Y-37.285 +N2960 G01 X+17.093 Y-36.87 +N2962 G01 X+7.868 Y-32.198 +N2964 G01 X+7.802 Y-32.132 +N2966 G01 X+3.99 Y-24.61 +N2968 G01 X+3.125 Y-22.812 +N2970 G01 X+2.729 Y-21.394 +N2972 G01 X+2.602 Y-19.963 +N2974 G01 X+2.747 Y-18.533 +N2976 G01 X+3.16 Y-17.118 +N2978 G01 X+7.855 Y-7.921 +N2980 G01 X+7.921 Y-7.855 +N2982 G01 X+15.565 Y-3.949 +N2984 G01 X+17.212 Y-3.155 +N2986 G01 X+18.618 Y-2.761 +N2988 G01 X+20.036 Y-2.635 +N2990 G01 X+21.455 Y-2.779 +N2992 G01 X+22.857 Y-3.189 +N2994 G01 X+32.027 Y-7.908 +N2996 G01 X+32.092 Y-7.973 +N2998 G01 X+35.945 Y-15.454 +N3000 G01 X+36.815 Y-17.236 +N3002 G01 X+37.206 Y-18.629 +N3004 G01 X+37.332 Y-20.036 +N3006 G01 X+37.189 Y-21.443 +N3008 G01 X+36.782 Y-22.831 +N3010 G01 X+32.038 Y-31.974 +N3012 G01 X+31.974 Y-32.038 +N3014 G01 X+24.281 Y-36.034 +N3016 G01 X+22.74 Y-36.786 +N3018 G01 X+21.359 Y-37.174 +N3020 G01 X+19.964 Y-37.299 +N3022 G01 X+18.57 Y-37.157 +N3024 G01 X+17.194 Y-36.752 +N3026 G01 X+8.078 Y-31.985 +N3028 G01 X+8.015 Y-31.922 +N3030 G01 X+3.997 Y-24.25 +N3032 G01 X+3.244 Y-22.716 +N3034 G01 X+2.858 Y-21.348 +N3036 G01 X+2.734 Y-19.965 +N3038 G01 X+2.875 Y-18.582 +N3040 G01 X+3.277 Y-17.219 +N3042 G01 X+8.068 Y-8.13 +N3044 G01 X+8.13 Y-8.068 +N3046 G01 X+15.921 Y-3.955 +N3048 G01 X+17.308 Y-3.274 +N3050 G01 X+18.664 Y-2.89 +N3052 G01 X+20.035 Y-2.767 +N3054 G01 X+21.405 Y-2.908 +N3056 G01 X+22.756 Y-3.307 +N3058 G01 X+31.817 Y-8.121 +N3060 G01 X+31.879 Y-8.183 +N3062 G01 X+35.939 Y-15.813 +N3064 G01 X+36.696 Y-17.332 +N3066 G01 X+37.077 Y-18.675 +N3068 G01 X+37.2 Y-20.034 +N3070 G01 X+37.06 Y-21.393 +N3072 G01 X+36.664 Y-22.731 +N3074 G01 X+31.826 Y-31.765 +N3076 G01 X+31.765 Y-31.826 +N3078 G01 X+23.926 Y-36.032 +N3080 G01 X+22.644 Y-36.667 +N3082 G01 X+21.313 Y-37.045 +N3084 G01 X+19.966 Y-37.167 +N3086 G01 X+18.62 Y-37.028 +N3088 G01 X+17.295 Y-36.635 +N3090 G01 X+8.288 Y-31.773 +N3092 G01 X+8.227 Y-31.712 +N3094 G01 X+3.999 Y-23.895 +N3096 G01 X+3.363 Y-22.62 +N3098 G01 X+2.987 Y-21.301 +N3100 G01 X+2.866 Y-19.967 +N3102 G01 X+3.004 Y-18.632 +N3104 G01 X+3.395 Y-17.32 +N3106 G01 X+8.28 Y-8.34 +N3108 G01 X+8.34 Y-8.28 +N3110 G01 X+16.271 Y-3.956 +N3112 G01 X+17.405 Y-3.393 +N3114 G01 X+18.71 Y-3.02 +N3116 G01 X+20.033 Y-2.899 +N3118 G01 X+21.355 Y-3.036 +N3120 G01 X+22.655 Y-3.424 +N3122 G01 X+31.607 Y-8.333 +N3124 G01 X+31.667 Y-8.393 +N3126 G01 X+36.504 Y-17.245 +N3128 G01 X+36.93 Y-18.628 +N3130 G01 X+37.068 Y-19.938 +N3132 G01 X+36.95 Y-21.249 +N3134 G01 X+36.546 Y-22.629 +N3136 G01 X+31.613 Y-31.555 +N3138 G01 X+31.555 Y-31.613 +N3140 G01 X+22.729 Y-36.474 +N3142 G01 X+21.359 Y-36.897 +N3144 G01 X+20.061 Y-37.035 +N3146 G01 X+18.763 Y-36.918 +N3148 G01 X+17.396 Y-36.517 +N3150 G01 X+8.498 Y-31.56 +N3152 G01 X+8.44 Y-31.502 +N3154 G01 X+3.555 Y-22.703 +N3156 G01 X+3.135 Y-21.347 +N3158 G01 X+2.998 Y-20.061 +N3160 G01 X+3.114 Y-18.774 +N3162 G01 X+3.512 Y-17.421 +N3164 G01 X+8.493 Y-8.55 +N3166 G01 X+8.55 Y-8.493 +N3168 G01 X+17.323 Y-3.584 +N3170 G01 X+18.665 Y-3.167 +N3172 G01 X+19.94 Y-3.031 +N3174 G01 X+21.214 Y-3.146 +N3176 G01 X+22.553 Y-3.542 +N3178 G01 X+31.397 Y-8.546 +N3180 G01 X+31.454 Y-8.603 +N3182 G01 X+36.386 Y-17.349 +N3184 G01 X+36.801 Y-18.678 +N3186 G01 X+36.936 Y-19.94 +N3188 G01 X+36.821 Y-21.203 +N3190 G01 X+36.429 Y-22.528 +N3192 G01 X+31.401 Y-31.345 +N3194 G01 X+31.345 Y-31.401 +N3196 G01 X+22.626 Y-36.357 +N3198 G01 X+21.31 Y-36.769 +N3200 G01 X+20.06 Y-36.904 +N3202 G01 X+18.809 Y-36.789 +N3204 G01 X+17.497 Y-36.4 +N3206 G01 X+8.708 Y-31.348 +N3208 G01 X+8.652 Y-31.292 +N3210 G01 X+3.672 Y-22.6 +N3212 G01 X+3.263 Y-21.297 +N3214 G01 X+3.129 Y-20.059 +N3216 G01 X+3.243 Y-18.821 +N3218 G01 X+3.63 Y-17.522 +N3220 G01 X+8.705 Y-8.76 +N3222 G01 X+8.76 Y-8.705 +N3224 G01 X+17.426 Y-3.702 +N3226 G01 X+18.715 Y-3.296 +N3228 G01 X+19.941 Y-3.162 +N3230 G01 X+21.168 Y-3.275 +N3232 G01 X+22.453 Y-3.659 +N3234 G01 X+31.187 Y-8.759 +N3236 G01 X+31.241 Y-8.813 +N3238 G01 X+36.269 Y-17.452 +N3240 G01 X+36.672 Y-18.728 +N3242 G01 X+36.805 Y-19.941 +N3244 G01 X+36.692 Y-21.156 +N3246 G01 X+36.311 Y-22.427 +N3248 G01 X+31.188 Y-31.135 +N3250 G01 X+31.135 Y-31.188 +N3252 G01 X+22.522 Y-36.24 +N3254 G01 X+21.26 Y-36.64 +N3256 G01 X+20.058 Y-36.772 +N3258 G01 X+18.856 Y-36.66 +N3260 G01 X+17.598 Y-36.282 +N3262 G01 X+8.917 Y-31.135 +N3264 G01 X+8.865 Y-31.083 +N3266 G01 X+3.86 Y-22.658 +N3268 G01 X+3.43 Y-21.417 +N3270 G01 X+3.262 Y-20.059 +N3272 G01 X+3.372 Y-18.867 +N3274 G01 X+3.747 Y-17.623 +N3276 G01 X+8.918 Y-8.97 +N3278 G01 X+8.97 Y-8.918 +N3280 G01 X+17.279 Y-3.936 +N3282 G01 X+18.514 Y-3.483 +N3284 G01 X+19.772 Y-3.299 +N3286 G01 X+21.12 Y-3.404 +N3288 G01 X+22.352 Y-3.777 +N3290 G01 X+30.923 Y-8.938 +N3292 G01 X+30.974 Y-8.989 +N3294 G01 X+36.082 Y-17.398 +N3296 G01 X+36.486 Y-18.53 +N3298 G01 X+36.668 Y-19.774 +N3300 G01 X+36.563 Y-21.108 +N3302 G01 X+36.194 Y-22.326 +N3304 G01 X+30.975 Y-30.925 +N3306 G01 X+30.925 Y-30.975 +N3308 G01 X+22.574 Y-36.054 +N3310 G01 X+21.455 Y-36.454 +N3312 G01 X+20.224 Y-36.635 +N3314 G01 X+18.903 Y-36.531 +N3316 G01 X+17.699 Y-36.164 +N3318 G01 X+9.127 Y-30.922 +N3320 G01 X+9.078 Y-30.873 +N3322 G01 X+3.975 Y-22.547 +N3324 G01 X+3.577 Y-21.44 +N3326 G01 X+3.398 Y-20.222 +N3328 G01 X+3.501 Y-18.915 +N3330 G01 X+3.865 Y-17.724 +N3332 G01 X+9.131 Y-9.18 +N3334 G01 X+9.18 Y-9.131 +N3336 G01 X+17.393 Y-4.051 +N3338 G01 X+18.575 Y-3.61 +N3340 G01 X+19.78 Y-3.431 +N3342 G01 X+21.074 Y-3.533 +N3344 G01 X+22.251 Y-3.894 +N3346 G01 X+30.714 Y-9.15 +N3348 G01 X+30.762 Y-9.198 +N3350 G01 X+35.967 Y-17.509 +N3352 G01 X+36.359 Y-18.591 +N3354 G01 X+36.536 Y-19.782 +N3356 G01 X+36.435 Y-21.062 +N3358 G01 X+36.076 Y-22.226 +N3360 G01 X+30.763 Y-30.715 +N3362 G01 X+30.715 Y-30.763 +N3364 G01 X+22.463 Y-35.939 +N3366 G01 X+21.394 Y-36.327 +N3368 G01 X+20.216 Y-36.503 +N3370 G01 X+18.95 Y-36.402 +N3372 G01 X+17.8 Y-36.047 +N3374 G01 X+9.337 Y-30.71 +N3376 G01 X+9.29 Y-30.663 +N3378 G01 X+4.09 Y-22.435 +N3380 G01 X+3.705 Y-21.379 +N3382 G01 X+3.529 Y-20.213 +N3384 G01 X+3.615 Y-19.039 +N3386 G01 X+3.982 Y-17.825 +N3388 G01 X+9.344 Y-9.39 +N3390 G01 X+9.39 Y-9.344 +N3392 G01 X+17.507 Y-4.166 +N3394 G01 X+18.635 Y-3.737 +N3396 G01 X+19.789 Y-3.562 +N3398 G01 X+20.95 Y-3.647 +N3400 G01 X+22.149 Y-4.012 +N3402 G01 X+30.505 Y-9.362 +N3404 G01 X+30.55 Y-9.407 +N3406 G01 X+35.852 Y-17.62 +N3408 G01 X+36.232 Y-18.651 +N3410 G01 X+36.405 Y-19.791 +N3412 G01 X+36.32 Y-20.94 +N3414 G01 X+35.959 Y-22.124 +N3416 G01 X+30.55 Y-30.505 +N3418 G01 X+30.505 Y-30.55 +N3420 G01 X+22.352 Y-35.824 +N3422 G01 X+21.334 Y-36.2 +N3424 G01 X+20.207 Y-36.372 +N3426 G01 X+19.071 Y-36.288 +N3428 G01 X+17.901 Y-35.929 +N3430 G01 X+9.547 Y-30.497 +N3432 G01 X+9.503 Y-30.453 +N3434 G01 X+4.205 Y-22.324 +N3436 G01 X+3.832 Y-21.319 +N3438 G01 X+3.661 Y-20.205 +N3440 G01 X+3.744 Y-19.082 +N3442 G01 X+4.1 Y-17.926 +N3444 G01 X+9.557 Y-9.6 +N3446 G01 X+9.6 Y-9.557 +N3448 G01 X+17.621 Y-4.281 +N3450 G01 X+18.695 Y-3.864 +N3452 G01 X+19.797 Y-3.694 +N3454 G01 X+20.907 Y-3.777 +N3456 G01 X+22.049 Y-4.129 +N3458 G01 X+30.295 Y-9.574 +N3460 G01 X+35.737 Y-17.731 +N3462 G01 X+36.105 Y-18.711 +N3464 G01 X+36.273 Y-19.799 +N3466 G01 X+36.191 Y-20.896 +N3468 G01 X+35.841 Y-22.023 +N3470 G01 X+30.337 Y-30.295 +N3472 G01 X+22.241 Y-35.708 +N3474 G01 X+21.274 Y-36.073 +N3476 G01 X+20.199 Y-36.24 +N3478 G01 X+19.114 Y-36.159 +N3480 G01 X+18.002 Y-35.812 +N3482 G01 X+9.757 Y-30.284 +N3484 G01 X+4.32 Y-22.213 +N3486 G01 X+3.959 Y-21.259 +N3488 G01 X+3.793 Y-20.197 +N3490 G01 X+3.874 Y-19.125 +N3492 G01 X+4.217 Y-18.027 +N3494 G01 X+9.769 Y-9.809 +N3496 G01 X+17.735 Y-4.396 +N3498 G01 X+18.755 Y-3.991 +N3500 G01 X+19.806 Y-3.826 +N3502 G01 X+20.864 Y-3.906 +N3504 G01 X+21.948 Y-4.247 +N3506 G01 X+30.086 Y-9.787 +N3508 G01 X+35.622 Y-17.843 +N3510 G01 X+35.938 Y-18.636 +N3512 G01 X+36.14 Y-19.806 +N3514 G01 X+36.062 Y-20.853 +N3516 G01 X+35.724 Y-21.923 +N3518 G01 X+30.124 Y-30.085 +N3520 G01 X+22.129 Y-35.594 +N3522 G01 X+21.347 Y-35.907 +N3524 G01 X+20.191 Y-36.107 +N3526 G01 X+19.157 Y-36.029 +N3528 G01 X+18.103 Y-35.695 +N3530 G01 X+9.967 Y-30.071 +N3532 G01 X+4.435 Y-22.101 +N3534 G01 X+4.124 Y-21.33 +N3536 G01 X+3.929 Y-20.258 +N3538 G01 X+4.003 Y-19.169 +N3540 G01 X+4.335 Y-18.128 +N3542 G01 X+9.982 Y-10.019 +N3544 G01 X+17.85 Y-4.51 +N3546 G01 X+18.686 Y-4.156 +N3548 G01 X+19.745 Y-3.962 +N3550 G01 X+20.82 Y-4.035 +N3552 G01 X+21.847 Y-4.364 +N3554 G01 X+29.877 Y-9.999 +N3556 G01 X+35.507 Y-17.955 +N3558 G01 X+35.813 Y-18.704 +N3560 G01 X+36.005 Y-19.748 +N3562 G01 X+35.932 Y-20.81 +N3564 G01 X+35.606 Y-21.822 +N3566 G01 X+29.911 Y-29.875 +N3568 G01 X+22.017 Y-35.479 +N3570 G01 X+21.28 Y-35.781 +N3572 G01 X+20.249 Y-35.972 +N3574 G01 X+19.201 Y-35.9 +N3576 G01 X+18.203 Y-35.577 +N3578 G01 X+10.177 Y-29.858 +N3580 G01 X+4.55 Y-21.99 +N3582 G01 X+4.25 Y-21.263 +N3584 G01 X+4.061 Y-20.246 +N3586 G01 X+4.132 Y-19.212 +N3588 G01 X+4.452 Y-18.228 +N3590 G01 X+10.195 Y-10.229 +N3592 G01 X+17.966 Y-4.624 +N3594 G01 X+18.511 Y-4.366 +N3596 G01 X+19.564 Y-4.11 +N3598 G01 X+20.649 Y-4.141 +N3600 G01 X+21.745 Y-4.482 +N3602 G01 X+29.667 Y-10.211 +N3604 G01 X+35.393 Y-18.066 +N3606 G01 X+35.668 Y-18.711 +N3608 G01 X+35.869 Y-19.697 +N3610 G01 X+35.815 Y-20.704 +N3612 G01 X+35.489 Y-21.721 +N3614 G01 X+29.698 Y-29.665 +N3616 G01 X+21.906 Y-35.364 +N3618 G01 X+21.271 Y-35.636 +N3620 G01 X+20.3 Y-35.836 +N3622 G01 X+19.306 Y-35.783 +N3624 G01 X+18.305 Y-35.46 +N3626 G01 X+10.387 Y-29.645 +N3628 G01 X+4.665 Y-21.878 +N3630 G01 X+4.395 Y-21.253 +N3632 G01 X+4.197 Y-20.296 +N3634 G01 X+4.25 Y-19.316 +N3636 G01 X+4.57 Y-18.33 +N3638 G01 X+10.408 Y-10.44 +N3640 G01 X+18.081 Y-4.738 +N3642 G01 X+18.593 Y-4.489 +N3644 G01 X+19.586 Y-4.242 +N3646 G01 X+20.613 Y-4.271 +N3648 G01 X+21.645 Y-4.599 +N3650 G01 X+29.458 Y-10.424 +N3652 G01 X+35.278 Y-18.178 +N3654 G01 X+35.542 Y-18.782 +N3656 G01 X+35.737 Y-19.711 +N3658 G01 X+35.685 Y-20.664 +N3660 G01 X+35.372 Y-21.62 +N3662 G01 X+29.485 Y-29.455 +N3664 G01 X+21.794 Y-35.249 +N3666 G01 X+21.2 Y-35.511 +N3668 G01 X+20.285 Y-35.704 +N3670 G01 X+19.346 Y-35.653 +N3672 G01 X+18.405 Y-35.342 +N3674 G01 X+10.597 Y-29.432 +N3676 G01 X+4.779 Y-21.766 +N3678 G01 X+4.54 Y-21.237 +N3680 G01 X+4.329 Y-20.282 +N3682 G01 X+4.379 Y-19.356 +N3684 G01 X+4.687 Y-18.43 +N3686 G01 X+10.621 Y-10.65 +N3688 G01 X+18.195 Y-4.853 +N3690 G01 X+18.675 Y-4.612 +N3692 G01 X+19.608 Y-4.373 +N3694 G01 X+20.576 Y-4.401 +N3696 G01 X+21.544 Y-4.716 +N3698 G01 X+29.248 Y-10.636 +N3700 G01 X+35.163 Y-18.29 +N3702 G01 X+35.398 Y-18.8 +N3704 G01 X+35.605 Y-19.726 +N3706 G01 X+35.556 Y-20.624 +N3708 G01 X+35.254 Y-21.52 +N3710 G01 X+29.272 Y-29.245 +N3712 G01 X+21.682 Y-35.134 +N3714 G01 X+21.181 Y-35.367 +N3716 G01 X+20.271 Y-35.572 +N3718 G01 X+19.386 Y-35.523 +N3720 G01 X+18.506 Y-35.225 +N3722 G01 X+10.807 Y-29.219 +N3724 G01 X+4.894 Y-21.654 +N3726 G01 X+4.664 Y-21.163 +N3728 G01 X+4.461 Y-20.267 +N3730 G01 X+4.509 Y-19.396 +N3732 G01 X+4.805 Y-18.531 +N3734 G01 X+10.835 Y-10.86 +N3736 G01 X+18.309 Y-4.967 +N3738 G01 X+18.756 Y-4.736 +N3740 G01 X+19.629 Y-4.505 +N3742 G01 X+20.54 Y-4.532 +N3744 G01 X+21.444 Y-4.834 +N3746 G01 X+29.039 Y-10.849 +N3748 G01 X+35.049 Y-18.402 +N3750 G01 X+35.235 Y-18.778 +N3752 G01 X+35.462 Y-19.635 +N3754 G01 X+35.436 Y-20.531 +N3756 G01 X+35.137 Y-21.418 +N3758 G01 X+29.059 Y-29.035 +N3760 G01 X+21.57 Y-35.02 +N3762 G01 X+21.201 Y-35.204 +N3764 G01 X+20.36 Y-35.429 +N3766 G01 X+19.478 Y-35.403 +N3768 G01 X+18.607 Y-35.107 +N3770 G01 X+11.017 Y-29.005 +N3772 G01 X+5.009 Y-21.542 +N3774 G01 X+4.827 Y-21.181 +N3776 G01 X+4.603 Y-20.355 +N3778 G01 X+4.629 Y-19.488 +N3780 G01 X+4.922 Y-18.632 +N3782 G01 X+11.048 Y-11.07 +N3784 G01 X+18.424 Y-5.082 +N3786 G01 X+18.838 Y-4.859 +N3788 G01 X+19.651 Y-4.636 +N3790 G01 X+20.503 Y-4.662 +N3792 G01 X+21.343 Y-4.951 +N3794 G01 X+28.829 Y-11.061 +N3796 G01 X+34.934 Y-18.514 +N3798 G01 X+35.112 Y-18.86 +N3800 G01 X+35.331 Y-19.656 +N3802 G01 X+35.306 Y-20.494 +N3804 G01 X+35.019 Y-21.318 +N3806 G01 X+28.846 Y-28.825 +N3808 G01 X+21.457 Y-34.906 +N3810 G01 X+21.206 Y-35.042 +N3812 G01 X+20.387 Y-35.291 +N3814 G01 X+19.563 Y-35.282 +N3816 G01 X+18.75 Y-35.012 +N3818 G01 X+11.228 Y-28.792 +N3820 G01 X+5.123 Y-21.429 +N3822 G01 X+4.989 Y-21.184 +N3824 G01 X+4.742 Y-20.381 +N3826 G01 X+4.751 Y-19.571 +N3828 G01 X+5.018 Y-18.774 +N3830 G01 X+11.261 Y-11.28 +N3832 G01 X+18.54 Y-5.195 +N3834 G01 X+18.837 Y-5.021 +N3836 G01 X+19.625 Y-4.775 +N3838 G01 X+20.42 Y-4.783 +N3840 G01 X+21.201 Y-5.047 +N3842 G01 X+28.62 Y-11.274 +N3844 G01 X+34.82 Y-18.627 +N3846 G01 X+34.951 Y-18.861 +N3848 G01 X+35.192 Y-19.631 +N3850 G01 X+35.184 Y-20.412 +N3852 G01 X+34.923 Y-21.177 +N3854 G01 X+28.632 Y-28.615 +N3856 G01 X+21.345 Y-34.791 +N3858 G01 X+21.117 Y-34.92 +N3860 G01 X+20.362 Y-35.159 +N3862 G01 X+19.596 Y-35.151 +N3864 G01 X+18.847 Y-34.893 +N3866 G01 X+11.581 Y-28.703 +N3868 G01 X+5.237 Y-21.317 +N3870 G01 X+5.11 Y-21.095 +N3872 G01 X+4.874 Y-20.356 +N3874 G01 X+4.881 Y-19.605 +N3876 G01 X+5.136 Y-18.871 +N3878 G01 X+11.474 Y-11.49 +N3880 G01 X+18.655 Y-5.31 +N3882 G01 X+18.925 Y-5.142 +N3884 G01 X+19.65 Y-4.906 +N3886 G01 X+20.387 Y-4.914 +N3888 G01 X+21.105 Y-5.166 +N3890 G01 X+28.41 Y-11.487 +N3892 G01 X+34.706 Y-18.739 +N3894 G01 X+34.829 Y-18.949 +N3896 G01 X+35.061 Y-19.656 +N3898 G01 X+35.054 Y-20.379 +N3900 G01 X+34.805 Y-21.081 +N3902 G01 X+28.544 Y-28.263 +N3904 G01 X+21.231 Y-34.678 +N3906 G01 X+21.166 Y-34.721 +N3908 G01 X+20.461 Y-35.004 +N3910 G01 X+19.714 Y-35.034 +N3912 G01 X+18.945 Y-34.775 +N3914 G01 X+11.975 Y-28.656 +N3916 G01 X+5.35 Y-21.203 +N3918 G01 X+5.308 Y-21.14 +N3920 G01 X+5.029 Y-20.453 +N3922 G01 X+4.999 Y-19.72 +N3924 G01 X+5.217 Y-19.039 +N3926 G01 X+11.688 Y-11.701 +N3928 G01 X+18.816 Y-5.386 +N3930 G01 X+19.517 Y-5.071 +N3932 G01 X+20.233 Y-5.026 +N3934 G01 X+20.938 Y-5.247 +N3936 G01 X+20.991 Y-5.278 +N3938 G01 X+28.015 Y-11.532 +N3940 G01 X+34.585 Y-18.845 +N3942 G01 X+34.886 Y-19.489 +N3944 G01 X+34.94 Y-20.226 +N3946 G01 X+34.723 Y-20.916 +N3948 G01 X+34.692 Y-20.969 +N3950 G01 X+28.5 Y-27.87 +N3952 G01 X+21.127 Y-34.557 +N3954 G01 X+20.501 Y-34.854 +N3956 G01 X+19.78 Y-34.908 +N3958 G01 X+19.106 Y-34.693 +N3960 G01 X+19.053 Y-34.662 +N3962 G01 X+12.181 Y-28.448 +N3964 G01 X+5.472 Y-21.099 +N3966 G01 X+5.179 Y-20.49 +N3968 G01 X+5.125 Y-19.785 +N3970 G01 X+5.337 Y-19.129 +N3972 G01 X+5.368 Y-19.076 +N3974 G01 X+11.901 Y-11.911 +N3976 G01 X+18.929 Y-5.501 +N3978 G01 X+19.555 Y-5.202 +N3980 G01 X+20.209 Y-5.158 +N3982 G01 X+20.849 Y-5.367 +N3984 G01 X+20.902 Y-5.399 +N3986 G01 X+27.631 Y-11.578 +N3988 G01 X+34.471 Y-18.957 +N3990 G01 X+34.756 Y-19.531 +N3992 G01 X+34.809 Y-20.203 +N3994 G01 X+34.603 Y-20.827 +N3996 G01 X+34.571 Y-20.879 +N3998 G01 X+28.287 Y-27.669 +N4000 G01 X+21.015 Y-34.442 +N4002 G01 X+20.459 Y-34.723 +N4004 G01 X+19.803 Y-34.776 +N4006 G01 X+19.743 Y-34.768 +N4008 G01 X+19.195 Y-34.572 +N4010 G01 X+19.143 Y-34.541 +N4012 G01 X+12.565 Y-28.407 +N4014 G01 X+5.586 Y-20.987 +N4016 G01 X+5.31 Y-20.449 +N4018 G01 X+5.257 Y-19.809 +N4020 G01 X+5.265 Y-19.749 +N4022 G01 X+5.458 Y-19.217 +N4024 G01 X+5.489 Y-19.165 +N4026 G01 X+12.118 Y-12.118 +N4028 G01 X+18.993 Y-5.658 +N4030 G01 X+19.561 Y-5.344 +N4032 G01 X+19.621 Y-5.326 +N4034 G01 X+20.152 Y-5.285 +N4036 G01 X+20.213 Y-5.293 +N4038 G01 X+20.732 Y-5.472 +N4040 G01 X+20.787 Y-5.504 +N4042 G01 X+27.246 Y-11.613 +N4044 G01 X+34.358 Y-19.071 +N4046 G01 X+34.606 Y-19.513 +N4048 G01 X+34.684 Y-20.113 +N4050 G01 X+34.677 Y-20.178 +N4052 G01 X+34.498 Y-20.71 +N4054 G01 X+34.464 Y-20.766 +N4056 G01 X+28.427 Y-27.101 +N4058 G01 X+20.901 Y-34.329 +N4060 G01 X+20.475 Y-34.573 +N4062 G01 X+19.891 Y-34.651 +N4064 G01 X+19.825 Y-34.644 +N4066 G01 X+19.311 Y-34.468 +N4068 G01 X+19.256 Y-34.434 +N4070 G01 X+12.949 Y-28.376 +N4072 G01 X+5.699 Y-20.873 +N4074 G01 X+5.459 Y-20.463 +N4076 G01 X+5.441 Y-20.405 +N4078 G01 X+5.382 Y-19.895 +N4080 G01 X+5.389 Y-19.829 +N4082 G01 X+5.548 Y-19.358 +N4084 G01 X+5.582 Y-19.301 +N4086 G01 X+12.33 Y-12.33 +N4088 G01 X+19.11 Y-5.77 +N4090 G01 X+19.548 Y-5.494 +N4092 G01 X+19.61 Y-5.473 +N4094 G01 X+20.101 Y-5.415 +N4096 G01 X+20.167 Y-5.422 +N4098 G01 X+20.622 Y-5.578 +N4100 G01 X+20.678 Y-5.613 +N4102 G01 X+26.339 Y-11.124 +N4104 G01 X+34.245 Y-19.185 +N4106 G01 X+34.455 Y-19.511 +N4108 G01 X+34.556 Y-20.039 +N4110 G01 X+34.552 Y-20.106 +N4112 G01 X+34.419 Y-20.552 +N4114 G01 X+34.382 Y-20.613 +N4116 G01 X+29.632 Y-25.479 +N4118 G01 X+20.787 Y-34.217 +N4120 G01 X+20.475 Y-34.422 +N4122 G01 X+20.419 Y-34.444 +N4124 G01 X+19.964 Y-34.523 +N4126 G01 X+19.895 Y-34.518 +N4128 G01 X+19.466 Y-34.387 +N4130 G01 X+19.406 Y-34.353 +N4132 G01 X+18.131 Y-33.137 +N4134 G01 X+5.809 Y-20.756 +N4136 G01 X+5.644 Y-20.53 +N4138 G01 X+5.511 Y-20.024 +N4140 G01 X+5.513 Y-19.948 +N4142 G01 X+5.643 Y-19.488 +N4144 G01 X+5.681 Y-19.423 +N4146 G01 X+12.542 Y-12.542 +N4148 G01 X+19.248 Y-5.836 +N4150 G01 X+19.543 Y-5.629 +N4152 G01 X+19.601 Y-5.605 +N4154 G01 X+20.027 Y-5.527 +N4156 G01 X+20.099 Y-5.531 +N4158 G01 X+20.508 Y-5.659 +N4160 G01 X+20.569 Y-5.696 +N4162 G01 X+34.164 Y-19.248 +N4164 G01 X+34.371 Y-19.543 +N4166 G01 X+34.395 Y-19.601 +N4168 G01 X+34.473 Y-20.027 +N4170 G01 X+34.469 Y-20.099 +N4172 G01 X+34.341 Y-20.508 +N4174 G01 X+34.304 Y-20.569 +N4176 G01 X+20.752 Y-34.164 +N4178 G01 X+20.457 Y-34.371 +N4180 G01 X+20.399 Y-34.395 +N4182 G01 X+19.973 Y-34.473 +N4184 G01 X+19.901 Y-34.469 +N4186 G01 X+19.492 Y-34.341 +N4188 G01 X+19.431 Y-34.304 +N4190 G01 X+5.834 Y-20.751 +N4192 G01 X+5.656 Y-20.512 +N4194 G01 X+5.527 Y-20.036 +N4196 G01 Y-19.964 +N4198 G01 X+5.629 Y-19.552 +N4200 G01 X+5.668 Y-19.483 +N4202 G01 X+12.542 Y-12.542 +N4204 G03 X+12.521 Y-8.299 I-2.132 J+2.111 F16500 +N4206 G01 Z+3.683 +N4208 G00 Z+8.683 +N4210 G00 X-0.261 Y+1.962 Z+2.867 +N4212 G00 Z-2.133 +N4214 G01 X+0 Y+1.95 F16500 +N4216 G01 X+40.391 Y+1.904 F16500 +N4218 G01 X+40.451 Y+1.891 +N4220 G01 X+41.091 Y+1.609 +N4222 G01 X+41.624 Y+1.069 +N4224 G01 X+41.913 Y+0.359 +N4226 G01 X+41.949 Y+0.007 +N4228 G01 X+41.904 Y-40.391 +N4230 G01 X+41.891 Y-40.451 +N4232 G01 X+41.609 Y-41.091 +N4234 G01 X+41.069 Y-41.624 +N4236 G01 X+40.359 Y-41.913 +N4238 G01 X+40.007 Y-41.949 +N4240 G01 X-0.391 Y-41.904 +N4242 G01 X-0.451 Y-41.891 +N4244 G01 X-1.091 Y-41.609 +N4246 G01 X-1.624 Y-41.069 +N4248 G01 X-1.913 Y-40.359 +N4250 G01 X-1.949 Y-40.007 +N4252 G01 X-1.904 Y+0.391 +N4254 G01 X-1.891 Y+0.451 +N4256 G01 X-1.838 Y+0.57 +N4258 G01 X-1.807 Y+0.696 +N4260 G01 X-1.718 Y+0.896 +N4262 G01 X-1.397 Y+1.34 +N4264 G01 X-1.269 Y+1.463 +N4266 G01 X-0.992 Y+1.663 +N4268 G01 X-0.726 Y+1.795 +N4270 G01 X-0.502 Y+1.869 +N4272 G01 X+0.432 Y+1.935 +N4274 G01 X+40 Y+1.874 +N4276 G01 X+40.085 Y+1.872 +N4278 G01 X+40.623 Y+1.764 +N4280 G01 X+40.859 Y+1.663 +N4282 G01 X+41.404 Y+1.232 +N4284 G01 X+41.644 Y+0.891 +N4286 G01 X+41.805 Y+0.482 +N4288 G01 X+41.87 Y-0.432 +N4290 G01 X+41.872 Y-26.275 +N4292 G01 X+41.806 Y-40.084 +N4294 G01 X+41.752 Y-40.44 +N4296 G01 X+41.683 Y-40.659 +N4298 G01 X+41.566 Y-40.899 +N4300 G01 X+41.176 Y-41.367 +N4302 G01 X+40.863 Y-41.584 +N4304 G01 X+40.389 Y-41.759 +N4306 G01 X+38.457 Y-41.802 +N4308 G01 X+16.111 Y-41.853 +N4310 G01 X+1.296 Y-41.745 +N4312 G01 X-0.104 Y-41.739 +N4314 G01 X-0.61 Y-41.629 +N4316 G01 X-0.861 Y-41.513 +N4318 G01 X-1.221 Y-41.239 +N4320 G01 X-1.324 Y-41.13 +N4322 G01 X-1.494 Y-40.889 +N4324 G01 X-1.686 Y-40.416 +N4326 G01 X-1.738 Y-39.198 +N4328 G01 X-1.778 Y-28.4 +N4330 G01 X-1.831 Y-17.346 +N4332 G01 X-1.688 Y-6.539 +N4334 G01 X-1.674 Y+0.096 +N4336 G01 X-1.564 Y+0.6 +N4338 G01 X-1.489 Y+0.77 +N4340 G01 X-1.105 Y+1.256 +N4342 G01 X-0.863 Y+1.435 +N4344 G01 X-0.442 Y+1.613 +N4346 G01 X+0.432 Y+1.674 +N4348 G01 X+9.976 Y+1.709 +N4350 G01 X+21.543 Y+1.811 +N4352 G01 X+36.111 Y+1.623 +N4354 G01 X+40 Y+1.617 +N4356 G01 X+40.071 Y+1.615 +N4358 G01 X+40.535 Y+1.523 +N4360 G01 X+40.739 Y+1.436 +N4362 G01 X+41.209 Y+1.065 +N4364 G01 X+41.417 Y+0.771 +N4366 G01 X+41.556 Y+0.419 +N4368 G01 X+41.613 Y-0.556 +N4370 G01 X+41.644 Y-9.074 +N4372 G01 X+41.788 Y-20.802 +N4374 G01 X+41.563 Y-35.741 +N4376 G01 X+41.554 Y-40.07 +N4378 G01 X+41.508 Y-40.377 +N4380 G01 X+41.448 Y-40.566 +N4382 G01 X+41.349 Y-40.771 +N4384 G01 X+41.019 Y-41.168 +N4386 G01 X+40.459 Y-41.478 +N4388 G01 X+40.4 Y-41.495 +N4390 G01 X+39.691 Y-41.553 +N4392 G01 X+31.42 Y-41.582 +N4394 G01 X+19.691 Y-41.762 +N4396 G01 X+4.63 Y-41.502 +N4398 G01 X-0.087 Y-41.492 +N4400 G01 X-0.521 Y-41.398 +N4402 G01 X-0.737 Y-41.299 +N4404 G01 X-1.046 Y-41.064 +N4406 G01 X-1.135 Y-40.97 +N4408 G01 X-1.281 Y-40.765 +N4410 G01 X-1.444 Y-40.361 +N4412 G01 X-1.49 Y-38.457 +N4414 G01 X-1.521 Y-31.667 +N4416 G01 X-1.736 Y-19.938 +N4418 G01 X-1.546 Y-10.476 +N4420 G01 X-1.444 Y-6.539 +N4422 G01 X-1.378 Y+0.37 +N4424 G01 X-1.274 Y+0.652 +N4426 G01 X-0.946 Y+1.071 +N4428 G01 X-0.74 Y+1.225 +N4430 G01 X-0.383 Y+1.377 +N4432 G01 X+0.679 Y+1.431 +N4434 G01 X+8.226 Y+1.463 +N4436 G01 X+19.938 Y+1.709 +N4438 G01 X+27.4 Y+1.557 +N4440 G01 X+34.877 Y+1.381 +N4442 G01 X+40 Y+1.374 +N4444 G01 X+40.085 Y+1.369 +N4446 G01 X+40.452 Y+1.294 +N4448 G01 X+40.625 Y+1.221 +N4450 G01 X+41.024 Y+0.907 +N4452 G01 X+41.202 Y+0.657 +N4454 G01 X+41.32 Y+0.361 +N4456 G01 X+41.37 Y-0.802 +N4458 G01 X+41.397 Y-7.84 +N4460 G01 X+41.682 Y-19.568 +N4462 G01 X+41.566 Y-25.741 +N4464 G01 X+41.321 Y-34.63 +N4466 G01 X+41.311 Y-40.053 +N4468 G01 X+41.223 Y-40.468 +N4470 G01 X+41.139 Y-40.648 +N4472 G01 X+40.864 Y-40.979 +N4474 G01 X+40.815 Y-41.017 +N4476 G01 X+40.296 Y-41.268 +N4478 G01 X+40.232 Y-41.283 +N4480 G01 X+32.16 Y-41.34 +N4482 G01 X+20.679 Y-41.654 +N4484 G01 X+15 Y-41.553 +N4486 G01 X+5.494 Y-41.26 +N4488 G01 X-0.254 Y-41.219 +N4490 G01 X-0.609 Y-41.089 +N4492 G01 X-0.869 Y-40.896 +N4494 G01 X-1.068 Y-40.645 +N4496 G01 X-1.207 Y-40.308 +N4498 G01 X-1.242 Y-35 +N4500 G01 X-1.308 Y-31.42 +N4502 G01 X-1.627 Y-20.802 +N4504 G01 X-1.535 Y-15.494 +N4506 G01 X-1.2 Y-6.539 +N4508 G01 X-1.143 Y+0.302 +N4510 G01 X-1.059 Y+0.538 +N4512 G01 X-0.791 Y+0.881 +N4514 G01 X-0.455 Y+1.095 +N4516 G01 X-0.318 Y+1.144 +N4518 G01 X+1.173 Y+1.186 +N4520 G01 X+7.476 Y+1.211 +N4522 G01 X+19.074 Y+1.597 +N4524 G01 X+24.151 Y+1.513 +N4526 G01 X+34.383 Y+1.133 +N4528 G01 X+39.987 Y+1.125 +N4530 G01 X+40.365 Y+1.06 +N4532 G01 X+40.508 Y+1.001 +N4534 G01 X+40.828 Y+0.751 +N4536 G01 X+40.867 Y+0.703 +N4538 G01 X+41.072 Y+0.308 +N4540 G01 X+41.088 Y+0.241 +N4542 G01 X+41.119 Y-2.284 +N4544 G01 X+41.153 Y-7.593 +N4546 G01 X+41.568 Y-19.074 +N4548 G01 X+41.489 Y-23.889 +N4550 G01 X+41.068 Y-34.259 +N4552 G01 X+41.057 Y-40.039 +N4554 G01 X+40.987 Y-40.374 +N4556 G01 X+40.92 Y-40.519 +N4558 G01 X+40.701 Y-40.785 +N4560 G01 X+40.652 Y-40.823 +N4562 G01 X+40.245 Y-41.02 +N4564 G01 X+40.18 Y-41.035 +N4566 G01 X+32.407 Y-41.091 +N4568 G01 X+21.173 Y-41.536 +N4570 G01 X+16.481 Y-41.47 +N4572 G01 X+5.741 Y-41.002 +N4574 G01 X-0.254 Y-40.952 +N4576 G01 X-0.482 Y-40.865 +N4578 G01 X-0.686 Y-40.713 +N4580 G01 X-0.845 Y-40.515 +N4582 G01 X-0.956 Y-40.249 +N4584 G01 X-1.018 Y-32.654 +N4586 G01 X-1.505 Y-21.296 +N4588 G01 X-1.451 Y-16.852 +N4590 G01 X-0.938 Y-6.539 +N4592 G01 X-0.891 Y+0.229 +N4594 G01 X-0.827 Y+0.415 +N4596 G01 X-0.623 Y+0.679 +N4598 G01 X-0.576 Y+0.718 +N4600 G01 X-0.264 Y+0.88 +N4602 G01 X-0.196 Y+0.897 +N4604 G01 X+7.476 Y+0.961 +N4606 G01 X+18.58 Y+1.473 +N4608 G01 X+22.901 Y+1.428 +N4610 G01 X+34.136 Y+0.871 +N4612 G01 X+39.982 Y+0.862 +N4614 G01 X+40.372 Y+0.769 +N4616 G01 X+40.429 Y+0.741 +N4618 G01 X+40.629 Y+0.58 +N4620 G01 X+40.668 Y+0.532 +N4622 G01 X+40.818 Y+0.244 +N4624 G01 X+40.834 Y+0.176 +N4626 G01 X+40.892 Y-7.346 +N4628 G01 X+41.441 Y-18.457 +N4630 G01 X+41.406 Y-22.654 +N4632 G01 X+40.806 Y-34.136 +N4634 G01 X+40.771 Y-40.17 +N4636 G01 X+40.695 Y-40.382 +N4638 G01 X+40.533 Y-40.585 +N4640 G01 X+40.483 Y-40.623 +N4642 G01 X+40.192 Y-40.764 +N4644 G01 X+40.127 Y-40.779 +N4646 G01 X+32.654 Y-40.829 +N4648 G01 X+21.543 Y-41.411 +N4650 G01 X+17.469 Y-41.379 +N4652 G01 X+5.864 Y-40.74 +N4654 G01 X-0.183 Y-40.696 +N4656 G01 X-0.26 Y-40.673 +N4658 G01 X-0.482 Y-40.537 +N4660 G01 X-0.535 Y-40.482 +N4662 G01 X-0.692 Y-40.198 +N4664 G01 X-0.711 Y-40.126 +N4666 G01 X-0.766 Y-32.654 +N4668 G01 X-1.379 Y-21.667 +N4670 G01 X-1.357 Y-17.716 +N4672 G01 X-0.676 Y-6.539 +N4674 G01 X-0.628 Y+0.174 +N4676 G01 X-0.602 Y+0.258 +N4678 G01 X-0.454 Y+0.473 +N4680 G01 X-0.4 Y+0.522 +N4682 G01 X-0.198 Y+0.626 +N4684 G01 X-0.13 Y+0.643 +N4686 G01 X+7.226 Y+0.696 +N4688 G01 X+18.333 Y+1.349 +N4690 G01 X+22.407 Y+1.321 +N4692 G01 X+34.012 Y+0.609 +N4694 G01 X+39.982 Y+0.6 +N4696 G01 X+40.249 Y+0.537 +N4698 G01 X+40.306 Y+0.509 +N4700 G01 X+40.43 Y+0.41 +N4702 G01 X+40.469 Y+0.362 +N4704 G01 X+40.564 Y+0.179 +N4706 G01 X+40.581 Y+0.111 +N4708 G01 X+40.624 Y-7.099 +N4710 G01 X+41.315 Y-18.21 +N4712 G01 X+41.304 Y-22.037 +N4714 G01 X+40.544 Y-34.012 +N4716 G01 X+40.496 Y-40.15 +N4718 G01 X+40.468 Y-40.236 +N4720 G01 X+40.37 Y-40.371 +N4722 G01 X+40.3 Y-40.424 +N4724 G01 X+40.025 Y-40.524 +N4726 G01 X+32.901 Y-40.561 +N4728 G01 X+21.79 Y-41.285 +N4730 G01 X+17.963 Y-41.274 +N4732 G01 X+5.988 Y-40.478 +N4734 G01 X-0.124 Y-40.437 +N4736 G01 X-0.205 Y-40.413 +N4738 G01 X-0.294 Y-40.355 +N4740 G01 X-0.349 Y-40.291 +N4742 G01 X-0.453 Y-40.062 +N4744 G01 X-0.466 Y-40 +N4746 G01 X-0.497 Y-32.901 +N4748 G01 X-1.255 Y-21.79 +N4750 G01 X-1.243 Y-17.963 +N4752 G01 X-0.447 Y-6.976 +N4754 G01 X-0.413 Y-6.539 +N4756 G01 X-0.355 Y+0.117 +N4758 G01 X-0.298 Y+0.233 +N4760 G01 X-0.141 Y+0.357 +N4762 G01 X-0.049 Y+0.389 +N4764 G01 X+6.976 Y+0.423 +N4766 G01 X+18.21 Y+1.224 +N4768 G01 X+21.79 Y+1.221 +N4770 G01 X+27.4 Y+0.826 +N4772 G01 X+33.889 Y+0.342 +N4774 G01 X+39.967 Y+0.332 +N4776 G01 X+40.03 Y+0.318 +N4778 G01 X+40.189 Y+0.244 +N4780 G01 X+40.271 Y+0.15 +N4782 G01 X+40.325 Y-0.042 +N4784 G01 X+40.363 Y-7.099 +N4786 G01 X+41.191 Y-18.21 +N4788 G01 X+41.193 Y-21.667 +N4790 G01 X+40.872 Y-26.235 +N4792 G01 X+40.272 Y-33.889 +N4794 G01 X+40.226 Y-40.046 +N4796 G01 X+40.15 Y-40.175 +N4798 G01 X+40.034 Y-40.241 +N4800 G01 X+39.961 Y-40.261 +N4802 G01 X+32.901 Y-40.295 +N4804 G01 X+22.037 Y-41.149 +N4806 G01 X+18.58 Y-41.169 +N4808 G01 X+14.753 Y-40.912 +N4810 G01 X+6.111 Y-40.202 +N4812 G01 X-0.032 Y-40.147 +N4814 G01 X-0.164 Y-40.065 +N4816 G01 X-0.191 Y-39.978 +N4818 G01 X-0.227 Y-32.901 +N4820 G01 X-1.117 Y-22.037 +N4822 G01 X-1.141 Y-18.704 +N4824 G01 X-0.891 Y-15 +N4826 G01 X-0.133 Y-6.546 +N4828 G01 X-0.123 Y-0.062 +N4830 G01 X-0.079 Y+0.044 +N4832 G01 X+0.062 Y+0.124 +N4834 G01 X+6.976 Y+0.153 +N4836 G01 X+17.963 Y+1.088 +N4838 G01 X+21.296 Y+1.114 +N4840 G01 X+24.901 Y+0.866 +N4842 G01 X+33.889 Y+0.075 +N4844 G01 X+39.876 Y+0.067 +N4846 G01 X+39.982 Y+0.023 +N4848 G01 X+40.067 Y-0.123 +N4850 G01 X+40.109 Y-7.099 +N4852 G01 X+41.056 Y-17.84 +N4854 G01 X+41.092 Y-21.173 +N4856 G01 X+40.87 Y-24.506 +N4858 G01 X+40.02 Y-33.882 +N4860 G01 X+40 Y-39.862 +N4862 G02 X+39.851 Y-40.012 I-0.15 J+0 +N4864 G01 X+32.901 Y-40.054 +N4866 G01 X+22.16 Y-41.03 +N4868 G01 X+18.827 Y-41.067 +N4870 G01 X+15.494 Y-40.839 +N4872 G01 X+6.118 Y-39.964 +N4874 G01 X+0.194 Y-39.939 +N4876 G02 X+0.044 Y-39.79 I+0 J+0.15 +N4878 G01 X+0.001 Y-32.901 +N4880 G01 X-1.003 Y-22.16 +N4882 G01 X-1.042 Y-18.827 +N4884 G01 X-0.807 Y-15.494 +N4886 G01 X+0.092 Y-6.546 +N4888 G01 X+0.101 Y-0.25 +N4890 G02 X+0.25 Y-0.1 I+0.15 J+0 +N4892 G01 X+6.97 Y-0.066 +N4894 G01 X+17.84 Y+0.978 +N4896 G01 X+20.926 Y+1.025 +N4898 G01 X+24.151 Y+0.814 +N4900 G01 X+33.882 Y-0.144 +N4902 G01 X+39.698 Y-0.152 +N4904 G02 X+39.848 Y-0.302 I+0 J-0.15 +N4906 G01 X+39.871 Y-6.844 +N4908 G01 X+40.954 Y-17.84 +N4910 G01 X+41.002 Y-20.926 +N4912 G01 X+40.8 Y-24.012 +N4914 G01 X+39.805 Y-33.758 +N4916 G01 X+39.796 Y-39.629 +N4918 G01 X+39.752 Y-39.735 +N4920 G01 X+39.63 Y-39.796 +N4922 G01 X+33.156 Y-39.821 +N4924 G01 X+22.16 Y-40.93 +N4926 G01 X+19.074 Y-40.979 +N4928 G01 X+15.988 Y-40.772 +N4930 G01 X+6.242 Y-39.753 +N4932 G01 X+0.405 Y-39.745 +N4934 G02 X+0.255 Y-39.595 I+0 J+0.15 +N4936 G01 X+0.23 Y-33.156 +N4938 G01 X-0.906 Y-22.16 +N4940 G01 X-0.959 Y-19.198 +N4942 G01 X-0.758 Y-16.111 +N4944 G01 X+0.298 Y-6.547 +N4946 G01 X+0.308 Y-0.494 +N4948 G01 X+0.352 Y-0.388 +N4950 G01 X+0.494 Y-0.308 +N4952 G01 X+6.969 Y-0.27 +N4954 G01 X+17.716 Y+0.871 +N4956 G01 X+20.679 Y+0.936 +N4958 G01 X+23.642 Y+0.753 +N4960 G01 X+33.757 Y-0.359 +N4962 G01 X+39.482 Y-0.369 +N4964 G02 X+39.631 Y-0.518 I-0.001 J-0.15 +N4966 G01 X+39.657 Y-6.844 +N4968 G01 X+40.85 Y-17.833 +N4970 G01 X+40.907 Y-20.796 +N4972 G01 X+40.695 Y-23.889 +N4974 G01 X+39.58 Y-33.757 +N4976 G01 X+39.57 Y-39.382 +N4978 G01 X+39.526 Y-39.488 +N4980 G01 X+39.383 Y-39.57 +N4982 G01 X+33.156 Y-39.597 +N4984 G01 X+22.167 Y-40.821 +N4986 G01 X+19.204 Y-40.88 +N4988 G01 X+16.111 Y-40.662 +N4990 G01 X+6.243 Y-39.519 +N4992 G01 X+0.64 Y-39.509 +N4994 G02 X+0.49 Y-39.36 I+0 J+0.15 +N4996 G01 X+0.463 Y-33.157 +N4998 G01 X-0.777 Y-22.407 +N5000 G01 X-0.86 Y-19.575 +N5002 G01 X-0.685 Y-16.605 +N5004 G01 X+0.541 Y-6.548 +N5006 G01 X+0.551 Y-0.741 +N5008 G01 X+0.595 Y-0.635 +N5010 G01 X+0.741 Y-0.551 +N5012 G01 X+6.968 Y-0.508 +N5014 G01 X+17.586 Y+0.747 +N5016 G01 X+20.425 Y+0.833 +N5018 G01 X+23.395 Y+0.654 +N5020 G01 X+33.757 Y-0.603 +N5022 G01 X+39.238 Y-0.612 +N5024 G02 X+39.388 Y-0.762 I+0 J-0.15 +N5026 G01 X+39.386 Y-6.592 +N5028 G01 X+40.718 Y-17.586 +N5030 G01 X+40.806 Y-20.425 +N5032 G01 X+40.623 Y-23.395 +N5034 G01 X+39.336 Y-33.756 +N5036 G01 X+39.321 Y-39.177 +N5038 G02 X+39.171 Y-39.327 I-0.15 J+0 +N5040 G01 X+33.408 Y-39.326 +N5042 G01 X+22.414 Y-40.689 +N5044 G01 X+19.575 Y-40.779 +N5046 G01 X+16.852 Y-40.618 +N5048 G01 X+6.244 Y-39.276 +N5050 G01 X+0.884 Y-39.266 +N5052 G02 X+0.734 Y-39.116 I+0 J+0.15 +N5054 G01 X+0.735 Y-33.408 +N5056 G01 X-0.66 Y-22.414 +N5058 G01 X-0.754 Y-19.698 +N5060 G01 X-0.601 Y-16.975 +N5062 G01 X+0.785 Y-6.549 +N5064 G01 X+0.802 Y-0.944 +N5066 G02 X+0.952 Y-0.794 I+0.15 J+0 +N5068 G01 X+6.719 Y-0.778 +N5070 G01 X+17.586 Y+0.631 +N5072 G01 X+20.302 Y+0.727 +N5074 G01 X+23.025 Y+0.571 +N5076 G01 X+33.756 Y-0.846 +N5078 G01 X+38.995 Y-0.856 +N5080 G02 X+39.144 Y-1.006 I-0.001 J-0.15 +N5082 G01 Y-6.592 +N5084 G01 X+40.602 Y-17.585 +N5086 G01 X+40.7 Y-20.302 +N5088 G01 X+40.54 Y-23.025 +N5090 G01 X+39.093 Y-33.756 +N5092 G01 X+39.075 Y-38.934 +N5094 G02 X+38.925 Y-39.083 I-0.15 J+0.001 +N5096 G01 X+33.409 +N5098 G01 X+22.538 Y-40.562 +N5100 G01 X+19.699 Y-40.673 +N5102 G01 X+16.975 Y-40.51 +N5104 G01 X+6.245 Y-39.032 +N5106 G01 X+1.127 Y-39.023 +N5108 G02 X+0.978 Y-38.873 I+0.001 J+0.15 +N5110 G01 X+0.977 Y-33.409 +N5112 G01 X-0.533 Y-22.538 +N5114 G01 X-0.648 Y-19.945 +N5116 G01 X-0.519 Y-17.353 +N5118 G01 X+1.028 Y-6.549 +N5120 G01 X+1.049 Y-1.187 +N5122 G02 X+1.198 Y-1.038 I+0.15 J-0.001 +N5124 G01 X+6.718 Y-1.019 +N5126 G01 X+17.462 Y+0.504 +N5128 G01 X+20.055 Y+0.622 +N5130 G01 X+22.648 Y+0.49 +N5132 G01 X+33.755 Y-1.09 +N5134 G01 X+38.751 Y-1.099 +N5136 G02 X+38.901 Y-1.249 I+0 J-0.15 +N5138 G01 X+38.902 Y-6.591 +N5140 G01 X+40.475 Y-17.462 +N5142 G01 X+40.595 Y-20.054 +N5144 G01 X+40.46 Y-22.647 +N5146 G01 X+38.85 Y-33.755 +N5148 G01 X+38.828 Y-38.691 +N5150 G02 X+38.678 Y-38.84 I-0.15 J+0.001 +N5152 G01 X+33.409 Y-38.841 +N5154 G01 X+22.538 Y-40.446 +N5156 G01 X+19.946 Y-40.568 +N5158 G01 X+17.353 Y-40.431 +N5160 G01 X+6.245 Y-38.789 +N5162 G01 X+1.371 Y-38.779 +N5164 G02 X+1.221 Y-38.629 I+0 J+0.15 +N5166 G01 X+1.22 Y-33.41 +N5168 G01 X-0.416 Y-22.538 +N5170 G01 X-0.541 Y-19.946 +N5172 G01 X-0.414 Y-17.476 +N5174 G01 X+0.372 Y-12.225 +N5176 G01 X+1.271 Y-6.55 +N5178 G01 X+1.296 Y-1.43 +N5180 G02 X+1.445 Y-1.281 I+0.15 J-0.001 +N5182 G01 X+6.717 Y-1.26 +N5184 G01 X+17.462 Y+0.387 +N5186 G01 X+19.931 Y+0.515 +N5188 G01 X+22.4 Y+0.397 +N5190 G01 X+26.15 Y-0.155 +N5192 G01 X+33.754 Y-1.333 +N5194 G01 X+38.508 Y-1.342 +N5196 G02 X+38.658 Y-1.492 I+0 J-0.15 +N5198 G01 X+38.659 Y-6.59 +N5200 G01 X+40.358 Y-17.462 +N5202 G01 X+40.488 Y-19.931 +N5204 G01 X+40.368 Y-22.4 +N5206 G01 X+39.833 Y-25.988 +N5208 G01 X+38.606 Y-33.754 +N5210 G01 X+38.581 Y-38.448 +N5212 G02 X+38.431 Y-38.597 I-0.15 J+0.001 +N5214 G01 X+33.41 Y-38.599 +N5216 G01 X+22.662 Y-40.316 +N5218 G01 X+20.07 Y-40.461 +N5220 G01 X+17.6 Y-40.339 +N5222 G01 X+14.012 Y-39.794 +N5224 G01 X+6.246 Y-38.545 +N5226 G01 X+1.614 Y-38.536 +N5228 G02 X+1.464 Y-38.386 I+0 J+0.15 +N5230 G01 X+1.462 Y-33.411 +N5232 G01 X-0.286 Y-22.662 +N5234 G01 X-0.434 Y-20.07 +N5236 G01 X-0.31 Y-17.6 +N5238 G01 X+0.203 Y-14.259 +N5240 G01 X+1.515 Y-6.551 +N5242 G01 X+1.542 Y-1.674 +N5244 G02 X+1.693 Y-1.525 I+0.15 J-0.001 +N5246 G01 X+6.527 Y-1.533 +N5248 G01 X+17.338 Y+0.257 +N5250 G01 X+19.93 Y+0.408 +N5252 G01 X+22.4 Y+0.282 +N5254 G01 X+25.65 Y-0.225 +N5256 G01 X+33.753 Y-1.576 +N5258 G01 X+38.265 Y-1.586 +N5260 G02 X+38.414 Y-1.735 I-0.001 J-0.149 +N5262 G01 X+38.417 Y-6.589 +N5264 G01 X+40.228 Y-17.338 +N5266 G01 X+40.381 Y-19.93 +N5268 G01 X+40.265 Y-22.276 +N5270 G01 X+39.808 Y-25.247 +N5272 G01 X+38.363 Y-33.63 +N5274 G01 X+38.334 Y-38.204 +N5276 G02 X+38.184 Y-38.354 I-0.15 J+0 +N5278 G01 X+33.411 Y-38.356 +N5280 G01 X+22.662 Y-40.198 +N5282 G01 X+20.316 Y-40.352 +N5284 G01 X+17.971 Y-40.261 +N5286 G01 X+15.494 Y-39.904 +N5288 G01 X+6.371 Y-38.302 +N5290 G01 X+1.857 Y-38.293 +N5292 G02 X+1.707 Y-38.143 I+0 J+0.15 +N5294 G01 X+1.704 Y-33.411 +N5296 G01 X-0.169 Y-22.662 +N5298 G01 X-0.325 Y-20.317 +N5300 G01 X-0.232 Y-17.971 +N5302 G01 X+0.131 Y-15.494 +N5304 G01 X+1.758 Y-6.552 +N5306 G01 X+1.789 Y-1.917 +N5308 G02 X+1.939 Y-1.768 I+0.15 J-0.001 +N5310 G01 X+6.526 Y-1.776 +N5312 G01 X+17.338 Y+0.139 +N5314 G01 X+19.683 Y+0.299 +N5316 G01 X+22.029 Y+0.204 +N5318 G01 X+24.651 Y-0.192 +N5320 G01 X+33.629 Y-1.819 +N5322 G01 X+38.021 Y-1.829 +N5324 G02 X+38.171 Y-1.979 I+0 J-0.15 +N5326 G01 X+38.175 Y-6.588 +N5328 G01 X+40.11 Y-17.338 +N5330 G01 X+40.272 Y-19.683 +N5332 G01 X+40.176 Y-22.029 +N5334 G01 X+39.801 Y-24.506 +N5336 G01 X+38.12 Y-33.629 +N5338 G01 X+38.087 Y-37.961 +N5340 G02 X+37.938 Y-38.11 I-0.15 J+0.001 +N5342 G01 X+33.412 Y-38.114 +N5344 G01 X+22.663 Y-40.08 +N5346 G01 X+20.317 Y-40.245 +N5348 G01 X+17.971 Y-40.147 +N5350 G01 X+15.494 Y-39.767 +N5352 G01 X+6.372 Y-38.059 +N5354 G01 X+2.1 Y-38.049 +N5356 G02 X+1.951 Y-37.9 I+0.001 J+0.15 +N5358 G01 X+1.947 Y-33.412 +N5360 G01 X-0.051 Y-22.663 +N5362 G01 X-0.218 Y-20.317 +N5364 G01 X-0.119 Y-17.971 +N5366 G01 X+0.268 Y-15.494 +N5368 G01 X+2.001 Y-6.553 +N5370 G01 X+2.036 Y-2.16 +N5372 G02 X+2.186 Y-2.011 I+0.15 J-0.001 +N5374 G01 X+6.525 Y-2.017 +N5376 G01 X+17.337 Y+0.023 +N5378 G01 X+19.56 Y+0.191 +N5380 G01 X+21.782 Y+0.116 +N5382 G01 X+24.151 Y-0.23 +N5384 G01 X+33.628 Y-2.058 +N5386 G01 X+37.778 Y-2.067 +N5388 G01 X+37.883 Y-2.111 +N5390 G01 X+37.933 Y-2.223 +N5392 G01 X+37.938 Y-6.587 +N5394 G01 X+39.996 Y-17.337 +N5396 G01 X+40.166 Y-19.56 +N5398 G01 X+40.09 Y-21.782 +N5400 G01 X+39.766 Y-24.012 +N5402 G01 X+37.886 Y-33.628 +N5404 G01 X+37.877 Y-37.727 +N5406 G02 X+37.727 Y-37.877 I-0.15 J+0 +N5408 G01 X+33.413 Y-37.882 +N5410 G01 X+22.663 Y-39.968 +N5412 G01 X+20.44 Y-40.141 +N5414 G01 X+18.218 Y-40.064 +N5416 G01 X+15.988 Y-39.736 +N5418 G01 X+6.372 Y-37.83 +N5420 G01 X+2.346 Y-37.821 +N5422 G01 X+2.24 Y-37.777 +N5424 G01 X+2.179 Y-37.654 +N5426 G01 X+2.174 Y-33.413 +N5428 G01 X+0.059 Y-22.663 +N5430 G01 X-0.116 Y-20.441 +N5432 G01 X-0.038 Y-18.218 +N5434 G01 X+0.294 Y-15.988 +N5436 G01 X+2.226 Y-6.554 +N5438 G01 X+2.235 Y-2.385 +N5440 G02 X+2.385 Y-2.235 I+0.15 J+0 +N5442 G01 X+6.524 Y-2.241 +N5444 G01 X+17.337 Y-0.085 +N5446 G01 X+19.559 Y+0.093 +N5448 G01 X+21.781 Y+0.014 +N5450 G01 X+24.151 Y-0.351 +N5452 G01 X+33.627 Y-2.278 +N5454 G01 X+37.531 Y-2.286 +N5456 G01 X+37.636 Y-2.33 +N5458 G01 X+37.714 Y-2.469 +N5460 G01 X+37.721 Y-6.587 +N5462 G01 X+39.89 Y-17.337 +N5464 G01 X+40.07 Y-19.559 +N5466 G01 X+39.99 Y-21.781 +N5468 G01 X+39.65 Y-24.012 +N5470 G01 X+37.671 Y-33.627 +N5472 G01 X+37.662 Y-37.513 +N5474 G02 X+37.513 Y-37.662 I-0.15 J+0.001 +N5476 G01 X+33.413 Y-37.669 +N5478 G01 X+22.663 Y-39.866 +N5480 G01 X+20.441 Y-40.047 +N5482 G01 X+18.219 Y-39.967 +N5484 G01 X+15.988 Y-39.622 +N5486 G01 X+6.373 Y-37.619 +N5488 G01 X+2.538 Y-37.593 +N5490 G02 X+2.389 Y-37.444 I+0.001 J+0.15 +N5492 G01 X+2.382 Y-33.414 +N5494 G01 X+0.159 Y-22.663 +N5496 G01 X-0.024 Y-20.441 +N5498 G01 X+0.057 Y-18.219 +N5500 G01 X+0.406 Y-15.988 +N5502 G01 X+2.432 Y-6.555 +N5504 G01 X+2.441 Y-2.593 +N5506 G01 X+2.485 Y-2.487 +N5508 G01 X+2.593 Y-2.441 +N5510 G01 X+6.523 Y-2.446 +N5512 G01 X+17.337 Y-0.184 +N5514 G01 X+19.559 Y+0.002 +N5516 G01 X+21.781 Y-0.081 +N5518 G01 X+24.151 Y-0.464 +N5520 G01 X+33.627 Y-2.484 +N5522 G01 X+37.358 Y-2.492 +N5524 G02 X+37.508 Y-2.642 I+0 J-0.15 +N5526 G01 X+37.515 Y-6.586 +N5528 G01 X+39.791 Y-17.337 +N5530 G01 X+39.976 Y-19.436 +N5532 G01 X+39.918 Y-21.535 +N5534 G01 X+39.617 Y-23.642 +N5536 G01 X+37.465 Y-33.626 +N5538 G01 X+37.456 Y-37.284 +N5540 G01 X+37.412 Y-37.39 +N5542 G01 X+37.284 Y-37.456 +N5544 G01 X+33.414 Y-37.464 +N5546 G01 X+22.663 Y-39.766 +N5548 G01 X+20.564 Y-39.953 +N5550 G01 X+18.465 Y-39.895 +N5552 G01 X+16.358 Y-39.59 +N5554 G01 X+6.374 Y-37.413 +N5556 G01 X+2.745 Y-37.405 +N5558 G02 X+2.595 Y-37.255 I+0 J+0.15 +N5560 G01 X+2.587 Y-33.414 +N5562 G01 X+0.259 Y-22.663 +N5564 G01 X+0.07 Y-20.564 +N5566 G01 X+0.129 Y-18.466 +N5568 G01 X+0.437 Y-16.358 +N5570 G01 X+2.638 Y-6.555 +N5572 G01 X+2.654 Y-2.797 +N5574 G02 X+2.804 Y-2.648 I+0.15 J-0.001 +N5576 G01 X+6.523 Y-2.654 +N5578 G01 X+17.336 Y-0.286 +N5580 G01 X+19.436 Y-0.095 +N5582 G01 X+21.534 Y-0.155 +N5584 G01 X+23.642 Y-0.467 +N5586 G01 X+33.626 Y-2.699 +N5588 G01 X+37.142 Y-2.708 +N5590 G02 X+37.292 Y-2.858 I+0 J-0.15 +N5592 G01 X+37.299 Y-6.585 +N5594 G01 X+39.684 Y-17.336 +N5596 G01 X+39.878 Y-19.435 +N5598 G01 X+39.818 Y-21.534 +N5600 G01 X+39.501 Y-23.642 +N5602 G01 X+37.24 Y-33.626 +N5604 G01 X+37.223 Y-37.082 +N5606 G02 X+37.073 Y-37.231 I-0.15 J+0.001 +N5608 G01 X+33.415 Y-37.238 +N5610 G01 X+22.664 Y-39.655 +N5612 G01 X+20.565 Y-39.851 +N5614 G01 X+18.466 Y-39.79 +N5616 G01 X+16.358 Y-39.469 +N5618 G01 X+6.374 Y-37.18 +N5620 G01 X+2.98 Y-37.17 +N5622 G02 X+2.83 Y-37.02 I+0 J+0.15 +N5624 G01 X+2.822 Y-33.415 +N5626 G01 X+0.375 Y-22.664 +N5628 G01 X+0.176 Y-20.565 +N5630 G01 X+0.238 Y-18.466 +N5632 G01 X+0.562 Y-16.358 +N5634 G01 X+2.881 Y-6.556 +N5636 G01 X+2.901 Y-3.04 +N5638 G02 X+3.051 Y-2.891 I+0.15 J-0.001 +N5640 G01 X+6.522 Y-2.897 +N5642 G01 X+17.336 Y-0.404 +N5644 G01 X+19.435 Y-0.203 +N5646 G01 X+21.534 Y-0.265 +N5648 G01 X+23.642 Y-0.594 +N5650 G01 X+33.625 Y-2.942 +N5652 G01 X+36.899 Y-2.952 +N5654 G02 X+37.048 Y-3.101 I-0.001 J-0.15 +N5656 G01 X+37.057 Y-6.584 +N5658 G01 X+39.567 Y-17.336 +N5660 G01 X+39.771 Y-19.435 +N5662 G01 X+39.707 Y-21.534 +N5664 G01 X+39.374 Y-23.642 +N5666 G01 X+36.997 Y-33.625 +N5668 G01 X+36.976 Y-36.839 +N5670 G02 X+36.826 Y-36.988 I-0.15 J+0.001 +N5672 G01 X+33.416 Y-36.996 +N5674 G01 X+22.664 Y-39.537 +N5676 G01 X+20.565 Y-39.744 +N5678 G01 X+18.59 Y-39.691 +N5680 G01 X+16.481 Y-39.37 +N5682 G01 X+6.375 Y-36.936 +N5684 G01 X+3.223 Y-36.927 +N5686 G02 X+3.073 Y-36.777 I+0 J+0.15 +N5688 G01 X+3.064 Y-33.416 +N5690 G01 X+0.492 Y-22.664 +N5692 G01 X+0.288 Y-20.688 +N5694 G01 X+0.326 Y-18.713 +N5696 G01 X+0.634 Y-16.612 +N5698 G01 X+3.124 Y-6.556 +N5700 G01 X+3.147 Y-3.283 +N5702 G02 X+3.298 Y-3.134 I+0.15 J-0.001 +N5704 G01 X+6.521 Y-3.14 +N5706 G01 X+17.09 Y-0.564 +N5708 G01 X+19.188 Y-0.32 +N5710 G01 X+21.164 Y-0.344 +N5712 G01 X+23.14 Y-0.614 +N5714 G01 X+33.624 Y-3.185 +N5716 G01 X+36.655 Y-3.195 +N5718 G02 X+36.805 Y-3.344 I+0 J-0.15 +N5720 G01 X+36.815 Y-6.584 +N5722 G01 X+39.406 Y-17.09 +N5724 G01 X+39.646 Y-19.064 +N5726 G01 X+39.629 Y-21.163 +N5728 G01 X+39.356 Y-23.14 +N5730 G01 X+36.754 Y-33.625 +N5732 G01 X+36.729 Y-36.596 +N5734 G02 X+36.58 Y-36.745 I-0.15 J+0.001 +N5736 G01 X+33.417 Y-36.754 +N5738 G01 X+22.91 Y-39.376 +N5740 G01 X+20.936 Y-39.619 +N5742 G01 X+18.837 Y-39.601 +N5744 G01 X+16.86 Y-39.325 +N5746 G01 X+6.5 Y-36.693 +N5748 G01 X+3.466 Y-36.683 +N5750 G02 X+3.317 Y-36.534 I+0.001 J+0.15 +N5752 G01 X+3.307 Y-33.417 +N5754 G01 X+0.654 Y-22.91 +N5756 G01 X+0.409 Y-20.936 +N5758 G01 X+0.426 Y-18.837 +N5760 G01 X+0.705 Y-16.86 +N5762 G01 X+3.367 Y-6.557 +N5764 G01 X+3.394 Y-3.527 +N5766 G02 X+3.544 Y-3.378 I+0.15 J-0.001 +N5768 G01 X+6.52 Y-3.383 +N5770 G01 X+17.09 Y-0.684 +N5772 G01 X+19.064 Y-0.436 +N5774 G01 X+21.163 Y-0.453 +N5776 G01 X+23.14 Y-0.735 +N5778 G01 X+33.5 Y-3.428 +N5780 G01 X+36.412 Y-3.438 +N5782 G02 X+36.562 Y-3.588 I+0 J-0.15 +N5784 G01 X+36.573 Y-6.583 +N5786 G01 X+39.286 Y-17.09 +N5788 G01 X+39.537 Y-19.064 +N5790 G01 X+39.52 Y-21.163 +N5792 G01 X+39.234 Y-23.14 +N5794 G01 X+36.511 Y-33.5 +N5796 G01 X+36.483 Y-36.353 +N5798 G02 X+36.333 Y-36.501 I-0.15 J+0.002 +N5800 G01 X+33.417 Y-36.512 +N5802 G01 X+22.911 Y-39.256 +N5804 G01 X+20.936 Y-39.51 +N5806 G01 X+18.837 Y-39.492 +N5808 G01 X+16.86 Y-39.204 +N5810 G01 X+6.5 Y-36.45 +N5812 G01 X+3.71 Y-36.44 +N5814 G02 X+3.56 Y-36.291 I+0 J+0.15 +N5816 G01 X+3.549 Y-33.418 +N5818 G01 X+0.774 Y-22.911 +N5820 G01 X+0.517 Y-20.936 +N5822 G01 X+0.535 Y-18.838 +N5824 G01 X+0.827 Y-16.861 +N5826 G01 X+3.611 Y-6.558 +N5828 G01 X+3.641 Y-3.769 +N5830 G02 X+3.791 Y-3.621 I+0.15 J-0.002 +N5832 G01 X+6.519 Y-3.625 +N5834 G01 X+17.089 Y-0.804 +N5836 G01 X+19.064 Y-0.544 +N5838 G01 X+21.162 Y-0.562 +N5840 G01 X+23.14 Y-0.857 +N5842 G01 X+33.499 Y-3.671 +N5844 G01 X+36.169 Y-3.681 +N5846 G02 X+36.319 Y-3.831 I+0 J-0.15 +N5848 G01 X+36.331 Y-6.582 +N5850 G01 X+39.166 Y-17.089 +N5852 G01 X+39.429 Y-19.064 +N5854 G01 X+39.411 Y-21.162 +N5856 G01 X+39.112 Y-23.139 +N5858 G01 X+36.268 Y-33.5 +N5860 G01 X+36.236 Y-36.11 +N5862 G02 X+36.087 Y-36.258 I-0.15 J+0.002 +N5864 G01 X+33.418 Y-36.27 +N5866 G01 X+22.911 Y-39.136 +N5868 G01 X+20.936 Y-39.402 +N5870 G01 X+19.084 +N5872 G01 X+17.109 Y-39.135 +N5874 G01 X+12.475 Y-37.875 +N5876 G01 X+6.501 Y-36.207 +N5878 G01 X+3.953 Y-36.197 +N5880 G02 X+3.803 Y-36.048 I+0 J+0.15 +N5882 G01 X+3.791 Y-33.418 +N5884 G01 X+0.894 Y-22.911 +N5886 G01 X+0.625 Y-20.936 +N5888 G01 Y-19.084 +N5890 G01 X+0.895 Y-17.109 +N5892 G01 X+2.098 Y-12.725 +N5894 G01 X+3.854 Y-6.558 +N5896 G01 X+3.887 Y-4.012 +N5898 G02 X+4.037 Y-3.864 I+0.15 J-0.002 +N5900 G01 X+6.518 Y-3.868 +N5902 G01 X+17.089 Y-0.924 +N5904 G01 X+19.064 Y-0.652 +N5906 G01 X+20.916 +N5908 G01 X+22.891 Y-0.925 +N5910 G01 X+27.15 Y-2.104 +N5912 G01 X+33.498 Y-3.915 +N5914 G01 X+35.926 Y-3.925 +N5916 G02 X+36.076 Y-4.074 I-0.001 J-0.15 +N5918 G01 X+36.088 Y-6.581 +N5920 G01 X+39.046 Y-17.089 +N5922 G01 X+39.321 Y-19.064 +N5924 G01 Y-20.916 +N5926 G01 X+39.045 Y-22.891 +N5928 G01 X+37.89 Y-27.025 +N5930 G01 X+36.024 Y-33.499 +N5932 G01 X+35.989 Y-35.867 +N5934 G02 X+35.84 Y-36.015 I-0.149 J+0.002 +N5936 G01 X+33.419 Y-36.028 +N5938 G01 X+22.911 Y-39.016 +N5940 G01 X+20.936 Y-39.294 +N5942 G01 X+19.085 Y-39.293 +N5944 G01 X+17.109 Y-39.015 +N5946 G01 X+12.975 Y-37.848 +N5948 G01 X+6.502 Y-35.964 +N5950 G01 X+4.198 Y-35.954 +N5952 G01 X+4.092 Y-35.91 +N5954 G01 X+4.046 Y-35.803 +N5956 G01 X+4.033 Y-33.419 +N5958 G01 X+1.014 Y-22.911 +N5960 G01 X+0.734 Y-20.936 +N5962 G01 Y-19.085 +N5964 G01 X+1.015 Y-17.109 +N5966 G01 X+2.12 Y-13.225 +N5968 G01 X+4.097 Y-6.559 +N5970 G01 X+4.134 Y-4.255 +N5972 G02 X+4.284 Y-4.107 I+0.15 J-0.002 +N5974 G01 X+6.518 Y-4.111 +N5976 G01 X+17.089 Y-1.042 +N5978 G01 X+19.063 Y-0.759 +N5980 G01 X+20.915 +N5982 G01 X+22.891 Y-1.043 +N5984 G01 X+26.65 Y-2.121 +N5986 G01 X+33.498 Y-4.153 +N5988 G01 X+35.679 Y-4.163 +N5990 G01 X+35.785 Y-4.207 +N5992 G01 X+35.837 Y-4.321 +N5994 G01 X+35.852 Y-6.58 +N5996 G01 X+38.93 Y-17.088 +N5998 G01 X+39.215 Y-19.063 +N6000 G01 X+39.216 Y-20.915 +N6002 G01 X+38.929 Y-22.891 +N6004 G01 X+37.804 Y-26.775 +N6006 G01 X+35.791 Y-33.498 +N6008 G01 X+35.781 Y-35.632 +N6010 G02 X+35.632 Y-35.782 I-0.15 J+0 +N6012 G01 X+33.42 Y-35.796 +N6014 G01 X+22.912 Y-38.902 +N6016 G01 X+20.937 Y-39.19 +N6018 G01 X+19.085 Y-39.191 +N6020 G01 X+17.109 Y-38.902 +N6022 G01 X+13.475 Y-37.842 +N6024 G01 X+6.503 Y-35.735 +N6026 G01 X+4.445 Y-35.725 +N6028 G01 X+4.339 Y-35.681 +N6030 G01 X+4.275 Y-35.556 +N6032 G01 X+4.261 Y-33.42 +N6034 G01 X+1.125 Y-22.912 +N6036 G01 X+0.835 Y-20.937 +N6038 G01 X+0.834 Y-19.085 +N6040 G01 X+1.126 Y-17.109 +N6042 G01 X+2.195 Y-13.475 +N6044 G01 X+4.321 Y-6.561 +N6046 G01 X+4.331 Y-4.481 +N6048 G02 X+4.481 Y-4.331 I+0.15 J+0 +N6050 G01 X+6.517 Y-4.334 +N6052 G01 X+17.088 Y-1.152 +N6054 G01 X+19.063 Y-0.858 +N6056 G01 X+20.915 +N6058 G01 X+22.891 Y-1.152 +N6060 G01 X+26.4 Y-2.191 +N6062 G01 X+33.497 Y-4.373 +N6064 G01 X+35.432 Y-4.382 +N6066 G01 X+35.538 Y-4.426 +N6068 G01 X+35.618 Y-4.568 +N6070 G01 X+35.633 Y-6.58 +N6072 G01 X+38.823 Y-17.088 +N6074 G01 X+39.119 Y-19.063 +N6076 G01 Y-20.915 +N6078 G01 X+38.823 Y-22.891 +N6080 G01 X+37.814 Y-26.275 +N6082 G01 X+35.576 Y-33.497 +N6084 G01 X+35.566 Y-35.417 +N6086 G02 X+35.417 Y-35.567 I-0.15 J+0 +N6088 G01 X+33.42 Y-35.582 +N6090 G01 X+22.912 Y-38.797 +N6092 G01 X+20.937 Y-39.096 +N6094 G01 X+19.085 +N6096 G01 X+17.109 Y-38.798 +N6098 G01 X+13.765 Y-37.794 +N6100 G01 X+6.502 Y-35.524 +N6102 G01 X+4.633 Y-35.496 +N6104 G02 X+4.484 Y-35.347 I+0.001 J+0.15 +N6106 G01 X+4.469 Y-33.42 +N6108 G01 X+1.228 Y-22.912 +N6110 G01 X+0.927 Y-20.937 +N6112 G01 Y-19.085 +N6114 G01 X+1.228 Y-17.109 +N6116 G01 X+2.24 Y-13.765 +N6118 G01 X+4.527 Y-6.561 +N6120 G01 X+4.537 Y-4.692 +N6122 G01 X+4.581 Y-4.586 +N6124 G01 X+4.692 Y-4.537 +N6126 G01 X+6.516 Y-4.54 +N6128 G01 X+17.088 Y-1.253 +N6130 G01 X+19.063 Y-0.95 +N6132 G01 X+20.914 +N6134 G01 X+22.891 Y-1.253 +N6136 G01 X+26.15 Y-2.246 +N6138 G01 X+33.496 Y-4.579 +N6140 G01 X+35.263 Y-4.588 +N6142 G02 X+35.413 Y-4.737 I+0 J-0.15 +N6144 G01 X+35.428 Y-6.579 +N6146 G01 X+38.692 Y-16.965 +N6148 G01 X+39.006 Y-18.817 +N6150 G01 X+39.049 Y-20.545 +N6152 G01 X+38.828 Y-22.397 +N6154 G01 X+38.329 Y-24.259 +N6156 G01 X+35.37 Y-33.496 +N6158 G01 X+35.36 Y-35.185 +N6160 G01 X+35.316 Y-35.291 +N6162 G01 X+35.186 Y-35.361 +N6164 G01 X+33.421 Y-35.377 +N6166 G01 X+23.035 Y-38.667 +N6168 G01 X+21.184 Y-38.983 +N6170 G01 X+19.455 Y-39.027 +N6172 G01 X+17.727 Y-38.827 +N6174 G01 X+15.741 Y-38.301 +N6176 G01 X+6.504 Y-35.319 +N6178 G01 X+4.84 Y-35.309 +N6180 G02 X+4.691 Y-35.16 I+0.001 J+0.15 +N6182 G01 X+4.674 Y-33.421 +N6184 G01 X+1.359 Y-23.034 +N6186 G01 X+1.052 Y-21.307 +N6188 G01 X+0.991 Y-19.579 +N6190 G01 X+1.175 Y-17.85 +N6192 G01 X+1.647 Y-15.988 +N6194 G01 X+4.733 Y-6.561 +N6196 G01 X+4.752 Y-4.892 +N6198 G02 X+4.902 Y-4.743 I+0.15 J-0.001 +N6200 G01 X+6.515 Y-4.746 +N6202 G01 X+16.966 Y-1.386 +N6204 G01 X+18.693 Y-1.078 +N6206 G01 X+20.421 Y-1.016 +N6208 G01 X+22.15 Y-1.201 +N6210 G01 X+23.889 Y-1.638 +N6212 G01 X+33.496 Y-4.794 +N6214 G01 X+35.047 Y-4.804 +N6216 G02 X+35.197 Y-4.952 I+0 J-0.15 +N6218 G01 X+35.213 Y-6.579 +N6220 G01 X+38.584 Y-16.966 +N6222 G01 X+38.895 Y-18.693 +N6224 G01 X+38.957 Y-20.421 +N6226 G01 X+38.77 Y-22.15 +N6228 G01 X+38.33 Y-23.889 +N6230 G01 X+35.145 Y-33.496 +N6232 G01 X+35.125 Y-34.988 +N6234 G02 X+34.976 Y-35.137 I-0.15 J+0.001 +N6236 G01 X+33.422 Y-35.152 +N6238 G01 X+23.035 Y-38.553 +N6240 G01 X+21.307 Y-38.867 +N6242 G01 X+19.579 Y-38.93 +N6244 G01 X+17.85 Y-38.741 +N6246 G01 X+16.111 Y-38.298 +N6248 G01 X+6.505 Y-35.085 +N6250 G01 X+5.075 Y-35.074 +N6252 G02 X+4.925 Y-34.926 I+0 J+0.15 +N6254 G01 X+4.908 Y-33.422 +N6256 G01 X+1.477 Y-23.035 +N6258 G01 X+1.16 Y-21.307 +N6260 G01 X+1.096 Y-19.579 +N6262 G01 X+1.287 Y-17.85 +N6264 G01 X+1.735 Y-16.111 +N6266 G01 X+4.976 Y-6.562 +N6268 G01 X+4.998 Y-5.135 +N6270 G02 X+5.149 Y-4.987 I+0.15 J-0.002 +N6272 G01 X+6.515 Y-4.989 +N6274 G01 X+16.965 Y-1.507 +N6276 G01 X+18.693 Y-1.187 +N6278 G01 X+20.421 Y-1.123 +N6280 G01 X+22.15 Y-1.315 +N6282 G01 X+23.889 Y-1.767 +N6284 G01 X+33.495 Y-5.037 +N6286 G01 X+34.804 Y-5.047 +N6288 G02 X+34.954 Y-5.195 I+0 J-0.15 +N6290 G01 X+34.971 Y-6.578 +N6292 G01 X+38.463 Y-16.965 +N6294 G01 X+38.785 Y-18.693 +N6296 G01 X+38.85 Y-20.421 +N6298 G01 X+38.656 Y-22.15 +N6300 G01 X+38.2 Y-23.889 +N6302 G01 X+34.902 Y-33.496 +N6304 G01 X+34.878 Y-34.746 +N6306 G02 X+34.73 Y-34.894 I-0.15 J+0.002 +N6308 G01 X+33.422 Y-34.91 +N6310 G01 X+23.035 Y-38.432 +N6312 G01 X+21.307 Y-38.758 +N6314 G01 X+19.579 Y-38.823 +N6316 G01 X+17.85 Y-38.628 +N6318 G01 X+16.111 Y-38.168 +N6320 G01 X+6.505 Y-34.842 +N6322 G01 X+5.318 Y-34.831 +N6324 G02 X+5.168 Y-34.683 I+0 J+0.15 +N6326 G01 X+5.15 Y-33.422 +N6328 G01 X+1.598 Y-23.035 +N6330 G01 X+1.27 Y-21.307 +N6332 G01 X+1.204 Y-19.579 +N6334 G01 X+1.401 Y-17.85 +N6336 G01 X+1.865 Y-16.111 +N6338 G01 X+5.219 Y-6.562 +N6340 G01 X+5.245 Y-5.377 +N6342 G02 X+5.395 Y-5.23 I+0.15 J-0.003 +N6344 G01 X+6.514 Y-5.232 +N6346 G01 X+16.965 Y-1.628 +N6348 G01 X+18.693 Y-1.297 +N6350 G01 X+20.421 Y-1.23 +N6352 G01 X+22.149 Y-1.429 +N6354 G01 X+23.889 Y-1.897 +N6356 G01 X+33.494 Y-5.28 +N6358 G01 X+34.561 Y-5.29 +N6360 G02 X+34.711 Y-5.438 I+0 J-0.15 +N6362 G01 X+34.729 Y-6.577 +N6364 G01 X+38.342 Y-16.965 +N6366 G01 X+38.676 Y-18.692 +N6368 G01 X+38.743 Y-20.421 +N6370 G01 X+38.542 Y-22.149 +N6372 G01 X+38.071 Y-23.889 +N6374 G01 X+34.659 Y-33.496 +N6376 G01 X+34.632 Y-34.504 +N6378 G02 X+34.485 Y-34.651 I-0.15 J+0.003 +N6380 G01 X+33.423 Y-34.668 +N6382 G01 X+23.035 Y-38.312 +N6384 G01 X+21.308 Y-38.648 +N6386 G01 X+19.58 Y-38.716 +N6388 G01 X+17.851 Y-38.514 +N6390 G01 X+16.111 Y-38.038 +N6392 G01 X+6.506 Y-34.599 +N6394 G01 X+5.561 Y-34.588 +N6396 G02 X+5.411 Y-34.441 I+0 J+0.15 +N6398 G01 X+5.392 Y-33.423 +N6400 G01 X+1.719 Y-23.035 +N6402 G01 X+1.379 Y-21.308 +N6404 G01 X+1.311 Y-19.58 +N6406 G01 X+1.515 Y-17.851 +N6408 G01 X+1.994 Y-16.111 +N6410 G01 X+5.462 Y-6.562 +N6412 G01 X+5.491 Y-5.62 +N6414 G02 X+5.641 Y-5.473 I+0.15 J-0.003 +N6416 G01 X+6.513 Y-5.474 +N6418 G01 X+16.965 Y-1.749 +N6420 G01 X+18.692 Y-1.406 +N6422 G01 X+20.42 Y-1.338 +N6424 G01 X+22.149 Y-1.543 +N6426 G01 X+23.889 Y-2.026 +N6428 G01 X+33.494 Y-5.523 +N6430 G01 X+34.318 Y-5.533 +N6432 G02 X+34.468 Y-5.68 I+0 J-0.15 +N6434 G01 X+34.487 Y-6.577 +N6436 G01 X+38.221 Y-16.965 +N6438 G01 X+38.566 Y-18.692 +N6440 G01 X+38.635 Y-20.42 +N6442 G01 X+38.428 Y-22.149 +N6444 G01 X+37.941 Y-23.889 +N6446 G01 X+34.416 Y-33.495 +N6448 G01 X+34.387 Y-34.263 +N6450 G02 X+34.24 Y-34.409 I-0.15 J+0.004 +N6452 G01 X+33.423 Y-34.426 +N6454 G01 X+23.035 Y-38.191 +N6456 G01 X+21.308 Y-38.539 +N6458 G01 X+19.58 Y-38.609 +N6460 G01 X+17.851 Y-38.4 +N6462 G01 X+16.111 Y-37.909 +N6464 G01 X+6.507 Y-34.356 +N6466 G01 X+5.803 Y-34.345 +N6468 G02 X+5.654 Y-34.199 I+0.001 J+0.15 +N6470 G01 X+5.635 Y-33.423 +N6472 G01 X+1.84 Y-23.035 +N6474 G01 X+1.489 Y-21.308 +N6476 G01 X+1.414 Y-19.703 +N6478 G01 X+1.604 Y-17.975 +N6480 G01 X+2.124 Y-16.111 +N6482 G01 X+5.706 Y-6.562 +N6484 G01 X+5.736 Y-5.861 +N6486 G02 X+5.886 Y-5.716 I+0.15 J-0.005 +N6488 G01 X+6.512 Y-5.717 +N6490 G01 X+16.965 Y-1.869 +N6492 G01 X+18.692 Y-1.516 +N6494 G01 X+20.297 Y-1.441 +N6496 G01 X+22.025 Y-1.632 +N6498 G01 X+23.889 Y-2.156 +N6500 G01 X+33.493 Y-5.766 +N6502 G01 X+34.074 Y-5.776 +N6504 G01 X+34.18 Y-5.82 +N6506 G01 X+34.225 Y-5.924 +N6508 G01 X+34.245 Y-6.577 +N6510 G01 X+38.1 Y-16.964 +N6512 G01 X+38.457 Y-18.692 +N6514 G01 X+38.532 Y-20.297 +N6516 G01 X+38.339 Y-22.025 +N6518 G01 X+37.811 Y-23.889 +N6520 G01 X+34.172 Y-33.496 +N6522 G01 X+34.142 Y-34.023 +N6524 G02 X+33.996 Y-34.167 I-0.15 J+0.006 +N6526 G01 X+33.423 Y-34.184 +N6528 G01 X+23.036 Y-38.07 +N6530 G01 X+21.308 Y-38.429 +N6532 G01 X+19.703 Y-38.506 +N6534 G01 X+17.975 Y-38.311 +N6536 G01 X+16.111 Y-37.779 +N6538 G01 X+6.507 Y-34.112 +N6540 G01 X+6.05 Y-34.102 +N6542 G01 X+5.944 Y-34.058 +N6544 G01 X+5.896 Y-33.954 +N6546 G01 X+5.877 Y-33.423 +N6548 G01 X+1.96 Y-23.036 +N6550 G01 X+1.598 Y-21.308 +N6552 G01 X+1.521 Y-19.703 +N6554 G01 X+1.718 Y-17.975 +N6556 G01 X+2.161 Y-16.365 +N6558 G01 X+5.949 Y-6.562 +N6560 G01 X+5.98 Y-6.101 +N6562 G02 X+6.13 Y-5.959 I+0.15 J-0.008 +N6564 G01 X+6.511 +N6566 G01 X+16.965 Y-1.99 +N6568 G01 X+18.569 Y-1.642 +N6570 G01 X+20.296 Y-1.548 +N6572 G01 X+22.025 Y-1.746 +N6574 G01 X+23.635 Y-2.193 +N6576 G01 X+33.492 Y-6.009 +N6578 G01 X+33.827 Y-6.02 +N6580 G01 X+33.933 Y-6.064 +N6582 G01 X+33.983 Y-6.169 +N6584 G01 X+34.003 Y-6.577 +N6586 G01 X+37.979 Y-16.964 +N6588 G01 X+38.347 Y-18.692 +N6590 G01 X+38.425 Y-20.296 +N6592 G01 X+38.226 Y-22.025 +N6594 G01 X+37.775 Y-23.635 +N6596 G01 X+33.93 Y-33.492 +N6598 G01 X+33.92 Y-33.775 +N6600 G02 X+33.777 Y-33.925 I-0.15 J+0 +N6602 G01 X+33.423 Y-33.942 +N6604 G01 X+23.036 Y-37.949 +N6606 G01 X+21.308 Y-38.32 +N6608 G01 X+19.704 Y-38.398 +N6610 G01 X+17.975 Y-38.198 +N6612 G01 X+16.365 Y-37.744 +N6614 G01 X+6.508 Y-33.869 +N6616 G01 X+6.297 Y-33.859 +N6618 G01 X+6.191 Y-33.815 +N6620 G01 X+6.138 Y-33.709 +N6622 G01 X+6.119 Y-33.422 +N6624 G01 X+2.081 Y-23.036 +N6626 G01 X+1.708 Y-21.308 +N6628 G01 X+1.628 Y-19.704 +N6630 G01 X+1.831 Y-17.975 +N6632 G01 X+2.288 Y-16.365 +N6634 G01 X+6.191 Y-6.566 +N6636 G01 X+6.202 Y-6.352 +N6638 G02 X+6.352 Y-6.202 I+0.15 J+0 +N6640 G01 X+6.511 +N6642 G01 X+16.964 Y-2.109 +N6644 G01 X+18.568 Y-1.75 +N6646 G01 X+20.296 Y-1.653 +N6648 G01 X+22.025 Y-1.856 +N6650 G01 X+23.635 Y-2.316 +N6652 G01 X+33.492 Y-6.243 +N6654 G01 X+33.58 Y-6.253 +N6656 G01 X+33.686 Y-6.297 +N6658 G01 X+33.752 Y-6.411 +N6660 G01 X+33.769 Y-6.581 +N6662 G01 X+37.865 Y-16.964 +N6664 G01 X+38.244 Y-18.692 +N6666 G01 X+38.324 Y-20.296 +N6668 G01 X+38.12 Y-22.025 +N6670 G01 X+37.657 Y-23.635 +N6672 G01 X+33.706 Y-33.492 +N6674 G01 X+33.695 Y-33.554 +N6676 G02 X+33.56 Y-33.703 I-0.15 J+0 +N6678 G01 X+33.419 Y-33.718 +N6680 G01 X+23.036 Y-37.839 +N6682 G01 X+21.309 Y-38.22 +N6684 G01 X+19.704 Y-38.302 +N6686 G01 X+17.975 Y-38.096 +N6688 G01 X+16.365 Y-37.63 +N6690 G01 X+6.51 Y-33.655 +N6692 G01 X+6.388 Y-33.55 +N6694 G01 X+6.348 Y-33.475 +N6696 G01 X+6.334 Y-33.411 +N6698 G01 X+2.186 Y-23.036 +N6700 G01 X+1.803 Y-21.309 +N6702 G01 X+1.721 Y-19.704 +N6704 G01 X+1.928 Y-17.975 +N6706 G01 X+2.397 Y-16.365 +N6708 G01 X+6.408 Y-6.539 +N6710 G02 X+6.539 Y-6.408 I+0.149 J-0.018 +N6712 G01 X+16.964 Y-2.208 +N6714 G01 X+18.568 Y-1.84 +N6716 G01 X+20.295 Y-1.74 +N6718 G01 X+22.025 Y-1.947 +N6720 G01 X+23.635 Y-2.418 +N6722 G01 X+33.486 Y-6.451 +N6724 G01 X+33.576 Y-6.559 +N6726 G01 X+37.776 Y-16.964 +N6728 G01 X+38.163 Y-18.691 +N6730 G01 X+38.246 Y-20.296 +N6732 G01 X+38.038 Y-22.025 +N6734 G01 X+37.565 Y-23.635 +N6736 G01 X+33.549 Y-33.453 +N6738 G01 X+33.441 Y-33.543 +N6740 G01 X+23.036 Y-37.759 +N6742 G01 X+21.309 Y-38.148 +N6744 G01 X+19.704 Y-38.232 +N6746 G01 X+17.975 Y-38.022 +N6748 G01 X+16.366 Y-37.548 +N6750 G01 X+6.564 Y-33.485 +N6752 G01 X+6.483 Y-33.403 +N6754 G01 X+2.257 Y-23.036 +N6756 G01 X+1.867 Y-21.309 +N6758 G01 X+1.783 Y-19.704 +N6760 G01 X+1.993 Y-17.975 +N6762 G01 X+2.469 Y-16.366 +N6764 G01 X+6.515 Y-6.597 +N6766 G01 X+6.597 Y-6.515 +N6768 G01 X+16.599 Y-2.394 +N6770 G01 X+18.323 Y-1.937 +N6772 G01 X+19.926 Y-1.791 +N6774 G01 X+21.529 Y-1.913 +N6776 G01 X+23.133 Y-2.305 +N6778 G01 X+33.387 Y-6.532 +N6780 G01 X+33.468 Y-6.613 +N6782 G01 X+37.597 Y-16.606 +N6784 G01 X+38.053 Y-18.326 +N6786 G01 X+38.199 Y-19.926 +N6788 G01 X+38.077 Y-21.526 +N6790 G01 X+37.685 Y-23.126 +N6792 G01 X+33.452 Y-33.37 +N6794 G01 X+33.37 Y-33.452 +N6796 G01 X+23.386 Y-37.588 +N6798 G01 X+21.67 Y-38.043 +N6800 G01 X+20.074 Y-38.189 +N6802 G01 X+18.478 Y-38.066 +N6804 G01 X+16.881 Y-37.676 +N6806 G01 X+6.646 Y-33.435 +N6808 G01 X+6.565 Y-33.354 +N6810 G01 X+2.422 Y-23.379 +N6812 G01 X+1.967 Y-21.666 +N6814 G01 X+1.821 Y-20.074 +N6816 G01 X+1.944 Y-18.481 +N6818 G01 X+2.333 Y-16.888 +N6820 G01 X+6.582 Y-6.663 +N6822 G01 X+6.663 Y-6.582 +N6824 G01 X+16.635 Y-2.439 +N6826 G01 X+18.341 Y-1.987 +N6828 G01 X+19.926 Y-1.843 +N6830 G01 X+21.512 Y-1.966 +N6832 G01 X+23.095 Y-2.356 +N6834 G01 X+33.285 Y-6.635 +N6836 G01 X+33.365 Y-6.715 +N6838 G01 X+37.531 Y-16.659 +N6840 G01 X+37.981 Y-18.352 +N6842 G01 X+38.124 Y-19.927 +N6844 G01 X+38.002 Y-21.501 +N6846 G01 X+37.614 Y-23.073 +N6848 G01 X+33.312 Y-33.233 +N6850 G01 X+33.233 Y-33.312 +N6852 G01 X+23.317 Y-37.502 +N6854 G01 X+21.636 Y-37.949 +N6856 G01 X+20.073 Y-38.091 +N6858 G01 X+18.51 Y-37.969 +N6860 G01 X+16.95 Y-37.584 +N6862 G01 X+6.82 Y-33.259 +N6864 G01 X+6.741 Y-33.18 +N6866 G01 X+2.528 Y-23.293 +N6868 G01 X+2.084 Y-21.625 +N6870 G01 X+1.942 Y-20.072 +N6872 G01 X+2.063 Y-18.521 +N6874 G01 X+2.446 Y-16.972 +N6876 G01 X+6.794 Y-6.872 +N6878 G01 X+6.872 Y-6.794 +N6880 G01 X+16.731 Y-2.558 +N6882 G01 X+18.387 Y-2.116 +N6884 G01 X+19.928 Y-1.975 +N6886 G01 X+21.469 Y-2.095 +N6888 G01 X+23.005 Y-2.476 +N6890 G01 X+33.075 Y-6.847 +N6892 G01 X+33.153 Y-6.925 +N6894 G01 X+37.412 Y-16.755 +N6896 G01 X+37.852 Y-18.398 +N6898 G01 X+37.992 Y-19.928 +N6900 G01 X+37.872 Y-21.458 +N6902 G01 X+37.494 Y-22.983 +N6904 G01 X+33.1 Y-33.023 +N6906 G01 X+33.023 Y-33.1 +N6908 G01 X+23.221 Y-37.382 +N6910 G01 X+21.59 Y-37.82 +N6912 G01 X+20.071 Y-37.959 +N6914 G01 X+18.553 Y-37.84 +N6916 G01 X+17.04 Y-37.464 +N6918 G01 X+7.03 Y-33.047 +N6920 G01 X+6.953 Y-32.97 +N6922 G01 X+2.648 Y-23.197 +N6924 G01 X+2.213 Y-21.578 +N6926 G01 X+2.074 Y-20.071 +N6928 G01 X+2.192 Y-18.563 +N6930 G01 X+2.567 Y-17.062 +N6932 G01 X+7.006 Y-7.082 +N6934 G01 X+7.082 Y-7.006 +N6936 G01 X+16.827 Y-2.678 +N6938 G01 X+18.433 Y-2.245 +N6940 G01 X+19.93 Y-2.107 +N6942 G01 X+21.426 Y-2.225 +N6944 G01 X+22.916 Y-2.597 +N6946 G01 X+32.865 Y-7.059 +N6948 G01 X+32.941 Y-7.135 +N6950 G01 X+37.293 Y-16.851 +N6952 G01 X+37.723 Y-18.445 +N6954 G01 X+37.86 Y-19.93 +N6956 G01 X+37.743 Y-21.415 +N6958 G01 X+37.373 Y-22.893 +N6960 G01 X+32.888 Y-32.813 +N6962 G01 X+32.813 Y-32.888 +N6964 G01 X+23.125 Y-37.263 +N6966 G01 X+21.544 Y-37.69 +N6968 G01 X+20.07 Y-37.827 +N6970 G01 X+18.596 Y-37.711 +N6972 G01 X+17.129 Y-37.343 +N6974 G01 X+7.239 Y-32.835 +N6976 G01 X+7.165 Y-32.761 +N6978 G01 X+3.382 Y-24.512 +N6980 G01 X+2.689 Y-22.877 +N6982 G01 X+2.322 Y-21.419 +N6984 G01 X+2.206 Y-19.957 +N6986 G01 X+2.341 Y-18.495 +N6988 G01 X+2.766 Y-16.928 +N6990 G01 X+7.218 Y-7.292 +N6992 G01 X+7.292 Y-7.218 +N6994 G01 X+9.599 Y-6.153 +N6996 G01 X+16.922 Y-2.797 +N6998 G01 X+18.59 Y-2.355 +N7000 G01 X+20.043 Y-2.239 +N7002 G01 X+21.494 Y-2.373 +N7004 G01 X+23.048 Y-2.795 +N7006 G01 X+32.656 Y-7.271 +N7008 G01 X+32.729 Y-7.344 +N7010 G01 X+33.969 Y-10.008 +N7012 G01 X+37.173 Y-16.946 +N7014 G01 X+37.612 Y-18.601 +N7016 G01 X+37.728 Y-20.043 +N7018 G01 X+37.595 Y-21.482 +N7020 G01 X+37.175 Y-23.024 +N7022 G01 X+32.676 Y-32.604 +N7024 G01 X+32.604 Y-32.676 +N7026 G01 X+28.264 Y-34.714 +N7028 G01 X+23.03 Y-37.143 +N7030 G01 X+21.388 Y-37.58 +N7032 G01 X+19.958 Y-37.695 +N7034 G01 X+18.529 Y-37.563 +N7036 G01 X+17 Y-37.145 +N7038 G01 X+7.449 Y-32.623 +N7040 G01 X+7.377 Y-32.551 +N7042 G01 X+4.872 Y-27.264 +N7044 G01 X+2.887 Y-23.006 +N7046 G01 X+2.452 Y-21.377 +N7048 G01 X+2.338 Y-19.958 +N7050 G01 X+2.47 Y-18.541 +N7052 G01 X+2.884 Y-17.025 +N7054 G01 X+7.431 Y-7.501 +N7056 G01 X+7.501 Y-7.431 +N7058 G01 X+14.089 Y-4.281 +N7060 G01 X+17.019 Y-2.916 +N7062 G01 X+18.633 Y-2.485 +N7064 G01 X+20.041 Y-2.371 +N7066 G01 X+21.447 Y-2.502 +N7068 G01 X+22.951 Y-2.914 +N7070 G01 X+32.446 Y-7.484 +N7072 G01 X+32.516 Y-7.554 +N7074 G01 X+35.512 Y-13.767 +N7076 G01 X+37.054 Y-17.043 +N7078 G01 X+37.483 Y-18.644 +N7080 G01 X+37.596 Y-20.041 +N7082 G01 X+37.466 Y-21.436 +N7084 G01 X+37.056 Y-22.927 +N7086 G01 X+32.463 Y-32.394 +N7088 G01 X+32.394 Y-32.463 +N7090 G01 X+23.038 Y-36.985 +N7092 G01 X+21.558 Y-37.412 +N7094 G01 X+20.067 Y-37.563 +N7096 G01 X+18.576 Y-37.434 +N7098 G01 X+17.098 Y-37.027 +N7100 G01 X+7.659 Y-32.41 +N7102 G01 X+7.59 Y-32.341 +N7104 G01 X+3.045 Y-23.013 +N7106 G01 X+2.62 Y-21.545 +N7108 G01 X+2.47 Y-20.067 +N7110 G01 X+2.599 Y-18.588 +N7112 G01 X+3.003 Y-17.122 +N7114 G01 X+7.643 Y-7.711 +N7116 G01 X+7.711 Y-7.643 +N7118 G01 X+17.012 Y-3.074 +N7120 G01 X+18.467 Y-2.652 +N7122 G01 X+19.933 Y-2.503 +N7124 G01 X+21.4 Y-2.631 +N7126 G01 X+22.854 Y-3.032 +N7128 G01 X+32.236 Y-7.696 +N7130 G01 X+32.304 Y-7.764 +N7132 G01 X+36.896 Y-17.037 +N7134 G01 X+37.316 Y-18.479 +N7136 G01 X+37.464 Y-19.934 +N7138 G01 X+37.337 Y-21.389 +N7140 G01 X+36.938 Y-22.829 +N7142 G01 X+32.251 Y-32.184 +N7144 G01 X+32.184 Y-32.251 +N7146 G01 X+24.878 Y-35.923 +N7148 G01 X+22.837 Y-36.905 +N7150 G01 X+21.405 Y-37.303 +N7152 G01 X+19.963 Y-37.431 +N7154 G01 X+18.52 Y-37.285 +N7156 G01 X+17.093 Y-36.87 +N7158 G01 X+7.868 Y-32.198 +N7160 G01 X+7.802 Y-32.132 +N7162 G01 X+3.99 Y-24.61 +N7164 G01 X+3.125 Y-22.812 +N7166 G01 X+2.729 Y-21.394 +N7168 G01 X+2.602 Y-19.963 +N7170 G01 X+2.747 Y-18.533 +N7172 G01 X+3.16 Y-17.118 +N7174 G01 X+7.855 Y-7.921 +N7176 G01 X+7.921 Y-7.855 +N7178 G01 X+15.565 Y-3.949 +N7180 G01 X+17.212 Y-3.155 +N7182 G01 X+18.618 Y-2.761 +N7184 G01 X+20.036 Y-2.635 +N7186 G01 X+21.455 Y-2.779 +N7188 G01 X+22.857 Y-3.189 +N7190 G01 X+32.027 Y-7.908 +N7192 G01 X+32.092 Y-7.973 +N7194 G01 X+35.945 Y-15.454 +N7196 G01 X+36.815 Y-17.236 +N7198 G01 X+37.206 Y-18.629 +N7200 G01 X+37.332 Y-20.036 +N7202 G01 X+37.189 Y-21.443 +N7204 G01 X+36.782 Y-22.831 +N7206 G01 X+32.038 Y-31.974 +N7208 G01 X+31.974 Y-32.038 +N7210 G01 X+24.281 Y-36.034 +N7212 G01 X+22.74 Y-36.786 +N7214 G01 X+21.359 Y-37.174 +N7216 G01 X+19.964 Y-37.299 +N7218 G01 X+18.57 Y-37.157 +N7220 G01 X+17.194 Y-36.752 +N7222 G01 X+8.078 Y-31.985 +N7224 G01 X+8.015 Y-31.922 +N7226 G01 X+3.997 Y-24.25 +N7228 G01 X+3.244 Y-22.716 +N7230 G01 X+2.858 Y-21.348 +N7232 G01 X+2.734 Y-19.965 +N7234 G01 X+2.875 Y-18.582 +N7236 G01 X+3.277 Y-17.219 +N7238 G01 X+8.068 Y-8.13 +N7240 G01 X+8.13 Y-8.068 +N7242 G01 X+15.921 Y-3.955 +N7244 G01 X+17.308 Y-3.274 +N7246 G01 X+18.664 Y-2.89 +N7248 G01 X+20.035 Y-2.767 +N7250 G01 X+21.405 Y-2.908 +N7252 G01 X+22.756 Y-3.307 +N7254 G01 X+31.817 Y-8.121 +N7256 G01 X+31.879 Y-8.183 +N7258 G01 X+35.939 Y-15.813 +N7260 G01 X+36.696 Y-17.332 +N7262 G01 X+37.077 Y-18.675 +N7264 G01 X+37.2 Y-20.034 +N7266 G01 X+37.06 Y-21.393 +N7268 G01 X+36.664 Y-22.731 +N7270 G01 X+31.826 Y-31.765 +N7272 G01 X+31.765 Y-31.826 +N7274 G01 X+23.926 Y-36.032 +N7276 G01 X+22.644 Y-36.667 +N7278 G01 X+21.313 Y-37.045 +N7280 G01 X+19.966 Y-37.167 +N7282 G01 X+18.62 Y-37.028 +N7284 G01 X+17.295 Y-36.635 +N7286 G01 X+8.288 Y-31.773 +N7288 G01 X+8.227 Y-31.712 +N7290 G01 X+3.999 Y-23.895 +N7292 G01 X+3.363 Y-22.62 +N7294 G01 X+2.987 Y-21.301 +N7296 G01 X+2.866 Y-19.967 +N7298 G01 X+3.004 Y-18.632 +N7300 G01 X+3.395 Y-17.32 +N7302 G01 X+8.28 Y-8.34 +N7304 G01 X+8.34 Y-8.28 +N7306 G01 X+16.271 Y-3.956 +N7308 G01 X+17.405 Y-3.393 +N7310 G01 X+18.71 Y-3.02 +N7312 G01 X+20.033 Y-2.899 +N7314 G01 X+21.355 Y-3.036 +N7316 G01 X+22.655 Y-3.424 +N7318 G01 X+31.607 Y-8.333 +N7320 G01 X+31.667 Y-8.393 +N7322 G01 X+36.504 Y-17.245 +N7324 G01 X+36.93 Y-18.628 +N7326 G01 X+37.068 Y-19.938 +N7328 G01 X+36.95 Y-21.249 +N7330 G01 X+36.546 Y-22.629 +N7332 G01 X+31.613 Y-31.555 +N7334 G01 X+31.555 Y-31.613 +N7336 G01 X+22.729 Y-36.474 +N7338 G01 X+21.359 Y-36.897 +N7340 G01 X+20.061 Y-37.035 +N7342 G01 X+18.763 Y-36.918 +N7344 G01 X+17.396 Y-36.517 +N7346 G01 X+8.498 Y-31.56 +N7348 G01 X+8.44 Y-31.502 +N7350 G01 X+3.555 Y-22.703 +N7352 G01 X+3.135 Y-21.347 +N7354 G01 X+2.998 Y-20.061 +N7356 G01 X+3.114 Y-18.774 +N7358 G01 X+3.512 Y-17.421 +N7360 G01 X+8.493 Y-8.55 +N7362 G01 X+8.55 Y-8.493 +N7364 G01 X+17.323 Y-3.584 +N7366 G01 X+18.665 Y-3.167 +N7368 G01 X+19.94 Y-3.031 +N7370 G01 X+21.214 Y-3.146 +N7372 G01 X+22.553 Y-3.542 +N7374 G01 X+31.397 Y-8.546 +N7376 G01 X+31.454 Y-8.603 +N7378 G01 X+36.386 Y-17.349 +N7380 G01 X+36.801 Y-18.678 +N7382 G01 X+36.936 Y-19.94 +N7384 G01 X+36.821 Y-21.203 +N7386 G01 X+36.429 Y-22.528 +N7388 G01 X+31.401 Y-31.345 +N7390 G01 X+31.345 Y-31.401 +N7392 G01 X+22.626 Y-36.357 +N7394 G01 X+21.31 Y-36.769 +N7396 G01 X+20.06 Y-36.904 +N7398 G01 X+18.809 Y-36.789 +N7400 G01 X+17.497 Y-36.4 +N7402 G01 X+8.708 Y-31.348 +N7404 G01 X+8.652 Y-31.292 +N7406 G01 X+3.672 Y-22.6 +N7408 G01 X+3.263 Y-21.297 +N7410 G01 X+3.129 Y-20.059 +N7412 G01 X+3.243 Y-18.821 +N7414 G01 X+3.63 Y-17.522 +N7416 G01 X+8.705 Y-8.76 +N7418 G01 X+8.76 Y-8.705 +N7420 G01 X+17.426 Y-3.702 +N7422 G01 X+18.715 Y-3.296 +N7424 G01 X+19.941 Y-3.162 +N7426 G01 X+21.168 Y-3.275 +N7428 G01 X+22.453 Y-3.659 +N7430 G01 X+31.187 Y-8.759 +N7432 G01 X+31.241 Y-8.813 +N7434 G01 X+36.269 Y-17.452 +N7436 G01 X+36.672 Y-18.728 +N7438 G01 X+36.805 Y-19.941 +N7440 G01 X+36.692 Y-21.156 +N7442 G01 X+36.311 Y-22.427 +N7444 G01 X+31.188 Y-31.135 +N7446 G01 X+31.135 Y-31.188 +N7448 G01 X+22.522 Y-36.24 +N7450 G01 X+21.26 Y-36.64 +N7452 G01 X+20.058 Y-36.772 +N7454 G01 X+18.856 Y-36.66 +N7456 G01 X+17.598 Y-36.282 +N7458 G01 X+8.917 Y-31.135 +N7460 G01 X+8.865 Y-31.083 +N7462 G01 X+3.86 Y-22.658 +N7464 G01 X+3.43 Y-21.417 +N7466 G01 X+3.262 Y-20.059 +N7468 G01 X+3.372 Y-18.867 +N7470 G01 X+3.747 Y-17.623 +N7472 G01 X+8.918 Y-8.97 +N7474 G01 X+8.97 Y-8.918 +N7476 G01 X+17.279 Y-3.936 +N7478 G01 X+18.514 Y-3.483 +N7480 G01 X+19.772 Y-3.299 +N7482 G01 X+21.12 Y-3.404 +N7484 G01 X+22.352 Y-3.777 +N7486 G01 X+30.923 Y-8.938 +N7488 G01 X+30.974 Y-8.989 +N7490 G01 X+36.082 Y-17.398 +N7492 G01 X+36.486 Y-18.53 +N7494 G01 X+36.668 Y-19.774 +N7496 G01 X+36.563 Y-21.108 +N7498 G01 X+36.194 Y-22.326 +N7500 G01 X+30.975 Y-30.925 +N7502 G01 X+30.925 Y-30.975 +N7504 G01 X+22.574 Y-36.054 +N7506 G01 X+21.455 Y-36.454 +N7508 G01 X+20.224 Y-36.635 +N7510 G01 X+18.903 Y-36.531 +N7512 G01 X+17.699 Y-36.164 +N7514 G01 X+9.127 Y-30.922 +N7516 G01 X+9.078 Y-30.873 +N7518 G01 X+3.975 Y-22.547 +N7520 G01 X+3.577 Y-21.44 +N7522 G01 X+3.398 Y-20.222 +N7524 G01 X+3.501 Y-18.915 +N7526 G01 X+3.865 Y-17.724 +N7528 G01 X+9.131 Y-9.18 +N7530 G01 X+9.18 Y-9.131 +N7532 G01 X+17.393 Y-4.051 +N7534 G01 X+18.575 Y-3.61 +N7536 G01 X+19.78 Y-3.431 +N7538 G01 X+21.074 Y-3.533 +N7540 G01 X+22.251 Y-3.894 +N7542 G01 X+30.714 Y-9.15 +N7544 G01 X+30.762 Y-9.198 +N7546 G01 X+35.967 Y-17.509 +N7548 G01 X+36.359 Y-18.591 +N7550 G01 X+36.536 Y-19.782 +N7552 G01 X+36.435 Y-21.062 +N7554 G01 X+36.076 Y-22.226 +N7556 G01 X+30.763 Y-30.715 +N7558 G01 X+30.715 Y-30.763 +N7560 G01 X+22.463 Y-35.939 +N7562 G01 X+21.394 Y-36.327 +N7564 G01 X+20.216 Y-36.503 +N7566 G01 X+18.95 Y-36.402 +N7568 G01 X+17.8 Y-36.047 +N7570 G01 X+9.337 Y-30.71 +N7572 G01 X+9.29 Y-30.663 +N7574 G01 X+4.09 Y-22.435 +N7576 G01 X+3.705 Y-21.379 +N7578 G01 X+3.529 Y-20.213 +N7580 G01 X+3.615 Y-19.039 +N7582 G01 X+3.982 Y-17.825 +N7584 G01 X+9.344 Y-9.39 +N7586 G01 X+9.39 Y-9.344 +N7588 G01 X+17.507 Y-4.166 +N7590 G01 X+18.635 Y-3.737 +N7592 G01 X+19.789 Y-3.562 +N7594 G01 X+20.95 Y-3.647 +N7596 G01 X+22.149 Y-4.012 +N7598 G01 X+30.505 Y-9.362 +N7600 G01 X+30.55 Y-9.407 +N7602 G01 X+35.852 Y-17.62 +N7604 G01 X+36.232 Y-18.651 +N7606 G01 X+36.405 Y-19.791 +N7608 G01 X+36.32 Y-20.94 +N7610 G01 X+35.959 Y-22.124 +N7612 G01 X+30.55 Y-30.505 +N7614 G01 X+30.505 Y-30.55 +N7616 G01 X+22.352 Y-35.824 +N7618 G01 X+21.334 Y-36.2 +N7620 G01 X+20.207 Y-36.372 +N7622 G01 X+19.071 Y-36.288 +N7624 G01 X+17.901 Y-35.929 +N7626 G01 X+9.547 Y-30.497 +N7628 G01 X+9.503 Y-30.453 +N7630 G01 X+4.205 Y-22.324 +N7632 G01 X+3.832 Y-21.319 +N7634 G01 X+3.661 Y-20.205 +N7636 G01 X+3.744 Y-19.082 +N7638 G01 X+4.1 Y-17.926 +N7640 G01 X+9.557 Y-9.6 +N7642 G01 X+9.6 Y-9.557 +N7644 G01 X+17.621 Y-4.281 +N7646 G01 X+18.695 Y-3.864 +N7648 G01 X+19.797 Y-3.694 +N7650 G01 X+20.907 Y-3.777 +N7652 G01 X+22.049 Y-4.129 +N7654 G01 X+30.295 Y-9.574 +N7656 G01 X+35.737 Y-17.731 +N7658 G01 X+36.105 Y-18.711 +N7660 G01 X+36.273 Y-19.799 +N7662 G01 X+36.191 Y-20.896 +N7664 G01 X+35.841 Y-22.023 +N7666 G01 X+30.337 Y-30.295 +N7668 G01 X+22.241 Y-35.708 +N7670 G01 X+21.274 Y-36.073 +N7672 G01 X+20.199 Y-36.24 +N7674 G01 X+19.114 Y-36.159 +N7676 G01 X+18.002 Y-35.812 +N7678 G01 X+9.757 Y-30.284 +N7680 G01 X+4.32 Y-22.213 +N7682 G01 X+3.959 Y-21.259 +N7684 G01 X+3.793 Y-20.197 +N7686 G01 X+3.874 Y-19.125 +N7688 G01 X+4.217 Y-18.027 +N7690 G01 X+9.769 Y-9.809 +N7692 G01 X+17.735 Y-4.396 +N7694 G01 X+18.755 Y-3.991 +N7696 G01 X+19.806 Y-3.826 +N7698 G01 X+20.864 Y-3.906 +N7700 G01 X+21.948 Y-4.247 +N7702 G01 X+30.086 Y-9.787 +N7704 G01 X+35.622 Y-17.843 +N7706 G01 X+35.938 Y-18.636 +N7708 G01 X+36.14 Y-19.806 +N7710 G01 X+36.062 Y-20.853 +N7712 G01 X+35.724 Y-21.923 +N7714 G01 X+30.124 Y-30.085 +N7716 G01 X+22.129 Y-35.594 +N7718 G01 X+21.347 Y-35.907 +N7720 G01 X+20.191 Y-36.107 +N7722 G01 X+19.157 Y-36.029 +N7724 G01 X+18.103 Y-35.695 +N7726 G01 X+9.967 Y-30.071 +N7728 G01 X+4.435 Y-22.101 +N7730 G01 X+4.124 Y-21.33 +N7732 G01 X+3.929 Y-20.258 +N7734 G01 X+4.003 Y-19.169 +N7736 G01 X+4.335 Y-18.128 +N7738 G01 X+9.982 Y-10.019 +N7740 G01 X+17.85 Y-4.51 +N7742 G01 X+18.686 Y-4.156 +N7744 G01 X+19.745 Y-3.962 +N7746 G01 X+20.82 Y-4.035 +N7748 G01 X+21.847 Y-4.364 +N7750 G01 X+29.877 Y-9.999 +N7752 G01 X+35.507 Y-17.955 +N7754 G01 X+35.813 Y-18.704 +N7756 G01 X+36.005 Y-19.748 +N7758 G01 X+35.932 Y-20.81 +N7760 G01 X+35.606 Y-21.822 +N7762 G01 X+29.911 Y-29.875 +N7764 G01 X+22.017 Y-35.479 +N7766 G01 X+21.28 Y-35.781 +N7768 G01 X+20.249 Y-35.972 +N7770 G01 X+19.201 Y-35.9 +N7772 G01 X+18.203 Y-35.577 +N7774 G01 X+10.177 Y-29.858 +N7776 G01 X+4.55 Y-21.99 +N7778 G01 X+4.25 Y-21.263 +N7780 G01 X+4.061 Y-20.246 +N7782 G01 X+4.132 Y-19.212 +N7784 G01 X+4.452 Y-18.228 +N7786 G01 X+10.195 Y-10.229 +N7788 G01 X+17.966 Y-4.624 +N7790 G01 X+18.511 Y-4.366 +N7792 G01 X+19.564 Y-4.11 +N7794 G01 X+20.649 Y-4.141 +N7796 G01 X+21.745 Y-4.482 +N7798 G01 X+29.667 Y-10.211 +N7800 G01 X+35.393 Y-18.066 +N7802 G01 X+35.668 Y-18.711 +N7804 G01 X+35.869 Y-19.697 +N7806 G01 X+35.815 Y-20.704 +N7808 G01 X+35.489 Y-21.721 +N7810 G01 X+29.698 Y-29.665 +N7812 G01 X+21.906 Y-35.364 +N7814 G01 X+21.271 Y-35.636 +N7816 G01 X+20.3 Y-35.836 +N7818 G01 X+19.306 Y-35.783 +N7820 G01 X+18.305 Y-35.46 +N7822 G01 X+10.387 Y-29.645 +N7824 G01 X+4.665 Y-21.878 +N7826 G01 X+4.395 Y-21.253 +N7828 G01 X+4.197 Y-20.296 +N7830 G01 X+4.25 Y-19.316 +N7832 G01 X+4.57 Y-18.33 +N7834 G01 X+10.408 Y-10.44 +N7836 G01 X+18.081 Y-4.738 +N7838 G01 X+18.593 Y-4.489 +N7840 G01 X+19.586 Y-4.242 +N7842 G01 X+20.613 Y-4.271 +N7844 G01 X+21.645 Y-4.599 +N7846 G01 X+29.458 Y-10.424 +N7848 G01 X+35.278 Y-18.178 +N7850 G01 X+35.542 Y-18.782 +N7852 G01 X+35.737 Y-19.711 +N7854 G01 X+35.685 Y-20.664 +N7856 G01 X+35.372 Y-21.62 +N7858 G01 X+29.485 Y-29.455 +N7860 G01 X+21.794 Y-35.249 +N7862 G01 X+21.2 Y-35.511 +N7864 G01 X+20.285 Y-35.704 +N7866 G01 X+19.346 Y-35.653 +N7868 G01 X+18.405 Y-35.342 +N7870 G01 X+10.597 Y-29.432 +N7872 G01 X+4.779 Y-21.766 +N7874 G01 X+4.54 Y-21.237 +N7876 G01 X+4.329 Y-20.282 +N7878 G01 X+4.379 Y-19.356 +N7880 G01 X+4.687 Y-18.43 +N7882 G01 X+10.621 Y-10.65 +N7884 G01 X+18.195 Y-4.853 +N7886 G01 X+18.675 Y-4.612 +N7888 G01 X+19.608 Y-4.373 +N7890 G01 X+20.576 Y-4.401 +N7892 G01 X+21.544 Y-4.716 +N7894 G01 X+29.248 Y-10.636 +N7896 G01 X+35.163 Y-18.29 +N7898 G01 X+35.398 Y-18.8 +N7900 G01 X+35.605 Y-19.726 +N7902 G01 X+35.556 Y-20.624 +N7904 G01 X+35.254 Y-21.52 +N7906 G01 X+29.272 Y-29.245 +N7908 G01 X+21.682 Y-35.134 +N7910 G01 X+21.181 Y-35.367 +N7912 G01 X+20.271 Y-35.572 +N7914 G01 X+19.386 Y-35.523 +N7916 G01 X+18.506 Y-35.225 +N7918 G01 X+10.807 Y-29.219 +N7920 G01 X+4.894 Y-21.654 +N7922 G01 X+4.664 Y-21.163 +N7924 G01 X+4.461 Y-20.267 +N7926 G01 X+4.509 Y-19.396 +N7928 G01 X+4.805 Y-18.531 +N7930 G01 X+10.835 Y-10.86 +N7932 G01 X+18.309 Y-4.967 +N7934 G01 X+18.756 Y-4.736 +N7936 G01 X+19.629 Y-4.505 +N7938 G01 X+20.54 Y-4.532 +N7940 G01 X+21.444 Y-4.834 +N7942 G01 X+29.039 Y-10.849 +N7944 G01 X+35.049 Y-18.402 +N7946 G01 X+35.235 Y-18.778 +N7948 G01 X+35.462 Y-19.635 +N7950 G01 X+35.436 Y-20.531 +N7952 G01 X+35.137 Y-21.418 +N7954 G01 X+29.059 Y-29.035 +N7956 G01 X+21.57 Y-35.02 +N7958 G01 X+21.201 Y-35.204 +N7960 G01 X+20.36 Y-35.429 +N7962 G01 X+19.478 Y-35.403 +N7964 G01 X+18.607 Y-35.107 +N7966 G01 X+11.017 Y-29.005 +N7968 G01 X+5.009 Y-21.542 +N7970 G01 X+4.827 Y-21.181 +N7972 G01 X+4.603 Y-20.355 +N7974 G01 X+4.629 Y-19.488 +N7976 G01 X+4.922 Y-18.632 +N7978 G01 X+11.048 Y-11.07 +N7980 G01 X+18.424 Y-5.082 +N7982 G01 X+18.838 Y-4.859 +N7984 G01 X+19.651 Y-4.636 +N7986 G01 X+20.503 Y-4.662 +N7988 G01 X+21.343 Y-4.951 +N7990 G01 X+28.829 Y-11.061 +N7992 G01 X+34.934 Y-18.514 +N7994 G01 X+35.112 Y-18.86 +N7996 G01 X+35.331 Y-19.656 +N7998 G01 X+35.306 Y-20.494 +N8000 G01 X+35.019 Y-21.318 +N8002 G01 X+28.846 Y-28.825 +N8004 G01 X+21.457 Y-34.906 +N8006 G01 X+21.206 Y-35.042 +N8008 G01 X+20.387 Y-35.291 +N8010 G01 X+19.563 Y-35.282 +N8012 G01 X+18.75 Y-35.012 +N8014 G01 X+11.228 Y-28.792 +N8016 G01 X+5.123 Y-21.429 +N8018 G01 X+4.989 Y-21.184 +N8020 G01 X+4.742 Y-20.381 +N8022 G01 X+4.751 Y-19.571 +N8024 G01 X+5.018 Y-18.774 +N8026 G01 X+11.261 Y-11.28 +N8028 G01 X+18.54 Y-5.195 +N8030 G01 X+18.837 Y-5.021 +N8032 G01 X+19.625 Y-4.775 +N8034 G01 X+20.42 Y-4.783 +N8036 G01 X+21.201 Y-5.047 +N8038 G01 X+28.62 Y-11.274 +N8040 G01 X+34.82 Y-18.627 +N8042 G01 X+34.951 Y-18.861 +N8044 G01 X+35.192 Y-19.631 +N8046 G01 X+35.184 Y-20.412 +N8048 G01 X+34.923 Y-21.177 +N8050 G01 X+28.632 Y-28.615 +N8052 G01 X+21.345 Y-34.791 +N8054 G01 X+21.117 Y-34.92 +N8056 G01 X+20.362 Y-35.159 +N8058 G01 X+19.596 Y-35.151 +N8060 G01 X+18.847 Y-34.893 +N8062 G01 X+11.581 Y-28.703 +N8064 G01 X+5.237 Y-21.317 +N8066 G01 X+5.11 Y-21.095 +N8068 G01 X+4.874 Y-20.356 +N8070 G01 X+4.881 Y-19.605 +N8072 G01 X+5.136 Y-18.871 +N8074 G01 X+11.474 Y-11.49 +N8076 G01 X+18.655 Y-5.31 +N8078 G01 X+18.925 Y-5.142 +N8080 G01 X+19.65 Y-4.906 +N8082 G01 X+20.387 Y-4.914 +N8084 G01 X+21.105 Y-5.166 +N8086 G01 X+28.41 Y-11.487 +N8088 G01 X+34.706 Y-18.739 +N8090 G01 X+34.829 Y-18.949 +N8092 G01 X+35.061 Y-19.656 +N8094 G01 X+35.054 Y-20.379 +N8096 G01 X+34.805 Y-21.081 +N8098 G01 X+28.544 Y-28.263 +N8100 G01 X+21.231 Y-34.678 +N8102 G01 X+21.166 Y-34.721 +N8104 G01 X+20.461 Y-35.004 +N8106 G01 X+19.714 Y-35.034 +N8108 G01 X+18.945 Y-34.775 +N8110 G01 X+11.975 Y-28.656 +N8112 G01 X+5.35 Y-21.203 +N8114 G01 X+5.308 Y-21.14 +N8116 G01 X+5.029 Y-20.453 +N8118 G01 X+4.999 Y-19.72 +N8120 G01 X+5.217 Y-19.039 +N8122 G01 X+11.688 Y-11.701 +N8124 G01 X+18.816 Y-5.386 +N8126 G01 X+19.517 Y-5.071 +N8128 G01 X+20.233 Y-5.026 +N8130 G01 X+20.938 Y-5.247 +N8132 G01 X+20.991 Y-5.278 +N8134 G01 X+28.015 Y-11.532 +N8136 G01 X+34.585 Y-18.845 +N8138 G01 X+34.886 Y-19.489 +N8140 G01 X+34.94 Y-20.226 +N8142 G01 X+34.723 Y-20.916 +N8144 G01 X+34.692 Y-20.969 +N8146 G01 X+28.5 Y-27.87 +N8148 G01 X+21.127 Y-34.557 +N8150 G01 X+20.501 Y-34.854 +N8152 G01 X+19.78 Y-34.908 +N8154 G01 X+19.106 Y-34.693 +N8156 G01 X+19.053 Y-34.662 +N8158 G01 X+12.181 Y-28.448 +N8160 G01 X+5.472 Y-21.099 +N8162 G01 X+5.179 Y-20.49 +N8164 G01 X+5.125 Y-19.785 +N8166 G01 X+5.337 Y-19.129 +N8168 G01 X+5.368 Y-19.076 +N8170 G01 X+11.901 Y-11.911 +N8172 G01 X+18.929 Y-5.501 +N8174 G01 X+19.555 Y-5.202 +N8176 G01 X+20.209 Y-5.158 +N8178 G01 X+20.849 Y-5.367 +N8180 G01 X+20.902 Y-5.399 +N8182 G01 X+27.631 Y-11.578 +N8184 G01 X+34.471 Y-18.957 +N8186 G01 X+34.756 Y-19.531 +N8188 G01 X+34.809 Y-20.203 +N8190 G01 X+34.603 Y-20.827 +N8192 G01 X+34.571 Y-20.879 +N8194 G01 X+28.287 Y-27.669 +N8196 G01 X+21.015 Y-34.442 +N8198 G01 X+20.459 Y-34.723 +N8200 G01 X+19.803 Y-34.776 +N8202 G01 X+19.743 Y-34.768 +N8204 G01 X+19.195 Y-34.572 +N8206 G01 X+19.143 Y-34.541 +N8208 G01 X+12.565 Y-28.407 +N8210 G01 X+5.586 Y-20.987 +N8212 G01 X+5.31 Y-20.449 +N8214 G01 X+5.257 Y-19.809 +N8216 G01 X+5.265 Y-19.749 +N8218 G01 X+5.458 Y-19.217 +N8220 G01 X+5.489 Y-19.165 +N8222 G01 X+12.118 Y-12.118 +N8224 G01 X+18.993 Y-5.658 +N8226 G01 X+19.561 Y-5.344 +N8228 G01 X+19.621 Y-5.326 +N8230 G01 X+20.152 Y-5.285 +N8232 G01 X+20.213 Y-5.293 +N8234 G01 X+20.732 Y-5.472 +N8236 G01 X+20.787 Y-5.504 +N8238 G01 X+27.246 Y-11.613 +N8240 G01 X+34.358 Y-19.071 +N8242 G01 X+34.606 Y-19.513 +N8244 G01 X+34.684 Y-20.113 +N8246 G01 X+34.677 Y-20.178 +N8248 G01 X+34.498 Y-20.71 +N8250 G01 X+34.464 Y-20.766 +N8252 G01 X+28.427 Y-27.101 +N8254 G01 X+20.901 Y-34.329 +N8256 G01 X+20.475 Y-34.573 +N8258 G01 X+19.891 Y-34.651 +N8260 G01 X+19.825 Y-34.644 +N8262 G01 X+19.311 Y-34.468 +N8264 G01 X+19.256 Y-34.434 +N8266 G01 X+12.949 Y-28.376 +N8268 G01 X+5.699 Y-20.873 +N8270 G01 X+5.459 Y-20.463 +N8272 G01 X+5.441 Y-20.405 +N8274 G01 X+5.382 Y-19.895 +N8276 G01 X+5.389 Y-19.829 +N8278 G01 X+5.548 Y-19.358 +N8280 G01 X+5.582 Y-19.301 +N8282 G01 X+12.33 Y-12.33 +N8284 G01 X+19.11 Y-5.77 +N8286 G01 X+19.548 Y-5.494 +N8288 G01 X+19.61 Y-5.473 +N8290 G01 X+20.101 Y-5.415 +N8292 G01 X+20.167 Y-5.422 +N8294 G01 X+20.622 Y-5.578 +N8296 G01 X+20.678 Y-5.613 +N8298 G01 X+26.339 Y-11.124 +N8300 G01 X+34.245 Y-19.185 +N8302 G01 X+34.455 Y-19.511 +N8304 G01 X+34.556 Y-20.039 +N8306 G01 X+34.552 Y-20.106 +N8308 G01 X+34.419 Y-20.552 +N8310 G01 X+34.382 Y-20.613 +N8312 G01 X+29.632 Y-25.479 +N8314 G01 X+20.787 Y-34.217 +N8316 G01 X+20.475 Y-34.422 +N8318 G01 X+20.419 Y-34.444 +N8320 G01 X+19.964 Y-34.523 +N8322 G01 X+19.895 Y-34.518 +N8324 G01 X+19.466 Y-34.387 +N8326 G01 X+19.406 Y-34.353 +N8328 G01 X+18.131 Y-33.137 +N8330 G01 X+5.809 Y-20.756 +N8332 G01 X+5.644 Y-20.53 +N8334 G01 X+5.511 Y-20.024 +N8336 G01 X+5.513 Y-19.948 +N8338 G01 X+5.643 Y-19.488 +N8340 G01 X+5.681 Y-19.423 +N8342 G01 X+12.542 Y-12.542 +N8344 G01 X+19.248 Y-5.836 +N8346 G01 X+19.543 Y-5.629 +N8348 G01 X+19.601 Y-5.605 +N8350 G01 X+20.027 Y-5.527 +N8352 G01 X+20.099 Y-5.531 +N8354 G01 X+20.508 Y-5.659 +N8356 G01 X+20.569 Y-5.696 +N8358 G01 X+34.164 Y-19.248 +N8360 G01 X+34.371 Y-19.543 +N8362 G01 X+34.395 Y-19.601 +N8364 G01 X+34.473 Y-20.027 +N8366 G01 X+34.469 Y-20.099 +N8368 G01 X+34.341 Y-20.508 +N8370 G01 X+34.304 Y-20.569 +N8372 G01 X+20.752 Y-34.164 +N8374 G01 X+20.457 Y-34.371 +N8376 G01 X+20.399 Y-34.395 +N8378 G01 X+19.973 Y-34.473 +N8380 G01 X+19.901 Y-34.469 +N8382 G01 X+19.492 Y-34.341 +N8384 G01 X+19.431 Y-34.304 +N8386 G01 X+5.834 Y-20.751 +N8388 G01 X+5.656 Y-20.512 +N8390 G01 X+5.527 Y-20.036 +N8392 G01 Y-19.964 +N8394 G01 X+5.629 Y-19.552 +N8396 G01 X+5.668 Y-19.483 +N8398 G01 X+12.542 Y-12.542 +N8400 G03 X+12.521 Y-8.299 I-2.132 J+2.111 F16500 +N8402 G01 Z+2.867 +N8404 G00 Z+7.867 +N8406 G00 X-0.261 Y+1.962 Z+2.05 +N8408 G00 Z-2.95 +N8410 G01 X+0 Y+1.95 F16500 +N8412 G01 X+40.391 Y+1.904 F16500 +N8414 G01 X+40.451 Y+1.891 +N8416 G01 X+41.091 Y+1.609 +N8418 G01 X+41.624 Y+1.069 +N8420 G01 X+41.913 Y+0.359 +N8422 G01 X+41.949 Y+0.007 +N8424 G01 X+41.904 Y-40.391 +N8426 G01 X+41.891 Y-40.451 +N8428 G01 X+41.609 Y-41.091 +N8430 G01 X+41.069 Y-41.624 +N8432 G01 X+40.359 Y-41.913 +N8434 G01 X+40.007 Y-41.949 +N8436 G01 X-0.391 Y-41.904 +N8438 G01 X-0.451 Y-41.891 +N8440 G01 X-1.091 Y-41.609 +N8442 G01 X-1.624 Y-41.069 +N8444 G01 X-1.913 Y-40.359 +N8446 G01 X-1.949 Y-40.007 +N8448 G01 X-1.904 Y+0.391 +N8450 G01 X-1.891 Y+0.451 +N8452 G01 X-1.838 Y+0.57 +N8454 G01 X-1.807 Y+0.696 +N8456 G01 X-1.718 Y+0.896 +N8458 G01 X-1.397 Y+1.34 +N8460 G01 X-1.269 Y+1.463 +N8462 G01 X-0.992 Y+1.663 +N8464 G01 X-0.726 Y+1.795 +N8466 G01 X-0.502 Y+1.869 +N8468 G01 X+0.432 Y+1.935 +N8470 G01 X+40 Y+1.874 +N8472 G01 X+40.085 Y+1.872 +N8474 G01 X+40.623 Y+1.764 +N8476 G01 X+40.859 Y+1.663 +N8478 G01 X+41.404 Y+1.232 +N8480 G01 X+41.644 Y+0.891 +N8482 G01 X+41.805 Y+0.482 +N8484 G01 X+41.87 Y-0.432 +N8486 G01 X+41.872 Y-26.275 +N8488 G01 X+41.806 Y-40.084 +N8490 G01 X+41.752 Y-40.44 +N8492 G01 X+41.683 Y-40.659 +N8494 G01 X+41.566 Y-40.899 +N8496 G01 X+41.176 Y-41.367 +N8498 G01 X+40.863 Y-41.584 +N8500 G01 X+40.389 Y-41.759 +N8502 G01 X+38.457 Y-41.802 +N8504 G01 X+16.111 Y-41.853 +N8506 G01 X+1.296 Y-41.745 +N8508 G01 X-0.104 Y-41.739 +N8510 G01 X-0.61 Y-41.629 +N8512 G01 X-0.861 Y-41.513 +N8514 G01 X-1.221 Y-41.239 +N8516 G01 X-1.324 Y-41.13 +N8518 G01 X-1.494 Y-40.889 +N8520 G01 X-1.686 Y-40.416 +N8522 G01 X-1.738 Y-39.198 +N8524 G01 X-1.778 Y-28.4 +N8526 G01 X-1.831 Y-17.346 +N8528 G01 X-1.688 Y-6.539 +N8530 G01 X-1.674 Y+0.096 +N8532 G01 X-1.564 Y+0.6 +N8534 G01 X-1.489 Y+0.77 +N8536 G01 X-1.105 Y+1.256 +N8538 G01 X-0.863 Y+1.435 +N8540 G01 X-0.442 Y+1.613 +N8542 G01 X+0.432 Y+1.674 +N8544 G01 X+9.976 Y+1.709 +N8546 G01 X+21.543 Y+1.811 +N8548 G01 X+36.111 Y+1.623 +N8550 G01 X+40 Y+1.617 +N8552 G01 X+40.071 Y+1.615 +N8554 G01 X+40.535 Y+1.523 +N8556 G01 X+40.739 Y+1.436 +N8558 G01 X+41.209 Y+1.065 +N8560 G01 X+41.417 Y+0.771 +N8562 G01 X+41.556 Y+0.419 +N8564 G01 X+41.613 Y-0.556 +N8566 G01 X+41.644 Y-9.074 +N8568 G01 X+41.788 Y-20.802 +N8570 G01 X+41.563 Y-35.741 +N8572 G01 X+41.554 Y-40.07 +N8574 G01 X+41.508 Y-40.377 +N8576 G01 X+41.448 Y-40.566 +N8578 G01 X+41.349 Y-40.771 +N8580 G01 X+41.019 Y-41.168 +N8582 G01 X+40.459 Y-41.478 +N8584 G01 X+40.4 Y-41.495 +N8586 G01 X+39.691 Y-41.553 +N8588 G01 X+31.42 Y-41.582 +N8590 G01 X+19.691 Y-41.762 +N8592 G01 X+4.63 Y-41.502 +N8594 G01 X-0.087 Y-41.492 +N8596 G01 X-0.521 Y-41.398 +N8598 G01 X-0.737 Y-41.299 +N8600 G01 X-1.046 Y-41.064 +N8602 G01 X-1.135 Y-40.97 +N8604 G01 X-1.281 Y-40.765 +N8606 G01 X-1.444 Y-40.361 +N8608 G01 X-1.49 Y-38.457 +N8610 G01 X-1.521 Y-31.667 +N8612 G01 X-1.736 Y-19.938 +N8614 G01 X-1.546 Y-10.476 +N8616 G01 X-1.444 Y-6.539 +N8618 G01 X-1.378 Y+0.37 +N8620 G01 X-1.274 Y+0.652 +N8622 G01 X-0.946 Y+1.071 +N8624 G01 X-0.74 Y+1.225 +N8626 G01 X-0.383 Y+1.377 +N8628 G01 X+0.679 Y+1.431 +N8630 G01 X+8.226 Y+1.463 +N8632 G01 X+19.938 Y+1.709 +N8634 G01 X+27.4 Y+1.557 +N8636 G01 X+34.877 Y+1.381 +N8638 G01 X+40 Y+1.374 +N8640 G01 X+40.085 Y+1.369 +N8642 G01 X+40.452 Y+1.294 +N8644 G01 X+40.625 Y+1.221 +N8646 G01 X+41.024 Y+0.907 +N8648 G01 X+41.202 Y+0.657 +N8650 G01 X+41.32 Y+0.361 +N8652 G01 X+41.37 Y-0.802 +N8654 G01 X+41.397 Y-7.84 +N8656 G01 X+41.682 Y-19.568 +N8658 G01 X+41.566 Y-25.741 +N8660 G01 X+41.321 Y-34.63 +N8662 G01 X+41.311 Y-40.053 +N8664 G01 X+41.223 Y-40.468 +N8666 G01 X+41.139 Y-40.648 +N8668 G01 X+40.864 Y-40.979 +N8670 G01 X+40.815 Y-41.017 +N8672 G01 X+40.296 Y-41.268 +N8674 G01 X+40.232 Y-41.283 +N8676 G01 X+32.16 Y-41.34 +N8678 G01 X+20.679 Y-41.654 +N8680 G01 X+15 Y-41.553 +N8682 G01 X+5.494 Y-41.26 +N8684 G01 X-0.254 Y-41.219 +N8686 G01 X-0.609 Y-41.089 +N8688 G01 X-0.869 Y-40.896 +N8690 G01 X-1.068 Y-40.645 +N8692 G01 X-1.207 Y-40.308 +N8694 G01 X-1.242 Y-35 +N8696 G01 X-1.308 Y-31.42 +N8698 G01 X-1.627 Y-20.802 +N8700 G01 X-1.535 Y-15.494 +N8702 G01 X-1.2 Y-6.539 +N8704 G01 X-1.143 Y+0.302 +N8706 G01 X-1.059 Y+0.538 +N8708 G01 X-0.791 Y+0.881 +N8710 G01 X-0.455 Y+1.095 +N8712 G01 X-0.318 Y+1.144 +N8714 G01 X+1.173 Y+1.186 +N8716 G01 X+7.476 Y+1.211 +N8718 G01 X+19.074 Y+1.597 +N8720 G01 X+24.151 Y+1.513 +N8722 G01 X+34.383 Y+1.133 +N8724 G01 X+39.987 Y+1.125 +N8726 G01 X+40.365 Y+1.06 +N8728 G01 X+40.508 Y+1.001 +N8730 G01 X+40.828 Y+0.751 +N8732 G01 X+40.867 Y+0.703 +N8734 G01 X+41.072 Y+0.308 +N8736 G01 X+41.088 Y+0.241 +N8738 G01 X+41.119 Y-2.284 +N8740 G01 X+41.153 Y-7.593 +N8742 G01 X+41.568 Y-19.074 +N8744 G01 X+41.489 Y-23.889 +N8746 G01 X+41.068 Y-34.259 +N8748 G01 X+41.057 Y-40.039 +N8750 G01 X+40.987 Y-40.374 +N8752 G01 X+40.92 Y-40.519 +N8754 G01 X+40.701 Y-40.785 +N8756 G01 X+40.652 Y-40.823 +N8758 G01 X+40.245 Y-41.02 +N8760 G01 X+40.18 Y-41.035 +N8762 G01 X+32.407 Y-41.091 +N8764 G01 X+21.173 Y-41.536 +N8766 G01 X+16.481 Y-41.47 +N8768 G01 X+5.741 Y-41.002 +N8770 G01 X-0.254 Y-40.952 +N8772 G01 X-0.482 Y-40.865 +N8774 G01 X-0.686 Y-40.713 +N8776 G01 X-0.845 Y-40.515 +N8778 G01 X-0.956 Y-40.249 +N8780 G01 X-1.018 Y-32.654 +N8782 G01 X-1.505 Y-21.296 +N8784 G01 X-1.451 Y-16.852 +N8786 G01 X-0.938 Y-6.539 +N8788 G01 X-0.891 Y+0.229 +N8790 G01 X-0.827 Y+0.415 +N8792 G01 X-0.623 Y+0.679 +N8794 G01 X-0.576 Y+0.718 +N8796 G01 X-0.264 Y+0.88 +N8798 G01 X-0.196 Y+0.897 +N8800 G01 X+7.476 Y+0.961 +N8802 G01 X+18.58 Y+1.473 +N8804 G01 X+22.901 Y+1.428 +N8806 G01 X+34.136 Y+0.871 +N8808 G01 X+39.982 Y+0.862 +N8810 G01 X+40.372 Y+0.769 +N8812 G01 X+40.429 Y+0.741 +N8814 G01 X+40.629 Y+0.58 +N8816 G01 X+40.668 Y+0.532 +N8818 G01 X+40.818 Y+0.244 +N8820 G01 X+40.834 Y+0.176 +N8822 G01 X+40.892 Y-7.346 +N8824 G01 X+41.441 Y-18.457 +N8826 G01 X+41.406 Y-22.654 +N8828 G01 X+40.806 Y-34.136 +N8830 G01 X+40.771 Y-40.17 +N8832 G01 X+40.695 Y-40.382 +N8834 G01 X+40.533 Y-40.585 +N8836 G01 X+40.483 Y-40.623 +N8838 G01 X+40.192 Y-40.764 +N8840 G01 X+40.127 Y-40.779 +N8842 G01 X+32.654 Y-40.829 +N8844 G01 X+21.543 Y-41.411 +N8846 G01 X+17.469 Y-41.379 +N8848 G01 X+5.864 Y-40.74 +N8850 G01 X-0.183 Y-40.696 +N8852 G01 X-0.26 Y-40.673 +N8854 G01 X-0.482 Y-40.537 +N8856 G01 X-0.535 Y-40.482 +N8858 G01 X-0.692 Y-40.198 +N8860 G01 X-0.711 Y-40.126 +N8862 G01 X-0.766 Y-32.654 +N8864 G01 X-1.379 Y-21.667 +N8866 G01 X-1.357 Y-17.716 +N8868 G01 X-0.676 Y-6.539 +N8870 G01 X-0.628 Y+0.174 +N8872 G01 X-0.602 Y+0.258 +N8874 G01 X-0.454 Y+0.473 +N8876 G01 X-0.4 Y+0.522 +N8878 G01 X-0.198 Y+0.626 +N8880 G01 X-0.13 Y+0.643 +N8882 G01 X+7.226 Y+0.696 +N8884 G01 X+18.333 Y+1.349 +N8886 G01 X+22.407 Y+1.321 +N8888 G01 X+34.012 Y+0.609 +N8890 G01 X+39.982 Y+0.6 +N8892 G01 X+40.249 Y+0.537 +N8894 G01 X+40.306 Y+0.509 +N8896 G01 X+40.43 Y+0.41 +N8898 G01 X+40.469 Y+0.362 +N8900 G01 X+40.564 Y+0.179 +N8902 G01 X+40.581 Y+0.111 +N8904 G01 X+40.624 Y-7.099 +N8906 G01 X+41.315 Y-18.21 +N8908 G01 X+41.304 Y-22.037 +N8910 G01 X+40.544 Y-34.012 +N8912 G01 X+40.496 Y-40.15 +N8914 G01 X+40.468 Y-40.236 +N8916 G01 X+40.37 Y-40.371 +N8918 G01 X+40.3 Y-40.424 +N8920 G01 X+40.025 Y-40.524 +N8922 G01 X+32.901 Y-40.561 +N8924 G01 X+21.79 Y-41.285 +N8926 G01 X+17.963 Y-41.274 +N8928 G01 X+5.988 Y-40.478 +N8930 G01 X-0.124 Y-40.437 +N8932 G01 X-0.205 Y-40.413 +N8934 G01 X-0.294 Y-40.355 +N8936 G01 X-0.349 Y-40.291 +N8938 G01 X-0.453 Y-40.062 +N8940 G01 X-0.466 Y-40 +N8942 G01 X-0.497 Y-32.901 +N8944 G01 X-1.255 Y-21.79 +N8946 G01 X-1.243 Y-17.963 +N8948 G01 X-0.447 Y-6.976 +N8950 G01 X-0.413 Y-6.539 +N8952 G01 X-0.355 Y+0.117 +N8954 G01 X-0.298 Y+0.233 +N8956 G01 X-0.141 Y+0.357 +N8958 G01 X-0.049 Y+0.389 +N8960 G01 X+6.976 Y+0.423 +N8962 G01 X+18.21 Y+1.224 +N8964 G01 X+21.79 Y+1.221 +N8966 G01 X+27.4 Y+0.826 +N8968 G01 X+33.889 Y+0.342 +N8970 G01 X+39.967 Y+0.332 +N8972 G01 X+40.03 Y+0.318 +N8974 G01 X+40.189 Y+0.244 +N8976 G01 X+40.271 Y+0.15 +N8978 G01 X+40.325 Y-0.042 +N8980 G01 X+40.363 Y-7.099 +N8982 G01 X+41.191 Y-18.21 +N8984 G01 X+41.193 Y-21.667 +N8986 G01 X+40.872 Y-26.235 +N8988 G01 X+40.272 Y-33.889 +N8990 G01 X+40.226 Y-40.046 +N8992 G01 X+40.15 Y-40.175 +N8994 G01 X+40.034 Y-40.241 +N8996 G01 X+39.961 Y-40.261 +N8998 G01 X+32.901 Y-40.295 +N9000 G01 X+22.037 Y-41.149 +N9002 G01 X+18.58 Y-41.169 +N9004 G01 X+14.753 Y-40.912 +N9006 G01 X+6.111 Y-40.202 +N9008 G01 X-0.032 Y-40.147 +N9010 G01 X-0.164 Y-40.065 +N9012 G01 X-0.191 Y-39.978 +N9014 G01 X-0.227 Y-32.901 +N9016 G01 X-1.117 Y-22.037 +N9018 G01 X-1.141 Y-18.704 +N9020 G01 X-0.891 Y-15 +N9022 G01 X-0.133 Y-6.546 +N9024 G01 X-0.123 Y-0.062 +N9026 G01 X-0.079 Y+0.044 +N9028 G01 X+0.062 Y+0.124 +N9030 G01 X+6.976 Y+0.153 +N9032 G01 X+17.963 Y+1.088 +N9034 G01 X+21.296 Y+1.114 +N9036 G01 X+24.901 Y+0.866 +N9038 G01 X+33.889 Y+0.075 +N9040 G01 X+39.876 Y+0.067 +N9042 G01 X+39.982 Y+0.023 +N9044 G01 X+40.067 Y-0.123 +N9046 G01 X+40.109 Y-7.099 +N9048 G01 X+41.056 Y-17.84 +N9050 G01 X+41.092 Y-21.173 +N9052 G01 X+40.87 Y-24.506 +N9054 G01 X+40.02 Y-33.882 +N9056 G01 X+40 Y-39.862 +N9058 G02 X+39.851 Y-40.012 I-0.15 J+0 +N9060 G01 X+32.901 Y-40.054 +N9062 G01 X+22.16 Y-41.03 +N9064 G01 X+18.827 Y-41.067 +N9066 G01 X+15.494 Y-40.839 +N9068 G01 X+6.118 Y-39.964 +N9070 G01 X+0.194 Y-39.939 +N9072 G02 X+0.044 Y-39.79 I+0 J+0.15 +N9074 G01 X+0.001 Y-32.901 +N9076 G01 X-1.003 Y-22.16 +N9078 G01 X-1.042 Y-18.827 +N9080 G01 X-0.807 Y-15.494 +N9082 G01 X+0.092 Y-6.546 +N9084 G01 X+0.101 Y-0.25 +N9086 G02 X+0.25 Y-0.1 I+0.15 J+0 +N9088 G01 X+6.97 Y-0.066 +N9090 G01 X+17.84 Y+0.978 +N9092 G01 X+20.926 Y+1.025 +N9094 G01 X+24.151 Y+0.814 +N9096 G01 X+33.882 Y-0.144 +N9098 G01 X+39.698 Y-0.152 +N9100 G02 X+39.848 Y-0.302 I+0 J-0.15 +N9102 G01 X+39.871 Y-6.844 +N9104 G01 X+40.954 Y-17.84 +N9106 G01 X+41.002 Y-20.926 +N9108 G01 X+40.8 Y-24.012 +N9110 G01 X+39.805 Y-33.758 +N9112 G01 X+39.796 Y-39.629 +N9114 G01 X+39.752 Y-39.735 +N9116 G01 X+39.63 Y-39.796 +N9118 G01 X+33.156 Y-39.821 +N9120 G01 X+22.16 Y-40.93 +N9122 G01 X+19.074 Y-40.979 +N9124 G01 X+15.988 Y-40.772 +N9126 G01 X+6.242 Y-39.753 +N9128 G01 X+0.405 Y-39.745 +N9130 G02 X+0.255 Y-39.595 I+0 J+0.15 +N9132 G01 X+0.23 Y-33.156 +N9134 G01 X-0.906 Y-22.16 +N9136 G01 X-0.959 Y-19.198 +N9138 G01 X-0.758 Y-16.111 +N9140 G01 X+0.298 Y-6.547 +N9142 G01 X+0.308 Y-0.494 +N9144 G01 X+0.352 Y-0.388 +N9146 G01 X+0.494 Y-0.308 +N9148 G01 X+6.969 Y-0.27 +N9150 G01 X+17.716 Y+0.871 +N9152 G01 X+20.679 Y+0.936 +N9154 G01 X+23.642 Y+0.753 +N9156 G01 X+33.757 Y-0.359 +N9158 G01 X+39.482 Y-0.369 +N9160 G02 X+39.631 Y-0.518 I-0.001 J-0.15 +N9162 G01 X+39.657 Y-6.844 +N9164 G01 X+40.85 Y-17.833 +N9166 G01 X+40.907 Y-20.796 +N9168 G01 X+40.695 Y-23.889 +N9170 G01 X+39.58 Y-33.757 +N9172 G01 X+39.57 Y-39.382 +N9174 G01 X+39.526 Y-39.488 +N9176 G01 X+39.383 Y-39.57 +N9178 G01 X+33.156 Y-39.597 +N9180 G01 X+22.167 Y-40.821 +N9182 G01 X+19.204 Y-40.88 +N9184 G01 X+16.111 Y-40.662 +N9186 G01 X+6.243 Y-39.519 +N9188 G01 X+0.64 Y-39.509 +N9190 G02 X+0.49 Y-39.36 I+0 J+0.15 +N9192 G01 X+0.463 Y-33.157 +N9194 G01 X-0.777 Y-22.407 +N9196 G01 X-0.86 Y-19.575 +N9198 G01 X-0.685 Y-16.605 +N9200 G01 X+0.541 Y-6.548 +N9202 G01 X+0.551 Y-0.741 +N9204 G01 X+0.595 Y-0.635 +N9206 G01 X+0.741 Y-0.551 +N9208 G01 X+6.968 Y-0.508 +N9210 G01 X+17.586 Y+0.747 +N9212 G01 X+20.425 Y+0.833 +N9214 G01 X+23.395 Y+0.654 +N9216 G01 X+33.757 Y-0.603 +N9218 G01 X+39.238 Y-0.612 +N9220 G02 X+39.388 Y-0.762 I+0 J-0.15 +N9222 G01 X+39.386 Y-6.592 +N9224 G01 X+40.718 Y-17.586 +N9226 G01 X+40.806 Y-20.425 +N9228 G01 X+40.623 Y-23.395 +N9230 G01 X+39.336 Y-33.756 +N9232 G01 X+39.321 Y-39.177 +N9234 G02 X+39.171 Y-39.327 I-0.15 J+0 +N9236 G01 X+33.408 Y-39.326 +N9238 G01 X+22.414 Y-40.689 +N9240 G01 X+19.575 Y-40.779 +N9242 G01 X+16.852 Y-40.618 +N9244 G01 X+6.244 Y-39.276 +N9246 G01 X+0.884 Y-39.266 +N9248 G02 X+0.734 Y-39.116 I+0 J+0.15 +N9250 G01 X+0.735 Y-33.408 +N9252 G01 X-0.66 Y-22.414 +N9254 G01 X-0.754 Y-19.698 +N9256 G01 X-0.601 Y-16.975 +N9258 G01 X+0.785 Y-6.549 +N9260 G01 X+0.802 Y-0.944 +N9262 G02 X+0.952 Y-0.794 I+0.15 J+0 +N9264 G01 X+6.719 Y-0.778 +N9266 G01 X+17.586 Y+0.631 +N9268 G01 X+20.302 Y+0.727 +N9270 G01 X+23.025 Y+0.571 +N9272 G01 X+33.756 Y-0.846 +N9274 G01 X+38.995 Y-0.856 +N9276 G02 X+39.144 Y-1.006 I-0.001 J-0.15 +N9278 G01 Y-6.592 +N9280 G01 X+40.602 Y-17.585 +N9282 G01 X+40.7 Y-20.302 +N9284 G01 X+40.54 Y-23.025 +N9286 G01 X+39.093 Y-33.756 +N9288 G01 X+39.075 Y-38.934 +N9290 G02 X+38.925 Y-39.083 I-0.15 J+0.001 +N9292 G01 X+33.409 +N9294 G01 X+22.538 Y-40.562 +N9296 G01 X+19.699 Y-40.673 +N9298 G01 X+16.975 Y-40.51 +N9300 G01 X+6.245 Y-39.032 +N9302 G01 X+1.127 Y-39.023 +N9304 G02 X+0.978 Y-38.873 I+0.001 J+0.15 +N9306 G01 X+0.977 Y-33.409 +N9308 G01 X-0.533 Y-22.538 +N9310 G01 X-0.648 Y-19.945 +N9312 G01 X-0.519 Y-17.353 +N9314 G01 X+1.028 Y-6.549 +N9316 G01 X+1.049 Y-1.187 +N9318 G02 X+1.198 Y-1.038 I+0.15 J-0.001 +N9320 G01 X+6.718 Y-1.019 +N9322 G01 X+17.462 Y+0.504 +N9324 G01 X+20.055 Y+0.622 +N9326 G01 X+22.648 Y+0.49 +N9328 G01 X+33.755 Y-1.09 +N9330 G01 X+38.751 Y-1.099 +N9332 G02 X+38.901 Y-1.249 I+0 J-0.15 +N9334 G01 X+38.902 Y-6.591 +N9336 G01 X+40.475 Y-17.462 +N9338 G01 X+40.595 Y-20.054 +N9340 G01 X+40.46 Y-22.647 +N9342 G01 X+38.85 Y-33.755 +N9344 G01 X+38.828 Y-38.691 +N9346 G02 X+38.678 Y-38.84 I-0.15 J+0.001 +N9348 G01 X+33.409 Y-38.841 +N9350 G01 X+22.538 Y-40.446 +N9352 G01 X+19.946 Y-40.568 +N9354 G01 X+17.353 Y-40.431 +N9356 G01 X+6.245 Y-38.789 +N9358 G01 X+1.371 Y-38.779 +N9360 G02 X+1.221 Y-38.629 I+0 J+0.15 +N9362 G01 X+1.22 Y-33.41 +N9364 G01 X-0.416 Y-22.538 +N9366 G01 X-0.541 Y-19.946 +N9368 G01 X-0.414 Y-17.476 +N9370 G01 X+0.372 Y-12.225 +N9372 G01 X+1.271 Y-6.55 +N9374 G01 X+1.296 Y-1.43 +N9376 G02 X+1.445 Y-1.281 I+0.15 J-0.001 +N9378 G01 X+6.717 Y-1.26 +N9380 G01 X+17.462 Y+0.387 +N9382 G01 X+19.931 Y+0.515 +N9384 G01 X+22.4 Y+0.397 +N9386 G01 X+26.15 Y-0.155 +N9388 G01 X+33.754 Y-1.333 +N9390 G01 X+38.508 Y-1.342 +N9392 G02 X+38.658 Y-1.492 I+0 J-0.15 +N9394 G01 X+38.659 Y-6.59 +N9396 G01 X+40.358 Y-17.462 +N9398 G01 X+40.488 Y-19.931 +N9400 G01 X+40.368 Y-22.4 +N9402 G01 X+39.833 Y-25.988 +N9404 G01 X+38.606 Y-33.754 +N9406 G01 X+38.581 Y-38.448 +N9408 G02 X+38.431 Y-38.597 I-0.15 J+0.001 +N9410 G01 X+33.41 Y-38.599 +N9412 G01 X+22.662 Y-40.316 +N9414 G01 X+20.07 Y-40.461 +N9416 G01 X+17.6 Y-40.339 +N9418 G01 X+14.012 Y-39.794 +N9420 G01 X+6.246 Y-38.545 +N9422 G01 X+1.614 Y-38.536 +N9424 G02 X+1.464 Y-38.386 I+0 J+0.15 +N9426 G01 X+1.462 Y-33.411 +N9428 G01 X-0.286 Y-22.662 +N9430 G01 X-0.434 Y-20.07 +N9432 G01 X-0.31 Y-17.6 +N9434 G01 X+0.203 Y-14.259 +N9436 G01 X+1.515 Y-6.551 +N9438 G01 X+1.542 Y-1.674 +N9440 G02 X+1.693 Y-1.525 I+0.15 J-0.001 +N9442 G01 X+6.527 Y-1.533 +N9444 G01 X+17.338 Y+0.257 +N9446 G01 X+19.93 Y+0.408 +N9448 G01 X+22.4 Y+0.282 +N9450 G01 X+25.65 Y-0.225 +N9452 G01 X+33.753 Y-1.576 +N9454 G01 X+38.265 Y-1.586 +N9456 G02 X+38.414 Y-1.735 I-0.001 J-0.149 +N9458 G01 X+38.417 Y-6.589 +N9460 G01 X+40.228 Y-17.338 +N9462 G01 X+40.381 Y-19.93 +N9464 G01 X+40.265 Y-22.276 +N9466 G01 X+39.808 Y-25.247 +N9468 G01 X+38.363 Y-33.63 +N9470 G01 X+38.334 Y-38.204 +N9472 G02 X+38.184 Y-38.354 I-0.15 J+0 +N9474 G01 X+33.411 Y-38.356 +N9476 G01 X+22.662 Y-40.198 +N9478 G01 X+20.316 Y-40.352 +N9480 G01 X+17.971 Y-40.261 +N9482 G01 X+15.494 Y-39.904 +N9484 G01 X+6.371 Y-38.302 +N9486 G01 X+1.857 Y-38.293 +N9488 G02 X+1.707 Y-38.143 I+0 J+0.15 +N9490 G01 X+1.704 Y-33.411 +N9492 G01 X-0.169 Y-22.662 +N9494 G01 X-0.325 Y-20.317 +N9496 G01 X-0.232 Y-17.971 +N9498 G01 X+0.131 Y-15.494 +N9500 G01 X+1.758 Y-6.552 +N9502 G01 X+1.789 Y-1.917 +N9504 G02 X+1.939 Y-1.768 I+0.15 J-0.001 +N9506 G01 X+6.526 Y-1.776 +N9508 G01 X+17.338 Y+0.139 +N9510 G01 X+19.683 Y+0.299 +N9512 G01 X+22.029 Y+0.204 +N9514 G01 X+24.651 Y-0.192 +N9516 G01 X+33.629 Y-1.819 +N9518 G01 X+38.021 Y-1.829 +N9520 G02 X+38.171 Y-1.979 I+0 J-0.15 +N9522 G01 X+38.175 Y-6.588 +N9524 G01 X+40.11 Y-17.338 +N9526 G01 X+40.272 Y-19.683 +N9528 G01 X+40.176 Y-22.029 +N9530 G01 X+39.801 Y-24.506 +N9532 G01 X+38.12 Y-33.629 +N9534 G01 X+38.087 Y-37.961 +N9536 G02 X+37.938 Y-38.11 I-0.15 J+0.001 +N9538 G01 X+33.412 Y-38.114 +N9540 G01 X+22.663 Y-40.08 +N9542 G01 X+20.317 Y-40.245 +N9544 G01 X+17.971 Y-40.147 +N9546 G01 X+15.494 Y-39.767 +N9548 G01 X+6.372 Y-38.059 +N9550 G01 X+2.1 Y-38.049 +N9552 G02 X+1.951 Y-37.9 I+0.001 J+0.15 +N9554 G01 X+1.947 Y-33.412 +N9556 G01 X-0.051 Y-22.663 +N9558 G01 X-0.218 Y-20.317 +N9560 G01 X-0.119 Y-17.971 +N9562 G01 X+0.268 Y-15.494 +N9564 G01 X+2.001 Y-6.553 +N9566 G01 X+2.036 Y-2.16 +N9568 G02 X+2.186 Y-2.011 I+0.15 J-0.001 +N9570 G01 X+6.525 Y-2.017 +N9572 G01 X+17.337 Y+0.023 +N9574 G01 X+19.56 Y+0.191 +N9576 G01 X+21.782 Y+0.116 +N9578 G01 X+24.151 Y-0.23 +N9580 G01 X+33.628 Y-2.058 +N9582 G01 X+37.778 Y-2.067 +N9584 G01 X+37.883 Y-2.111 +N9586 G01 X+37.933 Y-2.223 +N9588 G01 X+37.938 Y-6.587 +N9590 G01 X+39.996 Y-17.337 +N9592 G01 X+40.166 Y-19.56 +N9594 G01 X+40.09 Y-21.782 +N9596 G01 X+39.766 Y-24.012 +N9598 G01 X+37.886 Y-33.628 +N9600 G01 X+37.877 Y-37.727 +N9602 G02 X+37.727 Y-37.877 I-0.15 J+0 +N9604 G01 X+33.413 Y-37.882 +N9606 G01 X+22.663 Y-39.968 +N9608 G01 X+20.44 Y-40.141 +N9610 G01 X+18.218 Y-40.064 +N9612 G01 X+15.988 Y-39.736 +N9614 G01 X+6.372 Y-37.83 +N9616 G01 X+2.346 Y-37.821 +N9618 G01 X+2.24 Y-37.777 +N9620 G01 X+2.179 Y-37.654 +N9622 G01 X+2.174 Y-33.413 +N9624 G01 X+0.059 Y-22.663 +N9626 G01 X-0.116 Y-20.441 +N9628 G01 X-0.038 Y-18.218 +N9630 G01 X+0.294 Y-15.988 +N9632 G01 X+2.226 Y-6.554 +N9634 G01 X+2.235 Y-2.385 +N9636 G02 X+2.385 Y-2.235 I+0.15 J+0 +N9638 G01 X+6.524 Y-2.241 +N9640 G01 X+17.337 Y-0.085 +N9642 G01 X+19.559 Y+0.093 +N9644 G01 X+21.781 Y+0.014 +N9646 G01 X+24.151 Y-0.351 +N9648 G01 X+33.627 Y-2.278 +N9650 G01 X+37.531 Y-2.286 +N9652 G01 X+37.636 Y-2.33 +N9654 G01 X+37.714 Y-2.469 +N9656 G01 X+37.721 Y-6.587 +N9658 G01 X+39.89 Y-17.337 +N9660 G01 X+40.07 Y-19.559 +N9662 G01 X+39.99 Y-21.781 +N9664 G01 X+39.65 Y-24.012 +N9666 G01 X+37.671 Y-33.627 +N9668 G01 X+37.662 Y-37.513 +N9670 G02 X+37.513 Y-37.662 I-0.15 J+0.001 +N9672 G01 X+33.413 Y-37.669 +N9674 G01 X+22.663 Y-39.866 +N9676 G01 X+20.441 Y-40.047 +N9678 G01 X+18.219 Y-39.967 +N9680 G01 X+15.988 Y-39.622 +N9682 G01 X+6.373 Y-37.619 +N9684 G01 X+2.538 Y-37.593 +N9686 G02 X+2.389 Y-37.444 I+0.001 J+0.15 +N9688 G01 X+2.382 Y-33.414 +N9690 G01 X+0.159 Y-22.663 +N9692 G01 X-0.024 Y-20.441 +N9694 G01 X+0.057 Y-18.219 +N9696 G01 X+0.406 Y-15.988 +N9698 G01 X+2.432 Y-6.555 +N9700 G01 X+2.441 Y-2.593 +N9702 G01 X+2.485 Y-2.487 +N9704 G01 X+2.593 Y-2.441 +N9706 G01 X+6.523 Y-2.446 +N9708 G01 X+17.337 Y-0.184 +N9710 G01 X+19.559 Y+0.002 +N9712 G01 X+21.781 Y-0.081 +N9714 G01 X+24.151 Y-0.464 +N9716 G01 X+33.627 Y-2.484 +N9718 G01 X+37.358 Y-2.492 +N9720 G02 X+37.508 Y-2.642 I+0 J-0.15 +N9722 G01 X+37.515 Y-6.586 +N9724 G01 X+39.791 Y-17.337 +N9726 G01 X+39.976 Y-19.436 +N9728 G01 X+39.918 Y-21.535 +N9730 G01 X+39.617 Y-23.642 +N9732 G01 X+37.465 Y-33.626 +N9734 G01 X+37.456 Y-37.284 +N9736 G01 X+37.412 Y-37.39 +N9738 G01 X+37.284 Y-37.456 +N9740 G01 X+33.414 Y-37.464 +N9742 G01 X+22.663 Y-39.766 +N9744 G01 X+20.564 Y-39.953 +N9746 G01 X+18.465 Y-39.895 +N9748 G01 X+16.358 Y-39.59 +N9750 G01 X+6.374 Y-37.413 +N9752 G01 X+2.745 Y-37.405 +N9754 G02 X+2.595 Y-37.255 I+0 J+0.15 +N9756 G01 X+2.587 Y-33.414 +N9758 G01 X+0.259 Y-22.663 +N9760 G01 X+0.07 Y-20.564 +N9762 G01 X+0.129 Y-18.466 +N9764 G01 X+0.437 Y-16.358 +N9766 G01 X+2.638 Y-6.555 +N9768 G01 X+2.654 Y-2.797 +N9770 G02 X+2.804 Y-2.648 I+0.15 J-0.001 +N9772 G01 X+6.523 Y-2.654 +N9774 G01 X+17.336 Y-0.286 +N9776 G01 X+19.436 Y-0.095 +N9778 G01 X+21.534 Y-0.155 +N9780 G01 X+23.642 Y-0.467 +N9782 G01 X+33.626 Y-2.699 +N9784 G01 X+37.142 Y-2.708 +N9786 G02 X+37.292 Y-2.858 I+0 J-0.15 +N9788 G01 X+37.299 Y-6.585 +N9790 G01 X+39.684 Y-17.336 +N9792 G01 X+39.878 Y-19.435 +N9794 G01 X+39.818 Y-21.534 +N9796 G01 X+39.501 Y-23.642 +N9798 G01 X+37.24 Y-33.626 +N9800 G01 X+37.223 Y-37.082 +N9802 G02 X+37.073 Y-37.231 I-0.15 J+0.001 +N9804 G01 X+33.415 Y-37.238 +N9806 G01 X+22.664 Y-39.655 +N9808 G01 X+20.565 Y-39.851 +N9810 G01 X+18.466 Y-39.79 +N9812 G01 X+16.358 Y-39.469 +N9814 G01 X+6.374 Y-37.18 +N9816 G01 X+2.98 Y-37.17 +N9818 G02 X+2.83 Y-37.02 I+0 J+0.15 +N9820 G01 X+2.822 Y-33.415 +N9822 G01 X+0.375 Y-22.664 +N9824 G01 X+0.176 Y-20.565 +N9826 G01 X+0.238 Y-18.466 +N9828 G01 X+0.562 Y-16.358 +N9830 G01 X+2.881 Y-6.556 +N9832 G01 X+2.901 Y-3.04 +N9834 G02 X+3.051 Y-2.891 I+0.15 J-0.001 +N9836 G01 X+6.522 Y-2.897 +N9838 G01 X+17.336 Y-0.404 +N9840 G01 X+19.435 Y-0.203 +N9842 G01 X+21.534 Y-0.265 +N9844 G01 X+23.642 Y-0.594 +N9846 G01 X+33.625 Y-2.942 +N9848 G01 X+36.899 Y-2.952 +N9850 G02 X+37.048 Y-3.101 I-0.001 J-0.15 +N9852 G01 X+37.057 Y-6.584 +N9854 G01 X+39.567 Y-17.336 +N9856 G01 X+39.771 Y-19.435 +N9858 G01 X+39.707 Y-21.534 +N9860 G01 X+39.374 Y-23.642 +N9862 G01 X+36.997 Y-33.625 +N9864 G01 X+36.976 Y-36.839 +N9866 G02 X+36.826 Y-36.988 I-0.15 J+0.001 +N9868 G01 X+33.416 Y-36.996 +N9870 G01 X+22.664 Y-39.537 +N9872 G01 X+20.565 Y-39.744 +N9874 G01 X+18.59 Y-39.691 +N9876 G01 X+16.481 Y-39.37 +N9878 G01 X+6.375 Y-36.936 +N9880 G01 X+3.223 Y-36.927 +N9882 G02 X+3.073 Y-36.777 I+0 J+0.15 +N9884 G01 X+3.064 Y-33.416 +N9886 G01 X+0.492 Y-22.664 +N9888 G01 X+0.288 Y-20.688 +N9890 G01 X+0.326 Y-18.713 +N9892 G01 X+0.634 Y-16.612 +N9894 G01 X+3.124 Y-6.556 +N9896 G01 X+3.147 Y-3.283 +N9898 G02 X+3.298 Y-3.134 I+0.15 J-0.001 +N9900 G01 X+6.521 Y-3.14 +N9902 G01 X+17.09 Y-0.564 +N9904 G01 X+19.188 Y-0.32 +N9906 G01 X+21.164 Y-0.344 +N9908 G01 X+23.14 Y-0.614 +N9910 G01 X+33.624 Y-3.185 +N9912 G01 X+36.655 Y-3.195 +N9914 G02 X+36.805 Y-3.344 I+0 J-0.15 +N9916 G01 X+36.815 Y-6.584 +N9918 G01 X+39.406 Y-17.09 +N9920 G01 X+39.646 Y-19.064 +N9922 G01 X+39.629 Y-21.163 +N9924 G01 X+39.356 Y-23.14 +N9926 G01 X+36.754 Y-33.625 +N9928 G01 X+36.729 Y-36.596 +N9930 G02 X+36.58 Y-36.745 I-0.15 J+0.001 +N9932 G01 X+33.417 Y-36.754 +N9934 G01 X+22.91 Y-39.376 +N9936 G01 X+20.936 Y-39.619 +N9938 G01 X+18.837 Y-39.601 +N9940 G01 X+16.86 Y-39.325 +N9942 G01 X+6.5 Y-36.693 +N9944 G01 X+3.466 Y-36.683 +N9946 G02 X+3.317 Y-36.534 I+0.001 J+0.15 +N9948 G01 X+3.307 Y-33.417 +N9950 G01 X+0.654 Y-22.91 +N9952 G01 X+0.409 Y-20.936 +N9954 G01 X+0.426 Y-18.837 +N9956 G01 X+0.705 Y-16.86 +N9958 G01 X+3.367 Y-6.557 +N9960 G01 X+3.394 Y-3.527 +N9962 G02 X+3.544 Y-3.378 I+0.15 J-0.001 +N9964 G01 X+6.52 Y-3.383 +N9966 G01 X+17.09 Y-0.684 +N9968 G01 X+19.064 Y-0.436 +N9970 G01 X+21.163 Y-0.453 +N9972 G01 X+23.14 Y-0.735 +N9974 G01 X+33.5 Y-3.428 +N9976 G01 X+36.412 Y-3.438 +N9978 G02 X+36.562 Y-3.588 I+0 J-0.15 +N9980 G01 X+36.573 Y-6.583 +N9982 G01 X+39.286 Y-17.09 +N9984 G01 X+39.537 Y-19.064 +N9986 G01 X+39.52 Y-21.163 +N9988 G01 X+39.234 Y-23.14 +N9990 G01 X+36.511 Y-33.5 +N9992 G01 X+36.483 Y-36.353 +N9994 G02 X+36.333 Y-36.501 I-0.15 J+0.002 +N9996 G01 X+33.417 Y-36.512 +N9998 G01 X+22.911 Y-39.256 +N10000 G01 X+20.936 Y-39.51 +N10002 G01 X+18.837 Y-39.492 +N10004 G01 X+16.86 Y-39.204 +N10006 G01 X+6.5 Y-36.45 +N10008 G01 X+3.71 Y-36.44 +N10010 G02 X+3.56 Y-36.291 I+0 J+0.15 +N10012 G01 X+3.549 Y-33.418 +N10014 G01 X+0.774 Y-22.911 +N10016 G01 X+0.517 Y-20.936 +N10018 G01 X+0.535 Y-18.838 +N10020 G01 X+0.827 Y-16.861 +N10022 G01 X+3.611 Y-6.558 +N10024 G01 X+3.641 Y-3.769 +N10026 G02 X+3.791 Y-3.621 I+0.15 J-0.002 +N10028 G01 X+6.519 Y-3.625 +N10030 G01 X+17.089 Y-0.804 +N10032 G01 X+19.064 Y-0.544 +N10034 G01 X+21.162 Y-0.562 +N10036 G01 X+23.14 Y-0.857 +N10038 G01 X+33.499 Y-3.671 +N10040 G01 X+36.169 Y-3.681 +N10042 G02 X+36.319 Y-3.831 I+0 J-0.15 +N10044 G01 X+36.331 Y-6.582 +N10046 G01 X+39.166 Y-17.089 +N10048 G01 X+39.429 Y-19.064 +N10050 G01 X+39.411 Y-21.162 +N10052 G01 X+39.112 Y-23.139 +N10054 G01 X+36.268 Y-33.5 +N10056 G01 X+36.236 Y-36.11 +N10058 G02 X+36.087 Y-36.258 I-0.15 J+0.002 +N10060 G01 X+33.418 Y-36.27 +N10062 G01 X+22.911 Y-39.136 +N10064 G01 X+20.936 Y-39.402 +N10066 G01 X+19.084 +N10068 G01 X+17.109 Y-39.135 +N10070 G01 X+12.475 Y-37.875 +N10072 G01 X+6.501 Y-36.207 +N10074 G01 X+3.953 Y-36.197 +N10076 G02 X+3.803 Y-36.048 I+0 J+0.15 +N10078 G01 X+3.791 Y-33.418 +N10080 G01 X+0.894 Y-22.911 +N10082 G01 X+0.625 Y-20.936 +N10084 G01 Y-19.084 +N10086 G01 X+0.895 Y-17.109 +N10088 G01 X+2.098 Y-12.725 +N10090 G01 X+3.854 Y-6.558 +N10092 G01 X+3.887 Y-4.012 +N10094 G02 X+4.037 Y-3.864 I+0.15 J-0.002 +N10096 G01 X+6.518 Y-3.868 +N10098 G01 X+17.089 Y-0.924 +N10100 G01 X+19.064 Y-0.652 +N10102 G01 X+20.916 +N10104 G01 X+22.891 Y-0.925 +N10106 G01 X+27.15 Y-2.104 +N10108 G01 X+33.498 Y-3.915 +N10110 G01 X+35.926 Y-3.925 +N10112 G02 X+36.076 Y-4.074 I-0.001 J-0.15 +N10114 G01 X+36.088 Y-6.581 +N10116 G01 X+39.046 Y-17.089 +N10118 G01 X+39.321 Y-19.064 +N10120 G01 Y-20.916 +N10122 G01 X+39.045 Y-22.891 +N10124 G01 X+37.89 Y-27.025 +N10126 G01 X+36.024 Y-33.499 +N10128 G01 X+35.989 Y-35.867 +N10130 G02 X+35.84 Y-36.015 I-0.149 J+0.002 +N10132 G01 X+33.419 Y-36.028 +N10134 G01 X+22.911 Y-39.016 +N10136 G01 X+20.936 Y-39.294 +N10138 G01 X+19.085 Y-39.293 +N10140 G01 X+17.109 Y-39.015 +N10142 G01 X+12.975 Y-37.848 +N10144 G01 X+6.502 Y-35.964 +N10146 G01 X+4.198 Y-35.954 +N10148 G01 X+4.092 Y-35.91 +N10150 G01 X+4.046 Y-35.803 +N10152 G01 X+4.033 Y-33.419 +N10154 G01 X+1.014 Y-22.911 +N10156 G01 X+0.734 Y-20.936 +N10158 G01 Y-19.085 +N10160 G01 X+1.015 Y-17.109 +N10162 G01 X+2.12 Y-13.225 +N10164 G01 X+4.097 Y-6.559 +N10166 G01 X+4.134 Y-4.255 +N10168 G02 X+4.284 Y-4.107 I+0.15 J-0.002 +N10170 G01 X+6.518 Y-4.111 +N10172 G01 X+17.089 Y-1.042 +N10174 G01 X+19.063 Y-0.759 +N10176 G01 X+20.915 +N10178 G01 X+22.891 Y-1.043 +N10180 G01 X+26.65 Y-2.121 +N10182 G01 X+33.498 Y-4.153 +N10184 G01 X+35.679 Y-4.163 +N10186 G01 X+35.785 Y-4.207 +N10188 G01 X+35.837 Y-4.321 +N10190 G01 X+35.852 Y-6.58 +N10192 G01 X+38.93 Y-17.088 +N10194 G01 X+39.215 Y-19.063 +N10196 G01 X+39.216 Y-20.915 +N10198 G01 X+38.929 Y-22.891 +N10200 G01 X+37.804 Y-26.775 +N10202 G01 X+35.791 Y-33.498 +N10204 G01 X+35.781 Y-35.632 +N10206 G02 X+35.632 Y-35.782 I-0.15 J+0 +N10208 G01 X+33.42 Y-35.796 +N10210 G01 X+22.912 Y-38.902 +N10212 G01 X+20.937 Y-39.19 +N10214 G01 X+19.085 Y-39.191 +N10216 G01 X+17.109 Y-38.902 +N10218 G01 X+13.475 Y-37.842 +N10220 G01 X+6.503 Y-35.735 +N10222 G01 X+4.445 Y-35.725 +N10224 G01 X+4.339 Y-35.681 +N10226 G01 X+4.275 Y-35.556 +N10228 G01 X+4.261 Y-33.42 +N10230 G01 X+1.125 Y-22.912 +N10232 G01 X+0.835 Y-20.937 +N10234 G01 X+0.834 Y-19.085 +N10236 G01 X+1.126 Y-17.109 +N10238 G01 X+2.195 Y-13.475 +N10240 G01 X+4.321 Y-6.561 +N10242 G01 X+4.331 Y-4.481 +N10244 G02 X+4.481 Y-4.331 I+0.15 J+0 +N10246 G01 X+6.517 Y-4.334 +N10248 G01 X+17.088 Y-1.152 +N10250 G01 X+19.063 Y-0.858 +N10252 G01 X+20.915 +N10254 G01 X+22.891 Y-1.152 +N10256 G01 X+26.4 Y-2.191 +N10258 G01 X+33.497 Y-4.373 +N10260 G01 X+35.432 Y-4.382 +N10262 G01 X+35.538 Y-4.426 +N10264 G01 X+35.618 Y-4.568 +N10266 G01 X+35.633 Y-6.58 +N10268 G01 X+38.823 Y-17.088 +N10270 G01 X+39.119 Y-19.063 +N10272 G01 Y-20.915 +N10274 G01 X+38.823 Y-22.891 +N10276 G01 X+37.814 Y-26.275 +N10278 G01 X+35.576 Y-33.497 +N10280 G01 X+35.566 Y-35.417 +N10282 G02 X+35.417 Y-35.567 I-0.15 J+0 +N10284 G01 X+33.42 Y-35.582 +N10286 G01 X+22.912 Y-38.797 +N10288 G01 X+20.937 Y-39.096 +N10290 G01 X+19.085 +N10292 G01 X+17.109 Y-38.798 +N10294 G01 X+13.765 Y-37.794 +N10296 G01 X+6.502 Y-35.524 +N10298 G01 X+4.633 Y-35.496 +N10300 G02 X+4.484 Y-35.347 I+0.001 J+0.15 +N10302 G01 X+4.469 Y-33.42 +N10304 G01 X+1.228 Y-22.912 +N10306 G01 X+0.927 Y-20.937 +N10308 G01 Y-19.085 +N10310 G01 X+1.228 Y-17.109 +N10312 G01 X+2.24 Y-13.765 +N10314 G01 X+4.527 Y-6.561 +N10316 G01 X+4.537 Y-4.692 +N10318 G01 X+4.581 Y-4.586 +N10320 G01 X+4.692 Y-4.537 +N10322 G01 X+6.516 Y-4.54 +N10324 G01 X+17.088 Y-1.253 +N10326 G01 X+19.063 Y-0.95 +N10328 G01 X+20.914 +N10330 G01 X+22.891 Y-1.253 +N10332 G01 X+26.15 Y-2.246 +N10334 G01 X+33.496 Y-4.579 +N10336 G01 X+35.263 Y-4.588 +N10338 G02 X+35.413 Y-4.737 I+0 J-0.15 +N10340 G01 X+35.428 Y-6.579 +N10342 G01 X+38.692 Y-16.965 +N10344 G01 X+39.006 Y-18.817 +N10346 G01 X+39.049 Y-20.545 +N10348 G01 X+38.828 Y-22.397 +N10350 G01 X+38.329 Y-24.259 +N10352 G01 X+35.37 Y-33.496 +N10354 G01 X+35.36 Y-35.185 +N10356 G01 X+35.316 Y-35.291 +N10358 G01 X+35.186 Y-35.361 +N10360 G01 X+33.421 Y-35.377 +N10362 G01 X+23.035 Y-38.667 +N10364 G01 X+21.184 Y-38.983 +N10366 G01 X+19.455 Y-39.027 +N10368 G01 X+17.727 Y-38.827 +N10370 G01 X+15.741 Y-38.301 +N10372 G01 X+6.504 Y-35.319 +N10374 G01 X+4.84 Y-35.309 +N10376 G02 X+4.691 Y-35.16 I+0.001 J+0.15 +N10378 G01 X+4.674 Y-33.421 +N10380 G01 X+1.359 Y-23.034 +N10382 G01 X+1.052 Y-21.307 +N10384 G01 X+0.991 Y-19.579 +N10386 G01 X+1.175 Y-17.85 +N10388 G01 X+1.647 Y-15.988 +N10390 G01 X+4.733 Y-6.561 +N10392 G01 X+4.752 Y-4.892 +N10394 G02 X+4.902 Y-4.743 I+0.15 J-0.001 +N10396 G01 X+6.515 Y-4.746 +N10398 G01 X+16.966 Y-1.386 +N10400 G01 X+18.693 Y-1.078 +N10402 G01 X+20.421 Y-1.016 +N10404 G01 X+22.15 Y-1.201 +N10406 G01 X+23.889 Y-1.638 +N10408 G01 X+33.496 Y-4.794 +N10410 G01 X+35.047 Y-4.804 +N10412 G02 X+35.197 Y-4.952 I+0 J-0.15 +N10414 G01 X+35.213 Y-6.579 +N10416 G01 X+38.584 Y-16.966 +N10418 G01 X+38.895 Y-18.693 +N10420 G01 X+38.957 Y-20.421 +N10422 G01 X+38.77 Y-22.15 +N10424 G01 X+38.33 Y-23.889 +N10426 G01 X+35.145 Y-33.496 +N10428 G01 X+35.125 Y-34.988 +N10430 G02 X+34.976 Y-35.137 I-0.15 J+0.001 +N10432 G01 X+33.422 Y-35.152 +N10434 G01 X+23.035 Y-38.553 +N10436 G01 X+21.307 Y-38.867 +N10438 G01 X+19.579 Y-38.93 +N10440 G01 X+17.85 Y-38.741 +N10442 G01 X+16.111 Y-38.298 +N10444 G01 X+6.505 Y-35.085 +N10446 G01 X+5.075 Y-35.074 +N10448 G02 X+4.925 Y-34.926 I+0 J+0.15 +N10450 G01 X+4.908 Y-33.422 +N10452 G01 X+1.477 Y-23.035 +N10454 G01 X+1.16 Y-21.307 +N10456 G01 X+1.096 Y-19.579 +N10458 G01 X+1.287 Y-17.85 +N10460 G01 X+1.735 Y-16.111 +N10462 G01 X+4.976 Y-6.562 +N10464 G01 X+4.998 Y-5.135 +N10466 G02 X+5.149 Y-4.987 I+0.15 J-0.002 +N10468 G01 X+6.515 Y-4.989 +N10470 G01 X+16.965 Y-1.507 +N10472 G01 X+18.693 Y-1.187 +N10474 G01 X+20.421 Y-1.123 +N10476 G01 X+22.15 Y-1.315 +N10478 G01 X+23.889 Y-1.767 +N10480 G01 X+33.495 Y-5.037 +N10482 G01 X+34.804 Y-5.047 +N10484 G02 X+34.954 Y-5.195 I+0 J-0.15 +N10486 G01 X+34.971 Y-6.578 +N10488 G01 X+38.463 Y-16.965 +N10490 G01 X+38.785 Y-18.693 +N10492 G01 X+38.85 Y-20.421 +N10494 G01 X+38.656 Y-22.15 +N10496 G01 X+38.2 Y-23.889 +N10498 G01 X+34.902 Y-33.496 +N10500 G01 X+34.878 Y-34.746 +N10502 G02 X+34.73 Y-34.894 I-0.15 J+0.002 +N10504 G01 X+33.422 Y-34.91 +N10506 G01 X+23.035 Y-38.432 +N10508 G01 X+21.307 Y-38.758 +N10510 G01 X+19.579 Y-38.823 +N10512 G01 X+17.85 Y-38.628 +N10514 G01 X+16.111 Y-38.168 +N10516 G01 X+6.505 Y-34.842 +N10518 G01 X+5.318 Y-34.831 +N10520 G02 X+5.168 Y-34.683 I+0 J+0.15 +N10522 G01 X+5.15 Y-33.422 +N10524 G01 X+1.598 Y-23.035 +N10526 G01 X+1.27 Y-21.307 +N10528 G01 X+1.204 Y-19.579 +N10530 G01 X+1.401 Y-17.85 +N10532 G01 X+1.865 Y-16.111 +N10534 G01 X+5.219 Y-6.562 +N10536 G01 X+5.245 Y-5.377 +N10538 G02 X+5.395 Y-5.23 I+0.15 J-0.003 +N10540 G01 X+6.514 Y-5.232 +N10542 G01 X+16.965 Y-1.628 +N10544 G01 X+18.693 Y-1.297 +N10546 G01 X+20.421 Y-1.23 +N10548 G01 X+22.149 Y-1.429 +N10550 G01 X+23.889 Y-1.897 +N10552 G01 X+33.494 Y-5.28 +N10554 G01 X+34.561 Y-5.29 +N10556 G02 X+34.711 Y-5.438 I+0 J-0.15 +N10558 G01 X+34.729 Y-6.577 +N10560 G01 X+38.342 Y-16.965 +N10562 G01 X+38.676 Y-18.692 +N10564 G01 X+38.743 Y-20.421 +N10566 G01 X+38.542 Y-22.149 +N10568 G01 X+38.071 Y-23.889 +N10570 G01 X+34.659 Y-33.496 +N10572 G01 X+34.632 Y-34.504 +N10574 G02 X+34.485 Y-34.651 I-0.15 J+0.003 +N10576 G01 X+33.423 Y-34.668 +N10578 G01 X+23.035 Y-38.312 +N10580 G01 X+21.308 Y-38.648 +N10582 G01 X+19.58 Y-38.716 +N10584 G01 X+17.851 Y-38.514 +N10586 G01 X+16.111 Y-38.038 +N10588 G01 X+6.506 Y-34.599 +N10590 G01 X+5.561 Y-34.588 +N10592 G02 X+5.411 Y-34.441 I+0 J+0.15 +N10594 G01 X+5.392 Y-33.423 +N10596 G01 X+1.719 Y-23.035 +N10598 G01 X+1.379 Y-21.308 +N10600 G01 X+1.311 Y-19.58 +N10602 G01 X+1.515 Y-17.851 +N10604 G01 X+1.994 Y-16.111 +N10606 G01 X+5.462 Y-6.562 +N10608 G01 X+5.491 Y-5.62 +N10610 G02 X+5.641 Y-5.473 I+0.15 J-0.003 +N10612 G01 X+6.513 Y-5.474 +N10614 G01 X+16.965 Y-1.749 +N10616 G01 X+18.692 Y-1.406 +N10618 G01 X+20.42 Y-1.338 +N10620 G01 X+22.149 Y-1.543 +N10622 G01 X+23.889 Y-2.026 +N10624 G01 X+33.494 Y-5.523 +N10626 G01 X+34.318 Y-5.533 +N10628 G02 X+34.468 Y-5.68 I+0 J-0.15 +N10630 G01 X+34.487 Y-6.577 +N10632 G01 X+38.221 Y-16.965 +N10634 G01 X+38.566 Y-18.692 +N10636 G01 X+38.635 Y-20.42 +N10638 G01 X+38.428 Y-22.149 +N10640 G01 X+37.941 Y-23.889 +N10642 G01 X+34.416 Y-33.495 +N10644 G01 X+34.387 Y-34.263 +N10646 G02 X+34.24 Y-34.409 I-0.15 J+0.004 +N10648 G01 X+33.423 Y-34.426 +N10650 G01 X+23.035 Y-38.191 +N10652 G01 X+21.308 Y-38.539 +N10654 G01 X+19.58 Y-38.609 +N10656 G01 X+17.851 Y-38.4 +N10658 G01 X+16.111 Y-37.909 +N10660 G01 X+6.507 Y-34.356 +N10662 G01 X+5.803 Y-34.345 +N10664 G02 X+5.654 Y-34.199 I+0.001 J+0.15 +N10666 G01 X+5.635 Y-33.423 +N10668 G01 X+1.84 Y-23.035 +N10670 G01 X+1.489 Y-21.308 +N10672 G01 X+1.414 Y-19.703 +N10674 G01 X+1.604 Y-17.975 +N10676 G01 X+2.124 Y-16.111 +N10678 G01 X+5.706 Y-6.562 +N10680 G01 X+5.736 Y-5.861 +N10682 G02 X+5.886 Y-5.716 I+0.15 J-0.005 +N10684 G01 X+6.512 Y-5.717 +N10686 G01 X+16.965 Y-1.869 +N10688 G01 X+18.692 Y-1.516 +N10690 G01 X+20.297 Y-1.441 +N10692 G01 X+22.025 Y-1.632 +N10694 G01 X+23.889 Y-2.156 +N10696 G01 X+33.493 Y-5.766 +N10698 G01 X+34.074 Y-5.776 +N10700 G01 X+34.18 Y-5.82 +N10702 G01 X+34.225 Y-5.924 +N10704 G01 X+34.245 Y-6.577 +N10706 G01 X+38.1 Y-16.964 +N10708 G01 X+38.457 Y-18.692 +N10710 G01 X+38.532 Y-20.297 +N10712 G01 X+38.339 Y-22.025 +N10714 G01 X+37.811 Y-23.889 +N10716 G01 X+34.172 Y-33.496 +N10718 G01 X+34.142 Y-34.023 +N10720 G02 X+33.996 Y-34.167 I-0.15 J+0.006 +N10722 G01 X+33.423 Y-34.184 +N10724 G01 X+23.036 Y-38.07 +N10726 G01 X+21.308 Y-38.429 +N10728 G01 X+19.703 Y-38.506 +N10730 G01 X+17.975 Y-38.311 +N10732 G01 X+16.111 Y-37.779 +N10734 G01 X+6.507 Y-34.112 +N10736 G01 X+6.05 Y-34.102 +N10738 G01 X+5.944 Y-34.058 +N10740 G01 X+5.896 Y-33.954 +N10742 G01 X+5.877 Y-33.423 +N10744 G01 X+1.96 Y-23.036 +N10746 G01 X+1.598 Y-21.308 +N10748 G01 X+1.521 Y-19.703 +N10750 G01 X+1.718 Y-17.975 +N10752 G01 X+2.161 Y-16.365 +N10754 G01 X+5.949 Y-6.562 +N10756 G01 X+5.98 Y-6.101 +N10758 G02 X+6.13 Y-5.959 I+0.15 J-0.008 +N10760 G01 X+6.511 +N10762 G01 X+16.965 Y-1.99 +N10764 G01 X+18.569 Y-1.642 +N10766 G01 X+20.296 Y-1.548 +N10768 G01 X+22.025 Y-1.746 +N10770 G01 X+23.635 Y-2.193 +N10772 G01 X+33.492 Y-6.009 +N10774 G01 X+33.827 Y-6.02 +N10776 G01 X+33.933 Y-6.064 +N10778 G01 X+33.983 Y-6.169 +N10780 G01 X+34.003 Y-6.577 +N10782 G01 X+37.979 Y-16.964 +N10784 G01 X+38.347 Y-18.692 +N10786 G01 X+38.425 Y-20.296 +N10788 G01 X+38.226 Y-22.025 +N10790 G01 X+37.775 Y-23.635 +N10792 G01 X+33.93 Y-33.492 +N10794 G01 X+33.92 Y-33.775 +N10796 G02 X+33.777 Y-33.925 I-0.15 J+0 +N10798 G01 X+33.423 Y-33.942 +N10800 G01 X+23.036 Y-37.949 +N10802 G01 X+21.308 Y-38.32 +N10804 G01 X+19.704 Y-38.398 +N10806 G01 X+17.975 Y-38.198 +N10808 G01 X+16.365 Y-37.744 +N10810 G01 X+6.508 Y-33.869 +N10812 G01 X+6.297 Y-33.859 +N10814 G01 X+6.191 Y-33.815 +N10816 G01 X+6.138 Y-33.709 +N10818 G01 X+6.119 Y-33.422 +N10820 G01 X+2.081 Y-23.036 +N10822 G01 X+1.708 Y-21.308 +N10824 G01 X+1.628 Y-19.704 +N10826 G01 X+1.831 Y-17.975 +N10828 G01 X+2.288 Y-16.365 +N10830 G01 X+6.191 Y-6.566 +N10832 G01 X+6.202 Y-6.352 +N10834 G02 X+6.352 Y-6.202 I+0.15 J+0 +N10836 G01 X+6.511 +N10838 G01 X+16.964 Y-2.109 +N10840 G01 X+18.568 Y-1.75 +N10842 G01 X+20.296 Y-1.653 +N10844 G01 X+22.025 Y-1.856 +N10846 G01 X+23.635 Y-2.316 +N10848 G01 X+33.492 Y-6.243 +N10850 G01 X+33.58 Y-6.253 +N10852 G01 X+33.686 Y-6.297 +N10854 G01 X+33.752 Y-6.411 +N10856 G01 X+33.769 Y-6.581 +N10858 G01 X+37.865 Y-16.964 +N10860 G01 X+38.244 Y-18.692 +N10862 G01 X+38.324 Y-20.296 +N10864 G01 X+38.12 Y-22.025 +N10866 G01 X+37.657 Y-23.635 +N10868 G01 X+33.706 Y-33.492 +N10870 G01 X+33.695 Y-33.554 +N10872 G02 X+33.56 Y-33.703 I-0.15 J+0 +N10874 G01 X+33.419 Y-33.718 +N10876 G01 X+23.036 Y-37.839 +N10878 G01 X+21.309 Y-38.22 +N10880 G01 X+19.704 Y-38.302 +N10882 G01 X+17.975 Y-38.096 +N10884 G01 X+16.365 Y-37.63 +N10886 G01 X+6.51 Y-33.655 +N10888 G01 X+6.388 Y-33.55 +N10890 G01 X+6.348 Y-33.475 +N10892 G01 X+6.334 Y-33.411 +N10894 G01 X+2.186 Y-23.036 +N10896 G01 X+1.803 Y-21.309 +N10898 G01 X+1.721 Y-19.704 +N10900 G01 X+1.928 Y-17.975 +N10902 G01 X+2.397 Y-16.365 +N10904 G01 X+6.408 Y-6.539 +N10906 G02 X+6.539 Y-6.408 I+0.149 J-0.018 +N10908 G01 X+16.964 Y-2.208 +N10910 G01 X+18.568 Y-1.84 +N10912 G01 X+20.295 Y-1.74 +N10914 G01 X+22.025 Y-1.947 +N10916 G01 X+23.635 Y-2.418 +N10918 G01 X+33.486 Y-6.451 +N10920 G01 X+33.576 Y-6.559 +N10922 G01 X+37.776 Y-16.964 +N10924 G01 X+38.163 Y-18.691 +N10926 G01 X+38.246 Y-20.296 +N10928 G01 X+38.038 Y-22.025 +N10930 G01 X+37.565 Y-23.635 +N10932 G01 X+33.549 Y-33.453 +N10934 G01 X+33.441 Y-33.543 +N10936 G01 X+23.036 Y-37.759 +N10938 G01 X+21.309 Y-38.148 +N10940 G01 X+19.704 Y-38.232 +N10942 G01 X+17.975 Y-38.022 +N10944 G01 X+16.366 Y-37.548 +N10946 G01 X+6.564 Y-33.485 +N10948 G01 X+6.483 Y-33.403 +N10950 G01 X+2.257 Y-23.036 +N10952 G01 X+1.867 Y-21.309 +N10954 G01 X+1.783 Y-19.704 +N10956 G01 X+1.993 Y-17.975 +N10958 G01 X+2.469 Y-16.366 +N10960 G01 X+6.515 Y-6.597 +N10962 G01 X+6.597 Y-6.515 +N10964 G01 X+16.599 Y-2.394 +N10966 G01 X+18.323 Y-1.937 +N10968 G01 X+19.926 Y-1.791 +N10970 G01 X+21.529 Y-1.913 +N10972 G01 X+23.133 Y-2.305 +N10974 G01 X+33.387 Y-6.532 +N10976 G01 X+33.468 Y-6.613 +N10978 G01 X+37.597 Y-16.606 +N10980 G01 X+38.053 Y-18.326 +N10982 G01 X+38.199 Y-19.926 +N10984 G01 X+38.077 Y-21.526 +N10986 G01 X+37.685 Y-23.126 +N10988 G01 X+33.452 Y-33.37 +N10990 G01 X+33.37 Y-33.452 +N10992 G01 X+23.386 Y-37.588 +N10994 G01 X+21.67 Y-38.043 +N10996 G01 X+20.074 Y-38.189 +N10998 G01 X+18.478 Y-38.066 +N11000 G01 X+16.881 Y-37.676 +N11002 G01 X+6.646 Y-33.435 +N11004 G01 X+6.565 Y-33.354 +N11006 G01 X+2.422 Y-23.379 +N11008 G01 X+1.967 Y-21.666 +N11010 G01 X+1.821 Y-20.074 +N11012 G01 X+1.944 Y-18.481 +N11014 G01 X+2.333 Y-16.888 +N11016 G01 X+6.582 Y-6.663 +N11018 G01 X+6.663 Y-6.582 +N11020 G01 X+16.635 Y-2.439 +N11022 G01 X+18.341 Y-1.987 +N11024 G01 X+19.926 Y-1.843 +N11026 G01 X+21.512 Y-1.966 +N11028 G01 X+23.095 Y-2.356 +N11030 G01 X+33.285 Y-6.635 +N11032 G01 X+33.365 Y-6.715 +N11034 G01 X+37.531 Y-16.659 +N11036 G01 X+37.981 Y-18.352 +N11038 G01 X+38.124 Y-19.927 +N11040 G01 X+38.002 Y-21.501 +N11042 G01 X+37.614 Y-23.073 +N11044 G01 X+33.312 Y-33.233 +N11046 G01 X+33.233 Y-33.312 +N11048 G01 X+23.317 Y-37.502 +N11050 G01 X+21.636 Y-37.949 +N11052 G01 X+20.073 Y-38.091 +N11054 G01 X+18.51 Y-37.969 +N11056 G01 X+16.95 Y-37.584 +N11058 G01 X+6.82 Y-33.259 +N11060 G01 X+6.741 Y-33.18 +N11062 G01 X+2.528 Y-23.293 +N11064 G01 X+2.084 Y-21.625 +N11066 G01 X+1.942 Y-20.072 +N11068 G01 X+2.063 Y-18.521 +N11070 G01 X+2.446 Y-16.972 +N11072 G01 X+6.794 Y-6.872 +N11074 G01 X+6.872 Y-6.794 +N11076 G01 X+16.731 Y-2.558 +N11078 G01 X+18.387 Y-2.116 +N11080 G01 X+19.928 Y-1.975 +N11082 G01 X+21.469 Y-2.095 +N11084 G01 X+23.005 Y-2.476 +N11086 G01 X+33.075 Y-6.847 +N11088 G01 X+33.153 Y-6.925 +N11090 G01 X+37.412 Y-16.755 +N11092 G01 X+37.852 Y-18.398 +N11094 G01 X+37.992 Y-19.928 +N11096 G01 X+37.872 Y-21.458 +N11098 G01 X+37.494 Y-22.983 +N11100 G01 X+33.1 Y-33.023 +N11102 G01 X+33.023 Y-33.1 +N11104 G01 X+23.221 Y-37.382 +N11106 G01 X+21.59 Y-37.82 +N11108 G01 X+20.071 Y-37.959 +N11110 G01 X+18.553 Y-37.84 +N11112 G01 X+17.04 Y-37.464 +N11114 G01 X+7.03 Y-33.047 +N11116 G01 X+6.953 Y-32.97 +N11118 G01 X+2.648 Y-23.197 +N11120 G01 X+2.213 Y-21.578 +N11122 G01 X+2.074 Y-20.071 +N11124 G01 X+2.192 Y-18.563 +N11126 G01 X+2.567 Y-17.062 +N11128 G01 X+7.006 Y-7.082 +N11130 G01 X+7.082 Y-7.006 +N11132 G01 X+16.827 Y-2.678 +N11134 G01 X+18.433 Y-2.245 +N11136 G01 X+19.93 Y-2.107 +N11138 G01 X+21.426 Y-2.225 +N11140 G01 X+22.916 Y-2.597 +N11142 G01 X+32.865 Y-7.059 +N11144 G01 X+32.941 Y-7.135 +N11146 G01 X+37.293 Y-16.851 +N11148 G01 X+37.723 Y-18.445 +N11150 G01 X+37.86 Y-19.93 +N11152 G01 X+37.743 Y-21.415 +N11154 G01 X+37.373 Y-22.893 +N11156 G01 X+32.888 Y-32.813 +N11158 G01 X+32.813 Y-32.888 +N11160 G01 X+23.125 Y-37.263 +N11162 G01 X+21.544 Y-37.69 +N11164 G01 X+20.07 Y-37.827 +N11166 G01 X+18.596 Y-37.711 +N11168 G01 X+17.129 Y-37.343 +N11170 G01 X+7.239 Y-32.835 +N11172 G01 X+7.165 Y-32.761 +N11174 G01 X+3.382 Y-24.512 +N11176 G01 X+2.689 Y-22.877 +N11178 G01 X+2.322 Y-21.419 +N11180 G01 X+2.206 Y-19.957 +N11182 G01 X+2.341 Y-18.495 +N11184 G01 X+2.766 Y-16.928 +N11186 G01 X+7.218 Y-7.292 +N11188 G01 X+7.292 Y-7.218 +N11190 G01 X+9.599 Y-6.153 +N11192 G01 X+16.922 Y-2.797 +N11194 G01 X+18.59 Y-2.355 +N11196 G01 X+20.043 Y-2.239 +N11198 G01 X+21.494 Y-2.373 +N11200 G01 X+23.048 Y-2.795 +N11202 G01 X+32.656 Y-7.271 +N11204 G01 X+32.729 Y-7.344 +N11206 G01 X+33.969 Y-10.008 +N11208 G01 X+37.173 Y-16.946 +N11210 G01 X+37.612 Y-18.601 +N11212 G01 X+37.728 Y-20.043 +N11214 G01 X+37.595 Y-21.482 +N11216 G01 X+37.175 Y-23.024 +N11218 G01 X+32.676 Y-32.604 +N11220 G01 X+32.604 Y-32.676 +N11222 G01 X+28.264 Y-34.714 +N11224 G01 X+23.03 Y-37.143 +N11226 G01 X+21.388 Y-37.58 +N11228 G01 X+19.958 Y-37.695 +N11230 G01 X+18.529 Y-37.563 +N11232 G01 X+17 Y-37.145 +N11234 G01 X+7.449 Y-32.623 +N11236 G01 X+7.377 Y-32.551 +N11238 G01 X+4.872 Y-27.264 +N11240 G01 X+2.887 Y-23.006 +N11242 G01 X+2.452 Y-21.377 +N11244 G01 X+2.338 Y-19.958 +N11246 G01 X+2.47 Y-18.541 +N11248 G01 X+2.884 Y-17.025 +N11250 G01 X+7.431 Y-7.501 +N11252 G01 X+7.501 Y-7.431 +N11254 G01 X+14.089 Y-4.281 +N11256 G01 X+17.019 Y-2.916 +N11258 G01 X+18.633 Y-2.485 +N11260 G01 X+20.041 Y-2.371 +N11262 G01 X+21.447 Y-2.502 +N11264 G01 X+22.951 Y-2.914 +N11266 G01 X+32.446 Y-7.484 +N11268 G01 X+32.516 Y-7.554 +N11270 G01 X+35.512 Y-13.767 +N11272 G01 X+37.054 Y-17.043 +N11274 G01 X+37.483 Y-18.644 +N11276 G01 X+37.596 Y-20.041 +N11278 G01 X+37.466 Y-21.436 +N11280 G01 X+37.056 Y-22.927 +N11282 G01 X+32.463 Y-32.394 +N11284 G01 X+32.394 Y-32.463 +N11286 G01 X+23.038 Y-36.985 +N11288 G01 X+21.558 Y-37.412 +N11290 G01 X+20.067 Y-37.563 +N11292 G01 X+18.576 Y-37.434 +N11294 G01 X+17.098 Y-37.027 +N11296 G01 X+7.659 Y-32.41 +N11298 G01 X+7.59 Y-32.341 +N11300 G01 X+3.045 Y-23.013 +N11302 G01 X+2.62 Y-21.545 +N11304 G01 X+2.47 Y-20.067 +N11306 G01 X+2.599 Y-18.588 +N11308 G01 X+3.003 Y-17.122 +N11310 G01 X+7.643 Y-7.711 +N11312 G01 X+7.711 Y-7.643 +N11314 G01 X+17.012 Y-3.074 +N11316 G01 X+18.467 Y-2.652 +N11318 G01 X+19.933 Y-2.503 +N11320 G01 X+21.4 Y-2.631 +N11322 G01 X+22.854 Y-3.032 +N11324 G01 X+32.236 Y-7.696 +N11326 G01 X+32.304 Y-7.764 +N11328 G01 X+36.896 Y-17.037 +N11330 G01 X+37.316 Y-18.479 +N11332 G01 X+37.464 Y-19.934 +N11334 G01 X+37.337 Y-21.389 +N11336 G01 X+36.938 Y-22.829 +N11338 G01 X+32.251 Y-32.184 +N11340 G01 X+32.184 Y-32.251 +N11342 G01 X+24.878 Y-35.923 +N11344 G01 X+22.837 Y-36.905 +N11346 G01 X+21.405 Y-37.303 +N11348 G01 X+19.963 Y-37.431 +N11350 G01 X+18.52 Y-37.285 +N11352 G01 X+17.093 Y-36.87 +N11354 G01 X+7.868 Y-32.198 +N11356 G01 X+7.802 Y-32.132 +N11358 G01 X+3.99 Y-24.61 +N11360 G01 X+3.125 Y-22.812 +N11362 G01 X+2.729 Y-21.394 +N11364 G01 X+2.602 Y-19.963 +N11366 G01 X+2.747 Y-18.533 +N11368 G01 X+3.16 Y-17.118 +N11370 G01 X+7.855 Y-7.921 +N11372 G01 X+7.921 Y-7.855 +N11374 G01 X+15.565 Y-3.949 +N11376 G01 X+17.212 Y-3.155 +N11378 G01 X+18.618 Y-2.761 +N11380 G01 X+20.036 Y-2.635 +N11382 G01 X+21.455 Y-2.779 +N11384 G01 X+22.857 Y-3.189 +N11386 G01 X+32.027 Y-7.908 +N11388 G01 X+32.092 Y-7.973 +N11390 G01 X+35.945 Y-15.454 +N11392 G01 X+36.815 Y-17.236 +N11394 G01 X+37.206 Y-18.629 +N11396 G01 X+37.332 Y-20.036 +N11398 G01 X+37.189 Y-21.443 +N11400 G01 X+36.782 Y-22.831 +N11402 G01 X+32.038 Y-31.974 +N11404 G01 X+31.974 Y-32.038 +N11406 G01 X+24.281 Y-36.034 +N11408 G01 X+22.74 Y-36.786 +N11410 G01 X+21.359 Y-37.174 +N11412 G01 X+19.964 Y-37.299 +N11414 G01 X+18.57 Y-37.157 +N11416 G01 X+17.194 Y-36.752 +N11418 G01 X+8.078 Y-31.985 +N11420 G01 X+8.015 Y-31.922 +N11422 G01 X+3.997 Y-24.25 +N11424 G01 X+3.244 Y-22.716 +N11426 G01 X+2.858 Y-21.348 +N11428 G01 X+2.734 Y-19.965 +N11430 G01 X+2.875 Y-18.582 +N11432 G01 X+3.277 Y-17.219 +N11434 G01 X+8.068 Y-8.13 +N11436 G01 X+8.13 Y-8.068 +N11438 G01 X+15.921 Y-3.955 +N11440 G01 X+17.308 Y-3.274 +N11442 G01 X+18.664 Y-2.89 +N11444 G01 X+20.035 Y-2.767 +N11446 G01 X+21.405 Y-2.908 +N11448 G01 X+22.756 Y-3.307 +N11450 G01 X+31.817 Y-8.121 +N11452 G01 X+31.879 Y-8.183 +N11454 G01 X+35.939 Y-15.813 +N11456 G01 X+36.696 Y-17.332 +N11458 G01 X+37.077 Y-18.675 +N11460 G01 X+37.2 Y-20.034 +N11462 G01 X+37.06 Y-21.393 +N11464 G01 X+36.664 Y-22.731 +N11466 G01 X+31.826 Y-31.765 +N11468 G01 X+31.765 Y-31.826 +N11470 G01 X+23.926 Y-36.032 +N11472 G01 X+22.644 Y-36.667 +N11474 G01 X+21.313 Y-37.045 +N11476 G01 X+19.966 Y-37.167 +N11478 G01 X+18.62 Y-37.028 +N11480 G01 X+17.295 Y-36.635 +N11482 G01 X+8.288 Y-31.773 +N11484 G01 X+8.227 Y-31.712 +N11486 G01 X+3.999 Y-23.895 +N11488 G01 X+3.363 Y-22.62 +N11490 G01 X+2.987 Y-21.301 +N11492 G01 X+2.866 Y-19.967 +N11494 G01 X+3.004 Y-18.632 +N11496 G01 X+3.395 Y-17.32 +N11498 G01 X+8.28 Y-8.34 +N11500 G01 X+8.34 Y-8.28 +N11502 G01 X+16.271 Y-3.956 +N11504 G01 X+17.405 Y-3.393 +N11506 G01 X+18.71 Y-3.02 +N11508 G01 X+20.033 Y-2.899 +N11510 G01 X+21.355 Y-3.036 +N11512 G01 X+22.655 Y-3.424 +N11514 G01 X+31.607 Y-8.333 +N11516 G01 X+31.667 Y-8.393 +N11518 G01 X+36.504 Y-17.245 +N11520 G01 X+36.93 Y-18.628 +N11522 G01 X+37.068 Y-19.938 +N11524 G01 X+36.95 Y-21.249 +N11526 G01 X+36.546 Y-22.629 +N11528 G01 X+31.613 Y-31.555 +N11530 G01 X+31.555 Y-31.613 +N11532 G01 X+22.729 Y-36.474 +N11534 G01 X+21.359 Y-36.897 +N11536 G01 X+20.061 Y-37.035 +N11538 G01 X+18.763 Y-36.918 +N11540 G01 X+17.396 Y-36.517 +N11542 G01 X+8.498 Y-31.56 +N11544 G01 X+8.44 Y-31.502 +N11546 G01 X+3.555 Y-22.703 +N11548 G01 X+3.135 Y-21.347 +N11550 G01 X+2.998 Y-20.061 +N11552 G01 X+3.114 Y-18.774 +N11554 G01 X+3.512 Y-17.421 +N11556 G01 X+8.493 Y-8.55 +N11558 G01 X+8.55 Y-8.493 +N11560 G01 X+17.323 Y-3.584 +N11562 G01 X+18.665 Y-3.167 +N11564 G01 X+19.94 Y-3.031 +N11566 G01 X+21.214 Y-3.146 +N11568 G01 X+22.553 Y-3.542 +N11570 G01 X+31.397 Y-8.546 +N11572 G01 X+31.454 Y-8.603 +N11574 G01 X+36.386 Y-17.349 +N11576 G01 X+36.801 Y-18.678 +N11578 G01 X+36.936 Y-19.94 +N11580 G01 X+36.821 Y-21.203 +N11582 G01 X+36.429 Y-22.528 +N11584 G01 X+31.401 Y-31.345 +N11586 G01 X+31.345 Y-31.401 +N11588 G01 X+22.626 Y-36.357 +N11590 G01 X+21.31 Y-36.769 +N11592 G01 X+20.06 Y-36.904 +N11594 G01 X+18.809 Y-36.789 +N11596 G01 X+17.497 Y-36.4 +N11598 G01 X+8.708 Y-31.348 +N11600 G01 X+8.652 Y-31.292 +N11602 G01 X+3.672 Y-22.6 +N11604 G01 X+3.263 Y-21.297 +N11606 G01 X+3.129 Y-20.059 +N11608 G01 X+3.243 Y-18.821 +N11610 G01 X+3.63 Y-17.522 +N11612 G01 X+8.705 Y-8.76 +N11614 G01 X+8.76 Y-8.705 +N11616 G01 X+17.426 Y-3.702 +N11618 G01 X+18.715 Y-3.296 +N11620 G01 X+19.941 Y-3.162 +N11622 G01 X+21.168 Y-3.275 +N11624 G01 X+22.453 Y-3.659 +N11626 G01 X+31.187 Y-8.759 +N11628 G01 X+31.241 Y-8.813 +N11630 G01 X+36.269 Y-17.452 +N11632 G01 X+36.672 Y-18.728 +N11634 G01 X+36.805 Y-19.941 +N11636 G01 X+36.692 Y-21.156 +N11638 G01 X+36.311 Y-22.427 +N11640 G01 X+31.188 Y-31.135 +N11642 G01 X+31.135 Y-31.188 +N11644 G01 X+22.522 Y-36.24 +N11646 G01 X+21.26 Y-36.64 +N11648 G01 X+20.058 Y-36.772 +N11650 G01 X+18.856 Y-36.66 +N11652 G01 X+17.598 Y-36.282 +N11654 G01 X+8.917 Y-31.135 +N11656 G01 X+8.865 Y-31.083 +N11658 G01 X+3.86 Y-22.658 +N11660 G01 X+3.43 Y-21.417 +N11662 G01 X+3.262 Y-20.059 +N11664 G01 X+3.372 Y-18.867 +N11666 G01 X+3.747 Y-17.623 +N11668 G01 X+8.918 Y-8.97 +N11670 G01 X+8.97 Y-8.918 +N11672 G01 X+17.279 Y-3.936 +N11674 G01 X+18.514 Y-3.483 +N11676 G01 X+19.772 Y-3.299 +N11678 G01 X+21.12 Y-3.404 +N11680 G01 X+22.352 Y-3.777 +N11682 G01 X+30.923 Y-8.938 +N11684 G01 X+30.974 Y-8.989 +N11686 G01 X+36.082 Y-17.398 +N11688 G01 X+36.486 Y-18.53 +N11690 G01 X+36.668 Y-19.774 +N11692 G01 X+36.563 Y-21.108 +N11694 G01 X+36.194 Y-22.326 +N11696 G01 X+30.975 Y-30.925 +N11698 G01 X+30.925 Y-30.975 +N11700 G01 X+22.574 Y-36.054 +N11702 G01 X+21.455 Y-36.454 +N11704 G01 X+20.224 Y-36.635 +N11706 G01 X+18.903 Y-36.531 +N11708 G01 X+17.699 Y-36.164 +N11710 G01 X+9.127 Y-30.922 +N11712 G01 X+9.078 Y-30.873 +N11714 G01 X+3.975 Y-22.547 +N11716 G01 X+3.577 Y-21.44 +N11718 G01 X+3.398 Y-20.222 +N11720 G01 X+3.501 Y-18.915 +N11722 G01 X+3.865 Y-17.724 +N11724 G01 X+9.131 Y-9.18 +N11726 G01 X+9.18 Y-9.131 +N11728 G01 X+17.393 Y-4.051 +N11730 G01 X+18.575 Y-3.61 +N11732 G01 X+19.78 Y-3.431 +N11734 G01 X+21.074 Y-3.533 +N11736 G01 X+22.251 Y-3.894 +N11738 G01 X+30.714 Y-9.15 +N11740 G01 X+30.762 Y-9.198 +N11742 G01 X+35.967 Y-17.509 +N11744 G01 X+36.359 Y-18.591 +N11746 G01 X+36.536 Y-19.782 +N11748 G01 X+36.435 Y-21.062 +N11750 G01 X+36.076 Y-22.226 +N11752 G01 X+30.763 Y-30.715 +N11754 G01 X+30.715 Y-30.763 +N11756 G01 X+22.463 Y-35.939 +N11758 G01 X+21.394 Y-36.327 +N11760 G01 X+20.216 Y-36.503 +N11762 G01 X+18.95 Y-36.402 +N11764 G01 X+17.8 Y-36.047 +N11766 G01 X+9.337 Y-30.71 +N11768 G01 X+9.29 Y-30.663 +N11770 G01 X+4.09 Y-22.435 +N11772 G01 X+3.705 Y-21.379 +N11774 G01 X+3.529 Y-20.213 +N11776 G01 X+3.615 Y-19.039 +N11778 G01 X+3.982 Y-17.825 +N11780 G01 X+9.344 Y-9.39 +N11782 G01 X+9.39 Y-9.344 +N11784 G01 X+17.507 Y-4.166 +N11786 G01 X+18.635 Y-3.737 +N11788 G01 X+19.789 Y-3.562 +N11790 G01 X+20.95 Y-3.647 +N11792 G01 X+22.149 Y-4.012 +N11794 G01 X+30.505 Y-9.362 +N11796 G01 X+30.55 Y-9.407 +N11798 G01 X+35.852 Y-17.62 +N11800 G01 X+36.232 Y-18.651 +N11802 G01 X+36.405 Y-19.791 +N11804 G01 X+36.32 Y-20.94 +N11806 G01 X+35.959 Y-22.124 +N11808 G01 X+30.55 Y-30.505 +N11810 G01 X+30.505 Y-30.55 +N11812 G01 X+22.352 Y-35.824 +N11814 G01 X+21.334 Y-36.2 +N11816 G01 X+20.207 Y-36.372 +N11818 G01 X+19.071 Y-36.288 +N11820 G01 X+17.901 Y-35.929 +N11822 G01 X+9.547 Y-30.497 +N11824 G01 X+9.503 Y-30.453 +N11826 G01 X+4.205 Y-22.324 +N11828 G01 X+3.832 Y-21.319 +N11830 G01 X+3.661 Y-20.205 +N11832 G01 X+3.744 Y-19.082 +N11834 G01 X+4.1 Y-17.926 +N11836 G01 X+9.557 Y-9.6 +N11838 G01 X+9.6 Y-9.557 +N11840 G01 X+17.621 Y-4.281 +N11842 G01 X+18.695 Y-3.864 +N11844 G01 X+19.797 Y-3.694 +N11846 G01 X+20.907 Y-3.777 +N11848 G01 X+22.049 Y-4.129 +N11850 G01 X+30.295 Y-9.574 +N11852 G01 X+35.737 Y-17.731 +N11854 G01 X+36.105 Y-18.711 +N11856 G01 X+36.273 Y-19.799 +N11858 G01 X+36.191 Y-20.896 +N11860 G01 X+35.841 Y-22.023 +N11862 G01 X+30.337 Y-30.295 +N11864 G01 X+22.241 Y-35.708 +N11866 G01 X+21.274 Y-36.073 +N11868 G01 X+20.199 Y-36.24 +N11870 G01 X+19.114 Y-36.159 +N11872 G01 X+18.002 Y-35.812 +N11874 G01 X+9.757 Y-30.284 +N11876 G01 X+4.32 Y-22.213 +N11878 G01 X+3.959 Y-21.259 +N11880 G01 X+3.793 Y-20.197 +N11882 G01 X+3.874 Y-19.125 +N11884 G01 X+4.217 Y-18.027 +N11886 G01 X+9.769 Y-9.809 +N11888 G01 X+17.735 Y-4.396 +N11890 G01 X+18.755 Y-3.991 +N11892 G01 X+19.806 Y-3.826 +N11894 G01 X+20.864 Y-3.906 +N11896 G01 X+21.948 Y-4.247 +N11898 G01 X+30.086 Y-9.787 +N11900 G01 X+35.622 Y-17.843 +N11902 G01 X+35.938 Y-18.636 +N11904 G01 X+36.14 Y-19.806 +N11906 G01 X+36.062 Y-20.853 +N11908 G01 X+35.724 Y-21.923 +N11910 G01 X+30.124 Y-30.085 +N11912 G01 X+22.129 Y-35.594 +N11914 G01 X+21.347 Y-35.907 +N11916 G01 X+20.191 Y-36.107 +N11918 G01 X+19.157 Y-36.029 +N11920 G01 X+18.103 Y-35.695 +N11922 G01 X+9.967 Y-30.071 +N11924 G01 X+4.435 Y-22.101 +N11926 G01 X+4.124 Y-21.33 +N11928 G01 X+3.929 Y-20.258 +N11930 G01 X+4.003 Y-19.169 +N11932 G01 X+4.335 Y-18.128 +N11934 G01 X+9.982 Y-10.019 +N11936 G01 X+17.85 Y-4.51 +N11938 G01 X+18.686 Y-4.156 +N11940 G01 X+19.745 Y-3.962 +N11942 G01 X+20.82 Y-4.035 +N11944 G01 X+21.847 Y-4.364 +N11946 G01 X+29.877 Y-9.999 +N11948 G01 X+35.507 Y-17.955 +N11950 G01 X+35.813 Y-18.704 +N11952 G01 X+36.005 Y-19.748 +N11954 G01 X+35.932 Y-20.81 +N11956 G01 X+35.606 Y-21.822 +N11958 G01 X+29.911 Y-29.875 +N11960 G01 X+22.017 Y-35.479 +N11962 G01 X+21.28 Y-35.781 +N11964 G01 X+20.249 Y-35.972 +N11966 G01 X+19.201 Y-35.9 +N11968 G01 X+18.203 Y-35.577 +N11970 G01 X+10.177 Y-29.858 +N11972 G01 X+4.55 Y-21.99 +N11974 G01 X+4.25 Y-21.263 +N11976 G01 X+4.061 Y-20.246 +N11978 G01 X+4.132 Y-19.212 +N11980 G01 X+4.452 Y-18.228 +N11982 G01 X+10.195 Y-10.229 +N11984 G01 X+17.966 Y-4.624 +N11986 G01 X+18.511 Y-4.366 +N11988 G01 X+19.564 Y-4.11 +N11990 G01 X+20.649 Y-4.141 +N11992 G01 X+21.745 Y-4.482 +N11994 G01 X+29.667 Y-10.211 +N11996 G01 X+35.393 Y-18.066 +N11998 G01 X+35.668 Y-18.711 +N12000 G01 X+35.869 Y-19.697 +N12002 G01 X+35.815 Y-20.704 +N12004 G01 X+35.489 Y-21.721 +N12006 G01 X+29.698 Y-29.665 +N12008 G01 X+21.906 Y-35.364 +N12010 G01 X+21.271 Y-35.636 +N12012 G01 X+20.3 Y-35.836 +N12014 G01 X+19.306 Y-35.783 +N12016 G01 X+18.305 Y-35.46 +N12018 G01 X+10.387 Y-29.645 +N12020 G01 X+4.665 Y-21.878 +N12022 G01 X+4.395 Y-21.253 +N12024 G01 X+4.197 Y-20.296 +N12026 G01 X+4.25 Y-19.316 +N12028 G01 X+4.57 Y-18.33 +N12030 G01 X+10.408 Y-10.44 +N12032 G01 X+18.081 Y-4.738 +N12034 G01 X+18.593 Y-4.489 +N12036 G01 X+19.586 Y-4.242 +N12038 G01 X+20.613 Y-4.271 +N12040 G01 X+21.645 Y-4.599 +N12042 G01 X+29.458 Y-10.424 +N12044 G01 X+35.278 Y-18.178 +N12046 G01 X+35.542 Y-18.782 +N12048 G01 X+35.737 Y-19.711 +N12050 G01 X+35.685 Y-20.664 +N12052 G01 X+35.372 Y-21.62 +N12054 G01 X+29.485 Y-29.455 +N12056 G01 X+21.794 Y-35.249 +N12058 G01 X+21.2 Y-35.511 +N12060 G01 X+20.285 Y-35.704 +N12062 G01 X+19.346 Y-35.653 +N12064 G01 X+18.405 Y-35.342 +N12066 G01 X+10.597 Y-29.432 +N12068 G01 X+4.779 Y-21.766 +N12070 G01 X+4.54 Y-21.237 +N12072 G01 X+4.329 Y-20.282 +N12074 G01 X+4.379 Y-19.356 +N12076 G01 X+4.687 Y-18.43 +N12078 G01 X+10.621 Y-10.65 +N12080 G01 X+18.195 Y-4.853 +N12082 G01 X+18.675 Y-4.612 +N12084 G01 X+19.608 Y-4.373 +N12086 G01 X+20.576 Y-4.401 +N12088 G01 X+21.544 Y-4.716 +N12090 G01 X+29.248 Y-10.636 +N12092 G01 X+35.163 Y-18.29 +N12094 G01 X+35.398 Y-18.8 +N12096 G01 X+35.605 Y-19.726 +N12098 G01 X+35.556 Y-20.624 +N12100 G01 X+35.254 Y-21.52 +N12102 G01 X+29.272 Y-29.245 +N12104 G01 X+21.682 Y-35.134 +N12106 G01 X+21.181 Y-35.367 +N12108 G01 X+20.271 Y-35.572 +N12110 G01 X+19.386 Y-35.523 +N12112 G01 X+18.506 Y-35.225 +N12114 G01 X+10.807 Y-29.219 +N12116 G01 X+4.894 Y-21.654 +N12118 G01 X+4.664 Y-21.163 +N12120 G01 X+4.461 Y-20.267 +N12122 G01 X+4.509 Y-19.396 +N12124 G01 X+4.805 Y-18.531 +N12126 G01 X+10.835 Y-10.86 +N12128 G01 X+18.309 Y-4.967 +N12130 G01 X+18.756 Y-4.736 +N12132 G01 X+19.629 Y-4.505 +N12134 G01 X+20.54 Y-4.532 +N12136 G01 X+21.444 Y-4.834 +N12138 G01 X+29.039 Y-10.849 +N12140 G01 X+35.049 Y-18.402 +N12142 G01 X+35.235 Y-18.778 +N12144 G01 X+35.462 Y-19.635 +N12146 G01 X+35.436 Y-20.531 +N12148 G01 X+35.137 Y-21.418 +N12150 G01 X+29.059 Y-29.035 +N12152 G01 X+21.57 Y-35.02 +N12154 G01 X+21.201 Y-35.204 +N12156 G01 X+20.36 Y-35.429 +N12158 G01 X+19.478 Y-35.403 +N12160 G01 X+18.607 Y-35.107 +N12162 G01 X+11.017 Y-29.005 +N12164 G01 X+5.009 Y-21.542 +N12166 G01 X+4.827 Y-21.181 +N12168 G01 X+4.603 Y-20.355 +N12170 G01 X+4.629 Y-19.488 +N12172 G01 X+4.922 Y-18.632 +N12174 G01 X+11.048 Y-11.07 +N12176 G01 X+18.424 Y-5.082 +N12178 G01 X+18.838 Y-4.859 +N12180 G01 X+19.651 Y-4.636 +N12182 G01 X+20.503 Y-4.662 +N12184 G01 X+21.343 Y-4.951 +N12186 G01 X+28.829 Y-11.061 +N12188 G01 X+34.934 Y-18.514 +N12190 G01 X+35.112 Y-18.86 +N12192 G01 X+35.331 Y-19.656 +N12194 G01 X+35.306 Y-20.494 +N12196 G01 X+35.019 Y-21.318 +N12198 G01 X+28.846 Y-28.825 +N12200 G01 X+21.457 Y-34.906 +N12202 G01 X+21.206 Y-35.042 +N12204 G01 X+20.387 Y-35.291 +N12206 G01 X+19.563 Y-35.282 +N12208 G01 X+18.75 Y-35.012 +N12210 G01 X+11.228 Y-28.792 +N12212 G01 X+5.123 Y-21.429 +N12214 G01 X+4.989 Y-21.184 +N12216 G01 X+4.742 Y-20.381 +N12218 G01 X+4.751 Y-19.571 +N12220 G01 X+5.018 Y-18.774 +N12222 G01 X+11.261 Y-11.28 +N12224 G01 X+18.54 Y-5.195 +N12226 G01 X+18.837 Y-5.021 +N12228 G01 X+19.625 Y-4.775 +N12230 G01 X+20.42 Y-4.783 +N12232 G01 X+21.201 Y-5.047 +N12234 G01 X+28.62 Y-11.274 +N12236 G01 X+34.82 Y-18.627 +N12238 G01 X+34.951 Y-18.861 +N12240 G01 X+35.192 Y-19.631 +N12242 G01 X+35.184 Y-20.412 +N12244 G01 X+34.923 Y-21.177 +N12246 G01 X+28.632 Y-28.615 +N12248 G01 X+21.345 Y-34.791 +N12250 G01 X+21.117 Y-34.92 +N12252 G01 X+20.362 Y-35.159 +N12254 G01 X+19.596 Y-35.151 +N12256 G01 X+18.847 Y-34.893 +N12258 G01 X+11.581 Y-28.703 +N12260 G01 X+5.237 Y-21.317 +N12262 G01 X+5.11 Y-21.095 +N12264 G01 X+4.874 Y-20.356 +N12266 G01 X+4.881 Y-19.605 +N12268 G01 X+5.136 Y-18.871 +N12270 G01 X+11.474 Y-11.49 +N12272 G01 X+18.655 Y-5.31 +N12274 G01 X+18.925 Y-5.142 +N12276 G01 X+19.65 Y-4.906 +N12278 G01 X+20.387 Y-4.914 +N12280 G01 X+21.105 Y-5.166 +N12282 G01 X+28.41 Y-11.487 +N12284 G01 X+34.706 Y-18.739 +N12286 G01 X+34.829 Y-18.949 +N12288 G01 X+35.061 Y-19.656 +N12290 G01 X+35.054 Y-20.379 +N12292 G01 X+34.805 Y-21.081 +N12294 G01 X+28.544 Y-28.263 +N12296 G01 X+21.231 Y-34.678 +N12298 G01 X+21.166 Y-34.721 +N12300 G01 X+20.461 Y-35.004 +N12302 G01 X+19.714 Y-35.034 +N12304 G01 X+18.945 Y-34.775 +N12306 G01 X+11.975 Y-28.656 +N12308 G01 X+5.35 Y-21.203 +N12310 G01 X+5.308 Y-21.14 +N12312 G01 X+5.029 Y-20.453 +N12314 G01 X+4.999 Y-19.72 +N12316 G01 X+5.217 Y-19.039 +N12318 G01 X+11.688 Y-11.701 +N12320 G01 X+18.816 Y-5.386 +N12322 G01 X+19.517 Y-5.071 +N12324 G01 X+20.233 Y-5.026 +N12326 G01 X+20.938 Y-5.247 +N12328 G01 X+20.991 Y-5.278 +N12330 G01 X+28.015 Y-11.532 +N12332 G01 X+34.585 Y-18.845 +N12334 G01 X+34.886 Y-19.489 +N12336 G01 X+34.94 Y-20.226 +N12338 G01 X+34.723 Y-20.916 +N12340 G01 X+34.692 Y-20.969 +N12342 G01 X+28.5 Y-27.87 +N12344 G01 X+21.127 Y-34.557 +N12346 G01 X+20.501 Y-34.854 +N12348 G01 X+19.78 Y-34.908 +N12350 G01 X+19.106 Y-34.693 +N12352 G01 X+19.053 Y-34.662 +N12354 G01 X+12.181 Y-28.448 +N12356 G01 X+5.472 Y-21.099 +N12358 G01 X+5.179 Y-20.49 +N12360 G01 X+5.125 Y-19.785 +N12362 G01 X+5.337 Y-19.129 +N12364 G01 X+5.368 Y-19.076 +N12366 G01 X+11.901 Y-11.911 +N12368 G01 X+18.929 Y-5.501 +N12370 G01 X+19.555 Y-5.202 +N12372 G01 X+20.209 Y-5.158 +N12374 G01 X+20.849 Y-5.367 +N12376 G01 X+20.902 Y-5.399 +N12378 G01 X+27.631 Y-11.578 +N12380 G01 X+34.471 Y-18.957 +N12382 G01 X+34.756 Y-19.531 +N12384 G01 X+34.809 Y-20.203 +N12386 G01 X+34.603 Y-20.827 +N12388 G01 X+34.571 Y-20.879 +N12390 G01 X+28.287 Y-27.669 +N12392 G01 X+21.015 Y-34.442 +N12394 G01 X+20.459 Y-34.723 +N12396 G01 X+19.803 Y-34.776 +N12398 G01 X+19.743 Y-34.768 +N12400 G01 X+19.195 Y-34.572 +N12402 G01 X+19.143 Y-34.541 +N12404 G01 X+12.565 Y-28.407 +N12406 G01 X+5.586 Y-20.987 +N12408 G01 X+5.31 Y-20.449 +N12410 G01 X+5.257 Y-19.809 +N12412 G01 X+5.265 Y-19.749 +N12414 G01 X+5.458 Y-19.217 +N12416 G01 X+5.489 Y-19.165 +N12418 G01 X+12.118 Y-12.118 +N12420 G01 X+18.993 Y-5.658 +N12422 G01 X+19.561 Y-5.344 +N12424 G01 X+19.621 Y-5.326 +N12426 G01 X+20.152 Y-5.285 +N12428 G01 X+20.213 Y-5.293 +N12430 G01 X+20.732 Y-5.472 +N12432 G01 X+20.787 Y-5.504 +N12434 G01 X+27.246 Y-11.613 +N12436 G01 X+34.358 Y-19.071 +N12438 G01 X+34.606 Y-19.513 +N12440 G01 X+34.684 Y-20.113 +N12442 G01 X+34.677 Y-20.178 +N12444 G01 X+34.498 Y-20.71 +N12446 G01 X+34.464 Y-20.766 +N12448 G01 X+28.427 Y-27.101 +N12450 G01 X+20.901 Y-34.329 +N12452 G01 X+20.475 Y-34.573 +N12454 G01 X+19.891 Y-34.651 +N12456 G01 X+19.825 Y-34.644 +N12458 G01 X+19.311 Y-34.468 +N12460 G01 X+19.256 Y-34.434 +N12462 G01 X+12.949 Y-28.376 +N12464 G01 X+5.699 Y-20.873 +N12466 G01 X+5.459 Y-20.463 +N12468 G01 X+5.441 Y-20.405 +N12470 G01 X+5.382 Y-19.895 +N12472 G01 X+5.389 Y-19.829 +N12474 G01 X+5.548 Y-19.358 +N12476 G01 X+5.582 Y-19.301 +N12478 G01 X+12.33 Y-12.33 +N12480 G01 X+19.11 Y-5.77 +N12482 G01 X+19.548 Y-5.494 +N12484 G01 X+19.61 Y-5.473 +N12486 G01 X+20.101 Y-5.415 +N12488 G01 X+20.167 Y-5.422 +N12490 G01 X+20.622 Y-5.578 +N12492 G01 X+20.678 Y-5.613 +N12494 G01 X+26.339 Y-11.124 +N12496 G01 X+34.245 Y-19.185 +N12498 G01 X+34.455 Y-19.511 +N12500 G01 X+34.556 Y-20.039 +N12502 G01 X+34.552 Y-20.106 +N12504 G01 X+34.419 Y-20.552 +N12506 G01 X+34.382 Y-20.613 +N12508 G01 X+29.632 Y-25.479 +N12510 G01 X+20.787 Y-34.217 +N12512 G01 X+20.475 Y-34.422 +N12514 G01 X+20.419 Y-34.444 +N12516 G01 X+19.964 Y-34.523 +N12518 G01 X+19.895 Y-34.518 +N12520 G01 X+19.466 Y-34.387 +N12522 G01 X+19.406 Y-34.353 +N12524 G01 X+18.131 Y-33.137 +N12526 G01 X+5.809 Y-20.756 +N12528 G01 X+5.644 Y-20.53 +N12530 G01 X+5.511 Y-20.024 +N12532 G01 X+5.513 Y-19.948 +N12534 G01 X+5.643 Y-19.488 +N12536 G01 X+5.681 Y-19.423 +N12538 G01 X+12.542 Y-12.542 +N12540 G01 X+19.248 Y-5.836 +N12542 G01 X+19.543 Y-5.629 +N12544 G01 X+19.601 Y-5.605 +N12546 G01 X+20.027 Y-5.527 +N12548 G01 X+20.099 Y-5.531 +N12550 G01 X+20.508 Y-5.659 +N12552 G01 X+20.569 Y-5.696 +N12554 G01 X+34.164 Y-19.248 +N12556 G01 X+34.371 Y-19.543 +N12558 G01 X+34.395 Y-19.601 +N12560 G01 X+34.473 Y-20.027 +N12562 G01 X+34.469 Y-20.099 +N12564 G01 X+34.341 Y-20.508 +N12566 G01 X+34.304 Y-20.569 +N12568 G01 X+20.752 Y-34.164 +N12570 G01 X+20.457 Y-34.371 +N12572 G01 X+20.399 Y-34.395 +N12574 G01 X+19.973 Y-34.473 +N12576 G01 X+19.901 Y-34.469 +N12578 G01 X+19.492 Y-34.341 +N12580 G01 X+19.431 Y-34.304 +N12582 G01 X+5.834 Y-20.751 +N12584 G01 X+5.656 Y-20.512 +N12586 G01 X+5.527 Y-20.036 +N12588 G01 Y-19.964 +N12590 G01 X+5.629 Y-19.552 +N12592 G01 X+5.668 Y-19.483 +N12594 G01 X+12.542 Y-12.542 +N12596 G01 Z+2.05 F16500 +N12598 G00 Z+7.05 +G01 Z10 (AJOUT) +(#HSC OFF )(AJOUT) +(N12600 #TRAFO OFF) +(#FLUSH WAIT )(AJOUT) +(N12602 G53 G01 Z+24 F1000) +(N12604 G53 G01 Y+27 F1000) +(N12606 M05) +N12608 M17 +(N99999999 %Ebauche G71) +(//3\\EB CERCLE) +(;----------- Tool list -----------) +(;T01 R1. L+6.)(T1 Fraise 2 tailles D 2) +(;---------------------------------) +N02 G17 G90 +(N04 G53 G01 Z+24 F1000) +(N06 #TRAFO ON) +N08 G54 +(; - T1 Fraise 2 tailles D 2) +N10 G17 T1 S60000 +N12 M03 +(; - EB cercle) +(#HSC[OPMODE 2 CONTERROR 0.02] )(AJOUT) +(#HSC ON )(AJOUT) +N14 G00 X+41.958 Y+0.212 Z+1.183 B0. C0. +N16 G00 Z-3.817 +N18 G01 X+41.95 Y+0 F16500 +N20 G01 X+41.92 Y-40.314 F16500 +N22 G01 X+41.912 Y-40.362 +N24 G01 X+41.737 Y-40.879 +N26 G01 X+41.716 Y-40.919 +N28 G01 X+41.393 Y-41.36 +N30 G01 X+41.36 Y-41.393 +N32 G01 X+40.919 Y-41.716 +N34 G01 X+40.879 Y-41.737 +N36 G01 X+40.356 Y-41.915 +N38 G01 X+40.007 Y-41.949 +N40 G01 X-0.314 Y-41.92 +N42 G01 X-0.362 Y-41.912 +N44 G01 X-0.879 Y-41.737 +N46 G01 X-0.919 Y-41.716 +N48 G01 X-1.36 Y-41.393 +N50 G01 X-1.393 Y-41.36 +N52 G01 X-1.716 Y-40.919 +N54 G01 X-1.737 Y-40.879 +N56 G01 X-1.915 Y-40.356 +N58 G01 X-1.949 Y-40.007 +N60 G01 X-1.92 Y+0.314 +N62 G01 X-1.912 Y+0.362 +N64 G01 X-1.737 Y+0.879 +N66 G01 X-1.716 Y+0.919 +N68 G01 X-1.393 Y+1.36 +N70 G01 X-1.36 Y+1.393 +N72 G01 X-0.919 Y+1.716 +N74 G01 X-0.879 Y+1.737 +N76 G01 X-0.356 Y+1.915 +N78 G01 X-0.007 Y+1.949 +N80 G01 X+40.314 Y+1.92 +N82 G01 X+40.362 Y+1.912 +N84 G01 X+40.879 Y+1.737 +N86 G01 X+40.919 Y+1.716 +N88 G01 X+41.091 Y+1.59 +N90 G01 X+41.165 Y+1.549 +N92 G01 X+41.365 Y+1.379 +N94 G01 X+41.529 Y+1.193 +N96 G01 X+41.828 Y+0.639 +N98 G01 X+41.919 Y+0.264 +N100 G01 X+41.938 Y+0 +N102 G01 X+41.886 Y-34.877 +N104 G01 X+41.884 Y-35.09 +N106 G01 X+41.849 Y-40.301 +N108 G01 X+41.782 Y-40.583 +N110 G01 X+41.497 Y-41.125 +N112 G01 X+41.332 Y-41.318 +N114 G01 X+41.153 Y-41.476 +N116 G01 X+40.618 Y-41.766 +N118 G01 X+40.26 Y-41.853 +N120 G01 X+14.383 Y-41.879 +N122 G01 X+4.91 Y-41.819 +N124 G01 X+0 Y-41.811 +N126 G01 X-0.296 Y-41.785 +N128 G01 X-0.562 Y-41.72 +N130 G01 X-1.085 Y-41.444 +N132 G01 X-1.272 Y-41.286 +N134 G01 X-1.424 Y-41.113 +N136 G01 X-1.703 Y-40.597 +N138 G01 X-1.788 Y-40.252 +N140 G01 X-1.85 Y-17.222 +N142 G01 X-1.747 Y-0.679 +N144 G01 X-1.72 Y+0.28 +N146 G01 X-1.657 Y+0.541 +N148 G01 X-1.392 Y+1.046 +N150 G01 X-1.239 Y+1.226 +N152 G01 X-1.073 Y+1.372 +N154 G01 X-0.576 Y+1.641 +N156 G01 X-0.239 Y+1.724 +N158 G01 X+0 Y+1.742 +N160 G01 X+7.593 Y+1.762 +N162 G01 X+21.296 Y+1.818 +N164 G01 X+33.61 Y+1.712 +N166 G01 X+35.09 Y+1.688 +N168 G01 X+40.267 Y+1.655 +N170 G01 X+40.52 Y+1.595 +N172 G01 X+41.005 Y+1.34 +N174 G01 X+41.179 Y+1.193 +N176 G01 X+41.32 Y+1.033 +N178 G01 X+41.579 Y+0.554 +N180 G01 X+41.659 Y+0.23 +N182 G01 X+41.676 Y+0 +N184 G01 X+41.692 Y-6.605 +N186 G01 X+41.783 Y-18.951 +N188 G01 X+41.708 Y-30.062 +N190 G01 X+41.617 Y-35.09 +N192 G01 X+41.609 Y-40 +N194 G01 X+41.586 Y-40.261 +N196 G01 X+41.528 Y-40.498 +N198 G01 X+41.284 Y-40.963 +N200 G01 X+41.143 Y-41.129 +N202 G01 X+40.991 Y-41.264 +N204 G01 X+40.532 Y-41.512 +N206 G01 X+40.225 Y-41.588 +N208 G01 X+33.395 Y-41.629 +N210 G01 X+22.407 Y-41.742 +N212 G01 X+12.16 Y-41.689 +N214 G01 X+4.91 Y-41.547 +N216 G01 X+0 Y-41.539 +N218 G01 X-0.25 Y-41.517 +N220 G01 X-0.475 Y-41.462 +N222 G01 X-0.92 Y-41.228 +N224 G01 X-1.079 Y-41.093 +N226 G01 X-1.208 Y-40.948 +N228 G01 X-1.446 Y-40.509 +N230 G01 X-1.519 Y-40.216 +N232 G01 X-1.555 Y-33.889 +N234 G01 X-1.696 Y-23.889 +N236 G01 X-1.672 Y-14.383 +N238 G01 X-1.49 Y-5.37 +N240 G01 X-1.447 Y+0.232 +N242 G01 X-1.395 Y+0.453 +N244 G01 X-1.173 Y+0.877 +N246 G01 X-1.044 Y+1.03 +N248 G01 X-0.905 Y+1.153 +N250 G01 X-0.487 Y+1.379 +N252 G01 X-0.203 Y+1.45 +N254 G01 X+0 Y+1.465 +N256 G01 X+5.864 Y+1.483 +N258 G01 X+15.247 Y+1.649 +N260 G01 X+24.259 Y+1.645 +N262 G01 X+32.901 Y+1.476 +N264 G01 X+35.09 Y+1.406 +N266 G01 X+40.219 Y+1.378 +N268 G01 X+40.43 Y+1.328 +N270 G01 X+40.834 Y+1.117 +N272 G01 X+40.98 Y+0.994 +N274 G01 X+41.097 Y+0.862 +N276 G01 X+41.313 Y+0.465 +N278 G01 X+41.381 Y+0.193 +N280 G01 X+41.395 Y+0 +N282 G01 X+41.409 Y-5.617 +N284 G01 X+41.597 Y-14.299 +N286 G01 X+41.618 Y-22.781 +N288 G01 X+41.478 Y-30.802 +N290 G01 X+41.336 Y-35.09 +N292 G01 X+41.328 Y-40 +N294 G01 X+41.309 Y-40.214 +N296 G01 X+41.262 Y-40.408 +N298 G01 X+41.061 Y-40.792 +N300 G01 X+40.944 Y-40.93 +N302 G01 X+40.82 Y-41.041 +N304 G01 X+40.442 Y-41.246 +N306 G01 X+40.189 Y-41.31 +N308 G01 X+34.383 Y-41.342 +N310 G01 X+26.139 Y-41.548 +N312 G01 X+18.086 Y-41.585 +N314 G01 X+10.432 Y-41.459 +N316 G01 X+4.91 Y-41.266 +N318 G01 X+0 Y-41.258 +N320 G01 X-0.202 Y-41.24 +N322 G01 X-0.385 Y-41.195 +N324 G01 X-0.749 Y-41.005 +N326 G01 X-0.881 Y-40.895 +N328 G01 X-0.985 Y-40.777 +N330 G01 X-1.18 Y-40.42 +N332 G01 X-1.24 Y-40.18 +N334 G01 X-1.275 Y-34.383 +N336 G01 X-1.499 Y-26.481 +N338 G01 X-1.551 Y-18.951 +N340 G01 X-1.439 Y-11.543 +N342 G01 X-1.194 Y-4.259 +N344 G01 X-1.17 Y+0.184 +N346 G01 X-1.129 Y+0.362 +N348 G01 X-0.95 Y+0.706 +N350 G01 X-0.845 Y+0.831 +N352 G01 X-0.734 Y+0.93 +N354 G01 X-0.397 Y+1.113 +N356 G01 X-0.166 Y+1.172 +N358 G01 X+0 Y+1.184 +N360 G01 X+5.617 Y+1.207 +N362 G01 X+12.978 Y+1.444 +N364 G01 X+20.185 Y+1.515 +N366 G01 X+27.346 Y+1.421 +N368 G01 X+34.383 Y+1.161 +N370 G01 X+35.09 Y+1.125 +N372 G01 X+40.172 Y+1.101 +N374 G01 X+40.34 Y+1.063 +N376 G01 X+40.664 Y+0.894 +N378 G01 X+40.782 Y+0.796 +N380 G01 X+40.875 Y+0.692 +N382 G01 X+41.048 Y+0.375 +N384 G01 X+41.103 Y+0.157 +N386 G01 X+41.115 Y+0 +N388 G01 X+41.13 Y-5.37 +N390 G01 X+41.387 Y-12.42 +N392 G01 X+41.478 Y-19.473 +N394 G01 X+41.402 Y-26.366 +N396 G01 X+41.16 Y-33.148 +N398 G01 X+41.06 Y-35.09 +N400 G01 X+41.052 Y-40 +N402 G01 X+41.037 Y-40.167 +N404 G01 X+41.001 Y-40.319 +N406 G01 X+40.842 Y-40.624 +N408 G01 X+40.75 Y-40.736 +N410 G01 X+40.652 Y-40.823 +N412 G01 X+40.354 Y-40.986 +N414 G01 X+40.153 Y-41.037 +N416 G01 X+34.63 Y-41.066 +N418 G01 X+27.84 Y-41.336 +N420 G01 X+21.181 Y-41.441 +N422 G01 X+14.63 Y-41.384 +N424 G01 X+8.086 Y-41.162 +N426 G01 X+4.91 Y-40.994 +N428 G01 X+0 Y-40.986 +N430 G01 X-0.156 Y-40.973 +N432 G01 X-0.298 Y-40.938 +N434 G01 X-0.584 Y-40.79 +N436 G01 X-0.689 Y-40.703 +N438 G01 X-0.77 Y-40.612 +N440 G01 X-0.923 Y-40.333 +N442 G01 X-0.972 Y-40.144 +N444 G01 X-1.002 Y-34.63 +N446 G01 X-1.285 Y-28.086 +N448 G01 X-1.403 Y-21.667 +N450 G01 X-1.357 Y-15.247 +N452 G01 X-1.144 Y-8.827 +N454 G01 X-0.928 Y-4.383 +N456 G01 X-0.907 Y+0.138 +N458 G01 X-0.876 Y+0.277 +N460 G01 X-0.738 Y+0.544 +N462 G01 X-0.657 Y+0.643 +N464 G01 X-0.572 Y+0.718 +N466 G01 X-0.316 Y+0.859 +N468 G01 X-0.27 Y+0.875 +N470 G01 X-0.012 Y+0.917 +N472 G01 X+5.37 Y+0.939 +N474 G01 X+11.79 Y+1.237 +N476 G01 X+18.076 Y+1.365 +N478 G01 X+24.259 Y+1.329 +N480 G01 X+30.297 Y+1.133 +N482 G01 X+35.09 Y+0.863 +N484 G01 X+40.127 Y+0.842 +N486 G01 X+40.256 Y+0.814 +N488 G01 X+40.504 Y+0.686 +N490 G01 X+40.596 Y+0.61 +N492 G01 X+40.666 Y+0.532 +N494 G01 X+40.797 Y+0.295 +N496 G01 X+40.812 Y+0.249 +N498 G01 X+40.851 Y+0.012 +N500 G01 X+40.874 Y-5.37 +N502 G01 X+41.182 Y-11.543 +N504 G01 X+41.325 Y-17.761 +N506 G01 X+41.296 Y-23.889 +N508 G01 X+41.097 Y-29.951 +N510 G01 X+40.793 Y-35.09 +N512 G01 X+40.784 Y-39.988 +N514 G01 X+40.747 Y-40.227 +N516 G01 X+40.731 Y-40.273 +N518 G01 X+40.63 Y-40.461 +N520 G01 X+40.56 Y-40.547 +N522 G01 X+40.489 Y-40.61 +N524 G01 X+40.268 Y-40.732 +N526 G01 X+40.118 Y-40.772 +N528 G01 X+34.63 Y-40.806 +N530 G01 X+28.476 Y-41.133 +N532 G01 X+22.531 Y-41.283 +N534 G01 X+16.605 Y-41.265 +N536 G01 X+10.679 Y-41.075 +N538 G01 X+4.91 Y-40.722 +N540 G01 X+0.012 Y-40.714 +N542 G01 X-0.204 Y-40.68 +N544 G01 X-0.25 Y-40.664 +N546 G01 X-0.419 Y-40.574 +N548 G01 X-0.497 Y-40.511 +N550 G01 X-0.555 Y-40.447 +N552 G01 X-0.66 Y-40.257 +N554 G01 X-0.677 Y-40.196 +N556 G01 X-0.712 Y-39.691 +N558 G01 X-0.737 Y-34.63 +N560 G01 X-1.075 Y-28.704 +N562 G01 X-1.24 Y-22.781 +N564 G01 X-1.231 Y-16.975 +N566 G01 X-1.054 Y-11.296 +N568 G01 X-0.707 Y-5.617 +N570 G01 X-0.651 Y-4.383 +N572 G01 X-0.634 Y+0.091 +N574 G01 X-0.615 Y+0.184 +N576 G01 X-0.597 Y+0.226 +N578 G01 X-0.466 Y+0.436 +N580 G01 X-0.438 Y+0.469 +N582 G01 X-0.404 Y+0.499 +N584 G01 X-0.228 Y+0.597 +N586 G01 X-0.181 Y+0.612 +N588 G01 X-0.012 Y+0.64 +N590 G01 X+5.37 Y+0.669 +N592 G01 X+11.049 Y+1.015 +N594 G01 X+16.605 Y+1.192 +N596 G01 X+22.16 Y+1.205 +N598 G01 X+27.58 Y+1.056 +N600 G01 X+33.125 Y+0.736 +N602 G01 X+35.09 Y+0.582 +N604 G01 X+40.079 Y+0.565 +N606 G01 X+40.161 Y+0.549 +N608 G01 X+40.203 Y+0.531 +N610 G01 X+40.386 Y+0.417 +N612 G01 X+40.42 Y+0.389 +N614 G01 X+40.463 Y+0.333 +N616 G01 X+40.531 Y+0.205 +N618 G01 X+40.547 Y+0.159 +N620 G01 X+40.571 Y+0.012 +N622 G01 X+40.602 Y-5.37 +N624 G01 X+40.963 Y-10.96 +N626 G01 X+41.149 Y-16.358 +N628 G01 X+41.171 Y-21.924 +N630 G01 X+41.027 Y-27.249 +N632 G01 X+40.713 Y-32.654 +N634 G01 X+40.516 Y-35.09 +N636 G01 X+40.508 Y-39.988 +N638 G01 X+40.486 Y-40.133 +N640 G01 X+40.465 Y-40.188 +N642 G01 X+40.371 Y-40.34 +N644 G01 X+40.342 Y-40.374 +N646 G01 X+40.286 Y-40.412 +N648 G01 X+40.093 Y-40.492 +N650 G01 X+40.037 Y-40.503 +N652 G01 X+34.63 Y-40.538 +N654 G01 X+29.198 Y-40.908 +N656 G01 X+23.889 Y-41.106 +N658 G01 X+18.618 Y-41.14 +N660 G01 X+13.42 Y-41.013 +N662 G01 X+8.086 Y-40.712 +N664 G01 X+4.91 Y-40.451 +N666 G01 X+0.012 Y-40.443 +N668 G01 X-0.112 Y-40.424 +N670 G01 X-0.167 Y-40.403 +N672 G01 X-0.294 Y-40.324 +N674 G01 X-0.327 Y-40.296 +N676 G01 X-0.36 Y-40.241 +N678 G01 X-0.434 Y-40.023 +N680 G01 X-0.442 Y-39.976 +N682 G01 X-0.453 Y-34.877 +N684 G01 X-0.847 Y-29.444 +N686 G01 X-1.06 Y-24.259 +N688 G01 X-1.107 Y-18.951 +N690 G01 X-0.985 Y-13.765 +N692 G01 X-0.695 Y-8.58 +N694 G01 X-0.384 Y-4.63 +N696 G01 X-0.357 Y+0.078 +N698 G01 X-0.335 Y+0.157 +N700 G01 X-0.279 Y+0.246 +N702 G01 X-0.2 Y+0.309 +N704 G01 X-0.023 Y+0.368 +N706 G01 X+0.025 Y+0.376 +N708 G01 X+4.91 Y+0.368 +N710 G01 X+10.049 Y+0.769 +N712 G01 X+15.247 Y+1.008 +N714 G01 X+20.432 Y+1.075 +N716 G01 X+25.617 Y+0.969 +N718 G01 X+30.647 Y+0.698 +N720 G01 X+35.09 Y+0.319 +N722 G01 X+40.057 Y+0.295 +N724 G01 X+40.136 Y+0.272 +N726 G01 X+40.195 Y+0.235 +N728 G01 X+40.258 Y+0.156 +N730 G01 X+40.303 Y+0.024 +N732 G01 X+40.311 Y-0.025 +N734 G01 X+40.302 Y-4.91 +N736 G01 X+40.713 Y-9.938 +N738 G01 X+40.965 Y-15.172 +N740 G01 X+41.038 Y-20.1 +N742 G01 X+40.95 Y-25 +N744 G01 X+40.694 Y-29.951 +N746 G01 X+40.271 Y-34.877 +N748 G01 X+40.25 Y-35.082 +N750 G01 X+40.228 Y-40.035 +N752 G01 X+40.205 Y-40.113 +N754 G01 X+40.131 Y-40.189 +N756 G01 X+40.063 Y-40.223 +N758 G01 X+39.996 Y-40.238 +N760 G01 X+35.123 Y-40.232 +N762 G01 X+29.951 Y-40.667 +N764 G01 X+25 Y-40.918 +N766 G01 X+20.1 Y-41 +N768 G01 X+15.247 Y-40.917 +N770 G01 X+10.432 Y-40.669 +N772 G01 X+5.617 Y-40.254 +N774 G01 X+4.918 Y-40.18 +N776 G01 X+0.03 Y-40.17 +N778 G01 X-0.027 Y-40.159 +N780 G01 X-0.144 Y-40.063 +N782 G01 X-0.17 Y-39.97 +N784 G01 X-0.162 Y-35.13 +N786 G01 X-0.608 Y-30.062 +N788 G01 X-0.872 Y-25.123 +N790 G01 X-0.962 Y-20.327 +N792 G01 X-0.884 Y-15.494 +N794 G01 X-0.635 Y-10.679 +N796 G01 X-0.213 Y-5.864 +N798 G01 X-0.108 Y-4.63 +N800 G01 X-0.08 Y-0.049 +N802 G02 X+0.07 Y+0.1 I+0.15 J-0.001 +N804 G01 X+4.903 Y+0.091 +N806 G01 X+9.691 Y+0.536 +N808 G01 X+14.383 Y+0.811 +N810 G01 X+19.045 Y+0.921 +N812 G01 X+23.642 Y+0.87 +N814 G01 X+28.21 Y+0.66 +N816 G01 X+32.901 Y+0.276 +N818 G01 X+35.082 Y+0.039 +N820 G01 X+39.882 Y+0.032 +N822 G02 X+40.032 Y-0.118 I+0 J-0.15 +N824 G01 X+40.026 Y-4.903 +N826 G01 X+40.49 Y-9.703 +N828 G01 X+40.77 Y-14.299 +N830 G01 X+40.888 Y-18.951 +N832 G01 X+40.838 Y-23.642 +N834 G01 X+40.623 Y-28.21 +N836 G01 X+40.23 Y-32.901 +N838 G01 X+39.988 Y-35.082 +N840 G01 X+39.981 Y-39.831 +N842 G02 X+39.83 Y-39.98 I-0.15 J+0.001 +N844 G01 X+35.131 Y-39.974 +N846 G01 X+30.309 Y-40.45 +N848 G01 X+25.617 Y-40.742 +N850 G01 X+20.955 Y-40.861 +N852 G01 X+16.358 Y-40.808 +N854 G01 X+11.79 Y-40.588 +N856 G01 X+7.355 Y-40.211 +N858 G01 X+4.918 Y-39.936 +N860 G01 X+0.247 Y-39.929 +N862 G01 X+0.141 Y-39.885 +N864 G01 X+0.071 Y-39.753 +N866 G01 X+0.077 Y-35.131 +N868 G01 X-0.411 Y-30.309 +N870 G01 X-0.711 Y-25.617 +N872 G01 X-0.831 Y-21.181 +N874 G01 X-0.786 Y-16.605 +N876 G01 X-0.577 Y-12.16 +N878 G01 X-0.192 Y-7.593 +N880 G01 X+0.116 Y-4.637 +N882 G01 X+0.122 Y-0.273 +N884 G02 X+0.273 Y-0.123 I+0.15 J+0 +N886 G01 X+4.902 Y-0.129 +N888 G01 X+9.444 Y+0.351 +N890 G01 X+13.861 Y+0.654 +N892 G01 X+18.333 Y+0.797 +N894 G01 X+22.778 Y+0.773 +N896 G01 X+27.346 Y+0.575 +N898 G01 X+31.914 Y+0.199 +N900 G01 X+35.082 Y-0.167 +N902 G01 X+39.675 Y-0.185 +N904 G02 X+39.825 Y-0.335 I+0 J-0.15 +N906 G01 X+39.818 Y-4.902 +N908 G01 X+40.3 Y-9.353 +N910 G01 X+40.615 Y-13.765 +N912 G01 X+40.766 Y-18.333 +N914 G01 X+40.741 Y-22.781 +N916 G01 X+40.543 Y-27.249 +N918 G01 X+40.183 Y-31.582 +N920 G01 X+39.772 Y-35.081 +N922 G01 X+39.764 Y-39.614 +N924 G02 X+39.614 Y-39.764 I-0.15 J+0 +N926 G01 X+35.132 Y-39.757 +N928 G01 X+30.556 Y-40.262 +N930 G01 X+26.139 Y-40.582 +N932 G01 X+21.667 Y-40.733 +N934 G01 X+17.222 Y-40.707 +N936 G01 X+12.901 Y-40.513 +N938 G01 X+8.58 Y-40.151 +N940 G01 X+4.919 Y-39.711 +N942 G01 X+0.446 Y-39.692 +N944 G02 X+0.297 Y-39.542 I+0.001 J+0.15 +N946 G01 X+0.304 Y-35.132 +N948 G01 X-0.215 Y-30.556 +N950 G01 X-0.544 Y-26.139 +N952 G01 X-0.695 Y-21.924 +N954 G01 X-0.679 Y-17.469 +N956 G01 X-0.492 Y-13.194 +N958 G01 X-0.128 Y-8.827 +N960 G01 X+0.35 Y-4.638 +N962 G01 X+0.358 Y-0.508 +N964 G02 X+0.508 Y-0.358 I+0.15 J+0 +N966 G01 X+4.901 Y-0.365 +N968 G01 X+9.198 Y+0.144 +N970 G01 X+13.519 Y+0.487 +N972 G01 X+17.84 Y+0.657 +N974 G01 X+22.16 Y+0.654 +N976 G01 X+26.481 Y+0.474 +N978 G01 X+30.647 Y+0.134 +N980 G01 X+34.877 Y-0.381 +N982 G01 X+35.08 Y-0.41 +N984 G01 X+39.432 Y-0.431 +N986 G02 X+39.581 Y-0.582 I-0.001 J-0.15 +N988 G01 X+39.575 Y-4.901 +N990 G01 X+40.085 Y-9.074 +N992 G01 X+40.443 Y-13.42 +N994 G01 X+40.622 Y-17.761 +N996 G01 X+40.625 Y-21.924 +N998 G01 X+40.457 Y-26.139 +N1000 G01 X+40.122 Y-30.309 +N1002 G01 X+39.63 Y-34.383 +N1004 G01 X+39.529 Y-35.079 +N1006 G01 X+39.521 Y-39.371 +N1008 G02 X+39.371 Y-39.521 I-0.15 J+0 +N1010 G01 X+35.133 Y-39.514 +N1012 G01 X+30.802 Y-40.05 +N1014 G01 X+26.728 Y-40.395 +N1016 G01 X+22.531 Y-40.582 +N1018 G01 X+18.333 Y-40.596 +N1020 G01 X+14.299 Y-40.446 +N1022 G01 X+10.185 Y-40.126 +N1024 G01 X+6.111 Y-39.642 +N1026 G01 X+4.92 Y-39.468 +N1028 G01 X+0.69 Y-39.445 +N1030 G02 X+0.54 Y-39.295 I+0 J+0.15 +N1032 G01 X+0.547 Y-35.133 +N1034 G01 X-0.003 Y-30.802 +N1036 G01 X-0.356 Y-26.728 +N1038 G01 X-0.548 Y-22.531 +N1040 G01 X-0.563 Y-18.333 +N1042 G01 X-0.408 Y-14.299 +N1044 G01 X-0.081 Y-10.185 +N1046 G01 X+0.415 Y-6.111 +N1048 G01 X+0.593 Y-4.763 +N1050 G01 X+0.601 Y-0.751 +N1052 G02 X+0.751 Y-0.601 I+0.15 J+0 +N1054 G01 X+4.9 Y-0.608 +N1056 G01 X+8.951 Y-0.072 +N1058 G01 X+12.978 Y+0.297 +N1060 G01 X+16.975 Y+0.5 +N1062 G01 X+21.049 Y+0.538 +N1064 G01 X+25.123 Y+0.404 +N1066 G01 X+29.321 Y+0.085 +N1068 G01 X+33.395 Y-0.401 +N1070 G01 X+35.079 Y-0.654 +N1072 G01 X+39.189 Y-0.678 +N1074 G02 X+39.339 Y-0.828 I+0 J-0.15 +N1076 G01 X+39.333 Y-4.9 +N1078 G01 X+39.896 Y-9.074 +N1080 G01 X+40.275 Y-13.194 +N1082 G01 X+40.475 Y-17.222 +N1084 G01 X+40.505 Y-21.181 +N1086 G01 X+40.37 Y-25.123 +N1088 G01 X+40.057 Y-29.198 +N1090 G01 X+39.583 Y-33.148 +N1092 G01 X+39.29 Y-35.079 +N1094 G01 X+39.283 Y-39.133 +N1096 G02 X+39.132 Y-39.283 I-0.15 J+0 +N1098 G01 X+35.134 Y-39.277 +N1100 G01 X+30.802 Y-39.866 +N1102 G01 X+26.728 Y-40.245 +N1104 G01 X+22.781 Y-40.443 +N1106 G01 X+18.704 Y-40.473 +N1108 G01 X+14.63 Y-40.322 +N1110 G01 X+10.679 Y-40.004 +N1112 G01 X+6.605 Y-39.497 +N1114 G01 X+4.921 Y-39.234 +N1116 G01 X+0.924 Y-39.227 +N1118 G02 X+0.774 Y-39.076 I+0 J+0.15 +N1120 G01 X+0.78 Y-35.134 +N1122 G01 X+0.178 Y-30.802 +N1124 G01 X-0.209 Y-26.728 +N1126 G01 X-0.412 Y-22.781 +N1128 G01 X-0.445 Y-18.951 +N1130 G01 X-0.303 Y-14.877 +N1132 G01 X+0.007 Y-10.96 +N1134 G01 X+0.481 Y-7.099 +N1136 G01 X+0.823 Y-4.764 +N1138 G01 X+0.83 Y-0.988 +N1140 G01 X+0.874 Y-0.882 +N1142 G01 X+0.988 Y-0.83 +N1144 G01 X+4.899 Y-0.836 +N1146 G01 X+8.951 Y-0.252 +N1148 G01 X+12.751 Y+0.133 +N1150 G01 X+16.605 Y+0.36 +N1152 G01 X+20.432 Y+0.42 +N1154 G01 X+24.259 Y+0.316 +N1156 G01 X+28.21 Y+0.035 +N1158 G01 X+32.16 Y-0.425 +N1160 G01 X+35.079 Y-0.878 +N1162 G01 X+38.965 Y-0.885 +N1164 G02 X+39.115 Y-1.035 I+0 J-0.15 +N1166 G01 X+39.109 Y-4.899 +N1168 G01 X+39.69 Y-8.827 +N1170 G01 X+40.09 Y-12.654 +N1172 G01 X+40.329 Y-16.605 +N1174 G01 X+40.391 Y-20.432 +N1176 G01 X+40.289 Y-24.187 +N1178 G01 X+40.011 Y-28.086 +N1180 G01 X+39.581 Y-31.809 +N1182 G01 X+39.07 Y-35.079 +N1184 G01 X+39.063 Y-38.889 +N1186 G01 X+39.019 Y-38.994 +N1188 G01 X+38.888 Y-39.063 +N1190 G01 X+35.135 Y-39.058 +N1192 G01 X+31.049 Y-39.665 +N1194 G01 X+27.249 Y-40.065 +N1196 G01 X+23.395 Y-40.3 +N1198 G01 X+19.568 Y-40.363 +N1200 G01 X+15.741 Y-40.255 +N1202 G01 X+12.037 Y-39.988 +N1204 G01 X+8.333 Y-39.558 +N1206 G01 X+4.922 Y-39.018 +N1208 G01 X+1.138 Y-39.012 +N1210 G02 X+0.989 Y-38.862 I+0.001 J+0.15 +N1212 G01 X+0.994 Y-35.135 +N1214 G01 X+0.376 Y-31.049 +N1216 G01 X-0.031 Y-27.249 +N1218 G01 X-0.271 Y-23.395 +N1220 G01 X-0.335 Y-19.568 +N1222 G01 X-0.226 Y-15.741 +N1224 G01 X+0.047 Y-12.037 +N1226 G01 X+0.484 Y-8.333 +N1228 G01 X+1.033 Y-4.764 +N1230 G01 X+1.049 Y-1.19 +N1232 G02 X+1.199 Y-1.04 I+0.15 J+0 +N1234 G01 X+4.898 Y-1.045 +N1236 G01 X+8.704 Y-0.449 +N1238 G01 X+12.407 Y-0.033 +N1240 G01 X+16.111 Y+0.22 +N1242 G01 X+19.9 Y+0.308 +N1244 G01 X+23.642 Y+0.225 +N1246 G01 X+27.346 Y-0.024 +N1248 G01 X+31.173 Y-0.457 +N1250 G01 X+34.877 Y-1.047 +N1252 G01 X+35.077 Y-1.084 +N1254 G01 X+38.759 Y-1.091 +N1256 G02 X+38.909 Y-1.241 I+0 J-0.15 +N1258 G01 X+38.904 Y-4.898 +N1260 G01 X+39.493 Y-8.58 +N1262 G01 X+39.934 Y-12.42 +N1264 G01 X+40.187 Y-16.039 +N1266 G01 X+40.28 Y-19.815 +N1268 G01 X+40.196 Y-23.642 +N1270 G01 X+39.951 Y-27.249 +N1272 G01 X+39.519 Y-31.049 +N1274 G01 X+38.902 Y-34.877 +N1276 G01 X+38.865 Y-35.076 +N1278 G01 X+38.857 Y-38.707 +N1280 G02 X+38.707 Y-38.857 I-0.15 J+0 +N1282 G01 X+35.135 Y-38.852 +N1284 G01 X+31.049 Y-39.503 +N1286 G01 X+27.346 Y-39.922 +N1288 G01 X+23.642 Y-40.172 +N1290 G01 X+19.815 Y-40.252 +N1292 G01 X+16.111 Y-40.155 +N1294 G01 X+12.42 Y-39.887 +N1296 G01 X+8.827 Y-39.461 +N1298 G01 X+5.123 Y-38.851 +N1300 G01 X+4.924 Y-38.813 +N1302 G01 X+1.358 Y-38.806 +N1304 G01 X+1.252 Y-38.762 +N1306 G01 X+1.195 Y-38.641 +N1308 G01 X+1.199 Y-35.136 +N1310 G01 X+0.538 Y-31.049 +N1312 G01 X+0.111 Y-27.346 +N1314 G01 X-0.143 Y-23.642 +N1316 G01 X-0.224 Y-19.815 +N1318 G01 X-0.125 Y-16.111 +N1320 G01 X+0.147 Y-12.42 +N1322 G01 X+0.58 Y-8.827 +N1324 G01 X+1.2 Y-5.123 +N1326 G01 X+1.239 Y-4.889 +N1328 G01 X+1.246 Y-1.396 +N1330 G02 X+1.396 Y-1.246 I+0.15 J+0 +N1332 G01 X+4.897 Y-1.251 +N1334 G01 X+8.704 Y-0.614 +N1336 G01 X+12.407 Y-0.169 +N1338 G01 X+16.111 Y+0.102 +N1340 G01 X+19.673 Y+0.196 +N1342 G01 X+23.395 Y+0.119 +N1344 G01 X+27.099 Y-0.135 +N1346 G01 X+30.647 Y-0.546 +N1348 G01 X+34.383 Y-1.156 +N1350 G01 X+35.076 Y-1.29 +N1352 G01 X+38.518 Y-1.298 +N1354 G01 X+38.624 Y-1.342 +N1356 G01 X+38.658 Y-1.376 +N1358 G01 X+38.702 Y-1.482 +N1360 G01 X+38.696 Y-4.897 +N1362 G01 X+39.325 Y-8.58 +N1364 G01 X+39.771 Y-12.16 +N1366 G01 X+40.05 Y-15.741 +N1368 G01 X+40.162 Y-19.246 +N1370 G01 X+40.112 Y-22.781 +N1372 G01 X+39.893 Y-26.366 +N1374 G01 X+39.503 Y-29.951 +N1376 G01 X+38.924 Y-33.642 +N1378 G01 X+38.649 Y-35.076 +N1380 G01 X+38.641 Y-38.491 +N1382 G02 X+38.491 Y-38.641 I-0.15 J+0 +N1384 G01 X+35.136 Y-38.636 +N1386 G01 X+31.296 Y-39.294 +N1388 G01 X+27.593 Y-39.755 +N1390 G01 X+23.889 Y-40.035 +N1392 G01 X+20.327 Y-40.132 +N1394 G01 X+16.605 Y-40.052 +N1396 G01 X+12.901 Y-39.788 +N1398 G01 X+9.444 Y-39.375 +N1400 G01 X+5.864 Y-38.775 +N1402 G01 X+4.924 Y-38.588 +N1404 G01 X+1.605 Y-38.58 +N1406 G01 X+1.499 Y-38.536 +N1408 G01 X+1.464 Y-38.501 +N1410 G01 X+1.42 Y-38.395 +N1412 G01 X+1.425 Y-35.137 +N1414 G01 X+0.754 Y-31.296 +N1416 G01 X+0.285 Y-27.593 +N1418 G01 X+0 Y-23.889 +N1420 G01 X-0.098 Y-20.432 +N1422 G01 X-0.034 Y-16.975 +N1424 G01 X+0.193 Y-13.519 +N1426 G01 X+0.602 Y-9.938 +N1428 G01 X+1.182 Y-6.39 +N1430 G01 X+1.473 Y-4.891 +N1432 G01 X+1.481 Y-1.631 +N1434 G02 X+1.631 Y-1.481 I+0.15 J+0 +N1436 G01 X+4.896 Y-1.486 +N1438 G01 X+8.418 Y-0.848 +N1440 G01 X+11.914 Y-0.378 +N1442 G01 X+15.493 Y-0.071 +N1444 G01 X+19.045 Y+0.06 +N1446 G01 X+22.531 Y+0.019 +N1448 G01 X+25.988 Y-0.188 +N1450 G01 X+29.568 Y-0.579 +N1452 G01 X+33.125 Y-1.147 +N1454 G01 X+35.076 Y-1.533 +N1456 G01 X+38.271 Y-1.541 +N1458 G01 X+38.377 Y-1.585 +N1460 G01 X+38.415 Y-1.623 +N1462 G01 X+38.458 Y-1.729 +N1464 G01 X+38.453 Y-4.896 +N1466 G01 X+39.09 Y-8.333 +N1468 G01 X+39.567 Y-11.79 +N1470 G01 X+39.873 Y-15.172 +N1472 G01 X+40.02 Y-18.618 +N1474 G01 X+39.998 Y-22.16 +N1476 G01 X+39.805 Y-25.617 +N1478 G01 X+39.426 Y-29.198 +N1480 G01 X+38.886 Y-32.654 +N1482 G01 X+38.406 Y-35.076 +N1484 G01 X+38.398 Y-38.248 +N1486 G02 X+38.248 Y-38.398 I-0.15 J+0 +N1488 G01 X+35.137 Y-38.393 +N1490 G01 X+31.296 Y-39.1 +N1492 G01 X+27.84 Y-39.568 +N1494 G01 X+24.259 Y-39.874 +N1496 G01 X+20.679 Y-39.997 +N1498 G01 X+17.222 Y-39.942 +N1500 G01 X+13.765 Y-39.714 +N1502 G01 X+10.432 Y-39.332 +N1504 G01 X+6.875 Y-38.745 +N1506 G01 X+4.925 Y-38.345 +N1508 G01 X+1.852 Y-38.337 +N1510 G01 X+1.746 Y-38.293 +N1512 G01 X+1.707 Y-38.254 +N1514 G01 X+1.663 Y-38.148 +N1516 G01 X+1.668 Y-35.138 +N1518 G01 X+0.949 Y-31.296 +N1520 G01 X+0.473 Y-27.84 +N1522 G01 X+0.161 Y-24.259 +N1524 G01 X+0.036 Y-20.679 +N1526 G01 X+0.093 Y-17.222 +N1528 G01 X+0.323 Y-13.765 +N1530 G01 X+0.712 Y-10.432 +N1532 G01 X+1.266 Y-7.099 +N1534 G01 X+1.716 Y-4.891 +N1536 G01 X+1.724 Y-1.874 +N1538 G02 X+1.874 Y-1.724 I+0.15 J+0 +N1540 G01 X+4.895 Y-1.729 +N1542 G01 X+8.418 Y-1.045 +N1544 G01 X+11.79 Y-0.557 +N1546 G01 X+15.247 Y-0.229 +N1548 G01 X+18.704 Y-0.078 +N1550 G01 X+22.16 Y-0.103 +N1552 G01 X+25.617 Y-0.306 +N1554 G01 X+29.04 Y-0.683 +N1556 G01 X+32.407 Y-1.225 +N1558 G01 X+35.075 Y-1.777 +N1560 G01 X+38.066 Y-1.79 +N1562 G02 X+38.215 Y-1.94 I-0.001 J-0.15 +N1564 G01 X+38.21 Y-4.895 +N1566 G01 X+38.891 Y-8.333 +N1568 G01 X+39.402 Y-11.79 +N1570 G01 X+39.729 Y-15.172 +N1572 G01 X+39.887 Y-18.618 +N1574 G01 X+39.87 Y-21.924 +N1576 G01 X+39.677 Y-25.377 +N1578 G01 X+39.32 Y-28.704 +N1580 G01 X+38.767 Y-32.168 +N1582 G01 X+38.162 Y-35.075 +N1584 G01 X+38.154 Y-38.004 +N1586 G02 X+38.004 Y-38.154 I-0.15 J+0 +N1588 G01 X+35.138 Y-38.15 +N1590 G01 X+31.296 Y-38.906 +N1592 G01 X+27.84 Y-39.406 +N1594 G01 X+24.507 Y-39.716 +N1596 G01 X+21.181 Y-39.857 +N1598 G01 X+17.84 Y-39.83 +N1600 G01 X+14.383 Y-39.62 +N1602 G01 X+10.96 Y-39.231 +N1604 G01 X+7.593 Y-38.671 +N1606 G01 X+4.925 Y-38.101 +N1608 G01 X+2.056 Y-38.087 +N1610 G02 X+1.907 Y-37.937 I+0.001 J+0.15 +N1612 G01 X+1.911 Y-35.138 +N1614 G01 X+1.143 Y-31.296 +N1616 G01 X+0.635 Y-27.84 +N1618 G01 X+0.32 Y-24.507 +N1620 G01 X+0.178 Y-21.296 +N1622 G01 X+0.196 Y-18.086 +N1624 G01 X+0.375 Y-14.877 +N1626 G01 X+0.732 Y-11.543 +N1628 G01 X+1.241 Y-8.333 +N1630 G01 X+1.959 Y-4.925 +N1632 G01 X+1.967 Y-2.117 +N1634 G02 X+2.118 Y-1.968 I+0.15 J-0.001 +N1636 G01 X+4.894 Y-1.972 +N1638 G01 X+8.191 Y-1.284 +N1640 G01 X+11.524 Y-0.757 +N1642 G01 X+14.877 Y-0.401 +N1644 G01 X+18.076 Y-0.227 +N1646 G01 X+21.296 Y-0.213 +N1648 G01 X+24.506 Y-0.364 +N1650 G01 X+27.84 Y-0.693 +N1652 G01 X+31.173 Y-1.2 +N1654 G01 X+34.383 Y-1.856 +N1656 G01 X+35.073 Y-2.02 +N1658 G01 X+37.822 Y-2.036 +N1660 G02 X+37.972 Y-2.187 I+0 J-0.15 +N1662 G01 X+37.967 Y-4.894 +N1664 G01 X+38.693 Y-8.333 +N1666 G01 X+39.204 Y-11.543 +N1668 G01 X+39.563 Y-14.877 +N1670 G01 X+39.74 Y-18.086 +N1672 G01 X+39.753 Y-21.296 +N1674 G01 X+39.6 Y-24.507 +N1676 G01 X+39.266 Y-27.84 +N1678 G01 X+38.774 Y-31.049 +N1680 G01 X+38.085 Y-34.383 +N1682 G01 X+37.92 Y-35.073 +N1684 G01 X+37.911 Y-37.761 +N1686 G02 X+37.761 Y-37.911 I-0.15 J+0 +N1688 G01 X+35.139 Y-37.907 +N1690 G01 X+31.582 Y-38.658 +N1692 G01 X+28.21 Y-39.196 +N1694 G01 X+25 Y-39.536 +N1696 G01 X+21.667 Y-39.714 +N1698 G01 X+18.333 Y-39.711 +N1700 G01 X+15.172 Y-39.54 +N1702 G01 X+12.037 Y-39.209 +N1704 G01 X+8.827 Y-38.703 +N1706 G01 X+5.617 Y-38.027 +N1708 G01 X+4.927 Y-37.859 +N1710 G01 X+2.299 Y-37.84 +N1712 G02 X+2.15 Y-37.69 I+0.001 J+0.15 +N1714 G01 X+2.154 Y-35.14 +N1716 G01 X+1.391 Y-31.582 +N1718 G01 X+0.846 Y-28.21 +N1720 G01 X+0.5 Y-25 +N1722 G01 X+0.32 Y-21.667 +N1724 G01 X+0.323 Y-18.333 +N1726 G01 X+0.496 Y-15.172 +N1728 G01 X+0.832 Y-12.037 +N1730 G01 X+1.345 Y-8.827 +N1732 G01 X+2.031 Y-5.617 +N1734 G01 X+2.202 Y-4.893 +N1736 G01 X+2.211 Y-2.361 +N1738 G02 X+2.361 Y-2.211 I+0.15 J+0 +N1740 G01 X+4.893 Y-2.215 +N1742 G01 X+8.086 Y-1.505 +N1744 G01 X+11.296 Y-0.956 +N1746 G01 X+14.623 Y-0.569 +N1748 G01 X+17.84 Y-0.368 +N1750 G01 X+21.049 Y-0.342 +N1752 G01 X+24.259 Y-0.488 +N1754 G01 X+27.58 Y-0.822 +N1756 G01 X+30.926 Y-1.347 +N1758 G01 X+34.136 Y-2.03 +N1760 G01 X+35.073 Y-2.263 +N1762 G01 X+37.579 Y-2.283 +N1764 G02 X+37.728 Y-2.433 I-0.001 J-0.15 +N1766 G01 X+37.725 Y-4.893 +N1768 G01 X+38.445 Y-8.086 +N1770 G01 X+39.002 Y-11.296 +N1772 G01 X+39.396 Y-14.63 +N1774 G01 X+39.595 Y-17.761 +N1776 G01 X+39.627 Y-20.955 +N1778 G01 X+39.482 Y-24.187 +N1780 G01 X+39.18 Y-27.249 +N1782 G01 X+38.718 Y-30.309 +N1784 G01 X+38.088 Y-33.395 +N1786 G01 X+37.676 Y-35.072 +N1788 G01 X+37.668 Y-37.518 +N1790 G02 X+37.518 Y-37.668 I-0.15 J+0 +N1792 G01 X+35.14 Y-37.664 +N1794 G01 X+31.582 Y-38.461 +N1796 G01 X+28.476 Y-38.992 +N1798 G01 X+25.377 Y-39.358 +N1800 G01 X+22.16 Y-39.564 +N1802 G01 X+18.951 Y-39.592 +N1804 G01 X+15.741 Y-39.442 +N1806 G01 X+12.654 Y-39.129 +N1808 G01 X+9.444 Y-38.627 +N1810 G01 X+6.111 Y-37.916 +N1812 G01 X+4.928 Y-37.615 +N1814 G01 X+2.542 Y-37.594 +N1816 G02 X+2.393 Y-37.443 I+0.001 J+0.15 +N1818 G01 X+2.397 Y-35.14 +N1820 G01 X+1.589 Y-31.582 +N1822 G01 X+1.05 Y-28.476 +N1824 G01 X+0.678 Y-25.377 +N1826 G01 X+0.469 Y-22.16 +N1828 G01 X+0.442 Y-18.951 +N1830 G01 X+0.594 Y-15.741 +N1832 G01 X+0.911 Y-12.654 +N1834 G01 X+1.42 Y-9.444 +N1836 G01 X+2.074 Y-6.39 +N1838 G01 X+2.446 Y-4.894 +N1840 G01 X+2.454 Y-2.604 +N1842 G02 X+2.604 Y-2.454 I+0.15 J+0 +N1844 G01 X+4.892 Y-2.458 +N1846 G01 X+8.086 Y-1.706 +N1848 G01 X+11.296 Y-1.125 +N1850 G01 X+14.383 Y-0.738 +N1852 G01 X+17.469 Y-0.518 +N1854 G01 X+20.527 Y-0.467 +N1856 G01 X+23.642 Y-0.586 +N1858 G01 X+26.806 Y-0.883 +N1860 G01 X+29.815 Y-1.331 +N1862 G01 X+32.901 Y-1.96 +N1864 G01 X+35.073 Y-2.507 +N1866 G01 X+37.336 Y-2.53 +N1868 G02 X+37.485 Y-2.68 I-0.001 J-0.15 +N1870 G01 X+37.482 Y-4.892 +N1872 G01 X+38.244 Y-8.086 +N1874 G01 X+38.815 Y-11.186 +N1876 G01 X+39.217 Y-14.299 +N1878 G01 X+39.448 Y-17.469 +N1880 G01 X+39.498 Y-20.679 +N1882 G01 X+39.38 Y-23.642 +N1884 G01 X+39.088 Y-26.728 +N1886 G01 X+38.64 Y-29.725 +N1888 G01 X+37.986 Y-32.901 +N1890 G01 X+37.433 Y-35.072 +N1892 G01 X+37.425 Y-37.275 +N1894 G02 X+37.274 Y-37.424 I-0.15 J+0.001 +N1896 G01 X+35.141 Y-37.421 +N1898 G01 X+31.809 Y-38.216 +N1900 G01 X+28.704 Y-38.79 +N1902 G01 X+25.617 Y-39.188 +N1904 G01 X+22.531 Y-39.414 +N1906 G01 X+19.473 Y-39.467 +N1908 G01 X+16.358 Y-39.345 +N1910 G01 X+13.42 Y-39.068 +N1912 G01 X+10.432 Y-38.623 +N1914 G01 X+7.355 Y-37.993 +N1916 G01 X+4.928 Y-37.372 +N1918 G01 X+2.785 Y-37.347 +N1920 G02 X+2.637 Y-37.197 I+0.002 J+0.15 +N1922 G01 X+2.64 Y-35.142 +N1924 G01 X+1.834 Y-31.809 +N1926 G01 X+1.252 Y-28.704 +N1928 G01 X+0.849 Y-25.617 +N1930 G01 X+0.62 Y-22.531 +N1932 G01 X+0.567 Y-19.473 +N1934 G01 X+0.69 Y-16.358 +N1936 G01 X+0.971 Y-13.42 +N1938 G01 X+1.421 Y-10.432 +N1940 G01 X+2.06 Y-7.355 +N1942 G01 X+2.689 Y-4.895 +N1944 G01 X+2.697 Y-2.847 +N1946 G02 X+2.848 Y-2.698 I+0.15 J-0.001 +N1948 G01 X+4.891 Y-2.701 +N1950 G01 X+8.086 Y-1.907 +N1952 G01 X+11.296 Y-1.295 +N1954 G01 X+14.383 Y-0.886 +N1956 G01 X+17.469 Y-0.654 +N1958 G01 X+20.527 Y-0.6 +N1960 G01 X+23.642 Y-0.724 +N1962 G01 X+26.58 Y-1.009 +N1964 G01 X+29.568 Y-1.465 +N1966 G01 X+32.645 Y-2.112 +N1968 G01 X+35.071 Y-2.75 +N1970 G01 X+37.092 Y-2.757 +N1972 G02 X+37.242 Y-2.908 I+0 J-0.15 +N1974 G01 X+37.239 Y-4.891 +N1976 G01 X+38.044 Y-8.086 +N1978 G01 X+38.646 Y-11.186 +N1980 G01 X+39.07 Y-14.299 +N1982 G01 X+39.301 Y-17.222 +N1984 G01 X+39.372 Y-20.1 +N1986 G01 X+39.283 Y-23.025 +N1988 G01 X+39.008 Y-26.139 +N1990 G01 X+38.56 Y-29.198 +N1992 G01 X+37.952 Y-32.168 +N1994 G01 X+37.194 Y-35.071 +N1996 G01 X+37.186 Y-37.036 +N1998 G02 X+37.036 Y-37.186 I-0.15 J+0 +N2000 G01 X+35.142 Y-37.183 +N2002 G01 X+31.809 Y-38.02 +N2004 G01 X+28.704 Y-38.625 +N2006 G01 X+25.617 Y-39.045 +N2008 G01 X+22.531 Y-39.282 +N2010 G01 X+19.568 Y-39.339 +N2012 G01 X+16.605 Y-39.228 +N2014 G01 X+13.519 Y-38.932 +N2016 G01 X+10.432 Y-38.452 +N2018 G01 X+7.355 Y-37.79 +N2020 G01 X+4.929 Y-37.138 +N2022 G01 X+3.02 Y-37.13 +N2024 G02 X+2.87 Y-36.98 I+0 J+0.15 +N2026 G01 X+2.873 Y-35.142 +N2028 G01 X+2.026 Y-31.809 +N2030 G01 X+1.414 Y-28.704 +N2032 G01 X+0.989 Y-25.617 +N2034 G01 X+0.749 Y-22.531 +N2036 G01 X+0.691 Y-19.568 +N2038 G01 X+0.804 Y-16.605 +N2040 G01 X+1.103 Y-13.519 +N2042 G01 X+1.588 Y-10.432 +N2044 G01 X+2.258 Y-7.355 +N2046 G01 X+2.918 Y-4.896 +N2048 G01 X+2.926 Y-3.087 +N2050 G01 X+2.97 Y-2.981 +N2052 G01 X+3.087 Y-2.927 +N2054 G01 X+4.89 Y-2.93 +N2056 G01 X+7.832 Y-2.156 +N2058 G01 X+10.802 Y-1.539 +N2060 G01 X+13.861 Y-1.084 +N2062 G01 X+16.728 Y-0.822 +N2064 G01 X+19.673 Y-0.721 +N2066 G01 X+22.778 Y-0.798 +N2068 G01 X+25.701 Y-1.045 +N2070 G01 X+28.704 Y-1.473 +N2072 G01 X+31.667 Y-2.071 +N2074 G01 X+34.63 Y-2.844 +N2076 G01 X+35.069 Y-2.973 +N2078 G01 X+35.112 Y-2.98 +N2080 G01 X+36.868 Y-2.982 +N2082 G02 X+37.018 Y-3.132 I+0 J-0.15 +N2084 G01 X+37.015 Y-4.89 +N2086 G01 X+37.8 Y-7.84 +N2088 G01 X+38.45 Y-10.96 +N2090 G01 X+38.901 Y-14.012 +N2092 G01 X+39.158 Y-16.902 +N2094 G01 X+39.251 Y-19.815 +N2096 G01 X+39.172 Y-22.781 +N2098 G01 X+38.933 Y-25.617 +N2100 G01 X+38.491 Y-28.704 +N2102 G01 X+37.906 Y-31.582 +N2104 G01 X+37.106 Y-34.63 +N2106 G01 X+36.975 Y-35.069 +N2108 G01 X+36.969 Y-35.112 +N2110 G01 X+36.967 Y-36.79 +N2112 G01 X+36.923 Y-36.896 +N2114 G01 X+36.79 Y-36.966 +N2116 G01 X+35.143 Y-36.964 +N2118 G01 X+31.914 Y-37.816 +N2120 G01 X+28.951 Y-38.43 +N2122 G01 X+25.864 Y-38.884 +N2124 G01 X+22.781 Y-39.148 +N2126 G01 X+19.815 Y-39.222 +N2128 G01 X+16.975 Y-39.129 +N2130 G01 X+14.012 Y-38.858 +N2132 G01 X+11.186 Y-38.435 +N2134 G01 X+8.333 Y-37.844 +N2136 G01 X+5.37 Y-37.056 +N2138 G01 X+4.931 Y-36.924 +N2140 G01 X+4.888 Y-36.917 +N2142 G01 X+3.235 Y-36.915 +N2144 G02 X+3.085 Y-36.765 I+0 J+0.15 +N2146 G01 X+3.088 Y-35.143 +N2148 G01 X+2.227 Y-31.914 +N2150 G01 X+1.607 Y-28.951 +N2152 G01 X+1.148 Y-25.864 +N2154 G01 X+0.895 Y-23.025 +N2156 G01 X+0.805 Y-20.1 +N2158 G01 X+0.886 Y-17.222 +N2160 G01 X+1.129 Y-14.383 +N2162 G01 X+1.538 Y-11.543 +N2164 G01 X+2.139 Y-8.58 +N2166 G01 X+2.92 Y-5.617 +N2168 G01 X+3.128 Y-4.896 +N2170 G01 X+3.134 Y-4.856 +N2172 G01 X+3.147 Y-3.286 +N2174 G02 X+3.297 Y-3.137 I+0.15 J-0.001 +N2176 G01 X+4.89 Y-3.139 +N2178 G01 X+4.93 Y-3.134 +N2180 G01 X+7.832 Y-2.332 +N2182 G01 X+10.802 Y-1.688 +N2184 G01 X+13.634 Y-1.242 +N2186 G01 X+16.605 Y-0.948 +N2188 G01 X+19.568 Y-0.834 +N2190 G01 X+22.531 Y-0.9 +N2192 G01 X+25.37 Y-1.133 +N2194 G01 X+28.21 Y-1.531 +N2196 G01 X+31.173 Y-2.124 +N2198 G01 X+34.136 Y-2.898 +N2200 G01 X+35.069 Y-3.179 +N2202 G01 X+35.112 Y-3.186 +N2204 G01 X+36.662 Y-3.188 +N2206 G02 X+36.812 Y-3.338 I+0 J-0.15 +N2208 G01 X+36.81 Y-4.889 +N2210 G01 X+36.815 Y-4.93 +N2212 G01 X+37.627 Y-7.84 +N2214 G01 X+38.252 Y-10.679 +N2216 G01 X+38.712 Y-13.519 +N2218 G01 X+39.005 Y-16.358 +N2220 G01 X+39.133 Y-19.246 +N2222 G01 X+39.089 Y-22.16 +N2224 G01 X+38.876 Y-25 +N2226 G01 X+38.496 Y-27.84 +N2228 G01 X+37.92 Y-30.802 +N2230 G01 X+37.197 Y-33.642 +N2232 G01 X+36.769 Y-35.069 +N2234 G01 X+36.763 Y-35.112 +N2236 G01 X+36.761 Y-36.611 +N2238 G02 X+36.61 Y-36.76 I-0.15 J+0.001 +N2240 G01 X+35.144 Y-36.758 +N2242 G01 X+35.104 Y-36.764 +N2244 G01 X+31.914 Y-37.646 +N2246 G01 X+28.951 Y-38.285 +N2248 G01 X+26.139 Y-38.723 +N2250 G01 X+23.324 Y-38.998 +N2252 G01 X+20.432 Y-39.11 +N2254 G01 X+17.469 Y-39.042 +N2256 G01 X+14.63 Y-38.805 +N2258 G01 X+11.79 Y-38.399 +N2260 G01 X+8.827 Y-37.795 +N2262 G01 X+5.864 Y-37.005 +N2264 G01 X+4.932 Y-36.718 +N2266 G01 X+4.888 Y-36.711 +N2268 G01 X+3.457 Y-36.709 +N2270 G01 X+3.351 Y-36.665 +N2272 G01 X+3.291 Y-36.543 +N2274 G01 X+3.293 Y-35.144 +N2276 G01 X+3.288 Y-35.104 +N2278 G01 X+2.397 Y-31.914 +N2280 G01 X+1.752 Y-28.951 +N2282 G01 X+1.309 Y-26.139 +N2284 G01 X+1.031 Y-23.324 +N2286 G01 X+0.918 Y-20.432 +N2288 G01 X+0.987 Y-17.469 +N2290 G01 X+1.226 Y-14.63 +N2292 G01 X+1.636 Y-11.79 +N2294 G01 X+2.246 Y-8.827 +N2296 G01 X+3.044 Y-5.864 +N2298 G01 X+3.334 Y-4.898 +N2300 G01 X+3.34 Y-4.855 +N2302 G01 X+3.342 Y-3.493 +N2304 G02 X+3.493 Y-3.343 I+0.15 J+0 +N2306 G01 X+4.889 Y-3.345 +N2308 G01 X+4.93 Y-3.339 +N2310 G01 X+7.832 Y-2.505 +N2312 G01 X+10.802 Y-1.835 +N2314 G01 X+13.634 Y-1.37 +N2316 G01 X+16.605 Y-1.065 +N2318 G01 X+19.568 Y-0.946 +N2320 G01 X+22.531 Y-1.015 +N2322 G01 X+25.37 Y-1.257 +N2324 G01 X+28.21 Y-1.671 +N2326 G01 X+31.173 Y-2.287 +N2328 G01 X+34.136 Y-3.092 +N2330 G01 X+35.068 Y-3.385 +N2332 G01 X+35.113 Y-3.392 +N2334 G01 X+36.42 Y-3.394 +N2336 G01 X+36.525 Y-3.438 +N2338 G01 X+36.562 Y-3.474 +N2340 G01 X+36.606 Y-3.581 +N2342 G01 X+36.604 Y-4.889 +N2344 G01 X+36.609 Y-4.931 +N2346 G01 X+37.453 Y-7.84 +N2348 G01 X+38.102 Y-10.679 +N2350 G01 X+38.566 Y-13.42 +N2352 G01 X+38.885 Y-16.358 +N2354 G01 X+39.019 Y-19.246 +N2356 G01 X+38.972 Y-22.16 +N2358 G01 X+38.75 Y-25 +N2360 G01 X+38.354 Y-27.84 +N2362 G01 X+37.754 Y-30.802 +N2364 G01 X+37 Y-33.642 +N2366 G01 X+36.554 Y-35.068 +N2368 G01 X+36.547 Y-35.113 +N2370 G01 X+36.545 Y-36.395 +N2372 G02 X+36.395 Y-36.545 I-0.15 J+0 +N2374 G01 X+35.145 Y-36.543 +N2376 G01 X+35.103 Y-36.549 +N2378 G01 X+31.914 Y-37.466 +N2380 G01 X+28.951 Y-38.131 +N2382 G01 X+26.139 Y-38.588 +N2384 G01 X+23.395 Y-38.87 +N2386 G01 X+20.679 Y-38.987 +N2388 G01 X+17.84 Y-38.938 +N2390 G01 X+14.877 Y-38.7 +N2392 G01 X+12.16 Y-38.313 +N2394 G01 X+9.353 Y-37.743 +N2396 G01 X+6.605 Y-37.018 +N2398 G01 X+4.932 Y-36.493 +N2400 G01 X+4.887 Y-36.486 +N2402 G01 X+3.704 Y-36.484 +N2404 G01 X+3.598 Y-36.44 +N2406 G01 X+3.56 Y-36.402 +N2408 G01 X+3.516 Y-36.296 +N2410 G01 X+3.518 Y-35.145 +N2412 G01 X+3.512 Y-35.103 +N2414 G01 X+2.584 Y-31.914 +N2416 G01 X+1.912 Y-28.951 +N2418 G01 X+1.45 Y-26.139 +N2420 G01 X+1.165 Y-23.395 +N2422 G01 X+1.047 Y-20.679 +N2424 G01 X+1.095 Y-17.84 +N2426 G01 X+1.336 Y-14.877 +N2428 G01 X+1.727 Y-12.16 +N2430 G01 X+2.304 Y-9.353 +N2432 G01 X+3.037 Y-6.605 +N2434 G01 X+3.568 Y-4.898 +N2436 G01 X+3.575 Y-4.854 +N2438 G01 X+3.577 Y-3.727 +N2440 G02 X+3.727 Y-3.577 I+0.15 J+0 +N2442 G01 X+4.888 Y-3.579 +N2444 G01 X+4.931 Y-3.573 +N2446 G01 X+7.832 Y-2.703 +N2448 G01 X+10.802 Y-2.003 +N2450 G01 X+13.519 Y-1.535 +N2452 G01 X+16.358 Y-1.219 +N2454 G01 X+19.045 Y-1.085 +N2456 G01 X+21.914 Y-1.118 +N2458 G01 X+24.753 Y-1.331 +N2460 G01 X+27.58 Y-1.724 +N2462 G01 X+30.297 Y-2.269 +N2464 G01 X+33.125 Y-3.013 +N2466 G01 X+35.068 Y-3.629 +N2468 G01 X+35.113 Y-3.636 +N2470 G01 X+36.213 Y-3.641 +N2472 G02 X+36.362 Y-3.791 I-0.001 J-0.15 +N2474 G01 X+36.361 Y-4.888 +N2476 G01 X+36.367 Y-4.931 +N2478 G01 X+37.249 Y-7.84 +N2480 G01 X+37.928 Y-10.679 +N2482 G01 X+38.413 Y-13.42 +N2484 G01 X+38.726 Y-16.111 +N2486 G01 X+38.88 Y-18.951 +N2488 G01 X+38.859 Y-21.667 +N2490 G01 X+38.658 Y-24.507 +N2492 G01 X+38.292 Y-27.249 +N2494 G01 X+37.765 Y-29.951 +N2496 G01 X+37.071 Y-32.654 +N2498 G01 X+36.31 Y-35.068 +N2500 G01 X+36.304 Y-35.113 +N2502 G01 X+36.302 Y-36.152 +N2504 G02 X+36.152 Y-36.302 I-0.15 J+0 +N2506 G01 X+35.146 Y-36.3 +N2508 G01 X+35.102 Y-36.306 +N2510 G01 X+31.914 Y-37.265 +N2512 G01 X+29.198 Y-37.91 +N2514 G01 X+26.481 Y-38.389 +N2516 G01 X+23.642 Y-38.712 +N2518 G01 X+20.955 Y-38.849 +N2520 G01 X+18.086 Y-38.815 +N2522 G01 X+15.247 Y-38.597 +N2524 G01 X+12.42 Y-38.196 +N2526 G01 X+9.703 Y-37.639 +N2528 G01 X+6.875 Y-36.879 +N2530 G01 X+4.932 Y-36.25 +N2532 G01 X+4.887 Y-36.242 +N2534 G01 X+3.908 Y-36.236 +N2536 G02 X+3.759 Y-36.085 I+0.001 J+0.15 +N2538 G01 X+3.761 Y-35.146 +N2540 G01 X+3.755 Y-35.102 +N2542 G01 X+2.786 Y-31.914 +N2544 G01 X+2.133 Y-29.198 +N2546 G01 X+1.649 Y-26.481 +N2548 G01 X+1.323 Y-23.642 +N2550 G01 X+1.184 Y-20.955 +N2552 G01 X+1.219 Y-18.086 +N2554 G01 X+1.439 Y-15.247 +N2556 G01 X+1.844 Y-12.42 +N2558 G01 X+2.407 Y-9.703 +N2560 G01 X+3.175 Y-6.875 +N2562 G01 X+3.811 Y-4.899 +N2564 G01 X+3.818 Y-4.853 +N2566 G01 X+3.82 Y-3.97 +N2568 G02 X+3.97 Y-3.82 I+0.15 J+0 +N2570 G01 X+4.887 Y-3.822 +N2572 G01 X+4.932 Y-3.815 +N2574 G01 X+7.832 Y-2.907 +N2576 G01 X+10.556 Y-2.23 +N2578 G01 X+13.272 Y-1.725 +N2580 G01 X+16.111 Y-1.379 +N2582 G01 X+18.819 Y-1.223 +N2584 G01 X+21.667 Y-1.241 +N2586 G01 X+24.506 Y-1.448 +N2588 G01 X+27.346 Y-1.842 +N2590 G01 X+30.062 Y-2.396 +N2592 G01 X+32.901 Y-3.16 +N2594 G01 X+35.068 Y-3.872 +N2596 G01 X+35.113 Y-3.879 +N2598 G01 X+35.971 Y-3.887 +N2600 G02 X+36.119 Y-4.038 I-0.002 J-0.15 +N2602 G01 X+36.118 Y-4.887 +N2604 G01 X+36.125 Y-4.932 +N2606 G01 X+37.045 Y-7.84 +N2608 G01 X+37.753 Y-10.679 +N2610 G01 X+38.259 Y-13.42 +N2612 G01 X+38.579 Y-16.039 +N2614 G01 X+38.741 Y-18.704 +N2616 G01 X+38.73 Y-21.543 +N2618 G01 X+38.549 Y-24.187 +N2620 G01 X+38.172 Y-27.022 +N2622 G01 X+37.637 Y-29.725 +N2624 G01 X+36.934 Y-32.407 +N2626 G01 X+36.067 Y-35.067 +N2628 G01 X+36.06 Y-35.114 +N2630 G01 X+36.059 Y-35.909 +N2632 G02 X+35.908 Y-36.058 I-0.15 J+0.001 +N2634 G01 X+35.147 Y-36.057 +N2636 G01 X+35.101 Y-36.064 +N2638 G01 X+31.914 Y-37.064 +N2640 G01 X+29.198 Y-37.737 +N2642 G01 X+26.481 Y-38.237 +N2644 G01 X+23.642 Y-38.573 +N2646 G01 X+20.955 Y-38.716 +N2648 G01 X+18.333 Y-38.692 +N2650 G01 X+15.494 Y-38.48 +N2652 G01 X+12.654 Y-38.078 +N2654 G01 X+9.938 Y-37.513 +N2656 G01 X+7.099 Y-36.733 +N2658 G01 X+4.932 Y-36.006 +N2660 G01 X+4.887 Y-35.999 +N2662 G01 X+4.151 Y-35.99 +N2664 G02 X+4.003 Y-35.839 I+0.002 J+0.15 +N2666 G01 X+4.004 Y-35.147 +N2668 G01 X+3.997 Y-35.101 +N2670 G01 X+2.987 Y-31.914 +N2672 G01 X+2.307 Y-29.198 +N2674 G01 X+1.802 Y-26.481 +N2676 G01 X+1.462 Y-23.642 +N2678 G01 X+1.317 Y-20.955 +N2680 G01 X+1.342 Y-18.333 +N2682 G01 X+1.528 Y-15.741 +N2684 G01 X+1.919 Y-12.901 +N2686 G01 X+2.474 Y-10.185 +N2688 G01 X+3.242 Y-7.355 +N2690 G01 X+4.054 Y-4.899 +N2692 G01 X+4.062 Y-4.853 +N2694 G01 X+4.063 Y-4.213 +N2696 G02 X+4.214 Y-4.064 I+0.15 J-0.001 +N2698 G01 X+4.886 Y-4.065 +N2700 G01 X+4.933 Y-4.057 +N2702 G01 X+7.593 Y-3.181 +N2704 G01 X+10.275 Y-2.47 +N2706 G01 X+12.978 Y-1.928 +N2708 G01 X+15.741 Y-1.554 +N2710 G01 X+18.333 Y-1.372 +N2712 G01 X+21.049 Y-1.355 +N2714 G01 X+23.642 Y-1.505 +N2716 G01 X+26.235 Y-1.818 +N2718 G01 X+28.814 Y-2.291 +N2720 G01 X+31.42 Y-2.934 +N2722 G01 X+34.136 Y-3.782 +N2724 G01 X+35.067 Y-4.115 +N2726 G01 X+35.115 Y-4.123 +N2728 G01 X+35.728 Y-4.133 +N2730 G02 X+35.876 Y-4.284 I-0.002 J-0.15 +N2732 G01 X+35.875 Y-4.886 +N2734 G01 X+35.883 Y-4.933 +N2736 G01 X+36.768 Y-7.593 +N2738 G01 X+37.523 Y-10.432 +N2740 G01 X+38.069 Y-13.194 +N2742 G01 X+38.435 Y-15.988 +N2744 G01 X+38.605 Y-18.618 +N2746 G01 X+38.609 Y-21.181 +N2748 G01 X+38.438 Y-23.889 +N2750 G01 X+38.106 Y-26.481 +N2752 G01 X+37.582 Y-29.198 +N2754 G01 X+36.905 Y-31.809 +N2756 G01 X+35.985 Y-34.63 +N2758 G01 X+35.825 Y-35.065 +N2760 G01 X+35.816 Y-35.116 +N2762 G01 X+35.815 Y-35.665 +N2764 G02 X+35.665 Y-35.815 I-0.15 J+0 +N2766 G01 X+35.148 Y-35.814 +N2768 G01 X+35.1 Y-35.822 +N2770 G01 X+32.168 Y-36.787 +N2772 G01 X+29.444 Y-37.507 +N2774 G01 X+26.728 Y-38.043 +N2776 G01 X+23.889 Y-38.412 +N2778 G01 X+21.296 Y-38.575 +N2780 G01 X+18.618 Y-38.569 +N2782 G01 X+16.039 Y-38.396 +N2784 G01 X+13.42 Y-38.052 +N2786 G01 X+10.679 Y-37.509 +N2788 G01 X+8.086 Y-36.824 +N2790 G01 X+5.37 Y-35.926 +N2792 G01 X+4.934 Y-35.764 +N2794 G01 X+4.885 Y-35.755 +N2796 G01 X+4.393 Y-35.744 +N2798 G02 X+4.246 Y-35.594 I+0.003 J+0.15 +N2800 G01 X+4.247 Y-35.148 +N2802 G01 X+4.239 Y-35.1 +N2804 G01 X+3.264 Y-32.168 +N2806 G01 X+2.537 Y-29.444 +N2808 G01 X+1.995 Y-26.728 +N2810 G01 X+1.653 Y-24.187 +N2812 G01 X+1.467 Y-21.543 +N2814 G01 X+1.454 Y-18.951 +N2816 G01 X+1.609 Y-16.358 +N2818 G01 X+1.931 Y-13.765 +N2820 G01 X+2.419 Y-11.186 +N2822 G01 X+3.081 Y-8.58 +N2824 G01 X+3.955 Y-5.864 +N2826 G01 X+4.297 Y-4.901 +N2828 G01 X+4.306 Y-4.851 +N2830 G01 Y-4.456 +N2832 G02 X+4.457 Y-4.307 I+0.15 J-0.001 +N2834 G01 X+4.885 Y-4.308 +N2836 G01 X+4.934 Y-4.299 +N2838 G01 X+7.593 Y-3.388 +N2840 G01 X+10.275 Y-2.649 +N2842 G01 X+12.978 Y-2.084 +N2844 G01 X+15.741 Y-1.696 +N2846 G01 X+18.333 Y-1.505 +N2848 G01 X+21.049 Y-1.488 +N2850 G01 X+23.642 Y-1.644 +N2852 G01 X+26.235 Y-1.969 +N2854 G01 X+28.814 Y-2.462 +N2856 G01 X+31.42 Y-3.13 +N2858 G01 X+34.136 Y-4.012 +N2860 G01 X+35.067 Y-4.358 +N2862 G01 X+35.115 Y-4.367 +N2864 G01 X+35.487 Y-4.378 +N2866 G02 X+35.633 Y-4.528 I-0.004 J-0.15 +N2868 G01 X+35.632 Y-4.885 +N2870 G01 X+35.641 Y-4.934 +N2872 G01 X+36.561 Y-7.593 +N2874 G01 X+37.285 Y-10.185 +N2876 G01 X+37.863 Y-12.901 +N2878 G01 X+38.242 Y-15.494 +N2880 G01 X+38.45 Y-18.086 +N2882 G01 X+38.488 Y-20.679 +N2884 G01 X+38.355 Y-23.272 +N2886 G01 X+38.051 Y-25.864 +N2888 G01 X+37.571 Y-28.476 +N2890 G01 X+36.927 Y-31.049 +N2892 G01 X+36.106 Y-33.642 +N2894 G01 X+35.582 Y-35.065 +N2896 G01 X+35.573 Y-35.117 +N2898 G01 X+35.572 Y-35.422 +N2900 G02 X+35.422 Y-35.572 I-0.15 J+0 +N2902 G01 X+35.149 +N2904 G01 X+35.1 Y-35.58 +N2906 G01 X+32.168 Y-36.583 +N2908 G01 X+29.444 Y-37.331 +N2910 G01 X+26.728 Y-37.889 +N2912 G01 X+24.187 Y-38.241 +N2914 G01 X+21.667 Y-38.428 +N2916 G01 X+18.951 Y-38.446 +N2918 G01 X+16.358 Y-38.287 +N2920 G01 X+13.765 Y-37.955 +N2922 G01 X+11.186 Y-37.453 +N2924 G01 X+8.58 Y-36.772 +N2926 G01 X+5.864 Y-35.873 +N2928 G01 X+4.933 Y-35.52 +N2930 G01 X+4.886 Y-35.511 +N2932 G01 X+4.633 Y-35.5 +N2934 G02 X+4.489 Y-35.35 I+0.006 J+0.15 +N2936 G01 Y-35.149 +N2938 G01 X+4.481 Y-35.1 +N2940 G01 X+3.468 Y-32.168 +N2942 G01 X+2.713 Y-29.444 +N2944 G01 X+2.15 Y-26.728 +N2946 G01 X+1.794 Y-24.187 +N2948 G01 X+1.606 Y-21.667 +N2950 G01 X+1.587 Y-18.951 +N2952 G01 X+1.748 Y-16.358 +N2954 G01 X+2.083 Y-13.765 +N2956 G01 X+2.589 Y-11.186 +N2958 G01 X+3.277 Y-8.58 +N2960 G01 X+4.185 Y-5.864 +N2962 G01 X+4.54 Y-4.902 +N2964 G01 X+4.549 Y-4.85 +N2966 G01 X+4.55 Y-4.7 +N2968 G02 X+4.7 Y-4.55 I+0.15 J+0 +N2970 G01 X+4.884 +N2972 G01 X+4.935 Y-4.542 +N2974 G01 X+7.593 Y-3.595 +N2976 G01 X+10.275 Y-2.827 +N2978 G01 X+12.978 Y-2.241 +N2980 G01 X+15.493 Y-1.865 +N2982 G01 X+18.076 Y-1.652 +N2984 G01 X+20.754 Y-1.613 +N2986 G01 X+23.395 Y-1.759 +N2988 G01 X+25.988 Y-2.08 +N2990 G01 X+28.704 Y-2.606 +N2992 G01 X+31.42 Y-3.326 +N2994 G01 X+34.136 Y-4.242 +N2996 G01 X+35.069 Y-4.602 +N2998 G01 X+35.113 Y-4.612 +N3000 G01 X+35.249 Y-4.621 +N3002 G02 X+35.39 Y-4.77 I-0.009 J-0.149 +N3004 G01 Y-4.884 +N3006 G01 X+35.398 Y-4.935 +N3008 G01 X+36.354 Y-7.593 +N3010 G01 X+37.106 Y-10.185 +N3012 G01 X+37.707 Y-12.901 +N3014 G01 X+38.099 Y-15.494 +N3016 G01 X+38.316 Y-18.086 +N3018 G01 X+38.355 Y-20.679 +N3020 G01 X+38.217 Y-23.272 +N3022 G01 X+37.902 Y-25.864 +N3024 G01 X+37.403 Y-28.476 +N3026 G01 X+36.735 Y-31.049 +N3028 G01 X+35.883 Y-33.642 +N3030 G01 X+35.339 Y-35.064 +N3032 G01 X+35.329 Y-35.118 +N3034 G01 Y-35.179 +N3036 G02 X+35.179 Y-35.329 I-0.15 J+0 +N3038 G01 X+35.099 Y-35.337 +N3040 G01 X+32.168 Y-36.379 +N3042 G01 X+29.444 Y-37.155 +N3044 G01 X+26.728 Y-37.735 +N3046 G01 X+24.259 Y-38.093 +N3048 G01 X+21.667 Y-38.294 +N3050 G01 X+18.951 Y-38.313 +N3052 G01 X+16.358 Y-38.148 +N3054 G01 X+13.765 Y-37.804 +N3056 G01 X+11.296 Y-37.309 +N3058 G01 X+8.58 Y-36.576 +N3060 G01 X+5.864 Y-35.643 +N3062 G01 X+4.936 Y-35.278 +N3064 G01 X+4.882 Y-35.268 +N3066 G02 X+4.732 Y-35.123 I+0 J+0.15 +N3068 G01 X+3.673 Y-32.168 +N3070 G01 X+2.889 Y-29.444 +N3072 G01 X+2.304 Y-26.728 +N3074 G01 X+1.943 Y-24.259 +N3076 G01 X+1.739 Y-21.667 +N3078 G01 X+1.713 Y-19.246 +N3080 G01 X+1.862 Y-16.605 +N3082 G01 X+2.193 Y-14.012 +N3084 G01 X+2.676 Y-11.543 +N3086 G01 X+3.324 Y-9.074 +N3088 G01 X+4.217 Y-6.39 +N3090 G01 X+4.782 Y-4.907 +N3092 G01 X+4.816 Y-4.854 +N3094 G01 X+4.91 Y-4.793 +N3096 G01 X+7.593 Y-3.802 +N3098 G01 X+10.275 Y-3.005 +N3100 G01 X+12.751 Y-2.44 +N3102 G01 X+15.247 Y-2.038 +N3104 G01 X+17.84 Y-1.798 +N3106 G01 X+20.432 Y-1.74 +N3108 G01 X+23.025 Y-1.864 +N3110 G01 X+25.617 Y-2.171 +N3112 G01 X+28.21 Y-2.661 +N3114 G01 X+30.926 Y-3.372 +N3116 G01 X+33.61 Y-4.273 +N3118 G01 X+35.069 Y-4.846 +N3120 G01 X+35.155 Y-4.933 +N3122 G01 X+36.15 Y-7.593 +N3124 G01 X+36.933 Y-10.185 +N3126 G01 X+37.51 Y-12.654 +N3128 G01 X+37.926 Y-15.172 +N3130 G01 X+38.174 Y-17.761 +N3132 G01 X+38.241 Y-20.327 +N3134 G01 X+38.136 Y-22.781 +N3136 G01 X+37.847 Y-25.377 +N3138 G01 X+37.403 Y-27.84 +N3140 G01 X+36.791 Y-30.309 +N3142 G01 X+35.97 Y-32.901 +N3144 G01 X+35.139 Y-35.072 +N3146 G01 X+35.051 Y-35.159 +N3148 G01 X+32.168 Y-36.217 +N3150 G01 X+29.444 Y-37.02 +N3152 G01 X+27.022 Y-37.563 +N3154 G01 X+24.507 Y-37.958 +N3156 G01 X+21.924 Y-38.184 +N3158 G01 X+19.473 Y-38.23 +N3160 G01 X+16.975 Y-38.109 +N3162 G01 X+14.383 Y-37.803 +N3164 G01 X+11.79 Y-37.312 +N3166 G01 X+9.074 Y-36.601 +N3168 G01 X+6.39 Y-35.699 +N3170 G01 X+4.971 Y-35.142 +N3172 G01 X+4.886 Y-35.057 +N3174 G01 X+4.133 Y-33.148 +N3176 G01 X+3.293 Y-30.556 +N3178 G01 X+2.665 Y-28.086 +N3180 G01 X+2.167 Y-25.377 +N3182 G01 X+1.878 Y-22.781 +N3184 G01 X+1.775 Y-20.327 +N3186 G01 X+1.837 Y-17.84 +N3188 G01 X+2.083 Y-15.247 +N3190 G01 X+2.513 Y-12.654 +N3192 G01 X+3.094 Y-10.185 +N3194 G01 X+3.884 Y-7.593 +N3196 G01 X+4.872 Y-4.973 +N3198 G01 X+4.959 Y-4.886 +N3200 G01 X+7.346 Y-3.971 +N3202 G01 X+9.938 Y-3.165 +N3204 G01 X+12.407 Y-2.569 +N3206 G01 X+14.877 Y-2.139 +N3208 G01 X+17.469 Y-1.867 +N3210 G01 X+19.9 Y-1.781 +N3212 G01 X+22.531 Y-1.869 +N3214 G01 X+25.123 Y-2.142 +N3216 G01 X+27.58 Y-2.571 +N3218 G01 X+30.062 Y-3.172 +N3220 G01 X+32.645 Y-3.978 +N3222 G01 X+35.028 Y-4.886 +N3224 G01 X+35.114 Y-4.972 +N3226 G01 X+35.671 Y-6.392 +N3228 G01 X+36.571 Y-9.078 +N3230 G01 X+37.281 Y-11.795 +N3232 G01 X+37.771 Y-14.387 +N3234 G01 X+38.076 Y-16.978 +N3236 G01 X+38.196 Y-19.568 +N3238 G01 X+38.131 Y-22.158 +N3240 G01 X+37.881 Y-24.747 +N3242 G01 X+37.465 Y-27.237 +N3244 G01 X+36.883 Y-29.705 +N3246 G01 X+36.063 Y-32.376 +N3248 G01 X+35.067 Y-34.981 +N3250 G01 X+34.981 Y-35.068 +N3252 G01 X+32.862 Y-35.883 +N3254 G01 X+30.278 Y-36.708 +N3256 G01 X+27.817 Y-37.323 +N3258 G01 X+25.362 Y-37.768 +N3260 G01 X+22.773 Y-38.058 +N3262 G01 X+20.326 Y-38.161 +N3264 G01 X+17.768 Y-38.09 +N3266 G01 X+15.189 Y-37.833 +N3268 G01 X+12.683 Y-37.407 +N3270 G01 X+10.229 Y-36.817 +N3272 G01 X+7.658 Y-36.019 +N3274 G01 X+5.065 Y-35.021 +N3276 G01 X+4.979 Y-34.935 +N3278 G01 X+4.161 Y-32.826 +N3280 G01 X+3.335 Y-30.252 +N3282 G01 X+2.717 Y-27.799 +N3284 G01 X+2.269 Y-25.35 +N3286 G01 X+1.978 Y-22.768 +N3288 G01 X+1.875 Y-20.325 +N3290 G01 X+1.946 Y-17.773 +N3292 G01 X+2.204 Y-15.199 +N3294 G01 X+2.633 Y-12.7 +N3296 G01 X+3.225 Y-10.254 +N3298 G01 X+4.026 Y-7.692 +N3300 G01 X+5.025 Y-5.111 +N3302 G01 X+5.111 Y-5.025 +N3304 G01 X+7.21 Y-4.206 +N3306 G01 X+9.774 Y-3.377 +N3308 G01 X+12.219 Y-2.757 +N3310 G01 X+14.661 Y-2.307 +N3312 G01 X+17.238 Y-2.015 +N3314 G01 X+19.676 Y-1.911 +N3316 G01 X+22.223 Y-1.982 +N3318 G01 X+24.791 Y-2.242 +N3320 G01 X+27.284 Y-2.672 +N3322 G01 X+29.722 Y-3.266 +N3324 G01 X+32.274 Y-4.07 +N3326 G01 X+34.844 Y-5.072 +N3328 G01 X+34.929 Y-5.156 +N3330 G01 X+35.489 Y-6.55 +N3332 G01 X+36.399 Y-9.192 +N3334 G01 X+37.119 Y-11.872 +N3336 G01 X+37.617 Y-14.435 +N3338 G01 X+37.928 Y-17.002 +N3340 G01 X+38.051 Y-19.572 +N3342 G01 X+37.984 Y-22.141 +N3344 G01 X+37.728 Y-24.706 +N3346 G01 X+37.284 Y-27.265 +N3348 G01 X+36.649 Y-29.829 +N3350 G01 X+35.88 Y-32.235 +N3352 G01 X+34.875 Y-34.791 +N3354 G01 X+34.791 Y-34.875 +N3356 G01 X+32.712 Y-35.698 +N3358 G01 X+30.17 Y-36.531 +N3360 G01 X+27.742 Y-37.156 +N3362 G01 X+25.314 Y-37.61 +N3364 G01 X+22.75 Y-37.905 +N3366 G01 X+20.323 Y-38.01 +N3368 G01 X+17.787 Y-37.937 +N3370 G01 X+15.232 Y-37.675 +N3372 G01 X+12.754 Y-37.239 +N3374 G01 X+10.333 Y-36.639 +N3376 G01 X+7.804 Y-35.829 +N3378 G01 X+5.262 Y-34.822 +N3380 G01 X+5.178 Y-34.738 +N3382 G01 X+4.353 Y-32.67 +N3384 G01 X+3.517 Y-30.14 +N3386 G01 X+2.89 Y-27.721 +N3388 G01 X+2.433 Y-25.301 +N3390 G01 X+2.136 Y-22.744 +N3392 G01 X+2.031 Y-20.322 +N3394 G01 X+2.104 Y-17.792 +N3396 G01 X+2.368 Y-15.243 +N3398 G01 X+2.806 Y-12.773 +N3400 G01 X+3.409 Y-10.361 +N3402 G01 X+4.221 Y-7.843 +N3404 G01 X+5.231 Y-5.314 +N3406 G01 X+5.314 Y-5.231 +N3408 G01 X+7.371 Y-4.405 +N3410 G01 X+9.889 Y-3.565 +N3412 G01 X+12.299 Y-2.935 +N3414 G01 X+14.712 Y-2.477 +N3416 G01 X+17.263 Y-2.178 +N3418 G01 X+19.678 Y-2.071 +N3420 G01 X+22.203 Y-2.145 +N3422 G01 X+24.745 Y-2.411 +N3424 G01 X+27.208 Y-2.851 +N3426 G01 X+29.612 Y-3.456 +N3428 G01 X+32.118 Y-4.272 +N3430 G01 X+34.633 Y-5.284 +N3432 G01 X+34.716 Y-5.366 +N3434 G01 X+35.462 Y-7.196 +N3436 G01 X+36.287 Y-9.591 +N3438 G01 X+36.935 Y-11.959 +N3440 G01 X+37.443 Y-14.49 +N3442 G01 X+37.762 Y-17.03 +N3444 G01 X+37.887 Y-19.576 +N3446 G01 X+37.819 Y-22.121 +N3448 G01 X+37.558 Y-24.661 +N3450 G01 X+37.104 Y-27.19 +N3452 G01 X+36.457 Y-29.715 +N3454 G01 X+35.678 Y-32.079 +N3456 G01 X+34.663 Y-34.581 +N3458 G01 X+34.58 Y-34.663 +N3460 G01 X+32.309 Y-35.581 +N3462 G01 X+29.813 Y-36.41 +N3464 G01 X+27.42 Y-37.027 +N3466 G01 X+24.894 Y-37.493 +N3468 G01 X+22.479 Y-37.759 +N3470 G01 X+20.098 Y-37.848 +N3472 G01 X+17.807 Y-37.772 +N3474 G01 X+15.278 Y-37.504 +N3476 G01 X+12.829 Y-37.059 +N3478 G01 X+10.444 Y-36.448 +N3480 G01 X+7.96 Y-35.627 +N3482 G01 X+5.472 Y-34.61 +N3484 G01 X+5.39 Y-34.528 +N3486 G01 X+4.47 Y-32.269 +N3488 G01 X+3.638 Y-29.784 +N3490 G01 X+3.018 Y-27.4 +N3492 G01 X+2.55 Y-24.882 +N3494 G01 X+2.282 Y-22.474 +N3496 G01 X+2.193 Y-20.098 +N3498 G01 X+2.269 Y-17.812 +N3500 G01 X+2.539 Y-15.289 +N3502 G01 X+2.986 Y-12.848 +N3504 G01 X+3.6 Y-10.472 +N3506 G01 X+4.424 Y-7.999 +N3508 G01 X+5.443 Y-5.524 +N3510 G01 X+5.525 Y-5.443 +N3512 G01 X+7.771 Y-4.521 +N3514 G01 X+10.245 Y-3.686 +N3516 G01 X+12.62 Y-3.063 +N3518 G01 X+15.13 Y-2.593 +N3520 G01 X+17.652 Y-2.315 +N3522 G01 X+19.902 Y-2.234 +N3524 G01 X+22.183 Y-2.31 +N3526 G01 X+24.699 Y-2.582 +N3528 G01 X+27.133 Y-3.031 +N3530 G01 X+29.501 Y-3.648 +N3532 G01 X+31.962 Y-4.474 +N3534 G01 X+34.423 Y-5.496 +N3536 G01 X+34.504 Y-5.577 +N3538 G01 X+35.432 Y-7.82 +N3540 G01 X+36.266 Y-10.274 +N3542 G01 X+36.894 Y-12.652 +N3544 G01 X+37.347 Y-15.023 +N3546 G01 X+37.615 Y-17.298 +N3548 G01 X+37.724 Y-19.58 +N3550 G01 X+37.654 Y-22.101 +N3552 G01 X+37.387 Y-24.615 +N3554 G01 X+36.924 Y-27.114 +N3556 G01 X+36.266 Y-29.602 +N3558 G01 X+35.475 Y-31.923 +N3560 G01 X+34.451 Y-34.371 +N3562 G01 X+34.371 Y-34.451 +N3564 G01 X+32.149 Y-35.378 +N3566 G01 X+29.698 Y-36.218 +N3568 G01 X+27.341 Y-36.846 +N3570 G01 X+24.846 Y-37.322 +N3572 G01 X+22.337 Y-37.602 +N3574 G01 X+20.097 Y-37.685 +N3576 G01 X+17.828 Y-37.607 +N3578 G01 X+15.324 Y-37.333 +N3580 G01 X+12.905 Y-36.878 +N3582 G01 X+10.555 Y-36.257 +N3584 G01 X+8.116 Y-35.424 +N3586 G01 X+5.682 Y-34.398 +N3588 G01 X+5.602 Y-34.318 +N3590 G01 X+4.673 Y-32.108 +N3592 G01 X+3.83 Y-29.669 +N3594 G01 X+3.199 Y-27.321 +N3596 G01 X+2.721 Y-24.834 +N3598 G01 X+2.439 Y-22.331 +N3600 G01 X+2.356 Y-20.097 +N3602 G01 X+2.434 Y-17.833 +N3604 G01 X+2.71 Y-15.336 +N3606 G01 X+3.167 Y-12.924 +N3608 G01 X+3.791 Y-10.583 +N3610 G01 X+4.626 Y-8.155 +N3612 G01 X+5.656 Y-5.732 +N3614 G01 X+5.731 Y-5.654 +N3616 G01 X+5.875 Y-5.588 +N3618 G01 X+8.384 Y-4.552 +N3620 G01 X+10.678 Y-3.783 +N3622 G01 X+13.026 Y-3.17 +N3624 G01 X+15.415 Y-2.728 +N3626 G01 X+17.674 Y-2.481 +N3628 G01 X+19.903 Y-2.397 +N3630 G01 X+22.162 Y-2.475 +N3632 G01 X+24.653 Y-2.753 +N3634 G01 X+27.057 Y-3.212 +N3636 G01 X+29.39 Y-3.839 +N3638 G01 X+31.806 Y-4.677 +N3640 G01 X+34.215 Y-5.709 +N3642 G01 X+34.292 Y-5.784 +N3644 G01 X+34.461 Y-6.153 +N3646 G01 X+35.486 Y-8.659 +N3648 G01 X+36.282 Y-11.085 +N3650 G01 X+36.877 Y-13.466 +N3652 G01 X+37.295 Y-15.9 +N3654 G01 X+37.51 Y-18.155 +N3656 G01 X+37.56 Y-20.417 +N3658 G01 X+37.442 Y-22.679 +N3660 G01 X+37.16 Y-24.924 +N3662 G01 X+36.687 Y-27.272 +N3664 G01 X+36.074 Y-29.489 +N3666 G01 X+35.273 Y-31.767 +N3668 G01 X+34.238 Y-34.163 +N3670 G01 X+34.164 Y-34.239 +N3672 G01 X+34.021 Y-34.306 +N3674 G01 X+31.54 Y-35.347 +N3676 G01 X+29.267 Y-36.122 +N3678 G01 X+26.936 Y-36.74 +N3680 G01 X+24.562 Y-37.186 +N3682 G01 X+22.315 Y-37.437 +N3684 G01 X+20.097 Y-37.522 +N3686 G01 X+17.848 Y-37.442 +N3688 G01 X+15.37 Y-37.161 +N3690 G01 X+12.981 Y-36.698 +N3692 G01 X+10.666 Y-36.066 +N3694 G01 X+8.272 Y-35.222 +N3696 G01 X+5.889 Y-34.185 +N3698 G01 X+5.814 Y-34.111 +N3700 G01 X+5.747 Y-33.97 +N3702 G01 X+4.703 Y-31.502 +N3704 G01 X+3.926 Y-29.24 +N3706 G01 X+3.305 Y-26.918 +N3708 G01 X+2.856 Y-24.551 +N3710 G01 X+2.604 Y-22.309 +N3712 G01 X+2.519 Y-20.096 +N3714 G01 X+2.599 Y-17.853 +N3716 G01 X+2.881 Y-15.382 +N3718 G01 X+3.347 Y-13 +N3720 G01 X+3.982 Y-10.694 +N3722 G01 X+4.829 Y-8.311 +N3724 G01 X+5.868 Y-5.942 +N3726 G01 X+5.941 Y-5.867 +N3728 G01 X+6.082 Y-5.8 +N3730 G01 X+8.536 Y-4.754 +N3732 G01 X+10.787 Y-3.973 +N3734 G01 X+13.101 Y-3.35 +N3736 G01 X+15.461 Y-2.899 +N3738 G01 X+17.696 Y-2.646 +N3740 G01 X+19.904 Y-2.56 +N3742 G01 X+22.142 Y-2.64 +N3744 G01 X+24.607 Y-2.924 +N3746 G01 X+26.981 Y-3.392 +N3748 G01 X+29.278 Y-4.03 +N3750 G01 X+31.65 Y-4.879 +N3752 G01 X+34.005 Y-5.921 +N3754 G01 X+34.08 Y-5.994 +N3756 G01 X+34.25 Y-6.354 +N3758 G01 X+35.286 Y-8.806 +N3760 G01 X+36.093 Y-11.188 +N3762 G01 X+36.699 Y-13.535 +N3764 G01 X+37.126 Y-15.94 +N3766 G01 X+37.345 Y-18.173 +N3768 G01 X+37.396 Y-20.413 +N3770 G01 X+37.276 Y-22.653 +N3772 G01 X+36.988 Y-24.875 +N3774 G01 X+36.506 Y-27.193 +N3776 G01 X+35.882 Y-29.376 +N3778 G01 X+35.07 Y-31.611 +N3780 G01 X+34.026 Y-33.953 +N3782 G01 X+33.953 Y-34.027 +N3784 G01 X+33.595 Y-34.198 +N3786 G01 X+31.157 Y-35.236 +N3788 G01 X+28.9 Y-36.011 +N3790 G01 X+26.65 Y-36.609 +N3792 G01 X+24.284 Y-37.05 +N3794 G01 X+22.058 Y-37.289 +N3796 G01 X+19.824 Y-37.358 +N3798 G01 X+17.591 Y-37.256 +N3800 G01 X+15.416 Y-36.99 +N3802 G01 X+13.057 Y-36.518 +N3804 G01 X+10.777 Y-35.874 +N3806 G01 X+8.428 Y-35.019 +N3808 G01 X+6.1 Y-33.973 +N3810 G01 X+6.026 Y-33.901 +N3812 G01 X+5.855 Y-33.545 +N3814 G01 X+4.815 Y-31.121 +N3816 G01 X+4.036 Y-28.873 +N3818 G01 X+3.436 Y-26.632 +N3820 G01 X+2.993 Y-24.273 +N3822 G01 X+2.752 Y-22.053 +N3824 G01 X+2.683 Y-19.824 +N3826 G01 X+2.786 Y-17.597 +N3828 G01 X+3.052 Y-15.428 +N3830 G01 X+3.527 Y-13.076 +N3832 G01 X+4.173 Y-10.805 +N3834 G01 X+5.031 Y-8.467 +N3836 G01 X+6.08 Y-6.152 +N3838 G01 X+6.152 Y-6.079 +N3840 G01 X+6.506 Y-5.908 +N3842 G01 X+8.916 Y-4.865 +N3844 G01 X+11.153 Y-4.083 +N3846 G01 X+13.386 Y-3.48 +N3848 G01 X+15.737 Y-3.035 +N3850 G01 X+17.952 Y-2.793 +N3852 G01 X+20.176 Y-2.724 +N3854 G01 X+22.398 Y-2.827 +N3856 G01 X+24.561 Y-3.095 +N3858 G01 X+26.905 Y-3.572 +N3860 G01 X+29.167 Y-4.221 +N3862 G01 X+31.494 Y-5.082 +N3864 G01 X+33.795 Y-6.133 +N3866 G01 X+33.868 Y-6.205 +N3868 G01 X+34.243 Y-6.988 +N3870 G01 X+35.171 Y-9.173 +N3872 G01 X+35.982 Y-11.548 +N3874 G01 X+36.567 Y-13.814 +N3876 G01 X+36.956 Y-15.98 +N3878 G01 X+37.181 Y-18.19 +N3880 G01 X+37.233 Y-20.409 +N3882 G01 X+37.11 Y-22.628 +N3884 G01 X+36.816 Y-24.825 +N3886 G01 X+36.325 Y-27.114 +N3888 G01 X+35.69 Y-29.263 +N3890 G01 X+34.867 Y-31.455 +N3892 G01 X+33.814 Y-33.743 +N3894 G01 X+33.744 Y-33.815 +N3896 G01 X+33.393 Y-33.987 +N3898 G01 X+31.011 Y-35.035 +N3900 G01 X+28.794 Y-35.822 +N3902 G01 X+26.579 Y-36.43 +N3904 G01 X+24.241 Y-36.88 +N3906 G01 X+22.038 Y-37.124 +N3908 G01 X+19.825 Y-37.194 +N3910 G01 X+17.614 Y-37.09 +N3912 G01 X+15.462 Y-36.819 +N3914 G01 X+13.133 Y-36.337 +N3916 G01 X+10.888 Y-35.683 +N3918 G01 X+8.584 Y-34.817 +N3920 G01 X+6.309 Y-33.761 +N3922 G01 X+6.238 Y-33.691 +N3924 G01 X+6.066 Y-33.343 +N3926 G01 X+5.015 Y-30.974 +N3928 G01 X+4.225 Y-28.768 +N3930 G01 X+3.615 Y-26.561 +N3932 G01 X+3.163 Y-24.231 +N3934 G01 X+2.917 Y-22.033 +N3936 G01 X+2.846 Y-19.826 +N3938 G01 X+2.951 Y-17.62 +N3940 G01 X+3.224 Y-15.474 +N3942 G01 X+3.708 Y-13.152 +N3944 G01 X+4.364 Y-10.916 +N3946 G01 X+5.234 Y-8.623 +N3948 G01 X+6.293 Y-6.362 +N3950 G01 X+6.361 Y-6.291 +N3952 G01 X+6.707 Y-6.118 +N3954 G01 X+9.063 Y-5.065 +N3956 G01 X+11.258 Y-4.273 +N3958 G01 X+13.457 Y-3.659 +N3960 G01 X+15.78 Y-3.206 +N3962 G01 X+17.972 Y-2.958 +N3964 G01 X+20.174 Y-2.887 +N3966 G01 X+22.374 Y-2.993 +N3968 G01 X+24.514 Y-3.266 +N3970 G01 X+26.829 Y-3.753 +N3972 G01 X+29.056 Y-4.412 +N3974 G01 X+31.338 Y-5.284 +N3976 G01 X+33.585 Y-6.345 +N3978 G01 X+33.655 Y-6.414 +N3980 G01 X+34.034 Y-7.179 +N3982 G01 X+34.971 Y-9.315 +N3984 G01 X+35.794 Y-11.647 +N3986 G01 X+36.39 Y-13.88 +N3988 G01 X+36.787 Y-16.02 +N3990 G01 X+37.016 Y-18.207 +N3992 G01 X+37.07 Y-20.405 +N3994 G01 X+36.944 Y-22.602 +N3996 G01 X+36.644 Y-24.776 +N3998 G01 X+36.143 Y-27.034 +N4000 G01 X+35.498 Y-29.149 +N4002 G01 X+34.665 Y-31.299 +N4004 G01 X+33.601 Y-33.533 +N4006 G01 X+33.533 Y-33.602 +N4008 G01 X+32.774 Y-33.982 +N4010 G01 X+30.575 Y-34.951 +N4012 G01 X+28.248 Y-35.772 +N4014 G01 X+26.014 Y-36.366 +N4016 G01 X+23.903 Y-36.754 +N4018 G01 X+21.797 Y-36.974 +N4020 G01 X+19.507 Y-37.027 +N4022 G01 X+17.407 Y-36.903 +N4024 G01 X+15.237 Y-36.601 +N4026 G01 X+12.997 Y-36.101 +N4028 G01 X+10.781 Y-35.417 +N4030 G01 X+8.536 Y-34.525 +N4032 G01 X+6.519 Y-33.548 +N4034 G01 X+6.451 Y-33.481 +N4036 G01 X+6.07 Y-32.726 +N4038 G01 X+5.099 Y-30.54 +N4040 G01 X+4.275 Y-28.223 +N4042 G01 X+3.678 Y-25.997 +N4044 G01 X+3.289 Y-23.893 +N4046 G01 X+3.067 Y-21.793 +N4048 G01 X+3.014 Y-19.508 +N4050 G01 X+3.139 Y-17.414 +N4052 G01 X+3.442 Y-15.249 +N4054 G01 X+3.944 Y-13.016 +N4056 G01 X+4.631 Y-10.81 +N4058 G01 X+5.526 Y-8.576 +N4060 G01 X+6.505 Y-6.572 +N4062 G01 X+6.572 Y-6.504 +N4064 G01 X+7.529 Y-6.021 +N4066 G01 X+9.742 Y-5.05 +N4068 G01 X+11.801 Y-4.321 +N4070 G01 X+14.019 Y-3.722 +N4072 G01 X+16.117 Y-3.331 +N4074 G01 X+18.211 Y-3.108 +N4076 G01 X+20.491 Y-3.055 +N4078 G01 X+22.58 Y-3.18 +N4080 G01 X+24.739 Y-3.485 +N4082 G01 X+26.964 Y-3.99 +N4084 G01 X+29.161 Y-4.679 +N4086 G01 X+31.384 Y-5.577 +N4088 G01 X+33.376 Y-6.558 +N4090 G01 X+33.443 Y-6.624 +N4092 G01 X+33.825 Y-7.37 +N4094 G01 X+34.859 Y-9.67 +N4096 G01 X+35.607 Y-11.746 +N4098 G01 X+36.213 Y-13.946 +N4100 G01 X+36.617 Y-16.061 +N4102 G01 X+36.852 Y-18.225 +N4104 G01 X+36.906 Y-20.401 +N4106 G01 X+36.778 Y-22.577 +N4108 G01 X+36.472 Y-24.726 +N4110 G01 X+35.962 Y-26.955 +N4112 G01 X+35.307 Y-29.036 +N4114 G01 X+34.462 Y-31.143 +N4116 G01 X+33.389 Y-33.323 +N4118 G01 X+33.323 Y-33.39 +N4120 G01 X+32.378 Y-33.875 +N4122 G01 X+30.19 Y-34.851 +N4124 G01 X+28.15 Y-35.585 +N4126 G01 X+25.949 Y-36.19 +N4128 G01 X+23.863 Y-36.585 +N4130 G01 X+21.78 Y-36.81 +N4132 G01 X+19.512 Y-36.863 +N4134 G01 X+17.433 Y-36.737 +N4136 G01 X+15.286 Y-36.429 +N4138 G01 X+13.075 Y-35.92 +N4140 G01 X+10.896 Y-35.224 +N4142 G01 X+8.697 Y-34.321 +N4144 G01 X+6.729 Y-33.336 +N4146 G01 X+6.663 Y-33.271 +N4148 G01 X+6.177 Y-32.332 +N4150 G01 X+5.198 Y-30.156 +N4152 G01 X+4.462 Y-28.126 +N4154 G01 X+3.855 Y-25.932 +N4156 G01 X+3.458 Y-23.853 +N4158 G01 X+3.216 Y-21.539 +N4160 G01 X+3.178 Y-19.513 +N4162 G01 X+3.305 Y-17.439 +N4164 G01 X+3.614 Y-15.298 +N4166 G01 X+4.126 Y-13.095 +N4168 G01 X+4.824 Y-10.925 +N4170 G01 X+5.73 Y-8.737 +N4172 G01 X+6.717 Y-6.782 +N4174 G01 X+6.782 Y-6.716 +N4176 G01 X+7.917 Y-6.129 +N4178 G01 X+10.088 Y-5.163 +N4180 G01 X+12.315 Y-4.378 +N4182 G01 X+14.39 Y-3.829 +N4184 G01 X+16.428 Y-3.46 +N4186 G01 X+18.465 Y-3.257 +N4188 G01 X+20.486 Y-3.218 +N4190 G01 X+22.555 Y-3.346 +N4192 G01 X+24.689 Y-3.657 +N4194 G01 X+26.885 Y-4.171 +N4196 G01 X+29.046 Y-4.872 +N4198 G01 X+31.223 Y-5.781 +N4200 G01 X+33.165 Y-6.77 +N4202 G01 X+33.23 Y-6.834 +N4204 G01 X+33.832 Y-7.989 +N4206 G01 X+34.746 Y-10.016 +N4208 G01 X+35.514 Y-12.139 +N4210 G01 X+36.108 Y-14.321 +N4212 G01 X+36.498 Y-16.437 +N4214 G01 X+36.702 Y-18.469 +N4216 G01 X+36.738 Y-20.624 +N4218 G01 X+36.588 Y-22.774 +N4220 G01 X+36.255 Y-24.905 +N4222 G01 X+35.781 Y-26.876 +N4224 G01 X+35.08 Y-29.018 +N4226 G01 X+34.165 Y-31.191 +N4228 G01 X+33.177 Y-33.113 +N4230 G01 X+33.113 Y-33.177 +N4232 G01 X+31.59 Y-33.965 +N4234 G01 X+29.428 Y-34.905 +N4236 G01 X+27.408 Y-35.601 +N4238 G01 X+25.333 Y-36.137 +N4240 G01 X+23.105 Y-36.516 +N4242 G01 X+21.083 Y-36.683 +N4244 G01 X+19.038 Y-36.685 +N4246 G01 X+16.897 Y-36.506 +N4248 G01 X+14.818 Y-36.152 +N4250 G01 X+12.819 Y-35.641 +N4252 G01 X+10.811 Y-34.956 +N4254 G01 X+8.857 Y-34.118 +N4256 G01 X+6.94 Y-33.124 +N4258 G01 X+6.876 Y-33.06 +N4260 G01 X+6.086 Y-31.547 +N4262 G01 X+5.144 Y-29.398 +N4264 G01 X+4.412 Y-27.278 +N4266 G01 X+3.859 Y-25.099 +N4268 G01 X+3.526 Y-23.097 +N4270 G01 X+3.358 Y-21.08 +N4272 G01 X+3.356 Y-19.04 +N4274 G01 X+3.536 Y-16.905 +N4276 G01 X+3.892 Y-14.832 +N4278 G01 X+4.405 Y-12.84 +N4280 G01 X+5.093 Y-10.841 +N4282 G01 X+5.933 Y-8.897 +N4284 G01 X+6.929 Y-6.992 +N4286 G01 X+6.992 Y-6.929 +N4288 G01 X+8.495 Y-6.138 +N4290 G01 X+10.633 Y-5.192 +N4292 G01 X+12.743 Y-4.458 +N4294 G01 X+14.915 Y-3.903 +N4296 G01 X+16.911 Y-3.568 +N4298 G01 X+18.922 Y-3.398 +N4300 G01 X+20.957 Y-3.396 +N4302 G01 X+23.088 Y-3.578 +N4304 G01 X+25.154 Y-3.935 +N4306 G01 X+27.139 Y-4.45 +N4308 G01 X+29.13 Y-5.141 +N4310 G01 X+31.063 Y-5.984 +N4312 G01 X+32.956 Y-6.982 +N4314 G01 X+33.018 Y-7.044 +N4316 G01 X+33.625 Y-8.169 +N4318 G01 X+34.549 Y-10.15 +N4320 G01 X+35.328 Y-12.233 +N4322 G01 X+35.932 Y-14.383 +N4324 G01 X+36.329 Y-16.474 +N4326 G01 X+36.538 Y-18.484 +N4328 G01 X+36.574 Y-20.611 +N4330 G01 X+36.422 Y-22.739 +N4332 G01 X+36.082 Y-24.853 +N4334 G01 X+35.599 Y-26.797 +N4336 G01 X+34.888 Y-28.903 +N4338 G01 X+33.962 Y-31.03 +N4340 G01 X+32.965 Y-32.903 +N4342 G01 X+32.903 Y-32.965 +N4344 G01 X+31.419 Y-33.76 +N4346 G01 X+29.305 Y-34.711 +N4348 G01 X+27.214 Y-35.45 +N4350 G01 X+25.057 Y-36.01 +N4352 G01 X+23.074 Y-36.348 +N4354 G01 X+21.072 Y-36.52 +N4356 G01 X+19.047 Y-36.522 +N4358 G01 X+16.935 Y-36.339 +N4360 G01 X+14.874 Y-35.978 +N4362 G01 X+12.903 Y-35.458 +N4364 G01 X+10.93 Y-34.762 +N4366 G01 X+9.018 Y-33.914 +N4368 G01 X+7.149 Y-32.911 +N4370 G01 X+7.088 Y-32.851 +N4372 G01 X+6.292 Y-31.377 +N4374 G01 X+5.338 Y-29.275 +N4376 G01 X+4.596 Y-27.193 +N4378 G01 X+4.035 Y-25.05 +N4380 G01 X+3.686 Y-23.002 +N4382 G01 X+3.521 Y-21.07 +N4384 G01 X+3.519 Y-19.056 +N4386 G01 X+3.702 Y-16.943 +N4388 G01 X+4.066 Y-14.888 +N4390 G01 X+4.588 Y-12.924 +N4392 G01 X+5.286 Y-10.96 +N4394 G01 X+6.137 Y-9.058 +N4396 G01 X+7.142 Y-7.202 +N4398 G01 X+7.202 Y-7.142 +N4400 G01 X+8.666 Y-6.343 +N4402 G01 X+10.756 Y-5.387 +N4404 G01 X+12.829 Y-4.642 +N4406 G01 X+14.964 Y-4.078 +N4408 G01 X+17.005 Y-3.728 +N4410 G01 X+18.933 Y-3.562 +N4412 G01 X+20.941 Y-3.56 +N4414 G01 X+23.049 Y-3.744 +N4416 G01 X+25.098 Y-4.109 +N4418 G01 X+27.055 Y-4.633 +N4420 G01 X+29.011 Y-5.334 +N4422 G01 X+30.902 Y-6.187 +N4424 G01 X+32.746 Y-7.195 +N4426 G01 X+32.805 Y-7.254 +N4428 G01 X+33.506 Y-8.516 +N4430 G01 X+34.438 Y-10.484 +N4432 G01 X+35.211 Y-12.536 +N4434 G01 X+35.756 Y-14.445 +N4436 G01 X+36.161 Y-16.51 +N4438 G01 X+36.373 Y-18.492 +N4440 G01 X+36.411 Y-20.605 +N4442 G01 X+36.256 Y-22.711 +N4444 G01 X+35.909 Y-24.801 +N4446 G01 X+35.418 Y-26.718 +N4448 G01 X+34.698 Y-28.781 +N4450 G01 X+33.758 Y-30.869 +N4452 G01 X+32.752 Y-32.693 +N4454 G01 X+32.693 Y-32.752 +N4456 G01 X+31.056 Y-33.653 +N4458 G01 X+28.981 Y-34.598 +N4460 G01 X+26.919 Y-35.332 +N4462 G01 X+25.003 Y-35.837 +N4464 G01 X+22.979 Y-36.189 +N4466 G01 X+21.062 Y-36.356 +N4468 G01 X+19.064 Y-36.358 +N4470 G01 X+16.966 Y-36.172 +N4472 G01 X+14.93 Y-35.804 +N4474 G01 X+12.987 Y-35.275 +N4476 G01 X+11.049 Y-34.569 +N4478 G01 X+9.178 Y-33.711 +N4480 G01 X+7.359 Y-32.699 +N4482 G01 X+7.301 Y-32.641 +N4484 G01 X+6.398 Y-31.015 +N4486 G01 X+5.45 Y-28.951 +N4488 G01 X+4.713 Y-26.898 +N4490 G01 X+4.207 Y-24.989 +N4492 G01 X+3.853 Y-22.972 +N4494 G01 X+3.685 Y-21.059 +N4496 G01 X+3.683 Y-19.066 +N4498 G01 X+3.87 Y-16.974 +N4500 G01 X+4.24 Y-14.944 +N4502 G01 X+4.771 Y-13.008 +N4504 G01 X+5.479 Y-11.078 +N4506 G01 X+6.34 Y-9.218 +N4508 G01 X+7.354 Y-7.412 +N4510 G01 X+7.412 Y-7.354 +N4512 G01 X+9.027 Y-6.449 +N4514 G01 X+11.079 Y-5.498 +N4516 G01 X+13.122 Y-4.759 +N4518 G01 X+15.025 Y-4.25 +N4520 G01 X+17.036 Y-3.895 +N4522 G01 X+18.944 Y-3.726 +N4524 G01 X+20.932 Y-3.724 +N4526 G01 X+23.018 Y-3.911 +N4528 G01 X+25.036 Y-4.282 +N4530 G01 X+26.971 Y-4.816 +N4532 G01 X+28.892 Y-5.528 +N4534 G01 X+30.741 Y-6.391 +N4536 G01 X+32.536 Y-7.407 +N4538 G01 X+32.593 Y-7.464 +N4540 G01 X+33.601 Y-9.265 +N4542 G01 X+34.457 Y-11.117 +N4544 G01 X+35.195 Y-13.143 +N4546 G01 X+35.706 Y-15.039 +N4548 G01 X+36.054 Y-16.975 +N4550 G01 X+36.238 Y-19.057 +N4552 G01 X+36.23 Y-21.047 +N4554 G01 X+36.047 Y-23.01 +N4556 G01 X+35.69 Y-24.956 +N4558 G01 X+35.173 Y-26.84 +N4560 G01 X+34.42 Y-28.871 +N4562 G01 X+33.555 Y-30.708 +N4564 G01 X+32.539 Y-32.484 +N4566 G01 X+32.484 Y-32.539 +N4568 G01 X+30.891 Y-33.449 +N4570 G01 X+28.868 Y-34.402 +N4572 G01 X+26.837 Y-35.15 +N4574 G01 X+24.954 Y-35.661 +N4576 G01 X+22.955 Y-36.021 +N4578 G01 X+21.058 Y-36.192 +N4580 G01 X+19.073 Y-36.195 +N4582 G01 X+16.998 Y-36.005 +N4584 G01 X+14.992 Y-35.631 +N4586 G01 X+13.071 Y-35.092 +N4588 G01 X+11.167 Y-34.376 +N4590 G01 X+9.339 Y-33.507 +N4592 G01 X+7.569 Y-32.486 +N4594 G01 X+7.514 Y-32.431 +N4596 G01 X+6.504 Y-30.662 +N4598 G01 X+5.643 Y-28.832 +N4600 G01 X+4.898 Y-26.822 +N4602 G01 X+4.382 Y-24.94 +N4604 G01 X+4.021 Y-22.947 +N4606 G01 X+3.849 Y-21.055 +N4608 G01 X+3.846 Y-19.076 +N4610 G01 X+4.037 Y-17.006 +N4612 G01 X+4.413 Y-15.006 +N4614 G01 X+4.954 Y-13.092 +N4616 G01 X+5.673 Y-11.197 +N4618 G01 X+6.544 Y-9.379 +N4620 G01 X+7.567 Y-7.621 +N4622 G01 X+7.621 Y-7.567 +N4624 G01 X+9.378 Y-6.555 +N4626 G01 X+11.198 Y-5.692 +N4628 G01 X+13.198 Y-4.944 +N4630 G01 X+15.073 Y-4.426 +N4632 G01 X+17.06 Y-4.063 +N4634 G01 X+18.948 Y-3.89 +N4636 G01 X+20.922 Y-3.887 +N4638 G01 X+22.986 Y-4.079 +N4640 G01 X+24.98 Y-4.456 +N4642 G01 X+26.88 Y-4.997 +N4644 G01 X+28.773 Y-5.721 +N4646 G01 X+30.581 Y-6.594 +N4648 G01 X+32.328 Y-7.621 +N4650 G01 X+32.38 Y-7.671 +N4652 G01 X+32.565 Y-7.968 +N4654 G01 X+33.588 Y-9.792 +N4656 G01 X+34.425 Y-11.62 +N4658 G01 X+35.081 Y-13.44 +N4660 G01 X+35.578 Y-15.298 +N4662 G01 X+35.93 Y-17.329 +N4664 G01 X+36.083 Y-19.327 +N4666 G01 X+36.048 Y-21.355 +N4668 G01 X+35.847 Y-23.194 +N4670 G01 X+35.467 Y-25.105 +N4672 G01 X+34.921 Y-26.967 +N4674 G01 X+34.227 Y-28.752 +N4676 G01 X+33.351 Y-30.548 +N4678 G01 X+32.327 Y-32.274 +N4680 G01 X+32.274 Y-32.327 +N4682 G01 X+30.541 Y-33.343 +N4684 G01 X+28.743 Y-34.212 +N4686 G01 X+26.761 Y-34.965 +N4688 G01 X+24.899 Y-35.487 +N4690 G01 X+22.879 Y-35.86 +N4692 G01 X+21.047 Y-36.028 +N4694 G01 X+19.083 Y-36.031 +N4696 G01 X+17.03 Y-35.838 +N4698 G01 X+15.048 Y-35.457 +N4700 G01 X+13.162 Y-34.911 +N4702 G01 X+11.286 Y-34.182 +N4704 G01 X+9.499 Y-33.304 +N4706 G01 X+7.778 Y-32.274 +N4708 G01 X+7.726 Y-32.221 +N4710 G01 X+6.708 Y-30.501 +N4712 G01 X+5.839 Y-28.719 +N4714 G01 X+5.081 Y-26.74 +N4716 G01 X+4.556 Y-24.886 +N4718 G01 X+4.182 Y-22.871 +N4720 G01 X+4.013 Y-21.045 +N4722 G01 X+4.01 Y-19.085 +N4724 G01 X+4.204 Y-17.038 +N4726 G01 X+4.587 Y-15.062 +N4728 G01 X+5.135 Y-13.183 +N4730 G01 X+5.866 Y-11.316 +N4732 G01 X+6.747 Y-9.54 +N4734 G01 X+7.781 Y-7.828 +N4736 G01 X+7.828 Y-7.78 +N4738 G01 X+7.947 Y-7.702 +N4740 G01 X+9.722 Y-6.66 +N4742 G01 X+11.59 Y-5.767 +N4744 G01 X+13.483 Y-5.06 +N4746 G01 X+15.332 Y-4.552 +N4748 G01 X+17.137 Y-4.223 +N4750 G01 X+18.958 Y-4.054 +N4752 G01 X+20.912 Y-4.051 +N4754 G01 X+22.955 Y-4.246 +N4756 G01 X+24.924 Y-4.63 +N4758 G01 X+26.796 Y-5.18 +N4760 G01 X+28.648 Y-5.912 +N4762 G01 X+30.42 Y-6.798 +N4764 G01 X+32.119 Y-7.834 +N4766 G01 X+32.167 Y-7.881 +N4768 G01 X+32.464 Y-8.342 +N4770 G01 X+33.482 Y-10.127 +N4772 G01 X+34.314 Y-11.924 +N4774 G01 X+34.96 Y-13.705 +N4776 G01 X+35.452 Y-15.559 +N4778 G01 X+35.789 Y-17.571 +N4780 G01 X+35.925 Y-19.532 +N4782 G01 X+35.884 Y-21.341 +N4784 G01 X+35.68 Y-23.16 +N4786 G01 X+35.292 Y-25.047 +N4788 G01 X+34.739 Y-26.875 +N4790 G01 X+34.033 Y-28.633 +N4792 G01 X+33.148 Y-30.387 +N4794 G01 X+32.112 Y-32.067 +N4796 G01 X+32.068 Y-32.113 +N4798 G01 X+31.949 Y-32.192 +N4800 G01 X+30.2 Y-33.239 +N4802 G01 X+28.354 Y-34.137 +N4804 G01 X+26.478 Y-34.849 +N4806 G01 X+24.642 Y-35.361 +N4808 G01 X+22.849 Y-35.693 +N4810 G01 X+20.84 Y-35.873 +N4812 G01 X+18.877 Y-35.856 +N4814 G01 X+17.061 Y-35.67 +N4816 G01 X+15.104 Y-35.283 +N4818 G01 X+13.246 Y-34.728 +N4820 G01 X+11.411 Y-33.991 +N4822 G01 X+9.66 Y-33.1 +N4824 G01 X+7.985 Y-32.059 +N4826 G01 X+7.94 Y-32.015 +N4828 G01 X+7.861 Y-31.898 +N4830 G01 X+6.812 Y-30.161 +N4832 G01 X+5.911 Y-28.325 +N4834 G01 X+5.196 Y-26.458 +N4836 G01 X+4.682 Y-24.629 +N4838 G01 X+4.349 Y-22.841 +N4840 G01 X+4.168 Y-20.838 +N4842 G01 X+4.185 Y-18.88 +N4844 G01 X+4.371 Y-17.069 +N4846 G01 X+4.761 Y-15.118 +N4848 G01 X+5.317 Y-13.267 +N4850 G01 X+6.057 Y-11.441 +N4852 G01 X+6.95 Y-9.7 +N4854 G01 X+7.994 Y-8.038 +N4856 G01 X+8.037 Y-7.993 +N4858 G01 X+8.154 Y-7.914 +N4860 G01 X+9.872 Y-6.866 +N4862 G01 X+11.703 Y-5.959 +N4864 G01 X+13.561 Y-5.242 +N4866 G01 X+15.384 Y-4.725 +N4868 G01 X+17.166 Y-4.39 +N4870 G01 X+19.164 Y-4.209 +N4872 G01 X+21.117 Y-4.226 +N4874 G01 X+22.923 Y-4.413 +N4876 G01 X+24.868 Y-4.804 +N4878 G01 X+26.712 Y-5.363 +N4880 G01 X+28.529 Y-6.105 +N4882 G01 X+30.26 Y-7.001 +N4884 G01 X+31.909 Y-8.047 +N4886 G01 X+31.954 Y-8.09 +N4888 G01 X+32.254 Y-8.538 +N4890 G01 X+33.278 Y-10.268 +N4892 G01 X+34.122 Y-12.026 +N4894 G01 X+34.779 Y-13.78 +N4896 G01 X+35.28 Y-15.608 +N4898 G01 X+35.623 Y-17.596 +N4900 G01 X+35.762 Y-19.536 +N4902 G01 X+35.72 Y-21.327 +N4904 G01 X+35.512 Y-23.126 +N4906 G01 X+35.118 Y-24.989 +N4908 G01 X+34.556 Y-26.789 +N4910 G01 X+33.843 Y-28.508 +N4912 G01 X+32.947 Y-30.22 +N4914 G01 X+31.899 Y-31.858 +N4916 G01 X+31.858 Y-31.9 +N4918 G01 X+31.742 Y-31.98 +N4920 G01 X+30.05 Y-33.033 +N4922 G01 X+28.241 Y-33.945 +N4924 G01 X+26.399 Y-34.668 +N4926 G01 X+24.591 Y-35.188 +N4928 G01 X+22.608 Y-35.555 +N4930 G01 X+20.831 Y-35.709 +N4932 G01 X+18.889 Y-35.692 +N4934 G01 X+17.093 Y-35.503 +N4936 G01 X+15.161 Y-35.109 +N4938 G01 X+13.33 Y-34.545 +N4940 G01 X+11.53 Y-33.798 +N4942 G01 X+9.826 Y-32.9 +N4944 G01 X+8.195 Y-31.847 +N4946 G01 X+8.153 Y-31.805 +N4948 G01 X+7.851 Y-31.364 +N4950 G01 X+6.781 Y-29.584 +N4952 G01 X+5.933 Y-27.827 +N4954 G01 X+5.286 Y-26.104 +N4956 G01 X+4.806 Y-24.367 +N4958 G01 X+4.486 Y-22.601 +N4960 G01 X+4.332 Y-20.829 +N4962 G01 X+4.348 Y-18.892 +N4964 G01 X+4.539 Y-17.1 +N4966 G01 X+4.934 Y-15.175 +N4968 G01 X+5.5 Y-13.351 +N4970 G01 X+6.25 Y-11.56 +N4972 G01 X+7.151 Y-9.867 +N4974 G01 X+8.207 Y-8.248 +N4976 G01 X+8.247 Y-8.206 +N4978 G01 X+8.686 Y-7.904 +N4980 G01 X+10.452 Y-6.831 +N4982 G01 X+12.2 Y-5.981 +N4984 G01 X+13.915 Y-5.331 +N4986 G01 X+15.645 Y-4.849 +N4988 G01 X+17.406 Y-4.528 +N4990 G01 X+19.173 Y-4.372 +N4992 G01 X+21.105 Y-4.389 +N4994 G01 X+22.892 Y-4.58 +N4996 G01 X+24.811 Y-4.978 +N4998 G01 X+26.628 Y-5.546 +N5000 G01 X+28.41 Y-6.298 +N5002 G01 X+30.093 Y-7.202 +N5004 G01 X+31.7 Y-8.26 +N5006 G01 X+31.741 Y-8.299 +N5008 G01 X+32.044 Y-8.735 +N5010 G01 X+33.078 Y-10.414 +N5012 G01 X+33.931 Y-12.133 +N5014 G01 X+34.599 Y-13.856 +N5016 G01 X+35.108 Y-15.657 +N5018 G01 X+35.457 Y-17.621 +N5020 G01 X+35.598 Y-19.541 +N5022 G01 X+35.556 Y-21.313 +N5024 G01 X+35.344 Y-23.092 +N5026 G01 X+34.943 Y-24.931 +N5028 G01 X+34.372 Y-26.703 +N5030 G01 X+33.649 Y-28.389 +N5032 G01 X+32.744 Y-30.059 +N5034 G01 X+31.687 Y-31.647 +N5036 G01 X+31.648 Y-31.687 +N5038 G01 X+31.055 Y-32.101 +N5040 G01 X+29.475 Y-33.069 +N5042 G01 X+27.748 Y-33.925 +N5044 G01 X+26.048 Y-34.579 +N5046 G01 X+24.229 Y-35.088 +N5048 G01 X+22.375 Y-35.416 +N5050 G01 X+20.587 Y-35.554 +N5052 G01 X+18.828 Y-35.524 +N5054 G01 X+16.917 Y-35.302 +N5056 G01 X+15.216 Y-34.935 +N5058 G01 X+13.414 Y-34.363 +N5060 G01 X+11.649 Y-33.605 +N5062 G01 X+9.987 Y-32.697 +N5064 G01 X+8.405 Y-31.634 +N5066 G01 X+8.366 Y-31.595 +N5068 G01 X+7.951 Y-31.007 +N5070 G01 X+6.981 Y-29.439 +N5072 G01 X+6.123 Y-27.722 +N5074 G01 X+5.466 Y-26.03 +N5076 G01 X+4.954 Y-24.217 +N5078 G01 X+4.626 Y-22.369 +N5080 G01 X+4.487 Y-20.586 +N5082 G01 X+4.517 Y-18.831 +N5084 G01 X+4.74 Y-16.926 +N5086 G01 X+5.108 Y-15.23 +N5088 G01 X+5.683 Y-13.435 +N5090 G01 X+6.443 Y-11.679 +N5092 G01 X+7.354 Y-10.027 +N5094 G01 X+8.42 Y-8.457 +N5096 G01 X+8.457 Y-8.419 +N5098 G01 X+9.04 Y-8.004 +N5100 G01 X+10.597 Y-7.031 +N5102 G01 X+12.305 Y-6.17 +N5104 G01 X+13.989 Y-5.511 +N5106 G01 X+15.795 Y-4.997 +N5108 G01 X+17.638 Y-4.667 +N5110 G01 X+19.416 Y-4.527 +N5112 G01 X+21.166 Y-4.558 +N5114 G01 X+23.066 Y-4.782 +N5116 G01 X+24.756 Y-5.152 +N5118 G01 X+26.544 Y-5.729 +N5120 G01 X+28.291 Y-6.491 +N5122 G01 X+29.932 Y-7.405 +N5124 G01 X+31.491 Y-8.473 +N5126 G01 X+31.527 Y-8.509 +N5128 G01 X+31.944 Y-9.088 +N5130 G01 X+32.974 Y-10.732 +N5132 G01 X+33.823 Y-12.423 +N5134 G01 X+34.484 Y-14.125 +N5136 G01 X+34.992 Y-15.948 +N5138 G01 X+35.291 Y-17.647 +N5140 G01 X+35.435 Y-19.545 +N5142 G01 X+35.392 Y-21.299 +N5144 G01 X+35.176 Y-23.057 +N5146 G01 X+34.769 Y-24.873 +N5148 G01 X+34.189 Y-26.617 +N5150 G01 X+33.456 Y-28.27 +N5152 G01 X+32.541 Y-29.899 +N5154 G01 X+31.474 Y-31.438 +N5156 G01 X+31.439 Y-31.474 +N5158 G01 X+30.864 Y-31.892 +N5160 G01 X+29.33 Y-32.869 +N5162 G01 X+27.643 Y-33.735 +N5164 G01 X+25.974 Y-34.399 +N5166 G01 X+24.181 Y-34.917 +N5168 G01 X+22.35 Y-35.25 +N5170 G01 X+20.581 Y-35.391 +N5172 G01 X+18.84 Y-35.36 +N5174 G01 X+16.951 Y-35.134 +N5176 G01 X+15.272 Y-34.761 +N5178 G01 X+13.499 Y-34.18 +N5180 G01 X+11.768 Y-33.412 +N5182 G01 X+10.148 Y-32.494 +N5184 G01 X+8.614 Y-31.42 +N5186 G01 X+8.579 Y-31.386 +N5188 G01 X+8.16 Y-30.816 +N5190 G01 X+7.182 Y-29.294 +N5192 G01 X+6.312 Y-27.616 +N5194 G01 X+5.646 Y-25.956 +N5196 G01 X+5.126 Y-24.169 +N5198 G01 X+4.792 Y-22.343 +N5200 G01 X+4.65 Y-20.58 +N5202 G01 X+4.681 Y-18.843 +N5204 G01 X+4.908 Y-16.96 +N5206 G01 X+5.282 Y-15.286 +N5208 G01 X+5.866 Y-13.52 +N5210 G01 X+6.636 Y-11.798 +N5212 G01 X+7.557 Y-10.188 +N5214 G01 X+8.633 Y-8.666 +N5216 G01 X+8.666 Y-8.633 +N5218 G01 X+9.231 Y-8.213 +N5220 G01 X+10.742 Y-7.232 +N5222 G01 X+12.41 Y-6.36 +N5224 G01 X+14.063 Y-5.691 +N5226 G01 X+15.843 Y-5.169 +N5228 G01 X+17.663 Y-4.833 +N5230 G01 X+19.422 Y-4.691 +N5232 G01 X+21.153 Y-4.722 +N5234 G01 X+23.032 Y-4.949 +N5236 G01 X+24.7 Y-5.326 +N5238 G01 X+26.459 Y-5.912 +N5240 G01 X+28.172 Y-6.685 +N5242 G01 X+29.772 Y-7.608 +N5244 G01 X+31.281 Y-8.686 +N5246 G01 X+31.314 Y-8.718 +N5248 G01 X+31.735 Y-9.279 +N5250 G01 X+32.775 Y-10.874 +N5252 G01 X+33.634 Y-12.526 +N5254 G01 X+34.304 Y-14.197 +N5256 G01 X+34.821 Y-15.994 +N5258 G01 X+35.126 Y-17.672 +N5260 G01 X+35.272 Y-19.55 +N5262 G01 X+35.228 Y-21.285 +N5264 G01 X+35.009 Y-23.023 +N5266 G01 X+34.594 Y-24.815 +N5268 G01 X+34.006 Y-26.532 +N5270 G01 X+33.263 Y-28.151 +N5272 G01 X+32.337 Y-29.738 +N5274 G01 X+31.26 Y-31.229 +N5276 G01 X+31.229 Y-31.261 +N5278 G01 X+30.673 Y-31.683 +N5280 G01 X+29.186 Y-32.668 +N5282 G01 X+27.538 Y-33.545 +N5284 G01 X+25.9 Y-34.219 +N5286 G01 X+24.133 Y-34.745 +N5288 G01 X+22.324 Y-35.084 +N5290 G01 X+20.575 Y-35.227 +N5292 G01 X+18.853 Y-35.196 +N5294 G01 X+16.985 Y-34.967 +N5296 G01 X+15.328 Y-34.587 +N5298 G01 X+13.583 Y-33.997 +N5300 G01 X+11.887 Y-33.219 +N5302 G01 X+10.309 Y-32.29 +N5304 G01 X+8.823 Y-31.207 +N5306 G01 X+8.793 Y-31.177 +N5308 G01 X+8.369 Y-30.625 +N5310 G01 X+7.382 Y-29.15 +N5312 G01 X+6.502 Y-27.511 +N5314 G01 X+5.826 Y-25.881 +N5316 G01 X+5.298 Y-24.121 +N5318 G01 X+4.958 Y-22.318 +N5320 G01 X+4.813 Y-20.574 +N5322 G01 X+4.845 Y-18.856 +N5324 G01 X+5.075 Y-16.994 +N5326 G01 X+5.456 Y-15.342 +N5328 G01 X+6.049 Y-13.604 +N5330 G01 X+6.829 Y-11.917 +N5332 G01 X+7.76 Y-10.349 +N5334 G01 X+8.847 Y-8.876 +N5336 G01 X+8.875 Y-8.846 +N5338 G01 X+9.422 Y-8.422 +N5340 G01 X+10.887 Y-7.432 +N5342 G01 X+12.515 Y-6.549 +N5344 G01 X+14.137 Y-5.871 +N5346 G01 X+15.891 Y-5.341 +N5348 G01 X+17.688 Y-4.999 +N5350 G01 X+19.428 Y-4.854 +N5352 G01 X+21.141 Y-4.886 +N5354 G01 X+22.998 Y-5.117 +N5356 G01 X+24.644 Y-5.5 +N5358 G01 X+26.375 Y-6.094 +N5360 G01 X+28.054 Y-6.878 +N5362 G01 X+29.611 Y-7.811 +N5364 G01 X+31.072 Y-8.9 +N5366 G01 X+31.101 Y-8.928 +N5368 G01 X+31.637 Y-9.618 +N5370 G01 X+32.673 Y-11.18 +N5372 G01 X+33.539 Y-12.831 +N5374 G01 X+34.203 Y-14.493 +N5376 G01 X+34.664 Y-16.1 +N5378 G01 X+34.986 Y-17.9 +N5380 G01 X+35.109 Y-19.555 +N5382 G01 X+35.063 Y-21.271 +N5384 G01 X+34.841 Y-22.989 +N5386 G01 X+34.42 Y-24.757 +N5388 G01 X+33.822 Y-26.446 +N5390 G01 X+33.07 Y-28.032 +N5392 G01 X+32.134 Y-29.577 +N5394 G01 X+31.047 Y-31.02 +N5396 G01 X+30.482 Y-31.474 +N5398 G01 X+29.041 Y-32.468 +N5400 G01 X+27.432 Y-33.356 +N5402 G01 X+25.825 Y-34.039 +N5404 G01 X+24.085 Y-34.573 +N5406 G01 X+22.299 Y-34.918 +N5408 G01 X+20.569 Y-35.064 +N5410 G01 X+18.866 Y-35.032 +N5412 G01 X+17.019 Y-34.799 +N5414 G01 X+15.384 Y-34.413 +N5416 G01 X+13.667 Y-33.814 +N5418 G01 X+12.006 Y-33.026 +N5420 G01 X+10.469 Y-32.087 +N5422 G01 X+9.033 Y-30.993 +N5424 G01 X+8.578 Y-30.435 +N5426 G01 X+7.582 Y-29.005 +N5428 G01 X+6.692 Y-27.406 +N5430 G01 X+6.006 Y-25.807 +N5432 G01 X+5.47 Y-24.073 +N5434 G01 X+5.124 Y-22.293 +N5436 G01 X+4.977 Y-20.568 +N5438 G01 X+5.009 Y-18.869 +N5440 G01 X+5.243 Y-17.028 +N5442 G01 X+5.63 Y-15.398 +N5444 G01 X+6.231 Y-13.688 +N5446 G01 X+7.022 Y-12.036 +N5448 G01 X+7.964 Y-10.51 +N5450 G01 X+9.06 Y-9.085 +N5452 G01 X+9.613 Y-8.631 +N5454 G01 X+11.031 Y-7.632 +N5456 G01 X+12.62 Y-6.739 +N5458 G01 X+14.212 Y-6.051 +N5460 G01 X+15.939 Y-5.513 +N5462 G01 X+17.714 Y-5.165 +N5464 G01 X+19.433 Y-5.018 +N5466 G01 X+21.128 Y-5.05 +N5468 G01 X+22.964 Y-5.285 +N5470 G01 X+24.588 Y-5.674 +N5472 G01 X+26.291 Y-6.277 +N5474 G01 X+27.935 Y-7.071 +N5476 G01 X+29.45 Y-8.014 +N5478 G01 X+30.862 Y-9.113 +N5480 G01 X+31.553 Y-9.967 +N5482 G01 X+32.573 Y-11.478 +N5484 G01 X+33.352 Y-12.93 +N5486 G01 X+34.024 Y-14.562 +N5488 G01 X+34.493 Y-16.145 +N5490 G01 X+34.82 Y-17.923 +N5492 G01 X+34.947 Y-19.637 +N5494 G01 X+34.891 Y-21.357 +N5496 G01 X+34.635 Y-23.152 +N5498 G01 X+34.179 Y-24.91 +N5500 G01 X+33.601 Y-26.449 +N5502 G01 X+32.877 Y-27.913 +N5504 G01 X+31.931 Y-29.416 +N5506 G01 X+30.833 Y-30.811 +N5508 G01 X+30.291 Y-31.265 +N5510 G01 X+28.896 Y-32.268 +N5512 G01 X+27.327 Y-33.166 +N5514 G01 X+25.751 Y-33.859 +N5516 G01 X+24.038 Y-34.401 +N5518 G01 X+22.274 Y-34.752 +N5520 G01 X+20.564 Y-34.901 +N5522 G01 X+18.878 Y-34.868 +N5524 G01 X+17.053 Y-34.631 +N5526 G01 X+15.44 Y-34.239 +N5528 G01 X+13.751 Y-33.631 +N5530 G01 X+12.125 Y-32.833 +N5532 G01 X+10.63 Y-31.884 +N5534 G01 X+9.243 Y-30.78 +N5536 G01 X+8.35 Y-29.677 +N5538 G01 X+7.381 Y-28.214 +N5540 G01 X+6.556 Y-26.622 +N5542 G01 X+5.951 Y-25.073 +N5544 G01 X+5.49 Y-23.388 +N5546 G01 X+5.227 Y-21.766 +N5548 G01 X+5.131 Y-20.09 +N5550 G01 X+5.21 Y-18.45 +N5552 G01 X+5.461 Y-16.809 +N5554 G01 X+5.872 Y-15.235 +N5556 G01 X+6.491 Y-13.595 +N5558 G01 X+7.216 Y-12.154 +N5560 G01 X+8.167 Y-10.67 +N5562 G01 X+9.273 Y-9.295 +N5564 G01 X+10.365 Y-8.402 +N5566 G01 X+11.817 Y-7.43 +N5568 G01 X+13.4 Y-6.603 +N5570 G01 X+14.943 Y-5.995 +N5572 G01 X+16.622 Y-5.533 +N5574 G01 X+18.239 Y-5.268 +N5576 G01 X+19.91 Y-5.172 +N5578 G01 X+21.546 Y-5.251 +N5580 G01 X+23.182 Y-5.503 +N5582 G01 X+24.75 Y-5.915 +N5584 G01 X+26.383 Y-6.537 +N5586 G01 X+27.816 Y-7.264 +N5588 G01 X+29.289 Y-8.218 +N5590 G01 X+30.653 Y-9.327 +N5592 G01 X+31.442 Y-10.27 +N5594 G01 X+32.376 Y-11.612 +N5596 G01 X+33.164 Y-13.029 +N5598 G01 X+33.846 Y-14.631 +N5600 G01 X+34.322 Y-16.19 +N5602 G01 X+34.655 Y-17.946 +N5604 G01 X+34.784 Y-19.641 +N5606 G01 X+34.727 Y-21.342 +N5608 G01 X+34.467 Y-23.115 +N5610 G01 X+34.004 Y-24.849 +N5612 G01 X+33.417 Y-26.362 +N5614 G01 X+32.684 Y-27.793 +N5616 G01 X+31.728 Y-29.255 +N5618 G01 X+30.62 Y-30.6 +N5620 G01 X+29.55 Y-31.495 +N5622 G01 X+28.119 Y-32.472 +N5624 G01 X+26.554 Y-33.305 +N5626 G01 X+25.025 Y-33.917 +N5628 G01 X+23.359 Y-34.383 +N5630 G01 X+21.752 Y-34.65 +N5632 G01 X+20.089 Y-34.746 +N5634 G01 X+18.463 Y-34.667 +N5636 G01 X+16.837 Y-34.413 +N5638 G01 X+15.28 Y-33.997 +N5640 G01 X+13.66 Y-33.371 +N5642 G01 X+12.244 Y-32.64 +N5644 G01 X+10.791 Y-31.681 +N5646 G01 X+9.452 Y-30.566 +N5648 G01 X+8.556 Y-29.507 +N5650 G01 X+7.577 Y-28.087 +N5652 G01 X+6.742 Y-26.531 +N5654 G01 X+6.127 Y-25.009 +N5656 G01 X+5.66 Y-23.349 +N5658 G01 X+5.392 Y-21.747 +N5660 G01 X+5.295 Y-20.089 +N5662 G01 X+5.374 Y-18.467 +N5664 G01 X+5.63 Y-16.846 +N5666 G01 X+6.046 Y-15.295 +N5668 G01 X+6.675 Y-13.682 +N5670 G01 X+7.409 Y-12.273 +N5672 G01 X+8.37 Y-10.831 +N5674 G01 X+9.385 Y-9.613 +N5676 G01 X+10.535 Y-8.608 +N5678 G01 X+11.944 Y-7.626 +N5680 G01 X+13.491 Y-6.788 +N5682 G01 X+15.006 Y-6.172 +N5684 G01 X+16.661 Y-5.702 +N5686 G01 X+18.258 Y-5.433 +N5688 G01 X+19.911 Y-5.335 +N5690 G01 X+21.528 Y-5.415 +N5692 G01 X+23.145 Y-5.672 +N5694 G01 X+24.69 Y-6.09 +N5696 G01 X+26.296 Y-6.721 +N5698 G01 X+27.697 Y-7.457 +N5700 G01 X+29.129 Y-8.421 +N5702 G01 X+30.443 Y-9.541 +N5704 G01 X+31.351 Y-10.591 +N5706 G01 X+32.277 Y-11.899 +N5708 G01 X+33.09 Y-13.357 +N5710 G01 X+33.754 Y-14.937 +N5712 G01 X+34.243 Y-16.615 +N5714 G01 X+34.526 Y-18.263 +N5716 G01 X+34.623 Y-19.843 +N5718 G01 X+34.543 Y-21.532 +N5720 G01 X+34.298 Y-23.079 +N5722 G01 X+33.828 Y-24.788 +N5724 G01 X+33.233 Y-26.274 +N5726 G01 X+32.49 Y-27.674 +N5728 G01 X+31.524 Y-29.094 +N5730 G01 X+30.406 Y-30.391 +N5732 G01 X+29.241 Y-31.399 +N5734 G01 X+27.836 Y-32.373 +N5736 G01 X+26.463 Y-33.12 +N5738 G01 X+24.962 Y-33.74 +N5740 G01 X+23.319 Y-34.214 +N5742 G01 X+21.732 Y-34.485 +N5744 G01 X+20.089 Y-34.583 +N5746 G01 X+18.481 Y-34.502 +N5748 G01 X+16.834 Y-34.235 +N5750 G01 X+15.339 Y-33.822 +N5752 G01 X+13.748 Y-33.187 +N5754 G01 X+12.362 Y-32.446 +N5756 G01 X+10.952 Y-31.478 +N5758 G01 X+9.662 Y-30.353 +N5760 G01 X+8.652 Y-29.2 +N5762 G01 X+7.676 Y-27.806 +N5764 G01 X+6.927 Y-26.44 +N5766 G01 X+6.304 Y-24.946 +N5768 G01 X+5.829 Y-23.31 +N5770 G01 X+5.556 Y-21.727 +N5772 G01 X+5.458 Y-20.088 +N5774 G01 X+5.539 Y-18.485 +N5776 G01 X+5.807 Y-16.844 +N5778 G01 X+6.221 Y-15.354 +N5780 G01 X+6.859 Y-13.77 +N5782 G01 X+7.602 Y-12.392 +N5784 G01 X+8.573 Y-10.992 +N5786 G01 X+9.598 Y-9.818 +N5788 G01 X+10.841 Y-8.704 +N5790 G01 X+12.225 Y-7.725 +N5792 G01 X+13.583 Y-6.973 +N5794 G01 X+15.07 Y-6.348 +N5796 G01 X+16.7 Y-5.871 +N5798 G01 X+18.277 Y-5.598 +N5800 G01 X+19.912 Y-5.499 +N5802 G01 X+21.511 Y-5.58 +N5804 G01 X+23.147 Y-5.849 +N5806 G01 X+24.631 Y-6.265 +N5808 G01 X+26.208 Y-6.905 +N5810 G01 X+27.578 Y-7.65 +N5812 G01 X+28.968 Y-8.624 +N5814 G01 X+30.234 Y-9.755 +N5816 G01 X+31.189 Y-10.807 +N5818 G01 X+32.166 Y-12.146 +N5820 G01 X+32.984 Y-13.588 +N5822 G01 X+33.632 Y-15.113 +N5824 G01 X+34.101 Y-16.703 +N5826 G01 X+34.385 Y-18.336 +N5828 G01 X+34.481 Y-19.991 +N5830 G01 X+34.387 Y-21.646 +N5832 G01 X+34.105 Y-23.28 +N5834 G01 X+33.637 Y-24.87 +N5836 G01 X+32.991 Y-26.397 +N5838 G01 X+32.175 Y-27.84 +N5840 G01 X+31.199 Y-29.18 +N5842 G01 X+30.077 Y-30.4 +N5844 G01 X+28.822 Y-31.483 +N5846 G01 X+27.452 Y-32.416 +N5848 G01 X+25.984 Y-33.187 +N5850 G01 X+24.438 Y-33.784 +N5852 G01 X+22.834 Y-34.201 +N5854 G01 X+21.192 Y-34.432 +N5856 G01 X+19.535 Y-34.474 +N5858 G01 X+17.884 Y-34.326 +N5860 G01 X+16.26 Y-33.99 +N5862 G01 X+14.686 Y-33.471 +N5864 G01 X+13.181 Y-32.775 +N5866 G01 X+11.766 Y-31.912 +N5868 G01 X+10.458 Y-30.893 +N5870 G01 X+9.276 Y-29.731 +N5872 G01 X+8.234 Y-28.442 +N5874 G01 X+7.346 Y-27.042 +N5876 G01 X+6.625 Y-25.55 +N5878 G01 X+6.078 Y-23.985 +N5880 G01 X+5.714 Y-22.367 +N5882 G01 X+5.537 Y-20.719 +N5884 G01 X+5.549 Y-19.061 +N5886 G01 X+5.751 Y-17.416 +N5888 G01 X+6.14 Y-15.805 +N5890 G01 X+6.71 Y-14.248 +N5892 G01 X+7.455 Y-12.767 +N5894 G01 X+8.364 Y-11.381 +N5896 G01 X+9.425 Y-10.107 +N5898 G01 X+10.625 Y-8.963 +N5900 G01 X+11.948 Y-7.964 +N5902 G01 X+13.376 Y-7.123 +N5904 G01 X+14.891 Y-6.45 +N5906 G01 X+16.473 Y-5.955 +N5908 G01 X+18.101 Y-5.644 +N5910 G01 X+19.754 Y-5.521 +N5912 G01 X+21.411 Y-5.588 +N5914 G01 X+23.049 Y-5.844 +N5916 G01 X+24.647 Y-6.285 +N5918 G01 X+26.184 Y-6.906 +N5920 G01 X+27.64 Y-7.698 +N5922 G01 X+28.996 Y-8.652 +N5924 G01 X+30.24 Y-9.76 +N5926 G03 X+34.476 Y-9.517 I+1.996 J+2.239 F16500 +N5928 G01 Z+1.183 +N5930 G00 Z+6.183 +N5932 G00 X+41.958 Y+0.212 Z+0.367 +N5934 G00 Z-4.633 +N5936 G01 X+41.95 Y+0 F16500 +N5938 G01 X+41.92 Y-40.314 F16500 +N5940 G01 X+41.912 Y-40.362 +N5942 G01 X+41.737 Y-40.879 +N5944 G01 X+41.716 Y-40.919 +N5946 G01 X+41.393 Y-41.36 +N5948 G01 X+41.36 Y-41.393 +N5950 G01 X+40.919 Y-41.716 +N5952 G01 X+40.879 Y-41.737 +N5954 G01 X+40.356 Y-41.915 +N5956 G01 X+40.007 Y-41.949 +N5958 G01 X-0.314 Y-41.92 +N5960 G01 X-0.362 Y-41.912 +N5962 G01 X-0.879 Y-41.737 +N5964 G01 X-0.919 Y-41.716 +N5966 G01 X-1.36 Y-41.393 +N5968 G01 X-1.393 Y-41.36 +N5970 G01 X-1.716 Y-40.919 +N5972 G01 X-1.737 Y-40.879 +N5974 G01 X-1.915 Y-40.356 +N5976 G01 X-1.949 Y-40.007 +N5978 G01 X-1.92 Y+0.314 +N5980 G01 X-1.912 Y+0.362 +N5982 G01 X-1.737 Y+0.879 +N5984 G01 X-1.716 Y+0.919 +N5986 G01 X-1.393 Y+1.36 +N5988 G01 X-1.36 Y+1.393 +N5990 G01 X-0.919 Y+1.716 +N5992 G01 X-0.879 Y+1.737 +N5994 G01 X-0.356 Y+1.915 +N5996 G01 X-0.007 Y+1.949 +N5998 G01 X+40.314 Y+1.92 +N6000 G01 X+40.362 Y+1.912 +N6002 G01 X+40.879 Y+1.737 +N6004 G01 X+40.919 Y+1.716 +N6006 G01 X+41.091 Y+1.59 +N6008 G01 X+41.165 Y+1.549 +N6010 G01 X+41.365 Y+1.379 +N6012 G01 X+41.529 Y+1.193 +N6014 G01 X+41.828 Y+0.639 +N6016 G01 X+41.919 Y+0.264 +N6018 G01 X+41.938 Y+0 +N6020 G01 X+41.886 Y-34.877 +N6022 G01 X+41.884 Y-35.09 +N6024 G01 X+41.849 Y-40.301 +N6026 G01 X+41.782 Y-40.583 +N6028 G01 X+41.497 Y-41.125 +N6030 G01 X+41.332 Y-41.318 +N6032 G01 X+41.153 Y-41.476 +N6034 G01 X+40.618 Y-41.766 +N6036 G01 X+40.26 Y-41.853 +N6038 G01 X+14.383 Y-41.879 +N6040 G01 X+4.91 Y-41.819 +N6042 G01 X+0 Y-41.811 +N6044 G01 X-0.296 Y-41.785 +N6046 G01 X-0.562 Y-41.72 +N6048 G01 X-1.085 Y-41.444 +N6050 G01 X-1.272 Y-41.286 +N6052 G01 X-1.424 Y-41.113 +N6054 G01 X-1.703 Y-40.597 +N6056 G01 X-1.788 Y-40.252 +N6058 G01 X-1.85 Y-17.222 +N6060 G01 X-1.747 Y-0.679 +N6062 G01 X-1.72 Y+0.28 +N6064 G01 X-1.657 Y+0.541 +N6066 G01 X-1.392 Y+1.046 +N6068 G01 X-1.239 Y+1.226 +N6070 G01 X-1.073 Y+1.372 +N6072 G01 X-0.576 Y+1.641 +N6074 G01 X-0.239 Y+1.724 +N6076 G01 X+0 Y+1.742 +N6078 G01 X+7.593 Y+1.762 +N6080 G01 X+21.296 Y+1.818 +N6082 G01 X+33.61 Y+1.712 +N6084 G01 X+35.09 Y+1.688 +N6086 G01 X+40.267 Y+1.655 +N6088 G01 X+40.52 Y+1.595 +N6090 G01 X+41.005 Y+1.34 +N6092 G01 X+41.179 Y+1.193 +N6094 G01 X+41.32 Y+1.033 +N6096 G01 X+41.579 Y+0.554 +N6098 G01 X+41.659 Y+0.23 +N6100 G01 X+41.676 Y+0 +N6102 G01 X+41.692 Y-6.605 +N6104 G01 X+41.783 Y-18.951 +N6106 G01 X+41.708 Y-30.062 +N6108 G01 X+41.617 Y-35.09 +N6110 G01 X+41.609 Y-40 +N6112 G01 X+41.586 Y-40.261 +N6114 G01 X+41.528 Y-40.498 +N6116 G01 X+41.284 Y-40.963 +N6118 G01 X+41.143 Y-41.129 +N6120 G01 X+40.991 Y-41.264 +N6122 G01 X+40.532 Y-41.512 +N6124 G01 X+40.225 Y-41.588 +N6126 G01 X+33.395 Y-41.629 +N6128 G01 X+22.407 Y-41.742 +N6130 G01 X+12.16 Y-41.689 +N6132 G01 X+4.91 Y-41.547 +N6134 G01 X+0 Y-41.539 +N6136 G01 X-0.25 Y-41.517 +N6138 G01 X-0.475 Y-41.462 +N6140 G01 X-0.92 Y-41.228 +N6142 G01 X-1.079 Y-41.093 +N6144 G01 X-1.208 Y-40.948 +N6146 G01 X-1.446 Y-40.509 +N6148 G01 X-1.519 Y-40.216 +N6150 G01 X-1.555 Y-33.889 +N6152 G01 X-1.696 Y-23.889 +N6154 G01 X-1.672 Y-14.383 +N6156 G01 X-1.49 Y-5.37 +N6158 G01 X-1.447 Y+0.232 +N6160 G01 X-1.395 Y+0.453 +N6162 G01 X-1.173 Y+0.877 +N6164 G01 X-1.044 Y+1.03 +N6166 G01 X-0.905 Y+1.153 +N6168 G01 X-0.487 Y+1.379 +N6170 G01 X-0.203 Y+1.45 +N6172 G01 X+0 Y+1.465 +N6174 G01 X+5.864 Y+1.483 +N6176 G01 X+15.247 Y+1.649 +N6178 G01 X+24.259 Y+1.645 +N6180 G01 X+32.901 Y+1.476 +N6182 G01 X+35.09 Y+1.406 +N6184 G01 X+40.219 Y+1.378 +N6186 G01 X+40.43 Y+1.328 +N6188 G01 X+40.834 Y+1.117 +N6190 G01 X+40.98 Y+0.994 +N6192 G01 X+41.097 Y+0.862 +N6194 G01 X+41.313 Y+0.465 +N6196 G01 X+41.381 Y+0.193 +N6198 G01 X+41.395 Y+0 +N6200 G01 X+41.409 Y-5.617 +N6202 G01 X+41.597 Y-14.299 +N6204 G01 X+41.618 Y-22.781 +N6206 G01 X+41.478 Y-30.802 +N6208 G01 X+41.336 Y-35.09 +N6210 G01 X+41.328 Y-40 +N6212 G01 X+41.309 Y-40.214 +N6214 G01 X+41.262 Y-40.408 +N6216 G01 X+41.061 Y-40.792 +N6218 G01 X+40.944 Y-40.93 +N6220 G01 X+40.82 Y-41.041 +N6222 G01 X+40.442 Y-41.246 +N6224 G01 X+40.189 Y-41.31 +N6226 G01 X+34.383 Y-41.342 +N6228 G01 X+26.139 Y-41.548 +N6230 G01 X+18.086 Y-41.585 +N6232 G01 X+10.432 Y-41.459 +N6234 G01 X+4.91 Y-41.266 +N6236 G01 X+0 Y-41.258 +N6238 G01 X-0.202 Y-41.24 +N6240 G01 X-0.385 Y-41.195 +N6242 G01 X-0.749 Y-41.005 +N6244 G01 X-0.881 Y-40.895 +N6246 G01 X-0.985 Y-40.777 +N6248 G01 X-1.18 Y-40.42 +N6250 G01 X-1.24 Y-40.18 +N6252 G01 X-1.275 Y-34.383 +N6254 G01 X-1.499 Y-26.481 +N6256 G01 X-1.551 Y-18.951 +N6258 G01 X-1.439 Y-11.543 +N6260 G01 X-1.194 Y-4.259 +N6262 G01 X-1.17 Y+0.184 +N6264 G01 X-1.129 Y+0.362 +N6266 G01 X-0.95 Y+0.706 +N6268 G01 X-0.845 Y+0.831 +N6270 G01 X-0.734 Y+0.93 +N6272 G01 X-0.397 Y+1.113 +N6274 G01 X-0.166 Y+1.172 +N6276 G01 X+0 Y+1.184 +N6278 G01 X+5.617 Y+1.207 +N6280 G01 X+12.978 Y+1.444 +N6282 G01 X+20.185 Y+1.515 +N6284 G01 X+27.346 Y+1.421 +N6286 G01 X+34.383 Y+1.161 +N6288 G01 X+35.09 Y+1.125 +N6290 G01 X+40.172 Y+1.101 +N6292 G01 X+40.34 Y+1.063 +N6294 G01 X+40.664 Y+0.894 +N6296 G01 X+40.782 Y+0.796 +N6298 G01 X+40.875 Y+0.692 +N6300 G01 X+41.048 Y+0.375 +N6302 G01 X+41.103 Y+0.157 +N6304 G01 X+41.115 Y+0 +N6306 G01 X+41.13 Y-5.37 +N6308 G01 X+41.387 Y-12.42 +N6310 G01 X+41.478 Y-19.473 +N6312 G01 X+41.402 Y-26.366 +N6314 G01 X+41.16 Y-33.148 +N6316 G01 X+41.06 Y-35.09 +N6318 G01 X+41.052 Y-40 +N6320 G01 X+41.037 Y-40.167 +N6322 G01 X+41.001 Y-40.319 +N6324 G01 X+40.842 Y-40.624 +N6326 G01 X+40.75 Y-40.736 +N6328 G01 X+40.652 Y-40.823 +N6330 G01 X+40.354 Y-40.986 +N6332 G01 X+40.153 Y-41.037 +N6334 G01 X+34.63 Y-41.066 +N6336 G01 X+27.84 Y-41.336 +N6338 G01 X+21.181 Y-41.441 +N6340 G01 X+14.63 Y-41.384 +N6342 G01 X+8.086 Y-41.162 +N6344 G01 X+4.91 Y-40.994 +N6346 G01 X+0 Y-40.986 +N6348 G01 X-0.156 Y-40.973 +N6350 G01 X-0.298 Y-40.938 +N6352 G01 X-0.584 Y-40.79 +N6354 G01 X-0.689 Y-40.703 +N6356 G01 X-0.77 Y-40.612 +N6358 G01 X-0.923 Y-40.333 +N6360 G01 X-0.972 Y-40.144 +N6362 G01 X-1.002 Y-34.63 +N6364 G01 X-1.285 Y-28.086 +N6366 G01 X-1.403 Y-21.667 +N6368 G01 X-1.357 Y-15.247 +N6370 G01 X-1.144 Y-8.827 +N6372 G01 X-0.928 Y-4.383 +N6374 G01 X-0.907 Y+0.138 +N6376 G01 X-0.876 Y+0.277 +N6378 G01 X-0.738 Y+0.544 +N6380 G01 X-0.657 Y+0.643 +N6382 G01 X-0.572 Y+0.718 +N6384 G01 X-0.316 Y+0.859 +N6386 G01 X-0.27 Y+0.875 +N6388 G01 X-0.012 Y+0.917 +N6390 G01 X+5.37 Y+0.939 +N6392 G01 X+11.79 Y+1.237 +N6394 G01 X+18.076 Y+1.365 +N6396 G01 X+24.259 Y+1.329 +N6398 G01 X+30.297 Y+1.133 +N6400 G01 X+35.09 Y+0.863 +N6402 G01 X+40.127 Y+0.842 +N6404 G01 X+40.256 Y+0.814 +N6406 G01 X+40.504 Y+0.686 +N6408 G01 X+40.596 Y+0.61 +N6410 G01 X+40.666 Y+0.532 +N6412 G01 X+40.797 Y+0.295 +N6414 G01 X+40.812 Y+0.249 +N6416 G01 X+40.851 Y+0.012 +N6418 G01 X+40.874 Y-5.37 +N6420 G01 X+41.182 Y-11.543 +N6422 G01 X+41.325 Y-17.761 +N6424 G01 X+41.296 Y-23.889 +N6426 G01 X+41.097 Y-29.951 +N6428 G01 X+40.793 Y-35.09 +N6430 G01 X+40.784 Y-39.988 +N6432 G01 X+40.747 Y-40.227 +N6434 G01 X+40.731 Y-40.273 +N6436 G01 X+40.63 Y-40.461 +N6438 G01 X+40.56 Y-40.547 +N6440 G01 X+40.489 Y-40.61 +N6442 G01 X+40.268 Y-40.732 +N6444 G01 X+40.118 Y-40.772 +N6446 G01 X+34.63 Y-40.806 +N6448 G01 X+28.476 Y-41.133 +N6450 G01 X+22.531 Y-41.283 +N6452 G01 X+16.605 Y-41.265 +N6454 G01 X+10.679 Y-41.075 +N6456 G01 X+4.91 Y-40.722 +N6458 G01 X+0.012 Y-40.714 +N6460 G01 X-0.204 Y-40.68 +N6462 G01 X-0.25 Y-40.664 +N6464 G01 X-0.419 Y-40.574 +N6466 G01 X-0.497 Y-40.511 +N6468 G01 X-0.555 Y-40.447 +N6470 G01 X-0.66 Y-40.257 +N6472 G01 X-0.677 Y-40.196 +N6474 G01 X-0.712 Y-39.691 +N6476 G01 X-0.737 Y-34.63 +N6478 G01 X-1.075 Y-28.704 +N6480 G01 X-1.24 Y-22.781 +N6482 G01 X-1.231 Y-16.975 +N6484 G01 X-1.054 Y-11.296 +N6486 G01 X-0.707 Y-5.617 +N6488 G01 X-0.651 Y-4.383 +N6490 G01 X-0.634 Y+0.091 +N6492 G01 X-0.615 Y+0.184 +N6494 G01 X-0.597 Y+0.226 +N6496 G01 X-0.466 Y+0.436 +N6498 G01 X-0.438 Y+0.469 +N6500 G01 X-0.404 Y+0.499 +N6502 G01 X-0.228 Y+0.597 +N6504 G01 X-0.181 Y+0.612 +N6506 G01 X-0.012 Y+0.64 +N6508 G01 X+5.37 Y+0.669 +N6510 G01 X+11.049 Y+1.015 +N6512 G01 X+16.605 Y+1.192 +N6514 G01 X+22.16 Y+1.205 +N6516 G01 X+27.58 Y+1.056 +N6518 G01 X+33.125 Y+0.736 +N6520 G01 X+35.09 Y+0.582 +N6522 G01 X+40.079 Y+0.565 +N6524 G01 X+40.161 Y+0.549 +N6526 G01 X+40.203 Y+0.531 +N6528 G01 X+40.386 Y+0.417 +N6530 G01 X+40.42 Y+0.389 +N6532 G01 X+40.463 Y+0.333 +N6534 G01 X+40.531 Y+0.205 +N6536 G01 X+40.547 Y+0.159 +N6538 G01 X+40.571 Y+0.012 +N6540 G01 X+40.602 Y-5.37 +N6542 G01 X+40.963 Y-10.96 +N6544 G01 X+41.149 Y-16.358 +N6546 G01 X+41.171 Y-21.924 +N6548 G01 X+41.027 Y-27.249 +N6550 G01 X+40.713 Y-32.654 +N6552 G01 X+40.516 Y-35.09 +N6554 G01 X+40.508 Y-39.988 +N6556 G01 X+40.486 Y-40.133 +N6558 G01 X+40.465 Y-40.188 +N6560 G01 X+40.371 Y-40.34 +N6562 G01 X+40.342 Y-40.374 +N6564 G01 X+40.286 Y-40.412 +N6566 G01 X+40.093 Y-40.492 +N6568 G01 X+40.037 Y-40.503 +N6570 G01 X+34.63 Y-40.538 +N6572 G01 X+29.198 Y-40.908 +N6574 G01 X+23.889 Y-41.106 +N6576 G01 X+18.618 Y-41.14 +N6578 G01 X+13.42 Y-41.013 +N6580 G01 X+8.086 Y-40.712 +N6582 G01 X+4.91 Y-40.451 +N6584 G01 X+0.012 Y-40.443 +N6586 G01 X-0.112 Y-40.424 +N6588 G01 X-0.167 Y-40.403 +N6590 G01 X-0.294 Y-40.324 +N6592 G01 X-0.327 Y-40.296 +N6594 G01 X-0.36 Y-40.241 +N6596 G01 X-0.434 Y-40.023 +N6598 G01 X-0.442 Y-39.976 +N6600 G01 X-0.453 Y-34.877 +N6602 G01 X-0.847 Y-29.444 +N6604 G01 X-1.06 Y-24.259 +N6606 G01 X-1.107 Y-18.951 +N6608 G01 X-0.985 Y-13.765 +N6610 G01 X-0.695 Y-8.58 +N6612 G01 X-0.384 Y-4.63 +N6614 G01 X-0.357 Y+0.078 +N6616 G01 X-0.335 Y+0.157 +N6618 G01 X-0.279 Y+0.246 +N6620 G01 X-0.2 Y+0.309 +N6622 G01 X-0.023 Y+0.368 +N6624 G01 X+0.025 Y+0.376 +N6626 G01 X+4.91 Y+0.368 +N6628 G01 X+10.049 Y+0.769 +N6630 G01 X+15.247 Y+1.008 +N6632 G01 X+20.432 Y+1.075 +N6634 G01 X+25.617 Y+0.969 +N6636 G01 X+30.647 Y+0.698 +N6638 G01 X+35.09 Y+0.319 +N6640 G01 X+40.057 Y+0.295 +N6642 G01 X+40.136 Y+0.272 +N6644 G01 X+40.195 Y+0.235 +N6646 G01 X+40.258 Y+0.156 +N6648 G01 X+40.303 Y+0.024 +N6650 G01 X+40.311 Y-0.025 +N6652 G01 X+40.302 Y-4.91 +N6654 G01 X+40.713 Y-9.938 +N6656 G01 X+40.965 Y-15.172 +N6658 G01 X+41.038 Y-20.1 +N6660 G01 X+40.95 Y-25 +N6662 G01 X+40.694 Y-29.951 +N6664 G01 X+40.271 Y-34.877 +N6666 G01 X+40.25 Y-35.082 +N6668 G01 X+40.228 Y-40.035 +N6670 G01 X+40.205 Y-40.113 +N6672 G01 X+40.131 Y-40.189 +N6674 G01 X+40.063 Y-40.223 +N6676 G01 X+39.996 Y-40.238 +N6678 G01 X+35.123 Y-40.232 +N6680 G01 X+29.951 Y-40.667 +N6682 G01 X+25 Y-40.918 +N6684 G01 X+20.1 Y-41 +N6686 G01 X+15.247 Y-40.917 +N6688 G01 X+10.432 Y-40.669 +N6690 G01 X+5.617 Y-40.254 +N6692 G01 X+4.918 Y-40.18 +N6694 G01 X+0.03 Y-40.17 +N6696 G01 X-0.027 Y-40.159 +N6698 G01 X-0.144 Y-40.063 +N6700 G01 X-0.17 Y-39.97 +N6702 G01 X-0.162 Y-35.13 +N6704 G01 X-0.608 Y-30.062 +N6706 G01 X-0.872 Y-25.123 +N6708 G01 X-0.962 Y-20.327 +N6710 G01 X-0.884 Y-15.494 +N6712 G01 X-0.635 Y-10.679 +N6714 G01 X-0.213 Y-5.864 +N6716 G01 X-0.108 Y-4.63 +N6718 G01 X-0.08 Y-0.049 +N6720 G02 X+0.07 Y+0.1 I+0.15 J-0.001 +N6722 G01 X+4.903 Y+0.091 +N6724 G01 X+9.691 Y+0.536 +N6726 G01 X+14.383 Y+0.811 +N6728 G01 X+19.045 Y+0.921 +N6730 G01 X+23.642 Y+0.87 +N6732 G01 X+28.21 Y+0.66 +N6734 G01 X+32.901 Y+0.276 +N6736 G01 X+35.082 Y+0.039 +N6738 G01 X+39.882 Y+0.032 +N6740 G02 X+40.032 Y-0.118 I+0 J-0.15 +N6742 G01 X+40.026 Y-4.903 +N6744 G01 X+40.49 Y-9.703 +N6746 G01 X+40.77 Y-14.299 +N6748 G01 X+40.888 Y-18.951 +N6750 G01 X+40.838 Y-23.642 +N6752 G01 X+40.623 Y-28.21 +N6754 G01 X+40.23 Y-32.901 +N6756 G01 X+39.988 Y-35.082 +N6758 G01 X+39.981 Y-39.831 +N6760 G02 X+39.83 Y-39.98 I-0.15 J+0.001 +N6762 G01 X+35.131 Y-39.974 +N6764 G01 X+30.309 Y-40.45 +N6766 G01 X+25.617 Y-40.742 +N6768 G01 X+20.955 Y-40.861 +N6770 G01 X+16.358 Y-40.808 +N6772 G01 X+11.79 Y-40.588 +N6774 G01 X+7.355 Y-40.211 +N6776 G01 X+4.918 Y-39.936 +N6778 G01 X+0.247 Y-39.929 +N6780 G01 X+0.141 Y-39.885 +N6782 G01 X+0.071 Y-39.753 +N6784 G01 X+0.077 Y-35.131 +N6786 G01 X-0.411 Y-30.309 +N6788 G01 X-0.711 Y-25.617 +N6790 G01 X-0.831 Y-21.181 +N6792 G01 X-0.786 Y-16.605 +N6794 G01 X-0.577 Y-12.16 +N6796 G01 X-0.192 Y-7.593 +N6798 G01 X+0.116 Y-4.637 +N6800 G01 X+0.122 Y-0.273 +N6802 G02 X+0.273 Y-0.123 I+0.15 J+0 +N6804 G01 X+4.902 Y-0.129 +N6806 G01 X+9.444 Y+0.351 +N6808 G01 X+13.861 Y+0.654 +N6810 G01 X+18.333 Y+0.797 +N6812 G01 X+22.778 Y+0.773 +N6814 G01 X+27.346 Y+0.575 +N6816 G01 X+31.914 Y+0.199 +N6818 G01 X+35.082 Y-0.167 +N6820 G01 X+39.675 Y-0.185 +N6822 G02 X+39.825 Y-0.335 I+0 J-0.15 +N6824 G01 X+39.818 Y-4.902 +N6826 G01 X+40.3 Y-9.353 +N6828 G01 X+40.615 Y-13.765 +N6830 G01 X+40.766 Y-18.333 +N6832 G01 X+40.741 Y-22.781 +N6834 G01 X+40.543 Y-27.249 +N6836 G01 X+40.183 Y-31.582 +N6838 G01 X+39.772 Y-35.081 +N6840 G01 X+39.764 Y-39.614 +N6842 G02 X+39.614 Y-39.764 I-0.15 J+0 +N6844 G01 X+35.132 Y-39.757 +N6846 G01 X+30.556 Y-40.262 +N6848 G01 X+26.139 Y-40.582 +N6850 G01 X+21.667 Y-40.733 +N6852 G01 X+17.222 Y-40.707 +N6854 G01 X+12.901 Y-40.513 +N6856 G01 X+8.58 Y-40.151 +N6858 G01 X+4.919 Y-39.711 +N6860 G01 X+0.446 Y-39.692 +N6862 G02 X+0.297 Y-39.542 I+0.001 J+0.15 +N6864 G01 X+0.304 Y-35.132 +N6866 G01 X-0.215 Y-30.556 +N6868 G01 X-0.544 Y-26.139 +N6870 G01 X-0.695 Y-21.924 +N6872 G01 X-0.679 Y-17.469 +N6874 G01 X-0.492 Y-13.194 +N6876 G01 X-0.128 Y-8.827 +N6878 G01 X+0.35 Y-4.638 +N6880 G01 X+0.358 Y-0.508 +N6882 G02 X+0.508 Y-0.358 I+0.15 J+0 +N6884 G01 X+4.901 Y-0.365 +N6886 G01 X+9.198 Y+0.144 +N6888 G01 X+13.519 Y+0.487 +N6890 G01 X+17.84 Y+0.657 +N6892 G01 X+22.16 Y+0.654 +N6894 G01 X+26.481 Y+0.474 +N6896 G01 X+30.647 Y+0.134 +N6898 G01 X+34.877 Y-0.381 +N6900 G01 X+35.08 Y-0.41 +N6902 G01 X+39.432 Y-0.431 +N6904 G02 X+39.581 Y-0.582 I-0.001 J-0.15 +N6906 G01 X+39.575 Y-4.901 +N6908 G01 X+40.085 Y-9.074 +N6910 G01 X+40.443 Y-13.42 +N6912 G01 X+40.622 Y-17.761 +N6914 G01 X+40.625 Y-21.924 +N6916 G01 X+40.457 Y-26.139 +N6918 G01 X+40.122 Y-30.309 +N6920 G01 X+39.63 Y-34.383 +N6922 G01 X+39.529 Y-35.079 +N6924 G01 X+39.521 Y-39.371 +N6926 G02 X+39.371 Y-39.521 I-0.15 J+0 +N6928 G01 X+35.133 Y-39.514 +N6930 G01 X+30.802 Y-40.05 +N6932 G01 X+26.728 Y-40.395 +N6934 G01 X+22.531 Y-40.582 +N6936 G01 X+18.333 Y-40.596 +N6938 G01 X+14.299 Y-40.446 +N6940 G01 X+10.185 Y-40.126 +N6942 G01 X+6.111 Y-39.642 +N6944 G01 X+4.92 Y-39.468 +N6946 G01 X+0.69 Y-39.445 +N6948 G02 X+0.54 Y-39.295 I+0 J+0.15 +N6950 G01 X+0.547 Y-35.133 +N6952 G01 X-0.003 Y-30.802 +N6954 G01 X-0.356 Y-26.728 +N6956 G01 X-0.548 Y-22.531 +N6958 G01 X-0.563 Y-18.333 +N6960 G01 X-0.408 Y-14.299 +N6962 G01 X-0.081 Y-10.185 +N6964 G01 X+0.415 Y-6.111 +N6966 G01 X+0.593 Y-4.763 +N6968 G01 X+0.601 Y-0.751 +N6970 G02 X+0.751 Y-0.601 I+0.15 J+0 +N6972 G01 X+4.9 Y-0.608 +N6974 G01 X+8.951 Y-0.072 +N6976 G01 X+12.978 Y+0.297 +N6978 G01 X+16.975 Y+0.5 +N6980 G01 X+21.049 Y+0.538 +N6982 G01 X+25.123 Y+0.404 +N6984 G01 X+29.321 Y+0.085 +N6986 G01 X+33.395 Y-0.401 +N6988 G01 X+35.079 Y-0.654 +N6990 G01 X+39.189 Y-0.678 +N6992 G02 X+39.339 Y-0.828 I+0 J-0.15 +N6994 G01 X+39.333 Y-4.9 +N6996 G01 X+39.896 Y-9.074 +N6998 G01 X+40.275 Y-13.194 +N7000 G01 X+40.475 Y-17.222 +N7002 G01 X+40.505 Y-21.181 +N7004 G01 X+40.37 Y-25.123 +N7006 G01 X+40.057 Y-29.198 +N7008 G01 X+39.583 Y-33.148 +N7010 G01 X+39.29 Y-35.079 +N7012 G01 X+39.283 Y-39.133 +N7014 G02 X+39.132 Y-39.283 I-0.15 J+0 +N7016 G01 X+35.134 Y-39.277 +N7018 G01 X+30.802 Y-39.866 +N7020 G01 X+26.728 Y-40.245 +N7022 G01 X+22.781 Y-40.443 +N7024 G01 X+18.704 Y-40.473 +N7026 G01 X+14.63 Y-40.322 +N7028 G01 X+10.679 Y-40.004 +N7030 G01 X+6.605 Y-39.497 +N7032 G01 X+4.921 Y-39.234 +N7034 G01 X+0.924 Y-39.227 +N7036 G02 X+0.774 Y-39.076 I+0 J+0.15 +N7038 G01 X+0.78 Y-35.134 +N7040 G01 X+0.178 Y-30.802 +N7042 G01 X-0.209 Y-26.728 +N7044 G01 X-0.412 Y-22.781 +N7046 G01 X-0.445 Y-18.951 +N7048 G01 X-0.303 Y-14.877 +N7050 G01 X+0.007 Y-10.96 +N7052 G01 X+0.481 Y-7.099 +N7054 G01 X+0.823 Y-4.764 +N7056 G01 X+0.83 Y-0.988 +N7058 G01 X+0.874 Y-0.882 +N7060 G01 X+0.988 Y-0.83 +N7062 G01 X+4.899 Y-0.836 +N7064 G01 X+8.951 Y-0.252 +N7066 G01 X+12.751 Y+0.133 +N7068 G01 X+16.605 Y+0.36 +N7070 G01 X+20.432 Y+0.42 +N7072 G01 X+24.259 Y+0.316 +N7074 G01 X+28.21 Y+0.035 +N7076 G01 X+32.16 Y-0.425 +N7078 G01 X+35.079 Y-0.878 +N7080 G01 X+38.965 Y-0.885 +N7082 G02 X+39.115 Y-1.035 I+0 J-0.15 +N7084 G01 X+39.109 Y-4.899 +N7086 G01 X+39.69 Y-8.827 +N7088 G01 X+40.09 Y-12.654 +N7090 G01 X+40.329 Y-16.605 +N7092 G01 X+40.391 Y-20.432 +N7094 G01 X+40.289 Y-24.187 +N7096 G01 X+40.011 Y-28.086 +N7098 G01 X+39.581 Y-31.809 +N7100 G01 X+39.07 Y-35.079 +N7102 G01 X+39.063 Y-38.889 +N7104 G01 X+39.019 Y-38.994 +N7106 G01 X+38.888 Y-39.063 +N7108 G01 X+35.135 Y-39.058 +N7110 G01 X+31.049 Y-39.665 +N7112 G01 X+27.249 Y-40.065 +N7114 G01 X+23.395 Y-40.3 +N7116 G01 X+19.568 Y-40.363 +N7118 G01 X+15.741 Y-40.255 +N7120 G01 X+12.037 Y-39.988 +N7122 G01 X+8.333 Y-39.558 +N7124 G01 X+4.922 Y-39.018 +N7126 G01 X+1.138 Y-39.012 +N7128 G02 X+0.989 Y-38.862 I+0.001 J+0.15 +N7130 G01 X+0.994 Y-35.135 +N7132 G01 X+0.376 Y-31.049 +N7134 G01 X-0.031 Y-27.249 +N7136 G01 X-0.271 Y-23.395 +N7138 G01 X-0.335 Y-19.568 +N7140 G01 X-0.226 Y-15.741 +N7142 G01 X+0.047 Y-12.037 +N7144 G01 X+0.484 Y-8.333 +N7146 G01 X+1.033 Y-4.764 +N7148 G01 X+1.049 Y-1.19 +N7150 G02 X+1.199 Y-1.04 I+0.15 J+0 +N7152 G01 X+4.898 Y-1.045 +N7154 G01 X+8.704 Y-0.449 +N7156 G01 X+12.407 Y-0.033 +N7158 G01 X+16.111 Y+0.22 +N7160 G01 X+19.9 Y+0.308 +N7162 G01 X+23.642 Y+0.225 +N7164 G01 X+27.346 Y-0.024 +N7166 G01 X+31.173 Y-0.457 +N7168 G01 X+34.877 Y-1.047 +N7170 G01 X+35.077 Y-1.084 +N7172 G01 X+38.759 Y-1.091 +N7174 G02 X+38.909 Y-1.241 I+0 J-0.15 +N7176 G01 X+38.904 Y-4.898 +N7178 G01 X+39.493 Y-8.58 +N7180 G01 X+39.934 Y-12.42 +N7182 G01 X+40.187 Y-16.039 +N7184 G01 X+40.28 Y-19.815 +N7186 G01 X+40.196 Y-23.642 +N7188 G01 X+39.951 Y-27.249 +N7190 G01 X+39.519 Y-31.049 +N7192 G01 X+38.902 Y-34.877 +N7194 G01 X+38.865 Y-35.076 +N7196 G01 X+38.857 Y-38.707 +N7198 G02 X+38.707 Y-38.857 I-0.15 J+0 +N7200 G01 X+35.135 Y-38.852 +N7202 G01 X+31.049 Y-39.503 +N7204 G01 X+27.346 Y-39.922 +N7206 G01 X+23.642 Y-40.172 +N7208 G01 X+19.815 Y-40.252 +N7210 G01 X+16.111 Y-40.155 +N7212 G01 X+12.42 Y-39.887 +N7214 G01 X+8.827 Y-39.461 +N7216 G01 X+5.123 Y-38.851 +N7218 G01 X+4.924 Y-38.813 +N7220 G01 X+1.358 Y-38.806 +N7222 G01 X+1.252 Y-38.762 +N7224 G01 X+1.195 Y-38.641 +N7226 G01 X+1.199 Y-35.136 +N7228 G01 X+0.538 Y-31.049 +N7230 G01 X+0.111 Y-27.346 +N7232 G01 X-0.143 Y-23.642 +N7234 G01 X-0.224 Y-19.815 +N7236 G01 X-0.125 Y-16.111 +N7238 G01 X+0.147 Y-12.42 +N7240 G01 X+0.58 Y-8.827 +N7242 G01 X+1.2 Y-5.123 +N7244 G01 X+1.239 Y-4.889 +N7246 G01 X+1.246 Y-1.396 +N7248 G02 X+1.396 Y-1.246 I+0.15 J+0 +N7250 G01 X+4.897 Y-1.251 +N7252 G01 X+8.704 Y-0.614 +N7254 G01 X+12.407 Y-0.169 +N7256 G01 X+16.111 Y+0.102 +N7258 G01 X+19.673 Y+0.196 +N7260 G01 X+23.395 Y+0.119 +N7262 G01 X+27.099 Y-0.135 +N7264 G01 X+30.647 Y-0.546 +N7266 G01 X+34.383 Y-1.156 +N7268 G01 X+35.076 Y-1.29 +N7270 G01 X+38.518 Y-1.298 +N7272 G01 X+38.624 Y-1.342 +N7274 G01 X+38.658 Y-1.376 +N7276 G01 X+38.702 Y-1.482 +N7278 G01 X+38.696 Y-4.897 +N7280 G01 X+39.325 Y-8.58 +N7282 G01 X+39.771 Y-12.16 +N7284 G01 X+40.05 Y-15.741 +N7286 G01 X+40.162 Y-19.246 +N7288 G01 X+40.112 Y-22.781 +N7290 G01 X+39.893 Y-26.366 +N7292 G01 X+39.503 Y-29.951 +N7294 G01 X+38.924 Y-33.642 +N7296 G01 X+38.649 Y-35.076 +N7298 G01 X+38.641 Y-38.491 +N7300 G02 X+38.491 Y-38.641 I-0.15 J+0 +N7302 G01 X+35.136 Y-38.636 +N7304 G01 X+31.296 Y-39.294 +N7306 G01 X+27.593 Y-39.755 +N7308 G01 X+23.889 Y-40.035 +N7310 G01 X+20.327 Y-40.132 +N7312 G01 X+16.605 Y-40.052 +N7314 G01 X+12.901 Y-39.788 +N7316 G01 X+9.444 Y-39.375 +N7318 G01 X+5.864 Y-38.775 +N7320 G01 X+4.924 Y-38.588 +N7322 G01 X+1.605 Y-38.58 +N7324 G01 X+1.499 Y-38.536 +N7326 G01 X+1.464 Y-38.501 +N7328 G01 X+1.42 Y-38.395 +N7330 G01 X+1.425 Y-35.137 +N7332 G01 X+0.754 Y-31.296 +N7334 G01 X+0.285 Y-27.593 +N7336 G01 X+0 Y-23.889 +N7338 G01 X-0.098 Y-20.432 +N7340 G01 X-0.034 Y-16.975 +N7342 G01 X+0.193 Y-13.519 +N7344 G01 X+0.602 Y-9.938 +N7346 G01 X+1.182 Y-6.39 +N7348 G01 X+1.473 Y-4.891 +N7350 G01 X+1.481 Y-1.631 +N7352 G02 X+1.631 Y-1.481 I+0.15 J+0 +N7354 G01 X+4.896 Y-1.486 +N7356 G01 X+8.418 Y-0.848 +N7358 G01 X+11.914 Y-0.378 +N7360 G01 X+15.493 Y-0.071 +N7362 G01 X+19.045 Y+0.06 +N7364 G01 X+22.531 Y+0.019 +N7366 G01 X+25.988 Y-0.188 +N7368 G01 X+29.568 Y-0.579 +N7370 G01 X+33.125 Y-1.147 +N7372 G01 X+35.076 Y-1.533 +N7374 G01 X+38.271 Y-1.541 +N7376 G01 X+38.377 Y-1.585 +N7378 G01 X+38.415 Y-1.623 +N7380 G01 X+38.458 Y-1.729 +N7382 G01 X+38.453 Y-4.896 +N7384 G01 X+39.09 Y-8.333 +N7386 G01 X+39.567 Y-11.79 +N7388 G01 X+39.873 Y-15.172 +N7390 G01 X+40.02 Y-18.618 +N7392 G01 X+39.998 Y-22.16 +N7394 G01 X+39.805 Y-25.617 +N7396 G01 X+39.426 Y-29.198 +N7398 G01 X+38.886 Y-32.654 +N7400 G01 X+38.406 Y-35.076 +N7402 G01 X+38.398 Y-38.248 +N7404 G02 X+38.248 Y-38.398 I-0.15 J+0 +N7406 G01 X+35.137 Y-38.393 +N7408 G01 X+31.296 Y-39.1 +N7410 G01 X+27.84 Y-39.568 +N7412 G01 X+24.259 Y-39.874 +N7414 G01 X+20.679 Y-39.997 +N7416 G01 X+17.222 Y-39.942 +N7418 G01 X+13.765 Y-39.714 +N7420 G01 X+10.432 Y-39.332 +N7422 G01 X+6.875 Y-38.745 +N7424 G01 X+4.925 Y-38.345 +N7426 G01 X+1.852 Y-38.337 +N7428 G01 X+1.746 Y-38.293 +N7430 G01 X+1.707 Y-38.254 +N7432 G01 X+1.663 Y-38.148 +N7434 G01 X+1.668 Y-35.138 +N7436 G01 X+0.949 Y-31.296 +N7438 G01 X+0.473 Y-27.84 +N7440 G01 X+0.161 Y-24.259 +N7442 G01 X+0.036 Y-20.679 +N7444 G01 X+0.093 Y-17.222 +N7446 G01 X+0.323 Y-13.765 +N7448 G01 X+0.712 Y-10.432 +N7450 G01 X+1.266 Y-7.099 +N7452 G01 X+1.716 Y-4.891 +N7454 G01 X+1.724 Y-1.874 +N7456 G02 X+1.874 Y-1.724 I+0.15 J+0 +N7458 G01 X+4.895 Y-1.729 +N7460 G01 X+8.418 Y-1.045 +N7462 G01 X+11.79 Y-0.557 +N7464 G01 X+15.247 Y-0.229 +N7466 G01 X+18.704 Y-0.078 +N7468 G01 X+22.16 Y-0.103 +N7470 G01 X+25.617 Y-0.306 +N7472 G01 X+29.04 Y-0.683 +N7474 G01 X+32.407 Y-1.225 +N7476 G01 X+35.075 Y-1.777 +N7478 G01 X+38.066 Y-1.79 +N7480 G02 X+38.215 Y-1.94 I-0.001 J-0.15 +N7482 G01 X+38.21 Y-4.895 +N7484 G01 X+38.891 Y-8.333 +N7486 G01 X+39.402 Y-11.79 +N7488 G01 X+39.729 Y-15.172 +N7490 G01 X+39.887 Y-18.618 +N7492 G01 X+39.87 Y-21.924 +N7494 G01 X+39.677 Y-25.377 +N7496 G01 X+39.32 Y-28.704 +N7498 G01 X+38.767 Y-32.168 +N7500 G01 X+38.162 Y-35.075 +N7502 G01 X+38.154 Y-38.004 +N7504 G02 X+38.004 Y-38.154 I-0.15 J+0 +N7506 G01 X+35.138 Y-38.15 +N7508 G01 X+31.296 Y-38.906 +N7510 G01 X+27.84 Y-39.406 +N7512 G01 X+24.507 Y-39.716 +N7514 G01 X+21.181 Y-39.857 +N7516 G01 X+17.84 Y-39.83 +N7518 G01 X+14.383 Y-39.62 +N7520 G01 X+10.96 Y-39.231 +N7522 G01 X+7.593 Y-38.671 +N7524 G01 X+4.925 Y-38.101 +N7526 G01 X+2.056 Y-38.087 +N7528 G02 X+1.907 Y-37.937 I+0.001 J+0.15 +N7530 G01 X+1.911 Y-35.138 +N7532 G01 X+1.143 Y-31.296 +N7534 G01 X+0.635 Y-27.84 +N7536 G01 X+0.32 Y-24.507 +N7538 G01 X+0.178 Y-21.296 +N7540 G01 X+0.196 Y-18.086 +N7542 G01 X+0.375 Y-14.877 +N7544 G01 X+0.732 Y-11.543 +N7546 G01 X+1.241 Y-8.333 +N7548 G01 X+1.959 Y-4.925 +N7550 G01 X+1.967 Y-2.117 +N7552 G02 X+2.118 Y-1.968 I+0.15 J-0.001 +N7554 G01 X+4.894 Y-1.972 +N7556 G01 X+8.191 Y-1.284 +N7558 G01 X+11.524 Y-0.757 +N7560 G01 X+14.877 Y-0.401 +N7562 G01 X+18.076 Y-0.227 +N7564 G01 X+21.296 Y-0.213 +N7566 G01 X+24.506 Y-0.364 +N7568 G01 X+27.84 Y-0.693 +N7570 G01 X+31.173 Y-1.2 +N7572 G01 X+34.383 Y-1.856 +N7574 G01 X+35.073 Y-2.02 +N7576 G01 X+37.822 Y-2.036 +N7578 G02 X+37.972 Y-2.187 I+0 J-0.15 +N7580 G01 X+37.967 Y-4.894 +N7582 G01 X+38.693 Y-8.333 +N7584 G01 X+39.204 Y-11.543 +N7586 G01 X+39.563 Y-14.877 +N7588 G01 X+39.74 Y-18.086 +N7590 G01 X+39.753 Y-21.296 +N7592 G01 X+39.6 Y-24.507 +N7594 G01 X+39.266 Y-27.84 +N7596 G01 X+38.774 Y-31.049 +N7598 G01 X+38.085 Y-34.383 +N7600 G01 X+37.92 Y-35.073 +N7602 G01 X+37.911 Y-37.761 +N7604 G02 X+37.761 Y-37.911 I-0.15 J+0 +N7606 G01 X+35.139 Y-37.907 +N7608 G01 X+31.582 Y-38.658 +N7610 G01 X+28.21 Y-39.196 +N7612 G01 X+25 Y-39.536 +N7614 G01 X+21.667 Y-39.714 +N7616 G01 X+18.333 Y-39.711 +N7618 G01 X+15.172 Y-39.54 +N7620 G01 X+12.037 Y-39.209 +N7622 G01 X+8.827 Y-38.703 +N7624 G01 X+5.617 Y-38.027 +N7626 G01 X+4.927 Y-37.859 +N7628 G01 X+2.299 Y-37.84 +N7630 G02 X+2.15 Y-37.69 I+0.001 J+0.15 +N7632 G01 X+2.154 Y-35.14 +N7634 G01 X+1.391 Y-31.582 +N7636 G01 X+0.846 Y-28.21 +N7638 G01 X+0.5 Y-25 +N7640 G01 X+0.32 Y-21.667 +N7642 G01 X+0.323 Y-18.333 +N7644 G01 X+0.496 Y-15.172 +N7646 G01 X+0.832 Y-12.037 +N7648 G01 X+1.345 Y-8.827 +N7650 G01 X+2.031 Y-5.617 +N7652 G01 X+2.202 Y-4.893 +N7654 G01 X+2.211 Y-2.361 +N7656 G02 X+2.361 Y-2.211 I+0.15 J+0 +N7658 G01 X+4.893 Y-2.215 +N7660 G01 X+8.086 Y-1.505 +N7662 G01 X+11.296 Y-0.956 +N7664 G01 X+14.623 Y-0.569 +N7666 G01 X+17.84 Y-0.368 +N7668 G01 X+21.049 Y-0.342 +N7670 G01 X+24.259 Y-0.488 +N7672 G01 X+27.58 Y-0.822 +N7674 G01 X+30.926 Y-1.347 +N7676 G01 X+34.136 Y-2.03 +N7678 G01 X+35.073 Y-2.263 +N7680 G01 X+37.579 Y-2.283 +N7682 G02 X+37.728 Y-2.433 I-0.001 J-0.15 +N7684 G01 X+37.725 Y-4.893 +N7686 G01 X+38.445 Y-8.086 +N7688 G01 X+39.002 Y-11.296 +N7690 G01 X+39.396 Y-14.63 +N7692 G01 X+39.595 Y-17.761 +N7694 G01 X+39.627 Y-20.955 +N7696 G01 X+39.482 Y-24.187 +N7698 G01 X+39.18 Y-27.249 +N7700 G01 X+38.718 Y-30.309 +N7702 G01 X+38.088 Y-33.395 +N7704 G01 X+37.676 Y-35.072 +N7706 G01 X+37.668 Y-37.518 +N7708 G02 X+37.518 Y-37.668 I-0.15 J+0 +N7710 G01 X+35.14 Y-37.664 +N7712 G01 X+31.582 Y-38.461 +N7714 G01 X+28.476 Y-38.992 +N7716 G01 X+25.377 Y-39.358 +N7718 G01 X+22.16 Y-39.564 +N7720 G01 X+18.951 Y-39.592 +N7722 G01 X+15.741 Y-39.442 +N7724 G01 X+12.654 Y-39.129 +N7726 G01 X+9.444 Y-38.627 +N7728 G01 X+6.111 Y-37.916 +N7730 G01 X+4.928 Y-37.615 +N7732 G01 X+2.542 Y-37.594 +N7734 G02 X+2.393 Y-37.443 I+0.001 J+0.15 +N7736 G01 X+2.397 Y-35.14 +N7738 G01 X+1.589 Y-31.582 +N7740 G01 X+1.05 Y-28.476 +N7742 G01 X+0.678 Y-25.377 +N7744 G01 X+0.469 Y-22.16 +N7746 G01 X+0.442 Y-18.951 +N7748 G01 X+0.594 Y-15.741 +N7750 G01 X+0.911 Y-12.654 +N7752 G01 X+1.42 Y-9.444 +N7754 G01 X+2.074 Y-6.39 +N7756 G01 X+2.446 Y-4.894 +N7758 G01 X+2.454 Y-2.604 +N7760 G02 X+2.604 Y-2.454 I+0.15 J+0 +N7762 G01 X+4.892 Y-2.458 +N7764 G01 X+8.086 Y-1.706 +N7766 G01 X+11.296 Y-1.125 +N7768 G01 X+14.383 Y-0.738 +N7770 G01 X+17.469 Y-0.518 +N7772 G01 X+20.527 Y-0.467 +N7774 G01 X+23.642 Y-0.586 +N7776 G01 X+26.806 Y-0.883 +N7778 G01 X+29.815 Y-1.331 +N7780 G01 X+32.901 Y-1.96 +N7782 G01 X+35.073 Y-2.507 +N7784 G01 X+37.336 Y-2.53 +N7786 G02 X+37.485 Y-2.68 I-0.001 J-0.15 +N7788 G01 X+37.482 Y-4.892 +N7790 G01 X+38.244 Y-8.086 +N7792 G01 X+38.815 Y-11.186 +N7794 G01 X+39.217 Y-14.299 +N7796 G01 X+39.448 Y-17.469 +N7798 G01 X+39.498 Y-20.679 +N7800 G01 X+39.38 Y-23.642 +N7802 G01 X+39.088 Y-26.728 +N7804 G01 X+38.64 Y-29.725 +N7806 G01 X+37.986 Y-32.901 +N7808 G01 X+37.433 Y-35.072 +N7810 G01 X+37.425 Y-37.275 +N7812 G02 X+37.274 Y-37.424 I-0.15 J+0.001 +N7814 G01 X+35.141 Y-37.421 +N7816 G01 X+31.809 Y-38.216 +N7818 G01 X+28.704 Y-38.79 +N7820 G01 X+25.617 Y-39.188 +N7822 G01 X+22.531 Y-39.414 +N7824 G01 X+19.473 Y-39.467 +N7826 G01 X+16.358 Y-39.345 +N7828 G01 X+13.42 Y-39.068 +N7830 G01 X+10.432 Y-38.623 +N7832 G01 X+7.355 Y-37.993 +N7834 G01 X+4.928 Y-37.372 +N7836 G01 X+2.785 Y-37.347 +N7838 G02 X+2.637 Y-37.197 I+0.002 J+0.15 +N7840 G01 X+2.64 Y-35.142 +N7842 G01 X+1.834 Y-31.809 +N7844 G01 X+1.252 Y-28.704 +N7846 G01 X+0.849 Y-25.617 +N7848 G01 X+0.62 Y-22.531 +N7850 G01 X+0.567 Y-19.473 +N7852 G01 X+0.69 Y-16.358 +N7854 G01 X+0.971 Y-13.42 +N7856 G01 X+1.421 Y-10.432 +N7858 G01 X+2.06 Y-7.355 +N7860 G01 X+2.689 Y-4.895 +N7862 G01 X+2.697 Y-2.847 +N7864 G02 X+2.848 Y-2.698 I+0.15 J-0.001 +N7866 G01 X+4.891 Y-2.701 +N7868 G01 X+8.086 Y-1.907 +N7870 G01 X+11.296 Y-1.295 +N7872 G01 X+14.383 Y-0.886 +N7874 G01 X+17.469 Y-0.654 +N7876 G01 X+20.527 Y-0.6 +N7878 G01 X+23.642 Y-0.724 +N7880 G01 X+26.58 Y-1.009 +N7882 G01 X+29.568 Y-1.465 +N7884 G01 X+32.645 Y-2.112 +N7886 G01 X+35.071 Y-2.75 +N7888 G01 X+37.092 Y-2.757 +N7890 G02 X+37.242 Y-2.908 I+0 J-0.15 +N7892 G01 X+37.239 Y-4.891 +N7894 G01 X+38.044 Y-8.086 +N7896 G01 X+38.646 Y-11.186 +N7898 G01 X+39.07 Y-14.299 +N7900 G01 X+39.301 Y-17.222 +N7902 G01 X+39.372 Y-20.1 +N7904 G01 X+39.283 Y-23.025 +N7906 G01 X+39.008 Y-26.139 +N7908 G01 X+38.56 Y-29.198 +N7910 G01 X+37.952 Y-32.168 +N7912 G01 X+37.194 Y-35.071 +N7914 G01 X+37.186 Y-37.036 +N7916 G02 X+37.036 Y-37.186 I-0.15 J+0 +N7918 G01 X+35.142 Y-37.183 +N7920 G01 X+31.809 Y-38.02 +N7922 G01 X+28.704 Y-38.625 +N7924 G01 X+25.617 Y-39.045 +N7926 G01 X+22.531 Y-39.282 +N7928 G01 X+19.568 Y-39.339 +N7930 G01 X+16.605 Y-39.228 +N7932 G01 X+13.519 Y-38.932 +N7934 G01 X+10.432 Y-38.452 +N7936 G01 X+7.355 Y-37.79 +N7938 G01 X+4.929 Y-37.138 +N7940 G01 X+3.02 Y-37.13 +N7942 G02 X+2.87 Y-36.98 I+0 J+0.15 +N7944 G01 X+2.873 Y-35.142 +N7946 G01 X+2.026 Y-31.809 +N7948 G01 X+1.414 Y-28.704 +N7950 G01 X+0.989 Y-25.617 +N7952 G01 X+0.749 Y-22.531 +N7954 G01 X+0.691 Y-19.568 +N7956 G01 X+0.804 Y-16.605 +N7958 G01 X+1.103 Y-13.519 +N7960 G01 X+1.588 Y-10.432 +N7962 G01 X+2.258 Y-7.355 +N7964 G01 X+2.918 Y-4.896 +N7966 G01 X+2.926 Y-3.087 +N7968 G01 X+2.97 Y-2.981 +N7970 G01 X+3.087 Y-2.927 +N7972 G01 X+4.89 Y-2.93 +N7974 G01 X+7.832 Y-2.156 +N7976 G01 X+10.802 Y-1.539 +N7978 G01 X+13.861 Y-1.084 +N7980 G01 X+16.728 Y-0.822 +N7982 G01 X+19.673 Y-0.721 +N7984 G01 X+22.778 Y-0.798 +N7986 G01 X+25.701 Y-1.045 +N7988 G01 X+28.704 Y-1.473 +N7990 G01 X+31.667 Y-2.071 +N7992 G01 X+34.63 Y-2.844 +N7994 G01 X+35.069 Y-2.973 +N7996 G01 X+35.112 Y-2.98 +N7998 G01 X+36.868 Y-2.982 +N8000 G02 X+37.018 Y-3.132 I+0 J-0.15 +N8002 G01 X+37.015 Y-4.89 +N8004 G01 X+37.8 Y-7.84 +N8006 G01 X+38.45 Y-10.96 +N8008 G01 X+38.901 Y-14.012 +N8010 G01 X+39.158 Y-16.902 +N8012 G01 X+39.251 Y-19.815 +N8014 G01 X+39.172 Y-22.781 +N8016 G01 X+38.933 Y-25.617 +N8018 G01 X+38.491 Y-28.704 +N8020 G01 X+37.906 Y-31.582 +N8022 G01 X+37.106 Y-34.63 +N8024 G01 X+36.975 Y-35.069 +N8026 G01 X+36.969 Y-35.112 +N8028 G01 X+36.967 Y-36.79 +N8030 G01 X+36.923 Y-36.896 +N8032 G01 X+36.79 Y-36.966 +N8034 G01 X+35.143 Y-36.964 +N8036 G01 X+31.914 Y-37.816 +N8038 G01 X+28.951 Y-38.43 +N8040 G01 X+25.864 Y-38.884 +N8042 G01 X+22.781 Y-39.148 +N8044 G01 X+19.815 Y-39.222 +N8046 G01 X+16.975 Y-39.129 +N8048 G01 X+14.012 Y-38.858 +N8050 G01 X+11.186 Y-38.435 +N8052 G01 X+8.333 Y-37.844 +N8054 G01 X+5.37 Y-37.056 +N8056 G01 X+4.931 Y-36.924 +N8058 G01 X+4.888 Y-36.917 +N8060 G01 X+3.235 Y-36.915 +N8062 G02 X+3.085 Y-36.765 I+0 J+0.15 +N8064 G01 X+3.088 Y-35.143 +N8066 G01 X+2.227 Y-31.914 +N8068 G01 X+1.607 Y-28.951 +N8070 G01 X+1.148 Y-25.864 +N8072 G01 X+0.895 Y-23.025 +N8074 G01 X+0.805 Y-20.1 +N8076 G01 X+0.886 Y-17.222 +N8078 G01 X+1.129 Y-14.383 +N8080 G01 X+1.538 Y-11.543 +N8082 G01 X+2.139 Y-8.58 +N8084 G01 X+2.92 Y-5.617 +N8086 G01 X+3.128 Y-4.896 +N8088 G01 X+3.134 Y-4.856 +N8090 G01 X+3.147 Y-3.286 +N8092 G02 X+3.297 Y-3.137 I+0.15 J-0.001 +N8094 G01 X+4.89 Y-3.139 +N8096 G01 X+4.93 Y-3.134 +N8098 G01 X+7.832 Y-2.332 +N8100 G01 X+10.802 Y-1.688 +N8102 G01 X+13.634 Y-1.242 +N8104 G01 X+16.605 Y-0.948 +N8106 G01 X+19.568 Y-0.834 +N8108 G01 X+22.531 Y-0.9 +N8110 G01 X+25.37 Y-1.133 +N8112 G01 X+28.21 Y-1.531 +N8114 G01 X+31.173 Y-2.124 +N8116 G01 X+34.136 Y-2.898 +N8118 G01 X+35.069 Y-3.179 +N8120 G01 X+35.112 Y-3.186 +N8122 G01 X+36.662 Y-3.188 +N8124 G02 X+36.812 Y-3.338 I+0 J-0.15 +N8126 G01 X+36.81 Y-4.889 +N8128 G01 X+36.815 Y-4.93 +N8130 G01 X+37.627 Y-7.84 +N8132 G01 X+38.252 Y-10.679 +N8134 G01 X+38.712 Y-13.519 +N8136 G01 X+39.005 Y-16.358 +N8138 G01 X+39.133 Y-19.246 +N8140 G01 X+39.089 Y-22.16 +N8142 G01 X+38.876 Y-25 +N8144 G01 X+38.496 Y-27.84 +N8146 G01 X+37.92 Y-30.802 +N8148 G01 X+37.197 Y-33.642 +N8150 G01 X+36.769 Y-35.069 +N8152 G01 X+36.763 Y-35.112 +N8154 G01 X+36.761 Y-36.611 +N8156 G02 X+36.61 Y-36.76 I-0.15 J+0.001 +N8158 G01 X+35.144 Y-36.758 +N8160 G01 X+35.104 Y-36.764 +N8162 G01 X+31.914 Y-37.646 +N8164 G01 X+28.951 Y-38.285 +N8166 G01 X+26.139 Y-38.723 +N8168 G01 X+23.324 Y-38.998 +N8170 G01 X+20.432 Y-39.11 +N8172 G01 X+17.469 Y-39.042 +N8174 G01 X+14.63 Y-38.805 +N8176 G01 X+11.79 Y-38.399 +N8178 G01 X+8.827 Y-37.795 +N8180 G01 X+5.864 Y-37.005 +N8182 G01 X+4.932 Y-36.718 +N8184 G01 X+4.888 Y-36.711 +N8186 G01 X+3.457 Y-36.709 +N8188 G01 X+3.351 Y-36.665 +N8190 G01 X+3.291 Y-36.543 +N8192 G01 X+3.293 Y-35.144 +N8194 G01 X+3.288 Y-35.104 +N8196 G01 X+2.397 Y-31.914 +N8198 G01 X+1.752 Y-28.951 +N8200 G01 X+1.309 Y-26.139 +N8202 G01 X+1.031 Y-23.324 +N8204 G01 X+0.918 Y-20.432 +N8206 G01 X+0.987 Y-17.469 +N8208 G01 X+1.226 Y-14.63 +N8210 G01 X+1.636 Y-11.79 +N8212 G01 X+2.246 Y-8.827 +N8214 G01 X+3.044 Y-5.864 +N8216 G01 X+3.334 Y-4.898 +N8218 G01 X+3.34 Y-4.855 +N8220 G01 X+3.342 Y-3.493 +N8222 G02 X+3.493 Y-3.343 I+0.15 J+0 +N8224 G01 X+4.889 Y-3.345 +N8226 G01 X+4.93 Y-3.339 +N8228 G01 X+7.832 Y-2.505 +N8230 G01 X+10.802 Y-1.835 +N8232 G01 X+13.634 Y-1.37 +N8234 G01 X+16.605 Y-1.065 +N8236 G01 X+19.568 Y-0.946 +N8238 G01 X+22.531 Y-1.015 +N8240 G01 X+25.37 Y-1.257 +N8242 G01 X+28.21 Y-1.671 +N8244 G01 X+31.173 Y-2.287 +N8246 G01 X+34.136 Y-3.092 +N8248 G01 X+35.068 Y-3.385 +N8250 G01 X+35.113 Y-3.392 +N8252 G01 X+36.42 Y-3.394 +N8254 G01 X+36.525 Y-3.438 +N8256 G01 X+36.562 Y-3.474 +N8258 G01 X+36.606 Y-3.581 +N8260 G01 X+36.604 Y-4.889 +N8262 G01 X+36.609 Y-4.931 +N8264 G01 X+37.453 Y-7.84 +N8266 G01 X+38.102 Y-10.679 +N8268 G01 X+38.566 Y-13.42 +N8270 G01 X+38.885 Y-16.358 +N8272 G01 X+39.019 Y-19.246 +N8274 G01 X+38.972 Y-22.16 +N8276 G01 X+38.75 Y-25 +N8278 G01 X+38.354 Y-27.84 +N8280 G01 X+37.754 Y-30.802 +N8282 G01 X+37 Y-33.642 +N8284 G01 X+36.554 Y-35.068 +N8286 G01 X+36.547 Y-35.113 +N8288 G01 X+36.545 Y-36.395 +N8290 G02 X+36.395 Y-36.545 I-0.15 J+0 +N8292 G01 X+35.145 Y-36.543 +N8294 G01 X+35.103 Y-36.549 +N8296 G01 X+31.914 Y-37.466 +N8298 G01 X+28.951 Y-38.131 +N8300 G01 X+26.139 Y-38.588 +N8302 G01 X+23.395 Y-38.87 +N8304 G01 X+20.679 Y-38.987 +N8306 G01 X+17.84 Y-38.938 +N8308 G01 X+14.877 Y-38.7 +N8310 G01 X+12.16 Y-38.313 +N8312 G01 X+9.353 Y-37.743 +N8314 G01 X+6.605 Y-37.018 +N8316 G01 X+4.932 Y-36.493 +N8318 G01 X+4.887 Y-36.486 +N8320 G01 X+3.704 Y-36.484 +N8322 G01 X+3.598 Y-36.44 +N8324 G01 X+3.56 Y-36.402 +N8326 G01 X+3.516 Y-36.296 +N8328 G01 X+3.518 Y-35.145 +N8330 G01 X+3.512 Y-35.103 +N8332 G01 X+2.584 Y-31.914 +N8334 G01 X+1.912 Y-28.951 +N8336 G01 X+1.45 Y-26.139 +N8338 G01 X+1.165 Y-23.395 +N8340 G01 X+1.047 Y-20.679 +N8342 G01 X+1.095 Y-17.84 +N8344 G01 X+1.336 Y-14.877 +N8346 G01 X+1.727 Y-12.16 +N8348 G01 X+2.304 Y-9.353 +N8350 G01 X+3.037 Y-6.605 +N8352 G01 X+3.568 Y-4.898 +N8354 G01 X+3.575 Y-4.854 +N8356 G01 X+3.577 Y-3.727 +N8358 G02 X+3.727 Y-3.577 I+0.15 J+0 +N8360 G01 X+4.888 Y-3.579 +N8362 G01 X+4.931 Y-3.573 +N8364 G01 X+7.832 Y-2.703 +N8366 G01 X+10.802 Y-2.003 +N8368 G01 X+13.519 Y-1.535 +N8370 G01 X+16.358 Y-1.219 +N8372 G01 X+19.045 Y-1.085 +N8374 G01 X+21.914 Y-1.118 +N8376 G01 X+24.753 Y-1.331 +N8378 G01 X+27.58 Y-1.724 +N8380 G01 X+30.297 Y-2.269 +N8382 G01 X+33.125 Y-3.013 +N8384 G01 X+35.068 Y-3.629 +N8386 G01 X+35.113 Y-3.636 +N8388 G01 X+36.213 Y-3.641 +N8390 G02 X+36.362 Y-3.791 I-0.001 J-0.15 +N8392 G01 X+36.361 Y-4.888 +N8394 G01 X+36.367 Y-4.931 +N8396 G01 X+37.249 Y-7.84 +N8398 G01 X+37.928 Y-10.679 +N8400 G01 X+38.413 Y-13.42 +N8402 G01 X+38.726 Y-16.111 +N8404 G01 X+38.88 Y-18.951 +N8406 G01 X+38.859 Y-21.667 +N8408 G01 X+38.658 Y-24.507 +N8410 G01 X+38.292 Y-27.249 +N8412 G01 X+37.765 Y-29.951 +N8414 G01 X+37.071 Y-32.654 +N8416 G01 X+36.31 Y-35.068 +N8418 G01 X+36.304 Y-35.113 +N8420 G01 X+36.302 Y-36.152 +N8422 G02 X+36.152 Y-36.302 I-0.15 J+0 +N8424 G01 X+35.146 Y-36.3 +N8426 G01 X+35.102 Y-36.306 +N8428 G01 X+31.914 Y-37.265 +N8430 G01 X+29.198 Y-37.91 +N8432 G01 X+26.481 Y-38.389 +N8434 G01 X+23.642 Y-38.712 +N8436 G01 X+20.955 Y-38.849 +N8438 G01 X+18.086 Y-38.815 +N8440 G01 X+15.247 Y-38.597 +N8442 G01 X+12.42 Y-38.196 +N8444 G01 X+9.703 Y-37.639 +N8446 G01 X+6.875 Y-36.879 +N8448 G01 X+4.932 Y-36.25 +N8450 G01 X+4.887 Y-36.242 +N8452 G01 X+3.908 Y-36.236 +N8454 G02 X+3.759 Y-36.085 I+0.001 J+0.15 +N8456 G01 X+3.761 Y-35.146 +N8458 G01 X+3.755 Y-35.102 +N8460 G01 X+2.786 Y-31.914 +N8462 G01 X+2.133 Y-29.198 +N8464 G01 X+1.649 Y-26.481 +N8466 G01 X+1.323 Y-23.642 +N8468 G01 X+1.184 Y-20.955 +N8470 G01 X+1.219 Y-18.086 +N8472 G01 X+1.439 Y-15.247 +N8474 G01 X+1.844 Y-12.42 +N8476 G01 X+2.407 Y-9.703 +N8478 G01 X+3.175 Y-6.875 +N8480 G01 X+3.811 Y-4.899 +N8482 G01 X+3.818 Y-4.853 +N8484 G01 X+3.82 Y-3.97 +N8486 G02 X+3.97 Y-3.82 I+0.15 J+0 +N8488 G01 X+4.887 Y-3.822 +N8490 G01 X+4.932 Y-3.815 +N8492 G01 X+7.832 Y-2.907 +N8494 G01 X+10.556 Y-2.23 +N8496 G01 X+13.272 Y-1.725 +N8498 G01 X+16.111 Y-1.379 +N8500 G01 X+18.819 Y-1.223 +N8502 G01 X+21.667 Y-1.241 +N8504 G01 X+24.506 Y-1.448 +N8506 G01 X+27.346 Y-1.842 +N8508 G01 X+30.062 Y-2.396 +N8510 G01 X+32.901 Y-3.16 +N8512 G01 X+35.068 Y-3.872 +N8514 G01 X+35.113 Y-3.879 +N8516 G01 X+35.971 Y-3.887 +N8518 G02 X+36.119 Y-4.038 I-0.002 J-0.15 +N8520 G01 X+36.118 Y-4.887 +N8522 G01 X+36.125 Y-4.932 +N8524 G01 X+37.045 Y-7.84 +N8526 G01 X+37.753 Y-10.679 +N8528 G01 X+38.259 Y-13.42 +N8530 G01 X+38.579 Y-16.039 +N8532 G01 X+38.741 Y-18.704 +N8534 G01 X+38.73 Y-21.543 +N8536 G01 X+38.549 Y-24.187 +N8538 G01 X+38.172 Y-27.022 +N8540 G01 X+37.637 Y-29.725 +N8542 G01 X+36.934 Y-32.407 +N8544 G01 X+36.067 Y-35.067 +N8546 G01 X+36.06 Y-35.114 +N8548 G01 X+36.059 Y-35.909 +N8550 G02 X+35.908 Y-36.058 I-0.15 J+0.001 +N8552 G01 X+35.147 Y-36.057 +N8554 G01 X+35.101 Y-36.064 +N8556 G01 X+31.914 Y-37.064 +N8558 G01 X+29.198 Y-37.737 +N8560 G01 X+26.481 Y-38.237 +N8562 G01 X+23.642 Y-38.573 +N8564 G01 X+20.955 Y-38.716 +N8566 G01 X+18.333 Y-38.692 +N8568 G01 X+15.494 Y-38.48 +N8570 G01 X+12.654 Y-38.078 +N8572 G01 X+9.938 Y-37.513 +N8574 G01 X+7.099 Y-36.733 +N8576 G01 X+4.932 Y-36.006 +N8578 G01 X+4.887 Y-35.999 +N8580 G01 X+4.151 Y-35.99 +N8582 G02 X+4.003 Y-35.839 I+0.002 J+0.15 +N8584 G01 X+4.004 Y-35.147 +N8586 G01 X+3.997 Y-35.101 +N8588 G01 X+2.987 Y-31.914 +N8590 G01 X+2.307 Y-29.198 +N8592 G01 X+1.802 Y-26.481 +N8594 G01 X+1.462 Y-23.642 +N8596 G01 X+1.317 Y-20.955 +N8598 G01 X+1.342 Y-18.333 +N8600 G01 X+1.528 Y-15.741 +N8602 G01 X+1.919 Y-12.901 +N8604 G01 X+2.474 Y-10.185 +N8606 G01 X+3.242 Y-7.355 +N8608 G01 X+4.054 Y-4.899 +N8610 G01 X+4.062 Y-4.853 +N8612 G01 X+4.063 Y-4.213 +N8614 G02 X+4.214 Y-4.064 I+0.15 J-0.001 +N8616 G01 X+4.886 Y-4.065 +N8618 G01 X+4.933 Y-4.057 +N8620 G01 X+7.593 Y-3.181 +N8622 G01 X+10.275 Y-2.47 +N8624 G01 X+12.978 Y-1.928 +N8626 G01 X+15.741 Y-1.554 +N8628 G01 X+18.333 Y-1.372 +N8630 G01 X+21.049 Y-1.355 +N8632 G01 X+23.642 Y-1.505 +N8634 G01 X+26.235 Y-1.818 +N8636 G01 X+28.814 Y-2.291 +N8638 G01 X+31.42 Y-2.934 +N8640 G01 X+34.136 Y-3.782 +N8642 G01 X+35.067 Y-4.115 +N8644 G01 X+35.115 Y-4.123 +N8646 G01 X+35.728 Y-4.133 +N8648 G02 X+35.876 Y-4.284 I-0.002 J-0.15 +N8650 G01 X+35.875 Y-4.886 +N8652 G01 X+35.883 Y-4.933 +N8654 G01 X+36.768 Y-7.593 +N8656 G01 X+37.523 Y-10.432 +N8658 G01 X+38.069 Y-13.194 +N8660 G01 X+38.435 Y-15.988 +N8662 G01 X+38.605 Y-18.618 +N8664 G01 X+38.609 Y-21.181 +N8666 G01 X+38.438 Y-23.889 +N8668 G01 X+38.106 Y-26.481 +N8670 G01 X+37.582 Y-29.198 +N8672 G01 X+36.905 Y-31.809 +N8674 G01 X+35.985 Y-34.63 +N8676 G01 X+35.825 Y-35.065 +N8678 G01 X+35.816 Y-35.116 +N8680 G01 X+35.815 Y-35.665 +N8682 G02 X+35.665 Y-35.815 I-0.15 J+0 +N8684 G01 X+35.148 Y-35.814 +N8686 G01 X+35.1 Y-35.822 +N8688 G01 X+32.168 Y-36.787 +N8690 G01 X+29.444 Y-37.507 +N8692 G01 X+26.728 Y-38.043 +N8694 G01 X+23.889 Y-38.412 +N8696 G01 X+21.296 Y-38.575 +N8698 G01 X+18.618 Y-38.569 +N8700 G01 X+16.039 Y-38.396 +N8702 G01 X+13.42 Y-38.052 +N8704 G01 X+10.679 Y-37.509 +N8706 G01 X+8.086 Y-36.824 +N8708 G01 X+5.37 Y-35.926 +N8710 G01 X+4.934 Y-35.764 +N8712 G01 X+4.885 Y-35.755 +N8714 G01 X+4.393 Y-35.744 +N8716 G02 X+4.246 Y-35.594 I+0.003 J+0.15 +N8718 G01 X+4.247 Y-35.148 +N8720 G01 X+4.239 Y-35.1 +N8722 G01 X+3.264 Y-32.168 +N8724 G01 X+2.537 Y-29.444 +N8726 G01 X+1.995 Y-26.728 +N8728 G01 X+1.653 Y-24.187 +N8730 G01 X+1.467 Y-21.543 +N8732 G01 X+1.454 Y-18.951 +N8734 G01 X+1.609 Y-16.358 +N8736 G01 X+1.931 Y-13.765 +N8738 G01 X+2.419 Y-11.186 +N8740 G01 X+3.081 Y-8.58 +N8742 G01 X+3.955 Y-5.864 +N8744 G01 X+4.297 Y-4.901 +N8746 G01 X+4.306 Y-4.851 +N8748 G01 Y-4.456 +N8750 G02 X+4.457 Y-4.307 I+0.15 J-0.001 +N8752 G01 X+4.885 Y-4.308 +N8754 G01 X+4.934 Y-4.299 +N8756 G01 X+7.593 Y-3.388 +N8758 G01 X+10.275 Y-2.649 +N8760 G01 X+12.978 Y-2.084 +N8762 G01 X+15.741 Y-1.696 +N8764 G01 X+18.333 Y-1.505 +N8766 G01 X+21.049 Y-1.488 +N8768 G01 X+23.642 Y-1.644 +N8770 G01 X+26.235 Y-1.969 +N8772 G01 X+28.814 Y-2.462 +N8774 G01 X+31.42 Y-3.13 +N8776 G01 X+34.136 Y-4.012 +N8778 G01 X+35.067 Y-4.358 +N8780 G01 X+35.115 Y-4.367 +N8782 G01 X+35.487 Y-4.378 +N8784 G02 X+35.633 Y-4.528 I-0.004 J-0.15 +N8786 G01 X+35.632 Y-4.885 +N8788 G01 X+35.641 Y-4.934 +N8790 G01 X+36.561 Y-7.593 +N8792 G01 X+37.285 Y-10.185 +N8794 G01 X+37.863 Y-12.901 +N8796 G01 X+38.242 Y-15.494 +N8798 G01 X+38.45 Y-18.086 +N8800 G01 X+38.488 Y-20.679 +N8802 G01 X+38.355 Y-23.272 +N8804 G01 X+38.051 Y-25.864 +N8806 G01 X+37.571 Y-28.476 +N8808 G01 X+36.927 Y-31.049 +N8810 G01 X+36.106 Y-33.642 +N8812 G01 X+35.582 Y-35.065 +N8814 G01 X+35.573 Y-35.117 +N8816 G01 X+35.572 Y-35.422 +N8818 G02 X+35.422 Y-35.572 I-0.15 J+0 +N8820 G01 X+35.149 +N8822 G01 X+35.1 Y-35.58 +N8824 G01 X+32.168 Y-36.583 +N8826 G01 X+29.444 Y-37.331 +N8828 G01 X+26.728 Y-37.889 +N8830 G01 X+24.187 Y-38.241 +N8832 G01 X+21.667 Y-38.428 +N8834 G01 X+18.951 Y-38.446 +N8836 G01 X+16.358 Y-38.287 +N8838 G01 X+13.765 Y-37.955 +N8840 G01 X+11.186 Y-37.453 +N8842 G01 X+8.58 Y-36.772 +N8844 G01 X+5.864 Y-35.873 +N8846 G01 X+4.933 Y-35.52 +N8848 G01 X+4.886 Y-35.511 +N8850 G01 X+4.633 Y-35.5 +N8852 G02 X+4.489 Y-35.35 I+0.006 J+0.15 +N8854 G01 Y-35.149 +N8856 G01 X+4.481 Y-35.1 +N8858 G01 X+3.468 Y-32.168 +N8860 G01 X+2.713 Y-29.444 +N8862 G01 X+2.15 Y-26.728 +N8864 G01 X+1.794 Y-24.187 +N8866 G01 X+1.606 Y-21.667 +N8868 G01 X+1.587 Y-18.951 +N8870 G01 X+1.748 Y-16.358 +N8872 G01 X+2.083 Y-13.765 +N8874 G01 X+2.589 Y-11.186 +N8876 G01 X+3.277 Y-8.58 +N8878 G01 X+4.185 Y-5.864 +N8880 G01 X+4.54 Y-4.902 +N8882 G01 X+4.549 Y-4.85 +N8884 G01 X+4.55 Y-4.7 +N8886 G02 X+4.7 Y-4.55 I+0.15 J+0 +N8888 G01 X+4.884 +N8890 G01 X+4.935 Y-4.542 +N8892 G01 X+7.593 Y-3.595 +N8894 G01 X+10.275 Y-2.827 +N8896 G01 X+12.978 Y-2.241 +N8898 G01 X+15.493 Y-1.865 +N8900 G01 X+18.076 Y-1.652 +N8902 G01 X+20.754 Y-1.613 +N8904 G01 X+23.395 Y-1.759 +N8906 G01 X+25.988 Y-2.08 +N8908 G01 X+28.704 Y-2.606 +N8910 G01 X+31.42 Y-3.326 +N8912 G01 X+34.136 Y-4.242 +N8914 G01 X+35.069 Y-4.602 +N8916 G01 X+35.113 Y-4.612 +N8918 G01 X+35.249 Y-4.621 +N8920 G02 X+35.39 Y-4.77 I-0.009 J-0.149 +N8922 G01 Y-4.884 +N8924 G01 X+35.398 Y-4.935 +N8926 G01 X+36.354 Y-7.593 +N8928 G01 X+37.106 Y-10.185 +N8930 G01 X+37.707 Y-12.901 +N8932 G01 X+38.099 Y-15.494 +N8934 G01 X+38.316 Y-18.086 +N8936 G01 X+38.355 Y-20.679 +N8938 G01 X+38.217 Y-23.272 +N8940 G01 X+37.902 Y-25.864 +N8942 G01 X+37.403 Y-28.476 +N8944 G01 X+36.735 Y-31.049 +N8946 G01 X+35.883 Y-33.642 +N8948 G01 X+35.339 Y-35.064 +N8950 G01 X+35.329 Y-35.118 +N8952 G01 Y-35.179 +N8954 G02 X+35.179 Y-35.329 I-0.15 J+0 +N8956 G01 X+35.099 Y-35.337 +N8958 G01 X+32.168 Y-36.379 +N8960 G01 X+29.444 Y-37.155 +N8962 G01 X+26.728 Y-37.735 +N8964 G01 X+24.259 Y-38.093 +N8966 G01 X+21.667 Y-38.294 +N8968 G01 X+18.951 Y-38.313 +N8970 G01 X+16.358 Y-38.148 +N8972 G01 X+13.765 Y-37.804 +N8974 G01 X+11.296 Y-37.309 +N8976 G01 X+8.58 Y-36.576 +N8978 G01 X+5.864 Y-35.643 +N8980 G01 X+4.936 Y-35.278 +N8982 G01 X+4.882 Y-35.268 +N8984 G02 X+4.732 Y-35.123 I+0 J+0.15 +N8986 G01 X+3.673 Y-32.168 +N8988 G01 X+2.889 Y-29.444 +N8990 G01 X+2.304 Y-26.728 +N8992 G01 X+1.943 Y-24.259 +N8994 G01 X+1.739 Y-21.667 +N8996 G01 X+1.713 Y-19.246 +N8998 G01 X+1.862 Y-16.605 +N9000 G01 X+2.193 Y-14.012 +N9002 G01 X+2.676 Y-11.543 +N9004 G01 X+3.324 Y-9.074 +N9006 G01 X+4.217 Y-6.39 +N9008 G01 X+4.782 Y-4.907 +N9010 G01 X+4.816 Y-4.854 +N9012 G01 X+4.91 Y-4.793 +N9014 G01 X+7.593 Y-3.802 +N9016 G01 X+10.275 Y-3.005 +N9018 G01 X+12.751 Y-2.44 +N9020 G01 X+15.247 Y-2.038 +N9022 G01 X+17.84 Y-1.798 +N9024 G01 X+20.432 Y-1.74 +N9026 G01 X+23.025 Y-1.864 +N9028 G01 X+25.617 Y-2.171 +N9030 G01 X+28.21 Y-2.661 +N9032 G01 X+30.926 Y-3.372 +N9034 G01 X+33.61 Y-4.273 +N9036 G01 X+35.069 Y-4.846 +N9038 G01 X+35.155 Y-4.933 +N9040 G01 X+36.15 Y-7.593 +N9042 G01 X+36.933 Y-10.185 +N9044 G01 X+37.51 Y-12.654 +N9046 G01 X+37.926 Y-15.172 +N9048 G01 X+38.174 Y-17.761 +N9050 G01 X+38.241 Y-20.327 +N9052 G01 X+38.136 Y-22.781 +N9054 G01 X+37.847 Y-25.377 +N9056 G01 X+37.403 Y-27.84 +N9058 G01 X+36.791 Y-30.309 +N9060 G01 X+35.97 Y-32.901 +N9062 G01 X+35.139 Y-35.072 +N9064 G01 X+35.051 Y-35.159 +N9066 G01 X+32.168 Y-36.217 +N9068 G01 X+29.444 Y-37.02 +N9070 G01 X+27.022 Y-37.563 +N9072 G01 X+24.507 Y-37.958 +N9074 G01 X+21.924 Y-38.184 +N9076 G01 X+19.473 Y-38.23 +N9078 G01 X+16.975 Y-38.109 +N9080 G01 X+14.383 Y-37.803 +N9082 G01 X+11.79 Y-37.312 +N9084 G01 X+9.074 Y-36.601 +N9086 G01 X+6.39 Y-35.699 +N9088 G01 X+4.971 Y-35.142 +N9090 G01 X+4.886 Y-35.057 +N9092 G01 X+4.133 Y-33.148 +N9094 G01 X+3.293 Y-30.556 +N9096 G01 X+2.665 Y-28.086 +N9098 G01 X+2.167 Y-25.377 +N9100 G01 X+1.878 Y-22.781 +N9102 G01 X+1.775 Y-20.327 +N9104 G01 X+1.837 Y-17.84 +N9106 G01 X+2.083 Y-15.247 +N9108 G01 X+2.513 Y-12.654 +N9110 G01 X+3.094 Y-10.185 +N9112 G01 X+3.884 Y-7.593 +N9114 G01 X+4.872 Y-4.973 +N9116 G01 X+4.959 Y-4.886 +N9118 G01 X+7.346 Y-3.971 +N9120 G01 X+9.938 Y-3.165 +N9122 G01 X+12.407 Y-2.569 +N9124 G01 X+14.877 Y-2.139 +N9126 G01 X+17.469 Y-1.867 +N9128 G01 X+19.9 Y-1.781 +N9130 G01 X+22.531 Y-1.869 +N9132 G01 X+25.123 Y-2.142 +N9134 G01 X+27.58 Y-2.571 +N9136 G01 X+30.062 Y-3.172 +N9138 G01 X+32.645 Y-3.978 +N9140 G01 X+35.028 Y-4.886 +N9142 G01 X+35.114 Y-4.972 +N9144 G01 X+35.671 Y-6.392 +N9146 G01 X+36.571 Y-9.078 +N9148 G01 X+37.281 Y-11.795 +N9150 G01 X+37.771 Y-14.387 +N9152 G01 X+38.076 Y-16.978 +N9154 G01 X+38.196 Y-19.568 +N9156 G01 X+38.131 Y-22.158 +N9158 G01 X+37.881 Y-24.747 +N9160 G01 X+37.465 Y-27.237 +N9162 G01 X+36.883 Y-29.705 +N9164 G01 X+36.063 Y-32.376 +N9166 G01 X+35.067 Y-34.981 +N9168 G01 X+34.981 Y-35.068 +N9170 G01 X+32.862 Y-35.883 +N9172 G01 X+30.278 Y-36.708 +N9174 G01 X+27.817 Y-37.323 +N9176 G01 X+25.362 Y-37.768 +N9178 G01 X+22.773 Y-38.058 +N9180 G01 X+20.326 Y-38.161 +N9182 G01 X+17.768 Y-38.09 +N9184 G01 X+15.189 Y-37.833 +N9186 G01 X+12.683 Y-37.407 +N9188 G01 X+10.229 Y-36.817 +N9190 G01 X+7.658 Y-36.019 +N9192 G01 X+5.065 Y-35.021 +N9194 G01 X+4.979 Y-34.935 +N9196 G01 X+4.161 Y-32.826 +N9198 G01 X+3.335 Y-30.252 +N9200 G01 X+2.717 Y-27.799 +N9202 G01 X+2.269 Y-25.35 +N9204 G01 X+1.978 Y-22.768 +N9206 G01 X+1.875 Y-20.325 +N9208 G01 X+1.946 Y-17.773 +N9210 G01 X+2.204 Y-15.199 +N9212 G01 X+2.633 Y-12.7 +N9214 G01 X+3.225 Y-10.254 +N9216 G01 X+4.026 Y-7.692 +N9218 G01 X+5.025 Y-5.111 +N9220 G01 X+5.111 Y-5.025 +N9222 G01 X+7.21 Y-4.206 +N9224 G01 X+9.774 Y-3.377 +N9226 G01 X+12.219 Y-2.757 +N9228 G01 X+14.661 Y-2.307 +N9230 G01 X+17.238 Y-2.015 +N9232 G01 X+19.676 Y-1.911 +N9234 G01 X+22.223 Y-1.982 +N9236 G01 X+24.791 Y-2.242 +N9238 G01 X+27.284 Y-2.672 +N9240 G01 X+29.722 Y-3.266 +N9242 G01 X+32.274 Y-4.07 +N9244 G01 X+34.844 Y-5.072 +N9246 G01 X+34.929 Y-5.156 +N9248 G01 X+35.489 Y-6.55 +N9250 G01 X+36.399 Y-9.192 +N9252 G01 X+37.119 Y-11.872 +N9254 G01 X+37.617 Y-14.435 +N9256 G01 X+37.928 Y-17.002 +N9258 G01 X+38.051 Y-19.572 +N9260 G01 X+37.984 Y-22.141 +N9262 G01 X+37.728 Y-24.706 +N9264 G01 X+37.284 Y-27.265 +N9266 G01 X+36.649 Y-29.829 +N9268 G01 X+35.88 Y-32.235 +N9270 G01 X+34.875 Y-34.791 +N9272 G01 X+34.791 Y-34.875 +N9274 G01 X+32.712 Y-35.698 +N9276 G01 X+30.17 Y-36.531 +N9278 G01 X+27.742 Y-37.156 +N9280 G01 X+25.314 Y-37.61 +N9282 G01 X+22.75 Y-37.905 +N9284 G01 X+20.323 Y-38.01 +N9286 G01 X+17.787 Y-37.937 +N9288 G01 X+15.232 Y-37.675 +N9290 G01 X+12.754 Y-37.239 +N9292 G01 X+10.333 Y-36.639 +N9294 G01 X+7.804 Y-35.829 +N9296 G01 X+5.262 Y-34.822 +N9298 G01 X+5.178 Y-34.738 +N9300 G01 X+4.353 Y-32.67 +N9302 G01 X+3.517 Y-30.14 +N9304 G01 X+2.89 Y-27.721 +N9306 G01 X+2.433 Y-25.301 +N9308 G01 X+2.136 Y-22.744 +N9310 G01 X+2.031 Y-20.322 +N9312 G01 X+2.104 Y-17.792 +N9314 G01 X+2.368 Y-15.243 +N9316 G01 X+2.806 Y-12.773 +N9318 G01 X+3.409 Y-10.361 +N9320 G01 X+4.221 Y-7.843 +N9322 G01 X+5.231 Y-5.314 +N9324 G01 X+5.314 Y-5.231 +N9326 G01 X+7.371 Y-4.405 +N9328 G01 X+9.889 Y-3.565 +N9330 G01 X+12.299 Y-2.935 +N9332 G01 X+14.712 Y-2.477 +N9334 G01 X+17.263 Y-2.178 +N9336 G01 X+19.678 Y-2.071 +N9338 G01 X+22.203 Y-2.145 +N9340 G01 X+24.745 Y-2.411 +N9342 G01 X+27.208 Y-2.851 +N9344 G01 X+29.612 Y-3.456 +N9346 G01 X+32.118 Y-4.272 +N9348 G01 X+34.633 Y-5.284 +N9350 G01 X+34.716 Y-5.366 +N9352 G01 X+35.462 Y-7.196 +N9354 G01 X+36.287 Y-9.591 +N9356 G01 X+36.935 Y-11.959 +N9358 G01 X+37.443 Y-14.49 +N9360 G01 X+37.762 Y-17.03 +N9362 G01 X+37.887 Y-19.576 +N9364 G01 X+37.819 Y-22.121 +N9366 G01 X+37.558 Y-24.661 +N9368 G01 X+37.104 Y-27.19 +N9370 G01 X+36.457 Y-29.715 +N9372 G01 X+35.678 Y-32.079 +N9374 G01 X+34.663 Y-34.581 +N9376 G01 X+34.58 Y-34.663 +N9378 G01 X+32.309 Y-35.581 +N9380 G01 X+29.813 Y-36.41 +N9382 G01 X+27.42 Y-37.027 +N9384 G01 X+24.894 Y-37.493 +N9386 G01 X+22.479 Y-37.759 +N9388 G01 X+20.098 Y-37.848 +N9390 G01 X+17.807 Y-37.772 +N9392 G01 X+15.278 Y-37.504 +N9394 G01 X+12.829 Y-37.059 +N9396 G01 X+10.444 Y-36.448 +N9398 G01 X+7.96 Y-35.627 +N9400 G01 X+5.472 Y-34.61 +N9402 G01 X+5.39 Y-34.528 +N9404 G01 X+4.47 Y-32.269 +N9406 G01 X+3.638 Y-29.784 +N9408 G01 X+3.018 Y-27.4 +N9410 G01 X+2.55 Y-24.882 +N9412 G01 X+2.282 Y-22.474 +N9414 G01 X+2.193 Y-20.098 +N9416 G01 X+2.269 Y-17.812 +N9418 G01 X+2.539 Y-15.289 +N9420 G01 X+2.986 Y-12.848 +N9422 G01 X+3.6 Y-10.472 +N9424 G01 X+4.424 Y-7.999 +N9426 G01 X+5.443 Y-5.524 +N9428 G01 X+5.525 Y-5.443 +N9430 G01 X+7.771 Y-4.521 +N9432 G01 X+10.245 Y-3.686 +N9434 G01 X+12.62 Y-3.063 +N9436 G01 X+15.13 Y-2.593 +N9438 G01 X+17.652 Y-2.315 +N9440 G01 X+19.902 Y-2.234 +N9442 G01 X+22.183 Y-2.31 +N9444 G01 X+24.699 Y-2.582 +N9446 G01 X+27.133 Y-3.031 +N9448 G01 X+29.501 Y-3.648 +N9450 G01 X+31.962 Y-4.474 +N9452 G01 X+34.423 Y-5.496 +N9454 G01 X+34.504 Y-5.577 +N9456 G01 X+35.432 Y-7.82 +N9458 G01 X+36.266 Y-10.274 +N9460 G01 X+36.894 Y-12.652 +N9462 G01 X+37.347 Y-15.023 +N9464 G01 X+37.615 Y-17.298 +N9466 G01 X+37.724 Y-19.58 +N9468 G01 X+37.654 Y-22.101 +N9470 G01 X+37.387 Y-24.615 +N9472 G01 X+36.924 Y-27.114 +N9474 G01 X+36.266 Y-29.602 +N9476 G01 X+35.475 Y-31.923 +N9478 G01 X+34.451 Y-34.371 +N9480 G01 X+34.371 Y-34.451 +N9482 G01 X+32.149 Y-35.378 +N9484 G01 X+29.698 Y-36.218 +N9486 G01 X+27.341 Y-36.846 +N9488 G01 X+24.846 Y-37.322 +N9490 G01 X+22.337 Y-37.602 +N9492 G01 X+20.097 Y-37.685 +N9494 G01 X+17.828 Y-37.607 +N9496 G01 X+15.324 Y-37.333 +N9498 G01 X+12.905 Y-36.878 +N9500 G01 X+10.555 Y-36.257 +N9502 G01 X+8.116 Y-35.424 +N9504 G01 X+5.682 Y-34.398 +N9506 G01 X+5.602 Y-34.318 +N9508 G01 X+4.673 Y-32.108 +N9510 G01 X+3.83 Y-29.669 +N9512 G01 X+3.199 Y-27.321 +N9514 G01 X+2.721 Y-24.834 +N9516 G01 X+2.439 Y-22.331 +N9518 G01 X+2.356 Y-20.097 +N9520 G01 X+2.434 Y-17.833 +N9522 G01 X+2.71 Y-15.336 +N9524 G01 X+3.167 Y-12.924 +N9526 G01 X+3.791 Y-10.583 +N9528 G01 X+4.626 Y-8.155 +N9530 G01 X+5.656 Y-5.732 +N9532 G01 X+5.731 Y-5.654 +N9534 G01 X+5.875 Y-5.588 +N9536 G01 X+8.384 Y-4.552 +N9538 G01 X+10.678 Y-3.783 +N9540 G01 X+13.026 Y-3.17 +N9542 G01 X+15.415 Y-2.728 +N9544 G01 X+17.674 Y-2.481 +N9546 G01 X+19.903 Y-2.397 +N9548 G01 X+22.162 Y-2.475 +N9550 G01 X+24.653 Y-2.753 +N9552 G01 X+27.057 Y-3.212 +N9554 G01 X+29.39 Y-3.839 +N9556 G01 X+31.806 Y-4.677 +N9558 G01 X+34.215 Y-5.709 +N9560 G01 X+34.292 Y-5.784 +N9562 G01 X+34.461 Y-6.153 +N9564 G01 X+35.486 Y-8.659 +N9566 G01 X+36.282 Y-11.085 +N9568 G01 X+36.877 Y-13.466 +N9570 G01 X+37.295 Y-15.9 +N9572 G01 X+37.51 Y-18.155 +N9574 G01 X+37.56 Y-20.417 +N9576 G01 X+37.442 Y-22.679 +N9578 G01 X+37.16 Y-24.924 +N9580 G01 X+36.687 Y-27.272 +N9582 G01 X+36.074 Y-29.489 +N9584 G01 X+35.273 Y-31.767 +N9586 G01 X+34.238 Y-34.163 +N9588 G01 X+34.164 Y-34.239 +N9590 G01 X+34.021 Y-34.306 +N9592 G01 X+31.54 Y-35.347 +N9594 G01 X+29.267 Y-36.122 +N9596 G01 X+26.936 Y-36.74 +N9598 G01 X+24.562 Y-37.186 +N9600 G01 X+22.315 Y-37.437 +N9602 G01 X+20.097 Y-37.522 +N9604 G01 X+17.848 Y-37.442 +N9606 G01 X+15.37 Y-37.161 +N9608 G01 X+12.981 Y-36.698 +N9610 G01 X+10.666 Y-36.066 +N9612 G01 X+8.272 Y-35.222 +N9614 G01 X+5.889 Y-34.185 +N9616 G01 X+5.814 Y-34.111 +N9618 G01 X+5.747 Y-33.97 +N9620 G01 X+4.703 Y-31.502 +N9622 G01 X+3.926 Y-29.24 +N9624 G01 X+3.305 Y-26.918 +N9626 G01 X+2.856 Y-24.551 +N9628 G01 X+2.604 Y-22.309 +N9630 G01 X+2.519 Y-20.096 +N9632 G01 X+2.599 Y-17.853 +N9634 G01 X+2.881 Y-15.382 +N9636 G01 X+3.347 Y-13 +N9638 G01 X+3.982 Y-10.694 +N9640 G01 X+4.829 Y-8.311 +N9642 G01 X+5.868 Y-5.942 +N9644 G01 X+5.941 Y-5.867 +N9646 G01 X+6.082 Y-5.8 +N9648 G01 X+8.536 Y-4.754 +N9650 G01 X+10.787 Y-3.973 +N9652 G01 X+13.101 Y-3.35 +N9654 G01 X+15.461 Y-2.899 +N9656 G01 X+17.696 Y-2.646 +N9658 G01 X+19.904 Y-2.56 +N9660 G01 X+22.142 Y-2.64 +N9662 G01 X+24.607 Y-2.924 +N9664 G01 X+26.981 Y-3.392 +N9666 G01 X+29.278 Y-4.03 +N9668 G01 X+31.65 Y-4.879 +N9670 G01 X+34.005 Y-5.921 +N9672 G01 X+34.08 Y-5.994 +N9674 G01 X+34.25 Y-6.354 +N9676 G01 X+35.286 Y-8.806 +N9678 G01 X+36.093 Y-11.188 +N9680 G01 X+36.699 Y-13.535 +N9682 G01 X+37.126 Y-15.94 +N9684 G01 X+37.345 Y-18.173 +N9686 G01 X+37.396 Y-20.413 +N9688 G01 X+37.276 Y-22.653 +N9690 G01 X+36.988 Y-24.875 +N9692 G01 X+36.506 Y-27.193 +N9694 G01 X+35.882 Y-29.376 +N9696 G01 X+35.07 Y-31.611 +N9698 G01 X+34.026 Y-33.953 +N9700 G01 X+33.953 Y-34.027 +N9702 G01 X+33.595 Y-34.198 +N9704 G01 X+31.157 Y-35.236 +N9706 G01 X+28.9 Y-36.011 +N9708 G01 X+26.65 Y-36.609 +N9710 G01 X+24.284 Y-37.05 +N9712 G01 X+22.058 Y-37.289 +N9714 G01 X+19.824 Y-37.358 +N9716 G01 X+17.591 Y-37.256 +N9718 G01 X+15.416 Y-36.99 +N9720 G01 X+13.057 Y-36.518 +N9722 G01 X+10.777 Y-35.874 +N9724 G01 X+8.428 Y-35.019 +N9726 G01 X+6.1 Y-33.973 +N9728 G01 X+6.026 Y-33.901 +N9730 G01 X+5.855 Y-33.545 +N9732 G01 X+4.815 Y-31.121 +N9734 G01 X+4.036 Y-28.873 +N9736 G01 X+3.436 Y-26.632 +N9738 G01 X+2.993 Y-24.273 +N9740 G01 X+2.752 Y-22.053 +N9742 G01 X+2.683 Y-19.824 +N9744 G01 X+2.786 Y-17.597 +N9746 G01 X+3.052 Y-15.428 +N9748 G01 X+3.527 Y-13.076 +N9750 G01 X+4.173 Y-10.805 +N9752 G01 X+5.031 Y-8.467 +N9754 G01 X+6.08 Y-6.152 +N9756 G01 X+6.152 Y-6.079 +N9758 G01 X+6.506 Y-5.908 +N9760 G01 X+8.916 Y-4.865 +N9762 G01 X+11.153 Y-4.083 +N9764 G01 X+13.386 Y-3.48 +N9766 G01 X+15.737 Y-3.035 +N9768 G01 X+17.952 Y-2.793 +N9770 G01 X+20.176 Y-2.724 +N9772 G01 X+22.398 Y-2.827 +N9774 G01 X+24.561 Y-3.095 +N9776 G01 X+26.905 Y-3.572 +N9778 G01 X+29.167 Y-4.221 +N9780 G01 X+31.494 Y-5.082 +N9782 G01 X+33.795 Y-6.133 +N9784 G01 X+33.868 Y-6.205 +N9786 G01 X+34.243 Y-6.988 +N9788 G01 X+35.171 Y-9.173 +N9790 G01 X+35.982 Y-11.548 +N9792 G01 X+36.567 Y-13.814 +N9794 G01 X+36.956 Y-15.98 +N9796 G01 X+37.181 Y-18.19 +N9798 G01 X+37.233 Y-20.409 +N9800 G01 X+37.11 Y-22.628 +N9802 G01 X+36.816 Y-24.825 +N9804 G01 X+36.325 Y-27.114 +N9806 G01 X+35.69 Y-29.263 +N9808 G01 X+34.867 Y-31.455 +N9810 G01 X+33.814 Y-33.743 +N9812 G01 X+33.744 Y-33.815 +N9814 G01 X+33.393 Y-33.987 +N9816 G01 X+31.011 Y-35.035 +N9818 G01 X+28.794 Y-35.822 +N9820 G01 X+26.579 Y-36.43 +N9822 G01 X+24.241 Y-36.88 +N9824 G01 X+22.038 Y-37.124 +N9826 G01 X+19.825 Y-37.194 +N9828 G01 X+17.614 Y-37.09 +N9830 G01 X+15.462 Y-36.819 +N9832 G01 X+13.133 Y-36.337 +N9834 G01 X+10.888 Y-35.683 +N9836 G01 X+8.584 Y-34.817 +N9838 G01 X+6.309 Y-33.761 +N9840 G01 X+6.238 Y-33.691 +N9842 G01 X+6.066 Y-33.343 +N9844 G01 X+5.015 Y-30.974 +N9846 G01 X+4.225 Y-28.768 +N9848 G01 X+3.615 Y-26.561 +N9850 G01 X+3.163 Y-24.231 +N9852 G01 X+2.917 Y-22.033 +N9854 G01 X+2.846 Y-19.826 +N9856 G01 X+2.951 Y-17.62 +N9858 G01 X+3.224 Y-15.474 +N9860 G01 X+3.708 Y-13.152 +N9862 G01 X+4.364 Y-10.916 +N9864 G01 X+5.234 Y-8.623 +N9866 G01 X+6.293 Y-6.362 +N9868 G01 X+6.361 Y-6.291 +N9870 G01 X+6.707 Y-6.118 +N9872 G01 X+9.063 Y-5.065 +N9874 G01 X+11.258 Y-4.273 +N9876 G01 X+13.457 Y-3.659 +N9878 G01 X+15.78 Y-3.206 +N9880 G01 X+17.972 Y-2.958 +N9882 G01 X+20.174 Y-2.887 +N9884 G01 X+22.374 Y-2.993 +N9886 G01 X+24.514 Y-3.266 +N9888 G01 X+26.829 Y-3.753 +N9890 G01 X+29.056 Y-4.412 +N9892 G01 X+31.338 Y-5.284 +N9894 G01 X+33.585 Y-6.345 +N9896 G01 X+33.655 Y-6.414 +N9898 G01 X+34.034 Y-7.179 +N9900 G01 X+34.971 Y-9.315 +N9902 G01 X+35.794 Y-11.647 +N9904 G01 X+36.39 Y-13.88 +N9906 G01 X+36.787 Y-16.02 +N9908 G01 X+37.016 Y-18.207 +N9910 G01 X+37.07 Y-20.405 +N9912 G01 X+36.944 Y-22.602 +N9914 G01 X+36.644 Y-24.776 +N9916 G01 X+36.143 Y-27.034 +N9918 G01 X+35.498 Y-29.149 +N9920 G01 X+34.665 Y-31.299 +N9922 G01 X+33.601 Y-33.533 +N9924 G01 X+33.533 Y-33.602 +N9926 G01 X+32.774 Y-33.982 +N9928 G01 X+30.575 Y-34.951 +N9930 G01 X+28.248 Y-35.772 +N9932 G01 X+26.014 Y-36.366 +N9934 G01 X+23.903 Y-36.754 +N9936 G01 X+21.797 Y-36.974 +N9938 G01 X+19.507 Y-37.027 +N9940 G01 X+17.407 Y-36.903 +N9942 G01 X+15.237 Y-36.601 +N9944 G01 X+12.997 Y-36.101 +N9946 G01 X+10.781 Y-35.417 +N9948 G01 X+8.536 Y-34.525 +N9950 G01 X+6.519 Y-33.548 +N9952 G01 X+6.451 Y-33.481 +N9954 G01 X+6.07 Y-32.726 +N9956 G01 X+5.099 Y-30.54 +N9958 G01 X+4.275 Y-28.223 +N9960 G01 X+3.678 Y-25.997 +N9962 G01 X+3.289 Y-23.893 +N9964 G01 X+3.067 Y-21.793 +N9966 G01 X+3.014 Y-19.508 +N9968 G01 X+3.139 Y-17.414 +N9970 G01 X+3.442 Y-15.249 +N9972 G01 X+3.944 Y-13.016 +N9974 G01 X+4.631 Y-10.81 +N9976 G01 X+5.526 Y-8.576 +N9978 G01 X+6.505 Y-6.572 +N9980 G01 X+6.572 Y-6.504 +N9982 G01 X+7.529 Y-6.021 +N9984 G01 X+9.742 Y-5.05 +N9986 G01 X+11.801 Y-4.321 +N9988 G01 X+14.019 Y-3.722 +N9990 G01 X+16.117 Y-3.331 +N9992 G01 X+18.211 Y-3.108 +N9994 G01 X+20.491 Y-3.055 +N9996 G01 X+22.58 Y-3.18 +N9998 G01 X+24.739 Y-3.485 +N10000 G01 X+26.964 Y-3.99 +N10002 G01 X+29.161 Y-4.679 +N10004 G01 X+31.384 Y-5.577 +N10006 G01 X+33.376 Y-6.558 +N10008 G01 X+33.443 Y-6.624 +N10010 G01 X+33.825 Y-7.37 +N10012 G01 X+34.859 Y-9.67 +N10014 G01 X+35.607 Y-11.746 +N10016 G01 X+36.213 Y-13.946 +N10018 G01 X+36.617 Y-16.061 +N10020 G01 X+36.852 Y-18.225 +N10022 G01 X+36.906 Y-20.401 +N10024 G01 X+36.778 Y-22.577 +N10026 G01 X+36.472 Y-24.726 +N10028 G01 X+35.962 Y-26.955 +N10030 G01 X+35.307 Y-29.036 +N10032 G01 X+34.462 Y-31.143 +N10034 G01 X+33.389 Y-33.323 +N10036 G01 X+33.323 Y-33.39 +N10038 G01 X+32.378 Y-33.875 +N10040 G01 X+30.19 Y-34.851 +N10042 G01 X+28.15 Y-35.585 +N10044 G01 X+25.949 Y-36.19 +N10046 G01 X+23.863 Y-36.585 +N10048 G01 X+21.78 Y-36.81 +N10050 G01 X+19.512 Y-36.863 +N10052 G01 X+17.433 Y-36.737 +N10054 G01 X+15.286 Y-36.429 +N10056 G01 X+13.075 Y-35.92 +N10058 G01 X+10.896 Y-35.224 +N10060 G01 X+8.697 Y-34.321 +N10062 G01 X+6.729 Y-33.336 +N10064 G01 X+6.663 Y-33.271 +N10066 G01 X+6.177 Y-32.332 +N10068 G01 X+5.198 Y-30.156 +N10070 G01 X+4.462 Y-28.126 +N10072 G01 X+3.855 Y-25.932 +N10074 G01 X+3.458 Y-23.853 +N10076 G01 X+3.216 Y-21.539 +N10078 G01 X+3.178 Y-19.513 +N10080 G01 X+3.305 Y-17.439 +N10082 G01 X+3.614 Y-15.298 +N10084 G01 X+4.126 Y-13.095 +N10086 G01 X+4.824 Y-10.925 +N10088 G01 X+5.73 Y-8.737 +N10090 G01 X+6.717 Y-6.782 +N10092 G01 X+6.782 Y-6.716 +N10094 G01 X+7.917 Y-6.129 +N10096 G01 X+10.088 Y-5.163 +N10098 G01 X+12.315 Y-4.378 +N10100 G01 X+14.39 Y-3.829 +N10102 G01 X+16.428 Y-3.46 +N10104 G01 X+18.465 Y-3.257 +N10106 G01 X+20.486 Y-3.218 +N10108 G01 X+22.555 Y-3.346 +N10110 G01 X+24.689 Y-3.657 +N10112 G01 X+26.885 Y-4.171 +N10114 G01 X+29.046 Y-4.872 +N10116 G01 X+31.223 Y-5.781 +N10118 G01 X+33.165 Y-6.77 +N10120 G01 X+33.23 Y-6.834 +N10122 G01 X+33.832 Y-7.989 +N10124 G01 X+34.746 Y-10.016 +N10126 G01 X+35.514 Y-12.139 +N10128 G01 X+36.108 Y-14.321 +N10130 G01 X+36.498 Y-16.437 +N10132 G01 X+36.702 Y-18.469 +N10134 G01 X+36.738 Y-20.624 +N10136 G01 X+36.588 Y-22.774 +N10138 G01 X+36.255 Y-24.905 +N10140 G01 X+35.781 Y-26.876 +N10142 G01 X+35.08 Y-29.018 +N10144 G01 X+34.165 Y-31.191 +N10146 G01 X+33.177 Y-33.113 +N10148 G01 X+33.113 Y-33.177 +N10150 G01 X+31.59 Y-33.965 +N10152 G01 X+29.428 Y-34.905 +N10154 G01 X+27.408 Y-35.601 +N10156 G01 X+25.333 Y-36.137 +N10158 G01 X+23.105 Y-36.516 +N10160 G01 X+21.083 Y-36.683 +N10162 G01 X+19.038 Y-36.685 +N10164 G01 X+16.897 Y-36.506 +N10166 G01 X+14.818 Y-36.152 +N10168 G01 X+12.819 Y-35.641 +N10170 G01 X+10.811 Y-34.956 +N10172 G01 X+8.857 Y-34.118 +N10174 G01 X+6.94 Y-33.124 +N10176 G01 X+6.876 Y-33.06 +N10178 G01 X+6.086 Y-31.547 +N10180 G01 X+5.144 Y-29.398 +N10182 G01 X+4.412 Y-27.278 +N10184 G01 X+3.859 Y-25.099 +N10186 G01 X+3.526 Y-23.097 +N10188 G01 X+3.358 Y-21.08 +N10190 G01 X+3.356 Y-19.04 +N10192 G01 X+3.536 Y-16.905 +N10194 G01 X+3.892 Y-14.832 +N10196 G01 X+4.405 Y-12.84 +N10198 G01 X+5.093 Y-10.841 +N10200 G01 X+5.933 Y-8.897 +N10202 G01 X+6.929 Y-6.992 +N10204 G01 X+6.992 Y-6.929 +N10206 G01 X+8.495 Y-6.138 +N10208 G01 X+10.633 Y-5.192 +N10210 G01 X+12.743 Y-4.458 +N10212 G01 X+14.915 Y-3.903 +N10214 G01 X+16.911 Y-3.568 +N10216 G01 X+18.922 Y-3.398 +N10218 G01 X+20.957 Y-3.396 +N10220 G01 X+23.088 Y-3.578 +N10222 G01 X+25.154 Y-3.935 +N10224 G01 X+27.139 Y-4.45 +N10226 G01 X+29.13 Y-5.141 +N10228 G01 X+31.063 Y-5.984 +N10230 G01 X+32.956 Y-6.982 +N10232 G01 X+33.018 Y-7.044 +N10234 G01 X+33.625 Y-8.169 +N10236 G01 X+34.549 Y-10.15 +N10238 G01 X+35.328 Y-12.233 +N10240 G01 X+35.932 Y-14.383 +N10242 G01 X+36.329 Y-16.474 +N10244 G01 X+36.538 Y-18.484 +N10246 G01 X+36.574 Y-20.611 +N10248 G01 X+36.422 Y-22.739 +N10250 G01 X+36.082 Y-24.853 +N10252 G01 X+35.599 Y-26.797 +N10254 G01 X+34.888 Y-28.903 +N10256 G01 X+33.962 Y-31.03 +N10258 G01 X+32.965 Y-32.903 +N10260 G01 X+32.903 Y-32.965 +N10262 G01 X+31.419 Y-33.76 +N10264 G01 X+29.305 Y-34.711 +N10266 G01 X+27.214 Y-35.45 +N10268 G01 X+25.057 Y-36.01 +N10270 G01 X+23.074 Y-36.348 +N10272 G01 X+21.072 Y-36.52 +N10274 G01 X+19.047 Y-36.522 +N10276 G01 X+16.935 Y-36.339 +N10278 G01 X+14.874 Y-35.978 +N10280 G01 X+12.903 Y-35.458 +N10282 G01 X+10.93 Y-34.762 +N10284 G01 X+9.018 Y-33.914 +N10286 G01 X+7.149 Y-32.911 +N10288 G01 X+7.088 Y-32.851 +N10290 G01 X+6.292 Y-31.377 +N10292 G01 X+5.338 Y-29.275 +N10294 G01 X+4.596 Y-27.193 +N10296 G01 X+4.035 Y-25.05 +N10298 G01 X+3.686 Y-23.002 +N10300 G01 X+3.521 Y-21.07 +N10302 G01 X+3.519 Y-19.056 +N10304 G01 X+3.702 Y-16.943 +N10306 G01 X+4.066 Y-14.888 +N10308 G01 X+4.588 Y-12.924 +N10310 G01 X+5.286 Y-10.96 +N10312 G01 X+6.137 Y-9.058 +N10314 G01 X+7.142 Y-7.202 +N10316 G01 X+7.202 Y-7.142 +N10318 G01 X+8.666 Y-6.343 +N10320 G01 X+10.756 Y-5.387 +N10322 G01 X+12.829 Y-4.642 +N10324 G01 X+14.964 Y-4.078 +N10326 G01 X+17.005 Y-3.728 +N10328 G01 X+18.933 Y-3.562 +N10330 G01 X+20.941 Y-3.56 +N10332 G01 X+23.049 Y-3.744 +N10334 G01 X+25.098 Y-4.109 +N10336 G01 X+27.055 Y-4.633 +N10338 G01 X+29.011 Y-5.334 +N10340 G01 X+30.902 Y-6.187 +N10342 G01 X+32.746 Y-7.195 +N10344 G01 X+32.805 Y-7.254 +N10346 G01 X+33.506 Y-8.516 +N10348 G01 X+34.438 Y-10.484 +N10350 G01 X+35.211 Y-12.536 +N10352 G01 X+35.756 Y-14.445 +N10354 G01 X+36.161 Y-16.51 +N10356 G01 X+36.373 Y-18.492 +N10358 G01 X+36.411 Y-20.605 +N10360 G01 X+36.256 Y-22.711 +N10362 G01 X+35.909 Y-24.801 +N10364 G01 X+35.418 Y-26.718 +N10366 G01 X+34.698 Y-28.781 +N10368 G01 X+33.758 Y-30.869 +N10370 G01 X+32.752 Y-32.693 +N10372 G01 X+32.693 Y-32.752 +N10374 G01 X+31.056 Y-33.653 +N10376 G01 X+28.981 Y-34.598 +N10378 G01 X+26.919 Y-35.332 +N10380 G01 X+25.003 Y-35.837 +N10382 G01 X+22.979 Y-36.189 +N10384 G01 X+21.062 Y-36.356 +N10386 G01 X+19.064 Y-36.358 +N10388 G01 X+16.966 Y-36.172 +N10390 G01 X+14.93 Y-35.804 +N10392 G01 X+12.987 Y-35.275 +N10394 G01 X+11.049 Y-34.569 +N10396 G01 X+9.178 Y-33.711 +N10398 G01 X+7.359 Y-32.699 +N10400 G01 X+7.301 Y-32.641 +N10402 G01 X+6.398 Y-31.015 +N10404 G01 X+5.45 Y-28.951 +N10406 G01 X+4.713 Y-26.898 +N10408 G01 X+4.207 Y-24.989 +N10410 G01 X+3.853 Y-22.972 +N10412 G01 X+3.685 Y-21.059 +N10414 G01 X+3.683 Y-19.066 +N10416 G01 X+3.87 Y-16.974 +N10418 G01 X+4.24 Y-14.944 +N10420 G01 X+4.771 Y-13.008 +N10422 G01 X+5.479 Y-11.078 +N10424 G01 X+6.34 Y-9.218 +N10426 G01 X+7.354 Y-7.412 +N10428 G01 X+7.412 Y-7.354 +N10430 G01 X+9.027 Y-6.449 +N10432 G01 X+11.079 Y-5.498 +N10434 G01 X+13.122 Y-4.759 +N10436 G01 X+15.025 Y-4.25 +N10438 G01 X+17.036 Y-3.895 +N10440 G01 X+18.944 Y-3.726 +N10442 G01 X+20.932 Y-3.724 +N10444 G01 X+23.018 Y-3.911 +N10446 G01 X+25.036 Y-4.282 +N10448 G01 X+26.971 Y-4.816 +N10450 G01 X+28.892 Y-5.528 +N10452 G01 X+30.741 Y-6.391 +N10454 G01 X+32.536 Y-7.407 +N10456 G01 X+32.593 Y-7.464 +N10458 G01 X+33.601 Y-9.265 +N10460 G01 X+34.457 Y-11.117 +N10462 G01 X+35.195 Y-13.143 +N10464 G01 X+35.706 Y-15.039 +N10466 G01 X+36.054 Y-16.975 +N10468 G01 X+36.238 Y-19.057 +N10470 G01 X+36.23 Y-21.047 +N10472 G01 X+36.047 Y-23.01 +N10474 G01 X+35.69 Y-24.956 +N10476 G01 X+35.173 Y-26.84 +N10478 G01 X+34.42 Y-28.871 +N10480 G01 X+33.555 Y-30.708 +N10482 G01 X+32.539 Y-32.484 +N10484 G01 X+32.484 Y-32.539 +N10486 G01 X+30.891 Y-33.449 +N10488 G01 X+28.868 Y-34.402 +N10490 G01 X+26.837 Y-35.15 +N10492 G01 X+24.954 Y-35.661 +N10494 G01 X+22.955 Y-36.021 +N10496 G01 X+21.058 Y-36.192 +N10498 G01 X+19.073 Y-36.195 +N10500 G01 X+16.998 Y-36.005 +N10502 G01 X+14.992 Y-35.631 +N10504 G01 X+13.071 Y-35.092 +N10506 G01 X+11.167 Y-34.376 +N10508 G01 X+9.339 Y-33.507 +N10510 G01 X+7.569 Y-32.486 +N10512 G01 X+7.514 Y-32.431 +N10514 G01 X+6.504 Y-30.662 +N10516 G01 X+5.643 Y-28.832 +N10518 G01 X+4.898 Y-26.822 +N10520 G01 X+4.382 Y-24.94 +N10522 G01 X+4.021 Y-22.947 +N10524 G01 X+3.849 Y-21.055 +N10526 G01 X+3.846 Y-19.076 +N10528 G01 X+4.037 Y-17.006 +N10530 G01 X+4.413 Y-15.006 +N10532 G01 X+4.954 Y-13.092 +N10534 G01 X+5.673 Y-11.197 +N10536 G01 X+6.544 Y-9.379 +N10538 G01 X+7.567 Y-7.621 +N10540 G01 X+7.621 Y-7.567 +N10542 G01 X+9.378 Y-6.555 +N10544 G01 X+11.198 Y-5.692 +N10546 G01 X+13.198 Y-4.944 +N10548 G01 X+15.073 Y-4.426 +N10550 G01 X+17.06 Y-4.063 +N10552 G01 X+18.948 Y-3.89 +N10554 G01 X+20.922 Y-3.887 +N10556 G01 X+22.986 Y-4.079 +N10558 G01 X+24.98 Y-4.456 +N10560 G01 X+26.88 Y-4.997 +N10562 G01 X+28.773 Y-5.721 +N10564 G01 X+30.581 Y-6.594 +N10566 G01 X+32.328 Y-7.621 +N10568 G01 X+32.38 Y-7.671 +N10570 G01 X+32.565 Y-7.968 +N10572 G01 X+33.588 Y-9.792 +N10574 G01 X+34.425 Y-11.62 +N10576 G01 X+35.081 Y-13.44 +N10578 G01 X+35.578 Y-15.298 +N10580 G01 X+35.93 Y-17.329 +N10582 G01 X+36.083 Y-19.327 +N10584 G01 X+36.048 Y-21.355 +N10586 G01 X+35.847 Y-23.194 +N10588 G01 X+35.467 Y-25.105 +N10590 G01 X+34.921 Y-26.967 +N10592 G01 X+34.227 Y-28.752 +N10594 G01 X+33.351 Y-30.548 +N10596 G01 X+32.327 Y-32.274 +N10598 G01 X+32.274 Y-32.327 +N10600 G01 X+30.541 Y-33.343 +N10602 G01 X+28.743 Y-34.212 +N10604 G01 X+26.761 Y-34.965 +N10606 G01 X+24.899 Y-35.487 +N10608 G01 X+22.879 Y-35.86 +N10610 G01 X+21.047 Y-36.028 +N10612 G01 X+19.083 Y-36.031 +N10614 G01 X+17.03 Y-35.838 +N10616 G01 X+15.048 Y-35.457 +N10618 G01 X+13.162 Y-34.911 +N10620 G01 X+11.286 Y-34.182 +N10622 G01 X+9.499 Y-33.304 +N10624 G01 X+7.778 Y-32.274 +N10626 G01 X+7.726 Y-32.221 +N10628 G01 X+6.708 Y-30.501 +N10630 G01 X+5.839 Y-28.719 +N10632 G01 X+5.081 Y-26.74 +N10634 G01 X+4.556 Y-24.886 +N10636 G01 X+4.182 Y-22.871 +N10638 G01 X+4.013 Y-21.045 +N10640 G01 X+4.01 Y-19.085 +N10642 G01 X+4.204 Y-17.038 +N10644 G01 X+4.587 Y-15.062 +N10646 G01 X+5.135 Y-13.183 +N10648 G01 X+5.866 Y-11.316 +N10650 G01 X+6.747 Y-9.54 +N10652 G01 X+7.781 Y-7.828 +N10654 G01 X+7.828 Y-7.78 +N10656 G01 X+7.947 Y-7.702 +N10658 G01 X+9.722 Y-6.66 +N10660 G01 X+11.59 Y-5.767 +N10662 G01 X+13.483 Y-5.06 +N10664 G01 X+15.332 Y-4.552 +N10666 G01 X+17.137 Y-4.223 +N10668 G01 X+18.958 Y-4.054 +N10670 G01 X+20.912 Y-4.051 +N10672 G01 X+22.955 Y-4.246 +N10674 G01 X+24.924 Y-4.63 +N10676 G01 X+26.796 Y-5.18 +N10678 G01 X+28.648 Y-5.912 +N10680 G01 X+30.42 Y-6.798 +N10682 G01 X+32.119 Y-7.834 +N10684 G01 X+32.167 Y-7.881 +N10686 G01 X+32.464 Y-8.342 +N10688 G01 X+33.482 Y-10.127 +N10690 G01 X+34.314 Y-11.924 +N10692 G01 X+34.96 Y-13.705 +N10694 G01 X+35.452 Y-15.559 +N10696 G01 X+35.789 Y-17.571 +N10698 G01 X+35.925 Y-19.532 +N10700 G01 X+35.884 Y-21.341 +N10702 G01 X+35.68 Y-23.16 +N10704 G01 X+35.292 Y-25.047 +N10706 G01 X+34.739 Y-26.875 +N10708 G01 X+34.033 Y-28.633 +N10710 G01 X+33.148 Y-30.387 +N10712 G01 X+32.112 Y-32.067 +N10714 G01 X+32.068 Y-32.113 +N10716 G01 X+31.949 Y-32.192 +N10718 G01 X+30.2 Y-33.239 +N10720 G01 X+28.354 Y-34.137 +N10722 G01 X+26.478 Y-34.849 +N10724 G01 X+24.642 Y-35.361 +N10726 G01 X+22.849 Y-35.693 +N10728 G01 X+20.84 Y-35.873 +N10730 G01 X+18.877 Y-35.856 +N10732 G01 X+17.061 Y-35.67 +N10734 G01 X+15.104 Y-35.283 +N10736 G01 X+13.246 Y-34.728 +N10738 G01 X+11.411 Y-33.991 +N10740 G01 X+9.66 Y-33.1 +N10742 G01 X+7.985 Y-32.059 +N10744 G01 X+7.94 Y-32.015 +N10746 G01 X+7.861 Y-31.898 +N10748 G01 X+6.812 Y-30.161 +N10750 G01 X+5.911 Y-28.325 +N10752 G01 X+5.196 Y-26.458 +N10754 G01 X+4.682 Y-24.629 +N10756 G01 X+4.349 Y-22.841 +N10758 G01 X+4.168 Y-20.838 +N10760 G01 X+4.185 Y-18.88 +N10762 G01 X+4.371 Y-17.069 +N10764 G01 X+4.761 Y-15.118 +N10766 G01 X+5.317 Y-13.267 +N10768 G01 X+6.057 Y-11.441 +N10770 G01 X+6.95 Y-9.7 +N10772 G01 X+7.994 Y-8.038 +N10774 G01 X+8.037 Y-7.993 +N10776 G01 X+8.154 Y-7.914 +N10778 G01 X+9.872 Y-6.866 +N10780 G01 X+11.703 Y-5.959 +N10782 G01 X+13.561 Y-5.242 +N10784 G01 X+15.384 Y-4.725 +N10786 G01 X+17.166 Y-4.39 +N10788 G01 X+19.164 Y-4.209 +N10790 G01 X+21.117 Y-4.226 +N10792 G01 X+22.923 Y-4.413 +N10794 G01 X+24.868 Y-4.804 +N10796 G01 X+26.712 Y-5.363 +N10798 G01 X+28.529 Y-6.105 +N10800 G01 X+30.26 Y-7.001 +N10802 G01 X+31.909 Y-8.047 +N10804 G01 X+31.954 Y-8.09 +N10806 G01 X+32.254 Y-8.538 +N10808 G01 X+33.278 Y-10.268 +N10810 G01 X+34.122 Y-12.026 +N10812 G01 X+34.779 Y-13.78 +N10814 G01 X+35.28 Y-15.608 +N10816 G01 X+35.623 Y-17.596 +N10818 G01 X+35.762 Y-19.536 +N10820 G01 X+35.72 Y-21.327 +N10822 G01 X+35.512 Y-23.126 +N10824 G01 X+35.118 Y-24.989 +N10826 G01 X+34.556 Y-26.789 +N10828 G01 X+33.843 Y-28.508 +N10830 G01 X+32.947 Y-30.22 +N10832 G01 X+31.899 Y-31.858 +N10834 G01 X+31.858 Y-31.9 +N10836 G01 X+31.742 Y-31.98 +N10838 G01 X+30.05 Y-33.033 +N10840 G01 X+28.241 Y-33.945 +N10842 G01 X+26.399 Y-34.668 +N10844 G01 X+24.591 Y-35.188 +N10846 G01 X+22.608 Y-35.555 +N10848 G01 X+20.831 Y-35.709 +N10850 G01 X+18.889 Y-35.692 +N10852 G01 X+17.093 Y-35.503 +N10854 G01 X+15.161 Y-35.109 +N10856 G01 X+13.33 Y-34.545 +N10858 G01 X+11.53 Y-33.798 +N10860 G01 X+9.826 Y-32.9 +N10862 G01 X+8.195 Y-31.847 +N10864 G01 X+8.153 Y-31.805 +N10866 G01 X+7.851 Y-31.364 +N10868 G01 X+6.781 Y-29.584 +N10870 G01 X+5.933 Y-27.827 +N10872 G01 X+5.286 Y-26.104 +N10874 G01 X+4.806 Y-24.367 +N10876 G01 X+4.486 Y-22.601 +N10878 G01 X+4.332 Y-20.829 +N10880 G01 X+4.348 Y-18.892 +N10882 G01 X+4.539 Y-17.1 +N10884 G01 X+4.934 Y-15.175 +N10886 G01 X+5.5 Y-13.351 +N10888 G01 X+6.25 Y-11.56 +N10890 G01 X+7.151 Y-9.867 +N10892 G01 X+8.207 Y-8.248 +N10894 G01 X+8.247 Y-8.206 +N10896 G01 X+8.686 Y-7.904 +N10898 G01 X+10.452 Y-6.831 +N10900 G01 X+12.2 Y-5.981 +N10902 G01 X+13.915 Y-5.331 +N10904 G01 X+15.645 Y-4.849 +N10906 G01 X+17.406 Y-4.528 +N10908 G01 X+19.173 Y-4.372 +N10910 G01 X+21.105 Y-4.389 +N10912 G01 X+22.892 Y-4.58 +N10914 G01 X+24.811 Y-4.978 +N10916 G01 X+26.628 Y-5.546 +N10918 G01 X+28.41 Y-6.298 +N10920 G01 X+30.093 Y-7.202 +N10922 G01 X+31.7 Y-8.26 +N10924 G01 X+31.741 Y-8.299 +N10926 G01 X+32.044 Y-8.735 +N10928 G01 X+33.078 Y-10.414 +N10930 G01 X+33.931 Y-12.133 +N10932 G01 X+34.599 Y-13.856 +N10934 G01 X+35.108 Y-15.657 +N10936 G01 X+35.457 Y-17.621 +N10938 G01 X+35.598 Y-19.541 +N10940 G01 X+35.556 Y-21.313 +N10942 G01 X+35.344 Y-23.092 +N10944 G01 X+34.943 Y-24.931 +N10946 G01 X+34.372 Y-26.703 +N10948 G01 X+33.649 Y-28.389 +N10950 G01 X+32.744 Y-30.059 +N10952 G01 X+31.687 Y-31.647 +N10954 G01 X+31.648 Y-31.687 +N10956 G01 X+31.055 Y-32.101 +N10958 G01 X+29.475 Y-33.069 +N10960 G01 X+27.748 Y-33.925 +N10962 G01 X+26.048 Y-34.579 +N10964 G01 X+24.229 Y-35.088 +N10966 G01 X+22.375 Y-35.416 +N10968 G01 X+20.587 Y-35.554 +N10970 G01 X+18.828 Y-35.524 +N10972 G01 X+16.917 Y-35.302 +N10974 G01 X+15.216 Y-34.935 +N10976 G01 X+13.414 Y-34.363 +N10978 G01 X+11.649 Y-33.605 +N10980 G01 X+9.987 Y-32.697 +N10982 G01 X+8.405 Y-31.634 +N10984 G01 X+8.366 Y-31.595 +N10986 G01 X+7.951 Y-31.007 +N10988 G01 X+6.981 Y-29.439 +N10990 G01 X+6.123 Y-27.722 +N10992 G01 X+5.466 Y-26.03 +N10994 G01 X+4.954 Y-24.217 +N10996 G01 X+4.626 Y-22.369 +N10998 G01 X+4.487 Y-20.586 +N11000 G01 X+4.517 Y-18.831 +N11002 G01 X+4.74 Y-16.926 +N11004 G01 X+5.108 Y-15.23 +N11006 G01 X+5.683 Y-13.435 +N11008 G01 X+6.443 Y-11.679 +N11010 G01 X+7.354 Y-10.027 +N11012 G01 X+8.42 Y-8.457 +N11014 G01 X+8.457 Y-8.419 +N11016 G01 X+9.04 Y-8.004 +N11018 G01 X+10.597 Y-7.031 +N11020 G01 X+12.305 Y-6.17 +N11022 G01 X+13.989 Y-5.511 +N11024 G01 X+15.795 Y-4.997 +N11026 G01 X+17.638 Y-4.667 +N11028 G01 X+19.416 Y-4.527 +N11030 G01 X+21.166 Y-4.558 +N11032 G01 X+23.066 Y-4.782 +N11034 G01 X+24.756 Y-5.152 +N11036 G01 X+26.544 Y-5.729 +N11038 G01 X+28.291 Y-6.491 +N11040 G01 X+29.932 Y-7.405 +N11042 G01 X+31.491 Y-8.473 +N11044 G01 X+31.527 Y-8.509 +N11046 G01 X+31.944 Y-9.088 +N11048 G01 X+32.974 Y-10.732 +N11050 G01 X+33.823 Y-12.423 +N11052 G01 X+34.484 Y-14.125 +N11054 G01 X+34.992 Y-15.948 +N11056 G01 X+35.291 Y-17.647 +N11058 G01 X+35.435 Y-19.545 +N11060 G01 X+35.392 Y-21.299 +N11062 G01 X+35.176 Y-23.057 +N11064 G01 X+34.769 Y-24.873 +N11066 G01 X+34.189 Y-26.617 +N11068 G01 X+33.456 Y-28.27 +N11070 G01 X+32.541 Y-29.899 +N11072 G01 X+31.474 Y-31.438 +N11074 G01 X+31.439 Y-31.474 +N11076 G01 X+30.864 Y-31.892 +N11078 G01 X+29.33 Y-32.869 +N11080 G01 X+27.643 Y-33.735 +N11082 G01 X+25.974 Y-34.399 +N11084 G01 X+24.181 Y-34.917 +N11086 G01 X+22.35 Y-35.25 +N11088 G01 X+20.581 Y-35.391 +N11090 G01 X+18.84 Y-35.36 +N11092 G01 X+16.951 Y-35.134 +N11094 G01 X+15.272 Y-34.761 +N11096 G01 X+13.499 Y-34.18 +N11098 G01 X+11.768 Y-33.412 +N11100 G01 X+10.148 Y-32.494 +N11102 G01 X+8.614 Y-31.42 +N11104 G01 X+8.579 Y-31.386 +N11106 G01 X+8.16 Y-30.816 +N11108 G01 X+7.182 Y-29.294 +N11110 G01 X+6.312 Y-27.616 +N11112 G01 X+5.646 Y-25.956 +N11114 G01 X+5.126 Y-24.169 +N11116 G01 X+4.792 Y-22.343 +N11118 G01 X+4.65 Y-20.58 +N11120 G01 X+4.681 Y-18.843 +N11122 G01 X+4.908 Y-16.96 +N11124 G01 X+5.282 Y-15.286 +N11126 G01 X+5.866 Y-13.52 +N11128 G01 X+6.636 Y-11.798 +N11130 G01 X+7.557 Y-10.188 +N11132 G01 X+8.633 Y-8.666 +N11134 G01 X+8.666 Y-8.633 +N11136 G01 X+9.231 Y-8.213 +N11138 G01 X+10.742 Y-7.232 +N11140 G01 X+12.41 Y-6.36 +N11142 G01 X+14.063 Y-5.691 +N11144 G01 X+15.843 Y-5.169 +N11146 G01 X+17.663 Y-4.833 +N11148 G01 X+19.422 Y-4.691 +N11150 G01 X+21.153 Y-4.722 +N11152 G01 X+23.032 Y-4.949 +N11154 G01 X+24.7 Y-5.326 +N11156 G01 X+26.459 Y-5.912 +N11158 G01 X+28.172 Y-6.685 +N11160 G01 X+29.772 Y-7.608 +N11162 G01 X+31.281 Y-8.686 +N11164 G01 X+31.314 Y-8.718 +N11166 G01 X+31.735 Y-9.279 +N11168 G01 X+32.775 Y-10.874 +N11170 G01 X+33.634 Y-12.526 +N11172 G01 X+34.304 Y-14.197 +N11174 G01 X+34.821 Y-15.994 +N11176 G01 X+35.126 Y-17.672 +N11178 G01 X+35.272 Y-19.55 +N11180 G01 X+35.228 Y-21.285 +N11182 G01 X+35.009 Y-23.023 +N11184 G01 X+34.594 Y-24.815 +N11186 G01 X+34.006 Y-26.532 +N11188 G01 X+33.263 Y-28.151 +N11190 G01 X+32.337 Y-29.738 +N11192 G01 X+31.26 Y-31.229 +N11194 G01 X+31.229 Y-31.261 +N11196 G01 X+30.673 Y-31.683 +N11198 G01 X+29.186 Y-32.668 +N11200 G01 X+27.538 Y-33.545 +N11202 G01 X+25.9 Y-34.219 +N11204 G01 X+24.133 Y-34.745 +N11206 G01 X+22.324 Y-35.084 +N11208 G01 X+20.575 Y-35.227 +N11210 G01 X+18.853 Y-35.196 +N11212 G01 X+16.985 Y-34.967 +N11214 G01 X+15.328 Y-34.587 +N11216 G01 X+13.583 Y-33.997 +N11218 G01 X+11.887 Y-33.219 +N11220 G01 X+10.309 Y-32.29 +N11222 G01 X+8.823 Y-31.207 +N11224 G01 X+8.793 Y-31.177 +N11226 G01 X+8.369 Y-30.625 +N11228 G01 X+7.382 Y-29.15 +N11230 G01 X+6.502 Y-27.511 +N11232 G01 X+5.826 Y-25.881 +N11234 G01 X+5.298 Y-24.121 +N11236 G01 X+4.958 Y-22.318 +N11238 G01 X+4.813 Y-20.574 +N11240 G01 X+4.845 Y-18.856 +N11242 G01 X+5.075 Y-16.994 +N11244 G01 X+5.456 Y-15.342 +N11246 G01 X+6.049 Y-13.604 +N11248 G01 X+6.829 Y-11.917 +N11250 G01 X+7.76 Y-10.349 +N11252 G01 X+8.847 Y-8.876 +N11254 G01 X+8.875 Y-8.846 +N11256 G01 X+9.422 Y-8.422 +N11258 G01 X+10.887 Y-7.432 +N11260 G01 X+12.515 Y-6.549 +N11262 G01 X+14.137 Y-5.871 +N11264 G01 X+15.891 Y-5.341 +N11266 G01 X+17.688 Y-4.999 +N11268 G01 X+19.428 Y-4.854 +N11270 G01 X+21.141 Y-4.886 +N11272 G01 X+22.998 Y-5.117 +N11274 G01 X+24.644 Y-5.5 +N11276 G01 X+26.375 Y-6.094 +N11278 G01 X+28.054 Y-6.878 +N11280 G01 X+29.611 Y-7.811 +N11282 G01 X+31.072 Y-8.9 +N11284 G01 X+31.101 Y-8.928 +N11286 G01 X+31.637 Y-9.618 +N11288 G01 X+32.673 Y-11.18 +N11290 G01 X+33.539 Y-12.831 +N11292 G01 X+34.203 Y-14.493 +N11294 G01 X+34.664 Y-16.1 +N11296 G01 X+34.986 Y-17.9 +N11298 G01 X+35.109 Y-19.555 +N11300 G01 X+35.063 Y-21.271 +N11302 G01 X+34.841 Y-22.989 +N11304 G01 X+34.42 Y-24.757 +N11306 G01 X+33.822 Y-26.446 +N11308 G01 X+33.07 Y-28.032 +N11310 G01 X+32.134 Y-29.577 +N11312 G01 X+31.047 Y-31.02 +N11314 G01 X+30.482 Y-31.474 +N11316 G01 X+29.041 Y-32.468 +N11318 G01 X+27.432 Y-33.356 +N11320 G01 X+25.825 Y-34.039 +N11322 G01 X+24.085 Y-34.573 +N11324 G01 X+22.299 Y-34.918 +N11326 G01 X+20.569 Y-35.064 +N11328 G01 X+18.866 Y-35.032 +N11330 G01 X+17.019 Y-34.799 +N11332 G01 X+15.384 Y-34.413 +N11334 G01 X+13.667 Y-33.814 +N11336 G01 X+12.006 Y-33.026 +N11338 G01 X+10.469 Y-32.087 +N11340 G01 X+9.033 Y-30.993 +N11342 G01 X+8.578 Y-30.435 +N11344 G01 X+7.582 Y-29.005 +N11346 G01 X+6.692 Y-27.406 +N11348 G01 X+6.006 Y-25.807 +N11350 G01 X+5.47 Y-24.073 +N11352 G01 X+5.124 Y-22.293 +N11354 G01 X+4.977 Y-20.568 +N11356 G01 X+5.009 Y-18.869 +N11358 G01 X+5.243 Y-17.028 +N11360 G01 X+5.63 Y-15.398 +N11362 G01 X+6.231 Y-13.688 +N11364 G01 X+7.022 Y-12.036 +N11366 G01 X+7.964 Y-10.51 +N11368 G01 X+9.06 Y-9.085 +N11370 G01 X+9.613 Y-8.631 +N11372 G01 X+11.031 Y-7.632 +N11374 G01 X+12.62 Y-6.739 +N11376 G01 X+14.212 Y-6.051 +N11378 G01 X+15.939 Y-5.513 +N11380 G01 X+17.714 Y-5.165 +N11382 G01 X+19.433 Y-5.018 +N11384 G01 X+21.128 Y-5.05 +N11386 G01 X+22.964 Y-5.285 +N11388 G01 X+24.588 Y-5.674 +N11390 G01 X+26.291 Y-6.277 +N11392 G01 X+27.935 Y-7.071 +N11394 G01 X+29.45 Y-8.014 +N11396 G01 X+30.862 Y-9.113 +N11398 G01 X+31.553 Y-9.967 +N11400 G01 X+32.573 Y-11.478 +N11402 G01 X+33.352 Y-12.93 +N11404 G01 X+34.024 Y-14.562 +N11406 G01 X+34.493 Y-16.145 +N11408 G01 X+34.82 Y-17.923 +N11410 G01 X+34.947 Y-19.637 +N11412 G01 X+34.891 Y-21.357 +N11414 G01 X+34.635 Y-23.152 +N11416 G01 X+34.179 Y-24.91 +N11418 G01 X+33.601 Y-26.449 +N11420 G01 X+32.877 Y-27.913 +N11422 G01 X+31.931 Y-29.416 +N11424 G01 X+30.833 Y-30.811 +N11426 G01 X+30.291 Y-31.265 +N11428 G01 X+28.896 Y-32.268 +N11430 G01 X+27.327 Y-33.166 +N11432 G01 X+25.751 Y-33.859 +N11434 G01 X+24.038 Y-34.401 +N11436 G01 X+22.274 Y-34.752 +N11438 G01 X+20.564 Y-34.901 +N11440 G01 X+18.878 Y-34.868 +N11442 G01 X+17.053 Y-34.631 +N11444 G01 X+15.44 Y-34.239 +N11446 G01 X+13.751 Y-33.631 +N11448 G01 X+12.125 Y-32.833 +N11450 G01 X+10.63 Y-31.884 +N11452 G01 X+9.243 Y-30.78 +N11454 G01 X+8.35 Y-29.677 +N11456 G01 X+7.381 Y-28.214 +N11458 G01 X+6.556 Y-26.622 +N11460 G01 X+5.951 Y-25.073 +N11462 G01 X+5.49 Y-23.388 +N11464 G01 X+5.227 Y-21.766 +N11466 G01 X+5.131 Y-20.09 +N11468 G01 X+5.21 Y-18.45 +N11470 G01 X+5.461 Y-16.809 +N11472 G01 X+5.872 Y-15.235 +N11474 G01 X+6.491 Y-13.595 +N11476 G01 X+7.216 Y-12.154 +N11478 G01 X+8.167 Y-10.67 +N11480 G01 X+9.273 Y-9.295 +N11482 G01 X+10.365 Y-8.402 +N11484 G01 X+11.817 Y-7.43 +N11486 G01 X+13.4 Y-6.603 +N11488 G01 X+14.943 Y-5.995 +N11490 G01 X+16.622 Y-5.533 +N11492 G01 X+18.239 Y-5.268 +N11494 G01 X+19.91 Y-5.172 +N11496 G01 X+21.546 Y-5.251 +N11498 G01 X+23.182 Y-5.503 +N11500 G01 X+24.75 Y-5.915 +N11502 G01 X+26.383 Y-6.537 +N11504 G01 X+27.816 Y-7.264 +N11506 G01 X+29.289 Y-8.218 +N11508 G01 X+30.653 Y-9.327 +N11510 G01 X+31.442 Y-10.27 +N11512 G01 X+32.376 Y-11.612 +N11514 G01 X+33.164 Y-13.029 +N11516 G01 X+33.846 Y-14.631 +N11518 G01 X+34.322 Y-16.19 +N11520 G01 X+34.655 Y-17.946 +N11522 G01 X+34.784 Y-19.641 +N11524 G01 X+34.727 Y-21.342 +N11526 G01 X+34.467 Y-23.115 +N11528 G01 X+34.004 Y-24.849 +N11530 G01 X+33.417 Y-26.362 +N11532 G01 X+32.684 Y-27.793 +N11534 G01 X+31.728 Y-29.255 +N11536 G01 X+30.62 Y-30.6 +N11538 G01 X+29.55 Y-31.495 +N11540 G01 X+28.119 Y-32.472 +N11542 G01 X+26.554 Y-33.305 +N11544 G01 X+25.025 Y-33.917 +N11546 G01 X+23.359 Y-34.383 +N11548 G01 X+21.752 Y-34.65 +N11550 G01 X+20.089 Y-34.746 +N11552 G01 X+18.463 Y-34.667 +N11554 G01 X+16.837 Y-34.413 +N11556 G01 X+15.28 Y-33.997 +N11558 G01 X+13.66 Y-33.371 +N11560 G01 X+12.244 Y-32.64 +N11562 G01 X+10.791 Y-31.681 +N11564 G01 X+9.452 Y-30.566 +N11566 G01 X+8.556 Y-29.507 +N11568 G01 X+7.577 Y-28.087 +N11570 G01 X+6.742 Y-26.531 +N11572 G01 X+6.127 Y-25.009 +N11574 G01 X+5.66 Y-23.349 +N11576 G01 X+5.392 Y-21.747 +N11578 G01 X+5.295 Y-20.089 +N11580 G01 X+5.374 Y-18.467 +N11582 G01 X+5.63 Y-16.846 +N11584 G01 X+6.046 Y-15.295 +N11586 G01 X+6.675 Y-13.682 +N11588 G01 X+7.409 Y-12.273 +N11590 G01 X+8.37 Y-10.831 +N11592 G01 X+9.385 Y-9.613 +N11594 G01 X+10.535 Y-8.608 +N11596 G01 X+11.944 Y-7.626 +N11598 G01 X+13.491 Y-6.788 +N11600 G01 X+15.006 Y-6.172 +N11602 G01 X+16.661 Y-5.702 +N11604 G01 X+18.258 Y-5.433 +N11606 G01 X+19.911 Y-5.335 +N11608 G01 X+21.528 Y-5.415 +N11610 G01 X+23.145 Y-5.672 +N11612 G01 X+24.69 Y-6.09 +N11614 G01 X+26.296 Y-6.721 +N11616 G01 X+27.697 Y-7.457 +N11618 G01 X+29.129 Y-8.421 +N11620 G01 X+30.443 Y-9.541 +N11622 G01 X+31.351 Y-10.591 +N11624 G01 X+32.277 Y-11.899 +N11626 G01 X+33.09 Y-13.357 +N11628 G01 X+33.754 Y-14.937 +N11630 G01 X+34.243 Y-16.615 +N11632 G01 X+34.526 Y-18.263 +N11634 G01 X+34.623 Y-19.843 +N11636 G01 X+34.543 Y-21.532 +N11638 G01 X+34.298 Y-23.079 +N11640 G01 X+33.828 Y-24.788 +N11642 G01 X+33.233 Y-26.274 +N11644 G01 X+32.49 Y-27.674 +N11646 G01 X+31.524 Y-29.094 +N11648 G01 X+30.406 Y-30.391 +N11650 G01 X+29.241 Y-31.399 +N11652 G01 X+27.836 Y-32.373 +N11654 G01 X+26.463 Y-33.12 +N11656 G01 X+24.962 Y-33.74 +N11658 G01 X+23.319 Y-34.214 +N11660 G01 X+21.732 Y-34.485 +N11662 G01 X+20.089 Y-34.583 +N11664 G01 X+18.481 Y-34.502 +N11666 G01 X+16.834 Y-34.235 +N11668 G01 X+15.339 Y-33.822 +N11670 G01 X+13.748 Y-33.187 +N11672 G01 X+12.362 Y-32.446 +N11674 G01 X+10.952 Y-31.478 +N11676 G01 X+9.662 Y-30.353 +N11678 G01 X+8.652 Y-29.2 +N11680 G01 X+7.676 Y-27.806 +N11682 G01 X+6.927 Y-26.44 +N11684 G01 X+6.304 Y-24.946 +N11686 G01 X+5.829 Y-23.31 +N11688 G01 X+5.556 Y-21.727 +N11690 G01 X+5.458 Y-20.088 +N11692 G01 X+5.539 Y-18.485 +N11694 G01 X+5.807 Y-16.844 +N11696 G01 X+6.221 Y-15.354 +N11698 G01 X+6.859 Y-13.77 +N11700 G01 X+7.602 Y-12.392 +N11702 G01 X+8.573 Y-10.992 +N11704 G01 X+9.598 Y-9.818 +N11706 G01 X+10.841 Y-8.704 +N11708 G01 X+12.225 Y-7.725 +N11710 G01 X+13.583 Y-6.973 +N11712 G01 X+15.07 Y-6.348 +N11714 G01 X+16.7 Y-5.871 +N11716 G01 X+18.277 Y-5.598 +N11718 G01 X+19.912 Y-5.499 +N11720 G01 X+21.511 Y-5.58 +N11722 G01 X+23.147 Y-5.849 +N11724 G01 X+24.631 Y-6.265 +N11726 G01 X+26.208 Y-6.905 +N11728 G01 X+27.578 Y-7.65 +N11730 G01 X+28.968 Y-8.624 +N11732 G01 X+30.234 Y-9.755 +N11734 G01 X+31.189 Y-10.807 +N11736 G01 X+32.166 Y-12.146 +N11738 G01 X+32.984 Y-13.588 +N11740 G01 X+33.632 Y-15.113 +N11742 G01 X+34.101 Y-16.703 +N11744 G01 X+34.385 Y-18.336 +N11746 G01 X+34.481 Y-19.991 +N11748 G01 X+34.387 Y-21.646 +N11750 G01 X+34.105 Y-23.28 +N11752 G01 X+33.637 Y-24.87 +N11754 G01 X+32.991 Y-26.397 +N11756 G01 X+32.175 Y-27.84 +N11758 G01 X+31.199 Y-29.18 +N11760 G01 X+30.077 Y-30.4 +N11762 G01 X+28.822 Y-31.483 +N11764 G01 X+27.452 Y-32.416 +N11766 G01 X+25.984 Y-33.187 +N11768 G01 X+24.438 Y-33.784 +N11770 G01 X+22.834 Y-34.201 +N11772 G01 X+21.192 Y-34.432 +N11774 G01 X+19.535 Y-34.474 +N11776 G01 X+17.884 Y-34.326 +N11778 G01 X+16.26 Y-33.99 +N11780 G01 X+14.686 Y-33.471 +N11782 G01 X+13.181 Y-32.775 +N11784 G01 X+11.766 Y-31.912 +N11786 G01 X+10.458 Y-30.893 +N11788 G01 X+9.276 Y-29.731 +N11790 G01 X+8.234 Y-28.442 +N11792 G01 X+7.346 Y-27.042 +N11794 G01 X+6.625 Y-25.55 +N11796 G01 X+6.078 Y-23.985 +N11798 G01 X+5.714 Y-22.367 +N11800 G01 X+5.537 Y-20.719 +N11802 G01 X+5.549 Y-19.061 +N11804 G01 X+5.751 Y-17.416 +N11806 G01 X+6.14 Y-15.805 +N11808 G01 X+6.71 Y-14.248 +N11810 G01 X+7.455 Y-12.767 +N11812 G01 X+8.364 Y-11.381 +N11814 G01 X+9.425 Y-10.107 +N11816 G01 X+10.625 Y-8.963 +N11818 G01 X+11.948 Y-7.964 +N11820 G01 X+13.376 Y-7.123 +N11822 G01 X+14.891 Y-6.45 +N11824 G01 X+16.473 Y-5.955 +N11826 G01 X+18.101 Y-5.644 +N11828 G01 X+19.754 Y-5.521 +N11830 G01 X+21.411 Y-5.588 +N11832 G01 X+23.049 Y-5.844 +N11834 G01 X+24.647 Y-6.285 +N11836 G01 X+26.184 Y-6.906 +N11838 G01 X+27.64 Y-7.698 +N11840 G01 X+28.996 Y-8.652 +N11842 G01 X+30.24 Y-9.76 +N11844 G03 X+34.476 Y-9.517 I+1.996 J+2.239 F16500 +N11846 G01 Z+0.367 +N11848 G00 Z+5.367 +N11850 G00 X+41.958 Y+0.212 Z-0.45 +N11852 G00 Z-5.45 +N11854 G01 X+41.95 Y+0 F16500 +N11856 G01 X+41.92 Y-40.314 F16500 +N11858 G01 X+41.912 Y-40.362 +N11860 G01 X+41.737 Y-40.879 +N11862 G01 X+41.716 Y-40.919 +N11864 G01 X+41.393 Y-41.36 +N11866 G01 X+41.36 Y-41.393 +N11868 G01 X+40.919 Y-41.716 +N11870 G01 X+40.879 Y-41.737 +N11872 G01 X+40.356 Y-41.915 +N11874 G01 X+40.007 Y-41.949 +N11876 G01 X-0.314 Y-41.92 +N11878 G01 X-0.362 Y-41.912 +N11880 G01 X-0.879 Y-41.737 +N11882 G01 X-0.919 Y-41.716 +N11884 G01 X-1.36 Y-41.393 +N11886 G01 X-1.393 Y-41.36 +N11888 G01 X-1.716 Y-40.919 +N11890 G01 X-1.737 Y-40.879 +N11892 G01 X-1.915 Y-40.356 +N11894 G01 X-1.949 Y-40.007 +N11896 G01 X-1.92 Y+0.314 +N11898 G01 X-1.912 Y+0.362 +N11900 G01 X-1.737 Y+0.879 +N11902 G01 X-1.716 Y+0.919 +N11904 G01 X-1.393 Y+1.36 +N11906 G01 X-1.36 Y+1.393 +N11908 G01 X-0.919 Y+1.716 +N11910 G01 X-0.879 Y+1.737 +N11912 G01 X-0.356 Y+1.915 +N11914 G01 X-0.007 Y+1.949 +N11916 G01 X+40.314 Y+1.92 +N11918 G01 X+40.362 Y+1.912 +N11920 G01 X+40.879 Y+1.737 +N11922 G01 X+40.919 Y+1.716 +N11924 G01 X+41.091 Y+1.59 +N11926 G01 X+41.165 Y+1.549 +N11928 G01 X+41.365 Y+1.379 +N11930 G01 X+41.529 Y+1.193 +N11932 G01 X+41.828 Y+0.639 +N11934 G01 X+41.919 Y+0.264 +N11936 G01 X+41.938 Y+0 +N11938 G01 X+41.886 Y-34.877 +N11940 G01 X+41.884 Y-35.09 +N11942 G01 X+41.849 Y-40.301 +N11944 G01 X+41.782 Y-40.583 +N11946 G01 X+41.497 Y-41.125 +N11948 G01 X+41.332 Y-41.318 +N11950 G01 X+41.153 Y-41.476 +N11952 G01 X+40.618 Y-41.766 +N11954 G01 X+40.26 Y-41.853 +N11956 G01 X+14.383 Y-41.879 +N11958 G01 X+4.91 Y-41.819 +N11960 G01 X+0 Y-41.811 +N11962 G01 X-0.296 Y-41.785 +N11964 G01 X-0.562 Y-41.72 +N11966 G01 X-1.085 Y-41.444 +N11968 G01 X-1.272 Y-41.286 +N11970 G01 X-1.424 Y-41.113 +N11972 G01 X-1.703 Y-40.597 +N11974 G01 X-1.788 Y-40.252 +N11976 G01 X-1.85 Y-17.222 +N11978 G01 X-1.747 Y-0.679 +N11980 G01 X-1.72 Y+0.28 +N11982 G01 X-1.657 Y+0.541 +N11984 G01 X-1.392 Y+1.046 +N11986 G01 X-1.239 Y+1.226 +N11988 G01 X-1.073 Y+1.372 +N11990 G01 X-0.576 Y+1.641 +N11992 G01 X-0.239 Y+1.724 +N11994 G01 X+0 Y+1.742 +N11996 G01 X+7.593 Y+1.762 +N11998 G01 X+21.296 Y+1.818 +N12000 G01 X+33.61 Y+1.712 +N12002 G01 X+35.09 Y+1.688 +N12004 G01 X+40.267 Y+1.655 +N12006 G01 X+40.52 Y+1.595 +N12008 G01 X+41.005 Y+1.34 +N12010 G01 X+41.179 Y+1.193 +N12012 G01 X+41.32 Y+1.033 +N12014 G01 X+41.579 Y+0.554 +N12016 G01 X+41.659 Y+0.23 +N12018 G01 X+41.676 Y+0 +N12020 G01 X+41.692 Y-6.605 +N12022 G01 X+41.783 Y-18.951 +N12024 G01 X+41.708 Y-30.062 +N12026 G01 X+41.617 Y-35.09 +N12028 G01 X+41.609 Y-40 +N12030 G01 X+41.586 Y-40.261 +N12032 G01 X+41.528 Y-40.498 +N12034 G01 X+41.284 Y-40.963 +N12036 G01 X+41.143 Y-41.129 +N12038 G01 X+40.991 Y-41.264 +N12040 G01 X+40.532 Y-41.512 +N12042 G01 X+40.225 Y-41.588 +N12044 G01 X+33.395 Y-41.629 +N12046 G01 X+22.407 Y-41.742 +N12048 G01 X+12.16 Y-41.689 +N12050 G01 X+4.91 Y-41.547 +N12052 G01 X+0 Y-41.539 +N12054 G01 X-0.25 Y-41.517 +N12056 G01 X-0.475 Y-41.462 +N12058 G01 X-0.92 Y-41.228 +N12060 G01 X-1.079 Y-41.093 +N12062 G01 X-1.208 Y-40.948 +N12064 G01 X-1.446 Y-40.509 +N12066 G01 X-1.519 Y-40.216 +N12068 G01 X-1.555 Y-33.889 +N12070 G01 X-1.696 Y-23.889 +N12072 G01 X-1.672 Y-14.383 +N12074 G01 X-1.49 Y-5.37 +N12076 G01 X-1.447 Y+0.232 +N12078 G01 X-1.395 Y+0.453 +N12080 G01 X-1.173 Y+0.877 +N12082 G01 X-1.044 Y+1.03 +N12084 G01 X-0.905 Y+1.153 +N12086 G01 X-0.487 Y+1.379 +N12088 G01 X-0.203 Y+1.45 +N12090 G01 X+0 Y+1.465 +N12092 G01 X+5.864 Y+1.483 +N12094 G01 X+15.247 Y+1.649 +N12096 G01 X+24.259 Y+1.645 +N12098 G01 X+32.901 Y+1.476 +N12100 G01 X+35.09 Y+1.406 +N12102 G01 X+40.219 Y+1.378 +N12104 G01 X+40.43 Y+1.328 +N12106 G01 X+40.834 Y+1.117 +N12108 G01 X+40.98 Y+0.994 +N12110 G01 X+41.097 Y+0.862 +N12112 G01 X+41.313 Y+0.465 +N12114 G01 X+41.381 Y+0.193 +N12116 G01 X+41.395 Y+0 +N12118 G01 X+41.409 Y-5.617 +N12120 G01 X+41.597 Y-14.299 +N12122 G01 X+41.618 Y-22.781 +N12124 G01 X+41.478 Y-30.802 +N12126 G01 X+41.336 Y-35.09 +N12128 G01 X+41.328 Y-40 +N12130 G01 X+41.309 Y-40.214 +N12132 G01 X+41.262 Y-40.408 +N12134 G01 X+41.061 Y-40.792 +N12136 G01 X+40.944 Y-40.93 +N12138 G01 X+40.82 Y-41.041 +N12140 G01 X+40.442 Y-41.246 +N12142 G01 X+40.189 Y-41.31 +N12144 G01 X+34.383 Y-41.342 +N12146 G01 X+26.139 Y-41.548 +N12148 G01 X+18.086 Y-41.585 +N12150 G01 X+10.432 Y-41.459 +N12152 G01 X+4.91 Y-41.266 +N12154 G01 X+0 Y-41.258 +N12156 G01 X-0.202 Y-41.24 +N12158 G01 X-0.385 Y-41.195 +N12160 G01 X-0.749 Y-41.005 +N12162 G01 X-0.881 Y-40.895 +N12164 G01 X-0.985 Y-40.777 +N12166 G01 X-1.18 Y-40.42 +N12168 G01 X-1.24 Y-40.18 +N12170 G01 X-1.275 Y-34.383 +N12172 G01 X-1.499 Y-26.481 +N12174 G01 X-1.551 Y-18.951 +N12176 G01 X-1.439 Y-11.543 +N12178 G01 X-1.194 Y-4.259 +N12180 G01 X-1.17 Y+0.184 +N12182 G01 X-1.129 Y+0.362 +N12184 G01 X-0.95 Y+0.706 +N12186 G01 X-0.845 Y+0.831 +N12188 G01 X-0.734 Y+0.93 +N12190 G01 X-0.397 Y+1.113 +N12192 G01 X-0.166 Y+1.172 +N12194 G01 X+0 Y+1.184 +N12196 G01 X+5.617 Y+1.207 +N12198 G01 X+12.978 Y+1.444 +N12200 G01 X+20.185 Y+1.515 +N12202 G01 X+27.346 Y+1.421 +N12204 G01 X+34.383 Y+1.161 +N12206 G01 X+35.09 Y+1.125 +N12208 G01 X+40.172 Y+1.101 +N12210 G01 X+40.34 Y+1.063 +N12212 G01 X+40.664 Y+0.894 +N12214 G01 X+40.782 Y+0.796 +N12216 G01 X+40.875 Y+0.692 +N12218 G01 X+41.048 Y+0.375 +N12220 G01 X+41.103 Y+0.157 +N12222 G01 X+41.115 Y+0 +N12224 G01 X+41.13 Y-5.37 +N12226 G01 X+41.387 Y-12.42 +N12228 G01 X+41.478 Y-19.473 +N12230 G01 X+41.402 Y-26.366 +N12232 G01 X+41.16 Y-33.148 +N12234 G01 X+41.06 Y-35.09 +N12236 G01 X+41.052 Y-40 +N12238 G01 X+41.037 Y-40.167 +N12240 G01 X+41.001 Y-40.319 +N12242 G01 X+40.842 Y-40.624 +N12244 G01 X+40.75 Y-40.736 +N12246 G01 X+40.652 Y-40.823 +N12248 G01 X+40.354 Y-40.986 +N12250 G01 X+40.153 Y-41.037 +N12252 G01 X+34.63 Y-41.066 +N12254 G01 X+27.84 Y-41.336 +N12256 G01 X+21.181 Y-41.441 +N12258 G01 X+14.63 Y-41.384 +N12260 G01 X+8.086 Y-41.162 +N12262 G01 X+4.91 Y-40.994 +N12264 G01 X+0 Y-40.986 +N12266 G01 X-0.156 Y-40.973 +N12268 G01 X-0.298 Y-40.938 +N12270 G01 X-0.584 Y-40.79 +N12272 G01 X-0.689 Y-40.703 +N12274 G01 X-0.77 Y-40.612 +N12276 G01 X-0.923 Y-40.333 +N12278 G01 X-0.972 Y-40.144 +N12280 G01 X-1.002 Y-34.63 +N12282 G01 X-1.285 Y-28.086 +N12284 G01 X-1.403 Y-21.667 +N12286 G01 X-1.357 Y-15.247 +N12288 G01 X-1.144 Y-8.827 +N12290 G01 X-0.928 Y-4.383 +N12292 G01 X-0.907 Y+0.138 +N12294 G01 X-0.876 Y+0.277 +N12296 G01 X-0.738 Y+0.544 +N12298 G01 X-0.657 Y+0.643 +N12300 G01 X-0.572 Y+0.718 +N12302 G01 X-0.316 Y+0.859 +N12304 G01 X-0.27 Y+0.875 +N12306 G01 X-0.012 Y+0.917 +N12308 G01 X+5.37 Y+0.939 +N12310 G01 X+11.79 Y+1.237 +N12312 G01 X+18.076 Y+1.365 +N12314 G01 X+24.259 Y+1.329 +N12316 G01 X+30.297 Y+1.133 +N12318 G01 X+35.09 Y+0.863 +N12320 G01 X+40.127 Y+0.842 +N12322 G01 X+40.256 Y+0.814 +N12324 G01 X+40.504 Y+0.686 +N12326 G01 X+40.596 Y+0.61 +N12328 G01 X+40.666 Y+0.532 +N12330 G01 X+40.797 Y+0.295 +N12332 G01 X+40.812 Y+0.249 +N12334 G01 X+40.851 Y+0.012 +N12336 G01 X+40.874 Y-5.37 +N12338 G01 X+41.182 Y-11.543 +N12340 G01 X+41.325 Y-17.761 +N12342 G01 X+41.296 Y-23.889 +N12344 G01 X+41.097 Y-29.951 +N12346 G01 X+40.793 Y-35.09 +N12348 G01 X+40.784 Y-39.988 +N12350 G01 X+40.747 Y-40.227 +N12352 G01 X+40.731 Y-40.273 +N12354 G01 X+40.63 Y-40.461 +N12356 G01 X+40.56 Y-40.547 +N12358 G01 X+40.489 Y-40.61 +N12360 G01 X+40.268 Y-40.732 +N12362 G01 X+40.118 Y-40.772 +N12364 G01 X+34.63 Y-40.806 +N12366 G01 X+28.476 Y-41.133 +N12368 G01 X+22.531 Y-41.283 +N12370 G01 X+16.605 Y-41.265 +N12372 G01 X+10.679 Y-41.075 +N12374 G01 X+4.91 Y-40.722 +N12376 G01 X+0.012 Y-40.714 +N12378 G01 X-0.204 Y-40.68 +N12380 G01 X-0.25 Y-40.664 +N12382 G01 X-0.419 Y-40.574 +N12384 G01 X-0.497 Y-40.511 +N12386 G01 X-0.555 Y-40.447 +N12388 G01 X-0.66 Y-40.257 +N12390 G01 X-0.677 Y-40.196 +N12392 G01 X-0.712 Y-39.691 +N12394 G01 X-0.737 Y-34.63 +N12396 G01 X-1.075 Y-28.704 +N12398 G01 X-1.24 Y-22.781 +N12400 G01 X-1.231 Y-16.975 +N12402 G01 X-1.054 Y-11.296 +N12404 G01 X-0.707 Y-5.617 +N12406 G01 X-0.651 Y-4.383 +N12408 G01 X-0.634 Y+0.091 +N12410 G01 X-0.615 Y+0.184 +N12412 G01 X-0.597 Y+0.226 +N12414 G01 X-0.466 Y+0.436 +N12416 G01 X-0.438 Y+0.469 +N12418 G01 X-0.404 Y+0.499 +N12420 G01 X-0.228 Y+0.597 +N12422 G01 X-0.181 Y+0.612 +N12424 G01 X-0.012 Y+0.64 +N12426 G01 X+5.37 Y+0.669 +N12428 G01 X+11.049 Y+1.015 +N12430 G01 X+16.605 Y+1.192 +N12432 G01 X+22.16 Y+1.205 +N12434 G01 X+27.58 Y+1.056 +N12436 G01 X+33.125 Y+0.736 +N12438 G01 X+35.09 Y+0.582 +N12440 G01 X+40.079 Y+0.565 +N12442 G01 X+40.161 Y+0.549 +N12444 G01 X+40.203 Y+0.531 +N12446 G01 X+40.386 Y+0.417 +N12448 G01 X+40.42 Y+0.389 +N12450 G01 X+40.463 Y+0.333 +N12452 G01 X+40.531 Y+0.205 +N12454 G01 X+40.547 Y+0.159 +N12456 G01 X+40.571 Y+0.012 +N12458 G01 X+40.602 Y-5.37 +N12460 G01 X+40.963 Y-10.96 +N12462 G01 X+41.149 Y-16.358 +N12464 G01 X+41.171 Y-21.924 +N12466 G01 X+41.027 Y-27.249 +N12468 G01 X+40.713 Y-32.654 +N12470 G01 X+40.516 Y-35.09 +N12472 G01 X+40.508 Y-39.988 +N12474 G01 X+40.486 Y-40.133 +N12476 G01 X+40.465 Y-40.188 +N12478 G01 X+40.371 Y-40.34 +N12480 G01 X+40.342 Y-40.374 +N12482 G01 X+40.286 Y-40.412 +N12484 G01 X+40.093 Y-40.492 +N12486 G01 X+40.037 Y-40.503 +N12488 G01 X+34.63 Y-40.538 +N12490 G01 X+29.198 Y-40.908 +N12492 G01 X+23.889 Y-41.106 +N12494 G01 X+18.618 Y-41.14 +N12496 G01 X+13.42 Y-41.013 +N12498 G01 X+8.086 Y-40.712 +N12500 G01 X+4.91 Y-40.451 +N12502 G01 X+0.012 Y-40.443 +N12504 G01 X-0.112 Y-40.424 +N12506 G01 X-0.167 Y-40.403 +N12508 G01 X-0.294 Y-40.324 +N12510 G01 X-0.327 Y-40.296 +N12512 G01 X-0.36 Y-40.241 +N12514 G01 X-0.434 Y-40.023 +N12516 G01 X-0.442 Y-39.976 +N12518 G01 X-0.453 Y-34.877 +N12520 G01 X-0.847 Y-29.444 +N12522 G01 X-1.06 Y-24.259 +N12524 G01 X-1.107 Y-18.951 +N12526 G01 X-0.985 Y-13.765 +N12528 G01 X-0.695 Y-8.58 +N12530 G01 X-0.384 Y-4.63 +N12532 G01 X-0.357 Y+0.078 +N12534 G01 X-0.335 Y+0.157 +N12536 G01 X-0.279 Y+0.246 +N12538 G01 X-0.2 Y+0.309 +N12540 G01 X-0.023 Y+0.368 +N12542 G01 X+0.025 Y+0.376 +N12544 G01 X+4.91 Y+0.368 +N12546 G01 X+10.049 Y+0.769 +N12548 G01 X+15.247 Y+1.008 +N12550 G01 X+20.432 Y+1.075 +N12552 G01 X+25.617 Y+0.969 +N12554 G01 X+30.647 Y+0.698 +N12556 G01 X+35.09 Y+0.319 +N12558 G01 X+40.057 Y+0.295 +N12560 G01 X+40.136 Y+0.272 +N12562 G01 X+40.195 Y+0.235 +N12564 G01 X+40.258 Y+0.156 +N12566 G01 X+40.303 Y+0.024 +N12568 G01 X+40.311 Y-0.025 +N12570 G01 X+40.302 Y-4.91 +N12572 G01 X+40.713 Y-9.938 +N12574 G01 X+40.965 Y-15.172 +N12576 G01 X+41.038 Y-20.1 +N12578 G01 X+40.95 Y-25 +N12580 G01 X+40.694 Y-29.951 +N12582 G01 X+40.271 Y-34.877 +N12584 G01 X+40.25 Y-35.082 +N12586 G01 X+40.228 Y-40.035 +N12588 G01 X+40.205 Y-40.113 +N12590 G01 X+40.131 Y-40.189 +N12592 G01 X+40.063 Y-40.223 +N12594 G01 X+39.996 Y-40.238 +N12596 G01 X+35.123 Y-40.232 +N12598 G01 X+29.951 Y-40.667 +N12600 G01 X+25 Y-40.918 +N12602 G01 X+20.1 Y-41 +N12604 G01 X+15.247 Y-40.917 +N12606 G01 X+10.432 Y-40.669 +N12608 G01 X+5.617 Y-40.254 +N12610 G01 X+4.918 Y-40.18 +N12612 G01 X+0.03 Y-40.17 +N12614 G01 X-0.027 Y-40.159 +N12616 G01 X-0.144 Y-40.063 +N12618 G01 X-0.17 Y-39.97 +N12620 G01 X-0.162 Y-35.13 +N12622 G01 X-0.608 Y-30.062 +N12624 G01 X-0.872 Y-25.123 +N12626 G01 X-0.962 Y-20.327 +N12628 G01 X-0.884 Y-15.494 +N12630 G01 X-0.635 Y-10.679 +N12632 G01 X-0.213 Y-5.864 +N12634 G01 X-0.108 Y-4.63 +N12636 G01 X-0.08 Y-0.049 +N12638 G02 X+0.07 Y+0.1 I+0.15 J-0.001 +N12640 G01 X+4.903 Y+0.091 +N12642 G01 X+9.691 Y+0.536 +N12644 G01 X+14.383 Y+0.811 +N12646 G01 X+19.045 Y+0.921 +N12648 G01 X+23.642 Y+0.87 +N12650 G01 X+28.21 Y+0.66 +N12652 G01 X+32.901 Y+0.276 +N12654 G01 X+35.082 Y+0.039 +N12656 G01 X+39.882 Y+0.032 +N12658 G02 X+40.032 Y-0.118 I+0 J-0.15 +N12660 G01 X+40.026 Y-4.903 +N12662 G01 X+40.49 Y-9.703 +N12664 G01 X+40.77 Y-14.299 +N12666 G01 X+40.888 Y-18.951 +N12668 G01 X+40.838 Y-23.642 +N12670 G01 X+40.623 Y-28.21 +N12672 G01 X+40.23 Y-32.901 +N12674 G01 X+39.988 Y-35.082 +N12676 G01 X+39.981 Y-39.831 +N12678 G02 X+39.83 Y-39.98 I-0.15 J+0.001 +N12680 G01 X+35.131 Y-39.974 +N12682 G01 X+30.309 Y-40.45 +N12684 G01 X+25.617 Y-40.742 +N12686 G01 X+20.955 Y-40.861 +N12688 G01 X+16.358 Y-40.808 +N12690 G01 X+11.79 Y-40.588 +N12692 G01 X+7.355 Y-40.211 +N12694 G01 X+4.918 Y-39.936 +N12696 G01 X+0.247 Y-39.929 +N12698 G01 X+0.141 Y-39.885 +N12700 G01 X+0.071 Y-39.753 +N12702 G01 X+0.077 Y-35.131 +N12704 G01 X-0.411 Y-30.309 +N12706 G01 X-0.711 Y-25.617 +N12708 G01 X-0.831 Y-21.181 +N12710 G01 X-0.786 Y-16.605 +N12712 G01 X-0.577 Y-12.16 +N12714 G01 X-0.192 Y-7.593 +N12716 G01 X+0.116 Y-4.637 +N12718 G01 X+0.122 Y-0.273 +N12720 G02 X+0.273 Y-0.123 I+0.15 J+0 +N12722 G01 X+4.902 Y-0.129 +N12724 G01 X+9.444 Y+0.351 +N12726 G01 X+13.861 Y+0.654 +N12728 G01 X+18.333 Y+0.797 +N12730 G01 X+22.778 Y+0.773 +N12732 G01 X+27.346 Y+0.575 +N12734 G01 X+31.914 Y+0.199 +N12736 G01 X+35.082 Y-0.167 +N12738 G01 X+39.675 Y-0.185 +N12740 G02 X+39.825 Y-0.335 I+0 J-0.15 +N12742 G01 X+39.818 Y-4.902 +N12744 G01 X+40.3 Y-9.353 +N12746 G01 X+40.615 Y-13.765 +N12748 G01 X+40.766 Y-18.333 +N12750 G01 X+40.741 Y-22.781 +N12752 G01 X+40.543 Y-27.249 +N12754 G01 X+40.183 Y-31.582 +N12756 G01 X+39.772 Y-35.081 +N12758 G01 X+39.764 Y-39.614 +N12760 G02 X+39.614 Y-39.764 I-0.15 J+0 +N12762 G01 X+35.132 Y-39.757 +N12764 G01 X+30.556 Y-40.262 +N12766 G01 X+26.139 Y-40.582 +N12768 G01 X+21.667 Y-40.733 +N12770 G01 X+17.222 Y-40.707 +N12772 G01 X+12.901 Y-40.513 +N12774 G01 X+8.58 Y-40.151 +N12776 G01 X+4.919 Y-39.711 +N12778 G01 X+0.446 Y-39.692 +N12780 G02 X+0.297 Y-39.542 I+0.001 J+0.15 +N12782 G01 X+0.304 Y-35.132 +N12784 G01 X-0.215 Y-30.556 +N12786 G01 X-0.544 Y-26.139 +N12788 G01 X-0.695 Y-21.924 +N12790 G01 X-0.679 Y-17.469 +N12792 G01 X-0.492 Y-13.194 +N12794 G01 X-0.128 Y-8.827 +N12796 G01 X+0.35 Y-4.638 +N12798 G01 X+0.358 Y-0.508 +N12800 G02 X+0.508 Y-0.358 I+0.15 J+0 +N12802 G01 X+4.901 Y-0.365 +N12804 G01 X+9.198 Y+0.144 +N12806 G01 X+13.519 Y+0.487 +N12808 G01 X+17.84 Y+0.657 +N12810 G01 X+22.16 Y+0.654 +N12812 G01 X+26.481 Y+0.474 +N12814 G01 X+30.647 Y+0.134 +N12816 G01 X+34.877 Y-0.381 +N12818 G01 X+35.08 Y-0.41 +N12820 G01 X+39.432 Y-0.431 +N12822 G02 X+39.581 Y-0.582 I-0.001 J-0.15 +N12824 G01 X+39.575 Y-4.901 +N12826 G01 X+40.085 Y-9.074 +N12828 G01 X+40.443 Y-13.42 +N12830 G01 X+40.622 Y-17.761 +N12832 G01 X+40.625 Y-21.924 +N12834 G01 X+40.457 Y-26.139 +N12836 G01 X+40.122 Y-30.309 +N12838 G01 X+39.63 Y-34.383 +N12840 G01 X+39.529 Y-35.079 +N12842 G01 X+39.521 Y-39.371 +N12844 G02 X+39.371 Y-39.521 I-0.15 J+0 +N12846 G01 X+35.133 Y-39.514 +N12848 G01 X+30.802 Y-40.05 +N12850 G01 X+26.728 Y-40.395 +N12852 G01 X+22.531 Y-40.582 +N12854 G01 X+18.333 Y-40.596 +N12856 G01 X+14.299 Y-40.446 +N12858 G01 X+10.185 Y-40.126 +N12860 G01 X+6.111 Y-39.642 +N12862 G01 X+4.92 Y-39.468 +N12864 G01 X+0.69 Y-39.445 +N12866 G02 X+0.54 Y-39.295 I+0 J+0.15 +N12868 G01 X+0.547 Y-35.133 +N12870 G01 X-0.003 Y-30.802 +N12872 G01 X-0.356 Y-26.728 +N12874 G01 X-0.548 Y-22.531 +N12876 G01 X-0.563 Y-18.333 +N12878 G01 X-0.408 Y-14.299 +N12880 G01 X-0.081 Y-10.185 +N12882 G01 X+0.415 Y-6.111 +N12884 G01 X+0.593 Y-4.763 +N12886 G01 X+0.601 Y-0.751 +N12888 G02 X+0.751 Y-0.601 I+0.15 J+0 +N12890 G01 X+4.9 Y-0.608 +N12892 G01 X+8.951 Y-0.072 +N12894 G01 X+12.978 Y+0.297 +N12896 G01 X+16.975 Y+0.5 +N12898 G01 X+21.049 Y+0.538 +N12900 G01 X+25.123 Y+0.404 +N12902 G01 X+29.321 Y+0.085 +N12904 G01 X+33.395 Y-0.401 +N12906 G01 X+35.079 Y-0.654 +N12908 G01 X+39.189 Y-0.678 +N12910 G02 X+39.339 Y-0.828 I+0 J-0.15 +N12912 G01 X+39.333 Y-4.9 +N12914 G01 X+39.896 Y-9.074 +N12916 G01 X+40.275 Y-13.194 +N12918 G01 X+40.475 Y-17.222 +N12920 G01 X+40.505 Y-21.181 +N12922 G01 X+40.37 Y-25.123 +N12924 G01 X+40.057 Y-29.198 +N12926 G01 X+39.583 Y-33.148 +N12928 G01 X+39.29 Y-35.079 +N12930 G01 X+39.283 Y-39.133 +N12932 G02 X+39.132 Y-39.283 I-0.15 J+0 +N12934 G01 X+35.134 Y-39.277 +N12936 G01 X+30.802 Y-39.866 +N12938 G01 X+26.728 Y-40.245 +N12940 G01 X+22.781 Y-40.443 +N12942 G01 X+18.704 Y-40.473 +N12944 G01 X+14.63 Y-40.322 +N12946 G01 X+10.679 Y-40.004 +N12948 G01 X+6.605 Y-39.497 +N12950 G01 X+4.921 Y-39.234 +N12952 G01 X+0.924 Y-39.227 +N12954 G02 X+0.774 Y-39.076 I+0 J+0.15 +N12956 G01 X+0.78 Y-35.134 +N12958 G01 X+0.178 Y-30.802 +N12960 G01 X-0.209 Y-26.728 +N12962 G01 X-0.412 Y-22.781 +N12964 G01 X-0.445 Y-18.951 +N12966 G01 X-0.303 Y-14.877 +N12968 G01 X+0.007 Y-10.96 +N12970 G01 X+0.481 Y-7.099 +N12972 G01 X+0.823 Y-4.764 +N12974 G01 X+0.83 Y-0.988 +N12976 G01 X+0.874 Y-0.882 +N12978 G01 X+0.988 Y-0.83 +N12980 G01 X+4.899 Y-0.836 +N12982 G01 X+8.951 Y-0.252 +N12984 G01 X+12.751 Y+0.133 +N12986 G01 X+16.605 Y+0.36 +N12988 G01 X+20.432 Y+0.42 +N12990 G01 X+24.259 Y+0.316 +N12992 G01 X+28.21 Y+0.035 +N12994 G01 X+32.16 Y-0.425 +N12996 G01 X+35.079 Y-0.878 +N12998 G01 X+38.965 Y-0.885 +N13000 G02 X+39.115 Y-1.035 I+0 J-0.15 +N13002 G01 X+39.109 Y-4.899 +N13004 G01 X+39.69 Y-8.827 +N13006 G01 X+40.09 Y-12.654 +N13008 G01 X+40.329 Y-16.605 +N13010 G01 X+40.391 Y-20.432 +N13012 G01 X+40.289 Y-24.187 +N13014 G01 X+40.011 Y-28.086 +N13016 G01 X+39.581 Y-31.809 +N13018 G01 X+39.07 Y-35.079 +N13020 G01 X+39.063 Y-38.889 +N13022 G01 X+39.019 Y-38.994 +N13024 G01 X+38.888 Y-39.063 +N13026 G01 X+35.135 Y-39.058 +N13028 G01 X+31.049 Y-39.665 +N13030 G01 X+27.249 Y-40.065 +N13032 G01 X+23.395 Y-40.3 +N13034 G01 X+19.568 Y-40.363 +N13036 G01 X+15.741 Y-40.255 +N13038 G01 X+12.037 Y-39.988 +N13040 G01 X+8.333 Y-39.558 +N13042 G01 X+4.922 Y-39.018 +N13044 G01 X+1.138 Y-39.012 +N13046 G02 X+0.989 Y-38.862 I+0.001 J+0.15 +N13048 G01 X+0.994 Y-35.135 +N13050 G01 X+0.376 Y-31.049 +N13052 G01 X-0.031 Y-27.249 +N13054 G01 X-0.271 Y-23.395 +N13056 G01 X-0.335 Y-19.568 +N13058 G01 X-0.226 Y-15.741 +N13060 G01 X+0.047 Y-12.037 +N13062 G01 X+0.484 Y-8.333 +N13064 G01 X+1.033 Y-4.764 +N13066 G01 X+1.049 Y-1.19 +N13068 G02 X+1.199 Y-1.04 I+0.15 J+0 +N13070 G01 X+4.898 Y-1.045 +N13072 G01 X+8.704 Y-0.449 +N13074 G01 X+12.407 Y-0.033 +N13076 G01 X+16.111 Y+0.22 +N13078 G01 X+19.9 Y+0.308 +N13080 G01 X+23.642 Y+0.225 +N13082 G01 X+27.346 Y-0.024 +N13084 G01 X+31.173 Y-0.457 +N13086 G01 X+34.877 Y-1.047 +N13088 G01 X+35.077 Y-1.084 +N13090 G01 X+38.759 Y-1.091 +N13092 G02 X+38.909 Y-1.241 I+0 J-0.15 +N13094 G01 X+38.904 Y-4.898 +N13096 G01 X+39.493 Y-8.58 +N13098 G01 X+39.934 Y-12.42 +N13100 G01 X+40.187 Y-16.039 +N13102 G01 X+40.28 Y-19.815 +N13104 G01 X+40.196 Y-23.642 +N13106 G01 X+39.951 Y-27.249 +N13108 G01 X+39.519 Y-31.049 +N13110 G01 X+38.902 Y-34.877 +N13112 G01 X+38.865 Y-35.076 +N13114 G01 X+38.857 Y-38.707 +N13116 G02 X+38.707 Y-38.857 I-0.15 J+0 +N13118 G01 X+35.135 Y-38.852 +N13120 G01 X+31.049 Y-39.503 +N13122 G01 X+27.346 Y-39.922 +N13124 G01 X+23.642 Y-40.172 +N13126 G01 X+19.815 Y-40.252 +N13128 G01 X+16.111 Y-40.155 +N13130 G01 X+12.42 Y-39.887 +N13132 G01 X+8.827 Y-39.461 +N13134 G01 X+5.123 Y-38.851 +N13136 G01 X+4.924 Y-38.813 +N13138 G01 X+1.358 Y-38.806 +N13140 G01 X+1.252 Y-38.762 +N13142 G01 X+1.195 Y-38.641 +N13144 G01 X+1.199 Y-35.136 +N13146 G01 X+0.538 Y-31.049 +N13148 G01 X+0.111 Y-27.346 +N13150 G01 X-0.143 Y-23.642 +N13152 G01 X-0.224 Y-19.815 +N13154 G01 X-0.125 Y-16.111 +N13156 G01 X+0.147 Y-12.42 +N13158 G01 X+0.58 Y-8.827 +N13160 G01 X+1.2 Y-5.123 +N13162 G01 X+1.239 Y-4.889 +N13164 G01 X+1.246 Y-1.396 +N13166 G02 X+1.396 Y-1.246 I+0.15 J+0 +N13168 G01 X+4.897 Y-1.251 +N13170 G01 X+8.704 Y-0.614 +N13172 G01 X+12.407 Y-0.169 +N13174 G01 X+16.111 Y+0.102 +N13176 G01 X+19.673 Y+0.196 +N13178 G01 X+23.395 Y+0.119 +N13180 G01 X+27.099 Y-0.135 +N13182 G01 X+30.647 Y-0.546 +N13184 G01 X+34.383 Y-1.156 +N13186 G01 X+35.076 Y-1.29 +N13188 G01 X+38.518 Y-1.298 +N13190 G01 X+38.624 Y-1.342 +N13192 G01 X+38.658 Y-1.376 +N13194 G01 X+38.702 Y-1.482 +N13196 G01 X+38.696 Y-4.897 +N13198 G01 X+39.325 Y-8.58 +N13200 G01 X+39.771 Y-12.16 +N13202 G01 X+40.05 Y-15.741 +N13204 G01 X+40.162 Y-19.246 +N13206 G01 X+40.112 Y-22.781 +N13208 G01 X+39.893 Y-26.366 +N13210 G01 X+39.503 Y-29.951 +N13212 G01 X+38.924 Y-33.642 +N13214 G01 X+38.649 Y-35.076 +N13216 G01 X+38.641 Y-38.491 +N13218 G02 X+38.491 Y-38.641 I-0.15 J+0 +N13220 G01 X+35.136 Y-38.636 +N13222 G01 X+31.296 Y-39.294 +N13224 G01 X+27.593 Y-39.755 +N13226 G01 X+23.889 Y-40.035 +N13228 G01 X+20.327 Y-40.132 +N13230 G01 X+16.605 Y-40.052 +N13232 G01 X+12.901 Y-39.788 +N13234 G01 X+9.444 Y-39.375 +N13236 G01 X+5.864 Y-38.775 +N13238 G01 X+4.924 Y-38.588 +N13240 G01 X+1.605 Y-38.58 +N13242 G01 X+1.499 Y-38.536 +N13244 G01 X+1.464 Y-38.501 +N13246 G01 X+1.42 Y-38.395 +N13248 G01 X+1.425 Y-35.137 +N13250 G01 X+0.754 Y-31.296 +N13252 G01 X+0.285 Y-27.593 +N13254 G01 X+0 Y-23.889 +N13256 G01 X-0.098 Y-20.432 +N13258 G01 X-0.034 Y-16.975 +N13260 G01 X+0.193 Y-13.519 +N13262 G01 X+0.602 Y-9.938 +N13264 G01 X+1.182 Y-6.39 +N13266 G01 X+1.473 Y-4.891 +N13268 G01 X+1.481 Y-1.631 +N13270 G02 X+1.631 Y-1.481 I+0.15 J+0 +N13272 G01 X+4.896 Y-1.486 +N13274 G01 X+8.418 Y-0.848 +N13276 G01 X+11.914 Y-0.378 +N13278 G01 X+15.493 Y-0.071 +N13280 G01 X+19.045 Y+0.06 +N13282 G01 X+22.531 Y+0.019 +N13284 G01 X+25.988 Y-0.188 +N13286 G01 X+29.568 Y-0.579 +N13288 G01 X+33.125 Y-1.147 +N13290 G01 X+35.076 Y-1.533 +N13292 G01 X+38.271 Y-1.541 +N13294 G01 X+38.377 Y-1.585 +N13296 G01 X+38.415 Y-1.623 +N13298 G01 X+38.458 Y-1.729 +N13300 G01 X+38.453 Y-4.896 +N13302 G01 X+39.09 Y-8.333 +N13304 G01 X+39.567 Y-11.79 +N13306 G01 X+39.873 Y-15.172 +N13308 G01 X+40.02 Y-18.618 +N13310 G01 X+39.998 Y-22.16 +N13312 G01 X+39.805 Y-25.617 +N13314 G01 X+39.426 Y-29.198 +N13316 G01 X+38.886 Y-32.654 +N13318 G01 X+38.406 Y-35.076 +N13320 G01 X+38.398 Y-38.248 +N13322 G02 X+38.248 Y-38.398 I-0.15 J+0 +N13324 G01 X+35.137 Y-38.393 +N13326 G01 X+31.296 Y-39.1 +N13328 G01 X+27.84 Y-39.568 +N13330 G01 X+24.259 Y-39.874 +N13332 G01 X+20.679 Y-39.997 +N13334 G01 X+17.222 Y-39.942 +N13336 G01 X+13.765 Y-39.714 +N13338 G01 X+10.432 Y-39.332 +N13340 G01 X+6.875 Y-38.745 +N13342 G01 X+4.925 Y-38.345 +N13344 G01 X+1.852 Y-38.337 +N13346 G01 X+1.746 Y-38.293 +N13348 G01 X+1.707 Y-38.254 +N13350 G01 X+1.663 Y-38.148 +N13352 G01 X+1.668 Y-35.138 +N13354 G01 X+0.949 Y-31.296 +N13356 G01 X+0.473 Y-27.84 +N13358 G01 X+0.161 Y-24.259 +N13360 G01 X+0.036 Y-20.679 +N13362 G01 X+0.093 Y-17.222 +N13364 G01 X+0.323 Y-13.765 +N13366 G01 X+0.712 Y-10.432 +N13368 G01 X+1.266 Y-7.099 +N13370 G01 X+1.716 Y-4.891 +N13372 G01 X+1.724 Y-1.874 +N13374 G02 X+1.874 Y-1.724 I+0.15 J+0 +N13376 G01 X+4.895 Y-1.729 +N13378 G01 X+8.418 Y-1.045 +N13380 G01 X+11.79 Y-0.557 +N13382 G01 X+15.247 Y-0.229 +N13384 G01 X+18.704 Y-0.078 +N13386 G01 X+22.16 Y-0.103 +N13388 G01 X+25.617 Y-0.306 +N13390 G01 X+29.04 Y-0.683 +N13392 G01 X+32.407 Y-1.225 +N13394 G01 X+35.075 Y-1.777 +N13396 G01 X+38.066 Y-1.79 +N13398 G02 X+38.215 Y-1.94 I-0.001 J-0.15 +N13400 G01 X+38.21 Y-4.895 +N13402 G01 X+38.891 Y-8.333 +N13404 G01 X+39.402 Y-11.79 +N13406 G01 X+39.729 Y-15.172 +N13408 G01 X+39.887 Y-18.618 +N13410 G01 X+39.87 Y-21.924 +N13412 G01 X+39.677 Y-25.377 +N13414 G01 X+39.32 Y-28.704 +N13416 G01 X+38.767 Y-32.168 +N13418 G01 X+38.162 Y-35.075 +N13420 G01 X+38.154 Y-38.004 +N13422 G02 X+38.004 Y-38.154 I-0.15 J+0 +N13424 G01 X+35.138 Y-38.15 +N13426 G01 X+31.296 Y-38.906 +N13428 G01 X+27.84 Y-39.406 +N13430 G01 X+24.507 Y-39.716 +N13432 G01 X+21.181 Y-39.857 +N13434 G01 X+17.84 Y-39.83 +N13436 G01 X+14.383 Y-39.62 +N13438 G01 X+10.96 Y-39.231 +N13440 G01 X+7.593 Y-38.671 +N13442 G01 X+4.925 Y-38.101 +N13444 G01 X+2.056 Y-38.087 +N13446 G02 X+1.907 Y-37.937 I+0.001 J+0.15 +N13448 G01 X+1.911 Y-35.138 +N13450 G01 X+1.143 Y-31.296 +N13452 G01 X+0.635 Y-27.84 +N13454 G01 X+0.32 Y-24.507 +N13456 G01 X+0.178 Y-21.296 +N13458 G01 X+0.196 Y-18.086 +N13460 G01 X+0.375 Y-14.877 +N13462 G01 X+0.732 Y-11.543 +N13464 G01 X+1.241 Y-8.333 +N13466 G01 X+1.959 Y-4.925 +N13468 G01 X+1.967 Y-2.117 +N13470 G02 X+2.118 Y-1.968 I+0.15 J-0.001 +N13472 G01 X+4.894 Y-1.972 +N13474 G01 X+8.191 Y-1.284 +N13476 G01 X+11.524 Y-0.757 +N13478 G01 X+14.877 Y-0.401 +N13480 G01 X+18.076 Y-0.227 +N13482 G01 X+21.296 Y-0.213 +N13484 G01 X+24.506 Y-0.364 +N13486 G01 X+27.84 Y-0.693 +N13488 G01 X+31.173 Y-1.2 +N13490 G01 X+34.383 Y-1.856 +N13492 G01 X+35.073 Y-2.02 +N13494 G01 X+37.822 Y-2.036 +N13496 G02 X+37.972 Y-2.187 I+0 J-0.15 +N13498 G01 X+37.967 Y-4.894 +N13500 G01 X+38.693 Y-8.333 +N13502 G01 X+39.204 Y-11.543 +N13504 G01 X+39.563 Y-14.877 +N13506 G01 X+39.74 Y-18.086 +N13508 G01 X+39.753 Y-21.296 +N13510 G01 X+39.6 Y-24.507 +N13512 G01 X+39.266 Y-27.84 +N13514 G01 X+38.774 Y-31.049 +N13516 G01 X+38.085 Y-34.383 +N13518 G01 X+37.92 Y-35.073 +N13520 G01 X+37.911 Y-37.761 +N13522 G02 X+37.761 Y-37.911 I-0.15 J+0 +N13524 G01 X+35.139 Y-37.907 +N13526 G01 X+31.582 Y-38.658 +N13528 G01 X+28.21 Y-39.196 +N13530 G01 X+25 Y-39.536 +N13532 G01 X+21.667 Y-39.714 +N13534 G01 X+18.333 Y-39.711 +N13536 G01 X+15.172 Y-39.54 +N13538 G01 X+12.037 Y-39.209 +N13540 G01 X+8.827 Y-38.703 +N13542 G01 X+5.617 Y-38.027 +N13544 G01 X+4.927 Y-37.859 +N13546 G01 X+2.299 Y-37.84 +N13548 G02 X+2.15 Y-37.69 I+0.001 J+0.15 +N13550 G01 X+2.154 Y-35.14 +N13552 G01 X+1.391 Y-31.582 +N13554 G01 X+0.846 Y-28.21 +N13556 G01 X+0.5 Y-25 +N13558 G01 X+0.32 Y-21.667 +N13560 G01 X+0.323 Y-18.333 +N13562 G01 X+0.496 Y-15.172 +N13564 G01 X+0.832 Y-12.037 +N13566 G01 X+1.345 Y-8.827 +N13568 G01 X+2.031 Y-5.617 +N13570 G01 X+2.202 Y-4.893 +N13572 G01 X+2.211 Y-2.361 +N13574 G02 X+2.361 Y-2.211 I+0.15 J+0 +N13576 G01 X+4.893 Y-2.215 +N13578 G01 X+8.086 Y-1.505 +N13580 G01 X+11.296 Y-0.956 +N13582 G01 X+14.623 Y-0.569 +N13584 G01 X+17.84 Y-0.368 +N13586 G01 X+21.049 Y-0.342 +N13588 G01 X+24.259 Y-0.488 +N13590 G01 X+27.58 Y-0.822 +N13592 G01 X+30.926 Y-1.347 +N13594 G01 X+34.136 Y-2.03 +N13596 G01 X+35.073 Y-2.263 +N13598 G01 X+37.579 Y-2.283 +N13600 G02 X+37.728 Y-2.433 I-0.001 J-0.15 +N13602 G01 X+37.725 Y-4.893 +N13604 G01 X+38.445 Y-8.086 +N13606 G01 X+39.002 Y-11.296 +N13608 G01 X+39.396 Y-14.63 +N13610 G01 X+39.595 Y-17.761 +N13612 G01 X+39.627 Y-20.955 +N13614 G01 X+39.482 Y-24.187 +N13616 G01 X+39.18 Y-27.249 +N13618 G01 X+38.718 Y-30.309 +N13620 G01 X+38.088 Y-33.395 +N13622 G01 X+37.676 Y-35.072 +N13624 G01 X+37.668 Y-37.518 +N13626 G02 X+37.518 Y-37.668 I-0.15 J+0 +N13628 G01 X+35.14 Y-37.664 +N13630 G01 X+31.582 Y-38.461 +N13632 G01 X+28.476 Y-38.992 +N13634 G01 X+25.377 Y-39.358 +N13636 G01 X+22.16 Y-39.564 +N13638 G01 X+18.951 Y-39.592 +N13640 G01 X+15.741 Y-39.442 +N13642 G01 X+12.654 Y-39.129 +N13644 G01 X+9.444 Y-38.627 +N13646 G01 X+6.111 Y-37.916 +N13648 G01 X+4.928 Y-37.615 +N13650 G01 X+2.542 Y-37.594 +N13652 G02 X+2.393 Y-37.443 I+0.001 J+0.15 +N13654 G01 X+2.397 Y-35.14 +N13656 G01 X+1.589 Y-31.582 +N13658 G01 X+1.05 Y-28.476 +N13660 G01 X+0.678 Y-25.377 +N13662 G01 X+0.469 Y-22.16 +N13664 G01 X+0.442 Y-18.951 +N13666 G01 X+0.594 Y-15.741 +N13668 G01 X+0.911 Y-12.654 +N13670 G01 X+1.42 Y-9.444 +N13672 G01 X+2.074 Y-6.39 +N13674 G01 X+2.446 Y-4.894 +N13676 G01 X+2.454 Y-2.604 +N13678 G02 X+2.604 Y-2.454 I+0.15 J+0 +N13680 G01 X+4.892 Y-2.458 +N13682 G01 X+8.086 Y-1.706 +N13684 G01 X+11.296 Y-1.125 +N13686 G01 X+14.383 Y-0.738 +N13688 G01 X+17.469 Y-0.518 +N13690 G01 X+20.527 Y-0.467 +N13692 G01 X+23.642 Y-0.586 +N13694 G01 X+26.806 Y-0.883 +N13696 G01 X+29.815 Y-1.331 +N13698 G01 X+32.901 Y-1.96 +N13700 G01 X+35.073 Y-2.507 +N13702 G01 X+37.336 Y-2.53 +N13704 G02 X+37.485 Y-2.68 I-0.001 J-0.15 +N13706 G01 X+37.482 Y-4.892 +N13708 G01 X+38.244 Y-8.086 +N13710 G01 X+38.815 Y-11.186 +N13712 G01 X+39.217 Y-14.299 +N13714 G01 X+39.448 Y-17.469 +N13716 G01 X+39.498 Y-20.679 +N13718 G01 X+39.38 Y-23.642 +N13720 G01 X+39.088 Y-26.728 +N13722 G01 X+38.64 Y-29.725 +N13724 G01 X+37.986 Y-32.901 +N13726 G01 X+37.433 Y-35.072 +N13728 G01 X+37.425 Y-37.275 +N13730 G02 X+37.274 Y-37.424 I-0.15 J+0.001 +N13732 G01 X+35.141 Y-37.421 +N13734 G01 X+31.809 Y-38.216 +N13736 G01 X+28.704 Y-38.79 +N13738 G01 X+25.617 Y-39.188 +N13740 G01 X+22.531 Y-39.414 +N13742 G01 X+19.473 Y-39.467 +N13744 G01 X+16.358 Y-39.345 +N13746 G01 X+13.42 Y-39.068 +N13748 G01 X+10.432 Y-38.623 +N13750 G01 X+7.355 Y-37.993 +N13752 G01 X+4.928 Y-37.372 +N13754 G01 X+2.785 Y-37.347 +N13756 G02 X+2.637 Y-37.197 I+0.002 J+0.15 +N13758 G01 X+2.64 Y-35.142 +N13760 G01 X+1.834 Y-31.809 +N13762 G01 X+1.252 Y-28.704 +N13764 G01 X+0.849 Y-25.617 +N13766 G01 X+0.62 Y-22.531 +N13768 G01 X+0.567 Y-19.473 +N13770 G01 X+0.69 Y-16.358 +N13772 G01 X+0.971 Y-13.42 +N13774 G01 X+1.421 Y-10.432 +N13776 G01 X+2.06 Y-7.355 +N13778 G01 X+2.689 Y-4.895 +N13780 G01 X+2.697 Y-2.847 +N13782 G02 X+2.848 Y-2.698 I+0.15 J-0.001 +N13784 G01 X+4.891 Y-2.701 +N13786 G01 X+8.086 Y-1.907 +N13788 G01 X+11.296 Y-1.295 +N13790 G01 X+14.383 Y-0.886 +N13792 G01 X+17.469 Y-0.654 +N13794 G01 X+20.527 Y-0.6 +N13796 G01 X+23.642 Y-0.724 +N13798 G01 X+26.58 Y-1.009 +N13800 G01 X+29.568 Y-1.465 +N13802 G01 X+32.645 Y-2.112 +N13804 G01 X+35.071 Y-2.75 +N13806 G01 X+37.092 Y-2.757 +N13808 G02 X+37.242 Y-2.908 I+0 J-0.15 +N13810 G01 X+37.239 Y-4.891 +N13812 G01 X+38.044 Y-8.086 +N13814 G01 X+38.646 Y-11.186 +N13816 G01 X+39.07 Y-14.299 +N13818 G01 X+39.301 Y-17.222 +N13820 G01 X+39.372 Y-20.1 +N13822 G01 X+39.283 Y-23.025 +N13824 G01 X+39.008 Y-26.139 +N13826 G01 X+38.56 Y-29.198 +N13828 G01 X+37.952 Y-32.168 +N13830 G01 X+37.194 Y-35.071 +N13832 G01 X+37.186 Y-37.036 +N13834 G02 X+37.036 Y-37.186 I-0.15 J+0 +N13836 G01 X+35.142 Y-37.183 +N13838 G01 X+31.809 Y-38.02 +N13840 G01 X+28.704 Y-38.625 +N13842 G01 X+25.617 Y-39.045 +N13844 G01 X+22.531 Y-39.282 +N13846 G01 X+19.568 Y-39.339 +N13848 G01 X+16.605 Y-39.228 +N13850 G01 X+13.519 Y-38.932 +N13852 G01 X+10.432 Y-38.452 +N13854 G01 X+7.355 Y-37.79 +N13856 G01 X+4.929 Y-37.138 +N13858 G01 X+3.02 Y-37.13 +N13860 G02 X+2.87 Y-36.98 I+0 J+0.15 +N13862 G01 X+2.873 Y-35.142 +N13864 G01 X+2.026 Y-31.809 +N13866 G01 X+1.414 Y-28.704 +N13868 G01 X+0.989 Y-25.617 +N13870 G01 X+0.749 Y-22.531 +N13872 G01 X+0.691 Y-19.568 +N13874 G01 X+0.804 Y-16.605 +N13876 G01 X+1.103 Y-13.519 +N13878 G01 X+1.588 Y-10.432 +N13880 G01 X+2.258 Y-7.355 +N13882 G01 X+2.918 Y-4.896 +N13884 G01 X+2.926 Y-3.087 +N13886 G01 X+2.97 Y-2.981 +N13888 G01 X+3.087 Y-2.927 +N13890 G01 X+4.89 Y-2.93 +N13892 G01 X+7.832 Y-2.156 +N13894 G01 X+10.802 Y-1.539 +N13896 G01 X+13.861 Y-1.084 +N13898 G01 X+16.728 Y-0.822 +N13900 G01 X+19.673 Y-0.721 +N13902 G01 X+22.778 Y-0.798 +N13904 G01 X+25.701 Y-1.045 +N13906 G01 X+28.704 Y-1.473 +N13908 G01 X+31.667 Y-2.071 +N13910 G01 X+34.63 Y-2.844 +N13912 G01 X+35.069 Y-2.973 +N13914 G01 X+35.112 Y-2.98 +N13916 G01 X+36.868 Y-2.982 +N13918 G02 X+37.018 Y-3.132 I+0 J-0.15 +N13920 G01 X+37.015 Y-4.89 +N13922 G01 X+37.8 Y-7.84 +N13924 G01 X+38.45 Y-10.96 +N13926 G01 X+38.901 Y-14.012 +N13928 G01 X+39.158 Y-16.902 +N13930 G01 X+39.251 Y-19.815 +N13932 G01 X+39.172 Y-22.781 +N13934 G01 X+38.933 Y-25.617 +N13936 G01 X+38.491 Y-28.704 +N13938 G01 X+37.906 Y-31.582 +N13940 G01 X+37.106 Y-34.63 +N13942 G01 X+36.975 Y-35.069 +N13944 G01 X+36.969 Y-35.112 +N13946 G01 X+36.967 Y-36.79 +N13948 G01 X+36.923 Y-36.896 +N13950 G01 X+36.79 Y-36.966 +N13952 G01 X+35.143 Y-36.964 +N13954 G01 X+31.914 Y-37.816 +N13956 G01 X+28.951 Y-38.43 +N13958 G01 X+25.864 Y-38.884 +N13960 G01 X+22.781 Y-39.148 +N13962 G01 X+19.815 Y-39.222 +N13964 G01 X+16.975 Y-39.129 +N13966 G01 X+14.012 Y-38.858 +N13968 G01 X+11.186 Y-38.435 +N13970 G01 X+8.333 Y-37.844 +N13972 G01 X+5.37 Y-37.056 +N13974 G01 X+4.931 Y-36.924 +N13976 G01 X+4.888 Y-36.917 +N13978 G01 X+3.235 Y-36.915 +N13980 G02 X+3.085 Y-36.765 I+0 J+0.15 +N13982 G01 X+3.088 Y-35.143 +N13984 G01 X+2.227 Y-31.914 +N13986 G01 X+1.607 Y-28.951 +N13988 G01 X+1.148 Y-25.864 +N13990 G01 X+0.895 Y-23.025 +N13992 G01 X+0.805 Y-20.1 +N13994 G01 X+0.886 Y-17.222 +N13996 G01 X+1.129 Y-14.383 +N13998 G01 X+1.538 Y-11.543 +N14000 G01 X+2.139 Y-8.58 +N14002 G01 X+2.92 Y-5.617 +N14004 G01 X+3.128 Y-4.896 +N14006 G01 X+3.134 Y-4.856 +N14008 G01 X+3.147 Y-3.286 +N14010 G02 X+3.297 Y-3.137 I+0.15 J-0.001 +N14012 G01 X+4.89 Y-3.139 +N14014 G01 X+4.93 Y-3.134 +N14016 G01 X+7.832 Y-2.332 +N14018 G01 X+10.802 Y-1.688 +N14020 G01 X+13.634 Y-1.242 +N14022 G01 X+16.605 Y-0.948 +N14024 G01 X+19.568 Y-0.834 +N14026 G01 X+22.531 Y-0.9 +N14028 G01 X+25.37 Y-1.133 +N14030 G01 X+28.21 Y-1.531 +N14032 G01 X+31.173 Y-2.124 +N14034 G01 X+34.136 Y-2.898 +N14036 G01 X+35.069 Y-3.179 +N14038 G01 X+35.112 Y-3.186 +N14040 G01 X+36.662 Y-3.188 +N14042 G02 X+36.812 Y-3.338 I+0 J-0.15 +N14044 G01 X+36.81 Y-4.889 +N14046 G01 X+36.815 Y-4.93 +N14048 G01 X+37.627 Y-7.84 +N14050 G01 X+38.252 Y-10.679 +N14052 G01 X+38.712 Y-13.519 +N14054 G01 X+39.005 Y-16.358 +N14056 G01 X+39.133 Y-19.246 +N14058 G01 X+39.089 Y-22.16 +N14060 G01 X+38.876 Y-25 +N14062 G01 X+38.496 Y-27.84 +N14064 G01 X+37.92 Y-30.802 +N14066 G01 X+37.197 Y-33.642 +N14068 G01 X+36.769 Y-35.069 +N14070 G01 X+36.763 Y-35.112 +N14072 G01 X+36.761 Y-36.611 +N14074 G02 X+36.61 Y-36.76 I-0.15 J+0.001 +N14076 G01 X+35.144 Y-36.758 +N14078 G01 X+35.104 Y-36.764 +N14080 G01 X+31.914 Y-37.646 +N14082 G01 X+28.951 Y-38.285 +N14084 G01 X+26.139 Y-38.723 +N14086 G01 X+23.324 Y-38.998 +N14088 G01 X+20.432 Y-39.11 +N14090 G01 X+17.469 Y-39.042 +N14092 G01 X+14.63 Y-38.805 +N14094 G01 X+11.79 Y-38.399 +N14096 G01 X+8.827 Y-37.795 +N14098 G01 X+5.864 Y-37.005 +N14100 G01 X+4.932 Y-36.718 +N14102 G01 X+4.888 Y-36.711 +N14104 G01 X+3.457 Y-36.709 +N14106 G01 X+3.351 Y-36.665 +N14108 G01 X+3.291 Y-36.543 +N14110 G01 X+3.293 Y-35.144 +N14112 G01 X+3.288 Y-35.104 +N14114 G01 X+2.397 Y-31.914 +N14116 G01 X+1.752 Y-28.951 +N14118 G01 X+1.309 Y-26.139 +N14120 G01 X+1.031 Y-23.324 +N14122 G01 X+0.918 Y-20.432 +N14124 G01 X+0.987 Y-17.469 +N14126 G01 X+1.226 Y-14.63 +N14128 G01 X+1.636 Y-11.79 +N14130 G01 X+2.246 Y-8.827 +N14132 G01 X+3.044 Y-5.864 +N14134 G01 X+3.334 Y-4.898 +N14136 G01 X+3.34 Y-4.855 +N14138 G01 X+3.342 Y-3.493 +N14140 G02 X+3.493 Y-3.343 I+0.15 J+0 +N14142 G01 X+4.889 Y-3.345 +N14144 G01 X+4.93 Y-3.339 +N14146 G01 X+7.832 Y-2.505 +N14148 G01 X+10.802 Y-1.835 +N14150 G01 X+13.634 Y-1.37 +N14152 G01 X+16.605 Y-1.065 +N14154 G01 X+19.568 Y-0.946 +N14156 G01 X+22.531 Y-1.015 +N14158 G01 X+25.37 Y-1.257 +N14160 G01 X+28.21 Y-1.671 +N14162 G01 X+31.173 Y-2.287 +N14164 G01 X+34.136 Y-3.092 +N14166 G01 X+35.068 Y-3.385 +N14168 G01 X+35.113 Y-3.392 +N14170 G01 X+36.42 Y-3.394 +N14172 G01 X+36.525 Y-3.438 +N14174 G01 X+36.562 Y-3.474 +N14176 G01 X+36.606 Y-3.581 +N14178 G01 X+36.604 Y-4.889 +N14180 G01 X+36.609 Y-4.931 +N14182 G01 X+37.453 Y-7.84 +N14184 G01 X+38.102 Y-10.679 +N14186 G01 X+38.566 Y-13.42 +N14188 G01 X+38.885 Y-16.358 +N14190 G01 X+39.019 Y-19.246 +N14192 G01 X+38.972 Y-22.16 +N14194 G01 X+38.75 Y-25 +N14196 G01 X+38.354 Y-27.84 +N14198 G01 X+37.754 Y-30.802 +N14200 G01 X+37 Y-33.642 +N14202 G01 X+36.554 Y-35.068 +N14204 G01 X+36.547 Y-35.113 +N14206 G01 X+36.545 Y-36.395 +N14208 G02 X+36.395 Y-36.545 I-0.15 J+0 +N14210 G01 X+35.145 Y-36.543 +N14212 G01 X+35.103 Y-36.549 +N14214 G01 X+31.914 Y-37.466 +N14216 G01 X+28.951 Y-38.131 +N14218 G01 X+26.139 Y-38.588 +N14220 G01 X+23.395 Y-38.87 +N14222 G01 X+20.679 Y-38.987 +N14224 G01 X+17.84 Y-38.938 +N14226 G01 X+14.877 Y-38.7 +N14228 G01 X+12.16 Y-38.313 +N14230 G01 X+9.353 Y-37.743 +N14232 G01 X+6.605 Y-37.018 +N14234 G01 X+4.932 Y-36.493 +N14236 G01 X+4.887 Y-36.486 +N14238 G01 X+3.704 Y-36.484 +N14240 G01 X+3.598 Y-36.44 +N14242 G01 X+3.56 Y-36.402 +N14244 G01 X+3.516 Y-36.296 +N14246 G01 X+3.518 Y-35.145 +N14248 G01 X+3.512 Y-35.103 +N14250 G01 X+2.584 Y-31.914 +N14252 G01 X+1.912 Y-28.951 +N14254 G01 X+1.45 Y-26.139 +N14256 G01 X+1.165 Y-23.395 +N14258 G01 X+1.047 Y-20.679 +N14260 G01 X+1.095 Y-17.84 +N14262 G01 X+1.336 Y-14.877 +N14264 G01 X+1.727 Y-12.16 +N14266 G01 X+2.304 Y-9.353 +N14268 G01 X+3.037 Y-6.605 +N14270 G01 X+3.568 Y-4.898 +N14272 G01 X+3.575 Y-4.854 +N14274 G01 X+3.577 Y-3.727 +N14276 G02 X+3.727 Y-3.577 I+0.15 J+0 +N14278 G01 X+4.888 Y-3.579 +N14280 G01 X+4.931 Y-3.573 +N14282 G01 X+7.832 Y-2.703 +N14284 G01 X+10.802 Y-2.003 +N14286 G01 X+13.519 Y-1.535 +N14288 G01 X+16.358 Y-1.219 +N14290 G01 X+19.045 Y-1.085 +N14292 G01 X+21.914 Y-1.118 +N14294 G01 X+24.753 Y-1.331 +N14296 G01 X+27.58 Y-1.724 +N14298 G01 X+30.297 Y-2.269 +N14300 G01 X+33.125 Y-3.013 +N14302 G01 X+35.068 Y-3.629 +N14304 G01 X+35.113 Y-3.636 +N14306 G01 X+36.213 Y-3.641 +N14308 G02 X+36.362 Y-3.791 I-0.001 J-0.15 +N14310 G01 X+36.361 Y-4.888 +N14312 G01 X+36.367 Y-4.931 +N14314 G01 X+37.249 Y-7.84 +N14316 G01 X+37.928 Y-10.679 +N14318 G01 X+38.413 Y-13.42 +N14320 G01 X+38.726 Y-16.111 +N14322 G01 X+38.88 Y-18.951 +N14324 G01 X+38.859 Y-21.667 +N14326 G01 X+38.658 Y-24.507 +N14328 G01 X+38.292 Y-27.249 +N14330 G01 X+37.765 Y-29.951 +N14332 G01 X+37.071 Y-32.654 +N14334 G01 X+36.31 Y-35.068 +N14336 G01 X+36.304 Y-35.113 +N14338 G01 X+36.302 Y-36.152 +N14340 G02 X+36.152 Y-36.302 I-0.15 J+0 +N14342 G01 X+35.146 Y-36.3 +N14344 G01 X+35.102 Y-36.306 +N14346 G01 X+31.914 Y-37.265 +N14348 G01 X+29.198 Y-37.91 +N14350 G01 X+26.481 Y-38.389 +N14352 G01 X+23.642 Y-38.712 +N14354 G01 X+20.955 Y-38.849 +N14356 G01 X+18.086 Y-38.815 +N14358 G01 X+15.247 Y-38.597 +N14360 G01 X+12.42 Y-38.196 +N14362 G01 X+9.703 Y-37.639 +N14364 G01 X+6.875 Y-36.879 +N14366 G01 X+4.932 Y-36.25 +N14368 G01 X+4.887 Y-36.242 +N14370 G01 X+3.908 Y-36.236 +N14372 G02 X+3.759 Y-36.085 I+0.001 J+0.15 +N14374 G01 X+3.761 Y-35.146 +N14376 G01 X+3.755 Y-35.102 +N14378 G01 X+2.786 Y-31.914 +N14380 G01 X+2.133 Y-29.198 +N14382 G01 X+1.649 Y-26.481 +N14384 G01 X+1.323 Y-23.642 +N14386 G01 X+1.184 Y-20.955 +N14388 G01 X+1.219 Y-18.086 +N14390 G01 X+1.439 Y-15.247 +N14392 G01 X+1.844 Y-12.42 +N14394 G01 X+2.407 Y-9.703 +N14396 G01 X+3.175 Y-6.875 +N14398 G01 X+3.811 Y-4.899 +N14400 G01 X+3.818 Y-4.853 +N14402 G01 X+3.82 Y-3.97 +N14404 G02 X+3.97 Y-3.82 I+0.15 J+0 +N14406 G01 X+4.887 Y-3.822 +N14408 G01 X+4.932 Y-3.815 +N14410 G01 X+7.832 Y-2.907 +N14412 G01 X+10.556 Y-2.23 +N14414 G01 X+13.272 Y-1.725 +N14416 G01 X+16.111 Y-1.379 +N14418 G01 X+18.819 Y-1.223 +N14420 G01 X+21.667 Y-1.241 +N14422 G01 X+24.506 Y-1.448 +N14424 G01 X+27.346 Y-1.842 +N14426 G01 X+30.062 Y-2.396 +N14428 G01 X+32.901 Y-3.16 +N14430 G01 X+35.068 Y-3.872 +N14432 G01 X+35.113 Y-3.879 +N14434 G01 X+35.971 Y-3.887 +N14436 G02 X+36.119 Y-4.038 I-0.002 J-0.15 +N14438 G01 X+36.118 Y-4.887 +N14440 G01 X+36.125 Y-4.932 +N14442 G01 X+37.045 Y-7.84 +N14444 G01 X+37.753 Y-10.679 +N14446 G01 X+38.259 Y-13.42 +N14448 G01 X+38.579 Y-16.039 +N14450 G01 X+38.741 Y-18.704 +N14452 G01 X+38.73 Y-21.543 +N14454 G01 X+38.549 Y-24.187 +N14456 G01 X+38.172 Y-27.022 +N14458 G01 X+37.637 Y-29.725 +N14460 G01 X+36.934 Y-32.407 +N14462 G01 X+36.067 Y-35.067 +N14464 G01 X+36.06 Y-35.114 +N14466 G01 X+36.059 Y-35.909 +N14468 G02 X+35.908 Y-36.058 I-0.15 J+0.001 +N14470 G01 X+35.147 Y-36.057 +N14472 G01 X+35.101 Y-36.064 +N14474 G01 X+31.914 Y-37.064 +N14476 G01 X+29.198 Y-37.737 +N14478 G01 X+26.481 Y-38.237 +N14480 G01 X+23.642 Y-38.573 +N14482 G01 X+20.955 Y-38.716 +N14484 G01 X+18.333 Y-38.692 +N14486 G01 X+15.494 Y-38.48 +N14488 G01 X+12.654 Y-38.078 +N14490 G01 X+9.938 Y-37.513 +N14492 G01 X+7.099 Y-36.733 +N14494 G01 X+4.932 Y-36.006 +N14496 G01 X+4.887 Y-35.999 +N14498 G01 X+4.151 Y-35.99 +N14500 G02 X+4.003 Y-35.839 I+0.002 J+0.15 +N14502 G01 X+4.004 Y-35.147 +N14504 G01 X+3.997 Y-35.101 +N14506 G01 X+2.987 Y-31.914 +N14508 G01 X+2.307 Y-29.198 +N14510 G01 X+1.802 Y-26.481 +N14512 G01 X+1.462 Y-23.642 +N14514 G01 X+1.317 Y-20.955 +N14516 G01 X+1.342 Y-18.333 +N14518 G01 X+1.528 Y-15.741 +N14520 G01 X+1.919 Y-12.901 +N14522 G01 X+2.474 Y-10.185 +N14524 G01 X+3.242 Y-7.355 +N14526 G01 X+4.054 Y-4.899 +N14528 G01 X+4.062 Y-4.853 +N14530 G01 X+4.063 Y-4.213 +N14532 G02 X+4.214 Y-4.064 I+0.15 J-0.001 +N14534 G01 X+4.886 Y-4.065 +N14536 G01 X+4.933 Y-4.057 +N14538 G01 X+7.593 Y-3.181 +N14540 G01 X+10.275 Y-2.47 +N14542 G01 X+12.978 Y-1.928 +N14544 G01 X+15.741 Y-1.554 +N14546 G01 X+18.333 Y-1.372 +N14548 G01 X+21.049 Y-1.355 +N14550 G01 X+23.642 Y-1.505 +N14552 G01 X+26.235 Y-1.818 +N14554 G01 X+28.814 Y-2.291 +N14556 G01 X+31.42 Y-2.934 +N14558 G01 X+34.136 Y-3.782 +N14560 G01 X+35.067 Y-4.115 +N14562 G01 X+35.115 Y-4.123 +N14564 G01 X+35.728 Y-4.133 +N14566 G02 X+35.876 Y-4.284 I-0.002 J-0.15 +N14568 G01 X+35.875 Y-4.886 +N14570 G01 X+35.883 Y-4.933 +N14572 G01 X+36.768 Y-7.593 +N14574 G01 X+37.523 Y-10.432 +N14576 G01 X+38.069 Y-13.194 +N14578 G01 X+38.435 Y-15.988 +N14580 G01 X+38.605 Y-18.618 +N14582 G01 X+38.609 Y-21.181 +N14584 G01 X+38.438 Y-23.889 +N14586 G01 X+38.106 Y-26.481 +N14588 G01 X+37.582 Y-29.198 +N14590 G01 X+36.905 Y-31.809 +N14592 G01 X+35.985 Y-34.63 +N14594 G01 X+35.825 Y-35.065 +N14596 G01 X+35.816 Y-35.116 +N14598 G01 X+35.815 Y-35.665 +N14600 G02 X+35.665 Y-35.815 I-0.15 J+0 +N14602 G01 X+35.148 Y-35.814 +N14604 G01 X+35.1 Y-35.822 +N14606 G01 X+32.168 Y-36.787 +N14608 G01 X+29.444 Y-37.507 +N14610 G01 X+26.728 Y-38.043 +N14612 G01 X+23.889 Y-38.412 +N14614 G01 X+21.296 Y-38.575 +N14616 G01 X+18.618 Y-38.569 +N14618 G01 X+16.039 Y-38.396 +N14620 G01 X+13.42 Y-38.052 +N14622 G01 X+10.679 Y-37.509 +N14624 G01 X+8.086 Y-36.824 +N14626 G01 X+5.37 Y-35.926 +N14628 G01 X+4.934 Y-35.764 +N14630 G01 X+4.885 Y-35.755 +N14632 G01 X+4.393 Y-35.744 +N14634 G02 X+4.246 Y-35.594 I+0.003 J+0.15 +N14636 G01 X+4.247 Y-35.148 +N14638 G01 X+4.239 Y-35.1 +N14640 G01 X+3.264 Y-32.168 +N14642 G01 X+2.537 Y-29.444 +N14644 G01 X+1.995 Y-26.728 +N14646 G01 X+1.653 Y-24.187 +N14648 G01 X+1.467 Y-21.543 +N14650 G01 X+1.454 Y-18.951 +N14652 G01 X+1.609 Y-16.358 +N14654 G01 X+1.931 Y-13.765 +N14656 G01 X+2.419 Y-11.186 +N14658 G01 X+3.081 Y-8.58 +N14660 G01 X+3.955 Y-5.864 +N14662 G01 X+4.297 Y-4.901 +N14664 G01 X+4.306 Y-4.851 +N14666 G01 Y-4.456 +N14668 G02 X+4.457 Y-4.307 I+0.15 J-0.001 +N14670 G01 X+4.885 Y-4.308 +N14672 G01 X+4.934 Y-4.299 +N14674 G01 X+7.593 Y-3.388 +N14676 G01 X+10.275 Y-2.649 +N14678 G01 X+12.978 Y-2.084 +N14680 G01 X+15.741 Y-1.696 +N14682 G01 X+18.333 Y-1.505 +N14684 G01 X+21.049 Y-1.488 +N14686 G01 X+23.642 Y-1.644 +N14688 G01 X+26.235 Y-1.969 +N14690 G01 X+28.814 Y-2.462 +N14692 G01 X+31.42 Y-3.13 +N14694 G01 X+34.136 Y-4.012 +N14696 G01 X+35.067 Y-4.358 +N14698 G01 X+35.115 Y-4.367 +N14700 G01 X+35.487 Y-4.378 +N14702 G02 X+35.633 Y-4.528 I-0.004 J-0.15 +N14704 G01 X+35.632 Y-4.885 +N14706 G01 X+35.641 Y-4.934 +N14708 G01 X+36.561 Y-7.593 +N14710 G01 X+37.285 Y-10.185 +N14712 G01 X+37.863 Y-12.901 +N14714 G01 X+38.242 Y-15.494 +N14716 G01 X+38.45 Y-18.086 +N14718 G01 X+38.488 Y-20.679 +N14720 G01 X+38.355 Y-23.272 +N14722 G01 X+38.051 Y-25.864 +N14724 G01 X+37.571 Y-28.476 +N14726 G01 X+36.927 Y-31.049 +N14728 G01 X+36.106 Y-33.642 +N14730 G01 X+35.582 Y-35.065 +N14732 G01 X+35.573 Y-35.117 +N14734 G01 X+35.572 Y-35.422 +N14736 G02 X+35.422 Y-35.572 I-0.15 J+0 +N14738 G01 X+35.149 +N14740 G01 X+35.1 Y-35.58 +N14742 G01 X+32.168 Y-36.583 +N14744 G01 X+29.444 Y-37.331 +N14746 G01 X+26.728 Y-37.889 +N14748 G01 X+24.187 Y-38.241 +N14750 G01 X+21.667 Y-38.428 +N14752 G01 X+18.951 Y-38.446 +N14754 G01 X+16.358 Y-38.287 +N14756 G01 X+13.765 Y-37.955 +N14758 G01 X+11.186 Y-37.453 +N14760 G01 X+8.58 Y-36.772 +N14762 G01 X+5.864 Y-35.873 +N14764 G01 X+4.933 Y-35.52 +N14766 G01 X+4.886 Y-35.511 +N14768 G01 X+4.633 Y-35.5 +N14770 G02 X+4.489 Y-35.35 I+0.006 J+0.15 +N14772 G01 Y-35.149 +N14774 G01 X+4.481 Y-35.1 +N14776 G01 X+3.468 Y-32.168 +N14778 G01 X+2.713 Y-29.444 +N14780 G01 X+2.15 Y-26.728 +N14782 G01 X+1.794 Y-24.187 +N14784 G01 X+1.606 Y-21.667 +N14786 G01 X+1.587 Y-18.951 +N14788 G01 X+1.748 Y-16.358 +N14790 G01 X+2.083 Y-13.765 +N14792 G01 X+2.589 Y-11.186 +N14794 G01 X+3.277 Y-8.58 +N14796 G01 X+4.185 Y-5.864 +N14798 G01 X+4.54 Y-4.902 +N14800 G01 X+4.549 Y-4.85 +N14802 G01 X+4.55 Y-4.7 +N14804 G02 X+4.7 Y-4.55 I+0.15 J+0 +N14806 G01 X+4.884 +N14808 G01 X+4.935 Y-4.542 +N14810 G01 X+7.593 Y-3.595 +N14812 G01 X+10.275 Y-2.827 +N14814 G01 X+12.978 Y-2.241 +N14816 G01 X+15.493 Y-1.865 +N14818 G01 X+18.076 Y-1.652 +N14820 G01 X+20.754 Y-1.613 +N14822 G01 X+23.395 Y-1.759 +N14824 G01 X+25.988 Y-2.08 +N14826 G01 X+28.704 Y-2.606 +N14828 G01 X+31.42 Y-3.326 +N14830 G01 X+34.136 Y-4.242 +N14832 G01 X+35.069 Y-4.602 +N14834 G01 X+35.113 Y-4.612 +N14836 G01 X+35.249 Y-4.621 +N14838 G02 X+35.39 Y-4.77 I-0.009 J-0.149 +N14840 G01 Y-4.884 +N14842 G01 X+35.398 Y-4.935 +N14844 G01 X+36.354 Y-7.593 +N14846 G01 X+37.106 Y-10.185 +N14848 G01 X+37.707 Y-12.901 +N14850 G01 X+38.099 Y-15.494 +N14852 G01 X+38.316 Y-18.086 +N14854 G01 X+38.355 Y-20.679 +N14856 G01 X+38.217 Y-23.272 +N14858 G01 X+37.902 Y-25.864 +N14860 G01 X+37.403 Y-28.476 +N14862 G01 X+36.735 Y-31.049 +N14864 G01 X+35.883 Y-33.642 +N14866 G01 X+35.339 Y-35.064 +N14868 G01 X+35.329 Y-35.118 +N14870 G01 Y-35.179 +N14872 G02 X+35.179 Y-35.329 I-0.15 J+0 +N14874 G01 X+35.099 Y-35.337 +N14876 G01 X+32.168 Y-36.379 +N14878 G01 X+29.444 Y-37.155 +N14880 G01 X+26.728 Y-37.735 +N14882 G01 X+24.259 Y-38.093 +N14884 G01 X+21.667 Y-38.294 +N14886 G01 X+18.951 Y-38.313 +N14888 G01 X+16.358 Y-38.148 +N14890 G01 X+13.765 Y-37.804 +N14892 G01 X+11.296 Y-37.309 +N14894 G01 X+8.58 Y-36.576 +N14896 G01 X+5.864 Y-35.643 +N14898 G01 X+4.936 Y-35.278 +N14900 G01 X+4.882 Y-35.268 +N14902 G02 X+4.732 Y-35.123 I+0 J+0.15 +N14904 G01 X+3.673 Y-32.168 +N14906 G01 X+2.889 Y-29.444 +N14908 G01 X+2.304 Y-26.728 +N14910 G01 X+1.943 Y-24.259 +N14912 G01 X+1.739 Y-21.667 +N14914 G01 X+1.713 Y-19.246 +N14916 G01 X+1.862 Y-16.605 +N14918 G01 X+2.193 Y-14.012 +N14920 G01 X+2.676 Y-11.543 +N14922 G01 X+3.324 Y-9.074 +N14924 G01 X+4.217 Y-6.39 +N14926 G01 X+4.782 Y-4.907 +N14928 G01 X+4.816 Y-4.854 +N14930 G01 X+4.91 Y-4.793 +N14932 G01 X+7.593 Y-3.802 +N14934 G01 X+10.275 Y-3.005 +N14936 G01 X+12.751 Y-2.44 +N14938 G01 X+15.247 Y-2.038 +N14940 G01 X+17.84 Y-1.798 +N14942 G01 X+20.432 Y-1.74 +N14944 G01 X+23.025 Y-1.864 +N14946 G01 X+25.617 Y-2.171 +N14948 G01 X+28.21 Y-2.661 +N14950 G01 X+30.926 Y-3.372 +N14952 G01 X+33.61 Y-4.273 +N14954 G01 X+35.069 Y-4.846 +N14956 G01 X+35.155 Y-4.933 +N14958 G01 X+36.15 Y-7.593 +N14960 G01 X+36.933 Y-10.185 +N14962 G01 X+37.51 Y-12.654 +N14964 G01 X+37.926 Y-15.172 +N14966 G01 X+38.174 Y-17.761 +N14968 G01 X+38.241 Y-20.327 +N14970 G01 X+38.136 Y-22.781 +N14972 G01 X+37.847 Y-25.377 +N14974 G01 X+37.403 Y-27.84 +N14976 G01 X+36.791 Y-30.309 +N14978 G01 X+35.97 Y-32.901 +N14980 G01 X+35.139 Y-35.072 +N14982 G01 X+35.051 Y-35.159 +N14984 G01 X+32.168 Y-36.217 +N14986 G01 X+29.444 Y-37.02 +N14988 G01 X+27.022 Y-37.563 +N14990 G01 X+24.507 Y-37.958 +N14992 G01 X+21.924 Y-38.184 +N14994 G01 X+19.473 Y-38.23 +N14996 G01 X+16.975 Y-38.109 +N14998 G01 X+14.383 Y-37.803 +N15000 G01 X+11.79 Y-37.312 +N15002 G01 X+9.074 Y-36.601 +N15004 G01 X+6.39 Y-35.699 +N15006 G01 X+4.971 Y-35.142 +N15008 G01 X+4.886 Y-35.057 +N15010 G01 X+4.133 Y-33.148 +N15012 G01 X+3.293 Y-30.556 +N15014 G01 X+2.665 Y-28.086 +N15016 G01 X+2.167 Y-25.377 +N15018 G01 X+1.878 Y-22.781 +N15020 G01 X+1.775 Y-20.327 +N15022 G01 X+1.837 Y-17.84 +N15024 G01 X+2.083 Y-15.247 +N15026 G01 X+2.513 Y-12.654 +N15028 G01 X+3.094 Y-10.185 +N15030 G01 X+3.884 Y-7.593 +N15032 G01 X+4.872 Y-4.973 +N15034 G01 X+4.959 Y-4.886 +N15036 G01 X+7.346 Y-3.971 +N15038 G01 X+9.938 Y-3.165 +N15040 G01 X+12.407 Y-2.569 +N15042 G01 X+14.877 Y-2.139 +N15044 G01 X+17.469 Y-1.867 +N15046 G01 X+19.9 Y-1.781 +N15048 G01 X+22.531 Y-1.869 +N15050 G01 X+25.123 Y-2.142 +N15052 G01 X+27.58 Y-2.571 +N15054 G01 X+30.062 Y-3.172 +N15056 G01 X+32.645 Y-3.978 +N15058 G01 X+35.028 Y-4.886 +N15060 G01 X+35.114 Y-4.972 +N15062 G01 X+35.671 Y-6.392 +N15064 G01 X+36.571 Y-9.078 +N15066 G01 X+37.281 Y-11.795 +N15068 G01 X+37.771 Y-14.387 +N15070 G01 X+38.076 Y-16.978 +N15072 G01 X+38.196 Y-19.568 +N15074 G01 X+38.131 Y-22.158 +N15076 G01 X+37.881 Y-24.747 +N15078 G01 X+37.465 Y-27.237 +N15080 G01 X+36.883 Y-29.705 +N15082 G01 X+36.063 Y-32.376 +N15084 G01 X+35.067 Y-34.981 +N15086 G01 X+34.981 Y-35.068 +N15088 G01 X+32.862 Y-35.883 +N15090 G01 X+30.278 Y-36.708 +N15092 G01 X+27.817 Y-37.323 +N15094 G01 X+25.362 Y-37.768 +N15096 G01 X+22.773 Y-38.058 +N15098 G01 X+20.326 Y-38.161 +N15100 G01 X+17.768 Y-38.09 +N15102 G01 X+15.189 Y-37.833 +N15104 G01 X+12.683 Y-37.407 +N15106 G01 X+10.229 Y-36.817 +N15108 G01 X+7.658 Y-36.019 +N15110 G01 X+5.065 Y-35.021 +N15112 G01 X+4.979 Y-34.935 +N15114 G01 X+4.161 Y-32.826 +N15116 G01 X+3.335 Y-30.252 +N15118 G01 X+2.717 Y-27.799 +N15120 G01 X+2.269 Y-25.35 +N15122 G01 X+1.978 Y-22.768 +N15124 G01 X+1.875 Y-20.325 +N15126 G01 X+1.946 Y-17.773 +N15128 G01 X+2.204 Y-15.199 +N15130 G01 X+2.633 Y-12.7 +N15132 G01 X+3.225 Y-10.254 +N15134 G01 X+4.026 Y-7.692 +N15136 G01 X+5.025 Y-5.111 +N15138 G01 X+5.111 Y-5.025 +N15140 G01 X+7.21 Y-4.206 +N15142 G01 X+9.774 Y-3.377 +N15144 G01 X+12.219 Y-2.757 +N15146 G01 X+14.661 Y-2.307 +N15148 G01 X+17.238 Y-2.015 +N15150 G01 X+19.676 Y-1.911 +N15152 G01 X+22.223 Y-1.982 +N15154 G01 X+24.791 Y-2.242 +N15156 G01 X+27.284 Y-2.672 +N15158 G01 X+29.722 Y-3.266 +N15160 G01 X+32.274 Y-4.07 +N15162 G01 X+34.844 Y-5.072 +N15164 G01 X+34.929 Y-5.156 +N15166 G01 X+35.489 Y-6.55 +N15168 G01 X+36.399 Y-9.192 +N15170 G01 X+37.119 Y-11.872 +N15172 G01 X+37.617 Y-14.435 +N15174 G01 X+37.928 Y-17.002 +N15176 G01 X+38.051 Y-19.572 +N15178 G01 X+37.984 Y-22.141 +N15180 G01 X+37.728 Y-24.706 +N15182 G01 X+37.284 Y-27.265 +N15184 G01 X+36.649 Y-29.829 +N15186 G01 X+35.88 Y-32.235 +N15188 G01 X+34.875 Y-34.791 +N15190 G01 X+34.791 Y-34.875 +N15192 G01 X+32.712 Y-35.698 +N15194 G01 X+30.17 Y-36.531 +N15196 G01 X+27.742 Y-37.156 +N15198 G01 X+25.314 Y-37.61 +N15200 G01 X+22.75 Y-37.905 +N15202 G01 X+20.323 Y-38.01 +N15204 G01 X+17.787 Y-37.937 +N15206 G01 X+15.232 Y-37.675 +N15208 G01 X+12.754 Y-37.239 +N15210 G01 X+10.333 Y-36.639 +N15212 G01 X+7.804 Y-35.829 +N15214 G01 X+5.262 Y-34.822 +N15216 G01 X+5.178 Y-34.738 +N15218 G01 X+4.353 Y-32.67 +N15220 G01 X+3.517 Y-30.14 +N15222 G01 X+2.89 Y-27.721 +N15224 G01 X+2.433 Y-25.301 +N15226 G01 X+2.136 Y-22.744 +N15228 G01 X+2.031 Y-20.322 +N15230 G01 X+2.104 Y-17.792 +N15232 G01 X+2.368 Y-15.243 +N15234 G01 X+2.806 Y-12.773 +N15236 G01 X+3.409 Y-10.361 +N15238 G01 X+4.221 Y-7.843 +N15240 G01 X+5.231 Y-5.314 +N15242 G01 X+5.314 Y-5.231 +N15244 G01 X+7.371 Y-4.405 +N15246 G01 X+9.889 Y-3.565 +N15248 G01 X+12.299 Y-2.935 +N15250 G01 X+14.712 Y-2.477 +N15252 G01 X+17.263 Y-2.178 +N15254 G01 X+19.678 Y-2.071 +N15256 G01 X+22.203 Y-2.145 +N15258 G01 X+24.745 Y-2.411 +N15260 G01 X+27.208 Y-2.851 +N15262 G01 X+29.612 Y-3.456 +N15264 G01 X+32.118 Y-4.272 +N15266 G01 X+34.633 Y-5.284 +N15268 G01 X+34.716 Y-5.366 +N15270 G01 X+35.462 Y-7.196 +N15272 G01 X+36.287 Y-9.591 +N15274 G01 X+36.935 Y-11.959 +N15276 G01 X+37.443 Y-14.49 +N15278 G01 X+37.762 Y-17.03 +N15280 G01 X+37.887 Y-19.576 +N15282 G01 X+37.819 Y-22.121 +N15284 G01 X+37.558 Y-24.661 +N15286 G01 X+37.104 Y-27.19 +N15288 G01 X+36.457 Y-29.715 +N15290 G01 X+35.678 Y-32.079 +N15292 G01 X+34.663 Y-34.581 +N15294 G01 X+34.58 Y-34.663 +N15296 G01 X+32.309 Y-35.581 +N15298 G01 X+29.813 Y-36.41 +N15300 G01 X+27.42 Y-37.027 +N15302 G01 X+24.894 Y-37.493 +N15304 G01 X+22.479 Y-37.759 +N15306 G01 X+20.098 Y-37.848 +N15308 G01 X+17.807 Y-37.772 +N15310 G01 X+15.278 Y-37.504 +N15312 G01 X+12.829 Y-37.059 +N15314 G01 X+10.444 Y-36.448 +N15316 G01 X+7.96 Y-35.627 +N15318 G01 X+5.472 Y-34.61 +N15320 G01 X+5.39 Y-34.528 +N15322 G01 X+4.47 Y-32.269 +N15324 G01 X+3.638 Y-29.784 +N15326 G01 X+3.018 Y-27.4 +N15328 G01 X+2.55 Y-24.882 +N15330 G01 X+2.282 Y-22.474 +N15332 G01 X+2.193 Y-20.098 +N15334 G01 X+2.269 Y-17.812 +N15336 G01 X+2.539 Y-15.289 +N15338 G01 X+2.986 Y-12.848 +N15340 G01 X+3.6 Y-10.472 +N15342 G01 X+4.424 Y-7.999 +N15344 G01 X+5.443 Y-5.524 +N15346 G01 X+5.525 Y-5.443 +N15348 G01 X+7.771 Y-4.521 +N15350 G01 X+10.245 Y-3.686 +N15352 G01 X+12.62 Y-3.063 +N15354 G01 X+15.13 Y-2.593 +N15356 G01 X+17.652 Y-2.315 +N15358 G01 X+19.902 Y-2.234 +N15360 G01 X+22.183 Y-2.31 +N15362 G01 X+24.699 Y-2.582 +N15364 G01 X+27.133 Y-3.031 +N15366 G01 X+29.501 Y-3.648 +N15368 G01 X+31.962 Y-4.474 +N15370 G01 X+34.423 Y-5.496 +N15372 G01 X+34.504 Y-5.577 +N15374 G01 X+35.432 Y-7.82 +N15376 G01 X+36.266 Y-10.274 +N15378 G01 X+36.894 Y-12.652 +N15380 G01 X+37.347 Y-15.023 +N15382 G01 X+37.615 Y-17.298 +N15384 G01 X+37.724 Y-19.58 +N15386 G01 X+37.654 Y-22.101 +N15388 G01 X+37.387 Y-24.615 +N15390 G01 X+36.924 Y-27.114 +N15392 G01 X+36.266 Y-29.602 +N15394 G01 X+35.475 Y-31.923 +N15396 G01 X+34.451 Y-34.371 +N15398 G01 X+34.371 Y-34.451 +N15400 G01 X+32.149 Y-35.378 +N15402 G01 X+29.698 Y-36.218 +N15404 G01 X+27.341 Y-36.846 +N15406 G01 X+24.846 Y-37.322 +N15408 G01 X+22.337 Y-37.602 +N15410 G01 X+20.097 Y-37.685 +N15412 G01 X+17.828 Y-37.607 +N15414 G01 X+15.324 Y-37.333 +N15416 G01 X+12.905 Y-36.878 +N15418 G01 X+10.555 Y-36.257 +N15420 G01 X+8.116 Y-35.424 +N15422 G01 X+5.682 Y-34.398 +N15424 G01 X+5.602 Y-34.318 +N15426 G01 X+4.673 Y-32.108 +N15428 G01 X+3.83 Y-29.669 +N15430 G01 X+3.199 Y-27.321 +N15432 G01 X+2.721 Y-24.834 +N15434 G01 X+2.439 Y-22.331 +N15436 G01 X+2.356 Y-20.097 +N15438 G01 X+2.434 Y-17.833 +N15440 G01 X+2.71 Y-15.336 +N15442 G01 X+3.167 Y-12.924 +N15444 G01 X+3.791 Y-10.583 +N15446 G01 X+4.626 Y-8.155 +N15448 G01 X+5.656 Y-5.732 +N15450 G01 X+5.731 Y-5.654 +N15452 G01 X+5.875 Y-5.588 +N15454 G01 X+8.384 Y-4.552 +N15456 G01 X+10.678 Y-3.783 +N15458 G01 X+13.026 Y-3.17 +N15460 G01 X+15.415 Y-2.728 +N15462 G01 X+17.674 Y-2.481 +N15464 G01 X+19.903 Y-2.397 +N15466 G01 X+22.162 Y-2.475 +N15468 G01 X+24.653 Y-2.753 +N15470 G01 X+27.057 Y-3.212 +N15472 G01 X+29.39 Y-3.839 +N15474 G01 X+31.806 Y-4.677 +N15476 G01 X+34.215 Y-5.709 +N15478 G01 X+34.292 Y-5.784 +N15480 G01 X+34.461 Y-6.153 +N15482 G01 X+35.486 Y-8.659 +N15484 G01 X+36.282 Y-11.085 +N15486 G01 X+36.877 Y-13.466 +N15488 G01 X+37.295 Y-15.9 +N15490 G01 X+37.51 Y-18.155 +N15492 G01 X+37.56 Y-20.417 +N15494 G01 X+37.442 Y-22.679 +N15496 G01 X+37.16 Y-24.924 +N15498 G01 X+36.687 Y-27.272 +N15500 G01 X+36.074 Y-29.489 +N15502 G01 X+35.273 Y-31.767 +N15504 G01 X+34.238 Y-34.163 +N15506 G01 X+34.164 Y-34.239 +N15508 G01 X+34.021 Y-34.306 +N15510 G01 X+31.54 Y-35.347 +N15512 G01 X+29.267 Y-36.122 +N15514 G01 X+26.936 Y-36.74 +N15516 G01 X+24.562 Y-37.186 +N15518 G01 X+22.315 Y-37.437 +N15520 G01 X+20.097 Y-37.522 +N15522 G01 X+17.848 Y-37.442 +N15524 G01 X+15.37 Y-37.161 +N15526 G01 X+12.981 Y-36.698 +N15528 G01 X+10.666 Y-36.066 +N15530 G01 X+8.272 Y-35.222 +N15532 G01 X+5.889 Y-34.185 +N15534 G01 X+5.814 Y-34.111 +N15536 G01 X+5.747 Y-33.97 +N15538 G01 X+4.703 Y-31.502 +N15540 G01 X+3.926 Y-29.24 +N15542 G01 X+3.305 Y-26.918 +N15544 G01 X+2.856 Y-24.551 +N15546 G01 X+2.604 Y-22.309 +N15548 G01 X+2.519 Y-20.096 +N15550 G01 X+2.599 Y-17.853 +N15552 G01 X+2.881 Y-15.382 +N15554 G01 X+3.347 Y-13 +N15556 G01 X+3.982 Y-10.694 +N15558 G01 X+4.829 Y-8.311 +N15560 G01 X+5.868 Y-5.942 +N15562 G01 X+5.941 Y-5.867 +N15564 G01 X+6.082 Y-5.8 +N15566 G01 X+8.536 Y-4.754 +N15568 G01 X+10.787 Y-3.973 +N15570 G01 X+13.101 Y-3.35 +N15572 G01 X+15.461 Y-2.899 +N15574 G01 X+17.696 Y-2.646 +N15576 G01 X+19.904 Y-2.56 +N15578 G01 X+22.142 Y-2.64 +N15580 G01 X+24.607 Y-2.924 +N15582 G01 X+26.981 Y-3.392 +N15584 G01 X+29.278 Y-4.03 +N15586 G01 X+31.65 Y-4.879 +N15588 G01 X+34.005 Y-5.921 +N15590 G01 X+34.08 Y-5.994 +N15592 G01 X+34.25 Y-6.354 +N15594 G01 X+35.286 Y-8.806 +N15596 G01 X+36.093 Y-11.188 +N15598 G01 X+36.699 Y-13.535 +N15600 G01 X+37.126 Y-15.94 +N15602 G01 X+37.345 Y-18.173 +N15604 G01 X+37.396 Y-20.413 +N15606 G01 X+37.276 Y-22.653 +N15608 G01 X+36.988 Y-24.875 +N15610 G01 X+36.506 Y-27.193 +N15612 G01 X+35.882 Y-29.376 +N15614 G01 X+35.07 Y-31.611 +N15616 G01 X+34.026 Y-33.953 +N15618 G01 X+33.953 Y-34.027 +N15620 G01 X+33.595 Y-34.198 +N15622 G01 X+31.157 Y-35.236 +N15624 G01 X+28.9 Y-36.011 +N15626 G01 X+26.65 Y-36.609 +N15628 G01 X+24.284 Y-37.05 +N15630 G01 X+22.058 Y-37.289 +N15632 G01 X+19.824 Y-37.358 +N15634 G01 X+17.591 Y-37.256 +N15636 G01 X+15.416 Y-36.99 +N15638 G01 X+13.057 Y-36.518 +N15640 G01 X+10.777 Y-35.874 +N15642 G01 X+8.428 Y-35.019 +N15644 G01 X+6.1 Y-33.973 +N15646 G01 X+6.026 Y-33.901 +N15648 G01 X+5.855 Y-33.545 +N15650 G01 X+4.815 Y-31.121 +N15652 G01 X+4.036 Y-28.873 +N15654 G01 X+3.436 Y-26.632 +N15656 G01 X+2.993 Y-24.273 +N15658 G01 X+2.752 Y-22.053 +N15660 G01 X+2.683 Y-19.824 +N15662 G01 X+2.786 Y-17.597 +N15664 G01 X+3.052 Y-15.428 +N15666 G01 X+3.527 Y-13.076 +N15668 G01 X+4.173 Y-10.805 +N15670 G01 X+5.031 Y-8.467 +N15672 G01 X+6.08 Y-6.152 +N15674 G01 X+6.152 Y-6.079 +N15676 G01 X+6.506 Y-5.908 +N15678 G01 X+8.916 Y-4.865 +N15680 G01 X+11.153 Y-4.083 +N15682 G01 X+13.386 Y-3.48 +N15684 G01 X+15.737 Y-3.035 +N15686 G01 X+17.952 Y-2.793 +N15688 G01 X+20.176 Y-2.724 +N15690 G01 X+22.398 Y-2.827 +N15692 G01 X+24.561 Y-3.095 +N15694 G01 X+26.905 Y-3.572 +N15696 G01 X+29.167 Y-4.221 +N15698 G01 X+31.494 Y-5.082 +N15700 G01 X+33.795 Y-6.133 +N15702 G01 X+33.868 Y-6.205 +N15704 G01 X+34.243 Y-6.988 +N15706 G01 X+35.171 Y-9.173 +N15708 G01 X+35.982 Y-11.548 +N15710 G01 X+36.567 Y-13.814 +N15712 G01 X+36.956 Y-15.98 +N15714 G01 X+37.181 Y-18.19 +N15716 G01 X+37.233 Y-20.409 +N15718 G01 X+37.11 Y-22.628 +N15720 G01 X+36.816 Y-24.825 +N15722 G01 X+36.325 Y-27.114 +N15724 G01 X+35.69 Y-29.263 +N15726 G01 X+34.867 Y-31.455 +N15728 G01 X+33.814 Y-33.743 +N15730 G01 X+33.744 Y-33.815 +N15732 G01 X+33.393 Y-33.987 +N15734 G01 X+31.011 Y-35.035 +N15736 G01 X+28.794 Y-35.822 +N15738 G01 X+26.579 Y-36.43 +N15740 G01 X+24.241 Y-36.88 +N15742 G01 X+22.038 Y-37.124 +N15744 G01 X+19.825 Y-37.194 +N15746 G01 X+17.614 Y-37.09 +N15748 G01 X+15.462 Y-36.819 +N15750 G01 X+13.133 Y-36.337 +N15752 G01 X+10.888 Y-35.683 +N15754 G01 X+8.584 Y-34.817 +N15756 G01 X+6.309 Y-33.761 +N15758 G01 X+6.238 Y-33.691 +N15760 G01 X+6.066 Y-33.343 +N15762 G01 X+5.015 Y-30.974 +N15764 G01 X+4.225 Y-28.768 +N15766 G01 X+3.615 Y-26.561 +N15768 G01 X+3.163 Y-24.231 +N15770 G01 X+2.917 Y-22.033 +N15772 G01 X+2.846 Y-19.826 +N15774 G01 X+2.951 Y-17.62 +N15776 G01 X+3.224 Y-15.474 +N15778 G01 X+3.708 Y-13.152 +N15780 G01 X+4.364 Y-10.916 +N15782 G01 X+5.234 Y-8.623 +N15784 G01 X+6.293 Y-6.362 +N15786 G01 X+6.361 Y-6.291 +N15788 G01 X+6.707 Y-6.118 +N15790 G01 X+9.063 Y-5.065 +N15792 G01 X+11.258 Y-4.273 +N15794 G01 X+13.457 Y-3.659 +N15796 G01 X+15.78 Y-3.206 +N15798 G01 X+17.972 Y-2.958 +N15800 G01 X+20.174 Y-2.887 +N15802 G01 X+22.374 Y-2.993 +N15804 G01 X+24.514 Y-3.266 +N15806 G01 X+26.829 Y-3.753 +N15808 G01 X+29.056 Y-4.412 +N15810 G01 X+31.338 Y-5.284 +N15812 G01 X+33.585 Y-6.345 +N15814 G01 X+33.655 Y-6.414 +N15816 G01 X+34.034 Y-7.179 +N15818 G01 X+34.971 Y-9.315 +N15820 G01 X+35.794 Y-11.647 +N15822 G01 X+36.39 Y-13.88 +N15824 G01 X+36.787 Y-16.02 +N15826 G01 X+37.016 Y-18.207 +N15828 G01 X+37.07 Y-20.405 +N15830 G01 X+36.944 Y-22.602 +N15832 G01 X+36.644 Y-24.776 +N15834 G01 X+36.143 Y-27.034 +N15836 G01 X+35.498 Y-29.149 +N15838 G01 X+34.665 Y-31.299 +N15840 G01 X+33.601 Y-33.533 +N15842 G01 X+33.533 Y-33.602 +N15844 G01 X+32.774 Y-33.982 +N15846 G01 X+30.575 Y-34.951 +N15848 G01 X+28.248 Y-35.772 +N15850 G01 X+26.014 Y-36.366 +N15852 G01 X+23.903 Y-36.754 +N15854 G01 X+21.797 Y-36.974 +N15856 G01 X+19.507 Y-37.027 +N15858 G01 X+17.407 Y-36.903 +N15860 G01 X+15.237 Y-36.601 +N15862 G01 X+12.997 Y-36.101 +N15864 G01 X+10.781 Y-35.417 +N15866 G01 X+8.536 Y-34.525 +N15868 G01 X+6.519 Y-33.548 +N15870 G01 X+6.451 Y-33.481 +N15872 G01 X+6.07 Y-32.726 +N15874 G01 X+5.099 Y-30.54 +N15876 G01 X+4.275 Y-28.223 +N15878 G01 X+3.678 Y-25.997 +N15880 G01 X+3.289 Y-23.893 +N15882 G01 X+3.067 Y-21.793 +N15884 G01 X+3.014 Y-19.508 +N15886 G01 X+3.139 Y-17.414 +N15888 G01 X+3.442 Y-15.249 +N15890 G01 X+3.944 Y-13.016 +N15892 G01 X+4.631 Y-10.81 +N15894 G01 X+5.526 Y-8.576 +N15896 G01 X+6.505 Y-6.572 +N15898 G01 X+6.572 Y-6.504 +N15900 G01 X+7.529 Y-6.021 +N15902 G01 X+9.742 Y-5.05 +N15904 G01 X+11.801 Y-4.321 +N15906 G01 X+14.019 Y-3.722 +N15908 G01 X+16.117 Y-3.331 +N15910 G01 X+18.211 Y-3.108 +N15912 G01 X+20.491 Y-3.055 +N15914 G01 X+22.58 Y-3.18 +N15916 G01 X+24.739 Y-3.485 +N15918 G01 X+26.964 Y-3.99 +N15920 G01 X+29.161 Y-4.679 +N15922 G01 X+31.384 Y-5.577 +N15924 G01 X+33.376 Y-6.558 +N15926 G01 X+33.443 Y-6.624 +N15928 G01 X+33.825 Y-7.37 +N15930 G01 X+34.859 Y-9.67 +N15932 G01 X+35.607 Y-11.746 +N15934 G01 X+36.213 Y-13.946 +N15936 G01 X+36.617 Y-16.061 +N15938 G01 X+36.852 Y-18.225 +N15940 G01 X+36.906 Y-20.401 +N15942 G01 X+36.778 Y-22.577 +N15944 G01 X+36.472 Y-24.726 +N15946 G01 X+35.962 Y-26.955 +N15948 G01 X+35.307 Y-29.036 +N15950 G01 X+34.462 Y-31.143 +N15952 G01 X+33.389 Y-33.323 +N15954 G01 X+33.323 Y-33.39 +N15956 G01 X+32.378 Y-33.875 +N15958 G01 X+30.19 Y-34.851 +N15960 G01 X+28.15 Y-35.585 +N15962 G01 X+25.949 Y-36.19 +N15964 G01 X+23.863 Y-36.585 +N15966 G01 X+21.78 Y-36.81 +N15968 G01 X+19.512 Y-36.863 +N15970 G01 X+17.433 Y-36.737 +N15972 G01 X+15.286 Y-36.429 +N15974 G01 X+13.075 Y-35.92 +N15976 G01 X+10.896 Y-35.224 +N15978 G01 X+8.697 Y-34.321 +N15980 G01 X+6.729 Y-33.336 +N15982 G01 X+6.663 Y-33.271 +N15984 G01 X+6.177 Y-32.332 +N15986 G01 X+5.198 Y-30.156 +N15988 G01 X+4.462 Y-28.126 +N15990 G01 X+3.855 Y-25.932 +N15992 G01 X+3.458 Y-23.853 +N15994 G01 X+3.216 Y-21.539 +N15996 G01 X+3.178 Y-19.513 +N15998 G01 X+3.305 Y-17.439 +N16000 G01 X+3.614 Y-15.298 +N16002 G01 X+4.126 Y-13.095 +N16004 G01 X+4.824 Y-10.925 +N16006 G01 X+5.73 Y-8.737 +N16008 G01 X+6.717 Y-6.782 +N16010 G01 X+6.782 Y-6.716 +N16012 G01 X+7.917 Y-6.129 +N16014 G01 X+10.088 Y-5.163 +N16016 G01 X+12.315 Y-4.378 +N16018 G01 X+14.39 Y-3.829 +N16020 G01 X+16.428 Y-3.46 +N16022 G01 X+18.465 Y-3.257 +N16024 G01 X+20.486 Y-3.218 +N16026 G01 X+22.555 Y-3.346 +N16028 G01 X+24.689 Y-3.657 +N16030 G01 X+26.885 Y-4.171 +N16032 G01 X+29.046 Y-4.872 +N16034 G01 X+31.223 Y-5.781 +N16036 G01 X+33.165 Y-6.77 +N16038 G01 X+33.23 Y-6.834 +N16040 G01 X+33.832 Y-7.989 +N16042 G01 X+34.746 Y-10.016 +N16044 G01 X+35.514 Y-12.139 +N16046 G01 X+36.108 Y-14.321 +N16048 G01 X+36.498 Y-16.437 +N16050 G01 X+36.702 Y-18.469 +N16052 G01 X+36.738 Y-20.624 +N16054 G01 X+36.588 Y-22.774 +N16056 G01 X+36.255 Y-24.905 +N16058 G01 X+35.781 Y-26.876 +N16060 G01 X+35.08 Y-29.018 +N16062 G01 X+34.165 Y-31.191 +N16064 G01 X+33.177 Y-33.113 +N16066 G01 X+33.113 Y-33.177 +N16068 G01 X+31.59 Y-33.965 +N16070 G01 X+29.428 Y-34.905 +N16072 G01 X+27.408 Y-35.601 +N16074 G01 X+25.333 Y-36.137 +N16076 G01 X+23.105 Y-36.516 +N16078 G01 X+21.083 Y-36.683 +N16080 G01 X+19.038 Y-36.685 +N16082 G01 X+16.897 Y-36.506 +N16084 G01 X+14.818 Y-36.152 +N16086 G01 X+12.819 Y-35.641 +N16088 G01 X+10.811 Y-34.956 +N16090 G01 X+8.857 Y-34.118 +N16092 G01 X+6.94 Y-33.124 +N16094 G01 X+6.876 Y-33.06 +N16096 G01 X+6.086 Y-31.547 +N16098 G01 X+5.144 Y-29.398 +N16100 G01 X+4.412 Y-27.278 +N16102 G01 X+3.859 Y-25.099 +N16104 G01 X+3.526 Y-23.097 +N16106 G01 X+3.358 Y-21.08 +N16108 G01 X+3.356 Y-19.04 +N16110 G01 X+3.536 Y-16.905 +N16112 G01 X+3.892 Y-14.832 +N16114 G01 X+4.405 Y-12.84 +N16116 G01 X+5.093 Y-10.841 +N16118 G01 X+5.933 Y-8.897 +N16120 G01 X+6.929 Y-6.992 +N16122 G01 X+6.992 Y-6.929 +N16124 G01 X+8.495 Y-6.138 +N16126 G01 X+10.633 Y-5.192 +N16128 G01 X+12.743 Y-4.458 +N16130 G01 X+14.915 Y-3.903 +N16132 G01 X+16.911 Y-3.568 +N16134 G01 X+18.922 Y-3.398 +N16136 G01 X+20.957 Y-3.396 +N16138 G01 X+23.088 Y-3.578 +N16140 G01 X+25.154 Y-3.935 +N16142 G01 X+27.139 Y-4.45 +N16144 G01 X+29.13 Y-5.141 +N16146 G01 X+31.063 Y-5.984 +N16148 G01 X+32.956 Y-6.982 +N16150 G01 X+33.018 Y-7.044 +N16152 G01 X+33.625 Y-8.169 +N16154 G01 X+34.549 Y-10.15 +N16156 G01 X+35.328 Y-12.233 +N16158 G01 X+35.932 Y-14.383 +N16160 G01 X+36.329 Y-16.474 +N16162 G01 X+36.538 Y-18.484 +N16164 G01 X+36.574 Y-20.611 +N16166 G01 X+36.422 Y-22.739 +N16168 G01 X+36.082 Y-24.853 +N16170 G01 X+35.599 Y-26.797 +N16172 G01 X+34.888 Y-28.903 +N16174 G01 X+33.962 Y-31.03 +N16176 G01 X+32.965 Y-32.903 +N16178 G01 X+32.903 Y-32.965 +N16180 G01 X+31.419 Y-33.76 +N16182 G01 X+29.305 Y-34.711 +N16184 G01 X+27.214 Y-35.45 +N16186 G01 X+25.057 Y-36.01 +N16188 G01 X+23.074 Y-36.348 +N16190 G01 X+21.072 Y-36.52 +N16192 G01 X+19.047 Y-36.522 +N16194 G01 X+16.935 Y-36.339 +N16196 G01 X+14.874 Y-35.978 +N16198 G01 X+12.903 Y-35.458 +N16200 G01 X+10.93 Y-34.762 +N16202 G01 X+9.018 Y-33.914 +N16204 G01 X+7.149 Y-32.911 +N16206 G01 X+7.088 Y-32.851 +N16208 G01 X+6.292 Y-31.377 +N16210 G01 X+5.338 Y-29.275 +N16212 G01 X+4.596 Y-27.193 +N16214 G01 X+4.035 Y-25.05 +N16216 G01 X+3.686 Y-23.002 +N16218 G01 X+3.521 Y-21.07 +N16220 G01 X+3.519 Y-19.056 +N16222 G01 X+3.702 Y-16.943 +N16224 G01 X+4.066 Y-14.888 +N16226 G01 X+4.588 Y-12.924 +N16228 G01 X+5.286 Y-10.96 +N16230 G01 X+6.137 Y-9.058 +N16232 G01 X+7.142 Y-7.202 +N16234 G01 X+7.202 Y-7.142 +N16236 G01 X+8.666 Y-6.343 +N16238 G01 X+10.756 Y-5.387 +N16240 G01 X+12.829 Y-4.642 +N16242 G01 X+14.964 Y-4.078 +N16244 G01 X+17.005 Y-3.728 +N16246 G01 X+18.933 Y-3.562 +N16248 G01 X+20.941 Y-3.56 +N16250 G01 X+23.049 Y-3.744 +N16252 G01 X+25.098 Y-4.109 +N16254 G01 X+27.055 Y-4.633 +N16256 G01 X+29.011 Y-5.334 +N16258 G01 X+30.902 Y-6.187 +N16260 G01 X+32.746 Y-7.195 +N16262 G01 X+32.805 Y-7.254 +N16264 G01 X+33.506 Y-8.516 +N16266 G01 X+34.438 Y-10.484 +N16268 G01 X+35.211 Y-12.536 +N16270 G01 X+35.756 Y-14.445 +N16272 G01 X+36.161 Y-16.51 +N16274 G01 X+36.373 Y-18.492 +N16276 G01 X+36.411 Y-20.605 +N16278 G01 X+36.256 Y-22.711 +N16280 G01 X+35.909 Y-24.801 +N16282 G01 X+35.418 Y-26.718 +N16284 G01 X+34.698 Y-28.781 +N16286 G01 X+33.758 Y-30.869 +N16288 G01 X+32.752 Y-32.693 +N16290 G01 X+32.693 Y-32.752 +N16292 G01 X+31.056 Y-33.653 +N16294 G01 X+28.981 Y-34.598 +N16296 G01 X+26.919 Y-35.332 +N16298 G01 X+25.003 Y-35.837 +N16300 G01 X+22.979 Y-36.189 +N16302 G01 X+21.062 Y-36.356 +N16304 G01 X+19.064 Y-36.358 +N16306 G01 X+16.966 Y-36.172 +N16308 G01 X+14.93 Y-35.804 +N16310 G01 X+12.987 Y-35.275 +N16312 G01 X+11.049 Y-34.569 +N16314 G01 X+9.178 Y-33.711 +N16316 G01 X+7.359 Y-32.699 +N16318 G01 X+7.301 Y-32.641 +N16320 G01 X+6.398 Y-31.015 +N16322 G01 X+5.45 Y-28.951 +N16324 G01 X+4.713 Y-26.898 +N16326 G01 X+4.207 Y-24.989 +N16328 G01 X+3.853 Y-22.972 +N16330 G01 X+3.685 Y-21.059 +N16332 G01 X+3.683 Y-19.066 +N16334 G01 X+3.87 Y-16.974 +N16336 G01 X+4.24 Y-14.944 +N16338 G01 X+4.771 Y-13.008 +N16340 G01 X+5.479 Y-11.078 +N16342 G01 X+6.34 Y-9.218 +N16344 G01 X+7.354 Y-7.412 +N16346 G01 X+7.412 Y-7.354 +N16348 G01 X+9.027 Y-6.449 +N16350 G01 X+11.079 Y-5.498 +N16352 G01 X+13.122 Y-4.759 +N16354 G01 X+15.025 Y-4.25 +N16356 G01 X+17.036 Y-3.895 +N16358 G01 X+18.944 Y-3.726 +N16360 G01 X+20.932 Y-3.724 +N16362 G01 X+23.018 Y-3.911 +N16364 G01 X+25.036 Y-4.282 +N16366 G01 X+26.971 Y-4.816 +N16368 G01 X+28.892 Y-5.528 +N16370 G01 X+30.741 Y-6.391 +N16372 G01 X+32.536 Y-7.407 +N16374 G01 X+32.593 Y-7.464 +N16376 G01 X+33.601 Y-9.265 +N16378 G01 X+34.457 Y-11.117 +N16380 G01 X+35.195 Y-13.143 +N16382 G01 X+35.706 Y-15.039 +N16384 G01 X+36.054 Y-16.975 +N16386 G01 X+36.238 Y-19.057 +N16388 G01 X+36.23 Y-21.047 +N16390 G01 X+36.047 Y-23.01 +N16392 G01 X+35.69 Y-24.956 +N16394 G01 X+35.173 Y-26.84 +N16396 G01 X+34.42 Y-28.871 +N16398 G01 X+33.555 Y-30.708 +N16400 G01 X+32.539 Y-32.484 +N16402 G01 X+32.484 Y-32.539 +N16404 G01 X+30.891 Y-33.449 +N16406 G01 X+28.868 Y-34.402 +N16408 G01 X+26.837 Y-35.15 +N16410 G01 X+24.954 Y-35.661 +N16412 G01 X+22.955 Y-36.021 +N16414 G01 X+21.058 Y-36.192 +N16416 G01 X+19.073 Y-36.195 +N16418 G01 X+16.998 Y-36.005 +N16420 G01 X+14.992 Y-35.631 +N16422 G01 X+13.071 Y-35.092 +N16424 G01 X+11.167 Y-34.376 +N16426 G01 X+9.339 Y-33.507 +N16428 G01 X+7.569 Y-32.486 +N16430 G01 X+7.514 Y-32.431 +N16432 G01 X+6.504 Y-30.662 +N16434 G01 X+5.643 Y-28.832 +N16436 G01 X+4.898 Y-26.822 +N16438 G01 X+4.382 Y-24.94 +N16440 G01 X+4.021 Y-22.947 +N16442 G01 X+3.849 Y-21.055 +N16444 G01 X+3.846 Y-19.076 +N16446 G01 X+4.037 Y-17.006 +N16448 G01 X+4.413 Y-15.006 +N16450 G01 X+4.954 Y-13.092 +N16452 G01 X+5.673 Y-11.197 +N16454 G01 X+6.544 Y-9.379 +N16456 G01 X+7.567 Y-7.621 +N16458 G01 X+7.621 Y-7.567 +N16460 G01 X+9.378 Y-6.555 +N16462 G01 X+11.198 Y-5.692 +N16464 G01 X+13.198 Y-4.944 +N16466 G01 X+15.073 Y-4.426 +N16468 G01 X+17.06 Y-4.063 +N16470 G01 X+18.948 Y-3.89 +N16472 G01 X+20.922 Y-3.887 +N16474 G01 X+22.986 Y-4.079 +N16476 G01 X+24.98 Y-4.456 +N16478 G01 X+26.88 Y-4.997 +N16480 G01 X+28.773 Y-5.721 +N16482 G01 X+30.581 Y-6.594 +N16484 G01 X+32.328 Y-7.621 +N16486 G01 X+32.38 Y-7.671 +N16488 G01 X+32.565 Y-7.968 +N16490 G01 X+33.588 Y-9.792 +N16492 G01 X+34.425 Y-11.62 +N16494 G01 X+35.081 Y-13.44 +N16496 G01 X+35.578 Y-15.298 +N16498 G01 X+35.93 Y-17.329 +N16500 G01 X+36.083 Y-19.327 +N16502 G01 X+36.048 Y-21.355 +N16504 G01 X+35.847 Y-23.194 +N16506 G01 X+35.467 Y-25.105 +N16508 G01 X+34.921 Y-26.967 +N16510 G01 X+34.227 Y-28.752 +N16512 G01 X+33.351 Y-30.548 +N16514 G01 X+32.327 Y-32.274 +N16516 G01 X+32.274 Y-32.327 +N16518 G01 X+30.541 Y-33.343 +N16520 G01 X+28.743 Y-34.212 +N16522 G01 X+26.761 Y-34.965 +N16524 G01 X+24.899 Y-35.487 +N16526 G01 X+22.879 Y-35.86 +N16528 G01 X+21.047 Y-36.028 +N16530 G01 X+19.083 Y-36.031 +N16532 G01 X+17.03 Y-35.838 +N16534 G01 X+15.048 Y-35.457 +N16536 G01 X+13.162 Y-34.911 +N16538 G01 X+11.286 Y-34.182 +N16540 G01 X+9.499 Y-33.304 +N16542 G01 X+7.778 Y-32.274 +N16544 G01 X+7.726 Y-32.221 +N16546 G01 X+6.708 Y-30.501 +N16548 G01 X+5.839 Y-28.719 +N16550 G01 X+5.081 Y-26.74 +N16552 G01 X+4.556 Y-24.886 +N16554 G01 X+4.182 Y-22.871 +N16556 G01 X+4.013 Y-21.045 +N16558 G01 X+4.01 Y-19.085 +N16560 G01 X+4.204 Y-17.038 +N16562 G01 X+4.587 Y-15.062 +N16564 G01 X+5.135 Y-13.183 +N16566 G01 X+5.866 Y-11.316 +N16568 G01 X+6.747 Y-9.54 +N16570 G01 X+7.781 Y-7.828 +N16572 G01 X+7.828 Y-7.78 +N16574 G01 X+7.947 Y-7.702 +N16576 G01 X+9.722 Y-6.66 +N16578 G01 X+11.59 Y-5.767 +N16580 G01 X+13.483 Y-5.06 +N16582 G01 X+15.332 Y-4.552 +N16584 G01 X+17.137 Y-4.223 +N16586 G01 X+18.958 Y-4.054 +N16588 G01 X+20.912 Y-4.051 +N16590 G01 X+22.955 Y-4.246 +N16592 G01 X+24.924 Y-4.63 +N16594 G01 X+26.796 Y-5.18 +N16596 G01 X+28.648 Y-5.912 +N16598 G01 X+30.42 Y-6.798 +N16600 G01 X+32.119 Y-7.834 +N16602 G01 X+32.167 Y-7.881 +N16604 G01 X+32.464 Y-8.342 +N16606 G01 X+33.482 Y-10.127 +N16608 G01 X+34.314 Y-11.924 +N16610 G01 X+34.96 Y-13.705 +N16612 G01 X+35.452 Y-15.559 +N16614 G01 X+35.789 Y-17.571 +N16616 G01 X+35.925 Y-19.532 +N16618 G01 X+35.884 Y-21.341 +N16620 G01 X+35.68 Y-23.16 +N16622 G01 X+35.292 Y-25.047 +N16624 G01 X+34.739 Y-26.875 +N16626 G01 X+34.033 Y-28.633 +N16628 G01 X+33.148 Y-30.387 +N16630 G01 X+32.112 Y-32.067 +N16632 G01 X+32.068 Y-32.113 +N16634 G01 X+31.949 Y-32.192 +N16636 G01 X+30.2 Y-33.239 +N16638 G01 X+28.354 Y-34.137 +N16640 G01 X+26.478 Y-34.849 +N16642 G01 X+24.642 Y-35.361 +N16644 G01 X+22.849 Y-35.693 +N16646 G01 X+20.84 Y-35.873 +N16648 G01 X+18.877 Y-35.856 +N16650 G01 X+17.061 Y-35.67 +N16652 G01 X+15.104 Y-35.283 +N16654 G01 X+13.246 Y-34.728 +N16656 G01 X+11.411 Y-33.991 +N16658 G01 X+9.66 Y-33.1 +N16660 G01 X+7.985 Y-32.059 +N16662 G01 X+7.94 Y-32.015 +N16664 G01 X+7.861 Y-31.898 +N16666 G01 X+6.812 Y-30.161 +N16668 G01 X+5.911 Y-28.325 +N16670 G01 X+5.196 Y-26.458 +N16672 G01 X+4.682 Y-24.629 +N16674 G01 X+4.349 Y-22.841 +N16676 G01 X+4.168 Y-20.838 +N16678 G01 X+4.185 Y-18.88 +N16680 G01 X+4.371 Y-17.069 +N16682 G01 X+4.761 Y-15.118 +N16684 G01 X+5.317 Y-13.267 +N16686 G01 X+6.057 Y-11.441 +N16688 G01 X+6.95 Y-9.7 +N16690 G01 X+7.994 Y-8.038 +N16692 G01 X+8.037 Y-7.993 +N16694 G01 X+8.154 Y-7.914 +N16696 G01 X+9.872 Y-6.866 +N16698 G01 X+11.703 Y-5.959 +N16700 G01 X+13.561 Y-5.242 +N16702 G01 X+15.384 Y-4.725 +N16704 G01 X+17.166 Y-4.39 +N16706 G01 X+19.164 Y-4.209 +N16708 G01 X+21.117 Y-4.226 +N16710 G01 X+22.923 Y-4.413 +N16712 G01 X+24.868 Y-4.804 +N16714 G01 X+26.712 Y-5.363 +N16716 G01 X+28.529 Y-6.105 +N16718 G01 X+30.26 Y-7.001 +N16720 G01 X+31.909 Y-8.047 +N16722 G01 X+31.954 Y-8.09 +N16724 G01 X+32.254 Y-8.538 +N16726 G01 X+33.278 Y-10.268 +N16728 G01 X+34.122 Y-12.026 +N16730 G01 X+34.779 Y-13.78 +N16732 G01 X+35.28 Y-15.608 +N16734 G01 X+35.623 Y-17.596 +N16736 G01 X+35.762 Y-19.536 +N16738 G01 X+35.72 Y-21.327 +N16740 G01 X+35.512 Y-23.126 +N16742 G01 X+35.118 Y-24.989 +N16744 G01 X+34.556 Y-26.789 +N16746 G01 X+33.843 Y-28.508 +N16748 G01 X+32.947 Y-30.22 +N16750 G01 X+31.899 Y-31.858 +N16752 G01 X+31.858 Y-31.9 +N16754 G01 X+31.742 Y-31.98 +N16756 G01 X+30.05 Y-33.033 +N16758 G01 X+28.241 Y-33.945 +N16760 G01 X+26.399 Y-34.668 +N16762 G01 X+24.591 Y-35.188 +N16764 G01 X+22.608 Y-35.555 +N16766 G01 X+20.831 Y-35.709 +N16768 G01 X+18.889 Y-35.692 +N16770 G01 X+17.093 Y-35.503 +N16772 G01 X+15.161 Y-35.109 +N16774 G01 X+13.33 Y-34.545 +N16776 G01 X+11.53 Y-33.798 +N16778 G01 X+9.826 Y-32.9 +N16780 G01 X+8.195 Y-31.847 +N16782 G01 X+8.153 Y-31.805 +N16784 G01 X+7.851 Y-31.364 +N16786 G01 X+6.781 Y-29.584 +N16788 G01 X+5.933 Y-27.827 +N16790 G01 X+5.286 Y-26.104 +N16792 G01 X+4.806 Y-24.367 +N16794 G01 X+4.486 Y-22.601 +N16796 G01 X+4.332 Y-20.829 +N16798 G01 X+4.348 Y-18.892 +N16800 G01 X+4.539 Y-17.1 +N16802 G01 X+4.934 Y-15.175 +N16804 G01 X+5.5 Y-13.351 +N16806 G01 X+6.25 Y-11.56 +N16808 G01 X+7.151 Y-9.867 +N16810 G01 X+8.207 Y-8.248 +N16812 G01 X+8.247 Y-8.206 +N16814 G01 X+8.686 Y-7.904 +N16816 G01 X+10.452 Y-6.831 +N16818 G01 X+12.2 Y-5.981 +N16820 G01 X+13.915 Y-5.331 +N16822 G01 X+15.645 Y-4.849 +N16824 G01 X+17.406 Y-4.528 +N16826 G01 X+19.173 Y-4.372 +N16828 G01 X+21.105 Y-4.389 +N16830 G01 X+22.892 Y-4.58 +N16832 G01 X+24.811 Y-4.978 +N16834 G01 X+26.628 Y-5.546 +N16836 G01 X+28.41 Y-6.298 +N16838 G01 X+30.093 Y-7.202 +N16840 G01 X+31.7 Y-8.26 +N16842 G01 X+31.741 Y-8.299 +N16844 G01 X+32.044 Y-8.735 +N16846 G01 X+33.078 Y-10.414 +N16848 G01 X+33.931 Y-12.133 +N16850 G01 X+34.599 Y-13.856 +N16852 G01 X+35.108 Y-15.657 +N16854 G01 X+35.457 Y-17.621 +N16856 G01 X+35.598 Y-19.541 +N16858 G01 X+35.556 Y-21.313 +N16860 G01 X+35.344 Y-23.092 +N16862 G01 X+34.943 Y-24.931 +N16864 G01 X+34.372 Y-26.703 +N16866 G01 X+33.649 Y-28.389 +N16868 G01 X+32.744 Y-30.059 +N16870 G01 X+31.687 Y-31.647 +N16872 G01 X+31.648 Y-31.687 +N16874 G01 X+31.055 Y-32.101 +N16876 G01 X+29.475 Y-33.069 +N16878 G01 X+27.748 Y-33.925 +N16880 G01 X+26.048 Y-34.579 +N16882 G01 X+24.229 Y-35.088 +N16884 G01 X+22.375 Y-35.416 +N16886 G01 X+20.587 Y-35.554 +N16888 G01 X+18.828 Y-35.524 +N16890 G01 X+16.917 Y-35.302 +N16892 G01 X+15.216 Y-34.935 +N16894 G01 X+13.414 Y-34.363 +N16896 G01 X+11.649 Y-33.605 +N16898 G01 X+9.987 Y-32.697 +N16900 G01 X+8.405 Y-31.634 +N16902 G01 X+8.366 Y-31.595 +N16904 G01 X+7.951 Y-31.007 +N16906 G01 X+6.981 Y-29.439 +N16908 G01 X+6.123 Y-27.722 +N16910 G01 X+5.466 Y-26.03 +N16912 G01 X+4.954 Y-24.217 +N16914 G01 X+4.626 Y-22.369 +N16916 G01 X+4.487 Y-20.586 +N16918 G01 X+4.517 Y-18.831 +N16920 G01 X+4.74 Y-16.926 +N16922 G01 X+5.108 Y-15.23 +N16924 G01 X+5.683 Y-13.435 +N16926 G01 X+6.443 Y-11.679 +N16928 G01 X+7.354 Y-10.027 +N16930 G01 X+8.42 Y-8.457 +N16932 G01 X+8.457 Y-8.419 +N16934 G01 X+9.04 Y-8.004 +N16936 G01 X+10.597 Y-7.031 +N16938 G01 X+12.305 Y-6.17 +N16940 G01 X+13.989 Y-5.511 +N16942 G01 X+15.795 Y-4.997 +N16944 G01 X+17.638 Y-4.667 +N16946 G01 X+19.416 Y-4.527 +N16948 G01 X+21.166 Y-4.558 +N16950 G01 X+23.066 Y-4.782 +N16952 G01 X+24.756 Y-5.152 +N16954 G01 X+26.544 Y-5.729 +N16956 G01 X+28.291 Y-6.491 +N16958 G01 X+29.932 Y-7.405 +N16960 G01 X+31.491 Y-8.473 +N16962 G01 X+31.527 Y-8.509 +N16964 G01 X+31.944 Y-9.088 +N16966 G01 X+32.974 Y-10.732 +N16968 G01 X+33.823 Y-12.423 +N16970 G01 X+34.484 Y-14.125 +N16972 G01 X+34.992 Y-15.948 +N16974 G01 X+35.291 Y-17.647 +N16976 G01 X+35.435 Y-19.545 +N16978 G01 X+35.392 Y-21.299 +N16980 G01 X+35.176 Y-23.057 +N16982 G01 X+34.769 Y-24.873 +N16984 G01 X+34.189 Y-26.617 +N16986 G01 X+33.456 Y-28.27 +N16988 G01 X+32.541 Y-29.899 +N16990 G01 X+31.474 Y-31.438 +N16992 G01 X+31.439 Y-31.474 +N16994 G01 X+30.864 Y-31.892 +N16996 G01 X+29.33 Y-32.869 +N16998 G01 X+27.643 Y-33.735 +N17000 G01 X+25.974 Y-34.399 +N17002 G01 X+24.181 Y-34.917 +N17004 G01 X+22.35 Y-35.25 +N17006 G01 X+20.581 Y-35.391 +N17008 G01 X+18.84 Y-35.36 +N17010 G01 X+16.951 Y-35.134 +N17012 G01 X+15.272 Y-34.761 +N17014 G01 X+13.499 Y-34.18 +N17016 G01 X+11.768 Y-33.412 +N17018 G01 X+10.148 Y-32.494 +N17020 G01 X+8.614 Y-31.42 +N17022 G01 X+8.579 Y-31.386 +N17024 G01 X+8.16 Y-30.816 +N17026 G01 X+7.182 Y-29.294 +N17028 G01 X+6.312 Y-27.616 +N17030 G01 X+5.646 Y-25.956 +N17032 G01 X+5.126 Y-24.169 +N17034 G01 X+4.792 Y-22.343 +N17036 G01 X+4.65 Y-20.58 +N17038 G01 X+4.681 Y-18.843 +N17040 G01 X+4.908 Y-16.96 +N17042 G01 X+5.282 Y-15.286 +N17044 G01 X+5.866 Y-13.52 +N17046 G01 X+6.636 Y-11.798 +N17048 G01 X+7.557 Y-10.188 +N17050 G01 X+8.633 Y-8.666 +N17052 G01 X+8.666 Y-8.633 +N17054 G01 X+9.231 Y-8.213 +N17056 G01 X+10.742 Y-7.232 +N17058 G01 X+12.41 Y-6.36 +N17060 G01 X+14.063 Y-5.691 +N17062 G01 X+15.843 Y-5.169 +N17064 G01 X+17.663 Y-4.833 +N17066 G01 X+19.422 Y-4.691 +N17068 G01 X+21.153 Y-4.722 +N17070 G01 X+23.032 Y-4.949 +N17072 G01 X+24.7 Y-5.326 +N17074 G01 X+26.459 Y-5.912 +N17076 G01 X+28.172 Y-6.685 +N17078 G01 X+29.772 Y-7.608 +N17080 G01 X+31.281 Y-8.686 +N17082 G01 X+31.314 Y-8.718 +N17084 G01 X+31.735 Y-9.279 +N17086 G01 X+32.775 Y-10.874 +N17088 G01 X+33.634 Y-12.526 +N17090 G01 X+34.304 Y-14.197 +N17092 G01 X+34.821 Y-15.994 +N17094 G01 X+35.126 Y-17.672 +N17096 G01 X+35.272 Y-19.55 +N17098 G01 X+35.228 Y-21.285 +N17100 G01 X+35.009 Y-23.023 +N17102 G01 X+34.594 Y-24.815 +N17104 G01 X+34.006 Y-26.532 +N17106 G01 X+33.263 Y-28.151 +N17108 G01 X+32.337 Y-29.738 +N17110 G01 X+31.26 Y-31.229 +N17112 G01 X+31.229 Y-31.261 +N17114 G01 X+30.673 Y-31.683 +N17116 G01 X+29.186 Y-32.668 +N17118 G01 X+27.538 Y-33.545 +N17120 G01 X+25.9 Y-34.219 +N17122 G01 X+24.133 Y-34.745 +N17124 G01 X+22.324 Y-35.084 +N17126 G01 X+20.575 Y-35.227 +N17128 G01 X+18.853 Y-35.196 +N17130 G01 X+16.985 Y-34.967 +N17132 G01 X+15.328 Y-34.587 +N17134 G01 X+13.583 Y-33.997 +N17136 G01 X+11.887 Y-33.219 +N17138 G01 X+10.309 Y-32.29 +N17140 G01 X+8.823 Y-31.207 +N17142 G01 X+8.793 Y-31.177 +N17144 G01 X+8.369 Y-30.625 +N17146 G01 X+7.382 Y-29.15 +N17148 G01 X+6.502 Y-27.511 +N17150 G01 X+5.826 Y-25.881 +N17152 G01 X+5.298 Y-24.121 +N17154 G01 X+4.958 Y-22.318 +N17156 G01 X+4.813 Y-20.574 +N17158 G01 X+4.845 Y-18.856 +N17160 G01 X+5.075 Y-16.994 +N17162 G01 X+5.456 Y-15.342 +N17164 G01 X+6.049 Y-13.604 +N17166 G01 X+6.829 Y-11.917 +N17168 G01 X+7.76 Y-10.349 +N17170 G01 X+8.847 Y-8.876 +N17172 G01 X+8.875 Y-8.846 +N17174 G01 X+9.422 Y-8.422 +N17176 G01 X+10.887 Y-7.432 +N17178 G01 X+12.515 Y-6.549 +N17180 G01 X+14.137 Y-5.871 +N17182 G01 X+15.891 Y-5.341 +N17184 G01 X+17.688 Y-4.999 +N17186 G01 X+19.428 Y-4.854 +N17188 G01 X+21.141 Y-4.886 +N17190 G01 X+22.998 Y-5.117 +N17192 G01 X+24.644 Y-5.5 +N17194 G01 X+26.375 Y-6.094 +N17196 G01 X+28.054 Y-6.878 +N17198 G01 X+29.611 Y-7.811 +N17200 G01 X+31.072 Y-8.9 +N17202 G01 X+31.101 Y-8.928 +N17204 G01 X+31.637 Y-9.618 +N17206 G01 X+32.673 Y-11.18 +N17208 G01 X+33.539 Y-12.831 +N17210 G01 X+34.203 Y-14.493 +N17212 G01 X+34.664 Y-16.1 +N17214 G01 X+34.986 Y-17.9 +N17216 G01 X+35.109 Y-19.555 +N17218 G01 X+35.063 Y-21.271 +N17220 G01 X+34.841 Y-22.989 +N17222 G01 X+34.42 Y-24.757 +N17224 G01 X+33.822 Y-26.446 +N17226 G01 X+33.07 Y-28.032 +N17228 G01 X+32.134 Y-29.577 +N17230 G01 X+31.047 Y-31.02 +N17232 G01 X+30.482 Y-31.474 +N17234 G01 X+29.041 Y-32.468 +N17236 G01 X+27.432 Y-33.356 +N17238 G01 X+25.825 Y-34.039 +N17240 G01 X+24.085 Y-34.573 +N17242 G01 X+22.299 Y-34.918 +N17244 G01 X+20.569 Y-35.064 +N17246 G01 X+18.866 Y-35.032 +N17248 G01 X+17.019 Y-34.799 +N17250 G01 X+15.384 Y-34.413 +N17252 G01 X+13.667 Y-33.814 +N17254 G01 X+12.006 Y-33.026 +N17256 G01 X+10.469 Y-32.087 +N17258 G01 X+9.033 Y-30.993 +N17260 G01 X+8.578 Y-30.435 +N17262 G01 X+7.582 Y-29.005 +N17264 G01 X+6.692 Y-27.406 +N17266 G01 X+6.006 Y-25.807 +N17268 G01 X+5.47 Y-24.073 +N17270 G01 X+5.124 Y-22.293 +N17272 G01 X+4.977 Y-20.568 +N17274 G01 X+5.009 Y-18.869 +N17276 G01 X+5.243 Y-17.028 +N17278 G01 X+5.63 Y-15.398 +N17280 G01 X+6.231 Y-13.688 +N17282 G01 X+7.022 Y-12.036 +N17284 G01 X+7.964 Y-10.51 +N17286 G01 X+9.06 Y-9.085 +N17288 G01 X+9.613 Y-8.631 +N17290 G01 X+11.031 Y-7.632 +N17292 G01 X+12.62 Y-6.739 +N17294 G01 X+14.212 Y-6.051 +N17296 G01 X+15.939 Y-5.513 +N17298 G01 X+17.714 Y-5.165 +N17300 G01 X+19.433 Y-5.018 +N17302 G01 X+21.128 Y-5.05 +N17304 G01 X+22.964 Y-5.285 +N17306 G01 X+24.588 Y-5.674 +N17308 G01 X+26.291 Y-6.277 +N17310 G01 X+27.935 Y-7.071 +N17312 G01 X+29.45 Y-8.014 +N17314 G01 X+30.862 Y-9.113 +N17316 G01 X+31.553 Y-9.967 +N17318 G01 X+32.573 Y-11.478 +N17320 G01 X+33.352 Y-12.93 +N17322 G01 X+34.024 Y-14.562 +N17324 G01 X+34.493 Y-16.145 +N17326 G01 X+34.82 Y-17.923 +N17328 G01 X+34.947 Y-19.637 +N17330 G01 X+34.891 Y-21.357 +N17332 G01 X+34.635 Y-23.152 +N17334 G01 X+34.179 Y-24.91 +N17336 G01 X+33.601 Y-26.449 +N17338 G01 X+32.877 Y-27.913 +N17340 G01 X+31.931 Y-29.416 +N17342 G01 X+30.833 Y-30.811 +N17344 G01 X+30.291 Y-31.265 +N17346 G01 X+28.896 Y-32.268 +N17348 G01 X+27.327 Y-33.166 +N17350 G01 X+25.751 Y-33.859 +N17352 G01 X+24.038 Y-34.401 +N17354 G01 X+22.274 Y-34.752 +N17356 G01 X+20.564 Y-34.901 +N17358 G01 X+18.878 Y-34.868 +N17360 G01 X+17.053 Y-34.631 +N17362 G01 X+15.44 Y-34.239 +N17364 G01 X+13.751 Y-33.631 +N17366 G01 X+12.125 Y-32.833 +N17368 G01 X+10.63 Y-31.884 +N17370 G01 X+9.243 Y-30.78 +N17372 G01 X+8.35 Y-29.677 +N17374 G01 X+7.381 Y-28.214 +N17376 G01 X+6.556 Y-26.622 +N17378 G01 X+5.951 Y-25.073 +N17380 G01 X+5.49 Y-23.388 +N17382 G01 X+5.227 Y-21.766 +N17384 G01 X+5.131 Y-20.09 +N17386 G01 X+5.21 Y-18.45 +N17388 G01 X+5.461 Y-16.809 +N17390 G01 X+5.872 Y-15.235 +N17392 G01 X+6.491 Y-13.595 +N17394 G01 X+7.216 Y-12.154 +N17396 G01 X+8.167 Y-10.67 +N17398 G01 X+9.273 Y-9.295 +N17400 G01 X+10.365 Y-8.402 +N17402 G01 X+11.817 Y-7.43 +N17404 G01 X+13.4 Y-6.603 +N17406 G01 X+14.943 Y-5.995 +N17408 G01 X+16.622 Y-5.533 +N17410 G01 X+18.239 Y-5.268 +N17412 G01 X+19.91 Y-5.172 +N17414 G01 X+21.546 Y-5.251 +N17416 G01 X+23.182 Y-5.503 +N17418 G01 X+24.75 Y-5.915 +N17420 G01 X+26.383 Y-6.537 +N17422 G01 X+27.816 Y-7.264 +N17424 G01 X+29.289 Y-8.218 +N17426 G01 X+30.653 Y-9.327 +N17428 G01 X+31.442 Y-10.27 +N17430 G01 X+32.376 Y-11.612 +N17432 G01 X+33.164 Y-13.029 +N17434 G01 X+33.846 Y-14.631 +N17436 G01 X+34.322 Y-16.19 +N17438 G01 X+34.655 Y-17.946 +N17440 G01 X+34.784 Y-19.641 +N17442 G01 X+34.727 Y-21.342 +N17444 G01 X+34.467 Y-23.115 +N17446 G01 X+34.004 Y-24.849 +N17448 G01 X+33.417 Y-26.362 +N17450 G01 X+32.684 Y-27.793 +N17452 G01 X+31.728 Y-29.255 +N17454 G01 X+30.62 Y-30.6 +N17456 G01 X+29.55 Y-31.495 +N17458 G01 X+28.119 Y-32.472 +N17460 G01 X+26.554 Y-33.305 +N17462 G01 X+25.025 Y-33.917 +N17464 G01 X+23.359 Y-34.383 +N17466 G01 X+21.752 Y-34.65 +N17468 G01 X+20.089 Y-34.746 +N17470 G01 X+18.463 Y-34.667 +N17472 G01 X+16.837 Y-34.413 +N17474 G01 X+15.28 Y-33.997 +N17476 G01 X+13.66 Y-33.371 +N17478 G01 X+12.244 Y-32.64 +N17480 G01 X+10.791 Y-31.681 +N17482 G01 X+9.452 Y-30.566 +N17484 G01 X+8.556 Y-29.507 +N17486 G01 X+7.577 Y-28.087 +N17488 G01 X+6.742 Y-26.531 +N17490 G01 X+6.127 Y-25.009 +N17492 G01 X+5.66 Y-23.349 +N17494 G01 X+5.392 Y-21.747 +N17496 G01 X+5.295 Y-20.089 +N17498 G01 X+5.374 Y-18.467 +N17500 G01 X+5.63 Y-16.846 +N17502 G01 X+6.046 Y-15.295 +N17504 G01 X+6.675 Y-13.682 +N17506 G01 X+7.409 Y-12.273 +N17508 G01 X+8.37 Y-10.831 +N17510 G01 X+9.385 Y-9.613 +N17512 G01 X+10.535 Y-8.608 +N17514 G01 X+11.944 Y-7.626 +N17516 G01 X+13.491 Y-6.788 +N17518 G01 X+15.006 Y-6.172 +N17520 G01 X+16.661 Y-5.702 +N17522 G01 X+18.258 Y-5.433 +N17524 G01 X+19.911 Y-5.335 +N17526 G01 X+21.528 Y-5.415 +N17528 G01 X+23.145 Y-5.672 +N17530 G01 X+24.69 Y-6.09 +N17532 G01 X+26.296 Y-6.721 +N17534 G01 X+27.697 Y-7.457 +N17536 G01 X+29.129 Y-8.421 +N17538 G01 X+30.443 Y-9.541 +N17540 G01 X+31.351 Y-10.591 +N17542 G01 X+32.277 Y-11.899 +N17544 G01 X+33.09 Y-13.357 +N17546 G01 X+33.754 Y-14.937 +N17548 G01 X+34.243 Y-16.615 +N17550 G01 X+34.526 Y-18.263 +N17552 G01 X+34.623 Y-19.843 +N17554 G01 X+34.543 Y-21.532 +N17556 G01 X+34.298 Y-23.079 +N17558 G01 X+33.828 Y-24.788 +N17560 G01 X+33.233 Y-26.274 +N17562 G01 X+32.49 Y-27.674 +N17564 G01 X+31.524 Y-29.094 +N17566 G01 X+30.406 Y-30.391 +N17568 G01 X+29.241 Y-31.399 +N17570 G01 X+27.836 Y-32.373 +N17572 G01 X+26.463 Y-33.12 +N17574 G01 X+24.962 Y-33.74 +N17576 G01 X+23.319 Y-34.214 +N17578 G01 X+21.732 Y-34.485 +N17580 G01 X+20.089 Y-34.583 +N17582 G01 X+18.481 Y-34.502 +N17584 G01 X+16.834 Y-34.235 +N17586 G01 X+15.339 Y-33.822 +N17588 G01 X+13.748 Y-33.187 +N17590 G01 X+12.362 Y-32.446 +N17592 G01 X+10.952 Y-31.478 +N17594 G01 X+9.662 Y-30.353 +N17596 G01 X+8.652 Y-29.2 +N17598 G01 X+7.676 Y-27.806 +N17600 G01 X+6.927 Y-26.44 +N17602 G01 X+6.304 Y-24.946 +N17604 G01 X+5.829 Y-23.31 +N17606 G01 X+5.556 Y-21.727 +N17608 G01 X+5.458 Y-20.088 +N17610 G01 X+5.539 Y-18.485 +N17612 G01 X+5.807 Y-16.844 +N17614 G01 X+6.221 Y-15.354 +N17616 G01 X+6.859 Y-13.77 +N17618 G01 X+7.602 Y-12.392 +N17620 G01 X+8.573 Y-10.992 +N17622 G01 X+9.598 Y-9.818 +N17624 G01 X+10.841 Y-8.704 +N17626 G01 X+12.225 Y-7.725 +N17628 G01 X+13.583 Y-6.973 +N17630 G01 X+15.07 Y-6.348 +N17632 G01 X+16.7 Y-5.871 +N17634 G01 X+18.277 Y-5.598 +N17636 G01 X+19.912 Y-5.499 +N17638 G01 X+21.511 Y-5.58 +N17640 G01 X+23.147 Y-5.849 +N17642 G01 X+24.631 Y-6.265 +N17644 G01 X+26.208 Y-6.905 +N17646 G01 X+27.578 Y-7.65 +N17648 G01 X+28.968 Y-8.624 +N17650 G01 X+30.234 Y-9.755 +N17652 G01 X+31.189 Y-10.807 +N17654 G01 X+32.166 Y-12.146 +N17656 G01 X+32.984 Y-13.588 +N17658 G01 X+33.632 Y-15.113 +N17660 G01 X+34.101 Y-16.703 +N17662 G01 X+34.385 Y-18.336 +N17664 G01 X+34.481 Y-19.991 +N17666 G01 X+34.387 Y-21.646 +N17668 G01 X+34.105 Y-23.28 +N17670 G01 X+33.637 Y-24.87 +N17672 G01 X+32.991 Y-26.397 +N17674 G01 X+32.175 Y-27.84 +N17676 G01 X+31.199 Y-29.18 +N17678 G01 X+30.077 Y-30.4 +N17680 G01 X+28.822 Y-31.483 +N17682 G01 X+27.452 Y-32.416 +N17684 G01 X+25.984 Y-33.187 +N17686 G01 X+24.438 Y-33.784 +N17688 G01 X+22.834 Y-34.201 +N17690 G01 X+21.192 Y-34.432 +N17692 G01 X+19.535 Y-34.474 +N17694 G01 X+17.884 Y-34.326 +N17696 G01 X+16.26 Y-33.99 +N17698 G01 X+14.686 Y-33.471 +N17700 G01 X+13.181 Y-32.775 +N17702 G01 X+11.766 Y-31.912 +N17704 G01 X+10.458 Y-30.893 +N17706 G01 X+9.276 Y-29.731 +N17708 G01 X+8.234 Y-28.442 +N17710 G01 X+7.346 Y-27.042 +N17712 G01 X+6.625 Y-25.55 +N17714 G01 X+6.078 Y-23.985 +N17716 G01 X+5.714 Y-22.367 +N17718 G01 X+5.537 Y-20.719 +N17720 G01 X+5.549 Y-19.061 +N17722 G01 X+5.751 Y-17.416 +N17724 G01 X+6.14 Y-15.805 +N17726 G01 X+6.71 Y-14.248 +N17728 G01 X+7.455 Y-12.767 +N17730 G01 X+8.364 Y-11.381 +N17732 G01 X+9.425 Y-10.107 +N17734 G01 X+10.625 Y-8.963 +N17736 G01 X+11.948 Y-7.964 +N17738 G01 X+13.376 Y-7.123 +N17740 G01 X+14.891 Y-6.45 +N17742 G01 X+16.473 Y-5.955 +N17744 G01 X+18.101 Y-5.644 +N17746 G01 X+19.754 Y-5.521 +N17748 G01 X+21.411 Y-5.588 +N17750 G01 X+23.049 Y-5.844 +N17752 G01 X+24.647 Y-6.285 +N17754 G01 X+26.184 Y-6.906 +N17756 G01 X+27.64 Y-7.698 +N17758 G01 X+28.996 Y-8.652 +N17760 G01 X+30.24 Y-9.76 +N17762 G01 Z-0.45 F16500 +N17764 G00 Z+4.55 +G01 Z10 (AJOUT) +(#HSC OFF )(AJOUT) +(N17766 #TRAFO OFF) +(#FLUSH WAIT )(AJOUT) +(N17768 G53 G01 Z+24 F1000) +(N17770 G53 G01 Y+27 F1000) +(N17772 M05) +N17774 M17 +(N99999999 %Ebauche G71) +(//4\\EB CARRE AVEC RAYON) +(//5\\EB DIAGONALES) +(//6\\SURFACAGE 5 axes EN SPIRALE CALOTTE) +(//7\\EB OBLONG 1) +(//8\\EB OBLONG 2) +(//9\\EB OBLONG 3) +(//10\\EB OBLONG 4) +(//11\\EB POCHE RONDE ETAGE 1) +(//12\\EB POCHE RONDE ETAGE 2) +(//13\\EB POCHE RONDE ETAGE 3) +(//14\\EB POCHE RONDE AVEC PIVOT) +(//15\\EB poche laterale 4 axes) +(//16\\EB trou lateral 4 axes) +N200 G0 Y15 Z15 +(N210 #TRAFO OFF) +N220 M05 +N9999 M30 diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/test_long.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/test_long.ngc new file mode 100644 index 0000000..be26d40 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/test_long.ngc @@ -0,0 +1,11 @@ +(M61 Q1) + +G1 X0 Y0 Z0 F9000 + +o103 repeat [1] + G1 X20 Y0 Z0 F9000 + G1 X20 Y20 Z0 F9000 + G1 X0 Y20 Z0 F9000 + G1 X0 Y0 Z0 F9000 +o103 endrepeat +M2 diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/001_exact_stop.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/001_exact_stop.ngc new file mode 100644 index 0000000..f0ad07a --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/001_exact_stop.ngc @@ -0,0 +1,9 @@ +(M61 Q1) +G91 ; incremental mode +G61.1 ; exact stop +F3000 +G1 X0 Y0 Z0 +G1 X1 Y0 Z0 +G1 X0 Y1 Z0 +G1 X0 Y0 Z1 +M2 diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/002_helix_circle.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/002_helix_circle.ngc new file mode 100644 index 0000000..2226edb --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/002_helix_circle.ngc @@ -0,0 +1,4 @@ +G17 ; XY plane +G00 X0 Y0 Z0 +G03 X1 Y1 Z0 I0 J1 F1000 +M2 \ No newline at end of file diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/003_helix_qcircle_pitch.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/003_helix_qcircle_pitch.ngc new file mode 100644 index 0000000..38eb2a8 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/003_helix_qcircle_pitch.ngc @@ -0,0 +1,4 @@ +G17 ; XY plane +G00 X0 Y0 Z0 +G03 X1 Y1 Z1 I0 J1 K4 F1000 +M2 \ No newline at end of file diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/004_single_segment.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/004_single_segment.ngc new file mode 100644 index 0000000..7e73e29 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/004_single_segment.ngc @@ -0,0 +1,3 @@ +G91 ; incremental mode +G1 X1 F3000 +M2 ; program end diff --git a/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/005_compress.ngc b/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/005_compress.ngc new file mode 100644 index 0000000..ad8b7af --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/ngc_test/unit/005_compress.ngc @@ -0,0 +1,12 @@ +G91 ; incremental mode +G1 X0 F3000 +G1 X0.01 +G1 X0.01 +G1 X0.01 +G1 X0.01 +G1 X0.01 +G1 X0.01 +G1 X0.01 +G1 X0.01 +G1 X0.01 +M2 ; program end diff --git a/rootfs/board/common/rootfs_overlay/root/source.ngc b/rootfs/board/common/rootfs_overlay/root/source.ngc new file mode 100644 index 0000000..6c4d793 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/source.ngc @@ -0,0 +1,44 @@ +(ISO 6983 code of anchor) +G10 L2 P1 X0 Y-18 +G17 G21 G40 G49 (Plan XY, mode mm, annulation de la compensation de rayon, et de longueur) +G64 P2.0 (Mode tajectoire continue avec tolérance 0.5 [mm]) +(G61.1) + +(M61 Q1) +F600 +S75000 + +G00 X0 Y0 Z0 +M3 + +o103 repeat [1] + G02 X-13 Y13 I3.25 J16.25 + G01 X-14.95 Y11.05 + G01 Y18.2 + G01 X-9.1 Y16.9 + G01 X-11.05 Y15.61 + G03 X-1.95 Y5.85 I11.702 J1.788 + G01 Y22.75 + G01 X-8.45 + G01 Y26 + G01 X-1.95 + G01 Y29.25 + G02 X1.95 Y29.25 I1.95 J3.25 + G01 Y26 + G01 X8.45 + G01 Y22.75 + G01 X1.95 + G01 Y5.85 + G03 X11.05 Y15.61 I-2.602 J11.548 + G01 X9.1 Y16.9 + G01 X14.95 Y18.2 + G01 Y11.05 + G01 X13 Y13 + G02 X0 Y0 I-16.25 J3.25 +o103 endrepeat + +G10 L2 P0 X0 Y0 +G17 G21 G40 G49 +G00 X0 Y0 Z0 + +M2 diff --git a/rootfs/board/common/rootfs_overlay/root/test.ngc b/rootfs/board/common/rootfs_overlay/root/test.ngc new file mode 100644 index 0000000..b551d16 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/test.ngc @@ -0,0 +1,9 @@ +(M61 Q1) + +o103 repeat [100] + G0 X0 Y0 Z0 F4000 + G0 X20 Y0 Z0 F4000 + G0 X20 Y20 Z0 F4000 + G0 X0 Y20 Z0 F4000 +o103 endrepeat +M2 diff --git a/rootfs/board/common/rootfs_overlay/root/test_long.ngc b/rootfs/board/common/rootfs_overlay/root/test_long.ngc new file mode 100644 index 0000000..63c91b4 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/test_long.ngc @@ -0,0 +1,9 @@ +(M61 Q1) + +o103 repeat [100] + G0 X0 Y0 Z0 F400 + G0 X20 Y0 Z0 F400 + G0 X20 Y20 Z0 F400 + G0 X0 Y20 Z0 F400 +o103 endrepeat +M2 diff --git a/rootfs/board/common/rootfs_overlay/root/test_short.ngc b/rootfs/board/common/rootfs_overlay/root/test_short.ngc new file mode 100644 index 0000000..29fdb58 --- /dev/null +++ b/rootfs/board/common/rootfs_overlay/root/test_short.ngc @@ -0,0 +1,8 @@ +(M61 Q1) + +G0 X0 Y0 Z0 F60 +G0 X1 Y0 Z0 F60 +G0 X1 Y1 Z0 F60 +G0 X0 Y1 Z0 F60 +G0 X0 Y0 Z0 F60 +M2 diff --git a/rootfs/board/qemu/initrd.cpio b/rootfs/board/qemu/initrd.cpio new file mode 100644 index 0000000..6f2fbd6 Binary files /dev/null and b/rootfs/board/qemu/initrd.cpio differ diff --git a/rootfs/board/qemu/post_build.sh b/rootfs/board/qemu/post_build.sh new file mode 100755 index 0000000..720d11f --- /dev/null +++ b/rootfs/board/qemu/post_build.sh @@ -0,0 +1,6 @@ +#! /bin/bash + +# Here, you can do something after build of rootfs is done but +# before the final images (i.e. rootfs.tar) are generated. +# See post_image.sh script for the latter. +# Note: you should have access to most BR variables here. diff --git a/rootfs/board/qemu/post_image.sh b/rootfs/board/qemu/post_image.sh new file mode 100755 index 0000000..23ea868 --- /dev/null +++ b/rootfs/board/qemu/post_image.sh @@ -0,0 +1,7 @@ +#! /bin/bash + +# Here, you can do something after the rootfs images has been +# generated. +# See post_build.sh script if you want to do something just before +# the images are generated. +# Note: you should have access to most BR variables here. diff --git a/rootfs/board/qemu/rootfs_overlay/etc/inittab b/rootfs/board/qemu/rootfs_overlay/etc/inittab new file mode 100644 index 0000000..03a3036 --- /dev/null +++ b/rootfs/board/qemu/rootfs_overlay/etc/inittab @@ -0,0 +1,35 @@ +# /etc/inittab +# +# Copyright (C) 2001 Erik Andersen +# +# Note: BusyBox init doesn't support runlevels. The runlevels field is +# completely ignored by BusyBox init. If you want runlevels, use +# sysvinit. +# +# Format for each entry: ::: +# +# id == tty to run on, or empty for /dev/console +# runlevels == ignored +# action == one of sysinit, respawn, askfirst, wait, and once +# process == program to run + +# Startup the system +null::sysinit:/bin/mount -t proc proc /proc +null::sysinit:/bin/mount -o remount,rw / +null::sysinit:/bin/mkdir -p /dev/pts +null::sysinit:/bin/mkdir -p /dev/shm +null::sysinit:/bin/mount -a +null::sysinit:/bin/hostname -F /etc/hostname +# now run any rc scripts +::sysinit:/etc/init.d/rcS + +# Put a getty on the serial port +ttyS0::respawn:/sbin/getty -L -l /usr/bin/auto-root-login -n ttyS0 0 vt100 # GENERIC_SERIAL + +# Stuff to do for the 3-finger salute +::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +::shutdown:/etc/init.d/rcK +::shutdown:/sbin/swapoff -a +::shutdown:/bin/umount -a -r diff --git a/rootfs/board/qemu/rootfs_overlay/etc/xdg/openbox/autostart b/rootfs/board/qemu/rootfs_overlay/etc/xdg/openbox/autostart new file mode 100755 index 0000000..5b0d8a0 --- /dev/null +++ b/rootfs/board/qemu/rootfs_overlay/etc/xdg/openbox/autostart @@ -0,0 +1,24 @@ +# +# These things are run when an Openbox X Session is started. +# You may place a similar script in $HOME/.config/openbox/autostart +# to run user-specific things. +# + +# If you want to use GNOME config tools... +# +#if test -x /usr/libexec/gnome-settings-daemon >/dev/null; then +# /usr/libexec/gnome-settings-daemon & +#elif which gnome-settings-daemon >/dev/null; then +# gnome-settings-daemon & +#fi + +# If you want to use XFCE config tools... +# +#xfce-mcs-manager & + +xrandr --output Virtual-1 --mode 1920x1080 + +xterm -T '/var/log/opencn.log' -e 'tail -f /var/log/opencn.log'& +xterm -T '/var/log/messages' -e 'tail -f /var/log/messages'& +xterm -e './halcmd -f two-drives.hal && ./opencn-server; sh' & +xterm & diff --git a/rootfs/board/qemu/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd0.xml b/rootfs/board/qemu/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd0.xml new file mode 100644 index 0000000..a3f7d34 --- /dev/null +++ b/rootfs/board/qemu/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd0.xml @@ -0,0 +1,23 @@ + + + + + + PS + 1 + 0 + 0x6092 + 01 + 00000002 + + + PS + 1 + 0 + 0x6892 + 01 + 00000002 + + + + diff --git a/rootfs/board/qemu/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd1.xml b/rootfs/board/qemu/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd1.xml new file mode 100644 index 0000000..2c5fd0d --- /dev/null +++ b/rootfs/board/qemu/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd1.xml @@ -0,0 +1,19 @@ + + + + PS + 1 + 0 + 0x6092 + 01 + 00000002 + + + PS + 1 + 0 + 0x6892 + 01 + 0040 + + diff --git a/rootfs/board/qemu/rootfs_overlay/root/one-drive-feedopt.hal b/rootfs/board/qemu/rootfs_overlay/root/one-drive-feedopt.hal new file mode 100644 index 0000000..4f0496e --- /dev/null +++ b/rootfs/board/qemu/rootfs_overlay/root/one-drive-feedopt.hal @@ -0,0 +1,16 @@ + +# The threads period is in [us], contrary to the one defined for the +# ethercat master in its xml, where it is in [ns] + +#load lcec cfg=one-drive.xml +load threads name1=rt10k period1=10000 +load feedopt +addf feedopt.update rt10k + +setp feedopt.us-active 1 +setp feedopt.rt-active 0 + +#setp lcec.0.TSD0.set-mode-csp-0 1 +#net X feedopt.sample-0 => lcec.0.TSD0.target-position-0 + +start diff --git a/rootfs/board/qemu/rootfs_overlay/root/one-drive.hal b/rootfs/board/qemu/rootfs_overlay/root/one-drive.hal new file mode 100644 index 0000000..6bc175e --- /dev/null +++ b/rootfs/board/qemu/rootfs_overlay/root/one-drive.hal @@ -0,0 +1,27 @@ + +# First example file for testing the optimization chain +# with a single drive and a single motor +# +# It does not use LCCT and the output from the optimization +# is connected directly to the LCEC target-position +# +# Usage: run this, then 'halcmd setp lcec.0.TSD0.set-mode-csp-0 1' +# to enable the position stream following mode. The motor should then move. + +load threads name1=rt10k period1=100000 +load lcec cfg=one-drive.xml -d +load feedopt +addf feedopt.update rt10k + +load sampler depth=200 cfg=fff samples.txt +net sampleX feedopt.sample-0 lcec.0.TSD0.target-position-0 sampler.0.pin.0 +net sampleY feedopt.sample-1 sampler.0.pin.1 +net sampleZ feedopt.sample-2 sampler.0.pin.2 +addf sampler.0 lcec_thread.0 + +setp feedopt.us-active 1 +setp feedopt.rt-active 1 + +setp lcec.0.TSD0.set-mode-csp-0 1 +start + diff --git a/rootfs/board/qemu/rootfs_overlay/root/one-drive.xml b/rootfs/board/qemu/rootfs_overlay/root/one-drive.xml new file mode 100644 index 0000000..886b7e5 --- /dev/null +++ b/rootfs/board/qemu/rootfs_overlay/root/one-drive.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/rootfs/board/qemu/rootfs_overlay/root/setpoints/generate.py b/rootfs/board/qemu/rootfs_overlay/root/setpoints/generate.py new file mode 100644 index 0000000..ece51aa --- /dev/null +++ b/rootfs/board/qemu/rootfs_overlay/root/setpoints/generate.py @@ -0,0 +1,8 @@ +import numpy as np + +tvec = np.linspace(0,2*np.pi, 500) + +with open('circle.txt', 'w') as f: + for t in tvec: + f.write('{} {} {}\n'.format(np.cos(t), np.sin(t), 0.0)) + diff --git a/rootfs/board/qemu/rootfs_overlay/root/two-drives.hal b/rootfs/board/qemu/rootfs_overlay/root/two-drives.hal new file mode 100644 index 0000000..62df6c2 --- /dev/null +++ b/rootfs/board/qemu/rootfs_overlay/root/two-drives.hal @@ -0,0 +1,67 @@ + + +# The threads period is in [us], contrary to the one defined for the +# ethercat master in its xml, where it is in [ns] + +load lcec cfg=two-drives.xml -d + +#load streamer depth=200 cfg=fff setpoints/source.txt +#setp streamer.0.enable 0 + +load sampler depth=200 cfg=ffff sampler.log +setp sampler.0.enable 1 + +load lcct +load feedopt + +net feedopt-rt-active feedopt.rt-active => lcct.gcode.feedopt-rt-active +net feedopt-single-shot lcct.gcode.feedopt-single-shot => feedopt.rt-single-shot +net feedopt-ready feedopt.ready => lcct.gcode.feedopt-ready +net feedopt-rt-start lcct.gcode.feedopt-rt-start => feedopt.rt-start +net feedopt-rt-reset lcct.gcode.feedopt-rt-reset => feedopt.opt-rt-reset +net feedopt-us-reset lcct.gcode.feedopt-us-reset => feedopt.opt-us-reset +net feedopt-rt-pause lcct.gcode.feedopt-rt-pause => feedopt.rt-pause + + +net pos-cmd-{012} feedopt.sample-{012} => lcct.gcode.joint-pos-cmd-{012} +net start-homing-{0123} lcct.home.start-homing-{0123} => lcec.0.TSD{01}.do-homing-{01} +net stop-homing-{0123} lcct.home.stop-homing-{0123} => lcec.0.TSD{01}.do-stop-homing-{01} + +#net joint-pos-streamer-{012} streamer.0.pin.{012} => lcct.stream.joint-pos-streamer-{012} +net spindle-cmd-out lcct.spindle-cmd-out => lcec.0.TSD1.target-velocity-1 +net spindle-cur-in lcec.0.TSD1.current-velocity-1 => lcct.spindle-cur-in + +net joint-pos-cur-in-{0123} lcec.0.TSD{01}.current-position-{01} => lcct.joint-pos-cur-in-{0123} +net target-position-{0123} lcct.target-position-{0123} => lcec.0.TSD{01}.target-position-{01} sampler.0.pin.{0123} + +net in-mode-csp-{0123} lcec.0.TSD{01}.in-mode-csp-{01} => lcct.in-mode-csp-{0123} +net in-mode-csv-{0123} lcec.0.TSD{01}.in-mode-csv-{01} => lcct.in-mode-csv-{0123} +net in-mode-hm-{0123} lcec.0.TSD{01}.in-mode-hm-{01} => lcct.in-mode-hm-{0123} +net in-mode-inactive-{0123} lcec.0.TSD{01}.in-mode-inactive-{01} => lcct.in-mode-inactive-{0123} + +net in-fault-{0123} lcec.0.TSD{01}.in-fault-{01} => lcct.in-fault-{0123} + +net set-mode-csp-{0123} lcec.0.TSD{01}.set-mode-csp-{01} => lcct.set-mode-csp-{0123} +net set-mode-csv-{0123} lcec.0.TSD{01}.set-mode-csv-{01} => lcct.set-mode-csv-{0123} +net set-mode-hm-{0123} lcec.0.TSD{01}.set-mode-hm-{01} => lcct.set-mode-hm-{0123} +net set-mode-inactive-{0123} lcec.0.TSD{01}.set-mode-inactive-{01} => lcct.set-mode-inactive-{0123} + +net fault-reset-{0123} lcct.fault-reset-{0123} => lcec.0.TSD{01}.fault-reset-{01} +net homed-{0123} lcec.0.TSD{01}.homed-{01} => lcct.home.homed-{0123} + +#net streamer-clock-out lcct.stream.streamer-clock => streamer.0.clock +#net streamer-clock-mode-out lcct.stream.streamer-clock-mode => streamer.0.clock-mode +#net streamer-enable lcct.stream.streamer-enable => streamer.0.enable +#net streamer-empty streamer.0.empty => lcct.stream.streamer-empty +#net streamer-reload-out lcct.stream.streamer-reload => streamer.0.reload + +net sampler-enable lcct.sampler-enable-out => sampler.0.enable +net external-trigger lcct.external-trigger => lcec.0.TSD0.extra-rx-var1-1 +net electrovalve lcct.electrovalve => lcec.0.TSD1.extra-rx-var1-0 + +#addf streamer.0 lcec_thread.0 +addf feedopt.update lcec_thread.0 +addf lcct.update lcec_thread.0 +addf sampler.0 lcec_thread.0 + +start diff --git a/rootfs/board/qemu/rootfs_overlay/root/two-drives.xml b/rootfs/board/qemu/rootfs_overlay/root/two-drives.xml new file mode 100644 index 0000000..59a9af9 --- /dev/null +++ b/rootfs/board/qemu/rootfs_overlay/root/two-drives.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/rootfs/board/x86/initrd.cpio b/rootfs/board/x86/initrd.cpio new file mode 100644 index 0000000..b86a8ab Binary files /dev/null and b/rootfs/board/x86/initrd.cpio differ diff --git a/rootfs/board/x86/post_build.sh b/rootfs/board/x86/post_build.sh new file mode 100755 index 0000000..720d11f --- /dev/null +++ b/rootfs/board/x86/post_build.sh @@ -0,0 +1,6 @@ +#! /bin/bash + +# Here, you can do something after build of rootfs is done but +# before the final images (i.e. rootfs.tar) are generated. +# See post_image.sh script for the latter. +# Note: you should have access to most BR variables here. diff --git a/rootfs/board/x86/post_image.sh b/rootfs/board/x86/post_image.sh new file mode 100755 index 0000000..23ea868 --- /dev/null +++ b/rootfs/board/x86/post_image.sh @@ -0,0 +1,7 @@ +#! /bin/bash + +# Here, you can do something after the rootfs images has been +# generated. +# See post_build.sh script if you want to do something just before +# the images are generated. +# Note: you should have access to most BR variables here. diff --git a/rootfs/board/x86/rootfs_overlay/etc/inittab b/rootfs/board/x86/rootfs_overlay/etc/inittab new file mode 100644 index 0000000..00de4ae --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/etc/inittab @@ -0,0 +1,35 @@ +# /etc/inittab +# +# Copyright (C) 2001 Erik Andersen +# +# Note: BusyBox init doesn't support runlevels. The runlevels field is +# completely ignored by BusyBox init. If you want runlevels, use +# sysvinit. +# +# Format for each entry: ::: +# +# id == tty to run on, or empty for /dev/console +# runlevels == ignored +# action == one of sysinit, respawn, askfirst, wait, and once +# process == program to run + +# Startup the system +null::sysinit:/bin/mount -t proc proc /proc +null::sysinit:/bin/mount -o remount,rw / +null::sysinit:/bin/mkdir -p /dev/pts +null::sysinit:/bin/mkdir -p /dev/shm +null::sysinit:/bin/mount -a +null::sysinit:/bin/hostname -F /etc/hostname +# now run any rc scripts +::sysinit:/etc/init.d/rcS + +# Put a getty on the serial port +tty0::respawn:/sbin/getty -L -l /usr/bin/auto-root-login -n tty0 0 vt100 # GENERIC_SERIAL + +# Stuff to do for the 3-finger salute +::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +::shutdown:/etc/init.d/rcK +::shutdown:/sbin/swapoff -a +::shutdown:/bin/umount -a -r diff --git a/rootfs/board/x86/rootfs_overlay/etc/xdg/openbox/autostart b/rootfs/board/x86/rootfs_overlay/etc/xdg/openbox/autostart new file mode 100755 index 0000000..7d487ac --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/etc/xdg/openbox/autostart @@ -0,0 +1,23 @@ +# +# These things are run when an Openbox X Session is started. +# You may place a similar script in $HOME/.config/openbox/autostart +# to run user-specific things. +# + +# If you want to use GNOME config tools... +# +#if test -x /usr/libexec/gnome-settings-daemon >/dev/null; then +# /usr/libexec/gnome-settings-daemon & +#elif which gnome-settings-daemon >/dev/null; then +# gnome-settings-daemon & +#fi + +# If you want to use XFCE config tools... +# +#xfce-mcs-manager & + +xterm -T '/var/log/opencn.log' -e 'tail -f /var/log/opencn.log'& +xterm -T '/var/log/messages' -e 'tail -f /var/log/messages'& +xterm & +xterm -e './halcmd -f two-drives.hal +#&& ./user-gui' & diff --git a/rootfs/board/x86/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd0.xml b/rootfs/board/x86/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd0.xml new file mode 100644 index 0000000..a3f7d34 --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd0.xml @@ -0,0 +1,23 @@ + + + + + + PS + 1 + 0 + 0x6092 + 01 + 00000002 + + + PS + 1 + 0 + 0x6892 + 01 + 00000002 + + + + diff --git a/rootfs/board/x86/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd1.xml b/rootfs/board/x86/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd1.xml new file mode 100644 index 0000000..2c5fd0d --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/cmds/tsd80e_initcmds_tsd1.xml @@ -0,0 +1,19 @@ + + + + PS + 1 + 0 + 0x6092 + 01 + 00000002 + + + PS + 1 + 0 + 0x6892 + 01 + 0040 + + diff --git a/rootfs/board/x86/rootfs_overlay/root/one-drive-feedopt.hal b/rootfs/board/x86/rootfs_overlay/root/one-drive-feedopt.hal new file mode 100644 index 0000000..47589c7 --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/one-drive-feedopt.hal @@ -0,0 +1,15 @@ + +# The threads period is in [us], contrary to the one defined for the +# ethercat master in its xml, where it is in [ns] + +load lcec cfg=one-drive.xml +load feedopt +addf feedopt.update lcec_thread.0 + +setp feedopt.us-active 1 +setp feedopt.rt-active 0 + +setp lcec.0.TSD0.set-mode-csp-0 1 +net X feedopt.sample-0 => lcec.0.TSD0.target-position-0 + +start diff --git a/rootfs/board/x86/rootfs_overlay/root/one-drive-planb.hal b/rootfs/board/x86/rootfs_overlay/root/one-drive-planb.hal new file mode 100644 index 0000000..54a22c2 --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/one-drive-planb.hal @@ -0,0 +1,16 @@ + +# The threads period is in [us], contrary to the one defined for the +# ethercat master in its xml, where it is in [ns] + +load lcec cfg=one-drive.xml -d + +# All the streamer pins are connected in LCCT +load streamer depth=1000 cfg=fff setpoints/SetPoints_slow.txt +setp streamer.0.enable 0 + +load lcct + +addf streamer.0 lcec_thread.0 +addf lcct.update lcec_thread.0 + +start diff --git a/rootfs/board/x86/rootfs_overlay/root/one-drive-sampler.hal b/rootfs/board/x86/rootfs_overlay/root/one-drive-sampler.hal new file mode 100644 index 0000000..a74aecf --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/one-drive-sampler.hal @@ -0,0 +1,19 @@ + +# The threads period is in [us], contrary to the one defined for the +# ethercat master in its xml, where it is in [ns] + +load threads name1=rt10k period1=100 +load streamer depth=200 cfg=fff setpoints/SetPoints_slow.txt +load sampler depth=200 cfg=fff sampler.log + +setp streamer.0.enable 1 +setp sampler.0.enable 1 + +net target_x streamer.0.pin.0 => sampler.0.pin.0 +net target_y streamer.0.pin.1 => sampler.0.pin.1 +net target_z streamer.0.pin.2 => sampler.0.pin.2 + +addf streamer.0 rt10k +addf sampler.0 rt10k + +start diff --git a/rootfs/board/x86/rootfs_overlay/root/one-drive-streamer.hal b/rootfs/board/x86/rootfs_overlay/root/one-drive-streamer.hal new file mode 100644 index 0000000..0c3eb69 --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/one-drive-streamer.hal @@ -0,0 +1,17 @@ + +# The threads period is in [us], contrary to the one defined for the +# ethercat master in its xml, where it is in [ns] + +load lcec cfg=one-drive.xml + +# All the streamer pins are connected in LCCT +load streamer depth=200 cfg=fff setpoints/SetPoints_slow.txt +setp streamer.0.enable 1 + +net target_x streamer.0.pin.0 => lcec.0.TSD0.target-position-0 +addf streamer.0 lcec_thread.0 + +setp lcec.0.TSD0.set-mode-csp-0 1 + + +start diff --git a/rootfs/board/x86/rootfs_overlay/root/one-drive.hal b/rootfs/board/x86/rootfs_overlay/root/one-drive.hal new file mode 100644 index 0000000..dd68f32 --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/one-drive.hal @@ -0,0 +1,45 @@ + +# The threads period is in [us], contrary to the one defined for the +# ethercat master in its xml, where it is in [ns] + +load lcec cfg=one-drive.xml + +load sampler depth=200 cfg=ffffffffffffffffffffs measure.log + +# The commented sampler pins are connected in lcct +#net spin0 sampler.0.pin.0 <= lcec.0.TSD0.target-position-0 +net spin1 sampler.0.pin.1 <= lcec.0.TSD0.position-error-0 +net spin2 sampler.0.pin.2 <= lcec.0.TSD0.extra-var0-0 +net spin3 sampler.0.pin.3 <= lcec.0.TSD0.extra-var1-0 +net spin4 sampler.0.pin.4 <= lcec.0.TSD0.extra-var3-0 + +#net spin5 sampler.0.pin.5 <= lcec.0.TSD0.target-position-1 +net spin6 sampler.0.pin.6 <= lcec.0.TSD0.position-error-1 +net spin7 sampler.0.pin.7 <= lcec.0.TSD0.extra-var0-1 +net spin8 sampler.0.pin.8 <= lcec.0.TSD0.extra-var1-1 +net spin9 sampler.0.pin.9 <= lcec.0.TSD0.extra-var3-1 + +#net spin10 sampler.0.pin.10 <= lcec.0.TSD1.target-position-0 +net spin11 sampler.0.pin.11 <= lcec.0.TSD1.position-error-0 +net spin12 sampler.0.pin.12 <= lcec.0.TSD1.extra-var0-0 +net spin13 sampler.0.pin.13 <= lcec.0.TSD1.extra-var1-0 +net spin14 sampler.0.pin.14 <= lcec.0.TSD1.extra-var3-0 + +#net spin15 sampler.0.pin.15 <= lcec.0.TSD1.target-velocity-1 +#net spin16 sampler.0.pin.16 <= lcec.0.TSD1.current-velocity-1 +net spin17 sampler.0.pin.17 <= lcec.0.TSD1.extra-var0-1 +net spin18 sampler.0.pin.18 <= lcec.0.TSD1.extra-var1-1 +net spin19 sampler.0.pin.19 <= lcec.0.TSD1.extra-var3-1 +setp sampler.0.enable 0 + +# All the streamer pins are connected in LCCT +load streamer depth=200 cfg=fff setpoints/SetPoints_slow.txt +setp streamer.0.enable 0 + +load lcct + +addf sampler.0 lcec_thread.0 +addf streamer.0 lcec_thread.0 +addf lcct.update lcec_thread.0 + +start diff --git a/rootfs/board/x86/rootfs_overlay/root/one-drive.xml b/rootfs/board/x86/rootfs_overlay/root/one-drive.xml new file mode 100644 index 0000000..d7a983b --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/one-drive.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/rootfs/board/x86/rootfs_overlay/root/two-drives-feedopt.hal b/rootfs/board/x86/rootfs_overlay/root/two-drives-feedopt.hal new file mode 100644 index 0000000..7f24033 --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/two-drives-feedopt.hal @@ -0,0 +1,13 @@ + +# The threads period is in [us], contrary to the one defined for the +# ethercat master in its xml, where it is in [ns] + +load lcec cfg=two-drives.xml +load feedopt +addf feedopt.update lcec_thread.0 + +setp feedopt.us-active 0 +setp feedopt.rt-active 0 + + +start diff --git a/rootfs/board/x86/rootfs_overlay/root/two-drives-planb.hal b/rootfs/board/x86/rootfs_overlay/root/two-drives-planb.hal new file mode 100644 index 0000000..361e895 --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/two-drives-planb.hal @@ -0,0 +1,21 @@ + +# The threads period is in [us], contrary to the one defined for the +# ethercat master in its xml, where it is in [ns] + +load lcec cfg=two-drives.xml + +# All the streamer pins are connected in LCCT +load streamer depth=200 cfg=fff setpoints/source.txt +setp streamer.0.enable 0 + +# All the streamer pins are connect in LCCT +load sampler depth=200 cfg=fff sampler.log +setp sampler.0.enable 1 + +load lcct + +addf streamer.0 lcec_thread.0 +addf lcct.update lcec_thread.0 +addf sampler.0 lcec_thread.0 + +start diff --git a/rootfs/board/x86/rootfs_overlay/root/two-drives.hal b/rootfs/board/x86/rootfs_overlay/root/two-drives.hal new file mode 100644 index 0000000..4348e3e --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/two-drives.hal @@ -0,0 +1,67 @@ + + +# The threads period is in [us], contrary to the one defined for the +# ethercat master in its xml, where it is in [ns] + +load lcec cfg=two-drives.xml + +# load streamer depth=200 cfg=fff setpoints/source.txt +# setp streamer.0.enable 0 + +load sampler depth=200 cfg=ffff sampler.log +setp sampler.0.enable 1 + +load lcct +load feedopt + +net feedopt-rt-active feedopt.rt-active => lcct.gcode.feedopt-rt-active +net feedopt-single-shot lcct.gcode.feedopt-single-shot => feedopt.rt-single-shot +net feedopt-ready feedopt.ready => lcct.gcode.feedopt-ready +net feedopt-rt-start lcct.gcode.feedopt-rt-start => feedopt.rt-start +net feedopt-rt-reset lcct.gcode.feedopt-rt-reset => feedopt.opt-rt-reset +net feedopt-rt-pause lcct.gcode.feedopt-rt-pause => feedopt.rt-pause +net feedopt-us-reset lcct.gcode.feedopt-us-reset => feedopt.opt-us-reset +net feedopt-rt-has-segment lcct.gcode.feedopt-rt-has-segment => feedopt.rt-has-segment + +net pos-cmd-{012} feedopt.sample-{012} => lcct.gcode.joint-pos-cmd-{012} +net start-homing-{0123} lcct.home.start-homing-{0123} => lcec.0.TSD{01}.do-homing-{01} +net stop-homing-{0123} lcct.home.stop-homing-{0123} => lcec.0.TSD{01}.do-stop-homing-{01} + +# net joint-pos-streamer-{012} streamer.0.pin.{012} => lcct.stream.joint-pos-streamer-{012} +net spindle-cmd-out lcct.spindle-cmd-out => lcec.0.TSD1.target-velocity-1 +net spindle-cur-in lcec.0.TSD1.current-velocity-1 => lcct.spindle-cur-in + +net joint-pos-cur-in-{0123} lcec.0.TSD{01}.current-position-{01} => lcct.joint-pos-cur-in-{0123} +net target-position-{0123} lcct.target-position-{0123} => lcec.0.TSD{01}.target-position-{01} sampler.0.pin.{0123} + +net in-mode-csp-{0123} lcec.0.TSD{01}.in-mode-csp-{01} => lcct.in-mode-csp-{0123} +net in-mode-csv-{0123} lcec.0.TSD{01}.in-mode-csv-{01} => lcct.in-mode-csv-{0123} +net in-mode-hm-{0123} lcec.0.TSD{01}.in-mode-hm-{01} => lcct.in-mode-hm-{0123} +net in-mode-inactive-{0123} lcec.0.TSD{01}.in-mode-inactive-{01} => lcct.in-mode-inactive-{0123} + +net in-fault-{0123} lcec.0.TSD{01}.in-fault-{01} => lcct.in-fault-{0123} + +net set-mode-csp-{0123} lcec.0.TSD{01}.set-mode-csp-{01} => lcct.set-mode-csp-{0123} +net set-mode-csv-{0123} lcec.0.TSD{01}.set-mode-csv-{01} => lcct.set-mode-csv-{0123} +net set-mode-hm-{0123} lcec.0.TSD{01}.set-mode-hm-{01} => lcct.set-mode-hm-{0123} +net set-mode-inactive-{0123} lcec.0.TSD{01}.set-mode-inactive-{01} => lcct.set-mode-inactive-{0123} + +net fault-reset-{0123} lcct.fault-reset-{0123} => lcec.0.TSD{01}.fault-reset-{01} +net homed-{0123} lcec.0.TSD{01}.homed-{01} => lcct.home.homed-{0123} + +#net streamer-clock-out lcct.stream.streamer-clock => streamer.0.clock +#net streamer-clock-mode-out lcct.stream.streamer-clock-mode => streamer.0.clock-mode +#net streamer-enable lcct.stream.streamer-enable => streamer.0.enable +#net streamer-empty streamer.0.empty => lcct.stream.streamer-empty +#net streamer-reload-out lcct.stream.streamer-reload => streamer.0.reload + +net sampler-enable lcct.sampler-enable-out => sampler.0.enable +net external-trigger lcct.external-trigger => lcec.0.TSD0.extra-rx-var1-1 +net electrovalve lcct.electrovalve => lcec.0.TSD1.extra-rx-var1-0 + +#addf streamer.0 lcec_thread.0 +addf feedopt.update lcec_thread.0 +addf lcct.update lcec_thread.0 +addf sampler.0 lcec_thread.0 + +start diff --git a/rootfs/board/x86/rootfs_overlay/root/two-drives.xml b/rootfs/board/x86/rootfs_overlay/root/two-drives.xml new file mode 100644 index 0000000..b6f5494 --- /dev/null +++ b/rootfs/board/x86/rootfs_overlay/root/two-drives.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/rootfs/configs/opencn_qemu_defconfig b/rootfs/configs/opencn_qemu_defconfig new file mode 100644 index 0000000..5df2ef9 --- /dev/null +++ b/rootfs/configs/opencn_qemu_defconfig @@ -0,0 +1,3035 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2018.02.4-g63fcf46a9-dirty Configuration +# +BR2_HAVE_DOT_CONFIG=y +BR2_HOST_GCC_AT_LEAST_4_5=y +BR2_HOST_GCC_AT_LEAST_4_6=y +BR2_HOST_GCC_AT_LEAST_4_7=y +BR2_HOST_GCC_AT_LEAST_4_8=y +BR2_HOST_GCC_AT_LEAST_4_9=y +BR2_HOST_GCC_AT_LEAST_5=y +BR2_HOST_GCC_AT_LEAST_6=y +BR2_HOST_GCC_AT_LEAST_7=y + +# +# Target options +# +BR2_ARCH_IS_64=y +BR2_ARCH_HAS_MMU_MANDATORY=y +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_aarch64_be is not set +# BR2_bfin is not set +# BR2_csky is not set +# BR2_i386 is not set +# BR2_m68k is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_or1k is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sparc is not set +# BR2_sparc64 is not set +BR2_x86_64=y +# BR2_xtensa is not set +BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT=y +BR2_ARCH="x86_64" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="corei7" +BR2_BINFMT_SUPPORTS_SHARED=y +BR2_READELF_ARCH_NAME="Advanced Micro Devices X86-64" +BR2_BINFMT_ELF=y +BR2_X86_CPU_HAS_MMX=y +BR2_X86_CPU_HAS_SSE=y +BR2_X86_CPU_HAS_SSE2=y +BR2_X86_CPU_HAS_SSE3=y +BR2_X86_CPU_HAS_SSSE3=y +BR2_X86_CPU_HAS_SSE4=y +BR2_X86_CPU_HAS_SSE42=y +# BR2_x86_nocona is not set +# BR2_x86_core2 is not set +BR2_x86_corei7=y +# BR2_x86_corei7_avx is not set +# BR2_x86_core_avx2 is not set +# BR2_x86_atom is not set +# BR2_x86_silvermont is not set +# BR2_x86_opteron is not set +# BR2_x86_opteron_sse3 is not set +# BR2_x86_barcelona is not set +# BR2_x86_jaguar is not set +# BR2_x86_steamroller is not set + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn --non-interactive" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_LZCAT="lzip -d -c" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="https://cdn.kernel.org/pub" +BR2_GNU_MIRROR="http://ftpmirror.gnu.org" +BR2_LUAROCKS_MIRROR="http://rocks.moonscript.org" +BR2_CPAN_MIRROR="http://cpan.metacpan.org" +BR2_JLEVEL=8 +# BR2_CCACHE is not set +# BR2_ENABLE_DEBUG is not set +# BR2_STRIP_strip is not set +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +# BR2_OPTIMIZE_G is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_STATIC_LIBS is not set +BR2_SHARED_LIBS=y +# BR2_SHARED_STATIC_LIBS is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="../rootfs/patches" + +# +# Advanced +# +BR2_COMPILER_PARANOID_UNSAFE_PATH=y +# BR2_REPRODUCIBLE is not set + +# +# Security Hardening Options +# +BR2_SSP_NONE=y +# BR2_SSP_REGULAR is not set +# BR2_SSP_STRONG is not set +# BR2_SSP_ALL is not set +BR2_RELRO_NONE=y +# BR2_RELRO_PARTIAL is not set +# BR2_RELRO_FULL is not set +BR2_FORTIFY_SOURCE_NONE=y +# BR2_FORTIFY_SOURCE_1 is not set +# BR2_FORTIFY_SOURCE_2 is not set + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set + +# +# Toolchain Buildroot Options +# +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_4_1 is not set +# BR2_KERNEL_HEADERS_4_4 is not set +# BR2_KERNEL_HEADERS_4_9 is not set +# BR2_KERNEL_HEADERS_4_10 is not set +# BR2_KERNEL_HEADERS_4_11 is not set +# BR2_KERNEL_HEADERS_4_12 is not set +# BR2_KERNEL_HEADERS_4_13 is not set +BR2_KERNEL_HEADERS_4_14=y +# BR2_KERNEL_HEADERS_4_15 is not set +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="4.14.56" +BR2_PACKAGE_LINUX_HEADERS=y +BR2_PACKAGE_GLIBC=y + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_28_X is not set +BR2_BINUTILS_VERSION_2_29_X=y +# BR2_BINUTILS_VERSION_2_30_X is not set +BR2_BINUTILS_VERSION="2.29.1" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +# BR2_GCC_VERSION_4_9_X is not set +# BR2_GCC_VERSION_5_X is not set +BR2_GCC_VERSION_6_X=y +# BR2_GCC_VERSION_7_X is not set +BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="6.4.0" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_TOOLCHAIN_BUILDROOT_FORTRAN=y +# BR2_GCC_ENABLE_LTO is not set +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS=y + +# +# Host GDB Options +# +# BR2_PACKAGE_HOST_GDB is not set + +# +# Toolchain Generic Options +# +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_FORTRAN=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_TOOLCHAIN_SUPPORTS_PIE=y +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_TOOLCHAIN_HAS_FULL_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="4.14" +BR2_TOOLCHAIN_GCC_AT_LEAST_4_3=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_4=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_5=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_6=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_7=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_8=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_9=y +BR2_TOOLCHAIN_GCC_AT_LEAST_5=y +BR2_TOOLCHAIN_GCC_AT_LEAST_6=y +BR2_TOOLCHAIN_GCC_AT_LEAST="6" +BR2_TOOLCHAIN_HAS_MNAN_OPTION=y +BR2_TOOLCHAIN_HAS_SYNC_1=y +BR2_TOOLCHAIN_HAS_SYNC_2=y +BR2_TOOLCHAIN_HAS_SYNC_4=y +BR2_TOOLCHAIN_HAS_SYNC_8=y +BR2_TOOLCHAIN_HAS_LIBATOMIC=y +BR2_TOOLCHAIN_HAS_ATOMIC=y +BR2_TOOLCHAIN_HAS_LIBQUADMATH=y + +# +# System configuration +# +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +# BR2_ROOTFS_MERGED_USR is not set +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +# BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is not set +BR2_TARGET_ENABLE_ROOT_LOGIN=y +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_SYSTEM_BIN_SH_BUSYBOX=y + +# +# bash, dash, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS +# +# BR2_SYSTEM_BIN_SH_NONE is not set +# BR2_TARGET_GENERIC_GETTY is not set +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_SYSTEM_DHCP="" +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US" +BR2_GENERATE_LOCALE="" +# BR2_SYSTEM_ENABLE_NLS is not set +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="$(BASE_DIR)/board/common/rootfs_overlay/ $(BASE_DIR)/board/qemu/rootfs_overlay/" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_FAKEROOT_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_SELINUX is not set +# BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set +BR2_PACKAGE_SKELETON=y +BR2_PACKAGE_HAS_SKELETON=y +BR2_PACKAGE_PROVIDES_SKELETON="skeleton-init-sysv" +BR2_PACKAGE_SKELETON_INIT_COMMON=y +BR2_PACKAGE_SKELETON_INIT_SYSV=y + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_ATEST is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_DVBLAST is not set +# BR2_PACKAGE_DVDAUTHOR is not set +# BR2_PACKAGE_DVDRW_TOOLS is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS=y +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GMRENDER_RESURRECT is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +BR2_PACKAGE_KODI_ARCH_SUPPORTS=y + +# +# kodi needs python w/ .py modules, a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.8, host gcc >= 4.6 +# +BR2_PACKAGE_KODI_GL_EGL=y +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MIMIC is not set + +# +# miraclecast needs systemd and a glibc toolchain w/ threads and wchar +# +# BR2_PACKAGE_MJPEGTOOLS is not set +# BR2_PACKAGE_MODPLUGTOOLS is not set +# BR2_PACKAGE_MOTION is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPD_MPC is not set +# BR2_PACKAGE_MPG123 is not set +BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS=y +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MPV is not set +# BR2_PACKAGE_MULTICAT is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC=y +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_SQUEEZELITE is not set + +# +# tovid depends on python or python3 +# +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UDPXY is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_V4L2GRAB is not set + +# +# v4l2loopback needs a Linux kernel to be built +# +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set +# BR2_PACKAGE_YMPD is not set + +# +# Compressors and decompressors +# +BR2_PACKAGE_BZIP2=y +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_P7ZIP is not set +# BR2_PACKAGE_PIXZ is not set +# BR2_PACKAGE_UNRAR is not set +# BR2_PACKAGE_XZ is not set +# BR2_PACKAGE_ZIP is not set +# BR2_PACKAGE_ZSTD is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BLKTRACE is not set +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DIEHARDER is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_FWTS is not set +BR2_PACKAGE_GDB_ARCH_SUPPORTS=y +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +BR2_PACKAGE_KVM_UNIT_TESTS_ARCH_SUPPORTS=y +# BR2_PACKAGE_KVM_UNIT_TESTS is not set +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS=y +# BR2_PACKAGE_LTP_TESTSUITE is not set +BR2_PACKAGE_LTRACE_ARCH_SUPPORTS=y +BR2_PACKAGE_LTRACE=y +# BR2_PACKAGE_LTTNG_BABELTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MCELOG is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_NETSNIFF_NG is not set +# BR2_PACKAGE_NMON is not set +BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set +# BR2_PACKAGE_PV is not set + +# +# racehound needs an Linux kernel >= 3.14 to be built +# +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_SPIDEV_TEST is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_STRESS_NG is not set + +# +# sysdig needs a toolchain w/ C++, gcc >= 4.8, dynamic library and a Linux kernel to be built +# +# BR2_PACKAGE_SYSPROF is not set +# BR2_PACKAGE_TCF_AGENT is not set +BR2_PACKAGE_TCF_AGENT_ARCH="x86_64" +BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS=y +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +BR2_PACKAGE_TRINITY_ARCH_SUPPORTS=y +# BR2_PACKAGE_TRINITY is not set +# BR2_PACKAGE_UCLIBC_NG_TEST is not set +BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS=y +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CHECK is not set +BR2_PACKAGE_CMAKE_ARCH_SUPPORTS=y +# BR2_PACKAGE_CMAKE_CTEST is not set +# BR2_PACKAGE_CPPUNIT is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_CXXTEST is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GIT_CRYPT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JO is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set +# BR2_PACKAGE_YASM is not set + +# +# Filesystem and flash utilities +# + +# +# aufs-util needs a linux kernel and a toolchain w/ threads +# +# BR2_PACKAGE_AUTOFS is not set +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CPIO is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_FSCRYPTCTL is not set +# BR2_PACKAGE_FWUP is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NILFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set +# BR2_PACKAGE_SP_OOPS_EXTRACT is not set +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Fonts, cursors, icons, sounds and themes +# + +# +# Cursors +# +# BR2_PACKAGE_COMIX_CURSORS is not set +# BR2_PACKAGE_OBSIDIAN_CURSORS is not set + +# +# Fonts +# +# BR2_PACKAGE_BITSTREAM_VERA is not set +# BR2_PACKAGE_CANTARELL is not set +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_FONT_AWESOME is not set +# BR2_PACKAGE_GHOSTSCRIPT_FONTS is not set +# BR2_PACKAGE_INCONSOLATA is not set +# BR2_PACKAGE_LIBERATION is not set + +# +# Icons +# +# BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS is not set +# BR2_PACKAGE_HICOLOR_ICON_THEME is not set + +# +# Sounds +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Themes +# + +# +# Games +# +# BR2_PACKAGE_CHOCOLATE_DOOM is not set +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_LUGARU is not set +# BR2_PACKAGE_MINETEST is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set +# BR2_PACKAGE_RUBIX is not set +# BR2_PACKAGE_SL is not set +# BR2_PACKAGE_SOLARUS is not set +# BR2_PACKAGE_STELLA is not set +# BR2_PACKAGE_SUPERTUX is not set +# BR2_PACKAGE_SUPERTUXKART is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GHOSTSCRIPT is not set +BR2_PACKAGE_GLMARK2_GL=y +# BR2_PACKAGE_GLMARK2 is not set +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_LIBVA_UTILS is not set +# BR2_PACKAGE_MESA3D_DEMOS is not set +# BR2_PACKAGE_PNGQUANT is not set +# BR2_PACKAGE_RRDTOOL is not set +# BR2_PACKAGE_TESSERACT_OCR is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_FREERDP is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# +BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER=y +BR2_PACKAGE_MESA3D_DRI_DRIVER=y +BR2_PACKAGE_MESA3D_DRIVER=y +BR2_PACKAGE_MESA3D_NEEDS_XA=y + +# +# Gallium drivers +# +# BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV is not set +# BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU is not set +# BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 is not set +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y +# BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL is not set + +# +# DRI drivers +# +BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST=y +# BR2_PACKAGE_MESA3D_DRI_DRIVER_I915 is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_I965 is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON is not set + +# +# Vulkan drivers +# +# BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL is not set + +# +# Off-screen Rendering +# +# BR2_PACKAGE_MESA3D_OSMESA is not set + +# +# Additional API Support +# +BR2_PACKAGE_MESA3D_OPENGL_EGL=y +# BR2_PACKAGE_MESA3D_OPENGL_ES is not set +# BR2_PACKAGE_MESA3D_OPENGL_TEXTURE_FLOAT is not set +BR2_PACKAGE_PROVIDES_LIBGL="mesa3d" +BR2_PACKAGE_PROVIDES_LIBEGL="mesa3d" +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set +# BR2_PACKAGE_SDL2 is not set + +# +# Other GUIs +# +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_GL_AVAILABLE=y +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +# BR2_PACKAGE_QT5 is not set + +# +# tekui needs a Lua interpreter and a toolchain w/ threads, dynamic library +# + +# +# weston needs udev and a toolchain w/ locale, threads, dynamic library, headers >= 3.0 +# +BR2_PACKAGE_XORG7=y + +# +# X11R7 Servers +# +BR2_PACKAGE_XSERVER_XORG_SERVER=y +BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_23=y +BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI=23 +BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_19=y +# BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_17 is not set +# BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_14 is not set +BR2_PACKAGE_XSERVER_XORG_SERVER_VERSION="1.19.6" +BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR=y +# BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE is not set + +# +# Optional Servers +# +# BR2_PACKAGE_XSERVER_XORG_SERVER_XVFB is not set + +# +# X11R7 Libraries +# +BR2_PACKAGE_LIBXCB=y +BR2_PACKAGE_XCB_UTIL=y +# BR2_PACKAGE_XCB_UTIL_CURSOR is not set +BR2_PACKAGE_XCB_UTIL_IMAGE=y +BR2_PACKAGE_XCB_UTIL_KEYSYMS=y +# BR2_PACKAGE_XCB_UTIL_RENDERUTIL is not set +BR2_PACKAGE_XCB_UTIL_WM=y +# BR2_PACKAGE_XLIB_LIBFS is not set +BR2_PACKAGE_XLIB_LIBICE=y +BR2_PACKAGE_XLIB_LIBSM=y +BR2_PACKAGE_XLIB_LIBX11=y +# BR2_PACKAGE_XLIB_LIBXSCRNSAVER is not set +BR2_PACKAGE_XLIB_LIBXAU=y +BR2_PACKAGE_XLIB_LIBXAW=y +# BR2_PACKAGE_XLIB_LIBXCOMPOSITE is not set +BR2_PACKAGE_XLIB_LIBXCURSOR=y +BR2_PACKAGE_XLIB_LIBXDAMAGE=y +BR2_PACKAGE_XLIB_LIBXDMCP=y +BR2_PACKAGE_XLIB_LIBXEXT=y +BR2_PACKAGE_XLIB_LIBXFIXES=y +# BR2_PACKAGE_XLIB_LIBXFONT is not set +BR2_PACKAGE_XLIB_LIBXFONT2=y +BR2_PACKAGE_XLIB_LIBXFT=y +BR2_PACKAGE_XLIB_LIBXI=y +BR2_PACKAGE_XLIB_LIBXINERAMA=y +BR2_PACKAGE_XLIB_LIBXMU=y +BR2_PACKAGE_XLIB_LIBXPM=y +BR2_PACKAGE_XLIB_LIBXRANDR=y +BR2_PACKAGE_XLIB_LIBXRENDER=y +BR2_PACKAGE_XLIB_LIBXRES=y +BR2_PACKAGE_XLIB_LIBXT=y +# BR2_PACKAGE_XLIB_LIBXTST is not set +# BR2_PACKAGE_XLIB_LIBXV is not set +# BR2_PACKAGE_XLIB_LIBXVMC is not set +# BR2_PACKAGE_XLIB_LIBXXF86DGA is not set +BR2_PACKAGE_XLIB_LIBXXF86VM=y +# BR2_PACKAGE_XLIB_LIBDMX is not set +BR2_PACKAGE_XLIB_LIBFONTENC=y +BR2_PACKAGE_XLIB_LIBXKBFILE=y +# BR2_PACKAGE_XLIB_LIBXSHMFENCE is not set +BR2_PACKAGE_XLIB_XTRANS=y + +# +# X11R7 Applications +# +# BR2_PACKAGE_XAPP_APPRES is not set +# BR2_PACKAGE_XAPP_BDFTOPCF is not set +# BR2_PACKAGE_XAPP_BEFORELIGHT is not set +# BR2_PACKAGE_XAPP_BITMAP is not set +# BR2_PACKAGE_XAPP_EDITRES is not set +# BR2_PACKAGE_XAPP_FONTTOSFNT is not set +# BR2_PACKAGE_XAPP_FSLSFONTS is not set +# BR2_PACKAGE_XAPP_FSTOBDF is not set +# BR2_PACKAGE_XAPP_ICEAUTH is not set +# BR2_PACKAGE_XAPP_ICO is not set +# BR2_PACKAGE_XAPP_LISTRES is not set +# BR2_PACKAGE_XAPP_LUIT is not set +# BR2_PACKAGE_XAPP_MKFONTDIR is not set +# BR2_PACKAGE_XAPP_MKFONTSCALE is not set +# BR2_PACKAGE_XAPP_OCLOCK is not set +# BR2_PACKAGE_XAPP_RGB is not set +# BR2_PACKAGE_XAPP_RSTART is not set +# BR2_PACKAGE_XAPP_SCRIPTS is not set +# BR2_PACKAGE_XAPP_SESSREG is not set +# BR2_PACKAGE_XAPP_SETXKBMAP is not set +# BR2_PACKAGE_XAPP_SHOWFONT is not set +# BR2_PACKAGE_XAPP_SMPROXY is not set +# BR2_PACKAGE_XAPP_TWM is not set +# BR2_PACKAGE_XAPP_VIEWRES is not set +# BR2_PACKAGE_XAPP_X11PERF is not set +BR2_PACKAGE_XAPP_XAUTH=y +# BR2_PACKAGE_XAPP_XBACKLIGHT is not set +# BR2_PACKAGE_XAPP_XBIFF is not set +# BR2_PACKAGE_XAPP_XCALC is not set +# BR2_PACKAGE_XAPP_XCLIPBOARD is not set +# BR2_PACKAGE_XAPP_XCLOCK is not set +# BR2_PACKAGE_XAPP_XCMSDB is not set +# BR2_PACKAGE_XAPP_XCOMPMGR is not set +# BR2_PACKAGE_XAPP_XCONSOLE is not set +# BR2_PACKAGE_XAPP_XCURSORGEN is not set +# BR2_PACKAGE_XAPP_XDBEDIZZY is not set +# BR2_PACKAGE_XAPP_XDITVIEW is not set +# BR2_PACKAGE_XAPP_XDM is not set +# BR2_PACKAGE_XAPP_XDPYINFO is not set +# BR2_PACKAGE_XAPP_XDRIINFO is not set +# BR2_PACKAGE_XAPP_XEDIT is not set +# BR2_PACKAGE_XAPP_XEV is not set +# BR2_PACKAGE_XAPP_XEYES is not set +# BR2_PACKAGE_XAPP_XF86DGA is not set +# BR2_PACKAGE_XAPP_XFD is not set +# BR2_PACKAGE_XAPP_XFINDPROXY is not set +# BR2_PACKAGE_XAPP_XFONTSEL is not set +# BR2_PACKAGE_XAPP_XFS is not set +# BR2_PACKAGE_XAPP_XFSINFO is not set +# BR2_PACKAGE_XAPP_XGAMMA is not set +# BR2_PACKAGE_XAPP_XGC is not set +# BR2_PACKAGE_XAPP_XHOST is not set +BR2_PACKAGE_XAPP_XINIT=y +# BR2_PACKAGE_XAPP_XINPUT is not set +# BR2_PACKAGE_XAPP_XINPUT_CALIBRATOR is not set +BR2_PACKAGE_XAPP_XKBCOMP=y +# BR2_PACKAGE_XAPP_XKBEVD is not set +# BR2_PACKAGE_XAPP_XKBPRINT is not set +# BR2_PACKAGE_XAPP_XKBUTILS is not set +# BR2_PACKAGE_XAPP_XKILL is not set +# BR2_PACKAGE_XAPP_XLOAD is not set +# BR2_PACKAGE_XAPP_XLOGO is not set +# BR2_PACKAGE_XAPP_XLSATOMS is not set +# BR2_PACKAGE_XAPP_XLSCLIENTS is not set +# BR2_PACKAGE_XAPP_XLSFONTS is not set +# BR2_PACKAGE_XAPP_XMAG is not set +# BR2_PACKAGE_XAPP_XMAN is not set +# BR2_PACKAGE_XAPP_XMESSAGE is not set +# BR2_PACKAGE_XAPP_XMH is not set +# BR2_PACKAGE_XAPP_XMODMAP is not set +# BR2_PACKAGE_XAPP_XMORE is not set +# BR2_PACKAGE_XAPP_XPR is not set +# BR2_PACKAGE_XAPP_XPROP is not set +BR2_PACKAGE_XAPP_XRANDR=y +# BR2_PACKAGE_XAPP_XRDB is not set +# BR2_PACKAGE_XAPP_XREFRESH is not set +# BR2_PACKAGE_XAPP_XSET is not set +# BR2_PACKAGE_XAPP_XSETMODE is not set +# BR2_PACKAGE_XAPP_XSETPOINTER is not set +# BR2_PACKAGE_XAPP_XSETROOT is not set +# BR2_PACKAGE_XAPP_XSM is not set +# BR2_PACKAGE_XAPP_XSTDCMAP is not set +# BR2_PACKAGE_XAPP_XVIDTUNE is not set +# BR2_PACKAGE_XAPP_XVINFO is not set +# BR2_PACKAGE_XAPP_XWD is not set +# BR2_PACKAGE_XAPP_XWININFO is not set +# BR2_PACKAGE_XAPP_XWUD is not set + +# +# X11R7 Drivers +# + +# +# xf86-input-evdev requires udev to be enabled +# +# BR2_PACKAGE_XDRIVER_XF86_INPUT_JOYSTICK is not set +BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y + +# +# xf86-input-libinput needs udev /dev management and a toolchain w/ locale +# +BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y +# BR2_PACKAGE_XDRIVER_XF86_INPUT_SYNAPTICS is not set +# BR2_PACKAGE_XDRIVER_XF86_INPUT_TSLIB is not set +# BR2_PACKAGE_XDRIVER_XF86_INPUT_VMMOUSE is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_AMDGPU is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_ARK is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_AST is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_ATI is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_CIRRUS is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_DUMMY is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_GLINT is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_I128 is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_INTEL is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_MACH64 is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_MGA is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_NEOMAGIC is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_NOUVEAU is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_NV is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_OPENCHROME is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_QXL is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_R128 is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_SAVAGE is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_SILICONMOTION is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_SIS is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_TDFX is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_TGA is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_TRIDENT is not set +BR2_PACKAGE_XDRIVER_XF86_VIDEO_VESA=y +BR2_PACKAGE_XDRIVER_XF86_VIDEO_VMWARE=y +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_VOODOO is not set + +# +# X11R7 Fonts +# +BR2_PACKAGE_XFONT_FONT_UTIL=y +BR2_PACKAGE_XFONT_ENCODINGS=y +# BR2_PACKAGE_XFONT_FONT_ADOBE_100DPI is not set +# BR2_PACKAGE_XFONT_FONT_ADOBE_75DPI is not set +# BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_100DPI is not set +# BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_75DPI is not set +# BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_TYPE1 is not set +BR2_PACKAGE_XFONT_FONT_ALIAS=y +# BR2_PACKAGE_XFONT_FONT_ARABIC_MISC is not set +# BR2_PACKAGE_XFONT_FONT_BH_100DPI is not set +# BR2_PACKAGE_XFONT_FONT_BH_75DPI is not set +# BR2_PACKAGE_XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI is not set +# BR2_PACKAGE_XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI is not set +# BR2_PACKAGE_XFONT_FONT_BH_TTF is not set +# BR2_PACKAGE_XFONT_FONT_BH_TYPE1 is not set +# BR2_PACKAGE_XFONT_FONT_BITSTREAM_100DPI is not set +# BR2_PACKAGE_XFONT_FONT_BITSTREAM_75DPI is not set +# BR2_PACKAGE_XFONT_FONT_BITSTREAM_TYPE1 is not set +# BR2_PACKAGE_XFONT_FONT_CRONYX_CYRILLIC is not set +BR2_PACKAGE_XFONT_FONT_CURSOR_MISC=y +# BR2_PACKAGE_XFONT_FONT_DAEWOO_MISC is not set +# BR2_PACKAGE_XFONT_FONT_DEC_MISC is not set +# BR2_PACKAGE_XFONT_FONT_IBM_TYPE1 is not set +# BR2_PACKAGE_XFONT_FONT_ISAS_MISC is not set +# BR2_PACKAGE_XFONT_FONT_JIS_MISC is not set +# BR2_PACKAGE_XFONT_FONT_MICRO_MISC is not set +# BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC is not set +# BR2_PACKAGE_XFONT_FONT_MISC_ETHIOPIC is not set +# BR2_PACKAGE_XFONT_FONT_MISC_MELTHO is not set +BR2_PACKAGE_XFONT_FONT_MISC_MISC=y +# BR2_PACKAGE_XFONT_FONT_MUTT_MISC is not set +# BR2_PACKAGE_XFONT_FONT_SCHUMACHER_MISC is not set +# BR2_PACKAGE_XFONT_FONT_SCREEN_CYRILLIC is not set +# BR2_PACKAGE_XFONT_FONT_SONY_MISC is not set +# BR2_PACKAGE_XFONT_FONT_SUN_MISC is not set +# BR2_PACKAGE_XFONT_FONT_WINITZKI_CYRILLIC is not set +# BR2_PACKAGE_XFONT_FONT_XFREE86_TYPE1 is not set + +# +# X11R7 X protocols +# +BR2_PACKAGE_XCB_PROTO=y +# BR2_PACKAGE_XPROTO_APPLEWMPROTO is not set +BR2_PACKAGE_XPROTO_BIGREQSPROTO=y +BR2_PACKAGE_XPROTO_COMPOSITEPROTO=y +BR2_PACKAGE_XPROTO_DAMAGEPROTO=y +# BR2_PACKAGE_XPROTO_DMXPROTO is not set +BR2_PACKAGE_XPROTO_DRI2PROTO=y +# BR2_PACKAGE_XPROTO_DRI3PROTO is not set +BR2_PACKAGE_XPROTO_FIXESPROTO=y +# BR2_PACKAGE_XPROTO_FONTCACHEPROTO is not set +BR2_PACKAGE_XPROTO_FONTSPROTO=y +BR2_PACKAGE_XPROTO_GLPROTO=y +BR2_PACKAGE_XPROTO_INPUTPROTO=y +BR2_PACKAGE_XPROTO_KBPROTO=y +BR2_PACKAGE_XPROTO_PRESENTPROTO=y +BR2_PACKAGE_XPROTO_RANDRPROTO=y +# BR2_PACKAGE_XPROTO_RECORDPROTO is not set +BR2_PACKAGE_XPROTO_RENDERPROTO=y +BR2_PACKAGE_XPROTO_RESOURCEPROTO=y +# BR2_PACKAGE_XPROTO_SCRNSAVERPROTO is not set +BR2_PACKAGE_XPROTO_VIDEOPROTO=y +# BR2_PACKAGE_XPROTO_WINDOWSWMPROTO is not set +BR2_PACKAGE_XPROTO_XCMISCPROTO=y +BR2_PACKAGE_XPROTO_XEXTPROTO=y +BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO=y +BR2_PACKAGE_XPROTO_XF86DGAPROTO=y +BR2_PACKAGE_XPROTO_XF86DRIPROTO=y +BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO=y +BR2_PACKAGE_XPROTO_XINERAMAPROTO=y +BR2_PACKAGE_XPROTO_XPROTO=y +# BR2_PACKAGE_XPROTO_XPROXYMANAGEMENTPROTOCOL is not set + +# +# X11R7 Utilities +# +# BR2_PACKAGE_XUTIL_MAKEDEPEND is not set +BR2_PACKAGE_MCOOKIE=y + +# +# X11R7 Other data +# +BR2_PACKAGE_XDATA_XBITMAPS=y +# BR2_PACKAGE_XDATA_XCURSOR_THEMES is not set +# BR2_PACKAGE_XCURSOR_TRANSPARENT_THEME is not set + +# +# X applications +# +# BR2_PACKAGE_ALSAMIXERGUI is not set +# BR2_PACKAGE_APITRACE is not set +# BR2_PACKAGE_DILLO is not set +# BR2_PACKAGE_DOCKER is not set +# BR2_PACKAGE_FEH is not set + +# +# midori needs libgtk3 and a glibc toolchain w/ C++, gcc >= 5, host gcc >= 4.8 +# +# BR2_PACKAGE_NODM is not set +# BR2_PACKAGE_PCMANFM is not set +# BR2_PACKAGE_RDESKTOP is not set +# BR2_PACKAGE_SYNERGY is not set +# BR2_PACKAGE_WMCTRL is not set +# BR2_PACKAGE_X11VNC is not set +# BR2_PACKAGE_XDOTOOL is not set +# BR2_PACKAGE_XSCREENSAVER is not set +BR2_PACKAGE_XTERM=y +# BR2_PACKAGE_XVKBD is not set + +# +# yad needs libgtk2 or libgtk3 w/ X11 backend +# + +# +# X libraries and helper libraries +# +BR2_PACKAGE_XKEYBOARD_CONFIG=y + +# +# X window managers +# +# BR2_PACKAGE_FLUXBOX is not set +# BR2_PACKAGE_MATCHBOX is not set +BR2_PACKAGE_OPENBOX=y +# BR2_PACKAGE_RATPOISON is not set + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_ARMBIAN_FIRMWARE is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_WILC1000_FIRMWARE is not set +# BR2_PACKAGE_WILINK_BT_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_ACPICA is not set +# BR2_PACKAGE_ACPID is not set +# BR2_PACKAGE_ACPITOOL is not set +# BR2_PACKAGE_AER_INJECT is not set +# BR2_PACKAGE_AMD_CATALYST is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management +# +# BR2_PACKAGE_BRLTTY is not set +# BR2_PACKAGE_CC_TOOL is not set +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set + +# +# dahdi-linux needs a Linux kernel to be built +# + +# +# dahdi-tools needs a toolchain w/ threads +# + +# +# dahdi-tools needs a Linux kernel to be built +# +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DFU_UTIL is not set +# BR2_PACKAGE_DMIDECODE is not set +# BR2_PACKAGE_DMRAID is not set + +# +# dt-utils needs udev /dev management +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_DUMP1090 is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_EDID_DECODE is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FLASHROM is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_HWLOC is not set +# BR2_PACKAGE_I7Z is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INTEL_MICROCODE is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IPMIUTIL is not set + +# +# iqvlinux needs a Linux kernel to be built +# +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_IUCODE_TOOL is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LIBUIO is not set +# BR2_PACKAGE_LINUXCONSOLETOOLS is not set + +# +# linux-backports needs a Linux kernel to be built +# +# BR2_PACKAGE_LIRC_TOOLS is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSSCSI is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LUKSMETA is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEMTEST86 is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MEMTOOL is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_MSR_TOOLS is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_NVIDIA_DRIVER is not set +# BR2_PACKAGE_NVME is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENIPMI is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_OPENPOWERLINK is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PDBG is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_POWERTOP is not set +# BR2_PACKAGE_PPS_TOOLS is not set +# BR2_PACKAGE_READ_EDID is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RS485CONF is not set + +# +# rtl8188eu needs a Linux kernel to be built +# + +# +# rtl8723bs needs a Linux kernel to be built +# + +# +# rtl8723bu needs a Linux kernel to be built +# + +# +# rtl8821au needs a Linux kernel to be built +# + +# +# rtl8189fs needs a Linux kernel to be built +# +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SIGROK_CLI is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SPI_TOOLS is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_STM32FLASH is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on Python +# + +# +# ti-sgx-um needs the ti-sgx-km driver +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_TRIGGERHAPPY is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set +# BR2_PACKAGE_UBUS is not set + +# +# uccp420wlan needs a Linux kernel >= 4.2 to be built +# + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_UHUBCTL is not set + +# +# upower needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# + +# +# usbutils needs udev /dev management and toolchain w/ threads +# +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set +# BR2_PACKAGE_XORRISO is not set + +# +# xr819-xradio driver needs a Linux kernel to be built +# + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_4TH is not set +# BR2_PACKAGE_ENSCRIPT is not set +BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS=y +BR2_PACKAGE_ERLANG_ARCH_SUPPORTS=y +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_EXECLINE is not set +# BR2_PACKAGE_FICL is not set +BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS=y +# BR2_PACKAGE_GAUCHE is not set +# BR2_PACKAGE_GUILE is not set +# BR2_PACKAGE_HASERL is not set +BR2_PACKAGE_JAMVM_ARCH_SUPPORTS=y +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS=y +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_MICROPYTHON is not set +# BR2_PACKAGE_MOARVM is not set +BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS=y +BR2_PACKAGE_MONO_ARCH_SUPPORTS=y +# BR2_PACKAGE_MONO is not set +BR2_PACKAGE_NODEJS_ARCH_SUPPORTS=y +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUBIO is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_BCG729 is not set +# BR2_PACKAGE_CELT051 is not set +BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS=y +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBASPLIB is not set +# BR2_PACKAGE_LIBBROADVOICE is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDDB is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCODEC2 is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBEBUR128 is not set +# BR2_PACKAGE_LIBG7221 is not set +# BR2_PACKAGE_LIBGSM is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBILBC is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSIDPLAY2 is not set +# BR2_PACKAGE_LIBSILK is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOUNDTOUCH is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_MP4V2 is not set +BR2_PACKAGE_OPENAL_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPENAL is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_OPUSFILE is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SBC is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TINYALSA is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS=y +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LIBSQUISH is not set +# BR2_PACKAGE_LIBZIP is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_MINIZIP is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_SZIP is not set +BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS=y +BR2_PACKAGE_ZLIB=y +BR2_PACKAGE_LIBZLIB=y +# BR2_PACKAGE_ZLIB_NG is not set +BR2_PACKAGE_HAS_ZLIB=y +BR2_PACKAGE_PROVIDES_ZLIB="libzlib" +BR2_PACKAGE_PROVIDES_HOST_ZLIB="host-libzlib" + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +BR2_PACKAGE_BOTAN_ARCH_SUPPORTS=y +# BR2_PACKAGE_BOTAN is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GCR is not set +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBGPG_ERROR is not set +BR2_PACKAGE_LIBGPG_ERROR_SYSCFG="x86_64-pc-linux-gnu" +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKCAPI is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSCRYPT is not set +# BR2_PACKAGE_LIBSECRET is not set +BR2_PACKAGE_LIBSHA1=y +# BR2_PACKAGE_LIBSODIUM is not set +# BR2_PACKAGE_LIBSSH is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_LIBTOMCRYPT is not set +# BR2_PACKAGE_LIBUECC is not set +# BR2_PACKAGE_MBEDTLS is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +BR2_PACKAGE_PROVIDES_HOST_OPENSSL="host-libopenssl" +# BR2_PACKAGE_RHASH is not set +# BR2_PACKAGE_TINYDTLS is not set +# BR2_PACKAGE_TROUSERS is not set +# BR2_PACKAGE_USTREAM_SSL is not set +# BR2_PACKAGE_WOLFSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_HIREDIS is not set +# BR2_PACKAGE_KOMPEXSQLITE is not set +# BR2_PACKAGE_LEVELDB is not set +BR2_PACKAGE_MONGODB_ARCH_SUPPORTS=y +# BR2_PACKAGE_MONGODB is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set +# BR2_PACKAGE_UNIXODBC is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set +# BR2_PACKAGE_PHYSFS is not set + +# +# Graphics +# +# BR2_PACKAGE_ASSIMP is not set +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_ATKMM is not set +# BR2_PACKAGE_BULLET is not set +BR2_PACKAGE_CAIRO=y +# BR2_PACKAGE_CAIRO_PS is not set +# BR2_PACKAGE_CAIRO_PDF is not set +# BR2_PACKAGE_CAIRO_PNG is not set +# BR2_PACKAGE_CAIRO_SCRIPT is not set +# BR2_PACKAGE_CAIRO_SVG is not set +# BR2_PACKAGE_CAIRO_TEE is not set +# BR2_PACKAGE_CAIRO_XML is not set +# BR2_PACKAGE_CAIROMM is not set +# BR2_PACKAGE_EXIV2 is not set +# BR2_PACKAGE_FLTK is not set +BR2_PACKAGE_FONTCONFIG=y +BR2_PACKAGE_FREETYPE=y +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_GIBLIB is not set +# BR2_PACKAGE_GIFLIB is not set + +# +# granite needs libgtk3 and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_GRAPHITE2 is not set + +# +# gtkmm3 needs libgtk3 and a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# +BR2_PACKAGE_HARFBUZZ=y +# BR2_PACKAGE_IJS is not set +# BR2_PACKAGE_IMLIB2 is not set +# BR2_PACKAGE_IRRLICHT is not set +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JPEG is not set +BR2_PACKAGE_JPEG_SIMD_SUPPORT=y +# BR2_PACKAGE_KMSXX is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LENSFUN is not set +# BR2_PACKAGE_LEPTONICA is not set +# BR2_PACKAGE_LESSTIF is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRI2 is not set +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_HAS_ATOMIC=y +# BR2_PACKAGE_LIBDRM_INTEL is not set +# BR2_PACKAGE_LIBDRM_RADEON is not set +# BR2_PACKAGE_LIBDRM_AMDGPU is not set +# BR2_PACKAGE_LIBDRM_NOUVEAU is not set +BR2_PACKAGE_LIBDRM_VMWGFX=y +# BR2_PACKAGE_LIBDRM_ETNAVIV is not set +# BR2_PACKAGE_LIBDRM_INSTALL_TESTS is not set +# BR2_PACKAGE_LIBEPOXY is not set +# BR2_PACKAGE_LIBEXIF is not set +# BR2_PACKAGE_LIBFM is not set +# BR2_PACKAGE_LIBFM_EXTRA is not set +# BR2_PACKAGE_LIBFREEGLUT is not set +# BR2_PACKAGE_LIBFREEIMAGE is not set +# BR2_PACKAGE_LIBGDIPLUS is not set +# BR2_PACKAGE_LIBGEOTIFF is not set +# BR2_PACKAGE_LIBGLEW is not set +# BR2_PACKAGE_LIBGLFW is not set +BR2_PACKAGE_LIBGLU=y +# BR2_PACKAGE_LIBGTA is not set +# BR2_PACKAGE_LIBGTK2 is not set +# BR2_PACKAGE_LIBGTK3 is not set +# BR2_PACKAGE_LIBMEDIAART is not set +# BR2_PACKAGE_LIBMNG is not set +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSOIL is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_LIBVA_INTEL_DRIVER is not set +# BR2_PACKAGE_LIBVDPAU is not set +# BR2_PACKAGE_LIBVIPS is not set +# BR2_PACKAGE_MENU_CACHE is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_OPENCV3 is not set +BR2_PACKAGE_HAS_LIBGL=y +BR2_PACKAGE_HAS_LIBEGL=y +BR2_PACKAGE_HAS_LIBEGL_WAYLAND=y +# BR2_PACKAGE_OPENJPEG is not set +BR2_PACKAGE_PANGO=y +# BR2_PACKAGE_PANGOMM is not set +BR2_PACKAGE_PIXMAN=y +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS=y + +# +# webkitgtk needs libgtk3 and a glibc toolchain w/ C++, gcc >= 5, host gcc >= 4.8 +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZBAR is not set +# BR2_PACKAGE_ZXING_CPP is not set + +# +# Hardware handling +# +# BR2_PACKAGE_ACSCCID is not set +# BR2_PACKAGE_C_PERIPHERY is not set +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_GNU_EFI is not set + +# +# hidapi needs udev /dev management and a toolchain w/ NPTL threads +# +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LET_ME_CREATE is not set +BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBFTDI1 is not set +# BR2_PACKAGE_LIBGPHOTO2 is not set +# BR2_PACKAGE_LIBGPIOD is not set + +# +# libgudev needs udev /dev handling and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBHID is not set +# BR2_PACKAGE_LIBIIO is not set + +# +# libinput needs udev /dev management and a toolchain w/ locale +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set +# BR2_PACKAGE_LIBMBIM is not set +# BR2_PACKAGE_LIBNFC is not set +BR2_PACKAGE_LIBPCIACCESS=y +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libpri needs a kernel to be built +# +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSERIALPORT is not set +# BR2_PACKAGE_LIBSIGROK is not set +# BR2_PACKAGE_LIBSIGROKDECODE is not set +# BR2_PACKAGE_LIBSOC is not set + +# +# libss7 needs a kernel to be built +# +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBUSBGX is not set +# BR2_PACKAGE_LIBV4L is not set +BR2_PACKAGE_LIBXKBCOMMON=y +# BR2_PACKAGE_MRAA is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_OWFS is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set +# BR2_PACKAGE_WIRINGPI is not set + +# +# Javascript +# +# BR2_PACKAGE_ANGULARJS is not set +# BR2_PACKAGE_BOOTSTRAP is not set +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_BENEJSON is not set +# BR2_PACKAGE_CJSON is not set +BR2_PACKAGE_EXPAT=y +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JOSE is not set +# BR2_PACKAGE_JSMN is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_FOR_MODERN_CPP is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_JSONCPP is not set +# BR2_PACKAGE_LIBBSON is not set +# BR2_PACKAGE_LIBFASTJSON is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBUCL is not set +BR2_PACKAGE_LIBXML2=y +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_PUGIXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_RAPIDXML is not set +# BR2_PACKAGE_RAPTOR is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_TINYXML2 is not set +# BR2_PACKAGE_VALIJSON is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set +# BR2_PACKAGE_YAML_CPP is not set + +# +# Logging +# +# BR2_PACKAGE_EVENTLOG is not set +# BR2_PACKAGE_GLOG is not set +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CPP is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_OPENTRACING_CPP is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_BITSTREAM is not set +# BR2_PACKAGE_KVAZAAR is not set +# BR2_PACKAGE_LIBAACS is not set +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBDPLUS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDCADEC is not set +# BR2_PACKAGE_LIBDVBCSA is not set +# BR2_PACKAGE_LIBDVBPSI is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDCSS is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBHDHOMERUN is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBOPENH264 is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_LIBYUV is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set +# BR2_PACKAGE_X264 is not set +# BR2_PACKAGE_X265 is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_ALLJOYN is not set +# BR2_PACKAGE_ALLJOYN_BASE is not set +# BR2_PACKAGE_ALLJOYN_TCL is not set +# BR2_PACKAGE_ALLJOYN_TCL_BASE is not set +# BR2_PACKAGE_AZMQ is not set +# BR2_PACKAGE_AZURE_IOT_SDK_C is not set + +# +# batman-adv needs a Linux kernel to be built +# +# BR2_PACKAGE_C_ARES is not set +BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS=y +# BR2_PACKAGE_CANFESTIVAL is not set +# BR2_PACKAGE_CGIC is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CURLPP is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_DAQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_FREERADIUS_CLIENT is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_GSSDP is not set +# BR2_PACKAGE_GUPNP is not set +# BR2_PACKAGE_GUPNP_AV is not set +# BR2_PACKAGE_GUPNP_DLNA is not set +# BR2_PACKAGE_IBRCOMMON is not set +# BR2_PACKAGE_IBRDTN is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCOAP is not set +# BR2_PACKAGE_LIBCPPRESTSDK is not set +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBHTTPPARSER is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBLDNS is not set +# BR2_PACKAGE_LIBMAXMINDDB is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMINIUPNPC is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNATPMP is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNET is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNICE is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBPJSIP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSHOUT is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSRTP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBUPNP18 is not set +# BR2_PACKAGE_LIBUPNPP is not set +# BR2_PACKAGE_LIBURIPARSER is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCK is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_LKSCTP_TOOLS is not set +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_NANOMSG is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_NORM is not set +# BR2_PACKAGE_NSS_PAM_LDAPD is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENLDAP is not set +# BR2_PACKAGE_OPENMPI is not set +# BR2_PACKAGE_OPENPGM is not set + +# +# openzwave needs udev and a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_PAHO_MQTT_C is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_QPID_PROTON is not set +# BR2_PACKAGE_RABBITMQ_C is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_SOFIA_SIP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_ATF is not set +# BR2_PACKAGE_BCTOOLBOX is not set +# BR2_PACKAGE_BDWGC is not set +# BR2_PACKAGE_BOOST is not set +BR2_PACKAGE_CAPNPROTO=y +# BR2_PACKAGE_CLAPACK is not set +BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS=y +# BR2_PACKAGE_CLASSPATH is not set +BR2_PACKAGE_CLP=y +BR2_PACKAGE_COINUTILS=y +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_CRACKLIB is not set +# BR2_PACKAGE_DAWGDIC is not set +# BR2_PACKAGE_DING_LIBS is not set +# BR2_PACKAGE_EIGEN is not set +BR2_PACKAGE_ELFUTILS=y +# BR2_PACKAGE_ELFUTILS_PROGS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_FLATBUFFERS is not set +# BR2_PACKAGE_GCONF is not set +# BR2_PACKAGE_GFLAGS is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GLM is not set +BR2_PACKAGE_GLPK=y +# BR2_PACKAGE_GMP is not set +BR2_PACKAGE_GSL=y +# BR2_PACKAGE_GTEST is not set +BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS=y +# BR2_PACKAGE_JEMALLOC is not set +BR2_PACKAGE_LAPACK=y +BR2_PACKAGE_LAPACK_COMPLEX=y +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBB64 is not set +BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBBSD is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBCROCO is not set +# BR2_PACKAGE_LIBCROSSGUID is not set +# BR2_PACKAGE_LIBCSV is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +BR2_PACKAGE_LIBFFI=y +# BR2_PACKAGE_LIBGEE is not set +BR2_PACKAGE_LIBGLIB2=y +# BR2_PACKAGE_LIBGLOB is not set +# BR2_PACKAGE_LIBICAL is not set +# BR2_PACKAGE_LIBITE is not set +# BR2_PACKAGE_LIBLINEAR is not set +# BR2_PACKAGE_LIBLOKI is not set +# BR2_PACKAGE_LIBNPTH is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +BR2_PACKAGE_LIBPTHREAD_STUBS=y +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBPWQUALITY is not set +BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSECCOMP is not set +# BR2_PACKAGE_LIBSIGC is not set +BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBSPATIALINDEX is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTOMMATH is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBUNWIND is not set +BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LIGHTNING is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LIQUID_DSP is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MPIR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET="NEHALEM" +BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS=y +BR2_PACKAGE_OPENBLAS=y +BR2_PACKAGE_OPENBLAS_TARGET="NEHALEM" +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS=y +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_QLIBC is not set +# BR2_PACKAGE_RIEMANN_C_CLIENT is not set +# BR2_PACKAGE_SHAPELIB is not set +# BR2_PACKAGE_SKALIBS is not set +# BR2_PACKAGE_SPHINXBASE is not set +# BR2_PACKAGE_STARTUP_NOTIFICATION is not set +# BR2_PACKAGE_TINYCBOR is not set + +# +# Security +# +# BR2_PACKAGE_LIBSELINUX is not set +# BR2_PACKAGE_LIBSEMANAGE is not set +# BR2_PACKAGE_LIBSEPOL is not set +# BR2_PACKAGE_SAFECLIB is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_AUGEAS is not set +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_FMT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBCLI is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBUNISTRING is not set +# BR2_PACKAGE_LINENOISE is not set +BR2_PACKAGE_NCURSES=y +BR2_PACKAGE_NCURSES_WCHAR=y +BR2_PACKAGE_NCURSES_TARGET_PROGS=y +# BR2_PACKAGE_NEWT is not set +BR2_PACKAGE_PCRE=y +# BR2_PACKAGE_PCRE_16 is not set +# BR2_PACKAGE_PCRE_32 is not set +BR2_PACKAGE_PCRE_UTF=y +BR2_PACKAGE_PCRE_UCP=y +BR2_PACKAGE_PCRE2=y +BR2_PACKAGE_PCRE2_16=y +# BR2_PACKAGE_PCRE2_32 is not set +# BR2_PACKAGE_POPT is not set +BR2_PACKAGE_READLINE=y +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set +# BR2_PACKAGE_USTR is not set + +# +# Mail +# +# BR2_PACKAGE_DOVECOT is not set +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_CLAMAV is not set +# BR2_PACKAGE_COLLECTD is not set + +# +# domoticz needs lua >= 5.2 and a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GNURADIO is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set + +# +# gqrx needs qt5, gnuradio, fftw's single precision +# +# BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_LINUX_SYSCALL_SUPPORT is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_PROJ is not set +BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET=y +# BR2_PACKAGE_QEMU is not set +# BR2_PACKAGE_QPDF is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_TASKD is not set +BR2_PACKAGE_XUTIL_UTIL_MACROS=y + +# +# Networking applications +# +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_AOETOOLS is not set +# BR2_PACKAGE_APACHE is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARP_SCAN is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ASTERISK is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BABELD is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BATCTL is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BOINC is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_C_ICAP is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CANNELLONI is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set + +# +# connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library +# +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DANTE is not set +# BR2_PACKAGE_DARKHTTPD is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DRBD_UTILS is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set + +# +# ejabberd needs erlang, toolchain w/ C++ +# +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FASTD is not set +# BR2_PACKAGE_FCGIWRAP is not set +# BR2_PACKAGE_FLANNEL is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_FREESWITCH is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_GLORYTUN is not set + +# +# gupnp-tools needs libgtk3 +# +# BR2_PACKAGE_HANS is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IBRDTN_TOOLS is not set +# BR2_PACKAGE_IBRDTND is not set +# BR2_PACKAGE_IFTOP is not set +BR2_PACKAGE_IFUPDOWN_SCRIPTS=y +# BR2_PACKAGE_IGD2_FOR_LINUX is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IODINE is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPERF3 is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IRSSI is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_JANUS_GATEWAY is not set +# BR2_PACKAGE_KEEPALIVED is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LEAFNODE2 is not set +# BR2_PACKAGE_LFT is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LINUXPTP is not set +# BR2_PACKAGE_LLDPD is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_LYNX is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set +# BR2_PACKAGE_MINISSDPD is not set +# BR2_PACKAGE_MJPG_STREAMER is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ wchar, threads +# +BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS=y +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MONKEY is not set +# BR2_PACKAGE_MOSH is not set +# BR2_PACKAGE_MOSQUITTO is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.2, dynamic library +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGINX is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NLOAD is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCP6C is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPEN_LLDP is not set +# BR2_PACKAGE_OPEN_PLC_UTILS is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PHYTOOL is not set +# BR2_PACKAGE_PIMD is not set +# BR2_PACKAGE_POUND is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PRIVOXY is not set +# BR2_PACKAGE_PROFTPD is not set + +# +# prosody needs the lua interpreter +# +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_PURE_FTPD is not set +# BR2_PACKAGE_PUTTY is not set +# BR2_PACKAGE_QUAGGA is not set + +# +# rabbitmq-server needs erlang +# +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RP_PPPOE is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_RYGEL is not set +# BR2_PACKAGE_S6_DNS is not set +# BR2_PACKAGE_S6_NETWORKING is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SHAIRPORT_SYNC is not set +# BR2_PACKAGE_SHELLINABOX is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SNGREP is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SOFTETHER is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_SSLH is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINC is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TOR is not set +# BR2_PACKAGE_TRACEROUTE is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TUNCTL is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_UHTTPD is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VDR is not set +# BR2_PACKAGE_VNSTAT is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WAVEMON is not set +# BR2_PACKAGE_WIREGUARD is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WPAN_TOOLS is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set + +# +# xtables-addons needs a Linux kernel to be built +# +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# + +# +# ------------------------------------------------------- +# + +# +# Please note: +# + +# +# - Buildroot does *not* generate binary packages, +# + +# +# - Buildroot does *not* install any package database. +# + +# +# * +# + +# +# It is up to you to provide those by yourself if you +# + +# +# want to use any of those package managers. +# + +# +# * +# + +# +# See the manual: +# + +# +# http://buildroot.org/manual.html#faq-no-binary-packages +# + +# +# ------------------------------------------------------- +# +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS=y +# BR2_PACKAGE_XENOMAI is not set + +# +# Security +# +# BR2_PACKAGE_CHECKPOLICY is not set +# BR2_PACKAGE_PAXTEST is not set +# BR2_PACKAGE_POLICYCOREUTILS is not set +# BR2_PACKAGE_REFPOLICY is not set +# BR2_PACKAGE_RESTORECOND is not set +# BR2_PACKAGE_SELINUX_PYTHON is not set +# BR2_PACKAGE_SEMODULE_UTILS is not set +# BR2_PACKAGE_SETOOLS is not set + +# +# Shell and utilities +# + +# +# Shells +# +# BR2_PACKAGE_MKSH is not set + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +BR2_PACKAGE_AUTO_GETTY_SUPPORT=y +BR2_PACKAGE_AUTO_GETTY=y +BR2_PACKAGE_AUTO_GETTY_ROOT_LOGIN=y +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_EASY_RSA is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PDMENU is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_RANGER is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set +# BR2_PACKAGE_XXHASH is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ANDROID_TOOLS is not set +# BR2_PACKAGE_ATOP is not set +# BR2_PACKAGE_ATTR is not set +BR2_PACKAGE_AUDIT_ARCH_SUPPORTS=y +# BR2_PACKAGE_AUDIT is not set +# BR2_PACKAGE_CGROUPFS_MOUNT is not set + +# +# circus needs Python and a toolchain w/ C++, threads +# +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_DAEMON is not set +# BR2_PACKAGE_DC3DD is not set +# BR2_PACKAGE_DDRESCUE is not set +# BR2_PACKAGE_DOCKER_CONTAINERD is not set +# BR2_PACKAGE_DOCKER_ENGINE is not set +# BR2_PACKAGE_DOCKER_PROXY is not set +# BR2_PACKAGE_EFIBOOTMGR is not set +BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS=y +# BR2_PACKAGE_EFIVAR is not set + +# +# emlog needs a Linux kernel to be built +# +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_GETENT is not set +# BR2_PACKAGE_HTOP is not set +BR2_PACKAGE_INITSCRIPTS=y + +# +# iotop depends on python or python3 +# +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_IRQBALANCE is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_KVMTOOL is not set +# BR2_PACKAGE_LIBOSTREE is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_OPENVMTOOLS is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PROCRANK_LINUX is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_RAUC is not set +# BR2_PACKAGE_RUNC is not set +# BR2_PACKAGE_S6 is not set +# BR2_PACKAGE_S6_LINUX_INIT is not set +# BR2_PACKAGE_S6_LINUX_UTILS is not set +# BR2_PACKAGE_S6_PORTABLE_UTILS is not set +# BR2_PACKAGE_S6_RC is not set +# BR2_PACKAGE_SCRUB is not set +# BR2_PACKAGE_SCRYPT is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +# BR2_PACKAGE_SWUPDATE is not set +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_TPM_TOOLS is not set +# BR2_PACKAGE_UNSCD is not set +BR2_PACKAGE_UTIL_LINUX=y +BR2_PACKAGE_UTIL_LINUX_LIBBLKID=y +# BR2_PACKAGE_UTIL_LINUX_LIBFDISK is not set +BR2_PACKAGE_UTIL_LINUX_LIBMOUNT=y +# BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS is not set +BR2_PACKAGE_UTIL_LINUX_LIBUUID=y +# BR2_PACKAGE_UTIL_LINUX_BINARIES is not set +# BR2_PACKAGE_UTIL_LINUX_AGETTY is not set +# BR2_PACKAGE_UTIL_LINUX_BFS is not set +# BR2_PACKAGE_UTIL_LINUX_CAL is not set +# BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH is not set +# BR2_PACKAGE_UTIL_LINUX_CHMEM is not set +# BR2_PACKAGE_UTIL_LINUX_CRAMFS is not set +# BR2_PACKAGE_UTIL_LINUX_EJECT is not set +# BR2_PACKAGE_UTIL_LINUX_FALLOCATE is not set +# BR2_PACKAGE_UTIL_LINUX_FDFORMAT is not set +# BR2_PACKAGE_UTIL_LINUX_FSCK is not set +# BR2_PACKAGE_UTIL_LINUX_HWCLOCK is not set +# BR2_PACKAGE_UTIL_LINUX_IPCRM is not set +# BR2_PACKAGE_UTIL_LINUX_IPCS is not set +# BR2_PACKAGE_UTIL_LINUX_KILL is not set +# BR2_PACKAGE_UTIL_LINUX_LAST is not set +# BR2_PACKAGE_UTIL_LINUX_LINE is not set +# BR2_PACKAGE_UTIL_LINUX_LOGGER is not set +# BR2_PACKAGE_UTIL_LINUX_LOGIN is not set +# BR2_PACKAGE_UTIL_LINUX_LOSETUP is not set +# BR2_PACKAGE_UTIL_LINUX_LSLOGINS is not set +# BR2_PACKAGE_UTIL_LINUX_LSMEM is not set +# BR2_PACKAGE_UTIL_LINUX_MESG is not set +# BR2_PACKAGE_UTIL_LINUX_MINIX is not set +# BR2_PACKAGE_UTIL_LINUX_MORE is not set +# BR2_PACKAGE_UTIL_LINUX_MOUNT is not set +# BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT is not set +# BR2_PACKAGE_UTIL_LINUX_NEWGRP is not set +# BR2_PACKAGE_UTIL_LINUX_NOLOGIN is not set +# BR2_PACKAGE_UTIL_LINUX_NSENTER is not set +# BR2_PACKAGE_UTIL_LINUX_PG is not set +# BR2_PACKAGE_UTIL_LINUX_PARTX is not set +# BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT is not set +# BR2_PACKAGE_UTIL_LINUX_RAW is not set +# BR2_PACKAGE_UTIL_LINUX_RENAME is not set +# BR2_PACKAGE_UTIL_LINUX_RFKILL is not set +# BR2_PACKAGE_UTIL_LINUX_RUNUSER is not set +# BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS is not set +# BR2_PACKAGE_UTIL_LINUX_SETPRIV is not set +# BR2_PACKAGE_UTIL_LINUX_SETTERM is not set +# BR2_PACKAGE_UTIL_LINUX_SU is not set +# BR2_PACKAGE_UTIL_LINUX_SULOGIN is not set +# BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT is not set +# BR2_PACKAGE_UTIL_LINUX_TUNELP is not set +# BR2_PACKAGE_UTIL_LINUX_UL is not set +# BR2_PACKAGE_UTIL_LINUX_UNSHARE is not set +# BR2_PACKAGE_UTIL_LINUX_UTMPDUMP is not set +# BR2_PACKAGE_UTIL_LINUX_UUIDD is not set +# BR2_PACKAGE_UTIL_LINUX_VIPW is not set +# BR2_PACKAGE_UTIL_LINUX_WALL is not set +# BR2_PACKAGE_UTIL_LINUX_WDCTL is not set +# BR2_PACKAGE_UTIL_LINUX_WRITE is not set +# BR2_PACKAGE_UTIL_LINUX_ZRAMCTL is not set +BR2_PACKAGE_XVISOR_ARCH_SUPPORTS=y +# BR2_PACKAGE_XVISOR is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_MC is not set +BR2_PACKAGE_NANO=y +BR2_PACKAGE_NANO_TINY=y +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_AXFS is not set +# BR2_TARGET_ROOTFS_CLOOP is not set +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_NONE=y +# BR2_TARGET_ROOTFS_CPIO_GZIP is not set +# BR2_TARGET_ROOTFS_CPIO_BZIP2 is not set +# BR2_TARGET_ROOTFS_CPIO_LZ4 is not set +# BR2_TARGET_ROOTFS_CPIO_LZMA is not set +# BR2_TARGET_ROOTFS_CPIO_LZO is not set +# BR2_TARGET_ROOTFS_CPIO_XZ is not set +# BR2_TARGET_ROOTFS_CPIO_UIMAGE is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# + +# +# iso image needs a Linux kernel and either grub2 i386-pc or isolinux to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBI is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +BR2_TARGET_GRUB2_ARCH_SUPPORTS=y +# BR2_TARGET_GRUB2 is not set +# BR2_TARGET_GUMMIBOOT is not set +# BR2_TARGET_SYSLINUX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_AESPIPE is not set +# BR2_PACKAGE_HOST_ANDROID_TOOLS is not set +# BR2_PACKAGE_HOST_CHECKPOLICY is not set +BR2_PACKAGE_HOST_CMAKE=y +# BR2_PACKAGE_HOST_CRAMFS is not set +# BR2_PACKAGE_HOST_CRYPTSETUP is not set +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_DTC is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_FAKETIME is not set +# BR2_PACKAGE_HOST_FWUP is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_GNUPG is not set +BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS=y +BR2_PACKAGE_HOST_GO_BOOTSTRAP_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_GPTFDISK is not set +# BR2_PACKAGE_HOST_JQ is not set +# BR2_PACKAGE_HOST_JSMIN is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_LTTNG_BABELTRACE is not set +# BR2_PACKAGE_HOST_MKPASSWD is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_OPKG_UTILS is not set +# BR2_PACKAGE_HOST_PARTED is not set +BR2_PACKAGE_HOST_PATCHELF=y +BR2_PACKAGE_HOST_PKGCONF=y +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_PYTHON_LXML is not set +# BR2_PACKAGE_HOST_PYTHON_SIX is not set +# BR2_PACKAGE_HOST_QEMU is not set +# BR2_PACKAGE_HOST_RAUC is not set +BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_RUSTC_ARCH="x86_64" +# BR2_PACKAGE_HOST_RUSTC is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set +# BR2_PACKAGE_HOST_VBOOT_UTILS is not set +# BR2_PACKAGE_HOST_XORRISO is not set +# BR2_PACKAGE_HOST_ZIP is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2018.02 +# +# BR2_PACKAGE_TRANSMISSION_REMOTE is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_BINUTILS_VERSION_2_27_X is not set +# BR2_PACKAGE_EEPROG is not set +# BR2_PACKAGE_GNUPG2_GPGV2 is not set +# BR2_PACKAGE_IMX_GPU_VIV_APITRACE is not set +# BR2_PACKAGE_IMX_GPU_VIV_G2D is not set + +# +# Legacy options removed in 2017.11 +# +# BR2_PACKAGE_RFKILL is not set +# BR2_PACKAGE_UTIL_LINUX_RESET is not set +# BR2_PACKAGE_POLICYCOREUTILS_AUDIT2ALLOW is not set +# BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND is not set +# BR2_PACKAGE_SEPOLGEN is not set +# BR2_PACKAGE_OPENOBEX_BLUEZ is not set +# BR2_PACKAGE_OPENOBEX_LIBUSB is not set +# BR2_PACKAGE_OPENOBEX_APPS is not set +# BR2_PACKAGE_OPENOBEX_SYSLOG is not set +# BR2_PACKAGE_OPENOBEX_DUMP is not set +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS is not set + +# +# Legacy options removed in 2017.08 +# +# BR2_TARGET_GRUB is not set +# BR2_PACKAGE_SIMICSFS is not set +# BR2_BINUTILS_VERSION_2_26_X is not set +BR2_XTENSA_OVERLAY_DIR="" +BR2_XTENSA_CUSTOM_NAME="" +# BR2_PACKAGE_HOST_MKE2IMG is not set +BR2_TARGET_ROOTFS_EXT2_BLOCKS=0 +BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES=0 +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DATAURISRC is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOMEASURE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MAD is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC is not set +# BR2_STRIP_none is not set +# BR2_PACKAGE_BEECRYPT_CPP is not set +# BR2_PACKAGE_SPICE_CLIENT is not set +# BR2_PACKAGE_SPICE_GUI is not set +# BR2_PACKAGE_SPICE_TUNNEL is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH is not set +# BR2_PACKAGE_INPUT_TOOLS_JSCAL is not set +# BR2_PACKAGE_INPUT_TOOLS_JSTEST is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 is not set +# BR2_GCC_VERSION_4_8_X is not set + +# +# Legacy options removed in 2017.05 +# +# BR2_PACKAGE_SUNXI_MALI_R2P4 is not set +# BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT is not set +# BR2_PACKAGE_NODEJS_MODULES_EXPRESS is not set +# BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL is not set +# BR2_PACKAGE_OPENOCD_FT2XXX is not set +# BR2_PACKAGE_KODI_RTMPDUMP is not set +# BR2_PACKAGE_KODI_VISUALISATION_FOUNTAIN is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_BINUTILS_VERSION_2_25_X is not set +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS=0 +# BR2_PACKAGE_SYSTEMD_KDBUS is not set +# BR2_PACKAGE_POLARSSL is not set +# BR2_NBD_CLIENT is not set +# BR2_NBD_SERVER is not set +# BR2_PACKAGE_GMOCK is not set +# BR2_KERNEL_HEADERS_4_8 is not set +# BR2_KERNEL_HEADERS_3_18 is not set +# BR2_GLIBC_VERSION_2_22 is not set + +# +# Legacy options removed in 2017.02 +# +# BR2_PACKAGE_PERL_DB_FILE is not set +# BR2_KERNEL_HEADERS_4_7 is not set +# BR2_KERNEL_HEADERS_4_6 is not set +# BR2_KERNEL_HEADERS_4_5 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +# BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +# BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A is not set +# BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_GDB_VERSION_7_9 is not set + +# +# Legacy options removed in 2016.11 +# +# BR2_PACKAGE_PHP_SAPI_CLI_CGI is not set +# BR2_PACKAGE_PHP_SAPI_CLI_FPM is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_WEBKITGTK24 is not set +# BR2_PACKAGE_TORSMO is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_KERNEL_HEADERS_4_3 is not set +# BR2_KERNEL_HEADERS_4_2 is not set +# BR2_PACKAGE_KODI_ADDON_XVDR is not set +# BR2_PACKAGE_IPKG is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_BINUTILS_VERSION_2_24_X is not set +# BR2_PACKAGE_WESTON_RPI is not set +# BR2_GCC_VERSION_4_8_ARC is not set +# BR2_KERNEL_HEADERS_4_0 is not set +# BR2_KERNEL_HEADERS_3_19 is not set +# BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS is not set +# BR2_PACKAGE_ELEMENTARY is not set +# BR2_LINUX_KERNEL_CUSTOM_LOCAL is not set + +# +# Legacy options removed in 2016.08 +# +# BR2_PACKAGE_EFL_JP2K is not set +# BR2_PACKAGE_SYSTEMD_COMPAT is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIVEADDER is not set +# BR2_PACKAGE_LIBFSLVPUWRAP is not set +# BR2_PACKAGE_LIBFSLPARSER is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT is not set +# BR2_PTHREADS_OLD is not set +# BR2_BINUTILS_VERSION_2_23_X is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_GDB_VERSION_7_8 is not set + +# +# Legacy options removed in 2016.05 +# +# BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL is not set +# BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPG123 is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC_E500V2 is not set +# BR2_x86_i386 is not set +# BR2_PACKAGE_QT5QUICK1 is not set +BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR="" +# BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID is not set +# BR2_KERNEL_HEADERS_3_17 is not set +# BR2_GDB_VERSION_7_7 is not set +# BR2_PACKAGE_FOOMATIC_FILTERS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_KODI_WAVPACK is not set +# BR2_PACKAGE_KODI_RSXS is not set +# BR2_PACKAGE_KODI_GOOM is not set +# BR2_PACKAGE_SYSTEMD_ALL_EXTRAS is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_PACKAGE_SQLITE_READLINE is not set + +# +# Legacy options removed in 2016.02 +# +# BR2_PACKAGE_DOVECOT_BZIP2 is not set +# BR2_PACKAGE_DOVECOT_ZLIB is not set +# BR2_PACKAGE_E2FSPROGS_FINDFS is not set +# BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL is not set +# BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE is not set +# BR2_PACKAGE_OPENPOWERLINK_LIBPCAP is not set +# BR2_LINUX_KERNEL_SAME_AS_HEADERS is not set +# BR2_PACKAGE_CUPS_PDFTOPS is not set +# BR2_KERNEL_HEADERS_3_16 is not set +# BR2_PACKAGE_PYTHON_PYXML is not set +# BR2_ENABLE_SSP is not set +# BR2_PACKAGE_DIRECTFB_CLE266 is not set +# BR2_PACKAGE_DIRECTFB_UNICHROME is not set +# BR2_PACKAGE_LIBELEMENTARY is not set +# BR2_PACKAGE_LIBEINA is not set +# BR2_PACKAGE_LIBEET is not set +# BR2_PACKAGE_LIBEVAS is not set +# BR2_PACKAGE_LIBECORE is not set +# BR2_PACKAGE_LIBEDBUS is not set +# BR2_PACKAGE_LIBEFREET is not set +# BR2_PACKAGE_LIBEIO is not set +# BR2_PACKAGE_LIBEMBRYO is not set +# BR2_PACKAGE_LIBEDJE is not set +# BR2_PACKAGE_LIBETHUMB is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_BR2_PACKAGE_NODEJS_0_10_X is not set +# BR2_BR2_PACKAGE_NODEJS_0_12_X is not set +# BR2_BR2_PACKAGE_NODEJS_4_X is not set + +# +# Legacy options removed in 2015.11 +# +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REAL is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_SCHIFRA is not set +# BR2_PACKAGE_ZXING is not set +# BR2_PACKAGE_BLACKBOX is not set +# BR2_KERNEL_HEADERS_3_0 is not set +# BR2_KERNEL_HEADERS_3_11 is not set +# BR2_KERNEL_HEADERS_3_13 is not set +# BR2_KERNEL_HEADERS_3_15 is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_BLTLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_CPULOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DATABUFFER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DIOLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DOK is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DRIVERTEST is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FIRE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FLIP is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FONTS is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_INPUT is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_JOYSTICK is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_KNUCKLES is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_LAYER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX_WATER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_NEO is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_NETLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PALETTE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PARTICLE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PORTER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_STRESS is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_TEXTURE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO_PARTICLE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_WINDOW is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_SAWMAN is not set +# BR2_PACKAGE_DIVINE is not set + +# +# Legacy options removed in 2015.08 +# +# BR2_PACKAGE_KODI_PVR_ADDONS is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +# BR2_BINUTILS_VERSION_2_24 is not set +# BR2_BINUTILS_VERSION_2_25 is not set +# BR2_PACKAGE_PERF is not set +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_PACKAGE_GPU_VIV_BIN_MX6Q is not set +# BR2_TARGET_UBOOT_NETWORK is not set + +# +# Legacy options removed in 2015.05 +# +# BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K is not set +# BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K is not set +# BR2_PACKAGE_MONO_20 is not set +# BR2_PACKAGE_MONO_40 is not set +# BR2_PACKAGE_MONO_45 is not set +# BR2_CIVETWEB_WITH_LUA is not set +# BR2_PACKAGE_TIFF_TIFF2PDF is not set +# BR2_PACKAGE_TIFF_TIFFCP is not set +# BR2_LINUX_KERNEL_EXT_RTAI_PATCH is not set +# BR2_TARGET_GENERIC_PASSWD_DES is not set +# BR2_PACKAGE_GTK2_THEME_HICOLOR is not set +# BR2_PACKAGE_VALGRIND_PTRCHECK is not set + +# +# Legacy options removed in 2015.02 +# +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_WDCTL is not set +# BR2_PACKAGE_UTIL_LINUX_ARCH is not set +# BR2_PACKAGE_UTIL_LINUX_DDATE is not set +# BR2_PACKAGE_RPM_BZIP2_PAYLOADS is not set +# BR2_PACKAGE_RPM_XZ_PAYLOADS is not set +# BR2_PACKAGE_M4 is not set +# BR2_PACKAGE_FLEX_BINARY is not set +# BR2_PACKAGE_BISON is not set +# BR2_PACKAGE_GOB2 is not set +# BR2_PACKAGE_DISTCC is not set +# BR2_PACKAGE_HASERL_VERSION_0_8_X is not set +# BR2_PACKAGE_STRONGSWAN_TOOLS is not set +# BR2_PACKAGE_XBMC_ADDON_XVDR is not set +# BR2_PACKAGE_XBMC_PVR_ADDONS is not set +# BR2_PACKAGE_XBMC is not set +# BR2_PACKAGE_XBMC_ALSA_LIB is not set +# BR2_PACKAGE_XBMC_AVAHI is not set +# BR2_PACKAGE_XBMC_DBUS is not set +# BR2_PACKAGE_XBMC_LIBBLURAY is not set +# BR2_PACKAGE_XBMC_GOOM is not set +# BR2_PACKAGE_XBMC_RSXS is not set +# BR2_PACKAGE_XBMC_LIBCEC is not set +# BR2_PACKAGE_XBMC_LIBMICROHTTPD is not set +# BR2_PACKAGE_XBMC_LIBNFS is not set +# BR2_PACKAGE_XBMC_RTMPDUMP is not set +# BR2_PACKAGE_XBMC_LIBSHAIRPLAY is not set +# BR2_PACKAGE_XBMC_LIBSMBCLIENT is not set +# BR2_PACKAGE_XBMC_LIBTHEORA is not set +# BR2_PACKAGE_XBMC_LIBUSB is not set +# BR2_PACKAGE_XBMC_LIBVA is not set +# BR2_PACKAGE_XBMC_WAVPACK is not set +# BR2_PREFER_STATIC_LIB is not set + +# +# Legacy options removed in 2014.11 +# +# BR2_x86_generic is not set +# BR2_GCC_VERSION_4_4_X is not set +# BR2_sparc_sparchfleon is not set +# BR2_sparc_sparchfleonv8 is not set +# BR2_sparc_sparcsfleon is not set +# BR2_sparc_sparcsfleonv8 is not set +# BR2_PACKAGE_XLIB_LIBPCIACCESS is not set +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set +# BR2_PACKAGE_XLIB_LIBPTHREAD_STUBS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set diff --git a/rootfs/configs/opencn_x86_defconfig b/rootfs/configs/opencn_x86_defconfig new file mode 100644 index 0000000..9f126a8 --- /dev/null +++ b/rootfs/configs/opencn_x86_defconfig @@ -0,0 +1,3139 @@ +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2018.02.4-g77c98464f-dirty Configuration +# +BR2_HAVE_DOT_CONFIG=y +BR2_HOST_GCC_AT_LEAST_4_5=y +BR2_HOST_GCC_AT_LEAST_4_6=y +BR2_HOST_GCC_AT_LEAST_4_7=y +BR2_HOST_GCC_AT_LEAST_4_8=y +BR2_HOST_GCC_AT_LEAST_4_9=y +BR2_HOST_GCC_AT_LEAST_5=y +BR2_HOST_GCC_AT_LEAST_6=y +BR2_HOST_GCC_AT_LEAST_7=y + +# +# Target options +# +BR2_ARCH_IS_64=y +BR2_ARCH_HAS_MMU_MANDATORY=y +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_aarch64_be is not set +# BR2_bfin is not set +# BR2_csky is not set +# BR2_i386 is not set +# BR2_m68k is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_or1k is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +# BR2_sh is not set +# BR2_sparc is not set +# BR2_sparc64 is not set +BR2_x86_64=y +# BR2_xtensa is not set +BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT=y +BR2_ARCH="x86_64" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ARCH="corei7" +BR2_BINFMT_SUPPORTS_SHARED=y +BR2_READELF_ARCH_NAME="Advanced Micro Devices X86-64" +BR2_BINFMT_ELF=y +BR2_X86_CPU_HAS_MMX=y +BR2_X86_CPU_HAS_SSE=y +BR2_X86_CPU_HAS_SSE2=y +BR2_X86_CPU_HAS_SSE3=y +BR2_X86_CPU_HAS_SSSE3=y +BR2_X86_CPU_HAS_SSE4=y +BR2_X86_CPU_HAS_SSE42=y +# BR2_x86_nocona is not set +# BR2_x86_core2 is not set +BR2_x86_corei7=y +# BR2_x86_corei7_avx is not set +# BR2_x86_core_avx2 is not set +# BR2_x86_atom is not set +# BR2_x86_silvermont is not set +# BR2_x86_opteron is not set +# BR2_x86_opteron_sse3 is not set +# BR2_x86_barcelona is not set +# BR2_x86_jaguar is not set +# BR2_x86_steamroller is not set + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn --non-interactive" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SSH="ssh" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_LZCAT="lzip -d -c" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="http://sources.buildroot.net" +BR2_KERNEL_MIRROR="https://cdn.kernel.org/pub" +BR2_GNU_MIRROR="http://ftpmirror.gnu.org" +BR2_LUAROCKS_MIRROR="http://rocks.moonscript.org" +BR2_CPAN_MIRROR="http://cpan.metacpan.org" +BR2_JLEVEL=8 +# BR2_CCACHE is not set +# BR2_ENABLE_DEBUG is not set +BR2_STRIP_strip=y +BR2_STRIP_EXCLUDE_FILES="" +BR2_STRIP_EXCLUDE_DIRS="" +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +# BR2_OPTIMIZE_G is not set +BR2_OPTIMIZE_S=y +# BR2_GOOGLE_BREAKPAD_ENABLE is not set +# BR2_STATIC_LIBS is not set +BR2_SHARED_LIBS=y +# BR2_SHARED_STATIC_LIBS is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="../rootfs/patches" + +# +# Advanced +# +BR2_COMPILER_PARANOID_UNSAFE_PATH=y +# BR2_REPRODUCIBLE is not set + +# +# Security Hardening Options +# +BR2_SSP_NONE=y +# BR2_SSP_REGULAR is not set +# BR2_SSP_STRONG is not set +# BR2_SSP_ALL is not set +BR2_RELRO_NONE=y +# BR2_RELRO_PARTIAL is not set +# BR2_RELRO_FULL is not set +BR2_FORTIFY_SOURCE_NONE=y +# BR2_FORTIFY_SOURCE_1 is not set +# BR2_FORTIFY_SOURCE_2 is not set + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set + +# +# Toolchain Buildroot Options +# +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" + +# +# Kernel Header Options +# +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_4_1 is not set +# BR2_KERNEL_HEADERS_4_4 is not set +# BR2_KERNEL_HEADERS_4_9 is not set +# BR2_KERNEL_HEADERS_4_10 is not set +# BR2_KERNEL_HEADERS_4_11 is not set +# BR2_KERNEL_HEADERS_4_12 is not set +# BR2_KERNEL_HEADERS_4_13 is not set +BR2_KERNEL_HEADERS_4_14=y +# BR2_KERNEL_HEADERS_4_15 is not set +# BR2_KERNEL_HEADERS_VERSION is not set +BR2_DEFAULT_KERNEL_HEADERS="4.14.56" +BR2_PACKAGE_LINUX_HEADERS=y +BR2_PACKAGE_GLIBC=y + +# +# Binutils Options +# +# BR2_BINUTILS_VERSION_2_28_X is not set +BR2_BINUTILS_VERSION_2_29_X=y +# BR2_BINUTILS_VERSION_2_30_X is not set +BR2_BINUTILS_VERSION="2.29.1" +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +# BR2_GCC_VERSION_4_9_X is not set +# BR2_GCC_VERSION_5_X is not set +BR2_GCC_VERSION_6_X=y +# BR2_GCC_VERSION_7_X is not set +BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS=y +BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE=y +BR2_GCC_VERSION="6.4.0" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_TOOLCHAIN_BUILDROOT_FORTRAN=y +# BR2_GCC_ENABLE_LTO is not set +BR2_GCC_ENABLE_OPENMP=y +# BR2_GCC_ENABLE_GRAPHITE is not set +BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS=y + +# +# Host GDB Options +# +# BR2_PACKAGE_HOST_GDB is not set + +# +# Toolchain Generic Options +# +BR2_TOOLCHAIN_HAS_NATIVE_RPC=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_INSTALL_LIBSTDCPP=y +BR2_TOOLCHAIN_HAS_FORTRAN=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_TOOLCHAIN_SUPPORTS_PIE=y +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_TOOLCHAIN_HAS_FULL_GETTEXT=y +BR2_USE_MMU=y +BR2_TARGET_OPTIMIZATION="" +BR2_TARGET_LDFLAGS="" +# BR2_ECLIPSE_REGISTER is not set +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="4.14" +BR2_TOOLCHAIN_GCC_AT_LEAST_4_3=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_4=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_5=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_6=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_7=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_8=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_9=y +BR2_TOOLCHAIN_GCC_AT_LEAST_5=y +BR2_TOOLCHAIN_GCC_AT_LEAST_6=y +BR2_TOOLCHAIN_GCC_AT_LEAST="6" +BR2_TOOLCHAIN_HAS_MNAN_OPTION=y +BR2_TOOLCHAIN_HAS_SYNC_1=y +BR2_TOOLCHAIN_HAS_SYNC_2=y +BR2_TOOLCHAIN_HAS_SYNC_4=y +BR2_TOOLCHAIN_HAS_SYNC_8=y +BR2_TOOLCHAIN_HAS_LIBATOMIC=y +BR2_TOOLCHAIN_HAS_ATOMIC=y +BR2_TOOLCHAIN_HAS_LIBQUADMATH=y + +# +# System configuration +# +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +# BR2_ROOTFS_MERGED_USR is not set +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +BR2_TARGET_GENERIC_PASSWD_MD5=y +# BR2_TARGET_GENERIC_PASSWD_SHA256 is not set +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="md5" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +# BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is not set +BR2_TARGET_ENABLE_ROOT_LOGIN=y +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_SYSTEM_BIN_SH_BUSYBOX=y + +# +# bash, dash, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS +# +# BR2_SYSTEM_BIN_SH_NONE is not set +# BR2_TARGET_GENERIC_GETTY is not set +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_SYSTEM_DHCP="" +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US" +BR2_GENERATE_LOCALE="" +# BR2_SYSTEM_ENABLE_NLS is not set +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="$(BASE_DIR)/board/common/rootfs_overlay/ $(BASE_DIR)/board/x86/rootfs_overlay/" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_FAKEROOT_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +# BR2_LINUX_KERNEL is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_SELINUX is not set +# BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set +BR2_PACKAGE_SKELETON=y +BR2_PACKAGE_HAS_SKELETON=y +BR2_PACKAGE_PROVIDES_SKELETON="skeleton-init-sysv" +BR2_PACKAGE_SKELETON_INIT_COMMON=y +BR2_PACKAGE_SKELETON_INIT_SYSV=y + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_ATEST is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_DVBLAST is not set +# BR2_PACKAGE_DVDAUTHOR is not set +# BR2_PACKAGE_DVDRW_TOOLS is not set +# BR2_PACKAGE_ESPEAK is not set +# BR2_PACKAGE_FAAD2 is not set +BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS=y +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_GMRENDER_RESURRECT is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK2 is not set +BR2_PACKAGE_KODI_ARCH_SUPPORTS=y + +# +# kodi needs python w/ .py modules, a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.8, host gcc >= 4.6 +# +BR2_PACKAGE_KODI_GL_EGL=y +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MIMIC is not set + +# +# miraclecast needs systemd and a glibc toolchain w/ threads and wchar +# +# BR2_PACKAGE_MJPEGTOOLS is not set +# BR2_PACKAGE_MODPLUGTOOLS is not set +# BR2_PACKAGE_MOTION is not set +# BR2_PACKAGE_MPD is not set +# BR2_PACKAGE_MPD_MPC is not set +# BR2_PACKAGE_MPG123 is not set +BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS=y +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MPV is not set +# BR2_PACKAGE_MULTICAT is not set +# BR2_PACKAGE_MUSEPACK is not set +# BR2_PACKAGE_NCMPC is not set +# BR2_PACKAGE_OPUS_TOOLS is not set +BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC=y +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_SQUEEZELITE is not set + +# +# tovid depends on python or python3 +# +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UDPXY is not set +# BR2_PACKAGE_UPMPDCLI is not set +# BR2_PACKAGE_V4L2GRAB is not set + +# +# v4l2loopback needs a Linux kernel to be built +# +# BR2_PACKAGE_VLC is not set +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set +# BR2_PACKAGE_YMPD is not set + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BZIP2 is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZIP is not set +# BR2_PACKAGE_LZOP is not set +# BR2_PACKAGE_P7ZIP is not set +# BR2_PACKAGE_PIXZ is not set +# BR2_PACKAGE_UNRAR is not set +# BR2_PACKAGE_XZ is not set +# BR2_PACKAGE_ZIP is not set +# BR2_PACKAGE_ZSTD is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BLKTRACE is not set +# BR2_PACKAGE_BONNIE is not set +# BR2_PACKAGE_CACHE_CALIBRATOR is not set +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DIEHARDER is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DT is not set +# BR2_PACKAGE_DUMA is not set +# BR2_PACKAGE_FIO is not set +# BR2_PACKAGE_FWTS is not set +BR2_PACKAGE_GDB_ARCH_SUPPORTS=y +# BR2_PACKAGE_GDB is not set +BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_GOOGLE_BREAKPAD is not set +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KEXEC is not set + +# +# ktap needs a Linux kernel to be built +# +BR2_PACKAGE_KVM_UNIT_TESTS_ARCH_SUPPORTS=y +# BR2_PACKAGE_KVM_UNIT_TESTS is not set +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LMBENCH is not set +BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS=y +# BR2_PACKAGE_LTP_TESTSUITE is not set +BR2_PACKAGE_LTRACE_ARCH_SUPPORTS=y +# BR2_PACKAGE_LTRACE is not set +# BR2_PACKAGE_LTTNG_BABELTRACE is not set + +# +# lttng-modules needs a Linux kernel to be built +# +# BR2_PACKAGE_LTTNG_TOOLS is not set +# BR2_PACKAGE_MCELOG is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set +# BR2_PACKAGE_NETSNIFF_NG is not set +# BR2_PACKAGE_NMON is not set +BR2_PACKAGE_OPROFILE_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPROFILE is not set +# BR2_PACKAGE_PAX_UTILS is not set +# BR2_PACKAGE_PV is not set + +# +# racehound needs an Linux kernel >= 3.14 to be built +# +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set +# BR2_PACKAGE_SPIDEV_TEST is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_STRESS_NG is not set + +# +# sysdig needs a toolchain w/ C++, gcc >= 4.8, dynamic library and a Linux kernel to be built +# +# BR2_PACKAGE_SYSPROF is not set +# BR2_PACKAGE_TCF_AGENT is not set +BR2_PACKAGE_TCF_AGENT_ARCH="x86_64" +BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS=y +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +BR2_PACKAGE_TRINITY_ARCH_SUPPORTS=y +# BR2_PACKAGE_TRINITY is not set +# BR2_PACKAGE_UCLIBC_NG_TEST is not set +BR2_PACKAGE_VALGRIND_ARCH_SUPPORTS=y +# BR2_PACKAGE_VALGRIND is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CHECK is not set +BR2_PACKAGE_CMAKE_ARCH_SUPPORTS=y +# BR2_PACKAGE_CMAKE_CTEST is not set +# BR2_PACKAGE_CPPUNIT is not set +# BR2_PACKAGE_CVS is not set +# BR2_PACKAGE_CXXTEST is not set +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +# BR2_PACKAGE_GIT is not set +# BR2_PACKAGE_GIT_CRYPT is not set +# BR2_PACKAGE_GPERF is not set +# BR2_PACKAGE_JO is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set +# BR2_PACKAGE_YASM is not set + +# +# Filesystem and flash utilities +# + +# +# aufs-util needs a linux kernel and a toolchain w/ threads +# +# BR2_PACKAGE_AUTOFS is not set +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CPIO is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_FSCRYPTCTL is not set +# BR2_PACKAGE_FWUP is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NILFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set +# BR2_PACKAGE_SP_OOPS_EXTRACT is not set +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UNIONFS is not set +# BR2_PACKAGE_XFSPROGS is not set + +# +# Fonts, cursors, icons, sounds and themes +# + +# +# Cursors +# +# BR2_PACKAGE_COMIX_CURSORS is not set +# BR2_PACKAGE_OBSIDIAN_CURSORS is not set + +# +# Fonts +# +# BR2_PACKAGE_BITSTREAM_VERA is not set +# BR2_PACKAGE_CANTARELL is not set +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_FONT_AWESOME is not set +# BR2_PACKAGE_GHOSTSCRIPT_FONTS is not set +# BR2_PACKAGE_INCONSOLATA is not set +# BR2_PACKAGE_LIBERATION is not set + +# +# Icons +# +# BR2_PACKAGE_ADWAITA_ICON_THEME is not set +# BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS is not set +# BR2_PACKAGE_HICOLOR_ICON_THEME is not set + +# +# Sounds +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Themes +# +# BR2_PACKAGE_GTK2_ENGINES is not set + +# +# Games +# +# BR2_PACKAGE_CHOCOLATE_DOOM is not set +# BR2_PACKAGE_GNUCHESS is not set +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_LUGARU is not set +# BR2_PACKAGE_MINETEST is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set +# BR2_PACKAGE_RUBIX is not set +# BR2_PACKAGE_SL is not set +# BR2_PACKAGE_SOLARUS is not set +# BR2_PACKAGE_STELLA is not set +# BR2_PACKAGE_SUPERTUX is not set +# BR2_PACKAGE_SUPERTUXKART is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GHOSTSCRIPT is not set +BR2_PACKAGE_GLMARK2_GL=y +# BR2_PACKAGE_GLMARK2 is not set +BR2_PACKAGE_GNUPLOT=y +# BR2_PACKAGE_JHEAD is not set +# BR2_PACKAGE_LIBVA_UTILS is not set +# BR2_PACKAGE_MESA3D_DEMOS is not set +# BR2_PACKAGE_PNGQUANT is not set +# BR2_PACKAGE_QT5CINEX is not set +# BR2_PACKAGE_RRDTOOL is not set +# BR2_PACKAGE_TESSERACT_OCR is not set + +# +# Graphic libraries +# +# BR2_PACKAGE_CEGUI06 is not set +# BR2_PACKAGE_DIRECTFB is not set +# BR2_PACKAGE_EFL is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBTERM is not set +# BR2_PACKAGE_FBV is not set +# BR2_PACKAGE_FREERDP is not set +# BR2_PACKAGE_IMAGEMAGICK is not set + +# +# linux-fusion needs a Linux kernel to be built +# +BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER=y +BR2_PACKAGE_MESA3D_DRI_DRIVER=y +BR2_PACKAGE_MESA3D_DRIVER=y +BR2_PACKAGE_MESA3D_NEEDS_XA=y + +# +# Gallium drivers +# +# BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV is not set +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU=y +# BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_R600 is not set +# BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA is not set +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y +# BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL is not set + +# +# DRI drivers +# +BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST=y +BR2_PACKAGE_MESA3D_DRI_DRIVER_I915=y +BR2_PACKAGE_MESA3D_DRI_DRIVER_I965=y +BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU=y +# BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON is not set + +# +# Vulkan drivers +# +# BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL is not set + +# +# Off-screen Rendering +# +# BR2_PACKAGE_MESA3D_OSMESA is not set + +# +# Additional API Support +# +BR2_PACKAGE_MESA3D_OPENGL_EGL=y +# BR2_PACKAGE_MESA3D_OPENGL_ES is not set +# BR2_PACKAGE_MESA3D_OPENGL_TEXTURE_FLOAT is not set +BR2_PACKAGE_PROVIDES_LIBGL="mesa3d" +BR2_PACKAGE_PROVIDES_LIBEGL="mesa3d" +# BR2_PACKAGE_OCRAD is not set +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set +# BR2_PACKAGE_SDL2 is not set + +# +# Other GUIs +# +# BR2_PACKAGE_QT is not set +BR2_PACKAGE_QT5_GL_AVAILABLE=y +BR2_PACKAGE_QT5_JSCORE_AVAILABLE=y +BR2_PACKAGE_QT5=y +BR2_PACKAGE_QT5_VERSION_LATEST=y +# BR2_PACKAGE_QT5_VERSION_5_6 is not set +BR2_PACKAGE_QT53D=y +BR2_PACKAGE_QT5BASE=y +BR2_PACKAGE_QT5BASE_CUSTOM_CONF_OPTS="" +BR2_PACKAGE_QT5BASE_CONFIG_FILE="" +# BR2_PACKAGE_QT5BASE_EXAMPLES is not set +BR2_PACKAGE_QT5BASE_NETWORK=y +# BR2_PACKAGE_QT5BASE_CONCURRENT is not set +BR2_PACKAGE_QT5BASE_SQL=y +# BR2_PACKAGE_QT5BASE_MYSQL is not set +# BR2_PACKAGE_QT5BASE_PSQL is not set +BR2_PACKAGE_QT5BASE_SQLITE_NONE=y +# BR2_PACKAGE_QT5BASE_SQLITE_QT is not set +# BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM is not set +BR2_PACKAGE_QT5BASE_TEST=y +BR2_PACKAGE_QT5BASE_XML=y +BR2_PACKAGE_QT5BASE_GUI=y +BR2_PACKAGE_QT5BASE_WIDGETS=y +BR2_PACKAGE_QT5BASE_OPENGL=y +BR2_PACKAGE_QT5BASE_OPENGL_DESKTOP=y +BR2_PACKAGE_QT5BASE_OPENGL_LIB=y +# BR2_PACKAGE_QT5BASE_LINUXFB is not set + +# +# directfb backend available if directfb is enabled +# +BR2_PACKAGE_QT5BASE_XCB=y +# BR2_PACKAGE_QT5BASE_EGLFS is not set +BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" +BR2_PACKAGE_QT5BASE_PRINTSUPPORT=y +BR2_PACKAGE_QT5BASE_FONTCONFIG=y +# BR2_PACKAGE_QT5BASE_HARFBUZZ is not set +# BR2_PACKAGE_QT5BASE_GIF is not set +# BR2_PACKAGE_QT5BASE_JPEG is not set +# BR2_PACKAGE_QT5BASE_PNG is not set +# BR2_PACKAGE_QT5BASE_DBUS is not set +# BR2_PACKAGE_QT5BASE_ICU is not set +# BR2_PACKAGE_QT5BASE_TSLIB is not set +# BR2_PACKAGE_QT5CANVAS3D is not set +# BR2_PACKAGE_QT5CHARTS is not set + +# +# qt5connectivity needs neard and/or bluez(5)_utils +# +BR2_PACKAGE_QT5DECLARATIVE=y +BR2_PACKAGE_QT5DECLARATIVE_QUICK=y +# BR2_PACKAGE_QT5ENGINIO is not set +# BR2_PACKAGE_QT5GRAPHICALEFFECTS is not set +# BR2_PACKAGE_QT5IMAGEFORMATS is not set +# BR2_PACKAGE_QT5LOCATION is not set +# BR2_PACKAGE_QT5MULTIMEDIA is not set +# BR2_PACKAGE_QT5QUICKCONTROLS is not set +# BR2_PACKAGE_QT5QUICKCONTROLS2 is not set +# BR2_PACKAGE_QT5SCRIPT is not set +# BR2_PACKAGE_QT5SCXML is not set +# BR2_PACKAGE_QT5SENSORS is not set +# BR2_PACKAGE_QT5SERIALBUS is not set +# BR2_PACKAGE_QT5SERIALPORT is not set +# BR2_PACKAGE_QT5SVG is not set +# BR2_PACKAGE_QT5TOOLS is not set +# BR2_PACKAGE_QT5VIRTUALKEYBOARD is not set +# BR2_PACKAGE_QT5WAYLAND is not set +# BR2_PACKAGE_QT5WEBCHANNEL is not set +# BR2_PACKAGE_QT5WEBKIT is not set +BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS=y + +# +# qt5webengine needs udev /dev management and a glibc toolchain w/ gcc >= 4.8, host gcc >= 4.8, threads, wchar +# +# BR2_PACKAGE_QT5WEBSOCKETS is not set +# BR2_PACKAGE_QT5X11EXTRAS is not set +BR2_PACKAGE_QT5XMLPATTERNS=y + +# +# QT libraries and helper libraries +# +# BR2_PACKAGE_GRANTLEE is not set +# BR2_PACKAGE_QEXTSERIALPORT is not set +# BR2_PACKAGE_QJSON is not set +# BR2_PACKAGE_QUAZIP is not set +# BR2_PACKAGE_QWT is not set + +# +# tekui needs a Lua interpreter and a toolchain w/ threads, dynamic library +# + +# +# weston needs udev and a toolchain w/ locale, threads, dynamic library, headers >= 3.0 +# +BR2_PACKAGE_XORG7=y + +# +# X11R7 Servers +# +BR2_PACKAGE_XSERVER_XORG_SERVER=y +BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI_23=y +BR2_PACKAGE_XSERVER_XORG_SERVER_VIDEODRV_ABI=23 +BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_19=y +# BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_17 is not set +# BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_14 is not set +BR2_PACKAGE_XSERVER_XORG_SERVER_VERSION="1.19.6" +BR2_PACKAGE_XSERVER_XORG_SERVER_MODULAR=y +# BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE is not set + +# +# Optional Servers +# +# BR2_PACKAGE_XSERVER_XORG_SERVER_XVFB is not set + +# +# X11R7 Libraries +# +BR2_PACKAGE_LIBXCB=y +BR2_PACKAGE_XCB_UTIL=y +# BR2_PACKAGE_XCB_UTIL_CURSOR is not set +BR2_PACKAGE_XCB_UTIL_IMAGE=y +BR2_PACKAGE_XCB_UTIL_KEYSYMS=y +# BR2_PACKAGE_XCB_UTIL_RENDERUTIL is not set +BR2_PACKAGE_XCB_UTIL_WM=y +# BR2_PACKAGE_XLIB_LIBFS is not set +BR2_PACKAGE_XLIB_LIBICE=y +BR2_PACKAGE_XLIB_LIBSM=y +BR2_PACKAGE_XLIB_LIBX11=y +# BR2_PACKAGE_XLIB_LIBXSCRNSAVER is not set +BR2_PACKAGE_XLIB_LIBXAU=y +BR2_PACKAGE_XLIB_LIBXAW=y +# BR2_PACKAGE_XLIB_LIBXCOMPOSITE is not set +BR2_PACKAGE_XLIB_LIBXCURSOR=y +BR2_PACKAGE_XLIB_LIBXDAMAGE=y +BR2_PACKAGE_XLIB_LIBXDMCP=y +BR2_PACKAGE_XLIB_LIBXEXT=y +BR2_PACKAGE_XLIB_LIBXFIXES=y +# BR2_PACKAGE_XLIB_LIBXFONT is not set +BR2_PACKAGE_XLIB_LIBXFONT2=y +BR2_PACKAGE_XLIB_LIBXFT=y +BR2_PACKAGE_XLIB_LIBXI=y +BR2_PACKAGE_XLIB_LIBXINERAMA=y +BR2_PACKAGE_XLIB_LIBXMU=y +BR2_PACKAGE_XLIB_LIBXPM=y +BR2_PACKAGE_XLIB_LIBXRANDR=y +BR2_PACKAGE_XLIB_LIBXRENDER=y +BR2_PACKAGE_XLIB_LIBXRES=y +BR2_PACKAGE_XLIB_LIBXT=y +# BR2_PACKAGE_XLIB_LIBXTST is not set +# BR2_PACKAGE_XLIB_LIBXV is not set +# BR2_PACKAGE_XLIB_LIBXVMC is not set +# BR2_PACKAGE_XLIB_LIBXXF86DGA is not set +BR2_PACKAGE_XLIB_LIBXXF86VM=y +# BR2_PACKAGE_XLIB_LIBDMX is not set +BR2_PACKAGE_XLIB_LIBFONTENC=y +BR2_PACKAGE_XLIB_LIBXKBFILE=y +# BR2_PACKAGE_XLIB_LIBXSHMFENCE is not set +BR2_PACKAGE_XLIB_XTRANS=y + +# +# X11R7 Applications +# +# BR2_PACKAGE_XAPP_APPRES is not set +# BR2_PACKAGE_XAPP_BDFTOPCF is not set +# BR2_PACKAGE_XAPP_BEFORELIGHT is not set +# BR2_PACKAGE_XAPP_BITMAP is not set +# BR2_PACKAGE_XAPP_EDITRES is not set +# BR2_PACKAGE_XAPP_FONTTOSFNT is not set +# BR2_PACKAGE_XAPP_FSLSFONTS is not set +# BR2_PACKAGE_XAPP_FSTOBDF is not set +# BR2_PACKAGE_XAPP_ICEAUTH is not set +# BR2_PACKAGE_XAPP_ICO is not set +# BR2_PACKAGE_XAPP_LISTRES is not set +# BR2_PACKAGE_XAPP_LUIT is not set +# BR2_PACKAGE_XAPP_MKFONTDIR is not set +# BR2_PACKAGE_XAPP_MKFONTSCALE is not set +# BR2_PACKAGE_XAPP_OCLOCK is not set +# BR2_PACKAGE_XAPP_RGB is not set +# BR2_PACKAGE_XAPP_RSTART is not set +# BR2_PACKAGE_XAPP_SCRIPTS is not set +# BR2_PACKAGE_XAPP_SESSREG is not set +# BR2_PACKAGE_XAPP_SETXKBMAP is not set +# BR2_PACKAGE_XAPP_SHOWFONT is not set +# BR2_PACKAGE_XAPP_SMPROXY is not set +# BR2_PACKAGE_XAPP_TWM is not set +# BR2_PACKAGE_XAPP_VIEWRES is not set +# BR2_PACKAGE_XAPP_X11PERF is not set +BR2_PACKAGE_XAPP_XAUTH=y +# BR2_PACKAGE_XAPP_XBACKLIGHT is not set +# BR2_PACKAGE_XAPP_XBIFF is not set +# BR2_PACKAGE_XAPP_XCALC is not set +# BR2_PACKAGE_XAPP_XCLIPBOARD is not set +# BR2_PACKAGE_XAPP_XCLOCK is not set +# BR2_PACKAGE_XAPP_XCMSDB is not set +# BR2_PACKAGE_XAPP_XCOMPMGR is not set +# BR2_PACKAGE_XAPP_XCONSOLE is not set +# BR2_PACKAGE_XAPP_XCURSORGEN is not set +# BR2_PACKAGE_XAPP_XDBEDIZZY is not set +# BR2_PACKAGE_XAPP_XDITVIEW is not set +# BR2_PACKAGE_XAPP_XDM is not set +# BR2_PACKAGE_XAPP_XDPYINFO is not set +# BR2_PACKAGE_XAPP_XDRIINFO is not set +# BR2_PACKAGE_XAPP_XEDIT is not set +# BR2_PACKAGE_XAPP_XEV is not set +# BR2_PACKAGE_XAPP_XEYES is not set +# BR2_PACKAGE_XAPP_XF86DGA is not set +# BR2_PACKAGE_XAPP_XFD is not set +# BR2_PACKAGE_XAPP_XFINDPROXY is not set +# BR2_PACKAGE_XAPP_XFONTSEL is not set +# BR2_PACKAGE_XAPP_XFS is not set +# BR2_PACKAGE_XAPP_XFSINFO is not set +# BR2_PACKAGE_XAPP_XGAMMA is not set +# BR2_PACKAGE_XAPP_XGC is not set +# BR2_PACKAGE_XAPP_XHOST is not set +BR2_PACKAGE_XAPP_XINIT=y +# BR2_PACKAGE_XAPP_XINPUT is not set +# BR2_PACKAGE_XAPP_XINPUT_CALIBRATOR is not set +BR2_PACKAGE_XAPP_XKBCOMP=y +# BR2_PACKAGE_XAPP_XKBEVD is not set +# BR2_PACKAGE_XAPP_XKBPRINT is not set +# BR2_PACKAGE_XAPP_XKBUTILS is not set +# BR2_PACKAGE_XAPP_XKILL is not set +# BR2_PACKAGE_XAPP_XLOAD is not set +# BR2_PACKAGE_XAPP_XLOGO is not set +# BR2_PACKAGE_XAPP_XLSATOMS is not set +# BR2_PACKAGE_XAPP_XLSCLIENTS is not set +# BR2_PACKAGE_XAPP_XLSFONTS is not set +# BR2_PACKAGE_XAPP_XMAG is not set +# BR2_PACKAGE_XAPP_XMAN is not set +# BR2_PACKAGE_XAPP_XMESSAGE is not set +# BR2_PACKAGE_XAPP_XMH is not set +# BR2_PACKAGE_XAPP_XMODMAP is not set +# BR2_PACKAGE_XAPP_XMORE is not set +# BR2_PACKAGE_XAPP_XPR is not set +# BR2_PACKAGE_XAPP_XPROP is not set +# BR2_PACKAGE_XAPP_XRANDR is not set +# BR2_PACKAGE_XAPP_XRDB is not set +# BR2_PACKAGE_XAPP_XREFRESH is not set +# BR2_PACKAGE_XAPP_XSET is not set +# BR2_PACKAGE_XAPP_XSETMODE is not set +# BR2_PACKAGE_XAPP_XSETPOINTER is not set +# BR2_PACKAGE_XAPP_XSETROOT is not set +# BR2_PACKAGE_XAPP_XSM is not set +# BR2_PACKAGE_XAPP_XSTDCMAP is not set +# BR2_PACKAGE_XAPP_XVIDTUNE is not set +# BR2_PACKAGE_XAPP_XVINFO is not set +# BR2_PACKAGE_XAPP_XWD is not set +# BR2_PACKAGE_XAPP_XWININFO is not set +# BR2_PACKAGE_XAPP_XWUD is not set + +# +# X11R7 Drivers +# + +# +# xf86-input-evdev requires udev to be enabled +# +# BR2_PACKAGE_XDRIVER_XF86_INPUT_JOYSTICK is not set +BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y + +# +# xf86-input-libinput needs udev /dev management and a toolchain w/ locale +# +BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y +# BR2_PACKAGE_XDRIVER_XF86_INPUT_SYNAPTICS is not set +# BR2_PACKAGE_XDRIVER_XF86_INPUT_TSLIB is not set +# BR2_PACKAGE_XDRIVER_XF86_INPUT_VMMOUSE is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_AMDGPU is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_ARK is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_AST is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_ATI is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_CIRRUS is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_DUMMY is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBDEV is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_FBTURBO is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_GLINT is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_I128 is not set +BR2_PACKAGE_XDRIVER_XF86_VIDEO_INTEL=y +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_MACH64 is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_MGA is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_NEOMAGIC is not set +BR2_PACKAGE_XDRIVER_XF86_VIDEO_NOUVEAU=y +BR2_PACKAGE_XDRIVER_XF86_VIDEO_NV=y +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_OPENCHROME is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_QXL is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_R128 is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_SAVAGE is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_SILICONMOTION is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_SIS is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_TDFX is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_TGA is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_TRIDENT is not set +BR2_PACKAGE_XDRIVER_XF86_VIDEO_VESA=y +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_VMWARE is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_VOODOO is not set + +# +# X11R7 Fonts +# +BR2_PACKAGE_XFONT_FONT_UTIL=y +BR2_PACKAGE_XFONT_ENCODINGS=y +# BR2_PACKAGE_XFONT_FONT_ADOBE_100DPI is not set +# BR2_PACKAGE_XFONT_FONT_ADOBE_75DPI is not set +# BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_100DPI is not set +# BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_75DPI is not set +# BR2_PACKAGE_XFONT_FONT_ADOBE_UTOPIA_TYPE1 is not set +BR2_PACKAGE_XFONT_FONT_ALIAS=y +# BR2_PACKAGE_XFONT_FONT_ARABIC_MISC is not set +# BR2_PACKAGE_XFONT_FONT_BH_100DPI is not set +# BR2_PACKAGE_XFONT_FONT_BH_75DPI is not set +# BR2_PACKAGE_XFONT_FONT_BH_LUCIDATYPEWRITER_100DPI is not set +# BR2_PACKAGE_XFONT_FONT_BH_LUCIDATYPEWRITER_75DPI is not set +# BR2_PACKAGE_XFONT_FONT_BH_TTF is not set +# BR2_PACKAGE_XFONT_FONT_BH_TYPE1 is not set +# BR2_PACKAGE_XFONT_FONT_BITSTREAM_100DPI is not set +# BR2_PACKAGE_XFONT_FONT_BITSTREAM_75DPI is not set +# BR2_PACKAGE_XFONT_FONT_BITSTREAM_TYPE1 is not set +# BR2_PACKAGE_XFONT_FONT_CRONYX_CYRILLIC is not set +BR2_PACKAGE_XFONT_FONT_CURSOR_MISC=y +# BR2_PACKAGE_XFONT_FONT_DAEWOO_MISC is not set +# BR2_PACKAGE_XFONT_FONT_DEC_MISC is not set +# BR2_PACKAGE_XFONT_FONT_IBM_TYPE1 is not set +# BR2_PACKAGE_XFONT_FONT_ISAS_MISC is not set +# BR2_PACKAGE_XFONT_FONT_JIS_MISC is not set +# BR2_PACKAGE_XFONT_FONT_MICRO_MISC is not set +# BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC is not set +# BR2_PACKAGE_XFONT_FONT_MISC_ETHIOPIC is not set +# BR2_PACKAGE_XFONT_FONT_MISC_MELTHO is not set +BR2_PACKAGE_XFONT_FONT_MISC_MISC=y +# BR2_PACKAGE_XFONT_FONT_MUTT_MISC is not set +# BR2_PACKAGE_XFONT_FONT_SCHUMACHER_MISC is not set +# BR2_PACKAGE_XFONT_FONT_SCREEN_CYRILLIC is not set +# BR2_PACKAGE_XFONT_FONT_SONY_MISC is not set +# BR2_PACKAGE_XFONT_FONT_SUN_MISC is not set +# BR2_PACKAGE_XFONT_FONT_WINITZKI_CYRILLIC is not set +# BR2_PACKAGE_XFONT_FONT_XFREE86_TYPE1 is not set + +# +# X11R7 X protocols +# +BR2_PACKAGE_XCB_PROTO=y +# BR2_PACKAGE_XPROTO_APPLEWMPROTO is not set +BR2_PACKAGE_XPROTO_BIGREQSPROTO=y +BR2_PACKAGE_XPROTO_COMPOSITEPROTO=y +BR2_PACKAGE_XPROTO_DAMAGEPROTO=y +# BR2_PACKAGE_XPROTO_DMXPROTO is not set +BR2_PACKAGE_XPROTO_DRI2PROTO=y +# BR2_PACKAGE_XPROTO_DRI3PROTO is not set +BR2_PACKAGE_XPROTO_FIXESPROTO=y +# BR2_PACKAGE_XPROTO_FONTCACHEPROTO is not set +BR2_PACKAGE_XPROTO_FONTSPROTO=y +BR2_PACKAGE_XPROTO_GLPROTO=y +BR2_PACKAGE_XPROTO_INPUTPROTO=y +BR2_PACKAGE_XPROTO_KBPROTO=y +BR2_PACKAGE_XPROTO_PRESENTPROTO=y +BR2_PACKAGE_XPROTO_RANDRPROTO=y +# BR2_PACKAGE_XPROTO_RECORDPROTO is not set +BR2_PACKAGE_XPROTO_RENDERPROTO=y +BR2_PACKAGE_XPROTO_RESOURCEPROTO=y +# BR2_PACKAGE_XPROTO_SCRNSAVERPROTO is not set +BR2_PACKAGE_XPROTO_VIDEOPROTO=y +# BR2_PACKAGE_XPROTO_WINDOWSWMPROTO is not set +BR2_PACKAGE_XPROTO_XCMISCPROTO=y +BR2_PACKAGE_XPROTO_XEXTPROTO=y +BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO=y +BR2_PACKAGE_XPROTO_XF86DGAPROTO=y +BR2_PACKAGE_XPROTO_XF86DRIPROTO=y +BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO=y +BR2_PACKAGE_XPROTO_XINERAMAPROTO=y +BR2_PACKAGE_XPROTO_XPROTO=y +# BR2_PACKAGE_XPROTO_XPROXYMANAGEMENTPROTOCOL is not set + +# +# X11R7 Utilities +# +# BR2_PACKAGE_XUTIL_MAKEDEPEND is not set +BR2_PACKAGE_MCOOKIE=y + +# +# X11R7 Other data +# +BR2_PACKAGE_XDATA_XBITMAPS=y +# BR2_PACKAGE_XDATA_XCURSOR_THEMES is not set +# BR2_PACKAGE_XCURSOR_TRANSPARENT_THEME is not set + +# +# X applications +# +# BR2_PACKAGE_ALSAMIXERGUI is not set +# BR2_PACKAGE_APITRACE is not set +# BR2_PACKAGE_DILLO is not set +# BR2_PACKAGE_DOCKER is not set +BR2_PACKAGE_FEH=y +# BR2_PACKAGE_GMPC is not set +# BR2_PACKAGE_GQVIEW is not set +# BR2_PACKAGE_GTKPERF is not set +# BR2_PACKAGE_LEAFPAD is not set + +# +# midori needs libgtk3 and a glibc toolchain w/ C++, gcc >= 5, host gcc >= 4.8 +# +# BR2_PACKAGE_NODM is not set +BR2_PACKAGE_PCMANFM=y +# BR2_PACKAGE_QT_WEBKIT_KIOSK is not set +# BR2_PACKAGE_RDESKTOP is not set +# BR2_PACKAGE_SYNERGY is not set +# BR2_PACKAGE_WMCTRL is not set +# BR2_PACKAGE_X11VNC is not set +# BR2_PACKAGE_XDOTOOL is not set +# BR2_PACKAGE_XSCREENSAVER is not set +BR2_PACKAGE_XTERM=y +# BR2_PACKAGE_XVKBD is not set +# BR2_PACKAGE_YAD is not set + +# +# X libraries and helper libraries +# +# BR2_PACKAGE_LIBSEXY is not set +BR2_PACKAGE_XKEYBOARD_CONFIG=y + +# +# X window managers +# +# BR2_PACKAGE_FLUXBOX is not set +# BR2_PACKAGE_MATCHBOX is not set +# BR2_PACKAGE_METACITY is not set +BR2_PACKAGE_OPENBOX=y +# BR2_PACKAGE_RATPOISON is not set + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_ARMBIAN_FIRMWARE is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_WILC1000_FIRMWARE is not set +# BR2_PACKAGE_WILINK_BT_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_ACPICA is not set +# BR2_PACKAGE_ACPID is not set +# BR2_PACKAGE_ACPITOOL is not set +# BR2_PACKAGE_AER_INJECT is not set +# BR2_PACKAGE_AMD_CATALYST is not set +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management +# +# BR2_PACKAGE_BRLTTY is not set +# BR2_PACKAGE_CC_TOOL is not set +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set + +# +# dahdi-linux needs a Linux kernel to be built +# + +# +# dahdi-tools needs a toolchain w/ threads +# + +# +# dahdi-tools needs a Linux kernel to be built +# +# BR2_PACKAGE_DBUS is not set +# BR2_PACKAGE_DFU_UTIL is not set +# BR2_PACKAGE_DMIDECODE is not set +# BR2_PACKAGE_DMRAID is not set + +# +# dt-utils needs udev /dev management +# +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_DUMP1090 is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set +# BR2_PACKAGE_EDID_DECODE is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +# BR2_PACKAGE_FIS is not set +# BR2_PACKAGE_FLASHROM is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set +# BR2_PACKAGE_GPTFDISK is not set +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_HWLOC is not set +# BR2_PACKAGE_I7Z is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_INTEL_MICROCODE is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IPMIUTIL is not set + +# +# iqvlinux needs a Linux kernel to be built +# +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_IUCODE_TOOL is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set +# BR2_PACKAGE_LIBUIO is not set +# BR2_PACKAGE_LINUXCONSOLETOOLS is not set + +# +# linux-backports needs a Linux kernel to be built +# +# BR2_PACKAGE_LIRC_TOOLS is not set +# BR2_PACKAGE_LM_SENSORS is not set +# BR2_PACKAGE_LSHW is not set +# BR2_PACKAGE_LSSCSI is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LUKSMETA is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MEMTEST86 is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MEMTOOL is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_MSR_TOOLS is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_NVIDIA_DRIVER is not set +# BR2_PACKAGE_NVME is not set +# BR2_PACKAGE_OFONO is not set +# BR2_PACKAGE_OPEN2300 is not set +# BR2_PACKAGE_OPENIPMI is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_OPENPOWERLINK is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PDBG is not set +# BR2_PACKAGE_PICOCOM is not set +# BR2_PACKAGE_POWERTOP is not set +# BR2_PACKAGE_PPS_TOOLS is not set +# BR2_PACKAGE_PULSEVIEW is not set +# BR2_PACKAGE_READ_EDID is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RS485CONF is not set + +# +# rtl8188eu needs a Linux kernel to be built +# + +# +# rtl8723bs needs a Linux kernel to be built +# + +# +# rtl8723bu needs a Linux kernel to be built +# + +# +# rtl8821au needs a Linux kernel to be built +# + +# +# rtl8189fs needs a Linux kernel to be built +# +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SIGROK_CLI is not set +# BR2_PACKAGE_SISPMCTL is not set +# BR2_PACKAGE_SMARTMONTOOLS is not set +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SPI_TOOLS is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_STM32FLASH is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on Python +# + +# +# ti-sgx-um needs the ti-sgx-km driver +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_TRIGGERHAPPY is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set +# BR2_PACKAGE_UBUS is not set + +# +# uccp420wlan needs a Linux kernel >= 4.2 to be built +# + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_UHUBCTL is not set + +# +# upower needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbmount requires udev to be enabled +# + +# +# usbutils needs udev /dev management and toolchain w/ threads +# +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WIPE is not set +# BR2_PACKAGE_XORRISO is not set + +# +# xr819-xradio driver needs a Linux kernel to be built +# + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_4TH is not set +# BR2_PACKAGE_ENSCRIPT is not set +BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS=y +BR2_PACKAGE_ERLANG_ARCH_SUPPORTS=y +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_EXECLINE is not set +# BR2_PACKAGE_FICL is not set +BR2_PACKAGE_GAUCHE_ARCH_SUPPORTS=y +# BR2_PACKAGE_GAUCHE is not set +# BR2_PACKAGE_GUILE is not set +# BR2_PACKAGE_HASERL is not set +BR2_PACKAGE_JAMVM_ARCH_SUPPORTS=y +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +BR2_PACKAGE_LUAJIT_ARCH_SUPPORTS=y +# BR2_PACKAGE_LUAJIT is not set +# BR2_PACKAGE_MICROPYTHON is not set +# BR2_PACKAGE_MOARVM is not set +BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS=y +BR2_PACKAGE_MONO_ARCH_SUPPORTS=y +# BR2_PACKAGE_MONO is not set +BR2_PACKAGE_NODEJS_ARCH_SUPPORTS=y +# BR2_PACKAGE_NODEJS is not set +# BR2_PACKAGE_PERL is not set +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set +# BR2_PACKAGE_AUBIO is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_PACKAGE_BCG729 is not set +# BR2_PACKAGE_CELT051 is not set +BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS=y +# BR2_PACKAGE_FDK_AAC is not set +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBASPLIB is not set +# BR2_PACKAGE_LIBBROADVOICE is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDDB is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCODEC2 is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBEBUR128 is not set +# BR2_PACKAGE_LIBG7221 is not set +# BR2_PACKAGE_LIBGSM is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBILBC is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set +# BR2_PACKAGE_LIBMODPLUG is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set +# BR2_PACKAGE_LIBSIDPLAY2 is not set +# BR2_PACKAGE_LIBSILK is not set +# BR2_PACKAGE_LIBSNDFILE is not set +# BR2_PACKAGE_LIBSOUNDTOUCH is not set +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_MP4V2 is not set +BR2_PACKAGE_OPENAL_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPENAL is not set +# BR2_PACKAGE_OPENCORE_AMR is not set +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_OPUSFILE is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SBC is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_TAGLIB is not set +# BR2_PACKAGE_TINYALSA is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set +BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS=y +# BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LIBSQUISH is not set +# BR2_PACKAGE_LIBZIP is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_MINIZIP is not set +# BR2_PACKAGE_SNAPPY is not set +# BR2_PACKAGE_SZIP is not set +BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS=y +BR2_PACKAGE_ZLIB=y +BR2_PACKAGE_LIBZLIB=y +# BR2_PACKAGE_ZLIB_NG is not set +BR2_PACKAGE_HAS_ZLIB=y +BR2_PACKAGE_PROVIDES_ZLIB="libzlib" +BR2_PACKAGE_PROVIDES_HOST_ZLIB="host-libzlib" + +# +# Crypto +# +# BR2_PACKAGE_BEECRYPT is not set +BR2_PACKAGE_BOTAN_ARCH_SUPPORTS=y +# BR2_PACKAGE_BOTAN is not set +# BR2_PACKAGE_CA_CERTIFICATES is not set + +# +# cryptodev needs a Linux kernel to be built +# +# BR2_PACKAGE_GCR is not set +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBGCRYPT is not set +BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBGPG_ERROR is not set +BR2_PACKAGE_LIBGPG_ERROR_SYSCFG="x86_64-pc-linux-gnu" +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKCAPI is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set +# BR2_PACKAGE_LIBSCRYPT is not set +# BR2_PACKAGE_LIBSECRET is not set +BR2_PACKAGE_LIBSHA1=y +# BR2_PACKAGE_LIBSODIUM is not set +# BR2_PACKAGE_LIBSSH is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_LIBTOMCRYPT is not set +# BR2_PACKAGE_LIBUECC is not set +# BR2_PACKAGE_MBEDTLS is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +BR2_PACKAGE_PROVIDES_HOST_OPENSSL="host-libopenssl" +# BR2_PACKAGE_RHASH is not set +# BR2_PACKAGE_TINYDTLS is not set +# BR2_PACKAGE_TROUSERS is not set +# BR2_PACKAGE_USTREAM_SSL is not set +# BR2_PACKAGE_WOLFSSL is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_HIREDIS is not set +# BR2_PACKAGE_KOMPEXSQLITE is not set +# BR2_PACKAGE_LEVELDB is not set +BR2_PACKAGE_MONGODB_ARCH_SUPPORTS=y +# BR2_PACKAGE_MONGODB is not set +# BR2_PACKAGE_MYSQL is not set +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set +# BR2_PACKAGE_UNIXODBC is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set +# BR2_PACKAGE_PHYSFS is not set + +# +# Graphics +# +# BR2_PACKAGE_ASSIMP is not set +BR2_PACKAGE_ATK=y +# BR2_PACKAGE_ATKMM is not set +# BR2_PACKAGE_BULLET is not set +BR2_PACKAGE_CAIRO=y +BR2_PACKAGE_CAIRO_PS=y +BR2_PACKAGE_CAIRO_PDF=y +BR2_PACKAGE_CAIRO_PNG=y +# BR2_PACKAGE_CAIRO_SCRIPT is not set +BR2_PACKAGE_CAIRO_SVG=y +# BR2_PACKAGE_CAIRO_TEE is not set +# BR2_PACKAGE_CAIRO_XML is not set +# BR2_PACKAGE_CAIROMM is not set +# BR2_PACKAGE_EXIV2 is not set +# BR2_PACKAGE_FLTK is not set +BR2_PACKAGE_FONTCONFIG=y +BR2_PACKAGE_FREETYPE=y +# BR2_PACKAGE_GD is not set +BR2_PACKAGE_GDK_PIXBUF=y +# BR2_PACKAGE_GIBLIB is not set +# BR2_PACKAGE_GIFLIB is not set + +# +# granite needs libgtk3 and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_GRAPHITE2 is not set + +# +# gtkmm3 needs libgtk3 and a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# +BR2_PACKAGE_HARFBUZZ=y +# BR2_PACKAGE_IJS is not set +BR2_PACKAGE_IMLIB2=y +BR2_PACKAGE_IMLIB2_JPEG=y +BR2_PACKAGE_IMLIB2_PNG=y +# BR2_PACKAGE_IMLIB2_GIF is not set +# BR2_PACKAGE_IMLIB2_TIFF is not set +# BR2_PACKAGE_IMLIB2_ID3 is not set +BR2_PACKAGE_IMLIB2_X=y +# BR2_PACKAGE_IRRLICHT is not set +# BR2_PACKAGE_JASPER is not set +BR2_PACKAGE_JPEG=y +BR2_PACKAGE_JPEG_SIMD_SUPPORT=y +# BR2_PACKAGE_LIBJPEG is not set +BR2_PACKAGE_JPEG_TURBO=y +BR2_PACKAGE_HAS_JPEG=y +BR2_PACKAGE_PROVIDES_JPEG="jpeg-turbo" +# BR2_PACKAGE_KMSXX is not set +# BR2_PACKAGE_LCMS2 is not set +# BR2_PACKAGE_LENSFUN is not set +# BR2_PACKAGE_LEPTONICA is not set +# BR2_PACKAGE_LESSTIF is not set +# BR2_PACKAGE_LIBART is not set +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRI2 is not set +BR2_PACKAGE_LIBDRM=y +BR2_PACKAGE_LIBDRM_HAS_ATOMIC=y +BR2_PACKAGE_LIBDRM_ENABLE_ATOMIC=y +BR2_PACKAGE_LIBDRM_INTEL=y +# BR2_PACKAGE_LIBDRM_RADEON is not set +# BR2_PACKAGE_LIBDRM_AMDGPU is not set +BR2_PACKAGE_LIBDRM_NOUVEAU=y +# BR2_PACKAGE_LIBDRM_VMWGFX is not set +# BR2_PACKAGE_LIBDRM_ETNAVIV is not set +# BR2_PACKAGE_LIBDRM_INSTALL_TESTS is not set +# BR2_PACKAGE_LIBEPOXY is not set +# BR2_PACKAGE_LIBEXIF is not set +BR2_PACKAGE_LIBFM=y +BR2_PACKAGE_LIBFM_EXTRA=y +# BR2_PACKAGE_LIBFREEGLUT is not set +# BR2_PACKAGE_LIBFREEIMAGE is not set +# BR2_PACKAGE_LIBGDIPLUS is not set +# BR2_PACKAGE_LIBGEOTIFF is not set +# BR2_PACKAGE_LIBGLADE is not set +BR2_PACKAGE_LIBGLEW=y +# BR2_PACKAGE_LIBGLFW is not set +BR2_PACKAGE_LIBGLU=y +# BR2_PACKAGE_LIBGTA is not set +BR2_PACKAGE_LIBGTK2=y +# BR2_PACKAGE_LIBGTK2_DEMO is not set +# BR2_PACKAGE_LIBGTK3 is not set +# BR2_PACKAGE_LIBMEDIAART is not set +# BR2_PACKAGE_LIBMNG is not set +BR2_PACKAGE_LIBPNG=y +# BR2_PACKAGE_LIBQRENCODE is not set +# BR2_PACKAGE_LIBRAW is not set +# BR2_PACKAGE_LIBRSVG is not set +# BR2_PACKAGE_LIBSOIL is not set +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBVA is not set +# BR2_PACKAGE_LIBVA_INTEL_DRIVER is not set +# BR2_PACKAGE_LIBVDPAU is not set +# BR2_PACKAGE_LIBVIPS is not set +BR2_PACKAGE_MENU_CACHE=y +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_OPENCV3 is not set +BR2_PACKAGE_HAS_LIBGL=y +BR2_PACKAGE_HAS_LIBEGL=y +BR2_PACKAGE_HAS_LIBEGL_WAYLAND=y +# BR2_PACKAGE_OPENJPEG is not set +BR2_PACKAGE_PANGO=y +# BR2_PACKAGE_PANGOMM is not set +BR2_PACKAGE_PIXMAN=y +# BR2_PACKAGE_POPPLER is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS=y + +# +# webkitgtk needs libgtk3 and a glibc toolchain w/ C++, gcc >= 5, host gcc >= 4.8 +# +# BR2_PACKAGE_WEBP is not set +# BR2_PACKAGE_ZBAR is not set +# BR2_PACKAGE_ZXING_CPP is not set + +# +# Hardware handling +# +# BR2_PACKAGE_ACSCCID is not set +# BR2_PACKAGE_C_PERIPHERY is not set +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_GNU_EFI is not set + +# +# hidapi needs udev /dev management and a toolchain w/ NPTL threads +# +# BR2_PACKAGE_LCDAPI is not set +# BR2_PACKAGE_LET_ME_CREATE is not set +BR2_PACKAGE_LIBAIO_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# +# BR2_PACKAGE_LIBCEC is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBFTDI1 is not set +# BR2_PACKAGE_LIBGPHOTO2 is not set +# BR2_PACKAGE_LIBGPIOD is not set + +# +# libgudev needs udev /dev handling and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBHID is not set +# BR2_PACKAGE_LIBIIO is not set + +# +# libinput needs udev /dev management and a toolchain w/ locale +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set +# BR2_PACKAGE_LIBMBIM is not set +# BR2_PACKAGE_LIBNFC is not set +BR2_PACKAGE_LIBPCIACCESS=y +# BR2_PACKAGE_LIBPHIDGET is not set + +# +# libpri needs a kernel to be built +# +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set +# BR2_PACKAGE_LIBSERIAL is not set +# BR2_PACKAGE_LIBSERIALPORT is not set +# BR2_PACKAGE_LIBSIGROK is not set +# BR2_PACKAGE_LIBSIGROKDECODE is not set +# BR2_PACKAGE_LIBSOC is not set + +# +# libss7 needs a kernel to be built +# +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBUSBGX is not set +# BR2_PACKAGE_LIBV4L is not set +BR2_PACKAGE_LIBXKBCOMMON=y +# BR2_PACKAGE_MRAA is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_OWFS is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set +# BR2_PACKAGE_URG is not set +# BR2_PACKAGE_WIRINGPI is not set + +# +# Javascript +# +# BR2_PACKAGE_ANGULARJS is not set +# BR2_PACKAGE_BOOTSTRAP is not set +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set + +# +# JSON/XML +# +# BR2_PACKAGE_BENEJSON is not set +# BR2_PACKAGE_CJSON is not set +BR2_PACKAGE_EXPAT=y +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JOSE is not set +# BR2_PACKAGE_JSMN is not set +# BR2_PACKAGE_JSON_C is not set +# BR2_PACKAGE_JSON_FOR_MODERN_CPP is not set +# BR2_PACKAGE_JSON_GLIB is not set +# BR2_PACKAGE_JSONCPP is not set +# BR2_PACKAGE_LIBBSON is not set +# BR2_PACKAGE_LIBFASTJSON is not set +# BR2_PACKAGE_LIBJSON is not set +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBUCL is not set +BR2_PACKAGE_LIBXML2=y +# BR2_PACKAGE_LIBXMLPP is not set +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set +# BR2_PACKAGE_PUGIXML is not set +# BR2_PACKAGE_RAPIDJSON is not set +# BR2_PACKAGE_RAPIDXML is not set +# BR2_PACKAGE_RAPTOR is not set +# BR2_PACKAGE_TINYXML is not set +# BR2_PACKAGE_TINYXML2 is not set +# BR2_PACKAGE_VALIJSON is not set +# BR2_PACKAGE_XERCES is not set +# BR2_PACKAGE_YAJL is not set +# BR2_PACKAGE_YAML_CPP is not set + +# +# Logging +# +# BR2_PACKAGE_EVENTLOG is not set +# BR2_PACKAGE_GLOG is not set +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set +# BR2_PACKAGE_LOG4CPLUS is not set +# BR2_PACKAGE_LOG4CPP is not set +# BR2_PACKAGE_LOG4CXX is not set +# BR2_PACKAGE_OPENTRACING_CPP is not set +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# +# BR2_PACKAGE_BITSTREAM is not set +# BR2_PACKAGE_KVAZAAR is not set +# BR2_PACKAGE_LIBAACS is not set +# BR2_PACKAGE_LIBASS is not set +# BR2_PACKAGE_LIBBDPLUS is not set +# BR2_PACKAGE_LIBBLURAY is not set +# BR2_PACKAGE_LIBDCADEC is not set +# BR2_PACKAGE_LIBDVBCSA is not set +# BR2_PACKAGE_LIBDVBPSI is not set +# BR2_PACKAGE_LIBDVBSI is not set +# BR2_PACKAGE_LIBDVDCSS is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set +# BR2_PACKAGE_LIBEBML is not set +# BR2_PACKAGE_LIBHDHOMERUN is not set +# BR2_PACKAGE_LIBMATROSKA is not set +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +BR2_PACKAGE_LIBOPENH264_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBOPENH264 is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIBVPX is not set +# BR2_PACKAGE_LIBYUV is not set +# BR2_PACKAGE_LIVE555 is not set +# BR2_PACKAGE_MEDIASTREAMER is not set +# BR2_PACKAGE_X264 is not set +# BR2_PACKAGE_X265 is not set + +# +# Networking +# +# BR2_PACKAGE_AGENTPP is not set +# BR2_PACKAGE_ALLJOYN is not set +# BR2_PACKAGE_ALLJOYN_BASE is not set +# BR2_PACKAGE_ALLJOYN_TCL is not set +# BR2_PACKAGE_ALLJOYN_TCL_BASE is not set +# BR2_PACKAGE_AZMQ is not set +# BR2_PACKAGE_AZURE_IOT_SDK_C is not set + +# +# batman-adv needs a Linux kernel to be built +# +# BR2_PACKAGE_C_ARES is not set +BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS=y +# BR2_PACKAGE_CANFESTIVAL is not set +# BR2_PACKAGE_CGIC is not set +# BR2_PACKAGE_CPPZMQ is not set +# BR2_PACKAGE_CURLPP is not set +# BR2_PACKAGE_CZMQ is not set +# BR2_PACKAGE_DAQ is not set +# BR2_PACKAGE_FILEMQ is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_FREERADIUS_CLIENT is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set +# BR2_PACKAGE_GSSDP is not set +# BR2_PACKAGE_GUPNP is not set +# BR2_PACKAGE_GUPNP_AV is not set +# BR2_PACKAGE_GUPNP_DLNA is not set +# BR2_PACKAGE_IBRCOMMON is not set +# BR2_PACKAGE_IBRDTN is not set +# BR2_PACKAGE_LIBCGI is not set +# BR2_PACKAGE_LIBCGICC is not set +# BR2_PACKAGE_LIBCOAP is not set +# BR2_PACKAGE_LIBCPPRESTSDK is not set +BR2_PACKAGE_LIBCURL=y +# BR2_PACKAGE_CURL is not set +# BR2_PACKAGE_LIBCURL_VERBOSE is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBHTTPPARSER is not set +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBLDNS is not set +# BR2_PACKAGE_LIBMAXMINDDB is not set +# BR2_PACKAGE_LIBMBUS is not set +# BR2_PACKAGE_LIBMEMCACHED is not set +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMINIUPNPC is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set +# BR2_PACKAGE_LIBNATPMP is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNET is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNICE is not set +# BR2_PACKAGE_LIBNL is not set +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPCAP is not set +# BR2_PACKAGE_LIBPJSIP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSHOUT is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSRTP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTIRPC is not set +# BR2_PACKAGE_LIBTORRENT is not set +# BR2_PACKAGE_LIBUPNP is not set +# BR2_PACKAGE_LIBUPNP18 is not set +# BR2_PACKAGE_LIBUPNPP is not set +# BR2_PACKAGE_LIBURIPARSER is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCK is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_LKSCTP_TOOLS is not set +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_NANOMSG is not set +# BR2_PACKAGE_NEON is not set +# BR2_PACKAGE_NORM is not set +# BR2_PACKAGE_NSS_PAM_LDAPD is not set +# BR2_PACKAGE_OMNIORB is not set +# BR2_PACKAGE_OPENLDAP is not set +# BR2_PACKAGE_OPENMPI is not set +# BR2_PACKAGE_OPENPGM is not set + +# +# openzwave needs udev and a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_ORTP is not set +# BR2_PACKAGE_PAHO_MQTT_C is not set +# BR2_PACKAGE_QDECODER is not set +# BR2_PACKAGE_QPID_PROTON is not set +# BR2_PACKAGE_RABBITMQ_C is not set +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SNMPPP is not set +# BR2_PACKAGE_SOFIA_SIP is not set +# BR2_PACKAGE_THRIFT is not set +# BR2_PACKAGE_USBREDIR is not set +# BR2_PACKAGE_ZEROMQ is not set +# BR2_PACKAGE_ZMQPP is not set +# BR2_PACKAGE_ZYRE is not set + +# +# Other +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set +# BR2_PACKAGE_ARMADILLO is not set +# BR2_PACKAGE_ATF is not set +# BR2_PACKAGE_BCTOOLBOX is not set +# BR2_PACKAGE_BDWGC is not set +# BR2_PACKAGE_BOOST is not set +# BR2_PACKAGE_CLAPACK is not set +BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS=y +# BR2_PACKAGE_CLASSPATH is not set +BR2_PACKAGE_CLP=y +BR2_PACKAGE_COINUTILS=y +# BR2_PACKAGE_CPPCMS is not set +# BR2_PACKAGE_CRACKLIB is not set +# BR2_PACKAGE_DAWGDIC is not set +# BR2_PACKAGE_DING_LIBS is not set +# BR2_PACKAGE_EIGEN is not set +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_FFTW is not set +# BR2_PACKAGE_FLANN is not set +# BR2_PACKAGE_FLATBUFFERS is not set +# BR2_PACKAGE_GCONF is not set +# BR2_PACKAGE_GFLAGS is not set +# BR2_PACKAGE_GLIBMM is not set +# BR2_PACKAGE_GLM is not set +# BR2_PACKAGE_GMP is not set +BR2_PACKAGE_GSL=y +# BR2_PACKAGE_GTEST is not set +BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS=y +# BR2_PACKAGE_JEMALLOC is not set +BR2_PACKAGE_LAPACK=y +BR2_PACKAGE_LAPACK_COMPLEX=y +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBB64 is not set +BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBBSD is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set +# BR2_PACKAGE_LIBCGROUP is not set +# BR2_PACKAGE_LIBCROCO is not set +# BR2_PACKAGE_LIBCROSSGUID is not set +# BR2_PACKAGE_LIBCSV is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set +BR2_PACKAGE_LIBFFI=y +# BR2_PACKAGE_LIBGEE is not set +BR2_PACKAGE_LIBGLIB2=y +# BR2_PACKAGE_LIBGLOB is not set +# BR2_PACKAGE_LIBICAL is not set +# BR2_PACKAGE_LIBITE is not set +# BR2_PACKAGE_LIBLINEAR is not set +# BR2_PACKAGE_LIBLOKI is not set +# BR2_PACKAGE_LIBNPTH is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set +# BR2_PACKAGE_LIBPFM4 is not set +# BR2_PACKAGE_LIBPLIST is not set +BR2_PACKAGE_LIBPTHREAD_STUBS=y +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBPWQUALITY is not set +BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSECCOMP is not set +# BR2_PACKAGE_LIBSIGC is not set +BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBSPATIALINDEX is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTOMMATH is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +BR2_PACKAGE_LIBUNWIND_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBUNWIND is not set +BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBURCU is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LIGHTNING is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LIQUID_DSP is not set +# BR2_PACKAGE_LTTNG_LIBUST is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MPIR is not set +# BR2_PACKAGE_MSGPACK is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET="NEHALEM" +BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS=y +BR2_PACKAGE_OPENBLAS=y +BR2_PACKAGE_OPENBLAS_TARGET="NEHALEM" +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +# BR2_PACKAGE_POCO is not set +BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS=y +# BR2_PACKAGE_PROTOBUF is not set +# BR2_PACKAGE_PROTOBUF_C is not set +# BR2_PACKAGE_QHULL is not set +# BR2_PACKAGE_QLIBC is not set +# BR2_PACKAGE_RIEMANN_C_CLIENT is not set +# BR2_PACKAGE_SHAPELIB is not set +# BR2_PACKAGE_SKALIBS is not set +# BR2_PACKAGE_SPHINXBASE is not set +# BR2_PACKAGE_STARTUP_NOTIFICATION is not set +# BR2_PACKAGE_TINYCBOR is not set + +# +# Security +# +# BR2_PACKAGE_LIBSELINUX is not set +# BR2_PACKAGE_LIBSEMANAGE is not set +# BR2_PACKAGE_LIBSEPOL is not set +# BR2_PACKAGE_SAFECLIB is not set + +# +# Text and terminal handling +# +# BR2_PACKAGE_AUGEAS is not set +# BR2_PACKAGE_ENCHANT is not set +# BR2_PACKAGE_FMT is not set +# BR2_PACKAGE_ICU is not set +# BR2_PACKAGE_LIBCLI is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBUNISTRING is not set +# BR2_PACKAGE_LINENOISE is not set +BR2_PACKAGE_NCURSES=y +BR2_PACKAGE_NCURSES_WCHAR=y +BR2_PACKAGE_NCURSES_TARGET_PROGS=y +# BR2_PACKAGE_NEWT is not set +BR2_PACKAGE_PCRE=y +# BR2_PACKAGE_PCRE_16 is not set +# BR2_PACKAGE_PCRE_32 is not set +BR2_PACKAGE_PCRE_UTF=y +BR2_PACKAGE_PCRE_UCP=y +BR2_PACKAGE_PCRE2=y +BR2_PACKAGE_PCRE2_16=y +# BR2_PACKAGE_PCRE2_32 is not set +# BR2_PACKAGE_POPT is not set +BR2_PACKAGE_READLINE=y +# BR2_PACKAGE_SLANG is not set +# BR2_PACKAGE_TCLAP is not set +# BR2_PACKAGE_USTR is not set + +# +# Mail +# +# BR2_PACKAGE_DOVECOT is not set +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set +# BR2_PACKAGE_SYLPHEED is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +# BR2_PACKAGE_CLAMAV is not set +# BR2_PACKAGE_COLLECTD is not set + +# +# domoticz needs lua >= 5.2 and a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_GNURADIO is not set +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set + +# +# gqrx needs qt5, gnuradio, fftw's single precision +# +# BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_LINUX_SYSCALL_SUPPORT is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_PROJ is not set +BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET=y +# BR2_PACKAGE_QEMU is not set +# BR2_PACKAGE_QPDF is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set +# BR2_PACKAGE_TASKD is not set +BR2_PACKAGE_XUTIL_UTIL_MACROS=y + +# +# Networking applications +# +# BR2_PACKAGE_AIRCRACK_NG is not set +# BR2_PACKAGE_AOETOOLS is not set +# BR2_PACKAGE_APACHE is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARP_SCAN is not set +# BR2_PACKAGE_ARPTABLES is not set +# BR2_PACKAGE_ASTERISK is not set +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BABELD is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BATCTL is not set +# BR2_PACKAGE_BCUSDK is not set +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_BOINC is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_C_ICAP is not set +# BR2_PACKAGE_CAN_UTILS is not set +# BR2_PACKAGE_CANNELLONI is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set + +# +# connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library +# +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CRDA is not set +# BR2_PACKAGE_CTORRENT is not set +# BR2_PACKAGE_CUPS is not set +# BR2_PACKAGE_DANTE is not set +# BR2_PACKAGE_DARKHTTPD is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DRBD_UTILS is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EBTABLES is not set + +# +# ejabberd needs erlang, toolchain w/ C++ +# +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FASTD is not set +# BR2_PACKAGE_FCGIWRAP is not set +# BR2_PACKAGE_FLANNEL is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_FREESWITCH is not set +# BR2_PACKAGE_GESFTPSERVER is not set +# BR2_PACKAGE_GLORYTUN is not set + +# +# gupnp-tools needs libgtk3 +# +# BR2_PACKAGE_HANS is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTTPING is not set +# BR2_PACKAGE_IBRDTN_TOOLS is not set +# BR2_PACKAGE_IBRDTND is not set +# BR2_PACKAGE_IFTOP is not set +BR2_PACKAGE_IFUPDOWN_SCRIPTS=y +# BR2_PACKAGE_IGD2_FOR_LINUX is not set + +# +# igh-ethercat needs a Linux kernel to be built +# +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IODINE is not set +# BR2_PACKAGE_IPERF is not set +# BR2_PACKAGE_IPERF3 is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IRSSI is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_JANUS_GATEWAY is not set +# BR2_PACKAGE_KEEPALIVED is not set +# BR2_PACKAGE_KISMET is not set +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_LEAFNODE2 is not set +# BR2_PACKAGE_LFT is not set +# BR2_PACKAGE_LFTP is not set +# BR2_PACKAGE_LIGHTTPD is not set +# BR2_PACKAGE_LINKNX is not set +# BR2_PACKAGE_LINKS is not set +# BR2_PACKAGE_LINPHONE is not set +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LINUXPTP is not set +# BR2_PACKAGE_LLDPD is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_LYNX is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINIDLNA is not set +# BR2_PACKAGE_MINISSDPD is not set +# BR2_PACKAGE_MJPG_STREAMER is not set + +# +# modemmanager needs udev /dev management and a toolchain w/ wchar, threads +# +BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS=y +# BR2_PACKAGE_MONGREL2 is not set +# BR2_PACKAGE_MONKEY is not set +# BR2_PACKAGE_MOSH is not set +# BR2_PACKAGE_MOSQUITTO is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.2, dynamic library +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGINX is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set +# BR2_PACKAGE_NLOAD is not set +# BR2_PACKAGE_NMAP is not set +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCP6C is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPEN_LLDP is not set +# BR2_PACKAGE_OPEN_PLC_UTILS is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PHYTOOL is not set +# BR2_PACKAGE_PIMD is not set +# BR2_PACKAGE_POUND is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PRIVOXY is not set +# BR2_PACKAGE_PROFTPD is not set + +# +# prosody needs the lua interpreter +# +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_PURE_FTPD is not set +# BR2_PACKAGE_PUTTY is not set +# BR2_PACKAGE_QUAGGA is not set + +# +# rabbitmq-server needs erlang +# +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_RP_PPPOE is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set +# BR2_PACKAGE_RTORRENT is not set +# BR2_PACKAGE_RTPTOOLS is not set +# BR2_PACKAGE_RYGEL is not set +# BR2_PACKAGE_S6_DNS is not set +# BR2_PACKAGE_S6_NETWORKING is not set +# BR2_PACKAGE_SAMBA4 is not set +# BR2_PACKAGE_SCONESERVER is not set +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SHAIRPORT_SYNC is not set +# BR2_PACKAGE_SHELLINABOX is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SNGREP is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SOFTETHER is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set +# BR2_PACKAGE_SQUID is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_SSLH is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINC is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_TOR is not set +# BR2_PACKAGE_TRACEROUTE is not set +# BR2_PACKAGE_TRANSMISSION is not set +# BR2_PACKAGE_TUNCTL is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_UHTTPD is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set +# BR2_PACKAGE_VDR is not set +# BR2_PACKAGE_VNSTAT is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WAVEMON is not set +# BR2_PACKAGE_WIREGUARD is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set +# BR2_PACKAGE_WIRESHARK is not set +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WPAN_TOOLS is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set + +# +# xtables-addons needs a Linux kernel to be built +# +# BR2_PACKAGE_ZNC is not set + +# +# Package managers +# + +# +# ------------------------------------------------------- +# + +# +# Please note: +# + +# +# - Buildroot does *not* generate binary packages, +# + +# +# - Buildroot does *not* install any package database. +# + +# +# * +# + +# +# It is up to you to provide those by yourself if you +# + +# +# want to use any of those package managers. +# + +# +# * +# + +# +# See the manual: +# + +# +# http://buildroot.org/manual.html#faq-no-binary-packages +# + +# +# ------------------------------------------------------- +# +# BR2_PACKAGE_OPKG is not set + +# +# Real-Time +# +BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS=y +# BR2_PACKAGE_XENOMAI is not set + +# +# Security +# +# BR2_PACKAGE_CHECKPOLICY is not set +# BR2_PACKAGE_PAXTEST is not set +# BR2_PACKAGE_POLICYCOREUTILS is not set +# BR2_PACKAGE_REFPOLICY is not set +# BR2_PACKAGE_RESTORECOND is not set +# BR2_PACKAGE_SELINUX_PYTHON is not set +# BR2_PACKAGE_SEMODULE_UTILS is not set +# BR2_PACKAGE_SETOOLS is not set + +# +# Shell and utilities +# + +# +# Shells +# +# BR2_PACKAGE_MKSH is not set + +# +# Utilities +# +# BR2_PACKAGE_AT is not set +BR2_PACKAGE_AUTO_GETTY_SUPPORT=y +BR2_PACKAGE_AUTO_GETTY=y +BR2_PACKAGE_AUTO_GETTY_ROOT_LOGIN=y +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_EASY_RSA is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PDMENU is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_RANGER is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_XMLSTARLET is not set +# BR2_PACKAGE_XXHASH is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ANDROID_TOOLS is not set +# BR2_PACKAGE_ATOP is not set +# BR2_PACKAGE_ATTR is not set +BR2_PACKAGE_AUDIT_ARCH_SUPPORTS=y +# BR2_PACKAGE_AUDIT is not set +# BR2_PACKAGE_CGROUPFS_MOUNT is not set + +# +# circus needs Python and a toolchain w/ C++, threads +# +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_DAEMON is not set +# BR2_PACKAGE_DC3DD is not set +# BR2_PACKAGE_DDRESCUE is not set +# BR2_PACKAGE_DOCKER_CONTAINERD is not set +# BR2_PACKAGE_DOCKER_ENGINE is not set +# BR2_PACKAGE_DOCKER_PROXY is not set +# BR2_PACKAGE_EFIBOOTMGR is not set +BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS=y +# BR2_PACKAGE_EFIVAR is not set + +# +# emlog needs a Linux kernel to be built +# +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_GETENT is not set +BR2_PACKAGE_HTOP=y +BR2_PACKAGE_INITSCRIPTS=y + +# +# iotop depends on python or python3 +# +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_IRQBALANCE is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_KVMTOOL is not set +# BR2_PACKAGE_LIBOSTREE is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MONIT is not set +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NUMACTL is not set +# BR2_PACKAGE_NUT is not set +# BR2_PACKAGE_OPENVMTOOLS is not set +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PROCRANK_LINUX is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_RAUC is not set +# BR2_PACKAGE_RUNC is not set +# BR2_PACKAGE_S6 is not set +# BR2_PACKAGE_S6_LINUX_INIT is not set +# BR2_PACKAGE_S6_LINUX_UTILS is not set +# BR2_PACKAGE_S6_PORTABLE_UTILS is not set +# BR2_PACKAGE_S6_RC is not set +# BR2_PACKAGE_SCRUB is not set +# BR2_PACKAGE_SCRYPT is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs the python interpreter +# +# BR2_PACKAGE_SWUPDATE is not set +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_TPM_TOOLS is not set +# BR2_PACKAGE_UNSCD is not set +BR2_PACKAGE_UTIL_LINUX=y +BR2_PACKAGE_UTIL_LINUX_LIBBLKID=y +# BR2_PACKAGE_UTIL_LINUX_LIBFDISK is not set +BR2_PACKAGE_UTIL_LINUX_LIBMOUNT=y +# BR2_PACKAGE_UTIL_LINUX_LIBSMARTCOLS is not set +BR2_PACKAGE_UTIL_LINUX_LIBUUID=y +# BR2_PACKAGE_UTIL_LINUX_BINARIES is not set +# BR2_PACKAGE_UTIL_LINUX_AGETTY is not set +# BR2_PACKAGE_UTIL_LINUX_BFS is not set +# BR2_PACKAGE_UTIL_LINUX_CAL is not set +# BR2_PACKAGE_UTIL_LINUX_CHFN_CHSH is not set +# BR2_PACKAGE_UTIL_LINUX_CHMEM is not set +# BR2_PACKAGE_UTIL_LINUX_CRAMFS is not set +# BR2_PACKAGE_UTIL_LINUX_EJECT is not set +# BR2_PACKAGE_UTIL_LINUX_FALLOCATE is not set +# BR2_PACKAGE_UTIL_LINUX_FDFORMAT is not set +# BR2_PACKAGE_UTIL_LINUX_FSCK is not set +# BR2_PACKAGE_UTIL_LINUX_HWCLOCK is not set +# BR2_PACKAGE_UTIL_LINUX_IPCRM is not set +# BR2_PACKAGE_UTIL_LINUX_IPCS is not set +# BR2_PACKAGE_UTIL_LINUX_KILL is not set +# BR2_PACKAGE_UTIL_LINUX_LAST is not set +# BR2_PACKAGE_UTIL_LINUX_LINE is not set +# BR2_PACKAGE_UTIL_LINUX_LOGGER is not set +# BR2_PACKAGE_UTIL_LINUX_LOGIN is not set +# BR2_PACKAGE_UTIL_LINUX_LOSETUP is not set +# BR2_PACKAGE_UTIL_LINUX_LSLOGINS is not set +# BR2_PACKAGE_UTIL_LINUX_LSMEM is not set +# BR2_PACKAGE_UTIL_LINUX_MESG is not set +# BR2_PACKAGE_UTIL_LINUX_MINIX is not set +# BR2_PACKAGE_UTIL_LINUX_MORE is not set +# BR2_PACKAGE_UTIL_LINUX_MOUNT is not set +# BR2_PACKAGE_UTIL_LINUX_MOUNTPOINT is not set +# BR2_PACKAGE_UTIL_LINUX_NEWGRP is not set +# BR2_PACKAGE_UTIL_LINUX_NOLOGIN is not set +# BR2_PACKAGE_UTIL_LINUX_NSENTER is not set +# BR2_PACKAGE_UTIL_LINUX_PG is not set +# BR2_PACKAGE_UTIL_LINUX_PARTX is not set +# BR2_PACKAGE_UTIL_LINUX_PIVOT_ROOT is not set +# BR2_PACKAGE_UTIL_LINUX_RAW is not set +# BR2_PACKAGE_UTIL_LINUX_RENAME is not set +# BR2_PACKAGE_UTIL_LINUX_RFKILL is not set +# BR2_PACKAGE_UTIL_LINUX_RUNUSER is not set +# BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS is not set +# BR2_PACKAGE_UTIL_LINUX_SETPRIV is not set +# BR2_PACKAGE_UTIL_LINUX_SETTERM is not set +# BR2_PACKAGE_UTIL_LINUX_SU is not set +# BR2_PACKAGE_UTIL_LINUX_SULOGIN is not set +# BR2_PACKAGE_UTIL_LINUX_SWITCH_ROOT is not set +# BR2_PACKAGE_UTIL_LINUX_TUNELP is not set +# BR2_PACKAGE_UTIL_LINUX_UL is not set +# BR2_PACKAGE_UTIL_LINUX_UNSHARE is not set +# BR2_PACKAGE_UTIL_LINUX_UTMPDUMP is not set +# BR2_PACKAGE_UTIL_LINUX_UUIDD is not set +# BR2_PACKAGE_UTIL_LINUX_VIPW is not set +# BR2_PACKAGE_UTIL_LINUX_WALL is not set +# BR2_PACKAGE_UTIL_LINUX_WDCTL is not set +# BR2_PACKAGE_UTIL_LINUX_WRITE is not set +# BR2_PACKAGE_UTIL_LINUX_ZRAMCTL is not set +BR2_PACKAGE_XVISOR_ARCH_SUPPORTS=y +# BR2_PACKAGE_XVISOR is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_MC is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_AXFS is not set +# BR2_TARGET_ROOTFS_CLOOP is not set +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_NONE=y +# BR2_TARGET_ROOTFS_CPIO_GZIP is not set +# BR2_TARGET_ROOTFS_CPIO_BZIP2 is not set +# BR2_TARGET_ROOTFS_CPIO_LZ4 is not set +# BR2_TARGET_ROOTFS_CPIO_LZMA is not set +# BR2_TARGET_ROOTFS_CPIO_LZO is not set +# BR2_TARGET_ROOTFS_CPIO_XZ is not set +# BR2_TARGET_ROOTFS_CPIO_UIMAGE is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EXT2 is not set + +# +# initramfs needs a Linux kernel to be built +# + +# +# iso image needs a Linux kernel and either grub2 i386-pc or isolinux to be built +# +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +# BR2_TARGET_ROOTFS_TAR is not set +# BR2_TARGET_ROOTFS_UBI is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +BR2_TARGET_GRUB2_ARCH_SUPPORTS=y +# BR2_TARGET_GRUB2 is not set +# BR2_TARGET_GUMMIBOOT is not set +# BR2_TARGET_SYSLINUX is not set +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_AESPIPE is not set +# BR2_PACKAGE_HOST_ANDROID_TOOLS is not set +# BR2_PACKAGE_HOST_CHECKPOLICY is not set +BR2_PACKAGE_HOST_CMAKE=y +# BR2_PACKAGE_HOST_CRAMFS is not set +# BR2_PACKAGE_HOST_CRYPTSETUP is not set +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_DTC is not set +# BR2_PACKAGE_HOST_E2FSPROGS is not set +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_FAKETIME is not set +# BR2_PACKAGE_HOST_FWUP is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_GNUPG is not set +BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS=y +BR2_PACKAGE_HOST_GO_BOOTSTRAP_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_GPTFDISK is not set +# BR2_PACKAGE_HOST_JQ is not set +# BR2_PACKAGE_HOST_JSMIN is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_LTTNG_BABELTRACE is not set +# BR2_PACKAGE_HOST_MKPASSWD is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_OPKG_UTILS is not set +# BR2_PACKAGE_HOST_PARTED is not set +BR2_PACKAGE_HOST_PATCHELF=y +BR2_PACKAGE_HOST_PKGCONF=y +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_PYTHON_LXML is not set +# BR2_PACKAGE_HOST_PYTHON_SIX is not set +# BR2_PACKAGE_HOST_QEMU is not set +# BR2_PACKAGE_HOST_RAUC is not set +BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_RUSTC_ARCH="x86_64" +# BR2_PACKAGE_HOST_RUSTC is not set +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +# BR2_PACKAGE_HOST_UTIL_LINUX is not set +# BR2_PACKAGE_HOST_VBOOT_UTILS is not set +# BR2_PACKAGE_HOST_XORRISO is not set +# BR2_PACKAGE_HOST_ZIP is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2018.02 +# +# BR2_PACKAGE_TRANSMISSION_REMOTE is not set +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_BINUTILS_VERSION_2_27_X is not set +# BR2_PACKAGE_EEPROG is not set +# BR2_PACKAGE_GNUPG2_GPGV2 is not set +# BR2_PACKAGE_IMX_GPU_VIV_APITRACE is not set +# BR2_PACKAGE_IMX_GPU_VIV_G2D is not set + +# +# Legacy options removed in 2017.11 +# +# BR2_PACKAGE_RFKILL is not set +# BR2_PACKAGE_UTIL_LINUX_RESET is not set +# BR2_PACKAGE_POLICYCOREUTILS_AUDIT2ALLOW is not set +# BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND is not set +# BR2_PACKAGE_SEPOLGEN is not set +# BR2_PACKAGE_OPENOBEX_BLUEZ is not set +# BR2_PACKAGE_OPENOBEX_LIBUSB is not set +# BR2_PACKAGE_OPENOBEX_APPS is not set +# BR2_PACKAGE_OPENOBEX_SYSLOG is not set +# BR2_PACKAGE_OPENOBEX_DUMP is not set +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS is not set + +# +# Legacy options removed in 2017.08 +# +# BR2_TARGET_GRUB is not set +# BR2_PACKAGE_SIMICSFS is not set +# BR2_BINUTILS_VERSION_2_26_X is not set +BR2_XTENSA_OVERLAY_DIR="" +BR2_XTENSA_CUSTOM_NAME="" +# BR2_PACKAGE_HOST_MKE2IMG is not set +BR2_TARGET_ROOTFS_EXT2_BLOCKS=0 +BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES=0 +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DATAURISRC is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOMEASURE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MAD is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC is not set +# BR2_STRIP_none is not set +# BR2_PACKAGE_BEECRYPT_CPP is not set +# BR2_PACKAGE_SPICE_CLIENT is not set +# BR2_PACKAGE_SPICE_GUI is not set +# BR2_PACKAGE_SPICE_TUNNEL is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH is not set +# BR2_PACKAGE_INPUT_TOOLS_JSCAL is not set +# BR2_PACKAGE_INPUT_TOOLS_JSTEST is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 is not set +# BR2_GCC_VERSION_4_8_X is not set + +# +# Legacy options removed in 2017.05 +# +# BR2_PACKAGE_SUNXI_MALI_R2P4 is not set +# BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT is not set +# BR2_PACKAGE_NODEJS_MODULES_EXPRESS is not set +# BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL is not set +# BR2_PACKAGE_OPENOCD_FT2XXX is not set +# BR2_PACKAGE_KODI_RTMPDUMP is not set +# BR2_PACKAGE_KODI_VISUALISATION_FOUNTAIN is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_BINUTILS_VERSION_2_25_X is not set +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS=0 +# BR2_PACKAGE_SYSTEMD_KDBUS is not set +# BR2_PACKAGE_POLARSSL is not set +# BR2_NBD_CLIENT is not set +# BR2_NBD_SERVER is not set +# BR2_PACKAGE_GMOCK is not set +# BR2_KERNEL_HEADERS_4_8 is not set +# BR2_KERNEL_HEADERS_3_18 is not set +# BR2_GLIBC_VERSION_2_22 is not set + +# +# Legacy options removed in 2017.02 +# +# BR2_PACKAGE_PERL_DB_FILE is not set +# BR2_KERNEL_HEADERS_4_7 is not set +# BR2_KERNEL_HEADERS_4_6 is not set +# BR2_KERNEL_HEADERS_4_5 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +# BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +# BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A is not set +# BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_GDB_VERSION_7_9 is not set + +# +# Legacy options removed in 2016.11 +# +# BR2_PACKAGE_PHP_SAPI_CLI_CGI is not set +# BR2_PACKAGE_PHP_SAPI_CLI_FPM is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_WEBKITGTK24 is not set +# BR2_PACKAGE_TORSMO is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_KERNEL_HEADERS_4_3 is not set +# BR2_KERNEL_HEADERS_4_2 is not set +# BR2_PACKAGE_KODI_ADDON_XVDR is not set +# BR2_PACKAGE_IPKG is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_BINUTILS_VERSION_2_24_X is not set +# BR2_PACKAGE_WESTON_RPI is not set +# BR2_GCC_VERSION_4_8_ARC is not set +# BR2_KERNEL_HEADERS_4_0 is not set +# BR2_KERNEL_HEADERS_3_19 is not set +# BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS is not set +# BR2_PACKAGE_ELEMENTARY is not set +# BR2_LINUX_KERNEL_CUSTOM_LOCAL is not set + +# +# Legacy options removed in 2016.08 +# +# BR2_PACKAGE_EFL_JP2K is not set +# BR2_PACKAGE_SYSTEMD_COMPAT is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIVEADDER is not set +# BR2_PACKAGE_LIBFSLVPUWRAP is not set +# BR2_PACKAGE_LIBFSLPARSER is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT is not set +# BR2_PTHREADS_OLD is not set +# BR2_BINUTILS_VERSION_2_23_X is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_GDB_VERSION_7_8 is not set + +# +# Legacy options removed in 2016.05 +# +# BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL is not set +# BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPG123 is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC_E500V2 is not set +# BR2_x86_i386 is not set +# BR2_PACKAGE_QT5QUICK1 is not set +BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR="" +# BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID is not set +# BR2_KERNEL_HEADERS_3_17 is not set +# BR2_GDB_VERSION_7_7 is not set +# BR2_PACKAGE_FOOMATIC_FILTERS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_KODI_WAVPACK is not set +# BR2_PACKAGE_KODI_RSXS is not set +# BR2_PACKAGE_KODI_GOOM is not set +# BR2_PACKAGE_SYSTEMD_ALL_EXTRAS is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_PACKAGE_SQLITE_READLINE is not set + +# +# Legacy options removed in 2016.02 +# +# BR2_PACKAGE_DOVECOT_BZIP2 is not set +# BR2_PACKAGE_DOVECOT_ZLIB is not set +# BR2_PACKAGE_E2FSPROGS_FINDFS is not set +# BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL is not set +# BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE is not set +# BR2_PACKAGE_OPENPOWERLINK_LIBPCAP is not set +# BR2_LINUX_KERNEL_SAME_AS_HEADERS is not set +# BR2_PACKAGE_CUPS_PDFTOPS is not set +# BR2_KERNEL_HEADERS_3_16 is not set +# BR2_PACKAGE_PYTHON_PYXML is not set +# BR2_ENABLE_SSP is not set +# BR2_PACKAGE_DIRECTFB_CLE266 is not set +# BR2_PACKAGE_DIRECTFB_UNICHROME is not set +# BR2_PACKAGE_LIBELEMENTARY is not set +# BR2_PACKAGE_LIBEINA is not set +# BR2_PACKAGE_LIBEET is not set +# BR2_PACKAGE_LIBEVAS is not set +# BR2_PACKAGE_LIBECORE is not set +# BR2_PACKAGE_LIBEDBUS is not set +# BR2_PACKAGE_LIBEFREET is not set +# BR2_PACKAGE_LIBEIO is not set +# BR2_PACKAGE_LIBEMBRYO is not set +# BR2_PACKAGE_LIBEDJE is not set +# BR2_PACKAGE_LIBETHUMB is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_BR2_PACKAGE_NODEJS_0_10_X is not set +# BR2_BR2_PACKAGE_NODEJS_0_12_X is not set +# BR2_BR2_PACKAGE_NODEJS_4_X is not set + +# +# Legacy options removed in 2015.11 +# +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REAL is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_SCHIFRA is not set +# BR2_PACKAGE_ZXING is not set +# BR2_PACKAGE_BLACKBOX is not set +# BR2_KERNEL_HEADERS_3_0 is not set +# BR2_KERNEL_HEADERS_3_11 is not set +# BR2_KERNEL_HEADERS_3_13 is not set +# BR2_KERNEL_HEADERS_3_15 is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_BLTLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_CPULOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DATABUFFER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DIOLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DOK is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DRIVERTEST is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FIRE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FLIP is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FONTS is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_INPUT is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_JOYSTICK is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_KNUCKLES is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_LAYER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX_WATER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_NEO is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_NETLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PALETTE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PARTICLE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PORTER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_STRESS is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_TEXTURE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO_PARTICLE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_WINDOW is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_SAWMAN is not set +# BR2_PACKAGE_DIVINE is not set + +# +# Legacy options removed in 2015.08 +# +# BR2_PACKAGE_KODI_PVR_ADDONS is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +# BR2_BINUTILS_VERSION_2_24 is not set +# BR2_BINUTILS_VERSION_2_25 is not set +# BR2_PACKAGE_PERF is not set +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_PACKAGE_GPU_VIV_BIN_MX6Q is not set +# BR2_TARGET_UBOOT_NETWORK is not set + +# +# Legacy options removed in 2015.05 +# +# BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_512_16K is not set +# BR2_TARGET_ROOTFS_JFFS2_NANDFLASH_2K_128K is not set +# BR2_PACKAGE_MONO_20 is not set +# BR2_PACKAGE_MONO_40 is not set +# BR2_PACKAGE_MONO_45 is not set +# BR2_CIVETWEB_WITH_LUA is not set +# BR2_PACKAGE_TIFF_TIFF2PDF is not set +# BR2_PACKAGE_TIFF_TIFFCP is not set +# BR2_LINUX_KERNEL_EXT_RTAI_PATCH is not set +# BR2_TARGET_GENERIC_PASSWD_DES is not set +# BR2_PACKAGE_GTK2_THEME_HICOLOR is not set +# BR2_PACKAGE_VALGRIND_PTRCHECK is not set + +# +# Legacy options removed in 2015.02 +# +# BR2_PACKAGE_LIBGC is not set +# BR2_PACKAGE_WDCTL is not set +# BR2_PACKAGE_UTIL_LINUX_ARCH is not set +# BR2_PACKAGE_UTIL_LINUX_DDATE is not set +# BR2_PACKAGE_RPM_BZIP2_PAYLOADS is not set +# BR2_PACKAGE_RPM_XZ_PAYLOADS is not set +# BR2_PACKAGE_M4 is not set +# BR2_PACKAGE_FLEX_BINARY is not set +# BR2_PACKAGE_BISON is not set +# BR2_PACKAGE_GOB2 is not set +# BR2_PACKAGE_DISTCC is not set +# BR2_PACKAGE_HASERL_VERSION_0_8_X is not set +# BR2_PACKAGE_STRONGSWAN_TOOLS is not set +# BR2_PACKAGE_XBMC_ADDON_XVDR is not set +# BR2_PACKAGE_XBMC_PVR_ADDONS is not set +# BR2_PACKAGE_XBMC is not set +# BR2_PACKAGE_XBMC_ALSA_LIB is not set +# BR2_PACKAGE_XBMC_AVAHI is not set +# BR2_PACKAGE_XBMC_DBUS is not set +# BR2_PACKAGE_XBMC_LIBBLURAY is not set +# BR2_PACKAGE_XBMC_GOOM is not set +# BR2_PACKAGE_XBMC_RSXS is not set +# BR2_PACKAGE_XBMC_LIBCEC is not set +# BR2_PACKAGE_XBMC_LIBMICROHTTPD is not set +# BR2_PACKAGE_XBMC_LIBNFS is not set +# BR2_PACKAGE_XBMC_RTMPDUMP is not set +# BR2_PACKAGE_XBMC_LIBSHAIRPLAY is not set +# BR2_PACKAGE_XBMC_LIBSMBCLIENT is not set +# BR2_PACKAGE_XBMC_LIBTHEORA is not set +# BR2_PACKAGE_XBMC_LIBUSB is not set +# BR2_PACKAGE_XBMC_LIBVA is not set +# BR2_PACKAGE_XBMC_WAVPACK is not set +# BR2_PREFER_STATIC_LIB is not set + +# +# Legacy options removed in 2014.11 +# +# BR2_x86_generic is not set +# BR2_GCC_VERSION_4_4_X is not set +# BR2_sparc_sparchfleon is not set +# BR2_sparc_sparchfleonv8 is not set +# BR2_sparc_sparcsfleon is not set +# BR2_sparc_sparcsfleonv8 is not set +# BR2_PACKAGE_XLIB_LIBPCIACCESS is not set +# BR2_PACKAGE_LINUX_FIRMWARE_XC5000 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_7 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160_7260_8 is not set + +# +# Legacy options removed in 2014.08 +# +# BR2_PACKAGE_LIBELF is not set +# BR2_KERNEL_HEADERS_3_8 is not set +# BR2_PACKAGE_GETTEXT_TOOLS is not set +# BR2_PACKAGE_PROCPS is not set +# BR2_BINUTILS_VERSION_2_20_1 is not set +# BR2_BINUTILS_VERSION_2_21 is not set +# BR2_BINUTILS_VERSION_2_23_1 is not set +# BR2_UCLIBC_VERSION_0_9_32 is not set +# BR2_GCC_VERSION_4_3_X is not set +# BR2_GCC_VERSION_4_6_X is not set +# BR2_GDB_VERSION_7_4 is not set +# BR2_GDB_VERSION_7_5 is not set +# BR2_BUSYBOX_VERSION_1_19_X is not set +# BR2_BUSYBOX_VERSION_1_20_X is not set +# BR2_BUSYBOX_VERSION_1_21_X is not set +# BR2_PACKAGE_LIBV4L_DECODE_TM6000 is not set +# BR2_PACKAGE_LIBV4L_IR_KEYTABLE is not set +# BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE is not set +# BR2_PACKAGE_LIBV4L_V4L2_CTL is not set +# BR2_PACKAGE_LIBV4L_V4L2_DBG is not set + +# +# Legacy options removed in 2014.05 +# +# BR2_PACKAGE_EVTEST_CAPTURE is not set +# BR2_KERNEL_HEADERS_3_6 is not set +# BR2_KERNEL_HEADERS_3_7 is not set +# BR2_PACKAGE_VALA is not set +BR2_PACKAGE_TZDATA_ZONELIST="" +# BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE is not set +# BR2_PACKAGE_LUA_INTERPRETER_READLINE is not set +# BR2_PACKAGE_LUA_INTERPRETER_LINENOISE is not set +# BR2_PACKAGE_DVB_APPS_UTILS is not set +# BR2_KERNEL_HEADERS_SNAP is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV is not set +# BR2_PACKAGE_UDEV is not set +# BR2_PACKAGE_UDEV_RULES_GEN is not set +# BR2_PACKAGE_UDEV_ALL_EXTRAS is not set +# BR2_PACKAGE_XLIB_LIBPTHREAD_STUBS is not set + +# +# Legacy options removed in 2014.02 +# +# BR2_sh2 is not set +# BR2_sh3 is not set +# BR2_sh3eb is not set +# BR2_KERNEL_HEADERS_3_1 is not set +# BR2_KERNEL_HEADERS_3_3 is not set +# BR2_KERNEL_HEADERS_3_5 is not set +# BR2_GDB_VERSION_7_2 is not set +# BR2_GDB_VERSION_7_3 is not set +# BR2_PACKAGE_CCACHE is not set +# BR2_HAVE_DOCUMENTATION is not set +# BR2_PACKAGE_AUTOMAKE is not set +# BR2_PACKAGE_AUTOCONF is not set +# BR2_PACKAGE_XSTROKE is not set +# BR2_PACKAGE_LZMA is not set +# BR2_PACKAGE_TTCP is not set +# BR2_PACKAGE_LIBNFC_LLCP is not set +# BR2_PACKAGE_MYSQL_CLIENT is not set +# BR2_PACKAGE_SQUASHFS3 is not set +# BR2_TARGET_ROOTFS_SQUASHFS3 is not set +# BR2_PACKAGE_NETKITBASE is not set +# BR2_PACKAGE_NETKITTELNET is not set +# BR2_PACKAGE_LUASQL is not set +# BR2_PACKAGE_LUACJSON is not set + +# +# Legacy options removed in 2013.11 +# +# BR2_PACKAGE_LVM2_DMSETUP_ONLY is not set +# BR2_PACKAGE_QT_JAVASCRIPTCORE is not set +# BR2_PACKAGE_MODULE_INIT_TOOLS is not set +BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL="" +BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION="" +BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL="" +BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION="" + +# +# Legacy options removed in 2013.08 +# +# BR2_ARM_OABI is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSCK is not set +# BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL is not set +# BR2_PACKAGE_DOSFSTOOLS_MKDOSFS is not set +# BR2_ELF2FLT is not set +# BR2_VFP_FLOAT is not set +# BR2_PACKAGE_GCC_TARGET is not set +# BR2_HAVE_DEVFILES is not set + +# +# Legacy options removed in 2013.05 +# +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 is not set +# BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 is not set diff --git a/rootfs/create_img.sh b/rootfs/create_img.sh new file mode 100755 index 0000000..01f7617 --- /dev/null +++ b/rootfs/create_img.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +if [ $# -ne 1 ]; then + echo "Please provide the name of the flash image" + exit 0 +fi + +#create image first +dd if=/dev/zero of=$1 bs=1G count=1 +DEVLOOP=$(sudo losetup --partscan --find --show $1) + +#create the partition this way +(echo o; echo n; echo p; echo; echo; echo; echo; echo; echo w) | sudo fdisk $DEVLOOP; + +sudo mkfs.ext4 ${DEVLOOP}p1 +#sudo losetup -d $DEVLOOP diff --git a/rootfs/deploy.sh b/rootfs/deploy.sh new file mode 100755 index 0000000..5d18f10 --- /dev/null +++ b/rootfs/deploy.sh @@ -0,0 +1,8 @@ +#!/bin/bash +make +./mount.sh +./mount_cpio.sh +sudo rm -rf fs/* +sudo cp -r initrd/* fs/ +./umount_cpio.sh +./umount.sh diff --git a/rootfs/mount.sh b/rootfs/mount.sh new file mode 100755 index 0000000..2c70f07 --- /dev/null +++ b/rootfs/mount.sh @@ -0,0 +1,22 @@ +#!/bin/bash +DEVLOOP=$(sudo losetup --partscan --find --show rootfs.img) +FS_IMG=rootfs.img +SCRIPT_IMG=./create_img.sh + +if [ ! -f $FS_IMG ]; then + echo "Creating image"sh $FS_IMG + bash $SCRIPT_IMG $FS_IMG + + if [ $? -ne 0 ]; then + echo "Error while creating image" + exit 1 + fi + sleep 1 +fi + +#sudo losetup -P --find --show flash +mkdir -p fs + + +sudo mount ${DEVLOOP}p1 fs + diff --git a/rootfs/mount_cpio.sh b/rootfs/mount_cpio.sh new file mode 100755 index 0000000..ede783b --- /dev/null +++ b/rootfs/mount_cpio.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +echo "-------------------mount cpio---------------" +../tools/mount_cpio $PWD/images/rootfs.cpio diff --git a/rootfs/mount_initrd.sh b/rootfs/mount_initrd.sh new file mode 100755 index 0000000..760dfcb --- /dev/null +++ b/rootfs/mount_initrd.sh @@ -0,0 +1,5 @@ +#!/bin/bash +echo "Usage: ./mount_initrd " +echo "Here: board is $1" +echo "-------------------mount initrd ---------------" +../tools/mount_cpio $PWD/board/$1/initrd.cpio diff --git a/rootfs/patches/readline/0001_rl_message_prototype.patch b/rootfs/patches/readline/0001_rl_message_prototype.patch new file mode 100644 index 0000000..8b6156d --- /dev/null +++ b/rootfs/patches/readline/0001_rl_message_prototype.patch @@ -0,0 +1,13 @@ +diff --git a/readline.h b/readline.h +index 66c03f8..27b3c01 100644 +--- a/readline.h ++++ b/readline.h +@@ -387,7 +387,7 @@ extern int rl_crlf PARAMS((void)); + #if defined (USE_VARARGS) && defined (PREFER_STDARG) + extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2))); + #else +-extern int rl_message (); ++extern int rl_message (void); + #endif + + extern int rl_show_char PARAMS((int)); diff --git a/rootfs/try.c b/rootfs/try.c new file mode 100644 index 0000000..40bb669 --- /dev/null +++ b/rootfs/try.c @@ -0,0 +1,42 @@ + +/* + * Just a simple example to access aflib functions + * Execute trycomp script to compile it. + * The binary will be deployed in the root dir of the rootfs. + */ + +#include +#include +#include + +#include + +extern int get_pins(); + +int main(int argc, char *argv[]) { + hal_pin_t *thePin; + void *pin_data_ptr; + + float f; + + printf("## initializing AF lib.\n"); + af_init(); + + pin_new("onepin", HAL_S32, HAL_IO); + pin_new("otherpin", HAL_BIT, HAL_OUT); + + //printf("Retrieving now streamer.0.pin.0\n"); + printf("Retrieving onepin\n"); + thePin = pin_find_by_name("onepin"); + + printf("## resulting : %s\n", thePin->name); + + printf("## value of this pin: %d\n", pin_get_value(thePin)->s); + + pin_get_value(thePin)->s = 26; + + printf("## value of this pin: %d\n", pin_get_value(thePin)->s); + + pin_delete("onepin"); + +} diff --git a/rootfs/trycomp b/rootfs/trycomp new file mode 100755 index 0000000..f590fd6 --- /dev/null +++ b/rootfs/trycomp @@ -0,0 +1,4 @@ +gcc -no-pie try.c -o try -I ../usr/include -I ../linux-4.14-amp/include/opencn -L ../usr/build/lib -lopencn +cp try target/root/ + + diff --git a/rootfs/umount.sh b/rootfs/umount.sh new file mode 100755 index 0000000..e3543b2 --- /dev/null +++ b/rootfs/umount.sh @@ -0,0 +1,3 @@ +#!/bin/bash +sudo umount fs +sudo losetup -D diff --git a/rootfs/umount_cpio.sh b/rootfs/umount_cpio.sh new file mode 100755 index 0000000..8ebe464 --- /dev/null +++ b/rootfs/umount_cpio.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +../tools/umount_cpio $PWD/images/rootfs.cpio + diff --git a/rootfs/umount_initrd.sh b/rootfs/umount_initrd.sh new file mode 100755 index 0000000..91d0dff --- /dev/null +++ b/rootfs/umount_initrd.sh @@ -0,0 +1,5 @@ +#!/bin/bash +echo "Usage: ./umount_initrd " +echo "Here: board is $1" +../tools/umount_cpio $PWD/board/$1/initrd.cpio + diff --git a/rootfs/usb/boot/grub/font.pf2 b/rootfs/usb/boot/grub/font.pf2 new file mode 100755 index 0000000..48be6f2 Binary files /dev/null and b/rootfs/usb/boot/grub/font.pf2 differ diff --git a/rootfs/usb/boot/grub/fonts/unicode.pf2 b/rootfs/usb/boot/grub/fonts/unicode.pf2 new file mode 100755 index 0000000..e861bff Binary files /dev/null and b/rootfs/usb/boot/grub/fonts/unicode.pf2 differ diff --git a/rootfs/usb/boot/grub/grub.cfg b/rootfs/usb/boot/grub/grub.cfg new file mode 100755 index 0000000..4c056d1 --- /dev/null +++ b/rootfs/usb/boot/grub/grub.cfg @@ -0,0 +1,17 @@ + +if loadfont /boot/grub/font.pf2 ; then + set gfxmode=auto + insmod efi_gop + insmod efi_uga + insmod gfxterm + terminal_output gfxterm +fi + +set menu_color_normal=white/black +set menu_color_highlight=black/light-gray + +set timeout=5 +menuentry "OpenCN Linux-AMP bootstrap" { + set gfxpayload=keep + linux /boot/bzImage earlyprintk=vga,keep +} diff --git a/rootfs/usb/boot/grub/grubenv b/rootfs/usb/boot/grub/grubenv new file mode 100755 index 0000000..f93ccbf --- /dev/null +++ b/rootfs/usb/boot/grub/grubenv @@ -0,0 +1,2 @@ +# GRUB Environment Block +####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### \ No newline at end of file diff --git a/rootfs/usb/boot/grub/i386-pc/915resolution.mod b/rootfs/usb/boot/grub/i386-pc/915resolution.mod new file mode 100755 index 0000000..a03f353 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/915resolution.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/acpi.mod b/rootfs/usb/boot/grub/i386-pc/acpi.mod new file mode 100755 index 0000000..01afc9e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/acpi.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/adler32.mod b/rootfs/usb/boot/grub/i386-pc/adler32.mod new file mode 100755 index 0000000..4532cba Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/adler32.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/affs.mod b/rootfs/usb/boot/grub/i386-pc/affs.mod new file mode 100755 index 0000000..0d015da Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/affs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/afs.mod b/rootfs/usb/boot/grub/i386-pc/afs.mod new file mode 100755 index 0000000..aefe989 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/afs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ahci.mod b/rootfs/usb/boot/grub/i386-pc/ahci.mod new file mode 100755 index 0000000..dff837e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ahci.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/all_video.mod b/rootfs/usb/boot/grub/i386-pc/all_video.mod new file mode 100755 index 0000000..8462964 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/all_video.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/aout.mod b/rootfs/usb/boot/grub/i386-pc/aout.mod new file mode 100755 index 0000000..521e441 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/aout.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/archelp.mod b/rootfs/usb/boot/grub/i386-pc/archelp.mod new file mode 100755 index 0000000..84a5273 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/archelp.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/at_keyboard.mod b/rootfs/usb/boot/grub/i386-pc/at_keyboard.mod new file mode 100755 index 0000000..b53f964 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/at_keyboard.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ata.mod b/rootfs/usb/boot/grub/i386-pc/ata.mod new file mode 100755 index 0000000..a19ff20 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ata.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/backtrace.mod b/rootfs/usb/boot/grub/i386-pc/backtrace.mod new file mode 100755 index 0000000..b7fca78 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/backtrace.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/bfs.mod b/rootfs/usb/boot/grub/i386-pc/bfs.mod new file mode 100755 index 0000000..9ff0659 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/bfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/biosdisk.mod b/rootfs/usb/boot/grub/i386-pc/biosdisk.mod new file mode 100755 index 0000000..353f63d Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/biosdisk.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/bitmap.mod b/rootfs/usb/boot/grub/i386-pc/bitmap.mod new file mode 100755 index 0000000..2296fde Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/bitmap.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/bitmap_scale.mod b/rootfs/usb/boot/grub/i386-pc/bitmap_scale.mod new file mode 100755 index 0000000..088bef9 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/bitmap_scale.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/blocklist.mod b/rootfs/usb/boot/grub/i386-pc/blocklist.mod new file mode 100755 index 0000000..6060007 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/blocklist.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/boot.img b/rootfs/usb/boot/grub/i386-pc/boot.img new file mode 100755 index 0000000..424c44b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/boot.img differ diff --git a/rootfs/usb/boot/grub/i386-pc/boot.mod b/rootfs/usb/boot/grub/i386-pc/boot.mod new file mode 100755 index 0000000..0c01626 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/boot.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/boot_hybrid.img b/rootfs/usb/boot/grub/i386-pc/boot_hybrid.img new file mode 100755 index 0000000..d3c6340 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/boot_hybrid.img differ diff --git a/rootfs/usb/boot/grub/i386-pc/bsd.mod b/rootfs/usb/boot/grub/i386-pc/bsd.mod new file mode 100755 index 0000000..12478c8 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/bsd.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/bswap_test.mod b/rootfs/usb/boot/grub/i386-pc/bswap_test.mod new file mode 100755 index 0000000..b0eac5a Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/bswap_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/btrfs.mod b/rootfs/usb/boot/grub/i386-pc/btrfs.mod new file mode 100755 index 0000000..1d87d6d Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/btrfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/bufio.mod b/rootfs/usb/boot/grub/i386-pc/bufio.mod new file mode 100755 index 0000000..a53452e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/bufio.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cat.mod b/rootfs/usb/boot/grub/i386-pc/cat.mod new file mode 100755 index 0000000..4e0a4f5 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cat.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cbfs.mod b/rootfs/usb/boot/grub/i386-pc/cbfs.mod new file mode 100755 index 0000000..e85aaf1 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cbfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cbls.mod b/rootfs/usb/boot/grub/i386-pc/cbls.mod new file mode 100755 index 0000000..ea19c6b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cbls.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cbmemc.mod b/rootfs/usb/boot/grub/i386-pc/cbmemc.mod new file mode 100755 index 0000000..3818d80 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cbmemc.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cbtable.mod b/rootfs/usb/boot/grub/i386-pc/cbtable.mod new file mode 100755 index 0000000..578c189 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cbtable.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cbtime.mod b/rootfs/usb/boot/grub/i386-pc/cbtime.mod new file mode 100755 index 0000000..cc6f50a Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cbtime.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cdboot.img b/rootfs/usb/boot/grub/i386-pc/cdboot.img new file mode 100755 index 0000000..5305be4 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cdboot.img differ diff --git a/rootfs/usb/boot/grub/i386-pc/chain.mod b/rootfs/usb/boot/grub/i386-pc/chain.mod new file mode 100755 index 0000000..325eefd Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/chain.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cmdline_cat_test.mod b/rootfs/usb/boot/grub/i386-pc/cmdline_cat_test.mod new file mode 100755 index 0000000..7e71ca9 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cmdline_cat_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cmosdump.mod b/rootfs/usb/boot/grub/i386-pc/cmosdump.mod new file mode 100755 index 0000000..23d4b7d Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cmosdump.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cmostest.mod b/rootfs/usb/boot/grub/i386-pc/cmostest.mod new file mode 100755 index 0000000..769c2d7 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cmostest.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cmp.mod b/rootfs/usb/boot/grub/i386-pc/cmp.mod new file mode 100755 index 0000000..a7bf031 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cmp.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cmp_test.mod b/rootfs/usb/boot/grub/i386-pc/cmp_test.mod new file mode 100755 index 0000000..8fc76fc Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cmp_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/command.lst b/rootfs/usb/boot/grub/i386-pc/command.lst new file mode 100755 index 0000000..2dde303 --- /dev/null +++ b/rootfs/usb/boot/grub/i386-pc/command.lst @@ -0,0 +1,201 @@ +*acpi: acpi +*all_functional_test: functional_test +*background_image: gfxterm_background +*cat: cat +*cpuid: cpuid +*crc: hashsum +*cryptomount: cryptodisk +*drivemap: drivemap +*echo: echo +*extract_syslinux_entries_configfile: syslinuxcfg +*extract_syslinux_entries_source: syslinuxcfg +*file: file +*functional_test: functional_test +*gettext: gettext +*halt: halt +*hashsum: hashsum +*hdparm: hdparm +*hello: hello +*help: help +*hexdump: hexdump +*inb: iorw +*inl: iorw +*inw: iorw +*keystatus: keystatus +*kfreebsd: bsd +*knetbsd: bsd +*kopenbsd: bsd +*list_env: loadenv +*load_env: loadenv +*loopback: loopback +*ls: ls +*lsacpi: lsacpi +*lspci: lspci +*md5sum: hashsum +*menuentry: normal +*pcidump: pcidump +*plan9: plan9 +*probe: probe +*read_byte: memrw +*read_dword: memrw +*read_word: memrw +*regexp: regexp +*save_env: loadenv +*search: search +*sendkey: sendkey +*serial: serial +*setpci: setpci +*sha1sum: hashsum +*sha256sum: hashsum +*sha512sum: hashsum +*sleep: sleep +*submenu: normal +*syslinux_configfile: syslinuxcfg +*syslinux_source: syslinuxcfg +*terminfo: terminfo +*test_blockarg: test_blockarg +*testspeed: testspeed +*tr: tr +*trust: verify +*verify_detached: verify +*xnu_splash: xnu +*zfskey: zfscrypt +.: configfile +915resolution: 915resolution +[: test +authenticate: normal +background_color: gfxterm_background +backtrace: backtrace +badram: mmap +blocklist: blocklist +boot: boot +break: normal +cat: minicmd +cbmemc: cbmemc +chainloader: chain +clear: normal +cmosclean: cmostest +cmosdump: cmosdump +cmosset: cmostest +cmostest: cmostest +cmp: cmp +configfile: configfile +continue: normal +coreboot_boottime: cbtime +cutmem: mmap +date: date +distrust: verify +dump: minicmd +efiemu_loadcore: efiemu +efiemu_prepare: efiemu +efiemu_unload: efiemu +eval: eval +exit: minicmd +export: normal +extract_entries_configfile: configfile +extract_entries_source: configfile +extract_legacy_entries_configfile: legacycfg +extract_legacy_entries_source: legacycfg +false: true +freedos: freedos +gdbstub: gdb +gdbstub_break: gdb +gdbstub_stop: gdb +gptsync: gptsync +help: minicmd +hexdump_random: random +hwmatch: hwmatch +initrd16: linux16 +initrd: linux +keymap: keylayouts +kfreebsd_loadenv: bsd +kfreebsd_module: bsd +kfreebsd_module_elf: bsd +knetbsd_module: bsd +knetbsd_module_elf: bsd +kopenbsd_ramdisk: bsd +legacy_check_password: legacycfg +legacy_configfile: legacycfg +legacy_initrd: legacycfg +legacy_initrd_nounzip: legacycfg +legacy_kernel: legacycfg +legacy_password: legacycfg +legacy_source: legacycfg +linux16: linux16 +linux: linux +list_trusted: verify +loadfont: font +lsapm: lsapm +lscoreboot: cbls +lsfonts: font +lsmmap: lsmmap +lsmod: minicmd +macppcbless: macbless +mactelbless: macbless +module2: multiboot2 +module: multiboot +multiboot2: multiboot2 +multiboot: multiboot +nativedisk: nativedisk +net_add_addr: net +net_add_dns: net +net_add_route: net +net_bootp6: net +net_bootp: net +net_del_addr: net +net_del_dns: net +net_del_route: net +net_get_dhcp_option: net +net_ipv6_autoconf: net +net_ls_addr: net +net_ls_cards: net +net_ls_dns: net +net_ls_routes: net +net_nslookup: net +normal: normal +normal_exit: normal +ntldr: ntldr +outb: iorw +outl: iorw +outw: iorw +parttool: parttool +password: password +password_pbkdf2: password_pbkdf2 +play: play +pxechainloader: pxechain +read: read +reboot: reboot +return: normal +rmmod: minicmd +search.file: search_fs_file +search.fs_label: search_label +search.fs_uuid: search_fs_uuid +setparams: normal +shift: normal +source: configfile +terminal_input: terminal +terminal_output: terminal +test: test +testload: testload +time: time +true: true +truecrypt: truecrypt +usb: usbtest +vbeinfo: videoinfo +vbetest: videotest +videoinfo: videoinfo +videotest: videotest +write_byte: memrw +write_dword: memrw +write_word: memrw +xnu_devprop_load: xnu +xnu_kernel64: xnu +xnu_kernel: xnu +xnu_kext: xnu +xnu_kextdir: xnu +xnu_mkext: xnu +xnu_ramdisk: xnu +xnu_resume: xnu +xnu_uuid: xnu_uuid +zfs-bootfs: zfsinfo +zfsinfo: zfsinfo diff --git a/rootfs/usb/boot/grub/i386-pc/configfile.mod b/rootfs/usb/boot/grub/i386-pc/configfile.mod new file mode 100755 index 0000000..48da137 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/configfile.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/core.img b/rootfs/usb/boot/grub/i386-pc/core.img new file mode 100755 index 0000000..b44131f Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/core.img differ diff --git a/rootfs/usb/boot/grub/i386-pc/cpio.mod b/rootfs/usb/boot/grub/i386-pc/cpio.mod new file mode 100755 index 0000000..646edd9 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cpio.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cpio_be.mod b/rootfs/usb/boot/grub/i386-pc/cpio_be.mod new file mode 100755 index 0000000..554ff59 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cpio_be.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cpuid.mod b/rootfs/usb/boot/grub/i386-pc/cpuid.mod new file mode 100755 index 0000000..5e2d205 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cpuid.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/crc64.mod b/rootfs/usb/boot/grub/i386-pc/crc64.mod new file mode 100755 index 0000000..85a79f7 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/crc64.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/crypto.lst b/rootfs/usb/boot/grub/i386-pc/crypto.lst new file mode 100755 index 0000000..77d9efc --- /dev/null +++ b/rootfs/usb/boot/grub/i386-pc/crypto.lst @@ -0,0 +1,45 @@ +RIJNDAEL: gcry_rijndael +RIJNDAEL192: gcry_rijndael +RIJNDAEL256: gcry_rijndael +AES128: gcry_rijndael +AES-128: gcry_rijndael +AES-192: gcry_rijndael +AES-256: gcry_rijndael +ADLER32: adler32 +CRC64: crc64 +ARCFOUR: gcry_arcfour +BLOWFISH: gcry_blowfish +CAMELLIA128: gcry_camellia +CAMELLIA192: gcry_camellia +CAMELLIA256: gcry_camellia +CAST5: gcry_cast5 +CRC32: gcry_crc +CRC32RFC1510: gcry_crc +CRC24RFC2440: gcry_crc +DES: gcry_des +3DES: gcry_des +DSA: gcry_dsa +IDEA: gcry_idea +MD4: gcry_md4 +MD5: gcry_md5 +RFC2268_40: gcry_rfc2268 +AES: gcry_rijndael +AES192: gcry_rijndael +AES256: gcry_rijndael +RIPEMD160: gcry_rmd160 +RSA: gcry_rsa +SEED: gcry_seed +SERPENT128: gcry_serpent +SERPENT192: gcry_serpent +SERPENT256: gcry_serpent +SHA1: gcry_sha1 +SHA224: gcry_sha256 +SHA256: gcry_sha256 +SHA512: gcry_sha512 +SHA384: gcry_sha512 +TIGER192: gcry_tiger +TIGER: gcry_tiger +TIGER2: gcry_tiger +TWOFISH: gcry_twofish +TWOFISH128: gcry_twofish +WHIRLPOOL: gcry_whirlpool diff --git a/rootfs/usb/boot/grub/i386-pc/crypto.mod b/rootfs/usb/boot/grub/i386-pc/crypto.mod new file mode 100755 index 0000000..c8207f9 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/crypto.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cryptodisk.mod b/rootfs/usb/boot/grub/i386-pc/cryptodisk.mod new file mode 100755 index 0000000..fd04157 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cryptodisk.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/cs5536.mod b/rootfs/usb/boot/grub/i386-pc/cs5536.mod new file mode 100755 index 0000000..7c1a3a3 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/cs5536.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ctz_test.mod b/rootfs/usb/boot/grub/i386-pc/ctz_test.mod new file mode 100755 index 0000000..1a342cf Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ctz_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/date.mod b/rootfs/usb/boot/grub/i386-pc/date.mod new file mode 100755 index 0000000..dfa1193 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/date.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/datehook.mod b/rootfs/usb/boot/grub/i386-pc/datehook.mod new file mode 100755 index 0000000..41d646e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/datehook.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/datetime.mod b/rootfs/usb/boot/grub/i386-pc/datetime.mod new file mode 100755 index 0000000..1692a4d Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/datetime.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/disk.mod b/rootfs/usb/boot/grub/i386-pc/disk.mod new file mode 100755 index 0000000..a316fdc Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/disk.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/diskboot.img b/rootfs/usb/boot/grub/i386-pc/diskboot.img new file mode 100755 index 0000000..95a815c Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/diskboot.img differ diff --git a/rootfs/usb/boot/grub/i386-pc/diskfilter.mod b/rootfs/usb/boot/grub/i386-pc/diskfilter.mod new file mode 100755 index 0000000..0cd9c91 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/diskfilter.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/div.mod b/rootfs/usb/boot/grub/i386-pc/div.mod new file mode 100755 index 0000000..bca404a Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/div.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/div_test.mod b/rootfs/usb/boot/grub/i386-pc/div_test.mod new file mode 100755 index 0000000..76d1086 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/div_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/dm_nv.mod b/rootfs/usb/boot/grub/i386-pc/dm_nv.mod new file mode 100755 index 0000000..b0ace20 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/dm_nv.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/drivemap.mod b/rootfs/usb/boot/grub/i386-pc/drivemap.mod new file mode 100755 index 0000000..3b62ff4 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/drivemap.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/echo.mod b/rootfs/usb/boot/grub/i386-pc/echo.mod new file mode 100755 index 0000000..830b9ca Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/echo.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/efiemu.mod b/rootfs/usb/boot/grub/i386-pc/efiemu.mod new file mode 100755 index 0000000..c4a7734 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/efiemu.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ehci.mod b/rootfs/usb/boot/grub/i386-pc/ehci.mod new file mode 100755 index 0000000..c599967 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ehci.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/elf.mod b/rootfs/usb/boot/grub/i386-pc/elf.mod new file mode 100755 index 0000000..8e1b028 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/elf.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/eval.mod b/rootfs/usb/boot/grub/i386-pc/eval.mod new file mode 100755 index 0000000..6e70a5b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/eval.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/exfat.mod b/rootfs/usb/boot/grub/i386-pc/exfat.mod new file mode 100755 index 0000000..b32ebb8 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/exfat.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/exfctest.mod b/rootfs/usb/boot/grub/i386-pc/exfctest.mod new file mode 100755 index 0000000..9cfe492 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/exfctest.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ext2.mod b/rootfs/usb/boot/grub/i386-pc/ext2.mod new file mode 100755 index 0000000..28ae3d0 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ext2.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/extcmd.mod b/rootfs/usb/boot/grub/i386-pc/extcmd.mod new file mode 100755 index 0000000..5db96dd Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/extcmd.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/f2fs.mod b/rootfs/usb/boot/grub/i386-pc/f2fs.mod new file mode 100644 index 0000000..093ae1f Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/f2fs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/fat.mod b/rootfs/usb/boot/grub/i386-pc/fat.mod new file mode 100755 index 0000000..301f245 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/fat.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/file.mod b/rootfs/usb/boot/grub/i386-pc/file.mod new file mode 100755 index 0000000..da361a6 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/file.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/font.mod b/rootfs/usb/boot/grub/i386-pc/font.mod new file mode 100755 index 0000000..33b6138 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/font.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/freedos.mod b/rootfs/usb/boot/grub/i386-pc/freedos.mod new file mode 100755 index 0000000..88dfd50 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/freedos.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/fs.lst b/rootfs/usb/boot/grub/i386-pc/fs.lst new file mode 100755 index 0000000..a069ccc --- /dev/null +++ b/rootfs/usb/boot/grub/i386-pc/fs.lst @@ -0,0 +1,36 @@ +affs +afs +bfs +btrfs +cbfs +cpio +cpio_be +exfat +ext2 +fat +hfs +hfsplus +iso9660 +jfs +minix +minix2 +minix2_be +minix3 +minix3_be +minix_be +newc +nilfs2 +ntfs +odc +procfs +reiserfs +romfs +sfs +squash4 +tar +udf +ufs1 +ufs1_be +ufs2 +xfs +zfs diff --git a/rootfs/usb/boot/grub/i386-pc/fshelp.mod b/rootfs/usb/boot/grub/i386-pc/fshelp.mod new file mode 100755 index 0000000..96c67d3 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/fshelp.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/functional_test.mod b/rootfs/usb/boot/grub/i386-pc/functional_test.mod new file mode 100755 index 0000000..1ae8026 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/functional_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_arcfour.mod b/rootfs/usb/boot/grub/i386-pc/gcry_arcfour.mod new file mode 100755 index 0000000..0bb259c Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_arcfour.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_blowfish.mod b/rootfs/usb/boot/grub/i386-pc/gcry_blowfish.mod new file mode 100755 index 0000000..0b74194 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_blowfish.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_camellia.mod b/rootfs/usb/boot/grub/i386-pc/gcry_camellia.mod new file mode 100755 index 0000000..6d0d027 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_camellia.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_cast5.mod b/rootfs/usb/boot/grub/i386-pc/gcry_cast5.mod new file mode 100755 index 0000000..e226c10 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_cast5.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_crc.mod b/rootfs/usb/boot/grub/i386-pc/gcry_crc.mod new file mode 100755 index 0000000..34cd811 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_crc.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_des.mod b/rootfs/usb/boot/grub/i386-pc/gcry_des.mod new file mode 100755 index 0000000..fcc1883 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_des.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_dsa.mod b/rootfs/usb/boot/grub/i386-pc/gcry_dsa.mod new file mode 100755 index 0000000..97120c5 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_dsa.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_idea.mod b/rootfs/usb/boot/grub/i386-pc/gcry_idea.mod new file mode 100755 index 0000000..f029751 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_idea.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_md4.mod b/rootfs/usb/boot/grub/i386-pc/gcry_md4.mod new file mode 100755 index 0000000..c2c9c51 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_md4.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_md5.mod b/rootfs/usb/boot/grub/i386-pc/gcry_md5.mod new file mode 100755 index 0000000..6e43e15 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_md5.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_rfc2268.mod b/rootfs/usb/boot/grub/i386-pc/gcry_rfc2268.mod new file mode 100755 index 0000000..4817bd0 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_rfc2268.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_rijndael.mod b/rootfs/usb/boot/grub/i386-pc/gcry_rijndael.mod new file mode 100755 index 0000000..30f1d95 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_rijndael.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_rmd160.mod b/rootfs/usb/boot/grub/i386-pc/gcry_rmd160.mod new file mode 100755 index 0000000..65ff9b4 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_rmd160.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_rsa.mod b/rootfs/usb/boot/grub/i386-pc/gcry_rsa.mod new file mode 100755 index 0000000..00f9660 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_rsa.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_seed.mod b/rootfs/usb/boot/grub/i386-pc/gcry_seed.mod new file mode 100755 index 0000000..822f895 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_seed.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_serpent.mod b/rootfs/usb/boot/grub/i386-pc/gcry_serpent.mod new file mode 100755 index 0000000..36187f9 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_serpent.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_sha1.mod b/rootfs/usb/boot/grub/i386-pc/gcry_sha1.mod new file mode 100755 index 0000000..0a767f1 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_sha1.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_sha256.mod b/rootfs/usb/boot/grub/i386-pc/gcry_sha256.mod new file mode 100755 index 0000000..f71c569 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_sha256.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_sha512.mod b/rootfs/usb/boot/grub/i386-pc/gcry_sha512.mod new file mode 100755 index 0000000..951d989 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_sha512.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_tiger.mod b/rootfs/usb/boot/grub/i386-pc/gcry_tiger.mod new file mode 100755 index 0000000..43ed266 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_tiger.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_twofish.mod b/rootfs/usb/boot/grub/i386-pc/gcry_twofish.mod new file mode 100755 index 0000000..757bc9b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_twofish.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gcry_whirlpool.mod b/rootfs/usb/boot/grub/i386-pc/gcry_whirlpool.mod new file mode 100755 index 0000000..cbfde5b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gcry_whirlpool.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gdb.mod b/rootfs/usb/boot/grub/i386-pc/gdb.mod new file mode 100755 index 0000000..0afe596 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gdb.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/geli.mod b/rootfs/usb/boot/grub/i386-pc/geli.mod new file mode 100755 index 0000000..94c08c7 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/geli.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gettext.mod b/rootfs/usb/boot/grub/i386-pc/gettext.mod new file mode 100755 index 0000000..4610df5 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gettext.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gfxmenu.mod b/rootfs/usb/boot/grub/i386-pc/gfxmenu.mod new file mode 100755 index 0000000..38cf8b4 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gfxmenu.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gfxterm.mod b/rootfs/usb/boot/grub/i386-pc/gfxterm.mod new file mode 100755 index 0000000..82b4cdb Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gfxterm.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gfxterm_background.mod b/rootfs/usb/boot/grub/i386-pc/gfxterm_background.mod new file mode 100755 index 0000000..48bf4a7 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gfxterm_background.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gfxterm_menu.mod b/rootfs/usb/boot/grub/i386-pc/gfxterm_menu.mod new file mode 100755 index 0000000..3a93b22 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gfxterm_menu.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gptsync.mod b/rootfs/usb/boot/grub/i386-pc/gptsync.mod new file mode 100755 index 0000000..61b777d Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gptsync.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/gzio.mod b/rootfs/usb/boot/grub/i386-pc/gzio.mod new file mode 100755 index 0000000..fb11456 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/gzio.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/halt.mod b/rootfs/usb/boot/grub/i386-pc/halt.mod new file mode 100755 index 0000000..d145f2c Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/halt.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/hashsum.mod b/rootfs/usb/boot/grub/i386-pc/hashsum.mod new file mode 100755 index 0000000..b5bc447 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/hashsum.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/hdparm.mod b/rootfs/usb/boot/grub/i386-pc/hdparm.mod new file mode 100755 index 0000000..a268c62 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/hdparm.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/hello.mod b/rootfs/usb/boot/grub/i386-pc/hello.mod new file mode 100755 index 0000000..14fd095 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/hello.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/help.mod b/rootfs/usb/boot/grub/i386-pc/help.mod new file mode 100755 index 0000000..2338d49 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/help.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/hexdump.mod b/rootfs/usb/boot/grub/i386-pc/hexdump.mod new file mode 100755 index 0000000..4f7e50a Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/hexdump.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/hfs.mod b/rootfs/usb/boot/grub/i386-pc/hfs.mod new file mode 100755 index 0000000..3d65efe Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/hfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/hfsplus.mod b/rootfs/usb/boot/grub/i386-pc/hfsplus.mod new file mode 100755 index 0000000..00ca633 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/hfsplus.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/hfspluscomp.mod b/rootfs/usb/boot/grub/i386-pc/hfspluscomp.mod new file mode 100755 index 0000000..c35aaab Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/hfspluscomp.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/http.mod b/rootfs/usb/boot/grub/i386-pc/http.mod new file mode 100755 index 0000000..380a1c4 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/http.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/hwmatch.mod b/rootfs/usb/boot/grub/i386-pc/hwmatch.mod new file mode 100755 index 0000000..f611f12 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/hwmatch.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/iorw.mod b/rootfs/usb/boot/grub/i386-pc/iorw.mod new file mode 100755 index 0000000..2ab23ce Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/iorw.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/iso9660.mod b/rootfs/usb/boot/grub/i386-pc/iso9660.mod new file mode 100755 index 0000000..a82aaa7 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/iso9660.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/jfs.mod b/rootfs/usb/boot/grub/i386-pc/jfs.mod new file mode 100755 index 0000000..67c1f74 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/jfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/jpeg.mod b/rootfs/usb/boot/grub/i386-pc/jpeg.mod new file mode 100755 index 0000000..1f9b174 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/jpeg.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/kernel.img b/rootfs/usb/boot/grub/i386-pc/kernel.img new file mode 100755 index 0000000..6e19372 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/kernel.img differ diff --git a/rootfs/usb/boot/grub/i386-pc/keylayouts.mod b/rootfs/usb/boot/grub/i386-pc/keylayouts.mod new file mode 100755 index 0000000..8af6c22 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/keylayouts.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/keystatus.mod b/rootfs/usb/boot/grub/i386-pc/keystatus.mod new file mode 100755 index 0000000..ed3ca87 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/keystatus.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ldm.mod b/rootfs/usb/boot/grub/i386-pc/ldm.mod new file mode 100755 index 0000000..e9629f2 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ldm.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/legacy_password_test.mod b/rootfs/usb/boot/grub/i386-pc/legacy_password_test.mod new file mode 100755 index 0000000..d0fc8bc Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/legacy_password_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/legacycfg.mod b/rootfs/usb/boot/grub/i386-pc/legacycfg.mod new file mode 100755 index 0000000..04e7301 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/legacycfg.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/linux.mod b/rootfs/usb/boot/grub/i386-pc/linux.mod new file mode 100755 index 0000000..6818d86 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/linux.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/linux16.mod b/rootfs/usb/boot/grub/i386-pc/linux16.mod new file mode 100755 index 0000000..b56cb32 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/linux16.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/lnxboot.img b/rootfs/usb/boot/grub/i386-pc/lnxboot.img new file mode 100755 index 0000000..a60fcf2 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/lnxboot.img differ diff --git a/rootfs/usb/boot/grub/i386-pc/load.cfg b/rootfs/usb/boot/grub/i386-pc/load.cfg new file mode 100644 index 0000000..28a1d49 --- /dev/null +++ b/rootfs/usb/boot/grub/i386-pc/load.cfg @@ -0,0 +1,2 @@ +search.fs_uuid 83f77503-8aa0-48c1-8ae3-3b94df67b46d root +set prefix=($root)'/home/peter/iai/opencn_x86/rootfs/usb/boot/grub' diff --git a/rootfs/usb/boot/grub/i386-pc/loadenv.mod b/rootfs/usb/boot/grub/i386-pc/loadenv.mod new file mode 100755 index 0000000..0f2394f Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/loadenv.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/loopback.mod b/rootfs/usb/boot/grub/i386-pc/loopback.mod new file mode 100755 index 0000000..6f38c4b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/loopback.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ls.mod b/rootfs/usb/boot/grub/i386-pc/ls.mod new file mode 100755 index 0000000..d80b314 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ls.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/lsacpi.mod b/rootfs/usb/boot/grub/i386-pc/lsacpi.mod new file mode 100755 index 0000000..b03f634 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/lsacpi.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/lsapm.mod b/rootfs/usb/boot/grub/i386-pc/lsapm.mod new file mode 100755 index 0000000..5a053d7 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/lsapm.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/lsmmap.mod b/rootfs/usb/boot/grub/i386-pc/lsmmap.mod new file mode 100755 index 0000000..84940b5 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/lsmmap.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/lspci.mod b/rootfs/usb/boot/grub/i386-pc/lspci.mod new file mode 100755 index 0000000..a05c4aa Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/lspci.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/luks.mod b/rootfs/usb/boot/grub/i386-pc/luks.mod new file mode 100755 index 0000000..5e2840c Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/luks.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/lvm.mod b/rootfs/usb/boot/grub/i386-pc/lvm.mod new file mode 100755 index 0000000..26c7f2d Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/lvm.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/lzma_decompress.img b/rootfs/usb/boot/grub/i386-pc/lzma_decompress.img new file mode 100755 index 0000000..fa248fa Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/lzma_decompress.img differ diff --git a/rootfs/usb/boot/grub/i386-pc/lzopio.mod b/rootfs/usb/boot/grub/i386-pc/lzopio.mod new file mode 100755 index 0000000..fccb111 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/lzopio.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/macbless.mod b/rootfs/usb/boot/grub/i386-pc/macbless.mod new file mode 100755 index 0000000..1e59606 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/macbless.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/macho.mod b/rootfs/usb/boot/grub/i386-pc/macho.mod new file mode 100755 index 0000000..34b3ca0 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/macho.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/mda_text.mod b/rootfs/usb/boot/grub/i386-pc/mda_text.mod new file mode 100755 index 0000000..37b73df Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/mda_text.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/mdraid09.mod b/rootfs/usb/boot/grub/i386-pc/mdraid09.mod new file mode 100755 index 0000000..96a7a17 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/mdraid09.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/mdraid09_be.mod b/rootfs/usb/boot/grub/i386-pc/mdraid09_be.mod new file mode 100755 index 0000000..356e14d Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/mdraid09_be.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/mdraid1x.mod b/rootfs/usb/boot/grub/i386-pc/mdraid1x.mod new file mode 100755 index 0000000..7c029fc Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/mdraid1x.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/memdisk.mod b/rootfs/usb/boot/grub/i386-pc/memdisk.mod new file mode 100755 index 0000000..9877f53 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/memdisk.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/memrw.mod b/rootfs/usb/boot/grub/i386-pc/memrw.mod new file mode 100755 index 0000000..9931144 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/memrw.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/minicmd.mod b/rootfs/usb/boot/grub/i386-pc/minicmd.mod new file mode 100755 index 0000000..dca2eb0 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/minicmd.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/minix.mod b/rootfs/usb/boot/grub/i386-pc/minix.mod new file mode 100755 index 0000000..ab5ffca Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/minix.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/minix2.mod b/rootfs/usb/boot/grub/i386-pc/minix2.mod new file mode 100755 index 0000000..9f383ad Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/minix2.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/minix2_be.mod b/rootfs/usb/boot/grub/i386-pc/minix2_be.mod new file mode 100755 index 0000000..e81469e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/minix2_be.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/minix3.mod b/rootfs/usb/boot/grub/i386-pc/minix3.mod new file mode 100755 index 0000000..d692a8a Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/minix3.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/minix3_be.mod b/rootfs/usb/boot/grub/i386-pc/minix3_be.mod new file mode 100755 index 0000000..6205ba0 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/minix3_be.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/minix_be.mod b/rootfs/usb/boot/grub/i386-pc/minix_be.mod new file mode 100755 index 0000000..0065fbd Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/minix_be.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/mmap.mod b/rootfs/usb/boot/grub/i386-pc/mmap.mod new file mode 100755 index 0000000..239091b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/mmap.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/moddep.lst b/rootfs/usb/boot/grub/i386-pc/moddep.lst new file mode 100755 index 0000000..1c051b5 --- /dev/null +++ b/rootfs/usb/boot/grub/i386-pc/moddep.lst @@ -0,0 +1,266 @@ +squash4: xzio gzio lzopio fshelp +search_fs_uuid: +legacycfg: linux gcry_md5 crypto password normal +date: datetime normal +bfs: fshelp +uhci: pci usb +multiboot2: boot video net acpi relocator mmap lsapm vbe +gcry_twofish: crypto +cpio_be: archelp +cmostest: +priority_queue: +gcry_rijndael: crypto +freedos: boot video relocator chain +echo: extcmd +cpio: archelp +xzio: crypto +part_sun: +hfspluscomp: gzio hfsplus +gcry_sha512: crypto +gcry_cast5: crypto +ctz_test: functional_test +boot: +setjmp_test: setjmp functional_test +odc: archelp +ls: extcmd normal +gzio: +cbmemc: cbtable terminfo normal +video: +test_blockarg: extcmd normal +gfxterm: video font +cbtable: +mul_test: functional_test +gcry_tiger: crypto +gcry_serpent: crypto +aout: +macbless: disk +gcry_blowfish: crypto +trig: +plan9: boot video extcmd relocator +extcmd: +at_keyboard: boot keylayouts +videoinfo: video +testspeed: extcmd normal +pxe: boot net +minix: +keylayouts: +xnu_uuid: gcry_md5 +usbtest: usb +usbms: usb scsi +reboot: relocator +morse: +help: extcmd normal +part_msdos: +http: net +gdb: backtrace serial +gcry_rsa: mpi verify +cbtime: cbtable +blocklist: +probe: extcmd +pbkdf2: crypto +gcry_rfc2268: crypto +ufs1_be: +nativedisk: +gcry_camellia: crypto +fat: fshelp +exfctest: functional_test +pci: +parttool: normal +lzopio: crypto +linux: boot video relocator mmap vbe normal +gcry_md4: crypto +zfsinfo: zfs +usb_keyboard: keylayouts usb +pxechain: boot video pxe relocator +gcry_md5: crypto +fshelp: +ehci: boot pci usb cs5536 +bitmap_scale: bitmap +ata: scsi +datetime: +usbserial_common: usb serial +syslinuxcfg: extcmd normal +net: priority_queue boot datetime bufio +gcry_des: crypto +div_test: div functional_test +time: +reiserfs: fshelp +dm_nv: diskfilter +datehook: datetime normal +mdraid09_be: diskfilter +efiemu: crypto acpi cpuid gcry_crc +cmp_test: functional_test +backtrace: +ahci: boot pci ata +kernel: +video_cirrus: video pci video_fb +part_plan: +gcry_seed: crypto +minix_be: +crypto: +video_colors: +test: +terminal: +part_dvh: +lsacpi: extcmd acpi +jpeg: bufio bitmap +bsd: boot video aout extcmd gcry_md5 crypto cpuid elf relocator serial mmap vbe +memdisk: +gfxmenu: video gfxterm trig bitmap_scale video_colors bitmap normal font +cmp: +acpi: extcmd mmap +xfs: fshelp +elf: +div: +cpuid: extcmd +affs: fshelp +usb: pci +videotest: video gfxmenu font +tr: extcmd +testload: +relocator: mmap +play: +gfxterm_menu: video_fb functional_test procfs normal font +cbfs: archelp +adler32: crypto +progress: normal +password: crypto normal +part_sunpc: +video_fb: +tftp: priority_queue net +sleep: extcmd normal +serial: extcmd terminfo +search_fs_file: +gcry_sha256: crypto +gcry_rmd160: crypto +exfat: fshelp +search: search_fs_uuid extcmd search_fs_file search_label +mdraid09: diskfilter +chain: boot video relocator +mpi: crypto +memrw: extcmd +cs5536: pci +password_pbkdf2: gcry_sha512 pbkdf2 crypto normal +mdraid1x: diskfilter +linux16: boot video relocator mmap +gcry_crc: crypto +configfile: normal +zfscrypt: gcry_rijndael extcmd pbkdf2 crypto zfs gcry_sha1 +signature_test: functional_test procfs +raid5rec: diskfilter +pcidump: extcmd pci +gcry_arcfour: crypto +sendkey: boot extcmd +part_dfly: +minix2_be: +gettext: +pbkdf2_test: pbkdf2 gcry_sha1 functional_test +hello: extcmd +vga_text: +usbserial_pl2303: usbserial_common usb serial +hashsum: extcmd crypto normal +xnu_uuid_test: functional_test +regexp: extcmd normal +part_gpt: +ohci: boot pci usb cs5536 +gptsync: disk +zfs: gzio +part_apple: +hdparm: extcmd +bufio: +btrfs: gzio lzopio +bitmap: +true: +terminfo: extcmd +romfs: fshelp +ntfscomp: ntfs +hfs: fshelp +gcry_dsa: mpi verify +cmdline_cat_test: video_fb functional_test procfs normal font +biosdisk: +ufs1: +offsetio: +ntldr: boot video relocator chain +legacy_password_test: legacycfg functional_test +setjmp: +ufs2: +nilfs2: fshelp +lsmmap: +gcry_sha1: crypto +cmosdump: +915resolution: +mmap: boot +tar: archelp +png: bufio bitmap +lspci: extcmd pci +hfsplus: fshelp +cbls: cbtable +tga: bufio bitmap +random: acpi hexdump +minix2: +setpci: extcmd pci +scsi: +pata: pci ata +minix3: +lvm: diskfilter +lsapm: +functional_test: video extcmd video_fb btrfs +eval: normal +iso9660: fshelp +crc64: crypto +vbe: video video_fb +udf: fshelp +search_label: +raid6rec: diskfilter +msdospart: parttool disk +mda_text: +archelp: +procfs: archelp +minix3_be: +halt: extcmd acpi +xnu: boot video extcmd bitmap_scale efiemu relocator bitmap mmap random macho +read: +multiboot: boot video net relocator mmap lsapm vbe +keystatus: extcmd +cryptodisk: extcmd crypto procfs +truecrypt: boot gzio video relocator mmap +shift_test: functional_test +normal: boot extcmd crypto terminal gettext bufio +geli: gcry_sha512 pbkdf2 crypto gcry_sha256 cryptodisk +spkmodem: terminfo +gcry_idea: crypto +bswap_test: functional_test +video_bochs: video pci video_fb +verify: extcmd crypto mpi gcry_sha1 +sfs: fshelp +part_amiga: +luks: pbkdf2 crypto cryptodisk +loopback: extcmd +jfs: +gfxterm_background: gfxterm video extcmd bitmap_scale video_colors bitmap +usbserial_usbdebug: usbserial_common usb serial +part_acorn: +newc: archelp +macho: +iorw: extcmd +hwmatch: pci normal +cat: extcmd +afs: fshelp +sleep_test: datetime functional_test +ldm: part_msdos part_gpt diskfilter +hexdump: extcmd +disk: +usbserial_ftdi: usbserial_common usb serial +minicmd: +loadenv: extcmd disk +gcry_whirlpool: crypto +drivemap: boot extcmd mmap +vga: video video_fb +part_bsd: part_msdos +font: video bufio +ext2: fshelp +diskfilter: +videotest_checksum: video_fb functional_test font +file: extcmd elf offsetio macho +ntfs: fshelp +all_video: vbe vga video_bochs video_cirrus diff --git a/rootfs/usb/boot/grub/i386-pc/modinfo.sh b/rootfs/usb/boot/grub/i386-pc/modinfo.sh new file mode 100755 index 0000000..cb6012e --- /dev/null +++ b/rootfs/usb/boot/grub/i386-pc/modinfo.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +# User-controllable options +grub_modinfo_target_cpu=i386 +grub_modinfo_platform=pc +grub_disk_cache_stats=0 +grub_boot_time_stats=0 +grub_have_font_source=1 + +# Autodetected config +grub_have_asm_uscore=0 +grub_bss_start_symbol="__bss_start" +grub_end_symbol="end" + +# Build environment +grub_target_cc='gcc-6' +grub_target_cc_version='gcc-6 (Ubuntu 6.5.0-2ubuntu1~18.04) 6.5.0 20181026' +grub_target_cflags=' -Os -Wall -W -Wshadow -Wpointer-arith -Wundef -Wchar-subscripts -Wcomment -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wfloat-equal -Wformat-extra-args -Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-braces -Wmissing-format-attribute -Wmultichar -Wparentheses -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings -Wnested-externs -Wstrict-prototypes -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations -Wextra -Wattributes -Wendif-labels -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wmissing-field-initializers -Wnonnull -Woverflow -Wvla -Wpointer-to-int-cast -Wstrict-aliasing -Wvariadic-macros -Wvolatile-register-var -Wpointer-sign -Wmissing-include-dirs -Wmissing-prototypes -Wmissing-declarations -Wformat=2 -march=i386 -m32 -mrtd -mregparm=3 -falign-jumps=1 -falign-loops=1 -falign-functions=1 -freg-struct-return -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -msoft-float -fno-dwarf2-cfi-asm -mno-stack-arg-probe -fno-asynchronous-unwind-tables -fno-unwind-tables -Qn -fno-PIE -fno-pie -fno-stack-protector -Wtrampolines -Werror' +grub_target_cppflags='-Wno-unused-but-set-variable -Wall -W -DGRUB_MACHINE_PCBIOS=1 -DGRUB_MACHINE=I386_PC -m32 -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/6/include -I$(top_srcdir)/include -I$(top_builddir)/include' +grub_target_ccasflags=' -g -m32 -msoft-float' +grub_target_ldflags='-no-pie -m32 -Wl,-melf_i386 -no-pie -Wl,--build-id=none' +grub_cflags='' +grub_cppflags=' -D_FILE_OFFSET_BITS=64' +grub_ccasflags='' +grub_ldflags='' +grub_target_strip='strip' +grub_target_nm='nm' +grub_target_ranlib='ranlib' +grub_target_objconf='' +grub_target_obj2elf='' +grub_target_img_base_ldopt='-Wl,-Ttext' +grub_target_img_ldflags='@TARGET_IMG_BASE_LDFLAGS@' + +# Version +grub_version="2.02" +grub_package="grub" +grub_package_string="GRUB 2.02-2ubuntu8.12" +grub_package_version="2.02-2ubuntu8.12" +grub_package_name="GRUB" +grub_package_bugreport="bug-grub@gnu.org" diff --git a/rootfs/usb/boot/grub/i386-pc/morse.mod b/rootfs/usb/boot/grub/i386-pc/morse.mod new file mode 100755 index 0000000..83e539e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/morse.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/mpi.mod b/rootfs/usb/boot/grub/i386-pc/mpi.mod new file mode 100755 index 0000000..b0af9b1 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/mpi.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/msdospart.mod b/rootfs/usb/boot/grub/i386-pc/msdospart.mod new file mode 100755 index 0000000..afd545c Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/msdospart.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/mul_test.mod b/rootfs/usb/boot/grub/i386-pc/mul_test.mod new file mode 100755 index 0000000..63fc1b3 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/mul_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/multiboot.mod b/rootfs/usb/boot/grub/i386-pc/multiboot.mod new file mode 100755 index 0000000..6d208b3 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/multiboot.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/multiboot2.mod b/rootfs/usb/boot/grub/i386-pc/multiboot2.mod new file mode 100755 index 0000000..81ed1d8 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/multiboot2.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/nativedisk.mod b/rootfs/usb/boot/grub/i386-pc/nativedisk.mod new file mode 100755 index 0000000..0f67f06 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/nativedisk.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/net.mod b/rootfs/usb/boot/grub/i386-pc/net.mod new file mode 100755 index 0000000..da76fc5 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/net.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/newc.mod b/rootfs/usb/boot/grub/i386-pc/newc.mod new file mode 100755 index 0000000..26015ec Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/newc.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/nilfs2.mod b/rootfs/usb/boot/grub/i386-pc/nilfs2.mod new file mode 100755 index 0000000..679bfc1 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/nilfs2.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/normal.mod b/rootfs/usb/boot/grub/i386-pc/normal.mod new file mode 100755 index 0000000..9f7d487 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/normal.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ntfs.mod b/rootfs/usb/boot/grub/i386-pc/ntfs.mod new file mode 100755 index 0000000..b0ed4ba Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ntfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ntfscomp.mod b/rootfs/usb/boot/grub/i386-pc/ntfscomp.mod new file mode 100755 index 0000000..6803d46 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ntfscomp.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ntldr.mod b/rootfs/usb/boot/grub/i386-pc/ntldr.mod new file mode 100755 index 0000000..8398532 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ntldr.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/odc.mod b/rootfs/usb/boot/grub/i386-pc/odc.mod new file mode 100755 index 0000000..7abb2c0 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/odc.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/offsetio.mod b/rootfs/usb/boot/grub/i386-pc/offsetio.mod new file mode 100755 index 0000000..51358bb Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/offsetio.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ohci.mod b/rootfs/usb/boot/grub/i386-pc/ohci.mod new file mode 100755 index 0000000..975ea4d Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ohci.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_acorn.mod b/rootfs/usb/boot/grub/i386-pc/part_acorn.mod new file mode 100755 index 0000000..4a5bf48 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_acorn.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_amiga.mod b/rootfs/usb/boot/grub/i386-pc/part_amiga.mod new file mode 100755 index 0000000..825a94a Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_amiga.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_apple.mod b/rootfs/usb/boot/grub/i386-pc/part_apple.mod new file mode 100755 index 0000000..b1e517c Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_apple.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_bsd.mod b/rootfs/usb/boot/grub/i386-pc/part_bsd.mod new file mode 100755 index 0000000..8f12a83 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_bsd.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_dfly.mod b/rootfs/usb/boot/grub/i386-pc/part_dfly.mod new file mode 100755 index 0000000..4f55051 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_dfly.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_dvh.mod b/rootfs/usb/boot/grub/i386-pc/part_dvh.mod new file mode 100755 index 0000000..078f5d1 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_dvh.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_gpt.mod b/rootfs/usb/boot/grub/i386-pc/part_gpt.mod new file mode 100755 index 0000000..ffe4789 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_gpt.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_msdos.mod b/rootfs/usb/boot/grub/i386-pc/part_msdos.mod new file mode 100755 index 0000000..8595284 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_msdos.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_plan.mod b/rootfs/usb/boot/grub/i386-pc/part_plan.mod new file mode 100755 index 0000000..cca4918 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_plan.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_sun.mod b/rootfs/usb/boot/grub/i386-pc/part_sun.mod new file mode 100755 index 0000000..00b18c3 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_sun.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/part_sunpc.mod b/rootfs/usb/boot/grub/i386-pc/part_sunpc.mod new file mode 100755 index 0000000..6ffb8b8 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/part_sunpc.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/partmap.lst b/rootfs/usb/boot/grub/i386-pc/partmap.lst new file mode 100755 index 0000000..761233a --- /dev/null +++ b/rootfs/usb/boot/grub/i386-pc/partmap.lst @@ -0,0 +1,11 @@ +part_acorn +part_amiga +part_apple +part_bsd +part_dfly +part_dvh +part_gpt +part_msdos +part_plan +part_sun +part_sunpc diff --git a/rootfs/usb/boot/grub/i386-pc/parttool.lst b/rootfs/usb/boot/grub/i386-pc/parttool.lst new file mode 100755 index 0000000..68b4b5c --- /dev/null +++ b/rootfs/usb/boot/grub/i386-pc/parttool.lst @@ -0,0 +1 @@ +msdos: msdospart diff --git a/rootfs/usb/boot/grub/i386-pc/parttool.mod b/rootfs/usb/boot/grub/i386-pc/parttool.mod new file mode 100755 index 0000000..3a7bf31 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/parttool.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/password.mod b/rootfs/usb/boot/grub/i386-pc/password.mod new file mode 100755 index 0000000..f14614f Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/password.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/password_pbkdf2.mod b/rootfs/usb/boot/grub/i386-pc/password_pbkdf2.mod new file mode 100755 index 0000000..f33b8b6 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/password_pbkdf2.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/pata.mod b/rootfs/usb/boot/grub/i386-pc/pata.mod new file mode 100755 index 0000000..9ea79d0 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/pata.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/pbkdf2.mod b/rootfs/usb/boot/grub/i386-pc/pbkdf2.mod new file mode 100755 index 0000000..909aec9 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/pbkdf2.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/pbkdf2_test.mod b/rootfs/usb/boot/grub/i386-pc/pbkdf2_test.mod new file mode 100755 index 0000000..6e8dfd4 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/pbkdf2_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/pci.mod b/rootfs/usb/boot/grub/i386-pc/pci.mod new file mode 100755 index 0000000..49e8150 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/pci.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/pcidump.mod b/rootfs/usb/boot/grub/i386-pc/pcidump.mod new file mode 100755 index 0000000..1824fdf Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/pcidump.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/pgp.mod b/rootfs/usb/boot/grub/i386-pc/pgp.mod new file mode 100644 index 0000000..089397c Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/pgp.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/plan9.mod b/rootfs/usb/boot/grub/i386-pc/plan9.mod new file mode 100755 index 0000000..be57cb2 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/plan9.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/play.mod b/rootfs/usb/boot/grub/i386-pc/play.mod new file mode 100755 index 0000000..38ea126 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/play.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/png.mod b/rootfs/usb/boot/grub/i386-pc/png.mod new file mode 100755 index 0000000..2a53ae5 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/png.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/priority_queue.mod b/rootfs/usb/boot/grub/i386-pc/priority_queue.mod new file mode 100755 index 0000000..2eb5f9a Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/priority_queue.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/probe.mod b/rootfs/usb/boot/grub/i386-pc/probe.mod new file mode 100755 index 0000000..f49db0b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/probe.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/procfs.mod b/rootfs/usb/boot/grub/i386-pc/procfs.mod new file mode 100755 index 0000000..3beb908 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/procfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/progress.mod b/rootfs/usb/boot/grub/i386-pc/progress.mod new file mode 100755 index 0000000..61b00e1 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/progress.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/pxe.mod b/rootfs/usb/boot/grub/i386-pc/pxe.mod new file mode 100755 index 0000000..609cdb6 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/pxe.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/pxeboot.img b/rootfs/usb/boot/grub/i386-pc/pxeboot.img new file mode 100755 index 0000000..42b3f35 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/pxeboot.img differ diff --git a/rootfs/usb/boot/grub/i386-pc/pxechain.mod b/rootfs/usb/boot/grub/i386-pc/pxechain.mod new file mode 100755 index 0000000..452a955 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/pxechain.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/raid5rec.mod b/rootfs/usb/boot/grub/i386-pc/raid5rec.mod new file mode 100755 index 0000000..36ab202 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/raid5rec.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/raid6rec.mod b/rootfs/usb/boot/grub/i386-pc/raid6rec.mod new file mode 100755 index 0000000..4e75785 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/raid6rec.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/random.mod b/rootfs/usb/boot/grub/i386-pc/random.mod new file mode 100755 index 0000000..34ef667 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/random.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/rdmsr.mod b/rootfs/usb/boot/grub/i386-pc/rdmsr.mod new file mode 100644 index 0000000..c7bc5de Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/rdmsr.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/read.mod b/rootfs/usb/boot/grub/i386-pc/read.mod new file mode 100755 index 0000000..5adf5fa Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/read.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/reboot.mod b/rootfs/usb/boot/grub/i386-pc/reboot.mod new file mode 100755 index 0000000..528bf8b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/reboot.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/regexp.mod b/rootfs/usb/boot/grub/i386-pc/regexp.mod new file mode 100755 index 0000000..5677e56 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/regexp.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/reiserfs.mod b/rootfs/usb/boot/grub/i386-pc/reiserfs.mod new file mode 100755 index 0000000..536ca7e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/reiserfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/relocator.mod b/rootfs/usb/boot/grub/i386-pc/relocator.mod new file mode 100755 index 0000000..837ce3f Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/relocator.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/romfs.mod b/rootfs/usb/boot/grub/i386-pc/romfs.mod new file mode 100755 index 0000000..4334767 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/romfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/scsi.mod b/rootfs/usb/boot/grub/i386-pc/scsi.mod new file mode 100755 index 0000000..5821712 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/scsi.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/search.mod b/rootfs/usb/boot/grub/i386-pc/search.mod new file mode 100755 index 0000000..38af247 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/search.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/search_fs_file.mod b/rootfs/usb/boot/grub/i386-pc/search_fs_file.mod new file mode 100755 index 0000000..0827eff Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/search_fs_file.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/search_fs_uuid.mod b/rootfs/usb/boot/grub/i386-pc/search_fs_uuid.mod new file mode 100755 index 0000000..67da624 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/search_fs_uuid.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/search_label.mod b/rootfs/usb/boot/grub/i386-pc/search_label.mod new file mode 100755 index 0000000..c1dfe81 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/search_label.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/sendkey.mod b/rootfs/usb/boot/grub/i386-pc/sendkey.mod new file mode 100755 index 0000000..1e32289 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/sendkey.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/serial.mod b/rootfs/usb/boot/grub/i386-pc/serial.mod new file mode 100755 index 0000000..b1d4fb2 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/serial.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/setjmp.mod b/rootfs/usb/boot/grub/i386-pc/setjmp.mod new file mode 100755 index 0000000..2d35023 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/setjmp.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/setjmp_test.mod b/rootfs/usb/boot/grub/i386-pc/setjmp_test.mod new file mode 100755 index 0000000..636eb19 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/setjmp_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/setpci.mod b/rootfs/usb/boot/grub/i386-pc/setpci.mod new file mode 100755 index 0000000..fb310b4 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/setpci.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/sfs.mod b/rootfs/usb/boot/grub/i386-pc/sfs.mod new file mode 100755 index 0000000..c93280e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/sfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/shift_test.mod b/rootfs/usb/boot/grub/i386-pc/shift_test.mod new file mode 100755 index 0000000..7e34587 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/shift_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/signature_test.mod b/rootfs/usb/boot/grub/i386-pc/signature_test.mod new file mode 100755 index 0000000..2fc8ff5 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/signature_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/sleep.mod b/rootfs/usb/boot/grub/i386-pc/sleep.mod new file mode 100755 index 0000000..5d994eb Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/sleep.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/sleep_test.mod b/rootfs/usb/boot/grub/i386-pc/sleep_test.mod new file mode 100755 index 0000000..4d9b6ea Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/sleep_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/spkmodem.mod b/rootfs/usb/boot/grub/i386-pc/spkmodem.mod new file mode 100755 index 0000000..462ddd8 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/spkmodem.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/squash4.mod b/rootfs/usb/boot/grub/i386-pc/squash4.mod new file mode 100755 index 0000000..743d278 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/squash4.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/strtoull_test.mod b/rootfs/usb/boot/grub/i386-pc/strtoull_test.mod new file mode 100644 index 0000000..38de07e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/strtoull_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/syslinuxcfg.mod b/rootfs/usb/boot/grub/i386-pc/syslinuxcfg.mod new file mode 100755 index 0000000..39478d7 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/syslinuxcfg.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/tar.mod b/rootfs/usb/boot/grub/i386-pc/tar.mod new file mode 100755 index 0000000..419e676 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/tar.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/terminal.lst b/rootfs/usb/boot/grub/i386-pc/terminal.lst new file mode 100755 index 0000000..2cb224c --- /dev/null +++ b/rootfs/usb/boot/grub/i386-pc/terminal.lst @@ -0,0 +1,11 @@ +iat_keyboard: at_keyboard +iserial: serial +iserial_*: serial +oaudio: morse +ocbmemc: cbmemc +ogfxterm: gfxterm +omda_text: mda_text +oserial: serial +oserial_*: serial +ospkmodem: spkmodem +ovga_text: vga_text diff --git a/rootfs/usb/boot/grub/i386-pc/terminal.mod b/rootfs/usb/boot/grub/i386-pc/terminal.mod new file mode 100755 index 0000000..27efffb Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/terminal.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/terminfo.mod b/rootfs/usb/boot/grub/i386-pc/terminfo.mod new file mode 100755 index 0000000..15cf806 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/terminfo.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/test.mod b/rootfs/usb/boot/grub/i386-pc/test.mod new file mode 100755 index 0000000..5c4623d Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/test_blockarg.mod b/rootfs/usb/boot/grub/i386-pc/test_blockarg.mod new file mode 100755 index 0000000..742554a Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/test_blockarg.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/testload.mod b/rootfs/usb/boot/grub/i386-pc/testload.mod new file mode 100755 index 0000000..308c291 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/testload.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/testspeed.mod b/rootfs/usb/boot/grub/i386-pc/testspeed.mod new file mode 100755 index 0000000..98a6990 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/testspeed.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/tftp.mod b/rootfs/usb/boot/grub/i386-pc/tftp.mod new file mode 100755 index 0000000..fa89735 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/tftp.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/tga.mod b/rootfs/usb/boot/grub/i386-pc/tga.mod new file mode 100755 index 0000000..da32de7 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/tga.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/time.mod b/rootfs/usb/boot/grub/i386-pc/time.mod new file mode 100755 index 0000000..b9a082a Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/time.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/tr.mod b/rootfs/usb/boot/grub/i386-pc/tr.mod new file mode 100755 index 0000000..7602346 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/tr.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/trig.mod b/rootfs/usb/boot/grub/i386-pc/trig.mod new file mode 100755 index 0000000..b58e345 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/trig.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/true.mod b/rootfs/usb/boot/grub/i386-pc/true.mod new file mode 100755 index 0000000..3a15df1 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/true.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/truecrypt.mod b/rootfs/usb/boot/grub/i386-pc/truecrypt.mod new file mode 100755 index 0000000..e90c448 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/truecrypt.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/udf.mod b/rootfs/usb/boot/grub/i386-pc/udf.mod new file mode 100755 index 0000000..3283c90 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/udf.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ufs1.mod b/rootfs/usb/boot/grub/i386-pc/ufs1.mod new file mode 100755 index 0000000..c541021 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ufs1.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ufs1_be.mod b/rootfs/usb/boot/grub/i386-pc/ufs1_be.mod new file mode 100755 index 0000000..2afa52b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ufs1_be.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/ufs2.mod b/rootfs/usb/boot/grub/i386-pc/ufs2.mod new file mode 100755 index 0000000..b9775b5 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/ufs2.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/uhci.mod b/rootfs/usb/boot/grub/i386-pc/uhci.mod new file mode 100755 index 0000000..00d7b38 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/uhci.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/usb.mod b/rootfs/usb/boot/grub/i386-pc/usb.mod new file mode 100755 index 0000000..bfd5f8d Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/usb.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/usb_keyboard.mod b/rootfs/usb/boot/grub/i386-pc/usb_keyboard.mod new file mode 100755 index 0000000..5cc9467 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/usb_keyboard.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/usbms.mod b/rootfs/usb/boot/grub/i386-pc/usbms.mod new file mode 100755 index 0000000..6b23e32 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/usbms.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/usbserial_common.mod b/rootfs/usb/boot/grub/i386-pc/usbserial_common.mod new file mode 100755 index 0000000..22605a7 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/usbserial_common.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/usbserial_ftdi.mod b/rootfs/usb/boot/grub/i386-pc/usbserial_ftdi.mod new file mode 100755 index 0000000..011c6b6 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/usbserial_ftdi.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/usbserial_pl2303.mod b/rootfs/usb/boot/grub/i386-pc/usbserial_pl2303.mod new file mode 100755 index 0000000..bf08ba3 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/usbserial_pl2303.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/usbserial_usbdebug.mod b/rootfs/usb/boot/grub/i386-pc/usbserial_usbdebug.mod new file mode 100755 index 0000000..e8f3c41 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/usbserial_usbdebug.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/usbtest.mod b/rootfs/usb/boot/grub/i386-pc/usbtest.mod new file mode 100755 index 0000000..fbbb663 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/usbtest.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/vbe.mod b/rootfs/usb/boot/grub/i386-pc/vbe.mod new file mode 100755 index 0000000..284f2d7 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/vbe.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/verifiers.mod b/rootfs/usb/boot/grub/i386-pc/verifiers.mod new file mode 100644 index 0000000..5f0ad2c Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/verifiers.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/verify.mod b/rootfs/usb/boot/grub/i386-pc/verify.mod new file mode 100755 index 0000000..a541036 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/verify.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/vga.mod b/rootfs/usb/boot/grub/i386-pc/vga.mod new file mode 100755 index 0000000..e62807a Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/vga.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/vga_text.mod b/rootfs/usb/boot/grub/i386-pc/vga_text.mod new file mode 100755 index 0000000..3e0a00e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/vga_text.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/video.lst b/rootfs/usb/boot/grub/i386-pc/video.lst new file mode 100755 index 0000000..6ca853e --- /dev/null +++ b/rootfs/usb/boot/grub/i386-pc/video.lst @@ -0,0 +1,4 @@ +vbe +vga +video_bochs +video_cirrus diff --git a/rootfs/usb/boot/grub/i386-pc/video.mod b/rootfs/usb/boot/grub/i386-pc/video.mod new file mode 100755 index 0000000..26f1ab2 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/video.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/video_bochs.mod b/rootfs/usb/boot/grub/i386-pc/video_bochs.mod new file mode 100755 index 0000000..556cd49 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/video_bochs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/video_cirrus.mod b/rootfs/usb/boot/grub/i386-pc/video_cirrus.mod new file mode 100755 index 0000000..8be2429 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/video_cirrus.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/video_colors.mod b/rootfs/usb/boot/grub/i386-pc/video_colors.mod new file mode 100755 index 0000000..be55895 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/video_colors.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/video_fb.mod b/rootfs/usb/boot/grub/i386-pc/video_fb.mod new file mode 100755 index 0000000..bd868a4 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/video_fb.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/videoinfo.mod b/rootfs/usb/boot/grub/i386-pc/videoinfo.mod new file mode 100755 index 0000000..034ad16 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/videoinfo.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/videotest.mod b/rootfs/usb/boot/grub/i386-pc/videotest.mod new file mode 100755 index 0000000..431e41c Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/videotest.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/videotest_checksum.mod b/rootfs/usb/boot/grub/i386-pc/videotest_checksum.mod new file mode 100755 index 0000000..d049b82 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/videotest_checksum.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/wrmsr.mod b/rootfs/usb/boot/grub/i386-pc/wrmsr.mod new file mode 100644 index 0000000..1f1fb57 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/wrmsr.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/xfs.mod b/rootfs/usb/boot/grub/i386-pc/xfs.mod new file mode 100755 index 0000000..7ccca2c Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/xfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/xnu.mod b/rootfs/usb/boot/grub/i386-pc/xnu.mod new file mode 100755 index 0000000..c88a402 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/xnu.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/xnu_uuid.mod b/rootfs/usb/boot/grub/i386-pc/xnu_uuid.mod new file mode 100755 index 0000000..ee070a8 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/xnu_uuid.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/xnu_uuid_test.mod b/rootfs/usb/boot/grub/i386-pc/xnu_uuid_test.mod new file mode 100755 index 0000000..e10f1d3 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/xnu_uuid_test.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/xzio.mod b/rootfs/usb/boot/grub/i386-pc/xzio.mod new file mode 100755 index 0000000..b7ae79b Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/xzio.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/zfs.mod b/rootfs/usb/boot/grub/i386-pc/zfs.mod new file mode 100755 index 0000000..b2af51e Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/zfs.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/zfscrypt.mod b/rootfs/usb/boot/grub/i386-pc/zfscrypt.mod new file mode 100755 index 0000000..ab9dbb3 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/zfscrypt.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/zfsinfo.mod b/rootfs/usb/boot/grub/i386-pc/zfsinfo.mod new file mode 100755 index 0000000..994bc70 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/zfsinfo.mod differ diff --git a/rootfs/usb/boot/grub/i386-pc/zstd.mod b/rootfs/usb/boot/grub/i386-pc/zstd.mod new file mode 100644 index 0000000..ee77967 Binary files /dev/null and b/rootfs/usb/boot/grub/i386-pc/zstd.mod differ diff --git a/rootfs/usb/boot/grub/locale/de.mo b/rootfs/usb/boot/grub/locale/de.mo new file mode 100755 index 0000000..cf343f2 Binary files /dev/null and b/rootfs/usb/boot/grub/locale/de.mo differ diff --git a/rootfs/usb/boot/grub/locale/en@quot.mo b/rootfs/usb/boot/grub/locale/en@quot.mo new file mode 100755 index 0000000..3cf8fb4 Binary files /dev/null and b/rootfs/usb/boot/grub/locale/en@quot.mo differ diff --git a/rootfs/usb/boot/grub/locale/en_AU.mo b/rootfs/usb/boot/grub/locale/en_AU.mo new file mode 100755 index 0000000..9fbfe32 Binary files /dev/null and b/rootfs/usb/boot/grub/locale/en_AU.mo differ diff --git a/rootfs/usb/boot/grub/locale/en_CA.mo b/rootfs/usb/boot/grub/locale/en_CA.mo new file mode 100755 index 0000000..8113c36 Binary files /dev/null and b/rootfs/usb/boot/grub/locale/en_CA.mo differ diff --git a/rootfs/usb/boot/grub/locale/en_GB.mo b/rootfs/usb/boot/grub/locale/en_GB.mo new file mode 100755 index 0000000..f9d6e50 Binary files /dev/null and b/rootfs/usb/boot/grub/locale/en_GB.mo differ diff --git a/rootfs/usb/boot/grub/loopback.cfg b/rootfs/usb/boot/grub/loopback.cfg new file mode 100755 index 0000000..43f1314 --- /dev/null +++ b/rootfs/usb/boot/grub/loopback.cfg @@ -0,0 +1,16 @@ +menuentry "Try Ubuntu without installing" { + set gfxpayload=keep + linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=${iso_path} quiet splash --- + initrd /casper/initrd +} +menuentry "Install Ubuntu" { + linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity iso-scan/filename=${iso_path} quiet splash --- + initrd /casper/initrd +} +menuentry "Check disc for defects" { + linux /casper/vmlinuz boot=casper integrity-check iso-scan/filename=${iso_path} quiet splash --- + initrd /casper/initrd +} +menuentry "Test memory" { + linux16 /install/mt86plus +} diff --git a/rootfs/usb/boot/grub/x86_64-efi/acpi.mod b/rootfs/usb/boot/grub/x86_64-efi/acpi.mod new file mode 100755 index 0000000..27b1418 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/acpi.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/adler32.mod b/rootfs/usb/boot/grub/x86_64-efi/adler32.mod new file mode 100755 index 0000000..107384f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/adler32.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ahci.mod b/rootfs/usb/boot/grub/x86_64-efi/ahci.mod new file mode 100755 index 0000000..fc6e13a Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ahci.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/all_video.mod b/rootfs/usb/boot/grub/x86_64-efi/all_video.mod new file mode 100755 index 0000000..100483f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/all_video.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/aout.mod b/rootfs/usb/boot/grub/x86_64-efi/aout.mod new file mode 100755 index 0000000..f0d437b Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/aout.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/appleldr.mod b/rootfs/usb/boot/grub/x86_64-efi/appleldr.mod new file mode 100755 index 0000000..902d072 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/appleldr.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/archelp.mod b/rootfs/usb/boot/grub/x86_64-efi/archelp.mod new file mode 100755 index 0000000..d9f62c5 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/archelp.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/at_keyboard.mod b/rootfs/usb/boot/grub/x86_64-efi/at_keyboard.mod new file mode 100755 index 0000000..b8de502 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/at_keyboard.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ata.mod b/rootfs/usb/boot/grub/x86_64-efi/ata.mod new file mode 100755 index 0000000..5e7638a Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ata.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/backtrace.mod b/rootfs/usb/boot/grub/x86_64-efi/backtrace.mod new file mode 100755 index 0000000..317091b Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/backtrace.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/bfs.mod b/rootfs/usb/boot/grub/x86_64-efi/bfs.mod new file mode 100755 index 0000000..27688ef Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/bfs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/bitmap.mod b/rootfs/usb/boot/grub/x86_64-efi/bitmap.mod new file mode 100755 index 0000000..a345af5 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/bitmap.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/bitmap_scale.mod b/rootfs/usb/boot/grub/x86_64-efi/bitmap_scale.mod new file mode 100755 index 0000000..f28c72e Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/bitmap_scale.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/blocklist.mod b/rootfs/usb/boot/grub/x86_64-efi/blocklist.mod new file mode 100755 index 0000000..d674d6b Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/blocklist.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/boot.mod b/rootfs/usb/boot/grub/x86_64-efi/boot.mod new file mode 100755 index 0000000..b50031a Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/boot.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/bsd.mod b/rootfs/usb/boot/grub/x86_64-efi/bsd.mod new file mode 100755 index 0000000..bcc36c9 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/bsd.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/bswap_test.mod b/rootfs/usb/boot/grub/x86_64-efi/bswap_test.mod new file mode 100755 index 0000000..25d9cf1 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/bswap_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/btrfs.mod b/rootfs/usb/boot/grub/x86_64-efi/btrfs.mod new file mode 100755 index 0000000..ed19824 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/btrfs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/bufio.mod b/rootfs/usb/boot/grub/x86_64-efi/bufio.mod new file mode 100755 index 0000000..8d9b551 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/bufio.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cat.mod b/rootfs/usb/boot/grub/x86_64-efi/cat.mod new file mode 100755 index 0000000..a2f5fdd Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cat.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cbfs.mod b/rootfs/usb/boot/grub/x86_64-efi/cbfs.mod new file mode 100755 index 0000000..229b7bd Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cbfs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cbls.mod b/rootfs/usb/boot/grub/x86_64-efi/cbls.mod new file mode 100755 index 0000000..f40f5e3 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cbls.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cbmemc.mod b/rootfs/usb/boot/grub/x86_64-efi/cbmemc.mod new file mode 100755 index 0000000..3c7ee9f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cbmemc.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cbtable.mod b/rootfs/usb/boot/grub/x86_64-efi/cbtable.mod new file mode 100755 index 0000000..faf8c9f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cbtable.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cbtime.mod b/rootfs/usb/boot/grub/x86_64-efi/cbtime.mod new file mode 100755 index 0000000..f2214d9 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cbtime.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/chain.mod b/rootfs/usb/boot/grub/x86_64-efi/chain.mod new file mode 100755 index 0000000..0cbeefd Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/chain.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cmdline_cat_test.mod b/rootfs/usb/boot/grub/x86_64-efi/cmdline_cat_test.mod new file mode 100755 index 0000000..3fa3772 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cmdline_cat_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cmp.mod b/rootfs/usb/boot/grub/x86_64-efi/cmp.mod new file mode 100755 index 0000000..fc21ad8 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cmp.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cmp_test.mod b/rootfs/usb/boot/grub/x86_64-efi/cmp_test.mod new file mode 100755 index 0000000..09c5364 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cmp_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/command.lst b/rootfs/usb/boot/grub/x86_64-efi/command.lst new file mode 100755 index 0000000..d7814a8 --- /dev/null +++ b/rootfs/usb/boot/grub/x86_64-efi/command.lst @@ -0,0 +1,190 @@ +*acpi: acpi +*all_functional_test: functional_test +*background_image: gfxterm_background +*cat: cat +*cpuid: cpuid +*crc: hashsum +*cryptomount: cryptodisk +*echo: echo +*extract_syslinux_entries_configfile: syslinuxcfg +*extract_syslinux_entries_source: syslinuxcfg +*file: file +*functional_test: functional_test +*gettext: gettext +*hashsum: hashsum +*hdparm: hdparm +*hello: hello +*help: help +*hexdump: hexdump +*inb: iorw +*inl: iorw +*inw: iorw +*keystatus: keystatus +*kfreebsd: bsd +*knetbsd: bsd +*kopenbsd: bsd +*list_env: loadenv +*load_env: loadenv +*loopback: loopback +*ls: ls +*lsacpi: lsacpi +*lspci: lspci +*md5sum: hashsum +*menuentry: normal +*pcidump: pcidump +*probe: probe +*read_byte: memrw +*read_dword: memrw +*read_word: memrw +*regexp: regexp +*save_env: loadenv +*search: search +*serial: serial +*setpci: setpci +*sha1sum: hashsum +*sha256sum: hashsum +*sha512sum: hashsum +*sleep: sleep +*submenu: normal +*syslinux_configfile: syslinuxcfg +*syslinux_source: syslinuxcfg +*terminfo: terminfo +*test_blockarg: test_blockarg +*testspeed: testspeed +*tr: tr +*trust: verify +*verify_detached: verify +*xnu_splash: xnu +*zfskey: zfscrypt +.: configfile +[: test +appleloader: appleldr +authenticate: normal +background_color: gfxterm_background +backtrace: backtrace +badram: mmap +blocklist: blocklist +boot: boot +break: normal +cat: minicmd +cbmemc: cbmemc +chainloader: chain +clear: normal +cmp: cmp +configfile: configfile +continue: normal +coreboot_boottime: cbtime +cutmem: mmap +date: date +distrust: verify +dump: minicmd +eval: eval +exit: minicmd +export: normal +extract_entries_configfile: configfile +extract_entries_source: configfile +extract_legacy_entries_configfile: legacycfg +extract_legacy_entries_source: legacycfg +fakebios: loadbios +false: true +fix_video: fixvideo +fwsetup: efifwsetup +gptsync: gptsync +halt: halt +help: minicmd +hexdump_random: random +initrd16: linux16 +initrd: linux +initrdefi: linuxefi +keymap: keylayouts +kfreebsd_loadenv: bsd +kfreebsd_module: bsd +kfreebsd_module_elf: bsd +knetbsd_module: bsd +knetbsd_module_elf: bsd +kopenbsd_ramdisk: bsd +legacy_check_password: legacycfg +legacy_configfile: legacycfg +legacy_initrd: legacycfg +legacy_initrd_nounzip: legacycfg +legacy_kernel: legacycfg +legacy_password: legacycfg +legacy_source: legacycfg +linux16: linux16 +linux: linux +linuxefi: linuxefi +list_trusted: verify +loadbios: loadbios +loadfont: font +lscoreboot: cbls +lsefi: lsefi +lsefimmap: lsefimmap +lsefisystab: lsefisystab +lsfonts: font +lsmmap: lsmmap +lsmod: minicmd +lssal: lssal +macppcbless: macbless +mactelbless: macbless +module2: multiboot2 +module: multiboot +multiboot2: multiboot2 +multiboot: multiboot +nativedisk: nativedisk +net_add_addr: net +net_add_dns: net +net_add_route: net +net_bootp6: net +net_bootp: net +net_del_addr: net +net_del_dns: net +net_del_route: net +net_get_dhcp_option: net +net_ipv6_autoconf: net +net_ls_addr: net +net_ls_cards: net +net_ls_dns: net +net_ls_routes: net +net_nslookup: net +normal: normal +normal_exit: normal +outb: iorw +outl: iorw +outw: iorw +parttool: parttool +password: password +password_pbkdf2: password_pbkdf2 +play: play +read: read +reboot: reboot +return: normal +rmmod: minicmd +search.file: search_fs_file +search.fs_label: search_label +search.fs_uuid: search_fs_uuid +setparams: normal +shift: normal +source: configfile +terminal_input: terminal +terminal_output: terminal +test: test +testload: testload +time: time +true: true +usb: usbtest +videoinfo: videoinfo +videotest: videotest +write_byte: memrw +write_dword: memrw +write_word: memrw +xnu_devprop_load: xnu +xnu_kernel64: xnu +xnu_kernel: xnu +xnu_kext: xnu +xnu_kextdir: xnu +xnu_mkext: xnu +xnu_ramdisk: xnu +xnu_resume: xnu +xnu_uuid: xnu_uuid +zfs-bootfs: zfsinfo +zfsinfo: zfsinfo diff --git a/rootfs/usb/boot/grub/x86_64-efi/cpio.mod b/rootfs/usb/boot/grub/x86_64-efi/cpio.mod new file mode 100755 index 0000000..8eb3ef2 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cpio.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cpio_be.mod b/rootfs/usb/boot/grub/x86_64-efi/cpio_be.mod new file mode 100755 index 0000000..928825e Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cpio_be.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cpuid.mod b/rootfs/usb/boot/grub/x86_64-efi/cpuid.mod new file mode 100755 index 0000000..effabd1 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cpuid.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/crc64.mod b/rootfs/usb/boot/grub/x86_64-efi/crc64.mod new file mode 100755 index 0000000..63f6923 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/crc64.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/crypto.lst b/rootfs/usb/boot/grub/x86_64-efi/crypto.lst new file mode 100755 index 0000000..77d9efc --- /dev/null +++ b/rootfs/usb/boot/grub/x86_64-efi/crypto.lst @@ -0,0 +1,45 @@ +RIJNDAEL: gcry_rijndael +RIJNDAEL192: gcry_rijndael +RIJNDAEL256: gcry_rijndael +AES128: gcry_rijndael +AES-128: gcry_rijndael +AES-192: gcry_rijndael +AES-256: gcry_rijndael +ADLER32: adler32 +CRC64: crc64 +ARCFOUR: gcry_arcfour +BLOWFISH: gcry_blowfish +CAMELLIA128: gcry_camellia +CAMELLIA192: gcry_camellia +CAMELLIA256: gcry_camellia +CAST5: gcry_cast5 +CRC32: gcry_crc +CRC32RFC1510: gcry_crc +CRC24RFC2440: gcry_crc +DES: gcry_des +3DES: gcry_des +DSA: gcry_dsa +IDEA: gcry_idea +MD4: gcry_md4 +MD5: gcry_md5 +RFC2268_40: gcry_rfc2268 +AES: gcry_rijndael +AES192: gcry_rijndael +AES256: gcry_rijndael +RIPEMD160: gcry_rmd160 +RSA: gcry_rsa +SEED: gcry_seed +SERPENT128: gcry_serpent +SERPENT192: gcry_serpent +SERPENT256: gcry_serpent +SHA1: gcry_sha1 +SHA224: gcry_sha256 +SHA256: gcry_sha256 +SHA512: gcry_sha512 +SHA384: gcry_sha512 +TIGER192: gcry_tiger +TIGER: gcry_tiger +TIGER2: gcry_tiger +TWOFISH: gcry_twofish +TWOFISH128: gcry_twofish +WHIRLPOOL: gcry_whirlpool diff --git a/rootfs/usb/boot/grub/x86_64-efi/crypto.mod b/rootfs/usb/boot/grub/x86_64-efi/crypto.mod new file mode 100755 index 0000000..663c824 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/crypto.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cryptodisk.mod b/rootfs/usb/boot/grub/x86_64-efi/cryptodisk.mod new file mode 100755 index 0000000..8a351ef Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cryptodisk.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/cs5536.mod b/rootfs/usb/boot/grub/x86_64-efi/cs5536.mod new file mode 100755 index 0000000..05f54db Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/cs5536.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ctz_test.mod b/rootfs/usb/boot/grub/x86_64-efi/ctz_test.mod new file mode 100755 index 0000000..4806997 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ctz_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/date.mod b/rootfs/usb/boot/grub/x86_64-efi/date.mod new file mode 100755 index 0000000..c37e4c5 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/date.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/datehook.mod b/rootfs/usb/boot/grub/x86_64-efi/datehook.mod new file mode 100755 index 0000000..0f69b27 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/datehook.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/datetime.mod b/rootfs/usb/boot/grub/x86_64-efi/datetime.mod new file mode 100755 index 0000000..14fe14f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/datetime.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/disk.mod b/rootfs/usb/boot/grub/x86_64-efi/disk.mod new file mode 100755 index 0000000..eed4f2d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/disk.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/diskfilter.mod b/rootfs/usb/boot/grub/x86_64-efi/diskfilter.mod new file mode 100755 index 0000000..4945cc8 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/diskfilter.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/div.mod b/rootfs/usb/boot/grub/x86_64-efi/div.mod new file mode 100755 index 0000000..7876367 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/div.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/div_test.mod b/rootfs/usb/boot/grub/x86_64-efi/div_test.mod new file mode 100755 index 0000000..24cd597 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/div_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/dm_nv.mod b/rootfs/usb/boot/grub/x86_64-efi/dm_nv.mod new file mode 100755 index 0000000..f3d6854 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/dm_nv.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/echo.mod b/rootfs/usb/boot/grub/x86_64-efi/echo.mod new file mode 100755 index 0000000..a269e30 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/echo.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/efi_gop.mod b/rootfs/usb/boot/grub/x86_64-efi/efi_gop.mod new file mode 100755 index 0000000..5509d26 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/efi_gop.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/efi_uga.mod b/rootfs/usb/boot/grub/x86_64-efi/efi_uga.mod new file mode 100755 index 0000000..55f8d22 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/efi_uga.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/efifwsetup.mod b/rootfs/usb/boot/grub/x86_64-efi/efifwsetup.mod new file mode 100755 index 0000000..c034c64 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/efifwsetup.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/efinet.mod b/rootfs/usb/boot/grub/x86_64-efi/efinet.mod new file mode 100755 index 0000000..41830d4 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/efinet.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ehci.mod b/rootfs/usb/boot/grub/x86_64-efi/ehci.mod new file mode 100755 index 0000000..121335a Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ehci.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/elf.mod b/rootfs/usb/boot/grub/x86_64-efi/elf.mod new file mode 100755 index 0000000..e899c47 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/elf.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/eval.mod b/rootfs/usb/boot/grub/x86_64-efi/eval.mod new file mode 100755 index 0000000..59c05cf Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/eval.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/exfat.mod b/rootfs/usb/boot/grub/x86_64-efi/exfat.mod new file mode 100755 index 0000000..1ff744c Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/exfat.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/exfctest.mod b/rootfs/usb/boot/grub/x86_64-efi/exfctest.mod new file mode 100755 index 0000000..ff59bd0 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/exfctest.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ext2.mod b/rootfs/usb/boot/grub/x86_64-efi/ext2.mod new file mode 100755 index 0000000..74c6cdc Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ext2.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/fat.mod b/rootfs/usb/boot/grub/x86_64-efi/fat.mod new file mode 100755 index 0000000..cf81950 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/fat.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/file.mod b/rootfs/usb/boot/grub/x86_64-efi/file.mod new file mode 100755 index 0000000..9cd5d54 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/file.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/fixvideo.mod b/rootfs/usb/boot/grub/x86_64-efi/fixvideo.mod new file mode 100755 index 0000000..dbeba02 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/fixvideo.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/font.mod b/rootfs/usb/boot/grub/x86_64-efi/font.mod new file mode 100755 index 0000000..307c988 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/font.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/fs.lst b/rootfs/usb/boot/grub/x86_64-efi/fs.lst new file mode 100755 index 0000000..a069ccc --- /dev/null +++ b/rootfs/usb/boot/grub/x86_64-efi/fs.lst @@ -0,0 +1,36 @@ +affs +afs +bfs +btrfs +cbfs +cpio +cpio_be +exfat +ext2 +fat +hfs +hfsplus +iso9660 +jfs +minix +minix2 +minix2_be +minix3 +minix3_be +minix_be +newc +nilfs2 +ntfs +odc +procfs +reiserfs +romfs +sfs +squash4 +tar +udf +ufs1 +ufs1_be +ufs2 +xfs +zfs diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_arcfour.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_arcfour.mod new file mode 100755 index 0000000..44f6ca0 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_arcfour.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_blowfish.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_blowfish.mod new file mode 100755 index 0000000..f2ef820 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_blowfish.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_camellia.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_camellia.mod new file mode 100755 index 0000000..618f52b Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_camellia.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_cast5.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_cast5.mod new file mode 100755 index 0000000..a36adfe Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_cast5.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_crc.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_crc.mod new file mode 100755 index 0000000..9761777 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_crc.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_des.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_des.mod new file mode 100755 index 0000000..36c99d6 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_des.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_dsa.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_dsa.mod new file mode 100755 index 0000000..86e27f2 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_dsa.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_idea.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_idea.mod new file mode 100755 index 0000000..9e344d1 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_idea.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_md4.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_md4.mod new file mode 100755 index 0000000..ba801ad Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_md4.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_md5.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_md5.mod new file mode 100755 index 0000000..3709dc4 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_md5.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_rfc2268.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_rfc2268.mod new file mode 100755 index 0000000..9817025 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_rfc2268.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_rijndael.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_rijndael.mod new file mode 100755 index 0000000..b986011 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_rijndael.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_rmd160.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_rmd160.mod new file mode 100755 index 0000000..bb173da Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_rmd160.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_rsa.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_rsa.mod new file mode 100755 index 0000000..13c700f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_rsa.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_seed.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_seed.mod new file mode 100755 index 0000000..176fb94 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_seed.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_serpent.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_serpent.mod new file mode 100755 index 0000000..132d406 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_serpent.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_sha1.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_sha1.mod new file mode 100755 index 0000000..f3a72a5 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_sha1.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_sha256.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_sha256.mod new file mode 100755 index 0000000..326b1bb Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_sha256.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_sha512.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_sha512.mod new file mode 100755 index 0000000..aa40e15 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_sha512.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_tiger.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_tiger.mod new file mode 100755 index 0000000..3dacb86 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_tiger.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_twofish.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_twofish.mod new file mode 100755 index 0000000..d15c86f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_twofish.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gcry_whirlpool.mod b/rootfs/usb/boot/grub/x86_64-efi/gcry_whirlpool.mod new file mode 100755 index 0000000..b2bdc09 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gcry_whirlpool.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/geli.mod b/rootfs/usb/boot/grub/x86_64-efi/geli.mod new file mode 100755 index 0000000..6762c88 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/geli.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gettext.mod b/rootfs/usb/boot/grub/x86_64-efi/gettext.mod new file mode 100755 index 0000000..d899660 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gettext.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gfxmenu.mod b/rootfs/usb/boot/grub/x86_64-efi/gfxmenu.mod new file mode 100755 index 0000000..6cc6029 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gfxmenu.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gfxterm.mod b/rootfs/usb/boot/grub/x86_64-efi/gfxterm.mod new file mode 100755 index 0000000..5ee8d67 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gfxterm.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gfxterm_background.mod b/rootfs/usb/boot/grub/x86_64-efi/gfxterm_background.mod new file mode 100755 index 0000000..e275f7f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gfxterm_background.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gfxterm_menu.mod b/rootfs/usb/boot/grub/x86_64-efi/gfxterm_menu.mod new file mode 100755 index 0000000..621c435 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gfxterm_menu.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/gptsync.mod b/rootfs/usb/boot/grub/x86_64-efi/gptsync.mod new file mode 100755 index 0000000..ac2c9dc Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gptsync.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/grub.cfg b/rootfs/usb/boot/grub/x86_64-efi/grub.cfg new file mode 100755 index 0000000..1f498ce --- /dev/null +++ b/rootfs/usb/boot/grub/x86_64-efi/grub.cfg @@ -0,0 +1,12 @@ +insmod part_acorn +insmod part_amiga +insmod part_apple +insmod part_bsd +insmod part_dfly +insmod part_dvh +insmod part_gpt +insmod part_msdos +insmod part_plan +insmod part_sun +insmod part_sunpc +configfile /boot/grub/grub.cfg diff --git a/rootfs/usb/boot/grub/x86_64-efi/gzio.mod b/rootfs/usb/boot/grub/x86_64-efi/gzio.mod new file mode 100755 index 0000000..fe876da Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/gzio.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/halt.mod b/rootfs/usb/boot/grub/x86_64-efi/halt.mod new file mode 100755 index 0000000..916c9ba Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/halt.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/hashsum.mod b/rootfs/usb/boot/grub/x86_64-efi/hashsum.mod new file mode 100755 index 0000000..28c9348 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/hashsum.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/hdparm.mod b/rootfs/usb/boot/grub/x86_64-efi/hdparm.mod new file mode 100755 index 0000000..a47c9f5 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/hdparm.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/help.mod b/rootfs/usb/boot/grub/x86_64-efi/help.mod new file mode 100755 index 0000000..8885eac Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/help.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/hexdump.mod b/rootfs/usb/boot/grub/x86_64-efi/hexdump.mod new file mode 100755 index 0000000..103342c Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/hexdump.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/hfs.mod b/rootfs/usb/boot/grub/x86_64-efi/hfs.mod new file mode 100755 index 0000000..fb1c2f0 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/hfs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/hfsplus.mod b/rootfs/usb/boot/grub/x86_64-efi/hfsplus.mod new file mode 100755 index 0000000..e49db4b Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/hfsplus.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/hfspluscomp.mod b/rootfs/usb/boot/grub/x86_64-efi/hfspluscomp.mod new file mode 100755 index 0000000..ea4ecde Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/hfspluscomp.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/http.mod b/rootfs/usb/boot/grub/x86_64-efi/http.mod new file mode 100755 index 0000000..7ceb16a Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/http.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/iorw.mod b/rootfs/usb/boot/grub/x86_64-efi/iorw.mod new file mode 100755 index 0000000..03fa816 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/iorw.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/jfs.mod b/rootfs/usb/boot/grub/x86_64-efi/jfs.mod new file mode 100755 index 0000000..750913b Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/jfs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/jpeg.mod b/rootfs/usb/boot/grub/x86_64-efi/jpeg.mod new file mode 100755 index 0000000..884a28d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/jpeg.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/keylayouts.mod b/rootfs/usb/boot/grub/x86_64-efi/keylayouts.mod new file mode 100755 index 0000000..fb5c5f7 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/keylayouts.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/keystatus.mod b/rootfs/usb/boot/grub/x86_64-efi/keystatus.mod new file mode 100755 index 0000000..c3277df Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/keystatus.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ldm.mod b/rootfs/usb/boot/grub/x86_64-efi/ldm.mod new file mode 100755 index 0000000..901dd2c Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ldm.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/legacy_password_test.mod b/rootfs/usb/boot/grub/x86_64-efi/legacy_password_test.mod new file mode 100755 index 0000000..eb8ad7a Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/legacy_password_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/legacycfg.mod b/rootfs/usb/boot/grub/x86_64-efi/legacycfg.mod new file mode 100755 index 0000000..047f2d5 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/legacycfg.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/linux.mod b/rootfs/usb/boot/grub/x86_64-efi/linux.mod new file mode 100755 index 0000000..54b79d4 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/linux.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/linux16.mod b/rootfs/usb/boot/grub/x86_64-efi/linux16.mod new file mode 100755 index 0000000..1729b44 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/linux16.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/linuxefi.mod b/rootfs/usb/boot/grub/x86_64-efi/linuxefi.mod new file mode 100755 index 0000000..795d69f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/linuxefi.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/loadbios.mod b/rootfs/usb/boot/grub/x86_64-efi/loadbios.mod new file mode 100755 index 0000000..cc8684d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/loadbios.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/loadenv.mod b/rootfs/usb/boot/grub/x86_64-efi/loadenv.mod new file mode 100755 index 0000000..58b517a Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/loadenv.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/loopback.mod b/rootfs/usb/boot/grub/x86_64-efi/loopback.mod new file mode 100755 index 0000000..9a81553 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/loopback.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ls.mod b/rootfs/usb/boot/grub/x86_64-efi/ls.mod new file mode 100755 index 0000000..cd6c691 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ls.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/lsacpi.mod b/rootfs/usb/boot/grub/x86_64-efi/lsacpi.mod new file mode 100755 index 0000000..347d3c7 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/lsacpi.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/lsefi.mod b/rootfs/usb/boot/grub/x86_64-efi/lsefi.mod new file mode 100755 index 0000000..dc75396 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/lsefi.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/lsefimmap.mod b/rootfs/usb/boot/grub/x86_64-efi/lsefimmap.mod new file mode 100755 index 0000000..52796db Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/lsefimmap.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/lsefisystab.mod b/rootfs/usb/boot/grub/x86_64-efi/lsefisystab.mod new file mode 100755 index 0000000..ebe26de Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/lsefisystab.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/lsmmap.mod b/rootfs/usb/boot/grub/x86_64-efi/lsmmap.mod new file mode 100755 index 0000000..4d78f6e Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/lsmmap.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/lspci.mod b/rootfs/usb/boot/grub/x86_64-efi/lspci.mod new file mode 100755 index 0000000..7c890e6 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/lspci.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/lssal.mod b/rootfs/usb/boot/grub/x86_64-efi/lssal.mod new file mode 100755 index 0000000..3e8e131 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/lssal.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/luks.mod b/rootfs/usb/boot/grub/x86_64-efi/luks.mod new file mode 100755 index 0000000..aa259b8 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/luks.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/lvm.mod b/rootfs/usb/boot/grub/x86_64-efi/lvm.mod new file mode 100755 index 0000000..509ab11 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/lvm.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/lzopio.mod b/rootfs/usb/boot/grub/x86_64-efi/lzopio.mod new file mode 100755 index 0000000..b8cdb82 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/lzopio.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/macbless.mod b/rootfs/usb/boot/grub/x86_64-efi/macbless.mod new file mode 100755 index 0000000..08414f5 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/macbless.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/macho.mod b/rootfs/usb/boot/grub/x86_64-efi/macho.mod new file mode 100755 index 0000000..9436050 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/macho.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/mdraid09.mod b/rootfs/usb/boot/grub/x86_64-efi/mdraid09.mod new file mode 100755 index 0000000..ddd837e Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/mdraid09.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/mdraid09_be.mod b/rootfs/usb/boot/grub/x86_64-efi/mdraid09_be.mod new file mode 100755 index 0000000..bb178e9 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/mdraid09_be.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/mdraid1x.mod b/rootfs/usb/boot/grub/x86_64-efi/mdraid1x.mod new file mode 100755 index 0000000..d1464ee Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/mdraid1x.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/memrw.mod b/rootfs/usb/boot/grub/x86_64-efi/memrw.mod new file mode 100755 index 0000000..30fe8e3 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/memrw.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/minicmd.mod b/rootfs/usb/boot/grub/x86_64-efi/minicmd.mod new file mode 100755 index 0000000..14dc4dd Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/minicmd.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/minix2.mod b/rootfs/usb/boot/grub/x86_64-efi/minix2.mod new file mode 100755 index 0000000..22a2953 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/minix2.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/minix2_be.mod b/rootfs/usb/boot/grub/x86_64-efi/minix2_be.mod new file mode 100755 index 0000000..d27f9bd Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/minix2_be.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/minix3.mod b/rootfs/usb/boot/grub/x86_64-efi/minix3.mod new file mode 100755 index 0000000..4bd937f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/minix3.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/minix3_be.mod b/rootfs/usb/boot/grub/x86_64-efi/minix3_be.mod new file mode 100755 index 0000000..1d48e2e Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/minix3_be.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/minix_be.mod b/rootfs/usb/boot/grub/x86_64-efi/minix_be.mod new file mode 100755 index 0000000..7b6ecd6 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/minix_be.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/mmap.mod b/rootfs/usb/boot/grub/x86_64-efi/mmap.mod new file mode 100755 index 0000000..aa7cad4 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/mmap.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/moddep.lst b/rootfs/usb/boot/grub/x86_64-efi/moddep.lst new file mode 100755 index 0000000..093b1a6 --- /dev/null +++ b/rootfs/usb/boot/grub/x86_64-efi/moddep.lst @@ -0,0 +1,257 @@ +squash4: xzio gzio lzopio fshelp +search_fs_uuid: +lssal: +legacycfg: gcry_md5 crypto password normal +date: datetime normal +bfs: fshelp +uhci: usb +multiboot2: boot video net acpi relocator mmap +gcry_twofish: crypto +cpio_be: archelp +priority_queue: +gcry_rijndael: crypto +echo: extcmd +cpio: archelp +xzio: crypto +part_sun: +hfspluscomp: gzio hfsplus +gcry_sha512: crypto +gcry_cast5: crypto +efi_gop: video video_fb +ctz_test: functional_test +boot: +setjmp_test: setjmp functional_test +odc: archelp +ls: extcmd normal +gzio: +cbmemc: cbtable terminfo normal +video: +test_blockarg: extcmd normal +linuxefi: boot +gfxterm: video font +cbtable: +mul_test: functional_test +gcry_tiger: crypto +gcry_serpent: crypto +aout: +macbless: disk +gcry_blowfish: crypto +appleldr: boot +trig: +extcmd: +at_keyboard: boot keylayouts +videoinfo: video +testspeed: extcmd normal +minix: +keylayouts: +xnu_uuid: gcry_md5 +usbtest: usb +usbms: usb scsi +reboot: +morse: +help: extcmd normal +part_msdos: +http: net +gcry_rsa: mpi verify +cbtime: cbtable +blocklist: +probe: extcmd +pbkdf2: crypto +lsefisystab: +gcry_rfc2268: crypto +ufs1_be: +nativedisk: +gcry_camellia: crypto +fat: fshelp +exfctest: functional_test +parttool: normal +lzopio: crypto +linux: boot video relocator mmap +gcry_md4: crypto +zfsinfo: zfs +usb_keyboard: keylayouts usb +gcry_md5: crypto +fshelp: +ehci: boot usb cs5536 +datetime: +bitmap_scale: bitmap +ata: scsi +usbserial_common: usb serial +syslinuxcfg: extcmd normal +net: priority_queue boot datetime bufio +gcry_des: crypto +div_test: div functional_test +time: +reiserfs: fshelp +dm_nv: diskfilter +datehook: datetime normal +mdraid09_be: diskfilter +cmp_test: functional_test +backtrace: +ahci: boot ata +kernel: +video_cirrus: video video_fb +part_plan: +gcry_seed: crypto +minix_be: +crypto: +video_colors: +test: +terminal: +part_dvh: +lsacpi: extcmd acpi +jpeg: bufio bitmap +bsd: boot video aout extcmd gcry_md5 crypto cpuid elf relocator serial mmap +memdisk: +gfxmenu: video gfxterm trig bitmap_scale video_colors bitmap normal font +cmp: +acpi: extcmd mmap +xfs: fshelp +elf: +div: +cpuid: extcmd +affs: fshelp +usb: +videotest: video gfxmenu font +tr: extcmd +testload: +relocator: mmap +play: +gfxterm_menu: video_fb functional_test procfs normal font +cbfs: archelp +adler32: crypto +progress: normal +password: crypto normal +part_sunpc: +video_fb: +tftp: priority_queue net +sleep: extcmd normal +serial: extcmd terminfo +search_fs_file: +gcry_sha256: crypto +gcry_rmd160: crypto +exfat: fshelp +search: search_fs_uuid extcmd search_fs_file search_label +mdraid09: diskfilter +chain: boot net efinet +mpi: crypto +memrw: extcmd +cs5536: +password_pbkdf2: gcry_sha512 pbkdf2 crypto normal +mdraid1x: diskfilter +linux16: boot video relocator mmap +gcry_crc: crypto +configfile: normal +zfscrypt: gcry_rijndael extcmd pbkdf2 crypto zfs gcry_sha1 +signature_test: functional_test procfs +raid5rec: diskfilter +pcidump: extcmd +gcry_arcfour: crypto +part_dfly: +minix2_be: +gettext: +pbkdf2_test: pbkdf2 gcry_sha1 functional_test +hello: extcmd +usbserial_pl2303: usbserial_common usb serial +hashsum: extcmd crypto normal +xnu_uuid_test: functional_test +regexp: extcmd normal +part_gpt: +ohci: boot usb cs5536 +gptsync: disk +zfs: gzio +part_apple: +hdparm: extcmd +bufio: +btrfs: gzio lzopio +bitmap: +true: +terminfo: extcmd +romfs: fshelp +ntfscomp: ntfs +lsefi: +hfs: fshelp +gcry_dsa: mpi verify +cmdline_cat_test: video_fb functional_test procfs normal font +ufs1: +offsetio: +legacy_password_test: legacycfg functional_test +setjmp: +ufs2: +nilfs2: fshelp +lsmmap: mmap +gcry_sha1: crypto +mmap: +tar: archelp +png: bufio bitmap +lspci: extcmd +hfsplus: fshelp +cbls: cbtable +tga: bufio bitmap +random: hexdump +minix2: +setpci: extcmd +scsi: +pata: ata +minix3: +lvm: diskfilter +functional_test: video extcmd video_fb btrfs +eval: normal +iso9660: fshelp +crc64: crypto +udf: fshelp +search_label: +raid6rec: diskfilter +msdospart: parttool disk +archelp: +procfs: archelp +minix3_be: +halt: acpi +xnu: boot video extcmd bitmap_scale relocator bitmap mmap random macho +read: +multiboot: boot video net relocator mmap +keystatus: extcmd +cryptodisk: extcmd crypto procfs +shift_test: functional_test +normal: boot extcmd crypto terminal gettext bufio +lsefimmap: +loadbios: +geli: gcry_sha512 pbkdf2 crypto gcry_sha256 cryptodisk +spkmodem: terminfo +gcry_idea: crypto +bswap_test: functional_test +video_bochs: video video_fb +verify: extcmd crypto mpi gcry_sha1 +sfs: fshelp +part_amiga: +luks: pbkdf2 crypto cryptodisk +loopback: extcmd +jfs: +gfxterm_background: gfxterm video extcmd bitmap_scale video_colors bitmap +efifwsetup: reboot +usbserial_usbdebug: usbserial_common usb serial +part_acorn: +newc: archelp +macho: +iorw: extcmd +cat: extcmd +afs: fshelp +sleep_test: datetime functional_test +ldm: part_msdos part_gpt diskfilter +hexdump: extcmd +efinet: net +disk: +usbserial_ftdi: usbserial_common usb serial +minicmd: +loadenv: extcmd disk +gcry_whirlpool: crypto +fixvideo: +part_bsd: part_msdos +font: video bufio +ext2: fshelp +diskfilter: +videotest_checksum: video_fb functional_test font +file: extcmd elf offsetio macho +ntfs: fshelp +efi_uga: video video_fb +all_video: efi_gop efi_uga video_bochs video_cirrus diff --git a/rootfs/usb/boot/grub/x86_64-efi/morse.mod b/rootfs/usb/boot/grub/x86_64-efi/morse.mod new file mode 100755 index 0000000..fb2d81e Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/morse.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/mpi.mod b/rootfs/usb/boot/grub/x86_64-efi/mpi.mod new file mode 100755 index 0000000..01c05f7 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/mpi.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/msdospart.mod b/rootfs/usb/boot/grub/x86_64-efi/msdospart.mod new file mode 100755 index 0000000..34e4925 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/msdospart.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/mul_test.mod b/rootfs/usb/boot/grub/x86_64-efi/mul_test.mod new file mode 100755 index 0000000..c110ab0 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/mul_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/multiboot.mod b/rootfs/usb/boot/grub/x86_64-efi/multiboot.mod new file mode 100755 index 0000000..6728f82 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/multiboot.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/multiboot2.mod b/rootfs/usb/boot/grub/x86_64-efi/multiboot2.mod new file mode 100755 index 0000000..0cab609 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/multiboot2.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/nativedisk.mod b/rootfs/usb/boot/grub/x86_64-efi/nativedisk.mod new file mode 100755 index 0000000..44dc31e Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/nativedisk.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/net.mod b/rootfs/usb/boot/grub/x86_64-efi/net.mod new file mode 100755 index 0000000..afdefce Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/net.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/newc.mod b/rootfs/usb/boot/grub/x86_64-efi/newc.mod new file mode 100755 index 0000000..592f687 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/newc.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ntfs.mod b/rootfs/usb/boot/grub/x86_64-efi/ntfs.mod new file mode 100755 index 0000000..a3fa4c6 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ntfs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ntfscomp.mod b/rootfs/usb/boot/grub/x86_64-efi/ntfscomp.mod new file mode 100755 index 0000000..877bf8b Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ntfscomp.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/odc.mod b/rootfs/usb/boot/grub/x86_64-efi/odc.mod new file mode 100755 index 0000000..d842cc2 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/odc.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/offsetio.mod b/rootfs/usb/boot/grub/x86_64-efi/offsetio.mod new file mode 100755 index 0000000..338e33e Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/offsetio.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ohci.mod b/rootfs/usb/boot/grub/x86_64-efi/ohci.mod new file mode 100755 index 0000000..3ca9738 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ohci.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_acorn.mod b/rootfs/usb/boot/grub/x86_64-efi/part_acorn.mod new file mode 100755 index 0000000..86728e6 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_acorn.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_amiga.mod b/rootfs/usb/boot/grub/x86_64-efi/part_amiga.mod new file mode 100755 index 0000000..33e5830 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_amiga.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_apple.mod b/rootfs/usb/boot/grub/x86_64-efi/part_apple.mod new file mode 100755 index 0000000..768ae83 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_apple.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_bsd.mod b/rootfs/usb/boot/grub/x86_64-efi/part_bsd.mod new file mode 100755 index 0000000..9db236c Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_bsd.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_dfly.mod b/rootfs/usb/boot/grub/x86_64-efi/part_dfly.mod new file mode 100755 index 0000000..9be813c Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_dfly.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_dvh.mod b/rootfs/usb/boot/grub/x86_64-efi/part_dvh.mod new file mode 100755 index 0000000..5e3717b Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_dvh.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_gpt.mod b/rootfs/usb/boot/grub/x86_64-efi/part_gpt.mod new file mode 100755 index 0000000..c310512 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_gpt.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_msdos.mod b/rootfs/usb/boot/grub/x86_64-efi/part_msdos.mod new file mode 100755 index 0000000..7751112 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_msdos.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_plan.mod b/rootfs/usb/boot/grub/x86_64-efi/part_plan.mod new file mode 100755 index 0000000..40d3d96 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_plan.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_sun.mod b/rootfs/usb/boot/grub/x86_64-efi/part_sun.mod new file mode 100755 index 0000000..769cb42 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_sun.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/part_sunpc.mod b/rootfs/usb/boot/grub/x86_64-efi/part_sunpc.mod new file mode 100755 index 0000000..5355b7f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/part_sunpc.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/partmap.lst b/rootfs/usb/boot/grub/x86_64-efi/partmap.lst new file mode 100755 index 0000000..761233a --- /dev/null +++ b/rootfs/usb/boot/grub/x86_64-efi/partmap.lst @@ -0,0 +1,11 @@ +part_acorn +part_amiga +part_apple +part_bsd +part_dfly +part_dvh +part_gpt +part_msdos +part_plan +part_sun +part_sunpc diff --git a/rootfs/usb/boot/grub/x86_64-efi/parttool.lst b/rootfs/usb/boot/grub/x86_64-efi/parttool.lst new file mode 100755 index 0000000..68b4b5c --- /dev/null +++ b/rootfs/usb/boot/grub/x86_64-efi/parttool.lst @@ -0,0 +1 @@ +msdos: msdospart diff --git a/rootfs/usb/boot/grub/x86_64-efi/parttool.mod b/rootfs/usb/boot/grub/x86_64-efi/parttool.mod new file mode 100755 index 0000000..4fc5de4 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/parttool.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/password.mod b/rootfs/usb/boot/grub/x86_64-efi/password.mod new file mode 100755 index 0000000..9a1b890 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/password.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/password_pbkdf2.mod b/rootfs/usb/boot/grub/x86_64-efi/password_pbkdf2.mod new file mode 100755 index 0000000..61b6357 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/password_pbkdf2.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/pata.mod b/rootfs/usb/boot/grub/x86_64-efi/pata.mod new file mode 100755 index 0000000..37a8f3f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/pata.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/pbkdf2.mod b/rootfs/usb/boot/grub/x86_64-efi/pbkdf2.mod new file mode 100755 index 0000000..e869b6a Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/pbkdf2.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/pbkdf2_test.mod b/rootfs/usb/boot/grub/x86_64-efi/pbkdf2_test.mod new file mode 100755 index 0000000..9f120dc Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/pbkdf2_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/pcidump.mod b/rootfs/usb/boot/grub/x86_64-efi/pcidump.mod new file mode 100755 index 0000000..5ac1412 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/pcidump.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/play.mod b/rootfs/usb/boot/grub/x86_64-efi/play.mod new file mode 100755 index 0000000..2c1e523 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/play.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/png.mod b/rootfs/usb/boot/grub/x86_64-efi/png.mod new file mode 100755 index 0000000..1da4f6d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/png.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/priority_queue.mod b/rootfs/usb/boot/grub/x86_64-efi/priority_queue.mod new file mode 100755 index 0000000..3b81d33 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/priority_queue.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/probe.mod b/rootfs/usb/boot/grub/x86_64-efi/probe.mod new file mode 100755 index 0000000..c0aad07 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/probe.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/procfs.mod b/rootfs/usb/boot/grub/x86_64-efi/procfs.mod new file mode 100755 index 0000000..ce1865d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/procfs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/progress.mod b/rootfs/usb/boot/grub/x86_64-efi/progress.mod new file mode 100755 index 0000000..a64f20b Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/progress.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/raid5rec.mod b/rootfs/usb/boot/grub/x86_64-efi/raid5rec.mod new file mode 100755 index 0000000..dba4408 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/raid5rec.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/raid6rec.mod b/rootfs/usb/boot/grub/x86_64-efi/raid6rec.mod new file mode 100755 index 0000000..711ae62 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/raid6rec.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/random.mod b/rootfs/usb/boot/grub/x86_64-efi/random.mod new file mode 100755 index 0000000..61b9e89 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/random.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/read.mod b/rootfs/usb/boot/grub/x86_64-efi/read.mod new file mode 100755 index 0000000..c55b43d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/read.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/reboot.mod b/rootfs/usb/boot/grub/x86_64-efi/reboot.mod new file mode 100755 index 0000000..c1fe0e6 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/reboot.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/regexp.mod b/rootfs/usb/boot/grub/x86_64-efi/regexp.mod new file mode 100755 index 0000000..b2f61f2 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/regexp.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/reiserfs.mod b/rootfs/usb/boot/grub/x86_64-efi/reiserfs.mod new file mode 100755 index 0000000..e266a7a Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/reiserfs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/relocator.mod b/rootfs/usb/boot/grub/x86_64-efi/relocator.mod new file mode 100755 index 0000000..5d7a350 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/relocator.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/romfs.mod b/rootfs/usb/boot/grub/x86_64-efi/romfs.mod new file mode 100755 index 0000000..936cdc4 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/romfs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/scsi.mod b/rootfs/usb/boot/grub/x86_64-efi/scsi.mod new file mode 100755 index 0000000..5c6de13 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/scsi.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/serial.mod b/rootfs/usb/boot/grub/x86_64-efi/serial.mod new file mode 100755 index 0000000..259ad61 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/serial.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/setjmp.mod b/rootfs/usb/boot/grub/x86_64-efi/setjmp.mod new file mode 100755 index 0000000..a0b4e57 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/setjmp.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/setjmp_test.mod b/rootfs/usb/boot/grub/x86_64-efi/setjmp_test.mod new file mode 100755 index 0000000..d68d55d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/setjmp_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/setpci.mod b/rootfs/usb/boot/grub/x86_64-efi/setpci.mod new file mode 100755 index 0000000..01bf189 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/setpci.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/shift_test.mod b/rootfs/usb/boot/grub/x86_64-efi/shift_test.mod new file mode 100755 index 0000000..e9ffd08 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/shift_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/signature_test.mod b/rootfs/usb/boot/grub/x86_64-efi/signature_test.mod new file mode 100755 index 0000000..a60fbf6 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/signature_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/sleep.mod b/rootfs/usb/boot/grub/x86_64-efi/sleep.mod new file mode 100755 index 0000000..18fd278 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/sleep.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/sleep_test.mod b/rootfs/usb/boot/grub/x86_64-efi/sleep_test.mod new file mode 100755 index 0000000..5ba82db Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/sleep_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/spkmodem.mod b/rootfs/usb/boot/grub/x86_64-efi/spkmodem.mod new file mode 100755 index 0000000..f856a41 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/spkmodem.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/squash4.mod b/rootfs/usb/boot/grub/x86_64-efi/squash4.mod new file mode 100755 index 0000000..c8bde21 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/squash4.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/syslinuxcfg.mod b/rootfs/usb/boot/grub/x86_64-efi/syslinuxcfg.mod new file mode 100755 index 0000000..d23f673 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/syslinuxcfg.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/terminal.lst b/rootfs/usb/boot/grub/x86_64-efi/terminal.lst new file mode 100755 index 0000000..3c9a5a3 --- /dev/null +++ b/rootfs/usb/boot/grub/x86_64-efi/terminal.lst @@ -0,0 +1,9 @@ +iat_keyboard: at_keyboard +iserial: serial +iserial_*: serial +oaudio: morse +ocbmemc: cbmemc +ogfxterm: gfxterm +oserial: serial +oserial_*: serial +ospkmodem: spkmodem diff --git a/rootfs/usb/boot/grub/x86_64-efi/terminal.mod b/rootfs/usb/boot/grub/x86_64-efi/terminal.mod new file mode 100755 index 0000000..7f4de6f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/terminal.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/terminfo.mod b/rootfs/usb/boot/grub/x86_64-efi/terminfo.mod new file mode 100755 index 0000000..e3e71a7 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/terminfo.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/test.mod b/rootfs/usb/boot/grub/x86_64-efi/test.mod new file mode 100755 index 0000000..7add04f Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/test_blockarg.mod b/rootfs/usb/boot/grub/x86_64-efi/test_blockarg.mod new file mode 100755 index 0000000..0eb1e3e Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/test_blockarg.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/testload.mod b/rootfs/usb/boot/grub/x86_64-efi/testload.mod new file mode 100755 index 0000000..ec90e09 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/testload.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/testspeed.mod b/rootfs/usb/boot/grub/x86_64-efi/testspeed.mod new file mode 100755 index 0000000..e0b44f0 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/testspeed.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/tftp.mod b/rootfs/usb/boot/grub/x86_64-efi/tftp.mod new file mode 100755 index 0000000..d63c608 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/tftp.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/tga.mod b/rootfs/usb/boot/grub/x86_64-efi/tga.mod new file mode 100755 index 0000000..be0bbc6 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/tga.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/time.mod b/rootfs/usb/boot/grub/x86_64-efi/time.mod new file mode 100755 index 0000000..6405047 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/time.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/tr.mod b/rootfs/usb/boot/grub/x86_64-efi/tr.mod new file mode 100755 index 0000000..fb511d0 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/tr.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/trig.mod b/rootfs/usb/boot/grub/x86_64-efi/trig.mod new file mode 100755 index 0000000..3b8a51c Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/trig.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/true.mod b/rootfs/usb/boot/grub/x86_64-efi/true.mod new file mode 100755 index 0000000..253c5e2 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/true.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/udf.mod b/rootfs/usb/boot/grub/x86_64-efi/udf.mod new file mode 100755 index 0000000..e8d9619 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/udf.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ufs1.mod b/rootfs/usb/boot/grub/x86_64-efi/ufs1.mod new file mode 100755 index 0000000..ae9747a Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ufs1.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ufs1_be.mod b/rootfs/usb/boot/grub/x86_64-efi/ufs1_be.mod new file mode 100755 index 0000000..b3acc19 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ufs1_be.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/ufs2.mod b/rootfs/usb/boot/grub/x86_64-efi/ufs2.mod new file mode 100755 index 0000000..e3e6436 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/ufs2.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/uhci.mod b/rootfs/usb/boot/grub/x86_64-efi/uhci.mod new file mode 100755 index 0000000..30b3028 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/uhci.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/usb.mod b/rootfs/usb/boot/grub/x86_64-efi/usb.mod new file mode 100755 index 0000000..377497d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/usb.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/usb_keyboard.mod b/rootfs/usb/boot/grub/x86_64-efi/usb_keyboard.mod new file mode 100755 index 0000000..3338013 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/usb_keyboard.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/usbms.mod b/rootfs/usb/boot/grub/x86_64-efi/usbms.mod new file mode 100755 index 0000000..8287fef Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/usbms.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/usbserial_common.mod b/rootfs/usb/boot/grub/x86_64-efi/usbserial_common.mod new file mode 100755 index 0000000..83203c2 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/usbserial_common.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/usbserial_ftdi.mod b/rootfs/usb/boot/grub/x86_64-efi/usbserial_ftdi.mod new file mode 100755 index 0000000..2fc43b1 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/usbserial_ftdi.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/usbserial_pl2303.mod b/rootfs/usb/boot/grub/x86_64-efi/usbserial_pl2303.mod new file mode 100755 index 0000000..a4aa4d2 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/usbserial_pl2303.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/usbserial_usbdebug.mod b/rootfs/usb/boot/grub/x86_64-efi/usbserial_usbdebug.mod new file mode 100755 index 0000000..9ef4513 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/usbserial_usbdebug.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/usbtest.mod b/rootfs/usb/boot/grub/x86_64-efi/usbtest.mod new file mode 100755 index 0000000..5fb6b55 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/usbtest.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/verify.mod b/rootfs/usb/boot/grub/x86_64-efi/verify.mod new file mode 100755 index 0000000..e8a94ec Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/verify.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/video.lst b/rootfs/usb/boot/grub/x86_64-efi/video.lst new file mode 100755 index 0000000..ae9ba23 --- /dev/null +++ b/rootfs/usb/boot/grub/x86_64-efi/video.lst @@ -0,0 +1,4 @@ +efi_gop +efi_uga +video_bochs +video_cirrus diff --git a/rootfs/usb/boot/grub/x86_64-efi/video.mod b/rootfs/usb/boot/grub/x86_64-efi/video.mod new file mode 100755 index 0000000..64efcba Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/video.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/video_bochs.mod b/rootfs/usb/boot/grub/x86_64-efi/video_bochs.mod new file mode 100755 index 0000000..f9b477b Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/video_bochs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/video_cirrus.mod b/rootfs/usb/boot/grub/x86_64-efi/video_cirrus.mod new file mode 100755 index 0000000..2388562 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/video_cirrus.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/video_colors.mod b/rootfs/usb/boot/grub/x86_64-efi/video_colors.mod new file mode 100755 index 0000000..efe09cc Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/video_colors.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/video_fb.mod b/rootfs/usb/boot/grub/x86_64-efi/video_fb.mod new file mode 100755 index 0000000..1afccc5 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/video_fb.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/videoinfo.mod b/rootfs/usb/boot/grub/x86_64-efi/videoinfo.mod new file mode 100755 index 0000000..308a252 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/videoinfo.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/videotest.mod b/rootfs/usb/boot/grub/x86_64-efi/videotest.mod new file mode 100755 index 0000000..e3ee09d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/videotest.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/videotest_checksum.mod b/rootfs/usb/boot/grub/x86_64-efi/videotest_checksum.mod new file mode 100755 index 0000000..b4382b6 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/videotest_checksum.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/xfs.mod b/rootfs/usb/boot/grub/x86_64-efi/xfs.mod new file mode 100755 index 0000000..259c9c3 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/xfs.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/xnu.mod b/rootfs/usb/boot/grub/x86_64-efi/xnu.mod new file mode 100755 index 0000000..339bd8d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/xnu.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/xnu_uuid.mod b/rootfs/usb/boot/grub/x86_64-efi/xnu_uuid.mod new file mode 100755 index 0000000..5ad6dc4 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/xnu_uuid.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/xnu_uuid_test.mod b/rootfs/usb/boot/grub/x86_64-efi/xnu_uuid_test.mod new file mode 100755 index 0000000..207c524 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/xnu_uuid_test.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/xzio.mod b/rootfs/usb/boot/grub/x86_64-efi/xzio.mod new file mode 100755 index 0000000..fef83d5 Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/xzio.mod differ diff --git a/rootfs/usb/boot/grub/x86_64-efi/zfscrypt.mod b/rootfs/usb/boot/grub/x86_64-efi/zfscrypt.mod new file mode 100755 index 0000000..25aff7d Binary files /dev/null and b/rootfs/usb/boot/grub/x86_64-efi/zfscrypt.mod differ diff --git a/rootfs/usb/prepare_usb.sh b/rootfs/usb/prepare_usb.sh new file mode 100755 index 0000000..7e1a0b9 --- /dev/null +++ b/rootfs/usb/prepare_usb.sh @@ -0,0 +1,123 @@ +#!/bin/sh + +abort() +{ + echo "Error: $1" + exit -1 +} + +usage() +{ + echo "Usage: $0 [OPTIONS]" + echo "" + echo "Where OPTIONS are:" + echo " -d Set the disk device (/dev/sdc for instance)" + echo " -f Format and label partitions" + echo " -g Install GRUB" + echo " -h Display this help" + echo " -k Set the kernel image file path" + echo " -r Copy rootfs" + exit 1 +} + +while getopts "d:fghk:r" o; do + case "$o" in + d) + dev_disk=$OPTARG + ;; + f) + format_partitions=y + ;; + g) + install_grub=y + ;; + h) + usage + ;; + k) + kernel_image_path=$OPTARG + ;; + r) + copy_rootfs=y + ;; + *) + usage + ;; + esac +done +shift $((OPTIND-1)) + +# Check arguments +if [ -z "$dev_disk" ]; then + echo "Error: Please specify partition block device (-d)" + usage +fi + +# if [ -z "$kernel_image_path" ]; then +# echo "Error: Please specify kernel image file path (-k)" +# usage +# fi + +# ARGS +dev_partition=${dev_disk}1 +script_dir="$(cd "$(dirname "$0")" && pwd)" +usb_partition_root_dir=$script_dir/usb-partition +opencn_dir=$usb_partition_root_dir/boot +usb_partition_boot_dir=$usb_partition_root_dir/boot +rootfs_cpio_file=$script_dir/../images/rootfs.cpio + +if [ -n "$format_partitions" ]; then + echo "Erasing partitions on $dev_disk" + sudo dd if=/dev/zero of=$dev_disk count=10k conv=notrunc || abort "Failed to erase $dev_disk" + + echo "Creating rootfs partition: $dev_partition" + sudo parted -s $dev_disk mklabel msdos mkpart primary ext4 1MiB 100% + sleep 2 + sudo mke2fs -F -t ext4 $dev_partition + sudo e2label $dev_partition rootfs +fi + +echo "Creating $usb_partition_root_dir" +mkdir -p $usb_partition_root_dir || abort "Failed to create dir $usb_partition_root_dir" + +echo "Mounting boot partition: $dev_partition" +sudo mount $dev_partition $usb_partition_root_dir || abort "Failed to mount $dev_partition" + +echo "Creating $opencn_dir" +sudo mkdir -p $opencn_dir || abort "failed to create $opencn_dir" + +if [ -n "$kernel_image_path" ]; then + echo "Copying $kernel_image_path" + sudo cp $kernel_image_path $opencn_dir/. || abort "Failed to copy kernel image $kernel_image_path" +fi + + +if [ -n "$install_grub" ]; then + echo "Installing grub on $dev_disk" + sudo grub-install --target=i386-pc --boot-directory=$usb_partition_boot_dir $dev_disk --directory=$script_dir/boot/grub/i386-pc/ || abort "Failed to install grub in $dev_disk" + sudo cp $script_dir/boot/grub/grub.cfg $usb_partition_root_dir/boot/grub || abort "Failed to copy $script_dir/boot/grub/grub.cfg" +fi + +echo "Unmounting $usb_partition_root_dir" +sync +sudo umount $usb_partition_root_dir || abort "Failed to umount $usb_partition_root_dir" +rmdir $usb_partition_root_dir + +if [ -n "$copy_rootfs" ]; then + echo "Creating $usb_partition_root_dir" + mkdir -p $usb_partition_root_dir || abort "Failed to create dir $usb_partition_root_dir" + + echo "Mounting rootfs partition: $dev_partition" + sudo mount $dev_partition $usb_partition_root_dir || abort "Failed to mount $dev_partition" + + echo "Extraction rootfs: $rootfs_cpio_file" + sudo cpio -i -D $usb_partition_root_dir < $rootfs_cpio_file || abort "Failed to extract $rootfs_cpio_file" + + echo "Unmounting $usb_rootfs_partition_root_dir" + sync + sudo umount $usb_partition_root_dir || abort "Failed to umount $usb_partition_root_dir" + rmdir $usb_partition_root_dir + +fi + +echo "Success!"